summaryrefslogtreecommitdiffstats
path: root/public
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'public')
-rw-r--r--public/oak/bin/_default.pifbin0 -> 707 bytes
-rw-r--r--public/oak/bin/alphamk.inc245
-rw-r--r--public/oak/bin/cairo.ini11
-rw-r--r--public/oak/bin/cpipgaux.cmd57
-rw-r--r--public/oak/bin/defaultbin0 -> 69632 bytes
-rw-r--r--public/oak/bin/default.ini1765
-rw-r--r--public/oak/bin/default.log753
-rw-r--r--public/oak/bin/desktop.ini2
-rw-r--r--public/oak/bin/dirs.tpl47
-rw-r--r--public/oak/bin/ds.mk22
-rw-r--r--public/oak/bin/dsys.ini686
-rw-r--r--public/oak/bin/i386mk.inc300
-rw-r--r--public/oak/bin/makefile.def2494
-rw-r--r--public/oak/bin/makefile.plt163
-rw-r--r--public/oak/bin/makefile.tpl6
-rw-r--r--public/oak/bin/mipsmk.inc268
-rw-r--r--public/oak/bin/mkhive1.cmd9
-rw-r--r--public/oak/bin/mkhive1.sav11
-rw-r--r--public/oak/bin/mkhivecr.cmd12
-rw-r--r--public/oak/bin/mkhiver.cmd14
-rw-r--r--public/oak/bin/mkhives.cmd162
-rw-r--r--public/oak/bin/mkzw.cmd2
-rw-r--r--public/oak/bin/nti386cp.cmd17
-rw-r--r--public/oak/bin/ntmipscp.cmd17
-rw-r--r--public/oak/bin/ntppccp.cmd17
-rw-r--r--public/oak/bin/ofs.inibin0 -> 16707 bytes
-rw-r--r--public/oak/bin/oleext.ini45
-rw-r--r--public/oak/bin/perfc009.inibin0 -> 13633 bytes
-rw-r--r--public/oak/bin/perfh009.ini2205
-rw-r--r--public/oak/bin/ppcmk.inc286
-rw-r--r--public/oak/bin/readme.txt3
-rw-r--r--public/oak/bin/setidw.bat1
-rw-r--r--public/oak/bin/setidw.ini42
-rw-r--r--public/oak/bin/setup16.inf1497
-rw-r--r--public/oak/bin/setup16p.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/setup16p.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/setup16p.log428
-rw-r--r--public/oak/bin/setup2p.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/setup2p.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/setup2p.log428
-rw-r--r--public/oak/bin/setup32p.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/setup32p.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/setup32p.log428
-rw-r--r--public/oak/bin/setup4p.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/setup4p.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/setup4p.log428
-rw-r--r--public/oak/bin/setup8p.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/setup8p.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/setup8p.log428
-rw-r--r--public/oak/bin/setupp.ini2
-rw-r--r--public/oak/bin/setupreg.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/setupreg.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/setupreg.ini203
-rw-r--r--public/oak/bin/setupreg.log428
-rw-r--r--public/oak/bin/setupret.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/setupret.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/setupret.log428
-rw-r--r--public/oak/bin/setupupg.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/setupupg.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/setupupg.log428
-rw-r--r--public/oak/bin/shell.ini909
-rw-r--r--public/oak/bin/softwarebin0 -> 323584 bytes
-rw-r--r--public/oak/bin/software.ini3152
-rw-r--r--public/oak/bin/software.log3209
-rw-r--r--public/oak/bin/sources.tpl162
-rw-r--r--public/oak/bin/sysmgmt.ini208
-rw-r--r--public/oak/bin/systembin0 -> 192512 bytes
-rw-r--r--public/oak/bin/system.ini3667
-rw-r--r--public/oak/bin/system.log2617
-rw-r--r--public/oak/bin/tbomb120.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/tbomb120.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/tbomb120.log428
-rw-r--r--public/oak/bin/tbomb30.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/tbomb30.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/tbomb30.log428
-rw-r--r--public/oak/bin/tbomb60.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/tbomb60.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/tbomb60.log428
-rw-r--r--public/oak/bin/tbomb90.hivbin0 -> 12288 bytes
-rw-r--r--public/oak/bin/tbomb90.hiv.logbin0 -> 1024 bytes
-rw-r--r--public/oak/bin/tbomb90.log428
-rw-r--r--public/oak/bin/tcpip.ini44
-rw-r--r--public/oak/bin/userdiffbin0 -> 77824 bytes
-rw-r--r--public/oak/bin/userdiff.ini2462
-rw-r--r--public/oak/bin/userdiff.log868
-rw-r--r--public/oak/bin/verrc.tpl52
-rw-r--r--public/oak/inc/compstui.h3790
-rw-r--r--public/oak/inc/dderror.h39
-rw-r--r--public/oak/inc/ddrawint.h741
-rw-r--r--public/oak/inc/gldrv.h450
-rw-r--r--public/oak/inc/ifi.txt591
-rw-r--r--public/oak/inc/immdev.h760
-rw-r--r--public/oak/inc/mcdrv.h771
-rw-r--r--public/oak/inc/modhdr.c34
-rw-r--r--public/oak/inc/prochdr.c30
-rw-r--r--public/oak/inc/rx.h684
-rw-r--r--public/oak/inc/vddp.h111
-rw-r--r--public/oak/inc/winddi.h2539
-rw-r--r--public/oak/inc/winddiui.h434
-rw-r--r--public/oak/inc/winsecp.h42
-rw-r--r--public/oak/inc/winsplp.h723
-rw-r--r--public/oak/inc/yes1
-rw-r--r--public/oak/inc/zwapi.h1920
-rw-r--r--public/sdk/bin/alpha/ddhelp.pdbbin0 -> 254976 bytes
-rw-r--r--public/sdk/bin/hc.bat4
-rw-r--r--public/sdk/bin/hc31.err237
-rw-r--r--public/sdk/bin/ole2view.hlpbin0 -> 120905 bytes
-rw-r--r--public/sdk/bin/oletools.hlpbin0 -> 18959 bytes
-rw-r--r--public/sdk/bin/shed.hlpbin0 -> 85476 bytes
-rw-r--r--public/sdk/bin/win32api.dat161
-rw-r--r--public/sdk/inc/386align.tab12
-rw-r--r--public/sdk/inc/accctrl.h663
-rw-r--r--public/sdk/inc/aclapi.h519
-rw-r--r--public/sdk/inc/advsn2.h22
-rw-r--r--public/sdk/inc/advsnk.h22
-rw-r--r--public/sdk/inc/alertapi.h214
-rw-r--r--public/sdk/inc/align.hxx293
-rw-r--r--public/sdk/inc/allerror.h1640
-rw-r--r--public/sdk/inc/alphalgn.tab13
-rw-r--r--public/sdk/inc/alphaops.h1237
-rw-r--r--public/sdk/inc/alphxcpt.tab2
-rw-r--r--public/sdk/inc/asn1code.h265
-rw-r--r--public/sdk/inc/asn1hdr.h151
-rw-r--r--public/sdk/inc/asn1util.h181
-rw-r--r--public/sdk/inc/assert.hxx31
-rw-r--r--public/sdk/inc/atalkwsh.h197
-rw-r--r--public/sdk/inc/basetyps.h240
-rw-r--r--public/sdk/inc/bndctx.h22
-rw-r--r--public/sdk/inc/bootetfs.h133
-rw-r--r--public/sdk/inc/bootfat.h37
-rw-r--r--public/sdk/inc/boothpfs.h517
-rw-r--r--public/sdk/inc/bootmbr.h37
-rw-r--r--public/sdk/inc/bootntfs.h517
-rw-r--r--public/sdk/inc/bootofs.h261
-rw-r--r--public/sdk/inc/caiseapi.h386
-rw-r--r--public/sdk/inc/callconv.inc303
-rw-r--r--public/sdk/inc/catstg.h1349
-rw-r--r--public/sdk/inc/cderr.h58
-rw-r--r--public/sdk/inc/cdlink.hxx131
-rw-r--r--public/sdk/inc/cfg.h98
-rw-r--r--public/sdk/inc/cfgmgr32.h2385
-rw-r--r--public/sdk/inc/cguid.h120
-rw-r--r--public/sdk/inc/chicago/ipropidl.h57
-rw-r--r--public/sdk/inc/chicago/ipropidl.idl20
-rw-r--r--public/sdk/inc/chicago/oaidl.h5942
-rw-r--r--public/sdk/inc/chicago/oaidl.idl1751
-rw-r--r--public/sdk/inc/chicago/objidl.h10770
-rw-r--r--public/sdk/inc/chicago/objidl.idl2876
-rw-r--r--public/sdk/inc/chicago/ocidl.idl1571
-rw-r--r--public/sdk/inc/chicago/oleidl.h5044
-rw-r--r--public/sdk/inc/chicago/oleidl.idl1255
-rw-r--r--public/sdk/inc/chicago/srvhdl.h983
-rw-r--r--public/sdk/inc/chicago/srvhdl.idl347
-rw-r--r--public/sdk/inc/chicago/storext.h476
-rw-r--r--public/sdk/inc/chicago/storext.idl108
-rw-r--r--public/sdk/inc/chicago/unknwn.h341
-rw-r--r--public/sdk/inc/chicago/unknwn.idl75
-rw-r--r--public/sdk/inc/chicago/wtypes.h1287
-rw-r--r--public/sdk/inc/chicago/wtypes.idl1339
-rw-r--r--public/sdk/inc/ciscan.h53
-rw-r--r--public/sdk/inc/cisvc.hxx211
-rw-r--r--public/sdk/inc/classf.h22
-rw-r--r--public/sdk/inc/cluster.h199
-rw-r--r--public/sdk/inc/cobjps.h69
-rw-r--r--public/sdk/inc/coguid.h65
-rw-r--r--public/sdk/inc/color.dlg91
-rw-r--r--public/sdk/inc/colordlg.h60
-rw-r--r--public/sdk/inc/commctrl.h4075
-rw-r--r--public/sdk/inc/commdlg.h717
-rw-r--r--public/sdk/inc/common.ver111
-rw-r--r--public/sdk/inc/compobj.h15
-rw-r--r--public/sdk/inc/cpl.h211
-rw-r--r--public/sdk/inc/crash.h217
-rw-r--r--public/sdk/inc/crt/assert.h86
-rw-r--r--public/sdk/inc/crt/conio.h148
-rw-r--r--public/sdk/inc/crt/crtdbg.h525
-rw-r--r--public/sdk/inc/crt/ctype.h349
-rw-r--r--public/sdk/inc/crt/direct.h177
-rw-r--r--public/sdk/inc/crt/dos.h205
-rw-r--r--public/sdk/inc/crt/eh.h94
-rw-r--r--public/sdk/inc/crt/errno.h138
-rw-r--r--public/sdk/inc/crt/excpt.h181
-rw-r--r--public/sdk/inc/crt/fcntl.h82
-rw-r--r--public/sdk/inc/crt/float.h362
-rw-r--r--public/sdk/inc/crt/fpieee.h286
-rw-r--r--public/sdk/inc/crt/fstream.h173
-rw-r--r--public/sdk/inc/crt/io.h306
-rw-r--r--public/sdk/inc/crt/iomanip.h150
-rw-r--r--public/sdk/inc/crt/ios.h311
-rw-r--r--public/sdk/inc/crt/iostream.h104
-rw-r--r--public/sdk/inc/crt/istream.h191
-rw-r--r--public/sdk/inc/crt/limits.h118
-rw-r--r--public/sdk/inc/crt/locale.h174
-rw-r--r--public/sdk/inc/crt/malloc.h198
-rw-r--r--public/sdk/inc/crt/math.h429
-rw-r--r--public/sdk/inc/crt/mbctype.h191
-rw-r--r--public/sdk/inc/crt/mbstring.h229
-rw-r--r--public/sdk/inc/crt/memory.h118
-rw-r--r--public/sdk/inc/crt/new.h125
-rw-r--r--public/sdk/inc/crt/ostream.h161
-rw-r--r--public/sdk/inc/crt/process.h310
-rw-r--r--public/sdk/inc/crt/search.h116
-rw-r--r--public/sdk/inc/crt/setjmp.h356
-rw-r--r--public/sdk/inc/crt/setjmpex.h47
-rw-r--r--public/sdk/inc/crt/share.h38
-rw-r--r--public/sdk/inc/crt/signal.h130
-rw-r--r--public/sdk/inc/crt/stdarg.h163
-rw-r--r--public/sdk/inc/crt/stddef.h133
-rw-r--r--public/sdk/inc/crt/stdexcpt.h90
-rw-r--r--public/sdk/inc/crt/stdio.h528
-rw-r--r--public/sdk/inc/crt/stdiostr.h94
-rw-r--r--public/sdk/inc/crt/stdlib.h600
-rw-r--r--public/sdk/inc/crt/streamb.h194
-rw-r--r--public/sdk/inc/crt/string.h292
-rw-r--r--public/sdk/inc/crt/strstrea.h128
-rw-r--r--public/sdk/inc/crt/sys/locking.h49
-rw-r--r--public/sdk/inc/crt/sys/stat.h226
-rw-r--r--public/sdk/inc/crt/sys/timeb.h151
-rw-r--r--public/sdk/inc/crt/sys/types.h87
-rw-r--r--public/sdk/inc/crt/sys/utime.h151
-rw-r--r--public/sdk/inc/crt/tchar.h995
-rw-r--r--public/sdk/inc/crt/time.h326
-rw-r--r--public/sdk/inc/crt/typeinfo.h88
-rw-r--r--public/sdk/inc/crt/varargs.h163
-rw-r--r--public/sdk/inc/crt/wchar.h699
-rw-r--r--public/sdk/inc/crt/wcstr.h32
-rw-r--r--public/sdk/inc/ctl3d.h95
-rw-r--r--public/sdk/inc/custcntl.h208
-rw-r--r--public/sdk/inc/dadvhr.h22
-rw-r--r--public/sdk/inc/datobj.h22
-rw-r--r--public/sdk/inc/dbcmdtre.hxx3771
-rw-r--r--public/sdk/inc/dbgpoint.hxx358
-rw-r--r--public/sdk/inc/dbt.h356
-rw-r--r--public/sdk/inc/dciddi.h283
-rw-r--r--public/sdk/inc/dciman.h151
-rw-r--r--public/sdk/inc/dde.h167
-rw-r--r--public/sdk/inc/ddeml.h497
-rw-r--r--public/sdk/inc/ddraw.h3105
-rw-r--r--public/sdk/inc/debnot.h349
-rw-r--r--public/sdk/inc/devguid.h50
-rw-r--r--public/sdk/inc/devioctl.h120
-rw-r--r--public/sdk/inc/dfsapi.h870
-rw-r--r--public/sdk/inc/dhcpcext.h77
-rw-r--r--public/sdk/inc/diamondc.h583
-rw-r--r--public/sdk/inc/diamondd.h1110
-rw-r--r--public/sdk/inc/digitalv.h1089
-rw-r--r--public/sdk/inc/disasm.h50
-rw-r--r--public/sdk/inc/dispatch.h15
-rw-r--r--public/sdk/inc/dlcapi.h908
-rw-r--r--public/sdk/inc/dlgs.h252
-rw-r--r--public/sdk/inc/dlink.hxx349
-rw-r--r--public/sdk/inc/dllsem.hxx214
-rw-r--r--public/sdk/inc/dplay.h309
-rw-r--r--public/sdk/inc/drivinit.h11
-rw-r--r--public/sdk/inc/drpsrc.h22
-rw-r--r--public/sdk/inc/drptgt.h22
-rw-r--r--public/sdk/inc/dsapi.h403
-rw-r--r--public/sdk/inc/dsound.h366
-rw-r--r--public/sdk/inc/dsstate.h27
-rw-r--r--public/sdk/inc/dvobj.h15
-rw-r--r--public/sdk/inc/efrmte.h22
-rw-r--r--public/sdk/inc/emonkr.h22
-rw-r--r--public/sdk/inc/eoverb.h22
-rw-r--r--public/sdk/inc/estatd.h22
-rw-r--r--public/sdk/inc/estats.h22
-rw-r--r--public/sdk/inc/estrng.h22
-rw-r--r--public/sdk/inc/etype.h91
-rw-r--r--public/sdk/inc/eunk.h22
-rw-r--r--public/sdk/inc/except.hxx1134
-rw-r--r--public/sdk/inc/exchext.h788
-rw-r--r--public/sdk/inc/exchextx.h49
-rw-r--r--public/sdk/inc/ext.h599
-rw-r--r--public/sdk/inc/extcon.h22
-rw-r--r--public/sdk/inc/fasttest.inc314
-rw-r--r--public/sdk/inc/fileopen.dlg149
-rw-r--r--public/sdk/inc/filter.h346
-rw-r--r--public/sdk/inc/filterr.h168
-rw-r--r--public/sdk/inc/findtext.dlg68
-rw-r--r--public/sdk/inc/font.dlg69
-rw-r--r--public/sdk/inc/fstream.hxx87
-rw-r--r--public/sdk/inc/ftestkey.mst1363
-rw-r--r--public/sdk/inc/ftestlog.mst1828
-rw-r--r--public/sdk/inc/ftestutl.mst1214
-rw-r--r--public/sdk/inc/ftsiface.h167
-rw-r--r--public/sdk/inc/getuser.h129
-rw-r--r--public/sdk/inc/gl/gl.h1506
-rw-r--r--public/sdk/inc/gl/glaux.h373
-rw-r--r--public/sdk/inc/gl/glu.h584
-rw-r--r--public/sdk/inc/gluon.h166
-rw-r--r--public/sdk/inc/grpcpy.hxx22
-rw-r--r--public/sdk/inc/httpext.h222
-rw-r--r--public/sdk/inc/httpfilt.h471
-rw-r--r--public/sdk/inc/icmpapi.h152
-rw-r--r--public/sdk/inc/icntnr.h22
-rw-r--r--public/sdk/inc/ilink.hxx53
-rw-r--r--public/sdk/inc/ilinkp.hxx424
-rw-r--r--public/sdk/inc/imagehlp.h922
-rw-r--r--public/sdk/inc/imaloc.h22
-rw-r--r--public/sdk/inc/ime.h288
-rw-r--r--public/sdk/inc/imessage.h194
-rw-r--r--public/sdk/inc/imm.h588
-rw-r--r--public/sdk/inc/infstr.h243
-rw-r--r--public/sdk/inc/initguid.h38
-rw-r--r--public/sdk/inc/inplca.h22
-rw-r--r--public/sdk/inc/inplcf.h22
-rw-r--r--public/sdk/inc/inplco.h22
-rw-r--r--public/sdk/inc/inplcs.h22
-rw-r--r--public/sdk/inc/inplcu.h22
-rw-r--r--public/sdk/inc/iofs.h1246
-rw-r--r--public/sdk/inc/ipexport.h140
-rw-r--r--public/sdk/inc/ipropidl.h57
-rw-r--r--public/sdk/inc/ipropidl.idl20
-rw-r--r--public/sdk/inc/issper16.h336
-rw-r--r--public/sdk/inc/issperr.dbg37
-rw-r--r--public/sdk/inc/issperr.h319
-rw-r--r--public/sdk/inc/isvbop.h134
-rw-r--r--public/sdk/inc/isvbop.inc21
-rw-r--r--public/sdk/inc/kerbcon.h113
-rw-r--r--public/sdk/inc/kerberos.h64
-rw-r--r--public/sdk/inc/ks386.inc1097
-rw-r--r--public/sdk/inc/ksalpha.h1267
-rw-r--r--public/sdk/inc/ksmips.h1258
-rw-r--r--public/sdk/inc/ksppc.h1216
-rw-r--r--public/sdk/inc/kxalpha.h1915
-rw-r--r--public/sdk/inc/kxmips.h517
-rw-r--r--public/sdk/inc/kxppc.h1733
-rw-r--r--public/sdk/inc/linkinfo.h235
-rw-r--r--public/sdk/inc/lm.h43
-rw-r--r--public/sdk/inc/lmaccess.h1400
-rw-r--r--public/sdk/inc/lmalert.h155
-rw-r--r--public/sdk/inc/lmapibuf.h74
-rw-r--r--public/sdk/inc/lmat.h137
-rw-r--r--public/sdk/inc/lmaudit.h398
-rw-r--r--public/sdk/inc/lmbrowsr.h217
-rw-r--r--public/sdk/inc/lmchdev.h270
-rw-r--r--public/sdk/inc/lmconfig.h90
-rw-r--r--public/sdk/inc/lmcons.h242
-rw-r--r--public/sdk/inc/lmdfs.h250
-rw-r--r--public/sdk/inc/lmerr.h582
-rw-r--r--public/sdk/inc/lmerrlog.h1258
-rw-r--r--public/sdk/inc/lmmsg.h106
-rw-r--r--public/sdk/inc/lmremutl.h128
-rw-r--r--public/sdk/inc/lmrepl.h275
-rw-r--r--public/sdk/inc/lmrpl.h541
-rw-r--r--public/sdk/inc/lmserver.h1230
-rw-r--r--public/sdk/inc/lmshare.h443
-rw-r--r--public/sdk/inc/lmsname.h103
-rw-r--r--public/sdk/inc/lmstats.h184
-rw-r--r--public/sdk/inc/lmsvc.h532
-rw-r--r--public/sdk/inc/lmuse.h164
-rw-r--r--public/sdk/inc/lmuseflg.h38
-rw-r--r--public/sdk/inc/lmwksta.h539
-rw-r--r--public/sdk/inc/lnkobjid.hxx79
-rw-r--r--public/sdk/inc/loadperf.h70
-rw-r--r--public/sdk/inc/lockb.h22
-rw-r--r--public/sdk/inc/lrpcmon.h19
-rw-r--r--public/sdk/inc/lzexpand.h127
-rw-r--r--public/sdk/inc/mac386.inc267
-rw-r--r--public/sdk/inc/macfile.h911
-rw-r--r--public/sdk/inc/makefil162
-rw-r--r--public/sdk/inc/mapi.h359
-rw-r--r--public/sdk/inc/mapicode.h245
-rw-r--r--public/sdk/inc/mapidbg.h479
-rw-r--r--public/sdk/inc/mapidefs.h2649
-rw-r--r--public/sdk/inc/mapiform.h627
-rw-r--r--public/sdk/inc/mapiguid.h336
-rw-r--r--public/sdk/inc/mapinls.h209
-rw-r--r--public/sdk/inc/mapispi.h927
-rw-r--r--public/sdk/inc/mapitags.h1033
-rw-r--r--public/sdk/inc/mapiutil.h882
-rw-r--r--public/sdk/inc/mapival.h1786
-rw-r--r--public/sdk/inc/mapiwin.h431
-rw-r--r--public/sdk/inc/mapiwz.h68
-rw-r--r--public/sdk/inc/mapix.h541
-rw-r--r--public/sdk/inc/marshl.h22
-rw-r--r--public/sdk/inc/mciavi.h81
-rw-r--r--public/sdk/inc/mcx.h102
-rw-r--r--public/sdk/inc/memdeser.hxx81
-rw-r--r--public/sdk/inc/memser.hxx79
-rw-r--r--public/sdk/inc/mfc30/afx.h1533
-rw-r--r--public/sdk/inc/mfc30/afx.inl368
-rw-r--r--public/sdk/inc/mfc30/afxaete.r92
-rw-r--r--public/sdk/inc/mfc30/afxcmn.h709
-rw-r--r--public/sdk/inc/mfc30/afxcmn.inl524
-rw-r--r--public/sdk/inc/mfc30/afxcoll.h1370
-rw-r--r--public/sdk/inc/mfc30/afxcoll.inl468
-rw-r--r--public/sdk/inc/mfc30/afxdb.h817
-rw-r--r--public/sdk/inc/mfc30/afxdb.inl92
-rw-r--r--public/sdk/inc/mfc30/afxdb.rc83
-rw-r--r--public/sdk/inc/mfc30/afxdd_.h57
-rw-r--r--public/sdk/inc/mfc30/afxdisp.h590
-rw-r--r--public/sdk/inc/mfc30/afxdlgs.h604
-rw-r--r--public/sdk/inc/mfc30/afxdlgs.inl110
-rw-r--r--public/sdk/inc/mfc30/afxdll_.h90
-rw-r--r--public/sdk/inc/mfc30/afxdllx.h20
-rw-r--r--public/sdk/inc/mfc30/afxext.h992
-rw-r--r--public/sdk/inc/mfc30/afxext.inl107
-rw-r--r--public/sdk/inc/mfc30/afxhelp.hm226
-rw-r--r--public/sdk/inc/mfc30/afxmsg_.h568
-rw-r--r--public/sdk/inc/mfc30/afxodlgs.h375
-rw-r--r--public/sdk/inc/mfc30/afxole.h1630
-rw-r--r--public/sdk/inc/mfc30/afxole.inl190
-rw-r--r--public/sdk/inc/mfc30/afxolecl.rc60
-rw-r--r--public/sdk/inc/mfc30/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc30/afxplex_.h48
-rw-r--r--public/sdk/inc/mfc30/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc30/afxpriv.h680
-rw-r--r--public/sdk/inc/mfc30/afxres.apsbin0 -> 22616 bytes
-rw-r--r--public/sdk/inc/mfc30/afxres.h691
-rw-r--r--public/sdk/inc/mfc30/afxres.rc177
-rw-r--r--public/sdk/inc/mfc30/afxsock.h350
-rw-r--r--public/sdk/inc/mfc30/afxsock.inl51
-rw-r--r--public/sdk/inc/mfc30/afxstat_.h537
-rw-r--r--public/sdk/inc/mfc30/afxtempl.h1501
-rw-r--r--public/sdk/inc/mfc30/afxv_cfg.h7
-rw-r--r--public/sdk/inc/mfc30/afxv_cpu.h65
-rw-r--r--public/sdk/inc/mfc30/afxv_dll.h53
-rw-r--r--public/sdk/inc/mfc30/afxv_mac.h57
-rw-r--r--public/sdk/inc/mfc30/afxv_w32.h201
-rw-r--r--public/sdk/inc/mfc30/afxver_.h324
-rw-r--r--public/sdk/inc/mfc30/afxwin.h3755
-rw-r--r--public/sdk/inc/mfc30/afxwin1.inl931
-rw-r--r--public/sdk/inc/mfc30/afxwin2.inl899
-rw-r--r--public/sdk/inc/mfc30/commctrl.h2634
-rw-r--r--public/sdk/inc/mfc30/l.deu/afxdb.rc83
-rw-r--r--public/sdk/inc/mfc30/l.deu/afxolecl.rc60
-rw-r--r--public/sdk/inc/mfc30/l.deu/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc30/l.deu/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc30/l.deu/afxres.apsbin0 -> 23779 bytes
-rw-r--r--public/sdk/inc/mfc30/l.deu/afxres.rc177
-rw-r--r--public/sdk/inc/mfc30/l.fra/afxdb.rc83
-rw-r--r--public/sdk/inc/mfc30/l.fra/afxolecl.rc60
-rw-r--r--public/sdk/inc/mfc30/l.fra/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc30/l.fra/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc30/l.fra/afxres.rc177
-rw-r--r--public/sdk/inc/mfc30/l.jpn/afxdb.rc83
-rw-r--r--public/sdk/inc/mfc30/l.jpn/afxolecl.rc60
-rw-r--r--public/sdk/inc/mfc30/l.jpn/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc30/l.jpn/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc30/l.jpn/afxres.apsbin0 -> 23460 bytes
-rw-r--r--public/sdk/inc/mfc30/l.jpn/afxres.rc177
-rw-r--r--public/sdk/inc/mfc30/mapi.h175
-rw-r--r--public/sdk/inc/mfc30/ole2ansi.h86
-rw-r--r--public/sdk/inc/mfc30/ole2ui.h1622
-rw-r--r--public/sdk/inc/mfc30/oledlgs.h162
-rw-r--r--public/sdk/inc/mfc30/res/copy4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc30/res/help.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc30/res/help.rscbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc30/res/magnify.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc30/res/magnify.rscbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc30/res/minifwnd.bmpbin0 -> 198 bytes
-rw-r--r--public/sdk/inc/mfc30/res/move4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc30/res/nodrop.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc30/res/psscr.bmpbin0 -> 390 bytes
-rw-r--r--public/sdk/inc/mfc30/res/psscr_l.bmpbin0 -> 390 bytes
-rw-r--r--public/sdk/inc/mfc30/res/psscr_ld.bmpbin0 -> 390 bytes
-rw-r--r--public/sdk/inc/mfc30/res/psscr_r.bmpbin0 -> 390 bytes
-rw-r--r--public/sdk/inc/mfc30/res/psscr_rd.bmpbin0 -> 390 bytes
-rw-r--r--public/sdk/inc/mfc30/res/psscroll.bmpbin0 -> 1412 bytes
-rw-r--r--public/sdk/inc/mfc30/res/sarrows.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc30/res/split.rscbin0 -> 546 bytes
-rw-r--r--public/sdk/inc/mfc30/res/splith.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc30/res/splitv.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc30/res/trck4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc30/res/trcknesw.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc30/res/trckns.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc30/res/trcknwse.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc30/res/trckwe.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc30/winres.h305
-rw-r--r--public/sdk/inc/mfc40/afx.h1818
-rw-r--r--public/sdk/inc/mfc40/afx.inl395
-rw-r--r--public/sdk/inc/mfc40/afxadv.h181
-rw-r--r--public/sdk/inc/mfc40/afxaete.r92
-rw-r--r--public/sdk/inc/mfc40/afxcmn.h1036
-rw-r--r--public/sdk/inc/mfc40/afxcmn.inl647
-rw-r--r--public/sdk/inc/mfc40/afxcoll.h1440
-rw-r--r--public/sdk/inc/mfc40/afxcoll.inl496
-rw-r--r--public/sdk/inc/mfc40/afxctl.h1410
-rw-r--r--public/sdk/inc/mfc40/afxctl.inl79
-rw-r--r--public/sdk/inc/mfc40/afxctl.rc272
-rw-r--r--public/sdk/inc/mfc40/afxcview.h135
-rw-r--r--public/sdk/inc/mfc40/afxcview.inl29
-rw-r--r--public/sdk/inc/mfc40/afxdao.h1318
-rw-r--r--public/sdk/inc/mfc40/afxdao.inl75
-rw-r--r--public/sdk/inc/mfc40/afxdb.h838
-rw-r--r--public/sdk/inc/mfc40/afxdb.inl99
-rw-r--r--public/sdk/inc/mfc40/afxdb.rc97
-rw-r--r--public/sdk/inc/mfc40/afxdb_.h69
-rw-r--r--public/sdk/inc/mfc40/afxdd_.h63
-rw-r--r--public/sdk/inc/mfc40/afxdisp.h1297
-rw-r--r--public/sdk/inc/mfc40/afxdlgs.h643
-rw-r--r--public/sdk/inc/mfc40/afxdlgs.inl100
-rw-r--r--public/sdk/inc/mfc40/afxdll_.h105
-rw-r--r--public/sdk/inc/mfc40/afxdllx.h68
-rw-r--r--public/sdk/inc/mfc40/afxext.h1038
-rw-r--r--public/sdk/inc/mfc40/afxext.inl121
-rw-r--r--public/sdk/inc/mfc40/afxhelp.hm272
-rw-r--r--public/sdk/inc/mfc40/afxisapi.h553
-rw-r--r--public/sdk/inc/mfc40/afxisapi.inl122
-rw-r--r--public/sdk/inc/mfc40/afxisapi.rc44
-rw-r--r--public/sdk/inc/mfc40/afxmsg_.h683
-rw-r--r--public/sdk/inc/mfc40/afxmt.h255
-rw-r--r--public/sdk/inc/mfc40/afxmt.inl50
-rw-r--r--public/sdk/inc/mfc40/afxodlgs.h502
-rw-r--r--public/sdk/inc/mfc40/afxole.h1666
-rw-r--r--public/sdk/inc/mfc40/afxole.inl373
-rw-r--r--public/sdk/inc/mfc40/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc40/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc40/afxplex_.h49
-rw-r--r--public/sdk/inc/mfc40/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc40/afxpriv.h979
-rw-r--r--public/sdk/inc/mfc40/afxres.h767
-rw-r--r--public/sdk/inc/mfc40/afxres.rc211
-rw-r--r--public/sdk/inc/mfc40/afxrich.h471
-rw-r--r--public/sdk/inc/mfc40/afxrich.inl56
-rw-r--r--public/sdk/inc/mfc40/afxsock.h355
-rw-r--r--public/sdk/inc/mfc40/afxsock.inl53
-rw-r--r--public/sdk/inc/mfc40/afxstat_.h321
-rw-r--r--public/sdk/inc/mfc40/afxtempl.h1596
-rw-r--r--public/sdk/inc/mfc40/afxtls_.h241
-rw-r--r--public/sdk/inc/mfc40/afxv_cfg.h17
-rw-r--r--public/sdk/inc/mfc40/afxv_cpu.h63
-rw-r--r--public/sdk/inc/mfc40/afxv_dll.h53
-rw-r--r--public/sdk/inc/mfc40/afxv_mac.h51
-rw-r--r--public/sdk/inc/mfc40/afxv_w32.h208
-rw-r--r--public/sdk/inc/mfc40/afxver_.h326
-rw-r--r--public/sdk/inc/mfc40/afxwin.h4498
-rw-r--r--public/sdk/inc/mfc40/afxwin1.inl1091
-rw-r--r--public/sdk/inc/mfc40/afxwin2.inl1041
-rw-r--r--public/sdk/inc/mfc40/daogetrw.h143
-rw-r--r--public/sdk/inc/mfc40/dbdaoerr.h448
-rw-r--r--public/sdk/inc/mfc40/dbdaoid.h131
-rw-r--r--public/sdk/inc/mfc40/dbdaoint.h776
-rw-r--r--public/sdk/inc/mfc40/l.chs/afxctl.rc272
-rw-r--r--public/sdk/inc/mfc40/l.chs/afxdb.rc97
-rw-r--r--public/sdk/inc/mfc40/l.chs/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc40/l.chs/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc40/l.chs/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc40/l.chs/afxres.rc211
-rw-r--r--public/sdk/inc/mfc40/l.deu/afxctl.rc272
-rw-r--r--public/sdk/inc/mfc40/l.deu/afxdb.rc97
-rw-r--r--public/sdk/inc/mfc40/l.deu/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc40/l.deu/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc40/l.deu/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc40/l.deu/afxres.rc211
-rw-r--r--public/sdk/inc/mfc40/l.esp/afxctl.rc272
-rw-r--r--public/sdk/inc/mfc40/l.esp/afxdb.rc97
-rw-r--r--public/sdk/inc/mfc40/l.esp/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc40/l.esp/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc40/l.esp/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc40/l.esp/afxres.rc211
-rw-r--r--public/sdk/inc/mfc40/l.fra/afxctl.rc272
-rw-r--r--public/sdk/inc/mfc40/l.fra/afxdb.rc97
-rw-r--r--public/sdk/inc/mfc40/l.fra/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc40/l.fra/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc40/l.fra/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc40/l.fra/afxres.rc211
-rw-r--r--public/sdk/inc/mfc40/l.ita/afxctl.rc272
-rw-r--r--public/sdk/inc/mfc40/l.ita/afxdb.rc97
-rw-r--r--public/sdk/inc/mfc40/l.ita/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc40/l.ita/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc40/l.ita/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc40/l.ita/afxres.rc211
-rw-r--r--public/sdk/inc/mfc40/l.jpn/afxctl.rc272
-rw-r--r--public/sdk/inc/mfc40/l.jpn/afxdb.rc97
-rw-r--r--public/sdk/inc/mfc40/l.jpn/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc40/l.jpn/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc40/l.jpn/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc40/l.jpn/afxres.rc211
-rw-r--r--public/sdk/inc/mfc40/l.kor/afxctl.rc272
-rw-r--r--public/sdk/inc/mfc40/l.kor/afxdb.rc97
-rw-r--r--public/sdk/inc/mfc40/l.kor/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc40/l.kor/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc40/l.kor/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc40/l.kor/afxres.rc211
-rw-r--r--public/sdk/inc/mfc40/mfcsamps.mak490
-rw-r--r--public/sdk/inc/mfc40/res/3dcheck.bmpbin0 -> 1522 bytes
-rw-r--r--public/sdk/inc/mfc40/res/95check.bmpbin0 -> 338 bytes
-rw-r--r--public/sdk/inc/mfc40/res/copy4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc40/res/help.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc40/res/help.rscbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc40/res/magnify.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc40/res/magnify.rscbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc40/res/minifwnd.bmpbin0 -> 198 bytes
-rw-r--r--public/sdk/inc/mfc40/res/move4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc40/res/nodrop.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc40/res/ntcheck.bmpbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc40/res/sarrows.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc40/res/split.rscbin0 -> 546 bytes
-rw-r--r--public/sdk/inc/mfc40/res/splith.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc40/res/splitv.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc40/res/trck4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc40/res/trcknesw.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc40/res/trckns.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc40/res/trcknwse.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc40/res/trckwe.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc40/res/truetype.bmpbin0 -> 262 bytes
-rw-r--r--public/sdk/inc/mfc40/sql.h1259
-rw-r--r--public/sdk/inc/mfc40/sqlext.h293
-rw-r--r--public/sdk/inc/mfc40/sqltypes.h138
-rw-r--r--public/sdk/inc/mfc40/winres.h589
-rw-r--r--public/sdk/inc/mfc42/afx.h1916
-rw-r--r--public/sdk/inc/mfc42/afx.inl415
-rw-r--r--public/sdk/inc/mfc42/afxadv.h181
-rw-r--r--public/sdk/inc/mfc42/afxaete.r92
-rw-r--r--public/sdk/inc/mfc42/afxcmn.h919
-rw-r--r--public/sdk/inc/mfc42/afxcmn.inl643
-rw-r--r--public/sdk/inc/mfc42/afxcoll.h1446
-rw-r--r--public/sdk/inc/mfc42/afxcoll.inl496
-rw-r--r--public/sdk/inc/mfc42/afxcom_.h463
-rw-r--r--public/sdk/inc/mfc42/afxconv.h148
-rw-r--r--public/sdk/inc/mfc42/afxctl.h1673
-rw-r--r--public/sdk/inc/mfc42/afxctl.inl117
-rw-r--r--public/sdk/inc/mfc42/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/afxcview.h135
-rw-r--r--public/sdk/inc/mfc42/afxcview.inl29
-rw-r--r--public/sdk/inc/mfc42/afxdao.h1325
-rw-r--r--public/sdk/inc/mfc42/afxdao.inl77
-rw-r--r--public/sdk/inc/mfc42/afxdb.h1042
-rw-r--r--public/sdk/inc/mfc42/afxdb.inl113
-rw-r--r--public/sdk/inc/mfc42/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/afxdb_.h72
-rw-r--r--public/sdk/inc/mfc42/afxdd_.h64
-rw-r--r--public/sdk/inc/mfc42/afxdisp.h1413
-rw-r--r--public/sdk/inc/mfc42/afxdlgs.h650
-rw-r--r--public/sdk/inc/mfc42/afxdlgs.inl100
-rw-r--r--public/sdk/inc/mfc42/afxdll_.h105
-rw-r--r--public/sdk/inc/mfc42/afxdllx.h68
-rw-r--r--public/sdk/inc/mfc42/afxdocob.h391
-rw-r--r--public/sdk/inc/mfc42/afxext.h1048
-rw-r--r--public/sdk/inc/mfc42/afxext.inl121
-rw-r--r--public/sdk/inc/mfc42/afxhelp.hm272
-rw-r--r--public/sdk/inc/mfc42/afxinet.h671
-rw-r--r--public/sdk/inc/mfc42/afxinet.inl69
-rw-r--r--public/sdk/inc/mfc42/afxisapi.h561
-rw-r--r--public/sdk/inc/mfc42/afxisapi.inl121
-rw-r--r--public/sdk/inc/mfc42/afxisapi.rc45
-rw-r--r--public/sdk/inc/mfc42/afxmsg_.h695
-rw-r--r--public/sdk/inc/mfc42/afxmt.h255
-rw-r--r--public/sdk/inc/mfc42/afxmt.inl50
-rw-r--r--public/sdk/inc/mfc42/afxodlgs.h502
-rw-r--r--public/sdk/inc/mfc42/afxole.h1907
-rw-r--r--public/sdk/inc/mfc42/afxole.inl408
-rw-r--r--public/sdk/inc/mfc42/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/afxplex_.h53
-rw-r--r--public/sdk/inc/mfc42/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/afxpriv.h789
-rw-r--r--public/sdk/inc/mfc42/afxpriv2.h225
-rw-r--r--public/sdk/inc/mfc42/afxres.h772
-rw-r--r--public/sdk/inc/mfc42/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/afxrich.h399
-rw-r--r--public/sdk/inc/mfc42/afxrich.inl56
-rw-r--r--public/sdk/inc/mfc42/afxsock.h365
-rw-r--r--public/sdk/inc/mfc42/afxsock.inl53
-rw-r--r--public/sdk/inc/mfc42/afxstat_.h363
-rw-r--r--public/sdk/inc/mfc42/afxtempl.h1648
-rw-r--r--public/sdk/inc/mfc42/afxtls_.h240
-rw-r--r--public/sdk/inc/mfc42/afxv_cfg.h17
-rw-r--r--public/sdk/inc/mfc42/afxv_cpu.h63
-rw-r--r--public/sdk/inc/mfc42/afxv_dll.h53
-rw-r--r--public/sdk/inc/mfc42/afxv_mac.h52
-rw-r--r--public/sdk/inc/mfc42/afxv_w32.h208
-rw-r--r--public/sdk/inc/mfc42/afxver_.h327
-rw-r--r--public/sdk/inc/mfc42/afxwin.h4645
-rw-r--r--public/sdk/inc/mfc42/afxwin1.inl1091
-rw-r--r--public/sdk/inc/mfc42/afxwin2.inl1043
-rw-r--r--public/sdk/inc/mfc42/daogetrw.h143
-rw-r--r--public/sdk/inc/mfc42/datapath.h601
-rw-r--r--public/sdk/inc/mfc42/dbdaoerr.h448
-rw-r--r--public/sdk/inc/mfc42/dbdaoid.h131
-rw-r--r--public/sdk/inc/mfc42/dbdaoint.h776
-rw-r--r--public/sdk/inc/mfc42/docobj.h1654
-rw-r--r--public/sdk/inc/mfc42/idispids.h12
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.chs/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.cht/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.deu/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.esp/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.fra/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.ita/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.jpn/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxctl.rc284
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxdb.rc103
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxolecl.rc66
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxolesv.rc53
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxprint.rc130
-rw-r--r--public/sdk/inc/mfc42/l.kor/afxres.rc223
-rw-r--r--public/sdk/inc/mfc42/mfcsamps.mak490
-rw-r--r--public/sdk/inc/mfc42/mssccprj.scc4
-rw-r--r--public/sdk/inc/mfc42/res/3dcheck.bmpbin0 -> 1522 bytes
-rw-r--r--public/sdk/inc/mfc42/res/95check.bmpbin0 -> 338 bytes
-rw-r--r--public/sdk/inc/mfc42/res/copy4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/help.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/help.rscbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc42/res/magnify.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/magnify.rscbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc42/res/minifwnd.bmpbin0 -> 198 bytes
-rw-r--r--public/sdk/inc/mfc42/res/move4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/nodrop.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/ntcheck.bmpbin0 -> 378 bytes
-rw-r--r--public/sdk/inc/mfc42/res/sarrows.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/split.rscbin0 -> 546 bytes
-rw-r--r--public/sdk/inc/mfc42/res/splith.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/splitv.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/trck4way.curbin0 -> 518 bytes
-rw-r--r--public/sdk/inc/mfc42/res/trcknesw.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc42/res/trckns.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc42/res/trcknwse.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc42/res/trckwe.curbin0 -> 722 bytes
-rw-r--r--public/sdk/inc/mfc42/res/truetype.bmpbin0 -> 262 bytes
-rw-r--r--public/sdk/inc/mfc42/servprov.h191
-rw-r--r--public/sdk/inc/mfc42/sql.h1259
-rw-r--r--public/sdk/inc/mfc42/sqlext.h293
-rw-r--r--public/sdk/inc/mfc42/sqltypes.h138
-rw-r--r--public/sdk/inc/mfc42/winres.h597
-rw-r--r--public/sdk/inc/mgmtapi.h131
-rw-r--r--public/sdk/inc/midles.h218
-rw-r--r--public/sdk/inc/minfo.h22
-rw-r--r--public/sdk/inc/mipsalgn.tab13
-rw-r--r--public/sdk/inc/mipsinst.h324
-rw-r--r--public/sdk/inc/mipsxcpt.tab2
-rw-r--r--public/sdk/inc/mmddk.h692
-rw-r--r--public/sdk/inc/mmreg.h1638
-rw-r--r--public/sdk/inc/mmsystem.h3798
-rw-r--r--public/sdk/inc/moniker.h15
-rw-r--r--public/sdk/inc/monikr.h22
-rw-r--r--public/sdk/inc/msacm.h1963
-rw-r--r--public/sdk/inc/msacmdlg.dlg80
-rw-r--r--public/sdk/inc/msacmdlg.h32
-rw-r--r--public/sdk/inc/msacmdrv.h320
-rw-r--r--public/sdk/inc/msaudite.h2418
-rw-r--r--public/sdk/inc/msgflt.h22
-rw-r--r--public/sdk/inc/msobjs.h2580
-rw-r--r--public/sdk/inc/mspab.h69
-rw-r--r--public/sdk/inc/mspst.h96
-rw-r--r--public/sdk/inc/mstest.inc1250
-rw-r--r--public/sdk/inc/mswsock.h181
-rw-r--r--public/sdk/inc/nb30.h308
-rw-r--r--public/sdk/inc/nddeapi.h400
-rw-r--r--public/sdk/inc/nddesec.h104
-rw-r--r--public/sdk/inc/netevent.dbg290
-rw-r--r--public/sdk/inc/netevent.h2846
-rw-r--r--public/sdk/inc/newat.h103
-rw-r--r--public/sdk/inc/nminsert.h124
-rw-r--r--public/sdk/inc/npapi.h605
-rw-r--r--public/sdk/inc/nspapi.h690
-rw-r--r--public/sdk/inc/nspapip.h149
-rw-r--r--public/sdk/inc/nt.h83
-rw-r--r--public/sdk/inc/nt_vdd.h215
-rw-r--r--public/sdk/inc/ntalpha.h888
-rw-r--r--public/sdk/inc/ntconfig.h842
-rw-r--r--public/sdk/inc/ntcsrdll.h193
-rw-r--r--public/sdk/inc/ntcsrmsg.h141
-rw-r--r--public/sdk/inc/ntcsrmsg.inc123
-rw-r--r--public/sdk/inc/ntcsrsrv.h568
-rw-r--r--public/sdk/inc/ntdbg.h1027
-rw-r--r--public/sdk/inc/ntddaux.h73
-rw-r--r--public/sdk/inc/ntddbeep.h59
-rw-r--r--public/sdk/inc/ntddbrow.h448
-rw-r--r--public/sdk/inc/ntddcdrm.h284
-rw-r--r--public/sdk/inc/ntdddfs.h291
-rw-r--r--public/sdk/inc/ntdddisk.h695
-rw-r--r--public/sdk/inc/ntdddlc.h80
-rw-r--r--public/sdk/inc/ntddfs.h47
-rw-r--r--public/sdk/inc/ntddft.h206
-rw-r--r--public/sdk/inc/ntddjoy.h132
-rw-r--r--public/sdk/inc/ntddkbd.h290
-rw-r--r--public/sdk/inc/ntddmidi.h136
-rw-r--r--public/sdk/inc/ntddmix.h206
-rw-r--r--public/sdk/inc/ntddmodm.h35
-rw-r--r--public/sdk/inc/ntddmou.h205
-rw-r--r--public/sdk/inc/ntddmup.h67
-rw-r--r--public/sdk/inc/ntddndis.h1542
-rw-r--r--public/sdk/inc/ntddnetd.h196
-rw-r--r--public/sdk/inc/ntddnfs.h441
-rw-r--r--public/sdk/inc/ntddnpfs.h47
-rw-r--r--public/sdk/inc/ntddnull.h47
-rw-r--r--public/sdk/inc/ntddpar.h63
-rw-r--r--public/sdk/inc/ntddpcm.h161
-rw-r--r--public/sdk/inc/ntddrdr.h54
-rw-r--r--public/sdk/inc/ntddscsi.h229
-rw-r--r--public/sdk/inc/ntddser.h529
-rw-r--r--public/sdk/inc/ntddsjoy.h367
-rw-r--r--public/sdk/inc/ntddsnd.h41
-rw-r--r--public/sdk/inc/ntddstor.h96
-rw-r--r--public/sdk/inc/ntddstrm.h118
-rw-r--r--public/sdk/inc/ntddtape.h301
-rw-r--r--public/sdk/inc/ntddtdi.h66
-rw-r--r--public/sdk/inc/ntddtime.h44
-rw-r--r--public/sdk/inc/ntddtx.h25
-rw-r--r--public/sdk/inc/ntddvdeo.h1323
-rw-r--r--public/sdk/inc/ntddvdsk.h47
-rw-r--r--public/sdk/inc/ntddwave.h128
-rw-r--r--public/sdk/inc/ntdef.h1256
-rw-r--r--public/sdk/inc/ntdskreg.h257
-rw-r--r--public/sdk/inc/ntelfapi.h295
-rw-r--r--public/sdk/inc/ntexapi.h1680
-rw-r--r--public/sdk/inc/ntfsprop.h264
-rw-r--r--public/sdk/inc/nti386.h495
-rw-r--r--public/sdk/inc/ntimage.h1160
-rw-r--r--public/sdk/inc/ntimp.idl56
-rw-r--r--public/sdk/inc/ntioapi.h2002
-rw-r--r--public/sdk/inc/ntiodump.h64
-rw-r--r--public/sdk/inc/ntiolog.h83
-rw-r--r--public/sdk/inc/ntkdexts.h122
-rw-r--r--public/sdk/inc/ntkeapi.h136
-rw-r--r--public/sdk/inc/ntkxapi.h118
-rw-r--r--public/sdk/inc/ntldr.h302
-rw-r--r--public/sdk/inc/ntlmsp.h299
-rw-r--r--public/sdk/inc/ntlpcapi.h277
-rw-r--r--public/sdk/inc/ntlsa.h2190
-rw-r--r--public/sdk/inc/ntlsapi.h194
-rw-r--r--public/sdk/inc/ntmips.h1177
-rw-r--r--public/sdk/inc/ntmmapi.h370
-rw-r--r--public/sdk/inc/ntmsv1_0.h413
-rw-r--r--public/sdk/inc/ntnls.h50
-rw-r--r--public/sdk/inc/ntobapi.h308
-rw-r--r--public/sdk/inc/ntpnpapi.h239
-rw-r--r--public/sdk/inc/ntpoapi.h109
-rw-r--r--public/sdk/inc/ntppc.h688
-rw-r--r--public/sdk/inc/ntprfctr.h130
-rw-r--r--public/sdk/inc/ntpsapi.h918
-rw-r--r--public/sdk/inc/ntquery.h34
-rw-r--r--public/sdk/inc/ntregapi.h448
-rw-r--r--public/sdk/inc/ntrpc.idl177
-rw-r--r--public/sdk/inc/ntrtl.h5272
-rw-r--r--public/sdk/inc/ntsam.h1596
-rw-r--r--public/sdk/inc/ntsdexts.h88
-rw-r--r--public/sdk/inc/ntseapi.h1591
-rw-r--r--public/sdk/inc/ntsecapi.h1148
-rw-r--r--public/sdk/inc/ntsm.h163
-rw-r--r--public/sdk/inc/ntstatus.dbg732
-rw-r--r--public/sdk/inc/ntstatus.h7179
-rw-r--r--public/sdk/inc/nturtl.h897
-rw-r--r--public/sdk/inc/ntverp.h68
-rw-r--r--public/sdk/inc/ntxcapi.h336
-rw-r--r--public/sdk/inc/oadvhr.h22
-rw-r--r--public/sdk/inc/oaidl.h5942
-rw-r--r--public/sdk/inc/oaidl.idl1751
-rw-r--r--public/sdk/inc/objbase.h863
-rw-r--r--public/sdk/inc/objerror.h10
-rw-r--r--public/sdk/inc/objidl.h10770
-rw-r--r--public/sdk/inc/objidl.idl2876
-rw-r--r--public/sdk/inc/ocach2.h22
-rw-r--r--public/sdk/inc/ocachc.h22
-rw-r--r--public/sdk/inc/ocache.h22
-rw-r--r--public/sdk/inc/ocidl.h7938
-rw-r--r--public/sdk/inc/ocidl.idl1571
-rw-r--r--public/sdk/inc/ocntnr.h22
-rw-r--r--public/sdk/inc/ocsite.h22
-rw-r--r--public/sdk/inc/ofsmsg.h36
-rw-r--r--public/sdk/inc/ofsoid.hxx98
-rw-r--r--public/sdk/inc/ole.h503
-rw-r--r--public/sdk/inc/ole2.h344
-rw-r--r--public/sdk/inc/ole2anac.h91
-rw-r--r--public/sdk/inc/ole2dbg.h19
-rw-r--r--public/sdk/inc/ole2ver.h15
-rw-r--r--public/sdk/inc/oleauto.h771
-rw-r--r--public/sdk/inc/olecairo.h96
-rw-r--r--public/sdk/inc/olectl.h568
-rw-r--r--public/sdk/inc/olectlid.h12
-rw-r--r--public/sdk/inc/oledb.h9520
-rw-r--r--public/sdk/inc/oledbtyp.h21
-rw-r--r--public/sdk/inc/oledlg.dlg566
-rw-r--r--public/sdk/inc/oledlg.h1625
-rw-r--r--public/sdk/inc/oleext.h2276
-rw-r--r--public/sdk/inc/oleguid.h80
-rw-r--r--public/sdk/inc/oleidl.h5044
-rw-r--r--public/sdk/inc/oleidl.idl1255
-rw-r--r--public/sdk/inc/oleobj.h22
-rw-r--r--public/sdk/inc/olewnd.h22
-rw-r--r--public/sdk/inc/olink.h22
-rw-r--r--public/sdk/inc/ossber.h716
-rw-r--r--public/sdk/inc/ossdll.h405
-rw-r--r--public/sdk/inc/ossglobl.h191
-rw-r--r--public/sdk/inc/ossmmgmt.h96
-rw-r--r--public/sdk/inc/ossper.h341
-rw-r--r--public/sdk/inc/osstrace.h378
-rw-r--r--public/sdk/inc/otrack.hxx216
-rw-r--r--public/sdk/inc/pcrt32.h39
-rw-r--r--public/sdk/inc/pdb.h318
-rw-r--r--public/sdk/inc/pdh.h573
-rw-r--r--public/sdk/inc/pdhmsg.h366
-rw-r--r--public/sdk/inc/pdname.h22
-rw-r--r--public/sdk/inc/perfsnap.hxx587
-rw-r--r--public/sdk/inc/pfile.h22
-rw-r--r--public/sdk/inc/plan16.h13
-rw-r--r--public/sdk/inc/plan32.h14
-rw-r--r--public/sdk/inc/poppack.h36
-rw-r--r--public/sdk/inc/port1632.h40
-rw-r--r--public/sdk/inc/posix/dirent.h46
-rw-r--r--public/sdk/inc/posix/errno.h31
-rw-r--r--public/sdk/inc/posix/fcntl.h83
-rw-r--r--public/sdk/inc/posix/grp.h39
-rw-r--r--public/sdk/inc/posix/pwd.h40
-rw-r--r--public/sdk/inc/posix/setjmp.h269
-rw-r--r--public/sdk/inc/posix/signal.h88
-rw-r--r--public/sdk/inc/posix/sys/errno.h72
-rw-r--r--public/sdk/inc/posix/sys/stat.h95
-rw-r--r--public/sdk/inc/posix/sys/times.h43
-rw-r--r--public/sdk/inc/posix/sys/types.h124
-rw-r--r--public/sdk/inc/posix/sys/utsname.h37
-rw-r--r--public/sdk/inc/posix/sys/wait.h90
-rw-r--r--public/sdk/inc/posix/tar.h52
-rw-r--r--public/sdk/inc/posix/termios.h178
-rw-r--r--public/sdk/inc/posix/types.h20
-rw-r--r--public/sdk/inc/posix/unistd.h168
-rw-r--r--public/sdk/inc/posix/utime.h34
-rw-r--r--public/sdk/inc/ppcalign.tab13
-rw-r--r--public/sdk/inc/ppcinst.h644
-rw-r--r--public/sdk/inc/ppcxcpt.tab2
-rw-r--r--public/sdk/inc/prnsetup.dlg144
-rw-r--r--public/sdk/inc/propapi.h356
-rw-r--r--public/sdk/inc/propset.h105
-rw-r--r--public/sdk/inc/propstm.hxx678
-rw-r--r--public/sdk/inc/propvar.h227
-rw-r--r--public/sdk/inc/provapi.h248
-rw-r--r--public/sdk/inc/proxyb.h22
-rw-r--r--public/sdk/inc/prsht.h426
-rw-r--r--public/sdk/inc/prsist.h22
-rw-r--r--public/sdk/inc/psapi.h253
-rw-r--r--public/sdk/inc/psfbuf.h22
-rw-r--r--public/sdk/inc/pshpack1.h32
-rw-r--r--public/sdk/inc/pshpack2.h32
-rw-r--r--public/sdk/inc/pshpack4.h32
-rw-r--r--public/sdk/inc/pshpack8.h32
-rw-r--r--public/sdk/inc/pstorg.h22
-rw-r--r--public/sdk/inc/pstrm.h22
-rw-r--r--public/sdk/inc/ptypes16.h70
-rw-r--r--public/sdk/inc/ptypes32.h62
-rw-r--r--public/sdk/inc/pwin16.h289
-rw-r--r--public/sdk/inc/pwin32.h305
-rw-r--r--public/sdk/inc/query.h1627
-rw-r--r--public/sdk/inc/ras.h1173
-rw-r--r--public/sdk/inc/rasdlg.h269
-rw-r--r--public/sdk/inc/raserror.h629
-rw-r--r--public/sdk/inc/rassapi.h385
-rw-r--r--public/sdk/inc/rasshost.h149
-rw-r--r--public/sdk/inc/rchanb.h22
-rw-r--r--public/sdk/inc/recguids.h13
-rw-r--r--public/sdk/inc/reconcil.h201
-rw-r--r--public/sdk/inc/regapix.h453
-rw-r--r--public/sdk/inc/regstr.h1237
-rw-r--r--public/sdk/inc/replapi.h94
-rw-r--r--public/sdk/inc/resource.hxx211
-rw-r--r--public/sdk/inc/restrict.hxx1662
-rw-r--r--public/sdk/inc/richedit.h1028
-rw-r--r--public/sdk/inc/richole.h160
-rw-r--r--public/sdk/inc/rot.h22
-rw-r--r--public/sdk/inc/rpc.h126
-rw-r--r--public/sdk/inc/rpcdce.h1618
-rw-r--r--public/sdk/inc/rpcdcep.h415
-rw-r--r--public/sdk/inc/rpcndr.h2630
-rw-r--r--public/sdk/inc/rpcnsi.h509
-rw-r--r--public/sdk/inc/rpcnsip.h72
-rw-r--r--public/sdk/inc/rpcnterr.h33
-rw-r--r--public/sdk/inc/rpcproxy.h586
-rw-r--r--public/sdk/inc/rpcwdt.h431
-rw-r--r--public/sdk/inc/rtstg.h22
-rw-r--r--public/sdk/inc/runobj.h22
-rw-r--r--public/sdk/inc/safepnt.hxx957
-rw-r--r--public/sdk/inc/scode.h18
-rw-r--r--public/sdk/inc/scrnsave.h192
-rw-r--r--public/sdk/inc/secdes.hxx43
-rw-r--r--public/sdk/inc/secext.h140
-rw-r--r--public/sdk/inc/secobjs.h45
-rw-r--r--public/sdk/inc/secpkg.h740
-rw-r--r--public/sdk/inc/secpri.h43
-rw-r--r--public/sdk/inc/security.h93
-rw-r--r--public/sdk/inc/sedapi.h743
-rw-r--r--public/sdk/inc/sem.hxx20
-rw-r--r--public/sdk/inc/sem32.hxx661
-rw-r--r--public/sdk/inc/serialz.h145
-rw-r--r--public/sdk/inc/setupapi.h3865
-rw-r--r--public/sdk/inc/setupbat.h479
-rw-r--r--public/sdk/inc/setupxrc.h52
-rw-r--r--public/sdk/inc/shellapi.h516
-rw-r--r--public/sdk/inc/shlguid.h100
-rw-r--r--public/sdk/inc/shlobj.h2508
-rw-r--r--public/sdk/inc/shlwapi.h196
-rw-r--r--public/sdk/inc/sifmt.h29
-rw-r--r--public/sdk/inc/sift.hxx71
-rw-r--r--public/sdk/inc/simbad.h177
-rw-r--r--public/sdk/inc/snmp.h432
-rw-r--r--public/sdk/inc/spseal.h63
-rw-r--r--public/sdk/inc/srvhdl.h983
-rw-r--r--public/sdk/inc/srvhdl.idl347
-rw-r--r--public/sdk/inc/sslsp.h149
-rw-r--r--public/sdk/inc/sspi.h1601
-rw-r--r--public/sdk/inc/sstream.hxx120
-rw-r--r--public/sdk/inc/stdclass.hxx267
-rw-r--r--public/sdk/inc/stdobj.hxx432
-rw-r--r--public/sdk/inc/stgint.h68
-rw-r--r--public/sdk/inc/stgprop.h49
-rw-r--r--public/sdk/inc/stgvar.hxx604
-rw-r--r--public/sdk/inc/stgvara.hxx430
-rw-r--r--public/sdk/inc/stgvarb.hxx95
-rw-r--r--public/sdk/inc/storag.h22
-rw-r--r--public/sdk/inc/storage.h15
-rw-r--r--public/sdk/inc/storext.h476
-rw-r--r--public/sdk/inc/storext.idl108
-rw-r--r--public/sdk/inc/stream.h22
-rw-r--r--public/sdk/inc/stubb.h22
-rw-r--r--public/sdk/inc/subauth.h271
-rw-r--r--public/sdk/inc/svcguid.h342
-rw-r--r--public/sdk/inc/sysmgmt.h470
-rw-r--r--public/sdk/inc/syssetup.h271
-rw-r--r--public/sdk/inc/tapi.h4713
-rw-r--r--public/sdk/inc/textserv.h441
-rw-r--r--public/sdk/inc/tnef.h371
-rw-r--r--public/sdk/inc/tom.h694
-rw-r--r--public/sdk/inc/transact.h3981
-rw-r--r--public/sdk/inc/tspi.h1552
-rw-r--r--public/sdk/inc/tuple.h243
-rw-r--r--public/sdk/inc/unknwn.h341
-rw-r--r--public/sdk/inc/unknwn.idl75
-rw-r--r--public/sdk/inc/urlmon.h2362
-rw-r--r--public/sdk/inc/userenv.h154
-rw-r--r--public/sdk/inc/variant.h15
-rw-r--r--public/sdk/inc/vddsvc.h349
-rw-r--r--public/sdk/inc/vdmdbg.h529
-rw-r--r--public/sdk/inc/verinfo.h22
-rw-r--r--public/sdk/inc/vfw.h3558
-rw-r--r--public/sdk/inc/vquery.hxx190
-rw-r--r--public/sdk/inc/vwobj.h22
-rw-r--r--public/sdk/inc/vwobj2.h22
-rw-r--r--public/sdk/inc/warning.h35
-rw-r--r--public/sdk/inc/wdbgexts.h519
-rw-r--r--public/sdk/inc/wfext.h185
-rw-r--r--public/sdk/inc/winbase.h7745
-rw-r--r--public/sdk/inc/wincon.h726
-rw-r--r--public/sdk/inc/wincrypt.h623
-rw-r--r--public/sdk/inc/windbgkd.h881
-rw-r--r--public/sdk/inc/windef.h309
-rw-r--r--public/sdk/inc/windows.h180
-rw-r--r--public/sdk/inc/windowsx.h1284
-rw-r--r--public/sdk/inc/windowsx.h161208
-rw-r--r--public/sdk/inc/winerror.dbg1077
-rw-r--r--public/sdk/inc/winerror.h10179
-rw-r--r--public/sdk/inc/wingdi.h4005
-rw-r--r--public/sdk/inc/wininet.h2510
-rw-r--r--public/sdk/inc/winioctl.h822
-rw-r--r--public/sdk/inc/winmm.h14
-rw-r--r--public/sdk/inc/winnetwk.h820
-rw-r--r--public/sdk/inc/winnls.h1141
-rw-r--r--public/sdk/inc/winnls32.h124
-rw-r--r--public/sdk/inc/winnt.h5133
-rw-r--r--public/sdk/inc/winntos2.sed2
-rw-r--r--public/sdk/inc/winperf.h561
-rw-r--r--public/sdk/inc/winreg.h779
-rw-r--r--public/sdk/inc/winsock.h959
-rw-r--r--public/sdk/inc/winsock2.h3597
-rw-r--r--public/sdk/inc/winspool.h2136
-rw-r--r--public/sdk/inc/winsvc.h751
-rw-r--r--public/sdk/inc/wintrust.h311
-rw-r--r--public/sdk/inc/winuser.h8676
-rw-r--r--public/sdk/inc/winver.h295
-rw-r--r--public/sdk/inc/winwlx.h698
-rw-r--r--public/sdk/inc/wnapidec.inc88
-rw-r--r--public/sdk/inc/wownt16.h120
-rw-r--r--public/sdk/inc/wownt32.h254
-rw-r--r--public/sdk/inc/ws2spi.h955
-rw-r--r--public/sdk/inc/ws2tcpip.h71
-rw-r--r--public/sdk/inc/wshisotp.h91
-rw-r--r--public/sdk/inc/wsipx.h58
-rw-r--r--public/sdk/inc/wsnetbs.h69
-rw-r--r--public/sdk/inc/wsnwlink.h279
-rw-r--r--public/sdk/inc/wsvns.h39
-rw-r--r--public/sdk/inc/wtypes.h1287
-rw-r--r--public/sdk/inc/wtypes.idl1339
-rw-r--r--public/sdk/inc/zext.h603
-rw-r--r--public/sdk/lib/alpha/usa/baseaddr.txt1538
-rw-r--r--public/sdk/lib/coffbase.txt903
-rw-r--r--public/sdk/lib/i386/crtdll.pdbbin0 -> 86016 bytes
-rw-r--r--public/sdk/lib/i386/crtdlld.pdbbin0 -> 2437120 bytes
-rw-r--r--public/sdk/lib/i386/libc.pdbbin0 -> 86016 bytes
-rw-r--r--public/sdk/lib/i386/libcd.pdbbin0 -> 69632 bytes
-rw-r--r--public/sdk/lib/i386/libcmt.pdbbin0 -> 86016 bytes
-rw-r--r--public/sdk/lib/i386/libcmtd.pdbbin0 -> 69632 bytes
-rw-r--r--public/sdk/lib/i386/mfcs40.pdbbin0 -> 585728 bytes
-rw-r--r--public/sdk/lib/i386/mfcs40d.pdbbin0 -> 593920 bytes
-rw-r--r--public/sdk/lib/i386/mfcs40u.pdbbin0 -> 585728 bytes
-rw-r--r--public/sdk/lib/i386/mfcs40ud.pdbbin0 -> 602112 bytes
-rw-r--r--public/sdk/lib/i386/mfcs42.pdbbin0 -> 708608 bytes
-rw-r--r--public/sdk/lib/i386/mfcs42d.pdbbin0 -> 716800 bytes
-rw-r--r--public/sdk/lib/i386/mfcs42u.pdbbin0 -> 708608 bytes
-rw-r--r--public/sdk/lib/i386/mfcs42ud.pdbbin0 -> 716800 bytes
-rw-r--r--public/sdk/lib/i386/msvcrt.pdbbin0 -> 86016 bytes
-rw-r--r--public/sdk/lib/i386/msvcrtd.pdbbin0 -> 2437120 bytes
-rw-r--r--public/sdk/lib/i386/nafxcw.pdbbin0 -> 569344 bytes
-rw-r--r--public/sdk/lib/i386/nafxcwd.pdbbin0 -> 577536 bytes
-rw-r--r--public/sdk/lib/i386/uafxcw.pdbbin0 -> 569344 bytes
-rw-r--r--public/sdk/lib/i386/uafxcwd.pdbbin0 -> 577536 bytes
-rw-r--r--public/sdk/lib/i386/usa/baseaddr.txt1463
-rw-r--r--public/sdk/lib/mips/usa/baseaddr.txt1542
-rw-r--r--public/sdk/lib/ossinfobin0 -> 449 bytes
-rw-r--r--public/sdk/lib/placefil.bak4636
-rw-r--r--public/sdk/lib/placefil.new4839
-rw-r--r--public/sdk/lib/placefil.txt4726
-rw-r--r--public/sdk/lib/ppc/int64.lib.vcbin0 -> 17428 bytes
-rw-r--r--public/sdk/lib/ppc/int64.mclbin0 -> 36756 bytes
-rw-r--r--public/sdk/lib/ppc/usa/baseaddr.txt1525
-rw-r--r--public/sdk/lib/system.mdbbin0 -> 65536 bytes
-rw-r--r--public/sdk/rpc16/ct/errdb.h2193
-rw-r--r--public/sdk/rpc16/ct/errors.hxx548
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16c1.map222
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16c1.rpcbin0 -> 3399 bytes
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16c3.map335
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16c3.rpcbin0 -> 10559 bytes
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16c4.map284
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16c4.rpcbin0 -> 6428 bytes
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16c5.map216
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16c5.rpcbin0 -> 5965 bytes
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16c6.map330
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16c6.rpcbin0 -> 9365 bytes
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16dg3.map351
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16dg3.rpcbin0 -> 11171 bytes
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16dg6.map329
-rw-r--r--public/sdk/rpc16/dos/dll/rpc16dg6.rpcbin0 -> 9183 bytes
-rw-r--r--public/sdk/rpc16/dos/dll/rpcns.map305
-rw-r--r--public/sdk/rpc16/dos/dll/rpcns.rpcbin0 -> 9780 bytes
-rw-r--r--public/sdk/rpc16/dos/dll/rpcnslm.map364
-rw-r--r--public/sdk/rpc16/dos/dll/rpcnslm.rpcbin0 -> 23527 bytes
-rw-r--r--public/sdk/rpc16/dos/dll/rpcnsmgm.map387
-rw-r--r--public/sdk/rpc16/dos/dll/rpcnsmgm.rpcbin0 -> 20524 bytes
-rw-r--r--public/sdk/rpc16/dos/dll/security.map353
-rw-r--r--public/sdk/rpc16/dos/dll/security.rpcbin0 -> 16000 bytes
-rw-r--r--public/sdk/rpc16/dos/inc/midles.h218
-rw-r--r--public/sdk/rpc16/dos/inc/rpc.h64
-rw-r--r--public/sdk/rpc16/dos/inc/rpcdce.h1618
-rw-r--r--public/sdk/rpc16/dos/inc/rpcdcep.h415
-rw-r--r--public/sdk/rpc16/dos/inc/rpcerr.h188
-rw-r--r--public/sdk/rpc16/dos/inc/rpcndr.h2630
-rw-r--r--public/sdk/rpc16/dos/inc/rpcnsi.h509
-rw-r--r--public/sdk/rpc16/dos/inc/rpcnsip.h72
-rw-r--r--public/sdk/rpc16/dos/inc/rpcx86.h74
-rw-r--r--public/sdk/rpc16/mac/inc/midles.h218
-rw-r--r--public/sdk/rpc16/mac/inc/rpc.h71
-rw-r--r--public/sdk/rpc16/mac/inc/rpcdce.h1618
-rw-r--r--public/sdk/rpc16/mac/inc/rpcdcep.h415
-rw-r--r--public/sdk/rpc16/mac/inc/rpcerr.h188
-rw-r--r--public/sdk/rpc16/mac/inc/rpcmac.h121
-rw-r--r--public/sdk/rpc16/mac/inc/rpcndr.h2630
-rw-r--r--public/sdk/rpc16/mac/inc/rpcnsi.h509
-rw-r--r--public/sdk/rpc16/mac/inc/rpcnsip.h72
-rw-r--r--public/sdk/rpc16/mppc/inc/midles.h218
-rw-r--r--public/sdk/rpc16/mppc/inc/rpc.h71
-rw-r--r--public/sdk/rpc16/mppc/inc/rpcdce.h1618
-rw-r--r--public/sdk/rpc16/mppc/inc/rpcdcep.h415
-rw-r--r--public/sdk/rpc16/mppc/inc/rpcerr.h188
-rw-r--r--public/sdk/rpc16/mppc/inc/rpcmac.h121
-rw-r--r--public/sdk/rpc16/mppc/inc/rpcndr.h2630
-rw-r--r--public/sdk/rpc16/mppc/inc/rpcnsi.h509
-rw-r--r--public/sdk/rpc16/mppc/inc/rpcnsip.h72
-rw-r--r--public/sdk/rpc16/sdk/dnetapi.dl_bin0 -> 525 bytes
-rw-r--r--public/sdk/rpc16/sdk/drpc.h_bin0 -> 636 bytes
-rw-r--r--public/sdk/rpc16/sdk/drpc.li_bin0 -> 173479 bytes
-rw-r--r--public/sdk/rpc16/sdk/drpcndr.li_bin0 -> 549 bytes
-rw-r--r--public/sdk/rpc16/sdk/midles.h_bin0 -> 1889 bytes
-rw-r--r--public/sdk/rpc16/sdk/mrpc.h_bin0 -> 740 bytes
-rw-r--r--public/sdk/rpc16/sdk/mrpc.li_bin0 -> 145206 bytes
-rw-r--r--public/sdk/rpc16/sdk/mscuistf.dl_bin0 -> 18719 bytes
-rw-r--r--public/sdk/rpc16/sdk/msdetect.inc661
-rw-r--r--public/sdk/rpc16/sdk/readme.txt54
-rw-r--r--public/sdk/rpc16/sdk/rpcdce.h_bin0 -> 8741 bytes
-rw-r--r--public/sdk/rpc16/sdk/rpcdcep.h_bin0 -> 3250 bytes
-rw-r--r--public/sdk/rpc16/sdk/rpcerr.h_bin0 -> 2454 bytes
-rw-r--r--public/sdk/rpc16/sdk/rpcmac.h_bin0 -> 987 bytes
-rw-r--r--public/sdk/rpc16/sdk/rpcndr.h_bin0 -> 19307 bytes
-rw-r--r--public/sdk/rpc16/sdk/rpcnsi.h_bin0 -> 2977 bytes
-rw-r--r--public/sdk/rpc16/sdk/rpcnsip.h_bin0 -> 688 bytes
-rw-r--r--public/sdk/rpc16/sdk/rpcsdk.in_bin0 -> 928 bytes
-rw-r--r--public/sdk/rpc16/sdk/rpcsdk.mst786
-rw-r--r--public/sdk/rpc16/sdk/rpcx86.h_bin0 -> 670 bytes
-rw-r--r--public/sdk/rpc16/sdk/setup.lst20
-rw-r--r--public/sdk/rpc16/sdk/setupapi.inc1803
-rw-r--r--public/sdk/rpc16/sdk/setuprun.lst21
-rw-r--r--public/sdk/rpc16/sdk/uuidgen.ex_bin0 -> 103184 bytes
-rw-r--r--public/sdk/rpc16/sdk/wrpc.h_bin0 -> 715 bytes
-rw-r--r--public/sdk/rpc16/sdk/wrpc.li_bin0 -> 14376 bytes
-rw-r--r--public/sdk/rpc16/sdk/wrpcndr.li_bin0 -> 555 bytes
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c1.map92
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c1.symbin0 -> 468 bytes
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c3.map443
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c3.symbin0 -> 2260 bytes
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c4.map415
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c4.symbin0 -> 2196 bytes
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c5.map129
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c5.symbin0 -> 900 bytes
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c6.map314
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c6.symbin0 -> 3316 bytes
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c8.map176
-rw-r--r--public/sdk/rpc16/win/dll/rpc16c8.symbin0 -> 916 bytes
-rw-r--r--public/sdk/rpc16/win/dll/rpc16dg3.map156
-rw-r--r--public/sdk/rpc16/win/dll/rpc16dg3.symbin0 -> 820 bytes
-rw-r--r--public/sdk/rpc16/win/dll/rpc16dg6.map319
-rw-r--r--public/sdk/rpc16/win/dll/rpc16dg6.symbin0 -> 3492 bytes
-rw-r--r--public/sdk/rpc16/win/dll/rpcns1.map437
-rw-r--r--public/sdk/rpc16/win/dll/rpcns1.symbin0 -> 3764 bytes
-rw-r--r--public/sdk/rpc16/win/dll/rpcrt1.map2840
-rw-r--r--public/sdk/rpc16/win/dll/rpcrt1.symbin0 -> 36676 bytes
-rw-r--r--public/sdk/rpc16/win/dll/security.map536
-rw-r--r--public/sdk/rpc16/win/dll/security.symbin0 -> 3476 bytes
-rw-r--r--public/sdk/rpc16/win/inc/midles.h218
-rw-r--r--public/sdk/rpc16/win/inc/rpc.h69
-rw-r--r--public/sdk/rpc16/win/inc/rpcdce.h1618
-rw-r--r--public/sdk/rpc16/win/inc/rpcdcep.h415
-rw-r--r--public/sdk/rpc16/win/inc/rpcerr.h188
-rw-r--r--public/sdk/rpc16/win/inc/rpcndr.h2630
-rw-r--r--public/sdk/rpc16/win/inc/rpcnsi.h509
-rw-r--r--public/sdk/rpc16/win/inc/rpcnsip.h72
-rw-r--r--public/sdk/rpc16/win/inc/rpcx86.h74
-rw-r--r--public/sdk/rpc16/win/lib/winmain.def16
-rw-r--r--public/sdk/rpc16/win/lib/winmain.resbin0 -> 83 bytes
-rw-r--r--public/tools/alphased.cmd6
-rw-r--r--public/tools/bldtools.reb8
-rw-r--r--public/tools/chkquota.cmd9
-rw-r--r--public/tools/csrss.reb9
-rw-r--r--public/tools/doctor.rtf99
-rw-r--r--public/tools/findadd.cmd2
-rw-r--r--public/tools/fixdoc.cmd19
-rw-r--r--public/tools/inout.cmd2
-rw-r--r--public/tools/kbd.reb33
-rw-r--r--public/tools/known.reb33
-rw-r--r--public/tools/mpntstat.cmd68
-rw-r--r--public/tools/myenlist.cmd45
-rw-r--r--public/tools/net.reb19
-rw-r--r--public/tools/never.reb5
-rw-r--r--public/tools/ntadd.cmd13
-rw-r--r--public/tools/ntclnsr1.txt84
-rw-r--r--public/tools/ntdefect.cmd16
-rw-r--r--public/tools/ntdel.cmd15
-rw-r--r--public/tools/ntenv.cmd50
-rw-r--r--public/tools/ntlock.cmd8
-rw-r--r--public/tools/ntlocked.cmd6
-rw-r--r--public/tools/ntlog.cmd27
-rw-r--r--public/tools/ntnewver.cmd12
-rw-r--r--public/tools/ntoskrnl.reb3
-rw-r--r--public/tools/ntprojs.cmd26
-rw-r--r--public/tools/ntrebase.cmd225
-rw-r--r--public/tools/ntrelenv.cmd3
-rw-r--r--public/tools/ntrest.cmd48
-rw-r--r--public/tools/ntruser.cmd5
-rw-r--r--public/tools/ntsave.cmd94
-rw-r--r--public/tools/ntslmck.cmd26
-rw-r--r--public/tools/ntslmmov.cmd30
-rw-r--r--public/tools/ntslmop.cmd105
-rw-r--r--public/tools/ntstat.cmd38
-rw-r--r--public/tools/ntstatxx.cmd39
-rw-r--r--public/tools/ntsync.cmd47
-rw-r--r--public/tools/ntunlock.cmd6
-rw-r--r--public/tools/ntuser.cmd60
-rw-r--r--public/tools/ntvdm.reb5
-rw-r--r--public/tools/printer.reb6
-rw-r--r--public/tools/projlist.cmd5
-rw-r--r--public/tools/razzle.cmd37
-rw-r--r--public/tools/razzle.icobin0 -> 1056 bytes
-rw-r--r--public/tools/razzle0.cmd3
-rw-r--r--public/tools/razzle0.icobin0 -> 1056 bytes
-rw-r--r--public/tools/razzle1.cmd3
-rw-r--r--public/tools/razzle1.icobin0 -> 1056 bytes
-rw-r--r--public/tools/razzle2.cmd3
-rw-r--r--public/tools/razzle2.icobin0 -> 1056 bytes
-rw-r--r--public/tools/razzleb.cmd10
-rw-r--r--public/tools/slmtouch.cmd3
-rw-r--r--public/tools/spltenls.cmd46
-rw-r--r--public/tools/spltstat.cmd82
-rw-r--r--public/tools/statkill.txt10
-rw-r--r--public/tools/version.cmd39
-rw-r--r--public/tools/video.reb11
-rw-r--r--public/tools/wx86.reb2
-rw-r--r--public/tools/wx86thnk.reb39
1307 files changed, 609667 insertions, 0 deletions
diff --git a/public/oak/bin/_default.pif b/public/oak/bin/_default.pif
new file mode 100644
index 000000000..18c9f81c5
--- /dev/null
+++ b/public/oak/bin/_default.pif
Binary files differ
diff --git a/public/oak/bin/alphamk.inc b/public/oak/bin/alphamk.inc
new file mode 100644
index 000000000..82b6de990
--- /dev/null
+++ b/public/oak/bin/alphamk.inc
@@ -0,0 +1,245 @@
+!IF 0
+
+Copyright (c) 1994-1996 Microsoft Corporation
+
+Module Name:
+
+ alphamk.inc
+
+Abstract:
+
+ This module contains the ALPHA specific build controls. It is included
+ by makefile.def.
+
+Revision History:
+
+!ENDIF
+
+#
+# Alpha option control
+#
+
+!undef USE_MAPSYM
+
+UMBASE=$(UMBASE:*=alpha)
+UMLIBS=$(UMLIBS:*=alpha)
+NTRES=$(NTRES:*=alpha)
+UMRES=$(UMRES:*=alpha)
+UMOBJS=$(UMOBJS:*=alpha)
+LINKLIBS=$(LINKLIBS:*=alpha)
+GDI_DRIVER_LIBS=$(GDI_DRIVER_LIBS:*=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)
+MFC_STATIC_LIB=$(MFC_STATIC_LIB:*=alpha)
+CRT_LIB_PATH=$(CRT_LIB_PATH:*=alpha)
+SDK_LIB_PATH=$(SDK_LIB_PATH:*=alpha)
+ORDER=$(ORDER:*=alpha)
+
+!ifdef NTTARGETFILES
+NTTARGETFILES=$(NTTARGETFILES:*=alpha)
+!endif
+!ifdef NTTARGETFILE0
+NTTARGETFILE0=$(NTTARGETFILE0:*=alpha)
+!endif
+!ifdef NTTARGETFILE1
+NTTARGETFILE1=$(NTTARGETFILE1:*=alpha)
+!endif
+
+!IF "$(GPSIZE)" != "0"
+
+!ifdef DEBUG_CRTS
+LIBC_LIB=$(SDK_LIB_PATH)\smalld.lib $(LIBC_LIB)
+!else
+LIBC_LIB=$(SDK_LIB_PATH)\small.lib $(LIBC_LIB)
+!endif
+LINKGPSIZE=-gpsize:$(GPSIZE)
+
+!ENDIF
+
+ENTRY_SUFFIX=
+GDI_ENTRY_SUFFIX=
+
+
+!IFDEF ALPHA_WARNING_LEVEL
+MSC_WARNING_LEVEL=$(ALPHA_WARNING_LEVEL)
+!ENDIF
+
+!ifdef ALPHA_PERFFLAGS
+PERFFLAGS = $(ALPHA_PERFFLAGS)
+!endif
+
+# Set MSC_OPTIMIZATION.
+# Order of precedence:
+# Platform specific override
+# Environment variable
+# System Default
+
+!if defined(ALPHA_OPTIMIZATION)
+MSC_OPTIMIZATION=$(ALPHA_OPTIMIZATION)
+!elseif !defined(MSC_OPTIMIZATION)
+MSC_OPTIMIZATION=$(DEFAULT_MSC_OPT)
+!endif
+
+DBGFLAGS=$(DBGFLAGS) $(MSC_OPTIMIZATION)
+
+!IFDEF ALPHA_CPPFLAGS
+MSC_CPPFLAGS=$(ALPHA_CPPFLAGS)
+!ENDIF
+
+ALPHA_AS=asaxp -nologo
+
+ALPHA_START_FILE=start.obj
+
+!ifndef USE_PDB_TO_COMPILE
+DBGFLAGS=$(DBGFLAGS:/Zi=-Z7)
+DBGFLAGS=$(DBGFLAGS:-Zi=-Z7)
+!else
+! if "$(TARGETTYPE)" == "LIBRARY"
+DBGFLAGS=$(DBGFLAGS) /Fd$(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).pdb
+! else
+DBGFLAGS=$(DBGFLAGS) /Fd$(MAKEDIR)\$(_OBJ_DIR)\alpha^\
+! endif
+!endif
+
+!ifdef BROWSER_INFO
+DBGFLAGS=$(DBGFLAGS) /FR$(MAKEDIR)\$(_OBJ_DIR)\alpha^\
+!endif
+
+!IFDEF NTBBT
+DBGFLAGS=$(DBGFLAGS) /Z7 /QAl
+ADBGFLAGS=-Zi
+LINKER_FLAGS=$(LINKER_FLAGS) -debug:full -debugtype:cv,fixup
+USE_PDB=1
+!ENDIF
+
+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)
+
+!ifdef NO_READONLY_STRINGS
+STRING_POOLING = /Gf
+!else
+STRING_POOLING = /GF
+!endif
+
+!ifdef USE_NATIVE_EH
+EH_FLAGS=/GX /GR
+!else
+EH_FLAGS=/GX- /GR-
+!endif
+
+STDFLAGS= /c /Zel /Zp8 /Gy $(EH_FLAGS) $(STRING_POOLING) $(MSC_WARNING_LEVEL) $(MFC_FLAGS)
+
+CDEFINES=$(STD_DEFINES) $(TARGET_DBG_DEFINES) $(ENV_DEFINES)
+CFLAGS=$(ALPHA_FLAGS) $(NTALPHAFLAGS) $(STDFLAGS) $(DBGFLAGS) $(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
+
+NP_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(COMPILER_WARNINGS)
+
+C_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED)
+CXX_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED_CXX)
+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_CXX_MSG=ClAlpha $< " $(CXX_COMPILER) "
+
+ECHO_PRECOMPILED_MSG1=CpAlpha $(PRECOMPILED_INCLUDE) \
+ "$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) $(PRECOMPILED_SOURCEFILE) \
+ $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)"
+
+ECHO_PRECOMPILED_MSG2=CpAlpha $(PRECOMPILED_INCLUDE) \
+ "$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) \
+ $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)"
+
+{..\alpha\}.s{$(_OBJ_DIR)\alpha\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsAlpha $< " $(ALPHA_ASSEMBLER) "
+ @$(ALPHA_ASSEMBLER) -o $@ $(MAKEDIR)\..\alpha\$(<F)
+
+{alpha\}.s{$(_OBJ_DIR)\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_DIR)\alpha\$(<B).o $(MAKEDIR)\$(<B).c
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+ @del $(_OBJ_DIR)\alpha\$(<B).o
+
+{}.il{$(_OBJ_DIR)\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
+
+!IFDEF CAIRO_PRODUCT
+!IFDEF _CAIROALPHATREE
+_NTTREE=$(_CAIROALPHATREE)
+_NTTREE_NO_SPLIT=$(_CAIROALPHATREE_NS)
+!ENDIF
+!ELSE
+!IFDEF _NTALPHATREE
+_NTTREE=$(_NTALPHATREE)
+_NTTREE_NO_SPLIT=$(_NTALPHATREE_NS)
+!ENDIF
+!ENDIF
+
+!IFDEF _NTALPHALIBS
+_NTLIBS=$(_NTALPHALIBS)
+!ENDIF
+
+COPYDST=$(ALPHACOPYDST)
+
+LIB_COPY=ntalphacp.cmd
+
+NTTEST_LINK_OPTIONS= -base:0x80080000 -fixed -entry:KiSystemStartup
diff --git a/public/oak/bin/cairo.ini b/public/oak/bin/cairo.ini
new file mode 100644
index 000000000..b710de6c2
--- /dev/null
+++ b/public/oak/bin/cairo.ini
@@ -0,0 +1,11 @@
+//
+// This file defines the additional types for OLE introduced by Cairo, as
+// a temporary measure until we are fully integrated, and the types don't
+// change three times a week.
+//
+
+#include "ofs.ini"
+#include "dsys.ini"
+#include "oleext.ini"
+#include "sysmgmt.ini"
+#include "shell.ini"
diff --git a/public/oak/bin/cpipgaux.cmd b/public/oak/bin/cpipgaux.cmd
new file mode 100644
index 000000000..5cf9cb152
--- /dev/null
+++ b/public/oak/bin/cpipgaux.cmd
@@ -0,0 +1,57 @@
+@echo off
+setlocal
+rem
+rem This file is a support script that copies files from the NT build tree
+rem to the IPG release tree. This script is invoked by the CPIPG.CMD script
+rem file that is produced by the -G switch to BUILD.EXE
+rem
+rem Usage: call cpipgaux.cmd BuiltTreePath ObjSubDirPath ImageFileName {FilesToCopy...}
+rem
+rem where:
+rem BuildTreePath is the path to the directory that built the FilesToCopy
+rem
+rem ObjSubDirPath is the subdirectory of BuildTreePath that contains the object files
+rem
+rem ImageFileName is the name of the image file that contains resources.
+rem
+rem FilesToCopy is a list of one or more files that need to be copied to the
+rem IPG release tree. This list will include the .res file and all
+rem supporting .rc, .dlg, and .mc files.
+rem
+rem This command script uses the following environment variables to control its work:
+rem
+rem _NTIPGTREE points to the root of the enlistment in \\INTLNT\NT USA project
+rem
+if "%_NTIPGDRIVE%" == "" goto badenv1
+if "%_NTIPGTREE%" == "" goto badenv2
+%_NTIPGDRIVE%
+cd %_NTIPGTREE%
+if EXIST %3\slm.ini goto gotdir
+md %3 >nul 2>nul
+echo Making new component - %3
+:gotdir
+cd %3
+set _srcdir=%1
+echo Copying files for %3
+:dofiles
+if "%4" == "" goto gotfiles
+copy %4 >nul 2>nul
+if NOT ERRORLEVEL 1 goto nextfile
+copy %_NTDRIVE%%4 >nul 2>nul
+if NOT ERRORLEVEL 1 goto nextfile
+copy %_srcdir%\%4 >nul 2>nul
+if NOT ERRORLEVEL 1 goto nextfile
+echo Unable to copy %4 from %_srcdir%
+:nextfile
+shift
+goto dofiles
+:gotfiles
+goto done
+:badenv1
+echo _NTIPGDRIVE environment variable is not defined.
+goto done
+:badenv2
+echo _NTIPGTREE environment variable is not defined.
+goto done
+:done
+endlocal
diff --git a/public/oak/bin/default b/public/oak/bin/default
new file mode 100644
index 000000000..672b619f5
--- /dev/null
+++ b/public/oak/bin/default
Binary files differ
diff --git a/public/oak/bin/default.ini b/public/oak/bin/default.ini
new file mode 100644
index 000000000..5a58feeea
--- /dev/null
+++ b/public/oak/bin/default.ini
@@ -0,0 +1,1765 @@
+//
+// This file defines the default contents of the THE_USER hive in the Windows NT
+// registry.
+//
+
+//
+// predefined ACEs for creating ACLs
+// R == Read (values & subkeys)
+// W == Write (values & subkeys, create keys)
+// D == Delete keys
+// Full == All access
+//
+#define AdminFull 1
+#define AdminR 2
+#define AdminRW 3
+#define AdminRWD 4
+#define CreatorFull 5
+#define CreatorRW 6
+#define WorldFull 7
+#define WorldR 8
+#define WorldRW 9
+#define WorldRWD 10
+#define PowerFull 11
+#define PowerRW 12
+#define PowerRWD 13
+#define SystemOpFull 14
+#define SystemOpRW 15
+#define SystemOpRWD 16
+#define SystemFull 17
+#define SystemRW 18
+#define SystemR 19
+#define AdminRWX 20
+#define InteractiveFull 21
+#define InteractiveR 22
+#define InteractiveRW 23
+#define InteractiveRWD 24
+
+.Default [AdminFull SystemFull WorldR]
+
+ AppEvents
+ EventLabels
+ AppGPFault
+ = REG_SZ "Program error"
+ Close
+ = REG_SZ "Close program"
+ EmptyRecycleBin
+ = REG_SZ "Empty Recycle Bin"
+ Maximize
+ = REG_SZ "Maximize"
+ MenuCommand
+ = REG_SZ "Menu command"
+ MenuPopup
+ = REG_SZ "Menu popup"
+ Minimize
+ = REG_SZ "Minimize"
+ Open
+ = REG_SZ "Open program"
+ RestoreDown
+ = REG_SZ "Restore Down"
+ RestoreUp
+ = REG_SZ "Restore Up"
+ SystemAsterisk
+ = REG_SZ "Asterisk"
+ SystemDefault
+ = REG_SZ "Default sound"
+ SystemExclamation
+ = REG_SZ "Exclamation"
+ SystemExit
+ = REG_SZ "Exit Windows NT"
+ SystemHand
+ = REG_SZ "Critical Stop"
+ SystemQuestion
+ = REG_SZ "Question"
+ SystemStart
+ = REG_SZ "Start Windows NT"
+ Schemes
+ Names
+ .Default
+ = REG_SZ "Windows NT Default"
+ .None
+ = REG_SZ "No Sounds"
+ Apps
+ .Default
+ = REG_SZ "Windows NT"
+ AppGPFault
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ Close
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ Maximize
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ MenuCommand
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ MenuPopup
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ Minimize
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ Open
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ RestoreDown
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ RestoreUp
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ SystemAsterisk
+ .Default
+ = REG_SZ "chord.wav"
+ .Current
+ = REG_SZ "chord.wav"
+ SystemDefault
+ .Default
+ = REG_SZ "ding.wav"
+ .Current
+ = REG_SZ "ding.wav"
+ SystemExclamation
+ .Default
+ = REG_SZ "chord.wav"
+ .Current
+ = REG_SZ "chord.wav"
+ SystemExit
+ .Default
+ = REG_SZ "Windows NT Logoff Sound.wav"
+ .Current
+ = REG_SZ "Windows NT Logoff Sound.wav"
+ SystemHand
+ .Default
+ = REG_SZ "chord.wav"
+ .Current
+ = REG_SZ "chord.wav"
+ SystemQuestion
+ .Default
+ = REG_SZ "chord.wav"
+ .Current
+ = REG_SZ "chord.wav"
+ SystemStart
+ .Default
+ = REG_SZ "Windows NT Logon Sound.wav"
+ .Current
+ = REG_SZ "Windows NT Logon Sound.wav"
+ Explorer
+ = REG_SZ "Windows NT Explorer"
+ EmptyRecycleBin
+ .Default
+ = REG_SZ "ding.wav"
+ .Current
+ = REG_SZ "ding.wav"
+ MPlay32
+ = REG_SZ "Media Player"
+ Close
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ Open
+ .Default
+ = REG_SZ ""
+ .Current
+ = REG_SZ ""
+ SndRec32
+ = REG_SZ "Sound Recorder"
+ Close
+ .Current
+ = REG_SZ ""
+ Open
+ .Current
+ = REG_SZ ""
+
+ Environment
+
+ Control Panel
+ Appearance
+ Schemes
+ Brick = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF4 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x77F09A58 0x003F003F 0x003F003F \
+ 0x00000000 0x00000000 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x00000000 \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x001400B8 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D2E0E1 0x00000042 0x02000080 \
+ 0x0261898D 0x02A5BFC2 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02D2E0E1 0x02A5BFC2 \
+ 0x02A5BFC2 0x02D2E0E1 0x0261898D 0x02FFFFFF \
+ 0x02A5BFC2 0x0261898D 0x0261898D 0x02000000 \
+ 0x02D2E0E1 0x02D2E0E1 0x02000000 0x02A5BFC2 \
+ 0x02000080 0x02D2E0E1
+ Maple = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x00000000 \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x001400B8 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D7ECF2 0x02000000 0x0246A6C6 \
+ 0x02A4A0A0 0x02AED8E6 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02AED8E6 \
+ 0x02AED8E6 0x02D7ECF2 0x0246A6C6 0x02000000 \
+ 0x02AED8E6 0x0246A6C6 0x0246A6C6 0x02000000 \
+ 0x02D7ECF2 0x02D7ECF2 0x02000000 0x02AED8E6 \
+ 0x02000000 0x02FFFFFF
+ Spruce = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000F \
+ 0x0000000F 0x00000012 0x00000012 0xFFFFFFF4 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x00000000 \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x001400B8 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D3E3D0 0x00213F21 0x02649759 \
+ 0x02808080 0x02A9C8A2 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02A9C8A2 \
+ 0x02A9C8A2 0x02D3E3D0 0x02649759 0x02FFFFFF \
+ 0x02A9C8A2 0x02649759 0x02649759 0x02000000 \
+ 0x02D3E3D0 0x02D3E3D0 0x02000000 0x02A9C8A2 \
+ 0x02000000 0x02FFFFFF
+ Teal (VGA) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x00000000 \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x001400B8 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x00404000 0x02808000 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02808080 0x02808000 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02F0FBFF 0x02FFFFFF 0x02000000 0x02C0C0C0 \
+ 0x02000000 0x02FFFFFF
+ Red, White, and Blue (VGA) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000013 0x00000013 0xFFFFFFF1 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000011 0x00000011 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00690054 0x0065006D 0x00200073 0x0065004E \
+ 0x00200077 0x006F0052 0x0061006D 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF3 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x00420000 0x02000080 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02FFFFFF 0x02000080 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02C0C0C0 0x02FFFFFF 0x02000000 0x02C0C0C0 \
+ 0x02800000 0x02FFFFFF
+ Wheat = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D0EEEE 0x001D4000 0x02008080 \
+ 0x0241BCBC 0x02A0DEDE 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02A0DEDE \
+ 0x02A0DEDE 0x02D0EEEE 0x02008080 0x02FFFFFF \
+ 0x02A0DEDE 0x0241BCBC 0x0241BCBC 0x02000000 \
+ 0x02FFFFFF 0x02D0EEEE 0x02000000 0x02A0DEDE \
+ 0x02000000 0x02FFFFFF
+ Pumpkin (large) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000015 \
+ 0x00000015 0x0000001A 0x0000001A 0xFFFFFFED \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000016 0x00000016 \
+ 0xFFFFFFF0 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000016 \
+ 0x00000016 0xFFFFFFF0 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF0 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF0 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02CFEAF5 0x00420042 0x022FA5D7 \
+ 0x02A4A0A0 0x029DD5EC 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x029DD5EC \
+ 0x029DD5EC 0x02CFEAF5 0x02800080 0x02FFFFFF \
+ 0x029DD5EC 0x022FA5D7 0x022FA5D7 0x02000000 \
+ 0x02CFEAF5 0x02CFEAF5 0x02000000 0x029DD5EC \
+ 0x02800080 0x02FFFFFF
+ Eggplant = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000010 \
+ 0x00000010 0x00000013 0x00000013 0xFFFFFFF1 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000011 0x00000011 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00690054 0x0065006D 0x00200073 0x0065004E \
+ 0x00200077 0x006F0052 0x0061006D 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF3 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02A8B090 0x00400040 0x02788058 \
+ 0x02A8B090 0x02A8B090 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02A8B090 \
+ 0x02A8B090 0x02808080 0x02788058 0x02FFFFFF \
+ 0x02A8B090 0x02788058 0x02788058 0x02000000 \
+ 0x02788058 0x02D8D8C8 0x02000000 0x02A8B090 \
+ 0x02800080 0x02FFFFFF
+ Rainy Day = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D9CCC1 0x02000000 0x027D654F \
+ 0x02808080 0x02B19983 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02B19983 \
+ 0x02B19983 0x02808080 0x027D654F 0x02FFFFFF \
+ 0x02B19983 0x027D654F 0x027D654F 0x02000000 \
+ 0x02D9CCC1 0x02D9CCC1 0x02000000 0x02B19983 \
+ 0x02000000 0x02FFFFFF
+ Desert = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02DDE6EA 0x02688DA2 0x02808000 \
+ 0x02688DA2 0x02BBCCD5 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02BBCCD5 \
+ 0x02BBCCD5 0x02688DA2 0x02808000 0x02FFFFFF \
+ 0x02BBCCD5 0x02688DA2 0x02688DA2 0x02000000 \
+ 0x02FFFFFF 0x02DDE6EA 0x02000000 0x02BBCCD5 \
+ 0x02000000 0x02FFFFFF
+ Marine (high color) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000D 0x0000000D \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x006D0053 \
+ 0x006C0061 0x0020006C 0x006F0046 0x0074006E \
+ 0x00000073 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D8E0C8 0x00474E2C 0x02800000 \
+ 0x02889048 0x02B8C088 0x02D8E0C8 0x02000000 \
+ 0x02000000 0x02000000 0x02C0C0C0 0x02B8C088 \
+ 0x02B8C088 0x00848D4B 0x02800000 0x02FFFFFF \
+ 0x02B8C088 0x02889048 0x02889048 0x02000000 \
+ 0x02C0C0C0 0x02D8E0C8 0x02000000 0x02B8C088 \
+ 0x02000000 0x02D8E0C8
+ Windows Standard (extra large) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000015 \
+ 0x00000015 0x00000018 0x00000018 0xFFFFFFED \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000012 0x00000012 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x006F0046 0x0074006E \
+ 0x00000073 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000015 \
+ 0x00000015 0xFFFFFFF0 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF0 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF0 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x02808000 0x02800000 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02808080 0x02800000 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02C0C0C0 0x02FFFFFF 0x02000000 0x02DFDFDF \
+ 0x02000000 0x00E1FFFF
+ Storm (VGA) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF5 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x02000000 0x02800080 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02808080 0x02800080 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02000000 0x02FFFFFF 0x02000000 0x02C0C0C0 \
+ 0x02800080 0x02FFFFFF
+ Windows Standard = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000010 \
+ 0x00000010 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF8 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x02808000 0x02800000 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02808080 0x02800000 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02C0C0C0 0x02FFFFFF 0x02000000 0x02DFDFDF \
+ 0x02000000 0x00E1FFFF
+ Windows Standard (large) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000012 \
+ 0x00000012 0x00000016 0x00000016 0xFFFFFFF0 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000012 0x00000012 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF3 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF3 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x02808000 0x02800000 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02808080 0x02800000 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02C0C0C0 0x02FFFFFF 0x02000000 0x02DFDFDF \
+ 0x02000000 0x02E1FFFF
+ Rose = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000F \
+ 0x0000000F 0x00000017 0x00000017 0xFFFFFFED \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000011 0x00000011 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02B7AFCF 0x02808080 0x0270609F \
+ 0x02A4A0A0 0x02B7AFCF 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02B7AFCF \
+ 0x02B7AFCF 0x0270609F 0x0270609F 0x02FFFFFF \
+ 0x02B7AFCF 0x0270609F 0x0270609F 0x02000000 \
+ 0x02000000 0x02DCD8E7 0x02000000 0x02B7AFCF \
+ 0x02000000 0x02FFFFFF
+ High Contrast Black (large) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000006 0x0000001C \
+ 0x0000001C 0x0000001F 0x0000001F 0xFFFFFFE8 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000001A 0x0000001A \
+ 0xFFFFFFEC 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x0000001E \
+ 0x0000001E 0xFFFFFFE8 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFEC 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFE8 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFEC 0x00000000 \
+ 0x00000000 0x00000000 0x000002BC 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02000000 0x02000000 0x02800080 \
+ 0x02008000 0x02000000 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x0200FFFF \
+ 0x02008000 0x02000000 0x02800080 0x02FFFFFF \
+ 0x02000000 0x02808080 0x0200FF00 0x02FFFFFF \
+ 0x02FFFFFF 0x02C0C0C0 0x02FFFFFF 0x02FFFFFF \
+ 0x02FFFFFF 0x02000000
+ High Contrast Black (extra large) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000006 0x00000020 \
+ 0x00000020 0x00000025 0x00000025 0xFFFFFFE2 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000001C 0x0000001C \
+ 0xFFFFFFE9 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000026 \
+ 0x00000026 0xFFFFFFE2 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFE9 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFE1 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFE9 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02000000 0x02000000 0x02800080 \
+ 0x02008000 0x02000000 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x0200FFFF \
+ 0x02008000 0x02000000 0x02800080 0x02FFFFFF \
+ 0x02000000 0x02808080 0x0200FF00 0x02FFFFFF \
+ 0x02FFFFFF 0x02C0C0C0 0x02FFFFFF 0x02FFFFFF \
+ 0x02FFFFFF 0x02000000
+ High Contrast White (large) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000007 0x0000001A \
+ 0x0000001A 0x00000025 0x00000025 0xFFFFFFE8 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000001C 0x0000001C \
+ 0xFFFFFFED 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x0000001B \
+ 0x0000001B 0xFFFFFFEB 0x00000000 0x00000000 \
+ 0x00000000 0x000002BC 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFED 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFEB \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFEC 0x00000000 \
+ 0x00000000 0x00000000 0x000002BC 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02808080 \
+ 0x02C0C0C0 0x02808080 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02808080 0x0200FF00 0x02000000 \
+ 0x02000000 0x02C0C0C0 0x02000000 0x02C0C0C0 \
+ 0x02000000 0x02FFFFFF
+ High Contrast White (extra large) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000006 0x0000001E \
+ 0x0000001E 0x00000026 0x00000026 0xFFFFFFE2 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000001C 0x0000001C \
+ 0xFFFFFFE9 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000026 \
+ 0x00000026 0xFFFFFFE2 0x00000000 0x00000000 \
+ 0x00000000 0x000002BC 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFE9 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFEB \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFE9 0x00000000 \
+ 0x00000000 0x00000000 0x000002BC 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02808080 \
+ 0x02C0C0C0 0x02808080 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02808080 0x0200FF00 0x02000000 \
+ 0x02000000 0x02C0C0C0 0x02000000 0x02C0C0C0 \
+ 0x02000000 0x02FFFFFF
+ Rose (large) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000002 0x00000011 \
+ 0x00000011 0x0000001C 0x0000001C 0xFFFFFFE9 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000015 0x00000015 \
+ 0xFFFFFFF0 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000016 \
+ 0x00000016 0xFFFFFFEF 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF0 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFEF \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFEF 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x02808080 0x027060A0 \
+ 0x02A4A0A0 0x02B8B0D0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02B8B0D0 \
+ 0x02B8B0D0 0x02E0D8E8 0x027060A0 0x02FFFFFF \
+ 0x02B8B0D0 0x027060A0 0x027060A0 0x02000000 \
+ 0x02000000 0x02E0D8E8 0x02000000 0x02B8B0D0 \
+ 0x02000000 0x02FFFFFF
+ Lilac = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000F \
+ 0x0000000F 0x00000016 0x00000016 0xFFFFFFF0 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000010 0x00000010 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF3 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF5 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D9A8AE 0x02000000 0x02B14E5A \
+ 0x02808080 0x02D9A8AE 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02D9A8AE \
+ 0x02D9A8AE 0x02B14E5A 0x02B14E5A 0x02FFFFFF \
+ 0x02D9A8AE 0x02B14E5A 0x02B14E5A 0x02000000 \
+ 0x02FFFFFF 0x02ECD5D8 0x02000000 0x02D9A8AE \
+ 0x02000000 0x02FFFFFF
+ Lilac (large) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000F \
+ 0x0000000F 0x0000001D 0x0000001D 0xFFFFFFE9 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000015 0x00000015 \
+ 0xFFFFFFF0 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000015 \
+ 0x00000015 0xFFFFFFF0 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF0 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFEF \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF0 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D9A8AE 0x02000000 0x02B14E5A \
+ 0x02808080 0x02D9A8AE 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02D9A8AE \
+ 0x02D9A8AE 0x02B14E5A 0x02B14E5A 0x02FFFFFF \
+ 0x02D9A8AE 0x02B14E5A 0x02B14E5A 0x02000000 \
+ 0x02FFFFFF 0x02ECD5D8 0x02000000 0x02D9A8AE \
+ 0x02000000 0x02FFFFFF
+ Slate = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02E3DCCE 0x00414141 0x02978055 \
+ 0x02808080 0x02C8B99D 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C8B99D \
+ 0x02C8B99D 0x00424242 0x02978055 0x02FFFFFF \
+ 0x02C8B99D 0x02978055 0x02978055 0x02000000 \
+ 0x02C0C0C0 0x02E3DCCE 0x02000000 0x02C8B99D \
+ 0x02000000 0x02FFFFFF
+ Plum (high color) = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x00C8D0D8 0x00402840 0x00604048 \
+ 0x00586078 0x009098A8 0x00C8D0D8 0x00000000 \
+ 0x00000000 0x00000000 0x00C8D0D8 0x009098A8 \
+ 0x009098A8 0x005A6374 0x00484828 0x00C8D0D8 \
+ 0x009098A8 0x00586078 0x00586078 0x00000000 \
+ 0x009098A8 0x00C8D0D8 0x00000000 0x009098A8 \
+ 0x00580030 0x00C8CCD5
+ High Contrast Black = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000011 \
+ 0x00000011 0x00000014 0x00000014 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF5 0x00000000 \
+ 0x00000000 0x00000000 0x000002BC 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02000000 0x02000000 0x02800080 \
+ 0x02008000 0x02000000 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x0200FFFF \
+ 0x02008000 0x02000000 0x02800080 0x02FFFFFF \
+ 0x02000000 0x02808080 0x0200FF00 0x02FFFFFF \
+ 0x02FFFFFF 0x02C0C0C0 0x02FFFFFF 0x02FFFFFF \
+ 0x02FFFFFF 0x02000000
+ High Contrast White = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000011 \
+ 0x00000011 0x00000014 0x00000014 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF8 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x000002BC 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF5 0x00000000 \
+ 0x00000000 0x00000000 0x000002BC 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02808080 \
+ 0x02C0C0C0 0x02808080 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02808080 0x0200FF00 0x02000000 \
+ 0x02000000 0x02C0C0C0 0x02000000 0x02C0C0C0 \
+ 0x02000000 0x02FFFFFF
+
+ International
+ Locale = 00000409
+ sLanguage = ENU
+ sCountry = United States
+ iCountry = 1
+ sList = ,
+ iMeasure = 1
+ sDecimal = .
+ sThousand = ,
+ iDigits = 2
+ iLZero = 1
+ sCurrency = $
+ iCurrDigits = 2
+ iCurrency = 0
+ iNegCurr = 0
+ sDate = /
+ sTime = :
+ sShortDate = M/d/yy
+ sLongDate = dddd, MMMM dd, yyyy
+ iDate = 0
+ iTime = 0
+ iTLZero = 0
+ s1159 = AM
+ s2359 = PM
+
+ Sorting Order
+
+ Desktop
+ CoolSwitch = 1
+ CoolSwitchRows = 3
+ CoolSwitchColumns = 7
+ CursorBlinkRate = 530
+ ScreenSaveTimeOut = 900
+ ScreenSaveActive = 0
+ SCRNSAVE.EXE = (NONE)
+ ScreenSaverIsSecure = 0
+ Pattern = (None)
+ Wallpaper = (None)
+ TileWallpaper = 0
+ GridGranularity = 0
+ IconSpacing = 75
+ IconTitleWrap = 1
+ IconTitleFaceName = MS Sans Serif
+ IconTitleSize = 9
+ IconTitleStyle = 0
+ DragFullWindows = 2
+ HungAppTimeout = 5000
+ WaitToKillAppTimeout = 20000
+ AutoEndTasks = 0
+ FontSmoothing = 0
+ MenuShowDelay = 400
+ DragHeight = 2
+ DragWidth = 2
+ WheelScrollLines = 3
+
+ WindowMetrics
+ BorderWidth = 1
+
+ Keyboard
+ KeyboardSpeed = 31
+ KeyboardDelay = 1
+ InitialKeyboardIndicators = 0x80000000
+
+ Sound
+ Beep = yes
+
+ IOProcs
+ MVB = mvfs32.dll
+
+ Mouse
+ SwapMouseButtons = 0
+ DoubleClickSpeed = 500
+ DoubleClickHeight = 4
+ DoubleClickWidth = 4
+ MouseThreshold1 = 6
+ MouseThreshold2 = 10
+ MouseSpeed = 1
+ SnapToDefaultButton = 0
+ ActiveWindowTracking = REG_DWORD 0x00000000
+
+ Colors
+ Background = 0 128 128
+ AppWorkSpace = 128 128 128
+ Window = 255 255 255
+ WindowText = 0 0 0
+ Menu = 192 192 192
+ MenuText = 0 0 0
+ ActiveTitle = 0 0 128
+ InactiveTitle = 128 128 128
+ TitleText = 255 255 255
+ ActiveBorder = 192 192 192
+ InactiveBorder = 192 192 192
+ WindowFrame = 0 0 0
+ Scrollbar = 192 192 192
+ ButtonFace = 192 192 192
+ ButtonShadow = 128 128 128
+ ButtonText = 0 0 0
+ GrayText = 128 128 128
+ Hilight = 0 0 128
+ HilightText = 255 255 255
+ InactiveTitleText = 192 192 192
+ ButtonHilight = 255 255 255
+ InfoText = 0 0 0
+ InfoWindow = 255 255 225
+ ButtonLight = 192 192 192
+ ButtonDkShadow = 0 0 0
+
+ Current
+ Color Schemes = Windows Default
+
+ Custom Colors
+ ColorA = FFFFFF
+ ColorB = FFFFFF
+ ColorC = FFFFFF
+ ColorD = FFFFFF
+ ColorE = FFFFFF
+ ColorF = FFFFFF
+ ColorG = FFFFFF
+ ColorH = FFFFFF
+ ColorI = FFFFFF
+ ColorJ = FFFFFF
+ ColorK = FFFFFF
+ ColorL = FFFFFF
+ ColorM = FFFFFF
+ ColorN = FFFFFF
+ ColorO = FFFFFF
+ ColorP = FFFFFF
+
+ Patterns
+ (None) = (None)
+ Boxes = 127 65 65 65 65 65 127 0
+ Paisley = 2 7 7 2 32 80 80 32
+ Weave = 136 84 34 69 136 21 34 81
+ Waffle = 0 0 0 0 128 128 128 240
+ Tulip = 0 0 84 124 124 56 146 124
+ Spinner = 20 12 200 121 158 19 48 40
+ Scottie = 64 192 200 120 120 72 0 0
+ Critters = 0 80 114 32 0 5 39 2
+ 50% Gray = 170 85 170 85 170 85 170 85
+ Quilt = 130 68 40 17 40 68 130 1
+ Diamonds = 32 80 136 80 32 0 0 0
+ Thatches = 248 116 34 71 143 23 34 113
+ Pattern = 224 128 142 136 234 10 14 0
+
+ Screen Saver.3DFlyingObj
+
+ Screen Saver.3DPipes
+
+ Screen Saver.Bezier
+
+ Screen Saver.Marquee
+ Font=Times New Roman
+ Size=24
+ Text=Your text goes here.
+ TextColor=255 0 255
+ BackgroundColor=0 0 128
+ Mode=1
+ Speed=14
+ CharSet=0
+
+ Screen Saver.Mystify
+ Clear Screen=1
+ Active1=1
+ WalkRandom1=1
+ Lines1=7
+ StartColor1=0 0 0
+ EndColor1=255 255 255
+ Active2=1
+ WalkRandom2=1
+ Lines2=12
+ StartColor2=0 0 0
+ EndColor2=255 255 255
+
+ Screen Saver.Stars
+ Density=50
+ WarpSpeed=10
+
+ Accessibility
+ Keyboard Response
+ AutoRepeatDelay = 1000
+ AutoRepeatRate = 500
+ BounceTime = 0
+ DelayBeforeAcceptance = 1000
+ Flags = 82
+
+ MouseKeys
+ Flags = 18
+ MaximumSpeed = 80
+ TimeToMaximumSpeed = 3000
+
+ ShowSounds
+ On = 0
+
+ SoundSentry
+ Flags = 2
+ FSTextEffect = 0
+ WindowsEffect = 0
+
+ StickyKeys
+ Flags = 466
+
+ TimeOut
+ Flags = 2
+ TimeToWait = 300000
+
+ ToggleKeys
+ Flags = 18
+
+
+ Console
+ InsertMode = REG_DWORD 0x00000000
+ QuickEdit = REG_DWORD 0x00000000
+ FullScreen = REG_DWORD 0x00000000
+ FaceName =
+ FontFamily = REG_DWORD 0x00000000
+ FontSize = REG_DWORD 0x00000000
+ FontWeight = REG_DWORD 0x00000000
+ CursorSize = REG_DWORD 0x00000019
+ PopupColors = REG_DWORD 0x000000f5
+ NumberOfHistoryBuffers = REG_DWORD 0x00000004
+ ScreenColors = REG_DWORD 0x00000007
+ HistoryBufferSize = REG_DWORD 0x00000032
+ ScreenBufferSize = REG_DWORD 0x00190050
+ WindowSize = REG_DWORD 0x00190050
+
+ ColorTable00 = REG_DWORD 0x000000
+ ColorTable01 = REG_DWORD 0x800000
+ ColorTable02 = REG_DWORD 0x008000
+ ColorTable03 = REG_DWORD 0x808000
+ ColorTable04 = REG_DWORD 0x000080
+ ColorTable05 = REG_DWORD 0x800080
+ ColorTable06 = REG_DWORD 0x008080
+ ColorTable07 = REG_DWORD 0xC0C0C0
+ ColorTable08 = REG_DWORD 0x808080
+ ColorTable09 = REG_DWORD 0xFF0000
+ ColorTable10 = REG_DWORD 0x00FF00
+ ColorTable11 = REG_DWORD 0xFFFF00
+ ColorTable12 = REG_DWORD 0x0000FF
+ ColorTable13 = REG_DWORD 0xFF00FF
+ ColorTable14 = REG_DWORD 0x00FFFF
+ ColorTable15 = REG_DWORD 0xFFFFFF
+
+ Keyboard Layout
+
+ Substitutes
+ // 00000407 = 00010407 // German: Y/Z swapped
+ // 00000409 = 00010409 // US English: Dvorak
+
+ Software
+ Microsoft
+ Windows Help
+ Xl = 166
+ Yu = 120
+ Xr = 474
+ Yd = 444
+ Maximized = 0
+
+ Clock
+ iFormat = 1
+
+ Command Processor
+ EnableExtensions = REG_DWORD 1
+ DefaultColor = REG_DWORD 0x0
+ CompletionChar = REG_DWORD 0x0
+
+ RegEdt32
+ Settings
+ AutoRefresh = 1
+ ReadOnly = 0
+ RemoteAccess = 0
+ ConfirmOnDelete = 1
+ SaveSettings = 1
+
+ File Manager
+ Settings
+
+ Schedule+
+ Microsoft Schedule+
+ MigrateIni = 1
+ MigrateIniPrint = 1
+
+ Ntbackup
+
+ NetDDE [SystemFull AdminFull]
+ DDE Trusted Shares
+
+
+ Windows
+ CurrentVersion
+ Explorer
+ User Shell Folders
+ AppData = REG_EXPAND_SZ "%USERPROFILE%\Application Data"
+ Desktop = REG_EXPAND_SZ "%USERPROFILE%\Desktop"
+ Favorites = REG_EXPAND_SZ "%USERPROFILE%\Favorites"
+ NetHood = REG_EXPAND_SZ "%USERPROFILE%\NetHood"
+ Personal = REG_EXPAND_SZ "%USERPROFILE%\Personal"
+ PrintHood = REG_EXPAND_SZ "%USERPROFILE%\PrintHood"
+ Recent = REG_EXPAND_SZ "%USERPROFILE%\Recent"
+ SendTo = REG_EXPAND_SZ "%USERPROFILE%\SendTo"
+ Start Menu = REG_EXPAND_SZ "%USERPROFILE%\Start Menu"
+ Templates = REG_EXPAND_SZ "%USERPROFILE%\Templates"
+ Programs = REG_EXPAND_SZ "%USERPROFILE%\Start Menu\Programs"
+ Startup = REG_EXPAND_SZ "%USERPROFILE%\Start Menu\Programs\Startup"
+ GrpConv
+ MapGroups
+ Games = REG_SZ Accessories\Games
+ Policies [WorldR AdminFull SystemOpRWD PowerRWD SystemFull CreatorFull]
+ Explorer
+ NoDriveTypeAutoRun = REG_DWORD 0x95
+ Telephony
+ HandoffPriorities
+ RequestMakeCall = REG_SZ "dialer.exe"
+
+
+ Windows NT
+ CurrentVersion
+#ifdef _CAIRO_
+ WindowMetrics
+ MinArrange = 8
+#endif
+ Devices
+
+ PrinterPorts
+
+ Windows
+ load=
+ run=
+ NullPort=None
+ Programs=com exe bat pif cmd
+ Documents=
+ device=
+ DosPrint=no
+ NetMessage=no
+ DebugOptions=2048
+
+ Extensions
+ txt=notepad.exe ^.txt
+ wtx=notepad.exe ^.wtx
+ ini=notepad.exe ^.ini
+
+ TrueType
+ TTEnable=1
+ TTonly=0
+
+ Network
+ Persistent Connections
+ SaveConnections = yes
+
+ Event Viewer
+ SaveSettings = 1
+
+ User Manager
+ SaveSettings = 1
+
+ User Manager for Domains
+ SaveSettings = 1
+
+ Server Manager
+ SaveSettings = 1
+
+ Program Manager
+ Settings
+ MinOnRun = REG_DWORD FALSE
+ AutoArrange = REG_DWORD TRUE
+ SaveSettings = REG_DWORD TRUE
+ display.drv = vga.drv
+ Window = 68 63 636 421 1
+
+ Restrictions
+ NoRun = REG_DWORD FALSE
+ NoClose = REG_DWORD FALSE
+ EditLevel = REG_DWORD FALSE
+ Restrictions = REG_DWORD FALSE
+ NoFileMenu = REG_DWORD FALSE
+ NoSaveSettings = REG_DWORD FALSE
+
+ UNICODE Groups
+
+ UNICODE Program Groups
diff --git a/public/oak/bin/default.log b/public/oak/bin/default.log
new file mode 100644
index 000000000..1af1c275a
--- /dev/null
+++ b/public/oak/bin/default.log
@@ -0,0 +1,753 @@
+.Default
+ AppEvents
+ EventLabels
+ AppGPFault
+ = Program error
+ Close
+ = Close program
+ EmptyRecycleBin
+ = Empty Recycle Bin
+ Maximize
+ = Maximize
+ MenuCommand
+ = Menu command
+ MenuPopup
+ = Menu popup
+ Minimize
+ = Minimize
+ Open
+ = Open program
+ RestoreDown
+ = Restore Down
+ RestoreUp
+ = Restore Up
+ SystemAsterisk
+ = Asterisk
+ SystemDefault
+ = Default sound
+ SystemExclamation
+ = Exclamation
+ SystemExit
+ = Exit Windows NT
+ SystemHand
+ = Critical Stop
+ SystemQuestion
+ = Question
+ SystemStart
+ = Start Windows NT
+ Schemes
+ Names
+ .Default
+ = Windows NT Default
+ .None
+ = No Sounds
+ Apps
+ .Default
+ = Windows NT
+ AppGPFault
+ .Default
+ =
+ .Current
+ =
+ Close
+ .Default
+ =
+ .Current
+ =
+ Maximize
+ .Default
+ =
+ .Current
+ =
+ MenuCommand
+ .Default
+ =
+ .Current
+ =
+ MenuPopup
+ .Default
+ =
+ .Current
+ =
+ Minimize
+ .Default
+ =
+ .Current
+ =
+ Open
+ .Default
+ =
+ .Current
+ =
+ RestoreDown
+ .Default
+ =
+ .Current
+ =
+ RestoreUp
+ .Default
+ =
+ .Current
+ =
+ SystemAsterisk
+ .Default
+ = chord.wav
+ .Current
+ = chord.wav
+ SystemDefault
+ .Default
+ = ding.wav
+ .Current
+ = ding.wav
+ SystemExclamation
+ .Default
+ = chord.wav
+ .Current
+ = chord.wav
+ SystemExit
+ .Default
+ = Windows NT Logoff Sound.wav
+ .Current
+ = Windows NT Logoff Sound.wav
+ SystemHand
+ .Default
+ = chord.wav
+ .Current
+ = chord.wav
+ SystemQuestion
+ .Default
+ = chord.wav
+ .Current
+ = chord.wav
+ SystemStart
+ .Default
+ = Windows NT Logon Sound.wav
+ .Current
+ = Windows NT Logon Sound.wav
+ Explorer
+ = Windows NT Explorer
+ EmptyRecycleBin
+ .Default
+ = ding.wav
+ .Current
+ = ding.wav
+ MPlay32
+ = Media Player
+ Close
+ .Default
+ =
+ .Current
+ =
+ Open
+ .Default
+ =
+ .Current
+ =
+ SndRec32
+ = Sound Recorder
+ Close
+ .Current
+ =
+ Open
+ .Current
+ =
+ Environment
+ Control Panel
+ Appearance
+ Schemes
+ Brick = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff4 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x77f09a58 0x003f003f 0x003f003f 0x00000000 0x00000000 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x001400b8 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d2e0e1 \
+ 0x00000042 0x02000080 0x0261898d 0x02a5bfc2 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02d2e0e1 0x02a5bfc2 0x02a5bfc2 0x02d2e0e1 0x0261898d 0x02ffffff 0x02a5bfc2 0x0261898d 0x0261898d 0x02000000 0x02d2e0e1 \
+ 0x02d2e0e1 0x02000000 0x02a5bfc2 0x02000080 0x02d2e0e1
+ Maple = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x001400b8 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d7ecf2 \
+ 0x02000000 0x0246a6c6 0x02a4a0a0 0x02aed8e6 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02aed8e6 0x02aed8e6 0x02d7ecf2 0x0246a6c6 0x02000000 0x02aed8e6 0x0246a6c6 0x0246a6c6 0x02000000 0x02d7ecf2 \
+ 0x02d7ecf2 0x02000000 0x02aed8e6 0x02000000 0x02ffffff
+ Spruce = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000f 0x0000000f 0x00000012 0x00000012 0xfffffff4 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x001400b8 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d3e3d0 \
+ 0x00213f21 0x02649759 0x02808080 0x02a9c8a2 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02a9c8a2 0x02a9c8a2 0x02d3e3d0 0x02649759 0x02ffffff 0x02a9c8a2 0x02649759 0x02649759 0x02000000 0x02d3e3d0 \
+ 0x02d3e3d0 0x02000000 0x02a9c8a2 0x02000000 0x02ffffff
+ Teal (VGA) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x001400b8 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 \
+ 0x00404000 0x02808000 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02808080 0x02808000 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 0x02f0fbff \
+ 0x02ffffff 0x02000000 0x02c0c0c0 0x02000000 0x02ffffff
+ Red, White, and Blue (VGA) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000013 0x00000013 0xfffffff1 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00690054 \
+ 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000011 0x00000011 \
+ 0xfffffff3 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 \
+ 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 0x00000012 0x00000012 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d \
+ 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77e86b7c 0x00000000 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d \
+ 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d \
+ 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 0x00420000 \
+ 0x02000080 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02ffffff 0x02000080 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 \
+ 0x02c0c0c0 0x02ffffff 0x02000000 0x02c0c0c0 0x02800000 0x02ffffff
+ Wheat = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d0eeee \
+ 0x001d4000 0x02008080 0x0241bcbc 0x02a0dede 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02a0dede 0x02a0dede 0x02d0eeee 0x02008080 0x02ffffff 0x02a0dede 0x0241bcbc 0x0241bcbc 0x02000000 0x02ffffff \
+ 0x02d0eeee 0x02000000 0x02a0dede 0x02000000 0x02ffffff
+ Pumpkin (large) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000015 0x00000015 0x0000001a 0x0000001a 0xffffffed 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000016 0x00000016 0xfffffff0 0x00000000 \
+ 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 \
+ 0x00140580 0x00141ff0 0x00140000 0x00000016 0x00000016 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d \
+ 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff0 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff \
+ 0xfc214bf0 0x77f0c400 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02cfeaf5 0x00420042 0x022fa5d7 0x02a4a0a0 0x029dd5ec 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x029dd5ec \
+ 0x029dd5ec 0x02cfeaf5 0x02800080 0x02ffffff 0x029dd5ec 0x022fa5d7 0x022fa5d7 0x02000000 0x02cfeaf5 0x02cfeaf5 0x02000000 0x029dd5ec 0x02800080 0x02ffffff
+ Eggplant = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000010 0x00000010 0x00000013 0x00000013 0xfffffff1 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000011 0x00000011 0xfffffff3 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 \
+ 0x0061006d 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d \
+ 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02a8b090 \
+ 0x00400040 0x02788058 0x02a8b090 0x02a8b090 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02a8b090 0x02a8b090 0x02808080 0x02788058 0x02ffffff 0x02a8b090 0x02788058 0x02788058 0x02000000 0x02788058 \
+ 0x02d8d8c8 0x02000000 0x02a8b090 0x02800080 0x02ffffff
+ Rainy Day = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d9ccc1 \
+ 0x02000000 0x027d654f 0x02808080 0x02b19983 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02b19983 0x02b19983 0x02808080 0x027d654f 0x02ffffff 0x02b19983 0x027d654f 0x027d654f 0x02000000 0x02d9ccc1 \
+ 0x02d9ccc1 0x02000000 0x02b19983 0x02000000 0x02ffffff
+ Desert = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02dde6ea \
+ 0x02688da2 0x02808000 0x02688da2 0x02bbccd5 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02bbccd5 0x02bbccd5 0x02688da2 0x02808000 0x02ffffff 0x02bbccd5 0x02688da2 0x02688da2 0x02000000 0x02ffffff \
+ 0x02dde6ea 0x02000000 0x02bbccd5 0x02000000 0x02ffffff
+ Marine (high color) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000d 0x0000000d 0xfffffff7 0x00000000 \
+ 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x006d0053 0x006c0061 0x0020006c 0x006f0046 0x0074006e 0x00000073 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 \
+ 0x00140580 0x00141ff0 0x00140000 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d \
+ 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff \
+ 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d8e0c8 0x00474e2c 0x02800000 0x02889048 0x02b8c088 0x02d8e0c8 0x02000000 0x02000000 0x02000000 0x02c0c0c0 0x02b8c088 \
+ 0x02b8c088 0x00848d4b 0x02800000 0x02ffffff 0x02b8c088 0x02889048 0x02889048 0x02000000 0x02c0c0c0 0x02d8e0c8 0x02000000 0x02b8c088 0x02000000 0x02d8e0c8
+ Windows Standard (extra large) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000015 0x00000015 0x00000018 0x00000018 0xffffffed 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000012 0x00000012 \
+ 0xfffffff3 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x006f0046 0x0074006e 0x00000073 0x00000066 0x0000006e 0x00000000 0x00142000 \
+ 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 0x00000015 0x00000015 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77e86b7c 0x00000000 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 0x02808000 \
+ 0x02800000 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02808080 0x02800000 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 \
+ 0x02c0c0c0 0x02ffffff 0x02000000 0x02dfdfdf 0x02000000 0x00e1ffff
+ Storm (VGA) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 \
+ 0x02000000 0x02800080 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02808080 0x02800080 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 0x02000000 \
+ 0x02ffffff 0x02000000 0x02c0c0c0 0x02800080 0x02ffffff
+ Windows Standard = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000010 0x00000010 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff8 0x00000000 \
+ 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 \
+ 0x00140580 0x00141ff0 0x00140000 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d \
+ 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff \
+ 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 0x02808000 0x02800000 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 \
+ 0x02c0c0c0 0x02808080 0x02800000 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 0x02c0c0c0 0x02ffffff 0x02000000 0x02dfdfdf 0x02000000 0x00e1ffff
+ Windows Standard (large) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000012 0x00000012 0x00000016 0x00000016 0xfffffff0 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d \
+ 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000012 0x00000012 \
+ 0xfffffff3 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 \
+ 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 0x00000012 0x00000012 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77e86b7c 0x00000000 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d \
+ 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 0x02808000 \
+ 0x02800000 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02808080 0x02800000 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 \
+ 0x02c0c0c0 0x02ffffff 0x02000000 0x02dfdfdf 0x02000000 0x02e1ffff
+ Rose = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000f 0x0000000f 0x00000017 0x00000017 0xffffffed 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000011 0x00000011 0xfffffff3 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02b7afcf \
+ 0x02808080 0x0270609f 0x02a4a0a0 0x02b7afcf 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02b7afcf 0x02b7afcf 0x0270609f 0x0270609f 0x02ffffff 0x02b7afcf 0x0270609f 0x0270609f 0x02000000 0x02000000 \
+ 0x02dcd8e7 0x02000000 0x02b7afcf 0x02000000 0x02ffffff
+ High Contrast Black (large) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000006 0x0000001c 0x0000001c 0x0000001f 0x0000001f 0xffffffe8 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000001a 0x0000001a \
+ 0xffffffec 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 \
+ 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 0x0000001e 0x0000001e 0xffffffe8 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xffffffec 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77e86b7c 0x00000000 0xffffffe8 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xffffffec 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02000000 0x02000000 \
+ 0x02800080 0x02008000 0x02000000 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02ffffff 0x0200ffff 0x02008000 0x02000000 0x02800080 0x02ffffff 0x02000000 0x02808080 0x0200ff00 0x02ffffff \
+ 0x02ffffff 0x02c0c0c0 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000
+ High Contrast Black (extra large) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000006 0x00000020 0x00000020 0x00000025 0x00000025 0xffffffe2 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000001c 0x0000001c \
+ 0xffffffe9 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 \
+ 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 0x00000026 0x00000026 0xffffffe2 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xffffffe9 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77e86b7c 0x00000000 0xffffffe1 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xffffffe9 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02000000 0x02000000 \
+ 0x02800080 0x02008000 0x02000000 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02ffffff 0x0200ffff 0x02008000 0x02000000 0x02800080 0x02ffffff 0x02000000 0x02808080 0x0200ff00 0x02ffffff \
+ 0x02ffffff 0x02c0c0c0 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000
+ High Contrast White (large) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000007 0x0000001a 0x0000001a 0x00000025 0x00000025 0xffffffe8 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000001c 0x0000001c \
+ 0xffffffed 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 \
+ 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 0x0000001b 0x0000001b 0xffffffeb 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xffffffed 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77e86b7c 0x00000000 0xffffffeb 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xffffffec 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02ffffff 0x02ffffff \
+ 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02808080 0x02c0c0c0 0x02808080 0x02000000 0x02ffffff 0x02ffffff 0x02808080 0x0200ff00 0x02000000 \
+ 0x02000000 0x02c0c0c0 0x02000000 0x02c0c0c0 0x02000000 0x02ffffff
+ High Contrast White (extra large) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000006 0x0000001e 0x0000001e 0x00000026 0x00000026 0xffffffe2 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000001c 0x0000001c \
+ 0xffffffe9 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 \
+ 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 0x00000026 0x00000026 0xffffffe2 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xffffffe9 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77e86b7c 0x00000000 0xffffffeb 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xffffffe9 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02ffffff 0x02ffffff \
+ 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02808080 0x02c0c0c0 0x02808080 0x02000000 0x02ffffff 0x02ffffff 0x02808080 0x0200ff00 0x02000000 \
+ 0x02000000 0x02c0c0c0 0x02000000 0x02c0c0c0 0x02000000 0x02ffffff
+ Rose (large) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000002 0x00000011 0x00000011 0x0000001c 0x0000001c 0xffffffe9 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d \
+ 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000015 0x00000015 0xfffffff0 0x00000000 \
+ 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 \
+ 0x00140580 0x00141ff0 0x00140000 0x00000016 0x00000016 0xffffffef 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d \
+ 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xffffffef 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff \
+ 0xfc214bf0 0x77f0c400 0xffffffef 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 0x02808080 0x027060a0 0x02a4a0a0 0x02b8b0d0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02b8b0d0 \
+ 0x02b8b0d0 0x02e0d8e8 0x027060a0 0x02ffffff 0x02b8b0d0 0x027060a0 0x027060a0 0x02000000 0x02000000 0x02e0d8e8 0x02000000 0x02b8b0d0 0x02000000 0x02ffffff
+ Lilac = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000f 0x0000000f 0x00000016 0x00000016 0xfffffff0 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000010 0x00000010 0xfffffff5 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d9a8ae \
+ 0x02000000 0x02b14e5a 0x02808080 0x02d9a8ae 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02d9a8ae 0x02d9a8ae 0x02b14e5a 0x02b14e5a 0x02ffffff 0x02d9a8ae 0x02b14e5a 0x02b14e5a 0x02000000 0x02ffffff \
+ 0x02ecd5d8 0x02000000 0x02d9a8ae 0x02000000 0x02ffffff
+ Lilac (large) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000f 0x0000000f 0x0000001d 0x0000001d 0xffffffe9 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000015 0x00000015 0xfffffff0 0x00000000 \
+ 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 \
+ 0x00140580 0x00141ff0 0x00140000 0x00000015 0x00000015 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xffffffef 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff \
+ 0xfc214bf0 0x77f0c400 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d9a8ae 0x02000000 0x02b14e5a 0x02808080 0x02d9a8ae 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02d9a8ae \
+ 0x02d9a8ae 0x02b14e5a 0x02b14e5a 0x02ffffff 0x02d9a8ae 0x02b14e5a 0x02b14e5a 0x02000000 0x02ffffff 0x02ecd5d8 0x02000000 0x02d9a8ae 0x02000000 0x02ffffff
+ Slate = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02e3dcce \
+ 0x00414141 0x02978055 0x02808080 0x02c8b99d 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c8b99d 0x02c8b99d 0x00424242 0x02978055 0x02ffffff 0x02c8b99d 0x02978055 0x02978055 0x02000000 0x02c0c0c0 \
+ 0x02e3dcce 0x02000000 0x02c8b99d 0x02000000 0x02ffffff
+ Plum (high color) = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 \
+ 0x00140580 0x00141ff0 0x00140000 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d \
+ 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff \
+ 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x00c8d0d8 0x00402840 0x00604048 0x00586078 0x009098a8 0x00c8d0d8 0x00000000 0x00000000 0x00000000 0x00c8d0d8 0x009098a8 \
+ 0x009098a8 0x005a6374 0x00484828 0x00c8d0d8 0x009098a8 0x00586078 0x00586078 0x00000000 0x009098a8 0x00c8d0d8 0x00000000 0x009098a8 0x00580030 0x00c8ccd5
+ High Contrast Black = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000011 0x00000011 0x00000014 0x00000014 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff5 0x00000000 \
+ 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 \
+ 0x00140580 0x00141ff0 0x00140000 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d \
+ 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff \
+ 0xfc214bf0 0x77f0c400 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02000000 0x02000000 0x02800080 0x02008000 0x02000000 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02ffffff 0x0200ffff \
+ 0x02008000 0x02000000 0x02800080 0x02ffffff 0x02000000 0x02808080 0x0200ff00 0x02ffffff 0x02ffffff 0x02c0c0c0 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000
+ High Contrast White = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000011 0x00000011 0x00000014 0x00000014 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff8 0x00000000 \
+ 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 \
+ 0x00140580 0x00141ff0 0x00140000 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x00000000 0x00000000 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d \
+ 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 \
+ 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff \
+ 0xfc214bf0 0x77f0c400 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02ffffff 0x02ffffff 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02808080 \
+ 0x02c0c0c0 0x02808080 0x02000000 0x02ffffff 0x02ffffff 0x02808080 0x0200ff00 0x02000000 0x02000000 0x02c0c0c0 0x02000000 0x02c0c0c0 0x02000000 0x02ffffff
+ International
+ Locale = 00000409
+ sLanguage = ENU
+ sCountry = United States
+ iCountry = 1
+ sList = ,
+ iMeasure = 1
+ sDecimal = .
+ sThousand = ,
+ iDigits = 2
+ iLZero = 1
+ sCurrency = $
+ iCurrDigits = 2
+ iCurrency = 0
+ iNegCurr = 0
+ sDate = /
+ sTime = :
+ sShortDate = M/d/yy
+ sLongDate = dddd, MMMM dd, yyyy
+ iDate = 0
+ iTime = 0
+ iTLZero = 0
+ s1159 = AM
+ s2359 = PM
+ Sorting Order
+ Desktop
+ CoolSwitch = 1
+ CoolSwitchRows = 3
+ CoolSwitchColumns = 7
+ CursorBlinkRate = 530
+ ScreenSaveTimeOut = 900
+ ScreenSaveActive = 0
+ SCRNSAVE.EXE = (NONE)
+ ScreenSaverIsSecure = 0
+ Pattern = (None)
+ Wallpaper = (None)
+ TileWallpaper = 0
+ GridGranularity = 0
+ IconSpacing = 75
+ IconTitleWrap = 1
+ IconTitleFaceName = MS Sans Serif
+ IconTitleSize = 9
+ IconTitleStyle = 0
+ DragFullWindows = 2
+ HungAppTimeout = 5000
+ WaitToKillAppTimeout = 20000
+ AutoEndTasks = 0
+ FontSmoothing = 0
+ MenuShowDelay = 400
+ DragHeight = 2
+ DragWidth = 2
+ WheelScrollLines = 3
+ WindowMetrics
+ BorderWidth = 1
+ Keyboard
+ KeyboardSpeed = 31
+ KeyboardDelay = 1
+ InitialKeyboardIndicators = 0x80000000
+ Sound
+ Beep = yes
+ IOProcs
+ MVB = mvfs32.dll
+ Mouse
+ SwapMouseButtons = 0
+ DoubleClickSpeed = 500
+ DoubleClickHeight = 4
+ DoubleClickWidth = 4
+ MouseThreshold1 = 6
+ MouseThreshold2 = 10
+ MouseSpeed = 1
+ SnapToDefaultButton = 0
+ ActiveWindowTracking = REG_DWORD 0x00000000
+ Colors
+ Background = 0 128 128
+ AppWorkSpace = 128 128 128
+ Window = 255 255 255
+ WindowText = 0 0 0
+ Menu = 192 192 192
+ MenuText = 0 0 0
+ ActiveTitle = 0 0 128
+ InactiveTitle = 128 128 128
+ TitleText = 255 255 255
+ ActiveBorder = 192 192 192
+ InactiveBorder = 192 192 192
+ WindowFrame = 0 0 0
+ Scrollbar = 192 192 192
+ ButtonFace = 192 192 192
+ ButtonShadow = 128 128 128
+ ButtonText = 0 0 0
+ GrayText = 128 128 128
+ Hilight = 0 0 128
+ HilightText = 255 255 255
+ InactiveTitleText = 192 192 192
+ ButtonHilight = 255 255 255
+ InfoText = 0 0 0
+ InfoWindow = 255 255 225
+ ButtonLight = 192 192 192
+ ButtonDkShadow = 0 0 0
+ Current
+ Color Schemes = Windows Default
+ Custom Colors
+ ColorA = FFFFFF
+ ColorB = FFFFFF
+ ColorC = FFFFFF
+ ColorD = FFFFFF
+ ColorE = FFFFFF
+ ColorF = FFFFFF
+ ColorG = FFFFFF
+ ColorH = FFFFFF
+ ColorI = FFFFFF
+ ColorJ = FFFFFF
+ ColorK = FFFFFF
+ ColorL = FFFFFF
+ ColorM = FFFFFF
+ ColorN = FFFFFF
+ ColorO = FFFFFF
+ ColorP = FFFFFF
+ Patterns
+ (None) = (None)
+ Boxes = 127 65 65 65 65 65 127 0
+ Paisley = 2 7 7 2 32 80 80 32
+ Weave = 136 84 34 69 136 21 34 81
+ Waffle = 0 0 0 0 128 128 128 240
+ Tulip = 0 0 84 124 124 56 146 124
+ Spinner = 20 12 200 121 158 19 48 40
+ Scottie = 64 192 200 120 120 72 0 0
+ Critters = 0 80 114 32 0 5 39 2
+ 50% Gray = 170 85 170 85 170 85 170 85
+ Quilt = 130 68 40 17 40 68 130 1
+ Diamonds = 32 80 136 80 32 0 0 0
+ Thatches = 248 116 34 71 143 23 34 113
+ Pattern = 224 128 142 136 234 10 14 0
+ Screen Saver.3DFlyingObj
+ Screen Saver.3DPipes
+ Screen Saver.Bezier
+ Screen Saver.Marquee
+ Font = Times New Roman
+ Size = 24
+ Text = Your text goes here.
+ TextColor = 255 0 255
+ BackgroundColor = 0 0 128
+ Mode = 1
+ Speed = 14
+ CharSet = 0
+ Screen Saver.Mystify
+ Clear Screen = 1
+ Active1 = 1
+ WalkRandom1 = 1
+ Lines1 = 7
+ StartColor1 = 0 0 0
+ EndColor1 = 255 255 255
+ Active2 = 1
+ WalkRandom2 = 1
+ Lines2 = 12
+ StartColor2 = 0 0 0
+ EndColor2 = 255 255 255
+ Screen Saver.Stars
+ Density = 50
+ WarpSpeed = 10
+ Accessibility
+ Keyboard Response
+ AutoRepeatDelay = 1000
+ AutoRepeatRate = 500
+ BounceTime = 0
+ DelayBeforeAcceptance = 1000
+ Flags = 82
+ MouseKeys
+ Flags = 18
+ MaximumSpeed = 80
+ TimeToMaximumSpeed = 3000
+ ShowSounds
+ On = 0
+ SoundSentry
+ Flags = 2
+ FSTextEffect = 0
+ WindowsEffect = 0
+ StickyKeys
+ Flags = 466
+ TimeOut
+ Flags = 2
+ TimeToWait = 300000
+ ToggleKeys
+ Flags = 18
+ Console
+ InsertMode = REG_DWORD 0x00000000
+ QuickEdit = REG_DWORD 0x00000000
+ FullScreen = REG_DWORD 0x00000000
+ FaceName =
+ FontFamily = REG_DWORD 0x00000000
+ FontSize = REG_DWORD 0x00000000
+ FontWeight = REG_DWORD 0x00000000
+ CursorSize = REG_DWORD 0x00000019
+ PopupColors = REG_DWORD 0x000000f5
+ NumberOfHistoryBuffers = REG_DWORD 0x00000004
+ ScreenColors = REG_DWORD 0x00000007
+ HistoryBufferSize = REG_DWORD 0x00000032
+ ScreenBufferSize = REG_DWORD 0x00190050
+ WindowSize = REG_DWORD 0x00190050
+ ColorTable00 = REG_DWORD 0x00000000
+ ColorTable01 = REG_DWORD 0x00800000
+ ColorTable02 = REG_DWORD 0x00008000
+ ColorTable03 = REG_DWORD 0x00808000
+ ColorTable04 = REG_DWORD 0x00000080
+ ColorTable05 = REG_DWORD 0x00800080
+ ColorTable06 = REG_DWORD 0x00008080
+ ColorTable07 = REG_DWORD 0x00c0c0c0
+ ColorTable08 = REG_DWORD 0x00808080
+ ColorTable09 = REG_DWORD 0x00ff0000
+ ColorTable10 = REG_DWORD 0x0000ff00
+ ColorTable11 = REG_DWORD 0x00ffff00
+ ColorTable12 = REG_DWORD 0x000000ff
+ ColorTable13 = REG_DWORD 0x00ff00ff
+ ColorTable14 = REG_DWORD 0x0000ffff
+ ColorTable15 = REG_DWORD 0x00ffffff
+ Keyboard Layout
+ Substitutes
+ Software
+ Microsoft
+ Windows Help
+ Xl = 166
+ Yu = 120
+ Xr = 474
+ Yd = 444
+ Maximized = 0
+ Clock
+ iFormat = 1
+ Command Processor
+ EnableExtensions = REG_DWORD 0x00000001
+ DefaultColor = REG_DWORD 0x00000000
+ CompletionChar = REG_DWORD 0x00000000
+ RegEdt32
+ Settings
+ AutoRefresh = 1
+ ReadOnly = 0
+ RemoteAccess = 0
+ ConfirmOnDelete = 1
+ SaveSettings = 1
+ File Manager
+ Settings
+ Schedule+
+ Microsoft Schedule+
+ MigrateIni = 1
+ MigrateIniPrint = 1
+ Ntbackup
+ NetDDE [17 1]
+ DDE Trusted Shares
+ Windows
+ CurrentVersion
+ Explorer
+ User Shell Folders
+ AppData = REG_EXPAND_SZ %USERPROFILE%\Application Data
+ Desktop = REG_EXPAND_SZ %USERPROFILE%\Desktop
+ Favorites = REG_EXPAND_SZ %USERPROFILE%\Favorites
+ NetHood = REG_EXPAND_SZ %USERPROFILE%\NetHood
+ Personal = REG_EXPAND_SZ %USERPROFILE%\Personal
+ PrintHood = REG_EXPAND_SZ %USERPROFILE%\PrintHood
+ Recent = REG_EXPAND_SZ %USERPROFILE%\Recent
+ SendTo = REG_EXPAND_SZ %USERPROFILE%\SendTo
+ Start Menu = REG_EXPAND_SZ %USERPROFILE%\Start Menu
+ Templates = REG_EXPAND_SZ %USERPROFILE%\Templates
+ Programs = REG_EXPAND_SZ %USERPROFILE%\Start Menu\Programs
+ Startup = REG_EXPAND_SZ %USERPROFILE%\Start Menu\Programs\Startup
+ GrpConv
+ MapGroups
+ Games = Accessories\Games
+ Policies [8 1 16 13 17 5]
+ Explorer
+ NoDriveTypeAutoRun = REG_DWORD 0x00000095
+ Telephony
+ HandoffPriorities
+ RequestMakeCall = dialer.exe
+ Windows NT
+ CurrentVersion
+ Devices
+ PrinterPorts
+ Windows
+ load =
+ run =
+ NullPort = None
+ Programs = com exe bat pif cmd
+ Documents =
+ device =
+ DosPrint = no
+ NetMessage = no
+ DebugOptions = 2048
+ Extensions
+ txt = notepad.exe ^.txt
+ wtx = notepad.exe ^.wtx
+ ini = notepad.exe ^.ini
+ TrueType
+ TTEnable = 1
+ TTonly = 0
+ Network
+ Persistent Connections
+ SaveConnections = yes
+ Event Viewer
+ SaveSettings = 1
+ User Manager
+ SaveSettings = 1
+ User Manager for Domains
+ SaveSettings = 1
+ Server Manager
+ SaveSettings = 1
+ Program Manager
+ Settings
+ MinOnRun = REG_DWORD 0x00000000
+ AutoArrange = REG_DWORD 0x00000001
+ SaveSettings = REG_DWORD 0x00000001
+ display.drv = vga.drv
+ Window = 68 63 636 421 1
+ Restrictions
+ NoRun = REG_DWORD 0x00000000
+ NoClose = REG_DWORD 0x00000000
+ EditLevel = REG_DWORD 0x00000000
+ Restrictions = REG_DWORD 0x00000000
+ NoFileMenu = REG_DWORD 0x00000000
+ NoSaveSettings = REG_DWORD 0x00000000
+ UNICODE Groups
+ UNICODE Program Groups
diff --git a/public/oak/bin/desktop.ini b/public/oak/bin/desktop.ini
new file mode 100644
index 000000000..d12ac746d
--- /dev/null
+++ b/public/oak/bin/desktop.ini
@@ -0,0 +1,2 @@
+[.ShellClassInfo]
+UICLSID={BD84B380-8CA2-1069-AB1D-08000948F534}
diff --git a/public/oak/bin/dirs.tpl b/public/oak/bin/dirs.tpl
new file mode 100644
index 000000000..cc61884d5
--- /dev/null
+++ b/public/oak/bin/dirs.tpl
@@ -0,0 +1,47 @@
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ dirs.
+
+Abstract:
+
+ This file specifies the subdirectories of the current directory that
+ contain component makefiles.
+
+
+Author:
+
+ Steve Wood (stevewo) 17-Apr-1990
+
+NOTE: Commented description of this file is in \nt\bak\bin\dirs.tpl
+
+!ENDIF
+
+#
+# This macro is defined by the developer. It is a list of all subdirectories
+# that build required components. Each subdirectory should be on a separate
+# line using the line continuation character. This will minimize merge
+# conflicts if two developers adding source files to the same component.
+# The order of the directories is the order that they will be built when
+# doing a build.
+#
+
+DIRS=dir1 \
+ dir2 \
+ dir3 \
+ dir4
+
+#
+# This macro is defined by the developer. It is a list of all subdirectories
+# that build optional components. Each subdirectory should be on a separate
+# line using the line continuation character. This will minimize merge
+# conflicts if two developers adding source files to the same component.
+# The order of the directories is the order that they will be built when
+# doing a build.
+#
+
+OPTIONAL_DIRS=dir8 \
+ dir9
diff --git a/public/oak/bin/ds.mk b/public/oak/bin/ds.mk
new file mode 100644
index 000000000..bdab9c6ca
--- /dev/null
+++ b/public/oak/bin/ds.mk
@@ -0,0 +1,22 @@
+!IF "$(ALT_PROJECT)" == ""
+ALT_PROJECT=DS
+!ENDIF
+
+ALT_PROJECT_TARGET=DS
+ALT_PROJECT_LIBPATH=DS
+
+DSLIBRARY=$(BASEDIR)\public\sdk\lib2
+
+OAK_INC_PATH=$(OAK_INC_PATH);$(BASEDIR)\public\sdk\inc2
+
+!IF "$(TARGETPATH)" == "$(BASEDIR)\public\sdk\lib"
+TARGETPATH=$(DSLIBRARY)
+!ENDIF
+
+
+!ifdef DS_MAKEFIL0
+
+_NTTREE=$(TARGET_NTTREE)\$(ALT_PROJECT_TARGET)
+
+!endif
+
diff --git a/public/oak/bin/dsys.ini b/public/oak/bin/dsys.ini
new file mode 100644
index 000000000..2c2e85888
--- /dev/null
+++ b/public/oak/bin/dsys.ini
@@ -0,0 +1,686 @@
+//
+// General DSYS Class Definitions
+//
+
+ CLSID
+
+ {FB4CFB64-669A-101A-B573-08002B2C8BC9}
+ = Dsys_PSFactory (IPrincipalAccount GUID)
+ InprocServer32
+ = dsys.dll
+ ThreadingModel = Free
+
+ Interface
+
+ {77070010-F6F7-11CE-A9A7-00AA0040529B}
+ = IPrincipalAccount
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {00000043-0000-0000-C000-000000000046}
+ = IDfsVolume
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070004-F6F7-11CE-A9A7-00AA0040529B}
+ = IDomain
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {385c86c4-32cd-101b-991c-08002b2c8bc9}
+ = IEnumDomain
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {00000044-0000-0000-C000-000000000043}
+ = IEnumDfsVolumes
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {7707001C-F6F7-11CE-A9A7-00AA0040529B}
+ = IEnumGroupMembership
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {7707000A-F6F7-11CE-A9A7-00AA0040529B}
+ = IGroup
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070021-F6F7-11CE-A9A7-00AA0040529B}
+ = IGroupAccount
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {A9911610-55A3-11CE-8614-00AA003A783D}
+ = IMigrationTarget
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {ECA36240-5291-11CE-8614-00AA003A783D}
+ = IDda
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070015-F6F7-11CE-A9A7-00AA0040529B}
+ = IServiceRep
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {7707000E-F6F7-11CE-A9A7-00AA0040529B}
+ = IPassword
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {7707000F-F6F7-11CE-A9A7-00AA0040529B}
+ = IPrincipal
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {8C839F24-D00F-101A-839E-08002B2E9EAF}
+ = IReconcilerContext
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {8C839EC0-D00F-101A-839E-08002B2E9EAF}
+ = IReconciler
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {FB4CFB00-669A-101A-B573-08002B2C8BC9}
+ = IAccountContainer
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {7707000C-F6F7-11CE-A9A7-00AA0040529B}
+ = ILocalPolicyContainer
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070020-F6F7-11CE-A9A7-00AA0040529B}
+ = ILocalPolicy
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {A26259D8-49AA-101B-8D80-00AA00338BE6}
+ = IEnumPolicy
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070022-F6F7-11CE-A9A7-00AA0040529B}
+ = IDSFolder
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070019-F6F7-11CE-A9A7-00AA0040529B}
+ = IProgressCallBack
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070003-F6F7-11CE-A9A7-00AA0040529B}
+ = IDSContainer
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+ = IObjectLifecycle
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070002-F6F7-11CE-A9A7-00AA0040529B}
+ = IDSBackendFolder
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {7707001D-F6F7-11CE-A9A7-00AA0040529B}
+ = ILabel
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {7707000B-F6F7-11CE-A9A7-00AA0040529B}
+ = ILabelContainer
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {7707001E-F6F7-11CE-A9A7-00AA0040529B}
+ = IEnumCLSID
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070017-F6F7-11CE-A9A7-00AA0040529B}
+ = IEnumSiteLinks
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070005-F6F7-11CE-A9A7-00AA0040529B}
+ = IDomainSites
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070016-F6F7-11CE-A9A7-00AA0040529B}
+ = ISiteDCs
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {7707001B-F6F7-11CE-A9A7-00AA0040529B}
+ = ISchedules
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070017-F6F7-11CE-A9A7-00AA0040529B}
+ = ISiteLinks
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070006-F6F7-11CE-A9A7-00AA0040529B}
+ = IDownlevelDomain
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070007-F6F7-11CE-A9A7-00AA0040529B}
+ = ITrustedDomain
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070008-F6F7-11CE-A9A7-00AA0040529B}
+ = IMigrationDomain
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070009-F6F7-11CE-A9A7-00AA0040529B}
+ = IEmulatedDomain
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {4e9984b0-74d7-11ce-bdd0-00aa004ba935}
+ = ICairoOraInitiator
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070018-F6F7-11CE-A9A7-00AA0040529B}
+ = IWorkstationJoin
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070014-F6F7-11CE-A9A7-00AA0040529B}
+ = IServiceControl
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070013-F6F7-11CE-A9A7-00AA0040529B}
+ = IScpRpcProps
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070012-F6F7-11CE-A9A7-00AA0040529B}
+ = IScpRnrProps
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+ {77070011-F6F7-11CE-A9A7-00AA0040529B}
+ = IScpMonikerProps
+ ProxyStubClsid32
+ = {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+
+//
+// Replication Class Definitions
+//
+ CLSID
+ {AF10D134-7C80-101A-90D0-08002B3061B5}
+ = Replica Set Object
+ InprocServer32
+ = ora.dll
+ ThreadingModel = Free
+ .rst
+ = RSet
+ RSet
+ = Replica Set Object
+ CLSID
+ = {AF10D134-7C80-101A-90D0-08002B3061B5}
+
+ CLSID
+ {7D688B00-8229-101A-90D0-08002B3061B5}
+ = Replica Object
+ InprocServer32
+ = ora.dll
+ ThreadingModel = Free
+ .rep
+ = RObj
+ RObj
+ = Replica Object
+ CLSID
+ = {7D688B00-8229-101A-90D0-08002B3061B5}
+
+ CLSID
+ {7D688CF4-8229-101A-90D2-08002B3061B5}
+ = Replica Connection Object
+ InprocServer32
+ = ora.dll
+ ThreadingModel = Free
+ .rcn
+ = RCon
+ RCon
+ = Replica Connection Object
+ CLSID
+ = {7D688CF4-8229-101A-90D2-08002B3061B5}
+
+ CLSID
+ {8EE5DAF0-F348-101A-A5D9-00AA00339311}
+ = Change Pipe Object
+ InprocServer32
+ = ora.dll
+ ThreadingModel = Free
+ .cgp
+ = ChgP
+ ChgP
+ = Change Pipe Object
+ CLSID
+ = {8EE5DAF0-F348-101A-A5D9-00AA00339311}
+
+ CLSID
+ {e1e1c311-a521-101a-9854-08002b2bdd1d}
+ = Repl CT Change Object
+ InprocServer32
+ = ora.dll
+ ThreadingModel = Free
+
+//
+// DFS Manager Class Definitions
+//
+
+ CLSID
+ {D9918520-B074-11CD-4794-268A826B0000}
+ = DfsVolume Object
+ LocalServer32
+ = dsyssvr.exe
+ ActivateAtBits
+ = Y
+
+//
+// DS Objects:
+//
+
+ CLSID
+ {77000001-F6F7-11CE-A9A7-00AA0040529B}
+ = PrimaryUser Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000101-F6F7-11CE-A9A7-00AA0040529B}
+ = PrimaryUser Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+ {77000002-F6F7-11CE-A9A7-00AA0040529B}
+ = LocalUser Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000102-F6F7-11CE-A9A7-00AA0040529B}
+ = LocalUser Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+ {77000003-F6F7-11CE-A9A7-00AA0040529B}
+ = DomainUser Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000103-F6F7-11CE-A9A7-00AA0040529B}
+ = DomainUser Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+ {77000004-F6F7-11CE-A9A7-00AA0040529B}
+ = LocalGroup Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000104-F6F7-11CE-A9A7-00AA0040529B}
+ = LocalGroup Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+ {77000005-F6F7-11CE-A9A7-00AA0040529B}
+ = DomainGroup Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000105-F6F7-11CE-A9A7-00AA0040529B}
+ = DomainGroup Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+ {77000006-F6F7-11CE-A9A7-00AA0040529B}
+ = Domain Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000106-F6F7-11CE-A9A7-00AA0040529B}
+ = Domain Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+ {77000007-F6F7-11CE-A9A7-00AA0040529B}
+ = Machine Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000107-F6F7-11CE-A9A7-00AA0040529B}
+ = Machine Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+ {77000008-F6F7-11CE-A9A7-00AA0040529B}
+ = DownlvlMachine Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000108-F6F7-11CE-A9A7-00AA0040529B}
+ = DownlvlMachine Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+ {77000009-F6F7-11CE-A9A7-00AA0040529B}
+ = PrejoinMachine Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000109-F6F7-11CE-A9A7-00AA0040529B}
+ = PrejoinMachine Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+
+ {7700000A-F6F7-11CE-A9A7-00AA0040529B}
+ = LocalOrgUnit Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {7700010A-F6F7-11CE-A9A7-00AA0040529B}
+ = LocalOrgUnit Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+
+ {7700000B-F6F7-11CE-A9A7-00AA0040529B}
+ = DomainOrgUnit Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {7700010B-F6F7-11CE-A9A7-00AA0040529B}
+ = DomainOrgUnit Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+
+ {7700000C-F6F7-11CE-A9A7-00AA0040529B}
+ = Site Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {7700010C-F6F7-11CE-A9A7-00AA0040529B}
+ = Site Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+
+ {7700000D-F6F7-11CE-A9A7-00AA0040529B}
+ = TrustedDomain Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {7700010D-F6F7-11CE-A9A7-00AA0040529B}
+ = TrustedDomain Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+
+ {7700000E-F6F7-11CE-A9A7-00AA0040529B}
+ = MigratedDomain Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {7700010E-F6F7-11CE-A9A7-00AA0040529B}
+ = MigratedDomain Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+
+ {7700000F-F6F7-11CE-A9A7-00AA0040529B}
+ = EmulatedDomain Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {7700010F-F6F7-11CE-A9A7-00AA0040529B}
+ = EmulatedDomain Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+
+ {77000010-F6F7-11CE-A9A7-00AA0040529B}
+ = Service Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000110-F6F7-11CE-A9A7-00AA0040529B}
+ = Service Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+
+ {77000011-F6F7-11CE-A9A7-00AA0040529B}
+ = Scp Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000111-F6F7-11CE-A9A7-00AA0040529B}
+ = Scp Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+
+
+
+ {77000012-F6F7-11CE-A9A7-00AA0040529B}
+ = ServiceRep Frontend Object
+ InprocServer32
+ = DSOBJS.DLL
+ ThreadingModel = Free
+ DefaultIcon
+ = dsobjs.dll, 1
+
+ {77000112-F6F7-11CE-A9A7-00AA0040529B}
+ = ServiceRep Backend Object
+ LocalServer32
+ = KDC.EXE
+ ActivateAtBits
+ = Y
+
+ {7707000D-F6F7-11CE-A9A7-00AA0040529B}
+ = Dsys_PSFactory (IObjectLifeCycle (BUGBUG[RajNath]))
+ InprocServer32
+ = dsys.dll
+ ThreadingModel = Free
+
+
+
+//
+// Summary Catalog Classes (Version 1)
+//
+
+
+ CLSID
+ {E83E8DB0-A7A6-101A-9C0B-08002B36B2B0}
+ = Summary Catalog Object
+ InprocServer32
+ = csumcat.dll
+ ThreadingModel = Free
+ DefaultIcon
+ = csumcat.dll, 0
+ .sc
+ = CSumCat
+ CSumCat
+ = Summary Catalog Object
+ CLSID
+ = {E83E8DB0-A7A6-101A-9C0B-08002B36B2B0}
+
+//
+// Summary Catalog Classes (Version 2)
+//
+
+ CLSID
+ {e58bb3f0-8b0d-11ce-8ba3-00aa006c2186}
+ = Summary Catalog Object
+ InprocServer32
+ = sumcat.dll
+ ThreadingModel = Free
+
+ {d3746700-7050-11ce-8b2c-00aa003c9b74}
+ = IConfigSummaryCatalog
+ InprocServer32
+ = sumcat.dll
+ ThreadingModel = Free
+
+ {1c5f6180-7051-11ce-8b2c-00aa003c9b74}
+ = IUpdateSummaryCatalog
+ InprocServer32
+ = sumcat.dll
+ ThreadingModel = Free
+
+ .sc
+ = CSummaryCatalog
+ CSummaryCatalog
+ = Summary Catalog Object
+ CLSID
+ = {e58bb3f0-8b0d-11ce-8ba3-00aa006c2186}
+
+ Interface
+ {d3746700-7050-11ce-8b2c-00aa003c9b74}
+ = IConfigSummaryCatalog
+ NumMethods
+ = 19
+
+ {1c5f6180-7051-11ce-8b2c-00aa003c9b74}
+ = IUpdateSummaryCatalog
+ NumMethods
+ = 4
+
+
diff --git a/public/oak/bin/i386mk.inc b/public/oak/bin/i386mk.inc
new file mode 100644
index 000000000..f991c4994
--- /dev/null
+++ b/public/oak/bin/i386mk.inc
@@ -0,0 +1,300 @@
+!IF 0
+
+Copyright (c) 1994-1996 Microsoft Corporation
+
+Module Name:
+
+ i386mk.inc
+
+Abstract:
+
+ This module contains the x86 specific build controls. It is included
+ by makefile.def.
+
+Revision History:
+
+!ENDIF
+
+#
+# x86 option control
+#
+
+UMBASE=$(UMBASE:*=i386)
+UMLIBS=$(UMLIBS:*=i386)
+NTRES=$(NTRES:*=i386)
+UMRES=$(UMRES:*=i386)
+UMOBJS=$(UMOBJS:*=i386)
+LINKLIBS=$(LINKLIBS:*=i386)
+GDI_DRIVER_LIBS=$(GDI_DRIVER_LIBS:*=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)
+MFC_STATIC_LIB=$(MFC_STATIC_LIB:*=i386)
+CRT_LIB_PATH=$(CRT_LIB_PATH:*=i386)
+SDK_LIB_PATH=$(SDK_LIB_PATH:*=i386)
+ORDER=$(ORDER:*=i386)
+
+!IF "$(TARGETTYPE)"=="DRIVER" || \
+ "$(TARGETTYPE)" == "EXPORT_DRIVER" || \
+ "$(TARGETTYPE)" == "HAL" || \
+ "$(TARGETTYPE)"=="GDI_DRIVER" || \
+ "$(TARGETTYPE)"=="MINIPORT"
+#
+#Drivers don't link with link libs.
+#
+MACHINE_TARGETLIBS=$(SDK_LIB_PATH)\int64.lib $(MACHINE_TARGETLIBS)
+!ELSE
+!IF defined(USE_NTDLL) || defined (USE_NOLIBS)
+MACHINE_TARGETLIBS=$(SDK_LIB_PATH)\int64.lib $(MACHINE_TARGETLIBS)
+!ENDIF
+!ENDIF
+
+!ifdef NTTARGETFILES
+NTTARGETFILES=$(NTTARGETFILES:*=i386)
+!endif
+!ifdef NTTARGETFILE0
+NTTARGETFILE0=$(NTTARGETFILE0:*=i386)
+!endif
+!ifdef NTTARGETFILE1
+NTTARGETFILE1=$(NTTARGETFILE1:*=i386)
+!endif
+
+!IF "$(DLLENTRY)" != "-noentry"
+! IF "$(DLLENTRY:@12=)" == "$(DLLENTRY)"
+DLLENTRY=$(DLLENTRY)@12
+! ENDIF
+!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_PERFFLAGS
+PERFFLAGS = $(386_PERFFLAGS)
+!endif
+
+# Set MSC_OPTIMIZATION.
+# Order of precedence:
+# Platform specific override
+# Environment variable
+# System Default
+
+!if defined(386_OPTIMIZATION)
+MSC_OPTIMIZATION=$(386_OPTIMIZATION)
+!elseif !defined(MSC_OPTIMIZATION)
+MSC_OPTIMIZATION=$(DEFAULT_MSC_OPT)
+!endif
+
+DBGFLAGS=$(DBGFLAGS) $(MSC_OPTIMIZATION)
+
+!IFDEF 386_CPPFLAGS
+MSC_CPPFLAGS=$(386_CPPFLAGS)
+!ENDIF
+
+# Undocumented switch definitions
+# /QIfdiv- : Don't emit code to test for bad pentiums
+# /QIf : Emit FPO records for every function
+
+!ifdef NO_READONLY_STRINGS
+STRING_POOLING = /Gf
+!else
+STRING_POOLING = /GF
+!endif
+
+!ifdef USE_NATIVE_EH
+EH_FLAGS=/GX /GR
+!else
+EH_FLAGS=/GX- /GR-
+!endif
+
+!ifdef USE_INCREMENTAL_COMPILING
+C_INCREMENTAL_FLAG = /Gi /Gm
+USE_PDB_TO_COMPILE = 1
+!else
+C_INCREMENTAL_FLAG = /Gi- /Gm-
+!endif
+
+!ifndef X86_CPU_OPTIMIZATION
+X86_CPU_OPTIMIZATION=/GB
+!endif
+
+STDFLAGS= /c /Zel /Zp8 /Gy $(CBSTRING) $(MSC_WARNING_LEVEL) $(MSC_CALL_TYPE) \
+ /QIfdiv- /QIf $(X86_CPU_OPTMIZATION) $(C_INCREMENTAL_FLAG) $(EH_FLAGS) $(STRING_POOLING) $(MFC_FLAGS)
+
+!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)" == "" || "$(NTDEBUG)" == "ntsdnodbg"
+ASM_DBG_DEFINES=-DDBG=0
+! 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
+
+!ifndef USE_PDB_TO_COMPILE
+DBGFLAGS=$(DBGFLAGS:/Zi=-Z7)
+DBGFLAGS=$(DBGFLAGS:-Zi=-Z7)
+!else
+! if "$(TARGETTYPE)" == "LIBRARY"
+DBGFLAGS=$(DBGFLAGS) /Fd$(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).pdb
+! else
+DBGFLAGS=$(DBGFLAGS) /Fd$(MAKEDIR)\$(_OBJ_DIR)\i386^\
+! endif
+!endif
+
+!ifdef BROWSER_INFO
+DBGFLAGS=$(DBGFLAGS) /FR$(MAKEDIR)\$(_OBJ_DIR)\i386^\
+!endif
+
+!IFDEF NTBBT
+DBGFLAGS=$(DBGFLAGS) /Z7
+386_ADBGFLAGS=$(386_ADBGFLAGS) /Zi
+LINKER_FLAGS=$(LINKER_FLAGS) -debug:full -debugtype:cv,fixup
+! ifndef USE_PDB
+LINKER_MERGE_RDATA=
+! endif
+!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) $(PERFFLAGS) $(USER_C_FLAGS)
+386_ASMFLAGS=$(386_ADBGFLAGS) $(STD_DEFINES) $(ASM_DBG_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)
+
+NP_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(COMPILER_WARNINGS)
+
+C_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED)
+CXX_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED_CXX)
+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_CXX_MSG=$(CXX_COMPILER) $<
+
+ECHO_PRECOMPILED_MSG1=$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) $(PRECOMPILED_SOURCEFILE) \
+ $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)
+
+ECHO_PRECOMPILED_MSG2=$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) \
+ $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)
+
+
+{}.c{}.asm:
+ $(C_COMPILER_NAME) @<< /Fa $(MAKEDIR)\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\i386\}.asm{}.lst:
+ $(386_ASSEMBLER) /Fl$@ /Fo$(_OBJ_DIR)\i386\$(@B).obj $<
+
+{i386\}.asm{}.lst:
+ $(386_ASSEMBLER) /Fl$@ /Fo$(MAKEDIR)\$(_OBJ_DIR)\i386\$(@B).obj $<
+
+{..\i386\}.asm{$(_OBJ_DIR)\i386\}.obj:
+ $(386_ASSEMBLER) -Fo$(MAKEDIR)\$@ $<
+
+{$(_OBJ_DIR)\i386\}.asm{$(_OBJ_DIR)\i386\}.obj:
+ $(386_ASSEMBLER) -Fo$(MAKEDIR)\$@ $<
+
+{i386\}.asm{$(_OBJ_DIR)\i386\}.obj:
+ $(386_ASSEMBLER) -Fo$(MAKEDIR)\$@ $<
+
+!IF DEFINED (CAIRO_PRODUCT)
+! IF DEFINED (_CAIRO386TREE)
+_NTTREE=$(_CAIRO386TREE)
+_NTTREE_NO_SPLIT=$(_CAIRO386TREE_NS)
+! ENDIF
+!ELSEIF DEFINED (CHICAGO_PRODUCT)
+! IF DEFINED (_CHICAGO386TREE)
+_NTTREE=$(_CHICAGO386TREE)
+_NTTREE_NO_SPLIT=$(_CHICAGO386TREE_NS)
+! elseif defined(_NT386TREE)
+_NTTREE=$(_NT386TREE)
+_NTTREE_NO_SPLIT=$(_NT386TREE_NS)
+! ENDIF
+!ELSEIF DEFINED (_NT386TREE)
+_NTTREE=$(_NT386TREE)
+_NTTREE_NO_SPLIT=$(_NT386TREE_NS)
+!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/public/oak/bin/makefile.def b/public/oak/bin/makefile.def
new file mode 100644
index 000000000..28e9e2515
--- /dev/null
+++ b/public/oak/bin/makefile.def
@@ -0,0 +1,2494 @@
+!IF 0
+
+Copyright (c) 1989-1996 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
+
+
+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.
+!ENDIF
+
+!if 0
+! message You must use nmake version 1.30 or greater...
+!endif
+
+# A couple of overrides
+
+!ifndef SDK_INC_PATH
+SDK_INC_PATH = $(BASEDIR)\public\sdk\inc
+!endif
+
+!ifndef SDK_LIB_PATH
+SDK_LIB_PATH = $(BASEDIR)\public\sdk\lib\*
+!endif
+
+!ifndef DDK_LIB_PATH
+DDK_LIB_PATH = $(BASEDIR)\public\sdk\lib\*
+!endif
+
+!ifndef CRT_INC_PATH
+CRT_INC_PATH = $(BASEDIR)\public\sdk\inc\crt
+!endif
+
+!ifndef CRT_LIB_PATH
+CRT_LIB_PATH = $(BASEDIR)\public\sdk\lib\*
+!endif
+
+!ifndef OAK_INC_PATH
+OAK_INC_PATH = $(BASEDIR)\public\oak\inc
+!endif
+
+!ifndef MASTER_VERSION_FILE
+MASTER_VERSION_FILE = $(BASEDIR)\public\sdk\inc\ntverp.h
+!endif
+
+
+#
+# Select build target and set platform specific variables.
+#
+
+!INCLUDE makefile.plt
+
+
+#
+# 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_DIR)\$(TARGET_DIRECTORY)
+! endif
+
+! ifndef MC_OUT_DIR
+MC_OUT_DIR = $(_OBJ_DIR)\$(TARGET_DIRECTORY)
+! endif
+!endif
+
+!ifndef LANGUAGE
+LANGUAGE=usa
+!endif
+
+# define a simple macro that can be used for the object subdir in makefile.inc/sources files
+
+O = $(_OBJ_DIR)\$(TARGET_DIRECTORY)
+
+#
+# Include the developer supplied file that defines the TARGETNAME, TARGETPATH,
+# TARGETTYPE and SOURCES macros. Make sure it defines them.
+#
+
+!ifdef USE_ICECAP
+PERFFLAGS=-Gh
+PERFLIBS=$(SDK_LIB_PATH)\icap.lib
+! if $(FREEBUILD)
+NTDEBUG=ntsdnodbg
+! else
+NTDEBUG=ntsd
+! endif
+NTDEBUGTYPE=both
+NTBBT=1
+!endif
+
+!INCLUDE .\sources.
+SOURCES_USED=$(SOURCES_USED) .\sources
+
+!if defined(LOCALIZED_RESOURCES) && !defined(RCCODEPAGE)
+! if "$(LANGUAGE)" == "JPN" || "$(LANGUAGE)" == "jpn"
+RCCODEPAGE=932
+! elseif "$(LANGUAGE)" == "KOR" || "$(LANGUAGE)" == "kor"
+RCCODEPAGE=949
+! elseif "$(LANGUAGE)" == "CHS" || "$(LANGUAGE)" == "chs"
+RCCODEPAGE=950
+! elseif "$(LANGUAGE)" == "CHT" || "$(LANGUAGE)" == "cht"
+RCCODEPAGE=936
+! endif
+!endif
+
+#
+# Attempt to include the sources file from the target subdirectory.
+#
+
+#
+# Set far east specific defines based on the project
+#
+
+!if "$(ALT_PROJECT)" != ""
+C_DEFINES=$(C_DEFINES) -D_$(ALT_PROJECT)_
+!endif
+
+!IF "$(ALT_PROJECT)" == "FE"
+C_DEFINES=$(C_DEFINES) -DFE_SB -DFE_IME
+ASM_DEFINES=$(ASM_DEFINES) -DFE_SB
+!ENDIF
+
+!IF "$(ALT_PROJECT)" == "KEIZON"
+C_DEFINES=$(C_DEFINES) -DMEMPHIS_MENUS -DMEMPHIS_MENU_WATERMARKS -DMEMPHIS_MENU_ANIMATION -DWINVER=0X040A
+EXPECTED_WINVER=0x040a
+C_COMPILER_FLAGs=$(C_COMPILER_FLAGs) -DWINVER=0X040A
+!ENDIF
+
+!IF "$(ALT_PROJECT)" == "DS"
+# Nothing, just -D_DS_ from above
+!ENDIF
+
+!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 this is a DS build (for now), include a file full of overrides
+#
+
+!ifdef DS_BUILD
+!INCLUDE ds.mk
+!endif
+
+
+!IFNDEF TARGETPATH
+! ERROR Your .\sources. file must define the TARGETPATH= macro
+!ENDIF
+
+!if "$(TARGETPATH)" == "obj" || "$(TARGETPATH)" == "OBJ"
+TARGETPATH=$(_OBJ_DIR)
+!endif
+
+!ifdef TARGETPATHLIB
+! if ("$(TARGETTYPE)" == "DYNLINK") || ("TARGETTYPE" == "EXPORT_DRIVER")
+! if "$(MAKEDLL)" == ""
+# Pass 1 of a two pass build. Make sure TargetPath is the same as targetpathlib.
+NO_BROWSER_FILE=1
+TARGETPATH=$(TARGETPATHLIB)
+! endif
+! endif
+!else
+TARGETPATHLIB=$(TARGETPATH)
+!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
+
+!if ("$(BUILD_ALT_DIR)" != "" && "$(BUILD_ALT_DIR)" != "d")
+! if ("$(UMAPPL:*=X)" != "$(UMAPPL)")
+! error Can't use multiple UMAPPL with Alternate Directories (other than "d")
+! elseif ("$(UMTEST:*=X)" != "$(UMTEST)")
+! error Can't use multiple UMTEST with Alternate Directories (other than "d")
+! endif
+!endif
+
+!IFNDEF UMTYPE
+UMTYPE=nt
+!ENDIF
+
+!ifndef COFFBASE_TXT_FILE
+COFFBASE_TXT_FILE = $(BASEDIR)\public\sdk\lib\coffbase.txt
+!endif
+
+!IFNDEF UMBASE
+! IFDEF COFFBASE
+UMBASE=@$(COFFBASE_TXT_FILE),$(COFFBASE)
+! ELSE
+UMBASE=@$(COFFBASE_TXT_FILE),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. #
+#---------------------------------------------------------#
+
+! ifndef UMENTRY
+! ifdef USE_MFC30
+UMENTRY=winmain
+! else
+! ifdef USE_MFCUNICODE
+UMENTRY=wwinmain
+! else
+UMENTRY=winmain
+! endif
+! endif
+! endif
+
+! if "$(TARGETTYPE)" == "DYNLINK"
+! ifndef DLLENTRY
+DLLENTRY=_DllMainCRTStartup
+! endif
+! endif
+
+! ifndef UMTYPE
+UMTYPE=windows
+! endif
+
+UMENTRYABS=
+
+# Allow other MFC's.
+# To do so, you need to:
+# 1. Define MFC_INCLUDES to point to your MFC headers.
+# 2. Define MFC_LIBS to point to your MFC libraries (specifically, the dll
+# library)
+# 3. Define USE_MSVCRT=1 if you don't want to link with the NT CRT DLL.
+#
+# Note:
+# There is only one type of build (_AFXDLL or MFC in a DLL linking to the
+# CRT in a dll).
+# You should disable the alternate MFC's if compiling for RISC platforms.
+# You need to handle specifying the correct libs for Check/Free and
+# Ansi/Unicode.
+
+! if !defined(USE_MSVCRT) && !defined(USE_NOLIBS) && !defined(USE_MSVCRT40) && !defined(USE_MSVCRT20)
+! if defined(USE_STATIC_MFC)
+USE_LIBCMT=1
+! else
+USE_CRTDLL=1
+! endif
+! endif
+
+MFC_FLAGS=$(MFC_FLAGS) -D_AFX_NOFORCE_LIBS
+
+! ifdef DEBUG_CRTS
+MFC_FLAGS=$(MFC_FLAGS) -D_AFX_ENABLE_INLINES
+! endif
+
+! IFNDEF NOMFCPDB
+USE_PDB=1
+! ENDIF
+
+! IFDEF USE_MFCUNICODE
+UNICODE=1
+MFC_FLAGS=$(MFC_FLAGS) -DUNICODE -D_UNICODE
+! ENDIF
+
+
+! ifdef USE_MFC30
+
+DCRT=
+
+MFC_FLAGS=$(MFC_FLAGS) -D_AFXDLL
+
+! ifndef MFC_INCLUDES # Allow MFC_INCLUDES override for MSN
+MFC_INCLUDES=$(SDK_INC_PATH)\mfc30
+! ifdef MFC_LANGUAGE
+MFC_INCLUDES=$(SDK_INC_PATH)\mfc30\l.$(MFC_LANGUAGE);$(MFC_INCLUDES)
+! endif
+! endif
+
+! if $(FREEBUILD)
+MFC_FLAGS = $(MFC_FLAGS) -DNDEBUG
+! else
+MFC_FLAGS = $(MFC_FLAGS) -D_DEBUG
+! endif
+
+! ifndef MFC_LIBS
+! if $(FREEBUILD)
+! ifdef USE_MFCUNICODE
+MFC_LIBS=$(SDK_LIB_PATH)\cfm30u.lib $(SDK_LIB_PATH)\cfmo30u.lib
+! else
+MFC_LIBS=$(SDK_LIB_PATH)\cfm30.lib $(SDK_LIB_PATH)\cfmo30.lib
+! endif
+! else
+! ifdef USE_MFCUNICODE
+MFC_LIBS=$(SDK_LIB_PATH)\cfm30ud.lib $(SDK_LIB_PATH)\cfmo30ud.lib
+! else
+MFC_LIBS=$(SDK_LIB_PATH)\cfm30d.lib $(SDK_LIB_PATH)\cfmo30d.lib
+! endif
+! endif
+! endif
+
+! else
+
+# Assume Latest MFC (4.0 for now)
+
+! ifndef USE_STATIC_MFC
+MFC_FLAGS=$(MFC_FLAGS) -D_AFXDLL
+LINKER_FLAGS = $(LINKER_FLAGS) /include:__afxForceSTDAFX
+! ifdef MFC_USRDLL
+MFC_FLAGS=$(MFC_FLAGS) -D_USRDLL
+LINKER_FLAGS = $(LINKER_FLAGS) /include:__afxForceUSRDLL
+! endif
+! endif
+
+# MFC 4 uses Native EH only
+
+USE_NATIVE_EH=1
+
+# UNICODE must use the UNICODE entrypoint
+
+! ifdef USE_MFCUNICODE
+! if "$(UMENTRY)" == "winmain"
+UMENTRY = wwinmain
+! else if "$(UMENTRY)" == "main"
+UMENTRY = wmain
+! endif
+! endif
+
+! ifndef MFC_VER
+MFC_VER=42
+! endif
+
+! ifndef MFC_INCLUDES # Allow MFC_INCLUDES override for MSN
+MFC_INCLUDES=$(SDK_INC_PATH)\mfc$(MFC_VER)
+! ifdef MFC_LANGUAGE
+MFC_INCLUDES=$(SDK_INC_PATH)\mfc$(MFC_VER)\l.$(MFC_LANGUAGE);$(MFC_INCLUDES)
+! endif
+! endif
+
+! ifndef MFC_LIBS
+! ifdef USE_STATIC_MFC
+
+! ifdef DEBUG_CRTS
+! ifdef USE_MFCUNICODE
+MFC_STATIC_LIB =
+MFC_LIBS=$(SDK_LIB_PATH)\uafxcwd.lib
+! else
+MFC_STATIC_LIB =
+MFC_LIBS=$(SDK_LIB_PATH)\nafxcwd.lib
+! endif
+! else
+! ifdef USE_MFCUNICODE
+MFC_STATIC_LIB =
+MFC_LIBS=$(SDK_LIB_PATH)\uafxcw.lib
+! else
+MFC_STATIC_LIB =
+MFC_LIBS=$(SDK_LIB_PATH)\nafxcw.lib
+! endif
+! endif
+
+! else # USE_STATIC_MFC
+
+! ifdef DEBUG_CRTS
+! ifdef USE_MFCUNICODE
+MFC_STATIC_LIB = $(SDK_LIB_PATH)\mfcs$(MFC_VER)ud.lib
+MFC_LIBS=$(SDK_LIB_PATH)\mfc$(MFC_VER)ud.lib \
+ $(SDK_LIB_PATH)\mfcd$(MFC_VER)ud.lib \
+ $(SDK_LIB_PATH)\mfcn$(MFC_VER)ud.lib \
+ $(SDK_LIB_PATH)\mfco$(MFC_VER)ud.lib
+! else
+MFC_STATIC_LIB = $(SDK_LIB_PATH)\mfcs$(MFC_VER)d.lib
+MFC_LIBS=$(SDK_LIB_PATH)\mfc$(MFC_VER)d.lib \
+ $(SDK_LIB_PATH)\mfcd$(MFC_VER)d.lib \
+ $(SDK_LIB_PATH)\mfcn$(MFC_VER)d.lib \
+ $(SDK_LIB_PATH)\mfco$(MFC_VER)d.lib
+! endif
+! else
+! ifdef USE_MFCUNICODE
+MFC_STATIC_LIB = $(SDK_LIB_PATH)\mfcs$(MFC_VER)u.lib
+MFC_LIBS=$(SDK_LIB_PATH)\mfc$(MFC_VER)u.lib
+! else
+MFC_STATIC_LIB = $(SDK_LIB_PATH)\mfcs$(MFC_VER).lib
+MFC_LIBS=$(SDK_LIB_PATH)\mfc$(MFC_VER).lib
+! endif
+! endif
+MFC_LIBS=$(MFC_STATIC_LIB) $(MFC_LIBS)
+
+! endif # USE_STATIC_MFC
+! endif # MFC_LIBS
+! endif # MFC 3/4
+
+!endif
+
+!ifdef USE_MFC30
+LIBC_DEFINES=
+!else
+! ifdef DEBUG_CRTS
+DCRT=d
+LIBC_DEFINES = -D_DEBUG
+! else
+DCRT=
+LIBC_DEFINES = -DNDEBUG
+! endif
+!endif
+
+# For all but X86, MSVCRT20==MSVCRT40==CRTDLL==MSVCRT
+!if "$(TARGET_DIRECTORY)" != "i386"
+! if defined(USE_MSVCRT20)
+USE_MSVCRT=1
+! undef USE_MSVCRT20
+! elseif defined(USE_MSVCRT40)
+USE_MSVCRT=1
+! undef USE_MSVCRT40
+! elseif defined(USE_CRTDLL)
+USE_MSVCRT=1
+! undef USE_CRTDLL
+! endif
+!endif
+
+!if defined(USE_CRTDLL)
+
+LIBC_LIB=$(CRT_LIB_PATH)\crtdll$(DCRT).lib $(CRT_LIB_PATH)\msvcirt$(DCRT).lib
+LIBC_DEFINES=$(LIBC_DEFINES) -D_DLL=1 -D_MT=1
+
+!elseif defined(USE_MSVCRT)
+
+LIBC_LIB=$(CRT_LIB_PATH)\msvcrt$(DCRT).lib $(CRT_LIB_PATH)\msvcirt$(DCRT).lib
+LIBC_DEFINES=$(LIBC_DEFINES) -D_DLL=1 -D_MT=1
+
+!elseif defined(USE_LIBCMT)
+
+LIBC_LIB=$(CRT_LIB_PATH)\libcmt$(DCRT).lib
+LIBC_DEFINES=$(LIBC_DEFINES) -D_MT=1
+
+!elseif defined(USE_LIBCNTPR)
+
+LIBC_LIB=$(CRT_LIB_PATH)\libcntpr.lib
+
+!elseif (defined(USE_NTDLL) || \
+ "$(TARGETTYPE)" == "DRIVER" || \
+ "$(TARGETTYPE)" == "EXPORT_DRIVER" || \
+ defined(USE_SYSDLL) )
+
+LIBC_DEFINES=$(LIBC_DEFINES) -D_DLL=1
+LIBC_LIB=
+
+!elseif defined(USE_NOLIBS) || \
+ "$(TARGETTYPE)" == "HAL" || \
+ "$(TARGETTYPE)" == "GDI_DRIVER"
+
+NO_NTDLL=1
+LIBC_LIB=
+
+!elseif defined(USE_MSVCRT20)
+
+LIBC_LIB=$(CRT_LIB_PATH)\msvcrt2$(DCRT).lib
+LIBC_DEFINES=$(LIBC_DEFINES) -D_DLL=1 -D_MT=1
+
+!elseif defined(USE_MSVCRT40)
+
+LIBC_LIB=$(CRT_LIB_PATH)\msvcrt4$(DCRT).lib
+LIBC_DEFINES=$(LIBC_DEFINES) -D_DLL=1 -D_MT=1
+
+!else
+
+LIBC_LIB=$(CRT_LIB_PATH)\libc$(DCRT).lib
+
+!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
+LIBRARY_PATH = $(SDK_LIB_PATH)
+!endif
+
+!if defined(USE_MFC) || defined(USE_MFCUNICODE)
+LIBC_LIB = $(MFC_LIBS) $(LIBC_LIB)
+!endif
+
+NT_LIBS=$(LIBRARY_PATH)\ntdll.lib
+GUI32_LIBS=$(LIBRARY_PATH)\gdi32.lib \
+ $(LIBRARY_PATH)\user32.lib
+
+!IFDEF CAIRO_PRODUCT
+NT_LIBS=$(NT_LIBS:lib\*\ntdll.lib=lib\cairo\*\ntdll.lib)
+!ENDIF
+
+NT_CRT=$(LIBRARY_PATH)\nt.lib
+WIN32_LIBS=$(LIBC_LIB) \
+ $(LIBRARY_PATH)\advapi32.lib \
+ $(LIBRARY_PATH)\kernel32.lib
+
+NTSS_LIBS=$(NT_LIBS) $(NT_CRT) $(SDK_LIB_PATH)\smdll.lib
+
+OS2_LIBS=$(NT_LIBS) $(SDK_LIB_PATH)\os2dll.lib
+
+POSIX_LIBS=$(NT_LIBS) $(SDK_LIB_PATH)\libcpsx.lib \
+ $(SDK_LIB_PATH)\psxdll.lib \
+ $(SDK_LIB_PATH)\psxrtl.lib
+
+!ifndef SUBSYSTEM_VERSION
+! ifndef EXPECTED_WINVER
+SUBSYSTEM_WINVER = ,4.00
+! else
+SUBSYSTEM_WINVER = ,$(EXPECTED_WINVER)
+! endif
+SUBSYSTEM_CONVER = ,4.00
+SUBSYSTEM_OS2VER =
+SUBSYSTEM_POSIXVER =
+SUBSYSTEM_NATVER = ,4.00
+!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=$(CRT_INC_PATH)
+
+STD_CALL_ENTRY=1
+UMENTRY=-entry:NtProcessStartup
+
+UMLIBS=$(UMLIBS) $(NT_LIBS) $(NT_CRT)
+
+!ELSEIF "$(UMTYPE)" == "windows"
+
+SUBSYSTEM=windows$(SUBSYSTEM_WINVER)
+UMINCL=$(CRT_INC_PATH)
+
+! IF "$(UMENTRY)" == "winmain"
+UMENTRY=-entry:WinMainCRTStartup
+! ELSEIF "$(UMENTRY)" == "wwinmain"
+UMENTRY=-entry:wWinMainCRTStartup
+! ELSEIF "$(UMENTRY)" == "wmain"
+UMENTRY=-entry:wmainCRTStartup
+! ELSEIF "$(UMENTRYABS)" == ""
+UMENTRY=-entry:mainCRTStartup
+! ELSE
+UMENTRY=-entry:$(UMENTRYABS)
+! ENDIF
+
+UMLIBS=$(UMLIBS) $(WIN32_LIBS) $(GUI32_LIBS)
+
+!ELSEIF "$(UMTYPE)" == "console"
+
+SUBSYSTEM=console$(SUBSYSTEM_CONVER)
+UMINCL=$(CRT_INC_PATH)
+
+! IF "$(UMENTRY)" == "winmain"
+UMENTRY=-entry:WinMainCRTStartup
+! ELSEIF "$(UMENTRY)" == "wwinmain"
+UMENTRY=-entry:wWinMainCRTStartup
+! ELSEIF "$(UMENTRY)" == "wmain"
+UMENTRY=-entry:wmainCRTStartup
+! ELSEIF "$(UMENTRYABS)" == ""
+UMENTRY=-entry:mainCRTStartup
+! ELSE
+UMENTRY=-entry:$(UMENTRYABS)
+! ENDIF
+
+UMLIBS=$(UMLIBS) $(WIN32_LIBS)
+
+!ELSEIF "$(UMTYPE)" == "ntss"
+
+SUBSYSTEM=native$(SUBSYSTEM_NATVER)
+UMINCL=$(CRT_INC_PATH)
+
+STD_CALL_ENTRY=1
+UMENTRY=-entry:NtProcessStartup
+
+UMLIBS=$(UMLIBS) $(NTSS_LIBS)
+
+!ELSEIF "$(UMTYPE)" == "os2"
+
+SUBSYSTEM=os2$(SUBSYSTEM_OS2VER)
+UMINCL=$(SDK_INC_PATH)\os2;$(CRT_INC_PATH)
+
+STD_CALL_ENTRY=1
+UMENTRY=-entry:NtProcessStartup
+
+UMLIBS=$(UMLIBS) $(OS2_LIBS)
+
+!ELSEIF "$(UMTYPE)" == "posix"
+
+SUBSYSTEM=posix$(SUBSYSTEM_POSIXVER)
+UMINCL=$(SDK_INC_PATH)\posix;$(CRT_INC_PATH)
+
+UMENTRY=-entry:__PosixProcessStartup
+
+UMLIBS=$(UMLIBS) $(POSIX_LIBS)
+
+!ELSE
+! ERROR Invalid UMTYPE value - $(UMTYPE)
+!ENDIF # UMTYPE tests
+
+
+#
+# If you edit this line you need to modify $(BASEDIR)\private\sdktools\build\build.c
+#
+
+!IFDEF NTINCPATH
+NTINCLUDES=$(OAK_INC_PATH);$(NTINCPATH)\$(TARGET_DIRECTORY)\inc
+!ELSE
+NTINCLUDES=$(OAK_INC_PATH);$(SDK_INC_PATH)
+!ENDIF
+
+!IFNDEF COMPILER_WARNINGS
+COMPILER_WARNINGS=-FI$(SDK_INC_PATH)\warning.h
+!ENDIF
+
+!IFDEF CAIRO_PRODUCT
+WIN32_DEFINE=-DWIN32=300 -D_CAIRO_=300 -DWINNT=1 -D_WIN32_WINNT=0x0400
+! IFNDEF NOT_UNICODE
+WIN32_DEFINE=$(WIN32_DEFINE) -DUNICODE -D_UNICODE
+! ENDIF
+
+!ELSE
+
+! IFDEF CHICAGO_PRODUCT
+NTINCLUDES=$(BASEDIR)\public\sdk\inc\chicago;$(BASEDIR)\public\sdk\inc\chicago\crt;$(NTINCLUDES)
+NO_NTDLL=1
+! IFNDEF WIN32_DEFINE
+WIN32_DEFINE=-DWIN32=200 -D_CHICAGO_=200 -D_WIN32_WINDOWS=0x040a
+! ENDIF
+
+! ELSE
+WIN32_DEFINE=-DWIN32=100 -D_NT1X_=100 -DWINNT=1 -D_WIN32_WINNT=0x0400
+CAIRO_LIB_PATH=$(BASEDIR)\public\sdk\lib
+! ENDIF
+
+!ENDIF
+
+INCLUDES = $(INCLUDES: =)
+NTINCLUDES = $(NTINCLUDES: =)
+UMINCL = $(UMINCL: =)
+MFC_INCLUDES = $(MFC_INCLUDES: =)
+USER_INCLUDES =$(USER_INCLUDES: =)
+
+# MFC and USER first
+
+INCPATH0=-I$(MFC_INCLUDES:;= -I) -I$(USER_INCLUDES:;= -I)
+INCPATH1=-I$(MFC_INCLUDES:;= -I) -I$(USER_INCLUDES:;= -I)
+
+# INCLUDES if set
+
+!ifdef INCLUDES
+INCPATH0 = $(INCPATH0) -I$(INCLUDES:;= -I)
+INCPATH1 = $(INCPATH1) -I$(INCLUDES:;= -I)
+!endif
+
+# Finally NT and UM
+
+INCPATH0=$(INCPATH0) -I$(NTINCLUDES:;= -I) -I$(UMINCL:;= -I)
+INCPATH1=$(INCPATH1) -I$(NTINCLUDES:;= -I) -I$(UMINCL:;= -I)
+
+# Remove empty "-I " settings (INCL/NTINCLUDES/UMINCL/MFC_INCLUDES macros may be empty above)
+
+INCPATH0=$(INCPATH0:-I =)
+INCPATH1=$(INCPATH1:-I =)
+
+!IFNDEF RELATIVE_DEPTH
+RELATIVE_DEPTH=..\..
+!ENDIF
+
+!IFNDEF DLLENTRY
+DLLENTRY=-noentry
+!ELSE
+! if "$(DLLENTRY:-entry:=)" == "$(DLLENTRY)"
+DLLENTRY=-entry:$(DLLENTRY)
+! endif
+!ENDIF
+
+!IFNDEF DLLBASE
+! IFDEF COFFBASE
+DLLBASE=@$(COFFBASE_TXT_FILE),$(COFFBASE)
+! ELSE
+DLLBASE=@$(COFFBASE_TXT_FILE),$(TARGETNAME)
+! ENDIF
+!ENDIF
+
+!IFNDEF DLLDEF
+DLLDEF=$(@B).def
+!ENDIF
+
+!IFNDEF BOOTBASE
+! IFDEF FRAZZLE
+BOOTBASE=0xd0100000,0xd0104000
+! ELSE
+BOOTBASE=0xd0ff0000,0xd0ff4000
+! ENDIF
+!ENDIF
+
+!IFNDEF DRIVERBASE
+DRIVERBASE=0x10000
+!ENDIF
+
+!IFNDEF HALBASE
+HALBASE=0x80010000
+!ENDIF
+
+#
+# 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=$(DLLLIBOBJECTS) $(386_DLLLIBOBJECTS)
+!ELSEIF $(MIPS)
+OBJECTS=$(MIPS_OBJECTS)
+DLLLIBOBJECTS=$(DLLLIBOBJECTS) $(MIPS_DLLLIBOBJECTS)
+!ELSEIF $(ALPHA)
+OBJECTS=$(ALPHA_OBJECTS)
+DLLLIBOBJECTS=$(DLLLIBOBJECTS) $(ALPHA_DLLLIBOBJECTS)
+!ELSEIF $(PPC)
+OBJECTS=$(PPC_OBJECTS)
+DLLLIBOBJECTS=$(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."
+
+DYNLINK_LIB=$(TARGETPATHLIB)\$(TARGET_DIRECTORY)\$(TARGETNAME).lib
+DYNLINK_EXP=$(TARGETPATHLIB)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp
+
+#
+# Determine type of target link we are doing
+#
+!IF "$(TARGETTYPE)" == "PROGLIB"
+TARGETEXT=exe
+TARGETLIB=
+!ELSEIF "$(TARGETTYPE)" == "PROGRAM"
+TARGETEXT=exe
+TARGETLIB=
+!ELSEIF "$(TARGETTYPE)" == "DYNLINK"
+
+! IF "$(MAKEDLL)" != ""
+! IF "$(UMTYPE)" == "os2"
+TARGETLIB=$(SDK_LIB_PATH)\ntdll.lib
+
+! ELSEIF "$(UMTYPE)" == "posix"
+TARGETLIB=$(SDK_LIB_PATH)\libcpsx.lib $(SDK_LIB_PATH)\ntdll.lib
+
+! ELSEIF "$(TARGETNAME)" == "ntdll"
+TARGETLIB=
+
+! ELSEIF defined (USE_NTDLL) # USE_NTDLL never links with LIBC_LIB
+TARGETLIB=$(WIN32DLL_LIBS) $(SDK_LIB_PATH)\ntdll.lib
+
+! ELSEIF defined (USE_SYSDLL) # USE_SYSDLL uses either kernel32 (Win95) or ntdll (NT) for CRT support
+! if defined(CHICAGO_PRODUCT)
+TARGETLIB=$(WIN32DLL_LIBS) $(SDK_LIB_PATH)\kernel32.lib
+! else
+TARGETLIB=$(WIN32DLL_LIBS) $(SDK_LIB_PATH)\ntdll.lib
+! endif
+! ELSEIF defined (NO_NTDLL) # NO_NTDLL never links with ntdll
+TARGETLIB=$(WIN32DLL_LIBS) $(LIBC_LIB)
+
+! ELSE # Everything else uses ntdll after libc.
+TARGETLIB=$(WIN32DLL_LIBS) $(LIBC_LIB) $(SDK_LIB_PATH)\ntdll.lib
+
+! 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
+TARGETLIB=$(TARGETLIB:lib\*\ntdll.lib=lib\cairo\*\ntdll.lib)
+! ENDIF
+! ELSE # "$(MAKEDLL)" != ""
+TARGETEXT=lib
+TARGETLIB=
+! ENDIF # "$(MAKEDLL)" != ""
+
+!ELSEIF "$(TARGETTYPE)" == "LIBRARY"
+TARGETEXT=lib
+TARGETLIB=
+
+!ELSEIF "$(TARGETTYPE)" == "DRIVER"
+TARGETEXT=sys
+TARGETLIB=$(SDK_LIB_PATH)\ntoskrnl.lib $(SDK_LIB_PATH)\hal.lib
+
+!ELSEIF "$(TARGETTYPE)" == "EXPORT_DRIVER"
+! IF "$(MAKEDLL)" != ""
+TARGETEXT=sys
+TARGETLIB=$(SDK_LIB_PATH)\ntoskrnl.lib $(SDK_LIB_PATH)\hal.lib
+! ELSE
+TARGETEXT=lib
+TARGETLIB=
+! ENDIF
+
+!ELSEIF "$(TARGETTYPE)" == "HAL"
+! IF "$(MAKEDLL)" != ""
+TARGETEXT=dll
+TARGETLIB=$(SDK_LIB_PATH)\ntoskrnl.lib
+! ELSE
+TARGETEXT=lib
+TARGETLIB=
+! ENDIF
+
+!ELSEIF "$(TARGETTYPE)" == "BOOTPGM"
+TARGETEXT=sys
+
+!ELSEIF "$(TARGETTYPE)" == "MINIPORT"
+TARGETEXT=sys
+
+!ELSEIF "$(TARGETTYPE)" == "GDI_DRIVER"
+
+TARGETEXT=dll
+TARGETLIB=$(SDK_LIB_PATH)\win32k.lib
+!ENDIF # TARGETTYPE
+
+
+TARGET=
+
+!IF "$(TARGETTYPE)" != "UMAPPL_NOLIB"
+
+! IF "$(OBJECTS)" != ""
+TARGET=$(TARGETPATH)\*\$(TARGETNAME).$(TARGETEXT)
+! ENDIF
+
+!ENDIF # TARGETTYPE != UMAPPL_NOLIB
+
+!IFDEF NOTARGETLIB
+TARGETLIB=
+!ENDIF
+
+!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) $O\$(NTTEST).obj
+
+! IFNDEF NOLINK
+
+TARGETEXEFILES=$(TARGETEXEFILES) $O\$(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
+! ELSEIF "$(UMAPPLEXT)" == ".exe"
+! IFNDEF NOLINK
+
+UMEXEFILES=obj\*\$(UMAPPL:*=.exe obj\*\).exe
+! ENDIF
+! ELSEIF "$(UMAPPLEXT)" == ".scr"
+! IFNDEF NOLINK
+
+UMEXEFILES=obj\*\$(UMAPPL:*=.scr obj\*\).scr
+! ENDIF
+! ELSE
+! ERROR Unsupport UMAPPLEXT = $(UMAPPLEXT)
+
+! ENDIF # UMAPPLEXT
+!ENDIF # UMAPPL != ""
+
+!IF "$(UMTEST)" != ""
+
+UMOBJFILES=$(UMOBJFILES) obj\*\$(UMTEST:*=.obj obj\*\).obj
+
+! IFNDEF NOLINK
+
+UMEXEFILES=$(UMEXEFILES) obj\*\$(UMTEST:*=.exe obj\*\).exe
+
+! ENDIF
+!ENDIF
+
+!if "$(BUILD_ALT_DIR)" == "d"
+UMOBJFILES=$(UMOBJFILES:obj\*\=objd\*\)
+UMEXEFILES=$(UMEXEFILES:obj\*\=objd\*\)
+!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
+
+!IFNDEF PNP_STUB_ENABLED
+PNP_STUB_ENABLED=0
+!ENDIF
+
+!IF "$(PNP_STUB_ENABLED)"=="0"
+NT_PNP_STUB_DEFINES=
+!ELSE
+NT_PNP_STUB_DEFINES=-D_PNP_POWER_STUB_ENABLED_=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
+
+DEFAULT_MSC_OPT = /Oxs
+
+#
+# End of user defined variables.
+#
+
+STD_DEFINES=-DCONDITION_HANDLING=1 $(NT_UP_DEFINES) \
+ -DNT_INST=$(NT_INST) $(WIN32_DEFINE) $(NT_PNP_POWER_DEFINES) \
+ $(NT_PNP_STUB_DEFINES)
+
+!IFNDEF NOT_LEAN_AND_MEAN
+STD_DEFINES = $(STD_DEFINES) -DWIN32_LEAN_AND_MEAN=1
+!ENDIF
+
+!IFNDEF CBSTRING
+! IF "$(MAJORCOMP)" == "ntos" || "$(MAJORCOMP)" == "NTOS" || "$(DDKBUILDENV)" != ""
+CBSTRING= -cbstring
+! ELSE
+CBSTRING=
+! ENDIF
+!ENDIF
+
+!IF "$(NTDEBUG)" == "retail"
+TARGET_DBG_DEFINES= -DDEVL=1
+DBGFLAGS=
+!ELSEIF "$(NTDEBUG)" == ""
+TARGET_DBG_DEFINES= -DDEVL=1
+DBGFLAGS=
+!ELSEIF "$(NTDEBUG)" == "ntsdnodbg"
+DBGFLAGS= /Zi
+TARGET_DBG_DEFINES= -DDEVL=1
+!ELSEIF "$(NTDEBUG)" == "ntsd"
+DBGFLAGS=/Zi
+TARGET_DBG_DEFINES= -DDBG=1 -DDEVL=1
+! UNDEF NTBBT
+!ELSEIF "$(NTDEBUG)" == "cvp" || "$(NTDEBUG)" == "sym"
+DBGFLAGS= /Zd
+TARGET_DBG_DEFINES= -DDBG=1 -DDEVL=1
+! UNDEF NTBBT
+!ELSE
+! ERROR NTDEBUG macro can be either "retail", "", "ntsd", "cvp" or "sym" or "ntsdnodbg"
+!ENDIF
+
+!IF "$(NTDEBUGTYPE)" == "windbg"
+LINKER_DBG_TYPE = -debugtype:cv
+!ELSEIF "$(NTDEBUGTYPE)" == "ntsd" || "$(NTDEBUGTYPE)" == "coff" || "$(NTDEBUGTYPE)" == ""
+LINKER_DBG_TYPE = -debugtype:coff
+!ELSEIF "$(NTDEBUGTYPE)" == "both"
+LINKER_DBG_TYPE = -debugtype:both
+!ELSE
+! ERROR NTDEBUGTYPE macro can one of "", "ntsd", "coff", "windbg" or "both"
+!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_INCLUDE)" != "$(PRECOMPILED_INCLUDE:.cpp=)"
+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:.cpp=.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=/Fp$O\$(PRECOMPILED_PCH)
+! ENDIF
+! IF "$(PRECOMPILED_OBJ)" != ""
+HEADEROBJNAME=$O\$(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=$O\$(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=$(PRECOMPILED_FLAG) /Tc
+!ELSE
+PRECOMPILED_FLAG=$(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
+#
+
+!ifdef LINKER_NOREF
+LINK_REF_FLAG=-OPT:NOREF
+!else
+LINK_REF_FLAG=-OPT:REF
+!endif
+
+LINK_LIB_IGNORE_FLAG=-IGNORE:4001,4037,4039,4065,4070,4078,4087,4089
+
+!ifdef USE_INCREMENTAL_LINKING
+USE_PDB = 1 # PDB's are required to use Incremental linking
+LINK_INCREMENTAL_FLAG = -OPT:NOREF \
+ $(LINK_LIB_IGNORE_FLAG)
+!else
+LINK_INCREMENTAL_FLAG = $(LINK_REF_FLAG) \
+ -INCREMENTAL:NO \
+ -FORCE:MULTIPLE \
+ -RELEASE \
+ -FULLBUILD \
+ $(LINK_LIB_IGNORE_FLAG)
+!endif
+
+!ifdef BACKGROUND_USE
+LINKER_FLAGS = $(LINKER_FLAGS) -WS:aggressive
+!endif
+
+LINKER_FLAGS = $(LINKER_FLAGS) \
+ -MERGE:_PAGE=PAGE \
+ -MERGE:_TEXT=.text \
+ -SECTION:INIT,d \
+ $(LINK_INCREMENTAL_FLAG) \
+ -NODEFAULTLIB
+
+!ifndef VC40_HACK
+LINKER_MERGE_RDATA=-MERGE:.rdata=.text
+!endif
+
+!ifndef NO_OPTIDATA
+LINKER_OPTIDATA=-optidata
+!endif
+
+!IF "$(NTDEBUG)" == "ntsd" || "$(NTDEBUG)" == "ntsdnodbg"
+LINKER_DBG_SECTION=-debug:notmapped,FULL
+!ELSEIF "$(NTDEBUG)" == "retail"
+LINKER_DBG_SECTION=-debug:NONE
+!ELSE
+LINKER_DBG_SECTION=-debug:notmapped,MINIMAL
+!ENDIF
+
+!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:4.00 -osversion:4.00
+
+LINKER_FLAGS = $(LINKER_FLAGS) $(LINKER_DBG_SECTION) $(LINKER_DBG_TYPE) $(LINK_OS_VERSIONS)
+LIBRARIAN_FLAGS = $(LIBRARIAN_FLAGS) $(LINK_LIB_IGNORE_FLAG) -nodefaultlib
+
+LIBRARIAN_FLAGS = -debugtype:cv $(LIBRARIAN_FLAGS) -machine:$(TARGET_DIRECTORY)
+
+LIBRARIAN=lib -out:$@ $(LIBRARIAN_FLAGS)
+LINKER=link -out:$@ -machine:$(TARGET_DIRECTORY)
+
+!if defined(NTPROFILEINPUT) && ("$(TARGETTYPE)" == "LIBRARY")
+! message NTPROFILEINPUT s/b removed in: $(MAKEDIR).
+!endif
+
+!IF defined(NTPROFILEINPUT) || defined(EXEPROFILEINPUT)
+ORDER=-order:@$(@B).prf
+!ENDIF
+
+!IFDEF DLLORDER
+ORDER=-order:@$(DLLORDER)
+!ENDIF
+
+!IFDEF EXPORT_DRIVER_ORDER
+ORDER=-order:@$(EXPORT_DRIVER_ORDER)
+!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 .rcpp .thk
+
+#
+# Processor specific control and options.
+#
+
+!include $(TARGET_DIRECTORY)mk.inc
+
+!if defined(CHICAGO_PRODUCT) || defined(USE_MAPSYM)
+MAPSYM_CMD = mapsym -o $(@D)\$(@B).sym $(@D)\$(@B).map
+LINKER_FLAGS=$(LINKER_FLAGS) -map
+BINPLACE_FLAGS = $(BINPLACE_FLAGS) -W
+!else
+MAPSYM_CMD =
+!endif
+
+
+!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
+
+LIBRARY_OBJS=$(IMPLIB_OBJS) $(MFC_STATIC_LIB) $(LINKLIBS) $(OBJECTS)
+
+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
+
+!ifndef BINPLACE_PLACEFILE
+BINPLACE_PLACEFILE = $(BASEDIR)\public\sdk\lib\placefil.txt
+!endif
+
+BINPLACE_FLAGS = -P $(BINPLACE_PLACEFILE) $(BINPLACE_FLAGS)
+
+!IFDEF UP_DRIVER
+BINPLACE_FLAGS= $(BINPLACE_FLAGS) -U
+DRIVER_SWITCH = -driver:uponly
+!else
+DRIVER_SWITCH = -driver
+!ENDIF
+
+!IF "$(_NTTREE)" != ""
+
+! IFDEF ALT_PROJECT_TARGET
+_NTTREE= $(_NTTREE)\$(ALT_PROJECT_TARGET)
+! if "$(_NTTREE_NO_SPLIT)" != ""
+_NTTREE_NO_SPLIT= $(_NTTREE_NO_SPLIT)\$(ALT_PROJECT_TARGET)
+! endif
+! 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_DBGFLAGS_NT = -S $(_NTTREE)\Symbols
+! else
+BINPLACE_DBGFLAGS_NT=
+! ENDIF
+
+BINPLACE_CMD_NT=binplace -R $(_NTTREE) $(BINPLACE_DBGFLAGS_NT) $(BINPLACE_FLAGS) $@
+BINPLACE_CMD_NS=binplace -R $(_NTTREE_NO_SPLIT) -Q $(BINPLACE_FLAGS) $@
+
+BINPLACE_CMD = $(BINPLACE_CMD_NT)
+
+! if "$(_NTTREE_NO_SPLIT)" != ""
+BINPLACE_CMD = $(BINPLACE_CMD) & $(BINPLACE_CMD_NS)
+! 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.
+#
+
+!IFNDEF NOPASS0
+
+#
+# Pass Zero Inference Rules: IDL files (MIDL) and MC files
+#
+
+.SUFFIXES: .idl .mc .odl .tdl .asn .thk
+
+! 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
+ASN = asn1
+!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=.
+!ENDIF
+
+!IFNDEF MIDL_OPTIMIZATION
+MIDL_OPTIMIZATION=-Oicf
+!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=.
+! 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 $@ \
+ -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) \
+ -header $@ \
+ -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) $<
+
+.mc{$(PASS0_HEADERDIR)}.h:
+ $(MC) -h $(PASS0_HEADERDIR) -r $(MC_SOURCEDIR) $(MC_FLAGS) $<
+
+MKTYPLIB_CPP = $(TARGET_CPP)
+
+.odl{$O\}.tlb:
+ $(MKTYPLIB) \
+ $(INCPATH0) \
+ /tlb $@ \
+ -cpp_cmd $(TARGET_CPP) \
+ $(MKTYPLIB_FLAGS) \
+ $<
+
+{..\}.odl{$O\}.tlb:
+ $(MKTYPLIB) \
+ $(INCPATH0) \
+ /tlb $@ \
+ -cpp_cmd $(TARGET_CPP) \
+ $(MKTYPLIB_FLAGS) \
+ $<
+
+.tdl{$O\}.tlb:
+ $(MKTYPLIB) \
+ $(INCPATH0) \
+ /tlb $@ \
+ -cpp_cmd $(TARGET_CPP) \
+ $(MKTYPLIB_FLAGS) \
+ $<
+
+{..\}.tdl{$O\}.tlb:
+ $(MKTYPLIB) \
+ $(INCPATH0) \
+ /tlb $@ \
+ -cpp_cmd $(TARGET_CPP) \
+ $(MKTYPLIB_FLAGS) \
+ $<
+
+
+# OSSINFO must be set in the *environment* for the ASN compiler to find its
+# configuration file, $(OSSINFO)\ossinfo.
+
+! ifndef OSSINFO
+OSSINFO=$(BASEDIR)\public\sdk\lib
+! endif
+
+! ifndef ASNDEFAULTFILE
+ASNDEFAULTFILE=$(OSSINFO)\asn1dflt.z4
+! endif
+
+! ifndef ASNSYNTAX
+ASNSYNTAX=-1990
+! endif
+
+ASNFLAGS=$(ASNDEFAULTFILE) $(ASNSYNTAX) $(ASNFLAGS)
+
+# if ASNDBG is explicitly set, let that control whether the voluminous ASN
+# symbols are supressed. Otherwise, suppress the symbols for free builds.
+
+! ifdef ASNDBG
+! if $(ASNDBG) == 0
+ASNFLAGS=-minimize $(ASNFLAGS)
+! endif
+! elseif $(FREEBUILD)
+ASNFLAGS=-minimize $(ASNFLAGS)
+! endif
+
+{}.asn{$(PASS0_HEADERDIR)}.h:
+ $(ASN) $(ASNFLAGS) -out $(PASS0_HEADERDIR)\$(@B) $<
+
+!ENDIF
+
+#
+# Default language ID to US English (0x0409)
+#
+
+!IFDEF RCCODEPAGE
+RCOPTIONS=$(RCOPTIONS) -c $(RCCODEPAGE)
+!ENDIF
+
+!IFNDEF RCNOFONTMAP
+RCOPTIONS=-z "MS Sans Serif,Helv/MS Shell Dlg" $(RCOPTIONS)
+!ENDIF
+
+RC_COMPILER=rc -l 409 $(RCOPTIONS)
+
+{..\}.rc{$O\}.res:
+ $(RC_COMPILER) -r -fo $(@R).tmp $(CDEFINES) $(INCPATH0) $<
+ @cvtres -nologo -machine:$(TARGET_DIRECTORY:i386=ix86) -readonly -out:$@ $(@R).tmp
+!IF "$(NTKEEPRESOURCETMPFILES)" == ""
+ @-erase $(@R).tmp
+!ENDIF
+
+{}.rc{$O\}.res:
+ $(RC_COMPILER) -r -fo $(@R).tmp $(CDEFINES) $(INCPATH0) $<
+ @cvtres -nologo -machine:$(TARGET_DIRECTORY:i386=ix86) -readonly -out:$@ $(@R).tmp
+!IF "$(NTKEEPRESOURCETMPFILES)" == ""
+ @-erase $(@R).tmp
+!ENDIF
+
+{..\}.rc.rcpp:
+ $(RC_COMPILER) -r -p -fo $(@R).tmp $(CDEFINES) $(INCPATH0) $<
+
+{}.rc.rcpp:
+ $(RC_COMPILER) -r -p -fo $(@R).tmp $(CDEFINES) $(INCPATH0) $<
+
+.thk{$O\}.asm:
+ thunk -o $@ $<
+
+!IFNDEF NO_C_RULES
+
+! ifdef MPNMAKE
+ECHO_RSP =
+CL_RSP =
+CLCOD_RSP =
+LINK_RSP =
+! else
+ECHO_RSP = $O\echo.msg
+CL_RSP = $O\cl.rsp
+CLCOD_RSP = $O\clcod.rsp
+LINK_RSP = $O\lnk.rsp
+! endif
+
+{$O\}.cxx{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(O)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cxx{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.cxx{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$O\}.cpp{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(O)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cpp{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.cpp{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cxx{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.cxx{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cpp{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.cpp{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_CXX_MSG)
+<<NOKEEP
+ @$(CXX_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$<
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cxx{}.cod:
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cxx{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cpp{}.cod:
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\..\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.cpp{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cxx{}.cod:
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cxx{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cpp{}.cod:
+ $(CXX_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(MAKEDIR)\$(<F)
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.cpp{}.pp:
+ $(CXX_COMPILER_NAME) @<<$(CL_RSP) /E $(MAKEDIR)\$< > $@
+$(CXX_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.c{$O\}.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{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$O\}.c{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\$(O)\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.c{$O\}.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{$O\}.obj:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<<$(CL_RSP) -Fo$(MAKEDIR)\$@ $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.c{}.cod:
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\..\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\$(TARGET_DIRECTORY)\}.c{}.cod:
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{..\}.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:
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\$(<F)
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{$(TARGET_DIRECTORY)\}.c{}.cod:
+ $(C_COMPILER_NAME) @<<$(CLCOD_RSP) /Fc $(USECXX_FLAG) $(MAKEDIR)\$<
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+{}.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{$(TARGET_DIRECTORY)\}.pp:
+ $(C_COMPILER_NAME) @<<$(CL_RSP) /E $(USECXX_FLAG) $(MAKEDIR)\$< > $@
+$(C_COMPILER_FLAGS: =
+)
+<<NOKEEP
+
+
+
+!ENDIF # NO_C_RULES
+
+!if "$(NTNOFUZZYLOOKUP)"=="1"
+LIBRARY_OBJS=
+!else
+LIBRARY_OBJS = $(LIBRARY_OBJS) $(HEADEROBJNAME)
+!endif
+
+!ifdef USE_INCREMENTAL_LINKING
+IMPLIB_DEPEND =
+!else
+IMPLIB_DEPEND = $(LIBRARY_OBJS)
+!endif
+
+#
+# Standard inference rule for generating machine specific def files.
+#
+
+.SUFFIXES: .def .src
+
+CPPXX = $(C_PREPROCESSOR_FLAGS:/Tc=)
+CPPXX = $(CPPXX:-Tc=)
+
+{..\}.src{$O}.def:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG) /EP $<
+<<NOKEEP
+ @$(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+{}.src{$O}.def:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG) /EP $<
+<<NOKEEP
+ @$(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+{..\}.def{$O}.def:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG) /EP $<
+<<NOKEEP
+ @$(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+{}.def{$O}.def:
+ @type <<$(ECHO_RSP)
+$(ECHO_MSG) /EP $<
+<<NOKEEP
+ @$(C_PREPROCESSOR_NAME) @<<$(CL_RSP) /Tc$< > $@
+$(CPPXX: =
+)
+<<NOKEEP
+
+!ifdef NO_BROWSER_FILE
+BROWSERFILE=
+!else
+! ifdef BROWSER_INFO
+! ifndef BROWSERFILE
+BROWSERFILE = $(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).bsc
+! endif
+! else
+BROWSERFILE=
+! endif
+!endif
+
+#
+# Standard inference rule for User Mode object files that produce User Mode
+# image files
+#
+
+{$O\}.obj{$O\}$(UMAPPLEXT):
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(PDB_ROOTUM)
+$(ORDER: =
+)
+$(LINKGPSIZE: =
+)
+$(LINKER_OPTIDATA)
+-base:$(UMBASE)
+-subsystem:$(SUBSYSTEM)
+$(UMENTRY)
+$(HEADEROBJNAME: =
+)
+$(UMRES: =
+)
+$<
+$(UMOBJS: =
+)
+$(UMLIBS: =
+)
+$(CRTLIBS: =
+)
+$(LINKLIBS: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(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) \
+ $(BROWSERFILE) \
+ $(UMOBJFILES) \
+ $(UMEXEFILES) \
+ $(NTTARGETFILES) $(MISCFILES)
+! IFDEF MISCFILES
+! IFDEF _NTTREE
+ @for %i in ($(MISCFILES)) do @echo binplace -R $(_NTTREE) $(BINPLACE_FLAGS) $(BINPLACE_DBGFLAGS_NT) %i & binplace -R $(_NTTREE) $(BINPLACE_FLAGS) $(BINPLACE_DBGFLAGS_NT) %i
+! 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)" != ""
+! ifdef PRECOMPILED_SOURCEFILE
+$(PRECOMPILED_TARGET) $(HEADEROBJNAME): $(PRECOMPILED_INCLUDE)
+ @type <<
+$(ECHO_PRECOMPILED_MSG1)
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<< $(PRECOMPILED_FLAG) $(PRECOMPILED_SOURCEFILE)
+$(C_COMPILER_FLAGS: =
+) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)
+<<NOKEEP
+! else
+$(PRECOMPILED_TARGET) $(HEADEROBJNAME): $(PRECOMPILED_INCLUDE)
+ @type <<$O\pch_hdr.src
+$(ECHO_PRECOMPILED_MSG2)
+
+#include "$(?F)"
+
+<<NOKEEP
+ @$(C_COMPILER_NAME) @<< $(PRECOMPILED_FLAG)<<$O\pch_hdr.src
+$(C_COMPILER_FLAGS: =
+) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)
+<<NOKEEP
+#include "$(?F)"
+<<NOKEEP
+! endif
+!ENDIF
+
+!IFNDEF NOLINK
+
+! IF "$(UMTEST)" != "" || "$(UMAPPL)" != ""
+
+$(UMEXEFILES): $(UMLIBS) $(CRTLIBS) $(LINKLIBS)
+
+! ENDIF
+!ENDIF
+
+!if defined(BROWSER_INFO) && !defined(NO_BROWSER_FILE)
+$(BROWSERFILE) : $O\*.sbr
+ -bscmake -nologo -o $(BROWSERFILE) @<<$O\bscmake.rsp
+$(**: =
+)
+<<NOKEEP
+!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) $(IMPLIB_DEPEND)
+ -lib -out:$(@R).lib @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$(LIBRARY_OBJS: =
+)
+<<NOKEEP
+$(TARGET): $(OBJECTS) $(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp $(UMRES) $(UMLIBS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(ORDER: =
+)
+$(LINKGPSIZE: =
+)
+$(HEADEROBJNAME: =
+)
+$(LINKER_OPTIDATA)
+-subsystem:$(SUBSYSTEM)
+-base:$(UMBASE)
+$(UMENTRY: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+
+! ELSEIF "$(TARGETTYPE)"=="PROGRAM"
+
+$(TARGET): $(UMRES) $(OBJECTS) $(CRTLIBS) $(UMLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+-subsystem:$(SUBSYSTEM)
+-base:$(UMBASE)
+$(ORDER: =
+)
+$(LINKGPSIZE: =
+)
+$(UMENTRY: =
+)
+$(LINKER_OPTIDATA)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+
+! ELSEIF "$(TARGETTYPE)"=="DYNLINK"
+
+! IF "$(DLLLIBOBJECTS)" == " "
+
+$(DYNLINK_LIB) $(DYNLINK_EXP) : $(DLLDEF) $(IMPLIB_DEPEND)
+ -lib -out:$(DYNLINK_LIB) @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$(LIBRARY_OBJS: =
+)
+<<NOKEEP
+
+! ELSE # "$(DLLLIBOBJECTS)" == " "
+
+$(DYNLINK_LIB) $(DYNLINK_EXP) : $(DLLDEF) $(IMPLIB_DEPEND) $(DLLLIBOBJECTS)
+ -lib -out:$(DYNLINK_LIB) @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$(LIBRARY_OBJS: =
+)
+<<NOKEEP
+ -lib -out:$(DYNLINK_LIB) @<<
+$(LIBRARIAN_FLAGS: =
+)
+$(@R).lib
+$(DLLLIBOBJECTS)
+<<NOKEEP
+
+! ENDIF # "$(DLLLIBOBJECTS)" == " "
+
+! IF "$(MAKEDLL)" != ""
+
+$(TARGET): $(DYNLINK_EXP) $(OBJECTS) $(LINKLIBS) $(CRTLIBS) $(MACHINE_TARGETLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+-dll
+$(ORDER: =
+)
+$(LINKER_OPTIDATA)
+-base:$(DLLBASE)
+-subsystem:$(SUBSYSTEM)
+$(DLLENTRY: =
+)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+! ENDIF # "$(MAKEDLL)" != ""
+
+! ELSEIF "$(TARGETTYPE)"=="LIBRARY"
+
+$(TARGET): $(OBJECTS)
+ @-erase $@ >nul 2>nul
+ -$(LIBRARIAN) @<<
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+
+! ELSEIF "$(TARGETTYPE)"=="DRIVER" || \
+ "$(TARGETTYPE)"=="MINIPORT"
+
+$(TARGET): $(OBJECTS) $(MACHINE_TARGETLIBS) $(CRTLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(ORDER: =
+)
+$(SECTION_INFO1)
+$(SECTION_INFO2)
+$(LINKER_OPTIDATA)
+$(DRIVER_SWITCH)
+-align:$(DRIVER_ALIGNMENT)
+-subsystem:native$(SUBSYSTEM_NATVER)
+-base:$(DRIVERBASE)
+-entry:DriverEntry$(ENTRY_SUFFIX)
+-out:$(TARGET)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+! ELSEIF "$(TARGETTYPE)"=="GDI_DRIVER"
+
+$(TARGET): $(OBJECTS) $(MACHINE_TARGETLIBS) $(CRTLIBS) $(GDI_DRIVER_LIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+-dll
+$(ORDER: =
+)
+$(SECTION_INFO1)
+$(SECTION_INFO2)
+$(LINKER_OPTIDATA)
+$(DRIVER_SWITCH)
+-align:$(DRIVER_ALIGNMENT)
+-subsystem:native$(SUBSYSTEM_NATVER)
+-base:$(DRIVERBASE)
+-entry:DrvEnableDriver$(GDI_ENTRY_SUFFIX)
+-out:$(TARGET)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+! ELSEIF "$(TARGETTYPE)"=="EXPORT_DRIVER"
+
+$(DYNLINK_EXP) $(DYNLINK_LIB) : $(DLLDEF) $(OBJECTS) $(LINKLIBS) $(DLLLIBOBJECTS)
+ -lib -out:$(DYNLINK_LIB) @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$(OBJECTS)
+$(LINKLIBS)
+<<NOKEEP
+! if "$(DLLLIBOBJECTS)" != " "
+ -lib -out:$(DYNLINK_LIB) @<<
+$(LIBRARIAN_FLAGS: =
+)
+$(DYNLINK_LIB)
+$(DLLLIBOBJECTS)
+<<NOKEEP
+! endif
+! IF "$(MAKEDLL)" != ""
+$(TARGET): $(DYNLINK_EXP) $(OBJECTS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(ORDER: =
+)
+$(LINKER_OPTIDATA)
+$(DRIVER_SWITCH)
+-align:$(DRIVER_ALIGNMENT)
+-subsystem:native$(SUBSYSTEM_NATVER)
+-base:$(DRIVERBASE)
+-entry:DriverEntry$(ENTRY_SUFFIX)
+-out:$(TARGET)
+$(HEADEROBJNAME: =
+)
+$(**: =
+)
+<<NOKEEP
+ $(MAPSYM_CMD)
+ $(BINPLACE_CMD)
+! ENDIF
+
+! ELSEIF "$(TARGETTYPE)"=="HAL"
+
+! IF "$(MAKEDLL)" == ""
+$(TARGET) $(TARGET:.lib=.exp): $(DLLDEF) $O\*.obj
+ -lib -out:$(@R).lib @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$O\*.obj
+<<NOKEEP
+! ELSE
+$(TARGET:.dll=.lib) $(TARGET:.dll=.exp): $(DLLDEF) $O\*.obj
+ -lib -out:$(@R).lib @<<
+$(LIBRARIAN_FLAGS: =
+)
+-def:$(DLLDEF)
+$O\*.obj
+<<NOKEEP
+
+$(TARGET): $(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).exp $(OBJECTS) $(CRTLIBS) $(MACHINE_TARGETLIBS) $(LINKLIBS)
+ $(LINKER) @<<
+$(LINKER_FLAGS: =
+)
+$(LINKER_OPTIDATA)
+$(DRIVER_SWITCH)
+-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_SWITCH)
+-subsystem:$(SUBSYSTEM)
+-base:$(BOOTBASE)
+-entry:_start
+-map:$(@R).map
+$(**: =
+)
+<<NOKEEP
+
+! ENDIF
+!ENDIF
+
+!IFNDEF NOLINK
+
+! IF "$(NTTEST)" != ""
+
+! IF "$(TARGETPATH)"=="..\..\mpobj"
+KERNEL_DIR=mpobj
+KERNEL_TYPE=mp
+! ELSE
+KERNEL_DIR=obj
+KERNEL_TYPE=up
+! 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_SWITCH)
+-align:$(KERNEL_ALIGNMENT)
+-subsystem:$(SUBSYSTEM)
+-miscrdata
+$(**: =
+)
+<<NOKEEP
+ $(BINPLACE_CMD)
+ $(MAPDUMP_CMD)
+
+! ENDIF
+!ENDIF
+
+$O\*.res : $(MASTER_VERSION_FILE)
diff --git a/public/oak/bin/makefile.plt b/public/oak/bin/makefile.plt
new file mode 100644
index 000000000..aa0bb8f41
--- /dev/null
+++ b/public/oak/bin/makefile.plt
@@ -0,0 +1,163 @@
+#
+# 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
+
+!if ("$(NTDEBUG)" == "") || ("$(NTDEBUG)" == "retail") || ("$(NTDEBUG)" == "ntsdnodbg")
+FREEBUILD=1
+!else
+FREEBUILD=0
+!endif
+
+
+# Allow alternate object directories.
+
+!ifndef BUILD_ALT_DIR
+BUILD_ALT_DIR=
+! ifdef CHECKED_ALT_DIR
+! if !$(FREEBUILD)
+BUILD_ALT_DIR=d
+! endif
+! endif
+!endif
+
+_OBJ_DIR = obj$(BUILD_ALT_DIR)
+
+
+#
+# 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/public/oak/bin/makefile.tpl b/public/oak/bin/makefile.tpl
new file mode 100644
index 000000000..6ee4f43fa
--- /dev/null
+++ b/public/oak/bin/makefile.tpl
@@ -0,0 +1,6 @@
+#
+# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
+# file to this component. This file merely indirects to the real make file
+# that is shared by all the components of NT OS/2
+#
+!INCLUDE $(NTMAKEENV)\makefile.def
diff --git a/public/oak/bin/mipsmk.inc b/public/oak/bin/mipsmk.inc
new file mode 100644
index 000000000..d3aa35b94
--- /dev/null
+++ b/public/oak/bin/mipsmk.inc
@@ -0,0 +1,268 @@
+!IF 0
+
+Copyright (c) 1994-1996 Microsoft Corporation
+
+Module Name:
+
+ mipsmk.inc
+
+Abstract:
+
+ This module contains the MIPs specific build controls. It is included
+ by makefile.def.
+
+Revision History:
+
+!ENDIF
+
+#
+# Mips option control
+#
+
+!undef USE_MAPSYM
+
+UMBASE=$(UMBASE:*=mips)
+UMLIBS=$(UMLIBS:*=mips)
+NTRES=$(NTRES:*=mips)
+UMRES=$(UMRES:*=mips)
+UMOBJS=$(UMOBJS:*=mips)
+LINKLIBS=$(LINKLIBS:*=mips)
+GDI_DRIVER_LIBS=$(GDI_DRIVER_LIBS:*=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)
+MFC_STATIC_LIB=$(MFC_STATIC_LIB:*=mips)
+CRT_LIB_PATH=$(CRT_LIB_PATH:*=mips)
+SDK_LIB_PATH=$(SDK_LIB_PATH:*=mips)
+ORDER=$(ORDER:*=mips)
+
+!ifdef NTTARGETFILES
+NTTARGETFILES=$(NTTARGETFILES:*=mips)
+!endif
+!ifdef NTTARGETFILE0
+NTTARGETFILE0=$(NTTARGETFILE0:*=mips)
+!endif
+!ifdef NTTARGETFILE1
+NTTARGETFILE1=$(NTTARGETFILE1:*=mips)
+!endif
+
+!IF "$(GPSIZE)" != "0"
+
+!ifdef DEBUG_CRTS
+LIBC_LIB=$(SDK_LIB_PATH)\smalld.lib $(LIBC_LIB)
+!else
+LIBC_LIB=$(SDK_LIB_PATH)\small.lib $(LIBC_LIB)
+!endif
+
+LINKGPSIZE=-gpsize:$(GPSIZE)
+
+!ENDIF
+
+LINKER_FLAGS = $(LINKER_FLAGS) -merge:.xdata=.rdata
+
+MIPS_ENDIAN=MIPSEL
+
+ENTRY_SUFFIX=
+GDI_ENTRY_SUFFIX=
+
+!IFDEF MIPS_WARNING_LEVEL
+MSC_WARNING_LEVEL=$(MIPS_WARNING_LEVEL)
+!ENDIF
+
+!ifdef MIPS_PERFFLAGS
+PERFFLAGS = $(MIPS_PERFFLAGS)
+!endif
+
+DEFAULT_MSC_OPT = $(DEFAULT_MSC_OPT:/Oxs=/Ox)
+
+# Set MSC_OPTIMIZATION.
+# Order of precedence:
+# Platform specific override
+# Environment variable
+# System Default
+
+!if defined(MIPS_OPTIMIZATION)
+MSC_OPTIMIZATION=$(MIPS_OPTIMIZATION)
+!elseif !defined(MSC_OPTIMIZATION)
+MSC_OPTIMIZATION=$(DEFAULT_MSC_OPT)
+!endif
+
+DBGFLAGS=$(DBGFLAGS) $(MSC_OPTIMIZATION)
+
+!IFDEF MIPS_CPPFLAGS
+MSC_CPPFLAGS=$(MIPS_CPPFLAGS)
+!ENDIF
+
+#
+# Now a bunch of MIPS stuff
+#
+
+!ifndef USE_PDB_TO_COMPILE
+DBGFLAGS=$(DBGFLAGS:/Zi=-Z7)
+DBGFLAGS=$(DBGFLAGS:-Zi=-Z7)
+!else
+! if "$(TARGETTYPE)" == "LIBRARY"
+DBGFLAGS=$(DBGFLAGS) /Fd$(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).pdb
+! else
+DBGFLAGS=$(DBGFLAGS) /Fd$(MAKEDIR)\$(_OBJ_DIR)\mips^\
+! endif
+!endif
+
+!ifdef BROWSER_INFO
+DBGFLAGS=$(DBGFLAGS) /FR$(MAKEDIR)\$(_OBJ_DIR)\mips^\
+!endif
+
+!IFDEF NTBBT
+DBGFLAGS=$(DBGFLAGS) /Z7
+LINKER_FLAGS=$(LINKER_FLAGS) -debug:full -debugtype:cv,fixup
+USE_PDB=1
+!ENDIF
+
+!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=-DENABLE_RESTRICTED -DMIPS=1 -D_MIPS_=1 -D$(MIPS_ENDIAN) -DNO_EXT_KEYS -DCONDITION_HANDLING=1 $(STD_DEFINES)
+
+STDFLAGS=-c
+MS_MIPS=1
+
+!if 0
+# Enable when /GF and /cbstring are tested together
+! ifdef NO_READONLY_STRINGS
+STRING_POOLING = /Gf
+! else
+STRING_POOLING = /GF
+! endif
+!else
+# STRING_POOLING = /Gf
+STRING_POOLING=
+!endif
+
+!ifdef USE_NATIVE_EH
+EH_FLAGS=/GX /GR
+!else
+EH_FLAGS=/GX- /GR-
+!endif
+
+!ifndef DOWNLEVEL_COMPILE
+DOWNLEVEL_COMPILE = 0
+!endif
+!if $(DOWNLEVEL_COMPILE)
+MIPS3_INSTR = -QMmips2
+MACHINE_TARGETLIBS=$(MACHINE_TARGETLIBS) $(SDK_LIB_PATH)\tlssup35.obj
+!else
+MIPS3_INSTR = -QMmips3 -d2QMGtlsa
+!endif
+
+MSC_C_COMPILER_NAME=cl -nologo
+
+CDEFINES=$(STD_DEFINES) $(MIPS_CPU) $(TARGET_DBG_DEFINES) $(ENV_DEFINES)
+CFLAGS=$(MIPS_FLAGS) $(NTMIPSFLAGS) $(STDFLAGS) $(DBGFLAGS) $(PERFFLAGS) $(USER_C_FLAGS)
+AFLAGS=-Gy $(MIPS_FLAGS) $(NTMIPSFLAGS) $(STDFLAGS) $(DBGFLAGS) $(PERFFLAGS) $(MIPS3_INSTR)
+
+MIPS_CDEFINES=$(CDEFINES)
+MIPS_CFLAGS=$(CFLAGS) -Zel -Zp8 -Gy $(MSC_WARNING_LEVEL) -QMOb4000 $(MIPS3_INSTR) $(CBSTRING) $(EH_FLAGS) $(STRING_POOLING) -Gt$(GPSIZE)
+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 = -Imips\ -I. $(INCPATH0) $(CDEFINES) $(MIPS_CFLAGS) \
+ -DFPO=1 -D__stdcall= -D__cdecl= -D_LANGUAGE_C -DLANGUAGE_C $(MFC_FLAGS)
+
+NP_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(COMPILER_WARNINGS)
+
+C_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED)
+CXX_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED_CXX)
+C_PREPROCESSOR_FLAGS = $(GLOBAL_C_FLAGS) -EP -Tc
+
+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_CXX_MSG=ClMips $< " $(CXX_COMPILER) "
+
+ECHO_PRECOMPILED_MSG1=CpMips $(PRECOMPILED_INCLUDE) \
+ "$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) $(PRECOMPILED_SOURCEFILE) \
+ $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)"
+
+ECHO_PRECOMPILED_MSG2=CpMips $(PRECOMPILED_INCLUDE) \
+ "$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) \
+ $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)"
+
+MIPS_CRFILTER=echo SHOULDN'T NEED TO CRFILTER THIS!
+
+!if $(FREEBUILD)
+!IFNDEF MIPS_ENABLE_DIVIDE_CHECK
+MIPS_CFLAGS=$(MIPS_CFLAGS) -d2aNoDivCheck
+!ENDIF
+!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_DIR)\mips\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsMips $< " $(MIPS_ASSEMBLER) "
+ @$(MIPS_ASSEMBLER_NAME) @<< -Fo$(MAKEDIR)\$@ $<
+$(MIPS_ASSEMBLER_FLAGS: =
+)
+<<NOKEEP
+
+{mips\}.s{$(_OBJ_DIR)\mips\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsMips $< " $(MIPS_ASSEMBLER) $(MIPS_ASSEMBLER_FLAGS)"
+ @$(MIPS_ASSEMBLER_NAME) @<< -Fo$(MAKEDIR)\$@ $<
+$(MIPS_ASSEMBLER_FLAGS: =
+)
+<<NOKEEP
+
+!IFDEF CAIRO_PRODUCT
+!IFDEF _CAIROMIPSTREE
+_NTTREE=$(_CAIROMIPSTREE)
+_NTTREE_NO_SPLIT=$(_CAIROMIPSTREE_NS)
+!ENDIF
+!ELSEIFDEF _NTMIPSTREE
+_NTTREE=$(_NTMIPSTREE)
+_NTTREE_NO_SPLIT=$(_NTMIPSTREE_NS)
+!ENDIF
+
+!IFDEF _NTMIPSLIBS
+_NTLIBS=$(_NTMIPSLIBS)
+!ENDIF
+
+COPYDST=$(MIPSCOPYDST)
+LIB_COPY=ntmipscp.cmd
+
+NTTEST_LINK_OPTIONS= -base:0x10000 -entry:KiSystemStartup
diff --git a/public/oak/bin/mkhive1.cmd b/public/oak/bin/mkhive1.cmd
new file mode 100644
index 000000000..36f82f2bd
--- /dev/null
+++ b/public/oak/bin/mkhive1.cmd
@@ -0,0 +1,9 @@
+if "%CODEPAGE%" == "" %_PREPROCESSOR% %3 %_HIVE_OPTIONS% -g %4
+if not "%CODEPAGE%" == "" %_PREPROCESSOR% %3 %_HIVE_OPTIONS% -DCODEPAGE=%CODEPAGE% -g %4
+if ERRORLEVEL 1 goto done
+erase >nul 2>nul %1. <..\inc\yes.
+if "%_REGINI_%" == "" set _REGINI_=regini
+%_REGINI_% %_HIVEINI_FLAGS% -h %1 %2 %4 >%5
+if ERRORLEVEL 1 goto done
+if "%_HIVE_KEEP%" == "" erase %4 >nul 2>nul <..\inc\yes.
+:done
diff --git a/public/oak/bin/mkhive1.sav b/public/oak/bin/mkhive1.sav
new file mode 100644
index 000000000..74dd47dab
--- /dev/null
+++ b/public/oak/bin/mkhive1.sav
@@ -0,0 +1,11 @@
+echo Creating %1 hive
+%_PREPROCESSOR% %3 %_HIVE_OPTIONS% -g %4
+if ERRORLEVEL 1 goto done
+erase >nul 2>nul %1. <..\inc\yes.
+regini %_HIVEINI_FLAGS% -h %1 %2 %4 >%5
+if ERRORLEVEL 1 goto done
+takeown %1 >nul 2>nul
+hivedmp -f %1 >%6
+if "%_HIVE_KEEP%" == "" erase %4 >nul 2>nul <..\inc\yes.
+:done
+
diff --git a/public/oak/bin/mkhivecr.cmd b/public/oak/bin/mkhivecr.cmd
new file mode 100644
index 000000000..a18347f0a
--- /dev/null
+++ b/public/oak/bin/mkhivecr.cmd
@@ -0,0 +1,12 @@
+@chmode -r system. software. default.
+@call mkhives RETAIL CAIRO
+@echo off
+if not "%_CAIROPPCTREE%" == "" set HIVE_TARGET=%_CAIROPPCTREE% && goto doit
+if not "%_CAIROALPHATREE%" == "" set HIVE_TARGET=%_CAIROALPHATREE% && goto doit
+if not "%_CAIROMIPSTREE%" == "" set HIVE_TARGET=%_CAIROMIPSTREE% && goto doit
+if not "%_CAIRO386TREE%" == "" set HIVE_TARGET=%_CAIRO386TREE% && goto doit
+rem else assume user doesn't want 'em binplaced
+goto end
+:doit
+binplace -r %HIVE_TARGET% system software default userdiff setupreg.hiv setupupg.hiv
+:end
diff --git a/public/oak/bin/mkhiver.cmd b/public/oak/bin/mkhiver.cmd
new file mode 100644
index 000000000..23315b5c2
--- /dev/null
+++ b/public/oak/bin/mkhiver.cmd
@@ -0,0 +1,14 @@
+@chmode -r system. software. default.
+@call mkhives %1 %2 %3 RETAIL
+@echo off
+if not "%_NTPPCTREE%" == "" set HIVE_TARGET=%_NTPPCTREE% && goto doit
+if not "%_NTALPHATREE%" == "" set HIVE_TARGET=%_NTALPHATREE% && goto doit
+if not "%_NTMIPSTREE%" == "" set HIVE_TARGET=%_NTMIPSTREE% && goto doit
+if not "%_NT386TREE%" == "" set HIVE_TARGET=%_NT386TREE% && goto doit
+rem else assume user doesn't want 'em binplaced
+goto end
+:doit
+binplace -r %HIVE_TARGET% system software default userdiff setupreg.hiv setupupg.hiv setupret.hiv
+binplace -r %HIVE_TARGET% setupret.hiv setup2p.hiv setup4p.hiv setup8p.hiv setup16p.hiv setup32p.hiv
+binplace -r %HIVE_TARGET% tbomb30.hiv tbomb60.hiv tbomb90.hiv tbomb120.hiv
+:end
diff --git a/public/oak/bin/mkhives.cmd b/public/oak/bin/mkhives.cmd
new file mode 100644
index 000000000..13dd11c92
--- /dev/null
+++ b/public/oak/bin/mkhives.cmd
@@ -0,0 +1,162 @@
+@if "%_echo%" == "" echo off
+setlocal enableextensions
+set _HIVEINI_FLAGS=
+set _HIVE_OPTIONS=
+set _HIVE_KEEP=
+set _HIVE_REASON=Unknown Purpose
+if "%_NTROOT%" == "" set _NTROOT=\nt
+:loop
+if "%1" == "" goto doit
+if "%1" == "RETAIL" goto doretail
+if "%1" == "Retail" goto doretail
+if "%1" == "retail" goto doretail
+if "%1" == "KEEP" goto dokeep
+if "%1" == "Keep" goto dokeep
+if "%1" == "keep" goto dokeep
+if "%1" == "CAIRO" goto docairo
+if "%1" == "Cairo" goto docairo
+if "%1" == "cairo" goto docairo
+set _HIVEINI_FLAGS=%_HIVEINI_FLAGS% %1
+shift
+goto loop
+:doretail
+set _HIVE_OPTIONS=-D_GENERAL_PURPOSE_ -D_RETAIL_SETUP_
+set _HIVE_REASON=Retail Setup
+shift
+goto loop
+:dokeep
+set _HIVE_KEEP=YES
+shift
+goto loop
+:docairo
+if "%_HIVE_OPTIONS%" == "" goto usage
+set _HIVE_OPTIONS=%_HIVE_OPTIONS% -D_CAIRO_
+set _HIVE_REASON=%_HIVE_REASON% for Cairo
+set _CAIRO_HIVE=yes
+shift
+goto loop
+
+:doit
+set _ORIGINAL_HIVE_OPTIONS=%_HIVE_OPTIONS%
+
+set _PREPROCESSOR=rcpp -R -P -I %_NTDRIVE%%_NTROOT%\public\oak\bin -f
+echo Creating SYSTEM hive for %_HIVE_REASON%
+call mkhive1.cmd SYSTEM System %_NTDRIVE%%_NTROOT%\public\oak\bin\system.ini system.$$$ system.log
+if ERRORLEVEL 1 goto done
+
+echo Creating SOFTWARE hive for %_HIVE_REASON%
+call mkhive1.cmd SOFTWARE Software %_NTDRIVE%%_NTROOT%\public\oak\bin\software.ini software.$$$ software.log
+if ERRORLEVEL 1 goto done
+
+echo Creating DEFAULT hive for %_HIVE_REASON%
+call mkhive1.cmd DEFAULT .Default %_NTDRIVE%%_NTROOT%\public\oak\bin\default.ini default.$$$ default.log
+if ERRORLEVEL 1 goto done
+
+echo Creating USERDIFF hive for %_HIVE_REASON%
+call mkhive1.cmd USERDIFF Userdiff %_NTDRIVE%%_NTROOT%\public\oak\bin\userdiff.ini userdiff.$$$ userdiff.log
+if ERRORLEVEL 1 goto done
+
+echo Creating SETUPREG.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=0
+call mkhive1.cmd SETUPREG.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini setupreg.$$$ setupreg.log
+if ERRORLEVEL 1 goto done
+
+rem
+rem Generate the various restricted processor forms of the hives
+rem
+
+rem
+rem setupret.hiv allows 2p on NTW and 4p on NTS
+rem
+echo Creating SETUPRET.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=0
+call mkhive1.cmd SETUPRET.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini setupret.$$$ setupret.log
+if ERRORLEVEL 1 goto done
+
+rem
+rem setup2P.hiv allows 2p on NTW and NTS
+rem
+echo Creating SETUP2P.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=2
+call mkhive1.cmd SETUP2P.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini setup2P.$$$ setup2P.log
+if ERRORLEVEL 1 goto done
+
+rem
+rem setup4P.hiv allows 4p on NTW and NTS
+rem
+echo Creating SETUP4P.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=4
+call mkhive1.cmd SETUP4P.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini setup4P.$$$ setup4P.log
+if ERRORLEVEL 1 goto done
+
+rem
+rem setup8P.hiv allows 8p on NTW and NTS
+rem
+echo Creating SETUP8P.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=8
+call mkhive1.cmd SETUP8P.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini setup8P.$$$ setup8P.log
+if ERRORLEVEL 1 goto done
+
+rem
+rem setup16P.hiv allows 16p on NTW and NTS
+rem
+echo Creating SETUP16P.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=16
+call mkhive1.cmd SETUP16P.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini setup16P.$$$ setup16P.log
+if ERRORLEVEL 1 goto done
+
+rem
+rem setup32P.hiv allows 32p on NTW and NTS
+rem
+echo Creating SETUP32P.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=32
+call mkhive1.cmd SETUP32P.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini setup32P.$$$ setup32P.log
+if ERRORLEVEL 1 goto done
+
+rem
+rem Generate the 30, 60, 90, and 120 timebomb evaluation units. Only "retail" processor
+rem configurations are built (NTW=2p and NTW=4p)
+rem
+
+rem
+rem tbomb30.hiv is good for 30 days
+rem
+echo Creating TBOMB30.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=0 -DEVALTIME=43200
+call mkhive1.cmd TBOMB30.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini tbomb30.$$$ tbomb30.log
+if ERRORLEVEL 1 goto done
+
+rem
+rem tbomb60.hiv is good for 60 days
+rem
+echo Creating TBOMB60.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=0 -DEVALTIME=86400
+call mkhive1.cmd TBOMB60.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini tbomb60.$$$ tbomb60.log
+if ERRORLEVEL 1 goto done
+
+rem
+rem tbomb90.hiv is good for 90 days
+rem
+echo Creating TBOMB90.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=0 -DEVALTIME=129600
+call mkhive1.cmd TBOMB90.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini tbomb90.$$$ tbomb90.log
+if ERRORLEVEL 1 goto done
+
+rem
+rem tbomb120.hiv is good for 120 days
+rem
+echo Creating TBOMB120.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_ORIGINAL_HIVE_OPTIONS% -DRESTRICT_CPU=0 -DEVALTIME=172800
+call mkhive1.cmd TBOMB120.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini tbomb120.$$$ tbomb120.log
+if ERRORLEVEL 1 goto done
+
+
+echo Creating SETUPUPG.HIV hive for %_HIVE_REASON%
+set _HIVE_OPTIONS=%_ORIGINAL_HIVE_OPTIONS% -D_STEPUP_ -DRESTRICT_CPU=0
+call mkhive1.cmd SETUPUPG.HIV System %_NTDRIVE%%_NTROOT%\public\oak\bin\setupreg.ini setupupg.$$$ setupupg.log
+goto done
+
+:usage
+echo Usage: MKHIVES RETAIL [KEEP] [CAIRO]
+:done
+endlocal
diff --git a/public/oak/bin/mkzw.cmd b/public/oak/bin/mkzw.cmd
new file mode 100644
index 000000000..9a17515ec
--- /dev/null
+++ b/public/oak/bin/mkzw.cmd
@@ -0,0 +1,2 @@
+del %_NTDRIVE%%_NTROOT%\public\oak\inc\zwapi.h
+zwapi -o %_NTDRIVE%%_NTROOT%\public\oak\inc\zwapi.h %_NTDRIVE%%_NTROOT%\public\sdk\inc\nt*api.h
diff --git a/public/oak/bin/nti386cp.cmd b/public/oak/bin/nti386cp.cmd
new file mode 100644
index 000000000..aa28353a0
--- /dev/null
+++ b/public/oak/bin/nti386cp.cmd
@@ -0,0 +1,17 @@
+@echo off
+setlocal
+set _target=%_NT386TREE%
+if "%3" == "" goto rootcopy
+if "%3" == "LIBS" goto docopylib
+binplace -d %3 %1
+goto done
+:rootcopy
+binplace -d . %1
+goto done
+:docopylib
+set _target=%_NT386LIBS%
+echo Copying %1 to %_target%
+if NOT EXIST %_target%\. mkdir %_target%
+copy %1 %_target%
+:done
+endlocal
diff --git a/public/oak/bin/ntmipscp.cmd b/public/oak/bin/ntmipscp.cmd
new file mode 100644
index 000000000..898f1da66
--- /dev/null
+++ b/public/oak/bin/ntmipscp.cmd
@@ -0,0 +1,17 @@
+@echo off
+setlocal
+set _target=%_NTMIPSTREE%
+if "%3" == "" goto rootcopy
+if "%3" == "LIBS" goto docopylib
+binplace -d %3 %1
+goto done
+:rootcopy
+binplace -d . %1
+goto done
+:docopylib
+set _target=%_NTMIPSLIBS%
+echo Copying %1 to %_target%
+if NOT EXIST %_target%\. mkdir %_target%
+copy %1 %_target%
+:done
+endlocal
diff --git a/public/oak/bin/ntppccp.cmd b/public/oak/bin/ntppccp.cmd
new file mode 100644
index 000000000..bf9ea3521
--- /dev/null
+++ b/public/oak/bin/ntppccp.cmd
@@ -0,0 +1,17 @@
+@echo off
+setlocal
+set _target=%_NTPPCTREE%
+if "%3" == "" goto rootcopy
+if "%3" == "LIBS" goto docopylib
+binplace -d %3 %1
+goto done
+:rootcopy
+binplace -d . %1
+goto done
+:docopylib
+set _target=%_NTPPCLIBS%
+echo Copying %1 to %_target%
+if NOT EXIST %_target%\. mkdir %_target%
+copy %1 %_target%
+:done
+endlocal
diff --git a/public/oak/bin/ofs.ini b/public/oak/bin/ofs.ini
new file mode 100644
index 000000000..6db6412cb
--- /dev/null
+++ b/public/oak/bin/ofs.ini
Binary files differ
diff --git a/public/oak/bin/oleext.ini b/public/oak/bin/oleext.ini
new file mode 100644
index 000000000..0c6fd8153
--- /dev/null
+++ b/public/oak/bin/oleext.ini
@@ -0,0 +1,45 @@
+//
+// General OLEEXT Class Definitions
+//
+
+ CLSID
+ {B4FFAE60-A7CA-11CD-B58B-00006B829156}
+ = IPropertySetContainer
+ InprocServer32
+ = proxy.dll
+ CLSID
+ {521a28f2-e40b-11ce-b2c9-00aa00680937}
+ = CLSID_NtHandleMarshal
+ InprocServer32
+ = ole32.dll
+
+ Interface
+ {B4FFAE60-A7CA-11CD-B58B-00006B829156}
+ = IPropertySetContainer
+ ProxyStubClsid32
+ = {B4FFAE60-A7CA-11CD-B58B-00006B829156}
+
+ {ec81fede-d432-11ce-9244-0020af6e72db}
+ = IMultiplePropertyAccess
+ ProxyStubClsid32
+ = {B4FFAE60-A7CA-11CD-B58B-00006B829156}
+
+ {994f0Af0-2977-11CE-BB80-08002B36B2B0}
+ = IDifferencing
+ ProxyStubClsid32
+ = {B4FFAE60-A7CA-11CD-B58B-00006B829156}
+
+ {99180161-DA16-101A-935C-444553540000}
+ = IReconcileInitiator
+ ProxyStubClsid32
+ = {B4FFAE60-A7CA-11CD-B58B-00006B829156}
+
+ {99180163-DA16-101A-935C-444553540000}
+ = INotifyReplica
+ ProxyStubClsid32
+ = {B4FFAE60-A7CA-11CD-B58B-00006B829156}
+
+ {99180162-DA16-101A-935C-444553540000}
+ = IReconcilableObject
+ ProxyStubClsid32
+ = {B4FFAE60-A7CA-11CD-B58B-00006B829156}
diff --git a/public/oak/bin/perfc009.ini b/public/oak/bin/perfc009.ini
new file mode 100644
index 000000000..61101aa21
--- /dev/null
+++ b/public/oak/bin/perfc009.ini
Binary files differ
diff --git a/public/oak/bin/perfh009.ini b/public/oak/bin/perfh009.ini
new file mode 100644
index 000000000..c4a56ae3e
--- /dev/null
+++ b/public/oak/bin/perfh009.ini
@@ -0,0 +1,2205 @@
+ "3", "The System object type includes those counters "
+ "that apply to all processors on the computer "
+ "collectively. These counters represent the activity of "
+ "all processors on the computer.",
+
+ "5", "The Memory object type includes those counters "
+ "that describe the behavior of both real and virtual "
+ "memory on the computer. Real memory is allocated in "
+ "units of pages. Virtual memory may exceed real "
+ "memory in size, causing page traffic as virtual pages "
+ "are moved between disk and real memory.",
+
+ "7", "Processor Time is expressed as a percentage of the "
+ "elapsed time that a processor is busy executing "
+ "a non-Idle thread. It can be viewed as the fraction "
+ "of the time spent doing useful work. Each processor is "
+ "assigned an Idle thread in the Idle process which consumes "
+ "those unproductive processor cycles not used by any other "
+ "threads.",
+
+ "11", "File Read Operations/sec is an aggregate of all the file system "
+ "read operations on the computer.",
+
+ "13", "File Write Operations/sec is an aggregate of all the file system "
+ "write operations on the computer.",
+
+ "15", "File Control Operations/sec is an aggregate of all "
+ "file system operations that are neither reads nor writes. "
+ "These operations usually include file system control requests or "
+ "requests for information about device characteristics or "
+ "status.",
+
+ "17", "File Read Bytes/sec is an aggregate of the bytes transferred "
+ "for all the file system read operations on the computer.",
+
+ "19", "File Write Bytes/sec is an aggregate of the bytes transferred "
+ "for all the file system write operations on the computer.",
+
+ "21", "File Control Bytes/sec is an aggregate of bytes transferred "
+ "for all file system operations that are neither reads nor "
+ "writes. These operations usually include file system control "
+ "requests or requests for information about device "
+ "characteristics or status.",
+
+ "25", "Available Bytes displays the size of the virtual memory "
+ "currently on the Zeroed, Free, and Standby lists. Zeroed "
+ "and Free memory is ready for use, with Zeroed memory cleared "
+ "to zeros. Standby memory is memory removed from a process's "
+ "Working Set but still available. Notice that this is an "
+ "instantaneous count, not an average over the time interval.",
+
+ "27", "Committed Bytes displays the size of virtual memory "
+ "(in bytes) that has been Committed (as opposed to simply "
+ "reserved). Committed memory must have backing (i.e., disk) "
+ "storage available, or must be assured never to need disk "
+ "storage (because main memory is large enough to hold it.) "
+ "Notice that this is an instantaneous count, not an average "
+ "over the time interval.",
+
+ "29", "Page Faults/sec is a count of the Page Faults in "
+ "the processor. A page fault occurs when a process "
+ "refers to a virtual memory page that is not in its "
+ "Working Set in main memory. A Page Fault will not "
+ "cause the page to be fetched from disk if that page "
+ "is on the standby list, and hence already in main memory, "
+ "or if it is in use by another process with whom the "
+ "page is shared.",
+
+ "31", "Commit Limit is the size (in bytes) of "
+ "virtual memory that can be committed without having to "
+ "extend the paging file(s). If the paging file(s) can "
+ "be extended, this is a soft limit.",
+
+ "33", "Write Copies/sec is the number of page faults that "
+ "have been satisfied by making a copy of a page when an "
+ "attempt to write to the page is made. This is an "
+ "economical way of sharing data since the copy "
+ "of the page is only made on an attempt to write to "
+ "the page; otherwise, the page is shared.",
+
+ "35", "Transition Faults/sec is the number of page faults "
+ "resolved by recovering pages that were in "
+ "transition, i.e., being written to disk at the time "
+ "of the page fault. The pages were recovered without "
+ "additional disk activity.",
+
+ "37", "Cache Faults occur whenever the Cache manager does "
+ "not find a file's page in the immediate Cache and "
+ "must ask the memory manager to locate the page "
+ "elsewhere in memory or on the disk so that it can be "
+ "loaded into the immediate Cache.",
+
+ "39", "Demand Zero Faults are the number of page faults for "
+ "pages that must be filled with zeros before the "
+ "fault is satisfied. If the Zeroed list is not empty, "
+ "the fault can be resolved by removing a page from "
+ "the Zeroed list.",
+
+ "41", "Pages/sec is the number of pages read from the disk "
+ "or written to the disk "
+ "to resolve memory references to pages that "
+ "were not in memory at the time of the reference. "
+ "This is the sum of Pages Input/sec and Pages Output/sec. "
+ "This counter includes paging traffic on behalf of the "
+ "system Cache to access file data for applications. "
+ "This is the primary counter to observe if you are concerned "
+ "about excessive memory pressure (that is, thrashing), and "
+ "the excessive paging that may result.",
+
+ "43", "Page Reads/sec is the number of times the disk was read "
+ "to retrieve pages of virtual memory necessary to resolve "
+ "page faults. Multiple pages can be read during a disk read "
+ "operation.",
+
+ "45", "Processor Queue Length is the instantaneous length of the "
+ "processor queue "
+ "in units of threads. This counter is always 0 "
+ "unless you are also monitoring a thread counter. "
+ "All processors use a single "
+ "queue in which threads wait for processor cycles. "
+ "This length does not include the threads that are "
+ "currently executing. A sustained processor queue length "
+ "greater than two generally indicates processor congestion. "
+ "This is an instantaneous count, not an average over the "
+ "time interval.",
+
+ "47", "Thread State is the current state of the thread. "
+ "It is 0 for Initialized, 1 for Ready, 2 for Running, "
+ "3 for Standby, 4 for Terminated, 5 for Wait, "
+ "6 for Transition, 7 for Unknown. A Running thread is "
+ "using a processor; a Standby thread is about to use one. "
+ "A Ready thread wants to use a processor, but "
+ "is waiting for a processor because none are "
+ "free. A thread in Transition is waiting for a resource "
+ "in order to execute, such as waiting for its execution stack "
+ "to be paged in from disk. A Waiting thread has no use for "
+ "the processor because it is waiting for a peripheral "
+ "operation to complete or a resource to become free.",
+
+ "49", "Pages Output/sec is a count of the number of pages that "
+ "are written to disk because the pages "
+ "have been modified in main memory.",
+
+ "51", "Page Writes/sec is a count of the number of times "
+ "pages have been written to the disk because they "
+ "were changed since last retrieved. Each such write "
+ "operation may transfer a "
+ "number of pages.",
+
+ "57", "Pool Paged Bytes is the number of bytes in the "
+ "Paged Pool, a system memory area where space is acquired "
+ "by operating system components as they accomplish their "
+ "appointed tasks. Paged Pool pages can "
+ "be paged out to the paging file when not accessed by "
+ "the system for sustained periods of time.",
+
+ "59", "Pool Nonpaged Bytes is the number of bytes in the "
+ "Nonpaged Pool, a system memory area where space is acquired "
+ "by operating system components as they accomplish their "
+ "appointed tasks. Nonpaged Pool pages cannot be paged "
+ "out to the paging file, but instead remain in main memory "
+ "as long as they are allocated.",
+
+ "61", "Pool Paged Allocs is the number of calls to allocate "
+ "space in the system Paged Pool. "
+ "Paged Pool is a system memory area where space is acquired "
+ "by operating system components as they accomplish their "
+ "appointed tasks. Paged Pool pages can "
+ "be paged out to the paging file when not accessed by "
+ "the system for sustained periods of time.",
+
+ "63", "Pool Paged Resident Bytes is the size of paged Pool resident in "
+ "core memory. This is the actual cost of the paged Pool allocation, "
+ "since this is actively in use and using real physical memory.",
+
+ "65", "Pool Nonpaged Allocs is the number of calls to "
+ "allocate space in the system Nonpaged Pool. "
+ "Nonpaged Pool is a system memory area where space is acquired "
+ "by operating system components as they accomplish their "
+ "appointed tasks. Nonpaged Pool pages cannot be paged "
+ "out to the paging file, but instead remain in main memory "
+ "as long as they are allocated.",
+
+ "67", "Bytes Total/sec is the sum of Frame Bytes/sec and "
+ "Datagram Bytes/sec. This is the total rate of bytes "
+ "sent to or received from the network by the protocol, "
+ "but only counts the bytes in frames (i.e., packets) "
+ "which carry data.",
+
+ "69", "System Code Total Bytes is the number of bytes of pagable pages "
+ "in ntoskrnl.exe, hal.dll, and the boot drivers and file systems "
+ "loaded by ntldr/osloader.",
+
+ "71", "System Code Resident Bytes is the number of bytes of "
+ "System Code Total Bytes currently resident in core memory. "
+ "This is the code working set of the pagable executive. "
+ "In addition to this, there is another ~300k bytes of non-paged "
+ "kernel code.",
+
+ "73", "System Driver Total Bytes is the number of bytes of pagable "
+ "pages in all other loaded device drivers.",
+
+ "75", "System Driver Resident Bytes is the number of bytes of "
+ "System Driver Total Bytes currently resident in core memory. "
+ "This number is the code working set of the pagable drviers. "
+ "In addition to this, there is another ~700k bytes of non-paged "
+ "driver code.",
+
+ "77", "System Cache Resident Bytes is the number of bytes currently "
+ "resident in the global disk cache.",
+
+ "87", "The Cache object type manages memory for rapid access to "
+ "files. Files on Windows NT are cached in main memory in "
+ "units of pages. Main memory not being used in the working "
+ "sets of processes is available to the Cache for "
+ "this purpose. The Cache preserves file pages in memory "
+ "for as long as possible to permit access to the "
+ "data through the file system without having to access the "
+ "disk.",
+
+ "89", "Data Maps/sec is the frequency that a file system "
+ "such as NTFS or "
+ "HPFS maps a page of a file into the Cache to read the page.",
+
+ "91", "Sync Data Maps/sec counts the frequency that a "
+ "file system such as NTFS "
+ "or HPFS maps a page of a file into the Cache to read the "
+ "page, and wishes to wait for the Cache to retrieve the "
+ "page if it is not in main memory.",
+
+ "93", "Async Data Maps/sec is the frequency that an "
+ "application using a file system such as "
+ "NTFS or HPFS to map a page of a file into the Cache to read "
+ "the page, and does not wish to wait for the Cache to "
+ "retrieve the page if it is not in main memory.",
+
+ "95", "Data Map Hits is the percentage of Data Maps in "
+ "the Cache that could be resolved without having to "
+ "retrieve a page from the disk, i.e. the page was already "
+ "in physical memory.",
+
+ "97", "Data Map Pins/sec is the frequency of Data Maps in "
+ "the Cache that resulted in pinning a page in main "
+ "memory, an action usually preparatory to writing to the "
+ "file on disk. While pinned, a page's physical address "
+ "in main memory and virtual address in the Cache "
+ "will not be altered.",
+
+ "99", "Pin Reads/sec is the frequency of "
+ "reading data into the Cache preparatory to writing the "
+ "data back to disk. "
+ "Pages read in this fashion are pinned in memory at "
+ "the completion of the read. While pinned, a page's "
+ "physical address in the Cache will not be altered.",
+
+ "101", "Sync Pin Reads/sec is the frequency of "
+ "reading data into the "
+ "Cache preparatory to writing the data back to disk. "
+ "Pages read in this fashion are pinned in memory at the "
+ "completion of the read. The file system will not "
+ "regain control until the page is pinned in the Cache, "
+ "in particular if the disk must be accessed to retrieve the "
+ "page. While pinned, a page's physical address in the Cache will "
+ "not be altered.",
+
+ "103", "Async Pin Reads/sec is the frequency of "
+ "reading data into the "
+ "Cache preparatory to writing the data back to disk. "
+ "Pages read in this fashion are pinned in memory at the "
+ "completion of the read. The file system will regain "
+ "control immediately even if the disk must be accessed "
+ "to retrieve the page. While pinned, a page's physical "
+ "address will not be altered.",
+
+ "105", "Pin Read Hits is the percentage of Cache Pin Read "
+ "requests that hit the Cache, i.e., did not require a disk "
+ "read in order to provide access to the page in the Cache. "
+ "While pinned, a page's physical address in the Cache will "
+ "not be altered. "
+ "The LAN Redirector uses this method for retrieving Cache "
+ "information, as does the LAN Server for small transfers. "
+ "This is usually the method used by the disk file systems "
+ "as well.",
+
+ "107", "Copy Reads/sec is the frequency of reads from "
+ "Cache pages that involve "
+ "a memory copy of the data from the Cache to the "
+ "application's buffer. The LAN Redirector uses this method "
+ "for retrieving Cache information, as does the "
+ "LAN Server for small transfers. This is a method used "
+ "by the disk file systems as well.",
+
+ "109", "Sync Copy Reads/sec is the frequency of reads from "
+ "Cache pages that "
+ "involve a memory copy of the data from the Cache to the "
+ "application's buffer. The file system will not regain "
+ "control until the copy operation is complete, even "
+ "if the disk must be accessed to retrieve the page.",
+
+ "111", "Async Copy Reads/sec is the frequency of reads "
+ "from Cache pages that "
+ "involve a memory copy of the data from the Cache to the "
+ "application's buffer. The application will regain "
+ "control immediately even if the disk must be accessed "
+ "to retrieve the page.",
+
+ "113", "Copy Read Hits is the percentage of Cache Copy Read "
+ "requests that hit the Cache, i.e., did not require a "
+ "disk read in order to provide access to the page in "
+ "the Cache. A Copy Read is a file read operation that is "
+ "satisfied by a memory copy from a Cache page to the "
+ "application's buffer. "
+ "The LAN Redirector uses this method for "
+ "retrieving Cache information, as does the LAN Server "
+ "for small transfers. This is a method used by the disk "
+ "file systems as well.",
+
+ "115", "MDL Reads/sec is the frequency of reads from "
+ "Cache pages that use "
+ "a Memory Descriptor List (MDL) to access the data. The "
+ "MDL contains the physical address of each page involved "
+ "in the transfer, and thus can employ a "
+ "hardware Direct Memory Access (DMA) device to effect the "
+ "copy. The LAN Server uses this method for large transfers "
+ "out of the server.",
+
+ "117", "Sync MDL Reads/sec is the frequency of reads from "
+ "Cache pages that use a "
+ "Memory Descriptor List (MDL) to access the pages. The MDL "
+ "contains the physical address of each page in the transfer, "
+ "thus permitting Direct Memory Access (DMA) of the pages. "
+ "If the accessed page(s) are not in main memory, the caller "
+ "will wait for the pages to fault in from the disk.",
+
+ "119", "Async MDL Reads/sec is the frequency of reads "
+ "from Cache pages using a Memory Descriptor List (MDL) to "
+ "access the pages. The MDL contains the physical address "
+ "of each page in the transfer, thus permitting Direct "
+ "Memory Access (DMA) of the pages. If the accessed page(s) "
+ "are not in main memory, the calling application program will "
+ "not wait for the pages to fault in from disk.",
+
+ "121", "MDL Read Hits is the percentage of Cache Memory "
+ "Descriptor List (MDL) Read "
+ "requests that hit the Cache, i.e., did not require disk "
+ "accesses in order to provide memory access to the page(s) "
+ "in the Cache.",
+
+ "123", "Read Aheads/sec is the frequency of Cache reads "
+ "where the Cache detects sequential access to a file. "
+ "The read aheads permit the data to be transferred in "
+ "larger blocks than those being requested by the "
+ "application, reducing the overhead per access.",
+
+ "125", "Fast Reads/sec is the frequency of reads from "
+ "Cache pages that bypass "
+ "the installed file system and retrieve the data "
+ "directly from the Cache. Normally, file I/O requests "
+ "invoke the appropriate file system to retrieve data from "
+ "a file, but this path permits direct retrieval of Cache "
+ "data without file system involvement if the data is in "
+ "the Cache. Even if the data is not in the Cache, one "
+ "invocation of the file system is avoided.",
+
+ "127", "Sync Fast Reads/sec is the frequency of reads "
+ "from Cache pages that "
+ "bypass the installed file system and retrieve the data "
+ "directly from the Cache. Normally, file I/O requests "
+ "invoke the appropriate file system to retrieve data "
+ "from a file, but this path permits direct retrieval of "
+ "Cache data without file system involvement if the "
+ "data is in the Cache. Even if the data is not in the "
+ "Cache, one invocation of the file system is avoided. "
+ "If the data is not in the Cache, the request (application "
+ "program call) will wait "
+ "until the data has been retrieved from disk.",
+
+ "129", "Async Fast Reads/sec is the frequency of reads "
+ "from Cache pages that "
+ "bypass the installed file system and retrieve the data "
+ "directly from the Cache. Normally, file I/O requests will "
+ "invoke the appropriate file system to retrieve data "
+ "from a file, but this path permits direct retrieval "
+ "of Cache data without file system involvement if the "
+ "data is in the Cache. Even if the data is not in the "
+ "Cache, one invocation of the file system is avoided. "
+ "If the data is not in the Cache, the request (application "
+ "program call) will not wait until the data has been "
+ "retrieved from disk, but will get control immediately.",
+
+ "131", "Fast Read Resource Misses/sec is the frequency of "
+ "Cache misses necessitated by the lack of available "
+ "resources to satisfy the request.",
+
+ "133", "Fast Read Not Possibles/sec is the frequency of "
+ "attempts by "
+ "an Application Program Interface (API) function call "
+ "to bypass the file system to get at Cache data, that "
+ "could not be honored without invoking the file system "
+ "after all.",
+
+ "135", "Lazy Write Flushes/sec is the frequency "
+ "the Cache's Lazy Write thread has written to disk. "
+ "Lazy Writing is the process of updating the disk after "
+ "the page has been changed in memory, so the application "
+ "making the change to the file does not have to wait for "
+ "the disk write to complete before proceeding. "
+ "More than one page can be transferred on each write "
+ "operation.",
+
+ "137", "Lazy Write Pages/sec is the frequency "
+ "the Cache's Lazy Write thread has written to disk. "
+ "Lazy Writing is the process of updating the disk after "
+ "the page has been changed in memory, so the application "
+ "making the change to the file does not have to wait for "
+ "the disk write to complete before proceeding. "
+ "More than one page can be transferred on a single disk "
+ "write operation.",
+
+ "139", "Data Flushes/sec is the frequency "
+ "the Cache has flushed its contents to disk as the "
+ "result of a request to flush or to satisfy a write-through "
+ "file write request. More than one page can be "
+ "transferred on each flush operation.",
+
+ "141", "Data Flush Pages/sec is the number of pages "
+ "the Cache has flushed to disk as a result of a request "
+ "to flush or to satisfy a write-through file write "
+ "request. More than one page can be transferred on each "
+ "flush operation.",
+
+ "143", "User Time is the percentage of processor time spent "
+ "in User Mode in non-Idle threads. All application code "
+ "and subsystem code "
+ "execute in User Mode. The graphics engine, graphics "
+ "device drivers, printer device drivers, and the "
+ "window manager also execute in User Mode. "
+ "Code executing in User Mode cannot damage the integrity "
+ "of the Windows NT Executive, Kernel, and device drivers. "
+ "Unlike some early operating systems, Windows NT uses "
+ "process boundaries for subsystem protection in "
+ "addition to the traditional protection of User and Privileged "
+ "modes. These subsystem processes provide additional"
+ " protection. "
+ "Therefore, some work done by Windows NT on behalf of "
+ "your application may appear in other subsystem processes "
+ "in addition to the Privileged Time in your process.",
+
+ "145", "Privileged Time is the percentage of processor time "
+ "spent in Privileged Mode in non-Idle threads. The Windows "
+ "NT service layer, "
+ "the Executive routines, and the Windows NT Kernel "
+ "execute in Privileged Mode. Device drivers for most "
+ "devices other than graphics adapters and printers "
+ "also execute in Privileged Mode. "
+ "Unlike some early operating systems, Windows NT uses "
+ "process boundaries for subsystem protection in "
+ "addition to the traditional protection of User and Privileged "
+ "modes. These subsystem processes provide additional"
+ " protection. "
+ "Therefore, some work done by Windows NT on behalf of "
+ "your application may appear in other subsystem processes "
+ "in addition to the Privileged Time in your process.",
+
+ "147", "Context Switches/sec is the rate of switches from one "
+ "thread to another. Thread switches can occur either "
+ "inside of a single process or across processes. A thread "
+ "switch may be caused either by one thread asking another "
+ "for information, or by a thread being preempted by another, "
+ "higher priority thread becoming ready to run. "
+ "Unlike some early operating systems, Windows NT uses "
+ "process boundaries for subsystem protection in "
+ "addition to the traditional protection of User and Privileged "
+ "modes. These subsystem processes provide additional"
+ " protection. "
+ "Therefore, some work done by Windows NT on behalf of "
+ "an application may appear in other subsystem processes "
+ "in addition to the Privileged Time in the application. "
+ "Switching to the subsystem process causes one Context Switch "
+ "in the application thread. "
+ "Switching back causes another Context Switch in the "
+ "subsystem thread.",
+
+ "149", "Interrupts/sec is the number of device interrupts the "
+ "processor is experiencing. A device interrupts the "
+ "processor when it has completed a task or when it "
+ "otherwise requires attention. Normal thread execution "
+ "is suspended during interrupts. An interrupt may cause "
+ "the processor to switch to another, higher priority "
+ "thread. Clock interrupts are frequent and periodic "
+ "and create a background of interrupt activity.",
+
+ "151", "Systems Calls/sec is the frequency of calls to Windows NT "
+ "system service routines. These routines perform all "
+ "of the basic scheduling and synchronization of activities "
+ "on the computer, and provide access to non-graphical "
+ "devices, memory management, and name space management.",
+
+ "153", "Level 1 TLB Fills/sec is the frequency of faults that "
+ "occur when reference is made to memory whose Page Table Entry "
+ "(PTE) is not in the Translation Lookaside Buffer (TLB). "
+ "On some "
+ "computers this fault is handled by software loading the "
+ "PTE into the TLB, and this counter is incremented.",
+
+ "155", "Level 2 TLB Fills/sec is the frequency of faults that "
+ "occur when reference is made to memory whose Page Table Entry "
+ "(PTE) is not in the Translation Lookaside Buffer (TLB), nor "
+ "is the page containing the PTE. "
+ "On some "
+ "computers this fault is handled by software loading the "
+ "PTE into the TLB, and this counter is incremented.",
+
+ "157", "User Time is the percentage of elapsed time that this "
+ "process's threads have spent executing code in User Mode. "
+ "Applications execute in User Mode, as do subsystems "
+ "like the window manager and the graphics engine. "
+ "Code executing in User Mode cannot damage the integrity "
+ "of the Windows NT Executive, Kernel, and device drivers. "
+ "Unlike some early operating systems, Windows NT uses "
+ "process boundaries for subsystem protection in "
+ "addition to the traditional protection of User and Privileged "
+ "modes. These subsystem processes provide additional"
+ " protection. "
+ "Therefore, some work done by Windows NT on behalf of "
+ "your application may appear in other subsystem processes "
+ "in addition to the Privileged Time in your process.",
+
+ "159", "Privileged Time is the percentage of elapsed time that this "
+ "process's threads have spent executing code in Privileged "
+ "Mode. When a Windows NT system service is called, "
+ "the service will often run in Privileged Mode "
+ "to gain access to system-private data. Such data "
+ "is protected from access by threads executing in "
+ "User Mode. Calls to the system may be explicit, or "
+ "they may be implicit such as when a page fault or an "
+ "interrupt occurs. "
+ "Unlike some early operating systems, Windows NT uses "
+ "process boundaries for subsystem protection in "
+ "addition to the traditional protection of User and Privileged "
+ "modes. These subsystem processes provide additional"
+ " protection. "
+ "Therefore, some work done by Windows NT on behalf of "
+ "your application may appear in other subsystem processes "
+ "in addition to the Privileged Time in your process.",
+
+ "173", "Virtual Bytes Peak is the maximum number of bytes of "
+ "virtual address space the process has used at any one "
+ "time. Use of virtual address space does not necessarily "
+ "imply corresponding use of either disk or main memory "
+ "pages. Virtual space is however finite, and by using "
+ "too much, the process may limit its ability to load "
+ "libraries.",
+
+ "175", "Virtual Bytes is the current size in bytes of the "
+ "virtual address space the process is using. "
+ "Use of virtual address space does not necessarily imply "
+ "corresponding use of either disk or main memory pages. "
+ "Virtual space is however finite, and by using too much, "
+ "the process may limit its ability to load libraries.",
+
+ "177", "Page Faults/sec is the rate of Page Faults by the threads "
+ "executing in this process. "
+ "A page fault occurs when a thread refers to a virtual "
+ "memory page that is not in its working set in main "
+ "memory. This will not cause the page to be fetched from "
+ "disk if it is on the standby list and hence already in "
+ "main memory, or if it is in use by another process with "
+ "whom the page is shared.",
+
+ "179", "Working Set Peak is the maximum number of bytes in the "
+ "Working Set of this process at any point in time. "
+ "The Working Set is the set of memory pages touched "
+ "recently by the threads in the process. "
+ "If free memory in the computer is above a threshold, "
+ "pages are left in the Working Set of a process even if "
+ "they are not in use. When free memory falls below "
+ "a threshold, pages are trimmed from Working Sets. If "
+ "they are needed they will then be soft-faulted back into the "
+ "Working Set before they leave main memory.",
+
+ "181", "Working Set is the current number of bytes "
+ "in the Working Set of this process. "
+ "The Working Set is the set of memory pages touched "
+ "recently by the threads in the process. "
+ "If free memory in the computer is above a threshold, "
+ "pages are left in the Working Set of a process even if "
+ "they are not in use. When free memory falls below "
+ "a threshold, pages are trimmed from Working Sets. If "
+ "they are needed they will then be soft-faulted back into the "
+ "Working Set before they leave main memory.",
+
+ "183", "Page File Bytes Peak is the maximum number of bytes this "
+ "process has used in the paging file(s). Paging files are "
+ "used to store pages of memory used by the process "
+ "that are not contained in other files. Paging "
+ "files are shared by all processes, and lack of space "
+ "in paging files can prevent other processes from "
+ "allocating memory.",
+
+ "185", "Page File Bytes is the current number of bytes this process "
+ "has used in the paging file(s). Paging files are "
+ "used to store pages of memory used by the process "
+ "that are not contained in other files. Paging "
+ "files are shared by all processes, and lack of space "
+ "in paging files can prevent other processes from "
+ "allocating memory.",
+
+ "187", "Private Bytes is the current number of bytes this process "
+ "has allocated that cannot be shared with other processes.",
+
+ "189", "Processor Time is the percentage of elapsed time that "
+ "all of the threads of this process used the processor "
+ "to execute instructions. An instruction is the basic "
+ "unit of execution in a computer, a thread is the object "
+ "that executes instructions, and a process is the object "
+ "created when a program is run. Code executed to handle "
+ "certain hardware interrupts or trap conditions may be "
+ "counted for this process.",
+
+ "191", "Processor Time is the percentage of elapsed time that this "
+ "thread used the processor to execute instructions. "
+ "An instruction is the basic unit of execution in a processor, "
+ "and a thread is the object that executes instructions. "
+ "Code executed to handle certain hardware interrupts or "
+ "trap conditions may be counted for this thread.",
+
+ "193", "User Time is the percentage of elapsed time that this "
+ "thread has spent executing code in User Mode. "
+ "Applications execute in User Mode, as do subsystems like "
+ "the window manager and the graphics engine. "
+ "Code executing in User Mode cannot damage the integrity "
+ "of the Windows NT Executive, Kernel, and device drivers. "
+ "Unlike some early operating systems, Windows NT uses "
+ "process boundaries for subsystem protection in "
+ "addition to the traditional protection of User and Privileged "
+ "modes. These subsystem processes provide additional"
+ " protection. "
+ "Therefore, some work done by Windows NT on behalf of "
+ "your application may appear in other subsystem processes "
+ "in addition to the Privileged Time in your process.",
+
+ "195", "Privileged Time is the percentage of elapsed time that "
+ "this thread has spent executing code in Privileged Mode. "
+ "When a Windows NT system service is called, "
+ "the service will often run in Privileged Mode in order "
+ "to gain access to system-private data. Such data is "
+ "protected from access by threads executing in User Mode. "
+ "Calls to the system may be explicit, or they may be "
+ "implicit such as when a page fault or an interrupt occurs. "
+ "Unlike some early operating systems, Windows NT uses "
+ "process boundaries for subsystem protection in "
+ "addition to the traditional protection of User and Privileged "
+ "modes. These subsystem processes provide additional"
+ " protection. "
+ "Therefore, some work done by Windows NT on behalf of "
+ "your application may appear in other subsystem processes "
+ "in addition to the Privileged Time in your process.",
+
+ "197", "Context Switches/sec is the rate of switches from one "
+ "thread to another. Thread switches can occur either inside "
+ "of a single process or across processes. A thread switch "
+ "may be caused either by one thread asking another for "
+ "information, or by a thread being preempted by another, "
+ "higher priority thread becoming ready to run. "
+ "Unlike some early operating systems, Windows NT uses "
+ "process boundaries for subsystem protection in "
+ "addition to the traditional protection of User and Privileged "
+ "modes. These subsystem processes provide additional"
+ " protection. "
+ "Therefore, some work done by Windows NT on behalf of "
+ "an application may appear in other subsystem processes "
+ "in addition to the Privileged Time in the application. "
+ "Switching to the subsystem process causes one Context Switch "
+ "in the application thread. "
+ "Switching back causes another Context Switch in the "
+ "subsystem thread.",
+
+ "199", "Disk Queue Length is the number of requests outstanding on "
+ "the disk at the time the performance data is collected. "
+ "It includes requests in service at the time of the snapshot. "
+ "This is an instantaneous length, not an average over the "
+ "time interval. "
+ "Multi-spindle disk devices can have multiple requests "
+ "active at one time, but other concurrent requests are "
+ "awaiting service. "
+ "This counter may reflect a transitory high or low queue length, "
+ "but if there is a sustained load on the disk drive, it is "
+ "likely that this will be consistently high. "
+ "Requests are experiencing "
+ "delays proportional to the length of this queue minus the "
+ "number of spindles on the disks. This difference should average "
+ "less than 2 for good performance.",
+
+ "201", "Disk Time is the percentage of elapsed time that the "
+ "selected disk drive is busy servicing read or write requests.",
+
+ "203", "Disk Read Time is the percentage of elapsed time that the "
+ "selected disk drive is busy servicing read requests.",
+
+ "205", "Disk Write Time is the percentage of elapsed time that the "
+ "selected disk drive is busy servicing write requests.",
+
+ "207", "Avg. Disk sec/Transfer is the time in seconds of the average disk "
+ "transfer.",
+
+ "209", "Avg. Disk sec/Read is the average time in seconds of a "
+ "read of data from the disk.",
+
+ "211", "Avg. Disk sec/Write is the average time in seconds of a "
+ "write of data to the disk.",
+
+ "213", "Disk Transfers/sec is the rate of read and write operations "
+ "on the disk.",
+
+ "215", "Disk Reads/sec is the rate of read operations on the disk.",
+
+ "217", "Disk Writes/sec is the rate of write operations on the disk.",
+
+ "219", "Disk Bytes/sec is the rate bytes are transferred "
+ "to or from the disk during write or read operations.",
+
+ "221", "Disk Read Bytes/sec is the rate bytes are transferred from "
+ "the disk during read operations.",
+
+ "223", "Disk Write Bytes is rate bytes are transferred to the disk "
+ "during write operations.",
+
+ "225", "Avg. Disk Bytes/Transfer is the average number of bytes transferred "
+ "to or from the disk during write or read operations.",
+
+ "227", "Avg. Disk Bytes/Read is the average number of bytes "
+ "transferred from the disk during read operations.",
+
+ "229", "Avg. Disk Bytes/Write is the average number of bytes "
+ "transferred to the disk during write operations.",
+
+ "231", "The Process object type is created when a "
+ "program is run. All the threads in a process share the "
+ "same address space and have access to the same data.",
+
+ "233", "The Thread object type is the basic object that executes "
+ "instructions in a processor. Every running process has at "
+ "least one thread.",
+
+ "235", "A Physical Disk object type is a hard or fixed disk drive. "
+ "It will contain 1 or more logical partitions. Disks are used "
+ "to store file, program, and paging data. The disk is read "
+ "to retrieve these items, and written to record changes to them.",
+
+ "237", "A Logical Disk object type is a partition on a hard or fixed "
+ "disk drive and assigned a drive letter, such as C. "
+ "Disks can be partitioned into distinct sections where they "
+ "can store file, program, and page data. The disk is read "
+ "to retrieve these items, and written to record changes to them.",
+
+ "239", "The Processor object type includes as instances all "
+ "processors on the computer. A processor is the part "
+ "in the computer that performs arithmetic and logical "
+ "computations, and initiates operations on peripherals. "
+ "It executes (i.e., runs) programs on the computer.",
+
+ "241", "The % Total Processor Time is the average percentage of time "
+ "that all the processors on the system are busy executing "
+ "non-idle threads. "
+ "On a multi-processor system, if all processors are always "
+ "busy this is 100%, if all processors are 50% busy this "
+ "is 50% and if 1/4th of the processors are busy this is "
+ "25%. "
+ "It can be viewed as the fraction "
+ "of the time spent doing useful work. Each processor is "
+ "assigned an Idle thread in the Idle process which consumes "
+ "those unproductive processor cycles not used by any other "
+ "threads. ",
+
+ "243", "The % Total User Time is the average percentage of time spent "
+ "in User mode by all processors. "
+ "On a multi-processor system, if all processors are always "
+ "in User mode this is 100%, if all processors are 50% "
+ "in User mode this "
+ "is 50% and if 1/4th of the processors are in User mode this "
+ "is 25%. "
+ "Applications execute in User Mode, as do subsystems like "
+ "the window manager and the graphics engine. "
+ "Code executing in User Mode cannot damage the integrity "
+ "of the Windows NT Executive, Kernel, and device drivers. "
+ "Unlike some early operating systems, Windows NT uses "
+ "process boundaries for subsystem protection in "
+ "addition to the traditional protection of User and Privileged "
+ "modes. These subsystem processes provide additional"
+ " protection. "
+ "Therefore, some work done by Windows NT on behalf of "
+ "an application may appear in other subsystem processes "
+ "in addition to the Privileged Time in the application process.",
+
+ "245", "The % Total Privileged Time is the average percentage of time "
+ "spent in Privileged mode by all processors. "
+ "On a multi-processor system, if all processors are always "
+ "in Privileged mode this is 100%, if all processors are 50% "
+ "in Privileged mode this "
+ "is 50% and if 1/4th of the processors are in Privileged mode this "
+ "is 25%. "
+ "When a Windows NT system service is called, "
+ "the service will often run in Privileged Mode in order "
+ "to gain access to system-private data. Such data is "
+ "protected from access by threads executing in User Mode. "
+ "Calls to the system may be explicit, or they may be "
+ "implicit such as when a page fault or an interrupt occurs. "
+ "Unlike some early operating systems, Windows NT uses "
+ "process boundaries for subsystem protection in "
+ "addition to the traditional protection of User and Privileged "
+ "modes. These subsystem processes provide additional"
+ " protection. "
+ "Therefore, some work done by Windows NT on behalf of "
+ "an application may appear in other subsystem processes "
+ "in addition to the Privileged Time in the application process.",
+
+ "247", "Total Interrupts/sec is the rate the computer is receiving "
+ "and servicing hardware interrupts. Some devices that may "
+ "generate interrupts are the system timer, the mouse, data "
+ "communication lines, network interface "
+ "cards and other peripheral devices. This counter provides an "
+ "indication of how busy these devices are on a computer-wide "
+ "basis. See also Processor:Interrupts/sec.",
+
+ "249", "Processes is the number of processes in the computer at "
+ "the time of data collection. Notice that this is an "
+ "instantaneous count, not an average over the time interval. "
+ "Each process represents the running of a program.",
+
+ "251", "Threads is the number of threads in the computer at the time "
+ "of data collection. Notice that this is an instantaneous "
+ "count, not an average over the time interval. A thread is "
+ "the basic executable entity that can execute instructions "
+ "in a processor.",
+
+ "253", "Events is the number of events in the computer at the time "
+ "of data collection. Notice that this is an instantaneous "
+ "count, not an average over the time interval. An "
+ "event is used when two or more threads wish to synchronize "
+ "execution.",
+
+ "255", "Semaphores is the number of semaphores in the computer at the "
+ "time of data collection. Notice that this is an instantaneous "
+ "count, not an average over the time interval. Threads "
+ "use semaphores to obtain exclusive access to data structures "
+ "that they share with other threads.",
+
+ "257", "Mutexes counts the number of mutexes in the computer "
+ "at the time of data collection. This is an instantaneous "
+ "count, not an average over the time interval. Mutexes "
+ "are used by threads to assure only one thread is executing"
+ " some section of code.",
+
+ "259", "Sections is the number of sections in the computer at the "
+ "time of data collection. Notice that this is an "
+ "instantaneous count, not an average over the time interval. "
+ "A section is a portion of virtual memory created by a "
+ "process for a storing data. A process may share sections "
+ "with other processes.",
+
+ "261", "The Objects object type is a meta-object that contains "
+ "information about the objects in existence on the computer. "
+ "This information can be used to detect the unnecessary "
+ "consumption of computer resources. Each object requires "
+ "memory to store basic information about the object.",
+
+ "263", "The Redirector is the object that manages network "
+ "connections to other computers that originate from your own "
+ "computer.",
+
+ "265", "Bytes Received/sec is the rate of bytes coming in to the "
+ "Redirector from the network. It includes all application "
+ "data as well as network protocol information (such as packet "
+ "headers.)",
+
+ "267", "Packets Received/sec is the rate that the Redirector "
+ "is receiving packets (also called SMBs or Server Message "
+ "Blocks). Network transmissions are divided into packets. "
+ "The average number of bytes received in a packet can be "
+ "obtained by dividing Bytes Received/sec by this counter. "
+ "Some packets received may not contain incoming data, for "
+ "example an acknowledgment to a write made by the Redirector "
+ "would count as an incoming packet.",
+
+ "269", "Read Bytes Paging/sec is the rate that the Redirector is "
+ "attempting to read bytes in response to page faults. Page "
+ "faults are caused by loading of modules (such as programs and "
+ "libraries), by a miss in the Cache (see Read Bytes Cache/sec), "
+ "or by files directly mapped into the address space of "
+ "applications (a high-performance feature of Windows NT.)",
+
+ "271", "Read Bytes Non-Paging/sec are those bytes read by "
+ "the Redirector in response to normal file requests by an "
+ "application when they are redirected to come from another "
+ "computer. In addition to file requests, this counter includes "
+ "other methods of reading across the network such as Named "
+ "Pipes and Transactions. This counter does not count network "
+ "protocol information, just application data.",
+
+ "273", "Read Bytes Cache/sec is the rate that applications on "
+ "your computer are accessing the Cache using the Redirector. "
+ "Some of these data requests may be satisfied by merely "
+ "retrieving "
+ "the data from the system Cache on your own computer if it "
+ "happened to be used recently and there was room to keep it "
+ "in the Cache. Requests that miss the Cache will cause a "
+ "page fault (see Read Bytes Paging/sec).",
+
+ "275", "Read Bytes Network/sec is the rate that applications "
+ "are reading data across the network. For one reason or "
+ "another the data was not in the system Cache, and these bytes "
+ "actually came across the network. Dividing this number by "
+ "Bytes Received/sec will indicate the 'efficiency' of data "
+ "coming in from the network, since all of these bytes are "
+ "real application data (see Bytes Received/sec.)",
+
+ "277", "Bytes Transmitted/sec is the rate that bytes are leaving the "
+ "Redirector to the network. It includes all application "
+ "data as well as network protocol information (such as "
+ "packet headers and the like.)",
+
+ "279", "Packets Transmitted/sec is the rate that the Redirector "
+ "is sending packets (also called SMBs or Server Message "
+ "Blocks). Network transmissions are divided into packets. "
+ "The average number of bytes transmitted in a packet can be "
+ "obtained by dividing Bytes Transmitted/sec by this counter.",
+
+ "281", "Write Bytes Paging/sec is the rate that the Redirector is "
+ "attempting to write bytes changed in the pages being used "
+ "by applications. The program data changed by modules (such as "
+ "programs and libraries) that were loaded over the network "
+ "are 'paged out' when no longer needed. Other output pages "
+ "come from the Cache (see Write Bytes Cache/sec).",
+
+ "283", "Write Bytes Non-Paging/sec is the rate of the bytes "
+ "that are written by "
+ "the Redirector in response to normal file outputs by an "
+ "application when they are redirected to go to another "
+ "computer. In addition to file requests this counter includes "
+ "other methods of writing across the network such as Named "
+ "Pipes and Transactions. This counter does not count network "
+ "protocol information, just application data.",
+
+ "285", "Write Bytes Cache/sec is the rate that applications on "
+ "your computer are writing to the Cache using the Redirector. "
+ "The data may not leave your computer immediately, but may "
+ "be retained in the Cache for further modification before "
+ "being written to the network. This saves network traffic. "
+ "Each write of a byte into the Cache is counted here.",
+
+ "287", "Write Bytes Network/sec is the rate that your applications "
+ "are writing data across the network. Either the system Cache "
+ "was bypassed, as for Named Pipes or Transactions, or else the "
+ "Cache wrote the bytes to make room for other data. Dividing "
+ "this counter by "
+ "Bytes Transmitted/sec will indicate the 'efficiency' of data "
+ "written to the network, since all of these bytes are "
+ "real application data (see Transmitted Bytes/sec.)",
+
+ "289", "File Read Operations/sec is the rate that applications are "
+ "asking the Redirector for data. Each call to a file system "
+ "or similar Application Program Interface (API) call "
+ "counts as one operation.",
+
+ "291", "Read Operations Random/sec counts the rate that, on a "
+ "file-by-file basis, reads are made "
+ "that are not sequential. If a read is made using a particular "
+ "file handle, and then is followed by another read that "
+ "is not immediately the contiguous next byte, this counter "
+ "is incremented by one.",
+
+ "293", "Read Packets/sec is the rate that read packets are "
+ "being placed on the network. Each time a single packet is "
+ "sent with a request to read data remotely, this counter "
+ "is incremented by one.",
+
+ "295", "Reads Large/sec is the rate that reads over 2 "
+ "times the server's negotiated buffer size are made by "
+ "applications. "
+ "Too many of these could place a strain on server resources. "
+ "This counter is incremented once for each read. It does not "
+ "count packets.",
+
+ "297", "Read Packets Small/sec is the rate that reads less than "
+ "one-fourth of the server's negotiated buffer size are made "
+ "by applications. Too many of these could indicate a waste "
+ "of buffers on the server. This counter is incremented once "
+ "for each read. It does not count packets.",
+
+ "299", "File Write Operations/sec is the rate that applications are "
+ "sending data to the Redirector. Each call to a file system "
+ "or similar Application Program Interface (API) call "
+ "counts as one operation.",
+
+ "301", "Write Operations Random/sec is the rate that, on a "
+ "file-by-file basis, writes are made that are not sequential. "
+ "If a write is made using a particular file handle, and then "
+ "is followed by another write that "
+ "is not immediately the next contiguous byte, this counter "
+ "is incremented by one.",
+
+ "303", "Write Packets/sec is the rate that writes are "
+ "being sent to the network. Each time a single packet is "
+ "sent with a request to write remote data, this counter "
+ "is incremented by one.",
+
+ "305", "Writes Large/sec is the rate that writes are made "
+ "by applications "
+ "that are over 2 times the server's negotiated buffer size. "
+ "Too many of these could place a strain on server resources. "
+ "This counter is incremented once for each write: it counts "
+ "writes, not packets.",
+
+ "307", "Write Packets Small/sec is the rate that writes are made "
+ "by applications "
+ "that are less than one-fourth of the server's negotiated "
+ "buffer size. Too many of these could indicate a waste "
+ "of buffers on the server. This counter is incremented once "
+ "for each write: it counts writes, not packets!",
+
+ "309", "Reads Denied/sec is the rate that the server is "
+ "unable to accommodate requests for Raw Reads. When a "
+ "read is much larger than the server's negotiated buffer "
+ "size, the Redirector requests a Raw Read which, if granted, "
+ "would permit the transfer of the data without lots of "
+ "protocol overhead on each packet. To accomplish this the "
+ "server must lock out other requests, so the request is denied "
+ "if the server is really busy.",
+
+ "311", "Writes Denied/sec is the rate that the server is "
+ "unable to accommodate requests for Raw Writes. When a "
+ "write is much larger than the server's negotiated buffer "
+ "size, the Redirector requests a Raw Write which, if granted, "
+ "would permit the transfer of the data without lots of "
+ "protocol overhead on each packet. To accomplish this the "
+ "server must lock out other requests, so the request is denied "
+ "if the server is really busy.",
+
+ "313", "Network Errors/sec counts serious unexpected errors that "
+ "generally indicate the Redirector and one or more Servers "
+ "are having serious communication difficulties. "
+ "For example an SMB (Server Manager Block) protocol error "
+ "will generate a Network Error. These result in an entry "
+ "in the system Event Log, so look there for details.",
+
+ "315", "Server Sessions counts the number of active security objects the "
+ "Redirector is managing. For example, a Logon to a server "
+ "followed by a network access to the same server will establish "
+ "one connection, but two sessions.",
+
+ "317", "Server Reconnects counts the number of times your Redirector has "
+ "had to reconnect to a server in order to complete a new active "
+ "request. You can be disconnected by the Server if you remain "
+ "inactive for too long. Locally even if all your remote files "
+ "are closed, the Redirector will keep your connections intact "
+ "for (nominally) ten minutes. Such inactive connections are "
+ "called Dormant Connections. Reconnecting is expensive in time.",
+
+ "319", "Connects Core counts the number of connections you "
+ "have to "
+ "servers running the original MS-Net SMB protocol, including "
+ "MS-Net itself and Xenix and Vax's.",
+
+ "321", "Connects Lan Manager 2.0 counts connections to Lan Manager "
+ "2.0 servers, "
+ "including LMX servers.",
+
+ "323", "Connects Lan Manager 2.1 counts connections to Lan Manager "
+ "2.1 servers, "
+ "including LMX servers.",
+
+ "325", "Connects Windows NT counts the connections to Windows NT "
+ "computers. Good choice!",
+
+ "327", "Server Disconnects counts the number of times a Server "
+ "has disconnected your Redirector. See also Server Reconnects.",
+
+ "329", "Server Sessions Hung counts the number of active sessions "
+ "that are "
+ "timed out and unable to proceed due to a lack of response "
+ "from the remote server.",
+
+ "331", "Server - is the process that interfaces the services from the "
+ "local computer to the network services.",
+
+ "333", "The number of bytes the server has received from the network. "
+ "Indicates how busy the server is.",
+
+ "335", "The number of bytes the server has sent on the network. "
+ "Indicates how busy the server is.",
+
+ "337", "Thread Wait Reason is only applicable when the "
+ "thread is in the Wait state (see Thread State.) "
+ "It is 0 or 7 when "
+ "the thread is waiting for "
+ "the Executive, 1 or 8 for a Free Page, 2 or 9 for a Page In, "
+ "3 or 10 for a Pool Allocation, 4 or 11 for an "
+ "Execution Delay, 5 or 12 for "
+ "a Suspended condition, 6 or 13 for a User Request, "
+ "14 for an Event "
+ "Pair High, 15 for an Event Pair Low, 16 for an LPC "
+ "Receive, 17 for an LPC Reply, 18 for Virtual Memory, "
+ "19 for a Page Out; 20 and higher are not assigned at the time "
+ "of this writing. Event Pairs are used to communicate "
+ "with protected subsystems (see Context Switches.)",
+
+ "341", "The number of sessions that have been closed due to their idle "
+ "time exceeding the autodisconnect parameter for the server. "
+ "Shows whether the autodisconnect setting is helping to conserve "
+ "resources.",
+
+ "343", "The number of sessions that have been closed due to unexpected "
+ "error conditions. Indicates how frequently network problems are "
+ "causing dropped sessions on the server.",
+
+ "345", "The number of sessions that have terminated normally. Useful in "
+ "interpreting the Sessions Times Out and Sessions Errored Out "
+ "statistics--allows percentage calculations.",
+
+ "347", "The number of sessions that have been forced to logoff. "
+ "Can indicate how many sessions were forced to logoff due to "
+ "logon time constraints.",
+
+ "349", "The number of failed logon attempts to the server. Can indicate "
+ "whether password guessing programs are being used to crack the "
+ "security on the server.",
+
+ "351", "The number of times opens on behalf of clients have failed with "
+ "STATUS_ACCESS_DENIED. Can indicate whether somebody is randomly "
+ "attempting to access files in hopes of getting at something that "
+ "was not properly protected.",
+
+ "353", "The number of times accesses to files opened successfully were "
+ "denied. Can indicate attempts to access files without proper "
+ "access authorization.",
+
+ "355", "The number of times an internal Server Error was detected. "
+ "Unexpected errors usually indicate a problem with the Server.",
+
+ "357", "The number of times the server has rejected blocking SMBs due to "
+ "insufficient count of free work items. Indicates whether the "
+ "maxworkitem or minfreeworkitems server parameters may need "
+ "tuning.",
+
+ "359", "The number of times STATUS_DATA_NOT_ACCEPTED was returned at "
+ "receive indication time. This occurs when no work item is "
+ "available or can be allocated to service the incoming request. "
+ "Indicates whether the initworkitems or maxworkitems parameters "
+ "may need tuning.",
+
+ "361", "The number of successful open attempts performed by the server "
+ "of behalf of clients. Useful in determining the amount of file "
+ "I/O, determining overhead for path-based operations, determining "
+ "the effectiveness of oplocks.",
+
+ "363", "The number of files currently opened in the server. Indicates "
+ "current server activity.",
+
+ "365", "The number of sessions currently active in the server. "
+ "Indicates current server activity.",
+
+ "367", "The number of searches for files currently active in "
+ "the server. "
+ "Indicates current server activity.",
+
+ "369", "The number of bytes of non-pageable computer memory the server "
+ "is currently using. "
+ "Can help in determining good values for the "
+ "maxnonpagedmemoryusage "
+ "parameter.",
+
+ "371", "The number of times allocations from nonpaged pool have failed. "
+ "Indicates that the computer's physical memory is too small.",
+
+ "373", "The maximum number of bytes of nonpaged pool the server has "
+ "had in use "
+ "at any one point. Indicates how much physical memory "
+ "the computer "
+ "should have.",
+
+ "375", "The number of bytes of pageable computer memory the server is "
+ "currently using. "
+ "Can help in determining good values for the maxpagedmemoryusage "
+ "parameter.",
+
+ "377", "The number of times allocations from paged pool have failed. "
+ "Indicates that the computer's physical memory of pagefile are "
+ "too small.",
+
+ "379", "The maximum number of bytes of paged pool the server has "
+ "had allocated. "
+ "Indicates the proper sizes of the Page File(s) and "
+ "physical memory.",
+
+ "389", "Bytes Total/sec is the rate the Redirector is processing "
+ "data bytes. This includes all application and file "
+ "data in addition to protocol information such as packet "
+ "headers.",
+
+ "391", "File Data Operations/sec is the rate the Redirector is processing "
+ "data operations. One operation includes (hopefully) many "
+ "bytes. We say hopefully here because each operation "
+ "has overhead. You can determine the efficiency of this "
+ "path by dividing the Bytes/sec by this counter to determine "
+ "the average number of bytes transferred/operation.",
+
+ "393", "Current Commands counts the number of requests to the "
+ "Redirector that are currently queued for service. If "
+ "this number is much larger than the number of network "
+ "adapter cards installed in the computer, then the network(s) "
+ "and/or the server(s) being accessed are seriously "
+ "bottlenecked.",
+
+ "395", "The number of bytes the server has sent to and received from the "
+ "network. This value provides an overall indication of how busy "
+ "the server is.",
+
+ "399", "The NWLink NetBIOS protocol layer handles the interface to "
+ "applicatons communicating over the IPX transport. ",
+
+ "401", "Packets/sec is the rate the Redirector is processing "
+ "data packets. "
+ "One packet includes (hopefully) many "
+ "bytes. We say hopefully here because each packet has "
+ "protocol overhead. You can determine the efficiency of this "
+ "path by dividing the Bytes/sec by this counter to determine "
+ "the average number of bytes transferred/packet. You can "
+ "also divide this counter by Operations/sec to determine "
+ "the average number of packets per operation, another "
+ "measure of efficiency.",
+
+ "403", "Context Block Queue Time is the average time, in milliseconds, "
+ "a work context block sat on the server's FSP queue waiting for "
+ "the server to act on the request.",
+
+ "405", "Context Blocks Queued per second is the rate that work "
+ "context blocks had to be placed on the server's FSP "
+ "queue to await server action.",
+
+ "407", "File Data Operations per second is the rate that the computer "
+ "is issuing Read and Write operations to file system "
+ "devices. It does not include File Control Operations.",
+
+ "409", "Percent Free Space is the ratio of the free space available "
+ "on the logical disk unit to the total usable space provided "
+ "by the selected logical disk drive",
+
+ "411", "Free Megabytes displays the unallocated space on the disk "
+ "drive in megabytes. One megabyte = 1,048,576 bytes.",
+
+ "413", "Connections Open is the number of connections "
+ "currently open for this protocol. "
+ "This counter shows the current count "
+ "only and does not accumulate over time.",
+
+ "415", "Connections No Retries is the total count of connections "
+ "that were successfully made on the first try. This number is "
+ "an accumulator and shows a running total.",
+
+ "417", "Connections With Retries is the total count of connections "
+ "that were made after retrying the attempt. A retry occurs "
+ "when the first connection attempt failed. This number is an "
+ "accumulator and shows a running total.",
+
+ "419", "Disconnects Local is the number of session disconnections "
+ "that were initiated by the local computer. This number is an "
+ "accumulator and shows a running total.",
+
+ "421", "Disconnects Remote is the number of session disconnections "
+ "that were initiated by the remote computer. This number is an "
+ "accumulator and shows a running total.",
+
+ "423", "Failures Link is the number of connections that were dropped "
+ "due to a link failure. This number is an accumulator and "
+ "shows a running total.",
+
+ "425", "Failures Adapter is the number of connections that were "
+ "dropped due to an adapter failure. This number is an "
+ "accumulator and shows a running total.",
+
+ "427", "Connection Session Timeouts is the number of connections "
+ "that were "
+ "dropped due to a session timeout. This number is an "
+ "accumulator and shows a running total.",
+
+ "429", "Connections Canceled is the number of connections that were "
+ "canceled. This number is an accumulator and shows a running "
+ "total.",
+
+ "431", "Failures Resource Remote is the number of connections that "
+ "failed because of resource problems or shortages on the "
+ "remote computer. This number is an accumulator and shows a "
+ "running total.",
+
+ "433", "Failures Resource Local is the number of connections that "
+ "failed because of resource problems or shortages on the "
+ "local computer. This number is an accumulator and shows a "
+ "running total.",
+
+ "435", "Failures Not Found is the number of connection attempts "
+ "that failed because the remote computer could not be "
+ "found. This number is an accumulator and shows a running "
+ "total.",
+
+ "437", "Failures No Listen is the number of connections that were "
+ "rejected because the remote computer was not listening for "
+ "connection requests.",
+
+ "439", "Datagrams/sec is the rate that datagrams are "
+ "processed by the computer. This counter displays the sum of "
+ "datagrams sent and datagrams received. "
+ "A datagram is a connectionless packet whose delivery "
+ "to a remote is not guaranteed.",
+
+ "441", "Datagram Bytes/sec is the rate that datagram bytes are "
+ "processed by the computer. This counter is the sum of datagram "
+ "bytes that are sent as well as received. "
+ "A datagram is a connectionless packet whose delivery "
+ "to a remote is not guaranteed.",
+
+ "443", "Datagrams Sent/sec is the rate that datagrams are sent from "
+ "the computer. "
+ "A datagram is a connectionless packet whose delivery "
+ "to a remote computer is not guaranteed.",
+
+ "445", "Datagram Bytes Sent/sec is the rate that datagram bytes "
+ "are sent from the computer. "
+ "A datagram is a connectionless packet whose delivery "
+ "to a remote computer is not guaranteed.",
+
+ "447", "Datagrams Received/sec is the rate that datagrams are "
+ "received by the computer. "
+ "A datagram is a connectionless packet whose delivery "
+ "to a remote computer is not guaranteed.",
+
+ "449", "Datagram Bytes Received/sec is the rate that datagram bytes "
+ "are received by the computer. "
+ "A datagram is a connectionless packet whose delivery "
+ "to a remote computer is not guaranteed.",
+
+ "451", "Packets/sec is the rate that packets are processed by the "
+ "computer. This count is the sum of Packets Sent and Packets "
+ "Received per second. This counter includes all packets "
+ "processed: control as well as data packets.",
+
+ "453", "Packets Sent/sec is the rate that packets are sent by "
+ "the computer. This counter counts all packets sent by the "
+ "computer, i.e. control as well as data packets.",
+
+ "455", "Packets Received/sec is the rate that packets are received "
+ "by the computer. This counter counts all packets processed: "
+ "control as well as data packets.",
+
+ "457", "Frames/sec is the rate that data frames (or packets) are "
+ "processed by the computer. This counter is the sum of data "
+ "frames sent and data frames received. This counter only "
+ "counts those frames (packets) that carry data.",
+
+ "459", "Frame Bytes/sec is the rate that data bytes are processed "
+ "by the computer. This counter is the sum of data frame bytes "
+ "sent and received. This counter only counts the byte in "
+ "frames (packets) that carry data.",
+
+ "461", "Frames Sent/sec is the rate that data frames are sent by "
+ "the computer. This counter only counts the frames (packets) "
+ "that carry data.",
+
+ "463", "Frame Bytes Sent/sec is the rate that data bytes are sent "
+ "by the computer. This counter only counts the bytes in frames "
+ "(packets) that carry data.",
+
+ "465", "Frames Received/sec is the rate that data frames are received "
+ "by the computer. This counter only counts the frames (packets) "
+ "that carry data.",
+
+ "467", "Frame Bytes Received/sec is the rate that data bytes are "
+ "received by the computer. This counter only counts the frames "
+ "(packets) that carry data.",
+
+ "469", "Frames Re-Sent/sec is the rate that data frames (packets) are "
+ "re-sent by the computer. This counter only counts the frames or "
+ "packets that carry data.",
+
+ "471", "Frame Bytes Re-Sent/sec is the rate that data bytes are "
+ "re-sent by the computer. This counter only counts the bytes in "
+ "frames that carry data.",
+
+ "473", "Frames Rejected/sec is the rate that data frames are "
+ "rejected. This counter only counts the frames (packets) that "
+ "carry data.",
+
+ "475", "Frame Bytes Rejected/sec is the rate that data bytes are "
+ "rejected. This counter only counts the bytes in data frames "
+ "(packets) that carry data.",
+
+ "477", "Expirations Response is the count of T1 timer expirations.",
+
+ "479", "Expirations Ack is the count of T2 timer expirations",
+
+ "481", "Window Send Maximum is the maximum number of bytes of data "
+ "that will be sent before waiting for an acknowledgment from "
+ "the remote computer.",
+
+ "483", "Window Send Average is the running average number of data "
+ "bytes that were sent before waiting for an acknowledgment "
+ "from the remote computer.",
+
+ "485", "Piggyback Ack Queued/sec is the rate that piggybacked "
+ "acknowledgments are queued. Piggyback acknowledgments are "
+ "acknowledgments to received packets that are to be included "
+ "in the next outgoing packet to the remote computer.",
+
+ "487", "Piggyback Ack Timeouts is the number of times that a piggyback "
+ "acknowledgment could not be sent because there was no "
+ "outgoing packet to the remote on which to piggyback. A "
+ "piggyback ack is an acknowledgment to a received packet that "
+ "is sent along in an outgoing data packet to the remote "
+ "computer. If no outgoing packet is sent within the timeout "
+ "period, then an ack packet is sent and this counter is "
+ "incremented.",
+
+ "489", "The NWLink IPX transport handles datagram transmission to "
+ "and from computers using the IPX protocol.",
+
+ "491", "The NWLink SPX transport handles data transmission and "
+ "session connections for computers using the SPX protocol.",
+
+ "493", "The NetBEUI protocol handles data transmission for "
+ "that network activity which follows the NetBIOS End "
+ "User Interface standard.",
+
+ "495", "The NetBEUI Resource object tracks the use of resources "
+ "(i.e., buffers) by the NetBEUI protocol.",
+
+ "497", "Used Maximum is the maximum number of NetBEUI "
+ "resources (buffers) "
+ "in use at any point in time. This value is useful in "
+ "sizing the maximum resources provided. "
+ "The number in parentheses following the resource name is used "
+ "to identify the resource in Event Log messages.",
+
+ "499", "Used Average is the current number of resources (buffers) in "
+ "use at this time. "
+ "The number in parentheses following the resource name is used "
+ "to identify the resource in Event Log messages.",
+
+ "501", "Times Exhausted is the number of times all "
+ "the resources (buffers) "
+ "were in use. "
+ "The number in parentheses following the resource name is used "
+ "to identify the resource in Event Log messages.",
+
+ "503", "The NBT Connection Object Type includes those "
+ "counters that describe the rates that bytes are "
+ "received and sent over a single NBT connection "
+ "connecting the local computer with some remote computer. "
+ "The connection is identified by the name of the remote "
+ "computer.",
+
+ "505", "Bytes Received/sec is the rate that bytes are "
+ "received by the local computer over an NBT connection "
+ "to some remote computer. All the bytes received by the "
+ "local computer over the particular NBT connection are "
+ "counted.",
+
+ "507", "Bytes Sent/sec is the rate that bytes are "
+ "sent by the local computer over an NBT connection "
+ "to some remote computer. All the bytes sent by the "
+ "local computer over the particular NBT connection are "
+ "counted.",
+
+ "509", "Bytes Total/sec is the rate that bytes are sent or "
+ "received by the local computer over an NBT connection "
+ "to some remote computer. All the bytes sent or received "
+ "by the local computer over the particular NBT connection "
+ "are counted.",
+
+ "511", "The Network Interface Object Type includes those counters "
+ "that describe the rates that bytes and packets are "
+ "received and sent over a Network TCP/IP connection. It also "
+ "describes various error counts for the same connection.",
+
+ "513", "Bytes Total/sec is the rate that bytes are sent and received "
+ "on the interface, including framing characters.",
+
+ "515", "Packets/sec is the rate that packets are sent and received "
+ "on the network interface.",
+
+ "517", "Packets Received/sec is the rate that packets are received "
+ "on the network interface.",
+
+ "519", "Packets Sent/sec is the rate that packets are sent "
+ "on the network interface.",
+
+ "521", "Current Bandwidth is an estimate of the interface's "
+ "current bandwidth in bits per second (bps). For interfaces "
+ "that do not vary in bandwidth or for those where no "
+ "accurate estimation can be made, this value is the nominal "
+ "bandwidth.",
+
+ "523", "Bytes Received/sec is the rate that bytes are received "
+ "on the interface, including framing characters.",
+
+ "525", "Packets Received Unicast/sec is the rate that (subnet) "
+ "unicast packets are delivered to a higher-layer protocol.",
+
+ "527", "Packets Received Non-Unicast/sec is the rate that "
+ "non-unicast (i.e., subnet broadcast or subnet multicast) "
+ "packets are delivered to a higher-layer protocol.",
+
+ "529", "Packets Received Discarded is the number of inbound packets "
+ "that were chosen to be discarded even though no errors had "
+ "been detected to prevent their being deliverable to a "
+ "higher-layer protocol. One possible reason for discarding "
+ "such a packet could be to free up buffer space.",
+
+ "531", "Packets Received Errors is the number of inbound packets "
+ "that contained errors preventing them from being deliverable "
+ "to a higher-layer protocol.",
+
+ "533", "Packets Received Unknown is the number of packets "
+ "received via the interface that were discarded because of "
+ "an unknown or unsupported protocol.",
+
+ "535", "Bytes Sent/sec is the rate that bytes are sent "
+ "on the interface, including framing characters.",
+
+ "537", "Packets Sent Unicast/sec is the rate that packets are "
+ "requested to be transmitted to subnet-unicast addresses "
+ "by higher-level protocols. The rate includes the packets "
+ "that were discarded or not sent.",
+
+ "539", "Packets Sent Non-Unicast/sec is the rate that packets are "
+ "requested to be transmitted to non-unicast (i.e., subnet "
+ "broadcast or subnet multicast) addresses "
+ "by higher-level protocols. The rate includes the packets "
+ "that were discarded or not sent.",
+
+ "541", "Packets Outbound Discarded is the number of outbound packets "
+ "that were chosen to be discarded even though no errors had "
+ "been detected to prevent their being transmitted. "
+ "One possible reason for discarding "
+ "such a packet could be to free up buffer space.",
+
+ "543", "Packets Outbound Errors is the number of outbound packets "
+ "that could not be transmitted because of errors.",
+
+ "545", "Output Queue Length is the length of the output packet queue "
+ "(in packets.) If this is longer than 2, delays are being "
+ "experienced and the bottleneck should be found and "
+ "eliminated if possible. Since the requests are queued by "
+ "NDIS in this implementations, this will always be 0.",
+
+ "547", "The IP Object Type includes those counters "
+ "that describe the rates that IP datagrams are "
+ "received and sent by a certain computer using the IP protocol. "
+ "It also describes various error counts for the IP protocol.",
+
+ "549", "Datagrams/sec is the rate that IP datagrams are received "
+ "from or sent to the interfaces, including those in error. "
+ "Any forwarded datagrams are not included in this rate.",
+
+ "551", "Datagrams Received/sec is the rate that IP datagrams are "
+ "received from the interfaces, including those in error.",
+
+ "553", "Datagrams Received Header Errors is the number of input "
+ "datagrams discarded due to errors in their IP headers, "
+ "including bad checksums, version number mismatch, other format "
+ "errors, time-to-live exceeded, errors discovered in processing "
+ "their IP options, etc.",
+
+ "555", "Datagrams Received Address Errors is the number of input "
+ "datagrams discarded because the IP address in their IP header's "
+ "destination field was not a valid address to be received at "
+ "this entity. This count includes invalid addresses (e.g., 0.0. "
+ "0.0) and addresses of unsupported Classes (e.g., Class E). "
+ "For entities that are not IP Gateways and therefore do not "
+ "forward datagrams, this counter includes datagrams discarded "
+ "because the destination address was not a local address.",
+
+ "557", "Datagrams Forwarded/sec is the rate of input datagrams for "
+ "that this entity was not their final IP destination, as a "
+ "result of which an attempt was made to find a route to "
+ "forward them to that final destination. In entities that do "
+ "not act as IP Gateways, this rate will include only those "
+ "packets that were Source-Routed via this entity, and the "
+ "Source-Route option processing was successful.",
+
+ "559", "Datagrams Received Unknown Protocol is the number of "
+ "locally-addressed datagrams received successfully but discarded "
+ "because of an unknown or unsupported protocol.",
+
+ "561", "Datagrams Received Discarded is the number of input IP "
+ "datagrams for which no problems were encountered to prevent "
+ "their continued processing, but which were discarded "
+ "(e.g., for lack of buffer space). This counter does "
+ "not include any datagrams discarded while awaiting re-assembly.",
+
+ "563", "Datagrams Received Delivered/sec is the rate that input "
+ "datagrams are successfully delivered to IP user-protocols "
+ "(including ICMP).",
+
+ "565", "Datagrams Sent/sec is the rate that IP datagrams are "
+ "supplied to IP for transmission by local IP user-protocols "
+ "(including ICMP). That this counter does not include "
+ "any datagrams counted in Datagrams Forwarded.",
+
+ "567", "Datagrams Outbound Discarded is the number of output IP "
+ "datagrams for which no problems were encountered to prevent "
+ "their transmission to their destination, but which were "
+ "discarded (e.g., for lack of buffer space.) This "
+ "counter would include datagrams counted in Datagrams Forwarded "
+ "if any such packets met this (discretionary) "
+ "discard criterion.",
+
+ "569", "Datagrams Outbound No Route is the number of IP datagrams "
+ "discarded because no route could be found to transmit them "
+ "to their destination. This counter includes any "
+ "packets counted in Datagrams Forwarded that meet this "
+ "`no route' criterion.",
+
+ "571", "Fragments Received/sec is the rate that IP fragments that "
+ "need to be re-assembled at this entity are received.",
+
+ "573", "Fragments Re-assembled/sec is the rate that IP fragments "
+ "are successfully re-assembled.",
+
+ "575", "Fragment Re-assembly Failures is the number of failures "
+ "detected by the IP re-assembly algorithm (for whatever reason: "
+ "timed out, errors, etc.) This is not necessarily a "
+ "count of discarded IP fragments since some algorithms "
+ "(notably RFC 815) can lose track of the number of fragments "
+ "by combining them as they are received.",
+
+ "577", "Fragmented Datagrams/sec is the rate that datagrams are "
+ "successfully fragmented at this entity.",
+
+ "579", "Fragmentation Failures is the number of IP datagrams that have "
+ "been discarded because they needed to be fragmented at this "
+ "entity but could not be, e.g., because their `Don't Fragment' "
+ "flag was set.",
+
+ "581", "Fragments Created/sec is the rate that IP datagram fragments "
+ "have been generated as a result of fragmentation at this entity.",
+
+ "583", "The ICMP Object Type includes those counters "
+ "that describe the rates that ICMP Messages are "
+ "received and sent by a certain entity using the ICMP protocol. "
+ "It also describes various error counts for the ICMP protocol.",
+
+ "585", "Messages/sec is the total rate that ICMP messages are "
+ "received and sent by the entity. The rate includes those "
+ "messages received or sent in error.",
+
+ "587", "Messages Received/sec is the rate that ICMP messages are "
+ "received by the entity. The rate includes those "
+ "messages received in error.",
+
+ "589", "Messages Received Errors is the number of ICMP messages "
+ "that the entity received but determined as having errors "
+ "(bad ICMP checksums, bad length, etc.).",
+
+ "591", "Received Destination Unreachable is the number of ICMP "
+ "Destination Unreachable messages received.",
+
+ "593", "Received Time Exceeded is the number of ICMP Time Exceeded "
+ "messages received.",
+
+ "595", "Received Parameter Problem is the number of ICMP Parameter "
+ "Problem messages received.",
+
+ "597", "Received Source Quench is the number of ICMP Source Quench "
+ "messages received.",
+
+ "599", "Received Redirect/sec is the rate of ICMP Redirect messages "
+ "received.",
+
+ "601", "Received Echo/sec is the rate of ICMP Echo messages received.",
+
+ "603", "Received Echo Reply/sec is the rate of ICMP Echo Reply "
+ "messages received.",
+
+ "605", "Received Timestamp/sec is the rate of ICMP Timestamp "
+ "(request) messages received.",
+
+ "607", "Received Timestamp Reply/sec is the rate of ICMP Timestamp "
+ "Reply messages received.",
+
+ "609", "Received Address Mask is the number of ICMP Address Mask "
+ "Request messages received.",
+
+ "611", "Received Address Mask Reply is the number of ICMP Address "
+ "Mask Reply messages received.",
+
+ "613", "Messages Sent/sec is the rate that ICMP messages are "
+ "attempted to be sent by the entity. The rate includes those "
+ "messages sent in error.",
+
+ "615", "Messages Outbound Errors is the number of ICMP messages "
+ "that this entity did not send due to problems discovered "
+ "within ICMP such as lack of buffers. This value should not "
+ "include errors discovered outside the ICMP layer such as the "
+ "inability of IP to route the resultant datagram. In some "
+ "implementations there may be no types of error that contribute "
+ "to this counter's value.",
+
+ "617", "Sent Destination Unreachable is the number of ICMP "
+ "Destination Unreachable messages sent.",
+
+ "619", "Sent Time Exceeded is the number of ICMP Time Exceeded "
+ "messages sent.",
+
+ "621", "Sent Parameter Problem is the number of ICMP Parameter "
+ "Problem messages sent.",
+
+ "623", "Sent Source Quench is the number of ICMP Source Quench "
+ "messages sent.",
+
+ "625", "Sent Redirect/sec is the rate of ICMP Redirect messages "
+ "sent.",
+
+ "627", "Sent Echo/sec is the rate of ICMP Echo messages sent.",
+
+ "629", "Sent Echo Reply/sec is the rate of ICMP Echo Reply "
+ "messages sent.",
+
+ "631", "Sent Timestamp/sec is the rate of ICMP Timestamp "
+ "(request) messages sent.",
+
+ "633", "Sent Timestamp Reply/sec is the rate of ICMP Timestamp "
+ "Reply messages sent.",
+
+ "635", "Sent Address Mask is the number of ICMP Address Mask "
+ "Request messages sent.",
+
+ "637", "Sent Address Mask Reply is the number of ICMP Address "
+ "Mask Reply messages sent.",
+
+ "639", "The TCP Object Type includes those counters "
+ "that describe the rates that TCP Segments are "
+ "received and sent by a certain entity using the TCP protocol. "
+ "In addition, it describes the number of TCP connections that are "
+ "in each of the possible TCP connection states.",
+
+ "641", "Segments/sec is the rate that TCP segments are sent or "
+ "received using the TCP protocol.",
+
+ "643", "Connections Established is the number of TCP "
+ "connections for which the current state is either "
+ "ESTABLISHED or CLOSE-WAIT.",
+
+ "645", "Connections Active is the number of times TCP connections have "
+ "made a direct transition to the SYN-SENT state from the "
+ "CLOSED state.",
+
+ "647", "Connections Passive is the number of times TCP connections "
+ "have made a direct transition to the SYN-RCVD state from the "
+ "LISTEN state.",
+
+ "649", "Connection Failures is the number of times TCP connections "
+ "have made a direct transition to the CLOSED state from the "
+ "SYN-SENT state or the SYN-RCVD state, plus the number of "
+ "times TCP connections have made a direct transition to the "
+ "LISTEN state from the SYN-RCVD state.",
+
+ "651", "Connections Reset is the number of times TCP connections "
+ "have made a direct transition to the CLOSED state from either "
+ "the ESTABLISHED state or the CLOSE-WAIT state.",
+
+ "653", "Segments Received/sec is the rate that segments are "
+ "received, including those received in error. This count includes "
+ "segments received on currently established connections.",
+
+ "655", "Segments Sent/sec is the rate that segments are sent, "
+ "including those on current connections, but excluding those "
+ "containing only retransmitted bytes.",
+
+ "657", "Segments Retransmitted/sec is the rate that segments are "
+ "retransmitted, that is, segments transmitted containing one "
+ "or more previously transmitted bytes.",
+
+ "659", "The UDP Object Type includes those counters "
+ "that describe the rates that UDP datagrams are "
+ "received and sent by a certain entity using the UDP protocol. "
+ "It also describes various error counts for the UDP protocol.",
+
+ "661", "Datagrams/sec is the rate that UDP datagrams are sent or "
+ "received by the entity.",
+
+ "663", "Datagrams Received/sec is the rate that UDP datagrams "
+ "are delivered to UDP users.",
+
+ "665", "Datagrams No Port/sec is the rate of received UDP datagrams "
+ "for which there was no application at the destination port.",
+
+ "667", "Datagrams Received Errors is the number of received UDP "
+ "datagrams that could not be delivered for reasons other than "
+ "the lack of an application at the destination port.",
+
+ "669", "Datagrams Sent/sec is the rate that UDP datagrams are sent "
+ "from the entity.",
+
+ "671", "Disk Storage device statistics from the foreign computer",
+
+ "673", "The number of allocation failures reported by the disk storage "
+ "device",
+
+ "675", "Total Time (in seconds) that the computer has been operational "
+ "since it was last started.",
+
+ "677", "The current number of system handles in use.",
+
+ "679", "The number of Page Table Entries not currently in use by the "
+ "system.",
+
+ "681", "The number of threads currently active in this process. "
+ "An instruction is the basic unit of execution in a processor, "
+ "and a thread is the object that executes instructions. "
+ "Every running process has at least one "
+ "thread.",
+
+ "683", "The current base priority of this process. Threads "
+ "within a process can raise and lower their own base priority "
+ "relative to the process's base priority.",
+
+ "685", "The total elapsed time (in seconds) this process has been "
+ "running.",
+
+ "695", "The current dynamic priority of this thread. "
+ "The system may "
+ "raise the thread's dynamic priority above the base priority "
+ "if the thread is handling user input, or lower it towards "
+ "the base priority if the "
+ "thread becomes compute bound.",
+
+ "697", "The current base priority of this thread. The system may "
+ "raise the thread's dynamic priority above the base priority "
+ "if the thread is handling user input, or lower it towards "
+ "the base priority if the "
+ "thread becomes compute bound.",
+
+ "699", "The total elapsed time (in seconds) this thread has been "
+ "running.",
+
+ "701", "Displays information about the system's Page File(s).",
+
+ "703", "The amount of the Page File instance in use in percent. "
+ "See also Process:Page File Bytes.",
+
+ "705", "The peak usage of the Page File instance in percent. "
+ "See also Process:Page File Bytes Peak.",
+
+ "707", "Starting virtual address for this thread.",
+
+ "709", "Current User Program Counter for this thread.",
+
+ "711", "Mapped Space is virtual memory that has been mapped "
+ "to a specific virtual address (or range of virtual "
+ "addresses) in the process's virtual address space. "
+ "No Access protection prevents a process from writing to "
+ "or reading from these pages and will generate an access "
+ "violation if either is attempted.",
+
+ "713", "Mapped Space is virtual memory that has been mapped "
+ "to a specific virtual address (or range of virtual "
+ "addresses) in the process's virtual address space. "
+ "Read Only protection prevents the contents of these pages "
+ "from being modified. Any attempts to write or modify these "
+ "pages will generate an access violation.",
+
+ "715", "Mapped Space is virtual memory that has been mapped "
+ "to a specific virtual address (or range of virtual "
+ "addresses) in the process's virtual address space. "
+ "Read/Write protection allows a process to read, modify "
+ "and write to these pages.",
+
+ "717", "Mapped Space is virtual memory that has been mapped "
+ "to a specific virtual address (or range of virtual "
+ "addresses) in the process's virtual address space. "
+ "Write Copy protection is used when memory is shared for "
+ "reading but not for writing. When processes are reading this "
+ "memory, they can share the same memory, however, when "
+ "a sharing process wants to have write access to this "
+ "shared memory, a copy of that memory is made.",
+
+ "719", "Mapped Space is virtual memory that has been mapped "
+ "to a specific virtual address (or range of virtual "
+ "addresses) in the process's virtual address space. "
+ "Executable memory is memory that can be executed by "
+ "programs, but may not be read or written. "
+ "This type of protection is not supported by all "
+ "processor types.",
+
+ "721", "Mapped Space is virtual memory that has been mapped "
+ "to a specific virtual address (or range of virtual "
+ "addresses) in the process's virtual address space. "
+ "Execute/Read Only memory is memory that can be executed "
+ "as well as read.",
+
+ "723", "Mapped Space is virtual memory that has been mapped "
+ "to a specific virtual address (or range of virtual "
+ "addresses) in the process's virtual address space. "
+ "Execute/Read/Write memory is memory that can be executed by "
+ "programs as well as read "
+ "and modified.",
+
+ "725", "Mapped Space is virtual memory that has been mapped "
+ "to a specific virtual address (or range of virtual "
+ "addresses) in the process's virtual address space. "
+ "Execute Write Copy is memory that can be executed by "
+ "programs as well as read and written. "
+ "This type of protection is used when memory needs to be "
+ "shared between processes. If the sharing processes only "
+ "read the memory, then they will all use the same memory. "
+ "If a sharing process desires write access, then a copy of "
+ "this memory will be made for that process.",
+
+ "727", "Reserved Space is virtual memory that has been reserved for "
+ "future use by a process, but has not been mapped or committed. "
+ "No Access protection prevents a process from writing to "
+ "or reading from these pages and will generate an access "
+ "violation if either is attempted.",
+
+ "729", "Reserved Space is virtual memory that has been reserved for "
+ "future use by a process, but has not been mapped or committed. "
+ "Read Only protection prevents the contents of these pages "
+ "from being modified. Any attempts to write or modify these "
+ "pages will generate an access violation.",
+
+ "731", "Reserved Space is virtual memory that has been reserved for "
+ "future use by a process, but has not been mapped or committed. "
+ "Read/Write protection allows a process to read, modify "
+ "and write to these pages.",
+
+ "733", "Reserved Space is virtual memory that has been reserved for "
+ "future use by a process, but has not been mapped or committed. "
+ "Write Copy protection is used when memory is shared for "
+ "reading but not for writing. When processes are reading this "
+ "memory, they can share the same memory, however, when "
+ "a sharing process wants to have read/write access to this "
+ "shared memory, a copy of that memory is made.",
+
+ "735", "Reserved Space is virtual memory that has been reserved for "
+ "future use by a process, but has not been mapped or committed. "
+ "Executable memory is memory that can be executed by programs, "
+ "but may not be read or written. "
+ "This type of protection is not supported by all "
+ "processor types.",
+
+ "737", "Reserved Space is virtual memory that has been reserved for "
+ "future use by a process, but has not been mapped or committed. "
+ "Execute/Read Only memory is memory that can be executed "
+ "as well as read.",
+
+ "739", "Reserved Space is virtual memory that has been reserved for "
+ "future use by a process, but has not been mapped or committed. "
+ "Execute/Read/Write memory is memory that can be executed by "
+ "programs as well as read "
+ "and modified.",
+
+ "741", "The Image object type displays information about the virtual "
+ "address usage of the images being executed by a process on the "
+ "computer.",
+
+ "743", "Reserved Space is virtual memory that has been reserved for "
+ "future use by a process, but has not been mapped or committed. "
+ "Execute Write Copy is memory that can be executed by "
+ "programs as well as read and written. "
+ "This type of protection is used when memory needs to be "
+ "shared between processes. If the sharing processes only "
+ "read the memory, then they will all use the same memory. "
+ "If a sharing process desires write access, then a copy of "
+ "this memory will be made for that process.",
+
+ "745", "Unassigned Space is mapped and committed virtual memory in "
+ "use by the process that is not attributable to any particular "
+ "image being executed by that process. "
+ "No Access protection prevents a process from writing to "
+ "or reading from these pages and will generate an access "
+ "violation if either is attempted.",
+
+ "747", "Unassigned Space is mapped and committed virtual memory in "
+ "use by the process that is not attributable to any particular "
+ "image being executed by that process. "
+ "Read Only protection prevents the contents of these pages "
+ "from being modified. Any attempts to write or modify these "
+ "pages will generate an access violation.",
+
+ "749", "Unassigned Space is mapped and committed virtual memory in "
+ "use by the process that is not attributable to any particular "
+ "image being executed by that process. "
+ "Read/Write protection allows a process to read, modify "
+ "and write to these pages.",
+
+ "751", "Unassigned Space is mapped and committed virtual memory in "
+ "use by the process that is not attributable to any particular "
+ "image being executed by that process. "
+ "Write Copy protection is used when memory is shared for "
+ "reading but not for writing. When processes are reading this "
+ "memory, they can share the same memory, however, when "
+ "a sharing process wants to have read/write access to this "
+ "shared memory, a copy of that memory is made for writing to.",
+
+ "753", "Unassigned Space is mapped and committed virtual memory in "
+ "use by the process that is not attributable to any particular "
+ "image being executed by that process. "
+ "Executable memory is memory that can be executed by "
+ "programs, but may not be read or written. "
+ "This type of protection is not supported by all "
+ "processor types.",
+
+ "755", "Unassigned Space is mapped and committed virtual memory in "
+ "use by the process that is not attributable to any particular "
+ "image being executed by that process. "
+ "Execute/Read Only memory is memory that can be "
+ "executed as well as read.",
+
+ "757", "Unassigned Space is mapped and committed virtual memory in "
+ "use by the process that is not attributable to any particular "
+ "image being executed by that process. "
+ "Execute/Read/Write memory is memory that can be "
+ "executed by programs as well as read and written.",
+
+ "759", "Unassigned Space is mapped and committed virtual memory in "
+ "use by the process that is not attributable to any particular "
+ "image being executed by that process. "
+ "Execute Write Copy is memory that can be executed by "
+ "programs as well as read and written. "
+ "This type of protection is used when memory needs to be "
+ "shared between processes. If the sharing processes only "
+ "read the memory, then they will all use the same memory. "
+ "If a sharing process desires write access, then a copy of "
+ "this memory will be made for that process.",
+
+ "761", "Image Space is the virtual address space in use by the "
+ "images being executed by the process. This is the sum of all "
+ "the address space with this protection allocated by images run "
+ "by the selected process "
+ "No Access protection prevents a process from writing to "
+ "or reading from these pages and will generate an access "
+ "violation if either is attempted.",
+
+ "763", "Image Space is the virtual address space in use by the "
+ "images being executed by the process. This is the sum of all "
+ "the address space with this protection allocated by images run "
+ "by the selected process "
+ "Read Only protection prevents the contents of these pages "
+ "from being modified. Any attempts to write or modify these "
+ "pages will generate an access violation.",
+
+ "765", "Image Space is the virtual address space in use by the "
+ "images being executed by the process. This is the sum of all "
+ "the address space with this protection allocated by images run "
+ "by the selected process "
+ "Read/Write protection allows a process to read, modify "
+ "and write to these pages.",
+
+ "767", "Image Space is the virtual address space in use by the "
+ "images being executed by the process. This is the sum of all "
+ "the address space with this protection allocated by images run "
+ "by the selected process "
+ "Write Copy protection is used when memory is shared for "
+ "reading but not for writing. When processes are reading this "
+ "memory, they can share the same memory, however, when "
+ "a sharing process wants to have read/write access to this "
+ "shared memory, a copy of that memory is made for writing to.",
+
+ "769", "Image Space is the virtual address space in use by the "
+ "images being executed by the process. This is the sum of all "
+ "the address space with this protection allocated by images run "
+ "by the selected process "
+ "Executable memory is memory that can be executed by "
+ "programs, but may not be read or written. "
+ "This type of protection is not supported by all "
+ "processor types.",
+
+ "771", "Image Space is the virtual address space in use by the "
+ "images being executed by the process. This is the sum of all "
+ "the address space with this protection allocated by images run "
+ "by the selected process "
+ "Execute/Read Only memory is memory that can be "
+ "executed as well as read.",
+
+ "773", "Image Space is the virtual address space in use by the "
+ "images being executed by the process. This is the sum of all "
+ "the address space with this protection allocated by images run "
+ "by the selected process "
+ "Execute/Read/Write memory is memory that can be "
+ "executed by programs as well as read and written "
+ "and modified.",
+
+ "775", "Image Space is the virtual address space in use by the "
+ "images being executed by the process. This is the sum of all "
+ "the address space with this protection allocated by images run "
+ "by the selected process "
+ "Execute Write Copy is memory that can be executed by "
+ "programs as well as read and written. "
+ "This type of protection is used when memory needs to be "
+ "shared between processes. If the sharing processes only "
+ "read the memory, then they will all use the same memory. "
+ "If a sharing process desires write access, then a copy of "
+ "this memory will be made for that process.",
+
+ "777", "Bytes Image Reserved is the sum of all virtual memory reserved "
+ "by images run within this process.",
+
+ "779", "Bytes Image Free is the amount of virtual address space that "
+ "is not in use or reserved by images within this process.",
+
+ "781", "Bytes Reserved is the total amount of virtual memory "
+ "reserved for future use by this process.",
+
+ "783", "Bytes Free is the total unused virtual address space of this "
+ "process.",
+
+ "785", "ID Process is the unique identifier of this process. "
+ "ID Process numbers are reused, so they only identify "
+ "a process for the lifetime of that process.",
+
+ "787", "Process Address Space object type displays details about"
+ " the virtual memory usage and allocation of the selected "
+ "process.",
+
+ "789", "Image Space is the virtual address space in use by the "
+ "selected image with this protection. "
+ "No Access protection prevents a process from writing "
+ "or reading these pages and will generate an access "
+ "violation if either is attempted.",
+
+ "791", "Image Space is the virtual address space in use by the "
+ "selected image with this protection. "
+ "Read Only protection prevents the contents of these pages "
+ "from being modified. Any attempts to write or modify these "
+ "pages will generate an access violation.",
+
+ "793", "Image Space is the virtual address space in use by the "
+ "selected image with this protection. "
+ "Read/Write protection allows a process to read, modify "
+ "and write to these pages.",
+
+ "795", "Image Space is the virtual address space in use by the "
+ "selected image with this protection. "
+ "Write Copy protection is used when memory is shared for "
+ "reading but not for writing. When processes are reading this "
+ "memory, they can share the same memory, however, when "
+ "a sharing process wants to have read/write access to this "
+ "shared memory, a copy of that memory is made for writing to.",
+
+ "797", "Image Space is the virtual address space in use by the "
+ "selected image with this protection. "
+ "Executable memory is memory that can be executed by "
+ "programs, but may not be read or written. "
+ "This type of protection is not supported by all "
+ "processor types.",
+
+ "799", "Image Space is the virtual address space in use by the "
+ "selected image with this protection. "
+ "Execute/Read Only memory is memory that can be "
+ "executed as well as read.",
+
+ "801", "Image Space is the virtual address space in use by the "
+ "selected image with this protection. "
+ "Execute/Read/Write memory is memory that can be executed by "
+ "programs as well as read and written.",
+
+ "803", "Image Space is the virtual address space in use by the "
+ "selected image with this protection. "
+ "Execute Write Copy is memory that can be executed by "
+ "programs as well as read and written. "
+ "This type of protection is used when memory needs to be "
+ "shared between processes. If the sharing processes only "
+ "read the memory, then they will all use the same memory. "
+ "If a sharing process desires write access, then a copy of "
+ "this memory will be made for that process.",
+
+ "805", "ID Thread is the unique identifier of this thread. "
+ "ID Thread numbers are reused, so they only identify "
+ "a thread for the lifetime of that thread.",
+
+ "817", "Thread Details object contains the thread counters that "
+ "are time consuming to collect.",
+
+ "819", "Cache Bytes measures the number of bytes currently in "
+ "use by the system Cache. The system Cache "
+ "is used to buffer data retrieved from disk or LAN. "
+ "The system Cache uses memory not in use by active "
+ "processes in the computer.",
+
+ "821", "Cache Bytes Peak measures the maximum number of bytes "
+ "used by the system Cache. The system Cache "
+ "is used to buffer data retrieved from disk or LAN. "
+ "The system Cache uses memory not in use by active "
+ "processes in the computer.",
+
+ "823", "Pages Input/sec is the number of pages read from the disk "
+ "to resolve memory references to pages that "
+ "were not in memory at the time of the reference. "
+ "This counter includes paging traffic on behalf of the "
+ "system Cache to access file data for applications. "
+ "This is an important counter to observe if you are concerned "
+ "about excessive memory pressure (that is, thrashing), and "
+ "the excessive paging that may result.";
+
+ \ No newline at end of file
diff --git a/public/oak/bin/ppcmk.inc b/public/oak/bin/ppcmk.inc
new file mode 100644
index 000000000..e9728f313
--- /dev/null
+++ b/public/oak/bin/ppcmk.inc
@@ -0,0 +1,286 @@
+!IF 0
+
+Copyright (c) 1994-1996 Microsoft Corporation
+
+Module Name:
+
+ ppcmk.inc
+
+Abstract:
+
+ This module contains the PPC specific build controls. It is included
+ by makefile.def.
+
+Revision History:
+
+!ENDIF
+
+#
+# PPC option control
+#
+
+!undef USE_MAPSYM
+
+UMBASE=$(UMBASE:*=ppc)
+UMLIBS=$(UMLIBS:*=ppc)
+NTRES=$(NTRES:*=ppc)
+UMRES=$(UMRES:*=ppc)
+UMOBJS=$(UMOBJS:*=ppc)
+LINKLIBS=$(LINKLIBS:*=ppc)
+GDI_DRIVER_LIBS=$(GDI_DRIVER_LIBS:*=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)
+MFC_STATIC_LIB=$(MFC_STATIC_LIB:*=ppc)
+CRT_LIB_PATH=$(CRT_LIB_PATH:*=ppc)
+SDK_LIB_PATH=$(SDK_LIB_PATH:*=ppc)
+ORDER=$(ORDER:*=ppc)
+
+#
+# Include 64-bit helper library
+#
+!if "$(TARGETTYPE)" == "DRIVER" || \
+ "$(TARGETTYPE)" == "EXPORT_DRIVER" || \
+ "$(TARGETTYPE)" == "HAL" || \
+ "$(TARGETTYPE)" == "GDI_DRIVER" || \
+ "$(TARGETTYPE)" == "MINIPORT"
+MACHINE_TARGETLIBS=$(SDK_LIB_PATH)\int64.lib $(MACHINE_TARGETLIBS)
+!elseif defined(USE_NTDLL) || \
+ defined(USE_SYSDLL) || \
+ defined (USE_NOLIBS)
+MACHINE_TARGETLIBS=$(SDK_LIB_PATH)\int64.lib $(MACHINE_TARGETLIBS)
+! if "$(UMTYPE)" == "nt" || \
+ "$(UMTYPE)" == "ntss"
+# Do this to avoid multiple library warnings (and allow building csr/server)
+UMLIBS=$(SDK_LIB_PATH)\int64.lib $(UMLIBS)
+! endif
+!elseif "$(UMTYPE)" == "nt" || \
+ "$(UMTYPE)" == "ntss"
+UMLIBS=$(SDK_LIB_PATH)\int64.lib $(UMLIBS)
+!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=
+
+
+!ifndef USE_PDB_TO_COMPILE
+DBGFLAGS=$(DBGFLAGS:/Zi=-Z7)
+DBGFLAGS=$(DBGFLAGS:-Zi=-Z7)
+!else
+! if "$(TARGETTYPE)" == "LIBRARY"
+DBGFLAGS=$(DBGFLAGS) /Fd$(TARGETPATH)\$(TARGET_DIRECTORY)\$(TARGETNAME).pdb
+! else
+DBGFLAGS=$(DBGFLAGS) /Fd$(MAKEDIR)\$(_OBJ_DIR)\ppc^\
+! endif
+!endif
+
+!ifdef BROWSER_INFO
+DBGFLAGS=$(DBGFLAGS) /FR$(MAKEDIR)\$(_OBJ_DIR)\ppc^\
+!endif
+
+!IFDEF NTBBT
+DBGFLAGS=$(DBGFLAGS) /Z7
+LINKER_FLAGS=$(LINKER_FLAGS) -debug:full -debugtype:cv,fixup
+USE_PDB=1
+!ENDIF
+
+!IFDEF PPC_WARNING_LEVEL
+MSC_WARNING_LEVEL=$(PPC_WARNING_LEVEL)
+!ENDIF
+
+!ifdef PPC_PERFFLAGS
+PERFFLAGS = $(PPC_PERFFLAGS)
+!endif
+
+# DEFAULT_MSC_OPT = $(DEFAULT_MSC_OPT:/Oxs=/Ox)
+
+# Set MSC_OPTIMIZATION.
+# Order of precedence:
+# Platform specific override
+# Environment variable
+# System Default
+
+!if defined(PPC_OPTIMIZATION)
+MSC_OPTIMIZATION=$(PPC_OPTIMIZATION)
+!elseif !defined(MSC_OPTIMIZATION)
+MSC_OPTIMIZATION=$(DEFAULT_MSC_OPT)
+!endif
+
+DBGFLAGS=$(DBGFLAGS) $(MSC_OPTIMIZATION)
+
+!IFDEF PPC_CPPFLAGS
+MSC_CPPFLAGS=$(PPC_CPPFLAGS)
+!ENDIF
+
+!ifdef NO_READONLY_STRINGS
+STRING_POOLING = /Gf
+!else
+STRING_POOLING = /GF
+!endif
+
+!ifdef USE_NATIVE_EH
+EH_FLAGS=/GX /GR
+!else
+EH_FLAGS=/GX- /GR-
+!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) $(STRING_POOLING) $(EH_FLAGS)
+
+PPC_C_COMPILER_NAME = cl -nologo
+PPC_CC = $(PPC_C_COMPILER_NAME)
+
+CDEFINES=$(STD_DEFINES) $(TARGET_DBG_DEFINES) $(ENV_DEFINES)
+CFLAGS=$(PPC_FLAGS) $(NTPPCFLAGS) $(STDFLAGS) $(DBGFLAGS) $(USER_C_FLAGS) $(PERFFLAGS)
+
+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= -DFPO=1 -DLANGUAGE_C
+
+# Disable -WX for now, unless explicitly allowed
+
+!ifndef ALLOW_WX
+GLOBAL_C_FLAGS = $(GLOBAL_C_FLAGS:-WX=)
+GLOBAL_C_FLAGS = $(GLOBAL_C_FLAGS:/WX=)
+!endif
+
+NP_COMPILER_FLAGS = $(GLOBAL_C_FLAGS) $(COMPILER_WARNINGS)
+
+C_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED)
+CXX_COMPILER_FLAGS = $(NP_COMPILER_FLAGS) $(PRECOMPILED_CXX)
+C_PREPROCESSOR_FLAGS = $(GLOBAL_C_FLAGS) $(PRECOMPILED) -EP -Tc
+
+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_CXX_MSG = ClPpc $< " $(CXX_COMPILER) "
+
+ECHO_PRECOMPILED_MSG1=CpPpc $(PRECOMPILED_INCLUDE) \
+ "$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) $(PRECOMPILED_SOURCEFILE) \
+ $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)"
+
+ECHO_PRECOMPILED_MSG2=CpPpc $(PRECOMPILED_INCLUDE) \
+ "$(C_COMPILER_NAME) $(PRECOMPILED_FLAG) \
+ $(C_COMPILER_FLAGS) /Yl$(TARGETNAME) /Yc$(?F) $(HEADERFILE) $(HEADEROBJ)"
+
+{.\}.cxx{}.obj:
+ @$(ECHO_MSG)
+ @$(CXX_COMPILER) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+
+{.\}.cxx{$(_OBJ_DIR)\$(TARGET_DIRECTORY)\}.obj:
+ @$(ECHO_MSG)
+ @$(CXX_COMPILER) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+
+{}.cxx{$(_OBJ_DIR)\$(TARGET_DIRECTORY)\}.obj:
+ @$(ECHO_MSG)
+ @$(CXX_COMPILER) -Fo$(MAKEDIR)\$@ $(MAKEDIR)\..\$(<F)
+
+{..\ppc\}.s{$(_OBJ_DIR)\ppc\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsPpc $< " $(PPC_ASSEMBLER) "
+ $(C_PREPROCESSOR) $(MAKEDIR)\..\ppc\$(<F) > $(MAKEDIR)\$(_OBJ_DIR)\ppc\$(<B).i && $(PPC_ASSEMBLER) -o $@ $(MAKEDIR)\$(_OBJ_DIR)\ppc\$(<B).i
+ @-erase $(MAKEDIR)\$(_OBJ_DIR)\ppc\$(<B).i >nul 2>&1
+
+{..\ppc\}.s.pp:
+ @-erase $@ >nul 2>&1
+ @echo AsPpc $< " $(PPC_ASSEMBLER) "
+ $(C_PREPROCESSOR) $(MAKEDIR)\..\ppc\$(<F) > $(MAKEDIR)\$(<B).pp
+
+{ppc\}.s{$(_OBJ_DIR)\ppc\}.obj:
+ @-erase $@ >nul 2>&1
+ @echo AsPpc $< " $(PPC_ASSEMBLER) "
+ $(C_PREPROCESSOR) $(MAKEDIR)\ppc\$(<F) > $(MAKEDIR)\$(_OBJ_DIR)\ppc\$(<B).i && $(PPC_ASSEMBLER) -o $@ $(MAKEDIR)\$(_OBJ_DIR)\ppc\$(<B).i
+ @-erase $(MAKEDIR)\$(_OBJ_DIR)\ppc\$(<B).i >nul 2>&1
+
+{ppc\}.s.pp:
+ @-erase $@ >nul 2>&1
+ @echo AsPpc $< " $(PPC_ASSEMBLER) "
+ $(C_PREPROCESSOR) $(MAKEDIR)\ppc\$(<F) > $(MAKEDIR)\$(<B).pp
+
+.SUFFIXES: .il
+
+{}.il{}.cod:
+ @-erase $@ >nul 2>&1
+ @echo cl $<" $(C_COMPILER) "
+ @$(C_COMPILER) -FAac -Fa$(<B).cod -B1..\bootbin\null.exe -Bk$(<B). -Fo$(MAKEDIR)\$(_OBJ_DIR)\ppc\$(<B).o $(MAKEDIR)\$(<B).c
+ @del $(_OBJ_DIR)\ppc\$(<B).o
+
+!IFDEF CAIRO_PRODUCT
+!IFDEF _CAIROPPCTREE
+_NTTREE=$(_CAIROPPCTREE)
+_NTTREE_NO_SPLIT=$(_CAIROPPCTREE_NS)
+!ENDIF
+!ELSE
+!IFDEF _NTPPCTREE
+_NTTREE=$(_NTPPCTREE)
+_NTTREE_NO_SPLIT=$(_NTPPCTREE_NS)
+!ENDIF
+!ENDIF
+
+!IFDEF _NTPPCLIBS
+_NTLIBS=$(_NTPPCLIBS)
+!ENDIF
+
+COPYDST=$(PPCCOPYDST)
+
+LIB_COPY=ntppccp.cmd
+
+NTTEST_LINK_OPTIONS= -base:0x80010000 -entry:KiSystemStartup
+
+#
+# Move the compiler generated function descriptors into .rdata
+#
+
+LINKER_FLAGS = -merge:.reldata=.rdata $(LINKER_FLAGS)
diff --git a/public/oak/bin/readme.txt b/public/oak/bin/readme.txt
new file mode 100644
index 000000000..2c992eb48
--- /dev/null
+++ b/public/oak/bin/readme.txt
@@ -0,0 +1,3 @@
+Release information for this Preliminary Release is completely
+contained in the printed Release Notes.
+ \ No newline at end of file
diff --git a/public/oak/bin/setidw.bat b/public/oak/bin/setidw.bat
new file mode 100644
index 000000000..6c73817f0
--- /dev/null
+++ b/public/oak/bin/setidw.bat
@@ -0,0 +1 @@
+idw\regini idw\setidw.ini > idw\setidw.log
diff --git a/public/oak/bin/setidw.ini b/public/oak/bin/setidw.ini
new file mode 100644
index 000000000..e076f0749
--- /dev/null
+++ b/public/oak/bin/setidw.ini
@@ -0,0 +1,42 @@
+\Registry\Machine\SYSTEM
+ Select
+ CurrentControlSet
+ Control
+ Session Manager
+ GlobalFlag = REG_DWORD 0x00474400
+ CriticalSectionTimeout = REG_DWORD 120
+ ResourceTimeoutCount = REG_DWORD 150
+ Environment
+ Path = REG_EXPAND_SZ %SystemRoot%\system32;%SystemRoot%\mstools;%SystemRoot%\idw
+ Services
+ Ofs
+ Type = REG_DWORD 2
+ Start = REG_DWORD 4
+ Group = File system
+ ErrorControl = REG_DWORD 1
+\Registry\Machine\SOFTWARE
+ Microsoft
+ Windows NT
+ CurrentVersion
+ Windows
+ fPromptOnVerbose = REG_DWORD 0
+ fPromptOnWarning = REG_DWORD 0
+ fPromptOnError = REG_DWORD 1
+ fPrintVerbose = REG_DWORD 0
+ fPrintFileLine = REG_DWORD 0
+ Image File Execution Options
+ Your Image File Name Here without a path
+ GlobalFlag = REG_DWORD 0x000010F0
+ Debugger = ntsd -d
+ AeDebug
+ Debugger = ntsd -p %ld -e %ld -g
+ Auto = REG_SZ 0
+ MMDEBUG
+ MMDEBUG =
+ WINMM =
+ MCI =
+ IniFileMapping
+ win.ini
+ MMDEBUG = SYS:Microsoft\Windows NT\CurrentVersion\MMDEBUG
+ ImageFileExecutionOptions.ini
+ = SYS:Microsoft\Windows NT\CurrentVersion\Image File Execution Options
diff --git a/public/oak/bin/setup16.inf b/public/oak/bin/setup16.inf
new file mode 100644
index 000000000..029c7f906
--- /dev/null
+++ b/public/oak/bin/setup16.inf
@@ -0,0 +1,1497 @@
+[setup]
+ help = setup.hlp
+
+; Place any programs here that should be run at the end of setup.
+; These apps will be run in order of their appearance here.
+[run]
+
+[dialog]
+ caption = "Windows Setup"
+ exit = "Exit Windows Setup"
+ title = "Installing Windows 3.1"
+ options = "In addition to installing Windows 3.1, you can:"
+ printwait = "Please wait while Setup configures your printer(s)..."
+ copywait = "Welcome to Microsoft Windows 3.1!\n\n - If you're new to Windows, see 'A Brief Tour of\n Microsoft Windows' in the Getting Started book.\n\n - If you've used Windows before, see 'New\n in This Version' in the Getting Started book."
+
+ copywait4="Make sure you register your copy of Microsoft Windows 3.1.\nWhen you register, Microsoft will:\n\n - Notify you of product updates and new product releases.\n\n - Send you a FREE Windows newsletter."
+
+ copywait5 = "\n\nThis would be a great time to remove the serial number label\n from the inside back cover of the Getting Started with Windows\nbook and place it on your computer for future reference."
+
+[data]
+; Disk space required
+; <type of setup>= <Full install space>, <Min install space>
+
+ upd2x386full = 10000000,6144000 ; 10.0 Mb, 6.144 Mb
+ upd2x286full = 9000000,6144000 ; 9.0 Mb, 6.144 Mb
+ upd3x386full = 5500000,5000000 ; 5.5 Mb, 5.0 Mb
+ upd3x286full = 5500000,5000000 ; 5.5 Mb, 5.0 Mb
+
+ new386full = 10000000,6144000 ; 10.0 Mb, 6.144 Mb
+ new286full = 9000000,6144000 ; 9.0 Mb, 6.144 Mb
+
+ netadmin = 16000000 ; 16.0 Mb
+ netadminupd = 16000000 ; 16.0 Mb
+ upd2x386net = 300000 ; .3 Mb
+ upd3x386net = 300000 ; .3 Mb
+ upd2x286net = 300000 ; .3 Mb
+ upd3x286net = 300000 ; .3 Mb
+ new386net = 300000,300000 ; .3 Mb, .3 Mb
+ new286net = 300000,300000 ; .3 Mb, .3 Mb
+
+
+
+; Defaults used in setting up and names of a few files
+ startup = WIN.COM
+ defdir = C:\WINDOWS
+ shortname = Windows
+ welcome = "Windows 3.1"
+ deflang = enu
+ defxlat = 437
+ defkeydll = usadll
+ register = "regedit /s /u setup.reg"
+ tutor = "wintutor.exe "
+ NetSetup = FALSE
+ MouseDrv = TRUE
+ Version = "3.1.040"
+
+; This is data needed by the MS-DOS half of setup so that it can copy the
+; proper kernel and start Windows for the GUI portion of setup.
+;
+; ** MS-DOS documentation says that first byte of command line for 4a call
+; ** should be space. ==> in execcmd RHS leave first space as it is now
+[winexec]
+ execstd = "dosx.exe "
+ execcmd = " krnl286.exe /b /q:"
+ exechimem = "xmsmmgr.exe"
+ himemcmd = ""
+ Krnl386 = 2:krnl386.exe
+ Krnl286 = 2:krnl286.exe
+ dosx = 2:dosx.exe
+
+; Names of the disks Setup can prompt for.
+[disks]
+ 1 =. ,"Microsoft Windows 3.1 Disk #1",disk1
+ 2 =. ,"Microsoft Windows 3.1 Disk #2",disk2
+ 3 =. ,"Microsoft Windows 3.1 Disk #3",disk3
+ 4 =. ,"Microsoft Windows 3.1 Disk #4",disk4
+ 5 =. ,"Microsoft Windows 3.1 Disk #5",disk5
+ 6 =. ,"Microsoft Windows 3.1 Disk #6",disk6
+ 7 =. ,"Microsoft Windows 3.1 Disk #7",disk7
+
+[oemdisks]
+ Z =. ,"HP DeskJet Series v2.0 disk (from printer box or contact HP)",diskz
+
+[user]
+ 3:setup.ini, noupdate
+
+[windows]
+ 1:setup.hlp
+ 1:setup.txt
+ 1:win.src, Net
+ 2:system.src, Net
+ 1:winhelp.exe
+ 3:control.hlp
+
+[windows.system]
+ 1:gdi.exe
+ 3:user.exe
+ 2:win.cnf
+ 1:lzexpand.dll
+ 2:ver.dll
+
+[windows.system.386]
+ 1:cpwin386.cpl
+
+[386max]
+ 2:386max.vxd
+ 3:windows.lod
+
+[bluemax]
+ 2:bluemax.vxd
+ 3:windows.lod
+
+[shell]
+ progman.exe, "Program Manager"
+
+; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+: !!! The description strings should not be changed.
+; !!! Changing description strings can result in old drivers not being
+; !!! upgraded since Setup uses the description string to determine what
+; !!! driver is installed and whether a new, upgraded driver is provided
+; !!! with this version of Windows.
+; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+;
+
+[display]
+;profile = driver, Description of driver, resolution, 286 grabber, logo code, VDD, 386grabber, ega.sys, logo data, optional work section
+;
+8514 = 1:8514.drv, "8514/a", "100,120,120", 1:vgacolor.2gr, 2:vgalogo.lgo, 2:vdd8514.386, 2:vgadib.3gr,, 3:vgalogo.rle, 8514
+8514s = 1:8514.drv, "8514/a (Small fonts)", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 2:vdd8514.386, 2:vgadib.3gr,, 3:vgalogo.rle, 8514s
+plasma = 2:plasma.drv, "Compaq Portable Plasma", "100,96,96", 2:cga.2gr, 3:cgalogo.lgo, 2:vddcga.386, 2:plasma.3gr,, 3:cgalogo.rle
+egahires = 2:ega.drv, "EGA", "133,96,72", 2:egacolor.2gr, 2:egalogo.lgo, 2:vddega.386, 1:ega.3gr, 2:ega.SYS, 2:egalogo.rle
+egahibw = 2:egahibw.drv, "EGA black and white (286 only)", "133,96,72", 2:egacolor.2gr, 3:cgalogo.lgo,,, 2:ega.SYS, 3:cgalogo.rle
+egamono = 2:egamono.drv, "EGA Monochrome (286 only)", "133,96,72", 2:egamono.2gr, 2:egamono.lgo,,, 2:ega.SYS, 3:egamono.rle
+hercules = 2:hercules.drv, "Hercules Monochrome", "133,96,72", 2:hercules.2gr, 2:herclogo.lgo, 2:vddherc.386, 2:herc.3gr,, 2:herclogo.rle
+mcga = 2:vgamono.drv, "IBM MCGA (286 only)", "100,96,96", 1:vgacolor.2gr, 3:cgalogo.lgo,,,, 3:cgalogo.rle, vgamono
+olibw = 2:olibw.drv, "Olivetti/AT&T Monochrome or PVC Display", "120,96,80", 2:oligrab.2gr, 3:cgalogo.lgo, 2:vddcga.386, 2:plasma.3gr,, 3:cgalogo.rle
+ct441 = 3:vga.drv, "QuadVGA, ATI VIP VGA, 82C441 VGAs", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 1:vddct441.386, 3:vga30.3gr,, 3:vgalogo.rle
+tiga1 = 2:tiga.drv, "TIGA (Small fonts)", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 1:vddtiga.386, 2:vgadib.3gr,, 3:vgalogo.rle, tiga1
+tiga2 = 2:tiga.drv, "TIGA (Large fonts)", "100,120,120", 1:vgacolor.2gr, 2:vgalogo.lgo, 1:vddtiga.386, 2:vgadib.3gr,, 3:vgalogo.rle, tiga2
+vga = 3:vga.drv, "VGA", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, x:*vddvga, 1:vga.3gr,, 3:vgalogo.rle
+vga30 = 3:vga.drv, "VGA (Version 3.0)", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 1:vddvga30.386, 3:vga30.3gr,, 3:vgalogo.rle
+vgamono = 2:vgamono.drv, "VGA with Monochrome display", "100,96,96", 2:vgamono.2gr, 2:egamono.lgo, x:*vddvga, 2:vgadib.3gr,, 3:egamono.rle, vgamono
+svga = 2:supervga.drv, "Super VGA (800x600, 16 colors)", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, x:*vddvga, 1:vga.3gr,, 3:vgalogo.rle
+v7vga = 2:v7vga.drv, "Video 7 512K, 640x480 256 colors", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 2:v7vdd.386, 2:v7vga.3gr,, 3:vgalogo.rle, v7b
+v7c = 2:v7vga.drv, "Video 7 512K, 720x512 256 colors", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 2:v7vdd.386, 2:v7vga.3gr,, 3:vgalogo.rle, v7c
+v7d = 2:v7vga.drv, "Video 7 1Mb, 800x600 256 colors", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 2:v7vdd.386, 2:v7vga.3gr,, 3:vgalogo.rle, v7d
+v7e = 2:v7vga.drv, "Video 7 1Mb, 1024x768 256 colors (Large fonts)","100,120,120", 1:vgacolor.2gr, 2:vgalogo.lgo, 2:v7vdd.386, 2:v7vga.3gr,, 3:vgalogo.rle, v7e
+v7f = 2:v7vga.drv, "Video 7 1Mb, 1024x768 256 colors (Small fonts)","100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 2:v7vdd.386, 2:v7vga.3gr,, 3:vgalogo.rle, v7f
+xga16 = 3:vga.drv, "XGA (640x480, 16 colors)", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 1:vddvga30.386, 3:vga30.3gr,, 3:vgalogo.rle
+xgasm = 1:xga.drv, "XGA (Small fonts)", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 2:vddxga.386, 2:v7vga.3gr,, 3:vgalogo.rle, xgasm
+xgalg = 1:xga.drv, "XGA (Large fonts)", "100,120,120", 1:vgacolor.2gr, 2:vgalogo.lgo, 2:vddxga.386, 2:v7vga.3gr,, 3:vgalogo.rle, xgalg
+xgalo = 1:xga.drv, "XGA (640x480, 256 colors)", "100,96,96", 1:vgacolor.2gr, 2:vgalogo.lgo, 2:vddxga.386, 2:v7vga.3gr,, 3:vgalogo.rle, xgalo
+
+;
+; Optional sections listed in field 9 of the display secton are intrpreted as follows:
+;
+; File, Destination, .ini file, Section, LHS, RHS
+;
+; Where: x:File = Optional; file to be copied, may be left null.
+; Destination = 0: for windows root or 0:system for system subdir
+; where file is to be copied.
+; .ini file = Optional; .ini file to be modified or created.
+; Must be included if following parameters specified.
+; Section = Section of .ini file to be modified.
+; OldLine = Optional; old line to be removed from the .ini file.
+; Only one occurence of the specified string is removed.
+; NewLine = New text line to be written to the .ini file.
+;
+;[v7vga]
+;x:v7vga.vxd, 0:system, system.ini, 386enh, "v7device=", "display=v7vdd.386"
+
+[vgamono]
+,,system.ini,386enh,"vgamono=","vgamono=TRUE"
+
+[8514]
+,,system.ini,8514.DRV,"dpi=","dpi=120"
+
+[8514s]
+,,system.ini,8514.DRV,"dpi=","dpi=96"
+
+[tiga1]
+2:tigawin.rlm,0:system,system.ini,"tiga.drv","tigafont=","tigafont=1"
+
+[tiga2]
+2:tigawin.rlm,0:system,system.ini,"tiga.drv","tigafont=","tigafont=0"
+
+[v7b]
+,,system.ini,v7vga.drv,"WidthXHeight=","WidthXHeight=640x480"
+,,system.ini,v7vga.drv,"FontSize=","FontSize=small"
+
+[v7c]
+,,system.ini,v7vga.drv,"WidthXHeight=","WidthXHeight=720x512"
+,,system.ini,v7vga.drv,"FontSize=","FontSize=small"
+
+[v7d]
+,,system.ini,v7vga.drv,"WidthXHeight=","WidthXHeight=800x600"
+,,system.ini,v7vga.drv,"FontSize=","FontSize=small"
+
+[v7e]
+,,system.ini,v7vga.drv,"WidthXHeight=","WidthXHeight=1024x768"
+,,system.ini,v7vga.drv,"FontSize=","FontSize=large"
+
+[v7f]
+,,system.ini,v7vga.drv,"WidthXHeight=","WidthXHeight=1024x768"
+,,system.ini,v7vga.drv,"FontSize=","FontSize=small"
+
+[xgasm]
+,,system.ini,XGA_Display,"XGA_Resolution=",
+,,system.ini,XGA_Display,"XGA_Resources=","XGA_Resources=1"
+
+[xgalg]
+,,system.ini,XGA_Display,"XGA_Resolution=",
+,,system.ini,XGA_Display,"XGA_Resources=","XGA_Resources=2"
+
+[xgalo]
+,,system.ini,XGA_Display,"XGA_Resolution=","XGA_Resolution=1"
+,,system.ini,XGA_Display,"XGA_Resources=","XGA_Resources=1"
+
+; copy these fonts depending on the 386 grabber being used
+[VGA.3gr]
+2:CGA40WOA.FON,2:CGA40850.FON
+2:CGA80WOA.FON,2:CGA80850.FON
+2:EGA40WOA.FON,2:EGA40850.FON
+2:EGA80WOA.FON,2:EGA80850.FON
+
+[VGA30.3gr]
+2:CGA40WOA.FON,2:CGA40850.FON
+2:CGA80WOA.FON,2:CGA80850.FON
+2:EGA40WOA.FON,2:EGA40850.FON
+2:EGA80WOA.FON,2:EGA80850.FON
+
+[V7VGA.3gr]
+2:CGA40WOA.FON,2:CGA40850.FON
+2:CGA80WOA.FON,2:CGA80850.FON
+2:EGA40WOA.FON,2:EGA40850.FON
+2:EGA80WOA.FON,2:EGA80850.FON
+
+[EGA.3gr]
+2:CGA40WOA.FON,2:CGA40850.FON
+2:CGA80WOA.FON,2:CGA80850.FON
+2:EGA40WOA.FON,2:EGA40850.FON
+2:EGA80WOA.FON,2:EGA80850.FON
+
+[vgadib.3gr]
+2:CGA40WOA.FON,2:CGA40850.FON
+2:CGA80WOA.FON,2:CGA80850.FON
+2:EGA40WOA.FON,2:EGA40850.FON
+2:EGA80WOA.FON,2:EGA80850.FON
+
+[PLASMA.3gr]
+2:EGA40WOA.FON,2:EGA40850.FON
+2:EGA80WOA.FON,2:EGA80850.FON
+
+[HERC.3gr]
+2:HERCWOA.FON,2:HERC850.FON
+
+[TIGA.3GR]
+2:CGA40WOA.FON,2:CGA40850.FON
+2:CGA80WOA.FON,2:CGA80850.FON
+2:EGA40WOA.FON,2:EGA40850.FON
+2:EGA80WOA.FON,2:EGA80850.FON
+
+[keyboard.drivers]
+kbd = 2:keyboard.drv
+kbdhp = 1:kbdhp.drv
+
+[keyboard.types]
+t3s0alat = "All AT type keyboards (84 - 86 keys)" ,nodll
+t1s2at&t = "AT&T '301' keyboard" ,nodll
+t1s4at&t = "AT&T '302' keyboard" ,nodll
+t4s0enha = "Enhanced 101 or 102 key US and Non US keyboards" ,nodll
+t3s0hp1 = "Hewlett-Packard Vectra keyboard (DIN)" ,nodll
+t4s40oliv = "Olivetti 101/102 A keyboard" ,nodll
+t1s0oliv = "Olivetti 83 key keyboard" ,nodll
+t3s10oliv = "Olivetti 86 Key keyboard" ,nodll
+t2s1oliv = "Olivetti M24 102 key keyboard" ,usadll
+t1s42oliv = "PC-XT 83 key keyboard" ,nodll
+t1s0pcxt = "PC/XT - Type keyboard (84 keys)" ,nodll
+
+[keyboard.tables]
+beldll = 2:kbdbe.dll , "Belgian"
+bridll = 2:kbduk.dll , "British"
+cafdll = 2:kbdfc.dll , "Canadian Multilingual"
+dandll = 2:kbdda.dll , "Danish"
+dutdll = 2:kbdne.dll , "Dutch"
+findll = 2:kbdfi.dll , "Finnish"
+fredll = 2:kbdfr.dll , "French"
+candll = 2:kbdca.dll , "French Canadian"
+gerdll = 2:kbdgr.dll , "German"
+icedll = 2:kbdic.dll , "Icelandic"
+itadll = 2:kbdit.dll , "Italian"
+latdll = 2:kbdla.dll , "Latin American"
+nordll = 2:kbdno.dll , "Norwegian"
+pordll = 2:kbdpo.dll , "Portuguese"
+spadll = 3:kbdsp.dll , "Spanish"
+swedll = 3:kbdsw.dll , "Swedish"
+swfdll = 2:kbdsf.dll , "Swiss French"
+swgdll = 2:kbdsg.dll , "Swiss German"
+nodll = , "US"
+usadll = 3:kbdus.dll , "US"
+usddll = 3:kbddv.dll , "US-Dvorak"
+usxdll = 2:kbdusx.dll, "US-International"
+
+[codepages]
+; Xlat Table OEM Font WOA Font Description
+863 = 1:xlat863.bin, 3:vga863.fon, 1:app850.fon, "Canadian-French (863)"
+861 = 2:xlat861.bin, 2:vga861.fon, 1:app850.fon, "Icelandic (861)"
+865 = 3:xlat865.bin, 3:vga865.fon, 1:app850.fon, "Nordic (865)"
+850 = 1:xlat850.bin, 2:vga850.fon, 1:app850.fon, "Multi-Lingual (850)"
+860 = 2:xlat860.bin, 2:vga860.fon, 1:app850.fon, "Portuguese (860)"
+437 = , , 3:dosapp.fon, "English (437)"
+
+[pointing.device]
+;
+; Note: the VMD field may contain multiple VXD's in the form "x:*vmd,2:1vmd.386".
+; Please note, however, that if multiple VXD's are specified in the VMD field
+; they must be surrounded by double quotes (").
+;
+;profile = mouse driver, Mouse description, VMD, Optional work section
+;
+hpmouse = 2:hpmouse.drv, "HP Mouse (HP-HIL)", x:*vmd
+lmouse = 2:lmouse.drv, "Logitech", 2:lvmd.386, lmouse
+ps2mouse = 2:mouse.drv, "Microsoft, or IBM PS/2", x:*vmd
+genius1 = 2:mscmouse.drv,"Genius serial mouse on COM1" , 2:mscvmd.386
+genius2 = 3:msc3bc2.drv, "Genius serial mouse on COM2" , 2:mscvmd.386
+msmouse2 = 2:mscmouse.drv,"Mouse Systems serial or bus mouse", 2:mscvmd.386
+msmouse1 = 3:msc3bc2.drv, "Mouse Systems serial mouse on COM2",2:mscvmd.386
+nomouse = 2:nomouse.drv, "No mouse or other pointing device", x:*vmd
+kbdmouse = 3:kbdmouse.drv,"Olivetti/AT&T Keyboard Mouse", x:*vmd
+
+[lmouse]
+2:lmouse.com,0:,,,,
+
+[dos.mouse.drivers]
+mouse.sys = 5:mouse.SYS, "MS Dos Mouse driver .SYS ver 7.XX"
+mouse.com = 4:mouse.com, "MS Dos Mouse driver .COM ver 7.XX"
+mousehp.sys = 5:mousehp.SYS, "HP Dos Mouse driver .SYS ver 7.XX"
+mousehp.com = 4:mousehp.com, "HP Dos Mouse driver .COM ver 7.XX"
+
+[network]
+;Prof = Driver, Description, HelpFile,OptFile,Optional section
+nonet = ,"No Network Installed" ,,,nonet_stuff
+3open = ,"3Com 3+Open"
+3share = ,"3Com 3+Share" ,,,msnet_stuff
+lantastic = ,"Artisoft LANtastic"
+banyan = ,"Banyan Vines"
+dlr = ,"IBM OS/2 LAN Server"
+pclp = ,"IBM PC LAN Program"
+lanman = ,"Microsoft LAN Manager"
+msnet = ,"Microsoft Network (or 100% compatible)", ,,,msnet_stuff
+novell = ,"Novell NetWare"
+pathworks = ,"DEC PATHWORKS"
+10net = ,"TCS 10Net"
+
+[3open.versions]
+xx010000="versions 1.X",,3open1
+00020000="version 2.0 Basic",,lmbasic
+01020000="version 2.0 Enhanced",,lmenh20
+
+[lantastic.versions]
+xx000000="versions below 3.0",,unsupported_net
+xx030000="versions 3.X",,lant3
+xx040000="versions 4.X",lantasti.386,lant4def,lant4
+
+[banyan.versions]
+xx000000="versions below 4.0",,unsupported_net
+xx040000="versions 4.0X",,ban4
+xx041000="version 4.1",z:\vines.drv,ban41def,ban41
+
+[pathworks.versions]
+xx000000="versions below 4.0",,unsupported_net
+xx040000="version 4.0",,dec4
+xx040100="version 4.1 or higher",,dec41
+
+[dlr.versions]
+xx000000="versions below 1.2",,unsupported_net
+00012000="without /API option",,dlr12
+01012000="version 1.2 or 1.3",,dlr12
+01013000="version 1.3 CSD 5015/5050",,dlr13csd
+01020000="version 2.0",,dlr20
+
+[pclp.versions]
+xx000000="all versions",,pclp
+
+[lanman.versions]
+xx000000="versions 1.X",,lmbasic
+00020000="version 2.0 Basic",,lmbasic
+01020000="version 2.0 Enhanced",,lmenh20
+00021000="version 2.1 Basic",,lmbasic21
+01021000="version 2.1 Enhanced",lanman21.drv,lmenh21nodrv,lmenh21
+
+[novell.versions]
+00000000="shell versions below 3.01",,unsupported_net
+00030100="shell versions below 3.21",,novell301
+00032100="shell versions 3.21 and above",,novell321
+00032600="shell versions 3.26 and above",,novell326
+
+[10net.versions]
+xx000000="versions below 4.1",,unsupported_net
+00041000="versions 4.1X",,10net41
+01041000="versions 4.1X with DCA 1M card",,10net41a
+xx042000="versions 4.2 and above",wtnet.drv,10net42def,10net42
+xx050000="version 5.0",wtnet.drv,10net42def,10net50
+
+[nonet_stuff]
+vxd=x:*dosnet,x:*vnetbios
+
+[msnet_stuff]
+driver=1:msnet.drv
+vxd=x:*dosnet,x:*vnetbios
+system.ini=386Enh,TimerCriticalSection,10000
+system.ini=386Enh,UniqueDOSPSP,TRUE
+system.ini=386Enh,PSPIncrement,5
+
+[3open1]
+driver=1:msnet.drv
+vxd=x:*vnetbios,x:*dosnet,2:lanman10.386
+warning=2
+system.ini=386Enh,TimerCriticalSection,10000
+system.ini=386Enh,UniqueDOSPSP,TRUE
+system.ini=386Enh,PSPIncrement=5
+
+[unsupported_net]
+warning=1
+
+[lant3]
+warning=2
+driver=1:msnet.drv
+vxd=x:*vnetbios,x:*dosnet
+system.ini=386Enh,INDOSPolling,TRUE
+system.ini=386Enh,EMMExclude,D800-DFFF
+system.ini=386Enh,NetHeapSize,76
+win.ini=Ports,LPT1.DOS,
+win.ini=Ports,LPT2.DOS,
+win.ini=Ports,LPT3.DOS,
+system.ini=386Enh,NetAsynchTimeout,50
+system.ini=386Enh,NetAsynchFallback,true
+
+[lant4]
+driver=1:msnet.drv
+system.ini=386Enh,network,"lantasti.386, *vnetbios"
+system.ini=386Enh,EMMExclude,D800-DFFF
+system.ini=386Enh,PerVMFiles,0
+system.ini=386Enh,NetHeapSize,64
+system.ini=386Enh,NetAsynchTimeout,50
+system.ini=386Enh,NetAsynchFallback,true
+
+[lant4def]
+warning=3
+driver=1:msnet.drv
+vxd=x:*vnetbios,x:*dosnet
+system.ini=386Enh,EMMExclude,D800-DFFF
+system.ini=386Enh,PerVMFiles,0
+system.ini=386Enh,NetHeapSize,64
+system.ini=386Enh,NetAsynchTimeout,50
+system.ini=386Enh,NetAsynchFallback,true
+
+[ban4]
+warning=2
+driver=1:msnet.drv
+vxd=x:*vnetbios,x:*dosnet,2:baninst.386
+system.ini=386Enh,TimerCriticalSection=5000
+system.ini=386Enh,UniqueDOSPSP,TRUE
+system.ini=386Enh,PSPIncrement,5
+
+[ban41]
+;; paths other than windows disk only works for sysdir or windir...
+sysdir=z:\vines.drv,z:\vvinesd.386
+sysdir=z:\vnsapi.dll,z:\rvnsapi.dll,z:\rvines.dll,z:\ddelib.dll
+system.ini=boot,network.drv,vines.drv
+system.ini=386Enh,network,"*vnetbios,*dosnet,vvinesd.386"
+system.ini=386Enh,TimerCriticalSection,5000
+system.ini=386Enh,UniqueDOSPSP,TRUE
+system.ini=386Enh,PSPIncrement,5
+
+[ban41def]
+warning=3
+driver=1:msnet.drv
+vxd=x:*vnetbios,x:*dosnet
+system.ini=386Enh,TimerCriticalSection=5000
+system.ini=386Enh,UniqueDOSPSP,TRUE
+system.ini=386Enh,PSPIncrement,5
+
+[dec4]
+warning=2
+driver=2:pcsa.drv
+vxd=x:*dosnet,2:decnet.386,2:decnb.386
+system.ini=386Enh,TimerCriticalSection,10000
+
+[dec41]
+driver=2:pcsa.drv
+vxd=x:*dosnet,2:decnet.386,2:decnb.386
+system.ini=386Enh,TimerCriticalSection,10000
+
+[dlr12]
+warning=2
+driver=1:msnet.drv
+vxd=x:*vnetbios,x:*dosnet
+
+[dlr13csd]
+warning=3
+driver=2:lanman.drv
+vxd=x:*vnetbios,x:*dosnet
+sysdir=2:netapi20.dll,2:pmspl20.dll
+update=3:lanman.hlp,3:winpopup.hlp,2:winpopup.exe
+
+[dlr20]
+system.ini=boot,network.drv,lansrv.drv
+vxd=x:*vnetbios,x:*dosnet
+update=3:winpopup.hlp,2:winpopup.exe
+
+[pclp]
+warning=2
+driver=1:msnet.drv
+vxd=x:*vnetbios,x:*dosnet
+system.ini=386Enh,INDOSPolling,TRUE
+
+[lmbasic]
+warning=2
+driver=1:msnet.drv
+vxd=x:*dosnet,x:*vnetbios,2:lanman10.386
+
+[lmbasic21]
+driver=1:msnet.drv
+vxd=x:*dosnet,x:*vnetbios,2:lanman10.386
+
+[lmenh20]
+warning=2
+driver=2:lanman.drv
+vxd=x:*vnetbios,x:*dosnet
+sysdir=2:netapi20.dll,2:pmspl20.dll
+update=3:lanman.hlp,2:winpopup.exe,3:winpopup.hlp
+
+[lmenh21nodrv]
+warning=3
+driver=1:msnet.drv
+vxd=x:*dosnet,x:*vnetbios
+
+[lmenh21]
+warning=2
+system.ini=boot,network.drv,lanman21.drv
+vxd=x:*vnetbios,x:*dosnet
+update=2:winpopup.exe,3:winpopup.hlp
+
+[novell301]
+warning=2
+driver=2:netware.drv
+vxd=x:*vnetbios,2:vnetware.386,2:vipx.386
+sysdir=3:netware.hlp,3:nwpopup.exe
+sysdir=2:ipx.obj,3:netx.com
+sysdir=3:ipxodi.com,2:lsl.com
+sysdir=3:tbmi2.com
+win.ini=windows,load,nwpopup.exe
+system.ini=386Enh,OverlappedIO=off
+
+[novell321]
+warning=2
+driver=2:netware.drv
+vxd=x:*vnetbios,2:vnetware.386,2:vipx.386
+sysdir=3:netware.hlp,3:nwpopup.exe
+sysdir=2:ipx.obj,3:netx.com
+sysdir=3:ipxodi.com,2:lsl.com
+sysdir=3:tbmi2.com
+win.ini=windows,load,nwpopup.exe
+system.ini=386Enh,OverlappedIO=off
+
+[novell326]
+driver=2:netware.drv
+vxd=x:*vnetbios,2:vnetware.386,2:vipx.386
+sysdir=3:netware.hlp,3:nwpopup.exe
+sysdir=2:ipx.obj,3:netx.com
+sysdir=3:ipxodi.com,2:lsl.com
+sysdir=3:tbmi2.com
+win.ini=windows,load,nwpopup.exe
+system.ini=386Enh,OverlappedIO=off
+
+[10net41]
+warning=2
+driver=1:msnet.drv
+vxd=x:*vnetbios,x:*dosnet
+system.ini=386Enh,TimerCriticalSection,10000
+
+[10net41a]
+warning=2
+driver=1:msnet.drv
+vxd=x:*vnetbios,x:*dosnet
+system.ini=386Enh,TimerCriticalSection,10000
+system.ini=386Enh,UniqueDOSPSP,TRUE
+system.ini=386Enh,PSPIncrement,5
+system.ini=386Enh,INDOSPolling,TRUE
+
+[10net42]
+system.ini=boot,network.drv,wtnet.drv
+vxd=x:*vnetbios,x:*dosnet
+system.ini=386Enh,TimerCriticalSection,10000
+windir=10net.ini
+
+[10net42def]
+warning=3
+driver=1:msnet.drv
+vxd=x:*dosnet,x:*vnetbios
+system.ini=386Enh,TimerCriticalSection,2000
+
+[10net50]
+warning=3
+system.ini=boot,network.drv,wtnet.drv
+vxd=x:*dosnet,x:*vnetbios
+system.ini=386Enh,TimerCriticalSection,2000
+windir=10net.ini
+
+[sysfonts]
+2:egasys.fon,"EGA (640x350) resolution System Font", "133,96,72"
+2:vgasys.fon,"VGA (640x480) resolution System Font", "100,96,96"
+2:8514sys.fon,"8514/a (1024x768) resolution System Font", "100,120,120"
+2:egasys.fon,"AT&T (640x400) resolution System Font", "120,96,80"
+
+[fixedfonts]
+1:egafix.fon,"EGA (640x350) resolution Fixed System Font", "133,96,72"
+2:vgafix.fon,"VGA (640x480) resolution Fixed System Font", "100,96,96"
+2:8514fix.fon,"8514/a (1024x768) resolution Fixed System Font", "100,120,120"
+1:egafix.fon,"AT&T (640x400) resolution Fixed System Font", "120,96,80"
+
+[oemfonts]
+2:egaoem.fon,"EGA (640x350) resolution Terminal Font (USA/Europe)", "133,96,72",1
+2:vgaoem.fon,"VGA (640x480) resolution Terminal Font (USA/Europe)", "100,96,96",1
+2:8514oem.fon,"8514/a (1024x768) resolution Terminal Font (USA/Europe)", "100,120,120",1
+2:egaoem.fon,"AT&T (640x400) resolution Terminal Font (USA/Europe)","120,96,80",1
+
+; The win.copy section is a list of files or sections to copy to the WINDOWS
+; directoy.
+;
+; FORMAT from,to
+;
+; IE
+; 1:foo.txt, 0: copy foo.txt from disk 1 to the windows directory
+; #386, 0:system copy all files in the 386 SECTION to the
+;
+;
+[win.copy]
+; copy this section for setup on 286 machines
+ #net, 0:
+ #win.shell, 0:
+ #win.other, 0:system
+
+[win.copy.net]
+; copy this section for network setup on 286 machines
+ #net, 0:
+
+[win.copy.net.win386]
+; copy this section for network setup on 386 machines
+ #net, 0:
+
+[win.copy.win386]
+; copy this section for full setup on 386 machines
+ #net, 0:
+ #win.shell, 0:
+ #pwin386, 0:system
+ #win.other, 0:system
+
+[net]
+ 6:CONTROL.SRC, "Windows User Files"
+ 5:WINVER
+
+[win.devices]
+; These devices will be copied on all machines
+ 4:HIMEM.SYS, "XMS Memory Manager"
+ 5:SMARTDRV.EXE, "Disk Caching Program"
+ 5:RAMDRIVE.SYS, "RAM Drive Program"
+
+[win.devices.win386]
+; These devices will be copied on 386 machines only
+ 4:HIMEM.SYS, "XMS Memory Manager"
+ 4:EMM386.EXE, "LIM Expanded Memory Manager"
+ 5:SMARTDRV.EXE, "Disk Caching Program"
+ 5:RAMDRIVE.SYS, "RAM Drive Program"
+
+[win.other]
+ 5:WINOLDAP.MOD, "Windows Drivers"
+ 4:WIN87EM.DLL
+ 5:SYSEDIT.EXE
+ 4:COMMDLG.DLL
+ 5:DDEML.DLL
+ 4:OLECLI.DLL
+ 5:OLESVR.DLL
+ 5:DSWAP.EXE
+ 5:WSWAP.EXE
+ 6:SETUP.REG
+ 5:SHELL.DLL
+ 5:MAIN.CPL
+ 4:MIDIMAP.DRV
+ 6:MIDIMAP.CFG
+ 6:SND.CPL
+ 5:DRIVERS.CPL
+ 5:MMSYSTEM.DLL
+ 6:MMTASK.TSK
+ 3:TIMER.DRV
+ 5:MCISEQ.DRV
+ 6:MCIWAVE.DRV
+ 6:CONTROL.INF
+ 6:APPS.INF
+ 5:TOOLHELP.DLL
+
+[win.shell]
+ 4:PROGMAN.EXE, "Program Manager"
+ 6:TASKMAN.EXE, "Task Manager"
+ 4:WINFILE.EXE, "File Manager"
+ 4:CLIPBRD.EXE, "Clipboard Viewer"
+ 4:CONTROL.EXE, "Control Panel"
+ 5:PIFEDIT.EXE, "PIF Editor"
+ 3:REGEDIT.EXE, "Registration database"
+ 4:PRINTMAN.EXE, "Print Manager"
+ 5:MSD.EXE, "Microsoft Diagnostics"
+ 6:msd.ini
+ 3:WRITE.EXE, "Write Word Processor"
+ 4:WRITE.HLP, "Write Word Processor Help"
+ 4:moricons.dll "Icons"
+
+[pwin386]
+ 4:WINOA386.MOD, "386 Enhanced Mode files"
+ 6:WIN386.PS2
+ 5:WIN386.EXE
+ 3:VTDAPI.386
+
+[DelFiles]
+;Statically initialize the list of files that will be DELETED during the
+; 3.0 to 3.1 up-grade process. Add or remove items from this list at will,
+; (Wildcards accepted in list)
+; The first files in the list are deleted from Windows system dir(local setup).
+; Nb : Note that DelFiles section always is processed before RenFiles section.
+ tmsr?.fon
+ helv?.fon
+ swapfile.exe
+ kernel.exe
+ pmspl.dll
+ netapi.dll
+ midi.cpl
+ _default.pif
+; All files in the list AFTER this point will be deleted from Windows dir.
+; WARNING: The "..\" is needed, the code depends on it!!!
+ ..\setup.inf
+ shell.dll
+ olecli.dll
+ olesvr.dll
+ commdlg.dll
+ ver.dll
+ toolhelp.dll
+ *.pcl
+ 3270.txt
+ networks.txt
+ printers.txt
+ readme.txt
+ sysini?.txt
+ winini?.txt
+ DRWATSON.EXE
+; Various names for old Windows SETUP.EXE
+ SETUP.EXE
+ INSTALL.EXE
+ ASETTA.EXE
+ CONFIG.EXE
+ INSTALAR.EXE
+ KURMA.EXE
+
+[RenFiles]
+; Similar section but for file renaming to create .bak if needed
+ MIDIMAP.CFG,MIDIMAP.OLD
+ ADLIB.DRV,MSADLIB.DRV
+
+
+; The win.apps, win.games, win.scrs, win.bmps, and win.readme sections are
+; all formatted as described below.
+;
+; X:FileName, Description, FileSize, Profile String
+;
+; Where profile string is used by setup.exe to "lookup" the item in the
+; appropiate progman groups section to determine if and how the item is
+; to be added to a Program manager group via DDE. The profile string is
+; also used to "lookup" and needed dependent files in the [win.dependents]
+; section.
+;
+[win.apps]
+ 5:CALC.EXE, "Calculator" , 43072, calc
+ 4:CALENDAR.EXE, "Calendar" , 59824, calendar
+ 4:CARDFILE.EXE, "Cardfile" , 93184, cardfile
+ 4:CLOCK.EXE, "Clock" , 16416, clock
+ 3:NOTEPAD.EXE, "Notepad" , 32736, notepad
+ 5:PBRUSH.EXE, "Paintbrush" , 183168, pbrush
+ 4:TERMINAL.EXE, "Terminal" , 148160, terminal
+ 5:CALC.HLP, "Calculator Help" , 18076
+ 5:CALENDAR.HLP, "Calendar Help" , 20656
+ 4:CARDFILE.HLP, "Cardfile Help" , 24810
+ 4:NOTEPAD.HLP, "Notepad Help" , 13894
+ 4:PBRUSH.HLP, "Paintbrush Help" , 40269
+ 3:RECORDER.EXE, "Recorder" , 39152, recorder
+ 3:RECORDER.HLP, "Recorder Help" , 18200
+ 4:TERMINAL.HLP, "Terminal Help" , 36279
+ 4:PACKAGER.EXE, "Object Packager" , 76480, packager
+ 3:PACKAGER.HLP, "Object Packager Help" , 21156
+ 3:CHARMAP.EXE, "Character Map" , 22016, charmap
+ 4:CHARMAP.HLP, "Character Map Help" , 10797
+ 5:MPLAYER.EXE, "Media Player" , 33312, mplayer
+ 3:MPLAYER.HLP, "Media Player Help" , 12825
+ 4:SOUNDREC.EXE, "Sound Recorder" , 51241, soundrec
+ 3:SOUNDREC.HLP, "Sound Recorder Help" , 17730
+ 6:CLIPBRD.HLP, "Clipboard Viewer Help" , 13071
+ 4:DRWATSON.EXE, "Dr. Watson System Utility" , 26864
+ 5:PIFEDIT.HLP, "PIF Editor Help" , 33270
+ 4:PRINTMAN.HLP, "Print Manager Help" , 40879
+ 5:PROGMAN.HLP, "Program Manager Help" , 30911
+ 6:REGEDIT.HLP, "Registration Help" , 22681
+ 5:REGEDITV.HLP, "Registration Advanced Help", 15731
+ 3:WINFILE.HLP, "File Manager Help" , 76855
+ 3:WINTUTOR.EXE, "Windows Tutorial" , 124416, wintutor
+ 3:WINHELP.HLP, "Help Utility Help" , 26960
+ 3:GLOSSARY.HLP, "Glossary Help" , 46570
+ 3:EXPAND.EXE, "File Expansion Utility" , 15285
+ diskspace=1506946
+
+[win.dependents]
+pbrush = 4:PBRUSH.DLL
+recorder = 3:RECORDER.DLL
+wintutor = 4:WINTUTOR.DAT
+
+[win.games]
+ 4:SOL.EXE, "Solitaire" , 180688, sol
+ 4:WINMINE.EXE, "Minesweeper" , 27776, winmine
+ 5:SOL.HLP, "Solitaire Help" , 13753
+ 4:WINMINE.HLP, "Minesweeper Help" , 12754
+ diskspace=234971
+
+[win.scrs]
+ 4:SCRNSAVE.SCR, "Default Screen Saver" , 5328
+ 4:SSMARQUE.SCR, "Marquee Screen Saver" , 16896
+ 4:SSMYST.SCR, "Mystify Screen Saver" , 19456
+ 4:SSSTARS.SCR, "Stars Screen Saver" , 17536
+ 3:ssflywin.scr, "Flying Windows Screen Saver", 16160
+ diskspace=75376
+
+[win.bmps]
+ 4:256COLOR.BMP, "256-Color Wallpaper" , 5078
+ 6:ARCADE.BMP, "Arcade Wallpaper" , 630
+ 4:ARCHES.BMP, "Arches Wallpaper" , 10358
+ 3:ARGYLE.BMP, "Argyle Wallpaper" , 630
+ 3:CARS.BMP, "Cars Wallpaper" , 630
+ 6:CASTLE.BMP, "Castle Wallpaper" , 778
+ 5:CHITZ.BMP, "Chitz Wallpaper" , 19918
+ 5:EGYPT.BMP, "Egypt Wallpaper" , 630
+ 3:FLOCK.BMP, "Flock Wallpaper" , 1630
+ 4:HONEY.BMP, "Honey Wallpaper" , 854
+ 4:MARBLE.BMP, "Marble Wallpaper" , 27646
+ 4:RIVETS.BMP, "Rivets Wallpaper" , 630
+ 3:REDBRICK.BMP, "Red Brick Wallpaper" , 630
+ 6:SQUARES.BMP, "Squares Wallpaper" , 630
+ 4:TARTAN.BMP, "Tartan Wallpaper" , 32886
+ 4:THATCH.BMP, "Thatch Wallpaper" , 598
+ 4:WINLOGO.BMP, "Windows Logo Wallpaper" , 38518
+ 3:ZIGZAG.BMP, "Zigzag Wallpaper" , 630
+ 6:LEAVES.BMP, "Leaves Wallpaper" , 15118
+ 5:ding.wav, "Ding Sound" , 11598
+ 3:chord.wav, "Chord Sound" , 24982
+ 4:chimes.wav, "Chimes Sound" , 15920
+ 4:tada.wav, "Trumpet Sound" , 27804
+ 5:canyon.mid, "Canyon MIDI Song" , 33883
+ diskspace=272609
+
+[win.readme]
+ 3:readme.wri, "General Readme" , 92928, readme
+ 3:networks.wri, "Networks Readme" , 62336
+ 3:winini.wri, "Win.ini Readme" , 31104
+ 3:sysini.wri, "System.ini Readme" , 52864
+ 3:printers.wri, "Printers Readme" , 41984
+ 3:apps.hlp, "Application Compatibility Help", 15930
+ diskspace=297146
+
+; The [*.groups] sections maps a group section to the group name used in
+; Program Manager.
+;
+; Section Name = Progman group name, Min/Max switch. ( 1 = Max, nothing = Min).
+;
+; This section is used for upgrading from 3.X to 3.1.
+[new.groups]
+group7=Main,1
+group1=StartUp
+group2=Accessories
+group6=Games
+
+; This section is for new install.
+[progman.groups]
+group3=Main,1
+group4=Accessories
+group5=Games
+group1=StartUp
+
+; Progman DDE control section. This section controls the progman DDE and defines which
+; .exe's will be added to which groups. The [progman.groups] sections lists section
+; names that each describe the contents of that group.
+;
+; Description string, .EXE name, Icon extraction .EXE, Icon extraction index, profile
+;
+; If the profile field is left NULL, the item will always be added to the group. Otherwise
+; the item will only be added if it was installed via the partial install dlg.
+;
+;
+; NOTE: If EXE name is NULL item will be deleted from the group if it exists there.
+;
+
+[group3]
+"File Manager", WINFILE.EXE
+"Control Panel", CONTROL.EXE
+"Print Manager", PRINTMAN.EXE
+"Clipboard Viewer", CLIPBRD.EXE
+"MS-DOS Prompt", DOSPRMPT.PIF, PROGMAN.EXE, 9
+"Windows Setup", SETUP.EXE
+"PIF Editor", PIFEDIT.EXE
+"Read Me", README.WRI,,, readme
+
+[group4]
+"Write", WRITE.EXE
+"Paintbrush", PBRUSH.EXE,,, pbrush
+"Terminal", TERMINAL.EXE,,, terminal
+"Notepad", NOTEPAD.EXE,,, notepad
+"Recorder", RECORDER.EXE,,, recorder
+"Cardfile", CARDFILE.EXE,,, cardfile
+"Calendar", CALENDAR.EXE,,, calendar
+"Calculator", CALC.EXE,,, calc
+"Clock", CLOCK.EXE,,, clock
+"Object Packager", PACKAGER.EXE,,, packager
+"Character Map", CHARMAP.EXE,,, charmap
+"Media Player", MPLAYER.EXE,,, mplayer
+"Sound Recorder", SOUNDREC.EXE,,, soundrec
+
+[group5]
+"Solitaire", SOL.EXE,,, sol
+"Minesweeper", WINMINE.EXE,,, winmine
+
+[group1]
+"Dr. Watson"
+
+[group2]
+"Object Packager", PACKAGER.EXE,,, packager
+"Character Map", CHARMAP.EXE,,, charmap
+"Media Player", MPLAYER.EXE,,, mplayer
+"Sound Recorder", SOUNDREC.EXE,,, soundrec
+"PIF Editor"
+"Write", WRITE.EXE
+
+[group6]
+"Solitaire", SOL.EXE,,, sol
+"Minesweeper", WINMINE.EXE,,, winmine
+
+[group7]
+"PIF Editor", PIFEDIT.EXE
+"Read Me"
+"DOS Prompt"
+"MS-DOS Prompt", DOSPRMPT.PIF, PROGMAN.EXE, 9
+"Read Me", README.WRI,,, readme
+"Tutorial"
+
+[fonts]
+ 6:SSERIFB.FON, "MS Sans Serif 8,10,12,14,18,24 (EGA res)", "133,96,72"
+ 5:SSERIFE.FON, "MS Sans Serif 8,10,12,14,18,24 (VGA res)", "100,96,96"
+ 5:SSERIFF.FON, "MS Sans Serif 8,10,12,14,18,24 (8514/a res)", "100,120,120"
+
+ 6:COURB.FON, "Courier 8,10,12,15 (EGA res)", "133,96,72"
+ 6:COURE.FON, "Courier 10,12,15 (VGA res)", "100,96,96"
+ 6:COURF.FON, "Courier 10,12,15 (8514/a res)", "100,120,120"
+
+ 6:SERIFB.FON, "MS Serif 8,10,12,14,18,24 (EGA res)", "133,96,72"
+ 6:SERIFE.FON, "MS Serif 8,10,12,14,18,24 (VGA res)", "100,96,96"
+ 5:SERIFF.FON, "MS Serif 8,10,12,14,18,24 (8514/a res)", "100,120,120"
+
+ 6:ARIALB.FON, "Arial 8,10 (EGA res)", "133,96,72"
+ 6:TIMESB.FON, "Times New Roman 8,10 (EGA res)", "133,96,72"
+
+ 6:SYMBOLB.FON, "Symbol 8,10,12,14,18,24 (EGA res)", "133,96,72"
+ 6:SYMBOLE.FON, "Symbol 8,10,12,14,18,24 (VGA res)", "100,96,96"
+ 3:SYMBOLF.FON, "Symbol 8,10,12,14,18,24 (8514/a res)", "100,120,120"
+
+ 6:SMALLB.FON, "Small Fonts (EGA res)", "133,96,72"
+ 6:SMALLE.FON, "Small Fonts (VGA res)", "100,96,96"
+ 6:SMALLF.FON, "Small Fonts (8514/a res)", "100,120,120"
+
+ 6:ROMAN.FON, "Roman (Plotter)", "CONTINUOUSSCALING"
+ 6:SCRIPT.FON, "Script (Plotter)", "CONTINUOUSSCALING"
+ 6:MODERN.FON, "Modern (Plotter)", "CONTINUOUSSCALING"
+
+[ttfonts]
+;
+;Font Header file, Description string, Font file, FontFamily/Flags
+;
+; Flags: 0000 = Normal weighted font.
+; 0100 = Bolded font.
+; 1000 = Italic font.
+; NOTE: Flags not currently used.
+;
+; NOTE: The first letter of each word in the font desctiption string needs
+; to be capitalized.
+;
+6:ARIAL.FOT, "Arial (TrueType)", 6:arial.ttf, ""
+6:ARIALBD.FOT, "Arial Bold (TrueType)", 6:arialbd.ttf, "Arial0100"
+6:ARIALBI.FOT, "Arial Bold Italic (TrueType)", 6:arialbi.ttf, "Arial1100"
+6:ARIALI.FOT, "Arial Italic (TrueType)", 6:ariali.ttf, "Arial1000"
+6:COUR.FOT, "Courier New (TrueType)", 6:cour.ttf, ""
+6:COURBD.FOT, "Courier New Bold (TrueType)", 6:courbd.ttf, "Courier0100"
+6:COURBI.FOT, "Courier New Bold Italic (TrueType)", 6:courbi.ttf, "Courier1100"
+6:COURI.FOT, "Courier New Italic (TrueType)", 6:couri.ttf, "Courier1000"
+6:TIMES.FOT, "Times New Roman (TrueType)", 6:times.ttf, ""
+6:TIMESBD.FOT, "Times New Roman Bold (TrueType)", 6:timesbd.ttf, "Times New Roman0100"
+6:TIMESBI.FOT, "Times New Roman Bold Italic (TrueType)", 6:timesbi.ttf, "Times New Roman1100"
+6:TIMESI.FOT, "Times New Roman Italic (TrueType)", 6:timesi.ttf, "Times New Roman1000"
+6:SYMBOL.FOT, "Symbol (TrueType)", 6:symbol.ttf, ""
+6:WINGDING.FOT,"WingDings (TrueType)", 6:wingding.ttf,""
+
+; If any of these drivers are found in the config.sys file, Setup removes them.
+[compatibility]
+icache.sys
+ibmcache.sys
+cache.sys
+cache.exe
+mcache.sys
+fast512.sys
+
+; Known TSRs and drivers which may result in a hang or crash
+; during execution of Setup or Windows.
+;
+; filename = description string
+[incompTSR1]
+ep.exe = "Norton Desktop/Windows Erase Protect TSR"
+qmaps.sys = "QMAPS Memory Manager"
+qcache.exe = "386 Max Disk Cache Utility"
+cache.exe = "Disk Cache Utility"
+flash.exe = "Flash Disk Cache Utility"
+hyper386.exe= "Hyper Disk Cache Utility"
+hyperdkx.exe= "Hyper Disk Cache Utility"
+hyper286.exe= "Hyper Disk Cache Utility"
+hyperdke.exe= "Hyper Disk Cache Utility"
+hyperdkc.exe= "Hyper Disk Cache Utility"
+ncache.exe = "Norton Disk Cache Utility"
+pc-kwik.exe = "PC-Kwik Disk Cache Utility"
+pc-cache.com= "PC Tools Disk Cache Utility"
+superpck.exe= "Super PC-Kwik Disk Cache Utility"
+vdisk.sys = "IBM RAM Disk Utility"
+allemm4.sys="All Charge 386"
+anarkey.com="Anarkey"
+vsafe.sys = "Central Point Anti-Virus"
+vsafe.com = "Central Point Anti-Virus TSR"
+vdefend.sys="PC Tools VDefend"
+vdefend.com="PC Tools VDefend"
+kbflow.exe="KBFlow TSR by Artisoft"
+s-ice.exe="SoftIce"
+desktop.exe="PC Tools Desktop TSR"
+sk2.exe="Sidekick Version 2.0"
+sk.com="Sidekick Version 1.0"
+skplus.exe="Sidekick Plus"
+print.exe="MS-DOS PRINT Utility"
+pyro.exe="Pyro! Screen Saver"
+xgaaidos.sys="8514 emulation driver "
+asplogin.exe="ASP Integrity Toolkit"
+lsallow.exe="Lansight Network Utilities TSR"
+lansel.exe="Lansight Network Utilities TSR"
+vaccine.exe="Vaccine Antivirus Program"
+newspace.exe="Newspace Disk Compression Utility"
+newres.exe="Newspace Disk Compression Utility"
+tscsi.sys="Trantor T100 SCSI driver"
+pcpanel.exe="Lasertools Printer Control Panel"
+hpemm386.sys = "HP Expanded Memory Manager"
+hpemm486.sys = "HP Expanded Memory Manager"
+ramtype.sys = "Ramtype Utility"
+iemm.sys = "Memory Manager"
+ilim386.sys = "Intel Expanded Memory Emulator"
+cmdedit.com = "Command Line Editor"
+hpmm.sys = "HP Memory Manager"
+ced.exe = "PCED Command Line Editor"
+ced.com = "CED Command Line Editor"
+umbpro.sys = "UMB Pro Memory Manager"
+rm386.sys = "NetRoom Memory Manager"
+
+; Known TSRs and device drivers which can(!) potentially cause problems
+; if running during Setup or Windows
+;
+; filename = description string
+[incompTSR2]
+ndosedit.com = "Command Line Editor"
+doscue.com="DOSCUE Command Line Editor"
+datamon.exe="PC Tools Datamon"
+subst.exe="MS-DOS SUBST Utility"
+join.exe="MS-DOS JOIN Utility"
+viralert.sys="Data Physician Plus TSR"
+graphics.com="MS-DOS GRAPHICS Utility"
+le.com="Le Menu Menuing Package"
+assign.com="MS-DOS ASSIGN Utility"
+append.com="MS-DOS APPEND Utility"
+diskmon.exe="Norton Disk Monitoring TSR"
+dubldisk.sys="Double Disk Data Compression Utility"
+pa.exe = "Printer Assist"
+speedfxr.com = "Speedfxr"
+pcsxmaem.sys = "pcsxmaem Utility"
+xmaem.sys = "xmaem Utility"
+cubitr.exe = "Cubit"
+
+[block_devices]
+tscsi.sys
+tcscsi.sys
+atdosxl.sys
+dmdrvr.bin
+drdrive.sys
+
+[Installable.Drivers]
+; key = filename, type(s), description, VxD(s), Default Params
+msadlib = 3:msadlib.drv, "MIDI", "Ad Lib", 3:vadlibd.386,
+lapc1 = 4:mpu401.drv, "MIDI", "Roland LAPC1",,
+midimapper = 4:midimap.drv, "MidiMapper", "MIDI Mapper",,
+mpu401 = 4:mpu401.drv, "MIDI", "Roland MPU-401",,
+sequencer = 5:mciseq.drv, "Sequencer", "[MCI] MIDI Sequencer",,
+soundblaster = 3:sndblst.drv, "Wave,MIDI", "Creative Labs Sound Blaster 1.0", 3:vsbd.386,, msadlib
+soundblaster2 = 3:sndblst2.drv, "Wave,MIDI", "Creative Labs Sound Blaster 1.5", 3:vsbd.386,, msadlib
+timer = 3:timer.drv, "Timer", "Timer", 3:vtdapi.386,
+thunder = 3:sndblst2.drv, "Wave", "Media Vision Thunder Board", 3:vsbd.386,, msadlib
+wave = 6:mciwave.drv, "WaveAudio", "[MCI] Sound",, "4"
+cdaudio = 5:mcicda.drv, "CDAudio", "[MCI] CD Audio",,
+
+; This section translates Windows 3.0 OEMSETUP.INF entries to their 3.1
+; equivalents. The disk names should be the first entries in the list.
+
+[translate]
+WinDiskName=26,"Microsoft Windows 3.0 Disk"
+WinDiskName=14,"Windows Disk #"
+*vddvga=1:vddvga30.386
+cti.lgo=2:herclogo.lgo
+herclogo.rle=2:herclogo.rle
+vddega=2:vddega.386
+vgacolor.gr2=1:vgacolor.2gr
+vgalogo.lgo=2:vgalogo.lgo
+vgalogo.rle=3:vgalogo.rle
+rgdi.lgo=2:vgalogo.lgo
+rgdi.rle=3:vgalogo.rle
+vga.gr3=3:vga30.3gr
+v7vga.gr3=2:v7vga.3gr
+cga40woa.fon=2:cga40woa.fon
+cga40850.fon=2:cga40850.fon
+cga80woa.fon=2:cga80woa.fon
+cga80850.fon=2:cga80850.fon
+ega40woa.fon=2:ega40woa.fon
+ega40850.fon=2:ega40850.fon
+ega80woa.fon=2:ega80woa.fon
+ega80850.fon=2:ega80850.fon
+vgasys.fon=2:vgasys.fon
+vgafix.fon=2:vgafix.fon
+vgaoem.fon=2:vgaoem.fon
+8514sys.fon=2:8514sys.fon
+8514fix.fon=2:8514fix.fon
+8514oem.fon=2:8514oem.fon
+helvb.fon=6:sserifb.fon
+helve.fon=5:sserife.fon
+helvf.fon=5:sseriff.fon
+courb.fon=6:courb.fon
+coure.fon=6:coure.fon
+courf.fon=6:courf.fon
+tmsrb.fon=6:serifb.fon
+tmsre.fon=6:serife.fon
+tmsrf.fon=5:seriff.fon
+symbolb.fon=6:symbolb.fon
+symbole.fon=6:symbole.fon
+symbolf.fon=3:symbolf.fon
+roman.fon=6:roman.fon
+script.fon=6:script.fon
+modern.fon=6:modern.fon
+kbdbe.dll=2:kbdbe.dll
+kbduk.dll=2:kbduk.dll
+kbdda.dll=2:kbdda.dll
+kbdne.dll=2:kbdne.dll
+kbdfi.dll=2:kbdfi.dll
+kbdfr.dll=2:kbdfr.dll
+kbdca.dll=2:kbdca.dll
+kbdgr.dll=2:kbdgr.dll
+kbdic.dll=2:kbdic.dll
+kbdit.dll=2:kbdit.dll
+kbdla.dll=2:kbdla.dll
+kbdno.dll=2:kbdno.dll
+kbdpo.dll=2:kbdpo.dll
+kbdsp.dll=3:kbdsp.dll
+kbdsw.dll=3:kbdsw.dll
+kbdsf.dll=2:kbdsf.dll
+kbdsg.dll=2:kbdsg.dll
+kbdus.dll=3:kbdus.dll
+kbddv.dll=3:kbddv.dll
+kbdusx.dll=2:kbdusx.dll
+xlat863.bin=1:xlat863.bin
+xlat861.bin=2:xlat861.bin
+xlat865.bin=3:xlat865.bin
+xlat850.bin=1:xlat850.bin
+xlat860.bin=2:xlat860.bin
+vga863.fon=3:vga863.fon
+vga861.fon=2:vga861.fon
+vga865.fon=3:vga865.fon
+vga850.fon=2:vga850.fon
+vga860.fon=2:vga860.fon
+win.cnf=2:win.cnf
+
+; Used to update files that already exist on the disk
+;
+[Update.Files]
+0:system,3:sndblst.drv
+0:system,3:sndblst2.drv
+0:system,4:mpu401.drv
+0:system,3:msadlib.drv
+0:system,3:vtdapi.386
+0:system,3:vsbd.386
+0:system,3:vadlibd.386
+0:system,5:mcicda.drv
+
+; Used to update dependents of files in the [Update.Files] section.
+;
+[Update.Dependents]
+msadlib.drv = 3:vadlibd.386
+sndblst.drv = 3:vsbd.386
+sndblst2.drv = 3:vsbd.386
+
+; This section is processed by both the DOS and WINDOWS portions of setup
+; for temporarily renaming profile strings during setup. THE RENAME
+; OPERATION WILL ONLY TAKE PLACE IF THE ORIGINAL PROFILE STRING EXISTS AND HAS
+; A RIGHT HAND SIDE STRING.
+;
+; .ini file, section name, temporary profile name, Original profile name.
+;
+[ini.upd.patches]
+ system.ini, Boot, "olddrivers" ,"drivers"
+ win.ini , Desktop, "oldwallpaper" ,"wallpaper"
+ system.ini, Boot, "oldtaskman" ,"taskman.exe"
+ system.ini, Boot, "oldshell" ,"shell"
+
+; Used by the windows half to shrink the memory needed to hold this pig.
+;
+[blowaway]
+ this line needed
+
+[ini.upd.31]
+;
+; WARNING: This section only works on win.ini or system.ini !!
+;
+; .ini file, section, old line to be replaced, new line, rename operater.
+;
+; If the "old line to be replaced" field is empty, setup will assume that
+; the new line is to be added. The rename operater tells setup to retain the RHS
+; of the profile. This is used as a renaming mechanism during upgrades.
+; Nb : Simple string substitution is implemented :
+; ?P means any valid MS-DOS path
+;
+ system.ini, Boot, , "taskman.exe="
+ system.ini, mci, "waveaudio=" , "WaveAudio=mciwave.drv"
+ system.ini, mci, "sequencer=" , "Sequencer=mciseq.drv"
+ system.ini, mci, "cdaudio=" , "CDAudio=mcicda.drv"
+ system.ini, drivers, , "timer=timer.drv"
+ system.ini, drivers, "midimapper=" , "midimapper=midimap.drv"
+ system.ini, drivers, "midi=adlib.drv" , "midi=msadlib.drv" ,rename
+ system.ini, drivers, "midi1=adlib.drv" , "midi1=msadlib.drv" ,rename
+ system.ini, drivers, "midi2=adlib.drv" , "midi2=msadlib.drv" ,rename
+ system.ini, drivers, "midi3=adlib.drv" , "midi3=msadlib.drv" ,rename
+ system.ini, drivers, "midi4=adlib.drv" , "midi4=msadlib.drv" ,rename
+ system.ini, 386Enh, "keyboard=?Pbpvkd.386",
+ system.ini, 386Enh, "keyboard=" , "keyboard=*vkd" ,noclobber
+ system.ini, 386Enh, "device=vpicda.386", "device=*vpicd"
+ system.ini, 386Enh, "device=*vhd" , "device=*blockdev"
+ system.ini, 386Enh, "device=*vpd" ,
+ system.ini, 386Enh, "device=vdmad.386" , "device=*vdmad"
+ system.ini, 386Enh, "device=vdmadx.386", "device=*vdmad"
+ system.ini, 386Enh, , "device=*pagefile"
+ system.ini, 386Enh, "device=?Pvtdapi.386" , "device=vtdapi.386"
+ system.ini, NonWindowsApp,"localtsrs=" , "localtsrs=dosedit,ced" ,noclobber
+ win.ini , Sounds, "SystemDefault=" , "SystemDefault=ding.wav, Default Beep" ,noclobber
+ win.ini , Sounds, "SystemExclamation=" , "SystemExclamation=chord.wav, Exclamation" ,noclobber
+ win.ini , Sounds, "SystemStart=" , "SystemStart=tada.wav, Windows Start" ,noclobber
+ win.ini , Sounds, "SystemExit=" , "SystemExit=chimes.wav, Windows Exit" ,noclobber
+ win.ini , Sounds, "SystemHand=" , "SystemHand=chord.wav, Critical Stop" ,noclobber
+ win.ini , Sounds, "SystemQuestion=" , "SystemQuestion=chord.wav, Question" ,noclobber
+ win.ini , Sounds, "SystemAsterisk=" , "SystemAsterisk=chord.wav, Asterisk" ,noclobber
+ win.ini , "mci extensions", , "wav=waveaudio"
+ win.ini , "mci extensions", , "mid=sequencer"
+ win.ini , "mci extensions", , "rmi=sequencer"
+ win.ini , FontSubstitutes, , "Helv=MS Sans Serif"
+ win.ini , FontSubstitutes, , "Tms Rmn=MS Serif"
+ win.ini , FontSubstitutes, "Courier=Courier New" ,
+ win.ini , FontSubstitutes, , "Times=Times New Roman"
+ win.ini , FontSubstitutes, , "Helvetica=Arial"
+ win.ini , "Microsoft Word 2.0", "HPDSKJET=" , "HPDSKJET=+1" ,noclobber
+ ;
+ ; Remove these Win 3.0 font entries from win.ini because they have either
+ ; been replaced or removed for Win 3.1
+ ;
+ win.ini, Fonts, "Helv 8,10,12,14,18,24 (CGA res)="
+ win.ini, Fonts, "Helv 8,10,12,14,18,24 (EGA res)="
+ win.ini, Fonts, "Helv 8,10,12,14,18,24 (60 dpi)="
+ win.ini, Fonts, "Helv 8,10,12,14,18,24 (120 dpi)="
+ win.ini, Fonts, "Helv 8,10,12,14,18,24 (VGA res)="
+ win.ini, Fonts, "Helv 8,10,12,14,18,24 (8514/a res)="
+ win.ini, Fonts, "Tms Rmn 8,10,12,14,18,24 (CGA res)="
+ win.ini, Fonts, "Tms Rmn 8,10,12,14,18,24 (EGA res)="
+ win.ini, Fonts, "Tms Rmn 8,10,12,14,18,24 (60 dpi)="
+ win.ini, Fonts, "Tms Rmn 8,10,12,14,18,24 (120 dpi)="
+ win.ini, Fonts, "Tms Rmn 8,10,12,14,18,24 (VGA res)="
+ win.ini, Fonts, "Tms Rmn 8,10,12,14,18,24 (8514/a res)="
+ ;
+ ; Remove these font entries if they exist because these .ini entries
+ ; are obsolete. We use "TrueType" rather than "Scalable"
+ ;
+ win.ini, Fonts, "Arial (Scalable)="
+ win.ini, Fonts, "Arial Bold (Scalable)="
+ win.ini, Fonts, "Arial Bold Italic (Scalable)="
+ win.ini, Fonts, "Arial Italic (Scalable)="
+ win.ini, Fonts, "Courier (Scalable)="
+ win.ini, Fonts, "Courier Bold (Scalable)="
+ win.ini, Fonts, "Courier Italic (Scalable)="
+ win.ini, Fonts, "Courier Bold Italic (Scalable)="
+ win.ini, Fonts, "Courier (TrueType)"
+ win.ini, Fonts, "Courier Bold (TrueType)"
+ win.ini, Fonts, "Courier Bold Italic (TrueType)"
+ win.ini, Fonts, "Courier Italic (TrueType)"
+ win.ini, Fonts, "Times New Roman (Scalable)="
+ win.ini, Fonts, "Times New Roman Bold (Scalable)="
+ win.ini, Fonts, "Times New Roman Bold Italic (Scalable)="
+ win.ini, Fonts, "Times New Roman Italic (Scalable)="
+ win.ini, Fonts, "Symbol PS (Scalable)="
+ win.ini, Fonts, "Symbol (Scalable)="
+ ;
+ ; Remove these font entries if they exist because these .ini entries
+ ; are obsolete. We use "Plotter" rather than "All res" Also, 8 point was
+ ; added to the EGA res courier so we remove the old "Courier 10,12,15" font.
+ ;
+ win.ini, Fonts, "Roman (All res)="
+ win.ini, Fonts, "Script (All res)="
+ win.ini, Fonts, "Modern (All res)="
+ win.ini, Fonts, "Courier 10,12,15 (EGA res)="
+ ;
+ ; The following lines will cause the MS-DOS half of setup to effectivly
+ ; rename the [Fonts] section in win.ini. Setup does this by adding the
+ ; [wt4gpi8s56bz] string to the [Fonts] section and then deleting the
+ ; [Fonts] section string. Later, in the windows half of setup, it will
+ ; rename [wt4gpi8s56bz] back to [Fonts]. Do not change these names!
+ ;
+ win.ini, Fonts, , "[wt4gpi8s56bz]"
+ win.ini, Fonts, "[Fonts]" ,
+
+ ; The following line makes USER skip persistent net connections
+ ; USER immediately deletes the entry so it is a onetime thing.
+ win.ini, windows,, "SetupWin=1"
+
+ ; The following lines fix problems with APPS
+ win.ini, Compatibility,"NOTSHELL=", "NOTSHELL=0x0001"
+ win.ini, Compatibility,"WPWINFIL=", "WPWINFIL=0x0006"
+ win.ini, Compatibility,"CCMAIL=", "CCMAIL=0x0008"
+ win.ini, Compatibility,"AMIPRO=", "AMIPRO=0x0010"
+ win.ini, Compatibility,"REM=", "REM=0x8022"
+ win.ini, Compatibility,"PIXIE=", "PIXIE=0x0040"
+ win.ini, Compatibility,"CP=", "CP=0x0040"
+ win.ini, Compatibility,"JW=", "JW=0x42080"
+ win.ini, Compatibility,"TME=", "TME=0x0100"
+ win.ini, Compatibility,"VB=", "VB=0x0200"
+ win.ini, Compatibility,"WIN2WRS=", "WIN2WRS=0x1210"
+ win.ini, Compatibility,"PACKRAT=", "PACKRAT=0x0800"
+ win.ini, Compatibility,"VISION=", "VISION=0x0040"
+ win.ini, Compatibility,"MCOURIER=", "MCOURIER=0x0800"
+ win.ini, Compatibility,"_BNOTES=", "_BNOTES=0x24000"
+ win.ini, Compatibility,"MILESV3=", "MILESV3=0x1000"
+ win.ini, Compatibility,"PM4=", "PM4=0x2000"
+ win.ini, Compatibility,"DESIGNER=", "DESIGNER=0x2000"
+ win.ini, Compatibility,"PLANNER=", "PLANNER=0x2000"
+ win.ini, Compatibility,"DRAW=", "DRAW=0x2000"
+ win.ini, Compatibility,"WINSIM=", "WINSIM=0x2000"
+ win.ini, Compatibility,"CHARISMA=", "CHARISMA=0x2000"
+ win.ini, Compatibility,"PR2=", "PR2=0x2000"
+ win.ini, Compatibility,"PLUS=", "PLUS=0x1000"
+ win.ini, Compatibility,"ED=", "ED=0x00010000"
+ win.ini, Compatibility,"PP=",
+ win.ini, Compatibility,"APORIA=", "APORIA=0x0100"
+ win.ini, Compatibility,"EXCEL=", "EXCEL=0x1000"
+ win.ini, Compatibility,"GUIDE=", "GUIDE=0x1000"
+ win.ini, Compatibility,"NETSET2=", "NETSET2=0x0100"
+ win.ini, Compatibility,"W4GL=", "W4GL=0x4000"
+ win.ini, Compatibility,"W4GLR=","W4GLR=0x4000"
+ win.ini, Compatibility,"TURBOTAX=","TURBOTAX=0x00080000"
+
+[system]
+; The various SYSTEM.DRV, SOUND.DRV, COMM.DRV
+;
+; These are the drivers which may vary from system to system,
+; but are selected only by the [machine] menu -- they do not have
+; special menus for their selection.
+system = 2:system.drv
+sound = 2:mmsound.drv
+comm = 2:comm.drv
+hpsystem = 2:hpsystem.drv
+
+[machine]
+; This section defines default machine selections. The system
+; description from each entry will appear in the initial machine
+; selection menu of Setup.
+;
+; An * means that setup will use the device specified here and override
+; the detected device, this applies to keyboards, mice, and displays.
+;
+; Each entry contains a descriptive line for the system-selection menu,
+; followed by the filenames of the drivers in fixed order.
+;
+; Field 1 2 3 4 5 6 7 8 9 10 11
+; prof_str = Desc Str, System drv, kbd drv, kbd type, mouse drv, disp drv, sound drv, comm drv, himem switch, ebios, cookies
+;
+ibm_compatible = "MS-DOS System",system,kbd,t4s0enha,nomouse,egahires,sound,comm,,ebios,
+ast_386_486 = "AST Premium 386/25 and 386/33 (CUPID)",system,kbd,t4s0enha,nomouse,egahires,sound,comm,,ebios,ast_cookz
+at_and_t = "AT&T PC",system,kbd,t4s0enha,nomouse,!olibw,sound,comm,,ebios,
+everex_386_25 = "Everex Step 386/25 (or Compatible)",system,kbd,t4s0enha,nomouse,egahires,sound,comm,,ebios,everex_cookz
+hewlett_packard = "Hewlett-Packard: all machines",hpsystem,kbdhp,t4s0enha,nomouse,egahires,sound,comm,,hpebios,
+ibm_ps2_70p = "IBM PS/2 Model P70",system,kbd,t4s0enha,nomouse,!vga,sound,comm,,ebios,
+ibm_ps2_l40sx = "IBM PS/2 Model L40sx",system,kbd,!t4s0enha,nomouse,vga,sound,comm,,ebios,ibml40_cookz
+ncr_386sx = "NCR: all 80386 and 80486 based machines",system,kbd,t4s0enha,nomouse,egahires,sound,comm,,ebios,ncr386sx_cookz
+nec_pm_sx+ = "NEC PowerMate SX Plus",system,kbd,t4s0enha,nomouse,egahires,sound,comm,,ebios,nec_pm_cookz
+nec_prospeed = "NEC ProSpeed 386",system,kbd,t4s0enha,nomouse,!egahires,sound,comm,,ebios,
+toshiba_1200xe = "Toshiba 1200XE",system,kbd,t4s0enha,nomouse,egahires,sound,comm,"TOSHIBA",ebios,
+toshiba_1600 = "Toshiba 1600",system,kbd,t4s0enha,nomouse,egahires,sound,comm,"TOSHIBA",ebios,
+toshiba_5200 = "Toshiba 5200",system,kbd,t4s0enha,nomouse,egahires,sound,comm,,ebios,t5200_cookz
+zenith_386 = "Zenith: all 80386 based machines",system,kbd,t4s0enha,nomouse,egahires,sound,comm,,ebios,zen386_cookz
+att_nsx_20 = "AT&T NSX 20 : Safari notebook",system,kbd,t4s0enha,nomouse,egahires,sound,comm,,ebios
+apm = "MS-DOS System with APM",system,kbd,t4s0enha,nomouse,egahires,sound,comm,,ebios,apm_cookz
+apm_sl = "Intel 386SL Based System with APM",system,kbd,t4s0enha,nomouse,egahires,sound,comm,,ebios,apm_sl_cookz
+;
+; Cookies as specified in machine section
+;
+; ini file, section, cookie, needed file
+;
+; specialdriver,,,file will add an installable driver to [boot]drivers=
+;
+
+[apm_cookz]
+specialdriver,,,3:power.drv
+system.ini,386enh,"device=vpowerd.386",3:vpowerd.386
+,,,2:power.hlp
+
+[apm_sl_cookz]
+specialdriver,,,3:power.drv
+system.ini,386enh,"device=vpowerd.386",3:vpowerd.386
+,,,2:power.hlp
+system.ini,power.drv,"OptionsDLL=sl.dll",2:sl.dll
+,,,2:sl.hlp
+
+[ast_cookz]
+system.ini,386enh,"emmexclude=E000-EFFF",
+
+[everex_cookz]
+system.ini,386enh,"8042ReadCmd=A2,1,F",
+system.ini,386enh,"8042ReadCmd=A3,1,F",
+system.ini,386enh,"8042WriteCmd=B3,8,F",
+
+[ibml40_cookz]
+system.ini,386enh,"emmexclude=E000-EFFF",
+system.ini,386enh,"DMAbuffersize=64"
+
+
+[ncr386sx_cookz]
+system.ini,386enh,"emmexclude=E000-EFFF",
+system.ini,386enh,"emmexclude=C600-C7FF",
+
+[nec_pm_cookz]
+system.ini,386enh,"VirtualHDirq=NO",
+
+[t5200_cookz]
+system.ini,386enh,"emmexclude=C000-C7FF",
+
+[zen386_cookz]
+system.ini,386enh,"emmexclude=E000-EFFF",
+
+[special_adapter]
+eitherlink = DMAbuffersize,32 ; Needed if EitherLink MC is detected.
+cdrom = 2:lanman10.386 ; Needed for CD Rom extensions.
+
+[ebios]
+ebios = x:*ebios ; Required for most 386 machines.
+hpebios = 3:hpebios.386,x:*ebios ; Required for HP 386 machines.
+
+;
+; Language DLL must be installed for non US installation.
+;
+; profile = language DLL, DLL description, language ID (ilanguage)
+;
+[language]
+dan = 2:langsca.dll, "Danish" ,1030
+nld = 2:langdut.dll, "Dutch" ,1043
+enu = , "English (American)" ,1033
+eng = 2:langeng.dll, "English (International)" ,2057
+fin = 2:langsca.dll, "Finnish" ,1035
+fra = 3:langfrn.dll, "French" ,1036
+frc = 2:langeng.dll, "French Canadian" ,3084
+deu = 2:langger.dll, "German" ,1031
+isl = 2:langsca.dll, "Icelandic" ,1039
+ita = 2:langeng.dll, "Italian" ,1040
+nor = 2:langsca.dll, "Norwegian" ,1044
+ptg = 2:langeng.dll, "Portuguese" ,2070
+esp = 2:langspa.dll, "Spanish" ,1034
+esn = 2:langeng.dll, "Spanish (Modern)" ,3082
+sve = 2:langsca.dll, "Swedish" ,1053
diff --git a/public/oak/bin/setup16p.hiv b/public/oak/bin/setup16p.hiv
new file mode 100644
index 000000000..d752f959f
--- /dev/null
+++ b/public/oak/bin/setup16p.hiv
Binary files differ
diff --git a/public/oak/bin/setup16p.hiv.log b/public/oak/bin/setup16p.hiv.log
new file mode 100644
index 000000000..219bde9c1
--- /dev/null
+++ b/public/oak/bin/setup16p.hiv.log
Binary files differ
diff --git a/public/oak/bin/setup16p.log b/public/oak/bin/setup16p.log
new file mode 100644
index 000000000..50415cb77
--- /dev/null
+++ b/public/oak/bin/setup16p.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x00000000 0x00000000 0x00000010
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/setup2p.hiv b/public/oak/bin/setup2p.hiv
new file mode 100644
index 000000000..4120ba949
--- /dev/null
+++ b/public/oak/bin/setup2p.hiv
Binary files differ
diff --git a/public/oak/bin/setup2p.hiv.log b/public/oak/bin/setup2p.hiv.log
new file mode 100644
index 000000000..5b9ba5b24
--- /dev/null
+++ b/public/oak/bin/setup2p.hiv.log
Binary files differ
diff --git a/public/oak/bin/setup2p.log b/public/oak/bin/setup2p.log
new file mode 100644
index 000000000..3669a3a04
--- /dev/null
+++ b/public/oak/bin/setup2p.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x00000000 0x00000000 0x00000002
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/setup32p.hiv b/public/oak/bin/setup32p.hiv
new file mode 100644
index 000000000..0629854a7
--- /dev/null
+++ b/public/oak/bin/setup32p.hiv
Binary files differ
diff --git a/public/oak/bin/setup32p.hiv.log b/public/oak/bin/setup32p.hiv.log
new file mode 100644
index 000000000..788be69e3
--- /dev/null
+++ b/public/oak/bin/setup32p.hiv.log
Binary files differ
diff --git a/public/oak/bin/setup32p.log b/public/oak/bin/setup32p.log
new file mode 100644
index 000000000..92da1ac58
--- /dev/null
+++ b/public/oak/bin/setup32p.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x00000000 0x00000000 0x00000020
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/setup4p.hiv b/public/oak/bin/setup4p.hiv
new file mode 100644
index 000000000..5d6a7ffa0
--- /dev/null
+++ b/public/oak/bin/setup4p.hiv
Binary files differ
diff --git a/public/oak/bin/setup4p.hiv.log b/public/oak/bin/setup4p.hiv.log
new file mode 100644
index 000000000..9f5e5ecde
--- /dev/null
+++ b/public/oak/bin/setup4p.hiv.log
Binary files differ
diff --git a/public/oak/bin/setup4p.log b/public/oak/bin/setup4p.log
new file mode 100644
index 000000000..0da1d9433
--- /dev/null
+++ b/public/oak/bin/setup4p.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x00000000 0x00000000 0x00000004
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/setup8p.hiv b/public/oak/bin/setup8p.hiv
new file mode 100644
index 000000000..d56b248e9
--- /dev/null
+++ b/public/oak/bin/setup8p.hiv
Binary files differ
diff --git a/public/oak/bin/setup8p.hiv.log b/public/oak/bin/setup8p.hiv.log
new file mode 100644
index 000000000..00177178e
--- /dev/null
+++ b/public/oak/bin/setup8p.hiv.log
Binary files differ
diff --git a/public/oak/bin/setup8p.log b/public/oak/bin/setup8p.log
new file mode 100644
index 000000000..ebcf494a9
--- /dev/null
+++ b/public/oak/bin/setup8p.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x00000000 0x00000000 0x00000008
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/setupp.ini b/public/oak/bin/setupp.ini
new file mode 100644
index 000000000..7f8e8d094
--- /dev/null
+++ b/public/oak/bin/setupp.ini
@@ -0,0 +1,2 @@
+[Pid]
+Pid = "00000270"
diff --git a/public/oak/bin/setupreg.hiv b/public/oak/bin/setupreg.hiv
new file mode 100644
index 000000000..1f7a27182
--- /dev/null
+++ b/public/oak/bin/setupreg.hiv
Binary files differ
diff --git a/public/oak/bin/setupreg.hiv.log b/public/oak/bin/setupreg.hiv.log
new file mode 100644
index 000000000..9127ec9dd
--- /dev/null
+++ b/public/oak/bin/setupreg.hiv.log
Binary files differ
diff --git a/public/oak/bin/setupreg.ini b/public/oak/bin/setupreg.ini
new file mode 100644
index 000000000..73fd40ef1
--- /dev/null
+++ b/public/oak/bin/setupreg.ini
@@ -0,0 +1,203 @@
+//
+// SKU differentiations
+//
+#ifdef _STEPUP_
+#define STEPUP 1
+#else
+#define STEPUP 0
+#endif
+#ifndef EVALTIME
+#define EVALTIME 0
+#endif
+
+//
+// RESTRICT_CPU is used to build protucts this place
+// a very hard limit on the number of processors
+//
+// a value of 0 means for NTW, the hard limit is 2, and for NTS, the hard limit is 4
+// a value of 1-32 means that the hard limit is the number specified
+// a value > 32 means that the hard limit is 32 processors and GUI setup operates
+// on registered processors as it does today
+//
+
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 8 0 0
+ Isa = REG_BINARY 8 1 0
+ Eisa = REG_BINARY 8 2 1
+ MCA = REG_BINARY 8 3 1
+ TurboChannel = REG_BINARY 8 4 0
+ PCI = REG_BINARY 8 5 1
+ VME = REG_BINARY 8 6 0
+ NuBus = REG_BINARY 8 7 0
+ PCMCIA = REG_BINARY 8 8 1
+ CBus = REG_BINARY 8 9 0
+ MPI = REG_BINARY 8 10 0
+ MPSA = REG_BINARY 8 11 0
+
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x0274 \
+ 1 1 1 0 38 \
+ 0x0101 0x0000 0 0x0100 \
+ 0x0301 0x42E8 0 0x2 \
+ 0x0301 0x4AE8 0 0x2 \
+ 0x0301 0x82E8 0 0x4 \
+ 0x0301 0x86E8 0 0x4 \
+ 0x0301 0x8AE8 0 0x4 \
+ 0x0301 0x8EE8 0 0x4 \
+ 0x0301 0x92E8 0 0x4 \
+ 0x0301 0x96E8 0 0x4 \
+ 0x0301 0x9AE8 0 0x4 \
+ 0x0301 0x9EE8 0 0x4 \
+ 0x0301 0xA2E8 0 0x4 \
+ 0x0301 0xA6E8 0 0x4 \
+ 0x0301 0xAAE8 0 0x4 \
+ 0x0301 0xAEE8 0 0x4 \
+ 0x0301 0xB6E8 0 0x4 \
+ 0x0301 0xBAE8 0 0x4 \
+ 0x0301 0xBEE8 0 0x4 \
+ 0x0301 0xC2E8 0 0x4 \
+ 0x0301 0xC6E8 0 0x4 \
+ 0x0301 0xCAE8 0 0x4 \
+ 0x0301 0xCEE8 0 0x4 \
+ 0x0301 0xD2E8 0 0x4 \
+ 0x0301 0xD6E8 0 0x4 \
+ 0x0301 0xDAE8 0 0x4 \
+ 0x0301 0xDEE8 0 0x4 \
+ 0x0301 0xE2E8 0 0x4 \
+ 0x0301 0xE6E8 0 0x4 \
+ 0x0301 0xEAE8 0 0x4 \
+ 0x0301 0xEEE8 0 0x4 \
+ 0x0301 0xF000 0 0x1000 \
+ 0x0302 0x03 0x03 0xffffffff \
+ 0x0302 0x04 0x04 0xffffffff \
+ 0x0302 0x0E 0x0E 0xffffffff \
+ 0x0302 0x06 0x06 0xffffffff \
+ 0x0302 0x0C 0x0C 0xffffffff \
+ 0x0302 0x01 0x01 0xffffffff \
+ 0x0303 0xEFFFFFFF 0 0x10000000
+
+ Eisa = REG_RESOURCE_LIST 0x0124 \
+ 1 2 1 0 0x11 \
+ 0x0301 0x0400 0 0x100 \
+ 0x0301 0xFC00 0 0x400 \
+ 0x0301 0xEC00 0 0x400 \
+ 0x0301 0xDC00 0 0x400 \
+ 0x0301 0xCC00 0 0x400 \
+ 0x0301 0xBC00 0 0x400 \
+ 0x0301 0xAC00 0 0x400 \
+ 0x0301 0x9C00 0 0x400 \
+ 0x0301 0x8C00 0 0x400 \
+ 0x0301 0x7C00 0 0x400 \
+ 0x0301 0x6C00 0 0x400 \
+ 0x0301 0x5C00 0 0x400 \
+ 0x0301 0x4C00 0 0x400 \
+ 0x0301 0x3C00 0 0x400 \
+ 0x0301 0x2C00 0 0x400 \
+ 0x0301 0x1C00 0 0x400 \
+ 0x0301 0x0C00 0 0x400
+
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+
+ PCFlat = REG_RESOURCE_REQUIREMENTS 0x000004A8 \
+ 0x000004A8 0 0 0 0 0 0 1 0x00010001 0x00000024 \
+ 0x0100 0 0 0 0x0500 0 0xFFFF 0 \
+ \
+ 0x0108 0 0 0 0x0140 0 0x017F 0 \
+ 0x0108 0 0 0 0x0200 0 0x02FF 0 \
+ 0x0108 0 0 0 0x0300 0 0x036F 0 \
+ \
+ 0x0108 0 0 0 0x0378 0 0x037A 0 \
+ 0x0108 0 0 0 0x02E8 0 0x02FF 0 \
+ 0x0108 0 0 0 0x01F0 0 0x01F8 0 \
+ 0x0108 0 0 0 0x03B0 0 0x03CF 0 \
+ 0x0108 0 0 0 0x03E8 0 0x03FF 0 \
+ 0x0108 0 0 0 0x01CE 0 0x01CF 0 \
+ 0x0108 0 0 0 0x0100 0 0x03FF 0 \
+ \
+ 0x0200 0 0x0F 0x0F 0 0 0 0 \
+ 0x0208 0 0x0D 0x0D 0 0 0 0 \
+ 0x0208 0 0x0C 0x0C 0 0 0 0 \
+ 0x0208 0 0x09 0x09 0 0 0 0 \
+ 0x0208 0 0x08 0x08 0 0 0 0 \
+ 0x0208 0 0x07 0x07 0 0 0 0 \
+ 0x0208 0 0x0B 0x0B 0 0 0 0 \
+ 0x0208 0 0x0A 0x0A 0 0 0 0 \
+ 0x0208 0 0x02 0x02 0 0 0 0 \
+ 0x0208 0 0x05 0x05 0 0 0 0 \
+ 0x0208 0 0x03 0x03 0 0 0 0 \
+ 0x0208 0 0x04 0x04 0 0 0 0 \
+ 0x0208 0 0x0E 0x0E 0 0 0 0 \
+ 0x0208 0 0x06 0x06 0 0 0 0 \
+ 0x0208 0 0x0C 0x0C 0 0 0 0 \
+ 0x0208 0 0x01 0x01 0 0 0 0 \
+ 0x0208 0 0x00 0x0F 0 0 0 0 \
+ \
+ 0x0300 0 0 0 0x00100000 0 0xFFFFFFFF 0 \
+ 0x0308 0 0 0 0x000F0000 0 0x000FFFFF 0 \
+ 0x0308 0 0 0 0x00080000 0 0x000BFFFF 0 \
+ 0x0308 0 0 0 0x00080000 0 0x000FFFFF 0 \
+ 0x0308 0 0 0 0x00080000 0 0xFFBFFFFF 0 \
+ \
+ 0x0400 0 0x06 0x0F 0 0 0 0 \
+ 0x0408 0 0x03 0x04 0 0 0 0 \
+ 0x0408 0 0x00 0x0F 0 0 0 0
+
+ PCI = REG_RESOURCE_REQUIREMENTS 0x00000128 \
+ 0x00000128 0 0 0 0 0 0 1 0x00010001 0x00000008 \
+ 0x0100 0 0 0 0x0500 0 0xFFFF 0 \
+ \
+ 0x0200 0 0x00 0xFF 0 0 0 0 \
+ \
+ 0x0300 0 0 0 0x00100000 0 0xFFFFFFFF 0 \
+ 0x0308 0 0 0 0x000F0000 0 0x000FFFFF 0 \
+ 0x0308 0 0 0 0x00080000 0 0x000BFFFF 0 \
+ 0x0308 0 0 0 0x00080000 0 0x000FFFFF 0 \
+ 0x0308 0 0 0 0x00080000 0 0xFFBFFFFF 0 \
+ \
+ 0x0400 0 0x06 0xFF 0 0 0 0
+ Services
+ setupdd
+ //
+ // Do NOT change the unnamed value without also changing
+ // SpReadSKUStuff() in text mode setup (spconfig.c)
+ //
+ = REG_BINARY 12 EVALTIME STEPUP RESTRICT_CPU
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0
+
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/setupreg.log b/public/oak/bin/setupreg.log
new file mode 100644
index 000000000..ff3543517
--- /dev/null
+++ b/public/oak/bin/setupreg.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x00000000 0x00000000 0x00000000
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/setupret.hiv b/public/oak/bin/setupret.hiv
new file mode 100644
index 000000000..99fa119cc
--- /dev/null
+++ b/public/oak/bin/setupret.hiv
Binary files differ
diff --git a/public/oak/bin/setupret.hiv.log b/public/oak/bin/setupret.hiv.log
new file mode 100644
index 000000000..49e4189f3
--- /dev/null
+++ b/public/oak/bin/setupret.hiv.log
Binary files differ
diff --git a/public/oak/bin/setupret.log b/public/oak/bin/setupret.log
new file mode 100644
index 000000000..ff3543517
--- /dev/null
+++ b/public/oak/bin/setupret.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x00000000 0x00000000 0x00000000
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/setupupg.hiv b/public/oak/bin/setupupg.hiv
new file mode 100644
index 000000000..c7b6967a6
--- /dev/null
+++ b/public/oak/bin/setupupg.hiv
Binary files differ
diff --git a/public/oak/bin/setupupg.hiv.log b/public/oak/bin/setupupg.hiv.log
new file mode 100644
index 000000000..6508e369f
--- /dev/null
+++ b/public/oak/bin/setupupg.hiv.log
Binary files differ
diff --git a/public/oak/bin/setupupg.log b/public/oak/bin/setupupg.log
new file mode 100644
index 000000000..88830249f
--- /dev/null
+++ b/public/oak/bin/setupupg.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x00000000 0x00000001 0x00000000
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/shell.ini b/public/oak/bin/shell.ini
new file mode 100644
index 000000000..9abf5bb5e
--- /dev/null
+++ b/public/oak/bin/shell.ini
@@ -0,0 +1,909 @@
+ *
+ shellex
+ PropertySheetHandlers
+ {3EA48300-8CF6-101B-84FB-666CCB9BCD32}
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C}
+ ContextMenuHandlers
+ ExplorerCompressionMenu
+ = {764BF0E1-F219-11ce-972D-00AA00A14F56}
+
+ .386
+ = vxdfile
+ .ani
+ = anifile
+ .bat
+ = batfile
+ .bfc
+ = Briefcase
+ ShellNew
+ Command = REG_EXPAND_SZ %SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\syncui.dll,Briefcase_Create %1!d! %2
+ Config
+ NoExtension =
+
+ .clp
+ = clpfile
+ .cmd
+ = cmdfile
+ .com
+ = comfile
+ .cpl
+ = cplfile
+ .cur
+ = curfile
+ .dll
+ = dllfile
+ .doc
+ = WordPad.Document.1
+ ShellNew
+ NullFile =
+ .drv
+ = drvfile
+ .exe
+ = exefile
+ .fnd
+ = fndfile
+ .fon
+ = fonfile
+ .hlp
+ = hlpfile
+ .ico
+ = icofile
+ .inf
+ = inffile
+ .lnk
+ = lnkfile
+ ShellNew
+ Command = RunDLL32 AppWiz.Cpl,NewLinkHere %1
+ .pif
+ = piffile
+ .pnf
+ = pnffile
+ .reg
+ = regfile
+ .rtf
+ = rtffile
+ ShellNew
+ Data = {\rtf1}
+ .scr
+ = scrfile
+ .shb
+ = DocShortcut
+ .shs
+ = ShellScrap
+ .sys
+ = sysfile
+ .ttf
+ = ttffile
+ .pfm
+ = pfmfile
+ .txt
+ ShellNew
+ NullFile =
+ .wav
+ = SoundRec
+ ShellNew
+ NullFile =
+
+ anifile
+ = Animated Cursor
+ DefaultIcon
+ = %1
+ AviFile
+ = Video Clip
+ shellex
+ PropertySheetHandlers
+ = AviPage
+ AviPage
+ = {00022613-0000-0000-C000-000000000046}
+
+ batfile
+ = MS-DOS Batch File
+ EditFlags = REG_BINARY 0x00000004 0x00000430
+
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-153
+ shell
+ edit
+ = &Edit
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE %1
+ open
+ EditFlags = REG_BINARY 0x00000004 0x00000000
+
+ command
+ = "%1" %*
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE /p %1
+ shellex
+ PropertySheetHandlers
+ PifProps
+ = {86F19A00-42A0-1069-A2E9-08002B30309D}
+
+ Briefcase
+ = Briefcase
+ shell
+ open
+ command
+ = explorer.exe %1
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\syncui.dll,0
+ CLSID
+ = {85BBD920-42A0-1069-A2E4-08002B30309D}
+
+ clpfile
+ = Clipboard Clip
+ DefaultIcon
+ = REG_EXPAND_SZ %systemroot%\system32\clipbrd.exe,1
+ shell
+ open
+ command
+ = clipbrd.exe %1
+
+ CLSID
+ {00021400-0000-0000-C000-000000000046}
+ = Desktop
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {00021401-0000-0000-C000-000000000046}
+ = Shortcut
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ shellex
+ MayChangeDefaultMenu
+
+ {00022613-0000-0000-C000-000000000046}
+ = Multimedia File Property Sheet
+ InProcServer32
+ = mmsys.cpl
+ ThreadingModel = Apartment
+
+ {208D2C60-3AEA-1069-A2D7-08002B30309D}
+ = Network Neighborhood
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,17
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ shell
+ find
+ = &Find Computer...
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe
+ ddeexec
+ = [FindFolder("%l", %I)]
+ application
+ = Folders
+ topic
+ = AppProperties
+ {20D04FE0-3AEA-1069-A2D8-08002B30309D}
+ = My Computer
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe,0
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ shell
+ find
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe
+ ddeexec
+ = [FindFolder("%l", %I)]
+ application
+ = Folders
+ topic
+ = AppProperties
+ {217FC9C0-3AEA-1069-A2DB-08002B30309D}
+ = Shell Copy Hook
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {21B22460-3AEA-1069-A2DC-08002B30309D}
+ = File system attributes
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {21EC2020-3AEA-1069-A2DD-08002B30309D}
+ = Control Panel
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-137
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {2227A280-3AEA-1069-A2DE-08002B30309D}
+ = Printers
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-138
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ ShellFolder
+ Attributes = REG_BINARY 0x00000004 0x20000004
+ {3EA48300-8CF6-101B-84FB-666CCB9BCD32}
+ = OLE Docfile Property Page
+ InProcServer32
+ = docprop.dll
+ ThreadingModel = Apartment
+ {56117100-C0CD-101B-81E2-00AA004AE837}
+ = Shell Scrap DataHandler
+ InProcServer32
+ = shscrap.dll
+ ThreadingModel = Apartment
+ {59099400-57FF-11CE-BD94-0020AF85B590}
+ = Disk Copy Extension
+ InProcServer32
+ = diskcopy.dll
+ ThreadingModel = Apartment
+ {61E218E0-65D3-101B-9F08-061CEAC3D50D}
+ = ShellFind
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {645FF040-5081-101B-9F08-00AA002F954E}
+ = Recycle Bin
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,31
+ Empty = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,31
+ Full = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,32
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ shellex
+ ContextMenuHandlers
+ {645FF040-5081-101B-9F08-00AA002F954E}
+ PropertySheetHandlers
+ {645FF040-5081-101B-9F08-00AA002F954E}
+ ShellFolder
+ Attributes = REG_BINARY 0x00000004 0x20000140
+
+ {764BF0E1-F219-11ce-972D-00AA00A14F56}
+ = Shell extensions for file compression
+ InProcServer32
+ = shcompui.dll
+ ThreadingModel = Apartment
+ {86747AC0-42A0-1069-A2E6-08002B30309D}
+ = Shell Moniker
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {86F19A00-42A0-1069-A2E9-08002B30309D}
+ = .PIF file property pages
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {86F19A00-42A0-1069-A2EB-08002B30309D}
+ = .PIF file handler
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {85BBD920-42A0-1069-A2E4-08002B30309D}
+ = Briefcase
+ InProcServer32
+ = syncui.dll
+ ThreadingModel = Apartment
+ ShellFolder
+ Attributes = REG_BINARY 0x4 0x40000136
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\syncui.dll,0
+ shellex
+ PropertySheetHandlers
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C}
+
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ =SCC Quick Viewer
+ InProcServer32
+ = REG_EXPAND_SZ %SystemRoot%\system32\viewers\sccview.dll
+ ThreadingModel = Apartment
+
+ cmdfile
+ = Windows NT Command Script
+ EditFlags = REG_BINARY 0x00000004 0x00000430
+
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-153
+ shell
+ edit
+ = &Edit
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE %1
+ open
+ EditFlags = REG_BINARY 0x00000004 0x00000000
+
+ command
+ = "%1" %*
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE /p %1
+ shellex
+ PropertySheetHandlers
+ PifProps
+ = {86F19A00-42A0-1069-A2E9-08002B30309D}
+
+ comfile
+ = MS-DOS Application
+ EditFlags = REG_BINARY 0x00000004 0x00000030
+
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,2
+ shell
+ open
+ EditFlags = REG_BINARY 0x00000004 0x00000000
+
+ command
+ = "%1" %*
+ shellex
+ PropertySheetHandlers
+ PifProps
+ = {86F19A00-42A0-1069-A2E9-08002B30309D}
+ cplfile
+ = Control Panel extension
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-154
+ shell
+ cplopen
+ = "Open with Control Panel"
+ command
+ = rundll32.exe shell32.dll,Control_RunDLL %1,%*
+
+
+ curfile
+ = Cursor
+ DefaultIcon
+ = %1
+ Directory
+ EditFlags = REG_BINARY 0x00000004 0x00000002
+
+ AlwaysShowExt =
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,3
+ shell
+ find
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe
+ ddeexec
+ = [FindFolder("%l", %I)]
+ application
+ = Folders
+ topic
+ = AppProperties
+ shellex
+ CopyHookHandlers
+ FileSystem
+ = {217FC9C0-3AEA-1069-A2DB-08002B30309D}
+ PropertySheetHandlers
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C}
+ ContextMenuHandlers
+ ExplorerCompressionMenu
+ = {764BF0E1-F219-11ce-972D-00AA00A14F56}
+
+ dllfile
+ = Application Extension
+ AlwaysShowExt =
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-154
+ DocShortcut
+ = Shortcut into a document
+ IsShortcut =
+ NeverShowExt =
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shscrap.dll,-100
+ shell
+ open
+ command
+ = REG_EXPAND_SZ rundll32 \
+ %SystemRoot%\System32\shscrap.dll,OpenScrap_RunDLL \
+ /r /x %1
+ shellex
+ DataHandler
+ = {56117100-C0CD-101B-81E2-00AA004AE837}
+ Drive
+ = Drive
+ EditFlags = REG_BINARY 0x00000004 0x00000002
+
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,8
+ shell
+ find
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe
+ ddeexec
+ = [FindFolder("%l", %I)]
+ application
+ = Folders
+ topic
+ = AppProperties
+ shellex
+ ContextMenuHandlers
+ {59099400-57FF-11CE-BD94-0020AF85B590}
+ ExplorerCompressionMenu
+ = {764BF0E1-F219-11ce-972D-00AA00A14F56}
+
+ PropertySheetHandlers
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C}
+
+ drvfile
+ = Device driver
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+
+ AlwaysShowExt =
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-154
+ exefile
+ = Application
+ EditFlags = REG_BINARY 0x00000004 0x00000738
+
+ DefaultIcon
+ = %1
+ shell
+ open
+ EditFlags = REG_BINARY 0x00000004 0x00000000
+
+ command
+ = "%1" %*
+ shellex
+ PropertySheetHandlers
+ PifProps
+ = {86F19A00-42A0-1069-A2E9-08002B30309D}
+ fndfile
+ = Saved Search
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-133
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe
+ ddeexec
+ = [OpenFindFile("%1", %I)]
+ application
+ = Folders
+ topic
+ = AppProperties
+ Folder
+ = Folder
+ EditFlags = REG_BINARY 0x00000004 0x00000002
+
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,3
+ shell
+ explore
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe \
+ /e,/idlist,%I,%L
+ ddeexec
+ = [ExploreFolder("%l", %I, %S)]
+ NoActivateHandler =
+ application
+ = Folders
+ ifexec
+ = []
+ topic
+ = AppProperties
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe \
+ /idlist,%I,%L
+ ddeexec
+ = [ViewFolder("%l", %I, %S)]
+ NoActivateHandler =
+ application
+ = Folders
+ ifexec
+ = []
+ topic
+ = AppProperties
+ shellex
+ ContextMenuHandlers
+ ExplorerCompressionMenu
+ = {764BF0E1-F219-11ce-972D-00AA00A14F56}
+
+ fonfile
+ = Font file
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-155
+ hlpfile
+ = Help File
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,23
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\winhlp32.exe %1
+ icofile
+ = Icon
+ DefaultIcon
+ = %1
+ inffile
+ = Setup Information
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-151
+ shell
+ Install
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %1
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE /p %1
+ install
+ = &Install
+ inifile
+ = Configuration Settings
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-151
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE /p %1
+ lnkfile
+ = Shortcut
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+
+ IsShortcut =
+ NeverShowExt =
+ shellex
+ ContextMenuHandlers
+ {00021401-0000-0000-C000-000000000046}
+ DropHandler
+ = {00021401-0000-0000-C000-000000000046}
+ IconHandler
+ = {00021401-0000-0000-C000-000000000046}
+
+ MidFile
+ = MIDI Sequence
+ shellex
+ PropertySheetHandlers
+ = MidPage
+ MidPage
+ = {00022613-0000-0000-C000-000000000046}
+
+ MPlayer
+ = Media Clip
+ shellex
+ PropertySheetHandlers
+ = MediaPage
+ MediaPage
+ = {00022613-0000-0000-C000-000000000046}
+
+ pnffile
+ = Precompiled Setup Information
+ AlwaysShowExt =
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-154
+
+ QuickView
+ = Quick View File
+
+ *
+ = Default Viewers
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .ASC
+ = ASCII File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .BMP
+ = Windows Bitmap Graphics File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .CDR
+ = Corel Draw v 4,5 Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .EXE
+ = Executable Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .DIB
+ = Windows Bitmap Graphics File (DIB)
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .DLL
+ = Dynamic Link Libraries
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .DOC
+ = Any of a number of word processing file formats
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .DRW
+ = Micrographix Draw File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .EPS
+ = Encapsulated PostScript Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .GIF
+ = Compuserve GIF File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .INF
+ = Setup Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .INI
+ = Configuration Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .MOD
+ = Multiplan v 3, 4.0, 4.1 File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+// .PRE
+// = Freelance for Windows Files
+// {F0F08735-0C36-101B-B086-0020AF07D0F4}
+// = SCC Quick Viewer
+
+ .PPT
+ = PowerPoint, v 4 Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .RLE
+ = Bitmap Files (RunLengthEncoding)
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .RTF
+ = Rich Text Format File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+// .SAM
+// = AMI, AMI Pro File
+// {F0F08735-0C36-101B-B086-0020AF07D0F4}
+// = SCC Quick Viewer
+
+ .TIF
+ = Tiff File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .TXT
+ = Text File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .WB1
+ = Quattro Pro for Windows File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .WDB
+ = Works Database Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ .WK1
+ = Lotus 1-2-3 v 1'n'2 Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ =SCC Quick Viewer
+
+// .WK3
+// = Lotus 1-2-3 v 3 File
+// {F0F08735-0C36-101B-B086-0020AF07D0F4}
+// =SCC Quick Viewer
+
+// .WK4
+// = Lotus 1-2-3 v 4 File
+// {F0F08735-0C36-101B-B086-0020AF07D0F4}
+// =SCC Quick Viewer
+
+ .WKS
+ = Lotus 1-2-3 File or MS Works v 3 File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ =SCC Quick Viewer
+
+ .WMF
+ = Windows Metafile
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ =SCC Quick Viewer
+
+ .WPD
+ = Word Perfect Demo Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ =SCC Quick Viewer
+
+ .WPS
+ = Works Word Processing Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ =SCC Quick Viewer
+
+ .WQ1
+ = Quattro Pro for MS-DOS File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ =SCC Quick Viewer
+
+ .WQ2
+ = Quattro Pro v 5 for MS-DOS File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ =SCC Quick Viewer
+
+ .WRI
+ = Windows 3.x WRITE Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ =SCC Quick Viewer
+
+ .XLC
+ = Excel 4 Chart File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ =SCC Quick Viewer
+
+
+ .XLS
+ = Excel 4 and 5 Spreadsheet Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\viewers\quikview.exe
+
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+
+ Package
+ = Package
+ CLSID
+ = {0003000C-0000-0000-C000-000000000046}
+ protocol
+ StdFileEditing
+ server
+ = packager.exe
+ verb
+ 0
+ = &Activate Contents
+ 1
+ = &Edit Package
+ piffile
+ = Shortcut to MS-DOS Program
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+
+ IsShortcut =
+ NeverShowExt =
+ shell
+ open
+ command
+ = "%1" %*
+ shellex
+ IconHandler
+ = {00021401-0000-0000-C000-000000000046}
+ PropertySheetHandlers
+ PifProps
+ = {86F19A00-42A0-1069-A2E9-08002B30309D}
+ regfile
+ = Registration Entries
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\regedit.exe,1
+ shell
+ edit
+ = &Edit
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\NOTEPAD.EXE \
+ %1
+ open
+ = Mer&ge
+ command
+ = regedit.exe "%1"
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\NOTEPAD.EXE \
+ /p %1
+ scrfile
+ = Screen Saver
+ shell
+ config
+ = C&onfigure
+ command
+ = "%1"
+ install
+ = &Install
+ command
+ = rundll32.exe desk.cpl,InstallScreenSaver %l
+ open
+ = T&est
+ command
+ = "%1" /S
+ ShellScrap
+ = Scrap object
+ NeverShowExt =
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shscrap.dll,-100
+ shell
+ open
+ command
+ = REG_EXPAND_SZ rundll32 \
+ %SystemRoot%\system32\shscrap.dll,OpenScrap_RunDLL \
+ %1
+ shellex
+ DataHandler
+ = {56117100-C0CD-101B-81E2-00AA004AE837}
+ SoundRec
+ = Wave Sound
+ DefaultIcon
+ = sndrec32.exe,1
+ shellex
+ PropertySheetHandlers
+ = WavPage
+ WavPage
+ = {00022613-0000-0000-C000-000000000046}
+ shell
+ = play
+ open
+ = &Open
+ command
+ = sndrec32.exe "%L"
+ play
+ = &Play
+ command
+ = mplay32.exe /play /close "%L"
+
+ sysfile
+ = System file
+ AlwaysShowExt =
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-154
+ pfmfile
+ = Type 1 Font file
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-173
+ ttffile
+ = TrueType Font file
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-156
+ txtfile
+ = Text Document
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-152
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\NOTEPAD.EXE \
+ %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\NOTEPAD.EXE \
+ /p %1
+ Unknown
+ AlwaysShowExt =
+ shell
+ openas
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rundll32.exe \
+ %SystemRoot%\system32\shell32.dll,OpenAs_RunDLL \
+ %1
+ vxdfile
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+
+ = Virtual device driver
+ AlwaysShowExt =
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-154
diff --git a/public/oak/bin/software b/public/oak/bin/software
new file mode 100644
index 000000000..61fe77b1a
--- /dev/null
+++ b/public/oak/bin/software
Binary files differ
diff --git a/public/oak/bin/software.ini b/public/oak/bin/software.ini
new file mode 100644
index 000000000..4f401347b
--- /dev/null
+++ b/public/oak/bin/software.ini
@@ -0,0 +1,3152 @@
+//
+// This file defines the default contents of the SOFTWARE hive in the Windows NT
+// registry.
+//
+
+
+//
+// predefined ACEs for creating ACLs
+// R == Read (values & subkeys)
+// W == Write (values & subkeys, create keys)
+// D == Delete keys
+// Full == All access
+//
+#define AdminFull 1
+#define AdminR 2
+#define AdminRW 3
+#define AdminRWD 4
+#define CreatorFull 5
+#define CreatorRW 6
+#define WorldFull 7
+#define WorldR 8
+#define WorldRW 9
+#define WorldRWD 10
+#define PowerFull 11
+#define PowerRW 12
+#define PowerRWD 13
+#define SystemOpFull 14
+#define SystemOpRW 15
+#define SystemOpRWD 16
+#define SystemFull 17
+#define SystemRW 18
+#define SystemR 19
+#define AdminRWX 20
+#define InteractiveFull 21
+#define InteractiveR 22
+#define InteractiveRW 23
+#define InteractiveRWD 24
+
+//
+// Here is a simple macro to get around things like '#8' being recognized
+// as preprocessor directives. Please do not remove.
+//
+#define AVOID_PREPROCESSOR(x) x
+
+SOFTWARE [WorldRWD AdminFull SystemFull CreatorFull]
+ Program Groups [WorldR AdminFull SystemFull SystemOpRWD PowerRWD CreatorFull]
+
+ Classes [WorldR InteractiveRWD AdminFull SystemFull CreatorFull]
+
+ DirectDraw
+ = DirectDraw Object
+ CLSID
+ = {D7B70EE0-4340-11CF-B063-0020AFC2CD35}
+ DirectDrawClipper
+ = DirectDraw Clipper Object
+ CLSID
+ = {593817A0-7DB3-11CF-A2DE-00AA00B93356}
+ DirectSound
+ = DirectSound Object
+ CLSID
+ = {47D4D946-62E8-11cf-93BC-444553540000}
+ AppID
+ {00020C01-0000-0000-C000-000000000046}
+ = Sound Recorder
+ {00022601-0000-0000-C000-000000000046}
+ = Media Player
+ {D3E34B21-9D75-101A-8C3D-00AA001A1652}
+ = Paintbrush
+ .pbk
+ = pbkfile
+ .rnk
+ = rnkfile
+ pbkfile
+ = Dial-Up Phonebook
+ CLSID
+ = {a4d92742-67cd-11cf-96f2-00aa00a11dd9}
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasshell.dll,0
+ shell
+ Open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasphone.exe -f "%1"
+ rnkfile
+ = Dial-Up Shortcut
+ CLSID
+ = {a4d92741-67cd-11cf-96f2-00aa00a11dd9}
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasshell.dll,1
+ shell
+ Dial
+ = &Dial
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasphone.exe -lt "%1"
+ Hang Up
+ = Hang &up
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasphone.exe -lh "%1"
+ Edit entry and modem settings
+ = &Edit entry and modem settings
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasphone.exe -v -le "%1"
+ shellex
+ PropertySheetHandlers
+ {a4d92741-67cd-11cf-96f2-00aa00a11dd9}
+
+#ifdef _CAIRO_
+ .VBS
+ = VBScript
+ VBScript
+ = Visual Basic Script Application
+ VBScript
+ CLSID
+ = {D2A2F5F3-EBA6-11CD-AF37-02608CA1D0B7}
+ shell
+ open
+ = &Run
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\VBSCRIPT.EXE %1
+ edit
+ = &Edit
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\VBSCRIPT.EXE /e %1
+#endif
+
+ Directory
+ = File Folder
+ shellex
+ CopyHookHandlers
+ Sharing
+ = {40dd6e20-7c17-11ce-a804-00aa003ca9f6}
+ Folder
+ shellex
+ PropertySheetHandlers
+ Sharing
+ = {f81e9010-6ea4-11ce-a7ff-00aa003ca9f6}
+ ContextMenuHandlers
+ Sharing
+ = {f81e9010-6ea4-11ce-a7ff-00aa003ca9f6}
+ Network
+ SharingHandler
+ = ntshrui.dll
+ Type
+ 2
+ = Microsoft Windows Network shell extensions
+ shellex
+ PropertySheetHandlers
+ Microsoft Windows Network objects
+ = {59be4990-f85c-11ce-aff7-00aa003ca9f6}
+
+#ifdef _CAIRO_
+
+ Folder
+ shellex
+ DragDropHandlers
+ DFS Administration
+ = {841d6ffb-c2b9-11ce-afe2-00aa003ca9f6}
+ PropertySheetHandlers
+ DFS Administration
+ = {d456e010-be15-11ce-a81a-00aa003ca9f6}
+ ContextMenuHandlers
+ DFS Administration
+ = {d456e010-be15-11ce-a81a-00aa003ca9f6}
+
+#endif // _CAIRO_
+
+ Package
+ = Package
+ CLSID
+ = {0003000C-0000-0000-C000-000000000046}
+ protocol
+ StdFileEditing
+ server
+ = packager.exe
+ verb
+ 1
+ = &Edit Package
+ 0
+ = &Activate Contents
+ regedit
+ = Registration Entries
+ shell
+ open
+ command
+ = regedit.exe %1
+ .reg
+ = regedit
+ SoundRec
+ = Sound
+ CLSID
+ = {00020C01-0000-0000-C000-000000000046}
+ protocol
+ StdFileEditing
+ server
+ = sndrec32.exe
+ verb
+ 0
+ = &Play
+ 1
+ = &Edit
+ 2
+ = &Open
+ StdExecute
+ server
+ = sndrec32.exe
+ shell
+ open
+ command
+ = sndrec32.exe %1
+ AVIFile
+ = Video Clip
+ CLSID
+ = {00022602-0000-0000-C000-000000000046}
+ Compressors
+ auds
+ = {0002000F-0000-0000-C000-000000000046}
+ vids
+ = {00020001-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,3
+ Extensions
+ AU
+ = {00020003-0000-0000-C000-000000000046}
+ AVI
+ = {00020000-0000-0000-C000-000000000046}
+ WAV
+ = {00020003-0000-0000-C000-000000000046}
+ RIFFHandlers
+ AVI
+ = {00020000-0000-0000-C000-000000000046}
+ WAVE
+ = {00020003-0000-0000-C000-000000000046}
+ Insertable
+ =
+ protocol
+ StdFileEditing
+ verb
+ 0
+ = &Play
+ 1
+ = &Edit
+ 2
+ = &Open
+ PackageObjects
+ =
+ server
+ = mplay32.exe /avi
+ Handler
+ = mciole16.dll
+ Handler32
+ = mciole32.dll
+ StdExecute
+ server
+ = mplay32.exe /avi
+ shell
+ open
+ command
+ = mplay32.exe /play /close "%L"
+ MIDFile
+ = MIDI Sequence
+ CLSID
+ = {00022603-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,5
+ Insertable
+ =
+ protocol
+ StdFileEditing
+ verb
+ 0
+ = &Play
+ 1
+ = &Edit
+ 2
+ = &Open
+ PackageObjects
+ =
+ server
+ = mplay32.exe /mid
+ Handler
+ = mciole16.dll
+ Handler32
+ = mciole32.dll
+ StdExecute
+ server
+ = mplay32.exe /mid
+ shell
+ open
+ command
+ = mplay32.exe /play /close "%L"
+ MPlayer
+ = Media Clip
+ CLSID
+ = {00022601-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,1
+ Insertable
+ =
+ protocol
+ StdFileEditing
+ verb
+ 0
+ = &Play
+ 1
+ = &Edit
+ 2
+ = &Open
+ PackageObjects
+ =
+ server
+ = mplay32.exe
+ Handler
+ = mciole16.dll
+ Handler32
+ = mciole32.dll
+ StdExecute
+ server
+ = mplay32.exe
+ shell
+ open
+ command
+ = mplay32.exe /play /close "%L"
+ .rmi
+ = MPlayer
+ .mid
+ = MIDFile
+ .avi
+ = AVIFile
+ .mmm
+ = MPlayer
+ .wav
+ = SoundRec
+ wrifile
+ = Write Document
+ shell
+ open
+ command
+ = write.exe %1
+ print
+ command
+ = write.exe /p %1
+ .wri
+ = wrifile
+ txtfile
+ = Text File
+ shell
+ open
+ command
+ = notepad.exe %1
+ print
+ command
+ = notepad.exe /p %1
+ .txt
+ = txtfile
+ .wtx
+ = txtfile
+ .scp
+ = txtfile
+ .ini
+ = inifile
+ .job
+ = JobObject
+ JobObject
+ = Scheduler Job Object
+ CLSID
+ = {148BD520-A2AB-11CE-B11F-00AA00530503}
+ .que
+ = QueueObject
+ QueueObject
+ = Scheduler Queue Object
+ CLSID
+ = {255b3f60-829e-11cf-8d8b-00aa0060f5bf}
+ .log
+ = txtfile
+ helpfile [WorldR AdminFull SystemFull CreatorFull]
+ = Help File
+ shell
+ open
+ command
+ = winhlp32.exe %1
+ .hlp [WorldR AdminFull SystemFull CreatorFull]
+ = helpfile
+
+ StaticMetafile
+ = Picture (Metafile)
+
+ StaticEnhancedMetafile
+ = Picture (Enhanced Metafile)
+
+ StaticDib
+ = Picture (Device Independent Bitmap)
+
+ file
+ CLSID
+ = {00000303-0000-0000-C000-000000000046}
+ fonfile
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe /p %1
+ ttffile
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe /p %1
+ pfmfile
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe /p %1
+
+ .pma
+ = PerfFile
+ .pmc
+ = PerfFile
+ .pml
+ = PerfFile
+ .pmr
+ = PerfFile
+ .pmw
+ = PerfFile
+
+ PerfFile
+ = Performance Monitor File
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\perfmon.exe %1
+
+ CLSID
+ CLSID
+ = {0000031A-0000-0000-C000-000000000046}
+ {a4d92740-67cd-11cf-96f2-00aa00a11dd9}
+ = Dial-Up Networking
+ InProcServer32
+ = rasshell.dll
+ ThreadingModel = Apartment
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasshell.dll,0
+ shell
+ Open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasphone.exe
+ {a4d92741-67cd-11cf-96f2-00aa00a11dd9}
+ = Dial-Up Shortcut
+ InprocServer32
+ = rasshell.dll
+ ThreadingModel = Apartment
+ AuxUserType
+ 2
+ = Dial-Up Shortcut
+ 3
+ = Dial-Up Networking
+ {a4d92742-67cd-11cf-96f2-00aa00a11dd9}
+ = Dial-Up Phonebook
+ AuxUserType
+ 2
+ = Dial-Up Phonebook
+ 3
+ = Dial-Up Networking
+
+ {00000300-0000-0000-C000-000000000046}
+ = StdOleLink
+ InprocServer32
+ = ole32.dll
+ {00000303-0000-0000-C000-000000000046}
+ = FileMoniker
+ InprocServer32
+ = ole32.dll
+ ProgID
+ = file
+ {00000304-0000-0000-C000-000000000046}
+ = ItemMoniker
+ InprocServer32
+ = ole32.dll
+ {00000305-0000-0000-C000-000000000046}
+ = AntiMoniker
+ InprocServer32
+ = ole32.dll
+ {00000306-0000-0000-C000-000000000046}
+ = PointerMoniker
+ InprocServer32
+ = ole32.dll
+ {00000308-0000-0000-C000-000000000046}
+ = PackagerMoniker
+ InprocServer32
+ = ole32.dll
+ {00000309-0000-0000-C000-000000000046}
+ = CompositeMoniker
+ InprocServer32
+ = ole32.dll
+ {0000030B-0000-0000-C000-000000000046}
+ = DfMarshal
+ InprocServer32
+ = ole32.dll
+ {00000315-0000-0000-C000-000000000046}
+ = Picture (Metafile)
+ ProgID
+ = StaticMetafile
+ InprocServer32
+ = ole32.dll
+ DataFormats
+ DefaultFile
+ = 3
+ GetSet
+ 0
+ = 3,1,32,3
+ MiscStatus
+ = 536
+ AuxUserType
+ 2
+ = Picture
+ Conversion
+ Readable
+ Main
+ = 3,MSDraw
+ {00000316-0000-0000-C000-000000000046}
+ = Picture (Device Independent Bitmap)
+ ProgID
+ = StaticDib
+ InprocServer32
+ = ole32.dll
+ DataFormats
+ DefaultFile
+ = 8
+ GetSet
+ 0
+ = 8,1,1,3
+ MiscStatus
+ = 536
+ AuxUserType
+ 2
+ = Picture
+ Conversion
+ Readable
+ Main
+ = 8,PBrush
+ {00000319-0000-0000-C000-000000000046}
+ = Picture (Enhanced Metafile)
+ ProgID
+ = StaticEnhancedMetafile
+ InprocServer32
+ = ole32.dll
+ DataFormats
+ DefaultFile
+ = 14
+ GetSet
+ 0
+ = 14,1,64,3
+ MiscStatus
+ = 536
+ AuxUserType
+ 2
+ = Picture
+ Conversion
+ Readable
+ Main
+ =
+ {0000031A-0000-0000-C000-000000000046}
+ = ClassMoniker
+ InprocServer32
+ = ole32.dll
+ ProgID
+ = clsid
+ {00000320-0000-0000-C000-000000000046}
+ = oleprx32_PSFactory
+ InprocServer32
+ = ole32.dll
+ {00020000-0000-0000-C000-000000000046}
+ = Microsoft AVI Files
+ InprocServer
+ = avifile.dll
+ InprocServer32
+ = avifil32.dll
+ ThreadingModel = Both
+ AVIFile
+ = 7
+ {00020001-0000-0000-C000-000000000046}
+ = AVI Compressed Stream
+ InprocServer
+ = avifile.dll
+ InprocServer32
+ = avifil32.dll
+ ThreadingModel = Both
+ {00020003-0000-0000-C000-000000000046}
+ = Microsoft Wave File
+ InprocServer32
+ = avifil32.dll
+ ThreadingModel = Both
+ AVIFile
+ = 7
+ {0002000D-0000-0000-C000-000000000046}
+ = IAVIStream & IAVIFile Proxy
+ InprocServer
+ = avifile.dll
+ InprocServer32
+ = avifil32.dll
+ ThreadingModel = Both
+ {0002000F-0000-0000-C000-000000000046}
+ = ACM Compressed Audio Stream
+ InprocServer
+ = avifile.dll
+ InprocServer32
+ = avifil32.dll
+ ThreadingModel = Both
+ {00020420-0000-0000-C000-000000000046}
+ = PSDispatch
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020421-0000-0000-C000-000000000046}
+ = PSEnumVARIANT
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020422-0000-0000-C000-000000000046}
+ = PSTypeInfo
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020423-0000-0000-C000-000000000046}
+ = PSTypeLib
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020424-0000-0000-C000-000000000046}
+ = PSOAInterface
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020425-0000-0000-C000-000000000046}
+ = PSTypeComp
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020C01-0000-0000-C000-000000000046}
+ = Sound (OLE2)
+ AppID = {00020C01-0000-0000-C000-000000000046}
+ Insertable
+ =
+ InprocHandler32
+ = ole32.dll
+ LocalServer32
+ = sndrec32.exe
+ LocalServer
+ = sndrec32.exe
+ verb
+ 0
+ = &Play,0,3
+ 1
+ = &Edit,0,2
+ 2
+ = &Open,0,2
+ AuxUserType
+ 3
+ = Microsoft Sound Recorder Server
+ 2
+ = Sound Recorder Document
+ DataFormats
+ DefaultFile
+ = 12
+ DefaultSet
+ = SoundRec
+ GetSet
+ 1
+ = 8,-1,1,3
+ 0
+ = 3,1,32,1
+ MiscStatus
+ = 0
+ ProgID
+ = SoundRec
+ {00022601-0000-0000-C000-000000000046}
+ = Media Clip
+ AppID = {00022601-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,1
+ Insertable
+ =
+ InprocHandler32
+ = ole32.dll
+ LocalServer
+ = mplay32.exe
+ LocalServer32
+ = mplay32.exe
+ verb
+ 1
+ = &Edit,0,2
+ 0
+ = &Play,0,3
+ 2
+ = &Open,0,2
+ AuxUserType
+ 2
+ = Media Clip
+ DataFormats
+ DefaultSet
+ = MPlayer
+ GetSet
+ 2
+ = 8,1,1,1
+ 1
+ = 3,1,32,1
+ 0
+ = Embed Source,1,8,1
+ MiscStatus
+ = 0
+ ProgID
+ = MPlayer
+ {00022602-0000-0000-C000-000000000046}
+ = Video Clip
+ AppID = {00022601-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,3
+ Insertable
+ =
+ InprocHandler32
+ = ole32.dll
+ LocalServer
+ = mplay32.exe /avi
+ LocalServer32
+ = mplay32.exe /avi
+ verb
+ 1
+ = &Edit,0,2
+ 0
+ = &Play,0,3
+ 2
+ = &Open,0,2
+ AuxUserType
+ 2
+ = Video Clip
+ DataFormats
+ DefaultSet
+ = AVIFile
+ GetSet
+ 2
+ = 8,1,1,1
+ 1
+ = 3,1,32,1
+ 0
+ = Embed Source,1,8,1
+ MiscStatus
+ = 0
+ ProgID
+ = AVIFile
+ {00022603-0000-0000-C000-000000000046}
+ = MIDI Sequence
+ AppID = {00022601-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,5
+ Insertable
+ =
+ InprocHandler32
+ = ole32.dll
+ LocalServer
+ = mplay32.exe /mid
+ LocalServer32
+ = mplay32.exe /mid
+ verb
+ 1
+ = &Edit,0,2
+ 0
+ = &Play,0,3
+ 2
+ = &Open,0,2
+ AuxUserType
+ 2
+ = MIDI Sequence
+ DataFormats
+ DefaultSet
+ = MIDFile
+ GetSet
+ 2
+ = 8,1,1,1
+ 1
+ = 3,1,32,1
+ 0
+ = Embed Source,1,8,1
+ MiscStatus
+ = 0
+ ProgID
+ = MIDFile
+ {0003000C-0000-0000-C000-000000000046}
+ = Package
+ Ole1Class
+ = Package
+ ProgID
+ = Package
+ {0003000D-0000-0000-C000-000000000046}
+ = Sound
+ Insertable
+ =
+ TreatAs
+ = {00020C01-0000-0000-C000-000000000046}
+ ProgID
+ = SoundRec
+ Ole1Class
+ = SoundRec
+ {0003000E-0000-0000-C000-000000000046}
+ = Media Clip
+ ProgID
+ = MPlayer
+ Ole1Class
+ = MPlayer
+ Insertable
+ =
+ TreatAs
+ = {00022601-0000-0000-C000-000000000046}
+ {0003000a-0000-0000-C000-000000000046}
+ = Paintbrush Picture
+ ProgID
+ = PBrush
+ Ole1Class
+ = PBrush
+ MiscStatus
+ = 512
+ Conversion
+ Readable
+ Main
+ = 8
+ TreatAs
+ = {D3E34B21-9D75-101A-8C3D-00AA001A1652}
+ {00030007-0000-0000-C000-000000000046}
+ = Microsoft Drawing
+ ProgID
+ = MSDraw
+ Ole1Class
+ = MSDraw
+ MiscStatus
+ = 512
+
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C}
+ = Security Shell Extension
+ InProcServer32
+ = rshx32.dll
+ ThreadingModel = Apartment
+
+ {47D4D946-62E8-11cf-93BC-444553540000}
+ = DirectSound Object
+ InprocServer32
+ = dsound.dll
+
+ {593817A0-7DB3-11CF-A2DE-00AA00B93356}
+ = DirectDraw Clipper Object
+ InprocServer32
+ = ddraw.dll
+
+ {BD84B380-8CA2-1069-AB1D-08000948F534}
+ = Fonts
+ InProcServer32
+ = fontext.dll
+ ThreadingModel = Apartment
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontext.dll,-101
+ Hierarchical
+ = 0
+
+ {BD84B381-8CA2-1069-AB1D-08000948F534}
+ = PANOSE Core Mapper
+ InProcServer32
+ = panmap.dll
+ ThreadingModel = Apartment
+
+
+#ifdef _CAIRO_
+ {D2A2F5F3-EBA6-11CD-AF37-02608CA1D0B7}
+ = VB Script Application
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\VBSCRIPT.EXE,0
+ LocalServer32
+ = REG_EXPAND_SZ %SystemRoot%\system32\VBSCRIPT.EXE /Automation
+ ProgId
+ = VBScript
+ MiscStatus
+ = 0
+ AuxUserType
+ 2
+ = VBScript
+ 3
+ = Visual Basic Script
+ verb
+ 0
+ = &Run,0,2
+ 1
+ = &Edit,0,2
+ InprocHandler32
+ = REG_EXPAND_SZ %SystemRoot%\system32\ole32.dll
+#endif
+
+ {f81e9010-6ea4-11ce-a7ff-00aa003ca9f6}
+ = Shell extensions for sharing
+ InProcServer32
+ = ntshrui.dll
+ ThreadingModel = Apartment
+ {40dd6e20-7c17-11ce-a804-00aa003ca9f6}
+ = Shell extensions for sharing
+ InProcServer32
+ = ntshrui.dll
+ ThreadingModel = Apartment
+ {59be4990-f85c-11ce-aff7-00aa003ca9f6}
+ = Shell extensions for Microsoft Windows Network objects
+ InProcServer32
+ = ntlanui2.dll
+ ThreadingModel = Apartment
+ {41E300E0-78B6-11ce-849B-444553540000}
+ = PlusPack CPL Extension
+ InProcServer32
+ = plustab.dll
+ ThreadingModel = Apartment
+
+ {D3E34B21-9D75-101A-8C3D-00AA001A1652}
+ = Bitmap Image
+ AppID = {D3E34B21-9D75-101A-8C3D-00AA001A1652}
+ AuxUserType
+ 2
+ = Bitmap Image
+ 3
+ = Paint
+ DataFormats
+ PriorityCacheFormats
+ AVOID_PREPROCESSOR(#8) =
+ DefaultIcon
+ = mspaint.exe, 1
+ InProcHandler32
+ = ole32.dll
+ Insertable
+ =
+ LocalServer32
+ = mspaint.exe
+ MiscStatus
+ = 32
+ ProgID
+ = Paint.Picture
+ PersistentHandler
+ = {098F2470-BAE0-11CD-B579-08002B30BFEB}
+ Verb
+ 0
+ = &Edit,0,2
+ 1
+ = &Open,0,2
+
+ {1B53F360-9A1B-1069-930C-00AA0030EBC8}
+ = HyperTerminal Page Ext
+ InProcServer32
+ = hypertrm.dll
+
+ {88895560-9AA2-1069-930E-00AA0030EBC8}
+ = HyperTerminal Icon Ext
+ InProcServer32
+ = hticons.dll
+
+#ifdef _CAIRO_
+ {1cac8232-7d6a-101a-ab87-08002b2b79e3}
+ shellex
+ PropertySheetHandlers
+ = DomUI
+ DomUI
+ = {9cfafae0-862c-11ce-bb70-00006b829536}
+
+ {9cfafae0-862c-11ce-bb70-00006b829536}
+ = DS domain object extension handler
+ InProcServer32
+ = dsui.dll
+ ThreadingModel = Apartment
+
+ {bc11fc28-821b-101a-91fb-00dd01108f15}
+ shellex
+ PropertySheetHandlers
+ = MachUI
+ MachUI
+ = {18489e00-8ba5-11ce-bb71-00006b829536}
+
+ {ed0e5a2a-d569-101a-8e59-08002b305dd8}
+ shellex
+ PropertySheetHandlers
+ = ServUI
+ ServUI
+ = {26af2d80-8c75-11ce-bb71-00006b829536}
+
+ {1fc55c34-80c8-101b-8b11-00000b65c787}
+ shellex
+ PropertySheetHandlers
+ = SiteUI
+ SiteUI
+ = {28a9cec0-8ca6-11ce-bb71-00006b829536}
+
+
+ {ed0e5a8c-d569-101a-8e59-08002b305dd8}
+ shellex
+ PropertySheetHandlers
+ = SROUI
+ SROUI
+ = {20a4ea40-8cae-11ce-bb71-00006b829536}
+
+ {18489e00-8ba5-11ce-bb71-00006b829536}
+ = DS machine object extension handler
+ InProcServer32
+ = dsui.dll
+ ThreadingModel = Apartment
+
+ {26af2d80-8c75-11ce-bb71-00006b829536}
+ = DS service object extension handler
+ InProcServer32
+ = dsui.dll
+ ThreadingModel = Apartment
+
+ {28a9cec0-8ca6-11ce-bb71-00006b829536}
+ = DS Site object extension handler
+ InProcServer32
+ = dsui.dll
+ ThreadingModel = Apartment
+
+ {20a4ea40-8cae-11ce-bb71-00006b829536}
+ = DS Service Representative object extension handler
+ InProcServer32
+ = dsui.dll
+ ThreadingModel = Apartment
+
+ {d456e010-be15-11ce-a81a-00aa003ca9f6}
+ = DFS Administration
+ InProcServer32
+ = dfsui.dll
+ ThreadingModel = Apartment
+
+ {841d6ffb-c2b9-11ce-afe2-00aa003ca9f6}
+ = DFS Administration
+ InProcServer32
+ = dfsui.dll
+ ThreadingModel = Apartment
+
+#endif
+
+ {D7B70EE0-4340-11CF-B063-0020AFC2CD35}
+ = DirectDraw Object
+ InprocServer32
+ = ddraw.dll
+
+ {DF0B3D60-548F-101B-8E65-08002B2BD119}
+ = PSSupportErrorInfo
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+
+ Interface
+ {00000000-0000-0000-C000-000000000046}
+ = IUnknown
+ BaseInterface
+ =
+ NumMethods
+ = 3
+ {00000001-0000-0000-C000-000000000046}
+ = IClassFactory
+ NumMethods
+ = 5
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000002-0000-0000-C000-000000000046}
+ = IMalloc
+ NumMethods
+ = 9
+ {00000003-0000-0000-C000-000000000046}
+ = IMarshal
+ NumMethods
+ = 9
+ {00000004-0000-0000-C000-000000000046}
+ = IRpcChannel
+ NumMethods
+ = 7
+ {00000005-0000-0000-C000-000000000046}
+ = IRpcStub
+ NumMethods
+ = 8
+ {00000007-0000-0000-C000-000000000046}
+ = IRpcProxy
+ NumMethods
+ = 5
+ {00000009-0000-0000-C000-000000000046}
+ = IPSFactory
+ NumMethods
+ = 5
+ {0000000a-0000-0000-C000-000000000046}
+ = ILockBytes
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000000b-0000-0000-C000-000000000046}
+ = IStorage
+ NumMethods
+ = 18
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000000c-0000-0000-C000-000000000046}
+ = IStream
+ NumMethods
+ = 14
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000000d-0000-0000-C000-000000000046}
+ = IEnumSTATSTG
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000000e-0000-0000-C000-000000000046}
+ = IBindCtx
+ NumMethods
+ = 13
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000000f-0000-0000-C000-000000000046}
+ = IMoniker
+ BaseInterface
+ = {00000109-0000-0000-C000-000000000046}
+ NumMethods
+ = 23
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000010-0000-0000-C000-000000000046}
+ = IRunningObjectTable
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000012-0000-0000-C000-000000000046}
+ = IRootStorage
+ NumMethods
+ = 4
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000016-0000-0000-C000-000000000046}
+ = IMessageFilter
+ NumMethods
+ = 6
+ {00000018-0000-0000-C000-000000000046}
+ = IStdMarshalInfo
+ NumMethods
+ = 4
+ {00000019-0000-0000-C000-000000000046}
+ = IExternalConnection
+ NumMethods
+ = 5
+ {00000100-0000-0000-C000-000000000046}
+ = IEnumUnknown
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000101-0000-0000-C000-000000000046}
+ = IEnumString
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000102-0000-0000-C000-000000000046}
+ = IEnumMoniker
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000103-0000-0000-C000-000000000046}
+ = IEnumFORMATETC
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000104-0000-0000-C000-000000000046}
+ = IEnumOLEVERB
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000105-0000-0000-C000-000000000046}
+ = IEnumSTATDATA
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000109-0000-0000-C000-000000000046}
+ = IPersistStream
+ BaseInterface
+ = {0000010C-0000-0000-C000-000000000046}
+ NumMethods
+ = 8
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010a-0000-0000-C000-000000000046}
+ = IPersistStorage
+ BaseInterface
+ = {0000010C-0000-0000-C000-000000000046}
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010b-0000-0000-C000-000000000046}
+ = IPersistFile
+ BaseInterface
+ = {0000010c-0000-0000-C000-000000000046}
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010c-0000-0000-C000-000000000046}
+ = IPersist
+ NumMethods
+ = 4
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010d-0000-0000-C000-000000000046}
+ = IViewObject
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010e-0000-0000-C000-000000000046}
+ = IDataObject
+ NumMethods
+ = 12
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010f-0000-0000-C000-000000000046}
+ = IAdviseSink
+ NumMethods
+ = 8
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000110-0000-0000-C000-000000000046}
+ = IDataAdviseHolder
+ NumMethods
+ = 7
+ {00000111-0000-0000-C000-000000000046}
+ = IOleAdviseHolder
+ NumMethods
+ = 9
+ {00000112-0000-0000-C000-000000000046}
+ = IOleObject
+ NumMethods
+ = 24
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000113-0000-0000-C000-000000000046}
+ = IOleInPlaceObject
+ BaseInterface
+ = {00000114-0000-0000-C000-000000000046}
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000114-0000-0000-C000-000000000046}
+ = IOleWindow
+ NumMethods
+ = 5
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000115-0000-0000-C000-000000000046}
+ = IOleInPlaceUIWindow
+ BaseInterface
+ = {00000114-0000-0000-C000-000000000046}
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000116-0000-0000-C000-000000000046}
+ = IOleInPlaceFrame
+ NumMethods
+ = 15
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000117-0000-0000-C000-000000000046}
+ = IOleInPlaceActiveObject
+ BaseInterface
+ = {00000114-0000-0000-C000-000000000046}
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000118-0000-0000-C000-000000000046}
+ = IOleClientSite
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000119-0000-0000-C000-000000000046}
+ = IOleInPlaceSite
+ BaseInterface
+ = {00000114-0000-0000-C000-000000000046}
+ NumMethods
+ = 15
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000011a-0000-0000-C000-000000000046}
+ = IParseDisplayName
+ NumMethods
+ = 4
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000011b-0000-0000-C000-000000000046}
+ = IOleContainer
+ BaseInterface
+ = {0000011a-0000-0000-C000-000000000046}
+ NumMethods
+ = 6
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000011c-0000-0000-C000-000000000046}
+ = IOleItemContainer
+ BaseInterface
+ = {0000011b-0000-0000-C000-000000000046}
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000011d-0000-0000-C000-000000000046}
+ = IOleLink
+ NumMethods
+ = 14
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000011e-0000-0000-C000-000000000046}
+ = IOleCache
+ NumMethods
+ = 8
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000121-0000-0000-C000-000000000046}
+ = IDropSource
+ NumMethods
+ = 5
+ {00000122-0000-0000-C000-000000000046}
+ = IDropTarget
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000124-0000-0000-C000-000000000046}
+ = IDebugStream
+ NumMethods
+ = 19
+ {00000125-0000-0000-C000-000000000046}
+ = IAdviseSink2
+ BaseInterface
+ = {0000010f-0000-0000-C000-000000000046}
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000126-0000-0000-C000-000000000046}
+ = IRunnableObject
+ NumMethods
+ = 8
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000127-0000-0000-C000-000000000046}
+ = IViewObject2
+ BaseInterface
+ = {0000010d-0000-0000-C000-000000000046}
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000128-0000-0000-C000-000000000046}
+ = IOleCache2
+ BaseInterface
+ = {0000011e-0000-0000-C000-000000000046}
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000129-0000-0000-C000-000000000046}
+ = IOleCacheControl
+ NumMethods
+ = 5
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000012A-0000-0000-C000-000000000046}
+ = IContinue
+ NumMethods
+ = 4
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000131-0000-0000-C000-000000000046}
+ = IRemUnknown
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000132-0000-0000-C000-000000000046}
+ = IObjServer
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000133-0000-0000-C000-000000000046}
+ = IOSCM
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000134-0000-0000-C000-000000000046}
+ = IRundown
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000135-0000-0000-C000-000000000046}
+ = IInterfaceFromWindowProp
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000136-0000-0000-C000-000000000046}
+ = IDSCM
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000138-0000-0000-C000-000000000046}
+ = IPropertyStorage
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000013A-0000-0000-C000-000000000046}
+ = IPropertySetStorage
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000139-0000-0000-C000-000000000046}
+ = IEnumSTATPROPSTG
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000013B-0000-0000-C000-000000000046}
+ = IEnumSTATPROPSETSTG
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000140-0000-0000-C000-000000000046}
+ = IClassActivator
+ NumMethods
+ = 4
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000141-0000-0000-C000-000000000046}
+ = IDLLHost
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00020020-0000-0000-C000-000000000046}
+ = AVIFile Interface 1.22
+ ProxyStubClsid
+ = {0002000d-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {0002000d-0000-0000-C000-000000000046}
+ {00020021-0000-0000-C000-000000000046}
+ = AVIStream Interface
+ ProxyStubClsid
+ = {0002000d-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {0002000d-0000-0000-C000-000000000046}
+ {00020400-0000-0000-C000-000000000046}
+ = IDispatch
+ NumMethods
+ = 7
+ ProxyStubClsid
+ = {00020420-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {00020420-0000-0000-C000-000000000046}
+ {00020401-0000-0000-C000-000000000046}
+ = ITypeInfo
+ NumMethods
+ = 22
+ ProxyStubClsid
+ = {00020422-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {00020422-0000-0000-C000-000000000046}
+ {00020402-0000-0000-C000-000000000046}
+ = ITypeLib
+ NumMethods
+ = 13
+ ProxyStubClsid
+ = {00020423-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {00020423-0000-0000-C000-000000000046}
+ {00020403-0000-0000-C000-000000000046}
+ = ITypeComp
+ NumMethods
+ = 5
+ ProxyStubClsid
+ = {00020425-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {00020425-0000-0000-C000-000000000046}
+ {00020404-0000-0000-C000-000000000046}
+ = IEnumVARIANT
+ NumMethods
+ = 7
+ ProxyStubClsid
+ = {00020421-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {00020421-0000-0000-C000-000000000046}
+ {00020405-0000-0000-C000-000000000046}
+ = ICreateTypeInfo
+ NumMethods
+ = 26
+ {00020406-0000-0000-C000-000000000046}
+ = ICreateTypeLib
+ NumMethods
+ = 13
+ {0C733A30-2A1C-11CE-ADE5-00AA0044773D}
+ = ISequentialStream
+ NumMethods
+ = 5
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {B196B284-BAB4-101A-B69C-00AA00341D07}
+ = IConnectionPointContainer
+ NumMethods
+ = 5
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {B196B285-BAB4-101A-B69C-00AA00341D07}
+ = IEnumConnectionPoints
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {B196B286-BAB4-101A-B69C-00AA00341D07}
+ = IConnectionPoint
+ NumMethods
+ = 8
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {B196B287-BAB4-101A-B69C-00AA00341D07}
+ = IEnumConnections
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {D2A2F5F2-EBA6-11CD-AF37-02608CA1D0B7}
+ = _DVBScript
+ ProxyStubClsid32
+ = {00020420-0000-0000-C000-000000000046}
+ NumMethod
+ = 6
+ BaseInterface
+ = {00020400-0000-0000-C000-000000000046}
+ TypeLib
+ = {D2A2F5F0-EBA6-11CD-AF37-02608CA1D0B7}
+
+ {D5F569D0-593B-101A-B569-08002B2DBF7A}
+ = IPSFactoryBuffer
+ NumMethods
+ = 5
+ {D5F56A34-593B-101A-B569-08002B2DBF7A}
+ = IRpcProxyBuffer
+ NumMethods
+ = 5
+ {D5F56AFC-593B-101A-B569-08002B2DBF7A}
+ = IRpcStubBuffer
+ NumMethods
+ = 10
+ {D5F56B60-593B-101A-B569-08002B2DBF7A}
+ = IRpcChannelBuffer
+ NumMethods
+ = 8
+
+ {DF0B3D60-548F-101B-8E65-08002B2BD119}
+ = ISupportErrorInfo
+ NumMethods
+ = 4
+ ProxyStubClsid
+ = {DF0B3D60-548F-101B-8E65-08002B2BD119}
+ ProxyStubClsid32
+ = {DF0B3D60-548F-101B-8E65-08002B2BD119}
+
+ {F4F569D0-593B-101A-B569-08002B2DBF7A}
+ = IServerHandler
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+
+ {F4F569D1-593B-101A-B569-08002B2DBF7A}
+ = IClientSiteHandler
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+
+ {99caf010-415e-11cf-8814-00aa00b569f5}
+ = IFillLockBytes
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+
+ {a9d758a0-4617-11cf-95fc-00aa00680db4}
+ = IProgressNotify
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+
+ {de2eacd0-9c9d-11cf-882a-00aa00b569f5}
+ = IFIllInfo
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+
+ {4a8df970-8d9a-11cf-8827-00aa00b569f5}
+ = IDocfileAsyncConnectionPoint
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+
+ TypeLib
+
+#ifdef _CAIRO_
+ {D2A2F5F0-EBA6-11CD-AF37-02608CA1D0B7}
+ 1.0
+ = Visual Basic Script Application Type Library
+ 409
+ win32
+ = REG_EXPAND_SZ %SystemRoot%\system32\vbs.tlb
+ FLAGS
+ = 0
+ HELPDIR
+ =
+#endif
+
+ {00020430-0000-0000-C000-000000000046}
+ 1.0
+ = OLE Automation
+ HELPDIR
+ =
+ 0
+ win16
+ = stdole.tlb
+ win32
+ = stdole32.tlb
+
+#ifdef _CAIRO_
+#include "cairo.ini"
+#else
+#include "shell.ini"
+#endif
+
+ Secure [WorldR AdminFull SystemOpFull SystemFull CreatorFull]
+
+ Microsoft [WorldRWD AdminFull SystemFull CreatorFull]
+
+ Windows [WorldRW AdminFull SystemOpRWD PowerRWD SystemFull CreatorFull]
+ CurrentVersion
+ DevicePath = REG_EXPAND_SZ %SystemRoot%\inf
+ MediaPathUnexpanded = REG_EXPAND_SZ %SystemRoot%\Media
+
+ App Paths[WorldRW AdminFull SystemFull CreatorFull]
+
+ RunOnce
+ MigrateMMDrivers = rundll32.exe mmsys.cpl,mmseRunOnce
+
+ Controls Folder
+ Display
+ shellex
+ PropertySheetHandlers
+ PlusPack CPL Extension
+ = {41E300E0-78B6-11ce-849B-444553540000}
+
+ Shell Extensions [WorldR AdminFull SystemOpRWD PowerRWD SystemFull CreatorFull]
+ Approved
+ {00022613-0000-0000-C000-000000000046} = Multimedia File Property Sheet
+ {f81e9010-6ea4-11ce-a7ff-00aa003ca9f6} = Shell extensions for sharing
+ {40dd6e20-7c17-11ce-a804-00aa003ca9f6} = Shell extensions for sharing
+ {59be4990-f85c-11ce-aff7-00aa003ca9f6} = Shell extensions for Microsoft Windows Network objects
+ {764BF0E1-F219-11ce-972D-00AA00A14F56} = Shell extensions for file compression
+ {41E300E0-78B6-11ce-849B-444553540000} = PlusPack CPL Extension
+#ifdef _CAIRO_
+ {5D6DD548-928D-101A-91FD-00DD01108F15} = ADO Page.
+ {7DDDB960-608B-11CE-9A31-00AA00403F6D} = Popup Page.
+ {BB115E20-EC4F-11CD-B872-00AA00403F6D} = Alert Report Page.
+ {C8C316C0-C154-11CE-BEE6-00AA00403F6D} = Log Object's Configuration Page
+ {CF216145-F2A4-11ce-BEF2-00AA00403F6D} = Log Object's Context menu
+#endif
+ {85BBD920-42A0-1069-A2E4-08002B30309D} = Briefcase
+ {3EA48300-8CF6-101B-84FB-666CCB9BCD32} = OLE Docfile Property Page
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C} = Security Page
+ {BD84B380-8CA2-1069-AB1D-08000948F534} = Fonts
+ {56117100-C0CD-101B-81E2-00AA004AE837} = Shell Scrap DataHandler
+ {59099400-57FF-11CE-BD94-0020AF85B590} = Disk Copy Extension
+#ifdef _CAIRO_
+ {393d0cd0-eac5-11cd-b52c-08002b27bd8d} = User object prop pages
+ {8c6db6a0-5971-11ce-bb5d-00006b829536} = Group object prop pages
+ {c8569160-7a72-11ce-bb6b-00006b829536} = OU object prop pages
+ {9cfafae0-862c-11ce-bb70-00006b829536} = Domain object prop pages
+ {18489e00-8ba5-11ce-bb71-00006b829536} = Machine object prop pages
+ {26af2d80-8c75-11ce-bb71-00006b829536} = Service object prop pages
+ {28a9cec0-8ca6-11ce-bb71-00006b829536} = Site object prop pages
+ {20a4ea40-8cae-11ce-bb71-00006b829536} = SRO object prop pages
+ {d456e010-be15-11ce-a81a-00aa003ca9f6} = DFS Administration
+ {841d6ffb-c2b9-11ce-afe2-00aa003ca9f6} = DFS Administration
+#endif
+ ShellScrap
+ PriorityCacheFormats
+ AVOID_PREPROCESSOR(#3) =
+
+ Explorer
+ Desktop
+ NameSpace
+ {645FF040-5081-101B-9F08-00AA002F954E}
+ = Recycle Bin
+ FindExtensions
+ ShellFind
+ = {61E218E0-65D3-101B-9F08-061CEAC3D50D}
+ MyComputer
+ NameSpace
+ Controls
+ = {21EC2020-3AEA-1069-A2DD-08002B30309D}
+ Printers
+ = {2227A280-3AEA-1069-A2DE-08002B30309D}
+ {a4d92740-67cd-11cf-96f2-00aa00a11dd9}
+ = Dial-Up Networking
+ RemoteComputer
+ NameSpace
+ {2227A280-3AEA-1069-A2DE-08002B30309D}
+ = Printers
+ Shell Folders
+ User Shell Folders
+ Common Desktop = REG_EXPAND_SZ "%SystemRoot%\Profiles\All Users\Desktop"
+ Common Start Menu = REG_EXPAND_SZ "%SystemRoot%\Profiles\All Users\Start Menu"
+ Common Programs = REG_EXPAND_SZ "%SystemRoot%\Profiles\All Users\Start Menu\Programs"
+ Common Startup = REG_EXPAND_SZ "%SystemRoot%\Profiles\All Users\Start Menu\Programs\Startup"
+
+ Tips
+ 0 = If you don't know how to do something, you can look it up in Help. Just click Start, and then click Help.
+ 1 = The Shut Down command on the Start menu enables you to safely shut down your computer.
+ 2 = To add a program to your Start menu, you can drag the program's icon to the Start button.
+ 3 = You can use your right mouse button to drag files. Try it and see what happens!
+ 4 = You can use long filenames when you save documents. You can even use spaces!
+ 5 = You can click your right mouse button anywhere and see a menu of available commands.
+ 6 = To print a document quickly, drag its icon to a printer icon.
+ 7 = If you see a question mark button in the title bar of a window, you can get Help on each item in the window by clicking it, and then clicking the item.
+ 8 = You can use Windows NT Explorer to see all the files on your computer.
+ 9 = You can solve printer problems by using the Print Troubleshooter in Help.
+ 10 = You can move the taskbar to any edge of your screen by dragging it with your mouse.
+ 11 = You can minimize all open windows at once; just use your right mouse button to click an empty area on the taskbar, and then click Minimize All Windows.
+ 12 = To set your computer's clock, you can double-click the clock on the taskbar.
+ 13 = You can minimize neck strain by positioning your monitor at eye level.
+ 14 = To change the color scheme, use the right mouse button to click the desktop, and then click Properties.
+ 15 = To select more than one file or folder, hold down CTRL while you click each item.
+ 16 = To change your screen saver, use your right mouse button to click the desktop, and then click Properties.
+ 17 = Deleted files and folders are saved in the Recycle Bin until you empty it.
+ 18 = You can use Paint in Accessories to draw pictures and to view bitmap files.
+ 19 = You can switch mouse buttons if you are left-handed. Just double-click the Mouse icon in Control Panel.
+ 20 = To open a document quickly, you can double-click its icon.
+ 21 = To minimize wrist strain when you type, keep your wrists elevated or use a wristpad.
+ 22 = You can try many useful programs by clicking Start, pointing to Programs, and then clicking Accessories.
+ 23 = To start a command prompt window, from which you can start programs, click Start, point to Programs, and then click Command Prompt.
+ 24 = You can copy and paste text between MS-DOS and Windows NT. In the MS-DOS window, click the MS-DOS icon to see a menu, click Edit, and then click Mark. \
+ Select the text you want to copy and press ENTER to copy the text to the Clipboard. You can then paste the text into your application.
+ 25 = To see how much disk space is free, use your right mouse button to click the icon for the drive, and then click Properties.
+ 26 = Even if you don't shut down your computer at night, you can turn off your monitor to save power.
+ 27 = When a folder is open, you can press BACKSPACE to open a folder one level higher.
+ 28 = When you display files in Details view, you can sort them by clicking column headings. To sort files in reverse order, click the column heading once more.
+ 29 = To draw a selection box around a group of files, click at a corner of the group, and then drag the rectangle to form the box.
+ 30 = The underlined letters in menus indicate a keyboard shortcut method to select the item. Just press ALT and the underlined letter.
+ 31 = You can put a shortcut to a printer on your desktop for easy access to printing functions.
+ 32 = For a bit of diversion, try a game in the Games folder. Click Start, point to Programs, point to Games, and then click a game.
+ 33 = To free disk space, try emptying the Recycle Bin.
+ 34 = You can drag a file's icon into a document, or even drag a shortcut icon into a document or mail message.
+ 35 = You can have programs start automatically when you start Windows NT by dragging their icons to the Startup folder.
+ 36 = If you have a tape drive, you can use Backup to make copies of important files or your entire volume. Click Start, point to Programs, point to Administrative Tools, and then click Backup.
+ 37 = In Windows NT Explorer, you can set options to show or hide the three-letter filename extensions.
+ 38 = Use Quick View to preview a document without opening it by right-clicking a document and then choosing Quick View from the menu that appears.
+ 39 = Use an error-checking tool to periodically check a volume for errors. In Windows NT Explorer, right-click the volume you want to check, click Properties, and then click the Tools tab.
+ 40 = When you print a document, a printer icon appears on the taskbar. Double-click it to see a list of documents waiting to print.
+ 41 = To find out about any button on a toolbar, rest your mouse pointer on the button for a few seconds.
+ 42 = You can use the Run command on the Start menu to open shared folders on another computer.
+ 43 = You can customize Windows NT in many ways. Don't hesitate to experiment!
+ 44 = If you work on a laptop computer away from your computer at the office, you can easily keep documents up-to-date on both machines by using Briefcase.
+ 45 = If your computer is set up to use a network directory service, you can double-click the Network Neighborhood icon on your desktop to see computers in your workgroup.
+ 46 = For security, you can change your password by pressing CTRL+ALT+DEL and clicking Change Password.
+ 47 = You can manage applications that are currently running by pressing CTRL+ALT+DEL and clicking Task Manager.
+ 48 = For security, you can lock your display whenever you leave your computer by pressing CTRL+ALT+DEL and clicking Lock Workstation.
+ 49 = You can create a shortcut to open a document or program that you use frequently directly from the desktop. A shortcut does not change the file's location; \
+ it just lets you open the file from a more convenient location.
+
+ MS-DOS Emulation
+ Font
+ Font = Lucida Console
+
+ Nls
+ LocaleMapIDs
+ = 255,254
+ 00001801 = REG_SZ 0,1
+ 00001401 = REG_SZ *2,3
+ 00001C01 = REG_SZ *250,214
+ 00001001 = REG_SZ 4,5
+ 00000C01 = REG_SZ 6,7
+ 00000436 = REG_SZ 10,11
+ 00001C09 = REG_SZ *10,11
+ 00000409 = REG_SZ 12,13
+ 00001009 = REG_SZ *14,15
+ 00000C0C = REG_SZ 14,15
+ 0000080A = REG_SZ 16,17
+ 00000416 = REG_SZ 18,19
+ 00000C09 = REG_SZ 20,21
+ 00001409 = REG_SZ 22,23
+ 00000C04 = REG_SZ 24,25
+ 00000804 = REG_SZ *24,25
+ 00001004 = REG_SZ *250,240
+ 00000404 = REG_SZ *250,247
+ 00000411 = REG_SZ 26,27
+ 00000412 = REG_SZ 28,29
+ 00000421 = REG_SZ 30,31
+ 0000041E = REG_SZ 32,33
+ 00003C01 = REG_SZ *250,187
+ 00002C01 = REG_SZ *250,195
+ 00003401 = REG_SZ *250,188
+ 00004001 = REG_SZ *250,186
+ 00000401 = REG_SZ *250,182
+ 00003801 = REG_SZ *250,185
+ 0000040D = REG_SZ *250,176
+ 00002001 = REG_SZ *250,184
+ 00002401 = REG_SZ *250,183
+ 00000801 = REG_SZ *250,181
+ 00003001 = REG_SZ *250,177
+ 00002801 = REG_SZ *250,178
+ 0000041F = REG_SZ *38,39
+ 00000429 = REG_SZ *250,192
+ 00000419 = REG_SZ 42,43
+ 00000816 = REG_SZ 44,45
+ 0000042D = REG_SZ 46,47
+ 00000403 = REG_SZ 46,47
+ 00000C0A = REG_SZ *46,47
+ 0000040A = REG_SZ 46,47
+ 0000080C = REG_SZ 250,116
+ 0000140C = REG_SZ *250,118
+ 0000040C = REG_SZ *48,49
+ 0000100C = REG_SZ 250,96
+ 00000410 = REG_SZ *50,51
+ 00000810 = REG_SZ 250,96
+ 00000813 = REG_SZ *250,116
+ 00000413 = REG_SZ *250,114
+ 00000C07 = REG_SZ *250,100
+ 00001407 = REG_SZ *250,120
+ 00001007 = REG_SZ 250,118
+ 00000407 = REG_SZ *52,53
+ 00000807 = REG_SZ *250,96
+ 00000809 = REG_SZ *54,55
+ 00001809 = REG_SZ *113,112
+ 00000408 = REG_SZ 56,57
+ 0000040F = REG_SZ 58,59
+ 00000422 = REG_SZ 60,61
+ 0000041C = REG_SZ *250,110
+ 00000402 = REG_SZ *250,108
+ 0000041A = REG_SZ 62,63
+ 0000040E = REG_SZ *250,104
+ 00000418 = REG_SZ *250,106
+ 00000424 = REG_SZ *250,241
+ 00000405 = REG_SZ *250,98
+ 00000415 = REG_SZ *64,65
+ 0000041B = REG_SZ *250,102
+ 00000423 = REG_SZ *250,124
+ 00000425 = REG_SZ *250,128
+ 00000426 = REG_SZ *250,122
+ 00000427 = REG_SZ *127,126
+ 00000414 = REG_SZ *68,69
+ 00000814 = REG_SZ 68,69
+ 0000041D = REG_SZ 70,71
+ 0000040B = REG_SZ 72,73
+ 00000406 = REG_SZ 74,75
+ 0000081A = REG_SZ *250,242
+ 0000100A = REG_SZ *250,132
+ 0000140A = REG_SZ *250,137
+ 00002409 = REG_SZ *250,139
+ 00001C0A = REG_SZ *250,142
+ 00002009 = REG_SZ *250,140
+ 0000180A = REG_SZ *250,138
+ 0000200A = REG_SZ *250,163
+ 0000240A = REG_SZ *250,164
+ 0000280A = REG_SZ *250,166
+ 0000300A = REG_SZ *250,165
+ 0000340A = REG_SZ *250,168
+ 00003C0A = REG_SZ *250,169
+ 00002C0A = REG_SZ *250,170
+ 0000380A = REG_SZ *250,171
+
+ RenameFiles
+ Win
+ = REG_EXPAND_SZ %SystemRoot%\system32
+ INF = INF,2
+ Run
+ SystemTray = SysTray.Exe
+ RunOnce [WorldR AdminFull SystemOpRWD SystemFull CreatorFull]
+ Welcome =
+ InitShell = 1
+
+ Setup
+ OptionalComponents
+ BaseWinOptions
+
+ Telephony [WorldR AdminFull SystemFull CreatorFull SystemOpRWD PowerRWD]
+ Locations
+ DisableCallWaiting = REG_DWORD 3
+ DisableCallWaiting0 = REG_SZ *70,
+ DisableCallWaiting1 = REG_SZ 70#,
+ DisableCallWaiting2 = REG_SZ 1170,
+ Providers
+ NumProviders = REG_DWORD 2
+ NextProviderID = REG_DWORD 3
+ ProviderID0 = REG_DWORD 1
+ ProviderID1 = REG_DWORD 2
+ ProviderFilename0 = REG_SZ kmddsp.tsp
+ ProviderFilename1 = REG_SZ unimdm.tsp
+
+ Windows Messaging Subsystem
+ InstallCmd = rundll32 setupapi,InstallHinfSection MSMAIL 132 msmail.inf
+
+ Windows NT [WorldR AdminFull SystemOpRWD PowerRWD SystemFull CreatorFull]
+ CurrentVersion [WorldR AdminFull SystemOpRWD PowerRWD SystemFull CreatorFull]
+ ProfileList [WorldRW AdminFull SystemFull CreatorFull]
+ SoftwareType = System
+ InstallDate = REG_DWORD 0x00000000
+ RegisteredOwner = William H. Gates III
+ RegisteredOrganization = Microsoft Corporation
+ CurrentBuild = 1.511.1 () (Obsolete data - do not use)
+ NetworkCards [WorldR AdminFull SystemOpRWD SystemFull CreatorFull]
+
+ Time Zones [WorldR AdminFull SystemFull]
+ GMT
+ Display = (GMT) Greenwich Mean Time; Dublin, Edinburgh, London, Lisbon
+ Dlt = British Summer Time
+ MapID = 0,1
+
+ TZI = REG_BINARY 0x2C 0x00000000 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000003 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+
+ Romance Standard Time
+ Display = (GMT+01:00) Paris, Madrid, Amsterdam
+ Dlt = Romance Daylight Time
+ MapID = -1,64
+
+ TZI = REG_BINARY 0x2C 0xFFFFFFC4 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000003 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+
+ Central Europe Standard Time
+ Display = (GMT+01:00) Prague, Warsaw, Budapest
+ Dlt = Central Europe Daylight Time
+ MapID = -1,66
+
+ TZI = REG_BINARY 0x2C 0xFFFFFFC4 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000003 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+
+ W. Europe Standard Time
+ Display = (GMT+01:00) Berlin, Stockholm, Rome, Bern, Brussels, Vienna
+ Dlt = W. Europe Daylight Time
+ MapID = 2,3
+
+ TZI = REG_BINARY 0x2C 0xFFFFFFC4 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000003 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+
+ E. Europe Standard Time
+ Display = (GMT+02:00) Eastern Europe
+ Dlt = E. Europe Daylight Time
+ MapID = 4,5
+
+ TZI = REG_BINARY 0x2C 0xFFFFFF88 0x00000000 0xFFFFFFC4 0x00090000 0x00050000 0x00000001 0x00000000 0x00030000 0x00050000 0x00000000 0x00000000
+
+ GFT Standard Time
+ Display = (GMT+02:00) Athens, Helsinki, Istanbul
+ Dlt = GFT Daylight Time
+ MapID = -1,67
+
+ TZI = REG_BINARY 0x2C 0xFFFFFF88 0x00000000 0xFFFFFFC4 0x00090000 0x00050000 0x00000000 0x00000000 0x00030000 0x00050000 0x00000000 0x00000000
+
+ E. South America Standard Time
+ Display = (GMT-03:00) Brasilia
+ Dlt = E. South America Daylight Time
+ MapID = -1,80
+
+ TZI = REG_BINARY 0x2C 0x000000B4 0x00000000 0xFFFFFFC4 0x00020000 0x00020000 0x00000002 0x00000000 0x000a0000 0x00030000 0x00000002 0x00000000
+
+ Atlantic Standard Time
+ Display = (GMT-04:00) Atlantic Time (Canada)
+ Dlt = Atlantic Daylight Time
+ MapID = 40,41
+
+ TZI = REG_BINARY 0x2C 0x000000F0 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+
+ Eastern Standard Time
+ Display = (GMT-05:00) Eastern Time (US & Canada)
+ Dlt = Eastern Daylight Time
+ MapID = 38,39
+
+ TZI = REG_BINARY 0x2C 0x0000012C 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+
+ Central Standard Time
+ Display = (GMT-06:00) Central Time (US & Canada)
+ Dlt = Central Daylight Time
+ MapID = 36,37
+
+ TZI = REG_BINARY 0x2C 0x00000168 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+
+ Mountain Standard Time
+ Display = (GMT-07:00) Mountain Time (US & Canada)
+ Dlt = Mountain Daylight Time
+ MapID = 34,35
+
+ TZI = REG_BINARY 0x2C 0x000001A4 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+
+ Pacific Standard Time
+ Display = (GMT-08:00) Pacific Time (US & Canada); Tijuana
+ Dlt = Pacific Daylight Time
+ MapID = 32,33
+
+ TZI = REG_BINARY 0x2C 0x000001E0 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+
+ Alaskan Standard Time
+ Display = (GMT-09:00) Alaska
+ Dlt = Alaskan Daylight Time
+ MapID = 30,31
+
+ TZI = REG_BINARY 0x2C 0x0000021C 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+
+ Hawaiian Standard Time
+ Display = (GMT-10:00) Hawaii
+ Dlt = Hawaiian Daylight Time
+ MapID = 28,29
+
+ TZI = REG_BINARY 0x2C 0x00000258 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Samoa Standard Time
+ Display = (GMT-11:00) Midway Island, Samoa
+ Dlt = Samoa Daylight Time
+ MapID = 26,27
+
+ TZI = REG_BINARY 0x2C 0x00000294 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ New Zealand Standard Time
+ Display = (GMT+12:00) Wellington, Auckland
+ Dlt = New Zealand Daylight Time
+ MapID = 78,79
+
+ TZI = REG_BINARY 0x2C 0xFFFFFD30 0x00000000 0xFFFFFFC4 0x00030000 0x00030000 0x00000002 0x00000000 0x000a0000 0x00010000 0x00000002 0x00000000
+
+ Sydney Standard Time
+ Display = (GMT+10:00) Brisbane, Melbourne, Sydney
+ Dlt = Sydney Daylight Time
+ MapID = 20,21
+
+ TZI = REG_BINARY 0x2C 0xFFFFFDA8 0x00000000 0xFFFFFFC4 0x00030000 0x00010000 0x00000002 0x00000000 0x000a0000 0x00050000 0x00000002 0x00000000
+
+ Cen. Australia Standard Time
+ Display = (GMT+09:30) Adelaide
+ Dlt = Cen. Australia Daylight Time
+ MapID = -1,76
+
+ TZI = REG_BINARY 0x2C 0xFFFFFDC6 0x00000000 0xFFFFFFC4 0x00030000 0x00010000 0x00000002 0x00000000 0x000a0000 0x00050000 0x00000002 0x00000000
+
+ Tokyo Standard Time
+ Display = (GMT+09:00) Tokyo, Osaka, Sapporo, Seoul, Yakutsk
+ Dlt = Tokyo Daylight Time
+ MapID = 18,19
+
+ TZI = REG_BINARY 0x2C 0xFFFFFDE4 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Taipei Standard Time
+ Display = (GMT+08:00) Hong Kong, Perth, Singapore, Taipei
+ Dlt = Taipei Daylight Time
+ MapID = 16,17
+
+ TZI = REG_BINARY 0x2C 0xFFFFFE20 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Bangkok Standard Time
+ Display = (GMT+07:00) Bangkok, Jakarta, Hanoi
+ Dlt = Bangkok Daylight Time
+ MapID = 14,15
+
+ TZI = REG_BINARY 0x2C 0xFFFFFE5C 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ India Standard Time
+ Display = (GMT+05:30) Bombay, Calcutta, Madras, New Delhi, Colombo
+ Dlt = India Daylight Time
+ MapID = -1,74
+
+ TZI = REG_BINARY 0x2C 0xFFFFFEB6 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Arabian Standard Time
+ Display = (GMT+04:00) Abu Dhabi, Muscat, Tbilisi
+ Dlt = Arabian Daylight Time
+ MapID = 8,9
+
+ TZI = REG_BINARY 0x2C 0xFFFFFF10 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Iran Standard Time
+ Display = (GMT+03:30) Tehran
+ Dlt = Iran Daylight Time
+ MapID = -1,72
+
+ TZI = REG_BINARY 0x2C 0xFFFFFF2E 0x00000000 0xFFFFFFC4 0x00090000 0x00040002 0x00000002 0x00000000 0x00030000 0x00010000 0x00000002 0x00000000
+
+ Saudi Arabia Standard Time
+ Display = (GMT+03:00) Baghdad, Kuwait, Nairobi, Riyadh
+ Dlt = Saudi Arabia Daylight Time
+ MapID = -1,71
+
+ TZI = REG_BINARY 0x2C 0xFFFFFF4C 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Israel Standard Time
+ Display = (GMT+02:00) Israel
+ Dlt = Israel Daylight Time
+ MapID = -1,70
+
+ TZI = REG_BINARY 0x2C 0xFFFFFF88 0x00000000 0xFFFFFFC4 0x00090000 0x00010000 0x00000002 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+
+ Newfoundland Standard Time
+ Display = (GMT-03:30) Newfoundland
+ Dlt = Newfoundland Daylight Time
+ MapID = -1,81
+
+ TZI = REG_BINARY 0x2C 0x000000D2 0x00000000 0xFFFFFFC4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+
+ Azores Standard Time
+ Display = (GMT-01:00) Azores, Cape Verde Is.
+ Dlt = Azores Daylight Time
+ MapID = 46,47
+
+ TZI = REG_BINARY 0x2C 0x0000003C 0x00000000 0xFFFFFFC4 0x00090000 0x00050000 0x00000002 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+
+ Mid-Atlantic Standard Time
+ Display = (GMT-02:00) Mid-Atlantic
+ Dlt = Mid-Atlantic Daylight Time
+ MapID = 44,45
+
+ TZI = REG_BINARY 0x2C 0x00000078 0x00000000 0xFFFFFFC4 0x00090000 0x00050000 0x00000002 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+
+ GMT Standard Time
+ Display = (GMT) Monrovia, Casablanca
+ Dlt = GMT DST
+ MapID = 88,89
+
+ TZI = REG_BINARY 0x2C 0x00000000 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ SA Eastern Standard Time
+ Display = (GMT-03:00) Buenos Aires, Georgetown
+ Dlt = SA Eastern Daylight Time
+ MapID = 42,43
+
+ TZI = REG_BINARY 0x2C 0x000000B4 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ SA Western Standard Time
+ Display = (GMT-04:00) Caracas, La Paz
+ Dlt = SA Western Daylight Time
+ MapID = -1,82
+
+ TZI = REG_BINARY 0x2C 0x000000F0 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ US Eastern Standard Time
+ Display = (GMT-05:00) Indiana (East)
+ Dlt = US Eastern Daylight Time
+ MapID = -1,84
+
+ TZI = REG_BINARY 0x2C 0x0000012C 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ SA Pacific Standard Time
+ Display = (GMT-05:00) Bogota, Lima
+ Dlt = SA Pacific Daylight Time
+ MapID = -1,83
+
+ TZI = REG_BINARY 0x2C 0x0000012C 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Canada Central Standard Time
+ Display = (GMT-06:00) Saskatchewan
+ Dlt = Canada Central Daylight Time
+ MapID = -1,86
+
+ TZI = REG_BINARY 0x2C 0x00000168 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Mexico Standard Time
+ Display = (GMT-06:00) Mexico City, Tegucigalpa
+ Dlt = Mexico Daylight Time
+ MapID = -1,85
+
+ TZI = REG_BINARY 0x2C 0x00000168 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ US Mountain Standard Time
+ Display = (GMT-07:00) Arizona
+ Dlt = US Mountain Daylight Time
+ MapID = -1,87
+
+ TZI = REG_BINARY 0x2C 0x000001A4 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Dateline Standard Time
+ Display = (GMT-12:00) Eniwetok, Kwajalein
+ Dlt = Dateline Daylight Time
+ MapID = 24,25
+
+ TZI = REG_BINARY 0x2C 0x000002D0 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Fiji Standard Time
+ Display = (GMT+12:00) Fiji, Kamchatka, Marshall Is.
+ Dlt = Fiji Daylight Time
+ MapID = 24,25
+
+ TZI = REG_BINARY 0x2C 0xFFFFFD30 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Central Pacific Standard Time
+ Display = (GMT+11:00) Magadan, Solomon Is., New Caledonia
+ Dlt = Central Pacific Daylight Time
+ MapID = 22,23
+
+ TZI = REG_BINARY 0x2C 0xFFFFFD6C 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Tasmania Standard Time
+ Display = (GMT+10:00) Hobart
+ Dlt = Tasmania Daylight Time
+ MapID = 20,-1
+
+ TZI = REG_BINARY 0x2C 0xFFFFFDA8 0x00000000 0xFFFFFFC4 0x00030000 0x00050000 0x00000002 0x00000000 0x000a0000 0x00010000 0x00000002 0x00000000
+
+ West Pacific Standard Time
+ Display = (GMT+10:00) Guam, Port Moresby, Vladivostok
+ Dlt = West Pacific Daylight Time
+ MapID = -1,77
+
+ TZI = REG_BINARY 0x2C 0xFFFFFDA8 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ AUS Central Standard Time
+ Display = (GMT+09:30) Darwin
+ Dlt = AUS Central Daylight Time
+ MapID = -1,76
+
+ TZI = REG_BINARY 0x2C 0xFFFFFDC6 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ China Standard Time
+ Display = (GMT+08:00) Beijing, Chongqing, Urumqi
+ Dlt = China Daylight Time
+ MapID = -1,75
+
+ TZI = REG_BINARY 0x2C 0xFFFFFE20 0x00000000 0xFFFFFFC4 0x00090000 0x00020000 0x00000002 0x00000000 0x00040000 0x00020000 0x00000002 0x00000000
+
+ Central Asia Standard Time
+ Display = (GMT+06:00) Almaty, Dhaka
+ Dlt = Central Asia Daylight Time
+ MapID = 12,13
+
+ TZI = REG_BINARY 0x2C 0xFFFFFE98 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ West Asia Standard Time
+ Display = (GMT+05:00) Islamabad, Karachi, Ekaterinburg, Tashkent
+ Dlt = West Asia Daylight Time
+ MapID = 10,11
+
+ TZI = REG_BINARY 0x2C 0xFFFFFED4 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Afghanistan Standard Time
+ Display = (GMT+04:30) Kabul
+ Dlt = Afghanistan Daylight Time
+ MapID = -1,73
+
+ TZI = REG_BINARY 0x2C 0xFFFFFEF2 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Egypt Standard Time
+ Display = (GMT+02:00) Cairo
+ Dlt = Egypt Daylight Time
+ MapID = 4,68
+
+ TZI = REG_BINARY 0x2C 0xFFFFFF88 0x00000000 0xFFFFFFC4 0x00090000 0x00050003 0x00000002 0x00000000 0x00050000 0x00010005 0x00000002 0x00000000
+
+ South Africa Standard Time
+ Display = (GMT+02:00) Harare, Pretoria
+ Dlt = South Africa Daylight Time
+ MapID = 4,69
+
+ TZI = REG_BINARY 0x2C 0xFFFFFF88 0x00000000 0xFFFFFFC4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+
+ Russian Standard Time
+ Display = (GMT+03:00) Moscow, St. Petersburg, Kazan, Volgograd
+ Dlt = Russian Daylight Time
+ MapID = 6,7
+
+ TZI = REG_BINARY 0x2C 0xFFFFFF4C 0x00000000 0xFFFFFFC4 0x00090000 0x00050000 0x00000002 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+
+ Type 1 Installer
+ Log events = REG_DWORD 0
+ Copyrights
+ EDXP22M?M[*$SM%R*P>S = REG_DWORD 1337
+ BEMB>C&/S4V!& = REG_DWORD 784
+ TX86%AS:_X[RE;H48<JS = REG_DWORD 1406
+ U,O = REG_DWORD 208
+ A2<!BMGS.?PB-: = REG_DWORD 863
+ M$5M^BJ/TDI/7JC2!SNB,CEF = REG_DWORD 1552
+ E:?D.Q = REG_DWORD 385
+ MMR6D5B)E = REG_DWORD 587
+ A,S(&ILYKM[:S_<-S1 = REG_DWORD 1224
+ C[^68EECQ/H/9M3E:* = REG_DWORD 1168
+ U*M = REG_DWORD 204
+ BEUHJ&T?,$0<IU8SC!OP = REG_DWORD 1295
+ DM+EM = REG_DWORD 334
+ I<GH<([$1:S07G$;O'8>[OC1 = REG_DWORD 1484
+ A:/IG0F&ZAP7<V%K<IRQ&M89ZC = REG_DWORD 1699
+ LYV3_M/RV6<+5 = REG_DWORD 899
+ P75CL!JG[OP?G.O)U[:^^(1VM<^M%BL&T_:NKEW = REG_DWORD 2727
+ C[^68ECE+D3C,MPD?'+:0S = REG_DWORD 1399
+ GUV;<,8-XFJM = REG_DWORD 815
+ TB:38TBF68:Z/7J1 = REG_DWORD 1018
+ C[_%1W+R4?]S7H = REG_DWORD 969
+ BIR:.&K:2&V2BURZ;V*[57QMW8W = REG_DWORD 1817
+ BIR:.&K:2&V2BURZ;V*[57][MH$M = REG_DWORD 1875
+ BIR:.&K:2&QM<4F?0K.LMPJ3-G_H)6X = REG_DWORD 1980
+ BIR:.&K:2&QM<4F?0K.[^][.\D2B]Z1&_67) = REG_DWORD 2362
+ Type 1 Fonts [WorldRW AdminFull SystemFull CreatorFull]
+
+ Winlogon [WorldR AdminFull SystemOpRWD SystemFull CreatorFull]
+#if defined(_CAIRO_)
+ System=spmgr.exe
+#else
+ System=lsass.exe
+#endif
+ AutoRestartShell = REG_DWORD 1
+ Shell=Explorer.exe
+ DefaultUserName=
+ DefaultDomainName=
+ AutoAdminLogon=0
+ VmApplet=rundll32 shell32,Control_RunDLL "sysdm.cpl"
+#if defined(_CAIRO_)
+ Userinit=userinit,nddeagnt.exe,winpopup.exe
+#else
+ Userinit=userinit,nddeagnt.exe
+#endif
+ ReportBootOk=1
+ LegalNoticeCaption=
+ LegalNoticeText=
+ ShutdownWithoutLogon=1
+ PowerdownAfterShutdown=0
+
+ Windows [WorldR AdminFull SystemFull CreatorFull]
+ Spooler=yes
+ DeviceNotSelectedTimeout=15
+ TransmissionRetryTimeout=90
+ swapdisk=
+ AppInit_DLLs=
+
+ FontSubstitutes [WorldRW AdminFull SystemFull CreatorFull]
+ Helv=MS Sans Serif
+ Tms Rmn=MS Serif
+ Times=Times New Roman
+ Helvetica=Arial
+ MS Shell Dlg=MS Sans Serif
+
+ GRE_Initialize [WorldRW AdminFull SystemFull CreatorFull]
+ FONTS.FON=vgasys.fon
+ FIXEDFON.FON=vgafix.fon
+ OEMFONT.FON=vgaoem.fon
+
+ FontCache [WorldR AdminFull]
+ MaxSize = REG_DWORD 128
+ MinInitSize = REG_DWORD 4
+ MinIncrSize = REG_DWORD 4
+
+ FontMapper [WorldR AdminFull]
+ FIXEDSYS = REG_DWORD 0x9000
+ COURIER = REG_DWORD 0x8800
+ MS SERIF = REG_DWORD 0x5000
+ MS SANS SERIF = REG_DWORD 0x1000
+ SMALL FONTS = REG_DWORD 0x0800
+ COURIER NEW = REG_DWORD 0x8000
+ TIMES NEW ROMAN = REG_DWORD 0x4000
+ ARIAL = REG_DWORD 0x0000
+ SYMBOL = REG_DWORD 0x4002
+ WINGDINGS = REG_DWORD 0x0002
+ SYMBOL1 = REG_DWORD 0xA002
+ WINGDINGS2 = REG_DWORD 0x8002
+ DEFAULT = REG_DWORD 0x0000
+
+ Fonts [WorldRW AdminFull SystemFull CreatorFull]
+ //
+ // Talk to the Setup guys to add fonts.
+ // Do not add them here.
+ //
+
+ Font Drivers [WorldR AdminFull]
+
+ Embedding [WorldRW AdminFull SystemFull CreatorFull]
+ SoundRec=Sound,Sound,sndrec32.exe,picture
+ Package=Package,Package,packager.exe,picture
+ PBrush=Paintbrush Picture,Paintbrush Picture,pbrush.exe,picture
+
+ Compatibility [WorldRW AdminFull SystemFull CreatorFull]
+ TURBOTAX=0x00080000
+ W4GLR=0x4000
+ W4GL=0x4000
+ NETSET2=0x0100
+ GUIDE=0x1000
+ EXCEL=0x1000
+ APORIA=0x0100
+ ED=0x00010000
+ PLUS=0x1000
+ PR2=0x2000
+ CHARISMA=0x2000
+ WINSIM=0x2000
+ DRAW=0x2000
+ PLANNER=0x2000
+ DESIGNER=0x2000
+ PM4=0x2000
+ MILESV3=0x1000
+ _BNOTES=0x24000
+ MCOURIER=0x0800
+ VISION=0x0040
+ PACKRAT=0x0800
+ WIN2WRS=0x1210
+ VB=0x0200
+ TME=0x0100
+ JW=0x42080
+ CP=0x0040
+ PIXIE=0x0040
+ REM=0x8022
+ AMIPRO=0x0010
+ CCMAIL=0x0008
+ WPWINFIL=0x0006
+ NOTSHELL=0x0001
+ TBOOK=0x0400
+ BALER=0x08000000
+ CORELPNT=0x08000000
+ MYST=0x08000000
+ QW=0x08000000
+ TL6=0x08000000
+
+ MCI Extensions [WorldRW AdminFull SystemFull CreatorFull]
+ Wav=WaveAudio
+ rmi=Sequencer
+ Mid=Sequencer
+ avi=avivideo
+
+ //
+ // Installed MCI drivers (MCI32) and dummy section
+ // (MCI) to make WOW applications happy
+ //
+
+ MCI32
+ WaveAudio=mciwave.dll
+ Sequencer=mciseq.dll
+ CDAudio=mcicda.dll
+ AVIVideo=mciavi32.dll
+
+ MCI [WorldRW AdminFull SystemFull CreatorFull]
+ WaveAudio=mciwave.drv
+ Sequencer=mciseq.drv
+ CDAudio=mcicda.drv
+ AVIVideo=mciavi.drv
+
+ //
+ // Sections used by the drivers control panel applet
+ // to keep track of installed drivers
+ //
+
+ Userinstallable.drivers
+
+ drivers.desc [WorldRW AdminFull SystemFull CreatorFull]
+
+ related.desc
+
+ //
+ // Installed drivers which respond to OpenDriver etc
+ //
+
+ Drivers32 [WorldR AdminFull SystemFull CreatorFull]
+ wave=mmdrv.dll
+ midi=mmdrv.dll
+ aux=mmdrv.dll
+ wavemapper=msacm32.drv
+ midimapper=midimap.dll
+ vidc.msvc=msvidc32.dll
+ vidc.cvid=iccvid.dll
+ vidc.mrle=msrle32.dll
+ vidc.iv31=ir32_32.dll
+ vidc.iv32=ir32_32.dll
+ msacm.msadpcm=msadp32.acm
+ msacm.imaadpcm=imaadp32.acm
+ msacm.msgsm610=msgsm32.acm
+ msacm.trspch=tssoft32.acm
+ msacm.msg711=msg711.acm
+
+ Drivers [WorldRW AdminFull SystemFull CreatorFull]
+ wave=mmdrv.dll
+ timer=timer.drv
+
+ AeDebug [WorldRW AdminFull SystemFull CreatorFull]
+ UserDebuggerHotKey = REG_DWORD 0
+ Debugger = drwtsn32 -p %ld -e %ld -g
+ Auto = 1
+
+ Image File Execution Options [WorldR AdminFull SystemFull CreatorFull]
+ Your Image File Name Here without a path
+ GlobalFlag = 0x000010F0
+ Debugger = ntsd -d
+
+ Perflib [WorldR AdminFull SystemFull CreatorFull]
+ Base Index = REG_DWORD 1847
+ Last Counter = REG_DWORD 1846
+ Last Help = REG_DWORD 1847
+ Version = REG_DWORD 0x00010001
+
+ //
+ // The Ports section is for compatibility only and is ignored by
+ // the system.
+ //
+
+ Ports [WorldRW AdminFull SystemFull CreatorFull]
+ LPT1: =
+ LPT2: =
+ LPT3: =
+ COM1: = 9600,n,8,1
+ COM2: = 9600,n,8,1
+ COM3: = 9600,n,8,1
+ COM4: = 9600,n,8,1
+ FILE: =
+
+ WOW [WorldRW AdminFull SystemFull CreatorFull]
+ //
+ // This subtree is for WOW compatibility and not used
+ // by Windows/NT
+ //
+
+ boot
+ shell=progman.exe
+ mouse.drv=mouse.drv
+ sound.drv=sound.drv
+ comm.drv=comm.drv
+ keyboard.drv=keyboard.drv
+ system.drv=system.drv
+ fixedfon.fon=vgafix.fon
+ oemfonts.fon=vgaoem.fon
+ fonts.fon=vgasys.fon
+ display.drv=vga.drv
+ language.dll=
+ network.drv=wfwnet.drv
+ drivers=mmsystem.dll
+
+ Compatibility
+ RELAY = 0x80000000
+ MAILSPL = 0x40000000
+ SHOPPER = 0x20000000
+ SHADOW = 0x10000000
+ ANIMATE = 0x08000000
+ COBOL = 0x08000000
+ WIN2WRS = 0x04000000
+ PHOTOSHO = 0x02000800 0x00800000
+ PM4 = 0x02004000
+ PSTYLER = 0x02000000
+ CHARISMA = 0x01000000
+ CHARM40 = 0x01000000
+ DESIGNER = 0x01000000
+ DRAW = 0x01000000
+ MGXPRINT = 0x01000000
+ WINCHART = 0x01000000
+ WPWIN = 0x00000100
+ WPWINFIL = 0x00400000
+ DEW = 0x00200000
+ WINPROJ = 0x00200000
+ MSWORKS = 0x00080002 0x01000000
+ IMPROV = 0x00020000
+ PM5APP = 0x00000000 0x00010000
+ SPJWIN30 = 0x00008000
+ MAIN123W = 0x00004000
+ PLAY = 0x00002000
+ PB030 = 0x00001000
+ XPRESS = 0x00000400 0x40000000
+ QPW = 0x00000200
+ WPWPRINT = 0x00000100
+ FH4 = 0x00000180
+ WINWORD = 0x00000040
+ DS40 = 0x01000000
+ CORELDRW = 0x00000020
+ DBASEWIN = 0x00000010
+ CORELCHT = 0x00000004
+ APPTU812 = 0x00000001
+ MSPUB = 0x00000002
+ STXR30 = 0x00000000 0x80000000
+ ISSET_SE = 0x00100000 0x20000000
+ NCSETUP = 0x00000000 0x20000000
+ MFWIN20 = 0x00000000 0x10000000
+ DB32W = 0x00000000 0x02000000
+ INSTBIN = 0x00000000 0x08000000
+ BBALL = 0x00000000 0x20000000
+ EXPLORE = 0x00000000 0x20000000
+ TSSETUP = 0x00000000 0x04000000
+ PAGEPLUS = 0x00000008
+ TUTORIAL = 0x00000000 0x00400000
+ MAVIS = 0x00000000 0x00200000
+ EMW = 0x00000000 0x00000001
+ DIRECTOR = 0x00000000 0x00100000
+ ENVOY = 0x00000000 0x00080000
+ TCADWIN = 0x00000000 0x00040000
+ PCH35NCM = 0x00000000 0x00020000
+ DICTED = 0x00000000 0x00010000
+ INSTALL = 0x00000000 0x00008000
+ XTALK = 0x00000000 0x00004000
+ NBAMW4V4 = 0x00040000
+ PREMIERE = 0x00000000 0x00002000
+ 123W = 0x00000000 0x04000000
+
+
+ keyboard
+ subtype=
+ type=4
+ keyboard.dll=
+
+ boot.description
+ keyboard.typ=Enhanced 101 or 102 key US and Non US keyboards
+ mouse.drv=Microsoft, or IBM PS/2
+ language.dll=English (American)
+ system.drv=MS-DOS or PC-DOS System
+ display.drv=VGA
+ network.drv=LAN Support
+
+ standard
+
+ NonWindowsApp
+
+ WowFax
+ SupportedFaxDrivers
+ DriverNames = REG_MULTI_SZ "WINFAX" \
+ "E-FAX" \
+ "MAXFAXP" \
+ "Quick Link II Fax" \
+ "Quick Link Gold" \
+ "Procomm Plus"
+
+ SetupPrograms
+ SetupProgramNames = REG_MULTI_SZ "setup" \
+ "install" \
+ "inst" \
+ "imposta" \
+ "ayarla" \
+ "felrak" \
+ "eviewset"
+
+
+ IniFileMapping [WorldR AdminFull SystemFull CreatorFull]
+ //
+ // This section defines the mapping of .ini file variables to
+ // their location in the Registry.
+ //
+
+ //
+ // The Win32 Profile API calls (Get/WriteProfile... and
+ // Get/WritePrivateProfile...) look for a mapping in this
+ // section. They do this by looking up the file name.ext
+ // portion of the profile file in this section. If a match
+ // is found, then it looks under that node for the specified
+ // application name. If a match is found, then it looks for
+ // variable name under that section. If not found, then the
+ // value of the (null) variable name is a string that points
+ // to a node in the registry, whose value keys are the variable
+ // names, so the Profile file APIs look there. If a specific
+ // mapping is found for the variable name, then its value points
+ // to the registry value that contains the variable value.
+ //
+ // Only if no mapping for either the application name or file
+ // name is found, do the Profile API calls go the the Windows
+ // server to look for an actual .ini file and read and write
+ // its contents. If there is a mapping for the file name but
+ // not the application name, and there is a (null) application
+ // name, then the value of the (null) variable will be used
+ // as the location in the registry of the variable, after appending
+ // the application name to it.
+ //
+ // In the string that points to a registry node, there are
+ // several prefixes that change the behavior of the ini
+ // file mapping:
+ //
+ // ! - this character forces all writes to go both to the
+ // registry and to the .INI file on disk.
+ //
+ // # - this character causes the registry value to be set
+ // to the value in the Win 3.1 .INI file when a new user
+ // logs in for the first time after setup.
+ //
+ // @ - this character prevents any reads from going to the
+ // .INI file on disk if the requested data is not found
+ // in the registry.
+ //
+ // USR: - this prefix stands for HKEY_CURRENT_USER and the text
+ // after the prefix is relative to that key.
+ //
+ // SYS: - this prefix stands for HKEY_LOCAL_MACHINE\Software and
+ // the text after the prefix is relative to that key.
+ //
+
+ win.ini
+ Windows
+ = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+ CursorBlinkRate = #USR:Control Panel\Desktop
+ BorderWidth = #USR:Control Panel\Desktop\WindowMetrics
+ ScreenSaveTimeOut = #USR:Control Panel\Desktop
+ ScreenSaveActive = #USR:Control Panel\Desktop
+ CoolSwitch = USR:Control Panel\Desktop
+ DragFullWindows = USR:Control Panel\Desktop
+
+ KeyboardSpeed = #USR:Control Panel\Keyboard
+ KeyboardDelay = #USR:Control Panel\Keyboard
+ InitialKeyboardIndicators = USR:Control Panel\Keyboard
+
+ Beep = #USR:Control Panel\Sound
+
+ SwapMouseButtons = #USR:Control Panel\Mouse
+ DoubleClickSpeed = #USR:Control Panel\Mouse
+ DoubleClickHeight = #USR:Control Panel\Mouse
+ DoubleClickWidth = #USR:Control Panel\Mouse
+ MouseThreshold1 = #USR:Control Panel\Mouse
+ MouseThreshold2 = #USR:Control Panel\Mouse
+ MouseSpeed = #USR:Control Panel\Mouse
+ SnapToDefaultButton = #USR:Control Panel\Mouse
+
+ Spooler = #SYS:Microsoft\Windows NT\CurrentVersion\Windows
+ DeviceNotSelectedTimeout = #SYS:Microsoft\Windows NT\CurrentVersion\Windows
+ TransmissionRetryTimeout = #SYS:Microsoft\Windows NT\CurrentVersion\Windows
+ swapdisk = SYS:Microsoft\Windows NT\CurrentVersion\Windows
+ AppInit_DLLs = SYS:Microsoft\Windows NT\CurrentVersion\Windows
+
+ DefaultSeparateVDM = \Registry\Machine\System\CurrentControlSet\Control\WOW
+// load = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// run = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// NullPort = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// Programs = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// Documents = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// device = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// DosPrint = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// NetWarn = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// DebugOptions = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// fPromptOnVerbose = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// fPromptOnWarning = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// fPromptOnError = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// fPrintVerbose = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+// fPrintFileLine = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+
+ Cursors = #USR:Control Panel\Cursors
+ NWCS = SYS:Microsoft\Windows NT\CurrentVersion\NWCS
+ Winlogon = SYS:Microsoft\Windows NT\CurrentVersion\Winlogon
+ DeskTop = #USR:Control Panel\Desktop
+ Console = USR:Console
+ Devices = USR:Software\Microsoft\Windows NT\CurrentVersion\Devices
+ PrinterPorts = USR:Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts
+ Embedding = !#SYS:Microsoft\Windows NT\CurrentVersion\Embedding
+ Extensions = #USR:Software\Microsoft\Windows NT\CurrentVersion\Extensions
+ MCI Extensions = SYS:Microsoft\Windows NT\CurrentVersion\MCI Extensions
+ Intl = #USR:Control Panel\International
+ Ports = SYS:Microsoft\Windows NT\CurrentVersion\Ports
+ Windows Help = USR:Software\Microsoft\Windows Help
+ Clock = #USR:Software\Microsoft\Clock
+ MSCharMap = #USR:Software\Microsoft\Charmap
+ Compatibility = #SYS:Microsoft\Windows NT\CurrentVersion\Compatibility
+ Fonts = #SYS:Microsoft\Windows NT\CurrentVersion\Fonts
+ FontSubstitutes = #SYS:Microsoft\Windows NT\CurrentVersion\FontSubstitutes
+ GRE_Initialize = SYS:Microsoft\Windows NT\CurrentVersion\GRE_Initialize
+ TrueType = #USR:Software\Microsoft\Windows NT\CurrentVersion\TrueType
+ Colors = #USR:Control Panel\Colors
+ Sounds = #USR:Control Panel\Sounds
+ IOProcs = #USR:Control Panel\IOProcs
+ Network
+ = USR:Software\Microsoft\Windows NT\CurrentVersion\Network\Persistent Connections
+ ExpandLogonDomain = SYS:Microsoft\Windows NT\CurrentVersion\Network\World Full Access Shared Parameters
+ Net_Files = USR:Software\Microsoft\Windows NT\CurrentVersion\Network\Persistent Connections
+ AeDebug = SYS:Microsoft\Windows NT\CurrentVersion\AeDebug
+ ModuleCompatibility = SYS:Microsoft\Windows NT\CurrentVersion\ModuleCompatibility
+
+ control.ini
+ Current = #USR:Control Panel\Current
+ Color Schemes = #USR:Control Panel\Color Schemes
+ Custom Colors = #USR:Control Panel\Custom Colors
+ Patterns = #USR:Control Panel\Patterns
+ Screen Saver.3DFlowerBox = USR:Control Panel\Screen Saver.3DFlowerBox
+ Screen Saver.3DFlyingObj = USR:Control Panel\Screen Saver.3DFlyingObj
+ Screen Saver.3DPipes = USR:Control Panel\Screen Saver.3DPipes
+ Screen Saver.3DMaze = USR:Control Panel\Screen Saver.3DMaze
+ Screen Saver.3DText = USR:Control Panel\Screen Saver.3DText
+ Screen Saver.Bezier = USR:Control Panel\Screen Saver.Bezier
+ Screen Saver.Marquee = #USR:Control Panel\Screen Saver.Marquee
+ Screen Saver.Mystify = #USR:Control Panel\Screen Saver.Mystify
+ Screen Saver.Stars = #USR:Control Panel\Screen Saver.Stars
+ MMCPL = USR:Control Panel\MMCPL
+ don't load = USR:Control Panel\don't load
+ Userinstallable.drivers = SYS:Microsoft\Windows NT\CurrentVersion\Userinstallable.drivers
+ drivers.desc = SYS:Microsoft\Windows NT\CurrentVersion\drivers.desc
+ related.desc = SYS:Microsoft\Windows NT\CurrentVersion\related.desc
+
+ regedt32.ini
+ = USR:Software\Microsoft\RegEdt32
+
+ ntnet.ini
+ = USR:Software\Microsoft\Windows NT\CurrentVersion\Network
+ Shared Parameters = SYS:Microsoft\Windows NT\CurrentVersion\Network\World Full Access Shared Parameters
+ SMAddOns = SYS:Microsoft\Windows NT\CurrentVersion\Network\SMAddOns
+ UMAddOns = SYS:Microsoft\Windows NT\CurrentVersion\Network\UMAddOns
+
+ winfile.ini
+ Settings = #USR:Software\Microsoft\File Manager\Settings
+ AddOns = SYS:Microsoft\Windows NT\CurrentVersion\File Manager\AddOns
+
+ Ntbackup.ini
+ = #USR:Software\Microsoft\Ntbackup
+
+ Clock.ini
+ = #USR:Software\Microsoft\Clock
+
+ schdpl32.ini
+ = USR:Software\Microsoft\Schedule+
+
+ msacm.ini
+ = USR:Software\Microsoft\Multimedia\Audio Compression Manager
+
+ KeyboardLayout.ini
+ =
+ Preload = USR:Keyboard Layout\Preload
+ Keyboard Layout
+ = \Registry\Machine\System\CurrentControlSet\Control\Keyboard Layout
+ Active = USR:Keyboard Layout
+ Substitutes
+ = USR:Keyboard Layout\Substitutes
+
+ system.ini
+ keyboard = SYS:Microsoft\Windows NT\CurrentVersion\WOW\keyboard
+ boot.description = SYS:Microsoft\Windows NT\CurrentVersion\WOW\boot.description
+ standard = SYS:Microsoft\Windows NT\CurrentVersion\WOW\standard
+ NonWindowsApp = SYS:Microsoft\Windows NT\CurrentVersion\WOW\NonWindowsApp
+ MCI = SYS:Microsoft\Windows NT\CurrentVersion\MCI
+ MCI32 = SYS:Microsoft\Windows NT\CurrentVersion\MCI32
+ drivers32 = SYS:Microsoft\Windows NT\CurrentVersion\Drivers32
+ drivers = #SYS:Microsoft\Windows NT\CurrentVersion\drivers
+ msacm.drv = USR:Software\Microsoft\Multimedia\Sound Mapper
+ boot
+ = SYS:Microsoft\Windows NT\CurrentVersion\WOW\boot
+ ScreenSaverIsSecure = USR:Control Panel\Desktop
+ ScreenSaverActive = USR:Control Panel\Desktop
+ SCRNSAVE.EXE = USR:Control Panel\Desktop
+ Shell = SYS:Microsoft\Windows NT\CurrentVersion\Winlogon
+
+ ImageFileExecutionOptions.ini
+ = SYS:Microsoft\Windows NT\CurrentVersion\Image File Execution Options
+
+ File Manager [WorldR AdminFull SystemFull CreatorFull SystemOpRWD PowerRWD]
+ AddOns
+
+ Network [WorldR AdminFull SystemFull CreatorFull SystemOpRWD PowerRWD]
+ SMAddOns
+ UMAddOns
+ Shared Parameters
+ World Full Access Shared Parameters [WorldFull]
+
+ Midimap [WorldRW AdminFull SystemFull CreatorFull]
+ Mapping Name=Sound System
+
+ ModuleCompatibility
+ CWD = 0x8000
+ MYST = 0x8000
+ PALED40 = 0x0002
+ USA = 0x8000
+ VB = 0x0002
+ VB40016 = 0x0002
+
+ Ole [WorldR AdminFull SystemFull CreatorFull]
+ EnableDCOM = "Y"
+ DefaultLaunchPermission = REG_BINARY 0x0000009c 0x80040001 0x00000064 0x00000080 0x00000000 0x00000014 0x00500002 0x00000003 0x00180000 0x00000001 0x00000101 0x05000000 0x00000012 0x00000000 0x00180000 0x00000001 0x00000101 \
+ 0x05000000 0x00000004 0x00000000 0x00180000 0x00000001 0x00000201 0x05000000 0x00000020 0x00000220 0x00000501 0x05000000 0x00000015 0x1f845fa0 0x496b2e5e 0x030312ce 0x000001f4 0x00000501 0x05000000 \
+ 0x00000015 0x1f845fa0 0x496b2e5e 0x030312ce 0x000001f4
+
+ Rpc [WorldR AdminFull SystemFull CreatorFull]
+ DCOM Protocols = REG_MULTI_SZ "ncadg_ip_udp" \
+ "ncadg_ipx" \
+ "ncacn_ip_tcp" \
+ "ncacn_spx" \
+ "ncacn_nb_nb" \
+ "ncacn_nb_ipx"
+ NameService [WorldR AdminFull SystemFull CreatorFull]
+ Protocol=ncacn_np
+ NetworkAddress=\\.
+ ServerNetworkAddress=\\.
+ Endpoint=\pipe\locator
+ DefaultSyntax=3
+ NetBios [WorldR AdminFull SystemFull CreatorFull]
+ ServerProtocols [WorldR AdminFull SystemFull CreatorFull]
+ ncacn_np=rpclts1.dll
+ ncalrpc=ncalrpc
+ ClientProtocols [WorldR AdminFull SystemFull CreatorFull]
+ ncacn_np=rpcltc1.dll
+ ncalrpc=ncalrpc
+ Secure [WorldR AdminFull SystemOpFull SystemFull CreatorFull]
+ NetDDE [SystemFull AdminFull]
+ DDE Shares
+ SerialNumber = REG_BINARY 8 0x09000005 0x01000000
+ CLPBK$
+ fuCmdShow = REG_DWORD 0x7
+ ItemList = REG_MULTI_SZ
+ NewStyleLink = REG_SZ
+ NumItems = REG_DWORD 0x0
+ OldStyleLink = REG_SZ
+ Revision = REG_DWORD 0x1
+ SecurityDescriptor = REG_BINARY 0x6C \
+ 0x80040001 \
+ 0x0000004C \
+ 0x0000005C \
+ 0x00000000 \
+ 0x00000014 \
+ 0x00380002 \
+ 0x00000002 \
+ 0x00180200 \
+ 0x000F03FF \
+ 0x00000201 \
+ 0x05000000 \
+ 0x00000020 \
+ 0x00000220 \
+ 0x00180200 \
+ 0x000002BD \
+ 0x00000101 \
+ 0x01000000 \
+ 0x00000000 \
+ 0x00000220 \
+ 0x00000201 \
+ 0x05000000 \
+ 0x00000020 \
+ 0x00000220 \
+ 0x00000201 \
+ 0x05000000 \
+ 0x00000020 \
+ 0x00000220
+ SerialNumber = REG_BINARY 8 0x09000005 0x01000000
+ Service = REG_DWORD 0x1
+ SharedFlag = REG_DWORD 0x1
+ ShareName = REG_SZ CLPBK$
+ ShareType = REG_DWORD 0x4
+ StartAppFlag = REG_DWORD 0x0
+ StaticDataLink = REG_SZ ClipSrv|System
+ Hearts$
+ fuCmdShow = REG_DWORD 0x1
+ ItemList = REG_MULTI_SZ
+ NewStyleLink = REG_SZ MSHearts|Hearts
+ NumItems = REG_DWORD 0x0
+ OldStyleLink = REG_SZ MSHearts|Hearts
+ Revision = REG_DWORD 0x1
+ SecurityDescriptor = REG_BINARY 0x68 \
+ 0x80040001 \
+ 0x00000048 \
+ 0x00000058 \
+ 0x00000000 \
+ 0x00000014 \
+ 0x00340002 \
+ 0x00000002 \
+ 0x00180000 \
+ 0x000F03FF \
+ 0x00000201 \
+ 0x05000000 \
+ 0x00000020 \
+ 0x00000220 \
+ 0x00140000 \
+ 0x000102FD \
+ 0x00000101 \
+ 0x01000000 \
+ 0x00000000 \
+ 0x00000201 \
+ 0x05000000 \
+ 0x00000020 \
+ 0x00000220 \
+ 0x00000201 \
+ 0x05000000 \
+ 0x00000020 \
+ 0x00000220
+ SerialNumber = REG_BINARY 8 0x09000004 0x01000000
+ Service = REG_DWORD 0x0
+ SharedFlag = REG_DWORD 0x1
+ ShareName = REG_SZ Hearts$
+ ShareType = REG_DWORD 0x7
+ StartAppFlag = REG_DWORD 0x0
+ StaticDataLink = REG_SZ MSHearts|Hearts
+ Chat$
+ fuCmdShow = REG_DWORD 0x6
+ ItemList = REG_MULTI_SZ
+ NewStyleLink = REG_SZ
+ NumItems = REG_DWORD 0x0
+ OldStyleLink = REG_SZ
+ Revision = REG_DWORD 0x1
+ SecurityDescriptor = REG_BINARY 0x68 \
+ 0x80040001 \
+ 0x00000048 \
+ 0x00000058 \
+ 0x00000000 \
+ 0x00000014 \
+ 0x00340002 \
+ 0x00000002 \
+ 0x00180000 \
+ 0x000F03FF \
+ 0x00000201 \
+ 0x05000000 \
+ 0x00000020 \
+ 0x00000220 \
+ 0x00140000 \
+ 0x000102FD \
+ 0x00000101 \
+ 0x01000000 \
+ 0x00000000 \
+ 0x00000201 \
+ 0x05000000 \
+ 0x00000020 \
+ 0x00000220 \
+ 0x00000201 \
+ 0x05000000 \
+ 0x00000020 \
+ 0x00000220
+ SerialNumber = REG_BINARY 8 0x09000003 0x01000000
+ Service = REG_DWORD 0
+ SharedFlag = REG_DWORD 0x1
+ ShareName = REG_SZ Chat$
+ ShareType = REG_DWORD 0x4
+ StartAppFlag = REG_DWORD 0x1
+ StaticDataLink = REG_SZ WinChat|Chat
+ Parameters
+ General
+ NDDEAGNT
+ NDDEAPI
+ NetBIOS
+
+ Cryptography
+ Defaults
+ //
+ // These 2 keys get populated with value entries and
+ // additional keys during setup
+ //
+ Provider
+ Provider Types
+
+ DirectPlay
+ Services
+ {5146ab8cb6b1ce11920c00aa006c4972}
+ Path = REG_EXPAND_SZ %SystemRoot%\system32\dpwsock.dll
+ Description = REG_SZ WinSock IPX Connection For DirectPlay
+
+ Players
+
+ Sessions
+
+ {5246ab8cb6b1ce11920c00aa006c4972}
+ Path = REG_EXPAND_SZ %SystemRoot%\system32\dpserial.dll
+ Description = REG_SZ Modem Connection For DirectPlay
+
+ Players
+
+ Sessions
+
+ {5046ab8cb6b1ce11920c00aa006c4972}
+ Path = REG_EXPAND_SZ %SystemRoot%\system32\dpwsock.dll
+ Description = REG_SZ WinSock TCP Connection For DirectPlay
+
+ Players
+
+ Sessions
+
+
+
+#if defined(_CAIRO_)
+ AlertSystem [SystemFull AdminFull]
+ AlertCategories
+ 0
+ DisplayName = REG_SZ System Events
+ 1 = REG_SZ Legacy
+
+ 1
+ DisplayName = REG_SZ User Notification
+ 1 = REG_SZ Print Job done
+ 2 = REG_SZ Fax
+
+ 2
+ DisplayName = REG_SZ Application Notification
+ 1 = REG_SZ Memory
+
+ 3
+ DisplayName = REG_SZ Application Management
+ 1 = REG_SZ Token Granted
+ 2 = REG_SZ Token Denied
+
+ 4
+ DisplayName = REG_SZ Printers and Shared Resources
+ 1 = REG_SZ Toner
+ 2 = REG_SZ Device Driver
+ 3 = REG_SZ Paper
+
+ 5
+ DisplayName = REG_SZ Security Management
+ 1 = REG_SZ ACL
+
+ 6
+ DisplayName = REG_SZ User Accounts
+ 1 = REG_SZ Created
+ 2 = REG_SZ Deleted
+
+ 7
+ DisplayName = REG_SZ Storage
+ 1 = REG_SZ Replication
+ 2 = REG_SZ Quotas
+ 3 = REG_SZ OFS
+ 4 = REG_SZ NTFS
+ 5 = REG_SZ FAT
+
+ 8
+ DisplayName = REG_SZ Distributed Services
+ 1 = REG_SZ DFS
+ 2 = REG_SZ DS
+
+ 9
+ DisplayName = REG_SZ LAN
+ 1 = REG_SZ Bridge
+ 2 = REG_SZ Cabling
+
+ 10
+ DisplayName = REG_SZ WAN
+ 1 = REG_SZ Router
+ 2 = REG_SZ Switch
+ 3 = REG_SZ Telephony
+
+ 11
+ DisplayName = REG_SZ Catalog
+ 1 = REG_SZ Catalog
+
+ 12
+ DisplayName = REG_SZ Batch Job
+ 1 = REG_SZ Failed to Start
+ 2 = REG_SZ Failed to Complete
+
+ 13
+ DisplayName = REG_SZ Backup
+ 1 = REG_SZ Failed to Start
+ 2 = REG_SZ Started
+ 3 = REG_SZ Failed to Complete
+ 4 = REG_SZ Completed
+
+ 14
+ DisplayName = REG_SZ System Software
+ 1 = REG_SZ Kernel
+ 2 = REG_SZ Drivers
+
+ 15
+ DisplayName = REG_SZ System Hardware
+ 1 = REG_SZ CD ROM
+ 2 = REG_SZ Memory
+ 3 = REG_SZ Bus
+ 4 = REG_SZ SCSI
+ 5 = REG_SZ IDE
+ 6 = REG_SZ NIC
+
+ 16
+ DisplayName = REG_SZ System Monitoring
+ 1 = REG_SZ SYSMON
+ 2 = REG_SZ Bloodhound
+
+ 17
+ DisplayName = REG_SZ Helpdesk & Diagnostics
+ 1 = REG_SZ Dr. Watson
+
+ 18
+ DisplayName = REG_SZ Alert Notify
+ 1 = REG_SZ Forward Incomplete
+ 2 = REG_SZ Registration Canceled
+#endif
diff --git a/public/oak/bin/software.log b/public/oak/bin/software.log
new file mode 100644
index 000000000..a0d461126
--- /dev/null
+++ b/public/oak/bin/software.log
@@ -0,0 +1,3209 @@
+SOFTWARE
+ Program Groups [8 1 17 16 13 5]
+ Classes [8 24 1 17 5]
+ DirectDraw
+ = DirectDraw Object
+ CLSID
+ = {D7B70EE0-4340-11CF-B063-0020AFC2CD35}
+ DirectDrawClipper
+ = DirectDraw Clipper Object
+ CLSID
+ = {593817A0-7DB3-11CF-A2DE-00AA00B93356}
+ DirectSound
+ = DirectSound Object
+ CLSID
+ = {47D4D946-62E8-11cf-93BC-444553540000}
+ AppID
+ {00020C01-0000-0000-C000-000000000046}
+ = Sound Recorder
+ {00022601-0000-0000-C000-000000000046}
+ = Media Player
+ {D3E34B21-9D75-101A-8C3D-00AA001A1652}
+ = Paintbrush
+ .pbk
+ = pbkfile
+ .rnk
+ = rnkfile
+ pbkfile
+ = Dial-Up Phonebook
+ CLSID
+ = {a4d92742-67cd-11cf-96f2-00aa00a11dd9}
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasshell.dll,0
+ shell
+ Open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasphone.exe -f "%1"
+ rnkfile
+ = Dial-Up Shortcut
+ CLSID
+ = {a4d92741-67cd-11cf-96f2-00aa00a11dd9}
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasshell.dll,1
+ shell
+ Dial
+ = &Dial
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasphone.exe -lt "%1"
+ Hang Up
+ = Hang &up
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasphone.exe -lh "%1"
+ Edit entry and modem settings
+ = &Edit entry and modem settings
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasphone.exe -v -le "%1"
+ shellex
+ PropertySheetHandlers
+ {a4d92741-67cd-11cf-96f2-00aa00a11dd9}
+ Directory
+ = File Folder
+ shellex
+ CopyHookHandlers
+ Sharing
+ = {40dd6e20-7c17-11ce-a804-00aa003ca9f6}
+ Folder
+ shellex
+ PropertySheetHandlers
+ Sharing
+ = {f81e9010-6ea4-11ce-a7ff-00aa003ca9f6}
+ ContextMenuHandlers
+ Sharing
+ = {f81e9010-6ea4-11ce-a7ff-00aa003ca9f6}
+ Network
+ SharingHandler
+ = ntshrui.dll
+ Type
+ 2
+ = Microsoft Windows Network shell extensions
+ shellex
+ PropertySheetHandlers
+ Microsoft Windows Network objects
+ = {59be4990-f85c-11ce-aff7-00aa003ca9f6}
+ Package
+ = Package
+ CLSID
+ = {0003000C-0000-0000-C000-000000000046}
+ protocol
+ StdFileEditing
+ server
+ = packager.exe
+ verb
+ 1
+ = &Edit Package
+ 0
+ = &Activate Contents
+ regedit
+ = Registration Entries
+ shell
+ open
+ command
+ = regedit.exe %1
+ .reg
+ = regedit
+ SoundRec
+ = Sound
+ CLSID
+ = {00020C01-0000-0000-C000-000000000046}
+ protocol
+ StdFileEditing
+ server
+ = sndrec32.exe
+ verb
+ 0
+ = &Play
+ 1
+ = &Edit
+ 2
+ = &Open
+ StdExecute
+ server
+ = sndrec32.exe
+ shell
+ open
+ command
+ = sndrec32.exe %1
+ AVIFile
+ = Video Clip
+ CLSID
+ = {00022602-0000-0000-C000-000000000046}
+ Compressors
+ auds
+ = {0002000F-0000-0000-C000-000000000046}
+ vids
+ = {00020001-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,3
+ Extensions
+ AU
+ = {00020003-0000-0000-C000-000000000046}
+ AVI
+ = {00020000-0000-0000-C000-000000000046}
+ WAV
+ = {00020003-0000-0000-C000-000000000046}
+ RIFFHandlers
+ AVI
+ = {00020000-0000-0000-C000-000000000046}
+ WAVE
+ = {00020003-0000-0000-C000-000000000046}
+ Insertable
+ =
+ protocol
+ StdFileEditing
+ verb
+ 0
+ = &Play
+ 1
+ = &Edit
+ 2
+ = &Open
+ PackageObjects
+ =
+ server
+ = mplay32.exe /avi
+ Handler
+ = mciole16.dll
+ Handler32
+ = mciole32.dll
+ StdExecute
+ server
+ = mplay32.exe /avi
+ shell
+ open
+ command
+ = mplay32.exe /play /close "%L"
+ MIDFile
+ = MIDI Sequence
+ CLSID
+ = {00022603-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,5
+ Insertable
+ =
+ protocol
+ StdFileEditing
+ verb
+ 0
+ = &Play
+ 1
+ = &Edit
+ 2
+ = &Open
+ PackageObjects
+ =
+ server
+ = mplay32.exe /mid
+ Handler
+ = mciole16.dll
+ Handler32
+ = mciole32.dll
+ StdExecute
+ server
+ = mplay32.exe /mid
+ shell
+ open
+ command
+ = mplay32.exe /play /close "%L"
+ MPlayer
+ = Media Clip
+ CLSID
+ = {00022601-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,1
+ Insertable
+ =
+ protocol
+ StdFileEditing
+ verb
+ 0
+ = &Play
+ 1
+ = &Edit
+ 2
+ = &Open
+ PackageObjects
+ =
+ server
+ = mplay32.exe
+ Handler
+ = mciole16.dll
+ Handler32
+ = mciole32.dll
+ StdExecute
+ server
+ = mplay32.exe
+ shell
+ open
+ command
+ = mplay32.exe /play /close "%L"
+ .rmi
+ = MPlayer
+ .mid
+ = MIDFile
+ .avi
+ = AVIFile
+ .mmm
+ = MPlayer
+ .wav
+ = SoundRec
+ wrifile
+ = Write Document
+ shell
+ open
+ command
+ = write.exe %1
+ print
+ command
+ = write.exe /p %1
+ .wri
+ = wrifile
+ txtfile
+ = Text File
+ shell
+ open
+ command
+ = notepad.exe %1
+ print
+ command
+ = notepad.exe /p %1
+ .txt
+ = txtfile
+ .wtx
+ = txtfile
+ .scp
+ = txtfile
+ .ini
+ = inifile
+ .job
+ = JobObject
+ JobObject
+ = Scheduler Job Object
+ CLSID
+ = {148BD520-A2AB-11CE-B11F-00AA00530503}
+ .que
+ = QueueObject
+ QueueObject
+ = Scheduler Queue Object
+ CLSID
+ = {255b3f60-829e-11cf-8d8b-00aa0060f5bf}
+ .log
+ = txtfile
+ helpfile [8 1 17 5]
+ = Help File
+ shell
+ open
+ command
+ = winhlp32.exe %1
+ .hlp [8 1 17 5]
+ = helpfile
+ StaticMetafile
+ = Picture (Metafile)
+ StaticEnhancedMetafile
+ = Picture (Enhanced Metafile)
+ StaticDib
+ = Picture (Device Independent Bitmap)
+ file
+ CLSID
+ = {00000303-0000-0000-C000-000000000046}
+ fonfile
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe /p %1
+ ttffile
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe /p %1
+ pfmfile
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontview.exe /p %1
+ .pma
+ = PerfFile
+ .pmc
+ = PerfFile
+ .pml
+ = PerfFile
+ .pmr
+ = PerfFile
+ .pmw
+ = PerfFile
+ PerfFile
+ = Performance Monitor File
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\perfmon.exe %1
+ CLSID
+ CLSID
+ = {0000031A-0000-0000-C000-000000000046}
+ {a4d92740-67cd-11cf-96f2-00aa00a11dd9}
+ = Dial-Up Networking
+ InProcServer32
+ = rasshell.dll
+ ThreadingModel = Apartment
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasshell.dll,0
+ shell
+ Open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rasphone.exe
+ {a4d92741-67cd-11cf-96f2-00aa00a11dd9}
+ = Dial-Up Shortcut
+ InprocServer32
+ = rasshell.dll
+ ThreadingModel = Apartment
+ AuxUserType
+ 2
+ = Dial-Up Shortcut
+ 3
+ = Dial-Up Networking
+ {a4d92742-67cd-11cf-96f2-00aa00a11dd9}
+ = Dial-Up Phonebook
+ AuxUserType
+ 2
+ = Dial-Up Phonebook
+ 3
+ = Dial-Up Networking
+ {00000300-0000-0000-C000-000000000046}
+ = StdOleLink
+ InprocServer32
+ = ole32.dll
+ {00000303-0000-0000-C000-000000000046}
+ = FileMoniker
+ InprocServer32
+ = ole32.dll
+ ProgID
+ = file
+ {00000304-0000-0000-C000-000000000046}
+ = ItemMoniker
+ InprocServer32
+ = ole32.dll
+ {00000305-0000-0000-C000-000000000046}
+ = AntiMoniker
+ InprocServer32
+ = ole32.dll
+ {00000306-0000-0000-C000-000000000046}
+ = PointerMoniker
+ InprocServer32
+ = ole32.dll
+ {00000308-0000-0000-C000-000000000046}
+ = PackagerMoniker
+ InprocServer32
+ = ole32.dll
+ {00000309-0000-0000-C000-000000000046}
+ = CompositeMoniker
+ InprocServer32
+ = ole32.dll
+ {0000030B-0000-0000-C000-000000000046}
+ = DfMarshal
+ InprocServer32
+ = ole32.dll
+ {00000315-0000-0000-C000-000000000046}
+ = Picture (Metafile)
+ ProgID
+ = StaticMetafile
+ InprocServer32
+ = ole32.dll
+ DataFormats
+ DefaultFile
+ = 3
+ GetSet
+ 0
+ = 3,1,32,3
+ MiscStatus
+ = 536
+ AuxUserType
+ 2
+ = Picture
+ Conversion
+ Readable
+ Main
+ = 3,MSDraw
+ {00000316-0000-0000-C000-000000000046}
+ = Picture (Device Independent Bitmap)
+ ProgID
+ = StaticDib
+ InprocServer32
+ = ole32.dll
+ DataFormats
+ DefaultFile
+ = 8
+ GetSet
+ 0
+ = 8,1,1,3
+ MiscStatus
+ = 536
+ AuxUserType
+ 2
+ = Picture
+ Conversion
+ Readable
+ Main
+ = 8,PBrush
+ {00000319-0000-0000-C000-000000000046}
+ = Picture (Enhanced Metafile)
+ ProgID
+ = StaticEnhancedMetafile
+ InprocServer32
+ = ole32.dll
+ DataFormats
+ DefaultFile
+ = 14
+ GetSet
+ 0
+ = 14,1,64,3
+ MiscStatus
+ = 536
+ AuxUserType
+ 2
+ = Picture
+ Conversion
+ Readable
+ Main
+ =
+ {0000031A-0000-0000-C000-000000000046}
+ = ClassMoniker
+ InprocServer32
+ = ole32.dll
+ ProgID
+ = clsid
+ {00000320-0000-0000-C000-000000000046}
+ = oleprx32_PSFactory
+ InprocServer32
+ = ole32.dll
+ {00020000-0000-0000-C000-000000000046}
+ = Microsoft AVI Files
+ InprocServer
+ = avifile.dll
+ InprocServer32
+ = avifil32.dll
+ ThreadingModel = Both
+ AVIFile
+ = 7
+ {00020001-0000-0000-C000-000000000046}
+ = AVI Compressed Stream
+ InprocServer
+ = avifile.dll
+ InprocServer32
+ = avifil32.dll
+ ThreadingModel = Both
+ {00020003-0000-0000-C000-000000000046}
+ = Microsoft Wave File
+ InprocServer32
+ = avifil32.dll
+ ThreadingModel = Both
+ AVIFile
+ = 7
+ {0002000D-0000-0000-C000-000000000046}
+ = IAVIStream & IAVIFile Proxy
+ InprocServer
+ = avifile.dll
+ InprocServer32
+ = avifil32.dll
+ ThreadingModel = Both
+ {0002000F-0000-0000-C000-000000000046}
+ = ACM Compressed Audio Stream
+ InprocServer
+ = avifile.dll
+ InprocServer32
+ = avifil32.dll
+ ThreadingModel = Both
+ {00020420-0000-0000-C000-000000000046}
+ = PSDispatch
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020421-0000-0000-C000-000000000046}
+ = PSEnumVARIANT
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020422-0000-0000-C000-000000000046}
+ = PSTypeInfo
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020423-0000-0000-C000-000000000046}
+ = PSTypeLib
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020424-0000-0000-C000-000000000046}
+ = PSOAInterface
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020425-0000-0000-C000-000000000046}
+ = PSTypeComp
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ ThreadingModel = Apartment
+ {00020C01-0000-0000-C000-000000000046}
+ = Sound (OLE2)
+ AppID = {00020C01-0000-0000-C000-000000000046}
+ Insertable
+ =
+ InprocHandler32
+ = ole32.dll
+ LocalServer32
+ = sndrec32.exe
+ LocalServer
+ = sndrec32.exe
+ verb
+ 0
+ = &Play,0,3
+ 1
+ = &Edit,0,2
+ 2
+ = &Open,0,2
+ AuxUserType
+ 3
+ = Microsoft Sound Recorder Server
+ 2
+ = Sound Recorder Document
+ DataFormats
+ DefaultFile
+ = 12
+ DefaultSet
+ = SoundRec
+ GetSet
+ 1
+ = 8,-1,1,3
+ 0
+ = 3,1,32,1
+ MiscStatus
+ = 0
+ ProgID
+ = SoundRec
+ {00022601-0000-0000-C000-000000000046}
+ = Media Clip
+ AppID = {00022601-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,1
+ Insertable
+ =
+ InprocHandler32
+ = ole32.dll
+ LocalServer
+ = mplay32.exe
+ LocalServer32
+ = mplay32.exe
+ verb
+ 1
+ = &Edit,0,2
+ 0
+ = &Play,0,3
+ 2
+ = &Open,0,2
+ AuxUserType
+ 2
+ = Media Clip
+ DataFormats
+ DefaultSet
+ = MPlayer
+ GetSet
+ 2
+ = 8,1,1,1
+ 1
+ = 3,1,32,1
+ 0
+ = Embed Source,1,8,1
+ MiscStatus
+ = 0
+ ProgID
+ = MPlayer
+ {00022602-0000-0000-C000-000000000046}
+ = Video Clip
+ AppID = {00022601-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,3
+ Insertable
+ =
+ InprocHandler32
+ = ole32.dll
+ LocalServer
+ = mplay32.exe /avi
+ LocalServer32
+ = mplay32.exe /avi
+ verb
+ 1
+ = &Edit,0,2
+ 0
+ = &Play,0,3
+ 2
+ = &Open,0,2
+ AuxUserType
+ 2
+ = Video Clip
+ DataFormats
+ DefaultSet
+ = AVIFile
+ GetSet
+ 2
+ = 8,1,1,1
+ 1
+ = 3,1,32,1
+ 0
+ = Embed Source,1,8,1
+ MiscStatus
+ = 0
+ ProgID
+ = AVIFile
+ {00022603-0000-0000-C000-000000000046}
+ = MIDI Sequence
+ AppID = {00022601-0000-0000-C000-000000000046}
+ DefaultIcon
+ = mplay32.exe,5
+ Insertable
+ =
+ InprocHandler32
+ = ole32.dll
+ LocalServer
+ = mplay32.exe /mid
+ LocalServer32
+ = mplay32.exe /mid
+ verb
+ 1
+ = &Edit,0,2
+ 0
+ = &Play,0,3
+ 2
+ = &Open,0,2
+ AuxUserType
+ 2
+ = MIDI Sequence
+ DataFormats
+ DefaultSet
+ = MIDFile
+ GetSet
+ 2
+ = 8,1,1,1
+ 1
+ = 3,1,32,1
+ 0
+ = Embed Source,1,8,1
+ MiscStatus
+ = 0
+ ProgID
+ = MIDFile
+ {0003000C-0000-0000-C000-000000000046}
+ = Package
+ Ole1Class
+ = Package
+ ProgID
+ = Package
+ {0003000D-0000-0000-C000-000000000046}
+ = Sound
+ Insertable
+ =
+ TreatAs
+ = {00020C01-0000-0000-C000-000000000046}
+ ProgID
+ = SoundRec
+ Ole1Class
+ = SoundRec
+ {0003000E-0000-0000-C000-000000000046}
+ = Media Clip
+ ProgID
+ = MPlayer
+ Ole1Class
+ = MPlayer
+ Insertable
+ =
+ TreatAs
+ = {00022601-0000-0000-C000-000000000046}
+ {0003000a-0000-0000-C000-000000000046}
+ = Paintbrush Picture
+ ProgID
+ = PBrush
+ Ole1Class
+ = PBrush
+ MiscStatus
+ = 512
+ Conversion
+ Readable
+ Main
+ = 8
+ TreatAs
+ = {D3E34B21-9D75-101A-8C3D-00AA001A1652}
+ {00030007-0000-0000-C000-000000000046}
+ = Microsoft Drawing
+ ProgID
+ = MSDraw
+ Ole1Class
+ = MSDraw
+ MiscStatus
+ = 512
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C}
+ = Security Shell Extension
+ InProcServer32
+ = rshx32.dll
+ ThreadingModel = Apartment
+ {47D4D946-62E8-11cf-93BC-444553540000}
+ = DirectSound Object
+ InprocServer32
+ = dsound.dll
+ {593817A0-7DB3-11CF-A2DE-00AA00B93356}
+ = DirectDraw Clipper Object
+ InprocServer32
+ = ddraw.dll
+ {BD84B380-8CA2-1069-AB1D-08000948F534}
+ = Fonts
+ InProcServer32
+ = fontext.dll
+ ThreadingModel = Apartment
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\fontext.dll,-101
+ Hierarchical
+ = 0
+ {BD84B381-8CA2-1069-AB1D-08000948F534}
+ = PANOSE Core Mapper
+ InProcServer32
+ = panmap.dll
+ ThreadingModel = Apartment
+ {f81e9010-6ea4-11ce-a7ff-00aa003ca9f6}
+ = Shell extensions for sharing
+ InProcServer32
+ = ntshrui.dll
+ ThreadingModel = Apartment
+ {40dd6e20-7c17-11ce-a804-00aa003ca9f6}
+ = Shell extensions for sharing
+ InProcServer32
+ = ntshrui.dll
+ ThreadingModel = Apartment
+ {59be4990-f85c-11ce-aff7-00aa003ca9f6}
+ = Shell extensions for Microsoft Windows Network objects
+ InProcServer32
+ = ntlanui2.dll
+ ThreadingModel = Apartment
+ {41E300E0-78B6-11ce-849B-444553540000}
+ = PlusPack CPL Extension
+ InProcServer32
+ = plustab.dll
+ ThreadingModel = Apartment
+ {D3E34B21-9D75-101A-8C3D-00AA001A1652}
+ = Bitmap Image
+ AppID = {D3E34B21-9D75-101A-8C3D-00AA001A1652}
+ AuxUserType
+ 2
+ = Bitmap Image
+ 3
+ = Paint
+ DataFormats
+ PriorityCacheFormats
+ #8 =
+ DefaultIcon
+ = mspaint.exe, 1
+ InProcHandler32
+ = ole32.dll
+ Insertable
+ =
+ LocalServer32
+ = mspaint.exe
+ MiscStatus
+ = 32
+ ProgID
+ = Paint.Picture
+ PersistentHandler
+ = {098F2470-BAE0-11CD-B579-08002B30BFEB}
+ Verb
+ 0
+ = &Edit,0,2
+ 1
+ = &Open,0,2
+ {1B53F360-9A1B-1069-930C-00AA0030EBC8}
+ = HyperTerminal Page Ext
+ InProcServer32
+ = hypertrm.dll
+ {88895560-9AA2-1069-930E-00AA0030EBC8}
+ = HyperTerminal Icon Ext
+ InProcServer32
+ = hticons.dll
+ {D7B70EE0-4340-11CF-B063-0020AFC2CD35}
+ = DirectDraw Object
+ InprocServer32
+ = ddraw.dll
+ {DF0B3D60-548F-101B-8E65-08002B2BD119}
+ = PSSupportErrorInfo
+ InprocServer
+ = ole2disp.dll
+ InprocServer32
+ = oleaut32.dll
+ Interface
+ {00000000-0000-0000-C000-000000000046}
+ = IUnknown
+ BaseInterface
+ =
+ NumMethods
+ = 3
+ {00000001-0000-0000-C000-000000000046}
+ = IClassFactory
+ NumMethods
+ = 5
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000002-0000-0000-C000-000000000046}
+ = IMalloc
+ NumMethods
+ = 9
+ {00000003-0000-0000-C000-000000000046}
+ = IMarshal
+ NumMethods
+ = 9
+ {00000004-0000-0000-C000-000000000046}
+ = IRpcChannel
+ NumMethods
+ = 7
+ {00000005-0000-0000-C000-000000000046}
+ = IRpcStub
+ NumMethods
+ = 8
+ {00000007-0000-0000-C000-000000000046}
+ = IRpcProxy
+ NumMethods
+ = 5
+ {00000009-0000-0000-C000-000000000046}
+ = IPSFactory
+ NumMethods
+ = 5
+ {0000000a-0000-0000-C000-000000000046}
+ = ILockBytes
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000000b-0000-0000-C000-000000000046}
+ = IStorage
+ NumMethods
+ = 18
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000000c-0000-0000-C000-000000000046}
+ = IStream
+ NumMethods
+ = 14
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000000d-0000-0000-C000-000000000046}
+ = IEnumSTATSTG
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000000e-0000-0000-C000-000000000046}
+ = IBindCtx
+ NumMethods
+ = 13
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000000f-0000-0000-C000-000000000046}
+ = IMoniker
+ BaseInterface
+ = {00000109-0000-0000-C000-000000000046}
+ NumMethods
+ = 23
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000010-0000-0000-C000-000000000046}
+ = IRunningObjectTable
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000012-0000-0000-C000-000000000046}
+ = IRootStorage
+ NumMethods
+ = 4
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000016-0000-0000-C000-000000000046}
+ = IMessageFilter
+ NumMethods
+ = 6
+ {00000018-0000-0000-C000-000000000046}
+ = IStdMarshalInfo
+ NumMethods
+ = 4
+ {00000019-0000-0000-C000-000000000046}
+ = IExternalConnection
+ NumMethods
+ = 5
+ {00000100-0000-0000-C000-000000000046}
+ = IEnumUnknown
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000101-0000-0000-C000-000000000046}
+ = IEnumString
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000102-0000-0000-C000-000000000046}
+ = IEnumMoniker
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000103-0000-0000-C000-000000000046}
+ = IEnumFORMATETC
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000104-0000-0000-C000-000000000046}
+ = IEnumOLEVERB
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000105-0000-0000-C000-000000000046}
+ = IEnumSTATDATA
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000109-0000-0000-C000-000000000046}
+ = IPersistStream
+ BaseInterface
+ = {0000010C-0000-0000-C000-000000000046}
+ NumMethods
+ = 8
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010a-0000-0000-C000-000000000046}
+ = IPersistStorage
+ BaseInterface
+ = {0000010C-0000-0000-C000-000000000046}
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010b-0000-0000-C000-000000000046}
+ = IPersistFile
+ BaseInterface
+ = {0000010c-0000-0000-C000-000000000046}
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010c-0000-0000-C000-000000000046}
+ = IPersist
+ NumMethods
+ = 4
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010d-0000-0000-C000-000000000046}
+ = IViewObject
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010e-0000-0000-C000-000000000046}
+ = IDataObject
+ NumMethods
+ = 12
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000010f-0000-0000-C000-000000000046}
+ = IAdviseSink
+ NumMethods
+ = 8
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000110-0000-0000-C000-000000000046}
+ = IDataAdviseHolder
+ NumMethods
+ = 7
+ {00000111-0000-0000-C000-000000000046}
+ = IOleAdviseHolder
+ NumMethods
+ = 9
+ {00000112-0000-0000-C000-000000000046}
+ = IOleObject
+ NumMethods
+ = 24
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000113-0000-0000-C000-000000000046}
+ = IOleInPlaceObject
+ BaseInterface
+ = {00000114-0000-0000-C000-000000000046}
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000114-0000-0000-C000-000000000046}
+ = IOleWindow
+ NumMethods
+ = 5
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000115-0000-0000-C000-000000000046}
+ = IOleInPlaceUIWindow
+ BaseInterface
+ = {00000114-0000-0000-C000-000000000046}
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000116-0000-0000-C000-000000000046}
+ = IOleInPlaceFrame
+ NumMethods
+ = 15
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000117-0000-0000-C000-000000000046}
+ = IOleInPlaceActiveObject
+ BaseInterface
+ = {00000114-0000-0000-C000-000000000046}
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000118-0000-0000-C000-000000000046}
+ = IOleClientSite
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000119-0000-0000-C000-000000000046}
+ = IOleInPlaceSite
+ BaseInterface
+ = {00000114-0000-0000-C000-000000000046}
+ NumMethods
+ = 15
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000011a-0000-0000-C000-000000000046}
+ = IParseDisplayName
+ NumMethods
+ = 4
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000011b-0000-0000-C000-000000000046}
+ = IOleContainer
+ BaseInterface
+ = {0000011a-0000-0000-C000-000000000046}
+ NumMethods
+ = 6
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000011c-0000-0000-C000-000000000046}
+ = IOleItemContainer
+ BaseInterface
+ = {0000011b-0000-0000-C000-000000000046}
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000011d-0000-0000-C000-000000000046}
+ = IOleLink
+ NumMethods
+ = 14
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000011e-0000-0000-C000-000000000046}
+ = IOleCache
+ NumMethods
+ = 8
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000121-0000-0000-C000-000000000046}
+ = IDropSource
+ NumMethods
+ = 5
+ {00000122-0000-0000-C000-000000000046}
+ = IDropTarget
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000124-0000-0000-C000-000000000046}
+ = IDebugStream
+ NumMethods
+ = 19
+ {00000125-0000-0000-C000-000000000046}
+ = IAdviseSink2
+ BaseInterface
+ = {0000010f-0000-0000-C000-000000000046}
+ NumMethods
+ = 9
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000126-0000-0000-C000-000000000046}
+ = IRunnableObject
+ NumMethods
+ = 8
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000127-0000-0000-C000-000000000046}
+ = IViewObject2
+ BaseInterface
+ = {0000010d-0000-0000-C000-000000000046}
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000128-0000-0000-C000-000000000046}
+ = IOleCache2
+ BaseInterface
+ = {0000011e-0000-0000-C000-000000000046}
+ NumMethods
+ = 10
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000129-0000-0000-C000-000000000046}
+ = IOleCacheControl
+ NumMethods
+ = 5
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000012A-0000-0000-C000-000000000046}
+ = IContinue
+ NumMethods
+ = 4
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000131-0000-0000-C000-000000000046}
+ = IRemUnknown
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000132-0000-0000-C000-000000000046}
+ = IObjServer
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000133-0000-0000-C000-000000000046}
+ = IOSCM
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000134-0000-0000-C000-000000000046}
+ = IRundown
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000135-0000-0000-C000-000000000046}
+ = IInterfaceFromWindowProp
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000136-0000-0000-C000-000000000046}
+ = IDSCM
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000138-0000-0000-C000-000000000046}
+ = IPropertyStorage
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000013A-0000-0000-C000-000000000046}
+ = IPropertySetStorage
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000139-0000-0000-C000-000000000046}
+ = IEnumSTATPROPSTG
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {0000013B-0000-0000-C000-000000000046}
+ = IEnumSTATPROPSETSTG
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000140-0000-0000-C000-000000000046}
+ = IClassActivator
+ NumMethods
+ = 4
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00000141-0000-0000-C000-000000000046}
+ = IDLLHost
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {00020020-0000-0000-C000-000000000046}
+ = AVIFile Interface 1.22
+ ProxyStubClsid
+ = {0002000d-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {0002000d-0000-0000-C000-000000000046}
+ {00020021-0000-0000-C000-000000000046}
+ = AVIStream Interface
+ ProxyStubClsid
+ = {0002000d-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {0002000d-0000-0000-C000-000000000046}
+ {00020400-0000-0000-C000-000000000046}
+ = IDispatch
+ NumMethods
+ = 7
+ ProxyStubClsid
+ = {00020420-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {00020420-0000-0000-C000-000000000046}
+ {00020401-0000-0000-C000-000000000046}
+ = ITypeInfo
+ NumMethods
+ = 22
+ ProxyStubClsid
+ = {00020422-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {00020422-0000-0000-C000-000000000046}
+ {00020402-0000-0000-C000-000000000046}
+ = ITypeLib
+ NumMethods
+ = 13
+ ProxyStubClsid
+ = {00020423-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {00020423-0000-0000-C000-000000000046}
+ {00020403-0000-0000-C000-000000000046}
+ = ITypeComp
+ NumMethods
+ = 5
+ ProxyStubClsid
+ = {00020425-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {00020425-0000-0000-C000-000000000046}
+ {00020404-0000-0000-C000-000000000046}
+ = IEnumVARIANT
+ NumMethods
+ = 7
+ ProxyStubClsid
+ = {00020421-0000-0000-C000-000000000046}
+ ProxyStubClsid32
+ = {00020421-0000-0000-C000-000000000046}
+ {00020405-0000-0000-C000-000000000046}
+ = ICreateTypeInfo
+ NumMethods
+ = 26
+ {00020406-0000-0000-C000-000000000046}
+ = ICreateTypeLib
+ NumMethods
+ = 13
+ {0C733A30-2A1C-11CE-ADE5-00AA0044773D}
+ = ISequentialStream
+ NumMethods
+ = 5
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {B196B284-BAB4-101A-B69C-00AA00341D07}
+ = IConnectionPointContainer
+ NumMethods
+ = 5
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {B196B285-BAB4-101A-B69C-00AA00341D07}
+ = IEnumConnectionPoints
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {B196B286-BAB4-101A-B69C-00AA00341D07}
+ = IConnectionPoint
+ NumMethods
+ = 8
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {B196B287-BAB4-101A-B69C-00AA00341D07}
+ = IEnumConnections
+ NumMethods
+ = 7
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {D2A2F5F2-EBA6-11CD-AF37-02608CA1D0B7}
+ = _DVBScript
+ ProxyStubClsid32
+ = {00020420-0000-0000-C000-000000000046}
+ NumMethod
+ = 6
+ BaseInterface
+ = {00020400-0000-0000-C000-000000000046}
+ TypeLib
+ = {D2A2F5F0-EBA6-11CD-AF37-02608CA1D0B7}
+ {D5F569D0-593B-101A-B569-08002B2DBF7A}
+ = IPSFactoryBuffer
+ NumMethods
+ = 5
+ {D5F56A34-593B-101A-B569-08002B2DBF7A}
+ = IRpcProxyBuffer
+ NumMethods
+ = 5
+ {D5F56AFC-593B-101A-B569-08002B2DBF7A}
+ = IRpcStubBuffer
+ NumMethods
+ = 10
+ {D5F56B60-593B-101A-B569-08002B2DBF7A}
+ = IRpcChannelBuffer
+ NumMethods
+ = 8
+ {DF0B3D60-548F-101B-8E65-08002B2BD119}
+ = ISupportErrorInfo
+ NumMethods
+ = 4
+ ProxyStubClsid
+ = {DF0B3D60-548F-101B-8E65-08002B2BD119}
+ ProxyStubClsid32
+ = {DF0B3D60-548F-101B-8E65-08002B2BD119}
+ {F4F569D0-593B-101A-B569-08002B2DBF7A}
+ = IServerHandler
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {F4F569D1-593B-101A-B569-08002B2DBF7A}
+ = IClientSiteHandler
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {99caf010-415e-11cf-8814-00aa00b569f5}
+ = IFillLockBytes
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {a9d758a0-4617-11cf-95fc-00aa00680db4}
+ = IProgressNotify
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {de2eacd0-9c9d-11cf-882a-00aa00b569f5}
+ = IFIllInfo
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ {4a8df970-8d9a-11cf-8827-00aa00b569f5}
+ = IDocfileAsyncConnectionPoint
+ ProxyStubClsid32
+ = {00000320-0000-0000-C000-000000000046}
+ TypeLib
+ {00020430-0000-0000-C000-000000000046}
+ 1.0
+ = OLE Automation
+ HELPDIR
+ =
+ 0
+ win16
+ = stdole.tlb
+ win32
+ = stdole32.tlb
+ *
+ shellex
+ PropertySheetHandlers
+ {3EA48300-8CF6-101B-84FB-666CCB9BCD32}
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C}
+ ContextMenuHandlers
+ ExplorerCompressionMenu
+ = {764BF0E1-F219-11ce-972D-00AA00A14F56}
+ .386
+ = vxdfile
+ .ani
+ = anifile
+ .bat
+ = batfile
+ .bfc
+ = Briefcase
+ ShellNew
+ Command = REG_EXPAND_SZ %SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\syncui.dll,Briefcase_Create %1!d! %2
+ Config
+ NoExtension =
+ .clp
+ = clpfile
+ .cmd
+ = cmdfile
+ .com
+ = comfile
+ .cpl
+ = cplfile
+ .cur
+ = curfile
+ .dll
+ = dllfile
+ .doc
+ = WordPad.Document.1
+ ShellNew
+ NullFile =
+ .drv
+ = drvfile
+ .exe
+ = exefile
+ .fnd
+ = fndfile
+ .fon
+ = fonfile
+ .hlp
+ = hlpfile
+ .ico
+ = icofile
+ .inf
+ = inffile
+ .lnk
+ = lnkfile
+ ShellNew
+ Command = RunDLL32 AppWiz.Cpl,NewLinkHere %1
+ .pif
+ = piffile
+ .pnf
+ = pnffile
+ .reg
+ = regfile
+ .rtf
+ = rtffile
+ ShellNew
+ Data = {\rtf1}
+ .scr
+ = scrfile
+ .shb
+ = DocShortcut
+ .shs
+ = ShellScrap
+ .sys
+ = sysfile
+ .ttf
+ = ttffile
+ .pfm
+ = pfmfile
+ .txt
+ ShellNew
+ NullFile =
+ .wav
+ ShellNew
+ NullFile =
+ anifile
+ = Animated Cursor
+ DefaultIcon
+ = %1
+ AviFile
+ shellex
+ PropertySheetHandlers
+ = AviPage
+ AviPage
+ = {00022613-0000-0000-C000-000000000046}
+ batfile
+ = MS-DOS Batch File
+ EditFlags = REG_BINARY 0x00000004 0x00000430
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-153
+ shell
+ edit
+ = &Edit
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE %1
+ open
+ EditFlags = REG_BINARY 0x00000004 0x00000000
+ command
+ = "%1" %*
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE /p %1
+ shellex
+ PropertySheetHandlers
+ PifProps
+ = {86F19A00-42A0-1069-A2E9-08002B30309D}
+ Briefcase
+ = Briefcase
+ shell
+ open
+ command
+ = explorer.exe %1
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\syncui.dll,0
+ CLSID
+ = {85BBD920-42A0-1069-A2E4-08002B30309D}
+ clpfile
+ = Clipboard Clip
+ DefaultIcon
+ = REG_EXPAND_SZ %systemroot%\system32\clipbrd.exe,1
+ shell
+ open
+ command
+ = clipbrd.exe %1
+ CLSID
+ {00021400-0000-0000-C000-000000000046}
+ = Desktop
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {00021401-0000-0000-C000-000000000046}
+ = Shortcut
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ shellex
+ MayChangeDefaultMenu
+ {00022613-0000-0000-C000-000000000046}
+ = Multimedia File Property Sheet
+ InProcServer32
+ = mmsys.cpl
+ ThreadingModel = Apartment
+ {208D2C60-3AEA-1069-A2D7-08002B30309D}
+ = Network Neighborhood
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,17
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ shell
+ find
+ = &Find Computer...
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe
+ ddeexec
+ = [FindFolder("%l", %I)]
+ application
+ = Folders
+ topic
+ = AppProperties
+ {20D04FE0-3AEA-1069-A2D8-08002B30309D}
+ = My Computer
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe,0
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ shell
+ find
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe
+ ddeexec
+ = [FindFolder("%l", %I)]
+ application
+ = Folders
+ topic
+ = AppProperties
+ {217FC9C0-3AEA-1069-A2DB-08002B30309D}
+ = Shell Copy Hook
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {21B22460-3AEA-1069-A2DC-08002B30309D}
+ = File system attributes
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {21EC2020-3AEA-1069-A2DD-08002B30309D}
+ = Control Panel
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-137
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {2227A280-3AEA-1069-A2DE-08002B30309D}
+ = Printers
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-138
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ ShellFolder
+ Attributes = REG_BINARY 0x00000004 0x20000004
+ {3EA48300-8CF6-101B-84FB-666CCB9BCD32}
+ = OLE Docfile Property Page
+ InProcServer32
+ = docprop.dll
+ ThreadingModel = Apartment
+ {56117100-C0CD-101B-81E2-00AA004AE837}
+ = Shell Scrap DataHandler
+ InProcServer32
+ = shscrap.dll
+ ThreadingModel = Apartment
+ {59099400-57FF-11CE-BD94-0020AF85B590}
+ = Disk Copy Extension
+ InProcServer32
+ = diskcopy.dll
+ ThreadingModel = Apartment
+ {61E218E0-65D3-101B-9F08-061CEAC3D50D}
+ = ShellFind
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {645FF040-5081-101B-9F08-00AA002F954E}
+ = Recycle Bin
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,31
+ Empty = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,31
+ Full = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,32
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ shellex
+ ContextMenuHandlers
+ {645FF040-5081-101B-9F08-00AA002F954E}
+ PropertySheetHandlers
+ {645FF040-5081-101B-9F08-00AA002F954E}
+ ShellFolder
+ Attributes = REG_BINARY 0x00000004 0x20000140
+ {764BF0E1-F219-11ce-972D-00AA00A14F56}
+ = Shell extensions for file compression
+ InProcServer32
+ = shcompui.dll
+ ThreadingModel = Apartment
+ {86747AC0-42A0-1069-A2E6-08002B30309D}
+ = Shell Moniker
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {86F19A00-42A0-1069-A2E9-08002B30309D}
+ = .PIF file property pages
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {86F19A00-42A0-1069-A2EB-08002B30309D}
+ = .PIF file handler
+ InProcServer32
+ = shell32.dll
+ ThreadingModel = Apartment
+ {85BBD920-42A0-1069-A2E4-08002B30309D}
+ = Briefcase
+ InProcServer32
+ = syncui.dll
+ ThreadingModel = Apartment
+ ShellFolder
+ Attributes = REG_BINARY 0x00000004 0x40000136
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\syncui.dll,0
+ shellex
+ PropertySheetHandlers
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C}
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ InProcServer32
+ = REG_EXPAND_SZ %SystemRoot%\system32\viewers\sccview.dll
+ ThreadingModel = Apartment
+ cmdfile
+ = Windows NT Command Script
+ EditFlags = REG_BINARY 0x00000004 0x00000430
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-153
+ shell
+ edit
+ = &Edit
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE %1
+ open
+ EditFlags = REG_BINARY 0x00000004 0x00000000
+ command
+ = "%1" %*
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE /p %1
+ shellex
+ PropertySheetHandlers
+ PifProps
+ = {86F19A00-42A0-1069-A2E9-08002B30309D}
+ comfile
+ = MS-DOS Application
+ EditFlags = REG_BINARY 0x00000004 0x00000030
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,2
+ shell
+ open
+ EditFlags = REG_BINARY 0x00000004 0x00000000
+ command
+ = "%1" %*
+ shellex
+ PropertySheetHandlers
+ PifProps
+ = {86F19A00-42A0-1069-A2E9-08002B30309D}
+ cplfile
+ = Control Panel extension
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-154
+ shell
+ cplopen
+ = Open with Control Panel
+ command
+ = rundll32.exe shell32.dll,Control_RunDLL %1,%*
+ curfile
+ = Cursor
+ DefaultIcon
+ = %1
+ Directory
+ EditFlags = REG_BINARY 0x00000004 0x00000002
+ AlwaysShowExt =
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,3
+ shell
+ find
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe
+ ddeexec
+ = [FindFolder("%l", %I)]
+ application
+ = Folders
+ topic
+ = AppProperties
+ shellex
+ CopyHookHandlers
+ FileSystem
+ = {217FC9C0-3AEA-1069-A2DB-08002B30309D}
+ PropertySheetHandlers
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C}
+ ContextMenuHandlers
+ ExplorerCompressionMenu
+ = {764BF0E1-F219-11ce-972D-00AA00A14F56}
+ dllfile
+ = Application Extension
+ AlwaysShowExt =
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-154
+ DocShortcut
+ = Shortcut into a document
+ IsShortcut =
+ NeverShowExt =
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shscrap.dll,-100
+ shell
+ open
+ command
+ = REG_EXPAND_SZ rundll32 %SystemRoot%\System32\shscrap.dll,OpenScrap_RunDLL /r /x %1
+ shellex
+ DataHandler
+ = {56117100-C0CD-101B-81E2-00AA004AE837}
+ Drive
+ = Drive
+ EditFlags = REG_BINARY 0x00000004 0x00000002
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,8
+ shell
+ find
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe
+ ddeexec
+ = [FindFolder("%l", %I)]
+ application
+ = Folders
+ topic
+ = AppProperties
+ shellex
+ ContextMenuHandlers
+ {59099400-57FF-11CE-BD94-0020AF85B590}
+ ExplorerCompressionMenu
+ = {764BF0E1-F219-11ce-972D-00AA00A14F56}
+ PropertySheetHandlers
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C}
+ drvfile
+ = Device driver
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+ AlwaysShowExt =
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-154
+ exefile
+ = Application
+ EditFlags = REG_BINARY 0x00000004 0x00000738
+ DefaultIcon
+ = %1
+ shell
+ open
+ EditFlags = REG_BINARY 0x00000004 0x00000000
+ command
+ = "%1" %*
+ shellex
+ PropertySheetHandlers
+ PifProps
+ = {86F19A00-42A0-1069-A2E9-08002B30309D}
+ fndfile
+ = Saved Search
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-133
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe
+ ddeexec
+ = [OpenFindFile("%1", %I)]
+ application
+ = Folders
+ topic
+ = AppProperties
+ Folder
+ = Folder
+ EditFlags = REG_BINARY 0x00000004 0x00000002
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,3
+ shell
+ explore
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe /e,/idlist,%I,%L
+ ddeexec
+ = [ExploreFolder("%l", %I, %S)]
+ NoActivateHandler =
+ application
+ = Folders
+ ifexec
+ = []
+ topic
+ = AppProperties
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\Explorer.exe /idlist,%I,%L
+ ddeexec
+ = [ViewFolder("%l", %I, %S)]
+ NoActivateHandler =
+ application
+ = Folders
+ ifexec
+ = []
+ topic
+ = AppProperties
+ shellex
+ ContextMenuHandlers
+ ExplorerCompressionMenu
+ = {764BF0E1-F219-11ce-972D-00AA00A14F56}
+ fonfile
+ = Font file
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-155
+ hlpfile
+ = Help File
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,23
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\winhlp32.exe %1
+ icofile
+ = Icon
+ DefaultIcon
+ = %1
+ inffile
+ = Setup Information
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-151
+ shell
+ Install
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %1
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE /p %1
+ install
+ = &Install
+ inifile
+ = Configuration Settings
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\System32\shell32.dll,-151
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\System32\NOTEPAD.EXE /p %1
+ lnkfile
+ = Shortcut
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+ IsShortcut =
+ NeverShowExt =
+ shellex
+ ContextMenuHandlers
+ {00021401-0000-0000-C000-000000000046}
+ DropHandler
+ = {00021401-0000-0000-C000-000000000046}
+ IconHandler
+ = {00021401-0000-0000-C000-000000000046}
+ MidFile
+ shellex
+ PropertySheetHandlers
+ = MidPage
+ MidPage
+ = {00022613-0000-0000-C000-000000000046}
+ MPlayer
+ shellex
+ PropertySheetHandlers
+ = MediaPage
+ MediaPage
+ = {00022613-0000-0000-C000-000000000046}
+ pnffile
+ = Precompiled Setup Information
+ AlwaysShowExt =
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-154
+ QuickView
+ = Quick View File
+ *
+ = Default Viewers
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .ASC
+ = ASCII File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .BMP
+ = Windows Bitmap Graphics File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .CDR
+ = Corel Draw v 4,5 Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .EXE
+ = Executable Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .DIB
+ = Windows Bitmap Graphics File (DIB)
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .DLL
+ = Dynamic Link Libraries
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .DOC
+ = Any of a number of word processing file formats
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .DRW
+ = Micrographix Draw File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .EPS
+ = Encapsulated PostScript Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .GIF
+ = Compuserve GIF File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .INF
+ = Setup Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .INI
+ = Configuration Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .MOD
+ = Multiplan v 3, 4.0, 4.1 File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .PPT
+ = PowerPoint, v 4 Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .RLE
+ = Bitmap Files (RunLengthEncoding)
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .RTF
+ = Rich Text Format File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .TIF
+ = Tiff File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .TXT
+ = Text File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .WB1
+ = Quattro Pro for Windows File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .WDB
+ = Works Database Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .WK1
+ = Lotus 1-2-3 v 1'n'2 Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .WKS
+ = Lotus 1-2-3 File or MS Works v 3 File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .WMF
+ = Windows Metafile
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .WPD
+ = Word Perfect Demo Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .WPS
+ = Works Word Processing Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .WQ1
+ = Quattro Pro for MS-DOS File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .WQ2
+ = Quattro Pro v 5 for MS-DOS File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .WRI
+ = Windows 3.x WRITE Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .XLC
+ = Excel 4 Chart File
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ .XLS
+ = Excel 4 and 5 Spreadsheet Files
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\viewers\quikview.exe
+ {F0F08735-0C36-101B-B086-0020AF07D0F4}
+ = SCC Quick Viewer
+ piffile
+ = Shortcut to MS-DOS Program
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+ IsShortcut =
+ NeverShowExt =
+ shell
+ open
+ command
+ = "%1" %*
+ shellex
+ IconHandler
+ = {00021401-0000-0000-C000-000000000046}
+ PropertySheetHandlers
+ PifProps
+ = {86F19A00-42A0-1069-A2E9-08002B30309D}
+ regfile
+ = Registration Entries
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\regedit.exe,1
+ shell
+ edit
+ = &Edit
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\NOTEPAD.EXE %1
+ open
+ = Mer&ge
+ command
+ = regedit.exe "%1"
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\NOTEPAD.EXE /p %1
+ scrfile
+ = Screen Saver
+ shell
+ config
+ = C&onfigure
+ command
+ = %1
+ install
+ = &Install
+ command
+ = rundll32.exe desk.cpl,InstallScreenSaver %l
+ open
+ = T&est
+ command
+ = "%1" /S
+ ShellScrap
+ = Scrap object
+ NeverShowExt =
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shscrap.dll,-100
+ shell
+ open
+ command
+ = REG_EXPAND_SZ rundll32 %SystemRoot%\system32\shscrap.dll,OpenScrap_RunDLL %1
+ shellex
+ DataHandler
+ = {56117100-C0CD-101B-81E2-00AA004AE837}
+ SoundRec
+ = Wave Sound
+ DefaultIcon
+ = sndrec32.exe,1
+ shellex
+ PropertySheetHandlers
+ = WavPage
+ WavPage
+ = {00022613-0000-0000-C000-000000000046}
+ shell
+ = play
+ open
+ = &Open
+ command
+ = sndrec32.exe "%L"
+ play
+ = &Play
+ command
+ = mplay32.exe /play /close "%L"
+ sysfile
+ = System file
+ AlwaysShowExt =
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-154
+ pfmfile
+ = Type 1 Font file
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-173
+ ttffile
+ = TrueType Font file
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-156
+ txtfile
+ = Text Document
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-152
+ shell
+ open
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\NOTEPAD.EXE %1
+ print
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\NOTEPAD.EXE /p %1
+ Unknown
+ AlwaysShowExt =
+ shell
+ openas
+ command
+ = REG_EXPAND_SZ %SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\shell32.dll,OpenAs_RunDLL %1
+ vxdfile
+ EditFlags = REG_BINARY 0x00000004 0x00000001
+ = Virtual device driver
+ AlwaysShowExt =
+ DefaultIcon
+ = REG_EXPAND_SZ %SystemRoot%\system32\shell32.dll,-154
+ Secure [8 1 14 17 5]
+ Microsoft [10 1 17 5]
+ Windows [9 1 16 13 17 5]
+ CurrentVersion
+ DevicePath = REG_EXPAND_SZ %SystemRoot%\inf
+ MediaPathUnexpanded = REG_EXPAND_SZ %SystemRoot%\Media
+ App Paths [9 1 17 5]
+ RunOnce
+ MigrateMMDrivers = rundll32.exe mmsys.cpl,mmseRunOnce
+ Controls Folder
+ Display
+ shellex
+ PropertySheetHandlers
+ PlusPack CPL Extension
+ = {41E300E0-78B6-11ce-849B-444553540000}
+ Shell Extensions [8 1 16 13 17 5]
+ Approved
+ {00022613-0000-0000-C000-000000000046} = Multimedia File Property Sheet
+ {f81e9010-6ea4-11ce-a7ff-00aa003ca9f6} = Shell extensions for sharing
+ {40dd6e20-7c17-11ce-a804-00aa003ca9f6} = Shell extensions for sharing
+ {59be4990-f85c-11ce-aff7-00aa003ca9f6} = Shell extensions for Microsoft Windows Network objects
+ {764BF0E1-F219-11ce-972D-00AA00A14F56} = Shell extensions for file compression
+ {41E300E0-78B6-11ce-849B-444553540000} = PlusPack CPL Extension
+ {85BBD920-42A0-1069-A2E4-08002B30309D} = Briefcase
+ {3EA48300-8CF6-101B-84FB-666CCB9BCD32} = OLE Docfile Property Page
+ {1F2E5C40-9550-11CE-99D2-00AA006E086C} = Security Page
+ {BD84B380-8CA2-1069-AB1D-08000948F534} = Fonts
+ {56117100-C0CD-101B-81E2-00AA004AE837} = Shell Scrap DataHandler
+ {59099400-57FF-11CE-BD94-0020AF85B590} = Disk Copy Extension
+ ShellScrap
+ PriorityCacheFormats
+ #3 =
+ Explorer
+ Desktop
+ NameSpace
+ {645FF040-5081-101B-9F08-00AA002F954E}
+ = Recycle Bin
+ FindExtensions
+ ShellFind
+ = {61E218E0-65D3-101B-9F08-061CEAC3D50D}
+ MyComputer
+ NameSpace
+ Controls
+ = {21EC2020-3AEA-1069-A2DD-08002B30309D}
+ Printers
+ = {2227A280-3AEA-1069-A2DE-08002B30309D}
+ {a4d92740-67cd-11cf-96f2-00aa00a11dd9}
+ = Dial-Up Networking
+ RemoteComputer
+ NameSpace
+ {2227A280-3AEA-1069-A2DE-08002B30309D}
+ = Printers
+ Shell Folders
+ User Shell Folders
+ Common Desktop = REG_EXPAND_SZ %SystemRoot%\Profiles\All Users\Desktop
+ Common Start Menu = REG_EXPAND_SZ %SystemRoot%\Profiles\All Users\Start Menu
+ Common Programs = REG_EXPAND_SZ %SystemRoot%\Profiles\All Users\Start Menu\Programs
+ Common Startup = REG_EXPAND_SZ %SystemRoot%\Profiles\All Users\Start Menu\Programs\Startup
+ Tips
+ 0 = If you don't know how to do something, you can look it up in Help. Just click Start, and then click Help.
+ 1 = The Shut Down command on the Start menu enables you to safely shut down your computer.
+ 2 = To add a program to your Start menu, you can drag the program's icon to the Start button.
+ 3 = You can use your right mouse button to drag files. Try it and see what happens!
+ 4 = You can use long filenames when you save documents. You can even use spaces!
+ 5 = You can click your right mouse button anywhere and see a menu of available commands.
+ 6 = To print a document quickly, drag its icon to a printer icon.
+ 7 = If you see a question mark button in the title bar of a window, you can get Help on each item in the window by clicking it, and then clicking the item.
+ 8 = You can use Windows NT Explorer to see all the files on your computer.
+ 9 = You can solve printer problems by using the Print Troubleshooter in Help.
+ 10 = You can move the taskbar to any edge of your screen by dragging it with your mouse.
+ 11 = You can minimize all open windows at once; just use your right mouse button to click an empty area on the taskbar, and then click Minimize All Windows.
+ 12 = To set your computer's clock, you can double-click the clock on the taskbar.
+ 13 = You can minimize neck strain by positioning your monitor at eye level.
+ 14 = To change the color scheme, use the right mouse button to click the desktop, and then click Properties.
+ 15 = To select more than one file or folder, hold down CTRL while you click each item.
+ 16 = To change your screen saver, use your right mouse button to click the desktop, and then click Properties.
+ 17 = Deleted files and folders are saved in the Recycle Bin until you empty it.
+ 18 = You can use Paint in Accessories to draw pictures and to view bitmap files.
+ 19 = You can switch mouse buttons if you are left-handed. Just double-click the Mouse icon in Control Panel.
+ 20 = To open a document quickly, you can double-click its icon.
+ 21 = To minimize wrist strain when you type, keep your wrists elevated or use a wristpad.
+ 22 = You can try many useful programs by clicking Start, pointing to Programs, and then clicking Accessories.
+ 23 = To start a command prompt window, from which you can start programs, click Start, point to Programs, and then click Command Prompt.
+ 24 = You can copy and paste text between MS-DOS and Windows NT. In the MS-DOS window, click the MS-DOS icon to see a menu, click Edit, and then click Mark. Select the text you want to copy and press ENTER to \
+ copy the text to the Clipboard. You can then paste the text into your \
+ application.
+ 25 = To see how much disk space is free, use your right mouse button to click the icon for the drive, and then click Properties.
+ 26 = Even if you don't shut down your computer at night, you can turn off your monitor to save power.
+ 27 = When a folder is open, you can press BACKSPACE to open a folder one level higher.
+ 28 = When you display files in Details view, you can sort them by clicking column headings. To sort files in reverse order, click the column heading once more.
+ 29 = To draw a selection box around a group of files, click at a corner of the group, and then drag the rectangle to form the box.
+ 30 = The underlined letters in menus indicate a keyboard shortcut method to select the item. Just press ALT and the underlined letter.
+ 31 = You can put a shortcut to a printer on your desktop for easy access to printing functions.
+ 32 = For a bit of diversion, try a game in the Games folder. Click Start, point to Programs, point to Games, and then click a game.
+ 33 = To free disk space, try emptying the Recycle Bin.
+ 34 = You can drag a file's icon into a document, or even drag a shortcut icon into a document or mail message.
+ 35 = You can have programs start automatically when you start Windows NT by dragging their icons to the Startup folder.
+ 36 = If you have a tape drive, you can use Backup to make copies of important files or your entire volume. Click Start, point to Programs, point to Administrative Tools, and then click Backup.
+ 37 = In Windows NT Explorer, you can set options to show or hide the three-letter filename extensions.
+ 38 = Use Quick View to preview a document without opening it by right-clicking a document and then choosing Quick View from the menu that appears.
+ 39 = Use an error-checking tool to periodically check a volume for errors. In Windows NT Explorer, right-click the volume you want to check, click Properties, and then click the Tools tab.
+ 40 = When you print a document, a printer icon appears on the taskbar. Double-click it to see a list of documents waiting to print.
+ 41 = To find out about any button on a toolbar, rest your mouse pointer on the button for a few seconds.
+ 42 = You can use the Run command on the Start menu to open shared folders on another computer.
+ 43 = You can customize Windows NT in many ways. Don't hesitate to experiment!
+ 44 = If you work on a laptop computer away from your computer at the office, you can easily keep documents up-to-date on both machines by using Briefcase.
+ 45 = If your computer is set up to use a network directory service, you can double-click the Network Neighborhood icon on your desktop to see computers in your workgroup.
+ 46 = For security, you can change your password by pressing CTRL+ALT+DEL and clicking Change Password.
+ 47 = You can manage applications that are currently running by pressing CTRL+ALT+DEL and clicking Task Manager.
+ 48 = For security, you can lock your display whenever you leave your computer by pressing CTRL+ALT+DEL and clicking Lock Workstation.
+ 49 = You can create a shortcut to open a document or program that you use frequently directly from the desktop. A shortcut does not change the file's location; it just lets you open the file from a more \
+ convenient \
+ location.
+ MS-DOS Emulation
+ Font
+ Font = Lucida Console
+ Nls
+ LocaleMapIDs
+ = 255,254
+ 00001801 = 0,1
+ 00001401 = *2,3
+ 00001C01 = *250,214
+ 00001001 = 4,5
+ 00000C01 = 6,7
+ 00000436 = 10,11
+ 00001C09 = *10,11
+ 00000409 = 12,13
+ 00001009 = *14,15
+ 00000C0C = 14,15
+ 0000080A = 16,17
+ 00000416 = 18,19
+ 00000C09 = 20,21
+ 00001409 = 22,23
+ 00000C04 = 24,25
+ 00000804 = *24,25
+ 00001004 = *250,240
+ 00000404 = *250,247
+ 00000411 = 26,27
+ 00000412 = 28,29
+ 00000421 = 30,31
+ 0000041E = 32,33
+ 00003C01 = *250,187
+ 00002C01 = *250,195
+ 00003401 = *250,188
+ 00004001 = *250,186
+ 00000401 = *250,182
+ 00003801 = *250,185
+ 0000040D = *250,176
+ 00002001 = *250,184
+ 00002401 = *250,183
+ 00000801 = *250,181
+ 00003001 = *250,177
+ 00002801 = *250,178
+ 0000041F = *38,39
+ 00000429 = *250,192
+ 00000419 = 42,43
+ 00000816 = 44,45
+ 0000042D = 46,47
+ 00000403 = 46,47
+ 00000C0A = *46,47
+ 0000040A = 46,47
+ 0000080C = 250,116
+ 0000140C = *250,118
+ 0000040C = *48,49
+ 0000100C = 250,96
+ 00000410 = *50,51
+ 00000810 = 250,96
+ 00000813 = *250,116
+ 00000413 = *250,114
+ 00000C07 = *250,100
+ 00001407 = *250,120
+ 00001007 = 250,118
+ 00000407 = *52,53
+ 00000807 = *250,96
+ 00000809 = *54,55
+ 00001809 = *113,112
+ 00000408 = 56,57
+ 0000040F = 58,59
+ 00000422 = 60,61
+ 0000041C = *250,110
+ 00000402 = *250,108
+ 0000041A = 62,63
+ 0000040E = *250,104
+ 00000418 = *250,106
+ 00000424 = *250,241
+ 00000405 = *250,98
+ 00000415 = *64,65
+ 0000041B = *250,102
+ 00000423 = *250,124
+ 00000425 = *250,128
+ 00000426 = *250,122
+ 00000427 = *127,126
+ 00000414 = *68,69
+ 00000814 = 68,69
+ 0000041D = 70,71
+ 0000040B = 72,73
+ 00000406 = 74,75
+ 0000081A = *250,242
+ 0000100A = *250,132
+ 0000140A = *250,137
+ 00002409 = *250,139
+ 00001C0A = *250,142
+ 00002009 = *250,140
+ 0000180A = *250,138
+ 0000200A = *250,163
+ 0000240A = *250,164
+ 0000280A = *250,166
+ 0000300A = *250,165
+ 0000340A = *250,168
+ 00003C0A = *250,169
+ 00002C0A = *250,170
+ 0000380A = *250,171
+ RenameFiles
+ Win
+ = REG_EXPAND_SZ %SystemRoot%\system32
+ INF = INF,2
+ Run
+ SystemTray = SysTray.Exe
+ RunOnce
+ Welcome =
+ InitShell = 1
+ Setup
+ OptionalComponents
+ BaseWinOptions
+ Telephony [8 1 17 5 16 13]
+ Locations
+ DisableCallWaiting = REG_DWORD 0x00000003
+ DisableCallWaiting0 = *70,
+ DisableCallWaiting1 = 70#,
+ DisableCallWaiting2 = 1170,
+ Providers
+ NumProviders = REG_DWORD 0x00000002
+ NextProviderID = REG_DWORD 0x00000003
+ ProviderID0 = REG_DWORD 0x00000001
+ ProviderID1 = REG_DWORD 0x00000002
+ ProviderFilename0 = kmddsp.tsp
+ ProviderFilename1 = unimdm.tsp
+ Windows Messaging Subsystem
+ InstallCmd = rundll32 setupapi,InstallHinfSection MSMAIL 132 msmail.inf
+ Windows NT [8 1 16 13 17 5]
+ CurrentVersion [8 1 16 13 17 5]
+ ProfileList [9 1 17 5]
+ SoftwareType = System
+ InstallDate = REG_DWORD 0x00000000
+ RegisteredOwner = William H. Gates III
+ RegisteredOrganization = Microsoft Corporation
+ CurrentBuild = 1.511.1 () (Obsolete data - do not use)
+ NetworkCards [8 1 16 17 5]
+ Time Zones [8 1 17]
+ GMT
+ Display = (GMT) Greenwich Mean Time; Dublin, Edinburgh, London, Lisbon
+ Dlt = British Summer Time
+ MapID = 0,1
+ TZI = REG_BINARY 0x0000002c 0x00000000 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000003 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+ Romance Standard Time
+ Display = (GMT+01:00) Paris, Madrid, Amsterdam
+ Dlt = Romance Daylight Time
+ MapID = -1,64
+ TZI = REG_BINARY 0x0000002c 0xffffffc4 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000003 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+ Central Europe Standard Time
+ Display = (GMT+01:00) Prague, Warsaw, Budapest
+ Dlt = Central Europe Daylight Time
+ MapID = -1,66
+ TZI = REG_BINARY 0x0000002c 0xffffffc4 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000003 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+ W. Europe Standard Time
+ Display = (GMT+01:00) Berlin, Stockholm, Rome, Bern, Brussels, Vienna
+ Dlt = W. Europe Daylight Time
+ MapID = 2,3
+ TZI = REG_BINARY 0x0000002c 0xffffffc4 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000003 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+ E. Europe Standard Time
+ Display = (GMT+02:00) Eastern Europe
+ Dlt = E. Europe Daylight Time
+ MapID = 4,5
+ TZI = REG_BINARY 0x0000002c 0xffffff88 0x00000000 0xffffffc4 0x00090000 0x00050000 0x00000001 0x00000000 0x00030000 0x00050000 0x00000000 0x00000000
+ GFT Standard Time
+ Display = (GMT+02:00) Athens, Helsinki, Istanbul
+ Dlt = GFT Daylight Time
+ MapID = -1,67
+ TZI = REG_BINARY 0x0000002c 0xffffff88 0x00000000 0xffffffc4 0x00090000 0x00050000 0x00000000 0x00000000 0x00030000 0x00050000 0x00000000 0x00000000
+ E. South America Standard Time
+ Display = (GMT-03:00) Brasilia
+ Dlt = E. South America Daylight Time
+ MapID = -1,80
+ TZI = REG_BINARY 0x0000002c 0x000000b4 0x00000000 0xffffffc4 0x00020000 0x00020000 0x00000002 0x00000000 0x000a0000 0x00030000 0x00000002 0x00000000
+ Atlantic Standard Time
+ Display = (GMT-04:00) Atlantic Time (Canada)
+ Dlt = Atlantic Daylight Time
+ MapID = 40,41
+ TZI = REG_BINARY 0x0000002c 0x000000f0 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+ Eastern Standard Time
+ Display = (GMT-05:00) Eastern Time (US & Canada)
+ Dlt = Eastern Daylight Time
+ MapID = 38,39
+ TZI = REG_BINARY 0x0000002c 0x0000012c 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+ Central Standard Time
+ Display = (GMT-06:00) Central Time (US & Canada)
+ Dlt = Central Daylight Time
+ MapID = 36,37
+ TZI = REG_BINARY 0x0000002c 0x00000168 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+ Mountain Standard Time
+ Display = (GMT-07:00) Mountain Time (US & Canada)
+ Dlt = Mountain Daylight Time
+ MapID = 34,35
+ TZI = REG_BINARY 0x0000002c 0x000001a4 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+ Pacific Standard Time
+ Display = (GMT-08:00) Pacific Time (US & Canada); Tijuana
+ Dlt = Pacific Daylight Time
+ MapID = 32,33
+ TZI = REG_BINARY 0x0000002c 0x000001e0 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+ Alaskan Standard Time
+ Display = (GMT-09:00) Alaska
+ Dlt = Alaskan Daylight Time
+ MapID = 30,31
+ TZI = REG_BINARY 0x0000002c 0x0000021c 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+ Hawaiian Standard Time
+ Display = (GMT-10:00) Hawaii
+ Dlt = Hawaiian Daylight Time
+ MapID = 28,29
+ TZI = REG_BINARY 0x0000002c 0x00000258 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Samoa Standard Time
+ Display = (GMT-11:00) Midway Island, Samoa
+ Dlt = Samoa Daylight Time
+ MapID = 26,27
+ TZI = REG_BINARY 0x0000002c 0x00000294 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ New Zealand Standard Time
+ Display = (GMT+12:00) Wellington, Auckland
+ Dlt = New Zealand Daylight Time
+ MapID = 78,79
+ TZI = REG_BINARY 0x0000002c 0xfffffd30 0x00000000 0xffffffc4 0x00030000 0x00030000 0x00000002 0x00000000 0x000a0000 0x00010000 0x00000002 0x00000000
+ Sydney Standard Time
+ Display = (GMT+10:00) Brisbane, Melbourne, Sydney
+ Dlt = Sydney Daylight Time
+ MapID = 20,21
+ TZI = REG_BINARY 0x0000002c 0xfffffda8 0x00000000 0xffffffc4 0x00030000 0x00010000 0x00000002 0x00000000 0x000a0000 0x00050000 0x00000002 0x00000000
+ Cen. Australia Standard Time
+ Display = (GMT+09:30) Adelaide
+ Dlt = Cen. Australia Daylight Time
+ MapID = -1,76
+ TZI = REG_BINARY 0x0000002c 0xfffffdc6 0x00000000 0xffffffc4 0x00030000 0x00010000 0x00000002 0x00000000 0x000a0000 0x00050000 0x00000002 0x00000000
+ Tokyo Standard Time
+ Display = (GMT+09:00) Tokyo, Osaka, Sapporo, Seoul, Yakutsk
+ Dlt = Tokyo Daylight Time
+ MapID = 18,19
+ TZI = REG_BINARY 0x0000002c 0xfffffde4 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Taipei Standard Time
+ Display = (GMT+08:00) Hong Kong, Perth, Singapore, Taipei
+ Dlt = Taipei Daylight Time
+ MapID = 16,17
+ TZI = REG_BINARY 0x0000002c 0xfffffe20 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Bangkok Standard Time
+ Display = (GMT+07:00) Bangkok, Jakarta, Hanoi
+ Dlt = Bangkok Daylight Time
+ MapID = 14,15
+ TZI = REG_BINARY 0x0000002c 0xfffffe5c 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ India Standard Time
+ Display = (GMT+05:30) Bombay, Calcutta, Madras, New Delhi, Colombo
+ Dlt = India Daylight Time
+ MapID = -1,74
+ TZI = REG_BINARY 0x0000002c 0xfffffeb6 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Arabian Standard Time
+ Display = (GMT+04:00) Abu Dhabi, Muscat, Tbilisi
+ Dlt = Arabian Daylight Time
+ MapID = 8,9
+ TZI = REG_BINARY 0x0000002c 0xffffff10 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Iran Standard Time
+ Display = (GMT+03:30) Tehran
+ Dlt = Iran Daylight Time
+ MapID = -1,72
+ TZI = REG_BINARY 0x0000002c 0xffffff2e 0x00000000 0xffffffc4 0x00090000 0x00040002 0x00000002 0x00000000 0x00030000 0x00010000 0x00000002 0x00000000
+ Saudi Arabia Standard Time
+ Display = (GMT+03:00) Baghdad, Kuwait, Nairobi, Riyadh
+ Dlt = Saudi Arabia Daylight Time
+ MapID = -1,71
+ TZI = REG_BINARY 0x0000002c 0xffffff4c 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Israel Standard Time
+ Display = (GMT+02:00) Israel
+ Dlt = Israel Daylight Time
+ MapID = -1,70
+ TZI = REG_BINARY 0x0000002c 0xffffff88 0x00000000 0xffffffc4 0x00090000 0x00010000 0x00000002 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+ Newfoundland Standard Time
+ Display = (GMT-03:30) Newfoundland
+ Dlt = Newfoundland Daylight Time
+ MapID = -1,81
+ TZI = REG_BINARY 0x0000002c 0x000000d2 0x00000000 0xffffffc4 0x000a0000 0x00050000 0x00000002 0x00000000 0x00040000 0x00010000 0x00000002 0x00000000
+ Azores Standard Time
+ Display = (GMT-01:00) Azores, Cape Verde Is.
+ Dlt = Azores Daylight Time
+ MapID = 46,47
+ TZI = REG_BINARY 0x0000002c 0x0000003c 0x00000000 0xffffffc4 0x00090000 0x00050000 0x00000002 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+ Mid-Atlantic Standard Time
+ Display = (GMT-02:00) Mid-Atlantic
+ Dlt = Mid-Atlantic Daylight Time
+ MapID = 44,45
+ TZI = REG_BINARY 0x0000002c 0x00000078 0x00000000 0xffffffc4 0x00090000 0x00050000 0x00000002 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+ GMT Standard Time
+ Display = (GMT) Monrovia, Casablanca
+ Dlt = GMT DST
+ MapID = 88,89
+ TZI = REG_BINARY 0x0000002c 0x00000000 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ SA Eastern Standard Time
+ Display = (GMT-03:00) Buenos Aires, Georgetown
+ Dlt = SA Eastern Daylight Time
+ MapID = 42,43
+ TZI = REG_BINARY 0x0000002c 0x000000b4 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ SA Western Standard Time
+ Display = (GMT-04:00) Caracas, La Paz
+ Dlt = SA Western Daylight Time
+ MapID = -1,82
+ TZI = REG_BINARY 0x0000002c 0x000000f0 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ US Eastern Standard Time
+ Display = (GMT-05:00) Indiana (East)
+ Dlt = US Eastern Daylight Time
+ MapID = -1,84
+ TZI = REG_BINARY 0x0000002c 0x0000012c 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ SA Pacific Standard Time
+ Display = (GMT-05:00) Bogota, Lima
+ Dlt = SA Pacific Daylight Time
+ MapID = -1,83
+ TZI = REG_BINARY 0x0000002c 0x0000012c 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Canada Central Standard Time
+ Display = (GMT-06:00) Saskatchewan
+ Dlt = Canada Central Daylight Time
+ MapID = -1,86
+ TZI = REG_BINARY 0x0000002c 0x00000168 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Mexico Standard Time
+ Display = (GMT-06:00) Mexico City, Tegucigalpa
+ Dlt = Mexico Daylight Time
+ MapID = -1,85
+ TZI = REG_BINARY 0x0000002c 0x00000168 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ US Mountain Standard Time
+ Display = (GMT-07:00) Arizona
+ Dlt = US Mountain Daylight Time
+ MapID = -1,87
+ TZI = REG_BINARY 0x0000002c 0x000001a4 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Dateline Standard Time
+ Display = (GMT-12:00) Eniwetok, Kwajalein
+ Dlt = Dateline Daylight Time
+ MapID = 24,25
+ TZI = REG_BINARY 0x0000002c 0x000002d0 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Fiji Standard Time
+ Display = (GMT+12:00) Fiji, Kamchatka, Marshall Is.
+ Dlt = Fiji Daylight Time
+ MapID = 24,25
+ TZI = REG_BINARY 0x0000002c 0xfffffd30 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Central Pacific Standard Time
+ Display = (GMT+11:00) Magadan, Solomon Is., New Caledonia
+ Dlt = Central Pacific Daylight Time
+ MapID = 22,23
+ TZI = REG_BINARY 0x0000002c 0xfffffd6c 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Tasmania Standard Time
+ Display = (GMT+10:00) Hobart
+ Dlt = Tasmania Daylight Time
+ MapID = 20,-1
+ TZI = REG_BINARY 0x0000002c 0xfffffda8 0x00000000 0xffffffc4 0x00030000 0x00050000 0x00000002 0x00000000 0x000a0000 0x00010000 0x00000002 0x00000000
+ West Pacific Standard Time
+ Display = (GMT+10:00) Guam, Port Moresby, Vladivostok
+ Dlt = West Pacific Daylight Time
+ MapID = -1,77
+ TZI = REG_BINARY 0x0000002c 0xfffffda8 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ AUS Central Standard Time
+ Display = (GMT+09:30) Darwin
+ Dlt = AUS Central Daylight Time
+ MapID = -1,76
+ TZI = REG_BINARY 0x0000002c 0xfffffdc6 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ China Standard Time
+ Display = (GMT+08:00) Beijing, Chongqing, Urumqi
+ Dlt = China Daylight Time
+ MapID = -1,75
+ TZI = REG_BINARY 0x0000002c 0xfffffe20 0x00000000 0xffffffc4 0x00090000 0x00020000 0x00000002 0x00000000 0x00040000 0x00020000 0x00000002 0x00000000
+ Central Asia Standard Time
+ Display = (GMT+06:00) Almaty, Dhaka
+ Dlt = Central Asia Daylight Time
+ MapID = 12,13
+ TZI = REG_BINARY 0x0000002c 0xfffffe98 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ West Asia Standard Time
+ Display = (GMT+05:00) Islamabad, Karachi, Ekaterinburg, Tashkent
+ Dlt = West Asia Daylight Time
+ MapID = 10,11
+ TZI = REG_BINARY 0x0000002c 0xfffffed4 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Afghanistan Standard Time
+ Display = (GMT+04:30) Kabul
+ Dlt = Afghanistan Daylight Time
+ MapID = -1,73
+ TZI = REG_BINARY 0x0000002c 0xfffffef2 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Egypt Standard Time
+ Display = (GMT+02:00) Cairo
+ Dlt = Egypt Daylight Time
+ MapID = 4,68
+ TZI = REG_BINARY 0x0000002c 0xffffff88 0x00000000 0xffffffc4 0x00090000 0x00050003 0x00000002 0x00000000 0x00050000 0x00010005 0x00000002 0x00000000
+ South Africa Standard Time
+ Display = (GMT+02:00) Harare, Pretoria
+ Dlt = South Africa Daylight Time
+ MapID = 4,69
+ TZI = REG_BINARY 0x0000002c 0xffffff88 0x00000000 0xffffffc4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ Russian Standard Time
+ Display = (GMT+03:00) Moscow, St. Petersburg, Kazan, Volgograd
+ Dlt = Russian Daylight Time
+ MapID = 6,7
+ TZI = REG_BINARY 0x0000002c 0xffffff4c 0x00000000 0xffffffc4 0x00090000 0x00050000 0x00000002 0x00000000 0x00030000 0x00050000 0x00000002 0x00000000
+ Type 1 Installer
+ Log events = REG_DWORD 0x00000000
+ Copyrights
+ EDXP22M?M[*$SM%R*P>S = REG_DWORD 0x00000539
+ BEMB>C&/S4V!& = REG_DWORD 0x00000310
+ TX86%AS:_X[RE;H48<JS = REG_DWORD 0x0000057e
+ U,O = REG_DWORD 0x000000d0
+ A2<!BMGS.?PB-: = REG_DWORD 0x0000035f
+ M$5M^BJ/TDI/7JC2!SNB,CEF = REG_DWORD 0x00000610
+ E:?D.Q = REG_DWORD 0x00000181
+ MMR6D5B)E = REG_DWORD 0x0000024b
+ A,S(&ILYKM[:S_<-S1 = REG_DWORD 0x000004c8
+ C[^68EECQ/H/9M3E:* = REG_DWORD 0x00000490
+ U*M = REG_DWORD 0x000000cc
+ BEUHJ&T?,$0<IU8SC!OP = REG_DWORD 0x0000050f
+ DM+EM = REG_DWORD 0x0000014e
+ I<GH<([$1:S07G$;O'8>[OC1 = REG_DWORD 0x000005cc
+ A:/IG0F&ZAP7<V%K<IRQ&M89ZC = REG_DWORD 0x000006a3
+ LYV3_M/RV6<+5 = REG_DWORD 0x00000383
+ P75CL!JG[OP?G.O)U[:^^(1VM<^M%BL&T_:NKEW = REG_DWORD 0x00000aa7
+ C[^68ECE+D3C,MPD?'+:0S = REG_DWORD 0x00000577
+ GUV;<,8-XFJM = REG_DWORD 0x0000032f
+ TB:38TBF68:Z/7J1 = REG_DWORD 0x000003fa
+ C[_%1W+R4?]S7H = REG_DWORD 0x000003c9
+ BIR:.&K:2&V2BURZ;V*[57QMW8W = REG_DWORD 0x00000719
+ BIR:.&K:2&V2BURZ;V*[57][MH$M = REG_DWORD 0x00000753
+ BIR:.&K:2&QM<4F?0K.LMPJ3-G_H)6X = REG_DWORD 0x000007bc
+ BIR:.&K:2&QM<4F?0K.[^][.\D2B]Z1&_67) = REG_DWORD 0x0000093a
+ Type 1 Fonts [9 1 17 5]
+ Winlogon [8 1 16 17 5]
+ System = lsass.exe
+ AutoRestartShell = REG_DWORD 0x00000001
+ Shell = Explorer.exe
+ DefaultUserName =
+ DefaultDomainName =
+ AutoAdminLogon = 0
+ VmApplet = rundll32 shell32,Control_RunDLL "sysdm.cpl"
+ Userinit = userinit,nddeagnt.exe
+ ReportBootOk = 1
+ LegalNoticeCaption =
+ LegalNoticeText =
+ ShutdownWithoutLogon = 1
+ PowerdownAfterShutdown = 0
+ Windows [8 1 17 5]
+ Spooler = yes
+ DeviceNotSelectedTimeout = 15
+ TransmissionRetryTimeout = 90
+ swapdisk =
+ AppInit_DLLs =
+ FontSubstitutes [9 1 17 5]
+ Helv = MS Sans Serif
+ Tms Rmn = MS Serif
+ Times = Times New Roman
+ Helvetica = Arial
+ MS Shell Dlg = MS Sans Serif
+ GRE_Initialize [9 1 17 5]
+ FONTS.FON = vgasys.fon
+ FIXEDFON.FON = vgafix.fon
+ OEMFONT.FON = vgaoem.fon
+ FontCache [8 1]
+ MaxSize = REG_DWORD 0x00000080
+ MinInitSize = REG_DWORD 0x00000004
+ MinIncrSize = REG_DWORD 0x00000004
+ FontMapper [8 1]
+ FIXEDSYS = REG_DWORD 0x00009000
+ COURIER = REG_DWORD 0x00008800
+ MS SERIF = REG_DWORD 0x00005000
+ MS SANS SERIF = REG_DWORD 0x00001000
+ SMALL FONTS = REG_DWORD 0x00000800
+ COURIER NEW = REG_DWORD 0x00008000
+ TIMES NEW ROMAN = REG_DWORD 0x00004000
+ ARIAL = REG_DWORD 0x00000000
+ SYMBOL = REG_DWORD 0x00004002
+ WINGDINGS = REG_DWORD 0x00000002
+ SYMBOL1 = REG_DWORD 0x0000a002
+ WINGDINGS2 = REG_DWORD 0x00008002
+ DEFAULT = REG_DWORD 0x00000000
+ Fonts [9 1 17 5]
+ Font Drivers [8 1]
+ Embedding [9 1 17 5]
+ SoundRec = Sound,Sound,sndrec32.exe,picture
+ Package = Package,Package,packager.exe,picture
+ PBrush = Paintbrush Picture,Paintbrush Picture,pbrush.exe,picture
+ Compatibility [9 1 17 5]
+ TURBOTAX = 0x00080000
+ W4GLR = 0x4000
+ W4GL = 0x4000
+ NETSET2 = 0x0100
+ GUIDE = 0x1000
+ EXCEL = 0x1000
+ APORIA = 0x0100
+ ED = 0x00010000
+ PLUS = 0x1000
+ PR2 = 0x2000
+ CHARISMA = 0x2000
+ WINSIM = 0x2000
+ DRAW = 0x2000
+ PLANNER = 0x2000
+ DESIGNER = 0x2000
+ PM4 = 0x2000
+ MILESV3 = 0x1000
+ _BNOTES = 0x24000
+ MCOURIER = 0x0800
+ VISION = 0x0040
+ PACKRAT = 0x0800
+ WIN2WRS = 0x1210
+ VB = 0x0200
+ TME = 0x0100
+ JW = 0x42080
+ CP = 0x0040
+ PIXIE = 0x0040
+ REM = 0x8022
+ AMIPRO = 0x0010
+ CCMAIL = 0x0008
+ WPWINFIL = 0x0006
+ NOTSHELL = 0x0001
+ TBOOK = 0x0400
+ BALER = 0x08000000
+ CORELPNT = 0x08000000
+ MYST = 0x08000000
+ QW = 0x08000000
+ TL6 = 0x08000000
+ MCI Extensions [9 1 17 5]
+ Wav = WaveAudio
+ rmi = Sequencer
+ Mid = Sequencer
+ avi = avivideo
+ MCI32
+ WaveAudio = mciwave.dll
+ Sequencer = mciseq.dll
+ CDAudio = mcicda.dll
+ AVIVideo = mciavi32.dll
+ MCI [9 1 17 5]
+ WaveAudio = mciwave.drv
+ Sequencer = mciseq.drv
+ CDAudio = mcicda.drv
+ AVIVideo = mciavi.drv
+ Userinstallable.drivers
+ drivers.desc [9 1 17 5]
+ related.desc
+ Drivers32 [8 1 17 5]
+ wave = mmdrv.dll
+ midi = mmdrv.dll
+ aux = mmdrv.dll
+ wavemapper = msacm32.drv
+ midimapper = midimap.dll
+ vidc.msvc = msvidc32.dll
+ vidc.cvid = iccvid.dll
+ vidc.mrle = msrle32.dll
+ vidc.iv31 = ir32_32.dll
+ vidc.iv32 = ir32_32.dll
+ msacm.msadpcm = msadp32.acm
+ msacm.imaadpcm = imaadp32.acm
+ msacm.msgsm610 = msgsm32.acm
+ msacm.trspch = tssoft32.acm
+ msacm.msg711 = msg711.acm
+ Drivers [9 1 17 5]
+ wave = mmdrv.dll
+ timer = timer.drv
+ AeDebug [9 1 17 5]
+ UserDebuggerHotKey = REG_DWORD 0x00000000
+ Debugger = drwtsn32 -p %ld -e %ld -g
+ Auto = 1
+ Image File Execution Options [8 1 17 5]
+ Your Image File Name Here without a path
+ GlobalFlag = 0x000010F0
+ Debugger = ntsd -d
+ Perflib [8 1 17 5]
+ Base Index = REG_DWORD 0x00000737
+ Last Counter = REG_DWORD 0x00000736
+ Last Help = REG_DWORD 0x00000737
+ Version = REG_DWORD 0x00010001
+ Ports [9 1 17 5]
+ LPT1: =
+ LPT2: =
+ LPT3: =
+ COM1: = 9600,n,8,1
+ COM2: = 9600,n,8,1
+ COM3: = 9600,n,8,1
+ COM4: = 9600,n,8,1
+ FILE: =
+ WOW [9 1 17 5]
+ boot
+ shell = progman.exe
+ mouse.drv = mouse.drv
+ sound.drv = sound.drv
+ comm.drv = comm.drv
+ keyboard.drv = keyboard.drv
+ system.drv = system.drv
+ fixedfon.fon = vgafix.fon
+ oemfonts.fon = vgaoem.fon
+ fonts.fon = vgasys.fon
+ display.drv = vga.drv
+ language.dll =
+ network.drv = wfwnet.drv
+ drivers = mmsystem.dll
+ Compatibility
+ RELAY = 0x80000000
+ MAILSPL = 0x40000000
+ SHOPPER = 0x20000000
+ SHADOW = 0x10000000
+ ANIMATE = 0x08000000
+ COBOL = 0x08000000
+ WIN2WRS = 0x04000000
+ PHOTOSHO = 0x02000800 0x00800000
+ PM4 = 0x02004000
+ PSTYLER = 0x02000000
+ CHARISMA = 0x01000000
+ CHARM40 = 0x01000000
+ DESIGNER = 0x01000000
+ DRAW = 0x01000000
+ MGXPRINT = 0x01000000
+ WINCHART = 0x01000000
+ WPWIN = 0x00000100
+ WPWINFIL = 0x00400000
+ DEW = 0x00200000
+ WINPROJ = 0x00200000
+ MSWORKS = 0x00080002 0x01000000
+ IMPROV = 0x00020000
+ PM5APP = 0x00000000 0x00010000
+ SPJWIN30 = 0x00008000
+ MAIN123W = 0x00004000
+ PLAY = 0x00002000
+ PB030 = 0x00001000
+ XPRESS = 0x00000400 0x40000000
+ QPW = 0x00000200
+ WPWPRINT = 0x00000100
+ FH4 = 0x00000180
+ WINWORD = 0x00000040
+ DS40 = 0x01000000
+ CORELDRW = 0x00000020
+ DBASEWIN = 0x00000010
+ CORELCHT = 0x00000004
+ APPTU812 = 0x00000001
+ MSPUB = 0x00000002
+ STXR30 = 0x00000000 0x80000000
+ ISSET_SE = 0x00100000 0x20000000
+ NCSETUP = 0x00000000 0x20000000
+ MFWIN20 = 0x00000000 0x10000000
+ DB32W = 0x00000000 0x02000000
+ INSTBIN = 0x00000000 0x08000000
+ BBALL = 0x00000000 0x20000000
+ EXPLORE = 0x00000000 0x20000000
+ TSSETUP = 0x00000000 0x04000000
+ PAGEPLUS = 0x00000008
+ TUTORIAL = 0x00000000 0x00400000
+ MAVIS = 0x00000000 0x00200000
+ EMW = 0x00000000 0x00000001
+ DIRECTOR = 0x00000000 0x00100000
+ ENVOY = 0x00000000 0x00080000
+ TCADWIN = 0x00000000 0x00040000
+ PCH35NCM = 0x00000000 0x00020000
+ DICTED = 0x00000000 0x00010000
+ INSTALL = 0x00000000 0x00008000
+ XTALK = 0x00000000 0x00004000
+ NBAMW4V4 = 0x00040000
+ PREMIERE = 0x00000000 0x00002000
+ 123W = 0x00000000 0x04000000
+ keyboard
+ subtype =
+ type = 4
+ keyboard.dll =
+ boot.description
+ keyboard.typ = Enhanced 101 or 102 key US and Non US keyboards
+ mouse.drv = Microsoft, or IBM PS/2
+ language.dll = English (American)
+ system.drv = MS-DOS or PC-DOS System
+ display.drv = VGA
+ network.drv = LAN Support
+ standard
+ NonWindowsApp
+ WowFax
+ SupportedFaxDrivers
+ DriverNames = REG_MULTI_SZ "WINFAX" \
+ "E-FAX" \
+ "MAXFAXP" \
+ "Quick Link II Fax" \
+ "Quick Link Gold" \
+ "Procomm Plus"
+ SetupPrograms
+ SetupProgramNames = REG_MULTI_SZ "setup" \
+ "install" \
+ "inst" \
+ "imposta" \
+ "ayarla" \
+ "felrak" \
+ "eviewset"
+ IniFileMapping [8 1 17 5]
+ win.ini
+ Windows
+ = USR:Software\Microsoft\Windows NT\CurrentVersion\Windows
+ CursorBlinkRate = #USR:Control Panel\Desktop
+ BorderWidth = #USR:Control Panel\Desktop\WindowMetrics
+ ScreenSaveTimeOut = #USR:Control Panel\Desktop
+ ScreenSaveActive = #USR:Control Panel\Desktop
+ CoolSwitch = USR:Control Panel\Desktop
+ DragFullWindows = USR:Control Panel\Desktop
+ KeyboardSpeed = #USR:Control Panel\Keyboard
+ KeyboardDelay = #USR:Control Panel\Keyboard
+ InitialKeyboardIndicators = USR:Control Panel\Keyboard
+ Beep = #USR:Control Panel\Sound
+ SwapMouseButtons = #USR:Control Panel\Mouse
+ DoubleClickSpeed = #USR:Control Panel\Mouse
+ DoubleClickHeight = #USR:Control Panel\Mouse
+ DoubleClickWidth = #USR:Control Panel\Mouse
+ MouseThreshold1 = #USR:Control Panel\Mouse
+ MouseThreshold2 = #USR:Control Panel\Mouse
+ MouseSpeed = #USR:Control Panel\Mouse
+ SnapToDefaultButton = #USR:Control Panel\Mouse
+ Spooler = #SYS:Microsoft\Windows NT\CurrentVersion\Windows
+ DeviceNotSelectedTimeout = #SYS:Microsoft\Windows NT\CurrentVersion\Windows
+ TransmissionRetryTimeout = #SYS:Microsoft\Windows NT\CurrentVersion\Windows
+ swapdisk = SYS:Microsoft\Windows NT\CurrentVersion\Windows
+ AppInit_DLLs = SYS:Microsoft\Windows NT\CurrentVersion\Windows
+ DefaultSeparateVDM = \Registry\Machine\System\CurrentControlSet\Control\WOW
+ Cursors = #USR:Control Panel\Cursors
+ NWCS = SYS:Microsoft\Windows NT\CurrentVersion\NWCS
+ Winlogon = SYS:Microsoft\Windows NT\CurrentVersion\Winlogon
+ DeskTop = #USR:Control Panel\Desktop
+ Console = USR:Console
+ Devices = USR:Software\Microsoft\Windows NT\CurrentVersion\Devices
+ PrinterPorts = USR:Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts
+ Embedding = !#SYS:Microsoft\Windows NT\CurrentVersion\Embedding
+ Extensions = #USR:Software\Microsoft\Windows NT\CurrentVersion\Extensions
+ MCI Extensions = SYS:Microsoft\Windows NT\CurrentVersion\MCI Extensions
+ Intl = #USR:Control Panel\International
+ Ports = SYS:Microsoft\Windows NT\CurrentVersion\Ports
+ Windows Help = USR:Software\Microsoft\Windows Help
+ Clock = #USR:Software\Microsoft\Clock
+ MSCharMap = #USR:Software\Microsoft\Charmap
+ Compatibility = #SYS:Microsoft\Windows NT\CurrentVersion\Compatibility
+ Fonts = #SYS:Microsoft\Windows NT\CurrentVersion\Fonts
+ FontSubstitutes = #SYS:Microsoft\Windows NT\CurrentVersion\FontSubstitutes
+ GRE_Initialize = SYS:Microsoft\Windows NT\CurrentVersion\GRE_Initialize
+ TrueType = #USR:Software\Microsoft\Windows NT\CurrentVersion\TrueType
+ Colors = #USR:Control Panel\Colors
+ Sounds = #USR:Control Panel\Sounds
+ IOProcs = #USR:Control Panel\IOProcs
+ Network
+ = USR:Software\Microsoft\Windows NT\CurrentVersion\Network\Persistent Connections
+ ExpandLogonDomain = SYS:Microsoft\Windows NT\CurrentVersion\Network\World Full Access Shared Parameters
+ Net_Files = USR:Software\Microsoft\Windows NT\CurrentVersion\Network\Persistent Connections
+ AeDebug = SYS:Microsoft\Windows NT\CurrentVersion\AeDebug
+ ModuleCompatibility = SYS:Microsoft\Windows NT\CurrentVersion\ModuleCompatibility
+ control.ini
+ Current = #USR:Control Panel\Current
+ Color Schemes = #USR:Control Panel\Color Schemes
+ Custom Colors = #USR:Control Panel\Custom Colors
+ Patterns = #USR:Control Panel\Patterns
+ Screen Saver.3DFlowerBox = USR:Control Panel\Screen Saver.3DFlowerBox
+ Screen Saver.3DFlyingObj = USR:Control Panel\Screen Saver.3DFlyingObj
+ Screen Saver.3DPipes = USR:Control Panel\Screen Saver.3DPipes
+ Screen Saver.3DMaze = USR:Control Panel\Screen Saver.3DMaze
+ Screen Saver.3DText = USR:Control Panel\Screen Saver.3DText
+ Screen Saver.Bezier = USR:Control Panel\Screen Saver.Bezier
+ Screen Saver.Marquee = #USR:Control Panel\Screen Saver.Marquee
+ Screen Saver.Mystify = #USR:Control Panel\Screen Saver.Mystify
+ Screen Saver.Stars = #USR:Control Panel\Screen Saver.Stars
+ MMCPL = USR:Control Panel\MMCPL
+ don't load = USR:Control Panel\don't load
+ Userinstallable.drivers = SYS:Microsoft\Windows NT\CurrentVersion\Userinstallable.drivers
+ drivers.desc = SYS:Microsoft\Windows NT\CurrentVersion\drivers.desc
+ related.desc = SYS:Microsoft\Windows NT\CurrentVersion\related.desc
+ regedt32.ini
+ = USR:Software\Microsoft\RegEdt32
+ ntnet.ini
+ = USR:Software\Microsoft\Windows NT\CurrentVersion\Network
+ Shared Parameters = SYS:Microsoft\Windows NT\CurrentVersion\Network\World Full Access Shared Parameters
+ SMAddOns = SYS:Microsoft\Windows NT\CurrentVersion\Network\SMAddOns
+ UMAddOns = SYS:Microsoft\Windows NT\CurrentVersion\Network\UMAddOns
+ winfile.ini
+ Settings = #USR:Software\Microsoft\File Manager\Settings
+ AddOns = SYS:Microsoft\Windows NT\CurrentVersion\File Manager\AddOns
+ Ntbackup.ini
+ = #USR:Software\Microsoft\Ntbackup
+ Clock.ini
+ = #USR:Software\Microsoft\Clock
+ schdpl32.ini
+ = USR:Software\Microsoft\Schedule+
+ msacm.ini
+ = USR:Software\Microsoft\Multimedia\Audio Compression Manager
+ KeyboardLayout.ini
+ =
+ Preload = USR:Keyboard Layout\Preload
+ Keyboard Layout
+ = \Registry\Machine\System\CurrentControlSet\Control\Keyboard Layout
+ Active = USR:Keyboard Layout
+ Substitutes
+ = USR:Keyboard Layout\Substitutes
+ system.ini
+ keyboard = SYS:Microsoft\Windows NT\CurrentVersion\WOW\keyboard
+ boot.description = SYS:Microsoft\Windows NT\CurrentVersion\WOW\boot.description
+ standard = SYS:Microsoft\Windows NT\CurrentVersion\WOW\standard
+ NonWindowsApp = SYS:Microsoft\Windows NT\CurrentVersion\WOW\NonWindowsApp
+ MCI = SYS:Microsoft\Windows NT\CurrentVersion\MCI
+ MCI32 = SYS:Microsoft\Windows NT\CurrentVersion\MCI32
+ drivers32 = SYS:Microsoft\Windows NT\CurrentVersion\Drivers32
+ drivers = #SYS:Microsoft\Windows NT\CurrentVersion\drivers
+ msacm.drv = USR:Software\Microsoft\Multimedia\Sound Mapper
+ boot
+ = SYS:Microsoft\Windows NT\CurrentVersion\WOW\boot
+ ScreenSaverIsSecure = USR:Control Panel\Desktop
+ ScreenSaverActive = USR:Control Panel\Desktop
+ SCRNSAVE.EXE = USR:Control Panel\Desktop
+ Shell = SYS:Microsoft\Windows NT\CurrentVersion\Winlogon
+ ImageFileExecutionOptions.ini
+ = SYS:Microsoft\Windows NT\CurrentVersion\Image File Execution Options
+ File Manager [8 1 17 5 16 13]
+ AddOns
+ Network [8 1 17 5 16 13]
+ SMAddOns
+ UMAddOns
+ Shared Parameters
+ World Full Access Shared Parameters [7]
+ Midimap [9 1 17 5]
+ Mapping Name = Sound System
+ ModuleCompatibility
+ CWD = 0x8000
+ MYST = 0x8000
+ PALED40 = 0x0002
+ USA = 0x8000
+ VB = 0x0002
+ VB40016 = 0x0002
+ Ole [8 1 17 5]
+ EnableDCOM = Y
+ DefaultLaunchPermission = REG_BINARY 0x0000009c 0x80040001 0x00000064 0x00000080 0x00000000 0x00000014 0x00500002 0x00000003 0x00180000 0x00000001 0x00000101 0x05000000 0x00000012 0x00000000 0x00180000 0x00000001 0x00000101 \
+ 0x05000000 0x00000004 0x00000000 0x00180000 0x00000001 0x00000201 0x05000000 0x00000020 0x00000220 0x00000501 0x05000000 0x00000015 0x1f845fa0 0x496b2e5e 0x030312ce 0x000001f4 0x00000501 0x05000000 \
+ 0x00000015 0x1f845fa0 0x496b2e5e 0x030312ce 0x000001f4
+ Rpc [8 1 17 5]
+ DCOM Protocols = REG_MULTI_SZ "ncadg_ip_udp" \
+ "ncadg_ipx" \
+ "ncacn_ip_tcp" \
+ "ncacn_spx" \
+ "ncacn_nb_nb" \
+ "ncacn_nb_ipx"
+ NameService [8 1 17 5]
+ Protocol = ncacn_np
+ NetworkAddress = \\.
+ ServerNetworkAddress = \\.
+ Endpoint = \pipe\locator
+ DefaultSyntax = 3
+ NetBios [8 1 17 5]
+ ServerProtocols [8 1 17 5]
+ ncacn_np = rpclts1.dll
+ ncalrpc = ncalrpc
+ ClientProtocols [8 1 17 5]
+ ncacn_np = rpcltc1.dll
+ ncalrpc = ncalrpc
+ Secure [8 1 14 17 5]
+ NetDDE [17 1]
+ DDE Shares
+ SerialNumber = REG_BINARY 0x00000008 0x09000005 0x01000000
+ CLPBK$
+ fuCmdShow = REG_DWORD 0x00000007
+ ItemList = REG_MULTI_SZ
+ NewStyleLink =
+ NumItems = REG_DWORD 0x00000000
+ OldStyleLink =
+ Revision = REG_DWORD 0x00000001
+ SecurityDescriptor = REG_BINARY 0x0000006c 0x80040001 0x0000004c 0x0000005c 0x00000000 0x00000014 0x00380002 0x00000002 0x00180200 0x000f03ff 0x00000201 0x05000000 0x00000020 0x00000220 0x00180200 0x000002bd 0x00000101 \
+ 0x01000000 0x00000000 0x00000220 0x00000201 0x05000000 0x00000020 0x00000220 0x00000201 0x05000000 0x00000020 0x00000220
+ SerialNumber = REG_BINARY 0x00000008 0x09000005 0x01000000
+ Service = REG_DWORD 0x00000001
+ SharedFlag = REG_DWORD 0x00000001
+ ShareName = CLPBK$
+ ShareType = REG_DWORD 0x00000004
+ StartAppFlag = REG_DWORD 0x00000000
+ StaticDataLink = ClipSrv|System
+ Hearts$
+ fuCmdShow = REG_DWORD 0x00000001
+ ItemList = REG_MULTI_SZ
+ NewStyleLink = MSHearts|Hearts
+ NumItems = REG_DWORD 0x00000000
+ OldStyleLink = MSHearts|Hearts
+ Revision = REG_DWORD 0x00000001
+ SecurityDescriptor = REG_BINARY 0x00000068 0x80040001 0x00000048 0x00000058 0x00000000 0x00000014 0x00340002 0x00000002 0x00180000 0x000f03ff 0x00000201 0x05000000 0x00000020 0x00000220 0x00140000 0x000102fd 0x00000101 \
+ 0x01000000 0x00000000 0x00000201 0x05000000 0x00000020 0x00000220 0x00000201 0x05000000 0x00000020 0x00000220
+ SerialNumber = REG_BINARY 0x00000008 0x09000004 0x01000000
+ Service = REG_DWORD 0x00000000
+ SharedFlag = REG_DWORD 0x00000001
+ ShareName = Hearts$
+ ShareType = REG_DWORD 0x00000007
+ StartAppFlag = REG_DWORD 0x00000000
+ StaticDataLink = MSHearts|Hearts
+ Chat$
+ fuCmdShow = REG_DWORD 0x00000006
+ ItemList = REG_MULTI_SZ
+ NewStyleLink =
+ NumItems = REG_DWORD 0x00000000
+ OldStyleLink =
+ Revision = REG_DWORD 0x00000001
+ SecurityDescriptor = REG_BINARY 0x00000068 0x80040001 0x00000048 0x00000058 0x00000000 0x00000014 0x00340002 0x00000002 0x00180000 0x000f03ff 0x00000201 0x05000000 0x00000020 0x00000220 0x00140000 0x000102fd 0x00000101 \
+ 0x01000000 0x00000000 0x00000201 0x05000000 0x00000020 0x00000220 0x00000201 0x05000000 0x00000020 0x00000220
+ SerialNumber = REG_BINARY 0x00000008 0x09000003 0x01000000
+ Service = REG_DWORD 0x00000000
+ SharedFlag = REG_DWORD 0x00000001
+ ShareName = Chat$
+ ShareType = REG_DWORD 0x00000004
+ StartAppFlag = REG_DWORD 0x00000001
+ StaticDataLink = WinChat|Chat
+ Parameters
+ General
+ NDDEAGNT
+ NDDEAPI
+ NetBIOS
+ Cryptography
+ Defaults
+ Provider
+ Provider Types
+ DirectPlay
+ Services
+ {5146ab8cb6b1ce11920c00aa006c4972}
+ Path = REG_EXPAND_SZ %SystemRoot%\system32\dpwsock.dll
+ Description = WinSock IPX Connection For DirectPlay
+ Players
+ Sessions
+ {5246ab8cb6b1ce11920c00aa006c4972}
+ Path = REG_EXPAND_SZ %SystemRoot%\system32\dpserial.dll
+ Description = Modem Connection For DirectPlay
+ Players
+ Sessions
+ {5046ab8cb6b1ce11920c00aa006c4972}
+ Path = REG_EXPAND_SZ %SystemRoot%\system32\dpwsock.dll
+ Description = WinSock TCP Connection For DirectPlay
+ Players
+ Sessions
diff --git a/public/oak/bin/sources.tpl b/public/oak/bin/sources.tpl
new file mode 100644
index 000000000..5a424ac79
--- /dev/null
+++ b/public/oak/bin/sources.tpl
@@ -0,0 +1,162 @@
+ !!!!!!!!!!!!!!!!!!!!! WHAT YOU NEED TO DO !!!!!!!!!!!!!!!!!!!!!
+
+ - replace the xxxxx in the MAJORCOMP= and MINORCOMP= macros below
+ with your components major and minor component name
+ (e.g. MAJORCOMP=ntos, MINORCOMP=ke etc.).
+
+ - replace the xxxxx in the TARGETNAME= macro below with your target name
+ (e.g. OS2, POSIX, PM, etc.).
+
+ - edit the TARGETPATH= and TARGETTYPE= macros below to specify the location
+ any type of the target.
+
+ - edit the INCLUDES= macro below if you have a private include directory
+ to search.
+
+ - carefully edit the SOURCES= macro below so that it defines all the source
+ files for this subcomponent
+
+ - edit out these noisy instructions and all comments
+
+ - save this file, exit the editor and execute the "build" command.
+
+ - From now on, issue build or nmake to build the subcomponent.
+
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ sources.
+
+Abstract:
+
+ This file specifies the target component being built and the list of
+ sources files needed to build that component. Also specifies optional
+ compiler switches and libraries that are unique for the component being
+ built.
+
+
+Author:
+
+ Steve Wood (stevewo) 12-Apr-1990
+
+NOTE: Commented description of this file is in \nt\bak\bin\sources.tpl
+
+!ENDIF
+
+
+#
+# The MAJORCOMP and MINORCOMP variables are defined
+# so that $(MAJORCOMP)$(MINORCOMP)filename can be used in
+# cross compiling to provide unique filenames in a flat namespace.
+#
+
+MAJORCOMP=xxxxx
+MINORCOMP=xxxxx
+
+#
+# The TARGETNAME variable is defined by the developer. It is the name of
+# the target (component) that is being built by this makefile. It
+# should NOT include any path or file extension information.
+#
+
+TARGETNAME=xxxxx
+
+
+#
+# The TARGETPATH and TARGETTYPE variables are defined by the developer.
+# The first specifies where the target is to be build. The second specifies
+# the type of target (either PROGRAM, DYNLINK, LIBRARY, UMAPPL_NOLIB or
+# BOOTPGM). UMAPPL_NOLIB is used when you're only building user-mode
+# apps and don't need to build a library.
+#
+
+TARGETPATH=..\obj
+
+# Pick one of the following and delete the others
+TARGETTYPE=PROGRAM
+TARGETTYPE=DYNLINK
+TARGETTYPE=LIBRARY
+TARGETTYPE=UMAPPL_NOLIB
+TARGETTYPE=BOOTPGM
+
+
+#
+# The TARGETLIBS specifies additional libraries to link with you target
+# image. Each library path specification should contain an asterisk (*)
+# where the machine specific subdirectory name should go.
+#
+
+TARGETLIBS=
+
+
+#
+# The INCLUDES variable specifies any include paths that are specific to
+# this source directory. Separate multiple directory paths with single
+# semicolons. Relative path specifications are okay.
+#
+
+INCLUDES=..\inc
+
+
+#
+# The SOURCES variable is defined by the developer. It is a list of all the
+# source files for this component. Each source file should be on a separate
+# line using the line continuation character. This will minimize merge
+# conflicts if two developers adding source files to the same component.
+#
+
+SOURCES=source1.c \
+ source2.c \
+ source3.c \
+ source4.c
+
+i386_SOURCES=i386\source1.asm
+
+i860_SOURCES=i860\source1.s
+
+MIPS_SOURCES=mips\source1.s
+
+PPC_SOURCES=ppc\source1.s
+
+
+#
+# Next specify options for the compiler.
+#
+
+C_DEFINES=
+# USE_CL860_LARGE_MODEL=
+
+
+#
+# Next specify a kernel mode test (valid only in NTOS tree)
+#
+
+NTTEST=
+
+#
+# Next specify one or more user mode test programs and their type
+# UMTEST is used for optional test programs. UMAPPL is used for
+# programs that always get built when the directory is built.
+#
+
+UMTYPE=nt
+UMTEST=foo*baz
+UMAPPL=foo*baz
+UMBASE=0x1000000
+UMLIBS=obj\*\foo.lib
+
+#
+# Defining either (or both) the variables NTTARGETFILE0 and/or NTTARGETFILES
+# will cause MAKEFILE.DEF to include .\makefile.inc immediately after it
+# specifies the top level targets (all, clean and loc) and their dependencies.
+# MAKEFILE.DEF also expands NTTARGETFILE0 as the first dependent for the
+# "all" target and NTTARGETFILES as the last dependent for the "all" target.
+# Useful for specifying additional targets and dependencies that don't fit the
+# general case covered by MAKEFILE.DEF
+#
+
+# NTTARGETFILE0=
+# NTTARGETFILES=
diff --git a/public/oak/bin/sysmgmt.ini b/public/oak/bin/sysmgmt.ini
new file mode 100644
index 000000000..1f466e99d
--- /dev/null
+++ b/public/oak/bin/sysmgmt.ini
@@ -0,0 +1,208 @@
+ .ado
+ = AlertDistributorObject
+
+ .pop
+ = PopupObject
+
+ .alr
+ = AlertReportObject
+
+ .alt
+ = AlertLog
+
+ AlertDistributorObject
+ = This is an Alert Distributor Object.
+ CLSID
+ = {3563A888-702D-101B-A4BD-00000B65C626}
+ shellex
+ PropertySheetHandlers
+ = AlertPage
+ AlertPage
+ = {5D6DD548-928D-101A-91FD-00DD01108F15}
+
+ PopupObject
+ = This is an Popup Object.
+ shellex
+ PropertySheetHandlers
+ = PopupOptions
+ PopupOptions
+ = {7DDDB960-608B-11CE-9A31-00AA00403F6D}
+
+ AlertReportObject
+ = This is an Alert Report Object.
+ shellex
+ PropertySheetHandlers
+ = ReportPage
+ ReportPage
+ = {BB115E20-EC4F-11CD-B872-00AA00403F6D}
+
+ AlertLog
+ = This is a Log Object.
+ DefaultIcon
+ = logui.exe, 0
+ shellex
+ ContextMenuHandlers
+ = OpenAndNew
+ OpenAndNew
+ = {CF216145-F2A4-11ce-BEF2-00AA00403F6D}
+ PropertySheetHandlers
+ = ConfigPage
+ ConfigPage
+ = {C8C316C0-C154-11CE-BEE6-00AA00403F6D}
+
+ CLSID
+ {3563A888-702D-101B-A4BD-00000B65C626}
+ = Alert Distributor Object
+ LocalServer32
+ = alertsys.exe
+ ActivateAtBits
+ = Y
+ DefaultIcon
+ = alertsys.dll, 0
+ ClassInfo
+ shellex
+ PropertySheetHandlers
+ = AlertPage
+ AlertPage
+ = {5D6DD548-928D-101A-91FD-00DD01108F15}
+
+ {43750e20-fa68-11cd-84b7-00aa004a56e1}
+ = NT Event Alert Report Class
+ InprocServer32
+ = alertsys.dll
+ ThreadingModel = Both
+
+ {B2D1A360-B75A-101A-91A3-00DD01108F15}
+ = System Alert Report Object
+ InprocServer32
+ = alertsys.dll
+ ThreadingModel = Both
+ shellex
+ PropertySheetHandlers
+ = ReportPage
+ ReportPage
+ = {BB115E20-EC4F-11CD-B872-00AA00403F6D}
+
+ {3563A8EC-702D-101B-A4BD-00000B65C626}
+ = Alert forwarding rules object
+ InprocServer32
+ = alertsys.dll
+ ThreadingModel = Both
+
+ {be7d6790-4daa-11ce-8460-00aa00443f09}
+ = WinPopup Alert Target EXE Server
+ LocalServer32
+ = winpopup.exe
+ ActivateAtBits
+ = Y
+ shellex
+ PropertySheetHandlers
+ = PopupOptions
+ PopupOptions
+ = {7DDDB960-608B-11CE-9A31-00AA00403F6D}
+
+ {350f0550-da54-11cd-ba30-02608c9f0de2}
+ = Alert DRT Target Server
+ LocalServer32
+ = alut.exe
+ ActivateAtBits
+ = Y
+
+ {5D6DD548-928D-101A-91FD-00DD01108F15}
+ = Alert Distributor Object shell extension handler for AlertPage
+ InProcServer32
+ = alertsys.dll
+ ThreadingModel = Both
+
+ {7DDDB960-608B-11CE-9A31-00AA00403F6D}
+ = Popup Object's shell extension handler for popup options.
+ InProcServer32
+ = alertsys.dll
+ ThreadingModel = Both
+
+ {BB115E20-EC4F-11CD-B872-00AA00403F6D}
+ = Alert Report Object shell extension handler for report page.
+ InProcServer32
+ = alertsys.dll
+ ThreadingModel = Both
+
+ {589b61C0-54E6-11CE-94DD-00AA0051E40F}
+ = Sysmgmt_PSFactory
+ InprocServer32
+ = sysmgmt.dll
+ ThreadingModel = Free
+
+ {be7d6790-4daa-11ce-8460-00aa00443f09}
+ = Icon for popup
+ DefaultIcon
+ = alertsys.dll, 3
+
+ {C7B3A6E1-A021-11ce-B329-00AA00403F6D}
+ = Alert Log
+ LocalServer32
+ = logobj.exe
+ DefaultIcon
+ = logui.exe, 0
+ shellex
+ ContextMenuHandlers
+ = OpenAndNew
+ OpenAndNew
+ = {CF216145-F2A4-11ce-BEF2-00AA00403F6D}
+ PropertySheetHandlers
+ = ConfigPage
+ ConfigPage
+ = {C8C316C0-C154-11CE-BEE6-00AA00403F6D}
+
+ {C8C316C0-C154-11CE-BEE6-00AA00403F6D}
+ = Shell extension for Log Config page
+ InprocServer32
+ = alertsys.dll
+ ThreadingModel = Free
+
+ {CF216145-F2A4-11ce-BEF2-00AA00403F6D}
+ = Context menu handler for Alert Log Config page
+ InprocServer32
+ = alertsys.dll
+ ThreadingModel = Free
+
+ {589B61C0-54E6-11CE-94DD-00AA0051E40F}
+ = Sysmgmt_PSFactory
+ InprocServer32
+ = sysmgmt.dll
+ ThreadingModel = Free
+
+ Interface
+ {589b61C0-54E6-11CE-94DD-00AA0051E40F}
+ = IAlertTarget
+ ProxyStubClsid32
+ = {589b61C0-54E6-11CE-94DD-00AA0051E40F}
+
+ {589B61C0-54E6-11CE-94DD-00AA0051E40F}
+ = IAlertTarget
+ ProxyStubClsid32
+ = {589B61C0-54E6-11CE-94DD-00AA0051E40F}
+
+ {10C29410-DBFE-11CE-AB4A-00AA0051E40F}
+ = IAlertRegistrationContainer
+ ProxyStubClsid32
+ = {589B61C0-54E6-11CE-94DD-00AA0051E40F}
+
+ {10B1C500-DBFE-11CE-AB4A-00AA0051E40F}
+ = IAlertRegistration
+ ProxyStubClsid32
+ = {589B61C0-54E6-11CE-94DD-00AA0051E40F}
+
+ {10FB1E00-DBFE-11CE-AB4A-00AA0051E40F}
+ = IAlertRuleContainer
+ ProxyStubClsid32
+ = {589B61C0-54E6-11CE-94DD-00AA0051E40F}
+
+ {10D7F8B0-DBFE-11CE-AB4A-00AA0051E40F}
+ = IEnumAlertRegistration
+ ProxyStubClsid32
+ = {589B61C0-54E6-11CE-94DD-00AA0051E40F}
+
+ {110BED10-DBFE-11CE-AB4A-00AA0051E40F}
+ = IEnumAlertRule
+ ProxyStubClsid32
+ = {589B61C0-54E6-11CE-94DD-00AA0051E40F}
diff --git a/public/oak/bin/system b/public/oak/bin/system
new file mode 100644
index 000000000..ba084750d
--- /dev/null
+++ b/public/oak/bin/system
Binary files differ
diff --git a/public/oak/bin/system.ini b/public/oak/bin/system.ini
new file mode 100644
index 000000000..f3db0ec98
--- /dev/null
+++ b/public/oak/bin/system.ini
@@ -0,0 +1,3667 @@
+// Copyright (c) 1995 Microsoft Corporation
+//
+// This file defines the default contents of the SYSTEM hive in the Windows NT
+// registry. It is run through the C Preprocessor, so may contain conditional
+// defintions and symbolic names.
+//
+
+//
+// Defined Symbolic names
+//
+// Boolean Types
+//
+//
+#define True REG_DWORD 0x00000001
+#define False REG_DWORD 0x00000000
+
+//
+// predefined ACEs for creating ACLs
+// R == Read (values & subkeys)
+// W == Write (values & subkeys, create keys)
+// D == Delete keys
+// Full == All access
+//
+#define AdminFull 1
+#define AdminR 2
+#define AdminRW 3
+#define AdminRWD 4
+#define CreatorFull 5
+#define CreatorRW 6
+#define WorldFull 7
+#define WorldR 8
+#define WorldRW 9
+#define WorldRWD 10
+#define PowerFull 11
+#define PowerRW 12
+#define PowerRWD 13
+#define SystemOpFull 14
+#define SystemOpRW 15
+#define SystemOpRWD 16
+#define SystemFull 17
+#define SystemRW 18
+#define SystemR 19
+#define AdminRWX 20
+#define InteractiveFull 21
+#define InteractiveR 22
+#define InteractiveRW 23
+#define InteractiveRWD 24
+#define UserRW 25
+
+
+// CurrentControlSet\Control\Services\<service name>\Type value definitions:
+//
+
+#define SC_Type_KernelDriver REG_DWORD 0x00000001
+#define SC_Type_FileSystem REG_DWORD 0x00000002
+#define SC_Type_Adapter REG_DWORD 0x00000004
+#define SC_Type_Recognizer REG_DWORD 0x00000008
+#define SC_Type_Win32ServiceOwnProcess REG_DWORD 0x00000010
+#define SC_Type_Win32ServiceShareProcess REG_DWORD 0x00000020
+
+//
+// CurrentControlSet\Control\Services\<service name>\Start value definitions:
+//
+
+#define SC_Start_LoadAtBoot REG_DWORD 0x00000000
+#define SC_Start_LoadAtSystemInit REG_DWORD 0x00000001
+#define SC_Start_AutoLoad REG_DWORD 0x00000002
+#define SC_Start_DemandLoad REG_DWORD 0x00000003
+#define SC_Start_DisableLoad REG_DWORD 0x00000004
+
+//
+// CurrentControlSet\Services\<service name>\ErrorControl value definitions:
+//
+
+#define SC_Error_Ignore REG_DWORD 0x00000000
+#define SC_Error_Normal REG_DWORD 0x00000001
+#define SC_Error_Severe REG_DWORD 0x00000002
+#define SC_Error_Critical REG_DWORD 0x00000003
+
+//
+// Setup\SetupType value definitions:
+//
+
+#define SETUPTYPE_RETAIL REG_DWORD 0x00000001
+
+
+SYSTEM [WorldR AdminRWD SystemFull]
+ Select [WorldR AdminFull SystemFull CreatorFull]
+ Current = REG_DWORD 0x00000000
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
+
+ //
+ // All applications access the current control set using the CurrentControlSet
+ // key name, which is a symbolic link that points to the current key ControlSet001
+ // or ControlSetnnn where nnn is the Current, Default or LastKnownGood value above.
+ //
+#if defined(DOC_ONLY)
+ CurrentControlSet = ControlSet001
+#endif
+
+ ControlSet001 [WorldR AdminFull SystemFull CreatorFull]
+ Control [SystemOpRWD WorldR AdminFull SystemFull CreatorFull]
+ WaitToKillServiceTimeout = REG_SZ 20000
+ BootVerificationProgram
+ // ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\bootok.exe
+ Update
+ UpdateMode = REG_DWORD 1
+ Class
+ {4D36E968-E325-11CE-BFC1-08002BE10318}
+ = REG_SZ Display adapters
+ Class = REG_SZ Display
+ Icon = REG_SZ -1
+ Installer32 = REG_SZ Desk.Cpl,DisplayClassInstaller
+ {4D36E96B-E325-11CE-BFC1-08002BE10318}
+ = REG_SZ Keyboard
+ Class = REG_SZ Keyboard
+ Icon = REG_SZ -3
+ Installer32 = REG_SZ SysSetup.Dll,KeyboardClassInstaller
+ {4D36E96C-E325-11CE-BFC1-08002BE10318}
+ = REG_SZ Sound, video and game controllers
+ Class = REG_SZ MEDIA
+ Icon = REG_SZ 3004
+ Installer32 = REG_SZ MmSys.Cpl,MediaClassInstaller
+ {4D36E96D-E325-11CE-BFC1-08002BE10318}
+ = REG_SZ Modem
+ Class = REG_SZ Modem
+ Default Service = REG_SZ Modem
+ Icon = REG_SZ 0
+ Installer32 = REG_SZ Modem.Cpl,ClassInstall32
+ {4D36E96F-E325-11CE-BFC1-08002BE10318}
+ = REG_SZ Mouse
+ Class = REG_SZ Mouse
+ Icon = REG_SZ -2
+ Installer32 = REG_SZ SysSetup.Dll,MouseClassInstaller
+ {4D36E972-E325-11CE-BFC1-08002BE10318}
+ = REG_SZ Network adapters
+ Class = REG_SZ Net
+ Icon = REG_SZ -5
+ {4D36E978-E325-11CE-BFC1-08002BE10318}
+ = REG_SZ Ports (COM & LPT)
+ Class = REG_SZ Ports
+ Installer32 = REG_SZ Ports.Cpl,PortsClassInstaller
+ {4D36E979-E325-11CE-BFC1-08002BE10318}
+ = REG_SZ Printer
+ Class = REG_SZ Printer
+ Icon = REG_SZ -4
+ NoDisplayClass = REG_SZ 1
+ {4D36E97B-E325-11CE-BFC1-08002BE10318}
+ = REG_SZ SCSI controllers
+ Class = REG_SZ SCSIAdapter
+ Icon = REG_SZ -10
+ Installer32 = REG_SZ SysSetup.Dll,ScsiClassInstaller
+ LegacyInfOption = REG_SZ SCSI
+ {4D36E97E-E325-11CE-BFC1-08002BE10318}
+ = REG_SZ Other devices
+ Class = REG_SZ Unknown
+ Icon = REG_SZ -18
+ {6D807884-7D21-11CF-801C-08002BE10318}
+ = REG_SZ Tape drives
+ Class = REG_SZ TapeDrive
+ Icon = REG_SZ 1610
+ Installer32 = REG_SZ SysSetup.Dll,TapeClassInstaller
+ LegacyInfOption = REG_SZ TAPE
+ IDConfigDB
+ CurrentConfig = REG_DWORD 0x00000001
+ PropertyProviders = REG_MULTI_SZ "profext.dll"
+ UserWaitInterval = REG_DWORD 0x0000001e
+ Hardware Profiles
+ 0001
+ FriendlyName = REG_SZ Original Configuration
+ PreferenceOrder = REG_DWORD 0x00000000
+ CrashControl
+ LogEvent = REG_DWORD 0x00000000
+ SendAlert = REG_DWORD 0x00000000
+ CrashDumpEnabled = REG_DWORD 0x00000000
+ AutoReboot = REG_DWORD 0x00000000
+ DumpFile = REG_EXPAND_SZ %SystemRoot%\MEMORY.DMP
+ Overwrite = REG_DWORD 0x00000001
+ FileSystem
+ Win31FileSystem = REG_DWORD 0x00000000
+ NtfsDisable8dot3NameCreation = REG_DWORD 0x00000000
+ Win95TruncatedExtensions = REG_DWORD 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "System Bus Extender" \
+ "SCSI miniport" \
+ "port" \
+ "Primary disk" \
+ "SCSI class" \
+ "SCSI CDROM class" \
+ "filter" \
+ "boot file system" \
+ "Base" \
+ "Pointer Port" \
+ "Keyboard Port" \
+ "Pointer Class" \
+ "Keyboard Class" \
+ "Video Init" \
+ "Video" \
+ "Video Save" \
+ "file system" \
+ "Event log" \
+ "Streams Drivers" \
+ "PNP_TDI" \
+ "NDIS" \
+ "TDI" \
+ "NetBIOSGroup" \
+ "SpoolerGroup" \
+ "NetDDEGroup" \
+ "Parallel arbitrator" \
+ "extended base" \
+ "RemoteValidation" \
+ "PCI Configuration"
+
+ GroupOrderList
+ //
+ // PLEASE NOTE: The fields for the values are defined below:
+ //
+ // GroupOrder = REG_BINARY NumOfBytes \
+ // NumOfTags \
+ // Tag1 \
+ // Tag2 \
+ // ...
+ //
+ // The field NumOfBytes = (NumOfTags + 1) * 4. This field
+ // has been wrong on several occasions.
+ //
+ System Bus Extender = REG_BINARY 0x00000008 \
+ 0x00000001 0x00000001
+
+ //
+ // PLEASE NOTE: The fields for the values are defined below:
+ //
+ // GroupOrder = REG_BINARY NumOfBytes \
+ // NumOfTags \
+ // Tag1 \
+ // Tag2 \
+ // ...
+ //
+ // The field NumOfBytes = (NumOfTags + 1) * 4. This field
+ // has been wrong on several occasions.
+ //
+ SCSI miniport = REG_BINARY 156 \
+ 0x00000026 \
+ 0x00000100 \
+ 0x00000101 \
+ 0x00000019 \
+ 0x00000001 \
+ 0x00000002 \
+ 0x00000003 \
+ 0x00000004 \
+ 0x00000005 \
+ 0x00000006 \
+ 0x00000007 \
+ 0x00000008 \
+ 0x00000009 \
+ 0x0000000A \
+ 0x0000000B \
+ 0x0000000C \
+ 0x0000000D \
+ 0x0000000E \
+ 0x0000000F \
+ 0x00000010 \
+ 0x00000011 \
+ 0x00000012 \
+ 0x00000013 \
+ 0x00000014 \
+ 0x00000015 \
+ 0x00000016 \
+ 0x00000017 \
+ 0x0000001a \
+ 0x00000018 \
+ 0x0000001b \
+ 0x0000001c \
+ 0x0000001d \
+ 0x0000001e \
+ 0x0000001f \
+ 0x00000020 \
+ 0x00000023 \
+ 0x00000024 \
+ 0x00000025 \
+ 0x00000026
+
+ Primary Disk = REG_BINARY 20 \
+ 0x00000004 \
+ 0x00000001 \
+ 0x00000002 \
+ 0x00000003 \
+ 0x00000004
+
+ Base = REG_BINARY 60 \
+ 0x0000000e \
+ 0x0000000e \
+ 0x00000001 \
+ 0x00000002 \
+ 0x00000003 \
+ 0x00000004 \
+ 0x00000005 \
+ 0x00000006 \
+ 0x00000007 \
+ 0x00000008 \
+ 0x00000009 \
+ 0x0000000A \
+ 0x0000000B \
+ 0x0000000c \
+ 0x0000000d
+
+ Keyboard Port = REG_BINARY 8 \
+ 0x00000001 \
+ 0x00000001
+
+ Pointer Port = REG_BINARY 16 \
+ 0x00000003 \
+ 0x00000001 \
+ 0x00000002 \
+ 0x00000003
+
+ Keyboard Class = REG_BINARY 8 \
+ 0x00000001 \
+ 0x00000001
+
+ Pointer Class = REG_BINARY 8 \
+ 0x00000001 \
+ 0x00000001
+
+ Video Init = REG_BINARY 8 \
+ 0x00000001 \
+ 0x00000001
+
+ Video = REG_BINARY 4 \
+ 0x00000000
+
+ Video Save = REG_BINARY 8 \
+ 0x00000001 \
+ 0x00000001
+
+ Ndis = REG_BINARY 40 \
+ 0x00000009 \
+ 0x00000001 \
+ 0x00000002 \
+ 0x00000003 \
+ 0x00000004 \
+ 0x00000005 \
+ 0x00000006 \
+ 0x00000007 \
+ 0x00000008 \
+ 0x00000009
+
+ Filter = REG_BINARY 28 \
+ 0x00000006 \
+ 0x00000001 \
+ 0x00000002 \
+ 0x00000003 \
+ 0x00000004 \
+ 0x00000005 \
+ 0x00000006
+
+ Parallel arbitrator = REG_BINARY 8 \
+ 0x00000001 \
+ 0x00000001
+
+ Extended base = REG_BINARY 20 \
+ 0x00000004 \
+ 0x00000001 \
+ 0x00000002 \
+ 0x00000003 \
+ 0x00000004
+
+ SpoolerGroup = REG_BINARY 12 \
+ 0x00000002 \
+ 0x00000001 \
+ 0x00000002
+
+ SCSI Class = REG_BINARY 16 \
+ 0x00000003 \
+ 0x00000001 \
+ 0x00000002 \
+ 0x00000003
+
+ SCSI CDROM Class = REG_BINARY 12 \
+ 0x00000002 \
+ 0x00000001 \
+ 0x00000002
+
+ SecurePipeServers
+ winreg [AdminFull]
+ Description = REG_SZ "Registry Server"
+ AllowedPaths
+ Machine = REG_MULTI_SZ "System\CurrentControlSet\Control\ProductOptions" \
+ "System\CurrentControlSet\Control\Print\Printers" \
+ "System\CurrentControlSet\Services\Eventlog" \
+ "Software\Microsoft\Windows NT\CurrentVersion"
+
+
+ SecurityProviders
+ SecurityProviders = REG_SZ "schannel.dll"
+
+ Session Manager
+ ObjectDirectories = REG_MULTI_SZ "\Windows" "\RPC Control"
+ GlobalFlag = REG_DWORD 0
+ ProtectionMode = REG_DWORD 0
+#if defined(SYSTEM_BOOT_EXECUTE)
+ BootExecute = REG_MULTI_SZ SYSTEM_BOOT_EXECUTE
+#else
+#ifdef _CAIRO_
+ BootExecute = REG_MULTI_SZ "autocheck autochk *" \
+ "dfsinit"
+#else // _CAIRO_
+ BootExecute = REG_MULTI_SZ "autocheck autochk *"
+#endif // _CAIRO_
+#endif // defined(SYSTEM_BOOT_EXECUTE)
+
+ EnableMCE = REG_DWORD 0
+ EnableMCA = REG_DWORD 1
+
+ HeapSegmentReserve = REG_DWORD 0
+ HeapSegmentCommit = REG_DWORD 0
+ HeapDeCommitTotalFreeThreshold = REG_DWORD 0
+ HeapDeCommitFreeBlockThreshold = REG_DWORD 0
+
+//
+// Retail builds take 1 month to timeout
+//
+ CriticalSectionTimeout = REG_DWORD 2592000
+ ResourceTimeoutCount = REG_DWORD 648000
+
+// keep preprocessor happy
+
+//
+// The FileRenameOperations is a container key. Under it maybe written
+// REG_SZ value keys of the following format:
+//
+// OldNtPathName = REG_SZ NewNtPathName
+//
+// Session Manager will process these rename operations after running auto
+// check but prior to creating any paging files. If the NtNtPathName is
+// the null string then the OldNtPathName is deleted. Otherwise the
+// OldNtPathName is renamed to be the NetNtPathName, replacing any existing
+// file by that name. Setup Applications can use this capability to
+// install new versions of .DLL files that are currently open on a running
+// system and get the new copy install when the system is rebooted.
+//
+ FileRenameOperations
+
+ Executive [WorldR AdminFull SystemOpRW PowerRW SystemFull CreatorFull]
+ AdditionalCriticalWorkerThreads = REG_DWORD 0x00000000
+ AdditionalDelayedWorkerThreads = REG_DWORD 0x00000000
+
+ Memory Management [WorldR AdminFull SystemFull]
+ PagedPoolSize = REG_DWORD 0x00000000
+ NonPagedPoolSize = REG_DWORD 0x00000000
+ PagedPoolQuota = REG_DWORD 0x00000000
+ NonPagedPoolQuota = REG_DWORD 0x00000000
+ IoPageLockLimit = REG_DWORD 0x00000000
+ LargeSystemCache = REG_DWORD 0x00000000
+ PagingFiles = REG_MULTI_SZ "?:\pagefile.sys 15 60"
+ SystemPages = REG_DWORD 0x00000000
+ SecondLevelDataCache = REG_DWORD 0x00000000
+ DisablePagingExecutive = REG_DWORD 0x00000000
+ ClearPageFileAtShutdown = REG_DWORD 0x00000000
+
+ DOS Devices
+ PRN = \DosDevices\LPT1
+ AUX = \DosDevices\COM1
+ NUL = \Device\Null
+ PIPE = \Device\NamedPipe
+ MAILSLOT = \Device\MailSlot
+ UNC = \Device\Mup
+
+ Environment
+ ComSpec = REG_EXPAND_SZ %SystemRoot%\system32\cmd.exe
+ Os2LibPath = REG_EXPAND_SZ %SystemRoot%\system32\os2\dll;
+ Path = REG_EXPAND_SZ %SystemRoot%\system32
+ windir = REG_EXPAND_SZ %SystemRoot%
+
+ ExcludeFromKnownDlls = REG_MULTI_SZ ""
+
+ KnownDLLs
+ DllDirectory = REG_EXPAND_SZ %SystemRoot%\system32
+ kernel32 = kernel32.dll
+ gdi32 = gdi32.dll
+ user32 = user32.dll
+ rpcrt4 = rpcrt4.dll
+ advapi32 = advapi32.dll
+ comdlg32 = comdlg32.dll
+ crtdll = crtdll.dll
+ shell32 = shell32.dll
+ lz32 = lz32.dll
+ olecli32 = olecli32.dll
+ olesvr32 = olesvr32.dll
+ version = version.dll
+ ole32 = ole32.dll
+ oleaut32 = oleaut32.dll
+ olecnv32 = olecnv32.dll
+ olethk32 = olethk32.dll
+
+ SubSystems
+ Required = REG_MULTI_SZ "Debug" "Windows"
+ Optional = REG_MULTI_SZ "Os2" "Posix"
+ Debug = REG_EXPAND_SZ
+ Windows = REG_EXPAND_SZ %SystemRoot%\system32\csrss.exe \
+ ObjectDirectory=\Windows \
+ SharedSection=1024,3072 \
+ Windows=On \
+ SubSystemType=Windows \
+ ServerDll=basesrv,1 \
+ ServerDll=winsrv:UserServerDllInitialization,3 \
+ ServerDll=winsrv:ConServerDllInitialization,2 \
+ ProfileControl=Off \
+ MaxRequestThreads=16
+ Kmode = REG_EXPAND_SZ %SystemRoot%\system32\win32k.sys
+ Os2 = REG_EXPAND_SZ %SystemRoot%\system32\os2ss.exe
+ Posix = REG_EXPAND_SZ %SystemRoot%\system32\psxss.exe
+
+ AppPatches
+ CWD
+ ff060102423da0000407108e0500
+ 1
+ Add1 = REG_BINARY 0x00000015 \
+ 0xa0401502 \
+ 0x23b81e10 \
+ 0x8bd88e00 \
+ 0x8107140e \
+ 0x1f0200e1 \
+ 0x000000c3
+
+ Change1 = REG_BINARY 0x0000001d \
+ 0x48501d01 \
+ 0xec8b550c \
+ 0x9c0000b8 \
+ 0x00e18159 \
+ 0xec8b5502 \
+ 0xe80000b8 \
+ 0x909057e7 \
+ 0x00000090
+
+ MYST
+ ff060102423bab000407102e0600
+ 1
+ Add1 = REG_BINARY 0x00000015 \
+ 0xab401502 \
+ 0x23b81e10 \
+ 0x8bd88e00 \
+ 0x8107140e \
+ 0x1f0200e1 \
+ 0x000000c3
+
+ Change1 = REG_BINARY 0x0000001d \
+ 0x49501d01 \
+ 0xec8b550c \
+ 0x9c0000b8 \
+ 0x00e18159 \
+ 0xec8b5502 \
+ 0xe80000b8 \
+ 0x909061e7 \
+ 0x00000090
+ PALED40
+ ff060102420032000407401b0100
+ 1
+ Change1 = REG_BINARY 0x00000007 \
+ 0x21b70701 \
+ 0x000cd801
+ USA
+ ff06010242059b00040710780600
+ 1
+ Change1 = REG_BINARY 0x0000001d \
+ 0x44951d01 \
+ 0xec8b550c \
+ 0x9c0000b8 \
+ 0x00e18159 \
+ 0xec8b5502 \
+ 0xe80000b8 \
+ 0x90905667 \
+ 0x00000090
+
+ Change2 = REG_BINARY 0x00000025 \
+ 0x9b052501 \
+ 0x00000010 \
+ 0x00000000 \
+ 0x00000000 \
+ 0x00000000 \
+ 0x23b81e00 \
+ 0x8bd88e00 \
+ 0x8107140e \
+ 0x1f0200e1 \
+ 0x000000c3
+
+ VB
+ ff060102ec353f00040780c81300
+ 12
+ Change1 = REG_BINARY 0x00000011 \
+ 0x031b1101 \
+ 0xba3e8106 \
+ 0x81033431 \
+ 0x0931ba3e \
+ 0x00000003
+ VB40016
+ ff0702021401ee3e000407d0460e00
+ 16
+ Change1 = REG_BINARY 0x00000011 \
+ 0x2a6d1101 \
+ 0x6e3e8106 \
+ 0x81033436 \
+ 0x09366e3e \
+ 0x00000003
+ ProductOptions [WorldR SystemFull AdminFull CreatorFull]
+ ProductType = WinNt
+
+// Keep preprocessor happy
+
+ CurrentUser = USERNAME
+
+ TimeZoneInformation [WorldR AdminFull SystemOpRW PowerRW SystemFull CreatorFull]
+ //
+ // System uses this information to convert between the
+ // local time and Universal Time (UTC). Bias values
+ // represent minutes. Dates must be in mm/dd/yy hh:mm:ss
+ // format.
+ //
+
+ Bias = REG_DWORD 0
+
+ ComputerName
+ ComputerName
+ ComputerName = MACHINENAME
+
+#if defined(DOC_ONLY)
+ ActiveComputerName
+ ComputerName = MACHINENAME
+
+#endif // defined(DOC_ONLY)
+
+ PriorityControl [WorldRW AdminFull SystemFull CreatorFull]
+ Win32PrioritySeparation = REG_DWORD 2
+
+ Windows [WorldR AdminFull SystemFull SystemOpRW]
+
+ Directory = REG_EXPAND_SZ %SystemRoot%
+ SystemDirectory = REG_EXPAND_SZ %SystemRoot%\system32
+ ErrorMode = REG_DWORD 0
+ NoInteractiveServices = REG_DWORD 0
+ CSDVersion = REG_DWORD 0x100
+
+ WOW
+ //
+ // The windows subsystem uses the following information for starting
+ // dos applications.
+ //
+
+ // this is the base commandline that will be used to create a VDM
+ //
+ // NOTES:
+ // To change the dos logging level, add the -l# switch to this
+ // command line.
+ //
+ // To get debug output add -d switch
+ //
+
+ cmdline = REG_EXPAND_SZ %SystemRoot%\system32\ntvdm.exe
+
+ // this specifies the maximum size of a VDM in MB
+
+ size = 0
+
+ //
+ // The windows subsystem uses the following information for starting 16
+ // bit windows applications
+ //
+
+ //
+ // NOTES:
+ // To change the WOW logging level, add the -l# switch to this
+ // command line
+ //
+ // To get debug output add -d switch
+ //
+ // The -a switch (specifies win16 kernel) has to be last.
+ //
+
+ wowcmdline = REG_EXPAND_SZ %SystemRoot%\system32\ntvdm.exe -a %SystemRoot%\system32\krnl386
+
+ wowsize = 64
+
+ //
+ // If the following is yes then each 16 bit process will start in a new
+ // VDM and the VDM will exit when the 16-bit process exits (i.e. no more
+ // NTVDM.EXE processes laying around waiting to be reused.
+ //
+
+ DefaultSeparateVDM=no
+
+ // Default Timeout For LPT Port Flushing
+
+ LPT_timeout = 15
+
+ KnownDLLs = REG_SZ comm.drv \
+ commdlg.dll \
+ ctl3dv2.dll \
+ ddeml.dll \
+ keyboard.drv \
+ lanman.drv \
+ mapi.dll \
+ mmsystem.dll \
+ mouse.drv \
+ netapi.dll \
+ olecli.dll \
+ olesvr.dll \
+ pmspl.dll \
+ shell.dll \
+ sound.drv \
+ system.drv \
+ toolhelp.dll \
+ vga.drv \
+ wfwnet.drv \
+ win87em.dll \
+ winoldap.mod \
+ winsock.dll \
+ winspool.exe \
+ wowdeb.exe \
+ timer.drv \
+ rasapi16.dll \
+ compobj.dll \
+ storage.dll \
+ ole2.dll \
+ ole2disp.dll \
+ ole2nls.dll \
+ typelib.dll \
+ msvideo.dll \
+ avifile.dll \
+ msacm.dll \
+ mciavi.drv \
+ mciseq.drv \
+ mciwave.drv \
+ progman.exe \
+ avicap.dll
+
+ VirtualDeviceDrivers
+ //
+ // List of Virtual Device Drivers to be loaded by the
+ // MS-DOS subsystem during DOS intialization
+ //
+
+ VDD = REG_MULTI_SZ ""
+
+
+ Lsa [WorldR AdminFull SystemFull CreatorFull]
+ //
+ // List of authentication package DLLs to load
+ // Standard Microsoft package is msv1_0.
+ // Enabling msv1_0 will causes logon to be enabled.
+ //
+
+ Authentication Packages = REG_MULTI_SZ "msv1_0"
+ Bounds = REG_BINARY 8 0x00003000 0x00002000
+ Notification Packages = REG_MULTI_SZ "FPNWCLNT"
+#ifdef _CAIRO_
+ Primary Package = REG_SZ kerberos
+ Security Packages = REG_MULTI_SZ "ntlm"
+ Policy
+ PolAdtEv = REG_BINARY 0x24 \
+ 0012ff00 00000000 00000000 00000000 00000000 00000000 00000000 00000000 \
+ 00000007
+
+ PolAdtFl = REG_BINARY 0x00000002 \
+ 0x60120000
+
+ PolAdtLg = REG_BINARY 0x28 \
+ 00000000 00002000 00823543 00000000 00000000 00132c20 00046656 00000000 \
+ 00132c20 00132c20
+
+ PolAcDmN = REG_BINARY 0x0000000e \
+ 0x00630041 0x006f0063 0x006e0075 0x00000074
+
+ PolAcDmS = REG_BINARY 0x00000018 \
+ 0x00000401 0x05000000 0x0772a750 0x101a45a2 0xdd00ce92 0x9c441001
+
+ PolPrDmN = REG_BINARY 0x0000000e \
+ 0x00630041 0x006f0063 0x006e0075 0x00000074
+
+ PolPrDmS = REG_BINARY 0x00000018 \
+ 0x00000401 0x05000000 0x0772a750 0x101a45a2 0xdd00ce92 0x9c441001
+
+ Secrets
+
+ Domains
+#endif // _CAIRO_
+ MSV1_0
+ Auth1 = REG_SZ FPNWCLNT
+
+
+ GraphicsDrivers [WorldR AdminFull SystemFull]
+ DCI
+ Timeout = REG_DWORD 7
+
+ DetectDisplay
+ Nls
+ CodePage
+
+ //
+ // For retail setup, text setup will automatically configure
+ // the ACP, OEMCP, MACCP and OEMHAL according to values in
+ // txtsetup.sif. The list below is merely the list of supported
+ // codepages, and is used in nls enumeration routines.
+ //
+ // For Win95 compatibility we always install all SBCS ANSI CPs
+ // so the new GDI TextOut functions work correctly.
+ //
+
+ //
+ // ANSI codepages.
+ //
+ 1250 = c_1250.nls
+ 1251 = c_1251.nls
+ 1252 = c_1252.nls
+ 1253 = c_1253.nls
+ 1254 = c_1254.nls
+ 1255 = c_1255.nls
+ 1256 = c_1256.nls
+ 1257 = c_1257.nls
+ 1258 =
+
+ //
+ // OEM codepages.
+ //
+ 437 =
+ 737 =
+ 775 =
+ 850 =
+ 852 =
+ 855 =
+ 857 =
+ 860 =
+ 861 =
+ 863 =
+ 865 =
+ 866 =
+ 869 =
+
+ //
+ // MAC codepages.
+ //
+ 10000 =
+ 10006 =
+ 10007 =
+ 10029 =
+ 10079 =
+ 10081 =
+
+ //
+ // EBCDIC codepages.
+ //
+ 37 =
+ 500 =
+ 875 =
+ 1026 =
+
+ //
+ // Teletex code page (needed for Exchange Server)
+ //
+ 20261 = c_20261.nls
+
+ Language
+
+#if 0
+ //
+ // Note: retail setup will automatically set Default
+ // according to values in txtsetup.sif.
+ // This value must not be in the retail hive because
+ // it would screw up the upgrade proces.
+ //
+ Default = 0409
+
+ //
+ // Far East languages -- not in western retail products.
+ //
+ 0404 = l_intl.nls
+ 0804 = l_intl.nls
+ 0c04 = l_intl.nls
+ 1004 = l_intl.nls
+ 0411 = l_intl.nls
+ 0412 = l_intl.nls
+#endif
+
+ 0409 = l_intl.nls
+ 0809 = l_intl.nls
+ 0c09 = l_intl.nls
+ 1009 = l_intl.nls
+ 1409 = l_intl.nls
+ 1809 = l_intl.nls
+ 1c09 = l_intl.nls
+ 2009 = l_intl.nls
+ 2409 = l_intl.nls
+ 2809 = l_intl.nls
+ 2c09 = l_intl.nls
+ 0402 = l_intl.nls
+ 0405 = l_intl.nls
+ 0406 = l_intl.nls
+ 0407 = l_intl.nls
+ 0807 = l_intl.nls
+ 0c07 = l_intl.nls
+ 1007 = l_intl.nls
+ 1407 = l_intl.nls
+ 0408 = l_intl.nls
+ 040a = l_intl.nls
+ 080a = l_intl.nls
+ 0c0a = l_intl.nls
+ 100a = l_intl.nls
+ 140a = l_intl.nls
+ 180a = l_intl.nls
+ 1c0a = l_intl.nls
+ 200a = l_intl.nls
+ 240a = l_intl.nls
+ 280a = l_intl.nls
+ 2c0a = l_intl.nls
+ 300a = l_intl.nls
+ 340a = l_intl.nls
+ 380a = l_intl.nls
+ 3c0a = l_intl.nls
+ 400a = l_intl.nls
+ 440a = l_intl.nls
+ 480a = l_intl.nls
+ 4c0a = l_intl.nls
+ 500a = l_intl.nls
+ 040b = l_intl.nls
+ 040c = l_intl.nls
+ 080c = l_intl.nls
+ 0c0c = l_intl.nls
+ 100c = l_intl.nls
+ 140c = l_intl.nls
+ 040e = l_intl.nls
+ 040f = l_intl.nls
+ 0410 = l_intl.nls
+ 0810 = l_intl.nls
+ 0413 = l_intl.nls
+ 0813 = l_intl.nls
+ 0414 = l_intl.nls
+ 0814 = l_intl.nls
+ 0415 = l_intl.nls
+ 0416 = l_intl.nls
+ 0816 = l_intl.nls
+ 0418 = l_intl.nls
+ 0419 = l_intl.nls
+ 041a = l_intl.nls
+ 081a = l_intl.nls
+ 0c1a = l_intl.nls
+ 041b = l_intl.nls
+ 041d = l_intl.nls
+ 081d = l_intl.nls
+ 041f = l_intl.nls
+ 0424 = l_intl.nls
+ 0436 = l_intl.nls
+ 041c = l_intl.nls
+ 042d = l_intl.nls
+ 0423 = l_intl.nls
+ 0403 = l_intl.nls
+ 0425 = l_intl.nls
+ 0438 = l_intl.nls
+ 0421 = l_intl.nls
+ 0426 = l_intl.nls
+ 0427 = l_intl.nls
+ 0422 = l_intl.nls
+
+
+ Keyboard Layouts
+ //
+ // IMPORTANT NOTE: If you add a layout it must be added
+ // in txtsetup.sif also. Talk to the setup guys.
+ //
+ 0000041C
+ Layout Text = Albanian
+ Layout File = KBDAL.DLL
+ 00000423
+ Layout Text = Belarusian
+ Layout File = KBDBLR.DLL
+ 00000813
+ Layout Text = Belgian Dutch
+ Layout File = KBDBE.DLL
+ 0000080C
+ Layout Text = Belgian French
+ Layout File = KBDBE.DLL
+ 00000416
+ Layout Text = Brazilian (ABNT)
+ Layout File = KBDBR.DLL
+ 00010402
+ Layout Text = Bulgarian (Latin)
+ Layout File = KBDUS.DLL
+ Layout Id = REG_SZ 0004
+ 00000402
+ Layout Text = Bulgarian
+ Layout File = KBDBU.DLL
+ 00001009
+ Layout Text = Canadian English (Multilingual)
+ Layout File = KBDCA.DLL
+ 00000C0C
+ Layout Text = Canadian French
+ Layout File = KBDFC.DLL
+ 00010C0C
+ Layout Text = Canadian French (Multilingual)
+ Layout File = KBDCA.DLL
+ Layout Id = REG_SZ 0085
+ 0000041a
+ Layout Text = Croatian
+ Layout File = KBDCR.DLL
+ 00000405
+ Layout Text = Czech
+ Layout File = KBDCZ.DLL
+ 00010405
+ Layout Text = Czech (QWERTY)
+ Layout File = KBDCZ1.DLL
+ Layout Id = REG_SZ 0005
+ 00000406
+ Layout Text = Danish
+ Layout File = KBDDA.DLL
+ 00000413
+ Layout Text = Dutch
+ Layout File = KBDNE.DLL
+ 00000425
+ Layout Text = Estonian
+ Layout File = KBDEST.DLL
+ 0000040B
+ Layout Text = Finnish
+ Layout File = KBDFI.DLL
+ 0000040C
+ Layout Text = French
+ Layout File = KBDFR.DLL
+ 00000407
+ Layout Text = German
+ Layout File = KBDGR.DLL
+ 00010407
+ Layout Text = German (IBM)
+ Layout File = KBDGR1.DLL
+ Layout Id = REG_SZ 0012
+ 00000408
+ Layout Text = Greek
+ Layout File = KBDHE.DLL
+ 00050408
+ Layout Text = Greek Latin
+ Layout File = KBDGKL.DLL
+ Layout Id = REG_SZ 0019
+ 00010408
+ Layout Text = Greek (220)
+ Layout File = KBDHE220.DLL
+ Layout Id = REG_SZ 0016
+ 00020408
+ Layout Text = Greek (319)
+ Layout File = KBDHE319.DLL
+ Layout Id = REG_SZ 0018
+ 00030408
+ Layout Text = Greek (220) Latin
+ Layout File = KBDHELA2.DLL
+ Layout Id = REG_SZ 0017
+ 00040408
+ Layout Text = Greek (319) Latin
+ Layout File = KBDHELA3.DLL
+ Layout Id = REG_SZ 0011
+ 0000040E
+ Layout Text = Hungarian
+ Layout File = KBDHU.DLL
+ 0001040E
+ Layout Text = Hungarian 101-key
+ Layout File = KBDHU1.DLL
+ Layout Id = REG_SZ 0006
+ 0000040F
+ Layout Text = Icelandic
+ Layout File = KBDIC.DLL
+ 00001809
+ Layout Text = Irish
+ Layout File = KBDIR.DLL
+ 00000410
+ Layout Text = Italian
+ Layout File = KBDIT.DLL
+ 00010410
+ Layout Text = Italian (142)
+ Layout File = KBDIT142.DLL
+ Layout Id = REG_SZ 0003
+ 0000080A
+ Layout Text = Latin American
+ Layout File = KBDLA.DLL
+ 00000426
+ Layout Text = Latvian
+ Layout File = KBDLV.DLL
+ 00010426
+ Layout Text = Latvian (QWERTY)
+ Layout File = KBDLV1.DLL
+ Layout Id = REG_SZ 0015
+ 00000427
+ Layout Text = Lithuanian
+ Layout File = KBDLT.DLL
+ 00000414
+ Layout Text = Norwegian
+ Layout File = KBDNO.DLL
+ 00000415
+ Layout Text = Polish (Programmers)
+ Layout File = KBDPL1.DLL
+ 00010415
+ Layout Text = Polish (214)
+ Layout File = KBDPL.DLL
+ Layout Id = REG_SZ 0007
+ 00000816
+ Layout Text = Portuguese
+ Layout File = KBDPO.DLL
+ 00000418
+ Layout Text = Romanian
+ Layout File = KBDRO.DLL
+ 00000419
+ Layout Text = Russian
+ Layout File = KBDRU.DLL
+ 00010419
+ Layout Text = Russian (Typewriter)
+ Layout File = KBDRU1.DLL
+ Layout Id = REG_SZ 0008
+ 00000C1A
+ Layout Text = Serbian (Cyrillic)
+ Layout File = KBDYCC.DLL
+ 00010C1A
+ Layout Text = Serbian (Latin)
+ Layout File = KBDYCL.DLL
+ Layout Id = REG_SZ 0009
+ 0000041B
+ Layout Text = Slovak
+ Layout File = KBDSL.DLL
+ 0001041B
+ Layout Text = Slovak (QWERTY)
+ Layout File = KBDSL1.DLL
+ Layout Id = REG_SZ 0013
+ 00000424
+ Layout Text = Slovenian
+ Layout File = KBDCR.DLL
+ 0000040A
+ Layout Text = Spanish
+ Layout File = KBDSP.DLL
+ 0001040A
+ Layout Text = Spanish variation
+ Layout File = KBDES.DLL
+ Layout Id = REG_SZ 0086
+ 0000041D
+ Layout Text = Swedish
+ Layout File = KBDSW.DLL
+ 0000100C
+ Layout Text = Swiss French
+ Layout File = KBDSF.DLL
+ 00000807
+ Layout Text = Swiss German
+ Layout File = KBDSG.DLL
+ 0001041F
+ Layout Text = Turkish F
+ Layout File = KBDTUF.DLL
+ Layout Id = REG_SZ 0014
+ 0000041F
+ Layout Text = Turkish Q
+ Layout File = KBDTUQ.DLL
+ 00000422
+ Layout Text = Ukrainian
+ Layout File = KBDUR.DLL
+ 00000809
+ Layout Text = United Kingdom
+ Layout File = KBDUK.DLL
+ 00000409
+ Layout Text = US
+ Layout File = KBDUS.DLL
+ 00010409
+ Layout Text = US-Dvorak
+ Layout File = KBDDV.DLL
+ Layout Id = REG_SZ 0002
+ 00030409
+ Layout Text = US-Dvorak for left hand
+ Layout File = KBDUSL.DLL
+ Layout Id = REG_SZ 001A
+ 00040409
+ Layout Text = US-Dvorak for right hand
+ Layout File = KBDUSR.DLL
+ Layout Id = REG_SZ 001B
+ 00020409
+ Layout Text = US-International
+ Layout File = KBDUSX.DLL
+ Layout Id = REG_SZ 0001
+
+ Keyboard Layout
+
+ DosKeybCodes
+ 0000080C=be
+ 00000813=be
+ 00000402=bg
+ 00000416=br
+ 00000C0C=cf
+ 00000405=cz
+ 0000041B=sl
+ 00000406=dk
+ 0000040B=su
+ 0000040C=fr
+ 00000408=gk
+ 00010408=gk
+ 00020408=gk
+ 00000407=gr
+ 0000040E=hu
+ 00000410=it
+ 00010410=it
+ 0000080A=la
+ 00000413=nl
+ 00000414=no
+ 00000415=pl
+ 00010415=pl
+ 00000816=po
+ 00000418=ro
+ 0000040A=sp
+ 0001040A=sp
+ 0000041D=sv
+ 0000100C=sf
+ 00000807=sg
+ 0000041F=tr
+ 0001041F=tr
+ 00000809=uk
+ 00000409=us
+ 0000041A=yu
+ 00000424=yu
+ // The remaining entries extend standard DOS
+ 00010409=dv
+ 00020409=us
+ 00030409=usl
+ 00040409=usr
+ // prefer 00001009=ca, but no DOS Canadian Multilingual:
+ 00001009=us
+ // prefer 00010C0C=ca, but no DOS Canadian Multilingual:
+ 00010C0C=cf
+ 0000040F=is
+ 00000419=ru
+ 0000041C=us
+ 00000422=us
+ 00000423=us
+ 00000425=us
+ 00000426=us
+ 00000427=us
+ 00000C1A=us
+ 00001809=us
+ 00010402=us
+ 00010405=cz
+ 00010407=gr
+ 00010419=ru
+ 0001041B=sl
+ 00010426=us
+ 00010C1A=us
+ 00050408=gk
+
+
+ DosKeybIDs
+ 0000041F=179
+ 0001041F=440
+ 00000410=141
+ 00010410=142
+ 00010408=220
+ 00020408=319
+ 00010415=214
+
+ NetworkProvider
+ Order
+
+ Setup
+
+ Print
+ MajorVersion = REG_DWORD 0x00000002
+ MinorVersion = REG_DWORD 0x00000000
+ PriorityClass = REG_DWORD 0x00000000
+ Environments
+ Windows 4.0
+ Directory = REG_SZ WIN40
+ Drivers
+ Print Processors
+ Windows NT Alpha_AXP
+ Directory = REG_SZ W32ALPHA
+ Drivers
+ Print Processors
+ Windows NT PowerPC
+ Directory = REG_SZ W32PPC
+ Drivers
+ Print Processors
+ Windows NT R4000
+ Directory = REG_SZ W32MIPS
+ Drivers
+ Print Processors
+ Windows NT x86
+ Directory = REG_SZ W32X86
+ Drivers
+ Print Processors
+ Monitors
+ PJL Language Monitor
+ Driver = REG_SZ pjlmon.dll
+
+ Printers
+
+ Providers
+ Order = REG_MULTI_SZ "LanMan Print Services"
+ LanMan Print Services
+ Name = win32spl.dll
+ DisplayName = REG_SZ LanMan Print Services
+
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 8 0 0
+ Isa = REG_BINARY 8 1 0
+ Eisa = REG_BINARY 8 2 1
+ MCA = REG_BINARY 8 3 1
+ TurboChannel = REG_BINARY 8 4 0
+ PCI = REG_BINARY 8 5 1
+ VME = REG_BINARY 8 6 0
+ NuBus = REG_BINARY 8 7 0
+ PCMCIA = REG_BINARY 8 8 1
+ CBus = REG_BINARY 8 9 0
+ MPI = REG_BINARY 8 10 0
+ MPSA = REG_BINARY 8 11 0
+
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x0294 \
+ 1 1 0 0 40 \
+ 0x0101 0x0000 0 0x0100 \
+ \
+ \
+ 0x0301 0x42E8 0 0x8 \
+ 0x0301 0x4AE8 0 0x8 \
+ 0x0301 0x82E8 0 0x8 \
+ 0x0301 0x86E8 0 0x8 \
+ 0x0301 0x8AE8 0 0x8 \
+ 0x0301 0x8EE8 0 0x8 \
+ 0x0301 0x92E8 0 0x8 \
+ 0x0301 0x96E8 0 0x8 \
+ 0x0301 0x9AE8 0 0x8 \
+ 0x0301 0x9EE8 0 0x8 \
+ 0x0301 0xA2E8 0 0x8 \
+ 0x0301 0xA6E8 0 0x8 \
+ 0x0301 0xAAE8 0 0x8 \
+ 0x0301 0xAEE8 0 0x8 \
+ 0x0301 0xB6E8 0 0x8 \
+ 0x0301 0xBAE8 0 0x8 \
+ 0x0301 0xBEE8 0 0x8 \
+ 0x0301 0xC2E8 0 0x8 \
+ 0x0301 0xC6E8 0 0x8 \
+ 0x0301 0xCAE8 0 0x8 \
+ 0x0301 0xCEE8 0 0x8 \
+ 0x0301 0xD2E8 0 0x8 \
+ 0x0301 0xD6E8 0 0x8 \
+ 0x0301 0xDAE8 0 0x8 \
+ 0x0301 0xDEE8 0 0x8 \
+ 0x0301 0xE2E8 0 0x8 \
+ 0x0301 0xE6E8 0 0x8 \
+ 0x0301 0xEAE8 0 0x8 \
+ 0x0301 0xEEE8 0 0x8 \
+ 0x0301 0xF6EE 0 0x2 \
+ 0x0301 0xFAEE 0 0x2 \
+ 0x0301 0xFEEE 0 0x2 \
+ \
+ \
+ 0x0302 0x03 0x03 0xffffffff \
+ 0x0302 0x04 0x04 0xffffffff \
+ 0x0302 0x0E 0x0E 0xffffffff \
+ 0x0302 0x06 0x06 0xffffffff \
+ 0x0302 0x0C 0x0C 0xffffffff \
+ 0x0302 0x01 0x01 0xffffffff \
+ 0x0303 0xFFBFFFFF 0 0x00400000
+
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+
+ PCFlat = REG_RESOURCE_REQUIREMENTS 0x000004A8 \
+ 0x000004A8 0 0 0 0 0 0 1 0x00010001 0x00000024 \
+ 0x0100 0 0 0 0x0500 0 0xFFFF 0 \
+ \
+ 0x0108 0 0 0 0x0140 0 0x017F 0 \
+ 0x0108 0 0 0 0x0200 0 0x02FF 0 \
+ 0x0108 0 0 0 0x0300 0 0x036F 0 \
+ \
+ 0x0108 0 0 0 0x0378 0 0x037A 0 \
+ 0x0108 0 0 0 0x02E8 0 0x02FF 0 \
+ 0x0108 0 0 0 0x01F0 0 0x01F8 0 \
+ 0x0108 0 0 0 0x03B0 0 0x03CF 0 \
+ 0x0108 0 0 0 0x03E8 0 0x03FF 0 \
+ 0x0108 0 0 0 0x01CE 0 0x01CF 0 \
+ 0x0108 0 0 0 0x0100 0 0x03FF 0 \
+ \
+ 0x0200 0 0x0F 0x0F 0 0 0 0 \
+ 0x0208 0 0x0D 0x0D 0 0 0 0 \
+ 0x0208 0 0x0C 0x0C 0 0 0 0 \
+ 0x0208 0 0x09 0x09 0 0 0 0 \
+ 0x0208 0 0x08 0x08 0 0 0 0 \
+ 0x0208 0 0x07 0x07 0 0 0 0 \
+ 0x0208 0 0x0B 0x0B 0 0 0 0 \
+ 0x0208 0 0x0A 0x0A 0 0 0 0 \
+ 0x0208 0 0x02 0x02 0 0 0 0 \
+ 0x0208 0 0x05 0x05 0 0 0 0 \
+ 0x0208 0 0x03 0x03 0 0 0 0 \
+ 0x0208 0 0x04 0x04 0 0 0 0 \
+ 0x0208 0 0x0E 0x0E 0 0 0 0 \
+ 0x0208 0 0x06 0x06 0 0 0 0 \
+ 0x0208 0 0x0C 0x0C 0 0 0 0 \
+ 0x0208 0 0x01 0x01 0 0 0 0 \
+ 0x0208 0 0x00 0x0F 0 0 0 0 \
+ \
+ 0x0300 0 0 0 0x00100000 0 0xFFAFFFFF 0 \
+ \
+ 0x0308 0 0 0 0x000F0000 0 0x000FFFFF 0 \
+ 0x0308 0 0 0 0x00080000 0 0x000BFFFF 0 \
+ \
+ 0x0308 0 0 0 0x00080000 0 0x000FFFFF 0 \
+ 0x0308 0 0 0 0x00080000 0 0xFFF7FFFF 0 \
+ \
+ 0x0400 0 0x06 0x0F 0 0 0 0 \
+ 0x0408 0 0x03 0x04 0 0 0 0 \
+ 0x0408 0 0x00 0x0F 0 0 0 0
+
+ PCI = REG_RESOURCE_REQUIREMENTS 0x000008E8 \
+ 0x000008E8 0 0 0 0 0 0 1 0x00010001 0x00000046 \
+ 0x0100 0 0 0 0xFC00 0 0xFCFF 0 \
+ 0x0108 0 0 0 0xF800 0 0xF9FF 0 \
+ 0x0108 0 0 0 0xF400 0 0xF4FF 0 \
+ 0x0108 0 0 0 0xF000 0 0xF0FF 0 \
+ \
+ 0x0108 0 0 0 0xEC00 0 0xECFF 0 \
+ 0x0108 0 0 0 0xE800 0 0xE9FF 0 \
+ 0x0108 0 0 0 0xE400 0 0xE4FF 0 \
+ 0x0108 0 0 0 0xE000 0 0xE0FF 0 \
+ \
+ 0x0108 0 0 0 0xDC00 0 0xDCFF 0 \
+ 0x0108 0 0 0 0xD800 0 0xD9FF 0 \
+ 0x0108 0 0 0 0xD400 0 0xD4FF 0 \
+ 0x0108 0 0 0 0xD000 0 0xD0FF 0 \
+ \
+ 0x0108 0 0 0 0xCC00 0 0xCCFF 0 \
+ 0x0108 0 0 0 0xC800 0 0xC9FF 0 \
+ 0x0108 0 0 0 0xC400 0 0xC4FF 0 \
+ 0x0108 0 0 0 0xC000 0 0xC0FF 0 \
+ \
+ 0x0108 0 0 0 0xBC00 0 0xBCFF 0 \
+ 0x0108 0 0 0 0xB800 0 0xB9FF 0 \
+ 0x0108 0 0 0 0xB400 0 0xB4FF 0 \
+ 0x0108 0 0 0 0xB000 0 0xB0FF 0 \
+ \
+ 0x0108 0 0 0 0xAC00 0 0xACFF 0 \
+ 0x0108 0 0 0 0xA800 0 0xA9FF 0 \
+ 0x0108 0 0 0 0xA400 0 0xA4FF 0 \
+ 0x0108 0 0 0 0xA000 0 0xA0FF 0 \
+ \
+ 0x0108 0 0 0 0x9C00 0 0x9CFF 0 \
+ 0x0108 0 0 0 0x9800 0 0x99FF 0 \
+ 0x0108 0 0 0 0x9400 0 0x94FF 0 \
+ 0x0108 0 0 0 0x9000 0 0x90FF 0 \
+ \
+ 0x0108 0 0 0 0x8C00 0 0x8CFF 0 \
+ 0x0108 0 0 0 0x8800 0 0x89FF 0 \
+ 0x0108 0 0 0 0x8400 0 0x84FF 0 \
+ 0x0108 0 0 0 0x8000 0 0x80FF 0 \
+ \
+ 0x0108 0 0 0 0x7C00 0 0x7CFF 0 \
+ 0x0108 0 0 0 0x7800 0 0x79FF 0 \
+ 0x0108 0 0 0 0x7400 0 0x74FF 0 \
+ 0x0108 0 0 0 0x7000 0 0x70FF 0 \
+ \
+ 0x0108 0 0 0 0x6C00 0 0x6CFF 0 \
+ 0x0108 0 0 0 0x6800 0 0x69FF 0 \
+ 0x0108 0 0 0 0x6400 0 0x64FF 0 \
+ 0x0108 0 0 0 0x6000 0 0x60FF 0 \
+ \
+ 0x0108 0 0 0 0x5C00 0 0x5CFF 0 \
+ 0x0108 0 0 0 0x5800 0 0x59FF 0 \
+ 0x0108 0 0 0 0x5400 0 0x54FF 0 \
+ 0x0108 0 0 0 0x5000 0 0x50FF 0 \
+ \
+ 0x0108 0 0 0 0x4C00 0 0x4CFF 0 \
+ 0x0108 0 0 0 0x4800 0 0x49FF 0 \
+ 0x0108 0 0 0 0x4400 0 0x44FF 0 \
+ 0x0108 0 0 0 0x4000 0 0x40FF 0 \
+ \
+ 0x0108 0 0 0 0x3C00 0 0x3CFF 0 \
+ 0x0108 0 0 0 0x3800 0 0x39FF 0 \
+ 0x0108 0 0 0 0x3400 0 0x34FF 0 \
+ 0x0108 0 0 0 0x3000 0 0x30FF 0 \
+ \
+ 0x0108 0 0 0 0x2C00 0 0x1CFF 0 \
+ 0x0108 0 0 0 0x2800 0 0x19FF 0 \
+ 0x0108 0 0 0 0x2400 0 0x14FF 0 \
+ 0x0108 0 0 0 0x2000 0 0x10FF 0 \
+ \
+ 0x0108 0 0 0 0x1C00 0 0x1CFF 0 \
+ 0x0108 0 0 0 0x1800 0 0x19FF 0 \
+ 0x0108 0 0 0 0x1400 0 0x14FF 0 \
+ 0x0108 0 0 0 0x1000 0 0x10FF 0 \
+ \
+ 0x0108 0 0 0 0x0C00 0 0x0CFF 0 \
+ 0x0108 0 0 0 0x0800 0 0x09FF 0 \
+ 0x0108 0 0 0 0x0500 0 0xFFFFFFFF 0 \
+ \
+ 0x0200 0 0x00 0xFFFFFFFF 0 0 0 0 \
+ \
+ 0x0300 0 0 0 0x00100000 0 0xFFAFFFFF 0 \
+ \
+ 0x0308 0 0 0 0x000F0000 0 0x000FFFFF 0 \
+ 0x0308 0 0 0 0x00080000 0 0x000BFFFF 0 \
+ \
+ 0x0308 0 0 0 0x00080000 0 0x000FFFFF 0 \
+ 0x0308 0 0 0 0x00080000 0 0xFFF7FFFF 0 \
+ \
+ 0x0400 0 0x06 0xFF 0 0 0 0
+
+#ifdef _CAIRO_
+
+ //
+ // Cairo specific tree of goodies
+ //
+ ContentIndex [WorldR AdminFull SystemFull CreatorFull]
+ FilterMemory = REG_DWORD 0x00000080
+ MaxDefaultFilter = REG_DWORD 0x00000100
+ UseOle = REG_DWORD 0x00000000
+ ChangeNotificationInterval = REG_DWORD 0x0000000F
+ MaxWordLists = REG_DWORD 0x00000014
+ MinSizeMergeWordlists = REG_DWORD 0x00000400
+ MinDiskFreeForceMerge = REG_DWORD 0x0000000f
+ MaxShadowFreeForceMerge = REG_DWORD 0x00000014
+ MaxShadowIndexSize = REG_DWORD 0x0000000f
+ MaxWordlistSize = REG_DWORD 0x00000014
+ MinWordlistMemory = REG_DWORD 0x00000005
+ LowResourceSleep = REG_DWORD 0x0000003c
+ MaxWordlistMemoryLoad = REG_DWORD 0x0000005f
+ MaxFreshCount = REG_DWORD 0x00001388
+ MaxQueueChunks = REG_DWORD 0x00000014
+ MasterMergeCheckpointInterval = REG_DWORD 0x00000100
+ FilterBufferSize = REG_DWORD 0x00000080
+ MaxFilesizeFiltered = REG_DWORD 0x00000100
+ MaxFilesizeMultiplier = REG_DWORD 0x00000003
+ GenerateRelevantWords = REG_DWORD 0x00000001
+ MaxRelevantWords = REG_DWORD 0x0000000a
+ UsePhraseLattice = REG_DWORD 0x00000001
+ ClusteringTime = REG_DWORD 0x0000ffff
+ MinIdleQueryThreads = REG_DWORD 0x00000001
+ MaxActiveQueryThreads = REG_DWORD 0x00000003
+ MaxRowsPerTimeSlice = REG_DWORD 0x00000064
+ MaxMergeInterval = REG_DWORD 0x0000000a
+ ThreadPriorityMerge = REG_DWORD 0xfffffffe
+ ThreadPriorityFilter = REG_DWORD 0x00000001
+ ThreadClassFilter = REG_DWORD 0x00000040
+ MaxUpdates = REG_DWORD 0x00000064
+ FilterRetries = REG_DWORD 0x00000004
+ FilterContents = REG_DWORD 0x00000000
+ MasterMergeTime = REG_DWORD 0x00000000
+ DaemonResponseTimeout = REG_DWORD 0x00000005
+ MaxPendingDocuments = REG_DWORD 0x00000020
+ MaxIdealIndexes = REG_DWORD 0x00000005
+ MaxIndexes = REG_DWORD 0x00000032
+ MinMergeIdleTime = REG_DWORD 0x0000005a
+ Language
+ InstalledLangs = REG_MULTI_SZ "English_US" "English_UK" "French_French" "German_German" "Italian_Italian" "Swedish_Default" "Spanish_Modern" "Dutch_Dutch" "Portuguese_Portuguese" "Portuguese_Brazilian" "Neutral"
+ English_US
+ Locale = REG_DWORD 1033
+ WBreakerClass = REG_SZ {59E09780-8099-101B-8DF3-00000B65C3B5}
+ StemmerClass = REG_SZ {eeed4c20-7f1b-11ce-be57-00aa0051fe20}
+ NoiseFile = REG_SZ noise.enu
+ English_UK
+ Locale = REG_DWORD 2057
+ WBreakerClass = REG_SZ {59E097e4-8099-101B-8DF3-00000B65C3B5}
+ StemmerClass = REG_SZ {d99f7670-7f1a-11ce-be57-00aa0051fe20}
+ NoiseFile = REG_SZ noise.eng
+ French_French
+ Locale = REG_DWORD 1036
+ WBreakerClass = REG_SZ {59E09848-8099-101B-8DF3-00000B65C3B5}
+ StemmerClass = REG_SZ {2a6eb050-7f1c-11ce-be57-00aa0051fe20}
+ NoiseFile = REG_SZ noise.fra
+ German_German
+ Locale = REG_DWORD 1031
+ WBreakerClass = REG_SZ {9B08E210-E51B-11CD-BC7F-00AA003DB18E}
+ StemmerClass = REG_SZ {510a4910-7f1c-11ce-be57-00aa0051fe20}
+ NoiseFile = REG_SZ noise.deu
+ Italian_Italian
+ Locale = REG_DWORD 1040
+ WBreakerClass = REG_SZ {fd86b5d0-12c6-11ce-bd31-00aa004bbb1f}
+ StemmerClass = REG_SZ {6d36ce10-7f1c-11ce-be57-00aa0051fe20}
+ NoiseFile = REG_SZ noise.ita
+ Swedish_Default
+ Locale = REG_DWORD 1053
+ WBreakerClass = REG_SZ {01c6b350-12c7-11ce-bd31-00aa004bbb1f}
+ StemmerClass = REG_SZ {9478f640-7f1c-11ce-be57-00aa0051fe20}
+ NoiseFile = REG_SZ noise.sve
+ Spanish_Modern
+ Locale = REG_DWORD 3082
+ WBreakerClass = REG_SZ {0285b5c0-12c7-11ce-bd31-00aa004bbb1f}
+ StemmerClass = REG_SZ {b0516ff0-7f1c-11ce-be57-00aa0051fe20}
+ NoiseFile = REG_SZ noise.esn
+ Dutch_Dutch
+ Locale = REG_DWORD 1043
+ WBreakerClass = REG_SZ {66b37110-8bf2-11ce-be59-00aa0051fe20}
+ StemmerClass = REG_SZ {860d28d0-8bf4-11ce-be59-00aa0051fe20}
+ NoiseFile = REG_SZ noise.nld
+ Portuguese_Portuguese
+ Locale = REG_DWORD 2070
+ WBreakerClass = REG_SZ {683aa110-8bf2-11ce-be59-00aa0051fe20}
+ StemmerClass = REG_SZ {86a77ec0-8bf4-11ce-be59-00aa0051fe20}
+ NoiseFile = REG_SZ noise.ptg
+ Portuguese_Brazilian
+ Locale = REG_DWORD 1046
+ WBreakerClass = REG_SZ {7baa4e90-8bf4-11ce-be59-00aa0051fe20}
+ StemmerClass = REG_SZ {871275e0-8bf4-11ce-be59-00aa0051fe20}
+ NoiseFile = REG_SZ noise.ptb
+ Neutral
+ Locale = REG_DWORD 0
+ WBreakerClass = REG_SZ {369647e0-17b0-11ce-9950-00aa004bbb1f}
+ StemmerClass = REG_SZ
+ NoiseFile = REG_SZ noise.dat
+
+ Cairo [WorldR AdminFull SystemFull CreatorFull]
+
+ DS [WorldR AdminFull SystemFull CreatorFull]
+ MachineState = REG_DWORD 0
+ DomainName = REG_SZ WORKGROUP
+ OuName = REG_SZ
+ DSMachineChecksum = REG_DWORD 0
+ DSMachineSyncFlag = REG_DWORD 0
+ ReliableTimeSource = REG_DWORD 0
+
+ Locator [WorldR AdminFull SystemFull CreatorFull]
+
+#endif // _CAIRO_
+
+ Enum [WorldR SystemFull]
+
+ Hardware Profiles [WorldR AdminFull SystemFull CreatorFull]
+
+ 0001 [WorldR AdminFull SystemFull CreatorFull]
+
+ Software [WorldRWD AdminFull SystemFull CreatorFull]
+
+ System [WorldR AdminRWD SystemFull]
+ CurrentControlSet [WorldR AdminFull SystemFull CreatorFull]
+ Control [SystemOpRWD WorldR AdminFull SystemFull CreatorFull]
+ Class
+ Enum [SystemOpRWD WorldR AdminFull SystemFull CreatorFull]
+ Services [SystemOpRWD WorldR AdminFull SystemFull CreatorFull]
+
+ Services [WorldR AdminFull SystemOpRWD SystemFull CreatorFull]
+
+ Modem
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DemandLoad
+ Group = Extended base
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000004
+ PlugPlayServiceType = REG_DWORD 0x00000002
+ Parameters
+
+ Spooler
+ Type = REG_DWORD 0x00000110
+ Start = SC_Start_DemandLoad
+ Group = SpoolerGroup
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\spoolss.exe
+ ObjectName = REG_SZ LocalSystem
+ Parameters
+
+ Mup
+ Type = SC_Type_FileSystem
+ Start = SC_Start_DemandLoad
+ DisplayName = REG_SZ Mup
+ Group = Network
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ \SystemRoot\System32\drivers\mup.sys
+ Parameters
+
+ RpcSs
+ Type = SC_Type_Win32ServiceOwnProcess
+ DisplayName = REG_SZ Remote Procedure Call (RPC) Service
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\RpcSs.exe
+ ObjectName = REG_SZ LocalSystem
+ Start = SC_Start_AutoLoad
+ Parameters
+ Security
+ //
+ // The Security key lets any user start this service.
+ //
+ Security = REG_BINARY 204 \
+ 0x80140001 0x000000b4 0x000000c0 0x00000014 0x00000034 \
+ 0x00200002 0x00000001 0x00188002 0x000f01ff 0x00000101 \
+ 0x01000000 0x00000000 0x00000220 0x00800002 0x00000005 \
+ 0x00180300 0x0002008d 0x00000101 0x01000000 0x00000000 \
+ 0x00000000 0x00180300 0x000f01ff 0x00000201 0x05000000 \
+ 0x00000020 0x00000220 0x00180300 0x0002008f 0x00000201 \
+ 0x05000000 0x00000020 0x00000223 0x00180300 0x0000009d \
+ 0x00000101 0x05000000 0x00000004 0x00000223 0x00180300 \
+ 0x0000009d 0x00000201 0x05000000 0x00000020 0x00000221 \
+ 0x00000101 0x05000000 0x00000012 0x00000101 0x05000000 \
+ 0x00000012
+
+#ifdef _CAIRO_
+ AlertSystem
+ Type = SC_Type_Win32ServiceOwnProcess
+ Start = SC_Start_DisableLoad
+ ObjectName = REG_SZ LocalSystem
+ DependOnService = REG_MULTI_SZ "RpcSs
+ DisplayName = Alert System
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\System32\alertsys.exe
+ Parameters
+ ComponentID
+ {5e3c2710-44f3-11ce-bdc8-00aa004ba935}
+ AlertMessageFile = REG_EXPAND_SZ %SystemRoot%\system32\orasvc.exe
+
+ CairoOra
+ Performance
+ Close = REG_SZ CloseData
+ Collect = REG_SZ CollectData
+ Library = REG_SZ oramon.dll
+ Open = REG_SZ OpenData
+
+ CiFilter
+ Type = SC_Type_Win32ServiceOwnProcess
+ Start = SC_Start_DisableLoad
+ ObjectName = REG_SZ LocalSystem
+ DependOnService = REG_MULTI_SZ "RpcSs
+ DisplayName = Ci Filter Daemon
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\System32\cifilter.exe
+ Security
+ //
+ // The Security key lets any user start this service.
+ //
+ Security = REG_BINARY 180 \
+ 0x80140001 0x0000009C 0x000000A8 0x00000014 0x00000034 \
+ 0x00200002 0x00000001 0x00188002 0x000F01FF 0x00000101 \
+ 0x01000000 0x00000000 0x00000220 0x00680002 0x00000004 \
+ 0x00180300 0x0002008D 0x00000101 0x01000000 0x00000000 \
+ 0x00000000 0x00180300 0x000F01FF 0x00000201 0x05000000 \
+ 0x00000020 0x00000220 0x00180300 0x0002008F 0x00000201 \
+ 0x05000000 0x00000020 0x00000223 0x00180300 0x0000009D \
+ 0x00000101 0x05000000 0x00000004 0x00000223 0x00000101 \
+ 0x05000000 0x00000012 0x00000101 0x05000000 0x00000012
+ Filtering
+ Performance
+ Close = REG_SZ DoneFILTERPerformanceData
+ Collect = REG_SZ CollectFILTERPerformanceData
+ Library = REG_SZ Query.dll
+ Open = REG_SZ InitializeFILTERPerformanceData
+ Linkage
+ Bind = REG_MULTI_SZ "\Dummy"
+ Export = REG_MULTI_SZ "\Dummy"
+ Route = REG_MULTI_SZ "\Dummy"
+ ContentIndex
+ Performance
+ Close = REG_SZ DoneCIPerformanceData
+ Collect = REG_SZ CollectCIPerformanceData
+ Library = REG_SZ Query.dll
+ Open = REG_SZ InitializeCIPerformanceData
+ Linkage
+ Bind = REG_MULTI_SZ "\Dummy"
+ Export = REG_MULTI_SZ "\Dummy"
+ Route = REG_MULTI_SZ "\Dummy"
+#endif // _CAIRO_
+
+ Netlogon
+ Parameters
+ DisablePasswordChange = REG_DWORD 0
+
+
+ NetDDE
+ Type = SC_Type_Win32ServiceShareProcess
+ Start = SC_Start_DisableLoad
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\netdde.exe
+ DependOnService = REG_MULTI_SZ "NetDDEDSDM"
+ DisplayName = REG_SZ Network DDE
+ ObjectName = REG_SZ LocalSystem
+ Group = REG_SZ NetDDEGroup
+ Security
+ //
+ // The Security key lets any user start this service.
+ //
+ Security = REG_BINARY 180 \
+ 0x80140001 0x0000009C 0x000000A8 0x00000014 0x00000034 \
+ 0x00200002 0x00000001 0x00188002 0x000F01FF 0x00000101 \
+ 0x01000000 0x00000000 0x00000220 0x00680002 0x00000004 \
+ 0x00180300 0x0002008D 0x00000101 0x01000000 0x00000000 \
+ 0x00000000 0x00180300 0x000F01FF 0x00000201 0x05000000 \
+ 0x00000020 0x00000220 0x00180300 0x0002008F 0x00000201 \
+ 0x05000000 0x00000020 0x00000223 0x00180300 0x0000009D \
+ 0x00000101 0x05000000 0x00000004 0x00000223 0x00000101 \
+ 0x05000000 0x00000012 0x00000101 0x05000000 0x00000012
+
+ NetDDEdsdm
+ Type = SC_Type_Win32ServiceShareProcess
+ Start = SC_Start_DisableLoad
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\netdde.exe
+ DependOnService = REG_MULTI_SZ ""
+ DisplayName = REG_SZ Network DDE DSDM
+ ObjectName = REG_SZ LocalSystem
+ Security
+ //
+ // The Security key lets any user start this service.
+ //
+ Security = REG_BINARY 180 \
+ 0x80140001 0x0000009C 0x000000A8 0x00000014 0x00000034 \
+ 0x00200002 0x00000001 0x00188002 0x000F01FF 0x00000101 \
+ 0x01000000 0x00000000 0x00000220 0x00680002 0x00000004 \
+ 0x00180300 0x0002008D 0x00000101 0x01000000 0x00000000 \
+ 0x00000000 0x00180300 0x000F01FF 0x00000201 0x05000000 \
+ 0x00000020 0x00000220 0x00180300 0x0002008F 0x00000201 \
+ 0x05000000 0x00000020 0x00000223 0x00180300 0x0000009D \
+ 0x00000101 0x05000000 0x00000004 0x00000223 0x00000101 \
+ 0x05000000 0x00000012 0x00000101 0x05000000 0x00000012
+
+ TapiSrv
+ Type = SC_Type_Win32ServiceOwnProcess
+ Start = SC_Start_DemandLoad
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\tapisrv.exe
+ ObjectName = REG_SZ LocalSystem
+ DisplayName = REG_SZ Telephony Service
+ Security
+ //
+ // The Security key lets any user start this service.
+ //
+ Security = REG_BINARY 204 \
+ 0x80140001 0x000000b4 0x000000c0 0x00000014 0x00000034 \
+ 0x00200002 0x00000001 0x00188002 0x000f01ff 0x00000101 \
+ 0x01000000 0x00000000 0x00000220 0x00800002 0x00000005 \
+ 0x00180300 0x0002008d 0x00000101 0x01000000 0x00000000 \
+ 0x00000000 0x00180300 0x000f01ff 0x00000201 0x05000000 \
+ 0x00000020 0x00000220 0x00180300 0x0002008f 0x00000201 \
+ 0x05000000 0x00000020 0x00000223 0x00180300 0x0000009d \
+ 0x00000101 0x05000000 0x00000004 0x00000223 0x00180300 \
+ 0x0000009d 0x00000201 0x05000000 0x00000020 0x00000221 \
+ 0x00000101 0x05000000 0x00000012 0x00000101 0x05000000 \
+ 0x00000012
+
+ Performance
+ Close = REG_SZ CloseTapiPerformanceData
+ Collect = REG_SZ CollectTapiPerformanceData
+ Library = REG_SZ tapiperf.dll
+ Open = REG_SZ OpenTapiPerformanceData
+
+ ClipSrv
+ Type = SC_Type_Win32ServiceOwnProcess
+ Start = SC_Start_DisableLoad
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\clipsrv.exe
+ DependOnService = REG_MULTI_SZ "NetDDE"
+ DisplayName = REG_SZ ClipBook Server
+ ObjectName = REG_SZ LocalSystem
+ Security
+ //
+ // The Security key lets any user start this service.
+ //
+ Security = REG_BINARY 180 \
+ 0x80140001 0x0000009C 0x000000A8 0x00000014 0x00000034 \
+ 0x00200002 0x00000001 0x00188002 0x000F01FF 0x00000101 \
+ 0x01000000 0x00000000 0x00000220 0x00680002 0x00000004 \
+ 0x00180300 0x0002008D 0x00000101 0x01000000 0x00000000 \
+ 0x00000000 0x00180300 0x000F01FF 0x00000201 0x05000000 \
+ 0x00000020 0x00000220 0x00180300 0x0002008F 0x00000201 \
+ 0x05000000 0x00000020 0x00000223 0x00180300 0x0000009D \
+ 0x00000101 0x05000000 0x00000004 0x00000223 0x00000101 \
+ 0x05000000 0x00000012 0x00000101 0x05000000 0x00000012
+
+ PlugPlay
+ Type = SC_Type_Win32ServiceShareProcess
+ Start = SC_Start_AutoLoad
+ Group = PlugPlay
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\services.exe
+ ObjectName = REG_SZ LocalSystem
+ DisplayName = REG_SZ Plug and Play
+ PlugPlayServiceType = REG_DWORD 0x00000003
+
+ EventLog [WorldR AdminFull SystemFull CreatorFull]
+ Type = SC_Type_Win32ServiceShareProcess
+ Start = SC_Start_DisableLoad
+ Group = Event log
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\services.exe
+ ObjectName = REG_SZ LocalSystem
+ PlugPlayServiceType = REG_DWORD 0x00000003
+ Application
+ File = REG_EXPAND_SZ %SystemRoot%\system32\config\AppEvent.Evt
+ MaxSize = REG_DWORD 0x80000
+ Retention = REG_DWORD 604800
+ DrWatson
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\drwtsn32.exe
+ TypesSupported = REG_DWORD 0x07
+ hpmon
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\hpmon.dll
+ TypesSupported = REG_DWORD 0x07
+ ntbackup
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\ntbackup.exe
+ TypesSupported = REG_DWORD 0x07
+ Perfctrs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\perfctrs.dll
+ TypesSupported = REG_DWORD 0x07
+ Perfmon
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\perfmon.exe
+ TypesSupported = REG_DWORD 0x07
+ Perflib
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\prflbmsg.dll
+ TypesSupported = REG_DWORD 0x07
+ Type 1 Installer
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\t1instal.dll
+ TypesSupported = REG_DWORD 0x0007
+ Windows 3.1 Migration
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\advapi32.dll
+ TypesSupported = REG_DWORD 0x07
+ Winlogon
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\winlogon.exe
+ TypesSupported = REG_DWORD 0x07
+ Userenv
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\userenv.dll
+ TypesSupported = REG_DWORD 0x07
+ Autochk
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\winlogon.exe
+ TypesSupported = REG_DWORD 0x07
+#if defined(_CAIRO_)
+ Ci
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\query.dll
+ CatagoryMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\query.dll
+ TypesSupported = REG_DWORD 0x7
+ CatagoryCount = REG_DWORD 0x1
+ CairoOra
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\oramon.dll
+ TypesSupported = REG_DWORD 0x07
+#endif
+ System
+ File = REG_EXPAND_SZ %SystemRoot%\system32\config\SysEvent.Evt
+ MaxSize = REG_DWORD 0x80000
+ Retention = REG_DWORD 604800
+ Application Popup
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\ntdll.dll
+ TypesSupported = REG_DWORD 0x07
+ abiosdsk
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ aha154x
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ aha174x
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ aic78xx
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ always
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ami0nt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ amsint
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ flashpnt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ cpqfws2e
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ arrow
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ atapi
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ atdisk
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ dac960nt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ dce376nt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ dtc329x
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ati
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\ati.sys
+ TypesSupported = REG_DWORD 0x07
+ beep
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ buslogic
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ busmouse
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\BusMouse.sys
+ TypesSupported = REG_DWORD 0x07
+ cdaudio
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ cdfs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ changer
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ cirrus
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ cpqarray
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ delldsa
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ dell_dgx
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ diskperf
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ dptscsi
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ et4000
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ eventlog
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netevent.dll
+ TypesSupported = REG_DWORD 0x07
+ fastfat
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ fd16_700
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ fd7000ex
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ fd8XX
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ floppy
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ fs_rec
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ftdisk
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\FtDisk.sys
+ TypesSupported = REG_DWORD 0x07
+ i8042prt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\i8042prt.sys
+ TypesSupported = REG_DWORD 0x07
+ inport
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\InPort.sys
+ TypesSupported = REG_DWORD 0x07
+ JazzG300
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ JazzG364
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ JazzSnd
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ Jzvxl484
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ kbdclass
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\KbdClass.sys
+ TypesSupported = REG_DWORD 0x07
+ mitsumi
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ mga
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\mga.sys
+ TypesSupported = REG_DWORD 0x07
+ mga_mil
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\mga_mil.sys
+ TypesSupported = REG_DWORD 0x07
+ mkecr5xx
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ Modem
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\Modem.sys
+ TypesSupported = REG_DWORD 0x07
+ mouclass
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\MouClass.sys
+ TypesSupported = REG_DWORD 0x07
+ msadlib
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ msfs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ Mup
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ncr53c9x
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ncrc700
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ncrc710
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ncr77c22
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ symc810
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ndis
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netevent.dll
+ TypesSupported = REG_DWORD 0x07
+ NetDDE
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netdde.exe
+ TypesSupported = REG_DWORD 0x1F
+ npfs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ntfs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ null
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ oliscsi
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ parallel
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\Parallel.sys
+ TypesSupported = REG_DWORD 0x07
+ parport
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\ParPort.sys
+ TypesSupported = REG_DWORD 0x07
+ parvdm
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\ParVdm.sys
+ TypesSupported = REG_DWORD 0x07
+ pcmcia
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\Pcmcia.sys
+ TypesSupported = REG_DWORD 0x07
+ pnpisa
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\pnpisa.sys
+ TypesSupported = REG_DWORD 0x07
+ psidisp
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ql10wnt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ qv
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\qv.sys
+ TypesSupported = REG_DWORD 0x07
+ s3
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\s3.sys
+ TypesSupported = REG_DWORD 0x07
+ SAM
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\samsrv.dll
+ TypesSupported = REG_DWORD 0x07
+ Save Dump
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\SaveDump.exe
+ TypesSupported = REG_DWORD 0x07
+ Schedule
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netevent.dll
+ TypesSupported = REG_DWORD 0x07
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\kernel32.dll
+ cdrom
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ disk
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ sfloppy
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ scsiport
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ scsiprnt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ scsiscan
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ serial
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\Serial.sys
+ TypesSupported = REG_DWORD 0x07
+ sermouse
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\SerMouse.sys
+ TypesSupported = REG_DWORD 0x07
+ Service Control Manager
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netevent.dll
+ TypesSupported = REG_DWORD 0x07
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\kernel32.dll
+ DCOM
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netevent.dll
+ TypesSupported = REG_DWORD 0x07
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\kernel32.dll
+ Simbad
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ slcd32
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ sndblst
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ sparrow
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ spock
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ tdi
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+//
+// Trident will be added on the next version of NT
+//
+// trident
+// EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+// TypesSupported = REG_DWORD 0x07
+//
+ t128
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ t13b
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ tmv1
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ultra14f
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ultra124
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ ultra24f
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ UPS
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netmsg.dll
+ TypesSupported = REG_DWORD 0x07
+ VgaStart
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\vga.sys
+ TypesSupported = REG_DWORD 0x07
+ VgaSave
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\vga.sys
+ TypesSupported = REG_DWORD 0x07
+ v7vram
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ wd33c93
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ wdvga
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ wd90c24a
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x07
+ weitekp9
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\weitekp9.sys
+ TypesSupported = REG_DWORD 0x07
+ xga
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\xga.sys
+ TypesSupported = REG_DWORD 0x07
+#if defined(_CAIRO_)
+ AS
+ Description = This is a Cairo Alert
+ dfs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\Drivers\Dfs.sys
+ TypesSupported = REG_DWORD 0x07
+ Ofs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\query.dll
+ CatagoryMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\query.dll
+ TypesSupported = REG_DWORD 0x7
+ CatagoryCount = REG_DWORD 0x1
+#endif
+ Security
+ File = REG_EXPAND_SZ %SystemRoot%\System32\config\SecEvent.Evt
+ MaxSize = REG_DWORD 0x80000
+ Retention = REG_DWORD 604800
+ PrimaryModule = REG_SZ Security
+
+ Security
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsAuditE.dll
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ CategoryMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsAuditE.dll
+ CategoryCount = REG_DWORD 0x7
+ TypesSupported = REG_DWORD 0x1C
+ ObjectNames
+
+ //
+ // NOTE: The value provided in this section
+ // match an object type (by name) with
+ // the corresponding access bit names
+ // for that object type. This is done
+ // by specifying the message ID of
+ // specific-access-bit-0's message ID
+ // for the object. All bits for that
+ // object are assumed to be the 16
+ // messages starting with that message
+ // ID.
+ //
+ // For NT base system objects, the
+ // object access type messages are
+ // defined in
+ // \nt\private\nt\seaudit\msobjs\msobjs.mc.
+ //
+
+ //
+ // Executive objects
+ //
+ // Note: The following executive objects
+ // are not visible to non-kernel mode
+ // code and are thus, not objects that
+ // will generate audit messages.
+ //
+ // Adaptor
+ // Controller
+ // Driver
+ //
+
+ Device = REG_DWORD 0x00001100
+ Directory = REG_DWORD 0x00001110
+ Event = REG_DWORD 0x00001120
+ EventPair = REG_DWORD 0x00001130
+ File = REG_DWORD 0x00001140
+ Key = REG_DWORD 0x00001150
+ Mutant = REG_DWORD 0x00001160
+ Port = REG_DWORD 0x00001170
+ Process = REG_DWORD 0x00001180
+ Profile = REG_DWORD 0x00001190
+ Section = REG_DWORD 0x000011A0
+ Semaphore = REG_DWORD 0x000011B0
+ SymbolicLink = REG_DWORD 0x000011C0
+ Thread = REG_DWORD 0x000011D0
+ Timer = REG_DWORD 0x000011E0
+ Token = REG_DWORD 0x000011F0
+ Type = REG_DWORD 0x00001200
+
+ //
+ // Objects added after 1.0
+ //
+
+ IoCompletion = REG_DWORD 0x00001300
+
+ //
+ // Mailslots and NamedPipes use the same access bits
+ // as files.
+ //
+
+ MailSlot = REG_DWORD 0x00001140
+ NamedPipe = REG_DWORD 0x00001140
+
+ //
+ // Objects added after 3.51
+
+ Channel = REG_DWORD 0x00001400
+
+ //
+ // Objects moved from USER32
+ //
+
+ WindowStation = REG_DWORD 0x00001A00
+ Desktop = REG_DWORD 0x00001A10
+
+ Security Account Manager
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ ObjectNames
+ //
+ // Security Account Manager (SAM) objects
+ //
+
+ SAM_SERVER = REG_DWORD 0x00001500
+ SAM_DOMAIN = REG_DWORD 0x00001510
+ SAM_GROUP = REG_DWORD 0x00001520
+ SAM_ALIAS = REG_DWORD 0x00001530
+ SAM_USER = REG_DWORD 0x00001540
+
+
+ LSA
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ ObjectNames
+ //
+ // Local Security Authority (LSA) objects
+ //
+
+
+ PolicyObject = REG_DWORD 0x00001600
+ SecretObject = REG_DWORD 0x00001610
+ TrustedDomainObject = REG_DWORD 0x00001620
+ UserAccountObject = REG_DWORD 0x00001630
+
+ Spooler
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ ObjectNames
+ //
+ // Printer objects
+ //
+
+ Server = REG_DWORD 0x00001B00
+ Printer = REG_DWORD 0x00001B10
+ Document = REG_DWORD 0x00001B20
+
+
+ SC Manager
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ ObjectNames
+ //
+ // Service Controller objects
+ //
+
+ SC_MANAGER Object = REG_DWORD 0x00001C00
+ SERVICE Object = REG_DWORD 0x00001C10
+
+
+ NetDDE Object
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ ObjectNames
+
+ //
+ // NetDDE objects
+ //
+
+ DDE Share = REG_DWORD 0x00001D00
+
+
+
+ //
+ // Driver list:
+ //
+ //
+ // Begin with the miniport drivers
+ //
+
+ Ncr53c9x
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000001
+
+ Spock
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000002
+
+ Oliscsi
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000003
+
+ Ncrc700
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000004
+
+ Ncrc710
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000005
+
+ Aha154x
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000006
+
+ Sparrow
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000007
+
+ Aha174x
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000008
+
+ DptScsi
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000009
+
+ Ultra14f
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000000a
+
+ Ultra124
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000000b
+
+ Ultra24f
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000000c
+
+ BusLogic
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000001b
+
+ Fd7000ex
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000000e
+
+ Fd8xx
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000000f
+ Parameters
+ Device0
+ DriverParameter = IRQ=5
+
+ Fd16_700
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000010
+
+ Wd33c93
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000011
+ Parameters
+ Device0
+ DriverParameter = IRQ=10;DMA=6
+ DisableDisconnect = REG_DWORD 0x00000001
+
+ T128
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000012
+ Parameters
+ Device0
+ DriverParameter = IRQ=5
+ T13B
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000013
+ Parameters
+ Device0
+ DriverParameter = IRQ=5
+
+ Always
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000014
+
+ Arrow
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000015
+
+ dce376nt
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000016
+
+ dtc329x
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000017
+
+ tmv1
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000018
+ Parameters
+ Device0
+ DriverParameter = IRQ=15
+
+ atapi
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000019
+
+ symc810
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000001a
+
+ ami0nt
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000000d
+
+ slcd32
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000001c
+
+ mkecr5xx
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000001d
+
+ aic78xx
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000001e
+
+ mitsumi
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x0000001f
+
+ dac960nt
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000020
+
+ Ql10wnt
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000023
+
+ amsint
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000024
+
+ flashpnt
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000025
+
+ cpqfws2e
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000026
+
+ //
+ // WD1003-compatible disk controllers
+ //
+
+ Atdisk
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ ErrorControl = SC_Error_Ignore
+ Group = Primary disk
+ Tag = REG_DWORD 0x00000001
+
+ Floppy
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Primary disk
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000002
+
+ Abiosdsk
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ ErrorControl = SC_Error_Ignore
+ Group = Primary disk
+ Tag = REG_DWORD 0x00000003
+
+ Cpqarray
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000100
+
+ Delldsa
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = SCSI miniport
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000101
+
+ //
+ // SCSI class drivers
+ //
+
+ Disk
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtBoot
+ Group = SCSI Class
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000002
+ DependOnGroup = REG_MULTI_SZ "SCSI miniport"
+
+ Sfloppy
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Primary disk
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000004
+ DependOnGroup = REG_MULTI_SZ "SCSI miniport"
+
+ Scsiscan
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = SCSI Class
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000003
+ DependOnGroup = REG_MULTI_SZ "SCSI miniport"
+
+ Cdrom
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = SCSI CDROM Class
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000002
+ DependOnGroup = REG_MULTI_SZ "SCSI miniport"
+ Autorun = REG_DWORD 0x01
+
+ //
+ // Global filter drivers
+ //
+
+ Ftdisk
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = Filter
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000003
+
+ Simbad
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = Filter
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000001
+
+ Diskperf
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = Filter
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000004
+
+ Cdaudio
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Filter
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000006
+
+ Changer
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Filter
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000005
+
+ //
+ // Boot file system drivers
+ // (NTLDR/osloader.exe will load the appropriate filesystem
+ // automatically, regardless of its "Start" value.)
+ //
+
+ Fs_Rec
+ Type = SC_Type_Recognizer
+ Start = SC_Start_LoadAtSystemInit
+ Group = Boot file system
+ ErrorControl = SC_Error_Ignore
+
+ Fastfat
+ Type = SC_Type_FileSystem
+ Start = SC_Start_DisableLoad
+ Group = Boot file system
+ ErrorControl = SC_Error_Normal
+
+ //
+ // Base drivers
+ //
+
+ Null
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Base
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000001
+
+ Beep
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Base
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000002
+
+ KSecDD
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Base
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000001
+
+ //
+ // Keyboard Port drivers
+ //
+
+ i8042prt
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = Keyboard Port
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000001
+ Parameters
+ ResendIterations = REG_DWORD 3
+ PollingIterations = REG_DWORD 12000
+ PollingIterationsMaximum = REG_DWORD 12000
+ PollStatusIterations = REG_DWORD 1
+ KeyboardDataQueueSize = REG_DWORD 100
+ KeyboardDeviceBaseName = REG_SZ KeyboardPort
+ MouseDataQueueSize = REG_DWORD 100
+ NumberOfButtons = REG_DWORD 2
+ SampleRate = REG_DWORD 60
+ MouseResolution = REG_DWORD 3
+ PointerDeviceBaseName = REG_SZ PointerPort
+ MouseSynchIn100ns = REG_DWORD 20000000
+ EnableWheelDetection = REG_DWORD 1
+
+ //
+ // Pointer Port drivers
+ //
+
+ Busmouse
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = Pointer Port
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000003
+ Parameters
+ MouseDataQueueSize = REG_DWORD 100
+ NumberOfButtons = REG_DWORD 2
+ SampleRate = REG_DWORD 50
+ PointerDeviceBaseName = REG_SZ PointerPort
+
+ Inport
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = Pointer Port
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000001
+ Parameters
+ MouseDataQueueSize = REG_DWORD 100
+ NumberOfButtons = REG_DWORD 2
+ SampleRate = REG_DWORD 50
+ HzMode = REG_DWORD 2
+ PointerDeviceBaseName = REG_SZ PointerPort
+
+ Sermouse
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DisableLoad
+ Group = Pointer Port
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000002
+ Parameters
+ MouseDataQueueSize = REG_DWORD 100
+ NumberOfButtons = REG_DWORD 2
+ SampleRate = REG_DWORD 40
+ PointerDeviceBaseName = REG_SZ PointerPort
+
+ //
+ // Keyboard Class drivers
+ //
+
+ Kbdclass
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Keyboard Class
+ ErrorControl = SC_Error_Normal
+ Tag = REG_DWORD 0x00000001
+ Parameters
+ KeyboardDataQueueSize = REG_DWORD 100
+ MaximumPortsServiced = REG_DWORD 3
+ ConnectMultiplePorts = REG_DWORD 0
+ KeyboardDeviceBaseName = REG_SZ KeyboardClass
+
+ //
+ // Pointer Class drivers
+ //
+
+ Mouclass
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Pointer Class
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000001
+ Parameters
+ MouseDataQueueSize = REG_DWORD 100
+ MaximumPortsServiced = REG_DWORD 3
+ ConnectMultiplePorts = REG_DWORD 1
+ PointerDeviceBaseName = REG_SZ PointerClass
+
+ //
+ // Netcard Detection driver
+ //
+ NetDetect
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_DemandLoad
+ ErrorControl = SC_Error_Normal
+ DisplayName = NetDetect
+ ImagePath = REG_EXPAND_SZ \SystemRoot\system32\drivers\netdtect.sys
+
+ //
+ // Video drivers
+ //
+
+ ati
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ InstalledDisplayDrivers = REG_MULTI_SZ "ati" "8514a"
+
+ cirrus
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = True
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" "cirrus" "vga256" "vga64K"
+
+ Dell_DGX
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ InstalledDisplayDrivers = REG_MULTI_SZ "framebuf"
+
+ et4000
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = True
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" "w32" "vga256" "vga64K"
+
+ Jazzg364
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ Monitor = REG_SZ drivers\jazz.bvp
+ InstalledDisplayDrivers = REG_MULTI_SZ "framebuf"
+
+ Jazzg300
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ Monitor = REG_SZ drivers\jazz.bvp
+ InstalledDisplayDrivers = REG_MULTI_SZ "framebuf"
+
+ Jzvxl484
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ Monitor = REG_SZ drivers\jazz.bvp
+ InstalledDisplayDrivers = REG_MULTI_SZ "jzvxl484"
+
+ mga
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ InstalledDisplayDrivers = REG_MULTI_SZ "mga"
+
+ mga_mil
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ InstalledDisplayDrivers = REG_MULTI_SZ "mga"
+
+ ncr77c22
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = True
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" "vga256"
+
+ psidisp
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ InstalledDisplayDrivers = REG_MULTI_SZ "psidisp"
+
+ qv
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = True
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" "qv"
+
+ s3
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ InstalledDisplayDrivers = REG_MULTI_SZ "s3"
+
+ tga
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ InstalledDisplayDrivers = REG_MULTI_SZ "tga"
+
+//
+// Trident will be added on the next version of NT
+//
+// trident
+// Type = SC_Type_KernelDriver
+// Start = SC_Start_LoadAtSystemInit
+// Group = Video
+// ErrorControl = SC_Error_Ignore
+// Device0
+// VgaCompatible = True
+// InstalledDisplayDrivers = REG_MULTI_SZ "vga" "vga256"
+//
+
+ v7vram
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = True
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" "vga256"
+
+ wdvga
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = True
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" "vga256" "vga64k"
+
+ wd90c24a
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = True
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" "vga256" "wd90c24a"
+
+ weitekp9
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ InstalledDisplayDrivers = REG_MULTI_SZ "weitekp9"
+
+ Xga
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video
+ ErrorControl = SC_Error_Ignore
+ Device0
+ VgaCompatible = False
+ Monitor = REG_SZ drivers\vga.bvp
+ InstalledDisplayDrivers = REG_MULTI_SZ "xga" "vga256"
+
+ VgaStart
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video Init
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ \SystemRoot\System32\drivers\vga.sys
+ Device0
+ VgaCompatible = True
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga"
+ ForceVga = True
+
+ VgaSave
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = Video Save
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ \SystemRoot\System32\drivers\vga.sys
+ Device0
+ VgaCompatible = True
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga"
+
+ //
+ // Ndis drivers
+ //
+
+ NDIS
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = NDIS
+ DisplayName = Microsoft NDIS System Driver
+ ErrorControl = SC_Error_Normal
+ MediaTypes
+ Parameters
+ ProcessorAffinityMask = REG_DWORD 0xffffffff
+ NetDetect
+ EISA
+ BONSAI
+ Id = REG_DWORD 0x0062110e
+ Mask = REG_DWORD 0x00ffffff
+ token = BONSAI
+ DE425
+ Id = REG_DWORD 0x5042a310
+ Mask = REG_DWORD 0xf0ffffff
+ token = DE425
+ DEC300
+ Id = REG_DWORD 0x0230a310
+ Mask = REG_DWORD 0x0fffffff
+ token = DEC300
+ DEC422
+ Id = REG_DWORD 0x2042a310
+ Mask = REG_DWORD 0xf0ffffff
+ token = DEC422
+ DURANGO
+ Id = REG_DWORD 0x0260110e
+ Mask = REG_DWORD 0x0fffffff
+ token = DURANGO
+ ELNK3EISA
+ Id = REG_DWORD 0x90506d50
+ Mask = REG_DWORD 0xf0ffffff
+ token = ELNK3EISA
+ MAPLE
+ Id = REG_DWORD 0x0160110e
+ Mask = REG_DWORD 0x0fffffff
+ token = MAPLE
+ NE3200
+ Id = REG_DWORD 0x0007cc3a
+ Mask = REG_DWORD 0x00ffffff
+ token = NE3200
+ NETFLX
+ Id = REG_DWORD 0x0061110e
+ Mask = REG_DWORD 0x00ffffff
+ token = NETFLX
+ NPEISA.1
+ id = REG_DWORD 0x0002093a
+ Mask = REG_DWORD 0x00ffffff
+ token = NPEISA
+ NPEISA.2
+ id = REG_DWORD 0x0003093a
+ Mask = REG_DWORD 0x00ffffff
+ token = NPEISA
+ P1990
+ Id = REG_DWORD 0x00604f42
+ Mask = REG_DWORD 0x00ffffff
+ token = P1990
+ RODAN
+ Id = REG_DWORD 0x0063110e
+ Mask = REG_DWORD 0x00ffffff
+ token = RODAN
+ MCA
+ EE16MC
+ token = EE16MC
+ Id = REG_DWORD 0x0000628b
+ ELNK3MCA.1
+ token = ELNK3MCA
+ Id = REG_DWORD 0x0000627c
+ ELNK3MCA.2
+ token = ELNK3MCA
+ Id = REG_DWORD 0x0000627d
+ ELNK3MCA.3
+ token = ELNK3MCA
+ Id = REG_DWORD 0x000061db
+ ELNK3MCA.4
+ token = ELNK3MCA
+ Id = REG_DWORD 0x000062f6
+ ELNK3MCA.5
+ token = ELNK3MCA
+ Id = REG_DWORD 0x000062f7
+ ELNKMC
+ token = ELNKMC
+ Id = REG_DWORD 0x00006042
+ IBMTOKA
+ token = IBMTOKA
+ Id = REG_DWORD 0x0000e000
+ IBMTOKMC
+ token = IBMTOKMC
+ Id = REG_DWORD 0x0000e001
+ NPMCA
+ token = NPMCA
+ Id = REG_DWORD 0x00000069
+ UBPS
+ token = UBPS
+ Id = REG_DWORD 0x00007012
+ WD8003EA
+ token = WD8003EA
+ Id = REG_DWORD 0x000067c0
+ WD8003WA
+ token = WD8003WA
+ Id = REG_DWORD 0x000067c2
+ WD8013EPA
+ token = WD8013EPA
+ Id = REG_DWORD 0x000061c8
+ WD8013WPA
+ token = WD8013WPA
+ Id = REG_DWORD 0x000061c9
+ PCI
+ AMDPCI
+ token = AMDPCI
+ Id = REG_DWORD 0x20001022
+ DC21040
+ token = DC21040
+ Id = REG_DWORD 0x00021011
+ DC21041
+ token = DC21041
+ Id = REG_DWORD 0x00141011
+ DC21140
+ token = DC21140
+ Id = REG_DWORD 0x00091011
+ DC21142
+ token = DC21142
+ Id = REG_DWORD 0x00191011
+ DEFPA
+ token = DEFPA
+ Id = REG_DWORD 0x000f1011
+
+ //
+ // Parallel arbitrator drivers
+ //
+
+ Parport
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_AutoLoad
+ Group = Parallel arbitrator
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000001
+
+ //
+ // PnP ISA enabler driver (pnpisa.sys not installed by default--user
+ // must install from drvlib to enable).
+ //
+
+ pnpisa
+ DisplayName = REG_SZ PnP ISA Enabler Driver
+ ErrorControl = SC_Error_Ignore
+ Group = Base
+ Start = SC_Start_LoadAtSystemInit
+ Tag = REG_DWORD 0x0000000e
+ Type = SC_Type_KernelDriver
+
+ //
+ // Extended base drivers
+ //
+
+ Serial
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_AutoLoad
+ Group = Extended base
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000001
+ Parameters
+
+ Parallel
+ DependOnGroup = REG_MULTI_SZ "Parallel arbitrator"
+ DependOnService = REG_MULTI_SZ "Parport"
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_AutoLoad
+ Group = Extended base
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000002
+ Parameters
+
+ ParVdm
+ DependOnGroup = REG_MULTI_SZ "Parallel arbitrator"
+ DependOnService = REG_MULTI_SZ "Parport"
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_AutoLoad
+ Group = Extended base
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000002
+ Parameters
+
+ Scsiprnt
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_AutoLoad
+ Group = Extended base
+ ErrorControl = SC_Error_Ignore
+ DependOnGroup = REG_MULTI_SZ "SCSI miniport"
+ Tag = REG_DWORD 0x00000003
+
+ PCIDump
+ Type = SC_Type_KernelDriver
+ Start = SC_Start_LoadAtSystemInit
+ Group = PCI Configuration
+ ErrorControl = SC_Error_Ignore
+ Tag = REG_DWORD 0x00000001
+
+ Pcmcia
+ ErrorControl = REG_DWORD 0x00000001
+ Group = System Bus Extender
+ Start = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000001
+ Type = REG_DWORD 0x00000001
+ DataBase
+ 3Com Corporation
+ 3C589
+ Driver = elnk3
+ Option = ELNK3ISA509
+ InfFileName = oemnade3.inf
+ DeviceType = NET
+ Accton
+ EN2212
+ DeviceType = NET
+ Driver = ne2000
+ InfFileName = oemnadzz.inf
+ Option = ACCTONEN2216
+
+ EN2216-PCMCIA-ETHERNET
+ DeviceType = NET
+ Driver = ne2000
+ InfFileName = oemnadzz.inf
+ Option = ACCTONEN2216
+
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+
+ Compaq
+ Ethernet LAN Card
+ AttributeMemorySize = REG_DWORD 0x00001000
+ DeviceType = NET
+ Driver = cpqndis
+ InfFileName = oemnadzz.inf
+
+ D-Link
+ DE-650
+ Driver = ne2000
+ DeviceType = NET
+ Option = DLINKDE650
+ InfFileName = oemnadzz.inf
+
+ Diehl ISDN
+ ISDN-DIVA/PCM
+ DeviceType = NET
+ Driver = Diehl_DIVA_TED5ES
+
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+
+ IBM
+ TOKEN RING
+ Driver = REG_SZ ibmtok
+ DeviceType = REG_SZ NET
+ InfFileName = REG_SZ oemnadtk.inf
+ Option = REG_SZ IBMTOK
+
+ IBM Corp.
+ Ethernet
+ AttributeMemorySize = REG_DWORD 0x1000
+ CardMemorySize = REG_DWORD 0
+ Driver = ne2000
+ Option = NE2000IBMCOMPAT
+ InfFileName = oemnadni.inf
+ DeviceType = NET
+
+ Kingston Technology Corp.
+ EtheRx
+ AttributeMemorySize = REG_DWORD 0x1000
+ CardMemorySize = REG_DWORD 0
+ Driver = ne2000
+ Option = NE2000IBMCOMPAT
+ InfFileName = oemnadni.inf
+ DeviceType = NET
+
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+
+ MADGE
+ SMART 16/4 PCMCIA RINGNODE
+ Driver = madgemport
+ Option = MSMDGMPPCMCIA
+ InfFileName = oemnadma.inf
+ DeviceType = NET
+
+ Microdyne
+ NE4200
+ AttributeMemorySize = REG_DWORD 0x1000
+ CardMemorySize = REG_DWORD 0
+ Driver = ne2000
+ Option = NE2000IBMCOMPAT
+ InfFileName = oemnadni.inf
+ DeviceType = NET
+
+ National Semiconductor
+ InfoMover NE4100
+ AttributeMemorySize = REG_DWORD 0x1000
+ CardMemorySize = REG_DWORD 0
+ Driver = ne2000
+ Option = NE2000IBMCOMPAT
+ InfFileName = oemnadni.inf
+ DeviceType = NET
+
+ OLICOM
+ TR 16/4 II
+ DeviceType = NET
+ Driver = octk16
+ Option = PCMCIA
+ InfFileName = oemnadzz.inf
+
+ ETHERCOM
+ DeviceType = NET
+ Driver = oce2xm
+ Option = GOCARD
+ InfFileName = oemnadzz.inf
+
+ Socket Communications Inc
+ Socket EA PCMCIA LAN Adapter Revision D
+ AttributeMemorySize = REG_DWORD 0
+ CardMemorySize = REG_DWORD 0
+ Driver = ne2000
+ Option = NE2000SOCKETEA
+ InfFileName = oemnadn2.inf
+ DeviceType = NET
+
+ Socket EA PCMCIA LAN Adapter Revision E
+ AttributeMemorySize = REG_DWORD 0
+ CardMemorySize = REG_DWORD 0
+ Driver = ne2000
+ Option = NE2000SOCKETEA
+ InfFileName = oemnadn2.inf
+ DeviceType = NET
+
+ Xircom
+ CreditCard 10Base-T
+ Option =
+ InfFileName = oemnadzz.inf
+ DeviceType = NET
+ 5331
+ Driver = ce2xps
+ AttributeMemorySize = REG_DWORD 0x1000
+
+ 5FFA
+ Driver = cendis3
+ AttributeMemorySize = REG_DWORD 0x1000
+
+ 64BA
+ AttributeMemorySize = REG_DWORD 0x1000
+ Driver = REG_SZ ce2xps
+
+ 9C9B
+ Driver = cendis3
+ AttributeMemorySize = REG_DWORD 0x1000
+
+ 9F5B
+ Driver = ce2ndis3
+ AttributeMemorySize = REG_DWORD 0x1000
+
+ 9FAB
+ Driver = cendis3
+ AttributeMemorySize = REG_DWORD 0x1000
+
+ B00D
+ Driver = cendis3
+ AttributeMemorySize = REG_DWORD 0x1000
+
+ CreditCard Ethernet+Modem 28.8
+ AttributeMemorySize = REG_DWORD 0x1000
+ DeviceType = NET
+ Driver = cem28xps
+ InfFileName = oemnadzz.inf
+
+ CreditCard Ethernet+Modem II
+ Driver = cm2ndis3
+ AttributeMemorySize = REG_DWORD 0x1000
+ Option =
+ InfFileName = oemnadzz.inf
+ DeviceType = NET
+
+ CreditCard Token Ring
+ Driver = ctndnt
+ AttributeMemorySize = REG_DWORD 0x1000
+ Option =
+ InfFileName = oemnadzz.inf
+ DeviceType = NET
+
+ Parameters
+ Interrupt = REG_DWORD 0x00000000
+
+
+ //
+ // Other file systems
+ //
+
+ Ntfs
+ Type = SC_Type_FileSystem
+ Start = SC_Start_DisableLoad
+ Group = File system
+ ErrorControl = SC_Error_Normal
+
+#if defined(_CAIRO_)
+ Ofs
+ Type = SC_Type_FileSystem
+ Start = SC_Start_DisableLoad
+ Group = File system
+ ErrorControl = SC_Error_Normal
+#endif // defined(_CAIRO_)
+
+ Npfs
+ Type = SC_Type_FileSystem
+ Start = SC_Start_LoadAtSystemInit
+ Group = File system
+ ErrorControl = SC_Error_Normal
+ Aliases
+#ifdef _CAIRO_
+ lsass = REG_MULTI_SZ "lsarpc" "samr"
+#else
+ lsass = REG_MULTI_SZ "netlogon" "lsarpc" "samr"
+#endif
+ ntsvcs = REG_MULTI_SZ "srvsvc" "wkssvc" "eventlog" "browser" "msgsvc" "svcctl"
+
+ Msfs
+ Type = SC_Type_FileSystem
+ Start = SC_Start_LoadAtSystemInit
+ Group = File system
+ ErrorControl = SC_Error_Normal
+
+ Cdfs
+ Type = SC_Type_FileSystem
+ Start = SC_Start_DisableLoad
+ Group = File system
+ ErrorControl = SC_Error_Normal
+ DependOnGroup = REG_MULTI_SZ "SCSI CDROM Class"
+
+ Schedule
+ Type = SC_Type_Win32ServiceOwnProcess
+ Start = SC_Start_DemandLoad
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\System32\AtSvc.Exe
+ ObjectName = REG_SZ LocalSystem
+
+ UPS
+ Type = SC_Type_Win32ServiceOwnProcess
+ Start = SC_Start_DemandLoad
+ ErrorControl = SC_Error_Normal
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\System32\ups.exe
+ ObjectName = REG_SZ LocalSystem
+
+ WinTrust [AdminFull SystemFull WorldR]
+ SubjectPackages
+ MS Subjects 1
+ $DLL = REG_EXPAND_SZ %SystemRoot%\system32\MsSip1.dll
+ MS Subjects 2
+ $DLL = REG_EXPAND_SZ %SystemRoot%\system32\MsSip2.dll
+ MS Subjects 3
+ $DLL = REG_EXPAND_SZ %SystemRoot%\system32\MsSip3.dll
+ TrustProviders
+ Software Publisher
+ $DLL = REG_EXPAND_SZ %SystemRoot%\system32\SoftPub.dll
+
+
+ Setup [WorldR AdminFull SystemFull CreatorFull]
+
+ SetupType = SETUPTYPE_RETAIL
+ CmdLine = setup -g -s a:\ -t STF_INSTALL_MODE = CUSTOM -t STF_UPGRADE = NO
+ SystemSetupInProgress = True
+
+#if defined(_CAIRO_)
+ //
+ // BUGBUG - This value entry should be removed after Cairo and NT 3.51 get merged.
+ // This value will prevent textmode setup from finding NT 3.x systems
+ // to upgrade to Cairo.
+ //
+ CairoSystem = REG_DWORD 1
+#endif
diff --git a/public/oak/bin/system.log b/public/oak/bin/system.log
new file mode 100644
index 000000000..655795495
--- /dev/null
+++ b/public/oak/bin/system.log
@@ -0,0 +1,2617 @@
+SYSTEM
+ Select [8 1 17 5]
+ Current = REG_DWORD 0x00000000
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
+ ControlSet001 [8 1 17 5]
+ Control [16 8 1 17 5]
+ WaitToKillServiceTimeout = 20000
+ BootVerificationProgram
+ Update
+ UpdateMode = REG_DWORD 0x00000001
+ Class
+ {4D36E968-E325-11CE-BFC1-08002BE10318}
+ = Display adapters
+ Class = Display
+ Icon = -1
+ Installer32 = Desk.Cpl,DisplayClassInstaller
+ {4D36E96B-E325-11CE-BFC1-08002BE10318}
+ = Keyboard
+ Class = Keyboard
+ Icon = -3
+ Installer32 = SysSetup.Dll,KeyboardClassInstaller
+ {4D36E96C-E325-11CE-BFC1-08002BE10318}
+ = Sound, video and game controllers
+ Class = MEDIA
+ Icon = 3004
+ Installer32 = MmSys.Cpl,MediaClassInstaller
+ {4D36E96D-E325-11CE-BFC1-08002BE10318}
+ = Modem
+ Class = Modem
+ Default Service = Modem
+ Icon = 0
+ Installer32 = Modem.Cpl,ClassInstall32
+ {4D36E96F-E325-11CE-BFC1-08002BE10318}
+ = Mouse
+ Class = Mouse
+ Icon = -2
+ Installer32 = SysSetup.Dll,MouseClassInstaller
+ {4D36E972-E325-11CE-BFC1-08002BE10318}
+ = Network adapters
+ Class = Net
+ Icon = -5
+ {4D36E978-E325-11CE-BFC1-08002BE10318}
+ = Ports (COM & LPT)
+ Class = Ports
+ Installer32 = Ports.Cpl,PortsClassInstaller
+ {4D36E979-E325-11CE-BFC1-08002BE10318}
+ = Printer
+ Class = Printer
+ Icon = -4
+ NoDisplayClass = 1
+ {4D36E97B-E325-11CE-BFC1-08002BE10318}
+ = SCSI controllers
+ Class = SCSIAdapter
+ Icon = -10
+ Installer32 = SysSetup.Dll,ScsiClassInstaller
+ LegacyInfOption = SCSI
+ {4D36E97E-E325-11CE-BFC1-08002BE10318}
+ = Other devices
+ Class = Unknown
+ Icon = -18
+ {6D807884-7D21-11CF-801C-08002BE10318}
+ = Tape drives
+ Class = TapeDrive
+ Icon = 1610
+ Installer32 = SysSetup.Dll,TapeClassInstaller
+ LegacyInfOption = TAPE
+ IDConfigDB
+ CurrentConfig = REG_DWORD 0x00000001
+ PropertyProviders = REG_MULTI_SZ "profext.dll"
+ UserWaitInterval = REG_DWORD 0x0000001e
+ Hardware Profiles
+ 0001
+ FriendlyName = Original Configuration
+ PreferenceOrder = REG_DWORD 0x00000000
+ CrashControl
+ LogEvent = REG_DWORD 0x00000000
+ SendAlert = REG_DWORD 0x00000000
+ CrashDumpEnabled = REG_DWORD 0x00000000
+ AutoReboot = REG_DWORD 0x00000000
+ DumpFile = REG_EXPAND_SZ %SystemRoot%\MEMORY.DMP
+ Overwrite = REG_DWORD 0x00000001
+ FileSystem
+ Win31FileSystem = REG_DWORD 0x00000000
+ NtfsDisable8dot3NameCreation = REG_DWORD 0x00000000
+ Win95TruncatedExtensions = REG_DWORD 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "System Bus Extender" \
+ "SCSI miniport" \
+ "port" \
+ "Primary disk" \
+ "SCSI class" \
+ "SCSI CDROM class" \
+ "filter" \
+ "boot file system" \
+ "Base" \
+ "Pointer Port" \
+ "Keyboard Port" \
+ "Pointer Class" \
+ "Keyboard Class" \
+ "Video Init" \
+ "Video" \
+ "Video Save" \
+ "file system" \
+ "Event log" \
+ "Streams Drivers" \
+ "PNP_TDI" \
+ "NDIS" \
+ "TDI" \
+ "NetBIOSGroup" \
+ "SpoolerGroup" \
+ "NetDDEGroup" \
+ "Parallel arbitrator" \
+ "extended base" \
+ "RemoteValidation" \
+ "PCI Configuration"
+ GroupOrderList
+ System Bus Extender = REG_BINARY 0x00000008 0x00000001 0x00000001
+ SCSI miniport = REG_BINARY 0x0000009c 0x00000026 0x00000100 0x00000101 0x00000019 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b 0x0000000c \
+ 0x0000000d 0x0000000e 0x0000000f 0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015 0x00000016 0x00000017 0x0000001a 0x00000018 0x0000001b 0x0000001c 0x0000001d 0x0000001e 0x0000001f \
+ 0x00000020 0x00000023 0x00000024 0x00000025 0x00000026
+ Primary Disk = REG_BINARY 0x00000014 0x00000004 0x00000001 0x00000002 0x00000003 0x00000004
+ Base = REG_BINARY 0x0000003c 0x0000000e 0x0000000e 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000d
+ Keyboard Port = REG_BINARY 0x00000008 0x00000001 0x00000001
+ Pointer Port = REG_BINARY 0x00000010 0x00000003 0x00000001 0x00000002 0x00000003
+ Keyboard Class = REG_BINARY 0x00000008 0x00000001 0x00000001
+ Pointer Class = REG_BINARY 0x00000008 0x00000001 0x00000001
+ Video Init = REG_BINARY 0x00000008 0x00000001 0x00000001
+ Video = REG_BINARY 0x00000004 0x00000000
+ Video Save = REG_BINARY 0x00000008 0x00000001 0x00000001
+ Ndis = REG_BINARY 0x00000028 0x00000009 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009
+ Filter = REG_BINARY 0x0000001c 0x00000006 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006
+ Parallel arbitrator = REG_BINARY 0x00000008 0x00000001 0x00000001
+ Extended base = REG_BINARY 0x00000014 0x00000004 0x00000001 0x00000002 0x00000003 0x00000004
+ SpoolerGroup = REG_BINARY 0x0000000c 0x00000002 0x00000001 0x00000002
+ SCSI Class = REG_BINARY 0x00000010 0x00000003 0x00000001 0x00000002 0x00000003
+ SCSI CDROM Class = REG_BINARY 0x0000000c 0x00000002 0x00000001 0x00000002
+ SecurePipeServers
+ winreg [1]
+ Description = Registry Server
+ AllowedPaths
+ Machine = REG_MULTI_SZ "System\CurrentControlSet\Control\ProductOptions" \
+ "System\CurrentControlSet\Control\Print\Printers" \
+ "System\CurrentControlSet\Services\Eventlog" \
+ "Software\Microsoft\Windows NT\CurrentVersion"
+ SecurityProviders
+ SecurityProviders = schannel.dll
+ Session Manager
+ ObjectDirectories = REG_MULTI_SZ "\Windows" \
+ "\RPC Control"
+ GlobalFlag = REG_DWORD 0x00000000
+ ProtectionMode = REG_DWORD 0x00000000
+ BootExecute = REG_MULTI_SZ "autocheck autochk *"
+ EnableMCE = REG_DWORD 0x00000000
+ EnableMCA = REG_DWORD 0x00000001
+ HeapSegmentReserve = REG_DWORD 0x00000000
+ HeapSegmentCommit = REG_DWORD 0x00000000
+ HeapDeCommitTotalFreeThreshold = REG_DWORD 0x00000000
+ HeapDeCommitFreeBlockThreshold = REG_DWORD 0x00000000
+ CriticalSectionTimeout = REG_DWORD 0x00278d00
+ ResourceTimeoutCount = REG_DWORD 0x0009e340
+ FileRenameOperations
+ Executive [8 1 15 12 17 5]
+ AdditionalCriticalWorkerThreads = REG_DWORD 0x00000000
+ AdditionalDelayedWorkerThreads = REG_DWORD 0x00000000
+ Memory Management [8 1 17]
+ PagedPoolSize = REG_DWORD 0x00000000
+ NonPagedPoolSize = REG_DWORD 0x00000000
+ PagedPoolQuota = REG_DWORD 0x00000000
+ NonPagedPoolQuota = REG_DWORD 0x00000000
+ IoPageLockLimit = REG_DWORD 0x00000000
+ LargeSystemCache = REG_DWORD 0x00000000
+ PagingFiles = REG_MULTI_SZ "?:\pagefile.sys 15 60"
+ SystemPages = REG_DWORD 0x00000000
+ SecondLevelDataCache = REG_DWORD 0x00000000
+ DisablePagingExecutive = REG_DWORD 0x00000000
+ ClearPageFileAtShutdown = REG_DWORD 0x00000000
+ DOS Devices
+ PRN = \DosDevices\LPT1
+ AUX = \DosDevices\COM1
+ NUL = \Device\Null
+ PIPE = \Device\NamedPipe
+ MAILSLOT = \Device\MailSlot
+ UNC = \Device\Mup
+ Environment
+ ComSpec = REG_EXPAND_SZ %SystemRoot%\system32\cmd.exe
+ Os2LibPath = REG_EXPAND_SZ %SystemRoot%\system32\os2\dll;
+ Path = REG_EXPAND_SZ %SystemRoot%\system32
+ windir = REG_EXPAND_SZ %SystemRoot%
+ ExcludeFromKnownDlls = REG_MULTI_SZ
+ KnownDLLs
+ DllDirectory = REG_EXPAND_SZ %SystemRoot%\system32
+ kernel32 = kernel32.dll
+ gdi32 = gdi32.dll
+ user32 = user32.dll
+ rpcrt4 = rpcrt4.dll
+ advapi32 = advapi32.dll
+ comdlg32 = comdlg32.dll
+ crtdll = crtdll.dll
+ shell32 = shell32.dll
+ lz32 = lz32.dll
+ olecli32 = olecli32.dll
+ olesvr32 = olesvr32.dll
+ version = version.dll
+ ole32 = ole32.dll
+ oleaut32 = oleaut32.dll
+ olecnv32 = olecnv32.dll
+ olethk32 = olethk32.dll
+ SubSystems
+ Required = REG_MULTI_SZ "Debug" \
+ "Windows"
+ Optional = REG_MULTI_SZ "Os2" \
+ "Posix"
+ Debug = REG_EXPAND_SZ
+ Windows = REG_EXPAND_SZ %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 \
+ ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off \
+ MaxRequestThreads=16
+ Kmode = REG_EXPAND_SZ %SystemRoot%\system32\win32k.sys
+ Os2 = REG_EXPAND_SZ %SystemRoot%\system32\os2ss.exe
+ Posix = REG_EXPAND_SZ %SystemRoot%\system32\psxss.exe
+ AppPatches
+ CWD
+ ff060102423da0000407108e0500
+ 1
+ Add1 = REG_BINARY 0x00000015 0xa0401502 0x23b81e10 0x8bd88e00 0x8107140e 0x1f0200e1 0x000000c3
+ Change1 = REG_BINARY 0x0000001d 0x48501d01 0xec8b550c 0x9c0000b8 0x00e18159 0xec8b5502 0xe80000b8 0x909057e7 0x00000090
+ MYST
+ ff060102423bab000407102e0600
+ 1
+ Add1 = REG_BINARY 0x00000015 0xab401502 0x23b81e10 0x8bd88e00 0x8107140e 0x1f0200e1 0x000000c3
+ Change1 = REG_BINARY 0x0000001d 0x49501d01 0xec8b550c 0x9c0000b8 0x00e18159 0xec8b5502 0xe80000b8 0x909061e7 0x00000090
+ PALED40
+ ff060102420032000407401b0100
+ 1
+ Change1 = REG_BINARY 0x00000007 0x21b70701 0x000cd801
+ USA
+ ff06010242059b00040710780600
+ 1
+ Change1 = REG_BINARY 0x0000001d 0x44951d01 0xec8b550c 0x9c0000b8 0x00e18159 0xec8b5502 0xe80000b8 0x90905667 0x00000090
+ Change2 = REG_BINARY 0x00000025 0x9b052501 0x00000010 0x00000000 0x00000000 0x00000000 0x23b81e00 0x8bd88e00 0x8107140e 0x1f0200e1 0x000000c3
+ VB
+ ff060102ec353f00040780c81300
+ 12
+ Change1 = REG_BINARY 0x00000011 0x031b1101 0xba3e8106 0x81033431 0x0931ba3e 0x00000003
+ VB40016
+ ff0702021401ee3e000407d0460e00
+ 16
+ Change1 = REG_BINARY 0x00000011 0x2a6d1101 0x6e3e8106 0x81033436 0x09366e3e 0x00000003
+ ProductOptions [8 17 1 5]
+ ProductType = WinNt
+ CurrentUser = USERNAME
+ TimeZoneInformation [8 1 15 12 17 5]
+ Bias = REG_DWORD 0x00000000
+ ComputerName
+ ComputerName
+ ComputerName = MACHINENAME
+ PriorityControl [9 1 17 5]
+ Win32PrioritySeparation = REG_DWORD 0x00000002
+ Windows [8 1 17 15]
+ Directory = REG_EXPAND_SZ %SystemRoot%
+ SystemDirectory = REG_EXPAND_SZ %SystemRoot%\system32
+ ErrorMode = REG_DWORD 0x00000000
+ NoInteractiveServices = REG_DWORD 0x00000000
+ CSDVersion = REG_DWORD 0x00000100
+ WOW
+ cmdline = REG_EXPAND_SZ %SystemRoot%\system32\ntvdm.exe
+ size = 0
+ wowcmdline = REG_EXPAND_SZ %SystemRoot%\system32\ntvdm.exe -a %SystemRoot%\system32\krnl386
+ wowsize = 64
+ DefaultSeparateVDM = no
+ LPT_timeout = 15
+ KnownDLLs = comm.drv commdlg.dll ctl3dv2.dll ddeml.dll keyboard.drv lanman.drv mapi.dll mmsystem.dll mouse.drv netapi.dll olecli.dll olesvr.dll pmspl.dll shell.dll sound.drv system.drv toolhelp.dll vga.drv wfwnet.drv \
+ win87em.dll winoldap.mod winsock.dll winspool.exe wowdeb.exe timer.drv rasapi16.dll compobj.dll storage.dll ole2.dll ole2disp.dll ole2nls.dll typelib.dll msvideo.dll avifile.dll msacm.dll mciavi.drv \
+ mciseq.drv mciwave.drv progman.exe \
+ avicap.dll
+ VirtualDeviceDrivers
+ VDD = REG_MULTI_SZ
+ Lsa [8 1 17 5]
+ Authentication Packages = REG_MULTI_SZ "msv1_0"
+ Bounds = REG_BINARY 0x00000008 0x00003000 0x00002000
+ Notification Packages = REG_MULTI_SZ "FPNWCLNT"
+ MSV1_0
+ Auth1 = FPNWCLNT
+ GraphicsDrivers [8 1 17]
+ DCI
+ Timeout = REG_DWORD 0x00000007
+ DetectDisplay
+ Nls
+ CodePage
+ 1250 = c_1250.nls
+ 1251 = c_1251.nls
+ 1252 = c_1252.nls
+ 1253 = c_1253.nls
+ 1254 = c_1254.nls
+ 1255 = c_1255.nls
+ 1256 = c_1256.nls
+ 1257 = c_1257.nls
+ 1258 =
+ 437 =
+ 737 =
+ 775 =
+ 850 =
+ 852 =
+ 855 =
+ 857 =
+ 860 =
+ 861 =
+ 863 =
+ 865 =
+ 866 =
+ 869 =
+ 10000 =
+ 10006 =
+ 10007 =
+ 10029 =
+ 10079 =
+ 10081 =
+ 37 =
+ 500 =
+ 875 =
+ 1026 =
+ 20261 = c_20261.nls
+ Language
+ 0409 = l_intl.nls
+ 0809 = l_intl.nls
+ 0c09 = l_intl.nls
+ 1009 = l_intl.nls
+ 1409 = l_intl.nls
+ 1809 = l_intl.nls
+ 1c09 = l_intl.nls
+ 2009 = l_intl.nls
+ 2409 = l_intl.nls
+ 2809 = l_intl.nls
+ 2c09 = l_intl.nls
+ 0402 = l_intl.nls
+ 0405 = l_intl.nls
+ 0406 = l_intl.nls
+ 0407 = l_intl.nls
+ 0807 = l_intl.nls
+ 0c07 = l_intl.nls
+ 1007 = l_intl.nls
+ 1407 = l_intl.nls
+ 0408 = l_intl.nls
+ 040a = l_intl.nls
+ 080a = l_intl.nls
+ 0c0a = l_intl.nls
+ 100a = l_intl.nls
+ 140a = l_intl.nls
+ 180a = l_intl.nls
+ 1c0a = l_intl.nls
+ 200a = l_intl.nls
+ 240a = l_intl.nls
+ 280a = l_intl.nls
+ 2c0a = l_intl.nls
+ 300a = l_intl.nls
+ 340a = l_intl.nls
+ 380a = l_intl.nls
+ 3c0a = l_intl.nls
+ 400a = l_intl.nls
+ 440a = l_intl.nls
+ 480a = l_intl.nls
+ 4c0a = l_intl.nls
+ 500a = l_intl.nls
+ 040b = l_intl.nls
+ 040c = l_intl.nls
+ 080c = l_intl.nls
+ 0c0c = l_intl.nls
+ 100c = l_intl.nls
+ 140c = l_intl.nls
+ 040e = l_intl.nls
+ 040f = l_intl.nls
+ 0410 = l_intl.nls
+ 0810 = l_intl.nls
+ 0413 = l_intl.nls
+ 0813 = l_intl.nls
+ 0414 = l_intl.nls
+ 0814 = l_intl.nls
+ 0415 = l_intl.nls
+ 0416 = l_intl.nls
+ 0816 = l_intl.nls
+ 0418 = l_intl.nls
+ 0419 = l_intl.nls
+ 041a = l_intl.nls
+ 081a = l_intl.nls
+ 0c1a = l_intl.nls
+ 041b = l_intl.nls
+ 041d = l_intl.nls
+ 081d = l_intl.nls
+ 041f = l_intl.nls
+ 0424 = l_intl.nls
+ 0436 = l_intl.nls
+ 041c = l_intl.nls
+ 042d = l_intl.nls
+ 0423 = l_intl.nls
+ 0403 = l_intl.nls
+ 0425 = l_intl.nls
+ 0438 = l_intl.nls
+ 0421 = l_intl.nls
+ 0426 = l_intl.nls
+ 0427 = l_intl.nls
+ 0422 = l_intl.nls
+ Keyboard Layouts
+ 0000041C
+ Layout Text = Albanian
+ Layout File = KBDAL.DLL
+ 00000423
+ Layout Text = Belarusian
+ Layout File = KBDBLR.DLL
+ 00000813
+ Layout Text = Belgian Dutch
+ Layout File = KBDBE.DLL
+ 0000080C
+ Layout Text = Belgian French
+ Layout File = KBDBE.DLL
+ 00000416
+ Layout Text = Brazilian (ABNT)
+ Layout File = KBDBR.DLL
+ 00010402
+ Layout Text = Bulgarian (Latin)
+ Layout File = KBDUS.DLL
+ Layout Id = 0004
+ 00000402
+ Layout Text = Bulgarian
+ Layout File = KBDBU.DLL
+ 00001009
+ Layout Text = Canadian English (Multilingual)
+ Layout File = KBDCA.DLL
+ 00000C0C
+ Layout Text = Canadian French
+ Layout File = KBDFC.DLL
+ 00010C0C
+ Layout Text = Canadian French (Multilingual)
+ Layout File = KBDCA.DLL
+ Layout Id = 0085
+ 0000041a
+ Layout Text = Croatian
+ Layout File = KBDCR.DLL
+ 00000405
+ Layout Text = Czech
+ Layout File = KBDCZ.DLL
+ 00010405
+ Layout Text = Czech (QWERTY)
+ Layout File = KBDCZ1.DLL
+ Layout Id = 0005
+ 00000406
+ Layout Text = Danish
+ Layout File = KBDDA.DLL
+ 00000413
+ Layout Text = Dutch
+ Layout File = KBDNE.DLL
+ 00000425
+ Layout Text = Estonian
+ Layout File = KBDEST.DLL
+ 0000040B
+ Layout Text = Finnish
+ Layout File = KBDFI.DLL
+ 0000040C
+ Layout Text = French
+ Layout File = KBDFR.DLL
+ 00000407
+ Layout Text = German
+ Layout File = KBDGR.DLL
+ 00010407
+ Layout Text = German (IBM)
+ Layout File = KBDGR1.DLL
+ Layout Id = 0012
+ 00000408
+ Layout Text = Greek
+ Layout File = KBDHE.DLL
+ 00050408
+ Layout Text = Greek Latin
+ Layout File = KBDGKL.DLL
+ Layout Id = 0019
+ 00010408
+ Layout Text = Greek (220)
+ Layout File = KBDHE220.DLL
+ Layout Id = 0016
+ 00020408
+ Layout Text = Greek (319)
+ Layout File = KBDHE319.DLL
+ Layout Id = 0018
+ 00030408
+ Layout Text = Greek (220) Latin
+ Layout File = KBDHELA2.DLL
+ Layout Id = 0017
+ 00040408
+ Layout Text = Greek (319) Latin
+ Layout File = KBDHELA3.DLL
+ Layout Id = 0011
+ 0000040E
+ Layout Text = Hungarian
+ Layout File = KBDHU.DLL
+ 0001040E
+ Layout Text = Hungarian 101-key
+ Layout File = KBDHU1.DLL
+ Layout Id = 0006
+ 0000040F
+ Layout Text = Icelandic
+ Layout File = KBDIC.DLL
+ 00001809
+ Layout Text = Irish
+ Layout File = KBDIR.DLL
+ 00000410
+ Layout Text = Italian
+ Layout File = KBDIT.DLL
+ 00010410
+ Layout Text = Italian (142)
+ Layout File = KBDIT142.DLL
+ Layout Id = 0003
+ 0000080A
+ Layout Text = Latin American
+ Layout File = KBDLA.DLL
+ 00000426
+ Layout Text = Latvian
+ Layout File = KBDLV.DLL
+ 00010426
+ Layout Text = Latvian (QWERTY)
+ Layout File = KBDLV1.DLL
+ Layout Id = 0015
+ 00000427
+ Layout Text = Lithuanian
+ Layout File = KBDLT.DLL
+ 00000414
+ Layout Text = Norwegian
+ Layout File = KBDNO.DLL
+ 00000415
+ Layout Text = Polish (Programmers)
+ Layout File = KBDPL1.DLL
+ 00010415
+ Layout Text = Polish (214)
+ Layout File = KBDPL.DLL
+ Layout Id = 0007
+ 00000816
+ Layout Text = Portuguese
+ Layout File = KBDPO.DLL
+ 00000418
+ Layout Text = Romanian
+ Layout File = KBDRO.DLL
+ 00000419
+ Layout Text = Russian
+ Layout File = KBDRU.DLL
+ 00010419
+ Layout Text = Russian (Typewriter)
+ Layout File = KBDRU1.DLL
+ Layout Id = 0008
+ 00000C1A
+ Layout Text = Serbian (Cyrillic)
+ Layout File = KBDYCC.DLL
+ 00010C1A
+ Layout Text = Serbian (Latin)
+ Layout File = KBDYCL.DLL
+ Layout Id = 0009
+ 0000041B
+ Layout Text = Slovak
+ Layout File = KBDSL.DLL
+ 0001041B
+ Layout Text = Slovak (QWERTY)
+ Layout File = KBDSL1.DLL
+ Layout Id = 0013
+ 00000424
+ Layout Text = Slovenian
+ Layout File = KBDCR.DLL
+ 0000040A
+ Layout Text = Spanish
+ Layout File = KBDSP.DLL
+ 0001040A
+ Layout Text = Spanish variation
+ Layout File = KBDES.DLL
+ Layout Id = 0086
+ 0000041D
+ Layout Text = Swedish
+ Layout File = KBDSW.DLL
+ 0000100C
+ Layout Text = Swiss French
+ Layout File = KBDSF.DLL
+ 00000807
+ Layout Text = Swiss German
+ Layout File = KBDSG.DLL
+ 0001041F
+ Layout Text = Turkish F
+ Layout File = KBDTUF.DLL
+ Layout Id = 0014
+ 0000041F
+ Layout Text = Turkish Q
+ Layout File = KBDTUQ.DLL
+ 00000422
+ Layout Text = Ukrainian
+ Layout File = KBDUR.DLL
+ 00000809
+ Layout Text = United Kingdom
+ Layout File = KBDUK.DLL
+ 00000409
+ Layout Text = US
+ Layout File = KBDUS.DLL
+ 00010409
+ Layout Text = US-Dvorak
+ Layout File = KBDDV.DLL
+ Layout Id = 0002
+ 00030409
+ Layout Text = US-Dvorak for left hand
+ Layout File = KBDUSL.DLL
+ Layout Id = 001A
+ 00040409
+ Layout Text = US-Dvorak for right hand
+ Layout File = KBDUSR.DLL
+ Layout Id = 001B
+ 00020409
+ Layout Text = US-International
+ Layout File = KBDUSX.DLL
+ Layout Id = 0001
+ Keyboard Layout
+ DosKeybCodes
+ 0000080C = be
+ 00000813 = be
+ 00000402 = bg
+ 00000416 = br
+ 00000C0C = cf
+ 00000405 = cz
+ 0000041B = sl
+ 00000406 = dk
+ 0000040B = su
+ 0000040C = fr
+ 00000408 = gk
+ 00010408 = gk
+ 00020408 = gk
+ 00000407 = gr
+ 0000040E = hu
+ 00000410 = it
+ 00010410 = it
+ 0000080A = la
+ 00000413 = nl
+ 00000414 = no
+ 00000415 = pl
+ 00010415 = pl
+ 00000816 = po
+ 00000418 = ro
+ 0000040A = sp
+ 0001040A = sp
+ 0000041D = sv
+ 0000100C = sf
+ 00000807 = sg
+ 0000041F = tr
+ 0001041F = tr
+ 00000809 = uk
+ 00000409 = us
+ 0000041A = yu
+ 00000424 = yu
+ 00010409 = dv
+ 00020409 = us
+ 00030409 = usl
+ 00040409 = usr
+ 00001009 = us
+ 00010C0C = cf
+ 0000040F = is
+ 00000419 = ru
+ 0000041C = us
+ 00000422 = us
+ 00000423 = us
+ 00000425 = us
+ 00000426 = us
+ 00000427 = us
+ 00000C1A = us
+ 00001809 = us
+ 00010402 = us
+ 00010405 = cz
+ 00010407 = gr
+ 00010419 = ru
+ 0001041B = sl
+ 00010426 = us
+ 00010C1A = us
+ 00050408 = gk
+ DosKeybIDs
+ 0000041F = 179
+ 0001041F = 440
+ 00000410 = 141
+ 00010410 = 142
+ 00010408 = 220
+ 00020408 = 319
+ 00010415 = 214
+ NetworkProvider
+ Order
+ Setup
+ Print
+ MajorVersion = REG_DWORD 0x00000002
+ MinorVersion = REG_DWORD 0x00000000
+ PriorityClass = REG_DWORD 0x00000000
+ Environments
+ Windows 4.0
+ Directory = WIN40
+ Drivers
+ Print Processors
+ Windows NT Alpha_AXP
+ Directory = W32ALPHA
+ Drivers
+ Print Processors
+ Windows NT PowerPC
+ Directory = W32PPC
+ Drivers
+ Print Processors
+ Windows NT R4000
+ Directory = W32MIPS
+ Drivers
+ Print Processors
+ Windows NT x86
+ Directory = W32X86
+ Drivers
+ Print Processors
+ Monitors
+ PJL Language Monitor
+ Driver = pjlmon.dll
+ Printers
+ Providers
+ Order = REG_MULTI_SZ "LanMan Print Services"
+ LanMan Print Services
+ Name = win32spl.dll
+ DisplayName = LanMan Print Services
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000294 0x00000001 0x00000001 0x00000000 0x00000000 0x00000028 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000008 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000008 0x00000301 0x000082e8 0x00000000 0x00000008 0x00000301 0x000086e8 0x00000000 0x00000008 0x00000301 0x00008ae8 0x00000000 0x00000008 0x00000301 0x00008ee8 0x00000000 0x00000008 0x00000301 0x000092e8 \
+ 0x00000000 0x00000008 0x00000301 0x000096e8 0x00000000 0x00000008 0x00000301 0x00009ae8 0x00000000 0x00000008 0x00000301 0x00009ee8 0x00000000 0x00000008 0x00000301 0x0000a2e8 0x00000000 0x00000008 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000008 0x00000301 0x0000aae8 0x00000000 0x00000008 0x00000301 0x0000aee8 0x00000000 0x00000008 0x00000301 0x0000b6e8 0x00000000 0x00000008 0x00000301 0x0000bae8 0x00000000 0x00000008 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000008 0x00000301 0x0000c2e8 0x00000000 0x00000008 0x00000301 0x0000c6e8 0x00000000 0x00000008 0x00000301 0x0000cae8 0x00000000 0x00000008 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000008 0x00000301 0x0000d2e8 0x00000000 0x00000008 0x00000301 0x0000d6e8 0x00000000 0x00000008 0x00000301 0x0000dae8 0x00000000 0x00000008 0x00000301 0x0000dee8 0x00000000 0x00000008 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000008 0x00000301 0x0000e6e8 0x00000000 0x00000008 0x00000301 0x0000eae8 0x00000000 0x00000008 0x00000301 0x0000eee8 0x00000000 0x00000008 0x00000301 0x0000f6ee 0x00000000 0x00000002 0x00000301 \
+ 0x0000faee 0x00000000 0x00000002 0x00000301 0x0000feee 0x00000000 0x00000002 0x00000302 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff \
+ 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xffbfffff 0x00000000 0x00400000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 0
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000008
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000008
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000008
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000008
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000008
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000008
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000008
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000008
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000008
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000008
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000008
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000008
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000008
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000008
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000008
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000008
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000008
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000008
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000008
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000008
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000008
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000008
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000008
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000008
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000008
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000008
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000008
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000008
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000008
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f6ee LENGTH 0x00000002
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000faee LENGTH 0x00000002
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000feee LENGTH 0x00000002
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 38
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 39
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000ffbfffff LENGTH 0x00400000
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffafffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xfff7ffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x000008e8 0x000008e8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000046 0x00000100 0x00000000 0x00000000 0x00000000 0x0000fc00 \
+ 0x00000000 0x0000fcff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000f800 0x00000000 0x0000f9ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000f400 0x00000000 0x0000f4ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x0000f000 0x00000000 0x0000f0ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000ec00 0x00000000 0x0000ecff 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x0000e800 0x00000000 0x0000e9ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000e400 0x00000000 0x0000e4ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000e000 0x00000000 \
+ 0x0000e0ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000dc00 0x00000000 0x0000dcff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000d800 0x00000000 0x0000d9ff 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x0000d400 0x00000000 0x0000d4ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000d000 0x00000000 0x0000d0ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 \
+ 0x0000cc00 0x00000000 0x0000ccff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000c800 0x00000000 0x0000c9ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000c400 0x00000000 0x0000c4ff \
+ 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000c000 0x00000000 0x0000c0ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000bc00 0x00000000 0x0000bcff 0x00000000 0x00000108 0x00000000 \
+ 0x00000000 0x00000000 0x0000b800 0x00000000 0x0000b9ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000b400 0x00000000 0x0000b4ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000b000 \
+ 0x00000000 0x0000b0ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000ac00 0x00000000 0x0000acff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000a800 0x00000000 0x0000a9ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x0000a400 0x00000000 0x0000a4ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x0000a000 0x00000000 0x0000a0ff 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x00009c00 0x00000000 0x00009cff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00009800 0x00000000 0x000099ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00009400 0x00000000 \
+ 0x000094ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00009000 0x00000000 0x000090ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00008c00 0x00000000 0x00008cff 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00008800 0x00000000 0x000089ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00008400 0x00000000 0x000084ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 \
+ 0x00008000 0x00000000 0x000080ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00007c00 0x00000000 0x00007cff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00007800 0x00000000 0x000079ff \
+ 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00007400 0x00000000 0x000074ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00007000 0x00000000 0x000070ff 0x00000000 0x00000108 0x00000000 \
+ 0x00000000 0x00000000 0x00006c00 0x00000000 0x00006cff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00006800 0x00000000 0x000069ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00006400 \
+ 0x00000000 0x000064ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00006000 0x00000000 0x000060ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00005c00 0x00000000 0x00005cff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00005800 0x00000000 0x000059ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00005400 0x00000000 0x000054ff 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x00005000 0x00000000 0x000050ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00004c00 0x00000000 0x00004cff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00004800 0x00000000 \
+ 0x000049ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00004400 0x00000000 0x000044ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00004000 0x00000000 0x000040ff 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00003c00 0x00000000 0x00003cff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00003800 0x00000000 0x000039ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 \
+ 0x00003400 0x00000000 0x000034ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00003000 0x00000000 0x000030ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00002c00 0x00000000 0x00001cff \
+ 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00002800 0x00000000 0x000019ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00002400 0x00000000 0x000014ff 0x00000000 0x00000108 0x00000000 \
+ 0x00000000 0x00000000 0x00002000 0x00000000 0x000010ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00001c00 0x00000000 0x00001cff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00001800 \
+ 0x00000000 0x000019ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00001400 0x00000000 0x000014ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00001000 0x00000000 0x000010ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000c00 0x00000000 0x00000cff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000800 0x00000000 0x000009ff 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x00000500 0x00000000 0xffffffff 0x00000000 0x00000200 0x00000000 0x00000000 0xffffffff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 \
+ 0xffafffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xfff7ffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff \
+ 0x00000000 0x00000000 0x00000000 0x00000000
+ Enum [8 17]
+ Hardware Profiles [8 1 17 5]
+ 0001 [8 1 17 5]
+ Software [10 1 17 5]
+ System [8 4 17]
+ CurrentControlSet [8 1 17 5]
+ Control [16 8 1 17 5]
+ Class
+ Enum [16 8 1 17 5]
+ Services [16 8 1 17 5]
+ Services [8 1 16 17 5]
+ Modem
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000003
+ Group = Extended base
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000004
+ PlugPlayServiceType = REG_DWORD 0x00000002
+ Parameters
+ Spooler
+ Type = REG_DWORD 0x00000110
+ Start = REG_DWORD 0x00000003
+ Group = SpoolerGroup
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\spoolss.exe
+ ObjectName = LocalSystem
+ Parameters
+ Mup
+ Type = REG_DWORD 0x00000002
+ Start = REG_DWORD 0x00000003
+ DisplayName = Mup
+ Group = Network
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ \SystemRoot\System32\drivers\mup.sys
+ Parameters
+ RpcSs
+ Type = REG_DWORD 0x00000010
+ DisplayName = Remote Procedure Call (RPC) Service
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\RpcSs.exe
+ ObjectName = LocalSystem
+ Start = REG_DWORD 0x00000002
+ Parameters
+ Security
+ Security = REG_BINARY 0x000000cc 0x80140001 0x000000b4 0x000000c0 0x00000014 0x00000034 0x00200002 0x00000001 0x00188002 0x000f01ff 0x00000101 0x01000000 0x00000000 0x00000220 0x00800002 0x00000005 0x00180300 \
+ 0x0002008d 0x00000101 0x01000000 0x00000000 0x00000000 0x00180300 0x000f01ff 0x00000201 0x05000000 0x00000020 0x00000220 0x00180300 0x0002008f 0x00000201 0x05000000 0x00000020 0x00000223 0x00180300 \
+ 0x0000009d 0x00000101 0x05000000 0x00000004 0x00000223 0x00180300 0x0000009d 0x00000201 0x05000000 0x00000020 0x00000221 0x00000101 0x05000000 0x00000012 0x00000101 0x05000000 0x00000012
+ Netlogon
+ Parameters
+ DisablePasswordChange = REG_DWORD 0x00000000
+ NetDDE
+ Type = REG_DWORD 0x00000020
+ Start = REG_DWORD 0x00000004
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\netdde.exe
+ DependOnService = REG_MULTI_SZ "NetDDEDSDM"
+ DisplayName = Network DDE
+ ObjectName = LocalSystem
+ Group = NetDDEGroup
+ Security
+ Security = REG_BINARY 0x000000b4 0x80140001 0x0000009c 0x000000a8 0x00000014 0x00000034 0x00200002 0x00000001 0x00188002 0x000f01ff 0x00000101 0x01000000 0x00000000 0x00000220 0x00680002 0x00000004 0x00180300 \
+ 0x0002008d 0x00000101 0x01000000 0x00000000 0x00000000 0x00180300 0x000f01ff 0x00000201 0x05000000 0x00000020 0x00000220 0x00180300 0x0002008f 0x00000201 0x05000000 0x00000020 0x00000223 0x00180300 \
+ 0x0000009d 0x00000101 0x05000000 0x00000004 0x00000223 0x00000101 0x05000000 0x00000012 0x00000101 0x05000000 0x00000012
+ NetDDEdsdm
+ Type = REG_DWORD 0x00000020
+ Start = REG_DWORD 0x00000004
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\netdde.exe
+ DependOnService = REG_MULTI_SZ
+ DisplayName = Network DDE DSDM
+ ObjectName = LocalSystem
+ Security
+ Security = REG_BINARY 0x000000b4 0x80140001 0x0000009c 0x000000a8 0x00000014 0x00000034 0x00200002 0x00000001 0x00188002 0x000f01ff 0x00000101 0x01000000 0x00000000 0x00000220 0x00680002 0x00000004 0x00180300 \
+ 0x0002008d 0x00000101 0x01000000 0x00000000 0x00000000 0x00180300 0x000f01ff 0x00000201 0x05000000 0x00000020 0x00000220 0x00180300 0x0002008f 0x00000201 0x05000000 0x00000020 0x00000223 0x00180300 \
+ 0x0000009d 0x00000101 0x05000000 0x00000004 0x00000223 0x00000101 0x05000000 0x00000012 0x00000101 0x05000000 0x00000012
+ TapiSrv
+ Type = REG_DWORD 0x00000010
+ Start = REG_DWORD 0x00000003
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\tapisrv.exe
+ ObjectName = LocalSystem
+ DisplayName = Telephony Service
+ Security
+ Security = REG_BINARY 0x000000cc 0x80140001 0x000000b4 0x000000c0 0x00000014 0x00000034 0x00200002 0x00000001 0x00188002 0x000f01ff 0x00000101 0x01000000 0x00000000 0x00000220 0x00800002 0x00000005 0x00180300 \
+ 0x0002008d 0x00000101 0x01000000 0x00000000 0x00000000 0x00180300 0x000f01ff 0x00000201 0x05000000 0x00000020 0x00000220 0x00180300 0x0002008f 0x00000201 0x05000000 0x00000020 0x00000223 0x00180300 \
+ 0x0000009d 0x00000101 0x05000000 0x00000004 0x00000223 0x00180300 0x0000009d 0x00000201 0x05000000 0x00000020 0x00000221 0x00000101 0x05000000 0x00000012 0x00000101 0x05000000 0x00000012
+ Performance
+ Close = CloseTapiPerformanceData
+ Collect = CollectTapiPerformanceData
+ Library = tapiperf.dll
+ Open = OpenTapiPerformanceData
+ ClipSrv
+ Type = REG_DWORD 0x00000010
+ Start = REG_DWORD 0x00000004
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\clipsrv.exe
+ DependOnService = REG_MULTI_SZ "NetDDE"
+ DisplayName = ClipBook Server
+ ObjectName = LocalSystem
+ Security
+ Security = REG_BINARY 0x000000b4 0x80140001 0x0000009c 0x000000a8 0x00000014 0x00000034 0x00200002 0x00000001 0x00188002 0x000f01ff 0x00000101 0x01000000 0x00000000 0x00000220 0x00680002 0x00000004 0x00180300 \
+ 0x0002008d 0x00000101 0x01000000 0x00000000 0x00000000 0x00180300 0x000f01ff 0x00000201 0x05000000 0x00000020 0x00000220 0x00180300 0x0002008f 0x00000201 0x05000000 0x00000020 0x00000223 0x00180300 \
+ 0x0000009d 0x00000101 0x05000000 0x00000004 0x00000223 0x00000101 0x05000000 0x00000012 0x00000101 0x05000000 0x00000012
+ PlugPlay
+ Type = REG_DWORD 0x00000020
+ Start = REG_DWORD 0x00000002
+ Group = PlugPlay
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\services.exe
+ ObjectName = LocalSystem
+ DisplayName = Plug and Play
+ PlugPlayServiceType = REG_DWORD 0x00000003
+ EventLog [8 1 17 5]
+ Type = REG_DWORD 0x00000020
+ Start = REG_DWORD 0x00000004
+ Group = Event log
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\system32\services.exe
+ ObjectName = LocalSystem
+ PlugPlayServiceType = REG_DWORD 0x00000003
+ Application
+ File = REG_EXPAND_SZ %SystemRoot%\system32\config\AppEvent.Evt
+ MaxSize = REG_DWORD 0x00080000
+ Retention = REG_DWORD 0x00093a80
+ DrWatson
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\drwtsn32.exe
+ TypesSupported = REG_DWORD 0x00000007
+ hpmon
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\hpmon.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ntbackup
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\ntbackup.exe
+ TypesSupported = REG_DWORD 0x00000007
+ Perfctrs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\perfctrs.dll
+ TypesSupported = REG_DWORD 0x00000007
+ Perfmon
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\perfmon.exe
+ TypesSupported = REG_DWORD 0x00000007
+ Perflib
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\prflbmsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ Type 1 Installer
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\t1instal.dll
+ TypesSupported = REG_DWORD 0x00000007
+ Windows 3.1 Migration
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\advapi32.dll
+ TypesSupported = REG_DWORD 0x00000007
+ Winlogon
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\winlogon.exe
+ TypesSupported = REG_DWORD 0x00000007
+ Userenv
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\userenv.dll
+ TypesSupported = REG_DWORD 0x00000007
+ Autochk
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\winlogon.exe
+ TypesSupported = REG_DWORD 0x00000007
+ System
+ File = REG_EXPAND_SZ %SystemRoot%\system32\config\SysEvent.Evt
+ MaxSize = REG_DWORD 0x00080000
+ Retention = REG_DWORD 0x00093a80
+ Application Popup
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\ntdll.dll
+ TypesSupported = REG_DWORD 0x00000007
+ abiosdsk
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ aha154x
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ aha174x
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ aic78xx
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ always
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ami0nt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ amsint
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ flashpnt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ cpqfws2e
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ arrow
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ atapi
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ atdisk
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ dac960nt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ dce376nt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ dtc329x
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ati
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\ati.sys
+ TypesSupported = REG_DWORD 0x00000007
+ beep
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ buslogic
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ busmouse
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\BusMouse.sys
+ TypesSupported = REG_DWORD 0x00000007
+ cdaudio
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ cdfs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ changer
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ cirrus
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ cpqarray
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ delldsa
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ dell_dgx
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ diskperf
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ dptscsi
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ et4000
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ eventlog
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netevent.dll
+ TypesSupported = REG_DWORD 0x00000007
+ fastfat
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ fd16_700
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ fd7000ex
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ fd8XX
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ floppy
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ fs_rec
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ftdisk
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\FtDisk.sys
+ TypesSupported = REG_DWORD 0x00000007
+ i8042prt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\i8042prt.sys
+ TypesSupported = REG_DWORD 0x00000007
+ inport
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\InPort.sys
+ TypesSupported = REG_DWORD 0x00000007
+ JazzG300
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ JazzG364
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ JazzSnd
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ Jzvxl484
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ kbdclass
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\KbdClass.sys
+ TypesSupported = REG_DWORD 0x00000007
+ mitsumi
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ mga
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\mga.sys
+ TypesSupported = REG_DWORD 0x00000007
+ mga_mil
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\mga_mil.sys
+ TypesSupported = REG_DWORD 0x00000007
+ mkecr5xx
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ Modem
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\Modem.sys
+ TypesSupported = REG_DWORD 0x00000007
+ mouclass
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\MouClass.sys
+ TypesSupported = REG_DWORD 0x00000007
+ msadlib
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ msfs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ Mup
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ncr53c9x
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ncrc700
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ncrc710
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ncr77c22
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ symc810
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ndis
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netevent.dll
+ TypesSupported = REG_DWORD 0x00000007
+ NetDDE
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netdde.exe
+ TypesSupported = REG_DWORD 0x0000001f
+ npfs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ntfs
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ null
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ oliscsi
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ parallel
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\Parallel.sys
+ TypesSupported = REG_DWORD 0x00000007
+ parport
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\ParPort.sys
+ TypesSupported = REG_DWORD 0x00000007
+ parvdm
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\ParVdm.sys
+ TypesSupported = REG_DWORD 0x00000007
+ pcmcia
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\Pcmcia.sys
+ TypesSupported = REG_DWORD 0x00000007
+ pnpisa
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\pnpisa.sys
+ TypesSupported = REG_DWORD 0x00000007
+ psidisp
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ql10wnt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ qv
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\qv.sys
+ TypesSupported = REG_DWORD 0x00000007
+ s3
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\s3.sys
+ TypesSupported = REG_DWORD 0x00000007
+ SAM
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\samsrv.dll
+ TypesSupported = REG_DWORD 0x00000007
+ Save Dump
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\SaveDump.exe
+ TypesSupported = REG_DWORD 0x00000007
+ Schedule
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netevent.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\kernel32.dll
+ cdrom
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ disk
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ sfloppy
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ scsiport
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ scsiprnt
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ scsiscan
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ serial
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\Serial.sys
+ TypesSupported = REG_DWORD 0x00000007
+ sermouse
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\SerMouse.sys
+ TypesSupported = REG_DWORD 0x00000007
+ Service Control Manager
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netevent.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\kernel32.dll
+ DCOM
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netevent.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\kernel32.dll
+ Simbad
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ slcd32
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ sndblst
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ sparrow
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ spock
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ tdi
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ t128
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ t13b
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ tmv1
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ultra14f
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ultra124
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ ultra24f
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ UPS
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\netmsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ VgaStart
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\vga.sys
+ TypesSupported = REG_DWORD 0x00000007
+ VgaSave
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\vga.sys
+ TypesSupported = REG_DWORD 0x00000007
+ v7vram
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ wd33c93
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ wdvga
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ wd90c24a
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll
+ TypesSupported = REG_DWORD 0x00000007
+ weitekp9
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\weitekp9.sys
+ TypesSupported = REG_DWORD 0x00000007
+ xga
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\xga.sys
+ TypesSupported = REG_DWORD 0x00000007
+ Security
+ File = REG_EXPAND_SZ %SystemRoot%\System32\config\SecEvent.Evt
+ MaxSize = REG_DWORD 0x00080000
+ Retention = REG_DWORD 0x00093a80
+ PrimaryModule = Security
+ Security
+ EventMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsAuditE.dll
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ CategoryMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsAuditE.dll
+ CategoryCount = REG_DWORD 0x00000007
+ TypesSupported = REG_DWORD 0x0000001c
+ ObjectNames
+ Device = REG_DWORD 0x00001100
+ Directory = REG_DWORD 0x00001110
+ Event = REG_DWORD 0x00001120
+ EventPair = REG_DWORD 0x00001130
+ File = REG_DWORD 0x00001140
+ Key = REG_DWORD 0x00001150
+ Mutant = REG_DWORD 0x00001160
+ Port = REG_DWORD 0x00001170
+ Process = REG_DWORD 0x00001180
+ Profile = REG_DWORD 0x00001190
+ Section = REG_DWORD 0x000011a0
+ Semaphore = REG_DWORD 0x000011b0
+ SymbolicLink = REG_DWORD 0x000011c0
+ Thread = REG_DWORD 0x000011d0
+ Timer = REG_DWORD 0x000011e0
+ Token = REG_DWORD 0x000011f0
+ Type = REG_DWORD 0x00001200
+ IoCompletion = REG_DWORD 0x00001300
+ MailSlot = REG_DWORD 0x00001140
+ NamedPipe = REG_DWORD 0x00001140
+ Channel = REG_DWORD 0x00001400
+ WindowStation = REG_DWORD 0x00001a00
+ Desktop = REG_DWORD 0x00001a10
+ Security Account Manager
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ ObjectNames
+ SAM_SERVER = REG_DWORD 0x00001500
+ SAM_DOMAIN = REG_DWORD 0x00001510
+ SAM_GROUP = REG_DWORD 0x00001520
+ SAM_ALIAS = REG_DWORD 0x00001530
+ SAM_USER = REG_DWORD 0x00001540
+ LSA
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ ObjectNames
+ PolicyObject = REG_DWORD 0x00001600
+ SecretObject = REG_DWORD 0x00001610
+ TrustedDomainObject = REG_DWORD 0x00001620
+ UserAccountObject = REG_DWORD 0x00001630
+ Spooler
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ ObjectNames
+ Server = REG_DWORD 0x00001b00
+ Printer = REG_DWORD 0x00001b10
+ Document = REG_DWORD 0x00001b20
+ SC Manager
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ ObjectNames
+ SC_MANAGER Object = REG_DWORD 0x00001c00
+ SERVICE Object = REG_DWORD 0x00001c10
+ NetDDE Object
+ ParameterMessageFile = REG_EXPAND_SZ %SystemRoot%\System32\MsObjs.dll
+ ObjectNames
+ DDE Share = REG_DWORD 0x00001d00
+ Ncr53c9x
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000001
+ Spock
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000002
+ Oliscsi
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000003
+ Ncrc700
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000004
+ Ncrc710
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000005
+ Aha154x
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000006
+ Sparrow
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000007
+ Aha174x
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000008
+ DptScsi
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000009
+ Ultra14f
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000000a
+ Ultra124
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000000b
+ Ultra24f
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000000c
+ BusLogic
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000001b
+ Fd7000ex
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000000e
+ Fd8xx
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000000f
+ Parameters
+ Device0
+ DriverParameter = IRQ=5
+ Fd16_700
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000010
+ Wd33c93
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000011
+ Parameters
+ Device0
+ DriverParameter = IRQ=10;DMA=6
+ DisableDisconnect = REG_DWORD 0x00000001
+ T128
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000012
+ Parameters
+ Device0
+ DriverParameter = IRQ=5
+ T13B
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000013
+ Parameters
+ Device0
+ DriverParameter = IRQ=5
+ Always
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000014
+ Arrow
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000015
+ dce376nt
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000016
+ dtc329x
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000017
+ tmv1
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000018
+ Parameters
+ Device0
+ DriverParameter = IRQ=15
+ atapi
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000019
+ symc810
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000001a
+ ami0nt
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000000d
+ slcd32
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000001c
+ mkecr5xx
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000001d
+ aic78xx
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000001e
+ mitsumi
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000001f
+ dac960nt
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000020
+ Ql10wnt
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000023
+ amsint
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000024
+ flashpnt
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000025
+ cpqfws2e
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000026
+ Atdisk
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ ErrorControl = REG_DWORD 0x00000000
+ Group = Primary disk
+ Tag = REG_DWORD 0x00000001
+ Floppy
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Primary disk
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000002
+ Abiosdsk
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ ErrorControl = REG_DWORD 0x00000000
+ Group = Primary disk
+ Tag = REG_DWORD 0x00000003
+ Cpqarray
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000100
+ Delldsa
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = SCSI miniport
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000101
+ Disk
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000000
+ Group = SCSI Class
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000002
+ DependOnGroup = REG_MULTI_SZ "SCSI miniport"
+ Sfloppy
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Primary disk
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000004
+ DependOnGroup = REG_MULTI_SZ "SCSI miniport"
+ Scsiscan
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = SCSI Class
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000003
+ DependOnGroup = REG_MULTI_SZ "SCSI miniport"
+ Cdrom
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = SCSI CDROM Class
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000002
+ DependOnGroup = REG_MULTI_SZ "SCSI miniport"
+ Autorun = REG_DWORD 0x00000001
+ Ftdisk
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = Filter
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000003
+ Simbad
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = Filter
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000001
+ Diskperf
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = Filter
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000004
+ Cdaudio
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Filter
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000006
+ Changer
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Filter
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000005
+ Fs_Rec
+ Type = REG_DWORD 0x00000008
+ Start = REG_DWORD 0x00000001
+ Group = Boot file system
+ ErrorControl = REG_DWORD 0x00000000
+ Fastfat
+ Type = REG_DWORD 0x00000002
+ Start = REG_DWORD 0x00000004
+ Group = Boot file system
+ ErrorControl = REG_DWORD 0x00000001
+ Null
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Base
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000001
+ Beep
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Base
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000002
+ KSecDD
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Base
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000001
+ i8042prt
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = Keyboard Port
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000001
+ Parameters
+ ResendIterations = REG_DWORD 0x00000003
+ PollingIterations = REG_DWORD 0x00002ee0
+ PollingIterationsMaximum = REG_DWORD 0x00002ee0
+ PollStatusIterations = REG_DWORD 0x00000001
+ KeyboardDataQueueSize = REG_DWORD 0x00000064
+ KeyboardDeviceBaseName = KeyboardPort
+ MouseDataQueueSize = REG_DWORD 0x00000064
+ NumberOfButtons = REG_DWORD 0x00000002
+ SampleRate = REG_DWORD 0x0000003c
+ MouseResolution = REG_DWORD 0x00000003
+ PointerDeviceBaseName = PointerPort
+ MouseSynchIn100ns = REG_DWORD 0x01312d00
+ EnableWheelDetection = REG_DWORD 0x00000001
+ Busmouse
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = Pointer Port
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000003
+ Parameters
+ MouseDataQueueSize = REG_DWORD 0x00000064
+ NumberOfButtons = REG_DWORD 0x00000002
+ SampleRate = REG_DWORD 0x00000032
+ PointerDeviceBaseName = PointerPort
+ Inport
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = Pointer Port
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000001
+ Parameters
+ MouseDataQueueSize = REG_DWORD 0x00000064
+ NumberOfButtons = REG_DWORD 0x00000002
+ SampleRate = REG_DWORD 0x00000032
+ HzMode = REG_DWORD 0x00000002
+ PointerDeviceBaseName = PointerPort
+ Sermouse
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000004
+ Group = Pointer Port
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000002
+ Parameters
+ MouseDataQueueSize = REG_DWORD 0x00000064
+ NumberOfButtons = REG_DWORD 0x00000002
+ SampleRate = REG_DWORD 0x00000028
+ PointerDeviceBaseName = PointerPort
+ Kbdclass
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Keyboard Class
+ ErrorControl = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x00000001
+ Parameters
+ KeyboardDataQueueSize = REG_DWORD 0x00000064
+ MaximumPortsServiced = REG_DWORD 0x00000003
+ ConnectMultiplePorts = REG_DWORD 0x00000000
+ KeyboardDeviceBaseName = KeyboardClass
+ Mouclass
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Pointer Class
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000001
+ Parameters
+ MouseDataQueueSize = REG_DWORD 0x00000064
+ MaximumPortsServiced = REG_DWORD 0x00000003
+ ConnectMultiplePorts = REG_DWORD 0x00000001
+ PointerDeviceBaseName = PointerClass
+ NetDetect
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000003
+ ErrorControl = REG_DWORD 0x00000001
+ DisplayName = NetDetect
+ ImagePath = REG_EXPAND_SZ \SystemRoot\system32\drivers\netdtect.sys
+ ati
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ InstalledDisplayDrivers = REG_MULTI_SZ "ati" \
+ "8514a"
+ cirrus
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000001
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" \
+ "cirrus" \
+ "vga256" \
+ "vga64K"
+ Dell_DGX
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ InstalledDisplayDrivers = REG_MULTI_SZ "framebuf"
+ et4000
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000001
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" \
+ "w32" \
+ "vga256" \
+ "vga64K"
+ Jazzg364
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ Monitor = drivers\jazz.bvp
+ InstalledDisplayDrivers = REG_MULTI_SZ "framebuf"
+ Jazzg300
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ Monitor = drivers\jazz.bvp
+ InstalledDisplayDrivers = REG_MULTI_SZ "framebuf"
+ Jzvxl484
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ Monitor = drivers\jazz.bvp
+ InstalledDisplayDrivers = REG_MULTI_SZ "jzvxl484"
+ mga
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ InstalledDisplayDrivers = REG_MULTI_SZ "mga"
+ mga_mil
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ InstalledDisplayDrivers = REG_MULTI_SZ "mga"
+ ncr77c22
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000001
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" \
+ "vga256"
+ psidisp
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ InstalledDisplayDrivers = REG_MULTI_SZ "psidisp"
+ qv
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000001
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" \
+ "qv"
+ s3
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ InstalledDisplayDrivers = REG_MULTI_SZ "s3"
+ tga
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ InstalledDisplayDrivers = REG_MULTI_SZ "tga"
+ v7vram
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000001
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" \
+ "vga256"
+ wdvga
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000001
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" \
+ "vga256" \
+ "vga64k"
+ wd90c24a
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000001
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga" \
+ "vga256" \
+ "wd90c24a"
+ weitekp9
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ InstalledDisplayDrivers = REG_MULTI_SZ "weitekp9"
+ Xga
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video
+ ErrorControl = REG_DWORD 0x00000000
+ Device0
+ VgaCompatible = REG_DWORD 0x00000000
+ Monitor = drivers\vga.bvp
+ InstalledDisplayDrivers = REG_MULTI_SZ "xga" \
+ "vga256"
+ VgaStart
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video Init
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ \SystemRoot\System32\drivers\vga.sys
+ Device0
+ VgaCompatible = REG_DWORD 0x00000001
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga"
+ ForceVga = REG_DWORD 0x00000001
+ VgaSave
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = Video Save
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ \SystemRoot\System32\drivers\vga.sys
+ Device0
+ VgaCompatible = REG_DWORD 0x00000001
+ InstalledDisplayDrivers = REG_MULTI_SZ "vga"
+ NDIS
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = NDIS
+ DisplayName = Microsoft NDIS System Driver
+ ErrorControl = REG_DWORD 0x00000001
+ MediaTypes
+ Parameters
+ ProcessorAffinityMask = REG_DWORD 0xffffffff
+ NetDetect
+ EISA
+ BONSAI
+ Id = REG_DWORD 0x0062110e
+ Mask = REG_DWORD 0x00ffffff
+ token = BONSAI
+ DE425
+ Id = REG_DWORD 0x5042a310
+ Mask = REG_DWORD 0xf0ffffff
+ token = DE425
+ DEC300
+ Id = REG_DWORD 0x0230a310
+ Mask = REG_DWORD 0x0fffffff
+ token = DEC300
+ DEC422
+ Id = REG_DWORD 0x2042a310
+ Mask = REG_DWORD 0xf0ffffff
+ token = DEC422
+ DURANGO
+ Id = REG_DWORD 0x0260110e
+ Mask = REG_DWORD 0x0fffffff
+ token = DURANGO
+ ELNK3EISA
+ Id = REG_DWORD 0x90506d50
+ Mask = REG_DWORD 0xf0ffffff
+ token = ELNK3EISA
+ MAPLE
+ Id = REG_DWORD 0x0160110e
+ Mask = REG_DWORD 0x0fffffff
+ token = MAPLE
+ NE3200
+ Id = REG_DWORD 0x0007cc3a
+ Mask = REG_DWORD 0x00ffffff
+ token = NE3200
+ NETFLX
+ Id = REG_DWORD 0x0061110e
+ Mask = REG_DWORD 0x00ffffff
+ token = NETFLX
+ NPEISA.1
+ id = REG_DWORD 0x0002093a
+ Mask = REG_DWORD 0x00ffffff
+ token = NPEISA
+ NPEISA.2
+ id = REG_DWORD 0x0003093a
+ Mask = REG_DWORD 0x00ffffff
+ token = NPEISA
+ P1990
+ Id = REG_DWORD 0x00604f42
+ Mask = REG_DWORD 0x00ffffff
+ token = P1990
+ RODAN
+ Id = REG_DWORD 0x0063110e
+ Mask = REG_DWORD 0x00ffffff
+ token = RODAN
+ MCA
+ EE16MC
+ token = EE16MC
+ Id = REG_DWORD 0x0000628b
+ ELNK3MCA.1
+ token = ELNK3MCA
+ Id = REG_DWORD 0x0000627c
+ ELNK3MCA.2
+ token = ELNK3MCA
+ Id = REG_DWORD 0x0000627d
+ ELNK3MCA.3
+ token = ELNK3MCA
+ Id = REG_DWORD 0x000061db
+ ELNK3MCA.4
+ token = ELNK3MCA
+ Id = REG_DWORD 0x000062f6
+ ELNK3MCA.5
+ token = ELNK3MCA
+ Id = REG_DWORD 0x000062f7
+ ELNKMC
+ token = ELNKMC
+ Id = REG_DWORD 0x00006042
+ IBMTOKA
+ token = IBMTOKA
+ Id = REG_DWORD 0x0000e000
+ IBMTOKMC
+ token = IBMTOKMC
+ Id = REG_DWORD 0x0000e001
+ NPMCA
+ token = NPMCA
+ Id = REG_DWORD 0x00000069
+ UBPS
+ token = UBPS
+ Id = REG_DWORD 0x00007012
+ WD8003EA
+ token = WD8003EA
+ Id = REG_DWORD 0x000067c0
+ WD8003WA
+ token = WD8003WA
+ Id = REG_DWORD 0x000067c2
+ WD8013EPA
+ token = WD8013EPA
+ Id = REG_DWORD 0x000061c8
+ WD8013WPA
+ token = WD8013WPA
+ Id = REG_DWORD 0x000061c9
+ PCI
+ AMDPCI
+ token = AMDPCI
+ Id = REG_DWORD 0x20001022
+ DC21040
+ token = DC21040
+ Id = REG_DWORD 0x00021011
+ DC21041
+ token = DC21041
+ Id = REG_DWORD 0x00141011
+ DC21140
+ token = DC21140
+ Id = REG_DWORD 0x00091011
+ DC21142
+ token = DC21142
+ Id = REG_DWORD 0x00191011
+ DEFPA
+ token = DEFPA
+ Id = REG_DWORD 0x000f1011
+ Parport
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000002
+ Group = Parallel arbitrator
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000001
+ pnpisa
+ DisplayName = PnP ISA Enabler Driver
+ ErrorControl = REG_DWORD 0x00000000
+ Group = Base
+ Start = REG_DWORD 0x00000001
+ Tag = REG_DWORD 0x0000000e
+ Type = REG_DWORD 0x00000001
+ Serial
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000002
+ Group = Extended base
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000001
+ Parameters
+ Parallel
+ DependOnGroup = REG_MULTI_SZ "Parallel arbitrator"
+ DependOnService = REG_MULTI_SZ "Parport"
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000002
+ Group = Extended base
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000002
+ Parameters
+ ParVdm
+ DependOnGroup = REG_MULTI_SZ "Parallel arbitrator"
+ DependOnService = REG_MULTI_SZ "Parport"
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000002
+ Group = Extended base
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000002
+ Parameters
+ Scsiprnt
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000002
+ Group = Extended base
+ ErrorControl = REG_DWORD 0x00000000
+ DependOnGroup = REG_MULTI_SZ "SCSI miniport"
+ Tag = REG_DWORD 0x00000003
+ PCIDump
+ Type = REG_DWORD 0x00000001
+ Start = REG_DWORD 0x00000001
+ Group = PCI Configuration
+ ErrorControl = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000001
+ Pcmcia
+ ErrorControl = REG_DWORD 0x00000001
+ Group = System Bus Extender
+ Start = REG_DWORD 0x00000000
+ Tag = REG_DWORD 0x00000001
+ Type = REG_DWORD 0x00000001
+ DataBase
+ 3Com Corporation
+ 3C589
+ Driver = elnk3
+ Option = ELNK3ISA509
+ InfFileName = oemnade3.inf
+ DeviceType = NET
+ Accton
+ EN2212
+ DeviceType = NET
+ Driver = ne2000
+ InfFileName = oemnadzz.inf
+ Option = ACCTONEN2216
+ EN2216-PCMCIA-ETHERNET
+ DeviceType = NET
+ Driver = ne2000
+ InfFileName = oemnadzz.inf
+ Option = ACCTONEN2216
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Compaq
+ Ethernet LAN Card
+ AttributeMemorySize = REG_DWORD 0x00001000
+ DeviceType = NET
+ Driver = cpqndis
+ InfFileName = oemnadzz.inf
+ D-Link
+ DE-650
+ Driver = ne2000
+ DeviceType = NET
+ Option = DLINKDE650
+ InfFileName = oemnadzz.inf
+ Diehl ISDN
+ ISDN-DIVA/PCM
+ DeviceType = NET
+ Driver = Diehl_DIVA_TED5ES
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ IBM
+ TOKEN RING
+ Driver = ibmtok
+ DeviceType = NET
+ InfFileName = oemnadtk.inf
+ Option = IBMTOK
+ IBM Corp.
+ Ethernet
+ AttributeMemorySize = REG_DWORD 0x00001000
+ CardMemorySize = REG_DWORD 0x00000000
+ Driver = ne2000
+ Option = NE2000IBMCOMPAT
+ InfFileName = oemnadni.inf
+ DeviceType = NET
+ Kingston Technology Corp.
+ EtheRx
+ AttributeMemorySize = REG_DWORD 0x00001000
+ CardMemorySize = REG_DWORD 0x00000000
+ Driver = ne2000
+ Option = NE2000IBMCOMPAT
+ InfFileName = oemnadni.inf
+ DeviceType = NET
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ MADGE
+ SMART 16/4 PCMCIA RINGNODE
+ Driver = madgemport
+ Option = MSMDGMPPCMCIA
+ InfFileName = oemnadma.inf
+ DeviceType = NET
+ Microdyne
+ NE4200
+ AttributeMemorySize = REG_DWORD 0x00001000
+ CardMemorySize = REG_DWORD 0x00000000
+ Driver = ne2000
+ Option = NE2000IBMCOMPAT
+ InfFileName = oemnadni.inf
+ DeviceType = NET
+ National Semiconductor
+ InfoMover NE4100
+ AttributeMemorySize = REG_DWORD 0x00001000
+ CardMemorySize = REG_DWORD 0x00000000
+ Driver = ne2000
+ Option = NE2000IBMCOMPAT
+ InfFileName = oemnadni.inf
+ DeviceType = NET
+ OLICOM
+ TR 16/4 II
+ DeviceType = NET
+ Driver = octk16
+ Option = PCMCIA
+ InfFileName = oemnadzz.inf
+ ETHERCOM
+ DeviceType = NET
+ Driver = oce2xm
+ Option = GOCARD
+ InfFileName = oemnadzz.inf
+ Socket Communications Inc
+ Socket EA PCMCIA LAN Adapter Revision D
+ AttributeMemorySize = REG_DWORD 0x00000000
+ CardMemorySize = REG_DWORD 0x00000000
+ Driver = ne2000
+ Option = NE2000SOCKETEA
+ InfFileName = oemnadn2.inf
+ DeviceType = NET
+ Socket EA PCMCIA LAN Adapter Revision E
+ AttributeMemorySize = REG_DWORD 0x00000000
+ CardMemorySize = REG_DWORD 0x00000000
+ Driver = ne2000
+ Option = NE2000SOCKETEA
+ InfFileName = oemnadn2.inf
+ DeviceType = NET
+ Xircom
+ CreditCard 10Base-T
+ Option =
+ InfFileName = oemnadzz.inf
+ DeviceType = NET
+ 5331
+ Driver = ce2xps
+ AttributeMemorySize = REG_DWORD 0x00001000
+ 5FFA
+ Driver = cendis3
+ AttributeMemorySize = REG_DWORD 0x00001000
+ 64BA
+ AttributeMemorySize = REG_DWORD 0x00001000
+ Driver = ce2xps
+ 9C9B
+ Driver = cendis3
+ AttributeMemorySize = REG_DWORD 0x00001000
+ 9F5B
+ Driver = ce2ndis3
+ AttributeMemorySize = REG_DWORD 0x00001000
+ 9FAB
+ Driver = cendis3
+ AttributeMemorySize = REG_DWORD 0x00001000
+ B00D
+ Driver = cendis3
+ AttributeMemorySize = REG_DWORD 0x00001000
+ CreditCard Ethernet+Modem 28.8
+ AttributeMemorySize = REG_DWORD 0x00001000
+ DeviceType = NET
+ Driver = cem28xps
+ InfFileName = oemnadzz.inf
+ CreditCard Ethernet+Modem II
+ Driver = cm2ndis3
+ AttributeMemorySize = REG_DWORD 0x00001000
+ Option =
+ InfFileName = oemnadzz.inf
+ DeviceType = NET
+ CreditCard Token Ring
+ Driver = ctndnt
+ AttributeMemorySize = REG_DWORD 0x00001000
+ Option =
+ InfFileName = oemnadzz.inf
+ DeviceType = NET
+ Parameters
+ Interrupt = REG_DWORD 0x00000000
+ Ntfs
+ Type = REG_DWORD 0x00000002
+ Start = REG_DWORD 0x00000004
+ Group = File system
+ ErrorControl = REG_DWORD 0x00000001
+ Npfs
+ Type = REG_DWORD 0x00000002
+ Start = REG_DWORD 0x00000001
+ Group = File system
+ ErrorControl = REG_DWORD 0x00000001
+ Aliases
+ lsass = REG_MULTI_SZ "netlogon" \
+ "lsarpc" \
+ "samr"
+ ntsvcs = REG_MULTI_SZ "srvsvc" \
+ "wkssvc" \
+ "eventlog" \
+ "browser" \
+ "msgsvc" \
+ "svcctl"
+ Msfs
+ Type = REG_DWORD 0x00000002
+ Start = REG_DWORD 0x00000001
+ Group = File system
+ ErrorControl = REG_DWORD 0x00000001
+ Cdfs
+ Type = REG_DWORD 0x00000002
+ Start = REG_DWORD 0x00000004
+ Group = File system
+ ErrorControl = REG_DWORD 0x00000001
+ DependOnGroup = REG_MULTI_SZ "SCSI CDROM Class"
+ Schedule
+ Type = REG_DWORD 0x00000010
+ Start = REG_DWORD 0x00000003
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\System32\AtSvc.Exe
+ ObjectName = LocalSystem
+ UPS
+ Type = REG_DWORD 0x00000010
+ Start = REG_DWORD 0x00000003
+ ErrorControl = REG_DWORD 0x00000001
+ ImagePath = REG_EXPAND_SZ %SystemRoot%\System32\ups.exe
+ ObjectName = LocalSystem
+ WinTrust [1 17 8]
+ SubjectPackages
+ MS Subjects 1
+ $DLL = REG_EXPAND_SZ %SystemRoot%\system32\MsSip1.dll
+ MS Subjects 2
+ $DLL = REG_EXPAND_SZ %SystemRoot%\system32\MsSip2.dll
+ MS Subjects 3
+ $DLL = REG_EXPAND_SZ %SystemRoot%\system32\MsSip3.dll
+ TrustProviders
+ Software Publisher
+ $DLL = REG_EXPAND_SZ %SystemRoot%\system32\SoftPub.dll
+ Setup [8 1 17 5]
+ SetupType = REG_DWORD 0x00000001
+ CmdLine = setup -g -s a:\ -t STF_INSTALL_MODE = CUSTOM -t STF_UPGRADE = NO
+ SystemSetupInProgress = REG_DWORD 0x00000001
diff --git a/public/oak/bin/tbomb120.hiv b/public/oak/bin/tbomb120.hiv
new file mode 100644
index 000000000..c1fa82e48
--- /dev/null
+++ b/public/oak/bin/tbomb120.hiv
Binary files differ
diff --git a/public/oak/bin/tbomb120.hiv.log b/public/oak/bin/tbomb120.hiv.log
new file mode 100644
index 000000000..1bf9126f4
--- /dev/null
+++ b/public/oak/bin/tbomb120.hiv.log
Binary files differ
diff --git a/public/oak/bin/tbomb120.log b/public/oak/bin/tbomb120.log
new file mode 100644
index 000000000..486c84096
--- /dev/null
+++ b/public/oak/bin/tbomb120.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x0002a300 0x00000000 0x00000000
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/tbomb30.hiv b/public/oak/bin/tbomb30.hiv
new file mode 100644
index 000000000..165b82d7c
--- /dev/null
+++ b/public/oak/bin/tbomb30.hiv
Binary files differ
diff --git a/public/oak/bin/tbomb30.hiv.log b/public/oak/bin/tbomb30.hiv.log
new file mode 100644
index 000000000..5920c4914
--- /dev/null
+++ b/public/oak/bin/tbomb30.hiv.log
Binary files differ
diff --git a/public/oak/bin/tbomb30.log b/public/oak/bin/tbomb30.log
new file mode 100644
index 000000000..5af5bc8d6
--- /dev/null
+++ b/public/oak/bin/tbomb30.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x0000a8c0 0x00000000 0x00000000
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/tbomb60.hiv b/public/oak/bin/tbomb60.hiv
new file mode 100644
index 000000000..f4ef87c99
--- /dev/null
+++ b/public/oak/bin/tbomb60.hiv
Binary files differ
diff --git a/public/oak/bin/tbomb60.hiv.log b/public/oak/bin/tbomb60.hiv.log
new file mode 100644
index 000000000..76c9d4cc3
--- /dev/null
+++ b/public/oak/bin/tbomb60.hiv.log
Binary files differ
diff --git a/public/oak/bin/tbomb60.log b/public/oak/bin/tbomb60.log
new file mode 100644
index 000000000..743f7ec56
--- /dev/null
+++ b/public/oak/bin/tbomb60.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x00015180 0x00000000 0x00000000
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/tbomb90.hiv b/public/oak/bin/tbomb90.hiv
new file mode 100644
index 000000000..0a748a76c
--- /dev/null
+++ b/public/oak/bin/tbomb90.hiv
Binary files differ
diff --git a/public/oak/bin/tbomb90.hiv.log b/public/oak/bin/tbomb90.hiv.log
new file mode 100644
index 000000000..21edded0c
--- /dev/null
+++ b/public/oak/bin/tbomb90.hiv.log
Binary files differ
diff --git a/public/oak/bin/tbomb90.log b/public/oak/bin/tbomb90.log
new file mode 100644
index 000000000..e2f02383d
--- /dev/null
+++ b/public/oak/bin/tbomb90.log
@@ -0,0 +1,428 @@
+System
+ ControlSet001
+ Control
+ GroupOrderList
+ drivers = REG_BINARY 0x00000008 0x00000001 0x00000001
+ ServiceGroupOrder
+ List = REG_MULTI_SZ "drivers"
+ SystemResources
+ BusValues
+ Internal = REG_BINARY 0x00000008 0x00000000 0x00000000
+ Isa = REG_BINARY 0x00000008 0x00000001 0x00000000
+ Eisa = REG_BINARY 0x00000008 0x00000002 0x00000001
+ MCA = REG_BINARY 0x00000008 0x00000003 0x00000001
+ TurboChannel = REG_BINARY 0x00000008 0x00000004 0x00000000
+ PCI = REG_BINARY 0x00000008 0x00000005 0x00000001
+ VME = REG_BINARY 0x00000008 0x00000006 0x00000000
+ NuBus = REG_BINARY 0x00000008 0x00000007 0x00000000
+ PCMCIA = REG_BINARY 0x00000008 0x00000008 0x00000001
+ CBus = REG_BINARY 0x00000008 0x00000009 0x00000000
+ MPI = REG_BINARY 0x00000008 0x0000000a 0x00000000
+ MPSA = REG_BINARY 0x00000008 0x0000000b 0x00000000
+ ReservedResources
+ Isa = REG_RESOURCE_LIST 0x00000274 0x00000001 0x00000001 0x00000001 0x00000000 0x00000026 0x00000101 0x00000000 0x00000000 0x00000100 0x00000301 0x000042e8 0x00000000 0x00000002 0x00000301 0x00004ae8 0x00000000 \
+ 0x00000002 0x00000301 0x000082e8 0x00000000 0x00000004 0x00000301 0x000086e8 0x00000000 0x00000004 0x00000301 0x00008ae8 0x00000000 0x00000004 0x00000301 0x00008ee8 0x00000000 0x00000004 0x00000301 0x000092e8 \
+ 0x00000000 0x00000004 0x00000301 0x000096e8 0x00000000 0x00000004 0x00000301 0x00009ae8 0x00000000 0x00000004 0x00000301 0x00009ee8 0x00000000 0x00000004 0x00000301 0x0000a2e8 0x00000000 0x00000004 0x00000301 \
+ 0x0000a6e8 0x00000000 0x00000004 0x00000301 0x0000aae8 0x00000000 0x00000004 0x00000301 0x0000aee8 0x00000000 0x00000004 0x00000301 0x0000b6e8 0x00000000 0x00000004 0x00000301 0x0000bae8 0x00000000 0x00000004 \
+ 0x00000301 0x0000bee8 0x00000000 0x00000004 0x00000301 0x0000c2e8 0x00000000 0x00000004 0x00000301 0x0000c6e8 0x00000000 0x00000004 0x00000301 0x0000cae8 0x00000000 0x00000004 0x00000301 0x0000cee8 0x00000000 \
+ 0x00000004 0x00000301 0x0000d2e8 0x00000000 0x00000004 0x00000301 0x0000d6e8 0x00000000 0x00000004 0x00000301 0x0000dae8 0x00000000 0x00000004 0x00000301 0x0000dee8 0x00000000 0x00000004 0x00000301 0x0000e2e8 \
+ 0x00000000 0x00000004 0x00000301 0x0000e6e8 0x00000000 0x00000004 0x00000301 0x0000eae8 0x00000000 0x00000004 0x00000301 0x0000eee8 0x00000000 0x00000004 0x00000301 0x0000f000 0x00000000 0x00001000 0x00000302 \
+ 0x00000003 0x00000003 0xffffffff 0x00000302 0x00000004 0x00000004 0xffffffff 0x00000302 0x0000000e 0x0000000e 0xffffffff 0x00000302 0x00000006 0x00000006 0xffffffff 0x00000302 0x0000000c 0x0000000c 0xffffffff \
+ 0x00000302 0x00000001 0x00000001 0xffffffff 0x00000303 0xefffffff 0x00000000 0x10000000
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Isa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceDeviceExclusive
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000000 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000042e8 LENGTH 0x00000002
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004ae8 LENGTH 0x00000002
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000082e8 LENGTH 0x00000004
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000086e8 LENGTH 0x00000004
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ae8 LENGTH 0x00000004
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008ee8 LENGTH 0x00000004
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000092e8 LENGTH 0x00000004
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x000096e8 LENGTH 0x00000004
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ae8 LENGTH 0x00000004
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009ee8 LENGTH 0x00000004
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a2e8 LENGTH 0x00000004
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000a6e8 LENGTH 0x00000004
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aae8 LENGTH 0x00000004
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000aee8 LENGTH 0x00000004
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000b6e8 LENGTH 0x00000004
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bae8 LENGTH 0x00000004
+;
+; Descriptor number 17
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bee8 LENGTH 0x00000004
+;
+; Descriptor number 18
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c2e8 LENGTH 0x00000004
+;
+; Descriptor number 19
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000c6e8 LENGTH 0x00000004
+;
+; Descriptor number 20
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cae8 LENGTH 0x00000004
+;
+; Descriptor number 21
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cee8 LENGTH 0x00000004
+;
+; Descriptor number 22
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d2e8 LENGTH 0x00000004
+;
+; Descriptor number 23
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000d6e8 LENGTH 0x00000004
+;
+; Descriptor number 24
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dae8 LENGTH 0x00000004
+;
+; Descriptor number 25
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dee8 LENGTH 0x00000004
+;
+; Descriptor number 26
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e2e8 LENGTH 0x00000004
+;
+; Descriptor number 27
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000e6e8 LENGTH 0x00000004
+;
+; Descriptor number 28
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eae8 LENGTH 0x00000004
+;
+; Descriptor number 29
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000eee8 LENGTH 0x00000004
+;
+; Descriptor number 30
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000f000 LENGTH 0x00001000
+;
+; Descriptor number 31
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 3 VECTOR 3 AFFINITY -1
+;
+; Descriptor number 32
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 4 VECTOR 4 AFFINITY -1
+;
+; Descriptor number 33
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 14 VECTOR 14 AFFINITY -1
+;
+; Descriptor number 34
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 6 VECTOR 6 AFFINITY -1
+;
+; Descriptor number 35
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 12 VECTOR 12 AFFINITY -1
+;
+; Descriptor number 36
+; Share Disposition CmResourceShared
+; TYPE INTERRUPT
+; Flags CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+; LEVEL 1 VECTOR 1 AFFINITY -1
+;
+; Descriptor number 37
+; Share Disposition CmResourceShared
+; TYPE MEMORY
+; Flags CM_RESOURCE_MEMORY_READ_WRITE
+; START 0x00000000efffffff LENGTH 0x10000000
+;
+ Eisa = REG_RESOURCE_LIST 0x00000124 0x00000001 0x00000002 0x00000001 0x00000000 0x00000011 0x00000301 0x00000400 0x00000000 0x00000100 0x00000301 0x0000fc00 0x00000000 0x00000400 0x00000301 0x0000ec00 0x00000000 \
+ 0x00000400 0x00000301 0x0000dc00 0x00000000 0x00000400 0x00000301 0x0000cc00 0x00000000 0x00000400 0x00000301 0x0000bc00 0x00000000 0x00000400 0x00000301 0x0000ac00 0x00000000 0x00000400 0x00000301 0x00009c00 \
+ 0x00000000 0x00000400 0x00000301 0x00008c00 0x00000000 0x00000400 0x00000301 0x00007c00 0x00000000 0x00000400 0x00000301 0x00006c00 0x00000000 0x00000400 0x00000301 0x00005c00 0x00000000 0x00000400 0x00000301 \
+ 0x00004c00 0x00000000 0x00000400 0x00000301 0x00003c00 0x00000000 0x00000400 0x00000301 0x00002c00 0x00000000 0x00000400 0x00000301 0x00001c00 0x00000000 0x00000400 0x00000301 0x00000c00 0x00000000 0x00000400
+; Number of Full resource Descriptors = 1
+; Partial List number 0
+; INTERFACE_TYPE Eisa
+; BUS_NUMBER 1
+; Descriptor number 0
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000400 LENGTH 0x00000100
+;
+; Descriptor number 1
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000fc00 LENGTH 0x00000400
+;
+; Descriptor number 2
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ec00 LENGTH 0x00000400
+;
+; Descriptor number 3
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000dc00 LENGTH 0x00000400
+;
+; Descriptor number 4
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000cc00 LENGTH 0x00000400
+;
+; Descriptor number 5
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000bc00 LENGTH 0x00000400
+;
+; Descriptor number 6
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x0000ac00 LENGTH 0x00000400
+;
+; Descriptor number 7
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00009c00 LENGTH 0x00000400
+;
+; Descriptor number 8
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00008c00 LENGTH 0x00000400
+;
+; Descriptor number 9
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00007c00 LENGTH 0x00000400
+;
+; Descriptor number 10
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00006c00 LENGTH 0x00000400
+;
+; Descriptor number 11
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00005c00 LENGTH 0x00000400
+;
+; Descriptor number 12
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00004c00 LENGTH 0x00000400
+;
+; Descriptor number 13
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00003c00 LENGTH 0x00000400
+;
+; Descriptor number 14
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00002c00 LENGTH 0x00000400
+;
+; Descriptor number 15
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00001c00 LENGTH 0x00000400
+;
+; Descriptor number 16
+; Share Disposition CmResourceShared
+; TYPE PORT
+; Flags CM_RESOURCE_PORT_MEMORY
+; START 0x00000c00 LENGTH 0x00000400
+;
+ AssignmentOrdering
+ Isa = PCFlat
+ Eisa = PCFlat
+ MCA = PCFlat
+ PCMCIA = PCFlat
+ PCFlat = REG_RESOURCE_REQUIREMENTS_LIST 0x000004a8 0x000004a8 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000024 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000140 0x00000000 0x0000017f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000200 0x00000000 0x000002ff 0x00000000 \
+ 0x00000108 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x0000036f 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x00000378 0x00000000 0x0000037a 0x00000000 0x00000108 0x00000000 0x00000000 \
+ 0x00000000 0x000002e8 0x00000000 0x000002ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001f0 0x00000000 0x000001f8 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003b0 0x00000000 \
+ 0x000003cf 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000003e8 0x00000000 0x000003ff 0x00000000 0x00000108 0x00000000 0x00000000 0x00000000 0x000001ce 0x00000000 0x000001cf 0x00000000 0x00000108 \
+ 0x00000000 0x00000000 0x00000000 0x00000100 0x00000000 0x000003ff 0x00000000 0x00000200 0x00000000 0x0000000f 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000d 0x0000000d \
+ 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000009 0x00000009 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000208 0x00000000 0x00000008 0x00000008 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000007 0x00000007 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 \
+ 0x0000000b 0x0000000b 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000a 0x0000000a 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000002 0x00000002 0x00000000 \
+ 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000005 0x00000005 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000003 0x00000003 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000208 0x00000000 0x00000004 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000e 0x0000000e 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000006 \
+ 0x00000006 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x0000000c 0x0000000c 0x00000000 0x00000000 0x00000000 0x00000000 0x00000208 0x00000000 0x00000001 0x00000001 0x00000000 0x00000000 \
+ 0x00000000 0x00000000 0x00000208 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 0x00000308 \
+ 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 \
+ 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x0000000f 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x00000408 0x00000000 0x00000003 0x00000004 0x00000000 0x00000000 0x00000000 0x00000000 0x00000408 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00000000 0x00000000
+ PCI = REG_RESOURCE_REQUIREMENTS_LIST 0x00000128 0x00000128 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000001 0x00010001 0x00000008 0x00000100 0x00000000 0x00000000 0x00000000 0x00000500 \
+ 0x00000000 0x0000ffff 0x00000000 0x00000200 0x00000000 0x00000000 0x000000ff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000300 0x00000000 0x00000000 0x00000000 0x00100000 0x00000000 0xffffffff 0x00000000 \
+ 0x00000308 0x00000000 0x00000000 0x00000000 0x000f0000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0x000bffff 0x00000000 0x00000308 0x00000000 0x00000000 \
+ 0x00000000 0x00080000 0x00000000 0x000fffff 0x00000000 0x00000308 0x00000000 0x00000000 0x00000000 0x00080000 0x00000000 0xffbfffff 0x00000000 0x00000400 0x00000000 0x00000006 0x000000ff 0x00000000 0x00000000 \
+ 0x00000000 0x00000000
+ Services
+ setupdd
+ = REG_BINARY 0x0000000c 0x0001fa40 0x00000000 0x00000000
+ group = drivers
+ start = REG_DWORD 0x00000000
+ tag = REG_DWORD 0x00000001
+ type = REG_DWORD 0x00000001
+ Pcmcia
+ DataBase
+ Adaptec, Inc.
+ APA-1460 SCSI Host Adapter
+ Driver = sparrow
+ DeviceType = SCSI
+ Future Domain Corporation
+ SCSI PCMCIA Credit Card Controller
+ Driver = fd16_700
+ DeviceType = SCSI
+ KME
+ KXLC002
+ Driver = qlmini
+ DeviceType = SCSI
+ i8042prt
+ Parameters
+ EnableWheelDetection = REG_DWORD 0x00000000
+ Select
+ Current = REG_DWORD 0x00000001
+ Default = REG_DWORD 0x00000001
+ LastKnownGood = REG_DWORD 0x00000001
+ Failed = REG_DWORD 0x00000000
diff --git a/public/oak/bin/tcpip.ini b/public/oak/bin/tcpip.ini
new file mode 100644
index 000000000..719b6692f
--- /dev/null
+++ b/public/oak/bin/tcpip.ini
@@ -0,0 +1,44 @@
+//
+// This file is a regini script for modifying the system hive to load and
+// properly initialize the TCP/IP drivers. This file requires editing
+// by the user before it will work properly.
+//
+// You must edit 3 occurances of ADAPTERNAME to reflect your net adapter.
+// You must edit IPADDRESS to reflect your IpAddress.
+//
+// Note*** this file should only be used when the triple boot install
+// method for NT is used.
+//
+//
+
+\Registry\Machine
+
+ System
+ CurrentControlSet
+ Services
+ Tcpip
+ Linkage
+ bind = \Device\Streams\ADAPTERNAME
+ Parameters
+ Hostname = MACHINENAME
+ DatabasePath = REG_EXPAND_SZ %SystemRoot%\system\drivers\etc
+
+ Nbt
+ Linkage
+ bind = \Device\Streams\ADAPTERNAME
+ Parameters
+ PermanentName = MACHINENAME
+ ScopeID =
+
+ ADAPTERNAME
+ Parameters
+ TCPIP
+ AdapterType = Ether
+ IPAddress = IPADDRESS
+ SubnetMask = 255.255.0.0
+ ForwardBroadcasts = REG_DWORD 0x1
+ KeepAlive = REG_DWORD 0x1
+ BroadcastType = REG_DWORD 0x1
+ Trailers = REG_DWORD 0x0
+
+
diff --git a/public/oak/bin/userdiff b/public/oak/bin/userdiff
new file mode 100644
index 000000000..5ac364a0c
--- /dev/null
+++ b/public/oak/bin/userdiff
Binary files differ
diff --git a/public/oak/bin/userdiff.ini b/public/oak/bin/userdiff.ini
new file mode 100644
index 000000000..c146614e4
--- /dev/null
+++ b/public/oak/bin/userdiff.ini
@@ -0,0 +1,2462 @@
+//
+// This file defines the default contents of the THE_USER hive in the Windows NT
+// registry.
+//
+
+//
+// ***** ATTENTION *********************************************************************
+// *
+// * THIS FILE CONTAINS STRINGS THAT NEED TO BE LOCALIZED. THESE STRINGS ARE
+// * VALUE ENTRIES THAT REPRESENT GROUP OR ITEMS THAT ARE UNDER "START MENU\PROGRAMS"
+// * THESE STRINGS MUST BE TRANSLATED TO THE SAME NAMES USED IN SYSSETUP.INF.
+// *
+// * The name of the value entries that contain strings to be localized is always 'Item'
+// * and they are always value entries of a subkey of 'Files'. Near these strings you will
+// * always find the comment 'LOCALIZE' to warn the localization people that the string
+// * needs to be localized.
+// *
+// **************************************************************************************
+
+//
+// Get user definitions
+//
+
+// #ifndef _GENERAL_PURPOSE_
+// #include <the_user.h>
+// #endif // ndef _GENERAL_PURPOSE_
+
+//
+// predefined ACEs for creating ACLs
+// R == Read (values & subkeys)
+// W == Write (values & subkeys, create keys)
+// D == Delete keys
+// Full == All access
+//
+#define AdminFull 1
+#define AdminR 2
+#define AdminRW 3
+#define AdminRWD 4
+#define CreatorFull 5
+#define CreatorRW 6
+#define WorldFull 7
+#define WorldR 8
+#define WorldRW 9
+#define WorldRWD 10
+#define PowerFull 11
+#define PowerRW 12
+#define PowerRWD 13
+#define SystemOpFull 14
+#define SystemOpRW 15
+#define SystemOpRWD 16
+#define SystemFull 17
+#define SystemRW 18
+#define SystemR 19
+#define AdminRWX 20
+#define InteractiveFull 21
+#define InteractiveR 22
+#define InteractiveRW 23
+#define InteractiveRWD 24
+
+//
+// The following comment is an example on how to the define keys and values
+// in the userdiff hive. UserDiff is the root of userdiff hive.
+//
+// Subkeys of UserDiff indicate the build number
+//
+// UserDiff
+// //
+// // The children of UserDiff must have a name that indicates the build #
+// // where the changes were introduced
+// //
+// 1000
+// //
+// //
+// //
+// Files
+// //
+// // The subkeys of UserDiff\<Build#>\Files should a have a name
+// // that indicates the order in which the change needs to be applied.
+// // ( 1 = first, 2 = second, etc )
+// //
+//
+// 1
+// //
+// // A value entry with the name _REM indicates that the data in
+// // this entry is just a comment (not a command). It should be used
+// // to document this particular modification
+// //
+// _REM = REG_SZ "Add new Program item from Default user (cmd)"
+// //
+// // The data of the entry 'Action' indicates the command to
+// // be performed:
+// //
+// // 1 = Add new program group
+// // 2 = Delete program group
+// // 3 = Add new program item
+// // 4 = Delete program item
+// //
+// Action = REG_DWORD 3
+// //
+// // The data in 'Item' indicates the name of the item that needs to
+// // be created. Note that the group (directory) where the item is to
+// // be created must exit or be created before the item gets created.
+// // If the group does not exist, the item will not be created.
+// // LOCALIZE: The data in this value entry should be localized using
+// // the same names defined on syssetup.inf
+// //
+// Item = REG_SZ "main\cmd.lnk"
+// //
+// // This is an optional value entry that indicates if the change
+// // needs to be applied to the Workstation, Server, or both products.
+// // If the value entry is not present, then the change will be applied
+// // to both workstation and server. If the value entry is present, then
+// // its data will indicate the type of product to apply the change,
+// // as follows:
+// //
+// // 0 = All products (workstation, standalone server, and domain controllers)
+// // 1 = All server products (standalone server and domain controllers)
+// // 2 = Workstation only
+// // 3 = Standalone server only (servernt)
+// // 4 = Domain Controller only (lanmannt)
+// //
+// Product = REG_DWORD 0
+//
+//
+// 2
+// _REM = REG_SZ "This command deletes an existing item (foobar)"
+// Action = REG_DWORD 4
+// //
+// // LOCALIZE: The data in this value entry should be localized using
+// // the same names defined on syssetup.inf
+// //
+// Item = REG_SZ "main\foobar.lnk"
+//
+// 3
+// _REM = REG_SZ "This command creates a new Program group (MyApps)"
+// Action = REG_DWORD 1
+// //
+// // LOCALIZE: The data in this value entry should be localized using
+// // the same names defined on syssetup.inf
+// //
+// Item = REG_SZ "MyApps"
+//
+// 4
+// _REM = REG_SZ "This command deletes an existing Program group (Dummy)"
+// Action = REG_DWORD 2
+// //
+// // LOCALIZE: The data in this value entry should be localized using
+// // the same names defined on syssetup.inf
+// //
+// Item = REG_SZ "MyApps"
+//
+// //
+// // The subkeys of 'Hive' indicates the changes that need to be done in the user's hive
+// //
+// Hive
+// //
+// // The subkeys of UserDiff\<Build#>\Hive should a have a name
+// // that indicates the order in which the change needs to be applied.
+// // ( 1 = first, 2 = second, etc )
+// //
+// 1
+// //
+// // A value entry with the name _REM indicates that the data in
+// // this entry is just a comment (not a command). It should be used
+// // to document this particular modification
+// //
+// _REM = REG_SZ "Add new key to user's hive"
+// //
+// // The data of the entry 'Action' indicates the command to
+// // be performed:
+// //
+// // 1 = Add new key
+// // 2 = Delete a key, and all its values and subkeys
+// // 3 = Add new value entry to a key. The is created if it doesn't exist
+// // 4 = Delete a value or a list or values from an existing key.
+// //
+// Action = REG_DWORD 1
+// //
+// // The data of the entry 'KeyName' contains the name of the key to be
+// // created (full path).
+// //
+// KeyName = REG_SZ "Software\Control Panel\Desktop\Colors"
+// 2
+// _REM = REG_SZ "This command creates a new value entry called 'Menu Color' of type REG_SZ, and sets it to 128"
+// Action = REG_DWORD 3
+// KeyName = REG_SZ "Software\Control Panel\Desktop\Colors"
+// ValueName = REG_SZ "Menu Color"
+// Value = REG_SZ 128
+//
+// 3
+// _REM = REG_SZ "This command deletes a key, its values, and all its subkeys"
+// Action = REG_DWORD 2
+// KeyName = REG_SZ "Software\Microsoft\Windows NT"
+// 4
+// _REM = REG_SZ "This command deletes value entries"
+// Action = REG_DWORD 4
+// KeyName = REG_SZ "Software\Microsoft\Windows NT"
+// //
+// // The data on 'Flags' indicates how the command is to be executed:
+// // 0/not present..... Delete all values whose names are listed in 'ValueNames'
+// // 1................. Delete all values whose names are listed in 'ValueNames' and the
+// // value with no name (Win 3.1 compatible value entry)
+// // 2................. Delete all value entries
+// //
+// Flags = REG_DWORD 1
+// //
+// // The data on 'ValueNames' indicates the name of the value entries to be deleted.
+// //
+// //
+// ValueNames = REG_MULTI_SZ "FooBar FooBar1"
+//
+// //
+// // The subkeys of 'Execute' indicates the programs that need to be executed
+// //
+// Execute
+// //
+// // The subkeys of UserDiff\<Build#>\Execute should a have a name
+// // that indicates the order in which the change needs to be applied.
+// // ( 1 = first, 2 = second, etc )
+// //
+// 1
+// //
+// // A value entry with the name _REM indicates that the data in
+// // this entry is just a comment (not a command). It should be used
+// // to document this particular modification
+// //
+// _REM = REG_SZ "Execute shell migration program"
+// //
+// // Program to execute. Environment variables will be expanded before
+// // CreateProcess is called. Programs are spawned synchronously.
+// //
+// CommandLine = REG_EXPAND_SZ "%SystemRoot%\system32\shmgrate.exe W"
+//
+//
+//
+
+
+UserDiff
+ //
+ // The children of UserDiff must have a name that indicates the build #
+ // where the changes were introduced
+ //
+ 1137
+ Execute
+ 1
+ //
+ // *** THIS HAS TO BE DONE FIRST ***
+ //
+ // shmgrate.exe will set the special folder locations
+ // used by everything after this.
+ //
+ CommandLine = REG_EXPAND_SZ "%SystemRoot%\system32\shmgrate.exe Fix-Folders"
+
+ 2
+ //
+ // This converts the User's NT 3.51 personal groups
+ // to links on the start menu.
+ //
+ CommandLine = REG_EXPAND_SZ "grpconv -p"
+
+
+ 1138
+ Hive
+ 1
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Colors"
+ ValueName = REG_SZ "InactiveTitle"
+ Value = REG_SZ "128 128 128"
+
+ 2
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Colors"
+ ValueName = REG_SZ "InactiveTitleText"
+ Value = REG_SZ "255 255 255"
+
+ 3
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Colors"
+ ValueName = REG_SZ Menu
+ Value = REG_SZ "192 192 192"
+
+ 4
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"
+ ValueName = REG_SZ "NoDriveTypeAutoRun"
+ Value = REG_DWORD 0x95
+
+ 5
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Desktop\WindowMetrics"
+
+
+
+
+ 1140
+ Hive
+ 1
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+
+
+ 1156
+ Hive
+ 1
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Desktop"
+ ValueName = REG_SZ FontSmoothing
+ Value = REG_SZ 0
+
+ 1169
+ Hive
+ 1
+ Action = REG_DWORD 2
+ KeyName = REG_SZ "Control Panel\Color Schemes"
+
+ 1174
+ Hive
+ 1
+ Action = REG_DWORD 4
+ KeyName = REG_SZ "Control Panel\Desktop"
+ Flags = REG_DWORD 0
+ ValueNames = REG_MULTI_SZ "BorderWidth"
+
+ 2
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Desktop\WindowMetrics"
+ ValueName = REG_SZ BorderWidth
+ Value = REG_SZ 1
+
+ Files
+ 1
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\Introducing Windows NT.lnk"
+
+ 2
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\Introducing Windows NT.pif"
+
+ 3
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\PIF Editor.lnk"
+
+ 4
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\Control Panel.lnk"
+
+ 5
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\File Manager.lnk"
+
+ 6
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\Command Prompt.lnk"
+
+ 7
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\Windows NT Setup.lnk"
+
+ 8
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\Read Me.lnk"
+
+ 9
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\Windows NT Help.lnk"
+
+ 10
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\ClipBook Viewer.lnk"
+
+ 11
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\Print Manager.lnk"
+
+ 12
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "main\Books Online.lnk"
+
+ 13
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "games\Solitaire.lnk"
+
+ 14
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "games\Minesweeper.lnk"
+
+ 15
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "games\Freecell.lnk"
+
+ 16
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\Media Player.lnk"
+
+ 17
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\Sound Recorder.lnk"
+
+ 18
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\Volume Control.lnk"
+
+ 19
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\CD Player.lnk"
+
+ 20
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\Paintbrush.lnk"
+
+ 21
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\Paint.lnk"
+
+ 22
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\ClipBook Viewer.lnk"
+
+ 23
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\Print Manager.lnk"
+
+ 24
+ Action = REG_DWORD 1
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Accessories\Games"
+
+ 25
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\games\Solitaire.lnk"
+
+ 26
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\games\Minesweeper.lnk"
+
+ 27
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\games\Freecell.lnk"
+
+ 28
+ Action = REG_DWORD 1
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Accessories\Multimedia"
+
+ 29
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\multimedia\Media Player.lnk"
+
+ 30
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\multimedia\Sound Recorder.lnk"
+
+ 31
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\multimedia\Volume Control.lnk"
+
+ 32
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\multimedia\CD Player.lnk"
+
+ 33
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Command Prompt.lnk"
+
+ 1175
+ Hive
+ 1
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Colors"
+ ValueName = REG_SZ ButtonLight
+ Value = REG_SZ "192 192 192"
+
+ 1180
+ Execute
+ 1
+ // "Execute shell migration program (Win95->NT4.0)"
+ CommandLine = REG_EXPAND_SZ "%SystemRoot%\system32\shmgrate.exe W"
+
+ 2
+ // "Execute shell migration program (NT3.51->NT4.0)"
+ CommandLine = REG_EXPAND_SZ "%SystemRoot%\system32\shmgrate.exe Cvt-Curs"
+
+ 3
+ // "Execute shell migration program"
+ CommandLine = REG_EXPAND_SZ "%SystemRoot%\system32\shmgrate.exe Fix-Curs"
+
+ 1181
+ Files
+ 1
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Windows NT Explorer.lnk"
+
+ 2
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Windows NT Explorer.lnk"
+
+ 1182
+ Hive
+ 1
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+
+ 2
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Brick
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF4 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x77F09A58 0x003F003F 0x003F003F \
+ 0x00000000 0x00000000 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x00000000 \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x001400B8 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D2E0E1 0x00000042 0x02000080 \
+ 0x0261898D 0x02A5BFC2 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02D2E0E1 0x02A5BFC2 \
+ 0x02A5BFC2 0x02D2E0E1 0x0261898D 0x02FFFFFF \
+ 0x02A5BFC2 0x0261898D 0x0261898D 0x02000000 \
+ 0x02D2E0E1 0x02D2E0E1 0x02000000 0x02A5BFC2 \
+ 0x02000080 0x02D2E0E1
+
+
+ 3
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Maple
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x00000000 \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x001400B8 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D7ECF2 0x02000000 0x0246A6C6 \
+ 0x02A4A0A0 0x02AED8E6 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02AED8E6 \
+ 0x02AED8E6 0x02D7ECF2 0x0246A6C6 0x02000000 \
+ 0x02AED8E6 0x0246A6C6 0x0246A6C6 0x02000000 \
+ 0x02D7ECF2 0x02D7ECF2 0x02000000 0x02AED8E6 \
+ 0x02000000 0x02FFFFFF
+
+
+ 4
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Spruce
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000F \
+ 0x0000000F 0x00000012 0x00000012 0xFFFFFFF4 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x00000000 \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x001400B8 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D3E3D0 0x00213F21 0x02649759 \
+ 0x02808080 0x02A9C8A2 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02A9C8A2 \
+ 0x02A9C8A2 0x02D3E3D0 0x02649759 0x02FFFFFF \
+ 0x02A9C8A2 0x02649759 0x02649759 0x02000000 \
+ 0x02D3E3D0 0x02D3E3D0 0x02000000 0x02A9C8A2 \
+ 0x02000000 0x02FFFFFF
+
+
+ 5
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Teal (VGA)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x00000000 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x00000000 \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x001400B8 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x00000000 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x00404000 0x02808000 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02808080 0x02808000 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02F0FBFF 0x02FFFFFF 0x02000000 0x02C0C0C0 \
+ 0x02000000 0x02FFFFFF
+
+
+ 6
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Red, White, and Blue (VGA)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000013 0x00000013 0xFFFFFFF1 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000011 0x00000011 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00690054 0x0065006D 0x00200073 0x0065004E \
+ 0x00200077 0x006F0052 0x0061006D 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF3 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x00420000 0x02000080 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02FFFFFF 0x02000080 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02C0C0C0 0x02FFFFFF 0x02000000 0x02C0C0C0 \
+ 0x02800000 0x02FFFFFF
+
+
+ 7
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Wheat
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D0EEEE 0x001D4000 0x02008080 \
+ 0x0241BCBC 0x02A0DEDE 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02A0DEDE \
+ 0x02A0DEDE 0x02D0EEEE 0x02008080 0x02FFFFFF \
+ 0x02A0DEDE 0x0241BCBC 0x0241BCBC 0x02000000 \
+ 0x02FFFFFF 0x02D0EEEE 0x02000000 0x02A0DEDE \
+ 0x02000000 0x02FFFFFF
+
+
+ 8
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Pumpkin (large)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000015 \
+ 0x00000015 0x0000001A 0x0000001A 0xFFFFFFED \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000016 0x00000016 \
+ 0xFFFFFFF0 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000016 \
+ 0x00000016 0xFFFFFFF0 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF0 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF0 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02CFEAF5 0x00420042 0x022FA5D7 \
+ 0x02A4A0A0 0x029DD5EC 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x029DD5EC \
+ 0x029DD5EC 0x02CFEAF5 0x02800080 0x02FFFFFF \
+ 0x029DD5EC 0x022FA5D7 0x022FA5D7 0x02000000 \
+ 0x02CFEAF5 0x02CFEAF5 0x02000000 0x029DD5EC \
+ 0x02800080 0x02FFFFFF
+
+
+ 9
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Eggplant
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000010 \
+ 0x00000010 0x00000013 0x00000013 0xFFFFFFF1 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000011 0x00000011 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00690054 0x0065006D 0x00200073 0x0065004E \
+ 0x00200077 0x006F0052 0x0061006D 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF3 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02A8B090 0x00400040 0x02788058 \
+ 0x02A8B090 0x02A8B090 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02A8B090 \
+ 0x02A8B090 0x02808080 0x02788058 0x02FFFFFF \
+ 0x02A8B090 0x02788058 0x02788058 0x02000000 \
+ 0x02788058 0x02D8D8C8 0x02000000 0x02A8B090 \
+ 0x02800080 0x02FFFFFF
+
+
+ 10
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Rainy Day
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D9CCC1 0x02000000 0x027D654F \
+ 0x02808080 0x02B19983 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02B19983 \
+ 0x02B19983 0x02808080 0x027D654F 0x02FFFFFF \
+ 0x02B19983 0x027D654F 0x027D654F 0x02000000 \
+ 0x02D9CCC1 0x02D9CCC1 0x02000000 0x02B19983 \
+ 0x02000000 0x02FFFFFF
+
+
+ 11
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Desert
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02DDE6EA 0x02688DA2 0x02808000 \
+ 0x02688DA2 0x02BBCCD5 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02BBCCD5 \
+ 0x02BBCCD5 0x02688DA2 0x02808000 0x02FFFFFF \
+ 0x02BBCCD5 0x02688DA2 0x02688DA2 0x02000000 \
+ 0x02FFFFFF 0x02DDE6EA 0x02000000 0x02BBCCD5 \
+ 0x02000000 0x02FFFFFF
+
+
+ 12
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Marine (high color)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000D 0x0000000D \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x006D0053 \
+ 0x006C0061 0x0020006C 0x006F0046 0x0074006E \
+ 0x00000073 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D8E0C8 0x00474E2C 0x02800000 \
+ 0x02889048 0x02B8C088 0x02D8E0C8 0x02000000 \
+ 0x02000000 0x02000000 0x02C0C0C0 0x02B8C088 \
+ 0x02B8C088 0x00848D4B 0x02800000 0x02FFFFFF \
+ 0x02B8C088 0x02889048 0x02889048 0x02000000 \
+ 0x02C0C0C0 0x02D8E0C8 0x02000000 0x02B8C088 \
+ 0x02000000 0x02D8E0C8
+
+
+ 13
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Windows Standard (extra large)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000015 \
+ 0x00000015 0x00000018 0x00000018 0xFFFFFFED \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000012 0x00000012 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x006F0046 0x0074006E \
+ 0x00000073 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000015 \
+ 0x00000015 0xFFFFFFF0 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF0 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF0 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x02808000 0x02800000 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02808080 0x02800000 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02C0C0C0 0x02FFFFFF 0x02000000 0x02DFDFDF \
+ 0x02000000 0x00E1FFFF
+
+
+ 14
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Storm (VGA)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF5 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x02000000 0x02800080 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02808080 0x02800080 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02000000 0x02FFFFFF 0x02000000 0x02C0C0C0 \
+ 0x02800080 0x02FFFFFF
+
+
+ 15
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Windows Standard
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000010 \
+ 0x00000010 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF8 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x02808000 0x02800000 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02808080 0x02800000 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02C0C0C0 0x02FFFFFF 0x02000000 0x02DFDFDF \
+ 0x02000000 0x00E1FFFF
+
+
+ 16
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Windows Standard (large)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000012 \
+ 0x00000012 0x00000016 0x00000016 0xFFFFFFF0 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000012 0x00000012 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF3 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF3 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x02808000 0x02800000 \
+ 0x02808080 0x02C0C0C0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C0C0C0 \
+ 0x02C0C0C0 0x02808080 0x02800000 0x02FFFFFF \
+ 0x02C0C0C0 0x02808080 0x02808080 0x02000000 \
+ 0x02C0C0C0 0x02FFFFFF 0x02000000 0x02DFDFDF \
+ 0x02000000 0x02E1FFFF
+
+
+ 17
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Rose
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000F \
+ 0x0000000F 0x00000017 0x00000017 0xFFFFFFED \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000011 0x00000011 \
+ 0xFFFFFFF3 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02B7AFCF 0x02808080 0x0270609F \
+ 0x02A4A0A0 0x02B7AFCF 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02B7AFCF \
+ 0x02B7AFCF 0x0270609F 0x0270609F 0x02FFFFFF \
+ 0x02B7AFCF 0x0270609F 0x0270609F 0x02000000 \
+ 0x02000000 0x02DCD8E7 0x02000000 0x02B7AFCF \
+ 0x02000000 0x02FFFFFF
+
+
+ 18
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ High Contrast Black (large)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000006 0x0000001C \
+ 0x0000001C 0x0000001F 0x0000001F 0xFFFFFFE8 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000001A 0x0000001A \
+ 0xFFFFFFEC 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x0000001E \
+ 0x0000001E 0xFFFFFFE8 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFEC 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFE8 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFEC 0x00000000 \
+ 0x00000000 0x00000000 0x000002BC 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02000000 0x02000000 0x02800080 \
+ 0x02008000 0x02000000 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x0200FFFF \
+ 0x02008000 0x02000000 0x02800080 0x02FFFFFF \
+ 0x02000000 0x02808080 0x0200FF00 0x02FFFFFF \
+ 0x02FFFFFF 0x02C0C0C0 0x02FFFFFF 0x02FFFFFF \
+ 0x02FFFFFF 0x02000000
+
+
+ 19
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ High Contrast Black (extra large)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000006 0x00000020 \
+ 0x00000020 0x00000025 0x00000025 0xFFFFFFE2 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000001C 0x0000001C \
+ 0xFFFFFFE9 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000026 \
+ 0x00000026 0xFFFFFFE2 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFE9 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFE1 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFE9 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02000000 0x02000000 0x02800080 \
+ 0x02008000 0x02000000 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x0200FFFF \
+ 0x02008000 0x02000000 0x02800080 0x02FFFFFF \
+ 0x02000000 0x02808080 0x0200FF00 0x02FFFFFF \
+ 0x02FFFFFF 0x02C0C0C0 0x02FFFFFF 0x02FFFFFF \
+ 0x02FFFFFF 0x02000000
+
+
+ 20
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ High Contrast White (large)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000007 0x0000001A \
+ 0x0000001A 0x00000025 0x00000025 0xFFFFFFE8 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000001C 0x0000001C \
+ 0xFFFFFFED 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x0000001B \
+ 0x0000001B 0xFFFFFFEB 0x00000000 0x00000000 \
+ 0x00000000 0x000002BC 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFED 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFEB \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFEC 0x00000000 \
+ 0x00000000 0x00000000 0x000002BC 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02808080 \
+ 0x02C0C0C0 0x02808080 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02808080 0x0200FF00 0x02000000 \
+ 0x02000000 0x02C0C0C0 0x02000000 0x02C0C0C0 \
+ 0x02000000 0x02FFFFFF
+
+
+ 21
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ High Contrast White (extra large)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000006 0x0000001E \
+ 0x0000001E 0x00000026 0x00000026 0xFFFFFFE2 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000001C 0x0000001C \
+ 0xFFFFFFE9 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000026 \
+ 0x00000026 0xFFFFFFE2 0x00000000 0x00000000 \
+ 0x00000000 0x000002BC 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFE9 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFEB \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFE9 0x00000000 \
+ 0x00000000 0x00000000 0x000002BC 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02808080 \
+ 0x02C0C0C0 0x02808080 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02808080 0x0200FF00 0x02000000 \
+ 0x02000000 0x02C0C0C0 0x02000000 0x02C0C0C0 \
+ 0x02000000 0x02FFFFFF
+
+
+ 22
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Rose (large)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000002 0x00000011 \
+ 0x00000011 0x0000001C 0x0000001C 0xFFFFFFE9 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00690054 0x0065006D \
+ 0x00200073 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000015 0x00000015 \
+ 0xFFFFFFF0 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00690054 \
+ 0x0065006D 0x00200073 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000016 \
+ 0x00000016 0xFFFFFFEF 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF0 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFEF \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFEF 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02C0C0C0 0x02808080 0x027060A0 \
+ 0x02A4A0A0 0x02B8B0D0 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02B8B0D0 \
+ 0x02B8B0D0 0x02E0D8E8 0x027060A0 0x02FFFFFF \
+ 0x02B8B0D0 0x027060A0 0x027060A0 0x02000000 \
+ 0x02000000 0x02E0D8E8 0x02000000 0x02B8B0D0 \
+ 0x02000000 0x02FFFFFF
+
+
+ 23
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Lilac
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000F \
+ 0x0000000F 0x00000016 0x00000016 0xFFFFFFF0 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000010 0x00000010 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF3 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF3 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF5 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D9A8AE 0x02000000 0x02B14E5A \
+ 0x02808080 0x02D9A8AE 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02D9A8AE \
+ 0x02D9A8AE 0x02B14E5A 0x02B14E5A 0x02FFFFFF \
+ 0x02D9A8AE 0x02B14E5A 0x02B14E5A 0x02000000 \
+ 0x02FFFFFF 0x02ECD5D8 0x02000000 0x02D9A8AE \
+ 0x02000000 0x02FFFFFF
+
+
+ 24
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Lilac (large)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000F \
+ 0x0000000F 0x0000001D 0x0000001D 0xFFFFFFE9 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x0065004E 0x00200077 0x006F0052 \
+ 0x0061006D 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x00000015 0x00000015 \
+ 0xFFFFFFF0 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x0065004E 0x00200077 \
+ 0x006F0052 0x0061006D 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000015 \
+ 0x00000015 0xFFFFFFF0 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x00720041 0x00610069 0x0000006C 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF0 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 \
+ 0x00610069 0x0000006C 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFEF \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006C 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF0 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x00720041 0x00610069 0x0000006C \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02D9A8AE 0x02000000 0x02B14E5A \
+ 0x02808080 0x02D9A8AE 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02D9A8AE \
+ 0x02D9A8AE 0x02B14E5A 0x02B14E5A 0x02FFFFFF \
+ 0x02D9A8AE 0x02B14E5A 0x02B14E5A 0x02000000 \
+ 0x02FFFFFF 0x02ECD5D8 0x02000000 0x02D9A8AE \
+ 0x02000000 0x02FFFFFF
+
+
+ 25
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Slate
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02E3DCCE 0x00414141 0x02978055 \
+ 0x02808080 0x02C8B99D 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02C8B99D \
+ 0x02C8B99D 0x00424242 0x02978055 0x02FFFFFF \
+ 0x02C8B99D 0x02978055 0x02978055 0x02000000 \
+ 0x02C0C0C0 0x02E3DCCE 0x02000000 0x02C8B99D \
+ 0x02000000 0x02FFFFFF
+
+
+ 26
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ Plum (high color)
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x0000000D \
+ 0x0000000D 0x00000012 0x00000012 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF8 0x00000000 \
+ 0x00000000 0x00000000 0x00000190 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x00C8D0D8 0x00402840 0x00604048 \
+ 0x00586078 0x009098A8 0x00C8D0D8 0x00000000 \
+ 0x00000000 0x00000000 0x00C8D0D8 0x009098A8 \
+ 0x009098A8 0x005A6374 0x00484828 0x00C8D0D8 \
+ 0x009098A8 0x00586078 0x00586078 0x00000000 \
+ 0x009098A8 0x00C8D0D8 0x00000000 0x009098A8 \
+ 0x00580030 0x00C8CCD5
+
+
+ 27
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ High Contrast Black
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000011 \
+ 0x00000011 0x00000014 0x00000014 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x00000190 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF5 0x00000000 \
+ 0x00000000 0x00000000 0x000002BC 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02000000 0x02000000 0x02800080 \
+ 0x02008000 0x02000000 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x0200FFFF \
+ 0x02008000 0x02000000 0x02800080 0x02FFFFFF \
+ 0x02000000 0x02808080 0x0200FF00 0x02FFFFFF \
+ 0x02FFFFFF 0x02C0C0C0 0x02FFFFFF 0x02FFFFFF \
+ 0x02FFFFFF 0x02000000
+
+
+ 28
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Appearance\Schemes"
+ ValueName = REG_SZ High Contrast White
+ Value = REG_BINARY 0x2B8 0x00000002 0x000001F4 0x00000001 0x00000011 \
+ 0x00000011 0x00000014 0x00000014 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000000 0x00780000 \
+ 0x7FFC101C 0x7FFC1422 0x0012FEB0 0x00000000 \
+ 0x00000000 0x77EB2398 0x0000000F 0x0000000F \
+ 0xFFFFFFF8 0x00000000 0x00000000 0x00000000 \
+ 0x000002BC 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x00000000 \
+ 0x00142000 0x77F0B9AC 0x00142000 0x10000000 \
+ 0x00140580 0x00141FF0 0x00140000 0x00000012 \
+ 0x00000012 0xFFFFFFF5 0x00000000 0x00000000 \
+ 0x00000000 0x000002BC 0x00000000 0x00000000 \
+ 0x0053004D 0x00530020 0x006E0061 0x00200073 \
+ 0x00650053 0x00690072 0x00000066 0x0000006E \
+ 0x00000000 0x00000000 0x00140580 0x77E8FB88 \
+ 0x00000202 0x77F0B9AC 0x00000000 0x00000020 \
+ 0xFFFFFFF5 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004D \
+ 0x00530020 0x006E0061 0x00200073 0x00650053 \
+ 0x00690072 0x00000066 0x0000006E 0x77F0C0B4 \
+ 0x00000000 0x00000000 0x00000000 0x00000000 \
+ 0x00000000 0x77E86B7C 0x00000000 0xFFFFFFF5 \
+ 0x00000000 0x00000000 0x00000000 0x000002BC \
+ 0x00000000 0x00000000 0x0053004D 0x00530020 \
+ 0x006E0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006E 0x00000BC8 0x00000000 \
+ 0x00000008 0x00000006 0x00000018 0xFFFFFFFF \
+ 0xFC214BF0 0x77F0C400 0xFFFFFFF5 0x00000000 \
+ 0x00000000 0x00000000 0x000002BC 0x00000000 \
+ 0x00000000 0x0053004D 0x00530020 0x006E0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 \
+ 0x00000000 0x00000000 0x00000000 0x00141DC0 \
+ 0x0000000B 0x0012FF00 0x00000050 0x0012FEC0 \
+ 0x0100100C 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02FFFFFF 0x02FFFFFF 0x02FFFFFF 0x02000000 \
+ 0x02000000 0x02000000 0x02FFFFFF 0x02808080 \
+ 0x02C0C0C0 0x02808080 0x02000000 0x02FFFFFF \
+ 0x02FFFFFF 0x02808080 0x0200FF00 0x02000000 \
+ 0x02000000 0x02C0C0C0 0x02000000 0x02C0C0C0 \
+ 0x02000000 0x02FFFFFF
+
+ 1191
+ Hive
+ 1
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Desktop"
+ ValueName = REG_SZ "CoolSwitchRows"
+ Value = REG_SZ 3
+
+ 2
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Desktop"
+ ValueName = REG_SZ "CoolSwitchColumns"
+ Value = REG_SZ 7
+
+
+ 1197
+ Files
+ 1
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Accessories\Terminal.lnk"
+
+ 2
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Accessories\HyperTerminal.lnk"
+
+
+ 1224
+ Files
+ 1
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Accessories\Phone Dialer.lnk"
+
+
+ 1228
+ Hive
+ 1
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Software\Microsoft\Windows\CurrentVersion\Telephony\HandoffPriorities"
+
+ 2
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Software\Microsoft\Windows\CurrentVersion\Telephony\HandoffPriorities"
+ ValueName = REG_SZ "RequestMakeCall"
+ Value = REG_SZ dialer.exe
+
+
+ 1235
+ Execute
+ 1
+ // "Execute shell migration program (Fix special folder names)"
+ CommandLine = REG_EXPAND_SZ "%SystemRoot%\system32\shmgrate.exe Fix-Folders"
+
+
+ 1248
+ Hive
+ 1
+ Action = REG_DWORD 4
+ KeyName = REG_SZ "Control Panel\Colors"
+ Flags = REG_DWORD 0
+ ValueNames = REG_MULTI_SZ "Inactive Title Text"
+
+ 2
+ Action = REG_DWORD 4
+ KeyName = REG_SZ "Control Panel\Colors"
+ Flags = REG_DWORD 0
+ ValueNames = REG_MULTI_SZ "Inactive Title"
+
+
+ 1257
+ Files
+ 1
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "accessories\Print Manager.lnk"
+
+ Hive
+ 1
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Accessibility"
+
+ 2
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Accessibility\Keyboard Response"
+
+ 3
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\Keyboard Response"
+ ValueName = REG_SZ AutoRepeatDelay
+ Value = REG_SZ 1000
+
+ 4
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\Keyboard Response"
+ ValueName = REG_SZ AutoRepeatRate
+ Value = REG_SZ 500
+
+ 5
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\Keyboard Response"
+ ValueName = REG_SZ BounceTime
+ Value = REG_SZ 0
+
+ 6
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\Keyboard Response"
+ ValueName = REG_SZ DelayBeforeAcceptance
+ Value = REG_SZ 1000
+
+ 7
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\Keyboard Response"
+ ValueName = REG_SZ Flags
+ Value = REG_SZ 82
+
+ 8
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Accessibility\MouseKeys"
+
+ 9
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\MouseKeys"
+ ValueName = REG_SZ Flags
+ Value = REG_SZ 18
+
+ 10
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\MouseKeys"
+ ValueName = REG_SZ MaximumSpeed
+ Value = REG_SZ 40
+
+ 11
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\MouseKeys"
+ ValueName = REG_SZ TimeToMaximumSpeed
+ Value = REG_SZ 3000
+
+ 12
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Accessibility\ShowSounds"
+
+ 13
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\ShowSounds"
+ ValueName = REG_SZ On
+ Value = REG_SZ 0
+
+ 14
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Accessibility\SoundSentry"
+
+ 15
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\SoundSentry"
+ ValueName = REG_SZ Flags
+ Value = REG_SZ 2
+
+ 16
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\SoundSentry"
+ ValueName = REG_SZ FSTextEffect
+ Value = REG_SZ 0
+
+ 17
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\SoundSentry"
+ ValueName = REG_SZ WindowsEffect
+ Value = REG_SZ 0
+
+ 18
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Accessibility\StickyKeys"
+
+ 19
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\StickyKeys"
+ ValueName = REG_SZ Flags
+ Value = REG_SZ 466
+
+ 20
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Accessibility\TimeOut"
+
+ 21
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\TimeOut"
+ ValueName = REG_SZ Flags
+ Value = REG_SZ 2
+
+ 22
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\TimeOut"
+ ValueName = REG_SZ TimeToWait
+ Value = REG_SZ 300000
+
+ 23
+ Action = REG_DWORD 1
+ KeyName = REG_SZ "Control Panel\Accessibility\ToggleKeys"
+
+ 24
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Accessibility\ToggleKeys"
+ ValueName = REG_SZ Flags
+ Value = REG_SZ 18
+
+ 1262
+ Hive
+ 1
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Mouse"
+ ValueName = REG_SZ DoubleClickSpeed
+ Value = REG_SZ 500
+
+ 2
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Desktop"
+ ValueName = REG_SZ MenuShowDelay
+ Value = REG_SZ 400
+
+
+ 1271
+ Hive
+ 1
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "AppEvents\Schemes\Apps\.Default\SystemStart\.Current"
+ ValueName = REG_SZ ""
+ Value = REG_SZ "Windows NT Logon Sound.wav"
+
+ 2
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "AppEvents\Schemes\Apps\.Default\SystemExit\.Current"
+ ValueName = REG_SZ ""
+ Value = REG_SZ "Windows NT Logoff Sound.wav"
+
+ Files
+ 1
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\Remote Access Admin.lnk"
+
+ 2
+ Action = REG_DWORD 3
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Accessories\Dial-up Networking.lnk"
+
+
+ 1291
+ Files
+ 1
+ Action = REG_DWORD 4
+ Product = REG_DWORD 0
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\Disk Administrator.lnk"
+
+ 2
+ Action = REG_DWORD 4
+ Product = REG_DWORD 0
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\Performance Monitor.lnk"
+
+ 3
+ Action = REG_DWORD 4
+ Product = REG_DWORD 0
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\Backup.lnk"
+
+ 4
+ Action = REG_DWORD 4
+ Product = REG_DWORD 0
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\Event Viewer.lnk"
+
+ 5
+ Action = REG_DWORD 4
+ Product = REG_DWORD 0
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\Windows NT Diagnostics.lnk"
+
+ 6
+ Action = REG_DWORD 4
+ Product = REG_DWORD 0
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\Remote Access Admin.lnk"
+
+ 7
+ Action = REG_DWORD 4
+ Product = REG_DWORD 1
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\User Manager for Domains.lnk"
+
+ 8
+ Action = REG_DWORD 4
+ Product = REG_DWORD 1
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\Server Manager.lnk"
+
+ 9
+ Action = REG_DWORD 4
+ Product = REG_DWORD 1
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\Migration Tool for NetWare.lnk"
+
+ 10
+ Action = REG_DWORD 4
+ Product = REG_DWORD 1
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\User Profile Editor.lnk"
+
+ 11
+ Action = REG_DWORD 4
+ Product = REG_DWORD 0
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\User Manager.lnk"
+
+ 12
+ Action = REG_DWORD 4
+ Product = REG_DWORD 0
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\DCOM Configuration.lnk"
+
+ 13
+ Action = REG_DWORD 4
+ Product = REG_DWORD 1
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Administrative Tools\Administrative Wizards.lnk"
+
+ 14
+ Action = REG_DWORD 4
+ Product = REG_DWORD 1
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Network Administration\Network Client Administrator.lnk"
+
+ 15
+ Action = REG_DWORD 4
+ Product = REG_DWORD 1
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Network Administration\License Manager.lnk"
+
+ 16
+ Action = REG_DWORD 4
+ Product = REG_DWORD 2
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Books Online.lnk"
+
+ 1292
+ Execute
+ 1
+ // "Execute shell migration program (Fix special folder names)"
+ CommandLine = REG_EXPAND_SZ "%SystemRoot%\system32\shmgrate.exe Fix-Folders"
+
+
+ 1324
+ Hive
+ 1
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Desktop"
+ ValueName = REG_SZ DragHeight
+ Value = REG_SZ 2
+
+ 2
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Desktop"
+ ValueName = REG_SZ DragWidth
+ Value = REG_SZ 2
+
+ 3
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Desktop"
+ ValueName = REG_SZ WheelScrollLines
+ Value = REG_SZ 3
+
+ 1342
+ Hive
+ 1
+ Action = REG_DWORD 3
+ KeyName = REG_SZ "Control Panel\Mouse"
+ ValueName = REG_SZ ActiveWindowTracking
+ Value = REG_DWORD 0x00000000
+
+ 1348
+ Execute
+ 1
+ // "Execute shell migration program (Fix policy security)
+ CommandLine = REG_EXPAND_SZ "%SystemRoot%\system32\shmgrate.exe Fix-User-Security"
+
+ 1370
+ Files
+ 1
+ Action = REG_DWORD 4
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Accessories\Write.lnk"
+
+ 1372
+ Files
+ 1
+ Action = REG_DWORD 3
+ Product = REG_DWORD 1
+ //
+ // LOCALIZE: The data in this value entry should be localized using
+ // the same names defined on syssetup.inf
+ //
+ Item = REG_SZ "Books Online.lnk"
diff --git a/public/oak/bin/userdiff.log b/public/oak/bin/userdiff.log
new file mode 100644
index 000000000..9e1b74f2c
--- /dev/null
+++ b/public/oak/bin/userdiff.log
@@ -0,0 +1,868 @@
+UserDiff
+ 1137
+ Execute
+ 1
+ CommandLine = REG_EXPAND_SZ %SystemRoot%\system32\shmgrate.exe Fix-Folders
+ 2
+ CommandLine = REG_EXPAND_SZ grpconv -p
+ 1138
+ Hive
+ 1
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Colors
+ ValueName = InactiveTitle
+ Value = 128 128 128
+ 2
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Colors
+ ValueName = InactiveTitleText
+ Value = 255 255 255
+ 3
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Colors
+ ValueName = Menu
+ Value = 192 192 192
+ 4
+ Action = REG_DWORD 0x00000003
+ KeyName = SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
+ ValueName = NoDriveTypeAutoRun
+ Value = REG_DWORD 0x00000095
+ 5
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Desktop\WindowMetrics
+ 1140
+ Hive
+ 1
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Appearance\Schemes
+ 1156
+ Hive
+ 1
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Desktop
+ ValueName = FontSmoothing
+ Value = 0
+ 1169
+ Hive
+ 1
+ Action = REG_DWORD 0x00000002
+ KeyName = Control Panel\Color Schemes
+ 1174
+ Hive
+ 1
+ Action = REG_DWORD 0x00000004
+ KeyName = Control Panel\Desktop
+ Flags = REG_DWORD 0x00000000
+ ValueNames = REG_MULTI_SZ "BorderWidth"
+ 2
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Desktop\WindowMetrics
+ ValueName = BorderWidth
+ Value = 1
+ Files
+ 1
+ Action = REG_DWORD 0x00000004
+ Item = main\Introducing Windows NT.lnk
+ 2
+ Action = REG_DWORD 0x00000004
+ Item = main\Introducing Windows NT.pif
+ 3
+ Action = REG_DWORD 0x00000004
+ Item = main\PIF Editor.lnk
+ 4
+ Action = REG_DWORD 0x00000004
+ Item = main\Control Panel.lnk
+ 5
+ Action = REG_DWORD 0x00000004
+ Item = main\File Manager.lnk
+ 6
+ Action = REG_DWORD 0x00000004
+ Item = main\Command Prompt.lnk
+ 7
+ Action = REG_DWORD 0x00000004
+ Item = main\Windows NT Setup.lnk
+ 8
+ Action = REG_DWORD 0x00000004
+ Item = main\Read Me.lnk
+ 9
+ Action = REG_DWORD 0x00000004
+ Item = main\Windows NT Help.lnk
+ 10
+ Action = REG_DWORD 0x00000004
+ Item = main\ClipBook Viewer.lnk
+ 11
+ Action = REG_DWORD 0x00000004
+ Item = main\Print Manager.lnk
+ 12
+ Action = REG_DWORD 0x00000004
+ Item = main\Books Online.lnk
+ 13
+ Action = REG_DWORD 0x00000004
+ Item = games\Solitaire.lnk
+ 14
+ Action = REG_DWORD 0x00000004
+ Item = games\Minesweeper.lnk
+ 15
+ Action = REG_DWORD 0x00000004
+ Item = games\Freecell.lnk
+ 16
+ Action = REG_DWORD 0x00000004
+ Item = accessories\Media Player.lnk
+ 17
+ Action = REG_DWORD 0x00000004
+ Item = accessories\Sound Recorder.lnk
+ 18
+ Action = REG_DWORD 0x00000004
+ Item = accessories\Volume Control.lnk
+ 19
+ Action = REG_DWORD 0x00000004
+ Item = accessories\CD Player.lnk
+ 20
+ Action = REG_DWORD 0x00000004
+ Item = accessories\Paintbrush.lnk
+ 21
+ Action = REG_DWORD 0x00000003
+ Item = accessories\Paint.lnk
+ 22
+ Action = REG_DWORD 0x00000003
+ Item = accessories\ClipBook Viewer.lnk
+ 23
+ Action = REG_DWORD 0x00000003
+ Item = accessories\Print Manager.lnk
+ 24
+ Action = REG_DWORD 0x00000001
+ Item = Accessories\Games
+ 25
+ Action = REG_DWORD 0x00000003
+ Item = accessories\games\Solitaire.lnk
+ 26
+ Action = REG_DWORD 0x00000003
+ Item = accessories\games\Minesweeper.lnk
+ 27
+ Action = REG_DWORD 0x00000003
+ Item = accessories\games\Freecell.lnk
+ 28
+ Action = REG_DWORD 0x00000001
+ Item = Accessories\Multimedia
+ 29
+ Action = REG_DWORD 0x00000003
+ Item = accessories\multimedia\Media Player.lnk
+ 30
+ Action = REG_DWORD 0x00000003
+ Item = accessories\multimedia\Sound Recorder.lnk
+ 31
+ Action = REG_DWORD 0x00000003
+ Item = accessories\multimedia\Volume Control.lnk
+ 32
+ Action = REG_DWORD 0x00000003
+ Item = accessories\multimedia\CD Player.lnk
+ 33
+ Action = REG_DWORD 0x00000003
+ Item = Command Prompt.lnk
+ 1175
+ Hive
+ 1
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Colors
+ ValueName = ButtonLight
+ Value = 192 192 192
+ 1180
+ Execute
+ 1
+ CommandLine = REG_EXPAND_SZ %SystemRoot%\system32\shmgrate.exe W
+ 2
+ CommandLine = REG_EXPAND_SZ %SystemRoot%\system32\shmgrate.exe Cvt-Curs
+ 3
+ CommandLine = REG_EXPAND_SZ %SystemRoot%\system32\shmgrate.exe Fix-Curs
+ 1181
+ Files
+ 1
+ Action = REG_DWORD 0x00000004
+ Item = Windows NT Explorer.lnk
+ 2
+ Action = REG_DWORD 0x00000003
+ Item = Windows NT Explorer.lnk
+ 1182
+ Hive
+ 1
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Appearance\Schemes
+ 2
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Brick
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff4 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x77f09a58 0x003f003f 0x003f003f 0x00000000 0x00000000 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x001400b8 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d2e0e1 \
+ 0x00000042 0x02000080 0x0261898d 0x02a5bfc2 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02d2e0e1 0x02a5bfc2 0x02a5bfc2 0x02d2e0e1 0x0261898d 0x02ffffff 0x02a5bfc2 0x0261898d 0x0261898d 0x02000000 0x02d2e0e1 \
+ 0x02d2e0e1 0x02000000 0x02a5bfc2 0x02000080 0x02d2e0e1
+ 3
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Maple
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x001400b8 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d7ecf2 \
+ 0x02000000 0x0246a6c6 0x02a4a0a0 0x02aed8e6 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02aed8e6 0x02aed8e6 0x02d7ecf2 0x0246a6c6 0x02000000 0x02aed8e6 0x0246a6c6 0x0246a6c6 0x02000000 0x02d7ecf2 \
+ 0x02d7ecf2 0x02000000 0x02aed8e6 0x02000000 0x02ffffff
+ 4
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Spruce
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000f 0x0000000f 0x00000012 0x00000012 0xfffffff4 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x001400b8 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d3e3d0 \
+ 0x00213f21 0x02649759 0x02808080 0x02a9c8a2 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02a9c8a2 0x02a9c8a2 0x02d3e3d0 0x02649759 0x02ffffff 0x02a9c8a2 0x02649759 0x02649759 0x02000000 0x02d3e3d0 \
+ 0x02d3e3d0 0x02000000 0x02a9c8a2 0x02000000 0x02ffffff
+ 5
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Teal (VGA)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x001400b8 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 \
+ 0x00404000 0x02808000 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02808080 0x02808000 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 0x02f0fbff \
+ 0x02ffffff 0x02000000 0x02c0c0c0 0x02000000 0x02ffffff
+ 6
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Red, White, and Blue (VGA)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000013 0x00000013 0xfffffff1 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000011 0x00000011 0xfffffff3 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 \
+ 0x0061006d 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d \
+ 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 \
+ 0x00420000 0x02000080 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02ffffff 0x02000080 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 0x02c0c0c0 \
+ 0x02ffffff 0x02000000 0x02c0c0c0 0x02800000 0x02ffffff
+ 7
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Wheat
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d0eeee \
+ 0x001d4000 0x02008080 0x0241bcbc 0x02a0dede 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02a0dede 0x02a0dede 0x02d0eeee 0x02008080 0x02ffffff 0x02a0dede 0x0241bcbc 0x0241bcbc 0x02000000 0x02ffffff \
+ 0x02d0eeee 0x02000000 0x02a0dede 0x02000000 0x02ffffff
+ 8
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Pumpkin (large)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000015 0x00000015 0x0000001a 0x0000001a 0xffffffed 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000016 0x00000016 0xfffffff0 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000016 0x00000016 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02cfeaf5 \
+ 0x00420042 0x022fa5d7 0x02a4a0a0 0x029dd5ec 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x029dd5ec 0x029dd5ec 0x02cfeaf5 0x02800080 0x02ffffff 0x029dd5ec 0x022fa5d7 0x022fa5d7 0x02000000 0x02cfeaf5 \
+ 0x02cfeaf5 0x02000000 0x029dd5ec 0x02800080 0x02ffffff
+ 9
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Eggplant
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000010 0x00000010 0x00000013 0x00000013 0xfffffff1 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000011 0x00000011 0xfffffff3 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 \
+ 0x0061006d 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d \
+ 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02a8b090 \
+ 0x00400040 0x02788058 0x02a8b090 0x02a8b090 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02a8b090 0x02a8b090 0x02808080 0x02788058 0x02ffffff 0x02a8b090 0x02788058 0x02788058 0x02000000 0x02788058 \
+ 0x02d8d8c8 0x02000000 0x02a8b090 0x02800080 0x02ffffff
+ 10
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Rainy Day
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d9ccc1 \
+ 0x02000000 0x027d654f 0x02808080 0x02b19983 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02b19983 0x02b19983 0x02808080 0x027d654f 0x02ffffff 0x02b19983 0x027d654f 0x027d654f 0x02000000 0x02d9ccc1 \
+ 0x02d9ccc1 0x02000000 0x02b19983 0x02000000 0x02ffffff
+ 11
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Desert
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02dde6ea \
+ 0x02688da2 0x02808000 0x02688da2 0x02bbccd5 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02bbccd5 0x02bbccd5 0x02688da2 0x02808000 0x02ffffff 0x02bbccd5 0x02688da2 0x02688da2 0x02000000 0x02ffffff \
+ 0x02dde6ea 0x02000000 0x02bbccd5 0x02000000 0x02ffffff
+ 12
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Marine (high color)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000d 0x0000000d 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x006d0053 0x006c0061 0x0020006c 0x006f0046 0x0074006e 0x00000073 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d8e0c8 \
+ 0x00474e2c 0x02800000 0x02889048 0x02b8c088 0x02d8e0c8 0x02000000 0x02000000 0x02000000 0x02c0c0c0 0x02b8c088 0x02b8c088 0x00848d4b 0x02800000 0x02ffffff 0x02b8c088 0x02889048 0x02889048 0x02000000 0x02c0c0c0 \
+ 0x02d8e0c8 0x02000000 0x02b8c088 0x02000000 0x02d8e0c8
+ 13
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Windows Standard (extra large)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000015 0x00000015 0x00000018 0x00000018 0xffffffed 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000012 0x00000012 0xfffffff3 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x006f0046 0x0074006e 0x00000073 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000015 0x00000015 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 \
+ 0x02808000 0x02800000 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02808080 0x02800000 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 0x02c0c0c0 \
+ 0x02ffffff 0x02000000 0x02dfdfdf 0x02000000 0x00e1ffff
+ 14
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Storm (VGA)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 \
+ 0x02000000 0x02800080 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02808080 0x02800080 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 0x02000000 \
+ 0x02ffffff 0x02000000 0x02c0c0c0 0x02800080 0x02ffffff
+ 15
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Windows Standard
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000010 0x00000010 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff8 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 \
+ 0x02808000 0x02800000 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02808080 0x02800000 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 0x02c0c0c0 \
+ 0x02ffffff 0x02000000 0x02dfdfdf 0x02000000 0x00e1ffff
+ 16
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Windows Standard (large)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000012 0x00000012 0x00000016 0x00000016 0xfffffff0 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000012 0x00000012 0xfffffff3 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 \
+ 0x02808000 0x02800000 0x02808080 0x02c0c0c0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c0c0c0 0x02c0c0c0 0x02808080 0x02800000 0x02ffffff 0x02c0c0c0 0x02808080 0x02808080 0x02000000 0x02c0c0c0 \
+ 0x02ffffff 0x02000000 0x02dfdfdf 0x02000000 0x02e1ffff
+ 17
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Rose
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000f 0x0000000f 0x00000017 0x00000017 0xffffffed 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000011 0x00000011 0xfffffff3 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02b7afcf \
+ 0x02808080 0x0270609f 0x02a4a0a0 0x02b7afcf 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02b7afcf 0x02b7afcf 0x0270609f 0x0270609f 0x02ffffff 0x02b7afcf 0x0270609f 0x0270609f 0x02000000 0x02000000 \
+ 0x02dcd8e7 0x02000000 0x02b7afcf 0x02000000 0x02ffffff
+ 18
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = High Contrast Black (large)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000006 0x0000001c 0x0000001c 0x0000001f 0x0000001f 0xffffffe8 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000001a 0x0000001a 0xffffffec 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x0000001e 0x0000001e 0xffffffe8 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xffffffec 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xffffffe8 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xffffffec 0x00000000 0x00000000 0x00000000 0x000002bc \
+ 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02000000 \
+ 0x02000000 0x02800080 0x02008000 0x02000000 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02ffffff 0x0200ffff 0x02008000 0x02000000 0x02800080 0x02ffffff 0x02000000 0x02808080 0x0200ff00 0x02ffffff 0x02ffffff \
+ 0x02c0c0c0 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000
+ 19
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = High Contrast Black (extra large)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000006 0x00000020 0x00000020 0x00000025 0x00000025 0xffffffe2 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000001c 0x0000001c 0xffffffe9 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000026 0x00000026 0xffffffe2 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xffffffe9 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xffffffe1 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xffffffe9 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02000000 \
+ 0x02000000 0x02800080 0x02008000 0x02000000 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02ffffff 0x0200ffff 0x02008000 0x02000000 0x02800080 0x02ffffff 0x02000000 0x02808080 0x0200ff00 0x02ffffff 0x02ffffff \
+ 0x02c0c0c0 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000
+ 20
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = High Contrast White (large)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000007 0x0000001a 0x0000001a 0x00000025 0x00000025 0xffffffe8 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000001c 0x0000001c 0xffffffed 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x0000001b 0x0000001b 0xffffffeb 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xffffffed 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xffffffeb 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xffffffec 0x00000000 0x00000000 0x00000000 0x000002bc \
+ 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02ffffff \
+ 0x02ffffff 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02808080 0x02c0c0c0 0x02808080 0x02000000 0x02ffffff 0x02ffffff 0x02808080 0x0200ff00 0x02000000 0x02000000 \
+ 0x02c0c0c0 0x02000000 0x02c0c0c0 0x02000000 0x02ffffff
+ 21
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = High Contrast White (extra large)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000006 0x0000001e 0x0000001e 0x00000026 0x00000026 0xffffffe2 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000001c 0x0000001c 0xffffffe9 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000026 0x00000026 0xffffffe2 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xffffffe9 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xffffffeb 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xffffffe9 0x00000000 0x00000000 0x00000000 0x000002bc \
+ 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02ffffff \
+ 0x02ffffff 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02808080 0x02c0c0c0 0x02808080 0x02000000 0x02ffffff 0x02ffffff 0x02808080 0x0200ff00 0x02000000 0x02000000 \
+ 0x02c0c0c0 0x02000000 0x02c0c0c0 0x02000000 0x02ffffff
+ 22
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Rose (large)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000002 0x00000011 0x00000011 0x0000001c 0x0000001c 0xffffffe9 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000015 0x00000015 0xfffffff0 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00690054 0x0065006d 0x00200073 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000016 0x00000016 0xffffffef 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xffffffef 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xffffffef 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02c0c0c0 \
+ 0x02808080 0x027060a0 0x02a4a0a0 0x02b8b0d0 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02b8b0d0 0x02b8b0d0 0x02e0d8e8 0x027060a0 0x02ffffff 0x02b8b0d0 0x027060a0 0x027060a0 0x02000000 0x02000000 \
+ 0x02e0d8e8 0x02000000 0x02b8b0d0 0x02000000 0x02ffffff
+ 23
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Lilac
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000f 0x0000000f 0x00000016 0x00000016 0xfffffff0 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000010 0x00000010 0xfffffff5 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff3 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d9a8ae \
+ 0x02000000 0x02b14e5a 0x02808080 0x02d9a8ae 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02d9a8ae 0x02d9a8ae 0x02b14e5a 0x02b14e5a 0x02ffffff 0x02d9a8ae 0x02b14e5a 0x02b14e5a 0x02000000 0x02ffffff \
+ 0x02ecd5d8 0x02000000 0x02d9a8ae 0x02000000 0x02ffffff
+ 24
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Lilac (large)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000f 0x0000000f 0x0000001d 0x0000001d 0xffffffe9 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c \
+ 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x00000015 0x00000015 0xfffffff0 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x0065004e 0x00200077 0x006f0052 0x0061006d 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000015 0x00000015 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xffffffef 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x00720041 0x00610069 \
+ 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff0 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x00720041 0x00610069 0x0000006c 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02d9a8ae \
+ 0x02000000 0x02b14e5a 0x02808080 0x02d9a8ae 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02d9a8ae 0x02d9a8ae 0x02b14e5a 0x02b14e5a 0x02ffffff 0x02d9a8ae 0x02b14e5a 0x02b14e5a 0x02000000 0x02ffffff \
+ 0x02ecd5d8 0x02000000 0x02d9a8ae 0x02000000 0x02ffffff
+ 25
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Slate
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02e3dcce \
+ 0x00414141 0x02978055 0x02808080 0x02c8b99d 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02c8b99d 0x02c8b99d 0x00424242 0x02978055 0x02ffffff 0x02c8b99d 0x02978055 0x02978055 0x02000000 0x02c0c0c0 \
+ 0x02e3dcce 0x02000000 0x02c8b99d 0x02000000 0x02ffffff
+ 26
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = Plum (high color)
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x0000000d 0x0000000d 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff7 0x00000000 0x00000000 0x00000000 \
+ 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff8 0x00000000 0x00000000 0x00000000 0x00000190 \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x00c8d0d8 \
+ 0x00402840 0x00604048 0x00586078 0x009098a8 0x00c8d0d8 0x00000000 0x00000000 0x00000000 0x00c8d0d8 0x009098a8 0x009098a8 0x005a6374 0x00484828 0x00c8d0d8 0x009098a8 0x00586078 0x00586078 0x00000000 0x009098a8 \
+ 0x00c8d0d8 0x00000000 0x009098a8 0x00580030 0x00c8ccd5
+ 27
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = High Contrast Black
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000011 0x00000011 0x00000014 0x00000014 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff5 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02000000 \
+ 0x02000000 0x02800080 0x02008000 0x02000000 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02ffffff 0x0200ffff 0x02008000 0x02000000 0x02800080 0x02ffffff 0x02000000 0x02808080 0x0200ff00 0x02ffffff 0x02ffffff \
+ 0x02c0c0c0 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000
+ 28
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Appearance\Schemes
+ ValueName = High Contrast White
+ Value = REG_BINARY 0x000002b8 0x00000002 0x000001f4 0x00000001 0x00000011 0x00000011 0x00000014 0x00000014 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 \
+ 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00780000 0x7ffc101c 0x7ffc1422 0x0012feb0 0x00000000 0x00000000 0x77eb2398 0x0000000f 0x0000000f 0xfffffff8 0x00000000 0x00000000 0x00000000 \
+ 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00142000 0x77f0b9ac 0x00142000 0x10000000 0x00140580 0x00141ff0 0x00140000 \
+ 0x00000012 0x00000012 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000000 0x00000000 \
+ 0x00140580 0x77e8fb88 0x00000202 0x77f0b9ac 0x00000000 0x00000020 0xfffffff5 0x00000000 0x00000000 0x00000000 0x00000190 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 \
+ 0x00000066 0x0000006e 0x77f0c0b4 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x77e86b7c 0x00000000 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc 0x00000000 0x00000000 0x0053004d 0x00530020 \
+ 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x0000006e 0x00000bc8 0x00000000 0x00000008 0x00000006 0x00000018 0xffffffff 0xfc214bf0 0x77f0c400 0xfffffff5 0x00000000 0x00000000 0x00000000 0x000002bc \
+ 0x00000000 0x00000000 0x0053004d 0x00530020 0x006e0061 0x00200073 0x00650053 0x00690072 0x00000066 0x00000000 0x00000000 0x00000000 0x00141dc0 0x0000000b 0x0012ff00 0x00000050 0x0012fec0 0x0100100c 0x02ffffff \
+ 0x02ffffff 0x02000000 0x02ffffff 0x02ffffff 0x02ffffff 0x02000000 0x02000000 0x02000000 0x02ffffff 0x02808080 0x02c0c0c0 0x02808080 0x02000000 0x02ffffff 0x02ffffff 0x02808080 0x0200ff00 0x02000000 0x02000000 \
+ 0x02c0c0c0 0x02000000 0x02c0c0c0 0x02000000 0x02ffffff
+ 1191
+ Hive
+ 1
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Desktop
+ ValueName = CoolSwitchRows
+ Value = 3
+ 2
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Desktop
+ ValueName = CoolSwitchColumns
+ Value = 7
+ 1197
+ Files
+ 1
+ Action = REG_DWORD 0x00000004
+ Item = Accessories\Terminal.lnk
+ 2
+ Action = REG_DWORD 0x00000003
+ Item = Accessories\HyperTerminal.lnk
+ 1224
+ Files
+ 1
+ Action = REG_DWORD 0x00000003
+ Item = Accessories\Phone Dialer.lnk
+ 1228
+ Hive
+ 1
+ Action = REG_DWORD 0x00000001
+ KeyName = Software\Microsoft\Windows\CurrentVersion\Telephony\HandoffPriorities
+ 2
+ Action = REG_DWORD 0x00000003
+ KeyName = Software\Microsoft\Windows\CurrentVersion\Telephony\HandoffPriorities
+ ValueName = RequestMakeCall
+ Value = dialer.exe
+ 1235
+ Execute
+ 1
+ CommandLine = REG_EXPAND_SZ %SystemRoot%\system32\shmgrate.exe Fix-Folders
+ 1248
+ Hive
+ 1
+ Action = REG_DWORD 0x00000004
+ KeyName = Control Panel\Colors
+ Flags = REG_DWORD 0x00000000
+ ValueNames = REG_MULTI_SZ "Inactive Title Text"
+ 2
+ Action = REG_DWORD 0x00000004
+ KeyName = Control Panel\Colors
+ Flags = REG_DWORD 0x00000000
+ ValueNames = REG_MULTI_SZ "Inactive Title"
+ 1257
+ Files
+ 1
+ Action = REG_DWORD 0x00000004
+ Item = accessories\Print Manager.lnk
+ Hive
+ 1
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Accessibility
+ 2
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Accessibility\Keyboard Response
+ 3
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\Keyboard Response
+ ValueName = AutoRepeatDelay
+ Value = 1000
+ 4
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\Keyboard Response
+ ValueName = AutoRepeatRate
+ Value = 500
+ 5
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\Keyboard Response
+ ValueName = BounceTime
+ Value = 0
+ 6
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\Keyboard Response
+ ValueName = DelayBeforeAcceptance
+ Value = 1000
+ 7
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\Keyboard Response
+ ValueName = Flags
+ Value = 82
+ 8
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Accessibility\MouseKeys
+ 9
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\MouseKeys
+ ValueName = Flags
+ Value = 18
+ 10
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\MouseKeys
+ ValueName = MaximumSpeed
+ Value = 40
+ 11
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\MouseKeys
+ ValueName = TimeToMaximumSpeed
+ Value = 3000
+ 12
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Accessibility\ShowSounds
+ 13
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\ShowSounds
+ ValueName = On
+ Value = 0
+ 14
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Accessibility\SoundSentry
+ 15
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\SoundSentry
+ ValueName = Flags
+ Value = 2
+ 16
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\SoundSentry
+ ValueName = FSTextEffect
+ Value = 0
+ 17
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\SoundSentry
+ ValueName = WindowsEffect
+ Value = 0
+ 18
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Accessibility\StickyKeys
+ 19
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\StickyKeys
+ ValueName = Flags
+ Value = 466
+ 20
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Accessibility\TimeOut
+ 21
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\TimeOut
+ ValueName = Flags
+ Value = 2
+ 22
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\TimeOut
+ ValueName = TimeToWait
+ Value = 300000
+ 23
+ Action = REG_DWORD 0x00000001
+ KeyName = Control Panel\Accessibility\ToggleKeys
+ 24
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Accessibility\ToggleKeys
+ ValueName = Flags
+ Value = 18
+ 1262
+ Hive
+ 1
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Mouse
+ ValueName = DoubleClickSpeed
+ Value = 500
+ 2
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Desktop
+ ValueName = MenuShowDelay
+ Value = 400
+ 1271
+ Hive
+ 1
+ Action = REG_DWORD 0x00000003
+ KeyName = AppEvents\Schemes\Apps\.Default\SystemStart\.Current
+ ValueName =
+ Value = Windows NT Logon Sound.wav
+ 2
+ Action = REG_DWORD 0x00000003
+ KeyName = AppEvents\Schemes\Apps\.Default\SystemExit\.Current
+ ValueName =
+ Value = Windows NT Logoff Sound.wav
+ Files
+ 1
+ Action = REG_DWORD 0x00000003
+ Item = Administrative Tools\Remote Access Admin.lnk
+ 2
+ Action = REG_DWORD 0x00000003
+ Item = Accessories\Dial-up Networking.lnk
+ 1291
+ Files
+ 1
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000000
+ Item = Administrative Tools\Disk Administrator.lnk
+ 2
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000000
+ Item = Administrative Tools\Performance Monitor.lnk
+ 3
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000000
+ Item = Administrative Tools\Backup.lnk
+ 4
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000000
+ Item = Administrative Tools\Event Viewer.lnk
+ 5
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000000
+ Item = Administrative Tools\Windows NT Diagnostics.lnk
+ 6
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000000
+ Item = Administrative Tools\Remote Access Admin.lnk
+ 7
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000001
+ Item = Administrative Tools\User Manager for Domains.lnk
+ 8
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000001
+ Item = Administrative Tools\Server Manager.lnk
+ 9
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000001
+ Item = Administrative Tools\Migration Tool for NetWare.lnk
+ 10
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000001
+ Item = Administrative Tools\User Profile Editor.lnk
+ 11
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000000
+ Item = Administrative Tools\User Manager.lnk
+ 12
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000000
+ Item = Administrative Tools\DCOM Configuration.lnk
+ 13
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000001
+ Item = Administrative Tools\Administrative Wizards.lnk
+ 14
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000001
+ Item = Network Administration\Network Client Administrator.lnk
+ 15
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000001
+ Item = Network Administration\License Manager.lnk
+ 16
+ Action = REG_DWORD 0x00000004
+ Product = REG_DWORD 0x00000002
+ Item = Books Online.lnk
+ 1292
+ Execute
+ 1
+ CommandLine = REG_EXPAND_SZ %SystemRoot%\system32\shmgrate.exe Fix-Folders
+ 1324
+ Hive
+ 1
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Desktop
+ ValueName = DragHeight
+ Value = 2
+ 2
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Desktop
+ ValueName = DragWidth
+ Value = 2
+ 3
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Desktop
+ ValueName = WheelScrollLines
+ Value = 3
+ 1342
+ Hive
+ 1
+ Action = REG_DWORD 0x00000003
+ KeyName = Control Panel\Mouse
+ ValueName = ActiveWindowTracking
+ Value = REG_DWORD 0x00000000
+ 1348
+ Execute
+ 1
+ CommandLine = REG_EXPAND_SZ %SystemRoot%\system32\shmgrate.exe Fix-User-Security
+ 1370
+ Files
+ 1
+ Action = REG_DWORD 0x00000004
+ Item = Accessories\Write.lnk
+ 1372
+ Files
+ 1
+ Action = REG_DWORD 0x00000003
+ Product = REG_DWORD 0x00000001
+ Item = Books Online.lnk
diff --git a/public/oak/bin/verrc.tpl b/public/oak/bin/verrc.tpl
new file mode 100644
index 000000000..9bd59114f
--- /dev/null
+++ b/public/oak/bin/verrc.tpl
@@ -0,0 +1,52 @@
+/*
+** Template for version resources. Place this in your .rc file,
+** editing the values for VER_FILETYPE, VER_FILESUBTYPE,
+** VER_FILEDESCRIPTION_STR and VER_INTERNALNAME_STR as needed.
+** See winver.h for possible values.
+**
+** Ntverp.h defines several global values that don't need to be
+** changed except for official releases such as betas, sdk updates, etc.
+**
+** Common.ver has the actual version resource structure that all these
+** #defines eventually initialize.
+*/
+
+/* #include <windows.h> needed if this will be the .rc file */
+
+#include <ntverp.h>
+
+/*-----------------------------------------------*/
+/* the following lines are specific to this file */
+/*-----------------------------------------------*/
+
+/* VER_FILETYPE, VER_FILESUBTYPE, VER_FILEDESCRIPTION_STR
+ * and VER_INTERNALNAME_STR must be defined before including COMMON.VER
+ * The strings don't need a '\0', since common.ver has them.
+ */
+#define VER_FILETYPE VFT_DLL
+/* possible values: VFT_UNKNOWN
+ VFT_APP
+ VFT_DLL
+ VFT_DRV
+ VFT_FONT
+ VFT_VXD
+ VFT_STATIC_LIB
+*/
+#define VER_FILESUBTYPE VFT2_UNKNOWN
+/* possible values VFT2_UNKNOWN
+ VFT2_DRV_PRINTER
+ VFT2_DRV_KEYBOARD
+ VFT2_DRV_LANGUAGE
+ VFT2_DRV_DISPLAY
+ VFT2_DRV_MOUSE
+ VFT2_DRV_NETWORK
+ VFT2_DRV_SYSTEM
+ VFT2_DRV_INSTALLABLE
+ VFT2_DRV_SOUND
+ VFT2_DRV_COMM
+*/
+#define VER_FILEDESCRIPTION_STR "Version Checking and File Installation Libraries"
+#define VER_INTERNALNAME_STR "VERSION.DLL"
+#define VER_ORIGINALFILENAME_STR "VERSION.DLL"
+
+#include "common.ver"
diff --git a/public/oak/inc/compstui.h b/public/oak/inc/compstui.h
new file mode 100644
index 000000000..0835c1bbb
--- /dev/null
+++ b/public/oak/inc/compstui.h
@@ -0,0 +1,3790 @@
+/*++
+
+Copyright (c) 1990-1995 Microsoft Corporation
+
+
+Module Name:
+
+ compstui.h
+
+
+Abstract:
+
+ This module contains global header definition for the COMMON DRIVER UI
+
+
+Author:
+
+ 19-Jun-1995 Mon 11:52:01 created -by- Daniel Chou (danielc)
+
+ 17-Aug-1995 Thu 14:59:28 updated -by- Daniel Chou (danielc)
+ Updated for the first draft.
+
+ 23-Aug-1995 Wed 15:13:27 updated -by- Daniel Chou (danielc)
+ Updated for second draft
+
+ 29-Aug-1995 Tue 11:33:24 updated -by- Daniel Chou (danielc)
+ Adding ExtChkBox for some TVOT_xxx type
+
+ 31-Aug-1995 Thu 04:04:23 updated -by- Daniel Chou (danielc)
+ Making UNICODE type
+
+ 01-Sep-1995 Fri 17:29:18 updated -by- Daniel Chou (danielc)
+ Change the API interface type, so that it can be dynamically called
+ and generate the property pages to be merge with the shell
+
+ 05-Sep-1995 Tue 11:52:43 updated -by- Daniel Chou (danielc)
+ Rename to compspui.h and update the API entry structure
+
+ 07-Sep-1995 Thu 14:46:55 updated -by- Daniel Chou (danielc)
+ rename to compstui.h and update comments
+
+ 07-Sep-1995 Thu 16:07:31 updated -by- Daniel Chou (danielc)
+ Adding UNION type for pSel/Sel, pOldSel/OldSel
+
+ 08-Sep-1995 Fri 09:23:38 updated -by- Daniel Chou (danielc)
+ Remove TypeIdx from OPTITEM and use pOptType, and remove all
+ pOptType passed in the CPSUICBPARAM and COMPROPSHEETUI structures
+
+ 25-Sep-1995 Mon 19:39:45 updated -by- Daniel Chou (danielc)
+ add other related stuff.
+
+ 26-Sep-1995 Tue 11:02:26 updated -by- Daniel Chou (danielc)
+ Add error codes for GETLASTERROR
+
+ 27-Sep-1995 Wed 16:32:37 updated -by- Daniel Chou (danielc)
+ Move hWndParent, pTitle, hInst and TitleIconID out from
+ COMPROPSHEETUI to COMPROPSHEETUIHEADER.
+
+ 28-Sep-1995 Thu 17:06:46 updated -by- Daniel Chou (danielc)
+ Add hInstCaller to COMPROPSHEETUI and add _COMPSTUI_ and cplusplus
+ stuff
+
+ 28-Sep-1995 Thu 23:16:34 updated -by- Daniel Chou (danielc)
+ change tick count for trackbar/scrollbar to multiply factor. and
+ add the push button flag which can overwrite the update permission so
+ it can let user view the current setting from push button's dialog
+ display
+
+ 07-Feb-1996 Wed 17:45:31 updated -by- Daniel Chou (danielc)
+ Change the API CommonPropSheetUI to CommonPropertySheetUI so that it
+ not using stack but message base, this way any caller can add/delete
+ pages as they want without worry about how many pages been added from
+ its children.
+
+
+[Environment:]
+
+ NT Windows - Common Property Sheet UI DLL.
+
+
+[Notes:]
+
+
+Revision History:
+
+
+--*/
+
+#ifndef _COMPSTUI_
+#define _COMPSTUI_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if (!defined(RC_INVOKED))
+
+
+//
+// For compilers that don't support nameless unions
+//
+
+#ifndef DUMMYUNIONNAME
+#ifdef NONAMELESSUNION
+#define DUMMYUNIONNAME u
+#define DUMMYUNIONNAME2 u2
+#define DUMMYUNIONNAME3 u3
+#define DUMMYUNIONNAME4 u4
+#else
+#define DUMMYUNIONNAME
+#define DUMMYUNIONNAME2
+#define DUMMYUNIONNAME3
+#define DUMMYUNIONNAME4
+#endif
+#endif
+
+//
+// Predefined ID for the TreeView Option Type
+//
+//
+
+
+#define TVOT_2STATES 0
+#define TVOT_3STATES 1
+#define TVOT_UDARROW 2
+#define TVOT_TRACKBAR 3
+#define TVOT_SCROLLBAR 4
+#define TVOT_LISTBOX 5
+#define TVOT_COMBOBOX 6
+#define TVOT_EDITBOX 7
+#define TVOT_PUSHBUTTON 8
+#define TVOT_CHKBOX 9
+#define TVOT_LAST TVOT_CHKBOX
+#define TVOT_NONE (TVOT_LAST + 1)
+
+//
+// Predefined ID for the TreeView Option Type
+//
+//
+// TVOT_2STATES:
+// Count = 2
+// pOptParam[0]=pointer to the State 1 OPTPARAM
+// pOptParam[1]=pointer to the State 2 OPTPARAM
+//
+// BegCtrlID = 2 States Group Box ID
+// BegCtrlID+1= 2 States static Text
+// BegCtrlID+2= state 1 Radio button ID
+// BegCtrlID+3= state 1 icon control ID
+// BegCtrlID+4= state 2 Radio button ID
+// BegCtrlID+5= state 2 icon control ID
+// BegCtrlID+6= Extended Check Box/Push Button control ID
+// BegCtrlID+7= Extended Check Box/Push Button Icon control ID
+//
+// * For TVOT_3STATES, TVOT_3STATES, each of OPTPARAM consisted
+//
+// Style =Ignored
+// pData =Pointer to the string to describe the state
+// IconID=Icons resource ID, or common UI standard icon ID
+// lParam=Ignored
+//
+// * OPTITEM's 'Sel' is the selection index range from 0 to 1
+// * On the non-treeview page, this must be a auto radio button
+//
+//
+// TVOT_3STATES:
+// Count = 3
+// pOptParam[0]=pointer to the State 1 OPTPARAM
+// pOptParam[1]=pointer to the State 2 OPTPARAM
+// pOptParam[2]=pointer to the State 3 OPTPARAM
+//
+// BegCtrlID = 3 States Group Box ID
+// BegCtrlID+1= 3 States static Text
+// BegCtrlID+2= state 1 Radio button ID
+// BegCtrlID+3= state 1 icon control ID
+// BegCtrlID+4= state 2 Radio button ID
+// BegCtrlID+5= state 2 icon control ID
+// BegCtrlID+6= state 3 Radio button ID
+// BegCtrlID+7= state 3 icon control ID
+// BegCtrlID+8= Extended Check Box/Push Button control ID
+// BegCtrlID+9= Extended Check Box/Push Button Icon control ID
+//
+// * For TVOT_2STATES, TVOT_3STATES, each of OPTPARAM consisted
+//
+// Style =Ignored
+// pData =Pointer to the string to describe the state
+// IconID=Icons resource ID, or common UI standard icon ID
+// lParam=Ignored
+//
+// * OPTITEM's 'Sel' is the selection index range from 0 to 1
+// * On the non-treeview page, this must be a auto radio button
+//
+// ** For TVOT_2STATES, TVOT_3STSATES the 'Sel' field in the OPTITEM has
+// following definitions
+//
+// State 1, Sel = 0
+// State 2, Sel = 1
+// State 3, Sel = 2
+//
+// for any selection which based on false/true, no/yes, off/ontrue/false,
+// none/select then state 1 (sel=0) must always be the NO, FALSE, OFF or
+// NONE type.
+//
+//
+// TVOT_UDARROW:
+// Count = 2
+// pOptParam[0]=Pointer to the text of postfix and ICONS
+// pOptParam[1]=Pointer to the help line text above the control and
+// IconID = (SHORT)Low range of the up-down control
+// lParam = (SHORT)High range of the up-down control
+//
+// * Low/High must in range of a 16-bit sign integer
+//
+// if pData pointed to no help text then common UI automatically
+// set the (# - #) as help line
+//
+// BegCtrlID = udarrow Group Box ID
+// BegCtrlID+1= udarrow title static title ID
+// BegCtrlID+2= udarrow's editbox ID
+// BegCtrlID+3= udarrow icon control ID
+// BegCtrlID+4= udarrow postfix static text ID
+// BegCtrlID+5= udarrow help static text ID
+// BegCtrlID+6= udarrow arrow ID
+// BegCtrlID+7= Extended Check Box/Push Button control ID
+// BegCtrlID+8= Extended Check Box/Push Button Icon control ID
+//
+// * OPTITEM's 'Sel' is the selection index between Low/High range
+// * Style field in the OPTPARAM is ignored
+//
+//
+// TVOT_TRACKBAR:
+// Count = 3
+// pOptParam[0]=Pointer to the text for the selection postfix and ICONS
+// pOptParam[1]=Pointer to the <Low Range Text> and
+// IconID = (SHORT)Low range of the trackbar control
+// lParam = (SHORT)High range of the trackbar control
+//
+// * Low/High must in range of a 16-bit sign integer
+//
+// pOptParam[2]=Pointer to the <High Range Text> and
+// IconID = 'Sel' multiply factor for display
+// lParam = Page Size (increment)
+//
+// if pData pointed to NULLt then common UI automatically
+// set the Low/High range.
+//
+// BegCtrlID = trackbar Group Box ID
+// BegCtrlID+1= trackbar static title ID
+// BegCtrlID+2= trackbar(horizontal) ID (static FRAME to define size)
+// BegCtrlID+3= trackbar icon control ID
+// BegCtrlID+4= trackbar low range text control ID
+// BegCtrlID+5= trackbar high range text control ID
+// BegCtrlID+6= trackbar postfix ID
+// BegCtrlID+7= Extended Check Box/Push Button control ID
+// BegCtrlID+8= Extended Check Box/Push Button Icon control ID
+//
+// * OPTITEM's 'Sel' is the selection index between Low/High range
+// * The multiply factor is used to multiply the current select with
+// this factor and display it. typically this is one
+// * the tick frequency is automatically to set to PageSize increment
+// * Style field in the OPTPARAM is ignored
+//
+//
+// TVOT_SCROLLBAR:
+// Count = 3
+// pOptParam[0]=Pointer to the text for the selection postfix and ICONS
+// pOptParam[1]=Pointer to the <Low Range Text> and
+// IconID = (SHORT)Low range of the scrollbar control
+// lParam = (SHORT)High range of the scroll control
+//
+// * Low/High must in range of a 16-bit sign integer
+//
+// pOptParam[2]=Pointer to the <High Range Text> and
+// IconID = 'Sel' multiply factor for display
+// lParam = Page Size (increment)
+//
+// if pData pointed to NULLt then common UI automatically
+// set the Low/High range.
+//
+//
+// BegCtrlID = scrollbar(horizontal) group box ID
+// BegCtrlID+1= scrollbar(horizontal) static text ID
+// BegCtrlID+2= scrollbar(horizontal) ID
+// BegCtrlID+3= scrollbar icon control ID
+// BegCtrlID+4= scrollbar low range text control ID
+// BegCtrlID+5= scrollbar high range text control ID
+// BegCtrlID+6= scrollbar postfix control ID
+// BegCtrlID+7= Extended Check Box/Push Button control ID
+// BegCtrlID+8= Extended Check Box/Push Button Icon control ID
+//
+// * OPTITEM's 'Sel' is the selection index between Low/High range
+// * The multiply factor is used to multiply the current select with
+// this factor and display it. typically this is one
+// * Style field in the OPTPARAM is ignored
+//
+//
+//
+// TVOT_LISTBOX:
+// TVOT_COMBOBOX:
+// Count = N
+// pOptParam[0]=pointer to the first OPTPARAM (pData=string pointer)
+// pOptParam[1]=pointer to the second OPTPARAM (pData=string pointer)
+// .
+// .
+// pOptParam[N-1]=pointer to the N item string
+//
+// BegCtrlID = Listbox/ComboBox group box ID
+// BegCtrlID+1= Listbox/ComboBox static title ID
+// BegCtrlID+2= Listbox/Combobox ID
+// BegCtrlID+3= Listbox/Combobox icon control ID
+// BegCtrlID+4= Extended Check Box/Push Button control ID
+// BegCtrlID+5= Extended Check Box/Push Button Icon control ID
+//
+// * for TVOT_LISTBOX, TVOT_COMBOBOX, the field used as
+//
+// Style =Ignored by the common UI
+// pData =Pointer to the name of item
+// IconID=Icon resource ID for the item
+// lParam=ignored by the common UI
+//
+// * Only SINGLE selection is supported, to do a multiple selction use
+// multiple OPTITEM and create a header for it
+//
+// * an OTLBCBS_SORT style can be specified in the OPTTYPE's LBCBStyle
+// field, and the listbox or combobox will be sorted according to the
+// item's string.
+//
+// * OPTITEM's 'Sel' is the selection index between Low/High range
+//
+// * for TVOT_LISTBOX, TVOT_COMBOBOX, when it get received the keyboard
+// focus then common UI will call callback function (only if
+// OPTIF_CALLBACK bit set) with reason of CPSUICB_REASON_LBCB_ACTIVE,
+// this give caller a chance to modify following structure flags/pdata
+// which associate with the current OPTITEM. The caller's callback
+// function can ONLY modify the flags/data specified here.
+//
+// OPTTYPE pointed by the pOptType from OPTITEM
+//
+// Style: OTS_LBCB_SORT
+// OTS_LBCB_INCL_ITEM_NONE
+//
+// OPTPARAMs pointed by the pOptParam from the OPTTYPE
+//
+// Flags: OPTPF_HIDE
+// OPTPF_DISABLED
+//
+// pData: change string name
+//
+//
+// * The TVOT_COMBOBOX typically only used in the tree-view if there is
+// only one selection available for that item, when there is only one
+// item then dropdown list will not enabled by the common UI
+//
+//
+//
+// TVOT_EDITBOX:
+// Count = 2
+// pOptParam[0]=Pointer to the text of postfix and ICONS
+// pOptParam[1]=Pointer to the help line text above the control and
+// IconID = Edit buffer sie in character pointed by pSel
+// this is including the NULL terminator.
+// lParam = ignored.
+//
+// BegCtrlID = editBox group Box ID
+// BegCtrlID+1= editBox static title ID
+// BegCtrlID+2= editbox ID
+// BegCtrlID+3= editbox icon control ID
+// BegCtrlID+4= editbox postfix ID
+// BegCtrlID+5= editbox help ID
+// BegCtrlID+6= Extended Check Box/Push Button control ID
+// BegCtrlID+7= Extended Check Box/Push Button Icon control ID
+//
+// * Style field is ignored
+//
+// * pSel in the OPTITEM is the pointer to the editing string, the pSel
+// must pointed to a buffer eqaul or larger than the count of the buffer
+// (pOptParam[1]->IconID) size
+//
+//
+// TVOT_PUSHBUTTON:
+// Count = 1
+//
+// BegCtrlID = push button group box ID
+// BegCtrlID+1= push button static text ID (Not used by common UI)
+// BegCtrlID+2= push button ID
+// BegCtrlID+3= push button icon control ID
+// BegCtrlID+4= Extended Check Box/Push Button control ID
+// BegCtrlID+5= Extended Check Box/Push Button Icon control ID
+//
+//
+// PUSHBUTTON_TYPE_xxx specified the action and content of pData in the
+// pOptParam[0] as describe in the following
+//
+// PUSHBUTTON_TYPE_DLGPROC
+//
+// This push button is designed to bring up caller's dialog box
+//
+// pOptParam[0].pData = Caller's DLGPROC
+// pOptParam[0].Style = PUSHBUTTON_TYPE_DLGPROC
+// pOptParam[0].IconID = Icon resource ID
+// pOptParam[0].lParam = Caller's DIALOG resource template ID
+// or handle to the DLGTEMPLATE depends
+// on the OPTPF_USE_HDLGTEMPLATE flag
+//
+//
+// The 'lParam' passed to the DLGPROC's WM_INITDIALOG is the
+// CPSUICBPARAM structure pointer, and the reason field is set
+// to CPSUICB_REASON_DLGPROC.
+//
+//
+// PUSHBUTTON_TYPE_CALLBACK
+//
+// This push button is designed to have caller process the item
+// which cannot accomplished with the dialog box along.
+//
+// pOptParam[0].pData = CPSUICALLBACK function pointer
+// pOptParam[0].Style = PUSHBUTTON_TYPE_CALLBACK
+// pOptParam[0].IconID = Icon resource ID
+// pOptParam[0].lParam = Not Used;
+//
+// Durning the callback the Reason field in CPSUICBPARAM will
+// set to CPSUICB_REASON_PUSHBUTTON.
+//
+// ** If pOptParam[0].pData callback function is NULL then common
+// UI will call the pfnCallBack pointer set in the
+// COMPROPSHEETUI structure if it is not NULL
+//
+// ** The callback function should put the result of the callback
+// in the pSel/Sel of OPTITEM associate with the push button
+//
+// PUSHBUTTON_TYPE_HTCLRADJ
+//
+// This push button is designed to bring up halftone color
+// adjustment dialog box.
+//
+// pOptParam[0].pData = pointer to COLORADJUSTMENT structure
+// pOptParam[0].Style = PUSHBUTTON_TYPE_HTCLRADJ
+// pOptParam[0].IconID = Icon resource ID
+// pOptParam[0].lParam = Not Used;
+//
+//
+// PUSHBUTTON_TYPE_HTSETUP
+//
+// This push button is designed to bring up device halftone
+// setup dialog box.
+//
+// pOptParam[0].pData = pointer to DEVHTADJDATA structure
+// pOptParam[0].Style = PUSHBUTTON_TYPE_HTSETUP
+// pOptParam[0].IconID = Icon resource ID
+// pOptParam[0].lParam = Not Used;
+//
+//
+// * 'Sel' field in the OPTITEM for the PUSHBUTTON is the last returned
+// LONG result from the called dialog box or funcitons. The result
+// only valid if OPTIF_CHANGEONCE flag is set. The common UI will set
+// OPTIF_CHANGEONCE if push button ever pushed.
+//
+// * Since common UI donot know the meaning of the return value and
+// content of the called parameter, it is up to the caller to use
+// callback function to determine the returned result.
+//
+// * When returned from the push button except push botton type
+// PUSHBUTTON_TYPE_CALLBACK common ui will call the callback function
+// if the OPTIF_CALLBACK flat is set. The callback reason is set to
+// CPSUICB_REASON_SEL_CHANGED.
+//
+// * If the passed in CPSUIF_UPDATE_PERMISSION Flags in the COMPROPSHEETUI
+// is clear then the callback function must ONLY display the dialog box
+// and not changed any OPTITEM data if OTS_PUSH_ENABLE_ALWAYS
+// flag is set in the OPTTYPE
+//
+//
+// TVOT_CHKBOX:
+// Count = 1
+//
+// pOptparam[0].Style = CHKBOXS_FALSE_TRUE False/True
+// CHKBOXS_NO_YES, No/YES
+// CHKBOXS_OFF_ON, Off/ON
+// CHKBOXS_FALSEPDATA False/pData
+// CHKBOXS_NO_PDATA No/pData
+// CHKBOXS_OFF_PDATA Off/pData
+// CHKBOXS_NONE_PDATA None/pData
+// pOptParam[0].pData = Only used if Style is CHKBOXS_NONE_PDATA
+// pOptParam[0].IconID = Icon resource ID
+// pOptParam[0].lParam = Ignored
+//
+//
+// BegCtrlID = check box group ID
+// BegCtrlID+1= Check Box static text (not used by common UI)
+// BegCtrlID+2= check box button ID
+// BegCtrlID+3= check box icon control ID
+// BegCtrlID+4= Extended Check Box/Push Button control ID
+// BegCtrlID+5= Extended Check Box/Push Button Icon control ID
+//
+//
+// * BegCtrlID only used if the OPTITEM/OPTTYPE is belong to the the DLGPAGE
+// which has non-common UI dialog box template (DlgTemplateID in the DLGPAGE
+// is not standard DP_STD_xxx common ui dialog box template). The common
+// UI used this ID to managed caller's dialog boxes item's selections and
+// initialization.
+//
+// * for each item, it has group box ID (BegCtrlID) and static text ctronl ID
+// (BegCtrlID + 1). The common UI will set the text in one of these two
+// control ID in followng seauence.
+//
+// 1) If group box control ID's window (BegCtrlID) is exist and the
+// OPTITEM's flag OPTIF_NO_GROUPBOX_NAME is not set then common UI will
+// set the pName from OPTITEM to the group box.
+//
+// 2) If the group box name is not set and static control ID's window
+// (BegCtrlID + 1) is exist then common UI will set the pName from
+// OPTITEM to the static text control.
+//
+// * for TVOT_TRACKBAR and TVOT_SCROLLBAR, if pName in the OPTITEM is set to
+// either group box or static text control then common UI will also append
+// the current selection position of trackbar or scroll bar to the pName.
+//
+// * If multiple OPTITEMs using the same POPTPARAM and need different
+// BegCtrlID for each control then then a separate OPTTYPE structure should
+// be generated but POPTPARAM pointed to the same OPTPARAM[]
+//
+// * If a BegCtrlID+N is not used then skip that ID in your dialog box
+// template
+//
+//
+
+#define CHKBOXS_FALSE_TRUE 0
+#define CHKBOXS_NO_YES 1
+#define CHKBOXS_OFF_ON 2
+#define CHKBOXS_FALSE_PDATA 3
+#define CHKBOXS_NO_PDATA 4
+#define CHKBOXS_OFF_PDATA 5
+#define CHKBOXS_NONE_PDATA 6
+
+
+#define PUSHBUTTON_TYPE_DLGPROC 0
+#define PUSHBUTTON_TYPE_CALLBACK 1
+#define PUSHBUTTON_TYPE_HTCLRADJ 2
+#define PUSHBUTTON_TYPE_HTSETUP 3
+
+
+#define MAX_RES_STR_CHARS 160
+
+//
+// Common Printer UI's LPTSTR
+//
+// All string pointer in common printer UI structures can be either a real
+// memory pointer or a string resource ID. These are applied to LPTSTR type.
+//
+// The LPTSTR is defined to identify that the pointer can be a real string
+// pointer or a resource ID (either common printer UI provided ID or caller's
+// own resource ID). common UI using following logic to get the final string.
+//
+// LPTSTR pData;
+//
+// if (HIWORD(pData) != 0) then pData is a NULL terminated string pointer
+//
+// ELSE
+//
+// LOWORD(pData)=Resource ID
+//
+// if (Resource ID is within the common UI string resource ID range)
+// then it load the string from common UI DLL
+//
+// ELSE
+//
+// it load string from caller's resource
+//
+//
+// * You can use MAKEINTRESOURCE(StrResID) to set this field
+//
+// * The MAX characters loaded by the common UI from the resource is defined
+// as MAX_RES_STR_CHARS
+//
+// * You cannot use LPTSTR as resource ID for the TVOT_EDITBOX style's
+// pSel in the OPTITEM, this pointer must be a real buffer pointer
+//
+//
+//
+// ICONs
+//
+// Common UI using two types of Icons, One is 32x32 and the other is 16x16
+// plus if any monochrome icon with 32x32 and 16x16 sizes.
+//
+// The 16x16 icon when displayed on the screen is using 16x17 pixel space,
+// this is ensure that downware adjacent icon is not crowded together.
+//
+// In common UI, if you need to passed a ICON ID, it can either passed a
+// common UI's predefined ID or caller's own ICON resource ID.
+//
+//
+// * You can use to imagedit or any other Window icon editor to create the
+// icon, each icon file should have one unique icon resource ID which is
+// not overlay with the standard common UI IDI_CPSUI_xxx identifier. For
+// each icon file, its should have both 32x32 and 16x16 size icon on
+// different display. (ie. monochrome).
+//
+// Common UI will try to load the correct size of icon from the icon
+// resource, but it will stretch them if the size is not found.
+//
+//
+
+//
+// Flags for the OPTTYPE
+//
+//
+
+#define OPTPF_HIDE 0x01
+#define OPTPF_DISABLED 0x02
+#define OPTPF_ICONID_AS_HICON 0x04
+#define OPTPF_OVERLAY_WARNING_ICON 0x08
+#define OPTPF_OVERLAY_STOP_ICON 0x10
+#define OPTPF_OVERLAY_NO_ICON 0x20
+#define OPTPF_USE_HDLGTEMPLATE 0x40
+
+typedef struct _OPTPARAM {
+ WORD cbSize; // size of this structure
+ BYTE Flags; // OPTPF_xxxx flags
+ BYTE Style; // style use in this structure
+ LPTSTR pData; // pointer to the data
+ DWORD IconID; // iconID;
+ LONG lParam; // parameter used
+ DWORD dwReserved[2]; // reserved dword, must be 0
+ } OPTPARAM, *POPTPARAM;
+
+
+//
+// OPTPARAM
+//
+// The OPTPARAM structure is used to describe each slectable item in the
+// common UI such as 'letter', 'legal' in the form slection list box
+//
+// cbSize - size of this structure
+//
+// Flags - defined as OPTPF_xxxx
+//
+// OPTPF_HIDE
+//
+// Specified hide this listed selection item and not
+// availabe for user to select. This only available to
+// following TVOT_xxx types
+//
+// TVOT_3STATES
+// TVOT_LISTBOX
+// TVOT_COMBOBOX
+//
+// If all the seclection items are OPTPF_HIDE then the
+// OPTITEM is automatically hided by the common UI, if
+// TVOT_3STATES has 2 states hide then an error is
+// returned
+//
+//
+// OPTPF_DISABLED
+//
+// Specified this listed selection item is disabled and
+// not availabe for user to select. This only available
+// to following TVOT_xxx types
+//
+// TVOT_2STATES
+// TVOT_3STATES
+// TVOT_LISTBOX
+// TVOT_COMBOBOX
+//
+//
+// OPTPF_ICONID_AS_HICON
+//
+// If this flag is set then IconID DWORD field is treated
+// as a handle to the icon rather then the resource ID
+//
+//
+// OPTPF_OVERLAY_WARNING_ICON
+//
+// If this bit is set then this OPTPARAM item's icon will
+// be overlaied by a common UI's IDI_CPSUI_WARNING icon.
+//
+//
+// OPTPF_OVERLAY_STOP_ICON
+//
+// If this bit is set then this OPTPARAM item's icon will
+// be overlaied by a common UI's IDI_CPSUI_STOP icon.
+//
+//
+// OPTPF_OVERLAY_NO_ICON
+//
+// If this bit is set then this OPTPARAM item's icon will
+// be overlaied by a common UI's IDI_CPSUI_NO icon.
+//
+//
+// Style - Style for the OPTPARAM, it depends on the TVOT_xxx type as
+// describe below
+//
+// TVOT_PUSBUTTON
+//
+// it can be one of PUSHBUTTON_TYPE_xxxx.
+//
+// other TVOT_xxxx
+//
+// this fields is not used.
+//
+//
+// pData - Is either a pointer to the item name (string) or it is
+// used to describe other data.
+//
+// * If the pData in the OPTPARAM is supposed to be a static
+// pointer to a string and the string is a common UI
+// standard resource ID then common UI will check if pData
+// is equal to IDS_CPSUI_NOTINSTALLED, if true then
+// common UI will overaly a not installed icon on top of
+// the OPTPARAM's Icon. This will not applied to the
+// TVOT_EDITBOX type since the pData is not a static text
+// pointer or a string resource ID.
+//
+// ** See LPTSTR description above
+//
+// IconID - This is the icon identifier, which can be a common strandard
+// IDI_CPSUI_xxx icon ID, caller's own icon resource ID, or a
+// handle to the caller defined icon if OPTPF_ICONID_AS_HICON
+// flag is set, in any case if the IconID is zero then it
+// indicated no icon.
+//
+// lParam - Extra data used by the OPTPARAM, it depends on the TVOT_xxx
+// type.
+//
+// dwReserved[]- Reserved DWORDs, must be 0
+//
+//
+
+
+#define OPTTF_TYPE_DISABLED 0x01
+#define OPTTF_NOSPACE_BEFORE_POSTFIX 0x02
+
+
+#define OTS_LBCB_SORT 0x0001
+#define OTS_LBCB_PROPPAGE_LBUSECB 0x0002
+#define OTS_LBCB_PROPPAGE_CBUSELB 0x0004
+#define OTS_LBCB_INCL_ITEM_NONE 0x0008
+#define OTS_LBCB_NO_ICON16_IN_ITEM 0x0010
+#define OTS_PUSH_INCL_SETUP_TITLE 0x0020
+#define OTS_PUSH_NO_DOT_DOT_DOT 0x0040
+#define OTS_PUSH_ENABLE_ALWAYS 0x0080
+
+
+typedef struct _OPTTYPE {
+ WORD cbSize;
+ BYTE Type; // TVOT_xxxx type of OPTIONS
+ BYTE Flags; // OPTTF_xxx flags
+ WORD Count; // Count of pOptParam passed
+ WORD BegCtrlID; // start of item's group window ID
+ POPTPARAM pOptParam; // pointer to the OPTPARAM
+ WORD Style; // option type style as OTS_xxxx
+ WORD wReserved[3]; // wReserved, must be 0
+ DWORD dwReserved[3]; // DWORD reserved field (must be 0)
+} OPTTYPE, *POPTTYPE;
+
+
+//
+// OPTTYPE
+//
+// The OPTTYPE structure is used to describe a set of selection and its
+// select method, such as Form/Tray assignment. It has a pointer to a set
+// of selection item (OPTPARAM)
+//
+//
+// cbSize - size of this structure
+//
+// Type - Specified the option type using predefined ID as TVOT_xxxx
+//
+// Flags - currently only one flag is defined
+//
+//
+// OPTTF_TYPE_DISABLED
+//
+// The whole OPTTYPE's OPTPARAMs are disabled, and non of
+// the selection in the OPTTYPE can be selected
+//
+//
+// OPTTF_NOSPACE_BEFORE_POSTFIX
+//
+// This bit only valid if the OPTTYPE's pOptParam item
+// specified a postfix string as describe in the above
+// section. If this flag is set then it asked common UI
+// do not add a space character before the postfix string
+// when it combine the pName in the OPTITEM and postfix
+// string. Typeically this bit is not set for the
+// postfix string, but sometime it may be required not to
+// add a space character in front of it, such as '%'
+// postfix string.
+//
+//
+// Count - Count of item pointed by pOptParam. Some predefined number
+// must be set according to the TVOT_XXX description.
+//
+// BegCtrlID - Only used if the OPTITEM/OPTTYPE is belong to the the DLGPAGE
+// which has non-common UI dialog box template (DlgTemplateID
+// in the DLGPAGE is not standard DP_STD_xxx common ui dialog
+// box template). The common UI used this ID to managed
+// caller's dialog boxes item's selections and initialization.
+//
+// Each OPTITEM has predefined number of window ID which
+// associated with that item, the BegCtrlID specified the start
+// control window ID. Each control window ID in the OPTITEM
+// must have the control ID sequence as describe in the TVOT_xxx
+// above.
+//
+// pOptParam - Pointer to array of OPTPARAM to describe each selectable item
+//
+// Style - Specified the style of type of control box, certain style
+// only apply to centain type of TVOT_xxxx.
+//
+// OTS_LBCB_xxx only applied to TVOT_LISTBOX, TVOT_COMBOBOX
+// OTS_PUSH_xxx only applied to TVOT_PUSHBUTTON
+//
+//
+// OTS_LBCB_SORT
+//
+// Specified that the listbox or combobox item is sorted
+// in ascending order based on the pData string
+//
+//
+// OTS_LBCB_PROPAGE_LBUSECB
+//
+// Used when Type is TVOT_LISTBOX, if it specified and
+// this OPTTYPE also on the non-treeview user defined
+// property sheet page dialog then common UI assume
+// control is comobobox instead of listbox on the non-
+// treeview page
+//
+//
+// OTS_LBCB_PROPAGE_CBUSELB
+//
+// Used when Type is TVOT_COMBOBOX, if it specified and
+// this OPTTYPE also on the non-treeview user defined
+// property sheet page dialog then common UI assume
+// control is listbox instead of combobox on the non-
+// treeview page
+//
+//
+// OTS_LBCB_INCL_ITEM_NONE
+//
+// when this flag is specified, the common ui will
+// automatically add a 'None' selection to the listbox or
+// combobox. The 'Sel' will set to -1 if 'none' is
+// selection is selected by the user. It will also
+// validate the 'Sel' durning the initialization, any
+// out of range value will be set to -1 (None).
+//
+//
+// OTS_LBCB_NO_ICON16_IN_ITEM
+//
+// By default, each listbox, combox will have a small
+// icon (16x16) in front of item text. by specified this
+// bit, the listbox/combobox will not includes icons
+// in the listbox/combobox.
+//
+// If clear then it specified that in the listbox/combobox
+// to have 16x16 Icon added to the front of each item
+//
+//
+// OTS_PUSH_INCL_SETUP_TITLE
+//
+// If specified for the push button then it automatically
+// add the 'Setup' to the end of push botton text.
+//
+//
+// OTS_PUSH_NO_DOT_DOT_DOT
+//
+// If specified then common UI will not add '...' to the
+// end of the pName in the OPTITEM and push button name
+//
+//
+// OTS_PUSH_ENABLE_ALWAYS
+//
+// This flag specified that even update permissio is not
+// allowed, it still let user push the push button, if
+// this flag is set then callback function or dialog box
+// proc must disable all the control which let user
+// modified the content, but just let user view the
+// current setting.
+//
+//
+// wReserved[] - Reserved fields, must be 0
+//
+// dwReserved[]- Reserved fields, must be 0
+//
+//
+
+
+//
+// Following are flags for the EXTPUSH
+//
+
+
+#define EPF_PUSH_TYPE_DLGPROC 0x0001
+#define EPF_INCL_SETUP_TITLE 0x0002
+#define EPF_NO_DOT_DOT_DOT 0x0004
+#define EPF_ICONID_AS_HICON 0x0008
+#define EPF_OVERLAY_WARNING_ICON 0x0010
+#define EPF_OVERLAY_STOP_ICON 0x0020
+#define EPF_OVERLAY_NO_ICON 0x0040
+#define EPF_USE_HDLGTEMPLATE 0x0080
+
+
+typedef struct _EXTPUSH {
+ WORD cbSize; // size of the structure
+ WORD Flags; // EPCBF_xxx flags
+ LPTSTR pTitle; // extended push botton title
+ union {
+ DLGPROC DlgProc; // pointer to the dialog box proc
+ FARPROC pfnCallBack; // callback function pointer
+ } DUMMYUNIONNAME;
+ DWORD IconID; // icon to be used
+ union {
+ WORD DlgTemplateID; // dialog box template ID
+ HANDLE hDlgTemplate; // handle to the dialog template
+ } DUMMYUNIONNAME;
+ DWORD dwReserved[3]; // reserved field, must be 0
+ } EXTPUSH, *PEXTPUSH;
+
+//
+// EXTPUSH structure is used to describe the extened push button available
+// on OPTITEM/OPTITEM, each OPTTYPE can optional have either one extended check
+// box or one extended push button callback.
+//
+//
+// cbSize - size of this structure
+//
+// Flags - flags for the EXTPUSH as EPF_xxxx
+//
+// EPF_PUSH_TYPE_DLGPROC
+//
+// If this bit is set then it specified the extended
+// push button is type of DLGPROC and DlgProc and
+// DlgTemplateID is valid for common UI to call.
+//
+// If this bit is clear then it specfied the extended
+// push button is the callback style and pfnCallBack
+// should be called by the common UI
+//
+//
+// EPF_INCL_SETUP_TITLE
+//
+// If specified for the extended push button then it
+// automatically add the 'Setup' to the end of
+// extended push button's title
+//
+//
+// EPF_NO_DOT_DOT_DOT
+//
+// If specified then common UI will not add '...' to
+// the end of the pTitle in the EXTPUSH.
+//
+//
+// EPF_ICONID_AS_HICON
+//
+// If this flag is set then IconID DWORD field is
+// treated as a handle to the icon rather then the
+// resource ID.
+//
+//
+// EPF_OVERLAY_WARNING_ICON
+//
+// If this bit is set then this EXTPUSH's icon will be
+// overlaied by a common UI's IDI_CPSUI_WARNING icon.
+//
+//
+// EPF_OVERLAY_STOP_ICON
+//
+// If this bit is set then this EXTPUSH's icon will be
+// overlaied by a common UI's IDI_CPSUI_STOP icon.
+//
+//
+// EPF_OVERLAY_NO_ICON
+//
+// If this bit is set then this EXTPUSH's icon will be
+// overlaied by a common UI's IDI_CPSUI_NO icon.
+//
+//
+// pTitle - Pointed to extended push botton title
+//
+// ** See LPTSTR description above
+//
+// DlgProc - Pointer to the DLGPROC function supplied by the caller.
+// When user push the button the common UI will call
+// DialogBoxParam() with this fucction pointer and passed
+// CPSUICBPARAM structure pointer to the WM_INITDIALOG with
+// the Reason set to CPSUICB_REASON_EXTPUSH. If this
+// filed is NULL then common UI assumed that EXTPUSH is
+// disabled (OPTIF_EXT_DISABLED | OPTIF_EXT_HIDE), this
+// fields only used if EPF_PUSH_TYPE_DLGPROC flag is set
+//
+// pfnCallBack - Pointer to CPSUICALLBACK function, this only used if
+// EPF_PUSH_TYPE_DLGPROC bit is clear, duringing callback
+// it passed the CPSUICBPARAM pointer as parameter
+//
+// IconID - This is the icon identifier, which can be a common
+// strandard IDI_CPSUI_xxx icon ID, caller's own icon
+// resource ID, or a handle to the caller defined icon if
+// EPF_ICONID_AS_HICON flag is set, in any case if the
+// IconID is zero then it indicated no icon.
+//
+// DlgTemplateID - Specified the ressource ID for the dilaog box. If the
+// DlgTemplateID = 0 then common UI will call the DlgProc
+// with following parameter.
+//
+// DlgProc(hDlg, WM_USER, NULL, (LPARAM)pCPSUICBPaam);
+//
+// hDlgTemplate - Handle to the DLGTEMPLATE which will be use for pop up
+// dialog box
+//
+// wReserved[] - WORD reserved field, must be 0
+//
+// dwReserved[] - DWORD reserved field, must be 0
+//
+//
+//
+
+
+//
+// Following are flags for the EXTCHKBOX
+//
+
+#define ECBF_CHECKNAME_AT_FRONT 0x0001
+#define ECBF_CHECKNAME_ONLY_ENABLED 0x0002
+#define ECBF_ICONID_AS_HICON 0x0004
+#define ECBF_OVERLAY_WARNING_ICON 0x0008
+#define ECBF_OVERLAY_ECBICON_IF_CHECKED 0x0010
+#define ECBF_OVERLAY_STOP_ICON 0x0020
+#define ECBF_OVERLAY_NO_ICON 0x0040
+
+
+typedef struct _EXTCHKBOX {
+ WORD cbSize; // size of the structure
+ WORD Flags; // ECBF_xxx flags
+ LPTSTR pTitle; // extended checkbox title
+ LPTSTR pSeparator; // pointer to separator string for treeview
+ LPTSTR pCheckedName; // string to be displayed when checked
+ DWORD IconID; // icon to be used
+ WORD wReserved[4]; // reserved word, must be 0
+ DWORD dwReserved[2]; // reserved field, must be 0
+ } EXTCHKBOX, *PEXTCHKBOX;
+
+
+//
+// EXTCHKBOX structure is used to describe the extened check box available on
+// OPTITEM/OPTITEM, each OPTTYPE can optional have one extended check box.
+// When using EXTCHKBOX the selection item can be checked or not checked
+// based on user input.
+//
+//
+// cbSize - size of this structure
+//
+// Flags - flags for the EXTCHKBOX as ECBF_xxxx
+//
+// ECBF_CHECKNAME_AT_FRONT
+//
+// This flag specified how to display item's name and its
+// checked name in the treeview display. If this flag is
+// set then the checked name is display in front of
+// separator name, otherwise the checked name is displayed
+// after the separator. For Example.
+//
+// Flag Set: pCheckedName pSeparator SelectName
+// Flag Clear: SelectName pSeparator pCheckedName
+//
+//
+// ECBF_CHECKNAME_ONLY_ENABLED
+//
+// If set then it specified that in the treeview display,
+// it will only show the pCheckedName if this extended
+// check box is visible and enabled. Some items may not
+// desired to display the pCheckedName if the extended
+// check box is disabled, such as Copy/Collate checkbox.
+//
+//
+// ECBF_ICONID_AS_HICON
+//
+// If this flag is set then IconID DWORD field is treated
+// as a handle to the icon rather then the resource ID
+//
+//
+// ECBF_OVERLAY_WARNING_ICON
+//
+// If this bit is set then this EXTCHKBOX's icon will
+// be overlaied by a common UI's IDI_CPSUI_WARNING icon.
+//
+//
+// ECBF_OVERLAY_ECBICON_IF_CHECKED
+//
+// This bit specified to overlay the ExtChkBox's Icon to
+// the OPTITEM's icon (or OPTPARAM) if the the extended
+// checked box is checked
+//
+//
+// ECBF_OVERLAY_STOP_ICON
+//
+// If this bit is set then this EXTCHKBOX's icon will
+// be overlaied by a common UI's IDI_CPSUI_STOP icon.
+//
+//
+// ECBF_OVERLAY_NO_ICON
+//
+// If this bit is set then this EXTCHKBOX's icon will
+// be overlaied by a common UI's IDI_CPSUI_NO icon.
+//
+//
+// pTitle - Pointed to extended check box title
+//
+// ** See LPTSTR description above
+//
+// pSeparator - Pointer to the separator to be used in the treeview
+// display or the static title control in the non-treeview
+// page,
+//
+// pCheckedName- Pointed to the name to be displayed in the treeview if item
+// is checked. pCheckedName is added according to the
+// pSeparator and the ECBF_CHECKNAME_AT_FRONT flags.
+//
+// * If the pCheckedName is equal to IDS_CPSUI_NOTINSTALLED
+// then common UI will automatically overaly a not installed
+// icon on top of the extended check box Icon.
+//
+// ** See LPTSTR description above
+//
+// IconID - This is the icon identifier, which can be a common strandard
+// IDI_CPSUI_xxx icon ID, caller's own icon resource ID, or a
+// handle to the caller defined icon if ECBF_ICONID_AS_HICON
+// flag is set, in any case if the IconID is zero then it
+// indicated no icon.
+//
+// wReserved[] - WORD reserved field, must be 0
+//
+// dwReserved[]- DWORD reserved field, must be 0
+//
+
+
+//
+// Following the the Flags for the OPTITEM
+//
+
+#define OPTIF_COLLAPSE 0x00000001L
+#define OPTIF_HIDE 0x00000002L
+#define OPTIF_CALLBACK 0x00000004L
+#define OPTIF_CHANGED 0x00000008L
+#define OPTIF_CHANGEONCE 0x00000010L
+#define OPTIF_DISABLED 0x00000020L
+#define OPTIF_ECB_CHECKED 0x00000040L
+#define OPTIF_EXT_HIDE 0x00000080L
+#define OPTIF_EXT_DISABLED 0x00000100L
+#define OPTIF_SEL_AS_HICON 0x00000200L
+#define OPTIF_EXT_IS_EXTPUSH 0x00000400L
+#define OPTIF_NO_GROUPBOX_NAME 0x00000800L
+#define OPTIF_OVERLAY_WARNING_ICON 0x00001000L
+#define OPTIF_OVERLAY_STOP_ICON 0x00002000L
+#define OPTIF_OVERLAY_NO_ICON 0x00004000L
+#define OPTIF_INITIAL_TVITEM 0x00008000L
+#define OPTIF_HAS_POIEXT 0x00010000L
+
+#define OPTIF_MASK 0x0001ffffL
+
+
+#define DMPUB_NONE 0
+#define DMPUB_FIRST 1
+
+#define DMPUB_ORIENTATION 1
+#define DMPUB_SCALE 2
+#define DMPUB_COPIES_COLLATE 3
+#define DMPUB_DEFSOURCE 4
+#define DMPUB_PRINTQUALITY 5
+#define DMPUB_COLOR 6
+#define DMPUB_DUPLEX 7
+#define DMPUB_TTOPTION 8
+#define DMPUB_FORMNAME 9
+#define DMPUB_ICMMETHOD 10
+#define DMPUB_ICMINTENT 11
+#define DMPUB_MEDIATYPE 12
+#define DMPUB_DITHERTYPE 13
+
+#define DMPUB_LAST 13
+
+#define DMPUB_USER 100
+
+
+//
+// DMPUB_xxxx is used in OPTITEM to identify if the item is a DEVMODE public
+// field. Following it identify which field correspond to the DMPUB_xxxx
+//
+//
+// DMPUB_ORIENTATION - dmOrientation
+//
+// DMPUB_SCALE - dmScale
+//
+// DMPUB_COPIES_COLLATE- dmCopies/dmCollate
+//
+// DMPUB_DEFSOURCE - dmDefSource (Should only used form by caller)
+//
+// DMPUB_PRINTQUALITY - dmPrintQuality
+//
+// DMPUB_COLOR - dmColor
+//
+// DMPUB_DUPLEX - dmDuplex
+//
+// DMPUB_TTOPTION - dmTTOption
+//
+// DMPUB_FORMNAME - dmFormName
+//
+// DMPUB_ICMMETHOD - dmICMMethod
+//
+// DMPUB_ICMINTENT - dmICMIntent
+//
+// DMPUB_MEDIATYPE - dmMediaType
+//
+// DMPUB_DITHERTYPE - dmDitherType
+//
+// DMPUB_USER - Anything greater than or equal to DMPUB_USER can be
+// used by the caller.
+//
+//
+// When common UI is called for the 'Document Properties' (DEVMODE), it will
+// group some of public items together simillar to the following in the
+// treeview. How it group is common UI version dependent and caller should not
+// concern its placement
+//
+// Paper/Output (Add in by the common UI)
+// Document Form (DMPUB_FORMNAME)
+// Orientation (DMPUB_ORIENTATION)
+// Source (DMPUB_DEFSOURCE)
+// Media (DMPUB_MEDIATYPE)
+// Number of Copies (DMPUB_COPIES_COLLATE)
+// Duplex (DMPUB_DUPLEX)
+//
+// Graphic (Add in by the common UI)
+// Print Quality (DMPUB_PRINTQUALITY)
+// Color (DMPUB_COLOR)
+// Image Color Matching (Add in by the common UI)
+// ICM Method (DMPUB_ICMMETHOD)
+// ICM Intent (DMPUB_ICMINTENT)
+// Scaling (DMPUB_SCALE)
+// Dithering (DMPUB_DITHERTYPE)
+// TrueType Option (DMPUB_TTOPTION)
+//
+// Options
+// Halftone Color Adjustment...
+// ALL Other Caller's Document sticky options
+//
+//
+// For 'Document Properties' the standard page 1 (user friendly page) will
+// consist following items if it appear in the OPTITEM array passed by the
+// caller. These items must have following predefined TVOT_xxx type
+// defined here and specified in the OPTTYPE's Type field.
+//
+// All DMPUB_xxx (except >= DMPUB_USER) public ID must have following
+// TVOT_xxxx type specified, else a CPDU_INVALID_DMPUB_TVOT error is returned
+//
+// DMPUB_ORIENTATION - TVOT_2STATES/TVOT_3STATES
+// DMPUB_SCALE - TVOT_UDARROW
+// DMPUB_COPIES_COLLATE - TVOT_UDARROW + EXTCHKBOX (Collate)
+// DMPUB_DEFSOURCE - TVOT_LISTBOX
+// DMPUB_PRINTQUALITY - TVOT_LISTBOX
+// DMPUB_COLOR - TVOT_2STATES
+// DMPUB_DUPLEX - TVOT_2STATES/TVOT_3STATES
+// DMPUB_TTOPTION - TVOT_LISTBOX
+// DMPUB_FORMNAME - TVOT_LISTBOX
+// DMPUB_ICMMETHOD - TVOT_2STATES/TVOT_3STATES
+// DMPUB_ICMINTENT - TVOT_2STATES/TVOT_3STATES
+// DMPUB_MEDIATYPE - TVOT_LISTBOX
+// DMPUB_DITHERTYPE - TVOT_LISTBOX
+//
+//
+
+
+#define OIEXTF_ANSI_STRING 0x0001
+
+typedef struct _OIEXT {
+ WORD cbSize;
+ WORD Flags;
+ HINSTANCE hInstCaller;
+ LPTSTR pHelpFile;
+ DWORD dwReserved[4];
+ } OIEXT, *POIEXT;
+
+//
+// OIEXT is a data structure used as extension to the OPTITEM data structure
+//
+//
+// cbSize - sizeof this structure
+//
+// Flags - One or more of OIEXTF_xxxx may be specified.
+//
+// OIEXTF_ANSI_STRING
+//
+// Specified that LPTSTR in this data structure is a ansi
+// string (not UNICODE). This bit only checked if the
+// LPTSTR is not the resource string ID
+//
+// hInstCaller - DLL instance handle, when this hInst is not NULL then all
+// resource string and icon loading for this OPTITEM and its
+// OPTTYPE, OPTPARAM are loaded from this hInstCaller Handle.
+// If this filed is NULL then it will use the hInstCaller handle
+// specified in the COMPROPSHEETUI data structure
+//
+// pHelpFile - Resource string ID or pointer to the help file for this
+// OPTITEM. If this pointer is NULL then help file for the
+// help index is assume specified in the pHelpFile field in the
+// COMPROPSHEETUI data structure.
+//
+// dwReserved - These fields are not used now, and must 0
+//
+
+
+typedef struct _OPTITEM {
+ WORD cbSize; // size of this structure
+ BYTE Level; // level in the tree view
+ BYTE DlgPageIdx; // Index to the pDlgPage
+ DWORD Flags; // OPTIF_xxxx flags
+ DWORD UserData; // caller's own data
+ LPTSTR pName; // name of the item
+ union {
+ LONG Sel; // current selection (index)
+ LPTSTR pSel; // current selection (pStr)
+ } DUMMYUNIONNAME;
+ union {
+ PEXTCHKBOX pExtChkBox; // Pointer to EXTCHKBOX structure
+ PEXTPUSH pExtPush; // Pointer to EXTPUSH
+ } DUMMYUNIONNAME2;
+ POPTTYPE pOptType; // pointer to OPTTYPE structure
+ DWORD HelpIndex; // Help file index
+ BYTE DMPubID; // Devmode public filed ID
+ BYTE UserItemID; // caller's own item ID
+ WORD wReserved; // reserved WORD field, must be 0
+ POIEXT pOIExt; // Optitem extension pointer
+ DWORD dwReserved[3]; // reserved DWORD fields (must be 0)
+ } OPTITEM, *POPTITEM;
+
+//
+// OPTITEM is to describe each treeview item's name, selection type and
+// possible selection
+//
+// cbSize - sizeof this structure
+//
+// Level - The level in the treeview, the root should have lowest
+// number and number should start with level 0. the maximum
+// number of levels are 256.
+//
+// DlgPageIdx - Zero-based index to the DLGPAGE araay pointee by
+// pDlgPage. The Maximum index is MAX_DLGPPAGE_COUNT, if
+// pDlgPage is a standard CPSUI_PDLGPAGE_xxxx then this
+// field is automatically set the common UI
+//
+// Flags - OPTIF_xxxx flags as describe above
+//
+// OPTIF_COLLAPSE
+//
+// Collaspe treeview item and its children so it is
+// not expanded initially.
+//
+//
+// OPTIF_HIDE
+//
+// Hide this item from the treeview
+//
+//
+// OPTIF_CALLBACK
+//
+// Callback to the caller when user making some
+// changes a pointer (pfnCallBack) must provided and
+// process as defined by the common UI.
+//
+//
+// OPTIF_CHANGED
+//
+// This item was changed and need to re-display. this
+// flag only used when caller returned from callback
+// funciton.
+//
+//
+// OPTIF_CHANGEONCE
+//
+// This item has been changed at least once.
+//
+//
+// OPTIF_DISABLED
+//
+// Disable this item so it become not selectable.
+//
+//
+// OPTIF_ECB_CHECKED
+//
+// Specified the associated extended check box is
+// in checked state.
+//
+//
+// OPTIF_EXT_HIDE
+//
+// Hide the extended check box/extended push botton.
+//
+//
+// OPTIF_EXT_DISABLED
+//
+// The Extended check box/push botton is disabled and
+// not selectable
+//
+//
+// OPTIF_SEL_AS_HICON
+//
+// This flag only used if this item has no type,
+// pOptType=NULL that is, when pOptType is NULL then
+// 'Sel' filed is the IconID. if flag is set then it
+// indicate IconID (Sel) is the Icon handle rather
+// than the icon resource ID.
+//
+//
+// OPTIF_EXT_IS_EXTPUSH
+//
+// Specified that pExtPush should be used when this
+// pointer is not NULL, if this pointer is not NULL
+// and this flag is clear then pExtChkBox is assumed.
+//
+//
+// OPTIF_NO_GROUPBOX_NAME
+//
+// Specified that do not overwrite the group box title
+// text, if group box ID is defined. See the TVOT_xx
+// description above.
+//
+//
+// OPTIF_OVERLAY_WARNING_ICON
+//
+// If this bit is set then this header OPTITEM's icon
+// will be overlaied by a common UI's
+// IDI_CPSUI_WARNING icon. This bit only used if this
+// item has no type, pOptType is NULL that is.
+//
+//
+// OPTIF_OVERLAY_STOP_ICON
+//
+// If this bit is set then this header OPTITEM's icon
+// will be overlaied by a common UI's IDI_CPSUI_STOP
+// icon. This bit only used if this item has no type,
+// pOptType is NULL that is.
+//
+//
+// OPTIF_OVERLAY_NO_ICON
+//
+// If this bit is set then this header OPTITEM's icon
+// will be overlaied by a common UI's IDI_CPSUI_NO
+// icon. This bit only used if this item has no type,
+// pOptType is NULL that is.
+//
+//
+// OPTIF_INITIAL_TVITEM
+//
+// Specified that this item will be the initial item
+// to be selected and display on the treeview page.
+// If the selected item is currently a child or
+// collapse then common UI will expand the selection
+// then scroll it into view.
+//
+// If this flag is clear or the set item is in hide
+// status common UI will pick the initial item to
+// display.
+//
+// OPTIF_HAS_POIEXT
+//
+// Specified that pOIExt field is a valid pointer that
+// points to OIEXT data structure. The pOIExt only
+// used by the common UI if this bit is set.
+//
+//
+// UserData - a 32-bit number used by the caller and common UI will not
+// modify it.
+//
+// pName - Pointer to the item's name, such as 'Upper Tray',
+// 'Memory' or it is used as data as describe in
+// OPTPARAM/OPTTYPE structure
+//
+// ** See LPTSTR description above
+//
+// pSel
+// Sel - Current selection for this item. This is a union field
+// which can be a pointer to a string or a LONG index
+// selection.
+//
+// ** If pOptType field is NULL then 'Sel' is the icon ID
+// to be used for the header.
+//
+// pExtPush
+// pExtChkBox - Pointer to either EXTPUSH or EXTCHKBOX data structure,
+// if this pointer is NULL then this item does not have
+// ectended check box/push botton associate with it.
+//
+// When an extended check box is associate with the
+// OPTTYPE, the OPTIF_EXT_IS_EXTPUSH must not set, the
+// OPTIF_ECB_CHECKED flag specified if the extended check
+// box is checked or not checked.
+//
+// When an Extended push botton is associated with the
+// OPTTYPE, the OPTIF_EXT_IS_EXTPUSH flag must set.
+//
+// The following flags are used in both EXTCHKBOX or
+// EXTPUSH
+//
+// OPTIF_EXT_HIDE,
+// OPTIF_EXT_DISABLED
+// OPTIF_EXT_CHANGEONCE
+//
+//
+// pOptType - Pointer to the OPTTYPE structure to describe the display
+// and selections of the item. If this pointer is NULL
+// then this this item does not have any selection. and it
+// is used as sub-items' header.
+//
+// * When pOptType is NULL then the 'Sel' is the Icon ID.
+//
+//
+// HelpIndex - a index to the help file for context sensitive help
+// if HelpInex=0 then there is no help for this item
+//
+// DMPubID - specified if this item is one of the public fields in the
+// DEVMODE structure and supported by the common UI.
+//
+// DMPUB_NONE - Not DEVMODE public fields
+// DMPUB_ORIENTATION - dmOrientation
+// DMPUB_SCALE - dmScale
+// DMPUB_COPIES_COLLATE - dmCopies/dmCollate
+// DMPUB_DEFSOURCE - dmDefSource
+// DMPUB_PRINTQUALITY - dmPrintQuality
+// DMPUB_COLOR - dmColor
+// DMPUB_DUPLEX - dmDuplex
+// DMPUB_TTOPTION - dmTTOption
+// DMPUB_FORMNAME - dmFormName
+// DMPUB_ICMMETHOD - dmICMMethod
+// DMPUB_ICMINTENT - dmICMIntent
+// DMPUB_MEDIATYPE - dmMediaType
+// DMPUB_DITHERTYPE - dmDitherType
+//
+// ** for most of DMPUB_FIRST to DMPUB_LAST each OPTITEM's
+// pName is automatically set to the standard
+// IDS_CPSUI_xxx for the consistancy reason, the
+// standard pName is set according to following table.
+//
+// DMPUB_ORIENTATION - IDS_CPSUI_ORIENTATION
+// DMPUB_SCALE - IDS_CPSUI_SCALING
+// DMPUB_COPIES_COLLATE - IDS_CPSUI_COPIES
+// DMPUB_DEFSOURCE - IDS_CPSUI_SOURCE
+// DMPUB_PRINTQUALITY - IDS_CPSUI_PRINTQUALITY
+// IDS_CPSUI_RESOLUTION
+// DMPUB_COLOR - IDS_CPSUI_COLOR_APPERANCE
+// DMPUB_DUPLEX - IDS_CPSUI_DUPLEX
+// DMPUB_TTOPTION - IDS_CPSUI_TTOPTION
+// DMPUB_FORMNAME - IDS_CPSUI_FORMNAME
+// DMPUB_ICMMETHOD - IDS_CPSUI_ICMMETHOD
+// DMPUB_ICMINTENT - IDS_CPSUI_ICMINTENT
+// DMPUB_MEDIATYPE - IDS_CPSUI_MEDIA
+// DMPUB_DITHERTYPE - IDS_CPSUI_DITHERING
+//
+// for DMPUB_PRINTQUALITY, if the pName is not one of
+// IDS_CPSUI_PRINTQUALITY or IDS_CPSUI_RESOLUTION then
+// common UI will automatically default the pName to
+// IDS_CPSUI_RESOLUTION.
+//
+// Each pData (OPTPARAM) selection in OPTPARAM which
+// OPTITEM's pOptType pointed to should use as much
+// as IDS_CPSUI_xxx standard name as possible.
+//
+//
+// ** for DMPUB_COPIES_COLLATE the common UI automatically
+// doing the following before the callback
+//
+// 1) Enable/Disable the collate extended check box if
+// OPTIF_EXT_HIDE is not specified and pExtChkBox
+// is not NULL in the OPTITEM.
+//
+// 2) Automatically change the postfix for this item
+// to be 'Copy' if selection is one, and 'Copies'
+// if selection is greater than one in the treeview
+// page, and it will also set the postfix in
+// standard document property page if the postfix
+// ID is provided (BegCtrlID + 4)
+//
+//
+// ** for DMPUB_COLOR the common UI automatically doing
+// the following before the callback, the gray
+// selection must be Sel=0 and Color slection must be
+// Sel=1
+//
+// 1) Calling halftone color adjustment with current
+// color/mono selection
+//
+// 2) Disable ICM when color is not selected
+//
+//
+// ** Please see above DMPUB_xx description for details.
+//
+// UserItemID - This is a byte ID intented to be used by the caller to
+// identify the item
+//
+// wReserved - WORD reserved. Must be zero
+//
+// pOIExt - Pointer to the OIEXT data structure to specified that
+// it has a OPTITEM extenstion structure.
+//
+// dwReserved[] - DWORD reserved and must be 0
+//
+//
+
+//
+// predefined ID for call back reason
+//
+
+#define CPSUICB_REASON_SEL_CHANGED 0
+#define CPSUICB_REASON_PUSHBUTTON 1
+#define CPSUICB_REASON_ECB_CHANGED 2
+#define CPSUICB_REASON_DLGPROC 3
+#define CPSUICB_REASON_UNDO_CHANGES 4
+#define CPSUICB_REASON_EXTPUSH 5
+#define CPSUICB_REASON_APPLYNOW 6
+#define CPSUICB_REASON_OPTITEM_SETFOCUS 7
+#define CPSUICB_REASON_ITEMS_REVERTED 8
+#define CPSUICB_REASON_ABOUT 9
+
+//
+// predefined ID for call back action
+//
+
+#define CPSUICB_ACTION_NONE 0
+#define CPSUICB_ACTION_OPTIF_CHANGED 1
+#define CPSUICB_ACTION_REINIT_ITEMS 2
+#define CPSUICB_ACTION_NO_APPLY_EXIT 3
+#define CPSUICB_ACTION_ITEMS_APPLIED 4
+
+
+typedef struct _CPSUICBPARAM {
+ WORD cbSize; // size of this structure
+ WORD Reason; // CPSUICB_REASON_XXXXX callback reason
+ HWND hDlg; // handle of the dialog box
+ POPTITEM pOptItem; // pOptItem field from COMPROPSHEETUI
+ WORD cOptItem; // cOptItem field from COMPROPSHEETUI
+ WORD Flags; // flags field from COMPROPSHEETUI
+ POPTITEM pCurItem; // current selected item of callback
+ union {
+ LONG OldSel; // Last selection (index)
+ LPTSTR pOldSel; // Last selection (pStr)
+ } DUMMYUNIONNAME;
+ DWORD UserData; // UserData in the COMPROPSHEETUI struct.
+ DWORD Result; // OUT parameter for the APPLYNOW
+ } CPSUICBPARAM, *PCPSUICBPARAM;
+
+
+typedef LONG (APIENTRY *_CPSUICALLBACK)(PCPSUICBPARAM pComPropSheetUICBParam);
+#define CPSUICALLBACK LONG APIENTRY
+
+
+//
+// CPSUICBPARAM is used when commom UI callback to the caller, this structure
+// describe the nature of callback and passed all necessary parameter for the
+// caller to make changes in the pOptItem and passed an action back to the
+// commom UI to redisplay the tree or page 1 data
+//
+//
+// cbSize - must be CPSUICBPARAM
+//
+// Reason - defined the nature of the callback
+//
+// CPSUICB_REASON_SEL_CHANGED
+//
+// User make change to the pCurItem. if the item is
+// DMPUB_COPIES_COLLATE then common UI automatically
+// change the collate extended check box without callback
+// to the caller of the extended check box changes
+//
+//
+// CPSUICB_REASON_PUSHBUTTON
+//
+// User push the push button and push button item is set
+// to PUSHBUTTON_TYPE_CALLBACK.
+//
+//
+// CPSUICB_REASON_ECB_CHANGED
+//
+// User make change to the extended checked box (i.e. it
+// eiterh checked or not checked) EXTCHKBOX in the
+// pCurItem passed in the call back parameter.
+//
+//
+// CPSUICB_REASON_DLGPROC
+//
+// The callback reason is PUSHBUTTON_TYPE_DLGPROC
+//
+//
+// CPSUICB_REASON_UNDO_CHANGES
+//
+// This callback currently is not implmented.
+//
+//
+// CPSUICB_REASON_EXTPUSH
+//
+// The callback is result of user push the extend push
+// button.
+//
+//
+// CPSUICB_REASON_APPLYNOW
+//
+// The user press the apply now button. Durning callback
+// the pCurItem is set to equal to pOptItem in this
+// structure and 'OldSel' is set to the active DlgPageIdx
+// (compare to the OPTITEM's DlgPageIdx) which the page
+// user hitting the apply now button if the page is
+// non-treeview page, otherwise the 'OldSel' is set to -1
+// (for treeview page) to indicate all valid item should
+// be apply now, if the callback return
+// CPSUICB_ACTION_NONE then the common UI will exit the
+// property sheet and returned CPSUI_OK back to the
+// caller, and if the callback function returned
+// CPSUICB_ACTION_NO_APPLY_EXIT then common UI will not
+// exit the property sheet and callback function must
+// pop-up messages dialog box to tell user why it cannot
+// exist the property sheet until certain action is take
+// by the user.
+//
+//
+// CPSUICB_REASON_OPTITEM_SETFOCUS
+//
+// This callback reason is used when an OPTITEM is getting
+// the keyboard focus. and give the callback function a
+// chance to examine the item.
+//
+//
+// CPSUICB_REASON_ITEMS_REVERTED
+//
+// This callback reason is used when user changed items
+// and decided to revert changes from the parent item in
+// the treeview. The callback funciton is called after
+// all revertable items are reverted to its original.
+//
+// The CPSUICBPARAM's pCurItem is same as pOptItem and
+// 'OldSel' field is same as cOptItem field. for each of
+// reverted item, the OPTIF_CHANGED bit will be set in the
+// OPTITEM by the common UI to indicate the item is revert
+// by the common UI. The callback function MUST NOT
+// reset this bit if it is set.
+//
+//
+// CPSUICB_REASON_ABOUT
+//
+// This callback reason is used when user hit 'About...'
+// push button in the treeview page, and the flag
+// CPSUIF_ABOUT_CALLBACK is set. The pCurItem is set to
+// same as pOptItem and 'pOldSel' is a pointer pointed to
+// original copy of COMPROPSHEETUI data structure which
+// passed to the common UI.
+//
+//
+// hDlg - The handle to the dialog box (Properties page TAB) current
+// active for the callback.
+//
+// Durning the callback the caller must not change the
+// DWL_USERDATA on hDlg, otherwise the common UI will be crash.
+// If callback function need to get/set DWL_USERDATA it should
+// call common UI's SetCPSUIUserData() and GetCPSUIUserData()
+// functions instead.
+//
+// pCurItem - Pointed to POPTITEM which the callback is generated for.
+//
+// pOldSel
+// OldSel - The last OPTITEM's pSel/Sel field before the change was made
+// by the user. The pOldSel/OldSel only valid if the callback
+// reason is CPSUICB_REASON_SEL_CHANGED, this give the callback
+// function a chance to check against the previous item
+// selection. This is a union field which can be a pointer to
+// a string or a LONG index selection.
+//
+// UserData - a 32-bit user defined data in the COMPROPSHEETUI structure,
+// commom UI will not changed it.
+//
+// Result - When the reason is CPSUICB_REASON_APPLYNOW, the callback
+// function MUST set the requested result for the caller into
+// 'Result' field when it returned a value other than the
+// CPSUICB_ACTION_NO_APPLY_EXIT and common UI will send the
+// 'Result' field value to this page's parent.
+//
+// The called function should save the current result of
+// pOptItem. The default 'Result' is set to CPSUI_OK (1) from
+// common UI. This function can alter this result before it
+// return back to to the common UI.
+//
+//
+// Return Values:
+//
+// CPSUICB_ACTION_NONE - No action need to be take by the
+// common UI.
+//
+// CPSUICB_ACTION_OPTIF_CHANGED - Ask the common UI to examine the
+// OPTIF_CHANGED flag in the OPTITEM
+// data structure. if the flag is set
+// then that item is assume need to be
+// re-display because of OPTITEM's Flags
+// field changed or item's selection
+// changed. This is different from
+// CPSUICB_ACTION_REINIT_ITEMS which
+// it assume OPTTYPE or OPTPARAM data
+// also changed.
+//
+//
+// CPSUICB_ACTION_REINIT_ITEMS - Ask the common UI to examine the
+// OPTIF_CHANGED flag in the OPTITEM
+// data structure. if the flag is set
+// then that item is assume need to be
+// re-initialized in the dilaog box
+// control. This happened if item's
+// OPTTYPE or OPTPARAMs flag/pdata
+// changed.
+//
+//
+// CPSUICB_ACTION_NO_APPLY_EXIT - This return value only valid durning
+// CPSUICB_REASON_APPLYNOW callback
+// reason, it tell common UI it has
+// some constraints in its OPTITEM which
+// must correct or confirm by the user
+// before exit. The callback function
+// must display and/or have user taking
+// some actions before return this
+// action to the common UI
+//
+// CPSUICB_ACTION_ITEMS_APPLIED - When responsed to the
+// CPSUICB_REASON_APPLYNOW, if the
+// returned action is
+// CPSUICB_ACTION_ITEMS_APPLIED then
+// common UI will reset OPTIF_CHANGEONCE
+// bit and save the new default for the
+// future undo operations.
+//
+//
+
+#define DP_STD_TREEVIEWPAGE 0xFFFF
+#define DP_STD_DOCPROPPAGE 0xFFFE
+
+#define MAX_DLGPAGE_COUNT 64
+
+#define DPF_ICONID_AS_HICON 0x0001
+#define DPF_USE_HDLGTEMPLATE 0x0002
+
+typedef struct _DLGPAGE {
+ WORD cbSize; // size of this structure
+ WORD Flags; // DPF_xxxx flags
+ DLGPROC DlgProc; // caller's dialog box subclass procedue
+ LPTSTR pTabName; // pointer to the tab name
+ DWORD IconID; // icon to be used
+ union {
+ WORD DlgTemplateID; // dialog box template ID
+ HANDLE hDlgTemplate; // handle to the dialog template
+ } DUMMYUNIONNAME;
+ } DLGPAGE, *PDLGPAGE;
+
+
+//
+// DLGPAGE structure describe non-treeview page characteristics
+//
+//
+// cbSize - size of this structure
+//
+// Flags - DPF_xxxx flags
+//
+// DPF_ICONID_AS_HICON
+//
+// If this flag is set then IconID DWORD field is
+// treated as a handle to the icon rather then the
+// resource ID
+//
+//
+// DlgProc - caller's supplied DLGPROC for sub-class the page
+// dialog box processing,
+//
+// if DlgProc is not NULL then common UI do the following
+// according the the message received except for the
+// DP_STD_xxx pages
+//
+//
+// WM_INITDIALOG
+//
+// Common UI initialize the dialog box and then call
+// DlgProc(WM_INITDIALOG) the DlgProc should return
+// exactly the behavior for the WM_INITDIALOG
+//
+// The lParam in the WM_INITDIALOG data structure is
+// a pointer to the PROPSHEETPAGE data structure.
+//
+// the lParam field in the PROPSHEETPAGE (lParam
+// passed to the WM_INITDIALOG) is the UserData
+// defined in COMPROPSHEETUI data structure
+//
+// To access to the PSPINFO data structure which
+// associate with this page, use the common UI macro
+// PPSPINFO_FROM_WM_INITDIALOG_LPARAM(lParam) where
+// lParam is the parameter passed to the
+// WM_INITDIALOG message.
+//
+// The subclass function should save these pointers
+// for its later use, but it MUST NOT modified the
+// content of the PSPINFO data structure or system
+// may crashed.
+//
+//
+// OTHER DIALOG MESSAGES
+//
+// Iit call DlgProc() and if it returned the value is
+// non-zero then common UI assume DlgProc() processed
+// the message and will not process this message.
+//
+// If the returned vlaue from DlgProc() is zero then
+// common UI will process this message.
+//
+//
+// * Durning the DlgProc the caller must not change the
+// DWL_USERDATA on hDlg, otherwise the common UI will be
+// crash. If caller need to get/set DWL_USERDATA it
+// should call common UI's SetCPSUIUserData() and
+// GetCPSUIUserData() instead.
+//
+// pTabName - Pointer to a string to describe the TAB title
+//
+// IconID - This is the icon identifier, which can be a common
+// strandard IDI_CPSUI_xxx icon ID, caller's own icon
+// resource ID, or a handle to the caller defined icon if
+// DPF_ICONID_AS_HICON flag is set, in any case if the
+// IconID is zero then it indicated no icon.
+//
+// DlgTemplateID - The template id to be use for the ProPage, it can be
+// one of DP_STD_xxxx, the DP_STD_xxx has 240 x 240 dialog
+// box units.
+//
+//
+// DP_STD_TREEVIEWPAGE
+//
+// Specified that this page is a standard treeview
+// page provided by the common ui. The treeview page
+// is a page using treeview display all valid OPTITEM
+// passed to the common UI. User can modify every
+// valid selectable OPTITEM from the treeview page.
+//
+//
+// DP_STD_DOCPROPPAGE
+//
+// Specified that this page is a standard document
+// property page provided by the common UI
+//
+// hDlgTemplate - Handle to the DLGTEMPLATE which will be use for pop up
+// dialog box
+//
+//
+// wReserved[]
+// dwReserved[] - Reserved fields, must be 0
+//
+//
+// ** Tips of designing the dialog box controls
+//
+// When designing the dialog box controls, each OPTITEM is correspoonds
+// to one input control plus one extended check box or extended push
+// button. Since common UI will automatically disable and remove
+// OPTIF_HIDE items item from the property sheet and dynamically move
+// other controls, the following tips of designing the dialog box controls
+// should follow.
+//
+// * Each item should have one input control plus optional of extended
+// check box/push botton, one icon control and other static controls
+//
+// * Each item should occupied whole horizontal spaces of the property
+// sheet, items must not overlay in vertical direction.
+//
+// * for TVOT_2STATES, TVOT_3STATES, if it araange radio buttons from
+// left to right in state order (ie. from first state's OPTPARAM to
+// last state's OPTPARAM) then the radio buttons and icons should
+// aligned in the Y coordinate. If it arrange radio buttons from top
+// to bottom (ie. from first state's OPTPARAM to last state's OPTPARAM)
+// then the radio buttons and icons should aligned in the X coordinate.
+//
+// common UI will automatically hide/move the radio buttons to compact
+// the dialog box controls. If radio buttons/icons are arranged in
+// top/down order and there is other controls obscure in Y direction
+// then radio buttons will only be re-arranged but not remove any white
+// spaces in Y direction.
+//
+// * If multiple items shared one group box, then the group box must
+// belongs to the first item (topmost in the dialog box group) in the
+// group, the group box must large enough to cover all the items in
+// side the group box.
+//
+//
+
+
+#define CPSUIF_UPDATE_PERMISSION 0x0001
+#define CPSUIF_ICONID_AS_HICON 0x0002
+#define CPSUIF_ABOUT_CALLBACK 0x0004
+
+#define CPSUI_PDLGPAGE_DOCPROP (PDLGPAGE)1
+#define CPSUI_PDLGPAGE_ADVDOCPROP (PDLGPAGE)2
+#define CPSUI_PDLGPAGE_PRINTERPROP (PDLGPAGE)3
+#define CPSUI_PDLGPAGE_TREEVIWONLY (PDLGPAGE)4
+
+typedef struct _COMPROPSHEETUI {
+ WORD cbSize; // size of this structure
+ WORD Flags; // CPSUIF_xxxx flags
+ HINSTANCE hInstCaller; // caller's hInstance
+ LPTSTR pCallerName; // pointer to the caller's name
+ DWORD UserData; // caller's own data
+ LPTSTR pHelpFile; // pointer to the help file
+ _CPSUICALLBACK pfnCallBack; // callback function pointer
+ POPTITEM pOptItem; // pointer to POPTITEM array
+ PDLGPAGE pDlgPage; // pointer to the DLGPAGE array
+ WORD cOptItem; // count of pOptItem array
+ WORD cDlgPage; // count of pDlgPage array
+ DWORD IconID; // icon to be used
+ LPTSTR pOptItemName; // pointer to the optitem's data name
+ WORD CallerVersion; // version for the caller apps
+ WORD OptItemVersion; // version for the optitem name
+ DWORD dwReserved[4]; // reserved, must be 0
+ } COMPROPSHEETUI, *PCOMPROPSHEETUI;
+
+
+//
+// COMPROPSHEETUI data structure is used when calling common UI to display dialog
+// box of properties pages.
+//
+//
+// Size - Must be sizeof (COMPROPSHEETUI)
+//
+// Flags - can be one or more of following
+//
+// CPSUIF_UPDATE_PERMISSION
+//
+// Specified the any valid pOptItem items are
+// changeable by the user.
+//
+//
+// CPSUIF_ICONID_AS_HICON
+//
+// If this flag is set then IconID DWORD field is
+// treated as a handle to the icon rather then the
+// resource ID
+//
+//
+// CPSUIF_ABOUT_CALLBACK
+//
+// If this flag bit is set, then when user hit
+// 'About...' button in the treeview tab, it will
+// call the callback function with a reason of
+// CPSUICB_REASON_ABOUT, and callback MUST handle
+// the about which pop-up dialog box to show user
+// the information about the caller and OPTITEMs.
+//
+// If this bit is not set then common UI will call
+// the ShellAbout() with formatted caller Name and
+// pOptItemName with version numbers.
+//
+//
+// hInstCaller - the caller's handle to its instance. Commom UI use
+// this handle to load caller's icon and other resources.
+//
+// pCallerName - Pointer to the caller's NULL terminated caller's
+// name, most time this is driver's name,
+// such as 'Postscript Driver'
+//
+// UserData - a 32-bit number used by the caller and common UI will
+// not modify it. this 32-bit number is passed back to
+// the caller durning the callback function
+//
+// pHelpFile - specified a standard microsoft help file (path/file)
+// for using in the common UI. in OPTITEM specified
+// HelpIndex for help in each item.
+//
+// pfnCallBack - Pointer to _CPSUICALLBACK callback function. Common
+// UI only callback to the caller if an OPTIF_CALLBACK
+// is set OPTITEM data structure's flag fields and the
+// item selection is changed by the user.
+//
+// pOptItem - Pointer to array of OPTITEM structure to be displayed
+// by the common UI
+//
+// pDlgPage - Pointer to array of DLGPAGE structure to describe
+// each property sheet page infomation, the following
+// are the standard common ui DLGPAGEs. When specified
+// CPSUI_PDLGPAGE_xxxx, the common UI will automatically
+// modify DlgPageIdx field in the OPTITEM, caller must
+// set the iStartPage correctly.
+//
+// CPSUI_PDLGPAGE_DOCPROP
+//
+// specified this a common ui standard document
+// property sheets. This includes two property
+// sheets, 1) Page Setup 2) Advance (TreeView)
+//
+//
+// CPSUI_PDLGPAGE_ADVDOCPROP
+//
+// Specified this is a treeview page only UI
+// provided by the common UI, this only has one
+// treeview page with tab of 'Advance'
+//
+//
+// CPSUI_PDLGPAGE_PRINTERPROP
+//
+// Specified this is a common UI standard printer
+// property sheet. This only has one treeview
+// page with tab of 'Device Options'
+//
+//
+// CPSUI_PDLGPAGE_TREEVIWONLY
+//
+// Specified this is a treeview page only UI
+// provided by the common UI, this only has one
+// treeview page
+//
+//
+//
+// cOptItem - Count of OPTITEM pointed by the pOptItem above
+//
+// cDlgPage - Count of DLGPAGE pointed by the pDlgPage. If
+// pDlgPage is one of the CPSUI_PDLGPAGE_xxxx then this
+// field is ignored by the common UI.
+//
+// IconID - This is the icon identifier, which can be a common
+// strandard IDI_CPSUI_xxx icon ID, caller's own icon
+// resource ID, or a handle to the caller defined icon
+// if CPSUIF_ICONID_AS_HICON flag is set, in any case
+// if the IconID is zero then it indicated no icon.
+//
+// pOptItemName - Pointer to the pOptItem data NULL terminated name,
+// most time this is device name, such as 'HP 4si'
+//
+// CallerVersion - Version for the caller, the HIBYTE(CallerVersion) is
+// the major version, and LOBYTE(CallerVersion) is the
+// minor version, such as 0x310 display as 3.16, 0x3ff
+// display as 3.255 and 0x30a display as 3.10
+//
+// OptItemVersion - Version for the OPTITEM's data, the
+// HIBYTE(OptItemVersion) is the major version, and
+// LOBYTE(OptItemVersion) is the minor version, such as
+// 0x310 display as 3.16, 0x3ff display as 3.255 and
+// 0x30a display as 3.10.
+//
+// dwReserved[4] - reserved fields, must be 0
+//
+//
+// ** pTitlee and TitleBarIcon only used if CommonPrinterPropSheetUI()
+// is the last one the Property sheet UI chain and call the PropertySheet()
+//
+//
+
+
+#define CPSFUNC_ADD_HPROPSHEETPAGE 0
+#define CPSFUNC_ADD_PROPSHEETPAGEW 1
+#define CPSFUNC_ADD_PCOMPROPSHEETUIA 2
+#define CPSFUNC_ADD_PCOMPROPSHEETUIW 3
+#define CPSFUNC_ADD_PFNPROPSHEETUIA 4
+#define CPSFUNC_ADD_PFNPROPSHEETUIW 5
+#define CPSFUNC_DELETE_HCOMPROPSHEET 6
+#define CPSFUNC_SET_HSTARTPAGE 7
+#define CPSFUNC_GET_PAGECOUNT 8
+#define CPSFUNC_SET_RESULT 9
+#define CPSFUNC_GET_HPSUIPAGES 10
+#define CPSFUNC_LOAD_CPSUI_STRINGA 11
+#define CPSFUNC_LOAD_CPSUI_STRINGW 12
+#define CPSFUNC_LOAD_CPSUI_ICON 13
+#define CPSFUNC_GET_PFNPROPSHEETUI_ICON 14
+#define CPSFUNC_ADD_PROPSHEETPAGEA 15
+#define CPSFUNC_INSERT_PSUIPAGEA 16
+#define CPSFUNC_INSERT_PSUIPAGEW 17
+#define CPSFUNC_SET_PSUIPAGE_TITLEA 18
+#define CPSFUNC_SET_PSUIPAGE_TITLEW 19
+#define CPSFUNC_SET_PSUIPAGE_ICON 20
+#define MAX_CPSFUNC_INDEX 20
+
+#ifdef UNICODE
+#define CPSFUNC_ADD_PCOMPROPSHEETUI CPSFUNC_ADD_PCOMPROPSHEETUIW
+#define CPSFUNC_ADD_PFNPROPSHEETUI CPSFUNC_ADD_PFNPROPSHEETUIW
+#define CPSFUNC_LOAD_CPSUI_STRING CPSFUNC_LOAD_CPSUI_STRINGW
+#define CPSFUNC_ADD_PROPSHEETPAGE CPSFUNC_ADD_PROPSHEETPAGEW
+#define CPSFUNC_INSERT_PSUIPAGE CPSFUNC_INSERT_PSUIPAGEW
+#define CPSFUNC_SET_PSUIPAGE_TITLE CPSFUNC_SET_PSUIPAGE_TITLEW
+
+#else
+#define CPSFUNC_ADD_PCOMPROPSHEETUI CPSFUNC_ADD_PCOMPROPSHEETUIA
+#define CPSFUNC_ADD_PFNPROPSHEETUI CPSFUNC_ADD_PFNPROPSHEETUIA
+#define CPSFUNC_LOAD_CPSUI_STRING CPSFUNC_LOAD_CPSUI_STRINGA
+#define CPSFUNC_ADD_PROPSHEETPAGE CPSFUNC_ADD_PROPSHEETPAGEA
+#define CPSFUNC_INSERT_PSUIPAGE CPSFUNC_INSERT_PSUIPAGEA
+#define CPSFUNC_SET_PSUIPAGE_TITLE CPSFUNC_SET_PSUIPAGE_TITLEA
+
+#endif
+
+//
+// for the CPSFUNC_SET_RESULT
+//
+
+#define SR_OWNER 0
+#define SR_OWNER_PARENT 1
+
+typedef struct _SETRESULT_INFO {
+ WORD cbSize;
+ WORD wReserved;
+ HANDLE hSetResult;
+ DWORD Result;
+ } SETRESULT_INFO, *PSETRESULT_INFO;
+
+//
+// This is for CPSFUNC_INSERT_PSUIPAGE
+//
+
+#define HINSPSUIPAGE_FIRST (HANDLE)0xFFFFFFFE
+#define HINSPSUIPAGE_LAST (HANDLE)0xFFFFFFFF
+#define HINSPSUIPAGE_INDEX(i) (HANDLE)MAKELONG(i, 0);
+
+#define PSUIPAGEINSERT_GROUP_PARENT 0
+#define PSUIPAGEINSERT_PCOMPROPSHEETUI 1
+#define PSUIPAGEINSERT_PFNPROPSHEETUI 2
+#define PSUIPAGEINSERT_PROPSHEETPAGE 3
+#define PSUIPAGEINSERT_HPROPSHEETPAGE 4
+#define PSUIPAGEINSERT_DLL 5
+#define MAX_PSUIPAGEINSERT_INDEX 5
+
+#define IDX_2_HINSPSUIPAGE(i) ((HANDLE)MAKELONG(i, 0))
+#define HINSPSUIPAGE_2_IDX(h) ((UINT)LOWORD(h))
+
+
+#define INSPSUIPAGE_MODE_BEFORE 0
+#define INSPSUIPAGE_MODE_AFTER 1
+#define INSPSUIPAGE_MODE_FIRST_CHILD 2
+#define INSPSUIPAGE_MODE_LAST_CHILD 3
+#define INSPSUIPAGE_MODE_INDEX 4
+
+
+typedef struct _INSERTPSUIPAGE_INFO {
+ WORD cbSize;
+ BYTE Type;
+ BYTE Mode;
+ DWORD dwData1;
+ DWORD dwData2;
+ DWORD dwData3;
+ } INSERTPSUIPAGE_INFO, *PINSERTPSUIPAGE_INFO;
+
+
+//
+// for the CPSFUNC_SET_HSTARTPAGE
+//
+
+#define SSP_TVPAGE 10000
+#define SSP_STDPAGE 10001
+
+typedef DWORD (CALLBACK *PFNCOMPROPSHEET)(HANDLE hComPropSheet,
+ UINT Function,
+ LPARAM lParam1,
+ LPARAM lParam2);
+
+
+typedef struct _PSPINFO {
+ WORD cbSize;
+ WORD wReserved;
+ HANDLE hComPropSheet;
+ HANDLE hCPSUIPage;
+ PFNCOMPROPSHEET pfnComPropSheet;
+ } PSPINFO, *PPSPINFO;
+
+//
+// PPSPINFO_FROM_WM_INITDIALOG_LPARAM(lParam) macro retrieve a pointer to the
+// PSPINFO data structure. the lParam must be the lParam passed to the
+// WM_INITDIALOG, otherwise the system can failed
+//
+
+#define PPSPINFO_FROM_WM_INITDIALOG_LPARAM(lParam) \
+ (PPSPINFO)((LPBYTE)lParam + ((LPPROPSHEETPAGE)lParam)->dwSize)
+
+//
+// PSPINFO
+//
+// This structure is used durning property sheet page's WM_INITDIALOG message.
+// At WM_INITDIALOG, the lParam is a pointer to the PROPSHEETPAGE, and
+// lParam field in the PROPSHEETPAGE is a pointer to the PSPINFO. the
+// original lParam in the PROPSHEETPAGE is saved in the lParam field in the
+// PSPINFO data structure.
+//
+// When process WM_INITDIALOG message, it should save the lParam (PSPINFO
+// structure pointer) for later to call common UI callback functions.
+//
+//
+// cbSize - Size of this structure in bytes
+//
+// wReserved - Reserved, must be set to zero
+//
+// hComPropSheet - Handle to the parent page which is the hComPropSheet
+// passed to the CPSFUNC_ADD_PROPSHEETPAGE
+//
+// hCPSUIPage - Handle to the this added common UI property sheet page.
+//
+// pfnComPropSheet - Pointer to the common UI callback function, using this
+// function pointer to do CPSFUNC_xxxx
+//
+//
+
+
+//
+// PFNCOMPROPSHEET function descriptions
+//
+// For each function index, it passed a handle, a Function Index and two (2)
+// long parameters, the 'hComPropSheet' handle passed must be the handle passed
+// from common UI when common UI called the caller supplied function
+//
+// pfnPropSheetUI(pPropSheetUIData);
+//
+// Following are the description of each function index
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_ADD_HPROPSHEETPAGE
+//
+// This function add a page to the hComPropSheet using handle to the
+// PROPSHEETPAGE
+//
+//
+// Parameters:
+//
+// lParam1 - is a handle to the PROPSHEETPAGE that created by the caller
+// using CreatePropertySheetPage()
+//
+// lParam2 - Not used, must be 0
+//
+//
+// Return Value:
+//
+// The return value is the handle of newly added common property sheet
+// page, if return value is NULL then function failed.
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_ADD_PROPSHEETPAGE
+//
+// This function add a page to the hComPropSheet using PROPSHEETPAGE
+// data structure.
+//
+//
+// Parameters:
+//
+// lParam1 - is a pointer to PROPSHEETPAGE data structure
+//
+// lParam2 - Not used.
+//
+//
+// Return Value:
+//
+// The return value is the handle of newly added common property sheet
+// page, if return value is NULL then function failed.
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_ADD_PCOMPROPSHEETUI
+//
+// This function add propety page(s) to the hComPropSheet handle using
+// COMPROPSHEETUI data structure.
+//
+//
+// Parameters:
+//
+// lParam1 - is a pointer to COMPROPSHEETUI data structure
+//
+// lParam2 - pointer to a 32-bit location that received the total pages
+// added by the COMPROPSHEETUI data structure if sucessful else
+// it contains the ERR_CPSUI_xxx error codes.
+//
+//
+// Return Value:
+//
+// The return value is the handle of newly added common property sheet
+// page(s), if return value is NULL then function failed.
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_ADD_PFNPROPSHEETUI
+//
+// This function add property page(s) to the hChild handle using
+// lParam1 as PFNPROPSHEETUI function pointer and lParam2 as the function
+// parameter. The common UI call supplied function as following
+//
+// PROPSHEETUI_INFO PSUIInfo;
+//
+// PSUIInfo.cbSize = sizeof(PROPSHEETUI_INFO);
+// PSUIInfo.Version = PROPSHEETUI_INFO_VERSION;
+// PSUIInfo.Flags = (Ansi) ? 0: PSUIINFO_UNICODE;
+// PSUIInfo.Reason = PROPSHEETUI_REASON_INIT;
+// PSUIInfo.hComPropSheet = hComPropSheet;
+// PSUIInfo.pfnComPropSheet = ComPropSheetUICallBack;
+// PSUIInfo.lParamInit = lParam2;
+// PSUIInfo.UserData = 0;
+// PSUIInfo.Result = 0;
+//
+// ((PFNPROPSHEETUI)lParam1)(&PSUIInfo, lParam2);
+//
+//
+// If the pfnPropSheetUI() need to add/delete any common UI pages then
+// it must use hComPropSheet as its handle when calling the
+// ComPropSheetUICallBack().
+//
+//
+// Parameters:
+//
+// lParam1 - a PFNPROPSHEETUI function pointer.
+//
+// lParam2 - a 32-bit data that will be used as lParam when calling
+// PFNPROPSHEETUI function pointer.
+//
+//
+// Return Value:
+//
+// The return value is the newly added property pages function handle, if
+// return value is NULL then function failed or no page is added.
+//
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_DELETE_HCOMPROPSHEET
+//
+// This function delete child property page(s) from hComPropSheet parent
+// using the child handle passed.
+//
+//
+// Parameters:
+//
+// lParam1 - the handle of common property sheet pages that to be deleted.
+// This handle must be the handle returned from CPSFUNC_ADD_xxx
+// functions.
+//
+// lParam2 - not used, must be 0
+//
+// Return Value:
+//
+// The return value is greater than zero if function sucessful, and less
+// or equal to zero if the function failed.
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_GET_PAGECOUNT
+//
+// This function return total property sheet pages belongs to a common
+// UI property sheet page handle hComPropSheet
+//
+//
+// Parameters:
+//
+// lParam1 - not used, must be 0
+//
+// lParam2 - not used, must be 0.
+//
+//
+// Return Value:
+//
+// The return value is total page count if function sucessful or zero if
+// function failed.
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_SET_RESULT
+//
+// This function set the result of property sheet page to its owner that
+// added this page by CPSFUNC_ADD_xxx function indices
+//
+// Parameters:
+//
+// lParam1 - Handle to the common UI property sheet page that setting the
+// result. If this handle is NULL then it is treated as
+// equal to the hComPropSheet.
+//
+// lParam2 - a 32-bit DWORD result to be set.
+//
+//
+// Return Value:
+//
+// > 0: Successful, return value is total count of parents set the result
+// = 0: There is no owner or parent for the lParam1 handle.
+// < 0: function failed because of invalid lParam1 handle.
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_SET_HSTARTPAGE
+//
+//
+// Parameters:
+//
+// lParam1 - the handle of common property sheet pages that to be set
+// as initial page that appear when the property sheet dialog
+// boxes is created. This handle must be the handle returned
+// from CPSFUNC_ADD_xxx functions.
+//
+// lParam2 - a LONG number to specified the children index. if lParam1
+// handle is a parent then lParam2 specified zero base children
+// index for using as start page.
+//
+// It also can be one of following special index
+//
+// SSP_TVPAGE
+//
+// set to the treeview page, this only valid if lParam1
+// handle was added by the CPSFUNC_ADD_PCOMPROPSHEETUI.
+//
+// SSP_STDPAGE
+//
+// Set to the standard document property sheet page
+// (Page 1 user friendly page). this only valid if
+// lParam1 handle was added by the
+// CPSFUNC_ADD_PCOMPROPSHEETUI.
+//
+//
+// Return Value:
+//
+// The return value is greater than zero if function sucessful, and less
+// or equal to zero if the function failed.
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_GET_HPSUIPAGES
+//
+// This function return array of children HPROPSHEETPAGE belongs to
+// the parent hComPropSheet UI property sheet page handle hComPropSheet
+//
+//
+// Parameters:
+//
+// lParam1 - Pointer to an array of HPROPSHEETPAGE that to be stored
+// the handle upon return.
+//
+// lParam2 - Count of HPROPSHEETPAGE array pointed by the lParam1
+//
+//
+// Return Value:
+//
+// The return value is total HPROPSHEETPAGE stored in the array pointed
+// by the lParam1. To get all hPropSheetPage for any common property
+// sheet handle's (hCPSUIPage) children, it can use following sequence.
+//
+// if ((cPage = pfnComPropSheet(hComPropSheet,
+// CPSFUNC_GET_PAGECOUNT,
+// (LPARAM)hCPSUIPage,
+// 0L)) &&
+// (phPage = ALLOCMEM(cPage * sizeof(HANDLE)))) {
+//
+// pfnComPropSheet(hCPSUIPage,
+// CPSFUNC_GET_HPSUIPAGES,
+// (LPARAM)phPage,
+// (LPARAM)cPage);
+// }
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_LOAD_CPSUI_STRING
+//
+// This function load the common property sheet UI resource string
+//
+// Parameters:
+//
+// lParam1 - Pointer to LPTSTR string which will stored the loaded
+// resource string from the common property sheet UI DLL.
+//
+// lParam2 - LOWORD(lParam2) = Count of characters (includes null
+// terminator) which pointed by the lParam1
+//
+// HIWORD(lParam2) = Common property sheet UI predefined string
+// resource ID as IDS_CPSUI_xxxx
+//
+//
+// Return Value:
+//
+// > 0: Total characters stored in the string pointed by the lParam1, this
+// is not includes the null terminator
+// = 0: Invalid IDS_CPSUI_xxx passed from HIWORD(lParam)
+// < 0: Either lParam1 is NULL or count of character is 0 from
+// LOWORD(lParam2)
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_LOAD_CPSUI_ICON
+//
+// This function load the common property sheet UI resource icon.
+//
+// Parameters:
+//
+// lParam1 - Common property sheet UI predefined icon resource ID as
+// IDI_CPSUI_xxxx.
+//
+// lParam2 - LOWORD(lParam2) = cx icon size in pixel. If zero then
+// SM_CXICON is used
+// HIWORD(lParam2) = cy icon size in pixel. If zero then
+// SM_CYICON is used
+//
+//
+// Return Value:
+//
+// Return value is the handle to the hIcon if function succeed, a NULL
+// if function failed. The caller must call DestroyIcon() when it no
+// longer need to use the hIcon returned
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_GET_PFNPROPSHEETUI_ICON
+//
+// This function let the caller return hIcon of its children pages that
+// was added by CPSFUNC_ADD_PFNPROPSHEETUI
+//
+// Parameters:
+//
+// lParam1 - Handle of common property sheet pages that the hIcon will be
+// queried. This handle must be the handle returned from
+// CPSFUNC_ADD_PFNPROPSHEETUI function.
+//
+// lParam2 - LOWORD(lParam2) = cx icon size in pixel. If zero then
+// SM_CXICON is used
+// HIWORD(lParam2) = cy icon size in pixel. If zero then
+// SM_CYICON is used
+//
+//
+// Return Value:
+//
+// Return value is the handle to the hIcon if function succeed, a NULL
+// if function failed. The caller must call DestroyIcon() when it no
+// longer need to use the hIcon returned
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_INSERT_PSUIPAGE
+//
+// This function let the caller insert common property sheet pages at
+// set position. The hComPropSheet must be the parent handle.
+//
+// Parameters:
+//
+// lParam1 - Handle of common property sheet pages that the page position
+// will be inserted. This handle must be the handle returned
+// from previous CPSFUNC_ADD_xxx or CPSFUNC_INSERT_PSUIPAGE that
+// added or inserted using the hComPropSheet if the Mode field
+// in INSPSUIPAGE_INFO data structure is one of the follwing
+//
+// INSPSUIPAGE_MODE_BEFORE
+// INSPSUIPAGE_MODE_AFTER - Common UI page handle
+//
+// INSPSUIPAGE_MODE_INDEX - the lParam1 is an zero based
+// child index.
+//
+// INSPSUIPAGE_MODE_FIRST_CHILD
+// INSPSUIPAGE_MODE_LAST_CHILD - The lParam1 is ignonred.
+//
+//
+// If lParam1 is a valid common property sheet page handle then
+// it is the child page handle of hComPropSheet that added by
+// CPSFUNC_ADD_xxx or inserted by CPSFUNC_INSERT_PSUIPAGE.
+//
+// lParam2 - A pointer that points to INSERTPSUIPAGE_INFO data structure.
+// Fields must set according to the following.
+//
+// cbSize - size of this structure
+//
+// Type - Type of page(s) to be inserted. It can be one
+// of the following
+//
+// PSUIPAGEINSERT_GROUP_PARENT
+//
+// Insert a group parent that can be used to insert
+// new pages under it. This is typically used when
+// a set of common UI pages must be group together and
+// can be deleted later using a single group parent
+// handle without individual deleting each page.
+//
+// This handle can be nested. After this function
+// returned the group parent handle, it can be used
+// as hComPropSheet handle (first parameter in the
+// common UI callback) as parent handle so insertion
+// will be inserted at level below returned group
+// parent handle.
+//
+//
+// PSUIPAGEINSERT_PCOMPROPSHEETUI
+//
+// Insert pages using COMPROPSHEETUI data structure,
+// dwData1 is a pointer to the COMPROPSHEETUI data
+// structure.
+//
+//
+// PSUIPAGEINSERT_PFNPROPSHEETUI
+//
+// Insert pages using PFNPROPSHEETUI function pointer.
+// The dwData1 is a PFNPROPSHEETUI function pointer.
+// The common UI will call this pfnPropSheetUI()
+// function pointer with PROPSHEETUI_REASON_INIT to
+// have it add pages.
+//
+// When common UI call pfnPropSheetUI() (dwData1) it
+// also passed a 32-bit parameter from the dwData2
+// field in INSERTPSUIPAGE_INFO data structure.
+//
+//
+// PSUIPAGEINSERT_PROPSHEETPAGE
+//
+// Insert pages using PROPSHEETPAGE data structure.
+// The dwData1 is a pointer to the PROPSHEETPAGE
+// data structure.
+//
+//
+// PSUIPAGEINSERT_HPROPSHEETPAGE
+//
+// Insert pages using HPROPSHEETPAGE handle. The
+// dwData1 is a PROPSHEETPAGE handle which was
+// created by CreatePropertySheetPage().
+//
+//
+// PSUIPAGEINSERT_DLL
+//
+// Insert pages from a dynnmaic link library. The
+// dwData1 is a pointer to a null terminated string
+// that specified the dynamic link library file name.
+//
+// The dwData2 is a pointer to a null terminated ASCII
+// string that specified the pfnPropSheetUI function
+// name. (MUST BE ASCII STRING)
+//
+// Common UI will do a LoadLibrary((LPTSTR)dwData1),
+// pfnPropSheetUI = GetProcAddress((LPTSTR)dwData2)
+// then call the pfnPropSheetUI with a lParam from
+// dwData3. The called reason from common UI is
+// set to PROPSHEETUI_REASON_INIT.
+//
+// Using this method insert pages will guaranteed that
+// library will be unload correctly.
+//
+//
+// Mode - Insert Mode, it can be one of the following
+//
+//
+// INSPSUIPAGE_MODE_BEFORE
+//
+// Insert pages before the common property sheet page
+// handle specified by lParam1
+//
+//
+// INSPSUIPAGE_MODE_AFTER
+//
+// Insert pages after the common property sheet page
+// handle specified by lParam1
+//
+//
+// INSPSUIPAGE_MODE_FIRST_CHILD
+//
+// Insert pages as the first child of hComPropSheet
+// parent handle, the lParam1 is ignored
+//
+//
+// INSPSUIPAGE_MODE_LAST_CHILD
+//
+// Insert pages as the last child of hComPropSheet
+// parent handle, the lParam1 is ignored
+//
+//
+// INSPSUIPAGE_MODE_INDEX
+//
+// Insert pages as a zero base child index of its
+// parent handle specified by hComPropSheet.
+//
+// The lParam1 is the zero based index special handle
+// that must generated by HINSPSUIPAGE_INDEX(Index)
+// macro. If the index is greater than or equal to
+// the total count of children then it will treat the
+// mode same as INSPSUIPAGE_MODE_LAST_CHILD
+//
+//
+// dwData1
+// dwData2
+// dwData3 - 32-bit data associate with the 'Type' field
+// as following
+//
+//
+// PSUIPAGEINSERT_GROUP_PARENT
+//
+// dwData1 = Not used, must be 0
+// dwData2 = Not used, must be 0
+// dwData3 = Not used, must be 0
+//
+//
+// PSUIPAGEINSERT_PCOMPROPSHEETUI
+//
+// dwData1 = pointer to COMPORPSHEETUI data structure.
+// dwData2 = at return if sucessful, it contains total
+// page added. If failed, it contains the
+// ERR_CPSUI_xxx codes
+// dwData3 = Not used, must be 0
+//
+//
+// PSUIPAGEINSERT_PFNPROPSHEETUI
+//
+// dwData1 = PFNPROPSHEETUI function pointer
+// dwData2 = 32-bit parameter passed to pfnPropSheetUI
+// dwData3 = Not used, must be 0
+//
+//
+// PSUIPAGEINSERT_PROPSHEETPAGE
+//
+// dwData1 = Pointer to PROPSHEETPAGE data structure.
+// dwData2 = not used, must be 0
+// dwData3 = not used, must be 0
+//
+//
+// PSUIPAGEINSERT_HPROPSHEETPAGE
+//
+// dwData1 = Is the HPROPSHEETPAGE handle that created
+// by a call to CreatePropertySheetPage().
+// dwData2 = not used, must be 0
+// dwData3 = not used, must be 0
+//
+//
+// PSUIPAGEINSERT_DLL
+//
+// dwData1 = Pointer to a null terminated dynamic link
+// library filename.
+// dwData2 = Pointer to a null terminated function
+// name (PFNPROPSHEETUI) in the dynamin link
+// library.
+// dwData3 = 32-bit parameter passed to pfnPropSheetUI
+// (PFNPROPSHEETUI) function from dwData2
+//
+//
+// Return Value:
+//
+// The return value is the handle of newly added common property sheet
+// page(s), if return value is NULL then function failed.
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_SET_PSUIPAGE_TITLE
+//
+// This function let the caller set a new title for a particular common
+// UI page title (on the property sheet page tab)
+//
+// Parameters:
+//
+// lParam1 - the handle of common property sheet pages that title to be
+// set. This handle must be the handle returned from following
+//
+// CPSFUNC_ADD_PROPSHEETPAGE
+// CPSFUNC_ADD_HPROPSHEETPAGE
+// CPSFUNC_INSERT_PSUIPAGE with type of
+// PSUIPAGEINSERT_PROPSHEETPAGE or
+// PSUIPAGEINSERT_HPROPSHEETPAGE
+//
+// lParam2 - Pointer to a null terminated string for the new title
+//
+//
+// Return Value:
+//
+// The return value is greater than zero if function sucessful, and less
+// or equal to zero if the function failed.
+//
+// This function will returned 0 if the property sheet pages is not
+// currently displayed.
+//
+//
+// -------------------------------------------------------------------------
+// Function = CPSFUNC_SET_PSUIPAGE_ICON
+//
+// This function let the caller set a new icon for a particular common
+// UI page icon (on the property sheet page tab)
+//
+// Parameters:
+//
+// lParam1 - the handle of common property sheet pages that icon to be
+// set. This handle must be the handle returned from following
+//
+// CPSFUNC_ADD_PROPSHEETPAGE
+// CPSFUNC_ADD_HPROPSHEETPAGE
+// CPSFUNC_INSERT_PSUIPAGE with type of
+// PSUIPAGEINSERT_PROPSHEETPAGE or
+// PSUIPAGEINSERT_HPROPSHEETPAGE
+//
+// lParam2 - Handle to Icon, this icon is best as 16x16 icon otherwise it
+// will be stretch to 16x16 (pixel).
+//
+//
+// Return Value:
+//
+// The return value is greater than zero if function sucessful, and less
+// or equal to zero if the function failed.
+//
+// This function will returned 0 if the property sheet pages is not
+// currently displayed.
+//
+// After this function is successful set the icon, the caller can destroy
+// the hIcon using DestroyIcon() if the hIcon is created by CreateIcon().
+// If the hIcon (lParam2) passed is using LoadIcon() then it does not need
+// to destroy the icon.
+//
+//
+// -------------------------------------------------------------------------
+//
+
+
+
+#define PROPSHEETUI_REASON_INIT 0
+#define PROPSHEETUI_REASON_GET_INFO_HEADER 1
+#define PROPSHEETUI_REASON_DESTROY 2
+#define PROPSHEETUI_REASON_SET_RESULT 3
+#define PROPSHEETUI_REASON_GET_ICON 4
+#define MAX_PROPSHEETUI_REASON_INDEX 4
+
+#define PROPSHEETUI_INFO_VERSION 0x0100
+
+#define PSUIINFO_UNICODE 0x0001
+
+typedef struct _PROPSHEETUI_INFO {
+ WORD cbSize;
+ WORD Version;
+ WORD Flags;
+ WORD Reason;
+ HANDLE hComPropSheet;
+ PFNCOMPROPSHEET pfnComPropSheet;
+ LPARAM lParamInit;
+ DWORD UserData;
+ DWORD Result;
+ } PROPSHEETUI_INFO, *PPROPSHEETUI_INFO;
+
+
+//
+// For the PROPSHEETUI_REASON_GET_ICON call which lParam is a pointer to
+// PROPSHEETUI_GETICON_INFO
+//
+
+typedef struct _PROPSHEETUI_GETICON_INFO {
+ WORD cbSize;
+ WORD Flags;
+ WORD cxIcon;
+ WORD cyIcon;
+ HICON hIcon;
+ } PROPSHEETUI_GETICON_INFO, *PPROPSHEETUI_GETICON_INFO;
+
+
+typedef LONG (FAR *PFNPROPSHEETUI)(PPROPSHEETUI_INFO pPSUIInfo,
+ LPARAM lParam);
+
+
+//
+// PFNPROPSHEETUI
+//
+// This function is user defined function which will be called by the common
+// UI when a caller wish to include the executable property sheets.
+//
+// pPSUIInfo - Pointer to PROPSHEETUI_INFO below for description of
+// PROPSHEETUI_INFO.
+//
+// If this pointer is NULL then this function is not called from
+// common UI, and lParam should be used to determined the
+// action and outcome of this funciton.
+//
+// lParam - A LPARAM intented for this funciton depends on the reason.
+// If pPSUIInfo is NULL then this function is not called from
+// common UI, the lParam is the parameter which agreed with
+// the caller.
+//
+// if pPSUIInfo is not NULL then this function assume the call
+// is from the common UI. lParam has following meanion depends
+// on the reason field.
+//
+// PROPSHEETUI_REASON_INIT
+//
+// The lParam is either passed from CPSFUNC_ADD_PFNPROPSHEETUI
+// callback function's second parameter (lParam2) or it is
+// from CommonPropertySheetUI()'s lParam (seccond parameter)
+// without any modification.
+//
+// The lParam MUST NOT be a variable or a pointer to memory
+// block which resides on the caller function's stack, since
+// after this function exit, the lParam will become invalid
+// and can cause fatal system error.
+//
+// The lParam parameter is copied to the lParamInit field in
+// PROPSHEETUI_INFO data structure. The lParamInit field
+// will be passed to all subsequent pfnPropSheetUI() calls
+// without any modification.
+//
+//
+// PROPSHEETUI_REASON_GET_INFO_HEADER:
+//
+// lParam is a pointer to the PROPSHEETUI_INFO_HEADER data
+// structure. this function must correctly fill this structure
+// fields before it returned.
+//
+//
+// PROPSHEETUI_REASON_DESTROY
+//
+// lParam is zero to indicate the destroy is cause either by a
+// caller calling CPSFUNC_DELETE_HCOMPROPSHEET or failed
+// in caller's CPSFUNC_ADD_xxxx.
+//
+// lParam is non zero to indicate the destroy is cause by
+// exiting from the property sheet user interface.
+//
+//
+// PROPSHEETUI_REASON_SET_RESULT
+//
+// lParam is a pointer to SETRESULT_INFO data structure.
+// Fields in SETRESULT_INFO data structure is set to following
+//
+// hSetResult: Handle to the common UI property sheet
+// pages which added by the CPSFUNC_ADD_xxx
+// callback function indices.
+//
+// Result: The result from the hSetResult to be set.
+// When return greater than zero then Result
+// in this field is set to its parent.
+//
+//
+// PROPSHEETUI_REASON_GET_ICON
+//
+// lParam is a pointer to PROPSHEETUI_GETICON_INFO data
+// structure. Fields in PROPSHEETUI_GETICON_INFO data
+// structure are set to following
+//
+// cxIcon = cx Icon size in pixel
+// cyIcon = cy Icon size in pixel
+// hIcon = Initial to NULL, and this function must put
+// the created icon handle in this field before
+// returned.
+//
+
+
+//
+// PROPSHEETUI_INFO
+//
+// This structure is used when common UI calling the caller passed function
+// entry point PFNPROPSHEETUI, the pfnPropSheetUI() return a LONG to
+// indicate result of this function.
+//
+// When the pfnPropSheetUI() returned, it must also put the required result
+// in the Result field, each PROPSHEETUI_REASON_xxx has different required
+// result as describe below.
+//
+//
+//
+// cbSize - sizeof this structure (PROPSHEETUI_INFO)
+//
+// Version - the PROPSHEETUI_INFO data structure version. Current
+// version is set to PROPSHEETUI_INFO_VERSION
+//
+// Flags - One or more following is may be defined
+//
+// PSUIINFO_UNICODE
+//
+// The caller's executable was original compiled was
+// intented using unicode.
+//
+//
+// Reason - Following reasons are defined.
+//
+// PROPSHEETUI_REASON_INIT
+//
+// When first time the pfnPropSheetUI() called, this
+// reason is used to have the function initialize
+// itself and use the pfnComPropSheet() function
+// pointer provided to add new pages to the
+// hComPropSheet handle passed. The UserData in this
+// data structure is initially set equal to zero (0).
+//
+// * Return > 0 to indicate sucesful and <= 0 to
+// indicate error.
+//
+// *NOTE*
+//
+// The lParam MUST NOT be a variable or a pointer to
+// memory block which resides on the caller function's
+// stack, since after this function exit, the lParam
+// will become invalid and can cause fatal system
+// error.
+//
+// If this function reason returned failed ( <= 0),
+// this function (pfnPropSheetUI) will received a
+// PROPSHEETUI_REASON_DESTROY function reason right
+// after this function reason returned.
+//
+//
+// PROPSHEETUI_REASON_GET_INFO_HEADER
+//
+// It is called after the PROPSHEETUI_REASON_INIT is
+// successful returned. This reason is used to asked
+// the function fill in the PROPSHEETUI_INFO_HEADER
+// for pop-up the property sheet dialog boxes.
+//
+// lParam in this reason is a pointer to the
+// PROPSHEETUI_INFO_HEADER data structure, following
+// fields are requrested to be filled in.
+//
+// Flags - PSUIHDRF_xxx flags
+// pTitle - The property sheet title
+// hWndParent - handle to the parent of property
+// sheet pages.
+// hInst - Instance data handle for this
+// function.
+// hIcon
+// IconID - Icon used on the title bar.
+//
+// * Return > 0 to indicate sucesful and pop-up the
+// property sheet dialog boxes or returned <= 0 to
+// indicate error (not property sheet UI appeared)
+//
+//
+// PROPSHEETUI_REASON_DESTROY
+//
+// When the property sheet ready to dismissed or the
+// caller is delete the common UI pages added by the
+// pfnPropSheetUI(), the common UI will call this
+// entry point to have it de-initialized itself and
+// free up all the memory used for this function
+// instance. The UserData field passed is the
+// 'UserData' field which returned from previous
+// PROPSHEETUI_REASON_xxxx.
+//
+// When this function called, all hComPropSheet's
+// children are desotroyed and children's common UI
+// handles are not longer valid.
+//
+// * Return > 0 to indicate sucesful and <= 0 to
+// indicate error.
+//
+//
+// PROPSHEETUI_REASON_SET_RESULT
+//
+// The reason is used when an added handle from
+// CPSFUNC_ADD_xxxx whant to return the result to
+// this pfnPropSheetUI() caller.
+//
+// The lParam in second parameter is a pointer to a
+// SETRESULT_INFO data structure.
+//
+// hSetResult: specified the common UI property
+// sheet page handle which added by
+// this function using
+// CPSFUNC_ADD_xxx indicies.
+//
+// Result: Specified the Result to be set to
+// this pfnPropSheetUI() form the
+// hSetResult property sheet page
+// handle. If return value is greater
+// than zero then the value in this
+// Result field will be set to its
+// parent if one exist, at this case
+// this function can alter the Result
+// field value for its parent.
+//
+// * Returned greater than zero to continue send to
+// its parent, else it stop sending the Result filed
+// value to its parent.
+//
+//
+// PROPSHEETUI_REASON_GET_ICON
+//
+// The reason is used to retrived the Icon which
+// represent this pfnPropSheetUI().
+//
+// lParam is a pointer to PROPSHEETUI_GETICON_INFO '
+// data structure. Fields in PROPSHEETUI_GETICON_INFO
+// data structure are set to following
+//
+// cxIcon = cx Icon size in pixel
+// cyIcon = cy Icon size in pixel
+// hIcon = Initial to NULL, and this function
+// must put the created icon handle in
+// this field before return.
+//
+//
+// * Return > 0 to indicate sucesful (hIcon is the
+// requested icon handle). Return = 0 to indicate
+// no icon available, or return < 0 to indicate an
+// error.
+//
+// *NOTE*
+//
+// * For all PROPSHEETUI_REASON_xxx, the function can set new
+// user defined DWORD data in the PROPSHEETUI_INFO data
+// structure's UserData field.
+//
+// * For all PROPSHEETUI_REASON_xxx, the function can set new
+// pfnPropSheetUI() DWORD result in PROPSHEETUI_INFO data
+// structure's Result field.
+//
+//
+// hComPropSheet - Handle to the COMPROPSHEETPAGE which this function should
+// used as hComPropSheet parameter when calling
+// pfnComPropSheet() to add or delete common UI property
+// sheet pages. The hComPropSheet is the instance handle to
+// pfnPropSheetUI() function.
+//
+// pfnComPropSheet - Pointer to the common UI callback function which for the
+// pfnPropSheetUI() to add, delete, set user data, for a
+// completed set of callback, see CPSFUNC_xxx descriptions
+// above.
+//
+// lParamInit - The lParam originally passed duning the the first call
+// reason PROPSHEETUI_REASON_INIT. The lParamInit will be
+// passed to each PROPSHEETUI_REASON_xxx calls.
+//
+// UserData - the UserData field is an IN and OUT parameter for each
+// of the Reason,
+//
+// PROPSHEETUI_REASON_INIT
+//
+// IN: Initial set to zero (0).
+//
+// OUT: Specified new callee's own user data which
+// will be passed back to other reason calls.
+//
+//
+// PROPSHEETUI_REASON_DESTROY
+// PROPSHEETUI_REASON_SET_RESULT
+// PROPSHEETUI_REASON_GET_INFO_HEADER
+//
+// IN: The UserData specified at time when returned
+// from the previous PROPSHEETUI_REASON_xxx
+//
+// OUT: Specified new callee's own user data which
+// will be passed back to other reason calls.
+//
+//
+// Result - The Result field is an IN and OUT parameter for each of
+// the reason.
+//
+// PROPSHEETUI_REASON_INIT
+//
+// IN: Set to zero (0).
+//
+// OUT: Set to default result of this PropSheetUI()
+// function.
+//
+//
+// PROPSHEETUI_REASON_DESTROY
+// PROPSHEETUI_REASON_GET_INFO_HEADER
+// PROPSHEETUI_REASON_SET_RESULT
+//
+// IN: The current 'Result' returned from previous
+// PROPSHEETUI_REASON_xxx function.
+//
+// OUT: Set the new result of this PropSheetUI()
+// function.
+//
+//
+
+
+#define PSUIHDRF_OBSOLETE 0x0001
+#define PSUIHDRF_NOAPPLYNOW 0x0002
+#define PSUIHDRF_PROPTITLE 0x0004
+#define PSUIHDRF_USEHICON 0x0008
+#define PSUIHDRF_DEFTITLE 0x0010
+
+
+typedef struct _PROPSHEETUI_INFO_HEADER {
+ WORD cbSize;
+ WORD Flags;
+ LPTSTR pTitle;
+ HWND hWndParent;
+ HINSTANCE hInst;
+ union {
+ HICON hIcon;
+ DWORD IconID;
+ } DUMMYUNIONNAME;
+ } PROPSHEETUI_INFO_HEADER, *PPROPSHEETUI_INFO_HEADER;
+
+//
+// PROPSHEETUI_INFO_HEADER
+//
+// This data structure is used when common UI ready to pop-up the property
+// sheet page dialog boxes and it asked caller to provide more information.
+//
+// Common property sheet UI passed this data structure as lParam when it call
+// provided pfnPropSheetUI() with PROPSHEETUI_REASON_GET_INFO_HEADER reason.
+//
+//
+// cbSize - size of this structure
+//
+// Flags - PSUIHDRF_xxxx flags
+//
+// PSUIHDRF_OBSOLETE
+//
+// Not used, must not set this bit
+//
+//
+// PSUIHDRF_NOAPPLYNOW
+//
+// Remove 'Apply Now' button.
+//
+//
+// PSUIHDRF_PROPTITLE
+//
+// Automatically include 'Properties' in the title bar
+//
+//
+// PSUIHDRF_USEHICON
+//
+// If this bit is specified then hIcon union field is
+// a valid handle to the icon otherwise the IconID is
+// the either caller's resource ID or common UI standard
+// icon ID.
+//
+// PSUIHDRF_DEFTITLE
+//
+// Automatically include 'Default' in the title bar, the
+// 'Default' always added right after pTitle and before
+// 'Properties' if PSUIHDRF_PROPTITLE flag is set.
+//
+// pTitle - Pointer to the NULL terminated caption name for the
+// property sheets.
+//
+// ** See LPTSTR typedef description above
+//
+// hWndParent - The handle of the window which will be parent of the common
+// UI property sheets, if NULL then current active window for
+// the calling thread is used.
+//
+// hInst - the caller's handle to its instance. Commom UI use this
+// handle to load caller's icon and other resources.
+//
+// hIcon
+// IconID - Specified the icon which put on the title bar, it either a
+// handle to the icon or a icon resource ID depends on the
+// PSUIHDRF_USEHICON flag.
+//
+
+
+
+//
+// LONG
+// CommonPropertySheetUI(
+// HWND hWndOwner,
+// PFNPROPSHEETUI pfnPropSheetUI,
+// LPARAM lParam,
+// LPDWORD pResult
+// );
+//
+//
+// The CommonPropSheetUI is the main entry point for the common property sheet
+// user interface. The original caller that wish to using common UI to pop-up
+// property sheet will call this function and passed its own PFNPROPSHEETUI
+// function address and a long parameter.
+//
+// If pfnPropSheetUI function return a LONG number greater than zero (0) then
+// common UI will pop-up the property sheet page dialog boxes, when Property
+// sheet pages is finished. (either hit Ok or Cancel) it will return the
+// result of CPSUI_xxxx back to the caller.
+//
+// If pfnPropSheetUI function return a LONG number equal or less than zero (0)
+// then it will return the CPSUI_CANCEL back to caller without pop-up the
+// property sheet page dialog boxes.
+//
+//
+// Parameters:
+//
+// hWndOwner - Window handle for the owner of this proerty sheet
+// pages dialog boxes.
+//
+// pfnPropSheetUI - a PFNPROPSHEETUI function pointer which is used by
+// the caller to add its property sheet pages.
+//
+// lParam - a long parameter will be passed to the pfnPropSheetUI
+// funciton. The common UI called the pfnPropSheetUI as
+//
+// PROPSHEETUI_INFO PSUIInfo;
+//
+// pfnPropSheetUI(&PSUIInfo, lParam);
+//
+// The caller must use pfnComPropSheet() to add/delete
+// pages. When it is done adding pages, it retuned
+// greater than zero to indicate successful, and return
+// less or equal to zero to indicate failure.
+//
+// pResult - a pointer to DWORD which received the final result
+// of pfnPropSheetUI() funciton, this result is a copy
+// from Result field of PROPSHEETUI_INFO data structure
+// which passed to the pfnPropSheetUI() as the first
+// parameter. The pResult only will be set if the
+// returned value from CommonPropertySheetUI() is not
+// ERR_CPSUI_xxx.
+//
+// if pResult is NULL then common UI will not return
+// pfnPropSheetUI()'s result back.
+//
+//
+// Return Value:
+//
+// LONG - < 0 - property page does not displayed and
+// ERR_CPSUI_xxx is the error code
+// CPSUI_OK - property page displayed.
+// CPSUI_RESTARTWINDOWS - property page displayed and need to
+// restart window to take effect
+// CPSUI_REBOOTSYSTEM - property page dispalyed and need
+// to reboot system to take effect
+//
+//
+
+
+LONG
+APIENTRY
+CommonPropertySheetUIA(
+ HWND hWndOwner,
+ PFNPROPSHEETUI pfnPropSheetUI,
+ LPARAM lParam,
+ LPDWORD pResult
+ );
+
+LONG
+APIENTRY
+CommonPropertySheetUIW(
+ HWND hWndOwner,
+ PFNPROPSHEETUI pfnPropSheetUI,
+ LPARAM lParam,
+ LPDWORD pResult
+ );
+
+
+#ifdef UNICODE
+#define CommonPropertySheetUI CommonPropertySheetUIW
+#else
+#define CommonPropertySheetUI CommonPropertySheetUIA
+#endif
+
+
+
+//
+// GetCPSUIUserData() and SetCPSUIUserData() is used for the pages added
+// by the CPSFUNC_ADD_PCOMPROPSHEETUI. The caller add this function and has
+// sub class dialog procedure should not set DWL_USERDATA but calling these
+// function instead, otherwise the system can failed.
+//
+
+DWORD
+APIENTRY
+GetCPSUIUserData(
+ HWND hDlg
+ );
+
+BOOL
+APIENTRY
+SetCPSUIUserData(
+ HWND hDlg,
+ DWORD CPSUIUserData
+ );
+
+
+#define CPSUI_CANCEL 0
+#define CPSUI_OK 1
+#define CPSUI_RESTARTWINDOWS 2
+#define CPSUI_REBOOTSYSTEM 3
+
+#define ERR_CPSUI_GETLASTERROR -1
+#define ERR_CPSUI_ALLOCMEM_FAILED -2
+#define ERR_CPSUI_INVALID_PDATA -3
+#define ERR_CPSUI_INVALID_LPARAM -4
+#define ERR_CPSUI_NULL_HINST -5
+#define ERR_CPSUI_NULL_CALLERNAME -6
+#define ERR_CPSUI_NULL_OPTITEMNAME -7
+#define ERR_CPSUI_NO_PROPSHEETPAGE -8
+#define ERR_CPSUI_TOO_MANY_PROPSHEETPAGES -9
+#define ERR_CPSUI_CREATEPROPPAGE_FAILED -10
+#define ERR_CPSUI_MORE_THAN_ONE_TVPAGE -11
+#define ERR_CPSUI_MORE_THAN_ONE_STDPAGE -12
+#define ERR_CPSUI_INVALID_PDLGPAGE -13
+#define ERR_CPSUI_INVALID_DLGPAGE_CBSIZE -14
+#define ERR_CPSUI_TOO_MANY_DLGPAGES -15
+#define ERR_CPSUI_INVALID_DLGPAGEIDX -16
+#define ERR_CPSUI_SUBITEM_DIFF_DLGPAGEIDX -17
+#define ERR_CPSUI_NULL_POPTITEM -18
+#define ERR_CPSUI_INVALID_OPTITEM_CBSIZE -19
+#define ERR_CPSUI_INVALID_OPTTYPE_CBSIZE -20
+#define ERR_CPSUI_INVALID_OPTTYPE_COUNT -21
+#define ERR_CPSUI_NULL_POPTPARAM -22
+#define ERR_CPSUI_INVALID_OPTPARAM_CBSIZE -23
+#define ERR_CPSUI_INVALID_EDITBOX_PSEL -24
+#define ERR_CPSUI_INVALID_EDITBOX_BUF_SIZE -25
+#define ERR_CPSUI_INVALID_ECB_CBSIZE -26
+#define ERR_CPSUI_NULL_ECB_PTITLE -27
+#define ERR_CPSUI_NULL_ECB_PCHECKEDNAME -28
+#define ERR_CPSUI_INVALID_DMPUBID -29
+#define ERR_CPSUI_INVALID_DMPUB_TVOT -30
+#define ERR_CPSUI_CREATE_TRACKBAR_FAILED -31
+#define ERR_CPSUI_CREATE_UDARROW_FAILED -32
+#define ERR_CPSUI_CREATE_IMAGELIST_FAILED -33
+#define ERR_CPSUI_INVALID_TVOT_TYPE -34
+#define ERR_CPSUI_INVALID_LBCB_TYPE -35
+#define ERR_CPSUI_SUBITEM_DIFF_OPTIF_HIDE -36
+#define ERR_CPSUI_INVALID_PUSHBUTTON_TYPE -38
+#define ERR_CPSUI_INVALID_EXTPUSH_CBSIZE -39
+#define ERR_CPSUI_NULL_EXTPUSH_DLGPROC -40
+#define ERR_CPSUI_NO_EXTPUSH_DLGTEMPLATEID -41
+#define ERR_CPSUI_NULL_EXTPUSH_CALLBACK -42
+#define ERR_CPSUI_DMCOPIES_USE_EXTPUSH -43
+#define ERR_CPSUI_ZERO_OPTITEM -44
+
+
+#define ERR_CPSUI_FUNCTION_NOT_IMPLEMENTED -9999
+#define ERR_CPSUI_INTERNAL_ERROR -10000
+
+#endif // (!defined(RC_INVOKED))
+
+
+
+//
+//****************************************************************************
+//* *
+//* Common Property Sheet UI resource ID for the ICONs and STRINGs *
+//* *
+//* The Resource ID from 64000 to 65535 are reserved for common UI and must *
+//* not used as caller resource ID else the string, icon loading will not be *
+//* correct. *
+//* *
+//****************************************************************************
+//
+
+
+//
+// Common UI standard 32x32, 16x16 color and monochrome Icon IDs
+//
+
+#define IDI_CPSUI_ICONID_FIRST 64000
+
+#define IDI_CPSUI_EMPTY 64000
+#define IDI_CPSUI_SEL_NONE 64001
+#define IDI_CPSUI_WARNING 64002
+#define IDI_CPSUI_NO 64003
+#define IDI_CPSUI_YES 64004
+#define IDI_CPSUI_FALSE 64005
+#define IDI_CPSUI_TRUE 64006
+#define IDI_CPSUI_OFF 64007
+#define IDI_CPSUI_ON 64008
+#define IDI_CPSUI_PAPER_OUTPUT 64009
+#define IDI_CPSUI_ENVELOPE 64010
+#define IDI_CPSUI_MEM 64011
+#define IDI_CPSUI_FONTCARTHDR 64012
+#define IDI_CPSUI_FONTCART 64013
+#define IDI_CPSUI_STAPLER_ON 64014
+#define IDI_CPSUI_STAPLER_OFF 64015
+#define IDI_CPSUI_HT_HOST 64016
+#define IDI_CPSUI_HT_DEVICE 64017
+#define IDI_CPSUI_TT_PRINTASGRAPHIC 64018
+#define IDI_CPSUI_TT_DOWNLOADSOFT 64019
+#define IDI_CPSUI_TT_DOWNLOADVECT 64020
+#define IDI_CPSUI_TT_SUBDEV 64021
+#define IDI_CPSUI_PORTRAIT 64022
+#define IDI_CPSUI_LANDSCAPE 64023
+#define IDI_CPSUI_ROT_LAND 64024
+#define IDI_CPSUI_AUTOSEL 64025
+#define IDI_CPSUI_PAPER_TRAY 64026
+#define IDI_CPSUI_PAPER_TRAY2 64027
+#define IDI_CPSUI_PAPER_TRAY3 64028
+#define IDI_CPSUI_TRANSPARENT 64029
+#define IDI_CPSUI_COLLATE 64030
+#define IDI_CPSUI_DUPLEX_NONE 64031
+#define IDI_CPSUI_DUPLEX_HORZ 64032
+#define IDI_CPSUI_DUPLEX_VERT 64033
+#define IDI_CPSUI_RES_DRAFT 64034
+#define IDI_CPSUI_RES_LOW 64035
+#define IDI_CPSUI_RES_MEDIUM 64036
+#define IDI_CPSUI_RES_HIGH 64037
+#define IDI_CPSUI_RES_PRESENTATION 64038
+#define IDI_CPSUI_MONO 64039
+#define IDI_CPSUI_COLOR 64040
+#define IDI_CPSUI_DITHER_NONE 64041
+#define IDI_CPSUI_DITHER_COARSE 64042
+#define IDI_CPSUI_DITHER_FINE 64043
+#define IDI_CPSUI_DITHER_LINEART 64044
+#define IDI_CPSUI_SCALING 64045
+#define IDI_CPSUI_COPY 64046
+#define IDI_CPSUI_HTCLRADJ 64047
+#define IDI_CPSUI_HALFTONE_SETUP 64048
+#define IDI_CPSUI_WATERMARK 64049
+#define IDI_CPSUI_ERROR 64050
+#define IDI_CPSUI_ICM_OPTION 64051
+#define IDI_CPSUI_ICM_METHOD 64052
+#define IDI_CPSUI_ICM_INTENT 64053
+#define IDI_CPSUI_STD_FORM 64054
+#define IDI_CPSUI_OUTBIN 64055
+#define IDI_CPSUI_OUTPUT 64056
+#define IDI_CPSUI_GRAPHIC 64057
+#define IDI_CPSUI_ADVANCE 64058
+#define IDI_CPSUI_DOCUMENT 64059
+#define IDI_CPSUI_DEVICE 64060
+#define IDI_CPSUI_DEVICE2 64061
+#define IDI_CPSUI_PRINTER 64062
+#define IDI_CPSUI_PRINTER2 64063
+#define IDI_CPSUI_PRINTER3 64064
+#define IDI_CPSUI_PRINTER4 64065
+#define IDI_CPSUI_OPTION 64066
+#define IDI_CPSUI_OPTION2 64067
+#define IDI_CPSUI_STOP 64068
+#define IDI_CPSUI_NOTINSTALLED 64069
+#define IDI_CPSUI_WARNING_OVERLAY 64070
+#define IDI_CPSUI_STOP_WARNING_OVERLAY 64071
+#define IDI_CPSUI_GENERIC_OPTION 64072
+#define IDI_CPSUI_GENERIC_ITEM 64073
+#define IDI_CPSUI_RUN_DIALOG 64074
+#define IDI_CPSUI_QUESTION 64075
+#define IDI_CPSUI_FORMTRAYASSIGN 64076
+#define IDI_CPSUI_PRINTER_FOLDER 64077
+#define IDI_CPSUI_INSTALLABLE_OPTION 64078
+#define IDI_CPSUI_PRINTER_FEATURE 64079
+#define IDI_CPSUI_DEVICE_FEATURE 64080
+#define IDI_CPSUI_FONTSUB 64081
+#define IDI_CPSUI_POSTSCRIPT 64082
+#define IDI_CPSUI_TELEPHONE 64083
+#define IDI_CPSUI_DUPLEX_NONE_L 64084
+#define IDI_CPSUI_DUPLEX_HORZ_L 64085
+#define IDI_CPSUI_DUPLEX_VERT_L 64086
+#define IDI_CPSUI_LF_PEN_PLOTTER 64087
+#define IDI_CPSUI_SF_PEN_PLOTTER 64088
+#define IDI_CPSUI_LF_RASTER_PLOTTER 64089
+#define IDI_CPSUI_SF_RASTER_PLOTTER 64090
+#define IDI_CPSUI_ROLL_PAPER 64091
+#define IDI_CPSUI_PEN_CARROUSEL 64092
+#define IDI_CPSUI_PLOTTER_PEN 64093
+#define IDI_CPSUI_MANUAL_FEED 64094
+#define IDI_CPSUI_FAX 64095
+#define IDI_CPSUI_PAGE_PROTECT 64096
+#define IDI_CPSUI_ENVELOPE_FEED 64097
+#define IDI_CPSUI_FONTCART_SLOT 64098
+
+
+#define IDI_CPSUI_ICONID_LAST 64098
+
+//
+// Common UI standard String IDs
+//
+
+
+#define IDS_CPSUI_STRID_FIRST 64700
+
+#define IDS_CPSUI_SETUP 64700
+#define IDS_CPSUI_MORE 64701
+#define IDS_CPSUI_CHANGE 64702
+#define IDS_CPSUI_OPTION 64703
+#define IDS_CPSUI_OF 64704
+#define IDS_CPSUI_RANGE_FROM 64705
+#define IDS_CPSUI_TO 64706
+#define IDS_CPSUI_COLON_SEP 64707
+#define IDS_CPSUI_LEFT_ANGLE 64708
+#define IDS_CPSUI_RIGHT_ANGLE 64709
+#define IDS_CPSUI_SLASH_SEP 64710
+#define IDS_CPSUI_PERCENT 64711
+#define IDS_CPSUI_LBCB_NOSEL 64712
+#define IDS_CPSUI_PROPERTIES 64713
+#define IDS_CPSUI_DEFAULTDOCUMENT 64714
+#define IDS_CPSUI_DOCUMENT 64715
+#define IDS_CPSUI_ADVANCEDOCUMENT 64716
+#define IDS_CPSUI_PRINTER 64717
+#define IDS_CPSUI_AUTOSELECT 64718
+#define IDS_CPSUI_PAPER_OUTPUT 64719
+#define IDS_CPSUI_GRAPHIC 64720
+#define IDS_CPSUI_OPTIONS 64721
+#define IDS_CPSUI_ADVANCED 64722
+#define IDS_CPSUI_STDDOCPROPTAB 64723
+#define IDS_CPSUI_STDDOCPROPTVTAB 64724
+#define IDS_CPSUI_DEVICEOPTIONS 64725
+#define IDS_CPSUI_FALSE 64726
+#define IDS_CPSUI_TRUE 64727
+#define IDS_CPSUI_NO 64728
+#define IDS_CPSUI_YES 64729
+#define IDS_CPSUI_OFF 64730
+#define IDS_CPSUI_ON 64731
+#define IDS_CPSUI_DEFAULT 64732
+#define IDS_CPSUI_ERROR 64733
+#define IDS_CPSUI_NONE 64734
+#define IDS_CPSUI_NOT 64735
+#define IDS_CPSUI_EXIST 64736
+#define IDS_CPSUI_NOTINSTALLED 64737
+#define IDS_CPSUI_ORIENTATION 64738
+#define IDS_CPSUI_SCALING 64739
+#define IDS_CPSUI_NUM_OF_COPIES 64740
+#define IDS_CPSUI_SOURCE 64741
+#define IDS_CPSUI_PRINTQUALITY 64742
+#define IDS_CPSUI_RESOLUTION 64743
+#define IDS_CPSUI_COLOR_APPERANCE 64744
+#define IDS_CPSUI_DUPLEX 64745
+#define IDS_CPSUI_TTOPTION 64746
+#define IDS_CPSUI_FORMNAME 64747
+#define IDS_CPSUI_ICM 64748
+#define IDS_CPSUI_ICMMETHOD 64749
+#define IDS_CPSUI_ICMINTENT 64750
+#define IDS_CPSUI_MEDIA 64751
+#define IDS_CPSUI_DITHERING 64752
+#define IDS_CPSUI_PORTRAIT 64753
+#define IDS_CPSUI_LANDSCAPE 64754
+#define IDS_CPSUI_ROT_LAND 64755
+#define IDS_CPSUI_COLLATE 64756
+#define IDS_CPSUI_COLLATED 64757
+#define IDS_CPSUI_PRINTFLDSETTING 64758
+#define IDS_CPSUI_DRAFT 64759
+#define IDS_CPSUI_LOW 64760
+#define IDS_CPSUI_MEDIUM 64761
+#define IDS_CPSUI_HIGH 64762
+#define IDS_CPSUI_PRESENTATION 64763
+#define IDS_CPSUI_COLOR 64764
+#define IDS_CPSUI_GRAYSCALE 64765
+#define IDS_CPSUI_MONOCHROME 64766
+#define IDS_CPSUI_SIMPLEX 64767
+#define IDS_CPSUI_HORIZONTAL 64768
+#define IDS_CPSUI_VERTICAL 64769
+#define IDS_CPSUI_LONG_SIDE 64770
+#define IDS_CPSUI_SHORT_SIDE 64771
+#define IDS_CPSUI_TT_PRINTASGRAPHIC 64772
+#define IDS_CPSUI_TT_DOWNLOADSOFT 64773
+#define IDS_CPSUI_TT_DOWNLOADVECT 64774
+#define IDS_CPSUI_TT_SUBDEV 64775
+#define IDS_CPSUI_ICM_BLACKWHITE 64776
+#define IDS_CPSUI_ICM_NO 64777
+#define IDS_CPSUI_ICM_YES 64778
+#define IDS_CPSUI_ICM_SATURATION 64779
+#define IDS_CPSUI_ICM_CONTRAST 64780
+#define IDS_CPSUI_ICM_COLORMETRIC 64781
+#define IDS_CPSUI_STANDARD 64782
+#define IDS_CPSUI_GLOSSY 64783
+#define IDS_CPSUI_TRANSPARENCY 64784
+#define IDS_CPSUI_REGULAR 64785
+#define IDS_CPSUI_BOND 64786
+#define IDS_CPSUI_COARSE 64787
+#define IDS_CPSUI_FINE 64788
+#define IDS_CPSUI_LINEART 64789
+#define IDS_CPSUI_ERRDIFFUSE 64790
+#define IDS_CPSUI_HALFTONE 64791
+#define IDS_CPSUI_HTCLRADJ 64792
+#define IDS_CPSUI_USE_HOST_HT 64793
+#define IDS_CPSUI_USE_DEVICE_HT 64794
+#define IDS_CPSUI_USE_PRINTER_HT 64795
+#define IDS_CPSUI_OUTBINASSIGN 64796
+#define IDS_CPSUI_WATERMARK 64797
+#define IDS_CPSUI_FORMTRAYASSIGN 64798
+#define IDS_CPSUI_UPPER_TRAY 64799
+#define IDS_CPSUI_ONLYONE 64800
+#define IDS_CPSUI_LOWER_TRAY 64801
+#define IDS_CPSUI_MIDDLE_TRAY 64802
+#define IDS_CPSUI_MANUAL_TRAY 64803
+#define IDS_CPSUI_ENVELOPE_TRAY 64804
+#define IDS_CPSUI_ENVMANUAL_TRAY 64805
+#define IDS_CPSUI_TRACTOR_TRAY 64806
+#define IDS_CPSUI_SMALLFMT_TRAY 64807
+#define IDS_CPSUI_LARGEFMT_TRAY 64808
+#define IDS_CPSUI_LARGECAP_TRAY 64809
+#define IDS_CPSUI_CASSETTE_TRAY 64810
+#define IDS_CPSUI_DEFAULT_TRAY 64811
+#define IDS_CPSUI_FORMSOURCE 64812
+#define IDS_CPSUI_MANUALFEED 64813
+#define IDS_CPSUI_PRINTERMEM_KB 64814
+#define IDS_CPSUI_PRINTERMEM_MB 64815
+#define IDS_CPSUI_PAGEPROTECT 64816
+#define IDS_CPSUI_HALFTONE_SETUP 64817
+#define IDS_CPSUI_INSTFONTCART 64818
+#define IDS_CPSUI_SLOT1 64819
+#define IDS_CPSUI_SLOT2 64820
+#define IDS_CPSUI_SLOT3 64821
+#define IDS_CPSUI_SLOT4 64822
+#define IDS_CPSUI_LEFT_SLOT 64823
+#define IDS_CPSUI_RIGHT_SLOT 64824
+#define IDS_CPSUI_STAPLER 64825
+#define IDS_CPSUI_STAPLER_ON 64826
+#define IDS_CPSUI_STAPLER_OFF 64827
+#define IDS_CPSUI_STACKER 64828
+#define IDS_CPSUI_MAILBOX 64829
+#define IDS_CPSUI_COPY 64830
+#define IDS_CPSUI_COPIES 64831
+#define IDS_CPSUI_TOTAL 64832
+#define IDS_CPSUI_MAKE 64833
+#define IDS_CPSUI_PRINT 64834
+#define IDS_CPSUI_FAX 64835
+#define IDS_CPSUI_PLOT 64836
+#define IDS_CPSUI_SLOW 64837
+#define IDS_CPSUI_FAST 64838
+#define IDS_CPSUI_ROTATED 64839
+#define IDS_CPSUI_RESET 64840
+#define IDS_CPSUI_ALL 64841
+#define IDS_CPSUI_DEVICE 64842
+#define IDS_CPSUI_SETTINGS 64843
+#define IDS_CPSUI_REVERT 64844
+#define IDS_CPSUI_CHANGES 64845
+#define IDS_CPSUI_CHANGED 64846
+#define IDS_CPSUI_WARNING 64847
+#define IDS_CPSUI_ABOUT 64848
+#define IDS_CPSUI_VERSION 64849
+#define IDS_CPSUI_NO_NAME 64850
+#define IDS_CPSUI_SETTING 64851
+#define IDS_CPSUI_DEVICE_SETTINGS 64852
+
+#define IDS_CPSUI_STRID_LAST 64852
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _COMPSTUI
diff --git a/public/oak/inc/dderror.h b/public/oak/inc/dderror.h
new file mode 100644
index 000000000..f00da00a3
--- /dev/null
+++ b/public/oak/inc/dderror.h
@@ -0,0 +1,39 @@
+/*++ BUILD Version: 0000 Increment this if a change has global effects
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ dderror.h
+
+Abstract:
+
+ This module defines the 32-Bit Windows error codes that are useable by
+ portable kernel drivers.
+
+Revision History:
+
+--*/
+
+#ifndef _DDERROR_
+#define _DDERROR_
+
+/*
+ * This file is a subset of Win32 error codes. Other win32 error codes
+ * are not supported by portable drivers and should not beused.
+ * This #define removes the definitions of all other error codes.
+ */
+
+#define _WINERROR_
+
+#define NO_ERROR 0L
+#define ERROR_INVALID_FUNCTION 1L
+#define ERROR_NOT_ENOUGH_MEMORY 8L
+#define ERROR_DEV_NOT_EXIST 55L
+#define ERROR_INVALID_PARAMETER 87L
+#define ERROR_INSUFFICIENT_BUFFER 122L
+#define ERROR_MORE_DATA 234L
+#define ERROR_IO_PENDING 997L
+
+#endif /* _DDERROR_ */
+
diff --git a/public/oak/inc/ddrawint.h b/public/oak/inc/ddrawint.h
new file mode 100644
index 000000000..a779d51fa
--- /dev/null
+++ b/public/oak/inc/ddrawint.h
@@ -0,0 +1,741 @@
+/*++
+
+Copyright (c) 1995-1996, Microsoft Corporation
+
+Module Name:
+
+ ddrawint.h
+
+Abstract:
+
+ Private entry points, defines and types for Windows NT DirectDraw
+ driver interface. Corresponds to Windows' 'ddrawi.h' file.
+
+--*/
+
+#ifndef __DD_INCLUDED__
+#define __DD_INCLUDED__
+
+#define _NO_COM
+#include "ddraw.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAKE_HRESULT(sev,fac,code) \
+ ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) )
+
+/*
+ * offset into video meory
+ */
+typedef unsigned long FLATPTR;
+
+/*
+ * pre-declare pointers to structs containing data for DDHAL driver fns
+ */
+typedef struct _DD_CREATEPALETTEDATA *PDD_CREATEPALETTEDATA;
+typedef struct _DD_CREATESURFACEDATA *PDD_CREATESURFACEDATA;
+typedef struct _DD_CANCREATESURFACEDATA *PDD_CANCREATESURFACEDATA;
+typedef struct _DD_WAITFORVERTICALBLANKDATA *PDD_WAITFORVERTICALBLANKDATA;
+typedef struct _DD_DESTROYDRIVERDATA *PDD_DESTROYDRIVERDATA;
+typedef struct _DD_SETMODEDATA *PDD_SETMODEDATA;
+typedef struct _DD_DRVSETCOLORKEYDATA *PDD_DRVSETCOLORKEYDATA;
+typedef struct _DD_GETSCANLINEDATA *PDD_GETSCANLINEDATA;
+typedef struct _DD_MAPMEMORYDATA *PDD_MAPMEMORYDATA;
+typedef struct _DD_DESTROYPALETTEDATA *PDD_DESTROYPALETTEDATA;
+typedef struct _DD_SETENTRIESDATA *PDD_SETENTRIESDATA;
+typedef struct _DD_BLTDATA *PDD_BLTDATA;
+typedef struct _DD_LOCKDATA *PDD_LOCKDATA;
+typedef struct _DD_UNLOCKDATA *PDD_UNLOCKDATA;
+typedef struct _DD_UPDATEOVERLAYDATA *PDD_UPDATEOVERLAYDATA;
+typedef struct _DD_SETOVERLAYPOSITIONDATA *PDD_SETOVERLAYPOSITIONDATA;
+typedef struct _DD_SETPALETTEDATA *PDD_SETPALETTEDATA;
+typedef struct _DD_FLIPDATA *PDD_FLIPDATA;
+typedef struct _DD_DESTROYSURFACEDATA *PDD_DESTROYSURFACEDATA;
+typedef struct _DD_SETCLIPLISTDATA *PDD_SETCLIPLISTDATA;
+typedef struct _DD_ADDATTACHEDSURFACEDATA *PDD_ADDATTACHEDSURFACEDATA;
+typedef struct _DD_SETCOLORKEYDATA *PDD_SETCOLORKEYDATA;
+typedef struct _DD_GETBLTSTATUSDATA *PDD_GETBLTSTATUSDATA;
+typedef struct _DD_GETFLIPSTATUSDATA *PDD_GETFLIPSTATUSDATA;
+
+/*
+ * value in the fpVidMem; indicates dwBlockSize is valid (surface object)
+ */
+#define DDHAL_PLEASEALLOC_BLOCKSIZE 0x00000002l
+#define DDHAL_PLEASEALLOC_USERMEM 0x00000004l
+
+/*
+ * video memory data structures (passed in DD_HALINFO)
+ */
+typedef struct _VIDEOMEMORY
+{
+ DWORD dwFlags; // flags
+ FLATPTR fpStart; // start of memory chunk
+ union
+ {
+ FLATPTR fpEnd; // end of memory chunk
+ DWORD dwWidth; // width of chunk (rectanglar memory)
+ };
+ DDSCAPS ddsCaps; // what this memory CANNOT be used for
+ DDSCAPS ddsCapsAlt; // what this memory CANNOT be used for if it must
+ DWORD dwHeight; // height of chunk (rectanguler memory)
+} VIDEOMEMORY;
+typedef VIDEOMEMORY *LPVIDEOMEMORY;
+
+/*
+ * flags for vidmem struct
+ */
+#define VIDMEM_ISLINEAR 0x00000001l
+#define VIDMEM_ISRECTANGULAR 0x00000002l
+#define VIDMEM_ISHEAP 0x00000004l
+
+typedef struct _VIDEOMEMORYINFO
+{
+ FLATPTR fpPrimary; // offset to primary surface
+ DWORD dwFlags; // flags
+ DWORD dwDisplayWidth; // current display width
+ DWORD dwDisplayHeight; // current display height
+ LONG lDisplayPitch; // current display pitch
+ DDPIXELFORMAT ddpfDisplay; // pixel format of display
+ DWORD dwOffscreenAlign; // byte alignment for offscreen surfaces
+ DWORD dwOverlayAlign; // byte alignment for overlays
+ DWORD dwTextureAlign; // byte alignment for textures
+ DWORD dwZBufferAlign; // byte alignment for z buffers
+ DWORD dwAlphaAlign; // byte alignment for alpha
+ PVOID pvPrimary; // kernel-mode pointer to primary surface
+} VIDEOMEMORYINFO;
+typedef VIDEOMEMORYINFO *LPVIDEOMEMORYINFO;
+
+/*
+ * These structures contain the entry points in the display driver that
+ * DDRAW will call. Entries that the display driver does not care about
+ * should be NULL. Passed to DDRAW in DD_HALINFO.
+ */
+typedef struct _DD_DIRECTDRAW_GLOBAL *PDD_DIRECTDRAW_GLOBAL;
+typedef struct _DD_SURFACE_GLOBAL *PDD_SURFACE_GLOBAL;
+typedef struct _DD_PALETTE_GLOBAL *PDD_PALETTE_GLOBAL;
+typedef struct _DD_CLIPPER_GLOBAL *PDD_CLIPPER_GLOBAL;
+typedef struct _DD_DIRECTDRAW_LOCAL *PDD_DIRECTDRAW_LOCAL;
+typedef struct _DD_SURFACE_LOCAL *PDD_SURFACE_LOCAL;
+typedef struct _DD_PALETTE_LOCAL *PDD_PALETTE_LOCAL;
+typedef struct _DD_CLIPPER_LOCAL *PDD_CLIPPER_LOCAL;
+
+/*
+ * DIRECTDRAW object callbacks
+ */
+typedef DWORD (APIENTRY *PDD_SETCOLORKEY)(PDD_DRVSETCOLORKEYDATA );
+typedef DWORD (APIENTRY *PDD_CANCREATESURFACE)(PDD_CANCREATESURFACEDATA );
+typedef DWORD (APIENTRY *PDD_WAITFORVERTICALBLANK)(PDD_WAITFORVERTICALBLANKDATA );
+typedef DWORD (APIENTRY *PDD_CREATESURFACE)(PDD_CREATESURFACEDATA);
+typedef DWORD (APIENTRY *PDD_DESTROYDRIVER)(PDD_DESTROYDRIVERDATA);
+typedef DWORD (APIENTRY *PDD_SETMODE)(PDD_SETMODEDATA);
+typedef DWORD (APIENTRY *PDD_CREATEPALETTE)(PDD_CREATEPALETTEDATA);
+typedef DWORD (APIENTRY *PDD_GETSCANLINE)(PDD_GETSCANLINEDATA);
+typedef DWORD (APIENTRY *PDD_MAPMEMORY)(PDD_MAPMEMORYDATA);
+
+typedef struct DD_CALLBACKS
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ PDD_DESTROYDRIVER DestroyDriver;
+ PDD_CREATESURFACE CreateSurface;
+ PDD_SETCOLORKEY SetColorKey;
+ PDD_SETMODE SetMode;
+ PDD_WAITFORVERTICALBLANK WaitForVerticalBlank;
+ PDD_CANCREATESURFACE CanCreateSurface;
+ PDD_CREATEPALETTE CreatePalette;
+ PDD_GETSCANLINE GetScanLine;
+ PDD_MAPMEMORY MapMemory;
+} DD_CALLBACKS;
+
+typedef DD_CALLBACKS *PDD_CALLBACKS;
+
+#define DDHAL_CB32_DESTROYDRIVER 0x00000001l
+#define DDHAL_CB32_CREATESURFACE 0x00000002l
+#define DDHAL_CB32_SETCOLORKEY 0x00000004l
+#define DDHAL_CB32_SETMODE 0x00000008l
+#define DDHAL_CB32_WAITFORVERTICALBLANK 0x00000010l
+#define DDHAL_CB32_CANCREATESURFACE 0x00000020l
+#define DDHAL_CB32_CREATEPALETTE 0x00000040l
+#define DDHAL_CB32_GETSCANLINE 0x00000080l
+#define DDHAL_CB32_MAPMEMORY 0x80000000l
+
+/*
+ * DIRECTDRAWPALETTE object callbacks
+ */
+typedef DWORD (APIENTRY *PDD_PALCB_DESTROYPALETTE)(PDD_DESTROYPALETTEDATA );
+typedef DWORD (APIENTRY *PDD_PALCB_SETENTRIES)(PDD_SETENTRIESDATA );
+
+typedef struct DD_PALETTECALLBACKS
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ PDD_PALCB_DESTROYPALETTE DestroyPalette;
+ PDD_PALCB_SETENTRIES SetEntries;
+} DD_PALETTECALLBACKS;
+
+typedef DD_PALETTECALLBACKS *PDD_PALETTECALLBACKS;
+
+#define DDHAL_PALCB32_DESTROYPALETTE 0x00000001l
+#define DDHAL_PALCB32_SETENTRIES 0x00000002l
+
+/*
+ * DIRECTDRAWSURFACE object callbacks
+ */
+typedef DWORD (APIENTRY *PDD_SURFCB_LOCK)(PDD_LOCKDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_UNLOCK)(PDD_UNLOCKDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_BLT)(PDD_BLTDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_UPDATEOVERLAY)(PDD_UPDATEOVERLAYDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_SETOVERLAYPOSITION)(PDD_SETOVERLAYPOSITIONDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_SETPALETTE)(PDD_SETPALETTEDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_FLIP)(PDD_FLIPDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_DESTROYSURFACE)(PDD_DESTROYSURFACEDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_SETCLIPLIST)(PDD_SETCLIPLISTDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_ADDATTACHEDSURFACE)(PDD_ADDATTACHEDSURFACEDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_SETCOLORKEY)(PDD_SETCOLORKEYDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_GETBLTSTATUS)(PDD_GETBLTSTATUSDATA);
+typedef DWORD (APIENTRY *PDD_SURFCB_GETFLIPSTATUS)(PDD_GETFLIPSTATUSDATA);
+
+
+typedef struct DD_SURFACECALLBACKS
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ PDD_SURFCB_DESTROYSURFACE DestroySurface;
+ PDD_SURFCB_FLIP Flip;
+ PDD_SURFCB_SETCLIPLIST SetClipList;
+ PDD_SURFCB_LOCK Lock;
+ PDD_SURFCB_UNLOCK Unlock;
+ PDD_SURFCB_BLT Blt;
+ PDD_SURFCB_SETCOLORKEY SetColorKey;
+ PDD_SURFCB_ADDATTACHEDSURFACE AddAttachedSurface;
+ PDD_SURFCB_GETBLTSTATUS GetBltStatus;
+ PDD_SURFCB_GETFLIPSTATUS GetFlipStatus;
+ PDD_SURFCB_UPDATEOVERLAY UpdateOverlay;
+ PDD_SURFCB_SETOVERLAYPOSITION SetOverlayPosition;
+ LPVOID reserved4;
+ PDD_SURFCB_SETPALETTE SetPalette;
+} DD_SURFACECALLBACKS;
+typedef DD_SURFACECALLBACKS *PDD_SURFACECALLBACKS;
+
+#define DDHAL_SURFCB32_DESTROYSURFACE 0x00000001l
+#define DDHAL_SURFCB32_FLIP 0x00000002l
+#define DDHAL_SURFCB32_SETCLIPLIST 0x00000004l
+#define DDHAL_SURFCB32_LOCK 0x00000008l
+#define DDHAL_SURFCB32_UNLOCK 0x00000010l
+#define DDHAL_SURFCB32_BLT 0x00000020l
+#define DDHAL_SURFCB32_SETCOLORKEY 0x00000040l
+#define DDHAL_SURFCB32_ADDATTACHEDSURFACE 0x00000080l
+#define DDHAL_SURFCB32_GETBLTSTATUS 0x00000100l
+#define DDHAL_SURFCB32_GETFLIPSTATUS 0x00000200l
+#define DDHAL_SURFCB32_UPDATEOVERLAY 0x00000400l
+#define DDHAL_SURFCB32_SETOVERLAYPOSITION 0x00000800l
+#define DDHAL_SURFCB32_RESERVED4 0x00001000l
+#define DDHAL_SURFCB32_SETPALETTE 0x00002000l
+
+/*
+ * CALLBACK RETURN VALUES
+ *
+ * these are values returned by the driver from the above callback routines
+ */
+/*
+ * indicates that the display driver didn't do anything with the call
+ */
+#define DDHAL_DRIVER_NOTHANDLED 0x00000000l
+
+/*
+ * indicates that the display driver handled the call; HRESULT value is valid
+ */
+#define DDHAL_DRIVER_HANDLED 0x00000001l
+
+/*
+ * indicates that the display driver couldn't handle the call because it
+ * ran out of color key hardware resources
+ */
+#define DDHAL_DRIVER_NOCKEYHW 0x00000002l
+
+/*
+ * DDRAW internal version of DIRECTDRAWPALETTE object; it has data after the vtable
+ */
+typedef struct _DD_PALETTE_GLOBAL
+{
+ DWORD dwReserved1; // reserved for use by display driver
+} DD_PALETTE_GLOBAL;
+
+typedef struct _DD_PALETTE_LOCAL
+{
+ DWORD dwReserved0; // reserved for future expansion
+ DWORD dwReserved1; // reserved for use by display driver
+} DD_PALETTE_LOCAL;
+
+#define DDRAWIPAL_256 0x00000001l // 256 entry palette
+#define DDRAWIPAL_16 0x00000002l // 16 entry palette
+#define DDRAWIPAL_GDI 0x00000004l // palette allocated through GDI
+#define DDRAWIPAL_STORED_8 0x00000008l // palette stored as 8bpp/entry
+#define DDRAWIPAL_STORED_16 0x00000010l // palette stored as 16bpp/entry
+#define DDRAWIPAL_STORED_24 0x00000020l // palette stored as 24bpp/entry
+#define DDRAWIPAL_EXCLUSIVE 0x00000040l // palette being used in exclusive mode
+#define DDRAWIPAL_INHEL 0x00000080l // palette is done in the hel
+#define DDRAWIPAL_DIRTY 0x00000100l // gdi palette out 'o sync
+#define DDRAWIPAL_ALLOW256 0x00000200l // can fully update palette
+#define DDRAWIPAL_4 0x00000400l // 4 entry palette
+#define DDRAWIPAL_2 0x00000800l // 2 entry palette
+#define DDRAWIPAL_STORED_8INDEX 0x00001000l // palatte stored as 8-bit index into dst palette
+
+/*
+ * DDRAW internal version of DIRECTDRAWCLIPPER object; it has data after the vtable
+ */
+typedef struct _DD_CLIPPER_GLOBAL
+{
+ DWORD dwReserved1; // reserved for use by display driver
+} DD_CLIPPER_GLOBAL;
+
+typedef struct _DD_CLIPPER_LOCAL
+{
+ DWORD dwReserved1; // reserved for use by display driver
+} DD_CLIPPER_LOCAL;
+
+/*
+ * DDRAW internal version of DIRECTDRAWSURFACE struct
+ *
+ * the GBL structure is global data for all duplicate objects
+ */
+typedef struct _DD_SURFACE_GLOBAL
+{
+ DWORD dwBlockSizeY; // block size that display driver requested (return)
+ union {
+ DWORD dwBlockSizeX; // block size that display driver requested (return)
+ DWORD dwUserMemSize; // user-mode memory size that display driver requested (return)
+ };
+ FLATPTR fpVidMem; // pointer to video memory
+ LONG lPitch; // pitch of surface
+ LONG yHint; // y-coordinate of surface
+ LONG xHint; // x-coordinate of surface
+ DWORD wHeight; // height of surface
+ DWORD wWidth; // width of surface
+ DWORD dwReserved1; // reserved for use by display driver
+ DDPIXELFORMAT ddpfSurface; // pixel format of surface
+} DD_SURFACE_GLOBAL;
+
+/*
+ * the LCL structure is local data for each individual surface object
+ */
+struct _DD_SURFACE_LOCAL
+{
+ PDD_SURFACE_GLOBAL lpGbl; // pointer to surface shared data
+ DWORD dwFlags; // flags
+ DDSCAPS ddsCaps; // capabilities of surface
+ DWORD dwReserved1; // reserved for use by display driver
+ DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use
+ DDCOLORKEY ddckCKDestOverlay;// color key for destination overlay use
+};
+typedef struct _DD_SURFACE_LOCAL DD_SURFACE_LOCAL;
+
+#define DDRAWISURFGBL_MEMFREE 0x00000001L // video memory has been freed
+#define DDRAWISURFGBL_SYSMEMREQUESTED 0x00000002L // surface is in system memory at request of user
+#define DDRAWISURFGBL_ISGDISURFACE 0x00000004L // This surface represents what GDI thinks is front buffer
+/*
+ * NOTE: This flag was previously DDRAWISURFGBL_INVALID. This flags has been retired
+ * and replaced by DDRAWISURF_INVALID in the local object.
+ */
+#define DDRAWISURFGBL_RESERVED0 0x80000000L // Reserved flag
+
+#define DDRAWISURF_ATTACHED 0x00000001L // surface is attached to another
+#define DDRAWISURF_IMPLICITCREATE 0x00000002L // surface implicitly created
+#define DDRAWISURF_ISFREE 0x00000004L // surface already freed (temp flag)
+#define DDRAWISURF_ATTACHED_FROM 0x00000008L // surface has others attached to it
+#define DDRAWISURF_IMPLICITROOT 0x00000010L // surface root of implicit creation
+#define DDRAWISURF_PARTOFPRIMARYCHAIN 0x00000020L // surface is part of primary chain
+#define DDRAWISURF_DATAISALIASED 0x00000040L // used for thunking
+#define DDRAWISURF_HASDC 0x00000080L // has a DC
+#define DDRAWISURF_HASCKEYDESTOVERLAY 0x00000100L // surface has CKDestOverlay
+#define DDRAWISURF_HASCKEYDESTBLT 0x00000200L // surface has CKDestBlt
+#define DDRAWISURF_HASCKEYSRCOVERLAY 0x00000400L // surface has CKSrcOverlay
+#define DDRAWISURF_HASCKEYSRCBLT 0x00000800L // surface has CKSrcBlt
+#define DDRAWISURF_xxxxxxxxxxx4 0x00001000L // spare bit
+#define DDRAWISURF_HASPIXELFORMAT 0x00002000L // surface structure has pixel format data
+#define DDRAWISURF_HASOVERLAYDATA 0x00004000L // surface structure has overlay data
+#define DDRAWISURF_xxxxxxxxxxx5 0x00008000L // spare bit
+#define DDRAWISURF_SW_CKEYDESTOVERLAY 0x00010000L // surface expects to process colorkey in software
+#define DDRAWISURF_SW_CKEYDESTBLT 0x00020000L // surface expects to process colorkey in software
+#define DDRAWISURF_SW_CKEYSRCOVERLAY 0x00040000L // surface expects to process colorkey in software
+#define DDRAWISURF_SW_CKEYSRCBLT 0x00080000L // surface expects to process colorkey in software
+#define DDRAWISURF_HW_CKEYDESTOVERLAY 0x00100000L // surface expects to process colorkey in hardware
+#define DDRAWISURF_HW_CKEYDESTBLT 0x00200000L // surface expects to process colorkey in hardware
+#define DDRAWISURF_HW_CKEYSRCOVERLAY 0x00400000L // surface expects to process colorkey in hardware
+#define DDRAWISURF_HW_CKEYSRCBLT 0x00800000L // surface expects to process colorkey in hardware
+#define DDRAWISURF_xxxxxxxxxxx6 0x01000000L // spare bit
+#define DDRAWISURF_HELCB 0x02000000L // surfac is the ddhel cb. must call hel for lock/blt.
+#define DDRAWISURF_FRONTBUFFER 0x04000000L // surface was originally a front buffer
+#define DDRAWISURF_BACKBUFFER 0x08000000L // surface was originally backbuffer
+#define DDRAWISURF_INVALID 0x10000000L // surface has been invalidated by mode set
+#define DDRAWISURF_CANTLOCK 0x20000000L // surface cannot be locked (primary created by HEL)
+
+/*
+ * rop stuff
+ */
+#define ROP_HAS_SOURCE 0x00000001l
+#define ROP_HAS_PATTERN 0x00000002l
+#define ROP_HAS_SOURCEPATTERN ROP_HAS_SOURCE | ROP_HAS_PATTERN
+
+/*
+ * structure for display driver to call DDHAL_Create with
+ */
+typedef struct _DD_HALINFO
+{
+ DWORD dwSize;
+ VIDEOMEMORYINFO vmiData; // video memory info
+ DDCAPS ddCaps; // hw specific caps
+ DWORD dwMonitorFrequency; // monitor frequency in current mode
+ DWORD dwFlags; // create flags
+} DD_HALINFO;
+typedef DD_HALINFO *PDD_HALINFO;
+
+/*
+ * DDRAW version of DirectDraw object;
+ *
+ */
+typedef struct _DD_DIRECTDRAW_GLOBAL
+{
+ VOID* dhpdev; // driver's private PDEV pointer
+ DWORD dwReserved1; // reserved for use by display driver
+ DWORD dwReserved2; // reserved for use by display driver
+} DD_DIRECTDRAW_GLOBAL;
+
+typedef struct _DD_DIRECTDRAW_LOCAL
+{
+ PDD_DIRECTDRAW_GLOBAL lpGbl; // pointer to data
+ FLATPTR fpProcess; // address of frame buffer in calling process' address space
+} DD_DIRECTDRAW_LOCAL;
+
+
+/////////////////////////////////////////////////////////////////////////////
+// NT Note:
+//
+// The following structures must match, field for field, the corresponding
+// structures as declared in 'ddrawi.h.' We cannot simply use the same
+// structures because the sub-structures such as DD_DIRECTDRAW_GLOBAL are
+// different, and have to be properly typed for the drivers.
+//
+/////////////////////////////////////////////////////////////////////////////
+
+/****************************************************************************
+ *
+ * DDHAL structures for Surface Object callbacks
+ *
+ ***************************************************************************/
+
+/*
+ * structure for passing information to DDHAL Blt fn
+ */
+typedef struct _DD_BLTDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDDestSurface;// dest surface
+ RECTL rDest; // dest rect
+ PDD_SURFACE_LOCAL lpDDSrcSurface; // src surface
+ RECTL rSrc; // src rect
+ DWORD dwFlags; // blt flags
+ DWORD dwROPFlags; // ROP flags (valid for ROPS only)
+ DDBLTFX bltFX; // blt FX
+ HRESULT ddRVal; // return value
+ VOID* Blt; // Unused: Win95 compatibility
+ BOOL IsClipped; // clipped blt?
+ RECTL rOrigDest; // unclipped dest rect
+ // (only valid if IsClipped)
+ RECTL rOrigSrc; // unclipped src rect
+ // (only valid if IsClipped)
+ DWORD dwRectCnt; // count of dest rects
+ // (only valid if IsClipped)
+ LPRECT prDestRects; // array of dest rects
+ // (only valid if IsClipped)
+} DD_BLTDATA;
+
+/*
+ * structure for passing information to DDHAL Lock fn
+ */
+typedef struct _DD_LOCKDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDSurface; // surface struct
+ DWORD bHasRect; // rArea is valid
+ RECTL rArea; // area being locked
+ LPVOID lpSurfData; // pointer to screen memory (return value)
+ HRESULT ddRVal; // return value
+ VOID* Lock; // Unused: Win95 compatibility
+ DWORD dwFlags; // DDLOCK flags
+} DD_LOCKDATA;
+
+/*
+ * structure for passing information to DDHAL Unlock fn
+ */
+typedef struct _DD_UNLOCKDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDSurface; // surface struct
+ HRESULT ddRVal; // return value
+ VOID* Unlock; // Unused: Win95 compatibility
+} DD_UNLOCKDATA;
+
+/*
+ * structure for passing information to DDHAL UpdateOverlay fn
+ */
+typedef struct _DD_UPDATEOVERLAYDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDDestSurface;// dest surface
+ RECTL rDest; // dest rect
+ PDD_SURFACE_LOCAL lpDDSrcSurface; // src surface
+ RECTL rSrc; // src rect
+ DWORD dwFlags; // flags
+ DDOVERLAYFX overlayFX; // overlay FX
+ HRESULT ddRVal; // return value
+ VOID* UpdateOverlay; // Unused: Win95 compatibility
+} DD_UPDATEOVERLAYDATA;
+
+/*
+ * structure for passing information to DDHAL UpdateOverlay fn
+ */
+typedef struct _DD_SETOVERLAYPOSITIONDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDSrcSurface; // src surface
+ PDD_SURFACE_LOCAL lpDDDestSurface;// dest surface
+ LONG lXPos; // x position
+ LONG lYPos; // y position
+ HRESULT ddRVal; // return value
+ VOID* SetOverlayPosition; // Unused: Win95 compatibility
+} DD_SETOVERLAYPOSITIONDATA;
+/*
+ * structure for passing information to DDHAL SetPalette fn
+ */
+typedef struct _DD_SETPALETTEDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDSurface; // surface struct
+ PDD_PALETTE_GLOBAL lpDDPalette; // palette to set to surface
+ HRESULT ddRVal; // return value
+ VOID* SetPalette; // Unused: Win95 compatibility
+ BOOL Attach; // attach this palette?
+} DD_SETPALETTEDATA;
+
+/*
+ * structure for passing information to DDHAL Flip fn
+ */
+typedef struct _DD_FLIPDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpSurfCurr; // current surface
+ PDD_SURFACE_LOCAL lpSurfTarg; // target surface (to flip to)
+ DWORD dwFlags; // flags
+ HRESULT ddRVal; // return value
+ VOID* Flip; // Unused: Win95 compatibility
+} DD_FLIPDATA;
+
+/*
+ * structure for passing information to DDHAL DestroySurface fn
+ */
+typedef struct _DD_DESTROYSURFACEDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDSurface; // surface struct
+ HRESULT ddRVal; // return value
+ VOID* DestroySurface;// Unused: Win95 compatibility
+} DD_DESTROYSURFACEDATA;
+
+/*
+ * structure for passing information to DDHAL SetClipList fn
+ */
+typedef struct _DD_SETCLIPLISTDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDSurface; // surface struct
+ HRESULT ddRVal; // return value
+ VOID* SetClipList; // Unused: Win95 compatibility
+} DD_SETCLIPLISTDATA;
+
+/*
+ * structure for passing information to DDHAL AddAttachedSurface fn
+ */
+typedef struct _DD_ADDATTACHEDSURFACEDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDSurface; // surface struct
+ PDD_SURFACE_LOCAL lpSurfAttached; // surface to attach
+ HRESULT ddRVal; // return value
+ VOID* AddAttachedSurface; // Unused: Win95 compatibility
+} DD_ADDATTACHEDSURFACEDATA;
+
+/*
+ * structure for passing information to DDHAL SetColorKey fn
+ */
+typedef struct _DD_SETCOLORKEYDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDSurface; // surface struct
+ DWORD dwFlags; // flags
+ DDCOLORKEY ckNew; // new color key
+ HRESULT ddRVal; // return value
+ VOID* SetColorKey; // Unused: Win95 compatibility
+} DD_SETCOLORKEYDATA;
+
+/*
+ * structure for passing information to DDHAL GetBltStatus fn
+ */
+typedef struct _DD_GETBLTSTATUSDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDSurface; // surface struct
+ DWORD dwFlags; // flags
+ HRESULT ddRVal; // return value
+ VOID* GetBltStatus; // Unused: Win95 compatibility
+} DD_GETBLTSTATUSDATA;
+
+/*
+ * structure for passing information to DDHAL GetFlipStatus fn
+ */
+typedef struct _DD_GETFLIPSTATUSDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACE_LOCAL lpDDSurface; // surface struct
+ DWORD dwFlags; // flags
+ HRESULT ddRVal; // return value
+ VOID* GetFlipStatus; // Unused: Win95 compatibility
+} DD_GETFLIPSTATUSDATA;
+
+/****************************************************************************
+ *
+ * DDHAL structures for Palette Object callbacks
+ *
+ ***************************************************************************/
+
+/*
+ * structure for passing information to DDHAL DestroyPalette fn
+ */
+typedef struct _DD_DESTROYPALETTEDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_PALETTE_GLOBAL lpDDPalette; // palette struct
+ HRESULT ddRVal; // return value
+ VOID* DestroyPalette; // Unused: Win95 compatibility
+} DD_DESTROYPALETTEDATA;
+
+/*
+ * structure for passing information to DDHAL SetEntries fn
+ */
+typedef struct _DD_SETENTRIESDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_PALETTE_GLOBAL lpDDPalette; // palette struct
+ DWORD dwBase; // base palette index
+ DWORD dwNumEntries; // number of palette entries
+ LPPALETTEENTRY lpEntries; // color table
+ HRESULT ddRVal; // return value
+ VOID* SetEntries; // Unused: Win95 compatibility
+} DD_SETENTRIESDATA;
+
+/****************************************************************************
+ *
+ * DDHAL structures for Driver Object callbacks
+ *
+ ***************************************************************************/
+
+typedef DDSURFACEDESC* PDD_SURFACEDESC;
+
+/*
+ * structure for passing information to DDHAL CreateSurface fn
+ */
+typedef struct _DD_CREATESURFACEDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACEDESC lpDDSurfaceDesc;// description of surface being created
+ PDD_SURFACE_LOCAL *lplpSList; // list of created surface objects
+ DWORD dwSCnt; // number of surfaces in SList
+ HRESULT ddRVal; // return value
+ VOID* CreateSurface; // Unused: Win95 compatibility
+} DD_CREATESURFACEDATA;
+
+/*
+ * structure for passing information to DDHAL CanCreateSurface fn
+ */
+typedef struct _DD_CANCREATESURFACEDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_SURFACEDESC lpDDSurfaceDesc; // description of surface being created
+ DWORD bIsDifferentPixelFormat;// pixel format differs from primary surface
+ HRESULT ddRVal; // return value
+ VOID* CanCreateSurface; // Unused: Win95 compatibility
+} DD_CANCREATESURFACEDATA;
+
+/*
+ * structure for passing information to DDHAL CreatePalette fn
+ */
+typedef struct _DD_CREATEPALETTEDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ PDD_PALETTE_GLOBAL lpDDPalette; // ddraw palette struct
+ LPPALETTEENTRY lpColorTable; // colors to go in palette
+ HRESULT ddRVal; // return value
+ VOID* CreatePalette; // Unused: Win95 compatibility
+ BOOL is_excl; // process has exclusive mode
+} DD_CREATEPALETTEDATA;
+
+/*
+ * Return if the vertical blank is in progress
+ */
+#define DDWAITVB_I_TESTVB 0x80000006l
+
+/*
+ * structure for passing information to DDHAL WaitForVerticalBlank fn
+ */
+typedef struct _DD_WAITFORVERTICALBLANKDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ DWORD dwFlags; // flags
+ DWORD bIsInVB; // is in vertical blank
+ DWORD hEvent; // event
+ HRESULT ddRVal; // return value
+ VOID* WaitForVerticalBlank; // Unused: Win95 compatibility
+} DD_WAITFORVERTICALBLANKDATA;
+
+/*
+ * structure for passing information to DDHAL driver SetColorKey fn
+ */
+typedef struct _DD_DRVSETCOLORKEYDATA
+{
+ PDD_SURFACE_LOCAL lpDDSurface; // surface struct
+ DWORD dwFlags; // flags
+ DDCOLORKEY ckNew; // new color key
+ HRESULT ddRVal; // return value
+ VOID* SetColorKey; // Unused: Win95 compatibility
+} DD_DRVSETCOLORKEYDATA;
+
+/*
+ * structure for passing information to DDHAL GetScanLine fn
+ */
+typedef struct _DD_GETSCANLINEDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ DWORD dwScanLine; // returned scan line
+ HRESULT ddRVal; // return value
+ VOID* GetScanLine; // Unused: Win95 compatibility
+} DD_GETSCANLINEDATA;
+
+/*
+ * structure for passing information to DDHAL MapMemory fn
+ */
+typedef struct _DD_MAPMEMORYDATA
+{
+ PDD_DIRECTDRAW_GLOBAL lpDD; // driver struct
+ BOOL bMap; // TRUE if map; FALSe if un-map
+ HANDLE hProcess; // process handle
+ FLATPTR fpProcess; // returned address in process' address space
+ HRESULT ddRVal; // return value
+} DD_MAPMEMORYDATA;
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif
diff --git a/public/oak/inc/gldrv.h b/public/oak/inc/gldrv.h
new file mode 100644
index 000000000..9f4ded98e
--- /dev/null
+++ b/public/oak/inc/gldrv.h
@@ -0,0 +1,450 @@
+/*++ BUILD Version: 0001
+
+Copyright (c) 1985-94, Microsoft Corporation
+
+Module Name:
+
+ gldrv.h
+
+Abstract:
+
+ Private entry points, defines and types for Installable OpenGL DDI.
+
+--*/
+
+#ifndef _GLDRV_
+#define _GLDRV_
+
+typedef struct _GLDISPATCHTABLE {
+ void (APIENTRY *glNewList )( GLuint list, GLenum mode );
+ void (APIENTRY *glEndList )( void );
+ void (APIENTRY *glCallList )( GLuint list );
+ void (APIENTRY *glCallLists )( GLsizei n, GLenum type, const GLvoid *lists );
+ void (APIENTRY *glDeleteLists )( GLuint list, GLsizei range );
+ GLuint (APIENTRY *glGenLists )( GLsizei range );
+ void (APIENTRY *glListBase )( GLuint base );
+ void (APIENTRY *glBegin )( GLenum mode );
+ void (APIENTRY *glBitmap )( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap );
+ void (APIENTRY *glColor3b )( GLbyte red, GLbyte green, GLbyte blue );
+ void (APIENTRY *glColor3bv )( const GLbyte *v );
+ void (APIENTRY *glColor3d )( GLdouble red, GLdouble green, GLdouble blue );
+ void (APIENTRY *glColor3dv )( const GLdouble *v );
+ void (APIENTRY *glColor3f )( GLfloat red, GLfloat green, GLfloat blue );
+ void (APIENTRY *glColor3fv )( const GLfloat *v );
+ void (APIENTRY *glColor3i )( GLint red, GLint green, GLint blue );
+ void (APIENTRY *glColor3iv )( const GLint *v );
+ void (APIENTRY *glColor3s )( GLshort red, GLshort green, GLshort blue );
+ void (APIENTRY *glColor3sv )( const GLshort *v );
+ void (APIENTRY *glColor3ub )( GLubyte red, GLubyte green, GLubyte blue );
+ void (APIENTRY *glColor3ubv )( const GLubyte *v );
+ void (APIENTRY *glColor3ui )( GLuint red, GLuint green, GLuint blue );
+ void (APIENTRY *glColor3uiv )( const GLuint *v );
+ void (APIENTRY *glColor3us )( GLushort red, GLushort green, GLushort blue );
+ void (APIENTRY *glColor3usv )( const GLushort *v );
+ void (APIENTRY *glColor4b )( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha );
+ void (APIENTRY *glColor4bv )( const GLbyte *v );
+ void (APIENTRY *glColor4d )( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha );
+ void (APIENTRY *glColor4dv )( const GLdouble *v );
+ void (APIENTRY *glColor4f )( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
+ void (APIENTRY *glColor4fv )( const GLfloat *v );
+ void (APIENTRY *glColor4i )( GLint red, GLint green, GLint blue, GLint alpha );
+ void (APIENTRY *glColor4iv )( const GLint *v );
+ void (APIENTRY *glColor4s )( GLshort red, GLshort green, GLshort blue, GLshort alpha );
+ void (APIENTRY *glColor4sv )( const GLshort *v );
+ void (APIENTRY *glColor4ub )( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
+ void (APIENTRY *glColor4ubv )( const GLubyte *v );
+ void (APIENTRY *glColor4ui )( GLuint red, GLuint green, GLuint blue, GLuint alpha );
+ void (APIENTRY *glColor4uiv )( const GLuint *v );
+ void (APIENTRY *glColor4us )( GLushort red, GLushort green, GLushort blue, GLushort alpha );
+ void (APIENTRY *glColor4usv )( const GLushort *v );
+ void (APIENTRY *glEdgeFlag )( GLboolean flag );
+ void (APIENTRY *glEdgeFlagv )( const GLboolean *flag );
+ void (APIENTRY *glEnd )( void );
+ void (APIENTRY *glIndexd )( GLdouble c );
+ void (APIENTRY *glIndexdv )( const GLdouble *c );
+ void (APIENTRY *glIndexf )( GLfloat c );
+ void (APIENTRY *glIndexfv )( const GLfloat *c );
+ void (APIENTRY *glIndexi )( GLint c );
+ void (APIENTRY *glIndexiv )( const GLint *c );
+ void (APIENTRY *glIndexs )( GLshort c );
+ void (APIENTRY *glIndexsv )( const GLshort *c );
+ void (APIENTRY *glNormal3b )( GLbyte nx, GLbyte ny, GLbyte nz );
+ void (APIENTRY *glNormal3bv )( const GLbyte *v );
+ void (APIENTRY *glNormal3d )( GLdouble nx, GLdouble ny, GLdouble nz );
+ void (APIENTRY *glNormal3dv )( const GLdouble *v );
+ void (APIENTRY *glNormal3f )( GLfloat nx, GLfloat ny, GLfloat nz );
+ void (APIENTRY *glNormal3fv )( const GLfloat *v );
+ void (APIENTRY *glNormal3i )( GLint nx, GLint ny, GLint nz );
+ void (APIENTRY *glNormal3iv )( const GLint *v );
+ void (APIENTRY *glNormal3s )( GLshort nx, GLshort ny, GLshort nz );
+ void (APIENTRY *glNormal3sv )( const GLshort *v );
+ void (APIENTRY *glRasterPos2d )( GLdouble x, GLdouble y );
+ void (APIENTRY *glRasterPos2dv )( const GLdouble *v );
+ void (APIENTRY *glRasterPos2f )( GLfloat x, GLfloat y );
+ void (APIENTRY *glRasterPos2fv )( const GLfloat *v );
+ void (APIENTRY *glRasterPos2i )( GLint x, GLint y );
+ void (APIENTRY *glRasterPos2iv )( const GLint *v );
+ void (APIENTRY *glRasterPos2s )( GLshort x, GLshort y );
+ void (APIENTRY *glRasterPos2sv )( const GLshort *v );
+ void (APIENTRY *glRasterPos3d )( GLdouble x, GLdouble y, GLdouble z );
+ void (APIENTRY *glRasterPos3dv )( const GLdouble *v );
+ void (APIENTRY *glRasterPos3f )( GLfloat x, GLfloat y, GLfloat z );
+ void (APIENTRY *glRasterPos3fv )( const GLfloat *v );
+ void (APIENTRY *glRasterPos3i )( GLint x, GLint y, GLint z );
+ void (APIENTRY *glRasterPos3iv )( const GLint *v );
+ void (APIENTRY *glRasterPos3s )( GLshort x, GLshort y, GLshort z );
+ void (APIENTRY *glRasterPos3sv )( const GLshort *v );
+ void (APIENTRY *glRasterPos4d )( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
+ void (APIENTRY *glRasterPos4dv )( const GLdouble *v );
+ void (APIENTRY *glRasterPos4f )( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
+ void (APIENTRY *glRasterPos4fv )( const GLfloat *v );
+ void (APIENTRY *glRasterPos4i )( GLint x, GLint y, GLint z, GLint w );
+ void (APIENTRY *glRasterPos4iv )( const GLint *v );
+ void (APIENTRY *glRasterPos4s )( GLshort x, GLshort y, GLshort z, GLshort w );
+ void (APIENTRY *glRasterPos4sv )( const GLshort *v );
+ void (APIENTRY *glRectd )( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
+ void (APIENTRY *glRectdv )( const GLdouble *v1, const GLdouble *v2 );
+ void (APIENTRY *glRectf )( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
+ void (APIENTRY *glRectfv )( const GLfloat *v1, const GLfloat *v2 );
+ void (APIENTRY *glRecti )( GLint x1, GLint y1, GLint x2, GLint y2 );
+ void (APIENTRY *glRectiv )( const GLint *v1, const GLint *v2 );
+ void (APIENTRY *glRects )( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
+ void (APIENTRY *glRectsv )( const GLshort *v1, const GLshort *v2 );
+ void (APIENTRY *glTexCoord1d )( GLdouble s );
+ void (APIENTRY *glTexCoord1dv )( const GLdouble *v );
+ void (APIENTRY *glTexCoord1f )( GLfloat s );
+ void (APIENTRY *glTexCoord1fv )( const GLfloat *v );
+ void (APIENTRY *glTexCoord1i )( GLint s );
+ void (APIENTRY *glTexCoord1iv )( const GLint *v );
+ void (APIENTRY *glTexCoord1s )( GLshort s );
+ void (APIENTRY *glTexCoord1sv )( const GLshort *v );
+ void (APIENTRY *glTexCoord2d )( GLdouble s, GLdouble t );
+ void (APIENTRY *glTexCoord2dv )( const GLdouble *v );
+ void (APIENTRY *glTexCoord2f )( GLfloat s, GLfloat t );
+ void (APIENTRY *glTexCoord2fv )( const GLfloat *v );
+ void (APIENTRY *glTexCoord2i )( GLint s, GLint t );
+ void (APIENTRY *glTexCoord2iv )( const GLint *v );
+ void (APIENTRY *glTexCoord2s )( GLshort s, GLshort t );
+ void (APIENTRY *glTexCoord2sv )( const GLshort *v );
+ void (APIENTRY *glTexCoord3d )( GLdouble s, GLdouble t, GLdouble r );
+ void (APIENTRY *glTexCoord3dv )( const GLdouble *v );
+ void (APIENTRY *glTexCoord3f )( GLfloat s, GLfloat t, GLfloat r );
+ void (APIENTRY *glTexCoord3fv )( const GLfloat *v );
+ void (APIENTRY *glTexCoord3i )( GLint s, GLint t, GLint r );
+ void (APIENTRY *glTexCoord3iv )( const GLint *v );
+ void (APIENTRY *glTexCoord3s )( GLshort s, GLshort t, GLshort r );
+ void (APIENTRY *glTexCoord3sv )( const GLshort *v );
+ void (APIENTRY *glTexCoord4d )( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
+ void (APIENTRY *glTexCoord4dv )( const GLdouble *v );
+ void (APIENTRY *glTexCoord4f )( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
+ void (APIENTRY *glTexCoord4fv )( const GLfloat *v );
+ void (APIENTRY *glTexCoord4i )( GLint s, GLint t, GLint r, GLint q );
+ void (APIENTRY *glTexCoord4iv )( const GLint *v );
+ void (APIENTRY *glTexCoord4s )( GLshort s, GLshort t, GLshort r, GLshort q );
+ void (APIENTRY *glTexCoord4sv )( const GLshort *v );
+ void (APIENTRY *glVertex2d )( GLdouble x, GLdouble y );
+ void (APIENTRY *glVertex2dv )( const GLdouble *v );
+ void (APIENTRY *glVertex2f )( GLfloat x, GLfloat y );
+ void (APIENTRY *glVertex2fv )( const GLfloat *v );
+ void (APIENTRY *glVertex2i )( GLint x, GLint y );
+ void (APIENTRY *glVertex2iv )( const GLint *v );
+ void (APIENTRY *glVertex2s )( GLshort x, GLshort y );
+ void (APIENTRY *glVertex2sv )( const GLshort *v );
+ void (APIENTRY *glVertex3d )( GLdouble x, GLdouble y, GLdouble z );
+ void (APIENTRY *glVertex3dv )( const GLdouble *v );
+ void (APIENTRY *glVertex3f )( GLfloat x, GLfloat y, GLfloat z );
+ void (APIENTRY *glVertex3fv )( const GLfloat *v );
+ void (APIENTRY *glVertex3i )( GLint x, GLint y, GLint z );
+ void (APIENTRY *glVertex3iv )( const GLint *v );
+ void (APIENTRY *glVertex3s )( GLshort x, GLshort y, GLshort z );
+ void (APIENTRY *glVertex3sv )( const GLshort *v );
+ void (APIENTRY *glVertex4d )( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
+ void (APIENTRY *glVertex4dv )( const GLdouble *v );
+ void (APIENTRY *glVertex4f )( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
+ void (APIENTRY *glVertex4fv )( const GLfloat *v );
+ void (APIENTRY *glVertex4i )( GLint x, GLint y, GLint z, GLint w );
+ void (APIENTRY *glVertex4iv )( const GLint *v );
+ void (APIENTRY *glVertex4s )( GLshort x, GLshort y, GLshort z, GLshort w );
+ void (APIENTRY *glVertex4sv )( const GLshort *v );
+ void (APIENTRY *glClipPlane )( GLenum plane, const GLdouble *equation );
+ void (APIENTRY *glColorMaterial )( GLenum face, GLenum mode );
+ void (APIENTRY *glCullFace )( GLenum mode );
+ void (APIENTRY *glFogf )( GLenum pname, GLfloat param );
+ void (APIENTRY *glFogfv )( GLenum pname, const GLfloat *params );
+ void (APIENTRY *glFogi )( GLenum pname, GLint param );
+ void (APIENTRY *glFogiv )( GLenum pname, const GLint *params );
+ void (APIENTRY *glFrontFace )( GLenum mode );
+ void (APIENTRY *glHint )( GLenum target, GLenum mode );
+ void (APIENTRY *glLightf )( GLenum light, GLenum pname, GLfloat param );
+ void (APIENTRY *glLightfv )( GLenum light, GLenum pname, const GLfloat *params );
+ void (APIENTRY *glLighti )( GLenum light, GLenum pname, GLint param );
+ void (APIENTRY *glLightiv )( GLenum light, GLenum pname, const GLint *params );
+ void (APIENTRY *glLightModelf )( GLenum pname, GLfloat param );
+ void (APIENTRY *glLightModelfv )( GLenum pname, const GLfloat *params );
+ void (APIENTRY *glLightModeli )( GLenum pname, GLint param );
+ void (APIENTRY *glLightModeliv )( GLenum pname, const GLint *params );
+ void (APIENTRY *glLineStipple )( GLint factor, GLushort pattern );
+ void (APIENTRY *glLineWidth )( GLfloat width );
+ void (APIENTRY *glMaterialf )( GLenum face, GLenum pname, GLfloat param );
+ void (APIENTRY *glMaterialfv )( GLenum face, GLenum pname, const GLfloat *params );
+ void (APIENTRY *glMateriali )( GLenum face, GLenum pname, GLint param );
+ void (APIENTRY *glMaterialiv )( GLenum face, GLenum pname, const GLint *params );
+ void (APIENTRY *glPointSize )( GLfloat size );
+ void (APIENTRY *glPolygonMode )( GLenum face, GLenum mode );
+ void (APIENTRY *glPolygonStipple )( const GLubyte *mask );
+ void (APIENTRY *glScissor )( GLint x, GLint y, GLsizei width, GLsizei height );
+ void (APIENTRY *glShadeModel )( GLenum mode );
+ void (APIENTRY *glTexParameterf )( GLenum target, GLenum pname, GLfloat param );
+ void (APIENTRY *glTexParameterfv )( GLenum target, GLenum pname, const GLfloat *params );
+ void (APIENTRY *glTexParameteri )( GLenum target, GLenum pname, GLint param );
+ void (APIENTRY *glTexParameteriv )( GLenum target, GLenum pname, const GLint *params );
+ void (APIENTRY *glTexImage1D )( GLenum target, GLint level, GLint components, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
+ void (APIENTRY *glTexImage2D )( GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
+ void (APIENTRY *glTexEnvf )( GLenum target, GLenum pname, GLfloat param );
+ void (APIENTRY *glTexEnvfv )( GLenum target, GLenum pname, const GLfloat *params );
+ void (APIENTRY *glTexEnvi )( GLenum target, GLenum pname, GLint param );
+ void (APIENTRY *glTexEnviv )( GLenum target, GLenum pname, const GLint *params );
+ void (APIENTRY *glTexGend )( GLenum coord, GLenum pname, GLdouble param );
+ void (APIENTRY *glTexGendv )( GLenum coord, GLenum pname, const GLdouble *params );
+ void (APIENTRY *glTexGenf )( GLenum coord, GLenum pname, GLfloat param );
+ void (APIENTRY *glTexGenfv )( GLenum coord, GLenum pname, const GLfloat *params );
+ void (APIENTRY *glTexGeni )( GLenum coord, GLenum pname, GLint param );
+ void (APIENTRY *glTexGeniv )( GLenum coord, GLenum pname, const GLint *params );
+ void (APIENTRY *glFeedbackBuffer )( GLsizei size, GLenum type, GLfloat *buffer );
+ void (APIENTRY *glSelectBuffer )( GLsizei size, GLuint *buffer );
+ GLint (APIENTRY *glRenderMode )( GLenum mode );
+ void (APIENTRY *glInitNames )( void );
+ void (APIENTRY *glLoadName )( GLuint name );
+ void (APIENTRY *glPassThrough )( GLfloat token );
+ void (APIENTRY *glPopName )( void );
+ void (APIENTRY *glPushName )( GLuint name );
+ void (APIENTRY *glDrawBuffer )( GLenum mode );
+ void (APIENTRY *glClear )( GLbitfield mask );
+ void (APIENTRY *glClearAccum )( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
+ void (APIENTRY *glClearIndex )( GLfloat c );
+ void (APIENTRY *glClearColor )( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
+ void (APIENTRY *glClearStencil )( GLint s );
+ void (APIENTRY *glClearDepth )( GLclampd depth );
+ void (APIENTRY *glStencilMask )( GLuint mask );
+ void (APIENTRY *glColorMask )( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
+ void (APIENTRY *glDepthMask )( GLboolean flag );
+ void (APIENTRY *glIndexMask )( GLuint mask );
+ void (APIENTRY *glAccum )( GLenum op, GLfloat value );
+ void (APIENTRY *glDisable )( GLenum cap );
+ void (APIENTRY *glEnable )( GLenum cap );
+ void (APIENTRY *glFinish )( void );
+ void (APIENTRY *glFlush )( void );
+ void (APIENTRY *glPopAttrib )( void );
+ void (APIENTRY *glPushAttrib )( GLbitfield mask );
+ void (APIENTRY *glMap1d )( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points );
+ void (APIENTRY *glMap1f )( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points );
+ void (APIENTRY *glMap2d )( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points );
+ void (APIENTRY *glMap2f )( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points );
+ void (APIENTRY *glMapGrid1d )( GLint un, GLdouble u1, GLdouble u2 );
+ void (APIENTRY *glMapGrid1f )( GLint un, GLfloat u1, GLfloat u2 );
+ void (APIENTRY *glMapGrid2d )( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 );
+ void (APIENTRY *glMapGrid2f )( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 );
+ void (APIENTRY *glEvalCoord1d )( GLdouble u );
+ void (APIENTRY *glEvalCoord1dv )( const GLdouble *u );
+ void (APIENTRY *glEvalCoord1f )( GLfloat u );
+ void (APIENTRY *glEvalCoord1fv )( const GLfloat *u );
+ void (APIENTRY *glEvalCoord2d )( GLdouble u, GLdouble v );
+ void (APIENTRY *glEvalCoord2dv )( const GLdouble *u );
+ void (APIENTRY *glEvalCoord2f )( GLfloat u, GLfloat v );
+ void (APIENTRY *glEvalCoord2fv )( const GLfloat *u );
+ void (APIENTRY *glEvalMesh1 )( GLenum mode, GLint i1, GLint i2 );
+ void (APIENTRY *glEvalPoint1 )( GLint i );
+ void (APIENTRY *glEvalMesh2 )( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
+ void (APIENTRY *glEvalPoint2 )( GLint i, GLint j );
+ void (APIENTRY *glAlphaFunc )( GLenum func, GLclampf ref );
+ void (APIENTRY *glBlendFunc )( GLenum sfactor, GLenum dfactor );
+ void (APIENTRY *glLogicOp )( GLenum opcode );
+ void (APIENTRY *glStencilFunc )( GLenum func, GLint ref, GLuint mask );
+ void (APIENTRY *glStencilOp )( GLenum fail, GLenum zfail, GLenum zpass );
+ void (APIENTRY *glDepthFunc )( GLenum func );
+ void (APIENTRY *glPixelZoom )( GLfloat xfactor, GLfloat yfactor );
+ void (APIENTRY *glPixelTransferf )( GLenum pname, GLfloat param );
+ void (APIENTRY *glPixelTransferi )( GLenum pname, GLint param );
+ void (APIENTRY *glPixelStoref )( GLenum pname, GLfloat param );
+ void (APIENTRY *glPixelStorei )( GLenum pname, GLint param );
+ void (APIENTRY *glPixelMapfv )( GLenum map, GLint mapsize, const GLfloat *values );
+ void (APIENTRY *glPixelMapuiv )( GLenum map, GLint mapsize, const GLuint *values );
+ void (APIENTRY *glPixelMapusv )( GLenum map, GLint mapsize, const GLushort *values );
+ void (APIENTRY *glReadBuffer )( GLenum mode );
+ void (APIENTRY *glCopyPixels )( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type );
+ void (APIENTRY *glReadPixels )( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels );
+ void (APIENTRY *glDrawPixels )( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
+ void (APIENTRY *glGetBooleanv )( GLenum pname, GLboolean *params );
+ void (APIENTRY *glGetClipPlane )( GLenum plane, GLdouble *equation );
+ void (APIENTRY *glGetDoublev )( GLenum pname, GLdouble *params );
+ GLenum (APIENTRY *glGetError )( void );
+ void (APIENTRY *glGetFloatv )( GLenum pname, GLfloat *params );
+ void (APIENTRY *glGetIntegerv )( GLenum pname, GLint *params );
+ void (APIENTRY *glGetLightfv )( GLenum light, GLenum pname, GLfloat *params );
+ void (APIENTRY *glGetLightiv )( GLenum light, GLenum pname, GLint *params );
+ void (APIENTRY *glGetMapdv )( GLenum target, GLenum query, GLdouble *v );
+ void (APIENTRY *glGetMapfv )( GLenum target, GLenum query, GLfloat *v );
+ void (APIENTRY *glGetMapiv )( GLenum target, GLenum query, GLint *v );
+ void (APIENTRY *glGetMaterialfv )( GLenum face, GLenum pname, GLfloat *params );
+ void (APIENTRY *glGetMaterialiv )( GLenum face, GLenum pname, GLint *params );
+ void (APIENTRY *glGetPixelMapfv )( GLenum map, GLfloat *values );
+ void (APIENTRY *glGetPixelMapuiv )( GLenum map, GLuint *values );
+ void (APIENTRY *glGetPixelMapusv )( GLenum map, GLushort *values );
+ void (APIENTRY *glGetPolygonStipple )( GLubyte *mask );
+ const GLubyte * (APIENTRY *glGetString )( GLenum name );
+ void (APIENTRY *glGetTexEnvfv )( GLenum target, GLenum pname, GLfloat *params );
+ void (APIENTRY *glGetTexEnviv )( GLenum target, GLenum pname, GLint *params );
+ void (APIENTRY *glGetTexGendv )( GLenum coord, GLenum pname, GLdouble *params );
+ void (APIENTRY *glGetTexGenfv )( GLenum coord, GLenum pname, GLfloat *params );
+ void (APIENTRY *glGetTexGeniv )( GLenum coord, GLenum pname, GLint *params );
+ void (APIENTRY *glGetTexImage )( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels );
+ void (APIENTRY *glGetTexParameterfv )( GLenum target, GLenum pname, GLfloat *params );
+ void (APIENTRY *glGetTexParameteriv )( GLenum target, GLenum pname, GLint *params );
+ void (APIENTRY *glGetTexLevelParameterfv )( GLenum target, GLint level, GLenum pname, GLfloat *params );
+ void (APIENTRY *glGetTexLevelParameteriv )( GLenum target, GLint level, GLenum pname, GLint *params );
+ GLboolean (APIENTRY *glIsEnabled )( GLenum cap );
+ GLboolean (APIENTRY *glIsList )( GLuint list );
+ void (APIENTRY *glDepthRange )( GLclampd zNear, GLclampd zFar );
+ void (APIENTRY *glFrustum )( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar );
+ void (APIENTRY *glLoadIdentity )( void );
+ void (APIENTRY *glLoadMatrixf )( const GLfloat *m );
+ void (APIENTRY *glLoadMatrixd )( const GLdouble *m );
+ void (APIENTRY *glMatrixMode )( GLenum mode );
+ void (APIENTRY *glMultMatrixf )( const GLfloat *m );
+ void (APIENTRY *glMultMatrixd )( const GLdouble *m );
+ void (APIENTRY *glOrtho )( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar );
+ void (APIENTRY *glPopMatrix )( void );
+ void (APIENTRY *glPushMatrix )( void );
+ void (APIENTRY *glRotated )( GLdouble angle, GLdouble x, GLdouble y, GLdouble z );
+ void (APIENTRY *glRotatef )( GLfloat angle, GLfloat x, GLfloat y, GLfloat z );
+ void (APIENTRY *glScaled )( GLdouble x, GLdouble y, GLdouble z );
+ void (APIENTRY *glScalef )( GLfloat x, GLfloat y, GLfloat z );
+ void (APIENTRY *glTranslated )( GLdouble x, GLdouble y, GLdouble z );
+ void (APIENTRY *glTranslatef )( GLfloat x, GLfloat y, GLfloat z );
+ void (APIENTRY *glViewport )( GLint x, GLint y, GLsizei width, GLsizei height );
+ // OpenGL version 1.0 entries end here
+
+ // OpenGL version 1.1 entries begin here
+ void (APIENTRY *glArrayElement )(GLint i);
+ void (APIENTRY *glBindTexture )(GLenum target, GLuint texture);
+ void (APIENTRY *glColorPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+ void (APIENTRY *glDisableClientState )(GLenum array);
+ void (APIENTRY *glDrawArrays )(GLenum mode, GLint first, GLsizei count);
+ void (APIENTRY *glDrawElements )(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
+ void (APIENTRY *glEdgeFlagPointer )(GLsizei stride, const GLvoid *pointer);
+ void (APIENTRY *glEnableClientState )(GLenum array);
+ void (APIENTRY *glIndexPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);
+ void (APIENTRY *glIndexub )(GLubyte c);
+ void (APIENTRY *glIndexubv )(const GLubyte *c);
+ void (APIENTRY *glInterleavedArrays )(GLenum format, GLsizei stride, const GLvoid *pointer);
+ void (APIENTRY *glNormalPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);
+ void (APIENTRY *glPolygonOffset )(GLfloat factor, GLfloat units);
+ void (APIENTRY *glTexCoordPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+ void (APIENTRY *glVertexPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+ GLboolean (APIENTRY *glAreTexturesResident )(GLsizei n, const GLuint *textures, GLboolean *residences);
+ void (APIENTRY *glCopyTexImage1D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
+ void (APIENTRY *glCopyTexImage2D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+ void (APIENTRY *glCopyTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+ void (APIENTRY *glCopyTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+ void (APIENTRY *glDeleteTextures )(GLsizei n, const GLuint *textures);
+ void (APIENTRY *glGenTextures )(GLsizei n, GLuint *textures);
+ void (APIENTRY *glGetPointerv )(GLenum pname, GLvoid* *params);
+ GLboolean (APIENTRY *glIsTexture )(GLuint texture);
+ void (APIENTRY *glPrioritizeTextures )(GLsizei n, const GLuint *textures, const GLclampf *priorities);
+ void (APIENTRY *glTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+ void (APIENTRY *glTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+ void (APIENTRY *glPopClientAttrib )(void);
+ void (APIENTRY *glPushClientAttrib )(GLbitfield mask);
+} GLDISPATCHTABLE, *PGLDISPATCHTABLE;
+
+// OpenGL Client/Driver Procedure Table.
+
+typedef struct _GLCLTPROCTABLE {
+ int cEntries; // Number of function entries in table
+ GLDISPATCHTABLE glDispatchTable; // OpenGL function dispatch table
+} GLCLTPROCTABLE, *PGLCLTPROCTABLE;
+
+// Number of entries expected for various versions of OpenGL
+#define OPENGL_VERSION_100_ENTRIES 306
+#define OPENGL_VERSION_110_ENTRIES 336
+
+// Driver GLRC handle.
+
+typedef ULONG DHGLRC;
+
+// SetProcTable function prototype for DrvSetContext.
+
+typedef VOID (APIENTRY *PFN_SETPROCTABLE)(PGLCLTPROCTABLE);
+
+// DrvSetCallbackProcs prototypes
+typedef VOID (APIENTRY *PFN_SETCURRENTVALUE)(VOID *pv);
+typedef VOID *(APIENTRY *PFN_GETCURRENTVALUE)(VOID);
+typedef DHGLRC (APIENTRY *PFN_GETDHGLRC)(HGLRC hrc);
+
+// Driver context function prototypes.
+
+BOOL APIENTRY DrvCopyContext(DHGLRC, DHGLRC, UINT);
+DHGLRC APIENTRY DrvCreateContext(HDC);
+DHGLRC APIENTRY DrvCreateLayerContext(HDC, int);
+BOOL APIENTRY DrvDeleteContext(DHGLRC);
+PGLCLTPROCTABLE APIENTRY DrvSetContext(HDC,DHGLRC,PFN_SETPROCTABLE);
+BOOL APIENTRY DrvReleaseContext(DHGLRC);
+BOOL APIENTRY DrvValidateVersion(ULONG);
+BOOL APIENTRY DrvShareLists(DHGLRC, DHGLRC);
+PROC APIENTRY DrvGetProcAddress(LPCSTR);
+VOID APIENTRY DrvSetCallbackProcs(INT, PROC *);
+BOOL APIENTRY DrvDescribeLayerPlane(HDC, INT, INT, UINT,
+ LPLAYERPLANEDESCRIPTOR);
+INT APIENTRY DrvSetLayerPaletteEntries(HDC, INT, INT, INT,
+ CONST COLORREF *);
+INT APIENTRY DrvGetLayerPaletteEntries(HDC, INT, INT, INT,
+ COLORREF *);
+BOOL APIENTRY DrvRealizeLayerPalette(HDC, INT, BOOL);
+BOOL APIENTRY DrvSwapLayerBuffers(HDC, UINT);
+
+// Input structure for OPENGL_CMD ExtEscape.
+
+typedef struct _WNDOBJ WNDOBJ;
+typedef struct _XLATEOBJ XLATEOBJ;
+
+typedef struct _OPENGLCMD
+{
+ ULONG ulSubEsc;
+ FLONG fl;
+ WNDOBJ *pwo;
+ XLATEOBJ *pxo;
+} OPENGLCMD, *POPENGLCMD;
+
+// Flags for OPENGL_CMD ExtEscape.
+
+#define OGLCMD_NEEDWNDOBJ 0x01
+#define OGLCMD_NEEDXLATEOBJ 0x02
+
+// OPENGL_GETINFO ExtEscape sub-escape numbers. They are defined by Microsoft.
+
+#define OPENGL_GETINFO_DRVNAME 0
+
+// Input structure for OPENGL_GETINFO ExtEscape.
+
+typedef struct _OPENGLGETINFO
+{
+ ULONG ulSubEsc;
+} OPENGLGETINFO, *POPENGLGETINFO;
+
+// Input structure for OPENGL_GETINFO_DRVNAME ExtEscape.
+
+typedef struct _GLDRVNAME
+{
+ OPENGLGETINFO oglget;
+} GLDRVNAME, *PGLDRVNAME;
+
+// Output structure for OPENGL_GETINFO_DRVNAME ExtEscape.
+
+typedef struct _GLDRVNAMERET
+{
+ ULONG ulVersion; // must be 1 for this version
+ ULONG ulDriverVersion; // driver specific version number
+ WCHAR awch[MAX_PATH+1];
+} GLDRVNAMERET, *PGLDRVNAMERET;
+
+#endif /* _GLDRV_ */
diff --git a/public/oak/inc/ifi.txt b/public/oak/inc/ifi.txt
new file mode 100644
index 000000000..f9a3e688a
--- /dev/null
+++ b/public/oak/inc/ifi.txt
@@ -0,0 +1,591 @@
+/******************************Module*Header*******************************\
+* Module Name: ifi.txt
+*
+* Changes that went into ifi and ddi to optimize text
+*
+* Created: 19-Sep-1991 13:00:06
+* Author: Bodin Dresevic [BodinD]
+*
+* Copyright (c) 1990 Microsoft Corporation
+*
+*
+\**************************************************************************/
+
+
+-----------------------------------------------------------------------------
+a) define the notion of integer font realization:
+
+ All char inc vectors for this particular font realization,
+ as well as all info in
+ the FD_DEVICEMETRICS structure is guaranteed to be integer. (fractional
+ parts of all points and distances are zero).
+
+ Clearly such fonts will be designed for writing horizontally
+ or vertcally ONLY. To distinguish such fonts
+ another field will be added to FD_DEVICEMETRICS ,
+
+ FLONG flRealizedType;
+
+ and the FDM_TYPE_INTEGER bit will be set in flRealizedType field if
+ this particular realization of the font is an integer realization.
+
+ Let me clarify this by an example:
+ Suppose a tt font, which is designed as a 12 pt font in its notional space,
+ is scaled to 24 pt. If all per glyph metrics info was integer for the
+ original font at 12 pt, clearly it will stay integer for the rasterized
+ images at 24 pt. (Everything will just get multiplied by two). For this
+ realization the FDM_TYPE_INTEGER flag should be set.
+ However if we scale THE SAME to 15pt (the scaling factor is 5/4),
+ a glyph that originally had char inc vector of length 5, will
+ after realization have fractional length of 5 * (5/4) = 6.25, and the
+ FDM_TYPE_INTEGER flag should NOT be set for this realization
+
+ We may add more accelerator flags to flRealizedType field later on,
+ if we find it convenient.
+
+
+// FDM_TYPE_INTEGER // all char inc vectors are integer for this font realization
+// FDM_TYPE_ZERO_BEARINGS // all glyphs have zero a and c spaces
+
+// the following two features refer to all glyphs in this font realization
+
+// FDM_TYPE_CHAR_INC_EQUAL_BM_BASE // base width == cx for horiz, == cy for vert.
+// FDM_TYPE_MAXEXT_EQUAL_BM_SIDE // side width == cy for horiz, == cx for vert.
+
+
+
+
+-----------------------------------------------------------------------------
+b) wcFirst and wcLast reintroduced to IFIMETRICS. Font may of may
+ not contain all unicode code points between first and last.
+ If the font does
+ not contain all the wchars betwenn first and last, the font
+ will have FM_TYPE_DISCONNECTED bit set in the IFIMETRICS
+
+-----------------------------------------------------------------------------
+c) 32.32 changes yet to be explained
+
+
+
+-----------------------------------------------------------------------------
+d) to improve unicode -> handle mapping in the ifi font drivers
+ and the device drivers as well should exercise the following behavior:
+
+
+
+ a) IFI interface:
+
+The new form of the FdQueryMappings will be as follows:
+
+LONG
+FdQueryMappings (
+ IN HFF hff,
+ IN ULONG ulFont,
+ IN ULONG ulMode,
+ OUT PVOID *ppv
+ );
+
+The only mode for this function will be FD_QUERY_GLYPHSET,
+to replace the old FD_QUERY_MAPPINGS mode.
+The function will return a pointer to a FD_GLYPHSET structure,
+defined below, that the font driver has allocated and WILL NOT MOVE.
+The result will be returned in *ppv. If succesfull the function
+returns the size of the FD_GLYPHSET structure, otherwise returns
+FD_ERROR = -1;
+
+The FD_QUERY_LIG_MAP mode will be deleted at least in this
+release of the interface.
+
+ b) DDI interface changes
+
+DrvQueryFontTree will change as follows
+
+PVOID DrvQueryFontTree(
+IN DHPDEV dhpdev,
+IN ULONG iFace,
+IN ULONG iMode);
+
+Modes will be changed as follows
+
+ QFT_UNICODE --> to be replaced by QFT_GLYPHSET
+ QFT_LIGATURES --> to be deleted in this release
+ QFT_KERNPAIRS --> stays as kirko noted
+
+The function will return a pointer to a FD_GLYPHSET structure,
+defined below, that the device driver has allocated and WILL NOT MOVE.
+
+ The definition of the FD_GLYPHSET structure:
+
+
+typedef struct _WCRUN {
+ WCHAR wcLow; // lowest character in run
+ WCHAR wcHigh; // highest character in run
+ HGLYPH *phg; // pointer to an array of (wcHigh-wcLow+1) HGLYPH's
+} WCRUN;
+
+The following accelerator here is used to save both memory and time:
+If phg is set to (HGLYPH *)NULL, for all wc's in this particular run
+the handle can be computed as simple zero extension:
+ HGLYPH hg = (HGLYPH) wc;
+
+If phg is not NULL, memory pointed to by phg, allocated by the driver,
+WILL NOT MOVE.
+
+
+typedef struct _FD_GLYPHSET {
+ SIZE_T cjThis; // size of this structure in butes
+ FLONG flAccel; // accel flags, bits to be explained below
+ ULONG cGlyphsSupported; // sum over all wcrun's of (wcHigh - wcLow + 1)
+ ULONG cRuns;
+ WCRUN awcrun[1]; // an array of cRun WCRUN structures
+} FD_GLYPHSET;
+
+
+// flAccel - accelerator flags for the engine to ease the
+// the task of binary searching through the ordered list of wcrun's:
+// to be explained below
+
+The array of WCRUN structures must be ordered in order to support binary
+searches. That is, the following expressions must all be true:
+
+
+1. All the runs are valid
+
+ for (0 <= i && i < pgs->cRuns)
+
+ pgs->wcrun[i].wcLow < pgs->wcrun[i].wcHigh
+
+2. The runs are well ordered
+
+ for (0 <= i && i < pgs->cRuns-1)
+
+ pgs->wcrun[i].wcHigh < pgs->wcrun[i+1].wcLow
+
+
+The flAccel bits are defined as follows
+(only one for now, may add more in the future or drop them alltogether.)
+
+#define GS_UNICODE_HANDLES
+
+ If this bit is set, for ALL WCRUNS in this FD_GLYPHSET the
+ handles are
+ obtained by zero extending unicode code points of
+ the corresponding supported glyphs, i.e. (hg = (HGLYPH) wc)
+
+
+In this architecture the font driver is trusted to provide tables
+that are well defined and will never change. The drivers are encouraged
+to share GLYPHSET structures and phg arrays between its own fonts
+whenever possible. The engine will "read only" this memory.
+
+
+It is assumed that for this release of the product,
+there is a unique glyph for each supported character. This means
+that we cannot support Ligatures or glyph variants that are
+not defined in the Unicode standard. (Of course, if an application
+comes with its own built in font with ligatures, it will be able
+to take advantage of it).
+
+In order to optimize speed vs. memory requirement and to reduce the
+number of runs in the glyphset, the font driver
+may lie to the engine that it supports some unicode code points,
+which strictly speaking are not supported in a font.
+(Example 80h-9fh in most of win3.0 bm fonts, which strictly speaking
+are not supported unicode code points, they are just rectangles)
+It is than the
+responsibility of the driver to substitute the default character
+itself for those glyhps that are really not supported.
+
+The engine will do
+the substitution by the default character for those glyphs
+that the driver admitted that it
+does not support.
+
+
+
+-----------------------------------------------------------------------------
+e) font driver should return the following information (which is needed
+ by the DDI call FONTOBJ_vGetInfo):
+
+ cGlyphsSupported Number of glyphs in the font
+
+ cjMaxGlyph1 Size of largest glyph (GLYPHDATA) in 1 bit/pel
+
+ cjMaxGlyph4 Size of largest glyph (GLYPHDATA) in 4 bit/pel
+
+ cjMaxGlyph8 Size of largest glyph (GLYPHDATA) in 8 bit/pel
+
+ cjMaxGlyph16 Size of largest glyph (GLYPHDATA) in 16 bit/pel
+
+ cjMaxGlyph32 Size of largest glyph (GLYPHDATA) in 32 bit/pel
+
+ flCaps Capabilities flags--any combination of:
+ FO_DEVICE_FONT <-- this is known
+ FO_OUTLINE_CAPABLE <-- we need this!!!
+
+
+ cGlyphsSupported can be made part of the IFIMETRICS.
+
+ The cjMaxGlyphXX need to be queried on a per-HFC basis. Driver should
+ return cjMaxGlyphXX = 0 if resolution XX bits/pel is not supported for
+ that font.
+ !!! currently, there is no way to request a pel-resolution when opening
+ a Font Context. I believe that different pel-resolutions of the
+ same font at the same xfrom are different realizations of the font.
+
+ Perhaps the FD_XXBIT flags can be added to the fl field of the
+ CONTEXTINFO structure?
+
+ We need to know on a per-font basis whether outlines are supported
+ by the driver FOR THAT FONT. There is a usType field in IFIMETRICS
+ that can take the value FM_DEFN_OUTLINE, FM_DEFN_BITMAP, or
+ FM_DEFN_STROKE. If redefined as follow, we should be OK:
+
+ FM_DEFN_BITMAP only bitmaps supported
+ FM_DEFN_OUTLINE outlines in addition to bitmaps are supported
+ FM_DEFN_STROKE ???
+
+ Or better yet, maybe usType should become flType and can take any
+ combination of:
+
+ FM_DEFN_BITMAP
+ FM_DEFN_OUTLINE
+
+ (Thus allowing for fonts that support one, the other, or both!).
+
+
+-----------------------------------------------------------------------------
+f) A field equivalent to the Window's logfont.lfCharSet is needed...
+ possibly in the IFIMETRICS. It should return:
+
+ ANSI
+ OEM
+ SYMBOL
+ SHIFTJIS
+ UNICODE
+
+ Update: this is now part of the proposed streamlined IFIMETRICS
+ structure (usCharSet field). [GilmanW] 09-Mar-1992
+
+-----------------------------------------------------------------------------
+g) This is really a change in ddi, not ifi but it came as an integral part
+ of the changes made to improve text perf.
+
+ STROBJ_bEnum has changed
+
+BOOL STROBJ_bEnum
+(
+IN STROBJ * pso,
+OUT ULONG * pcgpos, // number of valid GLYPHPOS strucs in the engine's buffer
+OUT PGLYPHPOS *ppgpos, // place to store the pointer to the engine's buffer
+);
+
+This way we avoid unnecessary copy of the data over ddi, from the engine's
+buffer to the drivers buffer. Also saves some resources.
+
+Note that if the driver wants handles (rather than pointers) and positions,
+(SO_GLYPHHANDLES enum mode) there really is no need to enumerate,
+all the glyph in the string will arrive in the first enumeration batch.
+This saves some complexity in the driver.
+
+GLYPHPOS data structure will have to be changed as follows:
+
+typedef union _PGLYPHDATA_OR_PPATHOBJ
+{
+ PGLYPHDATA pgd;
+ PPATHOBJ ppo;
+}
+PGLYPHDATA_OR_PPATHOBJ;
+
+typedef struct _GLYPHPOS
+{
+ HGLYPYH hg;
+ PGLYPHDATA_OR_PPATHOBJ u;
+ POINTL ptl;
+}
+GLYPHPOS, *PGLYPHPOS;
+
+If a device driver asks for handles (and positions) the pointer fields
+will not contain valid data and the driver is encouraged to use
+these fields a scratch pad, e.g. to store pointers to its
+internal cache, if it has one.
+
+We should get rid of GLYPHBITS structure and keep just GLYPHDATA
+structures. This is little bit dirty, but it is stupid and inefficient to have to
+rewrite valid pointers to glyphdata's in the engine cache by
+the same pointers that are just offseted by offsetof(GLYPHDATA, aulBMData[0])
+
+In GLYPHDATA structure the two points (TLI and BRE) should be replaced
+by rclInkedBox, this is consistent with the rest of our interfaces.
+
+-----------------------------------------------------------------------------
+h) STROBJ accelerators
+
+// flAccel flags for STROBJ
+
+// SO_FLAG_DEFAULT_PLACEMENT // defult inc vectors used to position chars
+// SO_HORIZONTAL // "left to right" or "right to left"
+// SO_VERTICAL // "top to bottom" or "bottom to top"
+
+// SO_REVERSED // set if horiz & "right to left"
+ // or if vert & "bottom to top"
+
+// SO_ZERO_BEARINGS // all glyphs in the string have
+ // zero a and c spaces in
+ // the direction of writing
+
+// SO_CHAR_INC_EQUAL_BM_BASE // base == cx for horiz, == cy for vert.
+ // this has to be true for all chars
+ // in the string. the font does
+ // not have to be fixed pich
+
+// SO_MAXEXT_EQUAL_BM_SIDE // side == cy for horiz, == cx for vert.
+// // this has to be true of all chars
+ // in the string,
+ // max ext = asc + desc in device coord
+
+typedef struct _STROBJ
+{
+ ULONG cGlyphs; // # of glyphs to render
+ FLONG flAccel;
+ ULONG ulCharInc; // zero if fixed pitch font, else equal to increment
+ RECTL rclBkGround; // bk ground rect of the string in device coords
+} STROBJ;
+
+
+// ulCharInc should be used only if it is non zero, in which case
+// represents the INTEGER length of the char inc vector of all
+// glyphs in the font. Notice that this parameter will be set to
+// zero even if the font is fixed pitch font with fixed FRACTIONAL
+// character increment (the engine will then do the additions and
+// rounding to integer device locations and store them into the
+// array of glyphpos structures.
+
+
+The way the accelerator flags could be used in the driver
+is as follows:
+
+#define SO_MASK \
+( \
+SO_FLAG_DEFAULT_PLACEMENT | \
+SO_ZERO_BEARINGS | \
+SO_CHAR_INC_EQUAL_BM_BASE | \
+SO_MAXEXT_EQUAL_BM_SIDE \
+)
+
+#define SO_HORIZ_MASK (SO_MASK | SO_HORIZONTAL)
+#define SO_HORIZ_REVERSED_MASK (SO_HORIZ_MASK | SO_REVERSED)
+
+#define SO_VERT_MASK (SO_MASK | SO_VERTICAL)
+#define SO_VERT_REVERSED_MASK (SO_VERT_MASK | SO_REVERSED)
+
+ the code could be something as follows:
+
+ if (
+ (pstro->flAccel == SO_HORIZ_MASK) &&
+ (bEqual(&pstro->rclBkGround, prclOpaque) // passed to DrvTextOut
+ )
+ {
+ do not have to pre blt the bk rectangle, can just tile
+ bitmaps from left to right
+ }
+
+ if (
+ (pstro->flAccel == SO_HORIZ_REVERSED_MASK) &&
+ (bEqual(&pstro->rclBkGround, prclOpaque) // passed to DrvTextOut
+ )
+ {
+ do not have to pre blt the bk rectangle, can just tile
+ bitmaps from right to left
+ }
+
+ if (
+ (pstro->flAccel == SO_VERT_REVERSED_MASK) &&
+ (bEqual(&pstro->rclBkGround, prclOpaque) // passed to DrvTextOut
+ )
+ {
+ do not have to pre blt the bk rectangle, can just tile
+ bitmaps from TOP to bottom
+ }
+
+ e.t.c.
+
+
+ So far, the engine had to provide all positions of all glyphs in the
+ array of GLYPHPOS strctures. This is clearly redundant in the case when
+ SO_HORIZONTAL or SO_VERTICAL flags are set. Clearly, in the SO_HORIZONTAL
+ case, y coordiantes of all the glyphs are going to be the same, only
+ x coordinate will vary from glyph to glyph. Therefore, it is enough
+ to supply the correct y coordiante of the first glyph in the string,
+ the rest of y coordiantes will be the same. The engine should not waste
+ time writing the same y coordinate in cGlyph places, nor the device
+ driver should waste time reading it from cGlyph places.
+ Similar statements can be made about SO_VERTICAL case, except that
+ in this case only y coords will alter, and the correct x coordinate
+ will be provided only for the first glyph.
+
+ Moreover, if SO_HORIZONTAL flag is set, and we are dealing
+ with fixed pitch font (font for which all the glyphs have the same char
+ increment vector), it is not necessary to even write the x positions
+ to the array of glyphpos structures, if the the x postion of the first
+ char in the string is provided, it will be easy for the driver to
+ compute the rest of positions as
+
+ x[n + 1] = x[n] + so.ulCharInc;
+
+ (in SO_VERTICAL case the driver should do y[n + 1] = y[n] + so.ulCharInc;)
+
+
+-----------------------------------------------------------------------------
+i) In BMFD, the PANOSE number values are hacked. A reasonable attempt
+ was made to synthesize these numbers, but the FONTMETRICs available
+ in Win 3.0 font files are insufficient to derive these numbers on the
+ fly. By rights, these numbers should be assigned by the font designer
+ and placed in the file.
+
+ However, since they are NOT available in the Win 3.0 file format and
+ we are contrained from modifying this format, I propose the following:
+
+ 1) A flag be added to IFIMETRICS that indicates the validity of the
+ PANOSE number; i.e., whether the mapper should bother to look at
+ the PANOSE number or not.
+
+ 2) The mapper penalizes a font if the PANOSE number is not usable.
+
+ This is not only applicable to BMFD, but also to any other font technology
+ which does not currently provide PANOSE numbers but for which compatibilty
+ with NT is desired.
+
+
+
+-----------------------------------------------------------------------------
+j) new call added to ifi interface. Only tt driver should ever return
+ success from this call. All other drivers should support this call but
+ only as a stub
+ { return FD_ERROR; }
+
+ This function is added to ifi interface to support GetFontData true
+ type api. this is excert from ttfd\fd_query.c:
+
+/******************************Public*Routine******************************\
+*
+* FdQueryTrueTypeTable
+*
+* copies cjBytes starting at dpStart from the beginning of the table
+* into the buffer
+*
+* if pjBuf == NULL and the caller is asking how big a buffer
+* is needed to store the info from the offset dpStart to the table
+* specified by ulTag to the end of the table
+*
+* if pjBuf != 0 the caller wants no more than cjBuf bytes from
+* the offset dpStart into the table copied into the
+* buffer.
+*
+* if table is not present or if dpScart >= cjTable 0 is returned
+*
+* tag 0 means that the data has to be retrieved from the offset dpStart
+* from the beginning of the file. The lenght of the whole file
+* is returned if pBuf == nULL
+*
+* History:
+* 09-Feb-1992 -by- Bodin Dresevic [BodinD]
+* Wrote it.
+\**************************************************************************/
+
+
+
+
+LONG
+FdQueryTrueTypeTable
+(
+IN HFF hff,
+IN ULONG ulFont, // always 1 for version 1.0 of tt
+IN ULONG ulTag, // tag identifying the tt table
+IN PTRDIFF dpStart, // offset into the table
+IN ULONG cjBuf, // size of the buffer to retrieve the table into
+OUT PBYTE pjBuf // ptr to buffer into which to return the data
+)
+
+
+-----------------------------------------------------------------------------
+k) [GilmanW] 09-Mar-1992
+
+ I have a requirement to return to the control panel a string describing
+ the font file. This string is typically in the non-resident names table
+ in the (DOS) EXE header. If that is not available, the facename is an
+ acceptable substitute.
+
+ I believe this needs to be part of the IFI functionality since it
+ should not be the responsibility of the engine to determine the contents
+ of a font file. Whenever possible, the engine should avoid poking around
+ in the internal formats of the font driver (Win 3.1's exposure of
+ TrueType not withstanding).
+
+ Currently, there is not entry point that can return information on a
+ per font file (i.e., per HFF) basis. Therefore, I propose the following:
+
+
+ LONG
+ FdQueryFontFile (
+ HFF hff, // strings from this font file
+ ULONG ulMode, // indentifies type of string
+ ULONG cjBuf, // number of BYTEs to copy to buffer
+ PULONG pulBuf // pointer to buffer
+ );
+
+ Routine description:
+ --------------------
+
+ A function to query per font file information. In other words,
+ information associated with a font file that is independent of
+ the faces (ulFont) and font contexts (HFC).
+
+ Parameters:
+ -----------
+
+ hff Handle to a font file.
+
+ ulMode This is a 32-bit number that must be one of the following
+ values:
+
+ Allowed ulMode values:
+ ----------------------
+
+ FD_QUERY_DESCRIPTION--returns a UNICODE string that describes
+ the contents of the font file.
+
+ cjBuf Maximum number of BYTEs to copy into the buffer. The
+ driver will not copy more than this many BYTEs.
+
+ This should be zero if pulBuf is NULL.
+
+ pulBuf Pointer to the buffer to receive the data
+ If this is NULL, then the required buffer size
+ is returned as a count of BYTEs. Notice that this
+ is a PULONG, to enforce 32-bit data alignment.
+
+ Return value:
+ -------------
+
+ Number of BYTEs copied into the buffer. If pulBuf is NULL,
+ then the required buffer size (as a count of BYTEs) is returned.
+ FD_ERROR is returned if an error occurs.
+
+
+-----------------------------------------------------------------------------
+l) FdQueryGlyphBitmaps
+
+ In the description of the parameters, it is stated that if hglyph is
+ zero (and some other conditions are met), then the function will return
+ the minimum buffer size needed to get any glyph. This should be changed
+ to hglyph is HGLYPH_INVALID. (HGLYPH_INVALID is no longer 0).
+
+
+-----------------------------------------------------------------------------
+m)
+
+
+
+-----------------------------------------------------------------------------
+n)
diff --git a/public/oak/inc/immdev.h b/public/oak/inc/immdev.h
new file mode 100644
index 000000000..0467ad490
--- /dev/null
+++ b/public/oak/inc/immdev.h
@@ -0,0 +1,760 @@
+/**********************************************************************/
+/* IMM.H - Input Method Manager definitions */
+/* */
+/* Copyright (c) 1993-1996 Microsoft Corporation */
+/**********************************************************************/
+
+#ifndef _IMM_
+#define _IMM_ // defined if IMM.H has been included
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef DWORD HIMC;
+typedef DWORD HIMCC;
+
+typedef HKL FAR *LPHKL;
+typedef UINT FAR *LPUINT;
+
+
+typedef struct tagCOMPOSITIONFORM {
+ DWORD dwStyle;
+ POINT ptCurrentPos;
+ RECT rcArea;
+} COMPOSITIONFORM, *PCOMPOSITIONFORM, NEAR *NPCOMPOSITIONFORM, FAR *LPCOMPOSITIONFORM;
+
+
+typedef struct tagCANDIDATEFORM {
+ DWORD dwIndex;
+ DWORD dwStyle;
+ POINT ptCurrentPos;
+ RECT rcArea;
+} CANDIDATEFORM, *PCANDIDATEFORM, NEAR *NPCANDIDATEFORM, FAR *LPCANDIDATEFORM;
+
+
+typedef struct tagCOMPOSITIONSTRING { //
+ DWORD dwSize; //
+ DWORD dwCompReadAttrLen; //
+ DWORD dwCompReadAttrOffset; //
+ DWORD dwCompReadClauseLen; //
+ DWORD dwCompReadClauseOffset; //
+ DWORD dwCompReadStrLen; //
+ DWORD dwCompReadStrOffset; //
+ DWORD dwCompAttrLen; //
+ DWORD dwCompAttrOffset; //
+ DWORD dwCompClauseLen; //
+ DWORD dwCompClauseOffset; //
+ DWORD dwCompStrLen; //
+ DWORD dwCompStrOffset; //
+ DWORD dwCursorPos; //
+ DWORD dwDeltaStart; //
+ DWORD dwResultReadClauseLen; //
+ DWORD dwResultReadClauseOffset; //
+ DWORD dwResultReadStrLen; //
+ DWORD dwResultReadStrOffset; //
+ DWORD dwResultClauseLen; //
+ DWORD dwResultClauseOffset; //
+ DWORD dwResultStrLen; //
+ DWORD dwResultStrOffset; //
+ DWORD dwPrivateSize; //
+ DWORD dwPrivateOffset; //
+} COMPOSITIONSTRING, *PCOMPOSITIONSTRING, NEAR *NPCOMPOSITIONSTRING, FAR *LPCOMPOSITIONSTRING; //
+ //
+ //
+typedef struct tagGUIDELINE { //
+ DWORD dwSize; //
+ DWORD dwLevel; //
+ DWORD dwIndex; //
+ DWORD dwStrLen; //
+ DWORD dwStrOffset; //
+ DWORD dwPrivateSize; //
+ DWORD dwPrivateOffset; //
+} GUIDELINE, *PGUIDELINE, NEAR *NPGUIDELINE, FAR *LPGUIDELINE; //
+ //
+ //
+typedef struct tagCANDIDATELIST {
+ DWORD dwSize;
+ DWORD dwStyle;
+ DWORD dwCount;
+ DWORD dwSelection;
+ DWORD dwPageStart;
+ DWORD dwPageSize;
+ DWORD dwOffset[1];
+} CANDIDATELIST, *PCANDIDATELIST, NEAR *NPCANDIDATELIST, FAR *LPCANDIDATELIST;
+
+typedef struct tagREGISTERWORDA {
+ LPSTR lpReading;
+ LPSTR lpWord;
+} REGISTERWORDA, *PREGISTERWORDA, NEAR *NPREGISTERWORDA, FAR *LPREGISTERWORDA;
+typedef struct tagREGISTERWORDW {
+ LPWSTR lpReading;
+ LPWSTR lpWord;
+} REGISTERWORDW, *PREGISTERWORDW, NEAR *NPREGISTERWORDW, FAR *LPREGISTERWORDW;
+#ifdef UNICODE
+typedef REGISTERWORDW REGISTERWORD;
+typedef PREGISTERWORDW PREGISTERWORD;
+typedef NPREGISTERWORDW NPREGISTERWORD;
+typedef LPREGISTERWORDW LPREGISTERWORD;
+#else
+typedef REGISTERWORDA REGISTERWORD;
+typedef PREGISTERWORDA PREGISTERWORD;
+typedef NPREGISTERWORDA NPREGISTERWORD;
+typedef LPREGISTERWORDA LPREGISTERWORD;
+#endif // UNICODE
+
+
+
+typedef struct tagCANDIDATEINFO { //
+ DWORD dwSize; //
+ DWORD dwCount; //
+ DWORD dwOffset[32]; //
+ DWORD dwPrivateSize; //
+ DWORD dwPrivateOffset; //
+} CANDIDATEINFO, *PCANDIDATEINFO, NEAR *NPCANDIDATEINFO, FAR *LPCANDIDATEINFO; //
+ //
+ //
+typedef struct tagINPUTCONTEXT { //
+ HWND hWnd; //
+ BOOL fOpen; //
+ POINT ptStatusWndPos; //
+ POINT ptSoftKbdPos; //
+ DWORD fdwConversion; //
+ DWORD fdwSentence; //
+ union { //
+ LOGFONTA A; //
+ LOGFONTW W; //
+ } lfFont; //
+ COMPOSITIONFORM cfCompForm; //
+ CANDIDATEFORM cfCandForm[4]; //
+ HIMCC hCompStr; //
+ HIMCC hCandInfo; //
+ HIMCC hGuideLine; //
+ HIMCC hPrivate; //
+ DWORD dwNumMsgBuf; //
+ HIMCC hMsgBuf; //
+ DWORD fdwInit; //
+ DWORD dwReserve[3]; //
+} INPUTCONTEXT, *PINPUTCONTEXT, NEAR *NPINPUTCONTEXT, FAR *LPINPUTCONTEXT; //
+ //
+typedef struct tagIMEINFO { //
+ DWORD dwPrivateDataSize; //
+ DWORD fdwProperty; //
+ DWORD fdwConversionCaps; //
+ DWORD fdwSentenceCaps; //
+ DWORD fdwUICaps; //
+ DWORD fdwSCSCaps; //
+ DWORD fdwSelectCaps; //
+} IMEINFO, *PIMEINFO, NEAR *NPIMEINFO, FAR *LPIMEINFO; //
+ //
+ //
+#define STYLE_DESCRIPTION_SIZE 32
+
+typedef struct tagSTYLEBUFA {
+ DWORD dwStyle;
+ CHAR szDescription[STYLE_DESCRIPTION_SIZE];
+} STYLEBUFA, *PSTYLEBUFA, NEAR *NPSTYLEBUFA, FAR *LPSTYLEBUFA;
+typedef struct tagSTYLEBUFW {
+ DWORD dwStyle;
+ WCHAR szDescription[STYLE_DESCRIPTION_SIZE];
+} STYLEBUFW, *PSTYLEBUFW, NEAR *NPSTYLEBUFW, FAR *LPSTYLEBUFW;
+#ifdef UNICODE
+typedef STYLEBUFW STYLEBUF;
+typedef PSTYLEBUFW PSTYLEBUF;
+typedef NPSTYLEBUFW NPSTYLEBUF;
+typedef LPSTYLEBUFW LPSTYLEBUF;
+#else
+typedef STYLEBUFA STYLEBUF;
+typedef PSTYLEBUFA PSTYLEBUF;
+typedef NPSTYLEBUFA NPSTYLEBUF;
+typedef LPSTYLEBUFA LPSTYLEBUF;
+#endif // UNICODE
+
+
+typedef struct tagSOFTKBDDATA { //
+ UINT uCount; //
+ WORD wCode[1][256]; //
+} SOFTKBDDATA, *PSOFTKBDDATA, NEAR *NPSOFTKBDDATA, FAR * LPSOFTKBDDATA; //
+ //
+ //
+// prototype of IMM API
+
+HKL WINAPI ImmInstallIMEA(LPCSTR lpszIMEFileName, LPCSTR lpszLayoutText);
+HKL WINAPI ImmInstallIMEW(LPCWSTR lpszIMEFileName, LPCWSTR lpszLayoutText);
+#ifdef UNICODE
+#define ImmInstallIME ImmInstallIMEW
+#else
+#define ImmInstallIME ImmInstallIMEA
+#endif // !UNICODE
+
+HWND WINAPI ImmGetDefaultIMEWnd(HWND);
+
+UINT WINAPI ImmGetDescriptionA(HKL, LPSTR, UINT uBufLen);
+UINT WINAPI ImmGetDescriptionW(HKL, LPWSTR, UINT uBufLen);
+#ifdef UNICODE
+#define ImmGetDescription ImmGetDescriptionW
+#else
+#define ImmGetDescription ImmGetDescriptionA
+#endif // !UNICODE
+
+UINT WINAPI ImmGetIMEFileNameA(HKL, LPSTR, UINT uBufLen);
+UINT WINAPI ImmGetIMEFileNameW(HKL, LPWSTR, UINT uBufLen);
+#ifdef UNICODE
+#define ImmGetIMEFileName ImmGetIMEFileNameW
+#else
+#define ImmGetIMEFileName ImmGetIMEFileNameA
+#endif // !UNICODE
+
+DWORD WINAPI ImmGetProperty(HKL, DWORD);
+
+
+BOOL WINAPI ImmIsIME(HKL);
+
+BOOL WINAPI ImmGetHotKey(DWORD, LPUINT lpuModifiers, LPUINT lpuVKey, LPHKL); //
+BOOL WINAPI ImmSetHotKey(DWORD, UINT, UINT, HKL); //
+BOOL WINAPI ImmSimulateHotKey(HWND, DWORD);
+
+HIMC WINAPI ImmCreateContext(void);
+BOOL WINAPI ImmDestroyContext(HIMC);
+HIMC WINAPI ImmGetContext(HWND);
+BOOL WINAPI ImmReleaseContext(HWND, HIMC);
+HIMC WINAPI ImmAssociateContext(HWND, HIMC);
+
+LONG WINAPI ImmGetCompositionStringA(HIMC, DWORD, LPVOID, DWORD);
+LONG WINAPI ImmGetCompositionStringW(HIMC, DWORD, LPVOID, DWORD);
+#ifdef UNICODE
+#define ImmGetCompositionString ImmGetCompositionStringW
+#else
+#define ImmGetCompositionString ImmGetCompositionStringA
+#endif // !UNICODE
+
+BOOL WINAPI ImmSetCompositionStringA(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD);
+BOOL WINAPI ImmSetCompositionStringW(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD);
+#ifdef UNICODE
+#define ImmSetCompositionString ImmSetCompositionStringW
+#else
+#define ImmSetCompositionString ImmSetCompositionStringA
+#endif // !UNICODE
+
+DWORD WINAPI ImmGetCandidateListCountA(HIMC, LPDWORD lpdwListCount);
+DWORD WINAPI ImmGetCandidateListCountW(HIMC, LPDWORD lpdwListCount);
+#ifdef UNICODE
+#define ImmGetCandidateListCount ImmGetCandidateListCountW
+#else
+#define ImmGetCandidateListCount ImmGetCandidateListCountA
+#endif // !UNICODE
+
+DWORD WINAPI ImmGetCandidateListA(HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen);
+DWORD WINAPI ImmGetCandidateListW(HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen);
+#ifdef UNICODE
+#define ImmGetCandidateList ImmGetCandidateListW
+#else
+#define ImmGetCandidateList ImmGetCandidateListA
+#endif // !UNICODE
+
+DWORD WINAPI ImmGetGuideLineA(HIMC, DWORD dwIndex, LPSTR, DWORD dwBufLen);
+DWORD WINAPI ImmGetGuideLineW(HIMC, DWORD dwIndex, LPWSTR, DWORD dwBufLen);
+#ifdef UNICODE
+#define ImmGetGuideLine ImmGetGuideLineW
+#else
+#define ImmGetGuideLine ImmGetGuideLineA
+#endif // !UNICODE
+
+BOOL WINAPI ImmGetConversionStatus(HIMC, LPDWORD, LPDWORD);
+BOOL WINAPI ImmSetConversionStatus(HIMC, DWORD, DWORD);
+BOOL WINAPI ImmGetOpenStatus(HIMC);
+BOOL WINAPI ImmSetOpenStatus(HIMC, BOOL);
+
+#ifdef _WINGDI_
+#ifndef NOGDI
+BOOL WINAPI ImmGetCompositionFontA(HIMC, LPLOGFONTA);
+BOOL WINAPI ImmGetCompositionFontW(HIMC, LPLOGFONTW);
+#ifdef UNICODE
+#define ImmGetCompositionFont ImmGetCompositionFontW
+#else
+#define ImmGetCompositionFont ImmGetCompositionFontA
+#endif // !UNICODE
+
+BOOL WINAPI ImmSetCompositionFontA(HIMC, LPLOGFONTA);
+BOOL WINAPI ImmSetCompositionFontW(HIMC, LPLOGFONTW);
+#ifdef UNICODE
+#define ImmSetCompositionFont ImmSetCompositionFontW
+#else
+#define ImmSetCompositionFont ImmSetCompositionFontA
+#endif // !UNICODE
+#endif // ifndef NOGDI
+#endif // ifdef _WINGDI_
+
+BOOL WINAPI ImmConfigureIMEA(HKL, HWND, DWORD, LPVOID);
+BOOL WINAPI ImmConfigureIMEW(HKL, HWND, DWORD, LPVOID);
+#ifdef UNICODE
+#define ImmConfigureIME ImmConfigureIMEW
+#else
+#define ImmConfigureIME ImmConfigureIMEA
+#endif // !UNICODE
+
+LRESULT WINAPI ImmEscapeA(HKL, HIMC, UINT, LPVOID);
+LRESULT WINAPI ImmEscapeW(HKL, HIMC, UINT, LPVOID);
+#ifdef UNICODE
+#define ImmEscape ImmEscapeW
+#else
+#define ImmEscape ImmEscapeA
+#endif // !UNICODE
+
+DWORD WINAPI ImmGetConversionListA(HKL, HIMC, LPCSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag);
+DWORD WINAPI ImmGetConversionListW(HKL, HIMC, LPCWSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag);
+#ifdef UNICODE
+#define ImmGetConversionList ImmGetConversionListW
+#else
+#define ImmGetConversionList ImmGetConversionListA
+#endif // !UNICODE
+
+BOOL WINAPI ImmNotifyIME(HIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue);
+
+
+BOOL WINAPI ImmGetStatusWindowPos(HIMC, LPPOINT);
+BOOL WINAPI ImmSetStatusWindowPos(HIMC, LPPOINT);
+BOOL WINAPI ImmGetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
+BOOL WINAPI ImmSetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
+BOOL WINAPI ImmGetCandidateWindow(HIMC, DWORD, LPCANDIDATEFORM);
+BOOL WINAPI ImmSetCandidateWindow(HIMC, LPCANDIDATEFORM);
+
+BOOL WINAPI ImmIsUIMessageA(HWND, UINT, WPARAM, LPARAM);
+BOOL WINAPI ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM);
+#ifdef UNICODE
+#define ImmIsUIMessage ImmIsUIMessageW
+#else
+#define ImmIsUIMessage ImmIsUIMessageA
+#endif // !UNICODE
+
+BOOL WINAPI ImmGenerateMessage(HIMC); //
+UINT WINAPI ImmGetVirtualKey(HWND);
+
+typedef int (CALLBACK *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID);
+typedef int (CALLBACK *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID);
+#ifdef UNICODE
+#define REGISTERWORDENUMPROC REGISTERWORDENUMPROCW
+#else
+#define REGISTERWORDENUMPROC REGISTERWORDENUMPROCA
+#endif // !UNICODE
+
+BOOL WINAPI ImmRegisterWordA(HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister);
+BOOL WINAPI ImmRegisterWordW(HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister);
+#ifdef UNICODE
+#define ImmRegisterWord ImmRegisterWordW
+#else
+#define ImmRegisterWord ImmRegisterWordA
+#endif // !UNICODE
+
+BOOL WINAPI ImmUnregisterWordA(HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszUnregister);
+BOOL WINAPI ImmUnregisterWordW(HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszUnregister);
+#ifdef UNICODE
+#define ImmUnregisterWord ImmUnregisterWordW
+#else
+#define ImmUnregisterWord ImmUnregisterWordA
+#endif // !UNICODE
+
+UINT WINAPI ImmGetRegisterWordStyleA(HKL, UINT nItem, LPSTYLEBUFA);
+UINT WINAPI ImmGetRegisterWordStyleW(HKL, UINT nItem, LPSTYLEBUFW);
+#ifdef UNICODE
+#define ImmGetRegisterWordStyle ImmGetRegisterWordStyleW
+#else
+#define ImmGetRegisterWordStyle ImmGetRegisterWordStyleA
+#endif // !UNICODE
+
+UINT WINAPI ImmEnumRegisterWordA(HKL, REGISTERWORDENUMPROCA, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister, LPVOID);
+UINT WINAPI ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister, LPVOID);
+#ifdef UNICODE
+#define ImmEnumRegisterWord ImmEnumRegisterWordW
+#else
+#define ImmEnumRegisterWord ImmEnumRegisterWordA
+#endif // !UNICODE
+
+// //
+// Prototype of soft keyboard APIs //
+// //
+ //
+HWND WINAPI ImmCreateSoftKeyboard(UINT, HWND, int, int); //
+BOOL WINAPI ImmDestroySoftKeyboard(HWND); //
+BOOL WINAPI ImmShowSoftKeyboard(HWND, int); //
+ //
+ //
+LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC); //
+BOOL WINAPI ImmUnlockIMC(HIMC); //
+DWORD WINAPI ImmGetIMCLockCount(HIMC); //
+ //
+HIMCC WINAPI ImmCreateIMCC(DWORD); //
+HIMCC WINAPI ImmDestroyIMCC(HIMCC); //
+LPVOID WINAPI ImmLockIMCC(HIMCC); //
+BOOL WINAPI ImmUnlockIMCC(HIMCC); //
+DWORD WINAPI ImmGetIMCCLockCount(HIMCC); //
+HIMCC WINAPI ImmReSizeIMCC(HIMCC, DWORD); //
+DWORD WINAPI ImmGetIMCCSize(HIMCC); //
+ //
+ //
+// the window extra offset //
+#define IMMGWL_IMC 0 //
+#define IMMGWL_PRIVATE (sizeof(LONG)) //
+ //
+ //
+
+// wParam for WM_IME_CONTROL
+#define IMC_GETCANDIDATEPOS 0x0007
+#define IMC_SETCANDIDATEPOS 0x0008
+#define IMC_GETCOMPOSITIONFONT 0x0009
+#define IMC_SETCOMPOSITIONFONT 0x000A
+#define IMC_GETCOMPOSITIONWINDOW 0x000B
+#define IMC_SETCOMPOSITIONWINDOW 0x000C
+#define IMC_GETSTATUSWINDOWPOS 0x000F
+#define IMC_SETSTATUSWINDOWPOS 0x0010
+#define IMC_CLOSESTATUSWINDOW 0x0021
+#define IMC_OPENSTATUSWINDOW 0x0022
+
+
+
+
+
+
+// for NI_CONTEXTUPDATED //
+#define IMC_SETCONVERSIONMODE 0x0002 //
+#define IMC_SETSENTENCEMODE 0x0004 //
+#define IMC_SETOPENSTATUS 0x0006 //
+
+// wParam for WM_IME_CONTROL to the soft keyboard
+#define IMC_GETSOFTKBDFONT 0x0011 //
+#define IMC_SETSOFTKBDFONT 0x0012 //
+#define IMC_GETSOFTKBDPOS 0x0013 //
+#define IMC_SETSOFTKBDPOS 0x0014 //
+#define IMC_GETSOFTKBDSUBTYPE 0x0015 //
+#define IMC_SETSOFTKBDSUBTYPE 0x0016 //
+#define IMC_SETSOFTKBDDATA 0x0018 //
+ //
+ //
+// dwAction for ImmNotifyIME
+#define NI_CONTEXTUPDATED 0x0003 //
+#define NI_OPENCANDIDATE 0x0010
+#define NI_CLOSECANDIDATE 0x0011
+#define NI_SELECTCANDIDATESTR 0x0012
+#define NI_CHANGECANDIDATELIST 0x0013
+#define NI_FINALIZECONVERSIONRESULT 0x0014
+#define NI_COMPOSITIONSTR 0x0015
+#define NI_SETCANDIDATE_PAGESTART 0x0016
+#define NI_SETCANDIDATE_PAGESIZE 0x0017
+
+
+// lParam for WM_IME_SETCONTEXT
+#define ISC_SHOWUICANDIDATEWINDOW 0x00000001
+#define ISC_SHOWUICOMPOSITIONWINDOW 0x80000000
+#define ISC_SHOWUIGUIDELINE 0x40000000
+#define ISC_SHOWUIALLCANDIDATEWINDOW 0x0000000F
+#define ISC_SHOWUIALL 0xC000000F
+
+
+// dwIndex for ImmNotifyIME/NI_COMPOSITIONSTR
+#define CPS_COMPLETE 0x0001
+#define CPS_CONVERT 0x0002
+#define CPS_REVERT 0x0003
+#define CPS_CANCEL 0x0004
+
+
+// the modifiers of hot key
+#define MOD_ALT 0x0001
+#define MOD_CONTROL 0x0002
+#define MOD_SHIFT 0x0004
+
+
+#define MOD_LEFT 0x8000
+#define MOD_RIGHT 0x4000
+
+#define MOD_ON_KEYUP 0x0800
+#define MOD_IGNORE_ALL_MODIFIER 0x0400
+
+
+// Windows for Simplified Chinese Edition hot key ID from 0x10 - 0x2F
+#define IME_CHOTKEY_IME_NONIME_TOGGLE 0x10
+#define IME_CHOTKEY_SHAPE_TOGGLE 0x11
+#define IME_CHOTKEY_SYMBOL_TOGGLE 0x12
+
+// Windows for Japanese Edition hot key ID from 0x30 - 0x4F
+#define IME_JHOTKEY_CLOSE_OPEN 0x30
+
+// Windows for Korean Edition hot key ID from 0x50 - 0x6F
+#define IME_KHOTKEY_SHAPE_TOGGLE 0x50
+#define IME_KHOTKEY_HANJACONVERT 0x51
+#define IME_KHOTKEY_ENGLISH 0x52
+
+// Windows for Tranditional Chinese Edition hot key ID from 0x70 - 0x8F
+#define IME_THOTKEY_IME_NONIME_TOGGLE 0x70
+#define IME_THOTKEY_SHAPE_TOGGLE 0x71
+#define IME_THOTKEY_SYMBOL_TOGGLE 0x72
+
+// direct switch hot key ID from 0x100 - 0x11F
+#define IME_HOTKEY_DSWITCH_FIRST 0x100
+#define IME_HOTKEY_DSWITCH_LAST 0x11F
+
+// IME private hot key from 0x200 - 0x21F
+#define IME_ITHOTKEY_RESEND_RESULTSTR 0x200
+#define IME_ITHOTKEY_PREVIOUS_COMPOSITION 0x201
+#define IME_ITHOTKEY_UISTYLE_TOGGLE 0x202
+
+
+
+// parameter of ImmGetCompositionString
+#define GCS_COMPREADSTR 0x0001
+#define GCS_COMPREADATTR 0x0002
+#define GCS_COMPREADCLAUSE 0x0004
+#define GCS_COMPSTR 0x0008
+#define GCS_COMPATTR 0x0010
+#define GCS_COMPCLAUSE 0x0020
+#define GCS_CURSORPOS 0x0080
+#define GCS_DELTASTART 0x0100
+#define GCS_RESULTREADSTR 0x0200
+#define GCS_RESULTREADCLAUSE 0x0400
+#define GCS_RESULTSTR 0x0800
+#define GCS_RESULTCLAUSE 0x1000
+
+// style bit flags for WM_IME_COMPOSITION
+#define CS_INSERTCHAR 0x2000
+#define CS_NOMOVECARET 0x4000
+
+#define GCS_COMP (GCS_COMPSTR|GCS_COMPATTR|GCS_COMPCLAUSE) //
+#define GCS_COMPREAD (GCS_COMPREADSTR|GCS_COMPREADATTR |GCS_COMPREADCLAUSE) //
+#define GCS_RESULT (GCS_RESULTSTR|GCS_RESULTCLAUSE) //
+#define GCS_RESULTREAD (GCS_RESULTREADSTR|GCS_RESULTREADCLAUSE) //
+
+
+// bits of fdwInit of INPUTCONTEXT
+#define INIT_STATUSWNDPOS 0x00000001 //
+#define INIT_CONVERSION 0x00000002 //
+#define INIT_SENTENCE 0x00000004 //
+#define INIT_LOGFONT 0x00000008 //
+#define INIT_COMPFORM 0x00000010 //
+#define INIT_SOFTKBDPOS 0x00000020 //
+ //
+ //
+// IME version constants
+#define IMEVER_0310 0x0003000A
+#define IMEVER_0400 0x00040000
+
+
+// IME property bits
+#define IME_PROP_END_UNLOAD 0x0001 //
+#define IME_PROP_KBD_CHAR_FIRST 0x0002 //
+#define IME_PROP_IGNORE_UPKEYS 0x0004 //
+#define IME_PROP_NEED_ALTKEY 0x0008 //
+#define IME_PROP_NO_KEYS_ON_CLOSE 0x0010 //
+#define IME_PROP_AT_CARET 0x00010000
+#define IME_PROP_SPECIAL_UI 0x00020000
+#define IME_PROP_CANDLIST_START_FROM_1 0x00040000
+#define IME_PROP_UNICODE 0x00080000
+
+
+// IME UICapability bits
+#define UI_CAP_2700 0x00000001
+#define UI_CAP_ROT90 0x00000002
+#define UI_CAP_ROTANY 0x00000004
+#define UI_CAP_SOFTKBD 0x00010000 //
+
+
+// ImmSetCompositionString Capability bits
+#define SCS_CAP_COMPSTR 0x00000001
+#define SCS_CAP_MAKEREAD 0x00000002
+
+
+// IME WM_IME_SELECT inheritance Capability bits
+#define SELECT_CAP_CONVERSION 0x00000001
+#define SELECT_CAP_SENTENCE 0x00000002
+
+
+// ID for deIndex of ImmGetGuideLine
+#define GGL_LEVEL 0x00000001
+#define GGL_INDEX 0x00000002
+#define GGL_STRING 0x00000003
+#define GGL_PRIVATE 0x00000004
+
+
+// ID for dwLevel of GUIDELINE Structure
+#define GL_LEVEL_NOGUIDELINE 0x00000000
+#define GL_LEVEL_FATAL 0x00000001
+#define GL_LEVEL_ERROR 0x00000002
+#define GL_LEVEL_WARNING 0x00000003
+#define GL_LEVEL_INFORMATION 0x00000004
+
+
+// ID for dwIndex of GUIDELINE Structure
+#define GL_ID_UNKNOWN 0x00000000
+#define GL_ID_NOMODULE 0x00000001
+#define GL_ID_NODICTIONARY 0x00000010
+#define GL_ID_CANNOTSAVE 0x00000011
+#define GL_ID_NOCONVERT 0x00000020
+#define GL_ID_TYPINGERROR 0x00000021
+#define GL_ID_TOOMANYSTROKE 0x00000022
+#define GL_ID_READINGCONFLICT 0x00000023
+#define GL_ID_INPUTREADING 0x00000024
+#define GL_ID_INPUTRADICAL 0x00000025
+#define GL_ID_INPUTCODE 0x00000026
+#define GL_ID_INPUTSYMBOL 0x00000027
+#define GL_ID_CHOOSECANDIDATE 0x00000028
+#define GL_ID_REVERSECONVERSION 0x00000029
+#define GL_ID_PRIVATE_FIRST 0x00008000
+#define GL_ID_PRIVATE_LAST 0x0000FFFF
+
+
+// ID for dwIndex of ImmGetProperty
+#define IGP_GETIMEVERSION (DWORD)(-4)
+#define IGP_PROPERTY 0x00000004
+#define IGP_CONVERSION 0x00000008
+#define IGP_SENTENCE 0x0000000c
+#define IGP_UI 0x00000010
+#define IGP_SETCOMPSTR 0x00000014
+#define IGP_SELECT 0x00000018
+
+
+// dwIndex for ImmSetCompositionString API
+#define SCS_SETSTR (GCS_COMPREADSTR|GCS_COMPSTR)
+#define SCS_CHANGEATTR (GCS_COMPREADATTR|GCS_COMPATTR)
+#define SCS_CHANGECLAUSE (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE)
+
+
+// attribute for COMPOSITIONSTRING Structure
+#define ATTR_INPUT 0x00
+#define ATTR_TARGET_CONVERTED 0x01
+#define ATTR_CONVERTED 0x02
+#define ATTR_TARGET_NOTCONVERTED 0x03
+#define ATTR_INPUT_ERROR 0x04
+
+
+// bit field for IMC_SETCOMPOSITIONWINDOW, IMC_SETCANDIDATEWINDOW
+#define CFS_DEFAULT 0x0000
+#define CFS_RECT 0x0001
+#define CFS_POINT 0x0002
+#define CFS_FORCE_POSITION 0x0020
+#define CFS_CANDIDATEPOS 0x0040
+#define CFS_EXCLUDE 0x0080
+
+
+// conversion direction for ImmGetConversionList
+#define GCL_CONVERSION 0x0001
+#define GCL_REVERSECONVERSION 0x0002
+#define GCL_REVERSE_LENGTH 0x0003
+
+
+// bit field for conversion mode
+#define IME_CMODE_ALPHANUMERIC 0x0000
+#define IME_CMODE_NATIVE 0x0001
+#define IME_CMODE_CHINESE IME_CMODE_NATIVE
+#define IME_CMODE_HANGEUL IME_CMODE_NATIVE
+#define IME_CMODE_JAPANESE IME_CMODE_NATIVE
+#define IME_CMODE_KATAKANA 0x0002 // only effect under IME_CMODE_NATIVE
+#define IME_CMODE_LANGUAGE 0x0003
+#define IME_CMODE_FULLSHAPE 0x0008
+#define IME_CMODE_ROMAN 0x0010
+#define IME_CMODE_CHARCODE 0x0020
+#define IME_CMODE_HANJACONVERT 0x0040
+#define IME_CMODE_SOFTKBD 0x0080
+#define IME_CMODE_NOCONVERSION 0x0100
+#define IME_CMODE_EUDC 0x0200
+#define IME_CMODE_SYMBOL 0x0400
+
+
+#define IME_SMODE_NONE 0x0000
+#define IME_SMODE_PLAURALCLAUSE 0x0001
+#define IME_SMODE_SINGLECONVERT 0x0002
+#define IME_SMODE_AUTOMATIC 0x0004
+#define IME_SMODE_PHRASEPREDICT 0x0008
+
+
+// style of candidate
+#define IME_CAND_UNKNOWN 0x0000
+#define IME_CAND_READ 0x0001
+#define IME_CAND_CODE 0x0002
+#define IME_CAND_MEANING 0x0003
+#define IME_CAND_RADICAL 0x0004
+#define IME_CAND_STROKE 0x0005
+
+
+// wParam of report message WM_IME_NOTIFY
+#define IMN_CLOSESTATUSWINDOW 0x0001
+#define IMN_OPENSTATUSWINDOW 0x0002
+#define IMN_CHANGECANDIDATE 0x0003
+#define IMN_CLOSECANDIDATE 0x0004
+#define IMN_OPENCANDIDATE 0x0005
+#define IMN_SETCONVERSIONMODE 0x0006
+#define IMN_SETSENTENCEMODE 0x0007
+#define IMN_SETOPENSTATUS 0x0008
+#define IMN_SETCANDIDATEPOS 0x0009
+#define IMN_SETCOMPOSITIONFONT 0x000A
+#define IMN_SETCOMPOSITIONWINDOW 0x000B
+#define IMN_SETSTATUSWINDOWPOS 0x000C
+#define IMN_GUIDELINE 0x000D
+#define IMN_PRIVATE 0x000E
+
+
+#define IMN_SOFTKBDDESTROYED 0x0011 //
+ //
+ //
+// error code of ImmGetCompositionString
+#define IMM_ERROR_NODATA (-1)
+#define IMM_ERROR_GENERAL (-2)
+
+
+// dialog mode of ImmConfigureIME
+#define IME_CONFIG_GENERAL 1
+#define IME_CONFIG_REGISTERWORD 2
+#define IME_CONFIG_SELECTDICTIONARY 3
+
+
+// dialog mode of ImmEscape
+#define IME_ESC_QUERY_SUPPORT 0x0003
+#define IME_ESC_RESERVED_FIRST 0x0004
+#define IME_ESC_RESERVED_LAST 0x07FF
+#define IME_ESC_PRIVATE_FIRST 0x0800
+#define IME_ESC_PRIVATE_LAST 0x0FFF
+#define IME_ESC_SEQUENCE_TO_INTERNAL 0x1001
+#define IME_ESC_GET_EUDC_DICTIONARY 0x1003
+#define IME_ESC_SET_EUDC_DICTIONARY 0x1004
+#define IME_ESC_MAX_KEY 0x1005
+#define IME_ESC_IME_NAME 0x1006
+#define IME_ESC_SYNC_HOTKEY 0x1007
+#define IME_ESC_HANJA_MODE 0x1008
+#define IME_ESC_AUTOMATA 0x1009
+
+
+// style of word registration
+#define IME_REGWORD_STYLE_EUDC 0x00000001
+#define IME_REGWORD_STYLE_USER_FIRST 0x80000000
+#define IME_REGWORD_STYLE_USER_LAST 0xFFFFFFFF
+
+
+// type of soft keyboard
+// for Windows Tranditional Chinese Edition
+#define SOFTKEYBOARD_TYPE_T1 0x0001
+// for Windows Simplified Chinese Edition
+#define SOFTKEYBOARD_TYPE_C1 0x0002
+
+
+// protype of IME APIs //
+BOOL WINAPI ImeInquire(LPIMEINFO, LPTSTR lpszUIClass, LPCTSTR lpszOptions); //
+BOOL WINAPI ImeConfigure(HKL, HWND, DWORD, LPVOID); //
+DWORD WINAPI ImeConversionList(HIMC, LPCTSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag); //
+BOOL WINAPI ImeDestroy(UINT); //
+LRESULT WINAPI ImeEscape(HIMC, UINT, LPVOID); //
+BOOL WINAPI ImeProcessKey(HIMC, UINT, LPARAM, CONST LPBYTE); //
+BOOL WINAPI ImeSelect(HIMC, BOOL); //
+BOOL WINAPI ImeSetActiveContext(HIMC, BOOL); //
+UINT WINAPI ImeToAsciiEx(UINT uVirtKey, UINT uScaCode, CONST LPBYTE lpbKeyState, LPDWORD lpdwTransBuf, UINT fuState, HIMC); //
+BOOL WINAPI NotifyIME(HIMC, DWORD, DWORD, DWORD); //
+BOOL WINAPI ImeRegisterWord(LPCTSTR, DWORD, LPCTSTR); //
+BOOL WINAPI ImeUnregisterWord(LPCTSTR, DWORD, LPCTSTR); //
+UINT WINAPI ImeGetRegisterWordStyle(UINT nItem, LPSTYLEBUF); //
+UINT WINAPI ImeEnumRegisterWord(REGISTERWORDENUMPROC, LPCTSTR, DWORD, LPCTSTR, LPVOID); //
+BOOL WINAPI ImeSetCompositionString(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD); //
+ //
+ //
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // _IMM_
diff --git a/public/oak/inc/mcdrv.h b/public/oak/inc/mcdrv.h
new file mode 100644
index 000000000..055a6d0c9
--- /dev/null
+++ b/public/oak/inc/mcdrv.h
@@ -0,0 +1,771 @@
+/******************************Module*Header*******************************\
+* Module Name: mcdrv.h
+*
+* Server-side data structure for MCD driver interface. These structures and
+* values are used by the MCD driver to process calls made to the driver.
+*
+* Copyright (c) 1996 Microsoft Corporation
+*
+\**************************************************************************/
+
+#ifndef _MCDRV_H
+#define _MCDRV_H
+
+#define MCD_VER_MAJOR 1
+#define MCD_VER_MINOR 0
+
+#define MCD_MAX_USER_CLIP_PLANES 6
+
+#define MCDRV_MEM_BUSY 1
+#define MCDRV_MEM_NOT_BUSY 2
+
+typedef ENUMRECTS MCDENUMRECTS;
+typedef HANDLE MCDHANDLE;
+typedef float MCDFLOAT;
+typedef double MCDDOUBLE;
+
+#define MCDENGDLLNAME "MCDSRV32.DLL"
+#define MCDFUNCS RXFUNCS
+
+#define MCDRV_MEM_DMA 0x0001
+
+#define MCDRV_TEXTURE_RESIDENT 0x0001
+
+typedef struct _MCDRIVERINFO {
+ ULONG verMajor;
+ ULONG verMinor;
+ ULONG verDriver;
+ CHAR idStr[200];
+ ULONG drvMemFlags;
+ ULONG drvBatchMemSizeMax;
+} MCDDRIVERINFO;
+
+typedef struct _MCDWINDOW
+{
+ RECTL clientRect; // Rectangle describing current window
+ // client area
+ RECTL clipBoundsRect; // Bounding rectangle for the individual
+ // clipping rectangles
+ MCDENUMRECTS *pClip; // List of rectangles describing the
+ // current clip region intersected
+ // with the current scissors rectangle
+ MCDENUMRECTS *pClipUnscissored; // Unscissored version of above
+ VOID *pvUser;
+} MCDWINDOW;
+
+// Rendering context
+
+// MCD context createFlags:
+//
+// MCDCONTEXT_SWAPSYNC If set, synchronize MCDrvSwap to VSYNC
+// for a tearless swap (if possible).
+//
+// MCDCONTEXT_IO_PRIORITY If set, allow OpenGL to have a higher priority
+// on the bus (if possible, let OpenGL "hog" the
+// bus).
+//
+
+#define MCDCONTEXT_SWAPSYNC 0x00000001
+#define MCDCONTEXT_IO_PRIORITY 0x00000002
+
+typedef struct _MCDRC
+{
+ LONG iPixelFormat; // Pixel format for the RC
+ LONG iLayerPlane; // Layer plane for the RC
+ ULONG createFlags; // Creation flags
+ ULONG userFlags; // User-specified flags
+ VOID *pvUser; // User-specified pointer for expansion
+} MCDRC;
+
+
+#define MCDRCINFO_NOVIEWPORTADJUST 0x0001
+#define MCDRCINFO_Y_LOWER_LEFT 0x0002
+#define MCDRCINFO_DEVCOLORSCALE 0x0004
+#define MCDRCINFO_DEVZSCALE 0x0008
+
+typedef struct _MCRCINFO
+{
+ ULONG requestFlags;
+ MCDFLOAT redScale;
+ MCDFLOAT greenScale;
+ MCDFLOAT blueScale;
+ MCDFLOAT alphaScale;
+ MCDDOUBLE zScale; // This is a double to preserve accuracy
+ ULONG depthBufferMax;
+ LONG viewportXAdjust;
+ LONG viewportYAdjust;
+ ULONG reserved[12];
+} MCDRCINFO;
+
+// MCD pixel format descriptor
+
+typedef struct _MCDPIXELFORMAT {
+ WORD nSize;
+ DWORD dwFlags; // Any combination of:
+ //
+ // PFD_DOUBLEBUFFER
+ // PFD_NEED_PALETTE
+ // PFD_NEED_SYSTEM_PALETTE
+ // PFD_SWAP_EXCHANGE
+ // PFD_SWAP_COPY
+ // PFD_SWAP_LAYER_BUFFERS
+
+ BYTE iPixelType; // One of the following:
+ //
+ // PFD_TYPE_RGBA
+ // PFD_TYPE_COLORINDEX
+
+ BYTE cColorBits;
+ BYTE cRedBits;
+ BYTE cRedShift;
+ BYTE cGreenBits;
+ BYTE cGreenShift;
+ BYTE cBlueBits;
+ BYTE cBlueShift;
+ BYTE cAlphaBits;
+ BYTE cAlphaShift;
+ BYTE cDepthBits; // Number of significant depth bits
+ BYTE cDepthShift;
+ BYTE cDepthBufferBits; // Element size of depth buffer
+ // (eg, a depth buffer with cDepthBits = 24
+ // might have a cDepthBufferBits = 32)
+ BYTE cStencilBits;
+ BYTE cOverlayPlanes; // Count of up to 15 overlay planes
+ BYTE cUnderlayPlanes; // Count of up to 15 underlay planes
+ DWORD dwTransparentColor; // If there is an underlay plane, specifies
+ // transparent color or index.
+} MCDPIXELFORMAT;
+
+// MCD layer plane descriptor
+
+typedef struct _MCDLAYERPLANE {
+ WORD nSize;
+ WORD nVersion;
+ DWORD dwFlags; // Any combination of:
+ //
+ // LPD_SUPPORT_OPENGL
+ // LPD_SUPPORT_GDI
+ // LPD_DOUBLEBUFFER
+ // LPD_STEREO
+ // LPD_SWAP_EXCHANGE
+ // LPD_SWAP_COPY
+ // LPD_TRANSPARANT
+ // LPD_SHARE_DEPTH
+ // LPD_SHARE_STENCIL
+ // LPD_SHARE_ACCUM
+
+ BYTE iPixelType; // One of the following:
+ //
+ // LPD_TYPE_RGBA
+ // LPD_TYPE_COLORINDEX
+
+ BYTE cColorBits;
+ BYTE cRedBits;
+ BYTE cRedShift;
+ BYTE cGreenBits;
+ BYTE cGreenShift;
+ BYTE cBlueBits;
+ BYTE cBlueShift;
+ BYTE cAlphaBits;
+ BYTE cAlphaShift;
+ BYTE cAuxBuffers;
+ BYTE iLayerPlane;
+ COLORREF crTransparent;
+
+} MCDLAYERPLANE;
+
+//
+// Basic rendering types:
+//
+
+typedef struct _MCDCOLOR {
+ MCDFLOAT r, g, b, a;
+} MCDCOLOR;
+
+typedef struct _MCDCOORD {
+ MCDFLOAT x, y, z, w;
+} MCDCOORD;
+
+// Texture structures:
+
+typedef struct __MCDMIPMAPLEVEL {
+ UCHAR *pTexels; // pointer to client texture data
+ LONG width, height;
+ LONG widthImage, heightImage; // Image dimensions without the border
+ MCDFLOAT widthImagef, heightImagef; // Floatin-point versions of above
+ LONG widthLog2, heightLog2; // Log2 of above
+ LONG border; // Border size
+ LONG requestedFormat; // Requested internal format
+ LONG baseFormat; // Base format
+ LONG internalFormat; // Actual internal format
+
+ LONG redSize; // Component resolution
+ LONG greenSize;
+ LONG blueSize;
+ LONG alphaSize;
+ LONG luminanceSize;
+ LONG intensitySize;
+
+} MCDMIPMAPLEVEL;
+
+typedef struct __MCDTEXTURESTATE {
+
+ ULONG sWrapMode; // Wrap modes
+ ULONG tWrapMode;
+
+ ULONG minFilter; // Min/mag filters
+ ULONG magFilter;
+
+ MCDCOLOR borderColor; // Border color
+
+} MCDTEXTURESTATE;
+
+typedef struct __MCDTEXTUREOBJSTATE {
+ ULONG name; // "name" of texture object
+ MCDFLOAT priority; // priority of the texture object
+} MCDTEXTUREOBJSTATE;
+
+typedef struct __MCDTEXTUREDATA {
+ MCDTEXTURESTATE textureState;
+ MCDTEXTUREOBJSTATE textureObjState;
+ MCDMIPMAPLEVEL *level;
+ ULONG textureDimension;
+
+ // Support for texture palettes:
+
+ ULONG paletteSize;
+ RGBQUAD *paletteData;
+ ULONG paletteBaseFormat; // Type of palette data
+ ULONG paletteRequestedFormat;
+
+} MCDTEXTUREDATA;
+
+typedef struct _MCDTEXTURE {
+ MCDTEXTUREDATA *pMCDTextureData;
+ VOID *pSurface;
+ ULONG createFlags;
+ ULONG textureKey; // Must be filled in by the driver
+ ULONG userFlags;
+ VOID *pvUser;
+} MCDTEXTURE;
+
+
+typedef struct _MCDMEM {
+ ULONG memSize;
+ ULONG createFlags;
+ UCHAR *pMemBase;
+ ULONG userFlags;
+ VOID *pvUser;
+} MCDMEM;
+
+typedef struct _MCDSTATE {
+ ULONG state;
+ ULONG size;
+ ULONG stateValue;
+} MCDSTATE;
+
+#define MCD_RENDER_STATE 0
+#define MCD_PIXEL_STATE 1
+#define MCD_SCISSOR_RECT_STATE 2
+
+//
+// MCDSTATE_RENDER is derived from the MCDSTATE structure and is used to pass
+// all MCD rendering state (MCDALLSTATE) in a single command.
+//
+// State field names are derived from the GLenum constant names by removing
+// the GL_ prefix, replacing the "_" separators with case changes, and
+// adding the "Enable" suffix to state enables.
+//
+// For example:
+//
+// GL_FOG_COLOR becomes fogColor
+// GL_POINT_SMOOTH becomes pointSmoothEnable
+//
+// In addition, there are few multiple values that are accessed via a single
+// GLenum. For example, GL_POLYGON_MODE returns both a front and a back
+// polygon mode, so:
+//
+// GL_POLYGON_MODE becomes polygonModeFront *and* polygonModeBack
+//
+
+// Enable flags for enables field in MCDALLSTATE
+
+#define MCD_ALPHA_TEST_ENABLE (1 << 0)
+#define MCD_BLEND_ENABLE (1 << 1)
+#define MCD_INDEX_LOGIC_OP_ENABLE (1 << 2)
+#define MCD_DITHER_ENABLE (1 << 3)
+#define MCD_DEPTH_TEST_ENABLE (1 << 4)
+#define MCD_FOG_ENABLE (1 << 5)
+#define MCD_LIGHTING_ENABLE (1 << 6)
+#define MCD_COLOR_MATERIAL_ENABLE (1 << 7) // Not currently used
+#define MCD_LINE_STIPPLE_ENABLE (1 << 8)
+#define MCD_LINE_SMOOTH_ENABLE (1 << 9)
+#define MCD_POINT_SMOOTH_ENABLE (1 << 10)
+#define MCD_POLYGON_SMOOTH_ENABLE (1 << 11)
+#define MCD_CULL_FACE_ENABLE (1 << 12)
+#define MCD_POLYGON_STIPPLE_ENABLE (1 << 13)
+#define MCD_SCISSOR_TEST_ENABLE (1 << 14)
+#define MCD_STENCIL_TEST_ENABLE (1 << 15)
+#define MCD_TEXTURE_1D_ENABLE (1 << 16)
+#define MCD_TEXTURE_2D_ENABLE (1 << 17)
+#define MCD_TEXTURE_GEN_S_ENABLE (1 << 18) // Not currently used
+#define MCD_TEXTURE_GEN_T_ENABLE (1 << 19) // Not currently used
+#define MCD_TEXTURE_GEN_R_ENABLE (1 << 20) // Not currently used
+#define MCD_TEXTURE_GEN_Q_ENABLE (1 << 21) // Not currently used
+#define MCD_NORMALIZE_ENABLE (1 << 22) // Not currently used
+#define MCD_AUTO_NORMAL_ENABLE (1 << 23) // Not currently used
+#define MCD_POLYGON_OFFSET_POINT_ENABLE (1 << 24)
+#define MCD_POLYGON_OFFSET_LINE_ENABLE (1 << 25)
+#define MCD_POLYGON_OFFSET_FILL_ENABLE (1 << 26)
+#define MCD_COLOR_LOGIC_OP_ENABLE (1 << 27)
+
+typedef struct _MCDRENDERSTATE {
+
+ // state enables
+
+ ULONG enables;
+
+ // texture state
+
+ BOOL textureEnabled;
+
+ // fog state
+
+ MCDCOLOR fogColor;
+ MCDFLOAT fogIndex;
+ MCDFLOAT fogDensity;
+ MCDFLOAT fogStart;
+ MCDFLOAT fogEnd;
+ ULONG fogMode;
+
+ // shading model state
+
+ ULONG shadeModel;
+
+ // point drawing state
+
+ MCDFLOAT pointSize;
+
+ // line drawing state
+
+ MCDFLOAT lineWidth;
+ USHORT lineStipplePattern;
+ SHORT lineStippleRepeat;
+
+ // polygon drawing state
+
+ ULONG cullFaceMode;
+ ULONG frontFace;
+ ULONG polygonModeFront;
+ ULONG polygonModeBack;
+ BYTE polygonStipple[4*32];
+ MCDFLOAT zOffsetFactor;
+ MCDFLOAT zOffsetUnits;
+
+ // stencil test state
+
+ BOOL stencilTestFunc;
+ USHORT stencilMask;
+ USHORT stencilRef;
+ ULONG stencilFail;
+ ULONG stencilDepthFail;
+ ULONG stencilDepthPass;
+
+ // alpha test state
+
+ ULONG alphaTestFunc;
+ MCDFLOAT alphaTestRef;
+
+ // depth test state
+
+ ULONG depthTestFunc;
+
+ // blend state
+
+ ULONG blendSrc;
+ ULONG blendDst;
+
+ // logic op state
+
+ ULONG logicOpMode;
+
+ // frame buffer control state
+
+ ULONG drawBuffer;
+ ULONG indexWritemask;
+ BOOL colorWritemask[4];
+ BOOL depthWritemask; //!!!mcd -- called mask, but really a write enable
+ USHORT stencilWritemask;
+ MCDCOLOR colorClearValue;
+ MCDFLOAT indexClearValue;
+ MCDDOUBLE depthClearValue;
+ USHORT stencilClearValue;
+
+ // lighting
+
+ BOOL twoSided;
+
+ // clipping control
+
+ MCDCOORD userClipPlanes[MCD_MAX_USER_CLIP_PLANES];
+
+ // hints
+
+ ULONG perspectiveCorrectionHint;
+ ULONG pointSmoothHint;
+ ULONG lineSmoothHint;
+ ULONG polygonSmoothHint;
+ ULONG fogHint;
+
+} MCDRENDERSTATE;
+
+typedef struct _MCDSTATE_RENDER {
+ ULONG state; // must be MCD_RENDER_STATE
+ ULONG size; // must be sizeof(MCDSTATE_RENDER)
+ MCDRENDERSTATE allState;
+} MCDSTATE_RENDER;
+
+//
+// MCDSTATEPIXEL is a variant of the MCDSTATE structure that is used to pass
+// all pixel state (MCDPIXELSTATE) in a single command.
+//
+// Note: for MCDrvDrawPixels, the MCDUNPACK structure can be overridden by
+// the packed parameter to the function. If set, the source of the data is
+// a display list and the structure of the data for that call may be assumed
+// to be:
+//
+// swapEndian = FALSE
+// lsbFirst = FALSE
+// lineLength = width (from MCDrvDrawPixels parameter list)
+// skipLines = 0
+// skipPixels = 0
+// alignment = 1
+//
+
+typedef struct _MCDPIXELTRANSFER {
+ MCDFLOAT redScale, greenScale, blueScale, alphaScale, depthScale;
+ MCDFLOAT redbias, greenBias, blueBias, aalphaBias, depthBias;
+ MCDFLOAT zoomX;
+ MCDFLOAT zoomY;
+
+ LONG indexShift;
+ LONG indexOffset;
+
+ BOOL mapColor;
+ BOOL mapStencil;
+} MCDPIXELTRANSFER;
+
+typedef struct _MCDPIXELPACK {
+ BOOL swapEndian;
+ BOOL lsbFirst;
+
+ LONG lineLength;
+ LONG skipLines;
+ LONG skipPixels;
+ LONG alignment;
+} MCDPIXELPACK;
+
+typedef struct _MCDPIXELUNPACK {
+ BOOL swapEndian;
+ BOOL lsbFirst;
+
+ LONG lineLength;
+ LONG skipLines;
+ LONG skipPixels;
+ LONG alignment;
+} MCDPIXELUNPACK;
+
+typedef struct _MCDPIXELSTATE {
+ MCDPIXELTRANSFER pixelTransferModes;
+ MCDPIXELPACK pixelPackModes;
+ MCDPIXELUNPACK pixelUnpackModes;
+ ULONG readBuffer;
+ MCDCOORD rasterPos;
+} MCDPIXELSTATE;
+
+typedef struct _MCDSTATE_PIXEL {
+ ULONG state; // must be MCD_PIXEL_STATE
+ ULONG size; // must be sizeof(MCDSTATE_PIXEL)
+ MCDPIXELSTATE pixelState;
+} MCDSTATE_PIXEL;
+
+typedef struct _MCDSTATE_SCISSOR_RECT {
+ ULONG state; // must be MCD_SCISSOR_RECT_STATE
+ ULONG size; // must be sizeof(MCDSTATE_SCISSOR_RECT)
+ RECTL scissorRect;
+} MCDSTATE_SCISSOR_RECT;
+
+typedef struct _MCDVIEWPORT {
+ MCDFLOAT xScale, xCenter;
+ MCDFLOAT yScale, yCenter;
+ MCDFLOAT zScale, zCenter;
+} MCDVIEWPORT;
+
+//
+// MCD surface flags:
+//
+// MCDSURFACE_HWND Currently must be set.
+
+#define MCDSURFACE_HWND 0x00000001
+
+typedef struct _MCDSURFACE {
+ MCDWINDOW *pWnd; // Region support
+ SURFOBJ *pso;
+ WNDOBJ *pwo;
+ ULONG reserved[4];
+ ULONG surfaceFlags;
+} MCDSURFACE;
+
+#define MCDSPAN_FRONT 1
+#define MCDSPAN_BACK 2
+#define MCDSPAN_DEPTH 3
+
+typedef struct _MCDSPAN {
+ LONG x;
+ LONG y;
+ LONG numPixels;
+ ULONG type;
+ VOID *pPixels;
+} MCDSPAN;
+
+//
+// MCDBUF.bufFlags flags:
+//
+// MCDBUF_ENABLED If set, direct buffer access is enabled (i.e., the
+// bufOffset and bufStride values are valid and may
+// be used to access the buffer).
+//
+// MCDBUF_NOCLIP If set, indicates that clipping is not required
+// for the current state of the window.
+//
+
+#define MCDBUF_ENABLED 0x00000001
+#define MCDBUF_NOCLIP 0x00000002
+
+typedef struct _MCDBUF {
+ ULONG bufFlags;
+ LONG bufOffset; // offset relative to beginning of framebuffer
+ LONG bufStride;
+} MCDBUF;
+
+typedef struct _MCDBUFFERS {
+ MCDBUF mcdFrontBuf;
+ MCDBUF mcdBackBuf;
+ MCDBUF mcdDepthBuf;
+} MCDBUFFERS;
+
+//
+// MCDrvSwap flags
+//
+
+#define MCDSWAP_MAIN_PLANE 0x00000001
+#define MCDSWAP_OVERLAY1 0x00000002
+#define MCDSWAP_OVERLAY2 0x00000004
+#define MCDSWAP_OVERLAY3 0x00000008
+#define MCDSWAP_OVERLAY4 0x00000010
+#define MCDSWAP_OVERLAY5 0x00000020
+#define MCDSWAP_OVERLAY6 0x00000040
+#define MCDSWAP_OVERLAY7 0x00000080
+#define MCDSWAP_OVERLAY8 0x00000100
+#define MCDSWAP_OVERLAY9 0x00000200
+#define MCDSWAP_OVERLAY10 0x00000400
+#define MCDSWAP_OVERLAY11 0x00000800
+#define MCDSWAP_OVERLAY12 0x00001000
+#define MCDSWAP_OVERLAY13 0x00002000
+#define MCDSWAP_OVERLAY14 0x00004000
+#define MCDSWAP_OVERLAY15 0x00008000
+#define MCDSWAP_UNDERLAY1 0x00010000
+#define MCDSWAP_UNDERLAY2 0x00020000
+#define MCDSWAP_UNDERLAY3 0x00040000
+#define MCDSWAP_UNDERLAY4 0x00080000
+#define MCDSWAP_UNDERLAY5 0x00100000
+#define MCDSWAP_UNDERLAY6 0x00200000
+#define MCDSWAP_UNDERLAY7 0x00400000
+#define MCDSWAP_UNDERLAY8 0x00800000
+#define MCDSWAP_UNDERLAY9 0x01000000
+#define MCDSWAP_UNDERLAY10 0x02000000
+#define MCDSWAP_UNDERLAY11 0x04000000
+#define MCDSWAP_UNDERLAY12 0x08000000
+#define MCDSWAP_UNDERLAY13 0x10000000
+#define MCDSWAP_UNDERLAY14 0x20000000
+#define MCDSWAP_UNDERLAY15 0x40000000
+
+// MCDDRIVER structure containing driver functions
+
+typedef LONG (*MCDRVDESCRIBEPIXELFORMATFUNC)(MCDSURFACE *pMCDSurface, LONG iPixelFormat,
+ ULONG nBytes, MCDPIXELFORMAT *pMCDPixelFmt, ULONG flags);
+typedef BOOL (*MCDRVDESCRIBELAYERPLANEFUNC)(MCDSURFACE *pMCDSurface, LONG iPixelFormat,
+ LONG iLayerPlane, ULONG nBytes, MCDLAYERPLANE *pMCDLayerPlane,
+ ULONG flags);
+typedef LONG (*MCDRVSETLAYERPALETTEFUNC)(MCDSURFACE *pMCDSurface, LONG iLayerPlane, BOOL bRealize, LONG cEntries, COLORREF *pcr);
+typedef BOOL (*MCDRVINFOFUNC)(MCDSURFACE *pMCDSurface, MCDDRIVERINFO *pMCDDriverInfo);
+typedef ULONG (*MCDRVCREATECONTEXTFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDRCINFO *pDrvRcInfo);
+typedef ULONG (*MCDRVDELETECONTEXTFUNC)(MCDRC *pRc, DHPDEV dhpdev);
+typedef ULONG (*MCDRVCREATETEXTUREFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDTEXTURE *pTex);
+typedef ULONG (*MCDRVUPDATESUBTEXTUREFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDTEXTURE *pTex,
+ ULONG lod, RECTL *pRect);
+typedef ULONG (*MCDRVUPDATETEXTUREPALETTEFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDTEXTURE *pTex,
+ ULONG start, ULONG numEntries);
+typedef ULONG (*MCDRVUPDATETEXTUREPRIORITYFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDTEXTURE *pTex);
+typedef ULONG (*MCDRVUPDATETEXTURESTATEFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDTEXTURE *pTex);
+typedef ULONG (*MCDRVTEXTURESTATUSFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDTEXTURE *pTex);
+typedef ULONG (*MCDRVDELETETEXTUREFUNC)(MCDTEXTURE *pTex, DHPDEV dhpdev);
+typedef ULONG (*MCDRVCREATEMEMFUNC)(MCDSURFACE *pMCDSurface, MCDMEM *pMCDMem);
+typedef ULONG (*MCDRVDELETEMEMFUNC)(MCDMEM *pMCDMem, DHPDEV dhpdev);
+typedef ULONG (*MCDRVDRAWFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDMEM *prxExecMem, UCHAR *pStart, UCHAR *pEnd);
+typedef ULONG (*MCDRVCLEARFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, ULONG buffers);
+typedef ULONG (*MCDRVSWAPFUNC)(MCDSURFACE *pMCDSurface, ULONG flags);
+typedef ULONG (*MCDRVSTATEFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDMEM *pMCDMem,
+ UCHAR *pStart, LONG length, ULONG numStates);
+typedef ULONG (*MCDRVVIEWPORTFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDVIEWPORT *pMCDViewport);
+typedef HDEV (*MCDRVGETHDEVFUNC)(MCDSURFACE *pMCDSurface);
+typedef ULONG (*MCDRVSPANFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDMEM *pMCDMem,
+ MCDSPAN *pMCDSpan, BOOL bRead);
+typedef VOID (*MCDRVTRACKWINDOWFUNC)(WNDOBJ *pWndObj, MCDWINDOW *pMCDWnd, ULONG flags);
+typedef ULONG (*MCDRVGETBUFFERSFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc, MCDBUFFERS *pMCDBuffers);
+typedef ULONG (*MCDRVALLOCBUFFERSFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc);
+typedef ULONG (*MCDRVBINDCONTEXTFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc);
+typedef ULONG (*MCDRVSYNCFUNC)(MCDSURFACE *pMCDSurface, MCDRC *pRc);
+typedef ULONG (*MCDRVDRAWPIXELS)(MCDSURFACE *pMcdSurface, MCDRC *pRc,
+ ULONG width, ULONG height, ULONG format,
+ ULONG type, VOID *pPixels, BOOL packed);
+typedef ULONG (*MCDRVREADPIXELS)(MCDSURFACE *pMcdSurface, MCDRC *pRc,
+ LONG x, LONG y, ULONG width, ULONG height, ULONG format,
+ ULONG type, VOID *pPixels);
+typedef ULONG (*MCDRVCOPYPIXELS)(MCDSURFACE *pMcdSurface, MCDRC *pRc,
+ LONG x, LONG y, ULONG width, ULONG height, ULONG type);
+typedef ULONG (*MCDRVPIXELMAP)(MCDSURFACE *pMcdSurface, MCDRC *pRc,
+ ULONG mapType, ULONG mapSize, VOID *pMap);
+
+typedef struct _MCDDRIVER {
+ ULONG ulSize;
+ MCDRVDESCRIBEPIXELFORMATFUNC pMCDrvDescribePixelFormat;
+ MCDRVDESCRIBELAYERPLANEFUNC pMCDrvDescribeLayerPlane;
+ MCDRVSETLAYERPALETTEFUNC pMCDrvSetLayerPalette;
+ MCDRVINFOFUNC pMCDrvInfo;
+ MCDRVCREATECONTEXTFUNC pMCDrvCreateContext;
+ MCDRVDELETECONTEXTFUNC pMCDrvDeleteContext;
+ MCDRVBINDCONTEXTFUNC pMCDrvBindContext;
+ MCDRVCREATETEXTUREFUNC pMCDrvCreateTexture;
+ MCDRVDELETETEXTUREFUNC pMCDrvDeleteTexture;
+ MCDRVUPDATESUBTEXTUREFUNC pMCDrvUpdateSubTexture;
+ MCDRVUPDATETEXTUREPALETTEFUNC pMCDrvUpdateTexturePalette;
+ MCDRVUPDATETEXTUREPRIORITYFUNC pMCDrvUpdateTexturePriority;
+ MCDRVUPDATETEXTURESTATEFUNC pMCDrvUpdateTextureState;
+ MCDRVTEXTURESTATUSFUNC pMCDrvTextureStatus;
+ MCDRVCREATEMEMFUNC pMCDrvCreateMem;
+ MCDRVDELETEMEMFUNC pMCDrvDeleteMem;
+ MCDRVDRAWFUNC pMCDrvDraw;
+ MCDRVCLEARFUNC pMCDrvClear;
+ MCDRVSWAPFUNC pMCDrvSwap;
+ MCDRVSTATEFUNC pMCDrvState;
+ MCDRVVIEWPORTFUNC pMCDrvViewport;
+ MCDRVGETHDEVFUNC pMCDrvGetHdev;
+ MCDRVSPANFUNC pMCDrvSpan;
+ MCDRVTRACKWINDOWFUNC pMCDrvTrackWindow;
+ MCDRVALLOCBUFFERSFUNC pMCDrvAllocBuffers;
+ MCDRVGETBUFFERSFUNC pMCDrvGetBuffers;
+ MCDRVSYNCFUNC pMCDrvSync;
+ MCDRVDRAWPIXELS pMCDrvDrawPixels;
+ MCDRVREADPIXELS pMCDrvReadPixels;
+ MCDRVCOPYPIXELS pMCDrvCopyPixels;
+ MCDRVPIXELMAP pMCDrvPixelMap;
+} MCDDRIVER;
+
+
+//
+// Clip codes:
+//
+
+#define MCD_CLIP_LEFT 0x00000001
+#define MCD_CLIP_RIGHT 0x00000002
+#define MCD_CLIP_BOTTOM 0x00000004
+#define MCD_CLIP_TOP 0x00000008
+#define MCD_CLIP_NEAR 0x00000010
+#define MCD_CLIP_FAR 0x00000020
+#define MCD_CLIP_MASK 0x0000003f
+
+//
+// Vertex flags:
+//
+
+#define MCDVERTEX_EDGEFLAG 0x00000001
+#define MCDVERTEX_FRONTFACE 0
+#define MCDVERTEX_BACKFACE 1
+
+//
+// Note: vertex colors are scaled to the color depths reported in the
+// pixel format.
+//
+
+typedef struct _MCDVERTEX {
+
+ ULONG flags; // vertex flags
+ MCDCOLOR *pColor; // pointer to active vertex color
+ ULONG clipCode; // clip code
+ MCDFLOAT fog; // fog value (0..1)
+ MCDCOORD clipCoord; // clip-space coordinate
+ MCDCOORD windowCoord; // window coordinate
+ MCDCOORD texCoord; // texture coordinate
+ MCDCOORD normal; // vertex normal
+ MCDCOLOR colors[2]; // front and back vertex colors
+ MCDCOORD eyeCoord; // eye coordinate
+} MCDVERTEX;
+
+typedef struct _MCDCOMMAND MCDCOMMAND;
+
+#define MCDCOMMAND_RESET_STIPPLE 0x00004000
+#define MCDCOMMAND_RENDER_PRIMITIVE 0x00008000
+#define MCDCOMMAND_SAME_COLOR 0x00040000
+
+typedef struct _MCDCOMMAND {
+ ULONG flags; // flags for this command
+ MCDVERTEX *pEndVertex;
+ ULONG reserved2;
+ ULONG reserved3;
+ ULONG reserved4;
+ ULONG reserved5;
+ MCDVERTEX *pStartVertex;
+ ULONG reserved7;
+ ULONG reserved8;
+ ULONG reserved9;
+ ULONG reserved10;
+ ULONG reserved11;
+ ULONG reserved12;
+ ULONG reserved13;
+ ULONG reserved14;
+ ULONG command; // primitive type or command (GL_TRIANGLES, etc.)
+ ULONG clipCodes;
+ ULONG reserved17;
+ ULONG reserved18;
+ MCDCOMMAND *pNextCmd;
+ ULONG numIndices;
+ UCHAR *pIndices;
+ ULONG reserved22;
+ ULONG textureKey;
+} MCDCOMMAND;
+
+
+// Top-level (global) driver function established at DLL initialization time
+// through MCDEngInit(). All other driver functions are obtained through the
+// MCDrvGetEntryPoints funtion:
+
+typedef BOOL (*MCDRVGETENTRYPOINTSFUNC)(MCDSURFACE *pMCDSurface, MCDDRIVER *pMCDDriver);
+
+// MCD Server engine functions:
+
+#define MCDENGINITFUNCNAME "MCDEngInit"
+#define MCDENGESCFILTERNAME "MCDEngEscFilter"
+#define MCDENGSETMEMSTATUSNAME "MCDEngSetMemStatus"
+
+typedef BOOL (WINAPI *MCDENGINITFUNC)(SURFOBJ *pso,
+ MCDRVGETENTRYPOINTSFUNC);
+
+typedef BOOL (WINAPI *MCDENGESCFILTERFUNC)(SURFOBJ *pso, ULONG iEsc,
+ ULONG cjIn, VOID *pvIn,
+ ULONG cjOut, VOID *pvOut,
+ ULONG *pRetVal);
+
+typedef BOOL (WINAPI *MCDENGSETMEMSTATUSFUNC)(MCDMEM *pMCDMem, ULONG status);
+
+#endif
diff --git a/public/oak/inc/modhdr.c b/public/oak/inc/modhdr.c
new file mode 100644
index 000000000..c2b1864a7
--- /dev/null
+++ b/public/oak/inc/modhdr.c
@@ -0,0 +1,34 @@
+/*++
+
+Copyright (c) 1992 Microsoft Corporation
+
+Module Name:
+
+ name-of-module-filename
+
+Abstract:
+
+ Abstract-for-module.
+
+Author:
+
+ name-of-author (email-name) creation-date-dd-Mmm-yyyy
+
+[Environment:]
+
+ optional-environment-info (e.g. kernel mode only...)
+
+[Notes:]
+
+ optional-notes
+
+Revision History:
+
+ most-recent-revision-date email-name
+ description
+ .
+ .
+ least-recent-revision-date email-name
+ description
+
+--*/
diff --git a/public/oak/inc/prochdr.c b/public/oak/inc/prochdr.c
new file mode 100644
index 000000000..60206f799
--- /dev/null
+++ b/public/oak/inc/prochdr.c
@@ -0,0 +1,30 @@
+
+return-type
+procedure-name(
+ direction type-name argument-name,
+ direction type-name argument-name...
+ )
+
+/*++
+
+Routine Description:
+
+ description-of-function.
+
+Arguments:
+
+ argument-name - Supplies | Returns description of argument.
+ .
+ .
+
+Return Value:
+
+ return-value - Description of conditions needed to return value. - or -
+ None.
+
+--*/
+
+{
+
+
+}
diff --git a/public/oak/inc/rx.h b/public/oak/inc/rx.h
new file mode 100644
index 000000000..10f097ad4
--- /dev/null
+++ b/public/oak/inc/rx.h
@@ -0,0 +1,684 @@
+/*
+
+Copyright (c) 1994, 1995, Microsoft Corporation
+
+Module Name:
+
+ rx.h
+
+Abstract:
+
+ Defines and types for 3D DDI Extension Interface.
+
+ If WINDDI.H is to be included, it must be included before this
+ file (applies to NT only).
+
+*/
+
+#ifndef _RX_
+#define _RX_
+
+#define RX_VERSION_MAJOR 1
+#define RX_VERSION_MINOR 0
+
+/* Escape through which all 3D DDI functionality is accessed */
+
+#ifndef RXFUNCS
+#define RXFUNCS 3076
+#endif
+
+/* 3D DDI command identifiers */
+
+#define RXCMD_ALLOC_TEXTURE 1
+#define RXCMD_CREATE_CONTEXT 2
+#define RXCMD_DELETE_RESOURCE 3
+#define RXCMD_DRAW_PRIM 4
+#define RXCMD_ENABLE_BUFFERS 5
+#define RXCMD_FILL_RECT 6
+#define RXCMD_FLUSH 7
+#define RXCMD_GET_INFO 8
+#define RXCMD_LOAD_TEXTURE 9
+#define RXCMD_MAP_MEM 10
+#define RXCMD_POLY_DRAW_SPAN 11
+#define RXCMD_QUERY_TEXTURE_MEMORY 12
+#define RXCMD_READ_RECT 13
+#define RXCMD_SET_STATE 14
+#define RXCMD_SWAP_BUFFERS 15
+#define RXCMD_TEXTURE_HEAP 16
+#define RXCMD_WRITE_RECT 17
+
+
+/* 3D DDI structures and type definitions */
+
+typedef LONG LONGFIX;
+typedef LONG RXREAL;
+typedef HANDLE RXHANDLE;
+
+typedef struct _RXCAPS {
+ ULONG miscCaps;
+ ULONG rasterCaps;
+ ULONG zCmpCaps;
+ ULONG srcBlendCaps;
+ ULONG dstBlendCaps;
+ ULONG alphaCmpCaps;
+ ULONG shadeCaps;
+ ULONG texCaps;
+ ULONG texFilterCaps;
+ ULONG texBlendCaps;
+ ULONG texMaxWidth;
+ ULONG texMaxHeight;
+ ULONG texMinWidth;
+ ULONG texMinHeight;
+ ULONG texMaxBorder;
+ ULONG rasterCalcType;
+ ULONG fractionalRasterBits;
+} RXCAPS;
+
+typedef struct _RXCOLOR {
+ UCHAR r;
+ UCHAR g;
+ UCHAR b;
+ UCHAR a;
+ UCHAR f;
+ UCHAR fr;
+ UCHAR fg;
+ UCHAR fb;
+} RXCOLOR;
+
+typedef struct _RXCOLORREF {
+ RXREAL r;
+ RXREAL g;
+ RXREAL b;
+} RXCOLORREF;
+
+typedef struct _RXCOLORREFA {
+ RXREAL r;
+ RXREAL g;
+ RXREAL b;
+ RXREAL a;
+} RXCOLORREFA;
+
+typedef struct _RXCOLORREFAF {
+ RXREAL r;
+ RXREAL g;
+ RXREAL b;
+ RXREAL a;
+ RXREAL f;
+} RXCOLORREFAF;
+
+typedef struct _RXGLOBALINFO {
+ ULONG verMajor;
+ ULONG verMinor;
+ ULONG verDriver;
+ UCHAR idStr[200];
+} RXGLOBALINFO;
+
+typedef struct _RXHDR {
+ ULONG flags;
+ RXHANDLE hrxRC;
+ RXHANDLE hrxSharedMem;
+ VOID *pSharedMem;
+ ULONG sharedMemSize;
+ ULONG reserved1;
+ ULONG reserved2;
+ ULONG reserved3;
+} RXHDR;
+
+/* Only NT defines WNDOBJ, and it does it in WINDDI.H, which 3D DDI
+ clients will not include, so compile this structure only if
+ WINDDI.H has been included */
+#if defined(_WINDDI_)
+
+typedef struct _RXHDR_NTPRIVATE {
+ WNDOBJ *pwo;
+ VOID *pBuffer;
+ ULONG bufferSize;
+} RXHDR_NTPRIVATE;
+
+#endif
+
+typedef struct _RXLINEPAT {
+ USHORT repFactor;
+ USHORT linePattern;
+} RXLINEPAT;
+
+typedef struct _RXPOINT {
+ RXREAL x;
+ RXREAL y;
+} RXPOINT;
+
+typedef struct _RXPOINTINT {
+ LONG x;
+ LONG y;
+} RXPOINTINT;
+
+typedef struct _RXPOINTZ {
+ RXREAL x;
+ RXREAL y;
+ ULONG z;
+} RXPOINTZ;
+
+typedef struct _RXPOINTZTEX {
+ RXREAL x;
+ RXREAL y;
+ ULONG z;
+ RXREAL w;
+ RXREAL s;
+ RXREAL t;
+} RXPOINTZTEX;
+
+typedef struct _RXRECT {
+ LONG x;
+ LONG y;
+ ULONG width;
+ ULONG height;
+} RXRECT;
+
+typedef struct _RXSHAREMEM {
+ ULONG sourceProcessID;
+ HANDLE hSource;
+ ULONG offset;
+ ULONG size;
+ ULONG clientBaseAddress;
+} RXSHAREMEM;
+
+typedef struct _RXSPAN {
+ SHORT x;
+ SHORT y;
+ USHORT flags;
+ USHORT count;
+} RXSPAN;
+
+typedef struct _RXSTIPPLE {
+ ULONG stipple[32];
+} RXSTIPPLE;
+
+typedef struct _RXSURFACEINFO {
+ ULONG flags;
+ ULONG colorBytesPerPixel;
+ ULONG rDepth;
+ ULONG gDepth;
+ ULONG bDepth;
+ ULONG aDepth;
+ ULONG rBitShift;
+ ULONG gBitShift;
+ ULONG bBitShift;
+ ULONG aBitShift;
+ ULONG colorPitch;
+ ULONG zDepth;
+ ULONG zBytesPerPixel;
+ ULONG zBitShift;
+ ULONG zPitch;
+ ULONG ditherPaletteOrigin;
+ ULONG totalTextureMemory;
+ ULONG perTextureTexmemOverhead;
+ ULONG perMipmapTexmemOverhead;
+} RXSURFACEINFO;
+
+typedef struct _RXTEX {
+ RXREAL w;
+ RXREAL s;
+ RXREAL t;
+} RXTEX;
+
+typedef struct _RXTEXMEMSTATS {
+ ULONG totalSystemTextureMemory;
+ ULONG freeSystemTextureMemory;
+ ULONG totalHeapTextureMemory;
+ ULONG freeHeapTextureMemory;
+} RXTEXMEMSTATS;
+
+typedef struct _RXTEXTURE {
+ ULONG driverPrivate;
+ ULONG deviceFormatSize;
+ ULONG width;
+ ULONG height;
+ ULONG border;
+ ULONG texelFormat;
+ ULONG texels[1];
+} RXTEXTURE;
+
+typedef struct _RXZTEX {
+ ULONG z;
+ RXREAL w;
+ RXREAL s;
+ RXREAL t;
+} RXZTEX;
+
+/* 3D DDI command structures */
+
+typedef struct _RXALLOCTEXTURE {
+ ULONG command;
+ ULONG flags;
+ RXHANDLE hrxTextureHeap;
+ ULONG numTextures;
+ RXHANDLE hrxSharedMem;
+} RXALLOCTEXTURE;
+
+typedef struct _RXCREATECONTEXT {
+ ULONG command;
+ ULONG hwnd;
+ ULONG flags;
+} RXCREATECONTEXT;
+
+typedef struct _RXDELETERESOURCE {
+ ULONG command;
+ RXHANDLE hrxResource;
+} RXDELETERESOURCE;
+
+typedef struct _RXDRAWPRIM {
+ ULONG command;
+ ULONG primType;
+ ULONG numVertices;
+ RXHANDLE hrxSharedMemVertexData;
+ RXHANDLE hrxSharedMemVertexPtr;
+ VOID *pSharedMem;
+} RXDRAWPRIM;
+
+typedef struct _RXENABLEBUFFERS {
+ ULONG command;
+ ULONG buffers;
+} RXENABLEBUFFERS;
+
+typedef struct _RXFILLRECT {
+ ULONG command;
+ ULONG fillType;
+ RXRECT fillRect;
+} RXFILLRECT;
+
+typedef struct _RXGETINFO {
+ ULONG command;
+ ULONG infoType;
+ ULONG flags;
+ ULONG height;
+ ULONG width;
+ ULONG bitsPerPixel;
+ ULONG refreshRate;
+} RXGETINFO;
+
+typedef struct _RXLOADTEXTURE {
+ ULONG command;
+ ULONG numTextures;
+ ULONG numColorComponents;
+ ULONG flags;
+ RXHANDLE hrxTextureMem;
+ RXHANDLE hrxSharedMem;
+} RXLOADTEXTURE;
+
+typedef struct _RXMAPMEM {
+ ULONG command;
+ ULONG action;
+ RXHANDLE hrxSharedMem;
+ RXSHAREMEM shareMem;
+} RXMAPMEM;
+
+typedef struct _RXPOLYDRAWSPAN {
+ ULONG command;
+ ULONG numSpans;
+ RXHANDLE hrxSharedMem;
+ VOID *pSharedMem;
+} RXPOLYDRAWSPAN;
+
+typedef struct _RXQUERYTEXTUREMEMORY {
+ ULONG command;
+ RXHANDLE hrxTextureHeap;
+} RXQUERYTEXTUREMEMORY;
+
+typedef struct _RXREADRECT {
+ ULONG command;
+ ULONG sourceX;
+ ULONG sourceY;
+ RXRECT destRect;
+ ULONG sourceBuffer;
+ RXHANDLE hrxSharedMem;
+ VOID *pSharedMem;
+ LONG sharedPitch;
+} RXREADRECT;
+
+typedef struct _RXSETSTATE {
+ ULONG command;
+ ULONG stateToChange;
+ ULONG newState[1];
+} RXSETSTATE;
+
+typedef struct _RXSWAPBUFFERS {
+ ULONG command;
+ ULONG flags;
+} RXSWAPBUFFERS;
+
+typedef struct _RXTEXTUREHEAP {
+ ULONG command;
+ ULONG action;
+ ULONG size;
+ RXHANDLE hrxTextureHeap;
+} RXTEXTUREHEAP;
+
+typedef struct _RXWRITERECT {
+ ULONG command;
+ ULONG sourceX;
+ ULONG sourceY;
+ RXRECT destRect;
+ ULONG destBuffer;
+ RXHANDLE hrxSharedMem;
+ VOID *pSharedMem;
+ LONG sharedPitch;
+} RXWRITERECT;
+
+/* Basic 3D DDI command header. There is an
+ extended version of this structure for
+ each 3D DDI command */
+
+typedef struct _RXCMD {
+ ULONG command;
+} RXCMD;
+
+
+/* RXHDR flags */
+
+#define RX_FL_CREATE_CONTEXT 0x0001
+#define RX_FL_MAP_MEM 0x0002
+#define RX_NO_CLIPPING_NEEDED 0x0004
+
+#define RX_FRONT_LEFT 0x0001
+#define RX_BACK_LEFT 0x0002
+
+#define RX_READ_RECT_FRONT_LEFT 1
+#define RX_READ_RECT_BACK_LEFT 2
+#define RX_READ_RECT_Z 3
+
+#define RX_WRITE_RECT_PIX 1
+#define RX_WRITE_RECT_Z 2
+
+#define RX_FLAT 1
+#define RX_SMOOTH 2
+#define RX_SOLID 3
+
+#define RX_SPAN_HORIZONTAL 1
+#define RX_SPAN_VERTICAL 2
+
+/* flags in RXCMD_CREATE_CONTEXT */
+
+#define RX_FLOAT_COORDS 0x0001
+#define RX_COLOR_INDEXED 0x0002
+
+/* RX_ENABLE_BUFFERS flags */
+
+#define RX_ENABLE_Z_BUFFER 0x0001
+#define RX_ENABLE_BACK_LEFT_BUFFER 0x0100
+
+#define RX_CLEAR_ON_SWAP 0x0001
+
+/* stateToChange in RXCMD_SET_STATE */
+
+#define RX_LINE_PATTERN 1
+#define RX_STIPPLE_PATTERN 2
+#define RX_ROP2 3
+#define RX_SPAN_TYPE 4
+#define RX_ACTIVE_BUFFER 5
+#define RX_PLANE_MASK 6
+#define RX_Z_WRITE_ENABLE 7
+#define RX_Z_ENABLE 8
+#define RX_ALPHA_TEST_ENABLE 9
+#define RX_LAST_PIXEL 10
+#define RX_TEX_MAG 11
+#define RX_TEX_MIN 12
+#define RX_SRC_BLEND 13
+#define RX_DST_BLEND 14
+#define RX_TEX_MAP_BLEND 15
+#define RX_CULL_MODE 16
+#define RX_SPAN_DIRECTION 17
+#define RX_Z_FUNC 18
+#define RX_ALPHA_REF 19
+#define RX_ALPHA_FUNC 20
+#define RX_DITHER_ENABLE 21
+#define RX_BLEND_ENABLE 22
+#define RX_TEXTURE 23
+#define RX_FILL_COLOR 24
+#define RX_FILL_Z 25
+#define RX_SOLID_COLOR 26
+#define RX_SCISSORS_ENABLE 27
+#define RX_SCISSORS_RECT 28
+#define RX_MASK_START 29
+#define RX_SHADE_MODE 30
+#define RX_VERTEX_TYPE 31
+#define RX_TEXTURE_PERSPECTIVE 32
+#define RX_TEX_TRANSP_ENABLE 33
+#define RX_TEX_TRANSP_COLOR 34
+#define RX_DITHER_ORIGIN 35
+#define RX_FOG_MODE 36
+#define RX_FOG_COLOR 37
+#define RX_VERTEX_COLOR_TYPE 38
+#define RX_SPAN_COLOR_TYPE 39
+#define RX_PRIMLIST_SKIP 40
+#define RX_PRIMSTRIP_SKIP 41
+
+#define RX_FILL_RECT_COLOR 0x0001
+#define RX_FILL_RECT_Z 0x0002
+
+/* RX_FOG_MODE settings */
+
+#define RX_FOG_DISABLE 0x0001
+#define RX_FOG_NORMAL 0x0002
+#define RX_FOG_CONSTANT 0x0004
+
+/* Comparison functions. Test passes if new pixel value meets the */
+/* specified condition with the current pixel value. */
+
+#define RX_CMP_NEVER 0x0001
+#define RX_CMP_LESS 0x0002
+#define RX_CMP_EQUAL 0x0004
+#define RX_CMP_LEQUAL 0x0008
+#define RX_CMP_GREATER 0x0010
+#define RX_CMP_NOTEQUAL 0x0020
+#define RX_CMP_GEQUAL 0x0040
+#define RX_CMP_ALWAYS 0x0080
+#define RX_CMP_ALLGL 0x00ff
+
+/* RXCAPS miscCaps */
+
+#define RX_MASK_MSB 0x0001
+#define RX_MASK_LSB 0x0002
+#define RX_MASK_PLANES 0x0004
+#define RX_MASK_Z 0x0008
+#define RX_LINE_PATTERN_REP 0x0010
+#define RX_CULL 0x0020
+#define RX_HORIZONTAL_SPANS 0x0040
+#define RX_VERTICAL_SPANS 0x0080
+
+/* Blending flags */
+
+#define RX_BLEND_ZERO 0x0001
+#define RX_BLEND_ONE 0x0002
+#define RX_BLEND_SRC_COLOR 0x0004
+#define RX_BLEND_INV_SRC_COLOR 0x0008
+#define RX_BLEND_SRC_ALPHA 0x0010
+#define RX_BLEND_INV_SRC_ALPHA 0x0020
+#define RX_BLEND_DST_ALPHA 0x0040
+#define RX_BLEND_INV_DST_ALPHA 0x0080
+#define RX_BLEND_DST_COLOR 0x0100
+#define RX_BLEND_INV_DST_COLOR 0x0200
+#define RX_BLEND_SRC_ALPHA_SAT 0x0400
+#define RX_BLEND_BOTH_SRC_ALPHA 0x0800
+#define RX_BLEND_BOTH_INV_SRC_ALPHA 0x1000
+#define RX_BLEND_ALLGL 0x07ff
+
+/* RXCAPS shadeCaps */
+
+#define RX_SHADE_SMOOTH 0x0001
+#define RX_FLAT_ALPHA 0x0002
+#define RX_SMOOTH_ALPHA 0x0004
+#define RX_SOLID_ALPHA 0x0008
+#define RX_NORMAL_FOG 0x0010
+#define RX_CONSTANT_FOG 0x0020
+
+/* RXCAPS texCaps */
+
+#define RX_TEX_PERSPECTIVE 0x0001
+#define RX_TEX_POW2 0x0002
+#define RX_TEX_ALPHA 0x0004
+#define RX_TEX_TRANSPARENCY 0x0008
+#define RX_TEX_BORDER 0x0010
+#define RX_TEX_8888 0x0020
+#define RX_TEX_4444 0x0040
+#define RX_TEX_1555 0x0080
+#define RX_TEX_0565 0x0100
+#define RX_TEX_0332 0x0200
+
+/* Texture-mapping flags */
+
+#define RX_TEX_NEAREST 0x0001
+#define RX_TEX_LINEAR 0x0002
+#define RX_TEX_MIP_NEAREST 0x0004
+#define RX_TEX_MIP_LINEAR 0x0008
+#define RX_TEX_LINEAR_MIP_NEAREST 0x0010
+#define RX_TEX_LINEAR_MIP_LINEAR 0x0020
+
+/* Texture blending flags */
+
+#define RX_TEX_DECAL 0x0001
+#define RX_TEX_MODULATE 0x0002
+#define RX_TEX_DECAL_ALPHA 0x0004
+#define RX_TEX_MODULATE_ALPHA 0x0008
+#define RX_TEX_DECAL_MASK 0x0010
+#define RX_TEX_MODULATE_MASK 0x0020
+
+/* RXCAPS rasterCalcType values */
+
+#define RX_RASTER_FIXED 1
+#define RX_RASTER_ERROR_TERM 2
+#define RX_RASTER_OTHER 3
+
+/* RX_TEX_MAP_BLEND state values */
+
+#define RX_TEX_MAP_DECAL 1
+#define RX_TEX_MAP_MODULATE 2
+#define RX_TEX_MAP_DECAL_ALPHA 3
+#define RX_TEX_MAP_MODULATE_ALPHA 4
+#define RX_TEX_MAP_DECAL_MASK 5
+#define RX_TEX_MAP_MODULATE_MASK 6
+
+/* RXCAPS rasterCaps flags */
+
+#define RX_RASTER_DITHER 0x0001
+#define RX_RASTER_ROP2 0x0002
+#define RX_RASTER_XOR 0x0004
+#define RX_RASTER_PAT 0x0008
+#define RX_RASTER_SUBPIXEL 0x0010
+
+/* flags in RXSURFACEINFO */
+
+#define RX_SWAP_PRESERVE_BACK 0x0001
+#define RX_BACK_BUFFER 0x0002
+#define RX_MULTIBUFFER_WRITE 0x0004
+#define RX_SWAP_AND_CLEAR 0x0008
+#define RX_LINEAR_TEXMEM 0x0010
+#define RX_LINEAR_PLUS_K_TEXMEM 0x0020
+#define RX_LINEAR_MIPMEM 0x0040
+#define RX_LINEAR_PLUS_K_MIPMEM 0x0080
+#define RX_LINEAR_DWORD_PER_SCAN 0x0100
+#define RX_FLOAT_VALUES 0x0200
+#define RX_VERTEX_COLOR_RXREALS 0x0400
+
+/* RX_SPAN_TYPE state values */
+
+#define RX_SPAN_COLOR 1
+#define RX_SPAN_COLOR_Z 2
+#define RX_SPAN_COLOR_Z_TEX 3
+
+/* RX_CULL_MODE state values */
+
+#define RX_CULL_NONE 1
+#define RX_CULL_CW 2
+#define RX_CULL_CCW 3
+
+/* flags in RXSPAN */
+
+#define RX_SPAN_DELTA 0x0001
+#define RX_SPAN_MASK 0x0002
+
+/* flags for driverPrivate field in RXTEXTURE */
+
+#define RX_DONT_SET_DEVICE_FORMAT 0x0000
+#define RX_SET_DEVICE_FORMAT 0x0001
+#define RX_IN_DEVICE_FORMAT 0x0002
+#define RX_PRIVATE_DEVICE_FORMAT (~0x0003)
+
+/* flags in RXGETINFO */
+
+#define RX_QUERY_CURRENT_MODE 0x0001
+#define RX_MATCH_REFRESH 0x0002
+#define RX_GET_INFO_COLOR_INDEX 0x0004
+#define RX_FULLSCREEN_INFO 0x0008
+
+/* RXCMD_GET_INFO return values */
+
+#define RX_GET_INFO_INVALID_MODE 1
+#define RX_GET_INFO_CI_NOT_SUPPORTED 2
+#define RX_GET_INFO_RGBA_NOT_SUPPORTED 3
+#define RX_GET_INFO_CAP_NOT_SUPPORTED 4
+
+/* RXMAPMEM action field values */
+
+#define RX_CREATE_MEM_MAP 1
+#define RX_DELETE_MEM_MAP 2
+
+/* RXLOADTEXTURE flag values */
+
+#define RX_COMPRESS_LOSSY 1
+
+/* RXTEXTUREHEAP action field values */
+
+#define RX_CREATE_TEXTURE_HEAP 1
+#define RX_DELETE_TEXTURE_HEAP 2
+#define RX_CLEAR_TEXTURE_HEAP 3
+
+/* Primitive types for RXDRAWPRIM */
+
+#define RX_PRIM_LINESTRIP 1
+#define RX_PRIM_TRISTRIP 2
+#define RX_PRIM_QUADSTRIP 3
+#define RX_PRIM_LINELIST 4
+#define RX_PRIM_TRILIST 5
+#define RX_PRIM_QUADLIST 6
+#define RX_PRIM_INTLINESTRIP 7
+
+/* RX_VERTEX_TYPE state values */
+
+#define RX_POINT 1
+#define RX_POINTZ 2
+#define RX_POINTZTEX 3
+
+/* RX_SPAN_COLOR_TYPE state values */
+
+#define RX_SPAN_COLOR_RGB 1
+#define RX_SPAN_COLOR_RGBA 2
+#define RX_SPAN_COLOR_RGBAF 3
+
+/* RX_VERTEX_COLOR_TYPE state values */
+
+#define RX_VERTEX_COLOR_PACKED 1
+#define RX_VERTEX_COLOR_NONE 2
+#define RX_VERTEX_COLOR_RGB 3
+#define RX_VERTEX_COLOR_RGBA 4
+#define RX_VERTEX_COLOR_RGBAF 5
+
+/* Texture formats */
+
+#define RX_TEXTURE_8888 1
+#define RX_TEXTURE_4444 2
+#define RX_TEXTURE_1555 3
+#define RX_TEXTURE_0565 4
+#define RX_TEXTURE_0332 5
+
+/* RXGETINFO infoType field values */
+
+#define RX_INFO_GLOBAL_CAPS 1
+#define RX_INFO_SURFACE_CAPS 2
+#define RX_INFO_SPAN_CAPS 3
+#define RX_INFO_LINE_CAPS 4
+#define RX_INFO_TRIANGLE_CAPS 5
+#define RX_INFO_QUAD_CAPS 6
+#define RX_INFO_INTLINE_CAPS 7
+
+#endif // _RX_
+
diff --git a/public/oak/inc/vddp.h b/public/oak/inc/vddp.h
new file mode 100644
index 000000000..fa01c3b0e
--- /dev/null
+++ b/public/oak/inc/vddp.h
@@ -0,0 +1,111 @@
+//
+// This structure is in little endian format i.e. compatible with the
+// 386 byte addressing method.
+//
+
+//
+// The device data record for the Monitor peripheral.
+//
+
+typedef struct _CM_MONITOR_DESCRIPTION {
+
+ UCHAR VDDPVersion; // Structure version
+ UCHAR FileRevision; // Structure revision
+ USHORT Date[3]; // Structure date
+ // [0]=Year / [1]=month / [2]=day
+ ULONG Checksum; // Total Number of bytes in the file
+ // This should be chekced against:
+ // Checksum = sizeof(CM_MONITOR_DESCRIPTION) +
+ // NumberOperationalLimits * sizeof(CM_MONITOR_OPERATIONAL_LIMITS) +
+ // NumberPreadjustedTImings * sizeof(CM_MONITOR_PREADJUSTED_TIMING);
+
+
+ UCHAR Manufacturer[12]; // ASCII ID of the manufacturer
+ UCHAR ModelNumber[12]; // ASCII ID of the model
+ UCHAR Version[12]; // ASCCI ID of the model version
+ UCHAR SerialNumber[12]; // ASCII ID
+ USHORT DateManufactured[3]; // [0]=Year / [1]=month / [2]=day
+ USHORT RedPhosphoreDecay; // milliseconds
+ USHORT GreenPhosphoreDecay; // milliseconds
+ USHORT BluePhosphoreDecay; // milliseconds
+ UCHAR StartUpCompatibility[3]; // name of device compatible with
+ UCHAR MonitorType; // monochrome=0 / Color=1
+ UCHAR CRTSize; // inches
+ UCHAR BorderColorRed; // percentage of Red in border color
+ UCHAR BorderColorGreen; // percentage of Green in border color
+ UCHAR BorderColorBlue; // percentage of Blue in border color
+ USHORT WhiteChromaticityX; //
+ USHORT WhiteChromaticityY; //
+ USHORT WhiteChromaticityZ; //
+ USHORT RedChromaticityX; //
+ USHORT RedChromaticityY; //
+ USHORT GreenChromaticityX; //
+ USHORT GreenChromaticityY; //
+ USHORT BlueChromaticityX; //
+ USHORT BlueChromaticityY; //
+ USHORT WhiteGamma; //
+ USHORT RedGamma; //
+ USHORT GreenGamma; //
+ USHORT BlueGamma; //
+ USHORT NumberOperationalLimits; // number of operational limits
+ USHORT NumberPreadjustedTimings; // number of timings structures
+ USHORT Unused;
+
+} CM_MONITOR_DESCRIPTION, *PCM_MONITOR_DESCRIPTION;
+
+typedef struct _CM_MONITOR_OPERATIONAL_LIMITS {
+
+ ULONG MinimumHorizontalFrequency; // Hertz
+ ULONG MaximumHorizontalFrequency; // Hertz
+ ULONG MinimumVerticalFrequency; // milliHertz
+ ULONG MaximumVerticalFrequency; // milliHertz
+ ULONG MaximumPixelClock; // Hertz
+ USHORT MaximumHorizontalDots; // dots
+ USHORT MaximumVerticalLines; // lines
+ USHORT MinimumHorizontalRetrace; // nanoseconds
+ USHORT MinimumVerticalRetrace; // microseconds
+ USHORT HorizontalLineDimension; // millimeters
+ USHORT VerticalHeightDimension; // millimeters
+
+} CM_MONITOR_OPERATIONAL_LIMITS, *PCM_MONITOR_OPERATIONAL_LIMITS;
+
+typedef struct _CM_MONITOR_PREADJUSTED_TIMING {
+ UCHAR Version; // Should match the monitor description
+ UCHAR Revision; // version and revision values
+ UCHAR PreadjustedTimingName[12]; // ASCII ID of the Preadjusted timing
+ USHORT HorizontalResolution; // dots
+
+ USHORT VerticalResolution; // lines
+ UCHAR PixelWidthRatio; // used with PixelHeight to form ratio
+ UCHAR PixelHeightRatio; // gives H:V
+
+ ULONG HorizontalFrequency; // Hertz
+ ULONG VeriticalFrequency; // millihertz
+
+ USHORT VertivalActiveHeight; // millimeters
+ USHORT HorizontalActiveLineLength; // millimeters
+
+ UCHAR VideoType; // TTL=0 / analog=1 / ECL=2
+ UCHAR VideoLevel; // 0.7 Vp-p=0 / 1.0 Vp-p=1
+ UCHAR SyncType; // TTL=0 / analog=1 / ECL=2
+ UCHAR Unused;
+
+ UCHAR SyncConfiguration; // separate=0 / composite=1 / green=2
+ UCHAR ScanType; // noninterlaced=0 / interlaced=1
+ UCHAR HorizontalSyncPolarity; // negative=0 / positive=1
+ UCHAR VerticalSyncPolarity; // negative=0 / positive=1
+
+ ULONG HorizontalAcitve; // nanoseconds
+ ULONG VerticalActive; // microseconds
+
+ USHORT HorizontalRightBorder; // nanoseconds
+ USHORT HorizontalFrontPorch; // nanoseconds
+ USHORT HorizontalPulseWidth; // nanoseconds
+ USHORT HorizontalBackPorch; // nanoseconds
+ USHORT HorizontalLeftBorder; // nanoseconds
+ USHORT VerticalBottomBorder; // microseconds
+ USHORT VerticalFrontPorch; // microseconds
+ USHORT VerticalPulseWidth; // microseconds
+ USHORT VerticalBackPorch; // microseconds
+ USHORT VerticalTopBorder; // microseconds
+} CM_MONITOR_PREADJUSTED_TIMING, *PCM_MONITOR_PREADJUSTED_TIMING;
diff --git a/public/oak/inc/winddi.h b/public/oak/inc/winddi.h
new file mode 100644
index 000000000..a0f7db5b3
--- /dev/null
+++ b/public/oak/inc/winddi.h
@@ -0,0 +1,2539 @@
+/*++
+
+Copyright (c) 1985-1995, Microsoft Corporation
+
+Module Name:
+
+ winddi.h
+
+Abstract:
+
+ Private entry points, defines and types for Windows NT GDI device
+ driver interface.
+
+--*/
+
+#ifndef _WINDDI_
+#define _WINDDI_
+
+#include <ddrawint.h>
+
+//
+// drivers and other components that include this should NOT include
+// windows.h They should be system conponents that only use GDI internals
+// and therefore only include wingdi.h
+//
+
+typedef ptrdiff_t PTRDIFF;
+typedef PTRDIFF *PPTRDIFF;
+typedef LONG FIX;
+typedef FIX *PFIX;
+typedef ULONG ROP4;
+typedef ULONG MIX;
+
+typedef ULONG HGLYPH;
+typedef HGLYPH *PHGLYPH;
+#define HGLYPH_INVALID ((HGLYPH)-1)
+
+typedef ULONG IDENT;
+
+//
+// handles for font file and font context objects
+//
+
+typedef ULONG HFF;
+typedef ULONG HFC;
+#define HFF_INVALID ((HFF) 0)
+#define HFC_INVALID ((HFC) 0)
+
+#define FD_ERROR 0xFFFFFFFF
+#define DDI_ERROR 0xFFFFFFFF
+
+typedef struct _POINTE /* pte */
+{
+ FLOAT x;
+ FLOAT y;
+} POINTE, *PPOINTE;
+
+typedef union _FLOAT_LONG
+{
+ FLOAT e;
+ LONG l;
+} FLOAT_LONG, *PFLOAT_LONG;
+
+typedef struct _POINTFIX
+{
+ FIX x;
+ FIX y;
+} POINTFIX, *PPOINTFIX;
+
+typedef struct _RECTFX
+{
+ FIX xLeft;
+ FIX yTop;
+ FIX xRight;
+ FIX yBottom;
+} RECTFX, *PRECTFX;
+
+
+DECLARE_HANDLE(HBM);
+DECLARE_HANDLE(HDEV);
+DECLARE_HANDLE(HSURF);
+DECLARE_HANDLE(DHSURF);
+DECLARE_HANDLE(DHPDEV);
+DECLARE_HANDLE(HDRVOBJ);
+
+#define LTOFX(x) ((x)<<4)
+
+#define FXTOL(x) ((x)>>4)
+#define FXTOLFLOOR(x) ((x)>>4)
+#define FXTOLCEILING(x) ((x + 0x0F)>>4)
+#define FXTOLROUND(x) ((((x) >> 3) + 1) >> 1)
+
+// context information
+
+typedef struct _FD_XFORM {
+ FLOAT eXX;
+ FLOAT eXY;
+ FLOAT eYX;
+ FLOAT eYY;
+} FD_XFORM, *PFD_XFORM;
+
+
+
+typedef struct _FD_DEVICEMETRICS { // devm
+ FLONG flRealizedType;
+ POINTE pteBase;
+ POINTE pteSide;
+ LONG lD;
+ FIX fxMaxAscender;
+ FIX fxMaxDescender;
+ POINTL ptlUnderline1;
+ POINTL ptlStrikeOut;
+ POINTL ptlULThickness;
+ POINTL ptlSOThickness;
+ ULONG cxMax; // max pel width of bitmaps
+
+// the fields formerly in REALIZE_EXTRA as well as some new fields:
+
+ ULONG cyMax; // did not use to be here
+ ULONG cjGlyphMax; // (cxMax + 7)/8 * cyMax, or at least it should be
+
+ FD_XFORM fdxQuantized;
+ LONG lNonLinearExtLeading;
+ LONG lNonLinearIntLeading;
+ LONG lNonLinearMaxCharWidth;
+ LONG lNonLinearAvgCharWidth;
+
+// some new fields
+
+ LONG lMinA;
+ LONG lMinC;
+ LONG lMinD;
+
+ LONG alReserved[1]; // just in case we need it.
+
+} FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;
+
+typedef struct _LIGATURE { /* lig */
+ ULONG culSize;
+ LPWSTR pwsz;
+ ULONG chglyph;
+ HGLYPH ahglyph[1];
+} LIGATURE, *PLIGATURE;
+
+typedef struct _FD_LIGATURE {
+ ULONG culThis;
+ ULONG ulType;
+ ULONG cLigatures;
+ LIGATURE alig[1];
+} FD_LIGATURE;
+
+
+// glyph handle must be 32 bit
+
+
+// signed 16 bit integer type denoting number of FUnit's
+
+typedef SHORT FWORD;
+
+// point in the 32.32 bit precission
+
+typedef struct _POINTQF // ptq
+{
+ LARGE_INTEGER x;
+ LARGE_INTEGER y;
+} POINTQF, *PPOINTQF;
+
+//. Structures
+
+
+// devm.flRealizedType flags
+
+// FDM_TYPE_ZERO_BEARINGS // all glyphs have zero a and c spaces
+
+// the following two features refer to all glyphs in this font realization
+
+// FDM_TYPE_CHAR_INC_EQUAL_BM_BASE // base width == cx for horiz, == cy for vert.
+// FDM_TYPE_MAXEXT_EQUAL_BM_SIDE // side width == cy for horiz, == cx for vert.
+
+#define FDM_TYPE_BM_SIDE_CONST 0x00000001
+#define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
+#define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
+#define FDM_TYPE_ZERO_BEARINGS 0x00000008
+#define FDM_TYPE_CONST_BEARINGS 0x00000010
+
+
+// structures for describing a supported set of glyphs in a font
+
+typedef struct _WCRUN {
+ WCHAR wcLow; // lowest character in run inclusive
+ USHORT cGlyphs; // wcHighInclusive = wcLow + cGlyphs - 1;
+ HGLYPH *phg; // pointer to an array of cGlyphs HGLYPH's
+} WCRUN, *PWCRUN;
+
+// If phg is set to (HGLYPH *)NULL, for all wc's in this particular run
+// the handle can be computed as simple zero extension:
+// HGLYPH hg = (HGLYPH) wc;
+//
+// If phg is not NULL, memory pointed to by phg, allocated by the driver,
+// WILL NOT MOVE.
+
+
+typedef struct _FD_GLYPHSET {
+ ULONG cjThis; // size of this structure in butes
+ FLONG flAccel; // accel flags, bits to be explained below
+ ULONG cGlyphsSupported; // sum over all wcrun's of wcrun.cGlyphs
+ ULONG cRuns;
+ WCRUN awcrun[1]; // an array of cRun WCRUN structures
+} FD_GLYPHSET, *PFD_GLYPHSET;
+
+// If GS_UNICODE_HANDLES bit is set,
+// for ALL WCRUNS in this FD_GLYPHSET the handles are
+// obtained by zero extending unicode code points of
+// the corresponding supported glyphs, i.e. all gs.phg's are NULL
+
+#define GS_UNICODE_HANDLES 0x00000001
+
+// If GS_8BIT_HANDLES bit is set, all handles are in 0-255 range.
+// This is just an ansi font then and we are really making up all
+// the unicode stuff about this font.
+
+#define GS_8BIT_HANDLES 0x00000002
+
+// all handles fit in 16 bits.
+// to 8 bit handles as it should.
+
+#define GS_16BIT_HANDLES 0x00000004
+
+
+// ligatures
+
+
+typedef struct _FD_KERNINGPAIR {
+ WCHAR wcFirst;
+ WCHAR wcSecond;
+ FWORD fwdKern;
+} FD_KERNINGPAIR;
+
+// IFIMETRICS constants
+
+#define FM_VERSION_NUMBER 0x0
+
+//
+// IFIMETRICS::fsType flags
+//
+#define FM_TYPE_LICENSED 0x2
+#define FM_READONLY_EMBED 0x4
+#define FM_EDITABLE_EMBED 0x8
+#define FM_NO_EMBEDDING FM_TYPE_LICENSED
+
+//
+// IFIMETRICS::flInfo flags
+//
+#define FM_INFO_TECH_TRUETYPE 0x00000001
+#define FM_INFO_TECH_BITMAP 0x00000002
+#define FM_INFO_TECH_STROKE 0x00000004
+#define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
+#define FM_INFO_ARB_XFORMS 0x00000010
+#define FM_INFO_1BPP 0x00000020
+#define FM_INFO_4BPP 0x00000040
+#define FM_INFO_8BPP 0x00000080
+#define FM_INFO_16BPP 0x00000100
+#define FM_INFO_24BPP 0x00000200
+#define FM_INFO_32BPP 0x00000400
+#define FM_INFO_INTEGER_WIDTH 0x00000800
+#define FM_INFO_CONSTANT_WIDTH 0x00001000
+#define FM_INFO_NOT_CONTIGUOUS 0x00002000
+#define FM_INFO_PID_EMBEDDED 0x00004000
+#define FM_INFO_RETURNS_OUTLINES 0x00008000
+#define FM_INFO_RETURNS_STROKES 0x00010000
+#define FM_INFO_RETURNS_BITMAPS 0x00020000
+#define FM_INFO_UNICODE_COMPLIANT 0x00040000
+#define FM_INFO_RIGHT_HANDED 0x00080000
+#define FM_INFO_INTEGRAL_SCALING 0x00100000
+#define FM_INFO_90DEGREE_ROTATIONS 0x00200000
+#define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
+#define FM_INFO_DO_NOT_ENUMERATE 0x00800000
+#define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
+#define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
+#define FM_INFO_TID_EMBEDDED 0x04000000
+#define FM_INFO_FAMILY_EQUIV 0x08000000
+#define FM_INFO_DBCS_FIXED_PITCH 0x10000000
+#define FM_INFO_NONNEGATIVE_AC 0x20000000
+#define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
+#define FM_INFO_TECH_TYPE1 0x80000000
+
+// max number of charsets supported in a tt font, 16 according to win95 guys
+
+#define MAXCHARSETS 16
+
+//
+// IFIMETRICS::ulPanoseCulture
+//
+#define FM_PANOSE_CULTURE_LATIN 0x0
+
+
+//
+// IFMETRICS::fsSelection flags
+//
+#define FM_SEL_ITALIC 0x0001
+#define FM_SEL_UNDERSCORE 0x0002
+#define FM_SEL_NEGATIVE 0x0004
+#define FM_SEL_OUTLINED 0x0008
+#define FM_SEL_STRIKEOUT 0x0010
+#define FM_SEL_BOLD 0x0020
+#define FM_SEL_REGULAR 0x0040
+
+//
+// The FONTDIFF structure contains all of the fields that could
+// possibly change under simulation
+//
+typedef struct _FONTDIFF {
+ BYTE jReserved1; // 0x0
+ BYTE jReserved2; // 0x1
+ BYTE jReserved3; // 0x2
+ BYTE bWeight; // 0x3 Panose Weight
+ USHORT usWinWeight; // 0x4
+ FSHORT fsSelection; // 0x6
+ FWORD fwdAveCharWidth; // 0x8
+ FWORD fwdMaxCharInc; // 0xA
+ POINTL ptlCaret; // 0xC
+} FONTDIFF;
+
+typedef struct _FONTSIM {
+ PTRDIFF dpBold; // offset from beginning of FONTSIM to FONTDIFF
+ PTRDIFF dpItalic; // offset from beginning of FONTSIM to FONTDIFF
+ PTRDIFF dpBoldItalic; // offset from beginning of FONTSIM to FONTDIFF
+} FONTSIM;
+
+
+typedef struct _IFIMETRICS {
+ ULONG cjThis; // includes attached information
+ ULONG cjIfiExtra; // sizeof IFIEXTRA if any, formerly ulVersion
+ PTRDIFF dpwszFamilyName;
+ PTRDIFF dpwszStyleName;
+ PTRDIFF dpwszFaceName;
+ PTRDIFF dpwszUniqueName;
+ PTRDIFF dpFontSim;
+ LONG lEmbedId;
+ LONG lItalicAngle;
+ LONG lCharBias;
+
+// dpCharSet field replaced alReserved[0].
+// If the 3.51 pcl minidrivers are still to work on NT 4.0 this field must not
+// move because they will have 0 at this position.
+
+ PTRDIFF dpCharSets;
+ BYTE jWinCharSet; // as in LOGFONT::lfCharSet
+ BYTE jWinPitchAndFamily; // as in LOGFONT::lfPitchAndFamily
+ USHORT usWinWeight; // as in LOGFONT::lfWeight
+ ULONG flInfo; // see above
+ USHORT fsSelection; // see above
+ USHORT fsType; // see above
+ FWORD fwdUnitsPerEm; // em height
+ FWORD fwdLowestPPEm; // readable limit
+ FWORD fwdWinAscender;
+ FWORD fwdWinDescender;
+ FWORD fwdMacAscender;
+ FWORD fwdMacDescender;
+ FWORD fwdMacLineGap;
+ FWORD fwdTypoAscender;
+ FWORD fwdTypoDescender;
+ FWORD fwdTypoLineGap;
+ FWORD fwdAveCharWidth;
+ FWORD fwdMaxCharInc;
+ FWORD fwdCapHeight;
+ FWORD fwdXHeight;
+ FWORD fwdSubscriptXSize;
+ FWORD fwdSubscriptYSize;
+ FWORD fwdSubscriptXOffset;
+ FWORD fwdSubscriptYOffset;
+ FWORD fwdSuperscriptXSize;
+ FWORD fwdSuperscriptYSize;
+ FWORD fwdSuperscriptXOffset;
+ FWORD fwdSuperscriptYOffset;
+ FWORD fwdUnderscoreSize;
+ FWORD fwdUnderscorePosition;
+ FWORD fwdStrikeoutSize;
+ FWORD fwdStrikeoutPosition;
+ BYTE chFirstChar; // for win 3.1 compatibility
+ BYTE chLastChar; // for win 3.1 compatibility
+ BYTE chDefaultChar; // for win 3.1 compatibility
+ BYTE chBreakChar; // for win 3.1 compatibility
+ WCHAR wcFirstChar; // lowest supported code in Unicode set
+ WCHAR wcLastChar; // highest supported code in Unicode set
+ WCHAR wcDefaultChar;
+ WCHAR wcBreakChar;
+ POINTL ptlBaseline; //
+ POINTL ptlAspect; // designed aspect ratio (bitmaps)
+ POINTL ptlCaret; // points along caret
+ RECTL rclFontBox; // bounding box for all glyphs (font space)
+ BYTE achVendId[4]; // as per TrueType
+ ULONG cKerningPairs;
+ ULONG ulPanoseCulture;
+ PANOSE panose;
+} IFIMETRICS, *PIFIMETRICS;
+
+
+// rather than adding the fields of IFIEXTRA to IFIMETRICS itself
+// we add them as a separate structure. This structure, if present at all,
+// lies below IFIMETRICS in memory.
+// If IFIEXTRA is present at all, ifi.cjIfiExtra (formerly ulVersion)
+// will contain size of IFIEXTRA including any reserved fields.
+// That way ulVersion = 0 (NT 3.51 or less) printer minidrivers
+// will work with NT 4.0.
+
+typedef struct _IFIEXTRA
+{
+ ULONG ulIdentifier; // used for Type 1 fonts only
+ PTRDIFF dpFontSig; // nontrivial for tt only, at least for now.
+ ULONG cig; // maxp->numGlyphs, # of distinct glyph indicies
+ ULONG aulReserved[1]; // in case we need even more stuff in the future
+} IFIEXTRA, *PIFIEXTRA;
+
+
+/**************************************************************************\
+ *
+\**************************************************************************/
+
+/* OpenGL DDI ExtEscape escape numbers (4352 - 4607) */
+
+#define OPENGL_CMD 4352 /* for OpenGL ExtEscape */
+#define OPENGL_GETINFO 4353 /* for OpenGL ExtEscape */
+#define WNDOBJ_SETUP 4354 /* for live video ExtEscape */
+
+#define DDI_DRIVER_VERSION 0x00020000
+#define GDI_DRIVER_VERSION 0x4000 /* for NT version 4.0.00 */
+
+typedef int (*PFN)();
+
+typedef struct _DRVFN /* drvfn */
+{
+ ULONG iFunc;
+ PFN pfn;
+} DRVFN, *PDRVFN;
+
+/* Required functions */
+
+#define INDEX_DrvEnablePDEV 0L
+#define INDEX_DrvCompletePDEV 1L
+#define INDEX_DrvDisablePDEV 2L
+#define INDEX_DrvEnableSurface 3L
+#define INDEX_DrvDisableSurface 4L
+
+/* Other functions */
+
+#define INDEX_DrvAssertMode 5L
+#define INDEX_DrvResetPDEV 7L
+#define INDEX_DrvCreateDeviceBitmap 10L
+#define INDEX_DrvDeleteDeviceBitmap 11L
+#define INDEX_DrvRealizeBrush 12L
+#define INDEX_DrvDitherColor 13L
+#define INDEX_DrvStrokePath 14L
+#define INDEX_DrvFillPath 15L
+#define INDEX_DrvStrokeAndFillPath 16L
+#define INDEX_DrvPaint 17L
+#define INDEX_DrvBitBlt 18L
+#define INDEX_DrvCopyBits 19L
+#define INDEX_DrvStretchBlt 20L
+#define INDEX_DrvSetPalette 22L
+#define INDEX_DrvTextOut 23L
+#define INDEX_DrvEscape 24L
+#define INDEX_DrvDrawEscape 25L
+#define INDEX_DrvQueryFont 26L
+#define INDEX_DrvQueryFontTree 27L
+#define INDEX_DrvQueryFontData 28L
+#define INDEX_DrvSetPointerShape 29L
+#define INDEX_DrvMovePointer 30L
+#define INDEX_DrvLineTo 31L
+#define INDEX_DrvSendPage 32L
+#define INDEX_DrvStartPage 33L
+#define INDEX_DrvEndDoc 34L
+#define INDEX_DrvStartDoc 35L
+#define INDEX_DrvGetGlyphMode 37L
+#define INDEX_DrvSynchronize 38L
+#define INDEX_DrvSaveScreenBits 40L
+#define INDEX_DrvGetModes 41L
+#define INDEX_DrvFree 42L
+#define INDEX_DrvDestroyFont 43L
+#define INDEX_DrvQueryFontCaps 44L
+#define INDEX_DrvLoadFontFile 45L
+#define INDEX_DrvUnloadFontFile 46L
+#define INDEX_DrvFontManagement 47L
+#define INDEX_DrvQueryTrueTypeTable 48L
+#define INDEX_DrvQueryTrueTypeOutline 49L
+#define INDEX_DrvGetTrueTypeFile 50L
+#define INDEX_DrvQueryFontFile 51L
+#define INDEX_UNUSED5 52L
+#define INDEX_DrvQueryAdvanceWidths 53L
+#define INDEX_DrvSetPixelFormat 54L
+#define INDEX_DrvDescribePixelFormat 55L
+#define INDEX_DrvSwapBuffers 56L
+#define INDEX_DrvStartBanding 57L
+#define INDEX_DrvNextBand 58L
+#define INDEX_DrvGetDirectDrawInfo 59L
+#define INDEX_DrvEnableDirectDraw 60L
+#define INDEX_DrvDisableDirectDraw 61L
+#define INDEX_DrvQuerySpoolType 62L
+
+/* The total number of dispatched functions */
+
+#define INDEX_LAST 63L
+
+typedef struct tagDRVENABLEDATA
+{
+ ULONG iDriverVersion;
+ ULONG c;
+ DRVFN *pdrvfn;
+} DRVENABLEDATA, *PDRVENABLEDATA;
+
+typedef struct tagDEVINFO
+{
+ FLONG flGraphicsCaps;
+ LOGFONTW lfDefaultFont;
+ LOGFONTW lfAnsiVarFont;
+ LOGFONTW lfAnsiFixFont;
+ ULONG cFonts;
+ ULONG iDitherFormat;
+ USHORT cxDither;
+ USHORT cyDither;
+ HPALETTE hpalDefault;
+} DEVINFO, *PDEVINFO;
+
+#define GCAPS_BEZIERS 0x00000001
+#define GCAPS_GEOMETRICWIDE 0x00000002
+#define GCAPS_ALTERNATEFILL 0x00000004
+#define GCAPS_WINDINGFILL 0x00000008
+#define GCAPS_HALFTONE 0x00000010
+#define GCAPS_COLOR_DITHER 0x00000020
+#define GCAPS_HORIZSTRIKE 0x00000040
+#define GCAPS_VERTSTRIKE 0x00000080
+#define GCAPS_OPAQUERECT 0x00000100
+#define GCAPS_VECTORFONT 0x00000200
+#define GCAPS_MONO_DITHER 0x00000400
+#define GCAPS_ASYNCCHANGE 0x00000800
+#define GCAPS_ASYNCMOVE 0x00001000
+#define GCAPS_DONTJOURNAL 0x00002000
+#define GCAPS_DIRECTDRAW 0x00004000
+#define GCAPS_ARBRUSHOPAQUE 0x00008000
+#define GCAPS_PANNING 0x00010000
+#define GCAPS_HIGHRESTEXT 0x00040000
+#define GCAPS_PALMANAGED 0x00080000
+#define GCAPS_DITHERONREALIZE 0x00200000
+#define GCAPS_NO64BITMEMACCESS 0x00400000
+#define GCAPS_FORCEDITHER 0x00800000
+#define GCAPS_GRAY16 0x01000000
+
+typedef struct _LINEATTRS
+{
+ FLONG fl;
+ ULONG iJoin;
+ ULONG iEndCap;
+ FLOAT_LONG elWidth;
+ FLOAT eMiterLimit;
+ ULONG cstyle;
+ PFLOAT_LONG pstyle;
+ FLOAT_LONG elStyleState;
+} LINEATTRS, *PLINEATTRS;
+
+#define LA_GEOMETRIC 0x00000001
+#define LA_ALTERNATE 0x00000002
+#define LA_STARTGAP 0x00000004
+#define LA_STYLED 0x00000008
+
+#define JOIN_ROUND 0L
+#define JOIN_BEVEL 1L
+#define JOIN_MITER 2L
+
+#define ENDCAP_ROUND 0L
+#define ENDCAP_SQUARE 1L
+#define ENDCAP_BUTT 2L
+
+typedef LONG LDECI4;
+
+typedef struct _CIECHROMA
+{
+ LDECI4 x;
+ LDECI4 y;
+ LDECI4 Y;
+}CIECHROMA;
+
+typedef struct _COLORINFO
+{
+ CIECHROMA Red;
+ CIECHROMA Green;
+ CIECHROMA Blue;
+ CIECHROMA Cyan;
+ CIECHROMA Magenta;
+ CIECHROMA Yellow;
+ CIECHROMA AlignmentWhite;
+
+ LDECI4 RedGamma;
+ LDECI4 GreenGamma;
+ LDECI4 BlueGamma;
+
+ LDECI4 MagentaInCyanDye;
+ LDECI4 YellowInCyanDye;
+ LDECI4 CyanInMagentaDye;
+ LDECI4 YellowInMagentaDye;
+ LDECI4 CyanInYellowDye;
+ LDECI4 MagentaInYellowDye;
+}COLORINFO, *PCOLORINFO;
+
+// Allowed values for GDIINFO.ulPrimaryOrder.
+
+#define PRIMARY_ORDER_ABC 0
+#define PRIMARY_ORDER_ACB 1
+#define PRIMARY_ORDER_BAC 2
+#define PRIMARY_ORDER_BCA 3
+#define PRIMARY_ORDER_CBA 4
+#define PRIMARY_ORDER_CAB 5
+
+// Allowed values for GDIINFO.ulHTPatternSize.
+
+#define HT_PATSIZE_2x2 0
+#define HT_PATSIZE_2x2_M 1
+#define HT_PATSIZE_4x4 2
+#define HT_PATSIZE_4x4_M 3
+#define HT_PATSIZE_6x6 4
+#define HT_PATSIZE_6x6_M 5
+#define HT_PATSIZE_8x8 6
+#define HT_PATSIZE_8x8_M 7
+#define HT_PATSIZE_10x10 8
+#define HT_PATSIZE_10x10_M 9
+#define HT_PATSIZE_12x12 10
+#define HT_PATSIZE_12x12_M 11
+#define HT_PATSIZE_14x14 12
+#define HT_PATSIZE_14x14_M 13
+#define HT_PATSIZE_16x16 14
+#define HT_PATSIZE_16x16_M 15
+#define HT_PATSIZE_MAX_INDEX HT_PATSIZE_16x16_M
+#define HT_PATSIZE_DEFAULT HT_PATSIZE_4x4_M
+
+// Allowed values for GDIINFO.ulHTOutputFormat.
+
+#define HT_FORMAT_1BPP 0
+#define HT_FORMAT_4BPP 2
+#define HT_FORMAT_4BPP_IRGB 3
+#define HT_FORMAT_8BPP 4
+#define HT_FORMAT_16BPP 5
+#define HT_FORMAT_24BPP 6
+#define HT_FORMAT_32BPP 7
+
+// Allowed values for GDIINFO.flHTFlags.
+
+#define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
+#define HT_FLAG_HAS_BLACK_DYE 0x00000002
+#define HT_FLAG_ADDITIVE_PRIMS 0x00000004
+#define HT_FLAG_OUTPUT_CMY 0x00000100
+
+typedef struct _GDIINFO
+{
+ ULONG ulVersion;
+ ULONG ulTechnology;
+ ULONG ulHorzSize;
+ ULONG ulVertSize;
+ ULONG ulHorzRes;
+ ULONG ulVertRes;
+ ULONG cBitsPixel;
+ ULONG cPlanes;
+ ULONG ulNumColors;
+ ULONG flRaster;
+ ULONG ulLogPixelsX;
+ ULONG ulLogPixelsY;
+ ULONG flTextCaps;
+
+ ULONG ulDACRed;
+ ULONG ulDACGreen;
+ ULONG ulDACBlue;
+
+ ULONG ulAspectX;
+ ULONG ulAspectY;
+ ULONG ulAspectXY;
+
+ LONG xStyleStep;
+ LONG yStyleStep;
+ LONG denStyleStep;
+
+ POINTL ptlPhysOffset;
+ SIZEL szlPhysSize;
+
+ ULONG ulNumPalReg;
+
+// These fields are for halftone initialization.
+
+ COLORINFO ciDevice;
+ ULONG ulDevicePelsDPI;
+ ULONG ulPrimaryOrder;
+ ULONG ulHTPatternSize;
+ ULONG ulHTOutputFormat;
+ ULONG flHTFlags;
+
+ ULONG ulVRefresh;
+ ULONG ulBltAlignment;
+
+ ULONG ulPanningHorzRes;
+ ULONG ulPanningVertRes;
+
+} GDIINFO, *PGDIINFO;
+
+/*
+ * User objects
+ */
+
+typedef struct _BRUSHOBJ
+{
+ ULONG iSolidColor;
+ PVOID pvRbrush;
+} BRUSHOBJ;
+
+typedef struct _CLIPOBJ
+{
+ ULONG iUniq;
+ RECTL rclBounds;
+ BYTE iDComplexity;
+ BYTE iFComplexity;
+ BYTE iMode;
+ BYTE fjOptions;
+} CLIPOBJ;
+
+typedef struct _DRIVEROBJ DRIVEROBJ;
+
+typedef BOOL (CALLBACK * FREEOBJPROC)(DRIVEROBJ *pDriverObj);
+
+typedef struct _DRIVEROBJ
+{
+ PVOID pvObj;
+ FREEOBJPROC pFreeProc;
+ HDEV hdev;
+ DHPDEV dhpdev;
+} DRIVEROBJ;
+
+typedef struct _FONTOBJ
+{
+ ULONG iUniq;
+ ULONG iFace;
+ ULONG cxMax;
+ FLONG flFontType;
+ ULONG iTTUniq;
+ ULONG iFile;
+ SIZE sizLogResPpi;
+ ULONG ulStyleSize;
+ PVOID pvConsumer;
+ PVOID pvProducer;
+} FONTOBJ;
+
+typedef BYTE GAMMA_TABLES[2][256];
+
+//
+// FONTOBJ::flFontType
+//
+#define FO_TYPE_RASTER RASTER_FONTTYPE /* 0x1 */
+#define FO_TYPE_DEVICE DEVICE_FONTTYPE /* 0x2 */
+#define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE /* 0x4 */
+#define FO_SIM_BOLD 0x00002000
+#define FO_SIM_ITALIC 0x00004000
+#define FO_EM_HEIGHT 0x00008000
+#define FO_GRAY16 0x00010000 /* [1] */
+#define FO_NOGRAY16 0x00020000 /* [1] */
+#define FO_NOHINTS 0x00040000 /* [3] */
+#define FO_NO_CHOICE 0x00080000 /* [3] */
+
+/**************************************************************************\
+*
+* [1]
+*
+* If the FO_GRAY16 flag is set then the bitmaps of the font
+* are 4-bit per pixel blending (alpha) values. A value of zero
+* means that the the resulting pixel should be equal to the
+* background color. If the value of the alpha value is k != 0
+* then the resulting pixel must be:
+*
+* c0 = background color
+* c1 = foreground color
+* b = blending value = (k+1)/16 // {k = 1,2,..,15}
+* b = 0 (k = 0)
+* d0 = gamma[c0], d1 = gamma[c1] // luminance components
+* d = (1 - b)*d0 + b*d1 // blended luminance
+* c = lambda[d] // blended device voltage
+*
+* where gamma[] takes a color component from application space
+* to CIE space and labmda[] takes a color from CIE space to
+* device color space
+*
+* GDI will set this bit if it request a font be gray scaled
+* to 16 values then GDI will set FO_GRAY16 upon entry to
+* DrvQueryFontData(). If the font driver cannot (or will
+* not) grayscale a particular realization of a font then the
+* font provider will zero out FO_GRAY16 and set FO_NOGRAY16
+* to inform GDI that
+* the gray scaling request cannot (or should not) be
+* satisfied.
+*
+* [2]
+*
+* The FO_NOHINTS indicates that hints were not used in the formation
+* of the glyph images. GDI will set this bit to request that hinting
+* be supressed. The font provider will set this bit accroding to the
+* rendering scheme that it used in generating the glyph image.
+*
+* [3]
+*
+* The FO_NO_CHOICE flag indicates that the flags FO_GRAY16 and
+* FO_NOHINTS must be obeyed if at all possible.
+*
+\**************************************************************************/
+
+typedef struct _PALOBJ
+{
+ ULONG ulReserved;
+} PALOBJ;
+
+typedef struct _PATHOBJ
+{
+ FLONG fl;
+ ULONG cCurves;
+} PATHOBJ;
+
+typedef struct _SURFOBJ
+{
+ DHSURF dhsurf;
+ HSURF hsurf;
+ DHPDEV dhpdev;
+ HDEV hdev;
+ SIZEL sizlBitmap;
+ ULONG cjBits;
+ PVOID pvBits;
+ PVOID pvScan0;
+ LONG lDelta;
+ ULONG iUniq;
+ ULONG iBitmapFormat;
+ USHORT iType;
+ USHORT fjBitmap;
+} SURFOBJ;
+
+typedef struct _WNDOBJ
+{
+ CLIPOBJ coClient;
+ PVOID pvConsumer;
+ RECTL rclClient;
+ SURFOBJ *psoOwner;
+} WNDOBJ, *PWNDOBJ;
+
+typedef struct _XFORMOBJ
+{
+ ULONG ulReserved;
+} XFORMOBJ;
+
+typedef struct _XLATEOBJ
+{
+ ULONG iUniq;
+ FLONG flXlate;
+ USHORT iSrcType;
+ USHORT iDstType;
+ ULONG cEntries;
+ ULONG *pulXlate;
+} XLATEOBJ;
+
+/*
+ * BRUSHOBJ callbacks
+ */
+
+PVOID APIENTRY BRUSHOBJ_pvAllocRbrush(
+BRUSHOBJ *pbo,
+ULONG cj);
+
+PVOID APIENTRY BRUSHOBJ_pvGetRbrush(BRUSHOBJ *pbo);
+
+/*
+ * CLIPOBJ callbacks
+ */
+
+#define DC_TRIVIAL 0
+#define DC_RECT 1
+#define DC_COMPLEX 3
+
+#define FC_RECT 1
+#define FC_RECT4 2
+#define FC_COMPLEX 3
+
+#define TC_RECTANGLES 0
+#define TC_PATHOBJ 2
+
+#define OC_BANK_CLIP 1
+
+#define CT_RECTANGLES 0L
+
+#define CD_RIGHTDOWN 0L
+#define CD_LEFTDOWN 1L
+#define CD_RIGHTUP 2L
+#define CD_LEFTUP 3L
+#define CD_ANY 4L
+
+#define CD_LEFTWARDS 1L
+#define CD_UPWARDS 2L
+
+typedef struct _ENUMRECTS
+{
+ ULONG c;
+ RECTL arcl[1];
+} ENUMRECTS;
+
+ULONG APIENTRY CLIPOBJ_cEnumStart(
+CLIPOBJ *pco,
+BOOL bAll,
+ULONG iType,
+ULONG iDirection,
+ULONG cLimit);
+
+BOOL APIENTRY CLIPOBJ_bEnum(
+CLIPOBJ *pco,
+ULONG cj,
+ULONG *pul);
+
+PATHOBJ * APIENTRY CLIPOBJ_ppoGetPath(CLIPOBJ* pco);
+
+/*
+ * FONTOBJ callbacks
+ */
+
+typedef struct _GLYPHBITS
+{
+ POINTL ptlOrigin;
+ SIZEL sizlBitmap;
+ BYTE aj[1];
+} GLYPHBITS;
+
+#define FO_HGLYPHS 0L
+#define FO_GLYPHBITS 1L
+#define FO_PATHOBJ 2L
+
+#define FD_NEGATIVE_FONT 1L
+
+#define FO_DEVICE_FONT 1L
+#define FO_OUTLINE_CAPABLE 2L
+
+typedef union _GLYPHDEF
+{
+ GLYPHBITS *pgb;
+ PATHOBJ *ppo;
+} GLYPHDEF;
+
+typedef struct _GLYPHPOS /* gp */
+{
+ HGLYPH hg;
+ GLYPHDEF *pgdf;
+ POINTL ptl;
+} GLYPHPOS,*PGLYPHPOS;
+
+
+// individual glyph data
+
+// r is a unit vector along the baseline in device coordinates.
+// s is a unit vector in the ascent direction in device coordinates.
+// A, B, and C, are simple tranforms of the notional space versions into
+// (28.4) device coordinates. The dot products of those vectors with r
+// are recorded here. Note that the high words of ptqD are also 28.4
+// device coordinates. The low words provide extra accuracy.
+
+// THE STRUCTURE DIFFERS IN ORDERING FROM NT 3.51 VERSION OF THE STRUCTURE.
+// ptqD has been moved to the bottom.
+// This requires only recompile of all the drivers.
+
+typedef struct _GLYPHDATA {
+ GLYPHDEF gdf; // pointer to GLYPHBITS or to PATHOBJ
+ HGLYPH hg; // glyhp handle
+ FIX fxD; // Character increment amount: D*r.
+ FIX fxA; // Prebearing amount: A*r.
+ FIX fxAB; // Advancing edge of character: (A+B)*r.
+ FIX fxInkTop; // Baseline to inkbox top along s.
+ FIX fxInkBottom; // Baseline to inkbox bottom along s.
+ RECTL rclInk; // Ink box with sides parallel to x,y axes
+ POINTQF ptqD; // Character increment vector: D=A+B+C.
+} GLYPHDATA;
+
+
+// flAccel flags for STROBJ
+
+// SO_FLAG_DEFAULT_PLACEMENT // defult inc vectors used to position chars
+// SO_HORIZONTAL // "left to right" or "right to left"
+// SO_VERTICAL // "top to bottom" or "bottom to top"
+// SO_REVERSED // set if horiz & "right to left" or if vert & "bottom to top"
+// SO_ZERO_BEARINGS // all glyphs have zero a and c spaces
+// SO_CHAR_INC_EQUAL_BM_BASE // base == cx for horiz, == cy for vert.
+// SO_MAXEXT_EQUAL_BM_SIDE // side == cy for horiz, == cx for vert.
+
+// do not substitute device font for tt font even if device font sub table
+// tells the driver this should be done
+
+// SO_DO_NOT_SUBSTITUTE_DEVICE_FONT
+
+#define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
+#define SO_HORIZONTAL 0x00000002
+#define SO_VERTICAL 0x00000004
+#define SO_REVERSED 0x00000008
+#define SO_ZERO_BEARINGS 0x00000010
+#define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
+#define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
+#define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
+#define SO_GLYPHINDEX_TEXTOUT 0x00000100
+#define SO_ESC_NOT_ORIENT 0x00000200
+
+typedef struct _STROBJ
+{
+ ULONG cGlyphs; // # of glyphs to render
+ FLONG flAccel; // accel flags
+ ULONG ulCharInc; // non-zero only if fixed pitch font, equal to advanced width.
+ RECTL rclBkGround; // bk ground rect of the string in device coords
+ GLYPHPOS *pgp; // If non-NULL then has all glyphs.
+ LPWSTR pwszOrg; // pointer to original unicode string.
+} STROBJ;
+
+typedef struct _FONTINFO /* fi */
+{
+ ULONG cjThis;
+ FLONG flCaps;
+ ULONG cGlyphsSupported;
+ ULONG cjMaxGlyph1;
+ ULONG cjMaxGlyph4;
+ ULONG cjMaxGlyph8;
+ ULONG cjMaxGlyph32;
+} FONTINFO, *PFONTINFO;
+
+ULONG APIENTRY FONTOBJ_cGetAllGlyphHandles(
+FONTOBJ *pfo,
+HGLYPH *phg);
+
+VOID APIENTRY FONTOBJ_vGetInfo(
+FONTOBJ *pfo,
+ULONG cjSize,
+FONTINFO *pfi);
+
+ULONG APIENTRY FONTOBJ_cGetGlyphs(
+FONTOBJ *pfo,
+ULONG iMode,
+ULONG cGlyph,
+HGLYPH *phg,
+PVOID *ppvGlyph);
+
+GAMMA_TABLES* APIENTRY FONTOBJ_pGetGammaTables(FONTOBJ *pfo);
+
+XFORMOBJ * APIENTRY FONTOBJ_pxoGetXform(FONTOBJ *pfo);
+IFIMETRICS * APIENTRY FONTOBJ_pifi(FONTOBJ *pfo);
+
+PVOID FONTOBJ_pvTrueTypeFontFile(
+FONTOBJ *pfo,
+ULONG *pcjFile);
+
+// possible values that iMode can take:
+
+/*
+ * PALOBJ callbacks
+ */
+
+#define PAL_INDEXED 0x00000001
+#define PAL_BITFIELDS 0x00000002
+#define PAL_RGB 0x00000004
+#define PAL_BGR 0x00000008
+
+ULONG APIENTRY PALOBJ_cGetColors(
+PALOBJ *ppalo,
+ULONG iStart,
+ULONG cColors,
+ULONG *pulColors);
+
+/*
+ * PATHOBJ callbacks
+ */
+
+#define PO_BEZIERS 0x00000001
+#define PO_ELLIPSE 0x00000002
+
+#define PD_BEGINSUBPATH 0x00000001
+#define PD_ENDSUBPATH 0x00000002
+#define PD_RESETSTYLE 0x00000004
+#define PD_CLOSEFIGURE 0x00000008
+#define PD_BEZIERS 0x00000010
+#define PD_ALL (PD_BEGINSUBPATH | \
+ PD_ENDSUBPATH | \
+ PD_RESETSTYLE | \
+ PD_CLOSEFIGURE | \
+ PD_BEZIERS)
+
+typedef struct _PATHDATA
+{
+ FLONG flags;
+ ULONG count;
+ POINTFIX *pptfx;
+} PATHDATA, *PPATHDATA;
+
+typedef struct _RUN
+{
+ LONG iStart;
+ LONG iStop;
+} RUN, *PRUN;
+
+typedef struct _CLIPLINE
+{
+ POINTFIX ptfxA;
+ POINTFIX ptfxB;
+ LONG lStyleState;
+ ULONG c;
+ RUN arun[1];
+} CLIPLINE, *PCLIPLINE;
+
+VOID APIENTRY PATHOBJ_vEnumStart(PATHOBJ *ppo);
+
+BOOL APIENTRY PATHOBJ_bEnum(
+PATHOBJ *ppo,
+PATHDATA *ppd);
+
+VOID APIENTRY PATHOBJ_vEnumStartClipLines(
+PATHOBJ *ppo,
+CLIPOBJ *pco,
+SURFOBJ *pso,
+LINEATTRS *pla);
+
+BOOL APIENTRY PATHOBJ_bEnumClipLines(
+PATHOBJ *ppo,
+ULONG cb,
+CLIPLINE *pcl);
+
+BOOL APIENTRY PATHOBJ_bMoveTo(
+PATHOBJ *ppo,
+POINTFIX ptfx);
+
+BOOL APIENTRY PATHOBJ_bPolyLineTo(
+PATHOBJ *ppo,
+POINTFIX *pptfx,
+ULONG cptfx);
+
+BOOL APIENTRY PATHOBJ_bPolyBezierTo(
+PATHOBJ *ppo,
+POINTFIX *pptfx,
+ULONG cptfx);
+
+BOOL APIENTRY PATHOBJ_bCloseFigure(PATHOBJ *ppo);
+
+VOID APIENTRY PATHOBJ_vGetBounds(
+PATHOBJ *ppo,
+PRECTFX prectfx);
+
+/*
+ * STROBJ callbacks
+ */
+
+VOID APIENTRY STROBJ_vEnumStart(
+STROBJ *pstro);
+
+BOOL APIENTRY STROBJ_bEnum(
+STROBJ *pstro,
+ULONG *pc,
+PGLYPHPOS *ppgpos);
+
+DWORD APIENTRY STROBJ_dwGetCodePage(
+STROBJ *pstro);
+
+#define SGI_EXTRASPACE 0
+
+/*
+ * SURFOBJ callbacks
+ */
+
+#define STYPE_BITMAP 0L
+#define STYPE_DEVICE 1L
+#define STYPE_DEVBITMAP 3L
+
+#define BMF_1BPP 1L
+#define BMF_4BPP 2L
+#define BMF_8BPP 3L
+#define BMF_16BPP 4L
+#define BMF_24BPP 5L
+#define BMF_32BPP 6L
+#define BMF_4RLE 7L
+#define BMF_8RLE 8L
+
+#define BMF_TOPDOWN 0x0001
+#define BMF_NOZEROINIT 0x0002
+#define BMF_DONTCACHE 0x0004
+#define BMF_USERMEM 0x0008
+#define BMF_KMSECTION 0x0010
+
+
+/*
+ * XFORMOBJ callbacks
+ */
+
+#define GX_IDENTITY 0L
+#define GX_OFFSET 1L
+#define GX_SCALE 2L
+#define GX_GENERAL 3L
+
+#define XF_LTOL 0L
+#define XF_INV_LTOL 1L
+#define XF_LTOFX 2L
+#define XF_INV_FXTOL 3L
+
+ULONG APIENTRY XFORMOBJ_iGetXform(
+XFORMOBJ *pxo,
+XFORM *pxform);
+
+BOOL APIENTRY XFORMOBJ_bApplyXform(
+XFORMOBJ *pxo,
+ULONG iMode,
+ULONG cPoints,
+PVOID pvIn,
+PVOID pvOut);
+
+/*
+ * XLATEOBJ callbacks
+ */
+
+#define XO_TRIVIAL 0x00000001
+#define XO_TABLE 0x00000002
+#define XO_TO_MONO 0x00000004
+
+#define XO_SRCPALETTE 1
+#define XO_DESTPALETTE 2
+#define XO_DESTDCPALETTE 3
+
+ULONG APIENTRY XLATEOBJ_iXlate(XLATEOBJ *pxlo, ULONG iColor);
+ULONG * APIENTRY XLATEOBJ_piVector(XLATEOBJ *pxlo);
+ULONG APIENTRY XLATEOBJ_cGetPalette(
+XLATEOBJ *pxlo,
+ULONG iPal,
+ULONG cPal,
+ULONG *pPal);
+
+/*
+ * Engine callbacks - error logging
+ */
+
+VOID APIENTRY EngSetLastError(ULONG);
+ULONG APIENTRY EngGetLastError();
+
+/*
+ * Engine callbacks - Surfaces
+ */
+
+#define HOOK_BITBLT 0x00000001
+#define HOOK_STRETCHBLT 0x00000002
+#define HOOK_PLGBLT 0x00000004
+#define HOOK_TEXTOUT 0x00000008
+#define HOOK_PAINT 0x00000010
+#define HOOK_STROKEPATH 0x00000020
+#define HOOK_FILLPATH 0x00000040
+#define HOOK_STROKEANDFILLPATH 0x00000080
+#define HOOK_LINETO 0x00000100
+#define HOOK_COPYBITS 0x00000400
+#define HOOK_SYNCHRONIZE 0x00001000
+#define HOOK_SYNCHRONIZEACCESS 0x00004000
+
+HBITMAP APIENTRY EngCreateBitmap(
+SIZEL sizl,
+LONG lWidth,
+ULONG iFormat,
+FLONG fl,
+PVOID pvBits);
+
+HSURF APIENTRY EngCreateDeviceSurface(DHSURF dhsurf, SIZEL sizl, ULONG iFormatCompat);
+HBITMAP APIENTRY EngCreateDeviceBitmap(DHSURF dhsurf, SIZEL sizl, ULONG iFormatCompat);
+BOOL APIENTRY EngDeleteSurface(HSURF hsurf);
+SURFOBJ * APIENTRY EngLockSurface(HSURF hsurf);
+VOID APIENTRY EngUnlockSurface(SURFOBJ *pso);
+
+BOOL APIENTRY EngEraseSurface(
+SURFOBJ *pso,
+RECTL *prcl,
+ULONG iColor);
+
+BOOL APIENTRY EngAssociateSurface(
+HSURF hsurf,
+HDEV hdev,
+FLONG flHooks);
+
+BOOL APIENTRY EngMarkBandingSurface( HSURF hsurf );
+
+BOOL APIENTRY EngCheckAbort(SURFOBJ *pso);
+
+/*
+ * Engine callbacks - Paths
+ */
+
+PATHOBJ * APIENTRY EngCreatePath();
+VOID APIENTRY EngDeletePath(PATHOBJ *ppo);
+
+/*
+ * Engine callbacks - Palettes
+ */
+
+HPALETTE APIENTRY EngCreatePalette(
+ULONG iMode,
+ULONG cColors,
+ULONG *pulColors,
+FLONG flRed,
+FLONG flGreen,
+FLONG flBlue);
+
+BOOL APIENTRY EngDeletePalette(HPALETTE hpal);
+
+/*
+ * Engine callbacks - Clipping
+ */
+
+CLIPOBJ * APIENTRY EngCreateClip();
+VOID APIENTRY EngDeleteClip(CLIPOBJ *pco);
+
+/*
+ * Function prototypes
+ */
+
+// These are the only EXPORTED functions for ANY driver
+
+BOOL APIENTRY DrvEnableDriver(
+ULONG iEngineVersion,
+ULONG cj,
+DRVENABLEDATA *pded);
+
+/*
+ * Driver functions
+ */
+
+DHPDEV APIENTRY DrvEnablePDEV(
+DEVMODEW *pdm,
+LPWSTR pwszLogAddress,
+ULONG cPat,
+HSURF *phsurfPatterns,
+ULONG cjCaps,
+ULONG *pdevcaps,
+ULONG cjDevInfo,
+DEVINFO *pdi,
+HDEV hdev,
+LPWSTR pwszDeviceName,
+HANDLE hDriver);
+
+#define HS_DDI_MAX 6
+
+BOOL APIENTRY DrvResetPDEV(DHPDEV dhpdevOld, DHPDEV dhpdevNew);
+
+VOID APIENTRY DrvCompletePDEV(DHPDEV dhpdev,HDEV hdev);
+
+HSURF APIENTRY DrvEnableSurface(DHPDEV dhpdev);
+VOID APIENTRY DrvSynchronize(DHPDEV dhpdev,RECTL *prcl);
+VOID APIENTRY DrvDisableSurface(DHPDEV dhpdev);
+VOID APIENTRY DrvDisablePDEV(DHPDEV dhpdev);
+
+BOOL APIENTRY DrvStartBanding(SURFOBJ *pso, POINTL *pptl);
+BOOL APIENTRY DrvNextBand(SURFOBJ *pso, POINTL *pptl);
+
+/* DrvSaveScreenBits - iMode definitions */
+
+#define SS_SAVE 0
+#define SS_RESTORE 1
+#define SS_FREE 2
+
+ULONG APIENTRY DrvSaveScreenBits(SURFOBJ *pso,ULONG iMode,ULONG ident,RECTL *prcl);
+
+/*
+ * Desktops
+ */
+
+BOOL APIENTRY DrvAssertMode(
+DHPDEV dhpdev,
+BOOL bEnable);
+
+ULONG APIENTRY DrvGetModes(
+HANDLE hDriver,
+ULONG cjSize,
+DEVMODEW *pdm);
+
+/*
+ * Bitmaps
+ */
+
+HBITMAP APIENTRY DrvCreateDeviceBitmap (
+DHPDEV dhpdev,
+SIZEL sizl,
+ULONG iFormat);
+
+VOID APIENTRY DrvDeleteDeviceBitmap(DHSURF dhsurf);
+
+/*
+ * Palettes
+ */
+
+BOOL APIENTRY DrvSetPalette(
+DHPDEV dhpdev,
+PALOBJ *ppalo,
+FLONG fl,
+ULONG iStart,
+ULONG cColors);
+
+/*
+ * Brushes
+ */
+
+#define DM_DEFAULT 0x00000001
+#define DM_MONOCHROME 0x00000002
+
+#define DCR_SOLID 0
+#define DCR_DRIVER 1
+#define DCR_HALFTONE 2
+
+ULONG APIENTRY DrvDitherColor(
+DHPDEV dhpdev,
+ULONG iMode,
+ULONG rgb,
+ULONG *pul);
+
+BOOL APIENTRY DrvRealizeBrush(
+BRUSHOBJ *pbo,
+SURFOBJ *psoTarget,
+SURFOBJ *psoPattern,
+SURFOBJ *psoMask,
+XLATEOBJ *pxlo,
+ULONG iHatch);
+
+#define RB_DITHERCOLOR 0x80000000L
+
+
+/*
+ * Fonts
+ */
+
+PIFIMETRICS APIENTRY DrvQueryFont(
+DHPDEV dhpdev,
+ULONG iFile,
+ULONG iFace,
+ULONG *pid);
+
+// #define QFT_UNICODE 0L
+#define QFT_LIGATURES 1L
+#define QFT_KERNPAIRS 2L
+#define QFT_GLYPHSET 3L
+
+PVOID APIENTRY DrvQueryFontTree(
+DHPDEV dhpdev,
+ULONG iFile,
+ULONG iFace,
+ULONG iMode,
+ULONG *pid);
+
+#define QFD_GLYPHANDBITMAP 1L
+#define QFD_GLYPHANDOUTLINE 2L
+#define QFD_MAXEXTENTS 3L
+#define QFD_TT_GLYPHANDBITMAP 4L
+#define QFD_TT_GRAY1_BITMAP 5L
+#define QFD_TT_GRAY2_BITMAP 6L
+#define QFD_TT_GRAY4_BITMAP 8L
+#define QFD_TT_GRAY8_BITMAP 9L
+
+#define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
+
+LONG APIENTRY DrvQueryFontData(
+DHPDEV dhpdev,
+FONTOBJ *pfo,
+ULONG iMode,
+HGLYPH hg,
+GLYPHDATA *pgd,
+PVOID pv,
+ULONG cjSize);
+
+VOID APIENTRY DrvFree(
+PVOID pv,
+ULONG id);
+
+VOID APIENTRY DrvDestroyFont(
+FONTOBJ *pfo);
+
+// Capability flags for DrvQueryCaps.
+
+#define QC_OUTLINES 0x00000001
+#define QC_1BIT 0x00000002
+#define QC_4BIT 0x00000004
+
+//
+// This is a mask of the capabilites of a font provider that can return more
+// than just glyph metrics (i.e., bitmaps and/or outlines). If a driver has
+// one or more of these capabilities, then it is FONT DRIVER.
+//
+// Drivers should only set individual bits. GDI will check if any are turned on
+// using this define.
+//
+
+#define QC_FONTDRIVERCAPS ( QC_OUTLINES | QC_1BIT | QC_4BIT )
+
+
+
+LONG APIENTRY DrvQueryFontCaps(
+ULONG culCaps,
+ULONG *pulCaps);
+
+ULONG APIENTRY DrvLoadFontFile(
+ULONG cFiles, // number of font files associated with this font
+ULONG *piFile, // handles for individual files, cFiles of them
+PVOID *ppvView, // array of cFiles views
+ULONG *pcjView, // array of their sizes
+ULONG ulLangID);
+
+BOOL APIENTRY DrvUnloadFontFile(
+ULONG iFile);
+
+LONG APIENTRY DrvQueryTrueTypeTable(
+ULONG iFile,
+ULONG ulFont,
+ULONG ulTag,
+PTRDIFF dpStart,
+ULONG cjBuf,
+BYTE *pjBuf);
+
+BOOL APIENTRY DrvQueryAdvanceWidths(
+DHPDEV dhpdev,
+FONTOBJ *pfo,
+ULONG iMode,
+HGLYPH *phg,
+PVOID pvWidths,
+ULONG cGlyphs);
+
+// Values for iMode
+
+#define QAW_GETWIDTHS 0
+#define QAW_GETEASYWIDTHS 1
+
+LONG APIENTRY DrvQueryTrueTypeOutline(
+DHPDEV dhpdev,
+FONTOBJ *pfo,
+HGLYPH hglyph,
+BOOL bMetricsOnly,
+GLYPHDATA *pgldt,
+ULONG cjBuf,
+TTPOLYGONHEADER *ppoly);
+
+PVOID APIENTRY DrvGetTrueTypeFile (
+ULONG iFile,
+ULONG *pcj);
+
+// values for ulMode:
+
+#define QFF_DESCRIPTION 1L
+#define QFF_NUMFACES 2L
+
+LONG APIENTRY DrvQueryFontFile(
+ULONG iFile,
+ULONG ulMode,
+ULONG cjBuf,
+ULONG *pulBuf);
+
+/*
+ * BitBlt
+ */
+
+BOOL APIENTRY DrvBitBlt(
+SURFOBJ *psoTrg,
+SURFOBJ *psoSrc,
+SURFOBJ *psoMask,
+CLIPOBJ *pco,
+XLATEOBJ *pxlo,
+RECTL *prclTrg,
+POINTL *pptlSrc,
+POINTL *pptlMask,
+BRUSHOBJ *pbo,
+POINTL *pptlBrush,
+ROP4 rop4);
+
+BOOL APIENTRY DrvStretchBlt(
+SURFOBJ *psoDest,
+SURFOBJ *psoSrc,
+SURFOBJ *psoMask,
+CLIPOBJ *pco,
+XLATEOBJ *pxlo,
+COLORADJUSTMENT *pca,
+POINTL *pptlHTOrg,
+RECTL *prclDest,
+RECTL *prclSrc,
+POINTL *pptlMask,
+ULONG iMode);
+
+BOOL APIENTRY DrvCopyBits(
+SURFOBJ *psoDest,
+SURFOBJ *psoSrc,
+CLIPOBJ *pco,
+XLATEOBJ *pxlo,
+RECTL *prclDest,
+POINTL *pptlSrc);
+
+/*
+ * Text Output
+ */
+
+BOOL APIENTRY DrvTextOut(
+SURFOBJ *pso,
+STROBJ *pstro,
+FONTOBJ *pfo,
+CLIPOBJ *pco,
+RECTL *prclExtra,
+RECTL *prclOpaque,
+BRUSHOBJ *pboFore,
+BRUSHOBJ *pboOpaque,
+POINTL *pptlOrg,
+MIX mix);
+
+/*
+ * Graphics Output
+ */
+
+BOOL APIENTRY DrvLineTo(
+SURFOBJ *pso,
+CLIPOBJ *pco,
+BRUSHOBJ *pbo,
+LONG x1,
+LONG y1,
+LONG x2,
+LONG y2,
+RECTL *prclBounds,
+MIX mix);
+
+BOOL APIENTRY DrvStrokePath(
+SURFOBJ *pso,
+PATHOBJ *ppo,
+CLIPOBJ *pco,
+XFORMOBJ *pxo,
+BRUSHOBJ *pbo,
+POINTL *pptlBrushOrg,
+LINEATTRS *plineattrs,
+MIX mix);
+
+#define FP_ALTERNATEMODE 1L
+#define FP_WINDINGMODE 2L
+
+BOOL APIENTRY DrvFillPath(
+SURFOBJ *pso,
+PATHOBJ *ppo,
+CLIPOBJ *pco,
+BRUSHOBJ *pbo,
+POINTL *pptlBrushOrg,
+MIX mix,
+FLONG flOptions);
+
+BOOL APIENTRY DrvStrokeAndFillPath(
+SURFOBJ *pso,
+PATHOBJ *ppo,
+CLIPOBJ *pco,
+XFORMOBJ *pxo,
+BRUSHOBJ *pboStroke,
+LINEATTRS *plineattrs,
+BRUSHOBJ *pboFill,
+POINTL *pptlBrushOrg,
+MIX mixFill,
+FLONG flOptions);
+
+BOOL APIENTRY DrvPaint(
+SURFOBJ *pso,
+CLIPOBJ *pco,
+BRUSHOBJ *pbo,
+POINTL *pptlBrushOrg,
+MIX mix);
+
+/*
+ * Pointers
+ */
+
+#define SPS_ERROR 0
+#define SPS_DECLINE 1
+#define SPS_ACCEPT_NOEXCLUDE 2
+#define SPS_ACCEPT_EXCLUDE 3
+
+#define SPS_CHANGE 0x00000001L
+#define SPS_ASYNCCHANGE 0x00000002L
+#define SPS_ANIMATESTART 0x00000004L
+#define SPS_ANIMATEUPDATE 0x00000008L
+
+ULONG APIENTRY DrvSetPointerShape(
+SURFOBJ *pso,
+SURFOBJ *psoMask,
+SURFOBJ *psoColor,
+XLATEOBJ *pxlo,
+LONG xHot,
+LONG yHot,
+LONG x,
+LONG y,
+RECTL *prcl,
+FLONG fl);
+
+VOID APIENTRY DrvMovePointer(SURFOBJ *pso,LONG x,LONG y,RECTL *prcl);
+
+/*
+ * Printing
+ */
+
+BOOL APIENTRY DrvSendPage(SURFOBJ *pso);
+BOOL APIENTRY DrvStartPage(SURFOBJ *pso);
+
+ULONG APIENTRY DrvEscape(
+SURFOBJ *pso,
+ULONG iEsc,
+ULONG cjIn,
+PVOID pvIn,
+ULONG cjOut,
+PVOID pvOut);
+
+BOOL APIENTRY DrvStartDoc(
+SURFOBJ *pso,
+LPWSTR pwszDocName,
+DWORD dwJobId);
+
+#define ED_ABORTDOC 1
+
+BOOL APIENTRY DrvEndDoc(SURFOBJ *pso, FLONG fl);
+
+BOOL APIENTRY DrvQuerySpoolType(DHPDEV, LPWSTR);
+
+ULONG APIENTRY DrvDrawEscape(
+SURFOBJ *pso,
+ULONG iEsc,
+CLIPOBJ *pco,
+RECTL *prcl,
+ULONG cjIn,
+PVOID pvIn);
+
+ULONG APIENTRY DrvGetGlyphMode(DHPDEV, FONTOBJ *);
+
+ULONG APIENTRY DrvFontManagement(
+SURFOBJ *pso,
+FONTOBJ *pfo,
+ULONG iMode,
+ULONG cjIn,
+PVOID pvIn,
+ULONG cjOut,
+PVOID pvOut);
+
+/*
+ * DirectDraw
+ */
+
+BOOL DrvEnableDirectDraw(
+DHPDEV dhpdev,
+DD_CALLBACKS *pCallBacks,
+DD_SURFACECALLBACKS *pSurfaceCallBacks,
+DD_PALETTECALLBACKS *pPaletteCallBacks);
+
+VOID DrvDisableDirectDraw(
+DHPDEV dhpdev);
+
+BOOL DrvGetDirectDrawInfo(
+DHPDEV dhpdev,
+DD_HALINFO *pHalInfo,
+DWORD *pdwNumHeaps,
+VIDEOMEMORY *pvmList,
+DWORD *pdwNumFourCCCodes,
+DWORD *pdwFourCC);
+
+/*
+ * Engine callbacks - tracking clip region changes
+ */
+
+#define WOC_RGN_CLIENT_DELTA 1
+#define WOC_RGN_CLIENT 2
+#define WOC_RGN_SURFACE_DELTA 4
+#define WOC_RGN_SURFACE 8
+#define WOC_CHANGED 16
+#define WOC_DELETE 32
+
+typedef VOID (CALLBACK * WNDOBJCHANGEPROC)(WNDOBJ *pwo, FLONG fl);
+
+#define WO_RGN_CLIENT_DELTA 1
+#define WO_RGN_CLIENT 2
+#define WO_RGN_SURFACE_DELTA 4
+#define WO_RGN_SURFACE 8
+#define WO_RGN_UPDATE_ALL 16
+
+WNDOBJ * APIENTRY EngCreateWnd(
+SURFOBJ *pso,
+HWND hwnd,
+WNDOBJCHANGEPROC pfn,
+FLONG fl,
+int iPixelFormat);
+
+ULONG APIENTRY WNDOBJ_cEnumStart(
+WNDOBJ *pwo,
+ULONG iType,
+ULONG iDirection,
+ULONG cLimit);
+
+BOOL APIENTRY WNDOBJ_bEnum(
+WNDOBJ *pwo,
+ULONG cj,
+ULONG *pul);
+
+VOID APIENTRY WNDOBJ_vSetConsumer(
+WNDOBJ *pwo,
+PVOID pvConsumer);
+
+/*
+ * Engine callbacks - tracking driver managed resources
+ */
+
+HDRVOBJ APIENTRY EngCreateDriverObj(
+PVOID pvObj,
+FREEOBJPROC pFreeObjProc,
+HDEV hdev);
+
+BOOL APIENTRY EngDeleteDriverObj(
+HDRVOBJ hdo,
+BOOL bCallBack,
+BOOL bLocked);
+
+DRIVEROBJ * APIENTRY EngLockDriverObj(HDRVOBJ hdo);
+BOOL APIENTRY EngUnlockDriverObj(HDRVOBJ hdo);
+
+/*
+ * Engine callback - return current process handle.
+ */
+
+HANDLE APIENTRY EngGetProcessHandle();
+
+/*
+ * Pixel formats
+ */
+
+BOOL APIENTRY DrvSetPixelFormat(
+SURFOBJ *pso,
+LONG iPixelFormat,
+HWND hwnd);
+
+LONG APIENTRY DrvDescribePixelFormat(
+DHPDEV dhpdev,
+LONG iPixelFormat,
+ULONG cjpfd,
+PIXELFORMATDESCRIPTOR *ppfd);
+
+/*
+ * Swap buffers
+ */
+
+BOOL APIENTRY DrvSwapBuffers(
+SURFOBJ *pso,
+WNDOBJ *pwo);
+
+/*
+ * Function prototypes - Engine Simulations
+ */
+
+BOOL APIENTRY EngBitBlt(
+SURFOBJ *psoTrg,
+SURFOBJ *psoSrc,
+SURFOBJ *psoMask,
+CLIPOBJ *pco,
+XLATEOBJ *pxlo,
+RECTL *prclTrg,
+POINTL *pptlSrc,
+POINTL *pptlMask,
+BRUSHOBJ *pbo,
+POINTL *pptlBrush,
+ROP4 rop4);
+
+BOOL APIENTRY EngLineTo(
+SURFOBJ *pso,
+CLIPOBJ *pco,
+BRUSHOBJ *pbo,
+LONG x1,
+LONG y1,
+LONG x2,
+LONG y2,
+RECTL *prclBounds,
+MIX mix);
+
+BOOL APIENTRY EngStretchBlt(
+SURFOBJ *psoDest,
+SURFOBJ *psoSrc,
+SURFOBJ *psoMask,
+CLIPOBJ *pco,
+XLATEOBJ *pxlo,
+COLORADJUSTMENT *pca,
+POINTL *pptlHTOrg,
+RECTL *prclDest,
+RECTL *prclSrc,
+POINTL *pptlMask,
+ULONG iMode);
+
+BOOL APIENTRY EngTextOut(
+SURFOBJ *pso,
+STROBJ *pstro,
+FONTOBJ *pfo,
+CLIPOBJ *pco,
+RECTL *prclExtra,
+RECTL *prclOpaque,
+BRUSHOBJ *pboFore,
+BRUSHOBJ *pboOpaque,
+POINTL *pptlOrg,
+MIX mix);
+
+BOOL APIENTRY EngStrokePath(
+SURFOBJ *pso,
+PATHOBJ *ppo,
+CLIPOBJ *pco,
+XFORMOBJ *pxo,
+BRUSHOBJ *pbo,
+POINTL *pptlBrushOrg,
+LINEATTRS *plineattrs,
+MIX mix);
+
+BOOL APIENTRY EngFillPath(
+SURFOBJ *pso,
+PATHOBJ *ppo,
+CLIPOBJ *pco,
+BRUSHOBJ *pbo,
+POINTL *pptlBrushOrg,
+MIX mix,
+FLONG flOptions);
+
+BOOL APIENTRY EngStrokeAndFillPath(
+SURFOBJ *pso,
+PATHOBJ *ppo,
+CLIPOBJ *pco,
+XFORMOBJ *pxo,
+BRUSHOBJ *pboStroke,
+LINEATTRS *plineattrs,
+BRUSHOBJ *pboFill,
+POINTL *pptlBrushOrg,
+MIX mixFill,
+FLONG flOptions);
+
+BOOL APIENTRY EngPaint(
+SURFOBJ *pso,
+CLIPOBJ *pco,
+BRUSHOBJ *pbo,
+POINTL *pptlBrushOrg,
+MIX mix);
+
+BOOL APIENTRY EngCopyBits(
+SURFOBJ *psoDest,
+SURFOBJ *psoSrc,
+CLIPOBJ *pco,
+XLATEOBJ *pxlo,
+RECTL *prclDest,
+POINTL *pptlSrc);
+
+#define PPB_NOCLIP 0x0001
+
+
+//
+// Halftone releated APIs
+//
+
+
+LONG
+APIENTRY
+HT_ComputeRGBGammaTable(
+ USHORT GammaTableEntries,
+ USHORT GammaTableType,
+ USHORT RedGamma,
+ USHORT GreenGamma,
+ USHORT BlueGamma,
+ LPBYTE pGammaTable
+ );
+
+LONG
+APIENTRY
+HT_Get8BPPFormatPalette(
+ LPPALETTEENTRY pPaletteEntry,
+ USHORT RedGamma,
+ USHORT GreenGamma,
+ USHORT BlueGamma
+ );
+
+
+typedef struct _DEVHTINFO {
+ DWORD HTFlags;
+ DWORD HTPatternSize;
+ DWORD DevPelsDPI;
+ COLORINFO ColorInfo;
+ } DEVHTINFO, *PDEVHTINFO;
+
+#define DEVHTADJF_COLOR_DEVICE 0x00000001
+#define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
+
+typedef struct _DEVHTADJDATA {
+ DWORD DeviceFlags;
+ DWORD DeviceXDPI;
+ DWORD DeviceYDPI;
+ PDEVHTINFO pDefHTInfo;
+ PDEVHTINFO pAdjHTInfo;
+ } DEVHTADJDATA, *PDEVHTADJDATA;
+
+LONG
+APIENTRY
+HTUI_DeviceColorAdjustment(
+ LPSTR pDeviceName,
+ PDEVHTADJDATA pDevHTAdjData
+ );
+
+
+//
+// General support APIS
+//
+
+VOID
+APIENTRY
+EngDebugBreak(
+ VOID
+ );
+
+VOID
+APIENTRY
+EngDebugPrint(
+ PCHAR StandardPrefix,
+ PCHAR DebugMessage,
+ va_list ap
+ );
+
+VOID
+APIENTRY
+EngQueryPerformanceCounter(
+ LONGLONG *pPerformanceCount
+ );
+
+VOID
+APIENTRY
+EngQueryPerformanceFrequency(
+ LONGLONG *pFrequency
+ );
+
+//
+// Kernel mode memory operations
+//
+
+#define FL_ZERO_MEMORY 0x00000001
+
+PVOID
+APIENTRY
+EngAllocMem(
+ ULONG Flags,
+ ULONG MemSize,
+ ULONG Tag
+ );
+
+VOID
+APIENTRY
+EngFreeMem(
+ PVOID Mem
+ );
+
+//
+// User mode memory Operations
+//
+
+VOID
+APIENTRY
+EngProbeForRead(
+ PVOID Address,
+ ULONG Length,
+ ULONG Alignment
+ );
+
+VOID
+APIENTRY
+EngProbeForReadAndWrite(
+ PVOID Address,
+ ULONG Length,
+ ULONG Alignment
+ );
+
+PVOID
+APIENTRY
+EngAllocUserMem(
+ ULONG cj,
+ ULONG tag
+ );
+
+HANDLE
+APIENTRY
+EngSecureMem(
+ PVOID Address,
+ ULONG Length
+ );
+
+VOID
+APIENTRY
+EngUnsecureMem(
+ HANDLE hSecure
+ );
+
+
+VOID
+APIENTRY
+EngFreeUserMem(
+ PVOID pv
+ );
+
+
+
+
+DWORD
+APIENTRY
+EngDeviceIoControl(
+ HANDLE hDevice,
+ DWORD dwIoControlCode,
+ LPVOID lpInBuffer,
+ DWORD nInBufferSize,
+ LPVOID lpOutBuffer,
+ DWORD nOutBufferSize,
+ LPDWORD lpBytesReturned
+ );
+
+int
+APIENTRY
+EngMulDiv(
+ int a,
+ int b,
+ int c);
+
+
+//
+// Loading drivers and gettings entry points from them
+//
+
+HANDLE
+APIENTRY
+EngLoadImage(
+ LPWSTR pwszDriver
+ );
+
+PVOID
+APIENTRY
+EngFindImageProcAddress(
+ HANDLE hModule,
+ LPSTR lpProcName
+ );
+
+VOID
+APIENTRY
+EngUnloadImage(
+ HANDLE hModule
+ );
+
+//
+// callback for extra PDEV information
+//
+
+LPWSTR
+APIENTRY
+EngGetPrinterDataFileName(
+ HDEV hdev
+ );
+
+LPWSTR
+APIENTRY
+EngGetDriverName(
+ HDEV hdev
+ );
+
+typedef struct _TYPE1_FONT
+{
+ HANDLE hPFM;
+ HANDLE hPFB;
+ ULONG ulIdentifier;
+} TYPE1_FONT;
+
+
+BOOL
+APIENTRY
+EngGetType1FontList(
+ HDEV hdev,
+ TYPE1_FONT *pType1Buffer,
+ ULONG cjType1Buffer,
+ PULONG pulLocalFonts,
+ PULONG pulRemoteFonts,
+ LARGE_INTEGER *pLastModified
+ );
+
+
+//
+// Manipulating resource sections
+//
+
+HANDLE
+APIENTRY
+EngLoadModule(
+ LPWSTR pwsz
+ );
+
+PVOID
+APIENTRY
+EngMapModule(
+ HANDLE h,
+ PULONG pSize
+ );
+
+PVOID
+APIENTRY
+EngFindResource(
+ HANDLE h,
+ int iName,
+ int iType,
+ PULONG pulSize
+ );
+
+VOID
+APIENTRY
+EngFreeModule(
+ HANDLE h
+ );
+
+//
+// FontFile Callbacks
+//
+
+VOID
+APIENTRY
+EngUnmapFontFile(
+ ULONG iFile
+ );
+
+BOOL
+APIENTRY
+EngMapFontFile(
+ ULONG iFile,
+ PULONG *ppjBuf,
+ ULONG *pcjBuf
+ );
+
+//
+// Semaphores
+//
+
+DECLARE_HANDLE(HSEMAPHORE);
+
+HSEMAPHORE
+APIENTRY
+EngCreateSemaphore(
+ VOID
+ );
+
+VOID
+APIENTRY
+EngAcquireSemaphore(
+ HSEMAPHORE hsem
+ );
+
+VOID
+APIENTRY
+EngReleaseSemaphore(
+ HSEMAPHORE hsem
+ );
+
+VOID
+APIENTRY
+EngDeleteSemaphore(
+ HSEMAPHORE hsem
+ );
+
+VOID
+APIENTRY
+EngMultiByteToUnicodeN(
+ LPWSTR UnicodeString,
+ ULONG MaxBytesInUnicodeString,
+ PULONG BytesInUnicodeString,
+ PCHAR MultiByteString,
+ ULONG BytesInMultiByteString
+ );
+
+VOID
+APIENTRY
+EngUnicodeToMultiByteN(
+ PCHAR MultiByteString,
+ ULONG MaxBytesInMultiByteString,
+ PULONG BytesInMultiByteString,
+ PWSTR UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+
+
+
+// for the spooler
+
+DWORD
+APIENTRY
+EngGetPrinterData(
+ HANDLE hPrinter,
+ LPWSTR pValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD nSize,
+ LPDWORD pcbNeeded
+ );
+
+
+DWORD
+APIENTRY
+EngSetPrinterData(
+ HANDLE hPrinter,
+ LPWSTR pType,
+ DWORD dwType,
+ LPBYTE lpbPrinterData,
+ DWORD cjPrinterData
+);
+
+
+BOOL
+APIENTRY
+EngGetForm(
+ HANDLE hPrinter,
+ LPWSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+ );
+
+BOOL
+APIENTRY
+EngWritePrinter(
+ HANDLE hPrinter,
+ LPVOID pBuf,
+ DWORD cbBuf,
+ LPDWORD pcWritten
+ );
+
+
+BOOL
+APIENTRY
+EngGetPrinter(
+ HANDLE hPrinter,
+ DWORD dwLevel,
+ LPBYTE pPrinter,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+
+
+BOOL
+APIENTRY
+EngEnumForms(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+ );
+
+
+ULONG
+APIENTRY
+EngEscape(
+ HANDLE hPrinter,
+ ULONG iEsc,
+ ULONG cjIn,
+ PVOID pvIn,
+ ULONG cjOut,
+ PVOID pvOut
+ );
+
+
+#ifdef _X86_
+
+ typedef struct _FLOATOBJ
+ {
+ ULONG ul1;
+ ULONG ul2;
+ } FLOATOBJ, *PFLOATOBJ;
+
+ VOID FLOATOBJ_SetFloat(PFLOATOBJ,FLOAT);
+ VOID FLOATOBJ_SetLong(PFLOATOBJ,LONG);
+
+ LONG FLOATOBJ_GetFloat(PFLOATOBJ);
+ LONG FLOATOBJ_GetLong(PFLOATOBJ);
+
+ VOID FLOATOBJ_AddFloat(PFLOATOBJ,FLOAT);
+ VOID FLOATOBJ_AddLong(PFLOATOBJ,LONG);
+ VOID FLOATOBJ_Add(PFLOATOBJ,PFLOATOBJ);
+
+ VOID FLOATOBJ_SubFloat(PFLOATOBJ,FLOAT);
+ VOID FLOATOBJ_SubLong(PFLOATOBJ,LONG);
+ VOID FLOATOBJ_Sub(PFLOATOBJ,PFLOATOBJ);
+
+ VOID FLOATOBJ_MulFloat(PFLOATOBJ,FLOAT);
+ VOID FLOATOBJ_MulLong(PFLOATOBJ,LONG);
+ VOID FLOATOBJ_Mul(PFLOATOBJ,PFLOATOBJ);
+
+ VOID FLOATOBJ_DivFloat(PFLOATOBJ,FLOAT);
+ VOID FLOATOBJ_DivLong(PFLOATOBJ,LONG);
+ VOID FLOATOBJ_Div(PFLOATOBJ,PFLOATOBJ);
+
+ VOID FLOATOBJ_Neg(PFLOATOBJ);
+
+ BOOL FLOATOBJ_EqualLong(PFLOATOBJ,LONG);
+ BOOL FLOATOBJ_GreaterThanLong(PFLOATOBJ,LONG);
+ BOOL FLOATOBJ_LessThanLong(PFLOATOBJ,LONG);
+
+ BOOL FLOATOBJ_Equal(PFLOATOBJ,PFLOATOBJ);
+ BOOL FLOATOBJ_GreaterThan(PFLOATOBJ,PFLOATOBJ);
+ BOOL FLOATOBJ_LessThan(PFLOATOBJ,PFLOATOBJ);
+
+
+#else
+
+ // any platform that has support for floats in the kernel
+
+ typedef FLOAT FLOATOBJ;
+ typedef FLOAT *PFLOATOBJ;
+
+ #define FLOATOBJ_SetFloat(pf,f) {*(pf) = (f); }
+ #define FLOATOBJ_SetLong(pf,l) {*(pf) = (FLOAT)(l); }
+
+ #define FLOATOBJ_GetFloat(pf) *((PULONG)pf)
+ #define FLOATOBJ_GetLong(pf) (LONG)*(pf)
+
+ #define FLOATOBJ_AddFloat(pf,f) {*(pf) += f; }
+ #define FLOATOBJ_AddLong(pf,l) {*(pf) += (LONG)(l); }
+ #define FLOATOBJ_Add(pf,pf1) {*(pf) += *(pf1); }
+
+ #define FLOATOBJ_SubFloat(pf,f) {*(pf) -= f; }
+ #define FLOATOBJ_SubLong(pf,l) {*(pf) -= (LONG)(l); }
+ #define FLOATOBJ_Sub(pf,pf1) {*(pf) -= *(pf1); }
+
+ #define FLOATOBJ_MulFloat(pf,f) {*(pf) *= f; }
+ #define FLOATOBJ_MulLong(pf,l) {*(pf) *= (LONG)(l); }
+ #define FLOATOBJ_Mul(pf,pf1) {*(pf) *= *(pf1); }
+
+ #define FLOATOBJ_DivFloat(pf,f) {*(pf) /= f; }
+ #define FLOATOBJ_DivLong(pf,l) {*(pf) /= (LONG)(l); }
+ #define FLOATOBJ_Div(pf,pf1) {*(pf) /= *(pf1); }
+
+ #define FLOATOBJ_Neg(pf) {*(pf) = -*(pf); }
+
+ #define FLOATOBJ_EqualLong(pf,l) (*(pf) == (FLOAT)(l))
+ #define FLOATOBJ_GreaterThanLong(pf,l) (*(pf) > (FLOAT)(l))
+ #define FLOATOBJ_LessThanLong(pf,l) (*(pf) < (FLOAT)(l))
+
+ #define FLOATOBJ_Equal(pf,pf1) (*(pf) == *(pf1))
+ #define FLOATOBJ_GreaterThan(pf,pf1) (*(pf) > *(pf1))
+ #define FLOATOBJ_LessThan(pf,pf1) (*(pf) < *(pf1))
+
+
+#endif // _FLOATOBJ_
+
+typedef struct tagFLOATOBJ_XFORM
+{
+ FLOATOBJ eM11;
+ FLOATOBJ eM12;
+ FLOATOBJ eM21;
+ FLOATOBJ eM22;
+ FLOATOBJ eDx;
+ FLOATOBJ eDy;
+} FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
+
+ULONG
+APIENTRY
+XFORMOBJ_iGetFloatObjXform(
+ XFORMOBJ *pxo,
+ FLOATOBJ_XFORM * pfxo);
+
+// SORT specific defines
+
+typedef int (__cdecl *SORTCOMP)(const void *pv1, const void *pv2);
+
+VOID
+APIENTRY
+EngSort(
+ PBYTE pjBuf,
+ ULONG c,
+ ULONG cjElem,
+ SORTCOMP pfnComp);
+
+typedef struct _ENG_TIME_FIELDS {
+ USHORT usYear; // range [1601...]
+ USHORT usMonth; // range [1..12]
+ USHORT usDay; // range [1..31]
+ USHORT usHour; // range [0..23]
+ USHORT usMinute; // range [0..59]
+ USHORT usSecond; // range [0..59]
+ USHORT usMilliseconds;// range [0..999]
+ USHORT usWeekday; // range [0..6] == [Sunday..Saturday]
+} ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
+
+VOID EngQueryLocalTime(
+ PENG_TIME_FIELDS);
+
+
+
+FD_GLYPHSET *
+APIENTRY
+EngComputeGlyphSet(
+ INT nCodePage,
+ INT nFirstChar,
+ INT cChars
+ );
+
+
+INT
+APIENTRY
+EngMultiByteToWideChar(
+ UINT CodePage,
+ LPWSTR WideCharString,
+ INT BytesInWideCharString,
+ LPSTR MultiByteString,
+ INT BytesInMultiByteString
+ );
+
+INT
+APIENTRY
+EngWideCharToMultiByte(
+ UINT CodePage,
+ LPWSTR WideCharString,
+ INT BytesInWideCharString,
+ LPSTR MultiByteString,
+ INT BytesInMultiByteString
+ );
+
+VOID
+APIENTRY
+EngGetCurrentCodePage(
+ PUSHORT OemCodePage,
+ PUSHORT AnsiCodePage
+ );
+
+
+HANDLE
+APIENTRY
+EngLoadModuleForWrite(
+ LPWSTR pwsz,
+ ULONG cjSizeOfModule
+ );
+
+BOOL
+APIENTRY
+EngGetFileChangeTime(
+ HANDLE h,
+ LARGE_INTEGER *pChangeTime
+ );
+
+LPWSTR
+APIENTRY
+EngGetFilePath(
+ HANDLE h
+ );
+
+#endif // _WINDDI_
diff --git a/public/oak/inc/winddiui.h b/public/oak/inc/winddiui.h
new file mode 100644
index 000000000..8dbc83c57
--- /dev/null
+++ b/public/oak/inc/winddiui.h
@@ -0,0 +1,434 @@
+/********************************************************************
+
+ WinDDiUi.h -- Header file for the UI portion of printer drivers.
+
+ Copyright (c) 1995 1996, Microsoft Corp.
+ All rights reserved.
+
+********************************************************************/
+
+#ifndef _WINDDIUI_
+#define _WINDDIUI_
+
+#include <compstui.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+//
+// DrvDevicePropertySheets replace previous version of PrinterProperties
+//
+
+LONG
+DrvDevicePropertySheets(
+ PPROPSHEETUI_INFO pPSUIInfo,
+ LPARAM lParam
+ );
+
+typedef struct _DEVICEPROPERTYHEADER {
+ WORD cbSize;
+ WORD Flags;
+ HANDLE hPrinter;
+ LPTSTR pszPrinterName;
+} DEVICEPROPERTYHEADER, *PDEVICEPROPERTYHEADER;
+
+#define DPS_NOPERMISSION 0x0001
+
+
+//
+// For document properties replace DocumentProperties.
+//
+// Note: if pPSUIInfo is NULL then the call need not to display any dialog
+// boxes (Ignored the DC_PROMPT bit in the fMode, the lParam in this case
+// is a pointer to DOCUMENTPROPERTYHEADER
+//
+
+LONG
+DrvDocumentPropertySheets(
+ PPROPSHEETUI_INFO pPSUIInfo,
+ LPARAM lParam
+ );
+
+typedef struct _DOCUMENTPROPERTYHEADER {
+ WORD cbSize;
+ WORD Reserved;
+ HANDLE hPrinter;
+ LPTSTR pszPrinterName;
+ PDEVMODE pdmIn;
+ PDEVMODE pdmOut;
+ DWORD cbOut;
+ DWORD fMode;
+} DOCUMENTPROPERTYHEADER, *PDOCUMENTPROPERTYHEADER;
+
+#define DM_ADVANCED 0x10
+#define DM_NOPERMISSION 0x20
+#define DM_USER_DEFAULT 0x40
+
+
+// Devmode conversion function used by GetPrinter and SetPrinter
+
+BOOL
+DrvConvertDevMode(
+ LPTSTR pPrinterName,
+ PDEVMODE pdmIn,
+ PDEVMODE pdmOut,
+ PLONG pcbNeeded,
+ DWORD fMode
+ );
+
+#define CDM_CONVERT 0x01
+#define CDM_CONVERT351 0x02
+#define CDM_DRIVER_DEFAULT 0x04
+
+
+//
+// This is for DevQueryPrintEx()
+//
+
+typedef struct _DEVQUERYPRINT_INFO {
+ WORD cbSize; // size of this structure in bytes
+ WORD Level; // Level of this info, 1 for this version
+ HANDLE hPrinter; // handle to the printer for the query
+ DEVMODE *pDevMode; // pointer to the DEVMODE for this job.
+ LPTSTR pszErrorStr; // pointer to the error string buffer.
+ DWORD cchErrorStr; // count characters of pwErrorStr passed.
+ DWORD cchNeeded; // count characters of pwErrorStr needed.
+ } DEVQUERYPRINT_INFO, *PDEVQUERYPRINT_INFO;
+
+BOOL
+DevQueryPrintEx(
+ PDEVQUERYPRINT_INFO pDQPInfo
+ );
+
+//
+// This for the DrvUpgradePrinter
+//
+
+typedef struct _DRIVER_UPGRADE_INFO_1 {
+ LPTSTR pPrinterName;
+ LPTSTR pOldDriverDirectory;
+ } DRIVER_UPGRADE_INFO_1, *PDRIVER_UPGRADE_INFO_1;
+
+BOOL
+DrvUpgradePrinter(
+ DWORD Level,
+ LPBYTE pDriverUpgradeInfo
+ );
+
+//
+// DrvDocumentEvent
+//
+//
+// Defines and proto-types for hooking GDI printer management functions
+//
+// return values: -1 means error, 0 means not supported function
+//
+// CreateDCPre must return > 0 or none of the others will be called.
+//
+//
+// CREATEDCPRE
+// return failure from CreateDC if this fails, CREATEDCPOST not called
+// bIC - TRUE if came from CreateIC
+// output devmode - this is the devmode that actualy gets passed to the
+// server side driver. Any data needed in EnablePDEV should be passed
+// as part of the DriverExtra.
+//
+// CREATEDCPOST
+// return value is ignored
+// the hdc will be 0 if something failed since CREATEDCPRE
+// The input buffer contains a pointer to the devmode returned in the
+// CREATEDCPRE output buffer
+//
+// RESETDCPRE
+// return failure from ResetDC if this fails, CREATEDCPOST not called
+//
+// RESETDCPOST
+// return value is ignored
+//
+// STARTDOCPRE
+// return failure form StartDoc if this fails, driver not called
+//
+// STARTDOCPOST
+// return failure form StartDoc if this fails, driver already called.
+// AbortDoc() called.
+//
+// STARTPAGE
+// return failure form EndPage if this fails, driver not called
+//
+// ENDPAGE
+// return value is ignored, DrvEndPage always called
+//
+// ENDDOCPRE
+// return value is ignored, DrvEndDoc always called
+//
+// ENDDOCPOST
+// return value is ignored, DrvEndDoc has alreadybeen called
+//
+// ABORTDOC
+// return value is ignored
+//
+// DELETEDC
+// return value is ignored
+//
+// EXTESCAPE
+// return value is ignored
+// The input buffer includes the ExtEscape escape value, size of input
+// buffer to ExtEscape and the input buffer passed in.
+// The output buffer is just the buffer that was passed to ExtEscape
+//
+// DOCUMENTEVENT_SPOOLED
+// This flag is added to the iEsc value if the document is being spooled
+// to a metafile rather than going direct. Note that if this bit is set
+//
+//
+
+#define DOCUMENTEVENT_EVENT(iEsc) (LOWORD(iEsc))
+#define DOCUMENTEVENT_FLAGS(iEsc) (HIWORD(iEsc))
+
+//
+// Escape codes for DrvDocumentEvent
+//
+
+#define DOCUMENTEVENT_FIRST 1 // Inclusive lower bound
+#define DOCUMENTEVENT_CREATEDCPRE 1 // in-pszDriver, pszDevice, pdm, bIC, out-ppdm
+#define DOCUMENTEVENT_CREATEDCPOST 2 // in-ppdm
+#define DOCUMENTEVENT_RESETDCPRE 3 // in-pszDriver, pszDevice, pdm, out-ppdm
+#define DOCUMENTEVENT_RESETDCPOST 4 // in-ppdm
+#define DOCUMENTEVENT_STARTDOC 5 // none
+#define DOCUMENTEVENT_STARTDOCPRE 5 // none
+#define DOCUMENTEVENT_STARTPAGE 6 // none
+#define DOCUMENTEVENT_ENDPAGE 7 // none
+#define DOCUMENTEVENT_ENDDOC 8 // none
+#define DOCUMENTEVENT_ENDDOCPRE 8 // none
+#define DOCUMENTEVENT_ABORTDOC 9 // none
+#define DOCUMENTEVENT_DELETEDC 10 // none
+#define DOCUMENTEVENT_ESCAPE 11 // in-iEsc, cjInBuf, inBuf, out-outBuf
+#define DOCUMENTEVENT_ENDDOCPOST 12 // none
+#define DOCUMENTEVENT_STARTDOCPOST 13 // none
+#define DOCUMENTEVENT_LAST 14 // Non-inclusive upper bound
+
+#define DOCUMENTEVENT_SPOOLED 0x10000
+
+//
+// Return values for DrvDocumentEvent
+//
+
+#define DOCUMENTEVENT_SUCCESS 1
+#define DOCUMENTEVENT_UNSUPPORTED 0
+#define DOCUMENTEVENT_FAILURE -1
+
+int
+DrvDocumentEvent(
+ HANDLE hPrinter,
+ HDC hdc,
+ int iEsc,
+ ULONG cbIn,
+ PULONG pbIn,
+ ULONG cbOut,
+ PULONG pbOut
+);
+
+
+//
+// DrvPrinterEvent
+//
+//
+// DrvPrinterEvent are called by the print subsystem when events
+// happen that might be of interest to a printer driver
+// The only event which should be implemented in the driver
+// is PRITNER_EVENT_INITIALIZE so that default settings are created
+// for the printer.
+//
+// PRINTER_EVENT_ADD_CONNECTION
+// return value ignored
+// Called after a successful AddPrinterConnection API
+// in the context of the calling app
+// lParam NULL
+//
+// PRINTER_EVENT_DELETE_CONNECTION
+// return value ignored
+// Called Before DeletePrinterConnect API
+// in the context of the calling app
+// lParam NULL
+//
+// PRINTER_EVENT_INITIALIZE
+// Called when a printer is created for the driver to
+// initialize its registry settings
+// Called in the spooler process
+// lParam NULL
+//
+// PRINTER_EVENT_DELETE
+// Called when a printer is about to be deleted
+// Called in the spooler process
+// lParam NULL
+//
+// PRINTER_EVENT_CACHE_REFRESH
+// return value ignored
+// called in spooler process
+// No UI
+// called when spooler detects that something has
+// changed in the workstaion cache or when establishing
+// the cache.
+// allows driver to update any private cache data
+// ( such as font files etc. )
+//
+// PRINTER_EVENT_CACHE_DELETE
+// return value ignored
+// called in spooler process
+// No UI
+// called when spooler is deleting a cached printer
+// allows printer driver to delete anything it has
+// cached
+//
+// PRINTER_EVENT_FLAG_NO_UI
+// Do not bring up UI when this flag it ON
+//
+
+//
+// DrvPrinterEvent DriverEvent code
+//
+
+#define PRINTER_EVENT_ADD_CONNECTION 1
+#define PRINTER_EVENT_DELETE_CONNECTION 2
+#define PRINTER_EVENT_INITIALIZE 3
+#define PRINTER_EVENT_DELETE 4
+#define PRINTER_EVENT_CACHE_REFRESH 5
+#define PRINTER_EVENT_CACHE_DELETE 6
+
+//
+// DrvPrinterEvent Flags
+//
+
+#define PRINTER_EVENT_FLAG_NO_UI 0x00000001
+
+
+BOOL
+DrvPrinterEvent(
+ LPWSTR pPrinterName,
+ int DriverEvent,
+ DWORD Flags,
+ LPARAM lParam
+);
+
+
+//
+// User Mode Printer Driver DLL,
+//
+// Note on hPrinter passed into DrvSplStartDoc() and subsequent
+// DrvSplxxx calls
+//
+//
+// A. If you have DrvSplxxxx calls in separate DLL and link it with
+// spoolss.lib.
+//
+// * The hPrinter will be valid for any call to the spooler, such as
+// WritePrinter(), GetPrinterData()
+//
+// * To do this you must
+//
+// 1. Have separate DLL for all DrvSplxxx functions.
+// 2. Put this DLL name into your dependency files (inf).
+// 3. link to spoolss.lib rather than winspool.lib
+// 4. Use SetPrinterData() with SPLPRINTER_USER_MODE_PRINTER_DRIVER
+// as key name, and this DLL name as data.
+// 5. Call any spooler functions linked from spoolss.lib
+//
+//
+//
+// B. If you have DrvSplxxx calls located in your printer driver UI DLL and
+// linked with winspool.lib
+//
+// * The hPrinter is NOT valid for any spooler calls, such as
+// WritePrinter(), GetPrinterData() from within the DrvSplxxx driver
+// functions.
+//
+// * To do any spooler call from inside of DrvSplxxxx function you must
+// do the following
+//
+// 1. hSpoolSS = LoadLibrary("spoolss.dll");
+// 2. pfn = GetProcAddress("WritePrinter") or whatever the spooler
+// functions you wish to call
+// 3. Call the pfn function pointer returned from GetProcAddress()
+// 4. FreeLibrary(hSpoolSS);
+//
+//
+// The A method is recommended.
+//
+//
+// If a UserModePrinterDriver DLL is created the following routines are
+// required or optional
+//
+// Required Routines
+// DrvSplStartDoc
+// DrvSplWritePrinter
+// DrvSplEndDoc
+// DrvSplClose
+//
+//
+// Optional Routines
+// DrvSplStart
+// DrvSplEndPage
+// DrvSplAbort
+//
+//
+
+
+HANDLE
+DrvSplStartDoc(
+ HANDLE hPrinter,
+ DWORD JobId
+);
+
+
+BOOL
+DrvSplWritePrinter(
+ HANDLE hDriver,
+ LPVOID pBuf,
+ DWORD cbBuf,
+ LPDWORD pcWritten
+);
+
+VOID
+DrvSplEndDoc(
+ HANDLE hDriver
+);
+
+
+VOID
+DrvSplClose(
+ HANDLE hDriver
+);
+
+
+BOOL
+DrvSplStartPage(
+ HANDLE hDriver
+);
+
+BOOL
+DrvSplEndPage(
+ HANDLE hDriver
+);
+
+VOID
+DrvSplAbort(
+ HANDLE hDriver
+);
+
+
+
+//
+// Printer Attribute
+// Use with SetPrinterData to define UMPD.DLL
+//
+
+#define SPLPRINTER_USER_MODE_PRINTER_DRIVER TEXT("SPLUserModePrinterDriver")
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_WINDDIUI_ */
diff --git a/public/oak/inc/winsecp.h b/public/oak/inc/winsecp.h
new file mode 100644
index 000000000..9c4854f79
--- /dev/null
+++ b/public/oak/inc/winsecp.h
@@ -0,0 +1,42 @@
+/*++ BUILD Version: ???? Increment this if a change has global effects
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ winsecp.h
+
+Abstract:
+
+ Obsolete private Windows security definitions.
+
+Revision History:
+
+--*/
+
+#ifndef _WINSECP_
+#define _WINSECP_
+
+/*++ BUILD Version: 0003 // Increment this if a change has global effects
+
+Copyright (c) 1985-91, Microsoft Corporation
+
+Module Name:
+
+
+Abstract:
+
+ Procedure declarations, constant definitions and macros for the User
+ component.
+
+--*/
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _WINSECP_ */
+
diff --git a/public/oak/inc/winsplp.h b/public/oak/inc/winsplp.h
new file mode 100644
index 000000000..bfeb54591
--- /dev/null
+++ b/public/oak/inc/winsplp.h
@@ -0,0 +1,723 @@
+/*++
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ WinSplp.h
+
+Abstract:
+
+ Internal Header file for Print APIs
+
+Author:
+
+ Dave Snipp (DaveSn) 15-Mar-1991
+
+Revision History:
+
+--*/
+
+#ifndef _WINSPLP_
+#define _WINSPLP_
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#define PRINTER_NOTIFY_STATUS_ENDPOINT 1
+#define PRINTER_NOTIFY_STATUS_POLL 2
+#define PRINTER_NOTIFY_STATUS_INFO 4
+
+
+#define ROUTER_UNKNOWN 0
+#define ROUTER_SUCCESS 1
+#define ROUTER_STOP_ROUTING 2
+
+
+typedef struct _PRINTER_NOTIFY_INIT {
+ DWORD Size;
+ DWORD Reserved;
+ DWORD PollTime;
+} PRINTER_NOTIFY_INIT, *PPRINTER_NOTIFY_INIT, *LPPRINTER_NOTIFY_INIT;
+
+typedef struct _SPLCLIENT_INFO_1{
+ DWORD dwSize;
+ LPWSTR pMachineName;
+ LPWSTR pUserName;
+ DWORD dwBuildNum;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ WORD wProcessorArchitecture;
+} SPLCLIENT_INFO_1, *PSPLCLIENT_INFO_1, *LPSPLCLIENT_INFO_1;
+
+
+typedef struct _PRINTPROVIDOR {
+
+ BOOL (*fpOpenPrinter)(LPWSTR pPrinterName,
+ LPHANDLE phPrinter,
+ LPPRINTER_DEFAULTS pDefault);
+
+ BOOL (*fpSetJob)(HANDLE hPrinter,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD Command);
+
+ BOOL (*fpGetJob)(HANDLE hPrinter,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded);
+
+ BOOL (*fpEnumJobs)(HANDLE hPrinter,
+ DWORD FirstJob,
+ DWORD NoJobs,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+
+ HANDLE (*fpAddPrinter)(LPWSTR pName,
+ DWORD Level,
+ LPBYTE pPrinter);
+
+ BOOL (*fpDeletePrinter)(HANDLE hPrinter);
+
+ BOOL (*fpSetPrinter)(HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pPrinter,
+ DWORD Command);
+
+ BOOL (*fpGetPrinter)(HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pPrinter,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded);
+
+ BOOL (*fpEnumPrinters)(DWORD Flags,
+ LPWSTR Name,
+ DWORD Level,
+ LPBYTE pPrinterEnum,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+
+ BOOL (*fpAddPrinterDriver)(LPWSTR pName,
+ DWORD Level,
+ LPBYTE pDriverInfo);
+
+ BOOL (*fpEnumPrinterDrivers)(LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+
+ BOOL (*fpGetPrinterDriver)(HANDLE hPrinter,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded);
+
+ BOOL (*fpGetPrinterDriverDirectory)(LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverDirectory,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded);
+
+ BOOL (*fpDeletePrinterDriver)(LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pDriverName);
+
+ BOOL (*fpAddPrintProcessor)(LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pPathName,
+ LPWSTR pPrintProcessorName);
+
+ BOOL (*fpEnumPrintProcessors)(LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+
+ BOOL (*fpGetPrintProcessorDirectory)(LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded);
+
+ BOOL (*fpDeletePrintProcessor)(LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pPrintProcessorName);
+
+ BOOL (*fpEnumPrintProcessorDatatypes)(LPWSTR pName,
+ LPWSTR pPrintProcessorName,
+ DWORD Level,
+ LPBYTE pDataypes,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+
+ DWORD (*fpStartDocPrinter)(HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pDocInfo);
+
+ BOOL (*fpStartPagePrinter)(HANDLE hPrinter);
+
+ BOOL (*fpWritePrinter)(HANDLE hPrinter,
+ LPVOID pBuf,
+ DWORD cbBuf,
+ LPDWORD pcWritten);
+
+ BOOL (*fpEndPagePrinter)(HANDLE hPrinter);
+
+ BOOL (*fpAbortPrinter)(HANDLE hPrinter);
+
+ BOOL (*fpReadPrinter)(HANDLE hPrinter,
+ LPVOID pBuf,
+ DWORD cbBuf,
+ LPDWORD pNoBytesRead);
+
+ BOOL (*fpEndDocPrinter)(HANDLE hPrinter);
+
+ BOOL (*fpAddJob)(HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pData,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded);
+
+ BOOL (*fpScheduleJob)(HANDLE hPrinter,
+ DWORD JobId);
+
+ DWORD (*fpGetPrinterData)(HANDLE hPrinter,
+ LPWSTR pValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD nSize,
+ LPDWORD pcbNeeded);
+
+ DWORD (*fpSetPrinterData)(HANDLE hPrinter,
+ LPWSTR pValueName,
+ DWORD Type,
+ LPBYTE pData,
+ DWORD cbData);
+
+ DWORD (*fpWaitForPrinterChange)(HANDLE hPrinter, DWORD Flags);
+
+ BOOL (*fpClosePrinter)(HANDLE hPrinter);
+
+ BOOL (*fpAddForm)(HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm);
+
+ BOOL (*fpDeleteForm)(HANDLE hPrinter,
+ LPWSTR pFormName);
+
+ BOOL (*fpGetForm)(HANDLE hPrinter,
+ LPWSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded);
+
+ BOOL (*fpSetForm)(HANDLE hPrinter,
+ LPWSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm);
+
+ BOOL (*fpEnumForms)(HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+
+ BOOL (*fpEnumMonitors)(LPWSTR pName,
+ DWORD Level,
+ LPBYTE pMonitors,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+
+ BOOL (*fpEnumPorts)(LPWSTR pName,
+ DWORD Level,
+ LPBYTE pPorts,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+
+ BOOL (*fpAddPort)(LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pMonitorName);
+
+ BOOL (*fpConfigurePort)(LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pPortName);
+
+ BOOL (*fpDeletePort)(LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pPortName);
+
+ HANDLE (*fpCreatePrinterIC)(HANDLE hPrinter,
+ LPDEVMODEW pDevMode);
+
+ BOOL (*fpPlayGdiScriptOnPrinterIC)(HANDLE hPrinterIC,
+ LPBYTE pIn,
+ DWORD cIn,
+ LPBYTE pOut,
+ DWORD cOut,
+ DWORD ul);
+
+ BOOL (*fpDeletePrinterIC)(HANDLE hPrinterIC);
+
+ BOOL (*fpAddPrinterConnection)(LPWSTR pName);
+
+ BOOL (*fpDeletePrinterConnection)(LPWSTR pName);
+
+ DWORD (*fpPrinterMessageBox)(HANDLE hPrinter,
+ DWORD Error,
+ HWND hWnd,
+ LPWSTR pText,
+ LPWSTR pCaption,
+ DWORD dwType);
+
+ BOOL (*fpAddMonitor)(LPWSTR pName,
+ DWORD Level,
+ LPBYTE pMonitorInfo);
+
+ BOOL (*fpDeleteMonitor)(LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pMonitorName);
+
+ BOOL (*fpResetPrinter)(HANDLE hPrinter,
+ LPPRINTER_DEFAULTS pDefault);
+
+ BOOL (*fpGetPrinterDriverEx)(HANDLE hPrinter,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ DWORD dwClientMajorVersion,
+ DWORD dwClientMinorVersion,
+ PDWORD pdwServerMajorVersion,
+ PDWORD pdwServerMinorVersion);
+
+ BOOL (*fpFindFirstPrinterChangeNotification)(
+ HANDLE hPrinter,
+ DWORD fdwFlags,
+ DWORD fdwOptions,
+ HANDLE hNotify,
+ PDWORD pfdwStatus,
+ PVOID pPrinterNotifyOptions,
+ PVOID pPrinterNotifyInit);
+
+ BOOL (*fpFindClosePrinterChangeNotification)(HANDLE hPrinter);
+
+
+ BOOL (*fpAddPortEx)(LPWSTR pName,
+ DWORD Level,
+ LPBYTE lpBuffer,
+ LPWSTR lpMonitorName);
+
+ BOOL (*fpShutDown)(LPVOID pvReserved);
+
+ BOOL (*fpRefreshPrinterChangeNotification)(HANDLE hPrinter,
+ DWORD Reserved,
+ PVOID pvReserved,
+ PVOID pPrinterNotifyInfo);
+
+ BOOL (*fpOpenPrinterEx)(LPWSTR pPrinterName,
+ LPHANDLE phPrinter,
+ LPPRINTER_DEFAULTS pDefault,
+ LPBYTE pClientInfo,
+ DWORD Level);
+
+ HANDLE (*fpAddPrinterEx)(LPWSTR pName,
+ DWORD Level,
+ LPBYTE pPrinter,
+ LPBYTE pClientInfo,
+ DWORD ClientInfoLevel);
+
+ BOOL (*fpSetPort)(LPWSTR pName,
+ LPWSTR pPortName,
+ DWORD Level,
+ LPBYTE pPortInfo);
+
+ DWORD (*fpEnumPrinterData)(HANDLE hPrinter,
+ DWORD dwIndex,
+ LPWSTR pValueName,
+ DWORD cbValueName,
+ LPDWORD pcbValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD cbData,
+ LPDWORD pcbData);
+
+ DWORD (*fpDeletePrinterData)(HANDLE hPrinter,
+ LPWSTR pValueName);
+
+ } PRINTPROVIDOR, *LPPRINTPROVIDOR;
+
+BOOL
+InitializePrintProvidor(
+ LPPRINTPROVIDOR pPrintProvidor,
+ DWORD cbPrintProvidor,
+ LPWSTR pFullRegistryPath
+);
+
+typedef struct _PRINTPROCESSOROPENDATA {
+ PDEVMODE pDevMode;
+ LPWSTR pDatatype;
+ LPWSTR pParameters;
+ LPWSTR pDocumentName;
+ DWORD JobId;
+ LPWSTR pOutputFile;
+ LPWSTR pPrinterName;
+} PRINTPROCESSOROPENDATA, *PPRINTPROCESSOROPENDATA, *LPPRINTPROCESSOROPENDATA;
+
+HANDLE
+OpenPrintProcessor(
+ LPWSTR pPrinterName,
+ PPRINTPROCESSOROPENDATA pPrintProcessorOpenData
+);
+
+BOOL
+PrintDocumentOnPrintProcessor(
+ HANDLE hPrintProcessor,
+ LPWSTR pDocumentName
+);
+
+BOOL
+ClosePrintProcessor(
+ HANDLE hPrintProcessor
+);
+
+BOOL
+ControlPrintProcessor(
+ HANDLE hPrintProcessor,
+ DWORD Command
+);
+
+BOOL
+InstallPrintProcessor(
+ HWND hWnd
+);
+
+
+BOOL
+InitializeMonitor(
+ LPWSTR pRegistryRoot
+);
+
+BOOL
+OpenPort(
+ LPWSTR pName,
+ PHANDLE pHandle
+);
+
+BOOL
+WritePort(
+ HANDLE hPort,
+ LPBYTE pBuffer,
+ DWORD cbBuf,
+ LPDWORD pcbWritten
+);
+
+BOOL
+ReadPort(
+ HANDLE hPort,
+ LPBYTE pBuffer,
+ DWORD cbBuffer,
+ LPDWORD pcbRead
+);
+
+BOOL
+ClosePort(
+ HANDLE hPort
+);
+
+typedef struct _MONITOR
+{
+ BOOL (WINAPI *pfnEnumPorts)
+ (
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pPorts,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+ );
+
+ BOOL (WINAPI *pfnOpenPort)
+ (
+ LPWSTR pName,
+ PHANDLE pHandle
+ );
+
+ BOOL (WINAPI *pfnOpenPortEx)
+ (
+ LPWSTR pPortName,
+ LPWSTR pPrinterName,
+ PHANDLE pHandle,
+ struct _MONITOR FAR *pMonitor
+ );
+
+
+ BOOL (WINAPI *pfnStartDocPort)
+ (
+ HANDLE hPort,
+ LPWSTR pPrinterName,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pDocInfo
+ );
+
+ BOOL (WINAPI *pfnWritePort)
+ (
+ HANDLE hPort,
+ LPBYTE pBuffer,
+ DWORD cbBuf,
+ LPDWORD pcbWritten
+ );
+
+ BOOL (WINAPI *pfnReadPort)
+ (
+ HANDLE hPort,
+ LPBYTE pBuffer,
+ DWORD cbBuffer,
+ LPDWORD pcbRead
+ );
+
+ BOOL (WINAPI *pfnEndDocPort)
+ (
+ HANDLE hPort
+ );
+
+ BOOL (WINAPI *pfnClosePort)
+ (
+ HANDLE hPort
+ );
+
+ BOOL (WINAPI *pfnAddPort)
+ (
+ LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pMonitorName
+ );
+
+ BOOL (WINAPI *pfnAddPortEx)
+ (
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE lpBuffer,
+ LPWSTR lpMonitorName
+ );
+
+ BOOL (WINAPI *pfnConfigurePort)
+ (
+ LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pPortName
+ );
+
+ BOOL (WINAPI *pfnDeletePort)
+ (
+ LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pPortName
+ );
+
+ BOOL (WINAPI *pfnGetPrinterDataFromPort)
+ (
+ HANDLE hPort,
+ DWORD ControlID,
+ LPWSTR pValueName,
+ LPWSTR lpInBuffer,
+ DWORD cbInBuffer,
+ LPWSTR lpOutBuffer,
+ DWORD cbOutBuffer,
+ LPDWORD lpcbReturned
+ );
+
+ BOOL (WINAPI *pfnSetPortTimeOuts)
+ (
+ HANDLE hPort,
+ LPCOMMTIMEOUTS lpCTO,
+ DWORD reserved // must be set to 0
+ );
+
+} MONITOR, FAR *LPMONITOR;
+
+typedef struct _MONITOREX
+{
+ DWORD dwMonitorSize;
+ MONITOR Monitor;
+
+} MONITOREX, FAR *LPMONITOREX;
+
+HANDLE
+CreatePrinterIC(
+ HANDLE hPrinter,
+ LPDEVMODEW pDevMode
+);
+
+BOOL
+PlayGdiScriptOnPrinterIC(
+ HANDLE hPrinterIC,
+ LPBYTE pIn,
+ DWORD cIn,
+ LPBYTE pOut,
+ DWORD cOut,
+ DWORD ul
+);
+
+BOOL
+DeletePrinterIC(
+ HANDLE hPrinterIC
+);
+
+BOOL
+DevQueryPrint(
+ HANDLE hPrinter,
+ LPDEVMODE pDevMode,
+ DWORD *pResID
+);
+
+HANDLE
+RevertToPrinterSelf(
+ VOID
+);
+
+BOOL
+ImpersonatePrinterClient(
+ HANDLE hToken
+);
+
+BOOL
+OpenPrinterToken(
+ PHANDLE phToken
+);
+
+BOOL
+SetPrinterToken(
+ HANDLE hToken
+);
+
+BOOL
+ClosePrinterToken(
+ HANDLE hToken
+);
+
+
+BOOL
+ReplyPrinterChangeNotification(
+ HANDLE hNotify,
+ DWORD fdwFlags,
+ PDWORD pdwResult,
+ PVOID pPrinterNotifyInfo
+);
+
+BOOL
+PartialReplyPrinterChangeNotification(
+ HANDLE hNotify,
+ PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc
+);
+
+PPRINTER_NOTIFY_INFO
+RouterAllocPrinterNotifyInfo(
+ DWORD cPrinterNotifyInfoData
+);
+
+BOOL
+RouterFreePrinterNotifyInfo(
+ PPRINTER_NOTIFY_INFO pInfo
+);
+
+
+#define PRINTER_NOTIFY_INFO_DATA_COMPACT 1
+
+BOOL
+AppendPrinterNotifyInfoData(
+ PPRINTER_NOTIFY_INFO pInfoDest,
+ PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc,
+ DWORD fdwFlags
+);
+
+
+DWORD
+CallRouterFindFirstPrinterChangeNotification(
+ HANDLE hPrinter,
+ DWORD fdwFlags,
+ DWORD fdwOptions,
+ HANDLE hNotify,
+ PVOID pvReserved);
+
+BOOL
+ProvidorFindFirstPrinterChangeNotification(
+ HANDLE hPrinter,
+ DWORD fdwFlags,
+ DWORD fdwOptions,
+ HANDLE hNotify,
+ PVOID pvReserved0,
+ PVOID pvReserved1);
+
+BOOL
+ProvidorFindClosePrinterChangeNotification(
+ HANDLE hPrinter);
+
+
+
+BOOL
+SpoolerFindFirstPrinterChangeNotification(
+ HANDLE hPrinter,
+ DWORD fdwFlags,
+ DWORD fdwOptions,
+ PHANDLE phEvent,
+ PVOID pPrinterNotifyOptions,
+ PVOID pvReserved);
+
+BOOL
+SpoolerFindNextPrinterChangeNotification(
+ HANDLE hPrinter,
+ LPDWORD pfdwChange,
+ PVOID pvReserved0,
+ PVOID ppPrinterNotifyInfo);
+
+VOID
+SpoolerFreePrinterNotifyInfo(
+ PPRINTER_NOTIFY_INFO pInfo);
+
+BOOL
+SpoolerFindClosePrinterChangeNotification(
+ HANDLE hPrinter);
+
+BOOL
+WINAPI
+InitializeMonitorEx(
+ LPWSTR pRegistryRoot,
+ LPMONITOR pMonitor
+);
+
+LPMONITOREX
+WINAPI
+InitializePrintMonitor(
+ LPWSTR pRegistryRoot
+);
+
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif // _WINSPLP_
diff --git a/public/oak/inc/yes b/public/oak/inc/yes
new file mode 100644
index 000000000..975fbec82
--- /dev/null
+++ b/public/oak/inc/yes
@@ -0,0 +1 @@
+y
diff --git a/public/oak/inc/zwapi.h b/public/oak/inc/zwapi.h
new file mode 100644
index 000000000..cecd12e32
--- /dev/null
+++ b/public/oak/inc/zwapi.h
@@ -0,0 +1,1920 @@
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDelayExecution (
+ IN BOOLEAN Alertable,
+ IN PLARGE_INTEGER DelayInterval
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySystemEnvironmentValue (
+ IN PUNICODE_STRING VariableName,
+ OUT PWSTR VariableValue,
+ IN USHORT ValueLength,
+ OUT PUSHORT ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemEnvironmentValue (
+ IN PUNICODE_STRING VariableName,
+ IN PUNICODE_STRING VariableValue
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwClearEvent (
+ IN HANDLE EventHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateEvent (
+ OUT PHANDLE EventHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN EVENT_TYPE EventType,
+ IN BOOLEAN InitialState
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenEvent (
+ OUT PHANDLE EventHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwPulseEvent (
+ IN HANDLE EventHandle,
+ OUT PLONG PreviousState OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryEvent (
+ IN HANDLE EventHandle,
+ IN EVENT_INFORMATION_CLASS EventInformationClass,
+ OUT PVOID EventInformation,
+ IN ULONG EventInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwResetEvent (
+ IN HANDLE EventHandle,
+ OUT PLONG PreviousState OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetEvent (
+ IN HANDLE EventHandle,
+ OUT PLONG PreviousState OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateEventPair (
+ OUT PHANDLE EventPairHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenEventPair(
+ OUT PHANDLE EventPairHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWaitLowEventPair(
+ IN HANDLE EventPairHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWaitHighEventPair(
+ IN HANDLE EventPairHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetLowWaitHighEventPair(
+ IN HANDLE EventPairHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetHighWaitLowEventPair(
+ IN HANDLE EventPairHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetLowWaitHighThread(
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetHighWaitLowThread(
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetLowEventPair(
+ IN HANDLE EventPairHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetHighEventPair(
+ IN HANDLE EventPairHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateMutant (
+ IN PHANDLE MutantHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN BOOLEAN InitialOwner
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenMutant (
+ OUT PHANDLE MutantHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryMutant (
+ IN HANDLE MutantHandle,
+ IN MUTANT_INFORMATION_CLASS MutantInformationClass,
+ OUT PVOID MutantInformation,
+ IN ULONG MutantInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReleaseMutant (
+ IN HANDLE MutantHandle,
+ OUT PLONG PreviousCount OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateSemaphore (
+ OUT PHANDLE SemaphoreHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN LONG InitialCount,
+ IN LONG MaximumCount
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenSemaphore(
+ OUT PHANDLE SemaphoreHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySemaphore (
+ IN HANDLE SemaphoreHandle,
+ IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
+ OUT PVOID SemaphoreInformation,
+ IN ULONG SemaphoreInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReleaseSemaphore(
+ IN HANDLE SemaphoreHandle,
+ IN LONG ReleaseCount,
+ OUT PLONG PreviousCount OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateTimer (
+ OUT PHANDLE TimerHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN TIMER_TYPE TimerType
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenTimer (
+ OUT PHANDLE TimerHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCancelTimer (
+ IN HANDLE TimerHandle,
+ OUT PBOOLEAN CurrentState OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryTimer (
+ IN HANDLE TimerHandle,
+ IN TIMER_INFORMATION_CLASS TimerInformationClass,
+ OUT PVOID TimerInformation,
+ IN ULONG TimerInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetTimer (
+ IN HANDLE TimerHandle,
+ IN PLARGE_INTEGER DueTime,
+ IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL,
+ IN PVOID TimerContext OPTIONAL,
+ IN BOOLEAN ResumeTimer,
+ IN LONG Period OPTIONAL,
+ OUT PBOOLEAN PreviousState OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySystemTime (
+ OUT PLARGE_INTEGER SystemTime
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemTime (
+ IN PLARGE_INTEGER SystemTime,
+ OUT PLARGE_INTEGER PreviousTime OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryTimerResolution (
+ OUT PULONG MaximumTime,
+ OUT PULONG MinimumTime,
+ OUT PULONG CurrentTime
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetTimerResolution (
+ IN ULONG DesiredTime,
+ IN BOOLEAN SetResolution,
+ OUT PULONG ActualTime
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAllocateLocallyUniqueId(
+ OUT PLUID Luid
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAllocateUuids(
+ OUT PULARGE_INTEGER Time,
+ OUT PULONG Range,
+ OUT PULONG Sequence
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateProfile (
+ OUT PHANDLE ProfileHandle,
+ IN HANDLE Process OPTIONAL,
+ IN PVOID ProfileBase,
+ IN ULONG ProfileSize,
+ IN ULONG BucketSize,
+ IN PULONG Buffer,
+ IN ULONG BufferSize,
+ IN KPROFILE_SOURCE ProfileSource,
+ IN KAFFINITY Affinity
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwStartProfile (
+ IN HANDLE ProfileHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwStopProfile (
+ IN HANDLE ProfileHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetIntervalProfile (
+ IN ULONG Interval,
+ IN KPROFILE_SOURCE Source
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryIntervalProfile (
+ IN KPROFILE_SOURCE ProfileSource,
+ OUT PULONG Interval
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryPerformanceCounter (
+ OUT PLARGE_INTEGER PerformanceCounter,
+ OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySystemInformation (
+ IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+ OUT PVOID SystemInformation,
+ IN ULONG SystemInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemInformation (
+ IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+ IN PVOID SystemInformation,
+ IN ULONG SystemInformationLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSystemDebugControl (
+ IN SYSDBG_COMMAND Command,
+ IN PVOID InputBuffer,
+ IN ULONG InputBufferLength,
+ OUT PVOID OutputBuffer,
+ IN ULONG OutputBufferLength,
+ OUT PULONG ReturnLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRaiseHardError(
+ IN NTSTATUS ErrorStatus,
+ IN ULONG NumberOfParameters,
+ IN ULONG UnicodeStringParameterMask,
+ IN PULONG Parameters,
+ IN ULONG ValidResponseOptions,
+ OUT PULONG Response
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryDefaultLocale(
+ IN BOOLEAN UserProfile,
+ OUT PLCID DefaultLocaleId
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetDefaultLocale(
+ IN BOOLEAN UserProfile,
+ IN LCID DefaultLocaleId
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetDefaultHardErrorPort(
+ IN HANDLE DefaultHardErrorPort
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwShutdownSystem(
+ IN SHUTDOWN_ACTION Action
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDisplayString(
+ IN PUNICODE_STRING String
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAddAtom(
+ IN PWSTR AtomName OPTIONAL,
+ IN OUT PRTL_ATOM Atom OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFindAtom(
+ IN PWSTR AtomName,
+ OUT PRTL_ATOM Atom OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeleteAtom(
+ IN RTL_ATOM Atom
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationAtom(
+ IN RTL_ATOM Atom,
+ IN ATOM_INFORMATION_CLASS AtomInformationClass,
+ OUT PVOID AtomInformation,
+ IN ULONG AtomInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCancelIoFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateFile(
+ OUT PHANDLE FileHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PLARGE_INTEGER AllocationSize OPTIONAL,
+ IN ULONG FileAttributes,
+ IN ULONG ShareAccess,
+ IN ULONG CreateDisposition,
+ IN ULONG CreateOptions,
+ IN PVOID EaBuffer OPTIONAL,
+ IN ULONG EaLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateNamedPipeFile(
+ OUT PHANDLE FileHandle,
+ IN ULONG DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG ShareAccess,
+ IN ULONG CreateDisposition,
+ IN ULONG CreateOptions,
+ IN ULONG NamedPipeType,
+ IN ULONG ReadMode,
+ IN ULONG CompletionMode,
+ IN ULONG MaximumInstances,
+ IN ULONG InboundQuota,
+ IN ULONG OutboundQuota,
+ IN PLARGE_INTEGER DefaultTimeout OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateMailslotFile(
+ OUT PHANDLE FileHandle,
+ IN ULONG DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG CreateOptions,
+ IN ULONG MailslotQuota,
+ IN ULONG MaximumMessageSize,
+ IN PLARGE_INTEGER ReadTimeout
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeleteFile(
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeviceIoControlFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG IoControlCode,
+ IN PVOID InputBuffer OPTIONAL,
+ IN ULONG InputBufferLength,
+ OUT PVOID OutputBuffer OPTIONAL,
+ IN ULONG OutputBufferLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFlushBuffersFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFsControlFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG FsControlCode,
+ IN PVOID InputBuffer OPTIONAL,
+ IN ULONG InputBufferLength,
+ OUT PVOID OutputBuffer OPTIONAL,
+ IN ULONG OutputBufferLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwLockFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PLARGE_INTEGER ByteOffset,
+ IN PLARGE_INTEGER Length,
+ IN ULONG Key,
+ IN BOOLEAN FailImmediately,
+ IN BOOLEAN ExclusiveLock
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwNotifyChangeDirectoryFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID Buffer,
+ IN ULONG Length,
+ IN ULONG CompletionFilter,
+ IN BOOLEAN WatchTree
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenFile(
+ OUT PHANDLE FileHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG ShareAccess,
+ IN ULONG OpenOptions
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryAttributesFile(
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PFILE_BASIC_INFORMATION FileInformation
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryDirectoryFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID FileInformation,
+ IN ULONG Length,
+ IN FILE_INFORMATION_CLASS FileInformationClass,
+ IN BOOLEAN ReturnSingleEntry,
+ IN PUNICODE_STRING FileName OPTIONAL,
+ IN BOOLEAN RestartScan
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryFullAttributesFile(
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryOleDirectoryFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID FileInformation,
+ IN ULONG Length,
+ IN FILE_INFORMATION_CLASS FileInformationClass,
+ IN BOOLEAN ReturnSingleEntry,
+ IN PUNICODE_STRING FileName OPTIONAL,
+ IN BOOLEAN RestartScan
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryEaFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID Buffer,
+ IN ULONG Length,
+ IN BOOLEAN ReturnSingleEntry,
+ IN PVOID EaList OPTIONAL,
+ IN ULONG EaListLength,
+ IN PULONG EaIndex OPTIONAL,
+ IN BOOLEAN RestartScan
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID FileInformation,
+ IN ULONG Length,
+ IN FILE_INFORMATION_CLASS FileInformationClass
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryQuotaInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID Buffer,
+ IN ULONG Length,
+ IN BOOLEAN ReturnSingleEntry,
+ IN PVOID SidList OPTIONAL,
+ IN ULONG SidListLength,
+ IN PSID StartSid OPTIONAL,
+ IN BOOLEAN RestartScan
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryVolumeInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID FsInformation,
+ IN ULONG Length,
+ IN FS_INFORMATION_CLASS FsInformationClass
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReadFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID Buffer,
+ IN ULONG Length,
+ IN PLARGE_INTEGER ByteOffset OPTIONAL,
+ IN PULONG Key OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReadFileScatter(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PFILE_SEGMENT_ELEMENT SegmentArray,
+ IN ULONG Length,
+ IN PLARGE_INTEGER ByteOffset OPTIONAL,
+ IN PULONG Key OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetEaFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PVOID Buffer,
+ IN ULONG Length
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PVOID FileInformation,
+ IN ULONG Length,
+ IN FILE_INFORMATION_CLASS FileInformationClass
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetQuotaInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PVOID Buffer,
+ IN ULONG Length
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetVolumeInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PVOID FsInformation,
+ IN ULONG Length,
+ IN FS_INFORMATION_CLASS FsInformationClass
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwUnlockFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PLARGE_INTEGER ByteOffset,
+ IN PLARGE_INTEGER Length,
+ IN ULONG Key
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWriteFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PVOID Buffer,
+ IN ULONG Length,
+ IN PLARGE_INTEGER ByteOffset OPTIONAL,
+ IN PULONG Key OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWriteFileGather(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PFILE_SEGMENT_ELEMENT SegmentArray,
+ IN ULONG Length,
+ IN PLARGE_INTEGER ByteOffset OPTIONAL,
+ IN PULONG Key OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwLoadDriver(
+ IN PUNICODE_STRING DriverServiceName
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwUnloadDriver(
+ IN PUNICODE_STRING DriverServiceName
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateIoCompletion (
+ OUT PHANDLE IoCompletionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN ULONG Count OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenIoCompletion (
+ OUT PHANDLE IoCompletionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryIoCompletion (
+ IN HANDLE IoCompletionHandle,
+ IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
+ OUT PVOID IoCompletionInformation,
+ IN ULONG IoCompletionInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetIoCompletion (
+ IN HANDLE IoCompletionHandle,
+ IN ULONG KeyContext,
+ IN PVOID ApcContext,
+ IN NTSTATUS IoStatus,
+ IN ULONG IoStatusInformation
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRemoveIoCompletion (
+ IN HANDLE IoCompletionHandle,
+ OUT PVOID *KeyContext,
+ OUT PVOID *ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ IN PLARGE_INTEGER Timeout
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCallbackReturn (
+ IN PVOID OutputBuffer OPTIONAL,
+ IN ULONG OutputLength,
+ IN NTSTATUS Status
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwW32Call (
+ IN ULONG ApiNumber,
+ IN PVOID InputBuffer,
+ IN ULONG InputLength,
+ OUT PVOID *OutputBuffer,
+ OUT PULONG OutputLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwYieldExecution (
+ VOID
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateChannel (
+ OUT PHANDLE ChannelHandle,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenChannel (
+ OUT PHANDLE ChannelHandle,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwListenChannel (
+ IN HANDLE ChannelHandle,
+ OUT PCHANNEL_MESSAGE *Message
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSendWaitReplyChannel (
+ IN HANDLE ChannelHandle,
+ IN PVOID Text,
+ IN ULONG Length,
+ OUT PCHANNEL_MESSAGE *Message
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReplyWaitSendChannel (
+ IN PVOID Text,
+ IN ULONG Length,
+ OUT PCHANNEL_MESSAGE *Message
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetContextChannel (
+ IN PVOID Context
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreatePort(
+ OUT PHANDLE PortHandle,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN ULONG MaxConnectionInfoLength,
+ IN ULONG MaxMessageLength,
+ IN ULONG MaxPoolUsage
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwConnectPort(
+ OUT PHANDLE PortHandle,
+ IN PUNICODE_STRING PortName,
+ IN PSECURITY_QUALITY_OF_SERVICE SecurityQos,
+ IN OUT PPORT_VIEW ClientView OPTIONAL,
+ OUT PREMOTE_PORT_VIEW ServerView OPTIONAL,
+ OUT PULONG MaxMessageLength OPTIONAL,
+ IN OUT PVOID ConnectionInformation OPTIONAL,
+ IN OUT PULONG ConnectionInformationLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwListenPort(
+ IN HANDLE PortHandle,
+ OUT PPORT_MESSAGE ConnectionRequest
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAcceptConnectPort(
+ OUT PHANDLE PortHandle,
+ IN PVOID PortContext,
+ IN PPORT_MESSAGE ConnectionRequest,
+ IN BOOLEAN AcceptConnection,
+ IN OUT PPORT_VIEW ServerView OPTIONAL,
+ OUT PREMOTE_PORT_VIEW ClientView OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCompleteConnectPort(
+ IN HANDLE PortHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRequestPort(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE RequestMessage
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRequestWaitReplyPort(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE RequestMessage,
+ OUT PPORT_MESSAGE ReplyMessage
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReplyPort(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE ReplyMessage
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReplyWaitReplyPort(
+ IN HANDLE PortHandle,
+ IN OUT PPORT_MESSAGE ReplyMessage
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReplyWaitReceivePort(
+ IN HANDLE PortHandle,
+ OUT PVOID *PortContext OPTIONAL,
+ IN PPORT_MESSAGE ReplyMessage OPTIONAL,
+ OUT PPORT_MESSAGE ReceiveMessage
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwImpersonateClientOfPort(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE Message
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReadRequestData(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE Message,
+ IN ULONG DataEntryIndex,
+ OUT PVOID Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG NumberOfBytesRead OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWriteRequestData(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE Message,
+ IN ULONG DataEntryIndex,
+ IN PVOID Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG NumberOfBytesWritten OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationPort(
+ IN HANDLE PortHandle,
+ IN PORT_INFORMATION_CLASS PortInformationClass,
+ OUT PVOID PortInformation,
+ IN ULONG Length,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateSection (
+ OUT PHANDLE SectionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN PLARGE_INTEGER MaximumSize OPTIONAL,
+ IN ULONG SectionPageProtection,
+ IN ULONG AllocationAttributes,
+ IN HANDLE FileHandle OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenSection(
+ OUT PHANDLE SectionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwMapViewOfSection(
+ IN HANDLE SectionHandle,
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN ULONG ZeroBits,
+ IN ULONG CommitSize,
+ IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
+ IN OUT PULONG ViewSize,
+ IN SECTION_INHERIT InheritDisposition,
+ IN ULONG AllocationType,
+ IN ULONG Protect
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwUnmapViewOfSection(
+ IN HANDLE ProcessHandle,
+ IN PVOID BaseAddress
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwExtendSection(
+ IN HANDLE SectionHandle,
+ IN OUT PLARGE_INTEGER NewSectionSize
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAllocateVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN ULONG ZeroBits,
+ IN OUT PULONG RegionSize,
+ IN ULONG AllocationType,
+ IN ULONG Protect
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFreeVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN OUT PULONG RegionSize,
+ IN ULONG FreeType
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReadVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN PVOID BaseAddress,
+ OUT PVOID Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG NumberOfBytesRead OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWriteVirtualMemory(
+ IN HANDLE ProcessHandle,
+ OUT PVOID BaseAddress,
+ IN PVOID Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG NumberOfBytesWritten OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFlushVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN OUT PULONG RegionSize,
+ OUT PIO_STATUS_BLOCK IoStatus
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwLockVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN OUT PULONG RegionSize,
+ IN ULONG MapType
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwUnlockVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN OUT PULONG RegionSize,
+ IN ULONG MapType
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwProtectVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN OUT PULONG RegionSize,
+ IN ULONG NewProtect,
+ OUT PULONG OldProtect
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN PVOID BaseAddress,
+ IN MEMORY_INFORMATION_CLASS MemoryInformationClass,
+ OUT PVOID MemoryInformation,
+ IN ULONG MemoryInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySection(
+ IN HANDLE SectionHandle,
+ IN SECTION_INFORMATION_CLASS SectionInformationClass,
+ OUT PVOID SectionInformation,
+ IN ULONG SectionInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreatePagingFile (
+ IN PUNICODE_STRING PageFileName,
+ IN PLARGE_INTEGER MinimumSize,
+ IN PLARGE_INTEGER MaximumSize,
+ IN ULONG Priority OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFlushInstructionCache (
+ IN HANDLE ProcessHandle,
+ IN PVOID BaseAddress OPTIONAL,
+ IN ULONG Length
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFlushWriteBuffer (
+ VOID
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryObject(
+ IN HANDLE Handle,
+ IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
+ OUT PVOID ObjectInformation,
+ IN ULONG Length,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationObject(
+ IN HANDLE Handle,
+ IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
+ IN PVOID ObjectInformation,
+ IN ULONG ObjectInformationLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDuplicateObject(
+ IN HANDLE SourceProcessHandle,
+ IN HANDLE SourceHandle,
+ IN HANDLE TargetProcessHandle OPTIONAL,
+ OUT PHANDLE TargetHandle OPTIONAL,
+ IN ACCESS_MASK DesiredAccess,
+ IN ULONG HandleAttributes,
+ IN ULONG Options
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwMakeTemporaryObject(
+ IN HANDLE Handle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSignalAndWaitForSingleObject(
+ IN HANDLE SignalHandle,
+ IN HANDLE WaitHandle,
+ IN BOOLEAN Alertable,
+ IN PLARGE_INTEGER Timeout OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWaitForSingleObject(
+ IN HANDLE Handle,
+ IN BOOLEAN Alertable,
+ IN PLARGE_INTEGER Timeout OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWaitForMultipleObjects(
+ IN ULONG Count,
+ IN HANDLE Handles[],
+ IN WAIT_TYPE WaitType,
+ IN BOOLEAN Alertable,
+ IN PLARGE_INTEGER Timeout OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSecurityObject(
+ IN HANDLE Handle,
+ IN SECURITY_INFORMATION SecurityInformation,
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySecurityObject(
+ IN HANDLE Handle,
+ IN SECURITY_INFORMATION SecurityInformation,
+ OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
+ IN ULONG Length,
+ OUT PULONG LengthNeeded
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwClose(
+ IN HANDLE Handle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateDirectoryObject(
+ OUT PHANDLE DirectoryHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenDirectoryObject(
+ OUT PHANDLE DirectoryHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryDirectoryObject(
+ IN HANDLE DirectoryHandle,
+ OUT PVOID Buffer,
+ IN ULONG Length,
+ IN BOOLEAN ReturnSingleEntry,
+ IN BOOLEAN RestartScan,
+ IN OUT PULONG Context,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateSymbolicLinkObject(
+ OUT PHANDLE LinkHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN PUNICODE_STRING LinkTarget
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenSymbolicLinkObject(
+ OUT PHANDLE LinkHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySymbolicLinkObject(
+ IN HANDLE LinkHandle,
+ IN OUT PUNICODE_STRING LinkTarget,
+ OUT PULONG ReturnedLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwGetPlugPlayEvent(
+ IN PPLUGPLAY_APC_ROUTINE PnPApcRoutine OPTIONAL,
+ IN PVOID PnPContext OPTIONAL,
+ OUT PPLUGPLAY_EVENT_BLOCK PnPEvent,
+ IN ULONG EventBufferLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwPlugPlayControl(
+ IN PLUGPLAY_CONTROL_CLASS PnPControlClass,
+ IN OUT PVOID PnPControlData,
+ IN ULONG PnPControlDataLength,
+ OUT PULONG RequiredLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemPowerState(
+ IN POWER_STATE SystemPowerState,
+ IN BOOLEAN NoResumeAlarm,
+ IN BOOLEAN ForcePowerDown
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateProcess(
+ OUT PHANDLE ProcessHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN HANDLE ParentProcess,
+ IN BOOLEAN InheritObjectTable,
+ IN HANDLE SectionHandle OPTIONAL,
+ IN HANDLE DebugPort OPTIONAL,
+ IN HANDLE ExceptionPort OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenProcess (
+ OUT PHANDLE ProcessHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN PCLIENT_ID ClientId OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwTerminateProcess(
+ IN HANDLE ProcessHandle OPTIONAL,
+ IN NTSTATUS ExitStatus
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationProcess(
+ IN HANDLE ProcessHandle,
+ IN PROCESSINFOCLASS ProcessInformationClass,
+ OUT PVOID ProcessInformation,
+ IN ULONG ProcessInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationProcess(
+ IN HANDLE ProcessHandle,
+ IN PROCESSINFOCLASS ProcessInformationClass,
+ IN PVOID ProcessInformation,
+ IN ULONG ProcessInformationLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateThread(
+ OUT PHANDLE ThreadHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN HANDLE ProcessHandle,
+ OUT PCLIENT_ID ClientId,
+ IN PCONTEXT ThreadContext,
+ IN PINITIAL_TEB InitialTeb,
+ IN BOOLEAN CreateSuspended
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenThread (
+ OUT PHANDLE ThreadHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN PCLIENT_ID ClientId OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwTerminateThread(
+ IN HANDLE ThreadHandle OPTIONAL,
+ IN NTSTATUS ExitStatus
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSuspendThread(
+ IN HANDLE ThreadHandle,
+ OUT PULONG PreviousSuspendCount OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwResumeThread(
+ IN HANDLE ThreadHandle,
+ OUT PULONG PreviousSuspendCount OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwGetContextThread(
+ IN HANDLE ThreadHandle,
+ IN OUT PCONTEXT ThreadContext
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetContextThread(
+ IN HANDLE ThreadHandle,
+ IN PCONTEXT ThreadContext
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationThread(
+ IN HANDLE ThreadHandle,
+ IN THREADINFOCLASS ThreadInformationClass,
+ OUT PVOID ThreadInformation,
+ IN ULONG ThreadInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationThread(
+ IN HANDLE ThreadHandle,
+ IN THREADINFOCLASS ThreadInformationClass,
+ IN PVOID ThreadInformation,
+ IN ULONG ThreadInformationLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAlertThread(
+ IN HANDLE ThreadHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAlertResumeThread(
+ IN HANDLE ThreadHandle,
+ OUT PULONG PreviousSuspendCount OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwImpersonateThread(
+ IN HANDLE ServerThreadHandle,
+ IN HANDLE ClientThreadHandle,
+ IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwTestAlert(
+ VOID
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRegisterThreadTerminatePort(
+ IN HANDLE PortHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetLdtEntries(
+ IN ULONG Selector0,
+ IN ULONG Entry0Low,
+ IN ULONG Entry0Hi,
+ IN ULONG Selector1,
+ IN ULONG Entry1Low,
+ IN ULONG Entry1High
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueueApcThread(
+ IN HANDLE ThreadHandle,
+ IN PPS_APC_ROUTINE ApcRoutine,
+ IN PVOID ApcArgument1,
+ IN PVOID ApcArgument2,
+ IN PVOID ApcArgument3
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateKey(
+ OUT PHANDLE KeyHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN ULONG TitleIndex,
+ IN PUNICODE_STRING Class OPTIONAL,
+ IN ULONG CreateOptions,
+ OUT PULONG Disposition OPTIONAL
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeleteKey(
+ IN HANDLE KeyHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeleteValueKey(
+ IN HANDLE KeyHandle,
+ IN PUNICODE_STRING ValueName
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwEnumerateKey(
+ IN HANDLE KeyHandle,
+ IN ULONG Index,
+ IN KEY_INFORMATION_CLASS KeyInformationClass,
+ OUT PVOID KeyInformation,
+ IN ULONG Length,
+ OUT PULONG ResultLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwEnumerateValueKey(
+ IN HANDLE KeyHandle,
+ IN ULONG Index,
+ IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+ OUT PVOID KeyValueInformation,
+ IN ULONG Length,
+ OUT PULONG ResultLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFlushKey(
+ IN HANDLE KeyHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwInitializeRegistry(
+ IN BOOLEAN SetupBoot
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwNotifyChangeKey(
+ IN HANDLE KeyHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG CompletionFilter,
+ IN BOOLEAN WatchTree,
+ OUT PVOID Buffer,
+ IN ULONG BufferSize,
+ IN BOOLEAN Asynchronous
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwLoadKey(
+ IN POBJECT_ATTRIBUTES TargetKey,
+ IN POBJECT_ATTRIBUTES SourceFile
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwLoadKey2(
+ IN POBJECT_ATTRIBUTES TargetKey,
+ IN POBJECT_ATTRIBUTES SourceFile,
+ IN ULONG Flags
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenKey(
+ OUT PHANDLE KeyHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryKey(
+ IN HANDLE KeyHandle,
+ IN KEY_INFORMATION_CLASS KeyInformationClass,
+ OUT PVOID KeyInformation,
+ IN ULONG Length,
+ OUT PULONG ResultLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryValueKey(
+ IN HANDLE KeyHandle,
+ IN PUNICODE_STRING ValueName,
+ IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+ OUT PVOID KeyValueInformation,
+ IN ULONG Length,
+ OUT PULONG ResultLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryMultipleValueKey(
+ IN HANDLE KeyHandle,
+ IN PKEY_VALUE_ENTRY ValueEntries,
+ IN ULONG EntryCount,
+ OUT PVOID ValueBuffer,
+ IN OUT PULONG BufferLength,
+ OUT OPTIONAL PULONG RequiredBufferLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReplaceKey(
+ IN POBJECT_ATTRIBUTES NewFile,
+ IN HANDLE TargetHandle,
+ IN POBJECT_ATTRIBUTES OldFile
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRestoreKey(
+ IN HANDLE KeyHandle,
+ IN HANDLE FileHandle,
+ IN ULONG Flags
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSaveKey(
+ IN HANDLE KeyHandle,
+ IN HANDLE FileHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetValueKey(
+ IN HANDLE KeyHandle,
+ IN PUNICODE_STRING ValueName,
+ IN ULONG TitleIndex OPTIONAL,
+ IN ULONG Type,
+ IN PVOID Data,
+ IN ULONG DataSize
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwUnloadKey(
+ IN POBJECT_ATTRIBUTES TargetKey
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationKey(
+ IN HANDLE KeyHandle,
+ IN KEY_SET_INFORMATION_CLASS KeySetInformationClass,
+ IN PVOID KeySetInformation,
+ IN ULONG KeySetInformationLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAccessCheck (
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+ IN HANDLE ClientToken,
+ IN ACCESS_MASK DesiredAccess,
+ IN PGENERIC_MAPPING GenericMapping,
+ OUT PPRIVILEGE_SET PrivilegeSet,
+ IN OUT PULONG PrivilegeSetLength,
+ OUT PACCESS_MASK GrantedAccess,
+ OUT PNTSTATUS AccessStatus
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateToken(
+ OUT PHANDLE TokenHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN TOKEN_TYPE TokenType,
+ IN PLUID AuthenticationId,
+ IN PLARGE_INTEGER ExpirationTime,
+ IN PTOKEN_USER User,
+ IN PTOKEN_GROUPS Groups,
+ IN PTOKEN_PRIVILEGES Privileges,
+ IN PTOKEN_OWNER Owner OPTIONAL,
+ IN PTOKEN_PRIMARY_GROUP PrimaryGroup,
+ IN PTOKEN_DEFAULT_DACL DefaultDacl OPTIONAL,
+ IN PTOKEN_SOURCE TokenSource
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenProcessToken(
+ IN HANDLE ProcessHandle,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PHANDLE TokenHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenThreadToken(
+ IN HANDLE ThreadHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN BOOLEAN OpenAsSelf,
+ OUT PHANDLE TokenHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDuplicateToken(
+ IN HANDLE ExistingTokenHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN BOOLEAN EffectiveOnly,
+ IN TOKEN_TYPE TokenType,
+ OUT PHANDLE NewTokenHandle
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationToken (
+ IN HANDLE TokenHandle,
+ IN TOKEN_INFORMATION_CLASS TokenInformationClass,
+ OUT PVOID TokenInformation,
+ IN ULONG TokenInformationLength,
+ OUT PULONG ReturnLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationToken (
+ IN HANDLE TokenHandle,
+ IN TOKEN_INFORMATION_CLASS TokenInformationClass,
+ IN PVOID TokenInformation,
+ IN ULONG TokenInformationLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAdjustPrivilegesToken (
+ IN HANDLE TokenHandle,
+ IN BOOLEAN DisableAllPrivileges,
+ IN PTOKEN_PRIVILEGES NewState OPTIONAL,
+ IN ULONG BufferLength OPTIONAL,
+ IN PTOKEN_PRIVILEGES PreviousState OPTIONAL,
+ OUT PULONG ReturnLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAdjustGroupsToken (
+ IN HANDLE TokenHandle,
+ IN BOOLEAN ResetToDefault,
+ IN PTOKEN_GROUPS NewState OPTIONAL,
+ IN ULONG BufferLength OPTIONAL,
+ IN PTOKEN_GROUPS PreviousState OPTIONAL,
+ OUT PULONG ReturnLength
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwPrivilegeCheck (
+ IN HANDLE ClientToken,
+ IN OUT PPRIVILEGE_SET RequiredPrivileges,
+ OUT PBOOLEAN Result
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAccessCheckAndAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PVOID HandleId,
+ IN PUNICODE_STRING ObjectTypeName,
+ IN PUNICODE_STRING ObjectName,
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+ IN ACCESS_MASK DesiredAccess,
+ IN PGENERIC_MAPPING GenericMapping,
+ IN BOOLEAN ObjectCreation,
+ OUT PACCESS_MASK GrantedAccess,
+ OUT PNTSTATUS AccessStatus,
+ OUT PBOOLEAN GenerateOnClose
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenObjectAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PVOID HandleId OPTIONAL,
+ IN PUNICODE_STRING ObjectTypeName,
+ IN PUNICODE_STRING ObjectName,
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
+ IN HANDLE ClientToken,
+ IN ACCESS_MASK DesiredAccess,
+ IN ACCESS_MASK GrantedAccess,
+ IN PPRIVILEGE_SET Privileges OPTIONAL,
+ IN BOOLEAN ObjectCreation,
+ IN BOOLEAN AccessGranted,
+ OUT PBOOLEAN GenerateOnClose
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwPrivilegeObjectAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PVOID HandleId,
+ IN HANDLE ClientToken,
+ IN ACCESS_MASK DesiredAccess,
+ IN PPRIVILEGE_SET Privileges,
+ IN BOOLEAN AccessGranted
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCloseObjectAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PVOID HandleId,
+ IN BOOLEAN GenerateOnClose
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeleteObjectAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PVOID HandleId,
+ IN BOOLEAN GenerateOnClose
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwPrivilegedServiceAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PUNICODE_STRING ServiceName,
+ IN HANDLE ClientToken,
+ IN PPRIVILEGE_SET Privileges,
+ IN BOOLEAN AccessGranted
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwContinue (
+ IN PCONTEXT ContextRecord,
+ IN BOOLEAN TestAlert
+ );
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRaiseException (
+ IN PEXCEPTION_RECORD ExceptionRecord,
+ IN PCONTEXT ContextRecord,
+ IN BOOLEAN FirstChance
+ );
diff --git a/public/sdk/bin/alpha/ddhelp.pdb b/public/sdk/bin/alpha/ddhelp.pdb
new file mode 100644
index 000000000..3d53b1178
--- /dev/null
+++ b/public/sdk/bin/alpha/ddhelp.pdb
Binary files differ
diff --git a/public/sdk/bin/hc.bat b/public/sdk/bin/hc.bat
new file mode 100644
index 000000000..ba2a1cf36
--- /dev/null
+++ b/public/sdk/bin/hc.bat
@@ -0,0 +1,4 @@
+@echo off
+if NOT "%1" == "-n" hc30 %1 %2
+if "%1" == "-n" hc31 %2 %3
+@echo on
diff --git a/public/sdk/bin/hc31.err b/public/sdk/bin/hc31.err
new file mode 100644
index 000000000..5ba872309
--- /dev/null
+++ b/public/sdk/bin/hc31.err
@@ -0,0 +1,237 @@
+/***************************************
+*
+* File problems
+*
+***************************************/
+1019 "Project file extension cannot be .HLP or .PH."
+1030 "File name exceeds limit of 259 characters."
+1079 "Out of file handles."
+
+1100 "Cannot open file '%s': permission denied."
+
+1150 "Cannot overwrite file '%s'."
+1170 "File '%s' is a directory."
+
+1190 "Cannot use reserved DOS file name '%s'."
+
+1230 "File '%s' not found."
+
+1292 "File '%s' is not a valid bitmap."
+
+1319 "Disk full."
+
+1513 "Bitmap name '%s' duplicated."
+
+1536 "Not enough memory to compress bitmap '%s'."
+
+1000 "UNKNOWN ERROR\n\t\tContact Microsoft Product Support Services"
+
+
+/***************************************
+*
+* General HPJ problems
+*
+***************************************/
+2010 "Include statements nested more than 5 deep."
+
+/* Syntax */
+2030 "Comment starting at line %d of file '%s' unclosed at end of file."
+2050 "Invalid #include syntax."
+2091 "Bracket missing from section heading [%s]."
+2111 "Section heading missing."
+2131 "Invalid OPTIONS syntax: 'option=value' expected."
+2141 "Invalid ALIAS syntax: 'context=context' expected."
+2151 "Incomplete line in [%s] section."
+2171 "Unrecognized text."
+2191 "Section heading [%s] unrecognized."
+2214 "Line in .HPJ file exceeds length limit of 2047 characters."
+
+/* general section problems */
+2273 "[OPTIONS] should precede [FILES] and [BITMAPS] for all options to take effect."
+2291 "Section [%s] previously defined."
+2305 "No valid files in [FILES] section."
+
+/* Alias/Map problems */
+2322 "Context string '%s' cannot be used as alias string."
+2331 "Context number already used in [MAP] section."
+2341 "Invalid or missing context string."
+2351 "Invalid context identification number."
+2362 "Context string '%s' already assigned an alias."
+2372 "Alias string '%s' already assigned."
+
+/* Window section problems */
+
+2391 "Limit of 6 window definitions exceeded."
+2401 "Window maximization state must be 0 or 1."
+2411 "Invalid syntax in window color."
+2421 "Invalid window position."
+2431 "Missing quote in window caption."
+2441 "Window name '%s' is too long."
+2451 "Window position value out of range 0..1023."
+2461 "Window name missing."
+2471 "Invalid syntax in [WINDOWS] section."
+2481 "Secondary window position required."
+2491 "Duplicate window name '%s'."
+2501 "Window caption '%s' exceeds limit of 50 characters."
+
+/***************************************
+*
+* OPTIONS section problems
+*
+***************************************/
+2511 "Unrecognized option '%s' in [OPTIONS] section."
+2532 "Option '%s' previously defined."
+
+/* root */
+2550 "Invalid path '%s' in %s option."
+2570 "Path in %s option exceeds %d characters."
+
+/* Font range */
+2591 "Invalid MAPFONTSIZE option."
+2612 "Maximum of 5 font ranges exceeded."
+2632 "Current font range overlaps previously defined range."
+
+/* Force font */
+2651 "Font name exceeds limit of 20 characters."
+2672 "Unrecognized font name '%s' in FORCEFONT option."
+
+/* Multikey */
+2691 "Invalid MULTIKEY option."
+2711 "Maximum of 5 keyword tables exceeded."
+2732 "Character already used."
+2752 "Characters 'K' and 'k' cannot be used."
+
+/* other */
+2771 "REPORT option must be 'ON' or 'OFF'."
+
+2811 "OLDKEYPHRASE option must be 'ON' or 'OFF'."
+2832 "COMPRESS option must be 'OFF', 'MEDIUM', or 'HIGH'."
+2842 "OPTCDROM option must be 'TRUE' or 'FALSE'."
+2852 "Invalid TITLE option."
+2872 "Invalid LANGUAGE option."
+2893 "WARNING option must be 1, 2, or 3."
+2911 "Invalid icon file '%s'."
+2932 "Copyright string exceeds limit of 50 characters."
+
+
+2000 "UNKNOWN ERROR\n\t\tContact Microsoft Product Support Services"
+
+/***************************************
+*
+* Build tag/expression problems
+*
+***************************************/
+3011 "Maximum of 32 build tags exceeded."
+3031 "Build tag length exceeds 32 characters."
+3051 "Build tag '%s' contains invalid characters."
+3076 "[BUILDTAGS] section missing."
+3096 "Build expression too complex."
+3116 "Invalid build expression."
+3133 "Duplicate build tag in [BUILDTAGS] section."
+
+3152 "Build tag '%s' not defined in [BUILDTAGS] section."
+3178 "Build expression missing from project file."
+
+
+/***************************************
+*
+* Macro errors
+*
+***************************************/
+
+3511 "Macro '%s' exceeds limit of 254 characters."
+3532 "Undefined function in macro '%s'."
+3552 "Undefined variable in macro '%s'."
+3571 "Wrong number of parameters to function in macro '%s'."
+3591 "Syntax error in macro '%s'."
+3611 "Function parameter type mismatch in macro '%s'."
+3631 "Bad macro prototype."
+3652 "Empty macro string."
+3672 "Macro '%s' nested too deeply."
+
+3000 "UNKNOWN ERROR\n\t\tContact Microsoft Product Support Services"
+
+
+/***************************************
+*
+* Context string problems
+*
+***************************************/
+4011 "Context string '%s' already used."
+4031 "Invalid context string '%s'."
+4056 "Unresolved context string specified in CONTENTS option."
+4072 "Context string exceeds limit of 255 characters."
+4098 "Context string(s) in [MAP] section not defined in any topic."
+4113 "Unresolved jump or popup '%s'."
+4131 "Hash conflict between '%s' and '%s'."
+4151 "Invalid secondary window name '%s'."
+4171 "Cannot use secondary window with popup."
+4196 "Jumps and lookups not verified."
+
+/***************************************
+*
+* Footnote problems
+*
+***************************************/
+4211 "Footnote text exceeds limit of 1023 characters."
+
+/* browse */
+4251 "Browse sequence not in first paragraph."
+4272 "Empty browse sequence string."
+4292 "Missing sequence number."
+4312 "Browse sequence already defined."
+
+/* title */
+4331 "Title not in first paragraph."
+4352 "Empty title string."
+4372 "Title defined more than once."
+4393 "Title exceeds limit of 128 characters."
+
+/* keyword */
+4412 "Keyword string exceeds limit of 255 characters."
+4433 "Empty keyword string."
+4452 "Keyword(s) defined without title."
+
+/* build */
+4471 "Build tag footnote not at beginning of topic."
+4492 "Build tag exceeds limit of 32 characters."
+
+/* entry macro */
+4551 "Entry macro not in first paragraph."
+
+
+/***************************************
+*
+* RTF problems
+*
+***************************************/
+4616 "File '%s' is not a valid RTF topic file."
+4639 "Error in file '%s' at byte offset 0x%lX."
+4649 "File '%s' contains more than 32767 topics."
+4652 "Table formatting too complex."
+4662 "Side by side paragraphs not supported."
+4671 "Table contains more than 32 columns."
+4680 "Font %d in file '%s' not in RTF font table."
+4692 "Unrecognized graphic format."
+4733 "Hidden page break."
+4753 "Hidden paragraph."
+4763 "Hidden carriage return."
+4774 "Paragraph exceeds limit of 64K."
+4792 "Non-scrolling region defined after scrolling region."
+4813 "Non-scrolling region crosses page boundary."
+
+4000 "UNKNOWN ERROR\n\t\tContact Microsoft Product Support Services"
+
+/***************************************
+*
+* Miscellaneous
+*
+***************************************/
+5035 "File '%s' not created."
+5059 "Not enough memory to build help file."
+5075 "Help Compiler corrupted. Please reinstall HC.EXE."
+5098 "Using old key-phrase table."
+5115 "Write failed."
+5139 "Aborted by user."
+
+5000 "UNKNOWN ERROR\n\t\tContact Microsoft Product Support Services"
diff --git a/public/sdk/bin/ole2view.hlp b/public/sdk/bin/ole2view.hlp
new file mode 100644
index 000000000..55086e52c
--- /dev/null
+++ b/public/sdk/bin/ole2view.hlp
Binary files differ
diff --git a/public/sdk/bin/oletools.hlp b/public/sdk/bin/oletools.hlp
new file mode 100644
index 000000000..3023d6efc
--- /dev/null
+++ b/public/sdk/bin/oletools.hlp
Binary files differ
diff --git a/public/sdk/bin/shed.hlp b/public/sdk/bin/shed.hlp
new file mode 100644
index 000000000..21ecfdfa5
--- /dev/null
+++ b/public/sdk/bin/shed.hlp
Binary files differ
diff --git a/public/sdk/bin/win32api.dat b/public/sdk/bin/win32api.dat
new file mode 100644
index 000000000..07062fae6
--- /dev/null
+++ b/public/sdk/bin/win32api.dat
@@ -0,0 +1,161 @@
+[PORTTOOL]
+ WinHelp=c:\nt\mstools\api32wh.hlp
+
+[Ini file format]
+Supply the help file name and path above for access to winhelp
+from within the environment.
+
+The format for the lines below is:
+SearchKeyWord=HelpSearchString;Porting Issue;Suggested fix;
+
+Optional configurations:
+SearchKeyWord=HelpSearchString;Porting Issue;
+SearchKeyWord=HelpSearchString;
+SearchKeyWord=HelpSearchString; ;Suggested fix;
+SearchKeyWord=; ;Porting Issue;Suggested fix;
+SearchKeyWord=; ;Porting Issue;
+SearchKeyWord=; ; ;Suggested fix;
+
+Also, trailing semicolons are optional.
+
+
+[APIS]
+ AccessResource=AccessResource;No Win32 API equivalent;Not necessary, just remove;
+ AddFontResource=AddFontResource;Must use string, not handle, for filename;;
+ AllocDSToCSAlias=AllocDSToCSAlias;No Win32 API equivalent;;
+ AllocResource=AllocResource;No Win32 API equivalent (resource API in progress);;
+ AllocSelector=AllocSelector;No Win32 API equivalent;;
+ ChangeSelector=ChangeSelector;No Win32 API equivalent;;
+ CloseComm=CloseComm;Replaced by CloseFile;;
+ CloseSound=CloseSound;Replaced by multimedia sound support;;
+ CountVoiceNotes=CountVoiceNotes;Replaced by multimedia sound support;;
+ DeviceCapabilities=DeviceCapabilities;Replaced by portable DeviceCapabilitiesEx;;
+ DeviceMode=DeviceMode;Replaced by portable DeviceModeEx;;
+ DlgDirSelect=DlgDirSelect;Replaced by portable DlgDirSelectEx;;
+ DlgDirSelectComboBox=DlgDirSelectComboBox;Replaced by portable DlgDirSelectComboBoxEx;;
+ DOS3Call=DOS3Call;Replaced by named, portable Win32 API;;
+ ExtDeviceMode=ExtDeviceMode;Replaced by portable ExtDeviceModeEx;;
+ FlushComm=FlushComm;Replaced by PurgeComm;;
+ FreeSelector=FreeSelector;No Win32 API equivalent;;
+ GetAspectRatioFilter=GetAspectRatioFilter;Replaced by portable GetAspectRatioFilterEx;;
+ GetBitmapDimension=GetBitmapDimension;Replaced by portable GetBitmapDimensionEx;;
+ GetBrushOrg=GetBrushOrg;Replaced by portable GetBrushOrgEx;;
+ GetClassWord=GetClassWord;Use GetClassLong for values that grow to 32-bits on Win32;;
+ GetCodeHandle=GetCodeHandle;No Win32 API equivalent;;
+ GetCodeInfo=GetCodeInfo;No Win32 API equivalent;;
+ GetCommError=GetCommError;Replaced by GetCommState;;
+ GetCurrentPDB=GetCurrentPDB;No Win32 API equivalent;;
+ GetCurrentPosition=GetCurrentPosition;Replaced by portable GetCurrentPositionEx;;
+ GetEnvironment=GetEnvironment;No Win32 API equivalent;;
+ GetInstanceData=GetInstanceData;No equivalent;use alternative supported IPC mechanism.;
+ GetKBCodePage=GetKBCodePage;No Win32 API equivalent;;
+ GetMetaFileBits=GetMetaFileBits;Replaced by portable GetMetaFileBitsEx;;
+ GetModuleUsage=GetModuleUsage;Always returns 1 on Win32;;
+ GetTempDrive=GetTempDrive;Implements Win16 functionality on Win32;;
+ GetTextExtent=GetTextExtent;Replaced by portable GetTextExtentPoint;;
+ GetTextExtentEx=GetTextExtentEx;Replaced by portable GetTextExtentExPoint;;
+ GetThresholdEvent=GetThresholdEvent;Replaced by multimedia sound support;;
+ GetThresholdStatus=GetThresholdStatus;Replaced by multimedia sound support;;
+ GetViewportExt=GetViewportExt;Replaced by portable GetViewportExtEx;;
+ GetViewportOrg=GetViewportOrg;Replaced by portable GetViewportOrgEx;;
+ GetWindowExt=GetWindowExt;Replaced by portable GetWindowExtEx;;
+ GetWindowOrg=GetWindowOrg;Replaced by portable GetWindowOrgEx;;
+ GetWindowWord=GetWindowWord;Use GetWindowLong for values that grow to 32-bits on Win32;;
+ GlobalDosAlloc=GlobalDosAlloc;No Win32 API equivalent;;
+ GlobalDosFree=GlobalDosFree;No Win32 API equivalent;;
+ GlobalPageLock=GlobalPageLock;No Win32 API equivalent;;
+ GlobalPageUnlock=GlobalPageUnlock;No Win32 API equivalent;;
+ LimitEMSPages=LimitEMSPages;No Win32 API equivalent;;
+ LocalNotify=LocalNotify;No Win32 Equivalent;;
+ MoveTo=MoveTo;Replaced by portable MoveToEx;;
+ NetBIOSCall=NetBIOSCall;Replaced by named, portable Win32 API;;
+ OffsetViewportOrg=OffsetViewportOrg;Replaced by portable OffsetViewportOrgEx;;
+ OffsetWindowOrg=OffsetWindowOrg;Replaced by portable OffsetWindowOrgEx;;
+ OpenComm=OpenComm;Replaced by OpenFile;;
+ OpenSound=OpenSound;Replaced by multimedia sound support;;
+ ProfClear=ProfClear;See tech. ref. for Win32 API profiling support;;
+ ProfFinish=ProfFinish;See tech. ref. for Win32 API profiling support;;
+ ProfFlush=ProfFlush;See tech. ref. for Win32 API profiling support;;
+ ProfInsChk=ProfInsChk;See tech. ref. for Win32 API profiling support;;
+ ProfSampRate=ProfSampRate;See tech. ref. for Win32 API profiling support;;
+ ProfSetup=ProfSetup;See tech. ref. for Win32 API profiling support;;
+ ProfStart=ProfStart;See tech. ref. for Win32 API profiling support;;
+ ProfStop=ProfStop;See tech. ref. for Win32 API profiling support;;
+ ReadComm=ReadComm;Replaced by ReadFile;;
+ RemoveFontResource=RemoveFontResource;Must use string, not handle, for filename;;
+ ScaleViewportExt=ScaleViewportExt;Replaced by portable ScaleViewportExtEx;;
+ ScaleWindowExt=ScaleWindowExt;Replaced by portable ScaleWindowExtEx;;
+ SetBitmapDimension=SetBitmapDimension;Replaced by portable SetBitmapDimensionEx;;
+ SetClassWord=SetClassWord;Use SetClassLong for values that grow to 32-bits on Win32;;
+ SetCommEventMask=;Replaced by SetCommMask;;
+ SetEnvironment=SetEnvironment;No Win32 API equivalent;;
+ SetMetaFileBits=SetMetaFileBits;Replaced by portable SetMetaFileBitsEx;;
+ SetResourceHandler=SetResourceHandler;No Win32 API equivalent (resource API in progress);;
+ SetSoundNoise=SetSoundNoise;Replaced by multimedia sound support;;
+ SetViewportExt=SetViewportExt;Replaced by portable SetViewportExtEx;;
+ SetViewportOrg=SetViewportOrg;Replaced by portable SetViewportOrgEx;;
+ SetVoiceAccent=SetVoiceAccent;Replaced by multimedia sound support;;
+ SetVoiceEnvelope=SetVoiceEnvelope;Replaced by multimedia sound support;;
+ SetVoiceNote=SetVoiceNote;Replaced by multimedia sound support;;
+ SetVoiceQueueSize=SetVoiceQueueSize;Replaced by multimedia sound support;;
+ SetVoiceSound=SetVoiceSound;Replaced by multimedia sound support;;
+ SetVoiceThreshold=SetVoiceThreshold;Replaced by multimedia sound support;;
+ SetWindowExt=SetWindowExt;Replaced by portable SetWindowExtEx;;
+ SetWindowOrg=SetWindowOrg;Replaced by portable SetWindowOrgEx;;
+ SetWindowWord=SetWindowWord;Use SetWindowLong for values that grow to 32-bits on Win32;;
+ StartSound=StartSound;Replaced by multimedia sound support;;
+ StopSound=StopSound;Replaced by multimedia sound support;;
+ SwitchStackBack=SwitchStackBack;No Win32 API equivalent;;
+ SwitchStackTo=SwitchStackTo;No Win32 API equivalent;;
+ SyncAllVoices=SyncAllVoices;Replaced by multimedia sound support;;
+ UngetCommChar=UngetCommChar;No Win32 equivalent;;
+ ValidateCodeSegments=ValidateCodeSegments;No Win32 API equivalent;;
+ ValidateFreeSpaces=ValidateFreeSpaces;No Win32 API equivalent;;
+ WaitSoundState=WaitSoundState;Replaced by multimedia sound support;;
+ WriteComm=WriteComm;Replaced by WriteFile;;
+
+[MESSAGES]
+ EM_GETSEL=EM_GETSEL;wParam/lParam repacking, refer to tech. ref. for details;;
+ EM_LINESCROLL=EM_LINESCROLL;wParam/lParam repacking, refer to tech. ref. for details;;
+ EM_SETSEL=EM_SETSEL;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_ACTIVATE=WM_ACTIVATE;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_CHANGECBCHAIN=WM_CHANGECBCHAIN;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_CHARTOITEM=WM_CHARTOITEM;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_COMMAND=WM_COMMAND;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_CTLCOLOR=WM_CTLCOLOR;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_DDE_ACK=WM_DDE_ACK;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_DDE_ADVISE=WM_DDE_ADVISE;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_DDE_DATA=WM_DDE_DATA;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_DDE_EXECUTE=WM_DDE_EXECUTE;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_DDE_POKE=WM_DDE_POKE;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_HSCROLL=WM_HSCROLL;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_MDIACTIVATE=WM_MDIACTIVATE;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_MDISETMENU=WM_MDISETMENU;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_MENUCHAR=WM_MENUCHAR;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_MENUSELECT=WM_MENUSELECT;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_PARENTNOTIFY=WM_PARENTNOTIFY;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_VKEYTOITEM=WM_VKEYTOITEM;wParam/lParam repacking, refer to tech. ref. for details;;
+ WM_VSCROLL=WM_VSCROLL;wParam/lParam repacking, refer to tech. ref. for details;;
+
+[STRUCTURES]
+ DCB=DCB;Changes to bitfields and additional structure members;;
+
+[TYPES]
+ (WORD)=WORD;Check if incorrect cast of 32-bit value;Replace 16-bit data types with 32-bit types where possible;
+
+[CONSTANTS]
+ GCW_HCURSOR=GetClassLong;Replaced by GCL_HCURSOR;;
+ GCW_HBRBACKGROUND=GetClassLong;Replaced by GCL_HBRBACKGROUND;;
+ GCW_HICON=GetClassLong;Replaced by GCL_HICON;;
+ GWW_HINSTANCE=GetWindowLong;Replaced by GWL_HINSTANCE;;
+ GWW_HWNDPARENT=GetWindowLong;Replaced by GWL_HWNDPARENT;;
+ GWW_ID=GetWindowLong;Replaced by GWL_ID;;
+ GWW_USERDATA=GetWindowLong;Replaced by GWL_USERDATA;;
+
+[MACROS]
+ HIWORD=HIWORD;Check if HIWORD target is 16- or 32-bit;;
+ LOWORD=LOWORD;Check if LOWORD target is 16- or 32-bit;;
+ MAKEPOINT=MAKEPOINT;Replaced by LONG2POINT;;
+
+[CUSTOM]
+ WndProc=WindowProc;All WndProc's should be defined in a portable manner;WndProc(HWND hWnd, UINT uMsg, UINT uParam, LONG lParam);
diff --git a/public/sdk/inc/386align.tab b/public/sdk/inc/386align.tab
new file mode 100644
index 000000000..7c2e147f8
--- /dev/null
+++ b/public/sdk/inc/386align.tab
@@ -0,0 +1,12 @@
+bit 8 32
+word 4 4
+char 1 1
+short 2 2
+int 4 4 2147483647
+long 4 4
+float 4 4
+double 8 8
+bptr 4 4
+wptr 4 4
+struct 1 1
+struct2 1 1
diff --git a/public/sdk/inc/accctrl.h b/public/sdk/inc/accctrl.h
new file mode 100644
index 000000000..f4809133e
--- /dev/null
+++ b/public/sdk/inc/accctrl.h
@@ -0,0 +1,663 @@
+//+-------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1993-1996.
+//
+// File: accctrl.w
+//
+// Contents: common internal includes for new style Win32 Access Control
+// APIs
+//
+//
+//--------------------------------------------------------------------
+#ifndef __ACCESS_CONTROL__
+#define __ACCESS_CONTROL__
+
+#ifndef __midl
+#include <wtypes.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AccFree LocalFree
+
+//
+// Definition: TRUSTEE_TYPE
+// This enumerated type specifies the type of trustee account for the trustee
+// returned by the API described in this document.
+// TRUSTEE_IS_UNKNOWN - The trustee is an unknown, but not necessarily invalid
+// type. This field is not validated on input to the APIs
+// that take Trustees.
+// TRUSTEE_IS_USER The trustee account is a user account.
+// TRUSTEE_IS_GROUP The trustee account is a group account.
+//
+
+typedef enum _TRUSTEE_TYPE
+{
+ TRUSTEE_IS_UNKNOWN,
+ TRUSTEE_IS_USER,
+ TRUSTEE_IS_GROUP,
+// #if(_WIN32_WINNT >= 0x0500)
+ TRUSTEE_IS_ALIAS,
+ TRUSTEE_IS_WELL_KNOWN_GROUP,
+ TRUSTEE_IS_DELETED,
+ TRUSTEE_IS_INVALID,
+// #endif /* _WIN32_WINNT >= 0x0500 */
+} TRUSTEE_TYPE;
+
+
+//
+// Definition: TRUSTEE_FORM
+// This enumerated type specifies the form the trustee identifier is in for a
+// particular trustee.
+// TRUSTEE_IS_SID The trustee is identified with a SID rather than with a name.
+// TRUSTEE_IS_NAME The trustee is identified with a name.
+//
+
+typedef enum _TRUSTEE_FORM
+{
+ TRUSTEE_IS_SID,
+ TRUSTEE_IS_NAME,
+// #if(_WIN32_WINNT >= 0x0500)
+ TRUSTEE_BAD_FORM
+// #endif /* _WIN32_WINNT >= 0x0500 */
+} TRUSTEE_FORM;
+
+
+//
+// Definition: MULTIPLE_TRUSTEE_OPERATION
+// If the trustee is a multiple trustee, this enumerated type specifies the type.
+// TRUSTEE_IS_IMPERSONATE The trustee is an impersonate trustee and the multiple
+// trustee field in the trustee points to another trustee
+// that is a trustee for the server that will be doing the
+// impersonation.
+//
+
+typedef enum _MULTIPLE_TRUSTEE_OPERATION
+{
+ NO_MULTIPLE_TRUSTEE,
+ TRUSTEE_IS_IMPERSONATE,
+} MULTIPLE_TRUSTEE_OPERATION;
+
+
+//
+// Definition: TRUSTEE
+// This structure is used to pass account information into and out of the system
+// using the API defined in this document.
+// PMultipleTrustee - if NON-NULL, points to another trustee structure, as
+// defined by the multiple trustee operation field.
+// MultipleTrusteeOperation - Defines the multiple trustee operation/type.
+// TrusteeForm - defines if the trustee is defined by name or SID.
+// TrusteeType - defines if the trustee type is unknown, a user or a group.
+// PwcsName - points to the trustee name or the trustee SID.
+//
+
+typedef struct _TRUSTEE_A
+{
+ struct _TRUSTEE_A *pMultipleTrustee;
+ MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
+ TRUSTEE_FORM TrusteeForm;
+ TRUSTEE_TYPE TrusteeType;
+ LPSTR ptstrName;
+} TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA;
+typedef struct _TRUSTEE_W
+{
+ struct _TRUSTEE_W *pMultipleTrustee;
+ MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
+ TRUSTEE_FORM TrusteeForm;
+ TRUSTEE_TYPE TrusteeType;
+#ifdef __midl
+ [switch_is(TrusteeForm)]
+#endif
+ union
+ {
+#ifdef __midl
+ [case(TRUSTEE_IS_NAME)]
+#endif
+ LPWSTR ptstrName;
+#ifdef __midl
+ [case(TRUSTEE_IS_SID)]
+#endif
+ SID *pSid;
+ };
+} TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW;
+#ifdef UNICODE
+typedef TRUSTEE_W TRUSTEE_;
+typedef PTRUSTEE_W PTRUSTEE_;
+typedef TRUSTEEW TRUSTEE;
+typedef PTRUSTEEW PTRUSTEE;
+#else
+typedef TRUSTEE_A TRUSTEE_;
+typedef PTRUSTEE_A PTRUSTEE_;
+typedef TRUSTEEA TRUSTEE;
+typedef PTRUSTEEA PTRUSTEE;
+#endif // UNICODE
+
+
+//
+// Definition: ACCESS_MODE
+// This enumerated type specifies how permissions are (requested)/to be applied
+// for the trustee by the access control entry. On input this field can by any
+// of the values, although it is not meaningful to mix access control and audit
+// control entries. On output this field will be either SET_ACCESS, DENY_ACCESS,
+// SET_AUDIT_SUCCESS, SET_AUDIT_FAILURE.
+// The following descriptions define how this type effects an explicit access
+// request to apply access permissions to an object.
+// GRANT_ACCESS - The trustee will have at least the requested permissions upon
+// successful completion of the command. (If the trustee has
+// additional permissions they will not be removed).
+// SET_ACCESS - The trustee will have exactly the requested permissions upon
+// successful completion of the command.
+// DENY_ACCESS - The trustee will be denied the specified permissions.
+// REVOKE_ACCESS - Any explicit access rights the trustee has will be revoked.
+// SET_AUDIT_SUCCESS - The trustee will be audited for successful opens of the
+// object using the requested permissions.
+// SET_AUDIT_FAILURE - The trustee will be audited for failed opens of the object
+// using the requested permissions.
+//
+
+typedef enum _ACCESS_MODE
+{
+ NOT_USED_ACCESS = 0,
+ GRANT_ACCESS,
+ SET_ACCESS,
+ DENY_ACCESS,
+ REVOKE_ACCESS,
+ SET_AUDIT_SUCCESS,
+ SET_AUDIT_FAILURE
+} ACCESS_MODE;
+
+//
+// Definition: Inheritance flags
+// These bit masks are provided to allow simple application of inheritance in
+// explicit access requests on containers.
+// NO_INHERITANCE The specific access permissions will only be applied to
+// the container, and will not be inherited by objects created
+// within the container.
+// SUB_CONTAINERS_ONLY_INHERIT The specific access permissions will be inherited
+// and applied to sub containers created within the
+// container, and will be applied to the container
+// itself.
+// SUB_OBJECTS_ONLY_INHERIT The specific access permissions will only be inherited
+// by objects created within the specific container.
+// The access permissions will not be applied to the
+// container itself.
+// SUB_CONTAINERS_AND_OBJECTS_INHERIT The specific access permissions will be
+// inherited by containers created within the
+// specific container, will be applied to
+// objects created within the container, but
+// will not be applied to the container itself.
+//
+#define NO_INHERITANCE 0x0
+#define SUB_OBJECTS_ONLY_INHERIT 0x1
+#define SUB_CONTAINERS_ONLY_INHERIT 0x2
+#define SUB_CONTAINERS_AND_OBJECTS_INHERIT 0x3
+#define INHERIT_NO_PROPAGATE 0x6
+#define INHERIT_ONLY 0x8
+
+
+//
+// Definition:
+// This enumerated type defines the objects supported by the get/set API within
+// this document. See section 3.1, Object Types for a detailed definition of the
+// supported object types, and their name formats.
+//
+typedef enum _SE_OBJECT_TYPE
+{
+ SE_UNKNOWN_OBJECT_TYPE = 0,
+ SE_FILE_OBJECT,
+ SE_SERVICE,
+ SE_PRINTER,
+ SE_REGISTRY_KEY,
+ SE_LMSHARE,
+ SE_KERNEL_OBJECT,
+ SE_WINDOW_OBJECT,
+// #if(_WIN32_WINNT >= 0x0500)
+ SE_DS_OBJECT,
+ SE_DS_OBJECT_ALL,
+ SE_PROVIDER_DEFINED_OBJECT
+// #endif /* _WIN32_WINNT >= 0x0500 */
+} SE_OBJECT_TYPE;
+
+
+//
+// Definition: EXPLICIT_ACCESS
+// This structure is used to pass access control entry information into and out
+// of the system using the API defined in this document.
+// grfAccessPermissions - This contains the access permissions to assign for the
+// trustee. It is in the form of an NT access mask.
+// grfAccessMode - This field defines how the permissions are to be applied for
+// the trustee.
+// grfInheritance - For containers, this field defines how the access control
+// entry is/(is requested) to be inherited on
+// objects/sub-containers created within the container.
+// Trustee - This field contains the definition of the trustee account the
+// explicit access applies to.
+//
+
+typedef struct _EXPLICIT_ACCESS_A
+{
+ DWORD grfAccessPermissions;
+ ACCESS_MODE grfAccessMode;
+ DWORD grfInheritance;
+ TRUSTEE_A Trustee;
+} EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;
+typedef struct _EXPLICIT_ACCESS_W
+{
+ DWORD grfAccessPermissions;
+ ACCESS_MODE grfAccessMode;
+ DWORD grfInheritance;
+ TRUSTEE_W Trustee;
+} EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW;
+#ifdef UNICODE
+typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_;
+typedef PEXPLICIT_ACCESS_W PEXPLICIT_ACCESS_;
+typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS;
+typedef PEXPLICIT_ACCESSW PEXPLICIT_ACCESS;
+#else
+typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_;
+typedef PEXPLICIT_ACCESS_A PEXPLICIT_ACCESS_;
+typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS;
+typedef PEXPLICIT_ACCESSA PEXPLICIT_ACCESS;
+#endif // UNICODE
+
+
+//
+// BUGBUG - Temporary
+//
+
+//
+// Definition: ACCESS_REQUEST
+// This structure is used to by IAccessControl and IObjectAccess to encode
+// a request to apply access permissions for a trustee
+//
+typedef struct _ACCESS_REQUEST_W
+{
+ DWORD grfAccessPermissions;
+ TRUSTEE_W Trustee;
+} ACCESS_REQUEST_W, *PACCESS_REQUEST_W;
+
+typedef struct _ACCESS_REQUEST_A
+{
+ DWORD grfAccessPermissions;
+ TRUSTEE_A Trustee;
+} ACCESS_REQUEST_A, *PACCESS_REQUEST_A;
+
+#ifdef UNICODE
+ #define ACCESS_REQUEST ACCESS_REQUEST_W
+ #define PACCESS_REQUEST PACCESS_REQUEST_W
+#else
+ #define ACCESS_REQUEST ACCESS_REQUEST_A
+ #define PACCESS_REQUEST PACCESS_REQUEST_A
+#endif
+
+
+//
+// Definition:
+// This structure is used to by IAccessControl and IObjectAccess to encode
+// a request to apply audit entries for a trustee
+//
+typedef struct _AUDIT_REQUEST_W
+{
+ DWORD grfAccessPermissions;
+ ACCESS_MODE grfAuditMode;
+ TRUSTEE_W Trustee;
+} AUDIT_REQUEST_W, *PAUDIT_REQUEST_W;
+
+typedef struct _AUDIT_REQUEST_A
+{
+ DWORD grfAccessPermissions;
+ ACCESS_MODE grfAuditMode;
+ TRUSTEE_A Trustee;
+} AUDIT_REQUEST_A, *PAUDIT_REQUEST_A;
+
+#ifdef UNICODE
+ #define AUDIT_REQUEST AUDIT_REQUEST_W
+ #define PAUDIT_REQUEST PAUDIT_REQUEST_W
+#else
+ #define AUDIT_REQUEST AUDIT_REQUEST_A
+ #define PAUDIT_REQUEST PAUDIT_REQUEST_A
+#endif
+
+#define PROV_CONTAINER_LIST 0x00000001L
+#define PROV_CONTAINER_DELETE_CHILDREN 0x00000002L
+#define PROV_CONTAINER_CREATE_CHILDREN 0x00000004L
+
+#define PROV_OBJECT_READ 0x00000010L
+#define PROV_OBJECT_WRITE 0x00000020L
+#define PROV_OBJECT_EXECUTE 0x00000040L
+
+#define PROV_CHANGE_ATTRIBUTES 0x00000100L
+#define PROV_EDIT_ACCESSRIGHTS 0x00000200L
+#define PROV_DELETE 0x00000400L
+#define PROV_ALL_ACCESS 0x00000777L
+
+//
+// End BUGBUG
+//
+
+
+
+// #if(_WIN32_WINNT >= 0x0500)
+//----------------------------------------------------------------------------
+//
+// NT5 APIs
+//
+//----------------------------------------------------------------------------
+
+
+//
+/// Access rights
+//
+typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS;
+
+//
+// Inheritance flags
+//
+typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS;
+
+
+//
+// Access / Audit structures
+//
+typedef struct _ACTRL_ACCESS_ENTRYA
+{
+ TRUSTEE_A Trustee;
+ ULONG fAccessFlags;
+ ACCESS_RIGHTS Access;
+ ACCESS_RIGHTS ProvSpecificAccess;
+ INHERIT_FLAGS Inheritance;
+ LPSTR lpInheritProperty;
+} ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA;
+//
+// Access / Audit structures
+//
+typedef struct _ACTRL_ACCESS_ENTRYW
+{
+ TRUSTEE_W Trustee;
+ ULONG fAccessFlags;
+ ACCESS_RIGHTS Access;
+ ACCESS_RIGHTS ProvSpecificAccess;
+ INHERIT_FLAGS Inheritance;
+ LPWSTR lpInheritProperty;
+} ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW;
+#ifdef UNICODE
+typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY;
+typedef PACTRL_ACCESS_ENTRYW PACTRL_ACCESS_ENTRY;
+#else
+typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY;
+typedef PACTRL_ACCESS_ENTRYA PACTRL_ACCESS_ENTRY;
+#endif // UNICODE
+
+
+
+typedef struct _ACTRL_ACCESS_ENTRY_LISTA
+{
+ ULONG cEntries;
+#ifdef __midl
+ [size_is(cEntries)]
+#endif
+ ACTRL_ACCESS_ENTRYA *pAccessList;
+} ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA;
+typedef struct _ACTRL_ACCESS_ENTRY_LISTW
+{
+ ULONG cEntries;
+#ifdef __midl
+ [size_is(cEntries)]
+#endif
+ PACTRL_ACCESS_ENTRYW pAccessList;
+} ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW;
+#ifdef UNICODE
+typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST;
+typedef PACTRL_ACCESS_ENTRY_LISTW PACTRL_ACCESS_ENTRY_LIST;
+#else
+typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST;
+typedef PACTRL_ACCESS_ENTRY_LISTA PACTRL_ACCESS_ENTRY_LIST;
+#endif // UNICODE
+
+
+
+typedef struct _ACTRL_PROPERTY_ENTRYA
+{
+ LPSTR lpProperty;
+ PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList;
+ ULONG fListFlags;
+} ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA;
+typedef struct _ACTRL_PROPERTY_ENTRYW
+{
+ LPWSTR lpProperty;
+ PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList;
+ ULONG fListFlags;
+} ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW;
+#ifdef UNICODE
+typedef ACTRL_PROPERTY_ENTRYW ACTRL_PROPERTY_ENTRY;
+typedef PACTRL_PROPERTY_ENTRYW PACTRL_PROPERTY_ENTRY;
+#else
+typedef ACTRL_PROPERTY_ENTRYA ACTRL_PROPERTY_ENTRY;
+typedef PACTRL_PROPERTY_ENTRYA PACTRL_PROPERTY_ENTRY;
+#endif // UNICODE
+
+
+
+typedef struct _ACTRL_ALISTA
+{
+ ULONG cEntries;
+#ifdef __midl
+ [size_is(cEntries)]
+#endif
+ PACTRL_PROPERTY_ENTRYA pPropertyAccessList;
+} ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA;
+typedef struct _ACTRL_ALISTW
+{
+ ULONG cEntries;
+#ifdef __midl
+ [size_is(cEntries)]
+#endif
+ PACTRL_PROPERTY_ENTRYW pPropertyAccessList;
+} ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW;
+#ifdef UNICODE
+typedef ACTRL_ACCESSW ACTRL_ACCESS;
+typedef PACTRL_ACCESSW PACTRL_ACCESS;
+typedef ACTRL_AUDITW ACTRL_AUDIT;
+typedef PACTRL_AUDITW PACTRL_AUDIT;
+#else
+typedef ACTRL_ACCESSA ACTRL_ACCESS;
+typedef PACTRL_ACCESSA PACTRL_ACCESS;
+typedef ACTRL_AUDITA ACTRL_AUDIT;
+typedef PACTRL_AUDITA PACTRL_AUDIT;
+#endif // UNICODE
+
+
+
+//
+// TRUSTEE_ACCESS flags
+//
+#define TRUSTEE_ACCESS_ALLOWED 0x00000001L
+#define TRUSTEE_ACCESS_READ 0x00000002L
+#define TRUSTEE_ACCESS_WRITE 0x00000004L
+
+#define TRUSTEE_ACCESS_EXPLICIT 0x00000001L
+#define TRUSTEE_ACCESS_READ_WRITE (TRUSTEE_ACCESS_READ | \
+ TRUSTEE_ACCESS_WRITE)
+
+
+
+typedef struct _TRUSTEE_ACCESSA
+{
+ LPSTR lpProperty;
+ ACCESS_RIGHTS Access;
+ ULONG fAccessFlags;
+ ULONG fReturnedAccess;
+} TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA;
+typedef struct _TRUSTEE_ACCESSW
+{
+ LPWSTR lpProperty;
+ ACCESS_RIGHTS Access;
+ ULONG fAccessFlags;
+ ULONG fReturnedAccess;
+} TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW;
+#ifdef UNICODE
+typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS;
+typedef PTRUSTEE_ACCESSW PTRUSTEE_ACCESS;
+#else
+typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS;
+typedef PTRUSTEE_ACCESSA PTRUSTEE_ACCESS;
+#endif // UNICODE
+
+
+
+//
+// Generic permission values
+//
+#define ACTRL_PERM_1 0x00000001
+#define ACTRL_PERM_2 0x00000002
+#define ACTRL_PERM_3 0x00000004
+#define ACTRL_PERM_4 0x00000008
+#define ACTRL_PERM_5 0x00000010
+#define ACTRL_PERM_6 0x00000020
+#define ACTRL_PERM_7 0x00000040
+#define ACTRL_PERM_8 0x00000080
+#define ACTRL_PERM_9 0x00000100
+#define ACTRL_PERM_10 0x00000200
+#define ACTRL_PERM_11 0x00000400
+#define ACTRL_PERM_12 0x00000800
+#define ACTRL_PERM_13 0x00001000
+#define ACTRL_PERM_14 0x00002000
+#define ACTRL_PERM_15 0x00004000
+#define ACTRL_PERM_16 0x00008000
+#define ACTRL_PERM_17 0x00010000
+#define ACTRL_PERM_18 0x00020000
+#define ACTRL_PERM_19 0x00040000
+#define ACTRL_PERM_20 0x00080000
+
+//
+// Access permissions
+//
+#define ACTRL_ACCESS_ALLOWED 0x00000001
+#define ACTRL_ACCESS_DENIED 0x00000002
+#define ACTRL_AUDIT_SUCCESS 0x00000003
+#define ACTRL_AUDIT_FAILURE 0x00000004
+
+
+//
+// Property list flags
+//
+#define ACTRL_ACCESS_PROTECTED 0x00000001
+
+
+#define ACTRL_DELETE 0x08000000
+#define ACTRL_READ_CONTROL 0x10000000
+#define ACTRL_CHANGE_ACCESS 0x20000000
+#define ACTRL_CHANGE_OWNER 0x40000000
+#define ACTRL_SYNCHRONIZE 0x80000000
+#define ACTRL_STD_RIGHTS_ALL 0xf8000000
+
+#define ACTRL_DS_OPEN ACTRL_PERM_1
+#define ACTRL_DS_CREATE_CHILD ACTRL_PERM_2
+#define ACTRL_DS_DELETE_CHILD ACTRL_PERM_3
+#define ACTRL_DS_LIST ACTRL_PERM_4
+#define ACTRL_DS_SELF ACTRL_PERM_5
+#define ACTRL_DS_READ_PROP ACTRL_PERM_6
+#define ACTRL_DS_WRITE_PROP ACTRL_PERM_7
+#define ACTRL_FILE_READ ACTRL_PERM_1
+#define ACTRL_FILE_WRITE ACTRL_PERM_2
+#define ACTRL_FILE_APPEND ACTRL_PERM_3
+#define ACTRL_FILE_READ_PROP ACTRL_PERM_4
+#define ACTRL_FILE_WRITE_PROP ACTRL_PERM_5
+#define ACTRL_FILE_EXECUTE ACTRL_PERM_6
+#define ACTRL_FILE_READ_ATTRIB ACTRL_PERM_7
+#define ACTRL_FILE_WRITE_ATTRIB ACTRL_PERM_8
+#define ACTRL_DIR_LIST ACTRL_PERM_1
+#define ACTRL_DIR_CREATE_OBJECT ACTRL_PERM_2
+#define ACTRL_DIR_CREATE_CHILD ACTRL_PERM_3
+#define ACTRL_DIR_DELETE_CHILD ACTRL_PERM_4
+#define ACTRL_DIR_TRAVERSE ACTRL_PERM_5
+#define ACTRL_KERNEL_TERMINATE ACTRL_PERM_1
+#define ACTRL_KERNEL_THREAD ACTRL_PERM_2
+#define ACTRL_KERNEL_VM ACTRL_PERM_3
+#define ACTRL_KERNEL_VM_READ ACTRL_PERM_4
+#define ACTRL_KERNEL_VM_WRITE ACTRL_PERM_5
+#define ACTRL_KERNEL_DUP_HANDLE ACTRL_PERM_6
+#define ACTRL_KERNEL_PROCESS ACTRL_PERM_7
+#define ACTRL_KERNEL_SET_INFO ACTRL_PERM_8
+#define ACTRL_KERNEL_GET_INFO ACTRL_PERM_9
+#define ACTRL_KERENL_CONTROL ACTRL_PERM_10
+#define ACTRL_KERNEL_ALERT ACTRL_PERM_11
+#define ACTRL_KERNEL_GET_CONTEXT ACTRL_PERM_12
+#define ACTRL_KERNEL_SET_CONTEXT ACTRL_PERM_13
+#define ACTRL_KERNEL_TOKEN ACTRL_PERM_14
+#define ACTRL_KERNEL_IMPERSONATE ACTRL_PERM_15
+#define ACTRL_KERNEL_DIMPERSONATE ACTRL_PERM_16
+#define ACTRL_PRINT_SADMIN ACTRL_PERM_1
+#define ACTRL_PRINT_SLIST ACTRL_PERM_2
+#define ACTRL_PRINT_PADMIN ACTRL_PERM_3
+#define ACTRL_PRINT_PUSE ACTRL_PERM_4
+#define ACTRL_PRINT_JADMIN ACTRL_PERM_5
+#define ACTRL_SVC_GET_INFO ACTRL_PERM_1
+#define ACTRL_SVC_SET_INFO ACTRL_PERM_2
+#define ACTRL_SVC_STATUS ACTRL_PERM_3
+#define ACTRL_SVC_LIST ACTRL_PERM_4
+#define ACTRL_SVC_START ACTRL_PERM_5
+#define ACTRL_SVC_STOP ACTRL_PERM_6
+#define ACTRL_SVC_PAUSE ACTRL_PERM_7
+#define ACTRL_SVC_INTERROGATE ACTRL_PERM_8
+#define ACTRL_SVC_UCONTROL ACTRL_PERM_9
+#define ACTRL_REG_QUERY ACTRL_PERM_1
+#define ACTRL_REG_SET ACTRL_PERM_2
+#define ACTRL_REG_CREATE_CHILD ACTRL_PERM_3
+#define ACTRL_REG_LIST ACTRL_PERM_4
+#define ACTRL_REG_NOTIFY ACTRL_PERM_5
+#define ACTRL_REG_LINK ACTRL_PERM_6
+#define ACTRL_WIN_CLIPBRD ACTRL_PERM_1
+#define ACTRL_WIN_GLOBAL_ATOMS ACTRL_PERM_2
+#define ACTRL_WIN_CREATE ACTRL_PERM_3
+#define ACTRL_WIN_LIST_DESK ACTRL_PERM_4
+#define ACTRL_WIN_LIST ACTRL_PERM_5
+#define ACTRL_WIN_READ_ATTRIBS ACTRL_PERM_6
+#define ACTRL_WIN_WRITE_ATTRIBS ACTRL_PERM_7
+#define ACTRL_WIN_SCREEN ACTRL_PERM_8
+#define ACTRL_WIN_EXIT ACTRL_PERM_9
+
+
+
+
+typedef struct _ACTRL_OVERLAPPED
+{
+ ULONG Reserved1;
+ ULONG Reserved2;
+ HANDLE hEvent;
+
+} ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED;
+
+typedef struct _ACTRL_ACCESS_INFOA
+{
+ ULONG fAccessPermission;
+ LPSTR lpAccessPermissionName;
+} ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA;
+typedef struct _ACTRL_ACCESS_INFOW
+{
+ ULONG fAccessPermission;
+ LPWSTR lpAccessPermissionName;
+} ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW;
+#ifdef UNICODE
+typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO;
+typedef PACTRL_ACCESS_INFOW PACTRL_ACCESS_INFO;
+#else
+typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO;
+typedef PACTRL_ACCESS_INFOA PACTRL_ACCESS_INFO;
+#endif // UNICODE
+
+
+#define ACTRL_ACCESS_NO_OPTIONS 0x00000000
+#define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES 0x00000001
+
+// #endif /* _WIN32_WINNT >= 0x0500 */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // __ACCESS_CONTROL__
diff --git a/public/sdk/inc/aclapi.h b/public/sdk/inc/aclapi.h
new file mode 100644
index 000000000..61dd8efbf
--- /dev/null
+++ b/public/sdk/inc/aclapi.h
@@ -0,0 +1,519 @@
+//+-------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1993-1996.
+//
+// File: aclapi.h
+//
+// Contents: public header file for acl and trusted server access control
+// APIs
+//
+//--------------------------------------------------------------------
+#ifndef __ACCESS_CONTROL_API__
+#define __ACCESS_CONTROL_API__
+
+#include <windows.h>
+#include <accctrl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DWORD
+WINAPI
+SetEntriesInAclW( IN ULONG cCountOfExplicitEntries,
+ IN PEXPLICIT_ACCESS_W pListOfExplicitEntries,
+ IN PACL OldAcl,
+ OUT PACL * NewAcl);
+
+DWORD
+WINAPI
+SetEntriesInAclA( IN ULONG cCountOfExplicitEntries,
+ IN PEXPLICIT_ACCESS_A pListOfExplicitEntries,
+ IN PACL OldAcl,
+ OUT PACL * NewAcl);
+
+#ifdef UNICODE
+ #define SetEntriesInAcl SetEntriesInAclW
+#else
+ #define SetEntriesInAcl SetEntriesInAclA
+#endif
+
+
+DWORD
+WINAPI
+GetExplicitEntriesFromAclW( IN PACL pacl,
+ OUT PULONG pcCountOfExplicitEntries,
+ OUT PEXPLICIT_ACCESS_W * pListOfExplicitEntries);
+
+DWORD
+WINAPI
+GetExplicitEntriesFromAclA( IN PACL pacl,
+ OUT PULONG pcCountOfExplicitEntries,
+ OUT PEXPLICIT_ACCESS_A * pListOfExplicitEntries);
+
+#ifdef UNICODE
+ #define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclW
+#else
+ #define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclA
+#endif
+
+
+DWORD
+WINAPI
+GetEffectiveRightsFromAclW( IN PACL pacl,
+ IN PTRUSTEE_W pTrustee,
+ OUT PACCESS_MASK pAccessRights);
+
+DWORD
+WINAPI
+GetEffectiveRightsFromAclA( IN PACL pacl,
+ IN PTRUSTEE_A pTrustee,
+ OUT PACCESS_MASK pAccessRights);
+
+#ifdef UNICODE
+ #define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclW
+#else
+ #define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclA
+#endif
+
+
+DWORD
+WINAPI
+GetAuditedPermissionsFromAclW( IN PACL pacl,
+ IN PTRUSTEE_W pTrustee,
+ OUT PACCESS_MASK pSuccessfulAuditedRights,
+ OUT PACCESS_MASK pFailedAuditRights);
+
+DWORD
+WINAPI
+GetAuditedPermissionsFromAclA( IN PACL pacl,
+ IN PTRUSTEE_A pTrustee,
+ OUT PACCESS_MASK pSuccessfulAuditedRights,
+ OUT PACCESS_MASK pFailedAuditRights);
+
+#ifdef UNICODE
+ #define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclW
+#else
+ #define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclA
+#endif
+
+
+
+DWORD
+WINAPI
+GetNamedSecurityInfoW( IN LPWSTR pObjectName,
+ IN SE_OBJECT_TYPE ObjectType,
+ IN SECURITY_INFORMATION SecurityInfo,
+ OUT PSID * ppsidOowner,
+ OUT PSID * ppsidGroup,
+ OUT PACL * ppDacl,
+ OUT PACL * ppSacl,
+ OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor);
+
+DWORD
+WINAPI
+GetNamedSecurityInfoA( IN LPSTR pObjectName,
+ IN SE_OBJECT_TYPE ObjectType,
+ IN SECURITY_INFORMATION SecurityInfo,
+ OUT PSID * ppsidOowner,
+ OUT PSID * ppsidGroup,
+ OUT PACL * ppDacl,
+ OUT PACL * ppSacl,
+ OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor);
+
+#ifdef UNICODE
+ #define GetNamedSecurityInfo GetNamedSecurityInfoW
+#else
+ #define GetNamedSecurityInfo GetNamedSecurityInfoA
+#endif
+
+
+DWORD
+WINAPI
+GetSecurityInfo( IN HANDLE handle,
+ IN SE_OBJECT_TYPE ObjectType,
+ IN SECURITY_INFORMATION SecurityInfo,
+ OUT PSID * ppsidOowner,
+ OUT PSID * ppsidGroup,
+ OUT PACL * ppDacl,
+ OUT PACL * ppSacl,
+ OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor);
+
+
+DWORD
+WINAPI
+SetNamedSecurityInfoW( IN LPWSTR pObjectName,
+ IN SE_OBJECT_TYPE ObjectType,
+ IN SECURITY_INFORMATION SecurityInfo,
+ IN PSID psidOowner,
+ IN PSID psidGroup,
+ IN PACL pDacl,
+ IN PACL pSacl);
+
+DWORD
+WINAPI
+SetNamedSecurityInfoA( IN LPSTR pObjectName,
+ IN SE_OBJECT_TYPE ObjectType,
+ IN SECURITY_INFORMATION SecurityInfo,
+ IN PSID psidOowner,
+ IN PSID psidGroup,
+ IN PACL pDacl,
+ IN PACL pSacl);
+
+#ifdef UNICODE
+ #define SetNamedSecurityInfo SetNamedSecurityInfoW
+#else
+ #define SetNamedSecurityInfo SetNamedSecurityInfoA
+#endif
+
+
+DWORD
+WINAPI
+SetSecurityInfo( IN HANDLE handle,
+ IN SE_OBJECT_TYPE ObjectType,
+ IN SECURITY_INFORMATION SecurityInfo,
+ IN PSID psidOowner,
+ IN PSID psidGroup,
+ IN PACL pDacl,
+ IN PACL pSacl);
+
+
+//----------------------------------------------------------------------------
+// The following API are provided for trusted servers to use to
+// implement access control on their own objects.
+//----------------------------------------------------------------------------
+
+DWORD
+WINAPI
+BuildSecurityDescriptorW( IN PTRUSTEE_W pOwner,
+ IN PTRUSTEE_W pGroup,
+ IN ULONG cCountOfAccessEntries,
+ IN PEXPLICIT_ACCESS_W pListOfAccessEntries,
+ IN ULONG cCountOfAuditEntries,
+ IN PEXPLICIT_ACCESS_W pListOfAuditEntries,
+ IN PSECURITY_DESCRIPTOR pOldSD,
+ OUT PULONG pSizeNewSD,
+ OUT PSECURITY_DESCRIPTOR * pNewSD);
+
+DWORD
+WINAPI
+BuildSecurityDescriptorA( IN PTRUSTEE_A pOwner,
+ IN PTRUSTEE_A pGroup,
+ IN ULONG cCountOfAccessEntries,
+ IN PEXPLICIT_ACCESS_A pListOfAccessEntries,
+ IN ULONG cCountOfAuditEntries,
+ IN PEXPLICIT_ACCESS_A pListOfAuditEntries,
+ IN PSECURITY_DESCRIPTOR pOldSD,
+ OUT PULONG pSizeNewSD,
+ OUT PSECURITY_DESCRIPTOR * pNewSD);
+
+
+#ifdef UNICODE
+ #define BuildSecurityDescriptor BuildSecurityDescriptorW
+#else
+ #define BuildSecurityDescriptor BuildSecurityDescriptorA
+#endif
+
+
+DWORD
+WINAPI
+LookupSecurityDescriptorPartsW( OUT PTRUSTEE_W * pOwner,
+ OUT PTRUSTEE_W * pGroup,
+ OUT PULONG cCountOfAccessEntries,
+ OUT PEXPLICIT_ACCESS_W * pListOfAccessEntries,
+ OUT PULONG cCountOfAuditEntries,
+ OUT PEXPLICIT_ACCESS_W * pListOfAuditEntries,
+ IN PSECURITY_DESCRIPTOR pSD);
+
+DWORD
+WINAPI
+LookupSecurityDescriptorPartsA( OUT PTRUSTEE_A * pOwner,
+ OUT PTRUSTEE_A * pGroup,
+ OUT PULONG cCountOfAccessEntries,
+ OUT PEXPLICIT_ACCESS_A * pListOfAccessEntries,
+ OUT PULONG cCountOfAuditEntries,
+ OUT PEXPLICIT_ACCESS_A * pListOfAuditEntries,
+ IN PSECURITY_DESCRIPTOR pSD);
+
+#ifdef UNICODE
+ #define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsW
+#else
+ #define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsA
+#endif
+
+
+DWORD
+WINAPI
+GetEffectiveRightsFromSDW( IN PSECURITY_DESCRIPTOR pSD,
+ IN PTRUSTEE_W pTrustee,
+ OUT PACCESS_MASK pAccessRights);
+
+DWORD
+WINAPI
+GetEffectiveRightsFromSDA( IN PSECURITY_DESCRIPTOR pSD,
+ IN PTRUSTEE_A pTrustee,
+ OUT PACCESS_MASK pAccessRights);
+
+#ifdef UNICODE
+ #define GetEffectiveRightsFromSD GetEffectiveRightsFromSDW
+#else
+ #define GetEffectiveRightsFromSD GetEffectiveRightsFromSDA
+#endif
+
+
+DWORD
+WINAPI
+GetAuditedPermissionsFromSDW( IN PSECURITY_DESCRIPTOR pSD,
+ IN PTRUSTEE_W pTrustee,
+ OUT PACCESS_MASK pSuccessfulAuditedRights,
+ OUT PACCESS_MASK pFailedAuditRights);
+
+DWORD
+WINAPI
+GetAuditedPermissionsFromSDA( IN PSECURITY_DESCRIPTOR pSD,
+ IN PTRUSTEE_A pTrustee,
+ OUT PACCESS_MASK pSuccessfulAuditedRights,
+ OUT PACCESS_MASK pFailedAuditRights);
+
+#ifdef UNICODE
+ #define GetAuditedPermissionsFromSD GetAuditedPermissionsFromSDW
+#else
+ #define GetAuditedPermissionsFromSD GetAuditedPermissionsFromSDA
+#endif
+
+//----------------------------------------------------------------------------
+// The following helper API are provided for building
+// access control structures.
+//----------------------------------------------------------------------------
+
+VOID
+WINAPI
+BuildExplicitAccessWithNameW( IN OUT PEXPLICIT_ACCESS_W pExplicitAccess,
+ IN LPWSTR pTrusteeName,
+ IN DWORD AccessPermissions,
+ IN ACCESS_MODE AccessMode,
+ IN DWORD Inheritance);
+
+VOID
+WINAPI
+BuildExplicitAccessWithNameA( IN OUT PEXPLICIT_ACCESS_A pExplicitAccess,
+ IN LPSTR pTrusteeName,
+ IN DWORD AccessPermissions,
+ IN ACCESS_MODE AccessMode,
+ IN DWORD Inheritance);
+
+#ifdef UNICODE
+ #define BuildExplicitAccessWithName BuildExplicitAccessWithNameW
+#else
+ #define BuildExplicitAccessWithName BuildExplicitAccessWithNameA
+#endif
+
+
+VOID
+WINAPI
+BuildImpersonateExplicitAccessWithNameW(
+ IN OUT PEXPLICIT_ACCESS_W pExplicitAccess,
+ IN LPWSTR pTrusteeName,
+ IN PTRUSTEE_W pTrustee,
+ IN DWORD AccessPermissions,
+ IN ACCESS_MODE AccessMode,
+ IN DWORD Inheritance);
+
+VOID
+WINAPI
+BuildImpersonateExplicitAccessWithNameA(
+ IN OUT PEXPLICIT_ACCESS_A pExplicitAccess,
+ IN LPSTR pTrusteeName,
+ IN PTRUSTEE_A pTrustee,
+ IN DWORD AccessPermissions,
+ IN ACCESS_MODE AccessMode,
+ IN DWORD Inheritance);
+
+#ifdef UNICODE
+ #define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameW
+#else
+ #define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameA
+#endif
+
+
+VOID
+WINAPI
+BuildTrusteeWithNameW( IN OUT PTRUSTEE_W pTrustee,
+ IN LPWSTR pName);
+
+VOID
+WINAPI
+BuildTrusteeWithNameA( IN OUT PTRUSTEE_A pTrustee,
+ IN LPSTR pName);
+
+#ifdef UNICODE
+ #define BuildTrusteeWithName BuildTrusteeWithNameW
+#else
+ #define BuildTrusteeWithName BuildTrusteeWithNameA
+#endif
+
+
+VOID
+WINAPI
+BuildImpersonateTrusteeW( IN OUT PTRUSTEE_W pTrustee,
+ IN PTRUSTEE_W pImpersonateTrustee);
+
+VOID
+WINAPI
+BuildImpersonateTrusteeA( IN OUT PTRUSTEE_A pTrustee,
+ IN PTRUSTEE_A pImpersonateTrustee);
+
+#ifdef UNICODE
+ #define BuildImpersonateTrustee BuildImpersonateTrusteeW
+#else
+ #define BuildImpersonateTrustee BuildImpersonateTrusteeA
+#endif
+
+
+VOID
+WINAPI
+BuildTrusteeWithSidW( IN OUT PTRUSTEE_W pTrustee,
+ IN PSID pSid);
+
+VOID
+WINAPI
+BuildTrusteeWithSidA( IN OUT PTRUSTEE_A pTrustee,
+ IN PSID pSid);
+
+#ifdef UNICODE
+ #define BuildTrusteeWithSid BuildTrusteeWithSidW
+#else
+ #define BuildTrusteeWithSid BuildTrusteeWithSidA
+#endif
+
+
+LPWSTR
+WINAPI
+GetTrusteeNameW( IN PTRUSTEE_W pTrustee);
+
+LPSTR
+WINAPI
+GetTrusteeNameA( IN PTRUSTEE_A pTrustee);
+
+#ifdef UNICODE
+ #define GetTrusteeName GetTrusteeNameW
+#else
+ #define GetTrusteeName GetTrusteeNameA
+#endif
+
+
+TRUSTEE_TYPE
+WINAPI
+GetTrusteeTypeW( IN PTRUSTEE_W pTrustee);
+
+TRUSTEE_TYPE
+WINAPI
+GetTrusteeTypeA( IN PTRUSTEE_A pTrustee);
+
+#ifdef UNICODE
+ #define GetTrusteeType GetTrusteeTypeW
+#else
+ #define GetTrusteeType GetTrusteeTypeA
+#endif
+
+
+TRUSTEE_FORM
+WINAPI
+GetTrusteeFormW( IN PTRUSTEE_W pTrustee);
+
+TRUSTEE_FORM
+WINAPI
+GetTrusteeFormA( IN PTRUSTEE_A pTrustee);
+
+#ifdef UNICODE
+ #define GetTrusteeForm GetTrusteeFormW
+#else
+ #define GetTrusteeForm GetTrusteeFormA
+#endif
+
+
+MULTIPLE_TRUSTEE_OPERATION
+WINAPI
+GetMultipleTrusteeOperationW( IN PTRUSTEE_W pTrustee);
+
+MULTIPLE_TRUSTEE_OPERATION
+WINAPI
+GetMultipleTrusteeOperationA( IN PTRUSTEE_A pTrustee);
+
+#ifdef UNICODE
+ #define GetMultipleTrusteeOperation GetMultipleTrusteeOperationW
+#else
+ #define GetMultipleTrusteeOperation GetMultipleTrusteeOperationA
+#endif
+
+
+PTRUSTEE_W
+WINAPI
+GetMultipleTrusteeW( IN PTRUSTEE_W pTrustee);
+
+PTRUSTEE_A
+WINAPI
+GetMultipleTrusteeA( IN PTRUSTEE_A pTrustee);
+
+#ifdef UNICODE
+ #define GetMultipleTrustee GetMultipleTrusteeW
+#else
+ #define GetMultipleTrustee GetMultipleTrusteeA
+#endif
+
+
+void
+WINAPI
+FreeStgExplicitAccessListW( IN ULONG ccount,
+ IN PEXPLICIT_ACCESS_W pEA);
+
+void
+WINAPI
+FreeStgExplicitAccessListA( IN ULONG ccount,
+ IN PEXPLICIT_ACCESS_A pEA);
+
+#ifdef UNICODE
+ #define FreeStgExplicitAccessList FreeStgExplicitAccessListW
+#else
+ #define FreeStgExplicitAccessList FreeStgExplicitAccessListA
+#endif
+
+
+VOID
+WINAPI
+BuildAccessRequestW( OUT PACCESS_REQUEST_W pAr,
+ IN LPWSTR Name,
+ IN DWORD Mask);
+
+VOID
+WINAPI
+BuildAccessRequestA( OUT PACCESS_REQUEST_A pAr,
+ IN LPSTR Name,
+ IN DWORD Mask);
+
+#ifdef UNICODE
+ #define BuildAccessRequest BuildAccessRequestW
+#else
+ #define BuildAccessRequest BuildAccessRequestA
+#endif
+
+
+ULONG
+WINAPI
+NTAccessMaskToProvAccessRights( IN SE_OBJECT_TYPE SeObjectType,
+ IN BOOL fIsContainer,
+ IN ACCESS_MASK AccessMask);
+
+ACCESS_MASK
+WINAPI
+ProvAccessRightsToNTAccessMask( IN SE_OBJECT_TYPE SeObjectType,
+ IN ULONG AccessRights);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif // __ACCESS_CONTROL_API__
+
+
diff --git a/public/sdk/inc/advsn2.h b/public/sdk/inc/advsn2.h
new file mode 100644
index 000000000..80c10ddbe
--- /dev/null
+++ b/public/sdk/inc/advsn2.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: advsn2.h
+//
+// Contents: Replacement for advsn2.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/advsnk.h b/public/sdk/inc/advsnk.h
new file mode 100644
index 000000000..3571b84db
--- /dev/null
+++ b/public/sdk/inc/advsnk.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: advsnk.h
+//
+// Contents: Replacement for advsnk.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/alertapi.h b/public/sdk/inc/alertapi.h
new file mode 100644
index 000000000..2db4c8868
--- /dev/null
+++ b/public/sdk/inc/alertapi.h
@@ -0,0 +1,214 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: alertapi.h
+//
+// Contents: Alert system API.
+//
+// History: 11-Jan-94 MarkBl Created
+//
+//--------------------------------------------------------------------------
+
+#if !defined( __ALERTAPI_H__ )
+#define __ALERTAPI_H__
+
+//
+// OLE headers don't define these. Use 'LP' vs 'P' to be consistent with OLE.
+//
+
+typedef UUID * LPUUID;
+typedef DISPID * LPDISPID;
+typedef DISPPARAMS * LPDISPPARAMS;
+
+
+//
+// Structure used with ReportAlert.
+//
+
+typedef struct _ALERTREPORTRECORD
+{
+ short Category;
+ short SubCategory;
+ short Severity;
+ long TitleMessageNumber;
+ long cTitleMessageInserts;
+ PWCHAR * TitleMessageInserts;
+ PWCHAR TitleText;
+ long DescrMessageNumber;
+ long cDescrMessageInserts;
+ PWCHAR * DescrMessageInserts;
+ PWCHAR SourceDescription;
+ LPUUID ComponentID;
+ LPUUID ReportClassID;
+ PWCHAR TakeActionDLL;
+ long cBytesAlertData;
+ PBYTE AlertData;
+ long cAdditionalArguments;
+ LPDISPID AdditionalArgumentNames;
+ LPVARIANT AdditionalArguments;
+} ALERTREPORTRECORD, * PALERTREPORTRECORD;
+
+typedef const ALERTREPORTRECORD * PCALERTREPORTRECORD;
+
+//
+// Helper ALERTREPORTRECORD initialization macro.
+//
+
+#define INITIALIZE_ALERTREPORTRECORD( \
+ Record, \
+ Cat, \
+ Sev, \
+ TitleMsg, \
+ DescrMsg, \
+ CompID, \
+ SrcName) \
+{ \
+ Record.Category = Cat; \
+ Record.SubCategory = 0; \
+ Record.Severity = Sev; \
+ Record.TitleMessageNumber = TitleMsg; \
+ Record.cTitleMessageInserts = 0; \
+ Record.TitleMessageInserts = NULL; \
+ Record.TitleText = NULL; \
+ Record.DescrMessageNumber = DescrMsg; \
+ Record.cDescrMessageInserts = 0; \
+ Record.DescrMessageInserts = NULL; \
+ Record.SourceDescription = SrcName; \
+ Record.ComponentID = CompID; \
+ Record.ReportClassID = NULL; \
+ Record.TakeActionDLL = NULL; \
+ Record.cBytesAlertData = 0; \
+ Record.AlertData = NULL; \
+ Record.cAdditionalArguments = 0; \
+ Record.AdditionalArgumentNames = NULL; \
+ Record.AdditionalArguments = NULL; \
+}
+
+
+typedef IAlertTarget * LPALERTTARGET;
+
+
+//
+// Public API
+//
+
+//+---------------------------------------------------------------------------
+//
+// API: ReportAlert
+//
+// Description: Raise an alert to the local computer distributor object
+// and/or log the alert in the local system log.
+//
+// Arguments: [palrepRecord] -- ALERTREPORTRECORD alert data.
+// [fdwAction] -- ReportAlert action (defined below).
+//
+// Returns: S_OK
+// HRESULT error
+//
+//----------------------------------------------------------------------------
+
+//
+// ReportAlert modes.
+//
+
+#define RA_REPORT 0x00000001
+#define RA_LOG 0x00000002
+#define RA_REPORT_AND_LOG 0x00000003
+
+STDAPI ReportAlert(
+ PCALERTREPORTRECORD palrepRecord,
+ DWORD fdwAction);
+
+
+//+---------------------------------------------------------------------------
+//
+// API: ReportAlertToTarget
+//
+// Description: Raise an alert to the alert target indicated.
+//
+// Arguments: [patTarget] -- Target instance (must be non-NULL).
+// [palrepRecord] -- ALERTREPORTRECORD alert data.
+//
+// Returns: S_OK
+// HRESULT error
+//
+//----------------------------------------------------------------------------
+
+STDAPI ReportAlertToTarget(
+ LPALERTTARGET patTarget,
+ PCALERTREPORTRECORD palrepRecord);
+
+
+//+---------------------------------------------------------------------------
+//
+// API: MarshalReport
+//
+// Description: Marshals the DISPPARAM alert report data into a buffer
+// suitable for report delivery via the IAlertTarget interface.
+//
+// Arguments: [pdparams] -- DISPPARAMS alert data.
+// [ppbReport] -- Return marshal buffer.
+// [pcbReportSize] -- Return marshal buffer size.
+//
+// Returns: S_OK
+// HRESULT error
+//
+//----------------------------------------------------------------------------
+
+STDAPI MarshalReport(
+ const LPDISPPARAMS pdparams,
+ PBYTE * ppbReport,
+ PULONG pcbReportSize);
+
+
+//+---------------------------------------------------------------------------
+//
+// API: UnMarshalReport
+//
+// Description: The converse of MarshalReport. Un-marshals the buffer
+// (marshalled alert data) into a DISPPARAMS structure.
+//
+// Arguments: [cbReportSize] -- Marshalled report size.
+// [ppbReport] -- Marshalled report.
+// [pdparams] -- Returned DISPPARAMS alert data.
+//
+// Returns: S_OK
+// HRESULT error
+//
+//----------------------------------------------------------------------------
+
+STDAPI UnMarshalReport(
+ ULONG cbReportSize,
+ const PBYTE pbReport,
+ LPDISPPARAMS pdparams);
+
+
+//
+// Non-Public API [as yet]
+//
+
+STDAPI CreateAlertDistributorObject(
+ const PWCHAR pwszAlertDistr);
+
+STDAPI Register(
+ LPDISPATCH pdispAlertDistr,
+ LPMONIKER pmkAlertTarget,
+ SHORT sCategory,
+ SHORT sSeverity,
+ PLONG plRegistrationID);
+
+STDAPI RegisterEx(
+ LPDISPATCH pdispAlertDistr,
+ LPMONIKER pmkAlertTarget,
+ SHORT cCount,
+ SHORT asCategory[],
+ SHORT asSeverity[],
+ PLONG plRegistrationID);
+
+STDAPI AsLogAlertInSystemLog(
+ ULONG cbReportSize,
+ const PBYTE pbReport);
+
+#endif // __ALERTAPI_H__
diff --git a/public/sdk/inc/align.hxx b/public/sdk/inc/align.hxx
new file mode 100644
index 000000000..67f6290c3
--- /dev/null
+++ b/public/sdk/inc/align.hxx
@@ -0,0 +1,293 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: Align.hxx
+//
+// Contents: Alignment routines (for MIPS)
+//
+// History: 14-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+#if !defined( __ALIGN_HXX__ )
+#define __ALIGN_HXX__
+
+//+-------------------------------------------------------------------------
+//
+// Function: AlignWCHAR, public
+//
+// Synopsis: Half-word aligns argument
+//
+// Arguments: [pb] -- Pointer to half-word align
+// [cbAlign] -- # Bytes moved to satisfy alignment
+//
+// Returns: [pb] incremented forward as necessary for half-word alignment
+//
+// History: 14-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+inline unsigned short * AlignWCHAR( unsigned char * pb,
+ unsigned * pcbAlign = 0 );
+
+inline unsigned short * AlignUSHORT( unsigned char * pb,
+ unsigned * pcbAlign = 0 );
+
+inline unsigned short * AlignWCHAR( unsigned char * pb,
+ unsigned * pcbAlign )
+{
+ return( AlignUSHORT( pb, pcbAlign ) );
+}
+
+inline unsigned short * AlignUSHORT( unsigned char * pb,
+ unsigned * pcbAlign )
+{
+ if ( pcbAlign )
+ *pcbAlign = (sizeof(unsigned short) -
+ ((int)pb & (sizeof(unsigned short) - 1))) %
+ sizeof(unsigned short);
+
+ return( (unsigned short *)( ((int)pb + sizeof(unsigned short) - 1) &
+ ~(sizeof(unsigned short) - 1 ) ) );
+}
+
+//+-------------------------------------------------------------------------
+//
+// Function: AlignULONG, public
+//
+// Synopsis: Word aligns argument
+//
+// Arguments: [pb] -- Pointer to word align
+// [cbAlign] -- # Bytes moved to satisfy alignment
+//
+// Returns: [pb] incremented forward as necessary for word alignment
+//
+// History: 14-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+inline unsigned long * AlignULONG( unsigned char * pb,
+ unsigned * pcbAlign = 0 );
+
+inline unsigned long * AlignULONG( unsigned char * pb,
+ unsigned * pcbAlign )
+{
+ if ( pcbAlign )
+ *pcbAlign = (sizeof(unsigned long) -
+ ((int)pb & (sizeof(unsigned long) - 1))) %
+ sizeof(unsigned long);
+
+ return( (unsigned long *)( ((int)pb + sizeof(unsigned long) - 1) &
+ ~(sizeof(unsigned long) - 1 ) ) );
+}
+
+inline long * AlignLong( unsigned char * pb,
+ unsigned * pcbAlign = 0 );
+
+inline long * AlignLong( unsigned char * pb,
+ unsigned * pcbAlign )
+{
+ if ( pcbAlign )
+ *pcbAlign = (sizeof(long) -
+ ((int)pb & (sizeof(long) - 1))) %
+ sizeof(long);
+
+ return( (long *)( ((int)pb + sizeof(long) - 1) &
+ ~(sizeof(long) - 1 ) ) );
+}
+
+inline LONGLONG * AlignLONGLONG( unsigned char * pb,
+ unsigned * pcbAlign = 0 );
+
+inline LONGLONG * AlignLONGLONG( unsigned char * pb,
+ unsigned * pcbAlign )
+{
+ if ( pcbAlign )
+ *pcbAlign = (sizeof(LONGLONG) -
+ ((int)pb & (sizeof(LONGLONG) - 1))) %
+ sizeof(LONGLONG);
+
+ return( (LONGLONG *)( ((int)pb + sizeof(LONGLONG) - 1) &
+ ~(sizeof(LONGLONG) - 1 ) ) );
+}
+
+inline float * AlignFloat( unsigned char * pb,
+ unsigned * pcbAlign = 0 );
+
+inline float * AlignFloat( unsigned char * pb,
+ unsigned * pcbAlign )
+{
+ if ( pcbAlign )
+ *pcbAlign = (sizeof(float) -
+ ((int)pb & (sizeof(float) - 1))) %
+ sizeof(float);
+
+ return( (float *)( ((int)pb + sizeof(float) - 1) &
+ ~(sizeof(float) - 1 ) ) );
+}
+
+inline double * AlignDouble( unsigned char * pb,
+ unsigned * pcbAlign = 0 );
+
+inline double * AlignDouble( unsigned char * pb,
+ unsigned * pcbAlign )
+{
+ if ( pcbAlign )
+ *pcbAlign = (sizeof(double) -
+ ((int)pb & (sizeof(double) - 1))) %
+ sizeof(double);
+
+ return( (double *)( ((int)pb + sizeof(double) - 1) &
+ ~(sizeof(double) - 1 ) ) );
+}
+
+//+-------------------------------------------------------------------------
+//
+// Function: AlignGUID, public
+//
+// Synopsis: 8-byte aligns argument
+//
+// Arguments: [pb] -- Pointer to word align
+// [cbAlign] -- # Bytes moved to satisfy alignment
+//
+// Returns: [pb] incremented forward as necessary for word alignment
+//
+// History: 29-Sep-93 KyleP Created
+//
+// Notes: This is somewhat error-prone code. 16-byte GUIDs are
+// only 8-byte aligned, so we use sizeof(double) and not
+// sizeof(GUID).
+//
+//--------------------------------------------------------------------------
+
+inline unsigned char * AlignGUID( unsigned char * pb,
+ unsigned * pcbAlign = 0 );
+
+inline unsigned char * AlignGUID( unsigned char * pb,
+ unsigned * pcbAlign )
+{
+ if ( pcbAlign )
+ *pcbAlign = (sizeof(double) -
+ ((int)pb & (sizeof(double) - 1))) %
+ sizeof(double);
+
+ return( (unsigned char *)( ((int)pb + sizeof(double) - 1) &
+ ~(sizeof(double) - 1 ) ) );
+}
+
+//+-------------------------------------------------------------------------
+//
+// Function: StoreWCHAR, public
+//
+// Synopsis: Stores half word in byte-aligned memory
+//
+// Arguments: [pb] -- Buffer
+// [hw] -- Half-word
+//
+// Returns: Number of bytes to increment [pb].
+//
+// History: 14-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+inline int StoreUSHORT( unsigned char * pb, unsigned short hw )
+{
+ *((UNALIGNED unsigned short *)pb) = hw;
+
+ return( sizeof( unsigned short ) );
+}
+
+inline int StoreWCHAR( unsigned char * pb, unsigned short hw )
+{
+ return( StoreUSHORT( pb, hw ) );
+}
+
+//+-------------------------------------------------------------------------
+//
+// Function: StoreULONG, public
+//
+// Synopsis: Stores word in byte-aligned memory
+//
+// Arguments: [pb] -- Buffer
+// [w] -- Word
+//
+// Returns: Number of bytes to increment [pb].
+//
+// History: 14-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+inline int StoreULONG( unsigned char * pb, unsigned long w )
+{
+ *((UNALIGNED unsigned long *)pb) = w;
+
+ return( sizeof( unsigned long ) );
+}
+
+inline int StoreUINT( unsigned char * pb, unsigned int w )
+{
+ *((UNALIGNED unsigned int *)pb) = w;
+
+ return( sizeof( int ) );
+}
+
+//+-------------------------------------------------------------------------
+//
+// Function: LoadWCHAR, public
+//
+// Synopsis: Loads half word from byte-aligned memory
+//
+// Arguments: [pb] -- Buffer
+// [hw] -- Half-word
+//
+// Returns: Number of bytes to increment [pb].
+//
+// History: 14-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+inline int LoadUSHORT( unsigned char const * const pb, unsigned short & hw )
+{
+ hw = *((UNALIGNED unsigned short const *)pb);
+
+ return( sizeof( unsigned short ) );
+}
+
+inline int LoadWCHAR( unsigned char const * const pb, unsigned short & hw )
+{
+ return( LoadUSHORT( pb, hw ) );
+}
+
+//+-------------------------------------------------------------------------
+//
+// Function: LoadULONG, public
+//
+// Synopsis: Loads word from byte-aligned memory
+//
+// Arguments: [pb] -- Buffer
+// [w] -- Word
+//
+// Returns: Number of bytes to increment [pb].
+//
+// History: 14-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+inline int LoadULONG( unsigned char const * const pb, unsigned long & w )
+{
+ w = *((UNALIGNED unsigned long const *)pb);
+
+ return( sizeof( unsigned long ) );
+}
+
+inline int LoadUINT( unsigned char const * const pb, unsigned int & w )
+{
+ w = *((UNALIGNED unsigned int const *)pb);
+
+ return( sizeof( int ) );
+}
+
+#endif // __ALIGN_HXX__
+
diff --git a/public/sdk/inc/allerror.h b/public/sdk/inc/allerror.h
new file mode 100644
index 000000000..d72f73a18
--- /dev/null
+++ b/public/sdk/inc/allerror.h
@@ -0,0 +1,1640 @@
+#ifndef _ALLERROR_H_
+#define _ALLERROR_H_
+#ifndef FACILITY_WINDOWS
+//
+// 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_WINDOWS 0x8
+#define FACILITY_ITF 0x4
+
+
+//
+// Define the severity codes
+//
+#define STATUS_SEVERITY_SUCCESS 0x0
+#define STATUS_SEVERITY_COFAIL 0x3
+#define STATUS_SEVERITY_COERROR 0x2
+
+
+//
+// MessageId: NOT_AN_ERROR
+//
+// MessageText:
+//
+// NOTE: This dummy error message is necessary to force MC to output
+// the above defines inside the FACILITY_WINDOWS guard instead
+// of leaving it empty.
+//
+#define NOT_AN_ERROR ((HRESULT)0x00080000L)
+
+#endif // FACILITY_WINDOWS
+#ifndef _OLEDBERR_H_
+#define _OLEDBERR_H_
+#ifndef FACILITY_WINDOWS
+//
+// MessageId: DB_E_BADACCESSORHANDLE
+//
+// MessageText:
+//
+// Dummy error - need this error so that mc puts the above defines
+// inside the FACILITY_WINDOWS guard, instead of leaving it empty
+//
+#define DB_E_BADACCESSORHANDLE ((HRESULT)0x80040EFFL)
+
+#endif // FACILITY_WINDOWS
+//
+// Codes 0x0e00-0x0eff are reserved for the OLE DB group of
+// interfaces.
+//
+// 0x0e31 is free...
+//
+//
+// MessageId: DB_E_BADACCESSORHANDLE
+//
+// MessageText:
+//
+// Invalid accessor
+//
+#define DB_E_BADACCESSORHANDLE ((HRESULT)0x80040E00L)
+
+//
+// MessageId: DB_E_ROWLIMITEXCEEDED
+//
+// MessageText:
+//
+// Creating another row would have exceeded the total number of active
+// rows supported by the rowset
+//
+#define DB_E_ROWLIMITEXCEEDED ((HRESULT)0x80040E01L)
+
+//
+// MessageId: DB_E_READONLYACCESSOR
+//
+// MessageText:
+//
+// Unable to write with a read-only accessor
+//
+#define DB_E_READONLYACCESSOR ((HRESULT)0x80040E02L)
+
+//
+// MessageId: DB_E_SCHEMAVIOLATION
+//
+// MessageText:
+//
+// Given values violate the database schema
+//
+#define DB_E_SCHEMAVIOLATION ((HRESULT)0x80040E03L)
+
+//
+// MessageId: DB_E_BADROWHANDLE
+//
+// MessageText:
+//
+// Invalid row handle
+//
+#define DB_E_BADROWHANDLE ((HRESULT)0x80040E04L)
+
+//
+// MessageId: DB_E_OBJECTOPEN
+//
+// MessageText:
+//
+// Accessor specified a column loaded with LoadObject that has not been
+// unloaded
+//
+#define DB_E_OBJECTOPEN ((HRESULT)0x80040E05L)
+
+//
+// MessageId: DB_E_BADCHAPTER
+//
+// MessageText:
+//
+// Invalid chapter
+//
+#define DB_E_BADCHAPTER ((HRESULT)0x80040E06L)
+
+//
+// MessageId: DB_E_INTERFACECONFLICT
+//
+// MessageText:
+//
+// The specified interface conflicts with an existing interface goal
+//
+#define DB_E_INTERFACECONFLICT ((HRESULT)0x80040E07L)
+
+//
+// MessageId: DB_E_BADBINDINFO
+//
+// MessageText:
+//
+// Invalid binding info
+//
+#define DB_E_BADBINDINFO ((HRESULT)0x80040E08L)
+
+//
+// MessageId: DB_E_ACCESSVIOLATION
+//
+// MessageText:
+//
+// Access violation
+//
+#define DB_E_ACCESSVIOLATION ((HRESULT)0x80040E09L)
+
+//
+// MessageId: DB_E_NOTAREFERENCECOLUMN
+//
+// MessageText:
+//
+// Specified column does not contain bookmarks or chapters
+//
+#define DB_E_NOTAREFERENCECOLUMN ((HRESULT)0x80040E0AL)
+
+//
+// MessageId: DB_E_ROWSETOPEN
+//
+// MessageText:
+//
+// A rowset was open on the query
+//
+#define DB_E_ROWSETOPEN ((HRESULT)0x80040E0CL)
+
+//
+// MessageId: DB_E_COSTLIMIT
+//
+// MessageText:
+//
+// Unable to find a query plan within the given cost limit
+//
+#define DB_E_COSTLIMIT ((HRESULT)0x80040E0DL)
+
+//
+// MessageId: DB_E_BADBOOKMARK
+//
+// MessageText:
+//
+// Invalid bookmark
+//
+#define DB_E_BADBOOKMARK ((HRESULT)0x80040E0EL)
+
+//
+// MessageId: DB_E_BADLOCKMODE
+//
+// MessageText:
+//
+// Invalid lock mode
+//
+#define DB_E_BADLOCKMODE ((HRESULT)0x80040E0FL)
+
+//
+// MessageId: DB_E_PARAMNOTOPTIONAL
+//
+// MessageText:
+//
+// No value given for one or more required parameters
+//
+#define DB_E_PARAMNOTOPTIONAL ((HRESULT)0x80040E10L)
+
+//
+// MessageId: DB_E_COLUMNUNAVAILABLE
+//
+// MessageText:
+//
+// Invalid column ID
+//
+#define DB_E_COLUMNUNAVAILABLE ((HRESULT)0x80040E11L)
+
+//
+// MessageId: DB_E_BADRATIO
+//
+// MessageText:
+//
+// Invalid ratio
+//
+#define DB_E_BADRATIO ((HRESULT)0x80040E12L)
+
+//
+// MessageId: DB_E_BADVALUES
+//
+// MessageText:
+//
+// Invalid value
+//
+#define DB_E_BADVALUES ((HRESULT)0x80040E13L)
+
+//
+// MessageId: DB_E_ERRORSINTREE
+//
+// MessageText:
+//
+// Query tree contained one or more errors
+//
+#define DB_E_ERRORSINTREE ((HRESULT)0x80040E14L)
+
+//
+// MessageId: DB_E_BADPARAMETER
+//
+// MessageText:
+//
+// Invalid parameter
+//
+#define DB_E_BADPARAMETER ((HRESULT)0x80040E15L)
+
+//
+// MessageId: DB_E_BADPARAMETERCOUNT
+//
+// MessageText:
+//
+// More values than parameters
+//
+#define DB_E_BADPARAMETERCOUNT ((HRESULT)0x80040E16L)
+
+//
+// MessageId: DB_E_BADVARTYPE
+//
+// MessageText:
+//
+// Value is not a VARIANT
+//
+#define DB_E_BADVARTYPE ((HRESULT)0x80040E17L)
+
+//
+// MessageId: DB_E_DUPLICATEPARAM
+//
+// MessageText:
+//
+// More than one value was supplied for a given parameter
+//
+#define DB_E_DUPLICATEPARAM ((HRESULT)0x80040E18L)
+
+//
+// MessageId: DB_E_OVERFLOW
+//
+// MessageText:
+//
+// Parameter value outside valid domain for that parameter
+//
+#define DB_E_OVERFLOW ((HRESULT)0x80040E19L)
+
+//
+// MessageId: DB_E_PARAMNOTFOUND
+//
+// MessageText:
+//
+// Parameter ID was not matched
+//
+#define DB_E_PARAMNOTFOUND ((HRESULT)0x80040E1AL)
+
+//
+// MessageId: DB_E_TYPEMISMATCH
+//
+// MessageText:
+//
+// Value was not of a type that could be coerced to the parameter
+//
+#define DB_E_TYPEMISMATCH ((HRESULT)0x80040E1BL)
+
+//
+// MessageId: DB_E_GOALREJECTED
+//
+// MessageText:
+//
+// No nonzero weights specified for any goals supported, so goal was
+// rejected; current goal was not changed
+//
+#define DB_E_GOALREJECTED ((HRESULT)0x80040E1CL)
+
+//
+// MessageId: DB_E_CANTCOERCE
+//
+// MessageText:
+//
+// Requested coercion is not legal
+//
+#define DB_E_CANTCOERCE ((HRESULT)0x80040E1DL)
+
+//
+// MessageId: DB_E_NOTUPDATED
+//
+// MessageText:
+//
+// Chapter contained changed rows which are not yet updated
+//
+#define DB_E_NOTUPDATED ((HRESULT)0x80040E1EL)
+
+//
+// MessageId: DB_E_NOQUERY
+//
+// MessageText:
+//
+// Information was requested for a query, and the query was not set
+//
+#define DB_E_NOQUERY ((HRESULT)0x80040E1FL)
+
+//
+// MessageId: DB_E_NOTREENTRANT
+//
+// MessageText:
+//
+// Provider called a method from IRowsetNotify in the consumer and the
+// method has not yet returned
+//
+#define DB_E_NOTREENTRANT ((HRESULT)0x80040E20L)
+
+//
+// MessageId: DB_E_BADROWSET
+//
+// MessageText:
+//
+// A non-existant rowset was specified
+//
+#define DB_E_BADROWSET ((HRESULT)0x80040E21L)
+
+//
+// MessageId: DB_E_NOAGGREGATION
+//
+// MessageText:
+//
+// A non-NULL controlling IUnknown was specified and the object being
+// created does not support aggregation
+//
+#define DB_E_NOAGGREGATION ((HRESULT)0x80040E22L)
+
+//
+// MessageId: DB_E_DELETEDROW
+//
+// MessageText:
+//
+// A given HROW referred to a hard- or soft-deleted row
+//
+#define DB_E_DELETEDROW ((HRESULT)0x80040E23L)
+
+//
+// MessageId: DB_E_CANTFETCHBACKWARDS
+//
+// MessageText:
+//
+// The rowset does not support fetching backwards
+//
+#define DB_E_CANTFETCHBACKWARDS ((HRESULT)0x80040E24L)
+
+//
+// MessageId: DB_E_ROWSNOTRELEASED
+//
+// MessageText:
+//
+// All HROWs must be released before new ones can be obtained
+//
+#define DB_E_ROWSNOTRELEASED ((HRESULT)0x80040E25L)
+
+//
+// MessageId: DB_E_INVALID
+//
+// MessageText:
+//
+// The rowset was not chaptered
+//
+#define DB_E_INVALID ((HRESULT)0x80040E26L)
+
+//
+// MessageId: DB_E_CANTCREATEACCESSOR
+//
+// MessageText:
+//
+// An accessor has already been created and the
+// DBROWSETFLAGS_MULTIPLEACCESSOR flag was not set
+//
+#define DB_E_CANTCREATEACCESSOR ((HRESULT)0x80040E27L)
+
+//
+// MessageId: DB_E_NEEDDATA
+//
+// MessageText:
+//
+// DBINIT_NOPROMPT was specified and the provider cannot be initialized
+// without prompting for information
+//
+#define DB_E_NEEDDATA ((HRESULT)0x80040E28L)
+
+//
+// MessageId: DB_E_CANTSCROLLBACKWARDS
+//
+// MessageText:
+//
+// The rowset cannot scroll backwards
+//
+#define DB_E_CANTSCROLLBACKWARDS ((HRESULT)0x80040E29L)
+
+//
+// MessageId: DB_E_BADREGIONHANDLE
+//
+// MessageText:
+//
+// Invalid region handle
+//
+#define DB_E_BADREGIONHANDLE ((HRESULT)0x80040E2AL)
+
+//
+// MessageId: DB_E_NONCONTIGUOUSRANGE
+//
+// MessageText:
+//
+// The specified set of rows was not contiguous to or overlapping the
+// rows in the specified watch region
+//
+#define DB_E_NONCONTIGUOUSRANGE ((HRESULT)0x80040E2BL)
+
+//
+// MessageId: DB_E_INVALIDTRANSITION
+//
+// MessageText:
+//
+// A transition from ALL* to MOVE* or EXTEND* was specified
+//
+#define DB_E_INVALIDTRANSITION ((HRESULT)0x80040E2CL)
+
+//
+// MessageId: DB_E_NOTASUBREGION
+//
+// MessageText:
+//
+// The specified region is not a proper subregion of the region
+// identified by the given watch region handle
+//
+#define DB_E_NOTASUBREGION ((HRESULT)0x80040E2DL)
+
+//
+// MessageId: DB_E_NOCOMMAND
+//
+// MessageText:
+//
+// No command has been specified for the command object
+//
+#define DB_E_NOCOMMAND ((HRESULT)0x80040E2EL)
+
+//
+// MessageId: DB_E_INTEGRITYVIOLATION
+//
+// MessageText:
+//
+// A specified value violated the integrity constraints for a column or
+// table
+//
+#define DB_E_INTEGRITYVIOLATION ((HRESULT)0x80040E2FL)
+
+//
+// MessageId: DB_E_PROPERTIESNOTAVAILABLE
+//
+// MessageText:
+//
+// Some of the requiried properties could not be met
+//
+#define DB_E_PROPERTIESNOTAVAILABLE ((HRESULT)0x80040E30L)
+
+//
+// MessageId: DB_E_ABORTLIMITREACHED
+//
+// MessageText:
+//
+// Execution aborted because a resource limit has been reached; no
+// results have been returned
+//
+#define DB_E_ABORTLIMITREACHED ((HRESULT)0x80040E31L)
+
+//
+// MessageId: DB_E_ROWSETINCOMMAND
+//
+// MessageText:
+//
+// Cannot clone a command object whose command tree contains a rowset
+// or rowsets
+//
+#define DB_E_ROWSETINCOMMAND ((HRESULT)0x80040E32L)
+
+//
+// MessageId: DB_E_CANTTRANSLATE
+//
+// MessageText:
+//
+// Cannot represent the current tree as text
+//
+#define DB_E_CANTTRANSLATE ((HRESULT)0x80040E33L)
+
+//
+// MessageId: DB_E_DUPLICATEINDEXID
+//
+// MessageText:
+//
+// The specified index already exists
+//
+#define DB_E_DUPLICATEINDEXID ((HRESULT)0x80040E34L)
+
+//
+// MessageId: DB_E_NOINDEX
+//
+// MessageText:
+//
+// The specified index does not exist
+//
+#define DB_E_NOINDEX ((HRESULT)0x80040E35L)
+
+//
+// MessageId: DB_E_INDEXINUSE
+//
+// MessageText:
+//
+// The specified index was in use
+//
+#define DB_E_INDEXINUSE ((HRESULT)0x80040E36L)
+
+//
+// MessageId: DB_E_NOTABLE
+//
+// MessageText:
+//
+// The specified table does not exist
+//
+#define DB_E_NOTABLE ((HRESULT)0x80040E37L)
+
+//
+// MessageId: DB_E_CONCURRENCYVIOLATION
+//
+// MessageText:
+//
+// The rowset was using optimistic concurrency and the value of a
+// column has been changed since it was last read
+//
+#define DB_E_CONCURRENCYVIOLATION ((HRESULT)0x80040E38L)
+
+//
+// MessageId: DB_E_BADCOPY
+//
+// MessageText:
+//
+// Errors were detected during the copy
+//
+#define DB_E_BADCOPY ((HRESULT)0x80040E39L)
+
+//
+// MessageId: DB_E_BADPRECISION
+//
+// MessageText:
+//
+// A specified precision was invalid
+//
+#define DB_E_BADPRECISION ((HRESULT)0x80040E3AL)
+
+//
+// MessageId: DB_E_BADSCALE
+//
+// MessageText:
+//
+// A specified scale was invalid
+//
+#define DB_E_BADSCALE ((HRESULT)0x80040E3BL)
+
+//
+// MessageId: DB_E_BADID
+//
+// MessageText:
+//
+// Invalid table ID
+//
+#define DB_E_BADID ((HRESULT)0x80040E3CL)
+
+//
+// MessageId: DB_E_BADTYPE
+//
+// MessageText:
+//
+// A specified type was invalid
+//
+#define DB_E_BADTYPE ((HRESULT)0x80040E3DL)
+
+//
+// MessageId: DB_E_DUPLICATECOLUMNID
+//
+// MessageText:
+//
+// A column ID was occurred more than once in the specification
+//
+#define DB_E_DUPLICATECOLUMNID ((HRESULT)0x80040E3EL)
+
+//
+// MessageId: DB_E_DUPLICATETABLEID
+//
+// MessageText:
+//
+// The specified table already exists
+//
+#define DB_E_DUPLICATETABLEID ((HRESULT)0x80040E3FL)
+
+//
+// MessageId: DB_E_TABLEINUSE
+//
+// MessageText:
+//
+// The specified table was in use
+//
+#define DB_E_TABLEINUSE ((HRESULT)0x80040E40L)
+
+//
+// MessageId: DB_E_NOLOCALE
+//
+// MessageText:
+//
+// The specified locale ID was not supported
+//
+#define DB_E_NOLOCALE ((HRESULT)0x80040E41L)
+
+//
+// MessageId: DB_E_BADRECORDNUM
+//
+// MessageText:
+//
+// The specified record number is invalid
+//
+#define DB_E_BADRECORDNUM ((HRESULT)0x80040E42L)
+
+//
+// MessageId: DB_E_BOOKMARKSKIPPED
+//
+// MessageText:
+//
+// Skipped bookmark for deleted or non-member row
+//
+#define DB_E_BOOKMARKSKIPPED ((HRESULT)0x80040EC3L)
+
+//
+// MessageId: DB_S_ROWLIMITEXCEEDED
+//
+// MessageText:
+//
+// Fetching requested number of rows would have exceeded total number of
+// active rows supported by the rowset
+//
+#define DB_S_ROWLIMITEXCEEDED ((HRESULT)0x00040EC0L)
+
+//
+// MessageId: DB_S_ROWNOTFOUND
+//
+// MessageText:
+//
+// Unable to find row for given bookmark
+//
+#define DB_S_ROWNOTFOUND ((HRESULT)0x00040EC1L)
+
+//
+// MessageId: DB_S_ENDOFRESULTSET
+//
+// MessageText:
+//
+// Reached start or end of result set
+//
+#define DB_S_ENDOFRESULTSET ((HRESULT)0x00040EC2L)
+
+//
+// MessageId: DB_S_BOOKMARKSKIPPED
+//
+// MessageText:
+//
+// Skipped bookmark for deleted or non-member row
+//
+#define DB_S_BOOKMARKSKIPPED ((HRESULT)0x00040EC3L)
+
+//
+// MessageId: DB_S_ERRORSINTREE
+//
+// MessageText:
+//
+// Errors found in validating tree
+//
+#define DB_S_ERRORSINTREE ((HRESULT)0x00040EC4L)
+
+//
+// MessageId: DB_S_NONEXTROWSET
+//
+// MessageText:
+//
+// There are no more rowsets
+//
+#define DB_S_NONEXTROWSET ((HRESULT)0x00040EC5L)
+
+//
+// MessageId: DB_S_ENDOFROWSET
+//
+// MessageText:
+//
+// Reached start or end of rowset or chapter
+//
+#define DB_S_ENDOFROWSET ((HRESULT)0x00040EC6L)
+
+//BUGBUG - DB_S_BLOCKLIMITEDROWS is not officially sanctioned.
+//
+// MessageId: DB_S_BLOCKLIMITEDROWS
+//
+// MessageText:
+//
+// Execution aborted because a resource limit has been reached; no
+// results have been returned
+//
+#define DB_S_BLOCKLIMITEDROWS ((HRESULT)0x00040EC7L)
+
+//
+// MessageId: DB_S_BUFFERFULL
+//
+// MessageText:
+//
+// Variable data buffer full
+//
+#define DB_S_BUFFERFULL ((HRESULT)0x00040EC8L)
+
+//
+// MessageId: DB_S_CANTCOERCE
+//
+// MessageText:
+//
+// Couldn't perform specified type coercion
+//
+#define DB_S_CANTCOERCE ((HRESULT)0x00040EC9L)
+
+//
+// MessageId: DB_S_CANTRELEASE
+//
+// MessageText:
+//
+// Server cannot release or downgrade a lock until the end of the
+// transaction
+//
+#define DB_S_CANTRELEASE ((HRESULT)0x00040ECAL)
+
+//
+// MessageId: DB_S_GOALCHANGED
+//
+// MessageText:
+//
+// Specified weight was not supported or exceeded the supported limit
+// and was set to 0 or the supported limit
+//
+#define DB_S_GOALCHANGED ((HRESULT)0x00040ECBL)
+
+//
+// MessageId: DB_S_DIALECTIGNORED
+//
+// MessageText:
+//
+// Input dialect was ignored and text was returned in different
+// dialect
+//
+#define DB_S_DIALECTIGNORED ((HRESULT)0x00040ECDL)
+
+//
+// MessageId: DB_S_UNWANTEDPHASE
+//
+// MessageText:
+//
+// Consumer is uninterested in receiving further notification calls for
+// this phase
+//
+#define DB_S_UNWANTEDPHASE ((HRESULT)0x00040ECEL)
+
+//
+// MessageId: DB_S_UNWANTEDEVENT
+//
+// MessageText:
+//
+// Consumer is uninterested in receiving further notification calls to
+// this method
+//
+#define DB_S_UNWANTEDEVENT ((HRESULT)0x00040ECFL)
+
+//
+// MessageId: DB_S_COLUMNUNAVAILABLE
+//
+// MessageText:
+//
+// Invalid column ID
+//
+#define DB_S_COLUMNUNAVAILABLE ((HRESULT)0x00040ED0L)
+
+//
+// MessageId: DB_S_COLUMNSCHANGED
+//
+// MessageText:
+//
+// In order to reposition to the start of the rowset, the provider had
+// to reexecute the query; either the order of the columns changed or
+// columns were added to or removed from the rowset
+//
+#define DB_S_COLUMNSCHANGED ((HRESULT)0x00040ED1L)
+
+//
+// MessageId: DB_S_ERRORSRETURNED
+//
+// MessageText:
+//
+// The method had some errors; errors have been returned in the error
+// array
+//
+#define DB_S_ERRORSRETURNED ((HRESULT)0x00040ED2L)
+
+//
+// MessageId: DB_S_BADROWHANDLE
+//
+// MessageText:
+//
+// Invalid row handle
+//
+#define DB_S_BADROWHANDLE ((HRESULT)0x00040ED3L)
+
+//
+// MessageId: DB_S_DELETEDROW
+//
+// MessageText:
+//
+// A given HROW referred to a hard-deleted row
+//
+#define DB_S_DELETEDROW ((HRESULT)0x00040ED4L)
+
+//
+// MessageId: DB_S_TOOMANYCHANGES
+//
+// MessageText:
+//
+// The provider was unable to keep track of all the changes; the client
+// must refetch the data associated with the watch region using another
+// method
+//
+#define DB_S_TOOMANYCHANGES ((HRESULT)0x00040ED5L)
+
+//
+// MessageId: DB_S_STOPLIMITREACHED
+//
+// MessageText:
+//
+// Execution stopped because a resource limit has been reached; results
+// obtained so far have been returned but execution cannot be resumed
+//
+#define DB_S_STOPLIMITREACHED ((HRESULT)0x00040ED6L)
+
+//
+// MessageId: DB_S_SUSPENDLIMITREACHED
+//
+// MessageText:
+//
+// Execution suspended because a resource limit has been reached;
+// results obtained so far have been returned and execution can be
+// resumed later
+//
+#define DB_S_SUSPENDLIMITREACHED ((HRESULT)0x00040ED7L)
+
+//
+// MessageId: DB_S_LOCKUPGRADED
+//
+// MessageText:
+//
+// A lock was upgraded from the value specified
+//
+#define DB_S_LOCKUPGRADED ((HRESULT)0x00040ED8L)
+
+//
+// MessageId: DB_S_PROPERTIESCHANGED
+//
+// MessageText:
+//
+// One or more properties were changed as allowed by provider
+//
+#define DB_S_PROPERTIESCHANGED ((HRESULT)0x00040ED9L)
+
+//
+// MessageId: DB_S_ERRORSOCCURRED
+//
+// MessageText:
+//
+// Some errors occurred
+//
+#define DB_S_ERRORSOCCURRED ((HRESULT)0x00040EDAL)
+
+//
+// MessageId: DB_S_PARAMUNAVAILABLE
+//
+// MessageText:
+//
+// A specified parameter was invalid
+//
+#define DB_S_PARAMUNAVAILABLE ((HRESULT)0x00040EDBL)
+
+//
+// MessageId: DB_S_CANCELED
+//
+// MessageText:
+//
+// The change was canceled during notification; no columns are changed
+//
+#define DB_S_CANCELED ((HRESULT)0x00040EDCL)
+
+//
+// MessageId: DB_S_COLUMNTYPEMISMATCH
+//
+// MessageText:
+//
+// One or more column types are incompatible; conversion errors will
+// occur during copying
+//
+#define DB_S_COLUMNTYPEMISMATCH ((HRESULT)0x00040EDDL)
+
+#endif // _OLEDBERR_H_
+//
+// Codes 0x1600-0x16ff are reserved for QUERY / TABLE
+//
+//
+// MessageId: QUERY_E_FAILED
+//
+// MessageText:
+//
+// Call failed for unknown reason.
+//
+#define QUERY_E_FAILED ((HRESULT)0x80041600L)
+
+//
+// MessageId: QUERY_E_INVALIDQUERY
+//
+// MessageText:
+//
+// Invalid parameter.
+//
+#define QUERY_E_INVALIDQUERY ((HRESULT)0x80041601L)
+
+//
+// MessageId: QUERY_E_INVALIDRESTRICTION
+//
+// MessageText:
+//
+// The query restriction could not be parsed.
+//
+#define QUERY_E_INVALIDRESTRICTION ((HRESULT)0x80041602L)
+
+//
+// MessageId: QUERY_E_INVALIDSORT
+//
+// MessageText:
+//
+// An invalid sort order was requested.
+//
+#define QUERY_E_INVALIDSORT ((HRESULT)0x80041603L)
+
+//
+// MessageId: QUERY_E_INVALIDCATEGORIZE
+//
+// MessageText:
+//
+// An invalid categorization order was requested.
+//
+#define QUERY_E_INVALIDCATEGORIZE ((HRESULT)0x80041604L)
+
+//
+// MessageId: QUERY_E_ALLNOISE
+//
+// MessageText:
+//
+// The query contained only ignored words.
+//
+#define QUERY_E_ALLNOISE ((HRESULT)0x80041605L)
+
+//
+// MessageId: QUERY_E_TOOCOMPLEX
+//
+// MessageText:
+//
+// The query was too complex to be executed.
+//
+#define QUERY_E_TOOCOMPLEX ((HRESULT)0x80041606L)
+
+//
+// ITable error codes
+//
+//
+// MessageId: TBL_E_CALLFAILED
+//
+// MessageText:
+//
+// Call failed for unknown reason.
+//
+#define TBL_E_CALLFAILED ((HRESULT)0x80041620L)
+
+//
+// MessageId: TBL_E_UNKNOWNCOLS
+//
+// MessageText:
+//
+// Cannot find column(s) specified.
+//
+#define TBL_E_UNKNOWNCOLS ((HRESULT)0x80041621L)
+
+//
+// MessageId: TBL_E_UNABLETOCOMPLETE
+//
+// MessageText:
+//
+// Unable to complete request.
+//
+#define TBL_E_UNABLETOCOMPLETE ((HRESULT)0x80041622L)
+
+//
+// MessageId: TBL_E_INVALIDBOOKMARK
+//
+// MessageText:
+//
+// Specified bookmark does not reference any row in table.
+//
+#define TBL_E_INVALIDBOOKMARK ((HRESULT)0x80041623L)
+
+//
+// MessageId: TBL_W_ENDOFTABLE
+//
+// MessageText:
+//
+// End of table reached.
+//
+#define TBL_W_ENDOFTABLE ((HRESULT)0x00041624L)
+
+//
+// MessageId: TBL_W_POSITIONCHANGED
+//
+// MessageText:
+//
+// Position changed.
+//
+#define TBL_W_POSITIONCHANGED ((HRESULT)0x00041625L)
+
+//
+// Filter daemon error codes
+//
+//
+// MessageId: FDAEMON_W_WORDLISTFULL
+//
+// MessageText:
+//
+// Wordlist has reached maximum size. Additional documents should not be filtered.
+//
+#define FDAEMON_W_WORDLISTFULL ((HRESULT)0x00041680L)
+
+//
+// MessageId: FDAEMON_E_LOWRESOURCE
+//
+// MessageText:
+//
+// The system is running out of one of more resources needed for filtering, usually memory.
+//
+#define FDAEMON_E_LOWRESOURCE ((HRESULT)0x80041681L)
+
+//
+// MessageId: FDAEMON_E_FATALERROR
+//
+// MessageText:
+//
+// A critical error occurred during document filtering. Consult system administrator.
+//
+#define FDAEMON_E_FATALERROR ((HRESULT)0x80041682L)
+
+//
+// MessageId: FDAEMON_E_PARTITIONDELETED
+//
+// MessageText:
+//
+// Documents not stored in content index because partition has been deleted.
+//
+#define FDAEMON_E_PARTITIONDELETED ((HRESULT)0x80041683L)
+
+//
+// MessageId: FDAEMON_E_CHANGEUPDATEFAILED
+//
+// MessageText:
+//
+// Documents not stored in content index because update of changelist failed.
+//
+#define FDAEMON_E_CHANGEUPDATEFAILED ((HRESULT)0x80041684L)
+
+//
+// MessageId: FDAEMON_W_EMPTYWORDLIST
+//
+// MessageText:
+//
+// Final wordlist was empty.
+//
+#define FDAEMON_W_EMPTYWORDLIST ((HRESULT)0x00041685L)
+
+//
+// MessageId: FDAEMON_E_WORDLISTCOMMITFAILED
+//
+// MessageText:
+//
+// Commit of wordlist failed. Data not available for query.
+//
+#define FDAEMON_E_WORDLISTCOMMITFAILED ((HRESULT)0x80041686L)
+
+//
+// MessageId: FDAEMON_E_NOWORDLIST
+//
+// MessageText:
+//
+// No wordlist is being constructed. May happen after fatal filter error.
+//
+#define FDAEMON_E_NOWORDLIST ((HRESULT)0x80041687L)
+
+//
+// MessageId: FDAEMON_E_TOOMANYFILTEREDBLOCKS
+//
+// MessageText:
+//
+// During document filtering the limit on buffers has been exceeded.
+//
+#define FDAEMON_E_TOOMANYFILTEREDBLOCKS ((HRESULT)0x80041688L)
+
+//
+// ISearch error codes
+//
+//
+// MessageId: SEARCH_S_NOMOREHITS
+//
+// MessageText:
+//
+// End of hits has been reached.
+//
+#define SEARCH_S_NOMOREHITS ((HRESULT)0x000416A0L)
+
+//
+// MessageId: SEARCH_E_NOMONIKER
+//
+// MessageText:
+//
+// Retrival of hits as monikers is not supported (by filter passed into Init).
+//
+#define SEARCH_E_NOMONIKER ((HRESULT)0x800416A1L)
+
+//
+// MessageId: SEARCH_E_NOREGION
+//
+// MessageText:
+//
+// Retrival of hits as filter regions is not supported (by filter passed into Init).
+//
+#define SEARCH_E_NOREGION ((HRESULT)0x800416A2L)
+
+//
+// CI error codes
+//
+//
+// MessageId: FILTER_E_TOO_BIG
+//
+// MessageText:
+//
+// File is too large to filter.
+//
+#define FILTER_E_TOO_BIG ((HRESULT)0x80041730L)
+
+//
+// MessageId: FILTER_S_PARTIAL_CONTENTSCAN_IMMEDIATE
+//
+// MessageText:
+//
+// A partial content scan of the disk needs to be scheduled for immediate execution.
+//
+#define FILTER_S_PARTIAL_CONTENTSCAN_IMMEDIATE ((HRESULT)0x00041731L)
+
+//
+// MessageId: FILTER_S_FULL_CONTENTSCAN_IMMEDIATE
+//
+// MessageText:
+//
+// A full content scan of the disk needs to be scheduled for immediate execution.
+//
+#define FILTER_S_FULL_CONTENTSCAN_IMMEDIATE ((HRESULT)0x00041732L)
+
+//
+// MessageId: FILTER_S_CONTENTSCAN_DELAYED
+//
+// MessageText:
+//
+// A content scan of the disk needs to be scheduled for execution later.
+//
+#define FILTER_S_CONTENTSCAN_DELAYED ((HRESULT)0x00041733L)
+
+//
+// MessageId: FILTER_E_CONTENTINDEXCORRUPT
+//
+// MessageText:
+//
+// The content index is corrupt. A content scan will to be scheduled after chkdsk or autochk is run.
+//
+#define FILTER_E_CONTENTINDEXCORRUPT ((HRESULT)0xC0041734L)
+
+//
+// MessageId: CI_CORRUPT_DATABASE
+//
+// MessageText:
+//
+// The content index is corrupt.
+//
+#define CI_CORRUPT_DATABASE ((HRESULT)0xC0041735L)
+
+//
+// MessageId: CI_CORRUPT_CATALOG
+//
+// MessageText:
+//
+// The content index meta data is corrupt.
+//
+#define CI_CORRUPT_CATALOG ((HRESULT)0xC0041736L)
+
+//
+// MessageId: CI_INVALID_PARTITION
+//
+// MessageText:
+//
+// The content index partition is invalid.
+//
+#define CI_INVALID_PARTITION ((HRESULT)0xC0041737L)
+
+//
+// MessageId: CI_INVALID_PRIORITY
+//
+// MessageText:
+//
+// The priority is invalid.
+//
+#define CI_INVALID_PRIORITY ((HRESULT)0xC0041738L)
+
+//
+// MessageId: CI_NO_STARTING_KEY
+//
+// MessageText:
+//
+// There is no starting key.
+//
+#define CI_NO_STARTING_KEY ((HRESULT)0xC0041739L)
+
+//
+// MessageId: CI_OUT_OF_INDEX_IDS
+//
+// MessageText:
+//
+// The content index is out of index ids.
+//
+#define CI_OUT_OF_INDEX_IDS ((HRESULT)0xC004173AL)
+
+//
+// MessageId: CI_NO_CATALOG
+//
+// MessageText:
+//
+// There is no catalog.
+//
+#define CI_NO_CATALOG ((HRESULT)0xC004173BL)
+
+//
+// MessageId: CI_CORRUPT_FILTER_BUFFER
+//
+// MessageText:
+//
+// The filter buffer is corrupt.
+//
+#define CI_CORRUPT_FILTER_BUFFER ((HRESULT)0xC004173CL)
+
+//
+// MessageId: CI_INVALID_INDEX
+//
+// MessageText:
+//
+// The index is invalid.
+//
+#define CI_INVALID_INDEX ((HRESULT)0xC004173DL)
+
+//
+// MessageId: CI_PROPSTORE_INCONSISTENCY
+//
+// MessageText:
+//
+// Inconsistency in property store detected.
+//
+#define CI_PROPSTORE_INCONSISTENCY ((HRESULT)0xC004173EL)
+
+//
+// MessageId: FILTER_S_DISK_FULL
+//
+// MessageText:
+//
+// The disk is getting full.
+//
+#define FILTER_S_DISK_FULL ((HRESULT)0x0004173FL)
+
+//
+// Word breaker error codes
+//
+//
+// MessageId: WBREAK_E_END_OF_TEXT
+//
+// MessageText:
+//
+// End of text reached in text source.
+//
+#define WBREAK_E_END_OF_TEXT ((HRESULT)0x80041780L)
+
+//
+// MessageId: LANGUAGE_S_LARGE_WORD
+//
+// MessageText:
+//
+// Word larger than maximum length. May be truncated by word sink.
+//
+#define LANGUAGE_S_LARGE_WORD ((HRESULT)0x00041781L)
+
+//
+// MessageId: WBREAK_E_QUERY_ONLY
+//
+// MessageText:
+//
+// Feature only available in query mode.
+//
+#define WBREAK_E_QUERY_ONLY ((HRESULT)0x80041782L)
+
+//
+// MessageId: WBREAK_E_BUFFER_TOO_SMALL
+//
+// MessageText:
+//
+// Buffer too small to hold composed phrase.
+//
+#define WBREAK_E_BUFFER_TOO_SMALL ((HRESULT)0x80041783L)
+
+//
+// MessageId: LANGUAGE_E_DATABASE_NOT_FOUND
+//
+// MessageText:
+//
+// Langauge database/cache file could not be found.
+//
+#define LANGUAGE_E_DATABASE_NOT_FOUND ((HRESULT)0x80041784L)
+
+//
+// MessageId: WBREAK_E_INIT_FAILED
+//
+// MessageText:
+//
+// Initialization of word breaker failed.
+//
+#define WBREAK_E_INIT_FAILED ((HRESULT)0x80041785L)
+
+//
+// MessageId: PSINK_E_QUERY_ONLY
+//
+// MessageText:
+//
+// Feature only available in query mode.
+//
+#define PSINK_E_QUERY_ONLY ((HRESULT)0x80041790L)
+
+//
+// MessageId: PSINK_E_INDEX_ONLY
+//
+// MessageText:
+//
+// Feature only available in index mode.
+//
+#define PSINK_E_INDEX_ONLY ((HRESULT)0x80041791L)
+
+//
+// MessageId: PSINK_E_LARGE_ATTACHMENT
+//
+// MessageText:
+//
+// Attachment type beyond valid range.
+//
+#define PSINK_E_LARGE_ATTACHMENT ((HRESULT)0x80041792L)
+
+//
+// MessageId: PSINK_S_LARGE_WORD
+//
+// MessageText:
+//
+// Word larger than maximum length. May be truncated by phrase sink.
+//
+#define PSINK_S_LARGE_WORD ((HRESULT)0x00041793L)
+
+// Error codes for IReconcileInitiator, IReconcilableObject, IDifferencing.
+// Definitions taken from \\ole\slm\src\concord\spec\revcons2.doc.
+//
+// MessageId: REC_E_NOVERSION
+//
+// MessageText:
+//
+// The requested version is unavailable.
+//
+#define REC_E_NOVERSION ((HRESULT)0x80041000L)
+
+//
+// MessageId: REC_E_NOTCOMPLETE
+//
+// MessageText:
+//
+// The reconciliation is only partially complete.
+//
+#define REC_E_NOTCOMPLETE ((HRESULT)0x00041001L)
+
+//
+// MessageId: REC_E_ABORTED
+//
+// MessageText:
+//
+// Reconciliation aborted via abort callback.
+//
+#define REC_E_ABORTED ((HRESULT)0x80041002L)
+
+//
+// MessageId: REC_E_NOCALLBACK
+//
+// MessageText:
+//
+// No callback from the recocniler.
+//
+#define REC_E_NOCALLBACK ((HRESULT)0x80041003L)
+
+//
+// MessageId: REC_E_NORESIDUES
+//
+// MessageText:
+//
+// The implementation does not support generation of residues.
+//
+#define REC_E_NORESIDUES ((HRESULT)0x80041004L)
+
+//
+// MessageId: REC_E_WRONGOBJECT
+//
+// MessageText:
+//
+// Callee is not the same version as that which created the difference.
+//
+#define REC_E_WRONGOBJECT ((HRESULT)0x80041005L)
+
+//
+// MessageId: REC_E_TOODIFFERENT
+//
+// MessageText:
+//
+// The document versions are too dissimilar to reconcile.
+//
+#define REC_E_TOODIFFERENT ((HRESULT)0x80041006L)
+
+// Following so reconcile initiators can implement propagation dampening.
+//
+// MessageId: REC_S_OBJECTSIDENTICAL
+//
+// MessageText:
+//
+// The objects are identical - i.e. further reconciliation would not result in any changes to either object.
+//
+#define REC_S_OBJECTSIDENTICAL ((HRESULT)0x80041007L)
+
+// Following not defined in revcons2.doc, but defined by Chicago briefcase.
+// BUGBUG - MessageId/Facility are most likely incorrect.
+//
+// MessageId: REC_E_INEEDTODOTHEUPDATES
+//
+// MessageText:
+//
+// The destination needs to be changed
+//
+#define REC_E_INEEDTODOTHEUPDATES ((HRESULT)0x80041008L)
+
+//
+// MessageId: REC_S_IDIDTHEUPDATES
+//
+// MessageText:
+//
+// The destination needs to be changed
+//
+#define REC_S_IDIDTHEUPDATES ((HRESULT)0x00041009L)
+
+//
+// MessageId: REC_S_NOTCOMPLETEBUTPROPAGATE
+//
+// MessageText:
+//
+// The destination needs to be changed
+//
+#define REC_S_NOTCOMPLETEBUTPROPAGATE ((HRESULT)0x0004100AL)
+
+//
+// Codes 0x1000-0x10ff are reserved for the SYSMGMT component controls
+// interfaces.
+//
+//
+// MessageId: CTRL_E_NO_RESOURCE
+//
+// MessageText:
+//
+// A control failure has occured because a system resource could not be obtained
+//
+#define CTRL_E_NO_RESOURCE ((HRESULT)0x80081000L)
+
+//
+// Codes 0x0e00-0x0f9f are reserved for the SYSMGMT control panel
+// interfaces.
+//
+// The following ranges are to prevent slm merge collisions during the initial
+// error code checkins. These ranges will be revised when we have a better
+// idea of the actual number of error codes for each component.
+//
+// MessageId: CPANEL_E_NOTTARGETED
+//
+// MessageText:
+//
+// This control panel does not target the required type of profile.
+//
+#define CPANEL_E_NOTTARGETED ((HRESULT)0x80080E00L)
+
+//
+// MessageId: CPANEL_E_DROPDATAREAD
+//
+// MessageText:
+//
+// The profile data dropped on a control panel cannot be read. The data
+// is either corrupt or was not read back properly by a controller that wrote
+// part of the data.
+//
+#define CPANEL_E_DROPDATAREAD ((HRESULT)0x80080E01L)
+
+//
+// MessageId: CPANEL_E_LOCALONLY
+//
+// MessageText:
+//
+// A controller that can only operate on the local machine was asked to operate
+// on a remote machine.
+//
+#define CPANEL_E_LOCALONLY ((HRESULT)0x80080E02L)
+
+//
+// Codes 0x1200-0x14ff are reserved for the SYSMGMT project in general
+// interfaces.
+//
+// INSTRUM error codes below here (Starts at 0x1200)
+// INSTRUM error codes above here
+// SWM error codes below here (Starts at 0x1300)
+//
+// MessageId: SWM_E_INVALIDPDF
+//
+// MessageText:
+//
+// The file is not a valid PDF.
+//
+#define SWM_E_INVALIDPDF ((HRESULT)0x80081300L)
+
+//
+// MessageId: SWM_E_INVALIDPDFVERSION
+//
+// MessageText:
+//
+// Software Management does not support this version of the PDF.
+//
+#define SWM_E_INVALIDPDFVERSION ((HRESULT)0x80081301L)
+
+//
+// MessageId: SWM_E_INTERNALERROR
+//
+// MessageText:
+//
+// An internal error has occurred in Software Management.
+//
+#define SWM_E_INTERNALERROR ((HRESULT)0x80081302L)
+
+// SWM error codes above here
+// USER error codes below here (Starts at 0x1400)
+// USER error codes above here
+#endif // _ALLERROR_H_
diff --git a/public/sdk/inc/alphalgn.tab b/public/sdk/inc/alphalgn.tab
new file mode 100644
index 000000000..7fb36d043
--- /dev/null
+++ b/public/sdk/inc/alphalgn.tab
@@ -0,0 +1,13 @@
+bit 8 32
+word 4 4
+char 1 1
+short 2 2
+int 4 4 2147483647
+long 4 4
+float 4 4
+double 8 4
+bptr 4 4
+wptr 4 4
+struct 1 1
+struct2 1 1
+ \ No newline at end of file
diff --git a/public/sdk/inc/alphaops.h b/public/sdk/inc/alphaops.h
new file mode 100644
index 000000000..86fb6fd2b
--- /dev/null
+++ b/public/sdk/inc/alphaops.h
@@ -0,0 +1,1237 @@
+/*++
+
+Copyright (c) 1992-1996 Digital Equipment Corporation
+
+Module Name:
+
+ alphaops.h
+
+Abstract:
+
+ Alpha AXP instruction and floating constant definitions.
+
+Author:
+
+Revision History:
+
+--*/
+
+#ifndef _ALPHAOPS_
+#define _ALPHAOPS_
+
+//
+// Instruction types.
+// The Alpha architecture does not number the instruction types,
+// this numbering is for software decoding only.
+//
+
+#define ALPHA_UNKNOWN 0 // Reserved or illegal
+#define ALPHA_MEMORY 1 // Memory (load/store)
+#define ALPHA_FP_MEMORY 2 // Floating point Memory
+#define ALPHA_MEMSPC 3 // Memory special
+#define ALPHA_JUMP 4 // Jump (memory formation)
+#define ALPHA_BRANCH 5 // Branch
+#define ALPHA_FP_BRANCH 6 // Floating Point Branch
+#define ALPHA_OPERATE 7 // Register-register operate
+#define ALPHA_LITERAL 8 // Literal-register operate
+#define ALPHA_FP_OPERATE 9 // Floating point operate
+#define ALPHA_FP_CONVERT 10 // Floating point convert
+#define ALPHA_CALLPAL 11 // Call to PAL
+#define ALPHA_EV4_PR 12 // EV4 MTPR/MFPR PAL mode instructions
+#define ALPHA_EV4_MEM 13 // EV4 special memory PAL mode access
+#define ALPHA_EV4_REI 14 // EV4 PAL mode switch
+
+//
+// Instruction Opcodes.
+//
+
+#define CALLPAL_OP 0x00 // ALPHA_CALLPAL
+#define _01_OP 0x01 // - reserved opcode
+#define _02_OP 0x02 // - reserved opcode
+#define _03_OP 0x03 // - reserved opcode
+#define _04_OP 0x04 // - reserved opcode
+#define _05_OP 0x05 // - reserved opcode
+#define _06_OP 0x06 // - reserved opcode
+#define _07_OP 0x07 // - reserved opcode
+#define _0A_OP 0x0A // - reserved opcode
+#define _0C_OP 0x0C // - reserved opcode
+#define _0D_OP 0x0D // - reserved opcode
+#define _0E_OP 0x0E // - reserved opcode
+#define _1C_OP 0x1C // - reserved opcode
+#define LDA_OP 0x08 // ALPHA_MEMORY
+#define LDAH_OP 0x09 // ALPHA_MEMORY
+#define LDBU_OP 0x0A // ALPHA_MEMORY
+#define LDQ_U_OP 0x0B // ALPHA_MEMORY
+#define LDWU_OP 0x0C // ALPHA_MEMORY
+#define STW_OP 0x0D // ALPHA_MEMORY
+#define STB_OP 0x0E // ALPHA_MEMORY
+#define STQ_U_OP 0x0F // ALPHA_MEMORY
+#define ARITH_OP 0x10 // ALPHA_OPERATE or ALPHA_LITERAL
+#define BIT_OP 0x11 // ALPHA_OPERATE or ALPHA_LITERAL
+#define BYTE_OP 0x12 // ALPHA_OPERATE or ALPHA_LITERAL
+#define MUL_OP 0x13 // ALPHA_OPERATE or ALPHA_LITERAL
+#define _14_OP 0x14 // - reserved opcode
+#define VAXFP_OP 0x15 // ALPHA_FP_OPERATE
+#define IEEEFP_OP 0x16 // ALPHA_FP_OPERATE
+#define FPOP_OP 0x17 // ALPHA_FP_OPERATE
+#define MEMSPC_OP 0x18 // ALPHA_MEMORY
+#define PAL19_OP 0x19 // - reserved for PAL mode
+//#define MFPR_OP 0x19 // ALPHA_MFPR
+#define JMP_OP 0x1A // ALPHA_JUMP
+#define PAL1B_OP 0x1B // - reserved for PAL mode
+#define SEXT_OP 0x1C // ALPHA_OPERATE
+#define PAL1D_OP 0x1D // - reserved for PAL mode
+//#define MTPR_OP 0x1D // ALPHA_MTPR
+#define PAL1E_OP 0x1E // - reserved for PAL mode
+#define PAL1F_OP 0x1F // - reserved for PAL mode
+#define LDF_OP 0x20 // ALPHA_MEMORY
+#define LDG_OP 0x21 // ALPHA_MEMORY
+#define LDS_OP 0x22 // ALPHA_MEMORY
+#define LDT_OP 0x23 // ALPHA_MEMORY
+#define STF_OP 0x24 // ALPHA_MEMORY
+#define STG_OP 0x25 // ALPHA_MEMORY
+#define STS_OP 0x26 // ALPHA_MEMORY
+#define STT_OP 0x27 // ALPHA_MEMORY
+#define LDL_OP 0x28 // ALPHA_MEMORY
+#define LDQ_OP 0x29 // ALPHA_MEMORY
+#define LDL_L_OP 0x2A // ALPHA_MEMORY
+#define LDQ_L_OP 0x2B // ALPHA_MEMORY
+#define STL_OP 0x2C // ALPHA_MEMORY
+#define STQ_OP 0x2D // ALPHA_MEMORY
+#define STL_C_OP 0x2E // ALPHA_MEMORY
+#define STQ_C_OP 0x2F // ALPHA_MEMORY
+#define BR_OP 0x30 // ALPHA_BRANCH
+#define FBEQ_OP 0x31 // ALPHA_BRANCH
+#define FBLT_OP 0x32 // ALPHA_BRANCH
+#define FBLE_OP 0x33 // ALPHA_BRANCH
+#define BSR_OP 0x34 // ALPHA_BRANCH
+#define FBNE_OP 0x35 // ALPHA_BRANCH
+#define FBGE_OP 0x36 // ALPHA_BRANCH
+#define FBGT_OP 0x37 // ALPHA_BRANCH
+#define BLBC_OP 0x38 // ALPHA_BRANCH
+#define BEQ_OP 0x39 // ALPHA_BRANCH
+#define BLT_OP 0x3A // ALPHA_BRANCH
+#define BLE_OP 0x3B // ALPHA_BRANCH
+#define BLBS_OP 0x3C // ALPHA_BRANCH
+#define BNE_OP 0x3D // ALPHA_BRANCH
+#define BGE_OP 0x3E // ALPHA_BRANCH
+#define BGT_OP 0x3F // ALPHA_BRANCH
+
+#define LDA_OP_STR "lda"
+#define LDAH_OP_STR "ldah"
+#define LDBU_OP_STR "ldbu"
+#define LDQ_U_OP_STR "ldq_u"
+#define STQ_U_OP_STR "stq_u"
+#define LDF_OP_STR "ldf"
+#define LDG_OP_STR "ldg"
+#define LDS_OP_STR "lds"
+#define LDT_OP_STR "ldt"
+#define LDWU_OP_STR "ldwu"
+#define STF_OP_STR "stf"
+#define STG_OP_STR "stg"
+#define STS_OP_STR "sts"
+#define STT_OP_STR "stt"
+#define LDL_OP_STR "ldl"
+#define LDQ_OP_STR "ldq"
+#define LDL_L_OP_STR "ldl_l"
+#define LDQ_L_OP_STR "ldq_l"
+#define SEXT_OP_STR "sext"
+#define STB_OP_STR "stb"
+#define STL_OP_STR "stl"
+#define STQ_OP_STR "stq"
+#define STL_C_OP_STR "stl_c"
+#define STQ_C_OP_STR "stq_c"
+#define STW_OP_STR "stw"
+#define BR_OP_STR "br"
+#define FBEQ_OP_STR "fbeq"
+#define FBLT_OP_STR "fblt"
+#define FBLE_OP_STR "fble"
+#define BSR_OP_STR "bsr"
+#define FBNE_OP_STR "fbne"
+#define FBGE_OP_STR "fbge"
+#define FBGT_OP_STR "fbgt"
+#define BLBC_OP_STR "blbc"
+#define BEQ_OP_STR "beq"
+#define BLT_OP_STR "blt"
+#define BLE_OP_STR "ble"
+#define BLBS_OP_STR "blbs"
+#define BNE_OP_STR "bne"
+#define BGE_OP_STR "bge"
+#define BGT_OP_STR "bgt"
+
+//
+// Type (1) Memory Instruction Format.
+// Type (2) Memory Special Instruction Format.
+//
+// 3 2 2 2 2 1 1
+// 1 6 5 1 0 6 5 0
+// +-----------+---------+---------+-------------------------------+
+// | opcode | Ra | Rb | Memory_disp |
+// +-----------+---------+---------+-------------------------------+
+//
+// LDAx Ra.wq,disp.ab(Rb.ab) x = (,H)
+// LDx Ra.wq,disp.ab(Rb.ab) x = (L,Q,F,G,S,T)
+// LDQ_U Ra.wq,disp.ab(Rb.ab)
+// LDx_L Ra.wq,disp.ab(Rb.ab) x = (L,Q)
+// STx_C Ra.mq,disp.ab(Rb.ab) x = (L,Q)
+// STx Ra.rq,disp.ab(Rb.ab) x = (L,Q,F,G,S,T)
+// STQ_U Ra.rq,disp.ab(Rb.ab)
+//
+
+typedef struct _Alpha_Memory_Format {
+ LONG MemDisp : 16;
+ ULONG Rb : 5;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_Memory_Format;
+
+//
+// Special Memory instruction function codes (in Memdisp).
+//
+
+#define TRAPB_FUNC 0x0000
+#define EXCB_FUNC 0x0400
+#define MB_FUNC 0x4000
+#define WMB_FUNC 0x4400
+#define MB2_FUNC 0x4800
+#define MB3_FUNC 0x4C00
+#define FETCH_FUNC 0x8000
+#define FETCH_M_FUNC 0xA000
+#define RPCC_FUNC 0xC000
+#define RC_FUNC 0xE000
+#define RS_FUNC 0xF000
+
+#define TRAPB_FUNC_STR "trapb"
+#define EXCB_FUNC_STR "excb"
+#define MB_FUNC_STR "mb"
+#define MB1_FUNC_STR "wmb"
+#define MB2_FUNC_STR "mb2"
+#define MB3_FUNC_STR "mb3"
+#define FETCH_FUNC_STR "fetch"
+#define FETCH_M_FUNC_STR "fetch_m"
+#define RPCC_FUNC_STR "rpcc"
+#define RC_FUNC_STR "rc"
+#define RS_FUNC_STR "rs"
+
+//
+// Type (3) Memory Format Jump Instructions.
+//
+// 3 2 2 2 2 1 1 1 1
+// 1 6 5 1 0 6 5 4 3 0
+// +-----------+---------+---------+---+---------------------------+
+// | opcode | Ra | Rb |Fnc| Hint |
+// +-----------+---------+---------+---+---------------------------+
+//
+// xxx Ra.wq,(Rb.ab),hint xxx = (JMP, JSR, RET, JSR_COROUTINE)
+//
+
+typedef struct _Alpha_Jump_Format {
+ LONG Hint : 14;
+ ULONG Function : 2;
+ ULONG Rb : 5;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_Jump_Format;
+
+//
+// Jump function codes (in Function, opcode 1A, JMP_OP).
+//
+
+#define JMP_FUNC 0x0 // Jump
+#define JSR_FUNC 0x1 // Jump to Subroutine
+#define RET_FUNC 0x2 // Return from Subroutine
+#define JSR_CO_FUNC 0x3 // Jump to Subroutine Return
+
+#define JMP_FUNC_STR "jmp"
+#define JSR_FUNC_STR "jsr"
+#define RET_FUNC_STR "ret"
+#define JSR_CO_FUNC_STR "jsr_cortn"
+
+//
+// The exception handling compatible return instruction has a hint value
+// of 0001. Define a macro that identifies these return instructions.
+// The Rb register field is masked out since it is normally, but not
+// required to be, RA_REG.
+//
+
+#define IS_RETURN_0001_INSTRUCTION(Instruction) \
+ (((Instruction) & 0xFFE0FFFF) == 0x6BE08001)
+
+//
+// Type (4) Branch Instruction Format.
+//
+// 3 2 2 2 2
+// 1 6 5 1 0 0
+// +-----------+---------+-----------------------------------------+
+// | opcode | Ra | Branch_disp |
+// +-----------+---------+-----------------------------------------+
+//
+// Bxx Ra.rq,disp.al x = (EQ,NE,LT,LE,GT,GE,LBC,LBS)
+// BxR Ra.wq,disp.al x = (,S)
+// FBxx Ra.rq,disp.al x = (EQ,NE,LT,LE,GT,GE)
+//
+
+typedef struct _Alpha_Branch_Format {
+ LONG BranchDisp : 21;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_Branch_Format;
+
+//
+// Type (5) Operate Register Instruction Format.
+// Type (6) Operate Literal Instruction Format.
+// bop = Rb.rq or #b.ib
+//
+// 3 2 2 2 2 1 1 1 1 1
+// 1 6 5 1 0 6 5 3 2 1 5 4 0
+// +-----------+---------+---------+-----+-+-------------+---------+
+// | opcode | Ra | Rb | SBZ |0| function | Rc |
+// +-----------+---------+---------+-----+-+-------------+---------+
+// 3 2 2 2 2 1 1 1
+// 1 6 5 1 0 3 2 1 5 4 0
+// +-----------+---------+---------------+-+-------------+---------+
+// | opcode | Ra | LIT |1| function | Rc |
+// +-----------+---------+---------------+-+-------------+---------+
+//
+//
+// ADDx Ra.rq,bop,Rc.wq /V x = (Q,L)
+// SxADDy Ra.rq,bop,Rc.wq x = (4,8), y = (Q, L)
+// CMPx Ra.rq,bop,Rc.wq x = (EQ,LT,LE,ULT,ULE)
+// MULx Ra.rq,bop,Rc.wq /V x = (Q,L)
+// UMULH Ra.rq,bop,Rc.wq
+// SUBx Ra.rq,bop,Rc.wq /V x = (Q,L)
+// SxSUBy Ra.rq,bop,Rc.wq x = (4,8), y = (Q, L)
+// xxx Ra.rq,bop,Rc.wq xxx = (AND,BIS,XOR,BIC,ORNOT,EQV)
+// CMOVxx Ra.rq,bop,Rc.wq xx = (EQ,NE,LT,LE,GT,GE,LBC,LBS)
+// SxL Ra.rq,bop,Rc.wq x = (L,R)
+// SRA Ra.rq,bop,Rc.wq
+// CMPBGE Ra.rq,bop,Rc.wq
+// EXTxx Ra.rq,bop,Rc.wq xx = (BL,WL,WH,LL,LH,WL,QH)
+// INSxx Ra.rq,bop,Rc.wq xx = (BL,WL,WH,LL,LH,WL,QH)
+// MSKxx Ra.rq,bop,Rc.wq xx = (BL,WL,WH,LL,LH,WL,QH)
+// ZAPx Ra.rq,bop,Rc.wq x = (,NOT)
+//
+
+typedef struct _Alpha_OpReg_Format {
+ ULONG Rc : 5;
+ ULONG Function : 7;
+ ULONG RbvType : 1; // 0 for register format
+ ULONG SBZ : 3;
+ ULONG Rb : 5;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_OpReg_Format;
+
+typedef struct _Alpha_OpLit_Format {
+ ULONG Rc : 5;
+ ULONG Function : 7;
+ ULONG RbvType : 1; // 1 for literal format
+ ULONG Literal : 8;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_OpLit_Format;
+
+#define RBV_REGISTER_FORMAT 0
+#define RBV_LITERAL_FORMAT 1
+
+//
+// Arithmetic operate function codes (in Function, Opcode 10, ARITH_OP).
+//
+
+#define ADDL_FUNC 0x00 // Add Longword
+#define ADDLV_FUNC 0x40 // Add Longword, Integer Overflow Enable
+#define S4ADDL_FUNC 0x02 // Scaled Add Longword by 4
+#define S8ADDL_FUNC 0x12 // Scaled Add Longword by 8
+
+#define ADDQ_FUNC 0x20 // Add Quadword
+#define ADDQV_FUNC 0x60 // Add Quadword, Integer Overflow Enable
+#define S4ADDQ_FUNC 0x22 // Scaled Add Quadword by 4
+#define S8ADDQ_FUNC 0x32 // Scaled Add Quadword by 8
+
+#define SUBL_FUNC 0x09 // Subtract Longword
+#define SUBLV_FUNC 0x49 // Subtract Longword, Integer Overflow Enable
+#define S4SUBL_FUNC 0x0B // Scaled Subtract Longword by 4
+#define S8SUBL_FUNC 0x1B // Scaled Subtract Longword by 8
+
+#define SUBQ_FUNC 0x29 // Subtract Quadword
+#define SUBQV_FUNC 0x69 // Subtract Quadword, Integer Overflow Enable
+#define S4SUBQ_FUNC 0x2B // Scaled Subtract Quadword by 4
+#define S8SUBQ_FUNC 0x3B // Scaled Subtract Quadword by 8
+
+#define CMPEQ_FUNC 0x2D // Compare Signed Quadword Equal
+#define CMPLT_FUNC 0x4D // Compare Signed Quadword Less Than
+#define CMPLE_FUNC 0x6D // Compare Signed Quadword Less Than or Equal
+#define CMPULT_FUNC 0x1D // Compare Unsigned Quadword Less Than
+#define CMPULE_FUNC 0x3D // Compare Unsigned Quadword Less Than or Equal
+#define CMPBGE_FUNC 0x0F // Compare 8 Unsigned Bytes Greater Than or Equal
+
+#define ADDL_FUNC_STR "addl"
+#define ADDLV_FUNC_STR "addl/v"
+#define S4ADDL_FUNC_STR "s4addl"
+#define S8ADDL_FUNC_STR "s8addl"
+
+#define ADDQ_FUNC_STR "addq"
+#define ADDQV_FUNC_STR "addq/v"
+#define S4ADDQ_FUNC_STR "s4addq"
+#define S8ADDQ_FUNC_STR "s8addq"
+
+#define SUBL_FUNC_STR "subl"
+#define SUBLV_FUNC_STR "subl/v"
+#define S4SUBL_FUNC_STR "s4subl"
+#define S8SUBL_FUNC_STR "s8subl"
+
+#define SUBQ_FUNC_STR "subq"
+#define SUBQV_FUNC_STR "subq/v"
+#define S4SUBQ_FUNC_STR "s4subq"
+#define S8SUBQ_FUNC_STR "s8subq"
+
+#define CMPEQ_FUNC_STR "cmpeq"
+#define CMPLT_FUNC_STR "cmplt"
+#define CMPLE_FUNC_STR "cmple"
+#define CMPULT_FUNC_STR "cmpult"
+#define CMPULE_FUNC_STR "cmpule"
+#define CMPBGE_FUNC_STR "cmpbge"
+
+//
+// Bit and conditional operate function codes (in Function, Opcode 11, BIT_OP).
+//
+
+#define AND_FUNC 0x00 // Logical Product
+#define BIC_FUNC 0x08 // Logical Product with Complement
+#define BIS_FUNC 0x20 // Logical Sum (OR)
+#define EQV_FUNC 0x48 // Logical Equivalence (XORNOT)
+#define ORNOT_FUNC 0x28 // Logical Sum with Complement
+#define XOR_FUNC 0x40 // Logical Difference
+
+#define CMOVEQ_FUNC 0x24 // CMOVE if Register Equal to Zero
+#define CMOVGE_FUNC 0x46 // CMOVE if Register Greater Than or Equal to Zero
+#define CMOVGT_FUNC 0x66 // CMOVE if Register Greater Than Zero
+#define CMOVLBC_FUNC 0x16 // CMOVE if Register Low Bit Clear
+#define CMOVLBS_FUNC 0x14 // CMOVE if Register Low Bit Set
+#define CMOVLE_FUNC 0x64 // CMOVE if Register Less Than or Equal to Zero
+#define CMOVLT_FUNC 0x44 // CMOVE if Register Less Than Zero
+#define CMOVNE_FUNC 0x26 // CMOVE if Register Not Equal to Zero
+
+#define AND_FUNC_STR "and"
+#define BIC_FUNC_STR "bic"
+#define BIS_FUNC_STR "bis"
+#define EQV_FUNC_STR "eqv"
+#define ORNOT_FUNC_STR "ornot"
+#define XOR_FUNC_STR "xor"
+
+#define CMOVEQ_FUNC_STR "cmoveq"
+#define CMOVGE_FUNC_STR "cmovge"
+#define CMOVGT_FUNC_STR "cmovgt"
+#define CMOVLBC_FUNC_STR "cmovlbc"
+#define CMOVLBS_FUNC_STR "cmovlbs"
+#define CMOVLE_FUNC_STR "cmovle"
+#define CMOVLT_FUNC_STR "cmovlt"
+#define CMOVNE_FUNC_STR "cmovne"
+
+//
+// Shift and byte operate function codes (in Function, Opcode 12, BYTE_OP).
+//
+
+#define SLL_FUNC 0x39 // Shift Left Logical
+#define SRL_FUNC 0x34 // Shift Right Logical
+#define SRA_FUNC 0x3C // Shift Right Arithmetic
+
+#define EXTBL_FUNC 0x06 // Extract Byte Low
+#define EXTWL_FUNC 0x16 // Extract Word Low
+#define EXTLL_FUNC 0x26 // Extract Longword Low
+#define EXTQL_FUNC 0x36 // Extract Quadword Low
+#define EXTWH_FUNC 0x5A // Extract Word High
+#define EXTLH_FUNC 0x6A // Extract Longword High
+#define EXTQH_FUNC 0x7A // Extract Quadword High
+
+#define INSBL_FUNC 0x0B // Insert Byte Low
+#define INSWL_FUNC 0x1B // Insert Word Low
+#define INSLL_FUNC 0x2B // Insert Longword Low
+#define INSQL_FUNC 0x3B // Quadword Low
+#define INSWH_FUNC 0x57 // Insert Word High
+#define INSLH_FUNC 0x67 // Insert Longword High
+#define INSQH_FUNC 0x77 // Insert Quadword High
+
+#define MSKBL_FUNC 0x02 // Mask Byte Low
+#define MSKWL_FUNC 0x12 // Mask Word Low
+#define MSKLL_FUNC 0x22 // Mask Longword Low
+#define MSKQL_FUNC 0x32 // Mask Quadword Low
+#define MSKWH_FUNC 0x52 // Mask Word High
+#define MSKLH_FUNC 0x62 // Mask Longword High
+#define MSKQH_FUNC 0x72 // Mask Quadword High
+
+#define ZAP_FUNC 0x30 // Zero Bytes
+#define ZAPNOT_FUNC 0x31 // Zero Bytes Not
+
+#define SLL_FUNC_STR "sll"
+#define SRL_FUNC_STR "srl"
+#define SRA_FUNC_STR "sra"
+
+#define EXTBL_FUNC_STR "extbl"
+#define EXTWL_FUNC_STR "extwl"
+#define EXTLL_FUNC_STR "extll"
+#define EXTQL_FUNC_STR "extql"
+#define EXTWH_FUNC_STR "extwh"
+#define EXTLH_FUNC_STR "extlh"
+#define EXTQH_FUNC_STR "extqh"
+
+#define INSBL_FUNC_STR "insbl"
+#define INSWL_FUNC_STR "inswl"
+#define INSLL_FUNC_STR "insll"
+#define INSQL_FUNC_STR "insql"
+#define INSWH_FUNC_STR "inswh"
+#define INSLH_FUNC_STR "inslh"
+#define INSQH_FUNC_STR "insqh"
+
+#define MSKBL_FUNC_STR "mskbl"
+#define MSKWL_FUNC_STR "mskwl"
+#define MSKLL_FUNC_STR "mskll"
+#define MSKQL_FUNC_STR "mskql"
+#define MSKWH_FUNC_STR "mskwh"
+#define MSKLH_FUNC_STR "msklh"
+#define MSKQH_FUNC_STR "mskqh"
+
+#define ZAP_FUNC_STR "zap"
+#define ZAPNOT_FUNC_STR "zapnot"
+
+//
+// Integer multiply operate function codes (in Function, Opcode 13, MUL_OP).
+//
+
+#define MULL_FUNC 0x00 // Multiply Longword
+#define MULLV_FUNC 0x40 // Multiply Longword, Integer Overflow Enable
+#define MULQ_FUNC 0x20 // Multiply Quadword
+#define MULQV_FUNC 0x60 // Multiply Quadword, Integer Overflow Enable
+#define UMULH_FUNC 0x30 // Unsinged Multiply Quadword High
+
+#define MULL_FUNC_STR "mull"
+#define MULLV_FUNC_STR "mull/v"
+#define MULQ_FUNC_STR "mulq"
+#define MULQV_FUNC_STR "mulq/v"
+#define UMULH_FUNC_STR "umulh"
+
+//
+// Sign extend operate function codes (in Function, Opcode 1c, SEXT_OP).
+//
+
+#define SEXTB_FUNC 0
+#define SEXTW_FUNC 1
+
+#define SEXTB_FUNC_STR "sextb"
+#define SEXTW_FUNC_STR "sextw"
+
+//
+// Type (7) Floating-point Operate Instruction Format.
+// Type (8) Floating-point Convert Instruction Format.
+//
+// Type 6 and 7 are the same, except for type 7
+// Fc == F31 (1s) and Fb is the source.
+//
+// 3 2 2 2 2 1 1
+// 1 6 5 1 0 6 5 5 4 0
+// +-----------+---------+---------+---------------------+---------+
+// | opcode | Fa | Fb | function | Fc |
+// +-----------+---------+---------+---------------------+---------+
+//
+
+typedef struct _Alpha_FpOp_Format {
+ ULONG Fc : 5;
+ ULONG Function : 11;
+ ULONG Fb : 5;
+ ULONG Fa : 5;
+ ULONG Opcode : 6;
+} Alpha_FpOp_Format;
+
+//
+// Format independent function codes (in Function, Opcode 17)
+//
+
+#define CVTLQ_FUNC 0x010
+#define CPYS_FUNC 0x020
+#define CPYSN_FUNC 0x021
+#define CPYSE_FUNC 0x022
+#define MT_FPCR_FUNC 0x024
+#define MF_FPCR_FUNC 0x025
+#define FCMOVEQ_FUNC 0x02A
+#define FCMOVNE_FUNC 0x02B
+#define FCMOVLT_FUNC 0x02C
+#define FCMOVGE_FUNC 0x02D
+#define FCMOVLE_FUNC 0x02E
+#define FCMOVGT_FUNC 0x02F
+#define CVTQL_FUNC 0x030
+#define CVTQLV_FUNC 0x130
+#define CVTQLSV_FUNC 0x530
+
+#define CVTLQ_FUNC_STR "cvtlq"
+#define CPYS_FUNC_STR "cpys"
+#define CPYSN_FUNC_STR "cpysn"
+#define CPYSE_FUNC_STR "cpyse"
+#define MT_FPCR_FUNC_STR "mt_fpcr"
+#define MF_FPCR_FUNC_STR "mf_fpcr"
+#define FCMOVEQ_FUNC_STR "fcmoveq"
+#define FCMOVNE_FUNC_STR "fcmovne"
+#define FCMOVLT_FUNC_STR "fcmovlt"
+#define FCMOVGE_FUNC_STR "fcmovge"
+#define FCMOVLE_FUNC_STR "fcmovle"
+#define FCMOVGT_FUNC_STR "fcmovgt"
+#define CVTQL_FUNC_STR "cvtql"
+#define CVTQLV_FUNC_STR "cvtql/v"
+#define CVTQLSV_FUNC_STR "cvtql/sv"
+
+//
+// IEEE function codes without flags (in Function, Opcode 16).
+//
+
+#define MSK_FP_OP 0x03F
+
+#define ADDS_FUNC 0x000
+#define SUBS_FUNC 0x001
+#define MULS_FUNC 0x002
+#define DIVS_FUNC 0x003
+#define ADDT_FUNC 0x020
+#define SUBT_FUNC 0x021
+#define MULT_FUNC 0x022
+#define DIVT_FUNC 0x023
+#define CMPTUN_FUNC 0x024
+#define CMPTEQ_FUNC 0x025
+#define CMPTLT_FUNC 0x026
+#define CMPTLE_FUNC 0x027
+#define CVTTS_FUNC 0x02C
+#define CVTTQ_FUNC 0x02F
+#define CVTQS_FUNC 0x03C
+#define CVTQT_FUNC 0x03E
+
+#define ADDS_FUNC_STR "adds"
+#define SUBS_FUNC_STR "subs"
+#define MULS_FUNC_STR "muls"
+#define DIVS_FUNC_STR "divs"
+#define ADDT_FUNC_STR "addt"
+#define SUBT_FUNC_STR "subt"
+#define MULT_FUNC_STR "mult"
+#define DIVT_FUNC_STR "divt"
+#define CMPTUN_FUNC_STR "cmptun"
+#define CMPTEQ_FUNC_STR "cmpteq"
+#define CMPTLT_FUNC_STR "cmptlt"
+#define CMPTLE_FUNC_STR "cmptle"
+#define CVTTS_FUNC_STR "cvtts"
+#define CVTTQ_FUNC_STR "cvttq"
+#define CVTQS_FUNC_STR "cvtqs"
+#define CVTQT_FUNC_STR "cvtqt"
+
+//
+// CVTST is a little different.
+//
+
+#define CVTST_FUNC 0x2AC
+#define CVTST_S_FUNC 0x6AC
+
+#define CVTST_FUNC_STR "cvtst"
+#define CVTST_S_FUNC_STR "cvtst/s"
+
+//
+// VAX function codes without flags (in Function, Opcode 15).
+//
+
+#define ADDF_FUNC 0x000
+#define CVTDG_FUNC 0x01E
+#define ADDG_FUNC 0x020
+#define CMPGEQ_FUNC 0x025
+#define CMPGLT_FUNC 0x026
+#define CMPGLE_FUNC 0x027
+#define CVTGF_FUNC 0x02C
+#define CVTGD_FUNC 0x02D
+#define CVTQF_FUNC 0x03C
+#define CVTQG_FUNC 0x03E
+#define DIVF_FUNC 0x003
+#define DIVG_FUNC 0x023
+#define MULF_FUNC 0x002
+#define MULG_FUNC 0x022
+#define SUBF_FUNC 0x001
+#define SUBG_FUNC 0x021
+#define CVTGQ_FUNC 0x03F
+
+#define ADDF_FUNC_STR "addf"
+#define CVTDG_FUNC_STR "cvtdg"
+#define ADDG_FUNC_STR "addg"
+#define CMPGEQ_FUNC_STR "cmpgeq"
+#define CMPGLT_FUNC_STR "cmpglt"
+#define CMPGLE_FUNC_STR "cmpgle"
+#define CVTGF_FUNC_STR "cvtgf"
+#define CVTGD_FUNC_STR "cvtgd"
+#define CVTQF_FUNC_STR "cvtqf"
+#define CVTQG_FUNC_STR "cvtqg"
+#define DIVF_FUNC_STR "divf"
+#define DIVG_FUNC_STR "divg"
+#define MULF_FUNC_STR "mulf"
+#define MULG_FUNC_STR "mulg"
+#define SUBF_FUNC_STR "subf"
+#define SUBG_FUNC_STR "subg"
+#define CVTGQ_FUNC_STR "cvtgq"
+
+//
+// Define subfields within the 11 bit IEEE floating operate function field.
+//
+
+#define FP_FUNCTION_MASK 0x03F // Function code including format
+
+//
+// Define the 2 bit format field.
+//
+
+#define FP_FORMAT_MASK 0x030
+#define FP_FORMAT_S 0x000 // Single (32 bit floating)
+#define FP_FORMAT_X 0x010 // Extended (128 bit floating)
+#define FP_FORMAT_T 0x020 // Double (64 bit floating)
+#define FP_FORMAT_Q 0x030 // Quad (64 bit integer)
+#define FP_FORMAT_SHIFT 4
+
+//
+// Define the 2 bit rounding mode field.
+//
+
+#define FP_ROUND_MASK 0x0C0
+#define FP_ROUND_C 0x000 // Chopped
+#define FP_ROUND_M 0x040 // Minus Infinity
+#define FP_ROUND_N 0x080 // Nearest
+#define FP_ROUND_D 0x0C0 // Dynamic
+#define FP_ROUND_SHIFT 6
+
+//
+// Define the 3 bit trap enable field.
+//
+
+#define FP_TRAP_ENABLE_MASK 0x700
+#define FP_TRAP_ENABLE_NONE 0x000
+#define FP_TRAP_ENABLE_U 0x100 // Underflow
+#define FP_TRAP_ENABLE_I 0x200 // Inexact
+
+#define FP_TRAP_ENABLE_S 0x400 // Software Completion
+#define FP_TRAP_ENABLE_SU 0x500
+#define FP_TRAP_ENABLE_SUI 0x700
+
+#define FP_TRAP_ENABLE_V 0x100 // Integer Overflow
+#define FP_TRAP_ENABLE_SV 0x500
+#define FP_TRAP_ENABLE_SVI 0x700
+
+#define FP_TRAP_ENABLE_SHIFT 8
+
+//
+// VAX and IEEE function flags (or'd with VAX and IEEE function code)
+//
+
+#define MSK_FP_FLAGS 0x7C0
+
+#define C_FLAGS 0x000
+#define M_FLAGS 0x040
+#define NONE_FLAGS 0x080
+#define D_FLAGS 0x0C0
+#define UC_FLAGS 0x100
+#define VC_FLAGS 0x100
+#define UM_FLAGS 0x140
+#define VM_FLAGS 0x140
+#define U_FLAGS 0x180
+#define V_FLAGS 0x180
+#define UD_FLAGS 0x1C0
+#define VD_FLAGS 0x1C0
+#define SC_FLAGS 0x400
+#define S_FLAGS 0x480
+#define SUC_FLAGS 0x500
+#define SVC_FLAGS 0x500
+#define SUM_FLAGS 0x540
+#define SVM_FLAGS 0x540
+#define SU_FLAGS 0x580
+#define SV_FLAGS 0x580
+#define SUD_FLAGS 0x5C0
+#define SVD_FLAGS 0x5C0
+#define SUIC_FLAGS 0x700
+#define SVIC_FLAGS 0x700
+#define SUIM_FLAGS 0x740
+#define SVIM_FLAGS 0x740
+#define SUI_FLAGS 0x780
+#define SVI_FLAGS 0x780
+#define SUID_FLAGS 0x7C0
+#define SVID_FLAGS 0x7C0
+
+#define C_FLAGS_STR "/c"
+#define M_FLAGS_STR "/m"
+#define NONE_FLAGS_STR ""
+#define D_FLAGS_STR "/d"
+#define UC_FLAGS_STR "/uc"
+#define VC_FLAGS_STR "/vc"
+#define UM_FLAGS_STR "/um"
+#define VM_FLAGS_STR "/vm"
+#define U_FLAGS_STR "/u"
+#define V_FLAGS_STR "/v"
+#define UD_FLAGS_STR "/ud"
+#define VD_FLAGS_STR "/vd"
+#define SC_FLAGS_STR "/sc"
+#define S_FLAGS_STR "/s"
+#define SUC_FLAGS_STR "/suc"
+#define SVC_FLAGS_STR "/svc"
+#define SUM_FLAGS_STR "/sum"
+#define SVM_FLAGS_STR "/svm"
+#define SU_FLAGS_STR "/su"
+#define SV_FLAGS_STR "/sv"
+#define SUD_FLAGS_STR "/sud"
+#define SVD_FLAGS_STR "/svd"
+#define SUIC_FLAGS_STR "/suic"
+#define SVIC_FLAGS_STR "/svic"
+#define SUIM_FLAGS_STR "/suim"
+#define SVIM_FLAGS_STR "/svim"
+#define SUI_FLAGS_STR "/sui"
+#define SVI_FLAGS_STR "/svi"
+#define SUID_FLAGS_STR "/suid"
+#define SVID_FLAGS_STR "/svid"
+
+//
+// Type (9) PALcode Instruction Format.
+//
+// 3 2 2
+// 1 6 5 0
+// +-----------+---------------------------------------------------+
+// | opcode | PALcode func |
+// +-----------+---------------------------------------------------+
+//
+
+typedef struct _Alpha_PAL_Format {
+ ULONG Function : 26;
+ ULONG Opcode : 6;
+} Alpha_PAL_Format;
+
+//
+// Call to PAL function codes (in Function, Opcode 0, CALLPAL_OP).
+//
+// N.B. - if new call pal functions are added, they must also be added
+// in genalpha.c, genalpha.c will generate the include file for .s files
+// that will define the call pal mnemonics for assembly language use
+//
+
+#define PRIV_PAL_FUNC 0x0
+#define UNPRIV_PAL_FUNC 0x80
+
+
+//
+// Unprivileged call pal functions.
+//
+
+#define BPT_FUNC (UNPRIV_PAL_FUNC | 0x00)
+#define CALLSYS_FUNC (UNPRIV_PAL_FUNC | 0x03)
+#define IMB_FUNC (UNPRIV_PAL_FUNC | 0x06)
+#define GENTRAP_FUNC (UNPRIV_PAL_FUNC | 0xAA)
+#define RDTEB_FUNC (UNPRIV_PAL_FUNC | 0xAB)
+#define KBPT_FUNC (UNPRIV_PAL_FUNC | 0xAC)
+#define CALLKD_FUNC (UNPRIV_PAL_FUNC | 0xAD)
+
+#define BPT_FUNC_STR "bpt"
+#define CALLSYS_FUNC_STR "callsys"
+#define IMB_FUNC_STR "imb"
+#define RDTEB_FUNC_STR "rdteb"
+#define GENTRAP_FUNC_STR "gentrap"
+#define KBPT_FUNC_STR "kbpt"
+#define CALLKD_FUNC_STR "callkd"
+
+//
+// Priveleged call pal functions.
+//
+
+#define HALT_FUNC (PRIV_PAL_FUNC | 0x00)
+#define RESTART_FUNC (PRIV_PAL_FUNC | 0x01)
+#define DRAINA_FUNC (PRIV_PAL_FUNC | 0x02)
+#define REBOOT_FUNC (PRIV_PAL_FUNC | 0x03)
+#define INITPAL_FUNC (PRIV_PAL_FUNC | 0x04)
+#define WRENTRY_FUNC (PRIV_PAL_FUNC | 0x05)
+#define SWPIRQL_FUNC (PRIV_PAL_FUNC | 0x06)
+#define RDIRQL_FUNC (PRIV_PAL_FUNC | 0x07)
+#define DI_FUNC (PRIV_PAL_FUNC | 0X08)
+#define EI_FUNC (PRIV_PAL_FUNC | 0x09)
+#define SWPPAL_FUNC (PRIV_PAL_FUNC | 0x0A)
+#define SSIR_FUNC (PRIV_PAL_FUNC | 0x0C)
+#define CSIR_FUNC (PRIV_PAL_FUNC | 0x0D)
+#define RFE_FUNC (PRIV_PAL_FUNC | 0x0E)
+#define RETSYS_FUNC (PRIV_PAL_FUNC | 0x0F)
+#define SWPCTX_FUNC (PRIV_PAL_FUNC | 0x10)
+#define SWPPROCESS_FUNC (PRIV_PAL_FUNC | 0x11)
+#define RDMCES_FUNC (PRIV_PAL_FUNC | 0x12)
+#define WRMCES_FUNC (PRIV_PAL_FUNC | 0x13)
+#define TBIA_FUNC (PRIV_PAL_FUNC | 0x14)
+#define TBIS_FUNC (PRIV_PAL_FUNC | 0x15)
+#define DTBIS_FUNC (PRIV_PAL_FUNC | 0x16)
+#define TBISASN_FUNC (PRIV_PAL_FUNC | 0x17)
+#define RDKSP_FUNC (PRIV_PAL_FUNC | 0x18)
+#define SWPKSP_FUNC (PRIV_PAL_FUNC | 0x19)
+#define RDPSR_FUNC (PRIV_PAL_FUNC | 0x1A)
+#define RDPCR_FUNC (PRIV_PAL_FUNC | 0x1C)
+#define RDTHREAD_FUNC (PRIV_PAL_FUNC | 0x1E)
+#define TBIM_FUNC (PRIV_PAL_FUNC | 0x20)
+#define TBIMASN_FUNC (PRIV_PAL_FUNC | 0x21)
+#define RDCOUNTERS_FUNC (PRIV_PAL_FUNC | 0x30)
+#define RDSTATE_FUNC (PRIV_PAL_FUNC | 0x31)
+#define WRPERFMON_FUNC (PRIV_PAL_FUNC | 0x32)
+
+#define HALT_FUNC_STR "halt"
+#define RESTART_FUNC_STR "restart"
+#define DRAINA_FUNC_STR "draina"
+#define REBOOT_FUNC_STR "reboot"
+#define INITPAL_FUNC_STR "initpal"
+#define WRENTRY_FUNC_STR "wrentry"
+#define SWPIRQL_FUNC_STR "swpirql"
+#define RDIRQL_FUNC_STR "rdirql"
+#define DI_FUNC_STR "di"
+#define EI_FUNC_STR "ei"
+#define SWPPAL_FUNC_STR "swppal"
+#define SSIR_FUNC_STR "ssir"
+#define CSIR_FUNC_STR "csir"
+#define RFE_FUNC_STR "rfe"
+#define RETSYS_FUNC_STR "retsys"
+#define SWPCTX_FUNC_STR "swpctx"
+#define SWPPROCESS_FUNC_STR "swpprocess"
+#define RDMCES_FUNC_STR "rdmces"
+#define WRMCES_FUNC_STR "wrmces"
+#define TBIA_FUNC_STR "tbia"
+#define TBIS_FUNC_STR "tbis"
+#define DTBIS_FUNC_STR "dtbis"
+#define TBISASN_FUNC_STR "tbisasn"
+#define RDKSP_FUNC_STR "rdksp"
+#define SWPKSP_FUNC_STR "swpksp"
+#define RDPSR_FUNC_STR "rdpsr"
+#define RDPCR_FUNC_STR "rdpcr"
+#define RDTHREAD_FUNC_STR "rdthread"
+#define TBIM_FUNC_STR "tbim"
+#define TBIMASN_FUNC_STR "tbimasn"
+#define RDCOUNTERS_FUNC_STR "rdcounters"
+#define RDSTATE_FUNC_STR "rdstate"
+#define WRPERFMON_FUNC_STR "wrperfmon"
+
+//
+// 21064 (ev4) - specific call pal functions.
+//
+
+#define INITPCR_FUNC (PRIV_PAL_FUNC | 0x38)
+
+#define INITPCR_FUNC_STR "initpcr"
+
+//
+// Type (10) EV4 MTPR/MFPR PAL mode instructions.
+//
+// 3 2 2 2 2 1 1
+// 1 6 5 1 0 6 5 8 7 6 5 4 0
+// +-----------+---------+---------+---------------+-+-+-+---------+
+// | opcode | Ra | Rb | IGN |P|A|I| Index |
+// +-----------+---------+---------+---------------+-+-+-+---------+
+//
+
+typedef struct _Alpha_EV4_PR_Format {
+ ULONG Index : 5;
+ ULONG Ibox : 1;
+ ULONG Abox : 1;
+ ULONG PalTemp : 1;
+ ULONG IGN : 8;
+ ULONG Rb : 5;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_EV4_PR_Format;
+
+//
+// Type (10) EV5 MTPR/MFPR PAL mode instructions.
+//
+// 3 2 2 2 2 1 1
+// 1 6 5 1 0 6 5 0
+// +-----------+---------+---------+-------------------------------+
+// | opcode | Ra | Rb | Index |
+// +-----------+---------+---------+-------------------------------+
+//
+
+typedef struct _Alpha_EV5_PR_Format {
+ ULONG Index : 16;
+ ULONG Rb : 5;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_EV5_PR_Format;
+
+#define MTPR_OP 0x1D
+#define MFPR_OP 0x19
+
+#define MTPR_OP_STR "mt"
+#define MFPR_OP_STR "mf"
+
+//
+// Type (11) EV4 special memory PAL mode access.
+//
+// 3 2 2 2 2 1 1 1 1 1 1
+// 1 6 5 1 0 6 5 4 3 2 1 0
+// +-----------+---------+---------+-+-+-+-+-----------------------+
+// | opcode | Ra | Rb |P|A|R|Q| Disp |
+// +-----------+---------+---------+-+-+-+-+-----------------------+
+//
+
+typedef struct _Alpha_EV4_MEM_Format {
+ ULONG Disp : 12;
+ ULONG QuadWord : 1;
+ ULONG RWcheck : 1;
+ ULONG Alt : 1;
+ ULONG Physical : 1;
+ ULONG Rb : 5;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_EV4_MEM_Format;
+
+//
+// Type (11) EV5 special memory PAL mode access.
+//
+// 3 2 2 2 2 1 1 1 1 1 1
+// 1 6 5 1 0 6 5 4 3 2 1 0
+// +-----------+---------+---------+-+-+-+-+-----------------------+
+// | opcode | Ra | Rb |P|A|R|Q| Disp |
+// +-----------+---------+---------+-+-+-+-+-----------------------+
+//
+
+typedef struct _Alpha_EV5_MEM_Format {
+ ULONG Disp : 10;
+ ULONG Lock_Cond: 1;
+ ULONG Vpte: 1;
+ ULONG QuadWord : 1;
+ ULONG RWcheck : 1;
+ ULONG Alt : 1;
+ ULONG Physical : 1;
+ ULONG Rb : 5;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_EV5_MEM_Format;
+
+#define HWLD_OP 0x1B
+#define HWST_OP 0x1F
+
+#define HWLD_OP_STR "hwld"
+#define HWST_OP_STR "hwst"
+
+// Type (12) EV4 PAL mode switch.
+//
+// 3 2 2 2 2 1 1 1 1
+// 1 6 5 1 0 6 5 4 3 0
+// +-----------+---------+---------+-+-+---------------------------+
+// | opcode | Ra | Rb |1|0| IGN |
+// +-----------+---------+---------+-+-+---------------------------+
+
+typedef struct _Alpha_EV4_REI_Format {
+ ULONG IGN : 14;
+ ULONG zero : 1;
+ ULONG one : 1;
+ ULONG Rb : 5;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_EV4_REI_Format;
+
+// Type (12) EV5 PAL mode switch.
+//
+// 3 2 2 2 2 1 1 1 1
+// 1 6 5 1 0 6 5 4 3 0
+// +-----------+---------+---------+-+-+---------------------------+
+// | opcode | Ra | Rb |1|0| IGN |
+// +-----------+---------+---------+-+-+---------------------------+
+
+typedef struct _Alpha_EV5_REI_Format {
+ ULONG IGN : 14;
+ ULONG Type: 2;
+ ULONG Rb : 5;
+ ULONG Ra : 5;
+ ULONG Opcode : 6;
+} Alpha_EV5_REI_Format;
+
+#define REI_OP 0x1E
+
+#define REI_OP_STR "rei"
+
+//
+//
+//
+typedef union _Alpha_Instruction {
+ ULONG Long;
+ UCHAR Byte[4];
+
+ Alpha_Memory_Format Memory;
+ Alpha_Jump_Format Jump;
+ Alpha_Branch_Format Branch;
+ Alpha_OpReg_Format OpReg;
+ Alpha_OpLit_Format OpLit;
+ Alpha_FpOp_Format FpOp;
+ Alpha_PAL_Format Pal;
+ Alpha_EV4_PR_Format EV4_PR;
+ Alpha_EV4_MEM_Format EV4_MEM;
+ Alpha_EV4_REI_Format EV4_REI;
+ Alpha_EV5_PR_Format EV5_PR;
+ Alpha_EV5_MEM_Format EV5_MEM;
+ Alpha_EV5_REI_Format EV5_REI;
+} ALPHA_INSTRUCTION, *PALPHA_INSTRUCTION;
+
+//
+// Define standard integer register assignments.
+//
+
+#define V0_REG 0 // v0 - return value register
+
+#define T0_REG 1 // t0 - temporary register
+#define T1_REG 2 // t1 - temporary register
+#define T2_REG 3 // t2 - temporary register
+#define T3_REG 4 // t3 - temporary register
+#define T4_REG 5 // t4 - temporary register
+#define T5_REG 6 // t5 - temporary register
+#define T6_REG 7 // t6 - temporary register
+#define T7_REG 8 // t7 - temporary register
+
+#define S0_REG 9 // s0 - saved register
+#define S1_REG 10 // s1 - saved register
+#define S2_REG 11 // s2 - saved register
+#define S3_REG 12 // s3 - saved register
+#define S4_REG 13 // s4 - saved register
+#define S5_REG 14 // s5 - saved register
+
+#define S6_REG 15 // s6 - saved register, aka fp
+#define FP_REG 15 // fp - frame pointer register
+
+#define A0_REG 16 // a0 - argument register
+#define A1_REG 17 // a1 - argument register
+#define A2_REG 18 // a2 - argument register
+#define A3_REG 19 // a3 - argument register
+#define A4_REG 20 // a4 - argument register
+#define A5_REG 21 // a5 - argument register
+
+#define T8_REG 22 // t8 - temporary register
+#define T9_REG 23 // t9 - temporary register
+#define T10_REG 24 // t10 - temporary register
+#define T11_REG 25 // t11 - temporary register
+
+#define RA_REG 26 // ra - return address register
+#define T12_REG 27 // t12 - temporary register
+#define AT_REG 28 // at - assembler temporary register
+#define GP_REG 29 // gp - global pointer register
+#define SP_REG 30 // sp - stack pointer register
+#define ZERO_REG 31 // zero - zero register
+
+//
+// Define standard floating point register assignments.
+//
+
+#define F0_REG 0 // floating return value register (real)
+#define F1_REG 1 // floating return value register (imaginary)
+#define F16_REG 16 // floating argument register
+#define FZERO_REG 31 // floating zero register
+
+//
+// Define standard integer register strings
+//
+
+#define V0_REG_STR "v0" // - return value register
+
+#define T0_REG_STR "t0" // - temporary register
+#define T1_REG_STR "t1" // - temporary register
+#define T2_REG_STR "t2" // - temporary register
+#define T3_REG_STR "t3" // - temporary register
+#define T4_REG_STR "t4" // - temporary register
+#define T5_REG_STR "t5" // - temporary register
+#define T6_REG_STR "t6" // - temporary register
+#define T7_REG_STR "t7" // - temporary register
+
+#define S0_REG_STR "s0" // - saved register
+#define S1_REG_STR "s1" // - saved register
+#define S2_REG_STR "s2" // - saved register
+#define S3_REG_STR "s3" // - saved register
+#define S4_REG_STR "s4" // - saved register
+#define S5_REG_STR "s5" // - saved register
+
+#define S6_REG_STR "s6" // - saved register, aka fp
+#define FP_REG_STR "fp" // - frame pointer register
+
+#define A0_REG_STR "a0" // - argument register
+#define A1_REG_STR "a1" // - argument register
+#define A2_REG_STR "a2" // - argument register
+#define A3_REG_STR "a3" // - argument register
+#define A4_REG_STR "a4" // - argument register
+#define A5_REG_STR "a5" // - argument register
+
+#define T8_REG_STR "t8" // - temporary register
+#define T9_REG_STR "t9" // - temporary register
+#define T10_REG_STR "t10" // - temporary register
+#define T11_REG_STR "t11" // - temporary register
+
+#define RA_REG_STR "ra" // - return address register
+#define T12_REG_STR "t12" // - temporary register
+#define AT_REG_STR "at" // - assembler temporary register
+#define GP_REG_STR "gp" // - global pointer register
+#define SP_REG_STR "sp" // - stack pointer register
+#define ZERO_REG_STR "zero" // - zero register
+
+//
+// Define maximum and minimum single and double exponent values.
+//
+
+#define DOUBLE_MAXIMUM_EXPONENT 2047
+#define DOUBLE_MINIMUM_EXPONENT 0
+
+#define SINGLE_MAXIMUM_EXPONENT 255
+#define SINGLE_MINIMUM_EXPONENT 0
+
+//
+// Define single and double exponent bias values.
+//
+
+#define SINGLE_EXPONENT_BIAS 127
+#define DOUBLE_EXPONENT_BIAS 1023
+
+//
+// Define the largest single and double values.
+//
+
+#define SINGLE_MAXIMUM_VALUE 0x7f7fffff
+
+#define DOUBLE_MAXIMUM_VALUE_HIGH 0x7fefffff
+#define DOUBLE_MAXIMUM_VALUE_LOW 0xffffffff
+
+//
+// Define single and double quiet and signaling Nan values
+// (these are identical to X86 formats; Mips is different).
+//
+
+#define SINGLE_QUIET_NAN_PREFIX 0x7fc00000
+#define SINGLE_SIGNAL_NAN_PREFIX 0x7f800000
+#define SINGLE_QUIET_NAN_VALUE 0xffc00000
+
+#define DOUBLE_QUIET_NAN_PREFIX_HIGH 0x7ff80000
+#define DOUBLE_SIGNAL_NAN_PREFIX_HIGH 0x7ff00000
+#define DOUBLE_QUIET_NAN_VALUE_HIGH 0xfff80000
+#define DOUBLE_QUIET_NAN_VALUE_LOW 0x0
+
+//
+// Define positive single and double infinity values.
+//
+
+#define SINGLE_INFINITY_VALUE 0x7f800000
+
+#define DOUBLE_INFINITY_VALUE_HIGH 0x7ff00000
+#define DOUBLE_INFINITY_VALUE_LOW 0x0
+
+//
+// Quadword versions of the above.
+//
+
+#define DOUBLE_MAXIMUM_VALUE ((ULONGLONG)0x7fefffffffffffff)
+#define DOUBLE_INFINITY_VALUE ((ULONGLONG)0x7ff0000000000000)
+#define DOUBLE_QUIET_NAN_VALUE ((ULONGLONG)0xfff8000000000000)
+
+//
+// Define result values for IEEE floating point comparison operations.
+// True is 2.0 and False is 0.0.
+//
+
+#define FP_COMPARE_TRUE ((ULONGLONG)0x4000000000000000)
+#define FP_COMPARE_FALSE ((ULONGLONG)0x0000000000000000)
+
+//
+// Define Alpha AXP rounding modes.
+//
+
+#define ROUND_TO_ZERO 0 // round toward zero
+#define ROUND_TO_MINUS_INFINITY 1 // round toward minus infinity
+#define ROUND_TO_NEAREST 2 // round to nearest representable value
+#define ROUND_TO_PLUS_INFINITY 3 // round toward plus infinity
+
+#endif // _ALPHAOPS_
diff --git a/public/sdk/inc/alphxcpt.tab b/public/sdk/inc/alphxcpt.tab
new file mode 100644
index 000000000..b947eef53
--- /dev/null
+++ b/public/sdk/inc/alphxcpt.tab
@@ -0,0 +1,2 @@
+__C_specific_handler
+__jump_unwind
diff --git a/public/sdk/inc/asn1code.h b/public/sdk/inc/asn1code.h
new file mode 100644
index 000000000..74d484920
--- /dev/null
+++ b/public/sdk/inc/asn1code.h
@@ -0,0 +1,265 @@
+/*****************************************************************************/
+/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/
+/*****************************************************************************/
+
+/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC.
+ * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC.
+ * THIS FILE MAY NOT BE DISTRIBUTED. */
+
+/*****************************************************************************/
+/* FILE: @(#)asn1code.h 5.6 96/04/23 */
+/*****************************************************************************/
+#ifndef ASN1CODE_H
+#define ASN1CODE_H
+
+#include <stddef.h>
+#include "asn1hdr.h"
+#include "ossdll.h"
+
+#define ERR_MSG_LENGTH 512 /* length of error messages to be output */
+
+/*** encoder/decoder flags ***/
+#ifndef __TANDEM
+#define DEBUG 0x02 /* obsolete - produce tracing output */
+#endif
+#define DEBUGPDU 0x02 /* produce tracing output */
+#define BUFFER_PROVIDED 0x04 /* use caller-provided buffer */
+#define RESTRAIN 0x08 /* limit output buffer to user-specified size*/
+#define NOTRAPPING 0x200 /* do no signal trapping */
+#define NOCONSTRAIN 0x800 /* ignore calling constraint checker */
+
+/*** encoder flags ***/
+#define DEFINITE 0x10 /* force definite-length encoding */
+#define INDEFINITE 0x20 /* force indefinite-length encoding */
+#define FRONT_ALIGN 0x80 /* align output to front of output buffer */
+#define BACK_ALIGN 0x100 /* align output to back of output buffer */
+#define DEFAULT_ALIGN 0 /* use most efficient align (back or front) */
+
+/*** decoder flags ***/
+#define DEBUG_ERRORS 0x10 /* print errors to asn1out */
+#define RELAXBER 0x400 /* relax BER */
+
+/*** common return codes ***/
+#define REAL_CODE_NOT_LINKED 39 /* value compare DLL was not linked */
+#define CONSTRAINT_DLL_NOT_LINKED 36 /* constraint checker DLL was not linked */
+#define USER_BUFFER_NOT_SUPPORTED 35 /* user-provided buffer is not supported */
+#define ONLY_USER_BUFFER_SUPPORTED 34 /* Only user-provided buffer is supported */
+#define REAL_DLL_NOT_LINKED 31 /* REAL DLL was not linked */
+#define TYPE_NOT_SUPPORTED 30 /* ASN.1 type is not supported */
+#define TABLE_MISMATCH 29 /* C++ API: PDUcls function called with
+ * a ossControl object which refers to
+ * control table different from one the
+ * PDU was defined in */
+#define TRACE_FILE_ALREADY_OPEN 28 /* the trace file has been opened */
+#define CANT_OPEN_TRACE_FILE 27 /* error when opening a trace file */
+#define LOAD_ERR 26 /* unable to load DLL */
+#define UNIMPLEMENTED 25 /* the type was not implemented yet */
+#define UNAVAIL_ENCRULES 23 /* the encoding rules requested are
+ * not implemented yet or were not
+ * linked because the encoder/decoder
+ * function pointers were not
+ * initialized by a call to ossinit() */
+#define BAD_ENCRULES 22 /* unknown encoding rules set in the
+ * ossGlobal structure */
+#define NULL_FCN 21 /* attempt was made to call the
+ * encoder/decoder via a NULL pointer */
+#define NULL_TBL 20 /* attempt was made to pass a NULL
+ * control table pointer */
+#define ACCESS_SERIALIZATION_ERROR 19 /* error occured during access to
+ * global data in a multi-threaded
+ * environment */
+#define CONSTRAINT_VIOLATED 17 /* constraint violation error occured */
+#define OUT_MEMORY 8 /* memory-allocation error */
+#define BAD_VERSION 7 /* versions of encoder/decoder and
+ * control-table do not match */
+#define PDU_RANGE 3 /* pdu specified out of range */
+#define MORE_BUF 1 /* user-provided outbut buffer
+ * too small */
+
+/*** encoder return codes ***/
+#define COMPARE_CODE_NOT_LINKED 38 /* value compare code was not linked */
+#define COMPARE_DLL_NOT_LINKED 37 /* value compare DLL was not linked */
+#define FRONT_ALIGN_NOT_SUPPORTED 33 /* Front-align encoding is not supported */
+#define INDEFINITE_NOT_SUPPORTED 32 /* BER indefinite-length encoding is
+ * not supported */
+#define FATAL_ERROR 18 /* *serious* error, could not free memory, &etc */
+#define TOO_LONG 16 /* type was longer than shown in SIZE constraint */
+#define BAD_TABLE 15 /* table was bad, but not NULL */
+#define MEM_ERROR 14 /* memory violation signal trapped */
+#define BAD_TIME 12 /* bad value in time type */
+#define BAD_PTR 11 /* unexpected NULL pointer in input buffer */
+#define BAD_OBJID 10 /* object identifier conflicts with x.208 */
+#define BAD_CHOICE 9 /* unknown selector for a choice */
+#define BAD_ARG 6 /* something weird was passed--probably a NULL
+ * pointer */
+#define PDU_ENCODED 0 /* PDU successfully encoded */
+
+/*** decoder return codes ***/
+/* MORE_BUF, BAD_VERSION, OUT_MEMORY, PDU_RANGE and BAD_ARG defined above */
+#define LIMITED 10 /* implementation limit exceeded. eg:
+ * integer value too great */
+#define PDU_MISMATCH 9 /* the PDU tag that the user specified was different
+ * from the tag found in the encoded data */
+#define DATA_ERROR 5 /* an error exists in the encoded data */
+#define MORE_INPUT 4 /* the PDU is not fully decoded, but the end
+ * of the input buffer has been reached */
+#define NEGATIVE_UINTEGER 2 /* the first bit of the encoding is encountered
+ * set to 1 while decoding an unsigned integer */
+#define PDU_DECODED 0 /* PDU successfully decoded */
+
+
+extern int asn1chop; /* 0 means don't truncate strings; non-zero
+ * value means truncate long input strings
+ * (OCTET STRING, BIT STRING, CharacterStrings)
+ * to be asn1chop bytes long. Used by printPDU. */
+
+extern size_t ossblock; /* if > 0, size of largest block to allocate */
+extern size_t ossprefx; /* size of reserved OSAK buffer prefix */
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+extern void *(*mallocp)(size_t p); /* function which allocates memory */
+extern void (*freep)(void *p); /* function which frees memory */
+
+#ifdef EOF
+extern FILE *asn1out;
+
+/* pointer to output function used by printPDU; default to fprintf. */
+extern int (*asn1prnt) (FILE *stream, const char *format, ...);
+#endif
+
+#ifndef storing
+#ifndef coding
+#ifndef OSS_TOED
+#include "ossglobl.h"
+#endif /* not OSS_TOED */
+#endif /* not coding */
+#endif /* not storing */
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(push, ossPacking, 4)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack(1)
+#elif defined(__BORLANDC__) && defined(__MSDOS__)
+#pragma option -a1
+#elif defined(__BORLANDC__) && defined(__WIN32__)
+#pragma option -a4
+#elif defined(__IBMC__)
+#pragma pack(4)
+#endif /* _MSC_VER && _WIN32 */
+
+typedef struct {
+ long length;
+ unsigned char *value;
+} OssBuf;
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(pop, ossPacking)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack()
+#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__))
+#pragma option -a.
+#elif defined(__IBMC__)
+#pragma pack()
+#endif /* _MSC_VER && _WIN32 */
+
+extern int DLL_ENTRY encode(struct ossGlobal *world, int pdunum, void *inbuf,
+ char **outbuf, long *outlen, void *ctl_tbl,
+ unsigned flags, char errmsg[ERR_MSG_LENGTH]);
+
+extern int DLL_ENTRY decode(struct ossGlobal *world, int *pdunum, char **inbuf,
+ long *inlen, void **outbuf, long *outlen, void *ctl_tbl,
+ unsigned flags, char errmsg[ERR_MSG_LENGTH]);
+
+#define PDU_FREED 0
+
+/* returns 0 (PDU_FREED), PDU_RANGE, UNIMPLEMENTED */
+extern int DLL_ENTRY freePDU(struct ossGlobal *world, int pdunum, void *data, void *ctl_tbl);
+extern void DLL_ENTRY freeBUF(struct ossGlobal *world, void *data);
+
+#define PDU_PRINTED 0
+
+/* returns 0 (PDU_PRINTED), PDU_RANGE */
+extern int DLL_ENTRY printPDU(struct ossGlobal *world, int pdunum, void *data, void *ctl_tbl);
+
+
+#define VALUE_COPIED 0
+
+/*returns 0 (VALUE_COPIED), NULL_TBL, PDU_RANGE, BAD_ARG */
+extern int DLL_ENTRY ossCpyValue (struct ossGlobal *world, int pdunum,
+ void *source, void **destination);
+
+#define VALUES_EQUAL 0 /* The values are the same */
+#define VALUES_NOT_EQUAL 1 /* The values are not the same */
+
+/*returns VALUE_EQUAL, VALUES_NOT_EQUAL, NULL_TBL, PDU_RANGE, BAD_ARG */
+extern int DLL_ENTRY ossCmpValue (struct ossGlobal *world, int pdunum,
+ void *originalData, void *copiedData);
+
+#define INITIALIZATION_SUCCESSFUL 0
+
+/* returns 0 (INITIALIZATION_SUCCESSFUL), BAD_TABLE */
+extern int DLL_ENTRY ossinit(struct ossGlobal *world, void *ctl_tbl);
+extern void DLL_ENTRY ossterm(struct ossGlobal *world);
+extern int ossPrint(struct ossGlobal *, const char *, ...);
+
+extern int DLL_ENTRY ossEncode(struct ossGlobal *world,
+ int pdunum,
+ void *input,
+ OssBuf *output);
+
+extern int DLL_ENTRY ossDecode(struct ossGlobal *world,
+ int *pdunum,
+ OssBuf *input,
+ void **output);
+
+extern int DLL_ENTRY ossPrintPDU(struct ossGlobal *world,
+ int pdunum,
+ void *data);
+
+extern int DLL_ENTRY ossFreePDU(struct ossGlobal *world,
+ int pdunum,
+ void *data);
+
+extern void DLL_ENTRY ossFreeBuf(struct ossGlobal *world,
+ void *data);
+
+extern int DLL_ENTRY ossTest(struct ossGlobal *world,
+ int pdunum,
+ void *data);
+
+extern void DLL_ENTRY ossPrintHex(struct ossGlobal *world,
+ char *encodedData,
+ long length);
+
+extern int DLL_ENTRY ossCheckConstraints(struct ossGlobal *world,
+ int pdunum,
+ void *data);
+
+#if !defined(_WINDOWS) && !defined(_DLL) && \
+ !defined(OS2_DLL) && !defined(NETWARE_DLL)
+extern char OSS_PLUS_INFINITY[];
+extern char OSS_MINUS_INFINITY[];
+extern char ossNaN[];
+#endif /* !_WINDOWS && !_DLL && !OS2_DLL && !NETWARE_DLL */
+
+typedef enum {
+ OSS_UNKNOWN_OBJECT,
+ OSS_FILE,
+ OSS_SOCKET
+} OssObjType;
+
+extern void *DLL_ENTRY ossTestObj(struct ossGlobal *world, void *objHndl);
+extern void *DLL_ENTRY ossUnmarkObj(struct ossGlobal *world, void *objHndl);
+extern void *DLL_ENTRY ossMarkObj(struct ossGlobal *world, OssObjType objType,
+ void *object);
+extern void DLL_ENTRY ossFreeObjectStack(struct ossGlobal *world);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN1CODE_H */
diff --git a/public/sdk/inc/asn1hdr.h b/public/sdk/inc/asn1hdr.h
new file mode 100644
index 000000000..0b9810935
--- /dev/null
+++ b/public/sdk/inc/asn1hdr.h
@@ -0,0 +1,151 @@
+#ifndef ASN1HDR
+#define ASN1HDR
+/*****************************************************************************/
+/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/
+/*****************************************************************************/
+
+/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC.
+ * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC.
+ * THIS FILE MAY NOT BE DISTRIBUTED. */
+
+/* @(#)asn1hdr.h: stdtypes.c 5.4 96/04/26 */
+
+/*****************************************************************************/
+/* COMPILER-GENERATED values */
+/*****************************************************************************/
+
+#include <float.h>
+
+
+extern int ossFreeOpenTypeEncoding;
+
+#ifdef __BORLANDC__
+#undef DBL_MAX
+#include <values.h>
+#define DBL_MAX MAXDOUBLE
+#endif
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void*)0)
+#endif
+#endif
+
+#ifndef __cplusplus
+#define _union
+#endif
+
+#ifndef DBL_MAX
+#ifdef HUGE_VAL
+#define DBL_MAX HUGE_VAL
+#else
+#ifdef HUGE
+#define DBL_MAX HUGE
+#endif
+#endif
+#endif
+#ifndef FLT_MAX
+#define FLT_MAX DBL_MAX
+#endif
+
+#ifndef FLT_RADIX
+#ifdef u370
+#define FLT_RADIX 16
+#else
+#define FLT_RADIX 2
+#endif
+#endif
+
+#ifndef LONG_LONG
+#if defined(_WIN32) && defined(_MSC_VER)
+#define LONG_LONG __int64
+#else
+#define LONG_LONG long
+#endif
+#endif
+
+#ifndef ULONG_LONG
+#if defined(_WIN32) && defined(_MSC_VER)
+#define ULONG_LONG unsigned __int64
+#else
+#define ULONG_LONG unsigned long
+#endif
+#endif
+
+#ifndef EXIT_FAILURE
+#define EXIT_FAILURE 1
+#endif
+#ifndef EXIT_SUCCESS
+#define EXIT_SUCCESS 0
+#endif
+
+
+/*****************************************************************************/
+/* COMPILER-GENERATED typedefs */
+/*****************************************************************************/
+
+
+typedef char ossBoolean;
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+typedef char Nulltype;
+
+typedef struct {
+ short year; /* YYYY format when used for GeneralizedTime */
+ /* YY format when used for UTCTime */
+ short month;
+ short day;
+ short hour;
+ short minute;
+ short second;
+ short millisec;
+ short mindiff; /* UTC +/- minute differential */
+ ossBoolean utc; /* TRUE means UTC time */
+} GeneralizedTime;
+
+typedef GeneralizedTime UTCTime;
+
+typedef struct {
+ int pduNum;
+ long length; /* length of encoded */
+ void *encoded;
+ void *decoded;
+} OpenType;
+
+enum MixedReal_kind {OSS_BINARY, OSS_DECIMAL};
+
+typedef struct {
+ enum MixedReal_kind kind;
+ union {
+ double base2;
+ char *base10;
+ } u;
+} MixedReal;
+
+typedef struct ObjectSetEntry {
+ struct ObjectSetEntry *next;
+ void *object;
+} ObjectSetEntry;
+
+#ifndef _OSAK_BUFFER_
+#define _OSAK_BUFFER_
+
+typedef struct osak_buffer {
+ struct osak_buffer *next; /* next element in list */
+ unsigned char *buffer_ptr; /* start of actual buffer */
+ unsigned long int buffer_length; /* size of actual buffer */
+ unsigned char *data_ptr; /* start of user data */
+ unsigned long int data_length; /* length of user data */
+ unsigned long int reserved [4];
+} osak_buffer;
+
+#endif /* #ifndef _OSAK_BUFFER_ */
+
+#endif /* #ifndef ASN1HDR */
diff --git a/public/sdk/inc/asn1util.h b/public/sdk/inc/asn1util.h
new file mode 100644
index 000000000..443e91a62
--- /dev/null
+++ b/public/sdk/inc/asn1util.h
@@ -0,0 +1,181 @@
+/*****************************************************************************/
+/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/
+/*****************************************************************************/
+
+/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC.
+ * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC.
+ * THIS FILE MAY NOT BE DISTRIBUTED. */
+
+/**************************************************************************/
+/* FILE: @(#)asn1util.h 5.4 96/04/23 */
+/* */
+/* function: Support routines definitions for the optimized */
+/* encoder/decoder generated by the OSS ASN.1 Compiler */
+/* */
+/* */
+/* changes: */
+/* 11/16/90 pet created */
+/* */
+/**************************************************************************/
+
+#include "ossdll.h"
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(push, ossPacking, 4)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack(1)
+#elif defined(__BORLANDC__) && defined(__MSDOS__)
+#pragma option -a1
+#elif defined(__BORLANDC__) && defined(__WIN32__)
+#pragma option -a4
+#elif defined(__IBMC__)
+#pragma pack(4)
+#endif /* _MSC_VER && _WIN32 */
+
+/* The _MEM_ARRAY_SIZE size should be such that the size of the encDecVar
+ * field be equal or greater than that of the world->c structure */
+
+#ifdef __hp9000s300
+#define _MEM_ARRAY_SIZE 34
+#endif
+
+#ifdef __alpha
+#ifdef __osf__
+#define _MEM_ARRAY_SIZE 43
+#endif /* __osf__ */
+#endif /* __alpha */
+
+#ifdef _AIX
+#define _MEM_ARRAY_SIZE 52
+#endif
+#ifdef __hp9000s700
+#define _MEM_ARRAY_SIZE 60
+#endif
+
+#ifdef __NeXT__
+#define _MEM_ARRAY_SIZE 66
+#endif
+
+#ifdef VAXC
+#define _MEM_ARRAY_SIZE 78
+#endif
+
+#ifdef __TANDEM
+# ifdef __XMEM
+# ifdef __INT32
+# define _MEM_ARRAY_SIZE 83
+# else /* INT32 */
+# define _MEM_ARRAY_SIZE 84
+# endif /* INT32 */
+# else /* XMEM */
+# define _MEM_ARRAY_SIZE 136
+# endif /* XMEM */
+#endif /* TANDEM */
+
+#ifdef __mips
+# define _MEM_ARRAY_SIZE 70
+#endif /* __mips */
+
+#ifdef _FTX /* Stratus's Fault Tolerant Unix */
+#define _MEM_ARRAY_SIZE 92
+#endif
+#ifndef _MEM_ARRAY_SIZE
+#define _MEM_ARRAY_SIZE 80
+
+#endif
+
+typedef struct _mem_array_ {
+ short _used; /* Next available entry */
+ void *_entry[_MEM_ARRAY_SIZE]; /* Pointers to allocated
+ * memory */
+ struct _mem_array_ *_next; /* Pointer to additional mem_array */
+} _mem_array;
+#if defined(_WINDOWS) || defined(_WIN32)
+ /*
+ * This structure is used as a node to build a linked list of
+ * the addresses of the ossGlobal structures for each copy of
+ * the encoder/decoder run under Windows 3.1 to make the decoder
+ * reentrant when floating point errors occur (see globlist.c)
+ */
+struct globalInfo {
+ /*
+ * It is very important that "next" come first in "globalInfo".
+ * See globlist.c for more info about the code itself
+ */
+ struct globalInfo *next; /* pointer to the next node in the list */
+ struct globalInfo *prev; /* pointer to the previous node */
+ DWORD task; /* process id number */
+ DWORD thread;/* thread id number */
+ struct ossGlobal *world; /* pointer to "ossGlobal" for current task */
+};
+extern BOOL globlist(struct ossGlobal *, struct globalInfo *,
+ struct globalInfo **);
+extern BOOL serializeGlobalAccess(struct ossGlobal *, struct globalInfo *,
+ struct globalInfo **);
+extern struct globalInfo *sigworld;
+#else
+extern struct ossGlobal *sigworld;
+#endif /* _WINDOWS || _WIN32 */
+
+#ifndef _BOOL
+#define _BOOL
+typedef char _Bool;
+#endif
+
+#ifndef _OSSNOANSI
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+extern void *DLL_ENTRY _oss_enc_getmem(struct ossGlobal *g,_Bool _userbuf);
+extern void *DLL_ENTRY _oss_dec_getmem(struct ossGlobal *g,long _size,_Bool _userbuf);
+extern void DLL_ENTRY _oss_enc_push(struct ossGlobal *g,void *_p);
+extern void *DLL_ENTRY _oss_enc_pop(struct ossGlobal *g);
+extern void DLL_ENTRY _oss_freeMem(struct ossGlobal *g,_mem_array *_p);
+extern void DLL_ENTRY _oss_releaseMem(struct ossGlobal *g,_mem_array *_p);
+#define _oss_freeTempMem _oss_releaseMem
+extern void DLL_ENTRY _oss_set_outmem_d(struct ossGlobal *g, long _final_max_len,
+ long *_totalsize, char **_outbuf);
+extern void DLL_ENTRY _oss_set_outmem_i(struct ossGlobal *g,long _final_max_len,
+ long *_totalsize,char **_outbuf);
+extern void DLL_ENTRY _oss_set_outmem_p(struct ossGlobal *g,
+ long *_totalsize,char **_outbuf);
+extern void DLL_ENTRY _oss_set_outmem_pb(struct ossGlobal *g,
+ long *_totalsize, char **_outbuf, unsigned flags);
+extern void _oss_hdl_signal(int _signal);
+extern void DLL_ENTRY _oss_free_creal(struct ossGlobal *g, char *p);
+extern int DLL_ENTRY ossMinit(struct ossGlobal *g);
+#ifdef __cplusplus
+}
+#endif
+
+#else
+extern void *_oss_enc_getmem();
+extern void *_oss_dec_getmem();
+extern void _oss_enc_push();
+extern void *_oss_enc_pop();
+extern void _oss_freeMem();
+extern void _oss_releaseMem();
+#define _oss_freeTempMem _oss_releaseMem
+extern void _oss_set_outmem_d();
+extern void _oss_set_outmem_i();
+extern void _oss_set_outmem_p();
+extern void _oss_set_outmem_pb();
+extern void _oss_free_creal();
+
+extern void _oss_hdl_signal(); /* signal handler */
+
+#endif /* _OSSNOANSI */
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(pop, ossPacking)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack()
+#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__))
+#pragma option -a.
+#elif defined(__IBMC__)
+#pragma pack()
+#endif /* _MSC_VER && _WIN32 */
+
diff --git a/public/sdk/inc/assert.hxx b/public/sdk/inc/assert.hxx
new file mode 100644
index 000000000..213a72375
--- /dev/null
+++ b/public/sdk/inc/assert.hxx
@@ -0,0 +1,31 @@
+///+---------------------------------------------------------------------------
+//
+// File: assert.Hxx
+//
+// Contents: constant definitions for assert.cxx
+//
+// History: 19-Oct-92 HoiV Created.
+//
+// Notes: The reason for this file is that there is no assert.hxx for
+// assert.cxx. All the include files in assert.hxx are so crucial
+// to other projects that we don't want to make you recompile
+// the world to enable something you don't even need if you are
+// not using TOM. This way, only win40\common\misc will need to be
+// rebuilt.
+//
+//----------------------------------------------------------------------------
+
+#ifndef __ASSERT_HXX__
+#define __ASSERT_HXX__
+
+// The following two events are defined for CT TOM trapping of
+// assert popups. (Used in common\src\misc\assert.cxx)
+#define CAIRO_CT_TOM_TRAP_ASSERT_EVENT TEXT("CairoCTTOMTrapAssertEvent")
+#define CAIRO_CT_TOM_THREAD_START_EVENT TEXT("CairoCTTOMThreadStartEvent")
+
+// This is the timeout period waiting for TOM to respond to the
+// TrapAssertEvent. This is to allow the TOM Manager time to issue
+// a CallBack RPC to the dispatcher before the popup.
+#define TWO_MINUTES 120000
+
+#endif /* __ASSERT_HXX__ */
diff --git a/public/sdk/inc/atalkwsh.h b/public/sdk/inc/atalkwsh.h
new file mode 100644
index 000000000..23f034762
--- /dev/null
+++ b/public/sdk/inc/atalkwsh.h
@@ -0,0 +1,197 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ wshatalk.h
+
+Abstract:
+
+ This is the header file for application using Windows Sockets for
+ Appletalk.
+
+Revision History:
+ 10 Jul 1992 Initial Version
+
+--*/
+
+#ifndef _ATALKWSH_
+#define _ATALKWSH_
+
+//
+// All protocol types should be specified in the Decimal base
+//
+
+#define DECIMAL_BASE 10
+
+//
+// Protocol number 0 is invalid in the Appletalk case
+//
+
+#define ATPROTO_BASE (1000 * AF_APPLETALK)
+#define SOL_APPLETALK (ATPROTO_BASE)
+
+#define DDPPROTO_RTMP (ATPROTO_BASE + 1)
+#define DDPPROTO_NBP (ATPROTO_BASE + 2)
+#define DDPPROTO_ATP (ATPROTO_BASE + 3)
+#define DDPPROTO_AEP (ATPROTO_BASE + 4)
+#define DDPPROTO_RTMPRQ (ATPROTO_BASE + 5)
+#define DDPPROTO_ZIP (ATPROTO_BASE + 6)
+#define DDPPROTO_ADSP (ATPROTO_BASE + 7)
+
+#define DDPPROTO_MAX (ATPROTO_BASE + 255)
+
+//
+// Define the higher layer appletalk protocol types
+//
+
+#define ATPROTO_ADSP (DDPPROTO_MAX + 1)
+#define ATPROTO_ATP (DDPPROTO_MAX + 2)
+#define ATPROTO_ASP (DDPPROTO_MAX + 3)
+#define ATPROTO_PAP (DDPPROTO_MAX + 4)
+
+#define SO_REGISTER_NAME 0xA000
+#define SO_DEREGISTER_NAME 0xA001
+#define SO_REMOVE_NAME SO_DEREGISTER_NAME
+#define SO_LOOKUP_NAME 0xA002
+#define SO_CONFIRM_NAME 0xA003
+#define SO_LOOKUP_MYZONE 0xA004
+#define SO_GETMYZONE SO_LOOKUP_MYZONE
+#define SO_LOOKUP_ZONES 0xA005
+#define SO_GETZONELIST SO_LOOKUP_ZONES
+#define SO_LOOKUP_ZONES_ON_ADAPTER 0xA006
+#define SO_GETLOCALZONES SO_LOOKUP_ZONES_ON_ADAPTER
+#define SO_LOOKUP_NETDEF_ON_ADAPTER 0xA007
+#define SO_GETNETINFO SO_LOOKUP_NETDEF_ON_ADAPTER
+
+//
+// PAP-specific options
+//
+
+#define SO_PAP_SET_SERVER_STATUS 0xA007
+#define SO_PAP_GET_SERVER_STATUS 0xA008
+#define SO_PAP_PRIME_READ 0xA009
+
+
+#define ATADDR_ANY 0 // Dynamic socket (=0)
+#define ATADDR_BROADCAST 0xFF // Broadcast node id (=ff)
+
+//
+// Define flags/error codes peculiar to Appletalk
+//
+
+#define WSAEMSGPARTIAL (WSABASEERR+100)
+
+
+// Maximum pap status size
+#define MAX_PAP_STATUS_SIZE 255
+#define MIN_PAP_READ_BUF_SIZE 4096
+
+// These are the unused 4 bytes returned in the PAP status packet. If ever
+// they are to be interpreted, they will be available.
+#define PAP_UNUSED_STATUS_BYTES 4
+
+
+//
+// SOCKADDR_AT structure
+//
+
+typedef struct sockaddr_at
+{
+ USHORT sat_family;
+ USHORT sat_net;
+ UCHAR sat_node;
+ UCHAR sat_socket;
+} SOCKADDR_AT, *PSOCKADDR_AT;
+
+
+//
+// ***WARNING***
+// This is defined to be the same as the ATALK ADDRESS defined in atalktdi.h
+// Change this if the other changes.
+//
+
+typedef union
+{
+ struct
+ {
+ USHORT Network;
+ UCHAR Node;
+ UCHAR Socket;
+ };
+ ULONG Address;
+} WSH_ATALK_ADDRESS, *PWSH_ATALK_ADDRESS;
+
+//
+// Typedefs for the various options
+//
+
+//
+// ***WARNING***:
+// This should be exactly the same as NBP_NAME defined in atalktdi.h
+//
+
+#define MAX_ENTITY 32
+typedef struct
+{
+ CHAR ObjectNameLen;
+ CHAR ObjectName[MAX_ENTITY];
+ CHAR TypeNameLen;
+ CHAR TypeName[MAX_ENTITY];
+ CHAR ZoneNameLen;
+ CHAR ZoneName[MAX_ENTITY];
+} WSH_NBP_NAME, *PWSH_NBP_NAME;
+
+typedef struct
+{
+ WSH_ATALK_ADDRESS Address;
+ USHORT Enumerator;
+ WSH_NBP_NAME NbpName;
+} WSH_NBP_TUPLE, *PWSH_NBP_TUPLE;
+
+typedef WSH_NBP_NAME WSH_REGISTER_NAME, *PWSH_REGISTER_NAME;
+typedef WSH_NBP_NAME WSH_DEREGISTER_NAME, *PWSH_DEREGISTER_NAME;
+typedef WSH_NBP_NAME WSH_REMOVE_NAME, *PWSH_REMOVE_NAME;
+
+typedef struct _WSH_LOOKUP_ZONES
+{
+ ULONG NoZones;
+
+ //
+ // CHAR Zones[] - null separated zones
+ //
+
+} WSH_LOOKUP_ZONES, *PWSH_LOOKUP_ZONES;
+
+typedef struct _WSH_LOOKUP_NETDEF_ON_ADAPTER
+{
+ USHORT NetworkRangeLowerEnd;
+ USHORT NetworkRangeUpperEnd;
+
+ // This will be followed by a null terminated ansi default zone.
+ // PUCHAR DefaultZone[]
+
+} WSH_LOOKUP_NETDEF_ON_ADAPTER , *PWSH_LOOKUP_NETDEF_ON_ADAPTER;
+
+typedef struct _WSH_LOOKUP_NAME
+{
+ WSH_NBP_TUPLE LookupTuple;
+ ULONG NoTuples;
+
+ //
+ // Array of NoTuple WSH_NBP_TUPLEs
+ //
+
+} WSH_LOOKUP_NAME, *PWSH_LOOKUP_NAME;
+
+typedef struct _WSH_PAP_GET_SERVER_STATUS
+{
+ SOCKADDR_AT ServerAddr;
+ UCHAR Reserved[PAP_UNUSED_STATUS_BYTES];
+ UCHAR ServerStatus[MAX_PAP_STATUS_SIZE+1];
+
+} WSH_PAP_GET_SERVER_STATUS, *PWSH_PAP_GET_SERVER_STATUS;
+
+#endif // _ATALKWSH_
+
diff --git a/public/sdk/inc/basetyps.h b/public/sdk/inc/basetyps.h
new file mode 100644
index 000000000..6fdb1985b
--- /dev/null
+++ b/public/sdk/inc/basetyps.h
@@ -0,0 +1,240 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: basetyps.h
+//
+//----------------------------------------------------------------------------
+#if !defined( _BASETYPS_H_ )
+#define _BASETYPS_H_
+
+// Common macros gleamed from COMPOBJ.H
+
+#ifdef __cplusplus
+ #define EXTERN_C extern "C"
+#else
+ #define EXTERN_C extern
+#endif
+
+#ifdef _WIN32
+
+// Win32 doesn't support __export
+
+#define STDMETHODCALLTYPE __stdcall
+#define STDMETHODVCALLTYPE __cdecl
+
+#define STDAPICALLTYPE __stdcall
+#define STDAPIVCALLTYPE __cdecl
+
+#else
+
+#define STDMETHODCALLTYPE __export __stdcall
+#define STDMETHODVCALLTYPE __export __cdecl
+
+#define STDAPICALLTYPE __export __stdcall
+#define STDAPIVCALLTYPE __export __cdecl
+
+#endif
+
+#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
+#define STDAPI_(type) EXTERN_C type STDAPICALLTYPE
+
+#define STDMETHODIMP HRESULT STDMETHODCALLTYPE
+#define STDMETHODIMP_(type) type STDMETHODCALLTYPE
+
+// The 'V' versions allow Variable Argument lists.
+
+#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
+#define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE
+
+#define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE
+#define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE
+
+
+
+
+/****** Interface Declaration ***********************************************/
+
+/*
+ * These are macros for declaring interfaces. They exist so that
+ * a single definition of the interface is simulataneously a proper
+ * declaration of the interface structures (C++ abstract classes)
+ * for both C and C++.
+ *
+ * DECLARE_INTERFACE(iface) is used to declare an interface that does
+ * not derive from a base interface.
+ * DECLARE_INTERFACE_(iface, baseiface) is used to declare an interface
+ * that does derive from a base interface.
+ *
+ * By default if the source file has a .c extension the C version of
+ * the interface declaratations will be expanded; if it has a .cpp
+ * extension the C++ version will be expanded. if you want to force
+ * the C version expansion even though the source file has a .cpp
+ * extension, then define the macro "CINTERFACE".
+ * eg. cl -DCINTERFACE file.cpp
+ *
+ * Example Interface declaration:
+ *
+ * #undef INTERFACE
+ * #define INTERFACE IClassFactory
+ *
+ * DECLARE_INTERFACE_(IClassFactory, IUnknown)
+ * {
+ * // *** IUnknown methods ***
+ * STDMETHOD(QueryInterface) (THIS_
+ * REFIID riid,
+ * LPVOID FAR* ppvObj) PURE;
+ * STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ * STDMETHOD_(ULONG,Release) (THIS) PURE;
+ *
+ * // *** IClassFactory methods ***
+ * STDMETHOD(CreateInstance) (THIS_
+ * LPUNKNOWN pUnkOuter,
+ * REFIID riid,
+ * LPVOID FAR* ppvObject) PURE;
+ * };
+ *
+ * Example C++ expansion:
+ *
+ * struct FAR IClassFactory : public IUnknown
+ * {
+ * virtual HRESULT STDMETHODCALLTYPE QueryInterface(
+ * IID FAR& riid,
+ * LPVOID FAR* ppvObj) = 0;
+ * virtual HRESULT STDMETHODCALLTYPE AddRef(void) = 0;
+ * virtual HRESULT STDMETHODCALLTYPE Release(void) = 0;
+ * virtual HRESULT STDMETHODCALLTYPE CreateInstance(
+ * LPUNKNOWN pUnkOuter,
+ * IID FAR& riid,
+ * LPVOID FAR* ppvObject) = 0;
+ * };
+ *
+ * NOTE: Our documentation says '#define interface class' but we use
+ * 'struct' instead of 'class' to keep a lot of 'public:' lines
+ * out of the interfaces. The 'FAR' forces the 'this' pointers to
+ * be far, which is what we need.
+ *
+ * Example C expansion:
+ *
+ * typedef struct IClassFactory
+ * {
+ * const struct IClassFactoryVtbl FAR* lpVtbl;
+ * } IClassFactory;
+ *
+ * typedef struct IClassFactoryVtbl IClassFactoryVtbl;
+ *
+ * struct IClassFactoryVtbl
+ * {
+ * HRESULT (STDMETHODCALLTYPE * QueryInterface) (
+ * IClassFactory FAR* This,
+ * IID FAR* riid,
+ * LPVOID FAR* ppvObj) ;
+ * HRESULT (STDMETHODCALLTYPE * AddRef) (IClassFactory FAR* This) ;
+ * HRESULT (STDMETHODCALLTYPE * Release) (IClassFactory FAR* This) ;
+ * HRESULT (STDMETHODCALLTYPE * CreateInstance) (
+ * IClassFactory FAR* This,
+ * LPUNKNOWN pUnkOuter,
+ * IID FAR* riid,
+ * LPVOID FAR* ppvObject);
+ * HRESULT (STDMETHODCALLTYPE * LockServer) (
+ * IClassFactory FAR* This,
+ * BOOL fLock);
+ * };
+ */
+
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+//#define interface struct FAR
+#define interface struct
+#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
+#define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method
+#define PURE = 0
+#define THIS_
+#define THIS void
+#define DECLARE_INTERFACE(iface) interface iface
+#define DECLARE_INTERFACE_(iface, baseiface) interface iface : public baseiface
+
+
+
+#else
+
+#define interface struct
+
+#define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE * method)
+#define STDMETHOD_(type,method) type (STDMETHODCALLTYPE * method)
+
+
+
+
+#define PURE
+#define THIS_ INTERFACE FAR* This,
+#define THIS INTERFACE FAR* This
+#ifdef CONST_VTABLE
+#define DECLARE_INTERFACE(iface) typedef interface iface { \
+ const struct iface##Vtbl FAR* lpVtbl; \
+ } iface; \
+ typedef const struct iface##Vtbl iface##Vtbl; \
+ const struct iface##Vtbl
+#else
+#define DECLARE_INTERFACE(iface) typedef interface iface { \
+ struct iface##Vtbl FAR* lpVtbl; \
+ } iface; \
+ typedef struct iface##Vtbl iface##Vtbl; \
+ struct iface##Vtbl
+#endif
+#define DECLARE_INTERFACE_(iface, baseiface) DECLARE_INTERFACE(iface)
+
+#endif
+
+// macros to define byte pattern for a GUID.
+// Example: DEFINE_GUID(GUID_XXX, a, b, c, ...);
+//
+// Each dll/exe must initialize the GUIDs once. This is done in one of
+// two ways. If you are not using precompiled headers for the file(s) which
+// initializes the GUIDs, define INITGUID before including compobj.h. This
+// is how OLE builds the initialized versions of the GUIDs which are included
+// in ole2.lib. The GUIDs in ole2.lib are all defined in the same text
+// segment GUID_TEXT.
+//
+// The alternative (which some versions of the compiler don't handle properly;
+// they wind up with the initialized GUIDs in a data, not a text segment),
+// is to use a precompiled version of compobj.h and then include initguid.h
+// after compobj.h followed by one or more of the guid defintion files.
+
+#ifndef INITGUID
+#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ EXTERN_C const GUID FAR name
+#else
+
+#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ EXTERN_C const GUID name \
+ = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
+#endif // INITGUID
+
+#define DEFINE_OLEGUID(name, l, w1, w2) \
+ DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
+
+#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
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#endif
+
diff --git a/public/sdk/inc/bndctx.h b/public/sdk/inc/bndctx.h
new file mode 100644
index 000000000..dc7a3c20f
--- /dev/null
+++ b/public/sdk/inc/bndctx.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: bndctx.h
+//
+// Contents: Replacement for bndctx.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/bootetfs.h b/public/sdk/inc/bootetfs.h
new file mode 100644
index 000000000..65d3066a9
--- /dev/null
+++ b/public/sdk/inc/bootetfs.h
@@ -0,0 +1,133 @@
+#define ETFSBOOTCODE_SIZE 2048
+
+
+unsigned char EtfsBootCode[] = {
+51,192,142,208,188,0,124,184,192,7,142,216,136,22,29,3,
+106,1,106,0,104,0,16,106,16,106,0,232,103,1,131,196,
+10,184,0,16,142,192,38,161,158,0,163,30,3,38,161,160,
+0,163,32,3,38,161,166,0,163,34,3,38,161,168,0,163,
+36,3,104,0,16,232,4,2,131,196,2,199,6,49,3,25,
+3,198,6,51,3,4,144,198,6,52,3,1,144,232,61,0,
+232,37,2,104,0,16,232,227,1,131,196,2,184,0,16,142,
+192,199,6,49,3,13,3,198,6,51,3,12,144,198,6,52,
+3,0,144,232,23,0,232,255,1,104,0,32,232,189,1,131,
+196,2,138,22,29,3,51,192,104,0,32,80,203,139,14,34,
+3,252,51,219,51,210,139,54,49,3,38,138,23,128,250,0,
+15,132,59,0,139,195,5,33,0,139,248,81,51,201,138,14,
+51,3,243,166,89,15,132,109,0,59,209,15,131,55,0,43,
+202,128,62,53,3,1,15,132,26,0,3,211,139,218,131,227,
+15,81,177,4,211,234,89,140,192,3,194,142,192,235,183,186,
+1,0,235,213,65,198,6,53,3,0,144,235,221,198,6,53,
+3,1,144,235,39,144,131,62,36,3,0,15,132,79,0,131,
+46,36,3,1,3,218,83,81,177,4,211,235,89,140,192,3,
+195,142,192,91,131,227,15,43,209,116,210,74,184,255,255,43,
+194,139,200,233,112,255,128,62,52,3,1,15,132,10,0,38,
+246,71,25,2,117,131,235,10,144,38,246,71,25,2,15,132,
+119,255,160,51,3,38,56,71,32,15,133,108,255,195,190,167,
+2,235,5,190,195,2,235,0,232,9,0,190,225,2,232,3,
+0,251,235,254,172,10,192,15,132,9,0,180,14,187,7,0,
+205,16,235,240,195,85,139,236,83,86,82,80,187,252,2,198,
+7,16,198,71,1,0,198,71,3,0,199,71,4,0,0,199,
+71,12,0,0,199,71,14,0,0,139,70,12,163,38,3,139,
+70,10,163,40,3,139,70,8,163,42,3,139,70,6,163,44,
+3,139,70,4,163,46,3,129,62,40,3,0,0,15,133,25,
+0,129,62,38,3,32,0,15,143,15,0,198,6,12,3,0,
+144,161,38,3,162,48,3,235,13,144,198,6,12,3,1,144,
+198,6,48,3,32,144,160,48,3,136,71,2,161,42,3,137,
+71,6,161,44,3,137,71,8,161,46,3,137,71,10,190,252,
+2,180,66,138,22,29,3,205,19,128,62,12,3,1,15,133,
+34,0,131,46,38,3,32,131,30,40,3,0,129,6,42,3,
+0,16,15,130,45,255,129,6,44,3,32,0,129,22,46,3,
+0,0,235,131,88,90,94,91,139,229,93,195,85,139,236,81,
+83,80,177,11,139,30,36,3,161,34,3,15,173,216,211,235,
+247,6,34,3,255,7,116,6,5,1,0,131,211,0,80,83,
+255,118,4,255,54,30,3,255,54,32,3,232,7,255,131,196,
+10,88,91,89,139,229,93,195,80,38,139,71,2,163,30,3,
+38,139,71,4,163,32,3,38,139,71,10,163,34,3,38,139,
+71,12,163,36,3,88,195,66,79,79,84,58,32,67,111,117,
+108,100,110,39,116,32,102,105,110,100,32,78,84,76,68,82,
+13,10,0,66,79,79,84,58,32,77,101,109,111,114,121,32,
+111,118,101,114,102,108,111,119,32,101,114,114,111,114,13,10,
+0,80,108,101,97,115,101,32,105,110,115,101,114,116,32,97,
+110,111,116,104,101,114,32,100,105,115,107,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,83,69,84,
+85,80,76,68,82,46,66,73,78,73,51,56,54,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,170
+};
diff --git a/public/sdk/inc/bootfat.h b/public/sdk/inc/bootfat.h
new file mode 100644
index 000000000..9ccbd1a4a
--- /dev/null
+++ b/public/sdk/inc/bootfat.h
@@ -0,0 +1,37 @@
+#define FATBOOTCODE_SIZE 512
+
+
+unsigned char FatBootCode[] = {
+235,60,144,77,83,68,79,83,53,46,48,0,2,8,1,0,
+2,0,2,3,81,248,8,0,17,0,4,0,1,0,0,0,
+0,0,0,0,128,0,41,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,70,65,84,32,32,32,32,32,51,192,
+142,208,188,0,124,104,192,7,31,160,16,0,247,38,22,0,
+3,6,14,0,80,145,184,32,0,247,38,17,0,139,30,11,
+0,3,195,72,247,243,3,200,137,14,8,2,104,0,16,7,
+51,219,143,6,19,2,137,30,21,2,14,232,144,0,114,87,
+51,219,139,14,17,0,139,251,81,185,11,0,190,220,1,243,
+166,89,116,5,131,195,32,226,237,227,55,38,139,87,26,82,
+184,1,0,104,0,32,7,51,219,14,232,72,0,114,40,91,
+141,54,11,0,141,62,11,2,30,143,69,2,199,5,245,0,
+30,143,69,6,199,69,4,14,1,138,22,36,0,234,3,0,
+0,32,190,134,1,235,3,190,162,1,232,9,0,190,193,1,
+232,3,0,251,235,254,172,10,192,116,9,180,14,187,7,0,
+205,16,235,242,195,80,74,74,160,13,0,50,228,247,226,3,
+6,8,2,131,210,0,163,19,2,137,22,21,2,88,162,7,
+2,161,19,2,139,22,21,2,3,6,28,0,19,22,30,0,
+247,54,24,0,254,194,136,22,6,2,51,210,247,54,26,0,
+136,22,37,0,163,4,2,161,24,0,42,6,6,2,64,58,
+6,7,2,118,5,160,7,2,50,228,80,180,2,139,14,4,
+2,192,229,6,10,46,6,2,134,233,139,22,36,0,205,19,
+15,131,5,0,131,196,2,249,203,88,40,6,7,2,118,17,
+1,6,19,2,131,22,21,2,0,247,38,11,0,3,216,235,
+144,162,7,2,248,203,66,79,79,84,58,32,67,111,117,108,
+100,110,39,116,32,102,105,110,100,32,78,84,76,68,82,13,
+10,0,66,79,79,84,58,32,73,47,79,32,101,114,114,111,
+114,32,114,101,97,100,105,110,103,32,100,105,115,107,13,10,
+0,80,108,101,97,115,101,32,105,110,115,101,114,116,32,97,
+110,111,116,104,101,114,32,100,105,115,107,0,78,84,76,68,
+82,32,32,32,32,32,32,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,170
+};
diff --git a/public/sdk/inc/boothpfs.h b/public/sdk/inc/boothpfs.h
new file mode 100644
index 000000000..b9ff8c722
--- /dev/null
+++ b/public/sdk/inc/boothpfs.h
@@ -0,0 +1,517 @@
+#define HPFSBOOTCODE_SIZE 8192
+
+
+unsigned char HpfsBootCode[] = {
+235,73,144,73,66,77,32,49,48,46,50,0,2,4,1,0,
+2,0,2,0,0,248,41,0,17,0,4,0,17,0,0,0,
+195,162,0,0,128,0,40,21,156,213,100,67,45,68,82,73,
+86,69,0,0,0,0,72,80,70,83,32,32,32,32,0,0,
+0,0,0,0,0,0,0,0,0,0,0,250,51,192,142,208,
+188,0,124,251,184,192,7,142,216,199,6,62,0,0,0,199,
+6,64,0,0,0,199,6,69,0,20,0,184,0,13,142,192,
+43,219,232,7,0,104,0,13,104,0,2,203,80,83,81,82,
+6,161,62,0,139,22,64,0,3,6,28,0,19,22,30,0,
+247,54,24,0,254,194,136,22,68,0,51,210,247,54,26,0,
+136,22,37,0,163,66,0,161,24,0,42,6,68,0,64,59,
+6,69,0,118,3,161,69,0,80,180,2,139,22,66,0,177,
+6,210,230,10,54,68,0,139,202,134,233,139,22,36,0,205,
+19,88,114,37,1,6,62,0,131,22,64,0,0,41,6,69,
+0,118,11,193,224,5,140,194,3,208,142,194,235,147,7,90,
+89,91,88,195,190,57,1,235,3,190,25,1,232,9,0,190,
+141,1,232,3,0,251,235,254,172,60,0,116,9,180,14,187,
+7,0,205,16,235,242,195,29,0,65,32,100,105,115,107,32,
+114,101,97,100,32,101,114,114,111,114,32,111,99,99,117,114,
+114,101,100,46,13,10,0,41,0,65,32,107,101,114,110,101,
+108,32,102,105,108,101,32,105,115,32,109,105,115,115,105,110,
+103,32,102,114,111,109,32,116,104,101,32,100,105,115,107,46,
+13,10,0,37,0,65,32,107,101,114,110,101,108,32,102,105,
+108,101,32,105,115,32,116,111,111,32,100,105,115,99,111,110,
+116,105,103,117,111,117,115,46,13,10,0,51,0,73,110,115,
+101,114,116,32,97,32,115,121,115,116,101,109,32,100,105,115,
+107,101,116,116,101,32,97,110,100,32,114,101,115,116,97,114,
+116,13,10,116,104,101,32,115,121,115,116,101,109,46,13,10,
+0,5,78,84,76,68,82,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,170,
+140,200,142,216,5,128,2,142,192,140,216,193,224,4,250,139,
+224,251,187,12,32,139,7,163,62,0,139,71,2,163,64,0,
+199,6,69,0,1,0,43,219,232,58,0,38,139,71,72,163,
+27,4,38,139,71,74,163,29,4,190,193,1,161,27,4,163,
+62,0,161,29,4,163,64,0,232,138,0,184,0,32,232,16,
+1,138,22,36,0,184,232,3,142,192,141,54,11,0,43,192,
+104,0,32,80,203,80,83,81,82,6,255,54,69,0,255,54,
+62,0,255,54,64,0,139,195,193,232,4,140,193,3,193,37,
+255,15,45,0,16,247,216,139,14,69,0,193,225,5,81,59,
+193,118,2,139,193,80,193,232,5,163,69,0,232,221,253,88,
+89,43,200,118,11,140,194,3,208,142,194,184,0,16,235,222,
+143,6,64,0,143,6,62,0,143,6,69,0,7,90,89,91,
+88,195,6,83,199,6,69,0,4,0,30,7,187,0,40,232,
+147,255,91,7,195,30,7,232,232,255,43,201,138,12,70,139,
+209,187,20,40,235,5,3,31,232,23,1,139,198,139,202,141,
+127,31,243,166,139,240,117,6,58,87,30,117,1,195,246,71,
+2,4,116,19,3,31,139,71,252,163,62,0,139,71,254,163,
+64,0,232,173,255,235,202,246,71,2,8,116,201,187,0,40,
+246,71,8,1,116,3,233,239,0,161,62,0,163,71,0,161,
+64,0,163,73,0,139,71,12,163,62,0,139,71,14,163,64,
+0,232,126,255,187,20,40,235,2,3,223,139,63,139,65,252,
+59,6,71,0,117,243,139,65,254,59,6,73,0,117,234,235,
+182,80,43,237,139,71,12,163,128,4,139,71,14,163,130,4,
+139,71,4,163,62,0,139,71,6,163,64,0,232,67,255,7,
+190,64,40,187,56,40,246,7,128,117,76,138,79,5,181,0,
+139,68,8,163,62,0,139,68,10,163,64,0,139,68,4,163,
+69,0,83,43,219,232,189,254,91,140,192,193,38,69,0,5,
+3,6,69,0,142,192,131,198,12,226,213,129,62,2,40,228,
+247,116,62,161,8,40,163,62,0,161,10,40,163,64,0,232,
+240,254,94,91,131,198,8,138,71,5,180,0,193,224,3,3,
+195,5,8,0,59,240,115,211,83,86,139,68,4,163,62,0,
+139,68,6,163,64,0,232,201,254,190,20,40,187,12,40,235,
+133,195,138,79,30,50,237,141,127,31,38,128,61,90,118,4,
+38,128,45,32,71,226,243,195,233,217,252,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
diff --git a/public/sdk/inc/bootmbr.h b/public/sdk/inc/bootmbr.h
new file mode 100644
index 000000000..f735c6160
--- /dev/null
+++ b/public/sdk/inc/bootmbr.h
@@ -0,0 +1,37 @@
+#define X86BOOTCODE_SIZE 512
+
+
+unsigned char x86BootCode[] = {
+250,51,192,142,208,188,0,124,139,244,80,7,80,31,251,252,
+191,0,6,185,0,1,243,165,234,29,6,0,0,190,190,7,
+179,4,128,60,128,116,14,128,60,0,117,28,131,198,16,254,
+203,117,239,205,24,139,20,139,76,2,139,238,131,198,16,254,
+203,116,26,128,60,0,116,244,190,139,6,172,60,0,116,11,
+86,187,7,0,180,14,205,16,94,235,240,235,254,191,5,0,
+187,0,124,184,1,2,87,205,19,95,115,12,51,192,205,19,
+79,117,237,190,163,6,235,211,190,194,6,191,254,125,129,61,
+85,170,117,199,139,245,234,0,124,0,0,73,110,118,97,108,
+105,100,32,112,97,114,116,105,116,105,111,110,32,116,97,98,
+108,101,0,69,114,114,111,114,32,108,111,97,100,105,110,103,
+32,111,112,101,114,97,116,105,110,103,32,115,121,115,116,101,
+109,0,77,105,115,115,105,110,103,32,111,112,101,114,97,116,
+105,110,103,32,115,121,115,116,101,109,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,170
+};
diff --git a/public/sdk/inc/bootntfs.h b/public/sdk/inc/bootntfs.h
new file mode 100644
index 000000000..ac6b63ded
--- /dev/null
+++ b/public/sdk/inc/bootntfs.h
@@ -0,0 +1,517 @@
+#define NTFSBOOTCODE_SIZE 8192
+
+
+unsigned char NtfsBootCode[] = {
+235,91,144,78,84,70,83,32,32,32,32,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,250,51,192,
+142,208,188,0,124,251,184,192,7,142,216,199,6,84,0,0,
+0,199,6,86,0,0,0,199,6,91,0,16,0,184,0,13,
+142,192,43,219,232,7,0,104,0,13,104,102,2,203,80,83,
+81,82,6,102,161,84,0,102,3,6,28,0,102,51,210,102,
+15,183,14,24,0,102,247,241,254,194,136,22,90,0,102,139,
+208,102,193,234,16,247,54,26,0,136,22,37,0,163,88,0,
+161,24,0,42,6,90,0,64,59,6,91,0,118,3,161,91,
+0,80,180,2,139,22,88,0,177,6,210,230,10,54,90,0,
+139,202,134,233,138,54,37,0,178,128,205,19,88,114,42,1,
+6,84,0,131,22,86,0,0,41,6,91,0,118,11,193,224,
+5,140,194,3,208,142,194,235,138,7,90,89,91,88,195,190,
+89,1,235,8,190,227,1,235,3,190,57,1,232,9,0,190,
+173,1,232,3,0,251,235,254,172,60,0,116,9,180,14,187,
+7,0,205,16,235,242,195,29,0,65,32,100,105,115,107,32,
+114,101,97,100,32,101,114,114,111,114,32,111,99,99,117,114,
+114,101,100,46,13,10,0,41,0,65,32,107,101,114,110,101,
+108,32,102,105,108,101,32,105,115,32,109,105,115,115,105,110,
+103,32,102,114,111,109,32,116,104,101,32,100,105,115,107,46,
+13,10,0,37,0,65,32,107,101,114,110,101,108,32,102,105,
+108,101,32,105,115,32,116,111,111,32,100,105,115,99,111,110,
+116,105,103,117,111,117,115,46,13,10,0,51,0,73,110,115,
+101,114,116,32,97,32,115,121,115,116,101,109,32,100,105,115,
+107,101,116,116,101,32,97,110,100,32,114,101,115,116,97,114,
+116,13,10,116,104,101,32,115,121,115,116,101,109,46,13,10,
+0,23,0,92,78,84,76,68,82,32,105,115,32,99,111,109,
+112,114,101,115,115,101,100,46,13,10,0,0,0,0,85,170,
+5,0,78,0,84,0,76,0,68,0,82,0,4,0,36,0,
+73,0,51,0,48,0,0,224,0,0,0,48,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,140,200,142,216,193,224,4,250,139,224,
+251,102,15,183,6,11,0,102,15,182,30,13,0,102,247,227,
+102,163,78,2,102,139,14,64,0,128,249,0,15,143,14,0,
+246,217,102,184,1,0,0,0,102,211,224,235,8,144,102,161,
+78,2,102,247,225,102,163,82,2,102,15,183,30,11,0,102,
+51,210,102,247,243,102,163,86,2,232,44,4,102,139,14,74,
+2,102,137,14,34,2,102,3,14,82,2,102,137,14,38,2,
+102,3,14,82,2,102,137,14,42,2,102,3,14,82,2,102,
+137,14,58,2,102,3,14,82,2,102,137,14,66,2,102,184,
+144,0,0,0,102,139,14,34,2,232,65,9,102,11,192,15,
+132,22,254,102,163,46,2,102,184,160,0,0,0,102,139,14,
+38,2,232,40,9,102,163,50,2,102,184,176,0,0,0,102,
+139,14,42,2,232,22,9,102,163,54,2,102,161,46,2,102,
+11,192,15,132,227,253,103,128,120,8,0,15,133,218,253,103,
+102,141,80,16,103,3,66,4,103,102,15,182,72,12,102,137,
+14,94,2,103,102,139,72,8,102,137,14,90,2,102,161,90,
+2,102,15,183,14,11,0,102,51,210,102,247,241,102,163,98,
+2,102,161,66,2,102,3,6,90,2,102,163,70,2,102,131,
+62,50,2,0,15,132,25,0,102,131,62,54,2,0,15,132,
+135,253,102,139,30,54,2,30,7,102,139,62,70,2,232,177,
+1,102,15,183,14,0,2,102,184,2,2,0,0,232,153,6,
+102,11,192,15,132,88,253,103,102,139,0,30,7,102,139,62,
+58,2,232,209,4,102,161,58,2,102,187,128,0,0,0,102,
+185,0,0,0,0,102,186,0,0,0,0,232,203,0,102,11,
+192,15,132,42,253,103,102,15,183,88,12,102,129,227,255,0,
+0,0,15,133,30,253,102,139,216,104,0,32,7,102,43,255,
+232,79,1,138,22,36,0,184,232,3,142,192,141,54,11,0,
+43,192,104,0,32,80,203,80,83,81,82,6,255,54,91,0,
+255,54,84,0,255,54,86,0,139,195,193,232,4,140,193,3,
+193,37,255,15,45,0,16,247,216,139,14,91,0,193,225,5,
+81,59,193,118,2,139,193,80,193,232,5,163,91,0,232,61,
+252,88,89,43,200,118,11,140,194,3,208,142,194,184,0,16,
+235,222,143,6,86,0,143,6,84,0,143,6,91,0,7,90,
+89,91,88,195,6,30,102,96,102,139,218,102,15,182,14,13,
+0,102,247,225,102,163,84,0,102,139,195,102,247,225,163,91,
+0,139,223,131,227,15,140,192,102,193,239,4,3,199,80,7,
+232,116,255,102,97,144,31,7,195,103,3,64,20,103,102,131,
+56,255,15,132,76,0,103,102,57,24,15,133,51,0,102,11,
+201,15,133,10,0,103,128,120,9,0,15,133,35,0,195,103,
+58,72,9,15,133,26,0,102,139,240,103,3,112,10,232,61,
+5,102,81,30,7,102,139,250,243,167,102,89,15,133,1,0,
+195,103,102,131,120,4,0,15,132,7,0,103,102,3,64,4,
+235,171,102,43,192,195,102,139,243,232,18,5,103,102,3,0,
+103,247,64,12,2,0,15,133,52,0,103,102,141,80,16,103,
+58,74,64,15,133,24,0,103,102,141,114,66,232,239,4,102,
+81,30,7,102,139,251,243,167,102,89,15,133,1,0,195,103,
+131,120,8,0,15,132,6,0,103,3,64,8,235,194,102,51,
+192,195,103,128,123,8,0,15,133,28,0,6,30,102,96,103,
+102,141,83,16,103,102,139,10,102,139,243,103,3,114,4,243,
+164,102,97,144,31,7,195,103,102,141,83,16,103,102,139,74,
+8,102,65,102,43,192,232,1,0,195,6,30,102,96,103,128,
+123,8,1,15,132,3,0,233,127,251,102,131,249,0,15,133,
+6,0,102,97,144,31,7,195,102,83,102,80,102,81,102,87,
+6,232,87,3,102,139,209,7,102,95,102,89,102,59,202,15,
+141,3,0,102,139,209,232,171,254,102,43,202,102,139,218,102,
+139,194,102,15,182,22,13,0,102,247,226,102,15,183,22,11,
+0,102,247,226,102,3,248,102,88,102,3,195,102,91,235,170,
+6,30,102,96,103,128,123,8,1,15,132,3,0,233,25,251,
+102,131,249,0,15,133,6,0,102,97,144,31,7,195,102,83,
+102,80,102,81,102,87,6,102,81,102,51,210,102,15,182,14,
+13,0,102,247,241,102,82,232,225,2,102,15,182,30,13,0,
+102,247,227,102,90,102,3,194,102,80,102,15,182,6,13,0,
+102,247,225,102,139,208,102,88,102,89,7,102,95,102,89,102,
+59,202,15,141,3,0,102,139,209,102,163,84,0,137,22,91,
+0,6,30,102,96,139,223,131,227,15,140,192,102,193,239,4,
+3,199,80,7,232,160,253,102,97,144,31,7,102,43,202,102,
+139,218,102,139,194,102,15,183,22,11,0,102,247,226,102,3,
+248,102,88,102,3,195,102,91,233,101,255,6,30,102,96,38,
+103,102,15,183,95,4,38,103,102,15,183,79,6,102,11,201,
+15,132,101,250,102,3,223,102,131,195,2,102,129,199,254,1,
+0,0,102,73,102,11,201,15,132,23,0,38,103,139,3,38,
+103,137,7,102,131,195,2,102,129,199,0,2,0,0,102,73,
+235,226,102,97,144,31,7,195,6,30,102,96,102,184,1,0,
+0,0,102,163,30,2,102,161,26,2,102,3,6,82,2,102,
+163,74,2,102,161,48,0,102,15,182,30,13,0,102,247,227,
+102,163,84,0,102,161,86,2,163,91,0,102,139,30,26,2,
+30,7,232,242,252,102,15,183,251,232,111,255,102,161,26,2,
+102,187,32,0,0,0,102,185,0,0,0,0,102,186,0,0,
+0,0,232,100,253,102,11,192,15,132,87,0,102,139,216,30,
+7,102,139,62,22,2,232,249,253,102,139,30,22,2,103,102,
+129,59,128,0,0,0,15,132,6,0,103,3,91,4,235,238,
+103,102,129,59,128,0,0,0,15,133,39,0,102,83,103,102,
+139,67,16,102,139,62,74,2,30,7,232,9,1,102,91,102,
+161,82,2,102,1,6,74,2,102,255,6,30,2,103,3,91,
+4,235,205,102,97,144,31,7,195,102,139,208,102,139,14,30,
+2,102,161,26,2,102,82,102,80,102,81,102,82,102,187,128,
+0,0,0,102,185,0,0,0,0,102,186,0,0,0,0,232,
+215,252,102,11,192,15,132,64,249,102,139,216,102,88,232,42,
+1,102,11,192,15,132,7,0,102,91,102,91,102,91,195,102,
+89,102,88,102,90,102,3,6,82,2,226,185,102,51,192,195,
+6,30,102,96,102,80,102,81,102,51,210,102,15,182,30,13,
+0,102,247,243,102,82,232,144,255,102,11,192,15,132,249,248,
+102,15,182,30,13,0,102,247,227,102,90,102,3,194,102,163,
+84,0,102,89,102,15,182,30,13,0,102,59,203,15,142,19,
+0,137,30,91,0,102,43,203,102,88,102,3,195,102,80,102,
+81,235,20,144,102,88,102,3,193,102,80,137,14,91,0,102,
+185,0,0,0,0,102,81,6,102,87,139,223,131,227,15,140,
+192,102,193,239,4,3,199,80,7,232,155,251,102,95,7,102,
+3,62,78,2,102,89,102,88,102,131,249,0,15,143,116,255,
+102,97,144,31,7,195,6,30,102,96,102,247,38,86,2,102,
+139,14,86,2,232,89,255,232,241,253,102,97,144,31,7,195,
+6,30,102,96,102,247,38,98,2,102,139,30,50,2,102,139,
+14,98,2,30,7,102,139,62,66,2,232,35,253,232,203,253,
+102,97,144,31,7,195,102,80,102,83,102,81,102,139,30,70,
+2,102,139,200,102,193,232,3,102,131,225,7,102,3,216,102,
+184,1,0,0,0,102,211,224,103,132,3,15,132,4,0,248,
+235,2,144,249,102,89,102,91,102,88,195,103,128,123,8,1,
+15,132,4,0,102,43,192,195,103,102,141,115,16,103,102,139,
+86,8,102,59,194,15,135,11,0,103,102,139,22,102,59,194,
+15,131,4,0,102,43,192,195,103,3,94,16,102,43,246,103,
+128,59,0,15,132,62,0,232,129,0,102,3,241,232,57,0,
+102,3,202,102,59,193,15,140,33,0,102,139,209,102,80,103,
+102,15,182,11,102,139,193,102,131,224,15,102,193,233,4,102,
+3,217,102,3,216,102,67,102,88,235,196,102,43,200,102,43,
+194,102,3,198,195,102,43,192,195,102,43,201,103,138,11,128,
+225,15,102,131,249,0,15,133,4,0,102,43,201,195,102,83,
+102,82,102,3,217,103,102,15,190,19,102,73,102,75,102,131,
+249,0,15,132,13,0,102,193,226,8,103,138,19,102,75,102,
+73,235,235,102,139,202,102,90,102,91,195,102,83,102,82,102,
+43,210,103,138,19,102,131,226,15,102,43,201,103,138,11,192,
+233,4,102,131,249,0,15,133,8,0,102,43,201,102,90,102,
+91,195,102,3,218,102,3,217,103,102,15,190,19,102,73,102,
+75,102,131,249,0,15,132,13,0,102,193,226,8,103,138,19,
+102,75,102,73,235,235,102,139,202,102,90,102,91,195,102,11,
+201,15,133,1,0,195,102,81,102,86,103,131,62,97,15,140,
+12,0,103,131,62,122,15,143,4,0,103,131,46,32,102,131,
+198,2,226,230,102,94,102,89,195,102,80,102,81,102,139,208,
+102,161,46,2,103,102,141,88,16,103,3,67,4,103,102,141,
+64,16,102,139,218,232,158,250,102,11,192,15,132,5,0,102,
+89,102,89,195,102,161,50,2,102,11,192,15,133,8,0,102,
+89,102,89,102,51,192,195,102,139,22,50,2,103,102,141,82,
+16,103,102,139,66,8,102,64,102,139,30,78,2,102,247,227,
+102,51,210,102,247,54,90,2,102,80,102,88,102,11,192,15,
+132,48,0,102,72,102,80,232,28,254,114,238,232,241,253,102,
+90,102,89,102,91,102,83,102,81,102,82,102,161,66,2,103,
+102,141,64,24,232,47,250,102,11,192,116,206,102,89,102,89,
+102,89,195,102,89,102,89,102,51,192,195,6,30,102,96,102,
+139,54,66,2,102,185,32,0,0,0,102,247,193,3,0,0,
+0,15,133,3,0,232,13,0,102,173,232,105,0,226,235,102,
+97,144,31,7,195,6,30,102,96,102,51,192,102,51,219,176,
+13,180,14,187,7,0,205,16,176,10,180,14,187,7,0,205,
+16,102,97,144,31,7,195,6,30,102,96,102,11,201,15,133,
+9,0,232,208,255,102,97,144,31,7,195,102,51,192,102,51,
+219,173,180,14,187,7,0,205,16,226,240,232,183,255,102,97,
+144,31,7,195,96,172,60,0,116,9,180,14,187,7,0,205,
+16,235,242,97,144,195,6,30,102,96,102,185,8,0,0,0,
+102,139,208,102,131,226,15,102,82,102,193,232,4,226,241,102,
+185,8,0,0,0,102,88,102,131,248,9,15,143,7,0,102,
+131,192,48,235,9,144,102,131,232,10,102,131,192,65,102,51,
+219,180,14,187,7,0,205,16,226,219,176,32,180,14,187,7,
+0,205,16,102,97,144,31,7,232,96,0,195,6,30,102,96,
+102,190,22,13,0,0,232,79,245,102,97,144,31,7,195,6,
+30,102,96,102,190,38,13,0,0,232,60,245,102,97,144,31,
+7,195,6,30,102,96,102,190,54,13,0,0,232,41,245,102,
+97,144,31,7,195,6,30,102,96,102,190,70,13,0,0,232,
+22,245,102,97,144,31,7,195,6,30,102,96,102,190,86,13,
+0,0,232,3,245,102,97,144,31,7,195,102,80,102,184,0,
+0,245,255,102,64,102,11,192,117,249,102,88,195,102,81,102,
+80,102,184,5,0,0,0,30,7,102,139,249,232,71,252,102,
+139,193,102,91,102,83,102,15,183,14,12,2,102,186,14,2,
+0,0,232,68,248,102,91,102,89,102,11,192,15,133,47,0,
+102,139,193,102,139,203,102,80,102,83,232,35,0,102,91,102,
+95,102,11,192,15,132,23,0,30,7,232,9,252,102,139,199,
+102,15,183,14,12,2,102,186,14,2,0,0,232,10,248,195,
+102,81,102,187,32,0,0,0,102,185,0,0,0,0,102,186,
+0,0,0,0,232,242,247,102,11,192,15,132,82,0,102,139,
+216,30,7,102,139,62,22,2,232,135,248,30,7,102,139,30,
+22,2,102,89,38,102,57,15,15,132,46,0,38,102,131,63,
+255,15,132,45,0,38,131,127,4,0,15,132,36,0,38,102,
+15,183,71,4,3,216,139,195,37,0,128,116,215,140,192,5,
+0,8,142,192,129,227,255,127,235,202,38,102,139,71,16,195,
+102,89,102,51,192,195,68,101,98,117,103,32,80,111,105,110,
+116,32,48,13,10,0,68,101,98,117,103,32,80,111,105,110,
+116,32,49,13,10,0,68,101,98,117,103,32,80,111,105,110,
+116,32,50,13,10,0,68,101,98,117,103,32,80,111,105,110,
+116,32,51,13,10,0,68,101,98,117,103,32,80,111,105,110,
+116,32,52,13,10,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
diff --git a/public/sdk/inc/bootofs.h b/public/sdk/inc/bootofs.h
new file mode 100644
index 000000000..f62042bdb
--- /dev/null
+++ b/public/sdk/inc/bootofs.h
@@ -0,0 +1,261 @@
+#define OFSBOOTCODE_SIZE 4096
+
+
+unsigned char OfsBootCode[] = {
+235,81,0,79,70,83,32,32,32,32,32,0,0,0,0,0,
+0,0,0,0,0,248,0,0,32,0,64,0,32,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,192,31,10,0,0,0,0,0,
+0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,
+0,0,0,250,140,200,142,208,188,0,124,251,184,192,7,142,
+216,199,6,74,0,0,0,199,6,76,0,0,0,199,6,78,
+0,8,0,184,0,16,142,192,43,219,232,7,0,104,0,16,
+104,86,2,203,80,83,81,82,6,102,161,74,0,102,3,6,
+28,0,102,51,210,102,15,183,14,24,0,102,247,241,254,194,
+136,22,82,0,102,139,208,102,193,234,16,247,54,26,0,136,
+22,73,0,163,80,0,161,24,0,42,6,82,0,64,59,6,
+78,0,118,3,161,78,0,80,180,2,139,22,80,0,177,6,
+210,230,10,54,82,0,139,202,134,233,139,22,72,0,205,19,
+88,114,42,1,6,74,0,131,22,76,0,0,41,6,78,0,
+118,11,193,224,5,140,194,3,208,142,194,235,140,7,90,89,
+91,88,195,190,77,1,235,8,190,121,1,235,3,190,45,1,
+232,9,0,190,154,1,232,3,0,251,235,254,172,60,0,116,
+9,180,14,187,7,0,205,16,235,242,195,29,0,65,32,100,
+105,115,107,32,114,101,97,100,32,101,114,114,111,114,32,111,
+99,99,117,114,114,101,100,46,13,10,0,41,0,65,32,107,
+101,114,110,101,108,32,102,105,108,101,32,105,115,32,109,105,
+115,115,105,110,103,32,102,114,111,109,32,116,104,101,32,100,
+105,115,107,46,13,10,0,30,0,70,105,108,101,32,115,121,
+115,116,101,109,32,97,112,112,101,97,114,115,32,99,111,114,
+114,117,112,116,46,13,10,0,51,0,73,110,115,101,114,116,
+32,97,32,115,121,115,116,101,109,32,100,105,115,107,101,116,
+116,101,32,97,110,100,32,114,101,115,116,97,114,116,13,10,
+116,104,101,32,115,121,115,116,101,109,46,13,10,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,170,
+5,0,78,0,84,0,76,0,68,0,82,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,250,140,200,142,208,188,240,127,251,142,
+216,142,192,232,170,3,138,22,72,0,184,232,3,142,192,141,
+54,11,0,43,192,104,0,32,80,203,80,83,81,82,6,255,
+54,78,0,255,54,74,0,255,54,76,0,139,195,193,232,4,
+140,193,3,193,37,255,15,45,0,16,247,216,139,14,78,0,
+193,225,5,81,59,193,118,2,139,193,80,193,232,5,163,78,
+0,232,208,253,88,89,43,200,118,11,140,194,3,208,142,194,
+184,0,16,235,222,143,6,76,0,143,6,74,0,143,6,78,
+0,7,90,89,91,88,195,200,0,0,0,83,6,139,94,4,
+142,70,6,232,148,255,7,91,201,195,6,30,102,96,190,250,
+2,232,40,254,102,97,144,31,7,195,68,101,98,117,103,32,
+80,111,105,110,116,32,48,13,10,0,6,30,102,96,190,74,
+3,232,8,254,102,97,144,31,7,195,6,30,102,96,190,90,
+3,232,248,253,102,97,144,31,7,195,6,30,102,96,190,106,
+3,232,232,253,102,97,144,31,7,195,6,30,102,96,190,122,
+3,232,216,253,102,97,144,31,7,195,68,101,98,117,103,32,
+80,111,105,110,116,32,49,13,10,0,68,101,98,117,103,32,
+80,111,105,110,116,32,50,13,10,0,68,101,98,117,103,32,
+80,111,105,110,116,32,51,13,10,0,68,101,98,117,103,32,
+80,111,105,110,116,32,52,13,10,0,3,195,195,144,3,195,
+195,144,139,200,139,218,45,1,0,131,218,0,35,200,35,218,
+11,217,117,4,176,1,195,144,42,192,195,144,200,4,0,0,
+82,80,199,70,252,1,0,199,70,254,0,0,139,70,248,139,
+86,250,57,86,254,119,15,114,5,57,70,252,115,8,209,102,
+252,209,86,254,235,230,139,70,252,139,86,254,201,195,200,2,
+0,0,80,83,209,224,3,216,137,94,254,235,10,144,59,94,
+254,115,12,131,70,250,2,139,94,250,131,63,0,117,239,139,
+70,252,139,78,254,43,203,209,249,43,193,201,195,144,139,200,
+139,218,45,1,0,131,218,0,35,193,35,211,209,234,209,216,
+195,144,87,86,139,240,139,250,232,227,255,209,224,209,210,51,
+198,51,215,94,95,195,85,139,236,209,224,209,210,3,70,4,
+19,86,6,201,194,4,0,144,36,254,61,66,83,117,3,176,
+1,195,42,192,195,144,137,7,137,87,2,199,71,4,1,0,
+195,144,139,200,138,196,139,208,138,194,138,225,195,144,86,139,
+200,139,194,139,241,232,234,255,139,200,139,198,139,241,232,225,
+255,139,208,139,198,94,195,144,199,7,84,83,137,71,2,195,
+247,71,2,0,128,116,5,176,1,235,3,144,42,192,10,192,
+116,4,184,255,255,195,139,7,195,144,200,2,0,0,137,94,
+254,247,71,2,0,128,116,4,176,1,235,2,42,192,10,192,
+116,6,139,70,254,201,195,144,139,71,2,3,195,5,4,0,
+201,195,128,206,128,137,7,137,87,2,195,144,139,7,139,87,
+2,128,230,127,195,144,137,7,137,87,2,195,200,2,0,0,
+61,255,255,116,13,3,194,5,3,0,36,252,137,70,254,235,
+24,144,128,63,9,117,13,139,194,5,3,0,36,252,5,4,
+0,235,233,144,199,70,254,48,0,139,70,254,5,4,0,201,
+195,144,86,139,240,209,230,139,64,8,3,195,5,8,0,94,
+195,144,139,71,6,43,71,2,45,8,0,43,210,195,139,71,
+4,209,224,43,210,195,141,71,4,195,141,71,4,195,139,71,
+6,3,195,195,200,4,0,0,137,94,252,247,71,2,0,128,
+116,4,176,1,235,2,42,192,10,192,116,28,139,94,252,138,
+71,4,36,15,60,9,117,6,139,71,6,235,14,144,199,70,
+254,48,0,139,70,254,201,195,139,71,2,137,70,254,139,70,
+254,201,195,144,138,71,1,36,1,60,1,26,192,254,192,117,
+8,138,7,36,15,60,5,117,3,176,1,195,42,192,195,144,
+138,71,1,36,32,60,1,26,192,254,192,195,138,71,1,36,
+32,60,1,26,192,254,192,195,232,191,253,139,216,128,15,1,
+195,144,138,7,36,1,60,1,26,192,254,192,195,144,138,103,
+1,37,0,1,61,1,0,26,192,254,192,195,138,103,1,37,
+0,2,61,1,0,26,192,254,192,195,128,79,1,2,137,71,
+2,195,246,71,1,2,116,4,139,71,2,195,43,192,195,144,
+200,26,0,0,86,199,70,250,6,0,199,70,252,0,0,43,
+192,163,32,80,163,2,80,160,13,0,42,228,137,70,238,235,
+8,144,209,126,238,255,6,32,80,131,126,238,1,127,243,161,
+11,0,137,70,238,235,8,144,209,126,238,255,6,2,80,131,
+126,238,1,127,243,138,14,2,80,184,0,16,211,248,163,0,
+80,199,70,238,0,0,138,102,238,192,228,4,42,192,5,0,
+48,139,94,238,139,203,209,227,3,217,193,227,2,137,135,8,
+80,198,135,18,80,0,43,192,137,135,16,80,137,135,14,80,
+255,70,238,131,126,238,2,124,205,80,80,80,255,54,0,80,
+30,104,0,32,161,56,0,139,22,58,0,232,132,2,187,0,
+32,137,94,248,232,243,7,187,40,32,137,94,254,184,4,0,
+153,232,28,7,137,70,236,11,192,116,53,139,216,129,127,4,
+84,83,117,44,129,127,6,160,0,118,37,190,8,0,3,240,
+139,68,6,11,68,4,116,24,131,124,4,255,117,6,131,124,
+6,255,116,12,139,68,4,139,84,6,137,70,250,137,86,252,
+139,94,254,184,1,0,153,232,214,6,137,70,236,139,94,248,
+129,127,36,66,67,117,8,139,71,34,11,71,32,116,7,232,
+230,249,94,201,195,144,139,94,254,139,71,6,11,71,4,117,
+238,131,126,236,0,116,232,139,94,236,131,195,4,137,94,246,
+129,63,76,83,117,217,139,71,4,139,87,6,138,14,32,80,
+10,201,116,8,209,224,209,210,254,201,117,248,43,6,0,80,
+131,218,0,137,70,232,137,86,234,131,70,246,24,199,70,248,
+0,16,139,70,250,139,86,252,177,12,42,14,2,80,116,8,
+209,224,209,210,254,201,117,248,137,70,242,137,86,244,233,164,
+0,144,138,31,131,227,31,138,135,244,14,42,228,3,70,254,
+139,216,131,63,1,117,17,131,127,2,0,117,11,138,79,13,
+42,237,59,14,0,2,116,40,139,94,254,139,71,2,1,70,
+254,139,70,248,128,196,16,59,70,254,118,54,139,94,254,139,
+7,139,200,246,196,2,117,224,246,193,128,117,181,235,217,144,
+131,195,14,232,104,6,10,192,116,206,139,94,254,184,129,0,
+153,232,236,5,137,70,236,11,192,116,3,233,138,0,233,30,
+255,144,131,126,252,0,117,6,131,126,250,6,118,28,199,70,
+250,6,0,199,70,252,0,0,184,6,0,177,12,42,14,2,
+80,211,224,153,137,70,242,137,86,244,161,0,80,43,210,1,
+70,242,17,86,244,139,70,242,139,86,244,57,86,234,114,66,
+119,5,57,70,232,114,59,106,0,255,54,0,80,30,104,0,
+16,106,0,106,0,139,94,246,232,197,1,141,30,0,16,232,
+72,6,139,94,248,129,127,36,66,67,116,10,129,127,36,66,
+70,116,3,233,169,254,139,195,5,40,0,137,70,254,233,64,
+255,144,232,126,248,94,201,195,139,216,131,195,4,137,94,246,
+129,63,76,83,116,3,233,134,254,139,71,14,11,71,12,116,
+3,233,123,254,43,192,137,70,234,137,70,232,235,8,131,70,
+232,1,131,86,234,0,57,70,234,117,35,131,126,232,2,115,
+29,139,94,232,139,195,209,227,3,216,193,227,2,198,135,18,
+80,0,43,192,137,135,16,80,137,135,14,80,235,208,139,94,
+246,139,71,8,139,87,10,163,4,80,137,22,6,80,161,11,
+0,43,210,3,71,8,19,87,10,45,1,0,131,218,0,138,
+14,2,80,10,201,116,8,209,234,209,216,254,201,117,248,137,
+70,232,137,86,234,82,80,104,0,32,104,0,0,106,0,106,
+0,131,70,246,24,139,94,246,43,192,153,232,242,0,94,201,
+195,144,200,10,0,0,87,86,139,240,139,250,232,207,250,137,
+70,246,137,86,248,139,198,139,215,232,214,250,138,14,32,80,
+10,201,116,8,209,224,209,210,254,201,117,248,43,70,12,27,
+86,14,137,70,250,137,86,252,139,70,246,139,86,248,138,14,
+32,80,10,201,116,8,209,224,209,210,254,201,117,248,3,70,
+12,19,86,14,163,74,0,137,22,76,0,139,70,8,139,86,
+10,57,86,252,119,19,114,5,57,70,250,115,12,139,70,250,
+139,86,252,137,70,8,137,86,10,137,70,250,137,86,252,131,
+126,10,0,117,6,131,126,8,0,116,89,139,70,8,139,86,
+10,11,210,117,5,61,64,0,118,5,43,210,184,64,0,137,
+70,254,163,78,0,255,118,6,255,118,4,232,249,248,139,70,
+254,43,210,41,70,8,25,86,10,1,6,74,0,17,22,76,
+0,138,14,2,80,10,201,116,8,209,224,209,210,254,201,117,
+248,43,219,139,200,1,78,4,19,218,185,12,0,211,227,1,
+94,6,235,155,139,70,250,139,86,252,94,95,201,194,12,0,
+200,30,0,0,82,80,83,87,86,184,1,0,138,14,32,80,
+211,224,72,153,137,70,232,137,86,234,129,63,84,83,116,3,
+233,9,1,139,195,3,95,2,141,79,4,137,78,238,5,4,
+0,137,70,236,131,126,14,0,117,9,131,126,12,0,117,3,
+233,118,3,139,70,222,139,86,224,138,14,32,80,10,201,116,
+8,209,234,209,216,254,201,117,248,137,70,252,137,86,254,139,
+70,236,57,70,238,118,31,139,216,139,71,4,139,87,6,232,
+144,249,139,94,236,3,7,19,87,2,59,86,254,114,41,119,
+5,59,70,252,118,34,139,70,252,139,86,254,139,94,236,57,
+87,2,118,3,233,31,3,114,7,57,7,118,3,233,22,3,
+57,94,238,119,9,233,14,3,131,70,236,8,235,177,139,70,
+222,139,86,224,35,70,232,35,86,234,139,55,139,127,2,138,
+14,32,80,10,201,116,8,209,230,209,215,254,201,117,248,43,
+198,27,215,3,70,252,19,86,254,82,80,255,118,14,255,118,
+12,255,118,10,255,118,8,139,71,4,139,87,6,232,34,254,
+137,70,244,137,86,246,41,70,12,25,86,14,138,14,2,80,
+10,201,116,8,209,224,209,210,254,201,117,248,43,219,139,200,
+1,78,8,19,218,185,12,0,211,227,1,94,10,139,70,244,
+139,86,246,1,70,222,17,86,224,233,8,255,129,63,76,83,
+116,3,233,129,2,131,126,6,0,116,3,233,120,2,131,126,
+4,2,114,3,233,111,2,139,94,4,139,195,209,227,3,216,
+193,227,2,139,135,8,80,137,70,230,139,70,222,139,86,224,
+138,14,32,80,10,201,116,8,209,234,209,216,254,201,117,248,
+137,70,252,137,86,254,128,191,18,80,0,116,31,59,151,16,
+80,114,25,119,6,59,135,14,80,114,17,139,135,10,80,139,
+151,12,80,137,70,240,137,86,242,233,168,0,43,192,137,70,
+250,137,70,248,137,70,242,137,70,240,139,94,4,139,195,209,
+227,3,216,193,227,2,198,135,18,80,0,43,192,137,135,16,
+80,137,135,14,80,131,126,14,0,117,9,131,126,12,0,117,
+3,233,229,1,106,0,255,54,0,80,30,255,118,230,139,70,
+4,139,86,6,5,1,0,131,210,0,82,80,139,94,220,131,
+195,24,139,70,240,139,86,242,232,5,254,139,94,230,232,137,
+2,139,94,230,129,63,68,83,116,3,233,169,1,129,127,2,
+69,66,116,3,233,159,1,139,70,248,139,86,250,139,94,4,
+139,203,209,227,3,217,193,227,2,137,135,14,80,137,151,16,
+80,139,70,240,139,86,242,137,135,10,80,137,151,12,80,198,
+135,18,80,1,139,94,4,139,195,209,227,3,216,193,227,2,
+139,135,14,80,139,151,16,80,137,70,248,137,86,250,161,0,
+80,43,210,1,70,240,17,86,242,139,94,230,139,71,20,193,
+224,3,3,216,131,195,32,137,94,238,139,70,230,5,32,0,
+137,70,236,131,126,14,0,117,6,131,126,12,0,116,98,139,
+70,222,139,86,224,138,14,32,80,10,201,116,8,209,234,209,
+216,254,201,117,248,137,70,252,137,86,254,139,70,236,57,70,
+238,118,37,139,216,139,71,4,139,87,6,232,68,247,139,94,
+236,3,7,19,87,2,3,70,248,19,86,250,59,86,254,114,
+95,119,5,59,70,252,118,88,139,70,252,139,86,254,139,94,
+236,57,87,2,119,11,114,4,57,7,119,5,57,94,238,119,
+71,139,94,230,139,71,20,193,224,3,3,216,139,71,28,139,
+87,30,139,243,232,251,246,139,76,24,139,92,26,139,118,4,
+139,254,209,230,3,247,193,230,2,3,140,14,80,19,156,16,
+80,3,193,19,211,137,70,248,137,86,250,233,151,254,144,144,
+131,70,236,8,233,116,255,144,43,7,27,87,2,43,70,248,
+27,86,250,138,14,32,80,10,201,116,8,209,224,209,210,254,
+201,117,248,139,78,222,139,118,224,35,78,232,35,118,234,3,
+193,19,214,82,80,255,118,14,255,118,12,255,118,10,255,118,
+8,139,71,4,139,87,6,232,152,251,137,70,244,137,86,246,
+41,70,12,25,86,14,138,14,2,80,10,201,116,8,209,224,
+209,210,254,201,117,248,43,219,139,200,1,78,8,19,218,185,
+12,0,211,227,1,94,10,139,70,244,139,86,246,1,70,222,
+17,86,224,233,205,254,232,47,243,94,95,201,194,12,0,144,
+200,6,0,0,82,80,139,195,3,95,2,137,94,254,139,216,
+139,31,139,203,131,227,31,138,151,244,14,42,246,3,194,137,
+70,252,246,193,128,116,58,139,216,138,79,13,42,237,209,225,
+3,193,5,14,0,5,3,0,36,252,137,70,252,235,34,144,
+139,216,246,7,1,117,34,138,79,1,42,237,43,210,59,78,
+246,117,5,59,86,248,116,19,139,94,252,139,71,2,1,70,
+252,139,70,252,57,70,254,119,215,43,192,201,195,144,200,8,
+0,0,83,199,70,250,2,2,43,192,137,70,254,137,70,252,
+235,30,139,7,139,94,250,57,7,116,5,42,192,201,195,144,
+131,70,250,2,131,70,246,2,131,70,252,1,131,86,254,0,
+161,0,2,43,210,59,86,254,114,28,119,5,59,70,252,118,
+21,139,94,246,131,63,97,114,201,131,63,122,119,196,139,7,
+45,32,0,235,191,144,176,1,201,195,200,8,0,0,86,137,
+94,254,141,135,0,2,137,70,248,199,70,250,1,0,199,70,
+252,0,0,235,9,144,131,70,250,1,131,86,252,0,131,126,
+252,0,117,28,131,126,250,8,115,22,139,118,250,209,230,139,
+94,254,139,64,4,139,94,248,128,70,249,2,137,7,235,214,
+94,201,195,144,8,12,12,16,28,32,32,36,16,20,20,24,
+36,40,40,44,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
diff --git a/public/sdk/inc/caiseapi.h b/public/sdk/inc/caiseapi.h
new file mode 100644
index 000000000..87e987063
--- /dev/null
+++ b/public/sdk/inc/caiseapi.h
@@ -0,0 +1,386 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: CAIROSEAPI.H
+//
+// Contents: This file contains the stuff to be merged with ntseapi.h
+// after Daytona ships.
+//
+// This file contains the CAIROSID structure to
+// be used by Cairo interchangebly with the NT SID structure.
+// Also included is the planned Cairo SID structure to
+// be used when the SID revision is changed. This change
+// will not occur until after Daytona ships because of the
+// extent of the kernel changes required.
+// The same is true of the ACE structure; there is a current
+// Cairo version, and, commented out, the planned Cairo
+// version when the ACL revision is changed.
+//
+// History: 7/94 davemont created
+//
+//--------------------------------------------------------------------------
+#include <nt.h>
+
+#if !defined( __CAIROSEAPI_H__ )
+#define __CAIROSEAPI_H__
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Cairo Security Id (CAIROSID) //
+// //
+////////////////////////////////////////////////////////////////////////
+//
+//
+// Pictorially the structure of an Cairo SID is as follows:
+//
+// 1 1 1 1 1 1
+// 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+// +---------------------------------------------------------------+
+// | SubAuthorityCount = 10 |Reserved1 (SBZ)| Revision |
+// +---------------------------------------------------------------+
+// | IdentifierAuthority[0,1] |
+// +---------------------------------------------------------------+
+// | IdentifierAuthority[2,3] |
+// +---------------------------------------------------------------+
+// | IdentifierAuthority[4,5] = 5 |
+// +---------------------------------------------------------------+
+// | |
+// +- - SubAuthority[0] = SECURITY_NT2_NON_UNIQUE = 16 - - - - -+
+// | |
+// +---------------------------------------------------------------+
+// | |
+// +- - SubAuthority[1] = SECURITY_NT2_REVISION_RID = 0 - - - -+
+// | |
+// +---------------------------------------------------------------+
+// | |
+// +- - - - - - - - Domain ID - - - - - - - - - - -+
+// | |
+// +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
+// | |
+// +- - - - - - - - - - - - - - - - - - - - - -+
+// | |
+// +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
+// | |
+// +- - - - - - - - - - - - - - - - - - - - - -+
+// | |
+// +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
+// | |
+// +- - - - - - - - - - - - - - - - - - - - - -+
+// | |
+// +---------------------------------------------------------------+
+// | |
+// +- - - - - - - - Rid - - - - - - - - - - - - -+
+// | |
+// +---------------------------------------------------------------+
+//
+//
+//
+#define CAIROSID_SUBAUTHORITY_COUNT 7
+#define SECURITY_NT2_NON_UNIQUE 16
+#define SECURITY_NT2_REVISION_RID 0
+
+typedef struct _CAIROSID {
+ UCHAR Revision;
+ UCHAR SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+ ULONG ZerothSubAuthority;
+ ULONG FirstSubAuthority;
+ GUID sDomain;
+ ULONG rid;
+} CAIROSID, *PICAIROSID;
+
+////////////////////////////////////////////////////////////////////////
+// //
+// ACL and ACE //
+// //
+////////////////////////////////////////////////////////////////////////
+//
+//
+// Define an ACL and the ACE format. The structure of an ACL header
+// followed by one or more ACEs. Pictorally the structure of an ACL header
+// is 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
+// +-------------------------------+---------------+---------------+
+// | AclSize | Sbz1 | AclRevision |
+// +-------------------------------+---------------+---------------+
+// | Sbz2 | AceCount |
+// +-------------------------------+-------------------------------+
+//
+// The current AclRevision is defined to be ACL_REVISION.
+//
+// AclSize is the size, in bytes, allocated for the ACL. This includes
+// the ACL header, ACES, and remaining free space in the buffer.
+//
+// AceCount is the number of ACES in the ACL.
+//
+//
+//#define CAIRO_ACL_REVISION (3)
+//
+//
+// The structure of an ACE is a common ace header followed by ace type
+// specific data. Pictorally the structure of the common ace header is
+// 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
+// +---------------+-------+-------+---------------+---------------+
+// | AceSize | AceFlags | AceType |
+// +---------------+-------+-------+---------------+---------------+
+//
+// AceType denotes the type of the ace, there are some predefined ace
+// types
+//
+// AceSize is the size, in bytes, of ace.
+//
+// AceFlags are the Ace flags for audit and inheritance, defined shortly.
+//
+//
+// The following are the predefined ace types that go into the AceType
+// field of an Ace header.
+//
+//
+// #define ACCESS_ALLOWED_ACE_TYPE (0x0)
+// #define ACCESS_DENIED_ACE_TYPE (0x1)
+// #define SYSTEM_AUDIT_ACE_TYPE (0x2)
+// #define SYSTEM_ALARM_ACE_TYPE (0x3)
+
+//
+// The following are the inherit flags that go into the AceFlags field
+// of an Ace header.
+//
+
+// #define OBJECT_INHERIT_ACE (0x1)
+// #define CONTAINER_INHERIT_ACE (0x2)
+// #define NO_PROPAGATE_INHERIT_ACE (0x4)
+// #define INHERIT_ONLY_ACE (0x8)
+// #define END_OF_INHERITED_ACE (0x10)
+// #define VALID_INHERIT_FLAGS (0x1F)
+
+// CAIRO ACE FLAGS
+
+//#define SIMPLE_CAIRO_ACE (OX0)
+//#define IMPERSONATE_CAIRO_ACE (0x1)
+
+
+// The following are the currently defined ACE flags that go into the
+// AceFlags field of an ACE header. Each ACE type has its own set of
+// AceFlags.
+//
+// SUCCESSFUL_ACCESS_ACE_FLAG - used only with system audit and alarm ACE
+// types to indicate that a message is generated for successful accesses.
+//
+// FAILED_ACCESS_ACE_FLAG - used only with system audit and alarm ACE types
+// to indicate that a message is generated for failed accesses.
+//
+
+//
+// SYSTEM_AUDIT and SYSTEM_ALARM AceFlags
+//
+// These control the signaling of audit and alarms for success or failure.
+//
+//
+//#define SUCCESSFUL_ACCESS_ACE_FLAG (0x40)
+//#define FAILED_ACCESS_ACE_FLAG (0x80)
+//
+//
+// Following is a picture of the current Cairo ACE. Right now we use
+// the extra space in the ACE after the SID to save the name. As a fail
+// safe the length of the name is stored, it must be less than the remaining
+// length of the ACE.
+//
+// 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
+// +---------------+-------+-------+---------------+---------------+
+// | AceSize | AceFlags | AceType |
+// +---------------+-------+-------+---------------+---------------+
+// | Mask |
+// +---------------------------------------------------------------+
+// | |
+// | NT version of CairoSID |
+// | |
+// +---------------------------------------------------------------+
+// | [optional] length of name |
+// +---------------------------------------------------------------+
+// | [optional] name (null terminated) |
+// | |
+// | |
+// | |
+// | |
+// +---------------------------------------------------------------+
+//
+typedef struct _CAIRO_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ CAIROSID CSid;
+ ULONG cNameLength;
+ WCHAR Name[ANYSIZE_ARRAY];
+} CAIRO_ACE, *PCAIRO_ACE;
+
+//--------------------------------------------------------------------------
+//
+// Following is the final version of the Cairo ACE.
+//
+// 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
+// +---------------+-------+-------+---------------+---------------+
+// | AceSize | AceFlags | AceType |
+// +---------------+-------+-------+---------------+---------------+
+// | Mask |
+// +---------------------------------------------------------------+
+// | AdvancedAceType | SidCount |
+// +---------------------------------------------------------------+
+// | |
+// + +
+// | SID |
+// + or +
+// | CairoSID |
+// + +
+// | |
+// +---------------------------------------------------------------+
+// | offset to ID name |
+// +---------------------------------------------------------------+
+// | [optional] |
+// + +
+// | SID |
+// + or +
+// | CairoSID |
+// + +
+// | |
+// +---------------------------------------------------------------+
+// | [optional] |
+// | offset to ID name |
+// +---------------------------------------------------------------+
+// | |
+// | name (null terminated) |
+// | |
+// +---------------------------------------------------------------+
+// | [optional] |
+// | name (null terminated) |
+// | |
+// +---------------------------------------------------------------+
+//
+//
+// Mask is the access mask associated with the ACE. This is either the
+// access allowed, access denied, audit, or alarm mask.
+//
+// Sid is the Sid associated with the ACE.
+//
+//
+//typedef struct _ACCESS_ACE {
+// ACE_HEADER Header;
+// ACCESS_MASK Mask;
+// USHORT AdvancedAceType;
+// USHORT SidCount;
+// ULONG SidStart;
+//} ACCESS_ACE;
+//typedef ACCESS_ACE *PACCESS_ACE;
+//
+//--------------------------------------------------------------------------
+
+//
+// Well-known identifiers
+//
+
+#if 0
+//
+// The on disk format for identifiers is as follows:
+//
+// SID Format:
+//
+// S-1-4-x1-x2-x3-x4-y1-y2-y3-y4
+//
+// Where the S-1-4 is a standard prefix for our identifiers
+//
+// x1-x4 are the GUID of the principal, mapped to consecutive ulongs
+// y1-y4 are the GUID of the principal's domain, mapped as above.
+//
+//
+// There are several well known "guids" which are used to represent either
+// artificial groups or domain-wide constants. These are listed below. To
+// use them, use the AllocateAndInitializeSid call.
+//
+
+
+//
+// This define is used to determine the needed size for the SID.
+//
+// You would use this as the second parameter to AllocateAndInitializeSid
+//
+
+#define SECURITY_SID_RID_COUNT 8
+#define SECURITY_NT2_AUTHORITY {0, 0, 0, 0, 0, 4}
+
+//
+// A well known "guid" exists to represent the local domain, which really
+// means local machine. This domain is assigned only to local identifiers.
+//
+
+#define SECURITY_LOCAL_DOMAIN_1 0
+#define SECURITY_LOCAL_DOMAIN_2 0
+#define SECURITY_LOCAL_DOMAIN_3 0
+#define SECURITY_LOCAL_DOMAIN_4 105
+#define SECURITY_LOCAL_DOMAIN_GUID {0, 0, 0, {0, 0, 0, 0, 105, 0, 0, 0} }
+
+
+//
+// A well known "guid" exists to represent the PRIVATE group. This group is
+// actually the same as the NT admin alias
+//
+
+#define SECURITY_PRIVATE_GROUP_SID_COUNT 2
+#define SECURITY_PRIVATE_GROUP_1 32
+#define SECURITY_PRIVATE_GROUP_2 544
+#define SECURITY_PRIVATE_GROUP_GUID {2, 32, 544, {0, 0, 0, 0, 0, 0, 0, 0}}
+//
+// A well known "guid" exists to represent the PUBLIC group. This group is
+// actually the same as the NT guest group.
+//
+
+#define SECURITY_PUBLIC_GROUP_SID_COUNT 2
+#define SECURITY_PUBLIC_GROUP_1 32
+#define SECURITY_PUBLIC_GROUP_2 545
+#define SECURITY_PUBLIC_GROUP_GUID {2, 32, 545, {0, 0, 0, 0, 0, 0, 0, 0}}
+
+
+//
+// A well known "guid" exists to represent the GUEST user. This group is
+// actually the same as the NT guest user.
+//
+#define SECURITY_GUEST_USER_SID_COUNT 2
+#define SECURITY_GUEST_USER_1 32
+#define SECURITY_GUEST_USER_2 501
+#define SECURITY_GUEST_USER_GUID {2, 32, 501, {0, 0, 0, 0, 0, 0, 0, 0}}
+
+#endif
+
+//
+// Next free rid is 0x256. Last free is 0x3e7 (999)
+
+
+// The local PRIVATE group. This is actually the same as the NT admin group
+#define DOMAIN_GROUP_RID_PRIVATE DOMAIN_ALIAS_RID_ADMINS
+// The local PUBLIC group. This is actually the same as the NT users group
+#define DOMAIN_GROUP_RID_PUBLIC DOMAIN_ALIAS_RID_USERS
+
+#define DOMAIN_GROUP_RID_BACKUP_OPS DOMAIN_ALIAS_RID_BACKUP_OPS
+#define DOMAIN_GROUP_RID_ACCOUNT_OPS DOMAIN_ALIAS_RID_ACCOUNT_OPS
+#define DOMAIN_GROUP_RID_PRINT_OPS DOMAIN_ALIAS_RID_PRINT_OPS
+#define DOMAIN_GROUP_RID_SERVER_OPS DOMAIN_ALIAS_RID_SYSTEM_OPS
+
+#define DOMAIN_SERVICE_RID_KDC 0x250
+#define DOMAIN_SERVICE_RID_DFSM 0x251
+#define DOMAIN_SERVICE_RID_DS_SERVER 0x252
+#define DOMAIN_SERVICE_RID_NTLMSVC 0x253
+#define DOMAIN_SERVICE_RID_PRIVSVR 0x254
+#define DOMAIN_SERVICE_RID_ORASVC 0x255
+
+// NULL Guid
+// #define SECURITY_NULL_GUID {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0} }
+
+#endif // __CAIROSEAPI_H__
+
diff --git a/public/sdk/inc/callconv.inc b/public/sdk/inc/callconv.inc
new file mode 100644
index 000000000..86ca9c629
--- /dev/null
+++ b/public/sdk/inc/callconv.inc
@@ -0,0 +1,303 @@
+;****************************CallConv.Inc************************************
+;
+; Copyright (c) 1990-1995, Microsoft Corp. All rights reserved.
+;
+;****************************************************************************
+
+;****************************Public Macro************************************
+;
+; ComposeInst Inst,p1,p2,p3,p4,p5,p6,p7,p8,p9
+;
+; This macro simply concatenates all arguments into one string.
+;
+;
+;****************************************************************************
+
+ComposeInst macro Inst,p1,p2,p3,p4,p5,p6,p7,p8,p9
+ &Inst p1&p2&p3&p4&p5&p6&p7&p8&p9
+endm
+
+;****************************Public Macro************************************
+;
+; CountArg cCount,ArgList
+;
+; This macro count the number of arguments in the ArgList and returns
+; the value in cCount.
+;
+;
+;****************************************************************************
+
+CountArg macro cCount,ArgList
+
+ cCount = 0
+
+ irp arg,<ArgList>
+ cCount = cCount+1
+ endm
+endm
+
+;****************************Public Macro************************************
+;
+; RevPush ArgList,cCount
+;
+; This macro pushes the arguments in ArgList in the reverse order
+; and returns the number of arguments in cCount.
+;
+;
+;****************************************************************************
+
+RevPush macro ArgList,cCount
+ Local index,x
+
+ CountArg cCount,<ArgList>
+
+ index = cCount
+ rept cCount
+ x = 0
+ irp arg,<ArgList>
+ x = x+1
+ ife index-x
+ push arg
+ exitm
+ endif
+ endm
+ index = index-1
+ endm
+endm
+
+;****************************Public Macro************************************
+;
+; The following sections contain calling-convention related macros for:
+;
+; PUBLICP Func,N
+; to define a public label
+;
+; EXTRNP Func,N,Thunk
+; to define a external near label
+;
+; LABELP Func,N
+; to label an address as a routine entry point
+;
+; stdPROC Func,N,ArgList
+; to declare a routine header
+;
+; ProcName Name,Func,N
+; to rename a function Func to Name. Using it in conjunction with
+; normal function declaration (with the new name) will solve an error
+; caused by a long parameter list routine that exhausts page width.
+;
+; stdRET Func
+; to return from Func routines (declared with stdPROC or ProcName.)
+;
+; stdENDP Func
+; to declare the end of routine (declared with stdPROC or ProcName.)
+;
+; endMod Func
+; to declare the end of module with an entry point at Func (declared
+; with stdPROC or ProcName.)
+;
+; stdCall Func,ArgList
+; to call to a routine--Func--with the arguments pushed on the stack
+;
+; MovAddr dest,Func,n
+; to move the address of the routine--Func--into dest.
+;
+; Note that for the standard calling convention all the function names,
+; Func, are automatically converted to Func@N where N is the number of
+; bytes (decimal) in the argument list.
+;
+;
+;****************************************************************************
+
+if @Version GE 600
+ option nokeyword:<stdcall>
+endif
+
+PUBLICP macro Func,N
+
+ ifb <N>
+ public Func&@0
+ else
+ PUBLICP2 Func,%(N*4)
+ endif
+endm
+
+PUBLICP2 macro Func,N
+
+ public Func&@&N
+endm
+
+EXTRNP macro Func,N,Thunk,FastCall
+ ifb <N>
+ IFNDEF Func&@0
+ extrn Func&@0:NEAR
+ ENDIF
+ else
+ ifb <FastCall>
+ ifb <Thunk>
+ EXTRNP2 Func,%(N*4)
+ else
+ EXTRNTHUNK Func,%(N*4)
+ endif
+ else
+ cFCall&@&Func equ (N*4)
+ ifb <Thunk>
+ EXTRNP2 &@&Func,%(N*4)
+ else
+ EXTRNTHUNK &@&Func,%(N*4)
+ endif
+ endif
+ endif
+endm
+
+EXTRNP2 macro Func,N
+ IFNDEF Func&@&N
+ extrn Func&@&N:NEAR
+ ENDIF
+endm
+
+EXTRNTHUNK macro Func,N
+ IFNDEF __imp_&Func&@&N
+ extrn __imp_&Func&@&N:DWORD
+ ENDIF
+endm
+
+LABELP macro Func,N
+
+ ifb <N>
+ Func&@0 label near
+ else
+ LABELP2 Func,%(N*4)
+ endif
+endm
+
+LABELP2 macro Func,N
+
+Func&@&N label near
+
+endm
+
+ProcName macro Name,Func,N
+
+ ifb <N>
+ cByte&Func equ 0
+ Name equ <Func&@0>
+ else
+ cByte&Func equ N
+ Name equ <Func&@&N>
+ endif
+endm
+
+stdPROC macro Func,N,ArgList
+
+ ProcName Func,Func,%(N*4)
+
+ Func proc ArgList
+endm
+
+cPublicProc macro Func,N,ArgList
+ align dword
+ PUBLICP Func,N
+ ifb <N>
+ stdPROC Func,0,<ArgList>
+ else
+ stdPROC Func,N,<ArgList>
+ endif
+endm
+
+ProcNameF macro Name,Func,N,M
+
+ cByte&Func equ M
+ cFCall&Func equ N
+ Name equ <Func&@&N>
+
+endm
+
+stdPROCF macro Func,N,ArgList
+
+ if N gt 2
+ ProcNameF Func,Func,%(N*4),%((N-2)*4)
+ else
+ ProcNameF Func,Func,%(N*4),0
+ endif
+
+ Func proc ArgList
+endm
+
+cPublicFastCall macro Func,N,ArgList
+ align dword
+ PUBLICP &@&Func,N
+ ifb <N>
+ stdPROCF &@&Func,0,<ArgList>
+ else
+ stdPROCF &@&Func,N,<ArgList>
+ endif
+endm
+
+fstRET macro Func
+ ret cByte&@&Func
+endm
+
+stdRET macro Func
+ ret cByte&Func
+endm
+
+cPublicFpo macro FpoLocals, FpoParams
+
+.FPO ( FpoParams, FpoLocals, 0, 0, 0, 0 )
+
+endm
+
+
+fstENDP macro Func
+
+ &@&Func endp
+endm
+
+stdENDP macro Func
+
+ Func endp
+endm
+
+endMod macro Func
+
+ end Func
+endm
+
+stdCallCall macro Func,N
+ IFDEF __imp_&Func&@&N
+ call dword ptr [__imp_&Func&@&N]
+ ELSE
+ call Func&@&N
+ ENDIF
+endm
+
+
+stdCall macro Func,ArgList
+ Local Bytes
+
+ RevPush <ArgList>,Bytes
+ Bytes = Bytes*4
+
+ stdCallCall Func,%(Bytes)
+endm
+
+fstCall macro Func,ArgList
+ Local Bytes
+
+ RevPush <ArgList>,Bytes
+ Bytes = Bytes*4
+
+ if Bytes eq 0
+ stdCallCall &@&Func,%cFCall&@&Func
+ else
+ ; must have 2 register params
+ stdCallCall &@&Func,%(Bytes+8)
+ endif
+endm
+
+
+MovAddr macro dest,addr,n
+
+ ComposeInst <mov >,dest,<,offset FLAT:>,addr,<@>,n
+endm
diff --git a/public/sdk/inc/catstg.h b/public/sdk/inc/catstg.h
new file mode 100644
index 000000000..2fd127a72
--- /dev/null
+++ b/public/sdk/inc/catstg.h
@@ -0,0 +1,1349 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:42:41 1996
+ */
+/* Compiler settings for catstg.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __catstg_h__
+#define __catstg_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ISummaryCatalogStorage_FWD_DEFINED__
+#define __ISummaryCatalogStorage_FWD_DEFINED__
+typedef interface ISummaryCatalogStorage ISummaryCatalogStorage;
+#endif /* __ISummaryCatalogStorage_FWD_DEFINED__ */
+
+
+#ifndef __ISummaryCatalogStorageView_FWD_DEFINED__
+#define __ISummaryCatalogStorageView_FWD_DEFINED__
+typedef interface ISummaryCatalogStorageView ISummaryCatalogStorageView;
+#endif /* __ISummaryCatalogStorageView_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oledbtyp.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifndef __DBStructureDefinitions_INTERFACE_DEFINED__
+#define __DBStructureDefinitions_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: DBStructureDefinitions
+ * at Fri Nov 15 09:42:41 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][unique][uuid] */
+
+
+typedef DWORD DBKIND;
+
+
+enum DBKINDENUM
+ { DBKIND_GUID_NAME = 0,
+ DBKIND_GUID_PROPID = DBKIND_GUID_NAME + 1,
+ DBKIND_NAME = DBKIND_GUID_PROPID + 1,
+ DBKIND_PGUID_NAME = DBKIND_NAME + 1,
+ DBKIND_PGUID_PROPID = DBKIND_PGUID_NAME + 1,
+ DBKIND_PROPID = DBKIND_PGUID_PROPID + 1,
+ DBKIND_GUID = DBKIND_PROPID + 1
+ };
+typedef struct tagDBID
+ {
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ GUID guid;
+ /* [case()] */ GUID __RPC_FAR *pguid;
+ } ;
+ DBKIND eKind;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ LPWSTR pwszName;
+ /* [case()] */ ULONG ulPropid;
+ } ;
+ } DBID;
+
+typedef struct tagDBNUMERIC
+ {
+ BYTE precision;
+ BYTE scale;
+ BYTE sign;
+ BYTE val[ 16 ];
+ } DBNUMERIC;
+
+typedef WORD DBTYPE;
+
+
+enum DBTYPEENUM
+ { DBTYPE_EMPTY = 0,
+ DBTYPE_NULL = DBTYPE_EMPTY + 1,
+ DBTYPE_I2 = DBTYPE_NULL + 1,
+ DBTYPE_I4 = DBTYPE_I2 + 1,
+ DBTYPE_R4 = DBTYPE_I4 + 1,
+ DBTYPE_R8 = DBTYPE_R4 + 1,
+ DBTYPE_CY = DBTYPE_R8 + 1,
+ DBTYPE_DATE = DBTYPE_CY + 1,
+ DBTYPE_BSTR = DBTYPE_DATE + 1,
+ DBTYPE_DISPATCH = DBTYPE_BSTR + 1,
+ DBTYPE_ERROR = DBTYPE_DISPATCH + 1,
+ DBTYPE_BOOL = DBTYPE_ERROR + 1,
+ DBTYPE_VARIANT = DBTYPE_BOOL + 1,
+ DBTYPE_UNKNOWN = DBTYPE_VARIANT + 1,
+ DBTYPE_UI1 = 17,
+ DBTYPE_ARRAY = 0x2000,
+ DBTYPE_BYREF = 0x4000,
+ DBTYPE_I1 = 16,
+ DBTYPE_UI2 = 18,
+ DBTYPE_UI4 = DBTYPE_UI2 + 1,
+ DBTYPE_I8 = DBTYPE_UI4 + 1,
+ DBTYPE_UI8 = DBTYPE_I8 + 1,
+ DBTYPE_GUID = 72,
+ DBTYPE_VECTOR = 0x1000,
+ DBTYPE_RESERVED = 0x8000,
+ DBTYPE_BYTES = 128,
+ DBTYPE_STR = 129,
+ DBTYPE_WSTR = DBTYPE_STR + 1,
+ DBTYPE_NUMERIC = DBTYPE_WSTR + 1,
+ DBTYPE_HCHAPTER = DBTYPE_NUMERIC + 1
+ };
+typedef struct tagDBVECTOR
+ {
+ ULONG size;
+ void __RPC_FAR *ptr;
+ } DBVECTOR;
+
+typedef DWORD DBCOLUMNPART;
+
+
+enum DBCOLUMNPARTENUM
+ { DBCOLUMNPART_VALUE = 1,
+ DBCOLUMNPART_LENGTH = 2,
+ DBCOLUMNPART_STATUS = 4
+ };
+typedef DWORD DBCOLUMNSTATUS;
+
+
+enum DBCOLUMNSTATUSENUM
+ { DBCOLUMNSTATUS_OK = 0,
+ DBCOLUMNSTATUS_ISNULL = DBCOLUMNSTATUS_OK + 1,
+ DBCOLUMNSTATUS_TRUNCATED = DBCOLUMNSTATUS_ISNULL + 1,
+ DBCOLUMNSTATUS_SIGNMISMATCH = DBCOLUMNSTATUS_TRUNCATED + 1,
+ DBCOLUMNSTATUS_DATAOVERFLOW = DBCOLUMNSTATUS_SIGNMISMATCH + 1,
+ DBCOLUMNSTATUS_CANTCOERCE = DBCOLUMNSTATUS_DATAOVERFLOW + 1,
+ DBCOLUMNSTATUS_CANTCREATE = DBCOLUMNSTATUS_CANTCOERCE + 1,
+ DBCOLUMNSTATUS_UNAVAILABLE = DBCOLUMNSTATUS_CANTCREATE + 1,
+ DBCOLUMNSTATUS_ACCESSVIOLATION = DBCOLUMNSTATUS_UNAVAILABLE + 1,
+ DBCOLUMNSTATUS_INTEGRITYVIOLATION = DBCOLUMNSTATUS_ACCESSVIOLATION + 1,
+ DBCOLUMNSTATUS_SCHEMAVIOLATION = DBCOLUMNSTATUS_INTEGRITYVIOLATION + 1
+ };
+typedef struct tagDBOBJECT
+ {
+ IUnknown __RPC_FAR *pUnkOuter;
+ IID iid;
+ LPBC pbc;
+ } DBOBJECT;
+
+typedef DWORD DBPARAMIO;
+
+
+enum DBPARAMIOENUM
+ { DBPARAMIO_INPUT = 0x1,
+ DBPARAMIO_OUTPUT = 0x2
+ };
+typedef struct tagDBBINDING
+ {
+ DBCOLUMNPART dwPart;
+ DBPARAMIO eParamIO;
+ ULONG iColumn;
+ DBTYPE dwType;
+ ITypeInfo __RPC_FAR *pTypeInfo;
+ DBNUMERIC __RPC_FAR *pNum;
+ ULONG obValue;
+ ULONG cbMaxLen;
+ DBOBJECT pObject;
+ ULONG obLength;
+ ULONG obStatus;
+ } DBBINDING;
+
+DECLARE_HANDLE(HACCESSOR);
+#if 0
+// Used by MIDL only
+typedef void __RPC_FAR *HACCESSOR;
+
+#endif // 0
+#define DB_INVALID_HACCESSOR 0x00
+DECLARE_HANDLE(HROW);
+#if 0
+// Used by MIDL only
+typedef void __RPC_FAR *HROW;
+
+#endif // 0
+#define DB_INVALID_HROW 0x00
+DECLARE_HANDLE(HWATCHREGION);
+#if 0
+// Used by MIDL only
+typedef void __RPC_FAR *HWATCHREGION;
+
+#endif // 0
+#define DBWATCHREGION_NULL NULL
+DECLARE_HANDLE(HCHAPTER);
+#if 0
+// Used by MIDL only
+typedef void __RPC_FAR *HCHAPTER;
+
+#endif // 0
+#define DB_INVALID_CHAPTER 0x00
+#define DB_INVALID_HCHAPTER 0x00
+typedef struct tagDBERRORINFO
+ {
+ HROW hRow;
+ HRESULT hResult;
+ ULONG iColumn;
+ } DBERRORINFO;
+
+typedef struct tagDBFAILUREINFO
+ {
+ HROW hRow;
+ HRESULT failure;
+ ULONG iColumn;
+ } DBFAILUREINFO;
+
+typedef DWORD DBCOLUMNFLAGS;
+
+
+enum DBCOLUMNFLAGSENUM
+ { DBCOLUMNFLAGS_ISBOOKMARK = 0x1,
+ DBCOLUMNFLAGS_MAYDEFER = 0x2,
+ DBCOLUMNFLAGS_MAYREFERENCE = 0x4,
+ DBCOLUMNFLAGS_MAYWRITE = 0x8,
+ DBCOLUMNFLAGS_ISSIGNED = 0x10,
+ DBCOLUMNFLAGS_ISFIXEDLENGTH = 0x20,
+ DBCOLUMNFLAGS_ISNULLABLE = 0x40,
+ DBCOLUMNFLAGS_MAYBENULL = 0x80,
+ DBCOLUMNFLAGS_ISCHAPTER = 0x100,
+ DBCOLUMNFLAGS_ISOLEBLOB = 0x200,
+ DBCOLUMNFLAGS_ISROWID = 0x400,
+ DBCOLUMNFLAGS_ISROWVER = 0x800,
+ DBCOLUMNFLAGS_CACHEDEFERRED = 0x1000,
+ DBCOLUMNFLAGS_ISSELF = 0x2000
+ };
+typedef
+enum tagDBBOOKMARK
+ { DBBMK_INVALID = 0,
+ DBBMK_FIRST = DBBMK_INVALID + 1,
+ DBBMK_LAST = DBBMK_FIRST + 1
+ } DBBOOKMARK;
+
+typedef
+enum tagDBCHAPTER
+ { DBCHP_INVALID = 0,
+ DBCHP_FIRST = DBCHP_INVALID + 1
+ } DBCHAPTER;
+
+#define DB_INVALIDCOLUMN -100
+#define DBCIDGUID {0x0C733A81L,0x2A1C,0x11CE,{0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D}}
+#define DB_NULLGUID {0x00000000L,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
+#ifdef DBINITCONSTANTS
+extern const DBID DB_NULLCOLID = {DB_NULLGUID, DBKIND_GUID_PROPID, (LPWSTR)0};
+extern const DBID DBCOLUMN_COLUMNID = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)2};
+extern const DBID DBCOLUMN_NAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)3};
+extern const DBID DBCOLUMN_NUMBER = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)4};
+extern const DBID DBCOLUMN_TYPE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)5};
+extern const DBID DBCOLUMN_MAXLENGTH = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)6};
+extern const DBID DBCOLUMN_PRECISION = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)7};
+extern const DBID DBCOLUMN_SCALE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)8};
+extern const DBID DBCOLUMN_FLAGS = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)9};
+extern const DBID DBCOLUMN_BASECOLUMNNAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)10};
+extern const DBID DBCOLUMN_BASETABLENAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)11};
+extern const DBID DBCOLUMN_COLLATINGSEQUENCE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)12};
+extern const DBID DBCOLUMN_COMPUTEMODE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)13};
+extern const DBID DBCOLUMN_DEFAULTVALUE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)14};
+extern const DBID DBCOLUMN_DOMAIN = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)15};
+extern const DBID DBCOLUMN_HASDEFAULT = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)16};
+extern const DBID DBCOLUMN_ISAUTOINCREMENT = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)17};
+extern const DBID DBCOLUMN_ISCASESENSITIVE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)18};
+extern const DBID DBCOLUMN_ISMULTIVALUED = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)19};
+extern const DBID DBCOLUMN_ISSEARCHABLE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)20};
+extern const DBID DBCOLUMN_ISUNIQUE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)21};
+extern const DBID DBCOLUMN_ISVERSION = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)22};
+extern const DBID DBCOLUMN_BASECATALOGNAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)23};
+extern const DBID DBCOLUMN_BASESCHEMANAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)24};
+extern const DBID SOURCES_NAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)25};
+extern const DBID SOURCES_PARSENAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)26};
+extern const DBID SOURCES_DESCRIPTION = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)27};
+extern const DBID SOURCES_FLAGS = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)28};
+#else // !DBINITCONSTANTS
+extern const DBID DB_NULLCOLID;
+extern const DBID DBCOLUMN_COLUMNID;
+extern const DBID DBCOLUMN_NAME;
+extern const DBID DBCOLUMN_NUMBER;
+extern const DBID DBCOLUMN_TYPE;
+extern const DBID DBCOLUMN_MAXLENGTH;
+extern const DBID DBCOLUMN_PRECISION;
+extern const DBID DBCOLUMN_SCALE;
+extern const DBID DBCOLUMN_FLAGS;
+extern const DBID DBCOLUMN_BASECOLUMNNAME;
+extern const DBID DBCOLUMN_BASETABLENAME;
+extern const DBID DBCOLUMN_COLLATINGSEQUENCE;
+extern const DBID DBCOLUMN_COMPUTEMODE;
+extern const DBID DBCOLUMN_DEFAULTVALUE;
+extern const DBID DBCOLUMN_DOMAIN;
+extern const DBID DBCOLUMN_HASDEFAULT;
+extern const DBID DBCOLUMN_ISAUTOINCREMENT;
+extern const DBID DBCOLUMN_ISCASESENSITIVE;
+extern const DBID DBCOLUMN_ISMULTIVALUED;
+extern const DBID DBCOLUMN_ISSEARCHABLE;
+extern const DBID DBCOLUMN_ISUNIQUE;
+extern const DBID DBCOLUMN_ISVERSION;
+extern const DBID DBCOLUMN_BASECATALOGNAME;
+extern const DBID DBCOLUMN_BASESCHEMANAME;
+extern const DBID SOURCES_NAME;
+extern const DBID SOURCES_PARSENAME;
+extern const DBID SOURCES_DESCRIPTION;
+extern const DBID SOURCES_FLAGS;
+#endif // DBINITCONSTANTS
+#ifdef DBINITCONSTANTS
+extern const GUID DB_PROPERTY_CHECK_OPTION = {0xc8b5220b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_CONSTRAINT_CHECK_DEFERRED = {0xc8b521f0,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_DESCRIPTION = {0xc8b521f1,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_DEFAULT_VALUE = {0xc8b521f2,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_DROP_CASCADE = {0xc8b521f3,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_ON_COMMIT_PRESERVE_ROWS = {0xc8b52230,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_NULLABLE = {0xc8b521f4,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_UNIQUE = {0xc8b521f5,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_PRIMARY = {0xc8b521fc,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_CLUSTERED = {0xc8b521ff,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_NONCLUSTERED = {0xc8b52200,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_BTREE = {0xc8b52201,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_HASH = {0xc8b52202,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_FILLFACTOR = {0xc8b52203,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_INITIALSIZE = {0xc8b52204,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_DISALLOWNULL = {0xc8b52205,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_IGNORENULL = {0xc8b52206,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_IGNOREANYNULL = {0xc8b52207,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_SORTBOOKMARKS = {0xc8b52208,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_AUTOMATICUPDATE = {0xc8b52209,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_EXPLICITUPDATE = {0xc8b5220a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_WITH_LOCAL_CHECK_OPTION = {0xc8b52256,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_WITH_CASCADED_CHECK_OPTION = {0xc8b52257,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_LIKE_SQL = {0xc8b521f6,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_LIKE_DOS = {0xc8b521f7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_LIKE_OFS = {0xc8b521f8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_LIKE_MAPI = {0xc8b521f9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_SQL92 = {0xc8b521fa,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_DBSQL = {0xc8b521fb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_TSQL = {0xc8b521fd,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_ACCESSSQL = {0xc8b521fe,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_HWND = {0xc8b5227b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_LOCATION = {0xc8b5220d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_NAME = {0xc8b5220c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_PASSWORD = {0xc8b5220f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_TIMEOUT = {0xc8b5227c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_USERID = {0xc8b5220e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_ASSERTIONS = {0xc8b52210,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_CATALOGS = {0xc8b52211,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_CHARACTER_SETS = {0xc8b52212,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_COLLATIONS = {0xc8b52213,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_COLUMNS = {0xc8b52214,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_CHECK_CONSTRAINTS = {0xc8b52215,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_CONSTRAINT_COLUMN_USAGE = {0xc8b52216,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_CONSTRAINT_TABLE_USAGE = {0xc8b52217,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_KEY_COLUMN_USAGE_CONSTRAINTS = {0xc8b52218,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_REFERENTIAL_CONSTRAINTS = {0xc8b52219,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TABLE_CONSTRAINTS = {0xc8b5221a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_DOMAIN_COLUMN_USAGE = {0xc8b5221b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_DOMAINS = {0xc8b5221c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_DOMAIN_CONSTRAINTS = {0xc8b5221d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_INDEXES = {0xc8b5221e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_OBJECT_ACTIONS = {0xc8b5221f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_OBJECTS = {0xc8b52220,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_COLUMN_PRIVILEGES = {0xc8b52221,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TABLE_PRIVILEGES = {0xc8b52222,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_USAGE_PRIVILEGES = {0xc8b52223,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_PROCEDURES = {0xc8b52224,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_SCHEMATA = {0xc8b52225,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_SQL_LANGUAGES = {0xc8b52226,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_STATISTICS = {0xc8b52227,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_SYNONYMS = {0xc8b52228,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TABLES = {0xc8b52229,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TRANSLATIONS = {0xc8b5222a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TRIGGERS = {0xc8b5222b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TYPES = {0xc8b5222c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_VIEWS = {0xc8b5222d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_VIEW_COLUMN_USAGE = {0xc8b5222e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_VIEW_TABLE_USAGE = {0xc8b5222f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBCOL_SELFCOLUMNS = {0xc8b52231,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBCOL_SPECIALCOL = {0xc8b52232,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_ABORTRETAINING = {0xc8b5224b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_BOOKMARKS = {0xc8b5223e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CACHEDEFERRED = {0xc8b52287,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CANFETCHBACKWARDS = {0xc8b5223c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CANHOLDROWS = {0xc8b52241,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CANRELEASELOCKS = {0xc8b52245,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CANSCROLLBACKWARDS = {0xc8b5223d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CHAPTERED = {0xc8b52246,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_COMMITRETAINING = {0xc8b5224a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_COUNTOFCOLUMNS = {0xc8b52236,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_DEFERRED = {0xc8b52233,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_DISCONTIGUOUS = {0xc8b52244,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_LITERALBOOKMARKS = {0xc8b5223f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXOPENROWS = {0xc8b52237,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXOPENROWSPERCHAPTER = {0xc8b52239,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXPENDINGCHANGEROWS = {0xc8b52238,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXPENDINGCHANGESPERCHAPTER = {0xc8b5223a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAYWRITECOLUMN = {0xc8b52288,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MEMORYUSAGE = {0xc8b52235,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MULTICHAPTERED = {0xc8b52247,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MULTIPLEACCESSORS = {0xc8b52289,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MULTIPLERESULTSETS = {0xc8b52255,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_NOCOLUMNRESTRICT = {0xc8b52242,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_NOROWRESTRICT = {0xc8b52243,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_ORDEREDBOOKMARKS = {0xc8b52240,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_OTHERINSERT = {0xc8b5224f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_OTHERUPDATEDELETE = {0xc8b5224e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_OWNINSERT = {0xc8b5224d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_OWNUPDATEDELETE = {0xc8b5224c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PROPERTIESINERROR = {0xc8b5228a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_QUICKRESTART = {0xc8b52253,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_REENTRANTEVENTS = {0xc8b52249,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_REMOVEDELETED = {0xc8b52250,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SERVERCURSOR = {0xc8b52251,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_TRUEIDENTITY = {0xc8b52248,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_ACTIVESESSIONS = {0xc8b52256,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_ASYNCTXNCOMMIT = {0xc8b52257,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_BYREFACCESSORS = {0xc8b52258,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CATALOGLOCATION = {0xc8b52259,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CATALOGTERM = {0xc8b5225a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CATALOGUSAGE = {0xc8b5225b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CONCATNULLBEHAVIOR = {0xc8b5225c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_DATASOURCENAME = {0xc8b5225d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_DBMSNAME = {0xc8b5225e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_DBMSVER = {0xc8b5225f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_FILEUSAGE = {0xc8b52260,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_GROUPBY = {0xc8b52261,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_HETEROGENEOUSTABLES = {0xc8b52262,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_IDENTIFIERCASE = {0xc8b52263,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_LOCKMODES = {0xc8b52264,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXINDEXSIZE = {0xc8b52265,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXROWSIZE = {0xc8b52266,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXROWSIZEINCLUDESBLOB = {0xc8b52267,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXTABLESINSELECT = {0xc8b52268,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MULTITABLEUPDATE = {0xc8b52269,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_NOTIFICATIONPHASES = {0xc8b5226a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_OLEOBJECTS = {0xc8b5226b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_ORDERBYCOLUMNSINSELECT = {0xc8b5226c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PREPARECOMMITBEHAVIOR = {0xc8b5226d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PREPAREABORTBEHAVIOR = {0xc8b5226e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PROVIDEREXTENSIONS = {0xc8b5226f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PROVIDEROLEDBVER = {0xc8b52270,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PROVIDERNAME = {0xc8b52271,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PROVIDERVER = {0xc8b52272,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_QUOTEDIDENTIFIERCASE = {0xc8b52273,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SCHEMATERM = {0xc8b52274,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SCHEMAUSAGE = {0xc8b52275,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SQLDIALECTS = {0xc8b52276,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SUBQUERIES = {0xc8b52277,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SUPPORTEDTXNISOLEVELS = {0xc8b52278,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SUPPORTEDTXNISORETAIN = {0xc8b52279,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_TABLETERM = {0xc8b5227a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_AUTOUPDATE = {0xc8b5227d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_CLUSTERED = {0xc8b5227e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_FILLFACTOR = {0xc8b5227f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_INITIALSIZE = {0xc8b52280,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_NULLCOLLATION = {0xc8b52281,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_NULLS = {0xc8b52282,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_PRIMARYKEY = {0xc8b52283,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_SORTBOOKMARKS = {0xc8b52284,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_TYPE = {0xc8b52285,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_UNIQUE = {0xc8b52286,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+#else // !DBINITCONSTANTS
+extern const GUID DB_PROPERTY_CHECK_OPTION;
+extern const GUID DB_PROPERTY_CONSTRAINT_CHECK_DEFERRED;
+extern const GUID DB_PROPERTY_DESCRIPTION;
+extern const GUID DB_PROPERTY_DEFAULT_VALUE;
+extern const GUID DB_PROPERTY_DROP_CASCADE;
+extern const GUID DB_PROPERTY_ON_COMMIT_PRESERVE_ROWS;
+extern const GUID DB_PROPERTY_NULLABLE;
+extern const GUID DB_PROPERTY_UNIQUE;
+extern const GUID DB_PROPERTY_PRIMARY;
+extern const GUID DB_PROPERTY_CLUSTERED;
+extern const GUID DB_PROPERTY_NONCLUSTERED;
+extern const GUID DB_PROPERTY_BTREE;
+extern const GUID DB_PROPERTY_HASH;
+extern const GUID DB_PROPERTY_FILLFACTOR;
+extern const GUID DB_PROPERTY_INITIALSIZE;
+extern const GUID DB_PROPERTY_DISALLOWNULL;
+extern const GUID DB_PROPERTY_IGNORENULL;
+extern const GUID DB_PROPERTY_IGNOREANYNULL;
+extern const GUID DB_PROPERTY_SORTBOOKMARKS;
+extern const GUID DB_PROPERTY_AUTOMATICUPDATE;
+extern const GUID DB_PROPERTY_EXPLICITUPDATE;
+extern const GUID DB_PROPERTY_WITH_LOCAL_CHECK_OPTION;
+extern const GUID DB_PROPERTY_WITH_CASCADED_CHECK_OPTION;
+extern const GUID DBGUID_LIKE_SQL;
+extern const GUID DBGUID_LIKE_DOS;
+extern const GUID DBGUID_LIKE_OFS;
+extern const GUID DBGUID_LIKE_MAPI;
+extern const GUID DBGUID_SQL92;
+extern const GUID DBGUID_DBSQL;
+extern const GUID DBGUID_TSQL;
+extern const GUID DBGUID_ACCESSSQL;
+extern const GUID DBINIT_OPT_HWND;
+extern const GUID DBINIT_OPT_LOCATION;
+extern const GUID DBINIT_OPT_NAME;
+extern const GUID DBINIT_OPT_PASSWORD;
+extern const GUID DBINIT_OPT_TIMEOUT;
+extern const GUID DBINIT_OPT_USERID;
+extern const GUID DBSCHEMA_ASSERTIONS;
+extern const GUID DBSCHEMA_CATALOGS;
+extern const GUID DBSCHEMA_CHARACTER_SETS;
+extern const GUID DBSCHEMA_COLLATIONS;
+extern const GUID DBSCHEMA_COLUMNS;
+extern const GUID DBSCHEMA_CHECK_CONSTRAINTS;
+extern const GUID DBSCHEMA_CONSTRAINT_COLUMN_USAGE;
+extern const GUID DBSCHEMA_CONSTRAINT_TABLE_USAGE;
+extern const GUID DBSCHEMA_KEY_COLUMN_USAGE_CONSTRAINTS;
+extern const GUID DBSCHEMA_REFERENTIAL_CONSTRAINTS;
+extern const GUID DBSCHEMA_TABLE_CONSTRAINTS;
+extern const GUID DBSCHEMA_DOMAIN_COLUMN_USAGE;
+extern const GUID DBSCHEMA_DOMAINS;
+extern const GUID DBSCHEMA_DOMAIN_CONSTRAINTS;
+extern const GUID DBSCHEMA_INDEXES;
+extern const GUID DBSCHEMA_OBJECT_ACTIONS;
+extern const GUID DBSCHEMA_OBJECTS;
+extern const GUID DBSCHEMA_COLUMN_PRIVILEGES;
+extern const GUID DBSCHEMA_TABLE_PRIVILEGES;
+extern const GUID DBSCHEMA_USAGE_PRIVILEGES;
+extern const GUID DBSCHEMA_PROCEDURES;
+extern const GUID DBSCHEMA_SCHEMATA;
+extern const GUID DBSCHEMA_SQL_LANGUAGES;
+extern const GUID DBSCHEMA_STATISTICS;
+extern const GUID DBSCHEMA_SYNONYMS;
+extern const GUID DBSCHEMA_TABLES;
+extern const GUID DBSCHEMA_TRANSLATIONS;
+extern const GUID DBSCHEMA_TRIGGERS;
+extern const GUID DBSCHEMA_TYPES;
+extern const GUID DBSCHEMA_VIEWS;
+extern const GUID DBSCHEMA_VIEW_COLUMN_USAGE;
+extern const GUID DBSCHEMA_VIEW_TABLE_USAGE;
+extern const GUID DBCOL_SELFCOLUMNS;
+extern const GUID DBCOL_SPECIALCOL;
+extern const GUID DBPROP_ABORTRETAINING;
+extern const GUID DBPROP_BOOKMARKS;
+extern const GUID DBPROP_CACHEDEFERRED;
+extern const GUID DBPROP_CANFETCHBACKWARDS;
+extern const GUID DBPROP_CANHOLDROWS;
+extern const GUID DBPROP_CANRELEASELOCKS;
+extern const GUID DBPROP_CANSCROLLBACKWARDS;
+extern const GUID DBPROP_CHAPTERED;
+extern const GUID DBPROP_COMMITRETAINING;
+extern const GUID DBPROP_COUNTOFCOLUMNS;
+extern const GUID DBPROP_DEFERRED;
+extern const GUID DBPROP_DISCONTIGUOUS;
+extern const GUID DBPROP_LITERALBOOKMARKS;
+extern const GUID DBPROP_MAXOPENROWS;
+extern const GUID DBPROP_MAXOPENROWSPERCHAPTER;
+extern const GUID DBPROP_MAXPENDINGCHANGEROWS;
+extern const GUID DBPROP_MAXPENDINGCHANGESPERCHAPTER;
+extern const GUID DBPROP_MAYWRITECOLUMN;
+extern const GUID DBPROP_MEMORYUSAGE;
+extern const GUID DBPROP_MULTICHAPTERED;
+extern const GUID DBPROP_MULTIPLEACCESSORS;
+extern const GUID DBPROP_MULTIPLERESULTSETS;
+extern const GUID DBPROP_NOCOLUMNRESTRICT;
+extern const GUID DBPROP_NOROWRESTRICT;
+extern const GUID DBPROP_ORDEREDBOOKMARKS;
+extern const GUID DBPROP_OTHERINSERT;
+extern const GUID DBPROP_OTHERUPDATEDELETE;
+extern const GUID DBPROP_OWNINSERT;
+extern const GUID DBPROP_OWNUPDATEDELETE;
+extern const GUID DBPROP_PROPERTIESINERROR;
+extern const GUID DBPROP_QUICKRESTART;
+extern const GUID DBPROP_REENTRANTEVENTS;
+extern const GUID DBPROP_REMOVEDELETED;
+extern const GUID DBPROP_SERVERCURSOR;
+extern const GUID DBPROP_TRUEIDENTITY;
+extern const GUID DBPROP_ACTIVESESSIONS;
+extern const GUID DBPROP_ASYNCTXNCOMMIT;
+extern const GUID DBPROP_BYREFACCESSORS;
+extern const GUID DBPROP_CATALOGLOCATION;
+extern const GUID DBPROP_CATALOGTERM;
+extern const GUID DBPROP_CATALOGUSAGE;
+extern const GUID DBPROP_CONCATNULLBEHAVIOR;
+extern const GUID DBPROP_DATASOURCENAME;
+extern const GUID DBPROP_DBMSNAME;
+extern const GUID DBPROP_DBMSVER;
+extern const GUID DBPROP_FILEUSAGE;
+extern const GUID DBPROP_GROUPBY;
+extern const GUID DBPROP_HETEROGENEOUSTABLES;
+extern const GUID DBPROP_IDENTIFIERCASE;
+extern const GUID DBPROP_LOCKMODES;
+extern const GUID DBPROP_MAXINDEXSIZE;
+extern const GUID DBPROP_MAXROWSIZE;
+extern const GUID DBPROP_MAXROWSIZEINCLUDESBLOB;
+extern const GUID DBPROP_MAXTABLESINSELECT;
+extern const GUID DBPROP_MULTITABLEUPDATE;
+extern const GUID DBPROP_NOTIFICATIONPHASES;
+extern const GUID DBPROP_OLEOBJECTS;
+extern const GUID DBPROP_ORDERBYCOLUMNSINSELECT;
+extern const GUID DBPROP_PREPARECOMMITBEHAVIOR;
+extern const GUID DBPROP_PREPAREABORTBEHAVIOR;
+extern const GUID DBPROP_PROVIDEREXTENSIONS;
+extern const GUID DBPROP_PROVIDEROLEDBVER;
+extern const GUID DBPROP_PROVIDERNAME;
+extern const GUID DBPROP_PROVIDERVER;
+extern const GUID DBPROP_QUOTEDIDENTIFIERCASE;
+extern const GUID DBPROP_SCHEMATERM;
+extern const GUID DBPROP_SCHEMAUSAGE;
+extern const GUID DBPROP_SQLDIALECTS;
+extern const GUID DBPROP_SUBQUERIES;
+extern const GUID DBPROP_SUPPORTEDTXNISOLEVELS;
+extern const GUID DBPROP_SUPPORTEDTXNISORETAIN;
+extern const GUID DBPROP_TABLETERM;
+extern const GUID DBPROP_INDEX_AUTOUPDATE;
+extern const GUID DBPROP_INDEX_CLUSTERED;
+extern const GUID DBPROP_INDEX_FILLFACTOR;
+extern const GUID DBPROP_INDEX_INITIALSIZE;
+extern const GUID DBPROP_INDEX_NULLCOLLATION;
+extern const GUID DBPROP_INDEX_NULLS;
+extern const GUID DBPROP_INDEX_PRIMARYKEY;
+extern const GUID DBPROP_INDEX_SORTBOOKMARKS;
+extern const GUID DBPROP_INDEX_TYPE;
+extern const GUID DBPROP_INDEX_UNIQUE;
+#endif // DBINITCONSTANTS
+typedef DWORD DBCOMMANDOP;
+
+
+enum DBCOMMANDOPENUM
+ { DBOP_scalar_constant = 0,
+ DBOP_DEFAULT = DBOP_scalar_constant + 1,
+ DBOP_NULL = DBOP_DEFAULT + 1,
+ DBOP_bookmark_name = DBOP_NULL + 1,
+ DBOP_catalog_name = DBOP_bookmark_name + 1,
+ DBOP_column_name = DBOP_catalog_name + 1,
+ DBOP_schema_name = DBOP_column_name + 1,
+ DBOP_outall_name = DBOP_schema_name + 1,
+ DBOP_qualifier_name = DBOP_outall_name + 1,
+ DBOP_qualified_column_name = DBOP_qualifier_name + 1,
+ DBOP_table_name = DBOP_qualified_column_name + 1,
+ DBOP_nested_table_name = DBOP_table_name + 1,
+ DBOP_nested_column_name = DBOP_nested_table_name + 1,
+ DBOP_row = DBOP_nested_column_name + 1,
+ DBOP_table = DBOP_row + 1,
+ DBOP_sort = DBOP_table + 1,
+ DBOP_distinct = DBOP_sort + 1,
+ DBOP_distinct_order_preserving = DBOP_distinct + 1,
+ DBOP_alias = DBOP_distinct_order_preserving + 1,
+ DBOP_cross_join = DBOP_alias + 1,
+ DBOP_union_join = DBOP_cross_join + 1,
+ DBOP_inner_join = DBOP_union_join + 1,
+ DBOP_left_semi_join = DBOP_inner_join + 1,
+ DBOP_right_semi_join = DBOP_left_semi_join + 1,
+ DBOP_left_anti_semi_join = DBOP_right_semi_join + 1,
+ DBOP_right_anti_semi_join = DBOP_left_anti_semi_join + 1,
+ DBOP_left_outer_join = DBOP_right_anti_semi_join + 1,
+ DBOP_right_outer_join = DBOP_left_outer_join + 1,
+ DBOP_full_outer_join = DBOP_right_outer_join + 1,
+ DBOP_natural_join = DBOP_full_outer_join + 1,
+ DBOP_natural_left_outer_join = DBOP_natural_join + 1,
+ DBOP_natural_right_outer_join = DBOP_natural_left_outer_join + 1,
+ DBOP_natural_full_outer_join = DBOP_natural_right_outer_join + 1,
+ DBOP_set_intersection = DBOP_natural_full_outer_join + 1,
+ DBOP_set_union = DBOP_set_intersection + 1,
+ DBOP_set_left_difference = DBOP_set_union + 1,
+ DBOP_set_right_difference = DBOP_set_left_difference + 1,
+ DBOP_set_anti_difference = DBOP_set_right_difference + 1,
+ DBOP_bag_intersection = DBOP_set_anti_difference + 1,
+ DBOP_bag_union = DBOP_bag_intersection + 1,
+ DBOP_bag_left_difference = DBOP_bag_union + 1,
+ DBOP_bag_right_difference = DBOP_bag_left_difference + 1,
+ DBOP_bag_anti_difference = DBOP_bag_right_difference + 1,
+ DBOP_division = DBOP_bag_anti_difference + 1,
+ DBOP_relative_sampling = DBOP_division + 1,
+ DBOP_absolute_sampling = DBOP_relative_sampling + 1,
+ DBOP_transitive_closure = DBOP_absolute_sampling + 1,
+ DBOP_recursive_union = DBOP_transitive_closure + 1,
+ DBOP_aggregate = DBOP_recursive_union + 1,
+ DBOP_select = DBOP_aggregate + 1,
+ DBOP_order_preserving_select = DBOP_select + 1,
+ DBOP_project = DBOP_order_preserving_select + 1,
+ DBOP_project_order_preserving = DBOP_project + 1,
+ DBOP_top = DBOP_project_order_preserving + 1,
+ DBOP_top_percent = DBOP_top + 1,
+ DBOP_top_plus_ties = DBOP_top_percent + 1,
+ DBOP_top_percent_plus_ties = DBOP_top_plus_ties + 1,
+ DBOP_rank = DBOP_top_percent_plus_ties + 1,
+ DBOP_rank_ties_equally = DBOP_rank + 1,
+ DBOP_rank_ties_equally_and_skip = DBOP_rank_ties_equally + 1,
+ DBOP_navigate = DBOP_rank_ties_equally_and_skip + 1,
+ DBOP_nesting = DBOP_navigate + 1,
+ DBOP_unnesting = DBOP_nesting + 1,
+ DBOP_nested_apply = DBOP_unnesting + 1,
+ DBOP_cross_tab = DBOP_nested_apply + 1,
+ DBOP_is_NULL = DBOP_cross_tab + 1,
+ DBOP_is_NOT_NULL = DBOP_is_NULL + 1,
+ DBOP_equal = DBOP_is_NOT_NULL + 1,
+ DBOP_not_equal = DBOP_equal + 1,
+ DBOP_less = DBOP_not_equal + 1,
+ DBOP_less_equal = DBOP_less + 1,
+ DBOP_greater = DBOP_less_equal + 1,
+ DBOP_greater_equal = DBOP_greater + 1,
+ DBOP_equal_all = DBOP_greater_equal + 1,
+ DBOP_not_equal_all = DBOP_equal_all + 1,
+ DBOP_less_all = DBOP_not_equal_all + 1,
+ DBOP_less_equal_all = DBOP_less_all + 1,
+ DBOP_greater_all = DBOP_less_equal_all + 1,
+ DBOP_greater_equal_all = DBOP_greater_all + 1,
+ DBOP_equal_any = DBOP_greater_equal_all + 1,
+ DBOP_not_equal_any = DBOP_equal_any + 1,
+ DBOP_less_any = DBOP_not_equal_any + 1,
+ DBOP_less_equal_any = DBOP_less_any + 1,
+ DBOP_greater_any = DBOP_less_equal_any + 1,
+ DBOP_greater_equal_any = DBOP_greater_any + 1,
+ DBOP_anybits = DBOP_greater_equal_any + 1,
+ DBOP_allbits = DBOP_anybits + 1,
+ DBOP_anybits_any = DBOP_allbits + 1,
+ DBOP_allbits_any = DBOP_anybits_any + 1,
+ DBOP_anybits_all = DBOP_allbits_any + 1,
+ DBOP_allbits_all = DBOP_anybits_all + 1,
+ DBOP_between = DBOP_allbits_all + 1,
+ DBOP_between_unordered = DBOP_between + 1,
+ DBOP_match = DBOP_between_unordered + 1,
+ DBOP_match_unique = DBOP_match + 1,
+ DBOP_match_partial = DBOP_match_unique + 1,
+ DBOP_match_partial_unique = DBOP_match_partial + 1,
+ DBOP_match_full = DBOP_match_partial_unique + 1,
+ DBOP_match_full_unique = DBOP_match_full + 1,
+ DBOP_scalar_parameter = DBOP_match_full_unique + 1,
+ DBOP_scalar_function = DBOP_scalar_parameter + 1,
+ DBOP_plus = DBOP_scalar_function + 1,
+ DBOP_minus = DBOP_plus + 1,
+ DBOP_times = DBOP_minus + 1,
+ DBOP_over = DBOP_times + 1,
+ DBOP_div = DBOP_over + 1,
+ DBOP_modulo = DBOP_div + 1,
+ DBOP_power = DBOP_modulo + 1,
+ DBOP_like = DBOP_power + 1,
+ DBOP_sounds_like = DBOP_like + 1,
+ DBOP_is_INVALID = DBOP_sounds_like + 1,
+ DBOP_is_TRUE = DBOP_is_INVALID + 1,
+ DBOP_is_FALSE = DBOP_is_TRUE + 1,
+ DBOP_and = DBOP_is_FALSE + 1,
+ DBOP_or = DBOP_and + 1,
+ DBOP_xor = DBOP_or + 1,
+ DBOP_equivalent = DBOP_xor + 1,
+ DBOP_not = DBOP_equivalent + 1,
+ DBOP_overlaps = DBOP_not + 1,
+ DBOP_case_condition = DBOP_overlaps + 1,
+ DBOP_case_value = DBOP_case_condition + 1,
+ DBOP_nullif = DBOP_case_value + 1,
+ DBOP_cast = DBOP_nullif + 1,
+ DBOP_coalesce = DBOP_cast + 1,
+ DBOP_position = DBOP_coalesce + 1,
+ DBOP_extract = DBOP_position + 1,
+ DBOP_char_length = DBOP_extract + 1,
+ DBOP_octet_length = DBOP_char_length + 1,
+ DBOP_bit_length = DBOP_octet_length + 1,
+ DBOP_substring = DBOP_bit_length + 1,
+ DBOP_upper = DBOP_substring + 1,
+ DBOP_lower = DBOP_upper + 1,
+ DBOP_trim = DBOP_lower + 1,
+ DBOP_translate = DBOP_trim + 1,
+ DBOP_convert = DBOP_translate + 1,
+ DBOP_string_concat = DBOP_convert + 1,
+ DBOP_current_date = DBOP_string_concat + 1,
+ DBOP_current_time = DBOP_current_date + 1,
+ DBOP_current_timestamp = DBOP_current_time + 1,
+ DBOP_content_select = DBOP_current_timestamp + 1,
+ DBOP_content = DBOP_content_select + 1,
+ DBOP_content_freetext = DBOP_content + 1,
+ DBOP_content_proximity = DBOP_content_freetext + 1,
+ DBOP_content_vector_or = DBOP_content_proximity + 1,
+ DBOP_delete = DBOP_content_vector_or + 1,
+ DBOP_update = DBOP_delete + 1,
+ DBOP_insert = DBOP_update + 1,
+ DBOP_min = DBOP_insert + 1,
+ DBOP_max = DBOP_min + 1,
+ DBOP_count = DBOP_max + 1,
+ DBOP_sum = DBOP_count + 1,
+ DBOP_avg = DBOP_sum + 1,
+ DBOP_any_sample = DBOP_avg + 1,
+ DBOP_stddev = DBOP_any_sample + 1,
+ DBOP_stddev_pop = DBOP_stddev + 1,
+ DBOP_var = DBOP_stddev_pop + 1,
+ DBOP_var_pop = DBOP_var + 1,
+ DBOP_first = DBOP_var_pop + 1,
+ DBOP_last = DBOP_first + 1,
+ DBOP_in = DBOP_last + 1,
+ DBOP_exists = DBOP_in + 1,
+ DBOP_unique = DBOP_exists + 1,
+ DBOP_subset = DBOP_unique + 1,
+ DBOP_proper_subset = DBOP_subset + 1,
+ DBOP_superset = DBOP_proper_subset + 1,
+ DBOP_proper_superset = DBOP_superset + 1,
+ DBOP_disjoint = DBOP_proper_superset + 1,
+ DBOP_pass_through = DBOP_disjoint + 1,
+ DBOP_defined_by_GUID = DBOP_pass_through + 1,
+ DBOP_text_command = DBOP_defined_by_GUID + 1,
+ DBOP_SQL_select = DBOP_text_command + 1,
+ DBOP_prior_command_tree = DBOP_SQL_select + 1,
+ DBOP_add_columns = DBOP_prior_command_tree + 1,
+ DBOP_column_list_anchor = DBOP_add_columns + 1,
+ DBOP_column_list_element = DBOP_column_list_anchor + 1,
+ DBOP_command_list_anchor = DBOP_column_list_element + 1,
+ DBOP_command_list_element = DBOP_command_list_anchor + 1,
+ DBOP_from_list_anchor = DBOP_command_list_element + 1,
+ DBOP_from_list_element = DBOP_from_list_anchor + 1,
+ DBOP_project_list_anchor = DBOP_from_list_element + 1,
+ DBOP_project_list_element = DBOP_project_list_anchor + 1,
+ DBOP_row_list_anchor = DBOP_project_list_element + 1,
+ DBOP_row_list_element = DBOP_row_list_anchor + 1,
+ DBOP_scalar_list_anchor = DBOP_row_list_element + 1,
+ DBOP_scalar_list_element = DBOP_scalar_list_anchor + 1,
+ DBOP_set_list_anchor = DBOP_scalar_list_element + 1,
+ DBOP_set_list_element = DBOP_set_list_anchor + 1,
+ DBOP_sort_list_anchor = DBOP_set_list_element + 1,
+ DBOP_sort_list_element = DBOP_sort_list_anchor + 1,
+ DBOP_alter_character_set = DBOP_sort_list_element + 1,
+ DBOP_alter_collation = DBOP_alter_character_set + 1,
+ DBOP_alter_domain = DBOP_alter_collation + 1,
+ DBOP_alter_index = DBOP_alter_domain + 1,
+ DBOP_alter_procedure = DBOP_alter_index + 1,
+ DBOP_alter_schema = DBOP_alter_procedure + 1,
+ DBOP_alter_table = DBOP_alter_schema + 1,
+ DBOP_alter_trigger = DBOP_alter_table + 1,
+ DBOP_alter_view = DBOP_alter_trigger + 1,
+ DBOP_coldef_list_anchor = DBOP_alter_view + 1,
+ DBOP_coldef_list_element = DBOP_coldef_list_anchor + 1,
+ DBOP_create_assertion = DBOP_coldef_list_element + 1,
+ DBOP_create_character_set = DBOP_create_assertion + 1,
+ DBOP_create_collation = DBOP_create_character_set + 1,
+ DBOP_create_domain = DBOP_create_collation + 1,
+ DBOP_create_index = DBOP_create_domain + 1,
+ DBOP_create_procedure = DBOP_create_index + 1,
+ DBOP_create_schema = DBOP_create_procedure + 1,
+ DBOP_create_table = DBOP_create_schema + 1,
+ DBOP_create_temporary_table = DBOP_create_table + 1,
+ DBOP_create_translation = DBOP_create_temporary_table + 1,
+ DBOP_create_trigger = DBOP_create_translation + 1,
+ DBOP_create_view = DBOP_create_trigger + 1,
+ DBOP_drop_assertion = DBOP_create_view + 1,
+ DBOP_drop_character_set = DBOP_drop_assertion + 1,
+ DBOP_drop_collation = DBOP_drop_character_set + 1,
+ DBOP_drop_domain = DBOP_drop_collation + 1,
+ DBOP_drop_index = DBOP_drop_domain + 1,
+ DBOP_drop_procedure = DBOP_drop_index + 1,
+ DBOP_drop_schema = DBOP_drop_procedure + 1,
+ DBOP_drop_table = DBOP_drop_schema + 1,
+ DBOP_drop_translation = DBOP_drop_table + 1,
+ DBOP_drop_trigger = DBOP_drop_translation + 1,
+ DBOP_drop_view = DBOP_drop_trigger + 1,
+ DBOP_foreign_key = DBOP_drop_view + 1,
+ DBOP_grant_privileges = DBOP_foreign_key + 1,
+ DBOP_index_list_anchor = DBOP_grant_privileges + 1,
+ DBOP_index_list_element = DBOP_index_list_anchor + 1,
+ DBOP_primary_key = DBOP_index_list_element + 1,
+ DBOP_property_list_anchor = DBOP_primary_key + 1,
+ DBOP_property_list_element = DBOP_property_list_anchor + 1,
+ DBOP_referenced_table = DBOP_property_list_element + 1,
+ DBOP_rename_object = DBOP_referenced_table + 1,
+ DBOP_revoke_privileges = DBOP_rename_object + 1,
+ DBOP_schema_authorization = DBOP_revoke_privileges + 1,
+ DBOP_unique_key = DBOP_schema_authorization + 1
+ };
+typedef LONG DBDATATYPELIST;
+
+
+enum DBDATATYPELISTENUM
+ { DBDATATYPE_CHARACTER = 1,
+ DBDATATYPE_NUMERIC = 2,
+ DBDATATYPE_DECIMAL = 3,
+ DBDATATYPE_INTEGER = 4,
+ DBDATATYPE_SMALLINT = 5,
+ DBDATATYPE_FLOAT = 6,
+ DBDATATYPE_REAL = 7,
+ DBDATATYPE_DOUBLE = 8,
+ DBDATATYPE_DATE = 9,
+ DBDATATYPE_TIME = 10,
+ DBDATATYPE_TIMESTAMP = 11,
+ DBDATATYPE_VARCHAR = 12,
+ DBDATATYPE_BOOLEAN = 34,
+ DBDATATYPE_ENUMERATED = 35,
+ DBDATATYPE_LONGVARCHAR = -1,
+ DBDATATYPE_BINARY = -2,
+ DBDATATYPE_VARBINARY = -3,
+ DBDATATYPE_LONGVARBINARY = -4,
+ DBDATATYPE_BIGINT = -5,
+ DBDATATYPE_TINYINT = -6,
+ DBDATATYPE_BIT = -7,
+ DBDATATYPE_INTERVAL_YEAR = -80,
+ DBDATATYPE_INTERVAL_MONTH = -81,
+ DBDATATYPE_INTERVAL_YEAR_TO_MONTH = -82,
+ DBDATATYPE_INTERVAL_DAY = -83,
+ DBDATATYPE_INTERVAL_HOUR = -84,
+ DBDATATYPE_INTERVAL_MINUTE = -85,
+ DBDATATYPE_INTERVAL_SECOND = -86,
+ DBDATATYPE_INTERVAL_DAY_TO_HOUR = -87,
+ DBDATATYPE_INTERVAL_DAY_TO_MINUTE = -88,
+ DBDATATYPE_INTERVAL_DAY_TO_SECOND = -89,
+ DBDATATYPE_INTERVAL_HOUR_TO_MINUTE = -90,
+ DBDATATYPE_INTERVAL_HOUR_TO_SECOND = -91,
+ DBDATATYPE_INTERVAL_MINUTE_TO_SECOND = -92,
+ DBDATATYPE_UNICODE = -95
+ };
+typedef DWORD DBDATATYPEKIND;
+
+
+enum DBDATATYPEKINDENUM
+ { DBDATATYPEKIND_BASETYPE = 0,
+ DBDATATYPEKIND_DOMAIN = DBDATATYPEKIND_BASETYPE + 1
+ };
+typedef struct tagDBDATATYPE
+ {
+ DBDATATYPEKIND eKind;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ struct
+ {
+ DBDATATYPELIST edbdt;
+ ULONG cbMaxLength;
+ ULONG cbPrecision;
+ ULONG cbScale;
+ } DBBASETYPE;
+ /* [case()] */ LPWSTR pwszDomainName;
+ } ;
+ } DBDATATYPE;
+
+typedef struct tagDBPARAMS
+ {
+ ULONG cParamSets;
+ HACCESSOR hAccessor;
+ void __RPC_FAR *pData;
+ ULONG cbParamSetSize;
+ } DBPARAMS;
+
+typedef DWORD DBPARAMFLAGS;
+
+
+enum DBPARAMFLAGSENUM
+ { DBPARAMFLAGS_ISINPUT = 0x1,
+ DBPARAMFLAGS_ISOUTPUT = 0x2,
+ DBPARAMFLAGS_ISSIGNED = 0x10,
+ DBPARAMFLAGS_ISNULLABLE = 0x40,
+ DBPARAMFLAGS_ISOLEBLOB = 0x80
+ };
+typedef struct tagDBPARAMINFO
+ {
+ ULONG iNumber;
+ LPWSTR pwszName;
+ DBTYPE dwType;
+ ITypeInfo __RPC_FAR *pTypeInfo;
+ ULONG cbMaxLength;
+ ULONG cPrecision;
+ LONG cScale;
+ DBPARAMFLAGS dwFlags;
+ } DBPARAMINFO;
+
+#define DB_UNSEARCHABLE 0x01
+#define DB_LIKE_ONLY 0x02
+#define DB_ALL_EXCEPT_LIKE 0x03
+#define DB_SEARCHABLE 0x04
+typedef DWORD DBPROPERTYOPTIONS;
+
+
+enum DBPROPERTYOPTIONSENUM
+ { DBPROPERTYOPTIONS_SETIFCHEAP = 0x1,
+ DBPROPERTYOPTIONS_NOTSUPPORTED = 0x200,
+ DBPROPERTYOPTIONS_DEFAULT = 0x400
+ };
+typedef struct tagDBPROPERTYSUPPORT
+ {
+ GUID guidProperty;
+ VARIANT vValue;
+ DBID colid;
+ DBPROPERTYOPTIONS dwOptions;
+ } DBPROPERTYSUPPORT;
+
+typedef struct tagDBPROPERTY
+ {
+ GUID guid;
+ VARIANT vValue;
+ } DBPROPERTY;
+
+
+
+extern RPC_IF_HANDLE DBStructureDefinitions_v0_0_c_ifspec;
+extern RPC_IF_HANDLE DBStructureDefinitions_v0_0_s_ifspec;
+#endif /* __DBStructureDefinitions_INTERFACE_DEFINED__ */
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0072
+ * at Fri Nov 15 09:42:41 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#ifndef CATALOGSTG_ROWID_INVALID
+typedef ULONG CATALOGSTG_ROWID;
+
+#define CATALOGSTG_ROWID_INVALID ((CATALOGSTG_ROWID) 0xffffffff)
+#endif // CATALOGSTG_ROWID_INVALID
+typedef
+enum _CATALOGSTG_ACTION
+ { CATALOGSTG_NOACTION = 0,
+ CATALOGSTG_ADD = 1,
+ CATALOGSTG_UPDATE = 2,
+ CATALOGSTG_REPLACE = 3,
+ CATALOGSTG_DELETE = 4
+ } CATALOGSTG_ACTION;
+
+typedef struct _CATALOG_UPDATE_ROWINFO
+ {
+ USHORT wAction;
+ USHORT wReserved;
+ CATALOGSTG_ROWID RowId;
+ PVOID pData;
+ HRESULT hr;
+ } CATALOG_UPDATE_ROWINFO;
+
+typedef struct _CATALOG_UPDATE_ROWINFO __RPC_FAR *PCATALOG_UPDATE_ROWINFO;
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0072_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0072_v0_0_s_ifspec;
+
+#ifndef __ISummaryCatalogStorage_INTERFACE_DEFINED__
+#define __ISummaryCatalogStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISummaryCatalogStorage
+ * at Fri Nov 15 09:42:41 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_ISummaryCatalogStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISummaryCatalogStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE UpdateRows(
+ /* [in] */ ULONG cColumns,
+ /* [size_is][in] */ DBID __RPC_FAR *rColumns,
+ /* [in] */ ULONG cBindings,
+ /* [size_is][in] */ DBBINDING __RPC_FAR *rBindings,
+ /* [in] */ ULONG cRows,
+ /* [size_is][out][in] */ CATALOG_UPDATE_ROWINFO __RPC_FAR *rRowInfo) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISummaryCatalogStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISummaryCatalogStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISummaryCatalogStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISummaryCatalogStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UpdateRows )(
+ ISummaryCatalogStorage __RPC_FAR * This,
+ /* [in] */ ULONG cColumns,
+ /* [size_is][in] */ DBID __RPC_FAR *rColumns,
+ /* [in] */ ULONG cBindings,
+ /* [size_is][in] */ DBBINDING __RPC_FAR *rBindings,
+ /* [in] */ ULONG cRows,
+ /* [size_is][out][in] */ CATALOG_UPDATE_ROWINFO __RPC_FAR *rRowInfo);
+
+ END_INTERFACE
+ } ISummaryCatalogStorageVtbl;
+
+ interface ISummaryCatalogStorage
+ {
+ CONST_VTBL struct ISummaryCatalogStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISummaryCatalogStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISummaryCatalogStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISummaryCatalogStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISummaryCatalogStorage_UpdateRows(This,cColumns,rColumns,cBindings,rBindings,cRows,rRowInfo) \
+ (This)->lpVtbl -> UpdateRows(This,cColumns,rColumns,cBindings,rBindings,cRows,rRowInfo)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ISummaryCatalogStorage_UpdateRows_Proxy(
+ ISummaryCatalogStorage __RPC_FAR * This,
+ /* [in] */ ULONG cColumns,
+ /* [size_is][in] */ DBID __RPC_FAR *rColumns,
+ /* [in] */ ULONG cBindings,
+ /* [size_is][in] */ DBBINDING __RPC_FAR *rBindings,
+ /* [in] */ ULONG cRows,
+ /* [size_is][out][in] */ CATALOG_UPDATE_ROWINFO __RPC_FAR *rRowInfo);
+
+
+void __RPC_STUB ISummaryCatalogStorage_UpdateRows_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISummaryCatalogStorage_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0073
+ * at Fri Nov 15 09:42:41 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+typedef struct _CATALOG_VIEW_COLUMN_
+ {
+ DBID colid;
+ BOOL fSortKey;
+ ULONG sortOrder;
+ LCID locale;
+ } CATALOG_VIEW_COLUMN;
+
+typedef struct _CATALOG_VIEW_
+ {
+ ULONG id;
+ ULONG cCols;
+ /* [size_is] */ CATALOG_VIEW_COLUMN __RPC_FAR *rCols;
+ } CATALOG_VIEW;
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0073_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0073_v0_0_s_ifspec;
+
+#ifndef __ISummaryCatalogStorageView_INTERFACE_DEFINED__
+#define __ISummaryCatalogStorageView_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISummaryCatalogStorageView
+ * at Fri Nov 15 09:42:41 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_ISummaryCatalogStorageView;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISummaryCatalogStorageView : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateView(
+ /* [in] */ CATALOG_VIEW __RPC_FAR *pView,
+ /* [in] */ BOOL fWait) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetViews(
+ /* [out][in] */ ULONG __RPC_FAR *pcViews,
+ /* [size_is][out] */ CATALOG_VIEW __RPC_FAR *__RPC_FAR *prViews) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteView(
+ /* [in] */ ULONG id) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseViews(
+ /* [in] */ ULONG cViews,
+ /* [size_is][in] */ CATALOG_VIEW __RPC_FAR *rViews) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISummaryCatalogStorageViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISummaryCatalogStorageView __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISummaryCatalogStorageView __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISummaryCatalogStorageView __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateView )(
+ ISummaryCatalogStorageView __RPC_FAR * This,
+ /* [in] */ CATALOG_VIEW __RPC_FAR *pView,
+ /* [in] */ BOOL fWait);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetViews )(
+ ISummaryCatalogStorageView __RPC_FAR * This,
+ /* [out][in] */ ULONG __RPC_FAR *pcViews,
+ /* [size_is][out] */ CATALOG_VIEW __RPC_FAR *__RPC_FAR *prViews);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteView )(
+ ISummaryCatalogStorageView __RPC_FAR * This,
+ /* [in] */ ULONG id);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseViews )(
+ ISummaryCatalogStorageView __RPC_FAR * This,
+ /* [in] */ ULONG cViews,
+ /* [size_is][in] */ CATALOG_VIEW __RPC_FAR *rViews);
+
+ END_INTERFACE
+ } ISummaryCatalogStorageViewVtbl;
+
+ interface ISummaryCatalogStorageView
+ {
+ CONST_VTBL struct ISummaryCatalogStorageViewVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISummaryCatalogStorageView_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISummaryCatalogStorageView_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISummaryCatalogStorageView_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISummaryCatalogStorageView_CreateView(This,pView,fWait) \
+ (This)->lpVtbl -> CreateView(This,pView,fWait)
+
+#define ISummaryCatalogStorageView_GetViews(This,pcViews,prViews) \
+ (This)->lpVtbl -> GetViews(This,pcViews,prViews)
+
+#define ISummaryCatalogStorageView_DeleteView(This,id) \
+ (This)->lpVtbl -> DeleteView(This,id)
+
+#define ISummaryCatalogStorageView_ReleaseViews(This,cViews,rViews) \
+ (This)->lpVtbl -> ReleaseViews(This,cViews,rViews)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ISummaryCatalogStorageView_CreateView_Proxy(
+ ISummaryCatalogStorageView __RPC_FAR * This,
+ /* [in] */ CATALOG_VIEW __RPC_FAR *pView,
+ /* [in] */ BOOL fWait);
+
+
+void __RPC_STUB ISummaryCatalogStorageView_CreateView_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ISummaryCatalogStorageView_GetViews_Proxy(
+ ISummaryCatalogStorageView __RPC_FAR * This,
+ /* [out][in] */ ULONG __RPC_FAR *pcViews,
+ /* [size_is][out] */ CATALOG_VIEW __RPC_FAR *__RPC_FAR *prViews);
+
+
+void __RPC_STUB ISummaryCatalogStorageView_GetViews_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ISummaryCatalogStorageView_DeleteView_Proxy(
+ ISummaryCatalogStorageView __RPC_FAR * This,
+ /* [in] */ ULONG id);
+
+
+void __RPC_STUB ISummaryCatalogStorageView_DeleteView_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ISummaryCatalogStorageView_ReleaseViews_Proxy(
+ ISummaryCatalogStorageView __RPC_FAR * This,
+ /* [in] */ ULONG cViews,
+ /* [size_is][in] */ CATALOG_VIEW __RPC_FAR *rViews);
+
+
+void __RPC_STUB ISummaryCatalogStorageView_ReleaseViews_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISummaryCatalogStorageView_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/cderr.h b/public/sdk/inc/cderr.h
new file mode 100644
index 000000000..1ef4f973d
--- /dev/null
+++ b/public/sdk/inc/cderr.h
@@ -0,0 +1,58 @@
+/*****************************************************************************\
+* *
+* cderr.h - Common dialog error return codes *
+* *
+* Version 1.0 *
+* *
+* Copyright (c) 1992-1996, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+#ifndef _INC_CDERR
+#define _INC_CDERR
+
+#define CDERR_DIALOGFAILURE 0xFFFF
+
+#define CDERR_GENERALCODES 0x0000
+#define CDERR_STRUCTSIZE 0x0001
+#define CDERR_INITIALIZATION 0x0002
+#define CDERR_NOTEMPLATE 0x0003
+#define CDERR_NOHINSTANCE 0x0004
+#define CDERR_LOADSTRFAILURE 0x0005
+#define CDERR_FINDRESFAILURE 0x0006
+#define CDERR_LOADRESFAILURE 0x0007
+#define CDERR_LOCKRESFAILURE 0x0008
+#define CDERR_MEMALLOCFAILURE 0x0009
+#define CDERR_MEMLOCKFAILURE 0x000A
+#define CDERR_NOHOOK 0x000B
+#define CDERR_REGISTERMSGFAIL 0x000C
+
+#define PDERR_PRINTERCODES 0x1000
+#define PDERR_SETUPFAILURE 0x1001
+#define PDERR_PARSEFAILURE 0x1002
+#define PDERR_RETDEFFAILURE 0x1003
+#define PDERR_LOADDRVFAILURE 0x1004
+#define PDERR_GETDEVMODEFAIL 0x1005
+#define PDERR_INITFAILURE 0x1006
+#define PDERR_NODEVICES 0x1007
+#define PDERR_NODEFAULTPRN 0x1008
+#define PDERR_DNDMMISMATCH 0x1009
+#define PDERR_CREATEICFAILURE 0x100A
+#define PDERR_PRINTERNOTFOUND 0x100B
+#define PDERR_DEFAULTDIFFERENT 0x100C
+
+#define CFERR_CHOOSEFONTCODES 0x2000
+#define CFERR_NOFONTS 0x2001
+#define CFERR_MAXLESSTHANMIN 0x2002
+
+#define FNERR_FILENAMECODES 0x3000
+#define FNERR_SUBCLASSFAILURE 0x3001
+#define FNERR_INVALIDFILENAME 0x3002
+#define FNERR_BUFFERTOOSMALL 0x3003
+
+#define FRERR_FINDREPLACECODES 0x4000
+#define FRERR_BUFFERLENGTHZERO 0x4001
+
+#define CCERR_CHOOSECOLORCODES 0x5000
+
+#endif /* !_INC_CDERR */
diff --git a/public/sdk/inc/cdlink.hxx b/public/sdk/inc/cdlink.hxx
new file mode 100644
index 000000000..c9658d318
--- /dev/null
+++ b/public/sdk/inc/cdlink.hxx
@@ -0,0 +1,131 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1991 - 1992.
+//
+// File: cdlink.hxx
+//
+// Contents:
+//
+// Classes: CDlink
+//
+// History: 16-Oct-91 KevinRo Created
+//
+//--------------------------------------------------------------------------
+
+#ifndef _CDLINK_HXX_
+#define _CDLINK_HXX_
+
+//+----------------------------------------------------------------------
+//
+// Class: CDLink, dl
+//
+// Purpose: A double linked list class
+//
+//----------------------------------------------------------------------
+
+class CDLink {
+public:
+ CDLink();
+ virtual ~CDLink();
+ CDLink * Next() const;
+ void SetNext(CDLink * dlNext);
+ CDLink * Prev() const;
+ void SetPrev(CDLink * dlPrev);
+ EXPORTDEF VOID LinkAfter(CDLink * dlPrev);
+ EXPORTDEF VOID LinkBefore(CDLink * dlNext);
+ EXPORTDEF VOID UnLink();
+
+private:
+ CDLink *_dlNext;
+ CDLink *_dlPrev;
+};
+
+//+----------------------------------------------------------------------
+//
+// Member: CDLink::CDLink
+//
+// Purpose: Constructor for CDLink
+//
+//-----------------------------------------------------------------------
+
+inline CDLink::CDLink()
+{
+ _dlNext = NULL;
+ _dlPrev = NULL;
+}
+//+----------------------------------------------------------------------
+//
+// Member: CDLink::~CDLink
+//
+// Purpose: Destructor for CDLink
+//
+//-----------------------------------------------------------------------
+
+inline CDLink::~CDLink()
+{
+ _dlNext = NULL;
+ _dlPrev = NULL;
+}
+
+//+----------------------------------------------------------------------
+//
+// Member: CDLink::Next
+//
+// Purpose: Member variable access function
+//
+// Returns: _dlNext
+//
+//-----------------------------------------------------------------------
+
+inline CDLink *CDLink::Next() const
+{
+ return _dlNext;
+}
+
+//+----------------------------------------------------------------------
+//
+// Member: CDLink::SetNext
+//
+// Purpose: Member variable set function
+//
+// Returns: Nothing
+//
+//-----------------------------------------------------------------------
+
+inline void CDLink::SetNext(CDLink * dlNext)
+{
+ _dlNext = dlNext;
+}
+
+//+----------------------------------------------------------------------
+//
+// Member: CDLink::Prev
+//
+// Purpose: Member variable access function
+//
+// Returns: _dlPrev
+//
+//-----------------------------------------------------------------------
+
+inline CDLink *CDLink::Prev() const
+{
+ return _dlPrev;
+}
+
+//+----------------------------------------------------------------------
+//
+// Member: CDLink::SetPrev
+//
+// Purpose: Member variable set function
+//
+// Returns: Nothing
+//
+//-----------------------------------------------------------------------
+
+inline void CDLink::SetPrev(CDLink * dlPrev)
+{
+ _dlPrev = dlPrev;
+}
+
+#endif
diff --git a/public/sdk/inc/cfg.h b/public/sdk/inc/cfg.h
new file mode 100644
index 000000000..ed961c533
--- /dev/null
+++ b/public/sdk/inc/cfg.h
@@ -0,0 +1,98 @@
+/*++
+
+Copyright (c) 1989-1995 Microsoft Corporation
+
+Module Name:
+
+ cfg.h
+
+Abstract:
+
+ This module contains the common Configuration Manager definitions for
+ both user mode and kernel mode code.
+
+Author:
+
+ Paula Tomlinson (paulat) 06/19/1995
+
+Revision History:
+
+--*/
+
+#ifndef _CFG_INCLUDED_
+#define _CFG_INCLUDED_
+
+//
+// The following definitions are also used by kernel mode code to
+// set up the registry.
+//
+
+//
+// DevInst problem values, returned by call to CM_Get_DevInst_Status
+//
+#define CM_PROB_NOT_CONFIGURED (0x00000001) // no config for device
+#define CM_PROB_DEVLOADER_FAILED (0x00000002) // service load failed
+#define CM_PROB_OUT_OF_MEMORY (0x00000003) // out of memory
+#define CM_PROB_ENTRY_IS_WRONG_TYPE (0x00000004) //
+#define CM_PROB_LACKED_ARBITRATOR (0x00000005) //
+#define CM_PROB_BOOT_CONFIG_CONFLICT (0x00000006) // boot config conflict
+#define CM_PROB_FAILED_FILTER (0x00000007) //
+#define CM_PROB_DEVLOADER_NOT_FOUND (0x00000008) // Devloader not found
+#define CM_PROB_INVALID_DATA (0x00000009) //
+#define CM_PROB_FAILED_START (0x0000000A) //
+#define CM_PROB_LIAR (0x0000000B) //
+#define CM_PROB_NORMAL_CONFLICT (0x0000000C) // config conflict
+#define CM_PROB_NOT_VERIFIED (0x0000000D) //
+#define CM_PROB_NEED_RESTART (0x0000000E) // requires restart
+#define CM_PROB_REENUMERATION (0x0000000F) //
+#define CM_PROB_PARTIAL_LOG_CONF (0x00000010) //
+#define CM_PROB_UNKNOWN_RESOURCE (0x00000011) // unknown res type
+#define CM_PROB_REINSTALL (0x00000012) //
+#define CM_PROB_REGISTRY (0x00000013) //
+#define CM_PROB_VXDLDR (0x00000014) // WINDOWS 95 ONLY
+#define CM_PROB_WILL_BE_REMOVED (0x00000015) // devinst will remove
+#define CM_PROB_DISABLED (0x00000016) // devinst is disabled
+#define CM_PROB_DEVLOADER_NOT_READY (0x00000017) // Devloader not ready
+#define CM_PROB_DEVICE_NOT_THERE (0x00000018) // device doesn't exist
+#define CM_PROB_MOVED (0x00000019) //
+#define CM_PROB_TOO_EARLY (0x0000001A) //
+#define CM_PROB_NO_VALID_LOG_CONF (0x0000001B) // no valid log config
+#define CM_PROB_FAILED_INSTALL (0x0000001C) // install failed
+#define CM_PROB_HARDWARE_DISABLED (0x0000001D) // device disabled
+#define CM_PROB_CANT_SHARE_IRQ (0x0000001E) // can't share IRQ
+#define NUM_CM_PROB (0x0000001F)
+
+//
+// Configuration Manager Global State Flags (returned by CM_Get_Global_State)
+//
+#define CM_GLOBAL_STATE_CAN_DO_UI (0x00000001) // Can do UI?
+#define CM_GLOBAL_STATE_ON_BIG_STACK (0x00000002) // WINDOWS 95 ONLY
+#define CM_GLOBAL_STATE_SERVICES_AVAILABLE (0x00000004) // CM APIs available?
+#define CM_GLOBAL_STATE_SHUTTING_DOWN (0x00000008) // CM shutting down
+#define CM_GLOBAL_STATE_DETECTION_PENDING (0x00000010) // detection pending
+
+//
+// Device Instance status flags, returned by call to CM_Get_DevInst_Status
+//
+#define DN_ROOT_ENUMERATED (0x00000001) // Was enumerated by ROOT
+#define DN_DRIVER_LOADED (0x00000002) // Has Register_Device_Driver
+#define DN_ENUM_LOADED (0x00000004) // Has Register_Enumerator
+#define DN_STARTED (0x00000008) // Is currently configured
+#define DN_MANUAL (0x00000010) // Manually installed
+#define DN_NEED_TO_ENUM (0x00000020) // May need reenumeration
+#define DN_NOT_FIRST_TIME (0x00000040) // Has received a config
+#define DN_HARDWARE_ENUM (0x00000080) // Enum generates hardware ID
+#define DN_LIAR (0x00000100) // Lied about can reconfig once
+#define DN_HAS_MARK (0x00000200) // Not CM_Create_DevInst lately
+#define DN_HAS_PROBLEM (0x00000400) // Need device installer
+#define DN_FILTERED (0x00000800) // Is filtered
+#define DN_MOVED (0x00001000) // Has been moved
+#define DN_DISABLEABLE (0x00002000) // Can be rebalanced
+#define DN_REMOVABLE (0x00004000) // Can be removed
+#define DN_PRIVATE_PROBLEM (0x00008000) // Has a private problem
+#define DN_MF_PARENT (0x00010000) // Multi function parent
+#define DN_MF_CHILD (0x00020000) // Multi function child
+#define DN_WILL_BE_REMOVED (0x00040000) // DevInst is being removed
+
+#endif // _CFG_INCLUDED_
+
diff --git a/public/sdk/inc/cfgmgr32.h b/public/sdk/inc/cfgmgr32.h
new file mode 100644
index 000000000..82559cca8
--- /dev/null
+++ b/public/sdk/inc/cfgmgr32.h
@@ -0,0 +1,2385 @@
+/*++
+
+Copyright (c) 1989-1995 Microsoft Corporation
+
+Module Name:
+
+ cfgmgr32.h
+
+Abstract:
+
+ This module contains the user APIs for the Configuration Manager,
+ along with any public data structures needed to call these APIs.
+
+Author:
+
+ Paula Tomlinson (paulat) 06/19/1995
+
+
+Revision History:
+
+
+--*/
+
+#ifndef _CFGMGR32_
+#define _CFGMGR32_
+
+#include <cfg.h>
+
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#ifndef __LPGUID_DEFINED__
+#define __LPGUID_DEFINED__
+typedef GUID *LPGUID;
+#endif
+
+
+
+#if !defined (_CFGMGR32_)
+#define CMAPI DECLSPEC_IMPORT
+#else
+#define CMAPI
+#endif
+
+typedef CONST VOID *PCVOID;
+
+
+
+//--------------------------------------------------------------
+// General size definitions
+//--------------------------------------------------------------
+
+#define MAX_DEVICE_ID_LEN 200
+#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
+
+#define MAX_GUID_STRING_LEN 39 // 38 chars + terminator null
+#define MAX_CLASS_NAME_LEN 32
+#define MAX_PROFILE_LEN 80
+
+#define MAX_CONFIG_VALUE 9999
+#define MAX_INSTANCE_VALUE 9999
+
+#define MAX_MEM_REGISTERS 9 // Win95 compatible
+#define MAX_IO_PORTS 20 // Win95 compatible
+#define MAX_IRQS 7 // Win95 compatible
+#define MAX_DMA_CHANNELS 7 // Win95 compatible
+
+#define DWORD_MAX 0xFFFFFFFF
+#define DWORDLONG_MAX 0xFFFFFFFFFFFFFFFF
+
+#define CONFIGMG_VERSION 0x0400
+
+
+//--------------------------------------------------------------
+// Data types
+//--------------------------------------------------------------
+
+
+//
+// Work around weirdness with Win32 typedef...
+//
+#ifdef NT_INCLUDED
+
+//
+// __int64 is only supported by 2.0 and later midl.
+// __midl is set by the 2.0 midl and not by 1.0 midl.
+//
+#if (!defined(MIDL_PASS) || defined(__midl)) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
+typedef unsigned __int64 DWORDLONG;
+#else
+typedef double DWORDLONG;
+#endif
+typedef DWORDLONG *PDWORDLONG;
+
+#endif /* NT_INCLUDED */
+
+
+//
+// Standardized Return Value data type
+//
+typedef DWORD RETURN_TYPE;
+typedef RETURN_TYPE CONFIGRET;
+
+//
+// Device Instance Handle data type
+//
+typedef DWORD DEVNODE, DEVINST;
+typedef DEVNODE *PDEVNODE, *PDEVINST;
+
+//
+// Device Instance Identifier data type
+// The device instance ID specifies the registry path, relative to the
+// Enum key , for a device instance. For example: \Root\*PNP0500\0000.
+//
+typedef CHAR *DEVNODEID_A, *DEVINSTID_A; // Device ID ANSI name.
+typedef WCHAR *DEVNODEID_W, *DEVINSTID_W; // Device ID Unicode name.
+#ifdef UNICODE
+typedef DEVNODEID_W DEVNODEID;
+typedef DEVINSTID_W DEVINSTID;
+#else
+typedef DEVNODEID_A DEVNODEID;
+typedef DEVINSTID_A DEVINSTID;
+#endif
+
+//
+// Logical Configuration Handle data type
+//
+typedef DWORD LOG_CONF;
+typedef LOG_CONF *PLOG_CONF;
+
+//
+// Resource Descriptor Handle data type
+//
+typedef DWORD RES_DES;
+typedef RES_DES *PRES_DES;
+
+//
+// Resource ID data type (may take any of the ResType_* values)
+//
+typedef ULONG RESOURCEID;
+typedef RESOURCEID *PRESOURCEID;
+
+//
+// Priority data type (may take any of the LCPRI_* values)
+//
+typedef ULONG PRIORITY;
+
+//
+// Range List Handle data type
+//
+typedef DWORD RANGE_LIST;
+typedef RANGE_LIST *PRANGE_LIST;
+
+//
+// Range Element Handle data type
+//
+typedef DWORD RANGE_ELEMENT;
+typedef RANGE_ELEMENT *PRANGE_ELEMENT;
+
+typedef HANDLE HMACHINE;
+typedef HMACHINE *PHMACHINE;
+
+
+typedef ULONG REGDISPOSITION;
+
+
+//
+// use 1 byte packing for the data structures
+//
+#include "pshpack1.h"
+
+//--------------------------------------------------------------
+// Memory resource
+//--------------------------------------------------------------
+
+//
+// Define the attribute flags for memory ranges. Each bit flag is
+// identified by a constant bitmask. Following the bitmask definition,
+// are the two possible values.
+//
+#define fMD_MemoryType (0x1) // Bitmask,whether memory is writable
+#define fMD_ROM (0x0) // Memory range is read-only
+#define fMD_RAM (0x1) // Memory range may be written to
+
+#define fMD_32_24 (0x2) // Bitmask, memory is 24 or 32-bit
+#define fMD_24 (0x0) // Memory range is 24-bit
+#define fMD_32 (0x2) // Memory range is 32-bit
+
+#define fMD_Prefetchable (0x4) // Bitmask,whether memory prefetchable
+#define fMD_PrefetchDisallowed (0x0) // Memory range is not prefetchable
+#define fMD_PrefetchAllowed (0x4) // Memory range is prefetchable
+
+#define fMD_Readable (0x8) // Bitmask,whether memory is readable
+#define fMD_ReadAllowed (0x0) // Memory range is readable
+#define fMD_ReadDisallowed (0x8) // Memory range is write-only
+
+#define fMD_CombinedWrite (0x10) // Bitmask,supports write-behind
+#define fMD_CombinedWriteDisallowed (0x0) // no combined-write caching
+#define fMD_CombinedWriteAllowed (0x10) // supports combined-write caching
+
+//
+// MEM_RANGE Structure
+//
+typedef struct Mem_Range_s {
+ DWORDLONG MR_Align; // specifies mask for base alignment
+ ULONG MR_nBytes; // specifies number of bytes required
+ DWORDLONG MR_Min; // specifies minimum address of the range
+ DWORDLONG MR_Max; // specifies maximum address of the range
+ DWORD MR_Flags; // specifies flags describing range (fMD flags)
+ DWORD MR_Reserved;
+} MEM_RANGE, *PMEM_RANGE;
+
+//
+// MEM_DES structure
+//
+typedef struct Mem_Des_s {
+ DWORD MD_Count; // number of MEM_RANGE structs in MEM_RESOURCE
+ DWORD MD_Type; // size (in bytes) of MEM_RANGE (MType_Range)
+ DWORDLONG MD_Alloc_Base; // base memory address of range allocated
+ DWORDLONG MD_Alloc_End; // end of allocated range
+ DWORD MD_Flags; // flags describing allocated range (fMD flags)
+ DWORD MD_Reserved;
+} MEM_DES, *PMEM_DES;
+
+//
+// MEM_RESOURCE structure
+//
+typedef struct Mem_Resource_s {
+ MEM_DES MEM_Header; // info about memory range list
+ MEM_RANGE MEM_Data[ANYSIZE_ARRAY]; // list of memory ranges
+} MEM_RESOURCE, *PMEM_RESOURCE;
+
+//
+// Define the size of each range structure
+//
+#define MType_Range sizeof(struct Mem_Range_s)
+
+
+
+//--------------------------------------------------------------
+// I/O Port Resource
+//--------------------------------------------------------------
+
+//
+// Define the attribute flags for port resources. Each bit flag is
+// identified by a constant bitmask. Following the bitmask definition,
+// are the two possible values.
+//
+#define fIOD_PortType (0x1) // Bitmask,whether port is IO or memory
+#define fIOD_Memory (0x0) // Port resource really uses memory
+#define fIOD_IO (0x1) // Port resource uses IO ports
+
+//
+// IO_RANGE structure
+//
+typedef struct IO_Range_s {
+ DWORDLONG IOR_Align; // mask for base alignment
+ DWORD IOR_nPorts; // number of ports
+ DWORDLONG IOR_Min; // minimum port address
+ DWORDLONG IOR_Max; // maximum port address
+ DWORD IOR_RangeFlags; // flags for this port range
+ DWORDLONG IOR_Alias; // multiplier that generates aliases for port(s)
+} IO_RANGE, *PIO_RANGE;
+
+//
+// IO_DES structure
+//
+typedef struct IO_Des_s {
+ DWORD IOD_Count; // number of IO_RANGE structs in IO_RESOURCE
+ DWORD IOD_Type; // size (in bytes) of IO_RANGE (IOType_Range)
+ DWORDLONG IOD_Alloc_Base; // base of allocated port range
+ DWORDLONG IOD_Alloc_End; // end of allocated port range
+ DWORD IOD_DesFlags; // flags relating to allocated port range
+} IO_DES, *PIO_DES;
+
+//
+// IO_RESOURCE
+//
+typedef struct IO_Resource_s {
+ IO_DES IO_Header; // info about I/O port range list
+ IO_RANGE IO_Data[ANYSIZE_ARRAY]; // list of I/O port ranges
+} IO_RESOURCE, *PIO_RESOURCE;
+
+#define IOA_Local 0xff
+
+//
+// Define the size of each range structure
+//
+#define IOType_Range sizeof(struct IO_Range_s)
+
+
+
+//--------------------------------------------------------------
+// DMA Resource
+//--------------------------------------------------------------
+
+//
+// Define the attribute flags for a DMA resource range. Each bit flag is
+// identified with a constant bitmask. Following the bitmask definition
+// are the possible values.
+//
+#define mDD_Width (0x3) // Bitmask, width of the DMA channel:
+#define fDD_BYTE (0x0) // 8-bit DMA channel
+#define fDD_WORD (0x1) // 16-bit DMA channel
+#define fDD_DWORD (0x2) // 32-bit DMA channel
+
+//
+// DMA_RANGE structure
+//
+typedef struct DMA_Range_s {
+ ULONG DR_Min; // minimum DMA port in the range
+ ULONG DR_Max; // maximum DMA port in the range
+ ULONG DR_Flags; // flags describing the range (fDD flags)
+} DMA_RANGE, *PDMA_RANGE;
+
+//
+// DMA_DES structure
+//
+typedef struct DMA_Des_s {
+ DWORD DD_Count; // number of DMA_RANGE structs in DMA_RESOURCE
+ DWORD DD_Type; // size (in bytes) of DMA_RANGE struct (DType_Range)
+ DWORD DD_Flags; // Flags describing DMA channel (fDD flags)
+ ULONG DD_Alloc_Chan; // Specifies the DMA channel that was allocated
+} DMA_DES, *PDMA_DES;
+
+//
+// DMA_RESOURCE
+//
+typedef struct DMA_Resource_s {
+ DMA_DES DMA_Header; // info about DMA channel range list
+ DMA_RANGE DMA_Data[ANYSIZE_ARRAY]; // list of DMA ranges
+} DMA_RESOURCE, *PDMA_RESOURCE;
+
+//
+// Define the size of each range structure
+//
+#define DType_Range sizeof(struct DMA_Range_s)
+
+
+
+//--------------------------------------------------------------
+// Interrupt Resource
+//--------------------------------------------------------------
+
+//
+// Define the attribute flags for an interrupt resource range. Each bit flag
+// is identified with a constant bitmask. Following the bitmask definition
+// are the possible values.
+//
+#define mIRQD_Share (0x1) // Bitmask,whether the IRQ may be shared:
+#define fIRQD_Exclusive (0x0) // The IRQ may not be shared
+#define fIRQD_Share (0x1) // The IRQ may be shared
+
+#define mIRQD_Edge_Level (0x2) // Bitmask,whether edge or level triggered:
+#define fIRQD_Level (0x0) // The IRQ is level-sensitive
+#define fIRQD_Edge (0x2) // The IRQ is edge-sensitive
+
+//
+// IRQ_RANGE
+//
+typedef struct IRQ_Range_s {
+ ULONG IRQR_Min; // minimum IRQ in the range
+ ULONG IRQR_Max; // maximum IRQ in the range
+ ULONG IRQR_Flags; // flags describing the range (fIRQD flags)
+} IRQ_RANGE, *PIRQ_RANGE;
+
+//
+// IRQ_DES structure
+//
+typedef struct IRQ_Des_s {
+ DWORD IRQD_Count; // number of IRQ_RANGE structs in IRQ_RESOURCE
+ DWORD IRQD_Type; // size (in bytes) of IRQ_RANGE (IRQType_Range)
+ DWORD IRQD_Flags; // flags describing the IRQ (fIRQD flags)
+ ULONG IRQD_Alloc_Num; // specifies the IRQ that was allocated
+ ULONG IRQD_Affinity;
+} IRQ_DES, *PIRQ_DES;
+
+//
+// IRQ_RESOURCE structure
+//
+typedef struct IRQ_Resource_s {
+ IRQ_DES IRQ_Header; // info about IRQ range list
+ IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY]; // list of IRQ ranges
+} IRQ_RESOURCE, *PIRQ_RESOURCE;
+
+//
+// Define the size of each range structure
+//
+#define IRQType_Range sizeof(struct IRQ_Range_s)
+
+
+//--------------------------------------------------------------
+// Class-Specific Resource
+//--------------------------------------------------------------
+
+typedef struct CS_Des_s {
+ DWORD CSD_SignatureLength;
+ DWORD CSD_LegacyDataOffset;
+ DWORD CSD_LegacyDataSize;
+ DWORD CSD_Flags;
+ GUID CSD_ClassGuid;
+ BYTE CSD_Signature[ANYSIZE_ARRAY];
+} CS_DES, *PCS_DES;
+
+typedef struct CS_Resource_s {
+ CS_DES CS_Header;
+} CS_RESOURCE, *PCS_RESOURCE;
+
+
+//--------------------------------------------------------------
+// Hardware Profile Information
+//--------------------------------------------------------------
+
+//
+// Define flags relating to hardware profiles
+//
+#define CM_HWPI_NOT_DOCKABLE (0x00000000) // machine is not dockable
+#define CM_HWPI_UNDOCKED (0x00000001) // hw profile for docked config
+#define CM_HWPI_DOCKED (0x00000002) // hw profile for undocked config
+
+//
+// HWPROFILEINFO structure
+//
+typedef struct HWProfileInfo_sA {
+ ULONG HWPI_ulHWProfile; // handle of hw profile
+ CHAR HWPI_szFriendlyName[MAX_PROFILE_LEN]; // friendly name of hw profile
+ DWORD HWPI_dwFlags; // profile flags (CM_HWPI_*)
+} HWPROFILEINFO_A, *PHWPROFILEINFO_A;
+
+typedef struct HWProfileInfo_sW {
+ ULONG HWPI_ulHWProfile; // handle of hw profile
+ WCHAR HWPI_szFriendlyName[MAX_PROFILE_LEN]; // friendly name of hw profile
+ DWORD HWPI_dwFlags; // profile flags (CM_HWPI_*)
+} HWPROFILEINFO_W, *PHWPROFILEINFO_W;
+
+#ifdef UNICODE
+typedef HWPROFILEINFO_W HWPROFILEINFO;
+typedef PHWPROFILEINFO_W PHWPROFILEINFO;
+#else
+typedef HWPROFILEINFO_A HWPROFILEINFO;
+typedef PHWPROFILEINFO_A PHWPROFILEINFO;
+#endif
+
+
+//
+// revert back to normal default packing
+//
+#include "poppack.h"
+
+
+
+//--------------------------------------------------------------
+// Miscellaneous
+//--------------------------------------------------------------
+
+
+//
+// Resource types
+//
+#define ResType_All (0x00000000) // Return all resource types
+#define ResType_None (0x00000000) // Arbitration always succeeded
+#define ResType_Mem (0x00000001) // Physical address resource
+#define ResType_IO (0x00000002) // Physical I/O address resource
+#define ResType_DMA (0x00000003) // DMA channels resource
+#define ResType_IRQ (0x00000004) // IRQ resource
+#define ResType_MAX (0x00000004) // Maximum known ResType
+#define ResType_Ignored_Bit (0x00008000) // Ignore this resource
+#define ResType_ClassSpecific (0x0000FFFF) // class-specific resource
+
+//
+// Priority values
+//
+#define LCPRI_FORCECONFIG (0x00000000) // Coming from a forced config
+#define LCPRI_BOOTCONFIG (0x00000001) // Coming from a boot config
+#define LCPRI_DESIRED (0x00002000) // Preferable (better performance)
+#define LCPRI_NORMAL (0x00003000) // Workable (acceptable performance)
+#define LCPRI_LASTBESTCONFIG (0x00003FFF) // CM only--do not use
+#define LCPRI_SUBOPTIMAL (0x00005000) // Not desired, but will work
+#define LCPRI_LASTSOFTCONFIG (0x00007FFF) // CM only--do not use
+#define LCPRI_RESTART (0x00008000) // Need to restart
+#define LCPRI_REBOOT (0x00009000) // Need to reboot
+#define LCPRI_POWEROFF (0x0000A000) // Need to shutdown/power-off
+#define LCPRI_HARDRECONFIG (0x0000C000) // Need to change a jumper
+#define LCPRI_HARDWIRED (0x0000E000) // Cannot be changed
+#define LCPRI_IMPOSSIBLE (0x0000F000) // Impossible configuration
+#define LCPRI_DISABLED (0x0000FFFF) // Disabled configuration
+#define MAX_LCPRI (0x0000FFFF) // Maximum known LC Priority
+
+
+//
+// Flags specifying options for ranges that conflict with ranges alread in
+// the range list (CM_Add_Range)
+//
+#define CM_ADD_RANGE_ADDIFCONFLICT (0x00000000) // merg with conflicting range
+#define CM_ADD_RANGE_DONOTADDIFCONFLICT (0x00000001) // error if range conflicts
+#define CM_ADD_RANGE_BITS (0x00000001)
+
+
+//
+// Logical Config Flags (specified in call to CM_Get_First_Log_Conf
+//
+#define BASIC_LOG_CONF 0x00000000 // Specifies the req list.
+#define FILTERED_LOG_CONF 0x00000001 // Specifies the filtered req list.
+#define ALLOC_LOG_CONF 0x00000002 // Specifies the Alloc Element.
+#define BOOT_LOG_CONF 0x00000003 // Specifies the RM Alloc Element.
+#define FORCED_LOG_CONF 0x00000004 // Specifies the Forced Log Conf
+#define OVERRIDE_LOG_CONF 0x00000005 // Specifies the Override req list.
+#define NUM_LOG_CONF 0x00000006 // Number of Log Conf type
+#define LOG_CONF_BITS 0x00000007 // The bits of the log conf type.
+
+#define PRIORITY_EQUAL_FIRST (0x00000008) // Same priority, new one first
+#define PRIORITY_EQUAL_LAST (0x00000000) // Same priority, new one last
+#define PRIORITY_BIT (0x00000008)
+
+//
+// Registry disposition values
+// (specified in call to CM_Open_DevNode_Key and CM_Open_Class_Key)
+//
+#define RegDisposition_OpenAlways (0x00000000) // open if exists else create
+#define RegDisposition_OpenExisting (0x00000001) // open key only if exists
+#define RegDisposition_Bits (0x00000001)
+
+//
+// ulFlags values for CM API routines
+//
+
+//
+// Flags for CM_Add_ID
+//
+#define CM_ADD_ID_HARDWARE (0x00000000)
+#define CM_ADD_ID_COMPATIBLE (0x00000001)
+#define CM_ADD_ID_BITS (0x00000001)
+
+
+//
+// Device Node creation flags
+//
+#define CM_CREATE_DEVNODE_NORMAL (0x00000000) // install later
+#define CM_CREATE_DEVNODE_NO_WAIT_INSTALL (0x00000001) // install immediately
+#define CM_CREATE_DEVNODE_PHANTOM (0x00000002)
+#define CM_CREATE_DEVNODE_GENERATE_ID (0x00000004)
+#define CM_CREATE_DEVNODE_DO_NOT_INSTALL (0x00000008)
+#define CM_CREATE_DEVNODE_BITS (0x0000000F)
+
+#define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL
+#define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL
+#define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM
+#define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID
+#define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL
+#define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS
+
+
+//
+// Flags for CM_Delete_Class_Key
+//
+#define CM_DELETE_CLASS_ONLY (0x00000000)
+#define CM_DELETE_CLASS_SUBKEYS (0x00000001)
+#define CM_DELETE_CLASS_BITS (0x00000001)
+
+
+//
+// Detection reason flags (specified in call to CM_Run_Detection)
+//
+#define CM_DETECT_NEW_PROFILE (0x00000001) // detection for new hw profile
+#define CM_DETECT_CRASHED (0x00000002) // Previous detection crashed
+#define CM_DETECT_HWPROF_FIRST_BOOT (0x00000004)
+#define CM_DETECT_RUN (0x80000000)
+#define CM_DETECT_BITS (0x80000007)
+
+#define CM_DISABLE_POLITE (0x00000000) // Ask the driver
+#define CM_DISABLE_ABSOLUTE (0x00000001) // Don't ask the driver
+#define CM_DISABLE_HARDWARE (0x00000002) // Don't ask the driver, and won't be restarteable
+#define CM_DISABLE_BITS (0x00000003) // The bits for the disable function
+
+
+//
+// Flags for CM_Get_Device_ID_List, CM_Get_Device_ID_List_Size
+//
+#define CM_GETIDLIST_FILTER_NONE (0x00000000)
+#define CM_GETIDLIST_FILTER_ENUMERATOR (0x00000001)
+#define CM_GETIDLIST_FILTER_SERVICE (0x00000002)
+#define CM_GETIDLIST_DONOTGENERATE (0x10000000)
+#define CM_GETIDLIST_FILTER_BITS (0x10000003)
+
+
+//
+// Registry properties (specified in call to CM_Get_DevInst_Registry_Property,
+// some are allowed in calls to CM_Set_DevInst_Registery_Property)
+//
+#define CM_DRP_DEVICEDESC (0x0000001) // DeviceDesc property (RW)
+#define CM_DRP_HARDWAREID (0x0000002) // HardwareID property (RW)
+#define CM_DRP_COMPATIBLEIDS (0x0000003) // CompatibleIDs property (RW)
+#define CM_DRP_NTDEVICEPATHS (0x0000004) // NtDevicePaths property (R)
+#define CM_DRP_SERVICE (0x0000005) // Service property (RW)
+#define CM_DRP_CONFIGURATION (0x0000006) // Configuration property (R)
+#define CM_DRP_CONFIGURATIONVECTOR (0x0000007) // ConfigurationVector property (R)
+#define CM_DRP_CLASS (0x0000008) // class name (RW)
+#define CM_DRP_CLASSGUID (0x0000009) // GUID representing class name (RW)
+#define CM_DRP_DRIVER (0x000000A) // Driver property (RW)
+#define CM_DRP_CONFIGFLAGS (0x000000B) // ConfigFlags property (RW)
+#define CM_DRP_MFG (0x000000C) // Mfg property (RW)
+#define CM_DRP_FRIENDLYNAME (0x000000D) // FriendlyName (RW)
+
+#define CM_DRP_MIN (0x0000001)
+#define CM_DRP_MAX (0x000000D)
+
+
+//
+// Flags for CM_Locate_DevNode
+//
+#define CM_LOCATE_DEVNODE_NORMAL 0x00000000
+#define CM_LOCATE_DEVNODE_PHANTOM 0x00000001
+#define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002
+#define CM_LOCATE_DEVNODE_BITS 0x00000003
+
+#define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL
+#define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM
+#define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE
+#define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS
+
+//
+// Registry key open/creation flags
+// (for CM_Open_DevNode_Key, CM_Open_Class_Key)
+//
+#define CM_OPEN_KEY_DO_NOT_CREATE (0x0)
+#define CM_OPEN_KEY_CREATE (0x1)
+#define CM_OPEN_KEY_BITS (0x1)
+
+//
+// Remove subtree and Query remove subtree flags
+//
+#define CM_QUERY_REMOVE_UI_OK 0x00000000
+#define CM_QUERY_REMOVE_UI_NOT_OK 0x00000001
+#define CM_QUERY_REMOVE_BITS 0x00000001
+
+#define CM_REMOVE_UI_OK 0x00000000
+#define CM_REMOVE_UI_NOT_OK 0x00000001
+#define CM_REMOVE_BITS 0x00000001
+
+//
+// Flags for CM_Reenumerate_DevNode
+//
+#define CM_REENUMERATE_NORMAL 0x00000000
+#define CM_REENUMERATE_SYNCHRONOUS 0x00000001
+#define CM_REENUMERATE_BITS 0x00000001
+
+//
+// Registry Branch Locations (for CM_Open_DevNode_Key)
+//
+#define CM_REGISTRY_HARDWARE (0x00000000)
+#define CM_REGISTRY_SOFTWARE (0x00000001)
+#define CM_REGISTRY_USER (0x00000100)
+#define CM_REGISTRY_CONFIG (0x00000200)
+#define CM_REGISTRY_BITS (0x00000301)
+
+//
+// Re-enable and configuration actions (specified in call to CM_Setup_DevInst)
+//
+#define CM_SETUP_DEVNODE_READY (0x00000000) // Reenable problem devinst
+#define CM_SETUP_DEVINST_READY CM_SETUP_DEVNODE_READY
+#define CM_SETUP_DOWNLOAD (0x00000001) // Get info about devinst
+#define CM_SETUP_WRITE_LOG_CONFS (0x00000002)
+#define CM_SETUP_PROP_CHANGE (0x00000003)
+#define CM_SETUP_BITS (0x00000003)
+
+
+//
+// Flags for CM_Query_Arbitrator_Free_Data and
+// CM_Query_Arbitrator_Free_Data_Size.
+//
+#define CM_QUERY_ARBITRATOR_RAW (0x00000000)
+#define CM_QUERY_ARBITRATOR_TRANSLATED (0x00000001)
+#define CM_QUERY_ARBITRATOR_BITS (0x00000001)
+
+
+//--------------------------------------------------------------
+// Function prototypes
+//--------------------------------------------------------------
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Empty_Log_Conf(
+ OUT PLOG_CONF plcLogConf,
+ IN DEVINST dnDevInst,
+ IN PRIORITY Priority,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Empty_Log_Conf_Ex(
+ OUT PLOG_CONF plcLogConf,
+ IN DEVINST dnDevInst,
+ IN PRIORITY Priority,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_IDA(
+ IN DEVINST dnDevInst,
+ IN PSTR pszID,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_IDW(
+ IN DEVINST dnDevInst,
+ IN PWSTR pszID,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_ID_ExA(
+ IN DEVINST dnDevInst,
+ IN PSTR pszID,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_ID_ExW(
+ IN DEVINST dnDevInst,
+ IN PWSTR pszID,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#ifdef UNICODE
+#define CM_Add_ID CM_Add_IDW
+#define CM_Add_ID_Ex CM_Add_ID_ExW
+#else
+#define CM_Add_ID CM_Add_IDA
+#define CM_Add_ID_Ex CM_Add_ID_ExA
+#endif // UNICODE
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Range(
+ IN DWORDLONG ullStartValue,
+ IN DWORDLONG ullEndValue,
+ IN RANGE_LIST rlh,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Res_Des(
+ OUT PRES_DES prdResDes,
+ IN LOG_CONF lcLogConf,
+ IN RESOURCEID ResourceID,
+ IN PCVOID ResourceData,
+ IN ULONG ResourceLen,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Res_Des_Ex(
+ OUT PRES_DES prdResDes,
+ IN LOG_CONF lcLogConf,
+ IN RESOURCEID ResourceID,
+ IN PCVOID ResourceData,
+ IN ULONG ResourceLen,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Connect_MachineA(
+ IN PCSTR UNCServerName,
+ OUT PHMACHINE phMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Connect_MachineW(
+ IN PCWSTR UNCServerName,
+ OUT PHMACHINE phMachine
+ );
+#ifdef UNICODE
+#define CM_Connect_Machine CM_Connect_MachineW
+#else
+#define CM_Connect_Machine CM_Connect_MachineA
+#endif // UNICODE
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Create_DevNodeA(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINSTID_A pDeviceID,
+ IN DEVINST dnParent,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Create_DevNodeW(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINSTID_W pDeviceID,
+ IN DEVINST dnParent,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Create_DevNode_ExA(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINSTID_A pDeviceID,
+ IN DEVINST dnParent,
+ IN ULONG ulFlags,
+ IN HANDLE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Create_DevNode_ExW(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINSTID_W pDeviceID,
+ IN DEVINST dnParent,
+ IN ULONG ulFlags,
+ IN HANDLE hMachine
+ );
+#define CM_Create_DevInstW CM_Create_DevNodeW
+#define CM_Create_DevInstA CM_Create_DevNodeA
+#define CM_Create_DevInst_ExW CM_Create_DevNode_ExW
+#define CM_Create_DevInst_ExA CM_Create_DevNode_ExA
+#ifdef UNICODE
+#define CM_Create_DevNode CM_Create_DevNodeW
+#define CM_Create_DevInst CM_Create_DevNodeW
+#define CM_Create_DevNode_Ex CM_Create_DevNode_ExW
+#define CM_Create_DevInst_Ex CM_Create_DevInst_ExW
+#else
+#define CM_Create_DevNode CM_Create_DevNodeA
+#define CM_Create_DevInst CM_Create_DevNodeA
+#define CM_Create_DevNode_Ex CM_Create_DevNode_ExA
+#define CM_Create_DevInst_Ex CM_Create_DevNode_ExA
+#endif // UNICODE
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Create_Range_List(
+ OUT PRANGE_LIST prlh,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Delete_Class_Key(
+ IN LPGUID ClassGuid,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Delete_Class_Key_Ex(
+ IN LPGUID ClassGuid,
+ IN ULONG ulFlags,
+ IN HANDLE hMachine
+ );
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Delete_DevNode_Key(
+ IN DEVNODE dnDevNode,
+ IN ULONG ulHardwareProfile,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Delete_DevNode_Key_Ex(
+ IN DEVNODE dnDevNode,
+ IN ULONG ulHardwareProfile,
+ IN ULONG ulFlags,
+ IN HANDLE hMachine
+ );
+#define CM_Delete_DevInst_Key CM_Delete_DevNode_Key
+#define CM_Delete_DevInst_Key_Ex CM_Delete_DevNode_Key_Ex
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Delete_Range(
+ IN DWORDLONG ullStartValue,
+ IN DWORDLONG ullEndValue,
+ IN RANGE_LIST rlh,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Detect_Resource_Conflict(
+ IN DEVINST dnDevInst,
+ IN RESOURCEID ResourceID,
+ IN PCVOID ResourceData,
+ IN ULONG ResourceLen,
+ OUT PBOOL pbConflictDetected,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Detect_Resource_Conflict_Ex(
+ IN DEVINST dnDevInst,
+ IN RESOURCEID ResourceID,
+ IN PCVOID ResourceData,
+ IN ULONG ResourceLen,
+ OUT PBOOL pbConflictDetected,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Disable_DevNode(
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Disable_DevNode_Ex(
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#define CM_Disable_DevInst CM_Disable_DevNode
+#define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Disconnect_Machine(
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Dup_Range_List(
+ IN RANGE_LIST rlhOld,
+ IN RANGE_LIST rlhNew,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enable_DevNode(
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enable_DevNode_Ex(
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#define CM_Enable_DevInst CM_Enable_DevNode
+#define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Classes(
+ IN ULONG ulClassIndex,
+ OUT LPGUID ClassGuid,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Classes_Ex(
+ IN ULONG ulClassIndex,
+ OUT LPGUID ClassGuid,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_EnumeratorsA(
+ IN ULONG ulEnumIndex,
+ OUT PCHAR Buffer,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_EnumeratorsW(
+ IN ULONG ulEnumIndex,
+ OUT PWCHAR Buffer,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Enumerators_ExA(
+ IN ULONG ulEnumIndex,
+ OUT PCHAR Buffer,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Enumerators_ExW(
+ IN ULONG ulEnumIndex,
+ OUT PWCHAR Buffer,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#ifdef UNICODE
+#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW
+#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
+#else
+#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA
+#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExA
+#endif // UNICODE
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Find_Range(
+ OUT PDWORDLONG pullStart,
+ IN DWORDLONG ullStart,
+ IN ULONG ulLength,
+ IN DWORDLONG ullAlignment,
+ IN DWORDLONG ullEnd,
+ IN RANGE_LIST rlh,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_First_Range(
+ IN RANGE_LIST rlh,
+ OUT PDWORDLONG pullStart,
+ OUT PDWORDLONG pullEnd,
+ OUT PRANGE_ELEMENT preElement,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Log_Conf(
+ IN LOG_CONF lcLogConfToBeFreed,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Log_Conf_Ex(
+ IN LOG_CONF lcLogConfToBeFreed,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Log_Conf_Handle(
+ IN LOG_CONF lcLogConf
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Range_List(
+ IN RANGE_LIST rlh,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Res_Des(
+ IN PRES_DES prdResDes,
+ IN RES_DES rdResDes,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Res_Des_Ex(
+ IN PRES_DES prdResDes,
+ IN RES_DES rdResDes,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Res_Des_Handle(
+ IN RES_DES rdResDes
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Child(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Child_Ex(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Class_NameA(
+ IN LPGUID ClassGuid,
+ OUT PCHAR Buffer,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Class_NameW(
+ IN LPGUID ClassGuid,
+ OUT PWCHAR Buffer,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Class_Name_ExA(
+ IN LPGUID ClassGuid,
+ OUT PCHAR Buffer,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Class_Name_ExW(
+ IN LPGUID ClassGuid,
+ OUT PWCHAR Buffer,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#ifdef UNICODE
+#define CM_Get_Class_Name CM_Get_Class_NameW
+#define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExW
+#else
+#define CM_Get_Class_Name CM_Get_Class_NameA
+#define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExA
+#endif // UNICODE
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Class_Key_NameA(
+ IN LPGUID ClassGuid,
+ OUT LPSTR pszKeyName,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Class_Key_NameW(
+ IN LPGUID ClassGuid,
+ OUT LPWSTR pszKeyName,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Class_Key_Name_ExA(
+ IN LPGUID ClassGuid,
+ OUT LPSTR pszKeyName,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Class_Key_Name_ExW(
+ IN LPGUID ClassGuid,
+ OUT LPWSTR pszKeyName,
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#ifdef UNICODE
+#define CM_Get_Class_Key_Name CM_Get_Class_Key_NameW
+#define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExW
+#else
+#define CM_Get_Class_Key_Name CM_Get_Class_Key_NameA
+#define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExA
+#endif // UNICODE
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Depth(
+ OUT PULONG pulDepth,
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Depth_Ex(
+ OUT PULONG pulDepth,
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_IDA(
+ IN DEVINST dnDevInst,
+ OUT PCHAR Buffer,
+ IN ULONG BufferLen,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_IDW(
+ IN DEVINST dnDevInst,
+ OUT PWCHAR Buffer,
+ IN ULONG BufferLen,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ExA(
+ IN DEVINST dnDevInst,
+ OUT PCHAR Buffer,
+ IN ULONG BufferLen,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ExW(
+ IN DEVINST dnDevInst,
+ OUT PWCHAR Buffer,
+ IN ULONG BufferLen,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#ifdef UNICODE
+#define CM_Get_Device_ID CM_Get_Device_IDW
+#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
+#else
+#define CM_Get_Device_ID CM_Get_Device_IDA
+#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExA
+#endif // UNICODE
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ListA(
+ IN PCSTR pszFilter, OPTIONAL
+ OUT PCHAR Buffer,
+ IN ULONG BufferLen,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ListW(
+ IN PCWSTR pszFilter, OPTIONAL
+ OUT PWCHAR Buffer,
+ IN ULONG BufferLen,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_ExA(
+ IN PCSTR pszFilter, OPTIONAL
+ OUT PCHAR Buffer,
+ IN ULONG BufferLen,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_ExW(
+ IN PCWSTR pszFilter, OPTIONAL
+ OUT PWCHAR Buffer,
+ IN ULONG BufferLen,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#ifdef UNICODE
+#define CM_Get_Device_ID_List CM_Get_Device_ID_ListW
+#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW
+#else
+#define CM_Get_Device_ID_List CM_Get_Device_ID_ListA
+#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA
+#endif // UNICODE
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_SizeA(
+ OUT PULONG pulLen,
+ IN PCSTR pszFilter, OPTIONAL
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_SizeW(
+ OUT PULONG pulLen,
+ IN PCWSTR pszFilter, OPTIONAL
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_Size_ExA(
+ OUT PULONG pulLen,
+ IN PCSTR pszFilter, OPTIONAL
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_Size_ExW(
+ OUT PULONG pulLen,
+ IN PCWSTR pszFilter, OPTIONAL
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#ifdef UNICODE
+#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW
+#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW
+#else
+#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA
+#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA
+#endif // UNICODE
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_Size(
+ OUT PULONG pulLen,
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_Size_Ex(
+ OUT PULONG pulLen,
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_DevNode_Registry_PropertyA(
+ IN DEVINST dnDevInst,
+ IN ULONG ulProperty,
+ OUT PULONG pulRegDataType, OPTIONAL
+ OUT PVOID Buffer, OPTIONAL
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_DevNode_Registry_PropertyW(
+ IN DEVINST dnDevInst,
+ IN ULONG ulProperty,
+ OUT PULONG pulRegDataType, OPTIONAL
+ OUT PVOID Buffer, OPTIONAL
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_DevNode_Registry_Property_ExA(
+ IN DEVINST dnDevInst,
+ IN ULONG ulProperty,
+ OUT PULONG pulRegDataType, OPTIONAL
+ OUT PVOID Buffer, OPTIONAL
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_DevNode_Registry_Property_ExW(
+ IN DEVINST dnDevInst,
+ IN ULONG ulProperty,
+ OUT PULONG pulRegDataType, OPTIONAL
+ OUT PVOID Buffer, OPTIONAL
+ IN OUT PULONG pulLength,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW
+#define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA
+#define CM_Get_DevInst_Registry_Property_ExW CM_Get_DevNode_Registry_Property_ExW
+#define CM_Get_DevInst_Registry_Property_ExA CM_Get_DevNode_Registry_Property_ExA
+#ifdef UNICODE
+#define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyW
+#define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW
+#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyW
+#define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW
+#else
+#define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyA
+#define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA
+#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyA
+#define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA
+#endif // UNICODE
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_DevNode_Status(
+ OUT PULONG pulStatus,
+ OUT PULONG pulProblemNumber,
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_DevNode_Status_Ex(
+ OUT PULONG pulStatus,
+ OUT PULONG pulProblemNumber,
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#define CM_Get_DevInst_Status CM_Get_DevNode_Status
+#define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_First_Log_Conf(
+ OUT PLOG_CONF plcLogConf, OPTIONAL
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_First_Log_Conf_Ex(
+ OUT PLOG_CONF plcLogConf, OPTIONAL
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Global_State(
+ OUT PULONG pulState,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Global_State_Ex(
+ OUT PULONG pulState,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Hardware_Profile_InfoA(
+ IN ULONG ulIndex,
+ OUT PHWPROFILEINFO_A pHWProfileInfo,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Hardware_Profile_Info_ExA(
+ IN ULONG ulIndex,
+ OUT PHWPROFILEINFO_A pHWProfileInfo,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Hardware_Profile_InfoW(
+ IN ULONG ulIndex,
+ OUT PHWPROFILEINFO_W pHWProfileInfo,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Hardware_Profile_Info_ExW(
+ IN ULONG ulIndex,
+ OUT PHWPROFILEINFO_W pHWProfileInfo,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#ifdef UNICODE
+#define CM_Get_Hardware_Profile_Info CM_Get_Hardware_Profile_InfoW
+#define CM_Get_Hardware_Profile_Info_Ex CM_Get_Hardware_Profile_Info_ExW
+#else
+#define CM_Get_Hardware_Profile_Info CM_Get_Hardware_Profile_InfoA
+#define CM_Get_Hardware_Profile_Info_Ex CM_Get_Hardware_Profile_Info_ExA
+#endif // UNICODE
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_HW_Prof_FlagsA(
+ IN DEVINSTID_A szDevInstName,
+ IN ULONG ulHardwareProfile,
+ OUT PULONG pulValue,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_HW_Prof_FlagsW(
+ IN DEVINSTID_W szDevInstName,
+ IN ULONG ulHardwareProfile,
+ OUT PULONG pulValue,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_HW_Prof_Flags_ExA(
+ IN DEVINSTID_A szDevInstName,
+ IN ULONG ulHardwareProfile,
+ OUT PULONG pulValue,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_HW_Prof_Flags_ExW(
+ IN DEVINSTID_W szDevInstName,
+ IN ULONG ulHardwareProfile,
+ OUT PULONG pulValue,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#ifdef UNICODE
+#define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsW
+#define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExW
+#else
+#define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsA
+#define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExA
+#endif // UNICODE
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Log_Conf(
+ OUT PLOG_CONF plcLogConf, OPTIONAL
+ IN LOG_CONF lcLogConf,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Log_Conf_Ex(
+ OUT PLOG_CONF plcLogConf, OPTIONAL
+ IN LOG_CONF lcLogConf,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Parent(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Parent_Ex(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data(
+ IN RES_DES rdResDes,
+ OUT PVOID Buffer,
+ IN ULONG BufferLen,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data_Ex(
+ IN RES_DES rdResDes,
+ OUT PVOID Buffer,
+ IN ULONG BufferLen,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data_Size(
+ OUT PULONG pulSize,
+ IN RES_DES rdResDes,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data_Size_Ex(
+ OUT PULONG pulSize,
+ IN RES_DES rdResDes,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Sibling(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINST DevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Sibling_Ex(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINST DevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+
+CMAPI
+WORD
+WINAPI
+CM_Get_Version(
+ VOID
+ );
+CMAPI
+WORD
+WINAPI
+CM_Get_Version_Ex(
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Intersect_Range_List(
+ IN RANGE_LIST rlhOld1,
+ IN RANGE_LIST rlhOld2,
+ IN RANGE_LIST rlhNew,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Invert_Range_List(
+ IN RANGE_LIST rlhOld,
+ IN RANGE_LIST rlhNew,
+ IN DWORDLONG ullMaxValue,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNodeA(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINSTID_A pDeviceID, OPTIONAL
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNodeW(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINSTID_W pDeviceID, OPTIONAL
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNode_ExA(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINSTID_A pDeviceID, OPTIONAL
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNode_ExW(
+ OUT PDEVINST pdnDevInst,
+ IN DEVINSTID_W pDeviceID, OPTIONAL
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#define CM_Locate_DevInstA CM_Locate_DevNodeA
+#define CM_Locate_DevInstW CM_Locate_DevNodeW
+#define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
+#define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
+#ifdef UNICODE
+#define CM_Locate_DevNode CM_Locate_DevNodeW
+#define CM_Locate_DevInst CM_Locate_DevNodeW
+#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW
+#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW
+#else
+#define CM_Locate_DevNode CM_Locate_DevNodeA
+#define CM_Locate_DevInst CM_Locate_DevNodeA
+#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA
+#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA
+#endif // UNICODE
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Merge_Range_List(
+ IN RANGE_LIST rlhOld1,
+ IN RANGE_LIST rlhOld2,
+ IN RANGE_LIST rlhNew,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Modify_Res_Des(
+ OUT PRES_DES prdResDes,
+ IN RES_DES rdResDes,
+ IN RESOURCEID ResourceID,
+ IN PCVOID ResourceData,
+ IN ULONG ResourceLen,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Modify_Res_Des_Ex(
+ OUT PRES_DES prdResDes,
+ IN RES_DES rdResDes,
+ IN RESOURCEID ResourceID,
+ IN PCVOID ResourceData,
+ IN ULONG ResourceLen,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Move_DevNode(
+ IN DEVINST dnFromDevInst,
+ IN DEVINST dnToDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Move_DevNode_Ex(
+ IN DEVINST dnFromDevInst,
+ IN DEVINST dnToDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#define CM_Move_DevInst CM_Move_DevNode
+#define CM_Move_DevInst_Ex CM_Move_DevNode_Ex
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Next_Range(
+ IN OUT PRANGE_ELEMENT preElement,
+ OUT PDWORDLONG pullStart,
+ OUT PDWORDLONG pullEnd,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Res_Des(
+ OUT PRES_DES prdResDes,
+ IN RES_DES rdResDes,
+ IN RESOURCEID ForResource,
+ OUT PRESOURCEID pResourceID,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Res_Des_Ex(
+ OUT PRES_DES prdResDes,
+ IN RES_DES rdResDes,
+ IN RESOURCEID ForResource,
+ OUT PRESOURCEID pResourceID,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Open_Class_KeyA(
+ IN LPGUID ClassGuid, OPTIONAL
+ IN LPCSTR pszClassName, OPTIONAL
+ IN REGSAM samDesired,
+ IN REGDISPOSITION Disposition,
+ OUT PHKEY phkClass,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Open_Class_KeyW(
+ IN LPGUID ClassGuid, OPTIONAL
+ IN LPCWSTR pszClassName, OPTIONAL
+ IN REGSAM samDesired,
+ IN REGDISPOSITION Disposition,
+ OUT PHKEY phkClass,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Open_Class_Key_ExA(
+ IN LPGUID pszClassGuid, OPTIONAL
+ IN LPCSTR pszClassName, OPTIONAL
+ IN REGSAM samDesired,
+ IN REGDISPOSITION Disposition,
+ OUT PHKEY phkClass,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Open_Class_Key_ExW(
+ IN LPGUID pszClassGuid, OPTIONAL
+ IN LPCWSTR pszClassName, OPTIONAL
+ IN REGSAM samDesired,
+ IN REGDISPOSITION Disposition,
+ OUT PHKEY phkClass,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+#ifdef UNICODE
+#define CM_Open_Class_Key CM_Open_Class_KeyW
+#define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExW
+#else
+#define CM_Open_Class_Key CM_Open_Class_KeyA
+#define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExA
+#endif // UNICODE
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Open_DevNode_Key(
+ IN DEVINST dnDevNode,
+ IN REGSAM samDesired,
+ IN ULONG ulHardwareProfile,
+ IN REGDISPOSITION Disposition,
+ OUT PHKEY phkDevice,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Open_DevNode_Key_Ex(
+ IN DEVINST dnDevNode,
+ IN REGSAM samDesired,
+ IN ULONG ulHardwareProfile,
+ IN REGDISPOSITION Disposition,
+ OUT PHKEY phkDevice,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#define CM_Open_DevInst_Key CM_Open_DevNode_Key
+#define CM_Open_DevInst_Key_Ex CM_Open_DevNode_Key_Ex
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_Arbitrator_Free_Data(
+ OUT PVOID pData,
+ IN ULONG DataLen,
+ IN DEVINST dnDevInst,
+ IN RESOURCEID ResourceID,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_Arbitrator_Free_Data_Ex(
+ OUT PVOID pData,
+ IN ULONG DataLen,
+ IN DEVINST dnDevInst,
+ IN RESOURCEID ResourceID,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_Arbitrator_Free_Size(
+ OUT PULONG pulSize,
+ IN DEVINST dnDevInst,
+ IN RESOURCEID ResourceID,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_Arbitrator_Free_Size_Ex(
+ OUT PULONG pulSize,
+ IN DEVINST dnDevInst,
+ IN RESOURCEID ResourceID,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_Remove_SubTree(
+ IN DEVINST dnAncestor,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_Remove_SubTree_Ex(
+ IN DEVINST dnAncestor,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Reenumerate_DevNode(
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Reenumerate_DevNode_Ex(
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
+#define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Remove_SubTree(
+ IN DEVINST dnAncestor,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Remove_SubTree_Ex(
+ IN DEVINST dnAncestor,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Set_DevNode_Registry_PropertyA(
+ IN DEVINST dnDevInst,
+ IN ULONG ulProperty,
+ IN PCVOID Buffer, OPTIONAL
+ IN ULONG ulLength,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Set_DevNode_Registry_PropertyW(
+ IN DEVINST dnDevInst,
+ IN ULONG ulProperty,
+ IN PCVOID Buffer, OPTIONAL
+ IN ULONG ulLength,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Set_DevNode_Registry_Property_ExA(
+ IN DEVINST dnDevInst,
+ IN ULONG ulProperty,
+ IN PCVOID Buffer, OPTIONAL
+ IN ULONG ulLength,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Set_DevNode_Registry_Property_ExW(
+ IN DEVINST dnDevInst,
+ IN ULONG ulProperty,
+ IN PCVOID Buffer, OPTIONAL
+ IN ULONG ulLength,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW
+#define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA
+#define CM_Set_DevInst_Registry_Property_ExW CM_Set_DevNode_Registry_Property_ExW
+#define CM_Set_DevInst_Registry_Property_ExA CM_Set_DevNode_Registry_Property_ExA
+#ifdef UNICODE
+#define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyW
+#define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
+#define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyW
+#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
+#else
+#define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyW
+#define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
+#define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyA
+#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA
+#endif // UNICODE
+
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Set_HW_Prof_FlagsA(
+ IN DEVINSTID_A szDevInstName,
+ IN ULONG ulConfig,
+ IN ULONG ulValue,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Set_HW_Prof_FlagsW(
+ IN DEVINSTID_W szDevInstName,
+ IN ULONG ulConfig,
+ IN ULONG ulValue,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Set_HW_Prof_Flags_ExA(
+ IN DEVINSTID_A szDevInstName,
+ IN ULONG ulConfig,
+ IN ULONG ulValue,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Set_HW_Prof_Flags_ExW(
+ IN DEVINSTID_W szDevInstName,
+ IN ULONG ulConfig,
+ IN ULONG ulValue,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#ifdef UNICODE
+#define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsW
+#define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExW
+#else
+#define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsA
+#define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExA
+#endif // UNICODE
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Setup_DevNode(
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Setup_DevNode_Ex(
+ IN DEVINST dnDevInst,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+#define CM_Setup_DevInst CM_Setup_DevNode
+#define CM_Setup_DevInst_EX CM_Setup_DevNode_Ex
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Test_Range_Available(
+ IN DWORDLONG ullStartValue,
+ IN DWORDLONG ullEndValue,
+ IN RANGE_LIST rlh,
+ IN ULONG ulFlags
+ );
+
+
+CMAPI
+CONFIGRET
+CM_Uninstall_DevNode(
+ IN DEVNODE dnPhantom,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+CM_Uninstall_DevNode_Ex(
+ IN DEVNODE dnPhantom,
+ IN ULONG ulFlags,
+ IN HANDLE hMachine
+ );
+#define CM_Uninstall_DevInst CM_Uninstall_DevNode
+#define CM_Uninstall_DevInst_Ex CM_Uninstall_DevNode_Ex
+
+
+
+//----------------------------------------------------------------------
+// NOT IMPLEMENTED YET - THESE ROUTINES RETURN CR_CALL_NOT_IMPLEMENTED
+//----------------------------------------------------------------------
+
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Run_Detection(
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Run_Detection_Ex(
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Set_HW_Prof(
+ IN ULONG ulHardwareProfile,
+ IN ULONG ulFlags
+ );
+CMAPI
+CONFIGRET
+WINAPI
+CM_Set_HW_Prof_Ex(
+ IN ULONG ulHardwareProfile,
+ IN ULONG ulFlags,
+ IN HMACHINE hMachine
+ );
+
+
+
+//--------------------------------------------------------------
+// Configuration Manager return status codes
+//--------------------------------------------------------------
+
+#define CR_SUCCESS (0x00000000)
+#define CR_DEFAULT (0x00000001)
+#define CR_OUT_OF_MEMORY (0x00000002)
+#define CR_INVALID_POINTER (0x00000003)
+#define CR_INVALID_FLAG (0x00000004)
+#define CR_INVALID_DEVNODE (0x00000005)
+#define CR_INVALID_DEVINST CR_INVALID_DEVNODE
+#define CR_INVALID_RES_DES (0x00000006)
+#define CR_INVALID_LOG_CONF (0x00000007)
+#define CR_INVALID_ARBITRATOR (0x00000008)
+#define CR_INVALID_NODELIST (0x00000009)
+#define CR_DEVNODE_HAS_REQS (0x0000000A)
+#define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS
+#define CR_INVALID_RESOURCEID (0x0000000B)
+#define CR_DLVXD_NOT_FOUND (0x0000000C) // WIN 95 ONLY
+#define CR_NO_SUCH_DEVNODE (0x0000000D)
+#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
+#define CR_NO_MORE_LOG_CONF (0x0000000E)
+#define CR_NO_MORE_RES_DES (0x0000000F)
+#define CR_ALREADY_SUCH_DEVNODE (0x00000010)
+#define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE
+#define CR_INVALID_RANGE_LIST (0x00000011)
+#define CR_INVALID_RANGE (0x00000012)
+#define CR_FAILURE (0x00000013)
+#define CR_NO_SUCH_LOGICAL_DEV (0x00000014)
+#define CR_CREATE_BLOCKED (0x00000015)
+#define CR_NOT_SYSTEM_VM (0x00000016) // WIN 95 ONLY
+#define CR_REMOVE_VETOED (0x00000017)
+#define CR_APM_VETOED (0x00000018)
+#define CR_INVALID_LOAD_TYPE (0x00000019)
+#define CR_BUFFER_SMALL (0x0000001A)
+#define CR_NO_ARBITRATOR (0x0000001B)
+#define CR_NO_REGISTRY_HANDLE (0x0000001C)
+#define CR_REGISTRY_ERROR (0x0000001D)
+#define CR_INVALID_DEVICE_ID (0x0000001E)
+#define CR_INVALID_DATA (0x0000001F)
+#define CR_INVALID_API (0x00000020)
+#define CR_DEVLOADER_NOT_READY (0x00000021)
+#define CR_NEED_RESTART (0x00000022)
+#define CR_NO_MORE_HW_PROFILES (0x00000023)
+#define CR_DEVICE_NOT_THERE (0x00000024)
+#define CR_NO_SUCH_VALUE (0x00000025)
+#define CR_WRONG_TYPE (0x00000026)
+#define CR_INVALID_PRIORITY (0x00000027)
+#define CR_NOT_DISABLEABLE (0x00000028)
+#define CR_FREE_RESOURCES (0x00000029)
+#define CR_QUERY_VETOED (0x0000002A)
+#define CR_CANT_SHARE_IRQ (0x0000002B)
+#define CR_CALL_NOT_IMPLEMENTED (0x0000002C)
+#define CR_INVALID_PROPERTY (0x0000002D)
+#define CR_NO_SUCH_REGISTRY_KEY (0x0000002E)
+#define CR_INVALID_MACHINENAME (0x0000002F) // NT ONLY
+#define CR_REMOTE_COMM_FAILURE (0x00000030) // NT ONLY
+#define CR_MACHINE_UNAVAILABLE (0x00000031) // NT ONLY
+#define CR_NO_CM_SERVICES (0x00000032) // NT ONLY
+#define CR_ACCESS_DENIED (0x00000033) // NT ONLY
+#define NUM_CR_RESULTS (0x00000033)
+
+
+
+#endif // _CFGMGR32_
+
diff --git a/public/sdk/inc/cguid.h b/public/sdk/inc/cguid.h
new file mode 100644
index 000000000..1e80fa081
--- /dev/null
+++ b/public/sdk/inc/cguid.h
@@ -0,0 +1,120 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: cguid.h
+//
+//--------------------------------------------------------------------------
+
+#ifndef __CGUID_H__
+#define __CGUID_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern const IID GUID_NULL;
+extern const IID IID_IRpcChannel;
+extern const IID IID_IRpcStub;
+extern const IID IID_IStubManager;
+extern const IID IID_IRpcProxy;
+extern const IID IID_IProxyManager;
+extern const IID IID_IPSFactory;
+extern const IID IID_IInternalMoniker;
+extern const IID IID_IDfReserved1;
+extern const IID IID_IDfReserved2;
+extern const IID IID_IDfReserved3;
+extern const CLSID CLSID_StdMarshal;
+extern const IID IID_IStub;
+extern const IID IID_IProxy;
+extern const IID IID_IEnumGeneric;
+extern const IID IID_IEnumHolder;
+extern const IID IID_IEnumCallback;
+extern const IID IID_IOleManager;
+extern const IID IID_IOlePresObj;
+extern const IID IID_IDebug;
+extern const IID IID_IDebugStream;
+extern const CLSID CLSID_PSGenObject;
+extern const CLSID CLSID_PSClientSite;
+extern const CLSID CLSID_PSClassObject;
+extern const CLSID CLSID_PSInPlaceActive;
+extern const CLSID CLSID_PSInPlaceFrame;
+extern const CLSID CLSID_PSDragDrop;
+extern const CLSID CLSID_PSBindCtx;
+extern const CLSID CLSID_PSEnumerators;
+extern const CLSID CLSID_StaticMetafile;
+extern const CLSID CLSID_StaticDib;
+extern const CLSID CID_CDfsVolume;
+extern const CLSID CLSID_DCOMAccessControl;
+
+//********************************************
+//
+// CD Forms CLSIDs
+//
+//********************************************
+
+//
+// Form Kernel objects
+//
+extern const CLSID CLSID_CCDFormKrnl;
+extern const CLSID CLSID_CCDPropertyPage;
+extern const CLSID CLSID_CCDFormDialog;
+
+//
+// Control objects
+//
+extern const CLSID CLSID_CCDCommandButton;
+extern const CLSID CLSID_CCDComboBox;
+extern const CLSID CLSID_CCDTextBox;
+extern const CLSID CLSID_CCDCheckBox;
+extern const CLSID CLSID_CCDLabel;
+extern const CLSID CLSID_CCDOptionButton;
+extern const CLSID CLSID_CCDListBox;
+extern const CLSID CLSID_CCDScrollBar;
+extern const CLSID CLSID_CCDGroupBox;
+
+//
+// Property Pages
+//
+extern const CLSID CLSID_CCDGeneralPropertyPage;
+extern const CLSID CLSID_CCDGenericPropertyPage;
+extern const CLSID CLSID_CCDFontPropertyPage;
+extern const CLSID CLSID_CCDColorPropertyPage;
+extern const CLSID CLSID_CCDLabelPropertyPage;
+extern const CLSID CLSID_CCDCheckBoxPropertyPage;
+extern const CLSID CLSID_CCDTextBoxPropertyPage;
+extern const CLSID CLSID_CCDOptionButtonPropertyPage;
+extern const CLSID CLSID_CCDListBoxPropertyPage;
+extern const CLSID CLSID_CCDCommandButtonPropertyPage;
+extern const CLSID CLSID_CCDComboBoxPropertyPage;
+extern const CLSID CLSID_CCDScrollBarPropertyPage;
+extern const CLSID CLSID_CCDGroupBoxPropertyPage;
+extern const CLSID CLSID_CCDXObjectPropertyPage;
+
+extern const CLSID CLSID_CStdPropertyFrame;
+
+extern const CLSID CLSID_CFormPropertyPage;
+extern const CLSID CLSID_CGridPropertyPage;
+
+extern const CLSID CLSID_CWSJArticlePage;
+extern const CLSID CLSID_CSystemPage;
+
+extern const CLSID CLSID_IdentityUnmarshal;
+extern const CLSID CLSID_InProcFreeMarshaler;
+
+extern const CLSID CLSID_Picture_Metafile;
+extern const CLSID CLSID_Picture_EnhMetafile;
+extern const CLSID CLSID_Picture_Dib;
+
+//
+// Enumerations
+//
+extern const GUID GUID_TRISTATE;
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // __CGUID_H__
diff --git a/public/sdk/inc/chicago/ipropidl.h b/public/sdk/inc/chicago/ipropidl.h
new file mode 100644
index 000000000..f0b142450
--- /dev/null
+++ b/public/sdk/inc/chicago/ipropidl.h
@@ -0,0 +1,57 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 29 11:22:23 1996
+ */
+/* Compiler settings for ipropidl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __ipropidl_h__
+#define __ipropidl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+/* header files for imported files */
+#include "objidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 29 11:22:23 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1996.
+//
+//--------------------------------------------------------------------------
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/chicago/ipropidl.idl b/public/sdk/inc/chicago/ipropidl.idl
new file mode 100644
index 000000000..73412c8ff
--- /dev/null
+++ b/public/sdk/inc/chicago/ipropidl.idl
@@ -0,0 +1,20 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1996.
+//
+// File: ipropidl.idl
+//
+//--------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+#endif
diff --git a/public/sdk/inc/chicago/oaidl.h b/public/sdk/inc/chicago/oaidl.h
new file mode 100644
index 000000000..f918b0f39
--- /dev/null
+++ b/public/sdk/inc/chicago/oaidl.h
@@ -0,0 +1,5942 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:35:07 1996
+ */
+/* Compiler settings for oaidl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __oaidl_h__
+#define __oaidl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ICreateTypeInfo_FWD_DEFINED__
+#define __ICreateTypeInfo_FWD_DEFINED__
+typedef interface ICreateTypeInfo ICreateTypeInfo;
+#endif /* __ICreateTypeInfo_FWD_DEFINED__ */
+
+
+#ifndef __ICreateTypeInfo2_FWD_DEFINED__
+#define __ICreateTypeInfo2_FWD_DEFINED__
+typedef interface ICreateTypeInfo2 ICreateTypeInfo2;
+#endif /* __ICreateTypeInfo2_FWD_DEFINED__ */
+
+
+#ifndef __ICreateTypeLib_FWD_DEFINED__
+#define __ICreateTypeLib_FWD_DEFINED__
+typedef interface ICreateTypeLib ICreateTypeLib;
+#endif /* __ICreateTypeLib_FWD_DEFINED__ */
+
+
+#ifndef __ICreateTypeLib2_FWD_DEFINED__
+#define __ICreateTypeLib2_FWD_DEFINED__
+typedef interface ICreateTypeLib2 ICreateTypeLib2;
+#endif /* __ICreateTypeLib2_FWD_DEFINED__ */
+
+
+#ifndef __IDispatch_FWD_DEFINED__
+#define __IDispatch_FWD_DEFINED__
+typedef interface IDispatch IDispatch;
+#endif /* __IDispatch_FWD_DEFINED__ */
+
+
+#ifndef __IEnumVARIANT_FWD_DEFINED__
+#define __IEnumVARIANT_FWD_DEFINED__
+typedef interface IEnumVARIANT IEnumVARIANT;
+#endif /* __IEnumVARIANT_FWD_DEFINED__ */
+
+
+#ifndef __ITypeComp_FWD_DEFINED__
+#define __ITypeComp_FWD_DEFINED__
+typedef interface ITypeComp ITypeComp;
+#endif /* __ITypeComp_FWD_DEFINED__ */
+
+
+#ifndef __ITypeInfo_FWD_DEFINED__
+#define __ITypeInfo_FWD_DEFINED__
+typedef interface ITypeInfo ITypeInfo;
+#endif /* __ITypeInfo_FWD_DEFINED__ */
+
+
+#ifndef __ITypeInfo2_FWD_DEFINED__
+#define __ITypeInfo2_FWD_DEFINED__
+typedef interface ITypeInfo2 ITypeInfo2;
+#endif /* __ITypeInfo2_FWD_DEFINED__ */
+
+
+#ifndef __ITypeLib_FWD_DEFINED__
+#define __ITypeLib_FWD_DEFINED__
+typedef interface ITypeLib ITypeLib;
+#endif /* __ITypeLib_FWD_DEFINED__ */
+
+
+#ifndef __ITypeLib2_FWD_DEFINED__
+#define __ITypeLib2_FWD_DEFINED__
+typedef interface ITypeLib2 ITypeLib2;
+#endif /* __ITypeLib2_FWD_DEFINED__ */
+
+
+#ifndef __ITypeChangeEvents_FWD_DEFINED__
+#define __ITypeChangeEvents_FWD_DEFINED__
+typedef interface ITypeChangeEvents ITypeChangeEvents;
+#endif /* __ITypeChangeEvents_FWD_DEFINED__ */
+
+
+#ifndef __IErrorInfo_FWD_DEFINED__
+#define __IErrorInfo_FWD_DEFINED__
+typedef interface IErrorInfo IErrorInfo;
+#endif /* __IErrorInfo_FWD_DEFINED__ */
+
+
+#ifndef __ICreateErrorInfo_FWD_DEFINED__
+#define __ICreateErrorInfo_FWD_DEFINED__
+typedef interface ICreateErrorInfo ICreateErrorInfo;
+#endif /* __ICreateErrorInfo_FWD_DEFINED__ */
+
+
+#ifndef __ISupportErrorInfo_FWD_DEFINED__
+#define __ISupportErrorInfo_FWD_DEFINED__
+typedef interface ISupportErrorInfo ISupportErrorInfo;
+#endif /* __ISupportErrorInfo_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IOleAutomationTypes_INTERFACE_DEFINED__
+#define __IOleAutomationTypes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleAutomationTypes
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][unique][version] */
+
+
+typedef CY CURRENCY;
+
+typedef struct tagSAFEARRAYBOUND
+ {
+ ULONG cElements;
+ LONG lLbound;
+ } SAFEARRAYBOUND;
+
+typedef struct tagSAFEARRAYBOUND __RPC_FAR *LPSAFEARRAYBOUND;
+
+#if defined(_OLEAUT32_)
+/* the following is what MIDL knows how to remote */
+typedef /* [unique] */ struct _wireVARIANT __RPC_FAR *wireVARIANT;
+
+typedef struct _wireSAFEARR_BSTR
+ {
+ ULONG Size;
+ /* [ref][size_is] */ wireBSTR __RPC_FAR *aBstr;
+ } SAFEARR_BSTR;
+
+typedef struct _wireSAFEARR_UNKNOWN
+ {
+ ULONG Size;
+ /* [ref][size_is] */ IUnknown __RPC_FAR *__RPC_FAR *apUnknown;
+ } SAFEARR_UNKNOWN;
+
+typedef struct _wireSAFEARR_DISPATCH
+ {
+ ULONG Size;
+ /* [ref][size_is] */ IDispatch __RPC_FAR *__RPC_FAR *apDispatch;
+ } SAFEARR_DISPATCH;
+
+typedef struct _wireSAFEARR_VARIANT
+ {
+ ULONG Size;
+ /* [ref][size_is] */ wireVARIANT __RPC_FAR *aVariant;
+ } SAFEARR_VARIANT;
+
+typedef /* [v1_enum] */
+enum tagSF_TYPE
+ { SF_ERROR = VT_ERROR,
+ SF_I1 = VT_I1,
+ SF_I2 = VT_I2,
+ SF_I4 = VT_I4,
+ SF_I8 = VT_I8,
+ SF_BSTR = VT_BSTR,
+ SF_UNKNOWN = VT_UNKNOWN,
+ SF_DISPATCH = VT_DISPATCH,
+ SF_VARIANT = VT_VARIANT
+ } SF_TYPE;
+
+typedef struct _wireSAFEARRAY_UNION
+ {
+ ULONG sfType;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IOleAutomationTypes_0001
+ {
+ /* [case()] */ SAFEARR_BSTR BstrStr;
+ /* [case()] */ SAFEARR_UNKNOWN UnknownStr;
+ /* [case()] */ SAFEARR_DISPATCH DispatchStr;
+ /* [case()] */ SAFEARR_VARIANT VariantStr;
+ /* [case()] */ BYTE_SIZEDARR ByteStr;
+ /* [case()] */ WORD_SIZEDARR WordStr;
+ /* [case()] */ DWORD_SIZEDARR LongStr;
+ /* [case()] */ HYPER_SIZEDARR HyperStr;
+ /* [default] */ /* Empty union arm */
+ } u;
+ } SAFEARRAYUNION;
+
+typedef /* [unique] */ struct _wireSAFEARRAY
+ {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ SAFEARRAYUNION uArrayStructs;
+ /* [size_is] */ SAFEARRAYBOUND rgsabound[ 1 ];
+ } __RPC_FAR *wireSAFEARRAY;
+
+typedef /* [unique] */ wireSAFEARRAY __RPC_FAR *wirePSAFEARRAY;
+
+#endif /* _OLEAUT32_ */
+typedef struct tagSAFEARRAY
+ {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ PVOID pvData;
+ SAFEARRAYBOUND rgsabound[ 1 ];
+ } SAFEARRAY;
+
+typedef /* [wire_marshal] */ SAFEARRAY __RPC_FAR *LPSAFEARRAY;
+
+#define FADF_AUTO ( 0x1 )
+
+#define FADF_STATIC ( 0x2 )
+
+#define FADF_EMBEDDED ( 0x4 )
+
+#define FADF_FIXEDSIZE ( 0x10 )
+
+#define FADF_BSTR ( 0x100 )
+
+#define FADF_UNKNOWN ( 0x200 )
+
+#define FADF_DISPATCH ( 0x400 )
+
+#define FADF_VARIANT ( 0x800 )
+
+#define FADF_RESERVED ( 0xf0e8 )
+
+/* VARIANT STRUCTURE
+ *
+ * VARTYPE vt;
+ * WORD wReserved1;
+ * WORD wReserved2;
+ * WORD wReserved3;
+ * union {
+ * LONG VT_I4
+ * BYTE VT_UI1
+ * SHORT VT_I2
+ * FLOAT VT_R4
+ * DOUBLE VT_R8
+ * VARIANT_BOOL VT_BOOL
+ * SCODE VT_ERROR
+ * CY VT_CY
+ * DATE VT_DATE
+ * BSTR VT_BSTR
+ * IUnknown * VT_UNKNOWN
+ * IDispatch * VT_DISPATCH
+ * SAFEARRAY * VT_ARRAY
+ * BYTE * VT_BYREF|VT_UI1
+ * SHORT * VT_BYREF|VT_I2
+ * LONG * VT_BYREF|VT_I4
+ * FLOAT * VT_BYREF|VT_R4
+ * DOUBLE * VT_BYREF|VT_R8
+ * VARIANT_BOOL * VT_BYREF|VT_BOOL
+ * SCODE * VT_BYREF|VT_ERROR
+ * CY * VT_BYREF|VT_CY
+ * DATE * VT_BYREF|VT_DATE
+ * BSTR * VT_BYREF|VT_BSTR
+ * IUnknown ** VT_BYREF|VT_UNKNOWN
+ * IDispatch ** VT_BYREF|VT_DISPATCH
+ * SAFEARRAY ** VT_BYREF|VT_ARRAY
+ * VARIANT * VT_BYREF|VT_VARIANT
+ * PVOID VT_BYREF (Generic ByRef)
+ * CHAR VT_I1
+ * USHORT VT_UI2
+ * ULONG VT_UI4
+ * INT VT_INT
+ * UINT VT_UINT
+ * DECIMAL * VT_BYREF|VT_DECIMAL
+ * CHAR * VT_BYREF|VT_I1
+ * USHORT * VT_BYREF|VT_UI2
+ * ULONG * VT_BYREF|VT_UI4
+ * INT * VT_BYREF|VT_INT
+ * UINT * VT_BYREF|VT_UINT
+ * }
+ */
+#if __STDC__ || defined(NONAMELESSUNION)
+#define __VARIANT_NAME_1 n1
+#define __VARIANT_NAME_2 n2
+#define __VARIANT_NAME_3 n3
+#else
+#define __tagVARIANT
+#define __VARIANT_NAME_1
+#define __VARIANT_NAME_2
+#define __VARIANT_NAME_3
+#endif
+typedef /* [wire_marshal] */ struct tagVARIANT VARIANT;
+
+struct tagVARIANT
+ {
+ union
+ {
+ struct __tagVARIANT
+ {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ union
+ {
+ LONG lVal;
+ BYTE bVal;
+ SHORT iVal;
+ FLOAT fltVal;
+ DOUBLE dblVal;
+ VARIANT_BOOL boolVal;
+ _VARIANT_BOOL bool;
+ SCODE scode;
+ CY cyVal;
+ DATE date;
+ BSTR bstrVal;
+ IUnknown __RPC_FAR *punkVal;
+ IDispatch __RPC_FAR *pdispVal;
+ SAFEARRAY __RPC_FAR *parray;
+ BYTE __RPC_FAR *pbVal;
+ SHORT __RPC_FAR *piVal;
+ LONG __RPC_FAR *plVal;
+ FLOAT __RPC_FAR *pfltVal;
+ DOUBLE __RPC_FAR *pdblVal;
+ VARIANT_BOOL __RPC_FAR *pboolVal;
+ _VARIANT_BOOL __RPC_FAR *pbool;
+ SCODE __RPC_FAR *pscode;
+ CY __RPC_FAR *pcyVal;
+ DATE __RPC_FAR *pdate;
+ BSTR __RPC_FAR *pbstrVal;
+ IUnknown __RPC_FAR *__RPC_FAR *ppunkVal;
+ IDispatch __RPC_FAR *__RPC_FAR *ppdispVal;
+ SAFEARRAY __RPC_FAR *__RPC_FAR *pparray;
+ VARIANT __RPC_FAR *pvarVal;
+ PVOID byref;
+ CHAR cVal;
+ USHORT uiVal;
+ ULONG ulVal;
+ INT intVal;
+ UINT uintVal;
+ DECIMAL __RPC_FAR *pdecVal;
+ CHAR __RPC_FAR *pcVal;
+ USHORT __RPC_FAR *puiVal;
+ ULONG __RPC_FAR *pulVal;
+ INT __RPC_FAR *pintVal;
+ UINT __RPC_FAR *puintVal;
+ } __VARIANT_NAME_3;
+ } __VARIANT_NAME_2;
+ DECIMAL decVal;
+ } __VARIANT_NAME_1;
+ };
+typedef VARIANT __RPC_FAR *LPVARIANT;
+
+typedef VARIANT VARIANTARG;
+
+typedef VARIANT __RPC_FAR *LPVARIANTARG;
+
+#if defined(_OLEAUT32_)
+/* the following is what MIDL knows how to remote */
+struct _wireVARIANT
+ {
+ USHORT vt;
+ USHORT wReserved1;
+ USHORT wReserved2;
+ USHORT wReserved3;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ LONG lVal;
+ /* [case()] */ BYTE bVal;
+ /* [case()] */ SHORT iVal;
+ /* [case()] */ FLOAT fltVal;
+ /* [case()] */ DOUBLE dblVal;
+ /* [case()] */ VARIANT_BOOL boolVal;
+ /* [case()] */ SCODE scode;
+ /* [case()] */ CY cyVal;
+ /* [case()] */ DATE date;
+ /* [case()] */ wireBSTR bstrVal;
+ /* [case()] */ IUnknown __RPC_FAR *punkVal;
+ /* [case()] */ IDispatch __RPC_FAR *pdispVal;
+ /* [case()] */ wireSAFEARRAY parray;
+ /* [case()] */ BYTE __RPC_FAR *pbVal;
+ /* [case()] */ SHORT __RPC_FAR *piVal;
+ /* [case()] */ LONG __RPC_FAR *plVal;
+ /* [case()] */ FLOAT __RPC_FAR *pfltVal;
+ /* [case()] */ DOUBLE __RPC_FAR *pdblVal;
+ /* [case()] */ VARIANT_BOOL __RPC_FAR *pboolVal;
+ /* [case()] */ SCODE __RPC_FAR *pscode;
+ /* [case()] */ CY __RPC_FAR *pcyVal;
+ /* [case()] */ DATE __RPC_FAR *pdate;
+ /* [case()] */ wireBSTR __RPC_FAR *pbstrVal;
+ /* [case()] */ IUnknown __RPC_FAR *__RPC_FAR *ppunkVal;
+ /* [case()] */ IDispatch __RPC_FAR *__RPC_FAR *ppdispVal;
+ /* [case()] */ wireSAFEARRAY __RPC_FAR *pparray;
+ /* [case()] */ wireVARIANT __RPC_FAR *pvarVal;
+ /* [case()] */ CHAR cVal;
+ /* [case()] */ USHORT uiVal;
+ /* [case()] */ ULONG ulVal;
+ /* [case()] */ INT intVal;
+ /* [case()] */ UINT uintVal;
+ /* [case()] */ DECIMAL decVal;
+ /* [case()] */ DECIMAL __RPC_FAR *pdecVal;
+ /* [case()] */ CHAR __RPC_FAR *pcVal;
+ /* [case()] */ USHORT __RPC_FAR *puiVal;
+ /* [case()] */ ULONG __RPC_FAR *pulVal;
+ /* [case()] */ INT __RPC_FAR *pintVal;
+ /* [case()] */ UINT __RPC_FAR *puintVal;
+ /* [case()] */ /* Empty union arm */
+ /* [case()] */ /* Empty union arm */
+ } ;
+ };
+#endif /* _OLEAUT32_ */
+typedef LONG DISPID;
+
+typedef DISPID MEMBERID;
+
+typedef DWORD HREFTYPE;
+
+typedef /* [v1_enum] */
+enum tagTYPEKIND
+ { TKIND_ENUM = 0,
+ TKIND_RECORD = TKIND_ENUM + 1,
+ TKIND_MODULE = TKIND_RECORD + 1,
+ TKIND_INTERFACE = TKIND_MODULE + 1,
+ TKIND_DISPATCH = TKIND_INTERFACE + 1,
+ TKIND_COCLASS = TKIND_DISPATCH + 1,
+ TKIND_ALIAS = TKIND_COCLASS + 1,
+ TKIND_UNION = TKIND_ALIAS + 1,
+ TKIND_MAX = TKIND_UNION + 1
+ } TYPEKIND;
+
+typedef struct tagTYPEDESC
+ {
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ struct tagTYPEDESC __RPC_FAR *lptdesc;
+ /* [case()] */ struct tagARRAYDESC __RPC_FAR *lpadesc;
+ /* [case()] */ HREFTYPE hreftype;
+ /* [default] */ /* Empty union arm */
+ } ;
+ VARTYPE vt;
+ } TYPEDESC;
+
+typedef struct tagARRAYDESC
+ {
+ TYPEDESC tdescElem;
+ USHORT cDims;
+ /* [size_is] */ SAFEARRAYBOUND rgbounds[ 1 ];
+ } ARRAYDESC;
+
+typedef struct tagPARAMDESCEX
+ {
+ ULONG cBytes;
+ VARIANTARG varDefaultValue;
+ } PARAMDESCEX;
+
+typedef struct tagPARAMDESCEX __RPC_FAR *LPPARAMDESCEX;
+
+typedef struct tagPARAMDESC
+ {
+ LPPARAMDESCEX pparamdescex;
+ USHORT wParamFlags;
+ } PARAMDESC;
+
+typedef struct tagPARAMDESC __RPC_FAR *LPPARAMDESC;
+
+#define PARAMFLAG_NONE ( 0 )
+
+#define PARAMFLAG_FIN ( 0x1 )
+
+#define PARAMFLAG_FOUT ( 0x2 )
+
+#define PARAMFLAG_FLCID ( 0x4 )
+
+#define PARAMFLAG_FRETVAL ( 0x8 )
+
+#define PARAMFLAG_FOPT ( 0x10 )
+
+#define PARAMFLAG_FHASDEFAULT ( 0x20 )
+
+typedef struct tagIDLDESC
+ {
+ ULONG dwReserved;
+ USHORT wIDLFlags;
+ } IDLDESC;
+
+typedef struct tagIDLDESC __RPC_FAR *LPIDLDESC;
+
+#define IDLFLAG_NONE ( PARAMFLAG_NONE )
+
+#define IDLFLAG_FIN ( PARAMFLAG_FIN )
+
+#define IDLFLAG_FOUT ( PARAMFLAG_FOUT )
+
+#define IDLFLAG_FLCID ( PARAMFLAG_FLCID )
+
+#define IDLFLAG_FRETVAL ( PARAMFLAG_FRETVAL )
+
+#if 0
+/* the following is what MIDL knows how to remote */
+typedef struct tagELEMDESC
+ {
+ TYPEDESC tdesc;
+ PARAMDESC paramdesc;
+ } ELEMDESC;
+
+#else /* 0 */
+typedef struct tagELEMDESC {
+ TYPEDESC tdesc; /* the type of the element */
+ union {
+ IDLDESC idldesc; /* info for remoting the element */
+ PARAMDESC paramdesc; /* info about the parameter */
+ };
+} ELEMDESC, * LPELEMDESC;
+#endif /* 0 */
+typedef struct tagTYPEATTR
+ {
+ GUID guid;
+ LCID lcid;
+ DWORD dwReserved;
+ MEMBERID memidConstructor;
+ MEMBERID memidDestructor;
+ LPOLESTR lpstrSchema;
+ ULONG cbSizeInstance;
+ TYPEKIND typekind;
+ WORD cFuncs;
+ WORD cVars;
+ WORD cImplTypes;
+ WORD cbSizeVft;
+ WORD cbAlignment;
+ WORD wTypeFlags;
+ WORD wMajorVerNum;
+ WORD wMinorVerNum;
+ TYPEDESC tdescAlias;
+ IDLDESC idldescType;
+ } TYPEATTR;
+
+typedef struct tagTYPEATTR __RPC_FAR *LPTYPEATTR;
+
+typedef TYPEATTR __RPC_FAR *__RPC_FAR *PPTYPEATTR;
+
+typedef struct tagDISPPARAMS
+ {
+ /* [size_is] */ VARIANTARG __RPC_FAR *rgvarg;
+ /* [size_is] */ DISPID __RPC_FAR *rgdispidNamedArgs;
+ UINT cArgs;
+ UINT cNamedArgs;
+ } DISPPARAMS;
+
+#if 0
+/* the following is what MIDL knows how to remote */
+typedef struct tagEXCEPINFO
+ {
+ WORD wCode;
+ WORD wReserved;
+ BSTR bstrSource;
+ BSTR bstrDescription;
+ BSTR bstrHelpFile;
+ DWORD dwHelpContext;
+ ULONG pvReserved;
+ ULONG pfnDeferredFillIn;
+ SCODE scode;
+ } EXCEPINFO;
+
+#else /* 0 */
+typedef struct tagEXCEPINFO {
+ WORD wCode;
+ WORD wReserved;
+ BSTR bstrSource;
+ BSTR bstrDescription;
+ BSTR bstrHelpFile;
+ DWORD dwHelpContext;
+ PVOID pvReserved;
+ HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);
+ SCODE scode;
+} EXCEPINFO, * LPEXCEPINFO;
+#endif /* 0 */
+typedef /* [v1_enum] */
+enum tagCALLCONV
+ { CC_CDECL = 1,
+ CC_MSCPASCAL = CC_CDECL + 1,
+ CC_PASCAL = CC_MSCPASCAL,
+ CC_MACPASCAL = CC_PASCAL + 1,
+ CC_STDCALL = CC_MACPASCAL + 1,
+ CC_RESERVED = CC_STDCALL + 1,
+ CC_SYSCALL = CC_RESERVED + 1,
+ CC_MPWCDECL = CC_SYSCALL + 1,
+ CC_MPWPASCAL = CC_MPWCDECL + 1,
+ CC_MAX = CC_MPWPASCAL + 1
+ } CALLCONV;
+
+typedef /* [v1_enum] */
+enum tagFUNCKIND
+ { FUNC_VIRTUAL = 0,
+ FUNC_PUREVIRTUAL = FUNC_VIRTUAL + 1,
+ FUNC_NONVIRTUAL = FUNC_PUREVIRTUAL + 1,
+ FUNC_STATIC = FUNC_NONVIRTUAL + 1,
+ FUNC_DISPATCH = FUNC_STATIC + 1
+ } FUNCKIND;
+
+typedef /* [v1_enum] */
+enum tagINVOKEKIND
+ { INVOKE_FUNC = 1,
+ INVOKE_PROPERTYGET = 2,
+ INVOKE_PROPERTYPUT = 4,
+ INVOKE_PROPERTYPUTREF = 8
+ } INVOKEKIND;
+
+typedef struct tagFUNCDESC
+ {
+ MEMBERID memid;
+ /* [size_is] */ SCODE __RPC_FAR *lprgscode;
+ /* [size_is] */ ELEMDESC __RPC_FAR *lprgelemdescParam;
+ FUNCKIND funckind;
+ INVOKEKIND invkind;
+ CALLCONV callconv;
+ SHORT cParams;
+ SHORT cParamsOpt;
+ SHORT oVft;
+ SHORT cScodes;
+ ELEMDESC elemdescFunc;
+ WORD wFuncFlags;
+ } FUNCDESC;
+
+typedef struct tagFUNCDESC __RPC_FAR *LPFUNCDESC;
+
+typedef FUNCDESC __RPC_FAR *__RPC_FAR *PPFUNCDESC;
+
+typedef /* [v1_enum] */
+enum tagVARKIND
+ { VAR_PERINSTANCE = 0,
+ VAR_STATIC = VAR_PERINSTANCE + 1,
+ VAR_CONST = VAR_STATIC + 1,
+ VAR_DISPATCH = VAR_CONST + 1
+ } VARKIND;
+
+#define IMPLTYPEFLAG_FDEFAULT ( 0x1 )
+
+#define IMPLTYPEFLAG_FSOURCE ( 0x2 )
+
+#define IMPLTYPEFLAG_FRESTRICTED ( 0x4 )
+
+#define IMPLTYPEFLAG_FDEFAULTVTABLE ( 0x8 )
+
+typedef struct tagVARDESC
+ {
+ MEMBERID memid;
+ LPOLESTR lpstrSchema;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ ULONG oInst;
+ /* [case()] */ VARIANT __RPC_FAR *lpvarValue;
+ } ;
+ ELEMDESC elemdescVar;
+ WORD wVarFlags;
+ VARKIND varkind;
+ } VARDESC;
+
+typedef struct tagVARDESC __RPC_FAR *LPVARDESC;
+
+typedef VARDESC __RPC_FAR *__RPC_FAR *PPVARDESC;
+
+typedef
+enum tagTYPEFLAGS
+ { TYPEFLAG_FAPPOBJECT = 0x1,
+ TYPEFLAG_FCANCREATE = 0x2,
+ TYPEFLAG_FLICENSED = 0x4,
+ TYPEFLAG_FPREDECLID = 0x8,
+ TYPEFLAG_FHIDDEN = 0x10,
+ TYPEFLAG_FCONTROL = 0x20,
+ TYPEFLAG_FDUAL = 0x40,
+ TYPEFLAG_FNONEXTENSIBLE = 0x80,
+ TYPEFLAG_FOLEAUTOMATION = 0x100,
+ TYPEFLAG_FRESTRICTED = 0x200,
+ TYPEFLAG_FAGGREGATABLE = 0x400,
+ TYPEFLAG_FREPLACEABLE = 0x800,
+ TYPEFLAG_FDISPATCHABLE = 0x1000,
+ TYPEFLAG_FREVERSEBIND = 0x2000
+ } TYPEFLAGS;
+
+typedef
+enum tagFUNCFLAGS
+ { FUNCFLAG_FRESTRICTED = 0x1,
+ FUNCFLAG_FSOURCE = 0x2,
+ FUNCFLAG_FBINDABLE = 0x4,
+ FUNCFLAG_FREQUESTEDIT = 0x8,
+ FUNCFLAG_FDISPLAYBIND = 0x10,
+ FUNCFLAG_FDEFAULTBIND = 0x20,
+ FUNCFLAG_FHIDDEN = 0x40,
+ FUNCFLAG_FUSESGETLASTERROR = 0x80,
+ FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
+ FUNCFLAG_FUIDEFAULT = 0x200,
+ FUNCFLAG_FNONBROWSABLE = 0x400,
+ FUNCFLAG_FREPLACEABLE = 0x800,
+ FUNCFLAG_FIMMEDIATEBIND = 0x1000
+ } FUNCFLAGS;
+
+typedef
+enum tagVARFLAGS
+ { VARFLAG_FREADONLY = 0x1,
+ VARFLAG_FSOURCE = 0x2,
+ VARFLAG_FBINDABLE = 0x4,
+ VARFLAG_FREQUESTEDIT = 0x8,
+ VARFLAG_FDISPLAYBIND = 0x10,
+ VARFLAG_FDEFAULTBIND = 0x20,
+ VARFLAG_FHIDDEN = 0x40,
+ VARFLAG_FRESTRICTED = 0x80,
+ VARFLAG_FDEFAULTCOLLELEM = 0x100,
+ VARFLAG_FUIDEFAULT = 0x200,
+ VARFLAG_FNONBROWSABLE = 0x400,
+ VARFLAG_FREPLACEABLE = 0x800,
+ VARFLAG_FIMMEDIATEBIND = 0x1000
+ } VARFLAGS;
+
+typedef /* [wire_marshal] */ struct tagCLEANLOCALSTORAGE
+ {
+ IUnknown __RPC_FAR *pInterface;
+ PVOID pStorage;
+ DWORD flags;
+ } CLEANLOCALSTORAGE;
+
+typedef struct tagCUSTDATAITEM
+ {
+ GUID guid;
+ VARIANTARG varValue;
+ } CUSTDATAITEM;
+
+typedef struct tagCUSTDATAITEM __RPC_FAR *LPCUSTDATAITEM;
+
+typedef struct tagCUSTDATA
+ {
+ DWORD cCustData;
+ /* [size_is] */ LPCUSTDATAITEM prgCustData;
+ } CUSTDATA;
+
+typedef struct tagCUSTDATA __RPC_FAR *LPCUSTDATA;
+
+
+
+extern RPC_IF_HANDLE IOleAutomationTypes_v1_0_c_ifspec;
+extern RPC_IF_HANDLE IOleAutomationTypes_v1_0_s_ifspec;
+#endif /* __IOleAutomationTypes_INTERFACE_DEFINED__ */
+
+#ifndef __ICreateTypeInfo_INTERFACE_DEFINED__
+#define __ICreateTypeInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICreateTypeInfo
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ICreateTypeInfo __RPC_FAR *LPCREATETYPEINFO;
+
+
+EXTERN_C const IID IID_ICreateTypeInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICreateTypeInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetGuid(
+ /* [in] */ REFGUID guid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTypeFlags(
+ /* [in] */ UINT uTypeFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDocString(
+ /* [in] */ LPOLESTR pStrDoc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
+ /* [in] */ DWORD dwHelpContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVersion(
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddRefTypeInfo(
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfo,
+ /* [in] */ HREFTYPE __RPC_FAR *phRefType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddFuncDesc(
+ /* [in] */ UINT index,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddImplType(
+ /* [in] */ UINT index,
+ /* [in] */ HREFTYPE hRefType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetImplTypeFlags(
+ /* [in] */ UINT index,
+ /* [in] */ INT implTypeFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAlignment(
+ /* [in] */ WORD cbAlignment) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSchema(
+ /* [in] */ LPOLESTR pStrSchema) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddVarDesc(
+ /* [in] */ UINT index,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFuncAndParamNames(
+ /* [in] */ UINT index,
+ /* [in][size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVarName(
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTypeDescAlias(
+ /* [in] */ TYPEDESC __RPC_FAR *pTDescAlias) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DefineFuncAsDllEntry(
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDllName,
+ /* [in] */ LPOLESTR szProcName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFuncDocString(
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVarDocString(
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFuncHelpContext(
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVarHelpContext(
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMops(
+ /* [in] */ UINT index,
+ /* [in] */ BSTR bstrMops) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTypeIdldesc(
+ /* [in] */ IDLDESC __RPC_FAR *pIdlDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LayOut( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICreateTypeInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICreateTypeInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICreateTypeInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetGuid )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeFlags )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT uTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDocString )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrDoc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpContext )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVersion )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddRefTypeInfo )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfo,
+ /* [in] */ HREFTYPE __RPC_FAR *phRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddFuncDesc )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddImplType )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ HREFTYPE hRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetImplTypeFlags )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ INT implTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAlignment )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ WORD cbAlignment);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSchema )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrSchema);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddVarDesc )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncAndParamNames )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in][size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarName )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeDescAlias )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ TYPEDESC __RPC_FAR *pTDescAlias);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DefineFuncAsDllEntry )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDllName,
+ /* [in] */ LPOLESTR szProcName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncDocString )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarDocString )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncHelpContext )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarHelpContext )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetMops )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ BSTR bstrMops);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeIdldesc )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ IDLDESC __RPC_FAR *pIdlDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LayOut )(
+ ICreateTypeInfo __RPC_FAR * This);
+
+ END_INTERFACE
+ } ICreateTypeInfoVtbl;
+
+ interface ICreateTypeInfo
+ {
+ CONST_VTBL struct ICreateTypeInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICreateTypeInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICreateTypeInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICreateTypeInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICreateTypeInfo_SetGuid(This,guid) \
+ (This)->lpVtbl -> SetGuid(This,guid)
+
+#define ICreateTypeInfo_SetTypeFlags(This,uTypeFlags) \
+ (This)->lpVtbl -> SetTypeFlags(This,uTypeFlags)
+
+#define ICreateTypeInfo_SetDocString(This,pStrDoc) \
+ (This)->lpVtbl -> SetDocString(This,pStrDoc)
+
+#define ICreateTypeInfo_SetHelpContext(This,dwHelpContext) \
+ (This)->lpVtbl -> SetHelpContext(This,dwHelpContext)
+
+#define ICreateTypeInfo_SetVersion(This,wMajorVerNum,wMinorVerNum) \
+ (This)->lpVtbl -> SetVersion(This,wMajorVerNum,wMinorVerNum)
+
+#define ICreateTypeInfo_AddRefTypeInfo(This,pTInfo,phRefType) \
+ (This)->lpVtbl -> AddRefTypeInfo(This,pTInfo,phRefType)
+
+#define ICreateTypeInfo_AddFuncDesc(This,index,pFuncDesc) \
+ (This)->lpVtbl -> AddFuncDesc(This,index,pFuncDesc)
+
+#define ICreateTypeInfo_AddImplType(This,index,hRefType) \
+ (This)->lpVtbl -> AddImplType(This,index,hRefType)
+
+#define ICreateTypeInfo_SetImplTypeFlags(This,index,implTypeFlags) \
+ (This)->lpVtbl -> SetImplTypeFlags(This,index,implTypeFlags)
+
+#define ICreateTypeInfo_SetAlignment(This,cbAlignment) \
+ (This)->lpVtbl -> SetAlignment(This,cbAlignment)
+
+#define ICreateTypeInfo_SetSchema(This,pStrSchema) \
+ (This)->lpVtbl -> SetSchema(This,pStrSchema)
+
+#define ICreateTypeInfo_AddVarDesc(This,index,pVarDesc) \
+ (This)->lpVtbl -> AddVarDesc(This,index,pVarDesc)
+
+#define ICreateTypeInfo_SetFuncAndParamNames(This,index,rgszNames,cNames) \
+ (This)->lpVtbl -> SetFuncAndParamNames(This,index,rgszNames,cNames)
+
+#define ICreateTypeInfo_SetVarName(This,index,szName) \
+ (This)->lpVtbl -> SetVarName(This,index,szName)
+
+#define ICreateTypeInfo_SetTypeDescAlias(This,pTDescAlias) \
+ (This)->lpVtbl -> SetTypeDescAlias(This,pTDescAlias)
+
+#define ICreateTypeInfo_DefineFuncAsDllEntry(This,index,szDllName,szProcName) \
+ (This)->lpVtbl -> DefineFuncAsDllEntry(This,index,szDllName,szProcName)
+
+#define ICreateTypeInfo_SetFuncDocString(This,index,szDocString) \
+ (This)->lpVtbl -> SetFuncDocString(This,index,szDocString)
+
+#define ICreateTypeInfo_SetVarDocString(This,index,szDocString) \
+ (This)->lpVtbl -> SetVarDocString(This,index,szDocString)
+
+#define ICreateTypeInfo_SetFuncHelpContext(This,index,dwHelpContext) \
+ (This)->lpVtbl -> SetFuncHelpContext(This,index,dwHelpContext)
+
+#define ICreateTypeInfo_SetVarHelpContext(This,index,dwHelpContext) \
+ (This)->lpVtbl -> SetVarHelpContext(This,index,dwHelpContext)
+
+#define ICreateTypeInfo_SetMops(This,index,bstrMops) \
+ (This)->lpVtbl -> SetMops(This,index,bstrMops)
+
+#define ICreateTypeInfo_SetTypeIdldesc(This,pIdlDesc) \
+ (This)->lpVtbl -> SetTypeIdldesc(This,pIdlDesc)
+
+#define ICreateTypeInfo_LayOut(This) \
+ (This)->lpVtbl -> LayOut(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetGuid_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+
+void __RPC_STUB ICreateTypeInfo_SetGuid_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetTypeFlags_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT uTypeFlags);
+
+
+void __RPC_STUB ICreateTypeInfo_SetTypeFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetDocString_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrDoc);
+
+
+void __RPC_STUB ICreateTypeInfo_SetDocString_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetHelpContext_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+
+void __RPC_STUB ICreateTypeInfo_SetHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVersion_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+
+void __RPC_STUB ICreateTypeInfo_SetVersion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddRefTypeInfo_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfo,
+ /* [in] */ HREFTYPE __RPC_FAR *phRefType);
+
+
+void __RPC_STUB ICreateTypeInfo_AddRefTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddFuncDesc_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+
+void __RPC_STUB ICreateTypeInfo_AddFuncDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddImplType_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ HREFTYPE hRefType);
+
+
+void __RPC_STUB ICreateTypeInfo_AddImplType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetImplTypeFlags_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ INT implTypeFlags);
+
+
+void __RPC_STUB ICreateTypeInfo_SetImplTypeFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetAlignment_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ WORD cbAlignment);
+
+
+void __RPC_STUB ICreateTypeInfo_SetAlignment_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetSchema_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrSchema);
+
+
+void __RPC_STUB ICreateTypeInfo_SetSchema_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddVarDesc_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+
+void __RPC_STUB ICreateTypeInfo_AddVarDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetFuncAndParamNames_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in][size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames);
+
+
+void __RPC_STUB ICreateTypeInfo_SetFuncAndParamNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVarName_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szName);
+
+
+void __RPC_STUB ICreateTypeInfo_SetVarName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetTypeDescAlias_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ TYPEDESC __RPC_FAR *pTDescAlias);
+
+
+void __RPC_STUB ICreateTypeInfo_SetTypeDescAlias_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_DefineFuncAsDllEntry_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDllName,
+ /* [in] */ LPOLESTR szProcName);
+
+
+void __RPC_STUB ICreateTypeInfo_DefineFuncAsDllEntry_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetFuncDocString_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+
+void __RPC_STUB ICreateTypeInfo_SetFuncDocString_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVarDocString_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+
+void __RPC_STUB ICreateTypeInfo_SetVarDocString_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetFuncHelpContext_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+
+void __RPC_STUB ICreateTypeInfo_SetFuncHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVarHelpContext_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+
+void __RPC_STUB ICreateTypeInfo_SetVarHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetMops_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ BSTR bstrMops);
+
+
+void __RPC_STUB ICreateTypeInfo_SetMops_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetTypeIdldesc_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ IDLDESC __RPC_FAR *pIdlDesc);
+
+
+void __RPC_STUB ICreateTypeInfo_SetTypeIdldesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_LayOut_Proxy(
+ ICreateTypeInfo __RPC_FAR * This);
+
+
+void __RPC_STUB ICreateTypeInfo_LayOut_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICreateTypeInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICreateTypeInfo2_INTERFACE_DEFINED__
+#define __ICreateTypeInfo2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICreateTypeInfo2
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ICreateTypeInfo2 __RPC_FAR *LPCREATETYPEINFO2;
+
+
+EXTERN_C const IID IID_ICreateTypeInfo2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICreateTypeInfo2 : public ICreateTypeInfo
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DeleteFuncDesc(
+ /* [in] */ UINT index) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteFuncDescByMemId(
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteVarDesc(
+ /* [in] */ UINT index) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteVarDescByMemId(
+ /* [in] */ MEMBERID memid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteImplType(
+ /* [in] */ UINT index) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCustData(
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFuncCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetParamCustData(
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVarCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetImplTypeCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpStringContext(
+ /* [in] */ ULONG dwHelpStringContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFuncHelpStringContext(
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVarHelpStringContext(
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Invalidate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetName(
+ /* [in] */ LPOLESTR szName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICreateTypeInfo2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICreateTypeInfo2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICreateTypeInfo2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetGuid )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeFlags )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT uTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDocString )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrDoc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVersion )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddRefTypeInfo )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfo,
+ /* [in] */ HREFTYPE __RPC_FAR *phRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddFuncDesc )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddImplType )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ HREFTYPE hRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetImplTypeFlags )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ INT implTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAlignment )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ WORD cbAlignment);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSchema )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrSchema);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddVarDesc )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncAndParamNames )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in][size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarName )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeDescAlias )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ TYPEDESC __RPC_FAR *pTDescAlias);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DefineFuncAsDllEntry )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDllName,
+ /* [in] */ LPOLESTR szProcName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncDocString )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarDocString )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncHelpContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarHelpContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetMops )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ BSTR bstrMops);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeIdldesc )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ IDLDESC __RPC_FAR *pIdlDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LayOut )(
+ ICreateTypeInfo2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteFuncDesc )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteFuncDescByMemId )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteVarDesc )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteVarDescByMemId )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteImplType )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetCustData )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncCustData )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetParamCustData )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarCustData )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetImplTypeCustData )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpStringContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ ULONG dwHelpStringContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncHelpStringContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarHelpStringContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invalidate )(
+ ICreateTypeInfo2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetName )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+ END_INTERFACE
+ } ICreateTypeInfo2Vtbl;
+
+ interface ICreateTypeInfo2
+ {
+ CONST_VTBL struct ICreateTypeInfo2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICreateTypeInfo2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICreateTypeInfo2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICreateTypeInfo2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICreateTypeInfo2_SetGuid(This,guid) \
+ (This)->lpVtbl -> SetGuid(This,guid)
+
+#define ICreateTypeInfo2_SetTypeFlags(This,uTypeFlags) \
+ (This)->lpVtbl -> SetTypeFlags(This,uTypeFlags)
+
+#define ICreateTypeInfo2_SetDocString(This,pStrDoc) \
+ (This)->lpVtbl -> SetDocString(This,pStrDoc)
+
+#define ICreateTypeInfo2_SetHelpContext(This,dwHelpContext) \
+ (This)->lpVtbl -> SetHelpContext(This,dwHelpContext)
+
+#define ICreateTypeInfo2_SetVersion(This,wMajorVerNum,wMinorVerNum) \
+ (This)->lpVtbl -> SetVersion(This,wMajorVerNum,wMinorVerNum)
+
+#define ICreateTypeInfo2_AddRefTypeInfo(This,pTInfo,phRefType) \
+ (This)->lpVtbl -> AddRefTypeInfo(This,pTInfo,phRefType)
+
+#define ICreateTypeInfo2_AddFuncDesc(This,index,pFuncDesc) \
+ (This)->lpVtbl -> AddFuncDesc(This,index,pFuncDesc)
+
+#define ICreateTypeInfo2_AddImplType(This,index,hRefType) \
+ (This)->lpVtbl -> AddImplType(This,index,hRefType)
+
+#define ICreateTypeInfo2_SetImplTypeFlags(This,index,implTypeFlags) \
+ (This)->lpVtbl -> SetImplTypeFlags(This,index,implTypeFlags)
+
+#define ICreateTypeInfo2_SetAlignment(This,cbAlignment) \
+ (This)->lpVtbl -> SetAlignment(This,cbAlignment)
+
+#define ICreateTypeInfo2_SetSchema(This,pStrSchema) \
+ (This)->lpVtbl -> SetSchema(This,pStrSchema)
+
+#define ICreateTypeInfo2_AddVarDesc(This,index,pVarDesc) \
+ (This)->lpVtbl -> AddVarDesc(This,index,pVarDesc)
+
+#define ICreateTypeInfo2_SetFuncAndParamNames(This,index,rgszNames,cNames) \
+ (This)->lpVtbl -> SetFuncAndParamNames(This,index,rgszNames,cNames)
+
+#define ICreateTypeInfo2_SetVarName(This,index,szName) \
+ (This)->lpVtbl -> SetVarName(This,index,szName)
+
+#define ICreateTypeInfo2_SetTypeDescAlias(This,pTDescAlias) \
+ (This)->lpVtbl -> SetTypeDescAlias(This,pTDescAlias)
+
+#define ICreateTypeInfo2_DefineFuncAsDllEntry(This,index,szDllName,szProcName) \
+ (This)->lpVtbl -> DefineFuncAsDllEntry(This,index,szDllName,szProcName)
+
+#define ICreateTypeInfo2_SetFuncDocString(This,index,szDocString) \
+ (This)->lpVtbl -> SetFuncDocString(This,index,szDocString)
+
+#define ICreateTypeInfo2_SetVarDocString(This,index,szDocString) \
+ (This)->lpVtbl -> SetVarDocString(This,index,szDocString)
+
+#define ICreateTypeInfo2_SetFuncHelpContext(This,index,dwHelpContext) \
+ (This)->lpVtbl -> SetFuncHelpContext(This,index,dwHelpContext)
+
+#define ICreateTypeInfo2_SetVarHelpContext(This,index,dwHelpContext) \
+ (This)->lpVtbl -> SetVarHelpContext(This,index,dwHelpContext)
+
+#define ICreateTypeInfo2_SetMops(This,index,bstrMops) \
+ (This)->lpVtbl -> SetMops(This,index,bstrMops)
+
+#define ICreateTypeInfo2_SetTypeIdldesc(This,pIdlDesc) \
+ (This)->lpVtbl -> SetTypeIdldesc(This,pIdlDesc)
+
+#define ICreateTypeInfo2_LayOut(This) \
+ (This)->lpVtbl -> LayOut(This)
+
+
+#define ICreateTypeInfo2_DeleteFuncDesc(This,index) \
+ (This)->lpVtbl -> DeleteFuncDesc(This,index)
+
+#define ICreateTypeInfo2_DeleteFuncDescByMemId(This,memid,invKind) \
+ (This)->lpVtbl -> DeleteFuncDescByMemId(This,memid,invKind)
+
+#define ICreateTypeInfo2_DeleteVarDesc(This,index) \
+ (This)->lpVtbl -> DeleteVarDesc(This,index)
+
+#define ICreateTypeInfo2_DeleteVarDescByMemId(This,memid) \
+ (This)->lpVtbl -> DeleteVarDescByMemId(This,memid)
+
+#define ICreateTypeInfo2_DeleteImplType(This,index) \
+ (This)->lpVtbl -> DeleteImplType(This,index)
+
+#define ICreateTypeInfo2_SetCustData(This,guid,pVarVal) \
+ (This)->lpVtbl -> SetCustData(This,guid,pVarVal)
+
+#define ICreateTypeInfo2_SetFuncCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> SetFuncCustData(This,index,guid,pVarVal)
+
+#define ICreateTypeInfo2_SetParamCustData(This,indexFunc,indexParam,guid,pVarVal) \
+ (This)->lpVtbl -> SetParamCustData(This,indexFunc,indexParam,guid,pVarVal)
+
+#define ICreateTypeInfo2_SetVarCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> SetVarCustData(This,index,guid,pVarVal)
+
+#define ICreateTypeInfo2_SetImplTypeCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> SetImplTypeCustData(This,index,guid,pVarVal)
+
+#define ICreateTypeInfo2_SetHelpStringContext(This,dwHelpStringContext) \
+ (This)->lpVtbl -> SetHelpStringContext(This,dwHelpStringContext)
+
+#define ICreateTypeInfo2_SetFuncHelpStringContext(This,index,dwHelpStringContext) \
+ (This)->lpVtbl -> SetFuncHelpStringContext(This,index,dwHelpStringContext)
+
+#define ICreateTypeInfo2_SetVarHelpStringContext(This,index,dwHelpStringContext) \
+ (This)->lpVtbl -> SetVarHelpStringContext(This,index,dwHelpStringContext)
+
+#define ICreateTypeInfo2_Invalidate(This) \
+ (This)->lpVtbl -> Invalidate(This)
+
+#define ICreateTypeInfo2_SetName(This,szName) \
+ (This)->lpVtbl -> SetName(This,szName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteFuncDesc_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+
+void __RPC_STUB ICreateTypeInfo2_DeleteFuncDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteFuncDescByMemId_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind);
+
+
+void __RPC_STUB ICreateTypeInfo2_DeleteFuncDescByMemId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteVarDesc_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+
+void __RPC_STUB ICreateTypeInfo2_DeleteVarDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteVarDescByMemId_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid);
+
+
+void __RPC_STUB ICreateTypeInfo2_DeleteVarDescByMemId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteImplType_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+
+void __RPC_STUB ICreateTypeInfo2_DeleteImplType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetCustData_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetFuncCustData_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetFuncCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetParamCustData_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetParamCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetVarCustData_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetVarCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetImplTypeCustData_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetImplTypeCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetHelpStringContext_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ ULONG dwHelpStringContext);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetHelpStringContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetFuncHelpStringContext_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetFuncHelpStringContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetVarHelpStringContext_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetVarHelpStringContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_Invalidate_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This);
+
+
+void __RPC_STUB ICreateTypeInfo2_Invalidate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetName_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICreateTypeInfo2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICreateTypeLib_INTERFACE_DEFINED__
+#define __ICreateTypeLib_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICreateTypeLib
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ICreateTypeLib __RPC_FAR *LPCREATETYPELIB;
+
+
+EXTERN_C const IID IID_ICreateTypeLib;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICreateTypeLib : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateTypeInfo(
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ TYPEKIND tkind,
+ /* [out] */ ICreateTypeInfo __RPC_FAR *__RPC_FAR *ppCTInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetName(
+ /* [in] */ LPOLESTR szName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVersion(
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetGuid(
+ /* [in] */ REFGUID guid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDocString(
+ /* [in] */ LPOLESTR szDoc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpFileName(
+ /* [in] */ LPOLESTR szHelpFileName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
+ /* [in] */ DWORD dwHelpContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetLcid(
+ /* [in] */ LCID lcid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetLibFlags(
+ /* [in] */ UINT uLibFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveAllChanges( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICreateTypeLibVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICreateTypeLib __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICreateTypeLib __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateTypeInfo )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ TYPEKIND tkind,
+ /* [out] */ ICreateTypeInfo __RPC_FAR *__RPC_FAR *ppCTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetName )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVersion )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetGuid )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDocString )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szDoc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpFileName )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szHelpFileName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpContext )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetLcid )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LCID lcid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetLibFlags )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ UINT uLibFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveAllChanges )(
+ ICreateTypeLib __RPC_FAR * This);
+
+ END_INTERFACE
+ } ICreateTypeLibVtbl;
+
+ interface ICreateTypeLib
+ {
+ CONST_VTBL struct ICreateTypeLibVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICreateTypeLib_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICreateTypeLib_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICreateTypeLib_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICreateTypeLib_CreateTypeInfo(This,szName,tkind,ppCTInfo) \
+ (This)->lpVtbl -> CreateTypeInfo(This,szName,tkind,ppCTInfo)
+
+#define ICreateTypeLib_SetName(This,szName) \
+ (This)->lpVtbl -> SetName(This,szName)
+
+#define ICreateTypeLib_SetVersion(This,wMajorVerNum,wMinorVerNum) \
+ (This)->lpVtbl -> SetVersion(This,wMajorVerNum,wMinorVerNum)
+
+#define ICreateTypeLib_SetGuid(This,guid) \
+ (This)->lpVtbl -> SetGuid(This,guid)
+
+#define ICreateTypeLib_SetDocString(This,szDoc) \
+ (This)->lpVtbl -> SetDocString(This,szDoc)
+
+#define ICreateTypeLib_SetHelpFileName(This,szHelpFileName) \
+ (This)->lpVtbl -> SetHelpFileName(This,szHelpFileName)
+
+#define ICreateTypeLib_SetHelpContext(This,dwHelpContext) \
+ (This)->lpVtbl -> SetHelpContext(This,dwHelpContext)
+
+#define ICreateTypeLib_SetLcid(This,lcid) \
+ (This)->lpVtbl -> SetLcid(This,lcid)
+
+#define ICreateTypeLib_SetLibFlags(This,uLibFlags) \
+ (This)->lpVtbl -> SetLibFlags(This,uLibFlags)
+
+#define ICreateTypeLib_SaveAllChanges(This) \
+ (This)->lpVtbl -> SaveAllChanges(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_CreateTypeInfo_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ TYPEKIND tkind,
+ /* [out] */ ICreateTypeInfo __RPC_FAR *__RPC_FAR *ppCTInfo);
+
+
+void __RPC_STUB ICreateTypeLib_CreateTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetName_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+
+void __RPC_STUB ICreateTypeLib_SetName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetVersion_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+
+void __RPC_STUB ICreateTypeLib_SetVersion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetGuid_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+
+void __RPC_STUB ICreateTypeLib_SetGuid_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetDocString_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szDoc);
+
+
+void __RPC_STUB ICreateTypeLib_SetDocString_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetHelpFileName_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szHelpFileName);
+
+
+void __RPC_STUB ICreateTypeLib_SetHelpFileName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetHelpContext_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+
+void __RPC_STUB ICreateTypeLib_SetHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetLcid_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LCID lcid);
+
+
+void __RPC_STUB ICreateTypeLib_SetLcid_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetLibFlags_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ UINT uLibFlags);
+
+
+void __RPC_STUB ICreateTypeLib_SetLibFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SaveAllChanges_Proxy(
+ ICreateTypeLib __RPC_FAR * This);
+
+
+void __RPC_STUB ICreateTypeLib_SaveAllChanges_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICreateTypeLib_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICreateTypeLib2_INTERFACE_DEFINED__
+#define __ICreateTypeLib2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICreateTypeLib2
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ICreateTypeLib2 __RPC_FAR *LPCREATETYPELIB2;
+
+
+EXTERN_C const IID IID_ICreateTypeLib2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICreateTypeLib2 : public ICreateTypeLib
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DeleteTypeInfo(
+ /* [in] */ LPOLESTR szName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCustData(
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpStringContext(
+ /* [in] */ ULONG dwHelpStringContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpStringDll(
+ /* [in] */ LPOLESTR szFileName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICreateTypeLib2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICreateTypeLib2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICreateTypeLib2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateTypeInfo )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ TYPEKIND tkind,
+ /* [out] */ ICreateTypeInfo __RPC_FAR *__RPC_FAR *ppCTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetName )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVersion )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetGuid )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDocString )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szDoc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpFileName )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szHelpFileName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpContext )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetLcid )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LCID lcid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetLibFlags )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ UINT uLibFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveAllChanges )(
+ ICreateTypeLib2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteTypeInfo )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetCustData )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpStringContext )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ ULONG dwHelpStringContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpStringDll )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szFileName);
+
+ END_INTERFACE
+ } ICreateTypeLib2Vtbl;
+
+ interface ICreateTypeLib2
+ {
+ CONST_VTBL struct ICreateTypeLib2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICreateTypeLib2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICreateTypeLib2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICreateTypeLib2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICreateTypeLib2_CreateTypeInfo(This,szName,tkind,ppCTInfo) \
+ (This)->lpVtbl -> CreateTypeInfo(This,szName,tkind,ppCTInfo)
+
+#define ICreateTypeLib2_SetName(This,szName) \
+ (This)->lpVtbl -> SetName(This,szName)
+
+#define ICreateTypeLib2_SetVersion(This,wMajorVerNum,wMinorVerNum) \
+ (This)->lpVtbl -> SetVersion(This,wMajorVerNum,wMinorVerNum)
+
+#define ICreateTypeLib2_SetGuid(This,guid) \
+ (This)->lpVtbl -> SetGuid(This,guid)
+
+#define ICreateTypeLib2_SetDocString(This,szDoc) \
+ (This)->lpVtbl -> SetDocString(This,szDoc)
+
+#define ICreateTypeLib2_SetHelpFileName(This,szHelpFileName) \
+ (This)->lpVtbl -> SetHelpFileName(This,szHelpFileName)
+
+#define ICreateTypeLib2_SetHelpContext(This,dwHelpContext) \
+ (This)->lpVtbl -> SetHelpContext(This,dwHelpContext)
+
+#define ICreateTypeLib2_SetLcid(This,lcid) \
+ (This)->lpVtbl -> SetLcid(This,lcid)
+
+#define ICreateTypeLib2_SetLibFlags(This,uLibFlags) \
+ (This)->lpVtbl -> SetLibFlags(This,uLibFlags)
+
+#define ICreateTypeLib2_SaveAllChanges(This) \
+ (This)->lpVtbl -> SaveAllChanges(This)
+
+
+#define ICreateTypeLib2_DeleteTypeInfo(This,szName) \
+ (This)->lpVtbl -> DeleteTypeInfo(This,szName)
+
+#define ICreateTypeLib2_SetCustData(This,guid,pVarVal) \
+ (This)->lpVtbl -> SetCustData(This,guid,pVarVal)
+
+#define ICreateTypeLib2_SetHelpStringContext(This,dwHelpStringContext) \
+ (This)->lpVtbl -> SetHelpStringContext(This,dwHelpStringContext)
+
+#define ICreateTypeLib2_SetHelpStringDll(This,szFileName) \
+ (This)->lpVtbl -> SetHelpStringDll(This,szFileName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_DeleteTypeInfo_Proxy(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+
+void __RPC_STUB ICreateTypeLib2_DeleteTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_SetCustData_Proxy(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeLib2_SetCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_SetHelpStringContext_Proxy(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ ULONG dwHelpStringContext);
+
+
+void __RPC_STUB ICreateTypeLib2_SetHelpStringContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_SetHelpStringDll_Proxy(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szFileName);
+
+
+void __RPC_STUB ICreateTypeLib2_SetHelpStringDll_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICreateTypeLib2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDispatch_INTERFACE_DEFINED__
+#define __IDispatch_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDispatch
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IDispatch __RPC_FAR *LPDISPATCH;
+
+/* DISPID reserved to indicate an "unknown" name */
+/* only reserved for data members (properties); reused as a method dispid below */
+#define DISPID_UNKNOWN ( -1 )
+
+/* DISPID reserved for the "value" property */
+#define DISPID_VALUE ( 0 )
+
+/* The following DISPID is reserved to indicate the param
+ * that is the right-hand-side (or "put" value) of a PropertyPut
+ */
+#define DISPID_PROPERTYPUT ( -3 )
+
+/* DISPID reserved for the standard "NewEnum" method */
+#define DISPID_NEWENUM ( -4 )
+
+/* DISPID reserved for the standard "Evaluate" method */
+#define DISPID_EVALUATE ( -5 )
+
+#define DISPID_CONSTRUCTOR ( -6 )
+
+#define DISPID_DESTRUCTOR ( -7 )
+
+#define DISPID_COLLECT ( -8 )
+
+/* The range -500 through -999 is reserved for Controls */
+/* The range 0x80010000 through 0x8001FFFF is reserved for Controls */
+/* The range -5000 through -5499 is reserved for ActiveX Accessability */
+/* The remainder of the negative DISPIDs are reserved for future use */
+
+EXTERN_C const IID IID_IDispatch;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDispatch : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(
+ /* [out] */ UINT __RPC_FAR *pctinfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgDispId) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDispatchVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDispatch __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDispatch __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )(
+ IDispatch __RPC_FAR * This,
+ /* [out] */ UINT __RPC_FAR *pctinfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgDispId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+ END_INTERFACE
+ } IDispatchVtbl;
+
+ interface IDispatch
+ {
+ CONST_VTBL struct IDispatchVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDispatch_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDispatch_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDispatch_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDispatch_GetTypeInfoCount(This,pctinfo) \
+ (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IDispatch_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+ (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IDispatch_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+ (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define IDispatch_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDispatch_GetTypeInfoCount_Proxy(
+ IDispatch __RPC_FAR * This,
+ /* [out] */ UINT __RPC_FAR *pctinfo);
+
+
+void __RPC_STUB IDispatch_GetTypeInfoCount_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDispatch_GetTypeInfo_Proxy(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+
+void __RPC_STUB IDispatch_GetTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDispatch_GetIDsOfNames_Proxy(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgDispId);
+
+
+void __RPC_STUB IDispatch_GetIDsOfNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDispatch_RemoteInvoke_Proxy(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [size_is][out] */ VARIANTARG __RPC_FAR *rgVtRef,
+ /* [in] */ UINT cVtRef,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *pArgErr);
+
+
+void __RPC_STUB IDispatch_RemoteInvoke_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDispatch_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumVARIANT_INTERFACE_DEFINED__
+#define __IEnumVARIANT_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumVARIANT
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumVARIANT __RPC_FAR *LPENUMVARIANT;
+
+
+EXTERN_C const IID IID_IEnumVARIANT;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumVARIANT : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ VARIANT __RPC_FAR *rgVar,
+ /* [out] */ ULONG __RPC_FAR *pCeltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumVARIANT __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumVARIANTVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumVARIANT __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumVARIANT __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ VARIANT __RPC_FAR *rgVar,
+ /* [out] */ ULONG __RPC_FAR *pCeltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumVARIANT __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [out] */ IEnumVARIANT __RPC_FAR *__RPC_FAR *ppEnum);
+
+ END_INTERFACE
+ } IEnumVARIANTVtbl;
+
+ interface IEnumVARIANT
+ {
+ CONST_VTBL struct IEnumVARIANTVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumVARIANT_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumVARIANT_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumVARIANT_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumVARIANT_Next(This,celt,rgVar,pCeltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgVar,pCeltFetched)
+
+#define IEnumVARIANT_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumVARIANT_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumVARIANT_Clone(This,ppEnum) \
+ (This)->lpVtbl -> Clone(This,ppEnum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumVARIANT_RemoteNext_Proxy(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ VARIANT __RPC_FAR *rgVar,
+ /* [out] */ ULONG __RPC_FAR *pCeltFetched);
+
+
+void __RPC_STUB IEnumVARIANT_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumVARIANT_Skip_Proxy(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumVARIANT_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumVARIANT_Reset_Proxy(
+ IEnumVARIANT __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumVARIANT_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumVARIANT_Clone_Proxy(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [out] */ IEnumVARIANT __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IEnumVARIANT_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumVARIANT_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeComp_INTERFACE_DEFINED__
+#define __ITypeComp_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeComp
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ITypeComp __RPC_FAR *LPTYPECOMP;
+
+typedef /* [v1_enum] */
+enum tagDESCKIND
+ { DESCKIND_NONE = 0,
+ DESCKIND_FUNCDESC = DESCKIND_NONE + 1,
+ DESCKIND_VARDESC = DESCKIND_FUNCDESC + 1,
+ DESCKIND_TYPECOMP = DESCKIND_VARDESC + 1,
+ DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP + 1,
+ DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ + 1
+ } DESCKIND;
+
+typedef union tagBINDPTR
+ {
+ FUNCDESC __RPC_FAR *lpfuncdesc;
+ VARDESC __RPC_FAR *lpvardesc;
+ ITypeComp __RPC_FAR *lptcomp;
+ } BINDPTR;
+
+typedef union tagBINDPTR __RPC_FAR *LPBINDPTR;
+
+
+EXTERN_C const IID IID_ITypeComp;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeComp : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Bind(
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [in] */ WORD wFlags,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ DESCKIND __RPC_FAR *pDescKind,
+ /* [out] */ BINDPTR __RPC_FAR *pBindPtr) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE BindType(
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeCompVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeComp __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeComp __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Bind )(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [in] */ WORD wFlags,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ DESCKIND __RPC_FAR *pDescKind,
+ /* [out] */ BINDPTR __RPC_FAR *pBindPtr);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BindType )(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+ END_INTERFACE
+ } ITypeCompVtbl;
+
+ interface ITypeComp
+ {
+ CONST_VTBL struct ITypeCompVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeComp_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeComp_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeComp_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeComp_Bind(This,szName,lHashVal,wFlags,ppTInfo,pDescKind,pBindPtr) \
+ (This)->lpVtbl -> Bind(This,szName,lHashVal,wFlags,ppTInfo,pDescKind,pBindPtr)
+
+#define ITypeComp_BindType(This,szName,lHashVal,ppTInfo,ppTComp) \
+ (This)->lpVtbl -> BindType(This,szName,lHashVal,ppTInfo,ppTComp)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeComp_RemoteBind_Proxy(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [in] */ WORD wFlags,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ DESCKIND __RPC_FAR *pDescKind,
+ /* [out] */ PPFUNCDESC ppFuncDesc,
+ /* [out] */ PPVARDESC ppVarDesc,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTypeComp,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+
+void __RPC_STUB ITypeComp_RemoteBind_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeComp_RemoteBindType_Proxy(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+
+void __RPC_STUB ITypeComp_RemoteBindType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeComp_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeInfo_INTERFACE_DEFINED__
+#define __ITypeInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeInfo
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ITypeInfo __RPC_FAR *LPTYPEINFO;
+
+
+EXTERN_C const IID IID_ITypeInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeInfo : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetTypeAttr(
+ /* [out] */ TYPEATTR __RPC_FAR *__RPC_FAR *ppTypeAttr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeComp(
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetFuncDesc(
+ /* [in] */ UINT index,
+ /* [out] */ FUNCDESC __RPC_FAR *__RPC_FAR *ppFuncDesc) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetVarDesc(
+ /* [in] */ UINT index,
+ /* [out] */ VARDESC __RPC_FAR *__RPC_FAR *ppVarDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetNames(
+ /* [in] */ MEMBERID memid,
+ /* [length_is][size_is][out] */ BSTR __RPC_FAR *rgBstrNames,
+ /* [in] */ UINT cMaxNames,
+ /* [out] */ UINT __RPC_FAR *pcNames) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRefTypeOfImplType(
+ /* [in] */ UINT index,
+ /* [out] */ HREFTYPE __RPC_FAR *pRefType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetImplTypeFlags(
+ /* [in] */ UINT index,
+ /* [out] */ INT __RPC_FAR *pImplTypeFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [size_is][out] */ MEMBERID __RPC_FAR *pMemId) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ PVOID pvInstance,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDocumentation(
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDllEntry(
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRefTypeInfo(
+ /* [in] */ HREFTYPE hRefType,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE AddressOfMember(
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ PVOID __RPC_FAR *ppv) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE CreateInstance(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMops(
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrMops) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetContainingTypeLib(
+ /* [out] */ ITypeLib __RPC_FAR *__RPC_FAR *ppTLib,
+ /* [out] */ UINT __RPC_FAR *pIndex) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE ReleaseTypeAttr(
+ /* [in] */ TYPEATTR __RPC_FAR *pTypeAttr) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE ReleaseFuncDesc(
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE ReleaseVarDesc(
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeInfo __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeAttr )(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ TYPEATTR __RPC_FAR *__RPC_FAR *ppTypeAttr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeComp )(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFuncDesc )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ FUNCDESC __RPC_FAR *__RPC_FAR *ppFuncDesc);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetVarDesc )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ VARDESC __RPC_FAR *__RPC_FAR *ppVarDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNames )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [length_is][size_is][out] */ BSTR __RPC_FAR *rgBstrNames,
+ /* [in] */ UINT cMaxNames,
+ /* [out] */ UINT __RPC_FAR *pcNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRefTypeOfImplType )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ HREFTYPE __RPC_FAR *pRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetImplTypeFlags )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ INT __RPC_FAR *pImplTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )(
+ ITypeInfo __RPC_FAR * This,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [size_is][out] */ MEMBERID __RPC_FAR *pMemId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ PVOID pvInstance,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDllEntry )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRefTypeInfo )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ HREFTYPE hRefType,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddressOfMember )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ PVOID __RPC_FAR *ppv);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateInstance )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMops )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrMops);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetContainingTypeLib )(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ ITypeLib __RPC_FAR *__RPC_FAR *ppTLib,
+ /* [out] */ UINT __RPC_FAR *pIndex);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseTypeAttr )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ TYPEATTR __RPC_FAR *pTypeAttr);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseFuncDesc )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseVarDesc )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+ END_INTERFACE
+ } ITypeInfoVtbl;
+
+ interface ITypeInfo
+ {
+ CONST_VTBL struct ITypeInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeInfo_GetTypeAttr(This,ppTypeAttr) \
+ (This)->lpVtbl -> GetTypeAttr(This,ppTypeAttr)
+
+#define ITypeInfo_GetTypeComp(This,ppTComp) \
+ (This)->lpVtbl -> GetTypeComp(This,ppTComp)
+
+#define ITypeInfo_GetFuncDesc(This,index,ppFuncDesc) \
+ (This)->lpVtbl -> GetFuncDesc(This,index,ppFuncDesc)
+
+#define ITypeInfo_GetVarDesc(This,index,ppVarDesc) \
+ (This)->lpVtbl -> GetVarDesc(This,index,ppVarDesc)
+
+#define ITypeInfo_GetNames(This,memid,rgBstrNames,cMaxNames,pcNames) \
+ (This)->lpVtbl -> GetNames(This,memid,rgBstrNames,cMaxNames,pcNames)
+
+#define ITypeInfo_GetRefTypeOfImplType(This,index,pRefType) \
+ (This)->lpVtbl -> GetRefTypeOfImplType(This,index,pRefType)
+
+#define ITypeInfo_GetImplTypeFlags(This,index,pImplTypeFlags) \
+ (This)->lpVtbl -> GetImplTypeFlags(This,index,pImplTypeFlags)
+
+#define ITypeInfo_GetIDsOfNames(This,rgszNames,cNames,pMemId) \
+ (This)->lpVtbl -> GetIDsOfNames(This,rgszNames,cNames,pMemId)
+
+#define ITypeInfo_Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ (This)->lpVtbl -> Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+#define ITypeInfo_GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) \
+ (This)->lpVtbl -> GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+
+#define ITypeInfo_GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal) \
+ (This)->lpVtbl -> GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal)
+
+#define ITypeInfo_GetRefTypeInfo(This,hRefType,ppTInfo) \
+ (This)->lpVtbl -> GetRefTypeInfo(This,hRefType,ppTInfo)
+
+#define ITypeInfo_AddressOfMember(This,memid,invKind,ppv) \
+ (This)->lpVtbl -> AddressOfMember(This,memid,invKind,ppv)
+
+#define ITypeInfo_CreateInstance(This,pUnkOuter,riid,ppvObj) \
+ (This)->lpVtbl -> CreateInstance(This,pUnkOuter,riid,ppvObj)
+
+#define ITypeInfo_GetMops(This,memid,pBstrMops) \
+ (This)->lpVtbl -> GetMops(This,memid,pBstrMops)
+
+#define ITypeInfo_GetContainingTypeLib(This,ppTLib,pIndex) \
+ (This)->lpVtbl -> GetContainingTypeLib(This,ppTLib,pIndex)
+
+#define ITypeInfo_ReleaseTypeAttr(This,pTypeAttr) \
+ (This)->lpVtbl -> ReleaseTypeAttr(This,pTypeAttr)
+
+#define ITypeInfo_ReleaseFuncDesc(This,pFuncDesc) \
+ (This)->lpVtbl -> ReleaseFuncDesc(This,pFuncDesc)
+
+#define ITypeInfo_ReleaseVarDesc(This,pVarDesc) \
+ (This)->lpVtbl -> ReleaseVarDesc(This,pVarDesc)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetTypeAttr_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ PPTYPEATTR ppTypeAttr,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+
+void __RPC_STUB ITypeInfo_RemoteGetTypeAttr_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetTypeComp_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+
+void __RPC_STUB ITypeInfo_GetTypeComp_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetFuncDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ PPFUNCDESC ppFuncDesc,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+
+void __RPC_STUB ITypeInfo_RemoteGetFuncDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetVarDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ PPVARDESC ppVarDesc,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+
+void __RPC_STUB ITypeInfo_RemoteGetVarDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetNames_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [length_is][size_is][out] */ BSTR __RPC_FAR *rgBstrNames,
+ /* [in] */ UINT cMaxNames,
+ /* [out] */ UINT __RPC_FAR *pcNames);
+
+
+void __RPC_STUB ITypeInfo_GetNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetRefTypeOfImplType_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ HREFTYPE __RPC_FAR *pRefType);
+
+
+void __RPC_STUB ITypeInfo_GetRefTypeOfImplType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetImplTypeFlags_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ INT __RPC_FAR *pImplTypeFlags);
+
+
+void __RPC_STUB ITypeInfo_GetImplTypeFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetIDsOfNames_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [size_is][out] */ MEMBERID __RPC_FAR *pMemId);
+
+
+void __RPC_STUB ITypeInfo_GetIDsOfNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteInvoke_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pIUnk,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [size_is][out] */ VARIANTARG __RPC_FAR *rgVtRef,
+ /* [in] */ UINT cVtRef,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *pArgErr);
+
+
+void __RPC_STUB ITypeInfo_RemoteInvoke_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetDocumentation_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+
+void __RPC_STUB ITypeInfo_RemoteGetDocumentation_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetDllEntry_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal);
+
+
+void __RPC_STUB ITypeInfo_RemoteGetDllEntry_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetRefTypeInfo_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ HREFTYPE hRefType,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+
+void __RPC_STUB ITypeInfo_GetRefTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_LocalAddressOfMember_Proxy(
+ ITypeInfo __RPC_FAR * This);
+
+
+void __RPC_STUB ITypeInfo_LocalAddressOfMember_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteCreateInstance_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+void __RPC_STUB ITypeInfo_RemoteCreateInstance_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetMops_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrMops);
+
+
+void __RPC_STUB ITypeInfo_GetMops_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetContainingTypeLib_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ ITypeLib __RPC_FAR *__RPC_FAR *ppTLib,
+ /* [out] */ UINT __RPC_FAR *pIndex);
+
+
+void __RPC_STUB ITypeInfo_GetContainingTypeLib_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_LocalReleaseTypeAttr_Proxy(
+ ITypeInfo __RPC_FAR * This);
+
+
+void __RPC_STUB ITypeInfo_LocalReleaseTypeAttr_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_LocalReleaseFuncDesc_Proxy(
+ ITypeInfo __RPC_FAR * This);
+
+
+void __RPC_STUB ITypeInfo_LocalReleaseFuncDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_LocalReleaseVarDesc_Proxy(
+ ITypeInfo __RPC_FAR * This);
+
+
+void __RPC_STUB ITypeInfo_LocalReleaseVarDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeInfo2_INTERFACE_DEFINED__
+#define __ITypeInfo2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeInfo2
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ITypeInfo2 __RPC_FAR *LPTYPEINFO2;
+
+
+EXTERN_C const IID IID_ITypeInfo2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeInfo2 : public ITypeInfo
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetTypeKind(
+ /* [out] */ TYPEKIND __RPC_FAR *pTypeKind) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeFlags(
+ /* [out] */ ULONG __RPC_FAR *pTypeFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFuncIndexOfMemId(
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ UINT __RPC_FAR *pFuncIndex) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetVarIndexOfMemId(
+ /* [in] */ MEMBERID memid,
+ /* [out] */ UINT __RPC_FAR *pVarIndex) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCustData(
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFuncCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetParamCustData(
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetVarCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetImplTypeCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDocumentation2(
+ /* [in] */ MEMBERID memid,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllCustData(
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllFuncCustData(
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllParamCustData(
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllVarCustData(
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllImplTypeCustData(
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeInfo2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeInfo2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeInfo2 __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeAttr )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ TYPEATTR __RPC_FAR *__RPC_FAR *ppTypeAttr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeComp )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFuncDesc )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ FUNCDESC __RPC_FAR *__RPC_FAR *ppFuncDesc);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetVarDesc )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ VARDESC __RPC_FAR *__RPC_FAR *ppVarDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNames )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [length_is][size_is][out] */ BSTR __RPC_FAR *rgBstrNames,
+ /* [in] */ UINT cMaxNames,
+ /* [out] */ UINT __RPC_FAR *pcNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRefTypeOfImplType )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ HREFTYPE __RPC_FAR *pRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetImplTypeFlags )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ INT __RPC_FAR *pImplTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [size_is][out] */ MEMBERID __RPC_FAR *pMemId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ PVOID pvInstance,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDllEntry )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRefTypeInfo )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ HREFTYPE hRefType,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddressOfMember )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ PVOID __RPC_FAR *ppv);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateInstance )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMops )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrMops);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetContainingTypeLib )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ ITypeLib __RPC_FAR *__RPC_FAR *ppTLib,
+ /* [out] */ UINT __RPC_FAR *pIndex);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseTypeAttr )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ TYPEATTR __RPC_FAR *pTypeAttr);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseFuncDesc )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseVarDesc )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeKind )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ TYPEKIND __RPC_FAR *pTypeKind);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeFlags )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFuncIndexOfMemId )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ UINT __RPC_FAR *pFuncIndex);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetVarIndexOfMemId )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ UINT __RPC_FAR *pVarIndex);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFuncCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetParamCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetVarCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetImplTypeCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation2 )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllFuncCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllParamCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllVarCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllImplTypeCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ END_INTERFACE
+ } ITypeInfo2Vtbl;
+
+ interface ITypeInfo2
+ {
+ CONST_VTBL struct ITypeInfo2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeInfo2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeInfo2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeInfo2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeInfo2_GetTypeAttr(This,ppTypeAttr) \
+ (This)->lpVtbl -> GetTypeAttr(This,ppTypeAttr)
+
+#define ITypeInfo2_GetTypeComp(This,ppTComp) \
+ (This)->lpVtbl -> GetTypeComp(This,ppTComp)
+
+#define ITypeInfo2_GetFuncDesc(This,index,ppFuncDesc) \
+ (This)->lpVtbl -> GetFuncDesc(This,index,ppFuncDesc)
+
+#define ITypeInfo2_GetVarDesc(This,index,ppVarDesc) \
+ (This)->lpVtbl -> GetVarDesc(This,index,ppVarDesc)
+
+#define ITypeInfo2_GetNames(This,memid,rgBstrNames,cMaxNames,pcNames) \
+ (This)->lpVtbl -> GetNames(This,memid,rgBstrNames,cMaxNames,pcNames)
+
+#define ITypeInfo2_GetRefTypeOfImplType(This,index,pRefType) \
+ (This)->lpVtbl -> GetRefTypeOfImplType(This,index,pRefType)
+
+#define ITypeInfo2_GetImplTypeFlags(This,index,pImplTypeFlags) \
+ (This)->lpVtbl -> GetImplTypeFlags(This,index,pImplTypeFlags)
+
+#define ITypeInfo2_GetIDsOfNames(This,rgszNames,cNames,pMemId) \
+ (This)->lpVtbl -> GetIDsOfNames(This,rgszNames,cNames,pMemId)
+
+#define ITypeInfo2_Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ (This)->lpVtbl -> Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+#define ITypeInfo2_GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) \
+ (This)->lpVtbl -> GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+
+#define ITypeInfo2_GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal) \
+ (This)->lpVtbl -> GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal)
+
+#define ITypeInfo2_GetRefTypeInfo(This,hRefType,ppTInfo) \
+ (This)->lpVtbl -> GetRefTypeInfo(This,hRefType,ppTInfo)
+
+#define ITypeInfo2_AddressOfMember(This,memid,invKind,ppv) \
+ (This)->lpVtbl -> AddressOfMember(This,memid,invKind,ppv)
+
+#define ITypeInfo2_CreateInstance(This,pUnkOuter,riid,ppvObj) \
+ (This)->lpVtbl -> CreateInstance(This,pUnkOuter,riid,ppvObj)
+
+#define ITypeInfo2_GetMops(This,memid,pBstrMops) \
+ (This)->lpVtbl -> GetMops(This,memid,pBstrMops)
+
+#define ITypeInfo2_GetContainingTypeLib(This,ppTLib,pIndex) \
+ (This)->lpVtbl -> GetContainingTypeLib(This,ppTLib,pIndex)
+
+#define ITypeInfo2_ReleaseTypeAttr(This,pTypeAttr) \
+ (This)->lpVtbl -> ReleaseTypeAttr(This,pTypeAttr)
+
+#define ITypeInfo2_ReleaseFuncDesc(This,pFuncDesc) \
+ (This)->lpVtbl -> ReleaseFuncDesc(This,pFuncDesc)
+
+#define ITypeInfo2_ReleaseVarDesc(This,pVarDesc) \
+ (This)->lpVtbl -> ReleaseVarDesc(This,pVarDesc)
+
+
+#define ITypeInfo2_GetTypeKind(This,pTypeKind) \
+ (This)->lpVtbl -> GetTypeKind(This,pTypeKind)
+
+#define ITypeInfo2_GetTypeFlags(This,pTypeFlags) \
+ (This)->lpVtbl -> GetTypeFlags(This,pTypeFlags)
+
+#define ITypeInfo2_GetFuncIndexOfMemId(This,memid,invKind,pFuncIndex) \
+ (This)->lpVtbl -> GetFuncIndexOfMemId(This,memid,invKind,pFuncIndex)
+
+#define ITypeInfo2_GetVarIndexOfMemId(This,memid,pVarIndex) \
+ (This)->lpVtbl -> GetVarIndexOfMemId(This,memid,pVarIndex)
+
+#define ITypeInfo2_GetCustData(This,guid,pVarVal) \
+ (This)->lpVtbl -> GetCustData(This,guid,pVarVal)
+
+#define ITypeInfo2_GetFuncCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> GetFuncCustData(This,index,guid,pVarVal)
+
+#define ITypeInfo2_GetParamCustData(This,indexFunc,indexParam,guid,pVarVal) \
+ (This)->lpVtbl -> GetParamCustData(This,indexFunc,indexParam,guid,pVarVal)
+
+#define ITypeInfo2_GetVarCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> GetVarCustData(This,index,guid,pVarVal)
+
+#define ITypeInfo2_GetImplTypeCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> GetImplTypeCustData(This,index,guid,pVarVal)
+
+#define ITypeInfo2_GetDocumentation2(This,memid,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll) \
+ (This)->lpVtbl -> GetDocumentation2(This,memid,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll)
+
+#define ITypeInfo2_GetAllCustData(This,pCustData) \
+ (This)->lpVtbl -> GetAllCustData(This,pCustData)
+
+#define ITypeInfo2_GetAllFuncCustData(This,index,pCustData) \
+ (This)->lpVtbl -> GetAllFuncCustData(This,index,pCustData)
+
+#define ITypeInfo2_GetAllParamCustData(This,indexFunc,indexParam,pCustData) \
+ (This)->lpVtbl -> GetAllParamCustData(This,indexFunc,indexParam,pCustData)
+
+#define ITypeInfo2_GetAllVarCustData(This,index,pCustData) \
+ (This)->lpVtbl -> GetAllVarCustData(This,index,pCustData)
+
+#define ITypeInfo2_GetAllImplTypeCustData(This,index,pCustData) \
+ (This)->lpVtbl -> GetAllImplTypeCustData(This,index,pCustData)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetTypeKind_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ TYPEKIND __RPC_FAR *pTypeKind);
+
+
+void __RPC_STUB ITypeInfo2_GetTypeKind_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetTypeFlags_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pTypeFlags);
+
+
+void __RPC_STUB ITypeInfo2_GetTypeFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetFuncIndexOfMemId_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ UINT __RPC_FAR *pFuncIndex);
+
+
+void __RPC_STUB ITypeInfo2_GetFuncIndexOfMemId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetVarIndexOfMemId_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ UINT __RPC_FAR *pVarIndex);
+
+
+void __RPC_STUB ITypeInfo2_GetVarIndexOfMemId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeInfo2_GetCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetFuncCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeInfo2_GetFuncCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetParamCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeInfo2_GetParamCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetVarCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeInfo2_GetVarCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetImplTypeCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeInfo2_GetImplTypeCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo2_RemoteGetDocumentation2_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+
+void __RPC_STUB ITypeInfo2_RemoteGetDocumentation2_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeInfo2_GetAllCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllFuncCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeInfo2_GetAllFuncCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllParamCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeInfo2_GetAllParamCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllVarCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeInfo2_GetAllVarCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllImplTypeCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeInfo2_GetAllImplTypeCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeInfo2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeLib_INTERFACE_DEFINED__
+#define __ITypeLib_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeLib
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [v1_enum] */
+enum tagSYSKIND
+ { SYS_WIN16 = 0,
+ SYS_WIN32 = SYS_WIN16 + 1,
+ SYS_MAC = SYS_WIN32 + 1
+ } SYSKIND;
+
+typedef /* [v1_enum] */
+enum tagLIBFLAGS
+ { LIBFLAG_FRESTRICTED = 0x1,
+ LIBFLAG_FCONTROL = 0x2,
+ LIBFLAG_FHIDDEN = 0x4,
+ LIBFLAG_FHASDISKIMAGE = 0x8
+ } LIBFLAGS;
+
+typedef /* [unique] */ ITypeLib __RPC_FAR *LPTYPELIB;
+
+typedef struct tagTLIBATTR
+ {
+ GUID guid;
+ LCID lcid;
+ SYSKIND syskind;
+ WORD wMajorVerNum;
+ WORD wMinorVerNum;
+ WORD wLibFlags;
+ } TLIBATTR;
+
+typedef struct tagTLIBATTR __RPC_FAR *LPTLIBATTR;
+
+typedef TLIBATTR __RPC_FAR *__RPC_FAR *PPTLIBATTR;
+
+
+EXTERN_C const IID IID_ITypeLib;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeLib : public IUnknown
+ {
+ public:
+ virtual /* [local] */ UINT STDMETHODCALLTYPE GetTypeInfoCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
+ /* [in] */ UINT index,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfoType(
+ /* [in] */ UINT index,
+ /* [out] */ TYPEKIND __RPC_FAR *pTKind) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfoOfGuid(
+ /* [in] */ REFGUID guid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTinfo) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetLibAttr(
+ /* [out] */ TLIBATTR __RPC_FAR *__RPC_FAR *ppTLibAttr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeComp(
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDocumentation(
+ /* [in] */ INT index,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE IsName(
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE FindName(
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE ReleaseTLibAttr(
+ /* [in] */ TLIBATTR __RPC_FAR *pTLibAttr) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeLibVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeLib __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeLib __RPC_FAR * This);
+
+ /* [local] */ UINT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )(
+ ITypeLib __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoType )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ TYPEKIND __RPC_FAR *pTKind);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoOfGuid )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTinfo);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLibAttr )(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ TLIBATTR __RPC_FAR *__RPC_FAR *ppTLibAttr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeComp )(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsName )(
+ ITypeLib __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FindName )(
+ ITypeLib __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseTLibAttr )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ TLIBATTR __RPC_FAR *pTLibAttr);
+
+ END_INTERFACE
+ } ITypeLibVtbl;
+
+ interface ITypeLib
+ {
+ CONST_VTBL struct ITypeLibVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeLib_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeLib_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeLib_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeLib_GetTypeInfoCount(This) \
+ (This)->lpVtbl -> GetTypeInfoCount(This)
+
+#define ITypeLib_GetTypeInfo(This,index,ppTInfo) \
+ (This)->lpVtbl -> GetTypeInfo(This,index,ppTInfo)
+
+#define ITypeLib_GetTypeInfoType(This,index,pTKind) \
+ (This)->lpVtbl -> GetTypeInfoType(This,index,pTKind)
+
+#define ITypeLib_GetTypeInfoOfGuid(This,guid,ppTinfo) \
+ (This)->lpVtbl -> GetTypeInfoOfGuid(This,guid,ppTinfo)
+
+#define ITypeLib_GetLibAttr(This,ppTLibAttr) \
+ (This)->lpVtbl -> GetLibAttr(This,ppTLibAttr)
+
+#define ITypeLib_GetTypeComp(This,ppTComp) \
+ (This)->lpVtbl -> GetTypeComp(This,ppTComp)
+
+#define ITypeLib_GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) \
+ (This)->lpVtbl -> GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+
+#define ITypeLib_IsName(This,szNameBuf,lHashVal,pfName) \
+ (This)->lpVtbl -> IsName(This,szNameBuf,lHashVal,pfName)
+
+#define ITypeLib_FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound) \
+ (This)->lpVtbl -> FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound)
+
+#define ITypeLib_ReleaseTLibAttr(This,pTLibAttr) \
+ (This)->lpVtbl -> ReleaseTLibAttr(This,pTLibAttr)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_RemoteGetTypeInfoCount_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ UINT __RPC_FAR *pcTInfo);
+
+
+void __RPC_STUB ITypeLib_RemoteGetTypeInfoCount_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfo_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+
+void __RPC_STUB ITypeLib_GetTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfoType_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ TYPEKIND __RPC_FAR *pTKind);
+
+
+void __RPC_STUB ITypeLib_GetTypeInfoType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfoOfGuid_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTinfo);
+
+
+void __RPC_STUB ITypeLib_GetTypeInfoOfGuid_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_RemoteGetLibAttr_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ PPTLIBATTR ppTLibAttr,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+
+void __RPC_STUB ITypeLib_RemoteGetLibAttr_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeComp_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+
+void __RPC_STUB ITypeLib_GetTypeComp_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_RemoteGetDocumentation_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+
+void __RPC_STUB ITypeLib_RemoteGetDocumentation_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_RemoteIsName_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName,
+ /* [out] */ BSTR __RPC_FAR *pBstrLibName);
+
+
+void __RPC_STUB ITypeLib_RemoteIsName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_RemoteFindName_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound,
+ /* [out] */ BSTR __RPC_FAR *pBstrLibName);
+
+
+void __RPC_STUB ITypeLib_RemoteFindName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_LocalReleaseTLibAttr_Proxy(
+ ITypeLib __RPC_FAR * This);
+
+
+void __RPC_STUB ITypeLib_LocalReleaseTLibAttr_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeLib_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeLib2_INTERFACE_DEFINED__
+#define __ITypeLib2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeLib2
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ITypeLib2 __RPC_FAR *LPTYPELIB2;
+
+
+EXTERN_C const IID IID_ITypeLib2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeLib2 : public ITypeLib
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetCustData(
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetLibStatistics(
+ /* [out] */ ULONG __RPC_FAR *pcUniqueNames,
+ /* [out] */ ULONG __RPC_FAR *pcchUniqueNames) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDocumentation2(
+ /* [in] */ INT index,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllCustData(
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeLib2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeLib2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeLib2 __RPC_FAR * This);
+
+ /* [local] */ UINT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )(
+ ITypeLib2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoType )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ TYPEKIND __RPC_FAR *pTKind);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoOfGuid )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTinfo);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLibAttr )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ TLIBATTR __RPC_FAR *__RPC_FAR *ppTLibAttr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeComp )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsName )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FindName )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseTLibAttr )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ TLIBATTR __RPC_FAR *pTLibAttr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCustData )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLibStatistics )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcUniqueNames,
+ /* [out] */ ULONG __RPC_FAR *pcchUniqueNames);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation2 )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllCustData )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ END_INTERFACE
+ } ITypeLib2Vtbl;
+
+ interface ITypeLib2
+ {
+ CONST_VTBL struct ITypeLib2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeLib2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeLib2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeLib2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeLib2_GetTypeInfoCount(This) \
+ (This)->lpVtbl -> GetTypeInfoCount(This)
+
+#define ITypeLib2_GetTypeInfo(This,index,ppTInfo) \
+ (This)->lpVtbl -> GetTypeInfo(This,index,ppTInfo)
+
+#define ITypeLib2_GetTypeInfoType(This,index,pTKind) \
+ (This)->lpVtbl -> GetTypeInfoType(This,index,pTKind)
+
+#define ITypeLib2_GetTypeInfoOfGuid(This,guid,ppTinfo) \
+ (This)->lpVtbl -> GetTypeInfoOfGuid(This,guid,ppTinfo)
+
+#define ITypeLib2_GetLibAttr(This,ppTLibAttr) \
+ (This)->lpVtbl -> GetLibAttr(This,ppTLibAttr)
+
+#define ITypeLib2_GetTypeComp(This,ppTComp) \
+ (This)->lpVtbl -> GetTypeComp(This,ppTComp)
+
+#define ITypeLib2_GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) \
+ (This)->lpVtbl -> GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+
+#define ITypeLib2_IsName(This,szNameBuf,lHashVal,pfName) \
+ (This)->lpVtbl -> IsName(This,szNameBuf,lHashVal,pfName)
+
+#define ITypeLib2_FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound) \
+ (This)->lpVtbl -> FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound)
+
+#define ITypeLib2_ReleaseTLibAttr(This,pTLibAttr) \
+ (This)->lpVtbl -> ReleaseTLibAttr(This,pTLibAttr)
+
+
+#define ITypeLib2_GetCustData(This,guid,pVarVal) \
+ (This)->lpVtbl -> GetCustData(This,guid,pVarVal)
+
+#define ITypeLib2_GetLibStatistics(This,pcUniqueNames,pcchUniqueNames) \
+ (This)->lpVtbl -> GetLibStatistics(This,pcUniqueNames,pcchUniqueNames)
+
+#define ITypeLib2_GetDocumentation2(This,index,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll) \
+ (This)->lpVtbl -> GetDocumentation2(This,index,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll)
+
+#define ITypeLib2_GetAllCustData(This,pCustData) \
+ (This)->lpVtbl -> GetAllCustData(This,pCustData)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib2_GetCustData_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeLib2_GetCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib2_RemoteGetLibStatistics_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcUniqueNames,
+ /* [out] */ ULONG __RPC_FAR *pcchUniqueNames);
+
+
+void __RPC_STUB ITypeLib2_RemoteGetLibStatistics_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib2_RemoteGetDocumentation2_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+
+void __RPC_STUB ITypeLib2_RemoteGetDocumentation2_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib2_GetAllCustData_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeLib2_GetAllCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeLib2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeChangeEvents_INTERFACE_DEFINED__
+#define __ITypeChangeEvents_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeChangeEvents
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ITypeChangeEvents __RPC_FAR *LPTYPECHANGEEVENTS;
+
+typedef
+enum tagCHANGEKIND
+ { CHANGEKIND_ADDMEMBER = 0,
+ CHANGEKIND_DELETEMEMBER = CHANGEKIND_ADDMEMBER + 1,
+ CHANGEKIND_SETNAMES = CHANGEKIND_DELETEMEMBER + 1,
+ CHANGEKIND_SETDOCUMENTATION = CHANGEKIND_SETNAMES + 1,
+ CHANGEKIND_GENERAL = CHANGEKIND_SETDOCUMENTATION + 1,
+ CHANGEKIND_INVALIDATE = CHANGEKIND_GENERAL + 1,
+ CHANGEKIND_CHANGEFAILED = CHANGEKIND_INVALIDATE + 1,
+ CHANGEKIND_MAX = CHANGEKIND_CHANGEFAILED + 1
+ } CHANGEKIND;
+
+
+EXTERN_C const IID IID_ITypeChangeEvents;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeChangeEvents : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RequestTypeChange(
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoBefore,
+ /* [in] */ LPOLESTR pStrName,
+ /* [out] */ INT __RPC_FAR *pfCancel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AfterTypeChange(
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoAfter,
+ /* [in] */ LPOLESTR pStrName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeChangeEventsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeChangeEvents __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeChangeEvents __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeChangeEvents __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestTypeChange )(
+ ITypeChangeEvents __RPC_FAR * This,
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoBefore,
+ /* [in] */ LPOLESTR pStrName,
+ /* [out] */ INT __RPC_FAR *pfCancel);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AfterTypeChange )(
+ ITypeChangeEvents __RPC_FAR * This,
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoAfter,
+ /* [in] */ LPOLESTR pStrName);
+
+ END_INTERFACE
+ } ITypeChangeEventsVtbl;
+
+ interface ITypeChangeEvents
+ {
+ CONST_VTBL struct ITypeChangeEventsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeChangeEvents_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeChangeEvents_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeChangeEvents_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeChangeEvents_RequestTypeChange(This,changeKind,pTInfoBefore,pStrName,pfCancel) \
+ (This)->lpVtbl -> RequestTypeChange(This,changeKind,pTInfoBefore,pStrName,pfCancel)
+
+#define ITypeChangeEvents_AfterTypeChange(This,changeKind,pTInfoAfter,pStrName) \
+ (This)->lpVtbl -> AfterTypeChange(This,changeKind,pTInfoAfter,pStrName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITypeChangeEvents_RequestTypeChange_Proxy(
+ ITypeChangeEvents __RPC_FAR * This,
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoBefore,
+ /* [in] */ LPOLESTR pStrName,
+ /* [out] */ INT __RPC_FAR *pfCancel);
+
+
+void __RPC_STUB ITypeChangeEvents_RequestTypeChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeChangeEvents_AfterTypeChange_Proxy(
+ ITypeChangeEvents __RPC_FAR * This,
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoAfter,
+ /* [in] */ LPOLESTR pStrName);
+
+
+void __RPC_STUB ITypeChangeEvents_AfterTypeChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeChangeEvents_INTERFACE_DEFINED__ */
+
+
+#ifndef __IErrorInfo_INTERFACE_DEFINED__
+#define __IErrorInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IErrorInfo
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ IErrorInfo __RPC_FAR *LPERRORINFO;
+
+
+EXTERN_C const IID IID_IErrorInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IErrorInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetGUID(
+ /* [out] */ GUID __RPC_FAR *pGUID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSource(
+ /* [out] */ BSTR __RPC_FAR *pBstrSource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDescription(
+ /* [out] */ BSTR __RPC_FAR *pBstrDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetHelpFile(
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetHelpContext(
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IErrorInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IErrorInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IErrorInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IErrorInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetGUID )(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ GUID __RPC_FAR *pGUID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSource )(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrSource);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDescription )(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrDescription);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetHelpFile )(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetHelpContext )(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext);
+
+ END_INTERFACE
+ } IErrorInfoVtbl;
+
+ interface IErrorInfo
+ {
+ CONST_VTBL struct IErrorInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IErrorInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IErrorInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IErrorInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IErrorInfo_GetGUID(This,pGUID) \
+ (This)->lpVtbl -> GetGUID(This,pGUID)
+
+#define IErrorInfo_GetSource(This,pBstrSource) \
+ (This)->lpVtbl -> GetSource(This,pBstrSource)
+
+#define IErrorInfo_GetDescription(This,pBstrDescription) \
+ (This)->lpVtbl -> GetDescription(This,pBstrDescription)
+
+#define IErrorInfo_GetHelpFile(This,pBstrHelpFile) \
+ (This)->lpVtbl -> GetHelpFile(This,pBstrHelpFile)
+
+#define IErrorInfo_GetHelpContext(This,pdwHelpContext) \
+ (This)->lpVtbl -> GetHelpContext(This,pdwHelpContext)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetGUID_Proxy(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ GUID __RPC_FAR *pGUID);
+
+
+void __RPC_STUB IErrorInfo_GetGUID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetSource_Proxy(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrSource);
+
+
+void __RPC_STUB IErrorInfo_GetSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetDescription_Proxy(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrDescription);
+
+
+void __RPC_STUB IErrorInfo_GetDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetHelpFile_Proxy(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+
+void __RPC_STUB IErrorInfo_GetHelpFile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetHelpContext_Proxy(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext);
+
+
+void __RPC_STUB IErrorInfo_GetHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IErrorInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICreateErrorInfo_INTERFACE_DEFINED__
+#define __ICreateErrorInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICreateErrorInfo
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ICreateErrorInfo __RPC_FAR *LPCREATEERRORINFO;
+
+
+EXTERN_C const IID IID_ICreateErrorInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICreateErrorInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetGUID(
+ /* [in] */ REFGUID rguid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSource(
+ /* [in] */ LPOLESTR szSource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDescription(
+ /* [in] */ LPOLESTR szDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpFile(
+ /* [in] */ LPOLESTR szHelpFile) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
+ /* [in] */ DWORD dwHelpContext) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICreateErrorInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICreateErrorInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICreateErrorInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetGUID )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ REFGUID rguid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSource )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szSource);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDescription )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szDescription);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpFile )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szHelpFile);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpContext )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+ END_INTERFACE
+ } ICreateErrorInfoVtbl;
+
+ interface ICreateErrorInfo
+ {
+ CONST_VTBL struct ICreateErrorInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICreateErrorInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICreateErrorInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICreateErrorInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICreateErrorInfo_SetGUID(This,rguid) \
+ (This)->lpVtbl -> SetGUID(This,rguid)
+
+#define ICreateErrorInfo_SetSource(This,szSource) \
+ (This)->lpVtbl -> SetSource(This,szSource)
+
+#define ICreateErrorInfo_SetDescription(This,szDescription) \
+ (This)->lpVtbl -> SetDescription(This,szDescription)
+
+#define ICreateErrorInfo_SetHelpFile(This,szHelpFile) \
+ (This)->lpVtbl -> SetHelpFile(This,szHelpFile)
+
+#define ICreateErrorInfo_SetHelpContext(This,dwHelpContext) \
+ (This)->lpVtbl -> SetHelpContext(This,dwHelpContext)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetGUID_Proxy(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ REFGUID rguid);
+
+
+void __RPC_STUB ICreateErrorInfo_SetGUID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetSource_Proxy(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szSource);
+
+
+void __RPC_STUB ICreateErrorInfo_SetSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetDescription_Proxy(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szDescription);
+
+
+void __RPC_STUB ICreateErrorInfo_SetDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetHelpFile_Proxy(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szHelpFile);
+
+
+void __RPC_STUB ICreateErrorInfo_SetHelpFile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetHelpContext_Proxy(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+
+void __RPC_STUB ICreateErrorInfo_SetHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICreateErrorInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __ISupportErrorInfo_INTERFACE_DEFINED__
+#define __ISupportErrorInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISupportErrorInfo
+ * at Fri Nov 15 09:35:07 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ISupportErrorInfo __RPC_FAR *LPSUPPORTERRORINFO;
+
+
+EXTERN_C const IID IID_ISupportErrorInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISupportErrorInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo(
+ /* [in] */ REFIID riid) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISupportErrorInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISupportErrorInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISupportErrorInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISupportErrorInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InterfaceSupportsErrorInfo )(
+ ISupportErrorInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid);
+
+ END_INTERFACE
+ } ISupportErrorInfoVtbl;
+
+ interface ISupportErrorInfo
+ {
+ CONST_VTBL struct ISupportErrorInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISupportErrorInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISupportErrorInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISupportErrorInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISupportErrorInfo_InterfaceSupportsErrorInfo(This,riid) \
+ (This)->lpVtbl -> InterfaceSupportsErrorInfo(This,riid)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ISupportErrorInfo_InterfaceSupportsErrorInfo_Proxy(
+ ISupportErrorInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid);
+
+
+void __RPC_STUB ISupportErrorInfo_InterfaceSupportsErrorInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISupportErrorInfo_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * );
+
+unsigned long __RPC_USER CLEANLOCALSTORAGE_UserSize( unsigned long __RPC_FAR *, unsigned long , CLEANLOCALSTORAGE __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLEANLOCALSTORAGE_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLEANLOCALSTORAGE __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLEANLOCALSTORAGE_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLEANLOCALSTORAGE __RPC_FAR * );
+void __RPC_USER CLEANLOCALSTORAGE_UserFree( unsigned long __RPC_FAR *, CLEANLOCALSTORAGE __RPC_FAR * );
+
+unsigned long __RPC_USER VARIANT_UserSize( unsigned long __RPC_FAR *, unsigned long , VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+void __RPC_USER VARIANT_UserFree( unsigned long __RPC_FAR *, VARIANT __RPC_FAR * );
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IDispatch_Invoke_Proxy(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDispatch_Invoke_Stub(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [size_is][out] */ VARIANTARG __RPC_FAR *rgVtRef,
+ /* [in] */ UINT cVtRef,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *pArgErr);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumVARIANT_Next_Proxy(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ VARIANT __RPC_FAR *rgVar,
+ /* [out] */ ULONG __RPC_FAR *pCeltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumVARIANT_Next_Stub(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ VARIANT __RPC_FAR *rgVar,
+ /* [out] */ ULONG __RPC_FAR *pCeltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeComp_Bind_Proxy(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [in] */ WORD wFlags,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ DESCKIND __RPC_FAR *pDescKind,
+ /* [out] */ BINDPTR __RPC_FAR *pBindPtr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeComp_Bind_Stub(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [in] */ WORD wFlags,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ DESCKIND __RPC_FAR *pDescKind,
+ /* [out] */ PPFUNCDESC ppFuncDesc,
+ /* [out] */ PPVARDESC ppVarDesc,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTypeComp,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeComp_BindType_Proxy(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeComp_BindType_Stub(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetTypeAttr_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ TYPEATTR __RPC_FAR *__RPC_FAR *ppTypeAttr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetTypeAttr_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ PPTYPEATTR ppTypeAttr,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetFuncDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ FUNCDESC __RPC_FAR *__RPC_FAR *ppFuncDesc);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetFuncDesc_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ PPFUNCDESC ppFuncDesc,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetVarDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ VARDESC __RPC_FAR *__RPC_FAR *ppVarDesc);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetVarDesc_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ PPVARDESC ppVarDesc,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_Invoke_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ PVOID pvInstance,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_Invoke_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pIUnk,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [size_is][out] */ VARIANTARG __RPC_FAR *rgVtRef,
+ /* [in] */ UINT cVtRef,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *pArgErr);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetDocumentation_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetDocumentation_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetDllEntry_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetDllEntry_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_AddressOfMember_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ PVOID __RPC_FAR *ppv);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_AddressOfMember_Stub(
+ ITypeInfo __RPC_FAR * This);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_CreateInstance_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_CreateInstance_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+/* [local] */ void STDMETHODCALLTYPE ITypeInfo_ReleaseTypeAttr_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ TYPEATTR __RPC_FAR *pTypeAttr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_ReleaseTypeAttr_Stub(
+ ITypeInfo __RPC_FAR * This);
+
+/* [local] */ void STDMETHODCALLTYPE ITypeInfo_ReleaseFuncDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_ReleaseFuncDesc_Stub(
+ ITypeInfo __RPC_FAR * This);
+
+/* [local] */ void STDMETHODCALLTYPE ITypeInfo_ReleaseVarDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_ReleaseVarDesc_Stub(
+ ITypeInfo __RPC_FAR * This);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo2_GetDocumentation2_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo2_GetDocumentation2_Stub(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+/* [local] */ UINT STDMETHODCALLTYPE ITypeLib_GetTypeInfoCount_Proxy(
+ ITypeLib __RPC_FAR * This);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfoCount_Stub(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ UINT __RPC_FAR *pcTInfo);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib_GetLibAttr_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ TLIBATTR __RPC_FAR *__RPC_FAR *ppTLibAttr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_GetLibAttr_Stub(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ PPTLIBATTR ppTLibAttr,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib_GetDocumentation_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_GetDocumentation_Stub(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib_IsName_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_IsName_Stub(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName,
+ /* [out] */ BSTR __RPC_FAR *pBstrLibName);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib_FindName_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_FindName_Stub(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound,
+ /* [out] */ BSTR __RPC_FAR *pBstrLibName);
+
+/* [local] */ void STDMETHODCALLTYPE ITypeLib_ReleaseTLibAttr_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ TLIBATTR __RPC_FAR *pTLibAttr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_ReleaseTLibAttr_Stub(
+ ITypeLib __RPC_FAR * This);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib2_GetLibStatistics_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcUniqueNames,
+ /* [out] */ ULONG __RPC_FAR *pcchUniqueNames);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib2_GetLibStatistics_Stub(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcUniqueNames,
+ /* [out] */ ULONG __RPC_FAR *pcchUniqueNames);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib2_GetDocumentation2_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib2_GetDocumentation2_Stub(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/chicago/oaidl.idl b/public/sdk/inc/chicago/oaidl.idl
new file mode 100644
index 000000000..7734051ed
--- /dev/null
+++ b/public/sdk/inc/chicago/oaidl.idl
@@ -0,0 +1,1751 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: oaidl.idl
+//
+//----------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+#endif
+
+interface ICreateTypeInfo;
+interface ICreateTypeInfo2;
+interface ICreateTypeLib;
+interface ICreateTypeLib2;
+interface IDispatch;
+interface IEnumVARIANT;
+interface ITypeComp;
+interface ITypeInfo;
+interface ITypeInfo2;
+interface ITypeLib;
+interface ITypeLib2;
+interface ITypeChangeEvents;
+interface IErrorInfo;
+interface ICreateErrorInfo;
+interface ISupportErrorInfo;
+
+
+[
+ version(1.0), pointer_default(unique)
+]
+
+interface IOleAutomationTypes
+{
+
+typedef CY CURRENCY;
+
+// #########################################################################
+// SAFEARRAY
+// #########################################################################
+
+typedef struct tagSAFEARRAYBOUND {
+ ULONG cElements;
+ LONG lLbound;
+} SAFEARRAYBOUND, * LPSAFEARRAYBOUND;
+
+cpp_quote("#if defined(_OLEAUT32_)")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+// Forward references.
+typedef [unique] struct _wireVARIANT * wireVARIANT;
+
+typedef struct _wireSAFEARR_BSTR {
+ ULONG Size;
+ [size_is(Size), ref] wireBSTR * aBstr;
+} SAFEARR_BSTR;
+
+typedef struct _wireSAFEARR_UNKNOWN {
+ ULONG Size;
+ [size_is(Size), ref] IUnknown ** apUnknown;
+} SAFEARR_UNKNOWN;
+
+typedef struct _wireSAFEARR_DISPATCH {
+ ULONG Size;
+ [size_is(Size), ref] IDispatch ** apDispatch;
+} SAFEARR_DISPATCH;
+
+typedef struct _wireSAFEARR_VARIANT {
+ ULONG Size;
+ [size_is(Size), ref] wireVARIANT * aVariant;
+} SAFEARR_VARIANT;
+
+typedef [v1_enum] enum tagSF_TYPE {
+ SF_ERROR = VT_ERROR,
+ SF_I1 = VT_I1,
+ SF_I2 = VT_I2,
+ SF_I4 = VT_I4,
+ SF_I8 = VT_I8,
+ SF_BSTR = VT_BSTR,
+ SF_UNKNOWN = VT_UNKNOWN,
+ SF_DISPATCH = VT_DISPATCH,
+ SF_VARIANT = VT_VARIANT
+} SF_TYPE;
+
+typedef union _wireSAFEARRAY_UNION switch(ULONG sfType) u {
+ case SF_BSTR: SAFEARR_BSTR BstrStr;
+ case SF_UNKNOWN: SAFEARR_UNKNOWN UnknownStr;
+ case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr;
+ case SF_VARIANT: SAFEARR_VARIANT VariantStr;
+ case SF_I1: BYTE_SIZEDARR ByteStr;
+ case SF_I2: WORD_SIZEDARR WordStr;
+ case SF_I4: DWORD_SIZEDARR LongStr;
+ case SF_I8: HYPER_SIZEDARR HyperStr;
+ default: ; // error
+} SAFEARRAYUNION;
+
+typedef [unique] struct _wireSAFEARRAY {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ SAFEARRAYUNION uArrayStructs;
+ [size_is(cDims)] SAFEARRAYBOUND rgsabound[];
+} * wireSAFEARRAY;
+
+typedef [unique] wireSAFEARRAY * wirePSAFEARRAY;
+
+cpp_quote("#endif /* _OLEAUT32_ */")
+
+typedef struct tagSAFEARRAY {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ PVOID pvData;
+ SAFEARRAYBOUND rgsabound[];
+} SAFEARRAY;
+
+typedef [wire_marshal(wirePSAFEARRAY)] SAFEARRAY * LPSAFEARRAY;
+
+const USHORT FADF_AUTO = 0x0001; /* array is allocated on the stack */
+const USHORT FADF_STATIC = 0x0002; /* array is staticly allocated */
+const USHORT FADF_EMBEDDED = 0x0004; /* array is embedded in a structure */
+const USHORT FADF_FIXEDSIZE = 0x0010; /* may not be resized or reallocated */
+const USHORT FADF_BSTR = 0x0100; /* an array of BSTRs */
+const USHORT FADF_UNKNOWN = 0x0200; /* an array of IUnknown* */
+const USHORT FADF_DISPATCH = 0x0400; /* an array of IDispatch* */
+const USHORT FADF_VARIANT = 0x0800; /* an array of VARIANTs */
+const USHORT FADF_RESERVED = 0xF0E8; /* reserved bits */
+
+
+// #########################################################################
+// VARIANT
+// #########################################################################
+
+cpp_quote("/* VARIANT STRUCTURE")
+cpp_quote(" *")
+cpp_quote(" * VARTYPE vt;")
+cpp_quote(" * WORD wReserved1;")
+cpp_quote(" * WORD wReserved2;")
+cpp_quote(" * WORD wReserved3;")
+cpp_quote(" * union {")
+cpp_quote(" * LONG VT_I4")
+cpp_quote(" * BYTE VT_UI1")
+cpp_quote(" * SHORT VT_I2")
+cpp_quote(" * FLOAT VT_R4")
+cpp_quote(" * DOUBLE VT_R8")
+cpp_quote(" * VARIANT_BOOL VT_BOOL")
+cpp_quote(" * SCODE VT_ERROR")
+cpp_quote(" * CY VT_CY")
+cpp_quote(" * DATE VT_DATE")
+cpp_quote(" * BSTR VT_BSTR")
+cpp_quote(" * IUnknown * VT_UNKNOWN")
+cpp_quote(" * IDispatch * VT_DISPATCH")
+cpp_quote(" * SAFEARRAY * VT_ARRAY")
+cpp_quote(" * BYTE * VT_BYREF|VT_UI1")
+cpp_quote(" * SHORT * VT_BYREF|VT_I2")
+cpp_quote(" * LONG * VT_BYREF|VT_I4")
+cpp_quote(" * FLOAT * VT_BYREF|VT_R4")
+cpp_quote(" * DOUBLE * VT_BYREF|VT_R8")
+cpp_quote(" * VARIANT_BOOL * VT_BYREF|VT_BOOL")
+cpp_quote(" * SCODE * VT_BYREF|VT_ERROR")
+cpp_quote(" * CY * VT_BYREF|VT_CY")
+cpp_quote(" * DATE * VT_BYREF|VT_DATE")
+cpp_quote(" * BSTR * VT_BYREF|VT_BSTR")
+cpp_quote(" * IUnknown ** VT_BYREF|VT_UNKNOWN")
+cpp_quote(" * IDispatch ** VT_BYREF|VT_DISPATCH")
+cpp_quote(" * SAFEARRAY ** VT_BYREF|VT_ARRAY")
+cpp_quote(" * VARIANT * VT_BYREF|VT_VARIANT")
+cpp_quote(" * PVOID VT_BYREF (Generic ByRef)")
+cpp_quote(" * CHAR VT_I1")
+cpp_quote(" * USHORT VT_UI2")
+cpp_quote(" * ULONG VT_UI4")
+cpp_quote(" * INT VT_INT")
+cpp_quote(" * UINT VT_UINT")
+cpp_quote(" * DECIMAL * VT_BYREF|VT_DECIMAL")
+cpp_quote(" * CHAR * VT_BYREF|VT_I1")
+cpp_quote(" * USHORT * VT_BYREF|VT_UI2")
+cpp_quote(" * ULONG * VT_BYREF|VT_UI4")
+cpp_quote(" * INT * VT_BYREF|VT_INT")
+cpp_quote(" * UINT * VT_BYREF|VT_UINT")
+cpp_quote(" * }")
+cpp_quote(" */")
+
+cpp_quote("#if __STDC__ || defined(NONAMELESSUNION)")
+cpp_quote("#define __VARIANT_NAME_1 n1")
+cpp_quote("#define __VARIANT_NAME_2 n2")
+cpp_quote("#define __VARIANT_NAME_3 n3")
+cpp_quote("#else")
+cpp_quote("#define __tagVARIANT")
+cpp_quote("#define __VARIANT_NAME_1")
+cpp_quote("#define __VARIANT_NAME_2")
+cpp_quote("#define __VARIANT_NAME_3")
+cpp_quote("#endif")
+
+typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
+
+struct tagVARIANT {
+ union {
+ struct __tagVARIANT {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ union {
+ LONG lVal; /* VT_I4 */
+ BYTE bVal; /* VT_UI1 */
+ SHORT iVal; /* VT_I2 */
+ FLOAT fltVal; /* VT_R4 */
+ DOUBLE dblVal; /* VT_R8 */
+ VARIANT_BOOL boolVal; /* VT_BOOL */
+ _VARIANT_BOOL bool; /* (obsolete) */
+ SCODE scode; /* VT_ERROR */
+ CY cyVal; /* VT_CY */
+ DATE date; /* VT_DATE */
+ BSTR bstrVal; /* VT_BSTR */
+ IUnknown * punkVal; /* VT_UNKNOWN */
+ IDispatch * pdispVal; /* VT_DISPATCH */
+ SAFEARRAY * parray; /* VT_ARRAY */
+ BYTE * pbVal; /* VT_BYREF|VT_UI1 */
+ SHORT * piVal; /* VT_BYREF|VT_I2 */
+ LONG * plVal; /* VT_BYREF|VT_I4 */
+ FLOAT * pfltVal; /* VT_BYREF|VT_R4 */
+ DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */
+ VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */
+ _VARIANT_BOOL *pbool; /* (obsolete) */
+ SCODE * pscode; /* VT_BYREF|VT_ERROR */
+ CY * pcyVal; /* VT_BYREF|VT_CY */
+ DATE * pdate; /* VT_BYREF|VT_DATE */
+ BSTR * pbstrVal; /* VT_BYREF|VT_BSTR */
+ IUnknown ** ppunkVal; /* VT_BYREF|VT_UNKNOWN */
+ IDispatch ** ppdispVal; /* VT_BYREF|VT_DISPATCH */
+ SAFEARRAY ** pparray; /* VT_BYREF|VT_ARRAY */
+ VARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */
+ PVOID byref; /* Generic ByRef */
+ CHAR cVal; /* VT_I1 */
+ USHORT uiVal; /* VT_UI2 */
+ ULONG ulVal; /* VT_UI4 */
+ INT intVal; /* VT_INT */
+ UINT uintVal; /* VT_UINT */
+ DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */
+ CHAR * pcVal; /* VT_BYREF|VT_I1 */
+ USHORT * puiVal; /* VT_BYREF|VT_UI2 */
+ ULONG * pulVal; /* VT_BYREF|VT_UI4 */
+ INT * pintVal; /* VT_BYREF|VT_INT */
+ UINT * puintVal; /* VT_BYREF|VT_UINT */
+ } __VARIANT_NAME_3;
+ } __VARIANT_NAME_2;
+
+ DECIMAL decVal;
+ } __VARIANT_NAME_1;
+};
+
+typedef VARIANT * LPVARIANT;
+typedef VARIANT VARIANTARG;
+typedef VARIANT * LPVARIANTARG;
+
+cpp_quote("#if defined(_OLEAUT32_)")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+struct _wireVARIANT {
+ USHORT vt;
+ USHORT wReserved1;
+ USHORT wReserved2;
+ USHORT wReserved3;
+ [switch_type(USHORT), switch_is(vt)] union {
+ [case(VT_I4)] LONG lVal; /* VT_I4 */
+ [case(VT_UI1)] BYTE bVal; /* VT_UI1 */
+ [case(VT_I2)] SHORT iVal; /* VT_I2 */
+ [case(VT_R4)] FLOAT fltVal; /* VT_R4 */
+ [case(VT_R8)] DOUBLE dblVal; /* VT_R8 */
+ [case(VT_BOOL)] VARIANT_BOOL boolVal; /* VT_BOOL */
+ [case(VT_ERROR)] SCODE scode; /* VT_ERROR */
+ [case(VT_CY)] CY cyVal; /* VT_CY */
+ [case(VT_DATE)] DATE date; /* VT_DATE */
+ [case(VT_BSTR)] wireBSTR bstrVal; /* VT_BSTR */
+ [case(VT_UNKNOWN)] IUnknown * punkVal; /* VT_UNKNOWN */
+ [case(VT_DISPATCH)] IDispatch * pdispVal; /* VT_DISPATCH */
+ [case(VT_ARRAY)] wireSAFEARRAY parray; /* VT_ARRAY */
+
+ [case(VT_UI1|VT_BYREF)]
+ BYTE * pbVal; /* VT_BYREF|VT_UI1 */
+ [case(VT_I2|VT_BYREF)]
+ SHORT * piVal; /* VT_BYREF|VT_I2 */
+ [case(VT_I4|VT_BYREF)]
+ LONG * plVal; /* VT_BYREF|VT_I4 */
+ [case(VT_R4|VT_BYREF)]
+ FLOAT * pfltVal; /* VT_BYREF|VT_R4 */
+ [case(VT_R8|VT_BYREF)]
+ DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */
+ [case(VT_BOOL|VT_BYREF)]
+ VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */
+ [case(VT_ERROR|VT_BYREF)]
+ SCODE * pscode; /* VT_BYREF|VT_ERROR */
+ [case(VT_CY|VT_BYREF)]
+ CY * pcyVal; /* VT_BYREF|VT_CY */
+ [case(VT_DATE|VT_BYREF)]
+ DATE * pdate; /* VT_BYREF|VT_DATE */
+ [case(VT_BSTR|VT_BYREF)]
+ wireBSTR * pbstrVal; /* VT_BYREF|VT_BSTR */
+ [case(VT_UNKNOWN|VT_BYREF)]
+ IUnknown ** ppunkVal; /* VT_BYREF|VT_UNKNOWN */
+ [case(VT_DISPATCH|VT_BYREF)]
+ IDispatch ** ppdispVal; /* VT_BYREF|VT_DISPATCH */
+ [case(VT_ARRAY|VT_BYREF)]
+ wireSAFEARRAY *pparray; /* VT_BYREF|VT_ARRAY */
+ [case(VT_VARIANT|VT_BYREF)]
+ wireVARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */
+
+ [case(VT_I1)] CHAR cVal; /* VT_I1 */
+ [case(VT_UI2)] USHORT uiVal; /* VT_UI2 */
+ [case(VT_UI4)] ULONG ulVal; /* VT_UI4 */
+ [case(VT_INT)] INT intVal; /* VT_INT */
+ [case(VT_UINT)] UINT uintVal; /* VT_UINT */
+ [case(VT_DECIMAL)] DECIMAL decVal; /* VT_DECIMAL */
+
+ [case(VT_BYREF|VT_DECIMAL)]
+ DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */
+ [case(VT_BYREF|VT_I1)]
+ CHAR * pcVal; /* VT_BYREF|VT_I1 */
+ [case(VT_BYREF|VT_UI2)]
+ USHORT * puiVal; /* VT_BYREF|VT_UI2 */
+ [case(VT_BYREF|VT_UI4)]
+ ULONG * pulVal; /* VT_BYREF|VT_UI4 */
+ [case(VT_BYREF|VT_INT)]
+ INT * pintVal; /* VT_BYREF|VT_INT */
+ [case(VT_BYREF|VT_UINT)]
+ UINT * puintVal; /* VT_BYREF|VT_UINT */
+
+ [case(VT_EMPTY)] ; /* nothing */
+ [case(VT_NULL)] ; /* nothing */
+ };
+};
+
+cpp_quote("#endif /* _OLEAUT32_ */")
+
+//########################################################################
+// End of VARIANT & SAFEARRAY
+//########################################################################
+
+
+//TypeInfo stuff.
+
+typedef LONG DISPID;
+typedef DISPID MEMBERID;
+typedef DWORD HREFTYPE;
+
+typedef [v1_enum] enum tagTYPEKIND {
+ TKIND_ENUM = 0,
+ TKIND_RECORD,
+ TKIND_MODULE,
+ TKIND_INTERFACE,
+ TKIND_DISPATCH,
+ TKIND_COCLASS,
+ TKIND_ALIAS,
+ TKIND_UNION,
+ TKIND_MAX /* end of enum marker */
+} TYPEKIND;
+
+typedef struct tagTYPEDESC {
+ [switch_type(VARTYPE), switch_is(vt)] union {
+ [case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC * lptdesc;
+ [case(VT_CARRAY)] struct tagARRAYDESC * lpadesc;
+ [case(VT_USERDEFINED)] HREFTYPE hreftype;
+ [default] ;
+ };
+ VARTYPE vt;
+} TYPEDESC;
+
+typedef struct tagARRAYDESC {
+ TYPEDESC tdescElem; /* element type */
+ USHORT cDims; /* dimension count */
+ [size_is(cDims)] SAFEARRAYBOUND rgbounds[]; /* var len array of bounds */
+} ARRAYDESC;
+
+// parameter description
+
+typedef struct tagPARAMDESCEX {
+ ULONG cBytes; /* size of this structure */
+ VARIANTARG varDefaultValue; /* default value of this parameter */
+} PARAMDESCEX, * LPPARAMDESCEX;
+
+typedef struct tagPARAMDESC {
+ LPPARAMDESCEX pparamdescex; /* valid if PARAMFLAG_FHASDEFAULT bit is set */
+ USHORT wParamFlags; /* IN, OUT, etc */
+} PARAMDESC, * LPPARAMDESC;
+
+const USHORT PARAMFLAG_NONE = 0x00;
+const USHORT PARAMFLAG_FIN = 0x01;
+const USHORT PARAMFLAG_FOUT = 0x02;
+const USHORT PARAMFLAG_FLCID = 0x04;
+const USHORT PARAMFLAG_FRETVAL = 0x08;
+const USHORT PARAMFLAG_FOPT = 0x10;
+const USHORT PARAMFLAG_FHASDEFAULT = 0x20;
+
+typedef struct tagIDLDESC {
+ ULONG dwReserved;
+ USHORT wIDLFlags; /* IN, OUT, etc */
+} IDLDESC, * LPIDLDESC;
+
+const USHORT IDLFLAG_NONE = PARAMFLAG_NONE;
+const USHORT IDLFLAG_FIN = PARAMFLAG_FIN;
+const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT;
+const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID;
+const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
+
+cpp_quote("#if 0")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+typedef struct tagELEMDESC { /* a format that MIDL likes */
+ TYPEDESC tdesc; /* the type of the element */
+ PARAMDESC paramdesc; /* IDLDESC is a subset of PARAMDESC */
+} ELEMDESC;
+
+cpp_quote("#else /* 0 */")
+cpp_quote("typedef struct tagELEMDESC {")
+cpp_quote(" TYPEDESC tdesc; /* the type of the element */")
+cpp_quote(" union {")
+cpp_quote(" IDLDESC idldesc; /* info for remoting the element */")
+cpp_quote(" PARAMDESC paramdesc; /* info about the parameter */")
+cpp_quote(" };")
+cpp_quote("} ELEMDESC, * LPELEMDESC;")
+cpp_quote("#endif /* 0 */")
+
+typedef struct tagTYPEATTR {
+ GUID guid; /* the GUID of the TypeInfo */
+ LCID lcid; /* locale of member names and doc strings */
+ DWORD dwReserved;
+ MEMBERID memidConstructor; /* ID of constructor, MEMBERID_NIL if none */
+ MEMBERID memidDestructor; /* ID of destructor, MEMBERID_NIL if none */
+ LPOLESTR lpstrSchema;
+ ULONG cbSizeInstance; /* the size of an instance of this type */
+ TYPEKIND typekind; /* the kind of type this typeinfo describes */
+ WORD cFuncs; /* number of functions */
+ WORD cVars; /* number of variables / data members */
+ WORD cImplTypes; /* number of implemented interfaces */
+ WORD cbSizeVft; /* the size of this types virtual func table */
+ WORD cbAlignment; /* specifies the alignment requirements for
+ an instance of this type,
+ 0 = align on 64k boundary
+ 1 = byte align
+ 2 = word align
+ 4 = dword align... */
+ WORD wTypeFlags;
+ WORD wMajorVerNum; /* major version number */
+ WORD wMinorVerNum; /* minor version number */
+ TYPEDESC tdescAlias; /* if typekind == TKIND_ALIAS this field
+ specifies the type for which this type
+ is an alias */
+ IDLDESC idldescType; /* IDL attributes of the described type */
+} TYPEATTR, * LPTYPEATTR;
+
+typedef TYPEATTR ** PPTYPEATTR;
+
+typedef struct tagDISPPARAMS {
+ [size_is(cArgs)] VARIANTARG * rgvarg;
+ [size_is(cNamedArgs)] DISPID * rgdispidNamedArgs;
+ UINT cArgs;
+ UINT cNamedArgs;
+} DISPPARAMS;
+
+cpp_quote("#if 0")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+typedef struct tagEXCEPINFO {
+ WORD wCode; /* An error code describing the error. */
+ WORD wReserved;
+ BSTR bstrSource; /* A source of the exception */
+ BSTR bstrDescription; /* A description of the error */
+ BSTR bstrHelpFile; /* Fully qualified drive, path, and file name */
+ DWORD dwHelpContext; /* help context of topic within the help file */
+ ULONG pvReserved;
+ ULONG pfnDeferredFillIn;
+ SCODE scode;
+} EXCEPINFO;
+
+cpp_quote("#else /* 0 */")
+cpp_quote("typedef struct tagEXCEPINFO {")
+cpp_quote(" WORD wCode;")
+cpp_quote(" WORD wReserved;")
+cpp_quote(" BSTR bstrSource;")
+cpp_quote(" BSTR bstrDescription;")
+cpp_quote(" BSTR bstrHelpFile;")
+cpp_quote(" DWORD dwHelpContext;")
+cpp_quote(" PVOID pvReserved;")
+cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
+cpp_quote(" SCODE scode;")
+cpp_quote("} EXCEPINFO, * LPEXCEPINFO;")
+cpp_quote("#endif /* 0 */")
+
+typedef [v1_enum] enum tagCALLCONV {
+ CC_CDECL = 1,
+ CC_MSCPASCAL,
+ CC_PASCAL = CC_MSCPASCAL,
+ CC_MACPASCAL,
+ CC_STDCALL,
+ CC_RESERVED,
+ CC_SYSCALL,
+ CC_MPWCDECL,
+ CC_MPWPASCAL,
+ CC_MAX /* end of enum marker */
+} CALLCONV;
+
+typedef [v1_enum] enum tagFUNCKIND {
+ FUNC_VIRTUAL,
+ FUNC_PUREVIRTUAL,
+ FUNC_NONVIRTUAL,
+ FUNC_STATIC,
+ FUNC_DISPATCH
+} FUNCKIND;
+
+typedef [v1_enum] enum tagINVOKEKIND {
+ INVOKE_FUNC = 1,
+ INVOKE_PROPERTYGET = 2,
+ INVOKE_PROPERTYPUT = 4,
+ INVOKE_PROPERTYPUTREF = 8
+} INVOKEKIND;
+
+typedef struct tagFUNCDESC {
+ MEMBERID memid;
+ [size_is(cScodes)] SCODE * lprgscode;
+ [size_is(cParams)] ELEMDESC * lprgelemdescParam; /* array of param types */
+ FUNCKIND funckind;
+ INVOKEKIND invkind;
+ CALLCONV callconv;
+ SHORT cParams;
+ SHORT cParamsOpt;
+ SHORT oVft;
+ SHORT cScodes;
+ ELEMDESC elemdescFunc;
+ WORD wFuncFlags;
+} FUNCDESC, * LPFUNCDESC;
+
+typedef FUNCDESC ** PPFUNCDESC;
+
+typedef [v1_enum] enum tagVARKIND {
+ VAR_PERINSTANCE,
+ VAR_STATIC,
+ VAR_CONST,
+ VAR_DISPATCH
+} VARKIND;
+
+/* IMPLTYPE Flags */
+const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
+const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
+const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
+const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8;
+
+typedef struct tagVARDESC {
+ MEMBERID memid;
+ LPOLESTR lpstrSchema;
+ [switch_type(VARKIND), switch_is(varkind)] union {
+ /* offset of variable within the instance */
+ [case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
+ [case(VAR_CONST)] VARIANT * lpvarValue; /* the value of the constant */
+ };
+ ELEMDESC elemdescVar;
+ WORD wVarFlags;
+ VARKIND varkind;
+} VARDESC, * LPVARDESC;
+
+typedef VARDESC ** PPVARDESC;
+
+typedef enum tagTYPEFLAGS {
+ TYPEFLAG_FAPPOBJECT = 0x01,
+ TYPEFLAG_FCANCREATE = 0x02,
+ TYPEFLAG_FLICENSED = 0x04,
+ TYPEFLAG_FPREDECLID = 0x08,
+ TYPEFLAG_FHIDDEN = 0x10,
+ TYPEFLAG_FCONTROL = 0x20,
+ TYPEFLAG_FDUAL = 0x40,
+ TYPEFLAG_FNONEXTENSIBLE = 0x80,
+ TYPEFLAG_FOLEAUTOMATION = 0x100,
+ TYPEFLAG_FRESTRICTED = 0x200,
+ TYPEFLAG_FAGGREGATABLE = 0x400,
+ TYPEFLAG_FREPLACEABLE = 0x800,
+ TYPEFLAG_FDISPATCHABLE = 0x1000,
+ TYPEFLAG_FREVERSEBIND = 0x2000
+} TYPEFLAGS;
+
+typedef enum tagFUNCFLAGS {
+ FUNCFLAG_FRESTRICTED = 0x1,
+ FUNCFLAG_FSOURCE = 0x2,
+ FUNCFLAG_FBINDABLE = 0x4,
+ FUNCFLAG_FREQUESTEDIT = 0x8,
+ FUNCFLAG_FDISPLAYBIND = 0x10,
+ FUNCFLAG_FDEFAULTBIND = 0x20,
+ FUNCFLAG_FHIDDEN = 0x40,
+ FUNCFLAG_FUSESGETLASTERROR = 0x80,
+ FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
+ FUNCFLAG_FUIDEFAULT = 0x200,
+ FUNCFLAG_FNONBROWSABLE = 0x400,
+ FUNCFLAG_FREPLACEABLE = 0x800,
+ FUNCFLAG_FIMMEDIATEBIND = 0x1000
+} FUNCFLAGS;
+
+typedef enum tagVARFLAGS {
+ VARFLAG_FREADONLY = 0x1,
+ VARFLAG_FSOURCE = 0x2,
+ VARFLAG_FBINDABLE = 0x4,
+ VARFLAG_FREQUESTEDIT = 0x8,
+ VARFLAG_FDISPLAYBIND = 0x10,
+ VARFLAG_FDEFAULTBIND = 0x20,
+ VARFLAG_FHIDDEN = 0x40,
+ VARFLAG_FRESTRICTED = 0x80,
+ VARFLAG_FDEFAULTCOLLELEM = 0x100,
+ VARFLAG_FUIDEFAULT = 0x200,
+ VARFLAG_FNONBROWSABLE = 0x400,
+ VARFLAG_FREPLACEABLE = 0x800,
+ VARFLAG_FIMMEDIATEBIND = 0x1000
+} VARFLAGS;
+
+typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
+ IUnknown * pInterface; /* interface that is responsible for storage */
+ PVOID pStorage; /* the storage being managed by interface */
+ DWORD flags; /* which interface, what storage */
+} CLEANLOCALSTORAGE;
+
+typedef struct tagCUSTDATAITEM {
+ GUID guid; /* guid identifying this custom data item */
+ VARIANTARG varValue; /* value of this custom data item */
+} CUSTDATAITEM, * LPCUSTDATAITEM;
+
+typedef struct tagCUSTDATA {
+ DWORD cCustData; /* number of custom data items in rgCustData */
+ [size_is(cCustData)] LPCUSTDATAITEM prgCustData;
+ /* array of custom data items */
+} CUSTDATA, * LPCUSTDATA;
+
+}
+
+
+[
+ object,
+ uuid(00020405-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeInfo: IUnknown
+{
+ typedef [unique] ICreateTypeInfo * LPCREATETYPEINFO;
+
+ HRESULT SetGuid(
+ [in] REFGUID guid
+ );
+
+ HRESULT SetTypeFlags(
+ [in] UINT uTypeFlags
+ );
+
+ HRESULT SetDocString(
+ [in] LPOLESTR pStrDoc
+ );
+
+ HRESULT SetHelpContext(
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetVersion(
+ [in] WORD wMajorVerNum,
+ [in] WORD wMinorVerNum
+ );
+
+ HRESULT AddRefTypeInfo(
+
+ [in] ITypeInfo * pTInfo,
+ [in] HREFTYPE * phRefType
+ );
+
+ HRESULT AddFuncDesc(
+ [in] UINT index,
+ [in] FUNCDESC * pFuncDesc
+ );
+
+ HRESULT AddImplType(
+ [in] UINT index,
+ [in] HREFTYPE hRefType
+ );
+
+ HRESULT SetImplTypeFlags(
+ [in] UINT index,
+ [in] INT implTypeFlags
+ );
+
+ HRESULT SetAlignment(
+ [in] WORD cbAlignment
+ );
+
+ HRESULT SetSchema(
+ [in] LPOLESTR pStrSchema
+ );
+
+ HRESULT AddVarDesc(
+ [in] UINT index,
+ [in] VARDESC * pVarDesc
+ );
+
+ HRESULT SetFuncAndParamNames(
+ [in] UINT index,
+ [in, size_is((UINT) cNames)]
+ [in] LPOLESTR * rgszNames,
+ [in] UINT cNames
+ );
+
+ HRESULT SetVarName(
+ [in] UINT index,
+ [in] LPOLESTR szName
+ );
+
+ HRESULT SetTypeDescAlias(
+ [in] TYPEDESC * pTDescAlias
+ );
+
+ HRESULT DefineFuncAsDllEntry(
+ [in] UINT index,
+ [in] LPOLESTR szDllName,
+ [in] LPOLESTR szProcName
+ );
+
+ HRESULT SetFuncDocString(
+ [in] UINT index,
+ [in] LPOLESTR szDocString
+ );
+
+ HRESULT SetVarDocString(
+ [in] UINT index,
+ [in] LPOLESTR szDocString
+ );
+
+ HRESULT SetFuncHelpContext(
+ [in] UINT index,
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetVarHelpContext(
+ [in] UINT index,
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetMops(
+ [in] UINT index,
+ [in] BSTR bstrMops
+ );
+
+ HRESULT SetTypeIdldesc(
+ [in] IDLDESC * pIdlDesc
+ );
+
+ HRESULT LayOut(
+ void
+ );
+
+}
+
+
+[
+ object,
+ uuid(0002040E-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeInfo2: ICreateTypeInfo
+{
+ typedef [unique] ICreateTypeInfo2 * LPCREATETYPEINFO2;
+
+ HRESULT DeleteFuncDesc(
+ [in] UINT index
+ );
+
+ HRESULT DeleteFuncDescByMemId(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind
+ );
+
+ HRESULT DeleteVarDesc(
+ [in] UINT index
+ );
+
+ HRESULT DeleteVarDescByMemId(
+ [in] MEMBERID memid
+ );
+
+ HRESULT DeleteImplType(
+ [in] UINT index
+ );
+
+ HRESULT SetCustData(
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetFuncCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetParamCustData(
+ [in] UINT indexFunc,
+ [in] UINT indexParam,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetVarCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetImplTypeCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetHelpStringContext(
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT SetFuncHelpStringContext(
+ [in] UINT index,
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT SetVarHelpStringContext(
+ [in] UINT index,
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT Invalidate(
+ void
+ );
+
+ HRESULT SetName(
+ [in] LPOLESTR szName
+ );
+
+}
+
+
+[
+ object,
+ uuid(00020406-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeLib : IUnknown
+{
+ typedef [unique] ICreateTypeLib * LPCREATETYPELIB;
+
+ HRESULT CreateTypeInfo(
+ [in] LPOLESTR szName,
+ [in] TYPEKIND tkind,
+ [out] ICreateTypeInfo ** ppCTInfo
+ );
+
+ HRESULT SetName(
+ [in] LPOLESTR szName
+ );
+
+ HRESULT SetVersion(
+ [in] WORD wMajorVerNum,
+ [in] WORD wMinorVerNum
+ );
+
+ HRESULT SetGuid(
+ [in] REFGUID guid
+ );
+
+ HRESULT SetDocString(
+ [in] LPOLESTR szDoc
+ );
+
+ HRESULT SetHelpFileName(
+ [in] LPOLESTR szHelpFileName
+ );
+
+ HRESULT SetHelpContext(
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetLcid(
+ [in] LCID lcid
+ );
+
+ HRESULT SetLibFlags(
+ [in] UINT uLibFlags
+ );
+
+ HRESULT SaveAllChanges(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(0002040F-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeLib2 : ICreateTypeLib
+{
+ typedef [unique] ICreateTypeLib2 * LPCREATETYPELIB2;
+
+ HRESULT DeleteTypeInfo(
+ [in] LPOLESTR szName
+ );
+
+ HRESULT SetCustData(
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetHelpStringContext(
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT SetHelpStringDll(
+ [in] LPOLESTR szFileName
+ );
+}
+
+
+[
+ object,
+ uuid(00020400-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IDispatch : IUnknown
+{
+ typedef [unique] IDispatch * LPDISPATCH;
+
+ HRESULT GetTypeInfoCount(
+ [out] UINT * pctinfo
+ );
+
+ HRESULT GetTypeInfo(
+ [in] UINT iTInfo,
+ [in] LCID lcid,
+ [out] ITypeInfo ** ppTInfo
+ );
+
+ HRESULT GetIDsOfNames(
+ [in] REFIID riid,
+ [in, size_is(cNames)] LPOLESTR * rgszNames,
+ [in] UINT cNames,
+ [in] LCID lcid,
+ [out, size_is(cNames)] DISPID * rgDispId
+ );
+
+ [local]
+ HRESULT Invoke(
+ [in] DISPID dispIdMember,
+ [in] REFIID riid,
+ [in] LCID lcid,
+ [in] WORD wFlags,
+ [in, out] DISPPARAMS * pDispParams,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * puArgErr
+ );
+
+ [call_as(Invoke)]
+ HRESULT RemoteInvoke(
+ [in] DISPID dispIdMember,
+ [in] REFIID riid,
+ [in] LCID lcid,
+ [in] DWORD dwFlags,
+ [in] DISPPARAMS * pDispParams,
+ [out, size_is(cVtRef)] VARIANTARG * rgVtRef,
+ [in] UINT cVtRef,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * pArgErr
+ );
+
+cpp_quote("/* DISPID reserved to indicate an \"unknown\" name */")
+cpp_quote("/* only reserved for data members (properties); reused as a method dispid below */")
+const DISPID DISPID_UNKNOWN = -1;
+
+cpp_quote("/* DISPID reserved for the \"value\" property */")
+const DISPID DISPID_VALUE = 0;
+
+cpp_quote("/* The following DISPID is reserved to indicate the param")
+cpp_quote(" * that is the right-hand-side (or \"put\" value) of a PropertyPut")
+cpp_quote(" */")
+const DISPID DISPID_PROPERTYPUT = -3;
+
+cpp_quote("/* DISPID reserved for the standard \"NewEnum\" method */")
+const DISPID DISPID_NEWENUM = -4;
+
+cpp_quote("/* DISPID reserved for the standard \"Evaluate\" method */")
+const DISPID DISPID_EVALUATE = -5;
+
+const DISPID DISPID_CONSTRUCTOR = -6;
+
+const DISPID DISPID_DESTRUCTOR = -7;
+
+const DISPID DISPID_COLLECT = -8;
+
+cpp_quote("/* The range -500 through -999 is reserved for Controls */")
+cpp_quote("/* The range 0x80010000 through 0x8001FFFF is reserved for Controls */")
+cpp_quote("/* The range -5000 through -5499 is reserved for ActiveX Accessability */")
+cpp_quote("/* The remainder of the negative DISPIDs are reserved for future use */")
+
+}
+
+
+[
+ object,
+ uuid(00020404-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumVARIANT : IUnknown
+{
+ typedef [unique] IEnumVARIANT* LPENUMVARIANT;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
+ [out] ULONG * pCeltFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
+ [out] ULONG * pCeltFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG celt
+ );
+
+ HRESULT Reset(
+ );
+
+ HRESULT Clone(
+ [out] IEnumVARIANT ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(00020403-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeComp : IUnknown
+{
+ typedef [unique] ITypeComp * LPTYPECOMP;
+
+ typedef [v1_enum] enum tagDESCKIND {
+ DESCKIND_NONE = 0,
+ DESCKIND_FUNCDESC,
+ DESCKIND_VARDESC,
+ DESCKIND_TYPECOMP,
+ DESCKIND_IMPLICITAPPOBJ,
+ DESCKIND_MAX
+ } DESCKIND;
+
+ typedef union tagBINDPTR {
+ FUNCDESC * lpfuncdesc;
+ VARDESC * lpvardesc;
+ ITypeComp * lptcomp;
+ } BINDPTR, * LPBINDPTR;
+
+ [local]
+ HRESULT Bind(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [in] WORD wFlags,
+ [out] ITypeInfo ** ppTInfo,
+ [out] DESCKIND * pDescKind,
+ [out] BINDPTR * pBindPtr
+ );
+
+ [call_as(Bind)]
+ HRESULT RemoteBind(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [in] WORD wFlags,
+ [out] ITypeInfo ** ppTInfo,
+ [out] DESCKIND * pDescKind,
+ [out] PPFUNCDESC ppFuncDesc,
+ [out] PPVARDESC ppVarDesc,
+ [out] ITypeComp ** ppTypeComp,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ [local]
+ HRESULT BindType(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [out] ITypeInfo ** ppTInfo,
+ [out] ITypeComp ** ppTComp
+ );
+
+ [call_as(BindType)]
+ HRESULT RemoteBindType(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [out] ITypeInfo ** ppTInfo
+ );
+}
+
+
+[
+ object,
+ uuid(00020401-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeInfo : IUnknown
+{
+ typedef [unique] ITypeInfo * LPTYPEINFO;
+
+ [local]
+ HRESULT GetTypeAttr(
+ [out] TYPEATTR ** ppTypeAttr
+ );
+
+ [call_as(GetTypeAttr)]
+ HRESULT RemoteGetTypeAttr(
+ [out] PPTYPEATTR ppTypeAttr,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ HRESULT GetTypeComp(
+ [out] ITypeComp ** ppTComp
+ );
+
+ [local]
+ HRESULT GetFuncDesc(
+ [in] UINT index,
+ [out] FUNCDESC ** ppFuncDesc
+ );
+
+ [call_as(GetFuncDesc)]
+ HRESULT RemoteGetFuncDesc(
+ [in] UINT index,
+ [out] PPFUNCDESC ppFuncDesc,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ [local]
+ HRESULT GetVarDesc(
+ [in] UINT index,
+ [out] VARDESC ** ppVarDesc
+ );
+
+ [call_as(GetVarDesc)]
+ HRESULT RemoteGetVarDesc(
+ [in] UINT index,
+ [out] PPVARDESC ppVarDesc,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ HRESULT GetNames(
+ [in] MEMBERID memid,
+ [out,size_is(cMaxNames),length_is(*pcNames)] BSTR * rgBstrNames,
+ [in] UINT cMaxNames,
+ [out] UINT * pcNames
+ );
+
+ HRESULT GetRefTypeOfImplType(
+ [in] UINT index,
+ [out] HREFTYPE * pRefType
+ );
+
+ HRESULT GetImplTypeFlags(
+ [in] UINT index,
+ [out] INT * pImplTypeFlags
+ );
+
+ HRESULT GetIDsOfNames(
+ [in, size_is(cNames)] LPOLESTR * rgszNames,
+ [in] UINT cNames,
+ [out, size_is(cNames)] MEMBERID * pMemId
+ );
+
+ [local]
+ HRESULT Invoke(
+ [in] PVOID pvInstance,
+ [in] MEMBERID memid,
+ [in] WORD wFlags,
+ [in, out] DISPPARAMS * pDispParams,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * puArgErr
+ );
+
+ [call_as(Invoke)]
+ HRESULT RemoteInvoke (
+ [in] IUnknown * pIUnk,
+ [in] MEMBERID memid,
+ [in] DWORD dwFlags,
+ [in] DISPPARAMS * pDispParams,
+ [out, size_is(cVtRef)] VARIANTARG * rgVtRef,
+ [in] UINT cVtRef,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * pArgErr
+ );
+
+ [local]
+ HRESULT GetDocumentation(
+ [in] MEMBERID memid,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [call_as(GetDocumentation)]
+ HRESULT RemoteGetDocumentation(
+ [in] MEMBERID memid,
+ [in] DWORD refPtrFlags,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [local]
+ HRESULT GetDllEntry(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [out] BSTR * pBstrDllName,
+ [out] BSTR * pBstrName,
+ [out] WORD * pwOrdinal
+ );
+
+ [call_as(GetDllEntry)]
+ HRESULT RemoteGetDllEntry(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [in] DWORD refPtrFlags,
+ [out] BSTR * pBstrDllName,
+ [out] BSTR * pBstrName,
+ [out] WORD * pwOrdinal
+ );
+
+ HRESULT GetRefTypeInfo(
+ [in] HREFTYPE hRefType,
+ [out] ITypeInfo ** ppTInfo
+ );
+
+ [local]
+ HRESULT AddressOfMember(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [out] PVOID * ppv
+ );
+
+ [call_as(AddressOfMember)]
+ HRESULT LocalAddressOfMember(
+ void
+ );
+
+ [local]
+ HRESULT CreateInstance(
+ [in] IUnknown * pUnkOuter,
+ [in] REFIID riid,
+ [out, iid_is(riid)] PVOID * ppvObj
+ );
+
+ [call_as(CreateInstance)]
+ HRESULT RemoteCreateInstance(
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown ** ppvObj
+ );
+
+ HRESULT GetMops(
+ [in] MEMBERID memid,
+ [out] BSTR * pBstrMops
+ );
+
+ HRESULT GetContainingTypeLib(
+ [out] ITypeLib ** ppTLib,
+ [out] UINT * pIndex
+ );
+
+ [local]
+ void ReleaseTypeAttr(
+ [in] TYPEATTR * pTypeAttr
+ );
+
+ [call_as(ReleaseTypeAttr)]
+ HRESULT LocalReleaseTypeAttr(
+ void
+ );
+
+ [local]
+ void ReleaseFuncDesc(
+ [in] FUNCDESC * pFuncDesc
+ );
+
+ [call_as(ReleaseFuncDesc)]
+ HRESULT LocalReleaseFuncDesc(
+ void
+ );
+
+ [local]
+ void ReleaseVarDesc(
+ [in] VARDESC * pVarDesc
+ );
+
+ [call_as(ReleaseVarDesc)]
+ HRESULT LocalReleaseVarDesc(
+ void
+ );
+}
+
+
+
+[
+ object,
+ uuid(00020412-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeInfo2 : ITypeInfo
+{
+ typedef [unique] ITypeInfo2 * LPTYPEINFO2;
+
+ HRESULT GetTypeKind(
+ [out] TYPEKIND * pTypeKind
+ );
+
+ HRESULT GetTypeFlags(
+ [out] ULONG * pTypeFlags
+ );
+
+ HRESULT GetFuncIndexOfMemId(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [out] UINT * pFuncIndex
+ );
+
+ HRESULT GetVarIndexOfMemId(
+ [in] MEMBERID memid,
+ [out] UINT * pVarIndex
+ );
+
+ HRESULT GetCustData(
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetFuncCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetParamCustData(
+ [in] UINT indexFunc,
+ [in] UINT indexParam,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetVarCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetImplTypeCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ [local]
+ HRESULT GetDocumentation2(
+ [in] MEMBERID memid,
+ [in] LCID lcid,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+ [call_as(GetDocumentation2)]
+ HRESULT RemoteGetDocumentation2(
+ [in] MEMBERID memid,
+ [in] LCID lcid,
+ [in] DWORD refPtrFlags,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+ HRESULT GetAllCustData(
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllFuncCustData(
+ [in] UINT index,
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllParamCustData(
+ [in] UINT indexFunc,
+ [in] UINT indexParam,
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllVarCustData(
+ [in] UINT index,
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllImplTypeCustData(
+ [in] UINT index,
+ [out] CUSTDATA * pCustData
+ );
+}
+
+
+[
+ object,
+ uuid(00020402-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeLib : IUnknown
+{
+ typedef [v1_enum] enum tagSYSKIND {
+ SYS_WIN16 = 0,
+ SYS_WIN32,
+ SYS_MAC
+ } SYSKIND;
+
+ typedef [v1_enum] enum tagLIBFLAGS {
+ LIBFLAG_FRESTRICTED = 0x01,
+ LIBFLAG_FCONTROL = 0x02,
+ LIBFLAG_FHIDDEN = 0x04,
+ LIBFLAG_FHASDISKIMAGE = 0x08
+ } LIBFLAGS;
+
+ typedef [unique] ITypeLib * LPTYPELIB;
+
+ typedef struct tagTLIBATTR {
+ GUID guid;
+ LCID lcid;
+ SYSKIND syskind;
+ WORD wMajorVerNum;
+ WORD wMinorVerNum;
+ WORD wLibFlags;
+ } TLIBATTR, * LPTLIBATTR;
+
+ typedef TLIBATTR ** PPTLIBATTR;
+
+ [local]
+ UINT GetTypeInfoCount(
+ void
+ );
+
+ [call_as(GetTypeInfoCount)]
+ HRESULT RemoteGetTypeInfoCount(
+ [out] UINT * pcTInfo
+ );
+
+ HRESULT GetTypeInfo(
+ [in] UINT index,
+ [out] ITypeInfo ** ppTInfo
+ );
+
+ HRESULT GetTypeInfoType(
+ [in] UINT index,
+ [out] TYPEKIND * pTKind
+ );
+
+ HRESULT GetTypeInfoOfGuid(
+ [in] REFGUID guid,
+ [out] ITypeInfo ** ppTinfo
+ );
+
+ [local]
+ HRESULT GetLibAttr(
+ [out] TLIBATTR ** ppTLibAttr
+ );
+
+ [call_as(GetLibAttr)]
+ HRESULT RemoteGetLibAttr(
+ [out] PPTLIBATTR ppTLibAttr,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ HRESULT GetTypeComp(
+ [out] ITypeComp ** ppTComp
+ );
+
+ [local]
+ HRESULT GetDocumentation(
+ [in] INT index,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [call_as(GetDocumentation)]
+ HRESULT RemoteGetDocumentation(
+ [in] INT index,
+ [in] DWORD refPtrFlags,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [local]
+ HRESULT IsName(
+ [in, out] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out] BOOL * pfName
+ );
+
+ [call_as(IsName)]
+ HRESULT RemoteIsName(
+ [in] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out] BOOL * pfName,
+ [out] BSTR * pBstrLibName
+ );
+
+ [local]
+ HRESULT FindName(
+ [in, out] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out,size_is(*pcFound),length_is(*pcFound)] ITypeInfo **ppTInfo,
+ [out,size_is(*pcFound),length_is(*pcFound)] MEMBERID * rgMemId,
+ [in, out] USHORT * pcFound
+ );
+
+ [call_as(FindName)]
+ HRESULT RemoteFindName(
+ [in] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out,size_is(*pcFound),length_is(*pcFound)] ITypeInfo **ppTInfo,
+ [out,size_is(*pcFound),length_is(*pcFound)] MEMBERID * rgMemId,
+ [in, out] USHORT * pcFound,
+ [out] BSTR * pBstrLibName
+ );
+
+ [local]
+ void ReleaseTLibAttr(
+ [in] TLIBATTR * pTLibAttr
+ );
+
+ [call_as(ReleaseTLibAttr)]
+ HRESULT LocalReleaseTLibAttr(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(00020411-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeLib2 : ITypeLib
+{
+ typedef [unique] ITypeLib2 * LPTYPELIB2;
+
+ HRESULT GetCustData(
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ [local]
+ HRESULT GetLibStatistics(
+ [out] ULONG * pcUniqueNames,
+ [out] ULONG * pcchUniqueNames
+ );
+
+ [call_as(GetLibStatistics)]
+ HRESULT RemoteGetLibStatistics(
+ [out] ULONG * pcUniqueNames,
+ [out] ULONG * pcchUniqueNames
+ );
+
+ [local]
+ HRESULT GetDocumentation2(
+ [in] INT index,
+ [in] LCID lcid,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+ [call_as(GetDocumentation2)]
+ HRESULT RemoteGetDocumentation2(
+ [in] INT index,
+ [in] LCID lcid,
+ [in] DWORD refPtrFlags,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+
+ HRESULT GetAllCustData(
+ [out] CUSTDATA * pCustData
+ );
+}
+
+
+[
+ object,
+ uuid(00020410-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ITypeChangeEvents: IUnknown
+{
+ typedef [unique] ITypeChangeEvents * LPTYPECHANGEEVENTS;
+
+ // notification messages used by the dynamic typeinfo protocol.
+ typedef enum tagCHANGEKIND {
+ CHANGEKIND_ADDMEMBER,
+ CHANGEKIND_DELETEMEMBER,
+ CHANGEKIND_SETNAMES,
+ CHANGEKIND_SETDOCUMENTATION,
+ CHANGEKIND_GENERAL,
+ CHANGEKIND_INVALIDATE,
+ CHANGEKIND_CHANGEFAILED,
+ CHANGEKIND_MAX
+ } CHANGEKIND;
+
+ HRESULT RequestTypeChange(
+ [in] CHANGEKIND changeKind,
+ [in] ITypeInfo * pTInfoBefore,
+ [in] LPOLESTR pStrName,
+ [out] INT * pfCancel
+ );
+
+ HRESULT AfterTypeChange(
+ [in] CHANGEKIND changeKind,
+ [in] ITypeInfo * pTInfoAfter,
+ [in] LPOLESTR pStrName
+ );
+}
+
+
+[
+ object,
+ uuid(1CF2B120-547D-101B-8E65-08002B2BD119),
+ pointer_default(unique),
+ local
+]
+
+interface IErrorInfo: IUnknown
+{
+ typedef [unique] IErrorInfo * LPERRORINFO;
+
+ HRESULT GetGUID(
+ [out] GUID * pGUID
+ );
+
+ HRESULT GetSource(
+ [out] BSTR * pBstrSource
+ );
+
+ HRESULT GetDescription(
+ [out] BSTR * pBstrDescription
+ );
+
+ HRESULT GetHelpFile(
+ [out] BSTR * pBstrHelpFile
+ );
+
+ HRESULT GetHelpContext(
+ [out] DWORD * pdwHelpContext
+ );
+}
+
+
+[
+ object,
+ uuid(22F03340-547D-101B-8E65-08002B2BD119),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateErrorInfo: IUnknown
+{
+ typedef [unique] ICreateErrorInfo * LPCREATEERRORINFO;
+
+ HRESULT SetGUID(
+ [in] REFGUID rguid
+ );
+
+ HRESULT SetSource(
+ [in] LPOLESTR szSource
+ );
+
+ HRESULT SetDescription(
+ [in] LPOLESTR szDescription
+ );
+
+ HRESULT SetHelpFile(
+ [in] LPOLESTR szHelpFile
+ );
+
+ HRESULT SetHelpContext(
+ [in] DWORD dwHelpContext
+ );
+}
+
+
+[
+ object,
+ uuid(DF0B3D60-548F-101B-8E65-08002B2BD119),
+ pointer_default(unique)
+]
+
+interface ISupportErrorInfo: IUnknown
+{
+ typedef [unique] ISupportErrorInfo * LPSUPPORTERRORINFO;
+
+ HRESULT InterfaceSupportsErrorInfo(
+ [in] REFIID riid
+ );
+}
+
diff --git a/public/sdk/inc/chicago/objidl.h b/public/sdk/inc/chicago/objidl.h
new file mode 100644
index 000000000..af5c1062d
--- /dev/null
+++ b/public/sdk/inc/chicago/objidl.h
@@ -0,0 +1,10770 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:35:03 1996
+ */
+/* Compiler settings for objidl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __objidl_h__
+#define __objidl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IMarshal_FWD_DEFINED__
+#define __IMarshal_FWD_DEFINED__
+typedef interface IMarshal IMarshal;
+#endif /* __IMarshal_FWD_DEFINED__ */
+
+
+#ifndef __IMalloc_FWD_DEFINED__
+#define __IMalloc_FWD_DEFINED__
+typedef interface IMalloc IMalloc;
+#endif /* __IMalloc_FWD_DEFINED__ */
+
+
+#ifndef __IMallocSpy_FWD_DEFINED__
+#define __IMallocSpy_FWD_DEFINED__
+typedef interface IMallocSpy IMallocSpy;
+#endif /* __IMallocSpy_FWD_DEFINED__ */
+
+
+#ifndef __IStdMarshalInfo_FWD_DEFINED__
+#define __IStdMarshalInfo_FWD_DEFINED__
+typedef interface IStdMarshalInfo IStdMarshalInfo;
+#endif /* __IStdMarshalInfo_FWD_DEFINED__ */
+
+
+#ifndef __IExternalConnection_FWD_DEFINED__
+#define __IExternalConnection_FWD_DEFINED__
+typedef interface IExternalConnection IExternalConnection;
+#endif /* __IExternalConnection_FWD_DEFINED__ */
+
+
+#ifndef __IMultiQI_FWD_DEFINED__
+#define __IMultiQI_FWD_DEFINED__
+typedef interface IMultiQI IMultiQI;
+#endif /* __IMultiQI_FWD_DEFINED__ */
+
+
+#ifndef __IEnumUnknown_FWD_DEFINED__
+#define __IEnumUnknown_FWD_DEFINED__
+typedef interface IEnumUnknown IEnumUnknown;
+#endif /* __IEnumUnknown_FWD_DEFINED__ */
+
+
+#ifndef __IBindCtx_FWD_DEFINED__
+#define __IBindCtx_FWD_DEFINED__
+typedef interface IBindCtx IBindCtx;
+#endif /* __IBindCtx_FWD_DEFINED__ */
+
+
+#ifndef __IEnumMoniker_FWD_DEFINED__
+#define __IEnumMoniker_FWD_DEFINED__
+typedef interface IEnumMoniker IEnumMoniker;
+#endif /* __IEnumMoniker_FWD_DEFINED__ */
+
+
+#ifndef __IRunnableObject_FWD_DEFINED__
+#define __IRunnableObject_FWD_DEFINED__
+typedef interface IRunnableObject IRunnableObject;
+#endif /* __IRunnableObject_FWD_DEFINED__ */
+
+
+#ifndef __IRunningObjectTable_FWD_DEFINED__
+#define __IRunningObjectTable_FWD_DEFINED__
+typedef interface IRunningObjectTable IRunningObjectTable;
+#endif /* __IRunningObjectTable_FWD_DEFINED__ */
+
+
+#ifndef __IPersist_FWD_DEFINED__
+#define __IPersist_FWD_DEFINED__
+typedef interface IPersist IPersist;
+#endif /* __IPersist_FWD_DEFINED__ */
+
+
+#ifndef __IPersistStream_FWD_DEFINED__
+#define __IPersistStream_FWD_DEFINED__
+typedef interface IPersistStream IPersistStream;
+#endif /* __IPersistStream_FWD_DEFINED__ */
+
+
+#ifndef __IMoniker_FWD_DEFINED__
+#define __IMoniker_FWD_DEFINED__
+typedef interface IMoniker IMoniker;
+#endif /* __IMoniker_FWD_DEFINED__ */
+
+
+#ifndef __IROTData_FWD_DEFINED__
+#define __IROTData_FWD_DEFINED__
+typedef interface IROTData IROTData;
+#endif /* __IROTData_FWD_DEFINED__ */
+
+
+#ifndef __IEnumString_FWD_DEFINED__
+#define __IEnumString_FWD_DEFINED__
+typedef interface IEnumString IEnumString;
+#endif /* __IEnumString_FWD_DEFINED__ */
+
+
+#ifndef __ISequentialStream_FWD_DEFINED__
+#define __ISequentialStream_FWD_DEFINED__
+typedef interface ISequentialStream ISequentialStream;
+#endif /* __ISequentialStream_FWD_DEFINED__ */
+
+
+#ifndef __IStream_FWD_DEFINED__
+#define __IStream_FWD_DEFINED__
+typedef interface IStream IStream;
+#endif /* __IStream_FWD_DEFINED__ */
+
+
+#ifndef __IEnumSTATSTG_FWD_DEFINED__
+#define __IEnumSTATSTG_FWD_DEFINED__
+typedef interface IEnumSTATSTG IEnumSTATSTG;
+#endif /* __IEnumSTATSTG_FWD_DEFINED__ */
+
+
+#ifndef __IStorage_FWD_DEFINED__
+#define __IStorage_FWD_DEFINED__
+typedef interface IStorage IStorage;
+#endif /* __IStorage_FWD_DEFINED__ */
+
+
+#ifndef __IPersistFile_FWD_DEFINED__
+#define __IPersistFile_FWD_DEFINED__
+typedef interface IPersistFile IPersistFile;
+#endif /* __IPersistFile_FWD_DEFINED__ */
+
+
+#ifndef __IPersistStorage_FWD_DEFINED__
+#define __IPersistStorage_FWD_DEFINED__
+typedef interface IPersistStorage IPersistStorage;
+#endif /* __IPersistStorage_FWD_DEFINED__ */
+
+
+#ifndef __ILockBytes_FWD_DEFINED__
+#define __ILockBytes_FWD_DEFINED__
+typedef interface ILockBytes ILockBytes;
+#endif /* __ILockBytes_FWD_DEFINED__ */
+
+
+#ifndef __IEnumFORMATETC_FWD_DEFINED__
+#define __IEnumFORMATETC_FWD_DEFINED__
+typedef interface IEnumFORMATETC IEnumFORMATETC;
+#endif /* __IEnumFORMATETC_FWD_DEFINED__ */
+
+
+#ifndef __IEnumSTATDATA_FWD_DEFINED__
+#define __IEnumSTATDATA_FWD_DEFINED__
+typedef interface IEnumSTATDATA IEnumSTATDATA;
+#endif /* __IEnumSTATDATA_FWD_DEFINED__ */
+
+
+#ifndef __IRootStorage_FWD_DEFINED__
+#define __IRootStorage_FWD_DEFINED__
+typedef interface IRootStorage IRootStorage;
+#endif /* __IRootStorage_FWD_DEFINED__ */
+
+
+#ifndef __IAdviseSink_FWD_DEFINED__
+#define __IAdviseSink_FWD_DEFINED__
+typedef interface IAdviseSink IAdviseSink;
+#endif /* __IAdviseSink_FWD_DEFINED__ */
+
+
+#ifndef __IAdviseSink2_FWD_DEFINED__
+#define __IAdviseSink2_FWD_DEFINED__
+typedef interface IAdviseSink2 IAdviseSink2;
+#endif /* __IAdviseSink2_FWD_DEFINED__ */
+
+
+#ifndef __IDataObject_FWD_DEFINED__
+#define __IDataObject_FWD_DEFINED__
+typedef interface IDataObject IDataObject;
+#endif /* __IDataObject_FWD_DEFINED__ */
+
+
+#ifndef __IDataAdviseHolder_FWD_DEFINED__
+#define __IDataAdviseHolder_FWD_DEFINED__
+typedef interface IDataAdviseHolder IDataAdviseHolder;
+#endif /* __IDataAdviseHolder_FWD_DEFINED__ */
+
+
+#ifndef __IMessageFilter_FWD_DEFINED__
+#define __IMessageFilter_FWD_DEFINED__
+typedef interface IMessageFilter IMessageFilter;
+#endif /* __IMessageFilter_FWD_DEFINED__ */
+
+
+#ifndef __IRpcChannelBuffer_FWD_DEFINED__
+#define __IRpcChannelBuffer_FWD_DEFINED__
+typedef interface IRpcChannelBuffer IRpcChannelBuffer;
+#endif /* __IRpcChannelBuffer_FWD_DEFINED__ */
+
+
+#ifndef __IRpcProxyBuffer_FWD_DEFINED__
+#define __IRpcProxyBuffer_FWD_DEFINED__
+typedef interface IRpcProxyBuffer IRpcProxyBuffer;
+#endif /* __IRpcProxyBuffer_FWD_DEFINED__ */
+
+
+#ifndef __IRpcStubBuffer_FWD_DEFINED__
+#define __IRpcStubBuffer_FWD_DEFINED__
+typedef interface IRpcStubBuffer IRpcStubBuffer;
+#endif /* __IRpcStubBuffer_FWD_DEFINED__ */
+
+
+#ifndef __IPSFactoryBuffer_FWD_DEFINED__
+#define __IPSFactoryBuffer_FWD_DEFINED__
+typedef interface IPSFactoryBuffer IPSFactoryBuffer;
+#endif /* __IPSFactoryBuffer_FWD_DEFINED__ */
+
+
+#ifndef __IChannelHook_FWD_DEFINED__
+#define __IChannelHook_FWD_DEFINED__
+typedef interface IChannelHook IChannelHook;
+#endif /* __IChannelHook_FWD_DEFINED__ */
+
+
+#ifndef __IPropertyStorage_FWD_DEFINED__
+#define __IPropertyStorage_FWD_DEFINED__
+typedef interface IPropertyStorage IPropertyStorage;
+#endif /* __IPropertyStorage_FWD_DEFINED__ */
+
+
+#ifndef __IPropertySetStorage_FWD_DEFINED__
+#define __IPropertySetStorage_FWD_DEFINED__
+typedef interface IPropertySetStorage IPropertySetStorage;
+#endif /* __IPropertySetStorage_FWD_DEFINED__ */
+
+
+#ifndef __IEnumSTATPROPSTG_FWD_DEFINED__
+#define __IEnumSTATPROPSTG_FWD_DEFINED__
+typedef interface IEnumSTATPROPSTG IEnumSTATPROPSTG;
+#endif /* __IEnumSTATPROPSTG_FWD_DEFINED__ */
+
+
+#ifndef __IEnumSTATPROPSETSTG_FWD_DEFINED__
+#define __IEnumSTATPROPSETSTG_FWD_DEFINED__
+typedef interface IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG;
+#endif /* __IEnumSTATPROPSETSTG_FWD_DEFINED__ */
+
+
+#ifndef __IClientSecurity_FWD_DEFINED__
+#define __IClientSecurity_FWD_DEFINED__
+typedef interface IClientSecurity IClientSecurity;
+#endif /* __IClientSecurity_FWD_DEFINED__ */
+
+
+#ifndef __IServerSecurity_FWD_DEFINED__
+#define __IServerSecurity_FWD_DEFINED__
+typedef interface IServerSecurity IServerSecurity;
+#endif /* __IServerSecurity_FWD_DEFINED__ */
+
+
+#ifndef __IClassActivator_FWD_DEFINED__
+#define __IClassActivator_FWD_DEFINED__
+typedef interface IClassActivator IClassActivator;
+#endif /* __IClassActivator_FWD_DEFINED__ */
+
+
+#ifndef __IFillLockBytes_FWD_DEFINED__
+#define __IFillLockBytes_FWD_DEFINED__
+typedef interface IFillLockBytes IFillLockBytes;
+#endif /* __IFillLockBytes_FWD_DEFINED__ */
+
+
+#ifndef __IProgressNotify_FWD_DEFINED__
+#define __IProgressNotify_FWD_DEFINED__
+typedef interface IProgressNotify IProgressNotify;
+#endif /* __IProgressNotify_FWD_DEFINED__ */
+
+
+#ifndef __ILayoutStorage_FWD_DEFINED__
+#define __ILayoutStorage_FWD_DEFINED__
+typedef interface ILayoutStorage ILayoutStorage;
+#endif /* __ILayoutStorage_FWD_DEFINED__ */
+
+
+#ifndef __ISurrogate_FWD_DEFINED__
+#define __ISurrogate_FWD_DEFINED__
+typedef interface ISurrogate ISurrogate;
+#endif /* __ISurrogate_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "unknwn.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IMarshal_INTERFACE_DEFINED__
+#define __IMarshal_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMarshal
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IMarshal __RPC_FAR *LPMARSHAL;
+
+
+EXTERN_C const IID IID_IMarshal;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMarshal : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetUnmarshalClass(
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ CLSID __RPC_FAR *pCid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMarshalSizeMax(
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ DWORD __RPC_FAR *pSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MarshalInterface(
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnmarshalInterface(
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseMarshalData(
+ /* [unique][in] */ IStream __RPC_FAR *pStm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DisconnectObject(
+ /* [in] */ DWORD dwReserved) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMarshalVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMarshal __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMarshal __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetUnmarshalClass )(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ CLSID __RPC_FAR *pCid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMarshalSizeMax )(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ DWORD __RPC_FAR *pSize);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *MarshalInterface )(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UnmarshalInterface )(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseMarshalData )(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DisconnectObject )(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved);
+
+ END_INTERFACE
+ } IMarshalVtbl;
+
+ interface IMarshal
+ {
+ CONST_VTBL struct IMarshalVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMarshal_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMarshal_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMarshal_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMarshal_GetUnmarshalClass(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pCid) \
+ (This)->lpVtbl -> GetUnmarshalClass(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pCid)
+
+#define IMarshal_GetMarshalSizeMax(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pSize) \
+ (This)->lpVtbl -> GetMarshalSizeMax(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pSize)
+
+#define IMarshal_MarshalInterface(This,pStm,riid,pv,dwDestContext,pvDestContext,mshlflags) \
+ (This)->lpVtbl -> MarshalInterface(This,pStm,riid,pv,dwDestContext,pvDestContext,mshlflags)
+
+#define IMarshal_UnmarshalInterface(This,pStm,riid,ppv) \
+ (This)->lpVtbl -> UnmarshalInterface(This,pStm,riid,ppv)
+
+#define IMarshal_ReleaseMarshalData(This,pStm) \
+ (This)->lpVtbl -> ReleaseMarshalData(This,pStm)
+
+#define IMarshal_DisconnectObject(This,dwReserved) \
+ (This)->lpVtbl -> DisconnectObject(This,dwReserved)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ CLSID __RPC_FAR *pCid);
+
+
+void __RPC_STUB IMarshal_GetUnmarshalClass_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ DWORD __RPC_FAR *pSize);
+
+
+void __RPC_STUB IMarshal_GetMarshalSizeMax_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_MarshalInterface_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags);
+
+
+void __RPC_STUB IMarshal_MarshalInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+
+void __RPC_STUB IMarshal_UnmarshalInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm);
+
+
+void __RPC_STUB IMarshal_ReleaseMarshalData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_DisconnectObject_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved);
+
+
+void __RPC_STUB IMarshal_DisconnectObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMarshal_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMalloc_INTERFACE_DEFINED__
+#define __IMalloc_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMalloc
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IMalloc __RPC_FAR *LPMALLOC;
+
+
+EXTERN_C const IID IID_IMalloc;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMalloc : public IUnknown
+ {
+ public:
+ virtual void __RPC_FAR *STDMETHODCALLTYPE Alloc(
+ /* [in] */ ULONG cb) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE Realloc(
+ /* [in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb) = 0;
+
+ virtual void STDMETHODCALLTYPE Free(
+ /* [in] */ void __RPC_FAR *pv) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE GetSize(
+ /* [in] */ void __RPC_FAR *pv) = 0;
+
+ virtual int STDMETHODCALLTYPE DidAlloc(
+ void __RPC_FAR *pv) = 0;
+
+ virtual void STDMETHODCALLTYPE HeapMinimize( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMallocVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMalloc __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMalloc __RPC_FAR * This);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *Alloc )(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ ULONG cb);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *Realloc )(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *Free )(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *GetSize )(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv);
+
+ int ( STDMETHODCALLTYPE __RPC_FAR *DidAlloc )(
+ IMalloc __RPC_FAR * This,
+ void __RPC_FAR *pv);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *HeapMinimize )(
+ IMalloc __RPC_FAR * This);
+
+ END_INTERFACE
+ } IMallocVtbl;
+
+ interface IMalloc
+ {
+ CONST_VTBL struct IMallocVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMalloc_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMalloc_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMalloc_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMalloc_Alloc(This,cb) \
+ (This)->lpVtbl -> Alloc(This,cb)
+
+#define IMalloc_Realloc(This,pv,cb) \
+ (This)->lpVtbl -> Realloc(This,pv,cb)
+
+#define IMalloc_Free(This,pv) \
+ (This)->lpVtbl -> Free(This,pv)
+
+#define IMalloc_GetSize(This,pv) \
+ (This)->lpVtbl -> GetSize(This,pv)
+
+#define IMalloc_DidAlloc(This,pv) \
+ (This)->lpVtbl -> DidAlloc(This,pv)
+
+#define IMalloc_HeapMinimize(This) \
+ (This)->lpVtbl -> HeapMinimize(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMalloc_Alloc_Proxy(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ ULONG cb);
+
+
+void __RPC_STUB IMalloc_Alloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMalloc_Realloc_Proxy(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb);
+
+
+void __RPC_STUB IMalloc_Realloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IMalloc_Free_Proxy(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv);
+
+
+void __RPC_STUB IMalloc_Free_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IMalloc_GetSize_Proxy(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv);
+
+
+void __RPC_STUB IMalloc_GetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+int STDMETHODCALLTYPE IMalloc_DidAlloc_Proxy(
+ IMalloc __RPC_FAR * This,
+ void __RPC_FAR *pv);
+
+
+void __RPC_STUB IMalloc_DidAlloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IMalloc_HeapMinimize_Proxy(
+ IMalloc __RPC_FAR * This);
+
+
+void __RPC_STUB IMalloc_HeapMinimize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMalloc_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMallocSpy_INTERFACE_DEFINED__
+#define __IMallocSpy_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMallocSpy
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IMallocSpy __RPC_FAR *LPMALLOCSPY;
+
+
+EXTERN_C const IID IID_IMallocSpy;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMallocSpy : public IUnknown
+ {
+ public:
+ virtual ULONG STDMETHODCALLTYPE PreAlloc(
+ /* [in] */ ULONG cbRequest) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE PostAlloc(
+ /* [in] */ void __RPC_FAR *pActual) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE PreFree(
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual void STDMETHODCALLTYPE PostFree(
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE PreRealloc(
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ ULONG cbRequest,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppNewRequest,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE PostRealloc(
+ /* [in] */ void __RPC_FAR *pActual,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE PreGetSize(
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE PostGetSize(
+ /* [in] */ ULONG cbActual,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE PreDidAlloc(
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual int STDMETHODCALLTYPE PostDidAlloc(
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed,
+ /* [in] */ int fActual) = 0;
+
+ virtual void STDMETHODCALLTYPE PreHeapMinimize( void) = 0;
+
+ virtual void STDMETHODCALLTYPE PostHeapMinimize( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMallocSpyVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMallocSpy __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMallocSpy __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *PreAlloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ ULONG cbRequest);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *PostAlloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pActual);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *PreFree )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *PostFree )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ BOOL fSpyed);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *PreRealloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ ULONG cbRequest,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppNewRequest,
+ /* [in] */ BOOL fSpyed);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *PostRealloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pActual,
+ /* [in] */ BOOL fSpyed);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *PreGetSize )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *PostGetSize )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ ULONG cbActual,
+ /* [in] */ BOOL fSpyed);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *PreDidAlloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+ int ( STDMETHODCALLTYPE __RPC_FAR *PostDidAlloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed,
+ /* [in] */ int fActual);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *PreHeapMinimize )(
+ IMallocSpy __RPC_FAR * This);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *PostHeapMinimize )(
+ IMallocSpy __RPC_FAR * This);
+
+ END_INTERFACE
+ } IMallocSpyVtbl;
+
+ interface IMallocSpy
+ {
+ CONST_VTBL struct IMallocSpyVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMallocSpy_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMallocSpy_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMallocSpy_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMallocSpy_PreAlloc(This,cbRequest) \
+ (This)->lpVtbl -> PreAlloc(This,cbRequest)
+
+#define IMallocSpy_PostAlloc(This,pActual) \
+ (This)->lpVtbl -> PostAlloc(This,pActual)
+
+#define IMallocSpy_PreFree(This,pRequest,fSpyed) \
+ (This)->lpVtbl -> PreFree(This,pRequest,fSpyed)
+
+#define IMallocSpy_PostFree(This,fSpyed) \
+ (This)->lpVtbl -> PostFree(This,fSpyed)
+
+#define IMallocSpy_PreRealloc(This,pRequest,cbRequest,ppNewRequest,fSpyed) \
+ (This)->lpVtbl -> PreRealloc(This,pRequest,cbRequest,ppNewRequest,fSpyed)
+
+#define IMallocSpy_PostRealloc(This,pActual,fSpyed) \
+ (This)->lpVtbl -> PostRealloc(This,pActual,fSpyed)
+
+#define IMallocSpy_PreGetSize(This,pRequest,fSpyed) \
+ (This)->lpVtbl -> PreGetSize(This,pRequest,fSpyed)
+
+#define IMallocSpy_PostGetSize(This,cbActual,fSpyed) \
+ (This)->lpVtbl -> PostGetSize(This,cbActual,fSpyed)
+
+#define IMallocSpy_PreDidAlloc(This,pRequest,fSpyed) \
+ (This)->lpVtbl -> PreDidAlloc(This,pRequest,fSpyed)
+
+#define IMallocSpy_PostDidAlloc(This,pRequest,fSpyed,fActual) \
+ (This)->lpVtbl -> PostDidAlloc(This,pRequest,fSpyed,fActual)
+
+#define IMallocSpy_PreHeapMinimize(This) \
+ (This)->lpVtbl -> PreHeapMinimize(This)
+
+#define IMallocSpy_PostHeapMinimize(This) \
+ (This)->lpVtbl -> PostHeapMinimize(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+ULONG STDMETHODCALLTYPE IMallocSpy_PreAlloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ ULONG cbRequest);
+
+
+void __RPC_STUB IMallocSpy_PreAlloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMallocSpy_PostAlloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pActual);
+
+
+void __RPC_STUB IMallocSpy_PostAlloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMallocSpy_PreFree_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PreFree_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IMallocSpy_PostFree_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PostFree_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IMallocSpy_PreRealloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ ULONG cbRequest,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppNewRequest,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PreRealloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMallocSpy_PostRealloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pActual,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PostRealloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMallocSpy_PreGetSize_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PreGetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IMallocSpy_PostGetSize_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ ULONG cbActual,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PostGetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PreDidAlloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+int STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed,
+ /* [in] */ int fActual);
+
+
+void __RPC_STUB IMallocSpy_PostDidAlloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Proxy(
+ IMallocSpy __RPC_FAR * This);
+
+
+void __RPC_STUB IMallocSpy_PreHeapMinimize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Proxy(
+ IMallocSpy __RPC_FAR * This);
+
+
+void __RPC_STUB IMallocSpy_PostHeapMinimize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMallocSpy_INTERFACE_DEFINED__ */
+
+
+#ifndef __IStdMarshalInfo_INTERFACE_DEFINED__
+#define __IStdMarshalInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IStdMarshalInfo
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IStdMarshalInfo __RPC_FAR *LPSTDMARSHALINFO;
+
+
+EXTERN_C const IID IID_IStdMarshalInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IStdMarshalInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetClassForHandler(
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [out] */ CLSID __RPC_FAR *pClsid) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IStdMarshalInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IStdMarshalInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IStdMarshalInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IStdMarshalInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassForHandler )(
+ IStdMarshalInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [out] */ CLSID __RPC_FAR *pClsid);
+
+ END_INTERFACE
+ } IStdMarshalInfoVtbl;
+
+ interface IStdMarshalInfo
+ {
+ CONST_VTBL struct IStdMarshalInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IStdMarshalInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IStdMarshalInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IStdMarshalInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IStdMarshalInfo_GetClassForHandler(This,dwDestContext,pvDestContext,pClsid) \
+ (This)->lpVtbl -> GetClassForHandler(This,dwDestContext,pvDestContext,pClsid)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Proxy(
+ IStdMarshalInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [out] */ CLSID __RPC_FAR *pClsid);
+
+
+void __RPC_STUB IStdMarshalInfo_GetClassForHandler_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IStdMarshalInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __IExternalConnection_INTERFACE_DEFINED__
+#define __IExternalConnection_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IExternalConnection
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][local][object] */
+
+
+typedef /* [unique] */ IExternalConnection __RPC_FAR *LPEXTERNALCONNECTION;
+
+typedef
+enum tagEXTCONN
+ { EXTCONN_STRONG = 0x1,
+ EXTCONN_WEAK = 0x2,
+ EXTCONN_CALLABLE = 0x4
+ } EXTCONN;
+
+
+EXTERN_C const IID IID_IExternalConnection;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IExternalConnection : public IUnknown
+ {
+ public:
+ virtual DWORD STDMETHODCALLTYPE AddConnection(
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved) = 0;
+
+ virtual DWORD STDMETHODCALLTYPE ReleaseConnection(
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved,
+ /* [in] */ BOOL fLastReleaseCloses) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IExternalConnectionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IExternalConnection __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IExternalConnection __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IExternalConnection __RPC_FAR * This);
+
+ DWORD ( STDMETHODCALLTYPE __RPC_FAR *AddConnection )(
+ IExternalConnection __RPC_FAR * This,
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved);
+
+ DWORD ( STDMETHODCALLTYPE __RPC_FAR *ReleaseConnection )(
+ IExternalConnection __RPC_FAR * This,
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved,
+ /* [in] */ BOOL fLastReleaseCloses);
+
+ END_INTERFACE
+ } IExternalConnectionVtbl;
+
+ interface IExternalConnection
+ {
+ CONST_VTBL struct IExternalConnectionVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IExternalConnection_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IExternalConnection_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IExternalConnection_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IExternalConnection_AddConnection(This,extconn,reserved) \
+ (This)->lpVtbl -> AddConnection(This,extconn,reserved)
+
+#define IExternalConnection_ReleaseConnection(This,extconn,reserved,fLastReleaseCloses) \
+ (This)->lpVtbl -> ReleaseConnection(This,extconn,reserved,fLastReleaseCloses)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+DWORD STDMETHODCALLTYPE IExternalConnection_AddConnection_Proxy(
+ IExternalConnection __RPC_FAR * This,
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved);
+
+
+void __RPC_STUB IExternalConnection_AddConnection_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+DWORD STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Proxy(
+ IExternalConnection __RPC_FAR * This,
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved,
+ /* [in] */ BOOL fLastReleaseCloses);
+
+
+void __RPC_STUB IExternalConnection_ReleaseConnection_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IExternalConnection_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMultiQI_INTERFACE_DEFINED__
+#define __IMultiQI_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMultiQI
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][local][object] */
+
+
+typedef /* [unique] */ IMultiQI __RPC_FAR *LPMULTIQI;
+
+typedef struct tagMULTI_QI
+ {
+ const IID __RPC_FAR *pIID;
+ IUnknown __RPC_FAR *pItf;
+ HRESULT hr;
+ } MULTI_QI;
+
+
+EXTERN_C const IID IID_IMultiQI;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMultiQI : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryMultipleInterfaces(
+ /* [in] */ ULONG cMQIs,
+ /* [out][in] */ MULTI_QI __RPC_FAR *pMQIs) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMultiQIVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMultiQI __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMultiQI __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMultiQI __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryMultipleInterfaces )(
+ IMultiQI __RPC_FAR * This,
+ /* [in] */ ULONG cMQIs,
+ /* [out][in] */ MULTI_QI __RPC_FAR *pMQIs);
+
+ END_INTERFACE
+ } IMultiQIVtbl;
+
+ interface IMultiQI
+ {
+ CONST_VTBL struct IMultiQIVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMultiQI_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMultiQI_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMultiQI_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMultiQI_QueryMultipleInterfaces(This,cMQIs,pMQIs) \
+ (This)->lpVtbl -> QueryMultipleInterfaces(This,cMQIs,pMQIs)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IMultiQI_QueryMultipleInterfaces_Proxy(
+ IMultiQI __RPC_FAR * This,
+ /* [in] */ ULONG cMQIs,
+ /* [out][in] */ MULTI_QI __RPC_FAR *pMQIs);
+
+
+void __RPC_STUB IMultiQI_QueryMultipleInterfaces_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMultiQI_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumUnknown_INTERFACE_DEFINED__
+#define __IEnumUnknown_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumUnknown
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumUnknown __RPC_FAR *LPENUMUNKNOWN;
+
+
+EXTERN_C const IID IID_IEnumUnknown;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumUnknown : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumUnknownVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumUnknown __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumUnknown __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumUnknown __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumUnknown __RPC_FAR * This,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumUnknownVtbl;
+
+ interface IEnumUnknown
+ {
+ CONST_VTBL struct IEnumUnknownVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumUnknown_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumUnknown_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumUnknown_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumUnknown_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumUnknown_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumUnknown_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumUnknown_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Proxy(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumUnknown_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Skip_Proxy(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumUnknown_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Reset_Proxy(
+ IEnumUnknown __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumUnknown_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Clone_Proxy(
+ IEnumUnknown __RPC_FAR * This,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumUnknown_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumUnknown_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBindCtx_INTERFACE_DEFINED__
+#define __IBindCtx_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IBindCtx
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IBindCtx __RPC_FAR *LPBC;
+
+typedef /* [unique] */ IBindCtx __RPC_FAR *LPBINDCTX;
+
+typedef struct tagBIND_OPTS
+ {
+ DWORD cbStruct;
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ } BIND_OPTS;
+
+typedef struct tagBIND_OPTS __RPC_FAR *LPBIND_OPTS;
+
+#if defined(__cplusplus)
+ typedef struct tagBIND_OPTS2 : tagBIND_OPTS{
+ DWORD dwTrackFlags;
+ DWORD dwClassContext;
+ LCID locale;
+ COSERVERINFO * pServerInfo;
+ } BIND_OPTS2, * LPBIND_OPTS2;
+#else
+typedef struct tagBIND_OPTS2
+ {
+ DWORD cbStruct;
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ DWORD dwTrackFlags;
+ DWORD dwClassContext;
+ LCID locale;
+ COSERVERINFO __RPC_FAR *pServerInfo;
+ } BIND_OPTS2;
+
+typedef struct tagBIND_OPTS2 __RPC_FAR *LPBIND_OPTS2;
+
+#endif
+typedef
+enum tagBIND_FLAGS
+ { BIND_MAYBOTHERUSER = 1,
+ BIND_JUSTTESTEXISTENCE = 2
+ } BIND_FLAGS;
+
+
+EXTERN_C const IID IID_IBindCtx;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IBindCtx : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RegisterObjectBound(
+ /* [unique][in] */ IUnknown __RPC_FAR *punk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevokeObjectBound(
+ /* [unique][in] */ IUnknown __RPC_FAR *punk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseBoundObjects( void) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetBindOptions(
+ /* [in] */ BIND_OPTS __RPC_FAR *pbindopts) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetBindOptions(
+ /* [out][in] */ BIND_OPTS __RPC_FAR *pbindopts) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRunningObjectTable(
+ /* [out] */ IRunningObjectTable __RPC_FAR *__RPC_FAR *pprot) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RegisterObjectParam(
+ /* [in] */ LPOLESTR pszKey,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetObjectParam(
+ /* [in] */ LPOLESTR pszKey,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumObjectParam(
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevokeObjectParam(
+ /* [in] */ LPOLESTR pszKey) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IBindCtxVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IBindCtx __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IBindCtx __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RegisterObjectBound )(
+ IBindCtx __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RevokeObjectBound )(
+ IBindCtx __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseBoundObjects )(
+ IBindCtx __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetBindOptions )(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ BIND_OPTS __RPC_FAR *pbindopts);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBindOptions )(
+ IBindCtx __RPC_FAR * This,
+ /* [out][in] */ BIND_OPTS __RPC_FAR *pbindopts);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRunningObjectTable )(
+ IBindCtx __RPC_FAR * This,
+ /* [out] */ IRunningObjectTable __RPC_FAR *__RPC_FAR *pprot);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RegisterObjectParam )(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetObjectParam )(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumObjectParam )(
+ IBindCtx __RPC_FAR * This,
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RevokeObjectParam )(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey);
+
+ END_INTERFACE
+ } IBindCtxVtbl;
+
+ interface IBindCtx
+ {
+ CONST_VTBL struct IBindCtxVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IBindCtx_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IBindCtx_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IBindCtx_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IBindCtx_RegisterObjectBound(This,punk) \
+ (This)->lpVtbl -> RegisterObjectBound(This,punk)
+
+#define IBindCtx_RevokeObjectBound(This,punk) \
+ (This)->lpVtbl -> RevokeObjectBound(This,punk)
+
+#define IBindCtx_ReleaseBoundObjects(This) \
+ (This)->lpVtbl -> ReleaseBoundObjects(This)
+
+#define IBindCtx_SetBindOptions(This,pbindopts) \
+ (This)->lpVtbl -> SetBindOptions(This,pbindopts)
+
+#define IBindCtx_GetBindOptions(This,pbindopts) \
+ (This)->lpVtbl -> GetBindOptions(This,pbindopts)
+
+#define IBindCtx_GetRunningObjectTable(This,pprot) \
+ (This)->lpVtbl -> GetRunningObjectTable(This,pprot)
+
+#define IBindCtx_RegisterObjectParam(This,pszKey,punk) \
+ (This)->lpVtbl -> RegisterObjectParam(This,pszKey,punk)
+
+#define IBindCtx_GetObjectParam(This,pszKey,ppunk) \
+ (This)->lpVtbl -> GetObjectParam(This,pszKey,ppunk)
+
+#define IBindCtx_EnumObjectParam(This,ppenum) \
+ (This)->lpVtbl -> EnumObjectParam(This,ppenum)
+
+#define IBindCtx_RevokeObjectParam(This,pszKey) \
+ (This)->lpVtbl -> RevokeObjectParam(This,pszKey)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+
+void __RPC_STUB IBindCtx_RegisterObjectBound_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+
+void __RPC_STUB IBindCtx_RevokeObjectBound_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Proxy(
+ IBindCtx __RPC_FAR * This);
+
+
+void __RPC_STUB IBindCtx_ReleaseBoundObjects_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindCtx_RemoteSetBindOptions_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ BIND_OPTS2 __RPC_FAR *pbindopts);
+
+
+void __RPC_STUB IBindCtx_RemoteSetBindOptions_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindCtx_RemoteGetBindOptions_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [out][in] */ BIND_OPTS2 __RPC_FAR *pbindopts);
+
+
+void __RPC_STUB IBindCtx_RemoteGetBindOptions_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [out] */ IRunningObjectTable __RPC_FAR *__RPC_FAR *pprot);
+
+
+void __RPC_STUB IBindCtx_GetRunningObjectTable_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+
+void __RPC_STUB IBindCtx_RegisterObjectParam_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_GetObjectParam_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+
+void __RPC_STUB IBindCtx_GetObjectParam_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IBindCtx_EnumObjectParam_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey);
+
+
+void __RPC_STUB IBindCtx_RevokeObjectParam_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IBindCtx_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumMoniker_INTERFACE_DEFINED__
+#define __IEnumMoniker_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumMoniker
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumMoniker __RPC_FAR *LPENUMMONIKER;
+
+
+EXTERN_C const IID IID_IEnumMoniker;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumMoniker : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumMonikerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumMoniker __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumMoniker __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumMoniker __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumMoniker __RPC_FAR * This,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumMonikerVtbl;
+
+ interface IEnumMoniker
+ {
+ CONST_VTBL struct IEnumMonikerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumMoniker_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumMoniker_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumMoniker_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumMoniker_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumMoniker_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumMoniker_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumMoniker_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Proxy(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumMoniker_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Skip_Proxy(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumMoniker_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Reset_Proxy(
+ IEnumMoniker __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumMoniker_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Clone_Proxy(
+ IEnumMoniker __RPC_FAR * This,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumMoniker_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumMoniker_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRunnableObject_INTERFACE_DEFINED__
+#define __IRunnableObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRunnableObject
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IRunnableObject __RPC_FAR *LPRUNNABLEOBJECT;
+
+
+EXTERN_C const IID IID_IRunnableObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRunnableObject : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetRunningClass(
+ /* [out] */ LPCLSID lpClsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Run(
+ /* [in] */ LPBINDCTX pbc) = 0;
+
+ virtual /* [local] */ BOOL STDMETHODCALLTYPE IsRunning( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockRunning(
+ /* [in] */ BOOL fLock,
+ /* [in] */ BOOL fLastUnlockCloses) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetContainedObject(
+ /* [in] */ BOOL fContained) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRunnableObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRunnableObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRunnableObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRunningClass )(
+ IRunnableObject __RPC_FAR * This,
+ /* [out] */ LPCLSID lpClsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Run )(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ LPBINDCTX pbc);
+
+ /* [local] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *IsRunning )(
+ IRunnableObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockRunning )(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ BOOL fLock,
+ /* [in] */ BOOL fLastUnlockCloses);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetContainedObject )(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ BOOL fContained);
+
+ END_INTERFACE
+ } IRunnableObjectVtbl;
+
+ interface IRunnableObject
+ {
+ CONST_VTBL struct IRunnableObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRunnableObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRunnableObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRunnableObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRunnableObject_GetRunningClass(This,lpClsid) \
+ (This)->lpVtbl -> GetRunningClass(This,lpClsid)
+
+#define IRunnableObject_Run(This,pbc) \
+ (This)->lpVtbl -> Run(This,pbc)
+
+#define IRunnableObject_IsRunning(This) \
+ (This)->lpVtbl -> IsRunning(This)
+
+#define IRunnableObject_LockRunning(This,fLock,fLastUnlockCloses) \
+ (This)->lpVtbl -> LockRunning(This,fLock,fLastUnlockCloses)
+
+#define IRunnableObject_SetContainedObject(This,fContained) \
+ (This)->lpVtbl -> SetContainedObject(This,fContained)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Proxy(
+ IRunnableObject __RPC_FAR * This,
+ /* [out] */ LPCLSID lpClsid);
+
+
+void __RPC_STUB IRunnableObject_GetRunningClass_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunnableObject_Run_Proxy(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ LPBINDCTX pbc);
+
+
+void __RPC_STUB IRunnableObject_Run_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IRunnableObject_RemoteIsRunning_Proxy(
+ IRunnableObject __RPC_FAR * This);
+
+
+void __RPC_STUB IRunnableObject_RemoteIsRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunnableObject_LockRunning_Proxy(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ BOOL fLock,
+ /* [in] */ BOOL fLastUnlockCloses);
+
+
+void __RPC_STUB IRunnableObject_LockRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Proxy(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ BOOL fContained);
+
+
+void __RPC_STUB IRunnableObject_SetContainedObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRunnableObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRunningObjectTable_INTERFACE_DEFINED__
+#define __IRunningObjectTable_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRunningObjectTable
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IRunningObjectTable __RPC_FAR *LPRUNNINGOBJECTTABLE;
+
+
+EXTERN_C const IID IID_IRunningObjectTable;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRunningObjectTable : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Register(
+ /* [in] */ DWORD grfFlags,
+ /* [unique][in] */ IUnknown __RPC_FAR *punkObject,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ DWORD __RPC_FAR *pdwRegister) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Revoke(
+ /* [in] */ DWORD dwRegister) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsRunning(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetObject(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunkObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE NoteChangeTime(
+ /* [in] */ DWORD dwRegister,
+ /* [in] */ FILETIME __RPC_FAR *pfiletime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ FILETIME __RPC_FAR *pfiletime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumRunning(
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRunningObjectTableVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRunningObjectTable __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRunningObjectTable __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Register )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [unique][in] */ IUnknown __RPC_FAR *punkObject,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ DWORD __RPC_FAR *pdwRegister);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Revoke )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD dwRegister);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsRunning )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetObject )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunkObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *NoteChangeTime )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD dwRegister,
+ /* [in] */ FILETIME __RPC_FAR *pfiletime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTimeOfLastChange )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ FILETIME __RPC_FAR *pfiletime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumRunning )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker);
+
+ END_INTERFACE
+ } IRunningObjectTableVtbl;
+
+ interface IRunningObjectTable
+ {
+ CONST_VTBL struct IRunningObjectTableVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRunningObjectTable_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRunningObjectTable_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRunningObjectTable_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRunningObjectTable_Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) \
+ (This)->lpVtbl -> Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister)
+
+#define IRunningObjectTable_Revoke(This,dwRegister) \
+ (This)->lpVtbl -> Revoke(This,dwRegister)
+
+#define IRunningObjectTable_IsRunning(This,pmkObjectName) \
+ (This)->lpVtbl -> IsRunning(This,pmkObjectName)
+
+#define IRunningObjectTable_GetObject(This,pmkObjectName,ppunkObject) \
+ (This)->lpVtbl -> GetObject(This,pmkObjectName,ppunkObject)
+
+#define IRunningObjectTable_NoteChangeTime(This,dwRegister,pfiletime) \
+ (This)->lpVtbl -> NoteChangeTime(This,dwRegister,pfiletime)
+
+#define IRunningObjectTable_GetTimeOfLastChange(This,pmkObjectName,pfiletime) \
+ (This)->lpVtbl -> GetTimeOfLastChange(This,pmkObjectName,pfiletime)
+
+#define IRunningObjectTable_EnumRunning(This,ppenumMoniker) \
+ (This)->lpVtbl -> EnumRunning(This,ppenumMoniker)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_Register_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [unique][in] */ IUnknown __RPC_FAR *punkObject,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ DWORD __RPC_FAR *pdwRegister);
+
+
+void __RPC_STUB IRunningObjectTable_Register_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_Revoke_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD dwRegister);
+
+
+void __RPC_STUB IRunningObjectTable_Revoke_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName);
+
+
+void __RPC_STUB IRunningObjectTable_IsRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetObject_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunkObject);
+
+
+void __RPC_STUB IRunningObjectTable_GetObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD dwRegister,
+ /* [in] */ FILETIME __RPC_FAR *pfiletime);
+
+
+void __RPC_STUB IRunningObjectTable_NoteChangeTime_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ FILETIME __RPC_FAR *pfiletime);
+
+
+void __RPC_STUB IRunningObjectTable_GetTimeOfLastChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker);
+
+
+void __RPC_STUB IRunningObjectTable_EnumRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRunningObjectTable_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersist_INTERFACE_DEFINED__
+#define __IPersist_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersist
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IPersist __RPC_FAR *LPPERSIST;
+
+
+EXTERN_C const IID IID_IPersist;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersist : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetClassID(
+ /* [out] */ CLSID __RPC_FAR *pClassID) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersist __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersist __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersist __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersist __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ END_INTERFACE
+ } IPersistVtbl;
+
+ interface IPersist
+ {
+ CONST_VTBL struct IPersistVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersist_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersist_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersist_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersist_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersist_GetClassID_Proxy(
+ IPersist __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+
+void __RPC_STUB IPersist_GetClassID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersist_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersistStream_INTERFACE_DEFINED__
+#define __IPersistStream_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersistStream
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPersistStream __RPC_FAR *LPPERSISTSTREAM;
+
+
+EXTERN_C const IID IID_IPersistStream;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersistStream : public IPersist
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Load(
+ /* [unique][in] */ IStream __RPC_FAR *pStm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Save(
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ BOOL fClearDirty) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSizeMax(
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbSize) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistStreamVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersistStream __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersistStream __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersistStream __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersistStream __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IPersistStream __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IPersistStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IPersistStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ BOOL fClearDirty);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSizeMax )(
+ IPersistStream __RPC_FAR * This,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbSize);
+
+ END_INTERFACE
+ } IPersistStreamVtbl;
+
+ interface IPersistStream
+ {
+ CONST_VTBL struct IPersistStreamVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersistStream_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersistStream_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersistStream_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersistStream_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IPersistStream_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IPersistStream_Load(This,pStm) \
+ (This)->lpVtbl -> Load(This,pStm)
+
+#define IPersistStream_Save(This,pStm,fClearDirty) \
+ (This)->lpVtbl -> Save(This,pStm,fClearDirty)
+
+#define IPersistStream_GetSizeMax(This,pcbSize) \
+ (This)->lpVtbl -> GetSizeMax(This,pcbSize)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersistStream_IsDirty_Proxy(
+ IPersistStream __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistStream_IsDirty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStream_Load_Proxy(
+ IPersistStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm);
+
+
+void __RPC_STUB IPersistStream_Load_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStream_Save_Proxy(
+ IPersistStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ BOOL fClearDirty);
+
+
+void __RPC_STUB IPersistStream_Save_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStream_GetSizeMax_Proxy(
+ IPersistStream __RPC_FAR * This,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbSize);
+
+
+void __RPC_STUB IPersistStream_GetSizeMax_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersistStream_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMoniker_INTERFACE_DEFINED__
+#define __IMoniker_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMoniker
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IMoniker __RPC_FAR *LPMONIKER;
+
+typedef
+enum tagMKSYS
+ { MKSYS_NONE = 0,
+ MKSYS_GENERICCOMPOSITE = 1,
+ MKSYS_FILEMONIKER = 2,
+ MKSYS_ANTIMONIKER = 3,
+ MKSYS_ITEMMONIKER = 4,
+ MKSYS_POINTERMONIKER = 5,
+ MKSYS_CLASSMONIKER = 7
+ } MKSYS;
+
+typedef /* [v1_enum] */
+enum tagMKREDUCE
+ { MKRREDUCE_ONE = 3 << 16,
+ MKRREDUCE_TOUSER = 2 << 16,
+ MKRREDUCE_THROUGHUSER = 1 << 16,
+ MKRREDUCE_ALL = 0
+ } MKRREDUCE;
+
+
+EXTERN_C const IID IID_IMoniker;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMoniker : public IPersistStream
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE BindToObject(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE BindToStorage(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObj) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reduce(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ DWORD dwReduceHowFar,
+ /* [unique][out][in] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkToLeft,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkReduced) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ComposeWith(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkRight,
+ /* [in] */ BOOL fOnlyIfNotGeneric,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkComposite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Enum(
+ /* [in] */ BOOL fForward,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsEqual(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOtherMoniker) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Hash(
+ /* [out] */ DWORD __RPC_FAR *pdwHash) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsRunning(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkNewlyRunning) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ FILETIME __RPC_FAR *pFileTime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Inverse(
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CommonPrefixWith(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkPrefix) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RelativePathTo(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkRelPath) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsSystemMoniker(
+ /* [out] */ DWORD __RPC_FAR *pdwMksys) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMonikerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMoniker __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMoniker __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMoniker __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IMoniker __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ BOOL fClearDirty);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSizeMax )(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbSize);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BindToObject )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BindToStorage )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reduce )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ DWORD dwReduceHowFar,
+ /* [unique][out][in] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkToLeft,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkReduced);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ComposeWith )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkRight,
+ /* [in] */ BOOL fOnlyIfNotGeneric,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkComposite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Enum )(
+ IMoniker __RPC_FAR * This,
+ /* [in] */ BOOL fForward,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsEqual )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOtherMoniker);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Hash )(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwHash);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsRunning )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkNewlyRunning);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTimeOfLastChange )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ FILETIME __RPC_FAR *pFileTime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Inverse )(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CommonPrefixWith )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkPrefix);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RelativePathTo )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkRelPath);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDisplayName )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ParseDisplayName )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsSystemMoniker )(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwMksys);
+
+ END_INTERFACE
+ } IMonikerVtbl;
+
+ interface IMoniker
+ {
+ CONST_VTBL struct IMonikerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMoniker_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMoniker_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMoniker_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMoniker_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IMoniker_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IMoniker_Load(This,pStm) \
+ (This)->lpVtbl -> Load(This,pStm)
+
+#define IMoniker_Save(This,pStm,fClearDirty) \
+ (This)->lpVtbl -> Save(This,pStm,fClearDirty)
+
+#define IMoniker_GetSizeMax(This,pcbSize) \
+ (This)->lpVtbl -> GetSizeMax(This,pcbSize)
+
+
+#define IMoniker_BindToObject(This,pbc,pmkToLeft,riidResult,ppvResult) \
+ (This)->lpVtbl -> BindToObject(This,pbc,pmkToLeft,riidResult,ppvResult)
+
+#define IMoniker_BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) \
+ (This)->lpVtbl -> BindToStorage(This,pbc,pmkToLeft,riid,ppvObj)
+
+#define IMoniker_Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced) \
+ (This)->lpVtbl -> Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced)
+
+#define IMoniker_ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) \
+ (This)->lpVtbl -> ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite)
+
+#define IMoniker_Enum(This,fForward,ppenumMoniker) \
+ (This)->lpVtbl -> Enum(This,fForward,ppenumMoniker)
+
+#define IMoniker_IsEqual(This,pmkOtherMoniker) \
+ (This)->lpVtbl -> IsEqual(This,pmkOtherMoniker)
+
+#define IMoniker_Hash(This,pdwHash) \
+ (This)->lpVtbl -> Hash(This,pdwHash)
+
+#define IMoniker_IsRunning(This,pbc,pmkToLeft,pmkNewlyRunning) \
+ (This)->lpVtbl -> IsRunning(This,pbc,pmkToLeft,pmkNewlyRunning)
+
+#define IMoniker_GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) \
+ (This)->lpVtbl -> GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime)
+
+#define IMoniker_Inverse(This,ppmk) \
+ (This)->lpVtbl -> Inverse(This,ppmk)
+
+#define IMoniker_CommonPrefixWith(This,pmkOther,ppmkPrefix) \
+ (This)->lpVtbl -> CommonPrefixWith(This,pmkOther,ppmkPrefix)
+
+#define IMoniker_RelativePathTo(This,pmkOther,ppmkRelPath) \
+ (This)->lpVtbl -> RelativePathTo(This,pmkOther,ppmkRelPath)
+
+#define IMoniker_GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) \
+ (This)->lpVtbl -> GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName)
+
+#define IMoniker_ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) \
+ (This)->lpVtbl -> ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut)
+
+#define IMoniker_IsSystemMoniker(This,pdwMksys) \
+ (This)->lpVtbl -> IsSystemMoniker(This,pdwMksys)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvResult);
+
+
+void __RPC_STUB IMoniker_RemoteBindToObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+void __RPC_STUB IMoniker_RemoteBindToStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_Reduce_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ DWORD dwReduceHowFar,
+ /* [unique][out][in] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkToLeft,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkReduced);
+
+
+void __RPC_STUB IMoniker_Reduce_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_ComposeWith_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkRight,
+ /* [in] */ BOOL fOnlyIfNotGeneric,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkComposite);
+
+
+void __RPC_STUB IMoniker_ComposeWith_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_Enum_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [in] */ BOOL fForward,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker);
+
+
+void __RPC_STUB IMoniker_Enum_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_IsEqual_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOtherMoniker);
+
+
+void __RPC_STUB IMoniker_IsEqual_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_Hash_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwHash);
+
+
+void __RPC_STUB IMoniker_Hash_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_IsRunning_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkNewlyRunning);
+
+
+void __RPC_STUB IMoniker_IsRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ FILETIME __RPC_FAR *pFileTime);
+
+
+void __RPC_STUB IMoniker_GetTimeOfLastChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_Inverse_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IMoniker_Inverse_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkPrefix);
+
+
+void __RPC_STUB IMoniker_CommonPrefixWith_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_RelativePathTo_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkRelPath);
+
+
+void __RPC_STUB IMoniker_RelativePathTo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_GetDisplayName_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName);
+
+
+void __RPC_STUB IMoniker_GetDisplayName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_ParseDisplayName_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+
+void __RPC_STUB IMoniker_ParseDisplayName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwMksys);
+
+
+void __RPC_STUB IMoniker_IsSystemMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMoniker_INTERFACE_DEFINED__ */
+
+
+#ifndef __IROTData_INTERFACE_DEFINED__
+#define __IROTData_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IROTData
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IROTData;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IROTData : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetComparisonData(
+ /* [size_is][out] */ byte __RPC_FAR *pbData,
+ /* [in] */ ULONG cbMax,
+ /* [out] */ ULONG __RPC_FAR *pcbData) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IROTDataVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IROTData __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IROTData __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IROTData __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetComparisonData )(
+ IROTData __RPC_FAR * This,
+ /* [size_is][out] */ byte __RPC_FAR *pbData,
+ /* [in] */ ULONG cbMax,
+ /* [out] */ ULONG __RPC_FAR *pcbData);
+
+ END_INTERFACE
+ } IROTDataVtbl;
+
+ interface IROTData
+ {
+ CONST_VTBL struct IROTDataVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IROTData_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IROTData_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IROTData_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IROTData_GetComparisonData(This,pbData,cbMax,pcbData) \
+ (This)->lpVtbl -> GetComparisonData(This,pbData,cbMax,pcbData)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IROTData_GetComparisonData_Proxy(
+ IROTData __RPC_FAR * This,
+ /* [size_is][out] */ byte __RPC_FAR *pbData,
+ /* [in] */ ULONG cbMax,
+ /* [out] */ ULONG __RPC_FAR *pcbData);
+
+
+void __RPC_STUB IROTData_GetComparisonData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IROTData_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumString_INTERFACE_DEFINED__
+#define __IEnumString_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumString
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumString __RPC_FAR *LPENUMSTRING;
+
+
+EXTERN_C const IID IID_IEnumString;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumString : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLESTR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumStringVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumString __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumString __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLESTR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumString __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumString __RPC_FAR * This,
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumStringVtbl;
+
+ interface IEnumString
+ {
+ CONST_VTBL struct IEnumStringVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumString_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumString_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumString_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumString_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumString_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumString_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumString_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumString_RemoteNext_Proxy(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLESTR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumString_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumString_Skip_Proxy(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumString_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumString_Reset_Proxy(
+ IEnumString __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumString_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumString_Clone_Proxy(
+ IEnumString __RPC_FAR * This,
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumString_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumString_INTERFACE_DEFINED__ */
+
+
+#ifndef __ISequentialStream_INTERFACE_DEFINED__
+#define __ISequentialStream_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISequentialStream
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ISequentialStream;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISequentialStream : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Read(
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Write(
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISequentialStreamVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISequentialStream __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISequentialStream __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISequentialStream __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Read )(
+ ISequentialStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Write )(
+ ISequentialStream __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ END_INTERFACE
+ } ISequentialStreamVtbl;
+
+ interface ISequentialStream
+ {
+ CONST_VTBL struct ISequentialStreamVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISequentialStream_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISequentialStream_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISequentialStream_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISequentialStream_Read(This,pv,cb,pcbRead) \
+ (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
+
+#define ISequentialStream_Write(This,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ISequentialStream_RemoteRead_Proxy(
+ ISequentialStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+
+void __RPC_STUB ISequentialStream_RemoteRead_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ISequentialStream_RemoteWrite_Proxy(
+ ISequentialStream __RPC_FAR * This,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+void __RPC_STUB ISequentialStream_RemoteWrite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISequentialStream_INTERFACE_DEFINED__ */
+
+
+#ifndef __IStream_INTERFACE_DEFINED__
+#define __IStream_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IStream
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IStream __RPC_FAR *LPSTREAM;
+
+typedef struct tagSTATSTG
+ {
+ LPOLESTR pwcsName;
+ DWORD type;
+ ULARGE_INTEGER cbSize;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD grfMode;
+ DWORD grfLocksSupported;
+ CLSID clsid;
+ DWORD grfStateBits;
+ DWORD reserved;
+ } STATSTG;
+
+typedef
+enum tagSTGTY
+ { STGTY_STORAGE = 1,
+ STGTY_STREAM = 2,
+ STGTY_LOCKBYTES = 3,
+ STGTY_PROPERTY = 4
+ } STGTY;
+
+typedef
+enum tagSTREAM_SEEK
+ { STREAM_SEEK_SET = 0,
+ STREAM_SEEK_CUR = 1,
+ STREAM_SEEK_END = 2
+ } STREAM_SEEK;
+
+typedef
+enum tagLOCKTYPE
+ { LOCK_WRITE = 1,
+ LOCK_EXCLUSIVE = 2,
+ LOCK_ONLYONCE = 4
+ } LOCKTYPE;
+
+
+EXTERN_C const IID IID_IStream;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IStream : public ISequentialStream
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Seek(
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSize(
+ /* [in] */ ULARGE_INTEGER libNewSize) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE CopyTo(
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Commit(
+ /* [in] */ DWORD grfCommitFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockRegion(
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Stat(
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IStreamVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IStream __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IStream __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IStream __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Read )(
+ IStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Write )(
+ IStream __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Seek )(
+ IStream __RPC_FAR * This,
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSize )(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libNewSize);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CopyTo )(
+ IStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ IStream __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Revert )(
+ IStream __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockRegion )(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UnlockRegion )(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stat )(
+ IStream __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IStream __RPC_FAR * This,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+ END_INTERFACE
+ } IStreamVtbl;
+
+ interface IStream
+ {
+ CONST_VTBL struct IStreamVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IStream_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IStream_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IStream_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IStream_Read(This,pv,cb,pcbRead) \
+ (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
+
+#define IStream_Write(This,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
+
+
+#define IStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) \
+ (This)->lpVtbl -> Seek(This,dlibMove,dwOrigin,plibNewPosition)
+
+#define IStream_SetSize(This,libNewSize) \
+ (This)->lpVtbl -> SetSize(This,libNewSize)
+
+#define IStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) \
+ (This)->lpVtbl -> CopyTo(This,pstm,cb,pcbRead,pcbWritten)
+
+#define IStream_Commit(This,grfCommitFlags) \
+ (This)->lpVtbl -> Commit(This,grfCommitFlags)
+
+#define IStream_Revert(This) \
+ (This)->lpVtbl -> Revert(This)
+
+#define IStream_LockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
+
+#define IStream_UnlockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
+
+#define IStream_Stat(This,pstatstg,grfStatFlag) \
+ (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
+
+#define IStream_Clone(This,ppstm) \
+ (This)->lpVtbl -> Clone(This,ppstm)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStream_RemoteSeek_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition);
+
+
+void __RPC_STUB IStream_RemoteSeek_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_SetSize_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libNewSize);
+
+
+void __RPC_STUB IStream_SetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStream_RemoteCopyTo_Proxy(
+ IStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten);
+
+
+void __RPC_STUB IStream_RemoteCopyTo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_Commit_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+
+void __RPC_STUB IStream_Commit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_Revert_Proxy(
+ IStream __RPC_FAR * This);
+
+
+void __RPC_STUB IStream_Revert_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_LockRegion_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+
+void __RPC_STUB IStream_LockRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_UnlockRegion_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+
+void __RPC_STUB IStream_UnlockRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_Stat_Proxy(
+ IStream __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+
+void __RPC_STUB IStream_Stat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_Clone_Proxy(
+ IStream __RPC_FAR * This,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+
+void __RPC_STUB IStream_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IStream_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumSTATSTG_INTERFACE_DEFINED__
+#define __IEnumSTATSTG_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumSTATSTG
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumSTATSTG __RPC_FAR *LPENUMSTATSTG;
+
+
+EXTERN_C const IID IID_IEnumSTATSTG;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumSTATSTG : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumSTATSTGVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumSTATSTG __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumSTATSTG __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumSTATSTG __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumSTATSTGVtbl;
+
+ interface IEnumSTATSTG
+ {
+ CONST_VTBL struct IEnumSTATSTGVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumSTATSTG_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumSTATSTG_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumSTATSTG_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumSTATSTG_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumSTATSTG_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumSTATSTG_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumSTATSTG_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Proxy(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumSTATSTG_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Skip_Proxy(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumSTATSTG_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Reset_Proxy(
+ IEnumSTATSTG __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumSTATSTG_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Clone_Proxy(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumSTATSTG_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumSTATSTG_INTERFACE_DEFINED__ */
+
+
+#ifndef __IStorage_INTERFACE_DEFINED__
+#define __IStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IStorage
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IStorage __RPC_FAR *LPSTORAGE;
+
+typedef struct tagRemSNB
+ {
+ unsigned long ulCntStr;
+ unsigned long ulCntChar;
+ /* [size_is] */ OLECHAR rgString[ 1 ];
+ } RemSNB;
+
+typedef /* [unique] */ RemSNB __RPC_FAR *wireSNB;
+
+typedef /* [wire_marshal] */ OLECHAR __RPC_FAR *__RPC_FAR *SNB;
+
+
+EXTERN_C const IID IID_IStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateStream(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved1,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE OpenStream(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ void __RPC_FAR *reserved1,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateStorage(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD dwStgFmt,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OpenStorage(
+ /* [string][unique][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgPriority,
+ /* [in] */ DWORD grfMode,
+ /* [unique][in] */ SNB snbExclude,
+ /* [in] */ DWORD reserved,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CopyTo(
+ /* [in] */ DWORD ciidExclude,
+ /* [size_is][unique][in] */ const IID __RPC_FAR *rgiidExclude,
+ /* [unique][in] */ SNB snbExclude,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MoveElementTo(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName,
+ /* [in] */ DWORD grfFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Commit(
+ /* [in] */ DWORD grfCommitFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE EnumElements(
+ /* [in] */ DWORD reserved1,
+ /* [size_is][unique][in] */ void __RPC_FAR *reserved2,
+ /* [in] */ DWORD reserved3,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DestroyElement(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RenameElement(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsOldName,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetElementTimes(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetClass(
+ /* [in] */ REFCLSID clsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetStateBits(
+ /* [in] */ DWORD grfStateBits,
+ /* [in] */ DWORD grfMask) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Stat(
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateStream )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved1,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OpenStream )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ void __RPC_FAR *reserved1,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateStorage )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD dwStgFmt,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OpenStorage )(
+ IStorage __RPC_FAR * This,
+ /* [string][unique][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgPriority,
+ /* [in] */ DWORD grfMode,
+ /* [unique][in] */ SNB snbExclude,
+ /* [in] */ DWORD reserved,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CopyTo )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD ciidExclude,
+ /* [size_is][unique][in] */ const IID __RPC_FAR *rgiidExclude,
+ /* [unique][in] */ SNB snbExclude,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *MoveElementTo )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName,
+ /* [in] */ DWORD grfFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Revert )(
+ IStorage __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumElements )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD reserved1,
+ /* [size_is][unique][in] */ void __RPC_FAR *reserved2,
+ /* [in] */ DWORD reserved3,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DestroyElement )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RenameElement )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsOldName,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetElementTimes )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetClass )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ REFCLSID clsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetStateBits )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfStateBits,
+ /* [in] */ DWORD grfMask);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stat )(
+ IStorage __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+ END_INTERFACE
+ } IStorageVtbl;
+
+ interface IStorage
+ {
+ CONST_VTBL struct IStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IStorage_CreateStream(This,pwcsName,grfMode,reserved1,reserved2,ppstm) \
+ (This)->lpVtbl -> CreateStream(This,pwcsName,grfMode,reserved1,reserved2,ppstm)
+
+#define IStorage_OpenStream(This,pwcsName,reserved1,grfMode,reserved2,ppstm) \
+ (This)->lpVtbl -> OpenStream(This,pwcsName,reserved1,grfMode,reserved2,ppstm)
+
+#define IStorage_CreateStorage(This,pwcsName,grfMode,dwStgFmt,reserved2,ppstg) \
+ (This)->lpVtbl -> CreateStorage(This,pwcsName,grfMode,dwStgFmt,reserved2,ppstg)
+
+#define IStorage_OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) \
+ (This)->lpVtbl -> OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg)
+
+#define IStorage_CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) \
+ (This)->lpVtbl -> CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest)
+
+#define IStorage_MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) \
+ (This)->lpVtbl -> MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags)
+
+#define IStorage_Commit(This,grfCommitFlags) \
+ (This)->lpVtbl -> Commit(This,grfCommitFlags)
+
+#define IStorage_Revert(This) \
+ (This)->lpVtbl -> Revert(This)
+
+#define IStorage_EnumElements(This,reserved1,reserved2,reserved3,ppenum) \
+ (This)->lpVtbl -> EnumElements(This,reserved1,reserved2,reserved3,ppenum)
+
+#define IStorage_DestroyElement(This,pwcsName) \
+ (This)->lpVtbl -> DestroyElement(This,pwcsName)
+
+#define IStorage_RenameElement(This,pwcsOldName,pwcsNewName) \
+ (This)->lpVtbl -> RenameElement(This,pwcsOldName,pwcsNewName)
+
+#define IStorage_SetElementTimes(This,pwcsName,pctime,patime,pmtime) \
+ (This)->lpVtbl -> SetElementTimes(This,pwcsName,pctime,patime,pmtime)
+
+#define IStorage_SetClass(This,clsid) \
+ (This)->lpVtbl -> SetClass(This,clsid)
+
+#define IStorage_SetStateBits(This,grfStateBits,grfMask) \
+ (This)->lpVtbl -> SetStateBits(This,grfStateBits,grfMask)
+
+#define IStorage_Stat(This,pstatstg,grfStatFlag) \
+ (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IStorage_CreateStream_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved1,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+
+void __RPC_STUB IStorage_CreateStream_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStorage_RemoteOpenStream_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ unsigned long cbReserved1,
+ /* [size_is][unique][in] */ byte __RPC_FAR *reserved1,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+
+void __RPC_STUB IStorage_RemoteOpenStream_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_CreateStorage_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD dwStgFmt,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg);
+
+
+void __RPC_STUB IStorage_CreateStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_OpenStorage_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][unique][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgPriority,
+ /* [in] */ DWORD grfMode,
+ /* [unique][in] */ SNB snbExclude,
+ /* [in] */ DWORD reserved,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg);
+
+
+void __RPC_STUB IStorage_OpenStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_CopyTo_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD ciidExclude,
+ /* [size_is][unique][in] */ const IID __RPC_FAR *rgiidExclude,
+ /* [unique][in] */ SNB snbExclude,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest);
+
+
+void __RPC_STUB IStorage_CopyTo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_MoveElementTo_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName,
+ /* [in] */ DWORD grfFlags);
+
+
+void __RPC_STUB IStorage_MoveElementTo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_Commit_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+
+void __RPC_STUB IStorage_Commit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_Revert_Proxy(
+ IStorage __RPC_FAR * This);
+
+
+void __RPC_STUB IStorage_Revert_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStorage_RemoteEnumElements_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD reserved1,
+ /* [in] */ unsigned long cbReserved2,
+ /* [size_is][unique][in] */ byte __RPC_FAR *reserved2,
+ /* [in] */ DWORD reserved3,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IStorage_RemoteEnumElements_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_DestroyElement_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName);
+
+
+void __RPC_STUB IStorage_DestroyElement_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_RenameElement_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsOldName,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName);
+
+
+void __RPC_STUB IStorage_RenameElement_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_SetElementTimes_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime);
+
+
+void __RPC_STUB IStorage_SetElementTimes_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_SetClass_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ REFCLSID clsid);
+
+
+void __RPC_STUB IStorage_SetClass_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_SetStateBits_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfStateBits,
+ /* [in] */ DWORD grfMask);
+
+
+void __RPC_STUB IStorage_SetStateBits_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_Stat_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+
+void __RPC_STUB IStorage_Stat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersistFile_INTERFACE_DEFINED__
+#define __IPersistFile_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersistFile
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPersistFile __RPC_FAR *LPPERSISTFILE;
+
+
+EXTERN_C const IID IID_IPersistFile;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersistFile : public IPersist
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Load(
+ /* [in] */ LPCOLESTR pszFileName,
+ /* [in] */ DWORD dwMode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Save(
+ /* [unique][in] */ LPCOLESTR pszFileName,
+ /* [in] */ BOOL fRemember) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
+ /* [unique][in] */ LPCOLESTR pszFileName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCurFile(
+ /* [out] */ LPOLESTR __RPC_FAR *ppszFileName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistFileVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersistFile __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersistFile __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersistFile __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersistFile __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IPersistFile __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IPersistFile __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszFileName,
+ /* [in] */ DWORD dwMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IPersistFile __RPC_FAR * This,
+ /* [unique][in] */ LPCOLESTR pszFileName,
+ /* [in] */ BOOL fRemember);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveCompleted )(
+ IPersistFile __RPC_FAR * This,
+ /* [unique][in] */ LPCOLESTR pszFileName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCurFile )(
+ IPersistFile __RPC_FAR * This,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszFileName);
+
+ END_INTERFACE
+ } IPersistFileVtbl;
+
+ interface IPersistFile
+ {
+ CONST_VTBL struct IPersistFileVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersistFile_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersistFile_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersistFile_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersistFile_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IPersistFile_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IPersistFile_Load(This,pszFileName,dwMode) \
+ (This)->lpVtbl -> Load(This,pszFileName,dwMode)
+
+#define IPersistFile_Save(This,pszFileName,fRemember) \
+ (This)->lpVtbl -> Save(This,pszFileName,fRemember)
+
+#define IPersistFile_SaveCompleted(This,pszFileName) \
+ (This)->lpVtbl -> SaveCompleted(This,pszFileName)
+
+#define IPersistFile_GetCurFile(This,ppszFileName) \
+ (This)->lpVtbl -> GetCurFile(This,ppszFileName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersistFile_IsDirty_Proxy(
+ IPersistFile __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistFile_IsDirty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistFile_Load_Proxy(
+ IPersistFile __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszFileName,
+ /* [in] */ DWORD dwMode);
+
+
+void __RPC_STUB IPersistFile_Load_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistFile_Save_Proxy(
+ IPersistFile __RPC_FAR * This,
+ /* [unique][in] */ LPCOLESTR pszFileName,
+ /* [in] */ BOOL fRemember);
+
+
+void __RPC_STUB IPersistFile_Save_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistFile_SaveCompleted_Proxy(
+ IPersistFile __RPC_FAR * This,
+ /* [unique][in] */ LPCOLESTR pszFileName);
+
+
+void __RPC_STUB IPersistFile_SaveCompleted_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistFile_GetCurFile_Proxy(
+ IPersistFile __RPC_FAR * This,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszFileName);
+
+
+void __RPC_STUB IPersistFile_GetCurFile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersistFile_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersistStorage_INTERFACE_DEFINED__
+#define __IPersistStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersistStorage
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPersistStorage __RPC_FAR *LPPERSISTSTORAGE;
+
+
+EXTERN_C const IID IID_IPersistStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersistStorage : public IPersist
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitNew(
+ /* [unique][in] */ IStorage __RPC_FAR *pStg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Load(
+ /* [unique][in] */ IStorage __RPC_FAR *pStg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Save(
+ /* [unique][in] */ IStorage __RPC_FAR *pStgSave,
+ /* [in] */ BOOL fSameAsLoad) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
+ /* [unique][in] */ IStorage __RPC_FAR *pStgNew) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE HandsOffStorage( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersistStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersistStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersistStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersistStorage __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IPersistStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitNew )(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStgSave,
+ /* [in] */ BOOL fSameAsLoad);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveCompleted )(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStgNew);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *HandsOffStorage )(
+ IPersistStorage __RPC_FAR * This);
+
+ END_INTERFACE
+ } IPersistStorageVtbl;
+
+ interface IPersistStorage
+ {
+ CONST_VTBL struct IPersistStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersistStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersistStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersistStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersistStorage_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IPersistStorage_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IPersistStorage_InitNew(This,pStg) \
+ (This)->lpVtbl -> InitNew(This,pStg)
+
+#define IPersistStorage_Load(This,pStg) \
+ (This)->lpVtbl -> Load(This,pStg)
+
+#define IPersistStorage_Save(This,pStgSave,fSameAsLoad) \
+ (This)->lpVtbl -> Save(This,pStgSave,fSameAsLoad)
+
+#define IPersistStorage_SaveCompleted(This,pStgNew) \
+ (This)->lpVtbl -> SaveCompleted(This,pStgNew)
+
+#define IPersistStorage_HandsOffStorage(This) \
+ (This)->lpVtbl -> HandsOffStorage(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_IsDirty_Proxy(
+ IPersistStorage __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistStorage_IsDirty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_InitNew_Proxy(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStg);
+
+
+void __RPC_STUB IPersistStorage_InitNew_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_Load_Proxy(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStg);
+
+
+void __RPC_STUB IPersistStorage_Load_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_Save_Proxy(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStgSave,
+ /* [in] */ BOOL fSameAsLoad);
+
+
+void __RPC_STUB IPersistStorage_Save_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Proxy(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStgNew);
+
+
+void __RPC_STUB IPersistStorage_SaveCompleted_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Proxy(
+ IPersistStorage __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistStorage_HandsOffStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersistStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __ILockBytes_INTERFACE_DEFINED__
+#define __ILockBytes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ILockBytes
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ILockBytes __RPC_FAR *LPLOCKBYTES;
+
+
+EXTERN_C const IID IID_ILockBytes;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ILockBytes : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE ReadAt(
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE WriteAt(
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSize(
+ /* [in] */ ULARGE_INTEGER cb) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockRegion(
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Stat(
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ILockBytesVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ILockBytes __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ILockBytes __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReadAt )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *WriteAt )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Flush )(
+ ILockBytes __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSize )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER cb);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockRegion )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UnlockRegion )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stat )(
+ ILockBytes __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+ END_INTERFACE
+ } ILockBytesVtbl;
+
+ interface ILockBytes
+ {
+ CONST_VTBL struct ILockBytesVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ILockBytes_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ILockBytes_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ILockBytes_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ILockBytes_ReadAt(This,ulOffset,pv,cb,pcbRead) \
+ (This)->lpVtbl -> ReadAt(This,ulOffset,pv,cb,pcbRead)
+
+#define ILockBytes_WriteAt(This,ulOffset,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> WriteAt(This,ulOffset,pv,cb,pcbWritten)
+
+#define ILockBytes_Flush(This) \
+ (This)->lpVtbl -> Flush(This)
+
+#define ILockBytes_SetSize(This,cb) \
+ (This)->lpVtbl -> SetSize(This,cb)
+
+#define ILockBytes_LockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
+
+#define ILockBytes_UnlockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
+
+#define ILockBytes_Stat(This,pstatstg,grfStatFlag) \
+ (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT __stdcall ILockBytes_RemoteReadAt_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [length_is][size_is][out] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+
+void __RPC_STUB ILockBytes_RemoteReadAt_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+void __RPC_STUB ILockBytes_RemoteWriteAt_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ILockBytes_Flush_Proxy(
+ ILockBytes __RPC_FAR * This);
+
+
+void __RPC_STUB ILockBytes_Flush_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ILockBytes_SetSize_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER cb);
+
+
+void __RPC_STUB ILockBytes_SetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ILockBytes_LockRegion_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+
+void __RPC_STUB ILockBytes_LockRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ILockBytes_UnlockRegion_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+
+void __RPC_STUB ILockBytes_UnlockRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ILockBytes_Stat_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+
+void __RPC_STUB ILockBytes_Stat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ILockBytes_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumFORMATETC_INTERFACE_DEFINED__
+#define __IEnumFORMATETC_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumFORMATETC
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumFORMATETC __RPC_FAR *LPENUMFORMATETC;
+
+typedef struct tagDVTARGETDEVICE
+ {
+ DWORD tdSize;
+ WORD tdDriverNameOffset;
+ WORD tdDeviceNameOffset;
+ WORD tdPortNameOffset;
+ WORD tdExtDevmodeOffset;
+ /* [size_is] */ BYTE tdData[ 1 ];
+ } DVTARGETDEVICE;
+
+typedef CLIPFORMAT __RPC_FAR *LPCLIPFORMAT;
+
+typedef struct tagFORMATETC
+ {
+ CLIPFORMAT cfFormat;
+ /* [unique] */ DVTARGETDEVICE __RPC_FAR *ptd;
+ DWORD dwAspect;
+ LONG lindex;
+ DWORD tymed;
+ } FORMATETC;
+
+typedef struct tagFORMATETC __RPC_FAR *LPFORMATETC;
+
+
+EXTERN_C const IID IID_IEnumFORMATETC;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumFORMATETC : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ FORMATETC __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumFORMATETCVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumFORMATETC __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumFORMATETC __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ FORMATETC __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumFORMATETC __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumFORMATETCVtbl;
+
+ interface IEnumFORMATETC
+ {
+ CONST_VTBL struct IEnumFORMATETCVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumFORMATETC_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumFORMATETC_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumFORMATETC_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumFORMATETC_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumFORMATETC_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumFORMATETC_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumFORMATETC_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Proxy(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ FORMATETC __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumFORMATETC_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Skip_Proxy(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumFORMATETC_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Reset_Proxy(
+ IEnumFORMATETC __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumFORMATETC_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Clone_Proxy(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumFORMATETC_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumFORMATETC_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumSTATDATA_INTERFACE_DEFINED__
+#define __IEnumSTATDATA_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumSTATDATA
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumSTATDATA __RPC_FAR *LPENUMSTATDATA;
+
+typedef
+enum tagADVF
+ { ADVF_NODATA = 1,
+ ADVF_PRIMEFIRST = 2,
+ ADVF_ONLYONCE = 4,
+ ADVF_DATAONSTOP = 64,
+ ADVFCACHE_NOHANDLER = 8,
+ ADVFCACHE_FORCEBUILTIN = 16,
+ ADVFCACHE_ONSAVE = 32
+ } ADVF;
+
+typedef struct tagSTATDATA
+ {
+ FORMATETC formatetc;
+ DWORD advf;
+ /* [unique] */ IAdviseSink __RPC_FAR *pAdvSink;
+ DWORD dwConnection;
+ } STATDATA;
+
+typedef STATDATA __RPC_FAR *LPSTATDATA;
+
+
+EXTERN_C const IID IID_IEnumSTATDATA;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumSTATDATA : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDATA __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumSTATDATAVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumSTATDATA __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumSTATDATA __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDATA __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumSTATDATA __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumSTATDATAVtbl;
+
+ interface IEnumSTATDATA
+ {
+ CONST_VTBL struct IEnumSTATDATAVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumSTATDATA_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumSTATDATA_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumSTATDATA_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumSTATDATA_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumSTATDATA_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumSTATDATA_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumSTATDATA_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Proxy(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDATA __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumSTATDATA_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Skip_Proxy(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumSTATDATA_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Reset_Proxy(
+ IEnumSTATDATA __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumSTATDATA_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Clone_Proxy(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumSTATDATA_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumSTATDATA_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRootStorage_INTERFACE_DEFINED__
+#define __IRootStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRootStorage
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IRootStorage __RPC_FAR *LPROOTSTORAGE;
+
+
+EXTERN_C const IID IID_IRootStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRootStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SwitchToFile(
+ /* [in] */ LPOLESTR pszFile) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRootStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRootStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRootStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRootStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SwitchToFile )(
+ IRootStorage __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszFile);
+
+ END_INTERFACE
+ } IRootStorageVtbl;
+
+ interface IRootStorage
+ {
+ CONST_VTBL struct IRootStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRootStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRootStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRootStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRootStorage_SwitchToFile(This,pszFile) \
+ (This)->lpVtbl -> SwitchToFile(This,pszFile)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRootStorage_SwitchToFile_Proxy(
+ IRootStorage __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszFile);
+
+
+void __RPC_STUB IRootStorage_SwitchToFile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRootStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAdviseSink_INTERFACE_DEFINED__
+#define __IAdviseSink_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAdviseSink
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IAdviseSink __RPC_FAR *LPADVISESINK;
+
+typedef /* [v1_enum] */
+enum tagTYMED
+ { TYMED_HGLOBAL = 1,
+ TYMED_FILE = 2,
+ TYMED_ISTREAM = 4,
+ TYMED_ISTORAGE = 8,
+ TYMED_GDI = 16,
+ TYMED_MFPICT = 32,
+ TYMED_ENHMF = 64,
+ TYMED_NULL = 0
+ } TYMED;
+
+#ifndef RC_INVOKED
+#pragma warning(disable:4200)
+#endif
+typedef struct tagRemSTGMEDIUM
+ {
+ DWORD tymed;
+ DWORD dwHandleType;
+ unsigned long pData;
+ unsigned long pUnkForRelease;
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemSTGMEDIUM;
+
+#ifndef RC_INVOKED
+#pragma warning(default:4200)
+#endif
+#ifdef NONAMELESSUNION
+typedef struct tagSTGMEDIUM {
+ DWORD tymed;
+ union {
+ HBITMAP hBitmap;
+ HMETAFILEPICT hMetaFilePict;
+ HENHMETAFILE hEnhMetaFile;
+ HGLOBAL hGlobal;
+ LPOLESTR lpszFileName;
+ IStream *pstm;
+ IStorage *pstg;
+ } u;
+ IUnknown *pUnkForRelease;
+}uSTGMEDIUM;
+#else
+typedef struct tagSTGMEDIUM
+ {
+ DWORD tymed;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ HBITMAP hBitmap;
+ /* [case()] */ HMETAFILEPICT hMetaFilePict;
+ /* [case()] */ HENHMETAFILE hEnhMetaFile;
+ /* [case()] */ HGLOBAL hGlobal;
+ /* [case()] */ LPOLESTR lpszFileName;
+ /* [case()] */ IStream __RPC_FAR *pstm;
+ /* [case()] */ IStorage __RPC_FAR *pstg;
+ /* [default] */ /* Empty union arm */
+ } ;
+ /* [unique] */ IUnknown __RPC_FAR *pUnkForRelease;
+ } uSTGMEDIUM;
+
+#endif /* !NONAMELESSUNION */
+typedef struct _GDI_OBJECT
+ {
+ DWORD ObjectType;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IAdviseSink_0002
+ {
+ /* [case()] */ wireHBITMAP hBitmap;
+ /* [case()] */ wireHPALETTE hPalette;
+ /* [default] */ wireHGLOBAL hGeneric;
+ } u;
+ } GDI_OBJECT;
+
+typedef struct _userSTGMEDIUM
+ {
+ struct _STGMEDIUM_UNION
+ {
+ DWORD tymed;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IAdviseSink_0003
+ {
+ /* [case()] */ /* Empty union arm */
+ /* [case()] */ wireHMETAFILEPICT hMetaFilePict;
+ /* [case()] */ wireHENHMETAFILE hHEnhMetaFile;
+ /* [case()] */ GDI_OBJECT __RPC_FAR *hGdiHandle;
+ /* [case()] */ wireHGLOBAL hGlobal;
+ /* [case()] */ LPOLESTR lpszFileName;
+ /* [case()] */ BYTE_BLOB __RPC_FAR *pstm;
+ /* [case()] */ BYTE_BLOB __RPC_FAR *pstg;
+ } u;
+ } ;
+ IUnknown __RPC_FAR *pUnkForRelease;
+ } userSTGMEDIUM;
+
+typedef /* [unique] */ userSTGMEDIUM __RPC_FAR *wireSTGMEDIUM;
+
+typedef /* [wire_marshal] */ uSTGMEDIUM STGMEDIUM;
+
+typedef /* [unique] */ userSTGMEDIUM __RPC_FAR *wireASYNC_STGMEDIUM;
+
+typedef /* [wire_marshal] */ STGMEDIUM ASYNC_STGMEDIUM;
+
+typedef STGMEDIUM __RPC_FAR *LPSTGMEDIUM;
+
+typedef struct _userFLAG_STGMEDIUM
+ {
+ long ContextFlags;
+ long fPassOwnership;
+ userSTGMEDIUM Stgmed;
+ } userFLAG_STGMEDIUM;
+
+typedef /* [unique] */ userFLAG_STGMEDIUM __RPC_FAR *wireFLAG_STGMEDIUM;
+
+typedef /* [wire_marshal] */ struct _FLAG_STGMEDIUM
+ {
+ long ContextFlags;
+ long fPassOwnership;
+ STGMEDIUM Stgmed;
+ } FLAG_STGMEDIUM;
+
+
+EXTERN_C const IID IID_IAdviseSink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAdviseSink : public IUnknown
+ {
+ public:
+ virtual /* [local] */ void STDMETHODCALLTYPE OnDataChange(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE OnViewChange(
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE OnRename(
+ /* [in] */ IMoniker __RPC_FAR *pmk) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE OnSave( void) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE OnClose( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAdviseSinkVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAdviseSink __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAdviseSink __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnDataChange )(
+ IAdviseSink __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnViewChange )(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnRename )(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnSave )(
+ IAdviseSink __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnClose )(
+ IAdviseSink __RPC_FAR * This);
+
+ END_INTERFACE
+ } IAdviseSinkVtbl;
+
+ interface IAdviseSink
+ {
+ CONST_VTBL struct IAdviseSinkVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAdviseSink_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAdviseSink_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAdviseSink_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAdviseSink_OnDataChange(This,pFormatetc,pStgmed) \
+ (This)->lpVtbl -> OnDataChange(This,pFormatetc,pStgmed)
+
+#define IAdviseSink_OnViewChange(This,dwAspect,lindex) \
+ (This)->lpVtbl -> OnViewChange(This,dwAspect,lindex)
+
+#define IAdviseSink_OnRename(This,pmk) \
+ (This)->lpVtbl -> OnRename(This,pmk)
+
+#define IAdviseSink_OnSave(This) \
+ (This)->lpVtbl -> OnSave(This)
+
+#define IAdviseSink_OnClose(This) \
+ (This)->lpVtbl -> OnClose(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ ASYNC_STGMEDIUM __RPC_FAR *pStgmed);
+
+
+void __RPC_STUB IAdviseSink_RemoteOnDataChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+
+void __RPC_STUB IAdviseSink_RemoteOnViewChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+
+void __RPC_STUB IAdviseSink_RemoteOnRename_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Proxy(
+ IAdviseSink __RPC_FAR * This);
+
+
+void __RPC_STUB IAdviseSink_RemoteOnSave_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Proxy(
+ IAdviseSink __RPC_FAR * This);
+
+
+void __RPC_STUB IAdviseSink_RemoteOnClose_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAdviseSink_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAdviseSink2_INTERFACE_DEFINED__
+#define __IAdviseSink2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAdviseSink2
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IAdviseSink2 __RPC_FAR *LPADVISESINK2;
+
+
+EXTERN_C const IID IID_IAdviseSink2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAdviseSink2 : public IAdviseSink
+ {
+ public:
+ virtual /* [local] */ void STDMETHODCALLTYPE OnLinkSrcChange(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAdviseSink2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAdviseSink2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAdviseSink2 __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnDataChange )(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnViewChange )(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnRename )(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnSave )(
+ IAdviseSink2 __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnClose )(
+ IAdviseSink2 __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnLinkSrcChange )(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+ END_INTERFACE
+ } IAdviseSink2Vtbl;
+
+ interface IAdviseSink2
+ {
+ CONST_VTBL struct IAdviseSink2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAdviseSink2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAdviseSink2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAdviseSink2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAdviseSink2_OnDataChange(This,pFormatetc,pStgmed) \
+ (This)->lpVtbl -> OnDataChange(This,pFormatetc,pStgmed)
+
+#define IAdviseSink2_OnViewChange(This,dwAspect,lindex) \
+ (This)->lpVtbl -> OnViewChange(This,dwAspect,lindex)
+
+#define IAdviseSink2_OnRename(This,pmk) \
+ (This)->lpVtbl -> OnRename(This,pmk)
+
+#define IAdviseSink2_OnSave(This) \
+ (This)->lpVtbl -> OnSave(This)
+
+#define IAdviseSink2_OnClose(This) \
+ (This)->lpVtbl -> OnClose(This)
+
+
+#define IAdviseSink2_OnLinkSrcChange(This,pmk) \
+ (This)->lpVtbl -> OnLinkSrcChange(This,pmk)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Proxy(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+
+void __RPC_STUB IAdviseSink2_RemoteOnLinkSrcChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAdviseSink2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDataObject_INTERFACE_DEFINED__
+#define __IDataObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDataObject
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IDataObject __RPC_FAR *LPDATAOBJECT;
+
+typedef
+enum tagDATADIR
+ { DATADIR_GET = 1,
+ DATADIR_SET = 2
+ } DATADIR;
+
+
+EXTERN_C const IID IID_IDataObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDataObject : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetData(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
+ /* [out] */ STGMEDIUM __RPC_FAR *pmedium) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDataHere(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pmedium) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryGetData(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatectIn,
+ /* [out] */ FORMATETC __RPC_FAR *pformatetcOut) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetData(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumFormatEtc(
+ /* [in] */ DWORD dwDirection,
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenumFormatEtc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DAdvise(
+ /* [in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DUnadvise(
+ /* [in] */ DWORD dwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumDAdvise(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDataObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDataObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDataObject __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetData )(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
+ /* [out] */ STGMEDIUM __RPC_FAR *pmedium);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDataHere )(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pmedium);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryGetData )(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCanonicalFormatEtc )(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatectIn,
+ /* [out] */ FORMATETC __RPC_FAR *pformatetcOut);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetData )(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumFormatEtc )(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDirection,
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenumFormatEtc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DAdvise )(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DUnadvise )(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumDAdvise )(
+ IDataObject __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+ END_INTERFACE
+ } IDataObjectVtbl;
+
+ interface IDataObject
+ {
+ CONST_VTBL struct IDataObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDataObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDataObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDataObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDataObject_GetData(This,pformatetcIn,pmedium) \
+ (This)->lpVtbl -> GetData(This,pformatetcIn,pmedium)
+
+#define IDataObject_GetDataHere(This,pformatetc,pmedium) \
+ (This)->lpVtbl -> GetDataHere(This,pformatetc,pmedium)
+
+#define IDataObject_QueryGetData(This,pformatetc) \
+ (This)->lpVtbl -> QueryGetData(This,pformatetc)
+
+#define IDataObject_GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) \
+ (This)->lpVtbl -> GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut)
+
+#define IDataObject_SetData(This,pformatetc,pmedium,fRelease) \
+ (This)->lpVtbl -> SetData(This,pformatetc,pmedium,fRelease)
+
+#define IDataObject_EnumFormatEtc(This,dwDirection,ppenumFormatEtc) \
+ (This)->lpVtbl -> EnumFormatEtc(This,dwDirection,ppenumFormatEtc)
+
+#define IDataObject_DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) \
+ (This)->lpVtbl -> DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection)
+
+#define IDataObject_DUnadvise(This,dwConnection) \
+ (This)->lpVtbl -> DUnadvise(This,dwConnection)
+
+#define IDataObject_EnumDAdvise(This,ppenumAdvise) \
+ (This)->lpVtbl -> EnumDAdvise(This,ppenumAdvise)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetData_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
+ /* [out] */ STGMEDIUM __RPC_FAR *pRemoteMedium);
+
+
+void __RPC_STUB IDataObject_RemoteGetData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pRemoteMedium);
+
+
+void __RPC_STUB IDataObject_RemoteGetDataHere_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_QueryGetData_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc);
+
+
+void __RPC_STUB IDataObject_QueryGetData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatectIn,
+ /* [out] */ FORMATETC __RPC_FAR *pformatetcOut);
+
+
+void __RPC_STUB IDataObject_GetCanonicalFormatEtc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_RemoteSetData_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ FLAG_STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+
+void __RPC_STUB IDataObject_RemoteSetData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDirection,
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenumFormatEtc);
+
+
+void __RPC_STUB IDataObject_EnumFormatEtc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_DAdvise_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+
+void __RPC_STUB IDataObject_DAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_DUnadvise_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+
+void __RPC_STUB IDataObject_DUnadvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_EnumDAdvise_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+
+void __RPC_STUB IDataObject_EnumDAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDataObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDataAdviseHolder_INTERFACE_DEFINED__
+#define __IDataAdviseHolder_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDataAdviseHolder
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IDataAdviseHolder __RPC_FAR *LPDATAADVISEHOLDER;
+
+
+EXTERN_C const IID IID_IDataAdviseHolder;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDataAdviseHolder : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Advise(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unadvise(
+ /* [in] */ DWORD dwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendOnDataChange(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ DWORD dwReserved,
+ /* [in] */ DWORD advf) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDataAdviseHolderVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDataAdviseHolder __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDataAdviseHolder __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Advise )(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unadvise )(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumAdvise )(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SendOnDataChange )(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ DWORD dwReserved,
+ /* [in] */ DWORD advf);
+
+ END_INTERFACE
+ } IDataAdviseHolderVtbl;
+
+ interface IDataAdviseHolder
+ {
+ CONST_VTBL struct IDataAdviseHolderVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDataAdviseHolder_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDataAdviseHolder_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDataAdviseHolder_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDataAdviseHolder_Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) \
+ (This)->lpVtbl -> Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection)
+
+#define IDataAdviseHolder_Unadvise(This,dwConnection) \
+ (This)->lpVtbl -> Unadvise(This,dwConnection)
+
+#define IDataAdviseHolder_EnumAdvise(This,ppenumAdvise) \
+ (This)->lpVtbl -> EnumAdvise(This,ppenumAdvise)
+
+#define IDataAdviseHolder_SendOnDataChange(This,pDataObject,dwReserved,advf) \
+ (This)->lpVtbl -> SendOnDataChange(This,pDataObject,dwReserved,advf)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Advise_Proxy(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+
+void __RPC_STUB IDataAdviseHolder_Advise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Proxy(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+
+void __RPC_STUB IDataAdviseHolder_Unadvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Proxy(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+
+void __RPC_STUB IDataAdviseHolder_EnumAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Proxy(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ DWORD dwReserved,
+ /* [in] */ DWORD advf);
+
+
+void __RPC_STUB IDataAdviseHolder_SendOnDataChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDataAdviseHolder_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMessageFilter_INTERFACE_DEFINED__
+#define __IMessageFilter_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMessageFilter
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IMessageFilter __RPC_FAR *LPMESSAGEFILTER;
+
+typedef
+enum tagCALLTYPE
+ { CALLTYPE_TOPLEVEL = 1,
+ CALLTYPE_NESTED = 2,
+ CALLTYPE_ASYNC = 3,
+ CALLTYPE_TOPLEVEL_CALLPENDING = 4,
+ CALLTYPE_ASYNC_CALLPENDING = 5
+ } CALLTYPE;
+
+typedef
+enum tagSERVERCALL
+ { SERVERCALL_ISHANDLED = 0,
+ SERVERCALL_REJECTED = 1,
+ SERVERCALL_RETRYLATER = 2
+ } SERVERCALL;
+
+typedef
+enum tagPENDINGTYPE
+ { PENDINGTYPE_TOPLEVEL = 1,
+ PENDINGTYPE_NESTED = 2
+ } PENDINGTYPE;
+
+typedef
+enum tagPENDINGMSG
+ { PENDINGMSG_CANCELCALL = 0,
+ PENDINGMSG_WAITNOPROCESS = 1,
+ PENDINGMSG_WAITDEFPROCESS = 2
+ } PENDINGMSG;
+
+typedef struct tagINTERFACEINFO
+ {
+ IUnknown __RPC_FAR *pUnk;
+ IID iid;
+ WORD wMethod;
+ } INTERFACEINFO;
+
+typedef struct tagINTERFACEINFO __RPC_FAR *LPINTERFACEINFO;
+
+
+EXTERN_C const IID IID_IMessageFilter;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMessageFilter : public IUnknown
+ {
+ public:
+ virtual DWORD STDMETHODCALLTYPE HandleInComingCall(
+ /* [in] */ DWORD dwCallType,
+ /* [in] */ HTASK htaskCaller,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ LPINTERFACEINFO lpInterfaceInfo) = 0;
+
+ virtual DWORD STDMETHODCALLTYPE RetryRejectedCall(
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwRejectType) = 0;
+
+ virtual DWORD STDMETHODCALLTYPE MessagePending(
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwPendingType) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMessageFilterVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMessageFilter __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMessageFilter __RPC_FAR * This);
+
+ DWORD ( STDMETHODCALLTYPE __RPC_FAR *HandleInComingCall )(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ DWORD dwCallType,
+ /* [in] */ HTASK htaskCaller,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ LPINTERFACEINFO lpInterfaceInfo);
+
+ DWORD ( STDMETHODCALLTYPE __RPC_FAR *RetryRejectedCall )(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwRejectType);
+
+ DWORD ( STDMETHODCALLTYPE __RPC_FAR *MessagePending )(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwPendingType);
+
+ END_INTERFACE
+ } IMessageFilterVtbl;
+
+ interface IMessageFilter
+ {
+ CONST_VTBL struct IMessageFilterVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMessageFilter_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMessageFilter_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMessageFilter_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMessageFilter_HandleInComingCall(This,dwCallType,htaskCaller,dwTickCount,lpInterfaceInfo) \
+ (This)->lpVtbl -> HandleInComingCall(This,dwCallType,htaskCaller,dwTickCount,lpInterfaceInfo)
+
+#define IMessageFilter_RetryRejectedCall(This,htaskCallee,dwTickCount,dwRejectType) \
+ (This)->lpVtbl -> RetryRejectedCall(This,htaskCallee,dwTickCount,dwRejectType)
+
+#define IMessageFilter_MessagePending(This,htaskCallee,dwTickCount,dwPendingType) \
+ (This)->lpVtbl -> MessagePending(This,htaskCallee,dwTickCount,dwPendingType)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+DWORD STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Proxy(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ DWORD dwCallType,
+ /* [in] */ HTASK htaskCaller,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ LPINTERFACEINFO lpInterfaceInfo);
+
+
+void __RPC_STUB IMessageFilter_HandleInComingCall_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+DWORD STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Proxy(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwRejectType);
+
+
+void __RPC_STUB IMessageFilter_RetryRejectedCall_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+DWORD STDMETHODCALLTYPE IMessageFilter_MessagePending_Proxy(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwPendingType);
+
+
+void __RPC_STUB IMessageFilter_MessagePending_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMessageFilter_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRpcChannelBuffer_INTERFACE_DEFINED__
+#define __IRpcChannelBuffer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRpcChannelBuffer
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef unsigned long RPCOLEDATAREP;
+
+typedef struct tagRPCOLEMESSAGE
+ {
+ void __RPC_FAR *reserved1;
+ RPCOLEDATAREP dataRepresentation;
+ void __RPC_FAR *Buffer;
+ ULONG cbBuffer;
+ ULONG iMethod;
+ void __RPC_FAR *reserved2[ 5 ];
+ ULONG rpcFlags;
+ } RPCOLEMESSAGE;
+
+typedef RPCOLEMESSAGE __RPC_FAR *PRPCOLEMESSAGE;
+
+
+EXTERN_C const IID IID_IRpcChannelBuffer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRpcChannelBuffer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetBuffer(
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [in] */ REFIID riid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendReceive(
+ /* [out][in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [out] */ ULONG __RPC_FAR *pStatus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FreeBuffer(
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDestCtx(
+ /* [out] */ DWORD __RPC_FAR *pdwDestContext,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvDestContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsConnected( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRpcChannelBufferVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRpcChannelBuffer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRpcChannelBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBuffer )(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [in] */ REFIID riid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SendReceive )(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [out][in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [out] */ ULONG __RPC_FAR *pStatus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FreeBuffer )(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDestCtx )(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwDestContext,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvDestContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsConnected )(
+ IRpcChannelBuffer __RPC_FAR * This);
+
+ END_INTERFACE
+ } IRpcChannelBufferVtbl;
+
+ interface IRpcChannelBuffer
+ {
+ CONST_VTBL struct IRpcChannelBufferVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRpcChannelBuffer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRpcChannelBuffer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRpcChannelBuffer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRpcChannelBuffer_GetBuffer(This,pMessage,riid) \
+ (This)->lpVtbl -> GetBuffer(This,pMessage,riid)
+
+#define IRpcChannelBuffer_SendReceive(This,pMessage,pStatus) \
+ (This)->lpVtbl -> SendReceive(This,pMessage,pStatus)
+
+#define IRpcChannelBuffer_FreeBuffer(This,pMessage) \
+ (This)->lpVtbl -> FreeBuffer(This,pMessage)
+
+#define IRpcChannelBuffer_GetDestCtx(This,pdwDestContext,ppvDestContext) \
+ (This)->lpVtbl -> GetDestCtx(This,pdwDestContext,ppvDestContext)
+
+#define IRpcChannelBuffer_IsConnected(This) \
+ (This)->lpVtbl -> IsConnected(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Proxy(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [in] */ REFIID riid);
+
+
+void __RPC_STUB IRpcChannelBuffer_GetBuffer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Proxy(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [out][in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [out] */ ULONG __RPC_FAR *pStatus);
+
+
+void __RPC_STUB IRpcChannelBuffer_SendReceive_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Proxy(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage);
+
+
+void __RPC_STUB IRpcChannelBuffer_FreeBuffer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Proxy(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwDestContext,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvDestContext);
+
+
+void __RPC_STUB IRpcChannelBuffer_GetDestCtx_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Proxy(
+ IRpcChannelBuffer __RPC_FAR * This);
+
+
+void __RPC_STUB IRpcChannelBuffer_IsConnected_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRpcChannelBuffer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRpcProxyBuffer_INTERFACE_DEFINED__
+#define __IRpcProxyBuffer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRpcProxyBuffer
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRpcProxyBuffer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRpcProxyBuffer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Connect(
+ /* [unique][in] */ IRpcChannelBuffer __RPC_FAR *pRpcChannelBuffer) = 0;
+
+ virtual void STDMETHODCALLTYPE Disconnect( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRpcProxyBufferVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRpcProxyBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRpcProxyBuffer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRpcProxyBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Connect )(
+ IRpcProxyBuffer __RPC_FAR * This,
+ /* [unique][in] */ IRpcChannelBuffer __RPC_FAR *pRpcChannelBuffer);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *Disconnect )(
+ IRpcProxyBuffer __RPC_FAR * This);
+
+ END_INTERFACE
+ } IRpcProxyBufferVtbl;
+
+ interface IRpcProxyBuffer
+ {
+ CONST_VTBL struct IRpcProxyBufferVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRpcProxyBuffer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRpcProxyBuffer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRpcProxyBuffer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRpcProxyBuffer_Connect(This,pRpcChannelBuffer) \
+ (This)->lpVtbl -> Connect(This,pRpcChannelBuffer)
+
+#define IRpcProxyBuffer_Disconnect(This) \
+ (This)->lpVtbl -> Disconnect(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Proxy(
+ IRpcProxyBuffer __RPC_FAR * This,
+ /* [unique][in] */ IRpcChannelBuffer __RPC_FAR *pRpcChannelBuffer);
+
+
+void __RPC_STUB IRpcProxyBuffer_Connect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Proxy(
+ IRpcProxyBuffer __RPC_FAR * This);
+
+
+void __RPC_STUB IRpcProxyBuffer_Disconnect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRpcProxyBuffer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRpcStubBuffer_INTERFACE_DEFINED__
+#define __IRpcStubBuffer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRpcStubBuffer
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRpcStubBuffer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRpcStubBuffer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Connect(
+ /* [in] */ IUnknown __RPC_FAR *pUnkServer) = 0;
+
+ virtual void STDMETHODCALLTYPE Disconnect( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *_prpcmsg,
+ /* [in] */ IRpcChannelBuffer __RPC_FAR *_pRpcChannelBuffer) = 0;
+
+ virtual IRpcStubBuffer __RPC_FAR *STDMETHODCALLTYPE IsIIDSupported(
+ /* [in] */ REFIID riid) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE CountRefs( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DebugServerQueryInterface(
+ void __RPC_FAR *__RPC_FAR *ppv) = 0;
+
+ virtual void STDMETHODCALLTYPE DebugServerRelease(
+ void __RPC_FAR *pv) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRpcStubBufferVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRpcStubBuffer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRpcStubBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Connect )(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkServer);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *Disconnect )(
+ IRpcStubBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *_prpcmsg,
+ /* [in] */ IRpcChannelBuffer __RPC_FAR *_pRpcChannelBuffer);
+
+ IRpcStubBuffer __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *IsIIDSupported )(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *CountRefs )(
+ IRpcStubBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DebugServerQueryInterface )(
+ IRpcStubBuffer __RPC_FAR * This,
+ void __RPC_FAR *__RPC_FAR *ppv);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *DebugServerRelease )(
+ IRpcStubBuffer __RPC_FAR * This,
+ void __RPC_FAR *pv);
+
+ END_INTERFACE
+ } IRpcStubBufferVtbl;
+
+ interface IRpcStubBuffer
+ {
+ CONST_VTBL struct IRpcStubBufferVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRpcStubBuffer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRpcStubBuffer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRpcStubBuffer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRpcStubBuffer_Connect(This,pUnkServer) \
+ (This)->lpVtbl -> Connect(This,pUnkServer)
+
+#define IRpcStubBuffer_Disconnect(This) \
+ (This)->lpVtbl -> Disconnect(This)
+
+#define IRpcStubBuffer_Invoke(This,_prpcmsg,_pRpcChannelBuffer) \
+ (This)->lpVtbl -> Invoke(This,_prpcmsg,_pRpcChannelBuffer)
+
+#define IRpcStubBuffer_IsIIDSupported(This,riid) \
+ (This)->lpVtbl -> IsIIDSupported(This,riid)
+
+#define IRpcStubBuffer_CountRefs(This) \
+ (This)->lpVtbl -> CountRefs(This)
+
+#define IRpcStubBuffer_DebugServerQueryInterface(This,ppv) \
+ (This)->lpVtbl -> DebugServerQueryInterface(This,ppv)
+
+#define IRpcStubBuffer_DebugServerRelease(This,pv) \
+ (This)->lpVtbl -> DebugServerRelease(This,pv)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Connect_Proxy(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkServer);
+
+
+void __RPC_STUB IRpcStubBuffer_Connect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Proxy(
+ IRpcStubBuffer __RPC_FAR * This);
+
+
+void __RPC_STUB IRpcStubBuffer_Disconnect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Proxy(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *_prpcmsg,
+ /* [in] */ IRpcChannelBuffer __RPC_FAR *_pRpcChannelBuffer);
+
+
+void __RPC_STUB IRpcStubBuffer_Invoke_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+IRpcStubBuffer __RPC_FAR *STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Proxy(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid);
+
+
+void __RPC_STUB IRpcStubBuffer_IsIIDSupported_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Proxy(
+ IRpcStubBuffer __RPC_FAR * This);
+
+
+void __RPC_STUB IRpcStubBuffer_CountRefs_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Proxy(
+ IRpcStubBuffer __RPC_FAR * This,
+ void __RPC_FAR *__RPC_FAR *ppv);
+
+
+void __RPC_STUB IRpcStubBuffer_DebugServerQueryInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Proxy(
+ IRpcStubBuffer __RPC_FAR * This,
+ void __RPC_FAR *pv);
+
+
+void __RPC_STUB IRpcStubBuffer_DebugServerRelease_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRpcStubBuffer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPSFactoryBuffer_INTERFACE_DEFINED__
+#define __IPSFactoryBuffer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPSFactoryBuffer
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IPSFactoryBuffer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPSFactoryBuffer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateProxy(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [out] */ IRpcProxyBuffer __RPC_FAR *__RPC_FAR *ppProxy,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateStub(
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkServer,
+ /* [out] */ IRpcStubBuffer __RPC_FAR *__RPC_FAR *ppStub) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPSFactoryBufferVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPSFactoryBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPSFactoryBuffer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPSFactoryBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateProxy )(
+ IPSFactoryBuffer __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [out] */ IRpcProxyBuffer __RPC_FAR *__RPC_FAR *ppProxy,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateStub )(
+ IPSFactoryBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkServer,
+ /* [out] */ IRpcStubBuffer __RPC_FAR *__RPC_FAR *ppStub);
+
+ END_INTERFACE
+ } IPSFactoryBufferVtbl;
+
+ interface IPSFactoryBuffer
+ {
+ CONST_VTBL struct IPSFactoryBufferVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPSFactoryBuffer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPSFactoryBuffer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPSFactoryBuffer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPSFactoryBuffer_CreateProxy(This,pUnkOuter,riid,ppProxy,ppv) \
+ (This)->lpVtbl -> CreateProxy(This,pUnkOuter,riid,ppProxy,ppv)
+
+#define IPSFactoryBuffer_CreateStub(This,riid,pUnkServer,ppStub) \
+ (This)->lpVtbl -> CreateStub(This,riid,pUnkServer,ppStub)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Proxy(
+ IPSFactoryBuffer __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [out] */ IRpcProxyBuffer __RPC_FAR *__RPC_FAR *ppProxy,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+
+void __RPC_STUB IPSFactoryBuffer_CreateProxy_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Proxy(
+ IPSFactoryBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkServer,
+ /* [out] */ IRpcStubBuffer __RPC_FAR *__RPC_FAR *ppStub);
+
+
+void __RPC_STUB IPSFactoryBuffer_CreateStub_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPSFactoryBuffer_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0041
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
+// This interface is only valid on Windows NT 4.0
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0041_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0041_v0_0_s_ifspec;
+
+#ifndef __IChannelHook_INTERFACE_DEFINED__
+#define __IChannelHook_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IChannelHook
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IChannelHook;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IChannelHook : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE ClientGetSize(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out] */ ULONG __RPC_FAR *pDataSize) = 0;
+
+ virtual void STDMETHODCALLTYPE ClientFillBuffer(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer) = 0;
+
+ virtual void STDMETHODCALLTYPE ClientNotify(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep,
+ /* [in] */ HRESULT hrFault) = 0;
+
+ virtual void STDMETHODCALLTYPE ServerNotify(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep) = 0;
+
+ virtual void STDMETHODCALLTYPE ServerGetSize(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ HRESULT hrFault,
+ /* [out] */ ULONG __RPC_FAR *pDataSize) = 0;
+
+ virtual void STDMETHODCALLTYPE ServerFillBuffer(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ HRESULT hrFault) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IChannelHookVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IChannelHook __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IChannelHook __RPC_FAR * This);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ClientGetSize )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out] */ ULONG __RPC_FAR *pDataSize);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ClientFillBuffer )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ClientNotify )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep,
+ /* [in] */ HRESULT hrFault);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ServerNotify )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ServerGetSize )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ HRESULT hrFault,
+ /* [out] */ ULONG __RPC_FAR *pDataSize);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ServerFillBuffer )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ HRESULT hrFault);
+
+ END_INTERFACE
+ } IChannelHookVtbl;
+
+ interface IChannelHook
+ {
+ CONST_VTBL struct IChannelHookVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IChannelHook_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IChannelHook_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IChannelHook_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IChannelHook_ClientGetSize(This,uExtent,riid,pDataSize) \
+ (This)->lpVtbl -> ClientGetSize(This,uExtent,riid,pDataSize)
+
+#define IChannelHook_ClientFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer) \
+ (This)->lpVtbl -> ClientFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer)
+
+#define IChannelHook_ClientNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep,hrFault) \
+ (This)->lpVtbl -> ClientNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep,hrFault)
+
+#define IChannelHook_ServerNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep) \
+ (This)->lpVtbl -> ServerNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep)
+
+#define IChannelHook_ServerGetSize(This,uExtent,riid,hrFault,pDataSize) \
+ (This)->lpVtbl -> ServerGetSize(This,uExtent,riid,hrFault,pDataSize)
+
+#define IChannelHook_ServerFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer,hrFault) \
+ (This)->lpVtbl -> ServerFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer,hrFault)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+void STDMETHODCALLTYPE IChannelHook_ClientGetSize_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out] */ ULONG __RPC_FAR *pDataSize);
+
+
+void __RPC_STUB IChannelHook_ClientGetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IChannelHook_ClientFillBuffer_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer);
+
+
+void __RPC_STUB IChannelHook_ClientFillBuffer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IChannelHook_ClientNotify_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep,
+ /* [in] */ HRESULT hrFault);
+
+
+void __RPC_STUB IChannelHook_ClientNotify_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IChannelHook_ServerNotify_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep);
+
+
+void __RPC_STUB IChannelHook_ServerNotify_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IChannelHook_ServerGetSize_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ HRESULT hrFault,
+ /* [out] */ ULONG __RPC_FAR *pDataSize);
+
+
+void __RPC_STUB IChannelHook_ServerGetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IChannelHook_ServerFillBuffer_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ HRESULT hrFault);
+
+
+void __RPC_STUB IChannelHook_ServerFillBuffer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IChannelHook_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0042
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#endif //DCOM
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0042_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0042_v0_0_s_ifspec;
+
+#ifndef __IPropertyStorage_INTERFACE_DEFINED__
+#define __IPropertyStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPropertyStorage
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+// Well-known Property Set Format IDs
+extern const FMTID FMTID_SummaryInformation;
+
+extern const FMTID FMTID_DocSummaryInformation;
+
+extern const FMTID FMTID_UserDefinedProperties;
+
+
+// Flags for IPropertySetStorage::Create
+#define PROPSETFLAG_DEFAULT ( 0 )
+
+#define PROPSETFLAG_NONSIMPLE ( 1 )
+
+#define PROPSETFLAG_ANSI ( 2 )
+
+// This flag is only supported on StgCreatePropStg & StgOpenPropStg
+#define PROPSETFLAG_UNBUFFERED ( 4 )
+
+typedef /* [unique] */ IPropertyStorage __RPC_FAR *LPPROPERTYSTORAGE;
+
+typedef struct tagPROPVARIANT PROPVARIANT;
+
+typedef struct tagCAUB
+ {
+ ULONG cElems;
+ /* [size_is] */ unsigned char __RPC_FAR *pElems;
+ } CAUB;
+
+typedef struct tagCAI
+ {
+ ULONG cElems;
+ /* [size_is] */ short __RPC_FAR *pElems;
+ } CAI;
+
+typedef struct tagCAUI
+ {
+ ULONG cElems;
+ /* [size_is] */ USHORT __RPC_FAR *pElems;
+ } CAUI;
+
+typedef struct tagCAL
+ {
+ ULONG cElems;
+ /* [size_is] */ long __RPC_FAR *pElems;
+ } CAL;
+
+typedef struct tagCAUL
+ {
+ ULONG cElems;
+ /* [size_is] */ ULONG __RPC_FAR *pElems;
+ } CAUL;
+
+typedef struct tagCAFLT
+ {
+ ULONG cElems;
+ /* [size_is] */ float __RPC_FAR *pElems;
+ } CAFLT;
+
+typedef struct tagCADBL
+ {
+ ULONG cElems;
+ /* [size_is] */ double __RPC_FAR *pElems;
+ } CADBL;
+
+typedef struct tagCACY
+ {
+ ULONG cElems;
+ /* [size_is] */ CY __RPC_FAR *pElems;
+ } CACY;
+
+typedef struct tagCADATE
+ {
+ ULONG cElems;
+ /* [size_is] */ DATE __RPC_FAR *pElems;
+ } CADATE;
+
+typedef struct tagCABSTR
+ {
+ ULONG cElems;
+ /* [size_is] */ BSTR __RPC_FAR *pElems;
+ } CABSTR;
+
+typedef struct tagCABSTRBLOB
+ {
+ ULONG cElems;
+ /* [size_is] */ BSTRBLOB __RPC_FAR *pElems;
+ } CABSTRBLOB;
+
+typedef struct tagCABOOL
+ {
+ ULONG cElems;
+ /* [size_is] */ VARIANT_BOOL __RPC_FAR *pElems;
+ } CABOOL;
+
+typedef struct tagCASCODE
+ {
+ ULONG cElems;
+ /* [size_is] */ SCODE __RPC_FAR *pElems;
+ } CASCODE;
+
+typedef struct tagCAPROPVARIANT
+ {
+ ULONG cElems;
+ /* [size_is] */ PROPVARIANT __RPC_FAR *pElems;
+ } CAPROPVARIANT;
+
+typedef struct tagCAH
+ {
+ ULONG cElems;
+ /* [size_is] */ LARGE_INTEGER __RPC_FAR *pElems;
+ } CAH;
+
+typedef struct tagCAUH
+ {
+ ULONG cElems;
+ /* [size_is] */ ULARGE_INTEGER __RPC_FAR *pElems;
+ } CAUH;
+
+typedef struct tagCALPSTR
+ {
+ ULONG cElems;
+ /* [size_is] */ LPSTR __RPC_FAR *pElems;
+ } CALPSTR;
+
+typedef struct tagCALPWSTR
+ {
+ ULONG cElems;
+ /* [size_is] */ LPWSTR __RPC_FAR *pElems;
+ } CALPWSTR;
+
+typedef struct tagCAFILETIME
+ {
+ ULONG cElems;
+ /* [size_is] */ FILETIME __RPC_FAR *pElems;
+ } CAFILETIME;
+
+typedef struct tagCACLIPDATA
+ {
+ ULONG cElems;
+ /* [size_is] */ CLIPDATA __RPC_FAR *pElems;
+ } CACLIPDATA;
+
+typedef struct tagCACLSID
+ {
+ ULONG cElems;
+ /* [size_is] */ CLSID __RPC_FAR *pElems;
+ } CACLSID;
+
+// Disable the warning about the obsolete member named 'bool'
+// 'bool', 'true', 'false', 'mutable', 'explicit', & 'typename'
+// are reserved keywords
+#pragma warning(disable:4237)
+struct tagPROPVARIANT
+ {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ /* [switch_is] */ /* [switch_type] */ union
+ {
+ /* [case()] */ /* Empty union arm */
+ /* [case()] */ UCHAR bVal;
+ /* [case()] */ short iVal;
+ /* [case()] */ USHORT uiVal;
+ /* [case()] */ VARIANT_BOOL boolVal;
+ /* [case()] */ _VARIANT_BOOL bool;
+ /* [case()] */ long lVal;
+ /* [case()] */ ULONG ulVal;
+ /* [case()] */ float fltVal;
+ /* [case()] */ SCODE scode;
+ /* [case()] */ LARGE_INTEGER hVal;
+ /* [case()] */ ULARGE_INTEGER uhVal;
+ /* [case()] */ double dblVal;
+ /* [case()] */ CY cyVal;
+ /* [case()] */ DATE date;
+ /* [case()] */ FILETIME filetime;
+ /* [case()] */ CLSID __RPC_FAR *puuid;
+ /* [case()] */ BLOB blob;
+ /* [case()] */ CLIPDATA __RPC_FAR *pclipdata;
+ /* [case()] */ IStream __RPC_FAR *pStream;
+ /* [case()] */ IStorage __RPC_FAR *pStorage;
+ /* [case()] */ BSTR bstrVal;
+ /* [case()] */ BSTRBLOB bstrblobVal;
+ /* [case()] */ LPSTR pszVal;
+ /* [case()] */ LPWSTR pwszVal;
+ /* [case()] */ CAUB caub;
+ /* [case()] */ CAI cai;
+ /* [case()] */ CAUI caui;
+ /* [case()] */ CABOOL cabool;
+ /* [case()] */ CAL cal;
+ /* [case()] */ CAUL caul;
+ /* [case()] */ CAFLT caflt;
+ /* [case()] */ CASCODE cascode;
+ /* [case()] */ CAH cah;
+ /* [case()] */ CAUH cauh;
+ /* [case()] */ CADBL cadbl;
+ /* [case()] */ CACY cacy;
+ /* [case()] */ CADATE cadate;
+ /* [case()] */ CAFILETIME cafiletime;
+ /* [case()] */ CACLSID cauuid;
+ /* [case()] */ CACLIPDATA caclipdata;
+ /* [case()] */ CABSTR cabstr;
+ /* [case()] */ CABSTRBLOB cabstrblob;
+ /* [case()] */ CALPSTR calpstr;
+ /* [case()] */ CALPWSTR calpwstr;
+ /* [case()] */ CAPROPVARIANT capropvar;
+ } ;
+ };
+typedef struct tagPROPVARIANT __RPC_FAR *LPPROPVARIANT;
+
+// Reserved global Property IDs
+#define PID_DICTIONARY ( 0 )
+
+#define PID_CODEPAGE ( 0x1 )
+
+#define PID_FIRST_USABLE ( 0x2 )
+
+#define PID_FIRST_NAME_DEFAULT ( 0xfff )
+
+#define PID_LOCALE ( 0x80000000 )
+
+#define PID_MODIFY_TIME ( 0x80000001 )
+
+#define PID_SECURITY ( 0x80000002 )
+
+#define PID_ILLEGAL ( 0xffffffff )
+
+// Property IDs for the SummaryInformation Property Set
+
+#define PIDSI_TITLE 0x00000002L // VT_LPSTR
+#define PIDSI_SUBJECT 0x00000003L // VT_LPSTR
+#define PIDSI_AUTHOR 0x00000004L // VT_LPSTR
+#define PIDSI_KEYWORDS 0x00000005L // VT_LPSTR
+#define PIDSI_COMMENTS 0x00000006L // VT_LPSTR
+#define PIDSI_TEMPLATE 0x00000007L // VT_LPSTR
+#define PIDSI_LASTAUTHOR 0x00000008L // VT_LPSTR
+#define PIDSI_REVNUMBER 0x00000009L // VT_LPSTR
+#define PIDSI_EDITTIME 0x0000000aL // VT_FILETIME (UTC)
+#define PIDSI_LASTPRINTED 0x0000000bL // VT_FILETIME (UTC)
+#define PIDSI_CREATE_DTM 0x0000000cL // VT_FILETIME (UTC)
+#define PIDSI_LASTSAVE_DTM 0x0000000dL // VT_FILETIME (UTC)
+#define PIDSI_PAGECOUNT 0x0000000eL // VT_I4
+#define PIDSI_WORDCOUNT 0x0000000fL // VT_I4
+#define PIDSI_CHARCOUNT 0x00000010L // VT_I4
+#define PIDSI_THUMBNAIL 0x00000011L // VT_CF
+#define PIDSI_APPNAME 0x00000012L // VT_LPSTR
+#define PIDSI_DOC_SECURITY 0x00000013L // VT_I4
+#define PRSPEC_INVALID ( 0xffffffff )
+
+#define PRSPEC_LPWSTR ( 0 )
+
+#define PRSPEC_PROPID ( 1 )
+
+typedef struct tagPROPSPEC
+ {
+ ULONG ulKind;
+ /* [switch_is] */ /* [switch_type] */ union
+ {
+ /* [case()] */ PROPID propid;
+ /* [case()] */ LPOLESTR lpwstr;
+ /* [default] */ /* Empty union arm */
+ } ;
+ } PROPSPEC;
+
+typedef struct tagSTATPROPSTG
+ {
+ LPOLESTR lpwstrName;
+ PROPID propid;
+ VARTYPE vt;
+ } STATPROPSTG;
+
+// Macros for parsing the OS Version of the Property Set Header
+#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD( (dwOSVer) )
+#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD( (dwOSVer) ))
+#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD( (dwOSVer) ))
+#define PROPSETHDR_OSVERSION_UNKNOWN 0xFFFFFFFF
+typedef struct tagSTATPROPSETSTG
+ {
+ FMTID fmtid;
+ CLSID clsid;
+ DWORD grfFlags;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD dwOSVersion;
+ } STATPROPSETSTG;
+
+
+EXTERN_C const IID IID_IPropertyStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPropertyStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ReadMultiple(
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][out] */ PROPVARIANT __RPC_FAR rgpropvar[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WriteMultiple(
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][in] */ const PROPVARIANT __RPC_FAR rgpropvar[ ],
+ /* [in] */ PROPID propidNameFirst) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteMultiple(
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReadPropertyNames(
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][out] */ LPOLESTR __RPC_FAR rglpwstrName[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WritePropertyNames(
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][in] */ const LPOLESTR __RPC_FAR rglpwstrName[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeletePropertyNames(
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Commit(
+ /* [in] */ DWORD grfCommitFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Enum(
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTimes(
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetClass(
+ /* [in] */ REFCLSID clsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Stat(
+ /* [out] */ STATPROPSETSTG __RPC_FAR *pstatpsstg) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPropertyStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPropertyStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPropertyStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReadMultiple )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][out] */ PROPVARIANT __RPC_FAR rgpropvar[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *WriteMultiple )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][in] */ const PROPVARIANT __RPC_FAR rgpropvar[ ],
+ /* [in] */ PROPID propidNameFirst);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteMultiple )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReadPropertyNames )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][out] */ LPOLESTR __RPC_FAR rglpwstrName[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *WritePropertyNames )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][in] */ const LPOLESTR __RPC_FAR rglpwstrName[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeletePropertyNames )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Revert )(
+ IPropertyStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Enum )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTimes )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetClass )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ REFCLSID clsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stat )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [out] */ STATPROPSETSTG __RPC_FAR *pstatpsstg);
+
+ END_INTERFACE
+ } IPropertyStorageVtbl;
+
+ interface IPropertyStorage
+ {
+ CONST_VTBL struct IPropertyStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPropertyStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPropertyStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPropertyStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPropertyStorage_ReadMultiple(This,cpspec,rgpspec,rgpropvar) \
+ (This)->lpVtbl -> ReadMultiple(This,cpspec,rgpspec,rgpropvar)
+
+#define IPropertyStorage_WriteMultiple(This,cpspec,rgpspec,rgpropvar,propidNameFirst) \
+ (This)->lpVtbl -> WriteMultiple(This,cpspec,rgpspec,rgpropvar,propidNameFirst)
+
+#define IPropertyStorage_DeleteMultiple(This,cpspec,rgpspec) \
+ (This)->lpVtbl -> DeleteMultiple(This,cpspec,rgpspec)
+
+#define IPropertyStorage_ReadPropertyNames(This,cpropid,rgpropid,rglpwstrName) \
+ (This)->lpVtbl -> ReadPropertyNames(This,cpropid,rgpropid,rglpwstrName)
+
+#define IPropertyStorage_WritePropertyNames(This,cpropid,rgpropid,rglpwstrName) \
+ (This)->lpVtbl -> WritePropertyNames(This,cpropid,rgpropid,rglpwstrName)
+
+#define IPropertyStorage_DeletePropertyNames(This,cpropid,rgpropid) \
+ (This)->lpVtbl -> DeletePropertyNames(This,cpropid,rgpropid)
+
+#define IPropertyStorage_Commit(This,grfCommitFlags) \
+ (This)->lpVtbl -> Commit(This,grfCommitFlags)
+
+#define IPropertyStorage_Revert(This) \
+ (This)->lpVtbl -> Revert(This)
+
+#define IPropertyStorage_Enum(This,ppenum) \
+ (This)->lpVtbl -> Enum(This,ppenum)
+
+#define IPropertyStorage_SetTimes(This,pctime,patime,pmtime) \
+ (This)->lpVtbl -> SetTimes(This,pctime,patime,pmtime)
+
+#define IPropertyStorage_SetClass(This,clsid) \
+ (This)->lpVtbl -> SetClass(This,clsid)
+
+#define IPropertyStorage_Stat(This,pstatpsstg) \
+ (This)->lpVtbl -> Stat(This,pstatpsstg)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_ReadMultiple_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][out] */ PROPVARIANT __RPC_FAR rgpropvar[ ]);
+
+
+void __RPC_STUB IPropertyStorage_ReadMultiple_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_WriteMultiple_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][in] */ const PROPVARIANT __RPC_FAR rgpropvar[ ],
+ /* [in] */ PROPID propidNameFirst);
+
+
+void __RPC_STUB IPropertyStorage_WriteMultiple_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_DeleteMultiple_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ]);
+
+
+void __RPC_STUB IPropertyStorage_DeleteMultiple_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_ReadPropertyNames_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][out] */ LPOLESTR __RPC_FAR rglpwstrName[ ]);
+
+
+void __RPC_STUB IPropertyStorage_ReadPropertyNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_WritePropertyNames_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][in] */ const LPOLESTR __RPC_FAR rglpwstrName[ ]);
+
+
+void __RPC_STUB IPropertyStorage_WritePropertyNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_DeletePropertyNames_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ]);
+
+
+void __RPC_STUB IPropertyStorage_DeletePropertyNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Commit_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+
+void __RPC_STUB IPropertyStorage_Commit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Revert_Proxy(
+ IPropertyStorage __RPC_FAR * This);
+
+
+void __RPC_STUB IPropertyStorage_Revert_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Enum_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IPropertyStorage_Enum_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_SetTimes_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime);
+
+
+void __RPC_STUB IPropertyStorage_SetTimes_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_SetClass_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ REFCLSID clsid);
+
+
+void __RPC_STUB IPropertyStorage_SetClass_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Stat_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [out] */ STATPROPSETSTG __RPC_FAR *pstatpsstg);
+
+
+void __RPC_STUB IPropertyStorage_Stat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPropertyStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPropertySetStorage_INTERFACE_DEFINED__
+#define __IPropertySetStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPropertySetStorage
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPropertySetStorage __RPC_FAR *LPPROPERTYSETSTORAGE;
+
+
+EXTERN_C const IID IID_IPropertySetStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPropertySetStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Create(
+ /* [in] */ REFFMTID rfmtid,
+ /* [unique][in] */ const CLSID __RPC_FAR *pclsid,
+ /* [in] */ DWORD grfFlags,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Open(
+ /* [in] */ REFFMTID rfmtid,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Delete(
+ /* [in] */ REFFMTID rfmtid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Enum(
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPropertySetStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPropertySetStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPropertySetStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Create )(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid,
+ /* [unique][in] */ const CLSID __RPC_FAR *pclsid,
+ /* [in] */ DWORD grfFlags,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Open )(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Delete )(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Enum )(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IPropertySetStorageVtbl;
+
+ interface IPropertySetStorage
+ {
+ CONST_VTBL struct IPropertySetStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPropertySetStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPropertySetStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPropertySetStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPropertySetStorage_Create(This,rfmtid,pclsid,grfFlags,grfMode,ppprstg) \
+ (This)->lpVtbl -> Create(This,rfmtid,pclsid,grfFlags,grfMode,ppprstg)
+
+#define IPropertySetStorage_Open(This,rfmtid,grfMode,ppprstg) \
+ (This)->lpVtbl -> Open(This,rfmtid,grfMode,ppprstg)
+
+#define IPropertySetStorage_Delete(This,rfmtid) \
+ (This)->lpVtbl -> Delete(This,rfmtid)
+
+#define IPropertySetStorage_Enum(This,ppenum) \
+ (This)->lpVtbl -> Enum(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Create_Proxy(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid,
+ /* [unique][in] */ const CLSID __RPC_FAR *pclsid,
+ /* [in] */ DWORD grfFlags,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg);
+
+
+void __RPC_STUB IPropertySetStorage_Create_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Open_Proxy(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg);
+
+
+void __RPC_STUB IPropertySetStorage_Open_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Delete_Proxy(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid);
+
+
+void __RPC_STUB IPropertySetStorage_Delete_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Enum_Proxy(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IPropertySetStorage_Enum_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPropertySetStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumSTATPROPSTG_INTERFACE_DEFINED__
+#define __IEnumSTATPROPSTG_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumSTATPROPSTG
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumSTATPROPSTG __RPC_FAR *LPENUMSTATPROPSTG;
+
+
+EXTERN_C const IID IID_IEnumSTATPROPSTG;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumSTATPROPSTG : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumSTATPROPSTGVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumSTATPROPSTG __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumSTATPROPSTG __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumSTATPROPSTG __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumSTATPROPSTGVtbl;
+
+ interface IEnumSTATPROPSTG
+ {
+ CONST_VTBL struct IEnumSTATPROPSTGVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumSTATPROPSTG_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumSTATPROPSTG_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumSTATPROPSTG_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumSTATPROPSTG_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumSTATPROPSTG_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumSTATPROPSTG_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumSTATPROPSTG_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_RemoteNext_Proxy(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumSTATPROPSTG_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Skip_Proxy(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumSTATPROPSTG_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Reset_Proxy(
+ IEnumSTATPROPSTG __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumSTATPROPSTG_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Clone_Proxy(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumSTATPROPSTG_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumSTATPROPSTG_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__
+#define __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumSTATPROPSETSTG
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumSTATPROPSETSTG __RPC_FAR *LPENUMSTATPROPSETSTG;
+
+
+EXTERN_C const IID IID_IEnumSTATPROPSETSTG;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumSTATPROPSETSTG : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSETSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumSTATPROPSETSTGVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSETSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumSTATPROPSETSTGVtbl;
+
+ interface IEnumSTATPROPSETSTG
+ {
+ CONST_VTBL struct IEnumSTATPROPSETSTGVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumSTATPROPSETSTG_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumSTATPROPSETSTG_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumSTATPROPSETSTG_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumSTATPROPSETSTG_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumSTATPROPSETSTG_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumSTATPROPSETSTG_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumSTATPROPSETSTG_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_RemoteNext_Proxy(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSETSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumSTATPROPSETSTG_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Skip_Proxy(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumSTATPROPSETSTG_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Reset_Proxy(
+ IEnumSTATPROPSETSTG __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumSTATPROPSETSTG_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Clone_Proxy(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumSTATPROPSETSTG_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0046
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+WINOLEAPI PropVariantCopy ( PROPVARIANT * pvarDest, const PROPVARIANT * pvarSrc );
+WINOLEAPI PropVariantClear ( PROPVARIANT * pvar );
+WINOLEAPI FreePropVariantArray ( ULONG cVariants, PROPVARIANT * rgvars );
+
+#define _PROPVARIANTINIT_DEFINED_
+# ifdef __cplusplus
+inline void PropVariantInit ( PROPVARIANT * pvar )
+{
+ memset ( pvar, 0, sizeof(PROPVARIANT) );
+}
+# else
+# define PropVariantInit(pvar) memset ( pvar, 0, sizeof(PROPVARIANT) )
+# endif
+
+
+#ifndef _STGCREATEPROPSTG_DEFINED_
+WINOLEAPI StgCreatePropStg( IUnknown* pUnk, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );
+WINOLEAPI StgOpenPropStg( IUnknown* pUnk, REFFMTID fmtid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );
+WINOLEAPI StgCreatePropSetStg( IStorage *pStorage, DWORD dwReserved, IPropertySetStorage **ppPropSetStg);
+
+#define CCH_MAX_PROPSTG_NAME 31
+WINOLEAPI FmtIdToPropStgName( const FMTID *pfmtid, LPOLESTR oszName );
+WINOLEAPI PropStgNameToFmtId( const LPOLESTR oszName, FMTID *pfmtid );
+#endif
+#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
+// This interface is only valid on Windows NT 4.0
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0046_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0046_v0_0_s_ifspec;
+
+#ifndef __IClientSecurity_INTERFACE_DEFINED__
+#define __IClientSecurity_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IClientSecurity
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef struct tagSOLE_AUTHENTICATION_SERVICE
+ {
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ OLECHAR __RPC_FAR *pPrincipalName;
+ HRESULT hr;
+ } SOLE_AUTHENTICATION_SERVICE;
+
+typedef SOLE_AUTHENTICATION_SERVICE __RPC_FAR *PSOLE_AUTHENTICATION_SERVICE;
+
+typedef
+enum tagEOLE_AUTHENTICATION_CAPABILITIES
+ { EOAC_NONE = 0,
+ EOAC_MUTUAL_AUTH = 0x1,
+ EOAC_SECURE_REFS = 0x2,
+ EOAC_ACCESS_CONTROL = 0x4,
+ EOAC_APPID = 0x8,
+ EOAC_DYNAMIC = 0x10
+ } EOLE_AUTHENTICATION_CAPABILITIES;
+
+
+EXTERN_C const IID IID_IClientSecurity;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IClientSecurity : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryBlanket(
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pAuthInfo,
+ /* [out] */ DWORD __RPC_FAR *pCapabilites) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBlanket(
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [in] */ DWORD AuthnSvc,
+ /* [in] */ DWORD AuthzSvc,
+ /* [in] */ OLECHAR __RPC_FAR *pServerPrincName,
+ /* [in] */ DWORD AuthnLevel,
+ /* [in] */ DWORD ImpLevel,
+ /* [in] */ void __RPC_FAR *pAuthInfo,
+ /* [in] */ DWORD Capabilities) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CopyProxy(
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppCopy) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IClientSecurityVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IClientSecurity __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IClientSecurity __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryBlanket )(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pAuthInfo,
+ /* [out] */ DWORD __RPC_FAR *pCapabilites);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetBlanket )(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [in] */ DWORD AuthnSvc,
+ /* [in] */ DWORD AuthzSvc,
+ /* [in] */ OLECHAR __RPC_FAR *pServerPrincName,
+ /* [in] */ DWORD AuthnLevel,
+ /* [in] */ DWORD ImpLevel,
+ /* [in] */ void __RPC_FAR *pAuthInfo,
+ /* [in] */ DWORD Capabilities);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CopyProxy )(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppCopy);
+
+ END_INTERFACE
+ } IClientSecurityVtbl;
+
+ interface IClientSecurity
+ {
+ CONST_VTBL struct IClientSecurityVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IClientSecurity_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IClientSecurity_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IClientSecurity_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IClientSecurity_QueryBlanket(This,pProxy,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pAuthInfo,pCapabilites) \
+ (This)->lpVtbl -> QueryBlanket(This,pProxy,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pAuthInfo,pCapabilites)
+
+#define IClientSecurity_SetBlanket(This,pProxy,AuthnSvc,AuthzSvc,pServerPrincName,AuthnLevel,ImpLevel,pAuthInfo,Capabilities) \
+ (This)->lpVtbl -> SetBlanket(This,pProxy,AuthnSvc,AuthzSvc,pServerPrincName,AuthnLevel,ImpLevel,pAuthInfo,Capabilities)
+
+#define IClientSecurity_CopyProxy(This,pProxy,ppCopy) \
+ (This)->lpVtbl -> CopyProxy(This,pProxy,ppCopy)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IClientSecurity_QueryBlanket_Proxy(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pAuthInfo,
+ /* [out] */ DWORD __RPC_FAR *pCapabilites);
+
+
+void __RPC_STUB IClientSecurity_QueryBlanket_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSecurity_SetBlanket_Proxy(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [in] */ DWORD AuthnSvc,
+ /* [in] */ DWORD AuthzSvc,
+ /* [in] */ OLECHAR __RPC_FAR *pServerPrincName,
+ /* [in] */ DWORD AuthnLevel,
+ /* [in] */ DWORD ImpLevel,
+ /* [in] */ void __RPC_FAR *pAuthInfo,
+ /* [in] */ DWORD Capabilities);
+
+
+void __RPC_STUB IClientSecurity_SetBlanket_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSecurity_CopyProxy_Proxy(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppCopy);
+
+
+void __RPC_STUB IClientSecurity_CopyProxy_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IClientSecurity_INTERFACE_DEFINED__ */
+
+
+#ifndef __IServerSecurity_INTERFACE_DEFINED__
+#define __IServerSecurity_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IServerSecurity
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IServerSecurity;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IServerSecurity : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryBlanket(
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pPrivs,
+ /* [out] */ DWORD __RPC_FAR *pCapabilities) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ImpersonateClient( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevertToSelf( void) = 0;
+
+ virtual BOOL STDMETHODCALLTYPE IsImpersonating( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IServerSecurityVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IServerSecurity __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IServerSecurity __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IServerSecurity __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryBlanket )(
+ IServerSecurity __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pPrivs,
+ /* [out] */ DWORD __RPC_FAR *pCapabilities);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ImpersonateClient )(
+ IServerSecurity __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RevertToSelf )(
+ IServerSecurity __RPC_FAR * This);
+
+ BOOL ( STDMETHODCALLTYPE __RPC_FAR *IsImpersonating )(
+ IServerSecurity __RPC_FAR * This);
+
+ END_INTERFACE
+ } IServerSecurityVtbl;
+
+ interface IServerSecurity
+ {
+ CONST_VTBL struct IServerSecurityVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IServerSecurity_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IServerSecurity_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IServerSecurity_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IServerSecurity_QueryBlanket(This,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pPrivs,pCapabilities) \
+ (This)->lpVtbl -> QueryBlanket(This,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pPrivs,pCapabilities)
+
+#define IServerSecurity_ImpersonateClient(This) \
+ (This)->lpVtbl -> ImpersonateClient(This)
+
+#define IServerSecurity_RevertToSelf(This) \
+ (This)->lpVtbl -> RevertToSelf(This)
+
+#define IServerSecurity_IsImpersonating(This) \
+ (This)->lpVtbl -> IsImpersonating(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IServerSecurity_QueryBlanket_Proxy(
+ IServerSecurity __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pPrivs,
+ /* [out] */ DWORD __RPC_FAR *pCapabilities);
+
+
+void __RPC_STUB IServerSecurity_QueryBlanket_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IServerSecurity_ImpersonateClient_Proxy(
+ IServerSecurity __RPC_FAR * This);
+
+
+void __RPC_STUB IServerSecurity_ImpersonateClient_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IServerSecurity_RevertToSelf_Proxy(
+ IServerSecurity __RPC_FAR * This);
+
+
+void __RPC_STUB IServerSecurity_RevertToSelf_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+BOOL STDMETHODCALLTYPE IServerSecurity_IsImpersonating_Proxy(
+ IServerSecurity __RPC_FAR * This);
+
+
+void __RPC_STUB IServerSecurity_IsImpersonating_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IServerSecurity_INTERFACE_DEFINED__ */
+
+
+#ifndef __IClassActivator_INTERFACE_DEFINED__
+#define __IClassActivator_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IClassActivator
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+
+EXTERN_C const IID IID_IClassActivator;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IClassActivator : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetClassObject(
+ /* [in] */ REFCLSID rclsid,
+ /* [in] */ DWORD dwClassContext,
+ /* [in] */ LCID locale,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppv) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IClassActivatorVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IClassActivator __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IClassActivator __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IClassActivator __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassObject )(
+ IClassActivator __RPC_FAR * This,
+ /* [in] */ REFCLSID rclsid,
+ /* [in] */ DWORD dwClassContext,
+ /* [in] */ LCID locale,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+ END_INTERFACE
+ } IClassActivatorVtbl;
+
+ interface IClassActivator
+ {
+ CONST_VTBL struct IClassActivatorVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IClassActivator_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IClassActivator_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IClassActivator_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IClassActivator_GetClassObject(This,rclsid,dwClassContext,locale,riid,ppv) \
+ (This)->lpVtbl -> GetClassObject(This,rclsid,dwClassContext,locale,riid,ppv)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IClassActivator_GetClassObject_Proxy(
+ IClassActivator __RPC_FAR * This,
+ /* [in] */ REFCLSID rclsid,
+ /* [in] */ DWORD dwClassContext,
+ /* [in] */ LCID locale,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+
+void __RPC_STUB IClassActivator_GetClassObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IClassActivator_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0049
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#endif //DCOM
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0049_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0049_v0_0_s_ifspec;
+
+#ifndef __IFillLockBytes_INTERFACE_DEFINED__
+#define __IFillLockBytes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IFillLockBytes
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IFillLockBytes;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IFillLockBytes : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE FillAppend(
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE FillAt(
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFillSize(
+ /* [in] */ ULARGE_INTEGER ulSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Terminate(
+ /* [in] */ BOOL bCanceled) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IFillLockBytesVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IFillLockBytes __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IFillLockBytes __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FillAppend )(
+ IFillLockBytes __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FillAt )(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFillSize )(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulSize);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Terminate )(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ BOOL bCanceled);
+
+ END_INTERFACE
+ } IFillLockBytesVtbl;
+
+ interface IFillLockBytes
+ {
+ CONST_VTBL struct IFillLockBytesVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IFillLockBytes_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IFillLockBytes_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IFillLockBytes_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IFillLockBytes_FillAppend(This,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> FillAppend(This,pv,cb,pcbWritten)
+
+#define IFillLockBytes_FillAt(This,ulOffset,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> FillAt(This,ulOffset,pv,cb,pcbWritten)
+
+#define IFillLockBytes_SetFillSize(This,ulSize) \
+ (This)->lpVtbl -> SetFillSize(This,ulSize)
+
+#define IFillLockBytes_Terminate(This,bCanceled) \
+ (This)->lpVtbl -> Terminate(This,bCanceled)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT __stdcall IFillLockBytes_RemoteFillAppend_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+void __RPC_STUB IFillLockBytes_RemoteFillAppend_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT __stdcall IFillLockBytes_RemoteFillAt_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+void __RPC_STUB IFillLockBytes_RemoteFillAt_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFillLockBytes_SetFillSize_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulSize);
+
+
+void __RPC_STUB IFillLockBytes_SetFillSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFillLockBytes_Terminate_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ BOOL bCanceled);
+
+
+void __RPC_STUB IFillLockBytes_Terminate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IFillLockBytes_INTERFACE_DEFINED__ */
+
+
+#ifndef __IProgressNotify_INTERFACE_DEFINED__
+#define __IProgressNotify_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IProgressNotify
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IProgressNotify;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IProgressNotify : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnProgress(
+ /* [in] */ DWORD dwProgressCurrent,
+ /* [in] */ DWORD dwProgressMaximum,
+ /* [in] */ BOOL fAccurate,
+ /* [in] */ BOOL fOwner) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IProgressNotifyVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IProgressNotify __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IProgressNotify __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IProgressNotify __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnProgress )(
+ IProgressNotify __RPC_FAR * This,
+ /* [in] */ DWORD dwProgressCurrent,
+ /* [in] */ DWORD dwProgressMaximum,
+ /* [in] */ BOOL fAccurate,
+ /* [in] */ BOOL fOwner);
+
+ END_INTERFACE
+ } IProgressNotifyVtbl;
+
+ interface IProgressNotify
+ {
+ CONST_VTBL struct IProgressNotifyVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IProgressNotify_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IProgressNotify_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IProgressNotify_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IProgressNotify_OnProgress(This,dwProgressCurrent,dwProgressMaximum,fAccurate,fOwner) \
+ (This)->lpVtbl -> OnProgress(This,dwProgressCurrent,dwProgressMaximum,fAccurate,fOwner)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IProgressNotify_OnProgress_Proxy(
+ IProgressNotify __RPC_FAR * This,
+ /* [in] */ DWORD dwProgressCurrent,
+ /* [in] */ DWORD dwProgressMaximum,
+ /* [in] */ BOOL fAccurate,
+ /* [in] */ BOOL fOwner);
+
+
+void __RPC_STUB IProgressNotify_OnProgress_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IProgressNotify_INTERFACE_DEFINED__ */
+
+
+#ifndef __ILayoutStorage_INTERFACE_DEFINED__
+#define __ILayoutStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ILayoutStorage
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef struct tagStorageLayout
+ {
+ DWORD LayoutType;
+ OLECHAR __RPC_FAR *pwcsElementName;
+ LARGE_INTEGER cOffset;
+ LARGE_INTEGER cBytes;
+ } StorageLayout;
+
+
+EXTERN_C const IID IID_ILayoutStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ILayoutStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT __stdcall LayoutScript(
+ /* [in] */ StorageLayout __RPC_FAR *pStorageLayout,
+ /* [in] */ DWORD nEntries,
+ /* [in] */ DWORD glfInterleavedFlag) = 0;
+
+ virtual HRESULT __stdcall BeginMonitor( void) = 0;
+
+ virtual HRESULT __stdcall EndMonitor( void) = 0;
+
+ virtual HRESULT __stdcall ReLayoutDocfile(
+ /* [in] */ OLECHAR __RPC_FAR *pwcsNewDfName) = 0;
+
+ virtual HRESULT __stdcall ReLayoutDocfileOnILockBytes(
+ /* [in] */ ILockBytes __RPC_FAR *pILockBytes) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ILayoutStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ILayoutStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ILayoutStorage __RPC_FAR * This);
+
+ HRESULT ( __stdcall __RPC_FAR *LayoutScript )(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ StorageLayout __RPC_FAR *pStorageLayout,
+ /* [in] */ DWORD nEntries,
+ /* [in] */ DWORD glfInterleavedFlag);
+
+ HRESULT ( __stdcall __RPC_FAR *BeginMonitor )(
+ ILayoutStorage __RPC_FAR * This);
+
+ HRESULT ( __stdcall __RPC_FAR *EndMonitor )(
+ ILayoutStorage __RPC_FAR * This);
+
+ HRESULT ( __stdcall __RPC_FAR *ReLayoutDocfile )(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ OLECHAR __RPC_FAR *pwcsNewDfName);
+
+ HRESULT ( __stdcall __RPC_FAR *ReLayoutDocfileOnILockBytes )(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ ILockBytes __RPC_FAR *pILockBytes);
+
+ END_INTERFACE
+ } ILayoutStorageVtbl;
+
+ interface ILayoutStorage
+ {
+ CONST_VTBL struct ILayoutStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ILayoutStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ILayoutStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ILayoutStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ILayoutStorage_LayoutScript(This,pStorageLayout,nEntries,glfInterleavedFlag) \
+ (This)->lpVtbl -> LayoutScript(This,pStorageLayout,nEntries,glfInterleavedFlag)
+
+#define ILayoutStorage_BeginMonitor(This) \
+ (This)->lpVtbl -> BeginMonitor(This)
+
+#define ILayoutStorage_EndMonitor(This) \
+ (This)->lpVtbl -> EndMonitor(This)
+
+#define ILayoutStorage_ReLayoutDocfile(This,pwcsNewDfName) \
+ (This)->lpVtbl -> ReLayoutDocfile(This,pwcsNewDfName)
+
+#define ILayoutStorage_ReLayoutDocfileOnILockBytes(This,pILockBytes) \
+ (This)->lpVtbl -> ReLayoutDocfileOnILockBytes(This,pILockBytes)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT __stdcall ILayoutStorage_LayoutScript_Proxy(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ StorageLayout __RPC_FAR *pStorageLayout,
+ /* [in] */ DWORD nEntries,
+ /* [in] */ DWORD glfInterleavedFlag);
+
+
+void __RPC_STUB ILayoutStorage_LayoutScript_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT __stdcall ILayoutStorage_BeginMonitor_Proxy(
+ ILayoutStorage __RPC_FAR * This);
+
+
+void __RPC_STUB ILayoutStorage_BeginMonitor_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT __stdcall ILayoutStorage_EndMonitor_Proxy(
+ ILayoutStorage __RPC_FAR * This);
+
+
+void __RPC_STUB ILayoutStorage_EndMonitor_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT __stdcall ILayoutStorage_ReLayoutDocfile_Proxy(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ OLECHAR __RPC_FAR *pwcsNewDfName);
+
+
+void __RPC_STUB ILayoutStorage_ReLayoutDocfile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT __stdcall ILayoutStorage_ReLayoutDocfileOnILockBytes_Proxy(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ ILockBytes __RPC_FAR *pILockBytes);
+
+
+void __RPC_STUB ILayoutStorage_ReLayoutDocfileOnILockBytes_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ILayoutStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __ISurrogate_INTERFACE_DEFINED__
+#define __ISurrogate_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISurrogate
+ * at Fri Nov 15 09:35:03 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [object][unique][version][uuid] */
+
+
+typedef /* [unique] */ ISurrogate __RPC_FAR *LPSURROGATE;
+
+
+EXTERN_C const IID IID_ISurrogate;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISurrogate : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE LoadDllServer(
+ /* [in] */ REFCLSID Clsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FreeSurrogate( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISurrogateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISurrogate __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISurrogate __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISurrogate __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LoadDllServer )(
+ ISurrogate __RPC_FAR * This,
+ /* [in] */ REFCLSID Clsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FreeSurrogate )(
+ ISurrogate __RPC_FAR * This);
+
+ END_INTERFACE
+ } ISurrogateVtbl;
+
+ interface ISurrogate
+ {
+ CONST_VTBL struct ISurrogateVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISurrogate_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISurrogate_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISurrogate_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISurrogate_LoadDllServer(This,Clsid) \
+ (This)->lpVtbl -> LoadDllServer(This,Clsid)
+
+#define ISurrogate_FreeSurrogate(This) \
+ (This)->lpVtbl -> FreeSurrogate(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ISurrogate_LoadDllServer_Proxy(
+ ISurrogate __RPC_FAR * This,
+ /* [in] */ REFCLSID Clsid);
+
+
+void __RPC_STUB ISurrogate_LoadDllServer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ISurrogate_FreeSurrogate_Proxy(
+ ISurrogate __RPC_FAR * This);
+
+
+void __RPC_STUB ISurrogate_FreeSurrogate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISurrogate_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER ASYNC_STGMEDIUM_UserSize( unsigned long __RPC_FAR *, unsigned long , ASYNC_STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER ASYNC_STGMEDIUM_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, ASYNC_STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER ASYNC_STGMEDIUM_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, ASYNC_STGMEDIUM __RPC_FAR * );
+void __RPC_USER ASYNC_STGMEDIUM_UserFree( unsigned long __RPC_FAR *, ASYNC_STGMEDIUM __RPC_FAR * );
+
+unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * );
+
+unsigned long __RPC_USER CLIPFORMAT_UserSize( unsigned long __RPC_FAR *, unsigned long , CLIPFORMAT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLIPFORMAT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLIPFORMAT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+void __RPC_USER CLIPFORMAT_UserFree( unsigned long __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+
+unsigned long __RPC_USER FLAG_STGMEDIUM_UserSize( unsigned long __RPC_FAR *, unsigned long , FLAG_STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER FLAG_STGMEDIUM_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, FLAG_STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER FLAG_STGMEDIUM_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, FLAG_STGMEDIUM __RPC_FAR * );
+void __RPC_USER FLAG_STGMEDIUM_UserFree( unsigned long __RPC_FAR *, FLAG_STGMEDIUM __RPC_FAR * );
+
+unsigned long __RPC_USER SNB_UserSize( unsigned long __RPC_FAR *, unsigned long , SNB __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER SNB_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, SNB __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER SNB_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, SNB __RPC_FAR * );
+void __RPC_USER SNB_UserFree( unsigned long __RPC_FAR *, SNB __RPC_FAR * );
+
+unsigned long __RPC_USER STGMEDIUM_UserSize( unsigned long __RPC_FAR *, unsigned long , STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER STGMEDIUM_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+void __RPC_USER STGMEDIUM_UserFree( unsigned long __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Proxy(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Stub(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IBindCtx_SetBindOptions_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ BIND_OPTS __RPC_FAR *pbindopts);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindCtx_SetBindOptions_Stub(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ BIND_OPTS2 __RPC_FAR *pbindopts);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IBindCtx_GetBindOptions_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [out][in] */ BIND_OPTS __RPC_FAR *pbindopts);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindCtx_GetBindOptions_Stub(
+ IBindCtx __RPC_FAR * This,
+ /* [out][in] */ BIND_OPTS2 __RPC_FAR *pbindopts);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Proxy(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Stub(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ BOOL STDMETHODCALLTYPE IRunnableObject_IsRunning_Proxy(
+ IRunnableObject __RPC_FAR * This);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IRunnableObject_IsRunning_Stub(
+ IRunnableObject __RPC_FAR * This);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Stub(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvResult);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Stub(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumString_Next_Proxy(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLESTR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumString_Next_Stub(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLESTR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ISequentialStream_Read_Proxy(
+ ISequentialStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ISequentialStream_Read_Stub(
+ ISequentialStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ISequentialStream_Write_Proxy(
+ ISequentialStream __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ISequentialStream_Write_Stub(
+ ISequentialStream __RPC_FAR * This,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IStream_Seek_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStream_Seek_Stub(
+ IStream __RPC_FAR * This,
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IStream_CopyTo_Proxy(
+ IStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStream_CopyTo_Stub(
+ IStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Proxy(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Stub(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ void __RPC_FAR *reserved1,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Stub(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ unsigned long cbReserved1,
+ /* [size_is][unique][in] */ byte __RPC_FAR *reserved1,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD reserved1,
+ /* [size_is][unique][in] */ void __RPC_FAR *reserved2,
+ /* [in] */ DWORD reserved3,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Stub(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD reserved1,
+ /* [in] */ unsigned long cbReserved2,
+ /* [size_is][unique][in] */ byte __RPC_FAR *reserved2,
+ /* [in] */ DWORD reserved3,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+
+/* [call_as] */ HRESULT __stdcall ILockBytes_ReadAt_Stub(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [length_is][size_is][out] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Stub(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Proxy(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ FORMATETC __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Stub(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ FORMATETC __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Proxy(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDATA __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Stub(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDATA __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Stub(
+ IAdviseSink __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ ASYNC_STGMEDIUM __RPC_FAR *pStgmed);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Stub(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink_OnRename_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_OnRename_Stub(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink_OnSave_Proxy(
+ IAdviseSink __RPC_FAR * This);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_OnSave_Stub(
+ IAdviseSink __RPC_FAR * This);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink_OnClose_Proxy(
+ IAdviseSink __RPC_FAR * This);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IAdviseSink_OnClose_Stub(
+ IAdviseSink __RPC_FAR * This);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Proxy(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Stub(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IDataObject_GetData_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
+ /* [out] */ STGMEDIUM __RPC_FAR *pmedium);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_GetData_Stub(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
+ /* [out] */ STGMEDIUM __RPC_FAR *pRemoteMedium);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pmedium);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Stub(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pRemoteMedium);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IDataObject_SetData_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_SetData_Stub(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ FLAG_STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Next_Proxy(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Next_Stub(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Next_Proxy(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSETSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Next_Stub(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSETSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IFillLockBytes_FillAppend_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+/* [call_as] */ HRESULT __stdcall IFillLockBytes_FillAppend_Stub(
+ IFillLockBytes __RPC_FAR * This,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IFillLockBytes_FillAt_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+/* [call_as] */ HRESULT __stdcall IFillLockBytes_FillAt_Stub(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/chicago/objidl.idl b/public/sdk/inc/chicago/objidl.idl
new file mode 100644
index 000000000..48b0d57da
--- /dev/null
+++ b/public/sdk/inc/chicago/objidl.idl
@@ -0,0 +1,2876 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: objidl.idl
+//
+//--------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+import "wtypes.idl";
+#endif
+
+interface IStream;
+interface IMoniker;
+interface IEnumMoniker;
+interface IEnumString;
+interface IRunningObjectTable;
+interface IStorage;
+interface IEnumSTATSTG;
+interface IAdviseSink;
+interface IBindCtx;
+interface IEnumMoniker;
+
+/****************************************************************************
+ * Component Object Interfaces
+ ****************************************************************************/
+
+[
+ local,
+ object,
+ uuid(00000003-0000-0000-C000-000000000046)
+]
+
+interface IMarshal : IUnknown
+{
+
+ typedef [unique] IMarshal *LPMARSHAL;
+
+ HRESULT GetUnmarshalClass
+ (
+ [in] REFIID riid,
+ [in, unique] void *pv,
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [in] DWORD mshlflags,
+ [out] CLSID *pCid
+ );
+
+ HRESULT GetMarshalSizeMax
+ (
+ [in] REFIID riid,
+ [in, unique] void *pv,
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [in] DWORD mshlflags,
+ [out] DWORD *pSize
+ );
+
+ HRESULT MarshalInterface
+ (
+ [in, unique] IStream *pStm,
+ [in] REFIID riid,
+ [in, unique] void *pv,
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [in] DWORD mshlflags
+ );
+
+ HRESULT UnmarshalInterface
+ (
+ [in, unique] IStream *pStm,
+ [in] REFIID riid,
+ [out] void **ppv
+ );
+
+ HRESULT ReleaseMarshalData
+ (
+ [in, unique] IStream *pStm
+ );
+
+ HRESULT DisconnectObject
+ (
+ [in] DWORD dwReserved
+ );
+}
+
+[
+ local,
+ object,
+ uuid(00000002-0000-0000-C000-000000000046)
+]
+
+interface IMalloc : IUnknown
+{
+
+ typedef [unique] IMalloc *LPMALLOC;
+
+ void *Alloc([in] ULONG cb);
+
+ void *Realloc ([in] void *pv,
+ [in] ULONG cb);
+
+ void Free([in] void *pv);
+
+ ULONG GetSize([in] void *pv);
+
+ int DidAlloc(void *pv);
+
+ void HeapMinimize(void);
+}
+
+[
+ local,
+ object,
+ uuid(0000001d-0000-0000-C000-000000000046)
+]
+
+interface IMallocSpy : IUnknown
+{
+
+ typedef [unique] IMallocSpy *LPMALLOCSPY;
+
+ ULONG PreAlloc
+ (
+ [in] ULONG cbRequest
+ );
+
+ void *PostAlloc
+ (
+ [in] void *pActual
+ );
+
+ void *PreFree
+ (
+ [in] void *pRequest,
+ [in] BOOL fSpyed
+ );
+
+ void PostFree
+ (
+ [in] BOOL fSpyed
+ );
+
+ ULONG PreRealloc
+ (
+ [in] void *pRequest,
+ [in] ULONG cbRequest,
+ [out] void **ppNewRequest,
+ [in] BOOL fSpyed
+ );
+
+ void *PostRealloc
+ (
+ [in] void *pActual,
+ [in] BOOL fSpyed
+ );
+
+ void *PreGetSize
+ (
+ [in] void *pRequest,
+ [in] BOOL fSpyed
+ );
+
+ ULONG PostGetSize
+ (
+ [in] ULONG cbActual,
+ [in] BOOL fSpyed
+ );
+
+ void *PreDidAlloc
+ (
+ [in] void *pRequest,
+ [in] BOOL fSpyed
+ );
+
+ int PostDidAlloc
+ (
+ [in] void *pRequest,
+ [in] BOOL fSpyed,
+ [in] int fActual
+ );
+
+ void PreHeapMinimize(void);
+
+ void PostHeapMinimize(void);
+}
+
+[
+ local,
+ object,
+ uuid(00000018-0000-0000-C000-000000000046)
+]
+
+interface IStdMarshalInfo : IUnknown
+{
+
+ typedef [unique] IStdMarshalInfo * LPSTDMARSHALINFO;
+
+ HRESULT GetClassForHandler
+ (
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [out] CLSID *pClsid
+ );
+}
+
+[
+ object,
+ local,
+ uuid(00000019-0000-0000-C000-000000000046)
+]
+
+interface IExternalConnection : IUnknown
+{
+
+ typedef [unique] IExternalConnection* LPEXTERNALCONNECTION;
+
+
+ // bit flags for IExternalConnection
+ typedef enum tagEXTCONN
+ {
+ EXTCONN_STRONG = 0x0001, // strong connection
+ EXTCONN_WEAK = 0x0002, // weak connection (table, container)
+ EXTCONN_CALLABLE = 0x0004, // table .vs. callable
+ } EXTCONN;
+
+ // *** IExternalConnection methods ***
+ DWORD AddConnection
+ (
+ [in] DWORD extconn,
+ [in] DWORD reserved
+ );
+
+ DWORD ReleaseConnection
+ (
+ [in] DWORD extconn,
+ [in] DWORD reserved,
+ [in] BOOL fLastReleaseCloses
+ );
+}
+
+
+[
+ object,
+ local,
+ uuid(00000020-0000-0000-C000-000000000046)
+]
+
+interface IMultiQI : IUnknown
+{
+ typedef [unique] IMultiQI* LPMULTIQI;
+
+ typedef struct tagMULTI_QI
+ {
+ const IID *pIID; // pass this one in
+ IUnknown *pItf; // get these out (you must set to NULL before calling)
+ HRESULT hr;
+ } MULTI_QI;
+
+ HRESULT QueryMultipleInterfaces
+ (
+ [in] ULONG cMQIs,
+ [in,out] MULTI_QI *pMQIs
+ );
+}
+
+
+[
+ object,
+ uuid(00000100-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumUnknown : IUnknown
+{
+
+ typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out] IUnknown **rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ IUnknown **rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumUnknown **ppenum);
+}
+
+
+/****************************************************************************
+ * Binding Interfaces
+ ****************************************************************************/
+
+[
+ object,
+ uuid(0000000e-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IBindCtx : IUnknown
+{
+
+ typedef [unique] IBindCtx *LPBC;
+
+ typedef [unique] IBindCtx *LPBINDCTX;
+
+ typedef struct tagBIND_OPTS {
+ DWORD cbStruct; // sizeof(BIND_OPTS)
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ } BIND_OPTS, * LPBIND_OPTS;
+
+cpp_quote("#if defined(__cplusplus)")
+cpp_quote(" typedef struct tagBIND_OPTS2 : tagBIND_OPTS{")
+cpp_quote(" DWORD dwTrackFlags;")
+cpp_quote(" DWORD dwClassContext;")
+cpp_quote(" LCID locale;")
+cpp_quote(" COSERVERINFO * pServerInfo;")
+cpp_quote(" } BIND_OPTS2, * LPBIND_OPTS2;")
+cpp_quote("#else")
+
+ typedef struct tagBIND_OPTS2 {
+ DWORD cbStruct; // sizeof(BIND_OPTS2)
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ DWORD dwTrackFlags;
+ DWORD dwClassContext;
+ LCID locale;
+ COSERVERINFO * pServerInfo;
+ } BIND_OPTS2, * LPBIND_OPTS2;
+
+cpp_quote("#endif")
+
+
+ typedef enum tagBIND_FLAGS
+ {
+ BIND_MAYBOTHERUSER = 1,
+ BIND_JUSTTESTEXISTENCE = 2
+ } BIND_FLAGS;
+
+ HRESULT RegisterObjectBound
+ (
+ [in, unique] IUnknown *punk
+ );
+
+ HRESULT RevokeObjectBound
+ (
+ [in, unique] IUnknown *punk
+ );
+
+ HRESULT ReleaseBoundObjects
+ (
+ void
+ );
+
+ [local]
+ HRESULT SetBindOptions
+ (
+ [in] BIND_OPTS *pbindopts
+ );
+
+ [call_as(SetBindOptions)]
+ HRESULT RemoteSetBindOptions
+ (
+ [in] BIND_OPTS2 *pbindopts
+ );
+
+ [local]
+ HRESULT GetBindOptions
+ (
+ [in, out] BIND_OPTS *pbindopts
+ );
+
+ [call_as(GetBindOptions)]
+ HRESULT RemoteGetBindOptions
+ (
+ [in, out] BIND_OPTS2 *pbindopts
+ );
+
+ HRESULT GetRunningObjectTable
+ (
+ [out] IRunningObjectTable **pprot
+ );
+
+ HRESULT RegisterObjectParam(
+ [in] LPOLESTR pszKey,
+ [in, unique] IUnknown *punk
+ );
+
+ HRESULT GetObjectParam(
+ [in] LPOLESTR pszKey,
+ [out] IUnknown **ppunk
+ );
+
+ HRESULT EnumObjectParam
+ (
+ [out] IEnumString **ppenum
+ );
+
+ HRESULT RevokeObjectParam
+ (
+ [in] LPOLESTR pszKey
+ );
+}
+
+[
+ object,
+ uuid(00000102-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumMoniker : IUnknown
+{
+
+ typedef [unique] IEnumMoniker *LPENUMMONIKER;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ IMoniker **rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ IMoniker **rgelt,
+ [out] ULONG *pceltFetched);
+
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumMoniker **ppenum);
+}
+
+[
+ object,
+ uuid(00000126-0000-0000-C000-000000000046)
+]
+interface IRunnableObject : IUnknown
+{
+
+ typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
+
+ HRESULT GetRunningClass(
+ [out] LPCLSID lpClsid);
+
+ HRESULT Run(
+ [in] LPBINDCTX pbc);
+
+ [local]
+ BOOL IsRunning();
+
+ [call_as(IsRunning)]
+ HRESULT RemoteIsRunning();
+
+ HRESULT LockRunning(
+ [in] BOOL fLock,
+ [in] BOOL fLastUnlockCloses);
+
+ HRESULT SetContainedObject(
+ [in] BOOL fContained);
+}
+
+[
+ object,
+ uuid(00000010-0000-0000-C000-000000000046)
+]
+
+interface IRunningObjectTable : IUnknown
+{
+
+ typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
+
+ HRESULT Register
+ (
+ [in] DWORD grfFlags,
+ [in, unique] IUnknown *punkObject,
+ [in, unique] IMoniker *pmkObjectName,
+ [out] DWORD *pdwRegister
+ );
+
+ HRESULT Revoke
+ (
+ [in] DWORD dwRegister
+ );
+
+ HRESULT IsRunning
+ (
+ [in, unique] IMoniker *pmkObjectName
+ );
+
+ HRESULT GetObject
+ (
+ [in, unique] IMoniker *pmkObjectName,
+ [out] IUnknown **ppunkObject
+ );
+
+ HRESULT NoteChangeTime
+ (
+ [in] DWORD dwRegister,
+ [in] FILETIME *pfiletime
+ );
+
+ HRESULT GetTimeOfLastChange
+ (
+ [in, unique] IMoniker *pmkObjectName,
+ [out] FILETIME *pfiletime
+ );
+
+ HRESULT EnumRunning
+ (
+ [out] IEnumMoniker **ppenumMoniker
+ );
+
+}
+
+[
+ object,
+ uuid(0000010c-0000-0000-C000-000000000046)
+]
+
+interface IPersist : IUnknown
+{
+
+ typedef [unique] IPersist *LPPERSIST;
+
+ HRESULT GetClassID
+ (
+ [out] CLSID *pClassID
+ );
+}
+
+[
+ object,
+ uuid(00000109-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IPersistStream : IPersist
+{
+
+ typedef [unique] IPersistStream *LPPERSISTSTREAM;
+
+ HRESULT IsDirty
+ (
+ void
+ );
+
+ HRESULT Load
+ (
+ [in, unique] IStream *pStm
+ );
+
+ HRESULT Save
+ (
+ [in, unique] IStream *pStm,
+ [in] BOOL fClearDirty
+ );
+
+ HRESULT GetSizeMax
+ (
+ [out] ULARGE_INTEGER *pcbSize
+ );
+
+}
+
+[
+ object,
+ uuid(0000000f-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IMoniker : IPersistStream
+{
+
+ typedef [unique] IMoniker *LPMONIKER;
+
+ // system moniker types; returned from IsSystemMoniker.
+ typedef enum tagMKSYS
+ {
+ MKSYS_NONE = 0,
+ MKSYS_GENERICCOMPOSITE = 1,
+ MKSYS_FILEMONIKER = 2,
+ MKSYS_ANTIMONIKER = 3,
+ MKSYS_ITEMMONIKER = 4,
+ MKSYS_POINTERMONIKER = 5,
+ // MKSYS_URLMONIKER = 6,
+ MKSYS_CLASSMONIKER = 7
+ }MKSYS;
+
+
+ typedef [v1_enum] enum tagMKREDUCE
+ {
+ MKRREDUCE_ONE = 3<<16,
+
+ MKRREDUCE_TOUSER = 2<<16,
+ MKRREDUCE_THROUGHUSER = 1<<16,
+ MKRREDUCE_ALL = 0
+ } MKRREDUCE;
+
+
+ [local]
+ HRESULT BindToObject(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riidResult,
+ [out, iid_is(riidResult)] void **ppvResult);
+
+ [call_as(BindToObject)]
+ HRESULT RemoteBindToObject(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riidResult,
+ [out, iid_is(riidResult)] IUnknown **ppvResult);
+
+ [local]
+ HRESULT BindToStorage(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvObj);
+
+ [call_as(BindToStorage)]
+ HRESULT RemoteBindToStorage(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **ppvObj);
+
+ HRESULT Reduce(
+ [in, unique] IBindCtx *pbc,
+ [in] DWORD dwReduceHowFar,
+ [in, out, unique] IMoniker **ppmkToLeft,
+ [out] IMoniker **ppmkReduced);
+
+ HRESULT ComposeWith(
+ [in, unique] IMoniker *pmkRight,
+ [in] BOOL fOnlyIfNotGeneric,
+ [out] IMoniker **ppmkComposite);
+
+ HRESULT Enum(
+ [in] BOOL fForward,
+ [out] IEnumMoniker **ppenumMoniker);
+
+ HRESULT IsEqual(
+ [in, unique] IMoniker *pmkOtherMoniker);
+
+ HRESULT Hash(
+ [out] DWORD *pdwHash);
+
+ HRESULT IsRunning(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in, unique] IMoniker *pmkNewlyRunning);
+
+ HRESULT GetTimeOfLastChange(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [out] FILETIME *pFileTime);
+
+ HRESULT Inverse(
+ [out] IMoniker **ppmk);
+
+ HRESULT CommonPrefixWith(
+ [in, unique] IMoniker *pmkOther,
+ [out] IMoniker **ppmkPrefix);
+
+ HRESULT RelativePathTo(
+ [in, unique] IMoniker *pmkOther,
+ [out] IMoniker **ppmkRelPath);
+
+ HRESULT GetDisplayName(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [out] LPOLESTR *ppszDisplayName);
+
+ HRESULT ParseDisplayName(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] LPOLESTR pszDisplayName,
+ [out] ULONG *pchEaten,
+ [out] IMoniker **ppmkOut);
+
+ HRESULT IsSystemMoniker(
+ [out] DWORD *pdwMksys);
+
+}
+
+[
+ object,
+ uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
+ pointer_default(unique)
+]
+
+interface IROTData : IUnknown
+{
+ HRESULT GetComparisonData(
+ [out, size_is(cbMax)] byte *pbData,
+ [in] ULONG cbMax,
+ [out] ULONG *pcbData);
+}
+
+[
+ object,
+ uuid(00000101-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumString : IUnknown
+{
+
+ typedef [unique] IEnumString *LPENUMSTRING;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ LPOLESTR *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ LPOLESTR *rgelt,
+ [out] ULONG *pceltFetched);
+
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumString **ppenum);
+}
+
+
+/****************************************************************************
+ * Structured Storage Interfaces
+ ****************************************************************************/
+
+[
+ object,
+ uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
+ pointer_default(unique)
+]
+interface ISequentialStream : IUnknown
+{
+ [local]
+ HRESULT Read(
+ [out, size_is(cb), length_is(*pcbRead)]
+ void *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [call_as(Read)]
+ HRESULT RemoteRead(
+ [out, size_is(cb), length_is(*pcbRead)]
+ byte *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [local]
+ HRESULT Write(
+ [in, size_is(cb)] void const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [call_as(Write)]
+ HRESULT RemoteWrite(
+ [in, size_is(cb)] byte const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+}
+
+
+[
+ object,
+ uuid(0000000c-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IStream : ISequentialStream
+{
+
+ typedef [unique] IStream *LPSTREAM;
+
+ /* Storage stat buffer */
+
+ typedef struct tagSTATSTG
+ {
+ LPOLESTR pwcsName;
+ DWORD type;
+ ULARGE_INTEGER cbSize;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD grfMode;
+ DWORD grfLocksSupported;
+ CLSID clsid;
+ DWORD grfStateBits;
+ DWORD reserved;
+ } STATSTG;
+
+
+ /* Storage element types */
+ typedef enum tagSTGTY
+ {
+ STGTY_STORAGE = 1,
+ STGTY_STREAM = 2,
+ STGTY_LOCKBYTES = 3,
+ STGTY_PROPERTY = 4
+ } STGTY;
+
+ typedef enum tagSTREAM_SEEK
+ {
+ STREAM_SEEK_SET = 0,
+ STREAM_SEEK_CUR = 1,
+ STREAM_SEEK_END = 2
+ } STREAM_SEEK;
+
+ typedef enum tagLOCKTYPE
+ {
+ LOCK_WRITE = 1,
+ LOCK_EXCLUSIVE = 2,
+ LOCK_ONLYONCE = 4
+ } LOCKTYPE;
+
+ [local]
+ HRESULT Seek(
+ [in] LARGE_INTEGER dlibMove,
+ [in] DWORD dwOrigin,
+ [out] ULARGE_INTEGER *plibNewPosition);
+
+ [call_as(Seek)]
+ HRESULT RemoteSeek(
+ [in] LARGE_INTEGER dlibMove,
+ [in] DWORD dwOrigin,
+ [out] ULARGE_INTEGER *plibNewPosition);
+
+ HRESULT SetSize(
+ [in] ULARGE_INTEGER libNewSize);
+
+ [local]
+ HRESULT CopyTo(
+ [in, unique] IStream *pstm,
+ [in] ULARGE_INTEGER cb,
+ [out] ULARGE_INTEGER *pcbRead,
+ [out] ULARGE_INTEGER *pcbWritten);
+
+ [call_as(CopyTo)]
+ HRESULT RemoteCopyTo(
+ [in, unique] IStream *pstm,
+ [in] ULARGE_INTEGER cb,
+ [out] ULARGE_INTEGER *pcbRead,
+ [out] ULARGE_INTEGER *pcbWritten);
+
+ HRESULT Commit(
+ [in] DWORD grfCommitFlags);
+
+ HRESULT Revert();
+
+ HRESULT LockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT UnlockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT Stat(
+ [out] STATSTG *pstatstg,
+ [in] DWORD grfStatFlag);
+
+ HRESULT Clone(
+ [out] IStream **ppstm);
+
+}
+
+[
+ object,
+ uuid(0000000d-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumSTATSTG : IUnknown
+{
+
+ typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATSTG *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATSTG *rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumSTATSTG **ppenum);
+}
+
+[
+ object,
+ uuid(0000000b-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IStorage : IUnknown
+{
+
+ typedef [unique] IStorage * LPSTORAGE;
+
+ typedef struct tagRemSNB
+ {
+ unsigned long ulCntStr;
+ unsigned long ulCntChar;
+ [size_is(ulCntChar)] OLECHAR rgString[];
+ } RemSNB;
+
+ typedef [unique] RemSNB * wireSNB;
+ typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
+
+ HRESULT CreateStream(
+ [in, string] const OLECHAR *pwcsName,
+ [in] DWORD grfMode,
+ [in] DWORD reserved1,
+ [in] DWORD reserved2,
+ [out] IStream **ppstm);
+
+ [local]
+ HRESULT OpenStream(
+ [in, string] const OLECHAR *pwcsName,
+ [in, unique] void *reserved1,
+ [in] DWORD grfMode,
+ [in] DWORD reserved2,
+ [out] IStream **ppstm);
+
+ [call_as(OpenStream)]
+ HRESULT RemoteOpenStream(
+ [in, string] const OLECHAR *pwcsName,
+ [in] unsigned long cbReserved1,
+ [in, unique, size_is(cbReserved1)] byte *reserved1,
+ [in] DWORD grfMode,
+ [in] DWORD reserved2,
+ [out] IStream **ppstm);
+
+ HRESULT CreateStorage(
+ [in, string] const OLECHAR *pwcsName,
+ [in] DWORD grfMode,
+ [in] DWORD dwStgFmt,
+ [in] DWORD reserved2,
+ [out] IStorage **ppstg);
+
+ HRESULT OpenStorage(
+ [in, unique, string] const OLECHAR *pwcsName,
+ [in, unique] IStorage *pstgPriority,
+ [in] DWORD grfMode,
+ [in, unique] SNB snbExclude,
+ [in] DWORD reserved,
+ [out] IStorage **ppstg);
+
+ HRESULT CopyTo(
+ [in] DWORD ciidExclude,
+ [in, unique, size_is(ciidExclude)] IID const *rgiidExclude,
+ [in, unique] SNB snbExclude,
+ [in, unique] IStorage *pstgDest);
+
+ HRESULT MoveElementTo(
+ [in, string] const OLECHAR * pwcsName,
+ [in, unique] IStorage *pstgDest,
+ [in, string] const OLECHAR *pwcsNewName,
+ [in] DWORD grfFlags);
+
+ HRESULT Commit(
+ [in] DWORD grfCommitFlags);
+
+ HRESULT Revert();
+
+ [local]
+ HRESULT EnumElements(
+ [in] DWORD reserved1,
+ [in, unique, size_is(1)] void *reserved2,
+ [in] DWORD reserved3,
+ [out] IEnumSTATSTG **ppenum);
+
+
+ [call_as(EnumElements)]
+ HRESULT RemoteEnumElements(
+ [in] DWORD reserved1,
+ [in] unsigned long cbReserved2,
+ [in, unique, size_is(cbReserved2)] byte *reserved2,
+ [in] DWORD reserved3,
+ [out] IEnumSTATSTG **ppenum);
+
+ HRESULT DestroyElement(
+ [in, string] const OLECHAR *pwcsName);
+
+ HRESULT RenameElement(
+ [in, string] const OLECHAR *pwcsOldName,
+ [in, string] const OLECHAR *pwcsNewName);
+
+ HRESULT SetElementTimes(
+ [in, string] const OLECHAR *pwcsName,
+ [in] FILETIME const *pctime,
+ [in] FILETIME const *patime,
+ [in] FILETIME const *pmtime);
+
+ HRESULT SetClass(
+ [in] REFCLSID clsid);
+
+ HRESULT SetStateBits(
+ [in] DWORD grfStateBits,
+ [in] DWORD grfMask);
+
+ HRESULT Stat(
+ [out] STATSTG *pstatstg,
+ [in] DWORD grfStatFlag);
+}
+
+[
+ object,
+ uuid(0000010b-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IPersistFile : IPersist
+{
+
+ typedef [unique] IPersistFile *LPPERSISTFILE;
+
+ HRESULT IsDirty
+ (
+ void
+ );
+
+ HRESULT Load
+ (
+ [in] LPCOLESTR pszFileName,
+ [in] DWORD dwMode
+ );
+
+ HRESULT Save
+ (
+ [in, unique] LPCOLESTR pszFileName,
+ [in] BOOL fRemember
+ );
+
+ HRESULT SaveCompleted
+ (
+ [in, unique] LPCOLESTR pszFileName
+ );
+
+ HRESULT GetCurFile
+ (
+ [out] LPOLESTR *ppszFileName
+ );
+}
+
+[
+ object,
+ uuid(0000010a-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IPersistStorage : IPersist
+{
+
+ typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
+
+ HRESULT IsDirty
+ (
+ void
+ );
+
+ HRESULT InitNew
+ (
+ [in, unique] IStorage *pStg
+ );
+
+ HRESULT Load
+ (
+ [in, unique] IStorage *pStg
+ );
+
+ HRESULT Save
+ (
+ [in, unique] IStorage *pStgSave,
+ [in] BOOL fSameAsLoad
+ );
+
+ HRESULT SaveCompleted
+ (
+ [in, unique] IStorage *pStgNew
+ );
+
+ HRESULT HandsOffStorage
+ (
+ void
+ );
+}
+
+[
+ object,
+ uuid(0000000a-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ILockBytes : IUnknown
+{
+
+ typedef [unique] ILockBytes *LPLOCKBYTES;
+
+ [local]
+ HRESULT ReadAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [out, size_is(cb), length_is(*pcbRead)]
+ void *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [call_as(ReadAt)]
+ HRESULT _stdcall RemoteReadAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [out, size_is(cb), length_is(*pcbRead)]
+ byte *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [local]
+ HRESULT WriteAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] void const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [call_as(WriteAt)]
+ HRESULT RemoteWriteAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] byte const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ HRESULT Flush();
+
+ HRESULT SetSize(
+ [in] ULARGE_INTEGER cb);
+
+ HRESULT LockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT UnlockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT Stat(
+ [out] STATSTG *pstatstg,
+ [in] DWORD grfStatFlag);
+}
+
+[
+ object,
+ uuid(00000103-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumFORMATETC : IUnknown
+{
+
+ typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
+
+
+ typedef struct tagDVTARGETDEVICE {
+ DWORD tdSize;
+ WORD tdDriverNameOffset;
+ WORD tdDeviceNameOffset;
+ WORD tdPortNameOffset;
+ WORD tdExtDevmodeOffset;
+ [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
+ BYTE tdData[];
+ }DVTARGETDEVICE;
+
+
+ typedef CLIPFORMAT *LPCLIPFORMAT;
+
+ typedef struct tagFORMATETC {
+ CLIPFORMAT cfFormat;
+ [unique] DVTARGETDEVICE * ptd;
+ DWORD dwAspect;
+ LONG lindex;
+ DWORD tymed;
+ }FORMATETC, *LPFORMATETC;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched )]
+ FORMATETC *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched )]
+ FORMATETC *rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumFORMATETC **ppenum);
+}
+
+[
+ object,
+ uuid(00000105-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumSTATDATA : IUnknown
+{
+
+ typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
+
+ //Advise Flags
+ typedef enum tagADVF
+ {
+ ADVF_NODATA = 1,
+ ADVF_PRIMEFIRST = 2,
+ ADVF_ONLYONCE = 4,
+ ADVF_DATAONSTOP = 64,
+ ADVFCACHE_NOHANDLER = 8,
+ ADVFCACHE_FORCEBUILTIN = 16,
+ ADVFCACHE_ONSAVE = 32
+ } ADVF;
+
+
+ // Stats for data; used by several enumerations and by at least one
+ // implementation of IDataAdviseHolder; if a field is not used, it
+ // will be NULL.
+
+ typedef struct tagSTATDATA
+ { // field used by:
+ FORMATETC formatetc; // EnumAdvise, EnumData (cache), EnumFormats
+ DWORD advf; // EnumAdvise, EnumData (cache)
+ [unique] IAdviseSink * pAdvSink; // EnumAdvise
+ DWORD dwConnection; // EnumAdvise
+ } STATDATA;
+ typedef STATDATA *LPSTATDATA;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATDATA *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATDATA *rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumSTATDATA **ppenum);
+}
+
+[
+ object,
+ uuid(00000012-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IRootStorage : IUnknown
+{
+
+ typedef [unique] IRootStorage *LPROOTSTORAGE;
+
+ HRESULT SwitchToFile
+ (
+ [in] LPOLESTR pszFile
+ );
+}
+
+
+/****************************************************************************
+ * Notification Interfaces
+ ****************************************************************************/
+
+[
+ object,
+ uuid(0000010f-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IAdviseSink : IUnknown
+{
+
+ typedef IAdviseSink *LPADVISESINK;
+
+ typedef [v1_enum] enum tagTYMED {
+ TYMED_HGLOBAL = 1,
+ TYMED_FILE = 2,
+ TYMED_ISTREAM = 4,
+ TYMED_ISTORAGE = 8,
+ TYMED_GDI = 16,
+ TYMED_MFPICT = 32,
+ TYMED_ENHMF = 64,
+ TYMED_NULL = 0
+ } TYMED;
+
+ cpp_quote("#ifndef RC_INVOKED")
+ cpp_quote("#pragma warning(disable:4200)")
+ cpp_quote("#endif")
+
+ typedef struct tagRemSTGMEDIUM {
+ DWORD tymed;
+ DWORD dwHandleType;
+ unsigned long pData;
+ unsigned long pUnkForRelease;
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+ } RemSTGMEDIUM;
+ cpp_quote("#ifndef RC_INVOKED")
+ cpp_quote("#pragma warning(default:4200)")
+ cpp_quote("#endif")
+
+
+cpp_quote("#ifdef NONAMELESSUNION")
+cpp_quote("typedef struct tagSTGMEDIUM {")
+cpp_quote(" DWORD tymed;")
+cpp_quote(" union {")
+cpp_quote(" HBITMAP hBitmap;")
+cpp_quote(" HMETAFILEPICT hMetaFilePict;")
+cpp_quote(" HENHMETAFILE hEnhMetaFile;")
+cpp_quote(" HGLOBAL hGlobal;")
+cpp_quote(" LPOLESTR lpszFileName;")
+cpp_quote(" IStream *pstm;")
+cpp_quote(" IStorage *pstg;")
+cpp_quote(" } u;")
+cpp_quote(" IUnknown *pUnkForRelease;")
+cpp_quote("}uSTGMEDIUM;")
+cpp_quote("#else")
+
+ typedef struct tagSTGMEDIUM {
+ DWORD tymed;
+ [switch_type(DWORD), switch_is((DWORD) tymed)]
+ union
+ {
+ [case(TYMED_GDI)]
+ HBITMAP hBitmap;
+ [case(TYMED_MFPICT)]
+ HMETAFILEPICT hMetaFilePict;
+ [case(TYMED_ENHMF)]
+ HENHMETAFILE hEnhMetaFile;
+ [case(TYMED_HGLOBAL)]
+ HGLOBAL hGlobal;
+ [case(TYMED_FILE)]
+ LPOLESTR lpszFileName;
+ [case(TYMED_ISTREAM)]
+ IStream *pstm;
+ [case(TYMED_ISTORAGE)]
+ IStorage *pstg;
+ [default]
+ ;
+ };
+ [unique] IUnknown *pUnkForRelease;
+ }uSTGMEDIUM;
+
+cpp_quote("#endif /* !NONAMELESSUNION */")
+
+
+//
+// wireSTGMEDIUM
+//
+// These flags are #defined (not enumerated) in wingdi.
+// We need to repeat #defines to avoid conflict in the generated file.
+//
+
+/* Object Definitions for EnumObjects() */
+#define OBJ_PEN 1
+#define OBJ_BRUSH 2
+#define OBJ_DC 3
+#define OBJ_METADC 4
+#define OBJ_PAL 5
+#define OBJ_FONT 6
+#define OBJ_BITMAP 7
+#define OBJ_REGION 8
+#define OBJ_METAFILE 9
+#define OBJ_MEMDC 10
+#define OBJ_EXTPEN 11
+#define OBJ_ENHMETADC 12
+#define OBJ_ENHMETAFILE 13
+
+ typedef union _GDI_OBJECT switch( DWORD ObjectType ) u
+ {
+ case OBJ_BITMAP: wireHBITMAP hBitmap;
+ case OBJ_PAL: wireHPALETTE hPalette;
+ default: wireHGLOBAL hGeneric;
+ } GDI_OBJECT;
+
+ typedef struct _userSTGMEDIUM
+ {
+ union _STGMEDIUM_UNION switch( DWORD tymed ) u
+ {
+ case TYMED_NULL: ;
+ case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
+ case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
+ case TYMED_GDI: GDI_OBJECT * hGdiHandle;
+ case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
+ case TYMED_FILE: LPOLESTR lpszFileName;
+ case TYMED_ISTREAM: BYTE_BLOB * pstm;
+ case TYMED_ISTORAGE: BYTE_BLOB * pstg;
+ };
+ IUnknown * pUnkForRelease;
+ } userSTGMEDIUM;
+
+ typedef [unique] userSTGMEDIUM * wireSTGMEDIUM;
+ typedef [wire_marshal( wireSTGMEDIUM )] uSTGMEDIUM STGMEDIUM;
+
+ typedef [unique] userSTGMEDIUM * wireASYNC_STGMEDIUM;
+ typedef [wire_marshal( wireASYNC_STGMEDIUM )] STGMEDIUM ASYNC_STGMEDIUM;
+
+ typedef STGMEDIUM *LPSTGMEDIUM;
+
+ typedef struct _userFLAG_STGMEDIUM
+ {
+ long ContextFlags;
+ long fPassOwnership;
+ userSTGMEDIUM Stgmed;
+ } userFLAG_STGMEDIUM;
+
+ typedef [unique] userFLAG_STGMEDIUM * wireFLAG_STGMEDIUM;
+
+ typedef [wire_marshal( wireFLAG_STGMEDIUM )]
+ struct _FLAG_STGMEDIUM
+ {
+ long ContextFlags;
+ long fPassOwnership;
+ STGMEDIUM Stgmed;
+ } FLAG_STGMEDIUM;
+
+
+ [local]
+ void OnDataChange(
+ [in, unique] FORMATETC *pFormatetc,
+ [in, unique] STGMEDIUM *pStgmed);
+
+ [call_as(OnDataChange), async]
+ void RemoteOnDataChange(
+ [in, unique] FORMATETC *pFormatetc,
+ [in, unique] ASYNC_STGMEDIUM *pStgmed);
+
+ [local]
+ void OnViewChange(
+ [in] DWORD dwAspect,
+ [in] LONG lindex);
+
+ [call_as(OnViewChange), async]
+ void RemoteOnViewChange(
+ [in] DWORD dwAspect,
+ [in] LONG lindex);
+
+ [local]
+ void OnRename(
+ [in] IMoniker *pmk);
+
+ [call_as(OnRename), async]
+ void RemoteOnRename(
+ [in] IMoniker *pmk);
+
+ [local]
+ void OnSave();
+
+ [call_as(OnSave), async]
+ void RemoteOnSave();
+
+ [local]
+ void OnClose();
+
+ [call_as(OnClose)]
+ HRESULT RemoteOnClose();
+}
+
+[
+ object,
+ uuid(00000125-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IAdviseSink2 : IAdviseSink
+{
+
+ typedef [unique] IAdviseSink2 *LPADVISESINK2;
+
+ [local]
+ void OnLinkSrcChange(
+ [in, unique] IMoniker *pmk);
+
+ [call_as(OnLinkSrcChange), async]
+ void RemoteOnLinkSrcChange(
+ [in, unique] IMoniker *pmk);
+}
+
+[
+ object,
+ uuid(0000010e-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IDataObject : IUnknown
+{
+
+ typedef [unique] IDataObject *LPDATAOBJECT;
+
+ //DATA format DIRection
+ typedef enum tagDATADIR
+ {
+ DATADIR_GET = 1,
+ DATADIR_SET = 2
+ } DATADIR;
+
+ [local]
+ HRESULT GetData(
+ [in, unique] FORMATETC *pformatetcIn,
+ [out] STGMEDIUM *pmedium);
+
+ [call_as(GetData)]
+ HRESULT RemoteGetData(
+ [in, unique] FORMATETC *pformatetcIn,
+ [out] STGMEDIUM *pRemoteMedium);
+
+ [local]
+ HRESULT GetDataHere(
+ [in, unique] FORMATETC *pformatetc,
+ [in, out] STGMEDIUM *pmedium);
+
+ [call_as(GetDataHere)]
+ HRESULT RemoteGetDataHere(
+ [in, unique] FORMATETC *pformatetc,
+ [in, out] STGMEDIUM *pRemoteMedium);
+
+ HRESULT QueryGetData(
+ [in, unique] FORMATETC *pformatetc);
+
+
+ HRESULT GetCanonicalFormatEtc(
+ [in, unique] FORMATETC *pformatectIn,
+ [out] FORMATETC *pformatetcOut);
+
+ [local]
+ HRESULT SetData(
+ [in, unique] FORMATETC *pformatetc,
+ [in, unique] STGMEDIUM *pmedium,
+ [in] BOOL fRelease);
+
+ [call_as(SetData)]
+ HRESULT RemoteSetData(
+ [in, unique] FORMATETC *pformatetc,
+ [in, unique] FLAG_STGMEDIUM *pmedium,
+ [in] BOOL fRelease);
+
+ HRESULT EnumFormatEtc(
+ [in] DWORD dwDirection,
+ [out] IEnumFORMATETC **ppenumFormatEtc);
+
+ HRESULT DAdvise(
+ [in] FORMATETC *pformatetc,
+ [in] DWORD advf,
+ [in, unique] IAdviseSink *pAdvSink,
+ [out] DWORD *pdwConnection);
+
+ HRESULT DUnadvise(
+ [in] DWORD dwConnection);
+
+ HRESULT EnumDAdvise(
+ [out] IEnumSTATDATA **ppenumAdvise);
+
+}
+
+[
+ local,
+ object,
+ uuid(00000110-0000-0000-C000-000000000046)
+]
+
+interface IDataAdviseHolder : IUnknown
+{
+
+ typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
+
+ HRESULT Advise
+ (
+ [in, unique] IDataObject *pDataObject,
+ [in, unique] FORMATETC *pFetc,
+ [in] DWORD advf,
+ [in, unique] IAdviseSink *pAdvise,
+ [out] DWORD *pdwConnection
+ );
+
+ HRESULT Unadvise
+ (
+ [in] DWORD dwConnection
+ );
+
+ HRESULT EnumAdvise
+ (
+ [out] IEnumSTATDATA **ppenumAdvise
+ );
+
+ HRESULT SendOnDataChange
+ (
+ [in, unique] IDataObject *pDataObject,
+ [in] DWORD dwReserved,
+ [in] DWORD advf
+ );
+
+}
+
+[
+ local,
+ object,
+ uuid(00000016-0000-0000-C000-000000000046)
+]
+
+interface IMessageFilter : IUnknown
+{
+
+ typedef [unique] IMessageFilter *LPMESSAGEFILTER;
+
+// call type used by IMessageFilter::HandleIncomingMessage
+typedef enum tagCALLTYPE
+{
+ CALLTYPE_TOPLEVEL = 1, // toplevel call - no outgoing call
+ CALLTYPE_NESTED = 2, // callback on behalf of previous outgoing call - should always handle
+ CALLTYPE_ASYNC = 3, // aysnchronous call - can NOT be rejected
+ CALLTYPE_TOPLEVEL_CALLPENDING = 4, // new toplevel call with new LID
+ CALLTYPE_ASYNC_CALLPENDING = 5 // async call - can NOT be rejected
+} CALLTYPE;
+
+// status of server call - returned by IMessageFilter::HandleIncomingCall
+// and passed to IMessageFilter::RetryRejectedCall
+typedef enum tagSERVERCALL
+{
+ SERVERCALL_ISHANDLED = 0,
+ SERVERCALL_REJECTED = 1,
+ SERVERCALL_RETRYLATER = 2
+} SERVERCALL;
+
+// Pending type indicates the level of nesting
+typedef enum tagPENDINGTYPE
+{
+ PENDINGTYPE_TOPLEVEL = 1, // toplevel call
+ PENDINGTYPE_NESTED = 2 // nested call
+} PENDINGTYPE;
+
+// return values of MessagePending
+typedef enum tagPENDINGMSG
+{
+ PENDINGMSG_CANCELCALL = 0, // cancel the outgoing call
+ PENDINGMSG_WAITNOPROCESS = 1, // wait for the return and don't dispatch the message
+ PENDINGMSG_WAITDEFPROCESS = 2 // wait and dispatch the message
+
+} PENDINGMSG;
+
+// additional interface information about the incoming call
+typedef struct tagINTERFACEINFO
+{
+ IUnknown *pUnk; // the pointer to the object
+ IID iid; // interface id
+ WORD wMethod; // interface method
+} INTERFACEINFO, *LPINTERFACEINFO;
+
+ DWORD HandleInComingCall
+ (
+ [in] DWORD dwCallType,
+ [in] HTASK htaskCaller,
+ [in] DWORD dwTickCount,
+ [in] LPINTERFACEINFO lpInterfaceInfo
+ );
+
+ DWORD RetryRejectedCall
+ (
+ [in] HTASK htaskCallee,
+ [in] DWORD dwTickCount,
+ [in] DWORD dwRejectType
+ );
+
+ DWORD MessagePending
+ (
+ [in] HTASK htaskCallee,
+ [in] DWORD dwTickCount,
+ [in] DWORD dwPendingType
+ );
+}
+
+
+/****************************************************************************
+ * Object Remoting Interfaces
+ ****************************************************************************/
+
+[
+ local,
+ object,
+ uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcChannelBuffer : IUnknown
+{
+
+ typedef unsigned long RPCOLEDATAREP;
+
+ typedef struct tagRPCOLEMESSAGE
+ {
+ void *reserved1;
+ RPCOLEDATAREP dataRepresentation;
+ void *Buffer;
+ ULONG cbBuffer;
+ ULONG iMethod;
+ void *reserved2[5];
+ ULONG rpcFlags;
+ } RPCOLEMESSAGE;
+
+ typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
+
+ HRESULT GetBuffer
+ (
+ [in] RPCOLEMESSAGE *pMessage,
+ [in] REFIID riid
+ );
+
+ HRESULT SendReceive
+ (
+ [in,out] RPCOLEMESSAGE *pMessage,
+ [out] ULONG *pStatus
+ );
+
+ HRESULT FreeBuffer
+ (
+ [in] RPCOLEMESSAGE *pMessage
+ );
+
+ HRESULT GetDestCtx
+ (
+ [out] DWORD *pdwDestContext,
+ [out] void **ppvDestContext
+ );
+
+ HRESULT IsConnected
+ (
+ void
+ );
+
+}
+
+[
+ local,
+ object,
+ uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcProxyBuffer : IUnknown
+{
+
+ HRESULT Connect
+ (
+ [in, unique] IRpcChannelBuffer *pRpcChannelBuffer
+ );
+
+ void Disconnect
+ (
+ void
+ );
+
+}
+
+[
+ local,
+ object,
+ uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcStubBuffer : IUnknown
+{
+
+ HRESULT Connect
+ (
+ [in] IUnknown *pUnkServer
+ );
+
+ void Disconnect();
+
+ HRESULT Invoke
+ (
+ [in] RPCOLEMESSAGE *_prpcmsg,
+ [in] IRpcChannelBuffer *_pRpcChannelBuffer
+ );
+
+ IRpcStubBuffer *IsIIDSupported
+ (
+ [in] REFIID riid
+ );
+
+ ULONG CountRefs
+ (
+ void
+ );
+
+ HRESULT DebugServerQueryInterface
+ (
+ void **ppv
+ );
+
+ void DebugServerRelease
+ (
+ void *pv
+ );
+
+}
+
+
+
+[
+ local,
+ object,
+ uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
+]
+interface IPSFactoryBuffer : IUnknown
+{
+
+ HRESULT CreateProxy
+ (
+ [in] IUnknown *pUnkOuter,
+ [in] REFIID riid,
+ [out] IRpcProxyBuffer **ppProxy,
+ [out] void **ppv
+ );
+
+ HRESULT CreateStub
+ (
+ [in] REFIID riid,
+ [in, unique] IUnknown *pUnkServer,
+ [out] IRpcStubBuffer **ppStub
+ );
+}
+
+cpp_quote( "#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
+cpp_quote( "// This interface is only valid on Windows NT 4.0" )
+
+[
+ local,
+ object,
+ uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
+]
+interface IChannelHook : IUnknown
+{
+ void ClientGetSize(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [out] ULONG *pDataSize );
+
+ void ClientFillBuffer(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in, out] ULONG *pDataSize,
+ [in] void *pDataBuffer );
+
+ void ClientNotify(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in] ULONG cbDataSize,
+ [in] void *pDataBuffer,
+ [in] DWORD lDataRep,
+ [in] HRESULT hrFault );
+
+ void ServerNotify(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in] ULONG cbDataSize,
+ [in] void *pDataBuffer,
+ [in] DWORD lDataRep );
+
+ void ServerGetSize(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in] HRESULT hrFault,
+ [out] ULONG *pDataSize );
+
+ void ServerFillBuffer(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in, out] ULONG *pDataSize,
+ [in] void *pDataBuffer,
+ [in] HRESULT hrFault );
+};
+
+cpp_quote( "#endif //DCOM" )
+
+/****************************************************************************
+ * Property Storage Interfaces
+ ****************************************************************************/
+
+interface IPropertyStorage;
+interface IEnumSTATPROPSTG;
+interface IEnumSTATPROPSETSTG;
+
+[
+ object,
+ uuid(00000138-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IPropertyStorage : IUnknown
+{
+
+ cpp_quote("")
+ cpp_quote("// Well-known Property Set Format IDs")
+ extern const FMTID FMTID_SummaryInformation;
+ extern const FMTID FMTID_DocSummaryInformation;
+ extern const FMTID FMTID_UserDefinedProperties;
+
+ cpp_quote("")
+ cpp_quote("// Flags for IPropertySetStorage::Create")
+ const DWORD PROPSETFLAG_DEFAULT = 0;
+ const DWORD PROPSETFLAG_NONSIMPLE = 1;
+ const DWORD PROPSETFLAG_ANSI = 2;
+ cpp_quote("// This flag is only supported on StgCreatePropStg & StgOpenPropStg")
+ const DWORD PROPSETFLAG_UNBUFFERED = 4;
+
+ typedef [unique] IPropertyStorage * LPPROPERTYSTORAGE;
+
+ typedef struct tagPROPVARIANT PROPVARIANT;
+
+ #define TYPEDEF_CA(type, name) \
+ typedef struct tag##name\
+ {\
+ ULONG cElems;\
+ [size_is( cElems )]\
+ type * pElems;\
+ } name
+
+ TYPEDEF_CA(unsigned char, CAUB);
+ TYPEDEF_CA(short, CAI);
+ TYPEDEF_CA(USHORT, CAUI);
+ TYPEDEF_CA(long, CAL);
+ TYPEDEF_CA(ULONG, CAUL);
+ TYPEDEF_CA(float, CAFLT);
+ TYPEDEF_CA(double, CADBL);
+ TYPEDEF_CA(CY, CACY);
+ TYPEDEF_CA(DATE, CADATE);
+ TYPEDEF_CA(BSTR, CABSTR);
+ TYPEDEF_CA(BSTRBLOB, CABSTRBLOB);
+ TYPEDEF_CA(VARIANT_BOOL, CABOOL);
+ TYPEDEF_CA(SCODE, CASCODE);
+ TYPEDEF_CA(PROPVARIANT, CAPROPVARIANT);
+ TYPEDEF_CA(LARGE_INTEGER, CAH);
+ TYPEDEF_CA(ULARGE_INTEGER, CAUH);
+ TYPEDEF_CA(LPSTR, CALPSTR);
+ TYPEDEF_CA(LPWSTR, CALPWSTR);
+ TYPEDEF_CA(FILETIME, CAFILETIME);
+ TYPEDEF_CA(CLIPDATA, CACLIPDATA);
+ TYPEDEF_CA(CLSID, CACLSID);
+
+cpp_quote("// Disable the warning about the obsolete member named 'bool'")
+cpp_quote("// 'bool', 'true', 'false', 'mutable', 'explicit', & 'typename'")
+cpp_quote("// are reserved keywords")
+cpp_quote("#pragma warning(disable:4237)")
+
+ struct tagPROPVARIANT
+ {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ [switch_is((unsigned short) (vt & 0x1fff))] union
+ {
+ [case(VT_EMPTY, VT_NULL)]
+ ;
+ [case(VT_UI1)]
+ UCHAR bVal;
+ [case(VT_I2)]
+ short iVal;
+ [case(VT_UI2)]
+ USHORT uiVal;
+ [case(VT_BOOL)]
+ VARIANT_BOOL boolVal;
+ [case(VT_ILLEGAL)] // obsolete field name; use boolVal
+ _VARIANT_BOOL bool;
+ [case(VT_I4)]
+ long lVal;
+ [case(VT_UI4)]
+ ULONG ulVal;
+ [case(VT_R4)]
+ float fltVal;
+ [case(VT_ERROR)]
+ SCODE scode;
+ [case(VT_I8)]
+ LARGE_INTEGER hVal;
+ [case(VT_UI8)]
+ ULARGE_INTEGER uhVal;
+ [case(VT_R8)]
+ double dblVal;
+ [case(VT_CY)]
+ CY cyVal;
+ [case(VT_DATE)]
+ DATE date;
+ [case(VT_FILETIME)]
+ FILETIME filetime;
+ [case(VT_CLSID)]
+ CLSID * puuid;
+ [case(VT_BLOB, VT_BLOB_OBJECT)]
+ BLOB blob;
+ [case(VT_CF)]
+ CLIPDATA *pclipdata;
+ [case(VT_STREAM, VT_STREAMED_OBJECT)]
+ IStream * pStream;
+ [case(VT_STORAGE, VT_STORED_OBJECT)]
+ IStorage * pStorage;
+ [case(VT_BSTR)]
+ BSTR bstrVal;
+ [case(VT_BSTR_BLOB)] // System use only
+ BSTRBLOB bstrblobVal;
+ [case(VT_LPSTR)]
+ LPSTR pszVal;
+ [case(VT_LPWSTR)]
+ LPWSTR pwszVal;
+ [case(VT_UI1|VT_VECTOR)]
+ CAUB caub;
+ [case(VT_I2|VT_VECTOR)]
+ CAI cai;
+ [case(VT_UI2|VT_VECTOR)]
+ CAUI caui;
+ [case(VT_BOOL|VT_VECTOR)]
+ CABOOL cabool;
+ [case(VT_I4|VT_VECTOR)]
+ CAL cal;
+ [case(VT_UI4|VT_VECTOR)]
+ CAUL caul;
+ [case(VT_R4|VT_VECTOR)]
+ CAFLT caflt;
+ [case(VT_ERROR|VT_VECTOR)]
+ CASCODE cascode;
+ [case(VT_I8|VT_VECTOR)]
+ CAH cah;
+ [case(VT_UI8|VT_VECTOR)]
+ CAUH cauh;
+ [case(VT_R8|VT_VECTOR)]
+ CADBL cadbl;
+ [case(VT_CY|VT_VECTOR)]
+ CACY cacy;
+ [case(VT_DATE|VT_VECTOR)]
+ CADATE cadate;
+ [case(VT_FILETIME|VT_VECTOR)]
+ CAFILETIME cafiletime;
+ [case(VT_CLSID|VT_VECTOR)]
+ CACLSID cauuid;
+ [case(VT_CF|VT_VECTOR)]
+ CACLIPDATA caclipdata;
+ [case(VT_BSTR|VT_VECTOR)]
+ CABSTR cabstr;
+ [case(VT_BSTR_BLOB|VT_VECTOR)] // System use only
+ CABSTRBLOB cabstrblob;
+ [case(VT_LPSTR|VT_VECTOR)]
+ CALPSTR calpstr;
+ [case(VT_LPWSTR|VT_VECTOR)]
+ CALPWSTR calpwstr;
+ [case(VT_VARIANT|VT_VECTOR)]
+ CAPROPVARIANT capropvar;
+ };
+ };
+
+ typedef struct tagPROPVARIANT * LPPROPVARIANT;
+
+ cpp_quote("// Reserved global Property IDs")
+ const PROPID PID_DICTIONARY = 0x00000000;
+ const PROPID PID_CODEPAGE = 0x00000001;
+ const PROPID PID_FIRST_USABLE = 0x00000002;
+ const PROPID PID_FIRST_NAME_DEFAULT = 0x00000fff;
+ const PROPID PID_LOCALE = 0x80000000;
+ const PROPID PID_MODIFY_TIME = 0x80000001;
+ const PROPID PID_SECURITY = 0x80000002;
+ const PROPID PID_ILLEGAL = 0xffffffff;
+
+
+ cpp_quote("// Property IDs for the SummaryInformation Property Set")
+ cpp_quote("")
+ cpp_quote("#define PIDSI_TITLE 0x00000002L // VT_LPSTR")
+ cpp_quote("#define PIDSI_SUBJECT 0x00000003L // VT_LPSTR")
+ cpp_quote("#define PIDSI_AUTHOR 0x00000004L // VT_LPSTR")
+ cpp_quote("#define PIDSI_KEYWORDS 0x00000005L // VT_LPSTR")
+ cpp_quote("#define PIDSI_COMMENTS 0x00000006L // VT_LPSTR")
+ cpp_quote("#define PIDSI_TEMPLATE 0x00000007L // VT_LPSTR")
+ cpp_quote("#define PIDSI_LASTAUTHOR 0x00000008L // VT_LPSTR")
+ cpp_quote("#define PIDSI_REVNUMBER 0x00000009L // VT_LPSTR")
+ cpp_quote("#define PIDSI_EDITTIME 0x0000000aL // VT_FILETIME (UTC)")
+ cpp_quote("#define PIDSI_LASTPRINTED 0x0000000bL // VT_FILETIME (UTC)")
+ cpp_quote("#define PIDSI_CREATE_DTM 0x0000000cL // VT_FILETIME (UTC)")
+ cpp_quote("#define PIDSI_LASTSAVE_DTM 0x0000000dL // VT_FILETIME (UTC)")
+ cpp_quote("#define PIDSI_PAGECOUNT 0x0000000eL // VT_I4")
+ cpp_quote("#define PIDSI_WORDCOUNT 0x0000000fL // VT_I4")
+ cpp_quote("#define PIDSI_CHARCOUNT 0x00000010L // VT_I4")
+ cpp_quote("#define PIDSI_THUMBNAIL 0x00000011L // VT_CF")
+ cpp_quote("#define PIDSI_APPNAME 0x00000012L // VT_LPSTR")
+ cpp_quote("#define PIDSI_DOC_SECURITY 0x00000013L // VT_I4")
+
+ const ULONG PRSPEC_INVALID = 0xffffffff;
+ const ULONG PRSPEC_LPWSTR = 0;
+ const ULONG PRSPEC_PROPID = 1;
+
+ typedef struct tagPROPSPEC
+ {
+
+ ULONG ulKind;
+ [switch_is(ulKind)] union
+ {
+ [case(PRSPEC_PROPID)]
+ PROPID propid;
+ [case(PRSPEC_LPWSTR)]
+ LPOLESTR lpwstr;
+ [default] ;
+ } ;
+
+ } PROPSPEC;
+
+ typedef struct tagSTATPROPSTG
+ {
+
+ LPOLESTR lpwstrName;
+ PROPID propid;
+ VARTYPE vt;
+
+ } STATPROPSTG;
+
+ cpp_quote("// Macros for parsing the OS Version of the Property Set Header")
+ cpp_quote("#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD( (dwOSVer) )")
+ cpp_quote("#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD( (dwOSVer) ))")
+ cpp_quote("#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD( (dwOSVer) ))")
+ cpp_quote("#define PROPSETHDR_OSVERSION_UNKNOWN 0xFFFFFFFF")
+
+
+ typedef struct tagSTATPROPSETSTG
+ {
+
+ FMTID fmtid;
+ CLSID clsid;
+ DWORD grfFlags;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD dwOSVersion;
+
+ } STATPROPSETSTG;
+
+
+ // When this IDL file is used for "IProp.dll" (the
+ // standalone property set DLL), we must have local
+ // and remotable routines (call_as routines are used
+ // to remove BSTRs, which are not remotable with some
+ // RPC run-times).
+ //
+ // For the remotable routines, we must use pointer
+ // parameters (e.g. "*rgspec" rather than "rgspec[]")
+ // so that the MIDL 2.0 compiler will generate an
+ // interpereted proxy/stub, rather than inline.
+
+#ifdef IPROPERTY_DLL
+ [local]
+#endif
+ HRESULT ReadMultiple(
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC rgpspec[],
+ [out, size_is(cpspec)]
+ PROPVARIANT rgpropvar[]
+ );
+
+#ifdef IPROPERTY_DLL
+ [call_as(ReadMultiple)]
+ HRESULT RemoteReadMultiple(
+ [out] BOOL *pfBstrPresent,
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC *rgpspec,
+ [out, size_is(cpspec)]
+ PROPVARIANT *rgpropvar
+ );
+#endif
+
+#ifdef IPROPERTY_DLL
+ [local]
+#endif
+ HRESULT WriteMultiple(
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC rgpspec[],
+ [in, size_is(cpspec)]
+ const PROPVARIANT rgpropvar[],
+ [in] PROPID propidNameFirst
+ );
+
+#ifdef IPROPERTY_DLL
+ [call_as(WriteMultiple)]
+ HRESULT RemoteWriteMultiple(
+ [in] BOOL fBstrPresent,
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC *rgpspec,
+ [in, size_is(cpspec)]
+ const PROPVARIANT *rgpropvar,
+ [in] PROPID propidNameFirst
+ );
+#endif
+
+#ifdef IPROPERTY_DLL
+ [local]
+#endif
+ HRESULT DeleteMultiple(
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC rgpspec[]
+ );
+
+#ifdef IPROPERTY_DLL
+ [call_as(DeleteMultiple)]
+ HRESULT RemoteDeleteMultiple(
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC *rgpspec
+ );
+#endif
+
+ HRESULT ReadPropertyNames(
+ [in] ULONG cpropid,
+ [in, size_is(cpropid)]
+ const PROPID rgpropid[],
+ [out, size_is(cpropid)]
+ LPOLESTR rglpwstrName[]
+ );
+
+ HRESULT WritePropertyNames(
+ [in] ULONG cpropid,
+ [in, size_is(cpropid)]
+ const PROPID rgpropid[],
+ [in, size_is(cpropid)]
+ const LPOLESTR rglpwstrName[]
+ );
+
+ HRESULT DeletePropertyNames(
+ [in] ULONG cpropid,
+ [in, size_is(cpropid)]
+ const PROPID rgpropid[]
+ );
+
+ HRESULT Commit(
+ [in] DWORD grfCommitFlags
+ );
+
+ HRESULT Revert();
+
+ HRESULT Enum(
+ [out] IEnumSTATPROPSTG ** ppenum
+ );
+
+ HRESULT SetTimes(
+ [in] FILETIME const * pctime,
+ [in] FILETIME const * patime,
+ [in] FILETIME const * pmtime
+ );
+
+ HRESULT SetClass(
+ [in] REFCLSID clsid
+ );
+
+ HRESULT Stat(
+ [out] STATPROPSETSTG * pstatpsstg
+ );
+}
+
+[
+ object,
+ uuid(0000013A-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IPropertySetStorage : IUnknown
+{
+
+ typedef [unique] IPropertySetStorage * LPPROPERTYSETSTORAGE;
+
+ HRESULT Create(
+ [in] REFFMTID rfmtid,
+ [in, unique]
+ const CLSID * pclsid,
+ [in] DWORD grfFlags,
+ [in] DWORD grfMode,
+ [out] IPropertyStorage ** ppprstg
+ );
+
+ HRESULT Open(
+ [in] REFFMTID rfmtid,
+ [in] DWORD grfMode,
+ [out] IPropertyStorage ** ppprstg
+ );
+
+ HRESULT Delete(
+ [in] REFFMTID rfmtid
+ );
+
+ HRESULT Enum(
+ [out] IEnumSTATPROPSETSTG ** ppenum
+ );
+
+}
+
+
+[
+ object,
+ uuid(00000139-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumSTATPROPSTG : IUnknown
+{
+
+ typedef [unique] IEnumSTATPROPSTG * LPENUMSTATPROPSTG;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATPROPSTG * rgelt,
+ [out] ULONG * pceltFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATPROPSTG * rgelt,
+ [out] ULONG * pceltFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG celt
+ );
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumSTATPROPSTG ** ppenum
+ );
+}
+
+
+[
+ object,
+ uuid(0000013B-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumSTATPROPSETSTG : IUnknown
+{
+
+ typedef [unique] IEnumSTATPROPSETSTG * LPENUMSTATPROPSETSTG;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATPROPSETSTG * rgelt,
+ [out] ULONG * pceltFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATPROPSETSTG * rgelt,
+ [out] ULONG * pceltFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG celt
+ );
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumSTATPROPSETSTG ** ppenum
+ );
+}
+
+
+cpp_quote("WINOLEAPI PropVariantCopy ( PROPVARIANT * pvarDest, const PROPVARIANT * pvarSrc );")
+cpp_quote("WINOLEAPI PropVariantClear ( PROPVARIANT * pvar );")
+cpp_quote("WINOLEAPI FreePropVariantArray ( ULONG cVariants, PROPVARIANT * rgvars );")
+
+cpp_quote("")
+cpp_quote("#define _PROPVARIANTINIT_DEFINED_")
+cpp_quote("# ifdef __cplusplus")
+cpp_quote("inline void PropVariantInit ( PROPVARIANT * pvar )")
+cpp_quote("{")
+cpp_quote(" memset ( pvar, 0, sizeof(PROPVARIANT) );")
+cpp_quote("}")
+cpp_quote("# else")
+cpp_quote("# define PropVariantInit(pvar) memset ( pvar, 0, sizeof(PROPVARIANT) )")
+cpp_quote("# endif")
+cpp_quote("")
+
+cpp_quote("")
+cpp_quote("#ifndef _STGCREATEPROPSTG_DEFINED_")
+cpp_quote("WINOLEAPI StgCreatePropStg( IUnknown* pUnk, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );")
+cpp_quote("WINOLEAPI StgOpenPropStg( IUnknown* pUnk, REFFMTID fmtid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );")
+cpp_quote("WINOLEAPI StgCreatePropSetStg( IStorage *pStorage, DWORD dwReserved, IPropertySetStorage **ppPropSetStg);")
+
+cpp_quote("")
+cpp_quote("#define CCH_MAX_PROPSTG_NAME 31")
+cpp_quote("WINOLEAPI FmtIdToPropStgName( const FMTID *pfmtid, LPOLESTR oszName );" )
+cpp_quote("WINOLEAPI PropStgNameToFmtId( const LPOLESTR oszName, FMTID *pfmtid );" )
+cpp_quote("#endif")
+
+
+
+/****************************************************************************
+ * Connection Point Interfaces
+ ****************************************************************************/
+#ifdef __INCLUDE_CPIFS
+interface IConnectionPointContainer;
+interface IConnectionPoint;
+interface IEnumConnections;
+interface IEnumConnectionPoints;
+
+[
+ object,
+ uuid(B196B286-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+interface IConnectionPoint : IUnknown
+{
+ typedef IConnectionPoint * PCONNECTIONPOINT;
+ typedef IConnectionPoint * LPCONNECTIONPOINT;
+
+ HRESULT GetConnectionInterface
+ (
+ [out] IID * piid
+ );
+
+ HRESULT GetConnectionPointContainer
+ (
+ [out] IConnectionPointContainer ** ppCPC
+ );
+
+ HRESULT Advise
+ (
+ [in] IUnknown * pUnkSink,
+ [out] DWORD * pdwCookie
+ );
+
+ HRESULT Unadvise
+ (
+ [in] DWORD dwCookie
+ );
+
+ HRESULT EnumConnections
+ (
+ [out] IEnumConnections ** ppEnum
+ );
+}
+
+[
+ object,
+ uuid(B196B284-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+interface IConnectionPointContainer : IUnknown
+{
+ typedef IConnectionPointContainer * PCONNECTIONPOINTCONTAINER;
+ typedef IConnectionPointContainer * LPCONNECTIONPOINTCONTAINER;
+
+ HRESULT EnumConnectionPoints
+ (
+ [out] IEnumConnectionPoints ** ppEnum
+ );
+
+ HRESULT FindConnectionPoint
+ (
+ [in] REFIID riid,
+ [out] IConnectionPoint ** ppCP
+ );
+}
+
+
+[
+ object,
+ uuid(B196B287-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+interface IEnumConnections : IUnknown
+{
+ typedef IEnumConnections * PENUMCONNECTIONS;
+ typedef IEnumConnections * LPENUMCONNECTIONS;
+
+ typedef struct tagCONNECTDATA
+ {
+ IUnknown * pUnk;
+ DWORD dwCookie;
+ } CONNECTDATA;
+
+ typedef struct tagCONNECTDATA * PCONNECTDATA;
+ typedef struct tagCONNECTDATA * LPCONNECTDATA;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG cConnections,
+ [out,
+ size_is(cConnections),
+ length_is(*lpcFetched)] CONNECTDATA * rgcd,
+ [out] ULONG * lpcFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG cConnections,
+ [out,
+ size_is(cConnections),
+ length_is(*lpcFetched)] CONNECTDATA * rgcd,
+ [out] ULONG * lpcFetched
+ );
+
+ HRESULT Skip
+ (
+ [in] ULONG cConnections
+ );
+
+ HRESULT Reset
+ (
+ void
+ );
+
+ HRESULT Clone
+ (
+ [out] IEnumConnections ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(B196B285-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+interface IEnumConnectionPoints : IUnknown
+{
+ typedef IEnumConnectionPoints * PENUMCONNECTIONPOINTS;
+ typedef IEnumConnectionPoints * LPENUMCONNECTIONPOINTS;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG cConnections,
+ [out,
+ size_is(cConnections),
+ length_is(*lpcFetched)] IConnectionPoint ** rgpcn,
+ [out] ULONG * lpcFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG cConnections,
+ [out,
+ size_is(cConnections),
+ length_is(*lpcFetched)] IConnectionPoint ** rgpcn,
+ [out] ULONG * lpcFetched
+ );
+
+ HRESULT Skip
+ (
+ [in] ULONG cConnections
+ );
+
+ HRESULT Reset
+ (
+ void
+ );
+
+ HRESULT Clone
+ (
+ [out] IEnumConnectionPoints ** ppEnum
+ );
+}
+#endif // __INCLUDE_CPIFS
+
+
+cpp_quote( "#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
+cpp_quote( "// This interface is only valid on Windows NT 4.0" )
+
+[
+ local,
+ object,
+ uuid(0000013D-0000-0000-C000-000000000046)
+]
+interface IClientSecurity : IUnknown
+{
+
+ typedef struct tagSOLE_AUTHENTICATION_SERVICE
+ {
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ OLECHAR *pPrincipalName;
+ HRESULT hr;
+ } SOLE_AUTHENTICATION_SERVICE;
+
+ typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
+
+ typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
+ {
+ EOAC_NONE = 0x0,
+ EOAC_MUTUAL_AUTH = 0x1,
+
+ // These are only valid for CoInitializeSecurity
+ EOAC_SECURE_REFS = 0x2,
+ EOAC_ACCESS_CONTROL = 0x4,
+ EOAC_APPID = 0x8,
+ EOAC_DYNAMIC = 0x10
+ } EOLE_AUTHENTICATION_CAPABILITIES;
+
+ HRESULT QueryBlanket
+ (
+ [in] IUnknown *pProxy,
+ [out] DWORD *pAuthnSvc,
+ [out] DWORD *pAuthzSvc,
+ [out] OLECHAR **pServerPrincName,
+ [out] DWORD *pAuthnLevel,
+ [out] DWORD *pImpLevel,
+ [out] void **pAuthInfo,
+ [out] DWORD *pCapabilites
+ );
+
+ HRESULT SetBlanket
+ (
+ [in] IUnknown *pProxy,
+ [in] DWORD AuthnSvc,
+ [in] DWORD AuthzSvc,
+ [in] OLECHAR *pServerPrincName,
+ [in] DWORD AuthnLevel,
+ [in] DWORD ImpLevel,
+ [in] void *pAuthInfo,
+ [in] DWORD Capabilities
+ );
+
+ HRESULT CopyProxy
+ (
+ [in] IUnknown *pProxy,
+ [out] IUnknown **ppCopy
+ );
+}
+
+[
+ local,
+ object,
+ uuid(0000013E-0000-0000-C000-000000000046)
+]
+interface IServerSecurity : IUnknown
+{
+ HRESULT QueryBlanket
+ (
+ [out] DWORD *pAuthnSvc,
+ [out] DWORD *pAuthzSvc,
+ [out] OLECHAR **pServerPrincName,
+ [out] DWORD *pAuthnLevel,
+ [out] DWORD *pImpLevel,
+ [out] void **pPrivs,
+ [out] DWORD *pCapabilities
+ );
+
+ HRESULT ImpersonateClient();
+
+ HRESULT RevertToSelf();
+
+ BOOL IsImpersonating();
+}
+
+[
+ object,
+ uuid(00000140-0000-0000-C000-000000000046)
+]
+
+interface IClassActivator : IUnknown
+{
+ HRESULT GetClassObject(
+ [in] REFCLSID rclsid,
+ [in] DWORD dwClassContext,
+ [in] LCID locale,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppv);
+}
+
+cpp_quote( "#endif //DCOM" )
+
+
+[
+ object,
+ uuid(99caf010-415e-11cf-8814-00aa00b569f5),
+ pointer_default(unique)
+]
+
+interface IFillLockBytes: IUnknown
+{
+ [local]
+ HRESULT FillAppend
+ (
+ [in, size_is(cb)] void const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten
+ );
+
+ [call_as(FillAppend)]
+ HRESULT _stdcall RemoteFillAppend(
+ [in, size_is(cb)] byte const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [local]
+ HRESULT FillAt
+ (
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] void const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten
+ );
+
+ [call_as(FillAt)]
+ HRESULT _stdcall RemoteFillAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] byte const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ HRESULT SetFillSize
+ (
+ [in] ULARGE_INTEGER ulSize
+ );
+
+ HRESULT Terminate
+ (
+ [in] BOOL bCanceled
+ );
+}
+
+
+[
+ object,
+ uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
+ pointer_default(unique)
+]
+
+interface IProgressNotify: IUnknown
+{
+ HRESULT OnProgress
+ (
+ [in] DWORD dwProgressCurrent,
+ [in] DWORD dwProgressMaximum,
+ [in] BOOL fAccurate,
+ [in] BOOL fOwner
+ );
+}
+
+
+[
+ local,
+ object,
+ uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
+ pointer_default(unique)
+]
+
+interface ILayoutStorage: IUnknown
+{
+ typedef struct tagStorageLayout
+ {
+ DWORD LayoutType;
+ OLECHAR *pwcsElementName;
+ LARGE_INTEGER cOffset;
+ LARGE_INTEGER cBytes;
+ } StorageLayout;
+
+ HRESULT __stdcall LayoutScript
+ (
+ [in] StorageLayout *pStorageLayout,
+ [in] DWORD nEntries,
+ [in] DWORD glfInterleavedFlag
+ );
+ HRESULT __stdcall BeginMonitor(void);
+
+ HRESULT __stdcall EndMonitor(void);
+
+ HRESULT __stdcall ReLayoutDocfile
+ (
+ [in] OLECHAR *pwcsNewDfName
+ );
+
+ HRESULT __stdcall ReLayoutDocfileOnILockBytes
+ (
+ [in] ILockBytes *pILockBytes
+ );
+
+
+}
+
+[
+ uuid(00000022-0000-0000-C000-000000000046),
+ version(1.0),
+ pointer_default(unique)
+ , object
+]
+
+interface ISurrogate : IUnknown
+{
+ typedef [unique] ISurrogate* LPSURROGATE;
+
+ HRESULT LoadDllServer(
+ [in] REFCLSID Clsid);
+ HRESULT FreeSurrogate();
+}
+
+
diff --git a/public/sdk/inc/chicago/ocidl.idl b/public/sdk/inc/chicago/ocidl.idl
new file mode 100644
index 000000000..3eb160631
--- /dev/null
+++ b/public/sdk/inc/chicago/ocidl.idl
@@ -0,0 +1,1571 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1993 - 1996.
+//
+// File: ocidl.idl
+//
+//----------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1993 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "oleidl.idl";
+import "oaidl.idl";
+#endif
+
+interface IEnumConnections;
+interface IEnumConnectionPoints;
+interface IConnectionPoint;
+interface IConnectionPointContainer;
+
+interface IClassFactory2;
+interface IProvideClassInfo;
+interface IProvideClassInfo2;
+interface IOleControl;
+interface IOleControlSite;
+interface IPropertyPage;
+interface IPropertyPage2;
+interface IPropertyPageSite;
+interface IPropertyNotifySink;
+interface ISpecifyPropertyPages;
+interface IPersistMemory;
+interface IPersistStreamInit;
+interface IPersistPropertyBag;
+interface ISimpleFrameSite;
+interface IFont;
+interface IPicture;
+interface IFontDisp;
+interface IPictureDisp;
+
+interface IAdviseSinkEx;
+interface IOleInPlaceObjectWindowless;
+interface IOleInPlaceSiteEx;
+interface IOleInPlaceSiteWindowless;
+interface IViewObjectEx;
+interface IOleUndoUnit;
+interface IOleParentUndoUnit;
+interface IEnumOleUndoUnits;
+interface IOleUndoManager;
+interface IQuickActivate;
+interface IPointerInactive;
+interface IObjectWithSite;
+
+interface IErrorLog;
+interface IPropertyBag;
+interface IPerPropertyBrowsing;
+
+
+[
+ version(1.0), pointer_default(unique)
+]
+
+interface IOleControlTypes
+{
+ typedef [v1_enum] enum tagUASFLAGS {
+ UAS_NORMAL = 0x00,
+ UAS_BLOCKED = 0x01,
+ UAS_NOPARENTENABLE = 0x02,
+ UAS_MASK = 0x03
+ } UASFLAGS;
+}
+
+
+[
+ object,
+ uuid(B196B287-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IEnumConnections : IUnknown
+{
+ typedef IEnumConnections * PENUMCONNECTIONS;
+ typedef IEnumConnections * LPENUMCONNECTIONS;
+
+ typedef struct tagCONNECTDATA {
+ IUnknown * pUnk;
+ DWORD dwCookie;
+ } CONNECTDATA;
+
+ typedef struct tagCONNECTDATA * PCONNECTDATA;
+ typedef struct tagCONNECTDATA * LPCONNECTDATA;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG cConnections,
+ [out, size_is(cConnections), length_is(*pcFetched)]
+ LPCONNECTDATA rgcd,
+ [out] ULONG * pcFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG cConnections,
+ [out, size_is(cConnections), length_is(*pcFetched)]
+ LPCONNECTDATA rgcd,
+ [out] ULONG * pcFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG cConnections
+ );
+
+ HRESULT Reset(
+ void
+ );
+
+ HRESULT Clone(
+ [out] IEnumConnections ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(B196B286-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IConnectionPoint : IUnknown
+{
+ typedef IConnectionPoint * PCONNECTIONPOINT;
+ typedef IConnectionPoint * LPCONNECTIONPOINT;
+
+ HRESULT GetConnectionInterface(
+ [out] IID * pIID
+ );
+
+ HRESULT GetConnectionPointContainer(
+ [out] IConnectionPointContainer ** ppCPC
+ );
+
+ HRESULT Advise(
+ [in] IUnknown * pUnkSink,
+ [out] DWORD * pdwCookie
+ );
+
+ HRESULT Unadvise(
+ [in] DWORD dwCookie
+ );
+
+ HRESULT EnumConnections(
+ [out] IEnumConnections ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(B196B285-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IEnumConnectionPoints : IUnknown
+{
+ typedef IEnumConnectionPoints * PENUMCONNECTIONPOINTS;
+ typedef IEnumConnectionPoints * LPENUMCONNECTIONPOINTS;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG cConnections,
+ [out, size_is(cConnections), length_is(*pcFetched)]
+ LPCONNECTIONPOINT * ppCP,
+ [out] ULONG * pcFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG cConnections,
+ [out, size_is(cConnections), length_is(*pcFetched)]
+ LPCONNECTIONPOINT * ppCP,
+ [out] ULONG * pcFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG cConnections
+ );
+
+ HRESULT Reset(
+ void
+ );
+
+ HRESULT Clone(
+ [out] IEnumConnectionPoints ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(B196B284-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IConnectionPointContainer : IUnknown
+{
+ typedef IConnectionPointContainer * PCONNECTIONPOINTCONTAINER;
+ typedef IConnectionPointContainer * LPCONNECTIONPOINTCONTAINER;
+
+ HRESULT EnumConnectionPoints
+ (
+ [out] IEnumConnectionPoints ** ppEnum
+ );
+
+ HRESULT FindConnectionPoint
+ (
+ [in] REFIID riid,
+ [out] IConnectionPoint ** ppCP
+ );
+}
+
+
+[
+ object,
+ uuid(B196B28F-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IClassFactory2 : IClassFactory
+{
+ typedef IClassFactory2 * LPCLASSFACTORY2;
+
+ typedef struct tagLICINFO {
+ LONG cbLicInfo;
+ BOOL fRuntimeKeyAvail;
+ BOOL fLicVerified;
+ } LICINFO;
+
+ typedef struct tagLICINFO * LPLICINFO;
+
+ HRESULT GetLicInfo(
+ [out] LICINFO * pLicInfo
+ );
+
+ HRESULT RequestLicKey(
+ [in] DWORD dwReserved,
+ [out] BSTR * pBstrKey
+ );
+
+ [local]
+ HRESULT CreateInstanceLic(
+ [in] IUnknown * pUnkOuter,
+ [in] IUnknown * pUnkReserved,
+ [in] REFIID riid,
+ [in] BSTR bstrKey,
+ [out, iid_is(riid)] PVOID * ppvObj
+ );
+
+ [call_as(CreateInstanceLic)]
+ HRESULT RemoteCreateInstanceLic(
+ [in] REFIID riid,
+ [in] BSTR bstrKey,
+ [out, iid_is(riid)] IUnknown ** ppvObj
+ );
+}
+
+
+[
+ object,
+ uuid(B196B283-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IProvideClassInfo : IUnknown
+{
+ typedef IProvideClassInfo * LPPROVIDECLASSINFO;
+
+ HRESULT GetClassInfo(
+ [out] ITypeInfo ** ppTI
+ );
+}
+
+
+[
+ object,
+ uuid(A6BC3AC0-DBAA-11CE-9DE3-00AA004BB851),
+ pointer_default(unique)
+]
+
+interface IProvideClassInfo2 : IProvideClassInfo
+{
+ typedef IProvideClassInfo2 * LPPROVIDECLASSINFO2;
+
+ typedef enum tagGUIDKIND {
+ GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1
+ } GUIDKIND;
+
+ HRESULT GetGUID(
+ [in] DWORD dwGuidKind,
+ [out] GUID * pGUID
+ );
+}
+
+
+[
+ object,
+ uuid(B196B288-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IOleControl : IUnknown
+{
+ typedef IOleControl * LPOLECONTROL;
+
+ typedef struct tagCONTROLINFO {
+ ULONG cb;
+ HACCEL hAccel;
+ USHORT cAccel;
+ DWORD dwFlags;
+ } CONTROLINFO;
+
+ typedef struct tagCONTROLINFO * LPCONTROLINFO;
+
+ typedef enum tagCTRLINFO {
+ CTRLINFO_EATS_RETURN = 1,
+ CTRLINFO_EATS_ESCAPE = 2
+ } CTRLINFO;
+
+ HRESULT GetControlInfo(
+ [out] CONTROLINFO * pCI
+ );
+
+ HRESULT OnMnemonic(
+ [in] MSG * pMsg
+ );
+
+ HRESULT OnAmbientPropertyChange(
+ [in] DISPID dispID
+ );
+
+ HRESULT FreezeEvents(
+ [in] BOOL bFreeze
+ );
+}
+
+
+[
+ object,
+ uuid(B196B289-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IOleControlSite : IUnknown
+{
+ typedef IOleControlSite * LPOLECONTROLSITE;
+
+ typedef struct tagPOINTF {
+ FLOAT x;
+ FLOAT y;
+ } POINTF;
+
+ typedef struct tagPOINTF * LPPOINTF;
+
+ typedef enum tagXFORMCOORDS {
+ XFORMCOORDS_POSITION = 0x1,
+ XFORMCOORDS_SIZE = 0x2,
+ XFORMCOORDS_HIMETRICTOCONTAINER = 0x4,
+ XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8
+ } XFORMCOORDS;
+
+ HRESULT OnControlInfoChanged(
+ void
+ );
+
+ HRESULT LockInPlaceActive(
+ [in] BOOL fLock
+ );
+
+ HRESULT GetExtendedControl(
+ [out] IDispatch ** ppDisp
+ );
+
+ HRESULT TransformCoords(
+ [in, out] POINTL * pPtlHimetric,
+ [in, out] POINTF * pPtfContainer,
+ [in] DWORD dwFlags
+ );
+
+ HRESULT TranslateAccelerator(
+ [in] MSG * pMsg,
+ [in] DWORD grfModifiers
+ );
+
+ HRESULT OnFocus(
+ [in] BOOL fGotFocus
+ );
+
+ HRESULT ShowPropertyFrame(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(B196B28D-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IPropertyPage : IUnknown
+{
+ typedef IPropertyPage * LPPROPERTYPAGE;
+
+ typedef struct tagPROPPAGEINFO {
+ ULONG cb;
+ LPOLESTR pszTitle;
+ SIZE size;
+ LPOLESTR pszDocString;
+ LPOLESTR pszHelpFile;
+ DWORD dwHelpContext;
+ } PROPPAGEINFO;
+
+ typedef struct tagPROPPAGEINFO * LPPROPPAGEINFO;
+
+ HRESULT SetPageSite(
+ [in] IPropertyPageSite * pPageSite
+ );
+
+ HRESULT Activate(
+ [in] HWND hWndParent,
+ [in] LPCRECT pRect,
+ [in] BOOL bModal
+ );
+
+ HRESULT Deactivate(
+ void
+ );
+
+ HRESULT GetPageInfo(
+ [out] PROPPAGEINFO * pPageInfo
+ );
+
+ HRESULT SetObjects(
+ [in] ULONG cObjects,
+ [in, size_is(cObjects)] IUnknown ** ppUnk
+ );
+
+ HRESULT Show(
+ [in] UINT nCmdShow
+ );
+
+ HRESULT Move(
+ [in] LPCRECT pRect
+ );
+
+ HRESULT IsPageDirty(
+ void
+ );
+
+ HRESULT Apply(
+ void
+ );
+
+ HRESULT Help(
+ [in] LPCOLESTR pszHelpDir
+ );
+
+ HRESULT TranslateAccelerator(
+ [in] MSG * pMsg
+ );
+}
+
+
+[
+ object,
+ uuid(01E44665-24AC-101B-84ED-08002B2EC713),
+ pointer_default(unique)
+]
+
+interface IPropertyPage2 : IPropertyPage
+{
+ typedef IPropertyPage2 * LPPROPERTYPAGE2;
+
+ HRESULT EditProperty(
+ [in] DISPID dispID
+ );
+}
+
+
+[
+ object,
+ uuid(B196B28C-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IPropertyPageSite : IUnknown
+{
+ typedef IPropertyPageSite * LPPROPERTYPAGESITE;
+
+ typedef enum tagPROPPAGESTATUS {
+ PROPPAGESTATUS_DIRTY = 0x01,
+ PROPPAGESTATUS_VALIDATE = 0x02,
+ PROPPAGESTATUS_CLEAN = 0x04
+ } PROPPAGESTATUS;
+
+ HRESULT OnStatusChange(
+ [in] DWORD dwFlags
+ );
+
+ HRESULT GetLocaleID(
+ [out] LCID * pLocaleID
+ );
+
+ HRESULT GetPageContainer(
+ [out] IUnknown ** ppUnk
+ );
+
+ HRESULT TranslateAccelerator(
+ [in] MSG * pMsg
+ );
+}
+
+
+[
+ object,
+ uuid(9BFBBC02-EFF1-101A-84ED-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IPropertyNotifySink : IUnknown
+{
+ typedef IPropertyNotifySink * LPPROPERTYNOTIFYSINK;
+
+ HRESULT OnChanged(
+ [in] DISPID dispID
+ );
+
+ HRESULT OnRequestEdit(
+ [in] DISPID dispID
+ );
+}
+
+
+[
+ object,
+ uuid(B196B28B-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface ISpecifyPropertyPages : IUnknown
+{
+ typedef ISpecifyPropertyPages * LPSPECIFYPROPERTYPAGES;
+
+ typedef struct tagCAUUID {
+ ULONG cElems;
+ [size_is(cElems)] GUID * pElems;
+ } CAUUID;
+
+ typedef struct tagCAUUID * LPCAUUID;
+
+ HRESULT GetPages(
+ [out] CAUUID * pPages
+ );
+}
+
+
+[
+ object,
+ uuid(BD1AE5E0-A6AE-11CE-BD37-504200C10000),
+ pointer_default(unique)
+]
+
+interface IPersistMemory : IPersist
+{
+ typedef IPersistMemory * LPPERSISTMEMORY;
+
+ HRESULT IsDirty(
+ void
+ );
+
+ [local]
+ HRESULT Load(
+ [in, size_is(cbSize)] LPVOID pMem,
+ [in] ULONG cbSize
+ );
+
+ [call_as(Load)]
+ HRESULT RemoteLoad(
+ [in, size_is(cbSize)] BYTE * pMem,
+ [in] ULONG cbSize
+ );
+
+ [local]
+ HRESULT Save(
+ [in, size_is(cbSize)] LPVOID pMem,
+ [in] BOOL fClearDirty,
+ [in] ULONG cbSize
+ );
+
+ [call_as(Save)]
+ HRESULT RemoteSave(
+ [in, size_is(cbSize)] BYTE * pMem,
+ [in] BOOL fClearDirty,
+ [in] ULONG cbSize
+ );
+
+ HRESULT GetSizeMax(
+ [out] ULONG * pCbSize
+ );
+
+ HRESULT InitNew(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(7FD52380-4E07-101B-AE2D-08002B2EC713),
+ pointer_default(unique)
+]
+
+interface IPersistStreamInit : IPersist
+{
+ typedef IPersistStreamInit * LPPERSISTSTREAMINIT;
+
+ HRESULT IsDirty(
+ void
+ );
+
+ HRESULT Load(
+ [in] LPSTREAM pStm
+ );
+
+ HRESULT Save(
+ [in] LPSTREAM pStm,
+ [in] BOOL fClearDirty
+ );
+
+ HRESULT GetSizeMax(
+ [out] ULARGE_INTEGER * pCbSize
+ );
+
+ HRESULT InitNew(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(37D84F60-42CB-11CE-8135-00AA004BB851),
+ pointer_default(unique)
+]
+
+interface IPersistPropertyBag : IPersist
+{
+ typedef IPersistPropertyBag * LPPERSISTPROPERTYBAG;
+
+ HRESULT InitNew(
+ void
+ );
+
+ HRESULT Load(
+ [in] IPropertyBag * pPropBag,
+ [in] IErrorLog * pErrorLog
+ );
+
+ HRESULT Save(
+ [in] IPropertyBag * pPropBag,
+ [in] BOOL fClearDirty,
+ [in] BOOL fSaveAllProperties
+ );
+}
+
+
+[
+ object,
+ uuid(742B0E01-14E6-101B-914E-00AA00300CAB),
+ pointer_default(unique)
+]
+
+interface ISimpleFrameSite : IUnknown
+{
+ typedef ISimpleFrameSite * LPSIMPLEFRAMESITE;
+
+ HRESULT PreMessageFilter(
+ [in] HWND hWnd,
+ [in] UINT msg,
+ [in] WPARAM wp,
+ [in] LPARAM lp,
+ [out] LRESULT * plResult,
+ [out] DWORD * pdwCookie
+ );
+
+ HRESULT PostMessageFilter(
+ [in] HWND hWnd,
+ [in] UINT msg,
+ [in] WPARAM wp,
+ [in] LPARAM lp,
+ [out] LRESULT *plResult,
+ [in] DWORD dwCookie
+ );
+}
+
+
+[
+ object,
+ uuid(BEF6E002-A874-101A-8BBA-00AA00300CAB),
+ pointer_default(unique)
+]
+
+interface IFont : IUnknown
+{
+ typedef IFont * LPFONT;
+
+cpp_quote("#if defined(_WIN32) && !defined(OLE2ANSI)")
+ typedef TEXTMETRICW TEXTMETRICOLE;
+cpp_quote("#else")
+cpp_quote("typedef TEXTMETRIC TEXTMETRICOLE;")
+cpp_quote("#endif")
+
+ typedef TEXTMETRICOLE * LPTEXTMETRICOLE;
+
+ HRESULT get_Name(
+ [out] BSTR * pName
+ );
+
+ HRESULT put_Name(
+ [in] BSTR name
+ );
+
+ HRESULT get_Size(
+ [out] CY * pSize
+ );
+
+ HRESULT put_Size(
+ [in] CY size
+ );
+
+ HRESULT get_Bold(
+ [out] BOOL * pBold
+ );
+
+ HRESULT put_Bold(
+ [in] BOOL bold
+ );
+
+ HRESULT get_Italic(
+ [out] BOOL * pItalic
+ );
+
+ HRESULT put_Italic(
+ [in] BOOL italic
+ );
+
+ HRESULT get_Underline(
+ [out] BOOL * pUnderline
+ );
+
+ HRESULT put_Underline(
+ [in] BOOL underline
+ );
+
+ HRESULT get_Strikethrough(
+ [out] BOOL * pStrikethrough
+ );
+
+ HRESULT put_Strikethrough(
+ [in] BOOL strikethrough
+ );
+
+ HRESULT get_Weight(
+ [out] SHORT * pWeight
+ );
+
+ HRESULT put_Weight(
+ [in] SHORT weight
+ );
+
+ HRESULT get_Charset(
+ [out] SHORT * pCharset
+ );
+
+ HRESULT put_Charset(
+ [in] SHORT charset
+ );
+
+ HRESULT get_hFont(
+ [out] HFONT * phFont
+ );
+
+ HRESULT Clone(
+ [out] IFont ** ppFont
+ );
+
+ HRESULT IsEqual(
+ [in] IFont * pFontOther
+ );
+
+ HRESULT SetRatio(
+ [in] LONG cyLogical,
+ [in] LONG cyHimetric
+ );
+
+ HRESULT QueryTextMetrics(
+ [out] TEXTMETRICOLE * pTM
+ );
+
+ HRESULT AddRefHfont(
+ [in] HFONT hFont
+ );
+
+ HRESULT ReleaseHfont(
+ [in] HFONT hFont
+ );
+
+ HRESULT SetHdc(
+ [in] HDC hDC
+ );
+}
+
+
+[
+ object,
+ uuid(7BF80980-BF32-101A-8BBB-00AA00300CAB),
+ pointer_default(unique)
+]
+
+interface IPicture : IUnknown
+{
+ typedef IPicture * LPPICTURE;
+
+ typedef enum tagPictureAttributes {
+ PICTURE_SCALABLE = 0x1,
+ PICTURE_TRANSPARENT = 0x2
+ } PICTUREATTRIBUTES;
+
+ typedef UINT OLE_HANDLE;
+ typedef LONG OLE_XPOS_HIMETRIC;
+ typedef LONG OLE_YPOS_HIMETRIC;
+ typedef LONG OLE_XSIZE_HIMETRIC;
+ typedef LONG OLE_YSIZE_HIMETRIC;
+
+ HRESULT get_Handle(
+ [out] OLE_HANDLE * pHandle
+ );
+
+ HRESULT get_hPal(
+ [out] OLE_HANDLE * phPal
+ );
+
+ HRESULT get_Type(
+ [out] SHORT * pType
+ );
+
+ HRESULT get_Width(
+ [out] OLE_XSIZE_HIMETRIC * pWidth
+ );
+
+ HRESULT get_Height(
+ [out] OLE_YSIZE_HIMETRIC * pHeight
+ );
+
+ HRESULT Render(
+ [in] HDC hDC,
+ [in] LONG x,
+ [in] LONG y,
+ [in] LONG cx,
+ [in] LONG cy,
+ [in] OLE_XPOS_HIMETRIC xSrc,
+ [in] OLE_YPOS_HIMETRIC ySrc,
+ [in] OLE_XSIZE_HIMETRIC cxSrc,
+ [in] OLE_YSIZE_HIMETRIC cySrc,
+ [in] LPCRECT pRcWBounds
+ );
+
+ HRESULT set_hPal(
+ [in] OLE_HANDLE hPal
+ );
+
+ HRESULT get_CurDC(
+ [out] HDC * phDC
+ );
+
+ HRESULT SelectPicture(
+ [in] HDC hDCIn,
+ [out] HDC * phDCOut,
+ [out] OLE_HANDLE * phBmpOut
+ );
+
+ HRESULT get_KeepOriginalFormat(
+ [out] BOOL * pKeep
+ );
+
+ HRESULT put_KeepOriginalFormat(
+ [in] BOOL keep
+ );
+
+ HRESULT PictureChanged(
+ void
+ );
+
+ HRESULT SaveAsFile(
+ [in] LPSTREAM pStream,
+ [in] BOOL fSaveMemCopy,
+ [out] LONG * pCbSize
+ );
+
+ HRESULT get_Attributes(
+ [out] DWORD * pDwAttr
+ );
+}
+
+
+[
+ object,
+ uuid(BEF6E003-A874-101A-8BBA-00AA00300CAB),
+ pointer_default(unique)
+]
+
+interface IFontDisp : IDispatch
+{
+ typedef IFontDisp * LPFONTDISP;
+}
+
+
+[
+ object,
+ uuid(7BF80981-BF32-101A-8BBB-00AA00300CAB),
+ pointer_default(unique)
+]
+
+interface IPictureDisp : IDispatch
+{
+ typedef IPictureDisp * LPPICTUREDISP;
+}
+
+
+//+---------------------------------------------------------------------------
+//
+// Extensions to OLE and OLE Controls.
+//
+//----------------------------------------------------------------------------
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(3AF24290-0C96-11CE-A0CF-00AA00600AB8)
+]
+
+interface IAdviseSinkEx : IAdviseSink
+{
+ typedef IAdviseSinkEx * LPADVISESINKEX;
+
+ [local]
+ void OnViewStatusChange(
+ [in] DWORD dwViewStatus
+ );
+
+ [call_as(OnViewStatusChange), async]
+ void RemoteOnViewStatusChange(
+ [in] DWORD dwViewStatus
+ );
+}
+
+
+[
+ local,
+ object,
+ pointer_default(unique),
+ uuid(1C2056CC-5EF4-101B-8BC8-00AA003E3B29)
+]
+
+interface IOleInPlaceObjectWindowless : IOleInPlaceObject
+{
+ typedef IOleInPlaceObjectWindowless *LPOLEINPLACEOBJECTWINDOWLESS;
+
+ HRESULT OnWindowMessage(
+ [in] UINT msg,
+ [in] WPARAM wParam,
+ [in] LPARAM lParam,
+ [out] LRESULT * plResult
+ );
+
+ HRESULT GetDropTarget(
+ [out] IDropTarget ** ppDropTarget
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(9C2CAD80-3424-11CF-B670-00AA004CD6D8)
+]
+
+interface IOleInPlaceSiteEx : IOleInPlaceSite
+{
+ typedef IOleInPlaceSiteEx * LPOLEINPLACESITEEX;
+
+ typedef [v1_enum] enum tagACTIVATEFLAGS {
+ ACTIVATE_WINDOWLESS = 1,
+ } ACTIVATEFLAGS;
+
+ HRESULT OnInPlaceActivateEx(
+ [out] BOOL * pfNoRedraw,
+ [in] DWORD dwFlags
+ );
+
+ HRESULT OnInPlaceDeactivateEx(
+ [in] BOOL fNoRedraw
+ );
+
+ HRESULT RequestUIActivate(
+ void
+ );
+}
+
+
+[
+ local,
+ object,
+ pointer_default(unique),
+ uuid(922EADA0-3424-11CF-B670-00AA004CD6D8)
+]
+
+interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx
+{
+ typedef IOleInPlaceSiteWindowless * LPOLEINPLACESITEWINDOWLESS;
+
+ typedef [v1_enum] enum tagOLEDCFLAGS {
+ OLEDC_NODRAW = 0x01,
+ OLEDC_PAINTBKGND = 0x02,
+ OLEDC_OFFSCREEN = 0x04
+ } OLEDCFLAGS;
+
+ HRESULT CanWindowlessActivate(
+ void
+ );
+
+ HRESULT GetCapture(
+ void
+ );
+
+ HRESULT SetCapture(
+ [in] BOOL fCapture
+ );
+
+ HRESULT GetFocus(
+ void
+ );
+
+ HRESULT SetFocus(
+ [in] BOOL fFocus
+ );
+
+ HRESULT GetDC(
+ [in] LPCRECT pRect,
+ [in] DWORD grfFlags,
+ [out] HDC * phDC
+ );
+
+ HRESULT ReleaseDC(
+ [in] HDC hDC
+ );
+
+ HRESULT InvalidateRect(
+ [in] LPCRECT pRect,
+ [in] BOOL fErase
+ );
+
+ HRESULT InvalidateRgn(
+ [in] HRGN hRGN,
+ [in] BOOL fErase
+ );
+
+ HRESULT ScrollRect(
+ [in] INT dx,
+ [in] INT dy,
+ [in] LPCRECT pRectScroll,
+ [in] LPCRECT pRectClip
+ );
+
+ HRESULT AdjustRect(
+ [in, out] LPRECT prc
+ );
+
+ HRESULT OnDefWindowMessage(
+ [in] UINT msg,
+ [in] WPARAM wParam,
+ [in] LPARAM lParam,
+ [out] LRESULT * plResult
+ );
+}
+
+
+[
+ local,
+ object,
+ pointer_default(unique),
+ uuid(3AF24292-0C96-11CE-A0CF-00AA00600AB8)
+]
+
+interface IViewObjectEx : IViewObject2
+{
+ typedef IViewObjectEx * LPVIEWOBJECTEX;
+
+ typedef [v1_enum] enum tagVIEWSTATUS {
+ VIEWSTATUS_OPAQUE = 1,
+ VIEWSTATUS_SOLIDBKGND = 2,
+ VIEWSTATUS_DVASPECTOPAQUE = 4,
+ VIEWSTATUS_DVASPECTTRANSPARENT = 8,
+ } VIEWSTATUS;
+
+ typedef [v1_enum] enum tagHITRESULT {
+ HITRESULT_OUTSIDE = 0,
+ HITRESULT_TRANSPARENT = 1,
+ HITRESULT_CLOSE = 2,
+ HITRESULT_HIT = 3
+ } HITRESULT;
+
+ typedef [v1_enum] enum tagDVASPECT2 {
+ DVASPECT_OPAQUE = 16,
+ DVASPECT_TRANSPARENT = 32,
+ } DVASPECT2;
+
+ typedef struct tagExtentInfo {
+ ULONG cb;
+ DWORD dwExtentMode;
+ SIZEL sizelProposed;
+ } DVEXTENTINFO;
+
+ typedef [v1_enum] enum tagExtentMode {
+ DVEXTENT_CONTENT,
+ DVEXTENT_INTEGRAL
+ } DVEXTENTMODE;
+
+ typedef [v1_enum] enum tagAspectInfoFlag {
+ DVASPECTINFOFLAG_CANOPTIMIZE = 1
+ } DVASPECTINFOFLAG;
+
+ typedef struct tagAspectInfo {
+ ULONG cb;
+ DWORD dwFlags;
+ } DVASPECTINFO;
+
+ HRESULT GetRect(
+ [in] DWORD dwAspect,
+ [out] LPRECTL pRect
+ );
+
+ HRESULT GetViewStatus(
+ [out] DWORD * pdwStatus
+ );
+
+ HRESULT QueryHitPoint(
+ [in] DWORD dwAspect,
+ [in] LPCRECT pRectBounds,
+ [in] POINT ptlLoc,
+ [in] LONG lCloseHint,
+ [out] DWORD * pHitResult
+ );
+
+ HRESULT QueryHitRect(
+ [in] DWORD dwAspect,
+ [in] LPCRECT pRectBounds,
+ [in] LPCRECT pRectLoc,
+ [in] LONG lCloseHint,
+ [out] DWORD * pHitResult
+ );
+
+ HRESULT GetNaturalExtent (
+ [in] DWORD dwAspect,
+ [in] LONG lindex,
+ [in] DVTARGETDEVICE * ptd,
+ [in] HDC hicTargetDev,
+ [in] DVEXTENTINFO * pExtentInfo,
+ [out] LPSIZEL pSizel
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(894AD3B0-EF97-11CE-9BC9-00AA00608E01)
+]
+
+interface IOleUndoUnit : IUnknown
+{
+ typedef IOleUndoUnit * LPOLEUNDOUNIT;
+
+ HRESULT Do(
+ [in] IOleUndoManager * pUndoManager
+ );
+
+ HRESULT GetDescription(
+ [out] BSTR * pBstr
+ );
+
+ HRESULT GetUnitType(
+ [out] CLSID * pClsid,
+ [out] LONG * plID
+ );
+
+ HRESULT OnNextAdd(
+ void
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(A1FAF330-EF97-11CE-9BC9-00AA00608E01)
+]
+
+interface IOleParentUndoUnit : IOleUndoUnit
+{
+ typedef IOleParentUndoUnit * LPOLEPARENTUNDOUNIT;
+
+ HRESULT Open(
+ [in] IOleParentUndoUnit * pPUU
+ );
+
+ HRESULT Close(
+ [in] IOleParentUndoUnit * pPUU,
+ [in] BOOL fCommit
+ );
+
+ HRESULT Add(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT FindUnit(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT GetParentState(
+ [out] DWORD * pdwState
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(B3E7C340-EF97-11CE-9BC9-00AA00608E01)
+]
+
+interface IEnumOleUndoUnits : IUnknown
+{
+ typedef IEnumOleUndoUnits * LPENUMOLEUNDOUNITS;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG cElt,
+ [out, size_is(cElt), length_is(*pcEltFetched)]
+ IOleUndoUnit ** rgElt,
+ [out] ULONG * pcEltFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG cElt,
+ [out, size_is(cElt), length_is(*pcEltFetched)]
+ IOleUndoUnit ** rgElt,
+ [out] ULONG * pcEltFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG cElt
+ );
+
+ HRESULT Reset(
+ void
+ );
+
+ HRESULT Clone(
+ [out] IEnumOleUndoUnits ** ppEnum
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(D001F200-EF97-11CE-9BC9-00AA00608E01)
+]
+
+interface IOleUndoManager : IUnknown
+{
+ typedef IOleUndoManager * LPOLEUNDOMANAGER;
+
+ HRESULT Open(
+ [in] IOleParentUndoUnit * pPUU
+ );
+
+ HRESULT Close(
+ [in] IOleParentUndoUnit * pPUU,
+ [in] BOOL fCommit
+ );
+
+ HRESULT Add(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT GetOpenParentState(
+ [out] DWORD * pdwState
+ );
+
+ HRESULT DiscardFrom(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT UndoTo(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT RedoTo(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT EnumUndoable(
+ [out] IEnumOleUndoUnits ** ppEnum
+ );
+
+ HRESULT EnumRedoable(
+ [out] IEnumOleUndoUnits ** ppEnum
+ );
+
+ HRESULT GetLastUndoDescription(
+ [out] BSTR * pBstr
+ );
+
+ HRESULT GetLastRedoDescription(
+ [out] BSTR * pBstr
+ );
+
+ HRESULT Enable(
+ [in] BOOL fEnable
+ );
+}
+
+
+[
+ local,
+ object,
+ pointer_default(unique),
+ uuid(CF51ED10-62FE-11CF-BF86-00A0C9034836)
+]
+
+interface IQuickActivate : IUnknown
+{
+ typedef IQuickActivate * LPQUICKACTIVATE;
+
+ typedef [v1_enum] enum tagQACONTAINERFLAGS {
+ QACONTAINER_SHOWHATCHING = 0x0001,
+ QACONTAINER_SHOWGRABHANDLES = 0x0002,
+ QACONTAINER_USERMODE = 0x0004,
+ QACONTAINER_DISPLAYASDEFAULT = 0x0008,
+ QACONTAINER_UIDEAD = 0x0010,
+ QACONTAINER_AUTOCLIP = 0x0020,
+ QACONTAINER_MESSAGEREFLECT = 0x0040,
+ QACONTAINER_SUPPORTSMNEMONICS = 0x0080
+ } QACONTAINERFLAGS;
+
+ typedef DWORD OLE_COLOR;
+
+ typedef struct tagQACONTAINER {
+ ULONG cbSize;
+ IOleClientSite * pClientSite;
+ IAdviseSinkEx * pAdviseSink;
+ IPropertyNotifySink * pPropertyNotifySink;
+ IUnknown * pUnkEventSink;
+ DWORD dwAmbientFlags;
+ OLE_COLOR colorFore;
+ OLE_COLOR colorBack;
+ IFont * pFont;
+ IOleUndoManager * pUndoMgr;
+ DWORD dwAppearance;
+ LONG lcid;
+ HPALETTE hpal;
+ struct IBindHost * pBindHost;
+ } QACONTAINER;
+
+ typedef struct tagQACONTROL {
+ ULONG cbSize;
+ DWORD dwMiscStatus;
+ DWORD dwViewStatus;
+ DWORD dwEventCookie;
+ DWORD dwPropNotifyCookie;
+ DWORD dwPointerActivationPolicy;
+ } QACONTROL;
+
+ HRESULT QuickActivate(
+ [in] QACONTAINER * pQaContainer,
+ [out] QACONTROL * pQaControl
+ );
+
+ HRESULT SetContentExtent(
+ LPSIZEL pSizel
+ );
+
+ HRESULT GetContentExtent(
+ LPSIZEL pSizel
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(55980BA0-35AA-11CF-B671-00AA004CD6D8)
+]
+
+interface IPointerInactive : IUnknown
+{
+ typedef IPointerInactive * LPPOINTERINACTIVE;
+
+ typedef [v1_enum] enum tagPOINTERINACTIVE {
+ POINTERINACTIVE_ACTIVATEONENTRY = 1,
+ POINTERINACTIVE_DEACTIVATEONLEAVE = 2,
+ POINTERINACTIVE_ACTIVATEONDRAG = 4
+ } POINTERINACTIVE;
+
+ HRESULT GetActivationPolicy(
+ [out] DWORD * pdwPolicy
+ );
+
+ HRESULT OnInactiveMouseMove(
+ [in] LPCRECT pRectBounds,
+ [in] LONG x,
+ [in] LONG y,
+ [in] DWORD grfKeyState
+ );
+
+ HRESULT OnInactiveSetCursor(
+ [in] LPCRECT pRectBounds,
+ [in] LONG x,
+ [in] LONG y,
+ [in] DWORD dwMouseMsg,
+ [in] BOOL fSetAlways
+ );
+}
+
+
+[
+ object,
+ uuid(FC4801A3-2BA9-11CF-A229-00AA003D7352),
+ pointer_default(unique)
+]
+
+interface IObjectWithSite : IUnknown
+{
+ typedef IObjectWithSite * LPOBJECTWITHSITE;
+
+ HRESULT SetSite(
+ [in] IUnknown * pUnkSite
+ );
+
+ HRESULT GetSite(
+ [in] REFIID riid,
+ [out, iid_is(riid)] void ** ppvSite
+ );
+}
+
+
+[
+ object,
+ uuid(3127CA40-446E-11CE-8135-00AA004BB851),
+ pointer_default(unique)
+]
+
+interface IErrorLog : IUnknown
+{
+ typedef IErrorLog * LPERRORLOG;
+
+ HRESULT AddError(
+ [in] LPCOLESTR pszPropName,
+ [in] EXCEPINFO * pExcepInfo
+ );
+}
+
+
+[
+ object,
+ uuid(55272A00-42CB-11CE-8135-00AA004BB851),
+ pointer_default(unique)
+]
+
+interface IPropertyBag : IUnknown
+{
+ typedef IPropertyBag * LPPROPERTYBAG;
+
+ [local]
+ HRESULT Read(
+ [in] LPCOLESTR pszPropName,
+ [in, out] VARIANT * pVar,
+ [in] IErrorLog * pErrorLog
+ );
+
+ [call_as(Read)]
+ HRESULT RemoteRead(
+ [in] LPCOLESTR pszPropName,
+ [out] VARIANT * pVar,
+ [in] IErrorLog * pErrorLog,
+ [in] DWORD varType,
+ [in] IUnknown * pUnkObj
+ );
+
+ HRESULT Write(
+ [in] LPCOLESTR pszPropName,
+ [in] VARIANT * pVar
+ );
+}
+
+
+[
+ object,
+ uuid(376BD3AA-3845-101B-84ED-08002B2EC713),
+ pointer_default(unique)
+]
+
+interface IPerPropertyBrowsing : IUnknown
+{
+ typedef IPerPropertyBrowsing * LPPERPROPERTYBROWSING;
+
+ typedef struct tagCALPOLESTR {
+ ULONG cElems;
+ [size_is(cElems)] LPOLESTR * pElems;
+ } CALPOLESTR;
+
+ typedef struct tagCALPOLESTR * LPCALPOLESTR;
+
+ typedef struct tagCADWORD {
+ ULONG cElems;
+ [size_is(cElems)] DWORD * pElems;
+ } CADWORD;
+
+ typedef struct tagCADWORD * LPCADWORD;
+
+ HRESULT GetDisplayString(
+ [in] DISPID dispID,
+ [out] BSTR * pBstr
+ );
+
+ HRESULT MapPropertyToPage(
+ [in] DISPID dispID,
+ [out] CLSID * pClsid
+ );
+
+ HRESULT GetPredefinedStrings(
+ [in] DISPID dispID,
+ [out] CALPOLESTR * pCaStringsOut,
+ [out] CADWORD * pCaCookiesOut
+ );
+
+ HRESULT GetPredefinedValue(
+ [in] DISPID dispID,
+ [in] DWORD dwCookie,
+ [out] VARIANT * pVarOut
+ );
+}
+
diff --git a/public/sdk/inc/chicago/oleidl.h b/public/sdk/inc/chicago/oleidl.h
new file mode 100644
index 000000000..d3b887671
--- /dev/null
+++ b/public/sdk/inc/chicago/oleidl.h
@@ -0,0 +1,5044 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:35:05 1996
+ */
+/* Compiler settings for oleidl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __oleidl_h__
+#define __oleidl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IOleAdviseHolder_FWD_DEFINED__
+#define __IOleAdviseHolder_FWD_DEFINED__
+typedef interface IOleAdviseHolder IOleAdviseHolder;
+#endif /* __IOleAdviseHolder_FWD_DEFINED__ */
+
+
+#ifndef __IOleCache_FWD_DEFINED__
+#define __IOleCache_FWD_DEFINED__
+typedef interface IOleCache IOleCache;
+#endif /* __IOleCache_FWD_DEFINED__ */
+
+
+#ifndef __IOleCache2_FWD_DEFINED__
+#define __IOleCache2_FWD_DEFINED__
+typedef interface IOleCache2 IOleCache2;
+#endif /* __IOleCache2_FWD_DEFINED__ */
+
+
+#ifndef __IOleCacheControl_FWD_DEFINED__
+#define __IOleCacheControl_FWD_DEFINED__
+typedef interface IOleCacheControl IOleCacheControl;
+#endif /* __IOleCacheControl_FWD_DEFINED__ */
+
+
+#ifndef __IParseDisplayName_FWD_DEFINED__
+#define __IParseDisplayName_FWD_DEFINED__
+typedef interface IParseDisplayName IParseDisplayName;
+#endif /* __IParseDisplayName_FWD_DEFINED__ */
+
+
+#ifndef __IOleContainer_FWD_DEFINED__
+#define __IOleContainer_FWD_DEFINED__
+typedef interface IOleContainer IOleContainer;
+#endif /* __IOleContainer_FWD_DEFINED__ */
+
+
+#ifndef __IOleClientSite_FWD_DEFINED__
+#define __IOleClientSite_FWD_DEFINED__
+typedef interface IOleClientSite IOleClientSite;
+#endif /* __IOleClientSite_FWD_DEFINED__ */
+
+
+#ifndef __IOleObject_FWD_DEFINED__
+#define __IOleObject_FWD_DEFINED__
+typedef interface IOleObject IOleObject;
+#endif /* __IOleObject_FWD_DEFINED__ */
+
+
+#ifndef __IOleWindow_FWD_DEFINED__
+#define __IOleWindow_FWD_DEFINED__
+typedef interface IOleWindow IOleWindow;
+#endif /* __IOleWindow_FWD_DEFINED__ */
+
+
+#ifndef __IOleLink_FWD_DEFINED__
+#define __IOleLink_FWD_DEFINED__
+typedef interface IOleLink IOleLink;
+#endif /* __IOleLink_FWD_DEFINED__ */
+
+
+#ifndef __IOleItemContainer_FWD_DEFINED__
+#define __IOleItemContainer_FWD_DEFINED__
+typedef interface IOleItemContainer IOleItemContainer;
+#endif /* __IOleItemContainer_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceUIWindow_FWD_DEFINED__
+#define __IOleInPlaceUIWindow_FWD_DEFINED__
+typedef interface IOleInPlaceUIWindow IOleInPlaceUIWindow;
+#endif /* __IOleInPlaceUIWindow_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceActiveObject_FWD_DEFINED__
+#define __IOleInPlaceActiveObject_FWD_DEFINED__
+typedef interface IOleInPlaceActiveObject IOleInPlaceActiveObject;
+#endif /* __IOleInPlaceActiveObject_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceFrame_FWD_DEFINED__
+#define __IOleInPlaceFrame_FWD_DEFINED__
+typedef interface IOleInPlaceFrame IOleInPlaceFrame;
+#endif /* __IOleInPlaceFrame_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceObject_FWD_DEFINED__
+#define __IOleInPlaceObject_FWD_DEFINED__
+typedef interface IOleInPlaceObject IOleInPlaceObject;
+#endif /* __IOleInPlaceObject_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceSite_FWD_DEFINED__
+#define __IOleInPlaceSite_FWD_DEFINED__
+typedef interface IOleInPlaceSite IOleInPlaceSite;
+#endif /* __IOleInPlaceSite_FWD_DEFINED__ */
+
+
+#ifndef __IContinue_FWD_DEFINED__
+#define __IContinue_FWD_DEFINED__
+typedef interface IContinue IContinue;
+#endif /* __IContinue_FWD_DEFINED__ */
+
+
+#ifndef __IViewObject_FWD_DEFINED__
+#define __IViewObject_FWD_DEFINED__
+typedef interface IViewObject IViewObject;
+#endif /* __IViewObject_FWD_DEFINED__ */
+
+
+#ifndef __IViewObject2_FWD_DEFINED__
+#define __IViewObject2_FWD_DEFINED__
+typedef interface IViewObject2 IViewObject2;
+#endif /* __IViewObject2_FWD_DEFINED__ */
+
+
+#ifndef __IDropSource_FWD_DEFINED__
+#define __IDropSource_FWD_DEFINED__
+typedef interface IDropSource IDropSource;
+#endif /* __IDropSource_FWD_DEFINED__ */
+
+
+#ifndef __IDropTarget_FWD_DEFINED__
+#define __IDropTarget_FWD_DEFINED__
+typedef interface IDropTarget IDropTarget;
+#endif /* __IDropTarget_FWD_DEFINED__ */
+
+
+#ifndef __IEnumOLEVERB_FWD_DEFINED__
+#define __IEnumOLEVERB_FWD_DEFINED__
+typedef interface IEnumOLEVERB IEnumOLEVERB;
+#endif /* __IEnumOLEVERB_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IOleAdviseHolder_INTERFACE_DEFINED__
+#define __IOleAdviseHolder_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleAdviseHolder
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IOleAdviseHolder __RPC_FAR *LPOLEADVISEHOLDER;
+
+
+EXTERN_C const IID IID_IOleAdviseHolder;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleAdviseHolder : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Advise(
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unadvise(
+ /* [in] */ DWORD dwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendOnRename(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendOnSave( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendOnClose( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleAdviseHolderVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleAdviseHolder __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleAdviseHolder __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Advise )(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unadvise )(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumAdvise )(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SendOnRename )(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SendOnSave )(
+ IOleAdviseHolder __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SendOnClose )(
+ IOleAdviseHolder __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleAdviseHolderVtbl;
+
+ interface IOleAdviseHolder
+ {
+ CONST_VTBL struct IOleAdviseHolderVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleAdviseHolder_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleAdviseHolder_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleAdviseHolder_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleAdviseHolder_Advise(This,pAdvise,pdwConnection) \
+ (This)->lpVtbl -> Advise(This,pAdvise,pdwConnection)
+
+#define IOleAdviseHolder_Unadvise(This,dwConnection) \
+ (This)->lpVtbl -> Unadvise(This,dwConnection)
+
+#define IOleAdviseHolder_EnumAdvise(This,ppenumAdvise) \
+ (This)->lpVtbl -> EnumAdvise(This,ppenumAdvise)
+
+#define IOleAdviseHolder_SendOnRename(This,pmk) \
+ (This)->lpVtbl -> SendOnRename(This,pmk)
+
+#define IOleAdviseHolder_SendOnSave(This) \
+ (This)->lpVtbl -> SendOnSave(This)
+
+#define IOleAdviseHolder_SendOnClose(This) \
+ (This)->lpVtbl -> SendOnClose(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_Advise_Proxy(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+
+void __RPC_STUB IOleAdviseHolder_Advise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_Unadvise_Proxy(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+
+void __RPC_STUB IOleAdviseHolder_Unadvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_EnumAdvise_Proxy(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+
+void __RPC_STUB IOleAdviseHolder_EnumAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_SendOnRename_Proxy(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+
+void __RPC_STUB IOleAdviseHolder_SendOnRename_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_SendOnSave_Proxy(
+ IOleAdviseHolder __RPC_FAR * This);
+
+
+void __RPC_STUB IOleAdviseHolder_SendOnSave_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_SendOnClose_Proxy(
+ IOleAdviseHolder __RPC_FAR * This);
+
+
+void __RPC_STUB IOleAdviseHolder_SendOnClose_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleAdviseHolder_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleCache_INTERFACE_DEFINED__
+#define __IOleCache_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleCache
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleCache __RPC_FAR *LPOLECACHE;
+
+
+EXTERN_C const IID IID_IOleCache;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleCache : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Cache(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Uncache(
+ /* [in] */ DWORD dwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumCache(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumSTATDATA) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitCache(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetData(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleCacheVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleCache __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleCache __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleCache __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Cache )(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Uncache )(
+ IOleCache __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumCache )(
+ IOleCache __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumSTATDATA);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitCache )(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetData )(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+ END_INTERFACE
+ } IOleCacheVtbl;
+
+ interface IOleCache
+ {
+ CONST_VTBL struct IOleCacheVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleCache_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleCache_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleCache_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleCache_Cache(This,pformatetc,advf,pdwConnection) \
+ (This)->lpVtbl -> Cache(This,pformatetc,advf,pdwConnection)
+
+#define IOleCache_Uncache(This,dwConnection) \
+ (This)->lpVtbl -> Uncache(This,dwConnection)
+
+#define IOleCache_EnumCache(This,ppenumSTATDATA) \
+ (This)->lpVtbl -> EnumCache(This,ppenumSTATDATA)
+
+#define IOleCache_InitCache(This,pDataObject) \
+ (This)->lpVtbl -> InitCache(This,pDataObject)
+
+#define IOleCache_SetData(This,pformatetc,pmedium,fRelease) \
+ (This)->lpVtbl -> SetData(This,pformatetc,pmedium,fRelease)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleCache_Cache_Proxy(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+
+void __RPC_STUB IOleCache_Cache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCache_Uncache_Proxy(
+ IOleCache __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+
+void __RPC_STUB IOleCache_Uncache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCache_EnumCache_Proxy(
+ IOleCache __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumSTATDATA);
+
+
+void __RPC_STUB IOleCache_EnumCache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCache_InitCache_Proxy(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject);
+
+
+void __RPC_STUB IOleCache_InitCache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCache_SetData_Proxy(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+
+void __RPC_STUB IOleCache_SetData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleCache_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleCache2_INTERFACE_DEFINED__
+#define __IOleCache2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleCache2
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleCache2 __RPC_FAR *LPOLECACHE2;
+
+#define UPDFCACHE_NODATACACHE ( 0x1 )
+
+#define UPDFCACHE_ONSAVECACHE ( 0x2 )
+
+#define UPDFCACHE_ONSTOPCACHE ( 0x4 )
+
+#define UPDFCACHE_NORMALCACHE ( 0x8 )
+
+#define UPDFCACHE_IFBLANK ( 0x10 )
+
+#define UPDFCACHE_ONLYIFBLANK ( 0x80000000 )
+
+#define UPDFCACHE_IFBLANKORONSAVECACHE ( UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE )
+
+#define UPDFCACHE_ALL ( ( DWORD )~UPDFCACHE_ONLYIFBLANK )
+
+#define UPDFCACHE_ALLBUTNODATACACHE ( UPDFCACHE_ALL & ( DWORD )~UPDFCACHE_NODATACACHE )
+
+typedef /* [v1_enum] */
+enum tagDISCARDCACHE
+ { DISCARDCACHE_SAVEIFDIRTY = 0,
+ DISCARDCACHE_NOSAVE = 1
+ } DISCARDCACHE;
+
+
+EXTERN_C const IID IID_IOleCache2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleCache2 : public IOleCache
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE UpdateCache(
+ /* [in] */ LPDATAOBJECT pDataObject,
+ /* [in] */ DWORD grfUpdf,
+ /* [in] */ LPVOID pReserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DiscardCache(
+ /* [in] */ DWORD dwDiscardOptions) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleCache2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleCache2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleCache2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Cache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Uncache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumCache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumSTATDATA);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitCache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetData )(
+ IOleCache2 __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UpdateCache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ LPDATAOBJECT pDataObject,
+ /* [in] */ DWORD grfUpdf,
+ /* [in] */ LPVOID pReserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DiscardCache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDiscardOptions);
+
+ END_INTERFACE
+ } IOleCache2Vtbl;
+
+ interface IOleCache2
+ {
+ CONST_VTBL struct IOleCache2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleCache2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleCache2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleCache2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleCache2_Cache(This,pformatetc,advf,pdwConnection) \
+ (This)->lpVtbl -> Cache(This,pformatetc,advf,pdwConnection)
+
+#define IOleCache2_Uncache(This,dwConnection) \
+ (This)->lpVtbl -> Uncache(This,dwConnection)
+
+#define IOleCache2_EnumCache(This,ppenumSTATDATA) \
+ (This)->lpVtbl -> EnumCache(This,ppenumSTATDATA)
+
+#define IOleCache2_InitCache(This,pDataObject) \
+ (This)->lpVtbl -> InitCache(This,pDataObject)
+
+#define IOleCache2_SetData(This,pformatetc,pmedium,fRelease) \
+ (This)->lpVtbl -> SetData(This,pformatetc,pmedium,fRelease)
+
+
+#define IOleCache2_UpdateCache(This,pDataObject,grfUpdf,pReserved) \
+ (This)->lpVtbl -> UpdateCache(This,pDataObject,grfUpdf,pReserved)
+
+#define IOleCache2_DiscardCache(This,dwDiscardOptions) \
+ (This)->lpVtbl -> DiscardCache(This,dwDiscardOptions)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleCache2_RemoteUpdateCache_Proxy(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ LPDATAOBJECT pDataObject,
+ /* [in] */ DWORD grfUpdf,
+ /* [in] */ DWORD pReserved);
+
+
+void __RPC_STUB IOleCache2_RemoteUpdateCache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCache2_DiscardCache_Proxy(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDiscardOptions);
+
+
+void __RPC_STUB IOleCache2_DiscardCache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleCache2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleCacheControl_INTERFACE_DEFINED__
+#define __IOleCacheControl_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleCacheControl
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IOleCacheControl __RPC_FAR *LPOLECACHECONTROL;
+
+
+EXTERN_C const IID IID_IOleCacheControl;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleCacheControl : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnRun(
+ LPDATAOBJECT pDataObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnStop( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleCacheControlVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleCacheControl __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleCacheControl __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleCacheControl __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnRun )(
+ IOleCacheControl __RPC_FAR * This,
+ LPDATAOBJECT pDataObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnStop )(
+ IOleCacheControl __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleCacheControlVtbl;
+
+ interface IOleCacheControl
+ {
+ CONST_VTBL struct IOleCacheControlVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleCacheControl_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleCacheControl_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleCacheControl_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleCacheControl_OnRun(This,pDataObject) \
+ (This)->lpVtbl -> OnRun(This,pDataObject)
+
+#define IOleCacheControl_OnStop(This) \
+ (This)->lpVtbl -> OnStop(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleCacheControl_OnRun_Proxy(
+ IOleCacheControl __RPC_FAR * This,
+ LPDATAOBJECT pDataObject);
+
+
+void __RPC_STUB IOleCacheControl_OnRun_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCacheControl_OnStop_Proxy(
+ IOleCacheControl __RPC_FAR * This);
+
+
+void __RPC_STUB IOleCacheControl_OnStop_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleCacheControl_INTERFACE_DEFINED__ */
+
+
+#ifndef __IParseDisplayName_INTERFACE_DEFINED__
+#define __IParseDisplayName_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IParseDisplayName
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IParseDisplayName __RPC_FAR *LPPARSEDISPLAYNAME;
+
+
+EXTERN_C const IID IID_IParseDisplayName;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IParseDisplayName : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IParseDisplayNameVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IParseDisplayName __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IParseDisplayName __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IParseDisplayName __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ParseDisplayName )(
+ IParseDisplayName __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+ END_INTERFACE
+ } IParseDisplayNameVtbl;
+
+ interface IParseDisplayName
+ {
+ CONST_VTBL struct IParseDisplayNameVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IParseDisplayName_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IParseDisplayName_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IParseDisplayName_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IParseDisplayName_ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut) \
+ (This)->lpVtbl -> ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IParseDisplayName_ParseDisplayName_Proxy(
+ IParseDisplayName __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+
+void __RPC_STUB IParseDisplayName_ParseDisplayName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IParseDisplayName_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleContainer_INTERFACE_DEFINED__
+#define __IOleContainer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleContainer
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleContainer __RPC_FAR *LPOLECONTAINER;
+
+
+EXTERN_C const IID IID_IOleContainer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleContainer : public IParseDisplayName
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE EnumObjects(
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockContainer(
+ /* [in] */ BOOL fLock) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleContainerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleContainer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleContainer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleContainer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ParseDisplayName )(
+ IOleContainer __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumObjects )(
+ IOleContainer __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockContainer )(
+ IOleContainer __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+ END_INTERFACE
+ } IOleContainerVtbl;
+
+ interface IOleContainer
+ {
+ CONST_VTBL struct IOleContainerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleContainer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleContainer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleContainer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleContainer_ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut) \
+ (This)->lpVtbl -> ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut)
+
+
+#define IOleContainer_EnumObjects(This,grfFlags,ppenum) \
+ (This)->lpVtbl -> EnumObjects(This,grfFlags,ppenum)
+
+#define IOleContainer_LockContainer(This,fLock) \
+ (This)->lpVtbl -> LockContainer(This,fLock)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleContainer_EnumObjects_Proxy(
+ IOleContainer __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IOleContainer_EnumObjects_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleContainer_LockContainer_Proxy(
+ IOleContainer __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+
+void __RPC_STUB IOleContainer_LockContainer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleContainer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleClientSite_INTERFACE_DEFINED__
+#define __IOleClientSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleClientSite
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleClientSite __RPC_FAR *LPOLECLIENTSITE;
+
+
+EXTERN_C const IID IID_IOleClientSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleClientSite : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SaveObject( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetContainer(
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ShowObject( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnShowWindow(
+ /* [in] */ BOOL fShow) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleClientSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleClientSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleClientSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleClientSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveObject )(
+ IOleClientSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMoniker )(
+ IOleClientSite __RPC_FAR * This,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetContainer )(
+ IOleClientSite __RPC_FAR * This,
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ShowObject )(
+ IOleClientSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnShowWindow )(
+ IOleClientSite __RPC_FAR * This,
+ /* [in] */ BOOL fShow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestNewObjectLayout )(
+ IOleClientSite __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleClientSiteVtbl;
+
+ interface IOleClientSite
+ {
+ CONST_VTBL struct IOleClientSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleClientSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleClientSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleClientSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleClientSite_SaveObject(This) \
+ (This)->lpVtbl -> SaveObject(This)
+
+#define IOleClientSite_GetMoniker(This,dwAssign,dwWhichMoniker,ppmk) \
+ (This)->lpVtbl -> GetMoniker(This,dwAssign,dwWhichMoniker,ppmk)
+
+#define IOleClientSite_GetContainer(This,ppContainer) \
+ (This)->lpVtbl -> GetContainer(This,ppContainer)
+
+#define IOleClientSite_ShowObject(This) \
+ (This)->lpVtbl -> ShowObject(This)
+
+#define IOleClientSite_OnShowWindow(This,fShow) \
+ (This)->lpVtbl -> OnShowWindow(This,fShow)
+
+#define IOleClientSite_RequestNewObjectLayout(This) \
+ (This)->lpVtbl -> RequestNewObjectLayout(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_SaveObject_Proxy(
+ IOleClientSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleClientSite_SaveObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_GetMoniker_Proxy(
+ IOleClientSite __RPC_FAR * This,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IOleClientSite_GetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_GetContainer_Proxy(
+ IOleClientSite __RPC_FAR * This,
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer);
+
+
+void __RPC_STUB IOleClientSite_GetContainer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_ShowObject_Proxy(
+ IOleClientSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleClientSite_ShowObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_OnShowWindow_Proxy(
+ IOleClientSite __RPC_FAR * This,
+ /* [in] */ BOOL fShow);
+
+
+void __RPC_STUB IOleClientSite_OnShowWindow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_RequestNewObjectLayout_Proxy(
+ IOleClientSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleClientSite_RequestNewObjectLayout_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleClientSite_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleObject_INTERFACE_DEFINED__
+#define __IOleObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleObject
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleObject __RPC_FAR *LPOLEOBJECT;
+
+typedef
+enum tagOLEGETMONIKER
+ { OLEGETMONIKER_ONLYIFTHERE = 1,
+ OLEGETMONIKER_FORCEASSIGN = 2,
+ OLEGETMONIKER_UNASSIGN = 3,
+ OLEGETMONIKER_TEMPFORUSER = 4
+ } OLEGETMONIKER;
+
+typedef
+enum tagOLEWHICHMK
+ { OLEWHICHMK_CONTAINER = 1,
+ OLEWHICHMK_OBJREL = 2,
+ OLEWHICHMK_OBJFULL = 3
+ } OLEWHICHMK;
+
+typedef
+enum tagUSERCLASSTYPE
+ { USERCLASSTYPE_FULL = 1,
+ USERCLASSTYPE_SHORT = 2,
+ USERCLASSTYPE_APPNAME = 3
+ } USERCLASSTYPE;
+
+typedef
+enum tagOLEMISC
+ { OLEMISC_RECOMPOSEONRESIZE = 0x1,
+ OLEMISC_ONLYICONIC = 0x2,
+ OLEMISC_INSERTNOTREPLACE = 0x4,
+ OLEMISC_STATIC = 0x8,
+ OLEMISC_CANTLINKINSIDE = 0x10,
+ OLEMISC_CANLINKBYOLE1 = 0x20,
+ OLEMISC_ISLINKOBJECT = 0x40,
+ OLEMISC_INSIDEOUT = 0x80,
+ OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
+ OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
+ OLEMISC_INVISIBLEATRUNTIME = 0x400,
+ OLEMISC_ALWAYSRUN = 0x800,
+ OLEMISC_ACTSLIKEBUTTON = 0x1000,
+ OLEMISC_ACTSLIKELABEL = 0x2000,
+ OLEMISC_NOUIACTIVATE = 0x4000,
+ OLEMISC_ALIGNABLE = 0x8000,
+ OLEMISC_SIMPLEFRAME = 0x10000,
+ OLEMISC_SETCLIENTSITEFIRST = 0x20000,
+ OLEMISC_IMEMODE = 0x40000,
+ OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
+ OLEMISC_WANTSTOMENUMERGE = 0x100000,
+ OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
+ } OLEMISC;
+
+typedef
+enum tagOLECLOSE
+ { OLECLOSE_SAVEIFDIRTY = 0,
+ OLECLOSE_NOSAVE = 1,
+ OLECLOSE_PROMPTSAVE = 2
+ } OLECLOSE;
+
+
+EXTERN_C const IID IID_IOleObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleObject : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetClientSite(
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pClientSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetClientSite(
+ /* [out] */ IOleClientSite __RPC_FAR *__RPC_FAR *ppClientSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHostNames(
+ /* [in] */ LPCOLESTR szContainerApp,
+ /* [unique][in] */ LPCOLESTR szContainerObj) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Close(
+ /* [in] */ DWORD dwSaveOption) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMoniker(
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitFromData(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ BOOL fCreation,
+ /* [in] */ DWORD dwReserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetClipboardData(
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDataObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DoVerb(
+ /* [in] */ LONG iVerb,
+ /* [unique][in] */ LPMSG lpmsg,
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pActiveSite,
+ /* [in] */ LONG lindex,
+ /* [in] */ HWND hwndParent,
+ /* [unique][in] */ LPCRECT lprcPosRect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumVerbs(
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppEnumOleVerb) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Update( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsUpToDate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetUserClassID(
+ /* [out] */ CLSID __RPC_FAR *pClsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetUserType(
+ /* [in] */ DWORD dwFormOfType,
+ /* [out] */ LPOLESTR __RPC_FAR *pszUserType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetExtent(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ SIZEL __RPC_FAR *psizel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetExtent(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [out] */ SIZEL __RPC_FAR *psizel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Advise(
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unadvise(
+ /* [in] */ DWORD dwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMiscStatus(
+ /* [in] */ DWORD dwAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetColorScheme(
+ /* [in] */ LOGPALETTE __RPC_FAR *pLogpal) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetClientSite )(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pClientSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClientSite )(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IOleClientSite __RPC_FAR *__RPC_FAR *ppClientSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHostNames )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LPCOLESTR szContainerApp,
+ /* [unique][in] */ LPCOLESTR szContainerObj);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Close )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwSaveOption);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetMoniker )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMoniker )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitFromData )(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ BOOL fCreation,
+ /* [in] */ DWORD dwReserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClipboardData )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDataObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DoVerb )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LONG iVerb,
+ /* [unique][in] */ LPMSG lpmsg,
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pActiveSite,
+ /* [in] */ LONG lindex,
+ /* [in] */ HWND hwndParent,
+ /* [unique][in] */ LPCRECT lprcPosRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumVerbs )(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppEnumOleVerb);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Update )(
+ IOleObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsUpToDate )(
+ IOleObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetUserClassID )(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetUserType )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwFormOfType,
+ /* [out] */ LPOLESTR __RPC_FAR *pszUserType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetExtent )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ SIZEL __RPC_FAR *psizel);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetExtent )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [out] */ SIZEL __RPC_FAR *psizel);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Advise )(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unadvise )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumAdvise )(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMiscStatus )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetColorScheme )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LOGPALETTE __RPC_FAR *pLogpal);
+
+ END_INTERFACE
+ } IOleObjectVtbl;
+
+ interface IOleObject
+ {
+ CONST_VTBL struct IOleObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleObject_SetClientSite(This,pClientSite) \
+ (This)->lpVtbl -> SetClientSite(This,pClientSite)
+
+#define IOleObject_GetClientSite(This,ppClientSite) \
+ (This)->lpVtbl -> GetClientSite(This,ppClientSite)
+
+#define IOleObject_SetHostNames(This,szContainerApp,szContainerObj) \
+ (This)->lpVtbl -> SetHostNames(This,szContainerApp,szContainerObj)
+
+#define IOleObject_Close(This,dwSaveOption) \
+ (This)->lpVtbl -> Close(This,dwSaveOption)
+
+#define IOleObject_SetMoniker(This,dwWhichMoniker,pmk) \
+ (This)->lpVtbl -> SetMoniker(This,dwWhichMoniker,pmk)
+
+#define IOleObject_GetMoniker(This,dwAssign,dwWhichMoniker,ppmk) \
+ (This)->lpVtbl -> GetMoniker(This,dwAssign,dwWhichMoniker,ppmk)
+
+#define IOleObject_InitFromData(This,pDataObject,fCreation,dwReserved) \
+ (This)->lpVtbl -> InitFromData(This,pDataObject,fCreation,dwReserved)
+
+#define IOleObject_GetClipboardData(This,dwReserved,ppDataObject) \
+ (This)->lpVtbl -> GetClipboardData(This,dwReserved,ppDataObject)
+
+#define IOleObject_DoVerb(This,iVerb,lpmsg,pActiveSite,lindex,hwndParent,lprcPosRect) \
+ (This)->lpVtbl -> DoVerb(This,iVerb,lpmsg,pActiveSite,lindex,hwndParent,lprcPosRect)
+
+#define IOleObject_EnumVerbs(This,ppEnumOleVerb) \
+ (This)->lpVtbl -> EnumVerbs(This,ppEnumOleVerb)
+
+#define IOleObject_Update(This) \
+ (This)->lpVtbl -> Update(This)
+
+#define IOleObject_IsUpToDate(This) \
+ (This)->lpVtbl -> IsUpToDate(This)
+
+#define IOleObject_GetUserClassID(This,pClsid) \
+ (This)->lpVtbl -> GetUserClassID(This,pClsid)
+
+#define IOleObject_GetUserType(This,dwFormOfType,pszUserType) \
+ (This)->lpVtbl -> GetUserType(This,dwFormOfType,pszUserType)
+
+#define IOleObject_SetExtent(This,dwDrawAspect,psizel) \
+ (This)->lpVtbl -> SetExtent(This,dwDrawAspect,psizel)
+
+#define IOleObject_GetExtent(This,dwDrawAspect,psizel) \
+ (This)->lpVtbl -> GetExtent(This,dwDrawAspect,psizel)
+
+#define IOleObject_Advise(This,pAdvSink,pdwConnection) \
+ (This)->lpVtbl -> Advise(This,pAdvSink,pdwConnection)
+
+#define IOleObject_Unadvise(This,dwConnection) \
+ (This)->lpVtbl -> Unadvise(This,dwConnection)
+
+#define IOleObject_EnumAdvise(This,ppenumAdvise) \
+ (This)->lpVtbl -> EnumAdvise(This,ppenumAdvise)
+
+#define IOleObject_GetMiscStatus(This,dwAspect,pdwStatus) \
+ (This)->lpVtbl -> GetMiscStatus(This,dwAspect,pdwStatus)
+
+#define IOleObject_SetColorScheme(This,pLogpal) \
+ (This)->lpVtbl -> SetColorScheme(This,pLogpal)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetClientSite_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pClientSite);
+
+
+void __RPC_STUB IOleObject_SetClientSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetClientSite_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IOleClientSite __RPC_FAR *__RPC_FAR *ppClientSite);
+
+
+void __RPC_STUB IOleObject_GetClientSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetHostNames_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LPCOLESTR szContainerApp,
+ /* [unique][in] */ LPCOLESTR szContainerObj);
+
+
+void __RPC_STUB IOleObject_SetHostNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_Close_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwSaveOption);
+
+
+void __RPC_STUB IOleObject_Close_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetMoniker_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+
+void __RPC_STUB IOleObject_SetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetMoniker_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IOleObject_GetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_InitFromData_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ BOOL fCreation,
+ /* [in] */ DWORD dwReserved);
+
+
+void __RPC_STUB IOleObject_InitFromData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetClipboardData_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDataObject);
+
+
+void __RPC_STUB IOleObject_GetClipboardData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_DoVerb_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LONG iVerb,
+ /* [unique][in] */ LPMSG lpmsg,
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pActiveSite,
+ /* [in] */ LONG lindex,
+ /* [in] */ HWND hwndParent,
+ /* [unique][in] */ LPCRECT lprcPosRect);
+
+
+void __RPC_STUB IOleObject_DoVerb_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_EnumVerbs_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppEnumOleVerb);
+
+
+void __RPC_STUB IOleObject_EnumVerbs_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_Update_Proxy(
+ IOleObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleObject_Update_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_IsUpToDate_Proxy(
+ IOleObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleObject_IsUpToDate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetUserClassID_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClsid);
+
+
+void __RPC_STUB IOleObject_GetUserClassID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetUserType_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwFormOfType,
+ /* [out] */ LPOLESTR __RPC_FAR *pszUserType);
+
+
+void __RPC_STUB IOleObject_GetUserType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetExtent_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ SIZEL __RPC_FAR *psizel);
+
+
+void __RPC_STUB IOleObject_SetExtent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetExtent_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [out] */ SIZEL __RPC_FAR *psizel);
+
+
+void __RPC_STUB IOleObject_GetExtent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_Advise_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+
+void __RPC_STUB IOleObject_Advise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_Unadvise_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+
+void __RPC_STUB IOleObject_Unadvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_EnumAdvise_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+
+void __RPC_STUB IOleObject_EnumAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetMiscStatus_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+
+void __RPC_STUB IOleObject_GetMiscStatus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetColorScheme_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LOGPALETTE __RPC_FAR *pLogpal);
+
+
+void __RPC_STUB IOleObject_SetColorScheme_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOLETypes_INTERFACE_DEFINED__
+#define __IOLETypes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOLETypes
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][uuid] */
+
+
+typedef
+enum tagOLERENDER
+ { OLERENDER_NONE = 0,
+ OLERENDER_DRAW = 1,
+ OLERENDER_FORMAT = 2,
+ OLERENDER_ASIS = 3
+ } OLERENDER;
+
+typedef OLERENDER __RPC_FAR *LPOLERENDER;
+
+typedef struct tagOBJECTDESCRIPTOR
+ {
+ ULONG cbSize;
+ CLSID clsid;
+ DWORD dwDrawAspect;
+ SIZEL sizel;
+ POINTL pointl;
+ DWORD dwStatus;
+ DWORD dwFullUserTypeName;
+ DWORD dwSrcOfCopy;
+ } OBJECTDESCRIPTOR;
+
+typedef struct tagOBJECTDESCRIPTOR __RPC_FAR *POBJECTDESCRIPTOR;
+
+typedef struct tagOBJECTDESCRIPTOR __RPC_FAR *LPOBJECTDESCRIPTOR;
+
+typedef struct tagOBJECTDESCRIPTOR LINKSRCDESCRIPTOR;
+
+typedef struct tagOBJECTDESCRIPTOR __RPC_FAR *PLINKSRCDESCRIPTOR;
+
+typedef struct tagOBJECTDESCRIPTOR __RPC_FAR *LPLINKSRCDESCRIPTOR;
+
+
+
+extern RPC_IF_HANDLE IOLETypes_v0_0_c_ifspec;
+extern RPC_IF_HANDLE IOLETypes_v0_0_s_ifspec;
+#endif /* __IOLETypes_INTERFACE_DEFINED__ */
+
+#ifndef __IOleWindow_INTERFACE_DEFINED__
+#define __IOleWindow_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleWindow
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleWindow __RPC_FAR *LPOLEWINDOW;
+
+
+EXTERN_C const IID IID_IOleWindow;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleWindow : public IUnknown
+ {
+ public:
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetWindow(
+ /* [out] */ HWND __RPC_FAR *phwnd) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(
+ /* [in] */ BOOL fEnterMode) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleWindowVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleWindow __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleWindow __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleWindow __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleWindow __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleWindow __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ END_INTERFACE
+ } IOleWindowVtbl;
+
+ interface IOleWindow
+ {
+ CONST_VTBL struct IOleWindowVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleWindow_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleWindow_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleWindow_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleWindow_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleWindow_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleWindow_GetWindow_Proxy(
+ IOleWindow __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+
+void __RPC_STUB IOleWindow_GetWindow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleWindow_ContextSensitiveHelp_Proxy(
+ IOleWindow __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+
+void __RPC_STUB IOleWindow_ContextSensitiveHelp_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleWindow_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleLink_INTERFACE_DEFINED__
+#define __IOleLink_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleLink
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IOleLink __RPC_FAR *LPOLELINK;
+
+typedef
+enum tagOLEUPDATE
+ { OLEUPDATE_ALWAYS = 1,
+ OLEUPDATE_ONCALL = 3
+ } OLEUPDATE;
+
+typedef OLEUPDATE __RPC_FAR *LPOLEUPDATE;
+
+typedef OLEUPDATE __RPC_FAR *POLEUPDATE;
+
+typedef
+enum tagOLELINKBIND
+ { OLELINKBIND_EVENIFCLASSDIFF = 1
+ } OLELINKBIND;
+
+
+EXTERN_C const IID IID_IOleLink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleLink : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetUpdateOptions(
+ /* [in] */ DWORD dwUpdateOpt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetUpdateOptions(
+ /* [out] */ DWORD __RPC_FAR *pdwUpdateOpt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSourceMoniker(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk,
+ /* [in] */ REFCLSID rclsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSourceMoniker(
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSourceDisplayName(
+ /* [in] */ LPCOLESTR pszStatusText) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSourceDisplayName(
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BindToSource(
+ /* [in] */ DWORD bindflags,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BindIfRunning( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBoundSource(
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnbindSource( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Update(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleLinkVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleLink __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleLink __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetUpdateOptions )(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ DWORD dwUpdateOpt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetUpdateOptions )(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwUpdateOpt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSourceMoniker )(
+ IOleLink __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk,
+ /* [in] */ REFCLSID rclsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceMoniker )(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSourceDisplayName )(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszStatusText);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceDisplayName )(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BindToSource )(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ DWORD bindflags,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BindIfRunning )(
+ IOleLink __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBoundSource )(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UnbindSource )(
+ IOleLink __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Update )(
+ IOleLink __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc);
+
+ END_INTERFACE
+ } IOleLinkVtbl;
+
+ interface IOleLink
+ {
+ CONST_VTBL struct IOleLinkVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleLink_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleLink_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleLink_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleLink_SetUpdateOptions(This,dwUpdateOpt) \
+ (This)->lpVtbl -> SetUpdateOptions(This,dwUpdateOpt)
+
+#define IOleLink_GetUpdateOptions(This,pdwUpdateOpt) \
+ (This)->lpVtbl -> GetUpdateOptions(This,pdwUpdateOpt)
+
+#define IOleLink_SetSourceMoniker(This,pmk,rclsid) \
+ (This)->lpVtbl -> SetSourceMoniker(This,pmk,rclsid)
+
+#define IOleLink_GetSourceMoniker(This,ppmk) \
+ (This)->lpVtbl -> GetSourceMoniker(This,ppmk)
+
+#define IOleLink_SetSourceDisplayName(This,pszStatusText) \
+ (This)->lpVtbl -> SetSourceDisplayName(This,pszStatusText)
+
+#define IOleLink_GetSourceDisplayName(This,ppszDisplayName) \
+ (This)->lpVtbl -> GetSourceDisplayName(This,ppszDisplayName)
+
+#define IOleLink_BindToSource(This,bindflags,pbc) \
+ (This)->lpVtbl -> BindToSource(This,bindflags,pbc)
+
+#define IOleLink_BindIfRunning(This) \
+ (This)->lpVtbl -> BindIfRunning(This)
+
+#define IOleLink_GetBoundSource(This,ppunk) \
+ (This)->lpVtbl -> GetBoundSource(This,ppunk)
+
+#define IOleLink_UnbindSource(This) \
+ (This)->lpVtbl -> UnbindSource(This)
+
+#define IOleLink_Update(This,pbc) \
+ (This)->lpVtbl -> Update(This,pbc)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_SetUpdateOptions_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ DWORD dwUpdateOpt);
+
+
+void __RPC_STUB IOleLink_SetUpdateOptions_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_GetUpdateOptions_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwUpdateOpt);
+
+
+void __RPC_STUB IOleLink_GetUpdateOptions_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_SetSourceMoniker_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk,
+ /* [in] */ REFCLSID rclsid);
+
+
+void __RPC_STUB IOleLink_SetSourceMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_GetSourceMoniker_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IOleLink_GetSourceMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_SetSourceDisplayName_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszStatusText);
+
+
+void __RPC_STUB IOleLink_SetSourceDisplayName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_GetSourceDisplayName_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName);
+
+
+void __RPC_STUB IOleLink_GetSourceDisplayName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_BindToSource_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ DWORD bindflags,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc);
+
+
+void __RPC_STUB IOleLink_BindToSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_BindIfRunning_Proxy(
+ IOleLink __RPC_FAR * This);
+
+
+void __RPC_STUB IOleLink_BindIfRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_GetBoundSource_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+
+void __RPC_STUB IOleLink_GetBoundSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_UnbindSource_Proxy(
+ IOleLink __RPC_FAR * This);
+
+
+void __RPC_STUB IOleLink_UnbindSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_Update_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc);
+
+
+void __RPC_STUB IOleLink_Update_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleLink_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleItemContainer_INTERFACE_DEFINED__
+#define __IOleItemContainer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleItemContainer
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleItemContainer __RPC_FAR *LPOLEITEMCONTAINER;
+
+typedef
+enum tagBINDSPEED
+ { BINDSPEED_INDEFINITE = 1,
+ BINDSPEED_MODERATE = 2,
+ BINDSPEED_IMMEDIATE = 3
+ } BINDSPEED;
+
+typedef /* [v1_enum] */
+enum tagOLECONTF
+ { OLECONTF_EMBEDDINGS = 1,
+ OLECONTF_LINKS = 2,
+ OLECONTF_OTHERS = 4,
+ OLECONTF_ONLYUSER = 8,
+ OLECONTF_ONLYIFRUNNING = 16
+ } OLECONTF;
+
+
+EXTERN_C const IID IID_IOleItemContainer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleItemContainer : public IOleContainer
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetObject(
+ /* [in] */ LPOLESTR pszItem,
+ /* [in] */ DWORD dwSpeedNeeded,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetObjectStorage(
+ /* [in] */ LPOLESTR pszItem,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvStorage) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsRunning(
+ /* [in] */ LPOLESTR pszItem) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleItemContainerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleItemContainer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleItemContainer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ParseDisplayName )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumObjects )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockContainer )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetObject )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [in] */ DWORD dwSpeedNeeded,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetObjectStorage )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvStorage);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsRunning )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem);
+
+ END_INTERFACE
+ } IOleItemContainerVtbl;
+
+ interface IOleItemContainer
+ {
+ CONST_VTBL struct IOleItemContainerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleItemContainer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleItemContainer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleItemContainer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleItemContainer_ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut) \
+ (This)->lpVtbl -> ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut)
+
+
+#define IOleItemContainer_EnumObjects(This,grfFlags,ppenum) \
+ (This)->lpVtbl -> EnumObjects(This,grfFlags,ppenum)
+
+#define IOleItemContainer_LockContainer(This,fLock) \
+ (This)->lpVtbl -> LockContainer(This,fLock)
+
+
+#define IOleItemContainer_GetObject(This,pszItem,dwSpeedNeeded,pbc,riid,ppvObject) \
+ (This)->lpVtbl -> GetObject(This,pszItem,dwSpeedNeeded,pbc,riid,ppvObject)
+
+#define IOleItemContainer_GetObjectStorage(This,pszItem,pbc,riid,ppvStorage) \
+ (This)->lpVtbl -> GetObjectStorage(This,pszItem,pbc,riid,ppvStorage)
+
+#define IOleItemContainer_IsRunning(This,pszItem) \
+ (This)->lpVtbl -> IsRunning(This,pszItem)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_RemoteGetObject_Proxy(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [in] */ DWORD dwSpeedNeeded,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObject);
+
+
+void __RPC_STUB IOleItemContainer_RemoteGetObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_RemoteGetObjectStorage_Proxy(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvStorage);
+
+
+void __RPC_STUB IOleItemContainer_RemoteGetObjectStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleItemContainer_IsRunning_Proxy(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem);
+
+
+void __RPC_STUB IOleItemContainer_IsRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleItemContainer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceUIWindow_INTERFACE_DEFINED__
+#define __IOleInPlaceUIWindow_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceUIWindow
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleInPlaceUIWindow __RPC_FAR *LPOLEINPLACEUIWINDOW;
+
+typedef RECT BORDERWIDTHS;
+
+typedef LPRECT LPBORDERWIDTHS;
+
+typedef LPCRECT LPCBORDERWIDTHS;
+
+
+EXTERN_C const IID IID_IOleInPlaceUIWindow;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceUIWindow : public IOleWindow
+ {
+ public:
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetBorder(
+ /* [out] */ LPRECT lprectBorder) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE RequestBorderSpace(
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetBorderSpace(
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetActiveObject(
+ /* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
+ /* [unique][string][in] */ LPCOLESTR pszObjName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceUIWindowVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceUIWindow __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceUIWindow __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBorder )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [out] */ LPRECT lprectBorder);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestBorderSpace )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetBorderSpace )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetActiveObject )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
+ /* [unique][string][in] */ LPCOLESTR pszObjName);
+
+ END_INTERFACE
+ } IOleInPlaceUIWindowVtbl;
+
+ interface IOleInPlaceUIWindow
+ {
+ CONST_VTBL struct IOleInPlaceUIWindowVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceUIWindow_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceUIWindow_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceUIWindow_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceUIWindow_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceUIWindow_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceUIWindow_GetBorder(This,lprectBorder) \
+ (This)->lpVtbl -> GetBorder(This,lprectBorder)
+
+#define IOleInPlaceUIWindow_RequestBorderSpace(This,pborderwidths) \
+ (This)->lpVtbl -> RequestBorderSpace(This,pborderwidths)
+
+#define IOleInPlaceUIWindow_SetBorderSpace(This,pborderwidths) \
+ (This)->lpVtbl -> SetBorderSpace(This,pborderwidths)
+
+#define IOleInPlaceUIWindow_SetActiveObject(This,pActiveObject,pszObjName) \
+ (This)->lpVtbl -> SetActiveObject(This,pActiveObject,pszObjName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_GetBorder_Proxy(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [out] */ LPRECT lprectBorder);
+
+
+void __RPC_STUB IOleInPlaceUIWindow_GetBorder_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_RequestBorderSpace_Proxy(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+
+void __RPC_STUB IOleInPlaceUIWindow_RequestBorderSpace_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_SetBorderSpace_Proxy(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+
+void __RPC_STUB IOleInPlaceUIWindow_SetBorderSpace_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_SetActiveObject_Proxy(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
+ /* [unique][string][in] */ LPCOLESTR pszObjName);
+
+
+void __RPC_STUB IOleInPlaceUIWindow_SetActiveObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceUIWindow_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceActiveObject_INTERFACE_DEFINED__
+#define __IOleInPlaceActiveObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceActiveObject
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IOleInPlaceActiveObject __RPC_FAR *LPOLEINPLACEACTIVEOBJECT;
+
+
+EXTERN_C const IID IID_IOleInPlaceActiveObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceActiveObject : public IOleWindow
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+ /* [in] */ LPMSG lpmsg) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(
+ /* [in] */ BOOL fActivate) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE OnDocWindowActivate(
+ /* [in] */ BOOL fActivate) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE ResizeBorder(
+ /* [in] */ LPCRECT prcBorder,
+ /* [unique][in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
+ /* [in] */ BOOL fFrameWindow) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnableModeless(
+ /* [in] */ BOOL fEnable) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceActiveObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceActiveObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceActiveObject __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *TranslateAccelerator )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPMSG lpmsg);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnFrameWindowActivate )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fActivate);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnDocWindowActivate )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fActivate);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ResizeBorder )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPCRECT prcBorder,
+ /* [unique][in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
+ /* [in] */ BOOL fFrameWindow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnableModeless )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fEnable);
+
+ END_INTERFACE
+ } IOleInPlaceActiveObjectVtbl;
+
+ interface IOleInPlaceActiveObject
+ {
+ CONST_VTBL struct IOleInPlaceActiveObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceActiveObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceActiveObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceActiveObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceActiveObject_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceActiveObject_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceActiveObject_TranslateAccelerator(This,lpmsg) \
+ (This)->lpVtbl -> TranslateAccelerator(This,lpmsg)
+
+#define IOleInPlaceActiveObject_OnFrameWindowActivate(This,fActivate) \
+ (This)->lpVtbl -> OnFrameWindowActivate(This,fActivate)
+
+#define IOleInPlaceActiveObject_OnDocWindowActivate(This,fActivate) \
+ (This)->lpVtbl -> OnDocWindowActivate(This,fActivate)
+
+#define IOleInPlaceActiveObject_ResizeBorder(This,prcBorder,pUIWindow,fFrameWindow) \
+ (This)->lpVtbl -> ResizeBorder(This,prcBorder,pUIWindow,fFrameWindow)
+
+#define IOleInPlaceActiveObject_EnableModeless(This,fEnable) \
+ (This)->lpVtbl -> EnableModeless(This,fEnable)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_RemoteTranslateAccelerator_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceActiveObject_RemoteTranslateAccelerator_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_OnFrameWindowActivate_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fActivate);
+
+
+void __RPC_STUB IOleInPlaceActiveObject_OnFrameWindowActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_OnDocWindowActivate_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fActivate);
+
+
+void __RPC_STUB IOleInPlaceActiveObject_OnDocWindowActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync][call_as] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_RemoteResizeBorder_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPCRECT prcBorder,
+ /* [in] */ REFIID riid,
+ /* [iid_is][unique][in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
+ /* [in] */ BOOL fFrameWindow);
+
+
+void __RPC_STUB IOleInPlaceActiveObject_RemoteResizeBorder_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_EnableModeless_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fEnable);
+
+
+void __RPC_STUB IOleInPlaceActiveObject_EnableModeless_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceActiveObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceFrame_INTERFACE_DEFINED__
+#define __IOleInPlaceFrame_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceFrame
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleInPlaceFrame __RPC_FAR *LPOLEINPLACEFRAME;
+
+typedef struct tagOIFI
+ {
+ UINT cb;
+ BOOL fMDIApp;
+ HWND hwndFrame;
+ HACCEL haccel;
+ UINT cAccelEntries;
+ } OLEINPLACEFRAMEINFO;
+
+typedef struct tagOIFI __RPC_FAR *LPOLEINPLACEFRAMEINFO;
+
+typedef struct tagOleMenuGroupWidths
+ {
+ LONG width[ 6 ];
+ } OLEMENUGROUPWIDTHS;
+
+typedef struct tagOleMenuGroupWidths __RPC_FAR *LPOLEMENUGROUPWIDTHS;
+
+typedef HGLOBAL HOLEMENU;
+
+
+EXTERN_C const IID IID_IOleInPlaceFrame;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceFrame : public IOleInPlaceUIWindow
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InsertMenus(
+ /* [in] */ HMENU hmenuShared,
+ /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetMenu(
+ /* [in] */ HMENU hmenuShared,
+ /* [in] */ HOLEMENU holemenu,
+ /* [in] */ HWND hwndActiveObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveMenus(
+ /* [in] */ HMENU hmenuShared) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetStatusText(
+ /* [in] */ LPCOLESTR pszStatusText) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnableModeless(
+ /* [in] */ BOOL fEnable) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+ /* [in] */ LPMSG lpmsg,
+ /* [in] */ WORD wID) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceFrameVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceFrame __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceFrame __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBorder )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [out] */ LPRECT lprectBorder);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestBorderSpace )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetBorderSpace )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetActiveObject )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
+ /* [unique][string][in] */ LPCOLESTR pszObjName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InsertMenus )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared,
+ /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetMenu )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared,
+ /* [in] */ HOLEMENU holemenu,
+ /* [in] */ HWND hwndActiveObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RemoveMenus )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetStatusText )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszStatusText);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnableModeless )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ BOOL fEnable);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *TranslateAccelerator )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ LPMSG lpmsg,
+ /* [in] */ WORD wID);
+
+ END_INTERFACE
+ } IOleInPlaceFrameVtbl;
+
+ interface IOleInPlaceFrame
+ {
+ CONST_VTBL struct IOleInPlaceFrameVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceFrame_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceFrame_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceFrame_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceFrame_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceFrame_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceFrame_GetBorder(This,lprectBorder) \
+ (This)->lpVtbl -> GetBorder(This,lprectBorder)
+
+#define IOleInPlaceFrame_RequestBorderSpace(This,pborderwidths) \
+ (This)->lpVtbl -> RequestBorderSpace(This,pborderwidths)
+
+#define IOleInPlaceFrame_SetBorderSpace(This,pborderwidths) \
+ (This)->lpVtbl -> SetBorderSpace(This,pborderwidths)
+
+#define IOleInPlaceFrame_SetActiveObject(This,pActiveObject,pszObjName) \
+ (This)->lpVtbl -> SetActiveObject(This,pActiveObject,pszObjName)
+
+
+#define IOleInPlaceFrame_InsertMenus(This,hmenuShared,lpMenuWidths) \
+ (This)->lpVtbl -> InsertMenus(This,hmenuShared,lpMenuWidths)
+
+#define IOleInPlaceFrame_SetMenu(This,hmenuShared,holemenu,hwndActiveObject) \
+ (This)->lpVtbl -> SetMenu(This,hmenuShared,holemenu,hwndActiveObject)
+
+#define IOleInPlaceFrame_RemoveMenus(This,hmenuShared) \
+ (This)->lpVtbl -> RemoveMenus(This,hmenuShared)
+
+#define IOleInPlaceFrame_SetStatusText(This,pszStatusText) \
+ (This)->lpVtbl -> SetStatusText(This,pszStatusText)
+
+#define IOleInPlaceFrame_EnableModeless(This,fEnable) \
+ (This)->lpVtbl -> EnableModeless(This,fEnable)
+
+#define IOleInPlaceFrame_TranslateAccelerator(This,lpmsg,wID) \
+ (This)->lpVtbl -> TranslateAccelerator(This,lpmsg,wID)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_InsertMenus_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared,
+ /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths);
+
+
+void __RPC_STUB IOleInPlaceFrame_InsertMenus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_SetMenu_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared,
+ /* [in] */ HOLEMENU holemenu,
+ /* [in] */ HWND hwndActiveObject);
+
+
+void __RPC_STUB IOleInPlaceFrame_SetMenu_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_RemoveMenus_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared);
+
+
+void __RPC_STUB IOleInPlaceFrame_RemoveMenus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_SetStatusText_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszStatusText);
+
+
+void __RPC_STUB IOleInPlaceFrame_SetStatusText_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_EnableModeless_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ BOOL fEnable);
+
+
+void __RPC_STUB IOleInPlaceFrame_EnableModeless_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_TranslateAccelerator_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ LPMSG lpmsg,
+ /* [in] */ WORD wID);
+
+
+void __RPC_STUB IOleInPlaceFrame_TranslateAccelerator_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceFrame_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceObject_INTERFACE_DEFINED__
+#define __IOleInPlaceObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceObject
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleInPlaceObject __RPC_FAR *LPOLEINPLACEOBJECT;
+
+
+EXTERN_C const IID IID_IOleInPlaceObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceObject : public IOleWindow
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InPlaceDeactivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UIDeactivate( void) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetObjectRects(
+ /* [in] */ LPCRECT lprcPosRect,
+ /* [in] */ LPCRECT lprcClipRect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReactivateAndUndo( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceObject __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceObject __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceObject __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InPlaceDeactivate )(
+ IOleInPlaceObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UIDeactivate )(
+ IOleInPlaceObject __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetObjectRects )(
+ IOleInPlaceObject __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect,
+ /* [in] */ LPCRECT lprcClipRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReactivateAndUndo )(
+ IOleInPlaceObject __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleInPlaceObjectVtbl;
+
+ interface IOleInPlaceObject
+ {
+ CONST_VTBL struct IOleInPlaceObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceObject_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceObject_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceObject_InPlaceDeactivate(This) \
+ (This)->lpVtbl -> InPlaceDeactivate(This)
+
+#define IOleInPlaceObject_UIDeactivate(This) \
+ (This)->lpVtbl -> UIDeactivate(This)
+
+#define IOleInPlaceObject_SetObjectRects(This,lprcPosRect,lprcClipRect) \
+ (This)->lpVtbl -> SetObjectRects(This,lprcPosRect,lprcClipRect)
+
+#define IOleInPlaceObject_ReactivateAndUndo(This) \
+ (This)->lpVtbl -> ReactivateAndUndo(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceObject_InPlaceDeactivate_Proxy(
+ IOleInPlaceObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceObject_InPlaceDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceObject_UIDeactivate_Proxy(
+ IOleInPlaceObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceObject_UIDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceObject_SetObjectRects_Proxy(
+ IOleInPlaceObject __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect,
+ /* [in] */ LPCRECT lprcClipRect);
+
+
+void __RPC_STUB IOleInPlaceObject_SetObjectRects_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceObject_ReactivateAndUndo_Proxy(
+ IOleInPlaceObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceObject_ReactivateAndUndo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceSite_INTERFACE_DEFINED__
+#define __IOleInPlaceSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceSite
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleInPlaceSite __RPC_FAR *LPOLEINPLACESITE;
+
+
+EXTERN_C const IID IID_IOleInPlaceSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceSite : public IOleWindow
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnUIActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWindowContext(
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Scroll(
+ /* [in] */ SIZE scrollExtant) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(
+ /* [in] */ BOOL fUndoable) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DiscardUndoState( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(
+ /* [in] */ LPCRECT lprcPosRect) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CanInPlaceActivate )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceActivate )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIActivate )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindowContext )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Scroll )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ SIZE scrollExtant);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIDeactivate )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ BOOL fUndoable);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceDeactivate )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DiscardUndoState )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeactivateAndUndo )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnPosRectChange )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect);
+
+ END_INTERFACE
+ } IOleInPlaceSiteVtbl;
+
+ interface IOleInPlaceSite
+ {
+ CONST_VTBL struct IOleInPlaceSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceSite_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceSite_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceSite_CanInPlaceActivate(This) \
+ (This)->lpVtbl -> CanInPlaceActivate(This)
+
+#define IOleInPlaceSite_OnInPlaceActivate(This) \
+ (This)->lpVtbl -> OnInPlaceActivate(This)
+
+#define IOleInPlaceSite_OnUIActivate(This) \
+ (This)->lpVtbl -> OnUIActivate(This)
+
+#define IOleInPlaceSite_GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo) \
+ (This)->lpVtbl -> GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo)
+
+#define IOleInPlaceSite_Scroll(This,scrollExtant) \
+ (This)->lpVtbl -> Scroll(This,scrollExtant)
+
+#define IOleInPlaceSite_OnUIDeactivate(This,fUndoable) \
+ (This)->lpVtbl -> OnUIDeactivate(This,fUndoable)
+
+#define IOleInPlaceSite_OnInPlaceDeactivate(This) \
+ (This)->lpVtbl -> OnInPlaceDeactivate(This)
+
+#define IOleInPlaceSite_DiscardUndoState(This) \
+ (This)->lpVtbl -> DiscardUndoState(This)
+
+#define IOleInPlaceSite_DeactivateAndUndo(This) \
+ (This)->lpVtbl -> DeactivateAndUndo(This)
+
+#define IOleInPlaceSite_OnPosRectChange(This,lprcPosRect) \
+ (This)->lpVtbl -> OnPosRectChange(This,lprcPosRect)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_CanInPlaceActivate_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_CanInPlaceActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnInPlaceActivate_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_OnInPlaceActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnUIActivate_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_OnUIActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_GetWindowContext_Proxy(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+
+void __RPC_STUB IOleInPlaceSite_GetWindowContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_Scroll_Proxy(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ SIZE scrollExtant);
+
+
+void __RPC_STUB IOleInPlaceSite_Scroll_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnUIDeactivate_Proxy(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ BOOL fUndoable);
+
+
+void __RPC_STUB IOleInPlaceSite_OnUIDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnInPlaceDeactivate_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_OnInPlaceDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_DiscardUndoState_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_DiscardUndoState_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_DeactivateAndUndo_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_DeactivateAndUndo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnPosRectChange_Proxy(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect);
+
+
+void __RPC_STUB IOleInPlaceSite_OnPosRectChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceSite_INTERFACE_DEFINED__ */
+
+
+#ifndef __IContinue_INTERFACE_DEFINED__
+#define __IContinue_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IContinue
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+
+EXTERN_C const IID IID_IContinue;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IContinue : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE FContinue( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IContinueVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IContinue __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IContinue __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IContinue __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FContinue )(
+ IContinue __RPC_FAR * This);
+
+ END_INTERFACE
+ } IContinueVtbl;
+
+ interface IContinue
+ {
+ CONST_VTBL struct IContinueVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IContinue_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IContinue_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IContinue_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IContinue_FContinue(This) \
+ (This)->lpVtbl -> FContinue(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IContinue_FContinue_Proxy(
+ IContinue __RPC_FAR * This);
+
+
+void __RPC_STUB IContinue_FContinue_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IContinue_INTERFACE_DEFINED__ */
+
+
+#ifndef __IViewObject_INTERFACE_DEFINED__
+#define __IViewObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IViewObject
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IViewObject __RPC_FAR *LPVIEWOBJECT;
+
+
+EXTERN_C const IID IID_IViewObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IViewObject : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Draw(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hdcTargetDev,
+ /* [in] */ HDC hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *pfnContinue )(
+ DWORD dwContinue),
+ /* [in] */ DWORD dwContinue) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetColorSet(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Freeze(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unfreeze(
+ /* [in] */ DWORD dwFreeze) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAdvise(
+ /* [in] */ DWORD aspects,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAdvise(
+ /* [out] */ DWORD __RPC_FAR *pAspects,
+ /* [out] */ DWORD __RPC_FAR *pAdvf,
+ /* [out] */ IAdviseSink __RPC_FAR *__RPC_FAR *ppAdvSink) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IViewObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IViewObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IViewObject __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Draw )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hdcTargetDev,
+ /* [in] */ HDC hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *pfnContinue )(
+ DWORD dwContinue),
+ /* [in] */ DWORD dwContinue);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetColorSet )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Freeze )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unfreeze )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwFreeze);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAdvise )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD aspects,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAdvise )(
+ IViewObject __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAspects,
+ /* [out] */ DWORD __RPC_FAR *pAdvf,
+ /* [out] */ IAdviseSink __RPC_FAR *__RPC_FAR *ppAdvSink);
+
+ END_INTERFACE
+ } IViewObjectVtbl;
+
+ interface IViewObject
+ {
+ CONST_VTBL struct IViewObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IViewObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IViewObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IViewObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IViewObject_Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue) \
+ (This)->lpVtbl -> Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue)
+
+#define IViewObject_GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet) \
+ (This)->lpVtbl -> GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet)
+
+#define IViewObject_Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze) \
+ (This)->lpVtbl -> Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze)
+
+#define IViewObject_Unfreeze(This,dwFreeze) \
+ (This)->lpVtbl -> Unfreeze(This,dwFreeze)
+
+#define IViewObject_SetAdvise(This,aspects,advf,pAdvSink) \
+ (This)->lpVtbl -> SetAdvise(This,aspects,advf,pAdvSink)
+
+#define IViewObject_GetAdvise(This,pAspects,pAdvf,ppAdvSink) \
+ (This)->lpVtbl -> GetAdvise(This,pAspects,pAdvf,ppAdvSink)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_RemoteDraw_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ DWORD hdcTargetDev,
+ /* [in] */ DWORD hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ IContinue __RPC_FAR *pContinue);
+
+
+void __RPC_STUB IViewObject_RemoteDraw_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_RemoteGetColorSet_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ DWORD hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+
+void __RPC_STUB IViewObject_RemoteGetColorSet_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_RemoteFreeze_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+
+void __RPC_STUB IViewObject_RemoteFreeze_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IViewObject_Unfreeze_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwFreeze);
+
+
+void __RPC_STUB IViewObject_Unfreeze_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IViewObject_SetAdvise_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD aspects,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink);
+
+
+void __RPC_STUB IViewObject_SetAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IViewObject_GetAdvise_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAspects,
+ /* [out] */ DWORD __RPC_FAR *pAdvf,
+ /* [out] */ IAdviseSink __RPC_FAR *__RPC_FAR *ppAdvSink);
+
+
+void __RPC_STUB IViewObject_GetAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IViewObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IViewObject2_INTERFACE_DEFINED__
+#define __IViewObject2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IViewObject2
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IViewObject2 __RPC_FAR *LPVIEWOBJECT2;
+
+
+EXTERN_C const IID IID_IViewObject2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IViewObject2 : public IViewObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetExtent(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [out] */ LPSIZEL lpsizel) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IViewObject2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IViewObject2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IViewObject2 __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Draw )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hdcTargetDev,
+ /* [in] */ HDC hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *pfnContinue )(
+ DWORD dwContinue),
+ /* [in] */ DWORD dwContinue);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetColorSet )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Freeze )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unfreeze )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwFreeze);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAdvise )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD aspects,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAdvise )(
+ IViewObject2 __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAspects,
+ /* [out] */ DWORD __RPC_FAR *pAdvf,
+ /* [out] */ IAdviseSink __RPC_FAR *__RPC_FAR *ppAdvSink);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetExtent )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [out] */ LPSIZEL lpsizel);
+
+ END_INTERFACE
+ } IViewObject2Vtbl;
+
+ interface IViewObject2
+ {
+ CONST_VTBL struct IViewObject2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IViewObject2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IViewObject2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IViewObject2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IViewObject2_Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue) \
+ (This)->lpVtbl -> Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue)
+
+#define IViewObject2_GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet) \
+ (This)->lpVtbl -> GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet)
+
+#define IViewObject2_Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze) \
+ (This)->lpVtbl -> Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze)
+
+#define IViewObject2_Unfreeze(This,dwFreeze) \
+ (This)->lpVtbl -> Unfreeze(This,dwFreeze)
+
+#define IViewObject2_SetAdvise(This,aspects,advf,pAdvSink) \
+ (This)->lpVtbl -> SetAdvise(This,aspects,advf,pAdvSink)
+
+#define IViewObject2_GetAdvise(This,pAspects,pAdvf,ppAdvSink) \
+ (This)->lpVtbl -> GetAdvise(This,pAspects,pAdvf,ppAdvSink)
+
+
+#define IViewObject2_GetExtent(This,dwDrawAspect,lindex,ptd,lpsizel) \
+ (This)->lpVtbl -> GetExtent(This,dwDrawAspect,lindex,ptd,lpsizel)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IViewObject2_GetExtent_Proxy(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [out] */ LPSIZEL lpsizel);
+
+
+void __RPC_STUB IViewObject2_GetExtent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IViewObject2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDropSource_INTERFACE_DEFINED__
+#define __IDropSource_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDropSource
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IDropSource __RPC_FAR *LPDROPSOURCE;
+
+
+EXTERN_C const IID IID_IDropSource;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDropSource : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryContinueDrag(
+ /* [in] */ BOOL fEscapePressed,
+ /* [in] */ DWORD grfKeyState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GiveFeedback(
+ /* [in] */ DWORD dwEffect) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDropSourceVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDropSource __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDropSource __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDropSource __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryContinueDrag )(
+ IDropSource __RPC_FAR * This,
+ /* [in] */ BOOL fEscapePressed,
+ /* [in] */ DWORD grfKeyState);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GiveFeedback )(
+ IDropSource __RPC_FAR * This,
+ /* [in] */ DWORD dwEffect);
+
+ END_INTERFACE
+ } IDropSourceVtbl;
+
+ interface IDropSource
+ {
+ CONST_VTBL struct IDropSourceVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDropSource_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDropSource_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDropSource_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDropSource_QueryContinueDrag(This,fEscapePressed,grfKeyState) \
+ (This)->lpVtbl -> QueryContinueDrag(This,fEscapePressed,grfKeyState)
+
+#define IDropSource_GiveFeedback(This,dwEffect) \
+ (This)->lpVtbl -> GiveFeedback(This,dwEffect)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDropSource_QueryContinueDrag_Proxy(
+ IDropSource __RPC_FAR * This,
+ /* [in] */ BOOL fEscapePressed,
+ /* [in] */ DWORD grfKeyState);
+
+
+void __RPC_STUB IDropSource_QueryContinueDrag_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDropSource_GiveFeedback_Proxy(
+ IDropSource __RPC_FAR * This,
+ /* [in] */ DWORD dwEffect);
+
+
+void __RPC_STUB IDropSource_GiveFeedback_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDropSource_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDropTarget_INTERFACE_DEFINED__
+#define __IDropTarget_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDropTarget
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IDropTarget __RPC_FAR *LPDROPTARGET;
+
+#define MK_ALT ( 0x20 )
+
+#define DROPEFFECT_NONE ( 0 )
+
+#define DROPEFFECT_COPY ( 1 )
+
+#define DROPEFFECT_MOVE ( 2 )
+
+#define DROPEFFECT_LINK ( 4 )
+
+#define DROPEFFECT_SCROLL ( 0x80000000 )
+
+// default inset-width of the hot zone, in pixels
+// typical use: GetProfileInt("windows","DragScrollInset",DD_DEFSCROLLINSET)
+#define DD_DEFSCROLLINSET ( 11 )
+
+// default delay before scrolling, in milliseconds
+// typical use: GetProfileInt("windows","DragScrollDelay",DD_DEFSCROLLDELAY)
+#define DD_DEFSCROLLDELAY ( 50 )
+
+// default scroll interval, in milliseconds
+// typical use: GetProfileInt("windows","DragScrollInterval", DD_DEFSCROLLINTERVAL)
+#define DD_DEFSCROLLINTERVAL ( 50 )
+
+// default delay before dragging should start, in milliseconds
+// typical use: GetProfileInt("windows", "DragDelay", DD_DEFDRAGDELAY)
+#define DD_DEFDRAGDELAY ( 200 )
+
+// default minimum distance (radius) before dragging should start, in pixels
+// typical use: GetProfileInt("windows", "DragMinDist", DD_DEFDRAGMINDIST)
+#define DD_DEFDRAGMINDIST ( 2 )
+
+
+EXTERN_C const IID IID_IDropTarget;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDropTarget : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DragEnter(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DragOver(
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DragLeave( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Drop(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDropTargetVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDropTarget __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDropTarget __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDropTarget __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DragEnter )(
+ IDropTarget __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DragOver )(
+ IDropTarget __RPC_FAR * This,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DragLeave )(
+ IDropTarget __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Drop )(
+ IDropTarget __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+ END_INTERFACE
+ } IDropTargetVtbl;
+
+ interface IDropTarget
+ {
+ CONST_VTBL struct IDropTargetVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDropTarget_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDropTarget_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDropTarget_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDropTarget_DragEnter(This,pDataObj,grfKeyState,pt,pdwEffect) \
+ (This)->lpVtbl -> DragEnter(This,pDataObj,grfKeyState,pt,pdwEffect)
+
+#define IDropTarget_DragOver(This,grfKeyState,pt,pdwEffect) \
+ (This)->lpVtbl -> DragOver(This,grfKeyState,pt,pdwEffect)
+
+#define IDropTarget_DragLeave(This) \
+ (This)->lpVtbl -> DragLeave(This)
+
+#define IDropTarget_Drop(This,pDataObj,grfKeyState,pt,pdwEffect) \
+ (This)->lpVtbl -> Drop(This,pDataObj,grfKeyState,pt,pdwEffect)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDropTarget_DragEnter_Proxy(
+ IDropTarget __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+
+void __RPC_STUB IDropTarget_DragEnter_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDropTarget_DragOver_Proxy(
+ IDropTarget __RPC_FAR * This,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+
+void __RPC_STUB IDropTarget_DragOver_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDropTarget_DragLeave_Proxy(
+ IDropTarget __RPC_FAR * This);
+
+
+void __RPC_STUB IDropTarget_DragLeave_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDropTarget_Drop_Proxy(
+ IDropTarget __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+
+void __RPC_STUB IDropTarget_Drop_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDropTarget_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumOLEVERB_INTERFACE_DEFINED__
+#define __IEnumOLEVERB_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumOLEVERB
+ * at Fri Nov 15 09:35:05 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumOLEVERB __RPC_FAR *LPENUMOLEVERB;
+
+typedef struct tagOLEVERB
+ {
+ LONG lVerb;
+ LPOLESTR lpszVerbName;
+ DWORD fuFlags;
+ DWORD grfAttribs;
+ } OLEVERB;
+
+typedef struct tagOLEVERB __RPC_FAR *LPOLEVERB;
+
+typedef /* [v1_enum] */
+enum tagOLEVERBATTRIB
+ { OLEVERBATTRIB_NEVERDIRTIES = 1,
+ OLEVERBATTRIB_ONCONTAINERMENU = 2
+ } OLEVERBATTRIB;
+
+
+EXTERN_C const IID IID_IEnumOLEVERB;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumOLEVERB : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLEVERB rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumOLEVERBVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumOLEVERB __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumOLEVERB __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLEVERB rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumOLEVERB __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumOLEVERBVtbl;
+
+ interface IEnumOLEVERB
+ {
+ CONST_VTBL struct IEnumOLEVERBVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumOLEVERB_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumOLEVERB_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumOLEVERB_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumOLEVERB_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumOLEVERB_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumOLEVERB_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumOLEVERB_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumOLEVERB_RemoteNext_Proxy(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLEVERB rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumOLEVERB_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Skip_Proxy(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumOLEVERB_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Reset_Proxy(
+ IEnumOLEVERB __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumOLEVERB_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Clone_Proxy(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumOLEVERB_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumOLEVERB_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER CLIPFORMAT_UserSize( unsigned long __RPC_FAR *, unsigned long , CLIPFORMAT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLIPFORMAT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLIPFORMAT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+void __RPC_USER CLIPFORMAT_UserFree( unsigned long __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+
+unsigned long __RPC_USER HACCEL_UserSize( unsigned long __RPC_FAR *, unsigned long , HACCEL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HACCEL_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HACCEL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HACCEL_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HACCEL __RPC_FAR * );
+void __RPC_USER HACCEL_UserFree( unsigned long __RPC_FAR *, HACCEL __RPC_FAR * );
+
+unsigned long __RPC_USER HGLOBAL_UserSize( unsigned long __RPC_FAR *, unsigned long , HGLOBAL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HGLOBAL_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HGLOBAL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HGLOBAL_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HGLOBAL __RPC_FAR * );
+void __RPC_USER HGLOBAL_UserFree( unsigned long __RPC_FAR *, HGLOBAL __RPC_FAR * );
+
+unsigned long __RPC_USER HMENU_UserSize( unsigned long __RPC_FAR *, unsigned long , HMENU __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HMENU_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HMENU __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HMENU_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HMENU __RPC_FAR * );
+void __RPC_USER HMENU_UserFree( unsigned long __RPC_FAR *, HMENU __RPC_FAR * );
+
+unsigned long __RPC_USER HWND_UserSize( unsigned long __RPC_FAR *, unsigned long , HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+void __RPC_USER HWND_UserFree( unsigned long __RPC_FAR *, HWND __RPC_FAR * );
+
+unsigned long __RPC_USER STGMEDIUM_UserSize( unsigned long __RPC_FAR *, unsigned long , STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER STGMEDIUM_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+void __RPC_USER STGMEDIUM_UserFree( unsigned long __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_GetObject_Proxy(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [in] */ DWORD dwSpeedNeeded,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_GetObject_Stub(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [in] */ DWORD dwSpeedNeeded,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObject);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_GetObjectStorage_Proxy(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvStorage);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_GetObjectStorage_Stub(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvStorage);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_TranslateAccelerator_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPMSG lpmsg);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_TranslateAccelerator_Stub(
+ IOleInPlaceActiveObject __RPC_FAR * This);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_ResizeBorder_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPCRECT prcBorder,
+ /* [unique][in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
+ /* [in] */ BOOL fFrameWindow);
+
+
+/* [input_sync][call_as] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_ResizeBorder_Stub(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPCRECT prcBorder,
+ /* [in] */ REFIID riid,
+ /* [iid_is][unique][in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
+ /* [in] */ BOOL fFrameWindow);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IViewObject_Draw_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hdcTargetDev,
+ /* [in] */ HDC hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *pfnContinue )(
+ DWORD dwContinue),
+ /* [in] */ DWORD dwContinue);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_Draw_Stub(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ DWORD hdcTargetDev,
+ /* [in] */ DWORD hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ IContinue __RPC_FAR *pContinue);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IViewObject_GetColorSet_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_GetColorSet_Stub(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ DWORD hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IViewObject_Freeze_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_Freeze_Stub(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOleCache2_UpdateCache_Proxy(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ LPDATAOBJECT pDataObject,
+ /* [in] */ DWORD grfUpdf,
+ /* [in] */ LPVOID pReserved);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleCache2_UpdateCache_Stub(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ LPDATAOBJECT pDataObject,
+ /* [in] */ DWORD grfUpdf,
+ /* [in] */ DWORD pReserved);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Next_Proxy(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLEVERB rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Next_Stub(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLEVERB rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/chicago/oleidl.idl b/public/sdk/inc/chicago/oleidl.idl
new file mode 100644
index 000000000..a1ee8f6d4
--- /dev/null
+++ b/public/sdk/inc/chicago/oleidl.idl
@@ -0,0 +1,1255 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: oadvhr.idl
+//
+//--------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+#endif
+
+interface IOleInPlaceActiveObject;
+interface IEnumOLEVERB;
+
+[
+ local,
+ object,
+ uuid(00000111-0000-0000-C000-000000000046)
+]
+
+interface IOleAdviseHolder : IUnknown
+{
+
+ typedef [unique] IOleAdviseHolder * LPOLEADVISEHOLDER;
+
+ HRESULT Advise
+ (
+ [in, unique] IAdviseSink *pAdvise,
+ [out] DWORD *pdwConnection
+ );
+
+ HRESULT Unadvise
+ (
+ [in] DWORD dwConnection
+ );
+
+ HRESULT EnumAdvise
+ (
+ [out] IEnumSTATDATA **ppenumAdvise
+ );
+
+ HRESULT SendOnRename
+ (
+ [in, unique] IMoniker *pmk
+ );
+
+ HRESULT SendOnSave
+ (
+ void
+ );
+
+ HRESULT SendOnClose
+ (
+ void
+ );
+
+}
+
+[
+ object,
+ uuid(0000011e-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleCache : IUnknown
+{
+
+ typedef [unique] IOleCache *LPOLECACHE;
+
+ HRESULT Cache
+ (
+ [in, unique] FORMATETC *pformatetc,
+ [in] DWORD advf,
+ [out] DWORD *pdwConnection
+ );
+
+ HRESULT Uncache
+ (
+ [in] DWORD dwConnection
+ );
+
+ HRESULT EnumCache
+ (
+ [out] IEnumSTATDATA **ppenumSTATDATA
+ );
+
+ HRESULT InitCache
+ (
+ [in, unique] IDataObject *pDataObject
+ );
+
+ HRESULT SetData
+ (
+ [in, unique] FORMATETC *pformatetc,
+ [in, unique] STGMEDIUM *pmedium,
+ [in] BOOL fRelease
+ );
+
+}
+
+[
+ object,
+ uuid(00000128-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleCache2 : IOleCache
+{
+
+ typedef [unique] IOleCache2 *LPOLECACHE2;
+
+
+ // Cache update Flags
+
+ const DWORD UPDFCACHE_NODATACACHE = 0x00000001;
+ const DWORD UPDFCACHE_ONSAVECACHE = 0x00000002;
+ const DWORD UPDFCACHE_ONSTOPCACHE = 0x00000004;
+ const DWORD UPDFCACHE_NORMALCACHE = 0x00000008;
+ const DWORD UPDFCACHE_IFBLANK = 0x00000010;
+ const DWORD UPDFCACHE_ONLYIFBLANK = 0x80000000;
+
+ const DWORD UPDFCACHE_IFBLANKORONSAVECACHE =
+ (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE);
+ const DWORD UPDFCACHE_ALL =
+ ((DWORD)(~(UPDFCACHE_ONLYIFBLANK)));
+ const DWORD UPDFCACHE_ALLBUTNODATACACHE =
+ (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE)));
+
+
+ // IOleCache2::DiscardCache options
+ typedef [v1_enum] enum tagDISCARDCACHE
+ {
+ DISCARDCACHE_SAVEIFDIRTY = 0, // Save all dirty cache before discarding
+ DISCARDCACHE_NOSAVE = 1 // Don't save dirty caches before
+ // discarding
+ } DISCARDCACHE;
+
+
+ [local]
+ HRESULT UpdateCache
+ (
+ [in] LPDATAOBJECT pDataObject,
+ [in] DWORD grfUpdf,
+ [in] LPVOID pReserved
+ );
+
+ [call_as(UpdateCache)]
+ HRESULT RemoteUpdateCache
+ (
+ [in] LPDATAOBJECT pDataObject,
+ [in] DWORD grfUpdf,
+ [in] DWORD pReserved
+ );
+
+
+ HRESULT DiscardCache
+ (
+ [in] DWORD dwDiscardOptions
+ );
+
+}
+
+[
+ object,
+ uuid(00000129-0000-0000-C000-000000000046)
+]
+
+interface IOleCacheControl : IUnknown
+{
+
+ typedef [unique] IOleCacheControl *LPOLECACHECONTROL;
+
+
+ HRESULT OnRun
+ (
+ LPDATAOBJECT pDataObject
+ );
+
+ HRESULT OnStop (void);
+
+
+}
+
+[
+ object,
+ uuid(0000011a-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IParseDisplayName : IUnknown
+{
+
+ typedef [unique] IParseDisplayName *LPPARSEDISPLAYNAME;
+
+ HRESULT ParseDisplayName
+ (
+ [in, unique] IBindCtx *pbc,
+ [in] LPOLESTR pszDisplayName,
+ [out] ULONG *pchEaten,
+ [out] IMoniker **ppmkOut
+ );
+
+}
+
+[
+ object,
+ uuid(0000011b-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleContainer : IParseDisplayName
+{
+
+ typedef [unique] IOleContainer *LPOLECONTAINER;
+
+ HRESULT EnumObjects
+ (
+ [in] DWORD grfFlags,
+ [out] IEnumUnknown **ppenum
+ );
+
+ HRESULT LockContainer
+ (
+ [in] BOOL fLock
+ );
+}
+
+[
+ object,
+ uuid(00000118-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleClientSite : IUnknown
+{
+
+ typedef [unique] IOleClientSite * LPOLECLIENTSITE;
+
+ HRESULT SaveObject
+ (
+ void
+ );
+
+ HRESULT GetMoniker
+ (
+ [in] DWORD dwAssign,
+ [in] DWORD dwWhichMoniker,
+ [out] IMoniker **ppmk
+ );
+
+ HRESULT GetContainer
+ (
+ [out] IOleContainer **ppContainer
+ );
+
+ HRESULT ShowObject
+ (
+ void
+ );
+
+ HRESULT OnShowWindow
+ (
+ [in] BOOL fShow
+ );
+
+ HRESULT RequestNewObjectLayout
+ (
+ void
+ );
+
+}
+
+[
+ object,
+ uuid(00000112-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleObject : IUnknown
+{
+
+ typedef [unique] IOleObject *LPOLEOBJECT;
+
+ typedef enum tagOLEGETMONIKER
+ {
+ OLEGETMONIKER_ONLYIFTHERE = 1,
+ OLEGETMONIKER_FORCEASSIGN = 2,
+ OLEGETMONIKER_UNASSIGN = 3,
+ OLEGETMONIKER_TEMPFORUSER = 4
+ } OLEGETMONIKER;
+
+ typedef enum tagOLEWHICHMK
+ {
+ OLEWHICHMK_CONTAINER = 1,
+ OLEWHICHMK_OBJREL = 2,
+ OLEWHICHMK_OBJFULL = 3
+ } OLEWHICHMK;
+
+ typedef enum tagUSERCLASSTYPE
+ {
+ USERCLASSTYPE_FULL = 1,
+ USERCLASSTYPE_SHORT = 2,
+ USERCLASSTYPE_APPNAME = 3,
+ } USERCLASSTYPE;
+
+ typedef enum tagOLEMISC
+ {
+ OLEMISC_RECOMPOSEONRESIZE = 0x00000001,
+ OLEMISC_ONLYICONIC = 0x00000002,
+ OLEMISC_INSERTNOTREPLACE = 0x00000004,
+ OLEMISC_STATIC = 0x00000008,
+ OLEMISC_CANTLINKINSIDE = 0x00000010,
+ OLEMISC_CANLINKBYOLE1 = 0x00000020,
+ OLEMISC_ISLINKOBJECT = 0x00000040,
+ OLEMISC_INSIDEOUT = 0x00000080,
+ OLEMISC_ACTIVATEWHENVISIBLE = 0x00000100,
+ OLEMISC_RENDERINGISDEVICEINDEPENDENT= 0x00000200,
+ OLEMISC_INVISIBLEATRUNTIME = 0x00000400,
+ OLEMISC_ALWAYSRUN = 0x00000800,
+ OLEMISC_ACTSLIKEBUTTON = 0x00001000,
+ OLEMISC_ACTSLIKELABEL = 0x00002000,
+ OLEMISC_NOUIACTIVATE = 0x00004000,
+ OLEMISC_ALIGNABLE = 0x00008000,
+ OLEMISC_SIMPLEFRAME = 0x00010000,
+ OLEMISC_SETCLIENTSITEFIRST = 0x00020000,
+ OLEMISC_IMEMODE = 0x00040000,
+ OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x00080000,
+ OLEMISC_WANTSTOMENUMERGE = 0x00100000,
+ OLEMISC_SUPPORTSMULTILEVELUNDO = 0x00200000
+ } OLEMISC;
+
+ typedef enum tagOLECLOSE
+ {
+ OLECLOSE_SAVEIFDIRTY = 0,
+ OLECLOSE_NOSAVE = 1,
+ OLECLOSE_PROMPTSAVE = 2
+ } OLECLOSE;
+
+//IOleObject methods
+
+ HRESULT SetClientSite
+ (
+ [in, unique] IOleClientSite *pClientSite
+ );
+
+ HRESULT GetClientSite
+ (
+ [out] IOleClientSite **ppClientSite
+ );
+
+ HRESULT SetHostNames
+ (
+ [in] LPCOLESTR szContainerApp,
+ [in, unique] LPCOLESTR szContainerObj
+ );
+
+ HRESULT Close
+ (
+ [in] DWORD dwSaveOption
+ );
+
+ HRESULT SetMoniker
+ (
+ [in] DWORD dwWhichMoniker,
+ [in, unique] IMoniker *pmk
+ );
+
+ HRESULT GetMoniker
+ (
+ [in] DWORD dwAssign,
+ [in] DWORD dwWhichMoniker,
+ [out] IMoniker **ppmk
+ );
+
+ HRESULT InitFromData
+ (
+ [in, unique] IDataObject *pDataObject,
+ [in] BOOL fCreation,
+ [in] DWORD dwReserved
+ );
+
+ HRESULT GetClipboardData
+ (
+ [in] DWORD dwReserved,
+ [out] IDataObject **ppDataObject
+ );
+
+ HRESULT DoVerb
+ (
+ [in] LONG iVerb,
+ [in, unique] LPMSG lpmsg,
+ [in, unique] IOleClientSite *pActiveSite,
+ [in] LONG lindex,
+ [in] HWND hwndParent,
+ [in, unique] LPCRECT lprcPosRect
+ );
+
+ HRESULT EnumVerbs
+ (
+ [out] IEnumOLEVERB **ppEnumOleVerb
+ );
+
+ HRESULT Update
+ (
+ void
+ );
+
+ HRESULT IsUpToDate
+ (
+ void
+ );
+
+ HRESULT GetUserClassID
+ (
+ [out] CLSID *pClsid
+ );
+
+ HRESULT GetUserType
+ (
+ [in] DWORD dwFormOfType,
+ [out] LPOLESTR *pszUserType
+ );
+
+ HRESULT SetExtent
+ (
+ [in] DWORD dwDrawAspect,
+ [in] SIZEL *psizel
+ );
+
+ HRESULT GetExtent
+ (
+ [in] DWORD dwDrawAspect,
+ [out] SIZEL *psizel
+ );
+
+ HRESULT Advise
+ (
+ [in, unique] IAdviseSink *pAdvSink,
+ [out] DWORD *pdwConnection
+ );
+
+ HRESULT Unadvise
+ (
+ [in] DWORD dwConnection
+ );
+
+ HRESULT EnumAdvise
+ (
+ [out] IEnumSTATDATA **ppenumAdvise
+ );
+
+ HRESULT GetMiscStatus
+ (
+ [in] DWORD dwAspect,
+ [out] DWORD *pdwStatus
+ );
+
+ HRESULT SetColorScheme
+ (
+ [in] LOGPALETTE *pLogpal
+ );
+}
+
+[uuid(B0916C84-7416-101A-BCEA-08002B2B79EF)]
+interface IOLETypes
+{
+
+ /****** OLE value types ***********************************************/
+
+ /* rendering options */
+ typedef enum tagOLERENDER
+ {
+ OLERENDER_NONE = 0,
+ OLERENDER_DRAW = 1,
+ OLERENDER_FORMAT = 2,
+ OLERENDER_ASIS = 3
+ } OLERENDER;
+ typedef OLERENDER * LPOLERENDER;
+
+
+
+ /****** Clipboard Data structures *****************************************/
+
+ typedef struct tagOBJECTDESCRIPTOR
+ {
+ ULONG cbSize; // Size of structure in bytes
+ CLSID clsid; // CLSID of data being transferred
+ DWORD dwDrawAspect; // Display aspect of the object
+ // normally DVASPECT_CONTENT or ICON.
+ // dwDrawAspect will be 0 (which is NOT
+ // DVASPECT_CONTENT) if the copier or
+ // dragsource didn't draw the object to
+ // begin with.
+ SIZEL sizel; // size of the object in HIMETRIC
+ // sizel is opt.: will be (0,0) for apps
+ // which don't draw the object being
+ // transferred
+ POINTL pointl; // Offset in HIMETRIC units from the
+ // upper-left corner of the obj where the
+ // mouse went down for the drag.
+ // NOTE: y coordinates increase downward.
+ // x coordinates increase to right
+ // pointl is opt.; it is only meaningful
+ // if object is transfered via drag/drop.
+ // (0, 0) if mouse position is unspecified
+ // (eg. when obj transfered via clipboard)
+ DWORD dwStatus; // Misc. status flags for object. Flags are
+ // defined by OLEMISC enum. these flags
+ // are as would be returned
+ // by IOleObject::GetMiscStatus.
+ DWORD dwFullUserTypeName; // Offset from beginning of structure to
+ // null-terminated string that specifies
+ // Full User Type Name of the object.
+ // 0 indicates string not present.
+ DWORD dwSrcOfCopy; // Offset from beginning of structure to
+ // null-terminated string that specifies
+ // source of the transfer.
+ // dwSrcOfCOpy is normally implemented as
+ // the display name of the temp-for-user
+ // moniker which identifies the source of
+ // the data.
+ // 0 indicates string not present.
+ // NOTE: moniker assignment is NOT forced.
+ // see IOleObject::GetMoniker(
+ // OLEGETMONIKER_TEMPFORUSER)
+
+ /* variable sized string data may appear here */
+
+ } OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, *LPOBJECTDESCRIPTOR,
+ LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, *LPLINKSRCDESCRIPTOR;
+
+
+
+
+}
+
+[
+ object,
+ uuid(00000114-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleWindow : IUnknown
+{
+
+ typedef [unique] IOleWindow *LPOLEWINDOW;
+
+ [input_sync]
+ HRESULT GetWindow
+ (
+ [out] HWND *phwnd
+ );
+
+ HRESULT ContextSensitiveHelp
+ (
+ [in] BOOL fEnterMode
+ );
+}
+
+[
+ object,
+ uuid(0000011d-0000-0000-C000-000000000046)
+]
+
+interface IOleLink : IUnknown
+{
+
+ typedef [unique] IOleLink *LPOLELINK;
+
+ /* Link update options */
+ typedef enum tagOLEUPDATE
+ {
+ OLEUPDATE_ALWAYS=1,
+ OLEUPDATE_ONCALL=3
+ } OLEUPDATE;
+ typedef OLEUPDATE *LPOLEUPDATE;
+
+
+ typedef OLEUPDATE *POLEUPDATE;
+
+ // for IOleLink::BindToSource
+ typedef enum tagOLELINKBIND
+ {
+ OLELINKBIND_EVENIFCLASSDIFF = 1,
+ } OLELINKBIND;
+
+ HRESULT SetUpdateOptions
+ (
+ [in] DWORD dwUpdateOpt
+ );
+
+ HRESULT GetUpdateOptions
+ (
+ [out] DWORD *pdwUpdateOpt
+ );
+
+ HRESULT SetSourceMoniker
+ (
+ [in, unique] IMoniker *pmk,
+ [in] REFCLSID rclsid
+ );
+
+ HRESULT GetSourceMoniker
+ (
+ [out] IMoniker **ppmk
+ );
+
+ HRESULT SetSourceDisplayName
+ (
+ [in]LPCOLESTR pszStatusText
+ );
+
+ HRESULT GetSourceDisplayName
+ (
+ [out] LPOLESTR *ppszDisplayName
+ );
+
+ HRESULT BindToSource
+ (
+ [in] DWORD bindflags,
+ [in, unique] IBindCtx *pbc
+ );
+
+ HRESULT BindIfRunning
+ (
+ void
+ );
+
+ HRESULT GetBoundSource
+ (
+ [out] IUnknown **ppunk
+ );
+
+ HRESULT UnbindSource
+ (
+ void
+ );
+
+ HRESULT Update
+ (
+ [in, unique] IBindCtx *pbc
+ );
+
+}
+
+[
+ object,
+ uuid(0000011c-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleItemContainer : IOleContainer
+{
+
+ typedef [unique] IOleItemContainer *LPOLEITEMCONTAINER;
+
+ typedef enum tagBINDSPEED
+ {
+ BINDSPEED_INDEFINITE = 1,
+ BINDSPEED_MODERATE = 2,
+ BINDSPEED_IMMEDIATE = 3
+ } BINDSPEED;
+
+ typedef [v1_enum] enum tagOLECONTF
+ {
+ OLECONTF_EMBEDDINGS = 1,
+ OLECONTF_LINKS = 2,
+ OLECONTF_OTHERS = 4,
+ OLECONTF_ONLYUSER = 8,
+ OLECONTF_ONLYIFRUNNING = 16
+ } OLECONTF;
+
+ [local]
+ HRESULT GetObject(
+ [in] LPOLESTR pszItem,
+ [in] DWORD dwSpeedNeeded,
+ [in, unique] IBindCtx *pbc,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvObject);
+
+ [call_as(GetObject)]
+ HRESULT RemoteGetObject(
+ [in] LPOLESTR pszItem,
+ [in] DWORD dwSpeedNeeded,
+ [in, unique] IBindCtx *pbc,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **ppvObject);
+
+ [local]
+ HRESULT GetObjectStorage(
+ [in] LPOLESTR pszItem,
+ [in, unique] IBindCtx *pbc,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvStorage);
+
+ [call_as(GetObjectStorage)]
+ HRESULT RemoteGetObjectStorage(
+ [in] LPOLESTR pszItem,
+ [in, unique] IBindCtx *pbc,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **ppvStorage);
+
+ HRESULT IsRunning(
+ [in] LPOLESTR pszItem);
+}
+
+[
+ object,
+ uuid(00000115-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleInPlaceUIWindow : IOleWindow
+{
+
+ typedef [unique] IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
+
+ typedef RECT BORDERWIDTHS;
+
+ typedef LPRECT LPBORDERWIDTHS;
+
+ typedef LPCRECT LPCBORDERWIDTHS;
+
+
+ [input_sync]
+ HRESULT GetBorder
+ (
+ [out] LPRECT lprectBorder
+ );
+
+ [input_sync]
+ HRESULT RequestBorderSpace
+ (
+ [in, unique] LPCBORDERWIDTHS pborderwidths
+ );
+
+ [input_sync]
+ HRESULT SetBorderSpace
+ (
+ [in, unique] LPCBORDERWIDTHS pborderwidths
+ );
+
+ HRESULT SetActiveObject
+ (
+ [in, unique] IOleInPlaceActiveObject *pActiveObject,
+ [in, string, unique] LPCOLESTR pszObjName
+ );
+
+}
+
+[
+ object,
+ uuid(00000117-0000-0000-C000-000000000046)
+]
+
+interface IOleInPlaceActiveObject : IOleWindow
+{
+
+ typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
+
+ [local]
+ HRESULT TranslateAccelerator
+ (
+ [in] LPMSG lpmsg
+ );
+
+ [call_as(TranslateAccelerator)]
+ HRESULT RemoteTranslateAccelerator();
+
+ [input_sync]
+ HRESULT OnFrameWindowActivate
+ (
+ [in] BOOL fActivate
+ );
+
+ [input_sync]
+ HRESULT OnDocWindowActivate
+ (
+ [in] BOOL fActivate
+ );
+
+ [local]
+ HRESULT ResizeBorder
+ (
+ [in] LPCRECT prcBorder,
+ [in, unique] IOleInPlaceUIWindow *pUIWindow,
+ [in] BOOL fFrameWindow
+ );
+
+ [call_as(ResizeBorder), input_sync]
+ HRESULT RemoteResizeBorder
+ (
+ [in] LPCRECT prcBorder,
+ [in] REFIID riid,
+ [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow,
+ [in] BOOL fFrameWindow
+ );
+
+ HRESULT EnableModeless
+ (
+ [in] BOOL fEnable
+ );
+
+}
+
+[
+ object,
+ uuid(00000116-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleInPlaceFrame : IOleInPlaceUIWindow
+{
+
+ typedef [unique] IOleInPlaceFrame *LPOLEINPLACEFRAME;
+
+
+typedef struct tagOIFI // OleInPlaceFrameInfo
+{
+ UINT cb;
+ BOOL fMDIApp;
+ HWND hwndFrame;
+ HACCEL haccel;
+ UINT cAccelEntries;
+} OLEINPLACEFRAMEINFO, * LPOLEINPLACEFRAMEINFO;
+
+
+typedef struct tagOleMenuGroupWidths
+{
+ LONG width[6];
+} OLEMENUGROUPWIDTHS, * LPOLEMENUGROUPWIDTHS;
+
+ typedef HGLOBAL HOLEMENU;
+
+ HRESULT InsertMenus
+ (
+ [in] HMENU hmenuShared,
+ [in,out] LPOLEMENUGROUPWIDTHS lpMenuWidths
+ );
+
+ [input_sync]
+ HRESULT SetMenu
+ (
+ [in] HMENU hmenuShared,
+ [in] HOLEMENU holemenu,
+ [in] HWND hwndActiveObject
+ );
+
+ HRESULT RemoveMenus
+ (
+ [in] HMENU hmenuShared
+ );
+
+ [input_sync]
+ HRESULT SetStatusText
+ (
+ [in] LPCOLESTR pszStatusText
+ );
+
+ HRESULT EnableModeless
+ (
+ [in] BOOL fEnable
+ );
+
+ HRESULT TranslateAccelerator
+ (
+ [in] LPMSG lpmsg,
+ [in] WORD wID
+ );
+
+}
+
+[
+ object,
+ uuid(00000113-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleInPlaceObject : IOleWindow
+{
+
+ typedef [unique] IOleInPlaceObject *LPOLEINPLACEOBJECT;
+
+
+ HRESULT InPlaceDeactivate
+ (
+ void
+ );
+
+ HRESULT UIDeactivate
+ (
+ void
+ );
+
+ [input_sync]
+ HRESULT SetObjectRects
+ (
+ [in] LPCRECT lprcPosRect,
+ [in] LPCRECT lprcClipRect
+ );
+
+ HRESULT ReactivateAndUndo
+ (
+ void
+ );
+}
+
+[
+ object,
+ uuid(00000119-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleInPlaceSite : IOleWindow
+{
+
+ typedef [unique] IOleInPlaceSite *LPOLEINPLACESITE;
+
+ HRESULT CanInPlaceActivate
+ (
+ void
+ );
+
+ HRESULT OnInPlaceActivate
+ (
+ void
+ );
+
+ HRESULT OnUIActivate
+ (
+ void
+ );
+
+ HRESULT GetWindowContext
+ (
+ [out] IOleInPlaceFrame **ppFrame,
+ [out] IOleInPlaceUIWindow **ppDoc,
+ [out] LPRECT lprcPosRect,
+ [out] LPRECT lprcClipRect,
+ [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo
+ );
+
+ HRESULT Scroll
+ (
+ [in] SIZE scrollExtant
+ );
+
+ HRESULT OnUIDeactivate
+ (
+ [in] BOOL fUndoable
+ );
+
+ HRESULT OnInPlaceDeactivate
+ (
+ void
+ );
+
+ HRESULT DiscardUndoState
+ (
+ void
+ );
+
+ HRESULT DeactivateAndUndo
+ (
+ void
+ );
+
+ HRESULT OnPosRectChange
+ (
+ [in] LPCRECT lprcPosRect
+ );
+
+}
+
+[
+ object,
+ uuid(0000012a-0000-0000-C000-000000000046)
+]
+
+interface IContinue : IUnknown
+{
+ HRESULT FContinue();
+}
+
+[
+ object,
+ uuid(0000010d-0000-0000-C000-000000000046)
+]
+
+interface IViewObject : IUnknown
+{
+
+ typedef [unique] IViewObject *LPVIEWOBJECT;
+
+ [local]
+ HRESULT Draw
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in, unique] void * pvAspect,
+ [in, unique] DVTARGETDEVICE *ptd,
+ [in] HDC hdcTargetDev,
+ [in] HDC hdcDraw,
+ [in] LPCRECTL lprcBounds,
+ [in, unique] LPCRECTL lprcWBounds,
+ [in] BOOL (*pfnContinue)(DWORD dwContinue),
+ [in] DWORD dwContinue
+ );
+
+ [call_as(Draw)]
+ HRESULT RemoteDraw
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in] DWORD pvAspect,
+ [in, unique] DVTARGETDEVICE *ptd,
+ [in] DWORD hdcTargetDev,
+ [in] DWORD hdcDraw,
+ [in] LPCRECTL lprcBounds,
+ [in, unique] LPCRECTL lprcWBounds,
+ [in] IContinue *pContinue
+ );
+
+ [local]
+ HRESULT GetColorSet
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in, unique] void *pvAspect,
+ [in, unique] DVTARGETDEVICE *ptd,
+ [in] HDC hicTargetDev,
+ [out] LOGPALETTE **ppColorSet
+ );
+
+ [call_as(GetColorSet)]
+ HRESULT RemoteGetColorSet
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in] DWORD pvAspect,
+ [in, unique] DVTARGETDEVICE *ptd,
+ [in] DWORD hicTargetDev,
+ [out] LOGPALETTE **ppColorSet
+ );
+
+ [local]
+ HRESULT Freeze
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in, unique] void *pvAspect,
+ [out] DWORD *pdwFreeze
+ );
+
+ [call_as(Freeze)]
+ HRESULT RemoteFreeze
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in] DWORD pvAspect,
+ [out] DWORD *pdwFreeze
+ );
+
+
+ HRESULT Unfreeze
+ (
+ [in] DWORD dwFreeze
+ );
+
+ HRESULT SetAdvise
+ (
+ [in] DWORD aspects,
+ [in] DWORD advf,
+ [in, unique] IAdviseSink *pAdvSink
+ );
+
+ HRESULT GetAdvise
+ (
+ [out] DWORD *pAspects,
+ [out] DWORD *pAdvf,
+ [out] IAdviseSink **ppAdvSink
+ );
+
+}
+
+[
+ object,
+ uuid(00000127-0000-0000-C000-000000000046)
+]
+
+interface IViewObject2 : IViewObject
+{
+
+ typedef [unique] IViewObject2 *LPVIEWOBJECT2;
+
+ HRESULT GetExtent
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in, unique] DVTARGETDEVICE* ptd,
+ [out] LPSIZEL lpsizel
+ );
+
+}
+
+
+[
+ local,
+ object,
+ uuid(00000121-0000-0000-C000-000000000046)
+]
+
+interface IDropSource : IUnknown
+{
+
+ typedef [unique] IDropSource *LPDROPSOURCE;
+
+ HRESULT QueryContinueDrag
+ (
+ [in] BOOL fEscapePressed,
+ [in] DWORD grfKeyState
+ );
+
+ HRESULT GiveFeedback
+ (
+ [in] DWORD dwEffect
+ );
+}
+
+[
+ object,
+ uuid(00000122-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IDropTarget : IUnknown
+{
+
+ typedef [unique] IDropTarget *LPDROPTARGET;
+
+
+ const DWORD MK_ALT = 0x0020;
+
+ const DWORD DROPEFFECT_NONE = 0;
+ const DWORD DROPEFFECT_COPY = 1;
+ const DWORD DROPEFFECT_MOVE = 2;
+ const DWORD DROPEFFECT_LINK = 4;
+ const DWORD DROPEFFECT_SCROLL = 0x80000000;
+
+ cpp_quote("// default inset-width of the hot zone, in pixels")
+ cpp_quote("// typical use: GetProfileInt(\"windows\",\"DragScrollInset\",DD_DEFSCROLLINSET)")
+ const DWORD DD_DEFSCROLLINSET = 11;
+
+ cpp_quote("// default delay before scrolling, in milliseconds")
+ cpp_quote("// typical use: GetProfileInt(\"windows\",\"DragScrollDelay\",DD_DEFSCROLLDELAY)")
+ const DWORD DD_DEFSCROLLDELAY = 50;
+
+ cpp_quote("// default scroll interval, in milliseconds")
+ cpp_quote("// typical use: GetProfileInt(\"windows\",\"DragScrollInterval\", DD_DEFSCROLLINTERVAL)")
+ const DWORD DD_DEFSCROLLINTERVAL = 50;
+
+ cpp_quote("// default delay before dragging should start, in milliseconds")
+ cpp_quote("// typical use: GetProfileInt(\"windows\", \"DragDelay\", DD_DEFDRAGDELAY)")
+ const DWORD DD_DEFDRAGDELAY = 200;
+
+ cpp_quote("// default minimum distance (radius) before dragging should start, in pixels")
+ cpp_quote("// typical use: GetProfileInt(\"windows\", \"DragMinDist\", DD_DEFDRAGMINDIST)")
+ const DWORD DD_DEFDRAGMINDIST = 2;
+
+
+ HRESULT DragEnter
+ (
+ [in, unique] IDataObject *pDataObj,
+ [in] DWORD grfKeyState,
+ [in] POINTL pt,
+ [in, out] DWORD *pdwEffect
+ );
+
+ HRESULT DragOver
+ (
+ [in] DWORD grfKeyState,
+ [in] POINTL pt,
+ [in, out] DWORD *pdwEffect
+ );
+
+ HRESULT DragLeave
+ (
+ void
+ );
+
+ HRESULT Drop
+ (
+ [in, unique] IDataObject *pDataObj,
+ [in] DWORD grfKeyState,
+ [in] POINTL pt,
+ [in, out] DWORD *pdwEffect
+ );
+}
+
+[
+ object,
+ uuid(00000104-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumOLEVERB : IUnknown
+{
+
+ typedef [unique] IEnumOLEVERB *LPENUMOLEVERB;
+
+ typedef struct tagOLEVERB {
+ LONG lVerb;
+ LPOLESTR lpszVerbName;
+ DWORD fuFlags;
+ DWORD grfAttribs;
+ } OLEVERB, * LPOLEVERB;
+
+ // Bitwise verb attributes used in OLEVERB.grfAttribs
+ typedef [v1_enum] enum tagOLEVERBATTRIB // bitwise
+ {
+ OLEVERBATTRIB_NEVERDIRTIES = 1,
+ OLEVERBATTRIB_ONCONTAINERMENU = 2
+ } OLEVERBATTRIB;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ LPOLEVERB rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ LPOLEVERB rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumOLEVERB **ppenum);
+}
diff --git a/public/sdk/inc/chicago/srvhdl.h b/public/sdk/inc/chicago/srvhdl.h
new file mode 100644
index 000000000..09151168d
--- /dev/null
+++ b/public/sdk/inc/chicago/srvhdl.h
@@ -0,0 +1,983 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:35:01 1996
+ */
+/* Compiler settings for srvhdl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __srvhdl_h__
+#define __srvhdl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IServerHandler_FWD_DEFINED__
+#define __IServerHandler_FWD_DEFINED__
+typedef interface IServerHandler IServerHandler;
+#endif /* __IServerHandler_FWD_DEFINED__ */
+
+
+#ifndef __IClientSiteHandler_FWD_DEFINED__
+#define __IClientSiteHandler_FWD_DEFINED__
+typedef interface IClientSiteHandler IClientSiteHandler;
+#endif /* __IClientSiteHandler_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oleidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifndef __IServerHandler_INTERFACE_DEFINED__
+#define __IServerHandler_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IServerHandler
+ * at Fri Nov 15 09:35:01 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1995.
+//
+//--------------------------------------------------------------------------
+typedef /* [unique] */ IServerHandler __RPC_FAR *LPSERVERHANDLER;
+
+typedef struct tagInSrvRun
+ {
+ DWORD dwOperation;
+ IMoniker __RPC_FAR *pMnk;
+ IOleContainer __RPC_FAR *pOCont;
+ IStorage __RPC_FAR *pStg;
+ LONG iVerb;
+ LPMSG lpmsg;
+ LONG lindex;
+ HWND hwndParent;
+ RECT __RPC_FAR *lprcPosRect;
+ DWORD dwInPlace;
+ DWORD dwInFlags;
+ DWORD dwInOptions;
+ LPOLESTR pszContainerApp;
+ LPOLESTR pszContainerObj;
+ IAdviseSink __RPC_FAR *pAS;
+ DWORD dwConnOle;
+ CLSID __RPC_FAR *pContClassID;
+ } INSRVRUN;
+
+typedef struct tagInSrvRun __RPC_FAR *PINSRVRUN;
+
+typedef struct tagOutSrvRunInit
+ {
+ DWORD dwOperation;
+ IOleObject __RPC_FAR *pOO;
+ IDataObject __RPC_FAR *pDO;
+ IPersistStorage __RPC_FAR *pPStg;
+ HRESULT hrSetHostNames;
+ HRESULT hrPStg;
+ HRESULT hrAdvise;
+ DWORD dwConnOle;
+ CLSID __RPC_FAR *pUserClassID;
+ DWORD dwOutFlag;
+ DWORD dwOutOptions;
+ } OUTSRVRUN;
+
+typedef struct tagOutSrvRunInit __RPC_FAR *POUTSRVRUN;
+
+typedef struct tagSrvRunDoVerb
+ {
+ IUnknown __RPC_FAR *pUnk;
+ } SRVRUNDOVERB;
+
+typedef struct tagSrvRunDoVerb __RPC_FAR *PSRVRUNDOVERB;
+
+typedef struct tagSrvDoVerb
+ {
+ IUnknown __RPC_FAR *pUnk;
+ } SRVDOVERB;
+
+typedef struct tagSrvDoVerb __RPC_FAR *PSRVDOVERB;
+
+
+EXTERN_C const IID IID_IServerHandler;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IServerHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RunAndInitialize(
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RunAndDoVerb(
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DoVerb(
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CloseAndRelease(
+ /* [in] */ DWORD dwClose) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IServerHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IServerHandler __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IServerHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RunAndInitialize )(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RunAndDoVerb )(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DoVerb )(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CloseAndRelease )(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwClose);
+
+ END_INTERFACE
+ } IServerHandlerVtbl;
+
+ interface IServerHandler
+ {
+ CONST_VTBL struct IServerHandlerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IServerHandler_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IServerHandler_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IServerHandler_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IServerHandler_RunAndInitialize(This,pInSrvRun,pOutSrvRun) \
+ (This)->lpVtbl -> RunAndInitialize(This,pInSrvRun,pOutSrvRun)
+
+#define IServerHandler_RunAndDoVerb(This,pInSrvRun,pOutSrvRun) \
+ (This)->lpVtbl -> RunAndDoVerb(This,pInSrvRun,pOutSrvRun)
+
+#define IServerHandler_DoVerb(This,pInSrvRun,pOutSrvRun) \
+ (This)->lpVtbl -> DoVerb(This,pInSrvRun,pOutSrvRun)
+
+#define IServerHandler_CloseAndRelease(This,dwClose) \
+ (This)->lpVtbl -> CloseAndRelease(This,dwClose)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IServerHandler_RunAndInitialize_Proxy(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+
+void __RPC_STUB IServerHandler_RunAndInitialize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IServerHandler_RunAndDoVerb_Proxy(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+
+void __RPC_STUB IServerHandler_RunAndDoVerb_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IServerHandler_DoVerb_Proxy(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+
+void __RPC_STUB IServerHandler_DoVerb_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IServerHandler_CloseAndRelease_Proxy(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwClose);
+
+
+void __RPC_STUB IServerHandler_CloseAndRelease_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IServerHandler_INTERFACE_DEFINED__ */
+
+
+#ifndef __IClientSiteHandler_INTERFACE_DEFINED__
+#define __IClientSiteHandler_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IClientSiteHandler
+ * at Fri Nov 15 09:35:01 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1995.
+//
+//--------------------------------------------------------------------------
+typedef /* [unique] */ IClientSiteHandler __RPC_FAR *LPCLIENTSITEHANDLER;
+
+typedef struct tagInSrvInPlace
+ {
+ DWORD dwOperation;
+ DWORD dwDelegateID;
+ DWORD dwInFlags;
+ DWORD dwInOptions;
+ DWORD dwDrawAspect;
+ SIZEL sizel;
+ IOleInPlaceObject __RPC_FAR *pOIPObj;
+ } INSRVINPLACE;
+
+typedef struct tagInSrvInPlace __RPC_FAR *PINSRVINPLACE;
+
+typedef struct tagOutSrvInPlace
+ {
+ DWORD dwOperation;
+ DWORD dwOutFlags;
+ DWORD dwOutOptions;
+ HWND hwnd;
+ IOleInPlaceFrame __RPC_FAR *pOIPFrame;
+ IOleInPlaceUIWindow __RPC_FAR *pOIPUIWnd;
+ LPRECT lprcPosRect;
+ LPRECT lprcClipRect;
+ LPOLEINPLACEFRAMEINFO lpFrameInfo;
+ RECT rcPosRect;
+ RECT rcClipRect;
+ OLEINPLACEFRAMEINFO FrameInfo;
+ HMENU hmenuShared;
+ OLEMENUGROUPWIDTHS MenuWidths;
+ LPOLESTR pszStatusText;
+ DWORD dwDrawAspect;
+ SIZEL sizel;
+ } OUTSRVINPLACE;
+
+typedef struct tagOutSrvInPlace __RPC_FAR *POUTSRVINPLACE;
+
+
+EXTERN_C const IID IID_IClientSiteHandler;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IClientSiteHandler : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT __stdcall PrivQueryInterface(
+ /* [in] */ DWORD dwId,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PrivAddRef(
+ /* [in] */ DWORD dwId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PrivRelease(
+ /* [in] */ DWORD dwId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveObject(
+ /* [in] */ DWORD dwId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+ /* [in] */ DWORD dwId,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetContainer(
+ /* [in] */ DWORD dwId,
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ShowObject(
+ /* [in] */ DWORD dwId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnShowWindow(
+ /* [in] */ DWORD dwId,
+ /* [in] */ BOOL fShow) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout(
+ /* [in] */ DWORD dwId) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetWindow(
+ /* [out] */ HWND __RPC_FAR *phwnd) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(
+ /* [in] */ BOOL fEnterMode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnUIActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWindowContext(
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Scroll(
+ /* [in] */ SIZE scrollExtant) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(
+ /* [in] */ BOOL fUndoable) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DiscardUndoState( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(
+ /* [in] */ LPCRECT lprcPosRect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GoInPlaceActivate(
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GoInPlace(
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UndoPlace(
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IClientSiteHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *PrivQueryInterface )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PrivAddRef )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PrivRelease )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveObject )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMoniker )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetContainer )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ShowObject )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnShowWindow )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ BOOL fShow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestNewObjectLayout )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CanInPlaceActivate )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceActivate )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIActivate )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindowContext )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Scroll )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ SIZE scrollExtant);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIDeactivate )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ BOOL fUndoable);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceDeactivate )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DiscardUndoState )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeactivateAndUndo )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnPosRectChange )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GoInPlaceActivate )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GoInPlace )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UndoPlace )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+ END_INTERFACE
+ } IClientSiteHandlerVtbl;
+
+ interface IClientSiteHandler
+ {
+ CONST_VTBL struct IClientSiteHandlerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IClientSiteHandler_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IClientSiteHandler_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IClientSiteHandler_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IClientSiteHandler_PrivQueryInterface(This,dwId,riidResult,ppvResult) \
+ (This)->lpVtbl -> PrivQueryInterface(This,dwId,riidResult,ppvResult)
+
+#define IClientSiteHandler_PrivAddRef(This,dwId) \
+ (This)->lpVtbl -> PrivAddRef(This,dwId)
+
+#define IClientSiteHandler_PrivRelease(This,dwId) \
+ (This)->lpVtbl -> PrivRelease(This,dwId)
+
+#define IClientSiteHandler_SaveObject(This,dwId) \
+ (This)->lpVtbl -> SaveObject(This,dwId)
+
+#define IClientSiteHandler_GetMoniker(This,dwId,dwAssign,dwWhichMoniker,ppmk) \
+ (This)->lpVtbl -> GetMoniker(This,dwId,dwAssign,dwWhichMoniker,ppmk)
+
+#define IClientSiteHandler_GetContainer(This,dwId,ppContainer) \
+ (This)->lpVtbl -> GetContainer(This,dwId,ppContainer)
+
+#define IClientSiteHandler_ShowObject(This,dwId) \
+ (This)->lpVtbl -> ShowObject(This,dwId)
+
+#define IClientSiteHandler_OnShowWindow(This,dwId,fShow) \
+ (This)->lpVtbl -> OnShowWindow(This,dwId,fShow)
+
+#define IClientSiteHandler_RequestNewObjectLayout(This,dwId) \
+ (This)->lpVtbl -> RequestNewObjectLayout(This,dwId)
+
+#define IClientSiteHandler_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IClientSiteHandler_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+#define IClientSiteHandler_CanInPlaceActivate(This) \
+ (This)->lpVtbl -> CanInPlaceActivate(This)
+
+#define IClientSiteHandler_OnInPlaceActivate(This) \
+ (This)->lpVtbl -> OnInPlaceActivate(This)
+
+#define IClientSiteHandler_OnUIActivate(This) \
+ (This)->lpVtbl -> OnUIActivate(This)
+
+#define IClientSiteHandler_GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo) \
+ (This)->lpVtbl -> GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo)
+
+#define IClientSiteHandler_Scroll(This,scrollExtant) \
+ (This)->lpVtbl -> Scroll(This,scrollExtant)
+
+#define IClientSiteHandler_OnUIDeactivate(This,fUndoable) \
+ (This)->lpVtbl -> OnUIDeactivate(This,fUndoable)
+
+#define IClientSiteHandler_OnInPlaceDeactivate(This) \
+ (This)->lpVtbl -> OnInPlaceDeactivate(This)
+
+#define IClientSiteHandler_DiscardUndoState(This) \
+ (This)->lpVtbl -> DiscardUndoState(This)
+
+#define IClientSiteHandler_DeactivateAndUndo(This) \
+ (This)->lpVtbl -> DeactivateAndUndo(This)
+
+#define IClientSiteHandler_OnPosRectChange(This,lprcPosRect) \
+ (This)->lpVtbl -> OnPosRectChange(This,lprcPosRect)
+
+#define IClientSiteHandler_GoInPlaceActivate(This,pInSrvInPlace,pOutSrvInPlace) \
+ (This)->lpVtbl -> GoInPlaceActivate(This,pInSrvInPlace,pOutSrvInPlace)
+
+#define IClientSiteHandler_GoInPlace(This,pInSrvInPlace,pOutSrvInPlace) \
+ (This)->lpVtbl -> GoInPlace(This,pInSrvInPlace,pOutSrvInPlace)
+
+#define IClientSiteHandler_UndoPlace(This,pInSrvInPlace,pOutSrvInPlace) \
+ (This)->lpVtbl -> UndoPlace(This,pInSrvInPlace,pOutSrvInPlace)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT __stdcall IClientSiteHandler_RemotePrivQueryInterface_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvResult);
+
+
+void __RPC_STUB IClientSiteHandler_RemotePrivQueryInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_PrivAddRef_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+
+void __RPC_STUB IClientSiteHandler_PrivAddRef_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_PrivRelease_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+
+void __RPC_STUB IClientSiteHandler_PrivRelease_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_SaveObject_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+
+void __RPC_STUB IClientSiteHandler_SaveObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_GetMoniker_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IClientSiteHandler_GetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_GetContainer_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer);
+
+
+void __RPC_STUB IClientSiteHandler_GetContainer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_ShowObject_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+
+void __RPC_STUB IClientSiteHandler_ShowObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnShowWindow_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ BOOL fShow);
+
+
+void __RPC_STUB IClientSiteHandler_OnShowWindow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_RequestNewObjectLayout_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+
+void __RPC_STUB IClientSiteHandler_RequestNewObjectLayout_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IClientSiteHandler_GetWindow_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+
+void __RPC_STUB IClientSiteHandler_GetWindow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_ContextSensitiveHelp_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+
+void __RPC_STUB IClientSiteHandler_ContextSensitiveHelp_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_CanInPlaceActivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_CanInPlaceActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnInPlaceActivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_OnInPlaceActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnUIActivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_OnUIActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_GetWindowContext_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+
+void __RPC_STUB IClientSiteHandler_GetWindowContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_Scroll_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ SIZE scrollExtant);
+
+
+void __RPC_STUB IClientSiteHandler_Scroll_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnUIDeactivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ BOOL fUndoable);
+
+
+void __RPC_STUB IClientSiteHandler_OnUIDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnInPlaceDeactivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_OnInPlaceDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_DiscardUndoState_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_DiscardUndoState_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_DeactivateAndUndo_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_DeactivateAndUndo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnPosRectChange_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect);
+
+
+void __RPC_STUB IClientSiteHandler_OnPosRectChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_GoInPlaceActivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+
+void __RPC_STUB IClientSiteHandler_GoInPlaceActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_GoInPlace_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+
+void __RPC_STUB IClientSiteHandler_GoInPlace_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_UndoPlace_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+
+void __RPC_STUB IClientSiteHandler_UndoPlace_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IClientSiteHandler_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER HACCEL_UserSize( unsigned long __RPC_FAR *, unsigned long , HACCEL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HACCEL_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HACCEL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HACCEL_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HACCEL __RPC_FAR * );
+void __RPC_USER HACCEL_UserFree( unsigned long __RPC_FAR *, HACCEL __RPC_FAR * );
+
+unsigned long __RPC_USER HMENU_UserSize( unsigned long __RPC_FAR *, unsigned long , HMENU __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HMENU_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HMENU __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HMENU_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HMENU __RPC_FAR * );
+void __RPC_USER HMENU_UserFree( unsigned long __RPC_FAR *, HMENU __RPC_FAR * );
+
+unsigned long __RPC_USER HWND_UserSize( unsigned long __RPC_FAR *, unsigned long , HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+void __RPC_USER HWND_UserFree( unsigned long __RPC_FAR *, HWND __RPC_FAR * );
+
+/* [local] */ HRESULT __stdcall IClientSiteHandler_PrivQueryInterface_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult);
+
+
+/* [call_as] */ HRESULT __stdcall IClientSiteHandler_PrivQueryInterface_Stub(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvResult);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/chicago/srvhdl.idl b/public/sdk/inc/chicago/srvhdl.idl
new file mode 100644
index 000000000..e33fba12d
--- /dev/null
+++ b/public/sdk/inc/chicago/srvhdl.idl
@@ -0,0 +1,347 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1995.
+//
+// File: srvhndlr.idl
+//
+//--------------------------------------------------------------------------
+
+#ifndef DO_NO_IMPORTS
+import "oleidl.idl";
+import "unknwn.idl";
+#endif
+
+
+[
+ object,
+ uuid(F4F569D0-593B-101A-B569-08002B2DBF7A),
+ pointer_default(unique)
+]
+interface IServerHandler : IUnknown
+{
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1995.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+
+ typedef [unique] IServerHandler *LPSERVERHANDLER;
+
+ typedef struct tagInSrvRun
+ {
+ DWORD dwOperation;
+
+ // in parameter
+ // IUnknown *pUnk; // Unknown of object
+ IMoniker *pMnk; // Moniker
+ IOleContainer *pOCont; // container object
+
+ // optional clientsite of container
+ //IOleClientSite *pOContCS; // the client ole object
+
+ // Storage for IPersistStorage
+ IStorage *pStg;
+
+ // DoVerb stuff
+ LONG iVerb;
+ LPMSG lpmsg;
+ LONG lindex;
+ HWND hwndParent;
+ RECT *lprcPosRect;
+
+ // inplace stuff
+ DWORD dwInPlace; // inplace options
+ DWORD dwInFlags; // generic Flags
+ DWORD dwInOptions;
+
+ // SetHostName
+ LPOLESTR pszContainerApp;
+ LPOLESTR pszContainerObj;
+
+ // AdviseSink
+ IAdviseSink *pAS; // IAdviseSink
+ DWORD dwConnOle;
+
+ CLSID *pContClassID;
+
+
+ } INSRVRUN, *PINSRVRUN;
+
+ typedef struct tagOutSrvRunInit
+ {
+ DWORD dwOperation;
+ // out parameter
+ IOleObject *pOO; // IOleObject
+ IDataObject *pDO; // IDataObject
+ IPersistStorage *pPStg; // IPersistStorage
+
+ HRESULT hrSetHostNames;
+ HRESULT hrPStg;
+ HRESULT hrAdvise;
+ DWORD dwConnOle;
+
+ CLSID *pUserClassID; // the user class id
+
+ DWORD dwOutFlag;
+ DWORD dwOutOptions;
+ } OUTSRVRUN, *POUTSRVRUN;
+
+ typedef struct tagSrvRunDoVerb
+ {
+ IUnknown *pUnk;
+ } SRVRUNDOVERB, *PSRVRUNDOVERB;
+
+ typedef struct tagSrvDoVerb
+ {
+ IUnknown *pUnk;
+ } SRVDOVERB, *PSRVDOVERB;
+
+ HRESULT RunAndInitialize
+ (
+ [in] INSRVRUN *pInSrvRun,
+ [out] OUTSRVRUN **pOutSrvRun
+ );
+
+ HRESULT RunAndDoVerb
+ (
+ [in] INSRVRUN *pInSrvRun,
+ [out] OUTSRVRUN **pOutSrvRun
+
+ );
+
+ HRESULT DoVerb
+ (
+ [in] INSRVRUN *pInSrvRun,
+ [out] OUTSRVRUN **pOutSrvRun
+ );
+
+ HRESULT CloseAndRelease
+ (
+ [in] DWORD dwClose
+ );
+
+}
+
+
+[
+ object,
+ uuid(F4F569D1-593B-101A-B569-08002B2DBF7A),
+ pointer_default(unique)
+]
+
+//interface IClientSiteHandler : IOleClientSite
+interface IClientSiteHandler : IUnknown
+{
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1995.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+
+ typedef [unique] IClientSiteHandler *LPCLIENTSITEHANDLER;
+
+ typedef struct tagInSrvInPlace
+ {
+ DWORD dwOperation;
+ DWORD dwDelegateID;
+
+ DWORD dwInFlags; // generic Flags
+ DWORD dwInOptions;
+
+ // IOleObject::GetExtend
+ DWORD dwDrawAspect;
+ SIZEL sizel;
+
+ //
+ IOleInPlaceObject *pOIPObj;
+
+ } INSRVINPLACE, *PINSRVINPLACE;
+
+ typedef struct tagOutSrvInPlace
+ {
+ DWORD dwOperation;
+ DWORD dwOutFlags; // generic Flags
+ DWORD dwOutOptions;
+
+ HWND hwnd;
+
+ IOleInPlaceFrame *pOIPFrame;
+ IOleInPlaceUIWindow *pOIPUIWnd;
+
+ LPRECT lprcPosRect;
+ LPRECT lprcClipRect;
+ LPOLEINPLACEFRAMEINFO lpFrameInfo;
+
+ RECT rcPosRect;
+ RECT rcClipRect;
+ OLEINPLACEFRAMEINFO FrameInfo;
+
+
+ // menu stuff
+ HMENU hmenuShared;
+ OLEMENUGROUPWIDTHS MenuWidths;
+ //
+ LPOLESTR pszStatusText;
+
+ // IOleObject::SetExtend
+ DWORD dwDrawAspect;
+ SIZEL sizel;
+
+
+ } OUTSRVINPLACE, *POUTSRVINPLACE;
+
+
+ [local]
+ HRESULT __stdcall PrivQueryInterface(
+ [in] DWORD dwId,
+ [in] REFIID riidResult,
+ [out, iid_is(riidResult)] void **ppvResult);
+
+ [call_as(PrivQueryInterface)]
+ HRESULT __stdcall RemotePrivQueryInterface(
+ [in] DWORD dwId,
+ [in] REFIID riidResult,
+ [out, iid_is(riidResult)] IUnknown **ppvResult);
+
+
+ HRESULT PrivAddRef(
+ [in] DWORD dwId
+ );
+
+ HRESULT PrivRelease(
+ [in] DWORD dwId
+ );
+
+ // IOleClientSite methods
+ HRESULT SaveObject
+ (
+ [in] DWORD dwId
+ );
+
+ HRESULT GetMoniker
+ (
+ [in] DWORD dwId,
+ [in] DWORD dwAssign,
+ [in] DWORD dwWhichMoniker,
+ [out] IMoniker **ppmk
+ );
+
+ HRESULT GetContainer
+ (
+ [in] DWORD dwId,
+ [out] IOleContainer **ppContainer
+ );
+
+ HRESULT ShowObject
+ (
+ [in] DWORD dwId
+ );
+
+ HRESULT OnShowWindow
+ (
+ [in] DWORD dwId,
+ [in] BOOL fShow
+ );
+
+ HRESULT RequestNewObjectLayout
+ (
+ [in] DWORD dwId
+ );
+
+ // IOleInPlaceSite methods
+ [input_sync]
+ HRESULT GetWindow
+ (
+ [out] HWND *phwnd
+ );
+
+ HRESULT ContextSensitiveHelp
+ (
+ [in] BOOL fEnterMode
+ );
+
+
+ HRESULT CanInPlaceActivate
+ (
+ void
+ );
+
+ HRESULT OnInPlaceActivate
+ (
+ void
+ );
+
+ HRESULT OnUIActivate
+ (
+ void
+ );
+
+ HRESULT GetWindowContext
+ (
+ [out] IOleInPlaceFrame **ppFrame,
+ [out] IOleInPlaceUIWindow **ppDoc,
+ [out] LPRECT lprcPosRect,
+ [out] LPRECT lprcClipRect,
+ [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo
+ );
+
+ HRESULT Scroll
+ (
+ [in] SIZE scrollExtant
+ );
+
+ HRESULT OnUIDeactivate
+ (
+ [in] BOOL fUndoable
+ );
+
+ HRESULT OnInPlaceDeactivate
+ (
+ void
+ );
+
+ HRESULT DiscardUndoState
+ (
+ void
+ );
+
+ HRESULT DeactivateAndUndo
+ (
+ void
+ );
+
+ HRESULT OnPosRectChange
+ (
+ [in] LPCRECT lprcPosRect
+ );
+
+
+
+ HRESULT GoInPlaceActivate
+ (
+ [in] INSRVINPLACE *pInSrvInPlace,
+ [out] OUTSRVINPLACE **pOutSrvInPlace
+ );
+
+ HRESULT GoInPlace
+ (
+ [in] INSRVINPLACE *pInSrvInPlace,
+ [out] OUTSRVINPLACE **pOutSrvInPlace
+ );
+ HRESULT UndoPlace
+ (
+ [in] INSRVINPLACE *pInSrvInPlace,
+ [out] OUTSRVINPLACE **pOutSrvInPlace
+ );
+
+}
+
+
+
diff --git a/public/sdk/inc/chicago/storext.h b/public/sdk/inc/chicago/storext.h
new file mode 100644
index 000000000..604210874
--- /dev/null
+++ b/public/sdk/inc/chicago/storext.h
@@ -0,0 +1,476 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:35:10 1996
+ */
+/* Compiler settings for storext.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __storext_h__
+#define __storext_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IOverlappedCompletion_FWD_DEFINED__
+#define __IOverlappedCompletion_FWD_DEFINED__
+typedef interface IOverlappedCompletion IOverlappedCompletion;
+#endif /* __IOverlappedCompletion_FWD_DEFINED__ */
+
+
+#ifndef __IOverlappedStream_FWD_DEFINED__
+#define __IOverlappedStream_FWD_DEFINED__
+typedef interface IOverlappedStream IOverlappedStream;
+#endif /* __IOverlappedStream_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "wtypes.h"
+#include "unknwn.h"
+#include "objidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:35:10 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HEVENT;
+
+
+typedef struct _STGOVERLAPPED
+ {
+ DWORD Internal;
+ DWORD InternalHigh;
+ DWORD Offset;
+ DWORD OffsetHigh;
+ HEVENT hEvent;
+ IOverlappedCompletion __RPC_FAR *lpCompletion;
+ DWORD reserved;
+ } STGOVERLAPPED;
+
+typedef struct _STGOVERLAPPED __RPC_FAR *LPSTGOVERLAPPED;
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IOverlappedCompletion_INTERFACE_DEFINED__
+#define __IOverlappedCompletion_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOverlappedCompletion
+ * at Fri Nov 15 09:35:10 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IOverlappedCompletion;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOverlappedCompletion : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnComplete(
+ /* [in] */ HRESULT hr,
+ /* [in] */ DWORD pcbTransferred,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOverlappedCompletionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOverlappedCompletion __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOverlappedCompletion __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOverlappedCompletion __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnComplete )(
+ IOverlappedCompletion __RPC_FAR * This,
+ /* [in] */ HRESULT hr,
+ /* [in] */ DWORD pcbTransferred,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+ END_INTERFACE
+ } IOverlappedCompletionVtbl;
+
+ interface IOverlappedCompletion
+ {
+ CONST_VTBL struct IOverlappedCompletionVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOverlappedCompletion_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOverlappedCompletion_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOverlappedCompletion_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOverlappedCompletion_OnComplete(This,hr,pcbTransferred,lpOverlapped) \
+ (This)->lpVtbl -> OnComplete(This,hr,pcbTransferred,lpOverlapped)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOverlappedCompletion_OnComplete_Proxy(
+ IOverlappedCompletion __RPC_FAR * This,
+ /* [in] */ HRESULT hr,
+ /* [in] */ DWORD pcbTransferred,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+void __RPC_STUB IOverlappedCompletion_OnComplete_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOverlappedCompletion_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOverlappedStream_INTERFACE_DEFINED__
+#define __IOverlappedStream_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOverlappedStream
+ * at Fri Nov 15 09:35:10 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IOverlappedStream;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOverlappedStream : public IStream
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE ReadOverlapped(
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped) = 0;
+
+ virtual /* [local] */ HRESULT __stdcall WriteOverlapped(
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetOverlappedResult(
+ /* [out][in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped,
+ /* [out] */ DWORD __RPC_FAR *plcbTransfer,
+ /* [in] */ BOOL fWait) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOverlappedStreamVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOverlappedStream __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOverlappedStream __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Read )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Write )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Seek )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSize )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libNewSize);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CopyTo )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Revert )(
+ IOverlappedStream __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockRegion )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UnlockRegion )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stat )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReadOverlapped )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *WriteOverlapped )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetOverlappedResult )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [out][in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped,
+ /* [out] */ DWORD __RPC_FAR *plcbTransfer,
+ /* [in] */ BOOL fWait);
+
+ END_INTERFACE
+ } IOverlappedStreamVtbl;
+
+ interface IOverlappedStream
+ {
+ CONST_VTBL struct IOverlappedStreamVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOverlappedStream_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOverlappedStream_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOverlappedStream_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOverlappedStream_Read(This,pv,cb,pcbRead) \
+ (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
+
+#define IOverlappedStream_Write(This,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
+
+
+#define IOverlappedStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) \
+ (This)->lpVtbl -> Seek(This,dlibMove,dwOrigin,plibNewPosition)
+
+#define IOverlappedStream_SetSize(This,libNewSize) \
+ (This)->lpVtbl -> SetSize(This,libNewSize)
+
+#define IOverlappedStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) \
+ (This)->lpVtbl -> CopyTo(This,pstm,cb,pcbRead,pcbWritten)
+
+#define IOverlappedStream_Commit(This,grfCommitFlags) \
+ (This)->lpVtbl -> Commit(This,grfCommitFlags)
+
+#define IOverlappedStream_Revert(This) \
+ (This)->lpVtbl -> Revert(This)
+
+#define IOverlappedStream_LockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
+
+#define IOverlappedStream_UnlockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
+
+#define IOverlappedStream_Stat(This,pstatstg,grfStatFlag) \
+ (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
+
+#define IOverlappedStream_Clone(This,ppstm) \
+ (This)->lpVtbl -> Clone(This,ppstm)
+
+
+#define IOverlappedStream_ReadOverlapped(This,pv,cb,pcbRead,lpOverlapped) \
+ (This)->lpVtbl -> ReadOverlapped(This,pv,cb,pcbRead,lpOverlapped)
+
+#define IOverlappedStream_WriteOverlapped(This,pv,cb,pcbWritten,lpOverlapped) \
+ (This)->lpVtbl -> WriteOverlapped(This,pv,cb,pcbWritten,lpOverlapped)
+
+#define IOverlappedStream_GetOverlappedResult(This,lpOverlapped,plcbTransfer,fWait) \
+ (This)->lpVtbl -> GetOverlappedResult(This,lpOverlapped,plcbTransfer,fWait)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOverlappedStream_RemoteReadOverlapped_Proxy(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+void __RPC_STUB IOverlappedStream_RemoteReadOverlapped_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT __stdcall IOverlappedStream_RemoteWriteOverlapped_Proxy(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+void __RPC_STUB IOverlappedStream_RemoteWriteOverlapped_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOverlappedStream_GetOverlappedResult_Proxy(
+ IOverlappedStream __RPC_FAR * This,
+ /* [out][in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped,
+ /* [out] */ DWORD __RPC_FAR *plcbTransfer,
+ /* [in] */ BOOL fWait);
+
+
+void __RPC_STUB IOverlappedStream_GetOverlappedResult_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOverlappedStream_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER HEVENT_UserSize( unsigned long __RPC_FAR *, unsigned long , HEVENT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HEVENT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HEVENT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HEVENT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HEVENT __RPC_FAR * );
+void __RPC_USER HEVENT_UserFree( unsigned long __RPC_FAR *, HEVENT __RPC_FAR * );
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOverlappedStream_ReadOverlapped_Proxy(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOverlappedStream_ReadOverlapped_Stub(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+/* [local] */ HRESULT __stdcall IOverlappedStream_WriteOverlapped_Proxy(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+/* [call_as] */ HRESULT __stdcall IOverlappedStream_WriteOverlapped_Stub(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/chicago/storext.idl b/public/sdk/inc/chicago/storext.idl
new file mode 100644
index 000000000..6207d850c
--- /dev/null
+++ b/public/sdk/inc/chicago/storext.idl
@@ -0,0 +1,108 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1995 - 1995.
+//
+// File: OleStor.idl Cairo only interfaces for OLE Storage
+//
+// Contents: IOverlappedStream interface definition
+//
+// History: 14-Sep-1995 HenryLee initial version
+//
+//--------------------------------------------------------------------------
+
+#ifndef DO_NO_IMPORTS
+import "wtypes.idl";
+import "unknwn.idl";
+import "objidl.idl";
+#endif
+
+typedef [wire_marshal(ULONG)] void * HEVENT;
+interface IOverlappedCompletion;
+
+typedef struct _STGOVERLAPPED {
+ DWORD Internal;
+ DWORD InternalHigh;
+ DWORD Offset;
+ DWORD OffsetHigh;
+ HEVENT hEvent;
+ IOverlappedCompletion * lpCompletion;
+ DWORD reserved;
+} STGOVERLAPPED, *LPSTGOVERLAPPED;
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1995 - 1995.
+//
+// Contents: IOverlappedCompletion interface definition
+//
+// History: 14-Sep-1995 HenryLee initial version
+//
+//--------------------------------------------------------------------------
+[
+ object,
+ uuid(521a28f0-e40b-11ce-b2c9-00aa00680937),
+ pointer_default(unique)
+]
+interface IOverlappedCompletion : IUnknown
+{
+ HRESULT OnComplete (
+ [in] HRESULT hr,
+ [in] DWORD pcbTransferred,
+ [in] STGOVERLAPPED *lpOverlapped);
+}
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1995 - 1995.
+//
+// Contents: IOverlappedStream interface definition
+//
+// History: 14-Sep-1995 HenryLee initial version
+//
+//--------------------------------------------------------------------------
+[
+ object,
+ uuid(49384070-e40a-11ce-b2c9-00aa00680937),
+ pointer_default(unique)
+]
+interface IOverlappedStream : IStream
+{
+
+ [local]
+ HRESULT ReadOverlapped (
+ [in, size_is(cb)] void * pv,
+ [in] ULONG cb,
+ [out] ULONG * pcbRead,
+ [in] STGOVERLAPPED *lpOverlapped);
+
+ [call_as(ReadOverlapped)]
+ HRESULT RemoteReadOverlapped (
+ [in, size_is(cb)] byte * pv,
+ [in] ULONG cb,
+ [out] ULONG * pcbRead,
+ [in] STGOVERLAPPED *lpOverlapped);
+
+
+ [local]
+ HRESULT __stdcall WriteOverlapped (
+ [in, size_is(cb)] void *pv,
+ [in] ULONG cb,
+ [out] ULONG * pcbWritten,
+ [in] STGOVERLAPPED *lpOverlapped);
+
+ [call_as(WriteOverlapped)]
+ HRESULT __stdcall RemoteWriteOverlapped (
+ [in, size_is(cb)] byte *pv,
+ [in] ULONG cb,
+ [out] ULONG * pcbWritten,
+ [in] STGOVERLAPPED *lpOverlapped);
+
+ HRESULT GetOverlappedResult (
+ [in, out] STGOVERLAPPED *lpOverlapped,
+ [out] DWORD * plcbTransfer,
+ [in] BOOL fWait);
+
+}
diff --git a/public/sdk/inc/chicago/unknwn.h b/public/sdk/inc/chicago/unknwn.h
new file mode 100644
index 000000000..7b0a2dc83
--- /dev/null
+++ b/public/sdk/inc/chicago/unknwn.h
@@ -0,0 +1,341 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:34:59 1996
+ */
+/* Compiler settings for unknwn.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __unknwn_h__
+#define __unknwn_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IUnknown_FWD_DEFINED__
+#define __IUnknown_FWD_DEFINED__
+typedef interface IUnknown IUnknown;
+#endif /* __IUnknown_FWD_DEFINED__ */
+
+
+#ifndef __IClassFactory_FWD_DEFINED__
+#define __IClassFactory_FWD_DEFINED__
+typedef interface IClassFactory IClassFactory;
+#endif /* __IClassFactory_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "wtypes.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:34:59 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IUnknown_INTERFACE_DEFINED__
+#define __IUnknown_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IUnknown
+ * at Fri Nov 15 09:34:59 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef /* [unique] */ IUnknown __RPC_FAR *LPUNKNOWN;
+
+//////////////////////////////////////////////////////////////////
+// IID_IUnknown and all other system IIDs are provided in UUID.LIB
+// Link that library in with your proxies, clients and servers
+//////////////////////////////////////////////////////////////////
+
+EXTERN_C const IID IID_IUnknown;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IUnknown
+ {
+ public:
+ BEGIN_INTERFACE
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE AddRef( void) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE Release( void) = 0;
+
+ END_INTERFACE
+ };
+
+#else /* C style interface */
+
+ typedef struct IUnknownVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IUnknown __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IUnknown __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IUnknown __RPC_FAR * This);
+
+ END_INTERFACE
+ } IUnknownVtbl;
+
+ interface IUnknown
+ {
+ CONST_VTBL struct IUnknownVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IUnknown_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IUnknown_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IUnknown_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(
+ IUnknown __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+
+void __RPC_STUB IUnknown_QueryInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(
+ IUnknown __RPC_FAR * This);
+
+
+void __RPC_STUB IUnknown_AddRef_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(
+ IUnknown __RPC_FAR * This);
+
+
+void __RPC_STUB IUnknown_Release_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IUnknown_INTERFACE_DEFINED__ */
+
+
+#ifndef __IClassFactory_INTERFACE_DEFINED__
+#define __IClassFactory_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IClassFactory
+ * at Fri Nov 15 09:34:59 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IClassFactory __RPC_FAR *LPCLASSFACTORY;
+
+
+EXTERN_C const IID IID_IClassFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IClassFactory : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE CreateInstance(
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE LockServer(
+ /* [in] */ BOOL fLock) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IClassFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IClassFactory __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IClassFactory __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateInstance )(
+ IClassFactory __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockServer )(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+ END_INTERFACE
+ } IClassFactoryVtbl;
+
+ interface IClassFactory
+ {
+ CONST_VTBL struct IClassFactoryVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IClassFactory_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IClassFactory_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IClassFactory_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IClassFactory_CreateInstance(This,pUnkOuter,riid,ppvObject) \
+ (This)->lpVtbl -> CreateInstance(This,pUnkOuter,riid,ppvObject)
+
+#define IClassFactory_LockServer(This,fLock) \
+ (This)->lpVtbl -> LockServer(This,fLock)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IClassFactory_RemoteCreateInstance_Proxy(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObject);
+
+
+void __RPC_STUB IClassFactory_RemoteCreateInstance_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT __stdcall IClassFactory_RemoteLockServer_Proxy(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+
+void __RPC_STUB IClassFactory_RemoteLockServer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IClassFactory_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Proxy(
+ IClassFactory __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Stub(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObject);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Proxy(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+
+/* [call_as] */ HRESULT __stdcall IClassFactory_LockServer_Stub(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/chicago/unknwn.idl b/public/sdk/inc/chicago/unknwn.idl
new file mode 100644
index 000000000..d80bcac77
--- /dev/null
+++ b/public/sdk/inc/chicago/unknwn.idl
@@ -0,0 +1,75 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: unknwn.idl
+//
+// Contents: IUnknown interface definition
+//
+//
+//--------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "wtypes.idl";
+#endif
+
+[
+ local,
+ object,
+ uuid(00000000-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IUnknown
+{
+ typedef [unique] IUnknown *LPUNKNOWN;
+
+cpp_quote("//////////////////////////////////////////////////////////////////")
+cpp_quote("// IID_IUnknown and all other system IIDs are provided in UUID.LIB")
+cpp_quote("// Link that library in with your proxies, clients and servers")
+cpp_quote("//////////////////////////////////////////////////////////////////")
+
+ HRESULT QueryInterface(
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvObject);
+ ULONG AddRef();
+ ULONG Release();
+}
+
+[
+ object,
+ uuid(00000001-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IClassFactory : IUnknown
+{
+ typedef [unique] IClassFactory * LPCLASSFACTORY;
+
+ [local]
+ HRESULT CreateInstance(
+ [in, unique] IUnknown * pUnkOuter,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvObject);
+
+ [call_as(CreateInstance)]
+ HRESULT RemoteCreateInstance(
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown ** ppvObject);
+
+ [local]
+ HRESULT LockServer(
+ [in] BOOL fLock);
+
+ [call_as(LockServer)]
+ HRESULT __stdcall RemoteLockServer(
+ [in] BOOL fLock);
+}
diff --git a/public/sdk/inc/chicago/wtypes.h b/public/sdk/inc/chicago/wtypes.h
new file mode 100644
index 000000000..c731ed440
--- /dev/null
+++ b/public/sdk/inc/chicago/wtypes.h
@@ -0,0 +1,1287 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:34:58 1996
+ */
+/* Compiler settings for wtypes.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __wtypes_h__
+#define __wtypes_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 * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:34:58 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IWinTypes_INTERFACE_DEFINED__
+#define __IWinTypes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IWinTypes
+ * at Fri Nov 15 09:34:58 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][unique][version][uuid] */
+
+
+typedef struct tagRemHGLOBAL
+ {
+ long fNullHGlobal;
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHGLOBAL;
+
+typedef struct tagRemHMETAFILEPICT
+ {
+ long mm;
+ long xExt;
+ long yExt;
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHMETAFILEPICT;
+
+typedef struct tagRemHENHMETAFILE
+ {
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHENHMETAFILE;
+
+typedef struct tagRemHBITMAP
+ {
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHBITMAP;
+
+typedef struct tagRemHPALETTE
+ {
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHPALETTE;
+
+typedef struct tagRemBRUSH
+ {
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHBRUSH;
+
+#if !defined(_WIN32) && !defined(_MPPC_)
+// The following code is for Win16 only
+#ifndef WINAPI // If not included with 3.1 headers...
+#define FAR _far
+#define PASCAL _pascal
+#define CDECL _cdecl
+#define VOID void
+#define WINAPI FAR PASCAL
+#define CALLBACK FAR PASCAL
+#ifndef FALSE
+#define FALSE 0
+#define TRUE 1
+#endif // !FALSE
+#ifndef _BYTE_DEFINED
+#define _BYTE_DEFINED
+typedef unsigned char BYTE;
+
+#endif // !_BYTE_DEFINED
+#ifndef _WORD_DEFINED
+#define _WORD_DEFINED
+typedef unsigned short WORD;
+
+#endif // !_WORD_DEFINED
+typedef unsigned int UINT;
+
+typedef int INT;
+
+typedef long BOOL;
+
+#ifndef _LONG_DEFINED
+#define _LONG_DEFINED
+typedef long LONG;
+
+#endif // !_LONG_DEFINED
+#ifndef _WPARAM_DEFINED
+#define _WPARAM_DEFINED
+typedef UINT WPARAM;
+
+#endif // _WPARAM_DEFINED
+#ifndef _DWORD_DEFINED
+#define _DWORD_DEFINED
+typedef unsigned long DWORD;
+
+#endif // !_DWORD_DEFINED
+#ifndef _LPARAM_DEFINED
+#define _LPARAM_DEFINED
+typedef LONG LPARAM;
+
+#endif // !_LPARAM_DEFINED
+#ifndef _LRESULT_DEFINED
+#define _LRESULT_DEFINED
+typedef LONG LRESULT;
+
+#endif // !_LRESULT_DEFINED
+typedef void __RPC_FAR *HANDLE;
+
+typedef void __RPC_FAR *HMODULE;
+
+typedef void __RPC_FAR *HINSTANCE;
+
+typedef void __RPC_FAR *HRGN;
+
+typedef void __RPC_FAR *HTASK;
+
+typedef void __RPC_FAR *HKEY;
+
+typedef void __RPC_FAR *HDESK;
+
+typedef void __RPC_FAR *HMF;
+
+typedef void __RPC_FAR *HEMF;
+
+typedef void __RPC_FAR *HPEN;
+
+typedef void __RPC_FAR *HRSRC;
+
+typedef void __RPC_FAR *HSTR;
+
+typedef void __RPC_FAR *HWINSTA;
+
+typedef void __RPC_FAR *HKL;
+
+typedef void __RPC_FAR *HGDIOBJ;
+
+typedef HANDLE HDWP;
+
+#ifndef _HFILE_DEFINED
+#define _HFILE_DEFINED
+typedef INT HFILE;
+
+#endif // !_HFILE_DEFINED
+#ifndef _LPWORD_DEFINED
+#define _LPWORD_DEFINED
+typedef WORD __RPC_FAR *LPWORD;
+
+#endif // !_LPWORD_DEFINED
+#ifndef _LPDWORD_DEFINED
+#define _LPDWORD_DEFINED
+typedef DWORD __RPC_FAR *LPDWORD;
+
+#endif // !_LPDWORD_DEFINED
+typedef char CHAR;
+
+typedef /* [string] */ CHAR __RPC_FAR *LPSTR;
+
+typedef /* [string] */ const CHAR __RPC_FAR *LPCSTR;
+
+#ifndef _WCHAR_DEFINED
+#define _WCHAR_DEFINED
+typedef wchar_t WCHAR;
+
+typedef WCHAR TCHAR;
+
+#endif // !_WCHAR_DEFINED
+typedef /* [string] */ WCHAR __RPC_FAR *LPWSTR;
+
+typedef /* [string] */ TCHAR __RPC_FAR *LPTSTR;
+
+typedef /* [string] */ const WCHAR __RPC_FAR *LPCWSTR;
+
+typedef /* [string] */ const TCHAR __RPC_FAR *LPCTSTR;
+
+typedef struct tagPALETTEENTRY
+ {
+ BYTE peRed;
+ BYTE peGreen;
+ BYTE peBlue;
+ BYTE peFlags;
+ } PALETTEENTRY;
+
+typedef struct tagPALETTEENTRY __RPC_FAR *PPALETTEENTRY;
+
+typedef struct tagPALETTEENTRY __RPC_FAR *LPPALETTEENTRY;
+
+#if 0
+typedef struct tagLOGPALETTE
+ {
+ WORD palVersion;
+ WORD palNumEntries;
+ /* [size_is] */ PALETTEENTRY palPalEntry[ 1 ];
+ } LOGPALETTE;
+
+typedef struct tagLOGPALETTE __RPC_FAR *PLOGPALETTE;
+
+typedef struct tagLOGPALETTE __RPC_FAR *LPLOGPALETTE;
+
+#else
+typedef struct tagLOGPALETTE {
+ WORD palVersion;
+ WORD palNumEntries;
+ PALETTEENTRY palPalEntry[1];
+} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
+#endif
+#ifndef _COLORREF_DEFINED
+#define _COLORREF_DEFINED
+typedef DWORD COLORREF;
+
+#endif // !_COLORREF_DEFINED
+#ifndef _LPCOLORREF_DEFINED
+#define _LPCOLORREF_DEFINED
+typedef DWORD __RPC_FAR *LPCOLORREF;
+
+#endif // !_LPCOLORREF_DEFINED
+typedef HANDLE __RPC_FAR *LPHANDLE;
+
+typedef struct _RECTL
+ {
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+ } RECTL;
+
+typedef struct _RECTL __RPC_FAR *PRECTL;
+
+typedef struct _RECTL __RPC_FAR *LPRECTL;
+
+typedef struct tagPOINT
+ {
+ LONG x;
+ LONG y;
+ } POINT;
+
+typedef struct tagPOINT __RPC_FAR *PPOINT;
+
+typedef struct tagPOINT __RPC_FAR *LPPOINT;
+
+typedef struct _POINTL
+ {
+ LONG x;
+ LONG y;
+ } POINTL;
+
+typedef struct _POINTL __RPC_FAR *PPOINTL;
+
+#ifndef WIN16
+typedef struct tagSIZE
+ {
+ LONG cx;
+ LONG cy;
+ } SIZE;
+
+typedef struct tagSIZE __RPC_FAR *PSIZE;
+
+typedef struct tagSIZE __RPC_FAR *LPSIZE;
+
+#else // WIN16
+typedef struct tagSIZE
+{
+ INT cx;
+ INT cy;
+} SIZE, *PSIZE, *LPSIZE;
+#endif // WIN16
+typedef struct tagSIZEL
+ {
+ LONG cx;
+ LONG cy;
+ } SIZEL;
+
+typedef struct tagSIZEL __RPC_FAR *PSIZEL;
+
+typedef struct tagSIZEL __RPC_FAR *LPSIZEL;
+
+#endif //WINAPI
+#endif //!WIN32 && !MPPC
+#if defined(_WIN32) && !defined(OLE2ANSI)
+typedef WCHAR OLECHAR;
+
+typedef /* [string] */ OLECHAR __RPC_FAR *LPOLESTR;
+
+typedef /* [string] */ const OLECHAR __RPC_FAR *LPCOLESTR;
+
+#define OLESTR(str) L##str
+
+#else
+
+typedef char OLECHAR;
+typedef LPSTR LPOLESTR;
+typedef LPCSTR LPCOLESTR;
+#define OLESTR(str) str
+#endif
+#ifndef _WINDEF_
+typedef const RECTL __RPC_FAR *LPCRECTL;
+
+typedef void __RPC_FAR *PVOID;
+
+typedef void __RPC_FAR *LPVOID;
+
+typedef float FLOAT;
+
+typedef struct tagRECT
+ {
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+ } RECT;
+
+typedef struct tagRECT __RPC_FAR *PRECT;
+
+typedef struct tagRECT __RPC_FAR *LPRECT;
+
+typedef const RECT __RPC_FAR *LPCRECT;
+
+#endif //_WINDEF_
+typedef unsigned char UCHAR;
+
+typedef short SHORT;
+
+typedef unsigned short USHORT;
+
+typedef DWORD ULONG;
+
+typedef double DOUBLE;
+
+#ifndef _DWORDLONG_
+typedef MIDL_uhyper DWORDLONG;
+
+typedef DWORDLONG __RPC_FAR *PDWORDLONG;
+
+#endif // !_DWORDLONG_
+#ifndef _ULONGLONG_
+typedef hyper LONGLONG;
+
+typedef MIDL_uhyper ULONGLONG;
+
+typedef LONGLONG __RPC_FAR *PLONGLONG;
+
+typedef ULONGLONG __RPC_FAR *PULONGLONG;
+
+#endif // _ULONGLONG_
+#if 0
+typedef struct _LARGE_INTEGER
+ {
+ LONGLONG QuadPart;
+ } LARGE_INTEGER;
+
+typedef LARGE_INTEGER __RPC_FAR *PLARGE_INTEGER;
+
+typedef struct _ULARGE_INTEGER
+ {
+ ULONGLONG QuadPart;
+ } ULARGE_INTEGER;
+
+#endif // 0
+#ifndef _WINBASE_
+#ifndef _FILETIME_
+#define _FILETIME_
+typedef struct _FILETIME
+ {
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+ } FILETIME;
+
+typedef struct _FILETIME __RPC_FAR *PFILETIME;
+
+typedef struct _FILETIME __RPC_FAR *LPFILETIME;
+
+#endif // !_FILETIME
+#ifndef _SYSTEMTIME_
+#define _SYSTEMTIME_
+typedef struct _SYSTEMTIME
+ {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+ } SYSTEMTIME;
+
+typedef struct _SYSTEMTIME __RPC_FAR *PSYSTEMTIME;
+
+typedef struct _SYSTEMTIME __RPC_FAR *LPSYSTEMTIME;
+
+#endif // !_SYSTEMTIME
+#ifndef _SECURITY_ATTRIBUTES_
+#define _SECURITY_ATTRIBUTES_
+typedef struct _SECURITY_ATTRIBUTES
+ {
+ DWORD nLength;
+ /* [size_is] */ LPVOID lpSecurityDescriptor;
+ BOOL bInheritHandle;
+ } SECURITY_ATTRIBUTES;
+
+typedef struct _SECURITY_ATTRIBUTES __RPC_FAR *PSECURITY_ATTRIBUTES;
+
+typedef struct _SECURITY_ATTRIBUTES __RPC_FAR *LPSECURITY_ATTRIBUTES;
+
+#endif // !_SECURITY_ATTRIBUTES_
+#ifndef SECURITY_DESCRIPTOR_REVISION
+typedef USHORT SECURITY_DESCRIPTOR_CONTROL;
+
+typedef USHORT __RPC_FAR *PSECURITY_DESCRIPTOR_CONTROL;
+
+typedef PVOID PSID;
+
+typedef struct _ACL
+ {
+ UCHAR AclRevision;
+ UCHAR Sbz1;
+ USHORT AclSize;
+ USHORT AceCount;
+ USHORT Sbz2;
+ } ACL;
+
+typedef ACL __RPC_FAR *PACL;
+
+typedef struct _SECURITY_DESCRIPTOR
+ {
+ UCHAR Revision;
+ UCHAR Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+ } SECURITY_DESCRIPTOR;
+
+typedef struct _SECURITY_DESCRIPTOR __RPC_FAR *PISECURITY_DESCRIPTOR;
+
+#endif // !SECURITY_DESCRIPTOR_REVISION
+#endif //_WINBASE_
+typedef struct _COAUTHIDENTITY
+ {
+ /* [size_is] */ USHORT __RPC_FAR *User;
+ ULONG UserLength;
+ /* [size_is] */ USHORT __RPC_FAR *Domain;
+ ULONG DomainLength;
+ /* [size_is] */ USHORT __RPC_FAR *Password;
+ ULONG PasswordLength;
+ ULONG Flags;
+ } COAUTHIDENTITY;
+
+typedef struct _COAUTHINFO
+ {
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ LPWSTR pwszServerPrincName;
+ DWORD dwAuthnLevel;
+ DWORD dwImpersonationLevel;
+ COAUTHIDENTITY __RPC_FAR *pAuthIdentityData;
+ DWORD dwCapabilities;
+ } COAUTHINFO;
+
+typedef struct _COSERVERINFO
+ {
+ DWORD dwReserved1;
+ LPWSTR pwszName;
+ COAUTHINFO __RPC_FAR *pAuthInfo;
+ DWORD dwReserved2;
+ } COSERVERINFO;
+
+typedef LONG SCODE;
+
+#ifndef _HRESULT_DEFINED
+#define _HRESULT_DEFINED
+typedef LONG HRESULT;
+
+#endif // !_HRESULT_DEFINED
+typedef SCODE __RPC_FAR *PSCODE;
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+ {
+ DWORD Data1;
+ WORD Data2;
+ WORD Data3;
+ BYTE Data4[ 8 ];
+ } GUID;
+
+#endif // !GUID_DEFINED
+#if !defined( __LPGUID_DEFINED__ )
+#define __LPGUID_DEFINED__
+typedef GUID __RPC_FAR *LPGUID;
+
+#endif // !__LPGUID_DEFINED__
+#ifndef __OBJECTID_DEFINED
+#define __OBJECTID_DEFINED
+#define _OBJECTID_DEFINED
+typedef struct _OBJECTID
+ {
+ GUID Lineage;
+ unsigned long Uniquifier;
+ } OBJECTID;
+
+#endif // !_OBJECTID_DEFINED
+#if !defined( __IID_DEFINED__ )
+#define __IID_DEFINED__
+typedef GUID IID;
+
+typedef IID __RPC_FAR *LPIID;
+
+#define IID_NULL GUID_NULL
+#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
+typedef GUID CLSID;
+
+typedef CLSID __RPC_FAR *LPCLSID;
+
+#define CLSID_NULL GUID_NULL
+#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
+typedef GUID FMTID;
+
+typedef FMTID __RPC_FAR *LPFMTID;
+
+#define FMTID_NULL GUID_NULL
+#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)
+#if 0
+typedef GUID __RPC_FAR *REFGUID;
+
+typedef IID __RPC_FAR *REFIID;
+
+typedef CLSID __RPC_FAR *REFCLSID;
+
+typedef FMTID __RPC_FAR *REFFMTID;
+
+#endif // 0
+#if defined(__cplusplus)
+#ifndef _REFGUID_DEFINED
+#define _REFGUID_DEFINED
+#define REFGUID const GUID &
+#endif // !_REFGUID_DEFINED
+#ifndef _REFIID_DEFINED
+#define _REFIID_DEFINED
+#define REFIID const IID &
+#endif // !_REFIID_DEFINED
+#ifndef _REFCLSID_DEFINED
+#define _REFCLSID_DEFINED
+#define REFCLSID const CLSID &
+#endif // !_REFCLSID_DEFINED
+#ifndef _REFFMTID_DEFINED
+#define _REFFMTID_DEFINED
+#define REFFMTID const FMTID &
+#endif // !_REFFMTID_DEFINED
+#else // !__cplusplus
+#ifndef _REFGUID_DEFINED
+#define _REFGUID_DEFINED
+#define REFGUID const GUID * const
+#endif // !_REFGUID_DEFINED
+#ifndef _REFIID_DEFINED
+#define _REFIID_DEFINED
+#define REFIID const IID * const
+#endif // !_REFIID_DEFINED
+#ifndef _REFCLSID_DEFINED
+#define _REFCLSID_DEFINED
+#define REFCLSID const CLSID * const
+#endif // !_REFCLSID_DEFINED
+#ifndef _REFFMTID_DEFINED
+#define _REFFMTID_DEFINED
+#define REFFMTID const FMTID * const
+#endif // !_REFFMTID_DEFINED
+#endif // !__cplusplus
+#endif // !__IID_DEFINED__
+typedef
+enum tagMEMCTX
+ { MEMCTX_TASK = 1,
+ MEMCTX_SHARED = 2,
+ MEMCTX_MACSYSTEM = 3,
+ MEMCTX_UNKNOWN = -1,
+ MEMCTX_SAME = -2
+ } MEMCTX;
+
+#ifndef _ROTFLAGS_DEFINED
+#define _ROTFLAGS_DEFINED
+#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
+#define ROTFLAGS_ALLOWANYCLIENT 0x2
+#endif // !_ROTFLAGS_DEFINED
+#ifndef _ROT_COMPARE_MAX_DEFINED
+#define _ROT_COMPARE_MAX_DEFINED
+#define ROT_COMPARE_MAX 2048
+#endif // !_ROT_COMPARE_MAX_DEFINED
+typedef
+enum tagCLSCTX
+ { CLSCTX_INPROC_SERVER = 0x1,
+ CLSCTX_INPROC_HANDLER = 0x2,
+ CLSCTX_LOCAL_SERVER = 0x4,
+ CLSCTX_INPROC_SERVER16 = 0x8,
+ CLSCTX_REMOTE_SERVER = 0x10,
+ CLSCTX_INPROC_HANDLER16 = 0x20,
+ CLSCTX_INPROC_SERVERX86 = 0x40,
+ CLSCTX_INPROC_HANDLERX86 = 0x80
+ } CLSCTX;
+
+typedef
+enum tagMSHLFLAGS
+ { MSHLFLAGS_NORMAL = 0,
+ MSHLFLAGS_TABLESTRONG = 1,
+ MSHLFLAGS_TABLEWEAK = 2,
+ MSHLFLAGS_NOPING = 4
+ } MSHLFLAGS;
+
+typedef
+enum tagMSHCTX
+ { MSHCTX_LOCAL = 0,
+ MSHCTX_NOSHAREDMEM = 1,
+ MSHCTX_DIFFERENTMACHINE = 2,
+ MSHCTX_INPROC = 3
+ } MSHCTX;
+
+typedef
+enum tagDVASPECT
+ { DVASPECT_CONTENT = 1,
+ DVASPECT_THUMBNAIL = 2,
+ DVASPECT_ICON = 4,
+ DVASPECT_DOCPRINT = 8
+ } DVASPECT;
+
+typedef
+enum tagSTGC
+ { STGC_DEFAULT = 0,
+ STGC_OVERWRITE = 1,
+ STGC_ONLYIFCURRENT = 2,
+ STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
+ } STGC;
+
+typedef
+enum tagSTGMOVE
+ { STGMOVE_MOVE = 0,
+ STGMOVE_COPY = 1,
+ STGMOVE_SHALLOWCOPY = 2
+ } STGMOVE;
+
+typedef
+enum tagSTATFLAG
+ { STATFLAG_DEFAULT = 0,
+ STATFLAG_NONAME = 1,
+ STATFLAG_NOOPEN = 2
+ } STATFLAG;
+
+typedef /* [context_handle] */ void __RPC_FAR *HCONTEXT;
+
+#ifndef _LCID_DEFINED
+#define _LCID_DEFINED
+typedef DWORD LCID;
+
+#endif // !_LCID_DEFINED
+typedef struct _BYTE_BLOB
+ {
+ unsigned long clSize;
+ /* [size_is] */ byte abData[ 1 ];
+ } BYTE_BLOB;
+
+typedef /* [unique] */ BYTE_BLOB __RPC_FAR *UP_BYTE_BLOB;
+
+typedef struct _WORD_BLOB
+ {
+ unsigned long clSize;
+ /* [size_is] */ unsigned short asData[ 1 ];
+ } WORD_BLOB;
+
+typedef /* [unique] */ WORD_BLOB __RPC_FAR *UP_WORD_BLOB;
+
+typedef struct _DWORD_BLOB
+ {
+ unsigned long clSize;
+ /* [size_is] */ unsigned long alData[ 1 ];
+ } DWORD_BLOB;
+
+typedef /* [unique] */ DWORD_BLOB __RPC_FAR *UP_DWORD_BLOB;
+
+typedef struct _FLAGGED_BYTE_BLOB
+ {
+ unsigned long fFlags;
+ unsigned long clSize;
+ /* [size_is] */ byte abData[ 1 ];
+ } FLAGGED_BYTE_BLOB;
+
+typedef /* [unique] */ FLAGGED_BYTE_BLOB __RPC_FAR *UP_FLAGGED_BYTE_BLOB;
+
+typedef struct _FLAGGED_WORD_BLOB
+ {
+ unsigned long fFlags;
+ unsigned long clSize;
+ /* [size_is] */ unsigned short asData[ 1 ];
+ } FLAGGED_WORD_BLOB;
+
+typedef /* [unique] */ FLAGGED_WORD_BLOB __RPC_FAR *UP_FLAGGED_WORD_BLOB;
+
+typedef struct _BYTE_SIZEDARR
+ {
+ unsigned long clSize;
+ /* [size_is] */ byte __RPC_FAR *pData;
+ } BYTE_SIZEDARR;
+
+typedef struct _SHORT_SIZEDARR
+ {
+ unsigned long clSize;
+ /* [size_is] */ unsigned short __RPC_FAR *pData;
+ } WORD_SIZEDARR;
+
+typedef struct _LONG_SIZEDARR
+ {
+ unsigned long clSize;
+ /* [size_is] */ unsigned long __RPC_FAR *pData;
+ } DWORD_SIZEDARR;
+
+typedef struct _HYPER_SIZEDARR
+ {
+ unsigned long clSize;
+ /* [size_is] */ hyper __RPC_FAR *pData;
+ } HYPER_SIZEDARR;
+
+#define WDT_INPROC_CALL ( 0x48746457 )
+
+#define WDT_REMOTE_CALL ( 0x52746457 )
+
+typedef struct _userCLIPFORMAT
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0001
+ {
+ /* [case()] */ DWORD dwValue;
+ /* [case()][string] */ wchar_t __RPC_FAR *pwszName;
+ } u;
+ } userCLIPFORMAT;
+
+typedef /* [unique] */ userCLIPFORMAT __RPC_FAR *wireCLIPFORMAT;
+
+typedef /* [wire_marshal] */ WORD CLIPFORMAT;
+
+typedef struct _GDI_NONREMOTE
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0002
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ DWORD_BLOB __RPC_FAR *hRemote;
+ } u;
+ } GDI_NONREMOTE;
+
+typedef struct _userHGLOBAL
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0003
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ FLAGGED_BYTE_BLOB __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHGLOBAL;
+
+typedef /* [unique] */ userHGLOBAL __RPC_FAR *wireHGLOBAL;
+
+typedef struct _userHMETAFILE
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0004
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ BYTE_BLOB __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHMETAFILE;
+
+typedef struct _remoteMETAFILEPICT
+ {
+ long mm;
+ long xExt;
+ long yExt;
+ userHMETAFILE __RPC_FAR *hMF;
+ } remoteMETAFILEPICT;
+
+typedef struct _userHMETAFILEPICT
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0005
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ remoteMETAFILEPICT __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHMETAFILEPICT;
+
+typedef struct _userHENHMETAFILE
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0006
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ BYTE_BLOB __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHENHMETAFILE;
+
+typedef struct _userBITMAP
+ {
+ LONG bmType;
+ LONG bmWidth;
+ LONG bmHeight;
+ LONG bmWidthBytes;
+ WORD bmPlanes;
+ WORD bmBitsPixel;
+ ULONG cbSize;
+ /* [size_is] */ byte pBuffer[ 1 ];
+ } userBITMAP;
+
+typedef struct _userHBITMAP
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0007
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ userBITMAP __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHBITMAP;
+
+typedef struct tagrpcLOGPALETTE
+ {
+ WORD palVersion;
+ WORD palNumEntries;
+ /* [size_is] */ PALETTEENTRY palPalEntry[ 1 ];
+ } rpcLOGPALETTE;
+
+typedef struct _userHPALETTE
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0008
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ rpcLOGPALETTE __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHPALETTE;
+
+typedef struct _RemotableHandle
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0009
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ long hRemote;
+ } u;
+ } RemotableHandle;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHWND;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHMENU;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHACCEL;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHBRUSH;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHFONT;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHDC;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHICON;
+
+#if 0
+typedef /* [wire_marshal] */ void __RPC_FAR *HWND;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HMENU;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HACCEL;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HBRUSH;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HFONT;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HDC;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HICON;
+
+#ifndef _HCURSOR_DEFINED
+#define _HCURSOR_DEFINED
+typedef HICON HCURSOR;
+
+#endif // !_HCURSOR_DEFINED
+/* tagTEXTMETRICW was copied from wingdi.h for MIDL */
+typedef struct tagTEXTMETRICW
+ {
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ WCHAR tmFirstChar;
+ WCHAR tmLastChar;
+ WCHAR tmDefaultChar;
+ WCHAR tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+ } TEXTMETRICW;
+
+#endif //0
+#ifndef _WIN32 // The following code is for Win16 only
+#ifndef WINAPI // If not included with 3.1 headers...
+typedef struct tagMSG
+ {
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+ DWORD time;
+ POINT pt;
+ } MSG;
+
+typedef struct tagMSG __RPC_FAR *PMSG;
+
+typedef struct tagMSG __RPC_FAR *NPMSG;
+
+typedef struct tagMSG __RPC_FAR *LPMSG;
+
+#endif // _WIN32
+#endif // WINAPI
+typedef /* [unique] */ userHBITMAP __RPC_FAR *wireHBITMAP;
+
+typedef /* [unique] */ userHPALETTE __RPC_FAR *wireHPALETTE;
+
+typedef /* [unique] */ userHENHMETAFILE __RPC_FAR *wireHENHMETAFILE;
+
+typedef /* [unique] */ userHMETAFILE __RPC_FAR *wireHMETAFILE;
+
+typedef /* [unique] */ userHMETAFILEPICT __RPC_FAR *wireHMETAFILEPICT;
+
+#if 0
+typedef /* [wire_marshal] */ void __RPC_FAR *HGLOBAL;
+
+typedef HGLOBAL HLOCAL;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HBITMAP;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HPALETTE;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HENHMETAFILE;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HMETAFILE;
+
+#endif //0
+typedef /* [wire_marshal] */ void __RPC_FAR *HMETAFILEPICT;
+
+
+
+extern RPC_IF_HANDLE IWinTypes_v0_1_c_ifspec;
+extern RPC_IF_HANDLE IWinTypes_v0_1_s_ifspec;
+#endif /* __IWinTypes_INTERFACE_DEFINED__ */
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0001
+ * at Fri Nov 15 09:34:58 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+typedef double DATE;
+
+#ifndef _tagCY_DEFINED
+#define _tagCY_DEFINED
+#define _CY_DEFINED
+#if 0
+/* the following isn't the real definition of CY, but it is */
+/* what RPC knows how to remote */
+typedef struct tagCY
+ {
+ LONGLONG int64;
+ } CY;
+
+#else /* 0 */
+/* real definition that makes the C++ compiler happy */
+typedef union tagCY {
+ struct {
+#ifdef _MAC
+ long Hi;
+ long Lo;
+#else
+ unsigned long Lo;
+ long Hi;
+#endif
+ };
+ LONGLONG int64;
+} CY;
+#endif /* 0 */
+#endif /* _tagCY_DEFINED */
+#if 0 /* _tagDEC_DEFINED */
+/* The following isn't the real definition of Decimal type, */
+/* but it is what RPC knows how to remote */
+typedef struct tagDEC
+ {
+ USHORT wReserved;
+ BYTE scale;
+ BYTE sign;
+ ULONG Hi32;
+ ULONGLONG Lo64;
+ } DECIMAL;
+
+#else /* _tagDEC_DEFINED */
+/* real definition that makes the C++ compiler happy */
+typedef struct tagDEC {
+ USHORT wReserved;
+ union {
+ struct {
+ BYTE scale;
+ BYTE sign;
+ };
+ USHORT signscale;
+ };
+ ULONG Hi32;
+ union {
+ struct {
+#ifdef _MAC
+ ULONG Mid32;
+ ULONG Lo32;
+#else
+ ULONG Lo32;
+ ULONG Mid32;
+#endif
+ };
+ ULONGLONG Lo64;
+ };
+} DECIMAL;
+#define DECIMAL_NEG ((BYTE)0x80)
+#define DECIMAL_SETZERO(dec) \
+ {(dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0;}
+#endif /* _tagDEC_DEFINED */
+typedef /* [unique] */ FLAGGED_WORD_BLOB __RPC_FAR *wireBSTR;
+
+typedef /* [wire_marshal] */ OLECHAR __RPC_FAR *BSTR;
+
+typedef BSTR __RPC_FAR *LPBSTR;
+
+/* 0 == FALSE, -1 == TRUE */
+typedef short VARIANT_BOOL;
+
+#if !__STDC__ && (_MSC_VER <= 1000)
+/* For backward compatibility */
+typedef VARIANT_BOOL _VARIANT_BOOL;
+
+#else
+/* ANSI C/C++ reserve bool as keyword */
+#define _VARIANT_BOOL /##/
+#endif
+typedef boolean BOOLEAN;
+
+/* The BSTRBLOB structure is used by some implementations */
+/* of the IPropertyStorage interface when marshaling BSTRs */
+/* on systems which don't support BSTR marshaling. */
+#ifndef _tagBSTRBLOB_DEFINED
+#define _tagBSTRBLOB_DEFINED
+typedef struct tagBSTRBLOB
+ {
+ ULONG cbSize;
+ /* [size_is] */ BYTE __RPC_FAR *pData;
+ } BSTRBLOB;
+
+typedef struct tagBSTRBLOB __RPC_FAR *LPBSTRBLOB;
+
+#endif
+#define VARIANT_TRUE ((VARIANT_BOOL)0xffff)
+#define VARIANT_FALSE ((VARIANT_BOOL)0)
+#ifndef _tagBLOB_DEFINED
+#define _tagBLOB_DEFINED
+#define _BLOB_DEFINED
+#define _LPBLOB_DEFINED
+typedef struct tagBLOB
+ {
+ ULONG cbSize;
+ /* [size_is] */ BYTE __RPC_FAR *pBlobData;
+ } BLOB;
+
+typedef struct tagBLOB __RPC_FAR *LPBLOB;
+
+#endif
+typedef struct tagCLIPDATA
+ {
+ ULONG cbSize;
+ long ulClipFmt;
+ /* [size_is] */ BYTE __RPC_FAR *pClipData;
+ } CLIPDATA;
+
+// Macro to calculate the size of the above pClipData
+#define CBPCLIPDATA(clipdata) ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
+typedef unsigned short VARTYPE;
+
+/*
+ * VARENUM usage key,
+ *
+ * * [V] - may appear in a VARIANT
+ * * [T] - may appear in a TYPEDESC
+ * * [P] - may appear in an OLE property set
+ * * [S] - may appear in a Safe Array
+ *
+ *
+ * VT_EMPTY [V] [P] nothing
+ * VT_NULL [V] [P] SQL style Null
+ * VT_I2 [V][T][P][S] 2 byte signed int
+ * VT_I4 [V][T][P][S] 4 byte signed int
+ * VT_R4 [V][T][P][S] 4 byte real
+ * VT_R8 [V][T][P][S] 8 byte real
+ * VT_CY [V][T][P][S] currency
+ * VT_DATE [V][T][P][S] date
+ * VT_BSTR [V][T][P][S] OLE Automation string
+ * VT_DISPATCH [V][T][P][S] IDispatch *
+ * VT_ERROR [V][T][P][S] SCODE
+ * VT_BOOL [V][T][P][S] True=-1, False=0
+ * VT_VARIANT [V][T][P][S] VARIANT *
+ * VT_UNKNOWN [V][T] [S] IUnknown *
+ * VT_DECIMAL [V][T] [S] 16 byte fixed point
+ * VT_I1 [T] signed char
+ * VT_UI1 [V][T][P][S] unsigned char
+ * VT_UI2 [T][P] unsigned short
+ * VT_UI4 [T][P] unsigned short
+ * VT_I8 [T][P] signed 64-bit int
+ * VT_UI8 [T][P] unsigned 64-bit int
+ * VT_INT [T] signed machine int
+ * VT_UINT [T] unsigned machine int
+ * VT_VOID [T] C style void
+ * VT_HRESULT [T] Standard return type
+ * VT_PTR [T] pointer type
+ * VT_SAFEARRAY [T] (use VT_ARRAY in VARIANT)
+ * VT_CARRAY [T] C style array
+ * VT_USERDEFINED [T] user defined type
+ * VT_LPSTR [T][P] null terminated string
+ * VT_LPWSTR [T][P] wide null terminated string
+ * VT_FILETIME [P] FILETIME
+ * VT_BLOB [P] Length prefixed bytes
+ * VT_STREAM [P] Name of the stream follows
+ * VT_STORAGE [P] Name of the storage follows
+ * VT_STREAMED_OBJECT [P] Stream contains an object
+ * VT_STORED_OBJECT [P] Storage contains an object
+ * VT_BLOB_OBJECT [P] Blob contains an object
+ * VT_CF [P] Clipboard format
+ * VT_CLSID [P] A Class ID
+ * VT_VECTOR [P] simple counted array
+ * VT_ARRAY [V] SAFEARRAY*
+ * VT_BYREF [V] void* for local use
+ * VT_BSTR_BLOB Reserved for system use
+ */
+
+enum VARENUM
+ { VT_EMPTY = 0,
+ VT_NULL = 1,
+ VT_I2 = 2,
+ VT_I4 = 3,
+ VT_R4 = 4,
+ VT_R8 = 5,
+ VT_CY = 6,
+ VT_DATE = 7,
+ VT_BSTR = 8,
+ VT_DISPATCH = 9,
+ VT_ERROR = 10,
+ VT_BOOL = 11,
+ VT_VARIANT = 12,
+ VT_UNKNOWN = 13,
+ VT_DECIMAL = 14,
+ VT_I1 = 16,
+ VT_UI1 = 17,
+ VT_UI2 = 18,
+ VT_UI4 = 19,
+ VT_I8 = 20,
+ VT_UI8 = 21,
+ VT_INT = 22,
+ VT_UINT = 23,
+ VT_VOID = 24,
+ VT_HRESULT = 25,
+ VT_PTR = 26,
+ VT_SAFEARRAY = 27,
+ VT_CARRAY = 28,
+ VT_USERDEFINED = 29,
+ VT_LPSTR = 30,
+ VT_LPWSTR = 31,
+ VT_FILETIME = 64,
+ VT_BLOB = 65,
+ VT_STREAM = 66,
+ VT_STORAGE = 67,
+ VT_STREAMED_OBJECT = 68,
+ VT_STORED_OBJECT = 69,
+ VT_BLOB_OBJECT = 70,
+ VT_CF = 71,
+ VT_CLSID = 72,
+ VT_BSTR_BLOB = 0xfff,
+ VT_VECTOR = 0x1000,
+ VT_ARRAY = 0x2000,
+ VT_BYREF = 0x4000,
+ VT_RESERVED = 0x8000,
+ VT_ILLEGAL = 0xffff,
+ VT_ILLEGALMASKED = 0xfff,
+ VT_TYPEMASK = 0xfff
+ };
+typedef ULONG PROPID;
+
+#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
+#define SID_IDENTIFIER_AUTHORITY_DEFINED
+typedef struct _SID_IDENTIFIER_AUTHORITY
+ {
+ UCHAR Value[ 6 ];
+ } SID_IDENTIFIER_AUTHORITY;
+
+typedef struct _SID_IDENTIFIER_AUTHORITY __RPC_FAR *PSID_IDENTIFIER_AUTHORITY;
+
+#endif
+#ifndef SID_DEFINED
+#define SID_DEFINED
+typedef struct _SID
+ {
+ UCHAR Revision;
+ UCHAR SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+ /* [size_is] */ ULONG SubAuthority[ 1 ];
+ } SID;
+
+typedef struct _SID __RPC_FAR *PISID;
+
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0001_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/chicago/wtypes.idl b/public/sdk/inc/chicago/wtypes.idl
new file mode 100644
index 000000000..8de4a9a9c
--- /dev/null
+++ b/public/sdk/inc/chicago/wtypes.idl
@@ -0,0 +1,1339 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: wtypes.idl
+//
+// Contents: This interface definition contains typedefs for remotable
+// data types.
+//
+// History: 09-May-96 MikeHill Updated VARENUM comments.
+// 22-May-96 MikeHill Added FMTID defintions/macros.
+// 06-Jun-96 MikeHill Added CBPCLIPDATA macro.
+//
+//--------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+[ uuid(D3980A60-910C-1068-9341-00DD010F2F1C),
+ version(0.1), pointer_default(unique) ]
+
+interface IWinTypes
+{
+
+typedef struct tagRemHGLOBAL
+{
+ long fNullHGlobal;
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHGLOBAL;
+
+typedef struct tagRemHMETAFILEPICT
+{
+ long mm;
+ long xExt;
+ long yExt;
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHMETAFILEPICT;
+
+
+typedef struct tagRemHENHMETAFILE
+{
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHENHMETAFILE;
+
+typedef struct tagRemHBITMAP
+{
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHBITMAP;
+
+typedef struct tagRemHPALETTE
+{
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHPALETTE;
+
+typedef struct tagRemBRUSH
+{
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHBRUSH;
+
+cpp_quote("#if !defined(_WIN32) && !defined(_MPPC_)" )
+cpp_quote("// The following code is for Win16 only")
+
+cpp_quote("#ifndef WINAPI // If not included with 3.1 headers...")
+
+cpp_quote("#define FAR _far")
+cpp_quote("#define PASCAL _pascal")
+cpp_quote("#define CDECL _cdecl")
+
+cpp_quote("#define VOID void")
+cpp_quote("#define WINAPI FAR PASCAL")
+cpp_quote("#define CALLBACK FAR PASCAL")
+
+
+cpp_quote("#ifndef FALSE")
+cpp_quote("#define FALSE 0")
+cpp_quote("#define TRUE 1")
+cpp_quote("#endif // !FALSE")
+
+cpp_quote("#ifndef _BYTE_DEFINED")
+cpp_quote("#define _BYTE_DEFINED")
+typedef unsigned char BYTE;
+cpp_quote("#endif // !_BYTE_DEFINED")
+
+cpp_quote("#ifndef _WORD_DEFINED")
+cpp_quote("#define _WORD_DEFINED")
+typedef unsigned short WORD;
+cpp_quote("#endif // !_WORD_DEFINED")
+
+typedef unsigned int UINT;
+typedef int INT;
+typedef long BOOL;
+
+cpp_quote("#ifndef _LONG_DEFINED")
+cpp_quote("#define _LONG_DEFINED")
+typedef long LONG;
+cpp_quote("#endif // !_LONG_DEFINED")
+
+cpp_quote("#ifndef _WPARAM_DEFINED")
+cpp_quote("#define _WPARAM_DEFINED")
+typedef UINT WPARAM;
+cpp_quote("#endif // _WPARAM_DEFINED")
+
+cpp_quote("#ifndef _DWORD_DEFINED")
+cpp_quote("#define _DWORD_DEFINED")
+typedef unsigned long DWORD;
+cpp_quote("#endif // !_DWORD_DEFINED")
+
+cpp_quote("#ifndef _LPARAM_DEFINED")
+cpp_quote("#define _LPARAM_DEFINED")
+typedef LONG LPARAM;//BUGBUG: this should be a discriminated union.
+cpp_quote("#endif // !_LPARAM_DEFINED")
+
+cpp_quote("#ifndef _LRESULT_DEFINED")
+cpp_quote("#define _LRESULT_DEFINED")
+typedef LONG LRESULT;
+cpp_quote("#endif // !_LRESULT_DEFINED")
+
+typedef void * HANDLE;
+#define DECLARE_WIREM_HANDLE(name) \
+ typedef [wire_marshal(wire ## name)] void * name
+#define DECLARE_HANDLE(name) typedef void * name
+
+DECLARE_HANDLE(HMODULE);
+DECLARE_HANDLE(HINSTANCE);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HKEY);
+
+DECLARE_HANDLE(HDESK);
+
+DECLARE_HANDLE(HMF);
+DECLARE_HANDLE(HEMF);
+
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRSRC);
+DECLARE_HANDLE(HSTR);
+DECLARE_HANDLE(HWINSTA);
+DECLARE_HANDLE(HKL);
+DECLARE_HANDLE(HGDIOBJ);
+
+typedef HANDLE HDWP;
+
+cpp_quote("#ifndef _HFILE_DEFINED")
+cpp_quote("#define _HFILE_DEFINED")
+typedef INT HFILE; /* Polymorphic with C runtime file handle type */
+cpp_quote("#endif // !_HFILE_DEFINED")
+
+
+cpp_quote("#ifndef _LPWORD_DEFINED")
+cpp_quote("#define _LPWORD_DEFINED")
+typedef WORD *LPWORD;
+cpp_quote("#endif // !_LPWORD_DEFINED")
+
+
+cpp_quote("#ifndef _LPDWORD_DEFINED")
+cpp_quote("#define _LPDWORD_DEFINED")
+typedef DWORD *LPDWORD;
+cpp_quote("#endif // !_LPDWORD_DEFINED")
+
+
+typedef char CHAR;
+typedef [string] CHAR *LPSTR;
+typedef [string] const CHAR *LPCSTR;
+
+
+cpp_quote("#ifndef _WCHAR_DEFINED")
+cpp_quote("#define _WCHAR_DEFINED")
+typedef wchar_t WCHAR;
+typedef WCHAR TCHAR;
+cpp_quote("#endif // !_WCHAR_DEFINED")
+
+typedef [string] WCHAR *LPWSTR;
+
+
+typedef [string] TCHAR *LPTSTR;
+
+typedef [string] const WCHAR *LPCWSTR;
+typedef [string] const TCHAR *LPCTSTR;
+
+
+typedef struct tagPALETTEENTRY {
+ BYTE peRed;
+ BYTE peGreen;
+ BYTE peBlue;
+ BYTE peFlags;
+} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
+
+// Logical Palette
+cpp_quote("#if 0")
+
+ typedef struct tagLOGPALETTE {
+ WORD palVersion;
+ WORD palNumEntries;
+ [size_is(palNumEntries)] PALETTEENTRY palPalEntry[];
+ } LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
+
+cpp_quote("#else")
+cpp_quote("typedef struct tagLOGPALETTE {")
+cpp_quote(" WORD palVersion;")
+cpp_quote(" WORD palNumEntries;")
+cpp_quote(" PALETTEENTRY palPalEntry[1];")
+cpp_quote("} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;")
+cpp_quote("#endif")
+
+
+cpp_quote("#ifndef _COLORREF_DEFINED")
+cpp_quote("#define _COLORREF_DEFINED")
+typedef DWORD COLORREF;
+cpp_quote("#endif // !_COLORREF_DEFINED")
+
+cpp_quote("#ifndef _LPCOLORREF_DEFINED")
+cpp_quote("#define _LPCOLORREF_DEFINED")
+typedef DWORD *LPCOLORREF;
+cpp_quote("#endif // !_LPCOLORREF_DEFINED")
+
+
+typedef HANDLE *LPHANDLE;
+
+//typedefs for remotable types from wingdi.h
+
+typedef struct _RECTL
+{
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECTL, *PRECTL, *LPRECTL;
+
+
+typedef struct tagPOINT
+{
+ LONG x;
+ LONG y;
+} POINT, *PPOINT, *LPPOINT;
+
+typedef struct _POINTL
+{
+ LONG x;
+ LONG y;
+} POINTL, *PPOINTL;
+
+
+cpp_quote("#ifndef WIN16")
+typedef struct tagSIZE
+{
+ LONG cx;
+ LONG cy;
+} SIZE, *PSIZE, *LPSIZE;
+cpp_quote("#else // WIN16")
+cpp_quote("typedef struct tagSIZE")
+cpp_quote("{")
+cpp_quote(" INT cx;")
+cpp_quote(" INT cy;")
+cpp_quote("} SIZE, *PSIZE, *LPSIZE;")
+cpp_quote("#endif // WIN16")
+
+
+typedef struct tagSIZEL
+{
+ LONG cx;
+ LONG cy;
+} SIZEL, *PSIZEL, *LPSIZEL;
+
+
+cpp_quote("#endif //WINAPI")
+cpp_quote("#endif //!WIN32 && !MPPC")
+
+cpp_quote("#if defined(_WIN32) && !defined(OLE2ANSI)")
+
+typedef WCHAR OLECHAR;
+typedef [string] OLECHAR *LPOLESTR;
+typedef [string] const OLECHAR *LPCOLESTR;
+cpp_quote("#define OLESTR(str) L##str")
+
+cpp_quote("")
+cpp_quote("#else")
+cpp_quote("")
+
+cpp_quote("typedef char OLECHAR;")
+cpp_quote("typedef LPSTR LPOLESTR;")
+cpp_quote("typedef LPCSTR LPCOLESTR;")
+cpp_quote("#define OLESTR(str) str")
+
+cpp_quote("#endif")
+
+
+// This block contains types that are normally defined by the nt sdk in WINDEF.H
+// but we need them here for definitions that follow in this file. If WINDEF.H
+// hasn't been included then we need to define them now so that WTYPES.H
+// will compile.
+cpp_quote("#ifndef _WINDEF_")
+typedef const RECTL *LPCRECTL;
+
+typedef void * PVOID, * LPVOID;
+typedef float FLOAT;
+
+typedef struct tagRECT
+{
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECT, *PRECT, *LPRECT;
+typedef const RECT *LPCRECT;
+
+cpp_quote("#endif //_WINDEF_")
+
+
+typedef unsigned char UCHAR;
+typedef short SHORT;
+typedef unsigned short USHORT;
+typedef DWORD ULONG;
+typedef double DOUBLE;
+
+cpp_quote("#ifndef _DWORDLONG_")
+typedef unsigned __int64 DWORDLONG;
+typedef DWORDLONG *PDWORDLONG;
+cpp_quote("#endif // !_DWORDLONG_")
+
+//
+// __int64 is only supported by 2.0 and later midl.
+// __midl is set by the 2.0 midl and not by 1.0 midl.
+//
+
+cpp_quote("#ifndef _ULONGLONG_")
+
+#if (defined(__midl))
+typedef __int64 LONGLONG;
+typedef unsigned __int64 ULONGLONG;
+#else
+typedef double LONGLONG;
+typedef double ULONGLONG;
+#endif
+
+typedef LONGLONG *PLONGLONG;
+typedef ULONGLONG *PULONGLONG;
+cpp_quote("#endif // _ULONGLONG_")
+
+// just for local wtypes
+cpp_quote("#if 0")
+
+typedef struct _LARGE_INTEGER {
+ LONGLONG QuadPart;
+} LARGE_INTEGER;
+
+typedef LARGE_INTEGER *PLARGE_INTEGER;
+
+typedef struct _ULARGE_INTEGER {
+ ULONGLONG QuadPart;
+} ULARGE_INTEGER;
+
+// just for local wtypes
+cpp_quote("#endif // 0")
+
+
+cpp_quote("#ifndef _WINBASE_")
+
+cpp_quote("#ifndef _FILETIME_")
+cpp_quote("#define _FILETIME_")
+typedef struct _FILETIME
+{
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+} FILETIME, *PFILETIME, *LPFILETIME;
+cpp_quote("#endif // !_FILETIME")
+
+cpp_quote("#ifndef _SYSTEMTIME_")
+cpp_quote("#define _SYSTEMTIME_")
+typedef struct _SYSTEMTIME {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
+
+cpp_quote("#endif // !_SYSTEMTIME")
+
+cpp_quote("#ifndef _SECURITY_ATTRIBUTES_")
+cpp_quote("#define _SECURITY_ATTRIBUTES_")
+typedef struct _SECURITY_ATTRIBUTES {
+ DWORD nLength;
+ [size_is(nLength)] LPVOID lpSecurityDescriptor;
+ BOOL bInheritHandle;
+} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
+cpp_quote("#endif // !_SECURITY_ATTRIBUTES_")
+
+cpp_quote("#ifndef SECURITY_DESCRIPTOR_REVISION")
+
+typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
+
+typedef PVOID PSID; // winnt
+
+typedef struct _ACL {
+ UCHAR AclRevision;
+ UCHAR Sbz1;
+ USHORT AclSize;
+ USHORT AceCount;
+ USHORT Sbz2;
+} ACL;
+typedef ACL *PACL;
+
+typedef struct _SECURITY_DESCRIPTOR {
+ UCHAR Revision;
+ UCHAR Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+} SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
+
+cpp_quote("#endif // !SECURITY_DESCRIPTOR_REVISION")
+
+cpp_quote("#endif //_WINBASE_")
+
+typedef struct _COAUTHIDENTITY
+{
+ [size_is(UserLength+1)] USHORT * User;
+ ULONG UserLength;
+ [size_is(DomainLength+1)] USHORT * Domain;
+ ULONG DomainLength;
+ [size_is(PasswordLength+1)] USHORT * Password;
+ ULONG PasswordLength;
+ ULONG Flags;
+} COAUTHIDENTITY;
+
+typedef struct _COAUTHINFO
+{
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ LPWSTR pwszServerPrincName;
+ DWORD dwAuthnLevel;
+ DWORD dwImpersonationLevel;
+ COAUTHIDENTITY * pAuthIdentityData;
+ DWORD dwCapabilities;
+} COAUTHINFO;
+
+typedef struct _COSERVERINFO
+{
+ DWORD dwReserved1;
+ LPWSTR pwszName;
+ COAUTHINFO * pAuthInfo;
+ DWORD dwReserved2;
+} COSERVERINFO;
+
+//
+// SCODE, HRESULT
+//
+//
+// Status 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
+// +-+-----------------------------+-------------------------------+
+// |S| Facility | Code |
+// +-+-----------------------------+-------------------------------+
+//
+// where
+//
+// S - is the severity code
+//
+// 0 - Success
+// 1 - Error
+//
+//
+// Facility - is the facility code
+//
+// Code - is the facility's status code
+//
+// SCODE and HRESULT are mktyplib base types.
+//
+typedef LONG SCODE;
+cpp_quote("#ifndef _HRESULT_DEFINED")
+cpp_quote("#define _HRESULT_DEFINED")
+#if defined(_STRICT_HRESULT)
+typedef struct _HRESULT_STRUCT {
+ DWORD Data1;
+} HRESULT_STRUCT, *PHRESULT_STRUCT;
+typedef PHRESULT_STRUCT HRESULT;
+#else // defined(_STRICT_HRESULT)
+typedef LONG HRESULT;
+#endif // defined(_STRICT_HRESULT)
+cpp_quote("#endif // !_HRESULT_DEFINED")
+
+typedef SCODE *PSCODE;
+
+
+cpp_quote("#ifndef GUID_DEFINED")
+cpp_quote("#define GUID_DEFINED")
+typedef struct _GUID
+{
+ DWORD Data1;
+ WORD Data2;
+ WORD Data3;
+ BYTE Data4[8];
+} GUID;
+cpp_quote("#endif // !GUID_DEFINED")
+
+cpp_quote("#if !defined( __LPGUID_DEFINED__ )")
+cpp_quote("#define __LPGUID_DEFINED__")
+typedef GUID *LPGUID;
+cpp_quote("#endif // !__LPGUID_DEFINED__")
+
+cpp_quote("#ifndef __OBJECTID_DEFINED")
+cpp_quote("#define __OBJECTID_DEFINED")
+cpp_quote("#define _OBJECTID_DEFINED")
+typedef struct _OBJECTID // NOTE!! Order of structure members is important for OFS
+{ // enumeration.
+ GUID Lineage; // Unique for objects copied from same original and copies of.
+ unsigned long Uniquifier; // Random, to provide uniqueness within small set with same
+} OBJECTID; // lineage id.
+cpp_quote("#endif // !_OBJECTID_DEFINED")
+
+
+
+
+cpp_quote("#if !defined( __IID_DEFINED__ )")
+cpp_quote("#define __IID_DEFINED__")
+
+// Interface ID are just a kind of GUID
+typedef GUID IID;
+typedef IID *LPIID;
+cpp_quote("#define IID_NULL GUID_NULL")
+cpp_quote("#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)")
+
+// Class ID are just a kind of GUID
+typedef GUID CLSID;
+typedef CLSID *LPCLSID;
+cpp_quote("#define CLSID_NULL GUID_NULL")
+cpp_quote("#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)")
+
+// Format ID are just a kind of GUID
+typedef GUID FMTID;
+typedef FMTID *LPFMTID;
+cpp_quote("#define FMTID_NULL GUID_NULL")
+cpp_quote("#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)")
+
+//The following typedefs are used internally by MIDL.
+cpp_quote("#if 0")
+#if defined(__midl)
+ /* MIDL 2.0 definitions */
+ typedef GUID *REFGUID;
+ typedef IID *REFIID;
+ typedef CLSID *REFCLSID;
+ typedef FMTID *REFFMTID;
+#else
+ /* MIDL 1.1 definitions */
+ typedef GUID REFGUID;
+ typedef IID REFIID;
+ typedef CLSID REFCLSID;
+ typedef FMTID REFFMTID;
+#endif
+cpp_quote("#endif // 0")
+
+cpp_quote("#if defined(__cplusplus)")
+
+cpp_quote("#ifndef _REFGUID_DEFINED")
+cpp_quote("#define _REFGUID_DEFINED")
+cpp_quote("#define REFGUID const GUID &")
+cpp_quote("#endif // !_REFGUID_DEFINED")
+
+cpp_quote("#ifndef _REFIID_DEFINED")
+cpp_quote("#define _REFIID_DEFINED")
+cpp_quote("#define REFIID const IID &")
+cpp_quote("#endif // !_REFIID_DEFINED")
+
+cpp_quote("#ifndef _REFCLSID_DEFINED")
+cpp_quote("#define _REFCLSID_DEFINED")
+cpp_quote("#define REFCLSID const CLSID &")
+cpp_quote("#endif // !_REFCLSID_DEFINED")
+
+cpp_quote("#ifndef _REFFMTID_DEFINED")
+cpp_quote("#define _REFFMTID_DEFINED")
+cpp_quote("#define REFFMTID const FMTID &")
+cpp_quote("#endif // !_REFFMTID_DEFINED")
+
+
+cpp_quote("#else // !__cplusplus")
+
+cpp_quote("#ifndef _REFGUID_DEFINED")
+cpp_quote("#define _REFGUID_DEFINED")
+cpp_quote("#define REFGUID const GUID * const")
+cpp_quote("#endif // !_REFGUID_DEFINED")
+
+cpp_quote("#ifndef _REFIID_DEFINED")
+cpp_quote("#define _REFIID_DEFINED")
+cpp_quote("#define REFIID const IID * const")
+cpp_quote("#endif // !_REFIID_DEFINED")
+
+
+cpp_quote("#ifndef _REFCLSID_DEFINED")
+cpp_quote("#define _REFCLSID_DEFINED")
+cpp_quote("#define REFCLSID const CLSID * const")
+cpp_quote("#endif // !_REFCLSID_DEFINED")
+
+cpp_quote("#ifndef _REFFMTID_DEFINED")
+cpp_quote("#define _REFFMTID_DEFINED")
+cpp_quote("#define REFFMTID const FMTID * const")
+cpp_quote("#endif // !_REFFMTID_DEFINED")
+
+cpp_quote("#endif // !__cplusplus")
+
+cpp_quote("#endif // !__IID_DEFINED__")
+
+/************************* Misc types ***********************************/
+
+// Common typdefs used in API paramaters, gleamed from compobj.h
+
+// memory context values; passed to CoGetMalloc
+typedef enum tagMEMCTX
+{
+ MEMCTX_TASK = 1, // task (private) memory
+ MEMCTX_SHARED = 2, // shared memory (between processes)
+ MEMCTX_MACSYSTEM = 3, // on the mac, the system heap
+ // these are mostly for internal use...
+ MEMCTX_UNKNOWN = -1, // unknown context (when asked about it)
+ MEMCTX_SAME = -2, // same context (as some other pointer)
+} MEMCTX;
+
+
+// For IRunningObjectTable::Register
+cpp_quote("#ifndef _ROTFLAGS_DEFINED")
+cpp_quote("#define _ROTFLAGS_DEFINED")
+cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1")
+cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2")
+cpp_quote("#endif // !_ROTFLAGS_DEFINED")
+
+// Maximum size of comparison buffer for IROTData::GetComparisonData
+cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED")
+cpp_quote("#define _ROT_COMPARE_MAX_DEFINED")
+cpp_quote("#define ROT_COMPARE_MAX 2048")
+cpp_quote("#endif // !_ROT_COMPARE_MAX_DEFINED")
+
+
+// class context: used to determine what scope and kind of class object to use
+// NOTE: this is a bitwise enum
+typedef enum tagCLSCTX
+{
+ CLSCTX_INPROC_SERVER = 0x01, // server dll (runs in same process as caller)
+ CLSCTX_INPROC_HANDLER = 0x02, // handler dll (runs in same process as caller)
+ CLSCTX_LOCAL_SERVER = 0x04, // server exe (runs on same machine; diff proc)
+ CLSCTX_INPROC_SERVER16 = 0x08, // 16-bit server dll (runs in same process as caller)
+ CLSCTX_REMOTE_SERVER = 0x10, // remote server exe (runs on different machine)
+ CLSCTX_INPROC_HANDLER16 = 0x20, // 16-bit handler dll (runs in same process as caller)
+ CLSCTX_INPROC_SERVERX86 = 0x40, // Wx86 server dll (runs in same process as caller)
+ CLSCTX_INPROC_HANDLERX86 = 0x80, // Wx86 handler dll (runs in same process as caller)
+} CLSCTX;
+
+
+ // marshaling flags; passed to CoMarshalInterface
+ typedef enum tagMSHLFLAGS
+ {
+ MSHLFLAGS_NORMAL = 0, // normal marshaling via proxy/stub
+ MSHLFLAGS_TABLESTRONG = 1, // keep object alive; must explicitly release
+ MSHLFLAGS_TABLEWEAK = 2, // doesn't hold object alive; still must release
+ MSHLFLAGS_NOPING = 4 // remote clients dont 'ping' to keep objects alive
+ } MSHLFLAGS;
+
+
+// marshal context: determines the destination context of the marshal operation
+typedef enum tagMSHCTX
+{
+ MSHCTX_LOCAL = 0, // unmarshal context is local (eg.shared memory)
+ MSHCTX_NOSHAREDMEM = 1, // unmarshal context has no shared memory access
+ MSHCTX_DIFFERENTMACHINE = 2,// unmarshal context is on a different machine
+ MSHCTX_INPROC = 3, // unmarshal context is on different thread
+} MSHCTX;
+
+
+//
+// Common typedefs for paramaters used in data view API's, gleamed
+// from dvobj.h
+//
+
+// Data/View aspect; specifies the desired aspect of the object when
+// drawing or getting data.
+typedef enum tagDVASPECT
+{
+ DVASPECT_CONTENT = 1,
+ DVASPECT_THUMBNAIL = 2,
+ DVASPECT_ICON = 4,
+ DVASPECT_DOCPRINT = 8
+} DVASPECT;
+
+/****** Storage types *************************************************/
+
+
+/* Storage commit types */
+typedef enum tagSTGC
+{
+ STGC_DEFAULT = 0,
+ STGC_OVERWRITE = 1,
+ STGC_ONLYIFCURRENT = 2,
+ STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
+} STGC;
+
+
+typedef enum tagSTGMOVE
+{
+ STGMOVE_MOVE = 0,
+ STGMOVE_COPY = 1,
+ STGMOVE_SHALLOWCOPY = 2
+} STGMOVE;
+
+typedef enum tagSTATFLAG
+{
+ STATFLAG_DEFAULT = 0,
+ STATFLAG_NONAME = 1,
+ STATFLAG_NOOPEN = 2
+} STATFLAG;
+
+
+typedef [context_handle] void *HCONTEXT;
+
+/****** Critical Section Wrappers ***********************************/
+
+
+/* if not already picked up from olenls.h */
+cpp_quote("#ifndef _LCID_DEFINED")
+cpp_quote("#define _LCID_DEFINED")
+typedef DWORD LCID;
+cpp_quote("#endif // !_LCID_DEFINED")
+
+// #######################################################################
+//
+// User marshal support for Windows data types.
+
+//
+// Frequently used helpers: sized blobs
+//
+// Never put [user_marshal] or [wire_marshal] on the helpers directly.
+//
+
+// Simple blobs.
+
+typedef struct _BYTE_BLOB {
+ unsigned long clSize;
+ [size_is(clSize)] byte abData[];
+} BYTE_BLOB;
+
+typedef [unique] BYTE_BLOB * UP_BYTE_BLOB;
+
+typedef struct _WORD_BLOB {
+ unsigned long clSize;
+ [size_is(clSize)] unsigned short asData[];
+} WORD_BLOB;
+
+typedef [unique] WORD_BLOB * UP_WORD_BLOB;
+
+typedef struct _DWORD_BLOB {
+ unsigned long clSize;
+ [size_is(clSize)] unsigned long alData[];
+} DWORD_BLOB;
+
+typedef [unique] DWORD_BLOB * UP_DWORD_BLOB;
+
+// Flagged blobs.
+
+typedef struct _FLAGGED_BYTE_BLOB {
+ unsigned long fFlags;
+ unsigned long clSize;
+ [size_is(clSize)] byte abData[];
+} FLAGGED_BYTE_BLOB;
+
+typedef [unique] FLAGGED_BYTE_BLOB * UP_FLAGGED_BYTE_BLOB;
+
+typedef struct _FLAGGED_WORD_BLOB {
+ unsigned long fFlags;
+ unsigned long clSize;
+ [size_is(clSize)] unsigned short asData[];
+} FLAGGED_WORD_BLOB;
+
+typedef [unique] FLAGGED_WORD_BLOB * UP_FLAGGED_WORD_BLOB;
+
+// Frequently used helpers with sized pointers.
+
+typedef struct _BYTE_SIZEDARR {
+ unsigned long clSize;
+ [size_is(clSize)] byte * pData ;
+} BYTE_SIZEDARR;
+
+typedef struct _SHORT_SIZEDARR {
+ unsigned long clSize;
+ [size_is(clSize)] unsigned short* pData ;
+} WORD_SIZEDARR;
+
+typedef struct _LONG_SIZEDARR {
+ unsigned long clSize;
+ [size_is(clSize)] unsigned long * pData ;
+} DWORD_SIZEDARR;
+
+typedef struct _HYPER_SIZEDARR {
+ unsigned long clSize;
+ [size_is(clSize)] hyper * pData ;
+} HYPER_SIZEDARR;
+
+
+// #########################################################################
+//
+// Constants for the call context
+//
+
+const unsigned long WDT_INPROC_CALL = 0x48746457;
+const unsigned long WDT_REMOTE_CALL = 0x52746457;
+
+
+// #########################################################################
+//
+// CLIPFORMAT
+//
+
+typedef union _userCLIPFORMAT switch(long fContext) u
+{
+ case WDT_INPROC_CALL: DWORD dwValue;
+ case WDT_REMOTE_CALL: [string] wchar_t * pwszName;
+} userCLIPFORMAT;
+
+typedef [unique] userCLIPFORMAT * wireCLIPFORMAT;
+
+typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT;
+
+
+// #########################################################################
+//
+// Good for most of the gdi handles.
+
+typedef union _GDI_NONREMOTE switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: DWORD_BLOB *hRemote;
+} GDI_NONREMOTE;
+
+// #########################################################################
+//
+// HGLOBAL
+//
+// A global may be Null or may be non-NULL with 0 length.
+
+typedef union _userHGLOBAL switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB * hRemote;
+ default: long hGlobal;
+} userHGLOBAL;
+
+typedef [unique] userHGLOBAL * wireHGLOBAL;
+
+// #########################################################################
+//
+// HMETAFILE
+//
+
+typedef union _userHMETAFILE switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: BYTE_BLOB * hRemote;
+ default: long hGlobal;
+} userHMETAFILE;
+
+// #########################################################################
+//
+// HMETAFILEPICT
+//
+typedef struct _remoteMETAFILEPICT
+{
+ long mm;
+ long xExt;
+ long yExt;
+ userHMETAFILE * hMF;
+} remoteMETAFILEPICT;
+
+typedef union _userHMETAFILEPICT switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: remoteMETAFILEPICT* hRemote;
+ default: long hGlobal;
+} userHMETAFILEPICT;
+
+// #########################################################################
+//
+// HENHMETAFILE
+//
+
+typedef union _userHENHMETAFILE switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: BYTE_BLOB * hRemote;
+ default: long hGlobal;
+} userHENHMETAFILE;
+
+// #########################################################################
+//
+// HBITMAP
+//
+
+// RemHBITMAP was just a byte blob, but the whole bitmap structure was copied
+// at the beginning of the buffer.
+
+// So, we take BITMAP fields from wingdi.x
+
+typedef struct _userBITMAP
+{
+ LONG bmType;
+ LONG bmWidth;
+ LONG bmHeight;
+ LONG bmWidthBytes;
+ WORD bmPlanes;
+ WORD bmBitsPixel;
+ ULONG cbSize;
+ [size_is(cbSize)] byte pBuffer[];
+} userBITMAP;
+
+
+typedef union _userHBITMAP switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: userBITMAP * hRemote;
+ default: long hGlobal;
+} userHBITMAP;
+
+// #########################################################################
+//
+// HPALETTE
+//
+
+// PALETTEENTRY is in wingdi.x, it is a struct with 4 bytes.
+// LOGPALETTE is in wingdi.x, it is a conf struct with paletteentries and
+// a version field
+
+typedef struct tagrpcLOGPALETTE {
+ WORD palVersion;
+ WORD palNumEntries;
+ [size_is( palNumEntries )] PALETTEENTRY palPalEntry[];
+} rpcLOGPALETTE;
+
+typedef union _userHPALETTE switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: rpcLOGPALETTE * hRemote;
+ default: long hGlobal;
+} userHPALETTE;
+
+
+// #########################################################################
+//
+// Handles passed locally as longs.
+//
+
+typedef union _RemotableHandle switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: long hRemote;
+} RemotableHandle;
+
+typedef [unique] RemotableHandle * wireHWND;
+typedef [unique] RemotableHandle * wireHMENU;
+typedef [unique] RemotableHandle * wireHACCEL;
+typedef [unique] RemotableHandle * wireHBRUSH;
+typedef [unique] RemotableHandle * wireHFONT;
+typedef [unique] RemotableHandle * wireHDC;
+typedef [unique] RemotableHandle * wireHICON;
+
+
+cpp_quote("#if 0")
+#ifndef _MIDL_DECLARE_WIREM_HANDLE
+DECLARE_WIREM_HANDLE( HWND );
+DECLARE_WIREM_HANDLE( HMENU );
+DECLARE_WIREM_HANDLE( HACCEL );
+DECLARE_WIREM_HANDLE( HBRUSH );
+DECLARE_WIREM_HANDLE( HFONT );
+DECLARE_WIREM_HANDLE( HDC );
+DECLARE_WIREM_HANDLE( HICON );
+#endif
+
+cpp_quote("#ifndef _HCURSOR_DEFINED")
+cpp_quote("#define _HCURSOR_DEFINED")
+typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */
+cpp_quote("#endif // !_HCURSOR_DEFINED")
+
+cpp_quote("/* tagTEXTMETRICW was copied from wingdi.h for MIDL */")
+typedef struct tagTEXTMETRICW {
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ WCHAR tmFirstChar;
+ WCHAR tmLastChar;
+ WCHAR tmDefaultChar;
+ WCHAR tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+} TEXTMETRICW;
+
+cpp_quote("#endif //0")
+
+cpp_quote("#ifndef _WIN32 // The following code is for Win16 only")
+cpp_quote("#ifndef WINAPI // If not included with 3.1 headers...")
+
+// Message structure
+
+typedef struct tagMSG {
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+ DWORD time;
+ POINT pt;
+} MSG, *PMSG, *NPMSG, *LPMSG;
+cpp_quote("#endif // _WIN32")
+cpp_quote("#endif // WINAPI")
+
+
+typedef [unique] userHBITMAP * wireHBITMAP;
+typedef [unique] userHPALETTE * wireHPALETTE;
+typedef [unique] userHENHMETAFILE * wireHENHMETAFILE;
+typedef [unique] userHMETAFILE * wireHMETAFILE;
+typedef [unique] userHMETAFILEPICT* wireHMETAFILEPICT;
+
+cpp_quote("#if 0")
+
+DECLARE_WIREM_HANDLE( HGLOBAL );
+typedef HGLOBAL HLOCAL;
+
+DECLARE_WIREM_HANDLE( HBITMAP );
+DECLARE_WIREM_HANDLE( HPALETTE );
+DECLARE_WIREM_HANDLE( HENHMETAFILE );
+DECLARE_WIREM_HANDLE( HMETAFILE );
+cpp_quote("#endif //0")
+
+DECLARE_WIREM_HANDLE( HMETAFILEPICT );
+
+}
+
+// #########################################################################
+//
+
+typedef double DATE;
+
+/* This is a helper struct for use in handling currency. */
+cpp_quote("#ifndef _tagCY_DEFINED")
+cpp_quote("#define _tagCY_DEFINED")
+cpp_quote("#define _CY_DEFINED")
+
+cpp_quote("#if 0")
+
+cpp_quote("/* the following isn't the real definition of CY, but it is */")
+cpp_quote("/* what RPC knows how to remote */")
+typedef struct tagCY {
+ LONGLONG int64;
+} CY;
+
+
+cpp_quote("#else /* 0 */")
+
+cpp_quote("/* real definition that makes the C++ compiler happy */")
+cpp_quote("typedef union tagCY {")
+cpp_quote(" struct {")
+cpp_quote("#ifdef _MAC")
+cpp_quote(" long Hi;")
+cpp_quote(" long Lo;")
+cpp_quote("#else")
+cpp_quote(" unsigned long Lo;")
+cpp_quote(" long Hi;")
+cpp_quote("#endif")
+cpp_quote(" };")
+cpp_quote(" LONGLONG int64;")
+cpp_quote("} CY;")
+cpp_quote("#endif /* 0 */")
+
+cpp_quote("#endif /* _tagCY_DEFINED */")
+
+cpp_quote("#if 0 /* _tagDEC_DEFINED */")
+cpp_quote("/* The following isn't the real definition of Decimal type, */")
+cpp_quote("/* but it is what RPC knows how to remote */")
+
+typedef struct tagDEC {
+ USHORT wReserved;
+ BYTE scale;
+ BYTE sign;
+ ULONG Hi32;
+ ULONGLONG Lo64;
+} DECIMAL;
+
+cpp_quote("#else /* _tagDEC_DEFINED */")
+
+cpp_quote("/* real definition that makes the C++ compiler happy */")
+cpp_quote("typedef struct tagDEC {")
+cpp_quote(" USHORT wReserved;")
+cpp_quote(" union {")
+cpp_quote(" struct {")
+cpp_quote(" BYTE scale;")
+cpp_quote(" BYTE sign;")
+cpp_quote(" };")
+cpp_quote(" USHORT signscale;")
+cpp_quote(" };")
+cpp_quote(" ULONG Hi32;")
+cpp_quote(" union {")
+cpp_quote(" struct {")
+cpp_quote("#ifdef _MAC")
+cpp_quote(" ULONG Mid32;")
+cpp_quote(" ULONG Lo32;")
+cpp_quote("#else")
+cpp_quote(" ULONG Lo32;")
+cpp_quote(" ULONG Mid32;")
+cpp_quote("#endif")
+cpp_quote(" };")
+cpp_quote(" ULONGLONG Lo64;")
+cpp_quote(" };")
+cpp_quote("} DECIMAL;")
+
+cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)")
+cpp_quote("#define DECIMAL_SETZERO(dec) \\")
+cpp_quote(" {(dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0;}")
+
+cpp_quote("#endif /* _tagDEC_DEFINED */")
+
+/* IDL declarations for BSTR how to transmit them */
+//
+typedef [unique] FLAGGED_WORD_BLOB * wireBSTR;
+typedef [wire_marshal( wireBSTR )] OLECHAR * BSTR;
+typedef BSTR * LPBSTR;
+
+cpp_quote("/* 0 == FALSE, -1 == TRUE */")
+typedef short VARIANT_BOOL;
+cpp_quote("#if !__STDC__ && (_MSC_VER <= 1000)")
+cpp_quote("/* For backward compatibility */")
+typedef VARIANT_BOOL _VARIANT_BOOL;
+cpp_quote("#else")
+cpp_quote("/* ANSI C/C++ reserve bool as keyword */")
+cpp_quote("#define _VARIANT_BOOL /##/")
+cpp_quote("#endif")
+typedef boolean BOOLEAN;
+
+cpp_quote("/* The BSTRBLOB structure is used by some implementations */")
+cpp_quote("/* of the IPropertyStorage interface when marshaling BSTRs */")
+cpp_quote("/* on systems which don't support BSTR marshaling. */")
+
+cpp_quote("#ifndef _tagBSTRBLOB_DEFINED")
+cpp_quote("#define _tagBSTRBLOB_DEFINED")
+typedef struct tagBSTRBLOB
+{
+ ULONG cbSize;
+ [size_is(cbSize)] BYTE *pData;
+} BSTRBLOB, *LPBSTRBLOB;
+cpp_quote("#endif")
+
+cpp_quote("#define VARIANT_TRUE ((VARIANT_BOOL)0xffff)")
+cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0)")
+
+cpp_quote("#ifndef _tagBLOB_DEFINED")
+cpp_quote("#define _tagBLOB_DEFINED")
+cpp_quote("#define _BLOB_DEFINED")
+cpp_quote("#define _LPBLOB_DEFINED")
+typedef struct tagBLOB {
+ ULONG cbSize;
+ [size_is(cbSize)]
+ BYTE *pBlobData;
+} BLOB, * LPBLOB;
+cpp_quote("#endif")
+
+typedef struct tagCLIPDATA {
+ ULONG cbSize; // count that includes sizeof(ulClipFmt)
+ long ulClipFmt; // long to keep alignment
+ [size_is(cbSize-4)]
+ BYTE * pClipData; // cbSize-sizeof(ULONG) bytes of data in clipboard format
+} CLIPDATA;
+
+cpp_quote("// Macro to calculate the size of the above pClipData")
+cpp_quote("#define CBPCLIPDATA(clipdata) ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )")
+
+
+typedef unsigned short VARTYPE;
+
+// #########################################################################
+//
+// VARTYPE
+//
+// #########################################################################
+
+
+cpp_quote("/*")
+cpp_quote(" * VARENUM usage key,")
+cpp_quote(" *")
+cpp_quote(" * * [V] - may appear in a VARIANT")
+cpp_quote(" * * [T] - may appear in a TYPEDESC")
+cpp_quote(" * * [P] - may appear in an OLE property set")
+cpp_quote(" * * [S] - may appear in a Safe Array")
+cpp_quote(" *")
+cpp_quote(" *")
+cpp_quote(" * VT_EMPTY [V] [P] nothing")
+cpp_quote(" * VT_NULL [V] [P] SQL style Null")
+cpp_quote(" * VT_I2 [V][T][P][S] 2 byte signed int")
+cpp_quote(" * VT_I4 [V][T][P][S] 4 byte signed int")
+cpp_quote(" * VT_R4 [V][T][P][S] 4 byte real")
+cpp_quote(" * VT_R8 [V][T][P][S] 8 byte real")
+cpp_quote(" * VT_CY [V][T][P][S] currency")
+cpp_quote(" * VT_DATE [V][T][P][S] date")
+cpp_quote(" * VT_BSTR [V][T][P][S] OLE Automation string")
+cpp_quote(" * VT_DISPATCH [V][T][P][S] IDispatch *")
+cpp_quote(" * VT_ERROR [V][T][P][S] SCODE")
+cpp_quote(" * VT_BOOL [V][T][P][S] True=-1, False=0")
+cpp_quote(" * VT_VARIANT [V][T][P][S] VARIANT *")
+cpp_quote(" * VT_UNKNOWN [V][T] [S] IUnknown *")
+cpp_quote(" * VT_DECIMAL [V][T] [S] 16 byte fixed point")
+cpp_quote(" * VT_I1 [T] signed char")
+cpp_quote(" * VT_UI1 [V][T][P][S] unsigned char")
+cpp_quote(" * VT_UI2 [T][P] unsigned short")
+cpp_quote(" * VT_UI4 [T][P] unsigned short")
+cpp_quote(" * VT_I8 [T][P] signed 64-bit int")
+cpp_quote(" * VT_UI8 [T][P] unsigned 64-bit int")
+cpp_quote(" * VT_INT [T] signed machine int")
+cpp_quote(" * VT_UINT [T] unsigned machine int")
+cpp_quote(" * VT_VOID [T] C style void")
+cpp_quote(" * VT_HRESULT [T] Standard return type")
+cpp_quote(" * VT_PTR [T] pointer type")
+cpp_quote(" * VT_SAFEARRAY [T] (use VT_ARRAY in VARIANT)")
+cpp_quote(" * VT_CARRAY [T] C style array")
+cpp_quote(" * VT_USERDEFINED [T] user defined type")
+cpp_quote(" * VT_LPSTR [T][P] null terminated string")
+cpp_quote(" * VT_LPWSTR [T][P] wide null terminated string")
+cpp_quote(" * VT_FILETIME [P] FILETIME")
+cpp_quote(" * VT_BLOB [P] Length prefixed bytes")
+cpp_quote(" * VT_STREAM [P] Name of the stream follows")
+cpp_quote(" * VT_STORAGE [P] Name of the storage follows")
+cpp_quote(" * VT_STREAMED_OBJECT [P] Stream contains an object")
+cpp_quote(" * VT_STORED_OBJECT [P] Storage contains an object")
+cpp_quote(" * VT_BLOB_OBJECT [P] Blob contains an object")
+cpp_quote(" * VT_CF [P] Clipboard format")
+cpp_quote(" * VT_CLSID [P] A Class ID")
+
+cpp_quote(" * VT_VECTOR [P] simple counted array")
+cpp_quote(" * VT_ARRAY [V] SAFEARRAY*")
+cpp_quote(" * VT_BYREF [V] void* for local use")
+cpp_quote(" * VT_BSTR_BLOB Reserved for system use")
+cpp_quote(" */")
+
+enum VARENUM
+{
+ VT_EMPTY = 0,
+ VT_NULL = 1,
+ VT_I2 = 2,
+ VT_I4 = 3,
+ VT_R4 = 4,
+ VT_R8 = 5,
+ VT_CY = 6,
+ VT_DATE = 7,
+ VT_BSTR = 8,
+ VT_DISPATCH = 9,
+ VT_ERROR = 10,
+ VT_BOOL = 11,
+ VT_VARIANT = 12,
+ VT_UNKNOWN = 13,
+ VT_DECIMAL = 14,
+
+ VT_I1 = 16,
+ VT_UI1 = 17,
+ VT_UI2 = 18,
+ VT_UI4 = 19,
+ VT_I8 = 20,
+ VT_UI8 = 21,
+ VT_INT = 22,
+ VT_UINT = 23,
+ VT_VOID = 24,
+ VT_HRESULT = 25,
+ VT_PTR = 26,
+ VT_SAFEARRAY = 27,
+ VT_CARRAY = 28,
+ VT_USERDEFINED = 29,
+ VT_LPSTR = 30,
+ VT_LPWSTR = 31,
+
+ VT_FILETIME = 64,
+ VT_BLOB = 65,
+ VT_STREAM = 66,
+ VT_STORAGE = 67,
+ VT_STREAMED_OBJECT = 68,
+ VT_STORED_OBJECT = 69,
+ VT_BLOB_OBJECT = 70,
+ VT_CF = 71,
+ VT_CLSID = 72,
+
+ VT_BSTR_BLOB = 0x0fff,
+
+ VT_VECTOR = 0x1000,
+ VT_ARRAY = 0x2000,
+ VT_BYREF = 0x4000,
+ VT_RESERVED = 0x8000,
+
+ VT_ILLEGAL = 0xffff,
+ VT_ILLEGALMASKED = 0x0fff,
+ VT_TYPEMASK = 0x0fff
+};
+
+// Property stuff
+typedef ULONG PROPID;
+
+// Access Control - ntseapi.h
+cpp_quote( "#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED" )
+cpp_quote( "#define SID_IDENTIFIER_AUTHORITY_DEFINED" )
+typedef struct _SID_IDENTIFIER_AUTHORITY {
+ UCHAR Value[6];
+} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
+cpp_quote( "#endif" )
+
+cpp_quote( "#ifndef SID_DEFINED" )
+cpp_quote( "#define SID_DEFINED" )
+typedef struct _SID {
+ UCHAR Revision;
+ UCHAR SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+ [size_is(SubAuthorityCount)] ULONG SubAuthority[*];
+} SID, *PISID;
+cpp_quote( "#endif" )
+
diff --git a/public/sdk/inc/ciscan.h b/public/sdk/inc/ciscan.h
new file mode 100644
index 000000000..c0564e8e3
--- /dev/null
+++ b/public/sdk/inc/ciscan.h
@@ -0,0 +1,53 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1994.
+//
+// File: ciscan.h
+//
+// Contents: CI Scandisk, public interfaces
+//
+// History: 22-Aug-94 DwightKr Created
+//
+//--------------------------------------------------------------------------
+
+#ifndef __CISCAN_H__
+#define __CISCAN_H__
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+enum ECIScanType { eCIDiskRestartScan=0,
+ eCIDiskForceFullScan,
+ eCIDiskFullScan,
+ eCIDiskPartialScan,
+ eCIDiskClean };
+
+//+-------------------------------------------------------------------------
+//
+// Struct: CIScanInfo
+//
+// Synopsis: Used to store and forward information required for a
+// scandisk operations. This struct is used by public APIs.
+//
+// History: 08-Nov-94 DwightKr Created
+//
+//--------------------------------------------------------------------------
+struct CIScanInfo
+{
+ ECIScanType scanType;
+ unsigned cDocumentsScanned;
+};
+
+SCODE OfsContentScanGetInfo( const WCHAR * wcsDrive, CIScanInfo * pScanInfo );
+SCODE OfsContentScan( const WCHAR * wcsDrive, BOOL fForceFull );
+
+
+# ifdef __cplusplus
+}
+# endif
+
+
+
+#endif // of ifndef __CISCAN_H__
diff --git a/public/sdk/inc/cisvc.hxx b/public/sdk/inc/cisvc.hxx
new file mode 100644
index 000000000..3d7b2fdd0
--- /dev/null
+++ b/public/sdk/inc/cisvc.hxx
@@ -0,0 +1,211 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1994.
+//
+// File: cisvc.hxx
+//
+// Contents: Interfaces to CI Filter service
+//
+// History: 07-Jun-94 DwightKr Created
+//
+//--------------------------------------------------------------------------
+
+#if !defined( __CIFILTERSERVICECONTROLS_HXX__ )
+#define __CIFILTERSERVICECONTROLS_HXX__
+
+static WCHAR * wcsCiFilterServiceName = L"CiFilter";
+
+//+-------------------------------------------------------------------------
+//
+// Class: CCiFilterServiceCommand
+//
+// Purpose: To build 1-byte command buffers used to transmit command to
+// the Ci Filter Service.
+//
+// History: 23-Jun-94 DwightKr Created
+//
+// Notes: The SMALLEST legal user-defined command issued to a service
+// is 128. In fact, the allowable range is 128-255. Hence
+// we'll force the high bits such that they are the service
+// command, and by making the smallest command code 4, the top
+// bit in the command byte will always be 1, hence the smallest
+// numerical value will be 128.
+//
+//--------------------------------------------------------------------------
+class CCiFilterServiceCommand
+{
+ public:
+
+ enum ServiceCommand { SERVICE_DELETE_DRIVE=4,
+ SERVICE_ADD_DRIVE,
+ SERVICE_REFRESH,
+ SERVICE_SCANDISK };
+
+ enum ServiceOperand { SERVICE_REFRESH_REGISTRY,
+ SERVICE_REFRESH_DRIVELIST };
+
+ inline CCiFilterServiceCommand(ServiceCommand Action,
+ const ULONG drive);
+
+ inline CCiFilterServiceCommand( ULONG ulCommand );
+
+ inline operator DWORD () { return *((DWORD *) this) & 0xFF; }
+ inline WCHAR const GetDriveLetter() { return (WCHAR) (_operand + L'A'); }
+ inline unsigned const GetOperand() { return (unsigned) _operand; }
+ inline unsigned const GetAction() { return _action; }
+
+ private:
+
+ const ULONG _operand : 5; // Allows for 32 drives
+ const ULONG _action : 3; // Smallest command must be 4
+};
+
+
+//+-------------------------------------------------------------------------
+//--------------------------------------------------------------------------
+inline CCiFilterServiceCommand::CCiFilterServiceCommand(ServiceCommand action,
+ const ULONG operand) :
+ _action(action),
+ _operand(operand)
+{
+}
+
+
+//+-------------------------------------------------------------------------
+//--------------------------------------------------------------------------
+inline CCiFilterServiceCommand::CCiFilterServiceCommand( ULONG ulCommand ) :
+ _action( (ulCommand >> 5) & 0x7 ),
+ _operand( ulCommand & 0x1F )
+{
+}
+
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CControlCiFilterService
+//
+// Purpose: To allow applications to send CI Filter Service specific
+// commands to the service.
+//
+// History: 23-Jun-94 DwightKr Created
+//
+// Notes: This is the interface applications can use to communicate
+// with the CI Filter Service. Currently two operations on the
+// service are supported: disable filtering on a specific drive,
+// and enable filtering. These operations are for the current
+// session only. If then system is rebooted, then all OFS drives
+// will be enabled.
+//
+// To perminately disable filtering on a OFS drive, a bit in the
+// OFS volume must be set to disable filtering permenatly.
+//
+// The CControlCiFilterService object can be used as follows:
+//
+// {
+// CControlCiFIlterService controlCiService;
+//
+// if ( !controlCiService.Ok() ) return GetLastError();
+// BOOL fSuccess = controlCiService.StopFiltering( L"D:" );
+//
+// .
+// .
+// .
+//
+//
+// fSuccess = controlCiService.StartFiltering( L"D:" );
+// }
+//
+//
+//--------------------------------------------------------------------------
+class CControlCiFilterService
+{
+public :
+ CControlCiFilterService() :
+ _hManager( OpenSCManager( NULL, NULL, SC_MANAGER_CONNECT ) ),
+ _hService( OpenService( _hManager, wcsCiFilterServiceName, SERVICE_ALL_ACCESS ) )
+ {
+ }
+
+ ~CControlCiFilterService()
+ {
+ CloseServiceHandle( _hService );
+ CloseServiceHandle( _hManager );
+ }
+
+ BOOL Ok() const { return (_hManager != NULL && _hService != NULL); }
+
+ BOOL StartFiltering( WCHAR * wcsDrive )
+ {
+ int drive = StringToDrive( wcsDrive );
+ if ( -1 == drive )
+ {
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return FALSE;
+ }
+
+ CCiFilterServiceCommand command(CCiFilterServiceCommand::SERVICE_ADD_DRIVE,
+ drive);
+
+ return ControlService(_hService, command, &_Status);
+ }
+
+ BOOL StopFiltering( WCHAR * wcsDrive )
+ {
+ int drive = StringToDrive( wcsDrive );
+ if ( -1 == drive )
+ {
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return FALSE;
+ }
+
+ CCiFilterServiceCommand command(CCiFilterServiceCommand::SERVICE_DELETE_DRIVE,
+ drive);
+
+ return ControlService(_hService, command, &_Status);
+ }
+
+ BOOL ScanDisk( WCHAR * wcsDrive )
+ {
+ int drive = StringToDrive( wcsDrive );
+ if ( -1 == drive )
+ {
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return FALSE;
+ }
+
+ CCiFilterServiceCommand command(CCiFilterServiceCommand::SERVICE_SCANDISK,
+ drive);
+
+ return ControlService(_hService, command, &_Status);
+ }
+
+ BOOL Refresh()
+ {
+ CCiFilterServiceCommand command(CCiFilterServiceCommand::SERVICE_REFRESH,
+ CCiFilterServiceCommand::SERVICE_REFRESH_DRIVELIST );
+
+ return ControlService(_hService, command, &_Status);
+ }
+
+ SERVICE_STATUS * GetStatus() { return &_Status; }
+
+private:
+
+ int StringToDrive(WCHAR * wcsDrive)
+ {
+ if ( *wcsDrive >= L'a' && *wcsDrive <= L'z' )
+ return *wcsDrive - L'a';
+ else if ( *wcsDrive >= L'A' && *wcsDrive <= L'Z' )
+ return *wcsDrive - L'A';
+ else
+ return -1;
+ }
+
+ SERVICE_STATUS _Status;
+ const SC_HANDLE _hManager;
+ const SC_HANDLE _hService;
+};
+
+#endif
diff --git a/public/sdk/inc/classf.h b/public/sdk/inc/classf.h
new file mode 100644
index 000000000..2fd94042d
--- /dev/null
+++ b/public/sdk/inc/classf.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: classf.h
+//
+// Contents: Replacement for classf.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/cluster.h b/public/sdk/inc/cluster.h
new file mode 100644
index 000000000..c715d92de
--- /dev/null
+++ b/public/sdk/inc/cluster.h
@@ -0,0 +1,199 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994 - 1994.
+//
+// File: cluster.h
+//
+// Contents: Temporary interfaces for clustering.
+//
+// History: 14 Feb 1994 Alanw Created
+//
+// Notes: These are temporary for the purpose of integrating
+// clustering with the Explorer until such time as the
+// real interface are available via the DNA table
+// implementation.
+//
+//--------------------------------------------------------------------------
+
+#if !defined( __CLUSTER_H__ )
+#define __CLUSTER_H__
+
+#include <query.h>
+
+//
+// Structure definitions used with the CluStartClustering API
+//
+
+
+#ifndef WEIGHTEDPROPID_DEFINED
+#define WEIGHTEDPROPID_DEFINED
+
+struct WEIGHTEDPROPID {
+ PROPID Id;
+ unsigned Weight; // weight of this property
+};
+
+#ifndef __cplusplus
+typedef struct WEIGHTEDPROPID WEIGHTEDPROPID;
+#endif // ndef __cplusplus
+
+struct WEIGHTEDPROPIDLIST {
+ unsigned cProps;
+// [sizeis (cProps)]
+ WEIGHTEDPROPID* paProps;
+};
+
+
+#ifndef __cplusplus
+typedef struct WEIGHTEDPROPIDLIST WEIGHTEDPROPIDLIST;
+#endif // ndef __cplusplus
+#endif // WEIGHTEDPROPID_DEFINED
+
+
+
+#ifdef __cplusplus
+
+//+-------------------------------------------------------------------------
+//
+// Class: CClustering
+//
+// Purpose: Virtual base class for clustering.
+//
+//--------------------------------------------------------------------------
+
+class CClustering
+{
+public:
+ virtual ~CClustering();
+
+ //
+ // Temporarily stop the clustering process. Let us say the
+ // clustering algorithm intended to do 6 iterations and was in the middle
+ // of the third iteration when the the pause command was issued.
+ // This command will discontinue the third, fourth, fifth, and the sixth
+ // iterations. Clustering can be resumed by the function given below.
+ //
+ virtual NTSTATUS PauseClustering() = 0;
+
+ //
+ // Perform some more iterations. Other pending iterations will
+ // be cancelled.
+ //
+ virtual NTSTATUS ResumeClustering(ULONG iExtraIterations) = 0;
+
+ //
+ // Perform up to current limit of iterations
+ //
+ virtual NTSTATUS ResumeClustering() = 0;
+};
+
+#else // __cplusplus
+typedef VOID* CClustering;
+#endif // __cplusplus
+
+
+
+//
+// APIs for clustering
+//
+
+#ifdef __cplusplus
+extern "C" {
+#endif // __cplusplus
+
+
+//+-------------------------------------------------------------------------
+//
+// Function: CluStartClustering, public
+//
+// Synopsis: This function will get the clustering process started,
+// and return a CClustTable through which it can be controlled.
+//
+// Arguments: [pITable] -- the ITable to be clustered
+// [hEvent] -- a handle to an event on which important state
+// changes are signalled.
+// [pPropidList] -- the properties to be clustered; prop-ids
+// are column indexes in this prototype.
+// [NumberOfClusters] -- the desired number of clusters
+// [MaxClusteringTime] -- maximum execution time
+// [MaxIterations] -- maximum number of iterations
+// [ppClustTable] -- on return the CClustTable which controls
+// the clustering.
+//
+// Returns: NTSTATUS - result of the operation. If successful, clustering
+// may be going on asynchronously.
+//
+// Notes: Temporary scaffolding code. This will be replaced by the
+// official DNA interface ICategorize someday
+//
+//--------------------------------------------------------------------------
+
+NTSTATUS CluStartClustering(
+ /*[in] */ ITable* pITable,
+ /*[in] */ HANDLE hEvent,
+ /*[in] */ WEIGHTEDPROPIDLIST* pPropidList,
+ /*[in] */ unsigned NumberOfClusters,
+ /*[in] */ unsigned MaxClusteringTime,
+ /*[in] */ unsigned MaxIterations,
+ /*[out] */ CClustering** ppClustTable
+);
+
+//+-------------------------------------------------------------------------
+//
+// Function: CluCreateClusteringTable,public
+//
+// Synopsis: Create an ITable for a clustering given a CClustTable
+// pointer returned by CluStartClustering.
+//
+// Arguments: [pClustTable] -- the clustering table object as
+// returned from CluStartClustering.
+// [ppITable] -- a pointer to the location where the
+// clustering ITable is returned.
+//
+// Returns: HRESULT - success indication
+//
+// Notes: Temporary scaffolding code. This will be replaced by the
+// official DNA interface ICategorize someday
+//
+//--------------------------------------------------------------------------
+
+NTSTATUS CluCreateClusteringTable(
+ /*[in] */ CClustering* pClustTable,
+ /*[out] */ ITable** ppITable
+);
+
+
+//+-------------------------------------------------------------------------
+//
+// Function: CluCreateClusterSubTable,public
+//
+// Synopsis: Create an ITable for a sub-cluster given a CClustTable
+// pointer returned by CluStartClustering.
+//
+// Arguments: [pClustTable] -- the clustering table object as
+// returned from CluStartClustering.
+// [iCluster] -- cluster number of sub-table.
+// [ppITable] -- a pointer to the location where the
+// clustering ITable is returned.
+//
+// Returns: HRESULT - success indication
+//
+// Notes: Temporary scaffolding code. This will be replaced by the
+// official DNA interface ICategorize someday
+//
+//--------------------------------------------------------------------------
+
+NTSTATUS CluCreateClusterSubTable(
+ /*[in] */ CClustering* pClustTable,
+ /*[in] */ unsigned iCluster,
+ /*[out] */ ITable** ppITable
+);
+
+#ifdef __cplusplus
+};
+#endif // __cplusplus
+
+
+
+#endif // __CLUSTER_H__
diff --git a/public/sdk/inc/cobjps.h b/public/sdk/inc/cobjps.h
new file mode 100644
index 000000000..80faaff1d
--- /dev/null
+++ b/public/sdk/inc/cobjps.h
@@ -0,0 +1,69 @@
+/*****************************************************************************\
+* *
+* cobjps.h - Definitions for writing standard proxies and stubs *
+* *
+* OLE Version 2.0 *
+* *
+* Copyright (c) 1992-1995, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+#if !defined( _COBJPS_H_ )
+#define _COBJPS_H_
+
+
+/****** IRpcChannel Interface ***********************************************/
+
+interface IRpcChannel : IUnknown
+{
+ STDMETHOD(GetStream)(REFIID iid, int iMethod, BOOL fSend,
+ BOOL fNoWait, DWORD size, IStream FAR* FAR* ppIStream) = 0;
+ STDMETHOD(Call)(IStream FAR* pIStream) = 0;
+ STDMETHOD(GetDestCtx)(DWORD FAR* lpdwDestCtx, LPVOID FAR* lplpvDestCtx) = 0;
+ STDMETHOD(IsConnected)(void) = 0;
+};
+
+
+/****** IRpcProxy Interface *************************************************/
+
+// IRpcProxy is an interface implemented by proxy objects. A proxy object has
+// exactly the same interfaces as the real object in addition to IRpcProxy.
+//
+
+interface IRpcProxy : IUnknown
+{
+ STDMETHOD(Connect)(IRpcChannel FAR* pRpcChannel) = 0;
+ STDMETHOD_(void, Disconnect)(void) = 0;
+};
+
+
+/****** IRpcStub Interface **************************************************/
+
+// IRpcStub is an interface implemented by stub objects.
+//
+
+interface IRpcStub : IUnknown
+{
+ STDMETHOD(Connect)(IUnknown FAR* pUnk) = 0;
+ STDMETHOD_(void, Disconnect)(void) = 0;
+ STDMETHOD(Invoke)(REFIID iid, int iMethod, IStream FAR* pIStream,
+ DWORD dwDestCtx, LPVOID lpvDestCtx) = 0;
+ STDMETHOD_(BOOL, IsIIDSupported)(REFIID iid) = 0;
+ STDMETHOD_(ULONG, CountRefs)(void) = 0;
+};
+
+
+/****** IPSFactory Interface ************************************************/
+
+// IPSFactory - creates proxies and stubs
+//
+
+interface IPSFactory : IUnknown
+{
+ STDMETHOD(CreateProxy)(IUnknown FAR* pUnkOuter, REFIID riid,
+ IRpcProxy FAR* FAR* ppProxy, void FAR* FAR* ppv) = 0;
+ STDMETHOD(CreateStub)(REFIID riid, IUnknown FAR* pUnkServer,
+ IRpcStub FAR* FAR* ppStub) = 0;
+};
+
+#endif // _COBJPS_H_
diff --git a/public/sdk/inc/coguid.h b/public/sdk/inc/coguid.h
new file mode 100644
index 000000000..57b01d325
--- /dev/null
+++ b/public/sdk/inc/coguid.h
@@ -0,0 +1,65 @@
+/*****************************************************************************\
+* *
+* coguid.h - Master definition of GUIDs for compobj.dll *
+* *
+* OLE Version 2.0 *
+* *
+* Copyright (c) 1992-1995, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+/* this file is the master definition of all GUIDs for the component object
+ model and is included in compobj.h. Some GUIDs for moinkers and storage
+ appear here as well. All of these GUIDs are OLE GUIDs only in the sense
+ that part of the GUID range owned by OLE was used to define them.
+
+ NOTE: The second byte of all of these GUIDs is 0.
+*/
+
+
+DEFINE_GUID(GUID_NULL, 0L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+
+DEFINE_OLEGUID(IID_IUnknown, 0x00000000L, 0, 0);
+DEFINE_OLEGUID(IID_IClassFactory, 0x00000001L, 0, 0);
+DEFINE_OLEGUID(IID_IMalloc, 0x00000002L, 0, 0);
+DEFINE_OLEGUID(IID_IMarshal, 0x00000003L, 0, 0);
+
+/* RPC related interfaces */
+DEFINE_OLEGUID(IID_IRpcChannel, 0x00000004L, 0, 0);
+DEFINE_OLEGUID(IID_IRpcStub, 0x00000005L, 0, 0);
+DEFINE_OLEGUID(IID_IStubManager, 0x00000006L, 0, 0);
+DEFINE_OLEGUID(IID_IRpcProxy, 0x00000007L, 0, 0);
+DEFINE_OLEGUID(IID_IProxyManager, 0x00000008L, 0, 0);
+DEFINE_OLEGUID(IID_IPSFactory, 0x00000009L, 0, 0);
+
+/* storage related interfaces */
+DEFINE_OLEGUID(IID_ILockBytes, 0x0000000aL, 0, 0);
+DEFINE_OLEGUID(IID_IStorage, 0x0000000bL, 0, 0);
+DEFINE_OLEGUID(IID_IStream, 0x0000000cL, 0, 0);
+DEFINE_OLEGUID(IID_IEnumSTATSTG, 0x0000000dL, 0, 0);
+
+/* moniker related interfaces */
+DEFINE_OLEGUID(IID_IBindCtx, 0x0000000eL, 0, 0);
+DEFINE_OLEGUID(IID_IMoniker, 0x0000000fL, 0, 0);
+DEFINE_OLEGUID(IID_IRunningObjectTable, 0x00000010L, 0, 0);
+DEFINE_OLEGUID(IID_IInternalMoniker, 0x00000011L, 0, 0);
+
+/* storage related interfaces */
+DEFINE_OLEGUID(IID_IRootStorage, 0x00000012L, 0, 0);
+DEFINE_OLEGUID(IID_IDfReserved1, 0x00000013L, 0, 0);
+DEFINE_OLEGUID(IID_IDfReserved2, 0x00000014L, 0, 0);
+DEFINE_OLEGUID(IID_IDfReserved3, 0x00000015L, 0, 0);
+
+/* concurrency releated interfaces */
+DEFINE_OLEGUID(IID_IMessageFilter, 0x00000016L, 0, 0);
+
+/* CLSID of standard marshaler */
+DEFINE_OLEGUID(CLSID_StdMarshal, 0x00000017L, 0, 0);
+
+/* interface on server for getting info for std marshaler */
+DEFINE_OLEGUID(IID_IStdMarshalInfo, 0x00000018L, 0, 0);
+
+/* interface to inform object of number of external connections */
+DEFINE_OLEGUID(IID_IExternalConnection, 0x00000019L, 0, 0);
+
+/* NOTE: LSB 0x1a through 0xff are reserved for future use */
diff --git a/public/sdk/inc/color.dlg b/public/sdk/inc/color.dlg
new file mode 100644
index 000000000..4d966aeea
--- /dev/null
+++ b/public/sdk/inc/color.dlg
@@ -0,0 +1,91 @@
+/*++
+
+Copyright (c) 1990-1995, Microsoft Corporation All rights reserved.
+
+Module Name:
+
+ color.dlg
+
+Abstract:
+
+ This module contains the resource descriptions for the Win32
+ color common dialogs.
+
+Revision History:
+
+--*/
+
+
+
+//
+// Include Files.
+//
+
+#include "colordlg.h"
+
+
+
+
+//
+// Color Dialogs.
+//
+
+ChooseColor DIALOG LOADONCALL MOVEABLE DISCARDABLE 2, 0, 298, 184
+STYLE WS_BORDER | DS_MODALFRAME | WS_CAPTION | WS_POPUP | WS_SYSMENU |
+ DS_3DLOOK | DS_CONTEXTHELP
+CAPTION "Color"
+FONT 8 "MS Shell Dlg"
+BEGIN
+ LTEXT "&Basic colors:", -1, 4, 4, 140, 9
+ CONTROL "", COLOR_BOX1, "static",
+ SS_SIMPLE | WS_CHILD | WS_TABSTOP | WS_GROUP,
+ 4, 14, 140, 86
+
+ LTEXT "&Custom colors:", -1, 4, 106, 140, 9
+ CONTROL "", COLOR_CUSTOM1, "static",
+ SS_SIMPLE | WS_CHILD | WS_TABSTOP | WS_GROUP,
+ 4, 116, 140, 28
+
+ PUSHBUTTON "&Define Custom Colors >>" COLOR_MIX, 4, 150, 140, 14,
+ WS_TABSTOP | WS_GROUP
+
+ DEFPUSHBUTTON "OK", IDOK, 4, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Cancel", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Help", pshHelp, 100, 166, 44, 14, WS_GROUP | WS_TABSTOP
+
+ CONTROL "", COLOR_RAINBOW, "static",
+ SS_SUNKEN | SS_SIMPLE | WS_CHILD, 152, 4, 118, 116
+
+ CONTROL "", COLOR_LUMSCROLL, "static",
+ SS_SUNKEN | SS_SIMPLE | WS_CHILD, 280, 4, 8, 116
+
+ CONTROL "", COLOR_CURRENT, "static",
+ SS_SUNKEN | SS_SIMPLE | WS_CHILD, 152, 124, 40, 26
+
+ PUSHBUTTON "&o", COLOR_SOLID, 300, 200, 4, 14, WS_GROUP
+ RTEXT "Color", COLOR_SOLID_LEFT, 152, 151, 20, 9
+ LTEXT "|S&olid", COLOR_SOLID_RIGHT, 172, 151, 20, 9
+
+ RTEXT "Hu&e:", COLOR_HUEACCEL, 194, 126, 20, 9
+ EDITTEXT, COLOR_HUE, 216, 124, 18, 12, WS_GROUP | WS_TABSTOP
+
+ RTEXT "&Sat:", COLOR_SATACCEL, 194, 140, 20, 9
+ EDITTEXT, COLOR_SAT, 216, 138, 18, 12, WS_GROUP | WS_TABSTOP
+
+ RTEXT "&Lum:", COLOR_LUMACCEL, 194, 154, 20, 9
+ EDITTEXT, COLOR_LUM, 216, 152, 18, 12, WS_GROUP | WS_TABSTOP
+
+ RTEXT "&Red:", COLOR_REDACCEL, 243, 126, 24, 9
+ EDITTEXT, COLOR_RED, 269, 124, 18, 12, WS_GROUP | WS_TABSTOP
+
+ RTEXT "&Green:", COLOR_GREENACCEL, 243, 140, 24, 9
+ EDITTEXT, COLOR_GREEN, 269, 138, 18, 12, WS_GROUP | WS_TABSTOP
+
+ RTEXT "Bl&ue:", COLOR_BLUEACCEL, 243, 154, 24, 9
+ EDITTEXT, COLOR_BLUE, 269, 152, 18, 12, WS_GROUP | WS_TABSTOP
+
+ PUSHBUTTON "&Add to Custom Colors", COLOR_ADD, 152, 166, 142, 14,
+ WS_GROUP | WS_TABSTOP
+END
+
+ \ No newline at end of file
diff --git a/public/sdk/inc/colordlg.h b/public/sdk/inc/colordlg.h
new file mode 100644
index 000000000..dc8124aec
--- /dev/null
+++ b/public/sdk/inc/colordlg.h
@@ -0,0 +1,60 @@
+/*++
+
+Copyright (c) 1990-1996, Microsoft Corporation All rights reserved.
+
+Module Name:
+
+ colordlg.h
+
+Abstract:
+
+ This module contains the header information for the Win32 color dialog.
+
+Revision History:
+
+--*/
+
+
+
+//
+// Constant Declarations.
+//
+
+#define DLG_COLOR 10
+
+#define COLOR_HUESCROLL 700 // color dialog
+#define COLOR_SATSCROLL 701
+#define COLOR_LUMSCROLL 702
+#define COLOR_HUE 703
+#define COLOR_SAT 704
+#define COLOR_LUM 705
+#define COLOR_RED 706
+#define COLOR_GREEN 707
+#define COLOR_BLUE 708
+#define COLOR_CURRENT 709
+#define COLOR_RAINBOW 710
+#define COLOR_SAVE 711
+#define COLOR_ADD 712
+#define COLOR_SOLID 713
+#define COLOR_TUNE 714
+#define COLOR_SCHEMES 715
+#define COLOR_ELEMENT 716
+#define COLOR_SAMPLES 717
+#define COLOR_PALETTE 718
+#define COLOR_MIX 719
+#define COLOR_BOX1 720
+#define COLOR_CUSTOM1 721
+
+#define COLOR_HUEACCEL 723
+#define COLOR_SATACCEL 724
+#define COLOR_LUMACCEL 725
+#define COLOR_REDACCEL 726
+#define COLOR_GREENACCEL 727
+#define COLOR_BLUEACCEL 728
+
+#define COLOR_SOLID_LEFT 730
+#define COLOR_SOLID_RIGHT 731
+
+#define NUM_BASIC_COLORS 48
+#define NUM_CUSTOM_COLORS 16
+
diff --git a/public/sdk/inc/commctrl.h b/public/sdk/inc/commctrl.h
new file mode 100644
index 000000000..0ff137400
--- /dev/null
+++ b/public/sdk/inc/commctrl.h
@@ -0,0 +1,4075 @@
+/*****************************************************************************\
+* *
+* commctrl.h - - Interface for the Windows Common Controls *
+* *
+* Version 1.2 *
+* *
+* Copyright (c) 1991-1996, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+
+#ifndef _INC_COMMCTRL
+#define _INC_COMMCTRL
+
+#ifndef NOUSER
+
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+#ifndef WINCOMMCTRLAPI
+#if !defined(_COMCTL32_) && defined(_WIN32)
+#define WINCOMMCTRLAPI DECLSPEC_IMPORT
+#else
+#define WINCOMMCTRLAPI
+#endif
+#endif // WINCOMMCTRLAPI
+
+//
+// For compilers that don't support nameless unions
+//
+#ifndef DUMMYUNIONNAME
+#ifdef NONAMELESSUNION
+#define DUMMYUNIONNAME u
+#define DUMMYUNIONNAME2 u2
+#define DUMMYUNIONNAME3 u3
+#else
+#define DUMMYUNIONNAME
+#define DUMMYUNIONNAME2
+#define DUMMYUNIONNAME3
+#endif
+#endif // DUMMYUNIONNAME
+
+#ifdef _WIN32
+#include <pshpack1.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Users of this header may define any number of these constants to avoid
+// the definitions of each functional group.
+//
+// NOTOOLBAR Customizable bitmap-button toolbar control.
+// NOUPDOWN Up and Down arrow increment/decrement control.
+// NOSTATUSBAR Status bar control.
+// NOMENUHELP APIs to help manage menus, especially with a status bar.
+// NOTRACKBAR Customizable column-width tracking control.
+// NODRAGLIST APIs to make a listbox source and sink drag&drop actions.
+// NOPROGRESS Progress gas gauge.
+// NOHOTKEY HotKey control
+// NOHEADER Header bar control.
+// NOIMAGEAPIS ImageList apis.
+// NOLISTVIEW ListView control.
+// NOTREEVIEW TreeView control.
+// NOTABCONTROL Tab control.
+// NOANIMATE Animate control.
+//
+//=============================================================================
+
+#include <prsht.h>
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else
+#define SNDMSG SendMessage
+#endif
+#endif // ifndef SNDMSG
+
+WINCOMMCTRLAPI void WINAPI InitCommonControls(void);
+
+typedef struct tagINITCOMMONCONTROLSEX {
+ DWORD dwSize; // size of this structure
+ DWORD dwICC; // flags indicating which classes to be initialized
+} INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX;
+#define ICC_LISTVIEW_CLASSES 0x00000001 // listview, header
+#define ICC_TREEVIEW_CLASSES 0x00000002 // treeview, tooltips
+#define ICC_BAR_CLASSES 0x00000004 // toolbar, statusbar, trackbar, tooltips
+#define ICC_TAB_CLASSES 0x00000008 // tab, tooltips
+#define ICC_UPDOWN_CLASS 0x00000010 // updown
+#define ICC_PROGRESS_CLASS 0x00000020 // progress
+#define ICC_HOTKEY_CLASS 0x00000040 // hotkey
+#define ICC_ANIMATE_CLASS 0x00000080 // animate
+#define ICC_WIN95_CLASSES 0x000000FF
+#define ICC_DATE_CLASSES 0x00000100 // month picker, date picker, time picker, updown
+#define ICC_USEREX_CLASSES 0x00000200 // comboex
+#define ICC_COOL_CLASSES 0x00000400 // rebar (coolbar) control
+WINCOMMCTRLAPI BOOL WINAPI InitCommonControlsEx(LPINITCOMMONCONTROLSEX);
+
+#define ODT_HEADER 100
+#define ODT_TAB 101
+#define ODT_LISTVIEW 102
+
+
+//====== Ranges for control message IDs =======================================
+
+#define LVM_FIRST 0x1000 // ListView messages
+#define TV_FIRST 0x1100 // TreeView messages
+#define HDM_FIRST 0x1200 // Header messages
+
+//====== WM_NOTIFY Macros =====================================================
+
+#define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
+ (fn)((hwnd), (int)(wParam), (NMHDR FAR*)(lParam))
+#define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \
+ (LRESULT)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(idFrom), (LPARAM)(NMHDR FAR*)(pnmhdr))
+
+
+//====== Generic WM_NOTIFY notification codes =================================
+
+#define NM_OUTOFMEMORY (NM_FIRST-1)
+#define NM_CLICK (NM_FIRST-2)
+#define NM_DBLCLK (NM_FIRST-3)
+#define NM_RETURN (NM_FIRST-4)
+#define NM_RCLICK (NM_FIRST-5)
+#define NM_RDBLCLK (NM_FIRST-6)
+#define NM_SETFOCUS (NM_FIRST-7)
+#define NM_KILLFOCUS (NM_FIRST-8)
+#define NM_CUSTOMDRAW (NM_FIRST-12)
+#define NM_HOVER (NM_FIRST-13)
+
+//====== WM_NOTIFY codes (NMHDR.code values) ==================================
+
+#define NM_FIRST (0U- 0U) // generic to all controls
+#define NM_LAST (0U- 99U)
+
+#define LVN_FIRST (0U-100U) // listview
+#define LVN_LAST (0U-199U)
+
+#define HDN_FIRST (0U-300U) // header
+#define HDN_LAST (0U-399U)
+
+#define TVN_FIRST (0U-400U) // treeview
+#define TVN_LAST (0U-499U)
+
+#define TTN_FIRST (0U-520U) // tooltips
+#define TTN_LAST (0U-549U)
+
+#define TCN_FIRST (0U-550U) // tab control
+#define TCN_LAST (0U-580U)
+
+// Shell reserved (0U-580U) - (0U-589U)
+
+#define CDN_FIRST (0U-601U) // common dialog (new)
+#define CDN_LAST (0U-699U)
+
+#define TBN_FIRST (0U-700U) // toolbar
+#define TBN_LAST (0U-720U)
+
+#define UDN_FIRST (0U-721) // updown
+#define UDN_LAST (0U-740)
+
+#define MCN_FIRST (0U-750U) // monthcal
+#define MCN_LAST (0U-759U)
+
+#define DTN_FIRST (0U-760U) // datetimepick
+#define DTN_LAST (0U-799U)
+
+#define CBEN_FIRST (0U-800U) // combo box ex
+#define CBEN_LAST (0U-830U)
+
+#define RBN_FIRST (0U-831U) // rebar
+#define RBN_LAST (0U-859U)
+
+#define MSGF_COMMCTRL_BEGINDRAG 0x4200
+#define MSGF_COMMCTRL_SIZEHEADER 0x4201
+#define MSGF_COMMCTRL_DRAGSELECT 0x4202
+#define MSGF_COMMCTRL_TOOLBARCUST 0x4203
+
+
+//==================== CUSTOM DRAW ==========================================
+
+
+// custom draw return flags
+// values under 0x00010000 are reserved for global custom draw values.
+// above that are for specific controls
+#define CDRF_DODEFAULT 0x00000000
+#define CDRF_NEWFONT 0x00000002
+#define CDRF_SKIPDEFAULT 0x00000004
+
+
+#define CDRF_NOTIFYPOSTPAINT 0x00000010
+#define CDRF_NOTIFYITEMDRAW 0x00000020
+#define CDRF_NOTIFYPOSTERASE 0x00000040
+#define CDRF_NOTIFYITEMERASE 0x00000080
+
+
+
+// drawstage flags
+// values under 0x00010000 are reserved for global custom draw values.
+// above that are for specific controls
+#define CDDS_PREPAINT 0x00000001
+#define CDDS_POSTPAINT 0x00000002
+#define CDDS_PREERASE 0x00000003
+#define CDDS_POSTERASE 0x00000004
+// the 0x000010000 bit means it's individual item specific
+#define CDDS_ITEM 0x00010000
+#define CDDS_ITEMPREPAINT (CDDS_ITEM | CDDS_PREPAINT)
+#define CDDS_ITEMPOSTPAINT (CDDS_ITEM | CDDS_POSTPAINT)
+#define CDDS_ITEMPREERASE (CDDS_ITEM | CDDS_PREERASE)
+#define CDDS_ITEMPOSTERASE (CDDS_ITEM | CDDS_POSTERASE)
+
+
+
+// itemState flags
+#define CDIS_SELECTED 0x0001
+#define CDIS_GRAYED 0x0002
+#define CDIS_DISABLED 0x0004
+#define CDIS_CHECKED 0x0008
+#define CDIS_FOCUS 0x0010
+#define CDIS_DEFAULT 0x0020
+#define CDIS_HOT 0x0040
+
+typedef struct tagNMCUSTOMDRAWINFO
+{
+ NMHDR hdr;
+ DWORD dwDrawStage;
+ HDC hdc;
+ RECT rc;
+ DWORD dwItemSpec; // this is control specific, but it's how to specify an item. valid only with CDDS_ITEM bit set
+ UINT uItemState;
+ LPARAM lItemlParam;
+} NMCUSTOMDRAW, FAR * LPNMCUSTOMDRAW;
+
+
+
+// for tooltips
+
+typedef struct tagNMTTCUSTOMDRAW
+{
+ NMCUSTOMDRAW nmcd;
+ UINT uDrawFlags;
+} NMTTCUSTOMDRAW, FAR * LPNMTTCUSTOMDRAW;
+
+
+
+//====== IMAGE APIS ===========================================================
+
+#ifndef NOIMAGEAPIS
+
+#define CLR_NONE 0xFFFFFFFFL
+#define CLR_DEFAULT 0xFF000000L
+
+struct _IMAGELIST;
+typedef struct _IMAGELIST NEAR* HIMAGELIST;
+
+typedef struct _IMAGELISTDRAWPARAMS {
+ DWORD cbSize;
+ HIMAGELIST himl;
+ int i;
+ HDC hdcDst;
+ int x;
+ int y;
+ int cx;
+ int cy;
+ int xBitmap; // x offest from the upperleft of bitmap
+ int yBitmap; // y offset from the upperleft of bitmap
+ COLORREF rgbBk;
+ COLORREF rgbFg;
+ UINT fStyle;
+ DWORD dwRop;
+} IMAGELISTDRAWPARAMS, FAR * LPIMAGELISTDRAWPARAMS;
+
+
+#define ILC_MASK 0x0001
+#define ILC_COLOR 0x0000
+#define ILC_COLORDDB 0x00FE
+#define ILC_COLOR4 0x0004
+#define ILC_COLOR8 0x0008
+#define ILC_COLOR16 0x0010
+#define ILC_COLOR24 0x0018
+#define ILC_COLOR32 0x0020
+#define ILC_PALETTE 0x0800 // (no longer supported...never worked anyway)
+
+
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Create(int cx, int cy, UINT flags, int cInitial, int cGrow);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Destroy(HIMAGELIST himl);
+WINCOMMCTRLAPI int WINAPI ImageList_GetImageCount(HIMAGELIST himl);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_SetImageCount(HIMAGELIST himl, UINT uNewCount);
+WINCOMMCTRLAPI int WINAPI ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask);
+WINCOMMCTRLAPI int WINAPI ImageList_ReplaceIcon(HIMAGELIST himl, int i, HICON hicon);
+WINCOMMCTRLAPI COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk);
+WINCOMMCTRLAPI COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST himl);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST himl, int iImage, int iOverlay);
+
+#define ImageList_AddIcon(himl, hicon) ImageList_ReplaceIcon(himl, -1, hicon)
+
+#define ILD_NORMAL 0x0000
+#define ILD_TRANSPARENT 0x0001
+#define ILD_MASK 0x0010
+#define ILD_IMAGE 0x0020
+#define ILD_ROP 0x0040
+#define ILD_BLEND25 0x0002
+#define ILD_BLEND50 0x0004
+#define ILD_OVERLAYMASK 0x0F00
+#define INDEXTOOVERLAYMASK(i) ((i) << 8)
+
+#define ILD_SELECTED ILD_BLEND50
+#define ILD_FOCUS ILD_BLEND25
+#define ILD_BLEND ILD_BLEND50
+#define CLR_HILIGHT CLR_DEFAULT
+
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Draw(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, UINT fStyle);
+
+
+#ifdef _WIN32
+
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Replace(HIMAGELIST himl, int i, HBITMAP hbmImage, HBITMAP hbmMask);
+WINCOMMCTRLAPI int WINAPI ImageList_AddMasked(HIMAGELIST himl, HBITMAP hbmImage, COLORREF crMask);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DrawEx(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS* pimldp);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Remove(HIMAGELIST himl, int i);
+WINCOMMCTRLAPI HICON WINAPI ImageList_GetIcon(HIMAGELIST himl, int i, UINT flags);
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE hi, LPCSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags);
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE hi, LPCWSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags);
+
+#ifdef UNICODE
+#define ImageList_LoadImage ImageList_LoadImageW
+#else
+#define ImageList_LoadImage ImageList_LoadImageA
+#endif
+
+#define ILCF_MOVE (0x00000000)
+#define ILCF_SWAP (0x00000001)
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Copy(HIMAGELIST himlDst, int iDst, HIMAGELIST himlSrc, int iSrc, UINT uFlags);
+
+WINCOMMCTRLAPI BOOL WINAPI ImageList_BeginDrag(HIMAGELIST himlTrack, int iTrack, int dxHotspot, int dyHotspot);
+WINCOMMCTRLAPI void WINAPI ImageList_EndDrag();
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DragEnter(HWND hwndLock, int x, int y);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DragLeave(HWND hwndLock);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DragMove(int x, int y);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST himlDrag, int iDrag, int dxHotspot, int dyHotspot);
+
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DragShowNolock(BOOL fShow);
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_GetDragImage(POINT FAR* ppt,POINT FAR* pptHotspot);
+
+#define ImageList_RemoveAll(himl) ImageList_Remove(himl, -1)
+#define ImageList_ExtractIcon(hi, himl, i) ImageList_GetIcon(himl, i, 0)
+#define ImageList_LoadBitmap(hi, lpbmp, cx, cGrow, crMask) ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0)
+
+#ifdef __IStream_INTERFACE_DEFINED__
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read(LPSTREAM pstm);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Write(HIMAGELIST himl, LPSTREAM pstm);
+#endif
+
+typedef struct _IMAGEINFO
+{
+ HBITMAP hbmImage;
+ HBITMAP hbmMask;
+ int Unused1;
+ int Unused2;
+ RECT rcImage;
+} IMAGEINFO, FAR *LPIMAGEINFO;
+
+WINCOMMCTRLAPI BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, int FAR *cx, int FAR *cy);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_SetIconSize(HIMAGELIST himl, int cx, int cy);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST himl, int i, IMAGEINFO FAR* pImageInfo);
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST himl1, int i1, HIMAGELIST himl2, int i2, int dx, int dy);
+
+
+#endif
+
+#endif
+
+
+//====== HEADER CONTROL =======================================================
+
+#ifndef NOHEADER
+
+#ifdef _WIN32
+#define WC_HEADERA "SysHeader32"
+#define WC_HEADERW L"SysHeader32"
+
+#ifdef UNICODE
+#define WC_HEADER WC_HEADERW
+#else
+#define WC_HEADER WC_HEADERA
+#endif
+
+#else
+#define WC_HEADER "SysHeader"
+#endif
+
+#define HDS_HORZ 0x0000
+#define HDS_BUTTONS 0x0002
+#define HDS_HOTTRACK 0x0004
+#define HDS_HIDDEN 0x0008
+
+
+#define HDS_DRAGDROP 0x0040
+#define HDS_FULLDRAG 0x0080
+
+typedef struct _HD_ITEMA
+{
+ UINT mask;
+ int cxy;
+ LPSTR pszText;
+ HBITMAP hbm;
+ int cchTextMax;
+ int fmt;
+ LPARAM lParam;
+ int iImage; // index of bitmap in ImageList
+ int iOrder; // where to draw this item
+} HDITEMA, FAR * LPHDITEMA;
+
+
+
+typedef struct _HD_ITEMW
+{
+ UINT mask;
+ int cxy;
+ LPWSTR pszText;
+ HBITMAP hbm;
+ int cchTextMax;
+ int fmt;
+ LPARAM lParam;
+ int iImage; // index of bitmap in ImageList
+ int iOrder;
+} HDITEMW, FAR * LPHDITEMW;
+
+#define HD_ITEMA HDITEMA
+#define HD_ITEMW HDITEMW
+
+#ifdef UNICODE
+#define HDITEM HDITEMW
+#define LPHDITEM LPHDITEMW
+#else
+#define HDITEM HDITEMA
+#define LPHDITEM LPHDITEMW
+#endif
+
+#define HD_ITEM HDITEM
+
+
+#define HDI_WIDTH 0x0001
+#define HDI_HEIGHT HDI_WIDTH
+#define HDI_TEXT 0x0002
+#define HDI_FORMAT 0x0004
+#define HDI_LPARAM 0x0008
+#define HDI_BITMAP 0x0010
+#define HDI_IMAGE 0x0020
+#define HDI_DI_SETITEM 0x0040
+#define HDI_ORDER 0x0080
+
+#define HDF_LEFT 0
+#define HDF_RIGHT 1
+#define HDF_CENTER 2
+#define HDF_JUSTIFYMASK 0x0003
+#define HDF_RTLREADING 4
+
+#define HDF_OWNERDRAW 0x8000
+#define HDF_STRING 0x4000
+#define HDF_BITMAP 0x2000
+#define HDF_BITMAP_ON_RIGHT 0x1000
+
+#define HDF_IMAGE 0x0800
+
+#define HDM_GETITEMCOUNT (HDM_FIRST + 0)
+#define Header_GetItemCount(hwndHD) \
+ (int)SNDMSG((hwndHD), HDM_GETITEMCOUNT, 0, 0L)
+
+
+#define HDM_INSERTITEMA (HDM_FIRST + 1)
+#define HDM_INSERTITEMW (HDM_FIRST + 10)
+
+#ifdef UNICODE
+#define HDM_INSERTITEM HDM_INSERTITEMW
+#else
+#define HDM_INSERTITEM HDM_INSERTITEMA
+#endif
+
+#define Header_InsertItem(hwndHD, i, phdi) \
+ (int)SNDMSG((hwndHD), HDM_INSERTITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM FAR*)(phdi))
+
+
+#define HDM_DELETEITEM (HDM_FIRST + 2)
+#define Header_DeleteItem(hwndHD, i) \
+ (BOOL)SNDMSG((hwndHD), HDM_DELETEITEM, (WPARAM)(int)(i), 0L)
+
+
+#define HDM_GETITEMA (HDM_FIRST + 3)
+#define HDM_GETITEMW (HDM_FIRST + 11)
+
+#ifdef UNICODE
+#define HDM_GETITEM HDM_GETITEMW
+#else
+#define HDM_GETITEM HDM_GETITEMA
+#endif
+
+#define Header_GetItem(hwndHD, i, phdi) \
+ (BOOL)SNDMSG((hwndHD), HDM_GETITEM, (WPARAM)(int)(i), (LPARAM)(HD_ITEM FAR*)(phdi))
+
+
+#define HDM_SETITEMA (HDM_FIRST + 4)
+#define HDM_SETITEMW (HDM_FIRST + 12)
+
+#ifdef UNICODE
+#define HDM_SETITEM HDM_SETITEMW
+#else
+#define HDM_SETITEM HDM_SETITEMA
+#endif
+
+#define Header_SetItem(hwndHD, i, phdi) \
+ (BOOL)SNDMSG((hwndHD), HDM_SETITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM FAR*)(phdi))
+
+
+typedef struct _HD_LAYOUT
+{
+ RECT FAR* prc;
+ WINDOWPOS FAR* pwpos;
+} HDLAYOUT, FAR *LPHDLAYOUT;
+
+#define HD_LAYOUT HDLAYOUT
+
+#define HDM_LAYOUT (HDM_FIRST + 5)
+#define Header_Layout(hwndHD, playout) \
+ (BOOL)SNDMSG((hwndHD), HDM_LAYOUT, 0, (LPARAM)(HD_LAYOUT FAR*)(playout))
+
+
+#define HHT_NOWHERE 0x0001
+#define HHT_ONHEADER 0x0002
+#define HHT_ONDIVIDER 0x0004
+#define HHT_ONDIVOPEN 0x0008
+#define HHT_ABOVE 0x0100
+#define HHT_BELOW 0x0200
+#define HHT_TORIGHT 0x0400
+#define HHT_TOLEFT 0x0800
+
+typedef struct _HD_HITTESTINFO
+{
+ POINT pt;
+ UINT flags;
+ int iItem;
+} HDHITTESTINFO, FAR *LPHDHITTESTINFO;
+
+#define HD_HITTESTINFO HDHITTESTINFO
+
+
+#define HDM_HITTEST (HDM_FIRST + 6)
+
+#define HDM_GETITEMRECT (HDM_FIRST + 7)
+#define Header_GetItemRect(hwnd, iItem, lprc) \
+ (BOOL)SNDMSG((hwnd), HDM_GETITEMRECT, (WPARAM)iItem, (LPARAM)lprc)
+
+#define HDM_SETIMAGELIST (HDM_FIRST + 8)
+#define Header_SetImageList(hwnd, himl) \
+ (HIMAGELIST)SNDMSG((hwnd), HDM_SETIMAGELIST, 0, (LPARAM)himl)
+
+#define HDM_GETIMAGELIST (HDM_FIRST + 9)
+#define Header_GetImageList(hwnd) \
+ (HIMAGELIST)SNDMSG((hwnd), HDM_GETIMAGELIST, 0, 0)
+
+
+#define HDM_ORDERTOINDEX (HDM_FIRST + 15)
+#define Header_OrderToIndex(hwnd, i) \
+ (int)SNDMSG((hwnd), HDM_ORDERTOINDEX, (WPARAM)i, 0)
+
+#define HDM_CREATEDRAGIMAGE (HDM_FIRST + 16) // wparam = which item (by index)
+#define Header_CreateDragImage(hwnd, i) \
+ (HIMAGELIST)SNDMSG((hwnd), HDM_CREATEDRAGIMAGE, (WPARAM)i, 0)
+
+#define HDM_GETORDERARRAY (HDM_FIRST + 17)
+#define Header_GetOrderArray(hwnd, iCount, lpi) \
+ (BOOL)SNDMSG((hwnd), HDM_GETORDERARRAY, (WPARAM)iCount, (LPARAM)lpi)
+
+#define HDM_SETORDERARRAY (HDM_FIRST + 18)
+#define Header_SetOrderArray(hwnd, iCount, lpi) \
+ (BOOL)SNDMSG((hwnd), HDM_SETORDERARRAY, (WPARAM)iCount, (LPARAM)lpi)
+// lparam = int array of size HDM_GETITEMCOUNT
+// the array specifies the order that all items should be displayed.
+// e.g. { 2, 0, 1}
+// says the index 2 item should be shown in the 0ths position
+// index 0 should be shown in the 1st position
+// index 1 should be shown in the 2nd position
+
+
+#define HDM_SETHOTDIVIDER (HDM_FIRST + 19)
+#define Header_SetHotDivider(hwnd, fPos, dw) \
+ (int)SNDMSG((hwnd), HDM_SETHOTDIVIDER, (WPARAM)fPos, (LPARAM)dw)
+// convenience message for external dragdrop
+// wParam = BOOL specifying whether the lParam is a dwPos of the cursor
+// position or the index of which divider to hotlight
+// lParam = depends on wParam (-1 and wParm = FALSE turns off hotlight)
+
+#define HDN_ITEMCHANGINGA (HDN_FIRST-0)
+#define HDN_ITEMCHANGINGW (HDN_FIRST-20)
+#define HDN_ITEMCHANGEDA (HDN_FIRST-1)
+#define HDN_ITEMCHANGEDW (HDN_FIRST-21)
+#define HDN_ITEMCLICKA (HDN_FIRST-2)
+#define HDN_ITEMCLICKW (HDN_FIRST-22)
+#define HDN_ITEMDBLCLICKA (HDN_FIRST-3)
+#define HDN_ITEMDBLCLICKW (HDN_FIRST-23)
+#define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5)
+#define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25)
+#define HDN_BEGINTRACKA (HDN_FIRST-6)
+#define HDN_BEGINTRACKW (HDN_FIRST-26)
+#define HDN_ENDTRACKA (HDN_FIRST-7)
+#define HDN_ENDTRACKW (HDN_FIRST-27)
+#define HDN_TRACKA (HDN_FIRST-8)
+#define HDN_TRACKW (HDN_FIRST-28)
+#define HDN_GETDISPINFOA (HDN_FIRST-9)
+#define HDN_GETDISPINFOW (HDN_FIRST-29)
+#define HDN_BEGINDRAG (HDN_FIRST-10)
+#define HDN_ENDDRAG (HDN_FIRST-11)
+
+#ifdef UNICODE
+#define HDN_ITEMCHANGING HDN_ITEMCHANGINGW
+#define HDN_ITEMCHANGED HDN_ITEMCHANGEDW
+#define HDN_ITEMCLICK HDN_ITEMCLICKW
+#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKW
+#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKW
+#define HDN_BEGINTRACK HDN_BEGINTRACKW
+#define HDN_ENDTRACK HDN_ENDTRACKW
+#define HDN_TRACK HDN_TRACKW
+#define HDN_GETDISPINFO HDN_GETDISPINFOW
+#else
+#define HDN_ITEMCHANGING HDN_ITEMCHANGINGA
+#define HDN_ITEMCHANGED HDN_ITEMCHANGEDA
+#define HDN_ITEMCLICK HDN_ITEMCLICKA
+#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKA
+#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKA
+#define HDN_BEGINTRACK HDN_BEGINTRACKA
+#define HDN_ENDTRACK HDN_ENDTRACKA
+#define HDN_TRACK HDN_TRACKA
+#define HDN_GETDISPINFO HDN_GETDISPINFOA
+#endif
+
+
+typedef struct tagNMHEADERA
+{
+ NMHDR hdr;
+ int iItem;
+ int iButton;
+ HDITEMA FAR* pitem;
+} NMHEADERA, FAR* LPNMHEADERA;
+
+
+typedef struct tagNMHEADERW
+{
+ NMHDR hdr;
+ int iItem;
+ int iButton;
+ HDITEMW FAR* pitem;
+} NMHEADERW, FAR* LPNMHEADERW;
+
+
+#ifdef UNICODE
+#define NMHEADER NMHEADERW
+#define LPNMHEADER LPNMHEADERW
+#else
+#define NMHEADER NMHEADERA
+#define LPNMHEADER LPNMHEADERA
+#endif
+
+
+#define HD_NOTIFYA NMHEADERA
+#define HD_NOTIFYW NMHEADERW
+#define HD_NOTIFY NMHEADER
+
+
+typedef struct tagNMHDDISPINFOW
+{
+ NMHDR hdr;
+ int iItem;
+ UINT mask;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+} NMHDDISPINFOW, FAR* LPNMHDDISPINFOW;
+
+typedef struct tagNMHDDISPINFOA
+{
+ NMHDR hdr;
+ int iItem;
+ UINT mask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+} NMHDDISPINFOA, FAR* LPNMHDDISPINFOA;
+
+
+#ifdef UNICODE
+#define NMHDDISPINFO NMHDDISPINFOW
+#define LPNMHDDISPINFO LPNMHDDISPINFOW
+#else
+#define NMHDDISPINFO NMHDDISPINFOA
+#define LPNMHDDISPINFO LPNMHDDISPINFOA
+#endif
+
+#endif
+
+
+//====== TOOLBAR CONTROL ======================================================
+
+#ifndef NOTOOLBAR
+
+#ifdef _WIN32
+#define TOOLBARCLASSNAMEW L"ToolbarWindow32"
+#define TOOLBARCLASSNAMEA "ToolbarWindow32"
+
+#ifdef UNICODE
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEW
+#else
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEA
+#endif
+
+#else
+#define TOOLBARCLASSNAME "ToolbarWindow"
+#endif
+
+typedef struct _TBBUTTON {
+ int iBitmap;
+ int idCommand;
+ BYTE fsState;
+ BYTE fsStyle;
+#ifdef _WIN32
+ BYTE bReserved[2];
+#endif
+ DWORD dwData;
+ int iString;
+} TBBUTTON, NEAR* PTBBUTTON, FAR* LPTBBUTTON;
+typedef const TBBUTTON FAR* LPCTBBUTTON;
+
+
+typedef struct _COLORMAP {
+ COLORREF from;
+ COLORREF to;
+} COLORMAP, FAR* LPCOLORMAP;
+
+WINCOMMCTRLAPI HWND WINAPI CreateToolbarEx(HWND hwnd, DWORD ws, UINT wID, int nBitmaps,
+ HINSTANCE hBMInst, UINT wBMID, LPCTBBUTTON lpButtons,
+ int iNumButtons, int dxButton, int dyButton,
+ int dxBitmap, int dyBitmap, UINT uStructSize);
+
+WINCOMMCTRLAPI HBITMAP WINAPI CreateMappedBitmap(HINSTANCE hInstance, int idBitmap,
+ UINT wFlags, LPCOLORMAP lpColorMap,
+ int iNumMaps);
+
+#define CMB_MASKED 0x02
+
+#define TBSTATE_CHECKED 0x01
+#define TBSTATE_PRESSED 0x02
+#define TBSTATE_ENABLED 0x04
+#define TBSTATE_HIDDEN 0x08
+#define TBSTATE_INDETERMINATE 0x10
+#define TBSTATE_WRAP 0x20
+#define TBSTATE_ELLIPSES 0x40
+
+
+#define TBSTYLE_BUTTON 0x00
+#define TBSTYLE_SEP 0x01
+#define TBSTYLE_CHECK 0x02
+#define TBSTYLE_GROUP 0x04
+#define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP | TBSTYLE_CHECK)
+#define TBSTYLE_DROPDOWN 0x08
+
+#define TBSTYLE_TOOLTIPS 0x0100
+#define TBSTYLE_WRAPABLE 0x0200
+#define TBSTYLE_ALTDRAG 0x0400
+#define TBSTYLE_FLAT 0x0800
+#define TBSTYLE_LIST 0x1000
+#define TBSTYLE_CUSTOMERASE 0x2000
+
+#define TB_ENABLEBUTTON (WM_USER + 1)
+#define TB_CHECKBUTTON (WM_USER + 2)
+#define TB_PRESSBUTTON (WM_USER + 3)
+#define TB_HIDEBUTTON (WM_USER + 4)
+#define TB_INDETERMINATE (WM_USER + 5)
+#define TB_ISBUTTONENABLED (WM_USER + 9)
+#define TB_ISBUTTONCHECKED (WM_USER + 10)
+#define TB_ISBUTTONPRESSED (WM_USER + 11)
+#define TB_ISBUTTONHIDDEN (WM_USER + 12)
+#define TB_ISBUTTONINDETERMINATE (WM_USER + 13)
+#define TB_SETSTATE (WM_USER + 17)
+#define TB_GETSTATE (WM_USER + 18)
+#define TB_ADDBITMAP (WM_USER + 19)
+
+#ifdef _WIN32
+typedef struct tagTBADDBITMAP {
+ HINSTANCE hInst;
+ UINT nID;
+} TBADDBITMAP, *LPTBADDBITMAP;
+
+#define HINST_COMMCTRL ((HINSTANCE)-1)
+#define IDB_STD_SMALL_COLOR 0
+#define IDB_STD_LARGE_COLOR 1
+#define IDB_VIEW_SMALL_COLOR 4
+#define IDB_VIEW_LARGE_COLOR 5
+#define IDB_HIST_SMALL_COLOR 8
+#define IDB_HIST_LARGE_COLOR 9
+
+// icon indexes for standard bitmap
+
+#define STD_CUT 0
+#define STD_COPY 1
+#define STD_PASTE 2
+#define STD_UNDO 3
+#define STD_REDOW 4
+#define STD_DELETE 5
+#define STD_FILENEW 6
+#define STD_FILEOPEN 7
+#define STD_FILESAVE 8
+#define STD_PRINTPRE 9
+#define STD_PROPERTIES 10
+#define STD_HELP 11
+#define STD_FIND 12
+#define STD_REPLACE 13
+#define STD_PRINT 14
+
+// icon indexes for standard view bitmap
+
+#define VIEW_LARGEICONS 0
+#define VIEW_SMALLICONS 1
+#define VIEW_LIST 2
+#define VIEW_DETAILS 3
+#define VIEW_SORTNAME 4
+#define VIEW_SORTSIZE 5
+#define VIEW_SORTDATE 6
+#define VIEW_SORTTYPE 7
+#define VIEW_PARENTFOLDER 8
+#define VIEW_NETCONNECT 9
+#define VIEW_NETDISCONNECT 10
+#define VIEW_NEWFOLDER 11
+
+#define HIST_BACK 0
+#define HIST_FORWARD 1
+#define HIST_FAVORITES 2
+#define HIST_ADDTOFAVORITES 3
+#define HIST_VIEWTREE 4
+
+#endif
+
+#define TB_ADDBUTTONS (WM_USER + 20)
+#define TB_INSERTBUTTON (WM_USER + 21)
+#define TB_DELETEBUTTON (WM_USER + 22)
+#define TB_GETBUTTON (WM_USER + 23)
+#define TB_BUTTONCOUNT (WM_USER + 24)
+#define TB_COMMANDTOINDEX (WM_USER + 25)
+
+#ifdef _WIN32
+
+typedef struct tagTBSAVEPARAMSA {
+ HKEY hkr;
+ LPCSTR pszSubKey;
+ LPCSTR pszValueName;
+} TBSAVEPARAMSA, FAR* LPTBSAVEPARAMSA;
+
+typedef struct tagTBSAVEPARAMSW {
+ HKEY hkr;
+ LPCWSTR pszSubKey;
+ LPCWSTR pszValueName;
+} TBSAVEPARAMSW, FAR *LPTBSAVEPARAMW;
+
+#ifdef UNICODE
+#define TBSAVEPARAMS TBSAVEPARAMSW
+#define LPTBSAVEPARAMS LPTBSAVEPARAMSW
+#else
+#define TBSAVEPARAMS TBSAVEPARAMSA
+#define LPTBSAVEPARAMS LPTBSAVEPARAMSA
+#endif
+
+#endif
+
+#define TB_SAVERESTOREA (WM_USER + 26)
+#define TB_SAVERESTOREW (WM_USER + 76)
+#define TB_CUSTOMIZE (WM_USER + 27)
+#define TB_ADDSTRINGA (WM_USER + 28)
+#define TB_ADDSTRINGW (WM_USER + 77)
+#define TB_GETITEMRECT (WM_USER + 29)
+#define TB_BUTTONSTRUCTSIZE (WM_USER + 30)
+#define TB_SETBUTTONSIZE (WM_USER + 31)
+#define TB_SETBITMAPSIZE (WM_USER + 32)
+#define TB_AUTOSIZE (WM_USER + 33)
+#define TB_GETTOOLTIPS (WM_USER + 35)
+#define TB_SETTOOLTIPS (WM_USER + 36)
+#define TB_SETPARENT (WM_USER + 37)
+#define TB_SETROWS (WM_USER + 39)
+#define TB_GETROWS (WM_USER + 40)
+#define TB_SETCMDID (WM_USER + 42)
+#define TB_CHANGEBITMAP (WM_USER + 43)
+#define TB_GETBITMAP (WM_USER + 44)
+#define TB_GETBUTTONTEXTA (WM_USER + 45)
+#define TB_GETBUTTONTEXTW (WM_USER + 75)
+#define TB_REPLACEBITMAP (WM_USER + 46)
+#define TB_SETINDENT (WM_USER + 47)
+#define TB_SETIMAGELIST (WM_USER + 48)
+#define TB_GETIMAGELIST (WM_USER + 49)
+#define TB_LOADIMAGES (WM_USER + 50)
+#define TB_GETRECT (WM_USER + 51) // wParam is the Cmd instead of index
+#define TB_SETHOTIMAGELIST (WM_USER + 52)
+#define TB_GETHOTIMAGELIST (WM_USER + 53)
+#define TB_SETDISABLEDIMAGELIST (WM_USER + 54)
+#define TB_GETDISABLEDIMAGELIST (WM_USER + 55)
+#define TB_SETSTYLE (WM_USER + 56)
+#define TB_GETSTYLE (WM_USER + 57)
+#define TB_GETBUTTONSIZE (WM_USER + 58)
+#define TB_SETBUTTONWIDTH (WM_USER + 59)
+#define TB_SETMAXTEXTROWS (WM_USER + 60)
+#define TB_GETTEXTROWS (WM_USER + 61)
+#ifdef UNICODE
+#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTW
+#define TB_SAVERESTORE TB_SAVERESTOREW
+#define TB_ADDSTRING TB_ADDSTRINGW
+#else
+#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTA
+#define TB_SAVERESTORE TB_SAVERESTOREA
+#define TB_ADDSTRING TB_ADDSTRINGA
+#endif
+
+typedef struct {
+ HINSTANCE hInstOld;
+ UINT nIDOld;
+ HINSTANCE hInstNew;
+ UINT nIDNew;
+ int nButtons;
+} TBREPLACEBITMAP, *LPTBREPLACEBITMAP;
+
+#ifdef _WIN32
+
+#define TBBF_LARGE 0x0001
+
+#define TB_GETBITMAPFLAGS (WM_USER + 41)
+
+#define TBN_GETBUTTONINFOA (TBN_FIRST-0)
+#define TBN_GETBUTTONINFOW (TBN_FIRST-20)
+#define TBN_BEGINDRAG (TBN_FIRST-1)
+#define TBN_ENDDRAG (TBN_FIRST-2)
+#define TBN_BEGINADJUST (TBN_FIRST-3)
+#define TBN_ENDADJUST (TBN_FIRST-4)
+#define TBN_RESET (TBN_FIRST-5)
+#define TBN_QUERYINSERT (TBN_FIRST-6)
+#define TBN_QUERYDELETE (TBN_FIRST-7)
+#define TBN_TOOLBARCHANGE (TBN_FIRST-8)
+#define TBN_CUSTHELP (TBN_FIRST-9)
+#define TBN_DROPDOWN (TBN_FIRST - 10)
+#define TBN_CLOSEUP (TBN_FIRST - 11)
+
+#ifdef UNICODE
+#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOW
+#else
+#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOA
+#endif
+
+typedef struct tagNMTOOLBARA {
+ NMHDR hdr;
+ int iItem;
+ TBBUTTON tbButton;
+ int cchText;
+ LPSTR pszText;
+} NMTOOLBARA, FAR* LPNMTOOLBARA;
+
+
+typedef struct tagNMTOOLBARW {
+ NMHDR hdr;
+ int iItem;
+ TBBUTTON tbButton;
+ int cchText;
+ LPWSTR pszText;
+} NMTOOLBARW, FAR* LPNMTOOLBARW;
+
+#ifdef UNICODE
+#define NMTOOLBAR NMTOOLBARW
+#define LPNMTOOLBAR LPNMTOOLBARW
+#else
+#define NMTOOLBAR NMTOOLBARA
+#define LPNMTOOLBAR LPNMTOOLBARA
+#endif
+
+#define TBNOTIFYA NMTOOLBARA
+#define TBNOTIFYW NMTOOLBARW
+#define TBNOTIFY NMTOOLBAR
+#define LPTBNOTIFY LPNMTOOLBAR
+#define LPTBNOTIFYA LPNMTOOLBARA
+#define LPTBNOTIFYW LPNMTOOLBARW
+
+#endif
+
+#endif
+
+
+//====== REBAR CONTROL ========================================================
+
+#ifndef NOREBAR
+
+#ifdef _WIN32
+#define REBARCLASSNAMEW L"ReBarWindow32"
+#define REBARCLASSNAMEA "ReBarWindow32"
+
+#ifdef UNICODE
+#define REBARCLASSNAME REBARCLASSNAMEW
+#else
+#define REBARCLASSNAME REBARCLASSNAMEA
+#endif
+
+#else
+#define REBARCLASSNAME "ReBarWindow"
+#endif
+
+#define RBIM_IMAGELIST 0x00000001
+
+#define RBS_TOOLTIPS 0x00000100
+#define RBS_VARHEIGHT 0x00000200
+#define RBS_BANDBORDERS 0x00000400
+#define RBS_FIXEDORDER 0x00000800
+
+typedef struct tagREBARINFO
+{
+ UINT cbSize;
+ UINT fMask;
+#ifndef NOIMAGEAPIS
+ HIMAGELIST himl;
+#else
+ HANDLE himl;
+#endif
+} REBARINFO, FAR *LPREBARINFO;
+
+#define RBBS_BREAK 0x00000001 // break to new line
+#define RBBS_FIXEDSIZE 0x00000002 // band can't be sized
+#define RBBS_CHILDEDGE 0x00000004 // edge around top & bottom of child window
+#define RBBS_HIDDEN 0x00000008 // don't show
+#define RBBS_NOVERT 0x00000010 // don't show when vertical
+#define RBBS_FIXEDBMP 0x00000020 // bitmap doesn't move during band resize
+
+#define RBBIM_STYLE 0x00000001
+#define RBBIM_COLORS 0x00000002
+#define RBBIM_TEXT 0x00000004
+#define RBBIM_IMAGE 0x00000008
+#define RBBIM_CHILD 0x00000010
+#define RBBIM_CHILDSIZE 0x00000020
+#define RBBIM_SIZE 0x00000040
+#define RBBIM_BACKGROUND 0x00000080
+#define RBBIM_ID 0x00000100
+
+typedef struct tagREBARBANDINFOA
+{
+ UINT cbSize;
+ UINT fMask;
+ UINT fStyle;
+ COLORREF clrFore;
+ COLORREF clrBack;
+ LPSTR lpText;
+ UINT cch;
+ int iImage;
+ HWND hwndChild;
+ UINT cxMinChild;
+ UINT cyMinChild;
+ UINT cx;
+ HBITMAP hbmBack;
+ UINT wID;
+} REBARBANDINFOA, FAR *LPREBARBANDINFOA;
+typedef REBARBANDINFOA CONST FAR *LPCREBARBANDINFOA;
+
+typedef struct tagREBARBANDINFOW
+{
+ UINT cbSize;
+ UINT fMask;
+ UINT fStyle;
+ COLORREF clrFore;
+ COLORREF clrBack;
+ LPWSTR lpText;
+ UINT cch;
+ int iImage;
+ HWND hwndChild;
+ UINT cxMinChild;
+ UINT cyMinChild;
+ UINT cx;
+ HBITMAP hbmBack;
+ UINT wID;
+} REBARBANDINFOW, FAR *LPREBARBANDINFOW;
+typedef REBARBANDINFOW CONST FAR *LPCREBARBANDINFOW;
+
+#ifdef UNICODE
+#define REBARBANDINFO REBARBANDINFOW
+#define LPREBARBANDINFO LPREBARBANDINFOW
+#define LPCREBARBANDINFO LPCREBARBANDINFOW
+#else
+#define REBARBANDINFO REBARBANDINFOA
+#define LPREBARBANDINFO LPREBARBANDINFOA
+#define LPCREBARBANDINFO LPCREBARBANDINFOA
+#endif
+
+#define RB_INSERTBANDA (WM_USER + 1)
+#define RB_DELETEBAND (WM_USER + 2)
+#define RB_GETBARINFO (WM_USER + 3)
+#define RB_SETBARINFO (WM_USER + 4)
+#define RB_GETBANDINFO (WM_USER + 5)
+#define RB_SETBANDINFOA (WM_USER + 6)
+#define RB_SETPARENT (WM_USER + 7)
+#define RB_INSERTBANDW (WM_USER + 10)
+#define RB_SETBANDINFOW (WM_USER + 11)
+#define RB_GETBANDCOUNT (WM_USER + 12)
+#define RB_GETROWCOUNT (WM_USER + 13)
+#define RB_GETROWHEIGHT (WM_USER + 14)
+
+#ifdef UNICODE
+#define RB_INSERTBAND RB_INSERTBANDW
+#define RB_SETBANDINFO RB_SETBANDINFOW
+#else
+#define RB_INSERTBAND RB_INSERTBANDA
+#define RB_SETBANDINFO RB_SETBANDINFOA
+#endif
+
+#define RBN_HEIGHTCHANGE (RBN_FIRST - 0)
+
+#endif
+
+//====== TOOLTIPS CONTROL =====================================================
+
+#ifndef NOTOOLTIPS
+
+#ifdef _WIN32
+
+#define TOOLTIPS_CLASSW L"tooltips_class32"
+#define TOOLTIPS_CLASSA "tooltips_class32"
+
+#ifdef UNICODE
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSW
+#else
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSA
+#endif
+
+#else
+#define TOOLTIPS_CLASS "tooltips_class"
+#endif
+
+typedef struct tagTOOLINFOA {
+ UINT cbSize;
+ UINT uFlags;
+ HWND hwnd;
+ UINT uId;
+ RECT rect;
+ HINSTANCE hinst;
+ LPSTR lpszText;
+ LPARAM lParam;
+} TTTOOLINFOA, NEAR *PTOOLINFOA, FAR *LPTTTOOLINFOA;
+
+typedef struct tagTOOLINFOW {
+ UINT cbSize;
+ UINT uFlags;
+ HWND hwnd;
+ UINT uId;
+ RECT rect;
+ HINSTANCE hinst;
+ LPWSTR lpszText;
+ LPARAM lParam;
+} TTTOOLINFOW, NEAR *PTOOLINFOW, FAR* LPTTTOOLINFOW;
+
+#ifdef UNICODE
+#define TTTOOLINFO TTTOOLINFOW
+#define PTOOLINFO PTOOLINFOW
+#define LPTTTOOLINFO LPTTTOOLINFOW
+#else
+#define PTOOLINFO PTOOLINFOA
+#define TTTOOLINFO TTTOOLINFOA
+#define LPTTTOOLINFO LPTTTOOLINFOA
+#endif
+
+
+#define LPTOOLINFO LPTTTOOLINFO
+#define LPTOOLINFOA LPTTTOOLINFOA
+#define LPTOOLINFOW LPTTTOOLINFOW
+#define TOOLINFO TTTOOLINFO
+#define TOOLINFOA TTTOOLINFOA
+#define TOOLINFOW TTTOOLINFOW
+
+
+#define TTS_ALWAYSTIP 0x01
+#define TTS_NOPREFIX 0x02
+
+#define TTF_IDISHWND 0x0001
+
+// Use this to center around trackpoint in trackmode
+// -OR- to center around tool in normal mode.
+// Use TTF_ABSOLUTE to place the tip exactly at the track coords when
+// in tracking mode. TTF_ABSOLUTE can be used in conjunction with TTF_CENTERTIP
+// to center the tip absolutely about the track point.
+
+#define TTF_CENTERTIP 0x0002
+#define TTF_RTLREADING 0x0004
+#define TTF_SUBCLASS 0x0010
+#define TTF_TRACK 0x0020
+#define TTF_ABSOLUTE 0x0080
+#define TTF_TRANSPARENT 0x0100
+#define TTF_DI_SETITEM 0x8000 // valid only on the TTN_NEEDTEXT callback
+
+#define TTDT_AUTOMATIC 0
+#define TTDT_RESHOW 1
+#define TTDT_AUTOPOP 2
+#define TTDT_INITIAL 3
+
+#define TTM_ACTIVATE (WM_USER + 1)
+#define TTM_SETDELAYTIME (WM_USER + 3)
+#define TTM_ADDTOOLA (WM_USER + 4)
+#define TTM_ADDTOOLW (WM_USER + 50)
+#define TTM_DELTOOLA (WM_USER + 5)
+#define TTM_DELTOOLW (WM_USER + 51)
+#define TTM_NEWTOOLRECTA (WM_USER + 6)
+#define TTM_NEWTOOLRECTW (WM_USER + 52)
+#define TTM_RELAYEVENT (WM_USER + 7)
+
+#define TTM_GETTOOLINFOA (WM_USER + 8)
+#define TTM_GETTOOLINFOW (WM_USER + 53)
+
+#define TTM_SETTOOLINFOA (WM_USER + 9)
+#define TTM_SETTOOLINFOW (WM_USER + 54)
+
+#define TTM_HITTESTA (WM_USER +10)
+#define TTM_HITTESTW (WM_USER +55)
+#define TTM_GETTEXTA (WM_USER +11)
+#define TTM_GETTEXTW (WM_USER +56)
+#define TTM_UPDATETIPTEXTA (WM_USER +12)
+#define TTM_UPDATETIPTEXTW (WM_USER +57)
+#define TTM_GETTOOLCOUNT (WM_USER +13)
+#define TTM_ENUMTOOLSA (WM_USER +14)
+#define TTM_ENUMTOOLSW (WM_USER +58)
+#define TTM_GETCURRENTTOOLA (WM_USER + 15)
+#define TTM_GETCURRENTTOOLW (WM_USER + 59)
+#define TTM_WINDOWFROMPOINT (WM_USER + 16)
+#define TTM_TRACKACTIVATE (WM_USER + 17) // wParam = TRUE/FALSE start end lparam = LPTOOLINFO
+#define TTM_TRACKPOSITION (WM_USER + 18) // lParam = dwPos
+#define TTM_SETTIPBKCOLOR (WM_USER + 19)
+#define TTM_SETTIPTEXTCOLOR (WM_USER + 20)
+#define TTM_GETDELAYTIME (WM_USER + 21)
+#define TTM_GETTIPBKCOLOR (WM_USER + 22)
+#define TTM_GETTIPTEXTCOLOR (WM_USER + 23)
+#define TTM_SETMAXTIPWIDTH (WM_USER + 24)
+#define TTM_GETMAXTIPWIDTH (WM_USER + 25)
+#define TTM_SETMARGIN (WM_USER + 26) // lParam = lprc
+#define TTM_GETMARGIN (WM_USER + 27) // lParam = lprc
+#define TTM_POP (WM_USER + 28)
+
+
+#ifdef UNICODE
+#define TTM_ADDTOOL TTM_ADDTOOLW
+#define TTM_DELTOOL TTM_DELTOOLW
+#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTW
+#define TTM_GETTOOLINFO TTM_GETTOOLINFOW
+#define TTM_SETTOOLINFO TTM_SETTOOLINFOW
+#define TTM_HITTEST TTM_HITTESTW
+#define TTM_GETTEXT TTM_GETTEXTW
+#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTW
+#define TTM_ENUMTOOLS TTM_ENUMTOOLSW
+#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLW
+#else
+#define TTM_ADDTOOL TTM_ADDTOOLA
+#define TTM_DELTOOL TTM_DELTOOLA
+#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTA
+#define TTM_GETTOOLINFO TTM_GETTOOLINFOA
+#define TTM_SETTOOLINFO TTM_SETTOOLINFOA
+#define TTM_HITTEST TTM_HITTESTA
+#define TTM_GETTEXT TTM_GETTEXTA
+#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTA
+#define TTM_ENUMTOOLS TTM_ENUMTOOLSA
+#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLA
+#endif
+
+
+typedef struct _TT_HITTESTINFOA {
+ HWND hwnd;
+ POINT pt;
+ TTTOOLINFOA ti;
+} TTHITTESTINFOA, FAR * LPTTHITTESTINFOA;
+
+typedef struct _TT_HITTESTINFOW {
+ HWND hwnd;
+ POINT pt;
+ TTTOOLINFOW ti;
+} TTHITTESTINFOW, FAR * LPTTHITTESTINFOW;
+
+#define LPHITTESTINFOW LPTTHITTESTINFOW
+#define LPHITTESTINFOA LPTTHITTESTINFOA
+#define LPHITTESTINFO LPTTHITTESTINFO
+
+#ifdef UNICODE
+#define TTHITTESTINFO TTHITTESTINFOW
+#define LPTTHITTESTINFO LPTTHITTESTINFOW
+#else
+#define TTHITTESTINFO TTHITTESTINFOA
+#define LPTTHITTESTINFO LPTTHITTESTINFOA
+#endif
+
+#define TTN_GETDISPINFOA (TTN_FIRST - 0)
+#define TTN_GETDISPINFOW (TTN_FIRST - 10)
+#define TTN_SHOW (TTN_FIRST - 1)
+#define TTN_POP (TTN_FIRST - 2)
+
+
+#ifdef UNICODE
+#define TTN_GETDISPINFO TTN_GETDISPINFOW
+#else
+#define TTN_GETDISPINFO TTN_GETDISPINFOA
+#endif
+
+#define TTN_NEEDTEXT TTN_GETDISPINFO
+#define TTN_NEEDTEXTA TTN_GETDISPINFOA
+#define TTN_NEEDTEXTW TTN_GETDISPINFOW
+
+
+typedef struct tagNMTTDISPIFNOA {
+ NMHDR hdr;
+ LPSTR lpszText;
+ char szText[80];
+ HINSTANCE hinst;
+ UINT uFlags;
+ LPARAM lParam;
+} NMTTDISPINFOA, FAR *LPNMTTDISPINFOA;
+
+
+typedef struct tagNMTTDISPINFOW {
+ NMHDR hdr;
+ LPWSTR lpszText;
+ WCHAR szText[80];
+ HINSTANCE hinst;
+ UINT uFlags;
+ LPARAM lParam;
+} NMTTDISPINFOW, FAR *LPNMTTDISPINFOW;
+
+#define TOOLTIPTEXTW NMTTDISPINFOW
+#define TOOLTIPTEXTA NMTTDISPINFOA
+#define TOOLTIPTEXT NMTTDISPINFO
+#define LPTOOLTIPTEXT LPNMTTDISPINFO
+#define LPTOOLTIPTEXTA LPNMTTDISPINFOA
+#define LPTOOLTIPTEXTW LPNMTTDISPINFOW
+
+
+#ifdef UNICODE
+#define NMTTDISPINFO NMTTDISPINFOW
+#define LPNMTTDISPINFO LPNMTTDISPINFOW
+#else
+#define NMTTDISPINFO NMTTDISPINFOA
+#define LPNMTTDISPINFO LPNMTTDISPINFOA
+#endif
+
+#endif
+
+
+//====== STATUS BAR CONTROL ===================================================
+
+#ifndef NOSTATUSBAR
+
+#define SBARS_SIZEGRIP 0x0100
+
+
+WINCOMMCTRLAPI void WINAPI DrawStatusTextA(HDC hDC, LPRECT lprc, LPCSTR pszText, UINT uFlags);
+WINCOMMCTRLAPI void WINAPI DrawStatusTextW(HDC hDC, LPRECT lprc, LPCWSTR pszText, UINT uFlags);
+
+WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowA(LONG style, LPCSTR lpszText, HWND hwndParent, UINT wID);
+WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowW(LONG style, LPCWSTR lpszText, HWND hwndParent, UINT wID);
+
+#ifdef UNICODE
+#define CreateStatusWindow CreateStatusWindowW
+#define DrawStatusText DrawStatusTextW
+#else
+#define CreateStatusWindow CreateStatusWindowA
+#define DrawStatusText DrawStatusTextA
+#endif
+
+#ifdef _WIN32
+#define STATUSCLASSNAMEW L"msctls_statusbar32"
+#define STATUSCLASSNAMEA "msctls_statusbar32"
+
+#ifdef UNICODE
+#define STATUSCLASSNAME STATUSCLASSNAMEW
+#else
+#define STATUSCLASSNAME STATUSCLASSNAMEA
+#endif
+
+#else
+#define STATUSCLASSNAME "msctls_statusbar"
+#endif
+
+#define SB_SETTEXTA (WM_USER+1)
+#define SB_SETTEXTW (WM_USER+11)
+#define SB_GETTEXTA (WM_USER+2)
+#define SB_GETTEXTW (WM_USER+13)
+#define SB_GETTEXTLENGTHA (WM_USER+3)
+#define SB_GETTEXTLENGTHW (WM_USER+12)
+
+#ifdef UNICODE
+#define SB_GETTEXT SB_GETTEXTW
+#define SB_SETTEXT SB_SETTEXTW
+#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHW
+#else
+#define SB_GETTEXT SB_GETTEXTA
+#define SB_SETTEXT SB_SETTEXTA
+#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHA
+#endif
+
+
+#define SB_SETPARTS (WM_USER+4)
+#define SB_GETPARTS (WM_USER+6)
+#define SB_GETBORDERS (WM_USER+7)
+#define SB_SETMINHEIGHT (WM_USER+8)
+#define SB_SIMPLE (WM_USER+9)
+#define SB_GETRECT (WM_USER+10)
+#define SB_ISSIMPLE (WM_USER+14)
+
+
+#define SBT_OWNERDRAW 0x1000
+#define SBT_NOBORDERS 0x0100
+#define SBT_POPOUT 0x0200
+#define SBT_RTLREADING 0x0400
+
+#endif
+
+//====== MENU HELP ============================================================
+
+#ifndef NOMENUHELP
+
+WINCOMMCTRLAPI void WINAPI MenuHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, HMENU hMainMenu, HINSTANCE hInst, HWND hwndStatus, UINT FAR *lpwIDs);
+WINCOMMCTRLAPI BOOL WINAPI ShowHideMenuCtl(HWND hWnd, UINT uFlags, LPINT lpInfo);
+WINCOMMCTRLAPI void WINAPI GetEffectiveClientRect(HWND hWnd, LPRECT lprc, LPINT lpInfo);
+
+#define MINSYSCOMMAND SC_SIZE
+
+#endif
+
+
+//====== TRACKBAR CONTROL =====================================================
+
+#ifndef NOTRACKBAR
+
+#ifdef _WIN32
+
+#define TRACKBAR_CLASSA "msctls_trackbar32"
+#define TRACKBAR_CLASSW L"msctls_trackbar32"
+
+#ifdef UNICODE
+#define TRACKBAR_CLASS TRACKBAR_CLASSW
+#else
+#define TRACKBAR_CLASS TRACKBAR_CLASSA
+#endif
+
+#else
+#define TRACKBAR_CLASS "msctls_trackbar"
+#endif
+
+
+#define TBS_AUTOTICKS 0x0001
+#define TBS_VERT 0x0002
+#define TBS_HORZ 0x0000
+#define TBS_TOP 0x0004
+#define TBS_BOTTOM 0x0000
+#define TBS_LEFT 0x0004
+#define TBS_RIGHT 0x0000
+#define TBS_BOTH 0x0008
+#define TBS_NOTICKS 0x0010
+#define TBS_ENABLESELRANGE 0x0020
+#define TBS_FIXEDLENGTH 0x0040
+#define TBS_NOTHUMB 0x0080
+#define TBS_TOOLTIPS 0x0100
+
+#define TBM_GETPOS (WM_USER)
+#define TBM_GETRANGEMIN (WM_USER+1)
+#define TBM_GETRANGEMAX (WM_USER+2)
+#define TBM_GETTIC (WM_USER+3)
+#define TBM_SETTIC (WM_USER+4)
+#define TBM_SETPOS (WM_USER+5)
+#define TBM_SETRANGE (WM_USER+6)
+#define TBM_SETRANGEMIN (WM_USER+7)
+#define TBM_SETRANGEMAX (WM_USER+8)
+#define TBM_CLEARTICS (WM_USER+9)
+#define TBM_SETSEL (WM_USER+10)
+#define TBM_SETSELSTART (WM_USER+11)
+#define TBM_SETSELEND (WM_USER+12)
+#define TBM_GETPTICS (WM_USER+14)
+#define TBM_GETTICPOS (WM_USER+15)
+#define TBM_GETNUMTICS (WM_USER+16)
+#define TBM_GETSELSTART (WM_USER+17)
+#define TBM_GETSELEND (WM_USER+18)
+#define TBM_CLEARSEL (WM_USER+19)
+#define TBM_SETTICFREQ (WM_USER+20)
+#define TBM_SETPAGESIZE (WM_USER+21)
+#define TBM_GETPAGESIZE (WM_USER+22)
+#define TBM_SETLINESIZE (WM_USER+23)
+#define TBM_GETLINESIZE (WM_USER+24)
+#define TBM_GETTHUMBRECT (WM_USER+25)
+#define TBM_GETCHANNELRECT (WM_USER+26)
+#define TBM_SETTHUMBLENGTH (WM_USER+27)
+#define TBM_GETTHUMBLENGTH (WM_USER+28)
+#define TBM_SETTOOLTIPS (WM_USER+29)
+#define TBM_GETTOOLTIPS (WM_USER+30)
+#define TBM_SETTIPSIDE (WM_USER+31)
+// TrackBar Tip Side flags
+#define TBTS_TOP 0
+#define TBTS_LEFT 1
+#define TBTS_BOTTOM 2
+#define TBTS_RIGHT 3
+
+#define TBM_SETBUDDY (WM_USER+32) // wparam = BOOL fLeft; (or right)
+#define TBM_GETBUDDY (WM_USER+33) // wparam = BOOL fLeft; (or right)
+
+
+#define TB_LINEUP 0
+#define TB_LINEDOWN 1
+#define TB_PAGEUP 2
+#define TB_PAGEDOWN 3
+#define TB_THUMBPOSITION 4
+#define TB_THUMBTRACK 5
+#define TB_TOP 6
+#define TB_BOTTOM 7
+#define TB_ENDTRACK 8
+
+
+// custom draw item specs
+#define TBCD_TICS 0x0001
+#define TBCD_THUMB 0x0002
+#define TBCD_CHANNEL 0x0003
+
+#endif // trackbar
+
+//====== DRAG LIST CONTROL ====================================================
+
+#ifndef NODRAGLIST
+
+typedef struct tagDRAGLISTINFO {
+ UINT uNotification;
+ HWND hWnd;
+ POINT ptCursor;
+} DRAGLISTINFO, FAR *LPDRAGLISTINFO;
+
+#define DL_BEGINDRAG (WM_USER+133)
+#define DL_DRAGGING (WM_USER+134)
+#define DL_DROPPED (WM_USER+135)
+#define DL_CANCELDRAG (WM_USER+136)
+
+#define DL_CURSORSET 0
+#define DL_STOPCURSOR 1
+#define DL_COPYCURSOR 2
+#define DL_MOVECURSOR 3
+
+#define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg")
+
+WINCOMMCTRLAPI BOOL WINAPI MakeDragList(HWND hLB);
+WINCOMMCTRLAPI void WINAPI DrawInsert(HWND handParent, HWND hLB, int nItem);
+WINCOMMCTRLAPI int WINAPI LBItemFromPt(HWND hLB, POINT pt, BOOL bAutoScroll);
+
+#endif
+
+
+//====== UPDOWN CONTROL =======================================================
+
+#ifndef NOUPDOWN
+
+#ifdef _WIN32
+
+#define UPDOWN_CLASSA "msctls_updown32"
+#define UPDOWN_CLASSW L"msctls_updown32"
+
+#ifdef UNICODE
+#define UPDOWN_CLASS UPDOWN_CLASSW
+#else
+#define UPDOWN_CLASS UPDOWN_CLASSA
+#endif
+
+#else
+#define UPDOWN_CLASS "msctls_updown"
+#endif
+
+
+typedef struct _UDACCEL {
+ UINT nSec;
+ UINT nInc;
+} UDACCEL, FAR *LPUDACCEL;
+
+#define UD_MAXVAL 0x7fff
+#define UD_MINVAL (-UD_MAXVAL)
+
+
+#define UDS_WRAP 0x0001
+#define UDS_SETBUDDYINT 0x0002
+#define UDS_ALIGNRIGHT 0x0004
+#define UDS_ALIGNLEFT 0x0008
+#define UDS_AUTOBUDDY 0x0010
+#define UDS_ARROWKEYS 0x0020
+#define UDS_HORZ 0x0040
+#define UDS_NOTHOUSANDS 0x0080
+#define UDS_HOTTRACK 0x0100
+
+
+#define UDM_SETRANGE (WM_USER+101)
+#define UDM_GETRANGE (WM_USER+102)
+#define UDM_SETPOS (WM_USER+103)
+#define UDM_GETPOS (WM_USER+104)
+#define UDM_SETBUDDY (WM_USER+105)
+#define UDM_GETBUDDY (WM_USER+106)
+#define UDM_SETACCEL (WM_USER+107)
+#define UDM_GETACCEL (WM_USER+108)
+#define UDM_SETBASE (WM_USER+109)
+#define UDM_GETBASE (WM_USER+110)
+
+
+WINCOMMCTRLAPI HWND WINAPI CreateUpDownControl(DWORD dwStyle, int x, int y, int cx, int cy,
+ HWND hParent, int nID, HINSTANCE hInst,
+ HWND hBuddy,
+ int nUpper, int nLower, int nPos);
+
+typedef struct _NM_UPDOWN
+{
+ NMHDR hdr;
+ int iPos;
+ int iDelta;
+} NMUPDOWN, FAR *LPNMUPDOWN;
+
+#define NM_UPDOWN NMUPDOWN
+#define LPNM_UPDOWN LPNMUPDOWN
+
+#define UDN_DELTAPOS (UDN_FIRST - 1)
+
+#endif
+
+
+//====== PROGRESS CONTROL =====================================================
+
+#ifndef NOPROGRESS
+
+#ifdef _WIN32
+
+#define PROGRESS_CLASSA "msctls_progress32"
+#define PROGRESS_CLASSW L"msctls_progress32"
+
+#ifdef UNICODE
+#define PROGRESS_CLASS PROGRESS_CLASSW
+#else
+#define PROGRESS_CLASS PROGRESS_CLASSA
+#endif
+
+#else
+#define PROGRESS_CLASS "msctls_progress"
+#endif
+
+
+#define PBS_SMOOTH 0x01
+#define PBS_VERTICAL 0x04
+
+#define PBM_SETRANGE (WM_USER+1)
+#define PBM_SETPOS (WM_USER+2)
+#define PBM_DELTAPOS (WM_USER+3)
+#define PBM_SETSTEP (WM_USER+4)
+#define PBM_STEPIT (WM_USER+5)
+#define PBM_SETRANGE32 (WM_USER+6) // lParam = high, wParam = low
+typedef struct
+{
+ int iLow;
+ int iHigh;
+} PBRANGE, *PPBRANGE;
+#define PBM_GETRANGE (WM_USER+7) // wParam = return (TRUE ? low : high). lParam = PPBRANGE or NULL
+#define PBM_GETPOS (WM_USER+8)
+
+#endif
+
+
+//====== HOTKEY CONTROL =======================================================
+
+#ifndef NOHOTKEY
+
+#define HOTKEYF_SHIFT 0x01
+#define HOTKEYF_CONTROL 0x02
+#define HOTKEYF_ALT 0x04
+#define HOTKEYF_EXT 0x08
+
+#define HKCOMB_NONE 0x0001
+#define HKCOMB_S 0x0002
+#define HKCOMB_C 0x0004
+#define HKCOMB_A 0x0008
+#define HKCOMB_SC 0x0010
+#define HKCOMB_SA 0x0020
+#define HKCOMB_CA 0x0040
+#define HKCOMB_SCA 0x0080
+
+
+#define HKM_SETHOTKEY (WM_USER+1)
+#define HKM_GETHOTKEY (WM_USER+2)
+#define HKM_SETRULES (WM_USER+3)
+
+#ifdef _WIN32
+
+#define HOTKEY_CLASSA "msctls_hotkey32"
+#define HOTKEY_CLASSW L"msctls_hotkey32"
+
+#ifdef UNICODE
+#define HOTKEY_CLASS HOTKEY_CLASSW
+#else
+#define HOTKEY_CLASS HOTKEY_CLASSA
+#endif
+
+#else
+#define HOTKEY_CLASS "msctls_hotkey"
+#endif
+
+#endif
+
+
+//====== COMMON CONTROL STYLES ================================================
+
+#define CCS_TOP 0x00000001L
+#define CCS_NOMOVEY 0x00000002L
+#define CCS_BOTTOM 0x00000003L
+#define CCS_NORESIZE 0x00000004L
+#define CCS_NOPARENTALIGN 0x00000008L
+#define CCS_ADJUSTABLE 0x00000020L
+#define CCS_NODIVIDER 0x00000040L
+#define CCS_VERT 0x00000080L
+#define CCS_LEFT (CCS_VERT | CCS_TOP)
+#define CCS_RIGHT (CCS_VERT | CCS_BOTTOM)
+#define CCS_NOMOVEX (CCS_VERT | CCS_NOMOVEY)
+
+
+//====== LISTVIEW CONTROL =====================================================
+
+#ifndef NOLISTVIEW
+
+#ifdef _WIN32
+
+#define WC_LISTVIEWA "SysListView32"
+#define WC_LISTVIEWW L"SysListView32"
+
+#ifdef UNICODE
+#define WC_LISTVIEW WC_LISTVIEWW
+#else
+#define WC_LISTVIEW WC_LISTVIEWA
+#endif
+
+#else
+#define WC_LISTVIEW "SysListView"
+#endif
+
+#define LVS_ICON 0x0000
+#define LVS_REPORT 0x0001
+#define LVS_SMALLICON 0x0002
+#define LVS_LIST 0x0003
+#define LVS_TYPEMASK 0x0003
+#define LVS_SINGLESEL 0x0004
+#define LVS_SHOWSELALWAYS 0x0008
+#define LVS_SORTASCENDING 0x0010
+#define LVS_SORTDESCENDING 0x0020
+#define LVS_SHAREIMAGELISTS 0x0040
+#define LVS_NOLABELWRAP 0x0080
+#define LVS_AUTOARRANGE 0x0100
+#define LVS_EDITLABELS 0x0200
+#define LVS_OWNERDATA 0x1000
+#define LVS_NOSCROLL 0x2000
+
+#define LVS_TYPESTYLEMASK 0xfc00
+
+#define LVS_ALIGNTOP 0x0000
+#define LVS_ALIGNLEFT 0x0800
+#define LVS_ALIGNMASK 0x0c00
+
+#define LVS_OWNERDRAWFIXED 0x0400
+#define LVS_NOCOLUMNHEADER 0x4000
+#define LVS_NOSORTHEADER 0x8000
+
+#define LVM_GETBKCOLOR (LVM_FIRST + 0)
+#define ListView_GetBkColor(hwnd) \
+ (COLORREF)SNDMSG((hwnd), LVM_GETBKCOLOR, 0, 0L)
+
+#define LVM_SETBKCOLOR (LVM_FIRST + 1)
+#define ListView_SetBkColor(hwnd, clrBk) \
+ (BOOL)SNDMSG((hwnd), LVM_SETBKCOLOR, 0, (LPARAM)(COLORREF)(clrBk))
+
+#define LVM_GETIMAGELIST (LVM_FIRST + 2)
+#define ListView_GetImageList(hwnd, iImageList) \
+ (HIMAGELIST)SNDMSG((hwnd), LVM_GETIMAGELIST, (WPARAM)(INT)(iImageList), 0L)
+
+#define LVSIL_NORMAL 0
+#define LVSIL_SMALL 1
+#define LVSIL_STATE 2
+
+#define LVM_SETIMAGELIST (LVM_FIRST + 3)
+#define ListView_SetImageList(hwnd, himl, iImageList) \
+ (HIMAGELIST)(UINT)SNDMSG((hwnd), LVM_SETIMAGELIST, (WPARAM)(iImageList), (LPARAM)(UINT)(HIMAGELIST)(himl))
+
+#define LVM_GETITEMCOUNT (LVM_FIRST + 4)
+#define ListView_GetItemCount(hwnd) \
+ (int)SNDMSG((hwnd), LVM_GETITEMCOUNT, 0, 0L)
+
+
+#define LVIF_TEXT 0x0001
+#define LVIF_IMAGE 0x0002
+#define LVIF_PARAM 0x0004
+#define LVIF_STATE 0x0008
+#define LVIF_INDENT 0x0010
+#define LVIF_NORECOMPUTE 0x0800
+
+#define LVIS_FOCUSED 0x0001
+#define LVIS_SELECTED 0x0002
+#define LVIS_CUT 0x0004
+#define LVIS_DROPHILITED 0x0008
+
+#define LVIS_OVERLAYMASK 0x0F00
+#define LVIS_STATEIMAGEMASK 0xF000
+
+#define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
+#define I_INDENTCALLBACK (-1)
+
+
+typedef struct tagLVITEMA
+{
+ UINT mask;
+ int iItem;
+ int iSubItem;
+ UINT state;
+ UINT stateMask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+ int iIndent;
+} LVITEMA, FAR* LPLVITEMA;
+
+#define LV_ITEMA LVITEMA
+
+typedef struct tagLVITEMW
+{
+ UINT mask;
+ int iItem;
+ int iSubItem;
+ UINT state;
+ UINT stateMask;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+ int iIndent;
+} LVITEMW, FAR* LPLVITEMW;
+
+#define LV_ITEMW LVITEMW
+#define LV_ITEM LVITEM
+
+
+#ifdef UNICODE
+#define LVITEM LVITEMW
+#define LPLVITEM LPLVITEMW
+#else
+#define LVITEM LVITEMA
+#define LPLVITEM LPLVITEMA
+#endif
+
+
+
+#define LPSTR_TEXTCALLBACKW ((LPWSTR)-1L)
+#define LPSTR_TEXTCALLBACKA ((LPSTR)-1L)
+#ifdef UNICODE
+#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW
+#else
+#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA
+#endif
+
+#define I_IMAGECALLBACK (-1)
+
+#define LVM_GETITEMA (LVM_FIRST + 5)
+#define LVM_GETITEMW (LVM_FIRST + 75)
+#ifdef UNICODE
+#define LVM_GETITEM LVM_GETITEMW
+#else
+#define LVM_GETITEM LVM_GETITEMA
+#endif
+
+#define ListView_GetItem(hwnd, pitem) \
+ (BOOL)SNDMSG((hwnd), LVM_GETITEM, 0, (LPARAM)(LV_ITEM FAR*)(pitem))
+
+
+#define LVM_SETITEMA (LVM_FIRST + 6)
+#define LVM_SETITEMW (LVM_FIRST + 76)
+#ifdef UNICODE
+#define LVM_SETITEM LVM_SETITEMW
+#else
+#define LVM_SETITEM LVM_SETITEMA
+#endif
+
+#define ListView_SetItem(hwnd, pitem) \
+ (BOOL)SNDMSG((hwnd), LVM_SETITEM, 0, (LPARAM)(const LV_ITEM FAR*)(pitem))
+
+
+#define LVM_INSERTITEMA (LVM_FIRST + 7)
+#define LVM_INSERTITEMW (LVM_FIRST + 77)
+#ifdef UNICODE
+#define LVM_INSERTITEM LVM_INSERTITEMW
+#else
+#define LVM_INSERTITEM LVM_INSERTITEMA
+#endif
+#define ListView_InsertItem(hwnd, pitem) \
+ (int)SNDMSG((hwnd), LVM_INSERTITEM, 0, (LPARAM)(const LV_ITEM FAR*)(pitem))
+
+
+#define LVM_DELETEITEM (LVM_FIRST + 8)
+#define ListView_DeleteItem(hwnd, i) \
+ (BOOL)SNDMSG((hwnd), LVM_DELETEITEM, (WPARAM)(int)(i), 0L)
+
+
+#define LVM_DELETEALLITEMS (LVM_FIRST + 9)
+#define ListView_DeleteAllItems(hwnd) \
+ (BOOL)SNDMSG((hwnd), LVM_DELETEALLITEMS, 0, 0L)
+
+
+#define LVM_GETCALLBACKMASK (LVM_FIRST + 10)
+#define ListView_GetCallbackMask(hwnd) \
+ (BOOL)SNDMSG((hwnd), LVM_GETCALLBACKMASK, 0, 0)
+
+
+#define LVM_SETCALLBACKMASK (LVM_FIRST + 11)
+#define ListView_SetCallbackMask(hwnd, mask) \
+ (BOOL)SNDMSG((hwnd), LVM_SETCALLBACKMASK, (WPARAM)(UINT)(mask), 0)
+
+
+#define LVNI_ALL 0x0000
+#define LVNI_FOCUSED 0x0001
+#define LVNI_SELECTED 0x0002
+#define LVNI_CUT 0x0004
+#define LVNI_DROPHILITED 0x0008
+
+#define LVNI_ABOVE 0x0100
+#define LVNI_BELOW 0x0200
+#define LVNI_TOLEFT 0x0400
+#define LVNI_TORIGHT 0x0800
+
+
+#define LVM_GETNEXTITEM (LVM_FIRST + 12)
+#define ListView_GetNextItem(hwnd, i, flags) \
+ (int)SNDMSG((hwnd), LVM_GETNEXTITEM, (WPARAM)(int)(i), MAKELPARAM((flags), 0))
+
+
+#define LVFI_PARAM 0x0001
+#define LVFI_STRING 0x0002
+#define LVFI_PARTIAL 0x0008
+#define LVFI_WRAP 0x0020
+#define LVFI_NEARESTXY 0x0040
+
+typedef struct tagLVFINDINFOA
+{
+ UINT flags;
+ LPCSTR psz;
+ LPARAM lParam;
+ POINT pt;
+ UINT vkDirection;
+} LVFINDINFOA, FAR* LPFINDINFOA;
+
+#define LV_FINDINFOA LVFINDINFOA
+
+typedef struct tagLVFINDINFOW
+{
+ UINT flags;
+ LPCWSTR psz;
+ LPARAM lParam;
+ POINT pt;
+ UINT vkDirection;
+} LVFINDINFOW, FAR* LPFINDINFOW;
+
+#define LV_FINDINFOW LVFINDINFOW
+#define LV_FINDINFO LVFINDINFO
+
+#ifdef UNICODE
+#define LVFINDINFO LVFINDINFOW
+#else
+#define LVFINDINFO LVFINDINFOA
+#endif
+
+#define LVM_FINDITEMA (LVM_FIRST + 13)
+#define LVM_FINDITEMW (LVM_FIRST + 83)
+#ifdef UNICODE
+#define LVM_FINDITEM LVM_FINDITEMW
+#else
+#define LVM_FINDITEM LVM_FINDITEMA
+#endif
+
+#define ListView_FindItem(hwnd, iStart, plvfi) \
+ (int)SNDMSG((hwnd), LVM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const LV_FINDINFO FAR*)(plvfi))
+
+#define LVIR_BOUNDS 0
+#define LVIR_ICON 1
+#define LVIR_LABEL 2
+#define LVIR_SELECTBOUNDS 3
+
+
+#define LVM_GETITEMRECT (LVM_FIRST + 14)
+#define ListView_GetItemRect(hwnd, i, prc, code) \
+ (BOOL)SNDMSG((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i), \
+ ((prc) ? (((RECT FAR *)(prc))->left = (code),(LPARAM)(RECT FAR*)(prc)) : (LPARAM)(RECT FAR*)NULL))
+
+
+#define LVM_SETITEMPOSITION (LVM_FIRST + 15)
+#define ListView_SetItemPosition(hwndLV, i, x, y) \
+ (BOOL)SNDMSG((hwndLV), LVM_SETITEMPOSITION, (WPARAM)(int)(i), MAKELPARAM((x), (y)))
+
+
+#define LVM_GETITEMPOSITION (LVM_FIRST + 16)
+#define ListView_GetItemPosition(hwndLV, i, ppt) \
+ (BOOL)SNDMSG((hwndLV), LVM_GETITEMPOSITION, (WPARAM)(int)(i), (LPARAM)(POINT FAR*)(ppt))
+
+
+#define LVM_GETSTRINGWIDTHA (LVM_FIRST + 17)
+#define LVM_GETSTRINGWIDTHW (LVM_FIRST + 87)
+#ifdef UNICODE
+#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHW
+#else
+#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHA
+#endif
+
+#define ListView_GetStringWidth(hwndLV, psz) \
+ (int)SNDMSG((hwndLV), LVM_GETSTRINGWIDTH, 0, (LPARAM)(LPCTSTR)(psz))
+
+
+#define LVHT_NOWHERE 0x0001
+#define LVHT_ONITEMICON 0x0002
+#define LVHT_ONITEMLABEL 0x0004
+#define LVHT_ONITEMSTATEICON 0x0008
+#define LVHT_ONITEM (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON)
+
+#define LVHT_ABOVE 0x0008
+#define LVHT_BELOW 0x0010
+#define LVHT_TORIGHT 0x0020
+#define LVHT_TOLEFT 0x0040
+
+typedef struct tagLVHITTESTINFO
+{
+ POINT pt;
+ UINT flags;
+ int iItem;
+
+ int iSubItem; // this is was NOT in win95. valid only for LVM_SUBITEMHITTEST
+} LVHITTESTINFO, FAR* LPLVHITTESTINFO;
+#define LV_HITTESTINFO LVHITTESTINFO
+
+#define LVM_HITTEST (LVM_FIRST + 18)
+#define ListView_HitTest(hwndLV, pinfo) \
+ (int)SNDMSG((hwndLV), LVM_HITTEST, 0, (LPARAM)(LV_HITTESTINFO FAR*)(pinfo))
+
+
+#define LVM_ENSUREVISIBLE (LVM_FIRST + 19)
+#define ListView_EnsureVisible(hwndLV, i, fPartialOK) \
+ (BOOL)SNDMSG((hwndLV), LVM_ENSUREVISIBLE, (WPARAM)(int)(i), MAKELPARAM((fPartialOK), 0))
+
+
+#define LVM_SCROLL (LVM_FIRST + 20)
+#define ListView_Scroll(hwndLV, dx, dy) \
+ (BOOL)SNDMSG((hwndLV), LVM_SCROLL, (WPARAM)(int)dx, (LPARAM)(int)dy)
+
+
+#define LVM_REDRAWITEMS (LVM_FIRST + 21)
+#define ListView_RedrawItems(hwndLV, iFirst, iLast) \
+ (BOOL)SNDMSG((hwndLV), LVM_REDRAWITEMS, (WPARAM)(int)iFirst, (LPARAM)(int)iLast)
+
+
+#define LVA_DEFAULT 0x0000
+#define LVA_ALIGNLEFT 0x0001
+#define LVA_ALIGNTOP 0x0002
+#define LVA_SNAPTOGRID 0x0005
+
+
+#define LVM_ARRANGE (LVM_FIRST + 22)
+#define ListView_Arrange(hwndLV, code) \
+ (BOOL)SNDMSG((hwndLV), LVM_ARRANGE, (WPARAM)(UINT)(code), 0L)
+
+
+#define LVM_EDITLABELA (LVM_FIRST + 23)
+#define LVM_EDITLABELW (LVM_FIRST + 118)
+#ifdef UNICODE
+#define LVM_EDITLABEL LVM_EDITLABELW
+#else
+#define LVM_EDITLABEL LVM_EDITLABELA
+#endif
+
+#define ListView_EditLabel(hwndLV, i) \
+ (HWND)SNDMSG((hwndLV), LVM_EDITLABEL, (WPARAM)(int)(i), 0L)
+
+
+#define LVM_GETEDITCONTROL (LVM_FIRST + 24)
+#define ListView_GetEditControl(hwndLV) \
+ (HWND)SNDMSG((hwndLV), LVM_GETEDITCONTROL, 0, 0L)
+
+
+typedef struct tagLVCOLUMNA
+{
+ UINT mask;
+ int fmt;
+ int cx;
+ LPSTR pszText;
+ int cchTextMax;
+ int iSubItem;
+ int iImage;
+ int iOrder;
+} LVCOLUMNA, FAR* LPLVCOLUMNA;
+
+typedef struct tagLVCOLUMNW
+{
+ UINT mask;
+ int fmt;
+ int cx;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iSubItem;
+ int iImage;
+ int iOrder;
+} LVCOLUMNW, FAR* LPLVCOLUMNW;
+
+#ifdef UNICODE
+#define LVCOLUMN LVCOLUMNW
+#define LPLVCOLUMN LPLVCOLUMNW
+#else
+#define LVCOLUMN LVCOLUMNA
+#define LPLVCOLUMN LPLVCOLUMNA
+#endif
+
+#define LV_COLUMN LVCOLUMN
+#define LV_COLUMNA LVCOLUMNA
+#define LV_COLUMNW LVCOLUMNW
+
+
+#define LVCF_FMT 0x0001
+#define LVCF_WIDTH 0x0002
+#define LVCF_TEXT 0x0004
+#define LVCF_SUBITEM 0x0008
+#define LVCF_IMAGE 0x0010
+#define LVCF_ORDER 0x0020
+
+#define LVCFMT_LEFT 0x0000
+#define LVCFMT_RIGHT 0x0001
+#define LVCFMT_CENTER 0x0002
+#define LVCFMT_JUSTIFYMASK 0x0003
+#define LVCFMT_IMAGE 0x0800
+#define LVCFMT_BITMAP_ON_RIGHT 0x1000
+#define LVCFMT_COL_HAS_IMAGES 0x8000
+
+
+#define LVM_GETCOLUMNA (LVM_FIRST + 25)
+#define LVM_GETCOLUMNW (LVM_FIRST + 95)
+#ifdef UNICODE
+#define LVM_GETCOLUMN LVM_GETCOLUMNW
+#else
+#define LVM_GETCOLUMN LVM_GETCOLUMNA
+#endif
+
+#define ListView_GetColumn(hwnd, iCol, pcol) \
+ (BOOL)SNDMSG((hwnd), LVM_GETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(LV_COLUMN FAR*)(pcol))
+
+
+#define LVM_SETCOLUMNA (LVM_FIRST + 26)
+#define LVM_SETCOLUMNW (LVM_FIRST + 96)
+#ifdef UNICODE
+#define LVM_SETCOLUMN LVM_SETCOLUMNW
+#else
+#define LVM_SETCOLUMN LVM_SETCOLUMNA
+#endif
+
+#define ListView_SetColumn(hwnd, iCol, pcol) \
+ (BOOL)SNDMSG((hwnd), LVM_SETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN FAR*)(pcol))
+
+
+#define LVM_INSERTCOLUMNA (LVM_FIRST + 27)
+#define LVM_INSERTCOLUMNW (LVM_FIRST + 97)
+#ifdef UNICODE
+# define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW
+#else
+# define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA
+#endif
+
+#define ListView_InsertColumn(hwnd, iCol, pcol) \
+ (int)SNDMSG((hwnd), LVM_INSERTCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN FAR*)(pcol))
+
+
+#define LVM_DELETECOLUMN (LVM_FIRST + 28)
+#define ListView_DeleteColumn(hwnd, iCol) \
+ (BOOL)SNDMSG((hwnd), LVM_DELETECOLUMN, (WPARAM)(int)(iCol), 0)
+
+
+#define LVM_GETCOLUMNWIDTH (LVM_FIRST + 29)
+#define ListView_GetColumnWidth(hwnd, iCol) \
+ (int)SNDMSG((hwnd), LVM_GETCOLUMNWIDTH, (WPARAM)(int)(iCol), 0)
+
+
+#define LVSCW_AUTOSIZE -1
+#define LVSCW_AUTOSIZE_USEHEADER -2
+#define LVM_SETCOLUMNWIDTH (LVM_FIRST + 30)
+
+#define ListView_SetColumnWidth(hwnd, iCol, cx) \
+ (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNWIDTH, (WPARAM)(int)(iCol), MAKELPARAM((cx), 0))
+
+#define LVM_GETHEADER (LVM_FIRST + 31)
+#define ListView_GetHeader(hwnd)\
+ (HWND)SNDMSG((hwnd), LVM_GETHEADER, 0, 0L)
+
+
+#define LVM_CREATEDRAGIMAGE (LVM_FIRST + 33)
+#define ListView_CreateDragImage(hwnd, i, lpptUpLeft) \
+ (HIMAGELIST)SNDMSG((hwnd), LVM_CREATEDRAGIMAGE, (WPARAM)(int)(i), (LPARAM)(LPPOINT)(lpptUpLeft))
+
+
+#define LVM_GETVIEWRECT (LVM_FIRST + 34)
+#define ListView_GetViewRect(hwnd, prc) \
+ (BOOL)SNDMSG((hwnd), LVM_GETVIEWRECT, 0, (LPARAM)(RECT FAR*)(prc))
+
+
+#define LVM_GETTEXTCOLOR (LVM_FIRST + 35)
+#define ListView_GetTextColor(hwnd) \
+ (COLORREF)SNDMSG((hwnd), LVM_GETTEXTCOLOR, 0, 0L)
+
+
+#define LVM_SETTEXTCOLOR (LVM_FIRST + 36)
+#define ListView_SetTextColor(hwnd, clrText) \
+ (BOOL)SNDMSG((hwnd), LVM_SETTEXTCOLOR, 0, (LPARAM)(COLORREF)(clrText))
+
+
+#define LVM_GETTEXTBKCOLOR (LVM_FIRST + 37)
+#define ListView_GetTextBkColor(hwnd) \
+ (COLORREF)SNDMSG((hwnd), LVM_GETTEXTBKCOLOR, 0, 0L)
+
+
+#define LVM_SETTEXTBKCOLOR (LVM_FIRST + 38)
+#define ListView_SetTextBkColor(hwnd, clrTextBk) \
+ (BOOL)SNDMSG((hwnd), LVM_SETTEXTBKCOLOR, 0, (LPARAM)(COLORREF)(clrTextBk))
+
+
+#define LVM_GETTOPINDEX (LVM_FIRST + 39)
+#define ListView_GetTopIndex(hwndLV) \
+ (int)SNDMSG((hwndLV), LVM_GETTOPINDEX, 0, 0)
+
+
+#define LVM_GETCOUNTPERPAGE (LVM_FIRST + 40)
+#define ListView_GetCountPerPage(hwndLV) \
+ (int)SNDMSG((hwndLV), LVM_GETCOUNTPERPAGE, 0, 0)
+
+
+#define LVM_GETORIGIN (LVM_FIRST + 41)
+#define ListView_GetOrigin(hwndLV, ppt) \
+ (BOOL)SNDMSG((hwndLV), LVM_GETORIGIN, (WPARAM)0, (LPARAM)(POINT FAR*)(ppt))
+
+
+#define LVM_UPDATE (LVM_FIRST + 42)
+#define ListView_Update(hwndLV, i) \
+ (BOOL)SNDMSG((hwndLV), LVM_UPDATE, (WPARAM)i, 0L)
+
+
+#define LVM_SETITEMSTATE (LVM_FIRST + 43)
+#define ListView_SetItemState(hwndLV, i, data, mask) \
+{ LV_ITEM _ms_lvi;\
+ _ms_lvi.stateMask = mask;\
+ _ms_lvi.state = data;\
+ SNDMSG((hwndLV), LVM_SETITEMSTATE, (WPARAM)i, (LPARAM)(LV_ITEM FAR *)&_ms_lvi);\
+}
+
+
+#define LVM_GETITEMSTATE (LVM_FIRST + 44)
+#define ListView_GetItemState(hwndLV, i, mask) \
+ (UINT)SNDMSG((hwndLV), LVM_GETITEMSTATE, (WPARAM)i, (LPARAM)mask)
+
+#define ListView_GetCheckState(hwndLV, i) \
+ ((((UINT)(SNDMSG((hwndLV), LVM_GETITEMSTATE, (WPARAM)i, LVIS_STATEIMAGEMASK))) >> 12) -1)
+
+
+#define LVM_GETITEMTEXTA (LVM_FIRST + 45)
+#define LVM_GETITEMTEXTW (LVM_FIRST + 115)
+
+#ifdef UNICODE
+#define LVM_GETITEMTEXT LVM_GETITEMTEXTW
+#else
+#define LVM_GETITEMTEXT LVM_GETITEMTEXTA
+#endif
+
+#define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_) \
+{ LV_ITEM _ms_lvi;\
+ _ms_lvi.iSubItem = iSubItem_;\
+ _ms_lvi.cchTextMax = cchTextMax_;\
+ _ms_lvi.pszText = pszText_;\
+ SNDMSG((hwndLV), LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)(LV_ITEM FAR *)&_ms_lvi);\
+}
+
+
+#define LVM_SETITEMTEXTA (LVM_FIRST + 46)
+#define LVM_SETITEMTEXTW (LVM_FIRST + 116)
+
+#ifdef UNICODE
+#define LVM_SETITEMTEXT LVM_SETITEMTEXTW
+#else
+#define LVM_SETITEMTEXT LVM_SETITEMTEXTA
+#endif
+
+#define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_) \
+{ LV_ITEM _ms_lvi;\
+ _ms_lvi.iSubItem = iSubItem_;\
+ _ms_lvi.pszText = pszText_;\
+ SNDMSG((hwndLV), LVM_SETITEMTEXT, (WPARAM)i, (LPARAM)(LV_ITEM FAR *)&_ms_lvi);\
+}
+
+// these flags only apply to LVS_OWNERDATA listviews in report or list mode
+#define LVSICF_NOINVALIDATEALL 0x00000001
+#define LVSICF_NOSCROLL 0x00000002
+
+#define LVM_SETITEMCOUNT (LVM_FIRST + 47)
+#define ListView_SetItemCount(hwndLV, cItems) \
+ SNDMSG((hwndLV), LVM_SETITEMCOUNT, (WPARAM)cItems, 0)
+
+#define ListView_SetItemCountEx(hwndLV, cItems, dwFlags) \
+ SNDMSG((hwndLV), LVM_SETITEMCOUNT, (WPARAM)cItems, (LPARAM)dwFlags)
+
+typedef int (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
+
+
+#define LVM_SORTITEMS (LVM_FIRST + 48)
+#define ListView_SortItems(hwndLV, _pfnCompare, _lPrm) \
+ (BOOL)SNDMSG((hwndLV), LVM_SORTITEMS, (WPARAM)(LPARAM)_lPrm, \
+ (LPARAM)(PFNLVCOMPARE)_pfnCompare)
+
+
+#define LVM_SETITEMPOSITION32 (LVM_FIRST + 49)
+#define ListView_SetItemPosition32(hwndLV, i, x, y) \
+{ POINT ptNewPos = {x,y}; \
+ SNDMSG((hwndLV), LVM_SETITEMPOSITION32, (WPARAM)(int)(i), (LPARAM)&ptNewPos); \
+}
+
+
+#define LVM_GETSELECTEDCOUNT (LVM_FIRST + 50)
+#define ListView_GetSelectedCount(hwndLV) \
+ (UINT)SNDMSG((hwndLV), LVM_GETSELECTEDCOUNT, 0, 0L)
+
+
+#define LVM_GETITEMSPACING (LVM_FIRST + 51)
+#define ListView_GetItemSpacing(hwndLV, fSmall) \
+ (DWORD)SNDMSG((hwndLV), LVM_GETITEMSPACING, fSmall, 0L)
+
+
+#define LVM_GETISEARCHSTRINGA (LVM_FIRST + 52)
+#define LVM_GETISEARCHSTRINGW (LVM_FIRST + 117)
+
+#ifdef UNICODE
+#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGW
+#else
+#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGA
+#endif
+
+#define ListView_GetISearchString(hwndLV, lpsz) \
+ (BOOL)SNDMSG((hwndLV), LVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)lpsz)
+
+#define LVM_SETICONSPACING (LVM_FIRST + 53)
+// -1 for cx and cy means we'll use the default (system settings)
+// 0 for cx or cy means use the current setting (allows you to change just one param)
+#define ListView_SetIconSpacing(hwndLV, cx, cy) \
+ (DWORD)SNDMSG((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy))
+
+
+#define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST + 54)
+#define ListView_SetExtendedListViewStyle(hwndLV, dw)\
+ (DWORD)SNDMSG((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw)
+
+#define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST + 55)
+#define ListView_GetExtendedListViewStyle(hwndLV)\
+ (DWORD)SNDMSG((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
+
+#define LVS_EX_GRIDLINES 0x00000001
+#define LVS_EX_SUBITEMIMAGES 0x00000002
+#define LVS_EX_CHECKBOXES 0x00000004
+#define LVS_EX_TRACKSELECT 0x00000008
+#define LVS_EX_HEADERDRAGDROP 0x00000010
+#define LVS_EX_FULLROWSELECT 0x00000020 // applies to report mode only
+#define LVS_EX_ONECLICKACTIVATE 0x00000040
+#define LVS_EX_TWOCLICKACTIVATE 0x00000080
+
+
+#define LVM_GETSUBITEMRECT (LVM_FIRST + 56)
+#define ListView_GetSubItemRect(hwnd, iItem, iSubItem, code, prc) \
+ (BOOL)SNDMSG((hwnd), LVM_GETSUBITEMRECT, (WPARAM)(int)(iItem), \
+ ((prc) ? ((((LPRECT)(prc))->top = iSubItem), (((LPRECT)(prc))->left = code), (LPARAM)(prc)) : (LPARAM)(LPRECT)NULL))
+
+#define LVM_SUBITEMHITTEST (LVM_FIRST + 57)
+#define ListView_SubItemHitTest(hwnd, plvhti) \
+ (int)SNDMSG((hwnd), LVM_SUBITEMHITTEST, 0, (LPARAM)(LPLVHITTESTINFO)(plvhti))
+
+#define LVM_SETCOLUMNORDERARRAY (LVM_FIRST + 58)
+#define ListView_SetColumnOrderArray(hwnd, iCount, pi) \
+ (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNORDERARRAY, (WPARAM)iCount, (LPARAM)(LPINT)pi)
+
+#define LVM_GETCOLUMNORDERARRAY (LVM_FIRST + 59)
+#define ListView_GetColumnOrderArray(hwnd, iCount, pi) \
+ (BOOL)SNDMSG((hwnd), LVM_GETCOLUMNORDERARRAY, (WPARAM)iCount, (LPARAM)(LPINT)pi)
+
+#define LVM_SETHOTITEM (LVM_FIRST + 60)
+#define ListView_SetHotItem(hwnd, i) \
+ (int)SNDMSG((hwnd), LVM_SETHOTITEM, (WPARAM)i, 0)
+
+#define LVM_GETHOTITEM (LVM_FIRST + 61)
+#define ListView_GetHotItem(hwnd) \
+ (int)SNDMSG((hwnd), LVM_GETHOTITEM, 0, 0)
+
+#define LVM_SETHOTCURSOR (LVM_FIRST + 62)
+#define ListView_SetHotCursor(hwnd, hcur) \
+ (HCURSOR)SNDMSG((hwnd), LVM_SETHOTCURSOR, 0, (LPARAM)hcur)
+
+#define LVM_GETHOTCURSOR (LVM_FIRST + 63)
+#define ListView_GetHotCursor(hwnd) \
+ (HCURSOR)SNDMSG((hwnd), LVM_GETHOTCURSOR, 0, 0)
+
+#define LVM_APPROXIMATEVIEWRECT (LVM_FIRST + 64)
+#define ListView_ApproximateViewRect(hwnd, iWidth, iHeight, iCount) \
+ (DWORD)SNDMSG((hwnd), LVM_APPROXIMATEVIEWRECT, iCount, MAKELPARAM(iWidth, iHeight))
+
+#define LVM_SETWORKAREA (LVM_FIRST + 65)
+#define ListView_SetWorkArea(hwnd, prc) \
+ (BOOL)SNDMSG((hwnd), LVM_SETWORKAREA, 0, (LPARAM)(RECT FAR*)(prc))
+
+typedef struct tagNMLISTVIEW
+{
+ NMHDR hdr;
+ int iItem;
+ int iSubItem;
+ UINT uNewState;
+ UINT uOldState;
+ UINT uChanged;
+ POINT ptAction;
+ LPARAM lParam;
+} NMLISTVIEW, FAR *LPNMLISTVIEW;
+
+#define LPNM_LISTVIEW LPNMLISTVIEW
+#define NM_LISTVIEW NMLISTVIEW
+
+typedef struct tagNMLVCUSTOMDRAW
+{
+ NMCUSTOMDRAW nmcd;
+ COLORREF clrText;
+ COLORREF clrTextBk;
+} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW;
+
+typedef struct tagNMLVCACHEHINT
+{
+ NMHDR hdr;
+ int iFrom;
+ int iTo;
+} NMLVCACHEHINT, FAR *LPNMLVCACHEHINT;
+
+#define LPNM_CACHEHINT LPNMLVCACHEHINT
+#define PNM_CACHEHINT LPNMLVCACHEHINT
+#define NM_CACHEHINT NMLVCACHEHINT
+
+typedef struct tagNMLVFINDITEM
+{
+ NMHDR hdr;
+ int iStart;
+ LVFINDINFO lvfi;
+} NMLVFINDITEM, FAR *LPNMLVFINDITEM;
+
+#define PNM_FINDITEM LPNMLVFINDITEM
+#define LPNM_FINDITEM LPNMLVFINDITEM
+#define NM_FINDITEM NMLVFINDITEM
+
+typedef struct tagNMLVODSTATECHANGE
+{
+ NMHDR hdr;
+ int iFrom;
+ int iTo;
+ UINT uNewState;
+ UINT uOldState;
+} NMLVODSTATECHANGE, FAR *LPNMLVODSTATECHANGE;
+
+#define PNM_ODSTATECHANGE LPNMLVODSTATECHANGE
+#define LPNM_ODSTATECHANGE LPNMLVODSTATECHANGE
+#define NM_ODSTATECHANGE NMLVODSTATECHANGE
+
+
+#define LVN_ITEMCHANGING (LVN_FIRST-0)
+#define LVN_ITEMCHANGED (LVN_FIRST-1)
+#define LVN_INSERTITEM (LVN_FIRST-2)
+#define LVN_DELETEITEM (LVN_FIRST-3)
+#define LVN_DELETEALLITEMS (LVN_FIRST-4)
+#define LVN_BEGINLABELEDITA (LVN_FIRST-5)
+#define LVN_BEGINLABELEDITW (LVN_FIRST-75)
+#define LVN_ENDLABELEDITA (LVN_FIRST-6)
+#define LVN_ENDLABELEDITW (LVN_FIRST-76)
+#define LVN_COLUMNCLICK (LVN_FIRST-8)
+#define LVN_BEGINDRAG (LVN_FIRST-9)
+#define LVN_BEGINRDRAG (LVN_FIRST-11)
+
+#define LVN_ODCACHEHINT (LVN_FIRST-13)
+#define LVN_ODFINDITEMA (LVN_FIRST-52)
+#define LVN_ODFINDITEMW (LVN_FIRST-79)
+
+#define LVN_ITEMACTIVATE (LVN_FIRST-14)
+#define LVN_ODSTATECHANGED (LVN_FIRST-15)
+
+#ifdef UNICODE
+#define LVN_ODFINDITEM LVN_ODFINDITEMW
+#else
+#define LVN_ODFINDITEM LVN_ODFINDITEMA
+#endif
+
+
+
+#define LVN_GETDISPINFOA (LVN_FIRST-50)
+#define LVN_GETDISPINFOW (LVN_FIRST-77)
+#define LVN_SETDISPINFOA (LVN_FIRST-51)
+#define LVN_SETDISPINFOW (LVN_FIRST-78)
+
+#ifdef UNICODE
+#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITW
+#define LVN_ENDLABELEDIT LVN_ENDLABELEDITW
+#define LVN_GETDISPINFO LVN_GETDISPINFOW
+#define LVN_SETDISPINFO LVN_SETDISPINFOW
+#else
+#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITA
+#define LVN_ENDLABELEDIT LVN_ENDLABELEDITA
+#define LVN_GETDISPINFO LVN_GETDISPINFOA
+#define LVN_SETDISPINFO LVN_SETDISPINFOA
+#endif
+
+
+
+
+#define LVIF_DI_SETITEM 0x1000
+
+typedef struct tagLVDISPINFO {
+ NMHDR hdr;
+ LVITEMA item;
+} NMLVDISPINFOA, FAR *LPNMLVDISPINFOA;
+
+typedef struct tagLVDISPINFOW {
+ NMHDR hdr;
+ LVITEMW item;
+} NMLVDISPINFOW, FAR * LPNMLVDISPINFOW;
+
+#define LV_DISPINFOA NMLVDISPINFOA
+#define LV_DISPINFOW NMLVDISPINFOW
+#define LV_DISPINFO NMLVDISPINFO
+
+#ifdef UNICODE
+#define NMLVDISPINFO NMLVDISPINFOW
+#else
+#define NMLVDISPINFO NMLVDISPINFOA
+#endif
+
+#define LVN_KEYDOWN (LVN_FIRST-55)
+
+typedef struct tagLVKEYDOWN
+{
+ NMHDR hdr;
+ WORD wVKey;
+ UINT flags;
+} NMLVKEYDOWN, FAR *LPNMLVKEYDOWN;
+#define LV_KEYDOWN NMLVKEYDOWN
+
+#define LVN_MARQUEEBEGIN (LVN_FIRST-56)
+
+#endif
+
+//====== TREEVIEW CONTROL =====================================================
+
+#ifndef NOTREEVIEW
+
+#ifdef _WIN32
+#define WC_TREEVIEWA "SysTreeView32"
+#define WC_TREEVIEWW L"SysTreeView32"
+
+#ifdef UNICODE
+#define WC_TREEVIEW WC_TREEVIEWW
+#else
+#define WC_TREEVIEW WC_TREEVIEWA
+#endif
+
+#else
+#define WC_TREEVIEW "SysTreeView"
+#endif
+
+#define TVS_HASBUTTONS 0x0001
+#define TVS_HASLINES 0x0002
+#define TVS_LINESATROOT 0x0004
+#define TVS_EDITLABELS 0x0008
+#define TVS_DISABLEDRAGDROP 0x0010
+#define TVS_SHOWSELALWAYS 0x0020
+#define TVS_RTLREADING 0x0040
+
+#define TVS_NOTOOLTIPS 0x0080
+#define TVS_CHECKBOXES 0x0100
+#define TVS_TRACKSELECT 0x0200
+
+#define TVS_SHAREDIMAGELISTS 0x0000
+#define TVS_PRIVATEIMAGELISTS 0x0400
+
+typedef struct _TREEITEM FAR* HTREEITEM;
+
+#define TVIF_TEXT 0x0001
+#define TVIF_IMAGE 0x0002
+#define TVIF_PARAM 0x0004
+#define TVIF_STATE 0x0008
+#define TVIF_HANDLE 0x0010
+#define TVIF_SELECTEDIMAGE 0x0020
+#define TVIF_CHILDREN 0x0040
+
+#define TVIS_SELECTED 0x0002
+#define TVIS_CUT 0x0004
+#define TVIS_DROPHILITED 0x0008
+#define TVIS_BOLD 0x0010
+#define TVIS_EXPANDED 0x0020
+#define TVIS_EXPANDEDONCE 0x0040
+#define TVIS_EXPANDPARTIAL 0x0080
+
+#define TVIS_OVERLAYMASK 0x0F00
+#define TVIS_STATEIMAGEMASK 0xF000
+#define TVIS_USERMASK 0xF000
+
+
+#define I_CHILDRENCALLBACK (-1)
+
+typedef struct tagTVITEMA {
+ UINT mask;
+ HTREEITEM hItem;
+ UINT state;
+ UINT stateMask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int cChildren;
+ LPARAM lParam;
+} TVITEMA, FAR *LPTVITEMA;
+
+typedef struct tagTVITEMW {
+ UINT mask;
+ HTREEITEM hItem;
+ UINT state;
+ UINT stateMask;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int cChildren;
+ LPARAM lParam;
+} TVITEMW, FAR *LPTVITEMW;
+
+#define LPTV_ITEMW LPTVITEMW
+#define LPTV_ITEMA LPTVITEMA
+#define LPTV_ITEM LPTVITEM
+#define TV_ITEMW TVITEMW
+#define TV_ITEMA TVITEMA
+#define TV_ITEM TVITEM
+
+#ifdef UNICODE
+#define TVITEM TVITEMW
+#define LPTVITEM LPTVITEMW
+#else
+#define TVITEM TVITEMA
+#define LPTVITEM LPTVITEMA
+#endif
+
+
+#define TVI_ROOT ((HTREEITEM)0xFFFF0000)
+#define TVI_FIRST ((HTREEITEM)0xFFFF0001)
+#define TVI_LAST ((HTREEITEM)0xFFFF0002)
+#define TVI_SORT ((HTREEITEM)0xFFFF0003)
+
+typedef struct tagTVINSERTSTRUCTA {
+ HTREEITEM hParent;
+ HTREEITEM hInsertAfter;
+ TV_ITEMA item;
+} TVINSERTSTRUCTA, FAR *LPTVINSERTSTRUCTA;
+
+typedef struct tagTVINSERTSTRUCTW {
+ HTREEITEM hParent;
+ HTREEITEM hInsertAfter;
+ TV_ITEMW item;
+} TVINSERTSTRUCTW, FAR *LPTVINSERTSTRUCTW;
+
+#define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA
+#define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW
+#define LPTV_INSERTSTRUCT LPTVINSERTSTRUCT
+#define TV_INSERTSTRUCTA TVINSERTSTRUCTA
+#define TV_INSERTSTRUCTW TVINSERTSTRUCTW
+#define TV_INSERTSTRUCT TVINSERTSTRUCT
+
+#ifdef UNICODE
+#define TVINSERTSTRUCT TVINSERTSTRUCTW
+#define LPTVINSERTSTRUCT LPTVINSERTSTRUCTW
+#else
+#define TVINSERTSTRUCT TVINSERTSTRUCTA
+#define LPTVINSERTSTRUCT LPTVINSERTSTRUCTA
+#endif
+
+#define TVM_INSERTITEMA (TV_FIRST + 0)
+#define TVM_INSERTITEMW (TV_FIRST + 50)
+#ifdef UNICODE
+#define TVM_INSERTITEM TVM_INSERTITEMW
+#else
+#define TVM_INSERTITEM TVM_INSERTITEMA
+#endif
+
+#define TreeView_InsertItem(hwnd, lpis) \
+ (HTREEITEM)SNDMSG((hwnd), TVM_INSERTITEM, 0, (LPARAM)(LPTV_INSERTSTRUCT)(lpis))
+
+
+#define TVM_DELETEITEM (TV_FIRST + 1)
+#define TreeView_DeleteItem(hwnd, hitem) \
+ (BOOL)SNDMSG((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TreeView_DeleteAllItems(hwnd) \
+ (BOOL)SNDMSG((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT)
+
+
+#define TVM_EXPAND (TV_FIRST + 2)
+#define TreeView_Expand(hwnd, hitem, code) \
+ (BOOL)SNDMSG((hwnd), TVM_EXPAND, (WPARAM)code, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVE_COLLAPSE 0x0001
+#define TVE_EXPAND 0x0002
+#define TVE_TOGGLE 0x0003
+#define TVE_EXPANDPARTIAL 0x4000
+#define TVE_COLLAPSERESET 0x8000
+
+
+#define TVM_GETITEMRECT (TV_FIRST + 4)
+#define TreeView_GetItemRect(hwnd, hitem, prc, code) \
+ (*(HTREEITEM FAR *)prc = (hitem), (BOOL)SNDMSG((hwnd), TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT FAR*)(prc)))
+
+
+#define TVM_GETCOUNT (TV_FIRST + 5)
+#define TreeView_GetCount(hwnd) \
+ (UINT)SNDMSG((hwnd), TVM_GETCOUNT, 0, 0)
+
+
+#define TVM_GETINDENT (TV_FIRST + 6)
+#define TreeView_GetIndent(hwnd) \
+ (UINT)SNDMSG((hwnd), TVM_GETINDENT, 0, 0)
+
+
+#define TVM_SETINDENT (TV_FIRST + 7)
+#define TreeView_SetIndent(hwnd, indent) \
+ (BOOL)SNDMSG((hwnd), TVM_SETINDENT, (WPARAM)indent, 0)
+
+
+#define TVM_GETIMAGELIST (TV_FIRST + 8)
+#define TreeView_GetImageList(hwnd, iImage) \
+ (HIMAGELIST)SNDMSG((hwnd), TVM_GETIMAGELIST, iImage, 0)
+
+
+#define TVSIL_NORMAL 0
+#define TVSIL_STATE 2
+
+
+#define TVM_SETIMAGELIST (TV_FIRST + 9)
+#define TreeView_SetImageList(hwnd, himl, iImage) \
+ (HIMAGELIST)SNDMSG((hwnd), TVM_SETIMAGELIST, iImage, (LPARAM)(UINT)(HIMAGELIST)(himl))
+
+
+#define TVM_GETNEXTITEM (TV_FIRST + 10)
+#define TreeView_GetNextItem(hwnd, hitem, code) \
+ (HTREEITEM)SNDMSG((hwnd), TVM_GETNEXTITEM, (WPARAM)code, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVGN_ROOT 0x0000
+#define TVGN_NEXT 0x0001
+#define TVGN_PREVIOUS 0x0002
+#define TVGN_PARENT 0x0003
+#define TVGN_CHILD 0x0004
+#define TVGN_FIRSTVISIBLE 0x0005
+#define TVGN_NEXTVISIBLE 0x0006
+#define TVGN_PREVIOUSVISIBLE 0x0007
+#define TVGN_DROPHILITE 0x0008
+#define TVGN_CARET 0x0009
+
+#define TreeView_GetChild(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD)
+#define TreeView_GetNextSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)
+#define TreeView_GetPrevSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS)
+#define TreeView_GetParent(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT)
+#define TreeView_GetFirstVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
+#define TreeView_GetNextVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)
+#define TreeView_GetPrevVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE)
+#define TreeView_GetSelection(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_CARET)
+#define TreeView_GetDropHilight(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
+#define TreeView_GetRoot(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT)
+
+
+#define TVM_SELECTITEM (TV_FIRST + 11)
+#define TreeView_Select(hwnd, hitem, code) \
+ (HTREEITEM)SNDMSG((hwnd), TVM_SELECTITEM, (WPARAM)code, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TreeView_SelectItem(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_CARET)
+#define TreeView_SelectDropTarget(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
+#define TreeView_SelectSetFirstVisible(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
+
+
+#define TVM_GETITEMA (TV_FIRST + 12)
+#define TVM_GETITEMW (TV_FIRST + 62)
+
+#ifdef UNICODE
+#define TVM_GETITEM TVM_GETITEMW
+#else
+#define TVM_GETITEM TVM_GETITEMA
+#endif
+
+#define TreeView_GetItem(hwnd, pitem) \
+ (BOOL)SNDMSG((hwnd), TVM_GETITEM, 0, (LPARAM)(TV_ITEM FAR*)(pitem))
+
+
+#define TVM_SETITEMA (TV_FIRST + 13)
+#define TVM_SETITEMW (TV_FIRST + 63)
+
+#ifdef UNICODE
+#define TVM_SETITEM TVM_SETITEMW
+#else
+#define TVM_SETITEM TVM_SETITEMA
+#endif
+
+#define TreeView_SetItem(hwnd, pitem) \
+ (BOOL)SNDMSG((hwnd), TVM_SETITEM, 0, (LPARAM)(const TV_ITEM FAR*)(pitem))
+
+
+#define TVM_EDITLABELA (TV_FIRST + 14)
+#define TVM_EDITLABELW (TV_FIRST + 65)
+#ifdef UNICODE
+#define TVM_EDITLABEL TVM_EDITLABELW
+#else
+#define TVM_EDITLABEL TVM_EDITLABELA
+#endif
+
+#define TreeView_EditLabel(hwnd, hitem) \
+ (HWND)SNDMSG((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVM_GETEDITCONTROL (TV_FIRST + 15)
+#define TreeView_GetEditControl(hwnd) \
+ (HWND)SNDMSG((hwnd), TVM_GETEDITCONTROL, 0, 0)
+
+
+#define TVM_GETVISIBLECOUNT (TV_FIRST + 16)
+#define TreeView_GetVisibleCount(hwnd) \
+ (UINT)SNDMSG((hwnd), TVM_GETVISIBLECOUNT, 0, 0)
+
+
+#define TVM_HITTEST (TV_FIRST + 17)
+#define TreeView_HitTest(hwnd, lpht) \
+ (HTREEITEM)SNDMSG((hwnd), TVM_HITTEST, 0, (LPARAM)(LPTV_HITTESTINFO)(lpht))
+
+
+typedef struct tagTVHITTESTINFO {
+ POINT pt;
+ UINT flags;
+ HTREEITEM hItem;
+} TVHITTESTINFO, FAR *LPTVHITTESTINFO;
+#define LPTV_HITTESTINFO LPTVHITTESTINFO
+#define TV_HITTESTINFO TVHITTESTINFO
+
+#define TVHT_NOWHERE 0x0001
+#define TVHT_ONITEMICON 0x0002
+#define TVHT_ONITEMLABEL 0x0004
+#define TVHT_ONITEM (TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON)
+#define TVHT_ONITEMINDENT 0x0008
+#define TVHT_ONITEMBUTTON 0x0010
+#define TVHT_ONITEMRIGHT 0x0020
+#define TVHT_ONITEMSTATEICON 0x0040
+
+#define TVHT_ABOVE 0x0100
+#define TVHT_BELOW 0x0200
+#define TVHT_TORIGHT 0x0400
+#define TVHT_TOLEFT 0x0800
+
+
+#define TVM_CREATEDRAGIMAGE (TV_FIRST + 18)
+#define TreeView_CreateDragImage(hwnd, hitem) \
+ (HIMAGELIST)SNDMSG((hwnd), TVM_CREATEDRAGIMAGE, 0, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVM_SORTCHILDREN (TV_FIRST + 19)
+#define TreeView_SortChildren(hwnd, hitem, recurse) \
+ (BOOL)SNDMSG((hwnd), TVM_SORTCHILDREN, (WPARAM)recurse, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVM_ENSUREVISIBLE (TV_FIRST + 20)
+#define TreeView_EnsureVisible(hwnd, hitem) \
+ (BOOL)SNDMSG((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVM_SORTCHILDRENCB (TV_FIRST + 21)
+#define TreeView_SortChildrenCB(hwnd, psort, recurse) \
+ (BOOL)SNDMSG((hwnd), TVM_SORTCHILDRENCB, (WPARAM)recurse, \
+ (LPARAM)(LPTV_SORTCB)(psort))
+
+
+#define TVM_ENDEDITLABELNOW (TV_FIRST + 22)
+#define TreeView_EndEditLabelNow(hwnd, fCancel) \
+ (BOOL)SNDMSG((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)fCancel, 0)
+
+
+#define TVM_GETISEARCHSTRINGA (TV_FIRST + 23)
+#define TVM_GETISEARCHSTRINGW (TV_FIRST + 64)
+
+#ifdef UNICODE
+#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGW
+#else
+#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGA
+#endif
+
+#define TVM_SETTOOLTIPS (TV_FIRST + 24)
+#define TVM_GETTOOLTIPS (TV_FIRST + 25)
+
+#define TreeView_GetISearchString(hwndTV, lpsz) \
+ (BOOL)SNDMSG((hwndTV), TVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)lpsz)
+
+
+typedef int (CALLBACK *PFNTVCOMPARE)(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
+typedef struct tagTVSORTCB
+{
+ HTREEITEM hParent;
+ PFNTVCOMPARE lpfnCompare;
+ LPARAM lParam;
+} TVSORTCB, FAR *LPTVSORTCB;
+#define LPTV_SORTCB LPTVSORTCB
+#define TV_SORTCB TVSORTCB
+
+
+typedef struct tagNMTREEVIEWA {
+ NMHDR hdr;
+ UINT action;
+ TVITEMA itemOld;
+ TVITEMA itemNew;
+ POINT ptDrag;
+} NMTREEVIEWA, FAR *LPNMTREEVIEWA;
+
+
+typedef struct tagNMTREEVIEWW {
+ NMHDR hdr;
+ UINT action;
+ TVITEMW itemOld;
+ TVITEMW itemNew;
+ POINT ptDrag;
+} NMTREEVIEWW, FAR *LPNMTREEVIEWW;
+
+#define LPNM_TREEVIEWA LPNMTREEVIEWA
+#define LPNM_TREEVIEWW LPNMTREEVIEWW
+#define LPNM_TREEVIEW LPNMTREEVIEW
+#define NM_TREEVIEWW NMTREEVIEWW
+#define NM_TREEVIEWA NMTREEVIEWA
+#define NM_TREEVIEW NMTREEVIEW
+
+#ifdef UNICODE
+#define NMTREEVIEW NMTREEVIEWW
+#define LPNMTREEVIEW LPNMTREEVIEWW
+#else
+#define NMTREEVIEW NMTREEVIEWA
+#define LPNMTREEVIEW LPNMTREEVIEWA
+#endif
+
+
+#define TVN_SELCHANGINGA (TVN_FIRST-1)
+#define TVN_SELCHANGINGW (TVN_FIRST-50)
+#define TVN_SELCHANGEDA (TVN_FIRST-2)
+#define TVN_SELCHANGEDW (TVN_FIRST-51)
+
+#define TVC_UNKNOWN 0x0000
+#define TVC_BYMOUSE 0x0001
+#define TVC_BYKEYBOARD 0x0002
+
+#define TVN_GETDISPINFOA (TVN_FIRST-3)
+#define TVN_GETDISPINFOW (TVN_FIRST-52)
+#define TVN_SETDISPINFOA (TVN_FIRST-4)
+#define TVN_SETDISPINFOW (TVN_FIRST-53)
+
+#define TVIF_DI_SETITEM 0x1000
+
+typedef struct tagTVDISPINFOA {
+ NMHDR hdr;
+ TVITEMA item;
+} NMTVDISPINFOA, FAR *LPNMTVDISPINFOA;
+
+typedef struct tagTVDISPINFOW {
+ NMHDR hdr;
+ TVITEMW item;
+} NMTVDISPINFOW, FAR *LPNMTVDISPINFOW;
+
+#define TV_DISPINFOA NMTVDISPINFOA
+#define TV_DISPINFOW NMTVDISPINFOW
+#define TV_DISPINFO NMTVDISPINFO
+
+#ifdef UNICODE
+#define NMTVDISPINFO NMTVDISPINFOW
+#define LPNMTVDISPINFO LPNMTVDISPINFOW
+#else
+#define NMTVDISPINFO NMTVDISPINFOA
+#define LPNMTVDISPINFO LPNMTVDISPINFOA
+#endif
+
+#define TVN_ITEMEXPANDINGA (TVN_FIRST-5)
+#define TVN_ITEMEXPANDINGW (TVN_FIRST-54)
+#define TVN_ITEMEXPANDEDA (TVN_FIRST-6)
+#define TVN_ITEMEXPANDEDW (TVN_FIRST-55)
+#define TVN_BEGINDRAGA (TVN_FIRST-7)
+#define TVN_BEGINDRAGW (TVN_FIRST-56)
+#define TVN_BEGINRDRAGA (TVN_FIRST-8)
+#define TVN_BEGINRDRAGW (TVN_FIRST-57)
+#define TVN_DELETEITEMA (TVN_FIRST-9)
+#define TVN_DELETEITEMW (TVN_FIRST-58)
+#define TVN_BEGINLABELEDITA (TVN_FIRST-10)
+#define TVN_BEGINLABELEDITW (TVN_FIRST-59)
+#define TVN_ENDLABELEDITA (TVN_FIRST-11)
+#define TVN_ENDLABELEDITW (TVN_FIRST-60)
+#define TVN_KEYDOWN (TVN_FIRST-12)
+
+typedef struct tagTVKEYDOWN {
+ NMHDR hdr;
+ WORD wVKey;
+ UINT flags;
+} NMTVKEYDOWN, FAR *LPNMTVKEYDOWN;
+
+#define TV_KEYDOWN NMTVKEYDOWN
+
+#ifdef UNICODE
+#define TVN_SELCHANGING TVN_SELCHANGINGW
+#define TVN_SELCHANGED TVN_SELCHANGEDW
+#define TVN_GETDISPINFO TVN_GETDISPINFOW
+#define TVN_SETDISPINFO TVN_SETDISPINFOW
+#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW
+#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW
+#define TVN_BEGINDRAG TVN_BEGINDRAGW
+#define TVN_BEGINRDRAG TVN_BEGINRDRAGW
+#define TVN_DELETEITEM TVN_DELETEITEMW
+#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW
+#define TVN_ENDLABELEDIT TVN_ENDLABELEDITW
+#else
+#define TVN_SELCHANGING TVN_SELCHANGINGA
+#define TVN_SELCHANGED TVN_SELCHANGEDA
+#define TVN_GETDISPINFO TVN_GETDISPINFOA
+#define TVN_SETDISPINFO TVN_SETDISPINFOA
+#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA
+#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA
+#define TVN_BEGINDRAG TVN_BEGINDRAGA
+#define TVN_BEGINRDRAG TVN_BEGINRDRAGA
+#define TVN_DELETEITEM TVN_DELETEITEMA
+#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA
+#define TVN_ENDLABELEDIT TVN_ENDLABELEDITA
+#endif
+
+typedef struct tagNMTVCUSTOMDRAW
+{
+ NMCUSTOMDRAW nmcd;
+ COLORREF clrText;
+ COLORREF clrTextBk;
+} NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW;
+
+#endif
+
+
+#ifndef NOUSEREXCONTROLS
+
+//////////////////// ComboBoxEx ////////////////////////////////
+
+
+#define WC_COMBOBOXEXW L"ComboBoxEx32"
+#define WC_COMBOBOXEXA "ComboBoxEx32"
+
+#ifdef UNICODE
+#define WC_COMBOBOXEX WC_COMBOBOXEXW
+#else
+#define WC_COMBOBOXEX WC_COMBOBOXEXA
+#endif
+
+
+#define CBEIF_TEXT 0x00000001
+#define CBEIF_IMAGE 0x00000002
+#define CBEIF_SELECTEDIMAGE 0x00000004
+#define CBEIF_OVERLAY 0x00000008
+#define CBEIF_INDENT 0x00000010
+#define CBEIF_LPARAM 0x00000020
+
+#define CBEIF_DI_SETITEM 0x10000000
+
+typedef struct tagCOMBOBOXEXITEMA
+{
+ UINT mask;
+ int iItem;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int iOverlay;
+ int iIndent;
+ LPARAM lParam;
+} COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA;
+typedef COMBOBOXEXITEMA CONST *PCCOMBOEXITEMA;
+
+
+typedef struct tagCOMBOBOXEXITEMW
+{
+ UINT mask;
+ int iItem;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int iOverlay;
+ int iIndent;
+ LPARAM lParam;
+} COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW;
+typedef COMBOBOXEXITEMW CONST *PCCOMBOEXITEMW;
+
+#ifdef UNICODE
+#define COMBOBOXEXITEM COMBOBOXEXITEMW
+#define PCOMBOBOXEXITEM PCOMBOBOXEXITEMW
+#define PCCOMBOBOXEXITEM PCCOMBOBOXEXITEMW
+#else
+#define COMBOBOXEXITEM COMBOBOXEXITEMA
+#define PCOMBOBOXEXITEM PCOMBOBOXEXITEMA
+#define PCCOMBOBOXEXITEM PCCOMBOBOXEXITEMA
+#endif
+
+#define CBEM_INSERTITEMA (WM_USER + 1)
+#define CBEM_SETIMAGELIST (WM_USER + 2)
+#define CBEM_GETIMAGELIST (WM_USER + 3)
+#define CBEM_GETITEMA (WM_USER + 4)
+#define CBEM_SETITEMA (WM_USER + 5)
+#define CBEM_DELETEITEM CB_DELETESTRING
+#define CBEM_GETCOMBOCONTROL (WM_USER + 6)
+#define CBEM_GETEDITCONTROL (WM_USER + 7)
+#define CBEM_SETEXSTYLE (WM_USER + 8)
+#define CBEM_GETEXSTYLE (WM_USER + 9)
+#define CBEM_HASEDITCHANGED (WM_USER + 10)
+#define CBEM_INSERTITEMW (WM_USER + 11)
+#define CBEM_SETITEMW (WM_USER + 12)
+#define CBEM_GETITEMW (WM_USER + 13)
+
+#ifdef UNICODE
+#define CBEM_INSERTITEM CBEM_INSERTITEMW
+#define CBEM_SETITEM CBEM_SETITEMW
+#define CBEM_GETITEM CBEM_GETITEMW
+#else
+#define CBEM_INSERTITEM CBEM_INSERTITEMA
+#define CBEM_SETITEM CBEM_SETITEMA
+#define CBEM_GETITEM CBEM_GETITEMA
+#endif
+
+#define CBES_EX_NOEDITIMAGE 0x00000001
+#define CBES_EX_NOEDITIMAGEINDENT 0x00000002
+#define CBES_EX_PATHWORDBREAKPROC 0x00000004
+
+
+typedef struct {
+ NMHDR hdr;
+ COMBOBOXEXITEM ceItem;
+} NMCOMBOBOXEX, *PNMCOMBOBOXEX;
+
+
+#define CBEN_GETDISPINFO (CBEN_FIRST - 0)
+#define CBEN_INSERTITEM (CBEN_FIRST - 1)
+#define CBEN_DELETEITEM (CBEN_FIRST - 2)
+#define CBEN_BEGINEDIT (CBEN_FIRST - 4)
+#define CBEN_ENDEDITA (CBEN_FIRST - 5)
+#define CBEN_ENDEDITW (CBEN_FIRST - 6)
+ // lParam specifies why the endedit is happening
+#ifdef UNICODE
+#define CBEN_ENDEDIT CBEN_ENDEDITW
+#else
+#define CBEN_ENDEDIT CBEN_ENDEDITA
+#endif
+#define CBENF_KILLFOCUS 1
+#define CBENF_RETURN 2
+#define CBENF_ESCAPE 3
+#define CBENF_DROPDOWN 4
+
+#define CBEMAXSTRLEN 260
+
+// CBEN_ENDEDIT sends this information...
+// fChanged if the user actually did anything
+// iNewSelection gives what would be the new selection unless the notify is failed
+// iNewSelection may be CB_ERR if there's no match
+typedef struct {
+ NMHDR hdr;
+ BOOL fChanged;
+ int iNewSelection;
+ WCHAR szText[CBEMAXSTRLEN];
+ int iWhy;
+} NMCBEENDEDITW, *PNMCBEENDEDITW;
+
+typedef struct {
+ NMHDR hdr;
+ BOOL fChanged;
+ int iNewSelection;
+ char szText[CBEMAXSTRLEN];
+ int iWhy;
+} NMCBEENDEDITA, *PNMCBEENDEDITA;
+
+#ifdef UNICODE
+#define NMCBEENDEDIT NMCBEENDEDITW
+#define PNMCBEENDEDIT PNMCBEENDEDITW
+#else
+#define NMCBEENDEDIT NMCBEENDEDITA
+#define PNMCBEENDEDIT PNMCBEENDEDITA
+#endif
+
+#endif
+
+
+
+//====== TAB CONTROL ==========================================================
+
+#ifndef NOTABCONTROL
+
+#ifdef _WIN32
+
+#define WC_TABCONTROLA "SysTabControl32"
+#define WC_TABCONTROLW L"SysTabControl32"
+
+#ifdef UNICODE
+#define WC_TABCONTROL WC_TABCONTROLW
+#else
+#define WC_TABCONTROL WC_TABCONTROLA
+#endif
+
+#else
+#define WC_TABCONTROL "SysTabControl"
+#endif
+
+
+#define TCS_SCROLLOPPOSITE 0x0001 // assumes multiline tab
+#define TCS_BOTTOM 0x0002
+#define TCS_RIGHT 0x0002
+#define TCS_MULTISELECT 0x0004 // allow multi-select in button mode
+#define TCS_FORCEICONLEFT 0x0010
+#define TCS_FORCELABELLEFT 0x0020
+#define TCS_HOTTRACK 0x0040
+#define TCS_VERTICAL 0x0080
+#define TCS_TABS 0x0000
+#define TCS_BUTTONS 0x0100
+#define TCS_SINGLELINE 0x0000
+#define TCS_MULTILINE 0x0200
+#define TCS_RIGHTJUSTIFY 0x0000
+#define TCS_FIXEDWIDTH 0x0400
+#define TCS_RAGGEDRIGHT 0x0800
+#define TCS_FOCUSONBUTTONDOWN 0x1000
+#define TCS_OWNERDRAWFIXED 0x2000
+#define TCS_TOOLTIPS 0x4000
+#define TCS_FOCUSNEVER 0x8000
+
+#define TCM_FIRST 0x1300
+
+
+
+
+
+#define TCM_GETIMAGELIST (TCM_FIRST + 2)
+#define TabCtrl_GetImageList(hwnd) \
+ (HIMAGELIST)SNDMSG((hwnd), TCM_GETIMAGELIST, 0, 0L)
+
+
+#define TCM_SETIMAGELIST (TCM_FIRST + 3)
+#define TabCtrl_SetImageList(hwnd, himl) \
+ (HIMAGELIST)SNDMSG((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(UINT)(HIMAGELIST)(himl))
+
+
+#define TCM_GETITEMCOUNT (TCM_FIRST + 4)
+#define TabCtrl_GetItemCount(hwnd) \
+ (int)SNDMSG((hwnd), TCM_GETITEMCOUNT, 0, 0L)
+
+
+
+#define TCIF_TEXT 0x0001
+#define TCIF_IMAGE 0x0002
+#define TCIF_RTLREADING 0x0004
+#define TCIF_PARAM 0x0008
+#define TCIF_STATE 0x0010
+
+
+#define TCIS_BUTTONPRESSED 0x0001
+
+typedef struct tagTCITEMHEADERA
+{
+ UINT mask;
+ UINT lpReserved1;
+ UINT lpReserved2;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+} TCITEMHEADERA, FAR *LPTCITEMHEADERA;
+
+typedef struct tagTCITEMHEADERW
+{
+ UINT mask;
+ UINT lpReserved1;
+ UINT lpReserved2;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+} TCITEMHEADERW, FAR *LPTCITEMHEADERW;
+
+#define TC_ITEMHEADERA TCITEMHEADERA
+#define TC_ITEMHEADERW TCITEMHEADERW
+#define TC_ITEMHEADER TCITEMHEADER
+
+#ifdef UNICODE
+#define TCITEMHEADER TCITEMHEADERW
+#define LPTCITEMHEADER LPTCITEMHEADERW
+#else
+#define TCITEMHEADER TCITEMHEADERA
+#define LPTCITEMHEADER LPTCITEMHEADERA
+#endif
+
+
+typedef struct tagTCITEMA
+{
+ UINT mask;
+ DWORD dwState;
+ DWORD dwStateMask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+
+ LPARAM lParam;
+} TCITEMA, FAR *LPTCITEMA;
+
+typedef struct tagTCITEMW
+{
+ UINT mask;
+ DWORD dwState;
+ DWORD dwStateMask;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+
+ LPARAM lParam;
+} TCITEMW, FAR *LPTCITEMW;
+
+#define TC_ITEMA TCITEMA
+#define TC_ITEMW TCITEMW
+#define TC_ITEM TCITEM
+
+#ifdef UNICODE
+#define TCITEM TCITEMW
+#define LPTCITEM LPTCITEMW
+#else
+#define TCITEM TCITEMA
+#define LPTCITEM LPTCITEMA
+#endif
+
+
+#define TCM_GETITEMA (TCM_FIRST + 5)
+#define TCM_GETITEMW (TCM_FIRST + 60)
+
+#ifdef UNICODE
+#define TCM_GETITEM TCM_GETITEMW
+#else
+#define TCM_GETITEM TCM_GETITEMA
+#endif
+
+#define TabCtrl_GetItem(hwnd, iItem, pitem) \
+ (BOOL)SNDMSG((hwnd), TCM_GETITEM, (WPARAM)(int)iItem, (LPARAM)(TC_ITEM FAR*)(pitem))
+
+
+#define TCM_SETITEMA (TCM_FIRST + 6)
+#define TCM_SETITEMW (TCM_FIRST + 61)
+
+#ifdef UNICODE
+#define TCM_SETITEM TCM_SETITEMW
+#else
+#define TCM_SETITEM TCM_SETITEMA
+#endif
+
+#define TabCtrl_SetItem(hwnd, iItem, pitem) \
+ (BOOL)SNDMSG((hwnd), TCM_SETITEM, (WPARAM)(int)iItem, (LPARAM)(TC_ITEM FAR*)(pitem))
+
+
+#define TCM_INSERTITEMA (TCM_FIRST + 7)
+#define TCM_INSERTITEMW (TCM_FIRST + 62)
+
+#ifdef UNICODE
+#define TCM_INSERTITEM TCM_INSERTITEMW
+#else
+#define TCM_INSERTITEM TCM_INSERTITEMA
+#endif
+
+#define TabCtrl_InsertItem(hwnd, iItem, pitem) \
+ (int)SNDMSG((hwnd), TCM_INSERTITEM, (WPARAM)(int)iItem, (LPARAM)(const TC_ITEM FAR*)(pitem))
+
+
+#define TCM_DELETEITEM (TCM_FIRST + 8)
+#define TabCtrl_DeleteItem(hwnd, i) \
+ (BOOL)SNDMSG((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L)
+
+
+#define TCM_DELETEALLITEMS (TCM_FIRST + 9)
+#define TabCtrl_DeleteAllItems(hwnd) \
+ (BOOL)SNDMSG((hwnd), TCM_DELETEALLITEMS, 0, 0L)
+
+
+#define TCM_GETITEMRECT (TCM_FIRST + 10)
+#define TabCtrl_GetItemRect(hwnd, i, prc) \
+ (BOOL)SNDMSG((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT FAR*)(prc))
+
+
+#define TCM_GETCURSEL (TCM_FIRST + 11)
+#define TabCtrl_GetCurSel(hwnd) \
+ (int)SNDMSG((hwnd), TCM_GETCURSEL, 0, 0)
+
+
+#define TCM_SETCURSEL (TCM_FIRST + 12)
+#define TabCtrl_SetCurSel(hwnd, i) \
+ (int)SNDMSG((hwnd), TCM_SETCURSEL, (WPARAM)i, 0)
+
+
+#define TCHT_NOWHERE 0x0001
+#define TCHT_ONITEMICON 0x0002
+#define TCHT_ONITEMLABEL 0x0004
+#define TCHT_ONITEM (TCHT_ONITEMICON | TCHT_ONITEMLABEL)
+
+
+typedef struct tagTCHITTESTINFO
+{
+ POINT pt;
+ UINT flags;
+} TCHITTESTINFO, FAR * LPTCHITTESTINFO;
+#define LPTC_HITTESTINFO LPTCHITTESTINFO
+#define TC_HITTESTINFO TCHITTESTINFO
+
+
+#define TCM_HITTEST (TCM_FIRST + 13)
+#define TabCtrl_HitTest(hwndTC, pinfo) \
+ (int)SNDMSG((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO FAR*)(pinfo))
+
+
+#define TCM_SETITEMEXTRA (TCM_FIRST + 14)
+#define TabCtrl_SetItemExtra(hwndTC, cb) \
+ (BOOL)SNDMSG((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L)
+
+
+#define TCM_ADJUSTRECT (TCM_FIRST + 40)
+#define TabCtrl_AdjustRect(hwnd, bLarger, prc) \
+ (int)SNDMSG(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)bLarger, (LPARAM)(RECT FAR *)prc)
+
+
+#define TCM_SETITEMSIZE (TCM_FIRST + 41)
+#define TabCtrl_SetItemSize(hwnd, x, y) \
+ (DWORD)SNDMSG((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y))
+
+
+#define TCM_REMOVEIMAGE (TCM_FIRST + 42)
+#define TabCtrl_RemoveImage(hwnd, i) \
+ (void)SNDMSG((hwnd), TCM_REMOVEIMAGE, i, 0L)
+
+
+#define TCM_SETPADDING (TCM_FIRST + 43)
+#define TabCtrl_SetPadding(hwnd, cx, cy) \
+ (void)SNDMSG((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
+
+
+#define TCM_GETROWCOUNT (TCM_FIRST + 44)
+#define TabCtrl_GetRowCount(hwnd) \
+ (int)SNDMSG((hwnd), TCM_GETROWCOUNT, 0, 0L)
+
+
+#define TCM_GETTOOLTIPS (TCM_FIRST + 45)
+#define TabCtrl_GetToolTips(hwnd) \
+ (HWND)SNDMSG((hwnd), TCM_GETTOOLTIPS, 0, 0L)
+
+
+#define TCM_SETTOOLTIPS (TCM_FIRST + 46)
+#define TabCtrl_SetToolTips(hwnd, hwndTT) \
+ (void)SNDMSG((hwnd), TCM_SETTOOLTIPS, (WPARAM)hwndTT, 0L)
+
+
+#define TCM_GETCURFOCUS (TCM_FIRST + 47)
+#define TabCtrl_GetCurFocus(hwnd) \
+ (int)SNDMSG((hwnd), TCM_GETCURFOCUS, 0, 0)
+
+#define TCM_SETCURFOCUS (TCM_FIRST + 48)
+#define TabCtrl_SetCurFocus(hwnd, i) \
+ SNDMSG((hwnd),TCM_SETCURFOCUS, i, 0)
+
+#define TCM_SETMINTABWIDTH (TCM_FIRST + 49)
+#define TabCtrl_SetMinTabWidth(hwnd, x) \
+ (int)SNDMSG((hwnd), TCM_SETMINTABWIDTH, 0, x)
+
+
+#define TCM_DESELECTALL (TCM_FIRST + 50)
+#define TabCtrl_DeselectAll(hwnd, fExcludeFocus)\
+ (void)SNDMSG((hwnd), TCM_DESELECTALL, fExcludeFocus, 0)
+
+#define TCN_KEYDOWN (TCN_FIRST - 0)
+typedef struct tagTCKEYDOWN
+{
+ NMHDR hdr;
+ WORD wVKey;
+ UINT flags;
+} NMTCKEYDOWN;
+#define TC_KEYDOWN NMTCKEYDOWN
+
+#define TCN_SELCHANGE (TCN_FIRST - 1)
+#define TCN_SELCHANGING (TCN_FIRST - 2)
+
+#endif
+
+
+
+
+//====== ANIMATE CONTROL ======================================================
+
+#ifndef NOANIMATE
+
+#ifdef _WIN32
+
+#define ANIMATE_CLASSW L"SysAnimate32"
+#define ANIMATE_CLASSA "SysAnimate32"
+
+#ifdef UNICODE
+#define ANIMATE_CLASS ANIMATE_CLASSW
+#else
+#define ANIMATE_CLASS ANIMATE_CLASSA
+#endif
+
+#define ACS_CENTER 0x0001
+#define ACS_TRANSPARENT 0x0002
+#define ACS_AUTOPLAY 0x0004
+#define ACS_TIMER 0x0008 // don't use threads... use timers
+
+
+#define ACM_OPENA (WM_USER+100)
+#define ACM_OPENW (WM_USER+103)
+
+#ifdef UNICODE
+#define ACM_OPEN ACM_OPENW
+#else
+#define ACM_OPEN ACM_OPENA
+#endif
+
+#define ACM_PLAY (WM_USER+101)
+#define ACM_STOP (WM_USER+102)
+
+
+#define ACN_START 1
+#define ACN_STOP 2
+
+
+#define Animate_Create(hwndP, id, dwStyle, hInstance) \
+ CreateWindow(ANIMATE_CLASS, NULL, \
+ dwStyle, 0, 0, 0, 0, hwndP, (HMENU)(id), hInstance, NULL)
+
+#define Animate_Open(hwnd, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, 0, (LPARAM)(LPTSTR)(szName))
+#define Animate_Play(hwnd, from, to, rep) (BOOL)SNDMSG(hwnd, ACM_PLAY, (WPARAM)(UINT)(rep), (LPARAM)MAKELONG(from, to))
+#define Animate_Stop(hwnd) (BOOL)SNDMSG(hwnd, ACM_STOP, 0, 0)
+#define Animate_Close(hwnd) Animate_Open(hwnd, NULL)
+#define Animate_Seek(hwnd, frame) Animate_Play(hwnd, frame, frame, 1)
+#endif
+
+#endif
+
+
+//====== MONTHCAL CONTROL ======================================================
+
+#ifndef NOMONTHCAL
+#ifdef _WIN32
+
+#define MONTHCAL_CLASSW L"SysMonthCal32"
+#define MONTHCAL_CLASSA "SysMonthCal32"
+
+#ifdef UNICODE
+#define MONTHCAL_CLASS MONTHCAL_CLASSW
+#else
+#define MONTHCAL_CLASS MONTHCAL_CLASSA
+#endif
+
+// bit-packed array of "bold" info for a month
+// if a bit is on, that day is drawn bold
+typedef DWORD MONTHDAYSTATE, FAR * LPMONTHDAYSTATE;
+
+
+#define MCM_FIRST 0x1000
+
+// BOOL MonthCal_GetCurSel(HWND hmc, LPSYSTEMTIME pst)
+// returns FALSE if MCS_MULTISELECT
+// returns TRUE and sets *pst to the currently selected date otherwise
+#define MCM_GETCURSEL (MCM_FIRST + 1)
+#define MonthCal_GetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETCURSEL, 0, (LPARAM)(pst))
+
+// BOOL MonthCal_SetCurSel(HWND hmc, LPSYSTEMTIME pst)
+// returns FALSE if MCS_MULTISELECT
+// returns TURE and sets the currently selected date to *pst otherwise
+#define MCM_SETCURSEL (MCM_FIRST + 2)
+#define MonthCal_SetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_SETCURSEL, 0, (LPARAM)(pst))
+
+// DWORD MonthCal_GetMaxSelCount(HWND hmc)
+// returns the maximum number of selectable days allowed
+#define MCM_GETMAXSELCOUNT (MCM_FIRST + 3)
+#define MonthCal_GetMaxSelCount(hmc) (DWORD)SNDMSG(hmc, MCM_GETMAXSELCOUNT, 0, 0L)
+
+// BOOL MonthCal_SetMaxSelCount(HWND hmc, UINT n)
+// sets the max number days that can be selected iff MCS_MULTISELECT
+#define MCM_SETMAXSELCOUNT (MCM_FIRST + 4)
+#define MonthCal_SetMaxSelCount(hmc, n) (BOOL)SNDMSG(hmc, MCM_SETMAXSELCOUNT, (WPARAM)(n), 0L)
+
+// BOOL MonthCal_GetSelRange(HWND hmc, LPSYSTEMTIME rgst)
+// sets rgst[0] to the first day of the selection range
+// sets rgst[1] to the last day of the selection range
+#define MCM_GETSELRANGE (MCM_FIRST + 5)
+#define MonthCal_GetSelRange(hmc, rgst) SNDMSG(hmc, MCM_GETSELRANGE, 0, (LPRARAM)(rgst))
+
+// BOOL MonthCal_SetSelRange(HWND hmc, LPSYSTEMTIME rgst)
+// selects the range of days from rgst[0] to rgst[1]
+#define MCM_SETSELRANGE (MCM_FIRST + 6)
+#define MonthCal_SetSelRange(hmc, rgst) SNDMSG(hmc, MCM_SETSELRANGE, 0, (LPARAM)(rgst))
+
+// DWORD MonthCal_GetMonthRange(HWND hmc, DWORD gmr, LPSYSTEMTIME rgst)
+// if rgst specified, sets rgst[0] to the starting date and
+// and rgst[1] to the ending date of the the selectable (non-grayed)
+// days if GMR_VISIBLE or all the displayed days (including grayed)
+// if GMR_DAYSTATE.
+// returns the number of months spanned by the above range.
+#define MCM_GETMONTHRANGE (MCM_FIRST + 7)
+#define MonthCal_GetMonthRange(hmc, gmr, rgst) (DWORD)SNDMSG(hmc, MCM_GETMONTHRANGE, (WPARAM)(gmr), (LPARAM)(rgst))
+
+// BOOL MonthCal_SetDayState(HWND hmc, int cbds, DAYSTATE *rgds)
+// cbds is the count of DAYSTATE items in rgds and it must be equal
+// to the value returned from MonthCal_GetMonthRange(hmc, GMR_DAYSTATE, NULL)
+// This sets the DAYSTATE bits for each month (grayed and non-grayed
+// days) displayed in the calendar. The first bit in a month's DAYSTATE
+// corresponts to bolding day 1, the second bit affects day 2, etc.
+#define MCM_SETDAYSTATE (MCM_FIRST + 8)
+#define MonthCal_SetDayState(hmc, cbds, rgds) SNDMSG(hmc, MCM_SETDAYSTATE, (WPARAM)(cbds), (LPARAM)(rgds))
+
+// BOOL MonthCal_GetMinReqRect(HWND hmc, LPRECT prc)
+// sets *prc the minimal size needed to display one month
+#define MCM_GETMINREQRECT (MCM_FIRST + 9)
+#define MonthCal_GetMinReqRect(hmc, prc) SNDMSG(hmc, MCM_GETMINREQRECT, 0, (LPARAM)(prc))
+
+// set what day is "today" send NULL to revert back to real date
+#define MCM_SETTODAY (MCM_FIRST + 12)
+#define MonthCal_SetToday(hmc, pst) SNDMSG(hmc, MCM_SETTODAY, 0, (LPARAM)pst)
+
+// get what day is "today"
+// returns BOOL for success/failure
+#define MCM_GETTODAY (MCM_FIRST + 13)
+#define MonthCal_GetToday(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETTODAY, 0, (LPARAM)pst)
+
+// determine what pinfo->pt is over
+#define MCM_HITTEST (MCM_FIRST + 14)
+#define MonthCal_HitTest(hmc, pinfo) \
+ SNDMSG(hmc, MCM_HITTEST, 0, (LPARAM)(PMCHITTESTINFO)pinfo)
+
+typedef struct {
+ UINT cbSize;
+ POINT pt;
+
+ UINT uHit; // out param
+ SYSTEMTIME st;
+} MCHITTESTINFO, *PMCHITTESTINFO;
+
+#define MCHT_TITLE 0x00010000
+#define MCHT_CALENDAR 0x00020000
+#define MCHT_TODAYLINK 0x00030000
+
+#define MCHT_NEXT 0x01000000 // these indicate that hitting
+#define MCHT_PREV 0x02000000 // here will go to the next/prev month
+
+#define MCHT_NOWHERE 0x00000000
+
+#define MCHT_TITLEBK (MCHT_TITLE)
+#define MCHT_TITLEMONTH (MCHT_TITLE | 0x0001)
+#define MCHT_TITLEYEAR (MCHT_TITLE | 0x0002)
+#define MCHT_TITLEBTNNEXT (MCHT_TITLE | MCHT_NEXT | 0x0003)
+#define MCHT_TITLEBTNPREV (MCHT_TITLE | MCHT_PREV | 0x0003)
+
+#define MCHT_CALENDARBK (MCHT_CALENDAR)
+#define MCHT_CALENDARDATE (MCHT_CALENDAR | 0x0001)
+#define MCHT_CALENDARDATENEXT (MCHT_CALENDARDATE | MCHT_NEXT)
+#define MCHT_CALENDARDATEPREV (MCHT_CALENDARDATE | MCHT_PREV)
+#define MCHT_CALENDARDAY (MCHT_CALENDAR | 0x0002)
+#define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x0003)
+
+// set colors to draw control with -- see MCSC_ bits below
+#define MCM_SETCOLOR (MCM_FIRST + 10)
+#define MonthCal_SetColor(hmc, iColor, clr) SNDMSG(hmc, MCM_SETCOLOR, iColor, clr)
+
+#define MCM_GETCOLOR (MCM_FIRST + 11)
+#define MonthCal_GetColor(hmc, iColor) SNDMSG(hmc, MCM_SETCOLOR, iColor, 0)
+
+#define MCSC_BACKGROUND 0 // the background color (between months)
+#define MCSC_TEXT 1 // the dates
+#define MCSC_TITLEBK 2 // background of the title
+#define MCSC_TITLETEXT 3
+#define MCSC_MONTHBK 4 // background within the month cal
+#define MCSC_TRAILINGTEXT 5 // the text color of header & trailing days
+
+// set first day of week to iDay:
+// 0 for Monday, 1 for Tuesday, ..., 6 for Sunday
+// -1 for means use locale info
+#define MCM_SETFIRSTDAYOFWEEK (MCM_FIRST + 15)
+#define MonthCal_SetFirstDayOfWeek(hmc, iDay) \
+ SNDMSG(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay)
+
+// DWORD result... low word has the day. high word is bool if this is app set
+// or not (FALSE == using locale info)
+#define MCM_GETFIRSTDAYOFWEEK (MCM_FIRST + 16)
+#define MonthCal_GetFirstDayOfWeek(hmc) \
+ (DWORD)SNDMSG(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0)
+
+// DWORD MonthCal_GetRange(HWND hmc, LPSYSTEMTIME rgst)
+// modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
+// modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
+// returns GDTR_MIN|GDTR_MAX if there is a minimum|maximum limit
+#define MCM_GETRANGE (MCM_FIRST + 17)
+#define MonthCal_GetRange(hmc, rgst) \
+ (DWORD)SNDMSG(hmc, MCM_GETRANGE, 0, (LPARAM)(rgst))
+
+// BOOL MonthCal_SetRange(HWND hmc, DWORD gdtr, LPSYSTEMTIME rgst)
+// if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
+// if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
+// returns TRUE on success, FALSE on error (such as invalid parameters)
+#define MCM_SETRANGE (MCM_FIRST + 18)
+#define MonthCal_SetRange(hmc, gd, rgst) \
+ (BOOL)SNDMSG(hmc, MCM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
+
+// int MonthCal_GetMonthDelta(HWND hmc)
+// returns the number of months one click on a next/prev button moves by
+#define MCM_GETMONTHDELTA (MCM_FIRST + 19)
+#define MonthCal_GetMonthDelta(hmc) \
+ (int)SNDMSG(hmc, MCM_GETMONTHDELTA, 0, 0)
+
+// int MonthCal_SetMonthDelta(HWND hmc, int n)
+// sets the month delta to n. n==0 reverts to moving by a page of months
+// returns the previous value of n.
+#define MCM_SETMONTHDELTA (MCM_FIRST + 20)
+#define MonthCal_SetMonthDelta(hmc, n) \
+ (int)SNDMSG(hmc, MCM_SETMONTHDELTA, n, 0)
+
+
+// MCN_SELCHANGE is sent whenever the currently displayed date changes
+// via month change, year change, keyboard navigation, prev/next button
+//
+typedef struct tagNMSELCHANGE
+{
+ NMHDR nmhdr; // this must be first, so we don't break WM_NOTIFY
+
+ SYSTEMTIME stSelStart;
+ SYSTEMTIME stSelEnd;
+} NMSELCHANGE, FAR * LPNMSELCHANGE;
+
+#define MCN_SELCHANGE (MCN_FIRST + 1)
+
+// MCN_GETDAYSTATE is sent for MCS_DAYSTATE controls whenever new daystate
+// information is needed (month or year scroll) to draw bolding information.
+// The app must fill in cDayState months worth of information starting from
+// stStart date. The app may fill in the array at prgDayState or change
+// prgDayState to point to a different array out of which the information
+// will be copied. (similar to tooltips)
+//
+typedef struct tagNMDAYSTATE
+{
+ NMHDR nmhdr; // this must be first, so we don't break WM_NOTIFY
+
+ SYSTEMTIME stStart;
+ int cDayState;
+
+ LPMONTHDAYSTATE prgDayState; // points to cDayState MONTHDAYSTATEs
+} NMDAYSTATE, FAR * LPNMDAYSTATE;
+
+#define MCN_GETDAYSTATE (MCN_FIRST + 3)
+
+// MCN_SELECT is sent whenever a selection has occured (via mouse or keyboard)
+//
+typedef NMSELCHANGE NMSELECT, FAR * LPNMSELECT;
+
+
+#define MCN_SELECT (MCN_FIRST + 4)
+
+
+#define MCS_DAYSTATE 0x0001
+#define MCS_MULTISELECT 0x0002
+#define MCS_WEEKNUMBERS 0x0004
+#define MCS_NOTODAY 0x0008
+
+
+#define GMR_VISIBLE 0 // visible portion of display
+#define GMR_DAYSTATE 1 // above plus the grayed out parts of
+ // partially displayed months
+
+
+#endif // _WIN32
+#endif // NOMONTHCAL
+
+
+//====== DATETIMEPICK CONTROL ==================================================
+
+#ifndef NODATETIMEPICK
+#ifdef _WIN32
+
+#define DATETIMEPICK_CLASSW L"SysDateTimePick32"
+#define DATETIMEPICK_CLASSA "SysDateTimePick32"
+
+#ifdef UNICODE
+#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSW
+#else
+#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSA
+#endif
+
+#define DTM_FIRST 0x1000
+
+// DWORD DateTimePick_GetSystemtime(HWND hdp, LPSYSTEMTIME pst)
+// returns GDT_NONE if "none" is selected (DTS_SHOWNONE only)
+// returns GDT_VALID and modifies *pst to be the currently selected value
+#define DTM_GETSYSTEMTIME (DTM_FIRST + 1)
+#define DateTime_GetSystemtime(hdp, pst) (DWORD)SNDMSG(hdp, DTM_GETSYSTEMTIME, 0, (LPARAM)(pst))
+
+// BOOL DateTime_SetSystemtime(HWND hdp, DWORD gd, LPSYSTEMTIME pst)
+// if gd==GDT_NONE, sets datetimepick to None (DTS_SHOWNONE only)
+// if gd==GDT_VALID, sets datetimepick to *pst
+// returns TRUE on success, FALSE on error (such as bad params)
+#define DTM_SETSYSTEMTIME (DTM_FIRST + 2)
+#define DateTime_SetSystemtime(hdp, gd, pst) (BOOL)SNDMSG(hdp, DTM_SETSYSTEMTIME, (LPARAM)(gd), (LPARAM)(pst))
+
+// DWORD DateTime_GetRange(HWND hdp, LPSYSTEMTIME rgst)
+// modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
+// modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
+// returns GDTR_MIN|GDTR_MAX if there is a minimum|maximum limit
+#define DTM_GETRANGE (DTM_FIRST + 3)
+#define DateTime_GetRange(hdp, rgst) (DWORD)SNDMSG(hdp, DTM_GETRANGE, 0, (LPARAM)(rgst))
+
+// BOOL DateTime_SetRange(HWND hdp, DWORD gdtr, LPSYSTEMTIME rgst)
+// if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
+// if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
+// returns TRUE on success, FALSE on error (such as invalid parameters)
+#define DTM_SETRANGE (DTM_FIRST + 4)
+#define DateTime_SetRange(hdp, gd, rgst) (BOOL)SNDMSG(hdp, DTM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
+
+// BOOL DateTime_SetFormat(HWND hdp, LPCTSTR sz)
+// sets the display formatting string to sz (see GetDateFormat and GetTimeFormat for valid formatting chars)
+// NOTE: 'X' is a valid formatting character which indicates that the application
+// will determine how to display information. Such apps must support DTN_WMKEYDOWN,
+// DTN_FORMAT, and DTN_FORMATQUERY.
+#define DTM_SETFORMATA (DTM_FIRST + 5)
+#define DTM_SETFORMATW (DTM_FIRST + 50)
+
+#ifdef UNICODE
+#define DTM_SETFORMAT DTM_SETFORMATW
+#else
+#define DTM_SETFORMAT DTM_SETFORMATA
+#endif
+
+#define DateTime_SetFormat(hdp, sz) (BOOL)SNDMSG(hdp, DTM_SETFORMAT, 0, (LPARAM)(sz))
+
+
+#define DTM_SETMCCOLOR (DTM_FIRST + 6)
+#define DateTime_SetMonthCalColor(hdp, iColor, clr) SNDMSG(hdp, DTM_SETMCCOLOR, iColor, clr)
+
+#define DTM_GETMCCOLOR (DTM_FIRST + 7)
+#define DateTime_GetMonthCalColor(hdp, iColor) SNDMSG(hdp, DTM_GETMCCOLOR, iColor, 0)
+
+// HWND DateTime_GetMonthCal(HWND hdp)
+// returns the HWND of the MonthCal popup window. Only valid
+// between DTN_DROPDOWN and DTN_CLOSEUP notifications.
+#define DTM_GETMONTHCAL (DTM_FIRST + 8)
+#define DateTime_GetMonthCal(hdp) (HWND)SNDMSG(hdp, DTM_GETMONTHCAL, 0, 0)
+
+
+#define DTS_UPDOWN 0x0001 // use UPDOWN instead of MONTHCAL
+#define DTS_SHOWNONE 0x0002 // allow a NONE selection
+#define DTS_SHORTDATEFORMAT 0x0000 // use the short date format (app must forward WM_WININICHANGE messages)
+#define DTS_LONGDATEFORMAT 0x0004 // use the long date format (app must forward WM_WININICHANGE messages)
+#define DTS_TIMEFORMAT 0x0009 // use the time format (app must forward WM_WININICHANGE messages)
+#define DTS_APPCANPARSE 0x0010 // allow user entered strings (app MUST respond to DTN_USERSTRING)
+#define DTS_RIGHTALIGN 0x0020 // right-align popup instead of left-align it
+
+#define DTN_DATETIMECHANGE (DTN_FIRST + 1) // the systemtime has changed
+typedef struct tagNMDATETIMECHANGE
+{
+ NMHDR nmhdr;
+ DWORD dwFlags; // GDT_VALID or GDT_NONE
+ SYSTEMTIME st; // valid iff dwFlags==GDT_VALID
+} NMDATETIMECHANGE, FAR * LPNMDATETIMECHANGE;
+
+#define DTN_USERSTRINGA (DTN_FIRST + 2) // the user has entered a string
+#define DTN_USERSTRINGW (DTN_FIRST + 15)
+typedef struct tagNMDATETIMESTRINGA
+{
+ NMHDR nmhdr;
+ LPCSTR pszUserString; // string user entered
+ SYSTEMTIME st; // app fills this in
+ DWORD dwFlags; // GDT_VALID or GDT_NONE
+} NMDATETIMESTRINGA, FAR * LPNMDATETIMESTRINGA;
+
+typedef struct tagNMDATETIMESTRINGW
+{
+ NMHDR nmhdr;
+ LPCWSTR pszUserString; // string user entered
+ SYSTEMTIME st; // app fills this in
+ DWORD dwFlags; // GDT_VALID or GDT_NONE
+} NMDATETIMESTRINGW, FAR * LPNMDATETIMESTRINGW;
+
+#ifdef UNICODE
+#define DTN_USERSTRING DTN_USERSTRINGW
+#define NMDATETIMESTRING NMDATETIMESTRINGW
+#define LPNMDATETIMESTRING LPNMDATETIMESTRINGW
+#else
+#define DTN_USERSTRING DTN_USERSTRINGA
+#define NMDATETIMESTRING NMDATETIMESTRINGA
+#define LPNMDATETIMESTRING LPNMDATETIMESTRINGA
+#endif
+
+
+#define DTN_WMKEYDOWNA (DTN_FIRST + 3) // modify keydown on app format field (X)
+#define DTN_WMKEYDOWNW (DTN_FIRST + 16)
+typedef struct tagNMDATETIMEWMKEYDOWNA
+{
+ NMHDR nmhdr;
+ int nVirtKey; // virtual key code of WM_KEYDOWN which MODIFIES an X field
+ LPCSTR pszFormat; // format substring
+ SYSTEMTIME st; // current systemtime, app should modify based on key
+} NMDATETIMEWMKEYDOWNA, FAR * LPNMDATETIMEWMKEYDOWNA;
+
+typedef struct tagNMDATETIMEWMKEYDOWNW
+{
+ NMHDR nmhdr;
+ int nVirtKey; // virtual key code of WM_KEYDOWN which MODIFIES an X field
+ LPCWSTR pszFormat; // format substring
+ SYSTEMTIME st; // current systemtime, app should modify based on key
+} NMDATETIMEWMKEYDOWNW, FAR * LPNMDATETIMEWMKEYDOWNW;
+
+#ifdef UNICODE
+#define DTN_WMKEYDOWN DTN_WMKEYDOWNW
+#define NMDATETIMEWMKEYDOWN NMDATETIMEWMKEYDOWNW
+#define LPNMDATETIMEWMKEYDOWN LPNMDATETIMEWMKEYDOWNW
+#else
+#define DTN_WMKEYDOWN DTN_WMKEYDOWNA
+#define NMDATETIMEWMKEYDOWN NMDATETIMEWMKEYDOWNA
+#define LPNMDATETIMEWMKEYDOWN LPNMDATETIMEWMKEYDOWNA
+#endif
+
+
+#define DTN_FORMATA (DTN_FIRST + 4) // query display for app format field (X)
+#define DTN_FORMATW (DTN_FIRST + 17)
+typedef struct tagNMDATETIMEFORMATA
+{
+ NMHDR nmhdr;
+ LPCSTR pszFormat; // format substring
+ SYSTEMTIME st; // current systemtime
+ LPCSTR pszDisplay; // string to display
+ CHAR szDisplay[64]; // buffer pszDisplay originally points at
+} NMDATETIMEFORMATA, FAR * LPNMDATETIMEFORMATA;
+
+typedef struct tagNMDATETIMEFORMATW
+{
+ NMHDR nmhdr;
+ LPCWSTR pszFormat; // format substring
+ SYSTEMTIME st; // current systemtime
+ LPCWSTR pszDisplay; // string to display
+ WCHAR szDisplay[64]; // buffer pszDisplay originally points at
+} NMDATETIMEFORMATW, FAR * LPNMDATETIMEFORMATW;
+
+#ifdef UNICODE
+#define DTN_FORMAT DTN_FORMATW
+#define NMDATETIMEFORMAT NMDATETIMEFORMATW
+#define LPNMDATETIMEFORMAT LPNMDATETIMEFORMATW
+#else
+#define DTN_FORMAT DTN_FORMATA
+#define NMDATETIMEFORMAT NMDATETIMEFORMATA
+#define LPNMDATETIMEFORMAT LPNMDATETIMEFORMATA
+#endif
+
+
+#define DTN_FORMATQUERYA (DTN_FIRST + 5) // query formatting info for app format field (X)
+#define DTN_FORMATQUERYW (DTN_FIRST + 18)
+typedef struct tagNMDATETIMEFORMATQUERYA
+{
+ NMHDR nmhdr;
+ LPCSTR pszFormat; // format substring
+ SIZE szMax; // max bounding rectangle app will use for this format string
+} NMDATETIMEFORMATQUERYA, FAR * LPNMDATETIMEFORMATQUERYA;
+
+typedef struct tagNMDATETIMEFORMATQUERYW
+{
+ NMHDR nmhdr;
+ LPCWSTR pszFormat; // format substring
+ SIZE szMax; // max bounding rectangle app will use for this format string
+} NMDATETIMEFORMATQUERYW, FAR * LPNMDATETIMEFORMATQUERYW;
+
+#ifdef UNICODE
+#define DTN_FORMATQUERY DTN_FORMATQUERYW
+#define NMDATETIMEFORMATQUERY NMDATETIMEFORMATQUERYW
+#define LPNMDATETIMEFORMATQUERY LPNMDATETIMEFORMATQUERYW
+#else
+#define DTN_FORMATQUERY DTN_FORMATQUERYA
+#define NMDATETIMEFORMATQUERY NMDATETIMEFORMATQUERYA
+#define LPNMDATETIMEFORMATQUERY LPNMDATETIMEFORMATQUERYA
+#endif
+
+
+#define DTN_DROPDOWN (DTN_FIRST + 6) // MonthCal has dropped down
+#define DTN_CLOSEUP (DTN_FIRST + 7) // MonthCal is popping up
+
+
+#define GDTR_MIN 0x0001
+#define GDTR_MAX 0x0002
+
+#define GDT_ERROR -1
+#define GDT_VALID 0
+#define GDT_NONE 1
+
+
+#endif // _WIN32
+#endif // NODATETIMEPICK
+
+
+
+
+#ifdef _WIN32
+//====== TrackMouseEvent =====================================================
+
+#ifndef NOTRACKMOUSEEVENT
+
+//
+// If the messages for TrackMouseEvent have not been defined then define them
+// now.
+//
+#ifndef WM_MOUSEHOVER
+#define WM_MOUSEHOVER 0x02A1
+#define WM_MOUSELEAVE 0x02A3
+#endif
+
+//
+// If the TRACKMOUSEEVENT structure and associated flags havent been declared
+// then declare them now.
+//
+#ifndef TME_HOVER
+
+#define TME_HOVER 0x00000001
+#define TME_LEAVE 0x00000002
+#define TME_QUERY 0x40000000
+#define TME_CANCEL 0x80000000
+
+
+#define HOVER_DEFAULT 0xFFFFFFFF
+
+typedef struct tagTRACKMOUSEEVENT {
+ DWORD cbSize;
+ DWORD dwFlags;
+ HWND hwndTrack;
+ DWORD dwHoverTime;
+} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
+
+#endif // !TME_HOVER
+
+//
+// Declare _TrackMouseEvent. This API tries to use the window manager's
+// implementation of TrackMouseEvent if it is present, otherwise it emulates.
+//
+WINCOMMCTRLAPI
+BOOL
+WINAPI
+_TrackMouseEvent(
+ LPTRACKMOUSEEVENT lpEventTrack);
+
+#endif // !NOTRACKMOUSEEVENT
+
+
+#endif /* _WIN32 */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _WIN32
+#include <poppack.h>
+#endif
+
+#endif
+
+
+#endif // _INC_COMMCTRL
diff --git a/public/sdk/inc/commdlg.h b/public/sdk/inc/commdlg.h
new file mode 100644
index 000000000..902ef1a6d
--- /dev/null
+++ b/public/sdk/inc/commdlg.h
@@ -0,0 +1,717 @@
+/************************************************************************
+* *
+* commdlg.h -- This module defines the 32-Bit Common Dialog APIs *
+* *
+* Copyright (c) 1992-1996, Microsoft Corp. All rights reserved. *
+* *
+************************************************************************/
+#ifndef _INC_COMMDLG
+#define _INC_COMMDLG
+
+
+#include <pshpack1.h> /* Assume byte packing throughout */
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+#if(WINVER >= 0x0400)
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else /* __cplusplus */
+#define SNDMSG SendMessage
+#endif /* __cplusplus */
+#endif /* WINVER >= 0x0400 */
+
+typedef UINT (APIENTRY *LPOFNHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+
+typedef struct tagOFNA {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCSTR lpstrFilter;
+ LPSTR lpstrCustomFilter;
+ DWORD nMaxCustFilter;
+ DWORD nFilterIndex;
+ LPSTR lpstrFile;
+ DWORD nMaxFile;
+ LPSTR lpstrFileTitle;
+ DWORD nMaxFileTitle;
+ LPCSTR lpstrInitialDir;
+ LPCSTR lpstrTitle;
+ DWORD Flags;
+ WORD nFileOffset;
+ WORD nFileExtension;
+ LPCSTR lpstrDefExt;
+ LPARAM lCustData;
+ LPOFNHOOKPROC lpfnHook;
+ LPCSTR lpTemplateName;
+} OPENFILENAMEA, *LPOPENFILENAMEA;
+typedef struct tagOFNW {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCWSTR lpstrFilter;
+ LPWSTR lpstrCustomFilter;
+ DWORD nMaxCustFilter;
+ DWORD nFilterIndex;
+ LPWSTR lpstrFile;
+ DWORD nMaxFile;
+ LPWSTR lpstrFileTitle;
+ DWORD nMaxFileTitle;
+ LPCWSTR lpstrInitialDir;
+ LPCWSTR lpstrTitle;
+ DWORD Flags;
+ WORD nFileOffset;
+ WORD nFileExtension;
+ LPCWSTR lpstrDefExt;
+ LPARAM lCustData;
+ LPOFNHOOKPROC lpfnHook;
+ LPCWSTR lpTemplateName;
+} OPENFILENAMEW, *LPOPENFILENAMEW;
+#ifdef UNICODE
+typedef OPENFILENAMEW OPENFILENAME;
+typedef LPOPENFILENAMEW LPOPENFILENAME;
+#else
+typedef OPENFILENAMEA OPENFILENAME;
+typedef LPOPENFILENAMEA LPOPENFILENAME;
+#endif // UNICODE
+
+BOOL APIENTRY GetOpenFileNameA(LPOPENFILENAMEA);
+BOOL APIENTRY GetOpenFileNameW(LPOPENFILENAMEW);
+#ifdef UNICODE
+#define GetOpenFileName GetOpenFileNameW
+#else
+#define GetOpenFileName GetOpenFileNameA
+#endif // !UNICODE
+BOOL APIENTRY GetSaveFileNameA(LPOPENFILENAMEA);
+BOOL APIENTRY GetSaveFileNameW(LPOPENFILENAMEW);
+#ifdef UNICODE
+#define GetSaveFileName GetSaveFileNameW
+#else
+#define GetSaveFileName GetSaveFileNameA
+#endif // !UNICODE
+short APIENTRY GetFileTitleA(LPCSTR, LPSTR, WORD);
+short APIENTRY GetFileTitleW(LPCWSTR, LPWSTR, WORD);
+#ifdef UNICODE
+#define GetFileTitle GetFileTitleW
+#else
+#define GetFileTitle GetFileTitleA
+#endif // !UNICODE
+
+#define OFN_READONLY 0x00000001
+#define OFN_OVERWRITEPROMPT 0x00000002
+#define OFN_HIDEREADONLY 0x00000004
+#define OFN_NOCHANGEDIR 0x00000008
+#define OFN_SHOWHELP 0x00000010
+#define OFN_ENABLEHOOK 0x00000020
+#define OFN_ENABLETEMPLATE 0x00000040
+#define OFN_ENABLETEMPLATEHANDLE 0x00000080
+#define OFN_NOVALIDATE 0x00000100
+#define OFN_ALLOWMULTISELECT 0x00000200
+#define OFN_EXTENSIONDIFFERENT 0x00000400
+#define OFN_PATHMUSTEXIST 0x00000800
+#define OFN_FILEMUSTEXIST 0x00001000
+#define OFN_CREATEPROMPT 0x00002000
+#define OFN_SHAREAWARE 0x00004000
+#define OFN_NOREADONLYRETURN 0x00008000
+#define OFN_NOTESTFILECREATE 0x00010000
+#define OFN_NONETWORKBUTTON 0x00020000
+#define OFN_NOLONGNAMES 0x00040000 // force no long names for 4.x modules
+#if(WINVER >= 0x0400)
+#define OFN_EXPLORER 0x00080000 // new look commdlg
+#define OFN_NODEREFERENCELINKS 0x00100000
+#define OFN_LONGNAMES 0x00200000 // force long names for 3.x modules
+#endif /* WINVER >= 0x0400 */
+
+// Return values for the registered message sent to the hook function
+// when a sharing violation occurs. OFN_SHAREFALLTHROUGH allows the
+// filename to be accepted, OFN_SHARENOWARN rejects the name but puts
+// up no warning (returned when the app has already put up a warning
+// message), and OFN_SHAREWARN puts up the default warning message
+// for sharing violations.
+//
+// Note: Undefined return values map to OFN_SHAREWARN, but are
+// reserved for future use.
+
+#define OFN_SHAREFALLTHROUGH 2
+#define OFN_SHARENOWARN 1
+#define OFN_SHAREWARN 0
+
+typedef UINT (APIENTRY *LPCCHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+
+#if(WINVER >= 0x0400)
+// Structure used for all OpenFileName notifications
+typedef struct _OFNOTIFYA
+{
+ NMHDR hdr;
+ LPOPENFILENAMEA lpOFN;
+ LPSTR pszFile; // May be NULL
+} OFNOTIFYA, FAR *LPOFNOTIFYA;
+// Structure used for all OpenFileName notifications
+typedef struct _OFNOTIFYW
+{
+ NMHDR hdr;
+ LPOPENFILENAMEW lpOFN;
+ LPWSTR pszFile; // May be NULL
+} OFNOTIFYW, FAR *LPOFNOTIFYW;
+#ifdef UNICODE
+typedef OFNOTIFYW OFNOTIFY;
+typedef LPOFNOTIFYW LPOFNOTIFY;
+#else
+typedef OFNOTIFYA OFNOTIFY;
+typedef LPOFNOTIFYA LPOFNOTIFY;
+#endif // UNICODE
+
+#define CDN_FIRST (0U-601U)
+#define CDN_LAST (0U-699U)
+
+// Notifications when Open or Save dialog status changes
+#define CDN_INITDONE (CDN_FIRST - 0x0000)
+#define CDN_SELCHANGE (CDN_FIRST - 0x0001)
+#define CDN_FOLDERCHANGE (CDN_FIRST - 0x0002)
+#define CDN_SHAREVIOLATION (CDN_FIRST - 0x0003)
+#define CDN_HELP (CDN_FIRST - 0x0004)
+#define CDN_FILEOK (CDN_FIRST - 0x0005)
+#define CDN_TYPECHANGE (CDN_FIRST - 0x0006)
+
+#define CDM_FIRST (WM_USER + 100)
+#define CDM_LAST (WM_USER + 200)
+
+// Messages to query information from the Open or Save dialogs
+
+// lParam = pointer to text buffer that gets filled in
+// wParam = max number of characters of the text buffer (including NULL)
+// return = < 0 if error; number of characters needed (including NULL)
+#define CDM_GETSPEC (CDM_FIRST + 0x0000)
+#define CommDlg_OpenSave_GetSpecA(_hdlg, _psz, _cbmax) \
+ (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
+#define CommDlg_OpenSave_GetSpecW(_hdlg, _psz, _cbmax) \
+ (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
+#ifdef UNICODE
+#define CommDlg_OpenSave_GetSpec CommDlg_OpenSave_GetSpecW
+#else
+#define CommDlg_OpenSave_GetSpec CommDlg_OpenSave_GetSpecA
+#endif // !UNICODE
+
+// lParam = pointer to text buffer that gets filled in
+// wParam = max number of characters of the text buffer (including NULL)
+// return = < 0 if error; number of characters needed (including NULL)
+#define CDM_GETFILEPATH (CDM_FIRST + 0x0001)
+#define CommDlg_OpenSave_GetFilePathA(_hdlg, _psz, _cbmax) \
+ (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
+#define CommDlg_OpenSave_GetFilePathW(_hdlg, _psz, _cbmax) \
+ (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
+#ifdef UNICODE
+#define CommDlg_OpenSave_GetFilePath CommDlg_OpenSave_GetFilePathW
+#else
+#define CommDlg_OpenSave_GetFilePath CommDlg_OpenSave_GetFilePathA
+#endif // !UNICODE
+
+// lParam = pointer to text buffer that gets filled in
+// wParam = max number of characters of the text buffer (including NULL)
+// return = < 0 if error; number of characters needed (including NULL)
+#define CDM_GETFOLDERPATH (CDM_FIRST + 0x0002)
+#define CommDlg_OpenSave_GetFolderPathA(_hdlg, _psz, _cbmax) \
+ (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
+#define CommDlg_OpenSave_GetFolderPathW(_hdlg, _psz, _cbmax) \
+ (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
+#ifdef UNICODE
+#define CommDlg_OpenSave_GetFolderPath CommDlg_OpenSave_GetFolderPathW
+#else
+#define CommDlg_OpenSave_GetFolderPath CommDlg_OpenSave_GetFolderPathA
+#endif // !UNICODE
+
+// lParam = pointer to ITEMIDLIST buffer that gets filled in
+// wParam = size of the ITEMIDLIST buffer
+// return = < 0 if error; length of buffer needed
+#define CDM_GETFOLDERIDLIST (CDM_FIRST + 0x0003)
+#define CommDlg_OpenSave_GetFolderIDList(_hdlg, _pidl, _cbmax) \
+ (int)SNDMSG(_hdlg, CDM_GETFOLDERIDLIST, (WPARAM)_cbmax, (LPARAM)(LPVOID)_pidl)
+
+// lParam = pointer to a string
+// wParam = ID of control to change
+// return = not used
+#define CDM_SETCONTROLTEXT (CDM_FIRST + 0x0004)
+#define CommDlg_OpenSave_SetControlText(_hdlg, _id, _text) \
+ (void)SNDMSG(_hdlg, CDM_SETCONTROLTEXT, (WPARAM)_id, (LPARAM)(LPSTR)_text)
+
+// lParam = not used
+// wParam = ID of control to change
+// return = not used
+#define CDM_HIDECONTROL (CDM_FIRST + 0x0005)
+#define CommDlg_OpenSave_HideControl(_hdlg, _id) \
+ (void)SNDMSG(_hdlg, CDM_HIDECONTROL, (WPARAM)_id, 0)
+
+// lParam = pointer to default extension (no dot)
+// wParam = not used
+// return = not used
+#define CDM_SETDEFEXT (CDM_FIRST + 0x0006)
+#define CommDlg_OpenSave_SetDefExt(_hdlg, _pszext) \
+ (void)SNDMSG(_hdlg, CDM_SETDEFEXT, 0, (LPARAM)(LPSTR)_pszext)
+#endif /* WINVER >= 0x0400 */
+
+typedef struct tagCHOOSECOLORA {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HWND hInstance;
+ COLORREF rgbResult;
+ COLORREF* lpCustColors;
+ DWORD Flags;
+ LPARAM lCustData;
+ LPCCHOOKPROC lpfnHook;
+ LPCSTR lpTemplateName;
+} CHOOSECOLORA, *LPCHOOSECOLORA;
+typedef struct tagCHOOSECOLORW {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HWND hInstance;
+ COLORREF rgbResult;
+ COLORREF* lpCustColors;
+ DWORD Flags;
+ LPARAM lCustData;
+ LPCCHOOKPROC lpfnHook;
+ LPCWSTR lpTemplateName;
+} CHOOSECOLORW, *LPCHOOSECOLORW;
+#ifdef UNICODE
+typedef CHOOSECOLORW CHOOSECOLOR;
+typedef LPCHOOSECOLORW LPCHOOSECOLOR;
+#else
+typedef CHOOSECOLORA CHOOSECOLOR;
+typedef LPCHOOSECOLORA LPCHOOSECOLOR;
+#endif // UNICODE
+
+BOOL APIENTRY ChooseColorA(LPCHOOSECOLORA);
+BOOL APIENTRY ChooseColorW(LPCHOOSECOLORW);
+#ifdef UNICODE
+#define ChooseColor ChooseColorW
+#else
+#define ChooseColor ChooseColorA
+#endif // !UNICODE
+
+#define CC_RGBINIT 0x00000001
+#define CC_FULLOPEN 0x00000002
+#define CC_PREVENTFULLOPEN 0x00000004
+#define CC_SHOWHELP 0x00000008
+#define CC_ENABLEHOOK 0x00000010
+#define CC_ENABLETEMPLATE 0x00000020
+#define CC_ENABLETEMPLATEHANDLE 0x00000040
+#if(WINVER >= 0x0400)
+#define CC_SOLIDCOLOR 0x00000080
+#define CC_ANYCOLOR 0x00000100
+#endif /* WINVER >= 0x0400 */
+
+typedef UINT (APIENTRY *LPFRHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+
+typedef struct tagFINDREPLACEA {
+ DWORD lStructSize; // size of this struct 0x20
+ HWND hwndOwner; // handle to owner's window
+ HINSTANCE hInstance; // instance handle of.EXE that
+ // contains cust. dlg. template
+ DWORD Flags; // one or more of the FR_??
+ LPSTR lpstrFindWhat; // ptr. to search string
+ LPSTR lpstrReplaceWith; // ptr. to replace string
+ WORD wFindWhatLen; // size of find buffer
+ WORD wReplaceWithLen; // size of replace buffer
+ LPARAM lCustData; // data passed to hook fn.
+ LPFRHOOKPROC lpfnHook; // ptr. to hook fn. or NULL
+ LPCSTR lpTemplateName; // custom template name
+} FINDREPLACEA, *LPFINDREPLACEA;
+typedef struct tagFINDREPLACEW {
+ DWORD lStructSize; // size of this struct 0x20
+ HWND hwndOwner; // handle to owner's window
+ HINSTANCE hInstance; // instance handle of.EXE that
+ // contains cust. dlg. template
+ DWORD Flags; // one or more of the FR_??
+ LPWSTR lpstrFindWhat; // ptr. to search string
+ LPWSTR lpstrReplaceWith; // ptr. to replace string
+ WORD wFindWhatLen; // size of find buffer
+ WORD wReplaceWithLen; // size of replace buffer
+ LPARAM lCustData; // data passed to hook fn.
+ LPFRHOOKPROC lpfnHook; // ptr. to hook fn. or NULL
+ LPCWSTR lpTemplateName; // custom template name
+} FINDREPLACEW, *LPFINDREPLACEW;
+#ifdef UNICODE
+typedef FINDREPLACEW FINDREPLACE;
+typedef LPFINDREPLACEW LPFINDREPLACE;
+#else
+typedef FINDREPLACEA FINDREPLACE;
+typedef LPFINDREPLACEA LPFINDREPLACE;
+#endif // UNICODE
+
+#define FR_DOWN 0x00000001
+#define FR_WHOLEWORD 0x00000002
+#define FR_MATCHCASE 0x00000004
+#define FR_FINDNEXT 0x00000008
+#define FR_REPLACE 0x00000010
+#define FR_REPLACEALL 0x00000020
+#define FR_DIALOGTERM 0x00000040
+#define FR_SHOWHELP 0x00000080
+#define FR_ENABLEHOOK 0x00000100
+#define FR_ENABLETEMPLATE 0x00000200
+#define FR_NOUPDOWN 0x00000400
+#define FR_NOMATCHCASE 0x00000800
+#define FR_NOWHOLEWORD 0x00001000
+#define FR_ENABLETEMPLATEHANDLE 0x00002000
+#define FR_HIDEUPDOWN 0x00004000
+#define FR_HIDEMATCHCASE 0x00008000
+#define FR_HIDEWHOLEWORD 0x00010000
+
+HWND APIENTRY FindTextA(LPFINDREPLACEA);
+HWND APIENTRY FindTextW(LPFINDREPLACEW);
+#ifdef UNICODE
+#define FindText FindTextW
+#else
+#define FindText FindTextA
+#endif // !UNICODE
+HWND APIENTRY ReplaceTextA(LPFINDREPLACEA);
+HWND APIENTRY ReplaceTextW(LPFINDREPLACEW);
+#ifdef UNICODE
+#define ReplaceText ReplaceTextW
+#else
+#define ReplaceText ReplaceTextA
+#endif // !UNICODE
+
+typedef UINT (APIENTRY *LPCFHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+
+typedef struct tagCHOOSEFONTA {
+ DWORD lStructSize;
+ HWND hwndOwner; // caller's window handle
+ HDC hDC; // printer DC/IC or NULL
+ LPLOGFONTA lpLogFont; // ptr. to a LOGFONT struct
+ INT iPointSize; // 10 * size in points of selected font
+ DWORD Flags; // enum. type flags
+ COLORREF rgbColors; // returned text color
+ LPARAM lCustData; // data passed to hook fn.
+ LPCFHOOKPROC lpfnHook; // ptr. to hook function
+ LPCSTR lpTemplateName; // custom template name
+ HINSTANCE hInstance; // instance handle of.EXE that
+ // contains cust. dlg. template
+ LPSTR lpszStyle; // return the style field here
+ // must be LF_FACESIZE or bigger
+ WORD nFontType; // same value reported to the EnumFonts
+ // call back with the extra FONTTYPE_
+ // bits added
+ WORD ___MISSING_ALIGNMENT__;
+ INT nSizeMin; // minimum pt size allowed &
+ INT nSizeMax; // max pt size allowed if
+ // CF_LIMITSIZE is used
+} CHOOSEFONTA, *LPCHOOSEFONTA;
+typedef struct tagCHOOSEFONTW {
+ DWORD lStructSize;
+ HWND hwndOwner; // caller's window handle
+ HDC hDC; // printer DC/IC or NULL
+ LPLOGFONTW lpLogFont; // ptr. to a LOGFONT struct
+ INT iPointSize; // 10 * size in points of selected font
+ DWORD Flags; // enum. type flags
+ COLORREF rgbColors; // returned text color
+ LPARAM lCustData; // data passed to hook fn.
+ LPCFHOOKPROC lpfnHook; // ptr. to hook function
+ LPCWSTR lpTemplateName; // custom template name
+ HINSTANCE hInstance; // instance handle of.EXE that
+ // contains cust. dlg. template
+ LPWSTR lpszStyle; // return the style field here
+ // must be LF_FACESIZE or bigger
+ WORD nFontType; // same value reported to the EnumFonts
+ // call back with the extra FONTTYPE_
+ // bits added
+ WORD ___MISSING_ALIGNMENT__;
+ INT nSizeMin; // minimum pt size allowed &
+ INT nSizeMax; // max pt size allowed if
+ // CF_LIMITSIZE is used
+} CHOOSEFONTW, *LPCHOOSEFONTW;
+#ifdef UNICODE
+typedef CHOOSEFONTW CHOOSEFONT;
+typedef LPCHOOSEFONTW LPCHOOSEFONT;
+#else
+typedef CHOOSEFONTA CHOOSEFONT;
+typedef LPCHOOSEFONTA LPCHOOSEFONT;
+#endif // UNICODE
+
+BOOL APIENTRY ChooseFontA(LPCHOOSEFONTA);
+BOOL APIENTRY ChooseFontW(LPCHOOSEFONTW);
+#ifdef UNICODE
+#define ChooseFont ChooseFontW
+#else
+#define ChooseFont ChooseFontA
+#endif // !UNICODE
+
+#define CF_SCREENFONTS 0x00000001
+#define CF_PRINTERFONTS 0x00000002
+#define CF_BOTH (CF_SCREENFONTS | CF_PRINTERFONTS)
+#define CF_SHOWHELP 0x00000004L
+#define CF_ENABLEHOOK 0x00000008L
+#define CF_ENABLETEMPLATE 0x00000010L
+#define CF_ENABLETEMPLATEHANDLE 0x00000020L
+#define CF_INITTOLOGFONTSTRUCT 0x00000040L
+#define CF_USESTYLE 0x00000080L
+#define CF_EFFECTS 0x00000100L
+#define CF_APPLY 0x00000200L
+#define CF_ANSIONLY 0x00000400L
+#if(WINVER >= 0x0400)
+#define CF_SCRIPTSONLY CF_ANSIONLY
+#endif /* WINVER >= 0x0400 */
+#define CF_NOVECTORFONTS 0x00000800L
+#define CF_NOOEMFONTS CF_NOVECTORFONTS
+#define CF_NOSIMULATIONS 0x00001000L
+#define CF_LIMITSIZE 0x00002000L
+#define CF_FIXEDPITCHONLY 0x00004000L
+#define CF_WYSIWYG 0x00008000L // must also have CF_SCREENFONTS & CF_PRINTERFONTS
+#define CF_FORCEFONTEXIST 0x00010000L
+#define CF_SCALABLEONLY 0x00020000L
+#define CF_TTONLY 0x00040000L
+#define CF_NOFACESEL 0x00080000L
+#define CF_NOSTYLESEL 0x00100000L
+#define CF_NOSIZESEL 0x00200000L
+#if(WINVER >= 0x0400)
+#define CF_SELECTSCRIPT 0x00400000L
+#define CF_NOSCRIPTSEL 0x00800000L
+#define CF_NOVERTFONTS 0x01000000L
+#endif /* WINVER >= 0x0400 */
+
+// these are extra nFontType bits that are added to what is returned to the
+// EnumFonts callback routine
+
+#define SIMULATED_FONTTYPE 0x8000
+#define PRINTER_FONTTYPE 0x4000
+#define SCREEN_FONTTYPE 0x2000
+#define BOLD_FONTTYPE 0x0100
+#define ITALIC_FONTTYPE 0x0200
+#define REGULAR_FONTTYPE 0x0400
+
+#define WM_CHOOSEFONT_GETLOGFONT (WM_USER + 1)
+
+// strings used to obtain unique window message for communication
+// between dialog and caller
+
+#define LBSELCHSTRINGA "commdlg_LBSelChangedNotify"
+#define SHAREVISTRINGA "commdlg_ShareViolation"
+#define FILEOKSTRINGA "commdlg_FileNameOK"
+#define COLOROKSTRINGA "commdlg_ColorOK"
+#define SETRGBSTRINGA "commdlg_SetRGBColor"
+#define HELPMSGSTRINGA "commdlg_help"
+#define FINDMSGSTRINGA "commdlg_FindReplace"
+
+#define LBSELCHSTRINGW L"commdlg_LBSelChangedNotify"
+#define SHAREVISTRINGW L"commdlg_ShareViolation"
+#define FILEOKSTRINGW L"commdlg_FileNameOK"
+#define COLOROKSTRINGW L"commdlg_ColorOK"
+#define SETRGBSTRINGW L"commdlg_SetRGBColor"
+#define HELPMSGSTRINGW L"commdlg_help"
+#define FINDMSGSTRINGW L"commdlg_FindReplace"
+
+#ifdef UNICODE
+#define LBSELCHSTRING LBSELCHSTRINGW
+#define SHAREVISTRING SHAREVISTRINGW
+#define FILEOKSTRING FILEOKSTRINGW
+#define COLOROKSTRING COLOROKSTRINGW
+#define SETRGBSTRING SETRGBSTRINGW
+#define HELPMSGSTRING HELPMSGSTRINGW
+#define FINDMSGSTRING FINDMSGSTRINGW
+#else
+#define LBSELCHSTRING LBSELCHSTRINGA
+#define SHAREVISTRING SHAREVISTRINGA
+#define FILEOKSTRING FILEOKSTRINGA
+#define COLOROKSTRING COLOROKSTRINGA
+#define SETRGBSTRING SETRGBSTRINGA
+#define HELPMSGSTRING HELPMSGSTRINGA
+#define FINDMSGSTRING FINDMSGSTRINGA
+#endif
+
+// HIWORD values for lParam of commdlg_LBSelChangeNotify message
+#define CD_LBSELNOITEMS -1
+#define CD_LBSELCHANGE 0
+#define CD_LBSELSUB 1
+#define CD_LBSELADD 2
+
+typedef UINT (APIENTRY *LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+typedef UINT (APIENTRY *LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
+
+typedef struct tagPDA {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HGLOBAL hDevMode;
+ HGLOBAL hDevNames;
+ HDC hDC;
+ DWORD Flags;
+ WORD nFromPage;
+ WORD nToPage;
+ WORD nMinPage;
+ WORD nMaxPage;
+ WORD nCopies;
+ HINSTANCE hInstance;
+ LPARAM lCustData;
+ LPPRINTHOOKPROC lpfnPrintHook;
+ LPSETUPHOOKPROC lpfnSetupHook;
+ LPCSTR lpPrintTemplateName;
+ LPCSTR lpSetupTemplateName;
+ HGLOBAL hPrintTemplate;
+ HGLOBAL hSetupTemplate;
+} PRINTDLGA, *LPPRINTDLGA;
+typedef struct tagPDW {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HGLOBAL hDevMode;
+ HGLOBAL hDevNames;
+ HDC hDC;
+ DWORD Flags;
+ WORD nFromPage;
+ WORD nToPage;
+ WORD nMinPage;
+ WORD nMaxPage;
+ WORD nCopies;
+ HINSTANCE hInstance;
+ LPARAM lCustData;
+ LPPRINTHOOKPROC lpfnPrintHook;
+ LPSETUPHOOKPROC lpfnSetupHook;
+ LPCWSTR lpPrintTemplateName;
+ LPCWSTR lpSetupTemplateName;
+ HGLOBAL hPrintTemplate;
+ HGLOBAL hSetupTemplate;
+} PRINTDLGW, *LPPRINTDLGW;
+#ifdef UNICODE
+typedef PRINTDLGW PRINTDLG;
+typedef LPPRINTDLGW LPPRINTDLG;
+#else
+typedef PRINTDLGA PRINTDLG;
+typedef LPPRINTDLGA LPPRINTDLG;
+#endif // UNICODE
+
+BOOL APIENTRY PrintDlgA(LPPRINTDLGA);
+BOOL APIENTRY PrintDlgW(LPPRINTDLGW);
+#ifdef UNICODE
+#define PrintDlg PrintDlgW
+#else
+#define PrintDlg PrintDlgA
+#endif // !UNICODE
+
+#define PD_ALLPAGES 0x00000000
+#define PD_SELECTION 0x00000001
+#define PD_PAGENUMS 0x00000002
+#define PD_NOSELECTION 0x00000004
+#define PD_NOPAGENUMS 0x00000008
+#define PD_COLLATE 0x00000010
+#define PD_PRINTTOFILE 0x00000020
+#define PD_PRINTSETUP 0x00000040
+#define PD_NOWARNING 0x00000080
+#define PD_RETURNDC 0x00000100
+#define PD_RETURNIC 0x00000200
+#define PD_RETURNDEFAULT 0x00000400
+#define PD_SHOWHELP 0x00000800
+#define PD_ENABLEPRINTHOOK 0x00001000
+#define PD_ENABLESETUPHOOK 0x00002000
+#define PD_ENABLEPRINTTEMPLATE 0x00004000
+#define PD_ENABLESETUPTEMPLATE 0x00008000
+#define PD_ENABLEPRINTTEMPLATEHANDLE 0x00010000
+#define PD_ENABLESETUPTEMPLATEHANDLE 0x00020000
+#define PD_USEDEVMODECOPIES 0x00040000
+#define PD_USEDEVMODECOPIESANDCOLLATE 0x00040000
+#define PD_DISABLEPRINTTOFILE 0x00080000
+#define PD_HIDEPRINTTOFILE 0x00100000
+#define PD_NONETWORKBUTTON 0x00200000
+
+typedef struct tagDEVNAMES {
+ WORD wDriverOffset;
+ WORD wDeviceOffset;
+ WORD wOutputOffset;
+ WORD wDefault;
+} DEVNAMES;
+
+typedef DEVNAMES * LPDEVNAMES;
+
+#define DN_DEFAULTPRN 0x0001
+
+
+DWORD APIENTRY CommDlgExtendedError(VOID);
+
+#if(WINVER >= 0x0400)
+#define WM_PSD_PAGESETUPDLG (WM_USER )
+#define WM_PSD_FULLPAGERECT (WM_USER+1)
+#define WM_PSD_MINMARGINRECT (WM_USER+2)
+#define WM_PSD_MARGINRECT (WM_USER+3)
+#define WM_PSD_GREEKTEXTRECT (WM_USER+4)
+#define WM_PSD_ENVSTAMPRECT (WM_USER+5)
+#define WM_PSD_YAFULLPAGERECT (WM_USER+6)
+
+typedef UINT (APIENTRY* LPPAGEPAINTHOOK)( HWND, UINT, WPARAM, LPARAM );
+typedef UINT (APIENTRY* LPPAGESETUPHOOK)( HWND, UINT, WPARAM, LPARAM );
+
+typedef struct tagPSDA
+{
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HGLOBAL hDevMode;
+ HGLOBAL hDevNames;
+ DWORD Flags;
+ POINT ptPaperSize;
+ RECT rtMinMargin;
+ RECT rtMargin;
+ HINSTANCE hInstance;
+ LPARAM lCustData;
+ LPPAGESETUPHOOK lpfnPageSetupHook;
+ LPPAGEPAINTHOOK lpfnPagePaintHook;
+ LPCSTR lpPageSetupTemplateName;
+ HGLOBAL hPageSetupTemplate;
+} PAGESETUPDLGA, * LPPAGESETUPDLGA;
+typedef struct tagPSDW
+{
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HGLOBAL hDevMode;
+ HGLOBAL hDevNames;
+ DWORD Flags;
+ POINT ptPaperSize;
+ RECT rtMinMargin;
+ RECT rtMargin;
+ HINSTANCE hInstance;
+ LPARAM lCustData;
+ LPPAGESETUPHOOK lpfnPageSetupHook;
+ LPPAGEPAINTHOOK lpfnPagePaintHook;
+ LPCWSTR lpPageSetupTemplateName;
+ HGLOBAL hPageSetupTemplate;
+} PAGESETUPDLGW, * LPPAGESETUPDLGW;
+#ifdef UNICODE
+typedef PAGESETUPDLGW PAGESETUPDLG;
+typedef LPPAGESETUPDLGW LPPAGESETUPDLG;
+#else
+typedef PAGESETUPDLGA PAGESETUPDLG;
+typedef LPPAGESETUPDLGA LPPAGESETUPDLG;
+#endif // UNICODE
+
+BOOL APIENTRY PageSetupDlgA( LPPAGESETUPDLGA );
+BOOL APIENTRY PageSetupDlgW( LPPAGESETUPDLGW );
+#ifdef UNICODE
+#define PageSetupDlg PageSetupDlgW
+#else
+#define PageSetupDlg PageSetupDlgA
+#endif // !UNICODE
+
+#define PSD_DEFAULTMINMARGINS 0x00000000 // default (printer's)
+#define PSD_INWININIINTLMEASURE 0x00000000 // 1st of 4 possible
+
+#define PSD_MINMARGINS 0x00000001 // use caller's
+#define PSD_MARGINS 0x00000002 // use caller's
+#define PSD_INTHOUSANDTHSOFINCHES 0x00000004 // 2nd of 4 possible
+#define PSD_INHUNDREDTHSOFMILLIMETERS 0x00000008 // 3rd of 4 possible
+#define PSD_DISABLEMARGINS 0x00000010
+#define PSD_DISABLEPRINTER 0x00000020
+#define PSD_NOWARNING 0x00000080 // must be same as PD_*
+#define PSD_DISABLEORIENTATION 0x00000100
+#define PSD_RETURNDEFAULT 0x00000400 // must be same as PD_*
+#define PSD_DISABLEPAPER 0x00000200
+#define PSD_SHOWHELP 0x00000800 // must be same as PD_*
+#define PSD_ENABLEPAGESETUPHOOK 0x00002000 // must be same as PD_*
+#define PSD_ENABLEPAGESETUPTEMPLATE 0x00008000 // must be same as PD_*
+#define PSD_ENABLEPAGESETUPTEMPLATEHANDLE 0x00020000 // must be same as PD_*
+#define PSD_ENABLEPAGEPAINTHOOK 0x00040000
+#define PSD_DISABLEPAGEPAINTING 0x00080000
+#define PSD_NONETWORKBUTTON 0x00200000 // must be same as PD_*
+#endif /* WINVER >= 0x0400 */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#include <poppack.h>
+#endif /* !_INC_COMMDLG */
diff --git a/public/sdk/inc/common.ver b/public/sdk/inc/common.ver
new file mode 100644
index 000000000..3cd306356
--- /dev/null
+++ b/public/sdk/inc/common.ver
@@ -0,0 +1,111 @@
+
+/*---------------------------------------------------------------*/
+/* */
+/* 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 */
+/* */
+/*---------------------------------------------------------------*/
+
+
+#ifndef VER_LEGALCOPYRIGHT_YEARS
+#define VER_LEGALCOPYRIGHT_YEARS "1981-1996"
+#endif
+
+#ifndef VER_LEGALCOPYRIGHT_STR
+#define VER_LEGALCOPYRIGHT_STR "Copyright (C) Microsoft Corp. " VER_LEGALCOPYRIGHT_YEARS
+#endif
+
+#ifndef VER_PRODUCTNAME_STR
+#define VER_PRODUCTNAME_STR "Microsoft (R) Windows NT(TM) Operating System"
+#endif
+
+#ifndef VER_PRODUCTVERSION
+#define VER_PRODUCTVERSION 4,00,01,001
+#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
+
+#ifdef EXPORT_CONTROLLED
+
+#ifdef EXPORT
+#define EXPORT_TAG " (Export Version)"
+#else
+#define EXPORT_TAG " (Domestic Use Only)"
+#endif
+
+#else /* Not Export Controlled */
+
+#define EXPORT_TAG
+
+#endif
+
+#ifdef RC_INVOKED
+
+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 EXPORT_TAG
+ 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/public/sdk/inc/compobj.h b/public/sdk/inc/compobj.h
new file mode 100644
index 000000000..4df6063ac
--- /dev/null
+++ b/public/sdk/inc/compobj.h
@@ -0,0 +1,15 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: compobj.h
+//
+//----------------------------------------------------------------------------
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: your code should #include objbase.h instead of compobj.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/cpl.h b/public/sdk/inc/cpl.h
new file mode 100644
index 000000000..1c9c2055c
--- /dev/null
+++ b/public/sdk/inc/cpl.h
@@ -0,0 +1,211 @@
+/*****************************************************************************\
+* *
+* cpl.h - Control panel extension DLL definitions *
+* *
+* Version 3.10 *
+* *
+* Copyright (c) 1992-1996, Microsoft Corp. All rights reserved *
+* *
+******************************************************************************/
+/*
+* General rules for being installed in the Control Panel:
+*
+* 1) The DLL must export a function named CPlApplet which will handle
+* the messages discussed below.
+* 2) If the applet needs to save information in CONTROL.INI minimize
+* clutter by using the application name [MMCPL.appletname].
+* 2) If the applet is refrenced in CONTROL.INI under [MMCPL] use
+* the following form:
+* ...
+* [MMCPL]
+* uniqueName=c:\mydir\myapplet.dll
+* ...
+*
+*
+* The order applet DLL's are loaded by CONTROL.EXE is not guaranteed.
+* Control panels may be sorted for display, etc.
+*
+*/
+#ifndef _INC_CPL
+#define _INC_CPL
+
+
+#include <pshpack1.h> /* Assume byte packing throughout */
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+/*
+ * CONTROL.EXE will answer this message and launch an applet
+ *
+ * WM_CPL_LAUNCH
+ *
+ * wParam - window handle of calling app
+ * lParam - LPTSTR of name of applet to launch
+ *
+ * WM_CPL_LAUNCHED
+ *
+ * wParam - TRUE/FALSE if applet was launched
+ * lParam - NULL
+ *
+ * CONTROL.EXE will post this message to the caller when the applet returns
+ * (ie., when wParam is a valid window handle)
+ *
+ */
+#define WM_CPL_LAUNCH (WM_USER+1000)
+#define WM_CPL_LAUNCHED (WM_USER+1001)
+
+/* A function prototype for CPlApplet() */
+
+//typedef LRESULT (APIENTRY *APPLET_PROC)(HWND hwndCpl, UINT msg, LPARAM lParam1, LPARAM lParam2);
+typedef LONG (APIENTRY *APPLET_PROC)(HWND hwndCpl, UINT msg, LONG lParam1, LONG lParam2);
+
+/* The data structure CPlApplet() must fill in. */
+
+typedef struct tagCPLINFO
+{
+ int idIcon; /* icon resource id, provided by CPlApplet() */
+ int idName; /* name string res. id, provided by CPlApplet() */
+ int idInfo; /* info string res. id, provided by CPlApplet() */
+ LONG lData; /* user defined data */
+} CPLINFO, *LPCPLINFO;
+
+typedef struct tagNEWCPLINFOA
+{
+ DWORD dwSize; /* similar to the commdlg */
+ DWORD dwFlags;
+ DWORD dwHelpContext; /* help context to use */
+ LONG lData; /* user defined data */
+ HICON hIcon; /* icon to use, this is owned by CONTROL.EXE (may be deleted) */
+ CHAR szName[32]; /* short name */
+ CHAR szInfo[64]; /* long name (status line) */
+ CHAR szHelpFile[128];/* path to help file to use */
+} NEWCPLINFOA, *LPNEWCPLINFOA;
+typedef struct tagNEWCPLINFOW
+{
+ DWORD dwSize; /* similar to the commdlg */
+ DWORD dwFlags;
+ DWORD dwHelpContext; /* help context to use */
+ LONG lData; /* user defined data */
+ HICON hIcon; /* icon to use, this is owned by CONTROL.EXE (may be deleted) */
+ WCHAR szName[32]; /* short name */
+ WCHAR szInfo[64]; /* long name (status line) */
+ WCHAR szHelpFile[128];/* path to help file to use */
+} NEWCPLINFOW, *LPNEWCPLINFOW;
+#ifdef UNICODE
+typedef NEWCPLINFOW NEWCPLINFO;
+typedef LPNEWCPLINFOW LPNEWCPLINFO;
+#else
+typedef NEWCPLINFOA NEWCPLINFO;
+typedef LPNEWCPLINFOA LPNEWCPLINFO;
+#endif // UNICODE
+
+#if(WINVER >= 0x0400)
+#define CPL_DYNAMIC_RES 0
+// This constant may be used in place of real resource IDs for the idIcon,
+// idName or idInfo members of the CPLINFO structure. Normally, the system
+// uses these values to extract copies of the resources and store them in a
+// cache. Once the resource information is in the cache, the system does not
+// need to load a CPL unless the user actually tries to use it.
+// CPL_DYNAMIC_RES tells the system not to cache the resource, but instead to
+// load the CPL every time it needs to display information about an item. This
+// allows a CPL to dynamically decide what information will be displayed, but
+// is SIGNIFICANTLY SLOWER than displaying information from a cache.
+// Typically, CPL_DYNAMIC_RES is used when a control panel must inspect the
+// runtime status of some device in order to provide text or icons to display.
+
+#endif /* WINVER >= 0x0400 */
+
+/* The messages CPlApplet() must handle: */
+
+#define CPL_INIT 1
+/* This message is sent to indicate CPlApplet() was found. */
+/* lParam1 and lParam2 are not defined. */
+/* Return TRUE or FALSE indicating whether the control panel should proceed. */
+
+
+#define CPL_GETCOUNT 2
+/* This message is sent to determine the number of applets to be displayed. */
+/* lParam1 and lParam2 are not defined. */
+/* Return the number of applets you wish to display in the control */
+/* panel window. */
+
+
+#define CPL_INQUIRE 3
+/* This message is sent for information about each applet. */
+
+/* A CPL SHOULD HANDLE BOTH THE CPL_INQUIRE AND CPL_NEWINQUIRE MESSAGES. */
+/* The developer must not make any assumptions about the order or dependance */
+/* of CPL inquiries. */
+
+/* lParam1 is the applet number to register, a value from 0 to */
+/* (CPL_GETCOUNT - 1). lParam2 is a far ptr to a CPLINFO structure. */
+/* Fill in CPLINFO's idIcon, idName, idInfo and lData fields with */
+/* the resource id for an icon to display, name and description string ids, */
+/* and a long data item associated with applet #lParam1. This information */
+/* may be cached by the caller at runtime and/or across sessions. */
+/* To prevent caching, see CPL_DYNAMIC_RES, above. */
+
+
+#define CPL_SELECT 4
+/* The CPL_SELECT message has been deleted. */
+
+
+#define CPL_DBLCLK 5
+/* This message is sent when the applet's icon has been double-clicked */
+/* upon. lParam1 is the applet number which was selected. lParam2 is the */
+/* applet's lData value. */
+/* This message should initiate the applet's dialog box. */
+
+
+#define CPL_STOP 6
+/* This message is sent for each applet when the control panel is exiting. */
+/* lParam1 is the applet number. lParam2 is the applet's lData value. */
+/* Do applet specific cleaning up here. */
+
+
+#define CPL_EXIT 7
+/* This message is sent just before the control panel calls FreeLibrary. */
+/* lParam1 and lParam2 are not defined. */
+/* Do non-applet specific cleaning up here. */
+
+
+#define CPL_NEWINQUIRE 8
+/* Same as CPL_INQUIRE execpt lParam2 is a pointer to a NEWCPLINFO struct. */
+
+/* A CPL SHOULD HANDLE BOTH THE CPL_INQUIRE AND CPL_NEWINQUIRE MESSAGES. */
+/* The developer must not make any assumptions about the order or dependance */
+/* of CPL inquiries. */
+
+#if(WINVER >= 0x0400)
+#define CPL_STARTWPARMSA 9
+#define CPL_STARTWPARMSW 10
+#ifdef UNICODE
+#define CPL_STARTWPARMS CPL_STARTWPARMSW
+#else
+#define CPL_STARTWPARMS CPL_STARTWPARMSA
+#endif
+
+/* this message parallels CPL_DBLCLK in that the applet should initiate
+** its dialog box. where it differs is that this invocation is coming
+** out of RUNDLL, and there may be some extra directions for execution.
+** lParam1: the applet number.
+** lParam2: an LPSTR to any extra directions that might exist.
+** returns: TRUE if the message was handled; FALSE if not.
+*/
+#endif /* WINVER >= 0x0400 */
+
+
+/* This message is internal to the Control Panel and MAIN applets. */
+/* It is only sent when an applet is invoked from the Command line */
+/* during system installation. */
+#define CPL_SETUP 200
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#include <poppack.h>
+
+#endif /* _INC_CPL */
diff --git a/public/sdk/inc/crash.h b/public/sdk/inc/crash.h
new file mode 100644
index 000000000..185214dcc
--- /dev/null
+++ b/public/sdk/inc/crash.h
@@ -0,0 +1,217 @@
+/*++
+
+Copyright (c) 1993 Microsoft Corporation
+
+Module Name:
+
+ crash.h
+
+Abstract:
+
+ This module implements support for handling crash dump files.
+
+ *** Use this file when linking againts crashxxx.lib
+
+Author:
+
+ Lou Perazzoli (Loup) 10-Nov-1993
+ Wesley Witt (wesw) 1-Dec-1993 (additional work)
+
+Environment:
+
+ NT 3.5
+
+Revision History:
+
+--*/
+
+#ifndef _CRASHLIB_
+#define _CRASHLIB_
+
+#include <ntiodump.h>
+
+#ifdef __cplusplus
+#pragma warning(disable:4200)
+extern "C" {
+#endif
+
+
+typedef struct _USERMODE_CRASHDUMP_HEADER {
+ DWORD Signature;
+ DWORD ValidDump;
+ DWORD MajorVersion;
+ DWORD MinorVersion;
+ DWORD MachineImageType;
+ DWORD ThreadCount;
+ DWORD ModuleCount;
+ DWORD MemoryRegionCount;
+ DWORD ThreadOffset;
+ DWORD ModuleOffset;
+ DWORD DataOffset;
+ DWORD MemoryRegionOffset;
+ DWORD DebugEventOffset;
+ DWORD ThreadStateOffset;
+ DWORD Spare0;
+ DWORD Spare1;
+} USERMODE_CRASHDUMP_HEADER, *PUSERMODE_CRASHDUMP_HEADER;
+
+typedef struct _CRASH_MODULE {
+ DWORD BaseOfImage;
+ DWORD SizeOfImage;
+ DWORD ImageNameLength;
+ CHAR ImageName[0];
+} CRASH_MODULE, *PCRASH_MODULE;
+
+typedef struct _CRASH_THREAD {
+ DWORD ThreadId;
+ DWORD SuspendCount;
+ DWORD PriorityClass;
+ DWORD Priority;
+ DWORD Teb;
+ DWORD Spare0;
+ DWORD Spare1;
+ DWORD Spare2;
+ DWORD Spare3;
+ DWORD Spare4;
+ DWORD Spare5;
+ DWORD Spare6;
+} CRASH_THREAD, *PCRASH_THREAD;
+
+
+//
+// usermode crash dump data types
+//
+#define DMP_EXCEPTION 1 // obsolete
+#define DMP_MEMORY_BASIC_INFORMATION 2
+#define DMP_THREAD_CONTEXT 3
+#define DMP_MODULE 4
+#define DMP_MEMORY_DATA 5
+#define DMP_DEBUG_EVENT 6
+#define DMP_THREAD_STATE 7
+
+//
+// usermode crashdump callback function
+//
+typedef BOOL (*PDMP_CREATE_DUMP_CALLBACK)(
+ DWORD DataType,
+ PVOID* DumpData,
+ LPDWORD DumpDataLength,
+ PVOID UserData
+ );
+
+BOOL
+DmpCreateUserDump(
+ IN LPSTR CrashDumpName,
+ IN PDMP_CREATE_DUMP_CALLBACK DmpCallback,
+ IN PVOID lpv
+ );
+
+
+BOOL
+DmpInitialize (
+ IN LPSTR FileName,
+ OUT PCONTEXT *Context,
+ OUT PEXCEPTION_RECORD *Exception,
+ OUT PVOID *DmpHeader
+ );
+
+VOID
+DmpUnInitialize (
+ VOID
+ );
+
+DWORD
+DmpReadMemory (
+ IN PVOID BaseAddress,
+ IN PVOID Buffer,
+ IN ULONG Size
+ );
+
+DWORD
+DmpWriteMemory (
+ IN PVOID BaseAddress,
+ IN PVOID Buffer,
+ IN ULONG Size
+ );
+
+PVOID
+VaToLocation (
+ IN PVOID VirtualAddress
+ );
+
+PVOID
+PhysicalToLocation (
+ IN PVOID PhysicalAddress
+ );
+
+PVOID
+PageToLocation (
+ IN ULONG Page
+ );
+
+ULONG
+GetPhysicalPage (
+ IN PVOID PhysicalAddress
+ );
+
+BOOL
+MapDumpFile(
+ IN LPSTR FileName
+ );
+
+ULONG
+PteToPfn (
+ IN ULONG Pte
+ );
+
+ULONG
+GetPhysicalPage (
+ IN PVOID PhysicalAddress
+ );
+
+DWORD
+DmpReadPhysicalMemory (
+ IN PVOID BaseAddress,
+ IN PVOID Buffer,
+ IN ULONG Size
+ );
+
+DWORD
+DmpWritePhysicalMemory (
+ IN PVOID BaseAddress,
+ IN PVOID Buffer,
+ IN ULONG Size
+ );
+
+BOOL
+DmpReadControlSpace(
+ IN USHORT Processor,
+ IN PVOID TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ OUT ULONG TransferCount,
+ OUT PULONG ActualBytesRead
+ );
+
+BOOL
+DmpGetContext(
+ IN ULONG Processor,
+ OUT PVOID Context
+ );
+
+INT
+DmpGetCurrentProcessor(
+ VOID
+ );
+
+BOOL
+DmpGetThread(
+ IN ULONG Processor,
+ OUT PCRASH_THREAD Thread
+ );
+
+#ifdef __cplusplus
+}
+#pragma warning(default:4200)
+#endif
+
+#endif
diff --git a/public/sdk/inc/crt/assert.h b/public/sdk/inc/crt/assert.h
new file mode 100644
index 000000000..70871a05f
--- /dev/null
+++ b/public/sdk/inc/crt/assert.h
@@ -0,0 +1,86 @@
+/***
+*assert.h - define the assert macro
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Defines the assert(exp) macro.
+* [ANSI/System V]
+*
+* [Public]
+*
+****/
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#undef assert
+
+#ifdef NDEBUG
+
+#define assert(exp) ((void)0)
+
+#else
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_CRTIMP void __cdecl _assert(void *, void *, unsigned);
+
+#ifdef __cplusplus
+}
+#endif
+
+#define assert(exp) (void)( (exp) || (_assert(#exp, __FILE__, __LINE__), 0) )
+
+#endif /* NDEBUG */
diff --git a/public/sdk/inc/crt/conio.h b/public/sdk/inc/crt/conio.h
new file mode 100644
index 000000000..5d6ebbfce
--- /dev/null
+++ b/public/sdk/inc/crt/conio.h
@@ -0,0 +1,148 @@
+/***
+*conio.h - console and port I/O declarations
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This include file contains the function declarations for
+* the MS C V2.03 compatible console I/O routines.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_CONIO
+#define _INC_CONIO
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifndef _MAC
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+/* Function prototypes */
+
+_CRTIMP char * __cdecl _cgets(char *);
+_CRTIMP int __cdecl _cprintf(const char *, ...);
+_CRTIMP int __cdecl _cputs(const char *);
+_CRTIMP int __cdecl _cscanf(const char *, ...);
+_CRTIMP int __cdecl _getch(void);
+_CRTIMP int __cdecl _getche(void);
+#ifdef _M_IX86
+int __cdecl _inp(unsigned short);
+unsigned short __cdecl _inpw(unsigned short);
+unsigned long __cdecl _inpd(unsigned short);
+#endif /* _M_IX86 */
+_CRTIMP int __cdecl _kbhit(void);
+#ifdef _M_IX86
+int __cdecl _outp(unsigned short, int);
+unsigned short __cdecl _outpw(unsigned short, unsigned short);
+unsigned long __cdecl _outpd(unsigned short, unsigned long);
+#endif /* _M_IX86 */
+_CRTIMP int __cdecl _putch(int);
+_CRTIMP int __cdecl _ungetch(int);
+
+
+#if !__STDC__
+
+/* Non-ANSI names for compatibility */
+
+#ifdef _NTSDK
+
+#define cgets _cgets
+#define cprintf _cprintf
+#define cputs _cputs
+#define cscanf _cscanf
+#define getch _getch
+#define getche _getche
+#define kbhit _kbhit
+#define putch _putch
+#define ungetch _ungetch
+
+#else /* ndef _NTSDK */
+
+_CRTIMP char * __cdecl cgets(char *);
+_CRTIMP int __cdecl cprintf(const char *, ...);
+_CRTIMP int __cdecl cputs(const char *);
+_CRTIMP int __cdecl cscanf(const char *, ...);
+#ifdef _M_IX86
+int __cdecl inp(unsigned short);
+unsigned short __cdecl inpw(unsigned short);
+#endif /* _M_IX86 */
+_CRTIMP int __cdecl getch(void);
+_CRTIMP int __cdecl getche(void);
+_CRTIMP int __cdecl kbhit(void);
+#ifdef _M_IX86
+int __cdecl outp(unsigned short, int);
+unsigned short __cdecl outpw(unsigned short, unsigned short);
+#endif /* _M_IX86 */
+_CRTIMP int __cdecl putch(int);
+_CRTIMP int __cdecl ungetch(int);
+
+#endif /* _NTSDK */
+
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MAC */
+
+#endif /* _INC_CONIO */
diff --git a/public/sdk/inc/crt/crtdbg.h b/public/sdk/inc/crt/crtdbg.h
new file mode 100644
index 000000000..ca04036ca
--- /dev/null
+++ b/public/sdk/inc/crt/crtdbg.h
@@ -0,0 +1,525 @@
+/***
+*crtdbg.h - Supports debugging features of the C runtime library.
+*
+* Copyright (c) 1994-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Support CRT debugging features.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_CRTDBG
+#define _INC_CRTDBG
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#ifndef _DEBUG
+
+ /****************************************************************************
+ *
+ * Debug OFF
+ * Debug OFF
+ * Debug OFF
+ *
+ ***************************************************************************/
+
+#define _ASSERT(expr) ((void)0)
+
+#define _ASSERTE(expr) ((void)0)
+
+
+#define _RPT0(rptno, msg)
+
+#define _RPT1(rptno, msg, arg1)
+
+#define _RPT2(rptno, msg, arg1, arg2)
+
+#define _RPT3(rptno, msg, arg1, arg2, arg3)
+
+#define _RPT4(rptno, msg, arg1, arg2, arg3, arg4)
+
+
+#define _RPTF0(rptno, msg)
+
+#define _RPTF1(rptno, msg, arg1)
+
+#define _RPTF2(rptno, msg, arg1, arg2)
+
+#define _RPTF3(rptno, msg, arg1, arg2, arg3)
+
+#define _RPTF4(rptno, msg, arg1, arg2, arg3, arg4)
+
+#define _malloc_dbg(s, t, f, l) malloc(s)
+#define _calloc_dbg(c, s, t, f, l) calloc(c, s)
+#define _realloc_dbg(p, s, t, f, l) realloc(p, s)
+#define _expand_dbg(p, s, t, f, l) _expand(p, s)
+#define _free_dbg(p, t) free(p)
+#define _msize_dbg(p, t) _msize(p)
+
+#define _CrtSetReportHook(f) ((void)0)
+#define _CrtSetReportMode(t, f) ((int)0)
+#define _CrtSetReportFile(t, f) ((void)0)
+
+#define _CrtDbgBreak() ((void)0)
+
+#define _CrtSetBreakAlloc(a) ((long)0)
+
+#define _CrtSetAllocHook(f) ((void)0)
+
+#define _CrtCheckMemory() ((int)1)
+#define _CrtSetDbgFlag(f) ((int)0)
+#define _CrtDoForAllClientObjects(f, c) ((void)0)
+#define _CrtIsValidPointer(p, n, r) ((int)1)
+#define _CrtIsValidHeapPointer(p) ((int)1)
+#define _CrtIsMemoryBlock(p, t, r, f, l) ((int)1)
+
+#define _CrtSetDumpClient(f) ((void)0)
+
+#define _CrtMemCheckpoint(s) ((void)0)
+#define _CrtMemDifference(s1, s2, s3) ((int)0)
+#define _CrtMemDumpAllObjectsSince(s) ((void)0)
+#define _CrtMemDumpStatistics(s) ((void)0)
+#define _CrtDumpMemoryLeaks() ((int)0)
+
+
+#else /* _DEBUG */
+
+
+ /****************************************************************************
+ *
+ * Debug ON
+ * Debug ON
+ * Debug ON
+ *
+ ***************************************************************************/
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+/* Define NULL pointer value */
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+ /****************************************************************************
+ *
+ * Debug Reporting
+ *
+ ***************************************************************************/
+
+typedef void *_HFILE; /* file handle pointer */
+
+#define _CRT_WARN 0
+#define _CRT_ERROR 1
+#define _CRT_ASSERT 2
+#define _CRT_ERRCNT 3
+
+#define _CRTDBG_MODE_FILE 0x1
+#define _CRTDBG_MODE_DEBUG 0x2
+#define _CRTDBG_MODE_WNDW 0x4
+#define _CRTDBG_REPORT_MODE -1
+
+#define _CRTDBG_INVALID_HFILE ((_HFILE)-1)
+#define _CRTDBG_HFILE_ERROR ((_HFILE)-2)
+#define _CRTDBG_FILE_STDOUT ((_HFILE)-4)
+#define _CRTDBG_FILE_STDERR ((_HFILE)-5)
+#define _CRTDBG_REPORT_FILE ((_HFILE)-6)
+
+#if defined(_DLL) && defined(_M_IX86)
+#define _crtAssertBusy (*__p__crtAssertBusy())
+_CRTIMP long * __cdecl __p__crtAssertBusy(void);
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+_CRTIMP extern long _crtAssertBusy;
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+typedef int (__cdecl * _CRT_REPORT_HOOK)(int, char *, int *);
+
+_CRTIMP _CRT_REPORT_HOOK __cdecl _CrtSetReportHook(
+ _CRT_REPORT_HOOK
+ );
+
+_CRTIMP int __cdecl _CrtSetReportMode(
+ int,
+ int
+ );
+
+_CRTIMP _HFILE __cdecl _CrtSetReportFile(
+ int,
+ _HFILE
+ );
+
+_CRTIMP int __cdecl _CrtDbgReport(
+ int,
+ const char *,
+ int,
+ const char *,
+ const char *,
+ ...);
+
+/* Asserts */
+
+#define _ASSERT(expr) \
+ do { if (!(expr) && \
+ (1 == _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, NULL, NULL))) \
+ _CrtDbgBreak(); } while (0)
+
+#define _ASSERTE(expr) \
+ do { if (!(expr) && \
+ (1 == _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, NULL, #expr))) \
+ _CrtDbgBreak(); } while (0)
+
+
+/* Reports with no file/line info */
+
+#define _RPT0(rptno, msg) \
+ do { if ((1 == _CrtDbgReport(rptno, NULL, 0, NULL, "%s", msg))) \
+ _CrtDbgBreak(); } while (0)
+
+#define _RPT1(rptno, msg, arg1) \
+ do { if ((1 == _CrtDbgReport(rptno, NULL, 0, NULL, msg, arg1))) \
+ _CrtDbgBreak(); } while (0)
+
+#define _RPT2(rptno, msg, arg1, arg2) \
+ do { if ((1 == _CrtDbgReport(rptno, NULL, 0, NULL, msg, arg1, arg2))) \
+ _CrtDbgBreak(); } while (0)
+
+#define _RPT3(rptno, msg, arg1, arg2, arg3) \
+ do { if ((1 == _CrtDbgReport(rptno, NULL, 0, NULL, msg, arg1, arg2, arg3))) \
+ _CrtDbgBreak(); } while (0)
+
+#define _RPT4(rptno, msg, arg1, arg2, arg3, arg4) \
+ do { if ((1 == _CrtDbgReport(rptno, NULL, 0, NULL, msg, arg1, arg2, arg3, arg4))) \
+ _CrtDbgBreak(); } while (0)
+
+
+/* Reports with file/line info */
+
+#define _RPTF0(rptno, msg) \
+ do { if ((1 == _CrtDbgReport(rptno, __FILE__, __LINE__, NULL, "%s", msg))) \
+ _CrtDbgBreak(); } while (0)
+
+#define _RPTF1(rptno, msg, arg1) \
+ do { if ((1 == _CrtDbgReport(rptno, __FILE__, __LINE__, NULL, msg, arg1))) \
+ _CrtDbgBreak(); } while (0)
+
+#define _RPTF2(rptno, msg, arg1, arg2) \
+ do { if ((1 == _CrtDbgReport(rptno, __FILE__, __LINE__, NULL, msg, arg1, arg2))) \
+ _CrtDbgBreak(); } while (0)
+
+#define _RPTF3(rptno, msg, arg1, arg2, arg3) \
+ do { if ((1 == _CrtDbgReport(rptno, __FILE__, __LINE__, NULL, msg, arg1, arg2, arg3))) \
+ _CrtDbgBreak(); } while (0)
+
+#define _RPTF4(rptno, msg, arg1, arg2, arg3, arg4) \
+ do { if ((1 == _CrtDbgReport(rptno, __FILE__, __LINE__, NULL, msg, arg1, arg2, arg3, arg4))) \
+ _CrtDbgBreak(); } while (0)
+
+#if defined(_M_IX86) && !defined(_CRT_PORTABLE)
+#define _CrtDbgBreak() __asm { int 3 }
+#elif defined(_M_ALPHA) && !defined(_CRT_PORTABLE)
+void _BPT();
+#pragma intrinsic(_BPT)
+#define _CrtDbgBreak() _BPT()
+#else
+_CRTIMP void __cdecl _CrtDbgBreak(
+ void
+ );
+#endif
+
+ /****************************************************************************
+ *
+ * Heap routines
+ *
+ ***************************************************************************/
+
+#ifdef _CRTDBG_MAP_ALLOC
+
+#define malloc(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__)
+#define calloc(c, s) _calloc_dbg(c, s, _NORMAL_BLOCK, __FILE__, __LINE__)
+#define realloc(p, s) _realloc_dbg(p, s, _NORMAL_BLOCK, __FILE__, __LINE__)
+#define _expand(p, s) _expand_dbg(p, s, _NORMAL_BLOCK, __FILE__, __LINE__)
+#define free(p) _free_dbg(p, _NORMAL_BLOCK)
+#define _msize(p) _msize_dbg(p, _NORMAL_BLOCK)
+
+#endif /* _CRTDBG_MAP_ALLOC */
+
+#if defined(_DLL) && defined(_M_IX86)
+#define _crtBreakAlloc (*__p__crtBreakAlloc())
+_CRTIMP long * __cdecl __p__crtBreakAlloc(void);
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+_CRTIMP extern long _crtBreakAlloc; /* Break on this allocation */
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+_CRTIMP long __cdecl _CrtSetBreakAlloc(
+ long
+ );
+
+/*
+ * Prototypes for malloc, free, realloc, etc are in malloc.h
+ */
+
+_CRTIMP void * __cdecl _malloc_dbg(
+ size_t,
+ int,
+ const char *,
+ int
+ );
+
+_CRTIMP void * __cdecl _calloc_dbg(
+ size_t,
+ size_t,
+ int,
+ const char *,
+ int
+ );
+
+_CRTIMP void * __cdecl _realloc_dbg(
+ void *,
+ size_t,
+ int,
+ const char *,
+ int
+ );
+
+_CRTIMP void * __cdecl _expand_dbg(
+ void *,
+ size_t,
+ int,
+ const char *,
+ int
+ );
+
+_CRTIMP void __cdecl _free_dbg(
+ void *,
+ int
+ );
+
+_CRTIMP size_t __cdecl _msize_dbg (
+ void *,
+ int
+ );
+
+
+ /****************************************************************************
+ *
+ * Client-defined allocation hook
+ *
+ ***************************************************************************/
+
+#define _HOOK_ALLOC 1
+#define _HOOK_REALLOC 2
+#define _HOOK_FREE 3
+
+typedef int (__cdecl * _CRT_ALLOC_HOOK)(int, void *, size_t, int, long, const char *, int);
+
+_CRTIMP _CRT_ALLOC_HOOK __cdecl _CrtSetAllocHook(
+ _CRT_ALLOC_HOOK
+ );
+
+
+ /****************************************************************************
+ *
+ * Memory management
+ *
+ ***************************************************************************/
+
+/*
+ * Bitfield flag that controls CRT heap behavior
+ * Default setting is _CRTDBG_ALLOC_MEM_DF
+ */
+
+#if defined(_DLL) && defined(_M_IX86)
+#define _crtDbgFlag (*__p__crtDbgFlag())
+_CRTIMP int * __cdecl __p__crtDbgFlag(void);
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+_CRTIMP extern int _crtDbgFlag;
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+/*
+ * Bit values for _crtDbgFlag flag:
+ *
+ * These bitflags control debug heap behavior.
+ */
+
+#define _CRTDBG_ALLOC_MEM_DF 0x01 /* Turn on debug allocation */
+#define _CRTDBG_DELAY_FREE_MEM_DF 0x02 /* Don't actually free memory */
+#define _CRTDBG_CHECK_ALWAYS_DF 0x04 /* Check heap every alloc/dealloc */
+#define _CRTDBG_RESERVED_DF 0x08 /* Reserved - do not use */
+#define _CRTDBG_CHECK_CRT_DF 0x10 /* Leak check/diff CRT blocks */
+#define _CRTDBG_LEAK_CHECK_DF 0x20 /* Leak check at program exit */
+
+#define _CRTDBG_REPORT_FLAG -1 /* Query bitflag status */
+
+#define _BLOCK_TYPE(block) (block & 0xFFFF)
+#define _BLOCK_SUBTYPE(block) (block >> 16 & 0xFFFF)
+
+_CRTIMP int __cdecl _CrtCheckMemory(
+ void
+ );
+
+_CRTIMP int __cdecl _CrtSetDbgFlag(
+ int
+ );
+
+_CRTIMP void __cdecl _CrtDoForAllClientObjects(
+ void (*pfn)(void *, void *),
+ void *
+ );
+
+_CRTIMP int __cdecl _CrtIsValidPointer(
+ const void *,
+ unsigned int,
+ int
+ );
+
+_CRTIMP int __cdecl _CrtIsValidHeapPointer(
+ const void *
+ );
+
+_CRTIMP int __cdecl _CrtIsMemoryBlock(
+ const void *,
+ unsigned int,
+ long *,
+ char **,
+ int *
+ );
+
+
+ /****************************************************************************
+ *
+ * Memory state
+ *
+ ***************************************************************************/
+
+/* Memory block identification */
+#define _FREE_BLOCK 0
+#define _NORMAL_BLOCK 1
+#define _CRT_BLOCK 2
+#define _IGNORE_BLOCK 3
+#define _CLIENT_BLOCK 4
+#define _MAX_BLOCKS 5
+
+typedef void (__cdecl * _CRT_DUMP_CLIENT)(void *, size_t);
+
+_CRTIMP _CRT_DUMP_CLIENT __cdecl _CrtSetDumpClient(
+ _CRT_DUMP_CLIENT
+ );
+
+typedef struct _CrtMemState
+{
+ struct _CrtMemBlockHeader * pBlockHeader;
+ unsigned long lCounts[_MAX_BLOCKS];
+ unsigned long lSizes[_MAX_BLOCKS];
+ unsigned long lHighWaterCount;
+ unsigned long lTotalCount;
+} _CrtMemState;
+
+
+_CRTIMP void __cdecl _CrtMemCheckpoint(
+ _CrtMemState *
+ );
+
+_CRTIMP int __cdecl _CrtMemDifference(
+ _CrtMemState *,
+ const _CrtMemState *,
+ const _CrtMemState *
+ );
+
+_CRTIMP void __cdecl _CrtMemDumpAllObjectsSince(
+ const _CrtMemState *
+ );
+
+_CRTIMP void __cdecl _CrtMemDumpStatistics(
+ const _CrtMemState *
+ );
+
+_CRTIMP int __cdecl _CrtDumpMemoryLeaks(
+ void
+ );
+
+#endif /* _DEBUG */
+
+#ifdef __cplusplus
+}
+
+#ifndef _DEBUG
+
+ /****************************************************************************
+ *
+ * Debug OFF
+ * Debug OFF
+ * Debug OFF
+ *
+ ***************************************************************************/
+
+inline void* __cdecl operator new(unsigned int s, int, const char *, int)
+ { return ::operator new(s); }
+
+#else /* _DEBUG */
+
+ /****************************************************************************
+ *
+ * Debug ON
+ * Debug ON
+ * Debug ON
+ *
+ ***************************************************************************/
+
+_CRTIMP void * __cdecl operator new(
+ unsigned int,
+ int,
+ const char *,
+ int
+ );
+
+#ifdef _CRTDBG_MAP_ALLOC
+
+inline void* __cdecl operator new(unsigned int s)
+ { return ::operator new(s, _NORMAL_BLOCK, __FILE__, __LINE__); }
+
+#endif /* _CRTDBG_MAP_ALLOC */
+
+#endif /* _DEBUG */
+
+#endif /* __cplusplus */
+
+
+#endif /* _INC_CRTDBG */
diff --git a/public/sdk/inc/crt/ctype.h b/public/sdk/inc/crt/ctype.h
new file mode 100644
index 000000000..432ba1017
--- /dev/null
+++ b/public/sdk/inc/crt/ctype.h
@@ -0,0 +1,349 @@
+/***
+*ctype.h - character conversion macros and ctype macros
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Defines macros for character classification/conversion.
+* [ANSI/System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_CTYPE
+#define _INC_CTYPE
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+#ifndef _MAC
+#ifndef _WCTYPE_T_DEFINED
+typedef wchar_t wint_t;
+typedef wchar_t wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+#ifndef WEOF
+#define WEOF (wint_t)(0xFFFF)
+#endif
+#endif /* ndef _MAC */
+
+/*
+ * These declarations allow the user access to the ctype look-up
+ * array _ctype defined in ctype.obj by simply including ctype.h
+ */
+#ifndef _CTYPE_DISABLE_MACROS
+
+#ifdef _NTSDK
+
+/* Definitions and declarations compatible with the NT SDK */
+
+#ifdef _DLL
+
+extern unsigned short * _ctype;
+#define _pctype (*_pctype_dll)
+extern unsigned short **_pctype_dll;
+#define _pwctype (*_pwctype_dll)
+extern unsigned short **_pwctype_dll;
+
+#else /* _DLL */
+
+
+extern unsigned short _ctype[];
+extern unsigned short *_pctype;
+extern wctype_t *_pwctype;
+
+#endif /* _DLL */
+
+#else /* ndef _NTSDK */
+
+/* Current declarations */
+_CRTIMP extern unsigned short _ctype[];
+
+#if defined(_DLL) && defined(_M_IX86)
+
+#define _pctype (*__p__pctype())
+_CRTIMP unsigned short ** __cdecl __p__pctype(void);
+
+#define _pwctype (*__p__pwctype())
+_CRTIMP wctype_t ** __cdecl ___p__pwctype(void);
+
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+
+_CRTIMP extern unsigned short *_pctype;
+#ifndef _MAC
+_CRTIMP extern wctype_t *_pwctype;
+#endif /* ndef _MAC */
+
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+#endif /* _NTSDK */
+
+#endif /* _CTYPE_DISABLE_MACROS */
+
+/* set bit masks for the possible character types */
+
+#define _UPPER 0x1 /* upper case letter */
+#define _LOWER 0x2 /* lower case letter */
+#define _DIGIT 0x4 /* digit[0-9] */
+#define _SPACE 0x8 /* tab, carriage return, newline, */
+ /* vertical tab or form feed */
+#define _PUNCT 0x10 /* punctuation character */
+#define _CONTROL 0x20 /* control character */
+#define _BLANK 0x40 /* space char */
+#define _HEX 0x80 /* hexadecimal digit */
+
+#define _LEADBYTE 0x8000 /* multibyte leadbyte */
+#define _ALPHA (0x0100|_UPPER|_LOWER) /* alphabetic character */
+
+/* character classification function prototypes */
+
+#ifndef _CTYPE_DEFINED
+
+_CRTIMP int __cdecl _isctype(int, int);
+
+_CRTIMP int __cdecl isalpha(int);
+_CRTIMP int __cdecl isupper(int);
+_CRTIMP int __cdecl islower(int);
+_CRTIMP int __cdecl isdigit(int);
+_CRTIMP int __cdecl isxdigit(int);
+_CRTIMP int __cdecl isspace(int);
+_CRTIMP int __cdecl ispunct(int);
+_CRTIMP int __cdecl isalnum(int);
+_CRTIMP int __cdecl isprint(int);
+_CRTIMP int __cdecl isgraph(int);
+_CRTIMP int __cdecl iscntrl(int);
+_CRTIMP int __cdecl toupper(int);
+_CRTIMP int __cdecl tolower(int);
+_CRTIMP int __cdecl _tolower(int);
+_CRTIMP int __cdecl _toupper(int);
+_CRTIMP int __cdecl __isascii(int);
+_CRTIMP int __cdecl __toascii(int);
+_CRTIMP int __cdecl __iscsymf(int);
+_CRTIMP int __cdecl __iscsym(int);
+#define _CTYPE_DEFINED
+#endif
+
+#ifndef _MAC
+#ifndef _WCTYPE_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+/* character classification function prototypes */
+
+_CRTIMP int __cdecl iswalpha(wint_t);
+_CRTIMP int __cdecl iswupper(wint_t);
+_CRTIMP int __cdecl iswlower(wint_t);
+_CRTIMP int __cdecl iswdigit(wint_t);
+_CRTIMP int __cdecl iswxdigit(wint_t);
+_CRTIMP int __cdecl iswspace(wint_t);
+_CRTIMP int __cdecl iswpunct(wint_t);
+_CRTIMP int __cdecl iswalnum(wint_t);
+_CRTIMP int __cdecl iswprint(wint_t);
+_CRTIMP int __cdecl iswgraph(wint_t);
+_CRTIMP int __cdecl iswcntrl(wint_t);
+_CRTIMP int __cdecl iswascii(wint_t);
+_CRTIMP int __cdecl isleadbyte(int);
+
+_CRTIMP wchar_t __cdecl towupper(wchar_t);
+_CRTIMP wchar_t __cdecl towlower(wchar_t);
+
+_CRTIMP int __cdecl iswctype(wint_t, wctype_t);
+
+/* --------- The following functions are OBSOLETE --------- */
+_CRTIMP int __cdecl is_wctype(wint_t, wctype_t);
+/* --------- The preceding functions are OBSOLETE --------- */
+
+#define _WCTYPE_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+/* the character classification macro definitions */
+
+#ifndef _CTYPE_DISABLE_MACROS
+
+/*
+ * Maximum number of bytes in multi-byte character in the current locale
+ * (also defined in stdlib.h).
+ */
+#ifndef MB_CUR_MAX
+
+#ifdef _NTSDK
+
+/* definition compatible with NT SDK */
+#ifdef _DLL
+#define __mb_cur_max (*__mb_cur_max_dll)
+#define MB_CUR_MAX (*__mb_cur_max_dll)
+extern unsigned short *__mb_cur_max_dll;
+#else /* ndef _DLL */
+#define MB_CUR_MAX __mb_cur_max
+extern unsigned short __mb_cur_max;
+#endif /* _DLL */
+
+#else /* ndef _NTSDK */
+
+/* current definition */
+#if defined(_DLL) && defined(_M_IX86)
+#define MB_CUR_MAX (*__p___mb_cur_max())
+_CRTIMP int * __cdecl __p___mb_cur_max(void);
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+#define MB_CUR_MAX __mb_cur_max
+_CRTIMP extern int __mb_cur_max;
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+#endif /* _NTSDK */
+
+#endif /* MB_CUR_MAX */
+
+#if defined(_M_MPPC) || defined(_M_M68K)
+#define isalpha(_c) ( _pctype[_c] & (_UPPER|_LOWER) )
+#define isupper(_c) ( _pctype[_c] & _UPPER )
+#define islower(_c) ( _pctype[_c] & _LOWER )
+#define isdigit(_c) ( _pctype[_c] & _DIGIT )
+#define isxdigit(_c)( _pctype[_c] & _HEX )
+#define isspace(_c) ( _pctype[_c] & _SPACE )
+#define ispunct(_c) ( _pctype[_c] & _PUNCT )
+#define isalnum(_c) ( _pctype[_c] & (_UPPER|_LOWER|_DIGIT) )
+#define isprint(_c) ( _pctype[_c] & (_BLANK|_PUNCT|_UPPER|_LOWER|_DIGIT) )
+#define isgraph(_c) ( _pctype[_c] & (_PUNCT|_UPPER|_LOWER|_DIGIT) )
+#define iscntrl(_c) ( _pctype[_c] & _CONTROL )
+#else
+#define isalpha(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_ALPHA) : _pctype[_c] & _ALPHA)
+#define isupper(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_UPPER) : _pctype[_c] & _UPPER)
+#define islower(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_LOWER) : _pctype[_c] & _LOWER)
+#define isdigit(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_DIGIT) : _pctype[_c] & _DIGIT)
+#define isxdigit(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_HEX) : _pctype[_c] & _HEX)
+#define isspace(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_SPACE) : _pctype[_c] & _SPACE)
+#define ispunct(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_PUNCT) : _pctype[_c] & _PUNCT)
+#define isalnum(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_ALPHA|_DIGIT) : _pctype[_c] & (_ALPHA|_DIGIT))
+#define isprint(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT) : _pctype[_c] & (_BLANK|_PUNCT|_ALPHA|_DIGIT))
+#define isgraph(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_PUNCT|_ALPHA|_DIGIT) : _pctype[_c] & (_PUNCT|_ALPHA|_DIGIT))
+#define iscntrl(_c) (MB_CUR_MAX > 1 ? _isctype(_c,_CONTROL) : _pctype[_c] & _CONTROL)
+#endif /* _M_MPPC || _M_M68K */
+
+#define _tolower(_c) ( (_c)-'A'+'a' )
+#define _toupper(_c) ( (_c)-'a'+'A' )
+
+#define __isascii(_c) ( (unsigned)(_c) < 0x80 )
+#define __toascii(_c) ( (_c) & 0x7f )
+
+#define iswalpha(_c) ( iswctype(_c,_ALPHA) )
+#define iswupper(_c) ( iswctype(_c,_UPPER) )
+#define iswlower(_c) ( iswctype(_c,_LOWER) )
+#define iswdigit(_c) ( iswctype(_c,_DIGIT) )
+#define iswxdigit(_c) ( iswctype(_c,_HEX) )
+#define iswspace(_c) ( iswctype(_c,_SPACE) )
+#define iswpunct(_c) ( iswctype(_c,_PUNCT) )
+#define iswalnum(_c) ( iswctype(_c,_ALPHA|_DIGIT) )
+#define iswprint(_c) ( iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT) )
+#define iswgraph(_c) ( iswctype(_c,_PUNCT|_ALPHA|_DIGIT) )
+#define iswcntrl(_c) ( iswctype(_c,_CONTROL) )
+#define iswascii(_c) ( (unsigned)(_c) < 0x80 )
+
+#define isleadbyte(_c) (_pctype[(unsigned char)(_c)] & _LEADBYTE)
+
+/* MS C version 2.0 extended ctype macros */
+
+#define __iscsymf(_c) (isalpha(_c) || ((_c) == '_'))
+#define __iscsym(_c) (isalnum(_c) || ((_c) == '_'))
+
+#endif /* _CTYPE_DISABLE_MACROS */
+
+
+#if !__STDC__
+
+/* Non-ANSI names for compatibility */
+
+#ifdef _NTSDK
+
+#define isascii __isascii
+#define toascii __toascii
+#define iscsymf __iscsymf
+#define iscsym __iscsym
+
+#else /* ndef _NTSDK */
+
+#ifndef _CTYPE_DEFINED
+_CRTIMP int __cdecl isascii(int);
+_CRTIMP int __cdecl toascii(int);
+_CRTIMP int __cdecl iscsymf(int);
+_CRTIMP int __cdecl iscsym(int);
+#else
+#define isascii __isascii
+#define toascii __toascii
+#define iscsymf __iscsymf
+#define iscsym __iscsym
+#endif
+
+#endif /* _NTSDK */
+
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _INC_CTYPE */
diff --git a/public/sdk/inc/crt/direct.h b/public/sdk/inc/crt/direct.h
new file mode 100644
index 000000000..261d3c060
--- /dev/null
+++ b/public/sdk/inc/crt/direct.h
@@ -0,0 +1,177 @@
+/***
+*direct.h - function declarations for directory handling/creation
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This include file contains the function declarations for the library
+* functions related to directory handling and creation.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_DIRECT
+#define _INC_DIRECT
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+#ifndef _MAC
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _MAC
+/* _getdiskfree structure for _getdiskfree() */
+#ifndef _DISKFREE_T_DEFINED
+
+struct _diskfree_t {
+ unsigned total_clusters;
+ unsigned avail_clusters;
+ unsigned sectors_per_cluster;
+ unsigned bytes_per_sector;
+ };
+
+#define _DISKFREE_T_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+/* function prototypes */
+
+_CRTIMP int __cdecl _chdir(const char *);
+_CRTIMP char * __cdecl _getcwd(char *, int);
+_CRTIMP int __cdecl _mkdir(const char *);
+_CRTIMP int __cdecl _rmdir(const char *);
+
+#ifndef _MAC
+_CRTIMP int __cdecl _chdrive(int);
+_CRTIMP char * __cdecl _getdcwd(int, char *, int);
+_CRTIMP int __cdecl _getdrive(void);
+_CRTIMP unsigned long __cdecl _getdrives(void);
+_CRTIMP unsigned __cdecl _getdiskfree(unsigned, struct _diskfree_t *);
+#endif /* ndef _MAC */
+
+
+#ifndef _MAC
+#ifndef _WDIRECT_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+_CRTIMP int __cdecl _wchdir(const wchar_t *);
+_CRTIMP wchar_t * __cdecl _wgetcwd(wchar_t *, int);
+_CRTIMP wchar_t * __cdecl _wgetdcwd(int, wchar_t *, int);
+_CRTIMP int __cdecl _wmkdir(const wchar_t *);
+_CRTIMP int __cdecl _wrmdir(const wchar_t *);
+
+#define _WDIRECT_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+
+#if !__STDC__
+
+/* Non-ANSI names for compatibility */
+
+#ifdef _NTSDK
+
+#define chdir _chdir
+#define getcwd _getcwd
+#define mkdir _mkdir
+#define rmdir _rmdir
+
+#else /* _NTSDK */
+
+_CRTIMP int __cdecl chdir(const char *);
+_CRTIMP char * __cdecl getcwd(char *, int);
+_CRTIMP int __cdecl mkdir(const char *);
+_CRTIMP int __cdecl rmdir(const char *);
+
+#endif /* _NTSDK */
+
+#ifndef _MAC
+#define diskfree_t _diskfree_t
+#endif /* ndef _MAC */
+
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_DIRECT */
diff --git a/public/sdk/inc/crt/dos.h b/public/sdk/inc/crt/dos.h
new file mode 100644
index 000000000..e9d4c351a
--- /dev/null
+++ b/public/sdk/inc/crt/dos.h
@@ -0,0 +1,205 @@
+/***
+*dos.h - definitions for MS-DOS interface routines
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Defines the structs and unions used for the direct DOS interface
+* routines; includes macros to access the segment and offset
+* values of far pointers, so that they may be used by the routines; and
+* provides function prototypes for direct DOS interface functions.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_DOS
+#define _INC_DOS
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+#ifndef _MAC
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+#ifndef _MAC
+#ifndef _DISKFREE_T_DEFINED
+/* _getdiskfree structure (duplicated in DIRECT.H) */
+struct _diskfree_t {
+ unsigned total_clusters;
+ unsigned avail_clusters;
+ unsigned sectors_per_cluster;
+ unsigned bytes_per_sector;
+ };
+
+#define _DISKFREE_T_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+/* File attribute constants */
+
+#define _A_NORMAL 0x00 /* Normal file - No read/write restrictions */
+#define _A_RDONLY 0x01 /* Read only file */
+#define _A_HIDDEN 0x02 /* Hidden file */
+#define _A_SYSTEM 0x04 /* System file */
+#define _A_SUBDIR 0x10 /* Subdirectory */
+#define _A_ARCH 0x20 /* Archive file */
+
+#ifdef _NTSDK
+
+/* External variable declarations */
+
+/*
+ * WARNING! The _osversion, _osmajor, _osminor, _baseversion, _basemajor and
+ * _baseminor variables were never meaningfully defined in the C runtime
+ * libraries for Win32 platforms. Any code which references these variables
+ * should be revised (see the declarations for version information variables
+ * in stdlib.h).
+ */
+
+#ifdef _DLL
+
+/* --------- The following block is OBSOLETE --------- */
+
+#define _osversion (*_osversion_dll)
+#define _osmajor (*_osmajor_dll)
+#define _osminor (*_osminor_dll)
+#define _baseversion (*_baseversion_dll)
+#define _basemajor (*_basemajor_dll)
+#define _baseminor (*_baseminor_dll)
+
+extern unsigned int * _osversion_dll;
+extern unsigned int * _osmajor_dll;
+extern unsigned int * _osminor_dll;
+extern unsigned int * _baseversion_dll;
+extern unsigned int * _basemajor_dll;
+extern unsigned int * _baseminor_dll;
+
+/* --------- The preceding block is OBSOLETE --------- */
+
+#define _pgmptr (*_pgmptr_dll)
+extern char ** _pgmptr_dll;
+
+#ifndef _MAC
+#define _wpgmptr (*_wpgmptr_dll)
+extern wchar_t ** _wpgmptr_dll;
+#endif /* ndef _MAC */
+
+#else /* ndef _DLL */
+
+/* --------- The following block is OBSOLETE --------- */
+
+
+extern unsigned int _osversion;
+extern unsigned int _osmajor;
+extern unsigned int _osminor;
+extern unsigned int _baseversion;
+extern unsigned int _basemajor;
+extern unsigned int _baseminor;
+
+/* --------- The preceding block is OBSOLETE --------- */
+
+
+extern char * _pgmptr;
+#ifndef _MAC
+extern wchar_t * _wpgmptr;
+#endif /* ndef _MAC */
+
+#endif /* _DLL */
+
+#endif /* _NTSDK */
+
+#ifndef _MAC
+/* Function prototypes */
+_CRTIMP unsigned __cdecl _getdiskfree(unsigned, struct _diskfree_t *);
+#endif /* ndef _MAC */
+
+#ifdef _M_IX86
+void __cdecl _disable(void);
+void __cdecl _enable(void);
+#endif /* _M_IX86 */
+
+#ifndef _MAC
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#define diskfree_t _diskfree_t
+#endif /* __STDC__ */
+#endif /* ndef _MAC */
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_DOS */
diff --git a/public/sdk/inc/crt/eh.h b/public/sdk/inc/crt/eh.h
new file mode 100644
index 000000000..39da7ca7b
--- /dev/null
+++ b/public/sdk/inc/crt/eh.h
@@ -0,0 +1,94 @@
+/***
+*eh.h - User include file for exception handling.
+*
+* Copyright (c) 1993-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* User include file for exception handling.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_EH
+#define _INC_EH
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+// Currently, all MS C compilers for Win32 platforms default to 8 byte
+// alignment.
+#pragma pack(push,8)
+#endif // _MSC_VER
+
+#ifndef __cplusplus
+#error "eh.h is only for C++!"
+#endif
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+typedef void (_CRTAPI1 *terminate_function)();
+typedef void (_CRTAPI1 *unexpected_function)();
+
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+struct _EXCEPTION_POINTERS;
+typedef void (_CRTAPI1 *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);
+#endif
+
+_CRTIMP void _CRTAPI1 terminate(void);
+_CRTIMP void _CRTAPI1 unexpected(void);
+
+_CRTIMP terminate_function _CRTAPI1 set_terminate(terminate_function);
+_CRTIMP unexpected_function _CRTAPI1 set_unexpected(unexpected_function);
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+_CRTIMP _se_translator_function _CRTAPI1 _set_se_translator(_se_translator_function);
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif // _MSC_VER
+
+#endif // _INC_EH
diff --git a/public/sdk/inc/crt/errno.h b/public/sdk/inc/crt/errno.h
new file mode 100644
index 000000000..f0a4a4e35
--- /dev/null
+++ b/public/sdk/inc/crt/errno.h
@@ -0,0 +1,138 @@
+/***
+*errno.h - system wide error numbers (set by system calls)
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the system-wide error numbers (set by
+* system calls). Conforms to the XENIX standard. Extended
+* for compatibility with Uniforum standard.
+* [System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_ERRNO
+#define _INC_ERRNO
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+/* declare reference to errno */
+
+#if (defined(_MT) || defined(_DLL)) && (!defined(_M_MPPC) && !defined(_M_M68K))
+_CRTIMP extern int * __cdecl _errno(void);
+#define errno (*_errno())
+#else /* ndef _MT && ndef _DLL */
+_CRTIMP extern int errno;
+#endif /* _MT || _DLL */
+
+/* Error Codes */
+
+#define EPERM 1
+#define ENOENT 2
+#define ESRCH 3
+#define EINTR 4
+#define EIO 5
+#define ENXIO 6
+#define E2BIG 7
+#define ENOEXEC 8
+#define EBADF 9
+#define ECHILD 10
+#define EAGAIN 11
+#define ENOMEM 12
+#define EACCES 13
+#define EFAULT 14
+#define EBUSY 16
+#define EEXIST 17
+#define EXDEV 18
+#define ENODEV 19
+#define ENOTDIR 20
+#define EISDIR 21
+#define EINVAL 22
+#define ENFILE 23
+#define EMFILE 24
+#define ENOTTY 25
+#define EFBIG 27
+#define ENOSPC 28
+#define ESPIPE 29
+#define EROFS 30
+#define EMLINK 31
+#define EPIPE 32
+#define EDOM 33
+#define ERANGE 34
+#define EDEADLK 36
+#define ENAMETOOLONG 38
+#define ENOLCK 39
+#define ENOSYS 40
+#define ENOTEMPTY 41
+#define EILSEQ 42
+
+/*
+ * Support EDEADLOCK for compatibiity with older MS-C versions.
+ */
+#define EDEADLOCK EDEADLK
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_ERRNO */
diff --git a/public/sdk/inc/crt/excpt.h b/public/sdk/inc/crt/excpt.h
new file mode 100644
index 000000000..14c3684c5
--- /dev/null
+++ b/public/sdk/inc/crt/excpt.h
@@ -0,0 +1,181 @@
+/***
+*excpt.h - defines exception values, types and routines
+*
+* Copyright (c) 1990-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains the definitions and prototypes for the compiler-
+* dependent intrinsics, support functions and keywords which implement
+* the structured exception handling extensions.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_EXCPT
+#define _INC_EXCPT
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+/*
+ * Exception disposition return values.
+ */
+typedef enum _EXCEPTION_DISPOSITION {
+ ExceptionContinueExecution,
+ ExceptionContinueSearch,
+ ExceptionNestedException,
+ ExceptionCollidedUnwind
+} EXCEPTION_DISPOSITION;
+
+
+/*
+ * Prototype for SEH support function.
+ */
+
+#ifdef _M_IX86
+
+/*
+ * Declarations to keep MS C 8 (386/486) compiler happy
+ */
+struct _EXCEPTION_RECORD;
+struct _CONTEXT;
+
+EXCEPTION_DISPOSITION __cdecl _except_handler (
+ struct _EXCEPTION_RECORD *ExceptionRecord,
+ void * EstablisherFrame,
+ struct _CONTEXT *ContextRecord,
+ void * DispatcherContext
+ );
+
+#elif defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC)
+
+/*
+ * Declarations to keep MIPS, ALPHA, and PPC compiler happy
+ */
+typedef struct _EXCEPTION_POINTERS *Exception_info_ptr;
+struct _EXCEPTION_RECORD;
+struct _CONTEXT;
+struct _DISPATCHER_CONTEXT;
+
+
+_CRTIMP EXCEPTION_DISPOSITION __C_specific_handler (
+ struct _EXCEPTION_RECORD *ExceptionRecord,
+ void *EstablisherFrame,
+ struct _CONTEXT *ContextRecord,
+ struct _DISPATCHER_CONTEXT *DispatcherContext
+ );
+
+#endif
+
+
+/*
+ * Keywords and intrinsics for SEH
+ */
+
+#ifdef _MSC_VER
+
+#if defined(_NTSDK) && !defined(__cplusplus)
+#define try __try
+#define except __except
+#define finally __finally
+#define leave __leave
+#endif /* _NTSDK */
+#define GetExceptionCode _exception_code
+#define exception_code _exception_code
+#define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info
+#define exception_info (struct _EXCEPTION_POINTERS *)_exception_info
+#define AbnormalTermination _abnormal_termination
+#define abnormal_termination _abnormal_termination
+
+unsigned long __cdecl _exception_code(void);
+void * __cdecl _exception_info(void);
+int __cdecl _abnormal_termination(void);
+
+#endif
+
+
+/*
+ * Legal values for expression in except().
+ */
+
+#define EXCEPTION_EXECUTE_HANDLER 1
+#define EXCEPTION_CONTINUE_SEARCH 0
+#define EXCEPTION_CONTINUE_EXECUTION -1
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_EXCPT */
diff --git a/public/sdk/inc/crt/fcntl.h b/public/sdk/inc/crt/fcntl.h
new file mode 100644
index 000000000..e73a256bb
--- /dev/null
+++ b/public/sdk/inc/crt/fcntl.h
@@ -0,0 +1,82 @@
+/***
+*fcntl.h - file control options used by open()
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines constants for the file control options used
+* by the _open() function.
+* [System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_FCNTL
+#define _INC_FCNTL
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#define _O_RDONLY 0x0000 /* open for reading only */
+#define _O_WRONLY 0x0001 /* open for writing only */
+#define _O_RDWR 0x0002 /* open for reading and writing */
+#define _O_APPEND 0x0008 /* writes done at eof */
+
+#define _O_CREAT 0x0100 /* create and open file */
+#define _O_TRUNC 0x0200 /* open and truncate */
+#define _O_EXCL 0x0400 /* open only if file doesn't already exist */
+
+/* O_TEXT files have <cr><lf> sequences translated to <lf> on read()'s,
+** and <lf> sequences translated to <cr><lf> on write()'s
+*/
+
+#define _O_TEXT 0x4000 /* file mode is text (translated) */
+#define _O_BINARY 0x8000 /* file mode is binary (untranslated) */
+
+/* macro to translate the C 2.0 name used to force binary mode for files */
+
+#define _O_RAW _O_BINARY
+
+/* Open handle inherit bit */
+
+#define _O_NOINHERIT 0x0080 /* child process doesn't inherit file */
+
+/* Temporary file bit - file is deleted when last handle is closed */
+
+#define _O_TEMPORARY 0x0040 /* temporary file bit */
+
+/* temporary access hint */
+
+#define _O_SHORT_LIVED 0x1000 /* temporary storage file, try not to flush */
+
+/* sequential/random access hints */
+
+#define _O_SEQUENTIAL 0x0020 /* file access is primarily sequential */
+#define _O_RANDOM 0x0010 /* file access is primarily random */
+
+#if !__STDC__ || defined(_POSIX_)
+/* Non-ANSI names for compatibility */
+#define O_RDONLY _O_RDONLY
+#define O_WRONLY _O_WRONLY
+#define O_RDWR _O_RDWR
+#define O_APPEND _O_APPEND
+#define O_CREAT _O_CREAT
+#define O_TRUNC _O_TRUNC
+#define O_EXCL _O_EXCL
+#define O_TEXT _O_TEXT
+#define O_BINARY _O_BINARY
+#define O_RAW _O_BINARY
+#define O_TEMPORARY _O_TEMPORARY
+#define O_NOINHERIT _O_NOINHERIT
+#define O_SEQUENTIAL _O_SEQUENTIAL
+#define O_RANDOM _O_RANDOM
+#endif /* __STDC__ */
+
+#endif /* _INC_FCNTL */
diff --git a/public/sdk/inc/crt/float.h b/public/sdk/inc/crt/float.h
new file mode 100644
index 000000000..6c586e00c
--- /dev/null
+++ b/public/sdk/inc/crt/float.h
@@ -0,0 +1,362 @@
+/***
+*float.h - constants for floating point values
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains defines for a number of implementation dependent
+* values which are commonly used by sophisticated numerical (floating
+* point) programs.
+* [ANSI]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_FLOAT
+#define _INC_FLOAT
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+#define DBL_DIG 15 /* # of decimal digits of precision */
+#define DBL_EPSILON 2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
+#define DBL_MANT_DIG 53 /* # of bits in mantissa */
+#define DBL_MAX 1.7976931348623158e+308 /* max value */
+#define DBL_MAX_10_EXP 308 /* max decimal exponent */
+#define DBL_MAX_EXP 1024 /* max binary exponent */
+#define DBL_MIN 2.2250738585072014e-308 /* min positive value */
+#define DBL_MIN_10_EXP (-307) /* min decimal exponent */
+#define DBL_MIN_EXP (-1021) /* min binary exponent */
+#define _DBL_RADIX 2 /* exponent radix */
+#define _DBL_ROUNDS 1 /* addition rounding: near */
+
+#define FLT_DIG 6 /* # of decimal digits of precision */
+#define FLT_EPSILON 1.192092896e-07F /* smallest such that 1.0+FLT_EPSILON != 1.0 */
+#define FLT_GUARD 0
+#define FLT_MANT_DIG 24 /* # of bits in mantissa */
+#define FLT_MAX 3.402823466e+38F /* max value */
+#define FLT_MAX_10_EXP 38 /* max decimal exponent */
+#define FLT_MAX_EXP 128 /* max binary exponent */
+#define FLT_MIN 1.175494351e-38F /* min positive value */
+#define FLT_MIN_10_EXP (-37) /* min decimal exponent */
+#define FLT_MIN_EXP (-125) /* min binary exponent */
+#define FLT_NORMALIZE 0
+#define FLT_RADIX 2 /* exponent radix */
+#define FLT_ROUNDS 1 /* addition rounding: near */
+
+#ifndef _M_M68K
+#define LDBL_DIG DBL_DIG /* # of decimal digits of precision */
+#define LDBL_EPSILON DBL_EPSILON /* smallest such that 1.0+LDBL_EPSILON != 1.0 */
+#define LDBL_MANT_DIG DBL_MANT_DIG /* # of bits in mantissa */
+#define LDBL_MAX DBL_MAX /* max value */
+#define LDBL_MAX_10_EXP DBL_MAX_10_EXP /* max decimal exponent */
+#define LDBL_MAX_EXP DBL_MAX_EXP /* max binary exponent */
+#define LDBL_MIN DBL_MIN /* min positive value */
+#define LDBL_MIN_10_EXP DBL_MIN_10_EXP /* min decimal exponent */
+#define LDBL_MIN_EXP DBL_MIN_EXP /* min binary exponent */
+#define _LDBL_RADIX DBL_RADIX /* exponent radix */
+#define _LDBL_ROUNDS DBL_ROUNDS /* addition rounding: near */
+#else
+#define LDBL_DIG 18 /* # of decimal digits of precision */
+#define LDBL_EPSILON 1.08420217248550443412e-019L /* smallest such that 1.0+LDBL_EPSILON != 1.0 */
+#define LDBL_MANT_DIG 64 /* # of bits in mantissa */
+#define LDBL_MAX 1.189731495357231765e+4932L /* max value */
+#define LDBL_MAX_10_EXP 4932 /* max decimal exponent */
+#define LDBL_MAX_EXP 16384 /* max binary exponent */
+#define LDBL_MIN 3.3621031431120935063e-4932L /* min positive value */
+#define LDBL_MIN_10_EXP (-4931) /* min decimal exponent */
+#define LDBL_MIN_EXP (-16381) /* min binary exponent */
+#define _LDBL_RADIX 2 /* exponent radix */
+#define _LDBL_ROUNDS 1 /* addition rounding: near */
+#endif
+
+/* Function prototypes */
+
+_CRTIMP unsigned int __cdecl _clearfp(void);
+_CRTIMP unsigned int __cdecl _controlfp(unsigned int,unsigned int);
+_CRTIMP unsigned int __cdecl _statusfp(void);
+_CRTIMP void __cdecl _fpreset(void);
+
+#ifndef _MAC
+#define _clear87 _clearfp
+#define _status87 _statusfp
+#endif /* _MAC */
+
+/*
+ * Abstract User Control Word Mask and bit definitions
+ */
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+#define _MCW_EM 0x0008001f /* interrupt Exception Masks */
+#else
+#define _MCW_EM 0x0000001f /* interrupt Exception Masks */
+#endif
+#define _EM_INEXACT 0x00000001 /* inexact (precision) */
+#define _EM_UNDERFLOW 0x00000002 /* underflow */
+#define _EM_OVERFLOW 0x00000004 /* overflow */
+#define _EM_ZERODIVIDE 0x00000008 /* zero divide */
+#define _EM_INVALID 0x00000010 /* invalid */
+
+#define _MCW_RC 0x00000300 /* Rounding Control */
+#define _RC_NEAR 0x00000000 /* near */
+#define _RC_DOWN 0x00000100 /* down */
+#define _RC_UP 0x00000200 /* up */
+#define _RC_CHOP 0x00000300 /* chop */
+
+/*
+ * Abstract User Status Word bit definitions
+ */
+
+#define _SW_INEXACT 0x00000001 /* inexact (precision) */
+#define _SW_UNDERFLOW 0x00000002 /* underflow */
+#define _SW_OVERFLOW 0x00000004 /* overflow */
+#define _SW_ZERODIVIDE 0x00000008 /* zero divide */
+#define _SW_INVALID 0x00000010 /* invalid */
+
+
+/*
+ * i386 specific definitions
+ */
+#define _MCW_PC 0x00030000 /* Precision Control */
+#if defined(_M_MPPC)
+/*
+ * PowerMac specific definitions(no precision control)
+ */
+#define _PC_64 0x00000000 /* 64 bits */
+#define _PC_53 0x00000000 /* 53 bits */
+#define _PC_24 0x00000000 /* 24 bits */
+#else
+#define _PC_64 0x00000000 /* 64 bits */
+#define _PC_53 0x00010000 /* 53 bits */
+#define _PC_24 0x00020000 /* 24 bits */
+#endif
+
+#define _MCW_IC 0x00040000 /* Infinity Control */
+#define _IC_AFFINE 0x00040000 /* affine */
+#define _IC_PROJECTIVE 0x00000000 /* projective */
+
+#define _EM_DENORMAL 0x00080000 /* denormal exception mask (_control87 only) */
+
+#define _SW_DENORMAL 0x00080000 /* denormal status bit */
+
+
+_CRTIMP unsigned int __cdecl _control87(unsigned int,unsigned int);
+
+
+/*
+ * MIPS R4000 specific definitions
+ */
+
+#define _MCW_DN 0x01000000 /* Denormal Control (R4000) */
+#define _DN_FLUSH 0x01000000 /* flush to zero */
+#define _DN_SAVE 0x00000000 /* save */
+
+
+/* initial Control Word value */
+
+#if defined(_M_IX86)
+
+#define _CW_DEFAULT ( _RC_NEAR + _PC_53 + _EM_INVALID + _EM_ZERODIVIDE + _EM_OVERFLOW + _EM_UNDERFLOW + _EM_INEXACT + _EM_DENORMAL)
+
+#elif defined(_M_M68K) || defined(_M_MPPC)
+
+#define _CW_DEFAULT ( _RC_NEAR + _PC_64 + _EM_INVALID + _EM_ZERODIVIDE + _EM_OVERFLOW + _EM_UNDERFLOW + _EM_INEXACT )
+
+#elif defined(_M_MRX000) || defined (_M_ALPHA) || defined(_M_PPC)
+
+#define _CW_DEFAULT ( _RC_NEAR + _DN_FLUSH + _EM_INVALID + _EM_ZERODIVIDE + _EM_OVERFLOW + _EM_UNDERFLOW + _EM_INEXACT )
+
+#endif
+
+/* Global variable holding floating point error code */
+
+#if defined(_MT) || defined(_DLL)
+_CRTIMP extern int * __cdecl __fpecode(void);
+#define _fpecode (*__fpecode())
+#else /* ndef _MT && ndef _DLL */
+extern int _fpecode;
+#endif /* _MT || _DLL */
+
+/* invalid subconditions (_SW_INVALID also set) */
+
+#define _SW_UNEMULATED 0x0040 /* unemulated instruction */
+#define _SW_SQRTNEG 0x0080 /* square root of a neg number */
+#define _SW_STACKOVERFLOW 0x0200 /* FP stack overflow */
+#define _SW_STACKUNDERFLOW 0x0400 /* FP stack underflow */
+
+/* Floating point error signals and return codes */
+
+#define _FPE_INVALID 0x81
+#define _FPE_DENORMAL 0x82
+#define _FPE_ZERODIVIDE 0x83
+#define _FPE_OVERFLOW 0x84
+#define _FPE_UNDERFLOW 0x85
+#define _FPE_INEXACT 0x86
+
+#define _FPE_UNEMULATED 0x87
+#define _FPE_SQRTNEG 0x88
+#define _FPE_STACKOVERFLOW 0x8a
+#define _FPE_STACKUNDERFLOW 0x8b
+
+#define _FPE_EXPLICITGEN 0x8c /* raise( SIGFPE ); */
+
+
+/* IEEE recommended functions */
+
+_CRTIMP double __cdecl _copysign (double, double);
+_CRTIMP double __cdecl _chgsign (double);
+_CRTIMP double __cdecl _scalb(double, long);
+_CRTIMP double __cdecl _logb(double);
+_CRTIMP double __cdecl _nextafter(double, double);
+_CRTIMP int __cdecl _finite(double);
+_CRTIMP int __cdecl _isnan(double);
+_CRTIMP int __cdecl _fpclass(double);
+
+#define _FPCLASS_SNAN 0x0001 /* signaling NaN */
+#define _FPCLASS_QNAN 0x0002 /* quiet NaN */
+#define _FPCLASS_NINF 0x0004 /* negative infinity */
+#define _FPCLASS_NN 0x0008 /* negative normal */
+#define _FPCLASS_ND 0x0010 /* negative denormal */
+#define _FPCLASS_NZ 0x0020 /* -0 */
+#define _FPCLASS_PZ 0x0040 /* +0 */
+#define _FPCLASS_PD 0x0080 /* positive denormal */
+#define _FPCLASS_PN 0x0100 /* positive normal */
+#define _FPCLASS_PINF 0x0200 /* positive infinity */
+
+
+#if !__STDC__
+
+/* Non-ANSI names for compatibility */
+
+#ifndef _MAC
+#define clear87 _clear87
+#define status87 _status87
+#define control87 _control87
+#endif /* _MAC */
+
+#ifdef _NTSDK
+#define fpreset _fpreset
+#else /* ndef _NTSDK */
+_CRTIMP void __cdecl fpreset(void);
+#endif /* _NTSDK */
+
+#define DBL_RADIX _DBL_RADIX
+#define DBL_ROUNDS _DBL_ROUNDS
+
+#define LDBL_RADIX _LDBL_RADIX
+#define LDBL_ROUNDS _LDBL_ROUNDS
+
+#define MCW_EM _MCW_EM
+#define EM_INVALID _EM_INVALID
+#define EM_DENORMAL _EM_DENORMAL
+#define EM_ZERODIVIDE _EM_ZERODIVIDE
+#define EM_OVERFLOW _EM_OVERFLOW
+#define EM_UNDERFLOW _EM_UNDERFLOW
+#define EM_INEXACT _EM_INEXACT
+
+#define MCW_IC _MCW_IC
+#define IC_AFFINE _IC_AFFINE
+#define IC_PROJECTIVE _IC_PROJECTIVE
+
+#define MCW_RC _MCW_RC
+#define RC_CHOP _RC_CHOP
+#define RC_UP _RC_UP
+#define RC_DOWN _RC_DOWN
+#define RC_NEAR _RC_NEAR
+
+#define MCW_PC _MCW_PC
+#define PC_24 _PC_24
+#define PC_53 _PC_53
+#define PC_64 _PC_64
+
+#define CW_DEFAULT _CW_DEFAULT
+
+#define SW_INVALID _SW_INVALID
+#define SW_DENORMAL _SW_DENORMAL
+#define SW_ZERODIVIDE _SW_ZERODIVIDE
+#define SW_OVERFLOW _SW_OVERFLOW
+#define SW_UNDERFLOW _SW_UNDERFLOW
+#define SW_INEXACT _SW_INEXACT
+
+#define SW_UNEMULATED _SW_UNEMULATED
+#define SW_SQRTNEG _SW_SQRTNEG
+#define SW_STACKOVERFLOW _SW_STACKOVERFLOW
+#define SW_STACKUNDERFLOW _SW_STACKUNDERFLOW
+
+#define FPE_INVALID _FPE_INVALID
+#define FPE_DENORMAL _FPE_DENORMAL
+#define FPE_ZERODIVIDE _FPE_ZERODIVIDE
+#define FPE_OVERFLOW _FPE_OVERFLOW
+#define FPE_UNDERFLOW _FPE_UNDERFLOW
+#define FPE_INEXACT _FPE_INEXACT
+
+#define FPE_UNEMULATED _FPE_UNEMULATED
+#define FPE_SQRTNEG _FPE_SQRTNEG
+#define FPE_STACKOVERFLOW _FPE_STACKOVERFLOW
+#define FPE_STACKUNDERFLOW _FPE_STACKUNDERFLOW
+
+#define FPE_EXPLICITGEN _FPE_EXPLICITGEN
+
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_FLOAT */
diff --git a/public/sdk/inc/crt/fpieee.h b/public/sdk/inc/crt/fpieee.h
new file mode 100644
index 000000000..a918904a8
--- /dev/null
+++ b/public/sdk/inc/crt/fpieee.h
@@ -0,0 +1,286 @@
+/***
+*fpieee.h - Definitions for floating point IEEE exception handling
+*
+* Copyright (c) 1991-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains constant and type definitions for handling
+* floating point exceptions [ANSI/IEEE std. 754]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_FPIEEE
+#define _INC_FPIEEE
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifndef __assembler /* MIPS ONLY: Protect from assembler */
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+/*
+ * Define floating point IEEE compare result values.
+ */
+
+typedef enum {
+ _FpCompareEqual,
+ _FpCompareGreater,
+ _FpCompareLess,
+ _FpCompareUnordered
+} _FPIEEE_COMPARE_RESULT;
+
+/*
+ * Define floating point format and result precision values.
+ */
+
+typedef enum {
+ _FpFormatFp32,
+ _FpFormatFp64,
+ _FpFormatFp80,
+ _FpFormatFp128,
+ _FpFormatI16,
+ _FpFormatI32,
+ _FpFormatI64,
+ _FpFormatU16,
+ _FpFormatU32,
+ _FpFormatU64,
+ _FpFormatBcd80,
+ _FpFormatCompare,
+ _FpFormatString
+} _FPIEEE_FORMAT;
+
+/*
+ * Define operation code values.
+ */
+
+typedef enum {
+ _FpCodeUnspecified,
+ _FpCodeAdd,
+ _FpCodeSubtract,
+ _FpCodeMultiply,
+ _FpCodeDivide,
+ _FpCodeSquareRoot,
+ _FpCodeRemainder,
+ _FpCodeCompare,
+ _FpCodeConvert,
+ _FpCodeRound,
+ _FpCodeTruncate,
+ _FpCodeFloor,
+ _FpCodeCeil,
+ _FpCodeAcos,
+ _FpCodeAsin,
+ _FpCodeAtan,
+ _FpCodeAtan2,
+ _FpCodeCabs,
+ _FpCodeCos,
+ _FpCodeCosh,
+ _FpCodeExp,
+ _FpCodeFabs,
+ _FpCodeFmod,
+ _FpCodeFrexp,
+ _FpCodeHypot,
+ _FpCodeLdexp,
+ _FpCodeLog,
+ _FpCodeLog10,
+ _FpCodeModf,
+ _FpCodePow,
+ _FpCodeSin,
+ _FpCodeSinh,
+ _FpCodeTan,
+ _FpCodeTanh,
+ _FpCodeY0,
+ _FpCodeY1,
+ _FpCodeYn,
+ _FpCodeLogb,
+ _FpCodeNextafter,
+ _FpCodeNegate
+
+} _FP_OPERATION_CODE;
+
+#endif /* #ifndef __assembler */
+
+/*
+ * Define rounding modes.
+ */
+
+#ifndef __assembler /* MIPS ONLY: Protect from assembler */
+
+typedef enum {
+ _FpRoundNearest,
+ _FpRoundMinusInfinity,
+ _FpRoundPlusInfinity,
+ _FpRoundChopped
+} _FPIEEE_ROUNDING_MODE;
+
+typedef enum {
+ _FpPrecisionFull,
+ _FpPrecision53,
+ _FpPrecision24
+} _FPIEEE_PRECISION;
+
+
+/*
+ * Define floating point context record
+ */
+
+typedef float _FP32;
+typedef double _FP64;
+typedef short _I16;
+typedef int _I32;
+typedef unsigned short _U16;
+typedef unsigned int _U32;
+
+
+typedef struct {
+ unsigned short W[5];
+} _FP80;
+
+typedef struct {
+ unsigned long W[4];
+} _FP128;
+
+typedef struct {
+ unsigned long W[2];
+} _I64;
+
+typedef struct {
+ unsigned long W[2];
+} _U64;
+
+typedef struct {
+ unsigned short W[5];
+} _BCD80;
+
+
+typedef struct {
+ union {
+ _FP32 Fp32Value;
+ _FP64 Fp64Value;
+ _FP80 Fp80Value;
+ _FP128 Fp128Value;
+ _I16 I16Value;
+ _I32 I32Value;
+ _I64 I64Value;
+ _U16 U16Value;
+ _U32 U32Value;
+ _U64 U64Value;
+ _BCD80 Bcd80Value;
+ char *StringValue;
+ int CompareValue;
+ } Value;
+
+ unsigned int OperandValid : 1;
+ unsigned int Format : 4;
+
+} _FPIEEE_VALUE;
+
+
+typedef struct {
+ unsigned int Inexact : 1;
+ unsigned int Underflow : 1;
+ unsigned int Overflow : 1;
+ unsigned int ZeroDivide : 1;
+ unsigned int InvalidOperation : 1;
+} _FPIEEE_EXCEPTION_FLAGS;
+
+
+typedef struct {
+ unsigned int RoundingMode : 2;
+ unsigned int Precision : 3;
+ unsigned int Operation :12;
+ _FPIEEE_EXCEPTION_FLAGS Cause;
+ _FPIEEE_EXCEPTION_FLAGS Enable;
+ _FPIEEE_EXCEPTION_FLAGS Status;
+ _FPIEEE_VALUE Operand1;
+ _FPIEEE_VALUE Operand2;
+ _FPIEEE_VALUE Result;
+} _FPIEEE_RECORD;
+
+
+struct _EXCEPTION_POINTERS;
+
+/*
+ * Floating point IEEE exception filter routine
+ */
+
+_CRTIMP int __cdecl _fpieee_flt(
+ unsigned long,
+ struct _EXCEPTION_POINTERS *,
+ int (__cdecl *)(_FPIEEE_RECORD *)
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+#endif /* #ifndef __assembler */
+
+#endif /* _INC_FPIEEE */
diff --git a/public/sdk/inc/crt/fstream.h b/public/sdk/inc/crt/fstream.h
new file mode 100644
index 000000000..2abba6c36
--- /dev/null
+++ b/public/sdk/inc/crt/fstream.h
@@ -0,0 +1,173 @@
+/***
+*fstream.h - definitions/declarations for filebuf and fstream classes
+*
+* Copyright (c) 1991-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the classes, values, macros, and functions
+* used by the filebuf and fstream classes.
+* [AT&T C++]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifdef __cplusplus
+
+#ifndef _INC_FSTREAM
+#define _INC_FSTREAM
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+// Currently, all MS C compilers for Win32 platforms default to 8 byte
+// alignment.
+#pragma pack(push,8)
+#endif // _MSC_VER
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+#include <iostream.h>
+
+#ifdef _MSC_VER
+// C4514: "unreferenced inline function has been removed"
+#pragma warning(disable:4514) // disable C4514 warning
+// #pragma warning(default:4514) // use this to reenable, if desired
+#endif // _MSC_VER
+
+typedef int filedesc;
+
+class _CRTIMP filebuf : public streambuf {
+public:
+static const int openprot; // default share/prot mode for open
+
+// optional share values for 3rd argument (prot) of open or constructor
+static const int sh_none; // exclusive mode no sharing
+static const int sh_read; // allow read sharing
+static const int sh_write; // allow write sharing
+// use (sh_read | sh_write) to allow both read and write sharing
+
+// options for setmode member function
+static const int binary;
+static const int text;
+
+ filebuf();
+ filebuf(filedesc);
+ filebuf(filedesc, char *, int);
+ ~filebuf();
+
+ filebuf* attach(filedesc);
+ filedesc fd() const { return (x_fd==-1) ? EOF : x_fd; }
+ int is_open() const { return (x_fd!=-1); }
+ filebuf* open(const char *, int, int = filebuf::openprot);
+ filebuf* close();
+ int setmode(int = filebuf::text);
+
+virtual int overflow(int=EOF);
+virtual int underflow();
+
+virtual streambuf* setbuf(char *, int);
+virtual streampos seekoff(streamoff, ios::seek_dir, int);
+// virtual streampos seekpos(streampos, int);
+virtual int sync();
+
+private:
+ filedesc x_fd;
+ int x_fOpened;
+};
+
+class _CRTIMP ifstream : public istream {
+public:
+ ifstream();
+ ifstream(const char *, int =ios::in, int = filebuf::openprot);
+ ifstream(filedesc);
+ ifstream(filedesc, char *, int);
+ ~ifstream();
+
+ streambuf * setbuf(char *, int);
+ filebuf* rdbuf() const { return (filebuf*) ios::rdbuf(); }
+
+ void attach(filedesc);
+ filedesc fd() const { return rdbuf()->fd(); }
+
+ int is_open() const { return rdbuf()->is_open(); }
+ void open(const char *, int =ios::in, int = filebuf::openprot);
+ void close();
+ int setmode(int mode = filebuf::text) { return rdbuf()->setmode(mode); }
+};
+
+class _CRTIMP ofstream : public ostream {
+public:
+ ofstream();
+ ofstream(const char *, int =ios::out, int = filebuf::openprot);
+ ofstream(filedesc);
+ ofstream(filedesc, char *, int);
+ ~ofstream();
+
+ streambuf * setbuf(char *, int);
+ filebuf* rdbuf() const { return (filebuf*) ios::rdbuf(); }
+
+ void attach(filedesc);
+ filedesc fd() const { return rdbuf()->fd(); }
+
+ int is_open() const { return rdbuf()->is_open(); }
+ void open(const char *, int =ios::out, int = filebuf::openprot);
+ void close();
+ int setmode(int mode = filebuf::text) { return rdbuf()->setmode(mode); }
+};
+
+class _CRTIMP fstream : public iostream {
+public:
+ fstream();
+ fstream(const char *, int, int = filebuf::openprot);
+ fstream(filedesc);
+ fstream(filedesc, char *, int);
+ ~fstream();
+
+ streambuf * setbuf(char *, int);
+ filebuf* rdbuf() const { return (filebuf*) ostream::rdbuf(); }
+
+ void attach(filedesc);
+ filedesc fd() const { return rdbuf()->fd(); }
+
+ int is_open() const { return rdbuf()->is_open(); }
+ void open(const char *, int, int = filebuf::openprot);
+ void close();
+ int setmode(int mode = filebuf::text) { return rdbuf()->setmode(mode); }
+};
+
+// manipulators to dynamically change file access mode (filebufs only)
+inline ios& binary(ios& _fstrm) \
+ { ((filebuf*)_fstrm.rdbuf())->setmode(filebuf::binary); return _fstrm; }
+inline ios& text(ios& _fstrm) \
+ { ((filebuf*)_fstrm.rdbuf())->setmode(filebuf::text); return _fstrm; }
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif // _MSC_VER
+
+#endif // _INC_FSTREAM
+
+#endif /* __cplusplus */
diff --git a/public/sdk/inc/crt/io.h b/public/sdk/inc/crt/io.h
new file mode 100644
index 000000000..3104359f2
--- /dev/null
+++ b/public/sdk/inc/crt/io.h
@@ -0,0 +1,306 @@
+/***
+*io.h - declarations for low-level file handling and I/O functions
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains the function declarations for the low-level
+* file handling and I/O functions.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_IO
+#define _INC_IO
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifndef _POSIX_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+#ifndef _MAC
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t; /* time value */
+#define _TIME_T_DEFINED /* avoid multiple def's of time_t */
+#endif
+
+#ifndef _FSIZE_T_DEFINED
+typedef unsigned long _fsize_t; /* Could be 64 bits for Win32 */
+#define _FSIZE_T_DEFINED
+#endif
+
+#ifndef _MAC
+
+#ifndef _FINDDATA_T_DEFINED
+
+struct _finddata_t {
+ unsigned attrib;
+ time_t time_create; /* -1 for FAT file systems */
+ time_t time_access; /* -1 for FAT file systems */
+ time_t time_write;
+ _fsize_t size;
+ char name[260];
+};
+
+#if _INTEGRAL_MAX_BITS >= 64
+struct _finddatai64_t {
+ unsigned attrib;
+ time_t time_create; /* -1 for FAT file systems */
+ time_t time_access; /* -1 for FAT file systems */
+ time_t time_write;
+ __int64 size;
+ char name[260];
+};
+#endif
+
+#define _FINDDATA_T_DEFINED
+#endif
+
+#ifndef _WFINDDATA_T_DEFINED
+
+struct _wfinddata_t {
+ unsigned attrib;
+ time_t time_create; /* -1 for FAT file systems */
+ time_t time_access; /* -1 for FAT file systems */
+ time_t time_write;
+ _fsize_t size;
+ wchar_t name[260];
+};
+
+#if _INTEGRAL_MAX_BITS >= 64
+struct _wfinddatai64_t {
+ unsigned attrib;
+ time_t time_create; /* -1 for FAT file systems */
+ time_t time_access; /* -1 for FAT file systems */
+ time_t time_write;
+ __int64 size;
+ wchar_t name[260];
+};
+#endif
+
+#define _WFINDDATA_T_DEFINED
+#endif
+
+/* File attribute constants for _findfirst() */
+
+#define _A_NORMAL 0x00 /* Normal file - No read/write restrictions */
+#define _A_RDONLY 0x01 /* Read only file */
+#define _A_HIDDEN 0x02 /* Hidden file */
+#define _A_SYSTEM 0x04 /* System file */
+#define _A_SUBDIR 0x10 /* Subdirectory */
+#define _A_ARCH 0x20 /* Archive file */
+
+#endif /* ndef _MAC */
+
+/* function prototypes */
+
+_CRTIMP int __cdecl _access(const char *, int);
+_CRTIMP int __cdecl _chmod(const char *, int);
+_CRTIMP int __cdecl _chsize(int, long);
+_CRTIMP int __cdecl _close(int);
+_CRTIMP int __cdecl _commit(int);
+_CRTIMP int __cdecl _creat(const char *, int);
+_CRTIMP int __cdecl _dup(int);
+_CRTIMP int __cdecl _dup2(int, int);
+_CRTIMP int __cdecl _eof(int);
+_CRTIMP long __cdecl _filelength(int);
+#ifndef _MAC
+_CRTIMP long __cdecl _findfirst(const char *, struct _finddata_t *);
+_CRTIMP int __cdecl _findnext(long, struct _finddata_t *);
+_CRTIMP int __cdecl _findclose(long);
+#endif /* ndef _MAC */
+_CRTIMP int __cdecl _isatty(int);
+_CRTIMP int __cdecl _locking(int, int, long);
+_CRTIMP long __cdecl _lseek(int, long, int);
+_CRTIMP char * __cdecl _mktemp(char *);
+_CRTIMP int __cdecl _open(const char *, int, ...);
+#ifndef _MAC
+_CRTIMP int __cdecl _pipe(int *, unsigned int, int);
+#endif /* ndef _MAC */
+_CRTIMP int __cdecl _read(int, void *, unsigned int);
+_CRTIMP int __cdecl remove(const char *);
+_CRTIMP int __cdecl rename(const char *, const char *);
+_CRTIMP int __cdecl _setmode(int, int);
+_CRTIMP int __cdecl _sopen(const char *, int, int, ...);
+_CRTIMP long __cdecl _tell(int);
+_CRTIMP int __cdecl _umask(int);
+_CRTIMP int __cdecl _unlink(const char *);
+_CRTIMP int __cdecl _write(int, const void *, unsigned int);
+
+#if _INTEGRAL_MAX_BITS >= 64
+_CRTIMP __int64 __cdecl _filelengthi64(int);
+_CRTIMP long __cdecl _findfirsti64(const char *, struct _finddatai64_t *);
+_CRTIMP int __cdecl _findnexti64(long, struct _finddatai64_t *);
+_CRTIMP __int64 __cdecl _lseeki64(int, __int64, int);
+_CRTIMP __int64 __cdecl _telli64(int);
+#endif
+
+#ifndef _MAC
+#ifndef _WIO_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+_CRTIMP int __cdecl _waccess(const wchar_t *, int);
+_CRTIMP int __cdecl _wchmod(const wchar_t *, int);
+_CRTIMP int __cdecl _wcreat(const wchar_t *, int);
+_CRTIMP long __cdecl _wfindfirst(const wchar_t *, struct _wfinddata_t *);
+_CRTIMP int __cdecl _wfindnext(long, struct _wfinddata_t *);
+_CRTIMP int __cdecl _wunlink(const wchar_t *);
+_CRTIMP int __cdecl _wrename(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl _wopen(const wchar_t *, int, ...);
+_CRTIMP int __cdecl _wsopen(const wchar_t *, int, int, ...);
+_CRTIMP wchar_t * __cdecl _wmktemp(wchar_t *);
+
+#if _INTEGRAL_MAX_BITS >= 64
+_CRTIMP long __cdecl _wfindfirsti64(const wchar_t *, struct _wfinddatai64_t *);
+_CRTIMP int __cdecl _wfindnexti64(long, struct _wfinddatai64_t *);
+#endif
+
+#define _WIO_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+
+_CRTIMP long __cdecl _get_osfhandle(int);
+_CRTIMP int __cdecl _open_osfhandle(long, int);
+
+#if !__STDC__
+
+/* Non-ANSI names for compatibility */
+
+#ifdef _NTSDK
+
+#ifndef __cplusplus
+#define access _access
+#define chmod _chmod
+#define chsize _chsize
+#define close _close
+#define creat _creat
+#define dup _dup
+#define dup2 _dup2
+#define eof _eof
+#define filelength _filelength
+#define isatty _isatty
+#define locking _locking
+#define lseek _lseek
+#define mktemp _mktemp
+#define open _open
+#define read _read
+#define setmode _setmode
+#define sopen _sopen
+#define tell _tell
+#define umask _umask
+#define unlink _unlink
+#define write _write
+#endif /* __cplusplus */
+
+#else /* ndef _NTSDK */
+
+_CRTIMP int __cdecl access(const char *, int);
+_CRTIMP int __cdecl chmod(const char *, int);
+_CRTIMP int __cdecl chsize(int, long);
+_CRTIMP int __cdecl close(int);
+_CRTIMP int __cdecl creat(const char *, int);
+_CRTIMP int __cdecl dup(int);
+_CRTIMP int __cdecl dup2(int, int);
+_CRTIMP int __cdecl eof(int);
+_CRTIMP long __cdecl filelength(int);
+_CRTIMP int __cdecl isatty(int);
+_CRTIMP int __cdecl locking(int, int, long);
+_CRTIMP long __cdecl lseek(int, long, int);
+_CRTIMP char * __cdecl mktemp(char *);
+_CRTIMP int __cdecl open(const char *, int, ...);
+_CRTIMP int __cdecl read(int, void *, unsigned int);
+_CRTIMP int __cdecl setmode(int, int);
+_CRTIMP int __cdecl sopen(const char *, int, int, ...);
+_CRTIMP long __cdecl tell(int);
+_CRTIMP int __cdecl umask(int);
+_CRTIMP int __cdecl unlink(const char *);
+_CRTIMP int __cdecl write(int, const void *, unsigned int);
+
+#endif /* _NTSDK */
+
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _POSIX_ */
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_IO */
diff --git a/public/sdk/inc/crt/iomanip.h b/public/sdk/inc/crt/iomanip.h
new file mode 100644
index 000000000..030d8f1b3
--- /dev/null
+++ b/public/sdk/inc/crt/iomanip.h
@@ -0,0 +1,150 @@
+/***
+*iomanip.h - definitions/declarations for iostream's parameterized manipulators
+*
+* Copyright (c) 1991-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the classes, values, macros, and functions
+* used by the iostream classes' paramterized manipulators.
+* [AT&T C++]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifdef __cplusplus
+
+#ifndef _INC_IOMANIP
+#define _INC_IOMANIP
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+// Currently, all MS C compilers for Win32 platforms default to 8 byte
+// alignment.
+#pragma pack(push,8)
+#endif // _MSC_VER
+
+#include <iostream.h>
+
+#ifdef _MSC_VER
+#pragma warning(disable:4514) // disable unwanted /W4 warning
+// #pragma warning(default:4514) // use this to reenable, if necessary
+#endif // _MSC_VER
+
+// #define __MKMANIP(X) \#define X##(T) __##X##_ \#\# T
+// __MKMANIP(SMANIP);
+// __MKMANIP(SAPP);
+// __MKMANIP(IMANIP);
+// __MKMANIP(IAPP);
+// __MKMANIP(OMANIP);
+// __MKMANIP(OAPP);
+// __MKMANIP(IOMANIP);
+// __MKMANIP(IOAPP);
+
+#define SMANIP(T) __SMANIP_##T
+#define SAPP(T) __SAPP_##T
+#define IMANIP(T) __IMANIP_##T
+#define IAPP(T) __IAPP_##T
+#define OMANIP(T) __OMANIP_##T
+#define OAPP(T) __OAPP_##T
+#define IOMANIP(T) __IOMANIP_##T
+#define IOAPP(T) __IOAPP_##T
+
+#define IOMANIPdeclare(T) \
+class SMANIP(T) { \
+public: \
+ SMANIP(T)(ios& (*f)(ios&,T), T t) { _fp = f; _tp = t; } \
+ friend istream& operator>>(istream& s, const SMANIP(T) & sm) { (*(sm._fp))(s,sm._tp); return s; } \
+ friend ostream& operator<<(ostream& s, const SMANIP(T) & sm) { (*(sm._fp))(s,sm._tp); return s; } \
+private: \
+ ios& (* _fp)(ios&,T); \
+ T _tp; \
+}; \
+class SAPP(T) { \
+public: \
+ SAPP(T)( ios& (*f)(ios&,T)) { _fp = f; } \
+ SMANIP(T) operator()(T t) { return SMANIP(T)(_fp,t); } \
+private: \
+ ios& (* _fp)(ios&,T); \
+}; \
+class IMANIP(T) { \
+public: \
+ IMANIP(T)(istream& (*f)(istream&,T), T t) { _fp = f; _tp = t; } \
+ friend istream& operator>>(istream& s, IMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \
+private: \
+ istream& (* _fp)(istream&,T); \
+ T _tp; \
+}; \
+class IAPP(T) { \
+public: \
+ IAPP(T)( istream& (*f)(istream&,T)) { _fp = f; } \
+ IMANIP(T) operator()(T t) { return IMANIP(T)(_fp,t); } \
+private: \
+ istream& (* _fp)(istream&,T); \
+}; \
+class OMANIP(T) { \
+public: \
+ OMANIP(T)(ostream& (*f)(ostream&,T), T t) { _fp = f; _tp = t; } \
+ friend ostream& operator<<(ostream& s, OMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \
+private: \
+ ostream& (* _fp)(ostream&,T); \
+ T _tp; \
+}; \
+class OAPP(T) { \
+public: \
+ OAPP(T)(ostream& (*f)(ostream&,T)) { _fp = f; } \
+ OMANIP(T) operator()(T t) { return OMANIP(T)(_fp,t); } \
+private: \
+ ostream& (* _fp)(ostream&,T); \
+}; \
+\
+class IOMANIP(T) { \
+public: \
+ IOMANIP(T)(iostream& (*f)(iostream&,T), T t) { _fp = f; _tp = t; } \
+ friend istream& operator>>(iostream& s, IOMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \
+ friend ostream& operator<<(iostream& s, IOMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \
+private: \
+ iostream& (* _fp)(iostream&,T); \
+ T _tp; \
+}; \
+class IOAPP(T) { \
+public: \
+ IOAPP(T)( iostream& (*f)(iostream&,T)) { _fp = f; } \
+ IOMANIP(T) operator()(T t) { return IOMANIP(T)(_fp,t); } \
+private: \
+ iostream& (* _fp)(iostream&,T); \
+}; \
+
+
+IOMANIPdeclare(int)
+
+IOMANIPdeclare(long)
+
+inline ios& __resetiosflags(ios& s, long _flg) { s.setf(0,_flg); return s; }
+inline ios& __setfill(ios& s, int _fc) { s.fill((char)_fc); return s; }
+inline ios& __setiosflags(ios& s, long _flg) { s.setf(_flg); return s; }
+inline ios& __setprecision(ios& s, int _pre) { s.precision(_pre); return s; }
+inline ios& __setw(ios& s, int _wid) { s.width(_wid); return s; }
+
+inline SMANIP(long) resetiosflags(long _l) { return SMANIP(long)(__resetiosflags, _l); }
+inline SMANIP(int) setfill(int _m) {return SMANIP(int)(__setfill, _m); }
+inline SMANIP(long) setiosflags(long _l) {return SMANIP(long)(__setiosflags, _l); }
+inline SMANIP(int) setprecision(int _p) {return SMANIP(int)(__setprecision, _p); }
+inline SMANIP(int) setw(int _w) { return SMANIP(int)(__setw, _w); }
+
+// Restore previous packing
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif // _MSC_VER
+
+#endif // _INC_IOMANIP
+
+#endif /* __cplusplus */
diff --git a/public/sdk/inc/crt/ios.h b/public/sdk/inc/crt/ios.h
new file mode 100644
index 000000000..d9113955b
--- /dev/null
+++ b/public/sdk/inc/crt/ios.h
@@ -0,0 +1,311 @@
+/***
+*ios.h - definitions/declarations for the ios class.
+*
+* Copyright (c) 1990-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the classes, values, macros, and functions
+* used by the ios class.
+* [AT&T C++]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifdef __cplusplus
+
+#ifndef _INC_IOS
+#define _INC_IOS
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+// Currently, all MS C compilers for Win32 platforms default to 8 byte
+// alignment.
+#pragma pack(push,8)
+#endif // _MSC_VER
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+#ifdef _MT
+
+typedef struct __CRT_LIST_ENTRY {
+ struct __CRT_LIST_ENTRY *Flink;
+ struct __CRT_LIST_ENTRY *Blink;
+} _CRT_LIST_ENTRY;
+
+typedef struct _CRT_CRITICAL_SECTION_DEBUG {
+ unsigned short Type;
+ unsigned short CreatorBackTraceIndex;
+ struct _CRT_CRITICAL_SECTION *CriticalSection;
+ _CRT_LIST_ENTRY ProcessLocksList;
+ unsigned long EntryCount;
+ unsigned long ContentionCount;
+ unsigned long Depth;
+ void * OwnerBackTrace[ 5 ];
+} _CRT_CRITICAL_SECTION_DEBUG, *_PCRT_CRITICAL_SECTION_DEBUG;
+
+typedef struct _CRT_CRITICAL_SECTION {
+ _PCRT_CRITICAL_SECTION_DEBUG DebugInfo;
+
+ //
+ // The following three fields control entering and exiting the critical
+ // section for the resource
+ //
+
+ long LockCount;
+ long RecursionCount;
+ void * OwningThread; // from the thread's ClientId->UniqueThread
+ void * LockSemaphore;
+ unsigned long Reserved;
+} _CRT_CRITICAL_SECTION, *_PCRT_CRITICAL_SECTION;
+
+extern "C" {
+_CRTIMP void __cdecl _mtlock(_PCRT_CRITICAL_SECTION);
+_CRTIMP void __cdecl _mtunlock(_PCRT_CRITICAL_SECTION);
+}
+
+#endif /* _MT */
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef EOF
+#define EOF (-1)
+#endif
+
+#ifdef _MSC_VER
+// C4514: "unreferenced inline function has been removed"
+#pragma warning(disable:4514) // disable C4514 warning
+// #pragma warning(default:4514) // use this to reenable, if desired
+#endif // _MSC_VER
+
+class _CRTIMP streambuf;
+class _CRTIMP ostream;
+
+class _CRTIMP ios {
+
+public:
+ enum io_state { goodbit = 0x00,
+ eofbit = 0x01,
+ failbit = 0x02,
+ badbit = 0x04 };
+
+ enum open_mode { in = 0x01,
+ out = 0x02,
+ ate = 0x04,
+ app = 0x08,
+ trunc = 0x10,
+ nocreate = 0x20,
+ noreplace = 0x40,
+ binary = 0x80 };
+
+ enum seek_dir { beg=0, cur=1, end=2 };
+
+ enum { skipws = 0x0001,
+ left = 0x0002,
+ right = 0x0004,
+ internal = 0x0008,
+ dec = 0x0010,
+ oct = 0x0020,
+ hex = 0x0040,
+ showbase = 0x0080,
+ showpoint = 0x0100,
+ uppercase = 0x0200,
+ showpos = 0x0400,
+ scientific = 0x0800,
+ fixed = 0x1000,
+ unitbuf = 0x2000,
+ stdio = 0x4000
+ };
+
+ static const long basefield; // dec | oct | hex
+ static const long adjustfield; // left | right | internal
+ static const long floatfield; // scientific | fixed
+
+ ios(streambuf*); // differs from ANSI
+ virtual ~ios();
+
+ inline long flags() const;
+ inline long flags(long _l);
+
+ inline long setf(long _f,long _m);
+ inline long setf(long _l);
+ inline long unsetf(long _l);
+
+ inline int width() const;
+ inline int width(int _i);
+
+ inline ostream* tie(ostream* _os);
+ inline ostream* tie() const;
+
+ inline char fill() const;
+ inline char fill(char _c);
+
+ inline int precision(int _i);
+ inline int precision() const;
+
+ inline int rdstate() const;
+ inline void clear(int _i = 0);
+
+// inline operator void*() const;
+ operator void *() const { if(state&(badbit|failbit) ) return 0; return (void *)this; }
+ inline int operator!() const;
+
+ inline int good() const;
+ inline int eof() const;
+ inline int fail() const;
+ inline int bad() const;
+
+ inline streambuf* rdbuf() const;
+
+ inline long & iword(int) const;
+ inline void * & pword(int) const;
+
+ static long bitalloc();
+ static int xalloc();
+ static void sync_with_stdio();
+
+#ifdef _MT
+ inline void __cdecl setlock();
+ inline void __cdecl clrlock();
+ void __cdecl lock() { if (LockFlg<0) _mtlock(lockptr()); };
+ void __cdecl unlock() { if (LockFlg<0) _mtunlock(lockptr()); }
+ inline void __cdecl lockbuf();
+ inline void __cdecl unlockbuf();
+#else
+ void __cdecl lock() { }
+ void __cdecl unlock() { }
+ void __cdecl lockbuf() { }
+ void __cdecl unlockbuf() { }
+#endif
+
+protected:
+ ios();
+ ios(const ios&); // treat as private
+ ios& operator=(const ios&);
+ void init(streambuf*);
+
+ enum { skipping, tied };
+ streambuf* bp;
+
+ int state;
+ int ispecial; // not used
+ int ospecial; // not used
+ int isfx_special; // not used
+ int osfx_special; // not used
+ int x_delbuf; // if set, rdbuf() deleted by ~ios
+
+ ostream* x_tie;
+ long x_flags;
+ int x_precision;
+ char x_fill;
+ int x_width;
+
+ static void (*stdioflush)(); // not used
+
+#ifdef _MT
+ static void lockc() { _mtlock(& x_lockc); }
+ static void unlockc() { _mtunlock( & x_lockc); }
+ _PCRT_CRITICAL_SECTION lockptr() { return & x_lock; }
+#else
+ static void lockc() { }
+ static void unlockc() { }
+#endif
+
+public:
+ int delbuf() const { return x_delbuf; }
+ void delbuf(int _i) { x_delbuf = _i; }
+
+private:
+ static long x_maxbit;
+ static int x_curindex;
+ static int sunk_with_stdio; // make sure sync_with done only once
+#ifdef _MT
+#define MAXINDEX 7
+ static long x_statebuf[MAXINDEX+1]; // used by xalloc()
+ static int fLockcInit; // used to see if x_lockc initialized
+ static _CRT_CRITICAL_SECTION x_lockc; // used to lock static (class) data members
+ int LockFlg; // enable locking flag
+ _CRT_CRITICAL_SECTION x_lock; // used for multi-thread lock on object
+#else
+ static long * x_statebuf; // used by xalloc()
+#endif
+};
+
+#include <streamb.h>
+
+inline _CRTIMP ios& __cdecl dec(ios& _strm) { _strm.setf(ios::dec,ios::basefield); return _strm; }
+inline _CRTIMP ios& __cdecl hex(ios& _strm) { _strm.setf(ios::hex,ios::basefield); return _strm; }
+inline _CRTIMP ios& __cdecl oct(ios& _strm) { _strm.setf(ios::oct,ios::basefield); return _strm; }
+
+inline long ios::flags() const { return x_flags; }
+inline long ios::flags(long _l){ long _lO; _lO = x_flags; x_flags = _l; return _lO; }
+
+inline long ios::setf(long _l,long _m){ long _lO; lock(); _lO = x_flags; x_flags = (_l&_m) | (x_flags&(~_m)); unlock(); return _lO; }
+inline long ios::setf(long _l){ long _lO; lock(); _lO = x_flags; x_flags |= _l; unlock(); return _lO; }
+inline long ios::unsetf(long _l){ long _lO; lock(); _lO = x_flags; x_flags &= (~_l); unlock(); return _lO; }
+
+inline int ios::width() const { return x_width; }
+inline int ios::width(int _i){ int _iO; _iO = (int)x_width; x_width = _i; return _iO; }
+
+inline ostream* ios::tie(ostream* _os){ ostream* _osO; _osO = x_tie; x_tie = _os; return _osO; }
+inline ostream* ios::tie() const { return x_tie; }
+inline char ios::fill() const { return x_fill; }
+inline char ios::fill(char _c){ char _cO; _cO = x_fill; x_fill = _c; return _cO; }
+inline int ios::precision(int _i){ int _iO; _iO = (int)x_precision; x_precision = _i; return _iO; }
+inline int ios::precision() const { return x_precision; }
+
+inline int ios::rdstate() const { return state; }
+
+// inline ios::operator void *() const { if(state&(badbit|failbit) ) return 0; return (void *)this; }
+inline int ios::operator!() const { return state&(badbit|failbit); }
+
+inline int ios::bad() const { return state & badbit; }
+inline void ios::clear(int _i){ lock(); state = _i; unlock(); }
+inline int ios::eof() const { return state & eofbit; }
+inline int ios::fail() const { return state & (badbit | failbit); }
+inline int ios::good() const { return state == 0; }
+
+inline streambuf* ios::rdbuf() const { return bp; }
+
+inline long & ios::iword(int _i) const { return x_statebuf[_i] ; }
+inline void * & ios::pword(int _i) const { return (void * &)x_statebuf[_i]; }
+
+#ifdef _MT
+ inline void ios::setlock() { LockFlg--; if (bp) bp->setlock(); }
+ inline void ios::clrlock() { if (LockFlg <= 0) LockFlg++; if (bp) bp->clrlock(); }
+ inline void ios::lockbuf() { bp->lock(); }
+ inline void ios::unlockbuf() { bp->unlock(); }
+#endif
+
+#ifdef _MSC_VER
+// Restore default packing
+#pragma pack(pop)
+#endif // _MSC_VER
+
+#endif // _INC_IOS
+
+#endif /* __cplusplus */
diff --git a/public/sdk/inc/crt/iostream.h b/public/sdk/inc/crt/iostream.h
new file mode 100644
index 000000000..fa4a0aec6
--- /dev/null
+++ b/public/sdk/inc/crt/iostream.h
@@ -0,0 +1,104 @@
+/***
+*iostream.h - definitions/declarations for iostream classes
+*
+* Copyright (c) 1990-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the classes, values, macros, and functions
+* used by the iostream classes.
+* [AT&T C++]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifdef __cplusplus
+
+#ifndef _INC_IOSTREAM
+#define _INC_IOSTREAM
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+// Currently, all MS C compilers for Win32 platforms default to 8 byte
+// alignment.
+#pragma pack(push,8)
+#endif // _MSC_VER
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+typedef long streamoff, streampos;
+
+#include <ios.h> // Define ios.
+
+#include <streamb.h> // Define streambuf.
+
+#include <istream.h> // Define istream.
+
+#include <ostream.h> // Define ostream.
+
+#ifdef _MSC_VER
+// C4514: "unreferenced inline function has been removed"
+#pragma warning(disable:4514) // disable C4514 warning
+// #pragma warning(default:4514) // use this to reenable, if desired
+#endif // _MSC_VER
+
+class _CRTIMP iostream : public istream, public ostream {
+public:
+ iostream(streambuf*);
+ virtual ~iostream();
+protected:
+ iostream();
+ iostream(const iostream&);
+inline iostream& operator=(streambuf*);
+inline iostream& operator=(iostream&);
+private:
+ iostream(ios&);
+ iostream(istream&);
+ iostream(ostream&);
+};
+
+inline iostream& iostream::operator=(streambuf* _sb) { istream::operator=(_sb); ostream::operator=(_sb); return *this; }
+
+inline iostream& iostream::operator=(iostream& _strm) { return operator=(_strm.rdbuf()); }
+
+class _CRTIMP Iostream_init {
+public:
+ Iostream_init();
+ Iostream_init(ios &, int =0); // treat as private
+ ~Iostream_init();
+};
+
+// used internally
+// static Iostream_init __iostreaminit; // initializes cin/cout/cerr/clog
+
+#ifdef _MSC_VER
+// Restore previous packing
+#pragma pack(pop)
+#endif // _MSC_VER
+
+#endif // _INC_IOSTREAM
+
+#endif /* __cplusplus */
diff --git a/public/sdk/inc/crt/istream.h b/public/sdk/inc/crt/istream.h
new file mode 100644
index 000000000..52f64e384
--- /dev/null
+++ b/public/sdk/inc/crt/istream.h
@@ -0,0 +1,191 @@
+/***
+*istream.h - definitions/declarations for the istream class
+*
+* Copyright (c) 1990-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the classes, values, macros, and functions
+* used by the istream class.
+* [AT&T C++]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifdef __cplusplus
+
+#ifndef _INC_ISTREAM
+#define _INC_ISTREAM
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+// Currently, all MS C compilers for Win32 platforms default to 8 byte
+// alignment.
+#pragma pack(push,8)
+#endif // _MSC_VER
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+#include <ios.h>
+
+#ifdef _MSC_VER
+// C4069: "long double != double"
+#pragma warning(disable:4069) // disable C4069 warning
+// #pragma warning(default:4069) // use this to reenable, if desired
+
+// C4514: "unreferenced inline function has been removed"
+#pragma warning(disable:4514) // disable C4514 warning
+// #pragma warning(default:4514) // use this to reenable, if desired
+#endif // _MSC_VER
+
+
+typedef long streamoff, streampos;
+
+class _CRTIMP istream : virtual public ios {
+
+public:
+ istream(streambuf*);
+ virtual ~istream();
+
+ int ipfx(int =0);
+ void isfx() { unlockbuf(); unlock(); }
+
+ inline istream& operator>>(istream& (__cdecl * _f)(istream&));
+ inline istream& operator>>(ios& (__cdecl * _f)(ios&));
+ istream& operator>>(char *);
+ inline istream& operator>>(unsigned char *);
+ inline istream& operator>>(signed char *);
+ istream& operator>>(char &);
+ inline istream& operator>>(unsigned char &);
+ inline istream& operator>>(signed char &);
+ istream& operator>>(short &);
+ istream& operator>>(unsigned short &);
+ istream& operator>>(int &);
+ istream& operator>>(unsigned int &);
+ istream& operator>>(long &);
+ istream& operator>>(unsigned long &);
+ istream& operator>>(float &);
+ istream& operator>>(double &);
+ istream& operator>>(long double &);
+ istream& operator>>(streambuf*);
+
+ int get();
+
+ inline istream& get( char *,int,char ='\n');
+ inline istream& get(unsigned char *,int,char ='\n');
+ inline istream& get( signed char *,int,char ='\n');
+
+ istream& get(char &);
+ inline istream& get(unsigned char &);
+ inline istream& get( signed char &);
+
+ istream& get(streambuf&,char ='\n');
+ inline istream& getline( char *,int,char ='\n');
+ inline istream& getline(unsigned char *,int,char ='\n');
+ inline istream& getline( signed char *,int,char ='\n');
+
+ inline istream& ignore(int =1,int =EOF);
+ istream& read(char *,int);
+ inline istream& read(unsigned char *,int);
+ inline istream& read(signed char *,int);
+
+ int gcount() const { return x_gcount; }
+ int peek();
+ istream& putback(char);
+ int sync();
+
+ istream& seekg(streampos);
+ istream& seekg(streamoff,ios::seek_dir);
+ streampos tellg();
+
+ void eatwhite();
+
+protected:
+ istream();
+ istream(const istream&); // treat as private
+ istream& operator=(streambuf* _isb); // treat as private
+ istream& operator=(const istream& _is) { return operator=(_is.rdbuf()); }
+ istream& get(char *, int, int);
+ int do_ipfx(int);
+
+private:
+ istream(ios&);
+ int getint(char *);
+ int getdouble(char *, int);
+ int _fGline;
+ int x_gcount;
+};
+
+ inline istream& istream::operator>>(istream& (__cdecl * _f)(istream&)) { (*_f)(*this); return *this; }
+ inline istream& istream::operator>>(ios& (__cdecl * _f)(ios&)) { (*_f)(*this); return *this; }
+
+ inline istream& istream::operator>>(unsigned char * _s) { return operator>>((char *)_s); }
+ inline istream& istream::operator>>( signed char * _s) { return operator>>((char *)_s); }
+
+ inline istream& istream::operator>>(unsigned char & _c) { return operator>>((char &) _c); }
+ inline istream& istream::operator>>( signed char & _c) { return operator>>((char &) _c); }
+
+ inline istream& istream::get( char * _b, int _lim, char _delim) { return get( _b, _lim, (int)(unsigned char)_delim); }
+ inline istream& istream::get(unsigned char * _b, int _lim, char _delim) { return get((char *)_b, _lim, (int)(unsigned char)_delim); }
+ inline istream& istream::get(signed char * _b, int _lim, char _delim) { return get((char *)_b, _lim, (int)(unsigned char)_delim); }
+
+ inline istream& istream::get(unsigned char & _c) { return get((char &)_c); }
+ inline istream& istream::get( signed char & _c) { return get((char &)_c); }
+
+ inline istream& istream::getline( char * _b,int _lim,char _delim) { lock(); _fGline++; get( _b, _lim, (int)(unsigned char)_delim); unlock(); return *this; }
+ inline istream& istream::getline(unsigned char * _b,int _lim,char _delim) { lock(); _fGline++; get((char *)_b, _lim, (int)(unsigned char)_delim); unlock(); return *this; }
+ inline istream& istream::getline( signed char * _b,int _lim,char _delim) { lock(); _fGline++; get((char *)_b, _lim, (int)(unsigned char)_delim); unlock(); return *this; }
+
+ inline istream& istream::ignore(int _n,int _delim) { lock(); _fGline++; get((char *)0, _n+1, _delim); unlock(); return *this; }
+
+ inline istream& istream::read(unsigned char * _ptr, int _n) { return read((char *) _ptr, _n); }
+ inline istream& istream::read( signed char * _ptr, int _n) { return read((char *) _ptr, _n); }
+
+class _CRTIMP istream_withassign : public istream {
+ public:
+ istream_withassign();
+ istream_withassign(streambuf*);
+ ~istream_withassign();
+ istream& operator=(const istream& _is) { return istream::operator=(_is); }
+ istream& operator=(streambuf* _isb) { return istream::operator=(_isb); }
+};
+
+extern _CRTIMP istream_withassign cin;
+
+inline _CRTIMP istream& __cdecl ws(istream& _ins) { _ins.eatwhite(); return _ins; }
+
+_CRTIMP ios& __cdecl dec(ios&);
+_CRTIMP ios& __cdecl hex(ios&);
+_CRTIMP ios& __cdecl oct(ios&);
+
+#ifdef _MSC_VER
+// Restore default packing
+#pragma pack(pop)
+#endif // _MSC_VER
+
+#endif // _INC_ISTREAM
+
+#endif /* __cplusplus */
diff --git a/public/sdk/inc/crt/limits.h b/public/sdk/inc/crt/limits.h
new file mode 100644
index 000000000..ce86d17c5
--- /dev/null
+++ b/public/sdk/inc/crt/limits.h
@@ -0,0 +1,118 @@
+/***
+*limits.h - implementation dependent values
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Contains defines for a number of implementation dependent values
+* which are commonly used in C programs.
+* [ANSI]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_LIMITS
+#define _INC_LIMITS
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#define CHAR_BIT 8 /* number of bits in a char */
+#define SCHAR_MIN (-128) /* minimum signed char value */
+#define SCHAR_MAX 127 /* maximum signed char value */
+#define UCHAR_MAX 0xff /* maximum unsigned char value */
+
+#ifndef _CHAR_UNSIGNED
+#define CHAR_MIN SCHAR_MIN /* mimimum char value */
+#define CHAR_MAX SCHAR_MAX /* maximum char value */
+#else
+#define CHAR_MIN 0
+#define CHAR_MAX UCHAR_MAX
+#endif /* _CHAR_UNSIGNED */
+
+#define MB_LEN_MAX 2 /* max. # bytes in multibyte char */
+#define SHRT_MIN (-32768) /* minimum (signed) short value */
+#define SHRT_MAX 32767 /* maximum (signed) short value */
+#define USHRT_MAX 0xffff /* maximum unsigned short value */
+#define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */
+#define INT_MAX 2147483647 /* maximum (signed) int value */
+#define UINT_MAX 0xffffffff /* maximum unsigned int value */
+#define LONG_MIN (-2147483647L - 1) /* minimum (signed) long value */
+#define LONG_MAX 2147483647L /* maximum (signed) long value */
+#define ULONG_MAX 0xffffffffUL /* maximum unsigned long value */
+
+#if _INTEGRAL_MAX_BITS >= 8
+#define _I8_MIN (-127i8 - 1) /* minimum signed 8 bit value */
+#define _I8_MAX 127i8 /* maximum signed 8 bit value */
+#define _UI8_MAX 0xffui8 /* maximum unsigned 8 bit value */
+#endif
+
+#if _INTEGRAL_MAX_BITS >= 16
+#define _I16_MIN (-32767i16 - 1) /* minimum signed 16 bit value */
+#define _I16_MAX 32767i16 /* maximum signed 16 bit value */
+#define _UI16_MAX 0xffffui16 /* maximum unsigned 16 bit value */
+#endif
+
+#if _INTEGRAL_MAX_BITS >= 32
+#define _I32_MIN (-2147483647i32 - 1) /* minimum signed 32 bit value */
+#define _I32_MAX 2147483647i32 /* maximum signed 32 bit value */
+#define _UI32_MAX 0xffffffffui32 /* maximum unsigned 32 bit value */
+#endif
+
+#if _INTEGRAL_MAX_BITS >= 64
+/* minimum signed 64 bit value */
+#define _I64_MIN (-9223372036854775807i64 - 1)
+/* maximum signed 64 bit value */
+#define _I64_MAX 9223372036854775807i64
+/* maximum unsigned 64 bit value */
+#define _UI64_MAX 0xffffffffffffffffui64
+#endif
+
+#if _INTEGRAL_MAX_BITS >= 128
+/* minimum signed 128 bit value */
+#define _I128_MIN (-170141183460469231731687303715884105727i128 - 1)
+/* maximum signed 128 bit value */
+#define _I128_MAX 170141183460469231731687303715884105727i128
+/* maximum unsigned 128 bit value */
+#define _UI128_MAX 0xffffffffffffffffffffffffffffffffui128
+#endif
+
+#ifdef _POSIX_
+
+#define _POSIX_ARG_MAX 4096
+#define _POSIX_CHILD_MAX 6
+#define _POSIX_LINK_MAX 8
+#define _POSIX_MAX_CANON 255
+#define _POSIX_MAX_INPUT 255
+#define _POSIX_NAME_MAX 14
+#define _POSIX_NGROUPS_MAX 0
+#define _POSIX_OPEN_MAX 16
+#define _POSIX_PATH_MAX 255
+#define _POSIX_PIPE_BUF 512
+#define _POSIX_SSIZE_MAX 32767
+#define _POSIX_STREAM_MAX 8
+#define _POSIX_TZNAME_MAX 3
+
+#define ARG_MAX 14500 /* 16k heap, minus overhead */
+#define LINK_MAX 1024
+#define MAX_CANON _POSIX_MAX_CANON
+#define MAX_INPUT _POSIX_MAX_INPUT
+#define NAME_MAX 255
+#define NGROUPS_MAX 16
+#define OPEN_MAX 32
+#define PATH_MAX 512
+#define PIPE_BUF _POSIX_PIPE_BUF
+#define SSIZE_MAX _POSIX_SSIZE_MAX
+#define STREAM_MAX 20
+#define TZNAME_MAX 10
+
+#endif /* POSIX */
+
+#endif /* _INC_LIMITS */
diff --git a/public/sdk/inc/crt/locale.h b/public/sdk/inc/crt/locale.h
new file mode 100644
index 000000000..3a1620169
--- /dev/null
+++ b/public/sdk/inc/crt/locale.h
@@ -0,0 +1,174 @@
+/***
+*locale.h - definitions/declarations for localization routines
+*
+* Copyright (c) 1988-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the structures, values, macros, and functions
+* used by the localization routines.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_LOCALE
+#define _INC_LOCALE
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _MAC
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+
+/* define NULL pointer value */
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+/* Locale categories */
+
+#define LC_ALL 0
+#define LC_COLLATE 1
+#define LC_CTYPE 2
+#define LC_MONETARY 3
+#define LC_NUMERIC 4
+#define LC_TIME 5
+
+#define LC_MIN LC_ALL
+#define LC_MAX LC_TIME
+
+/* Locale convention structure */
+
+#ifndef _LCONV_DEFINED
+struct lconv {
+ char *decimal_point;
+ char *thousands_sep;
+ char *grouping;
+ char *int_curr_symbol;
+ char *currency_symbol;
+ char *mon_decimal_point;
+ char *mon_thousands_sep;
+ char *mon_grouping;
+ char *positive_sign;
+ char *negative_sign;
+ char int_frac_digits;
+ char frac_digits;
+ char p_cs_precedes;
+ char p_sep_by_space;
+ char n_cs_precedes;
+ char n_sep_by_space;
+ char p_sign_posn;
+ char n_sign_posn;
+ };
+#define _LCONV_DEFINED
+#endif
+
+/* ANSI: char lconv members default is CHAR_MAX which is compile time
+ dependent. Defining and using _charmax here causes CRT startup code
+ to initialize lconv members properly */
+
+#ifdef _CHAR_UNSIGNED
+extern int _charmax;
+extern __inline int __dummy() { return _charmax; }
+#endif
+
+/* function prototypes */
+
+_CRTIMP char * __cdecl setlocale(int, const char *);
+_CRTIMP struct lconv * __cdecl localeconv(void);
+
+#ifndef _MAC
+#ifndef _WLOCALE_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+_CRTIMP wchar_t * __cdecl _wsetlocale(int, const wchar_t *);
+
+#define _WLOCALE_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_LOCALE */
diff --git a/public/sdk/inc/crt/malloc.h b/public/sdk/inc/crt/malloc.h
new file mode 100644
index 000000000..dc1f4aa71
--- /dev/null
+++ b/public/sdk/inc/crt/malloc.h
@@ -0,0 +1,198 @@
+/***
+*malloc.h - declarations and definitions for memory allocation functions
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Contains the function declarations for memory allocation functions;
+* also defines manifest constants and types used by the heap routines.
+* [System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_MALLOC
+#define _INC_MALLOC
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+
+/* Maximum heap request the heap manager will attempt */
+
+#define _HEAP_MAXREQ 0xFFFFFFE0
+
+/* Constants for _heapchk/_heapset/_heapwalk routines */
+
+#define _HEAPEMPTY (-1)
+#define _HEAPOK (-2)
+#define _HEAPBADBEGIN (-3)
+#define _HEAPBADNODE (-4)
+#define _HEAPEND (-5)
+#define _HEAPBADPTR (-6)
+#define _FREEENTRY 0
+#define _USEDENTRY 1
+
+#ifndef _HEAPINFO_DEFINED
+typedef struct _heapinfo {
+ int * _pentry;
+ size_t _size;
+ int _useflag;
+ } _HEAPINFO;
+#define _HEAPINFO_DEFINED
+#endif
+
+#ifndef _NTSDK
+
+/* External variable declarations */
+
+#if defined(_DLL) && defined(_M_IX86)
+
+#define _amblksiz (*__p__amblksiz())
+_CRTIMP unsigned int * __cdecl __p__amblksiz(void);
+
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+
+extern unsigned int _amblksiz;
+
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+#endif /* _NTSDK */
+
+
+/* Function prototypes */
+
+_CRTIMP void * __cdecl calloc(size_t, size_t);
+_CRTIMP void __cdecl free(void *);
+_CRTIMP void * __cdecl malloc(size_t);
+_CRTIMP void * __cdecl realloc(void *, size_t);
+#if defined(_M_M68K) || defined(_M_MPPC)
+_CRTIMP size_t __cdecl _stackavail(void);
+#endif
+
+#ifndef _POSIX_
+
+void * __cdecl _alloca(size_t);
+_CRTIMP void * __cdecl _expand(void *, size_t);
+#ifndef _NTSDK
+_CRTIMP int __cdecl _heapadd(void *, size_t);
+_CRTIMP int __cdecl _heapchk(void);
+_CRTIMP int __cdecl _heapmin(void);
+_CRTIMP int __cdecl _heapset(unsigned int);
+_CRTIMP int __cdecl _heapwalk(_HEAPINFO *);
+_CRTIMP size_t __cdecl _heapused(size_t *, size_t *);
+#endif /* _NTSDK */
+_CRTIMP size_t __cdecl _msize(void *);
+
+#if !__STDC__
+/* Non-ANSI names for compatibility */
+#define alloca _alloca
+#endif /* __STDC__*/
+
+#if defined(_M_MRX000) || defined(_M_PPC) || defined(_M_ALPHA)
+#pragma intrinsic(_alloca)
+#endif
+
+#endif /* _POSIX_ */
+
+#ifdef HEAPHOOK
+#ifndef _HEAPHOOK_DEFINED
+/* hook function type */
+typedef int (__cdecl * _HEAPHOOK)(int, size_t, void *, void **);
+#define _HEAPHOOK_DEFINED
+#endif /* _HEAPHOOK_DEFINED */
+
+/* set hook function */
+_CRTIMP _HEAPHOOK __cdecl _setheaphook(_HEAPHOOK);
+
+/* hook function must handle these types */
+#define _HEAP_MALLOC 1
+#define _HEAP_CALLOC 2
+#define _HEAP_FREE 3
+#define _HEAP_REALLOC 4
+#define _HEAP_MSIZE 5
+#define _HEAP_EXPAND 6
+#endif /* HEAPHOOK */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_MALLOC */
diff --git a/public/sdk/inc/crt/math.h b/public/sdk/inc/crt/math.h
new file mode 100644
index 000000000..7f777e753
--- /dev/null
+++ b/public/sdk/inc/crt/math.h
@@ -0,0 +1,429 @@
+/***
+*math.h - definitions and declarations for math library
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains constant definitions and external subroutine
+* declarations for the math subroutine library.
+* [ANSI/System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_MATH
+#define _INC_MATH
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __assembler /* Protect from assembler */
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+/* Definition of _exception struct - this struct is passed to the matherr
+ * routine when a floating point exception is detected
+ */
+
+#ifndef _EXCEPTION_DEFINED
+struct _exception {
+ int type; /* exception type - see below */
+ char *name; /* name of function where error occured */
+ double arg1; /* first argument to function */
+ double arg2; /* second argument (if any) to function */
+ double retval; /* value to be returned by function */
+ } ;
+
+#define _EXCEPTION_DEFINED
+#endif
+
+
+/* Definition of a _complex struct to be used by those who use cabs and
+ * want type checking on their argument
+ */
+
+#ifndef _COMPLEX_DEFINED
+struct _complex {
+ double x,y; /* real and imaginary parts */
+ } ;
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#define complex _complex
+#endif
+
+#define _COMPLEX_DEFINED
+#endif
+#endif /* __assembler */
+
+
+/* Constant definitions for the exception type passed in the _exception struct
+ */
+
+#define _DOMAIN 1 /* argument domain error */
+#define _SING 2 /* argument singularity */
+#define _OVERFLOW 3 /* overflow range error */
+#define _UNDERFLOW 4 /* underflow range error */
+#define _TLOSS 5 /* total loss of precision */
+#define _PLOSS 6 /* partial loss of precision */
+
+#define EDOM 33
+#define ERANGE 34
+
+
+/* Definitions of _HUGE and HUGE_VAL - respectively the XENIX and ANSI names
+ * for a value returned in case of error by a number of the floating point
+ * math routines
+ */
+#ifndef __assembler /* Protect from assembler */
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#ifdef _DLL
+#define _HUGE (*_HUGE_dll)
+extern double * _HUGE_dll;
+#else /* ndef _DLL */
+extern double _HUGE;
+#endif /* _DLL */
+#else /* ndef _NTSDK */
+/* current definition */
+_CRTIMP extern double _HUGE;
+#endif /* _NTSDK */
+#endif /* __assembler */
+
+#define HUGE_VAL _HUGE
+
+
+/* Function prototypes */
+
+#if !defined(__assembler) /* Protect from assembler */
+#if _M_MRX000
+_CRTIMP int __cdecl abs(int);
+_CRTIMP double __cdecl acos(double);
+_CRTIMP double __cdecl asin(double);
+_CRTIMP double __cdecl atan(double);
+_CRTIMP double __cdecl atan2(double, double);
+_CRTIMP double __cdecl cos(double);
+_CRTIMP double __cdecl cosh(double);
+_CRTIMP double __cdecl exp(double);
+_CRTIMP double __cdecl fabs(double);
+_CRTIMP double __cdecl fmod(double, double);
+_CRTIMP long __cdecl labs(long);
+_CRTIMP double __cdecl log(double);
+_CRTIMP double __cdecl log10(double);
+_CRTIMP double __cdecl pow(double, double);
+_CRTIMP double __cdecl sin(double);
+_CRTIMP double __cdecl sinh(double);
+_CRTIMP double __cdecl tan(double);
+_CRTIMP double __cdecl tanh(double);
+_CRTIMP double __cdecl sqrt(double);
+#else
+ int __cdecl abs(int);
+ double __cdecl acos(double);
+ double __cdecl asin(double);
+ double __cdecl atan(double);
+ double __cdecl atan2(double, double);
+ double __cdecl cos(double);
+ double __cdecl cosh(double);
+ double __cdecl exp(double);
+ double __cdecl fabs(double);
+ double __cdecl fmod(double, double);
+ long __cdecl labs(long);
+ double __cdecl log(double);
+ double __cdecl log10(double);
+ double __cdecl pow(double, double);
+ double __cdecl sin(double);
+ double __cdecl sinh(double);
+ double __cdecl tan(double);
+ double __cdecl tanh(double);
+ double __cdecl sqrt(double);
+#endif
+_CRTIMP double __cdecl atof(const char *);
+_CRTIMP double __cdecl _cabs(struct _complex);
+_CRTIMP double __cdecl ceil(double);
+_CRTIMP double __cdecl floor(double);
+_CRTIMP double __cdecl frexp(double, int *);
+_CRTIMP double __cdecl _hypot(double, double);
+_CRTIMP double __cdecl _j0(double);
+_CRTIMP double __cdecl _j1(double);
+_CRTIMP double __cdecl _jn(int, double);
+_CRTIMP double __cdecl ldexp(double, int);
+ int __cdecl _matherr(struct _exception *);
+_CRTIMP double __cdecl modf(double, double *);
+
+_CRTIMP double __cdecl _y0(double);
+_CRTIMP double __cdecl _y1(double);
+_CRTIMP double __cdecl _yn(int, double);
+
+
+#ifdef _M_MRX000
+
+/* MIPS fast prototypes for float */
+/* ANSI C, 4.5 Mathematics */
+
+/* 4.5.2 Trigonometric functions */
+
+_CRTIMP float __cdecl acosf( float );
+_CRTIMP float __cdecl asinf( float );
+_CRTIMP float __cdecl atanf( float );
+_CRTIMP float __cdecl atan2f( float , float );
+_CRTIMP float __cdecl cosf( float );
+_CRTIMP float __cdecl sinf( float );
+_CRTIMP float __cdecl tanf( float );
+
+/* 4.5.3 Hyperbolic functions */
+_CRTIMP float __cdecl coshf( float );
+_CRTIMP float __cdecl sinhf( float );
+_CRTIMP float __cdecl tanhf( float );
+
+/* 4.5.4 Exponential and logarithmic functions */
+_CRTIMP float __cdecl expf( float );
+_CRTIMP float __cdecl logf( float );
+_CRTIMP float __cdecl log10f( float );
+_CRTIMP float __cdecl modff( float , float* );
+
+/* 4.5.5 Power functions */
+_CRTIMP float __cdecl powf( float , float );
+ float __cdecl sqrtf( float );
+
+/* 4.5.6 Nearest integer, absolute value, and remainder functions */
+ float __cdecl ceilf( float );
+ float __cdecl fabsf( float );
+ float __cdecl floorf( float );
+_CRTIMP float __cdecl fmodf( float , float );
+
+_CRTIMP float __cdecl hypotf(float, float);
+
+#endif /* _M_MRX000 */
+
+#if !defined(_M_M68K)
+/* Macros defining long double functions to be their double counterparts
+ * (long double is synonymous with double in this implementation).
+ */
+
+
+#define acosl(x) ((long double)acos((double)(x)))
+#define asinl(x) ((long double)asin((double)(x)))
+#define atanl(x) ((long double)atan((double)(x)))
+#define atan2l(x,y) ((long double)atan2((double)(x), (double)(y)))
+#define _cabsl _cabs
+#define ceill(x) ((long double)ceil((double)(x)))
+#define cosl(x) ((long double)cos((double)(x)))
+#define coshl(x) ((long double)cosh((double)(x)))
+#define expl(x) ((long double)exp((double)(x)))
+#define fabsl(x) ((long double)fabs((double)(x)))
+#define floorl(x) ((long double)floor((double)(x)))
+#define fmodl(x,y) ((long double)fmod((double)(x), (double)(y)))
+#define frexpl(x,y) ((long double)frexp((double)(x), (y)))
+#define _hypotl(x,y) ((long double)_hypot((double)(x), (double)(y)))
+#define ldexpl(x,y) ((long double)ldexp((double)(x), (y)))
+#define logl(x) ((long double)log((double)(x)))
+#define log10l(x) ((long double)log10((double)(x)))
+#define _matherrl _matherr
+#define modfl(x,y) ((long double)modf((double)(x), (double *)(y)))
+#define powl(x,y) ((long double)pow((double)(x), (double)(y)))
+#define sinl(x) ((long double)sin((double)(x)))
+#define sinhl(x) ((long double)sinh((double)(x)))
+#define sqrtl(x) ((long double)sqrt((double)(x)))
+#define tanl(x) ((long double)tan((double)(x)))
+#define tanhl(x) ((long double)tanh((double)(x)))
+#endif /* _M_M68K */
+#endif /* __assembler */
+
+#if !__STDC__
+
+/* Non-ANSI names for compatibility */
+
+#define DOMAIN _DOMAIN
+#define SING _SING
+#define OVERFLOW _OVERFLOW
+#define UNDERFLOW _UNDERFLOW
+#define TLOSS _TLOSS
+#define PLOSS _PLOSS
+
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+#define matherr _matherr
+#endif /* !defined(_M_MPPC) && !defined(_M_M68K) */
+
+#ifndef __assembler /* Protect from assembler */
+
+#ifdef _NTSDK
+
+/* Definitions and declarations compatible with NT SDK */
+
+#ifdef _DLL
+#define HUGE (*HUGE_dll)
+extern double * HUGE_dll;
+#else /* ndef _DLL */
+extern double HUGE;
+#endif /* _DLL */
+
+#define cabs _cabs
+#define hypot _hypot
+#define j0 _j0
+#define j1 _j1
+#define jn _jn
+#define y0 _y0
+#define y1 _y1
+#define yn _yn
+
+#else /* ndef _NTSDK */
+
+/* Current definitions and declarations */
+
+_CRTIMP extern double HUGE;
+
+_CRTIMP double __cdecl cabs(struct complex);
+_CRTIMP double __cdecl hypot(double, double);
+_CRTIMP double __cdecl j0(double);
+_CRTIMP double __cdecl j1(double);
+_CRTIMP double __cdecl jn(int, double);
+ int __cdecl matherr(struct _exception *);
+_CRTIMP double __cdecl y0(double);
+_CRTIMP double __cdecl y1(double);
+_CRTIMP double __cdecl yn(int, double);
+
+#endif /* _NTSDK */
+#endif /* __assembler */
+
+#endif /* __STDC__ */
+
+#ifdef _M_M68K
+/* definition of _exceptionl struct - this struct is passed to the _matherrl
+ * routine when a floating point exception is detected in a long double routine
+ */
+
+#ifndef _LD_EXCEPTION_DEFINED
+
+struct _exceptionl {
+ int type; /* exception type - see below */
+ char *name; /* name of function where error occured */
+ long double arg1; /* first argument to function */
+ long double arg2; /* second argument (if any) to function */
+ long double retval; /* value to be returned by function */
+} ;
+#define _LD_EXCEPTION_DEFINED
+#endif
+
+
+/* definition of a _complexl struct to be used by those who use _cabsl and
+ * want type checking on their argument
+ */
+
+#ifndef _LD_COMPLEX_DEFINED
+struct _complexl {
+ long double x,y; /* real and imaginary parts */
+} ;
+#define _LD_COMPLEX_DEFINED
+#endif
+
+
+long double __cdecl acosl(long double);
+long double __cdecl asinl(long double);
+long double __cdecl atanl(long double);
+long double __cdecl atan2l(long double, long double);
+long double __cdecl _atold(const char *);
+long double __cdecl _cabsl(struct _complexl);
+long double __cdecl ceill(long double);
+long double __cdecl cosl(long double);
+long double __cdecl coshl(long double);
+long double __cdecl expl(long double);
+long double __cdecl fabsl(long double);
+long double __cdecl floorl(long double);
+long double __cdecl fmodl(long double, long double);
+long double __cdecl frexpl(long double, int *);
+long double __cdecl _hypotl(long double, long double);
+long double __cdecl _j0l(long double);
+long double __cdecl _j1l(long double);
+long double __cdecl _jnl(int, long double);
+long double __cdecl ldexpl(long double, int);
+long double __cdecl logl(long double);
+long double __cdecl log10l(long double);
+int __cdecl _matherrl(struct _exceptionl *);
+long double __cdecl modfl(long double, long double *);
+long double __cdecl powl(long double, long double);
+long double __cdecl sinl(long double);
+long double __cdecl sinhl(long double);
+long double __cdecl sqrtl(long double);
+long double __cdecl tanl(long double);
+long double __cdecl tanhl(long double);
+long double __cdecl _y0l(long double);
+long double __cdecl _y1l(long double);
+long double __cdecl _ynl(int, long double);
+
+#endif /* _M_M68K */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_MATH */
+
diff --git a/public/sdk/inc/crt/mbctype.h b/public/sdk/inc/crt/mbctype.h
new file mode 100644
index 000000000..7e3697816
--- /dev/null
+++ b/public/sdk/inc/crt/mbctype.h
@@ -0,0 +1,191 @@
+/***
+*mbctype.h - MBCS character conversion macros
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Defines macros for MBCS character classification/conversion.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_MBCTYPE
+#define _INC_MBCTYPE
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+/* include the standard ctype.h header file */
+
+#include <ctype.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+/*
+ * MBCS - Multi-Byte Character Set
+ */
+
+/*
+ * This declaration allows the user access the _mbctype[] look-up array.
+ */
+
+#ifdef _NTSDK
+
+/* declarations compatible with NT SDK */
+
+#ifdef _DLL
+extern unsigned char * _mbctype;
+#else /* ndef _DLL */
+extern unsigned char _mbctype[];
+#endif /* _DLL */
+
+#else /* ndef _NTSDK */
+
+/* current declaration */
+#if defined(_DLL) && defined(_M_IX86)
+#define _mbctype (__p__mbctype())
+_CRTIMP unsigned char * __cdecl __p__mbctype(void);
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+_CRTIMP extern unsigned char _mbctype[];
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+#endif /* _NTSDK */
+
+
+/* bit masks for MBCS character types */
+
+#define _MS 0x01 /* MBCS single-byte symbol */
+#define _MP 0x02 /* MBCS punct */
+#define _M1 0x04 /* MBCS 1st (lead) byte */
+#define _M2 0x08 /* MBCS 2nd byte*/
+
+/* byte types */
+
+#define _MBC_SINGLE 0 /* valid single byte char */
+#define _MBC_LEAD 1 /* lead byte */
+#define _MBC_TRAIL 2 /* trailing byte */
+#define _MBC_ILLEGAL (-1) /* illegal byte */
+
+#define _KANJI_CP 932
+
+/* _setmbcp parameter defines */
+#define _MB_CP_SBCS 0
+#define _MB_CP_OEM -2
+#define _MB_CP_ANSI -3
+#define _MB_CP_LOCALE -4
+
+
+#ifndef _MBCTYPE_DEFINED
+
+/* MB control routines */
+
+_CRTIMP int __cdecl _setmbcp(int);
+_CRTIMP int __cdecl _getmbcp(void);
+
+
+/* MBCS character classification function prototypes */
+
+
+/* byte routines */
+_CRTIMP int __cdecl _ismbbkalnum( unsigned int );
+_CRTIMP int __cdecl _ismbbkana( unsigned int );
+_CRTIMP int __cdecl _ismbbkpunct( unsigned int );
+_CRTIMP int __cdecl _ismbbkprint( unsigned int );
+_CRTIMP int __cdecl _ismbbalpha( unsigned int );
+_CRTIMP int __cdecl _ismbbpunct( unsigned int );
+_CRTIMP int __cdecl _ismbbalnum( unsigned int );
+_CRTIMP int __cdecl _ismbbprint( unsigned int );
+_CRTIMP int __cdecl _ismbbgraph( unsigned int );
+
+#ifndef _MBLEADTRAIL_DEFINED
+_CRTIMP int __cdecl _ismbblead( unsigned int );
+_CRTIMP int __cdecl _ismbbtrail( unsigned int );
+_CRTIMP int __cdecl _ismbslead( const unsigned char *, const unsigned char *);
+_CRTIMP int __cdecl _ismbstrail( const unsigned char *, const unsigned char *);
+#define _MBLEADTRAIL_DEFINED
+#endif
+
+#define _MBCTYPE_DEFINED
+#endif
+
+/*
+ * char byte classification macros
+ */
+
+#define _ismbbkalnum(_c) ((_mbctype+1)[(unsigned char)(_c)] & _MS)
+#define _ismbbkprint(_c) ((_mbctype+1)[(unsigned char)(_c)] & (_MS|_MP))
+#define _ismbbkpunct(_c) ((_mbctype+1)[(unsigned char)(_c)] & _MP)
+
+#define _ismbbalnum(_c) (((_ctype+1)[(unsigned char)(_c)] & (_ALPHA|_DIGIT))||_ismbbkalnum(_c))
+#define _ismbbalpha(_c) (((_ctype+1)[(unsigned char)(_c)] & (_ALPHA))||_ismbbkalnum(_c))
+#define _ismbbgraph(_c) (((_ctype+1)[(unsigned char)(_c)] & (_PUNCT|_ALPHA|_DIGIT))||_ismbbkprint(_c))
+#define _ismbbprint(_c) (((_ctype+1)[(unsigned char)(_c)] & (_BLANK|_PUNCT|_ALPHA|_DIGIT))||_ismbbkprint(_c))
+#define _ismbbpunct(_c) (((_ctype+1)[(unsigned char)(_c)] & _PUNCT)||_ismbbkpunct(_c))
+
+#define _ismbblead(_c) ((_mbctype+1)[(unsigned char)(_c)] & _M1)
+#define _ismbbtrail(_c) ((_mbctype+1)[(unsigned char)(_c)] & _M2)
+
+#define _ismbbkana(_c) ((_mbctype+1)[(unsigned char)(_c)] & (_MS|_MP))
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _INC_MBCTYPE */
diff --git a/public/sdk/inc/crt/mbstring.h b/public/sdk/inc/crt/mbstring.h
new file mode 100644
index 000000000..30a0e9c7f
--- /dev/null
+++ b/public/sdk/inc/crt/mbstring.h
@@ -0,0 +1,229 @@
+/***
+* mbstring.h - MBCS string manipulation macros and functions
+*
+* Copyright (c) 1990-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains macros and function declarations for the MBCS
+* string manipulation functions.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_MBSTRING
+#define _INC_MBSTRING
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+
+#ifndef _NLSCMP_DEFINED
+#define _NLSCMPERROR 2147483647 /* currently == INT_MAX */
+#define _NLSCMP_DEFINED
+#endif
+
+
+#ifndef _VA_LIST_DEFINED
+#ifdef _M_ALPHA
+typedef struct {
+ char *a0; /* pointer to first homed integer argument */
+ int offset; /* byte offset of next parameter */
+} va_list;
+#else
+typedef char * va_list;
+#endif
+#define _VA_LIST_DEFINED
+#endif
+
+#ifndef _FILE_DEFINED
+struct _iobuf {
+ char *_ptr;
+ int _cnt;
+ char *_base;
+ int _flag;
+ int _file;
+ int _charbuf;
+ int _bufsiz;
+ char *_tmpfname;
+ };
+typedef struct _iobuf FILE;
+#define _FILE_DEFINED
+#endif
+
+/*
+ * MBCS - Multi-Byte Character Set
+ */
+
+#ifndef _MBSTRING_DEFINED
+
+/* function prototypes */
+
+_CRTIMP unsigned int __cdecl _mbbtombc(unsigned int);
+_CRTIMP int __cdecl _mbbtype(unsigned char, int);
+_CRTIMP unsigned int __cdecl _mbctombb(unsigned int);
+_CRTIMP int __cdecl _mbsbtype(const unsigned char *, size_t);
+_CRTIMP unsigned char * __cdecl _mbscat(unsigned char *, const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbschr(const unsigned char *, unsigned int);
+_CRTIMP int __cdecl _mbscmp(const unsigned char *, const unsigned char *);
+_CRTIMP int __cdecl _mbscoll(const unsigned char *, const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbscpy(unsigned char *, const unsigned char *);
+_CRTIMP size_t __cdecl _mbscspn(const unsigned char *, const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbsdec(const unsigned char *, const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbsdup(const unsigned char *);
+_CRTIMP int __cdecl _mbsicmp(const unsigned char *, const unsigned char *);
+_CRTIMP int __cdecl _mbsicoll(const unsigned char *, const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbsinc(const unsigned char *);
+_CRTIMP size_t __cdecl _mbslen(const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbslwr(unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbsnbcat(unsigned char *, const unsigned char *, size_t);
+_CRTIMP int __cdecl _mbsnbcmp(const unsigned char *, const unsigned char *, size_t);
+_CRTIMP int __cdecl _mbsnbcoll(const unsigned char *, const unsigned char *, size_t);
+_CRTIMP size_t __cdecl _mbsnbcnt(const unsigned char *, size_t);
+_CRTIMP unsigned char * __cdecl _mbsnbcpy(unsigned char *, const unsigned char *, size_t);
+_CRTIMP int __cdecl _mbsnbicmp(const unsigned char *, const unsigned char *, size_t);
+_CRTIMP int __cdecl _mbsnbicoll(const unsigned char *, const unsigned char *, size_t);
+_CRTIMP unsigned char * __cdecl _mbsnbset(unsigned char *, unsigned int, size_t);
+_CRTIMP unsigned char * __cdecl _mbsncat(unsigned char *, const unsigned char *, size_t);
+_CRTIMP size_t __cdecl _mbsnccnt(const unsigned char *, size_t);
+_CRTIMP int __cdecl _mbsncmp(const unsigned char *, const unsigned char *, size_t);
+_CRTIMP int __cdecl _mbsncoll(const unsigned char *, const unsigned char *, size_t);
+_CRTIMP unsigned char * __cdecl _mbsncpy(unsigned char *, const unsigned char *, size_t);
+_CRTIMP unsigned int __cdecl _mbsnextc (const unsigned char *);
+_CRTIMP int __cdecl _mbsnicmp(const unsigned char *, const unsigned char *, size_t);
+_CRTIMP int __cdecl _mbsnicoll(const unsigned char *, const unsigned char *, size_t);
+_CRTIMP unsigned char * __cdecl _mbsninc(const unsigned char *, size_t);
+_CRTIMP unsigned char * __cdecl _mbsnset(unsigned char *, unsigned int, size_t);
+_CRTIMP unsigned char * __cdecl _mbspbrk(const unsigned char *, const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbsrchr(const unsigned char *, unsigned int);
+_CRTIMP unsigned char * __cdecl _mbsrev(unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbsset(unsigned char *, unsigned int);
+_CRTIMP size_t __cdecl _mbsspn(const unsigned char *, const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbsspnp(const unsigned char *, const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbsstr(const unsigned char *, const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbstok(unsigned char *, const unsigned char *);
+_CRTIMP unsigned char * __cdecl _mbsupr(unsigned char *);
+
+_CRTIMP size_t __cdecl _mbclen(const unsigned char *);
+_CRTIMP void __cdecl _mbccpy(unsigned char *, const unsigned char *);
+#define _mbccmp(_cpc1, _cpc2) _mbsncmp((_cpc1),(_cpc2),1)
+
+/* character routines */
+
+_CRTIMP int __cdecl _ismbcalnum(unsigned int);
+_CRTIMP int __cdecl _ismbcalpha(unsigned int);
+_CRTIMP int __cdecl _ismbcdigit(unsigned int);
+_CRTIMP int __cdecl _ismbcgraph(unsigned int);
+_CRTIMP int __cdecl _ismbclegal(unsigned int);
+_CRTIMP int __cdecl _ismbclower(unsigned int);
+_CRTIMP int __cdecl _ismbcprint(unsigned int);
+_CRTIMP int __cdecl _ismbcpunct(unsigned int);
+_CRTIMP int __cdecl _ismbcspace(unsigned int);
+_CRTIMP int __cdecl _ismbcupper(unsigned int);
+
+_CRTIMP unsigned int __cdecl _mbctolower(unsigned int);
+_CRTIMP unsigned int __cdecl _mbctoupper(unsigned int);
+
+#define _MBSTRING_DEFINED
+#endif
+
+#ifndef _MBLEADTRAIL_DEFINED
+_CRTIMP int __cdecl _ismbblead( unsigned int );
+_CRTIMP int __cdecl _ismbbtrail( unsigned int );
+_CRTIMP int __cdecl _ismbslead( const unsigned char *, const unsigned char *);
+_CRTIMP int __cdecl _ismbstrail( const unsigned char *, const unsigned char *);
+#define _MBLEADTRAIL_DEFINED
+#endif
+
+/* Kanji specific prototypes. */
+
+_CRTIMP int __cdecl _ismbchira(unsigned int);
+_CRTIMP int __cdecl _ismbckata(unsigned int);
+_CRTIMP int __cdecl _ismbcsymbol(unsigned int);
+_CRTIMP int __cdecl _ismbcl0(unsigned int);
+_CRTIMP int __cdecl _ismbcl1(unsigned int);
+_CRTIMP int __cdecl _ismbcl2(unsigned int);
+_CRTIMP unsigned int __cdecl _mbcjistojms(unsigned int);
+_CRTIMP unsigned int __cdecl _mbcjmstojis(unsigned int);
+_CRTIMP unsigned int __cdecl _mbctohira(unsigned int);
+_CRTIMP unsigned int __cdecl _mbctokata(unsigned int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_MBSTRING */
diff --git a/public/sdk/inc/crt/memory.h b/public/sdk/inc/crt/memory.h
new file mode 100644
index 000000000..87c935d2d
--- /dev/null
+++ b/public/sdk/inc/crt/memory.h
@@ -0,0 +1,118 @@
+/***
+*memory.h - declarations for buffer (memory) manipulation routines
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This include file contains the function declarations for the
+* buffer (memory) manipulation routines.
+* [System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_MEMORY
+#define _INC_MEMORY
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+/* Function prototypes */
+
+_CRTIMP void * __cdecl _memccpy(void *, const void *, int, unsigned int);
+_CRTIMP void * __cdecl memchr(const void *, int, size_t);
+_CRTIMP int __cdecl _memicmp(const void *, const void *, unsigned int);
+#ifdef _M_MRX000
+_CRTIMP int __cdecl memcmp(const void *, const void *, size_t);
+_CRTIMP void * __cdecl memcpy(void *, const void *, size_t);
+_CRTIMP void * __cdecl memset(void *, int, size_t);
+#else
+ int __cdecl memcmp(const void *, const void *, size_t);
+ void * __cdecl memcpy(void *, const void *, size_t);
+ void * __cdecl memset(void *, int, size_t);
+#endif
+
+#if !__STDC__
+
+/* Non-ANSI names for compatibility */
+
+#if defined(_NTSDK)
+/* definitions compatible with the NT SDK */
+#define memccpy _memccpy
+#define memicmp _memicmp
+#else /* _NTSDK */
+/* current declarations */
+_CRTIMP void * __cdecl memccpy(void *, const void *, int, unsigned int);
+_CRTIMP int __cdecl memicmp(const void *, const void *, unsigned int);
+#endif /* _NTSDK */
+
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_MEMORY */
diff --git a/public/sdk/inc/crt/new.h b/public/sdk/inc/crt/new.h
new file mode 100644
index 000000000..9f45b5649
--- /dev/null
+++ b/public/sdk/inc/crt/new.h
@@ -0,0 +1,125 @@
+/***
+*new.h - declarations and definitions for C++ memory allocation functions
+*
+* Copyright (c) 1990-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Contains the declarations for C++ memory allocation functions.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_NEW
+#define _INC_NEW
+
+#ifdef __cplusplus
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+
+#include <stdexcpt.h> /* for class exception */
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+/* types and structures */
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+/* default new placement operator */
+inline void * operator new( size_t, void * ptr ) { return ptr; }
+
+/*
+ * new mode flag -- when set, makes malloc() behave like new()
+ */
+
+_CRTIMP int __cdecl _query_new_mode( void );
+_CRTIMP int __cdecl _set_new_mode( int );
+
+#ifndef _PNH_DEFINED
+typedef int (__cdecl * _PNH)( size_t );
+#define _PNH_DEFINED
+#endif
+
+_CRTIMP _PNH __cdecl _query_new_handler( void );
+_CRTIMP _PNH __cdecl _set_new_handler( _PNH );
+
+
+/*
+ * ANSI C++ new_handler and set_new_handler:
+ *
+ * WARNING: set_new_handler is a stub function that is provided to
+ * allow compilation of the Standard Template Library (STL).
+ *
+ * Do NOT use it to register a new handler. Use _set_new_handler instead.
+ *
+ * However, it can be called to remove the current handler:
+ *
+ * set_new_handler(NULL); // calls _set_new_handler(NULL)
+ */
+
+#ifndef _ANSI_NH_DEFINED
+typedef void (__cdecl * new_handler) ();
+#define _ANSI_NH_DEFINED
+#endif
+
+_CRTIMP new_handler __cdecl set_new_handler(new_handler);
+
+
+#endif /* __cplusplus */
+
+#endif /* _INC_NEW */
diff --git a/public/sdk/inc/crt/ostream.h b/public/sdk/inc/crt/ostream.h
new file mode 100644
index 000000000..b32329013
--- /dev/null
+++ b/public/sdk/inc/crt/ostream.h
@@ -0,0 +1,161 @@
+/***
+*ostream.h - definitions/declarations for the ostream class
+*
+* Copyright (c) 1991-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the classes, values, macros, and functions
+* used by the ostream class.
+* [AT&T C++]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifdef __cplusplus
+
+#ifndef _INC_OSTREAM
+#define _INC_OSTREAM
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+// Currently, all MS C compilers for Win32 platforms default to 8 byte
+// alignment.
+#pragma pack(push,8)
+#endif // _MSC_VER
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+#include <ios.h>
+
+#ifdef _MSC_VER
+// C4514: "unreferenced inline function has been removed"
+#pragma warning(disable:4514) // disable C4514 warning
+// #pragma warning(default:4514) // use this to reenable, if desired
+#endif // _MSC_VER
+
+typedef long streamoff, streampos;
+
+class _CRTIMP ostream : virtual public ios {
+
+public:
+ ostream(streambuf*);
+ virtual ~ostream();
+
+ ostream& flush();
+ int opfx();
+ void osfx();
+
+inline ostream& operator<<(ostream& (__cdecl * _f)(ostream&));
+inline ostream& operator<<(ios& (__cdecl * _f)(ios&));
+ ostream& operator<<(const char *);
+inline ostream& operator<<(const unsigned char *);
+inline ostream& operator<<(const signed char *);
+inline ostream& operator<<(char);
+ ostream& operator<<(unsigned char);
+inline ostream& operator<<(signed char);
+ ostream& operator<<(short);
+ ostream& operator<<(unsigned short);
+ ostream& operator<<(int);
+ ostream& operator<<(unsigned int);
+ ostream& operator<<(long);
+ ostream& operator<<(unsigned long);
+inline ostream& operator<<(float);
+ ostream& operator<<(double);
+ ostream& operator<<(long double);
+ ostream& operator<<(const void *);
+ ostream& operator<<(streambuf*);
+inline ostream& put(char);
+ ostream& put(unsigned char);
+inline ostream& put(signed char);
+ ostream& write(const char *,int);
+inline ostream& write(const unsigned char *,int);
+inline ostream& write(const signed char *,int);
+ ostream& seekp(streampos);
+ ostream& seekp(streamoff,ios::seek_dir);
+ streampos tellp();
+
+protected:
+ ostream();
+ ostream(const ostream&); // treat as private
+ ostream& operator=(streambuf*); // treat as private
+ ostream& operator=(const ostream& _os) {return operator=(_os.rdbuf()); }
+ int do_opfx(int); // not used
+ void do_osfx(); // not used
+
+private:
+ ostream(ios&);
+ ostream& writepad(const char *, const char *);
+ int x_floatused;
+};
+
+inline ostream& ostream::operator<<(ostream& (__cdecl * _f)(ostream&)) { (*_f)(*this); return *this; }
+inline ostream& ostream::operator<<(ios& (__cdecl * _f)(ios& )) { (*_f)(*this); return *this; }
+
+inline ostream& ostream::operator<<(char _c) { return operator<<((unsigned char) _c); }
+inline ostream& ostream::operator<<(signed char _c) { return operator<<((unsigned char) _c); }
+
+inline ostream& ostream::operator<<(const unsigned char * _s) { return operator<<((const char *) _s); }
+inline ostream& ostream::operator<<(const signed char * _s) { return operator<<((const char *) _s); }
+
+inline ostream& ostream::operator<<(float _f) { x_floatused = 1; return operator<<((double) _f); }
+
+inline ostream& ostream::put(char _c) { return put((unsigned char) _c); }
+inline ostream& ostream::put(signed char _c) { return put((unsigned char) _c); }
+
+inline ostream& ostream::write(const unsigned char * _s, int _n) { return write((char *) _s, _n); }
+inline ostream& ostream::write(const signed char * _s, int _n) { return write((char *) _s, _n); }
+
+
+class _CRTIMP ostream_withassign : public ostream {
+ public:
+ ostream_withassign();
+ ostream_withassign(streambuf* _is);
+ ~ostream_withassign();
+ ostream& operator=(const ostream& _os) { return ostream::operator=(_os.rdbuf()); }
+ ostream& operator=(streambuf* _sb) { return ostream::operator=(_sb); }
+};
+
+extern ostream_withassign _CRTIMP cout;
+extern ostream_withassign _CRTIMP cerr;
+extern ostream_withassign _CRTIMP clog;
+
+inline _CRTIMP ostream& __cdecl flush(ostream& _outs) { return _outs.flush(); }
+inline _CRTIMP ostream& __cdecl endl(ostream& _outs) { return _outs << '\n' << flush; }
+inline _CRTIMP ostream& __cdecl ends(ostream& _outs) { return _outs << char('\0'); }
+
+_CRTIMP ios& __cdecl dec(ios&);
+_CRTIMP ios& __cdecl hex(ios&);
+_CRTIMP ios& __cdecl oct(ios&);
+
+#ifdef _MSC_VER
+// Restore default packing
+#pragma pack(pop)
+#endif // _MSC_VER
+
+#endif // _INC_OSTREAM
+
+#endif /* __cplusplus */
diff --git a/public/sdk/inc/crt/process.h b/public/sdk/inc/crt/process.h
new file mode 100644
index 000000000..a07f6a923
--- /dev/null
+++ b/public/sdk/inc/crt/process.h
@@ -0,0 +1,310 @@
+/***
+*process.h - definition and declarations for process control functions
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the modeflag values for spawnxx calls.
+* Also contains the function argument declarations for all
+* process control related routines.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_PROCESS
+#define _INC_PROCESS
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifndef _POSIX_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _MAC
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+
+/* modeflag values for _spawnxx routines */
+
+#ifndef _MAC
+
+#define _P_WAIT 0
+#define _P_NOWAIT 1
+#define _OLD_P_OVERLAY 2
+#define _P_NOWAITO 3
+#define _P_DETACH 4
+
+#ifdef _MT
+#define _P_OVERLAY 2
+#else
+extern int _p_overlay;
+#define _P_OVERLAY _p_overlay
+#endif /* _MT */
+
+/* Action codes for _cwait(). The action code argument to _cwait is ignored
+ on Win32 though it is accepted for compatibilty with old MS CRT libs */
+#define _WAIT_CHILD 0
+#define _WAIT_GRANDCHILD 1
+
+#else /* ndef _MAC */
+
+#define _P_NOWAIT 1
+#define _P_OVERLAY 2
+
+#endif /* ndef _MAC */
+
+
+/* function prototypes */
+
+#ifdef _MT
+_CRTIMP unsigned long __cdecl _beginthread (void (__cdecl *) (void *),
+ unsigned, void *);
+_CRTIMP void __cdecl _endthread(void);
+_CRTIMP unsigned long __cdecl _beginthreadex(void *, unsigned,
+ unsigned (__stdcall *) (void *), void *, unsigned, unsigned *);
+_CRTIMP void __cdecl _endthreadex(unsigned);
+#endif
+
+_CRTIMP void __cdecl abort(void);
+_CRTIMP void __cdecl _cexit(void);
+_CRTIMP void __cdecl _c_exit(void);
+_CRTIMP void __cdecl exit(int);
+_CRTIMP void __cdecl _exit(int);
+_CRTIMP int __cdecl _getpid(void);
+
+#ifndef _MAC
+
+_CRTIMP int __cdecl _cwait(int *, int, int);
+_CRTIMP int __cdecl _execl(const char *, const char *, ...);
+_CRTIMP int __cdecl _execle(const char *, const char *, ...);
+_CRTIMP int __cdecl _execlp(const char *, const char *, ...);
+_CRTIMP int __cdecl _execlpe(const char *, const char *, ...);
+_CRTIMP int __cdecl _execv(const char *, const char * const *);
+_CRTIMP int __cdecl _execve(const char *, const char * const *, const char * const *);
+_CRTIMP int __cdecl _execvp(const char *, const char * const *);
+_CRTIMP int __cdecl _execvpe(const char *, const char * const *, const char * const *);
+_CRTIMP int __cdecl _spawnl(int, const char *, const char *, ...);
+_CRTIMP int __cdecl _spawnle(int, const char *, const char *, ...);
+_CRTIMP int __cdecl _spawnlp(int, const char *, const char *, ...);
+_CRTIMP int __cdecl _spawnlpe(int, const char *, const char *, ...);
+_CRTIMP int __cdecl _spawnv(int, const char *, const char * const *);
+_CRTIMP int __cdecl _spawnve(int, const char *, const char * const *,
+ const char * const *);
+_CRTIMP int __cdecl _spawnvp(int, const char *, const char * const *);
+_CRTIMP int __cdecl _spawnvpe(int, const char *, const char * const *,
+ const char * const *);
+_CRTIMP int __cdecl system(const char *);
+
+#else /* ndef _MAC */
+
+_CRTIMP int __cdecl _spawn(int, const char *);
+
+#endif /* ndef _MAC */
+
+#ifndef _MAC
+#ifndef _WPROCESS_DEFINED
+/* wide function prototypes, also declared in wchar.h */
+_CRTIMP int __cdecl _wexecl(const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wexecle(const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wexeclp(const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wexeclpe(const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wexecv(const wchar_t *, const wchar_t * const *);
+_CRTIMP int __cdecl _wexecve(const wchar_t *, const wchar_t * const *, const wchar_t * const *);
+_CRTIMP int __cdecl _wexecvp(const wchar_t *, const wchar_t * const *);
+_CRTIMP int __cdecl _wexecvpe(const wchar_t *, const wchar_t * const *, const wchar_t * const *);
+_CRTIMP int __cdecl _wspawnl(int, const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wspawnle(int, const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wspawnlp(int, const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wspawnlpe(int, const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wspawnv(int, const wchar_t *, const wchar_t * const *);
+_CRTIMP int __cdecl _wspawnve(int, const wchar_t *, const wchar_t * const *,
+ const wchar_t * const *);
+_CRTIMP int __cdecl _wspawnvp(int, const wchar_t *, const wchar_t * const *);
+_CRTIMP int __cdecl _wspawnvpe(int, const wchar_t *, const wchar_t * const *,
+ const wchar_t * const *);
+_CRTIMP int __cdecl _wsystem(const wchar_t *);
+
+#define _WPROCESS_DEFINED
+#endif
+
+/* --------- The following functions are OBSOLETE --------- */
+/*
+ * The Win32 API LoadLibrary, FreeLibrary and GetProcAddress should be used
+ * instead.
+ */
+int __cdecl _loaddll(char *);
+int __cdecl _unloaddll(int);
+int (__cdecl * __cdecl _getdllprocaddr(int, char *, int))();
+/* --------- The preceding functions are OBSOLETE --------- */
+
+
+#ifdef _DECL_DLLMAIN
+/*
+ * Declare DLL notification (initialization/termination) routines
+ * The preferred method is for the user to provide DllMain() which will
+ * be called automatically by the DLL entry point defined by the C run-
+ * time library code. If the user wants to define the DLL entry point
+ * routine, the user's entry point must call _CRT_INIT on all types of
+ * notifications, as the very first thing on attach notifications and
+ * as the very last thing on detach notifications.
+ */
+#ifdef _WINDOWS_ /* Use types from WINDOWS.H */
+BOOL WINAPI DllMain(HANDLE, DWORD, LPVOID);
+BOOL WINAPI _CRT_INIT(HANDLE, DWORD, LPVOID);
+BOOL WINAPI _wCRT_INIT(HANDLE, DWORD, LPVOID);
+extern BOOL (WINAPI *_pRawDllMain)(HANDLE, DWORD, LPVOID);
+#else
+int __stdcall DllMain(void *, unsigned, void *);
+int __stdcall _CRT_INIT(void *, unsigned, void *);
+int __stdcall _wCRT_INIT(void *, unsigned, void *);
+extern int (__stdcall *_pRawDllMain)(void *, unsigned, void *);
+#endif /* _WINDOWS_ */
+#endif
+#endif /* ndef _MAC */
+
+#if !__STDC__
+
+/* Non-ANSI names for compatibility */
+
+
+#ifndef _MAC
+
+#define P_WAIT _P_WAIT
+#define P_NOWAIT _P_NOWAIT
+#define P_OVERLAY _P_OVERLAY
+#define OLD_P_OVERLAY _OLD_P_OVERLAY
+#define P_NOWAITO _P_NOWAITO
+#define P_DETACH _P_DETACH
+#define WAIT_CHILD _WAIT_CHILD
+#define WAIT_GRANDCHILD _WAIT_GRANDCHILD
+
+#else /* ndef _MAC */
+
+#define P_NOWAIT _P_NOWAIT
+#define P_OVERLAY _P_OVERLAY
+
+#endif /* ndef _MAC */
+
+#ifdef _NTSDK
+
+/* definitions compatible with NT SDK */
+#define cwait _cwait
+#define execl _execl
+#define execle _execle
+#define execlp _execlp
+#define execlpe _execlpe
+#define execv _execv
+#define execve _execve
+#define execvp _execvp
+#define execvpe _execvpe
+#define getpid _getpid
+#define spawnl _spawnl
+#define spawnle _spawnle
+#define spawnlp _spawnlp
+#define spawnlpe _spawnlpe
+#define spawnv _spawnv
+#define spawnve _spawnve
+#define spawnvp _spawnvp
+#define spawnvpe _spawnvpe
+
+#else /* ndef _NTSDK */
+
+#ifndef _MAC
+
+/* current declarations */
+_CRTIMP int __cdecl cwait(int *, int, int);
+_CRTIMP int __cdecl execl(const char *, const char *, ...);
+_CRTIMP int __cdecl execle(const char *, const char *, ...);
+_CRTIMP int __cdecl execlp(const char *, const char *, ...);
+_CRTIMP int __cdecl execlpe(const char *, const char *, ...);
+_CRTIMP int __cdecl execv(const char *, const char * const *);
+_CRTIMP int __cdecl execve(const char *, const char * const *, const char * const *);
+_CRTIMP int __cdecl execvp(const char *, const char * const *);
+_CRTIMP int __cdecl execvpe(const char *, const char * const *, const char * const *);
+_CRTIMP int __cdecl spawnl(int, const char *, const char *, ...);
+_CRTIMP int __cdecl spawnle(int, const char *, const char *, ...);
+_CRTIMP int __cdecl spawnlp(int, const char *, const char *, ...);
+_CRTIMP int __cdecl spawnlpe(int, const char *, const char *, ...);
+_CRTIMP int __cdecl spawnv(int, const char *, const char * const *);
+_CRTIMP int __cdecl spawnve(int, const char *, const char * const *,
+ const char * const *);
+_CRTIMP int __cdecl spawnvp(int, const char *, const char * const *);
+_CRTIMP int __cdecl spawnvpe(int, const char *, const char * const *,
+ const char * const *);
+
+#endif /* ndef _MAC */
+
+_CRTIMP int __cdecl getpid(void);
+
+#endif /* _NTSDK */
+
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _POSIX_ */
+
+#endif /* _INC_PROCESS */
diff --git a/public/sdk/inc/crt/search.h b/public/sdk/inc/crt/search.h
new file mode 100644
index 000000000..8e4478aec
--- /dev/null
+++ b/public/sdk/inc/crt/search.h
@@ -0,0 +1,116 @@
+/***
+*search.h - declarations for searcing/sorting routines
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains the declarations for the sorting and
+* searching routines.
+* [System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_SEARCH
+#define _INC_SEARCH
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+
+/* Function prototypes */
+
+_CRTIMP void * __cdecl bsearch(const void *, const void *, size_t, size_t,
+ int (__cdecl *)(const void *, const void *));
+_CRTIMP void * __cdecl _lfind(const void *, const void *, unsigned int *, unsigned int,
+ int (__cdecl *)(const void *, const void *));
+_CRTIMP void * __cdecl _lsearch(const void *, void *, unsigned int *, unsigned int,
+ int (__cdecl *)(const void *, const void *));
+_CRTIMP void __cdecl qsort(void *, size_t, size_t, int (__cdecl *)(const void *,
+ const void *));
+
+
+#if !__STDC__
+/* Non-ANSI names for compatibility */
+#ifdef _NTSDK
+/* definitions compatible with NT SDK */
+#define lfind _lfind
+#define lsearch _lsearch
+#else /* ndef _NTSDK */
+/* current declarations */
+_CRTIMP void * __cdecl lfind(const void *, const void *, unsigned int *, unsigned int,
+ int (__cdecl *)(const void *, const void *));
+_CRTIMP void * __cdecl lsearch(const void *, void *, unsigned int *, unsigned int,
+ int (__cdecl *)(const void *, const void *));
+#endif /* _NTSDK */
+#endif /* __STDC__ */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_SEARCH */
diff --git a/public/sdk/inc/crt/setjmp.h b/public/sdk/inc/crt/setjmp.h
new file mode 100644
index 000000000..26744e15c
--- /dev/null
+++ b/public/sdk/inc/crt/setjmp.h
@@ -0,0 +1,356 @@
+/***
+*setjmp.h - definitions/declarations for setjmp/longjmp routines
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the machine-dependent buffer used by
+* setjmp/longjmp to save and restore the program state, and
+* declarations for those routines.
+* [ANSI/System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_SETJMP
+#define _INC_SETJMP
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+/*
+ * Definitions specific to particular setjmp implementations.
+ */
+
+#if defined(_M_IX86)
+
+/*
+ * MS compiler for x86
+ */
+
+#ifndef _INC_SETJMPEX
+#define setjmp _setjmp
+#endif
+
+#define _JBLEN 16
+#define _JBTYPE int
+
+/*
+ * Define jump buffer layout for x86 setjmp/longjmp.
+ */
+typedef struct __JUMP_BUFFER {
+ unsigned long Ebp;
+ unsigned long Ebx;
+ unsigned long Edi;
+ unsigned long Esi;
+ unsigned long Esp;
+ unsigned long Eip;
+ unsigned long Registration;
+ unsigned long TryLevel;
+ unsigned long Cookie;
+ unsigned long UnwindFunc;
+ unsigned long UnwindData[6];
+} _JUMP_BUFFER;
+
+
+
+#elif defined(_M_MRX000)
+
+#ifndef _INC_SETJMPEX
+#define setjmp _setjmp
+#endif
+
+/*
+ * All MIPS implementations need _JBLEN of 16
+ */
+#define _JBLEN 16
+#define _JBTYPE double
+
+/*
+ * Define jump buffer layout for MIPS setjmp/longjmp.
+ */
+typedef struct __JUMP_BUFFER {
+ unsigned long FltF20;
+ unsigned long FltF21;
+ unsigned long FltF22;
+ unsigned long FltF23;
+ unsigned long FltF24;
+ unsigned long FltF25;
+ unsigned long FltF26;
+ unsigned long FltF27;
+ unsigned long FltF28;
+ unsigned long FltF29;
+ unsigned long FltF30;
+ unsigned long FltF31;
+ unsigned long IntS0;
+ unsigned long IntS1;
+ unsigned long IntS2;
+ unsigned long IntS3;
+ unsigned long IntS4;
+ unsigned long IntS5;
+ unsigned long IntS6;
+ unsigned long IntS7;
+ unsigned long IntS8;
+ unsigned long IntSp;
+ unsigned long Type;
+ unsigned long Fir;
+} _JUMP_BUFFER;
+
+
+#elif defined(_M_ALPHA)
+
+/*
+ * The Alpha C8/GEM C compiler uses an intrinsic _setjmp.
+ * The Alpha acc compiler implements setjmp as a function.
+ */
+#ifdef _MSC_VER
+#ifndef _INC_SETJMPEX
+#define setjmp _setjmp
+#endif
+#endif
+
+/*
+ * Alpha implementations use a _JBLEN of 24 quadwords.
+ * A double is used only to obtain quadword size and alignment.
+ */
+#define _JBLEN 24
+#define _JBTYPE double
+
+/*
+ * Define jump buffer layout for Alpha setjmp/longjmp.
+ * A double is used only to obtain quadword size and alignment.
+ */
+typedef struct __JUMP_BUFFER {
+ unsigned long Fp;
+ unsigned long Pc;
+ unsigned long Seb;
+ unsigned long Type;
+ double FltF2;
+ double FltF3;
+ double FltF4;
+ double FltF5;
+ double FltF6;
+ double FltF7;
+ double FltF8;
+ double FltF9;
+ double IntS0;
+ double IntS1;
+ double IntS2;
+ double IntS3;
+ double IntS4;
+ double IntS5;
+ double IntS6;
+ double IntSp;
+ double Fir;
+ double Fill[5];
+} _JUMP_BUFFER;
+
+#elif defined(_M_PPC)
+/*
+ * The Microsoft VC++ V4.0 compiler uses an intrinsic _setjmp.
+ * The Motorola C8.5 compiler implements setjmp as a function.
+ */
+
+#if _MSC_VER > 850
+#ifndef _INC_SETJMPEX
+#undef _setjmp
+#define setjmp _setjmp
+#endif
+#endif
+
+/*
+ * Min length is 240 bytes; round to 256 bytes.
+ * Since this is allocated as an array of "double", the
+ * number of entries required is 32.
+ *
+ * All PPC implementations need _JBLEN of 32
+ */
+
+#define _JBLEN 32
+#define _JBTYPE double
+
+/*
+ * Define jump buffer layout for PowerPC setjmp/longjmp.
+ */
+
+typedef struct __JUMP_BUFFER {
+ double Fpr14;
+ double Fpr15;
+ double Fpr16;
+ double Fpr17;
+ double Fpr18;
+ double Fpr19;
+ double Fpr20;
+ double Fpr21;
+ double Fpr22;
+ double Fpr23;
+ double Fpr24;
+ double Fpr25;
+ double Fpr26;
+ double Fpr27;
+ double Fpr28;
+ double Fpr29;
+ double Fpr30;
+ double Fpr31;
+ unsigned long Gpr1;
+ unsigned long Gpr2;
+ unsigned long Gpr13;
+ unsigned long Gpr14;
+ unsigned long Gpr15;
+ unsigned long Gpr16;
+ unsigned long Gpr17;
+ unsigned long Gpr18;
+ unsigned long Gpr19;
+ unsigned long Gpr20;
+ unsigned long Gpr21;
+ unsigned long Gpr22;
+ unsigned long Gpr23;
+ unsigned long Gpr24;
+ unsigned long Gpr25;
+ unsigned long Gpr26;
+ unsigned long Gpr27;
+ unsigned long Gpr28;
+ unsigned long Gpr29;
+ unsigned long Gpr30;
+ unsigned long Gpr31;
+ unsigned long Cr;
+ unsigned long Iar;
+ unsigned long Type;
+} _JUMP_BUFFER;
+
+#elif defined(_M_M68K)
+
+#ifndef _INC_SETJMPEX
+#define setjmp _setjmp
+#endif
+
+/* internal only for version checking for compatibility */
+#define _SETJMP_VER 1.0
+
+/* internal only, jump buffer layout definition */
+typedef struct __JUMP_BUFFER {
+ unsigned long d1; /* 0x00, saved */
+ unsigned long d2; /* 0x04, saved */
+ unsigned long d3; /* 0x08, saved */
+ unsigned long d4; /* 0x0c, saved */
+ unsigned long d5; /* 0x10, saved */
+ unsigned long d6; /* 0x14, saved */
+ unsigned long d7; /* 0x18, saved */
+ unsigned long a1; /* 0x1c, non-swappable version: return address,
+ swappable version: swapper lib routine pointer for building return address */
+ unsigned long a2; /* 0x20, saved */
+ unsigned long a3; /* 0x24, saved */
+ unsigned long a4; /* 0x28, saved */
+ unsigned long a6; /* 0x2c, saved */
+ unsigned long a7; /* 0x30, saved */
+ unsigned long SwapChain; /* 0x34, without swapper: unused. with swapper: link swappable frames */
+ unsigned short reserved; /* 0x38, unused */
+ unsigned short SN; /* 0x3a, swappable version: segment number */
+ unsigned long BPC; /* 0x3c, swappable version: offset within segment */
+} _JUMP_BUFFER;
+
+#define _JBTYPE int
+#define _JBLEN (sizeof(_JUMP_BUFFER)/sizeof(_JBTYPE))
+
+#elif defined(_M_MPPC)
+
+#ifndef _INC_SETJMPEX
+#define setjmp _setjmp
+#endif
+
+#define _JBTYPE int
+
+/* define the buffer type for building the state information */
+
+#define _JBLEN 64 /* return address, R1, R2, R13-R31, FPR14-FPR31, CR 2-5 */
+#endif
+
+
+/* Define the buffer type for holding the state information */
+
+#ifndef _JMP_BUF_DEFINED
+typedef _JBTYPE jmp_buf[_JBLEN];
+#define _JMP_BUF_DEFINED
+#endif
+
+
+/* Function prototypes */
+
+int __cdecl setjmp(jmp_buf);
+_CRTIMP void __cdecl longjmp(jmp_buf, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_SETJMP */
diff --git a/public/sdk/inc/crt/setjmpex.h b/public/sdk/inc/crt/setjmpex.h
new file mode 100644
index 000000000..7302c731d
--- /dev/null
+++ b/public/sdk/inc/crt/setjmpex.h
@@ -0,0 +1,47 @@
+/***
+*setjmpex.h - definitions/declarations for extended setjmp/longjmp routines
+*
+* Copyright (c) 1993-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file causes _setjmpex to be called which will enable safe
+* setjmp/longjmp that work correctly with try/except/finally.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_SETJMPEX
+#define _INC_SETJMPEX
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+/*
+ * Definitions specific to particular setjmp implementations.
+ */
+
+#if defined(_M_IX86)
+
+/*
+ * MS compiler for x86
+ */
+
+#define setjmp _setjmp
+#define longjmp _longjmpex
+
+#else
+
+#define setjmp _setjmpex
+
+#endif
+
+#include <setjmp.h>
+
+#endif /* _INC_SETJMPEX */
diff --git a/public/sdk/inc/crt/share.h b/public/sdk/inc/crt/share.h
new file mode 100644
index 000000000..87e2fe16d
--- /dev/null
+++ b/public/sdk/inc/crt/share.h
@@ -0,0 +1,38 @@
+/***
+*share.h - defines file sharing modes for sopen
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the file sharing modes for sopen().
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_SHARE
+#define _INC_SHARE
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#define _SH_DENYRW 0x10 /* deny read/write mode */
+#define _SH_DENYWR 0x20 /* deny write mode */
+#define _SH_DENYRD 0x30 /* deny read mode */
+#define _SH_DENYNO 0x40 /* deny none mode */
+
+#if !__STDC__
+/* Non-ANSI names for compatibility */
+#define SH_DENYRW _SH_DENYRW
+#define SH_DENYWR _SH_DENYWR
+#define SH_DENYRD _SH_DENYRD
+#define SH_DENYNO _SH_DENYNO
+#endif
+
+#endif /* _INC_SHARE */
diff --git a/public/sdk/inc/crt/signal.h b/public/sdk/inc/crt/signal.h
new file mode 100644
index 000000000..228ffc9a9
--- /dev/null
+++ b/public/sdk/inc/crt/signal.h
@@ -0,0 +1,130 @@
+/***
+*signal.h - defines signal values and routines
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the signal values and declares the signal functions.
+* [ANSI/System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_SIGNAL
+#define _INC_SIGNAL
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _SIG_ATOMIC_T_DEFINED
+typedef int sig_atomic_t;
+#define _SIG_ATOMIC_T_DEFINED
+#endif
+
+
+#define NSIG 23 /* maximum signal number + 1 */
+
+
+/* Signal types */
+
+#define SIGINT 2 /* interrupt */
+#define SIGILL 4 /* illegal instruction - invalid function image */
+#define SIGFPE 8 /* floating point exception */
+#define SIGSEGV 11 /* segment violation */
+#define SIGTERM 15 /* Software termination signal from kill */
+#define SIGBREAK 21 /* Ctrl-Break sequence */
+#define SIGABRT 22 /* abnormal termination triggered by abort call */
+
+
+/* signal action codes */
+
+#define SIG_DFL (void (__cdecl *)(int))0 /* default signal action */
+#define SIG_IGN (void (__cdecl *)(int))1 /* ignore signal */
+#define SIG_SGE (void (__cdecl *)(int))3 /* signal gets error */
+#define SIG_ACK (void (__cdecl *)(int))4 /* acknowledge */
+
+
+/* signal error value (returned by signal call on error) */
+
+#define SIG_ERR (void (__cdecl *)(int))-1 /* signal error value */
+
+
+/* pointer to exception information pointers structure */
+
+#if defined(_MT) || defined(_DLL)
+extern void * * __cdecl __pxcptinfoptrs(void);
+#define _pxcptinfoptrs (*__pxcptinfoptrs())
+#else /* ndef _MT && ndef _DLL */
+extern void * _pxcptinfoptrs;
+#endif /* _MT || _DLL */
+
+
+/* Function prototypes */
+
+_CRTIMP void (__cdecl * __cdecl signal(int, void (__cdecl *)(int)))(int);
+_CRTIMP int __cdecl raise(int);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_SIGNAL */
diff --git a/public/sdk/inc/crt/stdarg.h b/public/sdk/inc/crt/stdarg.h
new file mode 100644
index 000000000..6ac66e4da
--- /dev/null
+++ b/public/sdk/inc/crt/stdarg.h
@@ -0,0 +1,163 @@
+/***
+*stdarg.h - defines ANSI-style macros for variable argument functions
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines ANSI-style macros for accessing arguments
+* of functions which take a variable number of arguments.
+* [ANSI]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_STDARG
+#define _INC_STDARG
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+#ifndef _VA_LIST_DEFINED
+#ifdef _M_ALPHA
+typedef struct {
+ char *a0; /* pointer to first homed integer argument */
+ int offset; /* byte offset of next parameter */
+} va_list;
+#else
+typedef char * va_list;
+#endif
+#define _VA_LIST_DEFINED
+#endif
+
+#ifdef _M_IX86
+
+
+#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
+
+#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
+#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
+#define va_end(ap) ( ap = (va_list)0 )
+
+#elif defined(_M_MRX000)
+
+
+/* Use these types and definitions if generating code for MIPS */
+
+#define va_start(ap,v) ap = (va_list)&v + sizeof(v)
+#define va_end(list)
+#define va_arg(list, mode) ((mode *)(list =\
+ (char *) ((((int)list + (__builtin_alignof(mode)<=4?3:7)) &\
+ (__builtin_alignof(mode)<=4?-4:-8))+sizeof(mode))))[-1]
+
+/* +++++++++++++++++++++++++++++++++++++++++++
+ Because of parameter passing conventions in C:
+ use mode=int for char, and short types
+ use mode=double for float types
+ use a pointer for array types
+ +++++++++++++++++++++++++++++++++++++++++++ */
+
+
+#elif defined(_M_ALPHA)
+
+
+/* Use these types and definitions if generating code for ALPHA */
+
+/*
+ * The Alpha compiler supports two builtin functions that are used to
+ * implement stdarg/varargs. The __builtin_va_start function is used
+ * by va_start to initialize the data structure that locates the next
+ * argument. The __builtin_isfloat function is used by va_arg to pick
+ * which part of the home area a given register argument is stored in.
+ * The home area is where up to six integer and/or six floating point
+ * register arguments are stored down (so they can also be referenced
+ * by a pointer like any arguments passed on the stack).
+ */
+
+extern void * __builtin_va_start(va_list, ...);
+
+#ifdef _CFRONT
+#define __builtin_isfloat(a) __builtin_alignof(a)
+#endif
+
+#define va_start(list, v) __builtin_va_start(list, v, 1)
+#define va_end(list)
+#define va_arg(list, mode) \
+ ( *( ((list).offset += ((int)sizeof(mode) + 7) & -8) , \
+ (mode *)((list).a0 + (list).offset - \
+ ((__builtin_isfloat(mode) && (list).offset <= (6 * 8)) ? \
+ (6 * 8) + 8 : ((int)sizeof(mode) + 7) & -8) \
+ ) \
+ ) \
+ )
+
+#elif defined(_M_PPC)
+
+/* Microsoft C8 front end (used in Motorola Merged compiler) */
+/* bytes that a type occupies in the argument list */
+#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
+/* return 'ap' adjusted for type 't' in arglist */
+#define _ALIGNIT(ap,t) \
+ ((((int)(ap))+(sizeof(t)<8?3:7)) & (sizeof(t)<8?~3:~7))
+
+#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
+#define va_arg(ap,t) ( *(t *)((ap = (char *) (_ALIGNIT(ap, t) + _INTSIZEOF(t))) - _INTSIZEOF(t)) )
+#define va_end(ap) ( ap = (va_list)0 )
+
+#elif defined(_M_M68K)
+#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
+
+#define va_start(ap,v) ( ap = (va_list)&v + (sizeof(v) < sizeof(int) ? sizeof(v) : _INTSIZEOF(v)) )
+#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
+#define va_end(ap) ( ap = (va_list)0 )
+
+#elif defined(_M_MPPC)
+#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
+
+#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
+#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
+#define va_end(ap) ( ap = (va_list)0 )
+
+#else
+
+/* A guess at the proper definitions for other platforms */
+
+#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
+
+#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
+#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
+#define va_end(ap) ( ap = (va_list)0 )
+
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_STDARG */
diff --git a/public/sdk/inc/crt/stddef.h b/public/sdk/inc/crt/stddef.h
new file mode 100644
index 000000000..2bdc4e956
--- /dev/null
+++ b/public/sdk/inc/crt/stddef.h
@@ -0,0 +1,133 @@
+/***
+*stddef.h - definitions/declarations for common constants, types, variables
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains definitions and declarations for some commonly
+* used constants, types, and variables.
+* [ANSI]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_STDDEF
+#define _INC_STDDEF
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+/* Define NULL pointer value and the offset() macro */
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+
+#define offsetof(s,m) (size_t)&(((s *)0)->m)
+
+
+/* Declare reference to errno */
+
+#if (defined(_MT) || defined(_DLL)) && (!defined(_M_MPPC) && !defined(_M_M68K))
+_CRTIMP extern int * __cdecl _errno(void);
+#define errno (*_errno())
+#else /* ndef _MT && ndef _DLL */
+_CRTIMP extern int errno;
+#endif /* _MT || _DLL */
+
+
+/* define the implementation dependent size types */
+
+#ifndef _PTRDIFF_T_DEFINED
+typedef int ptrdiff_t;
+#define _PTRDIFF_T_DEFINED
+#endif
+
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+
+#ifdef _MT
+_CRTIMP extern unsigned long __cdecl __threadid(void);
+#define _threadid (__threadid())
+_CRTIMP extern unsigned long __cdecl __threadhandle(void);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_STDDEF */
diff --git a/public/sdk/inc/crt/stdexcpt.h b/public/sdk/inc/crt/stdexcpt.h
new file mode 100644
index 000000000..4817c0adb
--- /dev/null
+++ b/public/sdk/inc/crt/stdexcpt.h
@@ -0,0 +1,90 @@
+/***
+*stdexcpt.h - User include file for standard exception classes
+*
+* Copyright (c) 1994-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file presents an interface to the standard exception classes,
+* as specified by the ANSI X3J16/ISO SC22/WG21 Working Paper for
+* Draft C++, May 1994.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_STDEXCPT
+#define _INC_STDEXCPT
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+
+//
+// Standard exception class heirarchy (ref. 1/94 WP 17.3.2.1, as ammended 3/94).
+//
+// exception (formerly xmsg)
+// logic
+// domain
+// runtime
+// range
+// alloc
+// xalloc
+//
+// Updated as per May'94 Working Paper
+
+typedef const char *__exString;
+
+class _CRTIMP exception
+{
+public:
+ exception();
+ exception(const __exString&);
+ exception(const exception&);
+ exception& operator= (const exception&);
+ virtual ~exception();
+ virtual __exString what() const;
+private:
+ __exString _m_what;
+ int _m_doFree;
+};
+
+#ifdef __RTTI_OLDNAMES
+typedef exception xmsg; // A synonym for folks using older standard
+#endif
+
+//
+// logic_error
+//
+class _CRTIMP logic_error: public exception
+{
+public:
+ logic_error (const __exString& _what_arg) : exception(_what_arg) {}
+};
+
+#endif /* _INC_STDEXCPT */
+
diff --git a/public/sdk/inc/crt/stdio.h b/public/sdk/inc/crt/stdio.h
new file mode 100644
index 000000000..36c2db9ac
--- /dev/null
+++ b/public/sdk/inc/crt/stdio.h
@@ -0,0 +1,528 @@
+/***
+*stdio.h - definitions/declarations for standard I/O routines
+*
+* Copyright (c) 1985-1996, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the structures, values, macros, and functions
+* used by the level 2 I/O ("standard I/O") routines.
+* [ANSI/System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_STDIO
+#define _INC_STDIO
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+
+#ifndef _MAC
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+
+#ifndef _WCTYPE_T_DEFINED
+typedef wchar_t wint_t;
+typedef wchar_t wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+
+#ifndef _VA_LIST_DEFINED
+#ifdef _M_ALPHA
+typedef struct {
+ char *a0; /* pointer to first homed integer argument */
+ int offset; /* byte offset of next parameter */
+} va_list;
+#else
+typedef char * va_list;
+#endif
+#define _VA_LIST_DEFINED
+#endif
+
+
+/* Buffered I/O macros */
+
+#if defined(_M_MPPC)
+#define BUFSIZ 4096
+#else /* defined (_M_MPPC) */
+#define BUFSIZ 512
+#endif /* defined (_M_MPPC) */
+
+
+/*
+ * Default number of supported streams. _NFILE is confusing and obsolete, but
+ * supported anyway for backwards compatibility.
+ */
+#define _NFILE _NSTREAM_
+
+#ifdef _WIN32
+
+#define _NSTREAM_ 512
+
+/*
+ * Number of entries in _iob[] (declared below). Note that _NSTREAM_ must be
+ * greater than or equal to _IOB_ENTRIES.
+ */
+#define _IOB_ENTRIES 20
+
+#else /* ndef _WIN32 */
+
+#ifdef _DLL
+#define _NSTREAM_ 128
+#else
+#ifdef _MT
+#define _NSTREAM_ 40
+#else
+#define _NSTREAM_ 20
+#endif
+#endif /* _DLL */
+
+#endif /* ndef _MAC */
+
+#define EOF (-1)
+
+
+#ifndef _FILE_DEFINED
+struct _iobuf {
+ char *_ptr;
+ int _cnt;
+ char *_base;
+ int _flag;
+ int _file;
+ int _charbuf;
+ int _bufsiz;
+ char *_tmpfname;
+ };
+typedef struct _iobuf FILE;
+#define _FILE_DEFINED
+#endif
+
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+
+/* Directory where temporary files may be created. */
+
+#ifdef _POSIX_
+#define _P_tmpdir "/"
+#define _wP_tmpdir L"/"
+#else
+#define _P_tmpdir "\\"
+#define _wP_tmpdir L"\\"
+#endif
+
+
+/* L_tmpnam = size of P_tmpdir
+ * + 1 (in case P_tmpdir does not end in "/")
+ * + 12 (for the filename string)
+ * + 1 (for the null terminator)
+ */
+#define L_tmpnam sizeof(_P_tmpdir)+12
+#else /* defined(_M_M68K) || defined(_M_MPPC) */
+#define L_tmpnam 255
+#endif /* !defined(_M_M68K) && defined(_M_MPPC) */
+
+
+#ifdef _POSIX_
+#define L_ctermid 9
+#define L_cuserid 32
+#endif
+
+
+/* Seek method constants */
+
+#define SEEK_CUR 1
+#define SEEK_END 2
+#define SEEK_SET 0
+
+
+#define FILENAME_MAX 260
+#define FOPEN_MAX 20
+#define _SYS_OPEN 20
+#define TMP_MAX 32767
+
+
+/* Define NULL pointer value */
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+
+/* Declare _iob[] array */
+
+#ifndef _STDIO_DEFINED
+
+#ifdef _NTSDK
+
+#ifdef _DLL
+extern FILE * _iob;
+#else
+extern FILE _iob[];
+#endif
+
+#else /* ndef _NTSDK */
+
+#if defined(_DLL) && defined(_M_IX86)
+
+#define _iob (__p__iob())
+_CRTIMP extern FILE * __cdecl __p__iob(void);
+
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+
+_CRTIMP extern FILE _iob[];
+
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+#endif /* _NTSDK */
+
+#endif /* _STDIO_DEFINED */
+
+
+/* Define file position type */
+
+#ifndef _FPOS_T_DEFINED
+
+#if defined(_M_MPPC) || defined(_M_M68K) || defined(_POSIX_)
+
+typedef long fpos_t;
+
+#else /* !defined(_M_MPPC) && !defined(_M_M68K) */
+
+#if !__STDC__ && _INTEGRAL_MAX_BITS >= 64
+typedef __int64 fpos_t;
+#else
+typedef struct fpos_t {
+ unsigned int lopart;
+ int hipart;
+ } fpos_t;
+#endif
+
+#endif /* defined(_M_MPPC) || defined(_M_68K) */
+
+#define _FPOS_T_DEFINED
+#endif
+
+
+#define stdin (&_iob[0])
+#define stdout (&_iob[1])
+#define stderr (&_iob[2])
+
+
+#define _IOREAD 0x0001
+#define _IOWRT 0x0002
+
+#define _IOFBF 0x0000
+#define _IOLBF 0x0040
+#define _IONBF 0x0004
+
+#define _IOMYBUF 0x0008
+#define _IOEOF 0x0010
+#define _IOERR 0x0020
+#define _IOSTRG 0x0040
+#define _IORW 0x0080
+#ifdef _POSIX_
+#define _IOAPPEND 0x0200
+#endif
+
+
+/* Function prototypes */
+
+#ifndef _STDIO_DEFINED
+
+_CRTIMP int __cdecl _filbuf(FILE *);
+_CRTIMP int __cdecl _flsbuf(int, FILE *);
+
+#ifdef _POSIX_
+_CRTIMP FILE * __cdecl _fsopen(const char *, const char *);
+#else
+_CRTIMP FILE * __cdecl _fsopen(const char *, const char *, int);
+#endif
+
+_CRTIMP void __cdecl clearerr(FILE *);
+_CRTIMP int __cdecl fclose(FILE *);
+_CRTIMP int __cdecl _fcloseall(void);
+
+#ifdef _POSIX_
+_CRTIMP FILE * __cdecl fdopen(int, const char *);
+#else
+_CRTIMP FILE * __cdecl _fdopen(int, const char *);
+#endif
+
+_CRTIMP int __cdecl feof(FILE *);
+_CRTIMP int __cdecl ferror(FILE *);
+_CRTIMP int __cdecl fflush(FILE *);
+_CRTIMP int __cdecl fgetc(FILE *);
+_CRTIMP int __cdecl _fgetchar(void);
+_CRTIMP int __cdecl fgetpos(FILE *, fpos_t *);
+_CRTIMP char * __cdecl fgets(char *, int, FILE *);
+
+#ifdef _POSIX_
+_CRTIMP int __cdecl fileno(FILE *);
+#else
+_CRTIMP int __cdecl _fileno(FILE *);
+#endif
+
+_CRTIMP int __cdecl _flushall(void);
+_CRTIMP FILE * __cdecl fopen(const char *, const char *);
+_CRTIMP int __cdecl fprintf(FILE *, const char *, ...);
+_CRTIMP int __cdecl fputc(int, FILE *);
+_CRTIMP int __cdecl _fputchar(int);
+_CRTIMP int __cdecl fputs(const char *, FILE *);
+_CRTIMP size_t __cdecl fread(void *, size_t, size_t, FILE *);
+_CRTIMP FILE * __cdecl freopen(const char *, const char *, FILE *);
+_CRTIMP int __cdecl fscanf(FILE *, const char *, ...);
+_CRTIMP int __cdecl fsetpos(FILE *, const fpos_t *);
+_CRTIMP int __cdecl fseek(FILE *, long, int);
+_CRTIMP long __cdecl ftell(FILE *);
+_CRTIMP size_t __cdecl fwrite(const void *, size_t, size_t, FILE *);
+_CRTIMP int __cdecl getc(FILE *);
+_CRTIMP int __cdecl getchar(void);
+_CRTIMP int __cdecl _getmaxstdio(void);
+_CRTIMP char * __cdecl gets(char *);
+_CRTIMP int __cdecl _getw(FILE *);
+_CRTIMP void __cdecl perror(const char *);
+_CRTIMP int __cdecl _pclose(FILE *);
+_CRTIMP FILE * __cdecl _popen(const char *, const char *);
+_CRTIMP int __cdecl printf(const char *, ...);
+_CRTIMP int __cdecl putc(int, FILE *);
+_CRTIMP int __cdecl putchar(int);
+_CRTIMP int __cdecl puts(const char *);
+_CRTIMP int __cdecl _putw(int, FILE *);
+_CRTIMP int __cdecl remove(const char *);
+_CRTIMP int __cdecl rename(const char *, const char *);
+_CRTIMP void __cdecl rewind(FILE *);
+_CRTIMP int __cdecl _rmtmp(void);
+_CRTIMP int __cdecl scanf(const char *, ...);
+_CRTIMP void __cdecl setbuf(FILE *, char *);
+_CRTIMP int __cdecl _setmaxstdio(int);
+_CRTIMP int __cdecl setvbuf(FILE *, char *, int, size_t);
+_CRTIMP int __cdecl _snprintf(char *, size_t, const char *, ...);
+_CRTIMP int __cdecl sprintf(char *, const char *, ...);
+_CRTIMP int __cdecl sscanf(const char *, const char *, ...);
+_CRTIMP char * __cdecl _tempnam(const char *, const char *);
+_CRTIMP FILE * __cdecl tmpfile(void);
+_CRTIMP char * __cdecl tmpnam(char *);
+_CRTIMP int __cdecl ungetc(int, FILE *);
+_CRTIMP int __cdecl _unlink(const char *);
+_CRTIMP int __cdecl vfprintf(FILE *, const char *, va_list);
+_CRTIMP int __cdecl vprintf(const char *, va_list);
+_CRTIMP int __cdecl _vsnprintf(char *, size_t, const char *, va_list);
+_CRTIMP int __cdecl vsprintf(char *, const char *, va_list);
+
+#ifndef _MAC
+#ifndef _WSTDIO_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+#ifndef WEOF
+#define WEOF (wint_t)(0xFFFF)
+#endif
+
+#ifdef _POSIX_
+_CRTIMP FILE * __cdecl _wfsopen(const wchar_t *, const wchar_t *);
+#else
+_CRTIMP FILE * __cdecl _wfsopen(const wchar_t *, const wchar_t *, int);
+#endif
+
+_CRTIMP wint_t __cdecl fgetwc(FILE *);
+_CRTIMP wint_t __cdecl _fgetwchar(void);
+_CRTIMP wint_t __cdecl fputwc(wint_t, FILE *);
+_CRTIMP wint_t __cdecl _fputwchar(wint_t);
+_CRTIMP wint_t __cdecl getwc(FILE *);
+_CRTIMP wint_t __cdecl getwchar(void);
+_CRTIMP wint_t __cdecl putwc(wint_t, FILE *);
+_CRTIMP wint_t __cdecl putwchar(wint_t);
+_CRTIMP wint_t __cdecl ungetwc(wint_t, FILE *);
+
+_CRTIMP wchar_t * __cdecl fgetws(wchar_t *, int, FILE *);
+_CRTIMP int __cdecl fputws(const wchar_t *, FILE *);
+_CRTIMP wchar_t * __cdecl _getws(wchar_t *);
+_CRTIMP int __cdecl _putws(const wchar_t *);
+
+_CRTIMP int __cdecl fwprintf(FILE *, const wchar_t *, ...);
+_CRTIMP int __cdecl wprintf(const wchar_t *, ...);
+_CRTIMP int __cdecl _snwprintf(wchar_t *, size_t, const wchar_t *, ...);
+_CRTIMP int __cdecl swprintf(wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl vfwprintf(FILE *, const wchar_t *, va_list);
+_CRTIMP int __cdecl vwprintf(const wchar_t *, va_list);
+_CRTIMP int __cdecl _vsnwprintf(wchar_t *, size_t, const wchar_t *, va_list);
+_CRTIMP int __cdecl vswprintf(wchar_t *, const wchar_t *, va_list);
+_CRTIMP int __cdecl fwscanf(FILE *, const wchar_t *, ...);
+_CRTIMP int __cdecl swscanf(const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl wscanf(const wchar_t *, ...);
+
+#define getwchar() fgetwc(stdin)
+#define putwchar(_c) fputwc((_c),stdout)
+#define getwc(_stm) fgetwc(_stm)
+#define putwc(_c,_stm) fputwc(_c,_stm)
+
+_CRTIMP FILE * __cdecl _wfdopen(int, const wchar_t *);
+_CRTIMP FILE * __cdecl _wfopen(const wchar_t *, const wchar_t *);
+_CRTIMP FILE * __cdecl _wfreopen(const wchar_t *, const wchar_t *, FILE *);
+_CRTIMP void __cdecl _wperror(const wchar_t *);
+_CRTIMP FILE * __cdecl _wpopen(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl _wremove(const wchar_t *);
+_CRTIMP wchar_t * __cdecl _wtempnam(const wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl _wtmpnam(wchar_t *);
+
+
+#define _WSTDIO_DEFINED
+#endif /* _WSTDIO_DEFINED */
+#endif /* ndef _MAC */
+
+#define _STDIO_DEFINED
+#endif /* _STDIO_DEFINED */
+
+
+/* Macro definitions */
+
+#define feof(_stream) ((_stream)->_flag & _IOEOF)
+#define ferror(_stream) ((_stream)->_flag & _IOERR)
+#define _fileno(_stream) ((_stream)->_file)
+#define getc(_stream) (--(_stream)->_cnt >= 0 \
+ ? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))
+#define putc(_c,_stream) (--(_stream)->_cnt >= 0 \
+ ? 0xff & (*(_stream)->_ptr++ = (char)(_c)) : _flsbuf((_c),(_stream)))
+#define getchar() getc(stdin)
+#define putchar(_c) putc((_c),stdout)
+
+
+
+#ifdef _MT
+#undef getc
+#undef putc
+#undef getchar
+#undef putchar
+#endif
+
+
+
+#if !__STDC__ && !defined(_POSIX_)
+
+/* Non-ANSI names for compatibility */
+
+#define P_tmpdir _P_tmpdir
+#define SYS_OPEN _SYS_OPEN
+
+#ifdef _NTSDK
+
+#define fcloseall _fcloseall
+#define fdopen _fdopen
+#define fgetchar _fgetchar
+#define fileno _fileno
+#define flushall _flushall
+#define fputchar _fputchar
+#define getw _getw
+#define putw _putw
+#define rmtmp _rmtmp
+#define tempnam _tempnam
+#define unlink _unlink
+
+#else /* ndef _NTSDK */
+
+_CRTIMP int __cdecl fcloseall(void);
+_CRTIMP FILE * __cdecl fdopen(int, const char *);
+_CRTIMP int __cdecl fgetchar(void);
+_CRTIMP int __cdecl fileno(FILE *);
+_CRTIMP int __cdecl flushall(void);
+_CRTIMP int __cdecl fputchar(int);
+_CRTIMP int __cdecl getw(FILE *);
+_CRTIMP int __cdecl putw(int, FILE *);
+_CRTIMP int __cdecl rmtmp(void);
+_CRTIMP char * __cdecl tempnam(const char *, const char *);
+_CRTIMP int __cdecl unlink(const char *);
+
+#endif /* _NTSDK */
+
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_STDIO */
diff --git a/public/sdk/inc/crt/stdiostr.h b/public/sdk/inc/crt/stdiostr.h
new file mode 100644
index 000000000..05d5bced6
--- /dev/null
+++ b/public/sdk/inc/crt/stdiostr.h
@@ -0,0 +1,94 @@
+/***
+*stdiostr.h - definitions/declarations for stdiobuf, stdiostream
+*
+* Copyright (c) 1991-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the classes, values, macros, and functions
+* used by the stdiostream and stdiobuf classes.
+* [AT&T C++]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifdef __cplusplus
+
+#ifndef _INC_STDIOSTREAM
+#define _INC_STDIOSTREAM
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+// Currently, all MS C compilers for Win32 platforms default to 8 byte
+// alignment.
+#pragma pack(push,8)
+#endif // _MSC_VER
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+#include <iostream.h>
+#include <stdio.h>
+
+#ifdef _MSC_VER
+#pragma warning(disable:4514) // disable unwanted /W4 warning
+// #pragma warning(default:4514) // use this to reenable, if necessary
+#endif // _MSC_VER
+
+class _CRTIMP stdiobuf : public streambuf {
+public:
+ stdiobuf(FILE* f);
+FILE * stdiofile() { return _str; }
+
+virtual int pbackfail(int c);
+virtual int overflow(int c = EOF);
+virtual int underflow();
+virtual streampos seekoff( streamoff, ios::seek_dir, int =ios::in|ios::out);
+virtual int sync();
+ ~stdiobuf();
+ int setrwbuf(int _rsize, int _wsize);
+// protected:
+// virtual int doallocate();
+private:
+ FILE * _str;
+};
+
+// obsolescent
+class _CRTIMP stdiostream : public iostream { // note: spec.'d as : public IOS...
+public:
+ stdiostream(FILE *);
+ ~stdiostream();
+ stdiobuf* rdbuf() const { return (stdiobuf*) ostream::rdbuf(); }
+
+private:
+};
+
+#ifdef _MSC_VER
+// Restore default packing
+#pragma pack(pop)
+#endif // _MSC_VER
+
+#endif // _INC_STDIOSTREAM
+
+#endif /* __cplusplus */
diff --git a/public/sdk/inc/crt/stdlib.h b/public/sdk/inc/crt/stdlib.h
new file mode 100644
index 000000000..64da4306e
--- /dev/null
+++ b/public/sdk/inc/crt/stdlib.h
@@ -0,0 +1,600 @@
+/***
+*stdlib.h - declarations/definitions for commonly used library functions
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This include file contains the function declarations for commonly
+* used library functions which either don't fit somewhere else, or,
+* cannot be declared in the normal place for other reasons.
+* [ANSI]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_STDLIB
+#define _INC_STDLIB
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+
+/* Define NULL pointer value */
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+
+/* Definition of the argument values for the exit() function */
+
+#define EXIT_SUCCESS 0
+#define EXIT_FAILURE 1
+
+
+#ifndef _ONEXIT_T_DEFINED
+typedef int (__cdecl * _onexit_t)(void);
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#define onexit_t _onexit_t
+#endif
+#define _ONEXIT_T_DEFINED
+#endif
+
+
+/* Data structure definitions for div and ldiv runtimes. */
+
+#ifndef _DIV_T_DEFINED
+
+typedef struct _div_t {
+ int quot;
+ int rem;
+} div_t;
+
+typedef struct _ldiv_t {
+ long quot;
+ long rem;
+} ldiv_t;
+
+#define _DIV_T_DEFINED
+#endif
+
+/* Maximum value that can be returned by the rand function. */
+
+#define RAND_MAX 0x7fff
+
+/*
+ * Maximum number of bytes in multi-byte character in the current locale
+ * (also defined in ctype.h).
+ */
+#ifndef MB_CUR_MAX
+
+#ifdef _NTSDK
+
+/* definition compatible with NT SDK */
+#ifdef _DLL
+#define __mb_cur_max (*__mb_cur_max_dll)
+#define MB_CUR_MAX (*__mb_cur_max_dll)
+extern int *__mb_cur_max_dll;
+#else /* ndef _DLL */
+#define MB_CUR_MAX __mb_cur_max
+extern int __mb_cur_max;
+#endif /* _DLL */
+
+#else /* ndef _NTSDK */
+
+/* current definition */
+#if defined(_DLL) && defined(_M_IX86)
+#define MB_CUR_MAX (*__p___mb_cur_max())
+_CRTIMP int * __cdecl __p___mb_cur_max(void);
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+#define MB_CUR_MAX __mb_cur_max
+_CRTIMP extern int __mb_cur_max;
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+#endif /* _NTSDK */
+
+#endif /* MB_CUR_MAX */
+
+
+/* Minimum and maximum macros */
+
+#define __max(a,b) (((a) > (b)) ? (a) : (b))
+#define __min(a,b) (((a) < (b)) ? (a) : (b))
+
+/*
+ * Sizes for buffers used by the _makepath() and _splitpath() functions.
+ * note that the sizes include space for 0-terminator
+ */
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+#define _MAX_PATH 260 /* max. length of full pathname */
+#define _MAX_DRIVE 3 /* max. length of drive component */
+#define _MAX_DIR 256 /* max. length of path component */
+#define _MAX_FNAME 256 /* max. length of file name component */
+#define _MAX_EXT 256 /* max. length of extension component */
+#else /* defined(_M_M68K) || defined(_M_MPPC) */
+#define _MAX_PATH 256 /* max. length of full pathname */
+#define _MAX_DIR 32 /* max. length of path component */
+#define _MAX_FNAME 64 /* max. length of file name component */
+#endif /* defined(_M_M68K) || defined(_M_MPPC) */
+
+/*
+ * Argument values for _set_error_mode().
+ */
+#define _OUT_TO_DEFAULT 0
+#define _OUT_TO_STDERR 1
+#define _OUT_TO_MSGBOX 2
+#define _REPORT_ERRMODE 3
+
+/* External variable declarations */
+
+#if (defined(_MT) || defined(_DLL)) && (!defined(_M_MPPC) && !defined(_M_M68K))
+_CRTIMP int * __cdecl _errno(void);
+_CRTIMP unsigned long * __cdecl __doserrno(void);
+#define errno (*_errno())
+#define _doserrno (*__doserrno())
+#else /* ndef _MT && ndef _DLL */
+_CRTIMP extern int errno; /* XENIX style error number */
+_CRTIMP extern unsigned long _doserrno; /* OS system error value */
+#endif /* _MT || _DLL */
+
+#if defined(_M_MPPC) || defined(_M_M68K)
+_CRTIMP extern int _macerrno; /* OS system error value */
+#endif
+
+#ifdef _NTSDK
+
+/* Definitions and declarations compatible with the NT SDK */
+
+#ifdef _DLL
+
+extern char ** _sys_errlist; /* perror error message table */
+
+#define _sys_nerr (*_sys_nerr_dll)
+#define __argc (*__argc_dll)
+#define __argv (*__argv_dll)
+#ifndef _MAC
+#define __wargv (*__wargv_dll)
+#endif /* ndef _MAC */
+#define _environ (*_environ_dll)
+#ifndef _MAC
+#define _wenviron (*_wenviron_dll)
+#endif /* ndef _MAC */
+#define _fmode (*_fmode_dll)
+#define _fileinfo (*_fileinfo_dll)
+
+extern int * _sys_nerr_dll; /* # of entries in sys_errlist table */
+extern int * __argc_dll; /* count of cmd line args */
+extern char *** __argv_dll; /* pointer to table of cmd line args */
+#ifndef _MAC
+extern wchar_t *** __wargv_dll; /* pointer to table of wide cmd line args */
+#endif /* ndef _MAC */
+extern char *** _environ_dll; /* pointer to environment table */
+#ifndef _MAC
+extern wchar_t *** _wenviron_dll; /* pointer to wide environment table */
+#endif /* ndef _MAC */
+extern int * _fmode_dll; /* default file translation mode */
+extern int * _fileinfo_dll; /* open file info mode (for spawn) */
+
+#define _pgmptr (*_pgmptr_dll)
+#ifndef _MAC
+#define _wpgmptr (*_wpgmptr_dll)
+#endif /* ndef _MAC */
+
+#define _osver (*_osver_dll)
+#define _winver (*_winver_dll)
+#define _winmajor (*_winmajor_dll)
+#define _winminor (*_winminor_dll)
+
+extern char ** _pgmptr_dll;
+#ifndef _MAC
+extern wchar_t ** _wpgmptr_dll;
+#endif /* ndef _MAC */
+
+extern unsigned int * _osver_dll;
+extern unsigned int * _winver_dll;
+extern unsigned int * _winmajor_dll;
+extern unsigned int * _winminor_dll;
+
+#else /* ndef _DLL */
+
+
+extern char * _sys_errlist[]; /* perror error message table */
+extern int _sys_nerr; /* # of entries in sys_errlist table */
+
+extern int __argc; /* count of cmd line args */
+extern char ** __argv; /* pointer to table of cmd line args */
+#ifndef _MAC
+extern wchar_t ** __wargv; /* pointer to table of wide cmd line args */
+#endif /* ndef _MAC */
+
+#ifdef _POSIX_
+extern char ** environ; /* pointer to environment table */
+#else
+extern char ** _environ; /* pointer to environment table */
+#ifndef _MAC
+extern wchar_t ** _wenviron; /* pointer to wide environment table */
+#endif /* ndef _MAC */
+#endif
+
+extern int _fmode; /* default file translation mode */
+extern int _fileinfo; /* open file info mode (for spawn) */
+
+extern char * _pgmptr; /* points to the module (EXE) name */
+#ifndef _MAC
+extern wchar_t * _wpgmptr; /* points to the module (EXE) wide name */
+#endif /* ndef _MAC */
+
+/* Windows major/minor and O.S. version numbers */
+
+extern unsigned int _osver;
+extern unsigned int _winver;
+extern unsigned int _winmajor;
+extern unsigned int _winminor;
+
+#endif /* _DLL */
+
+#else /* ndef _NTSDK */
+
+/* Current definitions and declarations */
+
+_CRTIMP extern char * _sys_errlist[]; /* perror error message table */
+_CRTIMP extern int _sys_nerr; /* # of entries in sys_errlist table */
+
+#if defined(_DLL) && defined(_M_IX86)
+
+#define __argc (*__p___argc()) /* count of cmd line args */
+#define __argv (*__p___argv()) /* pointer to table of cmd line args */
+#define __wargv (*__p___wargv()) /* pointer to table of wide cmd line args */
+#define _environ (*__p__environ()) /* pointer to environment table */
+#ifndef _MAC
+#define _wenviron (*__p__wenviron()) /* pointer to wide environment table */
+#endif /* ndef _MAC */
+#define _fmode (*__p__fmode())
+#define _osver (*__p__osver())
+#define _pgmptr (*__p__pgmptr()) /* points to the module (EXE) name */
+#ifndef _MAC
+#define _wpgmptr (*__p__wpgmptr()) /* points to the module (EXE) wide name */
+#endif /* ndef _MAC */
+#define _winver (*__p__winver())
+#define _winmajor (*__p__winmajor())
+#define _winminor (*__p__winminor())
+
+_CRTIMP int * __cdecl __p___argc(void);
+_CRTIMP char *** __cdecl __p___argv(void);
+#ifndef _MAC
+_CRTIMP wchar_t *** __cdecl __p___wargv(void);
+#endif /* ndef _MAC */
+_CRTIMP char *** __cdecl __p__environ(void);
+#ifndef _MAC
+_CRTIMP wchar_t *** __cdecl __p__wenviron(void);
+#endif /* ndef _MAC */
+_CRTIMP int * __cdecl __p__fmode(void);
+_CRTIMP unsigned int * __cdecl __p__osver(void);
+_CRTIMP char ** __cdecl __p__pgmptr(void);
+#ifndef _MAC
+_CRTIMP wchar_t ** __cdecl __p__wpgmptr(void);
+#endif /* ndef _MAC */
+_CRTIMP unsigned int * __cdecl __p__winver(void);
+_CRTIMP unsigned int * __cdecl __p__winmajor(void);
+_CRTIMP unsigned int * __cdecl __p__winminor(void);
+
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+_CRTIMP extern int __argc; /* count of cmd line args */
+_CRTIMP extern char ** __argv; /* pointer to table of cmd line args */
+#ifndef _MAC
+_CRTIMP extern wchar_t ** __wargv; /* pointer to table of wide cmd line args */
+#endif /* ndef _MAC */
+
+_CRTIMP extern char ** _environ; /* pointer to environment table */
+#ifndef _MAC
+_CRTIMP extern wchar_t ** _wenviron; /* pointer to wide environment table */
+#endif /* ndef _MAC */
+
+_CRTIMP extern int _fmode; /* default file translation mode */
+_CRTIMP extern int _fileinfo; /* open file info mode (for spawn) */
+
+_CRTIMP extern char * _pgmptr; /* points to the module (EXE) name */
+#ifndef _MAC
+_CRTIMP extern wchar_t * _wpgmptr; /* points to the module (EXE) wide name */
+#endif /* ndef _MAC */
+
+/* Windows major/minor and O.S. version numbers */
+
+_CRTIMP extern unsigned int _osver;
+_CRTIMP extern unsigned int _winver;
+_CRTIMP extern unsigned int _winmajor;
+_CRTIMP extern unsigned int _winminor;
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+#endif /* _NTSDK */
+
+/* function prototypes */
+
+_CRTIMP void __cdecl abort(void);
+#if defined(_M_MRX000)
+_CRTIMP int __cdecl abs(int);
+
+#else
+ int __cdecl abs(int);
+#endif
+ int __cdecl atexit(void (__cdecl *)(void));
+_CRTIMP double __cdecl atof(const char *);
+_CRTIMP int __cdecl atoi(const char *);
+_CRTIMP long __cdecl atol(const char *);
+#ifdef _M_M68K
+_CRTIMP long double __cdecl _atold(const char *);
+#endif
+_CRTIMP void * __cdecl bsearch(const void *, const void *, size_t, size_t,
+ int (__cdecl *)(const void *, const void *));
+_CRTIMP void * __cdecl calloc(size_t, size_t);
+_CRTIMP div_t __cdecl div(int, int);
+_CRTIMP void __cdecl exit(int);
+_CRTIMP void __cdecl free(void *);
+_CRTIMP char * __cdecl getenv(const char *);
+_CRTIMP char * __cdecl _itoa(int, char *, int);
+#if defined(_M_MRX000)
+_CRTIMP long __cdecl labs(long);
+#else
+ long __cdecl labs(long);
+#endif
+_CRTIMP ldiv_t __cdecl ldiv(long, long);
+_CRTIMP char * __cdecl _ltoa(long, char *, int);
+_CRTIMP void * __cdecl malloc(size_t);
+_CRTIMP int __cdecl mblen(const char *, size_t);
+_CRTIMP size_t __cdecl _mbstrlen(const char *s);
+_CRTIMP int __cdecl mbtowc(wchar_t *, const char *, size_t);
+_CRTIMP size_t __cdecl mbstowcs(wchar_t *, const char *, size_t);
+_CRTIMP void __cdecl qsort(void *, size_t, size_t, int (__cdecl *)
+ (const void *, const void *));
+_CRTIMP int __cdecl rand(void);
+_CRTIMP void * __cdecl realloc(void *, size_t);
+_CRTIMP int __cdecl _set_error_mode(int);
+_CRTIMP void __cdecl srand(unsigned int);
+_CRTIMP double __cdecl strtod(const char *, char **);
+_CRTIMP long __cdecl strtol(const char *, char **, int);
+#ifdef _M_M68K
+_CRTIMP long double __cdecl _strtold(const char *, char **);
+#endif
+_CRTIMP unsigned long __cdecl strtoul(const char *, char **, int);
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+_CRTIMP int __cdecl system(const char *);
+#endif
+_CRTIMP char * __cdecl _ultoa(unsigned long, char *, int);
+_CRTIMP int __cdecl wctomb(char *, wchar_t);
+_CRTIMP size_t __cdecl wcstombs(char *, const wchar_t *, size_t);
+
+#ifndef _MAC
+#ifndef _WSTDLIB_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+_CRTIMP wchar_t * __cdecl _itow (int, wchar_t *, int);
+_CRTIMP wchar_t * __cdecl _ltow (long, wchar_t *, int);
+_CRTIMP wchar_t * __cdecl _ultow (unsigned long, wchar_t *, int);
+_CRTIMP double __cdecl wcstod(const wchar_t *, wchar_t **);
+_CRTIMP long __cdecl wcstol(const wchar_t *, wchar_t **, int);
+_CRTIMP unsigned long __cdecl wcstoul(const wchar_t *, wchar_t **, int);
+_CRTIMP wchar_t * __cdecl _wgetenv(const wchar_t *);
+_CRTIMP int __cdecl _wsystem(const wchar_t *);
+_CRTIMP int __cdecl _wtoi(const wchar_t *);
+_CRTIMP long __cdecl _wtol(const wchar_t *);
+
+#define _WSTDLIB_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+#ifndef _POSIX_
+
+_CRTIMP char * __cdecl _ecvt(double, int, int *, int *);
+_CRTIMP void __cdecl _exit(int);
+_CRTIMP char * __cdecl _fcvt(double, int, int *, int *);
+_CRTIMP char * __cdecl _fullpath(char *, const char *, size_t);
+_CRTIMP char * __cdecl _gcvt(double, int, char *);
+ unsigned long __cdecl _lrotl(unsigned long, int);
+ unsigned long __cdecl _lrotr(unsigned long, int);
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+_CRTIMP void __cdecl _makepath(char *, const char *, const char *, const char *,
+ const char *);
+#endif
+ _onexit_t __cdecl _onexit(_onexit_t);
+_CRTIMP void __cdecl perror(const char *);
+_CRTIMP int __cdecl _putenv(const char *);
+ unsigned int __cdecl _rotl(unsigned int, int);
+ unsigned int __cdecl _rotr(unsigned int, int);
+_CRTIMP void __cdecl _searchenv(const char *, const char *, char *);
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+_CRTIMP void __cdecl _splitpath(const char *, char *, char *, char *, char *);
+#endif
+_CRTIMP void __cdecl _swab(char *, char *, int);
+
+#ifndef _MAC
+#ifndef _WSTDLIBP_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+_CRTIMP wchar_t * __cdecl _wfullpath(wchar_t *, const wchar_t *, size_t);
+_CRTIMP void __cdecl _wmakepath(wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *,
+ const wchar_t *);
+_CRTIMP void __cdecl _wperror(const wchar_t *);
+_CRTIMP int __cdecl _wputenv(const wchar_t *);
+_CRTIMP void __cdecl _wsearchenv(const wchar_t *, const wchar_t *, wchar_t *);
+_CRTIMP void __cdecl _wsplitpath(const wchar_t *, wchar_t *, wchar_t *, wchar_t *, wchar_t *);
+
+#define _WSTDLIBP_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+/* --------- The following functions are OBSOLETE --------- */
+/* The Win32 API SetErrorMode, Beep and Sleep should be used instead. */
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+_CRTIMP void __cdecl _seterrormode(int);
+_CRTIMP void __cdecl _beep(unsigned, unsigned);
+_CRTIMP void __cdecl _sleep(unsigned long);
+#endif /* ndef defined(_M_M68K) || defined(_M_MPPC) */
+/* --------- The preceding functions are OBSOLETE --------- */
+
+#endif /* _POSIX_ */
+
+#if !__STDC__
+/* --------- The declarations below should not be in stdlib.h --------- */
+/* --------- and will be removed in a future release. Include --------- */
+/* --------- ctype.h to obtain these declarations. --------- */
+#ifndef tolower /* tolower has been undefined - use function */
+_CRTIMP int __cdecl tolower(int);
+#endif /* tolower */
+#ifndef toupper /* toupper has been undefined - use function */
+_CRTIMP int __cdecl toupper(int);
+#endif /* toupper */
+/* --------- The declarations above will be removed. --------- */
+#endif
+
+
+#if !__STDC__
+
+/* Non-ANSI names for compatibility */
+
+#ifdef _NTSDK
+
+#ifndef _POSIX_
+
+#ifndef __cplusplus
+#define max(a,b) (((a) > (b)) ? (a) : (b))
+#define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#define sys_errlist _sys_errlist
+#define sys_nerr _sys_nerr
+#define environ _environ
+
+#define DOS_MODE _DOS_MODE
+#define OS2_MODE _OS2_MODE
+
+#define ecvt _ecvt
+#define fcvt _fcvt
+#define gcvt _gcvt
+#define itoa _itoa
+#define ltoa _ltoa
+#define onexit _onexit
+#define putenv _putenv
+#define swab _swab
+#define ultoa _ultoa
+
+#endif /* _POSIX_ */
+
+#else /* ndef _NTSDK */
+
+#ifndef __cplusplus
+#define max(a,b) (((a) > (b)) ? (a) : (b))
+#define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#define sys_errlist _sys_errlist
+#define sys_nerr _sys_nerr
+#define environ _environ
+
+_CRTIMP char * __cdecl ecvt(double, int, int *, int *);
+_CRTIMP char * __cdecl fcvt(double, int, int *, int *);
+_CRTIMP char * __cdecl gcvt(double, int, char *);
+_CRTIMP char * __cdecl itoa(int, char *, int);
+_CRTIMP char * __cdecl ltoa(long, char *, int);
+ onexit_t __cdecl onexit(onexit_t);
+_CRTIMP int __cdecl putenv(const char *);
+_CRTIMP void __cdecl swab(char *, char *, int);
+_CRTIMP char * __cdecl ultoa(unsigned long, char *, int);
+
+#endif /* _NTSDK */
+
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_STDLIB */
diff --git a/public/sdk/inc/crt/streamb.h b/public/sdk/inc/crt/streamb.h
new file mode 100644
index 000000000..a25040ab9
--- /dev/null
+++ b/public/sdk/inc/crt/streamb.h
@@ -0,0 +1,194 @@
+/***
+*streamb.h - definitions/declarations for the streambuf class
+*
+* Copyright (c) 1990-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the classes, values, macros, and functions
+* used by the streambuf class.
+* [AT&T C++]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifdef __cplusplus
+
+#ifndef _INC_STREAMB
+#define _INC_STREAMB
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+// Currently, all MS C compilers for Win32 platforms default to 8 byte
+// alignment.
+#pragma pack(push,8)
+#endif // _MSC_VER
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+#include <ios.h> // need ios::seek_dir definition
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef EOF
+#define EOF (-1)
+#endif
+
+#ifdef _MSC_VER
+// C4514: "unreferenced inline function has been removed"
+#pragma warning(disable:4514) // disable C4514 warning
+// #pragma warning(default:4514) // use this to reenable, if desired
+#endif // _MSC_VER
+
+typedef long streampos, streamoff;
+
+class _CRTIMP ios;
+
+class _CRTIMP streambuf {
+public:
+
+ virtual ~streambuf();
+
+ inline int in_avail() const;
+ inline int out_waiting() const;
+ int sgetc();
+ int snextc();
+ int sbumpc();
+ void stossc();
+
+ inline int sputbackc(char);
+
+ inline int sputc(int);
+ inline int sputn(const char *,int);
+ inline int sgetn(char *,int);
+
+ virtual int sync();
+
+ virtual streambuf* setbuf(char *, int);
+ virtual streampos seekoff(streamoff,ios::seek_dir,int =ios::in|ios::out);
+ virtual streampos seekpos(streampos,int =ios::in|ios::out);
+
+ virtual int xsputn(const char *,int);
+ virtual int xsgetn(char *,int);
+
+ virtual int overflow(int =EOF) = 0; // pure virtual function
+ virtual int underflow() = 0; // pure virtual function
+
+ virtual int pbackfail(int);
+
+ void dbp();
+
+#ifdef _MT
+ void setlock() { LockFlg--; } // <0 indicates lock required;
+ void clrlock() { if (LockFlg <= 0) LockFlg++; }
+ void lock() { if (LockFlg<0) _mtlock(lockptr()); };
+ void unlock() { if (LockFlg<0) _mtunlock(lockptr()); }
+#else
+ void lock() { }
+ void unlock() { }
+#endif
+
+protected:
+ streambuf();
+ streambuf(char *,int);
+
+ inline char * base() const;
+ inline char * ebuf() const;
+ inline char * pbase() const;
+ inline char * pptr() const;
+ inline char * epptr() const;
+ inline char * eback() const;
+ inline char * gptr() const;
+ inline char * egptr() const;
+ inline int blen() const;
+ inline void setp(char *,char *);
+ inline void setg(char *,char *,char *);
+ inline void pbump(int);
+ inline void gbump(int);
+
+ void setb(char *,char *,int =0);
+ inline int unbuffered() const;
+ inline void unbuffered(int);
+ int allocate();
+ virtual int doallocate();
+#ifdef _MT
+ _PCRT_CRITICAL_SECTION lockptr() { return & x_lock; }
+#endif
+
+private:
+ int _fAlloc;
+ int _fUnbuf;
+ int x_lastc;
+ char * _base;
+ char * _ebuf;
+ char * _pbase;
+ char * _pptr;
+ char * _epptr;
+ char * _eback;
+ char * _gptr;
+ char * _egptr;
+#ifdef _MT
+ int LockFlg; // <0 indicates locking required
+ _CRT_CRITICAL_SECTION x_lock; // lock needed only for multi-thread operation
+#endif
+};
+
+inline int streambuf::in_avail() const { return (gptr()<_egptr) ? (_egptr-gptr()) : 0; }
+inline int streambuf::out_waiting() const { return (_pptr>=_pbase) ? (_pptr-_pbase) : 0; }
+
+inline int streambuf::sputbackc(char _c){ return (_eback<gptr()) ? *(--_gptr)=_c : pbackfail(_c); }
+
+inline int streambuf::sputc(int _i){ return (_pptr<_epptr) ? (unsigned char)(*(_pptr++)=(char)_i) : overflow(_i); }
+
+inline int streambuf::sputn(const char * _str,int _n) { return xsputn(_str, _n); }
+inline int streambuf::sgetn(char * _str,int _n) { return xsgetn(_str, _n); }
+
+inline char * streambuf::base() const { return _base; }
+inline char * streambuf::ebuf() const { return _ebuf; }
+inline int streambuf::blen() const {return ((_ebuf > _base) ? (_ebuf-_base) : 0); }
+inline char * streambuf::pbase() const { return _pbase; }
+inline char * streambuf::pptr() const { return _pptr; }
+inline char * streambuf::epptr() const { return _epptr; }
+inline char * streambuf::eback() const { return _eback; }
+inline char * streambuf::gptr() const { return _gptr; }
+inline char * streambuf::egptr() const { return _egptr; }
+inline void streambuf::gbump(int _n) { if (_egptr) _gptr += _n; }
+inline void streambuf::pbump(int _n) { if (_epptr) _pptr += _n; }
+inline void streambuf::setg(char * _eb, char * _g, char * _eg) {_eback=_eb; _gptr=_g; _egptr=_eg; x_lastc=EOF; }
+inline void streambuf::setp(char * _p, char * _ep) {_pptr=_pbase=_p; _epptr=_ep; }
+inline int streambuf::unbuffered() const { return _fUnbuf; }
+inline void streambuf::unbuffered(int _f) { _fUnbuf = _f; }
+
+#ifdef _MSC_VER
+// Restore previous packing
+#pragma pack(pop)
+#endif // _MSC_VER
+
+#endif // _INC_STREAMB
+
+#endif /* __cplusplus */
diff --git a/public/sdk/inc/crt/string.h b/public/sdk/inc/crt/string.h
new file mode 100644
index 000000000..2b36de99c
--- /dev/null
+++ b/public/sdk/inc/crt/string.h
@@ -0,0 +1,292 @@
+/***
+*string.h - declarations for string manipulation functions
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains the function declarations for the string
+* manipulation functions.
+* [ANSI/System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_STRING
+#define _INC_STRING
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+
+#ifndef _MAC
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+#ifndef _NLSCMP_DEFINED
+#define _NLSCMPERROR 2147483647 /* currently == INT_MAX */
+#define _NLSCMP_DEFINED
+#endif
+
+/* Define NULL pointer value */
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+
+/* Function prototypes */
+
+#ifdef _M_MRX000
+_CRTIMP void * __cdecl memcpy(void *, const void *, size_t);
+_CRTIMP int __cdecl memcmp(const void *, const void *, size_t);
+_CRTIMP void * __cdecl memset(void *, int, size_t);
+_CRTIMP char * __cdecl _strset(char *, int);
+_CRTIMP char * __cdecl strcpy(char *, const char *);
+_CRTIMP char * __cdecl strcat(char *, const char *);
+_CRTIMP int __cdecl strcmp(const char *, const char *);
+_CRTIMP size_t __cdecl strlen(const char *);
+#else
+ void * __cdecl memcpy(void *, const void *, size_t);
+ int __cdecl memcmp(const void *, const void *, size_t);
+ void * __cdecl memset(void *, int, size_t);
+ char * __cdecl _strset(char *, int);
+ char * __cdecl strcpy(char *, const char *);
+ char * __cdecl strcat(char *, const char *);
+ int __cdecl strcmp(const char *, const char *);
+ size_t __cdecl strlen(const char *);
+#endif
+_CRTIMP void * __cdecl _memccpy(void *, const void *, int, unsigned int);
+_CRTIMP void * __cdecl memchr(const void *, int, size_t);
+_CRTIMP int __cdecl _memicmp(const void *, const void *, unsigned int);
+
+#ifdef _M_ALPHA
+ /* memmove is available as an intrinsic in the Alpha compiler */
+ void * __cdecl memmove(void *, const void *, size_t);
+#else
+_CRTIMP void * __cdecl memmove(void *, const void *, size_t);
+#endif
+
+
+_CRTIMP char * __cdecl strchr(const char *, int);
+_CRTIMP int __cdecl _strcmpi(const char *, const char *);
+_CRTIMP int __cdecl _stricmp(const char *, const char *);
+_CRTIMP int __cdecl strcoll(const char *, const char *);
+_CRTIMP int __cdecl _stricoll(const char *, const char *);
+_CRTIMP int __cdecl _strncoll(const char *, const char *, size_t);
+_CRTIMP int __cdecl _strnicoll(const char *, const char *, size_t);
+_CRTIMP size_t __cdecl strcspn(const char *, const char *);
+_CRTIMP char * __cdecl _strdup(const char *);
+_CRTIMP char * __cdecl _strerror(const char *);
+_CRTIMP char * __cdecl strerror(int);
+_CRTIMP char * __cdecl _strlwr(char *);
+_CRTIMP char * __cdecl strncat(char *, const char *, size_t);
+_CRTIMP int __cdecl strncmp(const char *, const char *, size_t);
+_CRTIMP int __cdecl _strnicmp(const char *, const char *, size_t);
+_CRTIMP char * __cdecl strncpy(char *, const char *, size_t);
+_CRTIMP char * __cdecl _strnset(char *, int, size_t);
+_CRTIMP char * __cdecl strpbrk(const char *, const char *);
+_CRTIMP char * __cdecl strrchr(const char *, int);
+_CRTIMP char * __cdecl _strrev(char *);
+_CRTIMP size_t __cdecl strspn(const char *, const char *);
+_CRTIMP char * __cdecl strstr(const char *, const char *);
+_CRTIMP char * __cdecl strtok(char *, const char *);
+_CRTIMP char * __cdecl _strupr(char *);
+_CRTIMP size_t __cdecl strxfrm (char *, const char *, size_t);
+
+#if defined(_M_MPPC) || defined(_M_M68K)
+unsigned char * __cdecl _c2pstr(char *);
+char * __cdecl _p2cstr(unsigned char *);
+
+#if !__STDC__
+__inline unsigned char * __cdecl c2pstr(char *sz) { return _c2pstr(sz);};
+__inline char * __cdecl p2cstr(unsigned char *sz) { return _p2cstr(sz);};
+#endif
+#endif
+
+#if !__STDC__
+
+#ifdef _NTSDK
+
+/* Non-ANSI names for compatibility */
+#define memccpy _memccpy
+#define memicmp _memicmp
+#define strcmpi _strcmpi
+#define stricmp _stricmp
+#define strdup _strdup
+#define strlwr _strlwr
+#define strnicmp _strnicmp
+#define strnset _strnset
+#define strrev _strrev
+#define strset _strset
+#define strupr _strupr
+#define stricoll _stricoll
+#else /* ndef _NTSDK */
+
+/* prototypes for oldnames.lib functions */
+_CRTIMP void * __cdecl memccpy(void *, const void *, int, unsigned int);
+_CRTIMP int __cdecl memicmp(const void *, const void *, unsigned int);
+_CRTIMP int __cdecl strcmpi(const char *, const char *);
+_CRTIMP int __cdecl stricmp(const char *, const char *);
+_CRTIMP char * __cdecl strdup(const char *);
+_CRTIMP char * __cdecl strlwr(char *);
+_CRTIMP int __cdecl strnicmp(const char *, const char *, size_t);
+_CRTIMP char * __cdecl strnset(char *, int, size_t);
+_CRTIMP char * __cdecl strrev(char *);
+ char * __cdecl strset(char *, int);
+_CRTIMP char * __cdecl strupr(char *);
+
+#endif /* ndef _NTSDK */
+
+#endif /* !__STDC__ */
+
+
+#ifndef _MAC
+#ifndef _WSTRING_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+_CRTIMP wchar_t * __cdecl wcscat(wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcschr(const wchar_t *, wchar_t);
+_CRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcscpy(wchar_t *, const wchar_t *);
+_CRTIMP size_t __cdecl wcscspn(const wchar_t *, const wchar_t *);
+_CRTIMP size_t __cdecl wcslen(const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcsncat(wchar_t *, const wchar_t *, size_t);
+_CRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t);
+_CRTIMP wchar_t * __cdecl wcsncpy(wchar_t *, const wchar_t *, size_t);
+_CRTIMP wchar_t * __cdecl wcspbrk(const wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcsrchr(const wchar_t *, wchar_t);
+_CRTIMP size_t __cdecl wcsspn(const wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcsstr(const wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcstok(wchar_t *, const wchar_t *);
+
+_CRTIMP wchar_t * __cdecl _wcsdup(const wchar_t *);
+_CRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl _wcsnicmp(const wchar_t *, const wchar_t *, size_t);
+_CRTIMP wchar_t * __cdecl _wcsnset(wchar_t *, wchar_t, size_t);
+_CRTIMP wchar_t * __cdecl _wcsrev(wchar_t *);
+_CRTIMP wchar_t * __cdecl _wcsset(wchar_t *, wchar_t);
+
+_CRTIMP wchar_t * __cdecl _wcslwr(wchar_t *);
+_CRTIMP wchar_t * __cdecl _wcsupr(wchar_t *);
+_CRTIMP size_t __cdecl wcsxfrm(wchar_t *, const wchar_t *, size_t);
+_CRTIMP int __cdecl wcscoll(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl _wcsicoll(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl _wcsncoll(const wchar_t *, const wchar_t *, size_t);
+_CRTIMP int __cdecl _wcsnicoll(const wchar_t *, const wchar_t *, size_t);
+
+#if !__STDC__
+
+/* old names */
+#define wcswcs wcsstr
+
+#ifdef _NTSDK
+
+/* Non-ANSI names for compatibility */
+#define wcsdup _wcsdup
+#define wcsicmp _wcsicmp
+#define wcsnicmp _wcsnicmp
+#define wcsnset _wcsnset
+#define wcsrev _wcsrev
+#define wcsset _wcsset
+#define wcslwr _wcslwr
+#define wcsupr _wcsupr
+#define wcsicoll _wcsicoll
+
+#else /* ndef _NTSDK */
+
+/* prototypes for oldnames.lib functions */
+_CRTIMP wchar_t * __cdecl wcsdup(const wchar_t *);
+_CRTIMP int __cdecl wcsicmp(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl wcsnicmp(const wchar_t *, const wchar_t *, size_t);
+_CRTIMP wchar_t * __cdecl wcsnset(wchar_t *, wchar_t, size_t);
+_CRTIMP wchar_t * __cdecl wcsrev(wchar_t *);
+_CRTIMP wchar_t * __cdecl wcsset(wchar_t *, wchar_t);
+_CRTIMP wchar_t * __cdecl wcslwr(wchar_t *);
+_CRTIMP wchar_t * __cdecl wcsupr(wchar_t *);
+_CRTIMP int __cdecl wcsicoll(const wchar_t *, const wchar_t *);
+
+#endif /* ndef _NTSDK */
+
+#endif /* !__STDC__ */
+
+#define _WSTRING_DEFINED
+#endif
+
+#endif /* ndef _MAC */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_STRING */
diff --git a/public/sdk/inc/crt/strstrea.h b/public/sdk/inc/crt/strstrea.h
new file mode 100644
index 000000000..82cbabd83
--- /dev/null
+++ b/public/sdk/inc/crt/strstrea.h
@@ -0,0 +1,128 @@
+/***
+*strstream.h - definitions/declarations for strstreambuf, strstream
+*
+* Copyright (c) 1991-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the classes, values, macros, and functions
+* used by the strstream and strstreambuf classes.
+* [AT&T C++]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifdef __cplusplus
+
+#ifndef _INC_STRSTREAM
+#define _INC_STRSTREAM
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+// Currently, all MS C compilers for Win32 platforms default to 8 byte
+// alignment.
+#pragma pack(push,8)
+#endif // _MSC_VER
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+#include <iostream.h>
+
+#ifdef _MSC_VER
+#pragma warning(disable:4514) // disable unwanted /W4 warning
+// #pragma warning(default:4514) // use this to reenable, if necessary
+#endif // _MSC_VER
+
+class _CRTIMP strstreambuf : public streambuf {
+public:
+ strstreambuf();
+ strstreambuf(int);
+ strstreambuf(char *, int, char * = 0);
+ strstreambuf(unsigned char *, int, unsigned char * = 0);
+ strstreambuf(signed char *, int, signed char * = 0);
+ strstreambuf(void * (*a)(long), void (*f) (void *));
+ ~strstreambuf();
+
+ void freeze(int =1);
+ char * str();
+
+virtual int overflow(int);
+virtual int underflow();
+virtual streambuf* setbuf(char *, int);
+virtual streampos seekoff(streamoff, ios::seek_dir, int);
+virtual int sync(); // not in spec.
+
+protected:
+virtual int doallocate();
+private:
+ int x_dynamic;
+ int x_bufmin;
+ int _fAlloc;
+ int x_static;
+ void * (* x_alloc)(long);
+ void (* x_free)(void *);
+};
+
+class _CRTIMP istrstream : public istream {
+public:
+ istrstream(char *);
+ istrstream(char *, int);
+ ~istrstream();
+
+inline strstreambuf* rdbuf() const { return (strstreambuf*) ios::rdbuf(); }
+inline char * str() { return rdbuf()->str(); }
+};
+
+class _CRTIMP ostrstream : public ostream {
+public:
+ ostrstream();
+ ostrstream(char *, int, int = ios::out);
+ ~ostrstream();
+
+inline int pcount() const { return rdbuf()->out_waiting(); }
+inline strstreambuf* rdbuf() const { return (strstreambuf*) ios::rdbuf(); }
+inline char * str() { return rdbuf()->str(); }
+};
+
+class _CRTIMP strstream : public iostream { // strstreambase ???
+public:
+ strstream();
+ strstream(char *, int, int);
+ ~strstream();
+
+inline int pcount() const { return rdbuf()->out_waiting(); } // not in spec.
+inline strstreambuf* rdbuf() const { return (strstreambuf*) ostream::rdbuf(); }
+inline char * str() { return rdbuf()->str(); }
+};
+
+#ifdef _MSC_VER
+// Restore previous packing
+#pragma pack(pop)
+#endif // _MSC_VER
+
+#endif // _INC_STRSTREAM
+
+#endif /* __cplusplus */
diff --git a/public/sdk/inc/crt/sys/locking.h b/public/sdk/inc/crt/sys/locking.h
new file mode 100644
index 000000000..14cd90bd1
--- /dev/null
+++ b/public/sdk/inc/crt/sys/locking.h
@@ -0,0 +1,49 @@
+/***
+*sys/locking.h - flags for locking() function
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the flags for the locking() function.
+* [System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_LOCKING
+#define _INC_LOCKING
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#define _LK_UNLCK 0 /* unlock the file region */
+#ifdef _WIN32
+#define _LK_LOCK 1 /* lock the file region */
+#endif
+#define _LK_NBLCK 2 /* non-blocking lock */
+#ifdef _WIN32
+#define _LK_RLCK 3 /* lock for writing */
+#endif
+#define _LK_NBRLCK 4 /* non-blocking lock for writing */
+
+#if !__STDC__
+/* Non-ANSI names for compatibility */
+#define LK_UNLCK _LK_UNLCK
+#ifdef _WIN32
+#define LK_LOCK _LK_LOCK
+#endif
+#define LK_NBLCK _LK_NBLCK
+#ifdef _WIN32
+#define LK_RLCK _LK_RLCK
+#endif
+#define LK_NBRLCK _LK_NBRLCK
+#endif
+
+#endif /* _INC_LOCKING */
diff --git a/public/sdk/inc/crt/sys/stat.h b/public/sdk/inc/crt/sys/stat.h
new file mode 100644
index 000000000..3977b7fee
--- /dev/null
+++ b/public/sdk/inc/crt/sys/stat.h
@@ -0,0 +1,226 @@
+/***
+*sys/stat.h - defines structure used by stat() and fstat()
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the structure used by the _stat() and _fstat()
+* routines.
+* [System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_STAT
+#define _INC_STAT
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#include <sys/types.h>
+
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+
+#ifdef _WIN32
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+#endif /* _WIN32 */
+
+
+/* define structure for returning status information */
+
+#ifndef _STAT_DEFINED
+
+struct _stat {
+ _dev_t st_dev;
+ _ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ _dev_t st_rdev;
+ _off_t st_size;
+ time_t st_atime;
+ time_t st_mtime;
+ time_t st_ctime;
+ };
+
+#if !__STDC__ && !defined(_NTSDK)
+
+/* Non-ANSI names for compatibility */
+
+struct stat {
+ _dev_t st_dev;
+ _ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ _dev_t st_rdev;
+ _off_t st_size;
+ time_t st_atime;
+ time_t st_mtime;
+ time_t st_ctime;
+ };
+
+#endif /* __STDC__ */
+
+#if _INTEGRAL_MAX_BITS >= 64
+struct _stati64 {
+ _dev_t st_dev;
+ _ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ _dev_t st_rdev;
+ __int64 st_size;
+ time_t st_atime;
+ time_t st_mtime;
+ time_t st_ctime;
+ };
+#endif
+
+#define _STAT_DEFINED
+#endif
+
+
+#define _S_IFMT 0170000 /* file type mask */
+#define _S_IFDIR 0040000 /* directory */
+#define _S_IFCHR 0020000 /* character special */
+#define _S_IFIFO 0010000 /* pipe */
+#define _S_IFREG 0100000 /* regular */
+#define _S_IREAD 0000400 /* read permission, owner */
+#define _S_IWRITE 0000200 /* write permission, owner */
+#define _S_IEXEC 0000100 /* execute/search permission, owner */
+
+
+/* Function prototypes */
+
+_CRTIMP int __cdecl _fstat(int, struct _stat *);
+_CRTIMP int __cdecl _stat(const char *, struct _stat *);
+
+#if _INTEGRAL_MAX_BITS >= 64
+_CRTIMP int __cdecl _fstati64(int, struct _stati64 *);
+_CRTIMP int __cdecl _stati64(const char *, struct _stati64 *);
+#endif
+
+#ifdef _WIN32
+#ifndef _WSTAT_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+_CRTIMP int __cdecl _wstat(const wchar_t *, struct _stat *);
+
+#if _INTEGRAL_MAX_BITS >= 64
+_CRTIMP int __cdecl _wstati64(const wchar_t *, struct _stati64 *);
+#endif
+
+#define _WSTAT_DEFINED
+#endif
+#endif /* _WIN32 */
+
+
+#if !__STDC__
+
+/* Non-ANSI names for compatibility */
+
+#define S_IFMT _S_IFMT
+#define S_IFDIR _S_IFDIR
+#define S_IFCHR _S_IFCHR
+#define S_IFREG _S_IFREG
+#define S_IREAD _S_IREAD
+#define S_IWRITE _S_IWRITE
+#define S_IEXEC _S_IEXEC
+
+#ifdef _NTSDK
+/* definitions compatible with NT SDK */
+#define fstat _fstat
+#define stat _stat
+#else /* ndef _NTSDK */
+/* current declarations */
+_CRTIMP int __cdecl fstat(int, struct stat *);
+_CRTIMP int __cdecl stat(const char *, struct stat *);
+#endif /* _NTSDK */
+
+#endif /* __STDC__ */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_STAT */
diff --git a/public/sdk/inc/crt/sys/timeb.h b/public/sdk/inc/crt/sys/timeb.h
new file mode 100644
index 000000000..fe2158f20
--- /dev/null
+++ b/public/sdk/inc/crt/sys/timeb.h
@@ -0,0 +1,151 @@
+/***
+*sys/timeb.h - definition/declarations for _ftime()
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file define the _ftime() function and the types it uses.
+* [System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_TIMEB
+#define _INC_TIMEB
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+
+/* Structure returned by _ftime system call */
+
+#ifndef _TIMEB_DEFINED
+struct _timeb {
+ time_t time;
+ unsigned short millitm;
+ short timezone;
+ short dstflag;
+ };
+
+#if !__STDC__
+
+/* Non-ANSI name for compatibility */
+
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define timeb _timeb
+#else /* ndef _NTSDK */
+/* current definition */
+struct timeb {
+ time_t time;
+ unsigned short millitm;
+ short timezone;
+ short dstflag;
+ };
+#endif /* _NTSDK */
+
+#endif
+
+#define _TIMEB_DEFINED
+#endif
+
+
+/* Function prototypes */
+
+_CRTIMP void __cdecl _ftime(struct _timeb *);
+
+#if !__STDC__
+
+/* Non-ANSI name for compatibility */
+
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#ifdef _WIN32
+#define ftime _ftime
+#else
+__inline void __cdecl ftime(struct timeb *pst) { _ftime((struct _timeb *)pst);};
+#endif
+#else /* ndef _NTSDK */
+/* current declaration */
+_CRTIMP void __cdecl ftime(struct timeb *);
+#endif /* _NTSDK */
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_TIMEB */
diff --git a/public/sdk/inc/crt/sys/types.h b/public/sdk/inc/crt/sys/types.h
new file mode 100644
index 000000000..765e852c0
--- /dev/null
+++ b/public/sdk/inc/crt/sys/types.h
@@ -0,0 +1,87 @@
+/***
+*sys/types.h - types returned by system level calls for file and time info
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines types used in defining values returned by system
+* level calls for file status and time information.
+* [System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_TYPES
+#define _INC_TYPES
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+
+#ifndef _INO_T_DEFINED
+
+typedef unsigned short _ino_t; /* i-node number (not used on DOS) */
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#define ino_t _ino_t
+#else /* ndef _NTSDK */
+typedef unsigned short ino_t;
+#endif /* _NTSDK */
+#endif
+
+#define _INO_T_DEFINED
+#endif
+
+
+#ifndef _DEV_T_DEFINED
+
+#ifdef _NTSDK
+typedef short _dev_t; /* device code */
+#else /* ndef _NTSDK */
+typedef unsigned int _dev_t; /* device code */
+#endif /* _NTSDK */
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#define dev_t _dev_t
+#else /* ndef _NTSDK */
+typedef unsigned int dev_t;
+#endif /* _NTSDK */
+#endif
+
+#define _DEV_T_DEFINED
+#endif
+
+
+#ifndef _OFF_T_DEFINED
+
+typedef long _off_t; /* file offset value */
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#define off_t _off_t
+#else /* ndef _NTSDK */
+typedef long off_t;
+#endif /* _NTSDK */
+#endif
+
+#define _OFF_T_DEFINED
+#endif
+
+#endif /* _INC_TYPES */
diff --git a/public/sdk/inc/crt/sys/utime.h b/public/sdk/inc/crt/sys/utime.h
new file mode 100644
index 000000000..c1d90d30d
--- /dev/null
+++ b/public/sdk/inc/crt/sys/utime.h
@@ -0,0 +1,151 @@
+/***
+*sys/utime.h - definitions/declarations for utime()
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the structure used by the utime routine to set
+* new file access and modification times. NOTE - MS-DOS
+* does not recognize access time, so this field will
+* always be ignored and the modification time field will be
+* used to set the new time.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_UTIME
+#define _INC_UTIME
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+#ifdef _WIN32
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+#endif /* _WIN32 */
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+/* define struct used by _utime() function */
+
+#ifndef _UTIMBUF_DEFINED
+
+struct _utimbuf {
+ time_t actime; /* access time */
+ time_t modtime; /* modification time */
+ };
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#define utimbuf _utimbuf
+#else /* ndef _NTSDK */
+struct utimbuf {
+ time_t actime; /* access time */
+ time_t modtime; /* modification time */
+ };
+#endif /* _NTSDK */
+#endif
+
+#define _UTIMBUF_DEFINED
+#endif
+
+
+/* Function Prototypes */
+
+_CRTIMP int __cdecl _utime(const char *, struct _utimbuf *);
+#ifdef _WIN32
+_CRTIMP int __cdecl _futime(int, struct _utimbuf *);
+
+/* Wide Function Prototypes */
+_CRTIMP int __cdecl _wutime(const wchar_t *, struct _utimbuf *);
+#endif /* _WIN32 */
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#ifdef _WIN32
+#define utime _utime
+#else /* _WIN32 */
+__inline int __cdecl utime(const char *sz, struct utimbuf *pst){ return _utime(sz, (struct _utimbuf *)pst);};
+#endif /* ndef _WIN32 */
+#else /* ndef _NTSDK */
+_CRTIMP int __cdecl utime(const char *, struct utimbuf *);
+#endif /* _NTSDK */
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_UTIME */
diff --git a/public/sdk/inc/crt/tchar.h b/public/sdk/inc/crt/tchar.h
new file mode 100644
index 000000000..1cc2b12dc
--- /dev/null
+++ b/public/sdk/inc/crt/tchar.h
@@ -0,0 +1,995 @@
+/***
+*tchar.h - definitions for generic international text functions
+*
+* Copyright (c) 1991-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Definitions for generic international functions, mostly defines
+* which map string/formatted-io/ctype functions to char, wchar_t, or
+* MBCS versions. To be used for compatibility between single-byte,
+* multi-byte and Unicode text models.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000 /*IFSTRIP=IGN*/
+#pragma once
+#endif
+
+#ifndef _INC_TCHAR
+#define _INC_TCHAR
+
+#ifdef _MSC_VER
+#pragma warning(disable:4514) /* disable unwanted C++ /W4 warning */
+/* #pragma warning(default:4514) */ /* use this to reenable, if necessary */
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef CRTDLL
+#define _CRTIMP __declspec(dllexport)
+#else /* ndef CRTDLL */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* CRTDLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+#define _ftcscat _tcscat
+#define _ftcschr _tcschr
+#define _ftcscpy _tcscpy
+#define _ftcscspn _tcscspn
+#define _ftcslen _tcslen
+#define _ftcsncat _tcsncat
+#define _ftcsncpy _tcsncpy
+#define _ftcspbrk _tcspbrk
+#define _ftcsrchr _tcsrchr
+#define _ftcsspn _tcsspn
+#define _ftcsstr _tcsstr
+#define _ftcstok _tcstok
+
+#define _ftcsdup _tcsdup
+#define _ftcsnset _tcsnset
+#define _ftcsrev _tcsrev
+#define _ftcsset _tcsset
+
+#define _ftcscmp _tcscmp
+#define _ftcsicmp _tcsicmp
+#define _ftcsnccmp _tcsnccmp
+#define _ftcsncmp _tcsncmp
+#define _ftcsncicmp _tcsncicmp
+#define _ftcsnicmp _tcsnicmp
+
+#define _ftcscoll _tcscoll
+#define _ftcsicoll _tcsicoll
+#define _ftcsnccoll _tcsnccoll
+#define _ftcsncoll _tcsncoll
+#define _ftcsncicoll _tcsncicoll
+#define _ftcsnicoll _tcsnicoll
+
+/* Redundant "logical-character" mappings */
+
+#define _ftcsclen _tcsclen
+#define _ftcsnccat _tcsnccat
+#define _ftcsnccpy _tcsnccpy
+#define _ftcsncset _tcsncset
+
+#define _ftcsdec _tcsdec
+#define _ftcsinc _tcsinc
+#define _ftcsnbcnt _tcsnbcnt
+#define _ftcsnccnt _tcsnccnt
+#define _ftcsnextc _tcsnextc
+#define _ftcsninc _tcsninc
+#define _ftcsspnp _tcsspnp
+
+#define _ftcslwr _tcslwr
+#define _ftcsupr _tcsupr
+
+#define _ftclen _tclen
+#define _ftccpy _tccpy
+#define _ftccmp _tccmp
+
+
+#ifdef _UNICODE
+
+/* ++++++++++++++++++++ UNICODE ++++++++++++++++++++ */
+
+#include <wchar.h>
+
+
+#ifndef _WCTYPE_T_DEFINED
+typedef wchar_t wint_t;
+typedef wchar_t wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+#ifndef __TCHAR_DEFINED
+typedef wchar_t _TCHAR;
+typedef wchar_t _TSCHAR;
+typedef wchar_t _TUCHAR;
+typedef wchar_t _TXCHAR;
+typedef wint_t _TINT;
+#define __TCHAR_DEFINED
+#endif
+
+#ifndef _TCHAR_DEFINED
+#if !__STDC__
+typedef wchar_t TCHAR;
+#endif
+#define _TCHAR_DEFINED
+#endif
+
+#define _TEOF WEOF
+
+#define __T(x) L ## x
+
+
+/* Program */
+
+#define _tmain wmain
+#define _tWinMain wWinMain
+#define _tenviron _wenviron
+#define __targv __wargv
+
+/* Formatted i/o */
+
+#define _tprintf wprintf
+#define _ftprintf fwprintf
+#define _stprintf swprintf
+#define _sntprintf _snwprintf
+#define _vtprintf vwprintf
+#define _vftprintf vfwprintf
+#define _vstprintf vswprintf
+#define _vsntprintf _vsnwprintf
+#define _tscanf wscanf
+#define _ftscanf fwscanf
+#define _stscanf swscanf
+
+
+/* Unformatted i/o */
+
+#define _fgettc fgetwc
+#define _fgettchar _fgetwchar
+#define _fgetts fgetws
+#define _fputtc fputwc
+#define _fputtchar _fputwchar
+#define _fputts fputws
+#define _gettc getwc
+#define _gettchar getwchar
+#define _getts _getws
+#define _puttc putwc
+#define _puttchar putwchar
+#define _putts _putws
+#define _ungettc ungetwc
+
+
+/* String conversion functions */
+
+#define _tcstod wcstod
+#define _tcstol wcstol
+#define _tcstoul wcstoul
+
+#define _itot _itow
+#define _ltot _ltow
+#define _ultot _ultow
+#define _ttoi _wtoi
+#define _ttol _wtol
+
+
+/* String functions */
+
+#define _tcscat wcscat
+#define _tcschr wcschr
+#define _tcscpy wcscpy
+#define _tcscspn wcscspn
+#define _tcslen wcslen
+#define _tcsncat wcsncat
+#define _tcsncpy wcsncpy
+#define _tcspbrk wcspbrk
+#define _tcsrchr wcsrchr
+#define _tcsspn wcsspn
+#define _tcsstr wcsstr
+#define _tcstok wcstok
+
+#define _tcsdup _wcsdup
+#define _tcsnset _wcsnset
+#define _tcsrev _wcsrev
+#define _tcsset _wcsset
+
+#define _tcscmp wcscmp
+#define _tcsicmp _wcsicmp
+#define _tcsnccmp wcsncmp
+#define _tcsncmp wcsncmp
+#define _tcsncicmp _wcsnicmp
+#define _tcsnicmp _wcsnicmp
+
+#define _tcscoll wcscoll
+#define _tcsicoll _wcsicoll
+#define _tcsnccoll _wcsncoll
+#define _tcsncoll _wcsncoll
+#define _tcsncicoll _wcsnicoll
+#define _tcsnicoll _wcsnicoll
+
+
+/* Execute functions */
+
+#define _texecl _wexecl
+#define _texecle _wexecle
+#define _texeclp _wexeclp
+#define _texeclpe _wexeclpe
+#define _texecv _wexecv
+#define _texecve _wexecve
+#define _texecvp _wexecvp
+#define _texecvpe _wexecvpe
+
+#define _tspawnl _wspawnl
+#define _tspawnle _wspawnle
+#define _tspawnlp _wspawnlp
+#define _tspawnlpe _wspawnlpe
+#define _tspawnv _wspawnv
+#define _tspawnve _wspawnve
+#define _tspawnvp _wspawnvp
+#define _tspawnvp _wspawnvp
+#define _tspawnvpe _wspawnvpe
+
+#define _tsystem _wsystem
+
+
+/* Time functions */
+
+#define _tasctime _wasctime
+#define _tctime _wctime
+#define _tstrdate _wstrdate
+#define _tstrtime _wstrtime
+#define _tutime _wutime
+#define _tcsftime wcsftime
+
+
+/* Directory functions */
+
+#define _tchdir _wchdir
+#define _tgetcwd _wgetcwd
+#define _tgetdcwd _wgetdcwd
+#define _tmkdir _wmkdir
+#define _trmdir _wrmdir
+
+
+/* Environment/Path functions */
+
+#define _tfullpath _wfullpath
+#define _tgetenv _wgetenv
+#define _tmakepath _wmakepath
+#define _tputenv _wputenv
+#define _tsearchenv _wsearchenv
+#define _tsplitpath _wsplitpath
+
+
+/* Stdio functions */
+
+#define _tfdopen _wfdopen
+#define _tfsopen _wfsopen
+#define _tfopen _wfopen
+#define _tfreopen _wfreopen
+#define _tperror _wperror
+#define _tpopen _wpopen
+#define _ttempnam _wtempnam
+#define _ttmpnam _wtmpnam
+
+
+/* Io functions */
+
+#define _taccess _waccess
+#define _tchmod _wchmod
+#define _tcreat _wcreat
+#define _tfindfirst _wfindfirst
+#define _tfindfirsti64 _wfindfirsti64
+#define _tfindnext _wfindnext
+#define _tfindnexti64 _wfindnexti64
+#define _tmktemp _wmktemp
+#define _topen _wopen
+#define _tremove _wremove
+#define _trename _wrename
+#define _tsopen _wsopen
+#define _tunlink _wunlink
+
+#define _tfinddata_t _wfinddata_t
+#define _tfinddatai64_t _wfinddatai64_t
+
+
+/* Stat functions */
+
+#define _tstat _wstat
+#define _tstati64 _wstati64
+
+
+/* Setlocale functions */
+
+#define _tsetlocale _wsetlocale
+
+
+/* Redundant "logical-character" mappings */
+
+#define _tcsclen wcslen
+#define _tcsnccat wcsncat
+#define _tcsnccpy wcsncpy
+#define _tcsncset _wcsnset
+
+#define _tcsdec _wcsdec
+#define _tcsinc _wcsinc
+#define _tcsnbcnt _wcsncnt
+#define _tcsnccnt _wcsncnt
+#define _tcsnextc _wcsnextc
+#define _tcsninc _wcsninc
+#define _tcsspnp _wcsspnp
+
+#define _tcslwr _wcslwr
+#define _tcsupr _wcsupr
+#define _tcsxfrm wcsxfrm
+
+
+#if (__STDC__ || defined(_NO_INLINING)) && !defined(_M_M68K)
+#define _tclen(_pc) (1)
+#define _tccpy(_pc1,_cpc2) ((*(_pc1) = *(_cpc2)))
+#define _tccmp(_cpc1,_cpc2) ((*(_cpc1))-(*(_cpc2)))
+#else /* __STDC__ */
+__inline size_t __cdecl _tclen(const wchar_t *_cpc) { return (_cpc,1); }
+__inline void __cdecl _tccpy(wchar_t *_pc1, const wchar_t *_cpc2) { *_pc1 = (wchar_t)*_cpc2; }
+__inline int __cdecl _tccmp(const wchar_t *_cpc1, const wchar_t *_cpc2) { return (int) ((*_cpc1)-(*_cpc2)); }
+#endif /* __STDC__ */
+
+
+/* ctype functions */
+
+#define _istalnum iswalnum
+#define _istalpha iswalpha
+#define _istascii iswascii
+#define _istcntrl iswcntrl
+#define _istdigit iswdigit
+#define _istgraph iswgraph
+#define _istlower iswlower
+#define _istprint iswprint
+#define _istpunct iswpunct
+#define _istspace iswspace
+#define _istupper iswupper
+#define _istxdigit iswxdigit
+
+#define _totupper towupper
+#define _totlower towlower
+
+#define _istlegal(_c) (1)
+#define _istlead(_c) (0)
+#define _istleadbyte(_c) (0)
+
+
+#if (__STDC__ || defined(_NO_INLINING)) && !defined(_M_M68K)
+#define _wcsdec(_cpc1, _cpc2) ((_cpc2)-1)
+#define _wcsinc(_pc) ((_pc)+1)
+#define _wcsnextc(_cpc) ((unsigned int) *(_cpc))
+#define _wcsninc(_pc, _sz) (((_pc)+(_sz)))
+#define _wcsncnt(_cpc, _sz) ((wcslen(_cpc)>_sz) ? _sz : wcslen(_cpc))
+#define _wcsspnp(_cpc1, _cpc2) ((*((_cpc1)+wcsspn(_cpc1,_cpc2))) ? ((_cpc1)+wcsspn(_cpc1,_cpc2)) : NULL)
+#else /* __STDC__ */
+__inline wchar_t * __cdecl _wcsdec(const wchar_t * _cpc1, const wchar_t * _cpc2) { return (wchar_t *)(_cpc1,(_cpc2-1)); }
+__inline wchar_t * __cdecl _wcsinc(const wchar_t * _pc) { return (wchar_t *)(_pc+1); }
+__inline unsigned int __cdecl _wcsnextc(const wchar_t * _cpc) { return (unsigned int)*_cpc; }
+__inline wchar_t * __cdecl _wcsninc(const wchar_t * _pc, size_t _sz) { return (wchar_t *)(_pc+_sz); }
+__inline size_t __cdecl _wcsncnt( const wchar_t * _cpc, size_t _sz) { size_t len; len = wcslen(_cpc); return (len>_sz) ? _sz : len; }
+__inline wchar_t * __cdecl _wcsspnp( const wchar_t * _cpc1, const wchar_t * _cpc2) { return (*(_cpc1 += wcsspn(_cpc1,_cpc2))!='\0') ? (wchar_t*)_cpc1 : NULL; }
+#endif /* __STDC__ */
+
+
+#else /* ndef _UNICODE */
+
+/* ++++++++++++++++++++ SBCS and MBCS ++++++++++++++++++++ */
+
+#include <string.h>
+
+
+#define _TEOF EOF
+
+#define __T(x) x
+
+
+/* Program */
+
+#define _tmain main
+#define _tWinMain WinMain
+#ifdef _POSIX_
+#define _tenviron environ
+#else
+#define _tenviron _environ
+#endif
+#define __targv __argv
+
+
+/* Formatted i/o */
+
+#define _tprintf printf
+#define _ftprintf fprintf
+#define _stprintf sprintf
+#define _sntprintf _snprintf
+#define _vtprintf vprintf
+#define _vftprintf vfprintf
+#define _vstprintf vsprintf
+#define _vsntprintf _vsnprintf
+#define _tscanf scanf
+#define _ftscanf fscanf
+#define _stscanf sscanf
+
+
+/* Unformatted i/o */
+
+#define _fgettc fgetc
+#define _fgettchar _fgetchar
+#define _fgetts fgets
+#define _fputtc fputc
+#define _fputtchar _fputchar
+#define _fputts fputs
+#define _gettc getc
+#define _gettchar getchar
+#define _getts gets
+#define _puttc putc
+#define _puttchar putchar
+#define _putts puts
+#define _ungettc ungetc
+
+
+/* String conversion functions */
+
+#define _tcstod strtod
+#define _tcstol strtol
+#define _tcstoul strtoul
+
+#define _itot _itoa
+#define _ltot _ltoa
+#define _ultot _ultoa
+#define _ttoi atoi
+#define _ttol atol
+
+
+/* String functions */
+
+#define _tcscat strcat
+#define _tcscpy strcpy
+#define _tcslen strlen
+#define _tcsxfrm strxfrm
+#define _tcsdup _strdup
+
+
+/* Execute functions */
+
+#define _texecl _execl
+#define _texecle _execle
+#define _texeclp _execlp
+#define _texeclpe _execlpe
+#define _texecv _execv
+#define _texecve _execve
+#define _texecvp _execvp
+#define _texecvpe _execvpe
+
+#define _tspawnl _spawnl
+#define _tspawnle _spawnle
+#define _tspawnlp _spawnlp
+#define _tspawnlpe _spawnlpe
+#define _tspawnv _spawnv
+#define _tspawnve _spawnve
+#define _tspawnvp _spawnvp
+#define _tspawnvpe _spawnvpe
+
+#define _tsystem system
+
+
+/* Time functions */
+
+#define _tasctime asctime
+#define _tctime ctime
+#define _tstrdate _strdate
+#define _tstrtime _strtime
+#define _tutime _utime
+#define _tcsftime strftime
+
+
+/* Directory functions */
+
+#define _tchdir _chdir
+#define _tgetcwd _getcwd
+#define _tgetdcwd _getdcwd
+#define _tmkdir _mkdir
+#define _trmdir _rmdir
+
+
+/* Environment/Path functions */
+
+#define _tfullpath _fullpath
+#define _tgetenv getenv
+#define _tmakepath _makepath
+#define _tputenv _putenv
+#define _tsearchenv _searchenv
+#define _tsplitpath _splitpath
+
+
+/* Stdio functions */
+
+#ifdef _POSIX_
+#define _tfdopen fdopen
+#else
+#define _tfdopen _fdopen
+#endif
+#define _tfsopen _fsopen
+#define _tfopen fopen
+#define _tfreopen freopen
+#define _tperror perror
+#define _tpopen _popen
+#define _ttempnam _tempnam
+#define _ttmpnam tmpnam
+
+
+/* Io functions */
+
+#define _tchmod _chmod
+#define _tcreat _creat
+#define _tfindfirst _findfirst
+#define _tfindfirsti64 _findfirsti64
+#define _tfindnext _findnext
+#define _tfindnexti64 _findnexti64
+#define _tmktemp _mktemp
+
+#ifdef _POSIX_
+#define _topen open
+#define _taccess access
+#else
+#define _topen _open
+#define _taccess _access
+#endif
+
+#define _tremove remove
+#define _trename rename
+#define _tsopen _sopen
+#define _tunlink _unlink
+
+#define _tfinddata_t _finddata_t
+#define _tfinddatai64_t _finddatai64_t
+
+
+/* ctype functions */
+
+#define _istascii isascii
+#define _istcntrl iscntrl
+#define _istxdigit isxdigit
+
+
+/* Stat functions */
+
+#define _tstat _stat
+#define _tstati64 _stati64
+
+
+/* Setlocale functions */
+
+#define _tsetlocale setlocale
+
+
+#ifdef _MBCS
+
+/* ++++++++++++++++++++ MBCS ++++++++++++++++++++ */
+
+
+#include <mbstring.h>
+
+
+#ifndef __TCHAR_DEFINED
+typedef char _TCHAR;
+typedef signed char _TSCHAR;
+typedef unsigned char _TUCHAR;
+typedef unsigned char _TXCHAR;
+typedef unsigned int _TINT;
+#define __TCHAR_DEFINED
+#endif
+
+#ifndef _TCHAR_DEFINED
+#if !__STDC__
+typedef char TCHAR;
+#endif
+#define _TCHAR_DEFINED
+#endif
+
+
+#ifdef _MB_MAP_DIRECT
+
+/* use mb functions directly - types must match */
+
+/* String functions */
+
+#define _tcschr _mbschr
+#define _tcscspn _mbscspn
+#define _tcsncat _mbsnbcat
+#define _tcsncpy _mbsnbcpy
+#define _tcspbrk _mbspbrk
+#define _tcsrchr _mbsrchr
+#define _tcsspn _mbsspn
+#define _tcsstr _mbsstr
+#define _tcstok _mbstok
+
+#define _tcsnset _mbsnbset
+#define _tcsrev _mbsrev
+#define _tcsset _mbsset
+
+#define _tcscmp _mbscmp
+#define _tcsicmp _mbsicmp
+#define _tcsnccmp _mbsncmp
+#define _tcsncmp _mbsnbcmp
+#define _tcsncicmp _mbsnicmp
+#define _tcsnicmp _mbsnbicmp
+
+#define _tcscoll _mbscoll
+#define _tcsicoll _mbsicoll
+#define _tcsnccoll _mbsncoll
+#define _tcsncoll _mbsnbcoll
+#define _tcsncicoll _mbsnicoll
+#define _tcsnicoll _mbsnbicoll
+
+
+/* "logical-character" mappings */
+
+#define _tcsclen _mbslen
+#define _tcsnccat _mbsncat
+#define _tcsnccpy _mbsncpy
+#define _tcsncset _mbsnset
+
+
+/* MBCS-specific mappings */
+
+#define _tcsdec _mbsdec
+#define _tcsinc _mbsinc
+#define _tcsnbcnt _mbsnbcnt
+#define _tcsnccnt _mbsnccnt
+#define _tcsnextc _mbsnextc
+#define _tcsninc _mbsninc
+#define _tcsspnp _mbsspnp
+
+#define _tcslwr _mbslwr
+#define _tcsupr _mbsupr
+
+#define _tclen _mbclen
+#define _tccpy _mbccpy
+
+#define _tccmp(_cpuc1,_cpuc2) _tcsnccmp(_cpuc1,_cpuc2,1)
+
+
+#else /* _MB_MAP_DIRECT */
+
+#if (__STDC__ || defined(_NO_INLINING)) && !defined(_M_M68K)
+
+/* use type-safe linked-in function thunks */
+
+/* String functions */
+
+_CRTIMP char * __cdecl _tcschr(const char *, unsigned int);
+_CRTIMP size_t __cdecl _tcscspn(const char *, const char *);
+_CRTIMP char * __cdecl _tcsncat(char *, const char *, size_t);
+_CRTIMP char * __cdecl _tcsncpy(char *, const char *, size_t);
+_CRTIMP char * __cdecl _tcspbrk(const char *, const char *);
+_CRTIMP char * __cdecl _tcsrchr(const char *, int);
+_CRTIMP size_t __cdecl _tcsspn(const char *, const char *);
+_CRTIMP char * __cdecl _tcsstr(const char *, const char *);
+_CRTIMP char * __cdecl _tcstok(char *, const char *);
+
+_CRTIMP char * __cdecl _tcsnset(char *, unsigned int, size_t);
+_CRTIMP char * __cdecl _tcsrev(char *);
+_CRTIMP char * __cdecl _tcsset(char *, unsigned int);
+
+_CRTIMP int __cdecl _tcscmp(const char *, const char *);
+_CRTIMP int __cdecl _tcsicmp(const char *, const char *);
+_CRTIMP int __cdecl _tcsnccmp(const char *, const char *, size_t);
+_CRTIMP int __cdecl _tcsncmp(const char *, const char *, size_t);
+_CRTIMP int __cdecl _tcsncicmp(const char *, const char *, size_t);
+_CRTIMP int __cdecl _tcsnicmp(const char *, const char *, size_t);
+
+_CRTIMP int __cdecl _tcscoll(const char *, const char *);
+_CRTIMP int __cdecl _tcsicoll(const char *, const char *);
+_CRTIMP int __cdecl _tcsnccoll(const char *, const char *, size_t);
+_CRTIMP int __cdecl _tcsncoll(const char *, const char *, size_t);
+_CRTIMP int __cdecl _tcsncicoll(const char *, const char *, size_t);
+_CRTIMP int __cdecl _tcsnicoll(const char *, const char *, size_t);
+
+
+/* "logical-character" mappings */
+
+_CRTIMP size_t __cdecl _tcsclen(const char *);
+_CRTIMP char * __cdecl _tcsnccat(char *, const char *, size_t);
+_CRTIMP char * __cdecl _tcsnccpy(char *, const char *, size_t);
+_CRTIMP char * __cdecl _tcsncset(char *, unsigned int, size_t);
+
+
+/* MBCS-specific mappings */
+
+_CRTIMP char * __cdecl _tcsdec(const char *, const char *);
+_CRTIMP char * __cdecl _tcsinc(const char *);
+_CRTIMP size_t __cdecl _tcsnbcnt(const char *, size_t);
+_CRTIMP size_t __cdecl _tcsnccnt(const char *, size_t);
+_CRTIMP unsigned int __cdecl _tcsnextc (const char *);
+_CRTIMP char * __cdecl _tcsninc(const char *, size_t);
+_CRTIMP char * __cdecl _tcsspnp(const char *, const char *);
+
+_CRTIMP char * __cdecl _tcslwr(char *);
+_CRTIMP char * __cdecl _tcsupr(char *);
+
+_CRTIMP size_t __cdecl _tclen(const char *);
+_CRTIMP void __cdecl _tccpy(char *, const char *);
+
+
+#else /* __STDC__ */
+
+/* the default: use type-safe inline function thunks */
+
+#define _PUC unsigned char *
+#define _CPUC const unsigned char *
+#define _PC char *
+#define _CPC const char *
+#define _UI unsigned int
+
+
+/* String functions */
+
+__inline _PC _tcschr(_CPC _s1,_UI _c) {return (_PC)_mbschr((_CPUC)_s1,_c);}
+__inline size_t _tcscspn(_CPC _s1,_CPC _s2) {return _mbscspn((_CPUC)_s1,(_CPUC)_s2);}
+__inline _PC _tcsncat(_PC _s1,_CPC _s2,size_t _n) {return (_PC)_mbsnbcat((_PUC)_s1,(_CPUC)_s2,_n);}
+__inline _PC _tcsncpy(_PC _s1,_CPC _s2,size_t _n) {return (_PC)_mbsnbcpy((_PUC)_s1,(_CPUC)_s2,_n);}
+__inline _PC _tcspbrk(_CPC _s1,_CPC _s2) {return (_PC)_mbspbrk((_CPUC)_s1,(_CPUC)_s2);}
+__inline _PC _tcsrchr(_CPC _s1,_UI _c) {return (_PC)_mbsrchr((_CPUC)_s1,_c);}
+__inline size_t _tcsspn(_CPC _s1,_CPC _s2) {return _mbsspn((_CPUC)_s1,(_CPUC)_s2);}
+__inline _PC _tcsstr(_CPC _s1,_CPC _s2) {return (_PC)_mbsstr((_CPUC)_s1,(_CPUC)_s2);}
+__inline _PC _tcstok(_PC _s1,_CPC _s2) {return (_PC)_mbstok((_PUC)_s1,(_CPUC)_s2);}
+
+__inline _PC _tcsnset(_PC _s1,_UI _c,size_t _n) {return (_PC)_mbsnbset((_PUC)_s1,_c,_n);}
+__inline _PC _tcsrev(_PC _s1) {return (_PC)_mbsrev((_PUC)_s1);}
+__inline _PC _tcsset(_PC _s1,_UI _c) {return (_PC)_mbsset((_PUC)_s1,_c);}
+
+__inline int _tcscmp(_CPC _s1,_CPC _s2) {return _mbscmp((_CPUC)_s1,(_CPUC)_s2);}
+__inline int _tcsicmp(_CPC _s1,_CPC _s2) {return _mbsicmp((_CPUC)_s1,(_CPUC)_s2);}
+__inline int _tcsnccmp(_CPC _s1,_CPC _s2,size_t _n) {return _mbsncmp((_CPUC)_s1,(_CPUC)_s2,_n);}
+__inline int _tcsncmp(_CPC _s1,_CPC _s2,size_t _n) {return _mbsnbcmp((_CPUC)_s1,(_CPUC)_s2,_n);}
+__inline int _tcsncicmp(_CPC _s1,_CPC _s2,size_t _n) {return _mbsnicmp((_CPUC)_s1,(_CPUC)_s2,_n);}
+__inline int _tcsnicmp(_CPC _s1,_CPC _s2,size_t _n) {return _mbsnbicmp((_CPUC)_s1,(_CPUC)_s2,_n);}
+
+__inline int _tcscoll(_CPC _s1,_CPC _s2) {return _mbscoll((_CPUC)_s1,(_CPUC)_s2);}
+__inline int _tcsicoll(_CPC _s1,_CPC _s2) {return _mbsicoll((_CPUC)_s1,(_CPUC)_s2);}
+__inline int _tcsnccoll(_CPC _s1,_CPC _s2,size_t _n) {return _mbsncoll((_CPUC)_s1,(_CPUC)_s2,_n);}
+__inline int _tcsncoll(_CPC _s1,_CPC _s2,size_t _n) {return _mbsnbcoll((_CPUC)_s1,(_CPUC)_s2,_n);}
+__inline int _tcsncicoll(_CPC _s1,_CPC _s2,size_t _n) {return _mbsnicoll((_CPUC)_s1,(_CPUC)_s2,_n);}
+__inline int _tcsnicoll(_CPC _s1,_CPC _s2,size_t _n) {return _mbsnbicoll((_CPUC)_s1,(_CPUC)_s2,_n);}
+
+
+/* "logical-character" mappings */
+
+__inline size_t _tcsclen(_CPC _s1) {return _mbslen((_CPUC)_s1);}
+__inline _PC _tcsnccat(_PC _s1,_CPC _s2,size_t _n) {return (_PC)_mbsncat((_PUC)_s1,(_CPUC)_s2,_n);}
+__inline _PC _tcsnccpy(_PC _s1,_CPC _s2,size_t _n) {return (_PC)_mbsncpy((_PUC)_s1,(_CPUC)_s2,_n);}
+__inline _PC _tcsncset(_PC _s1,_UI _c,size_t _n) {return (_PC)_mbsnset((_PUC)_s1,_c,_n);}
+
+
+/* MBCS-specific mappings */
+
+__inline _PC _tcsdec(_CPC _s1,_CPC _s2) {return (_PC)_mbsdec((_CPUC)_s1,(_CPUC)_s2);}
+__inline _PC _tcsinc(_CPC _s1) {return (_PC)_mbsinc((_CPUC)_s1);}
+__inline size_t _tcsnbcnt(_CPC _s1,size_t _n) {return _mbsnbcnt((_CPUC)_s1,_n);}
+__inline size_t _tcsnccnt(_CPC _s1,size_t _n) {return _mbsnccnt((_CPUC)_s1,_n);}
+__inline _PC _tcsninc(_CPC _s1,size_t _n) {return (_PC)_mbsninc((_CPUC)_s1,_n);}
+__inline _PC _tcsspnp(_CPC _s1,_CPC _s2) {return (_PC)_mbsspnp((_CPUC)_s1,(_CPUC)_s2);}
+__inline _PC _tcslwr(_PC _s1) {return (_PC)_mbslwr((_PUC)_s1);}
+__inline _PC _tcsupr(_PC _s1) {return (_PC)_mbsupr((_PUC)_s1);}
+
+__inline size_t _tclen(_CPC _s1) {return _mbclen((_CPUC)_s1);}
+__inline void _tccpy(_PC _s1,_CPC _s2) {_mbccpy((_PUC)_s1,(_CPUC)_s2); return;}
+
+
+/* inline helper */
+__inline _UI _tcsnextc(_CPC _s1) {_UI _n=0; if (_ismbblead((_UI)*(_PUC)_s1)) _n=((_UI)*_s1++)<<8; _n+=(_UI)*_s1; return(_n);}
+
+
+#endif /* __STDC__ */
+
+#endif /* _MB_MAP_DIRECT */
+
+
+/* MBCS-specific mappings */
+
+#define _tccmp(_cp1,_cp2) _tcsnccmp(_cp1,_cp2,1)
+
+
+/* ctype functions */
+
+#define _istalnum _ismbcalnum
+#define _istalpha _ismbcalpha
+#define _istdigit _ismbcdigit
+#define _istgraph _ismbcgraph
+#define _istlegal _ismbclegal
+#define _istlower _ismbclower
+#define _istprint _ismbcprint
+#define _istpunct _ismbcpunct
+#define _istspace _ismbcspace
+#define _istupper _ismbcupper
+
+#define _totupper _mbctoupper
+#define _totlower _mbctolower
+
+#define _istlead _ismbblead
+#define _istleadbyte isleadbyte
+
+#else /* !_MBCS */
+
+/* ++++++++++++++++++++ SBCS ++++++++++++++++++++ */
+
+
+#ifndef __TCHAR_DEFINED
+typedef char _TCHAR;
+typedef signed char _TSCHAR;
+typedef unsigned char _TUCHAR;
+typedef char _TXCHAR;
+typedef int _TINT;
+#define __TCHAR_DEFINED
+#endif
+
+#ifndef _TCHAR_DEFINED
+#if !__STDC__
+typedef char TCHAR;
+#endif
+#define _TCHAR_DEFINED
+#endif
+
+
+/* String functions */
+
+#define _tcschr strchr
+#define _tcscspn strcspn
+#define _tcsncat strncat
+#define _tcsncpy strncpy
+#define _tcspbrk strpbrk
+#define _tcsrchr strrchr
+#define _tcsspn strspn
+#define _tcsstr strstr
+#define _tcstok strtok
+
+#define _tcsnset _strnset
+#define _tcsrev _strrev
+#define _tcsset _strset
+
+#define _tcscmp strcmp
+#define _tcsicmp _stricmp
+#define _tcsnccmp strncmp
+#define _tcsncmp strncmp
+#define _tcsncicmp _strnicmp
+#define _tcsnicmp _strnicmp
+
+#define _tcscoll strcoll
+#define _tcsicoll _stricoll
+#define _tcsnccoll _strncoll
+#define _tcsncoll _strncoll
+#define _tcsncicoll _strnicoll
+#define _tcsnicoll _strnicoll
+
+
+/* "logical-character" mappings */
+
+#define _tcsclen strlen
+#define _tcsnccat strncat
+#define _tcsnccpy strncpy
+#define _tcsncset _strnset
+
+
+/* MBCS-specific functions */
+
+#define _tcsdec _strdec
+#define _tcsinc _strinc
+#define _tcsnbcnt _strncnt
+#define _tcsnccnt _strncnt
+#define _tcsnextc _strnextc
+#define _tcsninc _strninc
+#define _tcsspnp _strspnp
+
+#define _tcslwr _strlwr
+#define _tcsupr _strupr
+#define _tcsxfrm strxfrm
+
+#define _istlead(_c) (0)
+#define _istleadbyte(_c) (0)
+
+#if (__STDC__ || defined(_NO_INLINING)) && !defined(_M_M68K)
+#define _tclen(_pc) (1)
+#define _tccpy(_pc1,_cpc2) (*(_pc1) = *(_cpc2))
+#define _tccmp(_cpc1,_cpc2) (((unsigned char)*(_cpc1))-((unsigned char)*(_cpc2)))
+#else /* __STDC__ */
+__inline size_t __cdecl _tclen(const char *_cpc) { return (_cpc,1); }
+__inline void __cdecl _tccpy(char *_pc1, const char *_cpc2) { *_pc1 = *_cpc2; }
+__inline int __cdecl _tccmp(const char *_cpc1, const char *_cpc2) { return (int) (((unsigned char)*_cpc1)-((unsigned char)*_cpc2)); }
+#endif /* __STDC__ */
+
+
+/* ctype-functions */
+
+#define _istalnum isalnum
+#define _istalpha isalpha
+#define _istdigit isdigit
+#define _istgraph isgraph
+#define _istlower islower
+#define _istprint isprint
+#define _istpunct ispunct
+#define _istspace isspace
+#define _istupper isupper
+
+#define _totupper toupper
+#define _totlower tolower
+
+#define _istlegal(_c) (1)
+
+
+/* the following is optional if functional versions are available */
+
+/* define NULL pointer value */
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+
+#if (__STDC__ || defined(_NO_INLINING)) && !defined(_M_M68K)
+#define _strdec(_cpc1, _cpc2) ((_cpc2)-1)
+#define _strinc(_pc) ((_pc)+1)
+#define _strnextc(_cpc) ((unsigned int) *(_cpc))
+#define _strninc(_pc, _sz) (((_pc)+(_sz)))
+#define _strncnt(_cpc, _sz) ((strlen(_cpc)>_sz) ? _sz : strlen(_cpc))
+#define _strspnp(_cpc1, _cpc2) ((*((_cpc1)+strspn(_cpc1,_cpc2))) ? ((_cpc1)+strspn(_cpc1,_cpc2)) : NULL)
+#else /* __STDC__ */
+__inline char * __cdecl _strdec(const char * _cpc1, const char * _cpc2) { return (char *)(_cpc1,(_cpc2-1)); }
+__inline char * __cdecl _strinc(const char * _pc) { return (char *)(_pc+1); }
+__inline unsigned int __cdecl _strnextc(const char * _cpc) { return (unsigned int)*_cpc; }
+__inline char * __cdecl _strninc(const char * _pc, size_t _sz) { return (char *)(_pc+_sz); }
+__inline size_t __cdecl _strncnt( const char * _cpc, size_t _sz) { size_t len; len = strlen(_cpc); return (len>_sz) ? _sz : len; }
+__inline char * __cdecl _strspnp( const char * _cpc1, const char * _cpc2) { return (*(_cpc1 += strspn(_cpc1,_cpc2))!='\0') ? (char*)_cpc1 : NULL; }
+#endif /* __STDC__ */
+
+
+#endif /* _MBCS */
+
+#endif /* _UNICODE */
+
+
+/* Generic text macros to be used with string literals and character constants.
+ Will also allow symbolic constants that resolve to same. */
+
+#define _T(x) __T(x)
+#define _TEXT(x) __T(x)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_TCHAR */
diff --git a/public/sdk/inc/crt/time.h b/public/sdk/inc/crt/time.h
new file mode 100644
index 000000000..c9cba37ab
--- /dev/null
+++ b/public/sdk/inc/crt/time.h
@@ -0,0 +1,326 @@
+/***
+*time.h - definitions/declarations for time routines
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file has declarations of time routines and defines
+* the structure returned by the localtime and gmtime routines and
+* used by asctime.
+* [ANSI/System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_TIME
+#define _INC_TIME
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+#ifndef _MAC
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+/* Define the implementation defined time type */
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t; /* time value */
+#define _TIME_T_DEFINED /* avoid multiple def's of time_t */
+#endif
+
+#ifndef _CLOCK_T_DEFINED
+typedef long clock_t;
+#define _CLOCK_T_DEFINED
+#endif
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+
+/* Define NULL pointer value */
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+
+#ifndef _TM_DEFINED
+struct tm {
+ int tm_sec; /* seconds after the minute - [0,59] */
+ int tm_min; /* minutes after the hour - [0,59] */
+ int tm_hour; /* hours since midnight - [0,23] */
+ int tm_mday; /* day of the month - [1,31] */
+ int tm_mon; /* months since January - [0,11] */
+ int tm_year; /* years since 1900 */
+ int tm_wday; /* days since Sunday - [0,6] */
+ int tm_yday; /* days since January 1 - [0,365] */
+ int tm_isdst; /* daylight savings time flag */
+ };
+#define _TM_DEFINED
+#endif
+
+
+/* Clock ticks macro - ANSI version */
+
+#define CLOCKS_PER_SEC 1000
+
+
+/* Extern declarations for the global variables used by the ctime family of
+ * routines.
+ */
+
+#ifdef _NTSDK
+
+#ifdef _DLL
+
+/* Declarations and definitions compatible with the NT SDK */
+
+#define _daylight (*_daylight_dll)
+#define _timezone (*_timezone_dll)
+
+/* non-zero if daylight savings time is used */
+extern int * _daylight_dll;
+
+/* difference in seconds between GMT and local time */
+extern long * _timezone_dll;
+
+/* standard/daylight savings time zone names */
+extern char ** _tzname;
+
+#else /* ndef _DLL */
+
+
+#ifdef _POSIX_
+extern char * _rule;
+#endif /* _POSIX_ */
+
+/* non-zero if daylight savings time is used */
+extern int _daylight;
+
+/* difference in seconds between GMT and local time */
+extern long _timezone;
+
+/* standard/daylight savings time zone names */
+#ifdef _POSIX_
+extern char * tzname[2];
+#else /* ndef _POSIX_ */
+extern char * _tzname[2];
+#endif /* _POSIX_ */
+
+#endif /* _DLL */
+
+#else /* ndef _NTSDK */
+
+/* Current declarations and definitions */
+
+#if defined(_DLL) && defined(_M_IX86)
+
+#define _daylight (*__p__daylight())
+_CRTIMP int * __cdecl __p__daylight(void);
+
+#define _dstbias (*__p__dstbias())
+_CRTIMP long * __cdecl __p__dstbias(void);
+
+#define _timezone (*__p__timezone())
+_CRTIMP long * __cdecl __p__timezone(void);
+
+#define _tzname (__p__tzname())
+_CRTIMP char ** __cdecl __p__tzname(void);
+
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+
+/* non-zero if daylight savings time is used */
+_CRTIMP extern int _daylight;
+
+/* offset for Daylight Saving Time */
+_CRTIMP extern long _dstbias;
+
+/* difference in seconds between GMT and local time */
+_CRTIMP extern long _timezone;
+
+/* standard/daylight savings time zone names */
+_CRTIMP extern char * _tzname[2];
+
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+#endif /* _NTSDK */
+
+
+/* Function prototypes */
+
+_CRTIMP char * __cdecl asctime(const struct tm *);
+_CRTIMP char * __cdecl ctime(const time_t *);
+_CRTIMP clock_t __cdecl clock(void);
+_CRTIMP double __cdecl difftime(time_t, time_t);
+_CRTIMP struct tm * __cdecl gmtime(const time_t *);
+_CRTIMP struct tm * __cdecl localtime(const time_t *);
+_CRTIMP time_t __cdecl mktime(struct tm *);
+_CRTIMP size_t __cdecl strftime(char *, size_t, const char *,
+ const struct tm *);
+_CRTIMP char * __cdecl _strdate(char *);
+_CRTIMP char * __cdecl _strtime(char *);
+_CRTIMP time_t __cdecl time(time_t *);
+
+#ifdef _POSIX_
+_CRTIMP void __cdecl tzset(void);
+#else
+_CRTIMP void __cdecl _tzset(void);
+#endif
+
+/* --------- The following functions are OBSOLETE --------- */
+/* The Win32 API GetLocalTime and SetLocalTime should be used instead. */
+unsigned __cdecl _getsystime(struct tm *);
+unsigned __cdecl _setsystime(struct tm *, unsigned);
+/* --------- The preceding functions are OBSOLETE --------- */
+
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _MAC
+#ifndef _WTIME_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+_CRTIMP wchar_t * __cdecl _wasctime(const struct tm *);
+_CRTIMP wchar_t * __cdecl _wctime(const time_t *);
+_CRTIMP size_t __cdecl wcsftime(wchar_t *, size_t, const wchar_t *,
+ const struct tm *);
+_CRTIMP wchar_t * __cdecl _wstrdate(wchar_t *);
+_CRTIMP wchar_t * __cdecl _wstrtime(wchar_t *);
+
+#define _WTIME_DEFINED
+#endif
+#endif /* ndef _MAC */
+
+
+#if !__STDC__ || defined(_POSIX_)
+
+/* Non-ANSI names for compatibility */
+
+#define CLK_TCK CLOCKS_PER_SEC
+
+#ifdef _NTSDK
+
+/* Declarations and definitions compatible with the NT SDK */
+
+#define daylight _daylight
+/* timezone cannot be #defined because of <sys/timeb.h> */
+
+#ifndef _POSIX_
+#define tzname _tzname
+#define tzset _tzset
+#endif /* _POSIX_ */
+
+#else /* ndef _NTSDK */
+
+#if defined(_DLL) && defined(_M_IX86)
+
+#define daylight (*__p__daylight())
+/* timezone cannot be #defined because of <sys/timeb.h>
+ so CRT DLL for win32s will not have timezone */
+_CRTIMP extern long timezone;
+#define tzname (__p__tzname())
+
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+
+_CRTIMP extern int daylight;
+_CRTIMP extern long timezone;
+_CRTIMP extern char * tzname[2];
+
+#endif /* !(defined(_DLL) && defined(_M_IX86)) */
+
+_CRTIMP void __cdecl tzset(void);
+
+#endif /* _NTSDK */
+
+#endif /* __STDC__ */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_TIME */
diff --git a/public/sdk/inc/crt/typeinfo.h b/public/sdk/inc/crt/typeinfo.h
new file mode 100644
index 000000000..55245e14f
--- /dev/null
+++ b/public/sdk/inc/crt/typeinfo.h
@@ -0,0 +1,88 @@
+/***
+*typeinfo.h - Defines the type_info structure and exceptions used for RTTI
+*
+* Copyright (c) 1994-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Defines the type_info structure and exceptions used for
+* Runtime Type Identification.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef __cplusplus
+#error This header requires a C++ compiler ...
+#endif
+
+#ifndef _INC_TYPEINFO
+#define _INC_TYPEINFO
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+class type_info {
+public:
+ _CRTIMP virtual ~type_info();
+ _CRTIMP int operator==(const type_info& rhs) const;
+ _CRTIMP int operator!=(const type_info& rhs) const;
+ _CRTIMP int before(const type_info& rhs) const;
+ _CRTIMP const char* name() const;
+ _CRTIMP const char* raw_name() const;
+private:
+ void *_m_data;
+ char _m_d_name[1];
+ type_info(const type_info& rhs);
+ type_info& operator=(const type_info& rhs);
+};
+
+
+// This include must occur below the definition of class type_info
+#include <stdexcpt.h>
+
+class _CRTIMP bad_cast : public exception {
+public:
+ bad_cast(const __exString& what_arg) : exception (what_arg) {}
+};
+
+class _CRTIMP bad_typeid : public exception {
+public:
+ bad_typeid(const char * what_arg) : exception (what_arg) {}
+};
+
+class _CRTIMP __non_rtti_object : public bad_typeid {
+public:
+ __non_rtti_object(const char * what_arg) : bad_typeid(what_arg) {}
+};
+
+#ifdef __RTTI_OLDNAMES
+// Some synonyms for folks using older standard
+typedef type_info Type_info;
+typedef bad_cast Bad_cast;
+typedef bad_typeid Bad_typeid;
+#endif // __RTTI_OLDNAMES
+
+
+#endif // _INC_TYPEINFO
diff --git a/public/sdk/inc/crt/varargs.h b/public/sdk/inc/crt/varargs.h
new file mode 100644
index 000000000..e2bb22d07
--- /dev/null
+++ b/public/sdk/inc/crt/varargs.h
@@ -0,0 +1,163 @@
+/***
+*varargs.h - XENIX style macros for variable argument functions
+*
+* Copyright (c) 1985-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines XENIX style macros for accessing arguments of a
+* function which takes a variable number of arguments.
+* [System V]
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#ifndef _INC_VARARGS
+#define _INC_VARARGS
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+/*
+ * Currently, all MS C compilers for Win32 platforms default to 8 byte
+ * alignment.
+ */
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if __STDC__
+#error varargs.h incompatible with ANSI (use stdarg.h)
+#endif
+
+
+#ifndef _VA_LIST_DEFINED
+
+#ifdef _M_ALPHA
+typedef struct {
+ char *a0; /* pointer to first homed integer argument */
+ int offset; /* byte offset of next parameter */
+} va_list;
+#else
+typedef char *va_list;
+#endif
+
+#define _VA_LIST_DEFINED
+#endif
+
+
+#if defined(_M_IX86)
+
+/*
+ * define a macro to compute the size of a type, variable or expression,
+ * rounded up to the nearest multiple of sizeof(int). This number is its
+ * size as function argument (Intel architecture). Note that the macro
+ * depends on sizeof(int) being a power of 2!
+ */
+#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
+
+#define va_dcl va_list va_alist;
+#define va_start(ap) ap = (va_list)&va_alist
+#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
+#define va_end(ap) ap = (va_list)0
+
+
+#elif defined(_M_MRX000) /* _MIPS_ */
+
+
+#define va_dcl int va_alist;
+#define va_start(list) list = (char *) &va_alist
+#define va_end(list)
+#define va_arg(list, mode) ((mode *)(list =\
+ (char *) ((((int)list + (__builtin_alignof(mode)<=4?3:7)) &\
+ (__builtin_alignof(mode)<=4?-4:-8))+sizeof(mode))))[-1]
+/* +++++++++++++++++++++++++++++++++++++++++++
+ Because of parameter passing conventions in C:
+ use mode=int for char, and short types
+ use mode=double for float types
+ use a pointer for array types
+ +++++++++++++++++++++++++++++++++++++++++++ */
+
+
+#elif defined(_M_ALPHA)
+
+/*
+ * The Alpha compiler supports two builtin functions that are used to
+ * implement stdarg/varargs. The __builtin_va_start function is used
+ * by va_start to initialize the data structure that locates the next
+ * argument. The __builtin_isfloat function is used by va_arg to pick
+ * which part of the home area a given register argument is stored in.
+ * The home area is where up to six integer and/or six floating point
+ * register arguments are stored down (so they can also be referenced
+ * by a pointer like any arguments passed on the stack).
+ */
+extern void * __builtin_va_start(va_list, ...);
+
+#define va_dcl long va_alist;
+#define va_start(list) __builtin_va_start(list, va_alist, 0)
+#define va_end(list)
+#define va_arg(list, mode) \
+ ( *( ((list).offset += ((int)sizeof(mode) + 7) & -8) , \
+ (mode *)((list).a0 + (list).offset - \
+ ((__builtin_isfloat(mode) && (list).offset <= (6 * 8)) ? \
+ (6 * 8) + 8 : ((int)sizeof(mode) + 7) & -8) \
+ ) \
+ ) \
+ )
+
+
+#elif defined(_M_PPC)
+
+/*
+ * define a macro to compute the size of a type, variable or expression,
+ * rounded up to the nearest multiple of sizeof(int). This number is its
+ * size as function argument (PPC architecture). Note that the macro
+ * depends on sizeof(int) being a power of 2!
+ */
+/* this is for LITTLE-ENDIAN PowerPC */
+
+/* bytes that a type occupies in the argument list */
+#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
+/* return 'ap' adjusted for type 't' in arglist */
+#define _ALIGNIT(ap,t) \
+ ((((int)(ap))+(sizeof(t)<8?3:7)) & (sizeof(t)<8?~3:~7))
+
+#define va_dcl va_list va_alist;
+#define va_start(ap) ap = (va_list)&va_alist
+#define va_arg(ap,t) ( *(t *)((ap = (char *) (_ALIGNIT(ap, t) + _INTSIZEOF(t))) - _INTSIZEOF(t)) )
+#define va_end(ap) ap = (va_list)0
+
+#else
+
+/* A guess at the proper definitions for other platforms */
+
+#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
+
+#define va_dcl va_list va_alist;
+#define va_start(ap) ap = (va_list)&va_alist
+#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
+#define va_end(ap) ap = (va_list)0
+
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_VARARGS */
diff --git a/public/sdk/inc/crt/wchar.h b/public/sdk/inc/crt/wchar.h
new file mode 100644
index 000000000..861d9c594
--- /dev/null
+++ b/public/sdk/inc/crt/wchar.h
@@ -0,0 +1,699 @@
+/***
+*wchar.h - declarations for wide character functions
+*
+* Copyright (c) 1992-1995, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains the types, macros and function declarations for
+* all wide character-related functions. They may also be declared in
+* individual header files on a functional basis.
+* [ISO]
+*
+* Note: keep in sync with ctype.h, stdio.h, stdlib.h, string.h, time.h.
+*
+* [Public]
+*
+****/
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+
+#ifndef _INC_WCHAR
+#define _INC_WCHAR
+
+#if !defined(_WIN32) && !defined(_MAC)
+#error ERROR: Only Mac or Win32 targets supported!
+#endif
+
+
+#ifdef _MSC_VER
+#pragma pack(push,8)
+#endif /* _MSC_VER */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Define _CRTAPI1 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI1
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI1 __cdecl
+#else
+#define _CRTAPI1
+#endif
+#endif
+
+
+/* Define _CRTAPI2 (for compatibility with the NT SDK) */
+
+#ifndef _CRTAPI2
+#if _MSC_VER >= 800 && _M_IX86 >= 300
+#define _CRTAPI2 __cdecl
+#else
+#define _CRTAPI2
+#endif
+#endif
+
+
+/* Define _CRTIMP */
+
+#ifndef _CRTIMP
+#ifdef _NTSDK
+/* definition compatible with NT SDK */
+#define _CRTIMP
+#else /* ndef _NTSDK */
+/* current definition */
+#ifdef _DLL
+#define _CRTIMP __declspec(dllimport)
+#else /* ndef _DLL */
+#define _CRTIMP
+#endif /* _DLL */
+#endif /* _NTSDK */
+#endif /* _CRTIMP */
+
+
+/* Define __cdecl for non-Microsoft compilers */
+
+#if ( !defined(_MSC_VER) && !defined(__cdecl) )
+#define __cdecl
+#endif
+
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+
+#ifndef _WCTYPE_T_DEFINED
+typedef wchar_t wint_t;
+typedef wchar_t wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+
+#ifndef _VA_LIST_DEFINED
+#ifdef _M_ALPHA
+typedef struct {
+ char *a0; /* pointer to first homed integer argument */
+ int offset; /* byte offset of next parameter */
+} va_list;
+#else
+typedef char * va_list;
+#endif
+#define _VA_LIST_DEFINED
+#endif
+
+#ifndef WEOF
+#define WEOF (wint_t)(0xFFFF)
+#endif
+
+#ifndef _FILE_DEFINED
+struct _iobuf {
+ char *_ptr;
+ int _cnt;
+ char *_base;
+ int _flag;
+ int _file;
+ int _charbuf;
+ int _bufsiz;
+ char *_tmpfname;
+ };
+typedef struct _iobuf FILE;
+#define _FILE_DEFINED
+#endif
+
+#ifndef _FSIZE_T_DEFINED
+typedef unsigned long _fsize_t; /* Could be 64 bits for Win32 */
+#define _FSIZE_T_DEFINED
+#endif
+
+#ifndef _WFINDDATA_T_DEFINED
+
+struct _wfinddata_t {
+ unsigned attrib;
+ time_t time_create; /* -1 for FAT file systems */
+ time_t time_access; /* -1 for FAT file systems */
+ time_t time_write;
+ _fsize_t size;
+ wchar_t name[260];
+};
+
+#if !defined(_M_MPPC) && !defined(_M_M68K)
+#if _INTEGRAL_MAX_BITS >= 64
+struct _wfinddatai64_t {
+ unsigned attrib;
+ time_t time_create; /* -1 for FAT file systems */
+ time_t time_access; /* -1 for FAT file systems */
+ time_t time_write;
+ __int64 size;
+ wchar_t name[260];
+};
+#endif
+#endif
+
+#define _WFINDDATA_T_DEFINED
+#endif
+
+/* define NULL pointer value */
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+/*
+ * This declaration allows the user access to the ctype look-up
+ * array _ctype defined in ctype.obj by simply including ctype.h
+ */
+
+#ifdef _NTSDK
+
+/* definitions and declarations compatible with NT SDK */
+
+#ifdef _DLL
+extern unsigned short * _ctype;
+#define _pctype (*_pctype_dll)
+extern unsigned short **_pctype_dll;
+#define _pwctype (*_pwctype_dll)
+extern unsigned short **_pwctype_dll;
+#else /* ndef _DLL */
+extern unsigned short _ctype[];
+extern unsigned short *_pctype;
+extern wctype_t *_pwctype;
+#endif /* _DLL */
+
+#else /* ndef _NTSDK */
+
+/* current declarations */
+
+_CRTIMP extern unsigned short _ctype[];
+
+#if defined(_DLL) && defined(_M_IX86)
+
+#define _pctype (*__p__pctype())
+_CRTIMP unsigned short ** __cdecl __p__pctype(void);
+
+#define _pwctype (*__p__pwctype())
+_CRTIMP wctype_t ** __cdecl ___p__pwctype(void);
+
+#else /* !(defined(_DLL) && defined(_M_IX86)) */
+
+_CRTIMP extern unsigned short *_pctype;
+_CRTIMP extern wctype_t *_pwctype;
+
+#endif /* defined(_DLL) && defined(_M_IX86) */
+
+#endif /* _NTSDK */
+
+
+/* set bit masks for the possible character types */
+
+#define _UPPER 0x1 /* upper case letter */
+#define _LOWER 0x2 /* lower case letter */
+#define _DIGIT 0x4 /* digit[0-9] */
+#define _SPACE 0x8 /* tab, carriage return, newline, */
+ /* vertical tab or form feed */
+#define _PUNCT 0x10 /* punctuation character */
+#define _CONTROL 0x20 /* control character */
+#define _BLANK 0x40 /* space char */
+#define _HEX 0x80 /* hexadecimal digit */
+
+#define _LEADBYTE 0x8000 /* multibyte leadbyte */
+#define _ALPHA (0x0100|_UPPER|_LOWER) /* alphabetic character */
+
+
+/* Function prototypes */
+
+#ifndef _WCTYPE_DEFINED
+
+/* Character classification function prototypes */
+/* also declared in ctype.h */
+
+_CRTIMP int __cdecl iswalpha(wint_t);
+_CRTIMP int __cdecl iswupper(wint_t);
+_CRTIMP int __cdecl iswlower(wint_t);
+_CRTIMP int __cdecl iswdigit(wint_t);
+_CRTIMP int __cdecl iswxdigit(wint_t);
+_CRTIMP int __cdecl iswspace(wint_t);
+_CRTIMP int __cdecl iswpunct(wint_t);
+_CRTIMP int __cdecl iswalnum(wint_t);
+_CRTIMP int __cdecl iswprint(wint_t);
+_CRTIMP int __cdecl iswgraph(wint_t);
+_CRTIMP int __cdecl iswcntrl(wint_t);
+_CRTIMP int __cdecl iswascii(wint_t);
+_CRTIMP int __cdecl isleadbyte(int);
+
+_CRTIMP wchar_t __cdecl towupper(wchar_t);
+_CRTIMP wchar_t __cdecl towlower(wchar_t);
+
+_CRTIMP int __cdecl iswctype(wint_t, wctype_t);
+
+/* --------- The following functions are OBSOLETE --------- */
+_CRTIMP int __cdecl is_wctype(wint_t, wctype_t);
+/* --------- The preceding functions are OBSOLETE --------- */
+
+#define _WCTYPE_DEFINED
+#endif
+
+#ifndef _WDIRECT_DEFINED
+
+/* also declared in direct.h */
+
+_CRTIMP int __cdecl _wchdir(const wchar_t *);
+_CRTIMP wchar_t * __cdecl _wgetcwd(wchar_t *, int);
+_CRTIMP wchar_t * __cdecl _wgetdcwd(int, wchar_t *, int);
+_CRTIMP int __cdecl _wmkdir(const wchar_t *);
+_CRTIMP int __cdecl _wrmdir(const wchar_t *);
+
+#define _WDIRECT_DEFINED
+#endif
+
+#ifndef _WIO_DEFINED
+
+/* also declared in io.h */
+
+_CRTIMP int __cdecl _waccess(const wchar_t *, int);
+_CRTIMP int __cdecl _wchmod(const wchar_t *, int);
+_CRTIMP int __cdecl _wcreat(const wchar_t *, int);
+_CRTIMP long __cdecl _wfindfirst(const wchar_t *, struct _wfinddata_t *);
+_CRTIMP int __cdecl _wfindnext(long, struct _wfinddata_t *);
+_CRTIMP int __cdecl _wunlink(const wchar_t *);
+_CRTIMP int __cdecl _wrename(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl _wopen(const wchar_t *, int, ...);
+_CRTIMP int __cdecl _wsopen(const wchar_t *, int, int, ...);
+_CRTIMP wchar_t * __cdecl _wmktemp(wchar_t *);
+
+#if _INTEGRAL_MAX_BITS >= 64
+_CRTIMP long __cdecl _wfindfirsti64(const wchar_t *, struct _wfinddatai64_t *);
+_CRTIMP int __cdecl _wfindnexti64(long, struct _wfinddatai64_t *);
+#endif
+
+#define _WIO_DEFINED
+#endif
+
+#ifndef _WLOCALE_DEFINED
+
+/* wide function prototypes, also declared in wchar.h */
+
+_CRTIMP wchar_t * __cdecl _wsetlocale(int, const wchar_t *);
+
+#define _WLOCALE_DEFINED
+#endif
+
+#ifndef _WPROCESS_DEFINED
+
+/* also declared in process.h */
+
+_CRTIMP int __cdecl _wexecl(const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wexecle(const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wexeclp(const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wexeclpe(const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wexecv(const wchar_t *, const wchar_t * const *);
+_CRTIMP int __cdecl _wexecve(const wchar_t *, const wchar_t * const *, const wchar_t * const *);
+_CRTIMP int __cdecl _wexecvp(const wchar_t *, const wchar_t * const *);
+_CRTIMP int __cdecl _wexecvpe(const wchar_t *, const wchar_t * const *, const wchar_t * const *);
+_CRTIMP int __cdecl _wspawnl(int, const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wspawnle(int, const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wspawnlp(int, const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wspawnlpe(int, const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl _wspawnv(int, const wchar_t *, const wchar_t * const *);
+_CRTIMP int __cdecl _wspawnve(int, const wchar_t *, const wchar_t * const *,
+ const wchar_t * const *);
+_CRTIMP int __cdecl _wspawnvp(int, const wchar_t *, const wchar_t * const *);
+_CRTIMP int __cdecl _wspawnvpe(int, const wchar_t *, const wchar_t * const *,
+ const wchar_t * const *);
+_CRTIMP int __cdecl _wsystem(const wchar_t *);
+
+#define _WPROCESS_DEFINED
+#endif
+
+#define iswalpha(_c) ( iswctype(_c,_ALPHA) )
+#define iswupper(_c) ( iswctype(_c,_UPPER) )
+#define iswlower(_c) ( iswctype(_c,_LOWER) )
+#define iswdigit(_c) ( iswctype(_c,_DIGIT) )
+#define iswxdigit(_c) ( iswctype(_c,_HEX) )
+#define iswspace(_c) ( iswctype(_c,_SPACE) )
+#define iswpunct(_c) ( iswctype(_c,_PUNCT) )
+#define iswalnum(_c) ( iswctype(_c,_ALPHA|_DIGIT) )
+#define iswprint(_c) ( iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT) )
+#define iswgraph(_c) ( iswctype(_c,_PUNCT|_ALPHA|_DIGIT) )
+#define iswcntrl(_c) ( iswctype(_c,_CONTROL) )
+#define iswascii(_c) ( (unsigned)(_c) < 0x80 )
+
+#define isleadbyte(_c) (_pctype[(unsigned char)(_c)] & _LEADBYTE)
+
+#if !defined(_POSIX_)
+
+/* define structure for returning status information */
+
+#ifndef _INO_T_DEFINED
+
+typedef unsigned short _ino_t; /* i-node number (not used on DOS) */
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#define ino_t _ino_t
+#else /* ndef _NTSDK */
+typedef unsigned short ino_t;
+#endif /* _NTSDK */
+#endif
+
+#define _INO_T_DEFINED
+#endif
+
+
+#ifndef _DEV_T_DEFINED
+
+#ifdef _NTSDK
+typedef short _dev_t; /* device code */
+#else /* ndef _NTSDK */
+typedef unsigned int _dev_t; /* device code */
+#endif /* _NTSDK */
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#define dev_t _dev_t
+#else /* ndef _NTSDK */
+typedef unsigned int dev_t;
+#endif /* _NTSDK */
+#endif
+
+#define _DEV_T_DEFINED
+#endif
+
+#ifndef _OFF_T_DEFINED
+
+typedef long _off_t; /* file offset value */
+
+#if !__STDC__
+/* Non-ANSI name for compatibility */
+#ifdef _NTSDK
+#define off_t _off_t
+#else /* ndef _NTSDK */
+typedef long off_t;
+#endif /* _NTSDK */
+#endif
+
+#define _OFF_T_DEFINED
+#endif
+
+#ifndef _STAT_DEFINED
+
+struct _stat {
+ _dev_t st_dev;
+ _ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ _dev_t st_rdev;
+ _off_t st_size;
+ time_t st_atime;
+ time_t st_mtime;
+ time_t st_ctime;
+ };
+
+#if !__STDC__ && !defined(_NTSDK)
+
+/* Non-ANSI names for compatibility */
+
+struct stat {
+ _dev_t st_dev;
+ _ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ _dev_t st_rdev;
+ _off_t st_size;
+ time_t st_atime;
+ time_t st_mtime;
+ time_t st_ctime;
+ };
+
+#endif /* __STDC__ */
+
+#if _INTEGRAL_MAX_BITS >= 64
+struct _stati64 {
+ _dev_t st_dev;
+ _ino_t st_ino;
+ unsigned short st_mode;
+ short st_nlink;
+ short st_uid;
+ short st_gid;
+ _dev_t st_rdev;
+ __int64 st_size;
+ time_t st_atime;
+ time_t st_mtime;
+ time_t st_ctime;
+ };
+#endif
+
+#define _STAT_DEFINED
+#endif
+
+
+#ifndef _WSTAT_DEFINED
+
+/* also declared in stat.h */
+
+_CRTIMP int __cdecl _wstat(const wchar_t *, struct _stat *);
+
+#if _INTEGRAL_MAX_BITS >= 64
+_CRTIMP int __cdecl _wstati64(const wchar_t *, struct _stati64 *);
+#endif
+
+#define _WSTAT_DEFINED
+#endif
+
+#endif /* !_POSIX_ */
+
+
+#ifndef _WSTDIO_DEFINED
+
+/* also declared in stdio.h */
+
+#ifdef _POSIX_
+_CRTIMP FILE * __cdecl _wfsopen(const wchar_t *, const wchar_t *);
+#else
+_CRTIMP FILE * __cdecl _wfsopen(const wchar_t *, const wchar_t *, int);
+#endif
+
+_CRTIMP wint_t __cdecl fgetwc(FILE *);
+_CRTIMP wint_t __cdecl _fgetwchar(void);
+_CRTIMP wint_t __cdecl fputwc(wint_t, FILE *);
+_CRTIMP wint_t __cdecl _fputwchar(wint_t);
+_CRTIMP wint_t __cdecl getwc(FILE *);
+_CRTIMP wint_t __cdecl getwchar(void);
+_CRTIMP wint_t __cdecl putwc(wint_t, FILE *);
+_CRTIMP wint_t __cdecl putwchar(wint_t);
+_CRTIMP wint_t __cdecl ungetwc(wint_t, FILE *);
+
+_CRTIMP wchar_t * __cdecl fgetws(wchar_t *, int, FILE *);
+_CRTIMP int __cdecl fputws(const wchar_t *, FILE *);
+_CRTIMP wchar_t * __cdecl _getws(wchar_t *);
+_CRTIMP int __cdecl _putws(const wchar_t *);
+
+_CRTIMP int __cdecl fwprintf(FILE *, const wchar_t *, ...);
+_CRTIMP int __cdecl wprintf(const wchar_t *, ...);
+_CRTIMP int __cdecl _snwprintf(wchar_t *, size_t, const wchar_t *, ...);
+_CRTIMP int __cdecl swprintf(wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl vfwprintf(FILE *, const wchar_t *, va_list);
+_CRTIMP int __cdecl vwprintf(const wchar_t *, va_list);
+_CRTIMP int __cdecl _vsnwprintf(wchar_t *, size_t, const wchar_t *, va_list);
+_CRTIMP int __cdecl vswprintf(wchar_t *, const wchar_t *, va_list);
+_CRTIMP int __cdecl fwscanf(FILE *, const wchar_t *, ...);
+_CRTIMP int __cdecl swscanf(const wchar_t *, const wchar_t *, ...);
+_CRTIMP int __cdecl wscanf(const wchar_t *, ...);
+
+#define getwchar() fgetwc(stdin)
+#define putwchar(_c) fputwc((_c),stdout)
+#define getwc(_stm) fgetwc(_stm)
+#define putwc(_c,_stm) fputwc(_c,_stm)
+
+_CRTIMP FILE * __cdecl _wfdopen(int, const wchar_t *);
+_CRTIMP FILE * __cdecl _wfopen(const wchar_t *, const wchar_t *);
+_CRTIMP FILE * __cdecl _wfreopen(const wchar_t *, const wchar_t *, FILE *);
+_CRTIMP void __cdecl _wperror(const wchar_t *);
+_CRTIMP FILE * __cdecl _wpopen(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl _wremove(const wchar_t *);
+_CRTIMP wchar_t * __cdecl _wtempnam(const wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl _wtmpnam(wchar_t *);
+
+#define _WSTDIO_DEFINED
+#endif
+
+
+#ifndef _WSTDLIB_DEFINED
+
+/* also declared in stdlib.h */
+
+_CRTIMP wchar_t * __cdecl _itow (int, wchar_t *, int);
+_CRTIMP wchar_t * __cdecl _ltow (long, wchar_t *, int);
+_CRTIMP wchar_t * __cdecl _ultow (unsigned long, wchar_t *, int);
+_CRTIMP double __cdecl wcstod(const wchar_t *, wchar_t **);
+_CRTIMP long __cdecl wcstol(const wchar_t *, wchar_t **, int);
+_CRTIMP unsigned long __cdecl wcstoul(const wchar_t *, wchar_t **, int);
+_CRTIMP wchar_t * __cdecl _wgetenv(const wchar_t *);
+_CRTIMP int __cdecl _wsystem(const wchar_t *);
+_CRTIMP int __cdecl _wtoi(const wchar_t *);
+_CRTIMP long __cdecl _wtol(const wchar_t *);
+
+#define _WSTDLIB_DEFINED
+#endif
+
+#ifndef _POSIX_
+
+#ifndef _WSTDLIBP_DEFINED
+
+/* also declared in stdlib.h */
+
+_CRTIMP wchar_t * __cdecl _wfullpath(wchar_t *, const wchar_t *, size_t);
+_CRTIMP void __cdecl _wmakepath(wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *,
+ const wchar_t *);
+_CRTIMP void __cdecl _wperror(const wchar_t *);
+_CRTIMP int __cdecl _wputenv(const wchar_t *);
+_CRTIMP void __cdecl _wsearchenv(const wchar_t *, const wchar_t *, wchar_t *);
+_CRTIMP void __cdecl _wsplitpath(const wchar_t *, wchar_t *, wchar_t *, wchar_t *, wchar_t *);
+
+#define _WSTDLIBP_DEFINED
+#endif
+
+#endif /* _POSIX_ */
+
+
+#ifndef _WSTRING_DEFINED
+
+/* also declared in string.h */
+
+_CRTIMP wchar_t * __cdecl wcscat(wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcschr(const wchar_t *, wchar_t);
+_CRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcscpy(wchar_t *, const wchar_t *);
+_CRTIMP size_t __cdecl wcscspn(const wchar_t *, const wchar_t *);
+_CRTIMP size_t __cdecl wcslen(const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcsncat(wchar_t *, const wchar_t *, size_t);
+_CRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t);
+_CRTIMP wchar_t * __cdecl wcsncpy(wchar_t *, const wchar_t *, size_t);
+_CRTIMP wchar_t * __cdecl wcspbrk(const wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcsrchr(const wchar_t *, wchar_t);
+_CRTIMP size_t __cdecl wcsspn(const wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcsstr(const wchar_t *, const wchar_t *);
+_CRTIMP wchar_t * __cdecl wcstok(wchar_t *, const wchar_t *);
+
+_CRTIMP wchar_t * __cdecl _wcsdup(const wchar_t *);
+_CRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl _wcsnicmp(const wchar_t *, const wchar_t *, size_t);
+_CRTIMP wchar_t * __cdecl _wcsnset(wchar_t *, wchar_t, size_t);
+_CRTIMP wchar_t * __cdecl _wcsrev(wchar_t *);
+_CRTIMP wchar_t * __cdecl _wcsset(wchar_t *, wchar_t);
+
+_CRTIMP wchar_t * __cdecl _wcslwr(wchar_t *);
+_CRTIMP wchar_t * __cdecl _wcsupr(wchar_t *);
+_CRTIMP size_t __cdecl wcsxfrm(wchar_t *, const wchar_t *, size_t);
+_CRTIMP int __cdecl wcscoll(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl _wcsicoll(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl _wcsncoll(const wchar_t *, const wchar_t *, size_t);
+_CRTIMP int __cdecl _wcsnicoll(const wchar_t *, const wchar_t *, size_t);
+
+/* Old names */
+#define wcswcs wcsstr
+
+#if !__STDC__
+
+#ifdef _NTSDK
+
+/* Non-ANSI names for compatibility */
+#define wcsdup _wcsdup
+#define wcsicmp _wcsicmp
+#define wcsnicmp _wcsnicmp
+#define wcsnset _wcsnset
+#define wcsrev _wcsrev
+#define wcsset _wcsset
+#define wcslwr _wcslwr
+#define wcsupr _wcsupr
+#define wcsicoll _wcsicoll
+
+#else /* ndef _NTSDK */
+
+/* prototypes for oldnames.lib functions */
+_CRTIMP wchar_t * __cdecl wcsdup(const wchar_t *);
+_CRTIMP int __cdecl wcsicmp(const wchar_t *, const wchar_t *);
+_CRTIMP int __cdecl wcsnicmp(const wchar_t *, const wchar_t *, size_t);
+_CRTIMP wchar_t * __cdecl wcsnset(wchar_t *, wchar_t, size_t);
+_CRTIMP wchar_t * __cdecl wcsrev(wchar_t *);
+_CRTIMP wchar_t * __cdecl wcsset(wchar_t *, wchar_t);
+_CRTIMP wchar_t * __cdecl wcslwr(wchar_t *);
+_CRTIMP wchar_t * __cdecl wcsupr(wchar_t *);
+_CRTIMP int __cdecl wcsicoll(const wchar_t *, const wchar_t *);
+
+#endif /* ndef _NTSDK */
+
+#endif /* !__STDC__ */
+
+#define _WSTRING_DEFINED
+#endif
+
+#ifndef _TM_DEFINED
+struct tm {
+ int tm_sec; /* seconds after the minute - [0,59] */
+ int tm_min; /* minutes after the hour - [0,59] */
+ int tm_hour; /* hours since midnight - [0,23] */
+ int tm_mday; /* day of the month - [1,31] */
+ int tm_mon; /* months since January - [0,11] */
+ int tm_year; /* years since 1900 */
+ int tm_wday; /* days since Sunday - [0,6] */
+ int tm_yday; /* days since January 1 - [0,365] */
+ int tm_isdst; /* daylight savings time flag */
+ };
+#define _TM_DEFINED
+#endif
+
+#ifndef _WTIME_DEFINED
+
+/* also declared in time.h */
+
+_CRTIMP wchar_t * __cdecl _wasctime(const struct tm *);
+_CRTIMP wchar_t * __cdecl _wctime(const time_t *);
+_CRTIMP size_t __cdecl wcsftime(wchar_t *, size_t, const wchar_t *,
+ const struct tm *);
+_CRTIMP wchar_t * __cdecl _wstrdate(wchar_t *);
+_CRTIMP wchar_t * __cdecl _wstrtime(wchar_t *);
+
+#define _WTIME_DEFINED
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif /* _MSC_VER */
+
+#endif /* _INC_WCHAR */
+
+#endif /* !defined(_M_MPPC) && !defined(_M_M68K) */
+
diff --git a/public/sdk/inc/crt/wcstr.h b/public/sdk/inc/crt/wcstr.h
new file mode 100644
index 000000000..41543e747
--- /dev/null
+++ b/public/sdk/inc/crt/wcstr.h
@@ -0,0 +1,32 @@
+/***
+* wcstr.h - declarations for wide character string manipulation functions
+*
+* Copyright (c) 1985-1992, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file contains the function declarations for the string
+* manipulation functions.
+* [OBSOLETE][UNICODE/ISO]
+*
+* WARNING: OBSOLETE FILE: use wchar.h/stdlib.h instead!!!
+* This file provided only for short-term compatibility. It will
+* disappear in the near future after a brief transitional period.
+*
+****/
+
+#ifndef _INC_WCSTR
+
+#include <wchar.h>
+#define wcswcs wcsstr
+
+#define _wcscmpi _wcsicmp
+#if !__STDC__
+#define wcscmpi _wcsicmp
+#endif
+
+/* from stdlib.h */
+int _CRTAPI1 wctomb(char *, wchar_t);
+size_t _CRTAPI1 wcstombs(char*, const wchar_t *, size_t);
+
+#define _INC_WCSTR
+#endif /* _INC_WCSTR */
diff --git a/public/sdk/inc/ctl3d.h b/public/sdk/inc/ctl3d.h
new file mode 100644
index 000000000..ebdbdfeb9
--- /dev/null
+++ b/public/sdk/inc/ctl3d.h
@@ -0,0 +1,95 @@
+/*-----------------------------------------------------------------------
+| CTL3D.DLL
+|
+| Adds 3d effects to Windows controls
+|
+| See ctl3d.doc for info
+|
+-----------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+BOOL WINAPI Ctl3dSubclassDlg(HWND, WORD);
+BOOL WINAPI Ctl3dSubclassDlgEx(HWND, DWORD);
+
+WORD WINAPI Ctl3dGetVer(void);
+BOOL WINAPI Ctl3dEnabled(void);
+
+HBRUSH WINAPI Ctl3dCtlColor(HDC, LONG); // ARCHAIC, use Ctl3dCtlColorEx
+HBRUSH WINAPI Ctl3dCtlColorEx(UINT wm, WPARAM wParam, LPARAM lParam);
+
+BOOL WINAPI Ctl3dColorChange(void);
+
+BOOL WINAPI Ctl3dSubclassCtl(HWND);
+BOOL WINAPI Ctl3dSubclassCtlEx(HWND, int);
+BOOL WINAPI Ctl3dUnsubclassCtl(HWND);
+
+LONG WINAPI Ctl3dDlgFramePaint(HWND, UINT, WPARAM, LPARAM);
+
+BOOL WINAPI Ctl3dAutoSubclass(HINSTANCE);
+BOOL WINAPI Ctl3dAutoSubclassEx(HINSTANCE, DWORD);
+BOOL WINAPI Ctl3dIsAutoSubclass(VOID);
+BOOL WINAPI Ctl3dUnAutoSubclass(VOID);
+
+BOOL WINAPI Ctl3dRegister(HINSTANCE);
+BOOL WINAPI Ctl3dUnregister(HINSTANCE);
+
+//begin DBCS: far east short cut key support
+VOID WINAPI Ctl3dWinIniChange(void);
+//end DBCS
+
+/* Ctl3dAutoSubclassEx flags */
+#define CTL3D_SUBCLASS_DYNCREATE 0x0001
+#define CTL3D_NOSUBCLASS_DYNCREATE 0x0002
+
+/* Ctl3d Control ID */
+#define CTL3D_BUTTON_CTL 0
+#define CTL3D_LISTBOX_CTL 1
+#define CTL3D_EDIT_CTL 2
+#define CTL3D_COMBO_CTL 3
+#define CTL3D_STATIC_CTL 4
+
+/* Ctl3dSubclassDlg3d flags */
+#define CTL3D_BUTTONS 0x0001
+#define CTL3D_LISTBOXES 0x0002
+#define CTL3D_EDITS 0x0004
+#define CTL3D_COMBOS 0x0008
+#define CTL3D_STATICTEXTS 0x0010
+#define CTL3D_STATICFRAMES 0x0020
+
+#define CTL3D_NODLGWINDOW 0x00010000
+#define CTL3D_ALL 0xffff
+
+#define WM_DLGBORDER (WM_USER+3567)
+/* WM_DLGBORDER *(int FAR *)lParam return codes */
+#define CTL3D_NOBORDER 0
+#define CTL3D_BORDER 1
+
+#define WM_DLGSUBCLASS (WM_USER+3568)
+/* WM_DLGSUBCLASS *(int FAR *)lParam return codes */
+#define CTL3D_NOSUBCLASS 0
+#define CTL3D_SUBCLASS 1
+
+#define CTLMSGOFFSET 3569
+#ifdef WIN32
+#define CTL3D_CTLCOLORMSGBOX (WM_USER+CTLMSGOFFSET)
+#define CTL3D_CTLCOLOREDIT (WM_USER+CTLMSGOFFSET+1)
+#define CTL3D_CTLCOLORLISTBOX (WM_USER+CTLMSGOFFSET+2)
+#define CTL3D_CTLCOLORBTN (WM_USER+CTLMSGOFFSET+3)
+#define CTL3D_CTLCOLORSCROLLBAR (WM_USER+CTLMSGOFFSET+4)
+#define CTL3D_CTLCOLORSTATIC (WM_USER+CTLMSGOFFSET+5)
+#define CTL3D_CTLCOLORDLG (WM_USER+CTLMSGOFFSET+6)
+#else
+#define CTL3D_CTLCOLOR (WM_USER+CTLMSGOFFSET)
+#endif
+
+
+/* Resource ID for 3dcheck.bmp (for .lib version of ctl3d) */
+#define CTL3D_3DCHECK 26567
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/public/sdk/inc/custcntl.h b/public/sdk/inc/custcntl.h
new file mode 100644
index 000000000..59a162dfd
--- /dev/null
+++ b/public/sdk/inc/custcntl.h
@@ -0,0 +1,208 @@
+/*****************************************************************************\
+* *
+* custcntl.h - Custom Control Library header file *
+* *
+* Copyright (c) 1992-1996, Microsoft Corp. All rights reserved *
+* *
+\*****************************************************************************/
+
+#ifndef _INC_CUSTCNTL
+#define _INC_CUSTCNTL
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+
+/*
+ * General size defines.
+ */
+#define CCHCCCLASS 32 // Max chars in a class name.
+#define CCHCCDESC 32 // Max chars in a control description.
+#define CCHCCTEXT 256 // Max chars in a text field.
+
+
+/*
+ * CCSTYLE - Custom Control Style structure. This structure is passed
+ * tp the Custom Control Style function when the user wants to edit the
+ * styles of the custom control.
+ */
+typedef struct tagCCSTYLEA {
+ DWORD flStyle; // Style of the control.
+ DWORD flExtStyle; // Extended style of the control.
+ CHAR szText[CCHCCTEXT]; // Text of the control.
+ LANGID lgid; // Language Id of the control's dialog.
+ WORD wReserved1; // Reserved value. Do not change.
+} CCSTYLEA, *LPCCSTYLEA;
+
+typedef struct tagCCSTYLEW {
+ DWORD flStyle; // Style of the control.
+ DWORD flExtStyle; // Extended style of the control.
+ WCHAR szText[CCHCCTEXT]; // Text of the control.
+ LANGID lgid; // Language Id of the control's dialog.
+ WORD wReserved1; // Reserved value. Do not change.
+} CCSTYLEW, *LPCCSTYLEW;
+
+#ifdef UNICODE
+#define CCSTYLE CCSTYLEW
+#define LPCCSTYLE LPCCSTYLEW
+#else
+#define CCSTYLE CCSTYLEA
+#define LPCCSTYLE LPCCSTYLEA
+#endif // UNICODE
+
+
+/*
+ * The Style function prototype. This will be called when the user
+ * wants to edit the styles of a custom control. It should display a
+ * dialog to edit the styles, update the styles in the pccs structure,
+ * then return TRUE for success. If an error occurs or the user
+ * cancels the dialog, FALSE should be returned.
+ */
+typedef BOOL (CALLBACK* LPFNCCSTYLEA)(HWND hwndParent, LPCCSTYLEA pccs);
+typedef BOOL (CALLBACK* LPFNCCSTYLEW)(HWND hwndParent, LPCCSTYLEW pccs);
+
+#ifdef UNICODE
+#define LPFNCCSTYLE LPFNCCSTYLEW
+#else
+#define LPFNCCSTYLE LPFNCCSTYLEA
+#endif // UNICODE
+
+
+/*
+ * The SizeToText function prototype. This will be called if the user
+ * requests that the custom control be sized to fit it's text. It
+ * should use the specified styles, text and font to determine how
+ * large the control must be to accommodate the text, then return this
+ * value in pixels. The value of -1 should be returned if an error
+ * occurs.
+ */
+typedef INT (CALLBACK* LPFNCCSIZETOTEXTA)(DWORD flStyle, DWORD flExtStyle,
+ HFONT hfont, LPSTR pszText);
+typedef INT (CALLBACK* LPFNCCSIZETOTEXTW)(DWORD flStyle, DWORD flExtStyle,
+ HFONT hfont, LPWSTR pszText);
+
+#ifdef UNICODE
+#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTW
+#else
+#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTA
+#endif // UNICODE
+
+
+/*
+ * CCSTYLEFLAG - Custom Control Style Flag structure. A table of these
+ * structures is used to specify the define strings that match the
+ * different styles for a custom control.
+ */
+typedef struct tagCCSTYLEFLAGA {
+ DWORD flStyle; // Style bits for this style.
+ DWORD flStyleMask; // Mask for the style. Can be zero.
+ LPSTR pszStyle; // Points to the style define string.
+} CCSTYLEFLAGA, *LPCCSTYLEFLAGA;
+
+typedef struct tagCCSTYLEFLAGW {
+ DWORD flStyle; // Style bits for this style.
+ DWORD flStyleMask; // Mask for the style. Can be zero.
+ LPWSTR pszStyle; // Points to the style define string.
+} CCSTYLEFLAGW, *LPCCSTYLEFLAGW;
+
+#ifdef UNICODE
+#define CCSTYLEFLAG CCSTYLEFLAGW
+#define LPCCSTYLEFLAG LPCCSTYLEFLAGW
+#else
+#define CCSTYLEFLAG CCSTYLEFLAGA
+#define LPCCSTYLEFLAG LPCCSTYLEFLAGA
+#endif // UNICODE
+
+
+/*
+ * CCF_* defines. These flags are used for the flOptions field of the
+ * CCINFO structure, and describe some basic characteristics of the
+ * custom control.
+ */
+#define CCF_NOTEXT 0x00000001 // Control cannot have text.
+
+
+/*
+ * CCINFO - Custom Control Info structure. This structure provides
+ * the dialog editor with information about the control types that the
+ * DLL supports.
+ */
+typedef struct tagCCINFOA {
+ CHAR szClass[CCHCCCLASS]; // Class name for the control.
+ DWORD flOptions; // Option flags (CCF_* defines).
+ CHAR szDesc[CCHCCDESC]; // Short, descriptive text for the ctrl.
+ UINT cxDefault; // Default width (in dialog units).
+ UINT cyDefault; // Default height (in dialog units).
+ DWORD flStyleDefault; // Default style (WS_CHILD | WS_VISIBLE).
+ DWORD flExtStyleDefault; // Default extended style.
+ DWORD flCtrlTypeMask; // Mask for control type styles.
+ CHAR szTextDefault[CCHCCTEXT]; // Default text.
+ INT cStyleFlags; // Entries in the following style table.
+ LPCCSTYLEFLAGA aStyleFlags; // Points to style flag table.
+ LPFNCCSTYLEA lpfnStyle; // Pointer to the Styles function.
+ LPFNCCSIZETOTEXTA lpfnSizeToText; // Pointer to the SizeToText function.
+ DWORD dwReserved1; // Reserved. Must be zero.
+ DWORD dwReserved2; // Reserved. Must be zero.
+} CCINFOA, *LPCCINFOA;
+
+typedef struct tagCCINFOW {
+ WCHAR szClass[CCHCCCLASS]; // Class name for the control.
+ DWORD flOptions; // Option flags (CCF_* defines).
+ WCHAR szDesc[CCHCCDESC]; // Short, descriptive text for the ctrl.
+ UINT cxDefault; // Default width (in dialog units).
+ UINT cyDefault; // Default height (in dialog units).
+ DWORD flStyleDefault; // Default style (WS_CHILD | WS_VISIBLE).
+ DWORD flExtStyleDefault; // Default extended style.
+ DWORD flCtrlTypeMask; // Mask for control type styles.
+ INT cStyleFlags; // Entries in the following style table.
+ LPCCSTYLEFLAGW aStyleFlags; // Points to style flag table.
+ WCHAR szTextDefault[CCHCCTEXT]; // Default text.
+ LPFNCCSTYLEW lpfnStyle; // Pointer to the Styles function.
+ LPFNCCSIZETOTEXTW lpfnSizeToText; // Pointer to the SizeToText function.
+ DWORD dwReserved1; // Reserved. Must be zero.
+ DWORD dwReserved2; // Reserved. Must be zero.
+} CCINFOW, *LPCCINFOW;
+
+#ifdef UNICODE
+#define CCINFO CCINFOW
+#define LPCCINFO LPCCINFOW
+#else
+#define CCINFO CCINFOA
+#define LPCCINFO LPCCINFOA
+#endif // UNICODE
+
+
+/*
+ * The Info function prototype. This function is the first one
+ * called by the dialog editor. Custom control DLL's must export
+ * one or both of the following functions by name (the ordinal
+ * used for the export does not matter):
+ *
+ * UINT CALLBACK CustomControlInfoA(LPCCINFOA acci)
+ * UINT CALLBACK CustomControlInfoW(LPCCINFOW acci)
+ *
+ * This function must return the number of controls that the DLL
+ * supports, or NULL if an error occurs. If the acci parameter is
+ * not NULL, it will be pointing to an array of CCINFOA or CCINFOW
+ * structures that should be filled in with the information about
+ * the different control types supported by the DLL.
+ *
+ * If both functions are present, the CustomControlInfoW function
+ * will be used by the dialog editor.
+ */
+typedef UINT (CALLBACK* LPFNCCINFOA)(LPCCINFOA acci);
+typedef UINT (CALLBACK* LPFNCCINFOW)(LPCCINFOW acci);
+
+#ifdef UNICODE
+#define LPFNCCINFO LPFNCCINFOW
+#else
+#define LPFNCCINFO LPFNCCINFOA
+#endif // UNICODE
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _INC_CUSTCNTL */
diff --git a/public/sdk/inc/dadvhr.h b/public/sdk/inc/dadvhr.h
new file mode 100644
index 000000000..6cbfd31ba
--- /dev/null
+++ b/public/sdk/inc/dadvhr.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: dadvhr.h
+//
+// Contents: Replacement for dadvhr.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/datobj.h b/public/sdk/inc/datobj.h
new file mode 100644
index 000000000..44773769d
--- /dev/null
+++ b/public/sdk/inc/datobj.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: datobj.h
+//
+// Contents: Replacement for datobj.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/dbcmdtre.hxx b/public/sdk/inc/dbcmdtre.hxx
new file mode 100644
index 000000000..1d88a32dd
--- /dev/null
+++ b/public/sdk/inc/dbcmdtre.hxx
@@ -0,0 +1,3771 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1994.
+//
+// File: dbcmdbas.hxx
+//
+// Contents: Helper classes for dealing with DBCOMMANDTREE and DBID
+// structures.
+//
+// Classes: CDbCmdTreeNode
+// CDbColumnNode
+// CDbScalarValue
+// CDbTableId
+// CDbSelectNode
+// CDbListAnchor
+// CDbProjectListAnchor
+// CDbProjectNode
+// CDbSortListAnchor
+// CDbSortListElement
+// CDbSortNode
+// CDbRestriction
+// CDbNodeRestriction
+// CDbNotRestriction
+// CDbPropBaseRestriction
+// CDbPropertyRestriction
+// CDbVectorRestriction
+// CDbContentBaseRestriction
+// CDbNatLangRestriction
+// CDbContentRestriction
+// CDbTopNode
+// CDbColId
+// CDbDataType
+// CDbColDef
+// CDbGuidName
+// CDbGuidPropid
+// CDbText
+// CDbContent
+// CDbSortInfo
+// CDbGroupInfo
+// CDbColumns
+// CDbSortSet
+//
+// Functions: CastToStorageVariant
+//
+// History: 6-06-95 srikants Created
+//
+//----------------------------------------------------------------------------
+
+
+#ifndef __DBCMDTRE_HXX__
+#define __DBCMDTRE_HXX__
+
+#include <oledb.h>
+#include <sstream.hxx>
+#include <stgvar.hxx>
+
+
+
+//+---------------------------------------------------------------------------
+//
+// Function: CastToStorageVariant
+//
+// Synopsis: To treat a variant as a CStorageVariant. Because CStorageVariant
+// derives from PROPVARIANT in a "protected" fashion, we cannot
+// directly typecast a PROPVARIANT * to a CStorageVariant *
+//
+// Arguments: [varnt] - The variant that must be type casted.
+//
+// Returns: A pointer to varnt as a CStorageVariant.
+//
+// History: 6-06-95 srikants Created
+//
+// Notes: There are two overloaded implementations, one to convert
+// a reference to const to a pointer to const.
+//
+//----------------------------------------------------------------------------
+
+inline
+CStorageVariant * CastToStorageVariant( VARIANT & varnt )
+{
+ return (CStorageVariant *) ((void *) &varnt);
+}
+
+inline
+CStorageVariant const * CastToStorageVariant( VARIANT const & varnt )
+{
+ return (CStorageVariant *) ((void *) &varnt);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbColId
+//
+// Purpose: Wrapper for DBID
+//
+// Interface: Marshall --
+// UnMarshall --
+// Get --
+//
+// History: 6-21-95 srikants Created
+//
+// Notes: This class does not completely handle the simple name
+// and pointer to guid forms of DBID.
+//
+//----------------------------------------------------------------------------
+
+class CDbColId : public DBID
+{
+
+public:
+
+ CDbColId();
+
+ CDbColId( GUID const & guidPropSet, PROPID pidProperty )
+ {
+ eKind = DBKIND_GUID_PROPID;
+ guid = guidPropSet;
+ ulPropid = pidProperty;
+ }
+
+ CDbColId( GUID const & guidPropSet, WCHAR const * wcsProperty );
+
+ CDbColId( DBID const & propSpec );
+
+ CDbColId( CDbColId const & propSpec );
+
+ CDbColId( PROPID pidProperty )
+ {
+ eKind = DBKIND_PROPID;
+ ulPropid = pidProperty;
+ }
+
+ CDbColId( WCHAR const * wcsProperty )
+ {
+ eKind = DBKIND_NAME;
+ pwszName = 0;
+
+ SetProperty( wcsProperty );
+ }
+
+ ~CDbColId()
+ {
+ Cleanup();
+ }
+
+ void Marshall( PSerStream & stm ) const;
+ BOOL UnMarshall( PDeSerStream & stm );
+
+ DBID & Get() const { return (DBID &)*this; }
+
+ BOOL Copy( DBID const & rhs );
+
+ CDbColId & operator=( CDbColId const & Property );
+
+ //
+ // Comparators
+ //
+ int operator==( CDbColId const & prop ) const;
+ int operator!=( CDbColId const & prop ) const
+ {
+ return !operator==(prop);
+ }
+
+ //
+ // Member variable access
+ //
+ void SetPropSet( GUID const & guidPropSet )
+ {
+ if ( !_IsPGuidUsed() )
+ {
+ guid = guidPropSet;
+ if ( DBKIND_PROPID == eKind )
+ {
+ eKind = DBKIND_GUID_PROPID;
+ }
+ else if ( DBKIND_NAME == eKind )
+ {
+ eKind = DBKIND_GUID_NAME;
+ }
+ }
+ else
+ *pguid = guidPropSet;
+
+ }
+
+ GUID const & GetPropSet() const
+ {
+ if ( !_IsPGuidUsed() )
+ return guid;
+ else
+ return *pguid;
+ }
+
+ void SetProperty( PROPID pidProperty )
+ {
+ Cleanup();
+ eKind = DBKIND_GUID_PROPID;
+ ulPropid = pidProperty;
+ }
+
+ BOOL SetProperty( WCHAR const * wcsProperty );
+
+ WCHAR const * GetPropertyName() const
+ {
+// Win4Assert( IsPropertyName() );
+ return pwszName;
+ }
+
+ WCHAR * GetPropertyName()
+ {
+// Win4Assert( IsPropertyName() );
+ return pwszName;
+ }
+
+ PROPID GetPropertyPropid() const
+ {
+// Win4Assert( IsPropertyPropid() );
+ return ulPropid;
+ }
+
+ PROPSPEC GetPropSpec() const
+ {
+ return( *(PROPSPEC *)(void *)&eKind );
+ }
+
+
+ BOOL IsPropertyName() const
+ {
+ return DBKIND_GUID_NAME == eKind ||
+ DBKIND_PGUID_NAME == eKind ||
+ DBKIND_NAME == eKind;
+ }
+
+ BOOL IsPropertyPropid() const
+ {
+ return DBKIND_PROPID == eKind ||
+ DBKIND_GUID_PROPID == eKind ||
+ DBKIND_PGUID_PROPID == eKind;
+ }
+
+ BOOL IsPropSetPresent() const
+ {
+ return (DBKIND_PROPID != eKind) && (DBKIND_NAME != eKind);
+ }
+
+ BOOL IsValid() const
+ {
+ if ( !_IsValidKind() )
+ return FALSE;
+
+ if ( DBKIND_GUID_PROPID == eKind || DBKIND_PROPID == eKind ||
+ DBKIND_GUID == eKind )
+ {
+ return TRUE;
+ }
+ else if ( DBKIND_GUID_NAME == eKind || DBKIND_NAME == eKind )
+ {
+ return 0 != pwszName;
+ }
+ else if ( DBKIND_PGUID_PROPID == eKind )
+ {
+ return 0 != pguid;
+ }
+ else
+ {
+// Win4Assert( DBKIND_PGUID_NAME == eKind );
+ return 0 != pguid && 0 != pwszName;
+ }
+ }
+
+ DBID * CastToStruct()
+ {
+ return (DBID *) this;
+ }
+
+ DBID const * CastToStruct() const
+ {
+ return (DBID const *) this;
+ }
+
+ void Cleanup();
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size );
+ inline void * operator new( size_t size, void * p );
+ void operator delete( void * p );
+
+
+private:
+
+ BOOL _IsPGuidUsed() const
+ {
+ return DBKIND_PGUID_NAME == eKind || DBKIND_PGUID_PROPID == eKind;
+ }
+
+ BOOL _IsValidKind() const
+ {
+ return eKind >= DBKIND_GUID_NAME && eKind <= DBKIND_GUID;
+ }
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Method: CDbColId::operator new
+//
+// Synopsis: Command tree node allocation via IMalloc::Alloc
+//
+// Arguments: [size] -
+//
+// History: 6-06-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+inline void * CDbColId::operator new( size_t size )
+{
+ void * p = CoTaskMemAlloc( size );
+
+ return( p );
+}
+
+//+---------------------------------------------------------------------------
+//
+// Method: CDbColId::operator new
+//
+// Synopsis: null allocator
+//
+// Arguments: [size] -
+// [p] -
+//
+// History: 6-06-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+inline void * CDbColId::operator new( size_t size, void * p )
+{
+ return( p );
+}
+
+//+---------------------------------------------------------------------------
+//
+// Method: CDbColId::operator delete
+//
+// Synopsis: CDbColId deallocation via IMalloc::Free
+//
+// Arguments: [p] -
+//
+// History: 6-06-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+inline void CDbColId::operator delete( void * p )
+{
+ if ( p )
+ CoTaskMemFree( p );
+}
+
+
+
+#if 0
+
+class CXXXX : public XXXX
+{
+
+public:
+
+ ~CXXX();
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size )
+ {
+ void * p = CoTaskMemAlloc( size );
+ return( p );
+ }
+
+ inline void * operator new( size_t size, void * p )
+ {
+ return( p );
+ }
+
+ void operator delete( void * p )
+ {
+ if ( p )
+ CoTaskMemFree( p );
+ }
+
+ void Marshall( PSerStream & stm ) const;
+ BOOL UnMarshall( PDeSerStream & stm );
+
+ BOOL IsValid() const
+ {
+ return TRUE;
+ }
+
+private:
+
+};
+
+#endif // 0
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbCmdTreeNode
+//
+// Purpose: Basic DBCOMMANDTREE node
+//
+// History: 6-06-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbCmdTreeNode : protected DBCOMMANDTREE
+{
+
+ // BUGBUG - needed to access AppendChild. Consider having a base class
+ // for projectlist element nodes
+ friend class CDbListAnchor;
+
+public:
+
+ //
+ // Constructor and Destructor
+ //
+ CDbCmdTreeNode( DBCOMMANDOP opVal = DBOP_DEFAULT,
+ WORD eType = DBVALUEKIND_EMPTY )
+ {
+ RtlZeroMemory( this, sizeof(CDbCmdTreeNode) );
+ op = opVal;
+ wKind = eType;
+//
+// pctFirstChild = pctNextSibling = 0;
+// This assignment is not needed because we have already initialized
+// the whole structure with 0s.
+//
+ }
+
+ ~CDbCmdTreeNode();
+
+ DBCOMMANDOP GetCommandType() const { return op; }
+
+ DBVALUEKIND GetValueType() const { return wKind; }
+
+ CDbCmdTreeNode * GetFirstChild() const
+ {
+ return (CDbCmdTreeNode *) pctFirstChild;
+ }
+
+ CDbCmdTreeNode * GetNextSibling() const
+ {
+ return (CDbCmdTreeNode *) pctNextSibling;
+ }
+
+ // BUGBUG - we should collapse these two calls into one
+ void SetOperatorError( SCODE scErr )
+ {
+ hrError = scErr;
+ }
+
+ void SetContextError( SCODE scErr )
+ {
+ hrError = scErr;
+ }
+
+ SCODE GetOperatorError( ) const { return hrError; }
+
+ SCODE GetContextError( ) const { return hrError; }
+
+ void FreeChildren()
+ {
+ if ( 0 != pctFirstChild )
+ {
+ delete pctFirstChild;
+ pctFirstChild = 0;
+ }
+ }
+
+ DBCOMMANDTREE * CastToStruct() const
+ {
+ return (DBCOMMANDTREE *)this;
+ }
+
+ static CDbCmdTreeNode * CastFromStruct( DBCOMMANDTREE * pNode )
+ {
+ return (CDbCmdTreeNode *) (pNode);
+ }
+
+ static CDbCmdTreeNode const * CastFromStruct( DBCOMMANDTREE const * pNode )
+ {
+ return (CDbCmdTreeNode const *) (pNode);
+ }
+
+ BOOL IsScalarNode() const
+ {
+ return DBOP_scalar_constant == op;
+ }
+
+ BOOL IsColumnName() const
+ {
+ return DBOP_column_name == op;
+ }
+
+ BOOL IsOpValid( DBCOMMANDOP opVal ) const
+ {
+ return op == opVal;
+ }
+
+ BOOL IsSelectNode() const
+ {
+ return DBOP_select == op;
+ }
+
+ BOOL IsProjectNode() const
+ {
+ return DBOP_project == op;
+ }
+
+ BOOL IsListAnchor() const
+ {
+ return DBOP_project_list_anchor == op ||
+ DBOP_sort_list_anchor == op;
+ }
+
+ //
+ // Cloning the tree
+ //
+ CDbCmdTreeNode * Clone( BOOL fCopyErrors = FALSE ) const;
+
+ void CDbCmdTreeNode::TransferNode( CDbCmdTreeNode *pNode );
+
+ //
+ // Serialization and DeSerialization
+ //
+ void Marshall( PSerStream & stm ) const;
+ BOOL UnMarshall( PDeSerStream & stm );
+
+ static CDbCmdTreeNode * UnMarshallTree( PDeSerStream & stm );
+
+ static void PutWString( PSerStream & stm, const WCHAR * pwszStr );
+ static WCHAR * GetWString( PDeSerStream & stm, BOOL & fSuccess );
+ static WCHAR * AllocAndCopyWString( const WCHAR * pSrc );
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size );
+ inline void * operator new( size_t size, void * p );
+ void operator delete( void * p );
+
+ //
+ // A NULL guid variable.
+ //
+ static const GUID guidNull; // NULL guid
+
+protected:
+
+ void CleanupDataValue();
+
+ void CleanupValue()
+ {
+ if ( DBVALUEKIND_EMPTY != wKind )
+ CleanupDataValue();
+ }
+
+ //
+ // Setting protected members
+ //
+
+ void SetCommandType( DBCOMMANDOP opVal )
+ {
+ op = opVal;
+ }
+
+ void SetValueType( WORD wKindVal )
+ {
+ wKind = wKindVal;
+ }
+
+ //
+ // Manipulating the tree.
+ //
+ void AppendChild( CDbCmdTreeNode *pChild );
+ void InsertChild( CDbCmdTreeNode *pChild );
+
+ void AppendSibling( CDbCmdTreeNode *pSibling );
+ void InsertSibling( CDbCmdTreeNode *pSibling )
+ {
+// Win4Assert( 0 == pSibling->pctNextSibling );
+ pSibling->pctNextSibling = pctNextSibling;
+ pctNextSibling = pSibling;
+ }
+
+ CDbCmdTreeNode * RemoveFirstChild( );
+
+private:
+
+ //
+ // To accidentally prevent someone from creating copy constructors
+ //
+ CDbCmdTreeNode( const CDbCmdTreeNode & rhs );
+ CDbCmdTreeNode & operator=( const CDbCmdTreeNode & rhs );
+
+ static unsigned SizeInBytes( const WCHAR * pwszStr )
+ {
+ if ( 0 != pwszStr )
+ {
+ return (wcslen( pwszStr )+1)*sizeof(WCHAR);
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Method: CDbCmdTreeNode::operator new
+//
+// Synopsis: Command tree node allocation via IMalloc::Alloc
+//
+// Arguments: [size] -
+//
+// History: 6-06-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+inline void * CDbCmdTreeNode::operator new( size_t size )
+{
+ void * p = CoTaskMemAlloc( size );
+
+ return( p );
+}
+
+//+---------------------------------------------------------------------------
+//
+// Method: CDbCmdTreeNode::operator new
+//
+// Synopsis: null allocator
+//
+// Arguments: [size] -
+// [p] -
+//
+// History: 6-06-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+inline void * CDbCmdTreeNode::operator new( size_t size, void * p )
+{
+ return( p );
+}
+
+//+---------------------------------------------------------------------------
+//
+// Method: CDbCmdTreeNode::operator delete
+//
+// Synopsis: Command tree node deallocation via IMalloc::Free
+//
+// Arguments: [p] -
+//
+// History: 6-06-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+inline void CDbCmdTreeNode::operator delete( void * p )
+{
+ if ( p )
+ CoTaskMemFree( p );
+}
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbByGuid ()
+//
+// Purpose:
+//
+// History: 11-15-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbByGuid : public DBBYGUID
+{
+
+public:
+
+ CDbByGuid()
+ {
+ RtlZeroMemory( this, sizeof(DBBYGUID) );
+ }
+
+ CDbByGuid( GUID const & guidIn, ULONG cbInfoIn = 0, const BYTE * pbInfoIn = 0 )
+ {
+ guid = guidIn;
+ cbInfo = cbInfoIn;
+
+ if ( 0 != pbInfoIn && 0 != cbInfoIn )
+ {
+ pbInfo = (BYTE *) CoTaskMemAlloc( cbInfoIn );
+ if ( 0 != pbInfo )
+ {
+ RtlCopyMemory( pbInfo, pbInfoIn, cbInfoIn );
+ }
+ }
+ else
+ {
+ pbInfo = 0;
+ }
+ }
+
+ CDbByGuid( DBBYGUID const & rhs )
+ {
+ cbInfo = 0;
+ pbInfo = 0;
+
+ CDbByGuid const * pRhs = (CDbByGuid *) &rhs;
+ operator=( *pRhs );
+ }
+
+ ~CDbByGuid()
+ {
+ _Cleanup();
+ }
+
+ void Marshall( PSerStream & stm ) const;
+ BOOL UnMarshall( PDeSerStream & stm );
+
+ CDbByGuid & operator=( CDbByGuid const & rhs );
+
+ //
+ // Comparators
+ //
+ int operator==( CDbByGuid const & rhs ) const;
+ int operator!=( CDbByGuid const & rhs ) const
+ {
+ return !operator==(rhs);
+ }
+
+ //
+ // Member variable access
+ //
+ void SetPropSet( GUID const & guidIn )
+ {
+ guid = guidIn;
+ }
+
+ GUID const & GetGuid() const
+ {
+ return guid;
+ }
+
+ BOOL IsValid() const
+ {
+ return 0 != cbInfo ? 0 != pbInfo : TRUE;
+ }
+
+
+ DBBYGUID * CastToStruct()
+ {
+ return (DBBYGUID *) this;
+ }
+
+ DBBYGUID const * CastToStruct() const
+ {
+ return (DBBYGUID const *) this;
+ }
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size )
+ {
+ void * p = CoTaskMemAlloc( size );
+ return( p );
+ }
+
+ inline void * operator new( size_t size, void * p )
+ {
+ return( p );
+ }
+
+ void operator delete( void * p )
+ {
+ if ( p )
+ CoTaskMemFree( p );
+ }
+
+private:
+
+ void _Cleanup()
+ {
+ if ( 0 != pbInfo )
+ {
+ CoTaskMemFree( pbInfo );
+ pbInfo = 0;
+ }
+ }
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbParameter
+//
+// Purpose:
+//
+// History: 11-15-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbParameter : public DBPARAMETER
+{
+
+public:
+
+ CDbParameter()
+ {
+ RtlZeroMemory( this, sizeof(DBPARAMETER) );
+ }
+
+ CDbParameter( const DBPARAMETER & rhs )
+ {
+ RtlZeroMemory( this, sizeof(DBPARAMETER) );
+ Copy( rhs );
+ }
+
+ ~CDbParameter()
+ {
+ _Cleanup();
+ }
+
+ BOOL Copy( const DBPARAMETER & rhs );
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size )
+ {
+ void * p = CoTaskMemAlloc( size );
+ return( p );
+ }
+
+ inline void * operator new( size_t size, void * p )
+ {
+ return( p );
+ }
+
+ void operator delete( void * p )
+ {
+ if ( p )
+ CoTaskMemFree( p );
+ }
+
+ void Marshall( PSerStream & stm ) const;
+ BOOL UnMarshall( PDeSerStream & stm );
+
+ BOOL IsValid() const
+ {
+ return TRUE;
+ }
+
+ DBPARAMETER * CastToStruct()
+ {
+ return (DBPARAMETER *) this;
+ }
+
+ DBPARAMETER const * CastToStruct() const
+ {
+ return (DBPARAMETER const *) this;
+ }
+
+private:
+
+ void _Cleanup();
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbProperty
+//
+// Purpose:
+//
+// History: 11-15-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbProperty : public DBPROPERTY
+{
+
+public:
+
+ CDbProperty()
+ {
+ RtlZeroMemory( this, sizeof(DBPROPERTY) );
+ }
+
+ CDbProperty( const DBPROPERTY & rhs )
+ {
+ RtlZeroMemory( this, sizeof(DBPROPERTY) );
+ Copy( rhs );
+ }
+
+ BOOL Copy( const DBPROPERTY & rhs );
+
+ ~CDbProperty();
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size )
+ {
+ void * p = CoTaskMemAlloc( size );
+ return( p );
+ }
+
+ inline void * operator new( size_t size, void * p )
+ {
+ return( p );
+ }
+
+ void operator delete( void * p )
+ {
+ if ( p )
+ CoTaskMemFree( p );
+ }
+
+ void Marshall( PSerStream & stm ) const;
+ BOOL UnMarshall( PDeSerStream & stm );
+
+ BOOL IsValid() const
+ {
+ return TRUE;
+ }
+
+ DBPROPERTY * CastToStruct()
+ {
+ return (DBPROPERTY *) this;
+ }
+
+ DBPROPERTY const * CastToStruct() const
+ {
+ return (DBPROPERTY const *) this;
+ }
+
+private:
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbContentVector
+//
+// Purpose:
+//
+// History: 11-15-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbContentVector : public DBCONTENTVECTOR
+{
+
+public:
+
+ CDbContentVector( const CDbContentVector & rhs )
+ {
+ cWeights = 0;
+ prgulWeights = 0;
+ Copy( *(rhs.CastToStruct()) );
+ }
+
+ CDbContentVector( const DBCONTENTVECTOR & rhs )
+ {
+ cWeights = 0;
+ prgulWeights = 0;
+ Copy( rhs );
+ }
+
+ CDbContentVector( DWORD rank = 0 )
+ {
+ dwRankingMethod = rank;
+ cWeights = 0;
+ prgulWeights = 0;
+ }
+
+ ~CDbContentVector()
+ {
+ if ( 0 != prgulWeights )
+ {
+ CoTaskMemFree( prgulWeights );
+ prgulWeights = 0;
+ }
+ }
+
+ void SetRankMethod( DWORD rank )
+ {
+ dwRankingMethod = rank;
+ }
+
+ ULONG GetWeightCount()
+ {
+ return cWeights;
+ }
+
+ ULONG const * GetWeights()
+ {
+ return prgulWeights;
+ }
+
+ void SetWeights( ULONG c, ULONG const *pul )
+ {
+ if ( 0 != prgulWeights )
+ CoTaskMemFree( prgulWeights );
+
+ prgulWeights = 0;
+ cWeights = c;
+
+ if ( 0 != cWeights )
+ {
+ unsigned cb = cWeights * sizeof ULONG;
+
+ prgulWeights = (ULONG *) CoTaskMemAlloc( cb );
+
+ if ( 0 != prgulWeights )
+ memcpy( prgulWeights, pul, cb );
+ }
+ }
+
+ ULONG RankMethod() const
+ {
+ return (ULONG) dwRankingMethod;
+ }
+
+ DBCONTENTVECTOR * CastToStruct()
+ {
+ return (DBCONTENTVECTOR *) this;
+ }
+
+ DBCONTENTVECTOR const * CastToStruct() const
+ {
+ return (DBCONTENTVECTOR const *) this;
+ }
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size )
+ {
+ void * p = CoTaskMemAlloc( size );
+ return( p );
+ }
+
+ inline void * operator new( size_t size, void * p )
+ {
+ return( p );
+ }
+
+ void operator delete( void * p )
+ {
+ if ( p )
+ CoTaskMemFree( p );
+ }
+
+ BOOL IsValid() const
+ {
+ return ( ( 0 == cWeights ) ||
+ ( 0 != prgulWeights ) );
+ }
+
+ void Marshall( PSerStream & stm ) const;
+ BOOL UnMarshall( PDeSerStream & stm );
+
+private:
+
+ BOOL Copy( DBCONTENTVECTOR const & rhs )
+ {
+ dwRankingMethod = rhs.dwRankingMethod;
+ cWeights = rhs.cWeights;
+
+ SetWeights( rhs.cWeights, rhs.prgulWeights );
+
+ return TRUE;
+ }
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbNumeric
+//
+// Purpose:
+//
+// History: 11-16-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbNumeric : public DBNUMERIC
+{
+
+public:
+
+ CDbNumeric()
+ {
+ RtlZeroMemory( this, sizeof(DBNUMERIC) );
+ }
+
+ CDbNumeric( const DBNUMERIC & rhs )
+ {
+ RtlCopyMemory( this, &rhs, sizeof(DBNUMERIC) );
+ }
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size )
+ {
+ void * p = CoTaskMemAlloc( size );
+ return( p );
+ }
+
+ inline void * operator new( size_t size, void * p )
+ {
+ return( p );
+ }
+
+ void operator delete( void * p )
+ {
+ if ( p )
+ CoTaskMemFree( p );
+ }
+
+ BOOL IsValid() const
+ {
+ return TRUE;
+ }
+
+ //
+ // Serialization and DeSerialization.
+ //
+ void Marshall( PSerStream & stm ) const;
+ BOOL UnMarshall( PDeSerStream & stm );
+
+ DBNUMERIC * CastToStruct()
+ {
+ return (DBNUMERIC *) this;
+ }
+
+ DBNUMERIC const * CastToStruct() const
+ {
+ return (DBNUMERIC const *) this;
+ }
+
+private:
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbDataType
+//
+// Purpose:
+//
+// History: 6-21-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbDataType : public DBDATATYPE
+{
+
+public:
+
+ CDbDataType( DBDATATYPE & dataType ) : DBDATATYPE(dataType)
+ {
+
+ }
+
+ CDbDataType()
+ {
+ RtlZeroMemory(this,sizeof(CDbDataType) );
+ }
+
+ void Marshall( PSerStream & stm ) const;
+ BOOL UnMarshall( PDeSerStream & stm );
+
+ void Cleanup();
+
+ DBDATATYPE & Get() const { return (DBDATATYPE &)*this; }
+
+ BOOL Copy( DBDATATYPE const & rhs );
+
+ CDbDataType & operator=( CDbDataType & rhs );
+
+ DBDATATYPE * CastToStruct()
+ {
+ return (DBDATATYPE *) this;
+ }
+
+ DBDATATYPE const * CastToStruct() const
+ {
+ return (DBDATATYPE const *) this;
+ }
+
+private:
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Method: CDbDataType::Marshall
+//
+// Synopsis:
+//
+// Arguments: [stm] -
+//
+// Returns:
+//
+// Modifies:
+//
+// History: 6-21-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+inline
+void CDbDataType::Marshall( PSerStream & stm ) const
+{
+ //
+ // Serialize the "wKind" field first.
+ //
+ stm.PutULong( eKind );
+
+ switch ( eKind )
+ {
+ case DBDATATYPEKIND_BASETYPE:
+
+ stm.PutULong( DBBASETYPE.edbdt );
+ stm.PutULong( DBBASETYPE.cbMaxLength );
+ stm.PutULong( DBBASETYPE.cbPrecision );
+ stm.PutULong( DBBASETYPE.cbScale );
+
+ break;
+
+ case DBDATATYPEKIND_DOMAIN:
+
+ CDbCmdTreeNode::PutWString( stm, pwszDomainName );
+ break;
+
+ // default:
+ // Win4Assert( !"Illegal Case Statement" );
+ }
+}
+
+//+---------------------------------------------------------------------------
+//
+// Method: CDbDataType::UnMarshall
+//
+// Synopsis:
+//
+// Arguments: [stm] -
+//
+// Returns:
+//
+// Modifies:
+//
+// History: 6-21-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+inline
+BOOL CDbDataType::UnMarshall( PDeSerStream & stm )
+{
+ BOOL fSuccess = TRUE;
+
+ eKind = stm.GetULong();
+
+ switch ( eKind )
+ {
+ case DBDATATYPEKIND_BASETYPE:
+
+ DBBASETYPE.edbdt = stm.GetULong();
+ DBBASETYPE.cbMaxLength = stm.GetULong();
+ DBBASETYPE.cbPrecision = stm.GetULong();
+ DBBASETYPE.cbScale = stm.GetULong();
+
+ break;
+
+ case DBDATATYPEKIND_DOMAIN:
+
+ pwszDomainName =
+ CDbCmdTreeNode::GetWString( stm, fSuccess );
+ break;
+
+ //default:
+ // vqDebugOut(( DEB_ERROR, "Illegal DBDATATYPEKIND 0x%X\n",
+ // wKind ));
+ }
+
+ return fSuccess;
+}
+
+//+---------------------------------------------------------------------------
+//
+// Method: CDbDataType::Cleanup
+//
+// Synopsis:
+//
+// Returns:
+//
+// Modifies:
+//
+// History: 6-21-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+inline
+void CDbDataType::Cleanup()
+{
+ if ( DBDATATYPEKIND_DOMAIN == eKind &&
+ 0 != pwszDomainName )
+ {
+ CoTaskMemFree( pwszDomainName );
+ pwszDomainName = 0;
+ }
+}
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbColDef
+//
+// Purpose:
+//
+// History: 6-21-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbColDef // : protected DBCOLDEF
+{
+
+public:
+
+ CDbColDef( DBCOLDEF & colDef ) :
+ _dbColId( colDef.dbcid ),
+ _dbDataType( colDef.dbdt )
+ {
+
+ }
+
+ CDbColDef() : _dbColId(), _dbDataType()
+ {
+
+ }
+
+ void Cleanup()
+ {
+ _dbColId.Cleanup();
+ _dbDataType.Cleanup();
+ }
+
+ void Marshall( PSerStream & stm ) const
+ {
+ _dbColId.Marshall( stm );
+ _dbDataType.Marshall( stm );
+ }
+
+ BOOL UnMarshall( PDeSerStream & stm )
+ {
+ BOOL fSuccess = _dbColId.UnMarshall( stm );
+ if ( fSuccess )
+ {
+ fSuccess = _dbDataType.UnMarshall( stm );
+ }
+
+ return fSuccess;
+ }
+
+ BOOL Copy( CDbColDef const & rhs )
+ {
+ BOOL fSuccess = _dbColId.Copy( rhs._dbColId.Get() );
+ if ( fSuccess )
+ {
+ fSuccess = _dbDataType.Copy( rhs._dbDataType.Get() );
+ }
+
+ return fSuccess;
+ }
+
+ DBCOLDEF * CastToStruct() const
+ {
+ return (DBCOLDEF *) this;
+ }
+
+private:
+
+ CDbColDef & operator=( CDbColDef & rhs );
+
+ CDbColId _dbColId;
+ CDbDataType _dbDataType;
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbText
+//
+// Purpose: Wrapper class for DBTEXT
+//
+// History: 6-22-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbText : public DBTEXT
+{
+public:
+
+ CDbText( DBTEXT const & text )
+ {
+ Copy( text );
+ }
+
+ CDbText()
+ {
+ RtlZeroMemory( this,sizeof(CDbText) );
+ }
+
+ DBTEXT & GetText() const { return (DBTEXT &)*this; }
+
+ BOOL Copy( const DBTEXT & rhs )
+ {
+ BOOL fSuccess = TRUE;
+ RtlCopyMemory( this, &rhs, sizeof(DBTEXT) );
+ pwszText = 0;
+ if ( 0 != rhs.pwszText )
+ {
+ pwszText =
+ CDbCmdTreeNode::AllocAndCopyWString( rhs.pwszText );
+ fSuccess = 0 != pwszText;
+ }
+
+ return fSuccess;
+ }
+
+ void Marshall( PSerStream & stm ) const
+ {
+ stm.PutGUID( guidDialect );
+ CDbCmdTreeNode::PutWString( stm, pwszText );
+ stm.PutULong( ulErrorLocator );
+ stm.PutULong( ulTokenLength );
+ }
+
+ BOOL UnMarshall( PDeSerStream & stm )
+ {
+ BOOL fSuccess;
+ stm.GetGUID( guidDialect );
+ pwszText = CDbCmdTreeNode::GetWString( stm, fSuccess );
+ if( fSuccess )
+ {
+ ulErrorLocator = stm.GetULong();
+ ulTokenLength = stm.GetULong();
+ }
+
+ return fSuccess;
+ }
+
+ DBTEXT * CastToStruct()
+ {
+ return (DBTEXT *) this;
+ }
+
+ DBTEXT const * CastToStruct() const
+ {
+ return (DBTEXT const *) this;
+ }
+
+
+private:
+
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbContent
+//
+// Purpose: Wrapper for DBCONTENT
+//
+// History: 6-22-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbContent : public DBCONTENT
+{
+
+public:
+
+ CDbContent( DWORD fuzzyLevel, ULONG ulWeightIn,
+ LCID lcidIn, const WCHAR * pwszPhraseIn )
+ {
+ dwFuzzyLevel = fuzzyLevel;
+ ulWeight = ulWeightIn;
+ lcid = lcidIn;
+ pwszPhrase = 0;
+ SetPhrase( pwszPhraseIn );
+ }
+
+ CDbContent()
+ {
+ RtlZeroMemory( this, sizeof(CDbContent) );
+ }
+
+ DBCONTENT & GetDbContent() const { return (DBCONTENT &)*this; }
+
+ BOOL Copy( DBCONTENT const & rhs )
+ {
+ BOOL fSuccess = TRUE;
+ RtlCopyMemory( this, &rhs, sizeof(DBCONTENT) );
+ pwszPhrase = 0;
+ if ( 0 != rhs.pwszPhrase )
+ {
+ pwszPhrase =
+ CDbCmdTreeNode::AllocAndCopyWString( rhs.pwszPhrase );
+ fSuccess = 0 != pwszPhrase;
+ }
+
+ return fSuccess;
+ }
+
+ CDbContent ( DBCONTENT const & content )
+ {
+ Copy( content );
+ }
+
+ ~CDbContent()
+ {
+ if ( 0 != pwszPhrase )
+ {
+ CoTaskMemFree( pwszPhrase );
+ }
+ }
+
+ void Marshall( PSerStream & stm ) const
+ {
+ stm.PutULong( dwFuzzyLevel );
+ stm.PutULong( ulWeight );
+ stm.PutULong( lcid );
+ CDbCmdTreeNode::PutWString( stm, pwszPhrase );
+ }
+
+ BOOL UnMarshall( PDeSerStream & stm )
+ {
+ BOOL fSuccess = TRUE;
+
+ dwFuzzyLevel = stm.GetULong();
+ ulWeight = stm.GetULong( );
+ lcid = stm.GetULong();
+ pwszPhrase = CDbCmdTreeNode::GetWString( stm, fSuccess );
+
+ return fSuccess;
+ }
+
+ //
+ // Data member access and set methods.
+ //
+ WCHAR const * GetPhrase() const
+ {
+ return pwszPhrase;
+ }
+
+ BOOL SetPhrase( const WCHAR * pwszPhraseIn )
+ {
+ if ( 0 != pwszPhrase )
+ {
+ CoTaskMemFree( pwszPhrase );
+ }
+
+ pwszPhrase = CDbCmdTreeNode::AllocAndCopyWString( pwszPhraseIn );
+ return 0 != pwszPhrase;
+ }
+
+ LCID GetLocale() const { return lcid; }
+ void SetLocale( LCID lcidIn ) { lcid = lcidIn; }
+
+ ULONG GetWeight() const { return ulWeight; }
+ void SetWeight( ULONG weight ) { ulWeight = weight; }
+
+ DWORD GetFuzzyLevel() const { return dwFuzzyLevel; }
+ void SetFuzzyLevel( DWORD fuzzyLevel ) { dwFuzzyLevel = fuzzyLevel; }
+
+ void Cleanup()
+ {
+ if ( 0 != pwszPhrase )
+ {
+ CoTaskMemFree( pwszPhrase );
+ pwszPhrase = 0;
+ }
+ }
+
+ DBCONTENT * CastToStruct()
+ {
+ return (DBCONTENT *) this;
+ }
+
+ DBCONTENT const * CastToStruct() const
+ {
+ return (DBCONTENT const *) this;
+ }
+
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size )
+ {
+ void * p = CoTaskMemAlloc( size );
+ return( p );
+ }
+
+ inline void * operator new( size_t size, void * p )
+ {
+ return( p );
+ }
+
+ void operator delete( void * p )
+ {
+ if ( p )
+ CoTaskMemFree( p );
+ }
+
+ BOOL IsValid() const
+ {
+ return 0 != pwszPhrase;
+ }
+
+private:
+
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbSortInfo
+//
+// Purpose: WRAPPER for DBSORTINFO
+//
+// History: 6-22-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbSortInfo : public DBSORTINFO
+{
+public:
+
+ CDbSortInfo( BOOL fDescending = FALSE, LCID lcidIn = 0 )
+ {
+ fDesc = fDescending;
+ lcid = lcidIn;
+ }
+
+ CDbSortInfo( DBSORTINFO & sortInfo ) : DBSORTINFO(sortInfo) {}
+
+ BOOL Copy( DBSORTINFO const & rhs )
+ {
+ *(DBSORTINFO *)this = rhs;
+ return TRUE;
+ }
+
+ void Marshall( PSerStream & stm ) const
+ {
+ stm.PutULong( lcid );
+ stm.PutULong( fDesc );
+ }
+
+ BOOL UnMarshall( PDeSerStream & stm )
+ {
+ lcid = stm.GetULong();
+ fDesc = stm.GetULong();
+
+ return TRUE;
+ }
+
+ DBSORTINFO & Get() const { return (DBSORTINFO &)*this; }
+
+ LCID GetLocale() const { return lcid; }
+ BOOL GetDirection() const { return fDesc; }
+
+ void SetLocale(LCID lcidIn) { lcid = lcidIn; }
+ void SetDirection(BOOL fDescIn) { fDesc = fDescIn; }
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size )
+ {
+ void * p = CoTaskMemAlloc( size );
+ return( p );
+ }
+
+ inline void * operator new( size_t size, void * p )
+ {
+ return( p );
+ }
+
+ void operator delete( void * p )
+ {
+ if ( p )
+ CoTaskMemFree( p );
+ }
+
+ BOOL IsValid() const
+ {
+ return TRUE;
+ }
+
+ DBSORTINFO * CastToStruct()
+ {
+ return (DBSORTINFO *) this;
+ }
+
+ DBSORTINFO const * CastToStruct() const
+ {
+ return (DBSORTINFO const *) this;
+ }
+
+private:
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbGroupInfo
+//
+// Purpose: WRAPPER for DBGROUPINFO
+//
+// History: 6-22-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbGroupInfo : public DBGROUPINFO
+{
+
+public:
+
+ CDbGroupInfo( DBGROUPINFO & groupInfo ) : DBGROUPINFO(groupInfo) {}
+ CDbGroupInfo()
+ {
+ RtlZeroMemory( this, sizeof(CDbGroupInfo) );
+ }
+
+ DBGROUPINFO & Get() const { return *(DBGROUPINFO *)this; }
+
+ BOOL Copy( DBGROUPINFO const & rhs )
+ {
+ *(DBGROUPINFO *)this = rhs;
+ return TRUE;
+ }
+
+ void Marshall( PSerStream & stm ) const
+ {
+ stm.PutULong( lcid );
+ }
+
+ BOOL UnMarshall( PDeSerStream & stm )
+ {
+ lcid = stm.GetULong();
+ return TRUE;
+ }
+
+ DBGROUPINFO * CastToStruct()
+ {
+ return (DBGROUPINFO *) this;
+ }
+
+ DBGROUPINFO const * CastToStruct() const
+ {
+ return (DBGROUPINFO const *) this;
+ }
+
+
+ //
+ // Memory allocation
+ //
+ void * operator new( size_t size )
+ {
+ void * p = CoTaskMemAlloc( size );
+ return( p );
+ }
+
+ inline void * operator new( size_t size, void * p )
+ {
+ return( p );
+ }
+
+ void operator delete( void * p )
+ {
+ if ( p )
+ CoTaskMemFree( p );
+ }
+
+ BOOL IsValid() const
+ {
+ return TRUE;
+ }
+
+private:
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbColumnNode
+//
+// Purpose: A DBCOMMANDTREE node representing a column
+//
+// History: 6-07-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbColumnNode : public CDbCmdTreeNode
+{
+
+public:
+
+ //
+ // Constructors
+ //
+
+ CDbColumnNode() : CDbCmdTreeNode(DBOP_column_name)
+ {
+ wKind = DBVALUEKIND_ID;
+ CDbColId * pTemp = new CDbColId();
+ if ( pTemp )
+ {
+ value.pdbidValue = pTemp->CastToStruct();
+ }
+ }
+
+ CDbColumnNode( GUID const & guidPropSet, PROPID pidProperty )
+ : CDbCmdTreeNode(DBOP_column_name)
+ {
+ wKind = DBVALUEKIND_ID;
+ CDbColId * pTemp = new CDbColId( guidPropSet, pidProperty );
+ if ( pTemp )
+ {
+ value.pdbidValue = pTemp->CastToStruct();
+ }
+ }
+
+ CDbColumnNode( GUID const & guidPropSet, WCHAR const * wcsProperty );
+
+ // The fIMeanIt param is to avoid confusion when methods expect
+ // and CDbColumnNode, a DBID is passed, and automatically coerced
+ // but the memory allocation not checked.
+
+ CDbColumnNode( DBID const & propSpec, BOOL fIMeanIt );
+
+ //
+ // Copy constructors/assignment/clone
+ //
+ CDbColumnNode( CDbColumnNode const & Property )
+ : CDbCmdTreeNode(DBOP_column_name)
+ {
+ wKind = DBVALUEKIND_ID;
+ CDbColId* pTemp = new CDbColId();
+ if ( pTemp )
+ {
+ value.pdbidValue = pTemp->CastToStruct();
+ operator=( Property );
+ }
+ }
+
+ CDbColumnNode & operator=( CDbColumnNode const & rhs )
+ {
+ *(GetId()) = *(rhs.GetId());
+ return *this;
+ }
+
+ //
+ // Comparators
+ //
+ int operator==( CDbColumnNode const & rhs ) const
+ {
+ return *(GetId()) == *(rhs.GetId());
+ }
+
+ int operator!=( CDbColumnNode const & prop ) const
+ {
+ return !operator==(prop);
+ }
+
+ //
+ // Member variable access
+ //
+ void SetPropSet( GUID const & guidPropSet )
+ {
+ GetId()->SetPropSet( guidPropSet );
+ }
+
+ GUID const & GetPropSet() const
+ {
+ return GetId()->GetPropSet();
+ }
+
+ void SetProperty( PROPID pidProperty )
+ {
+ GetId()->SetProperty( pidProperty );
+ }
+
+ BOOL SetProperty( WCHAR const * wcsProperty )
+ {
+ return GetId()->SetProperty( wcsProperty );
+ }
+
+ WCHAR const * GetPropertyName() const
+ {
+ return GetId()->GetPropertyName();
+ }
+
+ PROPID GetPropertyPropid() const
+ {
+ return GetId()->GetPropertyPropid();
+ }
+
+ // PROPSPEC GetPropSpec() const;
+
+ BOOL IsPropertyName() const
+ {
+ return GetId()->IsPropertyName();
+ }
+
+ BOOL IsPropertyPropid() const
+ {
+ return GetId()->IsPropertyPropid();
+ }
+
+ void SetCommandType( DBCOMMANDOP opVal )
+ {
+ CDbCmdTreeNode::SetCommandType( opVal );
+ }
+
+ BOOL IsValid()
+ {
+ CDbColId * pId = GetId();
+ return (0 != pId) ? pId->IsValid() : FALSE;
+ }
+
+ CDbColId * GetId()
+ {
+ return (CDbColId *) value.pdbidValue;
+ }
+
+ CDbColId const * GetId() const
+ {
+ return (CDbColId const *) value.pdbidValue;
+ }
+
+private:
+
+};
+
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbScalarValue
+//
+// Purpose: A DBCOMMANDTREE node representing a scalar constant
+//
+// History: 6-07-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbScalarValue : public CDbCmdTreeNode
+{
+
+public:
+
+ CDbScalarValue( ULONG opVal = DBOP_scalar_constant ) :
+ CDbCmdTreeNode( opVal )
+ {
+ }
+
+ CDbScalarValue( const CStorageVariant & val ) :
+ CDbCmdTreeNode( DBOP_scalar_constant, DBVALUEKIND_VARIANT )
+ {
+ CStorageVariant * pTemp = new CStorageVariant( val );
+ if ( 0 != pTemp && !pTemp->IsValid() )
+ {
+ delete pTemp;
+ pTemp = 0;
+ }
+
+ if ( pTemp )
+ {
+ value.pvarValue = (VARIANT *) (void *)pTemp;
+ }
+ }
+
+ void SetValue( const CStorageVariant & val )
+ {
+ CStorageVariant * lhs = _CreateOrGetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = val;
+ }
+ }
+
+ void SetValue( double dValue )
+ {
+ CStorageVariant * pTemp = _GetStorageVariant();
+ if ( 0 != pTemp )
+ {
+ *pTemp = dValue;
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_R8;
+ value.dblValue = dValue;
+ }
+ }
+
+ void SetValue( ULONG ulValue )
+ {
+ CStorageVariant * lhs = _GetStorageVariant();
+ if ( 0 != lhs )
+ {
+ lhs->SetUI4(ulValue);
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_UI4;
+ value.ulValue = ulValue;
+ }
+ }
+
+ void SetValue( LONG lValue )
+ {
+ CStorageVariant * lhs = _GetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = lValue;
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_I4;
+ value.lValue = lValue;
+ }
+ }
+
+ void SetValue( LARGE_INTEGER llValue )
+ {
+ CStorageVariant * lhs = _GetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = llValue;
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_I8;
+ value.llValue = (hyper) llValue.QuadPart;
+ }
+ }
+
+ void SetValue( ULARGE_INTEGER ullValue )
+ {
+ CStorageVariant * lhs = _GetStorageVariant();
+ if ( 0 != lhs )
+ {
+ lhs->SetUI8(ullValue);
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_UI8;
+ value.ullValue = (unsigned hyper) ullValue.QuadPart;
+ }
+ }
+
+ void SetValue( FILETIME ftValue )
+ {
+ CStorageVariant * lhs = _CreateOrGetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = ftValue;
+ }
+ }
+
+ void SetValue( CY CyValue )
+ {
+ CStorageVariant * lhs = _GetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = CyValue;
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_CY;
+ value.cyValue = CyValue;
+ }
+ }
+
+ void SetValue( float fValue )
+ {
+ CStorageVariant * lhs = _GetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = fValue;
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_R4;
+ value.flValue = fValue;
+ }
+ }
+
+ void SetValue( SHORT sValue )
+ {
+ CStorageVariant * lhs = _GetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = sValue;
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_I2;
+ value.sValue = sValue;
+ }
+ }
+
+ void SetValue( USHORT usValue )
+ {
+ CStorageVariant * lhs = _GetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = usValue;
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_UI2;
+ value.usValue = usValue;
+ }
+ }
+
+ void SetDate ( DATE dValue )
+ {
+ CStorageVariant * lhs = _GetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = dValue;
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_DATE;
+ value.dateValue = dValue;
+ }
+ }
+
+ void SetBOOL( BOOL fValue )
+ {
+ CStorageVariant * lhs = _GetStorageVariant();
+ if ( 0 != lhs )
+ {
+ lhs->SetBOOL(fValue);
+ }
+ else
+ {
+ CleanupValue();
+ wKind = DBVALUEKIND_BOOL;
+ value.fValue = fValue;
+ }
+ }
+
+ void SetValue( BLOB & bValue )
+ {
+ CStorageVariant * lhs = _CreateOrGetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = bValue;
+ }
+ }
+
+ void SetValue( WCHAR * pwcsValue )
+ {
+ CStorageVariant * lhs = _CreateOrGetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = pwcsValue;
+ }
+ }
+
+ void SetValue( GUID * pguidValue)
+ {
+ CStorageVariant * lhs = _CreateOrGetStorageVariant();
+ if ( 0 != lhs )
+ {
+ *lhs = pguidValue;
+ }
+ }
+
+ void Value( CStorageVariant & valOut );
+
+ BOOL IsValid();
+
+private:
+
+ CStorageVariant * _GetStorageVariant()
+ {
+ if ( DBVALUEKIND_VARIANT == wKind )
+ {
+ return CastToStorageVariant( *value.pvarValue );
+ }
+ else
+ return 0;
+ }
+
+ CStorageVariant * _CreateOrGetStorageVariant()
+ {
+
+ CStorageVariant * pTemp = _GetStorageVariant();
+ if ( 0 != pTemp )
+ {
+ return pTemp;
+ }
+
+ CleanupValue();
+
+ wKind = DBVALUEKIND_VARIANT;
+ pTemp = new CStorageVariant();
+ value.pvarValue = (VARIANT *) (void *) pTemp;
+
+ return pTemp;
+ }
+};
+
+#define DBTABLEID_NAME L"Table"
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbTableId
+//
+// Purpose:
+//
+// History: 6-15-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbTableId: public CDbCmdTreeNode
+{
+
+public:
+
+ CDbTableId(const LPWSTR pwszName = DBTABLEID_NAME)
+ : CDbCmdTreeNode( DBOP_table_name )
+ {
+ wKind = DBVALUEKIND_WSTR;
+ value.pwszValue = CDbCmdTreeNode::AllocAndCopyWString( pwszName );
+ }
+
+ BOOL IsValid()
+ {
+ return 0 != value.pwszValue;
+ }
+
+ LPWSTR GetTableName() const
+ {
+ if (wKind == DBVALUEKIND_WSTR)
+ return value.pwszValue;
+ else
+ return 0;
+ }
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbSelectNode
+//
+// Purpose:
+//
+// History: 6-15-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbSelectNode : public CDbCmdTreeNode
+{
+
+public:
+ CDbSelectNode( );
+
+ BOOL AddRestriction( CDbCmdTreeNode * pRestr )
+ {
+ if ( IsValid() &&
+ GetFirstChild() &&
+ GetFirstChild()->GetNextSibling() == 0 )
+ {
+ AppendChild( pRestr );
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+
+ BOOL SetRestriction( CDbCmdTreeNode * pRestr );
+
+ BOOL IsValid()
+ {
+ return 0 != GetFirstChild() &&
+ GetFirstChild()->IsOpValid( DBOP_table_name );
+ }
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbListAnchor
+//
+// Purpose:
+//
+// History: 6-15-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbListAnchor : public CDbCmdTreeNode
+{
+
+public:
+
+ CDbListAnchor( DBCOMMANDOP opVal, WORD wType = DBVALUEKIND_EMPTY )
+ : CDbCmdTreeNode( opVal, wType ) {}
+
+// BUGBUG - make these protected; call from CDbSortListAnchor and
+// CDbProjectListAnchor with appropriate list element types.
+ BOOL AppendListElement( CDbCmdTreeNode* pListElement );
+
+ BOOL AppendListElement( ULONG eleType,
+ DBID const & PropSpec);
+
+ BOOL AppendListElement( ULONG eleType,
+ GUID const & guidPropSet, PROPID pidProperty );
+
+ BOOL AppendListElement( ULONG eleType,
+ GUID const & guidPropSet,
+ WCHAR const * wcsProperty );
+
+ BOOL AppendListElement( ULONG eleType, const CDbColumnNode & propSpec )
+ {
+ BOOL fSuccess = FALSE;
+
+ CDbColumnNode * pTemp = new CDbColumnNode( propSpec );
+ if ( 0 != pTemp )
+ {
+ if (!_AppendListElement( eleType, pTemp ) )
+ {
+ delete pTemp;
+ }
+ else
+ {
+ fSuccess = TRUE;
+ }
+ }
+
+ return fSuccess;
+ }
+
+private:
+
+ BOOL _IsValidListElement( ULONG eleType ) const
+ {
+ if ( eleType == DBOP_sort_list_element )
+ {
+ return TRUE;
+ }
+ else if ( eleType == DBOP_project_list_element )
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+
+ BOOL _AppendListElement( ULONG eleType, CDbColumnNode * pColNode );
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbProjectListAnchor
+//
+// Purpose:
+//
+// History: 6-15-95 srikants Created
+//
+// Notes: This class is required by the implementation, but should
+// be unneeded by clients
+//
+//----------------------------------------------------------------------------
+
+class CDbProjectListAnchor : public CDbListAnchor
+{
+public:
+ CDbProjectListAnchor() : CDbListAnchor( DBOP_project_list_anchor ) {}
+
+// BUGBUG - define and use a project list element class for these
+ void AppendSibling(CDbCmdTreeNode *pSibling)
+ {
+ CDbCmdTreeNode::AppendSibling(pSibling);
+ }
+ void InsertSibling(CDbCmdTreeNode *pSibling)
+ {
+ CDbCmdTreeNode::InsertSibling(pSibling);
+ }
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbProjectNode
+//
+// Purpose:
+//
+// History: 6-15-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbProjectNode : public CDbCmdTreeNode
+{
+
+public:
+
+ CDbProjectNode( )
+ : CDbCmdTreeNode( DBOP_project )
+ {
+ }
+
+ BOOL AddProjectColumn( GUID const & guidPropSet, PROPID pidProperty )
+ {
+ CDbProjectListAnchor * pAnchor = _FindOrAddAnchor();
+ if (pAnchor)
+ return pAnchor->AppendListElement( DBOP_project_list_element, guidPropSet,
+ pidProperty );
+ else
+ return FALSE;
+ }
+
+ BOOL AddProjectColumn( GUID const & guidPropSet,
+ WCHAR const * wcsProperty )
+ {
+ CDbProjectListAnchor * pAnchor = _FindOrAddAnchor();
+ if (pAnchor)
+ return pAnchor->AppendListElement( DBOP_project_list_element, guidPropSet,
+ wcsProperty );
+ else
+ return FALSE;
+ }
+
+ BOOL AddProjectColumn( DBID const & propSpec )
+ {
+ CDbProjectListAnchor * pAnchor = _FindOrAddAnchor();
+ if (pAnchor)
+ return pAnchor->AppendListElement( DBOP_project_list_element, propSpec );
+ else
+ return FALSE;
+ }
+
+ BOOL AddProjectColumn( CDbColumnNode const & propSpec )
+ {
+ CDbProjectListAnchor * pAnchor = _FindOrAddAnchor();
+ if (pAnchor)
+ return pAnchor->AppendListElement( DBOP_project_list_element, propSpec );
+ else
+ return FALSE;
+ }
+
+ BOOL AddTable( CDbCmdTreeNode * pTable )
+ {
+ if ( 0 == GetFirstChild() ||
+ 0 == GetFirstChild()->GetNextSibling())
+ {
+ InsertChild(pTable);
+ return TRUE;
+ }
+ return FALSE;
+ }
+
+private:
+ CDbProjectListAnchor * _FindOrAddAnchor();
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbSortListAnchor
+//
+// Purpose:
+//
+// History: 6-15-95 srikants Created
+//
+// Notes: This class is required by the implementation, but should
+// be unneeded by clients
+//
+//----------------------------------------------------------------------------
+
+class CDbSortListAnchor : public CDbListAnchor
+{
+public:
+ CDbSortListAnchor() : CDbListAnchor( DBOP_sort_list_anchor ) {}
+
+private:
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbSortListElement
+//
+// Purpose:
+//
+// History: 17 Aug 1995 AlanW Created
+//
+// Notes: This class is required by the implementation, but should
+// be unneeded by clients
+//
+//----------------------------------------------------------------------------
+
+class CDbSortListElement : public CDbCmdTreeNode
+{
+
+public:
+
+ CDbSortListElement( BOOL fDescending = FALSE, LCID locale = 0 ) :
+ CDbCmdTreeNode( DBOP_sort_list_element,
+ DBVALUEKIND_SORTINFO )
+ {
+ value.pdbsrtinfValue = new CDbSortInfo( fDescending, locale );
+ }
+
+ void SetDirection( BOOL fDescending )
+ {
+ GetSortInfo().SetDirection( fDescending );
+ }
+
+ void SetLocale( LCID locale )
+ {
+ GetSortInfo().SetLocale(locale);
+ }
+
+ BOOL GetDirection( ) const
+ {
+ return GetSortInfo().GetDirection();
+ }
+
+ LCID GetLocale( ) const
+ {
+ return GetSortInfo().GetLocale();
+ }
+
+ void AddColumn( CDbCmdTreeNode * pCol )
+ {
+ InsertChild( pCol );
+ }
+
+ BOOL IsValid() const
+ {
+ return 0 != value.pdbsrtinfValue;
+ }
+
+ CDbSortInfo & GetSortInfo()
+ {
+ return *((CDbSortInfo *) value.pdbsrtinfValue);
+ }
+
+ CDbSortInfo const & GetSortInfo() const
+ {
+ return *((CDbSortInfo const *) value.pdbsrtinfValue);
+ }
+
+private:
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbSortNode
+//
+// Purpose:
+//
+// History: 6-15-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbSortKey; // forward referenced
+
+class CDbSortNode : public CDbCmdTreeNode
+{
+
+public:
+
+ CDbSortNode() : CDbCmdTreeNode( DBOP_sort ) {}
+
+ BOOL AddTable( CDbCmdTreeNode * pTable )
+ {
+ if ( 0 == GetFirstChild() ||
+ 0 == GetFirstChild()->GetNextSibling())
+ {
+ InsertChild(pTable);
+ return TRUE;
+ }
+ return FALSE;
+ }
+
+ BOOL AddSortColumn(DBID const & propSpec,
+ BOOL fDirection,
+ LCID locale = GetSystemDefaultLCID());
+
+ inline BOOL AddSortColumn( CDbSortKey const & sortkey );
+
+private:
+ CDbSortListAnchor * _FindOrAddAnchor();
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbNestingNode
+//
+// Purpose: Wrapper for the DBCOMMANDTREE nesting node.
+//
+// History: 06 Aug 1995 AlanW Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbNestingNode : public CDbCmdTreeNode
+{
+
+public:
+ CDbNestingNode() : CDbCmdTreeNode( DBOP_nesting ) {}
+
+ BOOL AddTable( CDbCmdTreeNode * pTable );
+
+ BOOL AddGroupingColumn( DBID const & propSpec, LCID locale = 0 )
+ {
+ CDbProjectListAnchor * pAnchor = _FindGroupListAnchor();
+ if (pAnchor)
+ return pAnchor->AppendListElement( DBOP_project_list_element, propSpec );
+ else
+ return FALSE;
+ }
+
+ BOOL AddParentColumn( DBID const & propSpec )
+ {
+ CDbProjectListAnchor * pAnchor = _FindParentListAnchor();
+ if (pAnchor)
+ return pAnchor->AppendListElement( DBOP_project_list_element, propSpec );
+ else
+ return FALSE;
+ }
+
+ BOOL AddChildColumn( DBID const & propSpec )
+ {
+ CDbProjectListAnchor * pAnchor = _FindChildListAnchor();
+ if (pAnchor)
+ return pAnchor->AppendListElement( DBOP_project_list_element, propSpec );
+ else
+ return FALSE;
+ }
+
+private:
+ CDbProjectListAnchor * _FindGroupListAnchor();
+
+ CDbProjectListAnchor * _FindParentListAnchor()
+ {
+ CDbProjectListAnchor * pAnchor = _FindGroupListAnchor();
+ if (pAnchor)
+ pAnchor = (CDbProjectListAnchor *)pAnchor->GetNextSibling();
+ return pAnchor;
+ }
+
+ CDbProjectListAnchor * _FindChildListAnchor()
+ {
+ CDbProjectListAnchor * pAnchor = _FindParentListAnchor();
+ if (pAnchor)
+ pAnchor = (CDbProjectListAnchor *)pAnchor->GetNextSibling();
+ return pAnchor;
+ }
+
+};
+
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbRestriction
+//
+// Purpose:
+//
+// History: 6-07-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbRestriction : public CDbCmdTreeNode
+{
+
+public:
+
+ CDbRestriction( DBCOMMANDOP opVal = DBOP_DEFAULT ) : CDbCmdTreeNode( opVal )
+ {
+
+ }
+
+ void SetOperator( DBCOMMANDOP opVal )
+ {
+ op = opVal;
+ }
+
+private:
+
+
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: CDbNodeRestriction
+//
+// Purpose: Boolean AND/OR/VECTOR restriction
+//
+// History: 31-Dec-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CDbNodeRestriction : public CDbRestriction
+{
+
+public:
+
+ //
+ // Constructors
+ //
+ CDbNodeRestriction( DBCOMMANDOP opVal ) : CDbRestriction( opVal ) {}
+
+ //
+ // Manipulating the tree.
+ //
+ void AppendChild( CDbRestriction *pChild ) {
+ CDbRestriction::AppendChild( pChild );
+ }
+
+ void InsertChild( CDbRestriction *pChild ) {
+ CDbRestriction::InsertChild( pChild );
+ }
+
+private:
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbNotRestriction
+//
+// Purpose:
+//
+// History: 6-07-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbNotRestriction : public CDbRestriction
+{
+
+public:
+
+ //
+ // Constructors
+ //
+
+ CDbNotRestriction() : CDbRestriction( DBOP_not )
+ {
+
+ }
+
+ CDbNotRestriction( CDbRestriction * pres ) : CDbRestriction( DBOP_not )
+ {
+ InsertChild( pres );
+ }
+
+ //
+ // Node manipulation
+ //
+
+ void SetChild( CDbRestriction * pres )
+ {
+ delete RemoveFirstChild();
+ InsertChild( pres );
+ }
+
+ CDbRestriction * GetChild()
+ {
+ return (CDbRestriction *) GetFirstChild();
+ }
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbPropBaseRestriction
+//
+// Purpose: Base class for CDbPropertyRestriction and
+// CDbContentBaseRestriction. Provides access to the
+// property child node.
+//
+// History: 26 Jul 1995 AlanW Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbPropBaseRestriction : public CDbRestriction
+{
+public:
+
+ //
+ // Constructors
+ //
+ CDbPropBaseRestriction( DBCOMMANDOP opVal = DBOP_DEFAULT ) :
+ CDbRestriction(opVal) {}
+
+ //
+ // Child node access
+ //
+
+ BOOL SetProperty( DBID const & Property );
+ BOOL SetProperty( CDbColumnNode const & Property );
+ CDbColumnNode const * GetProperty();
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbPropertyRestriction
+//
+// Purpose: Restriction for relational operators, and "like" operator
+//
+// History: 6-07-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbPropertyRestriction : public CDbPropBaseRestriction
+{
+public:
+
+ //
+ // Constructors
+ //
+ CDbPropertyRestriction( ) : CDbPropBaseRestriction() {}
+
+ CDbPropertyRestriction( ULONG relop,
+ DBID const & Property,
+ CStorageVariant const & prval );
+
+ CDbPropertyRestriction( ULONG relop,
+ CDbColumnNode const & Property,
+ CStorageVariant const & prval );
+ //
+ // Member variable access
+ //
+
+ void SetRelation( ULONG relop )
+ {
+// Win4Assert(relop >= DBOP_is_NOT_NULL);
+ if ( DBOP_like == relop )
+ _SetLikeRelation();
+ else
+ op = relop;
+ }
+
+ ULONG Relation()
+ {
+ return op;
+ }
+
+ BOOL SetValue( double dValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( dValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( ULONG ulValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( ulValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( LONG lValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( lValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( LARGE_INTEGER llValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( llValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( FILETIME ftValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( ftValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( CY CyValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( CyValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( float fValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( fValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( SHORT sValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( sValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( USHORT usValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( usValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( const CStorageVariant &prval )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( prval );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetDate ( DATE dValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( dValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetBOOL( BOOL fValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetBOOL( fValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( BLOB & bValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( bValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( WCHAR * pwcsValue )
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( pwcsValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL SetValue( GUID * pguidValue)
+ {
+ CDbScalarValue * pValue = _FindOrAddValueNode();
+ if (pValue) {
+ pValue->SetValue( pguidValue );
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ BOOL IsOfsDialect();
+
+private:
+ void _SetLikeRelation( );
+
+ void _CleanValue();
+ BOOL _IsRelop( ULONG op );
+ CDbScalarValue * _FindValueNode();
+ CDbScalarValue * _FindOrAddValueNode();
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbVectorRestriction ()
+//
+// Purpose:
+//
+// History: 6-11-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbVectorRestriction : public CDbNodeRestriction
+{
+
+public:
+
+ //
+ // Constructors
+ //
+
+ CDbVectorRestriction( ULONG ulRankMethod )
+ : CDbNodeRestriction( DBOP_content_vector_or )
+ {
+ SetValueType( DBVALUEKIND_CONTENTVECTOR );
+ CDbContentVector * pTemp = new CDbContentVector( ulRankMethod );
+ if ( pTemp )
+ {
+ value.pdbcntntvcValue = pTemp->CastToStruct();
+ }
+ }
+
+ //
+ // Member variable access
+ //
+ void SetRankMethod( ULONG ulRankMethod )
+ {
+ CDbContentVector * pVector = GetContentVector();
+ pVector->SetRankMethod( ulRankMethod );
+ }
+
+ ULONG RankMethod() const
+ {
+ CDbContentVector const * pVector = GetContentVector();
+ return pVector->RankMethod();
+ }
+
+ ULONG GetWeightCount()
+ {
+ CDbContentVector * pVector = GetContentVector();
+ return pVector->GetWeightCount();
+ }
+
+ ULONG const * GetWeights()
+ {
+ CDbContentVector * pVector = GetContentVector();
+ return pVector->GetWeights();
+ }
+
+ void SetWeights( ULONG c, ULONG const *pul )
+ {
+ CDbContentVector * pVector = GetContentVector();
+ pVector->SetWeights( c, pul );
+ }
+
+ BOOL IsValid() const
+ {
+ return ( ( 0 != GetContentVector() ) &&
+ ( GetContentVector()->IsValid() ) );
+ }
+
+ CDbContentVector * GetContentVector()
+ {
+ return (CDbContentVector *) value.pdbcntntvcValue;
+ }
+
+ CDbContentVector const * GetContentVector() const
+ {
+ return (CDbContentVector const *) value.pdbcntntvcValue;
+ }
+private:
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbContentBaseRestriction
+//
+// Purpose:
+//
+// History: 6-13-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbContentBaseRestriction : public CDbPropBaseRestriction
+{
+
+public:
+
+ BOOL SetPhrase( const WCHAR * pwcsPhrase )
+ {
+ return GetDbContent()->SetPhrase( pwcsPhrase );
+ }
+
+ WCHAR const * GetPhrase() const
+ {
+ return GetDbContent()->GetPhrase();
+ }
+
+ void SetLocale( LCID locale )
+ {
+ GetDbContent()->SetLocale( locale );
+ }
+
+ LCID GetLocale() const
+ {
+ return GetDbContent()->GetLocale();
+ }
+
+ ULONG GetWeight() const
+ {
+ return GetDbContent()->GetWeight();
+ }
+
+ void SetWeight( ULONG weight )
+ {
+ GetDbContent()->SetWeight( weight );
+ }
+
+ BOOL IsValid() const
+ {
+ CDbContent const * pTemp = GetDbContent();
+ return ( ( 0 != pTemp ) &&
+ ( pTemp->IsValid() ) );
+ }
+
+protected:
+
+ CDbContentBaseRestriction( DBCOMMANDOP opVal,
+ DWORD fuzzyLevel = FUZZY_EXACT,
+ ULONG ulWeight = 0,
+ LCID lcid = 0,
+ const WCHAR * pwszPhrase = 0
+ ) : CDbPropBaseRestriction( opVal )
+ {
+ wKind = DBVALUEKIND_CONTENT;
+ CDbContent * pTemp = new CDbContent( fuzzyLevel, ulWeight,
+ lcid, pwszPhrase );
+ value.pdbcntntValue = (DBCONTENT *) pTemp;
+ }
+
+ BOOL _IsContentNode()
+ {
+ return DBOP_content == op ||
+ DBOP_content_proximity == op ||
+ DBOP_content_freetext == op ||
+ DBOP_content_vector_or == op ;
+ }
+
+ void _Cleanup()
+ {
+ CDbContent * pContent = GetDbContent();
+ pContent->Cleanup();
+ }
+
+ CDbContent * GetDbContent()
+ {
+ return (CDbContent *) value.pdbcntntValue;
+ }
+
+ CDbContent const * GetDbContent() const
+ {
+ return (CDbContent const *) value.pdbcntntValue;
+ }
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbNatLangRestriction
+//
+// Purpose:
+//
+// History: 6-11-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbNatLangRestriction : public CDbContentBaseRestriction
+{
+
+public:
+
+ CDbNatLangRestriction( const WCHAR * pwcsPhrase,
+ CDbColumnNode const & Property,
+ LCID lcid = GetSystemDefaultLCID() );
+
+ CDbNatLangRestriction( const WCHAR * pwcsPhrase,
+ DBID const & Property,
+ LCID lcid = GetSystemDefaultLCID() );
+
+private:
+
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDbContentRestriction
+//
+// Purpose:
+//
+// History: 6-11-95 srikants Created
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+class CDbContentRestriction : public CDbContentBaseRestriction
+{
+
+public:
+
+ CDbContentRestriction( const WCHAR * pwcsPhrase,
+ CDbColumnNode const & Property,
+ ULONG ulFuzzy = 0,
+ LCID lcid = GetSystemDefaultLCID() );
+
+ CDbContentRestriction( const WCHAR * pwcsPhrase,
+ DBID const & Property,
+ ULONG ulFuzzy = 0,
+ LCID lcid = GetSystemDefaultLCID() );
+
+ //
+ // Member variable access
+ //
+
+
+ void SetFuzzyLevel( ULONG ulFuzzy )
+ {
+ GetDbContent()->SetFuzzyLevel( ulFuzzy );
+ }
+
+ ULONG FuzzyLevel() const { return GetDbContent()->GetFuzzyLevel(); }
+
+private:
+
+};
+
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CDTopNode
+//
+// Purpose: Specifies a cap on the number of results
+//
+// History: 2-21-96 SitaramR Created
+//
+//--------------------------------------------------------------------------
+
+class CDbTopNode : public CDbCmdTreeNode
+{
+
+public:
+ CDbTopNode()
+ : CDbCmdTreeNode( DBOP_top, DBVALUEKIND_UI4 )
+ {
+ }
+
+ void SetChild( CDbCmdTreeNode *pChild )
+ {
+ AppendChild( pChild );
+ }
+
+ CDbCmdTreeNode *GetChild()
+ {
+ return GetFirstChild();
+ }
+
+ void SetValue( ULONG ulValue )
+ {
+ value.ulValue = ulValue;
+ }
+
+ ULONG GetValue()
+ {
+ return value.ulValue;
+ }
+};
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CDbColumns
+//
+// Purpose: C++ wrapper for array of CDbColId
+//
+// History: 22-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CDbColumns
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ CDbColumns( unsigned size = 0 );
+
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ CDbColumns( CDbColumns const & src );
+ CDbColumns & operator=( CDbColumns const & src );
+
+ //
+ // Destructor
+ //
+
+ ~CDbColumns();
+
+ //
+ // Memory allocation
+ //
+
+ void * operator new( size_t size );
+ void operator delete( void * p );
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CDbColumns( PDeSerStream & stm );
+
+ //
+ // C/C++ conversion
+ //
+
+ inline DBID * GetColumnsArray() const;
+
+ //
+ // Member variable access
+ //
+
+ BOOL Add( CDbColId const & Property, unsigned pos );
+ void Remove( unsigned pos );
+ inline CDbColId const & Get( unsigned pos ) const;
+
+ inline unsigned Count() const;
+
+ BOOL IsValid() const
+ {
+ return _cCol ? 0 != _aCol : TRUE;
+ }
+
+private:
+
+ unsigned _cCol;
+ CDbColId * _aCol;
+ unsigned _size;
+};
+
+
+#if !defined(QUERY_SORTASCEND)
+
+#define QUERY_SORTASCEND ( 0 )
+#define QUERY_SORTDESCEND ( 1 )
+
+#endif // !defined(QUERY_SORTASCEND)
+
+//+-------------------------------------------------------------------------
+//
+// Structure: CDbSortKey
+//
+// Purpose: sort key class, for convenience in building sort lists
+//
+//--------------------------------------------------------------------------
+
+class CDbSortKey
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ inline CDbSortKey();
+ inline CDbSortKey( CDbSortKey const & sk );
+ inline CDbSortKey( CDbColId const & ps, DWORD dwOrder = QUERY_SORTASCEND);
+ inline CDbSortKey( CDbColId const & ps, DWORD dwOrder, LCID locale );
+
+ //
+ // Member variable access
+ //
+
+ inline void SetProperty( CDbColId const & ps );
+ inline CDbColId const & GetProperty() const;
+ inline DWORD GetOrder() const;
+ inline void SetOrder(DWORD dwOrder);
+ inline LCID GetLocale() const;
+ inline void SetLocale(LCID locale);
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CDbSortKey( PDeSerStream & stm );
+
+private:
+
+ CDbColId _property;
+ DWORD _dwOrder;
+ LCID _locale;
+};
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CDbSortSet
+//
+// Purpose: C++ wrapper for array of CDbSortKeys
+//
+// History: 22-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CDbSortSet
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ CDbSortSet( unsigned size = 0 );
+
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ CDbSortSet( CDbSortSet const & src );
+ CDbSortSet & operator=( CDbSortSet const & src );
+
+ //
+ // Destructor
+ //
+
+ ~CDbSortSet();
+
+ //
+ // Memory allocation
+ //
+
+ inline void * operator new( size_t size );
+ inline void operator delete( void * p );
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CDbSortSet( PDeSerStream & stm );
+
+ //
+ // Member variable access
+ //
+
+ BOOL Add( CDbSortKey const &sk, unsigned pos );
+ BOOL Add( CDbColId const & Property, ULONG dwOrder, unsigned pos );
+ void Remove( unsigned pos );
+ inline CDbSortKey const & Get( unsigned pos ) const;
+
+ inline unsigned Count() const;
+
+private:
+
+ unsigned _csk;
+ CDbSortKey * _ask;
+ unsigned _size;
+};
+
+
+//
+// Inline methods for CDbColumns
+//
+
+inline CDbColId const & CDbColumns::Get( unsigned pos ) const
+{
+ if ( pos < _cCol )
+ return( _aCol[pos] );
+ else
+ return( *(CDbColId *)0 );
+}
+
+inline void * CDbColumns::operator new( size_t size )
+{
+ void * p = CoTaskMemAlloc( size );
+
+ return( p );
+}
+
+inline void CDbColumns::operator delete( void * p )
+{
+ if ( p )
+ CoTaskMemFree( p );
+}
+
+inline unsigned CDbColumns::Count() const
+{
+ return( _cCol );
+}
+
+inline DBID * CDbColumns::GetColumnsArray() const
+{
+ return _aCol;
+}
+
+
+//
+// Inline methods for CDbSortKey
+//
+
+inline CDbSortKey::CDbSortKey()
+{
+}
+
+inline CDbSortKey::CDbSortKey( CDbSortKey const & sk )
+ : _property( sk._property ),
+ _dwOrder( sk._dwOrder ),
+ _locale( sk._locale )
+{
+}
+
+inline CDbSortKey::CDbSortKey( CDbColId const & ps, ULONG dwOrder )
+ : _property( ps ),
+ _dwOrder( dwOrder ),
+ _locale( 0 )
+{
+}
+
+inline CDbSortKey::CDbSortKey( CDbColId const & ps, ULONG dwOrder, LCID locale )
+ : _property( ps ),
+ _dwOrder( dwOrder ),
+ _locale ( locale )
+{
+}
+
+
+inline void CDbSortKey::SetProperty( CDbColId const & ps )
+{
+ _property = ps;
+}
+
+inline void CDbSortKey::SetLocale( LCID locale )
+{
+ _locale = locale;
+}
+
+inline void CDbSortKey::SetOrder( DWORD dwOrder )
+{
+ _dwOrder = dwOrder;
+}
+
+inline CDbColId const & CDbSortKey::GetProperty() const
+{
+ return( _property );
+}
+
+inline LCID CDbSortKey::GetLocale() const
+{
+ return( _locale );
+}
+
+inline DWORD CDbSortKey::GetOrder() const
+{
+ return( _dwOrder );
+}
+
+//
+// Inline methods of CDbSortSet
+//
+
+inline void * CDbSortSet::operator new( size_t size )
+{
+ void * p = CoTaskMemAlloc( size );
+
+ return( p );
+}
+
+inline void CDbSortSet::operator delete( void * p )
+{
+ if ( p )
+ CoTaskMemFree( p );
+}
+
+inline CDbSortKey const & CDbSortSet::Get( unsigned pos ) const
+{
+ if ( pos < _csk )
+ {
+ return( _ask[pos] );
+ }
+ else
+ {
+ return( *(CDbSortKey *)0 );
+ }
+}
+
+inline unsigned
+CDbSortSet::Count() const
+{
+ return( _csk );
+}
+
+//
+// Inline methods of CDbSortNode (needs defn. of CDbSortKey)
+//
+inline BOOL
+CDbSortNode::AddSortColumn( CDbSortKey const & sortkey )
+{
+ return AddSortColumn( sortkey.GetProperty(),
+ sortkey.GetOrder() == QUERY_SORTDESCEND,
+ sortkey.GetLocale() );
+}
+
+#endif // __DBCMDTRE_HXX__
diff --git a/public/sdk/inc/dbgpoint.hxx b/public/sdk/inc/dbgpoint.hxx
new file mode 100644
index 000000000..960586ec8
--- /dev/null
+++ b/public/sdk/inc/dbgpoint.hxx
@@ -0,0 +1,358 @@
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: dbgpoint.hxx
+//
+// Contents: Support for visual debug values
+//
+// Classes: CDebugBaseClass
+// CDebugBreakPoint
+// CDebugValue
+//
+// Functions:
+//
+// History: 12-Mar-93 KevinRo Created
+//
+// This module handles debug values, such as breakpoints and settable
+// values. By using this module, the values can be examined and changed
+// in a debugging window. The debugging window uses its own thread, so
+// changes can be effected asynchronously.
+//
+//--------------------------------------------------------------------------
+
+
+#ifndef __DBGPOINT_HXX__
+#define __DBGPOINT_HXX__
+
+#if defined(__cplusplus)
+
+enum DebugValueType
+{
+ dvtBreakPoint,
+ dvtInfoLevel,
+ dvtValue
+};
+
+class CDebugBaseClass;
+
+//
+// The following routines are exported from commnot.dll
+//
+
+extern "C"
+EXPORTDEF
+void APINOT dbgRegisterGroup(WCHAR const *pwzName,HANDLE *hGroup);
+
+extern "C"
+EXPORTDEF
+void APINOT dbgRemoveGroup(HANDLE hGroup);
+
+extern "C"
+EXPORTDEF
+void APINOT dbgRegisterValue(WCHAR const *pwzName,HANDLE hGroup,CDebugBaseClass *pdv);
+
+extern "C"
+EXPORTDEF
+void APINOT dbgRemoveValue(HANDLE hGroup,CDebugBaseClass *pdv);
+
+extern "C"
+EXPORTDEF
+void APINOT dbgNotifyChange(HANDLE hGroup,CDebugBaseClass *pdv);
+
+extern "C"
+EXPORTDEF
+ULONG APINOT dbgGetIniInfoLevel(WCHAR const *pwzName,ULONG ulDefault);
+
+extern "C"
+EXPORTDEF
+ULONG APINOT dbgBreakDialog(char const *pszFileName,ULONG ulLineNumber,WCHAR const *pwzName,long ulCode);
+
+// The following values may be returned by dbgBreakDialog
+
+#define CDBG_BREAKPOINT_CONTINUE 0x01
+#define CDBG_BREAKPOINT_BREAK 0x02
+#define CDBG_BREAKPOINT_DISABLE 0x04
+
+//
+// The following group is for the Infolevel Group. The group is automatically
+// registered when a value is added to it.
+//
+
+#define HANDLE_INFOLEVELGROUP ((HANDLE)-1)
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CDebugBaseClass
+//
+// Purpose: Defines a base class used by visual debug value system
+//
+// Interface:
+//
+// History: 12-Mar-93 KevinRo Created
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+class CDebugBaseClass
+{
+public:
+ CDebugBaseClass(WCHAR const *pwzValueName,
+ HANDLE hGroupHandle,
+ DebugValueType dvtType):
+ _dvtType(dvtType),
+ _hGroupHandle(hGroupHandle)
+ {
+ }
+
+ void Register(WCHAR const *pwzValueName)
+ {
+ dbgRegisterValue(pwzValueName,_hGroupHandle,this);
+ }
+
+
+virtual ~CDebugBaseClass()
+ {
+ dbgRemoveValue(_hGroupHandle,this);
+ }
+
+virtual void NotifyChange()
+ {
+ dbgNotifyChange(_hGroupHandle,this);
+ }
+
+DebugValueType GetValueType() {return _dvtType;}
+HANDLE GetGroupHandle() { return _hGroupHandle;}
+
+private:
+ HANDLE _hGroupHandle;
+ DebugValueType _dvtType;
+};
+
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CDebugBreakPoint
+//
+// Purpose: Defines an externally switchable break point. By using the
+// visual debug window, you can set or clear this breakpoint
+// while a program runs.
+//
+// Interface:
+//
+// History: 12-Mar-93 KevinRo Created
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+
+class CDebugBreakPoint : public CDebugBaseClass
+{
+public:
+ CDebugBreakPoint(WCHAR const *pwzName,HANDLE hGroup,ULONG fBreakSet):
+ _fBreakSet(fBreakSet),
+ _pwzName(pwzName),
+ CDebugBaseClass(pwzName,hGroup,dvtBreakPoint)
+ {
+
+ Register(pwzName);
+ }
+ ~CDebugBreakPoint()
+ {
+ }
+
+ void ToggleBreakPoint()
+ {
+ _fBreakSet = !_fBreakSet;
+ NotifyChange();
+ }
+
+ ULONG GetBreakPoint()
+ {
+ return(_fBreakSet);
+ }
+
+ ULONG SetBreakPoint()
+ {
+ register ret = _fBreakSet;
+ _fBreakSet = TRUE;
+ NotifyChange();
+ return(ret);
+ }
+
+ ULONG ClearBreakPoint()
+ {
+ register ret = _fBreakSet;
+ _fBreakSet = FALSE;
+ NotifyChange();
+ return(ret);
+ }
+
+inline BOOL BreakPointTest()
+ {
+ return _fBreakSet;
+ }
+
+inline BOOL BreakPointMessage(char *pszFileName,ULONG ulLineNo,long lCode=0)
+ {
+ ULONG rc = dbgBreakDialog(pszFileName,ulLineNo,_pwzName,lCode);
+
+ if(rc & CDBG_BREAKPOINT_DISABLE) ClearBreakPoint();
+
+ return(rc & CDBG_BREAKPOINT_BREAK);
+ }
+
+public:
+ WCHAR const * _pwzName;
+ BOOL _fBreakSet;
+
+};
+
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CDebugValue
+//
+// Purpose: A DebugValue makes a ULONG value visible and settable
+// from the debugging window. By accepting a ULONG reference,
+// it is possible to expose a ULONG value to the debugging
+// window.
+//
+// Interface:
+//
+// History: 12-Mar-93 KevinRo Created
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+class CDebugValue : public CDebugBaseClass
+{
+public:
+ CDebugValue(WCHAR const *pwzName,HANDLE hGroup,ULONG & ulValue):
+ _ulValue(ulValue),
+ CDebugBaseClass(pwzName,hGroup,dvtValue)
+ {
+ Register(pwzName);
+ }
+
+ ~CDebugValue()
+ {
+ }
+
+ ULONG GetValue()
+ {
+ return(_ulValue);
+ }
+
+ ULONG SetValue(ULONG ulValue)
+ {
+ register ret = _ulValue;
+
+ _ulValue = ulValue;
+ NotifyChange();
+ return(ret);
+ }
+
+private:
+
+ ULONG & _ulValue;
+
+};
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CInfoLevel
+//
+// Purpose: A CInfoLevel makes an InfoLevel value accessable by the
+// debugging window.
+//
+// Interface:
+//
+// History: 12-Mar-93 KevinRo Created
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+
+
+
+class CInfoLevel : public CDebugBaseClass
+{
+public:
+ CInfoLevel(WCHAR const *pwzName,ULONG & ulValue,ULONG deflvl = DEF_INFOLEVEL):
+ _ulInfoLevel(ulValue),
+ CDebugBaseClass(pwzName,HANDLE_INFOLEVELGROUP,dvtInfoLevel)
+ {
+ _ulInfoLevel = dbgGetIniInfoLevel(pwzName,deflvl);
+
+ Register(pwzName);
+ }
+
+ ~CInfoLevel()
+ {
+ }
+
+ ULONG GetInfoLevel()
+ {
+ return(_ulInfoLevel);
+ }
+
+ ULONG SetInfoLevel(ULONG ulValue)
+ {
+ register ret = _ulInfoLevel;
+
+ _ulInfoLevel = ulValue;
+ NotifyChange();
+ return(ret);
+ }
+
+private:
+
+ ULONG & _ulInfoLevel;
+
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: CDebugGroupClass
+//
+// Purpose: Encapsulates a Debug Group
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+
+class CDebugGroupClass
+{
+public:
+ CDebugGroupClass(WCHAR *pwzName)
+ {
+ dbgRegisterGroup(pwzName,&_hGroup);
+ }
+
+ ~CDebugGroupClass()
+ {
+ dbgRemoveGroup(_hGroup);
+ }
+
+ operator HANDLE() { return(_hGroup); }
+
+private:
+ HANDLE _hGroup;
+};
+
+
+#endif // defined(__cplusplus)
+#endif // __DBGPOINT_HXX__
+
diff --git a/public/sdk/inc/dbt.h b/public/sdk/inc/dbt.h
new file mode 100644
index 000000000..e6cf41d5c
--- /dev/null
+++ b/public/sdk/inc/dbt.h
@@ -0,0 +1,356 @@
+/*****************************************************************************
+ *
+ * (C) Copyright MICROSOFT Corp., 1993-1995
+ *
+ * Title: DBT.H - Equates for WM_DEVICECHANGE and BroadcastSystemMessage
+ *
+ * Version: 4.00
+ *
+ * Date: 24-May-1993
+ *
+ * Author: rjc
+ *
+ *----------------------------------------------------------------------------
+ *
+ * Change log:
+ *
+ * DATE REV DESCRIPTION
+ * ----------- --- ----------------------------------------------------------
+ *
+ *****************************************************************************/
+
+#ifndef _DBT_H
+#define _DBT_H
+
+/*
+ * BroadcastSpecialMessage constants.
+ */
+#define WM_DEVICECHANGE 0x0219
+
+/* XLATOFF */
+#ifdef IS_32
+#define DBTFAR
+#else
+#define DBTFAR far
+#endif
+/* XLATON */
+
+/*
+ * Broadcast message and receipient flags.
+ *
+ * Note that there is a third "flag". If the wParam has:
+ *
+ * bit 15 on: lparam is a pointer and bit 14 is meaningfull.
+ * bit 15 off: lparam is just a UNLONG data type.
+ *
+ * bit 14 on: lparam is a pointer to an ASCIIZ string.
+ * bit 14 off: lparam is a pointer to a binary struture starting with
+ * a dword describing the length of the structure.
+ */
+#define BSF_QUERY 0x00000001
+#define BSF_IGNORECURRENTTASK 0x00000002 /* Meaningless for VxDs */
+#define BSF_FLUSHDISK 0x00000004 /* Shouldn't be used by VxDs */
+#define BSF_NOHANG 0x00000008
+#define BSF_POSTMESSAGE 0x00000010
+#define BSF_FORCEIFHUNG 0x00000020
+#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
+#define BSF_MSGSRV32ISOK 0x80000000 /* Called synchronously from PM API */
+#define BSF_MSGSRV32ISOK_BIT 31 /* Called synchronously from PM API */
+
+#define BSM_ALLCOMPONENTS 0x00000000
+#define BSM_VXDS 0x00000001
+#define BSM_NETDRIVER 0x00000002
+#define BSM_INSTALLABLEDRIVERS 0x00000004
+#define BSM_APPLICATIONS 0x00000008
+
+/*
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_APPYBEGIN
+ * lParam = (not used)
+ *
+ * 'Appy-time is now available. This message is itself sent
+ * at 'Appy-time.
+ *
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_APPYEND
+ * lParam = (not used)
+ *
+ * 'Appy-time is no longer available. This message is *NOT* sent
+ * at 'Appy-time. (It cannot be, because 'Appy-time is gone.)
+ *
+ * NOTE! It is possible for DBT_APPYBEGIN and DBT_APPYEND to be sent
+ * multiple times during a single Windows session. Each appearance of
+ * 'Appy-time is bracketed by these two messages, but 'Appy-time may
+ * momentarily become unavailable during otherwise normal Windows
+ * processing. The current status of 'Appy-time availability can always
+ * be obtained from a call to _SHELL_QueryAppyTimeAvailable.
+ */
+#define DBT_APPYBEGIN 0x0000
+#define DBT_APPYEND 0x0001
+
+/*
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_DEVNODES_CHANGED
+ * lParam = 0
+ *
+ * send when configmg finished a process tree batch. Some devnodes
+ * may have been added or removed. This is used by ring3 people which
+ * need to be refreshed whenever any devnode changed occur (like
+ * device manager). People specific to certain devices should use
+ * DBT_DEVICE* instead.
+ */
+
+#define DBT_DEVNODES_CHANGED 0x0007
+
+/*
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_QUERYCHANGECONFIG
+ * lParam = 0
+ *
+ * sent to ask if a config change is allowed
+ */
+
+#define DBT_QUERYCHANGECONFIG 0x0017
+
+/*
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_CONFIGCHANGED
+ * lParam = 0
+ *
+ * sent when a config has changed
+ */
+
+#define DBT_CONFIGCHANGED 0x0018
+
+/*
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_CONFIGCHANGECANCELED
+ * lParam = 0
+ *
+ * someone cancelled the config change
+ */
+
+#define DBT_CONFIGCHANGECANCELED 0x0019
+
+/*
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_MONITORCHANGE
+ * lParam = new resolution to use (LOWORD=x, HIWORD=y)
+ * if 0, use the default res for current config
+ *
+ * this message is sent when the display monitor has changed
+ * and the system should change the display mode to match it.
+ */
+
+#define DBT_MONITORCHANGE 0x001B
+
+/*
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_SHELLLOGGEDON
+ * lParam = 0
+ *
+ * The shell has finished login on: VxD can now do Shell_EXEC.
+ */
+
+#define DBT_SHELLLOGGEDON 0x0020
+
+/*
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_CONFIGMGAPI
+ * lParam = CONFIGMG API Packet
+ *
+ * CONFIGMG ring 3 call.
+ */
+#define DBT_CONFIGMGAPI32 0x0022
+
+/*
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_VOLLOCK*
+ * lParam = pointer to VolLockBroadcast structure described below
+ *
+ * Messages issued by IFSMGR for volume locking purposes on WM_DEVICECHANGE.
+ * All these messages pass a pointer to a struct which has no pointers.
+ */
+
+#define DBT_VOLLOCKQUERYLOCK 0x8041
+#define DBT_VOLLOCKLOCKTAKEN 0x8042
+#define DBT_VOLLOCKLOCKFAILED 0x8043
+#define DBT_VOLLOCKQUERYUNLOCK 0x8044
+#define DBT_VOLLOCKLOCKRELEASED 0x8045
+#define DBT_VOLLOCKUNLOCKFAILED 0x8046
+
+/*
+ * Device broadcast header
+ */
+
+struct _DEV_BROADCAST_HDR { /* */
+ DWORD dbch_size;
+ DWORD dbch_devicetype;
+ DWORD dbch_reserved;
+};
+
+typedef struct _DEV_BROADCAST_HDR DEV_BROADCAST_HDR;
+typedef DEV_BROADCAST_HDR DBTFAR *PDEV_BROADCAST_HDR;
+
+/*
+ * Structure for volume lock broadcast
+ */
+
+typedef struct VolLockBroadcast VolLockBroadcast;
+typedef VolLockBroadcast *pVolLockBroadcast;
+struct VolLockBroadcast {
+ struct _DEV_BROADCAST_HDR vlb_dbh;
+ DWORD vlb_owner; // thread on which lock request is being issued
+ BYTE vlb_perms; // lock permission flags defined below
+ BYTE vlb_lockType; // type of lock
+ BYTE vlb_drive; // drive on which lock is issued
+ BYTE vlb_flags; // miscellaneous flags
+};
+
+/*
+ * Values for vlb_perms
+ */
+#define LOCKP_ALLOW_WRITES 0x01 // Bit 0 set - allow writes
+#define LOCKP_FAIL_WRITES 0x00 // Bit 0 clear - fail writes
+#define LOCKP_FAIL_MEM_MAPPING 0x02 // Bit 1 set - fail memory mappings
+#define LOCKP_ALLOW_MEM_MAPPING 0x00 // Bit 1 clear - allow memory mappings
+#define LOCKP_USER_MASK 0x03 // Mask for user lock flags
+#define LOCKP_LOCK_FOR_FORMAT 0x04 // Level 0 lock for format
+
+/*
+ * Values for vlb_flags
+ */
+#define LOCKF_LOGICAL_LOCK 0x00 // Bit 0 clear - logical lock
+#define LOCKF_PHYSICAL_LOCK 0x01 // Bit 0 set - physical lock
+
+
+/*
+ * Message = WM_DEVICECHANGE
+ * wParam = DBT_NODISKSPACE
+ * lParam = drive number of drive that is out of disk space (1-based)
+ *
+ * Message issued by IFS manager when it detects that a drive is run out of
+ * free space.
+ */
+
+#define DBT_NO_DISK_SPACE 0x0047
+
+
+#define DBT_CONFIGMGPRIVATE 0x7FFF
+
+/*
+ * The following messages are for WM_DEVICECHANGE. The immediate list
+ * is for the wParam. ALL THESE MESSAGES PASS A POINTER TO A STRUCT
+ * STARTING WITH A DWORD SIZE AND HAVING NO POINTER IN THE STRUCT.
+ *
+ */
+#define DBT_DEVICEARRIVAL 0x8000 // system detected a new device
+#define DBT_DEVICEQUERYREMOVE 0x8001 // wants to remove, may fail
+#define DBT_DEVICEQUERYREMOVEFAILED 0x8002 // removal aborted
+#define DBT_DEVICEREMOVEPENDING 0x8003 // about to remove, still avail.
+#define DBT_DEVICEREMOVECOMPLETE 0x8004 // device is gone
+#define DBT_DEVICETYPESPECIFIC 0x8005 // type specific event
+
+#define DBT_DEVTYP_OEM 0x00000000 // oem-defined device type
+#define DBT_DEVTYP_DEVNODE 0x00000001 // devnode number
+#define DBT_DEVTYP_VOLUME 0x00000002 // logical volume
+#define DBT_DEVTYP_PORT 0x00000003 // serial, parallel
+#define DBT_DEVTYP_NET 0x00000004 // network resource
+
+struct _DEV_BROADCAST_HEADER { /* */
+ DWORD dbcd_size;
+ DWORD dbcd_devicetype;
+ DWORD dbcd_reserved;
+};
+
+struct _DEV_BROADCAST_OEM { /* */
+ DWORD dbco_size;
+ DWORD dbco_devicetype;
+ DWORD dbco_reserved;
+ DWORD dbco_identifier;
+ DWORD dbco_suppfunc;
+};
+
+typedef struct _DEV_BROADCAST_OEM DEV_BROADCAST_OEM;
+typedef DEV_BROADCAST_OEM DBTFAR *PDEV_BROADCAST_OEM;
+
+struct _DEV_BROADCAST_DEVNODE { /* */
+ DWORD dbcd_size;
+ DWORD dbcd_devicetype;
+ DWORD dbcd_reserved;
+ DWORD dbcd_devnode;
+};
+
+typedef struct _DEV_BROADCAST_DEVNODE DEV_BROADCAST_DEVNODE;
+typedef DEV_BROADCAST_DEVNODE DBTFAR *PDEV_BROADCAST_DEVNODE;
+
+struct _DEV_BROADCAST_VOLUME { /* */
+ DWORD dbcv_size;
+ DWORD dbcv_devicetype;
+ DWORD dbcv_reserved;
+ DWORD dbcv_unitmask;
+ WORD dbcv_flags;
+};
+
+typedef struct _DEV_BROADCAST_VOLUME DEV_BROADCAST_VOLUME;
+typedef DEV_BROADCAST_VOLUME DBTFAR *PDEV_BROADCAST_VOLUME;
+
+#define DBTF_MEDIA 0x0001 // media comings and goings
+#define DBTF_NET 0x0002 // network volume
+
+struct _DEV_BROADCAST_PORT { /* */
+ DWORD dbcp_size;
+ DWORD dbcp_devicetype;
+ DWORD dbcp_reserved;
+ char dbcp_name[1];
+};
+
+typedef struct _DEV_BROADCAST_PORT DEV_BROADCAST_PORT;
+typedef DEV_BROADCAST_PORT DBTFAR *PDEV_BROADCAST_PORT;
+
+struct _DEV_BROADCAST_NET { /* */
+ DWORD dbcn_size;
+ DWORD dbcn_devicetype;
+ DWORD dbcn_reserved;
+ DWORD dbcn_resource;
+ DWORD dbcn_flags;
+};
+
+typedef struct _DEV_BROADCAST_NET DEV_BROADCAST_NET;
+typedef DEV_BROADCAST_NET DBTFAR *PDEV_BROADCAST_NET;
+
+#define DBTF_RESOURCE 0x00000001 // network resource
+#define DBTF_XPORT 0x00000002 // new transport coming or going
+#define DBTF_SLOWNET 0x00000004 // new incoming transport is slow
+ // (dbcn_resource undefined for now)
+
+#define DBT_VPOWERDAPI 0x8100 // VPOWERD API for Win95
+
+/*
+ * User-defined message types all use wParam = 0xFFFF with the
+ * lParam a pointer to the structure below.
+ *
+ * dbud_dbh - DEV_BROADCAST_HEADER must be filled in as usual.
+ *
+ * dbud_szName contains a case-sensitive ASCIIZ name which names the
+ * message. The message name consists of the vendor name, a backslash,
+ * then arbitrary user-defined ASCIIZ text. For example:
+ *
+ * "WidgetWare\QueryScannerShutdown"
+ * "WidgetWare\Video Q39S\AdapterReady"
+ *
+ * After the ASCIIZ name, arbitrary information may be provided.
+ * Make sure that dbud_dbh.dbch_size is big enough to encompass
+ * all the data. And remember that nothing in the structure may
+ * contain pointers.
+ */
+
+#define DBT_USERDEFINED 0xFFFF
+
+struct _DEV_BROADCAST_USERDEFINED { /* */
+ struct _DEV_BROADCAST_HDR dbud_dbh;
+ char dbud_szName[1]; /* ASCIIZ name */
+/* BYTE dbud_rgbUserDefined[];*/ /* User-defined contents */
+};
+
+#endif // _DBT_H
diff --git a/public/sdk/inc/dciddi.h b/public/sdk/inc/dciddi.h
new file mode 100644
index 000000000..841298887
--- /dev/null
+++ b/public/sdk/inc/dciddi.h
@@ -0,0 +1,283 @@
+/*******************************************************************
+ *
+ * FILE: dciddi.h
+ *
+ * DESCRIPTION: definitions for MS/Intel-defined DCI interface
+ *
+ * Copyright (C) 1994 Intel/Microsoft Corporation. All Rights Reserved.
+ *
+ *******************************************************************/
+
+#ifndef _INC_DCIDDI
+#define _INC_DCIDDI
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DCI Command Escapes */
+#define DCICOMMAND 3075
+#define DCI_VERSION 0x0100
+
+#define DCICREATEPRIMARYSURFACE 1
+#define DCICREATEOFFSCREENSURFACE 2
+#define DCICREATEOVERLAYSURFACE 3
+#define DCIENUMSURFACE 4
+#define DCIESCAPE 5
+
+/* DCI-Defined error codes */
+#define DCI_OK 0 /* success */
+
+/* Hard errors -- DCI will be unavailable */
+#define DCI_FAIL_GENERIC -1
+#define DCI_FAIL_UNSUPPORTEDVERSION -2
+#define DCI_FAIL_INVALIDSURFACE -3
+#define DCI_FAIL_UNSUPPORTED -4
+
+/* Soft errors -- DCI may be available later */
+#define DCI_ERR_CURRENTLYNOTAVAIL -5
+#define DCI_ERR_INVALIDRECT -6
+#define DCI_ERR_UNSUPPORTEDFORMAT -7
+#define DCI_ERR_UNSUPPORTEDMASK -8
+#define DCI_ERR_TOOBIGHEIGHT -9
+#define DCI_ERR_TOOBIGWIDTH -10
+#define DCI_ERR_TOOBIGSIZE -11
+#define DCI_ERR_OUTOFMEMORY -12
+#define DCI_ERR_INVALIDPOSITION -13
+#define DCI_ERR_INVALIDSTRETCH -14
+#define DCI_ERR_INVALIDCLIPLIST -15
+#define DCI_ERR_SURFACEISOBSCURED -16
+#define DCI_ERR_XALIGN -17
+#define DCI_ERR_YALIGN -18
+#define DCI_ERR_XYALIGN -19
+#define DCI_ERR_WIDTHALIGN -20
+#define DCI_ERR_HEIGHTALIGN -21
+
+/* success messages -- DCI call succeeded, but specified item changed */
+#define DCI_STATUS_POINTERCHANGED 1
+#define DCI_STATUS_STRIDECHANGED 2
+#define DCI_STATUS_FORMATCHANGED 4
+#define DCI_STATUS_SURFACEINFOCHANGED 8
+#define DCI_STATUS_CHROMAKEYCHANGED 16
+#define DCI_STATUS_WASSTILLDRAWING 32
+
+#define DCI_SUCCESS(error) (((DCIRVAL)error) >= 0)
+
+/* DCI Capability Flags */
+#define DCI_SURFACE_TYPE 0x0000000F
+#define DCI_PRIMARY 0x00000000
+#define DCI_OFFSCREEN 0x00000001
+#define DCI_OVERLAY 0x00000002
+
+#define DCI_VISIBLE 0x00000010
+#define DCI_CHROMAKEY 0x00000020
+#define DCI_1632_ACCESS 0x00000040
+#define DCI_DWORDSIZE 0x00000080
+#define DCI_DWORDALIGN 0x00000100
+#define DCI_WRITEONLY 0x00000200
+#define DCI_ASYNC 0x00000400
+
+#define DCI_CAN_STRETCHX 0x00001000
+#define DCI_CAN_STRETCHY 0x00002000
+#define DCI_CAN_STRETCHXY (DCI_CAN_STRETCHX | DCI_CAN_STRETCHY)
+
+#define DCI_CAN_STRETCHXN 0x00004000
+#define DCI_CAN_STRETCHYN 0x00008000
+#define DCI_CAN_STRETCHXYN (DCI_CAN_STRETCHXN | DCI_CAN_STRETCHYN)
+
+
+#define DCI_CANOVERLAY 0x00010000
+
+/*
+ * Win32 RGNDATA structure. This will be used for cliplist info. passing.
+ */
+#if (WINVER < 0x0400)
+
+#ifndef RDH_RECTANGLES
+
+typedef struct tagRECTL
+{
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECTL;
+typedef RECTL* PRECTL;
+typedef RECTL NEAR* NPRECTL;
+typedef RECTL FAR* LPRECTL;
+typedef const RECTL FAR* LPCRECTL;
+
+#define RDH_RECTANGLES 0
+
+typedef struct tagRGNDATAHEADER {
+ DWORD dwSize; /* size of structure */
+ DWORD iType; /* Will be RDH_RECTANGLES */
+ DWORD nCount; /* # of clipping rectangles */
+ DWORD nRgnSize; /* size of buffer -- can be zero */
+ RECTL rcBound; /* bounding rectangle for region*/
+} RGNDATAHEADER;
+typedef RGNDATAHEADER* PRGNDATAHEADER;
+typedef RGNDATAHEADER NEAR* NPRGNDATAHEADER;
+typedef RGNDATAHEADER FAR* LPRGNDATAHEADER;
+typedef const RGNDATAHEADER FAR* LPCRGNDATAHEADER;
+
+typedef struct tagRGNDATA {
+ RGNDATAHEADER rdh;
+ char Buffer[1];
+} RGNDATA;
+typedef RGNDATA* PRGNDATA;
+typedef RGNDATA NEAR* NPRGNDATA;
+typedef RGNDATA FAR* LPRGNDATA;
+typedef const RGNDATA FAR* LPCRGNDATA;
+
+#endif
+#endif
+
+typedef int DCIRVAL; /* return for callbacks */
+
+/**************************************************************************
+ * input structures
+ **************************************************************************/
+
+/*
+ * Used by a DCI client to provide input parameters for the
+ * DCICREATEPRIMARYSURFACE escape.
+ */
+typedef struct _DCICMD {
+ DWORD dwCommand;
+ DWORD dwParam1;
+ DWORD dwParam2;
+ DWORD dwVersion;
+ DWORD dwReserved;
+} DCICMD;
+
+/*
+ * This structure is used by a DCI client to provide input parameters for
+ * the DCICREATE... calls. The fields that are actually relevant differ for
+ * each of the three calls. Details are in the DCI Spec chapter providing
+ * the function specifications.
+ */
+typedef struct _DCICREATEINPUT {
+ DCICMD cmd; /* common header structure */
+ DWORD dwCompression; /* format of surface to be created */
+ DWORD dwMask[3]; /* for nonstandard RGB (e.g. 5-6-5, RGB32) */
+ DWORD dwWidth; /* height of the surface to be created */
+ DWORD dwHeight; /* width of input surfaces */
+ DWORD dwDCICaps; /* capabilities of surface wanted */
+ DWORD dwBitCount; /* bit depth of format to be created */
+ LPVOID lpSurface; /* pointer to an associated surface */
+} DCICREATEINPUT, FAR *LPDCICREATEINPUT;
+
+
+/**************************************************************************
+ * surface info. structures
+ **************************************************************************/
+
+/*
+ * This structure is used to return information about available support
+ * during a DCIEnumSurface call. It is also used to create a primary
+ * surface, and as a member of the larger structures returned by the
+ * offscreen and overlay calls.
+ */
+ typedef struct _DCISURFACEINFO {
+ DWORD dwSize; /* size of structure */
+ DWORD dwDCICaps; /* capability flags (stretch, etc.) */
+ DWORD dwCompression; /* format of surface to be created */
+ DWORD dwMask[3]; /* for BI_BITMASK surfaces */
+
+ DWORD dwWidth; /* width of surface */
+ DWORD dwHeight; /* height of surface */
+ LONG lStride; /* distance in bytes betw. one pixel */
+ /* and the pixel directly below it */
+ DWORD dwBitCount; /* Bits per pixel for this dwCompression */
+ DWORD dwOffSurface; /* offset of surface pointer */
+ WORD wSelSurface; /* selector of surface pointer */
+ WORD wReserved;
+
+ DWORD dwReserved1; /* reserved for provider */
+ DWORD dwReserved2; /* reserved for DCIMAN */
+ DWORD dwReserved3; /* reserved for future */
+ DCIRVAL (CALLBACK *BeginAccess) (LPVOID, LPRECT); /* BeginAccess callback */
+ void (CALLBACK *EndAccess) (LPVOID); /* EndAcess callback */
+ void (CALLBACK *DestroySurface) (LPVOID); /* Destroy surface callback */
+} DCISURFACEINFO, FAR *LPDCISURFACEINFO;
+
+
+/*
+ * This structure is used by a DCI client to provide input parameters for the
+ * DCIEnumSurface call.
+ */
+
+typedef
+void
+(*ENUM_CALLBACK) (
+ LPDCISURFACEINFO lpSurfaceInfo,
+ LPVOID lpContext
+ );
+
+typedef struct _DCIENUMINPUT {
+ DCICMD cmd; /* common header structure */
+ RECT rSrc; /* source rect. for stretch */
+ RECT rDst; /* dest. rect. for stretch */
+ void (CALLBACK *EnumCallback)(LPDCISURFACEINFO, LPVOID); /* callback for supported formats */
+ LPVOID lpContext;
+} DCIENUMINPUT, FAR *LPDCIENUMINPUT;
+
+
+/*
+ * This structure must be allocated and returned by the DCI provider in
+ * response to a DCICREATEPRIMARYSURFACE call.
+ */
+ typedef DCISURFACEINFO DCIPRIMARY, FAR *LPDCIPRIMARY;
+
+/*
+ * This structure must be allocated and returned by the DCI provider in
+ * response to a DCICREATEOFFSCREENSURFACE call.
+ */
+ typedef struct _DCIOFFSCREEN {
+
+ DCISURFACEINFO dciInfo; /* surface info */
+ DCIRVAL (CALLBACK *Draw) (LPVOID); /* copy to onscreen buffer */
+ DCIRVAL (CALLBACK *SetClipList) (LPVOID, LPRGNDATA); /* SetCliplist callback */
+ DCIRVAL (CALLBACK *SetDestination) (LPVOID, LPRECT, LPRECT); /* SetDestination callback */
+} DCIOFFSCREEN, FAR *LPDCIOFFSCREEN;
+
+
+/*
+ * This structure must be allocated and returned by the DCI provider in response
+ * to a DCICREATEOVERLAYSURFACE call.
+ */
+ typedef struct _DCIOVERLAY{
+
+ DCISURFACEINFO dciInfo; /* surface info */
+ DWORD dwChromakeyValue; /* chromakey color value */
+ DWORD dwChromakeyMask; /* specifies valid bits of value */
+} DCIOVERLAY, FAR *LPDCIOVERLAY;
+
+
+/* DCI FOURCC def.s for extended DIB formats */
+
+#ifndef YVU9
+#define YVU9 mmioFOURCC('Y','V','U','9')
+#endif
+#ifndef Y411
+#define Y411 mmioFOURCC('Y','4','1','1')
+#endif
+#ifndef YUY2
+#define YUY2 mmioFOURCC('Y','U','Y','2')
+#endif
+#ifndef YVYU
+#define YVYU mmioFOURCC('Y','V','Y','U')
+#endif
+#ifndef UYVY
+#define UYVY mmioFOURCC('U','Y','V','Y')
+#endif
+#ifndef Y211
+#define Y211 mmioFOURCC('Y','2','1','1')
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _INC_DCIDDI
diff --git a/public/sdk/inc/dciman.h b/public/sdk/inc/dciman.h
new file mode 100644
index 000000000..6a409c5a4
--- /dev/null
+++ b/public/sdk/inc/dciman.h
@@ -0,0 +1,151 @@
+/****************************************************************************
+
+ DCIMAN.H
+
+ Copyright (C) 1993-1994 Microsoft Corporation. All Rights Reserved.
+
+ DCIMAN 1.0 client interface definitions
+
+ ***************************************************************************/
+
+#ifndef _INC_DCIMAN
+#define _INC_DCIMAN
+
+#ifdef __cplusplus
+ #define __inline inline
+ extern "C" {
+#endif
+
+/****************************************************************************
+ ***************************************************************************/
+
+#include "dciddi.h" // interface to the DCI provider
+
+/****************************************************************************
+ ***************************************************************************/
+
+DECLARE_HANDLE(HWINWATCH); // context handle for WinWatch instance
+
+/****************************************************************************
+ ***************************************************************************/
+
+extern HDC WINAPI DCIOpenProvider(void);
+extern void WINAPI DCICloseProvider(HDC hdc);
+
+extern int WINAPI DCICreatePrimary(HDC hdc, LPDCISURFACEINFO FAR *lplpSurface);
+extern int WINAPI DCICreateOffscreen(HDC hdc, DWORD dwCompression, DWORD dwRedMask,
+ DWORD dwGreenMask, DWORD dwBlueMask, DWORD dwWidth, DWORD dwHeight,
+ DWORD dwDCICaps, DWORD dwBitCount, LPDCIOFFSCREEN FAR *lplpSurface);
+extern int WINAPI DCICreateOverlay(HDC hdc, LPVOID lpOffscreenSurf,
+ LPDCIOVERLAY FAR *lplpSurface);
+extern int WINAPI DCIEnum(HDC hdc, LPRECT lprDst, LPRECT lprSrc, LPVOID lpFnCallback,
+ LPVOID lpContext);
+extern DCIRVAL WINAPI DCISetSrcDestClip(LPDCIOFFSCREEN pdci, LPRECT srcrc,
+ LPRECT destrc, LPRGNDATA prd );
+
+extern HWINWATCH WINAPI WinWatchOpen(HWND hwnd);
+extern void WINAPI WinWatchClose(HWINWATCH hWW);
+
+// API changed to copy region data instead of return pointer to it
+extern UINT WINAPI WinWatchGetClipList(HWINWATCH hWW, LPRECT prc,
+ UINT size, LPRGNDATA prd);
+extern BOOL WINAPI WinWatchDidStatusChange(HWINWATCH hWW);
+
+extern DWORD WINAPI GetWindowRegionData(HWND hwnd, DWORD size, LPRGNDATA prd);
+extern DWORD WINAPI GetDCRegionData(HDC hdc, DWORD size, LPRGNDATA prd);
+
+
+#define WINWATCHNOTIFY_START 0
+#define WINWATCHNOTIFY_STOP 1
+#define WINWATCHNOTIFY_DESTROY 2
+#define WINWATCHNOTIFY_CHANGING 3
+#define WINWATCHNOTIFY_CHANGED 4
+typedef void (CALLBACK *WINWATCHNOTIFYPROC)(HWINWATCH hww, HWND hwnd, DWORD code, LPARAM lParam);
+
+extern BOOL WINAPI WinWatchNotify(HWINWATCH hWW, WINWATCHNOTIFYPROC NotifyCallback,
+ LPARAM NotifyParam );
+
+#ifdef WIN32
+/****************************************************************************
+ helper functions to call DCIMAN16.DLL
+ ***************************************************************************/
+extern void WINAPI DCIEndAccess(LPDCISURFACEINFO pdci);
+extern DCIRVAL WINAPI DCIBeginAccess(LPDCISURFACEINFO pdci, int x, int y, int dx, int dy);
+extern void WINAPI DCIDestroy(LPDCISURFACEINFO pdci);
+extern DCIRVAL WINAPI DCIDraw(LPDCIOFFSCREEN pdci);
+extern DCIRVAL WINAPI DCISetClipList(LPDCIOFFSCREEN pdci, LPRGNDATA prd);
+extern DCIRVAL WINAPI DCISetDestination(LPDCIOFFSCREEN pdci, LPRECT dst, LPRECT src);
+
+
+#else
+
+extern int WINAPI DCISendCommand(HDC hdc, VOID FAR *pcmd, int nSize, VOID FAR * FAR * lplpOut);
+
+/****************************************************************************
+ helper macros to call DCI callbacks
+ ***************************************************************************/
+__inline void DCIDestroy(LPDCISURFACEINFO pdci)
+{
+ if( pdci->DestroySurface != NULL ) {
+ pdci->DestroySurface(pdci);
+ }
+}
+
+__inline void DCIEndAccess(LPDCISURFACEINFO pdci)
+{
+ if( pdci->EndAccess != NULL ) {
+ pdci->EndAccess(pdci);
+ }
+}
+
+__inline DCIRVAL DCIBeginAccess(LPDCISURFACEINFO pdci, int x, int y, int dx, int dy)
+{
+ RECT rc;
+
+ if( pdci->BeginAccess != NULL ) {
+ rc.left=x;
+ rc.top=y;
+ rc.right = rc.left+dx;
+ rc.bottom = rc.top+dy;
+ return pdci->BeginAccess(pdci, &rc);
+ } else {
+ return DCI_OK;
+ }
+}
+
+__inline DCIRVAL DCIDraw(LPDCIOFFSCREEN pdci)
+{
+ if( pdci->Draw != NULL ) {
+ return pdci->Draw(pdci);
+ } else {
+ return DCI_OK;
+ }
+}
+
+__inline DCIRVAL DCISetClipList(LPDCIOFFSCREEN pdci, LPRGNDATA prd)
+{
+ if( pdci->SetClipList != NULL ) {
+ return pdci->SetClipList(pdci, prd);
+ } else {
+ return DCI_OK;
+ }
+}
+
+__inline DCIRVAL DCISetDestination(LPDCIOFFSCREEN pdci, LPRECT dst, LPRECT src)
+{
+ if( pdci->SetDestination != NULL ) {
+ return pdci->SetDestination(pdci, dst, src);
+ } else {
+ return DCI_OK;
+ }
+}
+#endif
+
+/****************************************************************************
+ ***************************************************************************/
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif // _INC_DCIMAN
diff --git a/public/sdk/inc/dde.h b/public/sdk/inc/dde.h
new file mode 100644
index 000000000..9c0afd8ed
--- /dev/null
+++ b/public/sdk/inc/dde.h
@@ -0,0 +1,167 @@
+/*****************************************************************************\
+* *
+* dde.h - Dynamic Data Exchange structures and definitions *
+* *
+* Copyright (c) 1993-1996, Microsoft Corp. All rights reserved *
+* *
+\*****************************************************************************/
+#ifndef _DDEHEADER_INCLUDED_
+#define _DDEHEADER_INCLUDED_
+
+#ifndef _WINDEF_
+#include <windef.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// begin_r_dde
+
+/* DDE window messages */
+
+#define WM_DDE_FIRST 0x03E0
+#define WM_DDE_INITIATE (WM_DDE_FIRST)
+#define WM_DDE_TERMINATE (WM_DDE_FIRST+1)
+#define WM_DDE_ADVISE (WM_DDE_FIRST+2)
+#define WM_DDE_UNADVISE (WM_DDE_FIRST+3)
+#define WM_DDE_ACK (WM_DDE_FIRST+4)
+#define WM_DDE_DATA (WM_DDE_FIRST+5)
+#define WM_DDE_REQUEST (WM_DDE_FIRST+6)
+#define WM_DDE_POKE (WM_DDE_FIRST+7)
+#define WM_DDE_EXECUTE (WM_DDE_FIRST+8)
+#define WM_DDE_LAST (WM_DDE_FIRST+8)
+
+// end_r_dde
+
+/*----------------------------------------------------------------------------
+| DDEACK structure
+|
+| Structure of wStatus (LOWORD(lParam)) in WM_DDE_ACK message
+| sent in response to a WM_DDE_DATA, WM_DDE_REQUEST, WM_DDE_POKE,
+| WM_DDE_ADVISE, or WM_DDE_UNADVISE message.
+|
+----------------------------------------------------------------------------*/
+
+typedef struct {
+ unsigned short bAppReturnCode:8,
+ reserved:6,
+ fBusy:1,
+ fAck:1;
+} DDEACK;
+
+
+/*----------------------------------------------------------------------------
+| DDEADVISE structure
+|
+| WM_DDE_ADVISE parameter structure for hOptions (LOWORD(lParam))
+|
+----------------------------------------------------------------------------*/
+
+typedef struct {
+ unsigned short reserved:14,
+ fDeferUpd:1,
+ fAckReq:1;
+ short cfFormat;
+} DDEADVISE;
+
+
+/*----------------------------------------------------------------------------
+| DDEDATA structure
+|
+| WM_DDE_DATA parameter structure for hData (LOWORD(lParam)).
+| The actual size of this structure depends on the size of
+| the Value array.
+|
+----------------------------------------------------------------------------*/
+
+typedef struct {
+ unsigned short unused:12,
+ fResponse:1,
+ fRelease:1,
+ reserved:1,
+ fAckReq:1;
+ short cfFormat;
+ BYTE Value[1];
+} DDEDATA;
+
+
+/*----------------------------------------------------------------------------
+| DDEPOKE structure
+|
+| WM_DDE_POKE parameter structure for hData (LOWORD(lParam)).
+| The actual size of this structure depends on the size of
+| the Value array.
+|
+----------------------------------------------------------------------------*/
+
+typedef struct {
+ unsigned short unused:13, /* Earlier versions of DDE.H incorrectly */
+ /* 12 unused bits. */
+ fRelease:1,
+ fReserved:2;
+ short cfFormat;
+ BYTE Value[1]; /* This member was named rgb[1] in previous */
+ /* versions of DDE.H */
+
+} DDEPOKE;
+
+/*----------------------------------------------------------------------------
+The following typedef's were used in previous versions of the Windows SDK.
+They are still valid. The above typedef's define exactly the same structures
+as those below. The above typedef names are recommended, however, as they
+are more meaningful.
+
+Note that the DDEPOKE structure typedef'ed in earlier versions of DDE.H did
+not correctly define the bit positions.
+----------------------------------------------------------------------------*/
+
+typedef struct {
+ unsigned short unused:13,
+ fRelease:1,
+ fDeferUpd:1,
+ fAckReq:1;
+ short cfFormat;
+} DDELN;
+
+typedef struct {
+ unsigned short unused:12,
+ fAck:1,
+ fRelease:1,
+ fReserved:1,
+ fAckReq:1;
+ short cfFormat;
+ BYTE rgb[1];
+} DDEUP;
+
+
+/*
+ * DDE SECURITY
+ */
+
+BOOL
+WINAPI
+DdeSetQualityOfService(
+ HWND hwndClient,
+ CONST SECURITY_QUALITY_OF_SERVICE *pqosNew,
+ PSECURITY_QUALITY_OF_SERVICE pqosPrev);
+
+BOOL
+WINAPI
+ImpersonateDdeClientWindow(
+ HWND hWndClient,
+ HWND hWndServer);
+
+/*
+ * DDE message packing APIs
+ */
+LONG APIENTRY PackDDElParam(UINT msg, UINT uiLo, UINT uiHi);
+BOOL APIENTRY UnpackDDElParam(UINT msg, LONG lParam, PUINT puiLo, PUINT puiHi);
+BOOL APIENTRY FreeDDElParam(UINT msg, LONG lParam);
+LONG APIENTRY ReuseDDElParam(LONG lParam, UINT msgIn, UINT msgOut, UINT uiLo, UINT uiHi);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _DDEHEADER_INCLUDED_
diff --git a/public/sdk/inc/ddeml.h b/public/sdk/inc/ddeml.h
new file mode 100644
index 000000000..c2bb6ca2e
--- /dev/null
+++ b/public/sdk/inc/ddeml.h
@@ -0,0 +1,497 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects --*/
+
+/*****************************************************************************\
+* *
+* ddeml.h - DDEML API header file *
+* *
+* Version 3.10 *
+* *
+* Copyright (c) 1993-96, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+#ifndef _INC_DDEMLH
+#define _INC_DDEMLH
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/******** public types ********/
+
+DECLARE_HANDLE(HCONVLIST);
+DECLARE_HANDLE(HCONV);
+DECLARE_HANDLE(HSZ);
+DECLARE_HANDLE(HDDEDATA);
+#define EXPENTRY CALLBACK
+
+/* the following structure is for use with XTYP_WILDCONNECT processing. */
+
+typedef struct tagHSZPAIR {
+ HSZ hszSvc;
+ HSZ hszTopic;
+} HSZPAIR;
+typedef HSZPAIR FAR *PHSZPAIR;
+
+/* The following structure is used by DdeConnect() and DdeConnectList() and
+ by XTYP_CONNECT and XTYP_WILDCONNECT callbacks. */
+
+typedef struct tagCONVCONTEXT {
+ UINT cb; /* set to sizeof(CONVCONTEXT) */
+ UINT wFlags; /* none currently defined. */
+ UINT wCountryID; /* country code for topic/item strings used. */
+ int iCodePage; /* codepage used for topic/item strings. */
+ DWORD dwLangID; /* language ID for topic/item strings. */
+ DWORD dwSecurity; /* Private security code. */
+ SECURITY_QUALITY_OF_SERVICE qos; /* client side's quality of service */
+} CONVCONTEXT;
+typedef CONVCONTEXT FAR *PCONVCONTEXT;
+
+
+/* The following structure is used by DdeQueryConvInfo(): */
+
+typedef struct tagCONVINFO {
+ DWORD cb; /* sizeof(CONVINFO) */
+ DWORD hUser; /* user specified field */
+ HCONV hConvPartner; /* hConv on other end or 0 if non-ddemgr partner */
+ HSZ hszSvcPartner; /* app name of partner if obtainable */
+ HSZ hszServiceReq; /* AppName requested for connection */
+ HSZ hszTopic; /* Topic name for conversation */
+ HSZ hszItem; /* transaction item name or NULL if quiescent */
+ UINT wFmt; /* transaction format or NULL if quiescent */
+ UINT wType; /* XTYP_ for current transaction */
+ UINT wStatus; /* ST_ constant for current conversation */
+ UINT wConvst; /* XST_ constant for current transaction */
+ UINT wLastError; /* last transaction error. */
+ HCONVLIST hConvList; /* parent hConvList if this conversation is in a list */
+ CONVCONTEXT ConvCtxt; /* conversation context */
+ HWND hwnd; /* window handle for this conversation */
+ HWND hwndPartner; /* partner window handle for this conversation */
+} CONVINFO;
+typedef CONVINFO FAR *PCONVINFO;
+
+/***** conversation states (usState) *****/
+
+#define XST_NULL 0 /* quiescent states */
+#define XST_INCOMPLETE 1
+#define XST_CONNECTED 2
+#define XST_INIT1 3 /* mid-initiation states */
+#define XST_INIT2 4
+#define XST_REQSENT 5 /* active conversation states */
+#define XST_DATARCVD 6
+#define XST_POKESENT 7
+#define XST_POKEACKRCVD 8
+#define XST_EXECSENT 9
+#define XST_EXECACKRCVD 10
+#define XST_ADVSENT 11
+#define XST_UNADVSENT 12
+#define XST_ADVACKRCVD 13
+#define XST_UNADVACKRCVD 14
+#define XST_ADVDATASENT 15
+#define XST_ADVDATAACKRCVD 16
+
+/* used in LOWORD(dwData1) of XTYP_ADVREQ callbacks... */
+#define CADV_LATEACK 0xFFFF
+
+/***** conversation status bits (fsStatus) *****/
+
+#define ST_CONNECTED 0x0001
+#define ST_ADVISE 0x0002
+#define ST_ISLOCAL 0x0004
+#define ST_BLOCKED 0x0008
+#define ST_CLIENT 0x0010
+#define ST_TERMINATED 0x0020
+#define ST_INLIST 0x0040
+#define ST_BLOCKNEXT 0x0080
+#define ST_ISSELF 0x0100
+
+
+/* DDE constants for wStatus field */
+
+#define DDE_FACK 0x8000
+#define DDE_FBUSY 0x4000
+#define DDE_FDEFERUPD 0x4000
+#define DDE_FACKREQ 0x8000
+#define DDE_FRELEASE 0x2000
+#define DDE_FREQUESTED 0x1000
+#define DDE_FAPPSTATUS 0x00ff
+#define DDE_FNOTPROCESSED 0x0000
+
+#define DDE_FACKRESERVED (~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS))
+#define DDE_FADVRESERVED (~(DDE_FACKREQ | DDE_FDEFERUPD))
+#define DDE_FDATRESERVED (~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED))
+#define DDE_FPOKRESERVED (~(DDE_FRELEASE))
+
+/***** message filter hook types *****/
+
+#define MSGF_DDEMGR 0x8001
+
+/***** codepage constants ****/
+
+#define CP_WINANSI 1004 /* default codepage for windows & old DDE convs. */
+#define CP_WINUNICODE 1200
+#ifdef UNICODE
+#define CP_WINNEUTRAL CP_WINUNICODE
+#else // !UNICODE
+#define CP_WINNEUTRAL CP_WINANSI
+#endif // !UNICODE
+
+/***** transaction types *****/
+
+#define XTYPF_NOBLOCK 0x0002 /* CBR_BLOCK will not work */
+#define XTYPF_NODATA 0x0004 /* DDE_FDEFERUPD */
+#define XTYPF_ACKREQ 0x0008 /* DDE_FACKREQ */
+
+#define XCLASS_MASK 0xFC00
+#define XCLASS_BOOL 0x1000
+#define XCLASS_DATA 0x2000
+#define XCLASS_FLAGS 0x4000
+#define XCLASS_NOTIFICATION 0x8000
+
+#define XTYP_ERROR (0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK )
+#define XTYP_ADVDATA (0x0010 | XCLASS_FLAGS )
+#define XTYP_ADVREQ (0x0020 | XCLASS_DATA | XTYPF_NOBLOCK )
+#define XTYP_ADVSTART (0x0030 | XCLASS_BOOL )
+#define XTYP_ADVSTOP (0x0040 | XCLASS_NOTIFICATION)
+#define XTYP_EXECUTE (0x0050 | XCLASS_FLAGS )
+#define XTYP_CONNECT (0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK)
+#define XTYP_CONNECT_CONFIRM (0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
+#define XTYP_XACT_COMPLETE (0x0080 | XCLASS_NOTIFICATION )
+#define XTYP_POKE (0x0090 | XCLASS_FLAGS )
+#define XTYP_REGISTER (0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
+#define XTYP_REQUEST (0x00B0 | XCLASS_DATA )
+#define XTYP_DISCONNECT (0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
+#define XTYP_UNREGISTER (0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
+#define XTYP_WILDCONNECT (0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK)
+
+#define XTYP_MASK 0x00F0
+#define XTYP_SHIFT 4 /* shift to turn XTYP_ into an index */
+
+/***** Timeout constants *****/
+
+#define TIMEOUT_ASYNC 0xFFFFFFFF
+
+/***** Transaction ID constants *****/
+
+#define QID_SYNC 0xFFFFFFFF
+
+/****** public strings used in DDE ******/
+
+#ifdef UNICODE
+#define SZDDESYS_TOPIC L"System"
+#define SZDDESYS_ITEM_TOPICS L"Topics"
+#define SZDDESYS_ITEM_SYSITEMS L"SysItems"
+#define SZDDESYS_ITEM_RTNMSG L"ReturnMessage"
+#define SZDDESYS_ITEM_STATUS L"Status"
+#define SZDDESYS_ITEM_FORMATS L"Formats"
+#define SZDDESYS_ITEM_HELP L"Help"
+#define SZDDE_ITEM_ITEMLIST L"TopicItemList"
+#else
+#define SZDDESYS_TOPIC "System"
+#define SZDDESYS_ITEM_TOPICS "Topics"
+#define SZDDESYS_ITEM_SYSITEMS "SysItems"
+#define SZDDESYS_ITEM_RTNMSG "ReturnMessage"
+#define SZDDESYS_ITEM_STATUS "Status"
+#define SZDDESYS_ITEM_FORMATS "Formats"
+#define SZDDESYS_ITEM_HELP "Help"
+#define SZDDE_ITEM_ITEMLIST "TopicItemList"
+#endif
+
+
+/****** API entry points ******/
+
+typedef HDDEDATA CALLBACK FNCALLBACK(UINT wType, UINT wFmt, HCONV hConv,
+ HSZ hsz1, HSZ hsz2, HDDEDATA hData, DWORD dwData1, DWORD dwData2);
+typedef HDDEDATA (CALLBACK *PFNCALLBACK)(UINT wType, UINT wFmt, HCONV hConv,
+ HSZ hsz1, HSZ hsz2, HDDEDATA hData, DWORD dwData1, DWORD dwData2);
+
+#define CBR_BLOCK ((HDDEDATA)0xffffffffL)
+
+/* DLL registration functions */
+
+UINT WINAPI DdeInitializeA(LPDWORD pidInst, PFNCALLBACK pfnCallback,
+ DWORD afCmd, DWORD ulRes);
+UINT WINAPI DdeInitializeW(LPDWORD pidInst, PFNCALLBACK pfnCallback,
+ DWORD afCmd, DWORD ulRes);
+#ifdef UNICODE
+#define DdeInitialize DdeInitializeW
+#else
+#define DdeInitialize DdeInitializeA
+#endif // !UNICODE
+
+/*
+ * Callback filter flags for use with standard apps.
+ */
+
+#define CBF_FAIL_SELFCONNECTIONS 0x00001000
+#define CBF_FAIL_CONNECTIONS 0x00002000
+#define CBF_FAIL_ADVISES 0x00004000
+#define CBF_FAIL_EXECUTES 0x00008000
+#define CBF_FAIL_POKES 0x00010000
+#define CBF_FAIL_REQUESTS 0x00020000
+#define CBF_FAIL_ALLSVRXACTIONS 0x0003f000
+
+#define CBF_SKIP_CONNECT_CONFIRMS 0x00040000
+#define CBF_SKIP_REGISTRATIONS 0x00080000
+#define CBF_SKIP_UNREGISTRATIONS 0x00100000
+#define CBF_SKIP_DISCONNECTS 0x00200000
+#define CBF_SKIP_ALLNOTIFICATIONS 0x003c0000
+
+/*
+ * Application command flags
+ */
+#define APPCMD_CLIENTONLY 0x00000010L
+#define APPCMD_FILTERINITS 0x00000020L
+#define APPCMD_MASK 0x00000FF0L
+
+/*
+ * Application classification flags
+ */
+#define APPCLASS_STANDARD 0x00000000L
+#define APPCLASS_MASK 0x0000000FL
+
+
+
+BOOL WINAPI DdeUninitialize(DWORD idInst);
+
+/*
+ * conversation enumeration functions
+ */
+
+HCONVLIST WINAPI DdeConnectList(DWORD idInst, HSZ hszService, HSZ hszTopic,
+ HCONVLIST hConvList, PCONVCONTEXT pCC);
+HCONV WINAPI DdeQueryNextServer(HCONVLIST hConvList, HCONV hConvPrev);
+BOOL WINAPI DdeDisconnectList(HCONVLIST hConvList);
+
+/*
+ * conversation control functions
+ */
+
+HCONV WINAPI DdeConnect(DWORD idInst, HSZ hszService, HSZ hszTopic,
+ PCONVCONTEXT pCC);
+BOOL WINAPI DdeDisconnect(HCONV hConv);
+HCONV WINAPI DdeReconnect(HCONV hConv);
+UINT WINAPI DdeQueryConvInfo(HCONV hConv, DWORD idTransaction, PCONVINFO pConvInfo);
+BOOL WINAPI DdeSetUserHandle(HCONV hConv, DWORD id, DWORD hUser);
+BOOL WINAPI DdeAbandonTransaction(DWORD idInst, HCONV hConv, DWORD idTransaction);
+
+
+/*
+ * app server interface functions
+ */
+
+BOOL WINAPI DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem);
+BOOL WINAPI DdeEnableCallback(DWORD idInst, HCONV hConv, UINT wCmd);
+BOOL WINAPI DdeImpersonateClient(HCONV hConv);
+
+#define EC_ENABLEALL 0
+#define EC_ENABLEONE ST_BLOCKNEXT
+#define EC_DISABLE ST_BLOCKED
+#define EC_QUERYWAITING 2
+
+
+HDDEDATA WINAPI DdeNameService(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT afCmd);
+
+#define DNS_REGISTER 0x0001
+#define DNS_UNREGISTER 0x0002
+#define DNS_FILTERON 0x0004
+#define DNS_FILTEROFF 0x0008
+
+/*
+ * app client interface functions
+ */
+
+HDDEDATA WINAPI DdeClientTransaction(LPBYTE pData, DWORD cbData,
+ HCONV hConv, HSZ hszItem, UINT wFmt, UINT wType,
+ DWORD dwTimeout, LPDWORD pdwResult);
+
+/*
+ *data transfer functions
+ */
+
+HDDEDATA WINAPI DdeCreateDataHandle(DWORD idInst, LPBYTE pSrc, DWORD cb,
+ DWORD cbOff, HSZ hszItem, UINT wFmt, UINT afCmd);
+HDDEDATA WINAPI DdeAddData(HDDEDATA hData, LPBYTE pSrc, DWORD cb, DWORD cbOff);
+DWORD WINAPI DdeGetData(HDDEDATA hData, LPBYTE pDst, DWORD cbMax, DWORD cbOff);
+LPBYTE WINAPI DdeAccessData(HDDEDATA hData, LPDWORD pcbDataSize);
+BOOL WINAPI DdeUnaccessData(HDDEDATA hData);
+BOOL WINAPI DdeFreeDataHandle(HDDEDATA hData);
+
+#define HDATA_APPOWNED 0x0001
+
+
+UINT WINAPI DdeGetLastError(DWORD idInst);
+
+#define DMLERR_NO_ERROR 0 /* must be 0 */
+
+#define DMLERR_FIRST 0x4000
+
+#define DMLERR_ADVACKTIMEOUT 0x4000
+#define DMLERR_BUSY 0x4001
+#define DMLERR_DATAACKTIMEOUT 0x4002
+#define DMLERR_DLL_NOT_INITIALIZED 0x4003
+#define DMLERR_DLL_USAGE 0x4004
+#define DMLERR_EXECACKTIMEOUT 0x4005
+#define DMLERR_INVALIDPARAMETER 0x4006
+#define DMLERR_LOW_MEMORY 0x4007
+#define DMLERR_MEMORY_ERROR 0x4008
+#define DMLERR_NOTPROCESSED 0x4009
+#define DMLERR_NO_CONV_ESTABLISHED 0x400a
+#define DMLERR_POKEACKTIMEOUT 0x400b
+#define DMLERR_POSTMSG_FAILED 0x400c
+#define DMLERR_REENTRANCY 0x400d
+#define DMLERR_SERVER_DIED 0x400e
+#define DMLERR_SYS_ERROR 0x400f
+#define DMLERR_UNADVACKTIMEOUT 0x4010
+#define DMLERR_UNFOUND_QUEUE_ID 0x4011
+
+#define DMLERR_LAST 0x4011
+
+HSZ WINAPI DdeCreateStringHandleA(DWORD idInst, LPCSTR psz, int iCodePage);
+HSZ WINAPI DdeCreateStringHandleW(DWORD idInst, LPCWSTR psz, int iCodePage);
+#ifdef UNICODE
+#define DdeCreateStringHandle DdeCreateStringHandleW
+#else
+#define DdeCreateStringHandle DdeCreateStringHandleA
+#endif // !UNICODE
+DWORD WINAPI DdeQueryStringA(DWORD idInst, HSZ hsz, LPSTR psz, DWORD cchMax, int iCodePage);
+DWORD WINAPI DdeQueryStringW(DWORD idInst, HSZ hsz, LPWSTR psz, DWORD cchMax, int iCodePage);
+#ifdef UNICODE
+#define DdeQueryString DdeQueryStringW
+#else
+#define DdeQueryString DdeQueryStringA
+#endif // !UNICODE
+BOOL WINAPI DdeFreeStringHandle(DWORD idInst, HSZ hsz);
+BOOL WINAPI DdeKeepStringHandle(DWORD idInst, HSZ hsz);
+int WINAPI DdeCmpStringHandles(HSZ hsz1, HSZ hsz2);
+
+
+#ifndef NODDEMLSPY
+/*
+ * DDEML public debugging header file info
+ */
+
+typedef struct tagDDEML_MSG_HOOK_DATA { // new for NT
+ UINT uiLo; // unpacked lo and hi parts of lParam
+ UINT uiHi;
+ DWORD cbData; // amount of data in message, if any. May be > than 32 bytes.
+ DWORD Data[8]; // data peeking by DDESPY is limited to 32 bytes.
+} DDEML_MSG_HOOK_DATA, *PDDEML_MSG_HOOK_DATA;
+
+
+typedef struct tagMONMSGSTRUCT {
+ UINT cb;
+ HWND hwndTo;
+ DWORD dwTime;
+ HANDLE hTask;
+ UINT wMsg;
+ WPARAM wParam;
+ LPARAM lParam;
+ DDEML_MSG_HOOK_DATA dmhd; // new for NT
+} MONMSGSTRUCT, *PMONMSGSTRUCT;
+
+typedef struct tagMONCBSTRUCT {
+ UINT cb;
+ DWORD dwTime;
+ HANDLE hTask;
+ DWORD dwRet;
+ UINT wType;
+ UINT wFmt;
+ HCONV hConv;
+ HSZ hsz1;
+ HSZ hsz2;
+ HDDEDATA hData;
+ DWORD dwData1;
+ DWORD dwData2;
+ CONVCONTEXT cc; // new for NT for XTYP_CONNECT callbacks
+ DWORD cbData; // new for NT for data peeking
+ DWORD Data[8]; // new for NT for data peeking
+} MONCBSTRUCT, *PMONCBSTRUCT;
+
+typedef struct tagMONHSZSTRUCTA {
+ UINT cb;
+ BOOL fsAction; /* MH_ value */
+ DWORD dwTime;
+ HSZ hsz;
+ HANDLE hTask;
+ CHAR str[1];
+} MONHSZSTRUCTA, *PMONHSZSTRUCTA;
+typedef struct tagMONHSZSTRUCTW {
+ UINT cb;
+ BOOL fsAction; /* MH_ value */
+ DWORD dwTime;
+ HSZ hsz;
+ HANDLE hTask;
+ WCHAR str[1];
+} MONHSZSTRUCTW, *PMONHSZSTRUCTW;
+#ifdef UNICODE
+typedef MONHSZSTRUCTW MONHSZSTRUCT;
+typedef PMONHSZSTRUCTW PMONHSZSTRUCT;
+#else
+typedef MONHSZSTRUCTA MONHSZSTRUCT;
+typedef PMONHSZSTRUCTA PMONHSZSTRUCT;
+#endif // UNICODE
+
+#define MH_CREATE 1
+#define MH_KEEP 2
+#define MH_DELETE 3
+#define MH_CLEANUP 4
+
+typedef struct tagMONERRSTRUCT {
+ UINT cb;
+ UINT wLastError;
+ DWORD dwTime;
+ HANDLE hTask;
+} MONERRSTRUCT, *PMONERRSTRUCT;
+
+typedef struct tagMONLINKSTRUCT {
+ UINT cb;
+ DWORD dwTime;
+ HANDLE hTask;
+ BOOL fEstablished;
+ BOOL fNoData;
+ HSZ hszSvc;
+ HSZ hszTopic;
+ HSZ hszItem;
+ UINT wFmt;
+ BOOL fServer;
+ HCONV hConvServer;
+ HCONV hConvClient;
+} MONLINKSTRUCT, *PMONLINKSTRUCT;
+
+typedef struct tagMONCONVSTRUCT {
+ UINT cb;
+ BOOL fConnect;
+ DWORD dwTime;
+ HANDLE hTask;
+ HSZ hszSvc;
+ HSZ hszTopic;
+ HCONV hConvClient; // Globally unique value != apps local hConv
+ HCONV hConvServer; // Globally unique value != apps local hConv
+} MONCONVSTRUCT, *PMONCONVSTRUCT;
+
+#define MAX_MONITORS 4
+#define APPCLASS_MONITOR 0x00000001L
+#define XTYP_MONITOR (0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
+
+/*
+ * Callback filter flags for use with MONITOR apps - 0 implies no monitor
+ * callbacks.
+ */
+#define MF_HSZ_INFO 0x01000000
+#define MF_SENDMSGS 0x02000000
+#define MF_POSTMSGS 0x04000000
+#define MF_CALLBACKS 0x08000000
+#define MF_ERRORS 0x10000000
+#define MF_LINKS 0x20000000
+#define MF_CONV 0x40000000
+
+#define MF_MASK 0xFF000000
+#endif /* NODDEMLSPY */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _INC_DDEMLH */
+
+
diff --git a/public/sdk/inc/ddraw.h b/public/sdk/inc/ddraw.h
new file mode 100644
index 000000000..ecce453f1
--- /dev/null
+++ b/public/sdk/inc/ddraw.h
@@ -0,0 +1,3105 @@
+/*==========================================================================;
+ *
+ * Copyright (C) 1994-1996 Microsoft Corporation. All Rights Reserved.
+ *
+ * File: ddraw.h
+ * Content: DirectDraw include file
+ *
+ ***************************************************************************/
+
+#ifndef __DDRAW_INCLUDED__
+#define __DDRAW_INCLUDED__
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+#else
+#define IUnknown void
+#ifndef WINNT
+ #define CO_E_NOTINITIALIZED 0x800401F0L
+#endif
+#endif
+
+#define _FACDD 0x876
+#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * GUIDS used by DirectDraw objects
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+DEFINE_GUID( CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
+DEFINE_GUID( CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
+DEFINE_GUID( IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
+DEFINE_GUID( IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
+
+DEFINE_GUID( IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+
+#endif
+
+/*============================================================================
+ *
+ * DirectDraw Structures
+ *
+ * Various structures used to invoke DirectDraw.
+ *
+ *==========================================================================*/
+
+struct IDirectDraw;
+struct IDirectDrawSurface;
+struct IDirectDrawPalette;
+struct IDirectDrawClipper;
+
+typedef struct IDirectDraw FAR *LPDIRECTDRAW;
+typedef struct IDirectDraw2 FAR *LPDIRECTDRAW2;
+typedef struct IDirectDrawSurface FAR *LPDIRECTDRAWSURFACE;
+typedef struct IDirectDrawSurface2 FAR *LPDIRECTDRAWSURFACE2;
+
+typedef struct IDirectDrawPalette FAR *LPDIRECTDRAWPALETTE;
+typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER;
+
+typedef struct _DDFXROP FAR *LPDDFXROP;
+typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC;
+
+/*
+ * API's
+ */
+#if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM )
+//#if defined( _WIN32 ) && !defined( _NO_ENUM )
+ typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
+ typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID);
+ extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext );
+ extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext );
+ #ifdef UNICODE
+ typedef LPDDENUMCALLBACKW LPDDENUMCALLBACK;
+ #define DirectDrawEnumerate DirectDrawEnumerateW
+ #else
+ typedef LPDDENUMCALLBACKA LPDDENUMCALLBACK;
+ #define DirectDrawEnumerate DirectDrawEnumerateA
+ #endif
+ extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
+ extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter );
+ #ifdef WINNT
+ //This is the user-mode entry stub to the kernel mode procedure.
+ extern HRESULT NtDirectDrawCreate( GUID FAR *lpGUID, HANDLE *lplpDD, IUnknown FAR *pUnkOuter );
+ #endif
+#endif
+
+#define REGSTR_KEY_DDHW_DESCRIPTION "Description"
+#define REGSTR_KEY_DDHW_DRIVERNAME "DriverName"
+#define REGSTR_PATH_DDHW "Hardware\\DirectDrawDrivers"
+
+#define DDCREATE_HARDWAREONLY 0x00000001l
+#define DDCREATE_EMULATIONONLY 0x00000002l
+
+#ifdef WINNT
+typedef long HRESULT;
+#endif
+
+//#ifndef WINNT
+typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
+typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
+//#endif
+/*
+ * DDCOLORKEY
+ */
+typedef struct _DDCOLORKEY
+{
+ DWORD dwColorSpaceLowValue; // low boundary of color space that is to
+ // be treated as Color Key, inclusive
+ DWORD dwColorSpaceHighValue; // high boundary of color space that is
+ // to be treated as Color Key, inclusive
+} DDCOLORKEY;
+
+typedef DDCOLORKEY FAR* LPDDCOLORKEY;
+
+/*
+ * DDBLTFX
+ * Used to pass override information to the DIRECTDRAWSURFACE callback Blt.
+ */
+typedef struct _DDBLTFX
+{
+ DWORD dwSize; // size of structure
+ DWORD dwDDFX; // FX operations
+ DWORD dwROP; // Win32 raster operations
+ DWORD dwDDROP; // Raster operations new for DirectDraw
+ DWORD dwRotationAngle; // Rotation angle for blt
+ DWORD dwZBufferOpCode; // ZBuffer compares
+ DWORD dwZBufferLow; // Low limit of Z buffer
+ DWORD dwZBufferHigh; // High limit of Z buffer
+ DWORD dwZBufferBaseDest; // Destination base value
+ DWORD dwZDestConstBitDepth; // Bit depth used to specify Z constant for destination
+ union
+ {
+ DWORD dwZDestConst; // Constant to use as Z buffer for dest
+ LPDIRECTDRAWSURFACE lpDDSZBufferDest; // Surface to use as Z buffer for dest
+ };
+ DWORD dwZSrcConstBitDepth; // Bit depth used to specify Z constant for source
+ union
+ {
+ DWORD dwZSrcConst; // Constant to use as Z buffer for src
+ LPDIRECTDRAWSURFACE lpDDSZBufferSrc; // Surface to use as Z buffer for src
+ };
+ DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend
+ DWORD dwAlphaEdgeBlend; // Alpha for edge blending
+ DWORD dwReserved;
+ DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination
+ union
+ {
+ DWORD dwAlphaDestConst; // Constant to use as Alpha Channel
+ LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as Alpha Channel
+ };
+ DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source
+ union
+ {
+ DWORD dwAlphaSrcConst; // Constant to use as Alpha Channel
+ LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as Alpha Channel
+ };
+ union
+ {
+ DWORD dwFillColor; // color in RGB or Palettized
+ DWORD dwFillDepth; // depth value for z-buffer
+ LPDIRECTDRAWSURFACE lpDDSPattern; // Surface to use as pattern
+ };
+ DDCOLORKEY ddckDestColorkey; // DestColorkey override
+ DDCOLORKEY ddckSrcColorkey; // SrcColorkey override
+} DDBLTFX;
+
+typedef DDBLTFX FAR* LPDDBLTFX;
+
+
+/*
+ * DDSCAPS
+ */
+typedef struct _DDSCAPS
+{
+ DWORD dwCaps; // capabilities of surface wanted
+} DDSCAPS;
+
+typedef DDSCAPS FAR* LPDDSCAPS;
+
+/*
+ * DDCAPS
+ */
+#define DD_ROP_SPACE (256/32) // space required to store ROP array
+
+typedef struct _DDCAPS
+{
+ DWORD dwSize; // size of the DDDRIVERCAPS structure
+ DWORD dwCaps; // driver specific capabilities
+ DWORD dwCaps2; // more driver specific capabilites
+ DWORD dwCKeyCaps; // color key capabilities of the surface
+ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
+ DWORD dwPalCaps; // palette capabilities
+ DWORD dwSVCaps; // stereo vision capabilities
+ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+ DWORD dwVidMemTotal; // total amount of video memory
+ DWORD dwVidMemFree; // amount of free video memory
+ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+ DWORD dwNumFourCCCodes; // number of four cc codes
+ DWORD dwAlignBoundarySrc; // source rectangle alignment
+ DWORD dwAlignSizeSrc; // source rectangle byte size
+ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+ DWORD dwAlignSizeDest; // dest rectangle byte size
+ DWORD dwAlignStrideAlign; // stride alignment
+ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+ DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities
+ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwReserved1; // reserved
+ DWORD dwReserved2; // reserved
+ DWORD dwReserved3; // reserved
+ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
+ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
+ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
+ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
+ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
+ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
+ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
+ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
+ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
+ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
+ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
+ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
+ DWORD dwReserved4; // reserved
+ DWORD dwReserved5; // reserved
+ DWORD dwReserved6; // reserved
+} DDCAPS;
+
+typedef DDCAPS FAR* LPDDCAPS;
+
+
+
+/*
+ * DDPIXELFORMAT
+ */
+typedef struct _DDPIXELFORMAT
+{
+ DWORD dwSize; // size of structure
+ DWORD dwFlags; // pixel format flags
+ DWORD dwFourCC; // (FOURCC code)
+ union
+ {
+ DWORD dwRGBBitCount; // how many bits per pixel (BD_4,8,16,24,32)
+ DWORD dwYUVBitCount; // how many bits per pixel (BD_4,8,16,24,32)
+ DWORD dwZBufferBitDepth; // how many bits for z buffers (BD_8,16,24,32)
+ DWORD dwAlphaBitDepth; // how many bits for alpha channels (BD_1,2,4,8)
+ };
+ union
+ {
+ DWORD dwRBitMask; // mask for red bit
+ DWORD dwYBitMask; // mask for Y bits
+ };
+ union
+ {
+ DWORD dwGBitMask; // mask for green bits
+ DWORD dwUBitMask; // mask for U bits
+ };
+ union
+ {
+ DWORD dwBBitMask; // mask for blue bits
+ DWORD dwVBitMask; // mask for V bits
+ };
+ union
+ {
+ DWORD dwRGBAlphaBitMask; // mask for alpha channel
+ DWORD dwYUVAlphaBitMask; // mask for alpha channel
+ };
+} DDPIXELFORMAT;
+
+typedef DDPIXELFORMAT FAR* LPDDPIXELFORMAT;
+
+/*
+ * DDOVERLAYFX
+ */
+typedef struct _DDOVERLAYFX
+{
+ DWORD dwSize; // size of structure
+ DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend
+ DWORD dwAlphaEdgeBlend; // Constant to use as alpha for edge blend
+ DWORD dwReserved;
+ DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination
+ union
+ {
+ DWORD dwAlphaDestConst; // Constant to use as alpha channel for dest
+ LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as alpha channel for dest
+ };
+ DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source
+ union
+ {
+ DWORD dwAlphaSrcConst; // Constant to use as alpha channel for src
+ LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as alpha channel for src
+ };
+ DDCOLORKEY dckDestColorkey; // DestColorkey override
+ DDCOLORKEY dckSrcColorkey; // DestColorkey override
+ DWORD dwDDFX; // Overlay FX
+ DWORD dwFlags; // flags
+} DDOVERLAYFX;
+
+typedef DDOVERLAYFX FAR *LPDDOVERLAYFX;
+
+/*
+ * DDBLTBATCH: BltBatch entry structure
+ */
+typedef struct _DDBLTBATCH
+{
+ LPRECT lprDest;
+ LPDIRECTDRAWSURFACE lpDDSSrc;
+ LPRECT lprSrc;
+ DWORD dwFlags;
+ LPDDBLTFX lpDDBltFx;
+} DDBLTBATCH;
+
+typedef DDBLTBATCH FAR * LPDDBLTBATCH;
+
+/*
+ * callbacks
+ */
+typedef DWORD (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext );
+#ifdef STREAMING
+typedef DWORD (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD);
+#endif
+
+
+/*
+ * INTERACES FOLLOW:
+ * IDirectDraw
+ * IDirectDrawClipper
+ * IDirectDrawPalette
+ * IDirectDrawSurface
+ */
+
+/*
+ * IDirectDraw
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDraw
+DECLARE_INTERFACE_( IDirectDraw, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
+ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
+ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
+ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
+ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
+ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
+ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDraw_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDraw_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDraw_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
+#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
+#define IDirectDraw_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
+#define IDirectDraw_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
+#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
+#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
+#define IDirectDraw_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
+#define IDirectDraw_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
+#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
+#define IDirectDraw_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
+#define IDirectDraw_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
+#define IDirectDraw_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
+#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
+#define IDirectDraw_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
+#define IDirectDraw_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
+#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->lpVtbl->SetDisplayMode(p, a, b, c)
+#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
+#endif
+
+#endif
+
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDraw2
+DECLARE_INTERFACE_( IDirectDraw2, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
+ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
+ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
+ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
+ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
+ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
+ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
+};
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDraw2_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDraw2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDraw2_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
+#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
+#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
+#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
+#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
+#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
+#define IDirectDraw2_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw2_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
+#define IDirectDraw2_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
+#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
+#define IDirectDraw2_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
+#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
+#define IDirectDraw2_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
+#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
+#define IDirectDraw2_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
+#define IDirectDraw2_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
+#define IDirectDraw2_SetDisplayMode(p, a, b, c, d) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d)
+#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
+#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
+#endif
+
+#endif
+
+/*
+ * IDirectDrawPalette
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawPalette
+DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawPalette methods ***/
+ STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE;
+ STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDrawPalette_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawPalette_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawPalette_GetCaps(p, a) (p)->lpVtbl->GetCaps(p, a)
+#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->lpVtbl->GetEntries(p, a, b, c, d)
+#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->lpVtbl->Initialize(p, a, b, c)
+#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->lpVtbl->SetEntries(p, a, b, c, d)
+#endif
+
+#endif
+
+/*
+ * IDirectDrawClipper
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawClipper
+DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawClipper methods ***/
+ STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE;
+ STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE;
+ STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE;
+ STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE;
+ STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDrawClipper_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawClipper_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->lpVtbl->GetClipList(p, a, b, c)
+#define IDirectDrawClipper_GetHWnd(p, a) (p)->lpVtbl->GetHWnd(p, a)
+#define IDirectDrawClipper_Initialize(p, a, b) (p)->lpVtbl->Initialize(p, a, b)
+#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->lpVtbl->IsClipListChanged(p, a)
+#define IDirectDrawClipper_SetClipList(p, a, b) (p)->lpVtbl->SetClipList(p, a, b)
+#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->lpVtbl->SetHWnd(p, a, b)
+#endif
+
+#endif
+
+/*
+ * IDirectDrawSurface and related interfaces
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface
+DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#endif
+
+/*
+ * IDirectDrawSurface2 and related interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface2
+DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface2_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface2_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface2_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface2_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface2_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface2_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface2_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface2_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface2_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface2_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface2_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface2_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+#endif
+
+
+#endif
+
+
+/*
+ * DDSURFACEDESC
+ */
+typedef struct _DDSURFACEDESC
+{
+ DWORD dwSize; // size of the DDSURFACEDESC structure
+ DWORD dwFlags; // determines what fields are valid
+ DWORD dwHeight; // height of surface to be created
+ DWORD dwWidth; // width of input surface
+ LONG lPitch; // distance to start of next line (return value only)
+ DWORD dwBackBufferCount; // number of back buffers requested
+ union
+ {
+ DWORD dwMipMapCount; // number of mip-map levels requested
+ DWORD dwZBufferBitDepth; // depth of Z buffer requested
+ DWORD dwRefreshRate; // refresh rate (used when display mode is described)
+ };
+ DWORD dwAlphaBitDepth; // depth of alpha buffer requested
+ DWORD dwReserved; // reserved
+ LPVOID lpSurface; // pointer to the associated surface memory
+ DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use
+ DDCOLORKEY ddckCKDestBlt; // color key for destination blt use
+ DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use
+ DDCOLORKEY ddckCKSrcBlt; // color key for source blt use
+ DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface
+ DDSCAPS ddsCaps; // direct draw surface capabilities
+} DDSURFACEDESC;
+
+/*
+ * ddsCaps field is valid.
+ */
+#define DDSD_CAPS 0x00000001l // default
+
+/*
+ * dwHeight field is valid.
+ */
+#define DDSD_HEIGHT 0x00000002l
+
+/*
+ * dwWidth field is valid.
+ */
+#define DDSD_WIDTH 0x00000004l
+
+/*
+ * lPitch is valid.
+ */
+#define DDSD_PITCH 0x00000008l
+
+/*
+ * dwBackBufferCount is valid.
+ */
+#define DDSD_BACKBUFFERCOUNT 0x00000020l
+
+/*
+ * dwZBufferBitDepth is valid.
+ */
+#define DDSD_ZBUFFERBITDEPTH 0x00000040l
+
+/*
+ * dwAlphaBitDepth is valid.
+ */
+#define DDSD_ALPHABITDEPTH 0x00000080l
+
+
+
+/*
+ * ddpfPixelFormat is valid.
+ */
+#define DDSD_PIXELFORMAT 0x00001000l
+
+/*
+ * ddckCKDestOverlay is valid.
+ */
+#define DDSD_CKDESTOVERLAY 0x00002000l
+
+/*
+ * ddckCKDestBlt is valid.
+ */
+#define DDSD_CKDESTBLT 0x00004000l
+
+/*
+ * ddckCKSrcOverlay is valid.
+ */
+#define DDSD_CKSRCOVERLAY 0x00008000l
+
+/*
+ * ddckCKSrcBlt is valid.
+ */
+#define DDSD_CKSRCBLT 0x00010000l
+
+/*
+ * dwMipMapCount is valid.
+ */
+#define DDSD_MIPMAPCOUNT 0x00020000l
+
+ /*
+ * dwRefreshRate is valid
+ */
+#define DDSD_REFRESHRATE 0x00040000l
+
+
+/*
+ * All input fields are valid.
+ */
+#define DDSD_ALL 0x0007f9eel
+
+
+/*============================================================================
+ *
+ * Direct Draw Capability Flags
+ *
+ * These flags are used to describe the capabilities of a given Surface.
+ * All flags are bit flags.
+ *
+ *==========================================================================*/
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+/*
+ * This bit currently has no meaning.
+ */
+#define DDSCAPS_3D 0x00000001l
+
+/*
+ * Indicates that this surface contains alpha information. The pixel
+ * format must be interrogated to determine whether this surface
+ * contains only alpha information or alpha information interlaced
+ * with pixel color data (e.g. RGBA or YUVA).
+ */
+#define DDSCAPS_ALPHA 0x00000002l
+
+/*
+ * Indicates that this surface is a backbuffer. It is generally
+ * set by CreateSurface when the DDSCAPS_FLIP capability bit is set.
+ * It indicates that this surface is THE back buffer of a surface
+ * flipping structure. DirectDraw supports N surfaces in a
+ * surface flipping structure. Only the surface that immediately
+ * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set.
+ * The other surfaces are identified as back buffers by the presence
+ * of the DDSCAPS_FLIP capability, their attachment order, and the
+ * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER
+ * capabilities. The bit is sent to CreateSurface when a standalone
+ * back buffer is being created. This surface could be attached to
+ * a front buffer and/or back buffers to form a flipping surface
+ * structure after the CreateSurface call. See AddAttachments for
+ * a detailed description of the behaviors in this case.
+ */
+#define DDSCAPS_BACKBUFFER 0x00000004l
+
+/*
+ * Indicates a complex surface structure is being described. A
+ * complex surface structure results in the creation of more than
+ * one surface. The additional surfaces are attached to the root
+ * surface. The complex structure can only be destroyed by
+ * destroying the root.
+ */
+#define DDSCAPS_COMPLEX 0x00000008l
+
+/*
+ * Indicates that this surface is a part of a surface flipping structure.
+ * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and
+ * DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface
+ * on the resulting creations. The dwBackBufferCount field in the
+ * DDSURFACEDESC structure must be set to at least 1 in order for
+ * the CreateSurface call to succeed. The DDSCAPS_COMPLEX capability
+ * must always be set with creating multiple surfaces through CreateSurface.
+ */
+#define DDSCAPS_FLIP 0x00000010l
+
+/*
+ * Indicates that this surface is THE front buffer of a surface flipping
+ * structure. It is generally set by CreateSurface when the DDSCAPS_FLIP
+ * capability bit is set.
+ * If this capability is sent to CreateSurface then a standalonw front buffer
+ * is created. This surface will not have the DDSCAPS_FLIP capability.
+ * It can be attached to other back buffers to form a flipping structure.
+ * See AddAttachments for a detailed description of the behaviors in this
+ * case.
+ */
+#define DDSCAPS_FRONTBUFFER 0x00000020l
+
+/*
+ * Indicates that this surface is any offscreen surface that is not an overlay,
+ * texture, zbuffer, front buffer, back buffer, or alpha surface. It is used
+ * to identify plain vanilla surfaces.
+ */
+#define DDSCAPS_OFFSCREENPLAIN 0x00000040l
+
+/*
+ * Indicates that this surface is an overlay. It may or may not be directly visible
+ * depending on whether or not it is currently being overlayed onto the primary
+ * surface. DDSCAPS_VISIBLE can be used to determine whether or not it is being
+ * overlayed at the moment.
+ */
+#define DDSCAPS_OVERLAY 0x00000080l
+
+/*
+ * Indicates that unique DirectDrawPalette objects can be created and
+ * attached to this surface.
+ */
+#define DDSCAPS_PALETTE 0x00000100l
+
+/*
+ * Indicates that this surface is the primary surface. The primary
+ * surface represents what the user is seeing at the moment.
+ */
+#define DDSCAPS_PRIMARYSURFACE 0x00000200l
+
+/*
+ * Indicates that this surface is the primary surface for the left eye.
+ * The primary surface for the left eye represents what the user is seeing
+ * at the moment with the users left eye. When this surface is created the
+ * DDSCAPS_PRIMARYSURFACE represents what the user is seeing with the users
+ * right eye.
+ */
+#define DDSCAPS_PRIMARYSURFACELEFT 0x00000400l
+
+/*
+ * Indicates that this surface memory was allocated in system memory
+ */
+#define DDSCAPS_SYSTEMMEMORY 0x00000800l
+
+/*
+ * Indicates that this surface can be used as a 3D texture. It does not
+ * indicate whether or not the surface is being used for that purpose.
+ */
+#define DDSCAPS_TEXTURE 0x00001000l
+
+/*
+ * Indicates that a surface may be a destination for 3D rendering. This
+ * bit must be set in order to query for a Direct3D Device Interface
+ * from this surface.
+ */
+#define DDSCAPS_3DDEVICE 0x00002000l
+
+/*
+ * Indicates that this surface exists in video memory.
+ */
+#define DDSCAPS_VIDEOMEMORY 0x00004000l
+
+/*
+ * Indicates that changes made to this surface are immediately visible.
+ * It is always set for the primary surface and is set for overlays while
+ * they are being overlayed and texture maps while they are being textured.
+ */
+#define DDSCAPS_VISIBLE 0x00008000l
+
+/*
+ * Indicates that only writes are permitted to the surface. Read accesses
+ * from the surface may or may not generate a protection fault, but the
+ * results of a read from this surface will not be meaningful. READ ONLY.
+ */
+#define DDSCAPS_WRITEONLY 0x00010000l
+
+/*
+ * Indicates that this surface is a z buffer. A z buffer does not contain
+ * displayable information. Instead it contains bit depth information that is
+ * used to determine which pixels are visible and which are obscured.
+ */
+#define DDSCAPS_ZBUFFER 0x00020000l
+
+/*
+ * Indicates surface will have a DC associated long term
+ */
+#define DDSCAPS_OWNDC 0x00040000l
+
+/*
+ * Indicates surface should be able to receive live video
+ */
+#define DDSCAPS_LIVEVIDEO 0x00080000l
+
+/*
+ * Indicates surface should be able to have a stream decompressed
+ * to it by the hardware.
+ */
+#define DDSCAPS_HWCODEC 0x00100000l
+
+/*
+ * Surface is a 320x200 or 320x240 ModeX surface
+ */
+#define DDSCAPS_MODEX 0x00200000l
+
+/*
+ * Indicates surface is one level of a mip-map. This surface will
+ * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map.
+ * This can be done explicitly, by creating a number of surfaces and
+ * attaching them with AddAttachedSurface or by implicitly by CreateSurface.
+ * If this bit is set then DDSCAPS_TEXTURE must also be set.
+ */
+#define DDSCAPS_MIPMAP 0x00400000l
+
+
+
+/*
+ * Indicates that memory for the surface is not allocated until the surface
+ * is loaded (via the Direct3D texture Load() function).
+ */
+#define DDSCAPS_ALLOCONLOAD 0x04000000l
+
+
+
+ /****************************************************************************
+ *
+ * DIRECTDRAW DRIVER CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Display hardware has 3D acceleration.
+ */
+#define DDCAPS_3D 0x00000001l
+
+/*
+ * Indicates that DirectDraw will support only dest rectangles that are aligned
+ * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively.
+ * READ ONLY.
+ */
+#define DDCAPS_ALIGNBOUNDARYDEST 0x00000002l
+
+/*
+ * Indicates that DirectDraw will support only source rectangles whose sizes in
+ * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively. READ ONLY.
+ */
+#define DDCAPS_ALIGNSIZEDEST 0x00000004l
+/*
+ * Indicates that DirectDraw will support only source rectangles that are aligned
+ * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively.
+ * READ ONLY.
+ */
+#define DDCAPS_ALIGNBOUNDARYSRC 0x00000008l
+
+/*
+ * Indicates that DirectDraw will support only source rectangles whose sizes in
+ * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively. READ ONLY.
+ */
+#define DDCAPS_ALIGNSIZESRC 0x00000010l
+
+/*
+ * Indicates that DirectDraw will create video memory surfaces that have a stride
+ * alignment equal to DIRECTDRAWCAPS.dwAlignStride. READ ONLY.
+ */
+#define DDCAPS_ALIGNSTRIDE 0x00000020l
+
+/*
+ * Display hardware is capable of blt operations.
+ */
+#define DDCAPS_BLT 0x00000040l
+
+/*
+ * Display hardware is capable of asynchronous blt operations.
+ */
+#define DDCAPS_BLTQUEUE 0x00000080l
+
+/*
+ * Display hardware is capable of color space conversions during the blt operation.
+ */
+#define DDCAPS_BLTFOURCC 0x00000100l
+
+/*
+ * Display hardware is capable of stretching during blt operations.
+ */
+#define DDCAPS_BLTSTRETCH 0x00000200l
+
+/*
+ * Display hardware is shared with GDI.
+ */
+#define DDCAPS_GDI 0x00000400l
+
+/*
+ * Display hardware can overlay.
+ */
+#define DDCAPS_OVERLAY 0x00000800l
+
+/*
+ * Set if display hardware supports overlays but can not clip them.
+ */
+#define DDCAPS_OVERLAYCANTCLIP 0x00001000l
+
+/*
+ * Indicates that overlay hardware is capable of color space conversions during
+ * the overlay operation.
+ */
+#define DDCAPS_OVERLAYFOURCC 0x00002000l
+
+/*
+ * Indicates that stretching can be done by the overlay hardware.
+ */
+#define DDCAPS_OVERLAYSTRETCH 0x00004000l
+
+/*
+ * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces
+ * other than the primary surface.
+ */
+#define DDCAPS_PALETTE 0x00008000l
+
+/*
+ * Indicates that palette changes can be syncd with the veritcal refresh.
+ */
+#define DDCAPS_PALETTEVSYNC 0x00010000l
+
+/*
+ * Display hardware can return the current scan line.
+ */
+#define DDCAPS_READSCANLINE 0x00020000l
+
+/*
+ * Display hardware has stereo vision capabilities. DDSCAPS_PRIMARYSURFACELEFT
+ * can be created.
+ */
+#define DDCAPS_STEREOVIEW 0x00040000l
+
+/*
+ * Display hardware is capable of generating a vertical blank interrupt.
+ */
+#define DDCAPS_VBI 0x00080000l
+
+/*
+ * Supports the use of z buffers with blt operations.
+ */
+#define DDCAPS_ZBLTS 0x00100000l
+
+/*
+ * Supports Z Ordering of overlays.
+ */
+#define DDCAPS_ZOVERLAYS 0x00200000l
+
+/*
+ * Supports color key
+ */
+#define DDCAPS_COLORKEY 0x00400000l
+
+/*
+ * Supports alpha surfaces
+ */
+#define DDCAPS_ALPHA 0x00800000l
+
+/*
+ * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set)
+ */
+#define DDCAPS_COLORKEYHWASSIST 0x01000000l
+
+/*
+ * no hardware support at all
+ */
+#define DDCAPS_NOHARDWARE 0x02000000l
+
+/*
+ * Display hardware is capable of color fill with bltter
+ */
+#define DDCAPS_BLTCOLORFILL 0x04000000l
+
+/*
+ * Display hardware is bank switched, and potentially very slow at
+ * random access to VRAM.
+ */
+#define DDCAPS_BANKSWITCHED 0x08000000l
+
+/*
+ * Display hardware is capable of depth filling Z-buffers with bltter
+ */
+#define DDCAPS_BLTDEPTHFILL 0x10000000l
+
+/*
+ * Display hardware is capable of clipping while bltting.
+ */
+#define DDCAPS_CANCLIP 0x20000000l
+
+/*
+ * Display hardware is capable of clipping while stretch bltting.
+ */
+#define DDCAPS_CANCLIPSTRETCHED 0x40000000l
+
+/*
+ * Display hardware is capable of bltting to or from system memory
+ */
+#define DDCAPS_CANBLTSYSMEM 0x80000000l
+
+
+ /****************************************************************************
+ *
+ * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2)
+ *
+ ****************************************************************************/
+
+/*
+ * Display hardware is certified
+ */
+#define DDCAPS2_CERTIFIED 0x00000001l
+
+/*
+ * Driver cannot interleave 2D operations (lock and blt) to surfaces with
+ * Direct3D rendering operations between calls to BeginScene() and EndScene()
+ */
+#define DDCAPS2_NO2DDURING3DSCENE 0x00000002l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW FX ALPHA CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Supports alpha blending around the edge of a source color keyed surface.
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHAEDGEBLEND 0x00000001l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
+ * more opaque as the alpha value increases. (0 is transparent.)
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHAPIXELS 0x00000002l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value
+ * becomes more transparent as the alpha value increases. (0 is opaque.)
+ * This flag can only be set if DDCAPS_ALPHA is set.
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHAPIXELSNEG 0x00000004l
+
+/*
+ * Supports alpha only surfaces. The bit depth of an alpha only surface can be
+ * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases.
+ * (0 is transparent.)
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHASURFACES 0x00000008l
+
+/*
+ * The depth of the alpha channel data can range can be 1,2,4, or 8.
+ * The NEG suffix indicates that this alpha channel becomes more transparent
+ * as the alpha value increases. (0 is opaque.) This flag can only be set if
+ * DDCAPS_ALPHA is set.
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHASURFACESNEG 0x00000010l
+
+/*
+ * Supports alpha blending around the edge of a source color keyed surface.
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND 0x00000020l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
+ * more opaque as the alpha value increases. (0 is transparent.)
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHAPIXELS 0x00000040l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value
+ * becomes more transparent as the alpha value increases. (0 is opaque.)
+ * This flag can only be set if DDCAPS_ALPHA is set.
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG 0x00000080l
+
+/*
+ * Supports alpha only surfaces. The bit depth of an alpha only surface can be
+ * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases.
+ * (0 is transparent.)
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHASURFACES 0x00000100l
+
+/*
+ * The depth of the alpha channel data can range can be 1,2,4, or 8.
+ * The NEG suffix indicates that this alpha channel becomes more transparent
+ * as the alpha value increases. (0 is opaque.) This flag can only be set if
+ * DDCAPS_ALPHA is set.
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG 0x00000200l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW FX CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Uses arithmetic operations to stretch and shrink surfaces during blt
+ * rather than pixel doubling techniques. Along the Y axis.
+ */
+#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020l
+
+/*
+ * Uses arithmetic operations to stretch during blt
+ * rather than pixel doubling techniques. Along the Y axis. Only
+ * works for x1, x2, etc.
+ */
+#define DDFXCAPS_BLTARITHSTRETCHYN 0x00000010l
+
+/*
+ * Supports mirroring left to right in blt.
+ */
+#define DDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040l
+
+/*
+ * Supports mirroring top to bottom in blt.
+ */
+#define DDFXCAPS_BLTMIRRORUPDOWN 0x00000080l
+
+/*
+ * Supports arbitrary rotation for blts.
+ */
+#define DDFXCAPS_BLTROTATION 0x00000100l
+
+/*
+ * Supports 90 degree rotations for blts.
+ */
+#define DDFXCAPS_BLTROTATION90 0x00000200l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKX 0x00000400l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKXN 0x00000800l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * y axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKY 0x00001000l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the y axis (vertical direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKYN 0x00002000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHX 0x00004000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHXN 0x00008000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * y axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHY 0x00010000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the y axis (vertical direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHYN 0x00020000l
+
+/*
+ * Uses arithmetic operations to stretch and shrink surfaces during
+ * overlay rather than pixel doubling techniques. Along the Y axis
+ * for overlays.
+ */
+#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000l
+
+/*
+ * Uses arithmetic operations to stretch surfaces during
+ * overlay rather than pixel doubling techniques. Along the Y axis
+ * for overlays. Only works for x1, x2, etc.
+ */
+#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKX 0x00080000l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKXN 0x00100000l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * y axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKY 0x00200000l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the y axis (vertical direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKYN 0x00400000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHX 0x00800000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHXN 0x01000000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * y axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHY 0x02000000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the y axis (vertical direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHYN 0x04000000l
+
+/*
+ * DirectDraw supports mirroring of overlays across the vertical axis
+ */
+#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l
+
+/*
+ * DirectDraw supports mirroring of overlays across the horizontal axis
+ */
+#define DDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW STEREO VIEW CAPABILITIES
+ *
+ ****************************************************************************/
+
+/*
+ * The stereo view is accomplished via enigma encoding.
+ */
+#define DDSVCAPS_ENIGMA 0x00000001l
+
+/*
+ * The stereo view is accomplished via high frequency flickering.
+ */
+#define DDSVCAPS_FLICKER 0x00000002l
+
+/*
+ * The stereo view is accomplished via red and blue filters applied
+ * to the left and right eyes. All images must adapt their colorspaces
+ * for this process.
+ */
+#define DDSVCAPS_REDBLUE 0x00000004l
+
+/*
+ * The stereo view is accomplished with split screen technology.
+ */
+#define DDSVCAPS_SPLIT 0x00000008l
+
+/****************************************************************************
+ *
+ * DIRECTDRAWPALETTE CAPABILITIES
+ *
+ ****************************************************************************/
+
+/*
+ * Index is 4 bits. There are sixteen color entries in the palette table.
+ */
+#define DDPCAPS_4BIT 0x00000001l
+
+/*
+ * Index is onto a 8 bit color index. This field is only valid with the
+ * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target
+ * surface is in 8bpp. Each color entry is one byte long and is an index
+ * into destination surface's 8bpp palette.
+ */
+#define DDPCAPS_8BITENTRIES 0x00000002l
+
+/*
+ * Index is 8 bits. There are 256 color entries in the palette table.
+ */
+#define DDPCAPS_8BIT 0x00000004l
+
+/*
+ * Indicates that this DIRECTDRAWPALETTE should use the palette color array
+ * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE
+ * object.
+ */
+#define DDPCAPS_INITIALIZE 0x00000008l
+
+/*
+ * This palette is the one attached to the primary surface. Changing this
+ * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified
+ * and supported.
+ */
+#define DDPCAPS_PRIMARYSURFACE 0x00000010l
+
+/*
+ * This palette is the one attached to the primary surface left. Changing
+ * this table has immediate effect on the display for the left eye unless
+ * DDPSETPAL_VSYNC is specified and supported.
+ */
+#define DDPCAPS_PRIMARYSURFACELEFT 0x00000020l
+
+/*
+ * This palette can have all 256 entries defined
+ */
+#define DDPCAPS_ALLOW256 0x00000040l
+
+/*
+ * This palette can have modifications to it synced with the monitors
+ * refresh rate.
+ */
+#define DDPCAPS_VSYNC 0x00000080l
+
+/*
+ * Index is 1 bit. There are two color entries in the palette table.
+ */
+#define DDPCAPS_1BIT 0x00000100l
+
+/*
+ * Index is 2 bit. There are four color entries in the palette table.
+ */
+#define DDPCAPS_2BIT 0x00000200l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWPALETTE SETENTRY CONSTANTS
+ *
+ ****************************************************************************/
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWPALETTE GETENTRY CONSTANTS
+ *
+ ****************************************************************************/
+
+/* 0 is the only legal value */
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE SETPALETTE CONSTANTS
+ *
+ ****************************************************************************/
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW BITDEPTH CONSTANTS
+ *
+ * NOTE: These are only used to indicate supported bit depths. These
+ * are flags only, they are not to be used as an actual bit depth. The
+ * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual
+ * bit depths in a surface or for changing the display mode.
+ *
+ ****************************************************************************/
+
+/*
+ * 1 bit per pixel.
+ */
+#define DDBD_1 0x00004000l
+
+/*
+ * 2 bits per pixel.
+ */
+#define DDBD_2 0x00002000l
+
+/*
+ * 4 bits per pixel.
+ */
+#define DDBD_4 0x00001000l
+
+/*
+ * 8 bits per pixel.
+ */
+#define DDBD_8 0x00000800l
+
+/*
+ * 16 bits per pixel.
+ */
+#define DDBD_16 0x00000400l
+
+/*
+ * 24 bits per pixel.
+ */
+#define DDBD_24 0X00000200l
+
+/*
+ * 32 bits per pixel.
+ */
+#define DDBD_32 0x00000100l
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Set if the structure contains a color space. Not set if the structure
+ * contains a single color key.
+ */
+#define DDCKEY_COLORSPACE 0x00000001l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a destination color key for blt operations.
+ */
+#define DDCKEY_DESTBLT 0x00000002l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a destination color key for overlay operations.
+ */
+#define DDCKEY_DESTOVERLAY 0x00000004l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a source color key for blt operations.
+ */
+#define DDCKEY_SRCBLT 0x00000008l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a source color key for overlay operations.
+ */
+#define DDCKEY_SRCOVERLAY 0x00000010l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW COLOR KEY CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Supports transparent blting using a color key to identify the replaceable
+ * bits of the destination surface for RGB colors.
+ */
+#define DDCKEYCAPS_DESTBLT 0x00000001l
+
+/*
+ * Supports transparent blting using a color space to identify the replaceable
+ * bits of the destination surface for RGB colors.
+ */
+#define DDCKEYCAPS_DESTBLTCLRSPACE 0x00000002l
+
+/*
+ * Supports transparent blting using a color space to identify the replaceable
+ * bits of the destination surface for YUV colors.
+ */
+#define DDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004l
+
+/*
+ * Supports transparent blting using a color key to identify the replaceable
+ * bits of the destination surface for YUV colors.
+ */
+#define DDCKEYCAPS_DESTBLTYUV 0x00000008l
+
+/*
+ * Supports overlaying using colorkeying of the replaceable bits of the surface
+ * being overlayed for RGB colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAY 0x00000010l
+
+/*
+ * Supports a color space as the color key for the destination for RGB colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020l
+
+/*
+ * Supports a color space as the color key for the destination for YUV colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040l
+
+/*
+ * Supports only one active destination color key value for visible overlay
+ * surfaces.
+ */
+#define DDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080l
+
+/*
+ * Supports overlaying using colorkeying of the replaceable bits of the
+ * surface being overlayed for YUV colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAYYUV 0x00000100l
+
+/*
+ * Supports transparent blting using the color key for the source with
+ * this surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCBLT 0x00000200l
+
+/*
+ * Supports transparent blting using a color space for the source with
+ * this surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCBLTCLRSPACE 0x00000400l
+
+/*
+ * Supports transparent blting using a color space for the source with
+ * this surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800l
+
+/*
+ * Supports transparent blting using the color key for the source with
+ * this surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCBLTYUV 0x00001000l
+
+/*
+ * Supports overlays using the color key for the source with this
+ * overlay surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAY 0x00002000l
+
+/*
+ * Supports overlays using a color space as the source color key for
+ * the overlay surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000l
+
+/*
+ * Supports overlays using a color space as the source color key for
+ * the overlay surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000l
+
+/*
+ * Supports only one active source color key value for visible
+ * overlay surfaces.
+ */
+#define DDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000l
+
+/*
+ * Supports overlays using the color key for the source with this
+ * overlay surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAYYUV 0x00020000l
+
+/*
+ * there are no bandwidth trade-offs for using colorkey with an overlay
+ */
+#define DDCKEYCAPS_NOCOSTOVERLAY 0x00040000l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW PIXELFORMAT FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * The surface has alpha channel information in the pixel format.
+ */
+#define DDPF_ALPHAPIXELS 0x00000001l
+
+/*
+ * The pixel format contains alpha only information
+ */
+#define DDPF_ALPHA 0x00000002l
+
+/*
+ * The FourCC code is valid.
+ */
+#define DDPF_FOURCC 0x00000004l
+
+/*
+ * The surface is 4-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED4 0x00000008l
+
+/*
+ * The surface is indexed into a palette which stores indices
+ * into the destination surface's 8-bit palette.
+ */
+#define DDPF_PALETTEINDEXEDTO8 0x00000010l
+
+/*
+ * The surface is 8-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED8 0x00000020l
+
+/*
+ * The RGB data in the pixel format structure is valid.
+ */
+#define DDPF_RGB 0x00000040l
+
+/*
+ * The surface will accept pixel data in the format specified
+ * and compress it during the write.
+ */
+#define DDPF_COMPRESSED 0x00000080l
+
+/*
+ * The surface will accept RGB data and translate it during
+ * the write to YUV data. The format of the data to be written
+ * will be contained in the pixel format structure. The DDPF_RGB
+ * flag will be set.
+ */
+#define DDPF_RGBTOYUV 0x00000100l
+
+/*
+ * pixel format is YUV - YUV data in pixel format struct is valid
+ */
+#define DDPF_YUV 0x00000200l
+
+/*
+ * pixel format is a z buffer only surface
+ */
+#define DDPF_ZBUFFER 0x00000400l
+
+/*
+ * The surface is 1-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED1 0x00000800l
+
+/*
+ * The surface is 2-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED2 0x00001000l
+
+/*===========================================================================
+ *
+ *
+ * DIRECTDRAW CALLBACK FLAGS
+ *
+ *
+ *==========================================================================*/
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMSURFACES FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate all of the surfaces that meet the search criterion.
+ */
+#define DDENUMSURFACES_ALL 0x00000001l
+
+/*
+ * A search hit is a surface that matches the surface description.
+ */
+#define DDENUMSURFACES_MATCH 0x00000002l
+
+/*
+ * A search hit is a surface that does not match the surface description.
+ */
+#define DDENUMSURFACES_NOMATCH 0x00000004l
+
+/*
+ * Enumerate the first surface that can be created which meets the search criterion.
+ */
+#define DDENUMSURFACES_CANBECREATED 0x00000008l
+
+/*
+ * Enumerate the surfaces that already exist that meet the search criterion.
+ */
+#define DDENUMSURFACES_DOESEXIST 0x00000010l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMDISPLAYMODES FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate Modes with different refresh rates. EnumDisplayModes guarantees
+ * that a particular mode will be enumerated only once. This flag specifies whether
+ * the refresh rate is taken into account when determining if a mode is unique.
+ */
+#define DDEDM_REFRESHRATES 0x00000001l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Exclusive mode owner will be responsible for the entire primary surface.
+ * GDI can be ignored. used with DD
+ */
+#define DDSCL_FULLSCREEN 0x00000001l
+
+/*
+ * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode
+ */
+#define DDSCL_ALLOWREBOOT 0x00000002l
+
+/*
+ * prevents DDRAW from modifying the application window.
+ * prevents DDRAW from minimize/restore the application window on activation.
+ */
+#define DDSCL_NOWINDOWCHANGES 0x00000004l
+
+/*
+ * app wants to work as a regular Windows application
+ */
+#define DDSCL_NORMAL 0x00000008l
+
+/*
+ * app wants exclusive access
+ */
+#define DDSCL_EXCLUSIVE 0x00000010l
+
+
+/*
+ * app can deal with non-windows display modes
+ */
+#define DDSCL_ALLOWMODEX 0x00000040l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW BLT FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the destination surface as the alpha channel for this blt.
+ */
+#define DDBLT_ALPHADEST 0x00000001l
+
+/*
+ * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel
+ * for the destination surface for this blt.
+ */
+#define DDBLT_ALPHADESTCONSTOVERRIDE 0x00000002l
+
+/*
+ * The NEG suffix indicates that the destination surface becomes more
+ * transparent as the alpha value increases. (0 is opaque)
+ */
+#define DDBLT_ALPHADESTNEG 0x00000004l
+
+/*
+ * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha
+ * channel for the destination for this blt.
+ */
+#define DDBLT_ALPHADESTSURFACEOVERRIDE 0x00000008l
+
+/*
+ * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel
+ * for the edges of the image that border the color key colors.
+ */
+#define DDBLT_ALPHAEDGEBLEND 0x00000010l
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the source surface as the alpha channel for this blt.
+ */
+#define DDBLT_ALPHASRC 0x00000020l
+
+/*
+ * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel
+ * for the source for this blt.
+ */
+#define DDBLT_ALPHASRCCONSTOVERRIDE 0x00000040l
+
+/*
+ * The NEG suffix indicates that the source surface becomes more transparent
+ * as the alpha value increases. (0 is opaque)
+ */
+#define DDBLT_ALPHASRCNEG 0x00000080l
+
+/*
+ * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel
+ * for the source for this blt.
+ */
+#define DDBLT_ALPHASRCSURFACEOVERRIDE 0x00000100l
+
+/*
+ * Do this blt asynchronously through the FIFO in the order received. If
+ * there is no room in the hardware FIFO fail the call.
+ */
+#define DDBLT_ASYNC 0x00000200l
+
+/*
+ * Uses the dwFillColor field in the DDBLTFX structure as the RGB color
+ * to fill the destination rectangle on the destination surface with.
+ */
+#define DDBLT_COLORFILL 0x00000400l
+
+/*
+ * Uses the dwDDFX field in the DDBLTFX structure to specify the effects
+ * to use for the blt.
+ */
+#define DDBLT_DDFX 0x00000800l
+
+/*
+ * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS
+ * that are not part of the Win32 API.
+ */
+#define DDBLT_DDROPS 0x00001000l
+
+/*
+ * Use the color key associated with the destination surface.
+ */
+#define DDBLT_KEYDEST 0x00002000l
+
+/*
+ * Use the dckDestColorkey field in the DDBLTFX structure as the color key
+ * for the destination surface.
+ */
+#define DDBLT_KEYDESTOVERRIDE 0x00004000l
+
+/*
+ * Use the color key associated with the source surface.
+ */
+#define DDBLT_KEYSRC 0x00008000l
+
+/*
+ * Use the dckSrcColorkey field in the DDBLTFX structure as the color key
+ * for the source surface.
+ */
+#define DDBLT_KEYSRCOVERRIDE 0x00010000l
+
+/*
+ * Use the dwROP field in the DDBLTFX structure for the raster operation
+ * for this blt. These ROPs are the same as the ones defined in the Win32 API.
+ */
+#define DDBLT_ROP 0x00020000l
+
+/*
+ * Use the dwRotationAngle field in the DDBLTFX structure as the angle
+ * (specified in 1/100th of a degree) to rotate the surface.
+ */
+#define DDBLT_ROTATIONANGLE 0x00040000l
+
+/*
+ * Z-buffered blt using the z-buffers attached to the source and destination
+ * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the
+ * z-buffer opcode.
+ */
+#define DDBLT_ZBUFFER 0x00080000l
+
+/*
+ * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field
+ * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
+ * for the destination.
+ */
+#define DDBLT_ZBUFFERDESTCONSTOVERRIDE 0x00100000l
+
+/*
+ * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode
+ * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
+ * respectively for the destination.
+ */
+#define DDBLT_ZBUFFERDESTOVERRIDE 0x00200000l
+
+/*
+ * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field
+ * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
+ * for the source.
+ */
+#define DDBLT_ZBUFFERSRCCONSTOVERRIDE 0x00400000l
+
+/*
+ * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode
+ * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
+ * respectively for the source.
+ */
+#define DDBLT_ZBUFFERSRCOVERRIDE 0x00800000l
+
+/*
+ * wait until the device is ready to handle the blt
+ * this will cause blt to not return DDERR_WASSTILLDRAWING
+ */
+#define DDBLT_WAIT 0x01000000l
+
+/*
+ * Uses the dwFillDepth field in the DDBLTFX structure as the depth value
+ * to fill the destination rectangle on the destination Z-buffer surface
+ * with.
+ */
+#define DDBLT_DEPTHFILL 0x02000000l
+
+
+/****************************************************************************
+ *
+ * BLTFAST FLAGS
+ *
+ ****************************************************************************/
+
+#define DDBLTFAST_NOCOLORKEY 0x00000000
+#define DDBLTFAST_SRCCOLORKEY 0x00000001
+#define DDBLTFAST_DESTCOLORKEY 0x00000002
+#define DDBLTFAST_WAIT 0x00000010
+
+/****************************************************************************
+ *
+ * FLIP FLAGS
+ *
+ ****************************************************************************/
+
+#define DDFLIP_WAIT 0x00000001l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW SURFACE OVERLAY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the destination surface as the alpha channel for the
+ * destination overlay.
+ */
+#define DDOVER_ALPHADEST 0x00000001l
+
+/*
+ * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the
+ * destination alpha channel for this overlay.
+ */
+#define DDOVER_ALPHADESTCONSTOVERRIDE 0x00000002l
+
+/*
+ * The NEG suffix indicates that the destination surface becomes more
+ * transparent as the alpha value increases.
+ */
+#define DDOVER_ALPHADESTNEG 0x00000004l
+
+/*
+ * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha
+ * channel destination for this overlay.
+ */
+#define DDOVER_ALPHADESTSURFACEOVERRIDE 0x00000008l
+
+/*
+ * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha
+ * channel for the edges of the image that border the color key colors.
+ */
+#define DDOVER_ALPHAEDGEBLEND 0x00000010l
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the source surface as the source alpha channel for this overlay.
+ */
+#define DDOVER_ALPHASRC 0x00000020l
+
+/*
+ * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source
+ * alpha channel for this overlay.
+ */
+#define DDOVER_ALPHASRCCONSTOVERRIDE 0x00000040l
+
+/*
+ * The NEG suffix indicates that the source surface becomes more transparent
+ * as the alpha value increases.
+ */
+#define DDOVER_ALPHASRCNEG 0x00000080l
+
+/*
+ * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel
+ * source for this overlay.
+ */
+#define DDOVER_ALPHASRCSURFACEOVERRIDE 0x00000100l
+
+/*
+ * Turn this overlay off.
+ */
+#define DDOVER_HIDE 0x00000200l
+
+/*
+ * Use the color key associated with the destination surface.
+ */
+#define DDOVER_KEYDEST 0x00000400l
+
+/*
+ * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key
+ * for the destination surface
+ */
+#define DDOVER_KEYDESTOVERRIDE 0x00000800l
+
+/*
+ * Use the color key associated with the source surface.
+ */
+#define DDOVER_KEYSRC 0x00001000l
+
+/*
+ * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key
+ * for the source surface.
+ */
+#define DDOVER_KEYSRCOVERRIDE 0x00002000l
+
+/*
+ * Turn this overlay on.
+ */
+#define DDOVER_SHOW 0x00004000l
+
+/*
+ * Add a dirty rect to an emulated overlayed surface.
+ */
+#define DDOVER_ADDDIRTYRECT 0x00008000l
+
+/*
+ * Redraw all dirty rects on an emulated overlayed surface.
+ */
+#define DDOVER_REFRESHDIRTYRECTS 0x00010000l
+
+/*
+ * Redraw the entire surface on an emulated overlayed surface.
+ */
+#define DDOVER_REFRESHALL 0x00020000l
+
+
+/*
+ * Use the overlay FX flags to define special overlay FX
+ */
+#define DDOVER_DDFX 0x00080000l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE LOCK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * The default. Set to indicate that Lock should return a valid memory pointer
+ * to the top of the specified rectangle. If no rectangle is specified then a
+ * pointer to the top of the surface is returned.
+ */
+#define DDLOCK_SURFACEMEMORYPTR 0x00000000L // default
+
+/*
+ * Set to indicate that Lock should wait until it can obtain a valid memory
+ * pointer before returning. If this bit is set, Lock will never return
+ * DDERR_WASSTILLDRAWING.
+ */
+#define DDLOCK_WAIT 0x00000001L
+
+/*
+ * Set if an event handle is being passed to Lock. Lock will trigger the event
+ * when it can return the surface memory pointer requested.
+ */
+#define DDLOCK_EVENT 0x00000002L
+
+/*
+ * Indicates that the surface being locked will only be read from.
+ */
+#define DDLOCK_READONLY 0x00000010L
+
+/*
+ * Indicates that the surface being locked will only be written to
+ */
+#define DDLOCK_WRITEONLY 0x00000020L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE PAGELOCK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * No flags defined at present
+ */
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * No flags defined at present
+ */
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE BLT FX FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * If stretching, use arithmetic stretching along the Y axis for this blt.
+ */
+#define DDBLTFX_ARITHSTRETCHY 0x00000001l
+
+/*
+ * Do this blt mirroring the surface left to right. Spin the
+ * surface around its y-axis.
+ */
+#define DDBLTFX_MIRRORLEFTRIGHT 0x00000002l
+
+/*
+ * Do this blt mirroring the surface up and down. Spin the surface
+ * around its x-axis.
+ */
+#define DDBLTFX_MIRRORUPDOWN 0x00000004l
+
+/*
+ * Schedule this blt to avoid tearing.
+ */
+#define DDBLTFX_NOTEARING 0x00000008l
+
+/*
+ * Do this blt rotating the surface one hundred and eighty degrees.
+ */
+#define DDBLTFX_ROTATE180 0x00000010l
+
+/*
+ * Do this blt rotating the surface two hundred and seventy degrees.
+ */
+#define DDBLTFX_ROTATE270 0x00000020l
+
+/*
+ * Do this blt rotating the surface ninety degrees.
+ */
+#define DDBLTFX_ROTATE90 0x00000040l
+
+/*
+ * Do this z blt using dwZBufferLow and dwZBufferHigh as range values
+ * specified to limit the bits copied from the source surface.
+ */
+#define DDBLTFX_ZBUFFERRANGE 0x00000080l
+
+/*
+ * Do this z blt adding the dwZBufferBaseDest to each of the sources z values
+ * before comparing it with the desting z values.
+ */
+#define DDBLTFX_ZBUFFERBASEDEST 0x00000100l
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE OVERLAY FX FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * If stretching, use arithmetic stretching along the Y axis for this overlay.
+ */
+#define DDOVERFX_ARITHSTRETCHY 0x00000001l
+
+/*
+ * Mirror the overlay across the vertical axis
+ */
+#define DDOVERFX_MIRRORLEFTRIGHT 0x00000002l
+
+/*
+ * Mirror the overlay across the horizontal axis
+ */
+#define DDOVERFX_MIRRORUPDOWN 0x00000004l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW WAITFORVERTICALBLANK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * return when the vertical blank interval begins
+ */
+#define DDWAITVB_BLOCKBEGIN 0x00000001l
+
+/*
+ * set up an event to trigger when the vertical blank begins
+ */
+#define DDWAITVB_BLOCKBEGINEVENT 0x00000002l
+
+/*
+ * return when the vertical blank interval ends and display begins
+ */
+#define DDWAITVB_BLOCKEND 0x00000004l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW GETFLIPSTATUS FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * is it OK to flip now?
+ */
+#define DDGFS_CANFLIP 0x00000001l
+
+/*
+ * is the last flip finished?
+ */
+#define DDGFS_ISFLIPDONE 0x00000002l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW GETBLTSTATUS FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * is it OK to blt now?
+ */
+#define DDGBS_CANBLT 0x00000001l
+
+/*
+ * is the blt to the surface finished?
+ */
+#define DDGBS_ISBLTDONE 0x00000002l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMOVERLAYZORDER FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate overlays back to front.
+ */
+#define DDENUMOVERLAYZ_BACKTOFRONT 0x00000000l
+
+/*
+ * Enumerate overlays front to back
+ */
+#define DDENUMOVERLAYZ_FRONTTOBACK 0x00000001l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Send overlay to front
+ */
+#define DDOVERZ_SENDTOFRONT 0x00000000l
+
+/*
+ * Send overlay to back
+ */
+#define DDOVERZ_SENDTOBACK 0x00000001l
+
+/*
+ * Move Overlay forward
+ */
+#define DDOVERZ_MOVEFORWARD 0x00000002l
+
+/*
+ * Move Overlay backward
+ */
+#define DDOVERZ_MOVEBACKWARD 0x00000003l
+
+/*
+ * Move Overlay in front of relative surface
+ */
+#define DDOVERZ_INSERTINFRONTOF 0x00000004l
+
+/*
+ * Move Overlay in back of relative surface
+ */
+#define DDOVERZ_INSERTINBACKOF 0x00000005l
+
+/*===========================================================================
+ *
+ *
+ * DIRECTDRAW RETURN CODES
+ *
+ * The return values from DirectDraw Commands and Surface that return an HRESULT
+ * are codes from DirectDraw concerning the results of the action
+ * requested by DirectDraw.
+ *
+ *==========================================================================*/
+
+/*
+ * Status is OK
+ *
+ * Issued by: DirectDraw Commands and all callbacks
+ */
+#define DD_OK 0
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMCALLBACK RETURN VALUES
+ *
+ * EnumCallback returns are used to control the flow of the DIRECTDRAW and
+ * DIRECTDRAWSURFACE object enumerations. They can only be returned by
+ * enumeration callback routines.
+ *
+ ****************************************************************************/
+
+/*
+ * stop the enumeration
+ */
+#define DDENUMRET_CANCEL 0
+
+/*
+ * continue the enumeration
+ */
+#define DDENUMRET_OK 1
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ERRORS
+ *
+ * Errors are represented by negative values and cannot be combined.
+ *
+ ****************************************************************************/
+
+/*
+ * This object is already initialized
+ */
+#define DDERR_ALREADYINITIALIZED MAKE_DDHRESULT( 5 )
+
+/*
+ * This surface can not be attached to the requested surface.
+ */
+#define DDERR_CANNOTATTACHSURFACE MAKE_DDHRESULT( 10 )
+
+/*
+ * This surface can not be detached from the requested surface.
+ */
+#define DDERR_CANNOTDETACHSURFACE MAKE_DDHRESULT( 20 )
+
+/*
+ * Support is currently not available.
+ */
+#define DDERR_CURRENTLYNOTAVAIL MAKE_DDHRESULT( 40 )
+
+/*
+ * An exception was encountered while performing the requested operation
+ */
+#define DDERR_EXCEPTION MAKE_DDHRESULT( 55 )
+
+/*
+ * Generic failure.
+ */
+#define DDERR_GENERIC E_FAIL
+
+/*
+ * Height of rectangle provided is not a multiple of reqd alignment
+ */
+#define DDERR_HEIGHTALIGN MAKE_DDHRESULT( 90 )
+
+/*
+ * Unable to match primary surface creation request with existing
+ * primary surface.
+ */
+#define DDERR_INCOMPATIBLEPRIMARY MAKE_DDHRESULT( 95 )
+
+/*
+ * One or more of the caps bits passed to the callback are incorrect.
+ */
+#define DDERR_INVALIDCAPS MAKE_DDHRESULT( 100 )
+
+/*
+ * DirectDraw does not support provided Cliplist.
+ */
+#define DDERR_INVALIDCLIPLIST MAKE_DDHRESULT( 110 )
+
+/*
+ * DirectDraw does not support the requested mode
+ */
+#define DDERR_INVALIDMODE MAKE_DDHRESULT( 120 )
+
+/*
+ * DirectDraw received a pointer that was an invalid DIRECTDRAW object.
+ */
+#define DDERR_INVALIDOBJECT MAKE_DDHRESULT( 130 )
+
+/*
+ * One or more of the parameters passed to the callback function are
+ * incorrect.
+ */
+#define DDERR_INVALIDPARAMS E_INVALIDARG
+
+/*
+ * pixel format was invalid as specified
+ */
+#define DDERR_INVALIDPIXELFORMAT MAKE_DDHRESULT( 145 )
+
+/*
+ * Rectangle provided was invalid.
+ */
+#define DDERR_INVALIDRECT MAKE_DDHRESULT( 150 )
+
+/*
+ * Operation could not be carried out because one or more surfaces are locked
+ */
+#define DDERR_LOCKEDSURFACES MAKE_DDHRESULT( 160 )
+
+/*
+ * There is no 3D present.
+ */
+#define DDERR_NO3D MAKE_DDHRESULT( 170 )
+
+/*
+ * Operation could not be carried out because there is no alpha accleration
+ * hardware present or available.
+ */
+#define DDERR_NOALPHAHW MAKE_DDHRESULT( 180 )
+
+
+/*
+ * no clip list available
+ */
+#define DDERR_NOCLIPLIST MAKE_DDHRESULT( 205 )
+
+/*
+ * Operation could not be carried out because there is no color conversion
+ * hardware present or available.
+ */
+#define DDERR_NOCOLORCONVHW MAKE_DDHRESULT( 210 )
+
+/*
+ * Create function called without DirectDraw object method SetCooperativeLevel
+ * being called.
+ */
+#define DDERR_NOCOOPERATIVELEVELSET MAKE_DDHRESULT( 212 )
+
+/*
+ * Surface doesn't currently have a color key
+ */
+#define DDERR_NOCOLORKEY MAKE_DDHRESULT( 215 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * of the dest color key.
+ */
+#define DDERR_NOCOLORKEYHW MAKE_DDHRESULT( 220 )
+
+/*
+ * No DirectDraw support possible with current display driver
+ */
+#define DDERR_NODIRECTDRAWSUPPORT MAKE_DDHRESULT( 222 )
+
+/*
+ * Operation requires the application to have exclusive mode but the
+ * application does not have exclusive mode.
+ */
+#define DDERR_NOEXCLUSIVEMODE MAKE_DDHRESULT( 225 )
+
+/*
+ * Flipping visible surfaces is not supported.
+ */
+#define DDERR_NOFLIPHW MAKE_DDHRESULT( 230 )
+
+/*
+ * There is no GDI present.
+ */
+#define DDERR_NOGDI MAKE_DDHRESULT( 240 )
+
+/*
+ * Operation could not be carried out because there is no hardware present
+ * or available.
+ */
+#define DDERR_NOMIRRORHW MAKE_DDHRESULT( 250 )
+
+/*
+ * Requested item was not found
+ */
+#define DDERR_NOTFOUND MAKE_DDHRESULT( 255 )
+
+/*
+ * Operation could not be carried out because there is no overlay hardware
+ * present or available.
+ */
+#define DDERR_NOOVERLAYHW MAKE_DDHRESULT( 260 )
+
+/*
+ * Operation could not be carried out because there is no appropriate raster
+ * op hardware present or available.
+ */
+#define DDERR_NORASTEROPHW MAKE_DDHRESULT( 280 )
+
+/*
+ * Operation could not be carried out because there is no rotation hardware
+ * present or available.
+ */
+#define DDERR_NOROTATIONHW MAKE_DDHRESULT( 290 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * for stretching
+ */
+#define DDERR_NOSTRETCHHW MAKE_DDHRESULT( 310 )
+
+/*
+ * DirectDrawSurface is not in 4 bit color palette and the requested operation
+ * requires 4 bit color palette.
+ */
+#define DDERR_NOT4BITCOLOR MAKE_DDHRESULT( 316 )
+
+/*
+ * DirectDrawSurface is not in 4 bit color index palette and the requested
+ * operation requires 4 bit color index palette.
+ */
+#define DDERR_NOT4BITCOLORINDEX MAKE_DDHRESULT( 317 )
+
+/*
+ * DirectDraw Surface is not in 8 bit color mode and the requested operation
+ * requires 8 bit color.
+ */
+#define DDERR_NOT8BITCOLOR MAKE_DDHRESULT( 320 )
+
+/*
+ * Operation could not be carried out because there is no texture mapping
+ * hardware present or available.
+ */
+#define DDERR_NOTEXTUREHW MAKE_DDHRESULT( 330 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * for vertical blank synchronized operations.
+ */
+#define DDERR_NOVSYNCHW MAKE_DDHRESULT( 335 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * for zbuffer blting.
+ */
+#define DDERR_NOZBUFFERHW MAKE_DDHRESULT( 340 )
+
+/*
+ * Overlay surfaces could not be z layered based on their BltOrder because
+ * the hardware does not support z layering of overlays.
+ */
+#define DDERR_NOZOVERLAYHW MAKE_DDHRESULT( 350 )
+
+/*
+ * The hardware needed for the requested operation has already been
+ * allocated.
+ */
+#define DDERR_OUTOFCAPS MAKE_DDHRESULT( 360 )
+
+/*
+ * DirectDraw does not have enough memory to perform the operation.
+ */
+#define DDERR_OUTOFMEMORY E_OUTOFMEMORY
+
+/*
+ * DirectDraw does not have enough memory to perform the operation.
+ */
+#define DDERR_OUTOFVIDEOMEMORY MAKE_DDHRESULT( 380 )
+
+/*
+ * hardware does not support clipped overlays
+ */
+#define DDERR_OVERLAYCANTCLIP MAKE_DDHRESULT( 382 )
+
+/*
+ * Can only have ony color key active at one time for overlays
+ */
+#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE MAKE_DDHRESULT( 384 )
+
+/*
+ * Access to this palette is being refused because the palette is already
+ * locked by another thread.
+ */
+#define DDERR_PALETTEBUSY MAKE_DDHRESULT( 387 )
+
+/*
+ * No src color key specified for this operation.
+ */
+#define DDERR_COLORKEYNOTSET MAKE_DDHRESULT( 400 )
+
+/*
+ * This surface is already attached to the surface it is being attached to.
+ */
+#define DDERR_SURFACEALREADYATTACHED MAKE_DDHRESULT( 410 )
+
+/*
+ * This surface is already a dependency of the surface it is being made a
+ * dependency of.
+ */
+#define DDERR_SURFACEALREADYDEPENDENT MAKE_DDHRESULT( 420 )
+
+/*
+ * Access to this surface is being refused because the surface is already
+ * locked by another thread.
+ */
+#define DDERR_SURFACEBUSY MAKE_DDHRESULT( 430 )
+
+/*
+ * Access to this surface is being refused because no driver exists
+ * which can supply a pointer to the surface.
+ * This is most likely to happen when attempting to lock the primary
+ * surface when no DCI provider is present.
+ */
+#define DDERR_CANTLOCKSURFACE MAKE_DDHRESULT( 435 )
+
+/*
+ * Access to Surface refused because Surface is obscured.
+ */
+#define DDERR_SURFACEISOBSCURED MAKE_DDHRESULT( 440 )
+
+/*
+ * Access to this surface is being refused because the surface is gone.
+ * The DIRECTDRAWSURFACE object representing this surface should
+ * have Restore called on it.
+ */
+#define DDERR_SURFACELOST MAKE_DDHRESULT( 450 )
+
+/*
+ * The requested surface is not attached.
+ */
+#define DDERR_SURFACENOTATTACHED MAKE_DDHRESULT( 460 )
+
+/*
+ * Height requested by DirectDraw is too large.
+ */
+#define DDERR_TOOBIGHEIGHT MAKE_DDHRESULT( 470 )
+
+/*
+ * Size requested by DirectDraw is too large -- The individual height and
+ * width are OK.
+ */
+#define DDERR_TOOBIGSIZE MAKE_DDHRESULT( 480 )
+
+/*
+ * Width requested by DirectDraw is too large.
+ */
+#define DDERR_TOOBIGWIDTH MAKE_DDHRESULT( 490 )
+
+/*
+ * Action not supported.
+ */
+#define DDERR_UNSUPPORTED E_NOTIMPL
+
+/*
+ * FOURCC format requested is unsupported by DirectDraw
+ */
+#define DDERR_UNSUPPORTEDFORMAT MAKE_DDHRESULT( 510 )
+
+/*
+ * Bitmask in the pixel format requested is unsupported by DirectDraw
+ */
+#define DDERR_UNSUPPORTEDMASK MAKE_DDHRESULT( 520 )
+
+/*
+ * vertical blank is in progress
+ */
+#define DDERR_VERTICALBLANKINPROGRESS MAKE_DDHRESULT( 537 )
+
+/*
+ * Informs DirectDraw that the previous Blt which is transfering information
+ * to or from this Surface is incomplete.
+ */
+#define DDERR_WASSTILLDRAWING MAKE_DDHRESULT( 540 )
+
+
+/*
+ * Rectangle provided was not horizontally aligned on reqd. boundary
+ */
+#define DDERR_XALIGN MAKE_DDHRESULT( 560 )
+
+/*
+ * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver
+ * identifier.
+ */
+#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 )
+
+/*
+ * A DirectDraw object representing this driver has already been created
+ * for this process.
+ */
+#define DDERR_DIRECTDRAWALREADYCREATED MAKE_DDHRESULT( 562 )
+
+/*
+ * A hardware only DirectDraw object creation was attempted but the driver
+ * did not support any hardware.
+ */
+#define DDERR_NODIRECTDRAWHW MAKE_DDHRESULT( 563 )
+
+/*
+ * this process already has created a primary surface
+ */
+#define DDERR_PRIMARYSURFACEALREADYEXISTS MAKE_DDHRESULT( 564 )
+
+/*
+ * software emulation not available.
+ */
+#define DDERR_NOEMULATION MAKE_DDHRESULT( 565 )
+
+/*
+ * region passed to Clipper::GetClipList is too small.
+ */
+#define DDERR_REGIONTOOSMALL MAKE_DDHRESULT( 566 )
+
+/*
+ * an attempt was made to set a clip list for a clipper objec that
+ * is already monitoring an hwnd.
+ */
+#define DDERR_CLIPPERISUSINGHWND MAKE_DDHRESULT( 567 )
+
+/*
+ * No clipper object attached to surface object
+ */
+#define DDERR_NOCLIPPERATTACHED MAKE_DDHRESULT( 568 )
+
+/*
+ * Clipper notification requires an HWND or
+ * no HWND has previously been set as the CooperativeLevel HWND.
+ */
+#define DDERR_NOHWND MAKE_DDHRESULT( 569 )
+
+/*
+ * HWND used by DirectDraw CooperativeLevel has been subclassed,
+ * this prevents DirectDraw from restoring state.
+ */
+#define DDERR_HWNDSUBCLASSED MAKE_DDHRESULT( 570 )
+
+/*
+ * The CooperativeLevel HWND has already been set.
+ * It can not be reset while the process has surfaces or palettes created.
+ */
+#define DDERR_HWNDALREADYSET MAKE_DDHRESULT( 571 )
+
+/*
+ * No palette object attached to this surface.
+ */
+#define DDERR_NOPALETTEATTACHED MAKE_DDHRESULT( 572 )
+
+/*
+ * No hardware support for 16 or 256 color palettes.
+ */
+#define DDERR_NOPALETTEHW MAKE_DDHRESULT( 573 )
+
+/*
+ * If a clipper object is attached to the source surface passed into a
+ * BltFast call.
+ */
+#define DDERR_BLTFASTCANTCLIP MAKE_DDHRESULT( 574 )
+
+/*
+ * No blter.
+ */
+#define DDERR_NOBLTHW MAKE_DDHRESULT( 575 )
+
+/*
+ * No DirectDraw ROP hardware.
+ */
+#define DDERR_NODDROPSHW MAKE_DDHRESULT( 576 )
+
+/*
+ * returned when GetOverlayPosition is called on a hidden overlay
+ */
+#define DDERR_OVERLAYNOTVISIBLE MAKE_DDHRESULT( 577 )
+
+/*
+ * returned when GetOverlayPosition is called on a overlay that UpdateOverlay
+ * has never been called on to establish a destionation.
+ */
+#define DDERR_NOOVERLAYDEST MAKE_DDHRESULT( 578 )
+
+/*
+ * returned when the position of the overlay on the destionation is no longer
+ * legal for that destionation.
+ */
+#define DDERR_INVALIDPOSITION MAKE_DDHRESULT( 579 )
+
+/*
+ * returned when an overlay member is called for a non-overlay surface
+ */
+#define DDERR_NOTAOVERLAYSURFACE MAKE_DDHRESULT( 580 )
+
+/*
+ * An attempt was made to set the cooperative level when it was already
+ * set to exclusive.
+ */
+#define DDERR_EXCLUSIVEMODEALREADYSET MAKE_DDHRESULT( 581 )
+
+/*
+ * An attempt has been made to flip a surface that is not flippable.
+ */
+#define DDERR_NOTFLIPPABLE MAKE_DDHRESULT( 582 )
+
+/*
+ * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly
+ * created.
+ */
+#define DDERR_CANTDUPLICATE MAKE_DDHRESULT( 583 )
+
+/*
+ * Surface was not locked. An attempt to unlock a surface that was not
+ * locked at all, or by this process, has been attempted.
+ */
+#define DDERR_NOTLOCKED MAKE_DDHRESULT( 584 )
+
+/*
+ * Windows can not create any more DCs
+ */
+#define DDERR_CANTCREATEDC MAKE_DDHRESULT( 585 )
+
+/*
+ * No DC was ever created for this surface.
+ */
+#define DDERR_NODC MAKE_DDHRESULT( 586 )
+
+/*
+ * This surface can not be restored because it was created in a different
+ * mode.
+ */
+#define DDERR_WRONGMODE MAKE_DDHRESULT( 587 )
+
+/*
+ * This surface can not be restored because it is an implicitly created
+ * surface.
+ */
+#define DDERR_IMPLICITLYCREATED MAKE_DDHRESULT( 588 )
+
+/*
+ * The surface being used is not a palette-based surface
+ */
+#define DDERR_NOTPALETTIZED MAKE_DDHRESULT( 589 )
+
+
+/*
+ * The display is currently in an unsupported mode
+ */
+#define DDERR_UNSUPPORTEDMODE MAKE_DDHRESULT( 590 )
+
+/*
+ * Operation could not be carried out because there is no mip-map
+ * texture mapping hardware present or available.
+ */
+#define DDERR_NOMIPMAPHW MAKE_DDHRESULT( 591 )
+
+/*
+ * The requested action could not be performed because the surface was of
+ * the wrong type.
+ */
+#define DDERR_INVALIDSURFACETYPE MAKE_DDHRESULT( 592 )
+
+
+
+/*
+ * A DC has already been returned for this surface. Only one DC can be
+ * retrieved per surface.
+ */
+#define DDERR_DCALREADYCREATED MAKE_DDHRESULT( 620 )
+
+/*
+ * The attempt to page lock a surface failed.
+ */
+#define DDERR_CANTPAGELOCK MAKE_DDHRESULT( 640 )
+
+/*
+ * The attempt to page unlock a surface failed.
+ */
+#define DDERR_CANTPAGEUNLOCK MAKE_DDHRESULT( 660 )
+
+/*
+ * An attempt was made to page unlock a surface with no outstanding page locks.
+ */
+#define DDERR_NOTPAGELOCKED MAKE_DDHRESULT( 680 )
+
+/*
+ * An attempt was made to invoke an interface member of a DirectDraw object
+ * created by CoCreateInstance() before it was initialized.
+ */
+#define DDERR_NOTINITIALIZED CO_E_NOTINITIALIZED
+
+/* Alpha bit depth constants */
+
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif
diff --git a/public/sdk/inc/debnot.h b/public/sdk/inc/debnot.h
new file mode 100644
index 000000000..39d0c23bf
--- /dev/null
+++ b/public/sdk/inc/debnot.h
@@ -0,0 +1,349 @@
+//+---------------------------------------------------------------------------
+// Copyright (C) 1991, Microsoft Corporation.
+//
+// File: DEBNOT.h
+//
+// Contents: Private project-wide Win 4 definitions
+//
+// History: 23-Jul-91 KyleP Created.
+// 15-Oct-91 KevinRo Major changes and comments added
+// 18-Oct-91 vich Consolidated win4p.hxx
+// 22-Oct-91 SatoNa Added SHLSTRICT
+// 29-Apr-92 BartoszM Moved from win4p.h
+// 3-Jun-92 BruceFo Added SMUISTRICT
+// 17-Dec-92 AlexT Moved UN..._PARM out of DEVL==1
+// 30-Sep-93 KyleP DEVL obsolete
+// 18-Jun-94 AlexT Make Assert a better statement
+//
+//----------------------------------------------------------------------------
+
+#ifndef __DEBNOT_H__
+#define __DEBNOT_H__
+
+#include <stdarg.h>
+
+//----------------------------------------------------------------------------
+// Parameter Macros
+//
+// To avoid compiler warnings for unimplemented functions, use
+// UNIMPLEMENTED_PARM(x) for each unreferenced parameter. This will
+// later be defined to nul to reveal functions that we forgot to implement.
+//
+// For functions which will never use a parameter, use
+// UNREFERENCED_PARM(x).
+//
+
+#define UNIMPLEMENTED_PARM(x) (x)
+
+#define UNREFERENCED_PARM(x) (x)
+
+//----------------------------------------------------------------------------
+//
+// New STRICT defines should be added in two places below:
+//
+// 1) Add the following within the ifdef ALLSTRICT/endif:
+//
+// #ifndef xxSTRICT
+// # define xxSTRICT
+// #endif
+//
+// These entries are in alphabetical order.
+//
+// 2) Add the following to the #if clause that defines ANYSTRICT:
+//
+// #if ... || defined(xxSTRICT) || ...
+//
+// so that ANYSTRICT is defined if any of the STRICT defines are.
+//
+
+
+#if defined(WIN32)
+ #include <windef.h>
+#endif
+
+#ifndef EXPORTDEF
+ #define EXPORTDEF
+#endif
+#ifndef EXPORTIMP
+ #define EXPORTIMP
+#endif
+#ifndef EXPORTED
+ #define EXPORTED _cdecl
+#endif
+#ifndef APINOT
+#ifdef _X86_
+ #define APINOT _stdcall
+#else
+ #define APINOT _cdecl
+#endif
+#endif
+
+//
+// DEBUG -- DEBUG -- DEBUG -- DEBUG -- DEBUG
+//
+
+#if (DBG == 1) || (OFSDBG == 1)
+
+//
+// Debug print functions.
+//
+
+#ifdef __cplusplus
+extern "C" {
+# define EXTRNC "C"
+#else
+# define EXTRNC
+#endif
+
+
+
+// vdprintf should only be called from xxDebugOut()
+
+ EXPORTDEF void APINOT
+ vdprintf(
+ unsigned long ulCompMask,
+ char const *pszComp,
+ char const *ppszfmt,
+ va_list ArgList);
+
+ #define _Win4Assert Win4AssertEx
+
+ EXPORTDEF void APINOT
+ Win4AssertEx(
+ char const *pszFile,
+ int iLine,
+ char const *pszMsg);
+
+ EXPORTDEF int APINOT
+ PopUpError(
+ char const *pszMsg,
+ int iLine,
+ char const *pszFile);
+
+ #define _SetWin4InfoLevel SetWin4InfoLevel
+
+ EXPORTDEF unsigned long APINOT
+ SetWin4InfoLevel(
+ unsigned long ulNewLevel);
+
+ EXPORTDEF unsigned long APINOT
+ SetWin4InfoMask(
+ unsigned long ulNewMask);
+
+ #define _SetWin4AssertLevel SetWin4AssertLevel
+
+ EXPORTDEF unsigned long APINOT
+ SetWin4AssertLevel(
+ unsigned long ulNewLevel);
+
+ EXPORTDEF unsigned long APINOT
+ SetWin4ExceptionLevel(
+ unsigned long ulNewLevel);
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+
+# define EXSTRICT // (EXception STRICT) - Enabled if ANYSTRICT is enabled
+
+# define Win4Assert(x) \
+ (void)((x) || (Win4AssertEx(__FILE__, __LINE__, #x),0))
+
+# define Assert(x) \
+ (void)((x) || (Win4AssertEx(__FILE__, __LINE__, #x),0))
+
+# define Verify(x) Assert(x)
+
+
+//
+// Debug print macros
+//
+
+# define DEB_ERROR 0x00000001 // exported error paths
+# define DEB_WARN 0x00000002 // exported warnings
+# define DEB_TRACE 0x00000004 // exported trace messages
+
+# define DEB_DBGOUT 0x00000010 // Output to debugger
+# define DEB_STDOUT 0x00000020 // Output to stdout
+
+# define DEB_IERROR 0x00000100 // internal error paths
+# define DEB_IWARN 0x00000200 // internal warnings
+# define DEB_ITRACE 0x00000400 // internal trace messages
+
+# define DEB_USER1 0x00010000 // User defined
+# define DEB_USER2 0x00020000 // User defined
+# define DEB_USER3 0x00040000 // User defined
+# define DEB_USER4 0x00080000 // User defined
+# define DEB_USER5 0x00100000 // User defined
+# define DEB_USER6 0x00200000 // User defined
+# define DEB_USER7 0x00400000 // User defined
+# define DEB_USER8 0x00800000 // User defined
+# define DEB_USER9 0x01000000 // User defined
+# define DEB_USER10 0x02000000 // User defined
+# define DEB_USER11 0x04000000 // User defined
+# define DEB_USER12 0x08000000 // User defined
+# define DEB_USER13 0x10000000 // User defined
+# define DEB_USER14 0x20000000 // User defined
+# define DEB_USER15 0x40000000 // User defined
+
+# define DEB_NOCOMPNAME 0x80000000 // suppress component name
+
+# define DEB_FORCE 0x7fffffff // force message
+
+# define ASSRT_MESSAGE 0x00000001 // Output a message
+# define ASSRT_BREAK 0x00000002 // Int 3 on assertion
+# define ASSRT_POPUP 0x00000004 // And popup message
+
+# define EXCEPT_MESSAGE 0x00000001 // Output a message
+# define EXCEPT_BREAK 0x00000002 // Int 3 on exception
+# define EXCEPT_POPUP 0x00000004 // Popup message
+# define EXCEPT_FAULT 0x00000008 // generate int 3 on access violation
+# define EXCEPT_VERBOSE 0x00000010 // Output message even for "quiet" exceptions
+
+
+//+----------------------------------------------------------------------
+//
+// DECLARE_DEBUG(comp)
+// DECLARE_INFOLEVEL(comp)
+//
+// This macro defines xxDebugOut where xx is the component prefix
+// to be defined. This declares a static variable 'xxInfoLevel', which
+// can be used to control the type of xxDebugOut messages printed to
+// the terminal. For example, xxInfoLevel may be set at the debug terminal.
+// This will enable the user to turn debugging messages on or off, based
+// on the type desired. The predefined types are defined below. Component
+// specific values should use the upper 24 bits
+//
+// To Use:
+//
+// 1) In your components main include file, include the line
+// DECLARE_DEBUG(comp)
+// where comp is your component prefix
+//
+// 2) In one of your components source files, include the line
+// DECLARE_INFOLEVEL(comp)
+// where comp is your component prefix. This will define the
+// global variable that will control output.
+//
+// It is suggested that any component define bits be combined with
+// existing bits. For example, if you had a specific error path that you
+// wanted, you might define DEB_<comp>_ERRORxxx as being
+//
+// (0x100 | DEB_ERROR)
+//
+// This way, we can turn on DEB_ERROR and get the error, or just 0x100
+// and get only your error.
+//
+// Define values that are specific to your xxInfoLevel variable in your
+// own file, like ciquery.hxx.
+//
+//-----------------------------------------------------------------------
+
+# ifndef DEF_INFOLEVEL
+# define DEF_INFOLEVEL (DEB_ERROR | DEB_WARN)
+# endif
+
+
+//
+// Back to the info level stuff.
+//
+
+//
+// For C++. and in a module which has access to GetProfileInt, automatically
+// initialise the info level from a setting in the [Cairo Infolevels] section
+// of win.ini
+//
+
+# if defined(__cplusplus) && defined(_CAIRO_) && !defined(KERNEL) && defined(GetProfileInt)
+
+# define DECLARE_INFOLEVEL(comp) \
+ extern EXTRNC unsigned long comp##InfoLevel = GetProfileIntA ( \
+ "Cairo Infolevels", \
+ #comp, \
+ DEF_INFOLEVEL ); \
+ extern EXTRNC char *comp##InfoLevelString = #comp;
+
+# else
+
+// Simple initialisation
+# define DECLARE_INFOLEVEL(comp) \
+ extern EXTRNC unsigned long comp##InfoLevel = DEF_INFOLEVEL; \
+ extern EXTRNC char *comp##InfoLevelString = #comp;
+
+# endif
+
+# ifdef __cplusplus
+
+# define DECLARE_DEBUG(comp) \
+ extern EXTRNC unsigned long comp##InfoLevel; \
+ extern EXTRNC char *comp##InfoLevelString; \
+ _inline void \
+ comp##InlineDebugOut(unsigned long fDebugMask, char const *pszfmt, ...) \
+ { \
+ if (comp##InfoLevel & fDebugMask) \
+ { \
+ va_list va; \
+ va_start (va, pszfmt); \
+ vdprintf(fDebugMask, comp##InfoLevelString, pszfmt, va);\
+ va_end(va); \
+ } \
+ } \
+ \
+ class comp##CDbgTrace\
+ {\
+ private:\
+ unsigned long _ulFlags;\
+ char const * const _pszName;\
+ public:\
+ comp##CDbgTrace(unsigned long ulFlags, char const * const pszName);\
+ ~comp##CDbgTrace();\
+ };\
+ \
+ inline comp##CDbgTrace::comp##CDbgTrace(\
+ unsigned long ulFlags,\
+ char const * const pszName)\
+ : _ulFlags(ulFlags), _pszName(pszName)\
+ {\
+ comp##InlineDebugOut(_ulFlags, "Entering %s\n", _pszName);\
+ }\
+ \
+ inline comp##CDbgTrace::~comp##CDbgTrace()\
+ {\
+ comp##InlineDebugOut(_ulFlags, "Exiting %s\n", _pszName);\
+ }
+
+# else // ! __cplusplus
+
+# define DECLARE_DEBUG(comp) \
+ extern EXTRNC unsigned long comp##InfoLevel; \
+ extern EXTRNC char *comp##InfoLevelString; \
+ _inline void \
+ comp##InlineDebugOut(unsigned long fDebugMask, char const *pszfmt, ...) \
+ { \
+ if (comp##InfoLevel & fDebugMask) \
+ { \
+ va_list va; \
+ va_start (va, pszfmt); \
+ vdprintf(fDebugMask, comp##InfoLevelString, pszfmt, va);\
+ va_end(va); \
+ } \
+ }
+
+# endif // ! __cplusplus
+
+#else // DBG == 0
+
+//
+// NO DEBUG -- NO DEBUG -- NO DEBUG -- NO DEBUG -- NO DEBUG
+//
+
+# define Win4Assert(x) NULL
+# define Assert(x) NULL
+# define Verify(x) (x)
+
+# define DECLARE_DEBUG(comp)
+# define DECLARE_INFOLEVEL(comp)
+
+#endif // DBG == 0
+
+#endif // __DEBNOT_H__
diff --git a/public/sdk/inc/devguid.h b/public/sdk/inc/devguid.h
new file mode 100644
index 000000000..a2ce28824
--- /dev/null
+++ b/public/sdk/inc/devguid.h
@@ -0,0 +1,50 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1992-1995 Microsoft Corporation
+
+Module Name:
+
+ devguid.h
+
+Abstract:
+
+ Defines GUIDs for device classes used in Plug & Play.
+
+Author:
+
+ Lonny McMichael (lonnym) 30-Aug--1995
+
+Revision History:
+
+--*/
+
+
+DEFINE_GUID( GUID_DEVCLASS_ADAPTER, 0x4d36e964L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_CDROM, 0x4d36e965L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_COMPUTER, 0x4d36e966L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_DISKDRIVE, 0x4d36e967L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_DISPLAY, 0x4d36e968L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_FDC, 0x4d36e969L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_HDC, 0x4d36e96aL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_KEYBOARD, 0x4d36e96bL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MEDIA, 0x4d36e96cL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MODEM, 0x4d36e96dL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MONITOR, 0x4d36e96eL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MOUSE, 0x4d36e96fL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MTD, 0x4d36e970L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_MULTIFUNCTION, 0x4d36e971L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_NET, 0x4d36e972L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_NETCLIENT, 0x4d36e973L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_NETSERVICE, 0x4d36e974L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_NETTRANS, 0x4d36e975L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_NODRIVER, 0x4d36e976L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_PCMCIA, 0x4d36e977L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_PORTS, 0x4d36e978L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_PRINTER, 0x4d36e979L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_PRINTERUPGRADE, 0x4d36e97aL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_SCSIADAPTER, 0x4d36e97bL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_SOUND, 0x4d36e97cL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_SYSTEM, 0x4d36e97dL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_TAPEDRIVE, 0x6d807884L, 0x7d21, 0x11cf, 0x80, 0x1c, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+DEFINE_GUID( GUID_DEVCLASS_UNKNOWN, 0x4d36e97eL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+
diff --git a/public/sdk/inc/devioctl.h b/public/sdk/inc/devioctl.h
new file mode 100644
index 000000000..b99dc3281
--- /dev/null
+++ b/public/sdk/inc/devioctl.h
@@ -0,0 +1,120 @@
+/*++ BUILD Version: 0004 // Increment this if a change has global effects
+
+Copyright (c) 1992-1993 Microsoft Corporation
+
+Module Name:
+
+ devioctl.h
+
+Abstract:
+
+ This module contains
+
+Author:
+
+ Andre Vachon (andreva) 21-Feb-1992
+
+
+Revision History:
+
+
+--*/
+
+// begin_winioctl
+
+#ifndef _DEVIOCTL_
+#define _DEVIOCTL_
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// Define the various device type values. Note that values used by Microsoft
+// Corporation are in the range 0-32767, and 32768-65535 are reserved for use
+// by customers.
+//
+
+#define DEVICE_TYPE ULONG
+
+#define FILE_DEVICE_BEEP 0x00000001
+#define FILE_DEVICE_CD_ROM 0x00000002
+#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
+#define FILE_DEVICE_CONTROLLER 0x00000004
+#define FILE_DEVICE_DATALINK 0x00000005
+#define FILE_DEVICE_DFS 0x00000006
+#define FILE_DEVICE_DISK 0x00000007
+#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
+#define FILE_DEVICE_FILE_SYSTEM 0x00000009
+#define FILE_DEVICE_INPORT_PORT 0x0000000a
+#define FILE_DEVICE_KEYBOARD 0x0000000b
+#define FILE_DEVICE_MAILSLOT 0x0000000c
+#define FILE_DEVICE_MIDI_IN 0x0000000d
+#define FILE_DEVICE_MIDI_OUT 0x0000000e
+#define FILE_DEVICE_MOUSE 0x0000000f
+#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
+#define FILE_DEVICE_NAMED_PIPE 0x00000011
+#define FILE_DEVICE_NETWORK 0x00000012
+#define FILE_DEVICE_NETWORK_BROWSER 0x00000013
+#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
+#define FILE_DEVICE_NULL 0x00000015
+#define FILE_DEVICE_PARALLEL_PORT 0x00000016
+#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
+#define FILE_DEVICE_PRINTER 0x00000018
+#define FILE_DEVICE_SCANNER 0x00000019
+#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
+#define FILE_DEVICE_SERIAL_PORT 0x0000001b
+#define FILE_DEVICE_SCREEN 0x0000001c
+#define FILE_DEVICE_SOUND 0x0000001d
+#define FILE_DEVICE_STREAMS 0x0000001e
+#define FILE_DEVICE_TAPE 0x0000001f
+#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
+#define FILE_DEVICE_TRANSPORT 0x00000021
+#define FILE_DEVICE_UNKNOWN 0x00000022
+#define FILE_DEVICE_VIDEO 0x00000023
+#define FILE_DEVICE_VIRTUAL_DISK 0x00000024
+#define FILE_DEVICE_WAVE_IN 0x00000025
+#define FILE_DEVICE_WAVE_OUT 0x00000026
+#define FILE_DEVICE_8042_PORT 0x00000027
+#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
+#define FILE_DEVICE_BATTERY 0x00000029
+#define FILE_DEVICE_BUS_EXTENDER 0x0000002a
+#define FILE_DEVICE_MODEM 0x0000002b
+#define FILE_DEVICE_VDM 0x0000002c
+#define FILE_DEVICE_MASS_STORAGE 0x0000002d
+
+//
+// Macro definition for defining IOCTL and FSCTL function control codes. Note
+// that function codes 0-2047 are reserved for Microsoft Corporation, and
+// 2048-4095 are reserved for customers.
+//
+
+#define CTL_CODE( DeviceType, Function, Method, Access ) ( \
+ ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
+)
+
+//
+// Define the method codes for how buffers are passed for I/O and FS controls
+//
+
+#define METHOD_BUFFERED 0
+#define METHOD_IN_DIRECT 1
+#define METHOD_OUT_DIRECT 2
+#define METHOD_NEITHER 3
+
+//
+// Define the access check value for any access
+//
+//
+// The FILE_READ_ACCESS and FILE_WRITE_ACCESS constants are also defined in
+// ntioapi.h as FILE_READ_DATA and FILE_WRITE_DATA. The values for these
+// constants *MUST* always be in sync.
+//
+
+
+#define FILE_ANY_ACCESS 0
+#define FILE_READ_ACCESS ( 0x0001 ) // file & pipe
+#define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe
+
+// end_ntddk end_nthal end_ntifs
+
+#endif // _DEVIOCTL_
+
+// end_winioctl
diff --git a/public/sdk/inc/dfsapi.h b/public/sdk/inc/dfsapi.h
new file mode 100644
index 000000000..8e3859660
--- /dev/null
+++ b/public/sdk/inc/dfsapi.h
@@ -0,0 +1,870 @@
+//+----------------------------------------------------------------------------
+//
+// Copyright (C) 1992, Microsoft Corporation
+//
+// File: dfsapi.h
+//
+// Contents: C Callable DFS API.
+//
+// Classes:
+//
+// Functions:
+//
+// History: 29 Sep 92 Milans created.
+// 04-Aug-93 randyd Converted/moved to common\types
+// 05-Aug-93 alanw Added administration APIs
+//
+//-----------------------------------------------------------------------------
+
+#ifndef _DFS_API_
+#define _DFS_API_
+
+#include <windows.h>
+#include <dsys.h>
+#include <ntdddfs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if !defined(_DFSSYSTEM_)
+#define DFSAPI DECLSPEC_IMPORT
+#else
+#define DFSAPI
+#endif
+
+//
+// These are the names of Win32 events that get toggled when the Dfs PKT
+// changes. They are a handy way to figure out when to call the
+// DfsGetActiveVolumes API.
+//
+
+#define DFS_PKT_CHANGE_EVENT_A L"DfsPktChangeA"
+#define DFS_PKT_CHANGE_EVENT_B L"DfsPktChangeB"
+
+
+//+----------------------------------------------------------------------------
+//
+// Function: DfsSetDomainInfo
+//
+// Synopsis: Seeds the Dfs driver with information about the domain
+// name and DC addressing info to bootstrap the name resolution
+// process.
+//
+// Arguments: [pglDomain] -- pointer to gluon describing domain/DCs
+// [iConnectedDC] -- index into gluon for the DC that should
+// be preferred for referrals etc.
+//
+// Returns: S_OK
+// DFS_E_NO_MEMORY
+// DFS_E_INVALID_PARAM
+// DFS_E_NO_DRIVER -- if NOCAIRO or STANDALONE machine
+//
+//-----------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsSetDomainInfo(
+ IN PDS_GLUON pglDomain,
+ IN USHORT iConnectedDC);
+
+
+//+----------------------------------------------------------------------------
+//
+// Function: DfsRegisterSCM
+//
+// Synopsis: To be called by the SCM to register BindingStrings with Dfs.
+//
+// Arguments: None
+//
+//-----------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsRegisterSCM(void);
+
+
+//+-------------------------------------------------------------------------
+//
+// Function: DfsRegisterFileService
+//
+// Synopsis: This function is called by a file service which is
+// supporting DFS via a DFS$ share targeted at the WinDfs device.
+// It registers the principal name for the file service and
+// its transport addresses.
+//
+// Arguments: [usFsp] -- file level protocol supported by the server
+// (see FSP_xxx definitions in gluon.h)
+// [pwszPrincipalName] -- security principal name under which
+// the server operates.
+// [cTransports] -- number of transports on which the server
+// is listening
+// [prgTrans] -- pointer to an array of TA_ADDRESS pointers,
+// giving the TDI addresses for the server.
+//
+// Notes: A service which supports multiple file protocols should
+// issue this call once for each protocol.
+//
+//--------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsRegisterFileService (
+ IN USHORT usFsp,
+ IN LPCWSTR pwszPrincipalName,
+ IN ULONG cTransports,
+ IN TA_ADDRESS **prgTrans );
+
+//+-------------------------------------------------------------------------
+//
+// Function: DfsGetLocalAddress
+//
+// Synopsis: Returns the addressing descriptor (DS_MACHINE) for the
+// local machine. This is a composite resulting from calls
+// to DfsRegisterSCM and DfsRegisterFileService.
+//
+// Arguments: [ppdsm] -- output pointer
+//
+// Notes: The DS_MACHINE returned is callee-allocated. The caller must
+// free it by walking the structure, freeing each sub-piece
+// using CoTaskMemFree.
+//
+// BUGBUG: it isn't really intended that this function should
+// be public. It is only for use internal to DSYS.
+//
+//--------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsGetLocalAddress ( OUT DS_MACHINE **ppdsm );
+
+//+-------------------------------------------------------------------------
+//
+// Function: DfsGetMachineVolumeId
+//
+// Synopsis: Returns the volume id for the local DS volume for the
+// machine on which the call is issued. This id is also
+// the globally unique "DFS machine id" which appears in
+// the guidMachine field of the DS_MACHINE for the machine.
+//
+// Arguments: [pguidMachine] -- output pointer for returned GUID
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsGetMachineVolumeId ( GUID * pguidMachine );
+
+//+-------------------------------------------------------------------------
+//
+// Function: DfsUpdateMachineVolume
+//
+// Synopsis: Allows DFS to transmit updated addressing information
+// for the local volume to the DC.
+//
+// Notes: BUGBUG: this is function is intended only for the use of
+// SpMgr and is not supposed to be public.
+//
+//--------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsUpdateMachineVolume ( void );
+
+//+----------------------------------------------------------------------------
+//
+// Function: DfsUpdateDomainKnowledge
+//
+// Synopsis: Takes a gluon for a new domain's DS volume. This should be
+// called only on a DC else call will fail.
+//
+// Arguments: [pglDomain] -- gluon for the new domain's DS volume.
+// [dwFlags] -- if DFS_UDK_DELETE bit is set, the domain's
+// knowledge will be deleted from Dfs data structures
+//
+// Returns: S_OK
+//
+//-----------------------------------------------------------------------------
+
+#define DFS_UDK_DELETE 0x1
+
+DFSAPI STDAPI DfsUpdateDomainKnowledge(
+ IN PDS_GLUON pglDomain,
+ IN const USHORT iConnectedDC,
+ IN const DWORD dwFlags);
+
+
+//+----------------------------------------------------------------------------
+//
+// Function: DfsUpdateSiteCosts
+//
+// Synopsis: Updates the site costs. This should be called only on a DC
+// else the call will fail. Note that only sites whose
+// communication costs have changed need be included in the
+// list - sites whose costs have not changed since the last
+// call to this API need not be included, and their costs will
+// not be disturbed. Cost vectors are *not* persistent across
+// boots.
+//
+// Arguments: [cSiteCosts] -- The number of site costs listed below.
+// [rgpSiteCosts] -- The actual array of DFS_SITE_COST structs.
+//
+// Returns: S_OK
+//
+//-----------------------------------------------------------------------------
+
+HRESULT
+DfsUpdateSiteCosts(
+ IN ULONG cSiteCost,
+ IN DFS_SITE_COST *prgSiteCost);
+
+
+//------------------------------------------------------------------------
+//
+// Function: DfsGetReplicaSpecificPath, public
+//
+// Synopsis: This function returns a replica specific name, given a Win32
+// path. The user has to mention the full DN of the specific
+// replica which he/she wants to access.
+//
+// Arguments: [pwszPath] -- The Win32 path to be converted to repl specific
+// eg. x:\volumes\domainrt
+// \\thebese\dfs$\cairo\ds\dsdomain\volumes\domainrt
+// [pwszReplName] -- The full DN of the server
+// eg. \msft\redmond\bsd\test\thebes
+// [ppwszReplSpecificPath] -- The Replica specific name is
+// returned here.
+// eg. \\thebese\org$\cairo\ds\dsdomain\volumes\domainrt
+//
+// Notes: The ppwszReplSpecificName is freed using CoTaskMemFree.
+// One can convert a ReplSpecificPath back to a Win32 path by
+// using the dual of this api, DfsPathFromReplSpecificPath,
+// provided that the repl specific path does not refer to a
+// downlevel replica.
+//
+// History: Sudk Created 3/25/94
+// Milans Updated comments 5/15/95
+//
+//------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsGetReplicaSpecificPath(
+ PWSTR pwszDfsPath,
+ PWSTR pwszReplName,
+ PWSTR *ppwszReplSpecificPath
+);
+
+
+//------------------------------------------------------------------------
+//
+// Function: DfsPathFromReplSpecificPath, public
+//
+// Synopsis: This function retrieves a Win32 Path given a replica
+// specific path. The Replica specific path should refer to a
+// DFS aware machine (not to a downlevel machine). Usually,
+// the repl specific path is generated by the dual of this API,
+// DfsGetReplicaSpecificPath.
+//
+// Arguments: [pwszReplSpecificPath] -- The Repl Specific path here.
+// eg. \\thebes\org$\msft\volumes\domainrt
+// [ppwszPath] -- The Win32 Path is returned here.
+// eg. x:\volumes\domainrt
+//
+// Notes: Free ppwszDfsPath using CoTaskMemFree.
+//
+// History: Sudk Created 3/25/94
+// Milans Updated comments 5/15/95
+//
+//------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsPathFromReplSpecificPath(
+ PWSTR pwszReplSpecificPath,
+ PWSTR *ppwszPath
+);
+
+
+//+----------------------------------------------------------------------------
+//
+// Function: DfsGetActiveVolumeList, public
+//
+// Synopsis: The DFS design is centered around a cache which stores a map
+// for the most recently accessed DFS volumes. This API will
+// return the Entry Paths (as DFS_PATHs) of the volumes.
+//
+// Arguments: [pcVolumes] -- On successful return, number of volume entry
+// paths returned.
+// [pawszVolumes] -- On successful return, pointer to array of
+// Volume Entry Paths.
+//
+// Returns: SUCCESS_SUCCESS, DFS_E_NO_MEMORY
+//
+// Notes: pawszVolumes must be freed by the caller via MemFree.
+// The volume names will also be deleted at the same time.
+//
+//-----------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsGetActiveVolumeList(
+ OUT UINT *pcVolumes,
+ OUT PWSTR *pawszVolumes[]
+);
+
+
+//
+// BUGBUG: This Function to be removed once transition to new model is complete.
+//
+
+
+//+----------------------------------------------------------------------------
+//
+// Function: DfsEnumVolumeChildren, public
+//
+// Synopsis: The single logical volume rooted at DFS_ROOT_ORG presented by
+// DFS is actually composed of many Dfs volumes arranged in a
+// hierarchy. Given the Entry Path of a volume, this API will
+// return the volume entry paths of its child volumes.
+//
+// The names of the volume children are given as relative
+// path names from the input parent volume entry path.
+//
+// Arguments: [wszParent] -- Entry path of parent volume.
+// [pcChildren] -- On successful return, number of children.
+// [pawszChildren] -- On successful return, pointer to array of
+// volume entry paths of child volumes.
+//
+// Returns: SUCCESS_SUCCESS, DFS_E_NO_MEMORY
+//
+// Notes: pawszChildren must be freed by the caller via MemFree. The
+// names of the child volumes will be freed at the same time.
+//
+//-----------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsEnumVolumeChildren(
+ IN PWSTR wszParent,
+ OUT UINT *pcChildren,
+ OUT PWSTR *pawszChildren[]
+);
+
+
+//+-----------------------------------------------------------------------
+//
+// Function: DfsAddLocalMachShare
+//
+// Synopsis: This function adds a new LocalMachShare and inits it in PKT.
+//
+// Arguments: [pwszPrefix] -- Prefix relative to Mach:\ for new Share.
+// [pwszStorageId] -- Storage for new MachShare.
+//
+//------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsAddLocalMachShare(
+ PWSTR pwszPrefix,
+ PWSTR pwszStorageId
+);
+
+//+-----------------------------------------------------------------------
+//
+// Function: DfsDeleteLocalMachShare
+//
+// Synopsis: This function deletes a LocalMachShare.
+//
+// Arguments: [pwszPrefix] -- Prefix relative to Mach:\ for Share to delete.
+//
+//------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsDeleteLocalMachShare(
+ PWSTR pwszPrefix
+);
+
+//+-------------------------------------------------------------------
+//
+// DFS Administration API - For use with the IDfsVolume interface
+//
+//--------------------------------------------------------------------
+
+//+--------------------------------------------------------------------------
+//
+// Function: DfsGetEnumDfsVolumes, public
+//
+// Synopsis: This method takes an entryPath and then returns an IEnumDfsVol
+// interface using which the caller can enumerate all the DFS
+// volumes underneath that entryPath.
+//
+// Arguments: [pwszPrefix] -- Prefix to enumerate volumes underneath.
+// [ppEnum] -- The Enumeration interface is returned here.
+//
+// Returns:
+//
+//---------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsGetEnumDfsVolumes(
+ LPWSTR pwszPrefix,
+ IEnumDfsVolumes **ppEnum
+);
+
+
+//+--------------------------------------------------------------------------
+//
+// Function: DfsCreateVolume, public
+//
+// Synopsis: This API creates a DFS volume in the namespace based on the
+// parameters passed in.
+//
+// Arguments: [pwszPrefix] -- The Prefix for the new volume.
+// [ulVolType] -- The Volume Type for volume to be created.
+// [pReplicaInfo]--The ReplicaInfo for the first replica of volume.
+// [fCreateOptions] -- The Create Options (CreateStgId etc.)
+// [pwszComment] --Any comment that needs to be set on volume.
+//
+// Returns:
+//
+//---------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsCreateVolume(
+ LPWSTR pwszPrefix,
+ ULONG ulVolumeType,
+ PDFS_REPLICA_INFO pReplicaInfo,
+ ULONG fCreateOptions,
+ PWCHAR pwszComment
+);
+
+//+--------------------------------------------------------------------------
+//
+// Function: DfsGetVolumeFromPrefix, public
+//
+// Synopsis: This API returns an IDfsVolume interface given an EntryPath
+// that identifies a volume. The IDfsVolume can then be used to
+// do further operations on the volume.
+//
+// Arguments: [pwszPrefix] -- The Entry path that identifies volume.
+// This has to be an org-based prefix
+// [ppIDfsVol] -- The IDfsVOlume interface is returned here.
+//
+// Returns:
+//
+//---------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsGetVolumeFromPrefix(
+ LPWSTR pwszPrefix,
+ IDfsVolume **ppIDfsVol);
+
+
+//+--------------------------------------------------------------------------
+//
+// Function: DfsRenamePath, public
+//
+// Synopsis: This is the function to be used to rename a directory which
+// falls along on exit point on some volume. The old and new paths
+// can differ only in component of their entryPaths and that is the
+// last component. They should be identical otherwise.
+//
+// Arguments: [oldPath] -- The old path that has to be renamed.
+// [newPath] -- The new name and only the last component is
+// different here.
+//
+// Returns:
+//
+//---------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsRenamePath(
+ LPWSTR oldPath,
+ LPWSTR newPath);
+
+
+DFSAPI STDAPI_(VOID) DfsFreeVolInfo(
+ PDFS_VOLUME_INFO pInfo);
+
+//
+// FOLLOWING ARE THE COMMON PUBLIC DFS APIS
+//
+
+//+--------------------------------------------------------------------------
+//
+// Function: DfsGetPathForPrefix, public
+//
+// Synopsis: This API returns a Win32 path for an object in the Dfs namespace
+// given the ORG relative prefix of that object in the Dfs
+// namespace.
+//
+// Arguments: [lpPrefix] -- The Prefix for which a Win32 path is desired.
+// [lpPath] -- The Win32 Path is returned here.
+// [lpBufferSize] -- On entry, contains the size of lpPath in
+// bytes. If DFS_E_BUFFER_TOO_SMALL is returned, this
+// will be set to indicate the required buffer size, in
+// bytes.
+//
+// Returns: [S_OK] -- If all went well.
+// [DFS_E_BUFFER_TOO_SMALL] -- If the buffer passed in small.
+// Required size will be in lpBufSize.
+//
+//---------------------------------------------------------------------------
+DFSAPI STDAPI
+DfsGetPathForPrefix(
+ LPCWSTR lpPrefix,
+ LPWSTR lpPath,
+ LPDWORD lpBufferSize);
+
+
+//+--------------------------------------------------------------------------
+//
+// Function: DfsGetPrefixForPath, public
+//
+// Synopsis: This API returns the org relative prefix given a Win32 path
+// which points into the Dfs namespace. Note that the Win32 path
+// can either be a drive based path or a UNC path (\\..\dfs$\..)
+//
+// Arguments: [lpPath] -- The Win32 Path.
+// [lpPrefix] -- The org relative Prefix is returned here.
+// [lpBufferSize] -- On entry, contains the size of lpPrefix in
+// bytes. If DFS_E_BUFFER_TOO_SMALL is returned, this
+// will be set to indicate the required buffer size, in
+// bytes.
+//
+// Returns: [S_OK] -- If all went well.
+// [DFS_E_BUFFER_TOO_SMALL] -- If the buffer passed in small.
+// Required size will be in lpBufSize.
+//
+//---------------------------------------------------------------------------
+DFSAPI STDAPI
+DfsGetPrefixForPath(
+ LPCWSTR lpPath,
+ LPWSTR lpPrefix,
+ LPDWORD lpBufferSize);
+
+
+//+--------------------------------------------------------------------------
+//
+// Function: DfsGetDriveBasedPath, public
+//
+// Synopsis: This function takes a universal name (UNC form) and returns
+// a drive based path for it - If that path is in Dfs namespace.
+//
+// Arguments: [lpUniversalPath] -- The universal name.
+// [lpDriveBasedPath] -- The drive based path is returned here.
+// [lpBufferSize] -- On entry, contains the size of
+// lpDriveBasedPath in bytes. If DFS_E_BUFFER_TOO_SMALL
+// is returned, this will be set to indicate the
+// required buffer size, in bytes.
+//
+// Returns: [S_OK] -- If all went well.
+// [DFS_E_BUFFER_TOO_SMALL] -- If the buffer passed in small.
+// Required size will be in lpBufSize.
+// [DFS_E_NOT_DFS_NAMESPACE] --If the universal path does not
+// refer to Dfs namespace at all.
+// [DFS_E_NO_DRIVE_MAPPING] -- In the event that there is no drive
+// mapping available for this path.
+//
+//---------------------------------------------------------------------------
+DFSAPI STDAPI
+DfsGetDriveBasedPath(
+ LPCWSTR lpUniversalPath,
+ LPWSTR lpDriveBasedPath,
+ LPDWORD lpBufferSize);
+
+
+//+--------------------------------------------------------------------------
+//
+// Function: DfsPathsEqual, public
+//
+// Synopsis: This function compares two Win32 paths which point into the
+// Dfs namespace. It returns TRUE if the two paths refer to the
+// same ORG based prefix in the Dfs namespace and false if not.
+//
+// Arguments: [lpPath1] -- First Path
+// [lpPath2] -- Second Path
+//
+// Returns: TRUE If paths are equal else FALSE.
+//
+// Note: If the two paths differ in even a L'\' character at the end
+// a FALSE will be returned.
+//
+//---------------------------------------------------------------------------
+DFSAPI BOOLEAN
+DfsPathsEqual(
+ LPCWSTR lpPath1,
+ LPCWSTR lpPath2);
+
+
+//+--------------------------------------------------------------------------
+//
+// Function: DfsFindVolumePrefix, public
+//
+// Synopsis: Given a Win32 path this function will return the entrypath of
+// the volume on which this path lies.
+//
+// Arguments: [lpPath] -- The path is passed in here.
+// [lpPrefix] -- The org based prefix form of the above path.
+// [lpBufferSize] -- On entry, contains the size of lpPrefix in
+// bytes. If DFS_E_BUFFER_TOO_SMALL is returned, this
+// will be set to indicate the required buffer size, in
+// bytes.
+// [lpVolPrefixLen] -- The portion of the lpPrefix which forms the
+// prefix of volume where the object lies. This
+// is in WCHARs.
+//
+// Returns: [S_OK] -- If all went well.
+// [DFS_E_NOT_DFS_NAMESPACE] --If the universal path does not
+// refer to Dfs namespace at all.
+// [DFS_E_BUFFER_TOO_SMALL] -- If the buffer passed in small.
+// Required size will be in lpBufSize.
+//
+// Notes: Memory is allocated for returned args here. Use MemFree.
+//
+//---------------------------------------------------------------------------
+DFSAPI STDAPI
+DfsFindVolumePrefix(
+ LPCWSTR lpPath,
+ LPWSTR lpPrefix,
+ LPDWORD lpBufferSize,
+ LPDWORD lpVolPrefixLen);
+
+//+--------------------------------------------------------------------------
+//
+// Function: DfsFindLocalPath, public
+//
+// Synopsis: This function returns the local path to an object (if such
+// a path exists) given the name of that object in the Dfs
+// namespace.
+//
+// Arguments: [lpPath] -- The path is passed in here.
+// [lpLocalPath] -- The local path to the same object.
+// [lpBufferSize] -- On entry, contains the size of lpLocalPath
+// in bytes. If DFS_E_BUFFER_TOO_SMALL is returned, this
+// will be set to indicate the required buffer size, in
+// bytes.
+//
+// Returns: [S_OK] -- If all went well.
+// [DFS_E_NOT_DFS_NAMESPACE] --If the universal path does not
+// refer to Dfs namespace at all.
+// [DFS_E_BUFFER_TOO_SMALL] -- If the buffer passed in small.
+// Required size will be in lpBufSize.
+//
+//---------------------------------------------------------------------------
+DFSAPI STDAPI
+DfsFindLocalPath(
+ LPCWSTR lpPath,
+ LPWSTR lpLocalPath,
+ LPDWORD lpBufferSize);
+
+
+//+----------------------------------------------------------------------------
+//
+// Function: DfsGetHandleServerInfo, public
+//
+// Synopsis: Given a NT or Win32 handle to an Open file, this function
+// will return the name of the server that opened the file.
+//
+// Arguments: [hFile] -- Handle to open file.
+// [lpServerName] -- Pointer to buffer that will contain the
+// server name. If the file was opened on the local
+// machine, lpServerName[0] will be UNICODE_NULL (ie,
+// lpServerName == L"".
+// [lpcbServerName] -- On entry, size in bytes of lpServerName.
+// On return, if DFS_E_BUFFER_TOO_SMALL is returned,
+// this contains the size required.
+// [lpReplSpecificPath] -- Pointer to buffer that will contain
+// the replica specific path to the file that was
+// opened.
+// [lpcbReplSpecificPath] -- On entry, size in bytes of
+// lpdwReplSpecificPath. On return, if
+// DFS_E_BUFFER_TOO_SMALL is returned, this contains the
+// size required.
+//
+// Returns: [S_OK] -- lpServerName has the server's name, and
+// lpReplSpecifcPath has the replica specific path.
+//
+// [DFS_E_BUFFER_TOO_SMALL] -- Either lpServerName or
+// lpReplSpecificPath is too small.
+//
+// [DFS_E_NOT_DFS_NAMESPACE] -- Handle is not a Dfs handle.
+//
+// [E_HANDLE] -- Handle is invalid, the server that opened the
+// handle can no longer be reached, or some other network
+// error happened.
+//
+// [E_OUTOFMEMORY] -- Unable to allocate enough memory for
+// internal functioning.
+//
+//-----------------------------------------------------------------------------
+
+DFSAPI STDAPI
+DfsGetHandleServerInfo(
+ IN HANDLE hFile,
+ IN OUT LPWSTR lpServerName,
+ IN OUT LPDWORD lpcbServerName,
+ IN OUT LPWSTR lpReplSpecificPath,
+ IN OUT LPDWORD lpcbReplSpecificPath);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DfsGetHandleIDs, public
+//
+// Synopsis: Given a Win32 or NT Handle (to a file/dir/obj), this function
+// will return the domain, volume, and object ids of the
+// object opened via the handle.
+//
+//
+// Arguments: [hFile] -- [NT or Win32] Handle to the file/directory/object.
+// [pDomainId] -- On successful return, these three fields
+// [pVolumeId] -- contain the domain, volume and object id.
+// [pObjectId]
+//
+// Returns: [S_OK] -- IDs returned successfully
+//
+// [E_HANDLE] -- Handle is invalid, is not a Dfs handle,
+// the server that opened the handle can no longer be
+// reached, or the underlying file system does not
+// support object ids.
+//
+//-----------------------------------------------------------------------------
+
+DFSAPI STDAPI
+DfsGetHandleIDs(
+ IN HANDLE hFile,
+ OUT GUID *pDomainId,
+ OUT GUID *pVolumeId,
+ OUT OBJECTID *pObjectId);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DfsGetVolumeFromID, public
+//
+// Synopsis: Given a domain and volume id (probably returned by
+// DfsGetHandleIDs), this routine will return a Win32 name
+// corresponding to the given ids.
+//
+// Arguments: [pDomainId] -- The domain and volume ids to "resolve".
+// [pVolumeId]
+// [pwszPath] -- The path is returned here. This must point to a
+// valid buffer.
+// [lpdwSize] -- The size, in bytes, of pwszPath. If the buffer
+// is too small, then on return, this variable will
+// contain the required number of bytes.
+//
+//
+// Returns: [S_OK] -- Everything went ok, and the path is in pszPath.
+//
+// [DFS_E_BUFFER_TOO_SMALL] -- The provided buffer was too small;
+// the required buffer size, in bytes, is returned in
+// lpdwSize.
+//
+// [E_INVALIDARG] -- pwszPath does not point to a valid buffer.
+//
+// [DFS_E_NO_MAPPING] -- Either the domain id could not be
+// resolved to a domain name, or the volume id did not
+// correspond to an existing volume.
+//
+//-----------------------------------------------------------------------------
+
+DFSAPI STDAPI
+DfsGetVolumeFromID(
+ IN GUID *pDomainId,
+ IN GUID *pVolumeId,
+ OUT LPWSTR pwszPath,
+ IN OUT LPDWORD lpdwSize);
+
+
+//
+// FOLLOWING ARE APIS FOR ACQUIRING BINDING STRINGS VIA DFS
+//
+
+//
+// Following are the values for the grfFlags argument in DfsGetBindingsFirst
+//
+#define DFS_ALLOW_DATAGRAM 0x01
+
+//
+// Following are the values for the ulReason argument in DfsGetBindingsNext
+//
+#define REASON_UNAVAILABLE 0x01
+#define REASON_TOOBUSY 0x02
+#define REASON_OTHER 0x04
+
+//+---------------------------------------------------------------------------
+//
+// Function: DfsGetBindingsFirst
+//
+// Synopsis: Given the name of an object, this function figures out the
+// machine on which the object lies and returns an RPC binding
+// handle to that machine. This will be a partial binding handle.
+// If the path resolves to a replicated volume, a binding to the
+// preferred replica is returned, along with a cookie which
+// can be passed back into DfsGetBindingsNext (see below) to
+// iterate through the other replicas.
+//
+// Arguments: [grfFlags] -- Flags. Currently only one value:
+//
+// DFS_ALLOW_DATAGRAM - indicates that the binding
+// returned may be for a datagram
+// transport. Otherwise, only
+// connection-oriented transports
+// will be considered.
+//
+// [pwszObjectName] -- Win32 path to the object for which
+// a binding is requested.
+//
+// [pbh] -- The Binding Handle is returned here. See notes below.
+//
+// [pdwContinuation] -- Returns the continuation cookie for
+// accessing alternative replicas.
+//
+// Returns: S_OK -- If there are other replicas and caller can call
+// Close/Next APIs to get more binding handles using the
+// continuation cookie.
+//
+// S_FALSE -- If there are no other replicas.
+//
+//
+// Notes: If the path specified resolves to the local machine, the function
+// will return S_FALSE and *pbh will be set to NULL. If the path
+// resolves into DFS, the binding handle returned will be for the
+// optimal compatible transport. If the path resolves to a non-DFS
+// network path, a named pipe binding will be returned (along with
+// S_FALSE).
+//
+//----------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsGetBindingsFirst(
+ DWORD grfFlags,
+ LPWSTR pwszObjectName,
+ RPC_BINDING_HANDLE *pbh,
+ LPDWORD pdwContinuation);
+
+
+//+---------------------------------------------------------------------------
+//
+// Function: DfsGetBindingsNext
+//
+// Synopsis: This function should be called only after DfsGetBindingsFirst
+// has been called. If the first binding handle returned
+// does not work then this function is called to see if there
+// are other replicas for which a binding handle can be obtained
+//
+// Arguments: [dwContinuation] -- The continuation handle returned in
+// DfsGetBindingsFirst API.
+// [ulReason] -- The reason additional bindings are being
+// requested. This is only informational to Dfs.
+// [pbh] -- The binding handle for the next replica.
+//
+// Returns: [S_OK] -- If there are other replicas still available.
+// [S_FALSE] -- If the vector returned is for last replica.
+//
+//----------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsGetBindingsNext(
+ DWORD dwContinuation,
+ ULONG ulReason,
+ RPC_BINDING_HANDLE *pbh);
+
+
+//+---------------------------------------------------------------------------
+//
+// Function: DfsGetBindingsClose
+//
+// Synopsis: This function releases the continuation pseudo-handle. This
+// call should not be issued if DfsGetBindingsFirst/Next returns
+// S_FALSE or an error.
+//
+// Arguments: [dwContinuation] -- Continuation handle returned from
+// DfsGetBindingsFirst
+//
+// Returns:
+//
+//----------------------------------------------------------------------------
+
+DFSAPI STDAPI DfsGetBindingsClose(
+ DWORD dwContinuation);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/dhcpcext.h b/public/sdk/inc/dhcpcext.h
new file mode 100644
index 000000000..69c9e02b0
--- /dev/null
+++ b/public/sdk/inc/dhcpcext.h
@@ -0,0 +1,77 @@
+/*++
+
+Copyright (c) 1993-1995 Microsoft Corporation All rights reserved
+
+Module Name:
+
+ dhcpcext.h
+
+Abstract:
+
+ defines, typedefs, prototypes to enable clients to interface with
+ dhcp client
+
+Author:
+
+ Pradeepb 12/3/95
+
+Revision History:
+
+Notes:
+
+ Currently used by SHIVA for their RAS client. Currently, contains
+ stuff relevant only to poking DHCP client so that it notifies nbt (on WFW).
+
+--*/
+
+#ifndef _DHCPEXT_
+#define _DHCPEXT_
+//
+// Pass in the following for Type when you want to poke vdhcp with the
+// ip address and any options that you get from the RAS server. The function
+// to use is DhcpSetInfo or DhcpSetInfoR (used by SHIVA's RAS client).
+//
+#define DHCP_PPP_PARAMETER_SET 2
+#define MAX_HARDWARE_ADDRESS_LENGTH 16
+
+//
+// Note: IpAddr should be in network order (like what the IP driver returns)
+//
+
+TDI_STATUS DhcpSetInfoR( UINT Type,
+ ULONG IpAddr, //new ip address
+ PNIC_INFO pNicInfo,
+ PVOID pBuff,
+ UINT Size ) ;
+
+
+typedef struct _NIC_INFO {
+ ULONG IfIndex; //interface index
+ ULONG SubnetMask; //subnet mask in network order
+ ULONG OldIpAddress; //old ip address in network order
+ } NIC_INFO, *PNIC_INFO;
+
+
+
+
+typedef struct _HARDWARE_ADDRESS {
+ DWORD Length; //length of hardware address in array below
+ CHAR Address[MAX_HARDWARE_ADDRESS_LENGTH];
+} HARDWARE_ADDRESS, *PHARDWARE_ADDRESS;
+
+//
+// define PPP parameter set info buffer structure. Specify one option, its
+// length and value.
+//
+
+typedef struct _PPP_SET_INFO {
+ HARDWARE_ADDRESS HardwareAddress; //specify your hardware address
+ DWORD ParameterOpCode; //ex. 44 for NBNS, 6 for DNS (#s are
+ // in dhcp rfc
+ DWORD ParameterLength; //length of Parameter Value in
+ //RawParmeter below
+ BYTE RawParameter[1];
+} PPP_SET_INFO, *LP_PPP_SET_INFO;
+
+#endif // _DHCPEXT_
+
diff --git a/public/sdk/inc/diamondc.h b/public/sdk/inc/diamondc.h
new file mode 100644
index 000000000..07d827831
--- /dev/null
+++ b/public/sdk/inc/diamondc.h
@@ -0,0 +1,583 @@
+/*** types.h - Common defines for FCI/FDI stuff -- goes into FCI/FDI.H
+ *
+ * Microsoft Confidential
+ * Copyright (C) Microsoft Corporation 1993-1994
+ * All Rights Reserved.
+ *
+ * History:
+ * 03-Mar-1993 chuckst Merged from other files
+ * 08-Mar-1994 bens Changed symbol to control recursive include
+ * 09-Mar-1994 bens Cleanups for RESERVE modifications
+ * 16-Mar-1994 bens Nuke padlong()
+ * 21-Mar-1994 bens Spruce up comments
+ * 22-Mar-1994 bens Add BIT16 test so we can build 16 or 32 bit!
+ * 26-May-1994 bens Added Quantum compression definitions
+ */
+
+#ifndef INCLUDED_TYPES_FCI_FDI
+#define INCLUDED_TYPES_FCI_FDI 1
+
+
+#ifdef BIT16
+
+//** 16-bit build
+#ifndef HUGE
+#define HUGE huge
+#endif
+
+#ifndef FAR
+#define FAR far
+#endif
+
+#else // !BIT16
+
+//** Define away for 32-bit (NT/Chicago) build
+#ifndef HUGE
+#define HUGE
+#endif
+
+#ifndef FAR
+#define FAR
+#endif
+
+#endif // !BIT16
+
+
+#ifndef DIAMONDAPI
+#define DIAMONDAPI __cdecl
+#endif
+
+
+//** Specify structure packing explicitly for clients of FDI
+#include <pshpack4.h>
+
+//** Don't redefine types defined in Win16 WINDOWS.H (_INC_WINDOWS)
+// or Win32 WINDOWS.H (_WINDOWS_)
+//
+#if !defined(_INC_WINDOWS) && !defined(_WINDOWS_)
+typedef int BOOL; /* f */
+typedef unsigned char BYTE; /* b */
+typedef unsigned int UINT; /* ui */
+typedef unsigned short USHORT; /* us */
+typedef unsigned long ULONG; /* ul */
+#endif // _INC_WINDOWS
+
+typedef unsigned long CHECKSUM; /* csum */
+
+typedef unsigned long UOFF; /* uoff - uncompressed offset */
+typedef unsigned long COFF; /* coff - cabinet file offset */
+
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+
+/*** ERF - Error structure
+ *
+ * This structure returns error information from FCI/FDI. The caller should
+ * not modify this structure.
+ */
+typedef struct {
+ int erfOper; // FCI/FDI error code -- see FDIERROR_XXX
+ // and FCIERR_XXX equates for details.
+
+ int erfType; // Optional error value filled in by FCI/FDI.
+ // For FCI, this is usually the C run-time
+ // *errno* value.
+
+ BOOL fError; // TRUE => error present
+} ERF; /* erf */
+typedef ERF FAR *PERF; /* perf */
+
+#ifdef _DEBUG
+// don't hide statics from map during debugging
+#define STATIC
+#else // !DEBUG
+#define STATIC static
+#endif // !DEBUG
+
+#define CB_MAX_CHUNK 32768U
+#define CB_MAX_DISK 0x7ffffffL
+#define CB_MAX_FILENAME 256
+#define CB_MAX_CABINET_NAME 256
+#define CB_MAX_CAB_PATH 256
+#define CB_MAX_DISK_NAME 256
+
+
+/*** FNALLOC - Memory Allocation
+ * FNFREE - Memory Free
+ *
+ * These are modeled after the C run-time routines malloc() and free()
+ * (16-bit clients please note -- the size is a ULONG, so you may need
+ * to write a wrapper routine for halloc!). FDI expects error
+ * handling to be identical to these C run-time routines.
+ *
+ * As long as you faithfully copy the semantics of malloc() and free(),
+ * you can supply any functions you like!
+ *
+ * WARNING: You should never assume anything about the sequence of
+ * PFNALLOC and PFNFREE calls -- incremental releases of
+ * Diamond/FDI may have radically different numbers of
+ * PFNALLOC calls and allocation sizes!
+ */
+typedef void HUGE * (FAR DIAMONDAPI *PFNALLOC)(ULONG cb); /* pfna */
+#define FNALLOC(fn) void HUGE * FAR DIAMONDAPI fn(ULONG cb)
+
+typedef void (FAR DIAMONDAPI *PFNFREE)(void HUGE *pv); /* pfnf */
+#define FNFREE(fn) void FAR DIAMONDAPI fn(void HUGE *pv)
+
+
+/*** tcompXXX - Diamond compression types
+ *
+ * These are passed to FCIAddFile(), and are also stored in the CFFOLDER
+ * structures in cabinet files.
+ *
+ * NOTE: We reserve bits for the TYPE, QUANTUM_LEVEL, and QUANTUM_MEM
+ * to provide room for future expansion. Since this value is stored
+ * in the CFDATA records in the cabinet file, we don't want to
+ * have to change the format for existing compression configurations
+ * if we add new ones in the future. This will allows us to read
+ * old cabinet files in the future.
+ */
+
+typedef unsigned short TCOMP; /* tcomp */
+
+#define tcompMASK_TYPE 0x000F // Mask for compression type
+#define tcompTYPE_NONE 0x0000 // No compression
+#define tcompTYPE_MSZIP 0x0001 // MSZIP
+#define tcompTYPE_QUANTUM 0x0002 // Quantum
+#define tcompBAD 0x000F // Unspecified compression type
+
+#define tcompMASK_QUANTUM_LEVEL 0x00F0 // Mask for Quantum Compression Level
+#define tcompQUANTUM_LEVEL_LO 0x0010 // Lowest Quantum Level (1)
+#define tcompQUANTUM_LEVEL_HI 0x0070 // Highest Quantum Level (7)
+#define tcompSHIFT_QUANTUM_LEVEL 4 // Amount to shift over to get int
+
+#define tcompMASK_QUANTUM_MEM 0x1F00 // Mask for Quantum Compression Memory
+#define tcompQUANTUM_MEM_LO 0x0A00 // Lowest Quantum Memory (10)
+#define tcompQUANTUM_MEM_HI 0x1500 // Highest Quantum Memory (21)
+#define tcompSHIFT_QUANTUM_MEM 8 // Amount to shift over to get int
+
+#define tcompMASK_RESERVED 0xE000 // Reserved bits (high 3 bits)
+
+
+
+#define CompressionTypeFromTCOMP(tc) \
+ ((tc) & tcompMASK_TYPE)
+
+#define CompressionLevelFromTCOMP(tc) \
+ (((tc) & tcompMASK_QUANTUM_LEVEL) >> tcompSHIFT_QUANTUM_LEVEL)
+
+#define CompressionMemoryFromTCOMP(tc) \
+ (((tc) & tcompMASK_QUANTUM_MEM) >> tcompSHIFT_QUANTUM_MEM)
+
+#define TCOMPfromTypeLevelMemory(t,l,m) \
+ (((m) << tcompSHIFT_QUANTUM_MEM ) | \
+ ((l) << tcompSHIFT_QUANTUM_LEVEL) | \
+ ( t ))
+
+
+//** Revert to default structure packing
+#include <poppack.h>
+
+#endif // !INCLUDED_TYPES_FCI_FDI
+/*** fci_int.h - File Compression Interface definitions
+ *
+ * Microsoft Confidential
+ * Copyright (C) Microsoft Corporation 1993-1994
+ * All Rights Reserved.
+ *
+ * Author:
+ * Chuck Strouss
+ *
+ * History:
+ * 09-Jan-1994 chuckst Contents moved to bfol.h, this file is a
+ * placeholder for the new 'higher-level' fci
+ * 14-Feb-1994 bens Cleaned up some comments, added BUGBUGs.
+ * 09-Mar-1994 bens Added error codes (moved from buildcab.h);
+ * Added RESERVE control
+ * 17-Mar-1994 bens Specify structure packing explicitly
+ * 21-Mar-1994 bens Cleaned up names
+ * 22-Mar-1994 bens Documented error cods
+ * 29-Mar-1994 bens Add FCIFlushFolder, renamed FCIFlushCabinet
+ * 18-Apr-1994 bens Changed CDECL to DIAMONDAPI
+ * 18-May-1994 bens Add ccab.fFailOnIncompressible field for
+ * Chicago M6 hack.
+ */
+
+#ifndef INCLUDED_FCI
+#define INCLUDED_FCI 1
+
+//** Specify structure packing explicitly for clients of FCI
+#include <pshpack4.h>
+
+
+/*** FCIERROR - Error codes returned in erf.erfOper field
+ *
+ */
+typedef enum {
+FCIERR_NONE, // No error
+
+FCIERR_OPEN_SRC, // Failure opening file to be stored in cabinet
+ // erf.erfTyp has C run-time *errno* value
+
+FCIERR_READ_SRC, // Failure reading file to be stored in cabinet
+ // erf.erfTyp has C run-time *errno* value
+
+FCIERR_ALLOC_FAIL, // Out of memory in FCI
+
+FCIERR_TEMP_FILE, // Could not create a temporary file
+ // erf.erfTyp has C run-time *errno* value
+
+FCIERR_BAD_COMPR_TYPE, // Unknown compression type
+
+FCIERR_CAB_FILE, // Could not create cabinet file
+ // erf.erfTyp has C run-time *errno* value
+
+FCIERR_USER_ABORT, // Client requested abort
+
+FCIERR_MCI_FAIL, // Failure compressing data
+
+#ifndef REMOVE_CHICAGO_M6_HACK
+FCIERR_M6_HACK_INCOMPRESSIBLE, // Data was incompressible
+#endif
+} FCIERROR;
+
+
+/*** HFCI - Handle to an FCI Context
+ *
+ */
+typedef void * HFCI;
+
+
+/*** CCAB - Current Cabinet
+ *
+ * This structure is used for passing in the cabinet parameters to FCI,
+ * and is passed back on certain FCI callbacks to provide cabinet
+ * information to the client.
+ */
+typedef struct {
+// longs first
+ ULONG cb; // size available for cabinet on this media
+ ULONG cbFolderThresh; // Thresshold for forcing a new Folder
+
+// then ints
+ UINT cbReserveCFHeader; // Space to reserve in CFHEADER
+ UINT cbReserveCFFolder; // Space to reserve in CFFOLDER
+ UINT cbReserveCFData; // Space to reserve in CFDATA
+ int iCab; // sequential numbers for cabinets
+ int iDisk; // Disk number
+#ifndef REMOVE_CHICAGO_M6_HACK
+ int fFailOnIncompressible; // TRUE => Fail if a block is incompressible
+#endif
+
+// then shorts
+ USHORT setID; // Cabinet set ID
+
+// then chars
+ char szDisk[CB_MAX_DISK_NAME]; // current disk name
+ char szCab[CB_MAX_CABINET_NAME]; // current cabinet name
+ char szCabPath[CB_MAX_CAB_PATH]; // path for creating cabinet
+} CCAB; /* ccab */
+typedef CCAB *PCCAB; /* pccab */
+
+
+/*** FNFCIGETNEXTCABINET - Callback used to request new cabinet info
+ *
+ * Entry:
+ * pccab - Points to copy of old ccab structure to modify
+ * cbPrevCab - Estimate of size of previous cabinet
+ * pv - Has the caller's context pointer
+ *
+ * Exit-Success:
+ * returns TRUE;
+ *
+ * Exit-Failure:
+ * returns FALSE;
+ */
+typedef BOOL (DIAMONDAPI *PFNFCIGETNEXTCABINET)(PCCAB pccab,
+ ULONG cbPrevCab,
+ void *pv); /* pfnfcignc */
+
+#define FNFCIGETNEXTCABINET(fn) BOOL DIAMONDAPI fn(PCCAB pccab, \
+ ULONG cbPrevCab, \
+ void *pv)
+
+
+/*** FNFCIFILEPLACED - Notify FCI client that file was placed
+ *
+ * Entry:
+ * pccab - cabinet structure to fill in, with copy of previous one
+ * pszFile - name of file, from cabinet
+ * cbFile - length of file
+ * fContinuation - true if this is a later segment of a continued file
+ * pv - the context of the client
+ *
+ * Exit-Success:
+ * return value anything but -1
+ *
+ * Exit-Failure:
+ * return value -1 means to abort
+ */
+typedef int (DIAMONDAPI *PFNFCIFILEPLACED)(PCCAB pccab,
+ char *pszFile,
+ long cbFile,
+ BOOL fContinuation,
+ void *pv); /* pfnfcifp */
+
+#define FNFCIFILEPLACED(fn) int DIAMONDAPI fn(PCCAB pccab, \
+ char *pszFile, \
+ long cbFile, \
+ BOOL fContinuation, \
+ void *pv)
+
+
+/*** FNCDIGETOPENINFO - Open source file, get date/time/attribs
+ *
+ * Entry:
+ * pszName -- complete path to filename
+ * pdate -- location to return FAT-style date code
+ * ptime -- location to return FAT-style time code
+ * pattribs -- location to return FAT-style attributes
+ * pv -- client's context
+ *
+ * Exit-Success:
+ * Return value is file handle of open file to read
+ *
+ * Exit-Failure:
+ * Return value is -1
+ */
+typedef int (DIAMONDAPI *PFNFCIGETOPENINFO)(char *pszName,
+ USHORT *pdate,
+ USHORT *ptime,
+ USHORT *pattribs,
+ void *pv); /* pfnfcigoi */
+
+#define FNFCIGETOPENINFO(fn) int DIAMONDAPI fn(char *pszName, \
+ USHORT *pdate, \
+ USHORT *ptime, \
+ USHORT *pattribs, \
+ void *pv)
+
+/*** FNFCISTATUS - Status/Cabinet Size callback
+ *
+ * Entry:
+ * typeStatus == statusFile if compressing a block into a folder
+ * cb1 = Size of compressed block
+ * cb2 = Size of uncompressed block
+ *
+ * typeStatus == statusFolder if adding a folder to a cabinet
+ * cb1 = Amount of folder copied to cabinet so far
+ * cb2 = Total size of folder
+ *
+ * typeStatus == statusCabinet if writing out a complete cabinet
+ * cb1 = Estimated cabinet size that was previously
+ * passed to fnfciGetNextCabinet().
+ * cb2 = Actual cabinet size
+ * NOTE: Return value is desired client size for cabinet
+ * file. FCI updates the maximum cabinet size
+ * remaining using this value. This allows a client
+ * to generate multiple cabinets per disk, and have
+ * FCI limit the size correctly -- the client can do
+ * cluster size rounding on the cabinet size!
+ * The client should either return cb2, or round cb2
+ * up to some larger value and return that.
+ * Exit-Success:
+ * Returns anything other than -1;
+ * NOTE: See statusCabinet for special return values!
+ *
+ * Exit-Failure:
+ * Returns -1 to signal that FCI should abort;
+ */
+
+#define statusFile 0 // Add File to Folder callback
+#define statusFolder 1 // Add Folder to Cabinet callback
+#define statusCabinet 2 // Write out a completed cabinet callback
+
+typedef long (DIAMONDAPI *PFNFCISTATUS)(UINT typeStatus,
+ ULONG cb1,
+ ULONG cb2,
+ void *pv); /* pfnfcis */
+
+#define FNFCISTATUS(fn) long DIAMONDAPI fn(UINT typeStatus, \
+ ULONG cb1, \
+ ULONG cb2, \
+ void *pv)
+
+
+/*** FNFCIGETTEMPFILE - Callback, requests temporary file name
+ *
+ * Entry:
+ * pszTempName - Buffer to receive complete tempfile name
+ * cbTempName - Size of pszTempName buffer
+ *
+ * Exit-Success:
+ * return TRUE
+ *
+ * Exit-Failure:
+ * return FALSE; could not create tempfile, or buffer too small
+ *
+ * Note:
+ * It is conceivable that this function may return a filename
+ * that will already exist by the time it is opened. For this
+ * reason, the caller should make several attempts to create
+ * temporary files before giving up.
+ */
+typedef BOOL (DIAMONDAPI *PFNFCIGETTEMPFILE)(char *pszTempName,
+ int cbTempName); /* pfnfcigtf */
+
+#define FNFCIGETTEMPFILE(fn) BOOL DIAMONDAPI fn(char *pszTempName, \
+ int cbTempName)
+
+
+/*** FCICreate -- create an FCI context (an open CAB, an open FOL)
+ *
+ * Entry:
+ * perf - structure where we return error codes
+ * pfnfcifp - callback to inform caller of eventual dest of files
+ * pfna - memory allocation function callback
+ * pfnf - memory free function callback
+ * pfnfcigtf - temp file name generator callback
+ * pccab - pointer to cabinet/disk name & size structure
+ *
+ * Notes:
+ * (1) The alloc/free callbacks must remain valid throughout
+ * the life of the context, up to and including the call to
+ * FCIDestroy.
+ * (2) The perf pointer is stored in the compression context (HCI),
+ * and any errors from subsequent FCI calls are stored in the
+ * erf that was passed in on *this* call.
+ *
+ * Exit-Success:
+ * Returns non-NULL handle to an FCI context.
+ *
+ * Exit-Failure:
+ * Returns NULL, perf filled in.
+ */
+HFCI DIAMONDAPI FCICreate(PERF perf,
+ PFNFCIFILEPLACED pfnfcifp,
+ PFNALLOC pfna,
+ PFNFREE pfnf,
+ PFNFCIGETTEMPFILE pfnfcigtf,
+ PCCAB pccab
+ );
+
+
+/*** FCIAddFile - Add a disk file to a folder/cabinet
+ *
+ * Entry:
+ * hfci - FCI context handle
+ * pszSourceFile - Name of file to add to folder
+ * pszFileName - Name to store into folder/cabinet
+ * fExecute - Flag indicating execute on extract
+ * pfn_progress - Progress callback
+ * pfnfcignc - GetNextCabinet callback
+ * pfnfcis - Status callback
+ * pfnfcigoi - OpenInfo callback
+ * typeCompress - Type of compression to use for this file
+ * pv - pointer to caller's internal context
+ *
+ * Exit-Success:
+ * returns TRUE
+ *
+ * Exit-Failure:
+ * returns FALSE, error filled in
+ *
+ * This is the main function used to add file(s) to a cabinet
+ * or series of cabinets. If the current file causes the current
+ * folder/cabinet to overflow the disk image currently being built,
+ * the cabinet will be terminated, and a new cabinet/disk name will
+ * be prompted for via a callback. The pending folder will be trimmed
+ * of the data which has already been generated in the finished cabinet.
+ */
+BOOL DIAMONDAPI FCIAddFile(HFCI hfci,
+ char *pszSourceFile,
+ char *pszFileName,
+ BOOL fExecute,
+ PFNFCIGETNEXTCABINET pfnfcignc,
+ PFNFCISTATUS pfnfcis,
+ PFNFCIGETOPENINFO pfnfcigoi,
+ TCOMP typeCompress,
+ void *pv
+ );
+
+
+/*** FCIFlushCabinet - Complete the current cabinet under construction
+ *
+ * This will cause the current cabinet (assuming it is not empty) to
+ * be gathered together and written to disk.
+ *
+ * Entry:
+ * hfci - FCI context
+ * fGetNextCab - TRUE => Call GetNextCab to get continuation info;
+ * FALSE => Don't call GetNextCab unless this cabinet
+ * overflows.
+ * pfnfcignc - callback function to get continuation cabinets
+ * pfnfcis - callback function for progress reporting
+ * pv - caller's internal context for callbacks
+ *
+ * Exit-Success:
+ * return code TRUE
+ *
+ * Exit-Failure:
+ * return code FALSE, error structure filled in
+ */
+BOOL DIAMONDAPI FCIFlushCabinet(HFCI hfci,
+ BOOL fGetNextCab,
+ PFNFCIGETNEXTCABINET pfnfcignc,
+ PFNFCISTATUS pfnfcis,
+ void *pv
+ );
+
+
+/*** FCIFlushFolder - Complete the current folder under construction
+ *
+ * This will force the termination of the current folder, which may or
+ * may not cause one or more cabinet files to be completed.
+ *
+ * Entry:
+ * hfci - FCI context
+ * GetNextCab - callback function to get continuation cabinets
+ * pfnProgress - callback function for progress reporting
+ * pv - caller's internal context for callbacks
+ *
+ * Exit-Success:
+ * return code TRUE
+ *
+ * Exit-Failure:
+ * return code FALSE, error structure filled in
+ */
+BOOL DIAMONDAPI FCIFlushFolder(HFCI hfci,
+ PFNFCIGETNEXTCABINET pfnfcignc,
+ PFNFCISTATUS pfnfcis,
+ void *pv
+ );
+
+
+/*** FCIDestroy - Destroy a FCI context and delete temp files
+ *
+ * Entry:
+ * hfci - FCI context
+ *
+ * Exit-Success:
+ * return code TRUE
+ *
+ * Exit-Failure:
+ * return code FALSE, error structure filled in
+ */
+BOOL DIAMONDAPI FCIDestroy (HFCI hfci);
+
+//** Revert to default structure packing
+#include <poppack.h>
+
+#endif // !INCLUDED_FCI
+
diff --git a/public/sdk/inc/diamondd.h b/public/sdk/inc/diamondd.h
new file mode 100644
index 000000000..981eb5fc0
--- /dev/null
+++ b/public/sdk/inc/diamondd.h
@@ -0,0 +1,1110 @@
+/*** types.h - Common defines for FCI/FDI stuff -- goes into FCI/FDI.H
+ *
+ * Microsoft Confidential
+ * Copyright (C) Microsoft Corporation 1993-1994
+ * All Rights Reserved.
+ *
+ * History:
+ * 03-Mar-1993 chuckst Merged from other files
+ * 08-Mar-1994 bens Changed symbol to control recursive include
+ * 09-Mar-1994 bens Cleanups for RESERVE modifications
+ * 16-Mar-1994 bens Nuke padlong()
+ * 21-Mar-1994 bens Spruce up comments
+ * 22-Mar-1994 bens Add BIT16 test so we can build 16 or 32 bit!
+ * 26-May-1994 bens Added Quantum compression definitions
+ */
+
+#ifndef INCLUDED_TYPES_FCI_FDI
+#define INCLUDED_TYPES_FCI_FDI 1
+
+
+#ifdef BIT16
+
+//** 16-bit build
+#ifndef HUGE
+#define HUGE huge
+#endif
+
+#ifndef FAR
+#define FAR far
+#endif
+
+#else // !BIT16
+
+//** Define away for 32-bit (NT/Chicago) build
+#ifndef HUGE
+#define HUGE
+#endif
+
+#ifndef FAR
+#define FAR
+#endif
+
+#endif // !BIT16
+
+
+#ifndef DIAMONDAPI
+#define DIAMONDAPI __cdecl
+#endif
+
+
+//** Specify structure packing explicitly for clients of FDI
+#include <pshpack4.h>
+
+//** Don't redefine types defined in Win16 WINDOWS.H (_INC_WINDOWS)
+// or Win32 WINDOWS.H (_WINDOWS_)
+//
+#if !defined(_INC_WINDOWS) && !defined(_WINDOWS_)
+typedef int BOOL; /* f */
+typedef unsigned char BYTE; /* b */
+typedef unsigned int UINT; /* ui */
+typedef unsigned short USHORT; /* us */
+typedef unsigned long ULONG; /* ul */
+#endif // _INC_WINDOWS
+
+typedef unsigned long CHECKSUM; /* csum */
+
+typedef unsigned long UOFF; /* uoff - uncompressed offset */
+typedef unsigned long COFF; /* coff - cabinet file offset */
+
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+
+/*** ERF - Error structure
+ *
+ * This structure returns error information from FCI/FDI. The caller should
+ * not modify this structure.
+ */
+typedef struct {
+ int erfOper; // FCI/FDI error code -- see FDIERROR_XXX
+ // and FCIERR_XXX equates for details.
+
+ int erfType; // Optional error value filled in by FCI/FDI.
+ // For FCI, this is usually the C run-time
+ // *errno* value.
+
+ BOOL fError; // TRUE => error present
+} ERF; /* erf */
+typedef ERF FAR *PERF; /* perf */
+
+#ifdef _DEBUG
+// don't hide statics from map during debugging
+#define STATIC
+#else // !DEBUG
+#define STATIC static
+#endif // !DEBUG
+
+#define CB_MAX_CHUNK 32768U
+#define CB_MAX_DISK 0x7ffffffL
+#define CB_MAX_FILENAME 256
+#define CB_MAX_CABINET_NAME 256
+#define CB_MAX_CAB_PATH 256
+#define CB_MAX_DISK_NAME 256
+
+
+/*** FNALLOC - Memory Allocation
+ * FNFREE - Memory Free
+ *
+ * These are modeled after the C run-time routines malloc() and free()
+ * (16-bit clients please note -- the size is a ULONG, so you may need
+ * to write a wrapper routine for halloc!). FDI expects error
+ * handling to be identical to these C run-time routines.
+ *
+ * As long as you faithfully copy the semantics of malloc() and free(),
+ * you can supply any functions you like!
+ *
+ * WARNING: You should never assume anything about the sequence of
+ * PFNALLOC and PFNFREE calls -- incremental releases of
+ * Diamond/FDI may have radically different numbers of
+ * PFNALLOC calls and allocation sizes!
+ */
+typedef void HUGE * (FAR DIAMONDAPI *PFNALLOC)(ULONG cb); /* pfna */
+#define FNALLOC(fn) void HUGE * FAR DIAMONDAPI fn(ULONG cb)
+
+typedef void (FAR DIAMONDAPI *PFNFREE)(void HUGE *pv); /* pfnf */
+#define FNFREE(fn) void FAR DIAMONDAPI fn(void HUGE *pv)
+
+
+/*** tcompXXX - Diamond compression types
+ *
+ * These are passed to FCIAddFile(), and are also stored in the CFFOLDER
+ * structures in cabinet files.
+ *
+ * NOTE: We reserve bits for the TYPE, QUANTUM_LEVEL, and QUANTUM_MEM
+ * to provide room for future expansion. Since this value is stored
+ * in the CFDATA records in the cabinet file, we don't want to
+ * have to change the format for existing compression configurations
+ * if we add new ones in the future. This will allows us to read
+ * old cabinet files in the future.
+ */
+
+typedef unsigned short TCOMP; /* tcomp */
+
+#define tcompMASK_TYPE 0x000F // Mask for compression type
+#define tcompTYPE_NONE 0x0000 // No compression
+#define tcompTYPE_MSZIP 0x0001 // MSZIP
+#define tcompTYPE_QUANTUM 0x0002 // Quantum
+#define tcompBAD 0x000F // Unspecified compression type
+
+#define tcompMASK_QUANTUM_LEVEL 0x00F0 // Mask for Quantum Compression Level
+#define tcompQUANTUM_LEVEL_LO 0x0010 // Lowest Quantum Level (1)
+#define tcompQUANTUM_LEVEL_HI 0x0070 // Highest Quantum Level (7)
+#define tcompSHIFT_QUANTUM_LEVEL 4 // Amount to shift over to get int
+
+#define tcompMASK_QUANTUM_MEM 0x1F00 // Mask for Quantum Compression Memory
+#define tcompQUANTUM_MEM_LO 0x0A00 // Lowest Quantum Memory (10)
+#define tcompQUANTUM_MEM_HI 0x1500 // Highest Quantum Memory (21)
+#define tcompSHIFT_QUANTUM_MEM 8 // Amount to shift over to get int
+
+#define tcompMASK_RESERVED 0xE000 // Reserved bits (high 3 bits)
+
+
+
+#define CompressionTypeFromTCOMP(tc) \
+ ((tc) & tcompMASK_TYPE)
+
+#define CompressionLevelFromTCOMP(tc) \
+ (((tc) & tcompMASK_QUANTUM_LEVEL) >> tcompSHIFT_QUANTUM_LEVEL)
+
+#define CompressionMemoryFromTCOMP(tc) \
+ (((tc) & tcompMASK_QUANTUM_MEM) >> tcompSHIFT_QUANTUM_MEM)
+
+#define TCOMPfromTypeLevelMemory(t,l,m) \
+ (((m) << tcompSHIFT_QUANTUM_MEM ) | \
+ ((l) << tcompSHIFT_QUANTUM_LEVEL) | \
+ ( t ))
+
+
+//** Revert to default structure packing
+#include <poppack.h>
+
+#endif // !INCLUDED_TYPES_FCI_FDI
+/*** fdi_int.h - Diamond File Decompression Interface definitions
+ *
+ * Microsoft Confidential
+ * Copyright (C) Microsoft Corporation 1993-1994
+ * All Rights Reserved.
+ *
+ * Author:
+ * Chuck Strouss, Benjamin W. Slivka
+ *
+ * History:
+ * 30-Nov-1993 chuckst Created
+ * 21-Dec-1993 bens Updated with comments from 12/21/93 design review
+ * 09-Mar-1994 bens Add new error code
+ * 17-Mar-1994 bens Specify structure packing explicitly
+ * 21-Mar-1994 bens Spruce up comments
+ * 25-Mar-1994 bens Add fdintCABINET_INFO notification
+ * 31-Mar-1994 bens Clarify handling of open files when errors occur
+ * 01-Apr-1994 bens Add FDIIsCabinet() function.
+ * 07-Apr-1994 bens Add Decryption interfaces; remove fdintPROGRESS
+ * 11-Apr-1994 bens Add more guidance on how to respond to FDI errors.
+ * 13-Apr-1994 bens Add date & time & attribs to fdintCOPY_FILE
+ * 18-Apr-1994 bens Changed CDECL to DIAMONDAPI
+ * 05-May-1994 bens Clarified error handling (billhu/alanr/migueldc)
+ * 11-May-1994 bens Added setId/iCabinet to fdintNEXT_CABINET
+ * 07-Jul-1994 bens Support Quantum virtual file -- PLEASE note the
+ * comments about PFNOPEN/PFNCLOSE changes, and
+ * about reserving memory, if necessary, before
+ * calling FDICreate()!
+ * 19-Aug-1994 bens Add cpuType parameter to FDICreate().
+ * 03-Apr-1995 jeffwe Added chaining indicators to FDICABINETINFO
+ *
+ *
+ * ATTENTION:
+ * This is the only documentation on the Diamond File Decompression
+ * Interface (FDI). Please read it carefully, as there are some subtle
+ * points in FDI that are carefully explained below.
+ *
+ * Concepts:
+ * A *cabinet* file contains one or more *folders*. A folder contains
+ * one or more (pieces of) *files*. A folder is by definition a
+ * decompression unit, i.e., to extract a file from a folder, all of
+ * the data from the start of the folder up through and including the
+ * desired file must be read and decompressed.
+ *
+ * A folder can span one (or more) cabinet boundaries, and by implication
+ * a file can also span one (or more) cabinet boundaries. Indeed, more
+ * than one file can span a cabinet boundary, since Diamond concatenates
+ * files together into a single data stream before compressing (actually,
+ * at most one file will span any one cabinet boundary, but Diamond does
+ * not know which file this is, since the mapping from uncompressed bytes
+ * to compressed bytes is pretty obscure. Also, since Diamond compresses
+ * in blocks of 32K (at present), any files with data in a 32K block that
+ * spans a cabinet boundary require Diamond to read both cabinet files
+ * to get the two halves of the compressed block).
+ *
+ * Overview:
+ * The File Decompression Interface is used to simplify the reading of
+ * Diamond cabinet files. A setup program will proceed in a manner very
+ * similar to the pseudo code below. An FDI context is created, the
+ * setup program calls FDICopy() for each cabinet to be processed. For
+ * each file in the cabinet, FDICopy() calls a notification callback
+ * routine, asking the setup program if the file should be copied.
+ * This call-back approach is great because it allows the cabinet file
+ * to be read and decompressed in an optimal manner, and also makes FDI
+ * independent of the run-time environment -- FDI makes *no* C run-time
+ * calls whatsoever. All memory allocation and file I/O functions are
+ * passed into FDI by the client.
+ *
+ * main(...)
+ * {
+ * // Read INF file to construct list of desired files.
+ * // Ideally, these would be sorted in the same order as the
+ * // files appear in the cabinets, so that you can just walk
+ * // down the list in response to fdintCOPY_FILE notifications.
+ *
+ * // Construct list of required cabinets.
+ *
+ * hfdi = FDICreate(...); // Create FDI context
+ * For (cabinet in List of Cabinets) {
+ * FDICopy(hfdi,cabinet,fdiNotify,...); // Process each cabinet
+ * }
+ * FDIDestroy(hfdi);
+ * ...
+ * }
+ *
+ * // Notification callback function
+ * fdiNotify(fdint,...)
+ * {
+ * If (User Aborted) // Permit cancellation
+ * if (fdint == fdintCLOSE_FILE_INFO)
+ * close open file
+ * return -1;
+ * switch (fdint) {
+ * case fdintCOPY_FILE: // File to copy, maybe
+ * // Check file against list of desired files
+ * if want to copy file
+ * open destination file and return handle
+ * else
+ * return NULL; // Skip file
+ * case fdintCLOSE_FILE_INFO:
+ * close file
+ * set date, time, and attributes
+ *
+ * case fdintNEXT_CABINET:
+ * if not an error callback
+ * Tell FDI to use suggested directory name
+ * else
+ * Tell user what the problem was, and prompt
+ * for a new disk and/or path.
+ * if user aborts
+ * Tell FDI to abort
+ * else
+ * return to FDI to try another cabinet
+ * //NOTE: Be sure to see the (sample) code in EXTRACT.C
+ * // for an example of how to do this!
+ * ...
+ * }
+ *
+ * Error Handling Suggestions:
+ * Since you the client have passed in *all* of the functions that
+ * FDI uses to interact with the "outside" world, you are in prime
+ * position to understand and deal with errors.
+ *
+ * The general philosophy of FDI is to pass all errors back up to
+ * the client. FDI returns fairly generic error codes in the case
+ * where one of the callback functions (PFNOPEN, PFNREAD, etc.) fail,
+ * since it assumes that the callback function will save enough
+ * information in a static/global so that when FDICopy() returns
+ * fail, the client can examine this information and report enough
+ * detail about the problem that the user can take corrective action.
+ *
+ * For very specific errors (CORRUPT_CABINET, for example), FDI returns
+ * very specific error codes.
+ *
+ * THE BEST POLICY IS FOR YOUR CALLBACK ROUTINES TO AVOID RETURNING
+ * ERRORS TO FDI!
+ *
+ * Examples:
+ * (1) If the disk is getting full, instead of returning an error
+ * from your PFNWRITE function, you should -- inside your
+ * PFNWRITE function -- put up a dialog telling the user to free
+ * some disk space.
+ * (2) When you get the fdintNEXT_CABINET notification, you should
+ * verify that the cabinet you return is the correct one (call
+ * FDIIsCabinet(), and make sure the setID matches the one for
+ * the current cabinet specified in the fdintCABINET_INFO, and
+ * that the disk number is one greater.
+ *
+ * NOTE: FDI will continue to call fdintNEXT_CABINET until it
+ * gets the cabinet it wants, or until you return -1
+ * to abort the FDICopy() call.
+ *
+ * The documentation below on the FDI error codes provides explicit
+ * guidance on how to avoid each error.
+ *
+ * If you find you must return a failure to FDI from one of your
+ * callback functions, then FDICopy() frees all resources it allocated
+ * and closes all files. If you can figure out how to overcome the
+ * problem, you can call FDICopy() again on the last cabinet, and
+ * skip any files that you already copied. But, note that FDI does
+ * *not* maintain any state between FDICopy() calls, other than possibly
+ * memory allocated for the decompressor.
+ *
+ * See FDIERROR for details on FDI error codes and recommended actions.
+ *
+ *
+ * Progress Indicator Suggestions:
+ * As above, all of the file I/O functions are supplied by you. So,
+ * updating a progress indicator is very simple. You keep track of
+ * the target files handles you have opened, along with the uncompressed
+ * size of the target file. When you see writes to the handle of a
+ * target file, you use the write count to update your status!
+ * Since this method is available, there is no separate callback from
+ * FDI just for progess indication.
+ */
+
+#ifndef INCLUDED_FDI
+#define INCLUDED_FDI 1
+
+//** Specify structure packing explicitly for clients of FDI
+#include <pshpack4.h>
+
+
+/*** FDIERROR - Error codes returned in erf.erfOper field
+ *
+ * In general, FDI will only fail if one of the passed in memory or
+ * file I/O functions fails. Other errors are pretty unlikely, and are
+ * caused by corrupted cabinet files, passing in a file which is not a
+ * cabinet file, or cabinet files out of order.
+ *
+ * Description: Summary of error.
+ * Cause: List of possible causes of this error.
+ * Response: How client might respond to this error, or avoid it in
+ * the first place.
+ */
+typedef enum {
+ FDIERROR_NONE,
+ // Description: No error
+ // Cause: Function was successfull.
+ // Response: Keep going!
+
+ FDIERROR_CABINET_NOT_FOUND,
+ // Description: Cabinet not found
+ // Cause: Bad file name or path passed to FDICopy(), or returned
+ // to fdintNEXT_CABINET.
+ // Response: To prevent this error, validate the existence of the
+ // the cabinet *before* passing the path to FDI.
+
+ FDIERROR_NOT_A_CABINET,
+ // Description: Cabinet file does not have the correct format
+ // Cause: File passed to to FDICopy(), or returned to
+ // fdintNEXT_CABINET, is too small to be a cabinet file,
+ // or does not have the cabinet signature in its first
+ // four bytes.
+ // Response: To prevent this error, call FDIIsCabinet() to check a
+ // cabinet before calling FDICopy() or returning the
+ // cabinet path to fdintNEXT_CABINET.
+
+ FDIERROR_UNKNOWN_CABINET_VERSION,
+ // Description: Cabinet file has an unknown version number.
+ // Cause: File passed to to FDICopy(), or returned to
+ // fdintNEXT_CABINET, has what looks like a cabinet file
+ // header, but the version of the cabinet file format
+ // is not one understood by this version of FDI. The
+ // erf.erfType field is filled in with the version number
+ // found in the cabinet file.
+ // Response: To prevent this error, call FDIIsCabinet() to check a
+ // cabinet before calling FDICopy() or returning the
+ // cabinet path to fdintNEXT_CABINET.
+
+ FDIERROR_CORRUPT_CABINET,
+ // Description: Cabinet file is corrupt
+ // Cause: FDI returns this error any time it finds a problem
+ // with the logical format of a cabinet file, and any
+ // time one of the passed-in file I/O calls fails when
+ // operating on a cabinet (PFNOPEN, PFNSEEK, PFNREAD,
+ // or PFNCLOSE). The client can distinguish these two
+ // cases based upon whether the last file I/O call
+ // failed or not.
+ // Response: Assuming this is not a real corruption problem in
+ // a cabinet file, the file I/O functions could attempt
+ // to do retries on failure (for example, if there is a
+ // temporary network connection problem). If this does
+ // not work, and the file I/O call has to fail, then the
+ // FDI client will have to clean up and call the
+ // FDICopy() function again.
+
+ FDIERROR_ALLOC_FAIL,
+ // Description: Could not allocate enough memory
+ // Cause: FDI tried to allocate memory with the PFNALLOC
+ // function, but it failed.
+ // Response: If possible, PFNALLOC should take whatever steps
+ // are possible to allocate the memory requested. If
+ // memory is not immediately available, it might post a
+ // dialog asking the user to free memory, for example.
+ // Note that the bulk of FDI's memory allocations are
+ // made at FDICreate() time and when the first cabinet
+ // file is opened during FDICopy().
+
+ FDIERROR_BAD_COMPR_TYPE,
+ // Description: Unknown compression type in a cabinet folder
+ // Cause: [Should never happen.] A folder in a cabinet has an
+ // unknown compression type. This is probably caused by
+ // a mismatch between the version of Diamond used to
+ // create the cabinet and the FDI. LIB used to read the
+ // cabinet.
+ // Response: Abort.
+
+ FDIERROR_MDI_FAIL,
+ // Description: Failure decompressing data from a cabinet file
+ // Cause: The decompressor found an error in the data coming
+ // from the file cabinet. The cabinet file was corrupted.
+ // [11-Apr-1994 bens When checksuming is turned on, this
+ // error should never occur.]
+ // Response: Probably should abort; only other choice is to cleanup
+ // and call FDICopy() again, and hope there was some
+ // intermittent data error that will not reoccur.
+
+ FDIERROR_TARGET_FILE,
+ // Description: Failure writing to target file
+ // Cause: FDI returns this error any time it gets an error back
+ // from one of the passed-in file I/O calls fails when
+ // writing to a file being extracted from a cabinet.
+ // Response: To avoid or minimize this error, the file I/O functions
+ // could attempt to avoid failing. A common cause might
+ // be disk full -- in this case, the PFNWRITE function
+ // could have a check for free space, and put up a dialog
+ // asking the user to free some disk space.
+
+ FDIERROR_RESERVE_MISMATCH,
+ // Description: Cabinets in a set do not have the same RESERVE sizes
+ // Cause: [Should never happen]. FDI requires that the sizes of
+ // the per-cabinet, per-folder, and per-data block
+ // RESERVE sections be consistent across all the cabinet
+ // in a set. Diamond will only generate cabinet sets
+ // with these properties.
+ // Response: Abort.
+
+ FDIERROR_WRONG_CABINET,
+ // Description: Cabinet returned on fdintNEXT_CABINET is incorrect
+ // Cause: NOTE: THIS ERROR IS NEVER RETURNED BY FDICopy()!
+ // Rather, FDICopy() keeps calling the fdintNEXT_CABINET
+ // callback until either the correct cabinet is specified,
+ // or you return ABORT.
+ // When FDICopy() is extracting a file that crosses a
+ // cabinet boundary, it calls fdintNEXT_CABINET to ask
+ // for the path to the next cabinet. Not being very
+ // trusting, FDI then checks to make sure that the
+ // correct continuation cabinet was supplied! It does
+ // this by checking the "setID" and "iCabinet" fields
+ // in the cabinet. When DIAMOND.EXE creates a set of
+ // cabinets, it constructs the "setID" using the sum
+ // of the bytes of all the destination file names in
+ // the cabinet set. FDI makes sure that the 16-bit
+ // setID of the continuation cabinet matches the
+ // cabinet file just processed. FDI then checks that
+ // the cabinet number (iCabinet) is one more than the
+ // cabinet number for the cabinet just processed.
+ // Response: You need code in your fdintNEXT_CABINET (see below)
+ // handler to do retries if you get recalled with this
+ // error. See the sample code (EXTRACT.C) to see how
+ // this should be handled.
+
+ FDIERROR_USER_ABORT,
+ // Description: FDI aborted.
+ // Cause: An FDI callback returnd -1 (usually).
+ // Response: Up to client.
+
+} FDIERROR;
+
+
+/*** HFDI - Handle to an FDI context
+ *
+ * FDICreate() creates this, and it must be passed to all other FDI
+ * functions.
+ */
+typedef void FAR *HFDI; /* hfdi */
+
+
+/*** FDICABINETINFO - Information about a cabinet
+ *
+ */
+typedef struct {
+ long cbCabinet; // Total length of cabinet file
+ USHORT cFolders; // Count of folders in cabinet
+ USHORT cFiles; // Count of files in cabinet
+ USHORT setID; // Cabinet set ID
+ USHORT iCabinet; // Cabinet number in set (0 based)
+ BOOL fReserve; // TRUE => RESERVE present in cabinet
+ BOOL hasprev; // TRUE => Cabinet is chained prev
+ BOOL hasnext; // TRUE => Cabinet is chained next
+} FDICABINETINFO; /* fdici */
+typedef FDICABINETINFO FAR *PFDICABINETINFO; /* pfdici */
+
+
+/*** FDIDECRYPTTYPE - PFNFDIDECRYPT command types
+ *
+ */
+typedef enum {
+ fdidtNEW_CABINET, // New cabinet
+ fdidtNEW_FOLDER, // New folder
+ fdidtDECRYPT, // Decrypt a data block
+} FDIDECRYPTTYPE; /* fdidt */
+
+
+/*** FDIDECRYPT - Data for PFNFDIDECRYPT function
+ *
+ */
+typedef struct {
+ FDIDECRYPTTYPE fdidt; // Command type (selects union below)
+ void FAR *pvUser; // Decryption context
+ union {
+ struct { // fdidtNEW_CABINET
+ void FAR *pHeaderReserve; // RESERVE section from CFHEADER
+ USHORT cbHeaderReserve; // Size of pHeaderReserve
+ USHORT setID; // Cabinet set ID
+ int iCabinet; // Cabinet number in set (0 based)
+ } cabinet;
+
+ struct { // fdidtNEW_FOLDER
+ void FAR *pFolderReserve; // RESERVE section from CFFOLDER
+ USHORT cbFolderReserve; // Size of pFolderReserve
+ USHORT iFolder; // Folder number in cabinet (0 based)
+ } folder;
+
+ struct { // fdidtDECRYPT
+ void FAR *pDataReserve; // RESERVE section from CFDATA
+ USHORT cbDataReserve; // Size of pDataReserve
+ void FAR *pbData; // Data buffer
+ USHORT cbData; // Size of data buffer
+ BOOL fSplit; // TRUE if this is a split data block
+ USHORT cbPartial; // 0 if this is not a split block, or
+ // the first piece of a split block;
+ // Greater than 0 if this is the
+ // second piece of a split block.
+ } decrypt;
+ };
+} FDIDECRYPT; /* fdid */
+typedef FDIDECRYPT FAR *PFDIDECRYPT; /* pfdid */
+
+
+/*** PFNFDIDECRYPT - FDI Decryption callback
+ *
+ * If this function is passed on the FDICopy() call, then FDI calls it
+ * at various times to update the decryption state and to decrypt FCDATA
+ * blocks.
+ *
+ * Common Entry Conditions:
+ * pfdid->fdidt - Command type
+ * pfdid->pvUser - pvUser value from FDICopy() call
+ *
+ * fdidtNEW_CABINET: //** Notification of a new cabinet
+ * Entry:
+ * pfdid->cabinet.
+ * pHeaderReserve - RESERVE section from CFHEADER
+ * cbHeaderReserve - Size of pHeaderReserve
+ * setID - Cabinet set ID
+ * iCabinet - Cabinet number in set (0 based)
+ * Exit-Success:
+ * returns anything but -1;
+ * Exit-Failure:
+ * returns -1; FDICopy() is aborted.
+ * Notes:
+ * (1) This call allows the decryption code to pick out any information
+ * from the cabinet header reserved area (placed there by DIACRYPT)
+ * needed to perform decryption. If there is no such information,
+ * this call would presumably be ignored.
+ * (2) This call is made very soon after fdintCABINET_INFO.
+ *
+ * fdidtNEW_FOLDER: //** Notification of a new folder
+ * Entry:
+ * pfdid->folder.
+ * pFolderReserve - RESERVE section from CFFOLDER
+ * cbFolderReserve - Size of pFolderReserve
+ * iFolder - Folder number in cabinet (0 based)
+ * Exit-Success:
+ * returns anything but -1;
+ * Exit-Failure:
+ * returns -1; FDICopy() is aborted.
+ * Notes:
+ * This call allows the decryption code to pick out any information
+ * from the folder reserved area (placed there by DIACRYPT) needed
+ * to perform decryption. If there is no such information, this
+ * call would presumably be ignored.
+ *
+ * fdidtDECRYPT: //** Decrypt a data buffer
+ * Entry:
+ * pfdid->folder.
+ * pDataReserve - RESERVE section for this CFDATA block
+ * cbDataReserve - Size of pDataReserve
+ * pbData - Data buffer
+ * cbData - Size of data buffer
+ * fSplit - TRUE if this is a split data block
+ * cbPartial - 0 if this is not a split block, or the first
+ * piece of a split block; Greater than 0 if
+ * this is the second piece of a split block.
+ * Exit-Success:
+ * returns TRUE;
+ * Exit-Failure:
+ * returns FALSE; error during decrypt
+ * returns -1; FDICopy() is aborted.
+ * Notes:
+ * Diamond will split CFDATA blocks across cabinet boundaries if
+ * necessary. To provide maximum flexibility, FDI will call the
+ * fdidtDECRYPT function twice on such split blocks, once when
+ * the first portion is read, and again when the second portion
+ * is read. And, of course, most data blocks will not be split.
+ * So, there are three cases:
+ *
+ * 1) fSplit == FALSE
+ * You have the entire data block, so decrypt it.
+ *
+ * 2) fSplit == TRUE, cbPartial == 0
+ * This is the first portion of a split data block, so cbData
+ * is the size of this portion. You can either choose to decrypt
+ * this piece, or ignore this call and decrypt the full CFDATA
+ * block on the next (second) fdidtDECRYPT call.
+ *
+ * 3) fSplit == TRUE, cbPartial > 0
+ * This is the second portion of a split data block (indeed,
+ * cbPartial will have the same value as cbData did on the
+ * immediately preceeding fdidtDECRYPT call!). If you decrypted
+ * the first portion on the first call, then you can decrypt the
+ * second portion now. If you ignored the first call, then you
+ * can decrypt the entire buffer.
+ * NOTE: pbData points to the second portion of the split data
+ * block in this case, *not* the entire data block. If
+ * you want to wait until the second piece to decrypt the
+ * *entire* block, pbData-cbPartial is the address of the
+ * start of the whole block, and cbData+cbPartial is its
+ * size.
+ */
+typedef int (FAR DIAMONDAPI *PFNFDIDECRYPT)(PFDIDECRYPT pfdid); /* pfnfdid */
+#define FNFDIDECRYPT(fn) int FAR DIAMONDAPI fn(PFDIDECRYPT pfdid)
+
+
+/*** FDINOTIFICATION - Notification structure for PFNFDINOTIFY
+ *
+ * See the FDINOTIFICATIONTYPE definition for information on usage and
+ * meaning of these fields.
+ */
+typedef struct {
+// long fields
+ long cb;
+ char FAR *psz1;
+ char FAR *psz2;
+ char FAR *psz3; // Points to a 256 character buffer
+ void FAR *pv; // Value for client
+
+// int fields
+ int hf;
+
+// short fields
+ USHORT date;
+ USHORT time;
+ USHORT attribs;
+
+ USHORT setID; // Cabinet set ID
+ USHORT iCabinet; // Cabinet number (0-based)
+
+ FDIERROR fdie;
+} FDINOTIFICATION, FAR *PFDINOTIFICATION; /* fdin, pfdin */
+
+
+/*** FDINOTIFICATIONTYPE - FDICopy notification types
+ *
+ * The notification function for FDICopy can be called with the following
+ * values for the fdint parameter. In all cases, the pfdin->pv field is
+ * filled in with the value of the pvUser argument passed in to FDICopy().
+ *
+ * A typical sequence of calls will be something like this:
+ * fdintCABINET_INFO // Info about the cabinet
+ * fdintPARTIAL_FILE // Only if this is not the first cabinet, and
+ * // one or more files were continued from the
+ * // previous cabinet.
+ * ...
+ * fdintPARTIAL_FILE
+ * fdintCOPY_FILE // The first file that starts in this cabinet
+ * ...
+ * fdintCOPY_FILE // Now let's assume you want this file...
+ * // PFNWRITE called multiple times to write to this file.
+ * fdintCLOSE_FILE_INFO // File done, set date/time/attributes
+ *
+ * fdintCOPY_FILE // Now let's assume you want this file...
+ * // PFNWRITE called multiple times to write to this file.
+ * fdintNEXT_CABINET // File was continued to next cabinet!
+ * fdintCABINET_INFO // Info about the new cabinet
+ * // PFNWRITE called multiple times to write to this file.
+ * fdintCLOSE_FILE_INFO // File done, set date/time/attributes
+ * ...
+ *
+ * fdintCABINET_INFO:
+ * Called exactly once for each cabinet opened by FDICopy(), including
+ * continuation cabinets opened due to file(s) spanning cabinet
+ * boundaries. Primarily intended to permit EXTRACT.EXE to
+ * automatically select the next cabinet in a cabinet sequence even if
+ * not copying files that span cabinet boundaries.
+ * Entry:
+ * pfdin->psz1 = name of next cabinet
+ * pfdin->psz2 = name of next disk
+ * pfdin->psz3 = cabinet path name
+ * pfdin->setID = cabinet set ID (a random 16-bit number)
+ * pfdin->iCabinet = Cabinet number within cabinet set (0-based)
+ * Exit-Success:
+ * Return anything but -1
+ * Exit-Failure:
+ * Returns -1 => Abort FDICopy() call
+ * Notes:
+ * This call is made *every* time a new cabinet is examined by
+ * FDICopy(). So if "foo2.cab" is examined because a file is
+ * continued from "foo1.cab", and then you call FDICopy() again
+ * on "foo2.cab", you will get *two* fdintCABINET_INFO calls all
+ * told.
+ *
+ * fdintCOPY_FILE:
+ * Called for each file that *starts* in the current cabinet, giving
+ * the client the opportunity to request that the file be copied or
+ * skipped.
+ * Entry:
+ * pfdin->psz1 = file name in cabinet
+ * pfdin->cb = uncompressed size of file
+ * pfdin->date = file date
+ * pfdin->time = file time
+ * pfdin->attribs = file attributes
+ * Exit-Success:
+ * Return non-zero file handle for destination file; FDI writes
+ * data to this file use the PFNWRITE function supplied to FDICreate,
+ * and then calls fdintCLOSE_FILE_INFO to close the file and set
+ * the date, time, and attributes. NOTE: This file handle returned
+ * must also be closeable by the PFNCLOSE function supplied to
+ * FDICreate, since if an error occurs while writing to this handle,
+ * FDI will use the PFNCLOSE function to close the file so that the
+ * client may delete it.
+ * Exit-Failure:
+ * Returns 0 => Skip file, do not copy
+ * Returns -1 => Abort FDICopy() call
+ *
+ * fdintCLOSE_FILE_INFO:
+ * Called after all of the data has been written to a target file.
+ * This function must close the file and set the file date, time,
+ * and attributes.
+ * Entry:
+ * pfdin->psz1 = file name in cabinet
+ * pfdin->hf = file handle
+ * pfdin->date = file date
+ * pfdin->time = file time
+ * pfdin->attribs = file attributes
+ * pfdin->cb = Run After Extract (0 - don't run, 1 Run)
+ * Exit-Success:
+ * Returns TRUE
+ * Exit-Failure:
+ * Returns FALSE, or -1 to abort;
+ *
+ * IMPORTANT NOTE IMPORTANT:
+ * pfdin->cb is overloaded to no longer be the size of
+ * the file but to be a binary indicated run or not
+ *
+ * IMPORTANT NOTE:
+ * FDI assumes that the target file was closed, even if this
+ * callback returns failure. FDI will NOT attempt to use
+ * the PFNCLOSE function supplied on FDICreate() to close
+ * the file!
+ *
+ * fdintPARTIAL_FILE:
+ * Called for files at the front of the cabinet that are CONTINUED
+ * from a previous cabinet. This callback occurs only when FDICopy is
+ * started on second or subsequent cabinet in a series that has files
+ * continued from a previous cabinet.
+ * Entry:
+ * pfdin->psz1 = file name of file CONTINUED from a PREVIOUS cabinet
+ * pfdin->psz2 = name of cabinet where file starts
+ * pfdin->psz3 = name of disk where file starts
+ * Exit-Success:
+ * Return anything other than -1; enumeration continues
+ * Exit-Failure:
+ * Returns -1 => Abort FDICopy() call
+ *
+ * fdintNEXT_CABINET:
+ * This function is *only* called when fdintCOPY_FILE was told to copy
+ * a file in the current cabinet that is continued to a subsequent
+ * cabinet file. It is important that the cabinet path name (psz3)
+ * be validated before returning! This function should ensure that
+ * the cabinet exists and is readable before returning. So, this
+ * is the function that should, for example, issue a disk change
+ * prompt and make sure the cabinet file exists.
+ *
+ * When this function returns to FDI, FDI will check that the setID
+ * and iCabinet match the expected values for the next cabinet.
+ * If not, FDI will continue to call this function until the correct
+ * cabinet file is specified, or until this function returns -1 to
+ * abort the FDICopy() function. pfdin->fdie is set to
+ * FDIERROR_WRONG_CABINET to indicate this case.
+ *
+ * If you *haven't* ensured that the cabinet file is present and
+ * readable, or the cabinet file has been damaged, pfdin->fdie will
+ * receive other appropriate error codes:
+ *
+ * FDIERROR_CABINET_NOT_FOUND
+ * FDIERROR_NOT_A_CABINET
+ * FDIERROR_UNKNOWN_CABINET_VERSION
+ * FDIERROR_CORRUPT_CABINET
+ * FDIERROR_BAD_COMPR_TYPE
+ * FDIERROR_RESERVE_MISMATCH
+ * FDIERROR_WRONG_CABINET
+ *
+ * Entry:
+ * pfdin->psz1 = name of next cabinet where current file is continued
+ * pfdin->psz2 = name of next disk where current file is continued
+ * pfdin->psz3 = cabinet path name; FDI concatenates psz3 with psz1
+ * to produce the fully-qualified path for the cabinet
+ * file. The 256-byte buffer pointed at by psz3 may
+ * be modified, but psz1 may not!
+ * pfdin->fdie = FDIERROR_WRONG_CABINET if the previous call to
+ * fdintNEXT_CABINET specified a cabinet file that
+ * did not match the setID/iCabinet that was expected.
+ * Exit-Success:
+ * Return anything but -1
+ * Exit-Failure:
+ * Returns -1 => Abort FDICopy() call
+ * Notes:
+ * This call is almost always made when a target file is open and
+ * being written to, and the next cabinet is needed to get more
+ * data for the file.
+ */
+typedef enum {
+ fdintCABINET_INFO, // General information about cabinet
+ fdintPARTIAL_FILE, // First file in cabinet is continuation
+ fdintCOPY_FILE, // File to be copied
+ fdintCLOSE_FILE_INFO, // close the file, set relevant info
+ fdintNEXT_CABINET, // File continued to next cabinet
+} FDINOTIFICATIONTYPE; /* fdint */
+
+typedef int (FAR DIAMONDAPI *PFNFDINOTIFY)(FDINOTIFICATIONTYPE fdint,
+ PFDINOTIFICATION pfdin); /* pfnfdin */
+
+#define FNFDINOTIFY(fn) int FAR DIAMONDAPI fn(FDINOTIFICATIONTYPE fdint, \
+ PFDINOTIFICATION pfdin)
+
+
+/*** PFNOPEN - File I/O callbacks for FDI
+ * PFNREAD
+ * PFNWRITE
+ * PFNCLOSE
+ * PFNSEEK
+ *
+ * These are modeled after the C run-time routines _open, _read,
+ * _write, _close, and _lseek. The values for the PFNOPEN oflag
+ * and pmode calls are those defined for _open. FDI expects error
+ * handling to be identical to these C run-time routines.
+ *
+ * As long as you faithfully copy these aspects, you can supply
+ * any functions you like!
+ *
+ *
+ * SPECIAL NOTE FOR QUANTUM DECOMPRESSION:
+ * When using Quantum compression, at compress time (with Diamond)
+ * you specify how much memory Quantum requires at *decompress* time
+ * to store the decompression history buffer. This can be as large
+ * as *2Mb*, and in an MS-DOS environment, for example, this much
+ * memory may not be available (certainly not under 640K!). To permit
+ * large CompressionMemory settings on any machine, the Quantum
+ * decompressor will attempt to create a "spill file" if there is not
+ * sufficient memory available.
+ *
+ * For PFNOPEN, a special pszFile parameter is passed to indicate that
+ * a temporary "spill file" is requested. The name passed is "*", and
+ * you should cast the pszFile parameter to an FDISPILLFILE pointer,
+ * and get the requested file size. You then need to create a file
+ * of the specified size with read/write access, save the file name and
+ * handle for later use by PFNCLOSE, and then return the handle. If
+ * you cannot create the file of the specified size, you should return
+ * an error (-1). This file should be placed on a fast local hard disk,
+ * to maximize the speed of decompression.
+ *
+ * For PFNCLOSE, you should check the handle to see if it the spill file
+ * created previously by PFNOPEN (FDI will create at most one spill file
+ * per FDICreate() call). If it is the spill file handle, you should
+ * close the handle and then delete the file, using the file name you
+ * saved when you created the spill file in PFNOPEN.
+ *
+ * WARNING: You should never assume you know what file is being
+ * opened at any one point in time! FDI will usually
+ * stick to opening cabinet files, but it is possible
+ * that in a future implementation it may open temporary
+ * files or open cabinet files in a different order.
+ *
+ * Notes for Memory Mapped File fans:
+ * You can write wrapper routines to allow FDI to work on memory
+ * mapped files. You'll have to create your own "handle" type so that
+ * you can store the base memory address of the file and the current
+ * seek position, and then you'll allocate and fill in one of these
+ * structures and return a pointer to it in response to the PFNOPEN
+ * call and the fdintCOPY_FILE call. Your PFNREAD and PFNWRITE
+ * functions will do memcopy(), and update the seek position in your
+ * "handle" structure. PFNSEEK will just change the seek position
+ * in your "handle" structure.
+ */
+typedef int (FAR DIAMONDAPI *PFNOPEN) (char FAR *pszFile, int oflag, int pmode);
+typedef UINT (FAR DIAMONDAPI *PFNREAD) (int hf, void FAR *pv, UINT cb);
+typedef UINT (FAR DIAMONDAPI *PFNWRITE)(int hf, void FAR *pv, UINT cb);
+typedef int (FAR DIAMONDAPI *PFNCLOSE)(int hf);
+typedef long (FAR DIAMONDAPI *PFNSEEK) (int hf, long dist, int seektype);
+
+
+#pragma pack (1)
+
+/** FDISPILLFILE - Pass as pszFile on PFNOPEN to create spill file
+ *
+ * ach - A two byte string to signal to PFNOPEN that a spill file is
+ * requested. Value is '*','\0'.
+ * cbFile - Required spill file size, in bytes.
+ */
+typedef struct {
+ char ach[2]; // Set to { '*', '\0' }
+ long cbFile; // Required spill file size
+} FDISPILLFILE; /* fdisf */
+typedef FDISPILLFILE *PFDISPILLFILE; /* pfdisf */
+
+#pragma pack ()
+
+
+/*** cpuType values for FDICreate()
+ *
+ * WARNING: For 16-bit Windows applications, the CPU detection may not
+ * correctly detect 286 CPUs. Instead, use the following code:
+ *
+ * DWORD flags;
+ * int cpuType;
+ *
+ * flags = GetWinFlags();
+ * if (flags & WF_CPU286)
+ * cpuType = cpu80286;
+ * else
+ * cpuType = cpu80386;
+ *
+ * hfdi = FDICreate(....,cpuType,...);
+ */
+#define cpuUNKNOWN (-1) /* FDI does detection */
+#define cpu80286 (0) /* '286 opcodes only */
+#define cpu80386 (1) /* '386 opcodes used */
+
+
+/*** FDICreate - Create an FDI context
+ *
+ * Entry:
+ * pfnalloc
+ * pfnfree
+ * pfnopen
+ * pfnread
+ * pfnwrite
+ * pfnclose
+ * pfnlseek
+ * cpuType - Select CPU type (auto-detect, 286, or 386+)
+ * WARNING: Don't use auto-detect from a 16-bit Windows
+ * application! Use GetWinFlags()!
+ * NOTE: For the 32-bit FDI.LIB, this parameter is ignored!
+ * perf
+ *
+ * Exit-Success:
+ * Returns non-NULL FDI context handle.
+ *
+ * Exit-Failure:
+ * Returns NULL; perf filled in with error code
+ *
+ * Special notes for Quantum Decompression:
+ * If you have used a high setting for CompressionMemory in creating
+ * the cabinet file(s), then FDI will attempt to allocate a lot of
+ * memory (as much as 2Mb, if you specified 21 for CompressionMemory).
+ * Therefore, if you plan to allocate additional memory *after* the
+ * FDICreate() call, you should reserve some memory *prior* to calling
+ * FDICreate(), and then free it up afterwards (or do all your allocation
+ * before calling FDICreate().
+ */
+HFDI FAR DIAMONDAPI FDICreate(PFNALLOC pfnalloc,
+ PFNFREE pfnfree,
+ PFNOPEN pfnopen,
+ PFNREAD pfnread,
+ PFNWRITE pfnwrite,
+ PFNCLOSE pfnclose,
+ PFNSEEK pfnseek,
+ int cpuType,
+ PERF perf);
+
+
+/*** FDIIsCabinet - Determines if file is a cabinet, returns info if it is
+ *
+ * Entry:
+ * hfdi - Handle to FDI context (created by FDICreate())
+ * hf - File handle suitable for PFNREAD/PFNSEEK, positioned
+ * at offset 0 in the file to test.
+ * pfdici - Buffer to receive info about cabinet if it is one.
+ *
+ * Exit-Success:
+ * Returns TRUE; file is a cabinet, pfdici filled in.
+ *
+ * Exit-Failure:
+ * Returns FALSE, file is not a cabinet; If an error occurred,
+ * perf (passed on FDICreate call!) filled in with error.
+ */
+BOOL FAR DIAMONDAPI FDIIsCabinet(HFDI hfdi,
+ int hf,
+ PFDICABINETINFO pfdici);
+
+
+/*** FDICopy - extracts files from a cabinet
+ *
+ * Entry:
+ * hfdi - handle to FDI context (created by FDICreate())
+ * pszCabinet - main name of cabinet file
+ * pszCabPath - Path to cabinet file(s)
+ * flags - Flags to modify behavior
+ * pfnfdin - Notification function
+ * pfnfdid - Decryption function (pass NULL if not used)
+ * pvUser - User specified value to pass to notification function
+ *
+ * Exit-Success:
+ * Returns TRUE;
+ *
+ * Exit-Failure:
+ * Returns FALSE, perf (passed on FDICreate call!) filled in with
+ * error.
+ *
+ * Notes:
+ * (1) If FDICopy() fails while a target file is being written out, then
+ * FDI will use the PFNCLOSE function to close the file handle for that
+ * target file that was returned from the fdintCOPY_FILE notification.
+ * The client application is then free to delete the target file, since
+ * it will not be in a valid state (since there was an error while
+ * writing it out).
+ */
+BOOL FAR DIAMONDAPI FDICopy(HFDI hfdi,
+ char FAR *pszCabinet,
+ char FAR *pszCabPath,
+ int flags,
+ PFNFDINOTIFY pfnfdin,
+ PFNFDIDECRYPT pfnfdid,
+ void FAR *pvUser);
+
+
+/*** FDIDestroy - Destroy an FDI context
+ *
+ * Entry:
+ * hfdi - handle to FDI context (created by FDICreate())
+ *
+ * Exit-Success:
+ * Returns TRUE;
+ *
+ * Exit-Failure:
+ * Returns FALSE;
+ */
+BOOL FAR DIAMONDAPI FDIDestroy(HFDI hfdi);
+
+
+//** Revert to default structure packing
+#include <poppack.h>
+
+#endif //!INCLUDED_FDI
+
diff --git a/public/sdk/inc/digitalv.h b/public/sdk/inc/digitalv.h
new file mode 100644
index 000000000..c875c78dd
--- /dev/null
+++ b/public/sdk/inc/digitalv.h
@@ -0,0 +1,1089 @@
+/****************************************************************************/
+/* */
+/* DIGITALV.H - Include file for the MCI Digital Video Command Set */
+/* */
+/* Version 1.0 */
+/* */
+/* Copyright (c) 1995-1996, Microsoft Corp. All rights reserved. */
+/* */
+/* Date Modification */
+/* ------------ ------------ */
+/* Aug 19, 1992 -Version 1.0 Release */
+/* */
+/****************************************************************************/
+
+#ifndef _INC_DIGITALV
+#define _INC_DIGITALV 100
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+#define MCI_TEST 0x00000020L
+
+/* Message values */
+
+#define MCI_CAPTURE 0x0870
+#define MCI_MONITOR 0x0871
+#define MCI_RESERVE 0x0872
+#define MCI_SETAUDIO 0x0873
+#define MCI_SIGNAL 0x0875
+#define MCI_SETVIDEO 0x0876
+#define MCI_QUALITY 0x0877
+#define MCI_LIST 0x0878
+#define MCI_UNDO 0x0879
+#define MCI_CONFIGURE 0x087a
+#define MCI_RESTORE 0x087b
+
+/* Return and string constant values */
+
+#define MCI_ON 1
+#define MCI_OFF 0
+
+#define MCI_DGV_FILE_MODE_SAVING 0x0001
+#define MCI_DGV_FILE_MODE_LOADING 0x0002
+#define MCI_DGV_FILE_MODE_EDITING 0x0003
+#define MCI_DGV_FILE_MODE_IDLE 0x0004
+
+/* These identifiers are used only by device drivers */
+
+#define MCI_ON_S 0x00008000L
+#define MCI_OFF_S 0x00008001L
+#define MCI_DGV_FILE_S 0x00008002L
+#define MCI_DGV_INPUT_S 0x00008003L
+
+#define MCI_DGV_FILE_MODE_SAVING_S 0x00008004L
+#define MCI_DGV_FILE_MODE_LOADING_S 0x00008005L
+#define MCI_DGV_FILE_MODE_EDITING_S 0x00008006L
+#define MCI_DGV_FILE_MODE_IDLE_S 0x00008007L
+
+#define MCI_DGV_SETVIDEO_SRC_NTSC_S 0x00008010L
+#define MCI_DGV_SETVIDEO_SRC_RGB_S 0x00008011L
+#define MCI_DGV_SETVIDEO_SRC_SVIDEO_S 0x00008012L
+#define MCI_DGV_SETVIDEO_SRC_PAL_S 0x00008013L
+#define MCI_DGV_SETVIDEO_SRC_SECAM_S 0x00008014L
+#define MCI_DGV_SETVIDEO_SRC_GENERIC_S 0x00008015L
+
+#define MCI_DGV_SETAUDIO_SRC_LEFT_S 0x00008020L
+#define MCI_DGV_SETAUDIO_SRC_RIGHT_S 0x00008021L
+#define MCI_DGV_SETAUDIO_SRC_AVERAGE_S 0x00008022L
+#define MCI_DGV_SETAUDIO_SRC_STEREO_S 0x00008023L
+
+/* Window message for signal notification */
+
+#define MM_MCISIGNAL 0x3CB
+
+/* error values */
+
+#define MCIERR_DGV_DEVICE_LIMIT (MCIERR_CUSTOM_DRIVER_BASE+0)
+#define MCIERR_DGV_IOERR (MCIERR_CUSTOM_DRIVER_BASE+1)
+#define MCIERR_DGV_WORKSPACE_EMPTY (MCIERR_CUSTOM_DRIVER_BASE+2)
+#define MCIERR_DGV_DISK_FULL (MCIERR_CUSTOM_DRIVER_BASE+3)
+#define MCIERR_DGV_DEVICE_MEMORY_FULL (MCIERR_CUSTOM_DRIVER_BASE+4)
+#define MCIERR_DGV_BAD_CLIPBOARD_RANGE (MCIERR_CUSTOM_DRIVER_BASE+5)
+
+/* defines for monitor methods */
+
+#define MCI_DGV_METHOD_PRE 0x0000a000L
+#define MCI_DGV_METHOD_POST 0x0000a001L
+#define MCI_DGV_METHOD_DIRECT 0x0000a002L
+
+/* defines for known file formats */
+
+#define MCI_DGV_FF_AVSS 0x00004000L
+#define MCI_DGV_FF_AVI 0x00004001L
+#define MCI_DGV_FF_DIB 0x00004002L
+#define MCI_DGV_FF_RDIB 0x00004003L
+#define MCI_DGV_FF_JPEG 0x00004004L
+#define MCI_DGV_FF_RJPEG 0x00004005L
+#define MCI_DGV_FF_JFIF 0x00004006L
+#define MCI_DGV_FF_MPEG 0x00004007L
+
+/* values for dwItem field of MCI_CAPABILITY_PARMS structure */
+
+#define MCI_DGV_GETDEVCAPS_CAN_LOCK 0x00004000L
+#define MCI_DGV_GETDEVCAPS_CAN_STRETCH 0x00004001L
+#define MCI_DGV_GETDEVCAPS_CAN_FREEZE 0x00004002L
+#define MCI_DGV_GETDEVCAPS_MAX_WINDOWS 0x00004003L
+#define MCI_DGV_GETDEVCAPS_CAN_REVERSE 0x00004004L
+#define MCI_DGV_GETDEVCAPS_HAS_STILL 0x00004005L
+#define MCI_DGV_GETDEVCAPS_PALETTES 0x00004006L
+#define MCI_DGV_GETDEVCAPS_CAN_STR_IN 0x00004008L
+#define MCI_DGV_GETDEVCAPS_CAN_TEST 0x00004009L
+#define MCI_DGV_GETDEVCAPS_MAXIMUM_RATE 0x0000400aL
+#define MCI_DGV_GETDEVCAPS_MINIMUM_RATE 0x0000400bL
+
+/* flags for dwFlags parameter of MCI_CAPTURE command message */
+
+#define MCI_DGV_CAPTURE_AS 0x00010000L
+#define MCI_DGV_CAPTURE_AT 0x00020000L
+
+/* flags for dwFlags parameter of MCI_COPY command message */
+
+#define MCI_DGV_COPY_AT 0x00010000L
+#define MCI_DGV_COPY_AUDIO_STREAM 0x00020000L
+#define MCI_DGV_COPY_VIDEO_STREAM 0x00040000L
+
+/* flags for dwFlags parameter of MCI_CUE command message */
+
+#define MCI_DGV_CUE_INPUT 0x00010000L
+#define MCI_DGV_CUE_OUTPUT 0x00020000L
+#define MCI_DGV_CUE_NOSHOW 0x00040000L
+
+/* flags for dwFlags parameter of MCI_CUT command message */
+
+#define MCI_DGV_CUT_AT 0x00010000L
+#define MCI_DGV_CUT_AUDIO_STREAM 0x00020000L
+#define MCI_DGV_CUT_VIDEO_STREAM 0x00040000L
+
+/* flags for dwFlags parameter of MCI_DELETE command message */
+
+#define MCI_DGV_DELETE_AT 0x00010000L
+#define MCI_DGV_DELETE_AUDIO_STREAM 0x00020000L
+#define MCI_DGV_DELETE_VIDEO_STREAM 0x00040000L
+
+/* flags for dwFlags parameter of MCI_FREEZE command message */
+
+#define MCI_DGV_FREEZE_AT 0x00010000L
+#define MCI_DGV_FREEZE_OUTSIDE 0x00020000L
+
+/* flags for dwFlags parameter of MCI_INFO command message */
+
+#define MCI_DGV_INFO_TEXT 0x00010000L
+#define MCI_DGV_INFO_ITEM 0X00020000L
+
+/* values for dwItem field of MCI_DGV_INFO_PARMS structure */
+
+#define MCI_INFO_VERSION 0x00000400L
+
+#define MCI_DGV_INFO_USAGE 0x00004000L
+#define MCI_DGV_INFO_AUDIO_QUALITY 0x00004001L
+#define MCI_DGV_INFO_STILL_QUALITY 0x00004002L
+#define MCI_DGV_INFO_VIDEO_QUALITY 0x00004003L
+#define MCI_DGV_INFO_AUDIO_ALG 0x00004004L
+#define MCI_DGV_INFO_STILL_ALG 0x00004005L
+#define MCI_DGV_INFO_VIDEO_ALG 0x00004006L
+
+/* flags for dwFlags parameter of MCI_LIST command message */
+
+#define MCI_DGV_LIST_ITEM 0x00010000L
+#define MCI_DGV_LIST_COUNT 0x00020000L
+#define MCI_DGV_LIST_NUMBER 0x00040000L
+#define MCI_DGV_LIST_ALG 0x00080000L
+
+/* values for dwItem field of MCI_DGV_LIST_PARMS structure */
+
+#define MCI_DGV_LIST_AUDIO_ALG 0x00004000L
+#define MCI_DGV_LIST_AUDIO_QUALITY 0x00004001L
+#define MCI_DGV_LIST_AUDIO_STREAM 0x00004002L
+#define MCI_DGV_LIST_STILL_ALG 0x00004003L
+#define MCI_DGV_LIST_STILL_QUALITY 0x00004004L
+#define MCI_DGV_LIST_VIDEO_ALG 0x00004005L
+#define MCI_DGV_LIST_VIDEO_QUALITY 0x00004006L
+#define MCI_DGV_LIST_VIDEO_STREAM 0x00004007L
+#define MCI_DGV_LIST_VIDEO_SOURCE 0x00004008L
+
+
+/* flags for dwFlags parameter of MCI_MONITOR command message */
+
+#define MCI_DGV_MONITOR_METHOD 0x00010000L
+#define MCI_DGV_MONITOR_SOURCE 0x00020000L
+
+/* values for dwSource parameter of the MCI_DGV_MONITOR_PARMS struture */
+
+#define MCI_DGV_MONITOR_INPUT 0x00004000L
+#define MCI_DGV_MONITOR_FILE 0x00004001L
+
+/* flags for dwFlags parameter of MCI_OPEN command message */
+
+#define MCI_DGV_OPEN_WS 0x00010000L
+#define MCI_DGV_OPEN_PARENT 0x00020000L
+#define MCI_DGV_OPEN_NOSTATIC 0x00040000L
+#define MCI_DGV_OPEN_16BIT 0x00080000L
+#define MCI_DGV_OPEN_32BIT 0x00100000L
+
+/* flags for dwFlags parameter of MCI_PASTE command message */
+
+#define MCI_DGV_PASTE_AT 0x00010000L
+#define MCI_DGV_PASTE_AUDIO_STREAM 0x00020000L
+#define MCI_DGV_PASTE_VIDEO_STREAM 0x00040000L
+#define MCI_DGV_PASTE_INSERT 0x00080000L
+#define MCI_DGV_PASTE_OVERWRITE 0x00100000L
+
+/* flags for dwFlags parameter of MCI_PLAY command message */
+
+#define MCI_DGV_PLAY_REPEAT 0x00010000L
+#define MCI_DGV_PLAY_REVERSE 0x00020000L
+
+/* flags for dwFlags parameter of MCI_PUT command message */
+
+#define MCI_DGV_RECT 0x00010000L
+#define MCI_DGV_PUT_SOURCE 0x00020000L
+#define MCI_DGV_PUT_DESTINATION 0x00040000L
+#define MCI_DGV_PUT_FRAME 0x00080000L
+#define MCI_DGV_PUT_VIDEO 0x00100000L
+#define MCI_DGV_PUT_WINDOW 0x00200000L
+#define MCI_DGV_PUT_CLIENT 0x00400000L
+
+/* flags for dwFlags parameter of MCI_QUALITY command message */
+
+#define MCI_QUALITY_ITEM 0x00010000L
+#define MCI_QUALITY_NAME 0x00020000L
+#define MCI_QUALITY_ALG 0x00040000L
+#define MCI_QUALITY_DIALOG 0x00080000L
+#define MCI_QUALITY_HANDLE 0x00100000L
+
+/* values for dwItem field of MCI_QUALITY_PARMS structure */
+
+#define MCI_QUALITY_ITEM_AUDIO 0x00004000L
+#define MCI_QUALITY_ITEM_STILL 0x00004001L
+#define MCI_QUALITY_ITEM_VIDEO 0x00004002L
+
+/* flags for dwFlags parameter of MCI_REALIZE command message */
+
+#define MCI_DGV_REALIZE_NORM 0x00010000L
+#define MCI_DGV_REALIZE_BKGD 0x00020000L
+
+/* flags for dwFlags parameter of MCI_RECORD command message */
+
+#define MCI_DGV_RECORD_HOLD 0x00020000L
+#define MCI_DGV_RECORD_AUDIO_STREAM 0x00040000L
+#define MCI_DGV_RECORD_VIDEO_STREAM 0x00080000L
+
+/* flags for dwFlags parameters of MCI_RESERVE command message */
+
+#define MCI_DGV_RESERVE_IN 0x00010000L
+#define MCI_DGV_RESERVE_SIZE 0x00020000L
+
+/* flags for dwFlags parameter of MCI_RESTORE command message */
+
+#define MCI_DGV_RESTORE_FROM 0x00010000L
+#define MCI_DGV_RESTORE_AT 0x00020000L
+
+/* flags for dwFlags parameters of MCI_SAVE command message */
+
+#define MCI_DGV_SAVE_ABORT 0x00020000L
+#define MCI_DGV_SAVE_KEEPRESERVE 0x00040000L
+
+/* flags for dwFlags parameters of MCI_SET command message */
+
+#define MCI_DGV_SET_SEEK_EXACTLY 0x00010000L
+#define MCI_DGV_SET_SPEED 0x00020000L
+#define MCI_DGV_SET_STILL 0x00040000L
+#define MCI_DGV_SET_FILEFORMAT 0x00080000L
+
+/* flags for the dwFlags parameter of MCI_SETAUDIO command message */
+
+#define MCI_DGV_SETAUDIO_OVER 0x00010000L
+#define MCI_DGV_SETAUDIO_CLOCKTIME 0x00020000L
+#define MCI_DGV_SETAUDIO_ALG 0x00040000L
+#define MCI_DGV_SETAUDIO_QUALITY 0x00080000L
+#define MCI_DGV_SETAUDIO_RECORD 0x00100000L
+#define MCI_DGV_SETAUDIO_LEFT 0x00200000L
+#define MCI_DGV_SETAUDIO_RIGHT 0x00400000L
+#define MCI_DGV_SETAUDIO_ITEM 0x00800000L
+#define MCI_DGV_SETAUDIO_VALUE 0x01000000L
+#define MCI_DGV_SETAUDIO_INPUT 0x02000000L
+#define MCI_DGV_SETAUDIO_OUTPUT 0x04000000L
+
+/* values for the dwItem parameter of MCI_DGV_SETAUDIO_PARMS */
+
+#define MCI_DGV_SETAUDIO_TREBLE 0x00004000L
+#define MCI_DGV_SETAUDIO_BASS 0x00004001L
+#define MCI_DGV_SETAUDIO_VOLUME 0x00004002L
+#define MCI_DGV_SETAUDIO_STREAM 0x00004003L
+#define MCI_DGV_SETAUDIO_SOURCE 0x00004004L
+#define MCI_DGV_SETAUDIO_SAMPLESPERSEC 0x00004005L
+#define MCI_DGV_SETAUDIO_AVGBYTESPERSEC 0x00004006L
+#define MCI_DGV_SETAUDIO_BLOCKALIGN 0x00004007L
+#define MCI_DGV_SETAUDIO_BITSPERSAMPLE 0x00004008L
+
+/* values for the dwValue parameter of MCI_DGV_SETAUDIO_PARMS
+ used with MCI_DGV_SETAUDIO_SOURCE */
+
+#define MCI_DGV_SETAUDIO_SOURCE_STEREO 0x00000000L
+#define MCI_DGV_SETAUDIO_SOURCE_LEFT 0x00000001L
+#define MCI_DGV_SETAUDIO_SOURCE_RIGHT 0x00000002L
+#define MCI_DGV_SETAUDIO_SOURCE_AVERAGE 0x00004000L
+
+/* flags for the dwFlags parameter of MCI_SETVIDEO command */
+
+#define MCI_DGV_SETVIDEO_QUALITY 0x00010000L
+#define MCI_DGV_SETVIDEO_ALG 0x00020000L
+#define MCI_DGV_SETVIDEO_CLOCKTIME 0x00040000L
+#define MCI_DGV_SETVIDEO_SRC_NUMBER 0x00080000L
+#define MCI_DGV_SETVIDEO_ITEM 0x00100000L
+#define MCI_DGV_SETVIDEO_OVER 0x00200000L
+#define MCI_DGV_SETVIDEO_RECORD 0x00400000L
+#define MCI_DGV_SETVIDEO_STILL 0x00800000L
+#define MCI_DGV_SETVIDEO_VALUE 0x01000000L
+#define MCI_DGV_SETVIDEO_INPUT 0x02000000L
+#define MCI_DGV_SETVIDEO_OUTPUT 0x04000000L
+
+/* values for the dwTo field of MCI_SETVIDEO_PARMS
+ used with MCI_DGV_SETVIDEO_SOURCE */
+
+#define MCI_DGV_SETVIDEO_SRC_NTSC 0x00004000L
+#define MCI_DGV_SETVIDEO_SRC_RGB 0x00004001L
+#define MCI_DGV_SETVIDEO_SRC_SVIDEO 0x00004002L
+#define MCI_DGV_SETVIDEO_SRC_PAL 0x00004003L
+#define MCI_DGV_SETVIDEO_SRC_SECAM 0x00004004L
+#define MCI_DGV_SETVIDEO_SRC_GENERIC 0x00004005L
+
+/* values for the dwItem field of MCI_SETVIDEO_PARMS */
+
+#define MCI_DGV_SETVIDEO_BRIGHTNESS 0x00004000L
+#define MCI_DGV_SETVIDEO_COLOR 0x00004001L
+#define MCI_DGV_SETVIDEO_CONTRAST 0x00004002L
+#define MCI_DGV_SETVIDEO_TINT 0x00004003L
+#define MCI_DGV_SETVIDEO_SHARPNESS 0x00004004L
+#define MCI_DGV_SETVIDEO_GAMMA 0x00004005L
+#define MCI_DGV_SETVIDEO_STREAM 0x00004006L
+#define MCI_DGV_SETVIDEO_PALHANDLE 0x00004007L
+#define MCI_DGV_SETVIDEO_FRAME_RATE 0x00004008L
+#define MCI_DGV_SETVIDEO_SOURCE 0x00004009L
+#define MCI_DGV_SETVIDEO_KEY_INDEX 0x0000400aL
+#define MCI_DGV_SETVIDEO_KEY_COLOR 0x0000400bL
+#define MCI_DGV_SETVIDEO_BITSPERPEL 0x0000400cL
+
+/* flags for the dwFlags parameter of MCI_SIGNAL */
+
+#define MCI_DGV_SIGNAL_AT 0x00010000L
+#define MCI_DGV_SIGNAL_EVERY 0x00020000L
+#define MCI_DGV_SIGNAL_USERVAL 0x00040000L
+#define MCI_DGV_SIGNAL_CANCEL 0x00080000L
+#define MCI_DGV_SIGNAL_POSITION 0x00100000L
+
+/* The following is the function digitalvideo drivers must use
+ * to signal when a frame marked by the SIGNAL command has been rendered:
+ *
+ * SEND_DGVSIGNAL(dwFlags, dwCallback, hDriver, wDeviceID, dwUser, dwPos )
+ *
+ * The following is a description of the parameters:
+ *
+ * dwFlags - the dwFlags parameter passed when the signal was set
+ * dwCallback - the dwCallback value from the MCI_DGV_SIGNAL_PARMS struct
+ * used to set the signal
+ * hDriver - the handle assigned to the driver by MMSYSTEM when the
+ * device was opened
+ * wDeviceID - the device ID
+ * dwUser - the dwUserParm value from the MCI_DGV_SIGNAL_PARMS struct
+ * used to set the signal
+ * dwPos - the position at which the signal was sent, in the current
+ * time format.
+ *
+ * The window indicated by the handle in the dwCallback field is notified
+ * by means of a Windows message with the following form:
+ *
+ * msg = MM_MCISIGNAL
+ * wParam = wDeviceID of the sending driver
+ * lParam = the uservalue specified or the position the signal was sent
+ * at; the latter if the MCI_DGV_SIGNAL_POSITION flag was set
+ * in the dwFlags parameter when the signal was created.
+ */
+
+#define SEND_DGVSIGNAL(dwFlags, dwCallback, hDriver, wDeviceID, dwUser, dwPos ) \
+ DriverCallback( (dwCallback), DCB_WINDOW, (HANDLE)(wDeviceID), MM_MCISIGNAL,\
+ hDriver, ((dwFlags) & MCI_DGV_SIGNAL_POSITION) ? (dwPos):(dwUser),\
+ ((dwFlags) & MCI_DGV_SIGNAL_POSITION) ? (dwUser):(dwPos))
+
+/* flags for the dwFlags parameter of MCI_STATUS command */
+
+#define MCI_DGV_STATUS_NOMINAL 0x00020000L
+#define MCI_DGV_STATUS_REFERENCE 0x00040000L
+#define MCI_DGV_STATUS_LEFT 0x00080000L
+#define MCI_DGV_STATUS_RIGHT 0x00100000L
+#define MCI_DGV_STATUS_DISKSPACE 0x00200000L
+#define MCI_DGV_STATUS_INPUT 0x00400000L
+#define MCI_DGV_STATUS_OUTPUT 0x00800000L
+#define MCI_DGV_STATUS_RECORD 0x01000000L
+
+/* values for dwItem field of MCI_STATUS_PARMS structure */
+
+#define MCI_DGV_STATUS_AUDIO_INPUT 0x00004000L
+#define MCI_DGV_STATUS_HWND 0x00004001L
+#define MCI_DGV_STATUS_SPEED 0x00004003L
+#define MCI_DGV_STATUS_HPAL 0x00004004L
+#define MCI_DGV_STATUS_BRIGHTNESS 0x00004005L
+#define MCI_DGV_STATUS_COLOR 0x00004006L
+#define MCI_DGV_STATUS_CONTRAST 0x00004007L
+#define MCI_DGV_STATUS_FILEFORMAT 0x00004008L
+#define MCI_DGV_STATUS_AUDIO_SOURCE 0x00004009L
+#define MCI_DGV_STATUS_GAMMA 0x0000400aL
+#define MCI_DGV_STATUS_MONITOR 0x0000400bL
+#define MCI_DGV_STATUS_MONITOR_METHOD 0x0000400cL
+#define MCI_DGV_STATUS_FRAME_RATE 0x0000400eL
+#define MCI_DGV_STATUS_BASS 0x0000400fL
+#define MCI_DGV_STATUS_SIZE 0x00004010L
+#define MCI_DGV_STATUS_SEEK_EXACTLY 0x00004011L
+#define MCI_DGV_STATUS_SHARPNESS 0x00004012L
+#define MCI_DGV_STATUS_SMPTE 0x00004013L
+#define MCI_DGV_STATUS_AUDIO 0x00004014L
+#define MCI_DGV_STATUS_TINT 0x00004015L
+#define MCI_DGV_STATUS_TREBLE 0x00004016L
+#define MCI_DGV_STATUS_UNSAVED 0x00004017L
+#define MCI_DGV_STATUS_VIDEO 0x00004018L
+#define MCI_DGV_STATUS_VOLUME 0x00004019L
+#define MCI_DGV_STATUS_AUDIO_RECORD 0x0000401aL
+#define MCI_DGV_STATUS_VIDEO_SOURCE 0x0000401bL
+#define MCI_DGV_STATUS_VIDEO_RECORD 0x0000401cL
+#define MCI_DGV_STATUS_STILL_FILEFORMAT 0x0000401dL
+#define MCI_DGV_STATUS_VIDEO_SRC_NUM 0x0000401eL
+#define MCI_DGV_STATUS_FILE_MODE 0x0000401fL
+#define MCI_DGV_STATUS_FILE_COMPLETION 0x00004020L
+#define MCI_DGV_STATUS_WINDOW_VISIBLE 0x00004021L
+#define MCI_DGV_STATUS_WINDOW_MINIMIZED 0x00004022L
+#define MCI_DGV_STATUS_WINDOW_MAXIMIZED 0x00004023L
+#define MCI_DGV_STATUS_KEY_INDEX 0x00004024L
+#define MCI_DGV_STATUS_KEY_COLOR 0x00004025L
+#define MCI_DGV_STATUS_PAUSE_MODE 0x00004026L
+#define MCI_DGV_STATUS_SAMPLESPERSEC 0x00004027L
+#define MCI_DGV_STATUS_AVGBYTESPERSEC 0x00004028L
+#define MCI_DGV_STATUS_BLOCKALIGN 0x00004029L
+#define MCI_DGV_STATUS_BITSPERSAMPLE 0x0000402aL
+#define MCI_DGV_STATUS_BITSPERPEL 0x0000402bL
+#define MCI_DGV_STATUS_FORWARD 0x0000402cL
+#define MCI_DGV_STATUS_AUDIO_STREAM 0x0000402dL
+#define MCI_DGV_STATUS_VIDEO_STREAM 0x0000402eL
+
+/* flags for dwFlags parameter of MCI_STEP command message */
+
+#define MCI_DGV_STEP_REVERSE 0x00010000L
+#define MCI_DGV_STEP_FRAMES 0x00020000L
+
+/* flags for dwFlags parameter of MCI_STOP command message */
+
+#define MCI_DGV_STOP_HOLD 0x00010000L
+
+/* flags for dwFlags parameter of MCI_UPDATE command message */
+
+#define MCI_DGV_UPDATE_HDC 0x00020000L
+#define MCI_DGV_UPDATE_PAINT 0x00040000L
+
+/* flags for dwFlags parameter of MCI_WHERE command message */
+
+#define MCI_DGV_WHERE_SOURCE 0x00020000L
+#define MCI_DGV_WHERE_DESTINATION 0x00040000L
+#define MCI_DGV_WHERE_FRAME 0x00080000L
+#define MCI_DGV_WHERE_VIDEO 0x00100000L
+#define MCI_DGV_WHERE_WINDOW 0x00200000L
+#define MCI_DGV_WHERE_MAX 0x00400000L
+
+/* flags for dwFlags parameter of MCI_WINDOW command message */
+
+#define MCI_DGV_WINDOW_HWND 0x00010000L
+#define MCI_DGV_WINDOW_STATE 0x00040000L
+#define MCI_DGV_WINDOW_TEXT 0x00080000L
+
+/* flags for hWnd parameter of MCI_DGV_WINDOW_PARMS parameter block */
+
+#define MCI_DGV_WINDOW_DEFAULT 0x00000000L
+
+/* parameter block for MCI_WHERE, MCI_PUT, MCI_FREEZE, MCI_UNFREEZE cmds */
+
+typedef struct {
+ DWORD dwCallback;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+} MCI_DGV_RECT_PARMS;
+typedef MCI_DGV_RECT_PARMS FAR * LPMCI_DGV_RECT_PARMS;
+
+/* parameter block for MCI_CAPTURE command message */
+
+typedef struct {
+ DWORD dwCallback;
+ LPSTR lpstrFileName;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+} MCI_DGV_CAPTURE_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ LPWSTR lpstrFileName;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+} MCI_DGV_CAPTURE_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_CAPTURE_PARMSW MCI_DGV_CAPTURE_PARMS;
+#else
+typedef MCI_DGV_CAPTURE_PARMSA MCI_DGV_CAPTURE_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_CAPTURE_PARMSA FAR * LPMCI_DGV_CAPTURE_PARMSA;
+typedef MCI_DGV_CAPTURE_PARMSW FAR * LPMCI_DGV_CAPTURE_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_CAPTURE_PARMSW LPMCI_DGV_CAPTURE_PARMS;
+#else
+typedef LPMCI_DGV_CAPTURE_PARMSA LPMCI_DGV_CAPTURE_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_CLOSE command message */
+
+typedef MCI_GENERIC_PARMS MCI_CLOSE_PARMS;
+typedef MCI_CLOSE_PARMS FAR * LPMCI_CLOSE_PARMS;
+
+/* parameter block for MCI_COPY command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+ DWORD dwAudioStream;
+ DWORD dwVideoStream;
+} MCI_DGV_COPY_PARMS;
+typedef MCI_DGV_COPY_PARMS FAR * LPMCI_DGV_COPY_PARMS;
+
+/* parameter block for MCI_CUE command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwTo;
+} MCI_DGV_CUE_PARMS;
+typedef MCI_DGV_CUE_PARMS FAR * LPMCI_DGV_CUE_PARMS;
+
+/* parameter block for MCI_CUT command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+ DWORD dwAudioStream;
+ DWORD dwVideoStream;
+} MCI_DGV_CUT_PARMS;
+typedef MCI_DGV_CUT_PARMS FAR * LPMCI_DGV_CUT_PARMS;
+
+/* parameter block for MCI_DELETE command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+ DWORD dwAudioStream;
+ DWORD dwVideoStream;
+} MCI_DGV_DELETE_PARMS;
+typedef MCI_DGV_DELETE_PARMS FAR * LPMCI_DGV_DELETE_PARMS;
+
+/* parameter block for MCI_FREEZE command message */
+
+typedef MCI_DGV_RECT_PARMS MCI_DGV_FREEZE_PARMS;
+typedef MCI_DGV_FREEZE_PARMS FAR * LPMCI_DGV_FREEZE_PARMS;
+
+/* parameter block for MCI_INFO command message */
+
+typedef struct {
+ DWORD dwCallback;
+ LPSTR lpstrReturn;
+ DWORD dwRetSize;
+ DWORD dwItem;
+} MCI_DGV_INFO_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ LPWSTR lpstrReturn;
+ DWORD dwRetSize;
+ DWORD dwItem;
+} MCI_DGV_INFO_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_INFO_PARMSW MCI_DGV_INFO_PARMS;
+#else
+typedef MCI_DGV_INFO_PARMSA MCI_DGV_INFO_PARMS;
+#endif // UNICODE
+//? already typedef'd? //typedef MCI_INFO_PARMS FAR * LPMCI_INFO_PARMS;
+typedef MCI_DGV_INFO_PARMSA FAR * LPMCI_DGV_INFO_PARMSA;
+typedef MCI_DGV_INFO_PARMSW FAR * LPMCI_DGV_INFO_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_INFO_PARMSW LPMCI_DGV_INFO_PARMS;
+#else
+typedef LPMCI_DGV_INFO_PARMSA LPMCI_DGV_INFO_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_LIST command message */
+
+typedef struct {
+ DWORD dwCallback;
+ LPSTR lpstrReturn;
+ DWORD dwLength;
+ DWORD dwNumber;
+ DWORD dwItem;
+ LPSTR lpstrAlgorithm;
+} MCI_DGV_LIST_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ LPWSTR lpstrReturn;
+ DWORD dwLength;
+ DWORD dwNumber;
+ DWORD dwItem;
+ LPWSTR lpstrAlgorithm;
+} MCI_DGV_LIST_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_LIST_PARMSW MCI_DGV_LIST_PARMS;
+#else
+typedef MCI_DGV_LIST_PARMSA MCI_DGV_LIST_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_LIST_PARMSA FAR * LPMCI_DGV_LIST_PARMSA;
+typedef MCI_DGV_LIST_PARMSW FAR * LPMCI_DGV_LIST_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_LIST_PARMSW LPMCI_DGV_LIST_PARMS;
+#else
+typedef LPMCI_DGV_LIST_PARMSA LPMCI_DGV_LIST_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_LOAD command message */
+
+typedef MCI_LOAD_PARMS MCI_DGV_LOAD_PARMS;
+typedef MCI_DGV_LOAD_PARMS FAR * LPMCI_DGV_LOAD_PARMS;
+
+/* parameter block for MCI_MONITOR command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwSource;
+ DWORD dwMethod;
+} MCI_DGV_MONITOR_PARMS;
+typedef MCI_DGV_MONITOR_PARMS FAR * LPMCI_DGV_MONITOR_PARMS;
+
+/* parameter block for MCI_OPEN command message */
+
+typedef struct {
+ DWORD dwCallback;
+ UINT wDeviceID;
+#ifndef _WIN32
+ WORD wReserved0;
+#endif
+ LPSTR lpstrDeviceType;
+ LPSTR lpstrElementName;
+ LPSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+#ifndef _WIN32
+ WORD wReserved1;
+#endif
+} MCI_DGV_OPEN_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ UINT wDeviceID;
+#ifndef _WIN32
+ WORD wReserved0;
+#endif
+ LPWSTR lpstrDeviceType;
+ LPWSTR lpstrElementName;
+ LPWSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+#ifndef _WIN32
+ WORD wReserved1;
+#endif
+} MCI_DGV_OPEN_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_OPEN_PARMSW MCI_DGV_OPEN_PARMS;
+#else
+typedef MCI_DGV_OPEN_PARMSA MCI_DGV_OPEN_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_OPEN_PARMSA FAR * LPMCI_DGV_OPEN_PARMSA;
+typedef MCI_DGV_OPEN_PARMSW FAR * LPMCI_DGV_OPEN_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_OPEN_PARMSW LPMCI_DGV_OPEN_PARMS;
+#else
+typedef LPMCI_DGV_OPEN_PARMSA LPMCI_DGV_OPEN_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_PAUSE command message */
+
+typedef MCI_GENERIC_PARMS MCI_DGV_PAUSE_PARMS;
+typedef MCI_DGV_PAUSE_PARMS FAR * LPMCI_DGV_PAUSE_PARMS;
+
+/* parameter block for MCI_PASTE command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwTo;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+ DWORD dwAudioStream;
+ DWORD dwVideoStream;
+} MCI_DGV_PASTE_PARMS;
+typedef MCI_DGV_PASTE_PARMS FAR * LPMCI_DGV_PASTE_PARMS;
+
+/* parameter block for MCI_PLAY command message */
+
+typedef MCI_PLAY_PARMS MCI_DGV_PLAY_PARMS;
+typedef MCI_DGV_PLAY_PARMS FAR * LPMCI_DGV_PLAY_PARMS;
+
+/* parameter block for MCI_PUT command message */
+
+typedef MCI_DGV_RECT_PARMS MCI_DGV_PUT_PARMS;
+typedef MCI_DGV_PUT_PARMS FAR * LPMCI_DGV_PUT_PARMS;
+
+/* parameter block for MCI_QUALITY command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwItem;
+ LPSTR lpstrName;
+ DWORD lpstrAlgorithm;
+ DWORD dwHandle;
+} MCI_DGV_QUALITY_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwItem;
+ LPWSTR lpstrName;
+ DWORD lpstrAlgorithm;
+ DWORD dwHandle;
+} MCI_DGV_QUALITY_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_QUALITY_PARMSW MCI_DGV_QUALITY_PARMS;
+#else
+typedef MCI_DGV_QUALITY_PARMSA MCI_DGV_QUALITY_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_QUALITY_PARMSA FAR * LPMCI_DGV_QUALITY_PARMSA;
+typedef MCI_DGV_QUALITY_PARMSW FAR * LPMCI_DGV_QUALITY_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_QUALITY_PARMSW LPMCI_DGV_QUALITY_PARMS;
+#else
+typedef LPMCI_DGV_QUALITY_PARMSA LPMCI_DGV_QUALITY_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_REALIZE command message */
+
+typedef MCI_GENERIC_PARMS MCI_REALIZE_PARMS;
+typedef MCI_REALIZE_PARMS FAR * LPMCI_REALIZE_PARMS;
+
+/* parameter block for MCI_RECORD command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+ DWORD dwAudioStream;
+ DWORD dwVideoStream;
+} MCI_DGV_RECORD_PARMS;
+typedef MCI_DGV_RECORD_PARMS FAR * LPMCI_DGV_RECORD_PARMS;
+
+/* parameter block for MCI_RESERVE command message */
+
+typedef struct {
+ DWORD dwCallback;
+ LPSTR lpstrPath;
+ DWORD dwSize;
+} MCI_DGV_RESERVE_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ LPWSTR lpstrPath;
+ DWORD dwSize;
+} MCI_DGV_RESERVE_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_RESERVE_PARMSW MCI_DGV_RESERVE_PARMS;
+#else
+typedef MCI_DGV_RESERVE_PARMSA MCI_DGV_RESERVE_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_RESERVE_PARMSA FAR * LPMCI_DGV_RESERVE_PARMSA;
+typedef MCI_DGV_RESERVE_PARMSW FAR * LPMCI_DGV_RESERVE_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_RESERVE_PARMSW LPMCI_DGV_RESERVE_PARMS;
+#else
+typedef LPMCI_DGV_RESERVE_PARMSA LPMCI_DGV_RESERVE_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_RESTORE command message */
+
+typedef struct {
+ DWORD dwCallback;
+ LPSTR lpstrFileName;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+} MCI_DGV_RESTORE_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ LPWSTR lpstrFileName;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+} MCI_DGV_RESTORE_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_RESTORE_PARMSW MCI_DGV_RESTORE_PARMS;
+#else
+typedef MCI_DGV_RESTORE_PARMSA MCI_DGV_RESTORE_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_RESTORE_PARMSA FAR * LPMCI_DGV_RESTORE_PARMSA;
+typedef MCI_DGV_RESTORE_PARMSW FAR * LPMCI_DGV_RESTORE_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_RESTORE_PARMSW LPMCI_DGV_RESTORE_PARMS;
+#else
+typedef LPMCI_DGV_RESTORE_PARMSA LPMCI_DGV_RESTORE_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_RESUME command message */
+
+typedef MCI_GENERIC_PARMS MCI_DGV_RESUME_PARMS;
+typedef MCI_DGV_RESUME_PARMS FAR * LPMCI_DGV_RESUME_PARMS;
+
+/* parameter block for MCI_SAVE command message */
+
+typedef struct {
+ DWORD dwCallback;
+ LPSTR lpstrFileName;
+ RECT rc;
+} MCI_DGV_SAVE_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ LPWSTR lpstrFileName;
+ RECT rc;
+} MCI_DGV_SAVE_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_SAVE_PARMSW MCI_DGV_SAVE_PARMS;
+#else
+typedef MCI_DGV_SAVE_PARMSA MCI_DGV_SAVE_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_SAVE_PARMSA FAR * LPMCI_DGV_SAVE_PARMSA;
+typedef MCI_DGV_SAVE_PARMSW FAR * LPMCI_DGV_SAVE_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_SAVE_PARMSW LPMCI_DGV_SAVE_PARMS;
+#else
+typedef LPMCI_DGV_SAVE_PARMSA LPMCI_DGV_SAVE_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_SET command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwTimeFormat;
+ DWORD dwAudio;
+ DWORD dwFileFormat;
+ DWORD dwSpeed;
+} MCI_DGV_SET_PARMS;
+typedef MCI_DGV_SET_PARMS FAR * LPMCI_DGV_SET_PARMS;
+
+/* parameter block for MCI_SETAUDIO command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwItem;
+ DWORD dwValue;
+ DWORD dwOver;
+ LPSTR lpstrAlgorithm;
+ LPSTR lpstrQuality;
+} MCI_DGV_SETAUDIO_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwItem;
+ DWORD dwValue;
+ DWORD dwOver;
+ LPWSTR lpstrAlgorithm;
+ LPWSTR lpstrQuality;
+} MCI_DGV_SETAUDIO_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_SETAUDIO_PARMSW MCI_DGV_SETAUDIO_PARMS;
+#else
+typedef MCI_DGV_SETAUDIO_PARMSA MCI_DGV_SETAUDIO_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_SETAUDIO_PARMSA FAR * LPMCI_DGV_SETAUDIO_PARMSA;
+typedef MCI_DGV_SETAUDIO_PARMSW FAR * LPMCI_DGV_SETAUDIO_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_SETAUDIO_PARMSW LPMCI_DGV_SETAUDIO_PARMS;
+#else
+typedef LPMCI_DGV_SETAUDIO_PARMSA LPMCI_DGV_SETAUDIO_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_SIGNAL command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwPosition;
+ DWORD dwPeriod;
+ DWORD dwUserParm;
+} MCI_DGV_SIGNAL_PARMS;
+typedef MCI_DGV_SIGNAL_PARMS FAR * LPMCI_DGV_SIGNAL_PARMS;
+
+/* parameter block for MCI_SETVIDEO command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwItem;
+ DWORD dwValue;
+ DWORD dwOver;
+ LPSTR lpstrAlgorithm;
+ LPSTR lpstrQuality;
+ DWORD dwSourceNumber;
+} MCI_DGV_SETVIDEO_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwItem;
+ DWORD dwValue;
+ DWORD dwOver;
+ LPWSTR lpstrAlgorithm;
+ LPWSTR lpstrQuality;
+ DWORD dwSourceNumber;
+} MCI_DGV_SETVIDEO_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_SETVIDEO_PARMSW MCI_DGV_SETVIDEO_PARMS;
+#else
+typedef MCI_DGV_SETVIDEO_PARMSA MCI_DGV_SETVIDEO_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_SETVIDEO_PARMSA FAR * LPMCI_DGV_SETVIDEO_PARMSA;
+typedef MCI_DGV_SETVIDEO_PARMSW FAR * LPMCI_DGV_SETVIDEO_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_SETVIDEO_PARMSW LPMCI_DGV_SETVIDEO_PARMS;
+#else
+typedef LPMCI_DGV_SETVIDEO_PARMSA LPMCI_DGV_SETVIDEO_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_STATUS command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwReturn;
+ DWORD dwItem;
+ DWORD dwTrack;
+ LPSTR lpstrDrive;
+ DWORD dwReference;
+} MCI_DGV_STATUS_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwReturn;
+ DWORD dwItem;
+ DWORD dwTrack;
+ LPWSTR lpstrDrive;
+ DWORD dwReference;
+} MCI_DGV_STATUS_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_STATUS_PARMSW MCI_DGV_STATUS_PARMS;
+#else
+typedef MCI_DGV_STATUS_PARMSA MCI_DGV_STATUS_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_STATUS_PARMSA FAR * LPMCI_DGV_STATUS_PARMSA;
+typedef MCI_DGV_STATUS_PARMSW FAR * LPMCI_DGV_STATUS_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_STATUS_PARMSW LPMCI_DGV_STATUS_PARMS;
+#else
+typedef LPMCI_DGV_STATUS_PARMSA LPMCI_DGV_STATUS_PARMS;
+#endif // UNICODE
+
+/* parameter block for MCI_STEP command message */
+
+typedef struct {
+ DWORD dwCallback;
+ DWORD dwFrames;
+} MCI_DGV_STEP_PARMS;
+typedef MCI_DGV_STEP_PARMS FAR *LPMCI_DGV_STEP_PARMS;
+
+/* parameter block for MCI_STOP command message */
+
+typedef MCI_GENERIC_PARMS MCI_DGV_STOP_PARMS;
+typedef MCI_DGV_STOP_PARMS FAR * LPMCI_DGV_STOP_PARMS;
+
+/* parameter block for MCI_UNFREEZE command message */
+
+typedef MCI_DGV_RECT_PARMS MCI_DGV_UNFREEZE_PARMS;
+typedef MCI_DGV_UNFREEZE_PARMS FAR * LPMCI_DGV_UNFREEZE_PARMS;
+
+/* parameter block for MCI_UPDATE command message */
+
+typedef struct {
+ DWORD dwCallback;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+ HDC hDC;
+
+#ifndef _WIN32
+ WORD wReserved0;
+#endif
+} MCI_DGV_UPDATE_PARMS;
+typedef MCI_DGV_UPDATE_PARMS FAR * LPMCI_DGV_UPDATE_PARMS;
+
+/* parameter block for MCI_WHERE command message */
+
+typedef MCI_DGV_RECT_PARMS MCI_DGV_WHERE_PARMS;
+typedef MCI_DGV_WHERE_PARMS FAR * LPMCI_DGV_WHERE_PARMS;
+
+/* parameter block for MCI_WINDOW command message */
+
+typedef struct {
+ DWORD dwCallback;
+ HWND hWnd;
+#ifndef _WIN32
+ WORD wReserved1;
+#endif
+ UINT nCmdShow;
+#ifndef _WIN32
+ WORD wReserved2;
+#endif
+ LPSTR lpstrText;
+} MCI_DGV_WINDOW_PARMSA;
+typedef struct {
+ DWORD dwCallback;
+ HWND hWnd;
+#ifndef _WIN32
+ WORD wReserved1;
+#endif
+ UINT nCmdShow;
+#ifndef _WIN32
+ WORD wReserved2;
+#endif
+ LPWSTR lpstrText;
+} MCI_DGV_WINDOW_PARMSW;
+#ifdef UNICODE
+typedef MCI_DGV_WINDOW_PARMSW MCI_DGV_WINDOW_PARMS;
+#else
+typedef MCI_DGV_WINDOW_PARMSA MCI_DGV_WINDOW_PARMS;
+#endif // UNICODE
+typedef MCI_DGV_WINDOW_PARMSA FAR * LPMCI_DGV_WINDOW_PARMSA;
+typedef MCI_DGV_WINDOW_PARMSW FAR * LPMCI_DGV_WINDOW_PARMSW;
+#ifdef UNICODE
+typedef LPMCI_DGV_WINDOW_PARMSW LPMCI_DGV_WINDOW_PARMS;
+#else
+typedef LPMCI_DGV_WINDOW_PARMSA LPMCI_DGV_WINDOW_PARMS;
+#endif // UNICODE
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* !_INC_DIGITALV */
diff --git a/public/sdk/inc/disasm.h b/public/sdk/inc/disasm.h
new file mode 100644
index 000000000..c13e7f8cb
--- /dev/null
+++ b/public/sdk/inc/disasm.h
@@ -0,0 +1,50 @@
+/***********************************************************************
+* Microsoft Lego
+*
+* Microsoft Confidential. Copyright 1994 Microsoft Corporation.
+*
+* Component:
+*
+* File: dis.h
+*
+* File Comments:
+*
+*
+***********************************************************************/
+
+#include <stddef.h>
+
+// ------------------------------------------------------------
+// Architecture types
+// ------------------------------------------------------------
+
+enum ARCHT
+{
+ archtX8616, // Intel x86 (16 bit mode)
+ archtX86, // Intel x86 (32 bit mode)
+ archtMips, // MIPS R4x00
+ archtAlphaAxp, // DEC Alpha AXP
+ archtPowerPc, // Motorola PowerPC
+ archtPowerMac, // Motorola PowerPC in big endian mode
+ archtPaRisc, // HP PA-RISC
+};
+
+struct DIS;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef size_t (*PFNCCHADDR)(struct DIS *, ULONG, char *, size_t, DWORD *);
+typedef size_t (*PFNCCHFIXUP)(struct DIS *, ULONG, size_t, char *, size_t, DWORD *);
+
+struct DIS *DisNew(enum ARCHT);
+
+size_t Disassemble(struct DIS *pdis, ULONG addr, const BYTE *pb, size_t cbMax, char *pad, char *buf, size_t cbBuf);
+void SetSymbolCallback(struct DIS *pdis,PFNCCHADDR,PFNCCHFIXUP);
+
+void FreePdis(struct DIS *);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/public/sdk/inc/dispatch.h b/public/sdk/inc/dispatch.h
new file mode 100644
index 000000000..989639b94
--- /dev/null
+++ b/public/sdk/inc/dispatch.h
@@ -0,0 +1,15 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: dispatch.h
+//
+//----------------------------------------------------------------------------
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: your code should #include oleauto.h instead of dispatch.h")
+#endif /* !RC_INVOKED */
+
+#include <oleauto.h>
+
diff --git a/public/sdk/inc/dlcapi.h b/public/sdk/inc/dlcapi.h
new file mode 100644
index 000000000..f43fc1553
--- /dev/null
+++ b/public/sdk/inc/dlcapi.h
@@ -0,0 +1,908 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ dlcapi.h
+
+Abstract:
+
+ This module defines 32-bit Windows/NT DLC structures and manifests
+
+Revision History:
+
+--*/
+
+#ifndef _DLCAPI_
+#define _DLCAPI_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// DLC Command Codes
+//
+
+#define LLC_DIR_INTERRUPT 0x00
+#define LLC_DIR_OPEN_ADAPTER 0x03
+#define LLC_DIR_CLOSE_ADAPTER 0x04
+#define LLC_DIR_SET_MULTICAST_ADDRESS 0x05
+#define LLC_DIR_SET_GROUP_ADDRESS 0x06
+#define LLC_DIR_SET_FUNCTIONAL_ADDRESS 0x07
+#define LLC_DIR_READ_LOG 0x08
+#define LLC_TRANSMIT_FRAMES 0x09
+#define LLC_TRANSMIT_DIR_FRAME 0x0A
+#define LLC_TRANSMIT_I_FRAME 0x0B
+#define LLC_TRANSMIT_UI_FRAME 0x0D
+#define LLC_TRANSMIT_XID_CMD 0x0E
+#define LLC_TRANSMIT_XID_RESP_FINAL 0x0F
+#define LLC_TRANSMIT_XID_RESP_NOT_FINAL 0x10
+#define LLC_TRANSMIT_TEST_CMD 0x11
+#define LLC_DLC_RESET 0x14
+#define LLC_DLC_OPEN_SAP 0x15
+#define LLC_DLC_CLOSE_SAP 0x16
+#define LLC_DLC_REALLOCATE_STATIONS 0x17
+#define LLC_DLC_OPEN_STATION 0x19
+#define LLC_DLC_CLOSE_STATION 0x1A
+#define LLC_DLC_CONNECT_STATION 0x1B
+#define LLC_DLC_MODIFY 0x1C
+#define LLC_DLC_FLOW_CONTROL 0x1D
+#define LLC_DLC_STATISTICS 0x1E
+#define LLC_DIR_INITIALIZE 0x20
+#define LLC_DIR_STATUS 0x21
+#define LLC_DIR_TIMER_SET 0x22
+#define LLC_DIR_TIMER_CANCEL 0x23
+#define LLC_BUFFER_GET 0x26
+#define LLC_BUFFER_FREE 0x27
+#define LLC_RECEIVE 0x28
+#define LLC_RECEIVE_CANCEL 0x29
+#define LLC_RECEIVE_MODIFY 0x2A
+#define LLC_DIR_TIMER_CANCEL_GROUP 0x2C
+#define LLC_DIR_SET_EXCEPTION_FLAGS 0x2D
+#define LLC_BUFFER_CREATE 0x30
+#define LLC_READ 0x31
+#define LLC_READ_CANCEL 0x32
+#define LLC_DLC_SET_THRESHOLD 0x33
+#define LLC_DIR_CLOSE_DIRECT 0x34
+#define LLC_DIR_OPEN_DIRECT 0x35
+#define LLC_MAX_DLC_COMMAND 0x37
+
+//
+// forward definitions
+//
+
+union _LLC_PARMS;
+typedef union _LLC_PARMS LLC_PARMS, *PLLC_PARMS;
+
+//
+// Parameters. Can be pointer to a parameter table (32-bit flat address),
+// a single 32-bit ULONG, 2 16-bit USHORTs or 4 8-bit BYTEs
+//
+
+typedef union {
+
+ PLLC_PARMS pParameterTable; // pointer to the parameter table
+
+ struct {
+ USHORT usStationId; // Station id
+ USHORT usParameter; // optional parameter
+ } dlc;
+
+ struct {
+ USHORT usParameter0; // first optional parameter
+ USHORT usParameter1; // second optional parameter
+ } dir;
+
+ UCHAR auchBuffer[4]; // group/functional address
+
+ ULONG ulParameter;
+
+} CCB_PARMS;
+
+//
+// LLC_CCB - the Command Control Block structure
+//
+
+typedef struct _LLC_CCB {
+ UCHAR uchAdapterNumber; // Adapter 0 or 1
+ UCHAR uchDlcCommand; // DLC command
+ UCHAR uchDlcStatus; // DLC command completion code
+ UCHAR uchReserved1; // reserved for DLC DLL
+ struct _LLC_CCB* pNext; // CCB chain
+ ULONG ulCompletionFlag; // used in command completion
+ CCB_PARMS u; // parameters
+ HANDLE hCompletionEvent; // event for command completion
+ UCHAR uchReserved2; // reserved for DLC DLL
+ UCHAR uchReadFlag; // set when special READ CCB chained
+ USHORT usReserved3; // reserved for DLC DLL
+} LLC_CCB, *PLLC_CCB;
+
+//
+// transmit/receive buffers
+//
+
+union _LLC_BUFFER;
+typedef union _LLC_BUFFER LLC_BUFFER, *PLLC_BUFFER;
+
+typedef struct {
+ PLLC_BUFFER pNextBuffer; // next DLC buffer in frame
+ USHORT cbFrame; // length of the whole received frame
+ USHORT cbBuffer; // length of this segment
+ USHORT offUserData; // offset of data from descriptor header
+ USHORT cbUserData; // length of the data
+} LLC_NEXT_BUFFER;
+
+typedef struct {
+ PLLC_BUFFER pNextBuffer; // next buffer of frame
+ USHORT cbFrame; // length of entire frame
+ USHORT cbBuffer; // length of this buffer
+ USHORT offUserData; // user data in this struct
+ USHORT cbUserData; // length of user data
+ USHORT usStationId; // ssnn station id
+ UCHAR uchOptions; // option byte from RECEIVE param tbl
+ UCHAR uchMsgType; // the message type
+ USHORT cBuffersLeft; // number of basic buffer units left
+ UCHAR uchRcvFS; // the reveived frame status
+ UCHAR uchAdapterNumber; // adapter number
+ PLLC_BUFFER pNextFrame; // pointer to next frame
+ UCHAR cbLanHeader; // length of the lan header
+ UCHAR cbDlcHeader; // length of the DLC header
+ UCHAR auchLanHeader[32]; // lan header of the received frame
+ UCHAR auchDlcHeader[4]; // dlc header of the received frame
+ USHORT usPadding; // data begins from offset 64 !!!
+} LLC_NOT_CONTIGUOUS_BUFFER;
+
+typedef struct {
+ PLLC_BUFFER pNextBuffer; // next buffer of frame
+ USHORT cbFrame; // length of entire frame
+ USHORT cbBuffer; // length of this buffer
+ USHORT offUserData; // user data in this struct
+ USHORT cbUserData; // length of user data
+ USHORT usStationId; // ssnn station id
+ UCHAR uchOptions; // option byte from RECEIVE param tbl
+ UCHAR uchMsgType; // the message type
+ USHORT cBuffersLeft; // number of basic buffer units left
+ UCHAR uchRcvFS; // the reveived frame status
+ UCHAR uchAdapterNumber; // adapter number
+ PLLC_BUFFER pNextFrame; // pointer to next frame
+} LLC_CONTIGUOUS_BUFFER;
+
+//
+// Received frames are returned in these data structures
+//
+
+union _LLC_BUFFER {
+
+ PLLC_BUFFER pNext;
+
+ LLC_NEXT_BUFFER Next;
+
+ struct LlcNextBuffer {
+ LLC_NEXT_BUFFER Header;
+ UCHAR auchData[];
+ } Buffer;
+
+ LLC_NOT_CONTIGUOUS_BUFFER NotContiguous;
+
+ struct {
+ LLC_NOT_CONTIGUOUS_BUFFER Header;
+ UCHAR auchData[];
+ } NotCont;
+
+ LLC_CONTIGUOUS_BUFFER Contiguous;
+
+ struct {
+ LLC_CONTIGUOUS_BUFFER Header;
+ UCHAR auchData[];
+ } Cont;
+
+};
+
+//
+// This structure is used by BUFFER.GET, BUFFER.FREE and TRANSMIT
+//
+
+struct _LLC_XMIT_BUFFER;
+typedef struct _LLC_XMIT_BUFFER LLC_XMIT_BUFFER, *PLLC_XMIT_BUFFER;
+
+struct _LLC_XMIT_BUFFER {
+ PLLC_XMIT_BUFFER pNext; // next buffer (or NULL)
+ USHORT usReserved1; //
+ USHORT cbBuffer; // length of transmitted data
+ USHORT usReserved2; //
+ USHORT cbUserData; // length of optional header
+ UCHAR auchData[]; // optional header and transmitted data
+};
+
+#define LLC_XMIT_BUFFER_SIZE sizeof(LLC_XMIT_BUFFER)
+
+//
+// CCB parameter tables
+//
+
+typedef struct {
+ HANDLE hBufferPool; // handle of new buffer pool
+ PVOID pBuffer; // any buffer in memory
+ ULONG cbBufferSize; // buffer size in bytes
+ ULONG cbMinimumSizeThreshold; // minimum locked size
+} LLC_BUFFER_CREATE_PARMS, *PLLC_BUFFER_CREATE_PARMS;
+
+typedef struct {
+ USHORT usReserved1; // Station id is not used
+ USHORT cBuffersLeft; // free 256 buffer segments
+ ULONG ulReserved;
+ PLLC_XMIT_BUFFER pFirstBuffer; // buffer chain
+} LLC_BUFFER_FREE_PARMS, *PLLC_BUFFER_FREE_PARMS;
+
+typedef struct {
+ USHORT usReserved1; // Station id is not used
+ USHORT cBuffersLeft; // free 256 buffer segments
+
+ //
+ // cBuffersToGet: number of buffers to get. If 0, the returned buffer list
+ // may consist of segment of different size
+ //
+
+ USHORT cBuffersToGet;
+
+ //
+ // cbBufferSize: size of the requested buffers. This will be rounded up to
+ // the next largest segment size: 256, 512, 1024, 2048 or 4096
+ //
+
+ USHORT cbBufferSize;
+ PLLC_XMIT_BUFFER pFirstBuffer;
+} LLC_BUFFER_GET_PARMS, *PLLC_BUFFER_GET_PARMS;
+
+//
+// parameter table for DLC.CONNECT.STATION
+//
+
+typedef struct {
+ USHORT usStationId; // SAP or direct station ID, defines the pool
+ USHORT usReserved;
+ PUCHAR pRoutingInfo; // offset to the routing info
+} LLC_DLC_CONNECT_PARMS, *PLLC_DLC_CONNECT_PARMS;
+
+//
+// DLC_FLOW_CONTROL Options:
+//
+
+#define LLC_RESET_LOCAL_BUSY_USER 0x80
+#define LLC_RESET_LOCAL_BUSY_BUFFER 0xC0
+#define LLC_SET_LOCAL_BUSY_USER 0
+
+typedef struct {
+ USHORT usRes;
+ USHORT usStationId; // SAP or link station id
+ UCHAR uchT1; // response timer
+ UCHAR uchT2; // aknowledgment timer
+ UCHAR uchTi; // inactivity timer
+ UCHAR uchMaxOut; // max transmits without ack
+ UCHAR uchMaxIn; // max receives without ack
+ UCHAR uchMaxOutIncr; // dynamic window increment value
+ UCHAR uchMaxRetryCnt; // N2 value (retries)
+ UCHAR uchReserved1;
+ USHORT usMaxInfoFieldLength; // Only for link stations, NEW!!!
+ UCHAR uchAccessPriority; // token ring access priority
+ UCHAR auchReserved3[4];
+ UCHAR cGroupCount; // number of group SAPs of this SAP
+ PUCHAR pGroupList; // offset to the group list
+} LLC_DLC_MODIFY_PARMS, *PLLC_DLC_MODIFY_PARMS;
+
+#define LLC_XID_HANDLING_IN_APPLICATION 0x08
+#define LLC_XID_HANDLING_IN_DLC 0
+#define LLC_INDIVIDUAL_SAP 0x04
+#define LLC_GROUP_SAP 0x02
+#define LLC_MEMBER_OF_GROUP_SAP 0x01
+
+typedef struct {
+ USHORT usStationId; // SAP or link station id
+ USHORT usUserStatValue; // reserved for user
+ UCHAR uchT1; // response timer
+ UCHAR uchT2; // aknowledgment timer
+ UCHAR uchTi; // inactivity timer
+ UCHAR uchMaxOut; // max tramists without ack
+ UCHAR uchMaxIn; // max receives without ack
+ UCHAR uchMaxOutIncr; // dynamic window increment value
+ UCHAR uchMaxRetryCnt; // N2 value (retries)
+ UCHAR uchMaxMembers; // maximum members for group SAP
+ USHORT usMaxI_Field; // maximum length of the Info field
+ UCHAR uchSapValue; // SAP value to be assigned
+ UCHAR uchOptionsPriority; // SAP options and access priority
+ UCHAR uchcStationCount; // maximum number of link stations in sap
+ UCHAR uchReserved2[2]; //
+ UCHAR cGroupCount; // number of group SAPs of this SAP
+ PUCHAR pGroupList; // offset to the group list
+ ULONG DlcStatusFlags; // User notify flag for DLC status changes
+ UCHAR uchReserved3[8]; // reserved
+ UCHAR cLinkStationsAvail; // total number of available link stations
+} LLC_DLC_OPEN_SAP_PARMS, *PLLC_DLC_OPEN_SAP_PARMS;
+
+typedef struct {
+ USHORT usSapStationId; // SAP station id
+ USHORT usLinkStationId; // Link station id
+ UCHAR uchT1; // response timer
+ UCHAR uchT2; // aknowledgment timer
+ UCHAR uchTi; // inactivity timer
+ UCHAR uchMaxOut; // max tramists without ack
+ UCHAR uchMaxIn; // max receives without ack
+ UCHAR uchMaxOutIncr; // dynamic window increment value
+ UCHAR uchMaxRetryCnt; // N2 value (retries)
+ UCHAR uchRemoteSap; // remote SAP of the link
+ USHORT usMaxI_Field; // max I field length
+ UCHAR uchAccessPriority; // token ring access priority
+ PVOID pRemoteNodeAddress; // pointer to the destination address
+} LLC_DLC_OPEN_STATION_PARMS, *PLLC_DLC_OPEN_STATION_PARMS;
+
+#define LLC_INCREASE_LINK_STATIONS 0
+#define LLC_DECREASE_LINK_STATIONS 0x80
+
+typedef struct {
+ USHORT usStationId; // ID of affected SAP
+ UCHAR uchOption; // increase of decrease indicator
+ UCHAR uchStationCount;
+ UCHAR uchStationsAvailOnAdapter;
+ UCHAR uchStationsAvailOnSap;
+ UCHAR uchTotalStationsOnAdapter;
+ UCHAR uchTotalStationsOnSap;
+} LLC_DLC_REALLOCATE_PARMS, *PLLC_DLC_REALLOCATE_PARMS;
+
+typedef struct {
+ USHORT usStationId; // SAP station ID
+ USHORT cBufferThreshold; // SAP buffer pool Threshold number
+ PVOID AlertEvent; // alerting event
+} LLC_DLC_SET_THRESHOLD_PARMS, *PLLC_DLC_SET_THRESHOLD_PARMS;
+
+typedef struct {
+ PVOID TraceBuffer; // trace buffer
+ ULONG TraceBufferSize; // trace buffer size
+ ULONG TraceFlags; // various trace flags
+} LLC_TRACE_INITIALIZE_PARMS, *PLLC_TRACE_INITIALIZE_PARMS;
+
+#define LLC_DLC_RESET_STATISTICS 0x80
+#define LLC_DLC_READ_STATISTICS 0
+
+typedef struct {
+ ULONG cTransmittedFrames;
+ ULONG cReceivedFrames;
+ ULONG cDiscardedFrames;
+ ULONG cDataLost;
+ USHORT cBuffersAvailable;
+} DLC_SAP_LOG, *PDLC_SAP_LOG;
+
+typedef struct {
+ USHORT cI_FramesTransmitted;
+ USHORT cI_FramesReceived;
+ UCHAR cI_FrameReceiveErrors;
+ UCHAR cI_FrameTransmissionErrors;
+ USHORT cT1_ExpirationCount; // Note: not OUT data xfer mode
+ UCHAR uchLastCmdRespReceived;
+ UCHAR uchLastCmdRespTransmitted;
+ UCHAR uchPrimaryState;
+ UCHAR uchSecondaryState;
+ UCHAR uchSendStateVariable;
+ UCHAR uchReceiveStateVariable;
+ UCHAR uchLastNr; // last received NR
+ UCHAR cbLanHeader;
+ UCHAR auchLanHeader[32];
+} DLC_LINK_LOG, *PDLC_LINK_LOG;
+
+typedef union {
+ DLC_SAP_LOG Sap;
+ DLC_LINK_LOG Link;
+} LLC_DLC_LOG_BUFFER, *PLLC_DLC_LOG_BUFFER;
+
+typedef struct {
+ USHORT usStationId; // ID of a SAP or a link station
+ USHORT cbLogBufSize; //
+ PLLC_DLC_LOG_BUFFER pLogBuf; // offset to the log buffer
+ USHORT usActLogLength; // length of returned log
+ UCHAR uchOptions; // command options (bit7 resets log params)
+} LLC_DLC_STATISTICS_PARMS, *PLLC_DLC_STATISTICS_PARMS;
+
+typedef struct {
+ USHORT usBringUps; // Token Ring adapter bring up error code
+ UCHAR Reserved[30]; // everything else specific to DOS or OS/2
+} LLC_DIR_INITIALIZE_PARMS, *PLLC_DIR_INITIALIZE_PARMS;
+
+typedef struct {
+ USHORT usOpenErrorCode; // open adapter errors detected
+ USHORT usOpenOptions; // various options
+ UCHAR auchNodeAddress[6]; // adapters LAN address
+ UCHAR auchGroupAddress[4]; // multicast address added in the open
+ UCHAR auchFunctionalAddress[4]; // added token ring functional address
+ USHORT usReserved1;
+ USHORT usReserved2;
+ USHORT usMaxFrameSize; // maximum frame size defined in NDIS
+ USHORT usReserved3[4];
+ USHORT usBringUps; // Bring up errors, TR only
+ USHORT InitWarnings;
+ USHORT usReserved4[3];
+} LLC_ADAPTER_OPEN_PARMS, *PLLC_ADAPTER_OPEN_PARMS;
+
+typedef struct {
+ UCHAR uchDlcMaxSaps;
+ UCHAR uchDlcMaxStations;
+ UCHAR uchDlcMaxGroupSaps;
+ UCHAR uchDlcMaxGroupMembers;
+ UCHAR uchT1_TickOne; // Short timer interval (for 1 - 5)
+ UCHAR uchT2_TickOne;
+ UCHAR uchTi_TickOne;
+ UCHAR uchT1_TickTwo; // Long timer interval (for 6 - 10)
+ UCHAR uchT2_TickTwo;
+ UCHAR uchTi_TickTwo;
+} LLC_DLC_PARMS, *PLLC_DLC_PARMS;
+
+//
+// The ethernet mode selects the LAN header format of ethernet. SNA
+// applications should use the default parameter, that has been defined in the
+// registry. The applications using connectionless DLC services should select
+// the ethernet LLC LAN header format they are using (usually 802.3)
+//
+
+typedef enum {
+ LLC_ETHERNET_TYPE_DEFAULT, // use the parameter value set in registry
+ LLC_ETHERNET_TYPE_AUTO, // automatic header type selction for links
+ LLC_ETHERNET_TYPE_802_3, // use always 802.3 lan headers
+ LLC_ETHERNET_TYPE_DIX // use always LLC on DIX SNA type.
+} LLC_ETHERNET_TYPE, *PLLC_ETHERNET_TYPE;
+
+typedef struct {
+ PVOID hBufferPool;
+ PVOID pSecurityDescriptor;
+ LLC_ETHERNET_TYPE LlcEthernetType;
+} LLC_EXTENDED_ADAPTER_PARMS, *PLLC_EXTENDED_ADAPTER_PARMS;
+
+typedef struct {
+ PLLC_ADAPTER_OPEN_PARMS pAdapterParms; // ADAPTER_PARMS
+ PLLC_EXTENDED_ADAPTER_PARMS pExtendedParms; // DIRECT_PARMS
+ PLLC_DLC_PARMS pDlcParms; // DLC_PARMS
+ PVOID pReserved1; // NCB_PARMS
+} LLC_DIR_OPEN_ADAPTER_PARMS, *PLLC_DIR_OPEN_ADAPTER_PARMS;
+
+typedef struct {
+ UCHAR auchMulticastAddress[6]; // 48 bit multicast address
+} LLC_DIR_MULTICAST_ADDRESS, *PLLC_DIR_MULTICAST_ADDRESS;
+
+#define LLC_DIRECT_OPTIONS_ALL_MACS 0x1880
+
+typedef struct {
+ USHORT Reserved[4];
+ USHORT usOpenOptions;
+ USHORT usEthernetType;
+ ULONG ulProtocolTypeMask;
+ ULONG ulProtocolTypeMatch;
+ USHORT usProtocolTypeOffset;
+} LLC_DIR_OPEN_DIRECT_PARMS, *PLLC_DIR_OPEN_DIRECT_PARMS;
+
+typedef struct {
+ UCHAR cLineError;
+ UCHAR cInternalError;
+ UCHAR cBurstError;
+ UCHAR cAC_Error;
+ UCHAR cAbortDelimiter;
+ UCHAR uchReserved1;
+ UCHAR cLostFrame;
+ UCHAR cReceiveCongestion;
+ UCHAR cFrameCopiedError;
+ UCHAR cFrequencyError;
+ UCHAR cTokenError;
+ UCHAR uchReserved2;
+ UCHAR uchReserved3;
+ UCHAR uchReserved4;
+} LLC_ADAPTER_LOG_TR, *PLLC_ADAPTER_LOG_TR;
+
+typedef struct {
+ UCHAR cCRC_Error;
+ UCHAR uchReserved1;
+ UCHAR cAlignmentError;
+ UCHAR uchReserved2;
+ UCHAR cTransmitError;
+ UCHAR uchReserved3;
+ UCHAR cCollisionError;
+ UCHAR cReceiveCongestion;
+ UCHAR uchReserved[6];
+} LLC_ADAPTER_LOG_ETH, *PLLC_ADAPTER_LOG_ETH;
+
+typedef union {
+ LLC_ADAPTER_LOG_TR Tr;
+ LLC_ADAPTER_LOG_ETH Eth;
+} LLC_ADAPTER_LOG, *PLLC_ADAPTER_LOG;
+
+typedef struct {
+ ULONG cTransmittedFrames;
+ ULONG cReceivedFrames;
+ ULONG cDiscardedFrames;
+ ULONG cDataLost;
+ USHORT cBuffersAvailable;
+} LLC_DIRECT_LOG, *PLLC_DIRECT_LOG;
+
+typedef union {
+ LLC_ADAPTER_LOG Adapter;
+ LLC_DIRECT_LOG Dir;
+
+ struct {
+ LLC_ADAPTER_LOG Adapter;
+ LLC_DIRECT_LOG Dir;
+ } both;
+
+} LLC_DIR_READ_LOG_BUFFER, *PLLC_DIR_READ_LOG_BUFFER;
+
+#define LLC_DIR_READ_LOG_ADAPTER 0
+#define LLC_DIR_READ_LOG_DIRECT 1
+#define LLC_DIR_READ_LOG_BOTH 2
+
+typedef struct {
+ USHORT usTypeId; // 0=adapter, 1=direct, 2=both logs
+ USHORT cbLogBuffer; // size of log buffer
+ PLLC_DIR_READ_LOG_BUFFER pLogBuffer;// pointer to log buffer
+ USHORT cbActualLength; // returned size of log buffer
+} LLC_DIR_READ_LOG_PARMS, *PLLC_DIR_READ_LOG_PARMS;
+
+typedef struct {
+ ULONG ulAdapterCheckFlag;
+ ULONG ulNetworkStatusFlag;
+ ULONG ulPcErrorFlag;
+ ULONG ulSystemActionFlag;
+} LLC_DIR_SET_EFLAG_PARMS, *PLLC_DIR_SET_EFLAG_PARMS;
+
+#define LLC_ADAPTER_ETHERNET 0x0010
+#define LLC_ADAPTER_TOKEN_RING 0x0040
+
+typedef struct {
+ UCHAR auchPermanentAddress[6]; // permanent encoded address
+ UCHAR auchNodeAddress[6]; // adapter's network address
+ UCHAR auchGroupAddress[4]; // adapter's group address
+ UCHAR auchFunctAddr[4]; // adapter's functional address
+ UCHAR uchMaxSap; // maximum allowable SAP
+ UCHAR uchOpenSaps; // number of currently open saps
+ UCHAR uchMaxStations; // max number of stations (always 253)
+ UCHAR uchOpenStation; // number of open stations (only up to 253)
+ UCHAR uchAvailStations; // number of available stations (always 253)
+ UCHAR uchAdapterConfig; // adapter configuration flags
+ UCHAR auchReserved1[10]; // microcode level
+ ULONG ulReserved1;
+ ULONG ulReserved2;
+ ULONG ulMaxFrameLength; // maximum frame length (only in Windows/Nt)
+ USHORT usLastNetworkStatus;
+ USHORT usAdapterType; // THIS BYTE IS NOT USED IN DOS DLC !!!
+} LLC_DIR_STATUS_PARMS, *PLLC_DIR_STATUS_PARMS;
+
+
+#define LLC_OPTION_READ_STATION 0
+#define LLC_OPTION_READ_SAP 1
+#define LLC_OPTION_READ_ALL 2
+
+#define LLC_EVENT_SYSTEM_ACTION 0x0040
+#define LLC_EVENT_NETWORK_STATUS 0x0020
+#define LLC_EVENT_CRITICAL_EXCEPTION 0x0010
+#define LLC_EVENT_STATUS_CHANGE 0x0008
+#define LLC_EVENT_RECEIVE_DATA 0x0004
+#define LLC_EVENT_TRANSMIT_COMPLETION 0x0002
+#define LLC_EVENT_COMMAND_COMPLETION 0x0001
+#define LLC_READ_ALL_EVENTS 0x007F
+
+//
+// LLC_STATUS_CHANGE indications
+// The returned status value may be an inclusive-OR of several flags
+//
+
+#define LLC_INDICATE_LINK_LOST 0x8000
+#define LLC_INDICATE_DM_DISC_RECEIVED 0x4000
+#define LLC_INDICATE_FRMR_RECEIVED 0x2000
+#define LLC_INDICATE_FRMR_SENT 0x1000
+#define LLC_INDICATE_RESET 0x0800
+#define LLC_INDICATE_CONNECT_REQUEST 0x0400
+#define LLC_INDICATE_REMOTE_BUSY 0x0200
+#define LLC_INDICATE_REMOTE_READY 0x0100
+#define LLC_INDICATE_TI_TIMER_EXPIRED 0x0080
+#define LLC_INDICATE_DLC_COUNTER_OVERFLOW 0x0040
+#define LLC_INDICATE_ACCESS_PRTY_LOWERED 0x0020
+#define LLC_INDICATE_LOCAL_STATION_BUSY 0x0001
+
+typedef struct {
+ USHORT usStationId;
+ UCHAR uchOptionIndicator;
+ UCHAR uchEventSet;
+ UCHAR uchEvent;
+ UCHAR uchCriticalSubset;
+ ULONG ulNotificationFlag;
+
+ union {
+
+ struct {
+ USHORT usCcbCount;
+ PLLC_CCB pCcbCompletionList;
+ USHORT usBufferCount;
+ PLLC_BUFFER pFirstBuffer;
+ USHORT usReceivedFrameCount;
+ PLLC_BUFFER pReceivedFrame;
+ USHORT usEventErrorCode;
+ USHORT usEventErrorData[3];
+ } Event;
+
+ struct {
+ USHORT usStationId;
+ USHORT usDlcStatusCode;
+ UCHAR uchFrmrData[5];
+ UCHAR uchAccessPritority;
+ UCHAR uchRemoteNodeAddress[6];
+ UCHAR uchRemoteSap;
+ UCHAR uchReserved;
+ USHORT usUserStatusValue;
+ } Status;
+
+ } Type;
+
+} LLC_READ_PARMS, *PLLC_READ_PARMS;
+
+//
+// This data structure gives the best performance in Windows/Nt: The DLC driver
+// must copy the CCB and the parameter table. If the driver knows that the
+// parameter table is concatenated to the CCB, it can copy both structures at
+// once. NOTE: The pointer to the parameter table MUST still be present in the
+// CCB
+//
+
+typedef struct {
+ LLC_CCB Ccb;
+ LLC_READ_PARMS Parms;
+} LLC_READ_COMMAND, *PLLC_READ_COMMAND;
+
+//
+// New receive types for direct stations, these types are ignored if the direct
+// station was opened with a specific ethernet type
+//
+
+#define LLC_DIR_RCV_ALL_TR_FRAMES 0
+#define LLC_DIR_RCV_ALL_MAC_FRAMES 1
+#define LLC_DIR_RCV_ALL_8022_FRAMES 2
+#define LLC_DIR_RCV_ALL_FRAMES 4
+#define LLC_DIR_RCV_ALL_ETHERNET_TYPES 5
+
+#define LLC_CONTIGUOUS_MAC 0x80
+#define LLC_CONTIGUOUS_DATA 0x40
+#define LLC_NOT_CONTIGUOUS_DATA 0x00
+
+//
+// LLC_BREAK (0x20) is not supported by Windows/Nt
+//
+
+#define LLC_RCV_READ_INDIVIDUAL_FRAMES 0
+#define LLC_RCV_CHAIN_FRAMES_ON_LINK 1
+#define LLC_RCV_CHAIN_FRAMES_ON_SAP 2
+
+typedef struct {
+ USHORT usStationId; // SAP, link station or direct id
+ USHORT usUserLength; // length of user data in buffer header
+ ULONG ulReceiveFlag; // the received data handler
+ PLLC_BUFFER pFirstBuffer; // first buffer in the pool
+ UCHAR uchOptions; // defines how the frame is received
+ UCHAR auchReserved1[3];
+ UCHAR uchRcvReadOption; // defines if rcv frames are chained
+} LLC_RECEIVE_PARMS, *PLLC_RECEIVE_PARMS;
+
+#define LLC_CHAIN_XMIT_COMMANDS_ON_LINK 0
+#define LLC_COMPLETE_SINGLE_XMIT_FRAME 1
+#define LLC_CHAIN_XMIT_COMMANDS_ON_SAP 2
+
+typedef struct {
+ USHORT usStationId; // SAP, link station or direct id
+ UCHAR uchTransmitFs; // token-ring frame status
+ UCHAR uchRemoteSap; // remote destination SAP
+ PLLC_XMIT_BUFFER pXmitQueue1; // first link list of frame segments
+ PLLC_XMIT_BUFFER pXmitQueue2; // another segment list returuned to pool
+ USHORT cbBuffer1; // length of buffer 1
+ USHORT cbBuffer2; // length of buffer 2
+ PVOID pBuffer1; // yet another segment
+ PVOID pBuffer2; // this is the last segment of frame
+ UCHAR uchXmitReadOption; // defines completion event for READ
+} LLC_TRANSMIT_PARMS, *PLLC_TRANSMIT_PARMS;
+
+#define LLC_FIRST_DATA_SEGMENT 0x01
+#define LLC_NEXT_DATA_SEGMENT 0x02
+
+typedef struct {
+ UCHAR eSegmentType; // defines if first or next segment of frame
+ UCHAR boolFreeBuffer; // if set, this buffer is released to pool
+ USHORT cbBuffer; // length of this buffer
+ PVOID pBuffer;
+} LLC_TRANSMIT_DESCRIPTOR, *PLLC_TRANSMIT_DESCRIPTOR;
+
+//
+// The frames types returned in the first receive buffer or used with the
+// TRANSMIT_FRAMES command. A direct station may also send only ethernet
+// frames. The ethernet types are only for transmit. Types 0x0019 - 0x05DC
+// are reserved
+//
+
+enum _LLC_FRAME_TYPES { // Purpose:
+ LLC_DIRECT_TRANSMIT = 0x0000, // transmit
+ LLC_DIRECT_MAC = 0x0002, // receive
+ LLC_I_FRAME = 0x0004, // receive & transmit
+ LLC_UI_FRAME = 0x0006, // receive & transmit
+ LLC_XID_COMMAND_POLL = 0x0008, // receive & transmit
+ LLC_XID_COMMAND_NOT_POLL = 0x000A, // receive & transmit
+ LLC_XID_RESPONSE_FINAL = 0x000C, // receive & transmit
+ LLC_XID_RESPONSE_NOT_FINAL = 0x000E, // receive & transmit
+ LLC_TEST_RESPONSE_FINAL = 0x0010, // receive & transmit
+ LLC_TEST_RESPONSE_NOT_FINAL = 0x0012, // receive & transmit
+ LLC_DIRECT_8022 = 0x0014, // receive (direct station)
+ LLC_TEST_COMMAND_POLL = 0x0016, // transmit
+ LLC_DIRECT_ETHERNET_TYPE = 0x0018, // receive (direct station)
+ LLC_LAST_FRAME_TYPE = 0x001a, // reserved
+ LLC_FIRST_ETHERNET_TYPE = 0x05DD // transmit (>)
+};
+
+typedef struct {
+ LLC_CCB Ccb; // use this as transmit CCB
+ USHORT usStationId;
+ USHORT usFrameType; // DLC frame or ethernet type
+ UCHAR uchRemoteSap; // used with UI, TEST, XID frames
+ UCHAR uchXmitReadOption;
+ UCHAR Reserved2[2];
+ ULONG cXmitBufferCount;
+ LLC_TRANSMIT_DESCRIPTOR aXmitBuffer[1];
+} LLC_TRANSMIT2_COMMAND, *PLLC_TRANSMIT2_COMMAND;
+
+//
+// LLC_TRANSMIT2_VAR_PARMS - this macro allocates space for variable length
+// descriptor array, eg: LLC_TRANSMIT2_VAR_PARMS(8) TransmitParms;
+//
+
+#define LLC_TRANSMIT2_VAR_PARMS(a)\
+struct {\
+ LLC_CCB Ccb;\
+ USHORT usStationId;\
+ USHORT usFrameType;\
+ UCHAR uchRemoteSap;\
+ UCHAR uchXmitReadOption;\
+ UCHAR uchReserved2[2];\
+ ULONG cXmitBufferCount;\
+ LLC_TRANSMIT_DESCRIPTOR XmitBuffer[(a)];\
+}
+
+//
+// LLC_PARMS - All CCB parameter tables can be referred to using this union
+//
+
+union _LLC_PARMS {
+ LLC_BUFFER_FREE_PARMS BufferFree;
+ LLC_BUFFER_GET_PARMS BufferGet;
+ LLC_DLC_CONNECT_PARMS DlcConnectStation;
+ LLC_DLC_MODIFY_PARMS DlcModify;
+ LLC_DLC_OPEN_SAP_PARMS DlcOpenSap;
+ LLC_DLC_OPEN_STATION_PARMS DlcOpenStation;
+ LLC_DLC_REALLOCATE_PARMS DlcReallocate;
+ LLC_DLC_SET_THRESHOLD_PARMS DlcSetThreshold;
+ LLC_DLC_STATISTICS_PARMS DlcStatistics;
+ LLC_DIR_INITIALIZE_PARMS DirInitialize;
+ LLC_DIR_OPEN_ADAPTER_PARMS DirOpenAdapter;
+ LLC_DIR_OPEN_DIRECT_PARMS DirOpenDirect;
+ LLC_DIR_READ_LOG_PARMS DirReadLog;
+ LLC_DIR_SET_EFLAG_PARMS DirSetEventFlag;
+ LLC_DIR_STATUS_PARMS DirStatus;
+ LLC_READ_PARMS Read;
+ LLC_RECEIVE_PARMS Receive;
+ LLC_TRANSMIT_PARMS Transmit;
+ LLC_TRANSMIT2_COMMAND Transmit2;
+ LLC_TRACE_INITIALIZE_PARMS TraceInitialize;
+};
+
+//
+// LLC_STATUS - enumerates the return codes which appear in the CCB uchDlcStatus
+// field
+//
+
+typedef enum _LLC_STATUS {
+ LLC_STATUS_SUCCESS = 0x00,
+ LLC_STATUS_INVALID_COMMAND = 0x01,
+ LLC_STATUS_DUPLICATE_COMMAND = 0x02,
+ LLC_STATUS_ADAPTER_OPEN = 0x03,
+ LLC_STATUS_ADAPTER_CLOSED = 0x04,
+ LLC_STATUS_PARAMETER_MISSING = 0x05,
+ LLC_STATUS_INVALID_OPTION = 0x06,
+ LLC_STATUS_COMMAND_CANCELLED_FAILURE = 0x07,
+ LLC_STATUS_ACCESS_DENIED = 0x08, // not used in Windows/Nt
+ LLC_STATUS_ADAPTER_NOT_INITIALIZED = 0x09, // not used in Windows/Nt
+ LLC_STATUS_CANCELLED_BY_USER = 0x0A,
+ LLC_STATUS_COMMAND_CANCELLED_CLOSED = 0x0B, // not used in Windows/Nt
+ LLC_STATUS_SUCCESS_NOT_OPEN = 0x0C,
+ LLC_STATUS_TIMER_ERROR = 0x11,
+ LLC_STATUS_NO_MEMORY = 0x12,
+ LLC_STATUS_INVALID_LOG_ID = 0x13, // not used in Windows/Nt
+ LLC_STATUS_LOST_LOG_DATA = 0x15,
+ LLC_STATUS_BUFFER_SIZE_EXCEEDED = 0x16,
+ LLC_STATUS_INVALID_BUFFER_LENGTH = 0x18,
+ LLC_STATUS_INADEQUATE_BUFFERS = 0x19,
+ LLC_STATUS_USER_LENGTH_TOO_LARGE = 0x1A,
+ LLC_STATUS_INVALID_PARAMETER_TABLE = 0x1B,
+ LLC_STATUS_INVALID_POINTER_IN_CCB = 0x1C,
+ LLC_STATUS_INVALID_ADAPTER = 0x1D,
+ LLC_STATUS_LOST_DATA_NO_BUFFERS = 0x20,
+ LLC_STATUS_LOST_DATA_INADEQUATE_SPACE = 0x21,
+ LLC_STATUS_TRANSMIT_ERROR_FS = 0x22,
+ LLC_STATUS_TRANSMIT_ERROR = 0x23,
+ LLC_STATUS_UNAUTHORIZED_MAC = 0x24, // not used in Windows/Nt
+ LLC_STATUS_MAX_COMMANDS_EXCEEDED = 0x25, // not used in Windows/Nt
+ LLC_STATUS_LINK_NOT_TRANSMITTING = 0x27,
+ LLC_STATUS_INVALID_FRAME_LENGTH = 0x28,
+ LLC_STATUS_INADEQUATE_RECEIVE = 0x30, // not used in Windows/Nt
+ LLC_STATUS_INVALID_NODE_ADDRESS = 0x32,
+ LLC_STATUS_INVALID_RCV_BUFFER_LENGTH = 0x33,
+ LLC_STATUS_INVALID_XMIT_BUFFER_LENGTH = 0x34,
+ LLC_STATUS_INVALID_STATION_ID = 0x40,
+ LLC_STATUS_LINK_PROTOCOL_ERROR = 0x41,
+ LLC_STATUS_PARMETERS_EXCEEDED_MAX = 0x42,
+ LLC_STATUS_INVALID_SAP_VALUE = 0x43,
+ LLC_STATUS_INVALID_ROUTING_INFO = 0x44,
+ LLC_STATUS_RESOURCES_NOT_AVAILABLE = 0x46, // not used in Windows/Nt
+ LLC_STATUS_LINK_STATIONS_OPEN = 0x47,
+ LLC_STATUS_INCOMPATIBLE_COMMANDS = 0x4A,
+ LLC_STATUS_OUTSTANDING_COMMANDS = 0x4C, // not used in Windows/Nt
+ LLC_STATUS_CONNECT_FAILED = 0x4D,
+ LLC_STATUS_INVALID_REMOTE_ADDRESS = 0x4F,
+ LLC_STATUS_CCB_POINTER_FIELD = 0x50,
+ LLC_STATUS_INVALID_APPLICATION_ID = 0x52, // not used in Windows/Nt
+ LLC_STATUS_NO_SYSTEM_PROCESS = 0x56, // not used in Windows/Nt
+ LLC_STATUS_INADEQUATE_LINKS = 0x57,
+ LLC_STATUS_INVALID_PARAMETER_1 = 0x58,
+ LLC_STATUS_DIRECT_STATIONS_NOT_ASSIGNED = 0x5C,
+ LLC_STATUS_DEVICE_DRIVER_NOT_INSTALLED = 0x5d,
+ LLC_STATUS_ADAPTER_NOT_INSTALLED = 0x5e,
+ LLC_STATUS_CHAINED_DIFFERENT_ADAPTERS = 0x5f,
+ LLC_STATUS_INIT_COMMAND_STARTED = 0x60,
+ LLC_STATUS_TOO_MANY_USERS = 0x61, // not used in Windows/Nt
+ LLC_STATUS_CANCELLED_BY_SYSTEM_ACTION = 0x62,
+ LLC_STATUS_DIR_STATIONS_NOT_AVAILABLE = 0x63, // not used in Windows/Nt
+ LLC_STATUS_NO_GDT_SELECTORS = 0x65,
+ LLC_STATUS_MEMORY_LOCK_FAILED = 0x69,
+
+ //
+ // New NT DLC specific error codes begin from 0x80
+ // These error codes are for new Windows/Nt DLC apps.
+ //
+
+ LLC_STATUS_INVALID_BUFFER_ADDRESS = 0x80,
+ LLC_STATUS_BUFFER_ALREADY_RELEASED = 0x81,
+ LLC_STATUS_BIND_ERROR = 0xA0, // not used in Windows/Nt
+ LLC_STATUS_INVALID_VERSION = 0xA1,
+ LLC_STATUS_NT_ERROR_STATUS = 0xA2,
+ LLC_STATUS_PENDING = 0xFF
+} LLC_STATUS;
+
+#define LLC_STATUS_MAX_ERROR 0xFF
+
+//
+// ACSLAN_STATUS - status codes which are returned from AcsLan
+//
+
+typedef enum {
+ ACSLAN_STATUS_COMMAND_ACCEPTED = 0,
+ ACSLAN_STATUS_INVALID_CCB_POINTER = 1,
+ ACSLAN_STATUS_CCB_IN_ERROR = 2,
+ ACSLAN_STATUS_CHAINED_CCB_IN_ERROR = 3,
+ ACSLAN_STATUS_SYSTEM_ERROR = 4,
+ ACSLAN_STATUS_SYSTEM_STATUS = 5,
+ ACSLAN_STATUS_INVALID_COMMAND = 6
+} ACSLAN_STATUS;
+
+//
+// prototypes
+//
+
+ACSLAN_STATUS
+APIENTRY
+AcsLan(
+ IN OUT PLLC_CCB pCcb,
+ OUT PLLC_CCB* ppBadCcb
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _DLCAPI_
diff --git a/public/sdk/inc/dlgs.h b/public/sdk/inc/dlgs.h
new file mode 100644
index 000000000..d37318c54
--- /dev/null
+++ b/public/sdk/inc/dlgs.h
@@ -0,0 +1,252 @@
+/*++
+
+Copyright (c) 1990-1996, Microsoft Corporation All rights reserved.
+
+Module Name:
+
+ dlgs.h
+
+Abstract:
+
+ This module contains the UI dialog header information.
+
+Revision History:
+
+--*/
+
+
+#ifndef _DLGSH_INCLUDED_
+#define _DLGSH_INCLUDED_
+
+
+//
+// Constant Declarations.
+//
+
+#define ctlFirst 0x0400
+#define ctlLast 0x04ff
+
+//
+// Push buttons.
+//
+#define psh1 0x0400
+#define psh2 0x0401
+#define psh3 0x0402
+#define psh4 0x0403
+#define psh5 0x0404
+#define psh6 0x0405
+#define psh7 0x0406
+#define psh8 0x0407
+#define psh9 0x0408
+#define psh10 0x0409
+#define psh11 0x040a
+#define psh12 0x040b
+#define psh13 0x040c
+#define psh14 0x040d
+#define psh15 0x040e
+#define pshHelp psh15
+#define psh16 0x040f
+
+//
+// Checkboxes.
+//
+#define chx1 0x0410
+#define chx2 0x0411
+#define chx3 0x0412
+#define chx4 0x0413
+#define chx5 0x0414
+#define chx6 0x0415
+#define chx7 0x0416
+#define chx8 0x0417
+#define chx9 0x0418
+#define chx10 0x0419
+#define chx11 0x041a
+#define chx12 0x041b
+#define chx13 0x041c
+#define chx14 0x041d
+#define chx15 0x041e
+#define chx16 0x041f
+
+//
+// Radio buttons.
+//
+#define rad1 0x0420
+#define rad2 0x0421
+#define rad3 0x0422
+#define rad4 0x0423
+#define rad5 0x0424
+#define rad6 0x0425
+#define rad7 0x0426
+#define rad8 0x0427
+#define rad9 0x0428
+#define rad10 0x0429
+#define rad11 0x042a
+#define rad12 0x042b
+#define rad13 0x042c
+#define rad14 0x042d
+#define rad15 0x042e
+#define rad16 0x042f
+
+//
+// Groups, frames, rectangles, and icons.
+//
+#define grp1 0x0430
+#define grp2 0x0431
+#define grp3 0x0432
+#define grp4 0x0433
+#define frm1 0x0434
+#define frm2 0x0435
+#define frm3 0x0436
+#define frm4 0x0437
+#define rct1 0x0438
+#define rct2 0x0439
+#define rct3 0x043a
+#define rct4 0x043b
+#define ico1 0x043c
+#define ico2 0x043d
+#define ico3 0x043e
+#define ico4 0x043f
+
+//
+// Static text.
+//
+#define stc1 0x0440
+#define stc2 0x0441
+#define stc3 0x0442
+#define stc4 0x0443
+#define stc5 0x0444
+#define stc6 0x0445
+#define stc7 0x0446
+#define stc8 0x0447
+#define stc9 0x0448
+#define stc10 0x0449
+#define stc11 0x044a
+#define stc12 0x044b
+#define stc13 0x044c
+#define stc14 0x044d
+#define stc15 0x044e
+#define stc16 0x044f
+#define stc17 0x0450
+#define stc18 0x0451
+#define stc19 0x0452
+#define stc20 0x0453
+#define stc21 0x0454
+#define stc22 0x0455
+#define stc23 0x0456
+#define stc24 0x0457
+#define stc25 0x0458
+#define stc26 0x0459
+#define stc27 0x045a
+#define stc28 0x045b
+#define stc29 0x045c
+#define stc30 0x045d
+#define stc31 0x045e
+#define stc32 0x045f
+
+//
+// Listboxes.
+//
+#define lst1 0x0460
+#define lst2 0x0461
+#define lst3 0x0462
+#define lst4 0x0463
+#define lst5 0x0464
+#define lst6 0x0465
+#define lst7 0x0466
+#define lst8 0x0467
+#define lst9 0x0468
+#define lst10 0x0469
+#define lst11 0x046a
+#define lst12 0x046b
+#define lst13 0x046c
+#define lst14 0x046d
+#define lst15 0x046e
+#define lst16 0x046f
+
+//
+// Combo boxes.
+//
+#define cmb1 0x0470
+#define cmb2 0x0471
+#define cmb3 0x0472
+#define cmb4 0x0473
+#define cmb5 0x0474
+#define cmb6 0x0475
+#define cmb7 0x0476
+#define cmb8 0x0477
+#define cmb9 0x0478
+#define cmb10 0x0479
+#define cmb11 0x047a
+#define cmb12 0x047b
+#define cmb13 0x047c
+#define cmb14 0x047d
+#define cmb15 0x047e
+#define cmb16 0x047f
+
+//
+// Edit controls.
+//
+#define edt1 0x0480
+#define edt2 0x0481
+#define edt3 0x0482
+#define edt4 0x0483
+#define edt5 0x0484
+#define edt6 0x0485
+#define edt7 0x0486
+#define edt8 0x0487
+#define edt9 0x0488
+#define edt10 0x0489
+#define edt11 0x048a
+#define edt12 0x048b
+#define edt13 0x048c
+#define edt14 0x048d
+#define edt15 0x048e
+#define edt16 0x048f
+
+//
+// Scroll bars.
+//
+#define scr1 0x0490
+#define scr2 0x0491
+#define scr3 0x0492
+#define scr4 0x0493
+#define scr5 0x0494
+#define scr6 0x0495
+#define scr7 0x0496
+#define scr8 0x0497
+
+//
+// These dialog resource ordinals really start at 0x0600, but the
+// RC Compiler can't handle hex for resource IDs, hence the decimal.
+//
+#define FILEOPENORD 1536
+#define MULTIFILEOPENORD 1537
+#define PRINTDLGORD 1538
+#define PRNSETUPDLGORD 1539
+#define FINDDLGORD 1540
+#define REPLACEDLGORD 1541
+#define FONTDLGORD 1542
+#define FORMATDLGORD31 1543
+#define FORMATDLGORD30 1544
+
+#if (WINVER >= 0x30a)
+#define PAGESETUPDLGORD 1546
+#define NEWFILEOPENORD 1547
+#endif // (WINVER >= 0x30a)
+
+
+
+
+//
+// Typedef Declarations.
+//
+typedef struct tagCRGB
+{
+ BYTE bRed;
+ BYTE bGreen;
+ BYTE bBlue;
+ BYTE bExtra;
+} CRGB; /* RGB Color */
+
+
+#endif // _DLGSH_INCLUDED_
diff --git a/public/sdk/inc/dlink.hxx b/public/sdk/inc/dlink.hxx
new file mode 100644
index 000000000..f239d990c
--- /dev/null
+++ b/public/sdk/inc/dlink.hxx
@@ -0,0 +1,349 @@
+#if !defined __DLINK_HXX__
+#define __DLINK_HXX__
+//+---------------------------------------------------------------------------
+//
+// File: DLINK.HXX
+//
+// Contents: Parametrized doubly linked list and iterators
+//
+// History: 15-Jun-92 BartoszM Created.
+//
+//----------------------------------------------------------------------------
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDoubleLink
+//
+// Purpose: Linked element
+//
+// History: 15-Jun-92 BartoszM Created.
+//
+// Notes: Use as base for your class. No need to override anything.
+//
+// class CFoo: public CDoubleLink
+// {
+// // your data and code goes here
+// };
+//
+//----------------------------------------------------------------------------
+
+class CDoubleLink
+{
+public:
+
+ CDoubleLink* Next() { return _next; }
+
+ CDoubleLink* Prev() { return _prev; }
+
+ void Close() { _next = this; _prev = this; }
+
+ BOOL IsSingle() const { return _next == this; }
+
+ void Unlink()
+ {
+ _next->_prev = _prev;
+ _prev->_next = _next;
+ }
+
+ void InsertBefore ( CDoubleLink* pAfter )
+ {
+ CDoubleLink* pBefore = pAfter->_prev;
+ _next = pAfter;
+ _prev = pBefore;
+ pAfter->_prev = this;
+ pBefore->_next = this;
+ }
+
+ void InsertAfter ( CDoubleLink* pBefore )
+ {
+ CDoubleLink* pAfter = pBefore->_next;
+ _next = pAfter;
+ _prev = pBefore;
+ pAfter->_prev = this;
+ pBefore->_next = this;
+ }
+
+protected:
+
+ CDoubleLink* _next;
+ CDoubleLink* _prev;
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDoubleList
+//
+// Purpose: Linked list of indexes
+//
+// History: 15-Jun-92 BartoszM Created.
+// 15-Dec-94 SuChang Added _End() routine
+//
+// Notes: Use as base for your own class.
+// Add methods as needed.
+// To implement searches use forward and backward
+// iterators described below. For instance, if you implement
+// a SORTED list:
+//
+// Foo* CFooList::Insert ( CFoo* pFoo )
+// {
+// for ( CBackFooIter it(*this); !AtEnd(it); BackUp(it) )
+// {
+// if ( it->Size() <= pFoo->Size() ) // overloaded operator ->
+// {
+// pFoo->InsertAfter(it.GetFoo());
+// return;
+// }
+// }
+// // end of list
+// Push(pFoo);
+// }
+//
+//----------------------------------------------------------------------------
+
+class CDoubleList
+{
+ friend class CForwardIter;
+ friend class CBackwardIter;
+ friend class CDoubleIter;
+
+public:
+
+ class CDoubleIter
+ {
+ friend class CDoubleList;
+ protected:
+ CDoubleIter ( CDoubleLink* pLink ) : _pLinkCur(pLink) {}
+ CDoubleLink* _pLinkCur;
+ };
+
+
+ CDoubleList()
+ {
+ _root.Close();
+ }
+
+ BOOL IsEmpty() const { return _root.IsSingle(); }
+
+ void Advance ( CDoubleIter& it );
+
+ void BackUp ( CDoubleIter& it );
+
+ BOOL AtEnd ( CDoubleIter& it);
+
+ // In derived class you can add your own Pop(), Top(), etc.
+ // that will cast the results of _Pop(), _Top(), etc...
+
+protected:
+
+ CDoubleLink* _Top() { return IsEmpty()? 0: _root.Next(); }
+ CDoubleLink* _End() { return IsEmpty()? 0: _root.Prev(); }
+
+ BOOL _IsRoot ( CDoubleLink* pLink ) const
+ { return pLink == &_root; }
+
+ void _Push ( CDoubleLink* pLink );
+
+ void _Queue ( CDoubleLink* pLink );
+
+ CDoubleLink* _Pop ( void );
+
+ CDoubleLink _root;
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDoubleIter
+//
+// Purpose: Linked list iterator
+//
+// History: 17-Jun-92 BartoszM Created.
+//
+// Notes: Auxiliary class. See iterators below.
+//
+//----------------------------------------------------------------------------
+
+//+---------------------------------------------------------------------------
+//
+// Class: CForwardIter
+//
+// Purpose: Linked list iterator
+//
+// History: 17-Jun-92 BartoszM Created.
+//
+// Notes: Use as base for your own forward iterator.
+// Notice the overloading of operator ->
+// -------------------------------------
+// It lets you use iterator like a pointer to Foo.
+//
+// class CForFooIter : public CForwardIter
+// {
+// public:
+//
+// CForFooIter ( CFooList& list ) : CForwardIter(list) {}
+//
+// CFoo* operator->() { return (CFoo*) _pLinkCur; }
+// CFoo* GetFoo() { return (CFoo*) _pLinkCur; }
+// };
+//
+// Example of usage:
+// ----------------
+//
+// for ( CForFooIter it(fooList); !fooList.AtEnd(it); fooList.Advance(it))
+// {
+// it->FooMethod(); // operator ->
+// }
+//
+//----------------------------------------------------------------------------
+
+class CForwardIter: public CDoubleList::CDoubleIter
+{
+public:
+ CForwardIter ( CDoubleList& list ): CDoubleIter(list._root.Next()) {}
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CBackwardIter
+//
+// Purpose: Linked list iterator
+//
+// History: 17-Jun-92 BartoszM Created.
+//
+// Notes: See above.
+//
+//----------------------------------------------------------------------------
+
+class CBackwardIter: public CDoubleList::CDoubleIter
+{
+public:
+ CBackwardIter ( CDoubleList& list ): CDoubleIter(list._root.Prev()) {}
+};
+
+
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDoubleList::AtEnd, public
+//
+// Arguments: [it] -- iterator
+//
+// Returns: TRUE if iterator at end of list
+//
+// History: 17-Jun-92 BartoszM Created.
+//
+// Notes: Works for both iterators (forward and backward)
+//
+//----------------------------------------------------------------------------
+
+inline BOOL CDoubleList::AtEnd ( CDoubleIter& it)
+{
+ return _IsRoot( it._pLinkCur );
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDoubleList::Advance, public
+//
+// Synopsis: Advances an iterator
+//
+// Arguments: [it] -- iterator
+//
+// History: 17-Jun-92 BartoszM Created.
+//
+//----------------------------------------------------------------------------
+
+inline void CDoubleList::Advance ( CDoubleIter& it )
+{
+ Win4Assert ( !_IsRoot(it._pLinkCur) );
+ it._pLinkCur = it._pLinkCur->Next();
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDoubleList::BackUp, public
+//
+// Synopsis: Backs up an iterator
+//
+// Arguments: [it] -- iterator
+//
+// History: 17-Jun-92 BartoszM Created.
+//
+//----------------------------------------------------------------------------
+
+inline void CDoubleList::BackUp ( CDoubleIter& it )
+{
+ Win4Assert ( !_IsRoot(it._pLinkCur) );
+ it._pLinkCur = it._pLinkCur->Prev();
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDoubleList::Queue, private
+//
+// Arguments: [pLink] -- link to be queued
+//
+// History: 17-Mar-93 WadeR Created. (based on Push, below)
+//
+// Notest: Override, accept only derived class (type safety!), e.g.
+//
+// void CFooList::Queue ( CFoo* pFoo )
+// {
+// _Queue ( pFoo );
+// }
+//
+//----------------------------------------------------------------------------
+
+inline void CDoubleList::_Queue ( CDoubleLink* pLink )
+{
+ pLink->InsertBefore ( &_root );
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDoubleList::Push, private
+//
+// Arguments: [pLink] -- link to be pushed
+//
+// History: 17-Jun-92 BartoszM Created.
+//
+// Notest: Override, accept only derived class (type safety!), e.g.
+//
+// void CFooList::Push ( CFoo* pFoo )
+// {
+// _Push ( pFoo );
+// }
+//
+//----------------------------------------------------------------------------
+
+inline void CDoubleList::_Push ( CDoubleLink* pLink )
+{
+ pLink->InsertAfter ( &_root );
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDoubleList::_Pop, private
+//
+// History: 17-Jun-92 BartoszM Created.
+//
+// Notes: Override: cast the result
+//
+// CFoo* CFooList::Pop()
+// {
+// return (CFoo*) _Pop();
+// }
+//
+//----------------------------------------------------------------------------
+
+inline CDoubleLink* CDoubleList::_Pop ( void )
+{
+ CDoubleLink* pLink = 0;
+ if ( !IsEmpty() )
+ {
+ pLink = _root.Next();
+ pLink->Unlink();
+ }
+ return pLink;
+}
+
+#endif
diff --git a/public/sdk/inc/dllsem.hxx b/public/sdk/inc/dllsem.hxx
new file mode 100644
index 000000000..7044309ea
--- /dev/null
+++ b/public/sdk/inc/dllsem.hxx
@@ -0,0 +1,214 @@
+
+///+---------------------------------------------------------------------------
+//
+// File: DllSem.Hxx
+//
+// Contents: Semaphore classes
+//
+// Classes: CDLLStaticMutexSem - Mutex semaphore class For Dlls
+// CDLLStaticLock - Safe Wrapper for lock...
+//
+// History: 11-Sep-92 Kurte Hacked up from AlexT's sources
+//
+// Notes: This file contains a hacked up version of the CMutexSem
+// named CDllStataticMutexSem, which does not delete its
+// critical section, when the DLL is unloaded, such that other
+// dlls can still use the semaphore during their unload
+// processing. This is to get around the NT less than
+// optimal DLL Exit list processing...
+//
+//----------------------------------------------------------------------------
+
+#ifndef __DLLSEM_HXX__
+#define __DLLSEM_HXX__
+
+#include <sem.hxx>
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDLLStaticMutexSem (dmxs)
+//
+// Purpose: Mutex Semaphore services
+//
+// Interface: Init - initializer (two-step)
+// Request - acquire semaphore
+// Release - release semaphore
+//
+// History: 14-Jun-91 AlexT Created.
+// 30-oct-91 SethuR 32 bit implementation
+//
+// Notes: This class wraps a mutex semaphore. Mutex semaphores protect
+// access to resources by only allowing one client through at a
+// time. The client Requests the semaphore before accessing the
+// resource and Releases the semaphore when it is done. The
+// same client can Request the semaphore multiple times (a nest
+// count is maintained).
+// The mutex semaphore is a wrapper around a critical section
+// which does not support a timeout mechanism. Therefore the
+// usage of any value other than INFINITE is discouraged. It
+// is provided merely for compatibility.
+//
+//----------------------------------------------------------------------------
+
+class CDLLStaticMutexSem
+{
+public:
+ CDLLStaticMutexSem();
+ inline BOOL Init();
+ ~CDLLStaticMutexSem();
+
+ SEMRESULT Request(DWORD dwMilliseconds = INFINITE);
+ void Release();
+
+private:
+ CRITICAL_SECTION _cs;
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CDLLStaticLock (dlck)
+//
+// Purpose: Lock using a Mutex Semaphore
+//
+// History: 02-Oct-91 BartoszM Created.
+//
+// Notes: Simple lock object to be created on the stack.
+// The constructor acquires the semaphor, the destructor
+// (called when lock is going out of scope) releases it.
+//
+//----------------------------------------------------------------------------
+
+class CDLLStaticLock INHERIT_UNWIND_IF_CAIRO
+{
+ DECLARE_UNWIND
+
+public:
+ CDLLStaticLock ( CDLLStaticMutexSem& dmxs );
+ ~CDLLStaticLock ();
+private:
+ CDLLStaticMutexSem& _dmxs;
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDLLStaticMutexSem::CDLLStaticMutexSem, public
+//
+// Synopsis: Mutex semaphore constructor
+//
+// Effects: Initializes the semaphores data
+//
+// History: 14-Jun-91 AlexT Created.
+//
+//----------------------------------------------------------------------------
+
+inline CDLLStaticMutexSem::CDLLStaticMutexSem()
+{
+ Init();
+}
+
+inline CDLLStaticMutexSem::Init()
+{
+ InitializeCriticalSection(&_cs);
+ return TRUE;
+};
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDLLStaticMutexSem::~CDLLStaticMutexSem, public
+//
+// Synopsis: Mutex semaphore destructor
+//
+// Effects: Releases semaphore data
+//
+// History: 14-Jun-91 AlexT Created.
+//
+//----------------------------------------------------------------------------
+
+inline CDLLStaticMutexSem::~CDLLStaticMutexSem()
+{
+ // We can not delete the Critical Section as it may still
+ // Be called by someother DLL.
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDLLStaticMutexSem::Request, public
+//
+// Synopsis: Acquire semaphore
+//
+// Effects: Asserts correct owner
+//
+// Arguments: [dwMilliseconds] -- Timeout value
+//
+// History: 14-Jun-91 AlexT Created.
+//
+// Notes: Uses GetCurrentTask to establish the semaphore owner, but
+// written to work even if GetCurrentTask fails.
+//
+//----------------------------------------------------------------------------
+
+inline SEMRESULT CDLLStaticMutexSem::Request(DWORD dwMilliseconds)
+{
+ dwMilliseconds;
+
+ EnterCriticalSection(&_cs);
+ return(SEMSUCCESS);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDLLStaticMutexSem::Release, public
+//
+// Synopsis: Release semaphore
+//
+// Effects: Asserts correct owner
+//
+// History: 14-Jun-91 AlexT Created.
+//
+// Notes: Uses GetCurrentTask to establish the semaphore owner, but
+// written to work even if GetCurrentTask fails.
+//
+//----------------------------------------------------------------------------
+
+inline void CDLLStaticMutexSem::Release()
+{
+ LeaveCriticalSection(&_cs);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDLLStaticLock::CDLLStaticLock
+//
+// Synopsis: Acquire semaphore
+//
+// History: 02-Oct-91 BartoszM Created.
+//
+//----------------------------------------------------------------------------
+
+inline CDLLStaticLock::CDLLStaticLock ( CDLLStaticMutexSem& dmxs )
+: _dmxs ( dmxs )
+{
+ _dmxs.Request ( INFINITE );
+ END_CONSTRUCTION (CDLLStaticLock);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CDLLStaticLock::~CDLLStaticLock
+//
+// Synopsis: Release semaphore
+//
+// History: 02-Oct-91 BartoszM Created.
+//
+//----------------------------------------------------------------------------
+
+inline CDLLStaticLock::~CDLLStaticLock ()
+{
+ _dmxs.Release();
+}
+
+
+#endif /* __DLLSEM_HXX__ */
diff --git a/public/sdk/inc/dplay.h b/public/sdk/inc/dplay.h
new file mode 100644
index 000000000..9fea18c0d
--- /dev/null
+++ b/public/sdk/inc/dplay.h
@@ -0,0 +1,309 @@
+/*==========================================================================;
+ *
+ * Copyright (C) 1994-1995 Microsoft Corporation. All Rights Reserved.
+ *
+ * File: dplay.h
+ * Content: DirectPlay include file
+ *
+ ***************************************************************************/
+
+#ifndef __DPLAY_INCLUDED__
+#define __DPLAY_INCLUDED__
+#ifdef _WIN32
+/* for DECLARE_INTERFACE and HRESULT. */
+#include <ole2.h>
+#endif
+
+#define _FACDP 0x877
+#define MAKE_DPHRESULT( code ) MAKE_HRESULT( 1, _FACDP, code )
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#pragma pack(push, 1)
+
+
+/*============================================================================
+ *
+ * DirectPlay Structures
+ *
+ * Various structures used to invoke DirectPlay.
+ *
+ *==========================================================================*/
+
+#ifdef __cplusplus
+/* 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined */
+struct IDirectPlay;
+typedef struct IDirectPlay FAR *LPDIRECTPLAY;
+#else
+typedef struct IDirectPlay FAR *LPDIRECTPLAY;
+#endif
+
+typedef DWORD DPID, FAR *LPDPID;
+
+typedef struct _DPCAPS
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwMaxBufferSize;
+ DWORD dwMaxQueueSize; // Function of DPlay, not SP.
+ DWORD dwMaxPlayers;
+ DWORD dwHundredBaud; // 24 is 2400, 96 is 9600, etc.
+ DWORD dwLatency;
+} DPCAPS;
+
+typedef DPCAPS FAR *LPDPCAPS;
+
+#define DPLONGNAMELEN 52
+#define DPSHORTNAMELEN 20
+#define DPSESSIONNAMELEN 32
+#define DPPASSWORDLEN 16
+#define DPUSERRESERVED 16
+
+typedef struct
+{
+ DWORD dwSize;
+ GUID guidSession; // Id for Game. Null is all games.
+ DWORD dwSession; // session identifier
+ DWORD dwMaxPlayers; // Maximum players allowed in game.
+ DWORD dwCurrentPlayers; // Current players in Game.
+ DWORD dwFlags; // DPOPEN_* flags
+ char szSessionName[DPSESSIONNAMELEN];// Human readable name for Game
+ char szUserField[DPUSERRESERVED];
+ DWORD dwReserved1; // Reserved for future MS use.
+ char szPassword[DPPASSWORDLEN]; // Password to be allowed into game.
+ DWORD dwReserved2; // Reserved for future MS use.
+ DWORD dwUser1;
+ DWORD dwUser2;
+ DWORD dwUser3;
+ DWORD dwUser4;
+} DPSESSIONDESC;
+typedef DPSESSIONDESC FAR *LPDPSESSIONDESC;
+
+
+/*
+ * Create API
+ */
+typedef BOOL (FAR PASCAL * LPDPENUMDPCALLBACK)(
+ LPGUID lpSPGuid,
+ LPSTR lpFriendlyName,
+ DWORD dwMajorVersion,
+ DWORD dwMinorVersion,
+ LPVOID lpContext);
+
+typedef BOOL (FAR PASCAL * LPDPENUMSESSIONSCALLBACK)(
+ LPDPSESSIONDESC lpDPSGameDesc,
+ LPVOID lpContext,
+ LPDWORD lpdwTimeOut,
+ DWORD dwFlags);
+
+
+
+extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY FAR *lplpDP, IUnknown FAR *pUnk);
+extern HRESULT WINAPI DirectPlayEnumerate( LPDPENUMDPCALLBACK, LPVOID );
+
+
+/* Player enumeration callback prototype */
+typedef BOOL (FAR PASCAL *LPDPENUMPLAYERSCALLBACK)(
+ DPID dpId,
+ LPSTR lpFriendlyName,
+ LPSTR lpFormalName,
+ DWORD dwFlags,
+ LPVOID lpContext );
+
+/*
+ * IDirectPlay
+ */
+#undef INTERFACE
+#define INTERFACE IDirectPlay
+#ifdef _WIN32
+DECLARE_INTERFACE_( IDirectPlay, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectPlay methods ***/
+ STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPSTR,LPSTR,LPHANDLE) PURE;
+ STDMETHOD(CreateGroup) (THIS_ LPDPID,LPSTR,LPSTR) PURE;
+ STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
+ STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
+ STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
+ STDMETHOD(EnableNewPlayers) (THIS_ BOOL) PURE;
+ STDMETHOD(EnumGroupPlayers) (THIS_ DPID, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumGroups) (THIS_ DWORD, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumPlayers) (THIS_ DWORD, LPDPENUMPLAYERSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC,DWORD,LPDPENUMSESSIONSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(GetCaps) (THIS_ LPDPCAPS) PURE;
+ STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
+ STDMETHOD(GetPlayerCaps) (THIS_ DPID, LPDPCAPS) PURE;
+ STDMETHOD(GetPlayerName) (THIS_ DPID,LPSTR,LPDWORD,LPSTR,LPDWORD) PURE;
+ STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
+ STDMETHOD(Open) (THIS_ LPDPSESSIONDESC) PURE;
+ STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
+ STDMETHOD(SaveSession) (THIS_ LPSTR) PURE;
+ STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
+ STDMETHOD(SetPlayerName) (THIS_ DPID,LPSTR,LPSTR) PURE;
+};
+#endif
+
+
+
+
+/****************************************************************************
+ *
+ * DIRECTPLAY ERRORS
+ *
+ * Errors are represented by negative values and cannot be combined.
+ *
+ ****************************************************************************/
+#define DP_OK 0
+#define DPERR_ALREADYINITIALIZED MAKE_DPHRESULT( 5 )
+#define DPERR_ACCESSDENIED MAKE_DPHRESULT( 10 )
+#define DPERR_ACTIVEPLAYERS MAKE_DPHRESULT( 20 )
+#define DPERR_BUFFERTOOSMALL MAKE_DPHRESULT( 30 )
+#define DPERR_CANTADDPLAYER MAKE_DPHRESULT( 40 )
+#define DPERR_CANTCREATEGROUP MAKE_DPHRESULT( 50 )
+#define DPERR_CANTCREATEPLAYER MAKE_DPHRESULT( 60 )
+#define DPERR_CANTCREATESESSION MAKE_DPHRESULT( 70 )
+#define DPERR_CAPSNOTAVAILABLEYET MAKE_DPHRESULT( 80 )
+#define DPERR_EXCEPTION MAKE_DPHRESULT( 90 )
+#define DPERR_GENERIC E_FAIL
+
+#define DPERR_INVALIDFLAGS MAKE_DPHRESULT( 120 )
+#define DPERR_INVALIDOBJECT MAKE_DPHRESULT( 130 )
+#define DPERR_INVALIDPARAM E_INVALIDARG
+#define DPERR_INVALIDPARAMS DPERR_INVALIDPARAM
+#define DPERR_INVALIDPLAYER MAKE_DPHRESULT( 150 )
+#define DPERR_NOCAPS MAKE_DPHRESULT( 160 )
+#define DPERR_NOCONNECTION MAKE_DPHRESULT( 170 )
+#define DPERR_NOMEMORY E_OUTOFMEMORY
+#define DPERR_OUTOFMEMORY DPERR_NOMEMORY
+#define DPERR_NOMESSAGES MAKE_DPHRESULT( 190 )
+#define DPERR_NONAMESERVERFOUND MAKE_DPHRESULT( 200 )
+#define DPERR_NOPLAYERS MAKE_DPHRESULT( 210 )
+#define DPERR_NOSESSIONS MAKE_DPHRESULT( 220 )
+#define DPERR_SENDTOOBIG MAKE_DPHRESULT( 230 )
+#define DPERR_TIMEOUT MAKE_DPHRESULT( 240 )
+#define DPERR_UNAVAILABLE MAKE_DPHRESULT( 250 )
+#define DPERR_UNSUPPORTED E_NOTIMPL
+#define DPERR_BUSY MAKE_DPHRESULT( 270 )
+#define DPERR_USERCANCEL MAKE_DPHRESULT( 280 )
+
+
+#define DPOPEN_OPENSESSION 0x00000001
+#define DPOPEN_CREATESESSION 0x00000002
+
+#define DPSEND_GUARANTEE 0x00000001
+#define DPSEND_HIGHPRIORITY 0x00000002
+#define DPSEND_TRYONCE 0x00000004
+
+#define DPRECEIVE_ALL 0x00000001
+#define DPRECEIVE_TOPLAYER 0x00000002
+#define DPRECEIVE_FROMPLAYER 0x00000004
+#define DPRECEIVE_PEEK 0x00000008
+
+#define DPCAPS_NAMESERVICE 0x00000001 // A name server is supported.
+#define DPCAPS_NAMESERVER 0x00000002 // You are the name server.
+#define DPCAPS_GUARANTEED 0x00000004 // SP's don't have to implement guarantees.
+
+#define DPENUMSESSIONS_AVAILABLE 0x00000001 // All games that match password (if given)
+ // and have openings.
+#define DPENUMSESSIONS_ALL 0x00000002
+#define DPENUMSESSIONS_PREVIOUS 0x00000004
+
+#define DPENUMPLAYERS_ALL 0x00000000
+#define DPENUMPLAYERS_PREVIOUS 0x00000004
+#define DPENUMPLAYERS_LOCAL 0x00000008
+#define DPENUMPLAYERS_REMOTE 0x00000010
+#define DPENUMPLAYERS_GROUP 0x00000020
+#define DPENUMPLAYERS_SESSION 0x00000080
+
+//
+// This flag is set on the enumsessions callback when the time out has occured.
+// This means that there is no session data for this callback.
+// If lpdwTimeOut is set to a non-zero value and the EnumSessionsCallback returns
+// TRUE then EnumSessions will continue until the next timeout occurs.
+// Timeouts are in milliseconds.
+
+#define DPESC_TIMEDOUT 0x00000001
+
+
+//
+// System message structures and types.
+//
+// System messages have a leading 4 byte type code to identify the message.
+// an app knows it is a system message because it is addressed 'To' player 0.
+//
+
+
+#define DPSYS_ADDPLAYER 0x0003 // DPMSG_ADDPLAYER
+#define DPSYS_DELETEPLAYER 0x0005 // DPMSG_DELETEPLAYER
+
+#define DPSYS_ADDPLAYERTOGROUP 0x0007 // DPMSG_GROUPADD
+
+#define DPSYS_INVITE 0x000e // DPMSG_INVITE, Net only.
+
+#define DPSYS_DELETEGROUP 0x0020 // DPMSG_DELETEPLAYER
+#define DPSYS_DELETEPLAYERFROMGRP 0x0021 // DPMSG_GROUPDELETE
+#define DPSYS_SESSIONLOST 0x0031
+
+#define DPSYS_CONNECT 0x484b // DPMSG_GENERIC
+
+
+
+typedef struct
+{
+ DWORD dwType;
+ DWORD dwPlayerType;
+ DPID dpId;
+ char szLongName[DPLONGNAMELEN];
+ char szShortName[DPSHORTNAMELEN];
+ DWORD dwCurrentPlayers;
+} DPMSG_ADDPLAYER;
+
+typedef DPMSG_ADDPLAYER DPMSG_ADDGROUP;
+
+typedef struct
+{
+ DWORD dwType;
+ DPID dpIdGroup;
+ DPID dpIdPlayer;
+} DPMSG_GROUPADD;
+
+typedef DPMSG_GROUPADD DPMSG_GROUPDELETE;
+typedef struct
+{
+ DWORD dwType;
+ DPID dpId;
+} DPMSG_DELETEPLAYER;
+
+typedef struct
+{
+ DWORD dwType;
+ DPSESSIONDESC dpsDesc;
+} DPMSG_INVITE;
+
+
+
+typedef struct
+{
+ DWORD dwType;
+} DPMSG_GENERIC;
+
+#pragma pack(pop)
+
+
+DEFINE_GUID( IID_IDirectPlay, 0x5454e9a0, 0xdb65, 0x11ce, 0x92, 0x1c, 0x00, 0xaa, 0x00, 0x6c, 0x49, 0x72);
+
+
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif
+
diff --git a/public/sdk/inc/drivinit.h b/public/sdk/inc/drivinit.h
new file mode 100644
index 000000000..0a4574938
--- /dev/null
+++ b/public/sdk/inc/drivinit.h
@@ -0,0 +1,11 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: drivinit.h
+//
+//----------------------------------------------------------------------------
+
+// All items moved to wingdi.h
+
diff --git a/public/sdk/inc/drpsrc.h b/public/sdk/inc/drpsrc.h
new file mode 100644
index 000000000..8bb2552cb
--- /dev/null
+++ b/public/sdk/inc/drpsrc.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: drpsrc.h
+//
+// Contents: Replacement for drpsrc.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/drptgt.h b/public/sdk/inc/drptgt.h
new file mode 100644
index 000000000..de7d7e8ed
--- /dev/null
+++ b/public/sdk/inc/drptgt.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: drptgt.h
+//
+// Contents: Replacement for drptgt.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/dsapi.h b/public/sdk/inc/dsapi.h
new file mode 100644
index 000000000..c14b3dd32
--- /dev/null
+++ b/public/sdk/inc/dsapi.h
@@ -0,0 +1,403 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: DSAPI.H
+//
+// Contents: DS API signatures and the like
+//
+// History: 7-Jun-93 ArnoldM Created
+// 03-Aug-94 AlokS Rewrote to adjust to new
+// calling convention/performance
+// enhancements
+// 08-Aug-94 AlokS Added DSConvertNameToPath() and
+// DSParseDsName() APIs
+//--------------------------------------------------------------------------
+
+#if !defined( __DSAPI_H__ )
+#define __DSAPI_H__
+
+#if !defined(_DSSYSTEM_)
+# define DSEXPORT DECLSPEC_IMPORT
+#else
+# define DSEXPORT
+#endif
+
+#include <dsstate.h>
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetMachineWeight
+//
+// Synopsis: Returns the weight of the machine.
+//
+// Arguments: [pdWeight] -- The weight is returned here
+//
+// Returns: DS_E_KEY_NOT_FOUND, on error
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI DSGetMachineWeight(PDWORD pdWeight);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSetMachineWeight
+//
+// Synopsis: Sets the weight of the machine.
+//
+// Arguments: [dWeight] -- The weight
+//
+// Returns: DS_E_KEY_NOT_FOUND, on error
+// DS_E_INCORRECT_CONFIGURATION if invalid weight given
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI DSSetMachineWeight(DWORD dWeight);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetDSState
+//
+// Synopsis: Returns the state of the machine as far as DSYS components
+// are concerned. E.g. 'standalone' or 'workstation'
+//
+// Arguments: [pState] -- The state is returned here
+//
+// Returns: DS_E_KEY_NOT_FOUND, on error
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI DSGetDSState(DS_MACHINE_STATE * pState);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetDomainID
+//
+// Synopsis: Returns the domain ID of the domain in which this
+// workstation or DC belongs. For standalone machines,
+// the local machine ID is returned.
+//
+// Arguments: [pgGuid] -- The guid is returned here
+//
+// Returns: DS_E_KEY_NOT_FOUND, when Domain ID is not present
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI DSGetDomainID(GUID * pgGuid);
+
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetMachineID
+//
+// Synopsis: Returns the local machine ID
+//
+// Arguments: [pgGuid] -- The guid is returned here
+//
+// Returns: DS_E_KEY_NOT_FOUND, when machine ID is not set
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI DSGetMachineID(GUID * pgGuid);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetSiteID
+//
+// Synopsis: Returns the local site in which this workstation or DC
+// belongs. This call will return an error for standalone.
+//
+// Arguments: [pgGuid] -- The guid is returned here
+//
+// Returns: DS_E_KEY_NOT_FOUND, on error
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI DSGetSiteID(GUID * pgGuid);
+
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetTimeSyncState
+//
+// Synopsis: Get the time sync state.
+//
+// Each machine, including the DC, can be in one of the two
+// Time Sync States as shown below:
+// Time Sync Type Time Sync State Value
+// --------------- ----------------------
+// A. Machine is reliable TRUE
+// source of time
+//
+// B. Machine time is NOT FALSE
+// reliable source of time
+//
+//
+// Arguments: [pfState] -- TRUE/FALSE return in this
+//
+// Returns: DS_E_KEY_NOT_FOUND, on error
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+
+DSEXPORT STDAPI DSGetTimeSyncState ( BOOL *pfState);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSSetTimeSyncState
+//
+// Synopsis: Set the time sync state.
+//
+// Each machine, including the DC, can be in one of the two
+// Time Sync States as shown below:
+// Time Sync Type Time Sync State Value
+// --------------- ----------------------
+// A. Machine is reliable TRUE
+// source of time
+//
+// B. Machine time is NOT FALSE
+// reliable source of time
+//
+//
+// Arguments: [fState] -- The state to be set.
+//
+// Returns: DS_E_KEY_NOT_FOUND, on error
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI DSSetTimeSyncState ( BOOL fState);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetLocalDsRoot
+//
+// Synopsis: Returns a drive based path to the local DS container
+//
+// Arguments: [pwszRoot] -- A path is return here.
+// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszRoot.
+// If size is not large enough, correct size
+// is returned via this parameter
+//
+// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough
+// DS_E_KEY_NOT_FOUND, on other errors
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI
+ DSGetLocalDsRoot(LPWSTR pwszRoot, LPDWORD lpdwBufSize);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetDomainDsRoot
+//
+// Synopsis: Returns a drive based path to the domain DS container on DC.
+// Not valid on non-DC Cairo setup configurations
+//
+// Arguments: [pwszRoot] -- A path is return here.
+// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszRoot.
+// If size is not large enough, correct size
+// is returned via this parameter
+//
+// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough
+// DS_E_KEY_NOT_FOUND, on other errors
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI
+ DSGetDomainDsRoot (LPWSTR pwszRoot, LPDWORD lpdwBufSize);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetDomainName
+//
+// Synopsis: Returns the domain name in all configurations.
+// Thus, on workstation, it might return "\wpg\sys.." whereas
+// in standalone, it will return "<computer name>"
+//
+// Arguments: [pwszName] -- The Domain Name is return here.
+// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszName'.
+// If size is not large enough, correct size
+// is returned via this parameter
+//
+// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough
+// DS_E_KEY_NOT_FOUND, on other errors
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI
+ DSGetDomainName (LPWSTR pwszName, LPDWORD lpdwBufSize);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetDownlevelDomainName
+//
+// Synopsis: Returns the downlevel domain name in all configurations.
+// Thus, on workstation, it might return "redmond" whereas
+// in standalone, it will return the workgroup name
+//
+// Arguments: [pwszName] -- The Domain Name is return here.
+// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszName'.
+// If size is not large enough, correct size
+// is returned via this parameter
+//
+// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough
+// DS_E_KEY_NOT_FOUND, on other errors
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI
+ DSGetDownlevelDomainName (LPWSTR pwszName, LPDWORD lpdwBufSize);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetDownlevelDomainSid
+//
+// Synopsis: Returns the downlevel domain name in all configurations.
+// The sid is only valid on standalone installations, though.
+//
+// Arguments: [ppDomainSid] -- The Domain Sid is return here, allocated
+// with CoTaskMemAlloc
+//
+// Returns: E_OUTOFMEMORY - not enough memory to retrieve the SID
+// DS_E_KEY_NOT_FOUND, on other errors
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI
+ DSGetDownlevelDomainSid (PSID * ppDomainSid);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSSetDownlevelDomainSid
+//
+// Synopsis: Sets the downlevel domain sid in all configurations.
+// This sid will only be valid on standalone installations,
+// in which case it indicates that the machine is a member
+// of an NT domain.
+//
+// Arguments: [pDomainSid] -- The Domain Sid is return here. If this is
+// NULL the API deletes the downlevel domain
+// SID value.
+//
+// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough
+// DS_E_KEY_NOT_FOUND, on other errors
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI
+ DSSetDownlevelDomainSid (PSID pDomainSid);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSGetMachineName
+//
+// Synopsis: Returns the Distinguished Name(DN) of the machine.
+// Thus, on workstation, it might return
+// "\wpg\sys..\aloksdev" whereas on standalone,
+// it will return "<computer name>"
+//
+// Arguments: [pwszName] -- The Machine Name is return here.
+// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszName'.
+// If size is not large enough, correct size
+// is returned via this parameter
+//
+// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// DS_E_KEY_NOT_FOUND, when the machine name is not present
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI
+ DSGetMachineName (LPWSTR pwszName, LPDWORD lpdwBufSize);
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSConvertNameToPath
+//
+// Synopsis: Converts a DS name to a path so that any WIN32 API
+// can be used on it.
+//
+// Arguments: [pwszName] -- A principal name e.g. \wpg\sys\cairo or
+// aloksdev\aloks
+// [pwszPath] -- A WIN32 path will returned here which
+// can of form <drive letter>:<path> or
+// <UNC name>\<path>
+// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszPath'.
+// If size is not large enough, correct size
+// is returned via this parameter
+//
+// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough
+// DS_E_INVALID_PARAMETER, when passed parameters are incorrect
+// DS_E_NOT_LOCAL_NAME, when the name can't be parsed based on local DS
+// information
+// S_OK - if successful.
+//
+// Note: The API will need to be fixed when NT/Cairo inter-op
+// works and we can potentially be given a string of form
+// "Redmond\aloks".
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI DSConvertNameToPath ( IN LPCWSTR pwszName,
+ OUT LPWSTR pwszPath,
+ IN OUT LPDWORD lpdwBufSize
+ );
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSParseDsName
+//
+// Synopsis: Cracks a DS name into a Domain and domain-relative
+// name.
+//
+// Arguments: [pwszName] -- A principal name
+// e.g. \wpg\sys\cairo\dev\aloks or
+// aloksdev\aloks
+// [lpdwDomNameLen]-- This contains the length of the domain
+// name.
+// (a) a count of characters not bytes is returned, and
+// (b) excludes the backslash which separates the
+// domain part from the domain-relative path.
+//
+// Returns: DS_E_INVALID_PARAMETER, when passed parameters are incorrect,
+// DS_E_NOT_LOCAL_NAME, when the name can't be parsed based on local DS
+// information
+// S_OK - if successful.
+//
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI DSParseDsName ( IN LPCWSTR pwszName,
+ IN OUT LPDWORD lpdwDomNameLen
+ );
+
+//+----------------------------------------------------------------------------
+//
+// Function: DSReconcileUser, private
+//
+// Synopsis: Reconcile the local replica's of user object(s) with
+// those on the DC. This is not valid for standalone.
+// Note: Only primary users have local replica's on a given
+// workstation. For non-primary user's the function
+// call is a noop and returns S_OK.
+//
+// Arguments: [pwszDomainName] -- The full domain name (including OU name)
+// of the user. e.g. '\wpg\sys\cairo\dev'
+// [pwszUserName] -- The user name relative to the OU
+// e.g. 'aloks'
+//
+// Returns:
+// S_OK - if successful.
+//
+// Note: Nobody should need to call this except for WinLogon
+//-----------------------------------------------------------------------------
+DSEXPORT STDAPI
+ DSReconcileUser (LPCWSTR pwszDomainName,LPCWSTR pwszUserName);
+#endif // __DSAPI_H__
diff --git a/public/sdk/inc/dsound.h b/public/sdk/inc/dsound.h
new file mode 100644
index 000000000..d9675f246
--- /dev/null
+++ b/public/sdk/inc/dsound.h
@@ -0,0 +1,366 @@
+/*==========================================================================;
+ *
+ * Copyright (C) 1995,1996 Microsoft Corporation. All Rights Reserved.
+ *
+ * File: dsound.h
+ * Content: DirectSound include file
+ *
+ ***************************************************************************/
+
+#ifndef __DSOUND_INCLUDED__
+#define __DSOUND_INCLUDED__
+
+#ifdef _WIN32
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+#endif
+
+#define _FACDS 0x878
+#define MAKE_DSHRESULT( code ) MAKE_HRESULT( 1, _FACDS, code )
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Direct Sound Component GUID {47D4D946-62E8-11cf-93BC-444553540000}
+DEFINE_GUID(CLSID_DirectSound,
+0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0);
+
+// DirectSound 279afa83-4981-11ce-a521-0020af0be560
+DEFINE_GUID(IID_IDirectSound,0x279AFA83,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
+// DirectSoundBuffer 279afa85-4981-11ce-a521-0020af0be560
+DEFINE_GUID(IID_IDirectSoundBuffer,0x279AFA85,0x4981,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60);
+
+
+
+//==========================================================================;
+//
+// Structures...
+//
+//==========================================================================;
+#ifdef __cplusplus
+/* 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined */
+struct IDirectSound;
+struct IDirectSoundBuffer;
+#endif
+
+typedef struct IDirectSound *LPDIRECTSOUND;
+typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER;
+typedef struct IDirectSoundBuffer **LPLPDIRECTSOUNDBUFFER;
+
+
+typedef struct _DSCAPS
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwMinSecondarySampleRate;
+ DWORD dwMaxSecondarySampleRate;
+ DWORD dwPrimaryBuffers;
+ DWORD dwMaxHwMixingAllBuffers;
+ DWORD dwMaxHwMixingStaticBuffers;
+ DWORD dwMaxHwMixingStreamingBuffers;
+ DWORD dwFreeHwMixingAllBuffers;
+ DWORD dwFreeHwMixingStaticBuffers;
+ DWORD dwFreeHwMixingStreamingBuffers;
+ DWORD dwMaxHw3DAllBuffers;
+ DWORD dwMaxHw3DStaticBuffers;
+ DWORD dwMaxHw3DStreamingBuffers;
+ DWORD dwFreeHw3DAllBuffers;
+ DWORD dwFreeHw3DStaticBuffers;
+ DWORD dwFreeHw3DStreamingBuffers;
+ DWORD dwTotalHwMemBytes;
+ DWORD dwFreeHwMemBytes;
+ DWORD dwMaxContigFreeHwMemBytes;
+ DWORD dwUnlockTransferRateHwBuffers;
+ DWORD dwPlayCpuOverheadSwBuffers;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} DSCAPS, *LPDSCAPS;
+
+typedef struct _DSBCAPS
+{
+
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwBufferBytes;
+ DWORD dwUnlockTransferRate;
+ DWORD dwPlayCpuOverhead;
+} DSBCAPS, *LPDSBCAPS;
+
+typedef struct _DSBUFFERDESC
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwBufferBytes;
+ DWORD dwReserved;
+ LPWAVEFORMATEX lpwfxFormat;
+} DSBUFFERDESC, *LPDSBUFFERDESC;
+
+
+
+typedef LPVOID* LPLPVOID;
+
+
+typedef BOOL (FAR PASCAL * LPDSENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID);
+typedef BOOL (FAR PASCAL * LPDSENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
+
+extern HRESULT WINAPI DirectSoundCreate(GUID FAR * lpGUID, LPDIRECTSOUND * ppDS, IUnknown FAR *pUnkOuter );
+extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW lpCallback, LPVOID lpContext );
+extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA lpCallback, LPVOID lpContext );
+
+#ifdef UNICODE
+#define LPDSENUMCALLBACK LPDSENUMCALLBACKW
+#define DirectSoundEnumerate DirectSoundEnumerateW
+#else
+#define LPDSENUMCALLBACK LPDSENUMCALLBACKA
+#define DirectSoundEnumerate DirectSoundEnumerateA
+#endif
+
+//
+// IDirectSound
+//
+#undef INTERFACE
+#define INTERFACE IDirectSound
+#ifdef _WIN32
+DECLARE_INTERFACE_( IDirectSound, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectSound methods ***/
+
+ STDMETHOD( CreateSoundBuffer)(THIS_ LPDSBUFFERDESC, LPLPDIRECTSOUNDBUFFER, IUnknown FAR *) PURE;
+ STDMETHOD( GetCaps)(THIS_ LPDSCAPS ) PURE;
+ STDMETHOD( DuplicateSoundBuffer)(THIS_ LPDIRECTSOUNDBUFFER, LPLPDIRECTSOUNDBUFFER ) PURE;
+ STDMETHOD( SetCooperativeLevel)(THIS_ HWND, DWORD ) PURE;
+ STDMETHOD( Compact)(THIS ) PURE;
+ STDMETHOD( GetSpeakerConfig)(THIS_ LPDWORD ) PURE;
+ STDMETHOD( SetSpeakerConfig)(THIS_ DWORD ) PURE;
+ STDMETHOD( Initialize)(THIS_ GUID FAR * ) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectSound_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSound_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectSound_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c)
+#define IDirectSound_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b)
+#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectSound_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectSound_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a)
+#define IDirectSound_SetSpeakerConfig(p,b) (p)->lpVtbl->SetSpeakerConfig(p,b)
+#define IDirectSound_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#endif
+
+#endif
+
+//
+// IDirectSoundBuffer
+//
+#undef INTERFACE
+#define INTERFACE IDirectSoundBuffer
+#ifdef _WIN32
+DECLARE_INTERFACE_( IDirectSoundBuffer, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectSoundBuffer methods ***/
+
+ STDMETHOD( GetCaps)(THIS_ LPDSBCAPS ) PURE;
+ STDMETHOD(GetCurrentPosition)(THIS_ LPDWORD,LPDWORD ) PURE;
+ STDMETHOD( GetFormat)(THIS_ LPWAVEFORMATEX, DWORD, LPDWORD ) PURE;
+ STDMETHOD( GetVolume)(THIS_ LPLONG ) PURE;
+ STDMETHOD( GetPan)(THIS_ LPLONG ) PURE;
+ STDMETHOD( GetFrequency)(THIS_ LPDWORD ) PURE;
+ STDMETHOD( GetStatus)(THIS_ LPDWORD ) PURE;
+ STDMETHOD( Initialize)(THIS_ LPDIRECTSOUND, LPDSBUFFERDESC ) PURE;
+ STDMETHOD( Lock)(THIS_ DWORD,DWORD,LPVOID,LPDWORD,LPVOID,LPDWORD,DWORD ) PURE;
+ STDMETHOD( Play)(THIS_ DWORD,DWORD,DWORD ) PURE;
+ STDMETHOD(SetCurrentPosition)(THIS_ DWORD ) PURE;
+ STDMETHOD( SetFormat)(THIS_ LPWAVEFORMATEX ) PURE;
+ STDMETHOD( SetVolume)(THIS_ LONG ) PURE;
+ STDMETHOD( SetPan)(THIS_ LONG ) PURE;
+ STDMETHOD( SetFrequency)(THIS_ DWORD ) PURE;
+ STDMETHOD( Stop)(THIS ) PURE;
+ STDMETHOD( Unlock)(THIS_ LPVOID,DWORD,LPVOID,DWORD ) PURE;
+ STDMETHOD( Restore)(THIS ) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectSoundBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectSoundBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectSoundBuffer_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectSoundBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b)
+#define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c)
+#define IDirectSoundBuffer_GetVolume(p,a) (p)->lpVtbl->GetVolume(p,a)
+#define IDirectSoundBuffer_GetPan(p,a) (p)->lpVtbl->GetPan(p,a)
+#define IDirectSoundBuffer_GetFrequency(p,a) (p)->lpVtbl->GetFrequency(p,a)
+#define IDirectSoundBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a)
+#define IDirectSoundBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g)
+#define IDirectSoundBuffer_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c)
+#define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->lpVtbl->SetCurrentPosition(p,a)
+#define IDirectSoundBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a)
+#define IDirectSoundBuffer_SetVolume(p,a) (p)->lpVtbl->SetVolume(p,a)
+#define IDirectSoundBuffer_SetPan(p,a) (p)->lpVtbl->SetPan(p,a)
+#define IDirectSoundBuffer_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a)
+#define IDirectSoundBuffer_Stop(p) (p)->lpVtbl->Stop(p)
+#define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d)
+#define IDirectSoundBuffer_Restore(p) (p)->lpVtbl->Restore(p)
+#endif
+
+#endif
+
+
+
+/*
+ * Return Codes
+ */
+
+#define DS_OK 0
+
+/*
+ * The call failed because resources (such as a priority level)
+ * were already being used by another caller.
+ */
+#define DSERR_ALLOCATED MAKE_DSHRESULT( 10 )
+/*
+ * The control (vol,pan,etc.) requested by the caller is not available.
+ */
+#define DSERR_CONTROLUNAVAIL MAKE_DSHRESULT( 30 )
+/*
+ * An invalid parameter was passed to the returning function
+ */
+#define DSERR_INVALIDPARAM E_INVALIDARG
+/*
+ * This call is not valid for the current state of this object
+ */
+#define DSERR_INVALIDCALL MAKE_DSHRESULT( 50 )
+/*
+ * An undetermined error occured inside the DSound subsystem
+ */
+#define DSERR_GENERIC E_FAIL
+/*
+ * The caller does not have the priority level required for the function to
+ * succeed.
+ */
+#define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT( 70 )
+/*
+ * The DSound subsystem couldn't allocate sufficient memory to complete the
+ * caller's request.
+ */
+#define DSERR_OUTOFMEMORY E_OUTOFMEMORY
+/*
+ * The specified WAVE format is not supported
+ */
+#define DSERR_BADFORMAT MAKE_DSHRESULT( 100 )
+/*
+ * The function called is not supported at this time
+ */
+#define DSERR_UNSUPPORTED E_NOTIMPL
+/*
+ * No sound driver is available for use
+ */
+#define DSERR_NODRIVER MAKE_DSHRESULT( 120 )
+/*
+ * This object is already initialized
+ */
+#define DSERR_ALREADYINITIALIZED MAKE_DSHRESULT( 130 )
+/*
+ * This object does not support aggregation
+ */
+#define DSERR_NOAGGREGATION CLASS_E_NOAGGREGATION
+/*
+ * The buffer memory has been lost, and must be Restored.
+ */
+#define DSERR_BUFFERLOST MAKE_DSHRESULT( 150 )
+/*
+ * Another app has a higher priority level, preventing this call from
+ * succeeding.
+ */
+#define DSERR_OTHERAPPHASPRIO MAKE_DSHRESULT( 160 )
+/*
+ * The Initialize() member on the Direct Sound Object has not been
+ * called or called successfully before calls to other members.
+ */
+#define DSERR_UNINITIALIZED MAKE_DSHRESULT( 170 )
+
+
+
+
+//==========================================================================;
+//
+// Flags...
+//
+//==========================================================================;
+
+#define DSCAPS_PRIMARYMONO 0x00000001
+#define DSCAPS_PRIMARYSTEREO 0x00000002
+#define DSCAPS_PRIMARY8BIT 0x00000004
+#define DSCAPS_PRIMARY16BIT 0x00000008
+#define DSCAPS_CONTINUOUSRATE 0x00000010
+#define DSCAPS_EMULDRIVER 0x00000020
+#define DSCAPS_CERTIFIED 0x00000040
+#define DSCAPS_SECONDARYMONO 0x00000100
+#define DSCAPS_SECONDARYSTEREO 0x00000200
+#define DSCAPS_SECONDARY8BIT 0x00000400
+#define DSCAPS_SECONDARY16BIT 0x00000800
+
+
+
+#define DSBPLAY_LOOPING 0x00000001
+
+
+
+#define DSBSTATUS_PLAYING 0x00000001
+#define DSBSTATUS_BUFFERLOST 0x00000002
+#define DSBSTATUS_LOOPING 0x00000004
+
+
+#define DSBLOCK_FROMWRITECURSOR 0x00000001
+
+
+
+#define DSSCL_NORMAL 1
+#define DSSCL_PRIORITY 2
+#define DSSCL_EXCLUSIVE 3
+#define DSSCL_WRITEPRIMARY 4
+
+
+
+#define DSBCAPS_PRIMARYBUFFER 0x00000001
+#define DSBCAPS_STATIC 0x00000002
+#define DSBCAPS_LOCHARDWARE 0x00000004
+#define DSBCAPS_LOCSOFTWARE 0x00000008
+#define DSBCAPS_CTRLFREQUENCY 0x00000020
+#define DSBCAPS_CTRLPAN 0x00000040
+#define DSBCAPS_CTRLVOLUME 0x00000080
+#define DSBCAPS_CTRLDEFAULT 0x000000E0 // Pan + volume + frequency.
+#define DSBCAPS_CTRLALL 0x000000E0 // All control capabilities
+#define DSBCAPS_STICKYFOCUS 0x00004000
+#define DSBCAPS_GETCURRENTPOSITION2 0x00010000 // More accurate play cursor under emulation
+
+
+
+
+#define DSSPEAKER_HEADPHONE 1
+#define DSSPEAKER_MONO 2
+#define DSSPEAKER_QUAD 3
+#define DSSPEAKER_STEREO 4
+#define DSSPEAKER_SURROUND 5
+
+
+
+
+
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* __DSOUND_INCLUDED__ */
diff --git a/public/sdk/inc/dsstate.h b/public/sdk/inc/dsstate.h
new file mode 100644
index 000000000..af7067d06
--- /dev/null
+++ b/public/sdk/inc/dsstate.h
@@ -0,0 +1,27 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: DSSTATE.H
+//
+// Contents: Defines the valid DS states
+//
+// History: 04-Aug-94 AlokS Separated out from dsapi.h
+//
+//--------------------------------------------------------------------------
+
+#if !defined( __DSSTATE_H__ )
+#define __DSSTATE_H__
+
+typedef enum {
+ DS_NOCAIRO = 0,
+ DS_STANDALONE,
+ DS_WKSTA,
+ DS_SERVER,
+ DS_DC,
+ DS_INCORRECT_STATE
+} DS_MACHINE_STATE;
+
+#endif // __DSSTATE_H__
+
diff --git a/public/sdk/inc/dvobj.h b/public/sdk/inc/dvobj.h
new file mode 100644
index 000000000..094ef9261
--- /dev/null
+++ b/public/sdk/inc/dvobj.h
@@ -0,0 +1,15 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: dvobj.h
+//
+//----------------------------------------------------------------------------
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: your code should include ole2.h instead of dvobj.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/efrmte.h b/public/sdk/inc/efrmte.h
new file mode 100644
index 000000000..aca519263
--- /dev/null
+++ b/public/sdk/inc/efrmte.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: efrmte.h
+//
+// Contents: Replacement for efrmte.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/emonkr.h b/public/sdk/inc/emonkr.h
new file mode 100644
index 000000000..7a072620f
--- /dev/null
+++ b/public/sdk/inc/emonkr.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: emonkr.h
+//
+// Contents: Replacement for emonkr.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/eoverb.h b/public/sdk/inc/eoverb.h
new file mode 100644
index 000000000..be100470c
--- /dev/null
+++ b/public/sdk/inc/eoverb.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: eoverb.h
+//
+// Contents: Replacement for eoverb.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/estatd.h b/public/sdk/inc/estatd.h
new file mode 100644
index 000000000..afc1fb068
--- /dev/null
+++ b/public/sdk/inc/estatd.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: estatd.h
+//
+// Contents: Replacement for estatd.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/estats.h b/public/sdk/inc/estats.h
new file mode 100644
index 000000000..e9ebc8659
--- /dev/null
+++ b/public/sdk/inc/estats.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: estats.h
+//
+// Contents: Replacement for estats.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/estrng.h b/public/sdk/inc/estrng.h
new file mode 100644
index 000000000..3b4401508
--- /dev/null
+++ b/public/sdk/inc/estrng.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: estrng.h
+//
+// Contents: Replacement for estrng.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/etype.h b/public/sdk/inc/etype.h
new file mode 100644
index 000000000..bac9e082d
--- /dev/null
+++ b/public/sdk/inc/etype.h
@@ -0,0 +1,91 @@
+/*****************************************************************************/
+/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/
+/*****************************************************************************/
+/*************************************************************************/
+/* FILE: @(#)etype.h 5.2 */
+/*
+ * THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. AND
+ * THUS CAN ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS INC.
+ * THIS FILE MAY NOT BE DISTRIBUTED.
+ */
+#include <stddef.h> /* has size_t */
+#include "ossdll.h"
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+typedef struct ossGlobal *_oss_WJJ;
+typedef unsigned short Etag;
+typedef struct efield *_oss_q;
+typedef struct etype *_oss_j;
+typedef struct eheader *_oss_HJJ;
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(push, ossPacking, 4)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack(1)
+#elif defined(__BORLANDC__) && defined(__MSDOS__)
+#pragma option -a1
+#elif defined(__BORLANDC__) && defined(__WIN32__)
+#pragma option -a4
+#elif defined(__IBMC__)
+#pragma pack(4)
+#endif /* _MSC_VER && _WIN32 */
+struct etype {
+ long _oss_Jw;
+ size_t _oss_Q;
+ size_t _oss_wQ;
+ char *_oss_Qw;
+ size_t _oss_HQ;
+ size_t _oss_qw;
+ unsigned short int _oss_Ww;
+ unsigned short int _oss_wW;
+ unsigned short int _oss_wQJ;
+ unsigned short int _oss_qQJ;
+ int _oss_Hw;
+ unsigned short int _oss_H;
+};
+struct efield {
+ size_t _oss_HH;
+ unsigned short int etype;
+ short int _oss_QJJ;
+ unsigned short int _oss_qH;
+ char _oss_jw;
+};
+struct ConstraintEntry {
+ char _oss_jQJ;
+ char _oss_WQ;
+ void *_oss_w;
+};
+struct InnerSubtypeEntry {
+ char _oss_HW;
+ unsigned char _oss_J;
+ unsigned short efield;
+ unsigned short _oss_w;
+};
+struct eheader {
+ void (DLL_ENTRY_FPTR *_System _oss_WH)(struct ossGlobal *);
+ long _oss_jW;
+ unsigned short int _oss_QQ;
+ unsigned short int _oss_J;
+ unsigned short int _oss_qW,
+ _oss_JQ;
+ unsigned short *_oss_QH;
+ _oss_j _oss_Qj;
+ _oss_q _oss_Wj;
+ void **_oss_Jj;
+ unsigned short *_oss_Q;
+ struct ConstraintEntry *_oss_H;
+ struct InnerSubtypeEntry *_oss_ww;
+ void *_oss_wH;
+ unsigned short _oss_jH;
+};
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(pop, ossPacking)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack()
+#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__))
+#pragma option -a.
+#elif defined(__IBMC__)
+#pragma pack()
+#endif /* _MSC_VER && _WIN32 */
+
diff --git a/public/sdk/inc/eunk.h b/public/sdk/inc/eunk.h
new file mode 100644
index 000000000..1bacaf246
--- /dev/null
+++ b/public/sdk/inc/eunk.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: eunk.h
+//
+// Contents: Replacement for eunk.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/except.hxx b/public/sdk/inc/except.hxx
new file mode 100644
index 000000000..80afa1c46
--- /dev/null
+++ b/public/sdk/inc/except.hxx
@@ -0,0 +1,1134 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1991 - 1992.
+//
+// File: Except.hxx
+//
+// Contents: Macro package for C++ exception support
+//
+// Classes: CException -- The base for all exception classes
+// CExceptionContext -- Per-thread exception context.
+// CUnwindable -- Classes with destructors inherit
+// from this.
+// CTry -- Per/TRY state.
+//
+// Functions: Macros to implement TRY ... CATCH
+// Macros to implement unwind for classes with destructors
+//
+// History: 22-May-91 KyleP Created Interface.
+// 15-Aug-91 SethuR modified THROW,CATCH,AND_CATCH,
+// END_CATCH macros
+// 18-Oct-91 KyleP Win32 try/except implementation
+// 20-Feb-92 KyleP Fixed destruction of classes with
+// virtual methods.
+// 03-Aug-92 KyleP Kernel implementation
+// 13-Nov-92 KyleP Bugfix destruction of heap classes.
+// Added assertion checking.
+// 27-May-93 Mackm Added definitions for un-exceptional
+// operator new.
+// 01-Jun-93 RobBear Added definitions for alloc hooking
+// 30-Sep-93 KyleP DEVL obsolete
+// 14-Dec-93 AlexT Add NOEXCEPTIONS support
+//
+//----------------------------------------------------------------------------
+
+#pragma warning(4:4509) // SEH used in function w/ _trycontext
+
+#ifndef __EXCEPT_HXX_
+#define __EXCEPT_HXX_
+
+#ifdef DISPLAY_INCLUDES
+#pragma message( "#include <" __FILE__ ">..." )
+#endif
+
+#if defined( KERNEL )
+# include <ntstatus.h>
+# include <stddef.h>
+#else // !KERNEL
+# include <memory.h>
+# include <stdlib.h>
+# include <string.h>
+# include <stdio.h>
+#endif
+
+#include <debnot.h>
+
+const int maxExceptionSize = 256;
+#define DEB_BUDDY 0x10000
+#define DEB_UNWIND 0x20000
+
+//
+// If EXCEPT_TEST is defined, then the exception code can be compiled
+// without use the the 'Win4 environment'. This is only to facilitate
+// testing. When EXCEPT_TEST is defined debug messages are printed
+// to stdout instead of the debug terminal.
+//
+
+//
+// REAL CODE -- REAL CODE -- REAL CODE -- REAL CODE
+//
+
+#ifndef EXCEPT_TEST
+//# if !defined( KERNEL )
+//# include <win4p.h>
+//# endif // !KERNEL
+# if (DBG == 1 || OFSDBG == 1)
+
+//
+// VERY UNUSUAL SITUATION:
+// Out xxxDebugOut macros are designed to be inline. This causes
+// a problem in exceptions because the _xxxInfoLevel flag which
+// determines if a message should be printed is not declared in
+// every DLL. So. Instead of calling the macro:
+//
+// DECLARE_DEBUG(ex)
+//
+// I will:
+
+void exInlineDebugOut2(unsigned long fDebugMask, char const *pszfmt, ...);
+
+// and then export this function from OSM.DLL (or whatever DLL
+// exports exception handling.
+//
+
+# define exDebugOut( x ) exInlineDebugOut2 x
+# define exAssert( x ) Win4Assert( x )
+# else // DBG == 0 && OFSDBG == 0
+# define exDebugOut( x )
+# define exAssert( x )
+# endif
+
+//
+// TEST ONLY -- TEST ONLY -- TEST ONLY -- TEST ONLY
+//
+
+#else // EXCEPT_TEST
+ typedef unsigned long ULONG;
+ typedef unsigned char BYTE;
+# define TRUE 1
+# include <assert.h>
+# define exAssert( x ) assert( (x) )
+
+# include <stdarg.h>
+inline void exInlineDebugOut( ULONG,
+ char * msg,
+ ... )
+{
+ va_list arglist;
+
+ va_start(arglist, msg);
+ vfprintf(stderr, msg, arglist);
+}
+
+# define exDebugOut( x ) exInlineDebugOut x
+
+
+# define _PopUpError( p1, p2, p3 ) 0xFFFFFFFF
+# define Win4ExceptionLevel 0xFFFFFFFF
+# define EXCEPT_MESSAGE 0x1
+# define EXCEPT_POPUP 0x0
+# define EXCEPT_BREAK 0x0
+# define DEB_FORCE 0x0
+# define DEB_WARN 0x0
+# define DEB_ERROR 0x0
+# define DEB_ITRACE 0x0
+
+#endif // EXCEPT_TEST
+
+//
+// END TEST -- END TEST -- END TEST -- END TEST
+//
+
+#if defined( WIN32 )
+# if !defined( KERNEL )
+# include <windows.h>
+# endif // !KERNEL
+#else // !WIN32
+# include <setjmp.h>
+#endif // WIN32
+
+class CTry;
+
+typedef void(*PFV)();
+
+extern void terminate();
+extern void unexpected();
+
+extern PFV set_terminate(PFV terminate_fn);
+extern PFV set_unexpected(PFV unexpected_fn);
+
+#if DBG==1 || OFSDBG == 1
+typedef BOOL (* ALLOC_HOOK)(size_t nSize);
+EXPORTDEF ALLOC_HOOK MemSetAllocHook( ALLOC_HOOK pfnAllocHook );
+
+extern EXPORTDEF void WINAPI
+ExceptionReport(
+ unsigned int iLine,
+ char *szFile,
+ char *szMsg);
+#endif // DBG == 1 || OFSDBG == 1
+
+//+---------------------------------------------------------------------------
+//
+// Class: CException
+//
+// Purpose: All exception objects (e.g. objects that are THROW)
+// inherit from CException.
+//
+// Interface: ~CException - Destructor
+// IsKindOf - Class membership query
+//
+// History: 22-May-91 KyleP Created.
+//
+// Notes: This class is a hack, until C7 can provide some support
+// for runtime inheritance detection (e.g. a way to generate
+// a mangled name). When we get this support a new
+// implementation of IsKindOf should be developed. The concept,
+// however, would remain the same: C++ exception objects are
+// instances of an exception class, but they are caught by class.
+//
+// A compiler can implement IsKindOf by throwing a
+// decorated name which uniquely identifies a class and
+// describes its inheritance.
+//
+// Don't do anything too fancy with subclasses of CException.
+// Instances of your subclass are memcpy-ed around. Having
+// a user defined destructor, for example, is probably a bad
+// idea.
+//
+//----------------------------------------------------------------------------
+
+class CException
+{
+public:
+
+ EXPORTDEF CException(long lError);
+ long GetErrorCode() { return _lError;}
+ EXPORTDEF virtual int WINAPI IsKindOf(const char * szClass) const;
+
+protected:
+
+ long _lError;
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CExceptionContext
+//
+// Purpose: Per-thread exception state and throw exception methods.
+//
+// Interface: CExceptionContext -- Constructor
+// ~CExceptionContext -- Destructor
+// Push -- Push a new element on the stack of
+// elements-to-be-destroyed.
+// Pop -- Pop an an element off the stack.
+// SetTop -- Set the top of stack to the specified
+// element.
+// GetTop -- Return the top element.
+// Throw -- Throw an exception
+//
+// History: 19-Nov-91 KyleP Fix heap unwind, multiple inheritance
+// 22-May-91 KyleP Created.
+//
+// Notes: There is only 1 CExceptionContext object per thread.
+//
+//----------------------------------------------------------------------------
+
+class CExceptionContext
+{
+public:
+
+ CExceptionContext();
+
+ ~CExceptionContext();
+
+ EXPORTDEF void WINAPI Reserve(void * pthis);
+
+ inline void Pop(void * pthis);
+
+ EXPORTDEF void WINAPI SetTop(void * pthis,
+ ULONG cbElement,
+ void (* pfn)(void *));
+
+ inline int GetTop();
+
+#ifndef WIN32
+
+ void Throw();
+
+#endif /* WIN32 */
+
+ void Unwind( CTry * ptry );
+
+ //
+ // _pTopTry contains the head of a linked list of CTry objects,
+ // each of which corresponds to a TRY clause.
+ //
+
+ CTry * _pTopTry;
+
+ //
+ // _pLastNew records the address of the most recent free
+ // store allocation, _cbLastNew the size.
+ //
+
+ BYTE * _pLastNew;
+ int _cbLastNew;
+ int _fNewReadyForUnwind;
+
+ //
+ // _exception contains a pointer to the current exception,
+ // if any. The character buffer following it is for storing
+ // additional data belonging to subclasses.
+ //
+
+ CException _exception;
+ char buffer[maxExceptionSize];
+
+private:
+
+ //
+ // Each StackElement contains enough information to destroy a
+ // completly constructed object, and the determine whether
+ // objects which have not yet been fully constructed were
+ // allocated on the heap or the stack.
+ //
+
+ class StackElement
+ {
+ public:
+
+ BOOL IsThisEqual( void * pthis ) { return( pthis == _pthis ); }
+ BOOL IsSizeEqual( ULONG cb ) { return( cb == _cbElement ); }
+ BOOL IsOnStack() { return( _cbElement == 0 ); }
+ BOOL IsOnHeap() { return( _cbElement != 0 ); }
+ BOOL IsActive() { return( _pfn != 0 ); }
+
+ void SetOnStack() { _cbElement = 0; }
+ void SetOnHeap( ULONG size ) { _cbElement = size; }
+ void SetThis( void * pthis ) { _pthis = pthis; }
+ void SetDtor( void (* pfn)(void *) ) { _pfn = pfn; }
+
+ void * GetDtor() { return( _pfn ); }
+ void * GetThis() { return( _pthis ); }
+
+ void Destroy() { _pfn( (BYTE *)_pthis ); }
+ void Delete() { delete (BYTE *)_pthis; }
+
+ private:
+
+ void * _pthis; // This for CUnwindable
+ void (* _pfn)(void *); // 'Static destructor'
+ ULONG _cbElement; // 0 == On stack. > 0 = Size of class
+ };
+
+ //
+ // _aStack is the stack of objects-to-be-destroyed in the face
+ // of an exception (stack unwind).
+ //
+
+ StackElement * _aStack;
+
+ //
+ // _StackTop is the index of the first free element on the stack.
+ //
+
+ int _StackTop;
+
+ //
+ // _StackSize is the maximum number of elements which can be
+ // stored on the stack.
+ //
+
+ int _StackSize;
+
+
+ EXPORTDEF void APINOT _Grow();
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Member: CExceptionContext::Pop, public
+//
+// Synopsis: Pops the top element off the stack of objects to be destroyed.
+//
+// Effects: Pop only has an effect if the top element on the stack
+// is for [pthis].
+//
+// Arguments: [pthis] -- Must correspond to the top of stack if the
+// element is to be popped.
+//
+// History: 22-May-91 KyleP Created.
+//
+//----------------------------------------------------------------------------
+
+inline void CExceptionContext::Pop(void * pthis)
+{
+ //
+ // Remove the top of stack only if it corresponds to pthis.
+ // Thus the element will be removed only if this object was
+ // declared on the stack (as opposed to embedded) and no
+ // exception was encountered.
+ //
+
+ //
+ // You should *always* find what you're looking for. No checking
+ // for runoff. The very bottom element of the stack is a sentinel
+ // for the case of heap objects which have been fully removed from
+ // the stack.
+ //
+
+ exAssert( _StackTop > 0 );
+
+ if ( _aStack[_StackTop-1].IsThisEqual( pthis ) )
+ {
+ //
+ // The following assertion is hit if an unwindable object
+ // is destroyed without END_CONSTRUCTION being called.
+ //
+
+ exAssert( _aStack[_StackTop-1].IsActive() );
+
+ _StackTop--;
+
+#if DBG == 1 || OFSDBG == 1
+ exDebugOut(( DEB_ITRACE, "POP %lx %lx( %lx )\n",
+ _StackTop,
+ _aStack[_StackTop].GetDtor(),
+ _aStack[_StackTop].GetThis() ));
+#endif // DBG || OFSDBG == 1
+ }
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CExceptionContext::GetTop, public
+//
+// Returns: The index of the top of the stack of objects to be
+// destroyed. This is the first available element.
+//
+// History: 22-May-91 KyleP Created.
+//
+//----------------------------------------------------------------------------
+
+inline int CExceptionContext::GetTop()
+{
+ return(_StackTop);
+}
+
+EXPORTDEF CExceptionContext& APINOT _ExceptionContext(void);
+
+//----------------------------------------------------------------------------
+//
+// Various operator new implementations
+//
+//----------------------------------------------------------------------------
+
+EXPORTDEF int APINOT LeakCheck ( ULONG* pCount );
+
+#if defined( KERNEL )
+
+//
+// Prototype for extra operator new used in kernel to specify
+// resident vs. swappable heap.
+//
+
+void InitExceptionSystem();
+void* _CRTAPI1 operator new ( size_t size, POOL_TYPE pool );
+
+#if OFSDBG == 1
+# define NEW_POOL( pool, pCounter ) new(pool, pCounter)
+ void* _CRTAPI1 operator new ( size_t size, POOL_TYPE pool, ULONG* pCounter );
+#else
+# define NEW_POOL( pool, pCounter ) new(pool)
+#endif
+
+#endif // KERNEL
+
+//
+// Allocation with trace context
+//
+
+#if OFSDBG == 1 || DBG == 1
+# define NEW( pCounter ) new ( pCounter )
+ void* _CRTAPI1 operator new ( size_t size, ULONG* pCounter );
+#else
+# define NEW( pCounter ) new
+#endif
+
+//
+// Prototype for extra operator new used in routines which do not
+// have an exception handler set up and prefer a null return on
+// failed allocations rather than an exception.
+//
+
+typedef enum _FAIL_BEHAVIOR
+{
+ NullOnFail, // BUGBUG: should be deleted ASAP
+ ExceptOnFail
+} FAIL_BEHAVIOR ;
+
+void* _CRTAPI1 operator new ( size_t size, FAIL_BEHAVIOR FailBehavior );
+
+#define newx new(ExceptOnFail)
+
+//+---------------------------------------------------------------------------
+//
+// Class: CSystemException
+//
+// Purpose: Base class for system (hardware) exceptions which are
+// not handled by a specific exception class
+//
+// Interface:
+//
+// History: 18-Oct-91 KyleP Created.
+//
+//----------------------------------------------------------------------------
+
+class CSystemException : public CException
+{
+public:
+
+ EXPORTDEF CSystemException(ULONG ulExcept);
+
+ virtual int WINAPI IsKindOf(const char * szClass) const;
+
+ ULONG GetSysErrorCode() { return( _ulExcept ); }
+
+private:
+
+ ULONG _ulExcept;
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CUnwindable, CVirtualUnwindable
+//
+// Purpose: Per-object exception state and registration/unwind methods.
+//
+// Interface: CUnwindable -- Constructor
+// ~CUnwindable -- Destructor
+// _Activate -- Activate object.
+//
+// History: 22-May-91 KyleP Created.
+// 13-Nov-92 KyleP Added virtual version
+//
+// Notes: CVirtualUnwindable should be used if and only if a
+// derived class has some other virtual method.
+//
+//----------------------------------------------------------------------------
+
+class CUnwindable
+{
+public:
+
+ inline CUnwindable();
+
+ inline ~CUnwindable();
+
+ inline void _Activate( ULONG cbElement,
+ void (* pfn)(void *) );
+};
+
+class CVirtualUnwindable
+{
+public:
+
+ inline CVirtualUnwindable();
+
+ virtual ~CVirtualUnwindable();
+
+ inline void _Activate( ULONG cbElement,
+ void (* pfn)(void *) );
+};
+
+//+---------------------------------------------------------------------------
+//
+// Member: CUnwindable::CUnwindable, public
+//
+// Synopsis: Initializes the link field of the object.
+//
+// Effects: Essentially sets up enough state to remember the position
+// of the object which inherits from CUnwindable
+// within the stack of objects-to-be-destroyed.
+//
+// History: 22-May-91 KyleP Created.
+//
+// Notes: This call does not fully link the object into the chain
+// of objects to be destroyed. See _Activate.
+//
+//----------------------------------------------------------------------------
+
+inline CUnwindable::CUnwindable()
+{
+ //
+ // Initialize by allocating a record on the deletion stack.
+ //
+
+ _ExceptionContext().Reserve(this);
+}
+
+inline CVirtualUnwindable::CVirtualUnwindable()
+{
+ //
+ // Initialize by allocating a record on the deletion stack.
+ //
+
+ _ExceptionContext().Reserve(this);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CUnwindable::~CUnwindable, public
+//
+// Synopsis: Removes this object from the stack of objects to be destroyed.
+//
+// Modifies: Per/thread exception context.
+//
+// History: 22-May-91 KyleP Created.
+//
+//----------------------------------------------------------------------------
+
+inline CUnwindable::~CUnwindable()
+{
+ _ExceptionContext().Pop(this);
+}
+
+inline CVirtualUnwindable::~CVirtualUnwindable()
+{
+ _ExceptionContext().Pop(this);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CUnwindable::_Activate, public
+//
+// Synopsis: Fully link object into stack of objects to be destroyed.
+//
+// Effects: After this call, the object which inherits from
+// CUnwindable will be destroyed during unwind.
+//
+// If the object was declared on the heap, then it is
+// removed completely from the stack of objects that will
+// be destroyed during unwind.
+//
+// Arguments: [prealthis] -- This pointer of instance. Will differ
+// from this pointer of CUnwindable
+// if instance has a virtual method.
+// [cbElement] -- Size of the instance being activated. If
+// an element is declared on the heap and
+// [cbElement] is smaller than the allocation
+// then the element won't be deleted.
+//
+// [pfn] -- Pointer to a static destructor. [pfn] takes a
+// this pointer.
+//
+// Modifies: This object is now the top of the stack of objects that
+// will be destroyed (_exceptioncontext is modified).
+//
+// History: 22-May-91 KyleP Created.
+//
+//----------------------------------------------------------------------------
+
+inline void CUnwindable::_Activate(
+ ULONG cbElement,
+ void (* pfn)(void *))
+{
+ _ExceptionContext().SetTop(this, cbElement, pfn);
+}
+
+inline void CVirtualUnwindable::_Activate(
+ ULONG cbElement,
+ void (* pfn)(void *))
+{
+ _ExceptionContext().SetTop(this, cbElement, pfn);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Class: CTry
+//
+// Purpose: Containt per/TRY state.
+//
+// Interface: ~CTry - Destructor
+// TryIt - Setup to run the TRY body.
+//
+// History: 22-May-91 KyleP Created.
+//
+//----------------------------------------------------------------------------
+
+class CTry
+{
+public:
+
+ inline CTry();
+ inline ~CTry();
+
+ //
+ // The following function ***MUST*** be declared inline and
+ // actually be ***IMPLEMENTED*** inline. It calls setjmp;
+ // and if TryIt is a real procedure then we just set the
+ // return for longjmp on a piece of stack that is reclaimed!
+ //
+
+ //inline int TryIt();
+
+#ifndef WIN32
+
+ //
+ // _jb is the setjmp buffer indicating the location that will
+ // be longjmp'ed to when an exception occurs.
+ //
+
+ jmp_buf _jb;
+
+#endif /* WIN32 */
+
+ //
+ // _pPrevTry is a link to the enclosing TRY clause.
+ //
+
+ CTry * _pPrevTry;
+
+ //
+ // _StackTop was the top of the stack of objects-to-be-destroyed
+ // when the TRY clause was entered.
+ //
+
+ int _StackTop;
+};
+
+//+---------------------------------------------------------------------------
+//
+// Member: CTry::~CTry, public
+//
+// Synopsis: Unlinks the TRY ... CATCH from the per/thread list.
+//
+// Modifies: The per/thread list of try clauses in _exceptioncontext.
+//
+// History: 22-May-91 KyleP Created.
+//
+//----------------------------------------------------------------------------
+
+inline CTry::~CTry()
+{
+ exDebugOut(( DEB_ITRACE, "END TRY %lx (%lx)\n", _StackTop, this ));
+
+ //
+ // The destructor for CTry is called only during normal (no
+ // exception) exit from the TRY ... CATCH or when an
+ // exception was successfully caught in this block.
+ // In these cases we want to unlink this CTry.
+ //
+ // Note that we could delete _exceptioncontext._TheException
+ // here, which may be non-null if we caught an exception in
+ // this TRY ... CATCH block. But why bother? That would add
+ // additional code to the normal case. The last exception
+ // can wait to be deleted until the next occurs.
+ //
+
+ _ExceptionContext()._pTopTry = _pPrevTry;
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CTry::CTry, public
+//
+// Synopsis: Set up to run the body of a TRY ... CATCH clause.
+//
+// Effects: Links this CTry into the chain of TRY clauses.
+//
+// History: 22-May-91 KyleP Created.
+//
+//----------------------------------------------------------------------------
+
+inline CTry::CTry()
+{
+ CExceptionContext& _exceptioncontext = _ExceptionContext();
+
+ _pPrevTry = _exceptioncontext._pTopTry;
+ _exceptioncontext._pTopTry = this;
+ _StackTop = _exceptioncontext.GetTop();
+
+ exDebugOut(( DEB_ITRACE, "TRY %lx (%lx)\n", _StackTop, this ));
+}
+
+//+---------------------------------------------------------------------------
+//
+// The following macros implement a TRY ... CATCH syntax similar
+// to that in C++. They are used as follows:
+//
+// TRY
+// {
+// // Body of try goes here...
+// }
+// CATCH(exclass, e)
+// {
+// // We get here when an exception of class exclass has
+// // been thrown. The variable e is declared as * exclass.
+// }
+// AND_CATCH(exclass, e)
+// {
+// // Just like CATCH. Any number of AND_CATCH can follow
+// // CATCH. Handlers are tried in order of appearance.
+// }
+// END_CATCH
+//
+// To throw an exception, use the THROW macro -- THROW(exclass). To
+// re-throw the same exception from within a catch clause use
+// RETHROW(). Note that RETHROW() is only valid in a CATCH/AND_CATCH.
+//
+// History: 22-May-91 KyleP Created Interface.
+// 15-Aug-91 SethuR modified THROW,CATCH,AND_CATCH,END_CATCH
+// macros
+// 18-Oct-91 KyleP Win32 try/except implementation
+//
+//----------------------------------------------------------------------------
+
+extern EXPORTDEF void APINOT ThrowDebugException(unsigned int iLine,
+ char * szFile,
+ CException & ecE );
+
+extern EXPORTDEF void APINOT ThrowException(CException & ecE,
+ unsigned dummy);
+
+#if DBG == 1 || OFSDBG == 1// +++++++++++++++++++++++++++++++++++++++++++++++
+# define THROW(e) \
+ { \
+ ThrowDebugException(__LINE__,__FILE__,e); \
+ }
+
+#else // DBG == 0 && OFSDBG == 0 ++++++++++++++++++++++++++++++++++++++++++++
+
+# define THROW(e) \
+ { \
+ ThrowException(e, 1); \
+ }
+
+#endif // DBG == 0 && OFSDBG == 0 ++++++++++++++++++++++++++++++++++++++++++++
+
+
+#ifdef WIN32 // ----------------------------------------------------
+
+#define EXCEPT_VULCAN 0xE0000001
+
+# define CALLEX( x ) \
+ __try \
+ { \
+ x; \
+ } \
+ __except( EXCEPTION_EXECUTE_HANDLER ) \
+ { \
+ THROW( CException( GetExceptionCode() ) ); \
+ }
+
+#if defined( KERNEL )
+# if DBG == 1 || OFSDBG == 1// +++++++++++++++++++++++++++++++++++++++++++++++
+# define RETHROW() \
+ ExceptionReport(__LINE__,__FILE__,"Rethrowing Exception"); \
+ ExRaiseStatus( EXCEPT_VULCAN );
+
+# else // DBG == 0 && OFSDBG == 0 ++++++++++++++++++++++++++++++++++++++++++++
+
+# define RETHROW() \
+ ExRaiseStatus( EXCEPT_VULCAN );
+
+# endif // DBG == 0 && OFSDBG == 0 ++++++++++++++++++++++++++++++++++++++++++++
+
+
+#else // !KERNEL
+# if DBG == 1 || OFSDBG == 1// +++++++++++++++++++++++++++++++++++++++++++++++
+# define RETHROW() \
+ ExceptionReport(__LINE__,__FILE__,"Rethrowing Exception"); \
+ RaiseException( EXCEPT_VULCAN, 0, 0, 0 );
+# else // DBG == 0 && OFSDBG == 0 ++++++++++++++++++++++++++++++++++++++++++++
+
+# define RETHROW() \
+ RaiseException( EXCEPT_VULCAN, 0, 0, 0 );
+
+# endif // DBG == 0 && OFSDBG == 0 ++++++++++++++++++++++++++++++++++++++++++++
+
+#endif // !KERNEL
+
+#define TRY \
+ { \
+ CTry _trycontext; \
+ __try
+
+EXPORTDEF ULONG APINOT Unwind( struct _EXCEPTION_POINTERS * pdisp,
+ CTry * ptry );
+
+#if DBG == 1 || OFSDBG == 1 // +++++++++++++++++++++++++++++++++++++++++++++++
+
+#define CATCH(class, e) \
+ __except( Unwind( GetExceptionInformation(), &_trycontext ) ) \
+ { \
+ CExceptionContext& _exceptioncontext = _ExceptionContext(); \
+ if (_exceptioncontext._exception.IsKindOf(#class)) \
+ { \
+ ExceptionReport(__LINE__,__FILE__,"Catching Exception"); \
+ class & e = (class &)_exceptioncontext._exception;
+
+#define AND_CATCH(class, e) \
+ } \
+ else if (_exceptioncontext._exception.IsKindOf(#class)) \
+ { \
+ ExceptionReport(__LINE__,__FILE__,"Catching Exception"); \
+ class & e = (class &)_exceptioncontext._exception;
+
+#else // DBG == 0 ++++++++++++++++++++++++++++++++++++++++++++
+
+#define CATCH(class, e) \
+ __except( Unwind( GetExceptionInformation(), &_trycontext ) ) \
+ { \
+ CExceptionContext& _exceptioncontext = _ExceptionContext(); \
+ if (_exceptioncontext._exception.IsKindOf(#class)) \
+ { \
+ class & e = (class &)_exceptioncontext._exception;
+
+#define AND_CATCH(class, e) \
+ } \
+ else if (_exceptioncontext._exception.IsKindOf(#class)) \
+ { \
+ class & e = ( class &)_exceptioncontext._exception;
+
+#endif // DBG == 0 +++++++++++++++++++++++++++++++++++++++++++
+
+#define END_CATCH \
+ } \
+ else \
+ { \
+ RETHROW(); \
+ } \
+ } \
+ }
+
+#else // NOT WIN32 -------------------------------------------------
+
+#define TRY \
+ { \
+ CTry _trycontext; \
+ if (setjmp(_trycontext._jb) == 0) \
+
+
+
+#if DBG == 1 || OFSDBG == 1 // ++++++++++++++++++++++++++++++++++++++++++++++++
+
+#define CATCH(class, e) \
+ \
+ else \
+ { \
+ CExceptionContext& _exceptioncontext = _ExceptionContext(); \
+ if (_exceptioncontext._exception.IsKindOf(#class)) \
+ { \
+ ExceptionReport(__LINE__,__FILE__,"Catching Exception"); \
+ class & e = (class &)_exceptioncontext._exception;
+
+#define AND_CATCH(class, e) \
+ \
+ } \
+ else if (_exceptioncontext._exception.IsKindOf(#class)) \
+ { \
+ ExceptionReport(__LINE__,__FILE__,"Catching Exception"); \
+ class & e = (class &)_exceptioncontext._exception;
+
+
+#else // DBG == 0 +++++++++++++++++++++++++++++++++++++++++++++
+
+#define CATCH(class, e) \
+ \
+ else \
+ { \
+ CExceptionContext& _exceptioncontext = _ExceptionContext(); \
+ if (_exceptioncontext._exception.IsKindOf(#class)) \
+ { \
+ class & e = (class &)_exceptioncontext._exception;
+
+#define AND_CATCH(class, e) \
+ \
+ } \
+ else if (_exceptioncontext._exception.IsKindOf(#class)) \
+ { \
+ class & e = (class &)_exceptioncontext._exception;
+
+#endif // DBG == 0 +++++++++++++++++++++++++++++++++++++++++++
+
+
+#define END_CATCH \
+ } \
+ else \
+ { \
+ _exceptioncontext.Throw(); \
+ } \
+ } \
+ }
+
+#define RETHROW() \
+ _exceptioncontext.Throw()
+
+#endif // NOT WIN32 ------------------------------------------------
+
+//+---------------------------------------------------------------------------
+//
+// The following macros prepare a class for stack unwinding. Any class
+// with a destructor should be prepared to deal with stack unwind.
+// The macros are used as follows:
+//
+// First, in the .hxx file...
+//
+// class CClassWithADestructor : INHERIT_UNWIND // , other inheritance
+// {
+// DECLARE_UNWIND
+//
+// //
+// // The rest of the class declaration goes here...
+// //
+// }
+//
+// And then in the .cxx file...
+//
+// IMPLEMENT_UNWIND(CClassWithADestructor)
+//
+// CClassWithADestructor::CClassWithADestructor(...)
+// {
+// //
+// // User construction activity.
+// //
+//
+// //
+// // The following should precede every return from the
+// // constructor.
+// //
+//
+// END_CONSTRUCTION(CClassWithADestructor)
+// }
+//
+// INHERIT_UNWIND must be the first inheritance.
+//
+// For further levels of inheritance, you do not need to inherit from
+// INHERIT_UNWIND (more to the point, you can't). The other macros
+// must be used for all levels.
+//
+// INHERIT_VIRTUAL_UNWIND must be used in place of INHERIT_UNWIND on a class
+// that contains virtual methods. If INHERIT_VIRTUAL_UNWIND also fails,
+// then find me (KyleP) and I'll try to figure out what went wrong.
+//
+// Multiple inheritance is untested. It may work, or it may not. If you
+// really need multiple inheritance see me (KyleP).
+//
+// History: 19-Nov-91 KyleP Added multiple-inheritance support
+// 22-May-91 KyleP Created Interface.
+// 13-Nov-92 KyleP Added support for classes with virtual
+// methods.
+//
+//----------------------------------------------------------------------------
+
+#define INHERIT_UNWIND \
+ \
+ public CUnwindable
+
+#define INHERIT_VIRTUAL_UNWIND \
+ \
+ public CVirtualUnwindable
+
+
+#define END_MULTINHERITED_CONSTRUCTION(class, base1) \
+ \
+ base1::_Activate(sizeof(class), &class::_ObjectUnwind);
+
+
+//
+// Why such a complicated test below? Because we are nearly ready to
+// ship Daytona and Ole includes except.hxx but requires the macros
+// do nothing. We are unable to change the Ole sources this late in
+// the game, so you get exceptions only if you are:
+// a) In a Cairo build and didn't define NOEXCEPTIONS, or
+// b) Defined YESEXCEPTIONS in any build.
+//
+// The above would be true and interesting if anybody except OFS wanted
+// to use ofsNew or ofsDelete. As it is, the declarations below (and
+// most of the rest of this file) should be moved to the OFS project
+//
+#if ((WIN32 == 300) && !defined(NOEXCEPTIONS)) || defined(YESEXCEPTIONS)
+
+#if (OFSDBG == 1)
+ void* _CRTAPI1 ofsNew( size_t size, FAIL_BEHAVIOR FailBehavior );
+ inline void* _CRTAPI1 operator new ( size_t size, FAIL_BEHAVIOR FailBehavior)
+ { return ofsNew(size, FailBehavior); }
+
+ void _CRTAPI1 ofsDelete( void * p );
+ inline void _CRTAPI1 operator delete ( void * p )
+ { ofsDelete( p ); }
+#endif // (OFSDBG == 1)
+
+#define INHERIT_UNWIND_IF_CAIRO : INHERIT_UNWIND
+
+#define DECLARE_UNWIND \
+ \
+ static void APINOT _ObjectUnwind(void * pthis);
+
+#if DBG == 1 || OFSDBG == 1
+
+# define IMPLEMENT_UNWIND(class) \
+ \
+ void APINOT class::_ObjectUnwind(void * pthis) \
+ { \
+ ((class *)pthis)->class::~class(); \
+ } \
+ \
+ struct __Check##class \
+ { \
+ __Check##class() \
+ { \
+ if ( (CUnwindable *)((class *)10) != (CUnwindable *)10 || \
+ (CVirtualUnwindable *) \
+ ((class *)10) != (CVirtualUnwindable *)10 ) \
+ { \
+ exDebugOut(( DEB_ERROR, \
+ "INVALID UNWINDABLE CLASS: %s.\n", \
+ #class )); \
+ } \
+ } \
+ }; \
+ \
+ __Check##class __check_except_##class;
+
+#else // DBG == 0
+
+# define IMPLEMENT_UNWIND(class) \
+ \
+ void APINOT class::_ObjectUnwind(void * pthis) \
+ { \
+ ((class *)pthis)->class::~class(); \
+ }
+
+#endif // DBG
+
+#define END_CONSTRUCTION(class) \
+ \
+ _Activate( sizeof(class), &class::_ObjectUnwind );
+
+// The following macro will (probably) need to be redefined (to null) when
+// compiler support for exceptions arrives.
+
+#define INLINE_UNWIND(cls) \
+ static void _ObjectUnwind ( void * pthis ) \
+ { ((cls *)pthis)->cls::~cls(); };
+#else
+
+#define INHERIT_UNWIND_IF_CAIRO
+
+#define DECLARE_UNWIND
+
+#define END_CONSTRUCTION(class)
+
+#define INLINE_UNWIND(cls)
+
+#define IMPLEMENT_UNWIND(cls)
+
+#endif
+
+#endif // __EXCEPT_HXX__
diff --git a/public/sdk/inc/exchext.h b/public/sdk/inc/exchext.h
new file mode 100644
index 000000000..c56db62f5
--- /dev/null
+++ b/public/sdk/inc/exchext.h
@@ -0,0 +1,788 @@
+#ifndef EXCHEXT_H
+#define EXCHEXT_H
+
+
+/*
+ * E X C H E X T . H
+ *
+ * Declarations of interfaces for providers of Microsoft Exchange
+ * client extensions.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+
+#ifndef BEGIN_INTERFACE
+#define BEGIN_INTERFACE
+#endif
+
+
+/*
+ * C o n s t a n t s
+ */
+
+
+// SCODEs
+#define EXCHEXT_S_NOCRITERIA MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 1)
+#define EXCHEXT_S_NOCHANGE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 2)
+
+// Flag for Unicode strings
+#define EXCHEXT_UNICODE (0x80000000)
+
+// Flag values for IExchExtCallback::GetVersion
+#define EECBGV_GETBUILDVERSION (0x00000001)
+#define EECBGV_GETACTUALVERSION (0x00000002)
+#define EECBGV_GETVIRTUALVERSION (0x00000004)
+
+// Build version value for IExchExtCallback::GetVersion
+#define EECBGV_BUILDVERSION_MAJOR (0x000d0000)
+#define EECBGV_BUILDVERSION_MAJOR_MASK (0xFFFF0000)
+#define EECBGV_BUILDVERSION_MINOR_MASK (0x0000FFFF)
+
+// Actual/Virtual version values for IExchExtCallback::GetVersion
+#define EECBGV_MSEXCHANGE_WIN31 (0x01010000)
+#define EECBGV_MSEXCHANGE_WIN95 (0x01020000)
+#define EECBGV_MSEXCHANGE_WINNT (0x01030000)
+#define EECBGV_MSEXCHANGE_MAC (0x01040000)
+#define EECBGV_VERSION_PRODUCT_MASK (0xFF000000)
+#define EECBGV_VERSION_PLATFORM_MASK (0x00FF0000)
+#define EECBGV_VERSION_MAJOR_MASK (0x0000FF00)
+#define EECBGV_VERSION_MINOR_MASK (0x000000FF)
+
+// Flag values for IExchExtCallback::GetMenuPos
+#define EECBGMP_RANGE (0x00000001)
+
+// Flag values for IExchExtCallback::GetNewMessageSite
+#define EECBGNMS_MODAL (0x00000001)
+
+// Flag values for IExchExtCallback::ChooseFolder
+#define EECBCF_GETNAME (0x00000001)
+#define EECBCF_HIDENEW (0x00000002)
+#define EECBCF_PREVENTROOT (0x00000004)
+
+// Extensibility contexts used with IExchExt::Install
+#define EECONTEXT_SESSION (0x00000001)
+#define EECONTEXT_VIEWER (0x00000002)
+#define EECONTEXT_REMOTEVIEWER (0x00000003)
+#define EECONTEXT_SEARCHVIEWER (0x00000004)
+#define EECONTEXT_ADDRBOOK (0x00000005)
+#define EECONTEXT_SENDNOTEMESSAGE (0x00000006)
+#define EECONTEXT_READNOTEMESSAGE (0x00000007)
+#define EECONTEXT_SENDPOSTMESSAGE (0x00000008)
+#define EECONTEXT_READPOSTMESSAGE (0x00000009)
+#define EECONTEXT_READREPORTMESSAGE (0x0000000A)
+#define EECONTEXT_SENDRESENDMESSAGE (0x0000000B)
+#define EECONTEXT_PROPERTYSHEETS (0x0000000C)
+#define EECONTEXT_ADVANCEDCRITERIA (0x0000000D)
+#define EECONTEXT_TASK (0x0000000E)
+
+// Flag values for IExchExt::Install
+#define EE_MODAL (0x00000001)
+
+// Toolbar ids used with IExchExtCommands::InstallCommands
+#define EETBID_STANDARD (0x00000001)
+
+// Flag values for IExchExtCommands::QueryHelpText
+#define EECQHT_STATUS (0x00000001)
+#define EECQHT_TOOLTIP (0x00000002)
+
+// Flag values for IExchExtMessageEvents::OnXComplete
+#define EEME_FAILED (0x00000001)
+#define EEME_COMPLETE_FAILED (0x00000002)
+
+// Flag values for IExchExtAttachedFileEvents::OpenSzFile
+#define EEAFE_OPEN (0x00000001)
+#define EEAFE_PRINT (0x00000002)
+#define EEAFE_QUICKVIEW (0x00000003)
+
+// Flag values for IExchExtPropertySheets methods
+#define EEPS_MESSAGE (0x00000001)
+#define EEPS_FOLDER (0x00000002)
+#define EEPS_STORE (0x00000003)
+#define EEPS_TOOLSOPTIONS (0x00000004)
+
+// Flag values for IExchExtAdvancedCriteria::Install and ::SetFolder
+#define EEAC_INCLUDESUBFOLDERS (0x00000001)
+
+
+/*
+ * S t r u c t u r e s
+ */
+
+
+// Hook procedure for IExchExtCallback::ChooseFolder
+typedef UINT (STDAPICALLTYPE FAR * LPEECFHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
+
+// Dialog information for IExchExtCallback::ChooseFolder
+typedef struct
+{
+ UINT cbLength;
+ HWND hwnd;
+ LPTSTR szCaption;
+ LPTSTR szLabel;
+ LPTSTR szHelpFile;
+ ULONG ulHelpID;
+ HINSTANCE hinst;
+ UINT uiDlgID;
+ LPEECFHOOKPROC lpeecfhp;
+ DWORD dwHookData;
+ ULONG ulFlags;
+ LPMDB pmdb;
+ LPMAPIFOLDER pfld;
+ LPTSTR szName;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+ DWORD dwReserved3;
+}
+EXCHEXTCHOOSEFOLDER, FAR * LPEXCHEXTCHOOSEFOLDER;
+
+// Toolbar list entries for IExchExtCommands::InstallCommands
+typedef struct
+{
+ HWND hwnd;
+ ULONG tbid;
+ ULONG ulFlags;
+ UINT itbbBase;
+}
+TBENTRY, FAR * LPTBENTRY;
+
+
+/*
+ * E x t e r n a l T y p e s
+ */
+
+
+// Property sheet pages from Windows 95 prsht.h
+#ifndef _PRSHT_H_
+typedef struct _PROPSHEETPAGE;
+typedef struct _PROPSHEETPAGE FAR * LPPROPSHEETPAGE;
+#endif
+
+// Toolbar adjust info from Windows 95 commctrl.h
+#ifndef _INC_COMMCTRL
+typedef struct _TBBUTTON;
+typedef struct _TBBUTTON FAR * LPTBBUTTON;
+#endif
+
+
+/*
+ * S u p p o r t I n t e r f a c e s
+ */
+
+
+// Forward reference
+#ifdef __cplusplus
+interface IExchExtModeless;
+#else
+typedef interface IExchExtModeless IExchExtModeless;
+#endif
+typedef IExchExtModeless FAR* LPEXCHEXTMODELESS;
+
+
+/*
+ * IExchExtModelessCallback
+ *
+ * Purpose:
+ * Interface which may be used by Exchange client
+ * extensions that create modeless UI.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExtModelessCallback
+DECLARE_INTERFACE_(IExchExtModelessCallback, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExtModelessCallback methods ***
+ STDMETHOD(EnableModeless) (THIS_ HWND hwnd, BOOL fEnable) PURE;
+ STDMETHOD(AddWindow) (THIS) PURE;
+ STDMETHOD(ReleaseWindow) (THIS) PURE;
+};
+typedef IExchExtModelessCallback FAR * LPEXCHEXTMODELESSCALLBACK;
+
+
+/*
+ * IExchExtCallback
+ *
+ * Purpose:
+ * Resource interface that may be used by Exchange client extensions.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExtCallback
+
+DECLARE_INTERFACE_(IExchExtCallback, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExtCallback methods ***
+ STDMETHOD(GetVersion) (THIS_ ULONG FAR * lpulVersion, ULONG ulFlags) PURE;
+ STDMETHOD(GetWindow) (THIS_ HWND FAR * lphwnd) PURE;
+ STDMETHOD(GetMenu) (THIS_ HMENU FAR * lphmenu) PURE;
+ STDMETHOD(GetToolbar) (THIS_ ULONG tbid, HWND FAR * lphwndTb) PURE;
+ STDMETHOD(GetSession) (THIS_ LPMAPISESSION FAR * lppses,
+ LPADRBOOK FAR * lppab) PURE;
+ STDMETHOD(GetObject) (THIS_ LPMDB FAR * lppmdb,
+ LPMAPIPROP FAR * lppmp) PURE;
+ STDMETHOD(GetSelectionCount) (THIS_ ULONG FAR * lpceid) PURE;
+ STDMETHOD(GetSelectionItem) (THIS_ ULONG ieid, ULONG FAR * lpcbEid,
+ LPENTRYID FAR * lppeid, ULONG FAR * lpulType,
+ LPTSTR lpszMsgClass, ULONG cbMsgClass,
+ ULONG FAR * lpulMsgFlags, ULONG ulFlags) PURE;
+ STDMETHOD(GetMenuPos) (THIS_ ULONG cmdid, HMENU FAR * lphmenu,
+ ULONG FAR * lpmposMin, ULONG FAR * lpmposMax,
+ ULONG ulFlags) PURE;
+ STDMETHOD(GetSharedExtsDir) (THIS_ LPTSTR lpszDir, ULONG cchDir,
+ ULONG ulFlags) PURE;
+ STDMETHOD(GetRecipients) (THIS_ LPADRLIST FAR * lppal) PURE;
+ STDMETHOD(SetRecipients) (THIS_ LPADRLIST lpal) PURE;
+ STDMETHOD(GetNewMessageSite) (THIS_ ULONG fComposeInFolder,
+ LPMAPIFOLDER pfldFocus,
+ LPPERSISTMESSAGE ppermsg,
+ LPMESSAGE FAR * ppmsg,
+ LPMAPIMESSAGESITE FAR * ppmms,
+ LPMAPIVIEWCONTEXT FAR * ppmvc,
+ ULONG ulFlags) PURE;
+ STDMETHOD(RegisterModeless) (THIS_ LPEXCHEXTMODELESS peem,
+ LPEXCHEXTMODELESSCALLBACK FAR * ppeemcb) PURE;
+ STDMETHOD(ChooseFolder) (THIS_ LPEXCHEXTCHOOSEFOLDER peecf) PURE;
+};
+typedef IExchExtCallback FAR * LPEXCHEXTCALLBACK;
+
+
+/*
+ * E x t e n s i o n I n t e r f a c e s
+ */
+
+
+/*
+ * IExchExt
+ *
+ * Purpose:
+ * Central interface implemented by Exchange client extensions.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExt
+
+DECLARE_INTERFACE_(IExchExt, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExt methods ***
+ STDMETHOD(Install) (THIS_ LPEXCHEXTCALLBACK lpeecb,
+ ULONG mecontext, ULONG ulFlags) PURE;
+};
+typedef IExchExt FAR * LPEXCHEXT;
+
+// Type of function called by the client to load an extension
+typedef LPEXCHEXT (CALLBACK * LPFNEXCHEXTENTRY)(VOID);
+
+
+/*
+ * IExchExtCommands
+ *
+ * Purpose:
+ * Interface implemented by Exchange client extensions that wish to
+ * add additional commands to the client's menus.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExtCommands
+
+DECLARE_INTERFACE_(IExchExtCommands, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExtCommands methods ***
+ STDMETHOD(InstallCommands) (THIS_ LPEXCHEXTCALLBACK lpeecb, HWND hwnd,
+ HMENU hmenu, UINT FAR * lpcmdidBase,
+ LPTBENTRY lptbeArray, UINT ctbe,
+ ULONG ulFlags) PURE;
+ STDMETHOD_(VOID,InitMenu) (THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
+ STDMETHOD(DoCommand) (THIS_ LPEXCHEXTCALLBACK lpeecb, UINT cmdid) PURE;
+ STDMETHOD(Help) (THIS_ LPEXCHEXTCALLBACK lpeecb, UINT cmdid) PURE;
+ STDMETHOD(QueryHelpText) (THIS_ UINT cmdid, ULONG ulFlags,
+ LPTSTR lpsz, UINT cch) PURE;
+ STDMETHOD(QueryButtonInfo) (THIS_ ULONG tbid, UINT itbb, LPTBBUTTON ptbb,
+ LPTSTR lpsz, UINT cch, ULONG ulFlags) PURE;
+ STDMETHOD(ResetToolbar) (THIS_ ULONG tbid, ULONG ulFlags) PURE;
+};
+typedef IExchExtCommands FAR * LPEXCHEXTCOMMANDS;
+
+
+/*
+ * IExchExtUserEvents
+ *
+ * Purpose:
+ * Interface implemented by Exchange client extensions that wish to
+ * take special action when the user does certain actions.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExtUserEvents
+
+DECLARE_INTERFACE_(IExchExtUserEvents, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExtUserEvents methods ***
+ STDMETHOD_(VOID,OnSelectionChange) (THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
+ STDMETHOD_(VOID,OnObjectChange) (THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
+};
+typedef IExchExtUserEvents FAR * LPEXCHEXTUSEREVENTS;
+
+
+/*
+ * IExchExtSessionEvents
+ *
+ * Purpose:
+ * Interface implemented by Exchange client extensions that wish to
+ * take special action when certain events happen in the session.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExtSessionEvents
+
+DECLARE_INTERFACE_(IExchExtSessionEvents, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExtEvents methods ***
+ STDMETHOD(OnDelivery)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
+};
+typedef IExchExtSessionEvents FAR * LPEXCHEXTSESSIONEVENTS;
+
+
+/*
+ * IExchExtMessageEvents
+ *
+ * Purpose:
+ * Interface implemented by Exchange client extensions that wish to
+ * take special action when certain events happen to messages.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExtMessageEvents
+
+DECLARE_INTERFACE_(IExchExtMessageEvents, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExtMessageEvents methods ***
+ STDMETHOD(OnRead)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
+ STDMETHOD(OnReadComplete)(THIS_ LPEXCHEXTCALLBACK lpeecb,
+ ULONG ulFlags) PURE;
+ STDMETHOD(OnWrite)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
+ STDMETHOD(OnWriteComplete)(THIS_ LPEXCHEXTCALLBACK lpeecb,
+ ULONG ulFlags) PURE;
+ STDMETHOD(OnCheckNames)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
+ STDMETHOD(OnCheckNamesComplete)(THIS_ LPEXCHEXTCALLBACK lpeecb,
+ ULONG ulFlags) PURE;
+ STDMETHOD(OnSubmit)(THIS_ LPEXCHEXTCALLBACK lpeecb) PURE;
+ STDMETHOD_(VOID, OnSubmitComplete)(THIS_ LPEXCHEXTCALLBACK lpeecb,
+ ULONG ulFlags) PURE;
+};
+typedef IExchExtMessageEvents FAR * LPEXCHEXTMESSAGEEVENTS;
+
+
+/*
+ * IExchExtAttachedFileEvents
+ *
+ * Purpose:
+ * Interface implemented by Exchange client extensions that wish to
+ * take special action when certain events happen to attached files.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExtAttachedFileEvents
+
+DECLARE_INTERFACE_(IExchExtAttachedFileEvents, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExtAttachedFileEvents methods ***
+ STDMETHOD(OnReadPattFromSzFile)(THIS_ LPATTACH lpatt, LPTSTR lpszFile,
+ ULONG ulFlags) PURE;
+ STDMETHOD(OnWritePattToSzFile)(THIS_ LPATTACH lpatt, LPTSTR lpszFile,
+ ULONG ulFlags) PURE;
+ STDMETHOD(QueryDisallowOpenPatt)(THIS_ LPATTACH lpatt) PURE;
+ STDMETHOD(OnOpenPatt)(THIS_ LPATTACH lpatt) PURE;
+ STDMETHOD(OnOpenSzFile)(THIS_ LPTSTR lpszFile, ULONG ulFlags) PURE;
+};
+typedef IExchExtAttachedFileEvents FAR * LPEXCHEXTATTACHEDFILEEVENTS;
+
+
+/*
+ * IExchExtPropertySheets
+ *
+ * Purpose:
+ * Interface implemented by Exchange client extensions that wish
+ * to add additional pages to the client's object property sheets.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExtPropertySheets
+
+DECLARE_INTERFACE_(IExchExtPropertySheets, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExtPropertySheet methods ***
+ STDMETHOD_(ULONG,GetMaxPageCount) (THIS_ ULONG ulFlags) PURE;
+ STDMETHOD(GetPages) (THIS_ LPEXCHEXTCALLBACK lpeecb, ULONG ulFlags,
+ LPPROPSHEETPAGE lppsp, ULONG FAR * lpcpsp) PURE;
+ STDMETHOD_(VOID,FreePages) (THIS_ LPPROPSHEETPAGE lppsp,
+ ULONG ulFlags, ULONG cpsp) PURE;
+};
+typedef IExchExtPropertySheets FAR * LPEXCHEXTPROPERTYSHEETS;
+
+
+/*
+ * IExchExtAdvancedCriteria
+ *
+ * Purpose:
+ * Interface implemented by Exchange client extensions that wish to
+ * implement an advanced criteria dialog.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExtAdvancedCriteria
+
+DECLARE_INTERFACE_(IExchExtAdvancedCriteria, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExtAdvancedCriteria methods ***
+ STDMETHOD(InstallAdvancedCriteria) (THIS_ HWND hwnd, LPSRestriction lpres,
+ BOOL fNot, LPENTRYLIST lpeidl,
+ ULONG ulFlags) PURE;
+ STDMETHOD(DoDialog) (THIS) PURE;
+ STDMETHOD_(VOID,Clear) (THIS) PURE;
+ STDMETHOD_(VOID,SetFolders) (THIS_ LPENTRYLIST lpeidl, ULONG ulFlags) PURE;
+ STDMETHOD(QueryRestriction) (THIS_ LPVOID lpvAllocBase,
+ LPSRestriction FAR * lppres,
+ LPSPropTagArray FAR * lppPropTags,
+ LPMAPINAMEID FAR * FAR * lpppPropNames,
+ BOOL * lpfNot, LPTSTR lpszDesc, ULONG cchDesc,
+ ULONG ulFlags) PURE;
+ STDMETHOD_(VOID,UninstallAdvancedCriteria) (THIS) PURE;
+};
+typedef IExchExtAdvancedCriteria FAR * LPEXCHEXTADVANCEDCRITERIA;
+
+
+/*
+ * IExchExtModeless
+ *
+ * Purpose:
+ * Interface implemented by Exchange client extensions that wish
+ * to create modeless UI.
+ */
+#undef INTERFACE
+#define INTERFACE IExchExtModeless
+
+DECLARE_INTERFACE_(IExchExtModeless, IUnknown)
+{
+ BEGIN_INTERFACE
+
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExchExtModeless methods ***
+ STDMETHOD(TranslateAccelerator) (THIS_ LPMSG pmsg) PURE;
+ STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE;
+};
+
+
+/*
+ * G U I D s
+ */
+
+
+#define DEFINE_EXCHEXTGUID(name, b) \
+ DEFINE_GUID(name, 0x00020D00 | (b), 0, 0, 0xC0,0,0,0,0,0,0,0x46)
+
+#ifndef NOEXCHEXTGUIDS
+DEFINE_EXCHEXTGUID(IID_IExchExtCallback, 0x10);
+DEFINE_EXCHEXTGUID(IID_IExchExt, 0x11);
+DEFINE_EXCHEXTGUID(IID_IExchExtCommands, 0x12);
+DEFINE_EXCHEXTGUID(IID_IExchExtUserEvents, 0x13);
+DEFINE_EXCHEXTGUID(IID_IExchExtSessionEvents, 0x14);
+DEFINE_EXCHEXTGUID(IID_IExchExtMessageEvents, 0x15);
+DEFINE_EXCHEXTGUID(IID_IExchExtAttachedFileEvents, 0x16);
+DEFINE_EXCHEXTGUID(IID_IExchExtPropertySheets, 0x17);
+DEFINE_EXCHEXTGUID(IID_IExchExtAdvancedCriteria, 0x18);
+DEFINE_EXCHEXTGUID(IID_IExchExtModeless, 0x19);
+DEFINE_EXCHEXTGUID(IID_IExchExtModelessCallback, 0x1a);
+#endif // NOEXCHEXTGUIDS
+
+
+/*
+ * C M D I D s
+ */
+
+
+// File
+#define EECMDID_File 10
+#define EECMDID_FileOpen 11
+#define EECMDID_FileSend 12
+#define EECMDID_FileSave 13
+#define EECMDID_FileSaveAs 14
+#define EECMDID_FileMove 16
+#define EECMDID_FileCopy 17
+#define EECMDID_FilePrint 25
+#define EECMDID_FileNewEntry 18
+#define EECMDID_FileNewMessage 19
+#define EECMDID_FileNewFolder 20
+#define EECMDID_FileAddToPAB 29
+#define EECMDID_FileDelete 21
+#define EECMDID_FileRename 22
+#define EECMDID_FileProperties 23
+#define EECMDID_FilePropertiesRecipients 24
+#define EECMDID_FileClose 30
+#define EECMDID_FileExit 32
+#define EECMDID_FileExitAndLogOff 33
+
+// Edit
+#define EECMDID_Edit 40
+#define EECMDID_EditUndo 41
+#define EECMDID_EditCut 42
+#define EECMDID_EditCopy 43
+#define EECMDID_EditPaste 44
+#define EECMDID_EditPasteSpecial 45
+#define EECMDID_EditSelectAll 46
+#define EECMDID_EditMarkAsRead 49
+#define EECMDID_EditMarkAsUnread 50
+#define EECMDID_EditMarkToRetrieve 52
+#define EECMDID_EditMarkToRetrieveACopy 53
+#define EECMDID_EditMarkToDelete 54
+#define EECMDID_EditUnmarkAll 55
+#define EECMDID_EditFind 56
+#define EECMDID_EditReplace 57
+#define EECMDID_EditLinks 59
+#define EECMDID_EditObject 60
+#define EECMDID_EditObjectConvert 61
+#ifdef DBCS
+#define EECMDID_EditFullShape 62
+#define EECMDID_EditHiraKataAlpha 63
+#define EECMDID_EditHangAlpha 64
+#define EECMDID_EditHanja 65
+#define EECMDID_EditRoman 66
+#define EECMDID_EditCode 67
+#endif
+
+// View
+#define EECMDID_View 70
+#define EECMDID_ViewFolders 71
+#define EECMDID_ViewToolbar 72
+#define EECMDID_ViewFormattingToolbar 73
+#define EECMDID_ViewStatusBar 74
+#define EECMDID_ViewNewWindow 75
+#define EECMDID_ViewColumns 79
+#define EECMDID_ViewSort 78
+#define EECMDID_ViewFilter 80
+#define EECMDID_ViewBccBox 91
+#define EECMDID_ViewPrevious 87
+#define EECMDID_ViewNext 88
+#ifdef DBCS
+#define EECMDID_ViewWritingMode 89
+#define EECMDID_ViewImeStatus 94
+#endif
+
+// Insert
+#define EECMDID_Insert 100
+#define EECMDID_InsertFile 101
+#define EECMDID_InsertMessage 102
+#define EECMDID_InsertObject 103
+#define EECMDID_InsertInkObject 104
+
+// Format
+#define EECMDID_Format 110
+#define EECMDID_FormatFont 111
+#define EECMDID_FormatParagraph 112
+
+// Tools
+#define EECMDID_Tools 120
+#define EECMDID_ToolsDeliverNowUsing 121
+#define EECMDID_ToolsDeliverNow 122
+#define EECMDID_ToolsSpelling 131
+#define EECMDID_ToolsAddressBook 123
+#define EECMDID_ToolsCheckNames 133
+#define EECMDID_ToolsFind 124
+#define EECMDID_ToolsConnect 126
+#define EECMDID_ToolsUpdateHeaders 127
+#define EECMDID_ToolsTransferMail 128
+#define EECMDID_ToolsDisconnect 129
+#define EECMDID_ToolsRemoteMail 130
+#define EECMDID_ToolsCustomizeToolbar 134
+#define EECMDID_ToolsServices 135
+#define EECMDID_ToolsOptions 136
+#ifdef DBCS
+#define EECMDID_ToolsWordRegistration 137
+#endif
+
+// Compose
+#define EECMDID_Compose 150
+#define EECMDID_ComposeNewMessage 151
+#define EECMDID_ComposeReplyToSender 154
+#define EECMDID_ComposeReplyToAll 155
+#define EECMDID_ComposeForward 156
+
+// Help
+#define EECMDID_Help 160
+#define EECMDID_HelpMicrosoftExchangeHelpTopics 161
+#define EECMDID_HelpAboutMicrosoftExchange 162
+
+// Header
+#define EECMDID_CtxHeader 203
+#define EECMDID_CtxHeaderSortAscending 204
+#define EECMDID_CtxHeaderSortDescending 205
+
+// In Folder
+#define EECMDID_CtxInFolder 206
+#define EECMDID_CtxInFolderChoose 207
+
+// Container
+#define EECMDID_CtxContainer 208
+#define EECMDID_CtxContainerProperties 209
+
+// Standard Toolbar
+#define EECMDID_Toolbar 220
+#define EECMDID_ToolbarPrint 221
+#define EECMDID_ToolbarReadReceipt 222
+#define EECMDID_ToolbarImportanceHigh 223
+#define EECMDID_ToolbarImportanceLow 224
+#define EECMDID_ToolbarFolderList 225
+#define EECMDID_ToolbarOpenParent 226
+#define EECMDID_ToolbarInbox 76
+#define EECMDID_ToolbarOutbox 77
+
+// Formatting Toolbar
+#define EECMDID_Formatting 230
+#define EECMDID_FormattingFont 231
+#define EECMDID_FormattingSize 232
+#define EECMDID_FormattingColor 233
+#define EECMDID_FormattingColorAuto 234
+#define EECMDID_FormattingColor1 235
+#define EECMDID_FormattingColor2 236
+#define EECMDID_FormattingColor3 237
+#define EECMDID_FormattingColor4 238
+#define EECMDID_FormattingColor5 239
+#define EECMDID_FormattingColor6 240
+#define EECMDID_FormattingColor7 241
+#define EECMDID_FormattingColor8 242
+#define EECMDID_FormattingColor9 243
+#define EECMDID_FormattingColor10 244
+#define EECMDID_FormattingColor11 245
+#define EECMDID_FormattingColor12 246
+#define EECMDID_FormattingColor13 247
+#define EECMDID_FormattingColor14 248
+#define EECMDID_FormattingColor15 249
+#define EECMDID_FormattingColor16 250
+#define EECMDID_FormattingBold 251
+#define EECMDID_FormattingItalic 252
+#define EECMDID_FormattingUnderline 253
+#define EECMDID_FormattingBullets 254
+#define EECMDID_FormattingDecreaseIndent 255
+#define EECMDID_FormattingIncreaseIndent 256
+#define EECMDID_FormattingLeft 257
+#define EECMDID_FormattingCenter 258
+#define EECMDID_FormattingRight 259
+
+// Note accelerators
+#define EECMDID_Accel 270
+#define EECMDID_AccelFont 271
+#define EECMDID_AccelSize 272
+#define EECMDID_AccelSizePlus1 273
+#define EECMDID_AccelSizeMinus1 274
+#define EECMDID_AccelBold 275
+#define EECMDID_AccelItalic 276
+#define EECMDID_AccelUnderline 277
+#define EECMDID_AccelLeft 278
+#define EECMDID_AccelCenter 279
+#define EECMDID_AccelRight 280
+#define EECMDID_AccelBullets 281
+#define EECMDID_AccelNoFormatting 282
+#define EECMDID_AccelRepeatFind 283
+#define EECMDID_AccelContextHelp 284
+#define EECMDID_AccelNextWindow 285
+#define EECMDID_AccelPrevWindow 286
+#define EECMDID_AccelCtrlTab 287
+#define EECMDID_AccelUndo 288
+#define EECMDID_AccelCut 289
+#define EECMDID_AccelCopy 290
+#define EECMDID_AccelPaste 291
+#define EECMDID_AccelSubject 292
+#define EECMDID_AccelContextHelpOff 293
+#define EECMDID_AccelDecreaseIndent 294
+#define EECMDID_AccelIncreaseIndent 295
+#define EECMDID_AccelColor 296
+
+// Edit.Object
+#define EECMDID_ObjectMin 300
+#define EECMDID_ObjectMax 399
+
+// Tools.Remote Mail
+#define EECMDID_RemoteMailMin 600
+#define EECMDID_RemoteMailMax 699
+
+// Tools.Deliver Now Using
+#define EECMDID_DeliverNowUsingMin 700
+#define EECMDID_DeliverNowUsingMax 799
+
+// Form verbs
+#define EECMDID_FormVerbMin 800
+#define EECMDID_FormVerbMax 899
+
+// For backward compatibility with earlier header versions
+#define EECMDID_ViewInbox EECMDID_ToolbarInbox
+#define EECMDID_ViewOutbox EECMDID_ToolbarOutbox
+#define EECMDID_ViewItemAbove EECMDID_ViewPrevious
+#define EECMDID_ViewItemBelow EECMDID_ViewNext
+#define EECMDID_ToolsFindItem EECMDID_ToolsFind
+#define EECMDID_HelpUsersGuideContents EECMDID_HelpMicrosoftExchangeHelpTopics
+#define EECMDID_HelpAbout EECMDID_HelpAboutMicrosoftExchange
+
+#endif // EXCHEXT_H
diff --git a/public/sdk/inc/exchextx.h b/public/sdk/inc/exchextx.h
new file mode 100644
index 000000000..6e203af46
--- /dev/null
+++ b/public/sdk/inc/exchextx.h
@@ -0,0 +1,49 @@
+#ifndef EXCHEXTX_H
+#define EXCHEXTX_H
+
+
+/*
+ * E X C H E X T X . H
+ *
+ * Declarations for extensions specific to the enhanced Microsoft
+ * Exchange client.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+
+// File
+#define EECMDID_FileCreateShortcut 36
+
+// Edit
+#define EECMDID_EditMarkAllAsRead 51
+
+// View
+#define EECMDID_ViewGroup 82
+#define EECMDID_ViewDefineViews 83
+#define EECMDID_ViewPersonalViews 84
+#define EECMDID_ViewFolderViews 85
+#define EECMDID_ViewChangeWindowTitle 86
+#define EECMDID_ViewFromBox 90
+#define EECMDID_ViewExpandAll 92
+#define EECMDID_ViewCollapseAll 93
+#define EECMDID_ViewFullHeader 95
+
+// Insert
+#define EECMDID_InsertAutoSignature 105
+
+// Compose
+#define EECMDID_ComposePostToFolder 152
+#define EECMDID_ComposeReplyToFolder 153
+
+// View.Personal Views
+#define EECMDID_PersonalViewsMin 400
+#define EECMDID_PersonalViewsMax 499
+
+// View.Folder Views
+#define EECMDID_FolderViewsMin 500
+#define EECMDID_FolderViewsMax 599
+
+// Tools
+#define EECMDID_ToolsAutoSignature 125
+#endif // EXCHEXTX_H
diff --git a/public/sdk/inc/ext.h b/public/sdk/inc/ext.h
new file mode 100644
index 000000000..07dc03026
--- /dev/null
+++ b/public/sdk/inc/ext.h
@@ -0,0 +1,599 @@
+/*++
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ ext.h
+
+Abstract:
+
+ Microsoft Editor extension definitions.
+
+#ifndef SHIP
+
+ NOTES:
+ THIS FILE IS SHIPPED WITH THE PRODUCT!!!!
+
+ BE VERY carefull what gets put into this file. Technically, if it
+ is NOT required for extension writers, it does NOT belong here.
+
+ 1) This note, the file history and all code within "#ifndef SHIP" and
+ "#if defined EDITOR" conditionals should be REMOVED before shipping.
+
+Author:
+
+ Ramon Juan San Andres (ramonsa) 06-Nov-1990 ported from M 1.02
+
+Revision History:
+
+ 26-Nov-1991 mz Strip off near/far
+
+
+#endif
+
+--*/
+
+
+#include <windows.h>
+
+
+//
+// Macro Definitions
+//
+// BUFLEN is the maximum line length that can be passed or will be returned
+// by the editor.
+//
+#define BUFLEN 251
+
+//
+// NT versions of the editor no longer use 16-bit specific attributes.
+// Set them into ignore state
+//
+
+#define near
+#define far
+#define LOADDS
+#define EXPORT
+#define EXTERNAL
+#define INTERNAL
+
+#undef pascal
+#define pascal
+
+//
+// RQ_... are various request types supported for Get/Set EditorObject
+//
+#define RQ_FILE 0x1000 // GetEditorObject: File request
+#define RQ_FILE_HANDLE 0x1000 // File Handle
+#define RQ_FILE_NAME 0x1100 // ASCIIZ filename
+#define RQ_FILE_FLAGS 0x1200 // flags
+#define RQ_FILE_REFCNT 0x1300 // reference count
+#define RQ_WIN 0x2000 // Window request
+#define RQ_WIN_HANDLE 0x2000 // Window Handle
+#define RQ_WIN_CONTENTS 0x2100 // Window Contents
+#define RQ_WIN_CUR 0x2200 // Current Window
+#define RQ_COLOR 0x9000 // Color request
+#define RQ_CLIP 0xf000 // clipboard type
+
+#define RQ_THIS_OBJECT 0x00FF // function is directed to input object
+
+#define RQ_FILE_INIT 0x00FE // file is init file
+
+//
+// toPif is used when placing numeric or boolean switches in the swiDesc table
+// to eliminate C 5.X compiler warnings.
+//
+// For example: { "Switchname", toPIF(switchvar), SWI_BOOLEAN },
+//
+#define toPIF(x) (PIF)(long)(void *)&x
+
+
+//
+// Editor color table endicies. (Colors USERCOLORMIN - USERCOLORMAX are
+// unassigned and available for extension use).
+//
+#define FGCOLOR 21 // foreground (normal) color
+#define HGCOLOR (1 + FGCOLOR) // highlighted region color
+#define INFCOLOR (1 + HGCOLOR) // information color
+#define SELCOLOR (1 + INFCOLOR) // selection color
+#define WDCOLOR (1 + SELCOLOR) // window border color
+#define STACOLOR (1 + WDCOLOR) // status line color
+#define ERRCOLOR (1 + STACOLOR) // error message color
+#define USERCOLORMIN (1 + ERRCOLOR) // begining of extension colors
+#define USERCOLORMAX 35 // end of extension colors
+
+
+//
+// General type Definitions
+//
+typedef int COL; // column or position with line
+
+#if !defined (EDITOR)
+
+#if !defined( _FLAGTYPE_DEFINED_ )
+#define _FLAGTYPE_DEFINED_ 1
+typedef char flagType;
+#endif
+typedef long LINE; // line number within file
+typedef void* PFILE; // editor file handle
+
+#if !defined (EXTINT)
+
+typedef void* PWND; // editor window handle
+
+#endif // EXTINT
+
+#endif // EDITOR
+
+
+typedef char buffer[BUFLEN]; // miscellaneous buffer
+typedef char linebuf[BUFLEN]; // line buffer
+typedef char pathbuf[MAX_PATH]; // Pathname buffer
+
+
+typedef struct fl { // file location
+ LINE lin; // - line number
+ COL col; // - column
+} fl;
+
+typedef struct sl { // screen location
+ int lin; // - line number
+ int col; // - column
+} sl;
+
+typedef struct rn { // file range
+ fl flFirst; // - Lower line, or leftmost col
+ fl flLast; // - Higher, or rightmost
+} rn;
+
+
+typedef struct lineAttr { // Line color attribute info
+ unsigned char attr; // - Attribute of piece
+ unsigned char len; // - Bytes in colored piece
+} lineAttr;
+
+#if !defined (cwExtraWnd)
+
+typedef struct ARC {
+ BYTE axLeft;
+ BYTE ayTop;
+ BYTE axRight;
+ BYTE ayBottom;
+} ARC;
+#endif // cwExtraWnd
+
+
+//
+// Argument defininition structures.
+//
+// We define a structure for each of the argument types that may be
+// passed to an extension function. Then, we define the structure
+// argType which is used to pass these arguments around in a union.
+//
+typedef struct noargType { // no argument specified
+ LINE y; // - cursor line
+ COL x; // - cursor column
+} NOARGTYPE;
+
+typedef struct textargType { // text argument specified
+ int cArg; // - count of <arg>s pressed
+ LINE y; // - cursor line
+ COL x; // - cursor column
+ char *pText; // - ptr to text of arg
+} TEXTARGTYPE;
+
+typedef struct nullargType { // null argument specified
+ int cArg; // - count of <arg>s pressed
+ LINE y; // - cursor line
+ COL x; // - cursor column
+} NULLARGTYPE;
+
+typedef struct lineargType { // line argument specified
+ int cArg; // - count of <arg>s pressed
+ LINE yStart; // - starting line of range
+ LINE yEnd; // - ending line of range
+} LINEARGTYPE;
+
+typedef struct streamargType { // stream argument specified
+ int cArg; // - count of <arg>s pressed
+ LINE yStart; // - starting line of region
+ COL xStart; // - starting column of region
+ LINE yEnd; // - ending line of region
+ COL xEnd; // - ending column of region
+} STREAMARGTYPE;
+
+typedef struct boxargType { // box argument specified
+ int cArg; // - count of <arg>s pressed
+ LINE yTop; // - top line of box
+ LINE yBottom; // - bottom line of bix
+ COL xLeft; // - left column of box
+ COL xRight; // - right column of box
+} BOXARGTYPE;
+
+typedef union ARGUNION {
+ struct noargType noarg;
+ struct textargType textarg;
+ struct nullargType nullarg;
+ struct lineargType linearg;
+ struct streamargType streamarg;
+ struct boxargType boxarg;
+} ARGUNION;
+
+typedef struct argType {
+ int argType;
+ ARGUNION arg;
+} ARG;
+
+
+
+//
+// Function definition table definitions
+//
+typedef unsigned long CMDDATA;
+typedef flagType (*funcCmd)(CMDDATA argData, ARG *pArg, flagType fMeta);
+
+typedef struct cmdDesc { // function definition entry
+ char *name; // - pointer to name of fcn
+ funcCmd func; // - pointer to function
+ CMDDATA arg; // - used internally by editor
+ unsigned argType; // - user args allowed
+} CMD, *PCMD;
+
+
+typedef unsigned short KeyHandle;
+
+#define NOARG 0x0001 // no argument specified
+#define TEXTARG 0x0002 // text specified
+#define NULLARG 0x0004 // arg + no cursor movement
+#define NULLEOL 0x0008 // null arg => text from arg->eol
+#define NULLEOW 0x0010 // null arg => text from arg->end word
+#define LINEARG 0x0020 // range of entire lines
+#define STREAMARG 0x0040 // from low-to-high, viewed 1-D
+#define BOXARG 0x0080 // box delimited by arg, cursor
+
+#define NUMARG 0x0100 // text => delta to y position
+#define MARKARG 0x0200 // text => mark at end of arg
+
+#define BOXSTR 0x0400 // single-line box => text
+
+#define FASTKEY 0x0800 // Fast repeat function
+#define MODIFIES 0x1000 // modifies file
+#define KEEPMETA 0x2000 // do not eat meta flag
+#define WINDOWFUNC 0x4000 // moves window
+#define CURSORFUNC 0x8000 // moves cursor
+
+
+
+//
+// Switch definition table defintions
+//
+typedef flagType (*PIF)(char *);
+typedef char* (*PIFC)(char *);
+
+typedef union swiAct { // switch location or routine
+ PIF pFunc; // - routine for text
+ PIFC pFunc2; // - routine for text
+ int *ival; // - integer value for NUMERIC
+ flagType *fval; // - flag value for BOOLEAN
+} swiAct;
+
+typedef struct swiDesc { // switch definition entry
+ char *name; // - pointer to name of switch
+ swiAct act; // - pointer to value or fcn
+ int type; // - flags defining switch type
+} SWI, *PSWI;
+
+
+#define SWI_BOOLEAN 0 // Boolean switch
+#define SWI_NUMERIC 1 // hex or decimal switch
+#define SWI_SCREEN 4 // switch affects screen
+#define SWI_SPECIAL 5 // textual switch
+#define SWI_SPECIAL2 6 // #5, returning an error string
+#define RADIX10 (0x0A << 8) // numeric switch is decimal
+#define RADIX16 (0x10 << 8) // numeric switch is hex
+
+
+//
+// Get/Set EditorObject data structures
+//
+typedef struct winContents{ // define window contents
+ PFILE pFile; // - handle of file displayed
+ ARC arcWin; // - location of window
+ fl flPos; // - upper left corner wrt file
+} winContents;
+
+
+//
+// FILE flags values
+//
+#define DIRTY 0x01 // file had been modified
+#define FAKE 0x02 // file is a pseudo file
+#define REAL 0x04 // file has been read from disk
+#define DOSFILE 0x08 // file has CR-LF
+#define TEMP 0x10 // file is a temp file
+#define NEW 0x20 // file has been created by editor
+#define REFRESH 0x40 // file needs to be refreshed
+#define READONLY 0x80 // file may not be editted
+
+#define DISKRO 0x0100 // file on disk is read only
+#define MODE1 0x0200 // Meaning depends on the file
+#define VALMARKS 0x0400 // file has valid marks defined
+
+
+
+//
+// Event processing definitions
+//
+typedef struct mouseevent { // mouse event data
+ short msg; // type of message
+ short wParam; // CW wParam
+ long lParam; // CW lParam
+ sl sl; // screen location of mouse event
+ fl fl; // file location (if event in win)
+} MOUSEEVENT, *PMOUSEEVENT;
+
+
+typedef struct KEY_DATA {
+ BYTE Ascii; // Ascii code
+ BYTE Scan; // Scan code
+ BYTE Flags; // Flags
+ BYTE Unused; // Unused byte
+} KEY_DATA, *PKEY_DATA;
+
+//
+// Following are the values for the Flags field of KEY_DATA
+//
+#define FLAG_SHIFT 0x01
+#define FLAG_CTRL 0x04
+#define FLAG_ALT 0x08
+#define FLAG_NUMLOCK 0x20
+
+
+typedef union KEY_INFO {
+ KEY_DATA KeyData;
+ long LongData;
+} KEY_INFO, *PKEY_INFO;
+
+
+typedef union EVTARGUNION {
+ KEY_INFO key; // keystroke for key event
+ char * pfn; // asciiz filename
+ PMOUSEEVENT pmouse; // ptr to mouse event data
+ union Rec *pUndoRec; // undo information
+} EVTARGUNION;
+
+typedef struct EVTargs { // arguments to event dispatches
+ PFILE pfile; // -file handle for file events
+ EVTARGUNION arg;
+} EVTargs, *PEVTARGS;
+
+
+typedef struct eventType { // event definition struct
+ unsigned evtType; // - type
+ flagType (*func)(EVTargs *); // - handler
+ struct eventType *pEVTNext; // - next handler in list
+ PFILE focus; // - applicable focus
+ EVTargs arg; // - applicable agruments
+} EVT, *PEVT;
+
+#define EVT_RAWKEY 1 // ALL keystrokes
+#define EVT_KEY 2 // Editting keystrokes
+#define EVT_GETFOCUS 3 // file GETs focus.
+#define EVT_LOSEFOCUS 4 // file looses focus.
+#define EVT_EXIT 5 // about to exit.
+#define EVT_SHELL 6 // about to sell or compile
+#define EVT_UNLOAD 7 // about to be unloaded.
+#define EVT_IDLE 8 // idle event
+#define EVT_CANCEL 9 // do-nothing cancel
+#define EVT_REFRESH 10 // about to refresh a file
+#define EVT_FILEREADSTART 11 // about to read file
+#define EVT_FILEREADEND 12 // finshed reading file
+#define EVT_FILEWRITESTART 13 // about to write file
+#define EVT_FILEWRITEEND 14 // finshed writing file
+// 15
+// 16
+// 17
+// 18
+// 19
+#define EVT_EDIT 20 // editting action
+#define EVT_UNDO 21 // undone action
+#define EVT_REDO 22 // redone action
+
+
+//
+// Undo, Redo and Edit event structs
+//
+#define EVENT_REPLACE 0
+#define EVENT_INSERT 1
+#define EVENT_DELETE 2
+#define EVENT_BOUNDARY 3
+
+#if !defined (EDITOR)
+typedef struct replaceRec {
+ int op; // operation
+ long dummy[2]; // editor interal
+ LINE length; // length of repalcement
+ LINE line; // start of replacement
+} REPLACEREC;
+
+typedef struct insertRec {
+ int op; // operation
+ long dummy[2]; // editor interal
+ LINE length; // length of file
+ LINE line; // line number that was operated on
+ LINE cLine; // number of lines inserted
+} INSERTREC;
+
+typedef struct deleteRec {
+ int op; // operation
+ long dummy[2]; // editor interal
+ LINE length; // length of file
+ LINE line; // line number that was operated on
+ LINE cLine; // Number of lines deleted
+} DELETEREC;
+
+typedef struct boundRec {
+ int op; // operation (BOUND)
+ long dummy[2]; // editor interal
+ int flags; // flags of file
+ long modify; // Date/Time of last modify
+ fl flWindow; // position in file of window
+ fl flCursor; // position in file of cursor
+} BOUNDREC;
+
+typedef union Rec {
+ struct replaceRec r;
+ struct insertRec i;
+ struct deleteRec d;
+ struct boundRec b;
+} REC;
+#endif // editor
+
+
+
+//
+// Build command definitions
+//
+#define MAKE_FILE 1 // rule is for a filename
+#define MAKE_SUFFIX 2 // rule is a suffix rule
+#define MAKE_TOOL 4 // rule is for a tool
+#define MAKE_BLDMACRO 8 // rule is for a build macro
+#define MAKE_DEBUG 0x80 // rule is debug version
+
+
+#define LOWVERSION 0x0014 // lowest version of extensions we handle
+#define HIGHVERSION 0x0014 // highest version of extensions we handle
+
+#define VERSION 0x0014 // our current version
+
+typedef struct ExtensionTable {
+ long version;
+ long cbStruct;
+ PCMD cmdTable;
+ PSWI swiTable;
+ struct CallBack {
+ PFILE (*AddFile) (char *);
+ flagType (*BadArg) (void);
+ char (*Confirm) (char *, char *);
+ void (*CopyBox) (PFILE, PFILE, COL, LINE, COL, LINE, COL, LINE);
+ void (*CopyLine) (PFILE, PFILE, LINE, LINE, LINE);
+ void (*CopyStream) (PFILE, PFILE, COL, LINE, COL, LINE, COL, LINE);
+ void (*DeRegisterEvent) (EVT *);
+ flagType (*DeclareEvent) (unsigned, EVTargs *);
+ void (*DelBox) (PFILE, COL, LINE, COL, LINE);
+ void (*DelFile) (PFILE);
+ void (*DelLine) (PFILE, LINE, LINE);
+ void (*DelStream) (PFILE, COL, LINE, COL, LINE);
+ void (*Display) (void);
+ int (*DoMessage) (char *);
+ flagType (*fChangeFile) (flagType, char *);
+ void (*Free) (void *);
+ flagType (*fExecute) (char *);
+ int (*fGetMake) (int, char *, char *);
+ LINE (*FileLength) (PFILE);
+ PFILE (*FileNameToHandle) (char *, char *);
+ flagType (*FileRead) (char *, PFILE);
+ flagType (*FileWrite) (char *, PFILE);
+ PSWI (*FindSwitch) (char *);
+ flagType (*fSetMake) (int, char *, char *);
+ flagType (*GetColor) (LINE, lineAttr *, PFILE);
+ void (*GetTextCursor) (COL *, LINE *);
+ flagType (*GetEditorObject) (unsigned, void *, void *);
+ char * (*GetEnv) (char *);
+ int (*GetLine) (LINE, char *, PFILE);
+ char * (*GetListEntry) (PCMD, int, flagType);
+ flagType (*GetString) (char *, char *, flagType);
+ int (*KbHook) (void);
+ void (*KbUnHook) (void);
+ void * (*Malloc) (size_t);
+ void (*MoveCur) (COL, LINE);
+ char * (*NameToKeys) (char *, char *);
+ PCMD (*NameToFunc) (char *);
+ flagType (*pFileToTop) (PFILE);
+ void (*PutColor) (LINE, lineAttr *, PFILE);
+ void (*PutLine) (LINE, char *, PFILE);
+ int (*REsearch) (PFILE, flagType, flagType, flagType, flagType, char *, fl *);
+ long (*ReadChar) (void);
+ PCMD (*ReadCmd) (void);
+ void (*RegisterEvent) (EVT *);
+ void (*RemoveFile) (PFILE);
+ flagType (*Replace) (char, COL, LINE, PFILE, flagType);
+ char * (*ScanList) (PCMD, flagType);
+ int (*search) (PFILE, flagType, flagType, flagType, flagType, char *, fl *);
+ void (*SetColor) (PFILE, LINE, COL, COL, int);
+ flagType (*SetEditorObject) (unsigned, void *, void *);
+ void (*SetHiLite) (PFILE, rn, int);
+ flagType (*SetKey) (char *, char *);
+ flagType (*SplitWnd) (PWND, flagType, int);
+ } CallBack;
+ } EXTTAB;
+
+//
+// Editor low level function prototypes.
+//
+// This list defines the routines within the editor which may be called
+// by extension functions.
+//
+#if !defined (EDITOR)
+
+extern EXTTAB ModInfo;
+
+#define AddFile(x) ModInfo.CallBack.AddFile(x)
+#define BadArg ModInfo.CallBack.BadArg
+#define Confirm(x,y) ModInfo.CallBack.Confirm(x,y)
+#define CopyBox(x,y,z,a,b,c,d,e) ModInfo.CallBack.CopyBox(x,y,z,a,b,c,d,e)
+#define CopyLine(x,y,z,a,b) ModInfo.CallBack.CopyLine(x,y,z,a,b)
+#define CopyStream(x,y,z,a,b,c,d,e) ModInfo.CallBack.CopyStream(x,y,z,a,b,c,d,e)
+#define DeRegisterEvent(x) ModInfo.CallBack.DeRegisterEvent(x)
+#define DeclareEvent(x,y) ModInfo.CallBack.DeclareEvent(x,y)
+#define DelBox(x,y,z,a,b) ModInfo.CallBack.DelBox(x,y,z,a,b)
+#define DelFile(x) ModInfo.CallBack.DelFile(x)
+#define DelLine(x,y,z) ModInfo.CallBack.DelLine(x,y,z)
+#define DelStream(x,y,z,a,b) ModInfo.CallBack.DelStream(x,y,z,a,b)
+#define Display ModInfo.CallBack.Display
+#define DoMessage(x) ModInfo.CallBack.DoMessage(x)
+#define fChangeFile(x,y) ModInfo.CallBack.fChangeFile(x,y)
+#define Free(x) ModInfo.CallBack.Free(x)
+#define fExecute(x) ModInfo.CallBack.fExecute(x)
+#define fGetMake(x,y,z) ModInfo.CallBack.fGetMake(x,y,z)
+#define FileLength(x) ModInfo.CallBack.FileLength(x)
+#define FileNameToHandle(x,y) ModInfo.CallBack.FileNameToHandle(x,y)
+#define FileRead(x,y) ModInfo.CallBack.FileRead(x,y)
+#define FileWrite(x,y) ModInfo.CallBack.FileWrite(x,y)
+#define FindSwitch(x) ModInfo.CallBack.FindSwitch(x)
+#define fSetMake(x,y,z) ModInfo.CallBack.fSetMake(x,y,z)
+#define GetColor(x,y,z) ModInfo.CallBack.GetColor(x,y,z)
+#define GetTextCursor(x,y) ModInfo.CallBack.GetTextCursor(x,y)
+#define GetEditorObject(x,y,z) ModInfo.CallBack.GetEditorObject(x,y,z)
+#define GetEnv(x) ModInfo.CallBack.GetEnv(x)
+#define GetLine(x,y,z) ModInfo.CallBack.GetLine(x,y,z)
+#define GetListEntry(x,y,z) ModInfo.CallBack.GetListEntry(x,y,z)
+#define GetString(x,y,z) ModInfo.CallBack.GetString(x,y,z)
+#define KbHook ModInfo.CallBack.KbHook
+#define KbUnHook ModInfo.CallBack.KbUnHook
+#define Malloc(x) ModInfo.CallBack.Malloc(x)
+#define MoveCur(x,y) ModInfo.CallBack.MoveCur(x,y)
+#define NameToKeys(x,y) ModInfo.CallBack.NameToKeys(x,y)
+#define NameToFunc(x) ModInfo.CallBack.NameToFunc(x)
+#define pFileToTop(x) ModInfo.CallBack.pFileToTop(x)
+#define PutColor(x,y,z) ModInfo.CallBack.PutColor(x,y,z)
+#define PutLine(x,y,z) ModInfo.CallBack.PutLine(x,y,z)
+#define REsearch(x,y,z,a,b,c,d) ModInfo.CallBack.REsearch(x,y,z,a,b,c,d)
+#define ReadChar ModInfo.CallBack.ReadChar
+#define ReadCmd ModInfo.CallBack.ReadCmd
+#define RegisterEvent(x) ModInfo.CallBack.RegisterEvent(x)
+#define RemoveFile(x) ModInfo.CallBack.RemoveFile(x)
+#define Replace(x,y,z,a,b) ModInfo.CallBack.Replace(x,y,z,a,b)
+#define ScanList(x,y) ModInfo.CallBack.ScanList(x,y)
+#define search(x,y,z,a,b,c,d) ModInfo.CallBack.search(x,y,z,a,b,c,d)
+#define SetColor(x,y,z,a,b) ModInfo.CallBack.SetColor(x,y,z,a,b)
+#define SetEditorObject(x,y,z) ModInfo.CallBack.SetEditorObject(x,y,z)
+#define SetHiLite(x,y,z) ModInfo.CallBack.SetHiLite(x,y,z)
+#define SetKey(x,y) ModInfo.CallBack.SetKey(x,y)
+#define SplitWnd(x,y,z) ModInfo.CallBack.SplitWnd(x,y,z)
+
+
+void WhenLoaded (void);
+
+#endif // EDITOR
diff --git a/public/sdk/inc/extcon.h b/public/sdk/inc/extcon.h
new file mode 100644
index 000000000..fc2d76c87
--- /dev/null
+++ b/public/sdk/inc/extcon.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: extcon.h
+//
+// Contents: Replacement for extcon.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/fasttest.inc b/public/sdk/inc/fasttest.inc
new file mode 100644
index 000000000..8519732d8
--- /dev/null
+++ b/public/sdk/inc/fasttest.inc
@@ -0,0 +1,314 @@
+'FastTest.inc - definitions/declarations for Fast Test routines
+'
+' Copyright (c) 1991-1992, Microsoft Corporation. All rights reserved.
+'
+'Purpose:
+' This file declares the functions, constants and variables
+' used by the Fast Test routines.
+'
+'NOTES:
+' A common code sequence is used throughout to catch unexpected errors
+' using the ON ERROR command. The sequence is explained in this note
+' but not each time that it is used.
+'
+' gErrorType = ET_NEXT ' Global variable to indicate how to handle
+' ' an unexpected error:
+' ' ET_NEXT : save that error happened
+' ' and continue on next statement
+' ' ET_NOTHING : let driver catch unexpected
+' ' errors with message
+' ' ET_LOG : error happened in log routine
+'
+' ' some code that could cause runtime errors
+' fh1% = FREEFILE ' out of handles?
+' OPEN stFileSpec1$ FOR INPUT AS #fh1% ' file doesn't exist?
+' fh2% = FREEFILE ' out of handles?
+' OPEN stFileSpec2$ FOR INPUT AS #fh2% ' file doesn't exist?
+'
+' IF gfError THEN ' since ET_NEXT was used above, we would
+' ' execute this block if an error had
+' ' occurred.
+' XLogFailure "Could not open files for XFileCmp" ' log a failure
+' ' specific to this section of code
+' ' if XSetTerminate is called to have scripts continue in event
+' ' of errors, then the script will continue executing here
+' gErrorType = ET_NOTHING ' reset so other unexpected errors are
+' ' caught
+' gfError = FALSE ' reset because we logged this already
+' EXIT SUB ' can't continue with this function,
+' ' something went wrong
+' END IF
+
+
+
+'$DEFINE TESTCTRL
+'$DEFINE TESTEVNT
+'$INCLUDE 'MSTEST.inc'
+'$INCLUDE 'WNAPIDEC.INC'
+
+' XLog constants to determine where to log information to
+CONST LOG_DISK = 2 'log to disk
+CONST LOG_SCREEN = 4 'log to screen (viewport in testdrvr)
+CONST LOG_COM1 = 8 'log to COM1 port
+CONST LOG_COM2 = 16 'log to COM2 port
+CONST LOG_MSGBOX = 32 'log the string in a msgbox (Pause in testdrvr)
+
+' Mouse button constants that map to QueMouse function names, X functions
+' can use either ones
+CONST LBUTTON% = VK_LBUTTON
+CONST MBUTTON% = VK_MBUTTON
+CONST RBUTTON% = VK_RBUTTON
+
+'Global to be used to describe Log Options by ORing above Const's
+GLOBAL gfLogOptions%
+'Global to be used to save above flag when logging is temporarily turned off.
+GLOBAL gfTmpLogOptions%
+
+gfLogOptions = LOG_SCREEN 'default to showing in viewport
+gfTmpLogOptions = LOG_SCREEN 'default to showing in viewport
+
+GLOBAL gsCurrentDir$
+gsCurrentDir$ = curdir$ ' get current directory that started execution
+
+' Global variable to hold log file name
+GLOBAL gsLogFileName$
+gsLogFileName$ = gsCurrentDir$ + "\FASTTEST.LOG"
+
+' Global variable to hold string to use as the keystrokes necessary
+' to close the app in the case of errors
+GLOBAL gsCleanup$
+gsCleanup$ = "{esc 5}%( )c" ' five escapes, alt-space C (for close)
+
+' Global variable to hold class name of app
+GLOBAL gsAppClassname$
+gsAppClassname$ = ""
+
+' Global variable to hold state of whether to terminate on XLogFailure
+GLOBAL gfTerminate%
+gfTerminate% = TRUE ' default to terminate at first failure
+
+' Global variable that indicates if failure occured
+GLOBAL gfFailure%
+gfFailure% = FALSE
+
+'Global variable that indicates an ON ERROR occurred
+GLOBAL gfError%
+gfError% = FALSE
+
+'Global variable that is the string value for the dialog window class
+GLOBAL gsDialogClass$
+gsDialogClass$ = "#32770"
+
+
+
+' Error Type constants (don't use 0)
+CONST ET_NOTHING = 1 ' no handling, log unexpected runtime error
+CONST ET_NEXT = 2 ' flag error, continue next statement
+CONST ET_LOG = 3 ' error happened in log routines, inform user elsewise
+
+'Global variable that shows what type of error to handle
+GLOBAL gErrorType%
+gErrorType% = ET_NOTHING
+
+
+'Prototypes from FTestLog.mst
+DECLARE SUB XSetLogFilename(sFilename$)
+DECLARE SUB XSetTerminate(fTerminate%)
+DECLARE SUB XLog (stLog$)
+DECLARE SUB XLogBanner(lpszInput$)
+DECLARE SUB XLogWarning(lpszInput$)
+DECLARE SUB XLogFailure(stFailure$)
+DECLARE SUB XFailureCheck
+DECLARE SUB XSetLogOptions (wLogOptions%)
+DECLARE SUB XLogOff ()
+DECLARE SUB XLogOn ()
+DECLARE SUB XDialogBoxExists(s$)
+DECLARE SUB XDialogBoxNotExists(s$)
+DECLARE SUB XWaitDialogBox(s$, WaitTime%)
+DECLARE SUB XButtonExists(stButton$)
+DECLARE SUB XButtonNotExists(stButton$)
+DECLARE SUB XButtonEnabled(stButton$)
+DECLARE SUB XButtonNotEnabled(stButton$)
+DECLARE SUB XClickButton(stButtonName$)
+DECLARE SUB XListBoxExists(stListBox$)
+DECLARE SUB XListBoxNotExists(stListBox$)
+DECLARE SUB XFocusListBox(stListBox$)
+DECLARE SUB XListBoxItemExists (stListBox$, stListBoxItem$)
+DECLARE SUB XListBoxItemNotExists (stListBox$, stListBoxItem$)
+DECLARE SUB XClickListBoxItem (stListBox$, stListBoxItem$)
+DECLARE SUB XDblClickListBoxItem (stListBox$, stListBoxItem$)
+DECLARE SUB XComboBoxExists(stComboBox$)
+DECLARE SUB XComboBoxNotExists(stComboBox$)
+DECLARE SUB XFocusComboBox(stComboBox$)
+DECLARE SUB XComboBoxItemExists (stComboBox$, stComboBoxItem$)
+DECLARE SUB XComboBoxItemNotExists (stComboBox$, stComboBoxItem$)
+DECLARE SUB XClickComboBoxItem (stComboBox$, stComboBoxItem$)
+DECLARE SUB XDblClickComboBoxItem (stComboBox$, stComboBoxItem$)
+DECLARE SUB XCheckBoxExists(stCheckBox$)
+DECLARE SUB XCheckBoxNotExists(stCheckBox$)
+DECLARE SUB XCheckBoxChecked(stCheckBox$)
+DECLARE SUB XCheckBoxNotChecked(stCheckBox$)
+DECLARE SUB XCheckBoxEnabled(stCheckBox$)
+DECLARE SUB XCheckBoxNotEnabled(stCheckBox$)
+DECLARE SUB XClickCheckBox(stCheckBox$)
+DECLARE SUB XEditTextExists(stEditText$)
+DECLARE SUB XEditTextNotExists(stEditTextNot$)
+DECLARE SUB XSetEditText (stEditCaption$, stEditText$)
+DECLARE SUB XOptionButtonExists(stOptionButton$)
+DECLARE SUB XOptionButtonNotExists(stOptionButton$)
+DECLARE SUB XOptionButtonEnabled(stOptionButton$)
+DECLARE SUB XOptionButtonNotEnabled(stOptionButton$)
+DECLARE SUB XOptionButtonChecked(stOptionButton$)
+DECLARE SUB XOptionButtonNotChecked(stOptionButton$)
+DECLARE SUB XClickOptionButton(stOptionButton$)
+DECLARE FUNCTION BDialogBoxExists%(s$)
+DECLARE FUNCTION BButtonExists%(stButtonName$)
+DECLARE FUNCTION BButtonEnabled%(stButtonName$)
+DECLARE FUNCTION BListBoxExists%(stListBox$)
+DECLARE FUNCTION IGetListBoxItemCount%(stListBox$)
+DECLARE FUNCTION BListBoxItemExists%(stListBox$, stListBoxItem$)
+DECLARE FUNCTION SGetListBoxItemText$(stListBox$)
+DECLARE FUNCTION BComboBoxExists%(stComboBox$)
+DECLARE FUNCTION IGetComboBoxItemCount%(stComboBox$)
+DECLARE FUNCTION BComboBoxItemExists%(stComboBox$, stComboBoxItem$)
+DECLARE FUNCTION SGetComboBoxItemText$(stComboBox$)
+DECLARE FUNCTION BCheckBoxExists%(stCheckBox$)
+DECLARE FUNCTION BCheckBoxChecked%(stCheckBox$)
+DECLARE FUNCTION BCheckBoxEnabled%(stCheckBox$)
+DECLARE FUNCTION BEditTextExists%(stEditText$)
+DECLARE FUNCTION SGetEditText$(stEditCaption$)
+DECLARE FUNCTION BOptionButtonExists%(stOptionButton$)
+DECLARE FUNCTION BOptionButtonEnabled%(stOptionButton$)
+DECLARE FUNCTION BOptionButtonChecked%(stOptionButton$)
+
+'Prototypes from FTestKey.mst
+DECLARE SUB XKey (s$)
+DECLARE SUB XAlt (s$)
+DECLARE SUB XCtrl (s$)
+DECLARE SUB XShift (s$)
+DECLARE SUB XCtrlAlt (s$)
+DECLARE SUB XAltShift (s$)
+DECLARE SUB XCtrlShift (s$)
+DECLARE SUB XCtrlAltShift (s$)
+DECLARE SUB XText(s$)
+DECLARE SUB XEnter(s$)
+DECLARE SUB XSelectMenuItem(stMenu$,stMenuItem$,stHMenuItem$)
+DECLARE SUB XMenuItemExists(stMenu$,stMenuItem$, stHMenuItem$)
+DECLARE SUB XMenuItemNotExists(stMenu$,stMenuItem$, stHMenuItem$)
+DECLARE SUB XMenuItemGrayed(stMenu$,stMenuItem$, stHMenuItem$)
+DECLARE SUB XMenuItemNotGrayed(stMenu$,stMenuItem$, stHMenuItem$)
+DECLARE SUB XMenuItemChecked(stMenu$,stMenuItem$, stHMenuItem$)
+DECLARE SUB XMenuItemNotChecked(stMenu$,stMenuItem$, stHMenuItem$)
+DECLARE SUB XMenuItemEnabled(stMenu$,stMenuItem$, stHMenuItem$)
+DECLARE SUB XMenuItemNotEnabled(stMenu$,stMenuItem$, stHMenuItem$)
+DECLARE SUB XCaptionExists(stCaption$)
+DECLARE SUB XCaptionNotExists(stCaption$)
+DECLARE SUB XZoomWindow
+DECLARE SUB XMaxWindow
+DECLARE SUB XWindowMaximized
+DECLARE SUB XWindowNotMaximized
+DECLARE SUB XMinWindow
+DECLARE SUB XWindowMinimized
+DECLARE SUB XWindowNotMinimized
+DECLARE SUB XRestoreWindow
+DECLARE SUB XSizeActiveWindow (iXPixels%, iYPixels%, fAbsOrRel%)
+DECLARE SUB XMoveActiveWindow (iXPixels%, iYPixels%, fAbsOrRel%)
+DECLARE FUNCTION SKeyString$(s$)
+DECLARE FUNCTION SHideKeys$(s$)
+DECLARE FUNCTION BMenuItemExists%(stMenu$,stMenuItem$,stHMenuItem$)
+DECLARE FUNCTION IGetMenuCount%(stMenu$, stMenuItem$)
+DECLARE FUNCTION SGetMenuItemText$(stMenu$,stMenuItem$, iIndex%)
+DECLARE FUNCTION BMenuItemGrayed%(stMenu$, stMenuItem$, stHMenuItem$)
+DECLARE FUNCTION BMenuItemChecked%(stMenu$, stMenuItem$, stHMenuItem$)
+DECLARE FUNCTION BMenuItemEnabled%(stMenu$,stMenuItem$, stHMenuItem$)
+DECLARE FUNCTION SGetCaption$()
+DECLARE FUNCTION BWindowMaximized%
+DECLARE FUNCTION BWindowMinimized%
+
+'Prototypes from FTestUtl.mst
+DECLARE SUB XFileExists(stFileSpec$)
+DECLARE SUB XFileNotExists(stFileSpec$)
+DECLARE SUB XFileCmp(stFileSpec1$,stFileSpec2$)
+DECLARE SUB XFileNotCmp(stFileSpec1$,stFileSpec2$)
+DECLARE SUB XDeleteFile(stFileSpec$)
+DECLARE SUB XDeleteFileIfExists(stFileSpec$)
+DECLARE SUB XCreateFile(stFileSpec$,s$)
+DECLARE SUB XAppendFile(stFileSpec$,s$)
+DECLARE SUB XWaitMessageFile(s$,Message$, WaitTime%)
+DECLARE SUB XCWDCmp(s$)
+DECLARE SUB XCWDNotCmp(s$)
+DECLARE SUB XDriveCmp(s$)
+DECLARE SUB XDriveNotCmp(s$)
+DECLARE SUB XChangeCWD(s$)
+DECLARE SUB XCreateDir(s$)
+DECLARE SUB XChangeDrive(s$)
+DECLARE SUB XStartApp(stAppName$, stClassname$)
+DECLARE SUB XSetCleanup (sCleanup$)
+DECLARE SUB XDoCleanup
+DECLARE SUB XMoveMouse (x%, y%)
+DECLARE SUB XClickMouse(button%, x%, y%)
+DECLARE SUB XDblClickMouse(button%, x%, y%)
+DECLARE SUB XDragMouse (button%, Begx%, Begy%, Endx%, Endy%)
+DECLARE SUB XClipBoardCmp (s$)
+DECLARE SUB XClipBoardNotCmp (s$)
+DECLARE FUNCTION BFileExists%(stFileSpec$)
+DECLARE FUNCTION BFileCmp%(stFileSpec1$,stFileSpec2$)
+DECLARE FUNCTION BCWDCmp%(s$)
+DECLARE FUNCTION BDriveCmp%(s$)
+DECLARE FUNCTION HStartApp%(stAppName$)
+DECLARE FUNCTION BClipBoardCmp (s$)
+
+
+
+
+'$INCLUDE 'FTestLog.mst'
+'$INCLUDE 'FTestKey.mst'
+'$INCLUDE 'FTestUtl.mst'
+
+
+' These routines have to be after the above includes so that
+' the functions used are declared
+
+ON END XDoCleanup
+
+' Set a UAE trap and log failure if one occurs
+
+TRAP UAETrap FROM "TESTDRVR.EXE"
+ XSetTerminate TRUE
+ XLogFailure "Application UAEed"
+END TRAP
+
+' in the FastTest code, gErrorType will be set to one of the following
+' CASE items to be handled and set back to ET_NOTHING when the particular
+' place where an error could occur is past.
+ON ERROR GOTO XErrorHandler
+
+GOTO UsersCode ' branch around code used by On Error
+
+XErrorHandler: ' execute here on error conditions
+
+ SELECT CASE gErrorType
+ CASE 0
+ XSetTerminate TRUE
+ XLogFailure "Internal FastTest Error" ' catch undeclared ET vars
+ CASE ET_NOTHING
+ XSetTerminate TRUE
+ XLogFailure "Unexpected RunTime error;" + ERF + ":" + STR$(ERR) + " " + ERROR$(ERR)
+ CASE ET_NEXT
+ ' Code that uses this will check the global error variable
+ ' and log an appropriate error if one occurred
+ gfError = TRUE
+ RESUME NEXT
+ CASE ET_LOG ' something happened during logging, let user know
+ Print "****** A Log error occurred ******"
+ Pause "****** A Log error occurred ******"
+
+
+ END
+
+ END SELECT
+ XSetTerminate TRUE
+ XLogFailure "Internal FastTest error"
+
+
+UsersCode:
diff --git a/public/sdk/inc/fileopen.dlg b/public/sdk/inc/fileopen.dlg
new file mode 100644
index 000000000..4058269ed
--- /dev/null
+++ b/public/sdk/inc/fileopen.dlg
@@ -0,0 +1,149 @@
+/*++
+
+Copyright (c) 1990-1995, Microsoft Corporation All rights reserved.
+
+Module Name:
+
+ fileopen.dlg
+
+Abstract:
+
+ This module contains the resource descriptions for the Win32
+ file open and save as common dialogs.
+
+Revision History:
+
+--*/
+
+
+
+//
+// Include Files.
+//
+
+#include <shlobj.h>
+
+
+
+
+//
+// Constant Declarations.
+//
+
+#define LBS_DISABLENOSCROLL 0x1000L
+
+
+
+
+//
+// New File Open and Save As Dialogs.
+//
+
+NEWFILEOPENORD DIALOG DISCARDABLE 0, 0, 280, 164
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION |
+ WS_SYSMENU | DS_CONTEXTHELP | WS_CLIPCHILDREN
+CAPTION "Open"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Look &in:", stc4, 7, 6, 41, 8, SS_NOTIFY
+ COMBOBOX cmb2, 50, 3, 138, 100,
+ CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "", stc1, 188, 2, 82, 17, NOT WS_GROUP | NOT WS_VISIBLE
+ LISTBOX lst1, 4, 20, 272, 85,
+ LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN |
+ WS_HSCROLL | NOT WS_VISIBLE
+ LTEXT "File &name:", stc3, 5, 112, 36, 8, SS_NOTIFY
+ EDITTEXT edt1, 54, 110, 155, 12, ES_AUTOHSCROLL
+ LTEXT "Files of &type:", stc2, 5, 128, 46, 8, SS_NOTIFY
+ COMBOBOX cmb1, 54, 126, 155, 100,
+ CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ AUTOCHECKBOX "Open as &read-only", chx1, 54, 145, 74, 10, WS_TABSTOP
+ DEFPUSHBUTTON "&Open", IDOK, 222, 110, 50, 14
+ PUSHBUTTON "Cancel", IDCANCEL, 222, 128, 50, 14
+ PUSHBUTTON "&Help", pshHelp, 222, 145, 50, 14
+END
+
+
+
+
+//
+// Old File Open and Save As Dialogs.
+//
+
+FILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 268, 134
+STYLE WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_MODALFRAME |
+ DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Open"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "File &name:", stc3, 6, 6, 76, 9
+ EDITTEXT edt1, 6, 16, 90, 12,
+ ES_AUTOHSCROLL | WS_TABSTOP | ES_OEMCONVERT
+ LISTBOX lst1, 6, 32, 90, 68,
+ LBS_SORT | LBS_HASSTRINGS | LBS_NOTIFY |
+ LBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP | LBS_OWNERDRAWFIXED
+
+ LTEXT "&Folders:", -1, 110, 6, 96, 9
+ LTEXT "", stc1, 110, 16, 96, 9, SS_NOPREFIX
+ LISTBOX lst2, 110, 32, 96, 68,
+ LBS_SORT | LBS_HASSTRINGS | LBS_NOTIFY |
+ LBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP | LBS_OWNERDRAWFIXED
+
+ LTEXT "List files of &type:", stc2, 6, 104, 90, 9
+ COMBOBOX cmb1, 6, 114, 90, 96,
+ CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+
+ LTEXT "Dri&ves:", stc4, 110, 104, 96, 9
+ COMBOBOX cmb2, 110, 114, 96, 68,
+ CBS_SORT | CBS_HASSTRINGS | CBS_OWNERDRAWFIXED |
+ CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+
+ DEFPUSHBUTTON "OK", IDOK, 212, 6, 50, 14, WS_GROUP
+ PUSHBUTTON "Cancel", IDCANCEL, 212, 24, 50, 14, WS_GROUP
+
+ PUSHBUTTON "&Help", pshHelp, 212, 46, 50, 14, WS_GROUP
+ AUTOCHECKBOX "&Read only", chx1, 212, 68, 50, 12, WS_TABSTOP | WS_GROUP
+END
+
+
+MULTIFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 268, 134
+STYLE WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_MODALFRAME |
+ DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Open"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "File &name:", stc3, 6, 6, 76, 9
+ EDITTEXT edt1, 6, 16, 90, 12,
+ ES_AUTOHSCROLL | WS_TABSTOP | ES_OEMCONVERT
+ LISTBOX lst1, 6, 32, 90, 68,
+ LBS_SORT | LBS_NOTIFY | LBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP | LBS_EXTENDEDSEL | LBS_HASSTRINGS |
+ LBS_OWNERDRAWFIXED
+
+ LTEXT "&Folders:", -1, 110, 6, 96, 9
+ LTEXT "", stc1, 110, 16, 96, 9, SS_NOPREFIX
+ LISTBOX lst2, 110, 32, 96, 68,
+ LBS_SORT | LBS_HASSTRINGS | LBS_NOTIFY |
+ LBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP | LBS_OWNERDRAWFIXED
+
+ LTEXT "List files of &type:", stc2, 6, 104, 90, 9
+ COMBOBOX cmb1, 6, 114, 90, 96,
+ CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+
+ LTEXT "Dri&ves:", stc4, 110, 104, 96, 9
+ COMBOBOX cmb2, 110, 114, 96, 68,
+ CBS_SORT | CBS_HASSTRINGS | CBS_OWNERDRAWFIXED |
+ CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
+
+ DEFPUSHBUTTON "OK", IDOK, 212, 6, 50, 14, WS_GROUP
+ PUSHBUTTON "Cancel", IDCANCEL, 212, 24, 50, 14, WS_GROUP
+
+ PUSHBUTTON "&Help", pshHelp, 212, 46, 50, 14, WS_GROUP
+ AUTOCHECKBOX "&Read only", chx1, 212, 68, 50, 12, WS_TABSTOP | WS_GROUP
+END
+
+ \ No newline at end of file
diff --git a/public/sdk/inc/filter.h b/public/sdk/inc/filter.h
new file mode 100644
index 000000000..160247ea2
--- /dev/null
+++ b/public/sdk/inc/filter.h
@@ -0,0 +1,346 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:36:40 1996
+ */
+/* Compiler settings for filter.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __filter_h__
+#define __filter_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IFilter_FWD_DEFINED__
+#define __IFilter_FWD_DEFINED__
+typedef interface IFilter IFilter;
+#endif /* __IFilter_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "unknwn.h"
+#include "objidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:36:40 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#if !defined(_TAGFULLPROPSPEC_DEFINED_)
+#define _TAGFULLPROPSPEC_DEFINED_
+typedef struct tagFULLPROPSPEC
+ {
+ GUID guidPropSet;
+ PROPSPEC psProperty;
+ } FULLPROPSPEC;
+
+#endif // #if !defined(_TAGFULLPROPSPEC_DEFINED_)
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IFilter_INTERFACE_DEFINED__
+#define __IFilter_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IFilter
+ * at Fri Nov 15 09:36:40 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+#ifndef _tagIFILTER_INIT_DEFINED
+typedef
+enum tagIFILTER_INIT
+ { IFILTER_INIT_CANON_PARAGRAPHS = 1,
+ IFILTER_INIT_HARD_LINE_BREAKS = 2,
+ IFILTER_INIT_CANON_HYPHENS = 4,
+ IFILTER_INIT_CANON_SPACES = 8,
+ IFILTER_INIT_APPLY_INDEX_ATTRIBUTES = 16,
+ IFILTER_INIT_APPLY_OTHER_ATTRIBUTES = 32,
+ IFILTER_INIT_INDEXING_ONLY = 64,
+ IFILTER_INIT_SEARCH_LINKS = 128
+ } IFILTER_INIT;
+
+#define _tagIFILTER_INIT_DEFINED
+#define _IFILTER_INIT_DEFINED
+#endif
+#ifndef _tagIFILTER_FLAGS_DEFINED
+typedef
+enum tagIFILTER_FLAGS
+ { IFILTER_FLAGS_OLE_PROPERTIES = 1
+ } IFILTER_FLAGS;
+
+#define _tagIFILTER_FLAGS_DEFINED
+#define _IFILTER_FLAGS_DEFINED
+#endif
+#ifndef _tagCHUNKSTATE_DEFINED
+typedef
+enum tagCHUNKSTATE
+ { CHUNK_TEXT = 0x1,
+ CHUNK_VALUE = 0x2
+ } CHUNKSTATE;
+
+#define _tagCHUNKSTATE_DEFINED
+#define _CHUNKSTATE_DEFINED
+#endif
+#ifndef _tagCHUNK_BREAKTYPE_DEFINED
+typedef
+enum tagCHUNK_BREAKTYPE
+ { CHUNK_NO_BREAK = 0,
+ CHUNK_EOW = 1,
+ CHUNK_EOS = 2,
+ CHUNK_EOP = 3,
+ CHUNK_EOC = 4
+ } CHUNK_BREAKTYPE;
+
+#define _tagCHUNK_BREAKTYPE_DEFINED
+#define _CHUNK_BREAKTYPE_DEFINED
+#endif
+#ifndef _tagFILTERREGION_DEFINED
+typedef struct tagFILTERREGION
+ {
+ ULONG idChunk;
+ ULONG cwcStart;
+ ULONG cwcExtent;
+ } FILTERREGION;
+
+#define _tagFILTERREGION_DEFINED
+#define _FILTERREGION_DEFINED
+#endif
+#ifndef _tagSTAT_CHUNK_DEFINED
+typedef struct tagSTAT_CHUNK
+ {
+ ULONG idChunk;
+ CHUNK_BREAKTYPE breakType;
+ CHUNKSTATE flags;
+ LCID locale;
+ FULLPROPSPEC attribute;
+ ULONG idChunkSource;
+ ULONG cwcStartSource;
+ ULONG cwcLenSource;
+ } STAT_CHUNK;
+
+#define _tagSTAT_CHUNK_DEFINED
+#define _STAT_CHUNK_DEFINED
+#endif
+
+EXTERN_C const IID IID_IFilter;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IFilter : public IUnknown
+ {
+ public:
+ virtual SCODE STDMETHODCALLTYPE Init(
+ /* [in] */ ULONG grfFlags,
+ /* [in] */ ULONG cAttributes,
+ /* [size_is][in] */ const FULLPROPSPEC __RPC_FAR *aAttributes,
+ /* [out] */ ULONG __RPC_FAR *pFlags) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE GetChunk(
+ /* [out] */ STAT_CHUNK __RPC_FAR *pStat) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE GetText(
+ /* [out][in] */ ULONG __RPC_FAR *pcwcBuffer,
+ /* [size_is][out] */ WCHAR __RPC_FAR *awcBuffer) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE GetValue(
+ /* [out] */ PROPVARIANT __RPC_FAR *__RPC_FAR *ppPropValue) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE BindRegion(
+ /* [in] */ FILTERREGION origPos,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppunk) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IFilterVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IFilter __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IFilter __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IFilter __RPC_FAR * This);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *Init )(
+ IFilter __RPC_FAR * This,
+ /* [in] */ ULONG grfFlags,
+ /* [in] */ ULONG cAttributes,
+ /* [size_is][in] */ const FULLPROPSPEC __RPC_FAR *aAttributes,
+ /* [out] */ ULONG __RPC_FAR *pFlags);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *GetChunk )(
+ IFilter __RPC_FAR * This,
+ /* [out] */ STAT_CHUNK __RPC_FAR *pStat);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *GetText )(
+ IFilter __RPC_FAR * This,
+ /* [out][in] */ ULONG __RPC_FAR *pcwcBuffer,
+ /* [size_is][out] */ WCHAR __RPC_FAR *awcBuffer);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *GetValue )(
+ IFilter __RPC_FAR * This,
+ /* [out] */ PROPVARIANT __RPC_FAR *__RPC_FAR *ppPropValue);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *BindRegion )(
+ IFilter __RPC_FAR * This,
+ /* [in] */ FILTERREGION origPos,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppunk);
+
+ END_INTERFACE
+ } IFilterVtbl;
+
+ interface IFilter
+ {
+ CONST_VTBL struct IFilterVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IFilter_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IFilter_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IFilter_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IFilter_Init(This,grfFlags,cAttributes,aAttributes,pFlags) \
+ (This)->lpVtbl -> Init(This,grfFlags,cAttributes,aAttributes,pFlags)
+
+#define IFilter_GetChunk(This,pStat) \
+ (This)->lpVtbl -> GetChunk(This,pStat)
+
+#define IFilter_GetText(This,pcwcBuffer,awcBuffer) \
+ (This)->lpVtbl -> GetText(This,pcwcBuffer,awcBuffer)
+
+#define IFilter_GetValue(This,ppPropValue) \
+ (This)->lpVtbl -> GetValue(This,ppPropValue)
+
+#define IFilter_BindRegion(This,origPos,riid,ppunk) \
+ (This)->lpVtbl -> BindRegion(This,origPos,riid,ppunk)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+SCODE STDMETHODCALLTYPE IFilter_Init_Proxy(
+ IFilter __RPC_FAR * This,
+ /* [in] */ ULONG grfFlags,
+ /* [in] */ ULONG cAttributes,
+ /* [size_is][in] */ const FULLPROPSPEC __RPC_FAR *aAttributes,
+ /* [out] */ ULONG __RPC_FAR *pFlags);
+
+
+void __RPC_STUB IFilter_Init_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IFilter_GetChunk_Proxy(
+ IFilter __RPC_FAR * This,
+ /* [out] */ STAT_CHUNK __RPC_FAR *pStat);
+
+
+void __RPC_STUB IFilter_GetChunk_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IFilter_GetText_Proxy(
+ IFilter __RPC_FAR * This,
+ /* [out][in] */ ULONG __RPC_FAR *pcwcBuffer,
+ /* [size_is][out] */ WCHAR __RPC_FAR *awcBuffer);
+
+
+void __RPC_STUB IFilter_GetText_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IFilter_GetValue_Proxy(
+ IFilter __RPC_FAR * This,
+ /* [out] */ PROPVARIANT __RPC_FAR *__RPC_FAR *ppPropValue);
+
+
+void __RPC_STUB IFilter_GetValue_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IFilter_BindRegion_Proxy(
+ IFilter __RPC_FAR * This,
+ /* [in] */ FILTERREGION origPos,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppunk);
+
+
+void __RPC_STUB IFilter_BindRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IFilter_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/filterr.h b/public/sdk/inc/filterr.h
new file mode 100644
index 000000000..66beb9f9d
--- /dev/null
+++ b/public/sdk/inc/filterr.h
@@ -0,0 +1,168 @@
+#ifndef _FILTERR_H_
+#define _FILTERR_H_
+#ifndef FACILITY_WINDOWS
+//
+// 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_WINDOWS 0x8
+#define FACILITY_ITF 0x4
+
+
+//
+// Define the severity codes
+//
+#define STATUS_SEVERITY_SUCCESS 0x0
+#define STATUS_SEVERITY_COFAIL 0x3
+#define STATUS_SEVERITY_COERROR 0x2
+
+
+//
+// MessageId: NOT_AN_ERROR
+//
+// MessageText:
+//
+// NOTE: This dummy error message is necessary to force MC to output
+// the above defines inside the FACILITY_WINDOWS guard instead
+// of leaving it empty.
+//
+#define NOT_AN_ERROR ((HRESULT)0x00080000L)
+
+#endif // FACILITY_WINDOWS
+//
+// Codes 0x1700-0x172F are reserved for FILTER
+//
+//
+// MessageId: FILTER_E_END_OF_CHUNKS
+//
+// MessageText:
+//
+// No more chunks of text available in object.
+//
+#define FILTER_E_END_OF_CHUNKS ((HRESULT)0x80041700L)
+
+//
+// MessageId: FILTER_E_NO_MORE_TEXT
+//
+// MessageText:
+//
+// No more text available in chunk.
+//
+#define FILTER_E_NO_MORE_TEXT ((HRESULT)0x80041701L)
+
+//
+// MessageId: FILTER_E_NO_MORE_VALUES
+//
+// MessageText:
+//
+// No more property values available in chunk.
+//
+#define FILTER_E_NO_MORE_VALUES ((HRESULT)0x80041702L)
+
+//
+// MessageId: FILTER_E_ACCESS
+//
+// MessageText:
+//
+// Unable to access object.
+//
+#define FILTER_E_ACCESS ((HRESULT)0x80041703L)
+
+//
+// MessageId: FILTER_W_MONIKER_CLIPPED
+//
+// MessageText:
+//
+// Moniker doesn't cover entire region.
+//
+#define FILTER_W_MONIKER_CLIPPED ((HRESULT)0x00041704L)
+
+//
+// MessageId: FILTER_E_NO_TEXT
+//
+// MessageText:
+//
+// No text in current chunk.
+//
+#define FILTER_E_NO_TEXT ((HRESULT)0x80041705L)
+
+//
+// MessageId: FILTER_E_NO_VALUES
+//
+// MessageText:
+//
+// No values in current chunk.
+//
+#define FILTER_E_NO_VALUES ((HRESULT)0x80041706L)
+
+//
+// MessageId: FILTER_E_EMBEDDING_UNAVAILABLE
+//
+// MessageText:
+//
+// Unable to bind IFilter for embedded object.
+//
+#define FILTER_E_EMBEDDING_UNAVAILABLE ((HRESULT)0x80041707L)
+
+//
+// MessageId: FILTER_E_LINK_UNAVAILABLE
+//
+// MessageText:
+//
+// Unable to bind IFilter for linked object.
+//
+#define FILTER_E_LINK_UNAVAILABLE ((HRESULT)0x80041708L)
+
+//
+// MessageId: FILTER_S_LAST_TEXT
+//
+// MessageText:
+//
+// This is the last text in the current chunk.
+//
+#define FILTER_S_LAST_TEXT ((HRESULT)0x00041709L)
+
+//
+// MessageId: FILTER_S_LAST_VALUES
+//
+// MessageText:
+//
+// This is the last value in the current chunk.
+//
+#define FILTER_S_LAST_VALUES ((HRESULT)0x0004170AL)
+
+//
+// MessageId: FILTER_E_PASSWORD
+//
+// MessageText:
+//
+// File was not filtered due to password protection.
+//
+#define FILTER_E_PASSWORD ((HRESULT)0x8004170BL)
+
+#endif // _FILTERR_H_
diff --git a/public/sdk/inc/findtext.dlg b/public/sdk/inc/findtext.dlg
new file mode 100644
index 000000000..3bbf859be
--- /dev/null
+++ b/public/sdk/inc/findtext.dlg
@@ -0,0 +1,68 @@
+/*++
+
+Copyright (c) 1990-1995, Microsoft Corporation All rights reserved.
+
+Module Name:
+
+ findtext.dlg
+
+Abstract:
+
+ This module contains the resource descriptions for the Win32
+ find and replace common dialogs.
+
+Revision History:
+
+--*/
+
+
+
+//
+// Find and Replace Dialogs.
+//
+
+FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 30, 73, 236, 62
+STYLE WS_BORDER | WS_CAPTION | DS_MODALFRAME | WS_POPUP | WS_SYSMENU |
+ DS_3DLOOK | DS_CONTEXTHELP
+CAPTION "Find"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Fi&nd what:", -1, 4, 8, 42, 8
+ EDITTEXT edt1, 47, 7, 128, 12, WS_GROUP | WS_TABSTOP | ES_AUTOHSCROLL
+
+ AUTOCHECKBOX "Match &whole word only", chx1, 4, 26, 100, 12, WS_GROUP
+ AUTOCHECKBOX "Match &case", chx2, 4, 42, 64, 12
+
+ GROUPBOX "Direction", grp1, 107, 26, 68, 28, WS_GROUP
+ AUTORADIOBUTTON "&Up", rad1, 111, 38, 25, 12, WS_GROUP
+ AUTORADIOBUTTON "&Down", rad2, 138, 38, 35, 12
+
+ DEFPUSHBUTTON "&Find Next", IDOK, 182, 5, 50, 14, WS_GROUP
+ PUSHBUTTON "Cancel", IDCANCEL, 182, 23, 50, 14
+ PUSHBUTTON "&Help", pshHelp, 182, 45, 50, 14
+END
+
+
+REPLACEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 44, 230, 94
+STYLE WS_BORDER | WS_CAPTION | DS_MODALFRAME | WS_POPUP | WS_SYSMENU |
+ DS_3DLOOK | DS_CONTEXTHELP
+CAPTION "Replace"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Fi&nd what:", -1, 4, 9, 48, 8
+ EDITTEXT edt1, 54, 7, 114, 12, WS_GROUP | WS_TABSTOP | ES_AUTOHSCROLL
+
+ LTEXT "Re&place with:", -1, 4, 26, 48, 8
+ EDITTEXT edt2, 54, 24, 114, 12, WS_GROUP | WS_TABSTOP | ES_AUTOHSCROLL
+
+ AUTOCHECKBOX "Match &whole word only", chx1, 5, 46, 104, 12, WS_GROUP
+ AUTOCHECKBOX "Match &case", chx2, 5, 62, 59, 12
+
+ DEFPUSHBUTTON "&Find Next", IDOK, 174, 4, 50, 14, WS_GROUP
+ PUSHBUTTON "&Replace", psh1, 174, 21, 50, 14
+ PUSHBUTTON "Replace &All", psh2, 174, 38, 50, 14
+ PUSHBUTTON "Cancel", IDCANCEL, 174, 55, 50, 14
+ PUSHBUTTON "&Help", pshHelp, 174, 75, 50, 14
+END
+
+ \ No newline at end of file
diff --git a/public/sdk/inc/font.dlg b/public/sdk/inc/font.dlg
new file mode 100644
index 000000000..cbba8d26a
--- /dev/null
+++ b/public/sdk/inc/font.dlg
@@ -0,0 +1,69 @@
+/*++
+
+Copyright (c) 1990-1995, Microsoft Corporation All rights reserved.
+
+Module Name:
+
+ font.dlg
+
+Abstract:
+
+ This module contains the resource descriptions for the Win32
+ font common dialogs.
+
+Revision History:
+
+--*/
+
+
+
+//
+// Font Dialogs.
+//
+
+FORMATDLGORD31 DIALOG 13, 54, 263, 196
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU |
+ DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Font"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Font:", stc1, 7, 7, 40, 9
+ COMBOBOX cmb1, 7, 16, 98, 76, CBS_SIMPLE | CBS_AUTOHSCROLL |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_HASSTRINGS |
+ CBS_OWNERDRAWFIXED | CBS_DISABLENOSCROLL
+
+ LTEXT "Font st&yle:", stc2, 110, 7, 44, 9
+ COMBOBOX cmb2, 110, 16, 62, 76, CBS_SIMPLE | WS_VSCROLL |
+ CBS_DISABLENOSCROLL | WS_TABSTOP
+
+ LTEXT "&Size:", stc3, 177, 7, 30, 9
+ COMBOBOX cmb3, 177, 16, 27, 76, CBS_SIMPLE | WS_VSCROLL |
+ WS_TABSTOP | CBS_HASSTRINGS | CBS_OWNERDRAWFIXED |
+ CBS_SORT | CBS_DISABLENOSCROLL
+
+ DEFPUSHBUTTON "OK", IDOK, 210, 16, 45, 14, WS_GROUP
+ PUSHBUTTON "Cancel", IDCANCEL, 210, 32, 45, 14, WS_GROUP
+ PUSHBUTTON "&Apply", psh3, 210, 48, 45, 14, WS_GROUP
+ PUSHBUTTON "&Help", pshHelp, 210, 64, 45, 14, WS_GROUP
+
+ GROUPBOX "Effects", grp1, 7, 97, 98, 72, WS_GROUP
+ AUTOCHECKBOX "Stri&keout", chx1, 13, 110, 49, 10, WS_TABSTOP
+ AUTOCHECKBOX "&Underline", chx2, 13, 123, 51, 10
+
+ LTEXT "&Color:", stc4, 13, 136, 30, 9
+ COMBOBOX cmb4, 13, 146, 82, 100,
+ CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL |
+ CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+
+ GROUPBOX "Sample", grp2, 110, 97, 94, 43, WS_GROUP
+ CTEXT "AaBbYyZz", stc5, 118, 111, 77, 23,
+ SS_NOPREFIX | NOT WS_VISIBLE
+ LTEXT "", stc6, 7, 176, 196, 20, SS_NOPREFIX | NOT WS_GROUP
+
+ LTEXT "Sc&ript:", stc7, 110, 147, 30, 9
+ COMBOBOX cmb5, 110, 157, 94, 30, CBS_DROPDOWNLIST |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_HASSTRINGS |
+ WS_BORDER | WS_VSCROLL | WS_TABSTOP
+END
+
+ \ No newline at end of file
diff --git a/public/sdk/inc/fstream.hxx b/public/sdk/inc/fstream.hxx
new file mode 100644
index 000000000..1abb1870f
--- /dev/null
+++ b/public/sdk/inc/fstream.hxx
@@ -0,0 +1,87 @@
+//+---------------------------------------------------------------------------
+//
+// Copyright (C) 1992, Microsoft Corporation.
+//
+// File: FSTREAM.HXX
+//
+// Contents: Streams for accessing files w/runtime libs
+//
+// Classes: CStreamFile
+//
+// History: 05-Aug-92 MikeHew Created
+// 14-Aug-92 KyleP Hacked
+// 23-Nov-92 AmyA Revised for buffering data
+//
+//----------------------------------------------------------------------------
+
+#ifndef __FSTREAM_HXX__
+#define __FSTREAM_HXX__
+
+#ifdef DISPLAY_INCLUDES
+#pragma message( "#include <" __FILE__ ">..." )
+#endif
+
+#include <except.hxx>
+#include <streams.hxx>
+#include <stdio.h>
+#include <debnot.h> // for Win4Assert
+
+#define defaultBufSize 4096
+
+//+---------------------------------------------------------------------------
+//
+// Class: CStreamFile
+//
+// Purpose: Stream for dumping data to a file and reading back
+//
+// History: 29-Jul-92 MikeHew Created
+// 23-Nov-92 AmyA Revised for buffering data
+//
+// Notes: Seek() is from the current offset
+//
+//----------------------------------------------------------------------------
+
+class CStreamFile : INHERIT_VIRTUAL_UNWIND, public CStreamA
+{
+ DECLARE_UNWIND
+public:
+ enum FileType
+ {
+ NewFile,
+ NewOrExistingFile,
+ ExistingFile
+ };
+
+ EXPORTDEF CStreamFile( const char * filename, FileType type );
+
+ EXPORTDEF ~CStreamFile();
+
+ //
+ // Status functions
+ //
+ BOOL Ok() { return (_fp != 0) && !ferror( _fp ); }
+
+ //
+ // Input from stream functions
+ //
+ EXPORTDEF unsigned APINOT Read( void *dest, unsigned size );
+
+ //
+ // Output to stream functions
+ //
+ EXPORTDEF unsigned APINOT Write( const void *source, unsigned size );
+
+ //
+ // Misc
+ //
+ EXPORTDEF int APINOT Seek( LONG offset, CStream::SEEK origin = CStream::SET );
+
+ ULONG Size();
+
+private:
+ BOOL FillBuf();
+
+ FILE * _fp;
+};
+
+#endif // __FSTREAM_HXX__
diff --git a/public/sdk/inc/ftestkey.mst b/public/sdk/inc/ftestkey.mst
new file mode 100644
index 000000000..bb1b50f3b
--- /dev/null
+++ b/public/sdk/inc/ftestkey.mst
@@ -0,0 +1,1363 @@
+'FTestKey.inc - definitions for Fast Test Key, Menu and Window routines
+'
+' Copyright (c) 1991-1992, Microsoft Corporation. All rights reserved.
+'
+'Purpose:
+' This file defines the Key, Menu and Window functions of the Fast Test
+' functionality
+'
+
+
+'**********************************************************
+'***************** Keystroke Subroutines ******************
+'**********************************************************
+
+' support routine for other subroutines, not meant to be called
+' except by fasttest routines
+'
+FUNCTION SKeyString$(s$) STATIC
+ DIM sTemp$
+
+ IF LEN(s$) = 0 THEN
+ XLogFailure "zero length string passed to SKeyString$"
+ END IF
+
+ IF LEN(s$) = 1 THEN
+ SELECT CASE ASC(s$)
+
+ ' alphanumerics, pass along as given
+ CASE ASC("a") to ASC("z"), ASC("A") to ASC("Z"), ASC("0") to ASC("9")
+ sTemp$ = s$
+
+ ' special characters to Dokeys, surround with braces
+ CASE ASC("~"),ASC("+"),ASC("^"),ASC("%")
+ sTemp$ = "{" + s$ + "}"
+
+ CASE ASC("{"),ASC("}"),ASC("("),ASC(")"),ASC("["),ASC("]")
+ sTemp$ = "{" + s$ + "}"
+
+ ' normal printable non-alphanumerics, pass along
+ CASE ASC("!"),ASC("@"),ASC("#"),ASC("$"),ASC("&")
+ sTemp$ = s$
+
+ CASE ASC("*"),ASC("_"),ASC("|"),ASC(""""),ASC("<"),ASC(">")
+ sTemp$ = s$
+
+ CASE ASC("-"),ASC("="),ASC("\"),ASC(";"),ASC("'"),ASC(":")
+ sTemp$ =s$
+
+ CASE ASC(","),ASC("."),ASC("/"),ASC(" "),ASC("?"),ASC("`")
+ sTemp$ =s$
+
+ ' non-printable other character
+ CASE ELSE
+ XLogFailure "Bad character passed to SKeyString$"
+
+ END SELECT
+
+ ELSE
+ ' the string is greater than 1 character in length, put braces
+ ' around it and send it to Dokeys and let it parse it
+ sTemp$ = "{" + s$ + "}"
+ END IF
+ SKeyString$ = "(" + sTemp$ + ")"
+END FUNCTION
+
+' support routine for other subroutines, not meant to be called
+' except by fasttest routines
+'
+FUNCTION SHideKeys$(s$) STATIC
+ DIM check$
+ DIM i%
+ DIM stRet$
+ ' this code must hide each character that is special to DoKeys
+
+ stRet$ = "" ' start empty
+ FOR i% = 1 to LEN(s$)
+ ' special characters to DoKeys, surround with braces
+ check$ = mid$(s$,i%,1)
+ IF check$ = "~" OR check$ = "+" OR check$ = "^" OR check$ = "%" THEN
+ stRet$ = stRet$ + "{" + check$ + "}"
+ ELSEIF check$ = "{" OR check$ = "}" OR check$ = "(" OR check$ = ")" OR check$ = "[" OR check$ = "]" THEN
+ stRet$ = stRet$ + "{" + check$ + "}"
+ ELSE
+ stRet$ = stRet$ + check$
+ END IF
+ NEXT i%
+ SHideKeys$ = stRet$
+END FUNCTION
+
+'
+' XKey(s$)
+'
+' Description:
+' Send Keystroke to active application
+' This uses DoKeys, so DoKeys syntax is allowed
+'
+' Parameters:
+' s$ - single char to send
+' NOTE: any string longer that 1 character in length is assumed
+' to be a special name for a key and is handled as such
+'
+' Returns:
+' nothing
+'
+' Example:
+' XKey "f"
+' XKey "escape"
+
+SUB XKey (s$) STATIC
+ DoKeys SKeyString$(s$)
+
+END SUB
+
+
+'
+' XAlt(s$)
+'
+' Description:
+' Send a key as if the alt key is pressed at the same time
+'
+' Parameters:
+' s$ - single char to send
+' see XKey note
+'
+' Returns:
+' nothing
+'
+' Example:
+' XAlt "f"
+' XAlt "escape"
+'
+'
+
+SUB XAlt (s$) STATIC
+ DoKeys "%" + SKeyString$(s$)
+
+END SUB
+
+'
+' XCtrl(s$)
+'
+' Description:
+' Send a key as if the control key is pressed at the same time
+'
+' Parameters:
+' s$ - single char to send
+' see XKey note
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCtrl "f"
+' XCtrl "escape"
+'
+'
+
+SUB XCtrl (s$) STATIC
+ DoKeys "^" + SKeyString$(s$)
+END SUB
+
+'
+' XShift(s$)
+'
+' Description:
+' Send a key as if the alt key is pressed at the same time
+'
+' Parameters:
+' s$ - single char to send
+' see XKey note
+'
+' Returns:
+' nothing
+'
+' Example:
+' XShift "f"
+' XShift "escape"
+'
+'
+
+SUB XShift (s$) STATIC
+ DoKeys "+" + SKeyString$(s$)
+
+END SUB
+
+'
+' XCtrlAlt(s$)
+'
+' Description:
+' Send a key as if the alt key is pressed at the same time
+'
+' Parameters:
+' s$ - single char to send
+' see XKey note
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCtrlAlt "f"
+' XCtrlAlt "escape"
+'
+'
+
+
+SUB XCtrlAlt (s$) STATIC
+ DoKeys "^%" + SKeyString$(s$)
+END SUB
+
+'
+' XAltShift(s$)
+'
+' Description:
+' Send a key as if the alt key is pressed at the same time
+'
+' Parameters:
+' s$ - single char to send
+' see XKey note
+'
+' Returns:
+' nothing
+'
+' Example:
+' XAltShift "f"
+' XAltShift "escape"
+'
+'
+
+SUB XAltShift (s$) STATIC
+ DoKeys "%+" + SKeyString$(s$)
+END SUB
+
+'
+' XCtrlShift(s$)
+'
+' Description:
+' Send a key as if the alt key is pressed at the same time
+'
+' Parameters:
+' s$ - single char to send
+' see XKey note
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCtrlShift "f"
+' XCtrlShift "escape"
+'
+'
+
+SUB XCtrlShift (s$) STATIC
+ DoKeys "^+" + SKeyString$(s$)
+END SUB
+
+'
+' XCtrlAltShift(s$)
+'
+' Description:
+' Send a key as if the alt key is pressed at the same time
+'
+' Parameters:
+' s$ - single char to send
+' see XKey note
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCtrlAltShift "f"
+' XCtrlAltShift "escape"
+'
+'
+
+SUB XCtrlAltShift (s$) STATIC
+ DoKeys "^%+" + SKeyString$(s$)
+
+END SUB
+
+'
+' XText(s$)
+'
+' Description:
+' Send any key as without having to specially specify any
+' keys that are special to DoKeys
+'
+' Parameters:
+' s$ - string of characters to send
+'
+' Returns:
+' nothing
+'
+' Example:
+' XText "Hello World"
+' XText "The DoKeys string to send is {escape}"
+'
+'
+
+SUB XText(s$) STATIC
+ DoKeys SHideKeys$(s$)
+END SUB
+
+'
+' XEnter(s$)
+'
+' Description:
+' Send any key as without having to specially specify any
+' keys that are special to DoKeys followed by an enter key
+'
+' Parameters:
+' s$ - string of characters to send
+'
+' Returns:
+' nothing
+'
+' Example:
+' XEnter "Hello World"
+' XEnter "The DoKeys string to send is {escape}"
+'
+'
+
+SUB XEnter(s$) STATIC
+ DoKeys SHideKeys$(s$) + "{enter}"
+END SUB
+
+
+
+
+
+'**********************************************************
+'***************** Menu Subroutines ***********************
+'**********************************************************
+
+
+
+
+'
+' XSelectMenuItem(stMenu, stMenuItem, stHMenuItem)
+'
+' Description:
+' This procedure selects the specified menu item name.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF
+' Hierarchial menu exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XSelectMenuItem "Edit", "Copy",""
+'
+'
+SUB XSelectMenuItem(stMenu$,stMenuItem$,stHMenuItem$) STATIC
+ XMenuItemExists stMenu$,stMenuItem$,stHMenuItem$
+
+ WMenu(stMenu$)
+ IF stMenuItem$ <> "" THEN
+ WMenu(stMenuItem$)
+ END IF
+ IF stHMenuItem$ <> "" THEN 'If popup menu is to be selected
+ WMenu(stHMenuItem$) 'Select menu item under popup menu.
+ END IF
+
+END SUB
+
+
+
+'
+' BMenuItemExists(stMenu, stMenuItem, stHMenuItem)
+'
+' Description:
+' This procedure checks for the specified menu item
+' and returns true IF found, false IF not found.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to check or secondary menu, IF
+' Hierarchial menu exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' TRUE if it exists, FALSE if not
+'
+' Example:
+' fSuccess% = BMenuItemExists("File", "", "")
+' fSuccess% = BMenuItemExists("FIle","Edit", "")
+'
+'
+FUNCTION BMenuItemExists%(stMenu$,stMenuItem$,stHMenuItem$) STATIC
+
+ IF stHMenuItem$ = "" THEN
+ IF stMenuItem$ = "" THEN
+ BMenuItemExists = WMenuExists(stMenu$) <> 0
+ ELSE
+ WMenu(stMenu$)
+ BMenuItemExists = WMenuExists(stMenuItem$) <> 0
+ END IF
+ ELSE
+ WMenu(stMenu$)
+ WMenu(stMenuItem$)
+ BMenuItemExists = WMenuExists(stHMenuItem$) <> 0
+ END IF
+ DoKeys "{esc 3}" 'Make sure you close menu.
+
+END FUNCTION
+
+
+'
+' XMenuItemExists (stMenu$,stMenuItem$, stHMenuItem$)
+'
+' Description:
+' Reports error IF menu item does not exist.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF
+' Hierarchial menu exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMenuItemExists "File", "Close", ""
+'
+'
+'
+SUB XMenuItemExists(stMenu$,stMenuItem$, stHMenuItem$) STATIC
+ IF BMenuItemExists(stMenu$,stMenuItem$, stHMenuItem$) = 0 THEN
+ XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " does not Exist"
+ END IF
+END SUB
+
+
+'
+' XMenuItemNotExists (stMenu$,stMenuItem$, stHMenuItem$)
+'
+' Description:
+' Reports error IF menu item exist.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
+' exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMenuItemNotExists "File", "Close", ""
+'
+'
+'
+
+SUB XMenuItemNotExists(stMenu$,stMenuItem$, stHMenuItem$) STATIC
+ IF BMenuItemExists(stMenu$,stMenuItem$, stHMenuItem$) THEN
+ XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " Exists"
+ END IF
+END SUB
+
+
+
+'
+' IGetMenuCount(stMenu, stMenuItem)
+'
+' Description:
+' This procedure returns the number of menu items
+' in the specified menu.
+'
+' Parameters:
+' stMenu = top level menu to count menu items in.
+' IF stMenu = "", THEN counts items in the menu bar(counts the
+' number of top level menus).
+' stMenuItem = secondary menu to count menu items in; counts hierarchial
+' menu items.
+'
+' Returns:
+' An integer; the number of menu items found.
+'
+' Example:
+' iHowMany% = IGetMenuCount("","") returns how many top level menus.
+' iHowMany% = IGetMenuCount("Utilities", "") returns the number of menu items
+' in the "Utilities" menu.
+' iHowMany% = IGetMenuCount("Utilities", "Info") returns how many menu items
+' in the popup menu "Info".
+'
+'
+FUNCTION IGetMenuCount%(stMenu$, stMenuItem$) STATIC
+
+ IF stMenuItem$ <> "" THEN 'Count in menu items in hierarchial menu.
+ WMenu(stMenu$)
+ WMenu(stMenuItem$)
+ IGetMenuCount = WMenuCount() 'Count the number of menus items in the popup
+ 'menu.
+ ELSE
+ IF stMenu$ <> "" THEN 'Count menus in stMenu$.
+ WMenu(stMenu$)
+ IGetMenuCount = WMenuCount() 'Count the number of menus items in the menu.
+ ELSE
+ IGetMenuCount = WMenuCount() 'Count the number of menus in the menu bar if.
+ 'the above "IF" statements are skipped.
+ END IF
+ END IF
+ DoKeys "{esc 3}" 'Make sure you close menu.
+
+END FUNCTION
+
+
+
+'
+' SGetMenuItemText(stMenu, stMenuItem, iIndex)
+'
+' Description:
+' This procedure returns the text of menu item, iIndex
+' (base 1) in stMenu. Length of the buffer to store
+' the menu item text is passed in.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to check or secondary menu, IF Hierarchial menu
+' exists.
+' iIndex = index of menu item in stMenu.
+' iLength = length of buffer to store text
+'
+' Returns:
+' a string, the menu item text(name).
+'
+' Example:
+' Print SGetMenuItemText("","","", 3) gets name of 3rd menu.
+' Print SGetMenuItemText("Utilities","","",3) gets name of 3rd menu item
+' in the "Utilities" menu.
+' Print SGetMenuItemText("Utilities","Info",3) gets name of 3rd menu item
+' in the popup menu "Info".
+'
+'
+FUNCTION SGetMenuItemText$(stMenu$,stMenuItem$, iIndex%) STATIC
+ DIM buffer$
+
+ buffer$ = String$(128,32) 'initialize with spaces.
+ IF stMenuItem$ <> "" THEN 'get menu text from hierarchial menu.
+ WMenu(stMenu$)
+ WMenu(stMenuItem$)
+ ELSE
+ IF stMenu$ <> "" THEN 'get menu text from stMenu$.
+ WMenu(stMenu$)
+ END IF
+ END IF
+
+'$IFNDEF NT
+ WMenuText iIndex%, buffer$ 'get menu text. If above "IF" condition
+ 'is skipped, this gets text in menu bar.
+'$ELSE
+ WMenuText "@"+STR$(iIndex%), buffer$
+'$ENDIF
+
+ SGetMenuItemText = buffer$ 'return buffer$
+
+ DoKeys "{esc 3}" 'Make sure you close menu.
+
+END FUNCTION
+
+
+
+'
+' BMenuItemGrayed(stMenu$, stMenuItem$,stHMenuItem$)
+'
+' Description:
+' This procedure checks to see IF the specified menu or
+' menu item is grayed out or not.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
+' exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' TRUE if grayed.
+' FALSE if not grayed.
+'
+' Example:
+' fIsGrayed% = BMenuItemGrayed("Edit", "Copy", "")
+' fIsGrayed% = BMenuItemGrayed("Edit", "", "")
+'
+'
+FUNCTION BMenuItemGrayed%(stMenu$, stMenuItem$, stHMenuItem$) STATIC
+
+ IF stHMenuItem$ = "" THEN
+ IF stMenuItem$ = "" THEN
+ BMenuItemGrayed = WMenuGrayed(stMenu$) <> 0 'Check main menu bar menu items.
+ ELSE
+ WMenu(stMenu$) 'Check menu item within stMenuItem$.
+ BMenuItemGrayed = WMenuGrayed(stMenuItem$) <> 0
+ END IF
+ ELSE
+ WMenu(stMenu$) 'Check popup menu items.
+ WMenu(stMenuItem$)
+ BMenuItemGrayed = WMenuGrayed(stHMenuItem$) <> 0
+ END IF
+ DoKeys "{esc 3}" 'Make sure you close menu.
+
+END FUNCTION
+
+
+'
+' XMenuItemGrayed (stMenu$,stMenuItem$, stHMenuItem$)
+'
+' Description:
+' Reports error IF menu item is not Grayed.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
+' exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMenuItemGrayed "File", "Close", ""
+'
+'
+'
+
+SUB XMenuItemGrayed(stMenu$,stMenuItem$, stHMenuItem$) STATIC
+ IF BMenuItemGrayed(stMenu$,stMenuItem$, stHMenuItem$) = 0 THEN
+ XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is not Grayed"
+ END IF
+END SUB
+
+'
+' XMenuItemNotGrayed (stMenu$,stMenuItem$, stHMenuItem$)
+'
+' Description:
+' Reports error IF menu item is Grayed.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
+' exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMenuItemNotGrayed "File", "Close", ""
+'
+'
+'
+
+SUB XMenuItemNotGrayed(stMenu$,stMenuItem$, stHMenuItem$) STATIC
+ IF BMenuItemGrayed(stMenu$,stMenuItem$, stHMenuItem$) THEN
+ XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is Grayed"
+ END IF
+END SUB
+
+
+
+'
+' BMenuItemChecked(stMenu$,stMenuItem$, stHMenuItem$)
+'
+' Description:
+' This procedure checks to see IF the specified menu
+' item is checked or not.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
+' exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' TRUE if checked.
+' FALSE if not checked.
+'
+' Example:
+' fIsChecked% = BMenuItemChecked("Format","Style","Bold")
+' fIsChecked% = BMenuItemchecked("Edit", "Copy", "")
+'
+'
+FUNCTION BMenuItemChecked%(stMenu$, stMenuItem$, stHMenuItem$) STATIC
+
+ IF stHMenuItem$ = "" THEN
+ WMenu(stMenu$) 'Check menu item within stMenu$.
+ BMenuItemChecked = WMenuChecked(stMenuItem$) <> 0
+ ELSE
+ WMenu(stMenu$) 'Check menu item under popup menu.
+ WMenu(stMenuItem$)
+ BMenuItemChecked = WMenuChecked(stHMenuItem$) <> 0
+ END IF
+ DoKeys "{esc 3}" 'Make sure you close menu.
+
+END FUNCTION
+
+
+
+'
+' XMenuItemChecked (stMenu$,stMenuItem$, stHMenuItem$)
+'
+' Description:
+' Reports error IF menu item is not Checked.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
+' exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMenuItemChecked "Options", "Read Only", ""
+'
+'
+'
+SUB XMenuItemChecked(stMenu$,stMenuItem$, stHMenuItem$) STATIC
+ IF BMenuItemChecked(stMenu$,stMenuItem$, stHMenuItem$) = 0 THEN
+ XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is not Checked"
+ END IF
+END SUB
+
+'
+' XMenuItemNotChecked (stMenu$,stMenuItem$, stHMenuItem$)
+'
+' Description:
+' Reports error IF menu item is Checked.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
+' exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMenuItemNotChecked "Options", "Read Only", ""
+'
+'
+'
+SUB XMenuItemNotChecked(stMenu$,stMenuItem$, stHMenuItem$) STATIC
+ IF BMenuItemChecked(stMenu$,stMenuItem$, stHMenuItem$) THEN
+ XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is Checked"
+ END IF
+END SUB
+
+
+
+'
+' BMenuItemEnabled(stMenu$,stMenuItem$, stHMenuItem$)
+'
+' Description:
+' This procedure checks to see IF the specified menu or
+' menu item is enabled or not.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
+' exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' TRUE if enabled.
+' FALSE if not enabled.
+'
+' Example:
+' fIsEnabled% = BMenuItemEnabled("File", "", "")
+' fIsEnabled% = BMenuItemEnabled("File", "Close", "")
+'
+'
+FUNCTION BMenuItemEnabled%(stMenu$,stMenuItem$, stHMenuItem$) STATIC
+
+ IF stHMenuItem$ = "" THEN
+ IF stMenuItem$ = "" THEN
+ BMenuItemEnabled = WMenuEnabled(stMenu$) <> 0 'Check main menu bar menu items.
+ ELSE
+ WMenu(stMenu$) 'Check menu item within stMenu$.
+ BMenuItemEnabled = WMenuEnabled(stMenuItem$) <> 0
+ END IF
+ ELSE
+ WMenu(stMenu$) 'Check menu item under popup menu.
+ WMenu(stMenuItem$)
+ BMenuItemEnabled = WMenuEnabled(stHMenuItem$) <> 0
+ END IF
+ DoKeys "{esc 3}" 'Make sure you close menu.
+
+END FUNCTION
+
+
+'
+' XMenuItemEnabled (stMenu$,stMenuItem$, stHMenuItem$)
+'
+' Description:
+' Reports error IF menu item is not Enabled.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
+' exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMenuItemEnabled "Options", "Read Only", ""
+'
+'
+'
+SUB XMenuItemEnabled(stMenu$,stMenuItem$, stHMenuItem$) STATIC
+ IF BMenuItemEnabled(stMenu$,stMenuItem$, stHMenuItem$) = 0 THEN
+ XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is not Enabled"
+ END IF
+END SUB
+
+
+'
+' XMenuItemNotEnabled (stMenu$,stMenuItem$, stHMenuItem$)
+'
+' Description:
+' Reports error IF menu item is Enabled.
+'
+' Parameters:
+' stMenu = menu where stMenuItem is found.
+' stMenuItem = menu item to select or secondary menu, IF Hierarchial menu
+' exists.
+' stHMenuItem = hierarchial(popup) menu item.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMenuItemNotEnabled "Options", "Read Only", ""
+'
+'
+'
+SUB XMenuItemNotEnabled(stMenu$,stMenuItem$, stHMenuItem$) STATIC
+ IF BMenuItemEnabled(stMenu$,stMenuItem$, stHMenuItem$) THEN
+ XLogFailure stMenu$ + " " + stMenuItem$ + " " + stHMenuItem$ + " is Enabled"
+ END IF
+END SUB
+
+
+
+'**********************************************************
+'***************** Window Subroutines *********************
+'**********************************************************
+
+
+
+
+'
+' XCaptionExists(stCaption$)
+'
+' Description:
+' Will report error IF caption does not Exist.
+'
+' Parameters:
+' stCaption$ - expected caption of current window
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCaptionExists "Winword"
+'
+'
+'
+SUB XCaptionExists(stCaption$) STATIC
+ IF Instr(SGetCaption(), stCaption$) = 0 THEN
+ XLogFailure stCaption$ + " caption does not exist in active window."
+ END IF
+END SUB
+
+
+'
+' XCaptionNotExists(stCaption$)
+'
+' Description:
+' Will report error IF caption Exist.
+'
+' Parameters:
+' stCaption$ - NOT expected caption of current window
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCaptionNotExists "Winword"
+'
+'
+SUB XCaptionNotExists(stCaption$) STATIC
+ IF Instr(SGetCaption(), stCaption$) <> 0 THEN
+ XLogFailure stCaption$ + " caption Exists in active window."
+ END IF
+END SUB
+
+
+
+'
+' SGetCaption()
+'
+' Description:
+' Returns the caption of the Active window
+'
+' Parameters:
+' none
+'
+' Return:
+' Caption of the Active window
+'
+' Example:
+' stCaption$ = SGetCaption()
+'
+'
+FUNCTION SGetCaption$() STATIC
+ DIM x%
+ DIM stCaption$
+
+ stCaption$ = String$(100, 32)
+ x% = GetWindowText (GetForegroundWindow(), stCaption$, LEN(stCaption$))
+ SGetCaption = mid$(stCaption$,1,x%)
+ stCaption$ = ""
+END FUNCTION
+
+
+
+'
+' XZoomWindow
+'
+' Description:
+' Toggles the state of the window between normalized
+' and maximized.
+'
+' Parameters:
+' None
+'
+' Returns:
+' nothing
+'
+' Example:
+' XZoomWindow
+'
+'
+'
+SUB XZoomWindow STATIC
+ DIM bogus%
+ DIM lhwndTemp%
+
+ lhwndTemp% = GetForegroundWindow()
+
+ ' IF the window is maximized, normalize.
+
+ IF (IsZoomed(lhwndTemp%)) THEN
+ ' window is maximized, we must normalize it
+ bogus% = ShowWindow(lhwndTemp%, SW_SHOWNORMAL)
+ ELSE
+ bogus% = ShowWindow(lhwndTemp%, SW_MAXIMIZE)
+ END IF
+
+END SUB
+
+
+'
+' XMaxWindow
+'
+' Description:
+' Maximize the current active window
+'
+' Parameters:
+' None
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMaxWinow
+'
+'
+'
+
+
+SUB XMaxWindow STATIC
+ DIM bogus%
+ DIM lhwndTemp%
+ DIM lWndStyle&
+
+ lhwndTemp% = GetForegroundWindow ()
+
+ ' Get the window's style attributes
+ lWndStyle& = GetWindowLong(lhwndTemp%, GWL_STYLE)
+
+ IF ((lWndStyle& And WS_MAXIMIZE) <> 0) THEN
+ XLogFailure "Could not maximize active window, already maximized"
+ ELSE
+ bogus% = ShowWindow(lhwndTemp%, SW_SHOWMAXIMIZED)
+ END IF
+
+END SUB
+
+'
+' XWindowMaximized
+'
+' Description:
+' check IF the current active window is Maximized
+'
+' Parameters:
+' none
+'
+' Returns:
+' nothing
+'
+' Example:
+' XWindowMaximized
+'
+'
+'
+
+
+SUB XWindowMaximized STATIC
+ IF BWindowMaximized = 0 THEN
+ XLogFailure "Active Window not maximized"
+ END IF
+
+END SUB
+
+'
+' XWindowNotMaximized
+'
+' Description:
+' Check that the current window is not maximized
+'
+' Parameters:
+' none
+'
+' Returns:
+' nothing
+'
+' Example:
+' XWindowNotMaximized
+'
+'
+'
+
+
+SUB XWindowNotMaximized STATIC
+
+ IF BWindowMaximized THEN
+ XLogFailure "Active Window is maximized"
+ END IF
+
+END SUB
+
+'
+' BWindowMaximized
+'
+' Description:
+' detect IF current window is maximized
+'
+' Parameters:
+' none
+'
+' Returns:
+' TRUE if maximized, FALSE if not
+'
+' Example:
+' BWindowMaximized
+'
+'
+'
+
+
+FUNCTION BWindowMaximized% STATIC
+ DIM bogus%
+ DIM lhwndTemp%
+ DIM lWndStyle&
+
+ lhwndTemp% = GetForegroundWindow ()
+
+ ' Get the window's style attributes
+ lWndStyle& = GetWindowLong(lhwndTemp%, GWL_STYLE)
+
+ BWindowMaximized = (lWndStyle& AND WS_MAXIMIZE) <> 0
+
+END FUNCTION
+
+
+'
+' XMinWindow
+'
+' Description:
+' Minimize the current active window
+'
+' Parameters:
+' none
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMinWindow
+'
+'
+'
+
+
+SUB XMinWindow STATIC
+ DIM bogus%
+ DIM lhwndTemp%
+ DIM lWndStyle&
+
+ lhwndTemp% = GetForegroundWindow ()
+
+ ' Get the window's style attributes
+ lWndStyle& = GetWindowLong(lhwndTemp%, GWL_STYLE)
+
+ ' IF maximized, XLog the descrepancy
+ IF ((lWndStyle& And WS_MINIMIZE) <> 0) THEN
+ XLogFailure "Could not minimize active window, already minimized"
+ ELSE
+ bogus% = ShowWindow(lhwndTemp%, SW_SHOWMINIMIZED)
+ END IF
+
+END SUB
+
+' XWindowMinimized
+'
+' Description:
+' Check that current window is minimized
+'
+' Parameters:
+' none
+'
+' Returns:
+' nothing
+'
+' Example:
+' XWindowMinized
+'
+'
+'
+
+
+SUB XWindowMinimized STATIC
+
+ IF BWindowMinimized = 0 THEN
+ XLogFailure "Active Window not Minimized"
+ END IF
+
+END SUB
+
+'
+' XWindowNotMinimized
+'
+' Description:
+' Check that current window is not minimized
+'
+' Parameters:
+' none
+'
+' Returns:
+' nothing
+'
+' Example:
+' XWindowNotMinimized
+'
+'
+'
+
+
+SUB XWindowNotMinimized STATIC
+ IF BWindowMinimized THEN
+ XLogFailure "Active Window is Minimized"
+ END IF
+
+END SUB
+
+'
+' BWindowMinimized
+'
+' Description:
+' Detect IF active window minimized
+'
+' Parameters:
+' none
+'
+' Returns:
+' TRUE if minimized, FALSE if not
+'
+' Example:
+' BWindowMinimized
+'
+'
+'
+
+
+FUNCTION BWindowMinimized% STATIC
+ DIM bogus%
+ DIM lhwndTemp%
+ DIM lWndStyle&
+
+ lhwndTemp% = GetForegroundWindow ()
+
+ ' Get the window's style attributes
+ lWndStyle& = GetWindowLong(lhwndTemp%, GWL_STYLE)
+
+ BWindowMinimized = (lWndStyle& AND WS_MINIMIZE) <> 0
+
+END FUNCTION
+
+'
+' XRestoreWindow
+'
+' Description:
+' Restore the current active window. NOTE: You must make
+' the icon the active window before calling XRestoreWin!
+'
+' Parameters:
+' none
+'
+' Returns:
+' nothing
+'
+' Example:
+' XRestoreWindow
+'
+'
+'
+
+
+SUB XRestoreWindow STATIC
+ DIM bogus%
+ DIM lhwndTemp%
+ DIM lWndStyle&
+
+ lhwndTemp% = GetForegroundWindow ()
+
+ ' Get the window's style attributes
+ lWndStyle& = GetWindowLong(lhwndTemp%, GWL_STYLE)
+
+ ' IF maximized, XLog the descrepancy
+ IF ((lWndStyle& And WS_MINIMIZE) = 0) AND ((lWndStyle& And WS_MAXIMIZE) = 0) THEN
+ XLogFailure "Active window is not minimized or maximized."
+ ELSE
+ bogus% = ShowWindow(lhwndTemp%, SW_RESTORE)
+ END IF
+
+END SUB
+
+
+
+'
+' XSizeActiveWindow(iXPixels, iYPixels, fAbsOrRel)
+'
+' Description:
+' Moves the bottom-right corner of the active window
+' to new coordiates iXPixels, iYPixels. IF fAbsOrRel
+' is TRUE, the coordiates are absolute. IF fAbsOrRel
+' is FALSE, the coordiates are relative to the current
+' position.
+'
+' Parameters:
+' iXPixels - X coordinate
+' iYPixels - Y coordinate
+' IF !fAbsOrRel FALSE, the X,Y coordinates are relative to the
+' current mouse coordianates.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XSizeActiveWindow iXPixels, iYPixels, fAbsOrRel
+'
+'
+'
+
+SUB XSizeActiveWindow (iXPixels%, iYPixels%, fAbsOrRel%) STATIC
+
+ DIM xyTempRect As rect
+ DIM iTempX%
+ DIM iTempY%
+ DIM temphWnd%
+
+ IF fAbsOrRel% THEN
+ WSetWndSiz GetForegroundWindow(), iXPixels%, iYPixels%
+ ELSE
+ ' Find the active window
+ temphWnd% = GetForegroundWindow
+
+ ' Get the Rect of the active window
+ GetWindowRect temphWnd%, xyTempRect
+ ' Determine new X coordinate
+ iTempX% = ((xyTempRect.wright - 1) - (xyTempRect.wleft)) + iXPixels%
+
+ ' Determine new Y coordinate
+ iTempY% = ((xyTempRect.bottom - 1) - (xyTempRect.top)) + iYPixels%
+
+ ' size the window
+ WSetWndSiz GetForegroundWindow(), iTempX%, iTempY%
+
+ END IF
+END SUB
+
+
+'
+' XMoveActiveWindow(iXPixels, iYPixels, fAbsOrRel)
+'
+' Description:
+' Moves the top-left corner of the active window
+' to new coordiates iXPixels, iYPixels. IF fAbsOrRel
+' is TRUE, the coordiates are absolute. IF fAbsOrRel
+' is FALSE, the coordiates are relative to the current
+' position.
+'
+' Parameters:
+' iXPixels - X coordinate
+' iYPixels - Y coordinate
+' IF !fAbsOrRel FALSE, the X,Y coordinates are relative to the
+' current mouse coordianates.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMoveActiveWindow iXPixels, iYPixels, fAbsOrRel
+'
+'
+
+SUB XMoveActiveWindow (iXPixels%, iYPixels%, fAbsOrRel%) STATIC
+
+ DIM xyTempRect As Rect
+ DIM iTempX%
+ DIM iTempY%
+ DIM temphWnd%
+
+
+ IF fAbsOrRel% THEN
+ WSetWndPos GetForegroundWindow(), iXPixels%, iYPixels%
+ ELSE
+ ' Find the active window
+ temphWnd% = GetForegroundWindow
+
+ ' Get the Rect of the active window
+ GetWindowRect temphWnd%, xyTempRect
+
+ ' Determine new X coordinate
+ iTempX% = xyTempRect.wleft + iXPixels%
+
+ ' Determine new Y coordinate
+ iTempY% = xyTempRect.top + iYPixels%
+
+ ' move the window
+ WSetWndPos GetForegroundWindow(), iTempX%, iTempY%
+ END IF
+END SUB
diff --git a/public/sdk/inc/ftestlog.mst b/public/sdk/inc/ftestlog.mst
new file mode 100644
index 000000000..2abfaa486
--- /dev/null
+++ b/public/sdk/inc/ftestlog.mst
@@ -0,0 +1,1828 @@
+'XTestLog.inc - definitions for Fast Test Utility routines
+'
+' Copyright (c) 1991-1992, Microsoft Corporation. All rights reserved.
+'
+'Purpose:
+' This file defines the Log and Dialog functions of the Fast Test
+' functionality
+'
+
+
+'**********************************************************
+'***************** Log Subroutines ************************
+'**********************************************************
+
+' XSetLogFileName(stFilename$)
+'
+' Description:
+' Sets global variable for use as the log name
+' The global variable gsCurrentDir$ can be used to build
+' the log name (it is the current directory for when the
+' script is started). The default log name if this function
+' is not called, is gsCurrentDir$ + "\TESTLOG.LOG"
+'
+' Parameters:
+' stFilename$ - the filename to log to
+'
+' Returns:
+' nothing
+'
+' Example:
+' XSetLogFileName "c:\test\app.log"
+' XSetLogFileName gsCurrentDir$ + "\app.log"
+
+SUB XSetLogFilename(sFilename$) STATIC
+
+ gsLogFileName = sFilename$
+
+END SUB
+
+'
+' XSetTerminate(fTerminate%)
+'
+' Description:
+' Sets the terminate state to argument. If terminate is FALSE
+' the XLogfailure will log the failure but execution will
+' continue. This can lead to many failures in the log do to
+' one early failure. It can also give many valid failures in
+' a single run (checking all menu states for instance).
+'
+'
+' Parameters:
+' fTerminate - TRUE if should terminate on failure on, FALSE if not
+'
+' Returns:
+' nothing
+'
+' Example:
+' XSetTerminate FALSE ' allow multiple failures to be logged
+'
+'
+SUB XSetTerminate(fTerminate%) STATIC
+ gfTerminate% = fTerminate%
+END SUB
+
+
+'
+' XLog(stString$)
+'
+' Description:
+' Logs string to one or several destinations
+' 1. Disk 2. Screen 3. COM1 port 4: COM2 port 5. MsgBox
+' based on a OR'd Global flag gfLogOptions. The CONST's to
+' work with are LOG_DISK, LOG_SCREEN, LOG_COM, and
+' LOG_MSGBOX respectively.
+'
+' Parameters:
+' stString$ - string to Log
+'
+' Returns:
+' nothing
+'
+' Example:
+' XSetLogOptions LOG_DISK OR LOG_SCREEN
+' XLog "Something to Log" 'this will be logged to disk and viewport
+'
+'
+SUB XLog (stLog$) STATIC
+ DIM fh%
+
+ fh% = FREEFILE
+
+ IF gfLogOptions THEN
+ gErrorType = ET_LOG
+
+
+ IF (LOG_DISK AND gfLogOptions) THEN
+ Open gsLogFileName$ For Append As #fh%
+ Print #fh%, stLog$
+ Close #fh%
+
+ END IF
+
+ IF (LOG_SCREEN AND gfLogOptions) THEN
+ 'Print the string to the Viewport
+ Print stLog$
+ END IF
+
+ IF (LOG_COM1 AND gfLogOptions) THEN
+ 'log to comport COM1
+
+ OPEN "COM1" For Append as #fh%
+ Print #fh%, stLog$
+ Close #fh%
+ END IF
+
+ IF (LOG_COM2 AND gfLogOptions) THEN
+ 'log to comport COM2
+
+ OPEN "COM2" For Append as #fh%
+ Print #fh%, stLog$
+ Close #fh%
+ END IF
+
+ IF (LOG_MSGBOX AND gfLogOptions) THEN
+ 'Put the string in a MsgBox
+ IF stLog$ <> "" THEN
+ Pause stLog$
+ END IF
+ END IF
+ gErrorType = ET_NOTHING
+
+ END IF 'gfLogOptions
+END SUB
+
+
+
+'
+' XLogBanner(stString$)
+'
+' Description:
+' Logs string with a blank line before and after,
+' and adds five *'s before and after the string.
+'
+' Parameters:
+' stString$ - string to Log
+'
+' Returns:
+' nothing
+'
+' Example:
+' XLogBanner "Starting FOO Test"
+'
+'
+
+
+SUB XLogBanner(lpszInput$) STATIC
+
+ XLog ""
+ XLog "***** " + lpszInput$ + " *****"
+ XLog ""
+
+END SUB
+
+
+
+'
+' XLogWarning(stString$)
+'
+' Description:
+' Adds Warning banner to string
+'
+' Parameters:
+' stString$ - string to Log
+'
+' Returns:
+' nothing
+'
+' Example:
+' XLogWarning "Too many menu items??"
+'
+'
+
+SUB XLogWarning(lpszInput$) STATIC
+
+ XLog ""
+ XLog "!!! =====> WARNING <===== !!!"
+ XLog "***** " + lpszInput$ + " *****"
+ XLog ""
+
+END SUB
+
+
+
+' XLogFailure (stFailure$)
+'
+' Description:
+' Logs failure with banner and ends the script
+'
+' Parameters:
+' stFailure - Error string to logged
+'
+' Return:
+' nothing
+'
+' Example:
+' XLogFailure "Button does not exist"
+'
+'
+
+SUB XLogFailure(stFailure$) STATIC
+ XLog ""
+ XLog "***************** FAILURE ******************"
+ XLog stFailure$
+ XLog "********************************************"
+ XLog ""
+ IF gfTerminate THEN
+ End
+ ELSE
+ gfFailure = TRUE
+ END IF
+END SUB
+
+'
+' XFailureCheck
+'
+' Description:
+' this routine checks to see if any failures
+' have occured. If so, the script is stopped. This would
+' be used if XSetTerminate has been used to disable the stopping
+' of the script on failures.
+'
+'
+' Parameters:
+' none
+'
+' Returns:
+' nothing
+'
+' Example:
+' XFailureCheck ' fail if other failures at this point
+'
+'
+SUB XFailureCheck STATIC
+ IF gfFailure THEN
+ XSetTerminate TRUE
+ XLogFailure "Ending script; failures have occurred"
+ END IF
+END SUB
+
+
+'
+' XSetLogOptions (wLogOptions%)
+'
+' Description:
+' Sets the global log options flag to the passed options
+'
+' Parameters:
+' wLogOptions - a set of bits OR'ed together.
+' currently we have LOG_COM1 LOG_COM2 LOG_SCREEN LOG_DISK
+' and LOG_MSGBOX
+' Return:
+' nothing
+'
+' Example:
+' XSetLogOptions LOG_COM1 OR LOG_SCREEN 'enable logging to screen and com1
+'
+SUB XSetLogOptions (wLogOptions%) STATIC
+ 'set the global log flag
+ gfLogOptions = wLogOptions
+ gfTmpLogOptions = gfLogOptions ' allows XLogOn after XSetLogOptions
+END SUB
+
+
+'
+' XLogOff ()
+'
+' Description:
+' Turn off logging
+'
+' Parameters:
+' none
+'
+' Return:
+' nothing
+'
+' Example:
+' XLogOff
+'
+'
+SUB XLogOff () STATIC
+ 'save the global log flag to a temporary and set options to zero
+ gfTmpLogOptions = gfLogOptions
+ gfLogOptions = 0
+END SUB
+
+
+
+'
+' XLogOn ()
+'
+' Description:
+' Turn on logging
+'
+' Parameters:
+' none
+'
+' Return:
+' nothing
+'
+' Example:
+' XLogOn
+'
+'
+SUB XLogOn () STATIC
+ 'restore log options saved in temporary
+ gfLogOptions = gfTmpLogOptions
+END SUB
+
+
+
+'**********************************************************
+'***************** Dialog Subroutines *********************
+'**********************************************************
+
+
+
+'
+' XDialogBoxExists(s$)
+'
+' Description:
+' Check if a dialog box exists with given captions
+'
+' Parameters:
+' s$ - caption of dialog to search for
+'
+' Returns:
+' nothing
+'
+' Example:
+' XDialogBoxExists "Open"
+'
+'
+SUB XDialogBoxExists(s$) STATIC
+ ' won't work if app creates special class for its dialogs
+
+ IF FindWindow(gsDialogClass$,s$) = 0 THEN
+ XLogFailure "dialog box " + s$ + " doesn't exist"
+ END IF
+
+END SUB
+
+'
+' XDialogBoxNotExists(s$)
+'
+' Description:
+' Check that a dialog of given caption doesn't exist
+'
+' Parameters:
+' s$ - caption of dialog to search for
+'
+' Returns:
+' nothing
+'
+' Example:
+' XDialogBoxNotExists "Close"
+'
+'
+SUB XDialogBoxNotExists(s$) STATIC
+
+ ' won't work if app creates special class for its dialogs
+
+ IF FindWindow(gsDialogClass$,s$) <> 0 THEN
+ XLogFailure "dialog box " + s$ + " exists"
+ END IF
+
+END SUB
+
+'
+' BDialogBoxExists(s$)
+'
+' Description:
+' return if a dialog with given captions exists
+'
+' Parameters:
+' s$ caption of dialog to search for
+'
+' Returns:
+' TRUE if exist, FALSE if not
+'
+' Example:
+' fHaveOpen% = BDialogBoxExists("Open")
+'
+'
+'
+FUNCTION BDialogBoxExists%(s$) STATIC
+
+ ' won't work if app creates special class for its dialogs
+
+ BDialogBoxExists = FindWindow(gsDialogClass$,s$) <> 0
+
+END FUNCTION
+
+'
+' XWaitDialogBox(s$, WaitTime%)
+'
+' Description:
+' wait for dialog box with string argument for caption and
+' integer argument as estimate of time to keep trying before
+' logging a failure
+'
+' Parameters:
+' s$ - caption of dialog to search for
+' WaitTime% - max time to keep checking for dialog
+'
+' Returns:
+' nothing
+'
+' Example:
+' XWaitDialogBox "Done"
+'
+'
+SUB XWaitDialogBox(s$, WaitTime%) STATIC
+
+ DIM hWnd%
+ DIM fDone%
+ DIM fFound%
+ DIM ret%
+
+ fDone = FALSE
+ fFound = FALSE
+
+
+ WHILE NOT fDone%
+
+ ' class for dialogs created by windows is gsDialogClass$
+ ' won't work if app creates special class for its dialogs
+ hWnd% = FindWindow(gsDialogClass$,s$)
+ IF hWnd% <> 0 THEN
+ fFound = TRUE
+ fDone = TRUE
+ ELSE
+ SLEEP 1
+ WaitTime% = WaitTime% - 1
+ IF WaitTime% <= 0 THEN
+ fDone = TRUE
+ END IF
+ END IF
+
+ WEND
+ IF NOT fFound% THEN
+ XLogFailure "FAIL """ + s$ + """ dialogbox not found"
+ END IF
+END SUB
+
+
+
+
+
+' **********************************************************
+' ***************** Dialog: Button Subroutines *************
+' **********************************************************
+
+
+'
+' BButtonExists(stButtonName$)
+'
+' Description:
+' This procedure checks to see if the specified button
+' exists or not.
+'
+' Parameters:
+' stButtonName$ = button to be checked.
+'
+' Returns:
+' TRUE if button exists, FALSE if button does not exist.
+'
+' Example:
+' fExists% = BButtonExists("OK")
+'
+FUNCTION BButtonExists%(stButtonName$) STATIC
+
+ BButtonExists = WButtonExists(stButtonName$) <> 0
+
+END FUNCTION
+
+
+'
+' XButtonExists (stButtonName$)
+'
+' Description:
+' Reports error if button does not exist in active window.
+'
+' Parameters:
+' stButtonName$ - button to be found.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XButtonExists "Cancel"
+'
+'
+'
+SUB XButtonExists(stButton$) STATIC
+ IF BButtonExists(stButton$) = 0 THEN
+ XLogFailure stButton$ + " does not Exist"
+ END IF
+END SUB
+
+
+'
+' XButtonNotExists (stButtonName$)
+'
+' Description:
+' Reports error if button Exists in active window.
+'
+' Parameters:
+' stButtonName$ - button to not be found.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XButtonNotExists "Cancel"
+'
+'
+'
+SUB XButtonNotExists(stButton$) STATIC
+ IF BButtonExists(stButton$) THEN
+ XLogFailure stButton$ + " Exists"
+ END IF
+END SUB
+
+
+'
+' BButtonEnabled(stButtonName$)
+'
+' Description:
+' This procedure checks to see if the specified button
+' is enabled or not.
+'
+' Parameters:
+' stButtonName$ - button to be checked.
+'
+' Returns:
+' TRUE if button enabled, FALSE if button not enabled.
+'
+' Example:
+' fEnabled% = BButtonEnabled("OK")
+'
+FUNCTION BButtonEnabled%(stButtonName$) STATIC
+
+ BButtonEnabled = WButtonEnabled(stButtonName$) <> 0
+
+END FUNCTION
+
+
+'
+' XButtonEnabled (stButtonName$)
+'
+' Description:
+' Reports error if button is not Enabled.
+'
+' Parameters:
+' stButtonName$ - button to be checked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XButtonEnabled "Cancel"
+'
+'
+SUB XButtonEnabled(stButton$) STATIC
+ XButtonExists stButton$
+ IF BButtonEnabled(stButton$) = 0 THEN
+ XLogFailure stButton$ + " is not Enabled"
+ END IF
+END SUB
+
+
+'
+' XButtonNotEnabled (stButtonName$)
+'
+' Description:
+' Reports error if button is Enabled.
+'
+' Parameters:
+' stButtonName$ - button to be checked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XButtonNotEnabled "Cancel"
+'
+'
+SUB XButtonNotEnabled(stButton$) STATIC
+ XButtonExists stButton$
+ IF BButtonEnabled(stButton$) THEN
+ XLogFailure stButton$ + " Enabled"
+ END IF
+END SUB
+
+
+'
+' XClickButton(stButtonName$)
+'
+' Description:
+' This procedure clicks the specified button in the
+' currently active window.
+'
+' Parameters:
+' stButtonName$ - button to be clicked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XClickButton "OK"
+'
+'
+SUB XClickButton(stButtonName$) STATIC
+ XButtonExists stButtonName$
+ WButtonClick stButtonName$
+
+END SUB
+
+
+
+' **********************************************************
+' ************* Dialog: List Box Subroutines ***************
+' **********************************************************
+
+
+
+'
+' BListBoxExists(stListBox$)
+'
+' Description:
+' This procedure checks to see if the specified ListBox
+' exists or not.
+'
+' Parameters:
+' stListBox$ - ListBox to be checked.
+'
+' Returns:
+' TRUE if ListBox exists, FALSE if ListBox does not exist.
+'
+' Example:
+' fExists% = BListBoxExists("cars")
+'
+FUNCTION BListBoxExists%(stListBox$) STATIC
+
+ BListBoxExists = WListExists(stListBox$) <> 0
+
+END FUNCTION
+
+
+'
+' XListBoxExists (stListBox$)
+'
+' Description:
+' Reports error if ListBox does not exist in active window.
+'
+' Parameters:
+' stListBox$ - ListBox to be found.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XListBoxExists "Cars"
+'
+'
+SUB XListBoxExists(stListBox$) STATIC
+
+ IF WListExists(stListBox$) = 0 THEN
+ XLogFailure "ListBox " + stListBox$ + " does not Exist"
+ END IF
+
+END SUB
+
+'
+' XListBoxNotExists (stListBox$)
+'
+' Description:
+' Reports error if ListBox exists in active window.
+'
+' Parameters:
+' stListBox$ - ListBox not to be found.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XListBoxNotExists "cars"
+'
+SUB XListBoxNotExists(stListBox$) STATIC
+
+ IF WListExists(stListBox$) THEN
+ XLogFailure "ListBox " + stListBox$ + " exists"
+ END IF
+
+END SUB
+
+
+
+
+
+'
+' XFocusListBox(stListBox$)
+'
+' Description:
+' This procedure puts focus to the specified ListBox in the
+' currently active window.
+'
+' Parameters:
+' stListBox$ - ListBox to be given focus.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XFocusListBox "&Files:"
+'
+SUB XFocusListBox(stListBox$) STATIC
+
+ IF WListExists(stListBox$) THEN
+ WListItemClk stListBox$,1 'it now has focus
+ ELSE
+ XLogFailure "Could not put focus on " + stListBox$ + " ListBox"
+ END IF
+
+END SUB
+
+
+
+
+'
+' IGetListBoxItemCount%(stListBox$)
+'
+' Description:
+' Returns the number of items in listbox stListBox$.
+'
+' Parameters:
+' stListBox$ - ListBox to get item count from
+'
+' Returns:
+' Int - List box item count
+'
+' Example:
+' num% = IGetListBoxItemCount ("cars")
+'
+'
+FUNCTION IGetListBoxItemCount%(stListBox$) STATIC
+ XListBoxExists stListBox$
+ IGetListBoxItemCount = WListCount(stListBox$)
+
+END FUNCTION
+
+
+
+'
+' BListBoxItemExists%(stListBox$, stListBoxItem$)
+'
+' Description:
+' Returns true if list box item exists, false otherwise.
+'
+' Parameters:
+' stListBox$- ListBox to look in
+' stListBoxItem$ - Item to look for
+'
+' Returns:
+' Int - 0 if item does not exist, positive val otherwise
+'
+' Example:
+' flag% = BListBoxItemExists ("&Files:","FOO.C")
+'
+'
+FUNCTION BListBoxItemExists%(stListBox$, stListBoxItem$) STATIC
+
+ BListBoxItemExists = WListItemExists (stListBox$, stListBoxItem$) <> 0
+
+END FUNCTION
+
+
+
+
+'
+' XListBoxItemExists(stListBox$, stListBoxItem$)
+'
+' Description:
+' Logs failure if list box item does not exist
+'
+' Parameters:
+' stListBox$- ListBox to look in
+' stListBoxItem$ - Item to look for
+'
+' Returns:
+' nothing
+'
+' Example:
+' XListBoxItemExists "&Files:","FOO.C"
+'
+'
+SUB XListBoxItemExists (stListBox$, stListBoxItem$) STATIC
+
+ XListBoxExists stListBox$
+ IF WListItemExists (stListBox$, stListBoxItem$) = 0 THEN
+ XLogFailure "ListBoxItem " + stListBoxItem$ + " does not exist"
+ END IF
+
+END SUB
+
+
+'
+' XListBoxItemNotExists(stListBox$, stListBoxItem$)
+'
+' Description:
+' Logs failure if list box item exists
+'
+' Parameters:
+' stListBox$ - ListBox to look in
+' stListBoxItem$ - Item to look for
+'
+' Returns:
+' nothing
+'
+' Example:
+' XListBoxItemNotExists "&Files:","FOO.C"
+'
+'
+SUB XListBoxItemNotExists (stListBox$, stListBoxItem$) STATIC
+
+ XListBoxExists stListBox$
+ IF WListItemExists (stListBox$, stListBoxItem$) <> 0 THEN
+ XLogFailure "ListBoxItem " + stListBoxItem$ + " exists"
+ END IF
+
+END SUB
+
+
+
+
+'
+' XClickListBoxItem(stListBox$, stListBoxItem$)
+'
+' Description:
+' Clicks on list box item
+'
+' Parameters:
+' stListBox$ - ListBox to look in
+' stListBoxItem$ - Item to click on
+'
+' Returns:
+' nothing
+'
+' Example:
+' XClickListBoxItem "&Files:","FOO.C"
+'
+'
+SUB XClickListBoxItem (stListBox$, stListBoxItem$) STATIC
+
+ XListBoxExists stListBox$
+ XListBoxItemExists stListBox$, stListBoxItem$
+ WListItemClkT stListBox$, stListBoxItem$
+
+END SUB
+
+
+
+
+'
+' XDblClickListBoxItem% (stListBox$, stListBoxItem$)
+'
+' Description:
+' Clicks on list box item
+'
+' Parameters:
+' stListBox$ - ListBox to look in
+' stListBoxItem$ - Item to click on
+'
+' Returns:
+' nothing
+'
+' Example:
+' XDblClickListBoxItem "&Files:","FOO.C"
+'
+'
+SUB XDblClickListBoxItem (stListBox$, stListBoxItem$) STATIC
+
+ XListBoxExists stListBox$
+ XListBoxItemExists stListBox$, stListBoxItem$
+ WListItemDblClkT stListBox$, stListBoxItem$
+
+END SUB
+
+
+
+
+'
+' SGetListBoxItemText (stListBox$)
+'
+' Description:
+' Returns currently selected list box item
+'
+' Parameters:
+' stListBox$ is the listbox to get item from
+'
+' Returns:
+' ListBox Item string
+'
+' Example:
+' a$ = SGetListBoxItemText ("&User List:")
+'
+'
+FUNCTION SGetListBoxItemText$(stListBox$) STATIC
+
+ XListBoxExists stListBox$
+ SGetListBoxItemText = ListText(stListBox$)
+
+END FUNCTION
+
+
+
+' **********************************************************
+' ************* Dialog: Combo Box Subroutines **************
+' **********************************************************
+
+
+
+'
+' BComboBoxExists%(stComboBox$)
+'
+' Description:
+' This procedure checks to see if the specified ComboBox
+' exists or not.
+'
+' Parameters:
+' stComboBox$ = ComboBox to be checked.
+'
+' Returns:
+' TRUE if ComboBox exists.
+' FALSE if ComboBox does not exist.
+'
+' Example:
+' fExists% = BComboBoxExists("&File")
+'
+FUNCTION BComboBoxExists%(stComboBox$) STATIC
+
+ BComboBoxExists = WComboExists(stComboBox$) <> 0
+
+END FUNCTION
+
+
+'
+' XComboBoxExists (stComboBox$)
+'
+' Description:
+' Reports error if ComboBox does not exist in active window.
+'
+' Parameters:
+' stComboBox$ - ComboBox to be found.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XComboBoxExists "&File"
+'
+'
+SUB XComboBoxExists(stComboBox$) STATIC
+
+ IF WComboExists(stComboBox$) = 0 THEN
+ XLogFailure "ComboBox " + stComboBox$ + " does not Exist"
+ END IF
+
+END SUB
+
+'
+' XComboBoxNotExists (stComboBox$)
+'
+' Description:
+' Reports error if ComboBox exists in active window.
+'
+' Parameters:
+' stComboBox$ - ComboBox not to be found.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XComboBoxNotExists "&File"
+'
+SUB XComboBoxNotExists(stComboBox$) STATIC
+
+ IF WComboExists(stComboBox$) THEN
+ XLogFailure "ComboBox " + stComboBox$ + " exists"
+ END IF
+
+END SUB
+
+
+
+
+
+'
+' XFocusComboBox(stComboBox$)
+'
+' Description:
+' This procedure puts focus to the specified ComboBox in the
+' currently active window.
+'
+' Parameters:
+' stComboBox$ = ComboBox to be given focus.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XFocusComboBox("&Files:")
+'
+SUB XFocusComboBox(stComboBox$) STATIC
+
+ IF WComboExists(stComboBox$) THEN
+ WComboItemClk stComboBox$,1 'it now has focus
+ ELSE
+ XLogFailure "Could not put focus on " + stComboBox$ + " ComboBox"
+ END IF
+
+END SUB
+
+
+
+
+'
+' IWGetComboBoxItemCount%(stComboBox$)
+'
+' Description:
+' Returns the number of items in ComboBox stComboBox$.
+'
+' Parameters:
+' stComboBox$ - ComboBox to get item count from
+'
+' Returns:
+' Int - Combo box item count
+'
+' Example:
+' num% = WComboBoxItemCount ()
+'
+'
+FUNCTION IGetComboBoxItemCount%(stComboBox$) STATIC
+ XComboBoxExists stComboBox$
+ IGetComboBoxItemCount = WComboCount(stComboBox$)
+
+END FUNCTION
+
+
+
+'
+' BComboBoxItemExists%(stComboBox$, stComboBoxItem$)
+'
+' Description:
+' Returns true if Combo box item exists, false otherwise.
+'
+' Parameters:
+' stComboBox$ - ComboBox to look in
+' stComboBoxItem$ - Item to look for
+'
+' Returns:
+' Int - 0 if item does not exist, positive val otherwise
+'
+' Example:
+' flag% = BComboBoxItemExists("&Files","FOO.C")
+'
+FUNCTION BComboBoxItemExists%(stComboBox$, stComboBoxItem$) STATIC
+
+ BComboBoxItemExists = WComboItemExists (stComboBox$, stComboBoxItem$) <> 0
+
+END FUNCTION
+
+
+
+
+'
+' XComboBoxItemExists(stComboBox$, stComboBoxItem$)
+'
+' Description:
+' Logs failure if combo box item does not exist
+'
+' Parameters:
+' stComboBox$ - ComboBox to look in
+' stComboBoxItem$ - Item to look for
+'
+' Returns:
+' nothing
+'
+' Example:
+' XComboBoxItemExists "&Files","FOO.C"
+'
+'
+SUB XComboBoxItemExists (stComboBox$, stComboBoxItem$) STATIC
+ XComboBoxExists stComboBox$
+ IF WComboItemExists (stComboBox$, stComboBoxItem$) = 0 THEN
+ XLogFailure "ComboBoxItem " + stComboBoxItem$ + " does not exist"
+ END IF
+
+END SUB
+
+
+'
+' XComboBoxItemNotExists(stComboBox$, stComboBoxItem$)
+'
+' Description:
+' Logs failure if combo box item exists
+'
+' Parameters:
+' stComboBox$ - ComboBox to look in
+' stComboBoxItem$ - Item to look for
+'
+' Returns:
+' nothing
+'
+' Example:
+' XComboBoxItemNotExists "&Files","FOO.C"
+'
+'
+SUB XComboBoxItemNotExists (stComboBox$, stComboBoxItem$) STATIC
+
+ XComboBoxExists stComboBox$
+ IF WComboItemExists (stComboBox$, stComboBoxItem$) THEN
+ XLogFailure "ComboBoxItem " + stComboBoxItem$ + " exists"
+ END IF
+
+END SUB
+
+
+
+
+'
+' XClickComboBoxItem(stComboBox$, stComboBoxItem$)
+'
+' Description:
+' Clicks on Combo box item
+'
+' Parameters:
+' stComboBox$ - ComboBox to look in
+' stComboBoxItem$ - Item to click on
+'
+' Returns:
+' nothing
+'
+' Example:
+' XClickComboBoxItem "&Files","FOO.C"
+'
+'
+SUB XClickComboBoxItem (stComboBox$, stComboBoxItem$) STATIC
+
+ XComboBoxExists stComboBox$
+ XComboBoxItemExists stComboBox$,stComboBoxItem$
+ WComboItemClkT stComboBox$, stComboBoxItem$
+
+END SUB
+
+
+
+
+'
+' XDblClickComboBoxItem% (stComboBox$, stComboBoxItem$)
+'
+' Description:
+' Clicks on combo box item
+'
+' Parameters:
+' stComboBox$ - ComboBox to look in
+' stComboBoxItem$ - Item to click on
+'
+' Returns:
+' nothing
+'
+' Example:
+' XDblClickComboBoxItem "&Files","FOO.C"
+'
+'
+SUB XDblClickComboBoxItem (stComboBox$, stComboBoxItem$) STATIC
+
+ XComboBoxExists stComboBox$
+ XComboBoxItemExists stComboBox$,stComboBoxItem$
+ WComboItemDblClkT stComboBox$, stComboBoxItem$
+
+END SUB
+
+
+
+
+'
+' StGetComboBoxItemText (stComboBox$)
+'
+' Description:
+' Returns currently selected Combo box item
+'
+' Parameters:
+' stComboBox$ is the ComboBox to get item from
+'
+' Returns:
+' ComboBox Item string
+'
+' Example:
+' a$ = SGetComboBoxItemText ("&User List:")
+'
+FUNCTION SGetComboBoxItemText$(stComboBox$) STATIC
+
+ XComboBoxExists stComboBox$
+ XComboBoxItemExists stComboBox$,stComboBoxItem$
+ SGetComboBoxItemText = ComboText(stComboBox$)
+
+END FUNCTION
+
+
+
+' **********************************************************
+' ************* Dialog: Check Box Subroutines **************
+' **********************************************************
+
+
+
+'
+' BCheckBoxExists(stCheckBox$)
+'
+' Description:
+' This procedure checks to see if the specified CheckBox
+' exists or not.
+'
+' Parameters:
+' stCheckBox$ = CheckBox to be checked.
+'
+' Returns:
+' TRUE if CheckBox exists.
+' FALSE if CheckBox does not exist.
+'
+' Example:
+' fExists% = BCheckBoxExists("&Delete")
+'
+FUNCTION BCheckBoxExists%(stCheckBox$) STATIC
+
+ BCheckBoxExists = WCheckExists(stCheckBox$) <> 0
+
+END FUNCTION
+
+
+'
+' XCheckBoxExists (stCheckBox$)
+'
+' Description:
+' Reports error if CheckBox does not exist in active window.
+'
+' Parameters:
+' stCheckBox$ - CheckBox to be found.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCheckBoxExists "&Delete"
+'
+SUB XCheckBoxExists(stCheckBox$) STATIC
+ IF BCheckBoxExists(stCheckBox$) = 0 THEN
+ XLogFailure "CheckBox " + stCheckBox$ + " does not Exist"
+ END IF
+END SUB
+
+
+'
+' XCheckBoxNotExists (stCheckBox$)
+'
+' Description:
+' Reports error if CheckBox Exists in active window.
+'
+' Parameters:
+' stCheckBox$ - CheckBox to not be found.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCheckBoxNotExists "&Delete"
+'
+'
+SUB XCheckBoxNotExists(stCheckBox$) STATIC
+ IF BCheckBoxExists(stCheckBox$) THEN
+ XLogFailure "CheckBox " + stCheckBox$ + " Exists"
+ END IF
+END SUB
+
+'
+' BCheckBoxChecked(stCheckBox$)
+'
+' Description:
+' This procedure checks the state of checkbox
+'
+' Parameters:
+' stCheckBox$ = CheckBox to check state of.
+'
+' Returns:
+' -1(true) if the check box is checked.
+' 0(false) if the check box is not checked.
+'
+' Example:
+' state% = BCheckBoxChecked("Special")
+'
+FUNCTION BCheckBoxChecked%(stCheckBox$) STATIC
+ BCheckBoxChecked = WCheckState(stCheckBox$) <> 0
+END FUNCTION
+
+
+'
+' XCheckBoxChecked(stCheckBox$)
+'
+' Description:
+' This procedure checks the state of checkbox
+'
+' Parameters:
+' stCheckBox$ = CheckBox to check state of.
+'
+' Returns:
+' -1(true) if the check box is checked.
+' 0(false) if the check box is not checked.
+'
+' Example:
+' XCheckBoxChecked "Special"
+'
+SUB XCheckBoxChecked(stCheckBox$) STATIC
+ XCheckBoxExists stCheckBox$
+ IF BCheckBoxChecked(stCheckBox$) = 0 THEN
+ XLogFailure "CheckBox " + stCheckBox$ + " is not checked"
+ END IF
+
+END SUB
+
+'
+' XCheckBoxNotChecked(stCheckBox$)
+'
+' Description:
+' This procedure checks the state of checkbox
+'
+' Parameters:
+' stCheckBox$ = CheckBox to check state of.
+'
+' Returns:
+' -1(true) if the check box is checked.
+' 0(false) if the check box is not checked.
+'
+' Example:
+' XCheckBoxNotChecked "Special"
+'
+SUB XCheckBoxNotChecked(stCheckBox$) STATIC
+ XCheckBoxExists stCheckBox$
+ IF BCheckBoxChecked(stCheckBox$) THEN
+ XLogFailure "CheckBox " + stCheckBox$ + " is checked"
+ END IF
+
+END SUB
+
+
+'
+' BCheckBoxEnabled(stCheckBox$)
+'
+' Description:
+' This procedure checks to see if the specified CheckBox
+' is enabled or not.
+'
+' Parameters:
+' stCheckBox$ = CheckBox to be checked.
+'
+' Returns:
+' TRUE if CheckBox enabled.
+' FALSE if CheckBox not enabled.
+'
+' Example:
+' fEnabled% = BCheckBoxEnabled("&Delete")
+'
+FUNCTION BCheckBoxEnabled%(stCheckBox$) STATIC
+
+ BCheckBoxEnabled = WCheckEnabled(stCheckBox$) <> 0
+
+END FUNCTION
+
+
+'
+' XCheckBoxEnabled (stCheckBox$)
+'
+' Description:
+' Reports error if CheckBox is not Enabled.
+'
+' Parameters:
+' stCheckBox$ - CheckBox to be checked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCheckBoxEnabled "&Delete"
+'
+'
+SUB XCheckBoxEnabled(stCheckBox$) STATIC
+ XCheckBoxExists(stCheckBox$)
+ IF BCheckBoxEnabled(stCheckBox$) = 0 THEN
+ XLogFailure "CheckBox " + stCheckBox$ + " is not Enabled"
+ END IF
+END SUB
+
+
+'
+' XCheckBoxNotEnabled (stCheckBox$)
+'
+' Description:
+' Reports error if CheckBox is Enabled.
+'
+' Parameters:
+' stCheckBox$ - CheckBox to be checked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCheckBoxNotEnabled "&Delete"
+'
+SUB XCheckBoxNotEnabled(stCheckBox$) STATIC
+ XCheckBoxExists(stCheckBox$)
+ IF BCheckBoxEnabled(stCheckBox$) THEN
+ XLogFailure "CheckBox " + stCheckBox$ + " is Enabled"
+ END IF
+
+END SUB
+
+
+'
+' XClickCheckBox(stCheckBox$)
+'
+' Description:
+' This procedure clicks the specified CheckBox in the
+' currently active window.
+'
+' Parameters:
+' stCheckBox$ = CheckBox to be clicked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XClickCheckBox "&Delete"
+'
+SUB XClickCheckBox(stCheckBox$) STATIC
+ XCheckBoxExists stCheckBox$
+ WCheckClick stCheckBox$
+
+END SUB
+
+
+
+' **********************************************************
+' ************* Dialog: Edit Control Subroutines ***********
+' **********************************************************
+
+
+'
+' XEditTextExists(stEditText$)
+'
+' Description:
+' This procedure checks to see if the specified EditText
+' exists or not.
+'
+' Parameters:
+' stEditText$ = EditText to be checked.
+'
+' Returns:
+' TRUE if EditText exists.
+' FALSE if EditText does not exist.
+'
+' Example:
+' XEditTextExists "File"
+'
+SUB XEditTextExists(stEditText$) STATIC
+
+ IF BEditTextExists(stEditText$) = 0 THEN
+ XLogFailure "Edit Text control " + stEditText$ + " does not exist"
+ END IF
+
+END SUB
+
+'
+' XEditTextNotExists(stEditTextNot$)
+'
+' Description:
+' This procedure checks to see that the specified EditText
+' doesn't exist
+'
+' Parameters:
+' stEditTextNot$ = EditText to be checked.
+'
+' Example:
+' XEditTextNotExists "File"
+'
+SUB XEditTextNotExists(stEditTextNot$) STATIC
+
+ IF BEditTextExists(stEditTextNot$) THEN
+ XLogFailure "Edit Text control " + stEditTextNot$ + " exists"
+ END IF
+
+END SUB
+
+'
+' BEditTextExists(stEditText$)
+'
+' Description:
+' This procedure checks to see if the specified EditText
+' exists or not.
+'
+' Parameters:
+' stEditText$ = EditText to be checked.
+'
+' Returns:
+' TRUE if EditText exists.
+' FALSE if EditText does not exist.
+'
+' Example:
+' fExists% = BEditTextExists("File")
+'
+FUNCTION BEditTextExists%(stEditText$) STATIC
+
+ BEditTextExists = WEditExists(stEditText$) <> 0
+
+END FUNCTION
+
+'
+' StGetEditText (stEditCaption$)
+'
+' Description:
+' Returns string in Edit box with caption stEditCaption$
+' Logs error if stEditCaption$ is not found, or if Edit control
+' is not found following stEditCaption$ in the tabbing order.
+'
+' Parameters:
+' stEditCaption$ - Caption that is associated with edit control
+'
+' Returns:
+' String that is in the Edit control
+'
+' Example:
+' a$ = SGetEditText("&FileName:")
+'
+'
+FUNCTION SGetEditText$(stEditCaption$) STATIC
+ XEditTextExists stEditCaption$
+ SGetEditText = EditText(stEditCaption$)
+
+END FUNCTION
+
+
+
+
+
+'
+' XSetEditText (stEditCaption$, stEditText$)
+'
+' Description:
+' Puts string stEditText$ in Edit box with caption stEditCaption$
+' Logs error if stEditCaption$ is not found, or if Edit control
+' is not found following stEditCaption$ in the tabbing order.
+'
+' Parameters:
+' stEditCaption$ - Caption that is associated with edit control
+' stEditText$ - Text to put in the Edit control
+'
+' Returns:
+' nothing
+'
+' Example:
+' XSetEditText "&FileName:", "calc.exe"
+'
+'
+
+SUB XSetEditText (stEditCaption$, stEditText$) STATIC
+
+ XEditTextExists stEditCaption$
+ WEditSetText stEditCaption$, stEditText$
+
+END SUB
+
+
+
+
+
+' **********************************************************
+' ************* Dialog: Option Button Subroutines ***********
+' **********************************************************
+
+
+
+'
+' BOptionButtonExists(stOptionButton$)
+'
+' Description:
+' This procedure checks to see if the specified OptionButton
+' exists or not.
+'
+' Parameters:
+' stOptionButton$ = OptionButton to be checked.
+'
+' Returns:
+' TRUE if OptionButton exists.
+' FALSE if OptionButton does not exist.
+'
+' Example:
+' fExists% = BOptionButtonExists("Blue")
+'
+FUNCTION BOptionButtonExists%(stOptionButton$) STATIC
+
+ BOptionButtonExists = WOptionExists(stOptionButton$) <> 0
+
+END FUNCTION
+
+
+'
+' XOptionButtonExists (stOptionButton$)
+'
+' Description:
+' Reports error if OptionButton does not exist in active window.
+'
+' Parameters:
+' stOptionButton$ - OptionButton to be found.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XOptionButtonExists "Blue"
+'
+SUB XOptionButtonExists(stOptionButton$) STATIC
+ IF BOptionButtonExists(stOptionButton$) = 0 THEN
+ XLogFailure "OptionButton " + stOptionButton$ + " does not Exist"
+ END IF
+END SUB
+
+
+'
+' XOptionButtonNotExists (stOptionButton$)
+'
+' Description:
+' Reports error if OptionButton Exists in active window.
+'
+' Parameters:
+' stOptionButton$ - OptionButton to not be found.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XOptionButtonNotExists "Blue"
+'
+SUB XOptionButtonNotExists(stOptionButton$) STATIC
+ IF BOptionButtonExists(stOptionButton$) THEN
+ XLogFailure "OptionButton " + stOptionButton$ + " Exists"
+ END IF
+END SUB
+
+
+'
+' BOptionButtonEnabled(stOptionButton$)
+'
+' Description:
+' This procedure checks to see if the specified OptionButton
+' is enabled or not.
+'
+' Parameters:
+' stOptionButton$ = OptionButton to be checked.
+'
+' Returns:
+' TRUE if OptionButton enabled.
+' FALSE if OptionButton not enabled.
+'
+' Example:
+' fEnabled% = BOptionButtonEnabled("Blue")
+'
+FUNCTION BOptionButtonEnabled%(stOptionButton$) STATIC
+ BOptionButtonEnabled = WOptionEnabled(stOptionButton$) <> 0
+END FUNCTION
+
+
+'
+' XOptionButtonEnabled (stOptionButton$)
+'
+' Description:
+' Reports error if OptionButton is not Enabled.
+'
+' Parameters:
+' stOptionButton$ - OptionButton to be checked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XOptionButtonEnabled "Blue"
+'
+SUB XOptionButtonEnabled(stOptionButton$) STATIC
+ XOptionButtonExists stOptionButton$
+ IF BOptionButtonEnabled(stOptionButton$) = 0 THEN
+ XLogFailure "OptionButton " + stOptionButton$ + " is not Enabled"
+ END IF
+END SUB
+
+
+'
+' XOptionButtonNotEnabled (stOptionButton$)
+'
+' Description:
+' Reports error if OptionButton is Enabled.
+'
+' Parameters:
+' stOptionButton$ - OptionButton to be checked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XOptionButtonNotEnabled "Blue"
+'
+'
+SUB XOptionButtonNotEnabled(stOptionButton$) STATIC
+ XOptionButtonExists stOptionButton$
+ IF BOptionButtonEnabled(stOptionButton$) THEN
+ XLogFailure "OptionButton " + stOptionButton$ + " Enabled"
+ END IF
+END SUB
+
+'
+' BOptionButtonChecked(stOptionButton$)
+'
+' Description:
+' This procedure checks to see if the specified OptionButton
+' is Checked or not.
+'
+' Parameters:
+' stOptionButton$ = OptionButton to be checked.
+'
+' Returns:
+' TRUE if OptionButton Checked.
+' FALSE if OptionButton not Checked.
+'
+' Example:
+' fChecked% = BOptionButtonChecked("Blue")
+'
+FUNCTION BOptionButtonChecked%(stOptionButton$) STATIC
+
+ BOptionButtonChecked = WOptionState(stOptionButton$) <> 0
+
+END FUNCTION
+
+
+'
+' XOptionButtonChecked (stOptionButton$)
+'
+' Description:
+' Reports error if OptionButton is not Checked.
+'
+' Parameters:
+' stOptionButton$ - OptionButton to be checked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XOptionButtonChecked "Blue"
+'
+SUB XOptionButtonChecked(stOptionButton$) STATIC
+ XOptionButtonExists stOptionButton$
+ IF BOptionButtonChecked(stOptionButton$) = 0 THEN
+ XLogFailure "OptionButton " + stOptionButton$ + " is not Checked"
+ END IF
+END SUB
+
+
+'
+' XOptionButtonNotChecked (stOptionButton$)
+'
+' Description:
+' Reports error if OptionButton is Checked.
+'
+' Parameters:
+' stOptionButton$ - OptionButton to be checked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XOptionButtonNotChecked "Blue"
+'
+'
+SUB XOptionButtonNotChecked(stOptionButton$) STATIC
+ XOptionButtonExists stOptionButton$
+ IF BOptionButtonChecked(stOptionButton$) THEN
+ XLogFailure "OptionButton " + stOptionButton$ + " Checked"
+ END IF
+END SUB
+
+
+'
+' XClickOptionButton(stOptionButton$)
+'
+' Description:
+' This procedure clicks the specified OptionButton in the
+' currently active window.
+'
+' Parameters:
+' stOptionButton$ = OptionButton to be clicked.
+'
+' Returns:
+' nothing
+'
+' Example:
+' XClickOptionButton "Blue"
+'
+SUB XClickOptionButton(stOptionButton$) STATIC
+ XOptionButtonExists stOptionButton$
+ WOptionClick stOptionButton$
+
+END SUB
diff --git a/public/sdk/inc/ftestutl.mst b/public/sdk/inc/ftestutl.mst
new file mode 100644
index 000000000..b258aa75b
--- /dev/null
+++ b/public/sdk/inc/ftestutl.mst
@@ -0,0 +1,1214 @@
+'FTESTUtl.inc - definitions for Fast Test Utility routines
+'
+' Copyright (c) 1991-1992, Microsoft Corporation. All rights reserved.
+'
+'Purpose:
+' This file defines the utility functions of the Fast Test functionality
+'
+'NOTES:
+' See FASTTEST.INC for description of the Error catching that is coded
+' throughout this module.
+
+
+'**********************************************************
+'***************** File Subroutines ***********************
+'**********************************************************
+
+
+'
+' XFileExists(stFileSpec$)
+'
+' Description:
+' Checks that stFileSpec$ exists.
+' logs a failure if it can't find it (them; accept wildcards)
+'
+' Parameters:
+' stFileSpec$ - file specification
+'
+' Returns:
+' nothing
+'
+' Example:
+' XFileExists "*.bak"
+'
+'
+SUB XFileExists(stFileSpec$) STATIC
+ IF NOT EXISTS(stFileSpec$) THEN
+ XLogFailure stFileSpec$ + " doesn't exist"
+ END IF
+END SUB
+
+'
+' XFileNotExists(stFileSpec$)
+'
+' Description:
+' Checks that stFileSpec$ doesn't exist.
+' logs a failure if it finds it (them; accepts wildcards)
+'
+' Parameters:
+' stFileSpec$ - file specification
+'
+' Returns:
+' nothing
+'
+' Example:
+' XFileNotExists "*.bak"
+'
+'
+SUB XFileNotExists(stFileSpec$) STATIC
+ IF EXISTS(stFileSpec$) THEN
+ XLogFailure stFileSpec$ + " exists"
+ END IF
+END SUB
+
+'
+' BFileExists(stFileSpec$)
+'
+' Description:
+' Checks if stFileSpec$ exists
+'
+' Parameters:
+' stFileSpec$ - file specification
+'
+' Returns:
+' TRUE if it exists, FALSE if not
+'
+'
+'
+FUNCTION BFileExists%(stFileSpec$) STATIC
+ BFileExists = EXISTS(stFileSpec$)
+END FUNCTION
+
+
+'
+' XFileCmp(stFileSpec1$,stFileSpec2$)
+'
+' Description:
+' Compares two files, line by line
+' Logs a Failure if the files don't exist or are different
+'
+' Parameters:
+' stFileSpec1$,stFileSpec2 - file specifications
+'
+' Returns:
+' nothing
+'
+' Example:
+' XFileCmp "Foo.dat","foo.bsl"
+'
+'
+'
+SUB XFileCmp(stFileSpec1$,stFileSpec2$) STATIC
+ DIM fh1% ' file handle of first file
+ DIM fh2% ' file handle of second file
+ DIM line1$ ' line from first file
+ DIM line2$ ' line from second file
+ DIM done ' flag to stop looping
+ DIM diff ' flag to indicate if files compare
+
+ gErrorType = ET_NEXT
+ fh1% = FREEFILE
+ OPEN stFileSpec1$ FOR INPUT AS #fh1%
+ fh2% = FREEFILE
+ OPEN stFileSpec2$ FOR INPUT AS #fh2%
+
+ IF gfError THEN
+ XLogFailure "Could not open files for XFileCmp"
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT SUB
+ END IF
+
+
+ done = FALSE
+ diff = FALSE
+
+ IF EOF(fh1%) AND EOF(fh2%) THEN
+ done = TRUE
+
+ ELSEIF EOF(fh1%) OR EOF(fh2%) THEN
+ diff = TRUE
+ done = TRUE
+ END IF
+
+
+ WHILE NOT done
+
+ LINE INPUT #fh1%,line1$
+ LINE INPUT #fh2%,line2$
+
+ IF gfError THEN
+ XLogFailure "XFileCmp INPUT or EOF errors"
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT SUB
+ END IF
+
+
+ IF line1$ <> line2$ THEN
+ done = TRUE
+ diff = TRUE
+ END IF
+
+ IF NOT done AND EOF(fh1%) AND EOF(fh2%) THEN
+ done = TRUE
+ END IF
+
+ IF NOT done AND (EOF(fh1%) OR EOF(fh2%)) THEN
+ diff = TRUE
+ done = TRUE
+ END IF
+
+ WEND
+
+ CLOSE #fh1%
+ CLOSE #fh2%
+
+ IF gfError THEN
+ XLogFailure "XFileCmp CLOSE errors"
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT SUB
+ END IF
+
+ gErrorType = ET_NOTHING
+
+ IF diff THEN
+ XLogFailure "Files " + stFileSpec1$ + "," + stFileSpec2$ + " don't compare"
+ END IF
+
+END SUB
+
+'
+' XFileNotCmp(stFileSpec1$,stFileSpec2$)
+'
+' Description:
+' Compares two files, line by line
+' Logs a Failure if the files don't exist or are same
+'
+' Parameters:
+' stFileSpec1$,stFileSpec2 - file specifications
+'
+' Returns:
+' nothing
+'
+' Example:
+' XFileNotCmp "Foo.dat","foo.bsl"
+'
+'
+'
+SUB XFileNotCmp(stFileSpec1$,stFileSpec2$) STATIC
+ DIM fh1% ' file handle of first file
+ DIM fh2% ' file handle of second file
+ DIM line1$ ' line from first file
+ DIM line2$ ' line from second file
+ DIM done ' flag to stop looping
+ DIM diff ' flag to indicate if files compare
+
+ gErrorType = ET_NEXT
+
+ fh1% = FREEFILE
+ OPEN stFileSpec1$ FOR INPUT AS #fh1%
+ fh2% = FREEFILE
+ OPEN stFileSpec2$ FOR INPUT AS #fh2%
+
+ IF gfError THEN
+ XLogFailure "Could not open files for XFileNotCmp"
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT SUB
+ END IF
+
+ done = FALSE
+ diff = FALSE
+
+ IF EOF(fh1%) AND EOF(fh2%) THEN
+ done = TRUE
+ END IF
+
+ IF NOT done AND (EOF(fh1%) OR EOF(fh2%)) THEN
+ diff = TRUE
+ done = TRUE
+ END IF
+
+ WHILE NOT done
+
+ LINE INPUT #fh1%,line1$
+ LINE INPUT #fh2%,line2$
+
+ IF gfError THEN
+ XLogFailure "XFileNotCmp INPUT or EOF errors"
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT SUB
+ END IF
+
+ IF line1$ <> line2$ THEN
+ done = TRUE
+ diff = TRUE
+ END IF
+
+ IF NOT done AND EOF(fh1%) AND EOF(fh2%) THEN
+ done = TRUE
+ END IF
+
+ IF NOT done AND (EOF(fh1%) OR EOF(fh2%)) THEN
+ diff = TRUE
+ done = TRUE
+ END IF
+
+ WEND
+
+ CLOSE #fh1%
+ CLOSE #fh2%
+
+ IF gfError THEN
+ XLogFailure "XFileNotCmp CLOSE errors"
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT SUB
+ END IF
+
+ gErrorType = ET_NOTHING
+
+ IF NOT diff THEN
+ XLogFailure "Files " + stFileSpec1$ + "," + stFileSpec2$ + " do compare"
+ END IF
+END SUB
+
+'
+' BFileCmp%(stFileSpec1$,stFileSpec2$)
+'
+' Description:
+' Compares two files, line by line
+' Logs a Failure if the files don't exist
+'
+' Parameters:
+' stFileSpec1$,stFileSpec2 - file specifications
+'
+' Returns:
+' FALSE IF XFileCmp would detect an error
+'
+' Example:
+' x% = BFileCmp "Foo.dat","foo.bsl"
+'
+'
+'
+FUNCTION BFileCmp%(stFileSpec1$,stFileSpec2$) STATIC
+ DIM fh1%
+ DIM fh2%
+ DIM line1$
+ DIM line2$
+ DIM done
+ DIM diff
+
+ gErrorType = ET_NEXT
+ fh1% = FREEFILE
+ OPEN stFileSpec1$ FOR INPUT AS #fh1%
+ fh2% = FREEFILE
+ OPEN stFileSpec2$ FOR INPUT AS #fh2%
+
+ IF gfError THEN
+ BFileCmp = FALSE
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT FUNCTION
+ END IF
+
+ done = FALSE
+ diff = FALSE
+
+ IF EOF(fh1%) AND EOF(fh2%) THEN
+ done = TRUE
+ END IF
+
+ IF NOT done AND (EOF(fh1%) OR EOF(fh2%)) THEN
+ diff = TRUE
+ done = TRUE
+ END IF
+
+ WHILE NOT done
+
+ LINE INPUT #fh1%,line1$
+ LINE INPUT #fh2%,line2$
+
+ IF gfError THEN
+ BFileCmp = FALSE
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT FUNCTION
+ END IF
+
+ IF line1$ <> line2$ THEN
+ done = TRUE
+ diff = TRUE
+ END IF
+
+ IF NOT done AND EOF(fh1%) AND EOF(fh2%) THEN
+ done = TRUE
+ END IF
+
+ IF NOT done AND (EOF(fh1%) OR EOF(fh2%)) THEN
+ diff = TRUE
+ done = TRUE
+ END IF
+
+ WEND
+
+ CLOSE #fh1%
+ CLOSE #fh2%
+
+ IF gfError THEN
+ BFileCmp = FALSE
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT FUNCTION
+ END IF
+
+ BFileCmp = NOT diff ' IF different a log failure would normally happen
+
+END FUNCTION
+
+
+'
+' XDeleteFile(stFileSpec$)
+'
+' Description:
+' Will delete stFileSpec$ if it, they, exists.
+' logs a failure if it can't delete them or if the file(s)
+' doesn't exist
+'
+' Parameters:
+' stFileSpec$ - file specification
+'
+' Returns:
+' nothing
+'
+' Example:
+' XDeleteFile "*.bak"
+'
+'
+SUB XDeleteFile(stFileSpec$) STATIC
+ IF EXISTS(stFileSpec$) THEN
+ gErrorType = ET_NEXT
+ KILL stFileSpec$
+ IF gfError THEN
+ XLogFailure "XDeleteFile " + stFileSpec$ + " could NOT be deleted"
+ gfError = FALSE
+ END IF
+ gErrorType = ET_NOTHING
+ ELSE
+ XLogFailure "XDeleteFile " + stFileSpec$ + " NOT deleted (doesn't exist)."
+ END IF
+END SUB
+
+'
+' XDeleteFileIfExists(stFileSpec$)
+'
+' Description:
+' Will delete stFileSpec$ if it, they, exists.
+' logs a failure if it can't delete them but doesn't if the file(s)
+' doesn't exist
+'
+' Parameters:
+' stFileSpec$ - file specification
+'
+' Returns:
+' nothing
+'
+' Example:
+' XDeleteFileIfExists "*.bak"
+'
+'
+SUB XDeleteFileIfExists(stFileSpec$) STATIC
+ IF EXISTS(stFileSpec$) THEN
+ gErrorType = ET_NEXT
+ KILL stFileSpec$
+ IF gfError THEN
+ XLogFailure "XDeleteFileIfExists " + stFileSpec$ + " could NOT be deleted"
+ gfError = FALSE
+ END IF
+ gErrorType = ET_NOTHING
+ END IF
+END SUB
+
+'
+' XCreateFile(stFileSpec$,s$)
+'
+' Description:
+' Will Create stFileSpec$ and put string in it
+' logs a failure if it can't Create it
+'
+' Parameters:
+' stFileSpec$ - file specification
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCreateFile "foo.dat","Hello world"
+'
+'
+'
+
+SUB XCreateFile(stFileSpec$,s$) STATIC
+ DIM fh%
+ gErrorType = ET_NEXT
+ fh% = FREEFILE
+
+ OPEN stFileSpec$ FOR OUTPUT AS #fh%
+
+ PRINT #fh%,s$ ' put the string in the file
+
+ CLOSE #fh%
+
+ IF gfError THEN
+ XLogFailure "XCreateFile encountered runtime errors"
+ gfError = FALSE
+ END IF
+ gErrorType = ET_NOTHING
+
+END SUB
+
+'
+' XAppendFile(stFileSpec$,s$)
+'
+' Description:
+' Will Append stFileSpec$ and put string in it
+' logs a failure if it can't Append it
+'
+' Parameters:
+' stFileSpec$ - file specification
+'
+' Returns:
+' nothing
+'
+' Example:
+' XAppendFile "foo.dat","Hello world"
+'
+'
+'
+
+SUB XAppendFile(stFileSpec$,s$) STATIC
+ DIM fh%
+
+ gErrorType = ET_NEXT
+
+ fh% = FREEFILE
+
+ OPEN stFileSpec$ FOR APPEND AS #fh%
+
+ PRINT #fh%,s$ ' put the string in the file
+
+ CLOSE #fh%
+
+ IF gfError THEN
+ XLogFailure "XAppendFile encountered runtime errors"
+ gfError = FALSE
+ END IF
+ gErrorType = ET_NOTHING
+
+END SUB
+
+
+'
+' XWaitMessageFile(s$,Message$,WaitTime%)
+'
+' Description:
+' Wait for file to exist, only wait up to given time,
+' check if string is in file (if string is non-empty)
+' logs a failure if the files doesn't exist, or when
+' it does and the string isn't in it.
+'
+' Parameters:
+' s$ - file specification
+' Message$ - the string to look for
+' WaitTime% - the longest to wait
+'
+' Returns:
+' nothing
+'
+' Example:
+' XWaitMessageFile "foo.dat","Hello world",20
+'
+'
+'
+
+SUB XWaitMessageFile(s$,Message$, WaitTime%) STATIC
+
+ DIM fDone% ' flag to stop looping
+ DIM fFound% ' flag to indicate if file found
+ DIM lineIn$ ' line from file
+ DIM inret% ' return from INSTR
+ DIM fh% ' File handle
+
+ fDone = FALSE
+ fFound = FALSE
+
+ WHILE NOT fDone
+
+ IF EXISTS(s$) THEN
+ fDone = TRUE
+ fFound = TRUE
+ ELSE
+ SLEEP 1
+
+ WaitTime% = WaitTime% - 1
+ IF WaitTime% <= 0 THEN
+ fDone = TRUE
+ END IF
+ END IF
+ WEND
+
+ IF NOT fFound% THEN
+ XLogFailure "FAIL """ + s$ + """ Message File not found"
+ ELSE
+
+ IF Message$ = "" THEN
+ ' don't bother searching if no string given
+ EXIT SUB
+ END IF
+
+ fDone = FALSE
+ fFOUND = FALSE
+
+ gErrorType = ET_NEXT
+
+ fh% = FREEFILE
+
+ OPEN s$ FOR INPUT AS # fh%
+
+ IF EOF(fh%) THEN
+ fDone% = TRUE
+ END IF
+
+ IF gfError THEN
+ XLogFailure "XWaitMessageFile encountered runtime error during OPEN"
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT SUB
+ END IF
+
+ WHILE NOT fDone%
+
+ LINE INPUT # fh%, lineIn$
+
+ IF gfError THEN
+ XLogFailure "XWaitMessageFile encountered runtime error during INPUT"
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT SUB
+ END IF
+
+ inret% = INSTR(lineIn$,Message$)
+
+ IF inret% <> 0 THEN
+ fFound% = TRUE
+ fDone = TRUE
+ END IF
+
+ IF EOF(fh%) THEN
+ fDone% = TRUE
+ END IF
+ WEND
+
+ CLOSE # fh%
+
+ IF gfError THEN
+ XLogFailure "XWaitMessageFile encountered runtime error during CLOSE"
+ gErrorType = ET_NOTHING
+ gfError = FALSE
+ EXIT SUB
+ END IF
+ gErrorType = ET_NOTHING
+
+ IF NOT fFound% THEN
+ XLogFailure "FAIL, found """ + s$ + """ Message File, """ + Message$ + """ not in it"
+ END IF
+ END IF
+END SUB
+
+'**********************************************************
+'***************** Directory Subroutines ******************
+'**********************************************************
+
+'
+' XCWDCmp(s$)
+'
+' Description:
+' Compare the current working directory and log error if it
+' doesn't match the expected value
+'
+' Parameters:
+' s$ - the expected value for the current directory
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCWDCmp "c:\tests"
+'
+
+SUB XCWDCmp(s$) STATIC
+
+ IF BCWDCmp(s$) = 0 THEN
+ XLogFailure "Current working directory (" + UCASE$(CURDIR$) + ") doesn't match " + UCASE$(s$)
+ END IF
+END SUB
+
+'
+' XCWDNotCmp(s$)
+'
+' Description:
+' Compare the current working directory and log error if it
+' does match the given value
+'
+' Parameters:
+' s$ - the value for the directory that isn't expected
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCWDNotCmp "c:\tests"
+'
+
+SUB XCWDNotCmp(s$) STATIC
+
+ IF UCASE$(CURDIR$) = UCASE$(s$) THEN
+ XLogFailure "Current working directory (" + UCASE$(CURDIR$) + ") matches " + UCASE$(s$)
+ END IF
+END SUB
+
+'
+' BCWDCmp(s$)
+'
+' Description:
+' return compare of the current working directory and the expected value
+'
+' Parameters:
+' s$ - the expected value for the current directory
+'
+' Returns:
+' TRUE if matches, FALSE if doesn't
+'
+' Example:
+' flag% = BCWDCmp("c:\tests")
+'
+
+FUNCTION BCWDCmp%(s$) STATIC
+
+ BCWDCmp = UCASE$(CURDIR$) = UCASE$(s$)
+
+END FUNCTION
+
+'
+' XDriveCmp(s$)
+'
+' Description:
+' Compare the current working drive and log error if it
+' doesn't match the expected value
+'
+' Parameters:
+' s$ - the expected value for the current drive
+'
+' Returns:
+' nothing
+'
+' Example:
+' XDriveCmp "c:"
+'
+
+SUB XDriveCmp(s$) STATIC
+
+ IF BDriveCmp%(s$) = 0 THEN
+ XLogFailure "Current working Drive (" + MID$(UCASE$(CURDIR$),1,2) + ") doesn't match " + UCASE$(s$)
+ END IF
+END SUB
+
+'
+' XDriveNotCmp(s$)
+'
+' Description:
+' Compare the current working drive and log error if it
+' does match the given value
+'
+' Parameters:
+' s$ - the expected value for the current drive
+'
+' Returns:
+' nothing
+'
+' Example:
+' XDriveNotCmp "c:"
+'
+SUB XDriveNotCmp(s$) STATIC
+
+ IF MID$(UCASE$(CURDIR$),1,2) = UCASE$(s$) THEN
+ XLogFailure "Current working Drive (" + MID$(UCASE$(CURDIR$),1,2) + ") matches " + s$
+ END IF
+END SUB
+
+'
+' BDriveCmp(s$)
+'
+' Description:
+' return compare the current working drive and the expected value
+'
+' Parameters:
+' s$ - the expected value for the current drive
+'
+' Returns:
+' TRUE if matches, FALSE if doesn't
+'
+' Example:
+' flag% = BDriveCmp("c:")
+'
+
+FUNCTION BDriveCmp%(s$) STATIC
+
+ BDriveCmp = MID$(UCASE$(CURDIR$),1,2) = UCASE$(s$)
+
+END FUNCTION
+
+'
+' XChangeCWD(s$)
+'
+' Description:
+' Change to given working directory, log failure if doesn't succeed
+'
+' Parameters:
+' s$ - directory to change to
+'
+' Returns:
+' nothing
+'
+' Example:
+' XChangeCWD "\tmp"
+'
+'
+SUB XChangeCWD(s$) STATIC
+ gErrorType = ET_NEXT
+ CHDIR s$
+ IF gfError THEN
+ XLogFailure "XChangeCWD could not change directory"
+ gfError = FALSE
+ END IF
+ gErrorType = ET_NOTHING
+END SUB
+
+'
+' XCreateDir(s$)
+'
+' Description:
+' Create the given directory, log failure if doesn't succeed
+'
+' Parameters:
+' s$ - directory to create
+'
+' Returns:
+' nothing
+'
+' Example:
+' XCreateDir "\tmpdir"
+'
+'
+SUB XCreateDir(s$) STATIC
+ gErrorType = ET_NEXT
+ MKDIR s$
+ IF gfError THEN
+ XLogFailure "XCreateDir could not create directory"
+ gfError = FALSE
+ END IF
+ gErrorType = ET_NOTHING
+END SUB
+
+'
+' XChangeDrive(s$)
+'
+' Description:
+' Change the current working drive, log failure if doesn't succeed
+'
+' Parameters:
+' s$ - drive to change to
+'
+' Returns:
+' nothing
+'
+' Example:
+' XChangeDrive "c:"
+'
+'
+SUB XChangeDrive(s$) STATIC
+ gErrorType = ET_NEXT
+ CHDRIVE s$
+ IF gfError THEN
+ XLogFailure "XChangeDrive could not change drive"
+ gfError = FALSE
+ END IF
+ gErrorType = ET_NOTHING
+END SUB
+
+'**********************************************************
+'***************** Program Subroutines ********************
+'**********************************************************
+
+
+
+'
+' HStartApp%(stAppName$)
+'
+' Description:
+' Starts app AppName and returns the handle to the App
+'
+' Parameters:
+' stAppName$ - name of app to WinExec and get handle to
+'
+' Returns:
+' handle to application started
+'
+' Example:
+' hWinHelp% = HStartApp("winhelp.exe")
+'
+'
+FUNCTION HStartApp%(stAppName$) STATIC
+ DIM Bogus%, hwndActive%, hwndNewApp%
+ DIM lpszTemp$
+
+ ' Get the current foreground window
+ hwndActive = GetForegroundWindow ()
+
+ Bogus% = WinExec (stAppName$, SW_SHOWNORMAL)
+ lpszTemp$ = "WinExec error with " + stAppName$ + " :"
+
+ ' WinExec defines SOME of the values between 0 and 32
+ ' as errors... any return value greater than 32
+ ' should be considered a success!
+ SELECT CASE Bogus%
+ CASE 0
+ XLogFailure lpszTemp$ + "Out of memory - exiting"
+
+ CASE 2
+ XLogFailure lpszTemp$ + "File not found"
+ End
+ CASE 3
+ XLogFailure lpszTemp$ + "Path not found"
+
+ CASE 5
+ XLogFailure lpszTemp$ + "Attempt to dynamically link to a task"
+
+ CASE 6
+ XLogFailure lpszTemp$ + "Library requires separate data segments"
+
+ CASE 10
+ XLogFailure lpszTemp$ + "Incorrect Windows version"
+
+ CASE 11
+ XLogFailure lpszTemp$ + "Invalid EXE file"
+
+ CASE 12
+ XLogFailure lpszTemp$ + "OS/2 application"
+
+ CASE 13
+ XLogFailure lpszTemp$ + "DOS 4.0 application"
+
+ CASE 14
+ XLogFailure lpszTemp$ + "Unknown EXE type"
+
+ CASE 15
+ XLogFailure lpszTemp$ + "Must run in real mode Windows"
+
+ CASE 16
+ XLogFailure lpszTemp$ + "Cannot run more than one instance"
+
+ CASE 17
+ XLogFailure lpszTemp$ + "Large-frame EMS allows only one instance"
+
+ CASE 18
+ XLogFailure lpszTemp$ + "Must run in standard or enhanced mode Windows"
+
+ CASE 0 TO 32
+ XLogFailure lpszTemp$ + "Unknown Error in WinExec"
+
+ END SELECT
+
+ ' Wait until the old foreground window is no longer the foreground wnd
+ while hwndActive = GetForegroundWindow
+ sleep 1
+ wend
+
+ HStartApp = GetForegroundWindow ()
+END FUNCTION
+
+'
+' XStartApp(stAppName$)
+'
+' Description:
+' Starts app AppName and sets handle to ghAppHwnd.
+' if we get a null handle, THEN we end the script here.
+'
+' Parameters:
+' stAppName$ - name of app to WinExec
+'
+' Returns:
+' nothing
+'
+' Example:
+' XStartApp "winhelp.exe"
+'
+'
+SUB XStartApp(stAppName$, stClassname$) STATIC
+ DIM logstr$
+ 'ghAppHwnd is a global
+ ghAppHwnd = HStartApp(stAppName$)
+ IF (ghAppHwnd = 0) THEN
+ 'we didn't get a handle
+ XLogFailure "Unable to start app " + stAppName$
+ ELSEIF stClassname$ <> "" THEN
+ gsAppClassname = stClassname$ ' remember it for later
+ IF FindWindow(stClassname$,NULL) = 0 THEN
+ ' The app isn't around
+ logstr$ = "The app " + stAppName$ + " started but didn't stay OR..."
+ logstr$ = logstr$ + CRLF$ + "the given class name ("
+ logstr$ = logstr$ + stClassname$ + ") is incorrect"
+ XLogFailure logstr$
+ END IF
+ END IF
+END SUB
+
+'
+' XSetCleanup(sCleanup$)
+'
+' Description:
+' Stores a user defined DoKeys string to be used to exit the
+' application automatically. If set to an empty string,
+' nothing will be sent with DoKeys but there will still be
+' a log failure if the application is still running when the
+' script ends (no check is done if there wasn't a classname
+' supplied with XStartApp
+'
+' Parameters:
+' sCleanup$ - the string to use with DoKeys to end the app
+'
+' Returns:
+' nothing
+'
+' Example:
+' XSetCleanup "{esc 5}%vx"
+'
+'
+SUB XSetCleanup (sCleanup$) STATIC
+ gsCleanup$ = sCleanup$
+END SUB
+
+' This routine is not intended to be called in the user script.
+' This routine is executed when the script finishes with an END
+' statement. Its purpose is to find the application started with
+' XStartapp using the classname supplied there. if it exists,
+' and the gsCleanup string is nonempty, the gsCleanup string will
+' be played. This may still not get rid of the app for various
+' reasons: maybe it is prompting to save a file, or it won't exit
+' a dialog...
+
+SUB XDoCleanup STATIC
+ DIM logstr$
+ IF gsCleanup$ <> "" AND gsAppClassname$ <> "" AND FindWindow(gsAppClassname$,NULL) <> 0 THEN
+ DoKeys gsCleanup$
+ END IF
+ IF gsAppClassname$ <> "" AND FindWindow(gsAppClassname$,NULL) <> 0 THEN
+ logstr$ = "The app with class name " + gsAppClassname$ + " was not"
+ logstr$ = logstr$ + CRLF$ + "halted by the cleanup string " + gsCleanup$
+ XLogFailure logstr$
+ END IF
+
+END SUB
+
+
+
+'**********************************************************
+'***************** Mouse Subroutines **********************
+'**********************************************************
+
+' The mouse routines use the VK_LBUTTON, VK_RBUTTON, VK_MBUTTON
+' constants to determine which button to use (or LBUTTON, MBUTTON or RBUTTON
+' as defined in fasttest.inc
+
+
+'
+' XMoveMouse(x%,y%)
+'
+' Description:
+' Moves the mouse pointer to specified absolute screen coordinates
+'
+' Parameters:
+' x%,y% - x and y coordinates to move to
+'
+' Returns:
+' nothing
+'
+' Example:
+' XMoveMouse 100,120
+'
+'
+
+SUB XMoveMouse (x%, y%) STATIC
+
+ QueMouseMove x%,y%
+ QueFlush FALSE
+END SUB
+
+
+'
+' XClickMouse(button%,x%,y%)
+'
+' Description:
+' Clicks the mouse pointer to specified absolute screen coordinates
+'
+' Parameters:
+' button% - which button to click
+' x%,y% - x and y coordinates to move to
+'
+' Returns:
+' nothing
+'
+' Example:
+' XClickMouse LBUTTON,100,120
+'
+'
+
+SUB XClickMouse(button%, x%, y%) STATIC
+
+ QueMouseDn button%,x%,y%
+ QueMouseUp button%,x%,y%
+ QueFlush FALSE
+
+END SUB
+
+'
+' XDblClickMouse(button%,x%,y%)
+'
+' Description:
+' Clicks the mouse pointer to specified absolute screen coordinates
+'
+' Parameters:
+' button% - which button to double click
+' x%,y% - x and y coordinates to move to
+'
+' Returns:
+' nothing
+'
+' Example:
+' XDblClickMouse LBUTTON,100,120
+'
+'
+SUB XDblClickMouse(button%, x%, y%) STATIC
+
+ QueMouseDblClk button%,x%,y%
+ QueFlush FALSE
+
+END SUB
+
+'
+' XDragMouse (button%, Begx%, Begy%, Endx%, Endy%)
+'
+' Description:
+' Drags the mouse pointer to specified absolute screen coordinates
+'
+' Parameters:
+' button% - which button to use for dragging
+' Begx%,Begy% - x and y coordinates to Drag from
+' Endx%,Endy% - x and y coordinates to Drag to
+'
+' Returns:
+' nothing
+'
+' Example:
+' XDragMouse LBUTTON,100,120, 200,220
+'
+'
+SUB XDragMouse (button%, Begx%, Begy%, Endx%, Endy%) STATIC
+
+ QueMouseDn button%,Begx%,Begy%
+ QueMouseMove Endx%,Endy%
+ QueMouseUp button%,Endx%,Endy%
+ QueFlush FALSE
+END SUB
+
+
+
+
+'**********************************************************
+'***************** ClipBoard Subroutines ******************
+'**********************************************************
+
+
+'
+' XClipBoardCmp(s$)
+'
+' Description:
+' Compare given string to what is in the clipboard, log failure
+' if they don't match
+'
+' Parameters:
+' s$ - string to compare
+'
+' Returns:
+' nothing
+'
+' Example:
+' XClipBoardCmp "07734"
+'
+'
+SUB XClipBoardCmp (s$) STATIC
+
+ IF s$ <> CLIPBOARD$ THEN
+ XLogFailure "String does not match clipboard"
+ END IF
+END SUB
+
+'
+' XClipBoardNotCmp(s$)
+'
+' Description:
+' Compare given string to what is in the clipboard, log failure
+' if they match
+'
+' Parameters:
+' s$ - string to compare
+'
+' Returns:
+' nothing
+'
+' Example:
+' XClipBoardNotCmp "07734"
+'
+'
+SUB XClipBoardNotCmp (s$) STATIC
+
+ IF s$ = CLIPBOARD$ THEN
+ XLogFailure "String does match clipboard"
+ END IF
+END SUB
+
+'
+' BClipBoardCmp(s$)
+'
+' Description:
+' Compare given string to what is in the clipboard, log failure
+' if they don't match
+'
+' Parameters:
+' s$ - string to compare
+'
+' Returns:
+' TRUE if matches, FALSE if doesn't
+'
+' Example:
+' flag% = BClipBoardCmp "07734"
+'
+'
+FUNCTION BClipBoardCmp (s$) STATIC
+
+ BClipBoardCmp = s$ = CLIPBOARD$
+END FUNCTION
+
diff --git a/public/sdk/inc/ftsiface.h b/public/sdk/inc/ftsiface.h
new file mode 100644
index 000000000..52cd46e06
--- /dev/null
+++ b/public/sdk/inc/ftsiface.h
@@ -0,0 +1,167 @@
+// FTSIFACE.h -- DLL interface for FTSrch.dll
+
+#ifndef __FTSIFACE_H__
+#define __FTSIFACE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+
+typedef HANDLE HINDEX;
+typedef HANDLE HSEARCHER;
+typedef HANDLE HCOMPRESSOR;
+typedef HANDLE HHILITER;
+typedef INT ERRORCODE;
+typedef struct { int base; int limit; } HILITE;
+
+#define NO_TITLE UINT(-1) // ERRORCODE values
+#define NOT_INDEXER UINT(-2)
+#define NOT_SEARCHER UINT(-3)
+#define NOT_COMPRESSOR UINT(-4)
+#define CANNOT_SAVE UINT(-5)
+#define OUT_OF_MEMORY UINT(-6)
+#define CANNOT_OPEN UINT(-7)
+#define CANNOT_LOAD UINT(-8)
+#define INVALID_INDEX UINT(-9)
+#define ALREADY_WEIGHED UINT(-10)
+#define NO_TEXT_SCANNED UINT(-11)
+#define ALIGNMENT_ERROR UINT(-12)
+#define INVALID_PHRASE_TABLE UINT(-13)
+#define INVALID_LCID UINT(-14)
+#define NO_INDICES_LOADED UINT(-15)
+#define INDEX_LOADED_ALREADY UINT(-16)
+#define GROUP_LOADED_ALREADY UINT(-17)
+#define DIALOG_ALREADY_ACTIVE UINT(-18)
+#define EMPTY_PHRASE_TABLE UINT(-19)
+#define OUT_OF_DISK UINT(-20)
+#define DISK_READ_ERROR UINT(-21)
+#define DISK_WRITE_ERROR UINT(-22)
+#define SEARCH_ABORTED UINT(-23)
+#define UNKNOWN_EXCEPTION UINT(-24)
+#define SYSTEM_ERROR UINT(-25)
+#define NOT_HILITER UINT(-26)
+#define INVALID_CHARSET UINT(-27)
+#define INVALID_SOURCE_NAME UINT(-28)
+#define INVALID_TIMESTAMP UINT(-29)
+
+#define ERR_NO_DISK_SPACE 0xE0000001 // Values reported by GetLastError
+#define ERR_DISK_CREATE_ERROR 0xE0000002 // when an explicit error result
+#define ERR_DISK_OPEN_ERROR 0xE0000003 // isn't available.
+#define ERR_DISK_READ_ERROR 0xE0000004
+#define ERR_DISK_WRITE_ERROR 0xE0000005
+#define ERR_SYSTEM_ERROR 0xE0000006
+#define ERR_ABORT_SEARCH 0xE0000007
+#define ERR_INVALID_TIMESTAMP 0xE0000008
+#define ERR_INVALID_SOURCE_NAME 0xE0000009
+#define ERR_FILE_MAP_FAILED 0xE000000A
+#define ERR_INVALID_FILE_TYPE 0xE000000B
+#define ERR_DAMAGED_FILE 0xE000000C
+#define ERR_FUTURE_VERSION 0xE000000D
+
+// -------------- Index Construction Interface ---------------------------
+
+#define TOPIC_SEARCH 0x00000001 // Options for NewIndex
+#define PHRASE_SEARCH 0x00000002
+#define PHRASE_FEEDBACK 0x00000004
+#define VECTOR_SEARCH 0x00000008
+#define WINHELP_INDEX 0x00000010
+#define USE_VA_ADDR 0x00000020
+#define USE_QWORD_JUMP 0x00000040
+
+#define USE_DEFAULT UINT(-1) // Surrogate for default charset or default lcid
+
+HINDEX APIENTRY NewIndex(const PBYTE pbSourceName,
+ UINT uiTime1, UINT uiTime2,
+ UINT iCharsetDefault, UINT lcidDefault, UINT fdwOptions
+ );
+
+ERRORCODE APIENTRY ScanTopicTitle(HINDEX hinx, PBYTE pbTitle, UINT cbTitle,
+ UINT iTopic, HANDLE hTopic, UINT iCharset, UINT lcid
+ );
+ERRORCODE APIENTRY ScanTopicText (HINDEX hinx, PBYTE pbText, UINT cbText, UINT iCharset, UINT lcid);
+ERRORCODE APIENTRY SaveIndex (HINDEX hinx, PSZ pszFileName);
+ERRORCODE APIENTRY DeleteIndex (HINDEX hinx);
+
+typedef void (__stdcall *ANIMATOR)(void);
+
+ERRORCODE APIENTRY RegisterAnimator(ANIMATOR pAnimator, HWND hwndAnimator);
+
+// ----------------- Querying the Validity of an Index File --------------
+
+BOOL APIENTRY IsValidIndex(PSZ pszFileName, UINT dwOptions);
+
+void APIENTRY SetDirectoryLocator(HWND hwndLocator);
+
+// ----------------- Searcher Interface ----------------------------------
+
+HSEARCHER APIENTRY NewSearcher();
+
+INT APIENTRY OpenIndex(HSEARCHER hsrch, PSZ pszIndexFileName, // returns iIndex for index file
+ PBYTE pbSourceName, PUINT pcbSourceNameLimit, // or -ErrorCode
+ PUINT pTime1, PUINT pTime2
+ );
+
+ERRORCODE APIENTRY DiscardIndex (HSEARCHER hsrch, INT iIndex);
+ERRORCODE APIENTRY QueryOptions (HSEARCHER hsrch, INT iIndex, PUINT pfdwOptions);
+ERRORCODE APIENTRY SaveGroup (HSEARCHER hsrch, PSZ pszFileName);
+ERRORCODE APIENTRY LoadGroup (HSEARCHER hsrch, PSZ pszFileName);
+HWND APIENTRY OpenDialog (HSEARCHER hsrch, HWND hwndParent);
+ERRORCODE APIENTRY DeleteSearcher(HSEARCHER hsrch);
+
+// Messages for talking to WinHelp
+
+#define MSG_FTS_JUMP_HASH (WM_USER + 32) // wParam = index, lParam = HashValue
+#define MSG_FTS_JUMP_VA (WM_USER + 33) // wParam = index, lParam = VirtualAddress
+#define MSG_FTS_GET_TITLE (WM_USER + 34) // wParam = index, lParam = &pszTitle
+#define MSG_FTS_JUMP_QWORD (WM_USER + 35) // wParam = index, lParam = address of QWordAddress structure
+#define MSG_REINDEX_REQUEST (WM_USER + 36) // wParam = unused,lParam = unused
+#define MSG_FTS_WHERE_IS_IT (WM_USER + 37) // wParam = fStartEnumeration, lParam = &pszFile
+#define MSG_GET_DEFFONT (WM_USER + 45) // return default font handle
+
+typedef struct _QWordAddress
+ {
+ UINT iSerial;
+ HANDLE hTopic;
+
+ } QWordAddress, *PQWordAddress;
+
+// ------------------- Phrase Compression Interface ----------------------
+
+HCOMPRESSOR APIENTRY NewCompressor(UINT iCharsetDefault);
+
+ERRORCODE APIENTRY ScanText(HCOMPRESSOR hcmp, PBYTE pbText, UINT cbText, UINT iCharset);
+
+ERRORCODE APIENTRY GetPhraseTable(HCOMPRESSOR hcmp, PUINT pcPhrases, PBYTE *ppbImages, PUINT pcbImages,
+ PBYTE *ppacbImageCompressed, PUINT pcbCompressed
+ );
+
+ERRORCODE APIENTRY SetPhraseTable(HCOMPRESSOR hcmp, PBYTE pbImages, UINT cbImages,
+ PBYTE pacbImageCompressed, UINT cbCompressed
+ );
+
+INT APIENTRY CompressText (HCOMPRESSOR hcmp, PBYTE pbText, UINT cbText, PBYTE *ppbCompressed, UINT iCharset);
+INT APIENTRY DecompressText(HCOMPRESSOR hcmp, PBYTE pbCompressed, UINT cbCompressed, PBYTE pbText );
+
+ERRORCODE APIENTRY DeleteCompressor(HCOMPRESSOR hcmp);
+
+//----------------------- Hiliting Interface ------------------------------
+
+HHILITER APIENTRY NewHiliter(HSEARCHER hSearch);
+ERRORCODE APIENTRY DeleteHiliter(HHILITER hhil);
+ERRORCODE APIENTRY ScanDisplayText(HHILITER hhil, PBYTE pbText, int cbText,
+ UINT iCharset, LCID lcid);
+
+ERRORCODE APIENTRY ClearDisplayText(HHILITER hhil);
+int APIENTRY CountHilites(HHILITER hhil, int base, int limit);
+int APIENTRY QueryHilites(HHILITER hhil, int base, int limit,
+ int cHilites, HILITE* paHilites);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+
+
+#endif // __FTSIFACE_H__
diff --git a/public/sdk/inc/getuser.h b/public/sdk/inc/getuser.h
new file mode 100644
index 000000000..4ce2504d5
--- /dev/null
+++ b/public/sdk/inc/getuser.h
@@ -0,0 +1,129 @@
+/**********************************************************************/
+/** Microsoft Windows NT **/
+/** Copyright(c) Microsoft Corp., 1992 **/
+/**********************************************************************/
+
+/*
+ GetUser.h
+
+ This file contains the definitions for the User Browser "C" API
+
+ FILE HISTORY:
+ AndyHe 11-Oct-1992 Created
+
+*/
+
+#ifndef _GETUSER_H_
+#define _GETUSER_H_
+
+#include <ntseapi.h>
+
+typedef HANDLE HUSERBROW; // handle type returned by OpenUserBrowser
+
+//
+// Parameter structure passed to OpenUserBrowser
+//
+typedef struct tagUSLT { // uslt
+ ULONG ulStructSize;
+ BOOL fUserCancelled; // Set if user cancelled
+ BOOL fExpandNames; // TRUE if full names should be returned
+ HWND hwndOwner; // Window handle to use for dialog
+ WCHAR * pszTitle; // Dialog title (or NULL)
+ WCHAR * pszInitialDomain; // NULL for local machine or prefix
+ // with "\\" for server
+ DWORD Flags; // Defined below
+ ULONG ulHelpContext; // Help context for the main dialog
+ WCHAR * pszHelpFileName; // Help file name
+} USERBROWSER, *LPUSERBROWSER, * PUSERBROWSER;
+
+//
+// Bit values for Flags field
+//
+
+//
+// Indicates the user accounts should be shown as if the user pressed
+// the "Show Users" button. The button will be hidden if this flag is
+// set. The USRBROWS_SHOW_USERS flag must also be set.
+
+#define USRBROWS_EXPAND_USERS (0x00000008)
+
+//
+// Passing this will prevent the computer name from showing up in the
+// combo box.
+//
+
+#define USRBROWS_DONT_SHOW_COMPUTER (0x00000100)
+
+//
+// Allow the user to only select a single item from the listbox (not all
+// SHOW_* combinations are supported with this option).
+//
+
+#define USRBROWS_SINGLE_SELECT (0x00001000)
+
+//
+// These manifests determine which well known Sids are included in the list.
+//
+#define USRBROWS_INCL_REMOTE_USERS (0x00000010)
+#define USRBROWS_INCL_INTERACTIVE (0x00000020)
+#define USRBROWS_INCL_EVERYONE (0x00000040)
+#define USRBROWS_INCL_CREATOR (0x00000080)
+#define USRBROWS_INCL_SYSTEM (0x00010000)
+#define USRBROWS_INCL_ALL (USRBROWS_INCL_REMOTE_USERS |\
+ USRBROWS_INCL_INTERACTIVE |\
+ USRBROWS_INCL_EVERYONE |\
+ USRBROWS_INCL_CREATOR |\
+ USRBROWS_INCL_SYSTEM)
+
+//
+// These manifests determine which type of accounts to display
+//
+// Note: currently, if you display groups, you must display users
+// if you display aliases (local groups), you must display
+// groups and users
+//
+#define USRBROWS_SHOW_ALIASES (0x00000001)
+#define USRBROWS_SHOW_GROUPS (0x00000002)
+#define USRBROWS_SHOW_USERS (0x00000004)
+#define USRBROWS_SHOW_ALL (USRBROWS_SHOW_ALIASES |\
+ USRBROWS_SHOW_GROUPS |\
+ USRBROWS_SHOW_USERS)
+
+
+//
+// The caller should provide the name of a help file containing four
+// help contexts. The first help context is for the main User Browser
+// dialog, the next three are for the Local Group Membership, Global Group
+// Membership, and Find Account subdialogs, respectively.
+//
+#define USRBROWS_HELP_OFFSET_LOCALGROUP 1
+#define USRBROWS_HELP_OFFSET_GLOBALGROUP 2
+#define USRBROWS_HELP_OFFSET_FINDUSER 3
+
+//
+// User Details structure returned by user browser enumeration
+//
+typedef struct tagUSDT { // usdt
+ enum _SID_NAME_USE UserType;
+ PSID psidUser;
+ PSID psidDomain;
+ WCHAR * pszFullName;
+ WCHAR * pszAccountName;
+ WCHAR * pszDisplayName;
+ WCHAR * pszDomainName;
+ WCHAR * pszComment;
+ ULONG ulFlags; // User account flags
+} USERDETAILS, * LPUSERDETAILS, * PUSERDETAILS;
+
+
+// Function definitions for the GetUser API...
+
+HUSERBROW WINAPI OpenUserBrowser( LPUSERBROWSER lpUserParms );
+
+BOOL WINAPI EnumUserBrowserSelection( HUSERBROW hHandle,
+ LPUSERDETAILS lpUser,
+ DWORD *plBufferSize );
+
+BOOL WINAPI CloseUserBrowser( HUSERBROW hHandle );
+
+#endif //_GETUSER_H_
diff --git a/public/sdk/inc/gl/gl.h b/public/sdk/inc/gl/gl.h
new file mode 100644
index 000000000..2b603b7ec
--- /dev/null
+++ b/public/sdk/inc/gl/gl.h
@@ -0,0 +1,1506 @@
+/*++ BUILD Version: 0004 // Increment this if a change has global effects
+
+Copyright (c) 1985-96, Microsoft Corporation
+
+Module Name:
+
+ gl.h
+
+Abstract:
+
+ Procedure declarations, constant definitions and macros for the OpenGL
+ component.
+
+--*/
+
+#ifndef __gl_h_
+#ifndef __GL_H__
+
+#define __gl_h_
+#define __GL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright 1996 Silicon Graphics, Inc.
+** All Rights Reserved.
+**
+** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
+** the contents of this file may not be disclosed to third parties, copied or
+** duplicated in any form, in whole or in part, without the prior written
+** permission of Silicon Graphics, Inc.
+**
+** RESTRICTED RIGHTS LEGEND:
+** Use, duplication or disclosure by the Government is subject to restrictions
+** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
+** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
+** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
+** rights reserved under the Copyright Laws of the United States.
+*/
+
+typedef unsigned int GLenum;
+typedef unsigned char GLboolean;
+typedef unsigned int GLbitfield;
+typedef signed char GLbyte;
+typedef short GLshort;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned char GLubyte;
+typedef unsigned short GLushort;
+typedef unsigned int GLuint;
+typedef float GLfloat;
+typedef float GLclampf;
+typedef double GLdouble;
+typedef double GLclampd;
+typedef void GLvoid;
+
+/*************************************************************/
+
+/* Version */
+#define GL_VERSION_1_1 1
+
+/* AccumOp */
+#define GL_ACCUM 0x0100
+#define GL_LOAD 0x0101
+#define GL_RETURN 0x0102
+#define GL_MULT 0x0103
+#define GL_ADD 0x0104
+
+/* AlphaFunction */
+#define GL_NEVER 0x0200
+#define GL_LESS 0x0201
+#define GL_EQUAL 0x0202
+#define GL_LEQUAL 0x0203
+#define GL_GREATER 0x0204
+#define GL_NOTEQUAL 0x0205
+#define GL_GEQUAL 0x0206
+#define GL_ALWAYS 0x0207
+
+/* AttribMask */
+#define GL_CURRENT_BIT 0x00000001
+#define GL_POINT_BIT 0x00000002
+#define GL_LINE_BIT 0x00000004
+#define GL_POLYGON_BIT 0x00000008
+#define GL_POLYGON_STIPPLE_BIT 0x00000010
+#define GL_PIXEL_MODE_BIT 0x00000020
+#define GL_LIGHTING_BIT 0x00000040
+#define GL_FOG_BIT 0x00000080
+#define GL_DEPTH_BUFFER_BIT 0x00000100
+#define GL_ACCUM_BUFFER_BIT 0x00000200
+#define GL_STENCIL_BUFFER_BIT 0x00000400
+#define GL_VIEWPORT_BIT 0x00000800
+#define GL_TRANSFORM_BIT 0x00001000
+#define GL_ENABLE_BIT 0x00002000
+#define GL_COLOR_BUFFER_BIT 0x00004000
+#define GL_HINT_BIT 0x00008000
+#define GL_EVAL_BIT 0x00010000
+#define GL_LIST_BIT 0x00020000
+#define GL_TEXTURE_BIT 0x00040000
+#define GL_SCISSOR_BIT 0x00080000
+#define GL_ALL_ATTRIB_BITS 0x000fffff
+
+/* BeginMode */
+#define GL_POINTS 0x0000
+#define GL_LINES 0x0001
+#define GL_LINE_LOOP 0x0002
+#define GL_LINE_STRIP 0x0003
+#define GL_TRIANGLES 0x0004
+#define GL_TRIANGLE_STRIP 0x0005
+#define GL_TRIANGLE_FAN 0x0006
+#define GL_QUADS 0x0007
+#define GL_QUAD_STRIP 0x0008
+#define GL_POLYGON 0x0009
+
+/* BlendingFactorDest */
+#define GL_ZERO 0
+#define GL_ONE 1
+#define GL_SRC_COLOR 0x0300
+#define GL_ONE_MINUS_SRC_COLOR 0x0301
+#define GL_SRC_ALPHA 0x0302
+#define GL_ONE_MINUS_SRC_ALPHA 0x0303
+#define GL_DST_ALPHA 0x0304
+#define GL_ONE_MINUS_DST_ALPHA 0x0305
+
+/* BlendingFactorSrc */
+/* GL_ZERO */
+/* GL_ONE */
+#define GL_DST_COLOR 0x0306
+#define GL_ONE_MINUS_DST_COLOR 0x0307
+#define GL_SRC_ALPHA_SATURATE 0x0308
+/* GL_SRC_ALPHA */
+/* GL_ONE_MINUS_SRC_ALPHA */
+/* GL_DST_ALPHA */
+/* GL_ONE_MINUS_DST_ALPHA */
+
+/* Boolean */
+#define GL_TRUE 1
+#define GL_FALSE 0
+
+/* ClearBufferMask */
+/* GL_COLOR_BUFFER_BIT */
+/* GL_ACCUM_BUFFER_BIT */
+/* GL_STENCIL_BUFFER_BIT */
+/* GL_DEPTH_BUFFER_BIT */
+
+/* ClientArrayType */
+/* GL_VERTEX_ARRAY */
+/* GL_NORMAL_ARRAY */
+/* GL_COLOR_ARRAY */
+/* GL_INDEX_ARRAY */
+/* GL_TEXTURE_COORD_ARRAY */
+/* GL_EDGE_FLAG_ARRAY */
+
+/* ClipPlaneName */
+#define GL_CLIP_PLANE0 0x3000
+#define GL_CLIP_PLANE1 0x3001
+#define GL_CLIP_PLANE2 0x3002
+#define GL_CLIP_PLANE3 0x3003
+#define GL_CLIP_PLANE4 0x3004
+#define GL_CLIP_PLANE5 0x3005
+
+/* ColorMaterialFace */
+/* GL_FRONT */
+/* GL_BACK */
+/* GL_FRONT_AND_BACK */
+
+/* ColorMaterialParameter */
+/* GL_AMBIENT */
+/* GL_DIFFUSE */
+/* GL_SPECULAR */
+/* GL_EMISSION */
+/* GL_AMBIENT_AND_DIFFUSE */
+
+/* ColorPointerType */
+/* GL_BYTE */
+/* GL_UNSIGNED_BYTE */
+/* GL_SHORT */
+/* GL_UNSIGNED_SHORT */
+/* GL_INT */
+/* GL_UNSIGNED_INT */
+/* GL_FLOAT */
+/* GL_DOUBLE */
+
+/* CullFaceMode */
+/* GL_FRONT */
+/* GL_BACK */
+/* GL_FRONT_AND_BACK */
+
+/* DataType */
+#define GL_BYTE 0x1400
+#define GL_UNSIGNED_BYTE 0x1401
+#define GL_SHORT 0x1402
+#define GL_UNSIGNED_SHORT 0x1403
+#define GL_INT 0x1404
+#define GL_UNSIGNED_INT 0x1405
+#define GL_FLOAT 0x1406
+#define GL_2_BYTES 0x1407
+#define GL_3_BYTES 0x1408
+#define GL_4_BYTES 0x1409
+#define GL_DOUBLE 0x140A
+
+/* DepthFunction */
+/* GL_NEVER */
+/* GL_LESS */
+/* GL_EQUAL */
+/* GL_LEQUAL */
+/* GL_GREATER */
+/* GL_NOTEQUAL */
+/* GL_GEQUAL */
+/* GL_ALWAYS */
+
+/* DrawBufferMode */
+#define GL_NONE 0
+#define GL_FRONT_LEFT 0x0400
+#define GL_FRONT_RIGHT 0x0401
+#define GL_BACK_LEFT 0x0402
+#define GL_BACK_RIGHT 0x0403
+#define GL_FRONT 0x0404
+#define GL_BACK 0x0405
+#define GL_LEFT 0x0406
+#define GL_RIGHT 0x0407
+#define GL_FRONT_AND_BACK 0x0408
+#define GL_AUX0 0x0409
+#define GL_AUX1 0x040A
+#define GL_AUX2 0x040B
+#define GL_AUX3 0x040C
+
+/* Enable */
+/* GL_FOG */
+/* GL_LIGHTING */
+/* GL_TEXTURE_1D */
+/* GL_TEXTURE_2D */
+/* GL_LINE_STIPPLE */
+/* GL_POLYGON_STIPPLE */
+/* GL_CULL_FACE */
+/* GL_ALPHA_TEST */
+/* GL_BLEND */
+/* GL_INDEX_LOGIC_OP */
+/* GL_COLOR_LOGIC_OP */
+/* GL_DITHER */
+/* GL_STENCIL_TEST */
+/* GL_DEPTH_TEST */
+/* GL_CLIP_PLANE0 */
+/* GL_CLIP_PLANE1 */
+/* GL_CLIP_PLANE2 */
+/* GL_CLIP_PLANE3 */
+/* GL_CLIP_PLANE4 */
+/* GL_CLIP_PLANE5 */
+/* GL_LIGHT0 */
+/* GL_LIGHT1 */
+/* GL_LIGHT2 */
+/* GL_LIGHT3 */
+/* GL_LIGHT4 */
+/* GL_LIGHT5 */
+/* GL_LIGHT6 */
+/* GL_LIGHT7 */
+/* GL_TEXTURE_GEN_S */
+/* GL_TEXTURE_GEN_T */
+/* GL_TEXTURE_GEN_R */
+/* GL_TEXTURE_GEN_Q */
+/* GL_MAP1_VERTEX_3 */
+/* GL_MAP1_VERTEX_4 */
+/* GL_MAP1_COLOR_4 */
+/* GL_MAP1_INDEX */
+/* GL_MAP1_NORMAL */
+/* GL_MAP1_TEXTURE_COORD_1 */
+/* GL_MAP1_TEXTURE_COORD_2 */
+/* GL_MAP1_TEXTURE_COORD_3 */
+/* GL_MAP1_TEXTURE_COORD_4 */
+/* GL_MAP2_VERTEX_3 */
+/* GL_MAP2_VERTEX_4 */
+/* GL_MAP2_COLOR_4 */
+/* GL_MAP2_INDEX */
+/* GL_MAP2_NORMAL */
+/* GL_MAP2_TEXTURE_COORD_1 */
+/* GL_MAP2_TEXTURE_COORD_2 */
+/* GL_MAP2_TEXTURE_COORD_3 */
+/* GL_MAP2_TEXTURE_COORD_4 */
+/* GL_POINT_SMOOTH */
+/* GL_LINE_SMOOTH */
+/* GL_POLYGON_SMOOTH */
+/* GL_SCISSOR_TEST */
+/* GL_COLOR_MATERIAL */
+/* GL_NORMALIZE */
+/* GL_AUTO_NORMAL */
+/* GL_VERTEX_ARRAY */
+/* GL_NORMAL_ARRAY */
+/* GL_COLOR_ARRAY */
+/* GL_INDEX_ARRAY */
+/* GL_TEXTURE_COORD_ARRAY */
+/* GL_EDGE_FLAG_ARRAY */
+/* GL_POLYGON_OFFSET_POINT */
+/* GL_POLYGON_OFFSET_LINE */
+/* GL_POLYGON_OFFSET_FILL */
+
+/* ErrorCode */
+#define GL_NO_ERROR 0
+#define GL_INVALID_ENUM 0x0500
+#define GL_INVALID_VALUE 0x0501
+#define GL_INVALID_OPERATION 0x0502
+#define GL_STACK_OVERFLOW 0x0503
+#define GL_STACK_UNDERFLOW 0x0504
+#define GL_OUT_OF_MEMORY 0x0505
+
+/* FeedBackMode */
+#define GL_2D 0x0600
+#define GL_3D 0x0601
+#define GL_3D_COLOR 0x0602
+#define GL_3D_COLOR_TEXTURE 0x0603
+#define GL_4D_COLOR_TEXTURE 0x0604
+
+/* FeedBackToken */
+#define GL_PASS_THROUGH_TOKEN 0x0700
+#define GL_POINT_TOKEN 0x0701
+#define GL_LINE_TOKEN 0x0702
+#define GL_POLYGON_TOKEN 0x0703
+#define GL_BITMAP_TOKEN 0x0704
+#define GL_DRAW_PIXEL_TOKEN 0x0705
+#define GL_COPY_PIXEL_TOKEN 0x0706
+#define GL_LINE_RESET_TOKEN 0x0707
+
+/* FogMode */
+/* GL_LINEAR */
+#define GL_EXP 0x0800
+#define GL_EXP2 0x0801
+
+/* FogParameter */
+/* GL_FOG_COLOR */
+/* GL_FOG_DENSITY */
+/* GL_FOG_END */
+/* GL_FOG_INDEX */
+/* GL_FOG_MODE */
+/* GL_FOG_START */
+
+/* FrontFaceDirection */
+#define GL_CW 0x0900
+#define GL_CCW 0x0901
+
+/* GetMapTarget */
+#define GL_COEFF 0x0A00
+#define GL_ORDER 0x0A01
+#define GL_DOMAIN 0x0A02
+
+/* GetPixelMap */
+/* GL_PIXEL_MAP_I_TO_I */
+/* GL_PIXEL_MAP_S_TO_S */
+/* GL_PIXEL_MAP_I_TO_R */
+/* GL_PIXEL_MAP_I_TO_G */
+/* GL_PIXEL_MAP_I_TO_B */
+/* GL_PIXEL_MAP_I_TO_A */
+/* GL_PIXEL_MAP_R_TO_R */
+/* GL_PIXEL_MAP_G_TO_G */
+/* GL_PIXEL_MAP_B_TO_B */
+/* GL_PIXEL_MAP_A_TO_A */
+
+/* GetPointerTarget */
+/* GL_VERTEX_ARRAY_POINTER */
+/* GL_NORMAL_ARRAY_POINTER */
+/* GL_COLOR_ARRAY_POINTER */
+/* GL_INDEX_ARRAY_POINTER */
+/* GL_TEXTURE_COORD_ARRAY_POINTER */
+/* GL_EDGE_FLAG_ARRAY_POINTER */
+
+/* GetTarget */
+#define GL_CURRENT_COLOR 0x0B00
+#define GL_CURRENT_INDEX 0x0B01
+#define GL_CURRENT_NORMAL 0x0B02
+#define GL_CURRENT_TEXTURE_COORDS 0x0B03
+#define GL_CURRENT_RASTER_COLOR 0x0B04
+#define GL_CURRENT_RASTER_INDEX 0x0B05
+#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06
+#define GL_CURRENT_RASTER_POSITION 0x0B07
+#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08
+#define GL_CURRENT_RASTER_DISTANCE 0x0B09
+#define GL_POINT_SMOOTH 0x0B10
+#define GL_POINT_SIZE 0x0B11
+#define GL_POINT_SIZE_RANGE 0x0B12
+#define GL_POINT_SIZE_GRANULARITY 0x0B13
+#define GL_LINE_SMOOTH 0x0B20
+#define GL_LINE_WIDTH 0x0B21
+#define GL_LINE_WIDTH_RANGE 0x0B22
+#define GL_LINE_WIDTH_GRANULARITY 0x0B23
+#define GL_LINE_STIPPLE 0x0B24
+#define GL_LINE_STIPPLE_PATTERN 0x0B25
+#define GL_LINE_STIPPLE_REPEAT 0x0B26
+#define GL_LIST_MODE 0x0B30
+#define GL_MAX_LIST_NESTING 0x0B31
+#define GL_LIST_BASE 0x0B32
+#define GL_LIST_INDEX 0x0B33
+#define GL_POLYGON_MODE 0x0B40
+#define GL_POLYGON_SMOOTH 0x0B41
+#define GL_POLYGON_STIPPLE 0x0B42
+#define GL_EDGE_FLAG 0x0B43
+#define GL_CULL_FACE 0x0B44
+#define GL_CULL_FACE_MODE 0x0B45
+#define GL_FRONT_FACE 0x0B46
+#define GL_LIGHTING 0x0B50
+#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51
+#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52
+#define GL_LIGHT_MODEL_AMBIENT 0x0B53
+#define GL_SHADE_MODEL 0x0B54
+#define GL_COLOR_MATERIAL_FACE 0x0B55
+#define GL_COLOR_MATERIAL_PARAMETER 0x0B56
+#define GL_COLOR_MATERIAL 0x0B57
+#define GL_FOG 0x0B60
+#define GL_FOG_INDEX 0x0B61
+#define GL_FOG_DENSITY 0x0B62
+#define GL_FOG_START 0x0B63
+#define GL_FOG_END 0x0B64
+#define GL_FOG_MODE 0x0B65
+#define GL_FOG_COLOR 0x0B66
+#define GL_DEPTH_RANGE 0x0B70
+#define GL_DEPTH_TEST 0x0B71
+#define GL_DEPTH_WRITEMASK 0x0B72
+#define GL_DEPTH_CLEAR_VALUE 0x0B73
+#define GL_DEPTH_FUNC 0x0B74
+#define GL_ACCUM_CLEAR_VALUE 0x0B80
+#define GL_STENCIL_TEST 0x0B90
+#define GL_STENCIL_CLEAR_VALUE 0x0B91
+#define GL_STENCIL_FUNC 0x0B92
+#define GL_STENCIL_VALUE_MASK 0x0B93
+#define GL_STENCIL_FAIL 0x0B94
+#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
+#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
+#define GL_STENCIL_REF 0x0B97
+#define GL_STENCIL_WRITEMASK 0x0B98
+#define GL_MATRIX_MODE 0x0BA0
+#define GL_NORMALIZE 0x0BA1
+#define GL_VIEWPORT 0x0BA2
+#define GL_MODELVIEW_STACK_DEPTH 0x0BA3
+#define GL_PROJECTION_STACK_DEPTH 0x0BA4
+#define GL_TEXTURE_STACK_DEPTH 0x0BA5
+#define GL_MODELVIEW_MATRIX 0x0BA6
+#define GL_PROJECTION_MATRIX 0x0BA7
+#define GL_TEXTURE_MATRIX 0x0BA8
+#define GL_ATTRIB_STACK_DEPTH 0x0BB0
+#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1
+#define GL_ALPHA_TEST 0x0BC0
+#define GL_ALPHA_TEST_FUNC 0x0BC1
+#define GL_ALPHA_TEST_REF 0x0BC2
+#define GL_DITHER 0x0BD0
+#define GL_BLEND_DST 0x0BE0
+#define GL_BLEND_SRC 0x0BE1
+#define GL_BLEND 0x0BE2
+#define GL_LOGIC_OP_MODE 0x0BF0
+#define GL_INDEX_LOGIC_OP 0x0BF1
+#define GL_COLOR_LOGIC_OP 0x0BF2
+#define GL_AUX_BUFFERS 0x0C00
+#define GL_DRAW_BUFFER 0x0C01
+#define GL_READ_BUFFER 0x0C02
+#define GL_SCISSOR_BOX 0x0C10
+#define GL_SCISSOR_TEST 0x0C11
+#define GL_INDEX_CLEAR_VALUE 0x0C20
+#define GL_INDEX_WRITEMASK 0x0C21
+#define GL_COLOR_CLEAR_VALUE 0x0C22
+#define GL_COLOR_WRITEMASK 0x0C23
+#define GL_INDEX_MODE 0x0C30
+#define GL_RGBA_MODE 0x0C31
+#define GL_DOUBLEBUFFER 0x0C32
+#define GL_STEREO 0x0C33
+#define GL_RENDER_MODE 0x0C40
+#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50
+#define GL_POINT_SMOOTH_HINT 0x0C51
+#define GL_LINE_SMOOTH_HINT 0x0C52
+#define GL_POLYGON_SMOOTH_HINT 0x0C53
+#define GL_FOG_HINT 0x0C54
+#define GL_TEXTURE_GEN_S 0x0C60
+#define GL_TEXTURE_GEN_T 0x0C61
+#define GL_TEXTURE_GEN_R 0x0C62
+#define GL_TEXTURE_GEN_Q 0x0C63
+#define GL_PIXEL_MAP_I_TO_I 0x0C70
+#define GL_PIXEL_MAP_S_TO_S 0x0C71
+#define GL_PIXEL_MAP_I_TO_R 0x0C72
+#define GL_PIXEL_MAP_I_TO_G 0x0C73
+#define GL_PIXEL_MAP_I_TO_B 0x0C74
+#define GL_PIXEL_MAP_I_TO_A 0x0C75
+#define GL_PIXEL_MAP_R_TO_R 0x0C76
+#define GL_PIXEL_MAP_G_TO_G 0x0C77
+#define GL_PIXEL_MAP_B_TO_B 0x0C78
+#define GL_PIXEL_MAP_A_TO_A 0x0C79
+#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0
+#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1
+#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2
+#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3
+#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4
+#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5
+#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6
+#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7
+#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8
+#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9
+#define GL_UNPACK_SWAP_BYTES 0x0CF0
+#define GL_UNPACK_LSB_FIRST 0x0CF1
+#define GL_UNPACK_ROW_LENGTH 0x0CF2
+#define GL_UNPACK_SKIP_ROWS 0x0CF3
+#define GL_UNPACK_SKIP_PIXELS 0x0CF4
+#define GL_UNPACK_ALIGNMENT 0x0CF5
+#define GL_PACK_SWAP_BYTES 0x0D00
+#define GL_PACK_LSB_FIRST 0x0D01
+#define GL_PACK_ROW_LENGTH 0x0D02
+#define GL_PACK_SKIP_ROWS 0x0D03
+#define GL_PACK_SKIP_PIXELS 0x0D04
+#define GL_PACK_ALIGNMENT 0x0D05
+#define GL_MAP_COLOR 0x0D10
+#define GL_MAP_STENCIL 0x0D11
+#define GL_INDEX_SHIFT 0x0D12
+#define GL_INDEX_OFFSET 0x0D13
+#define GL_RED_SCALE 0x0D14
+#define GL_RED_BIAS 0x0D15
+#define GL_ZOOM_X 0x0D16
+#define GL_ZOOM_Y 0x0D17
+#define GL_GREEN_SCALE 0x0D18
+#define GL_GREEN_BIAS 0x0D19
+#define GL_BLUE_SCALE 0x0D1A
+#define GL_BLUE_BIAS 0x0D1B
+#define GL_ALPHA_SCALE 0x0D1C
+#define GL_ALPHA_BIAS 0x0D1D
+#define GL_DEPTH_SCALE 0x0D1E
+#define GL_DEPTH_BIAS 0x0D1F
+#define GL_MAX_EVAL_ORDER 0x0D30
+#define GL_MAX_LIGHTS 0x0D31
+#define GL_MAX_CLIP_PLANES 0x0D32
+#define GL_MAX_TEXTURE_SIZE 0x0D33
+#define GL_MAX_PIXEL_MAP_TABLE 0x0D34
+#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35
+#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36
+#define GL_MAX_NAME_STACK_DEPTH 0x0D37
+#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38
+#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39
+#define GL_MAX_VIEWPORT_DIMS 0x0D3A
+#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B
+#define GL_SUBPIXEL_BITS 0x0D50
+#define GL_INDEX_BITS 0x0D51
+#define GL_RED_BITS 0x0D52
+#define GL_GREEN_BITS 0x0D53
+#define GL_BLUE_BITS 0x0D54
+#define GL_ALPHA_BITS 0x0D55
+#define GL_DEPTH_BITS 0x0D56
+#define GL_STENCIL_BITS 0x0D57
+#define GL_ACCUM_RED_BITS 0x0D58
+#define GL_ACCUM_GREEN_BITS 0x0D59
+#define GL_ACCUM_BLUE_BITS 0x0D5A
+#define GL_ACCUM_ALPHA_BITS 0x0D5B
+#define GL_NAME_STACK_DEPTH 0x0D70
+#define GL_AUTO_NORMAL 0x0D80
+#define GL_MAP1_COLOR_4 0x0D90
+#define GL_MAP1_INDEX 0x0D91
+#define GL_MAP1_NORMAL 0x0D92
+#define GL_MAP1_TEXTURE_COORD_1 0x0D93
+#define GL_MAP1_TEXTURE_COORD_2 0x0D94
+#define GL_MAP1_TEXTURE_COORD_3 0x0D95
+#define GL_MAP1_TEXTURE_COORD_4 0x0D96
+#define GL_MAP1_VERTEX_3 0x0D97
+#define GL_MAP1_VERTEX_4 0x0D98
+#define GL_MAP2_COLOR_4 0x0DB0
+#define GL_MAP2_INDEX 0x0DB1
+#define GL_MAP2_NORMAL 0x0DB2
+#define GL_MAP2_TEXTURE_COORD_1 0x0DB3
+#define GL_MAP2_TEXTURE_COORD_2 0x0DB4
+#define GL_MAP2_TEXTURE_COORD_3 0x0DB5
+#define GL_MAP2_TEXTURE_COORD_4 0x0DB6
+#define GL_MAP2_VERTEX_3 0x0DB7
+#define GL_MAP2_VERTEX_4 0x0DB8
+#define GL_MAP1_GRID_DOMAIN 0x0DD0
+#define GL_MAP1_GRID_SEGMENTS 0x0DD1
+#define GL_MAP2_GRID_DOMAIN 0x0DD2
+#define GL_MAP2_GRID_SEGMENTS 0x0DD3
+#define GL_TEXTURE_1D 0x0DE0
+#define GL_TEXTURE_2D 0x0DE1
+#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0
+#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1
+#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2
+#define GL_SELECTION_BUFFER_POINTER 0x0DF3
+#define GL_SELECTION_BUFFER_SIZE 0x0DF4
+/* GL_TEXTURE_BINDING_1D */
+/* GL_TEXTURE_BINDING_2D */
+/* GL_VERTEX_ARRAY */
+/* GL_NORMAL_ARRAY */
+/* GL_COLOR_ARRAY */
+/* GL_INDEX_ARRAY */
+/* GL_TEXTURE_COORD_ARRAY */
+/* GL_EDGE_FLAG_ARRAY */
+/* GL_VERTEX_ARRAY_SIZE */
+/* GL_VERTEX_ARRAY_TYPE */
+/* GL_VERTEX_ARRAY_STRIDE */
+/* GL_NORMAL_ARRAY_TYPE */
+/* GL_NORMAL_ARRAY_STRIDE */
+/* GL_COLOR_ARRAY_SIZE */
+/* GL_COLOR_ARRAY_TYPE */
+/* GL_COLOR_ARRAY_STRIDE */
+/* GL_INDEX_ARRAY_TYPE */
+/* GL_INDEX_ARRAY_STRIDE */
+/* GL_TEXTURE_COORD_ARRAY_SIZE */
+/* GL_TEXTURE_COORD_ARRAY_TYPE */
+/* GL_TEXTURE_COORD_ARRAY_STRIDE */
+/* GL_EDGE_FLAG_ARRAY_STRIDE */
+/* GL_POLYGON_OFFSET_FACTOR */
+/* GL_POLYGON_OFFSET_UNITS */
+
+/* GetTextureParameter */
+/* GL_TEXTURE_MAG_FILTER */
+/* GL_TEXTURE_MIN_FILTER */
+/* GL_TEXTURE_WRAP_S */
+/* GL_TEXTURE_WRAP_T */
+#define GL_TEXTURE_WIDTH 0x1000
+#define GL_TEXTURE_HEIGHT 0x1001
+#define GL_TEXTURE_INTERNAL_FORMAT 0x1003
+#define GL_TEXTURE_BORDER_COLOR 0x1004
+#define GL_TEXTURE_BORDER 0x1005
+/* GL_TEXTURE_RED_SIZE */
+/* GL_TEXTURE_GREEN_SIZE */
+/* GL_TEXTURE_BLUE_SIZE */
+/* GL_TEXTURE_ALPHA_SIZE */
+/* GL_TEXTURE_LUMINANCE_SIZE */
+/* GL_TEXTURE_INTENSITY_SIZE */
+/* GL_TEXTURE_PRIORITY */
+/* GL_TEXTURE_RESIDENT */
+
+/* HintMode */
+#define GL_DONT_CARE 0x1100
+#define GL_FASTEST 0x1101
+#define GL_NICEST 0x1102
+
+/* HintTarget */
+/* GL_PERSPECTIVE_CORRECTION_HINT */
+/* GL_POINT_SMOOTH_HINT */
+/* GL_LINE_SMOOTH_HINT */
+/* GL_POLYGON_SMOOTH_HINT */
+/* GL_FOG_HINT */
+
+/* IndexPointerType */
+/* GL_SHORT */
+/* GL_INT */
+/* GL_FLOAT */
+/* GL_DOUBLE */
+
+/* LightModelParameter */
+/* GL_LIGHT_MODEL_AMBIENT */
+/* GL_LIGHT_MODEL_LOCAL_VIEWER */
+/* GL_LIGHT_MODEL_TWO_SIDE */
+
+/* LightName */
+#define GL_LIGHT0 0x4000
+#define GL_LIGHT1 0x4001
+#define GL_LIGHT2 0x4002
+#define GL_LIGHT3 0x4003
+#define GL_LIGHT4 0x4004
+#define GL_LIGHT5 0x4005
+#define GL_LIGHT6 0x4006
+#define GL_LIGHT7 0x4007
+
+/* LightParameter */
+#define GL_AMBIENT 0x1200
+#define GL_DIFFUSE 0x1201
+#define GL_SPECULAR 0x1202
+#define GL_POSITION 0x1203
+#define GL_SPOT_DIRECTION 0x1204
+#define GL_SPOT_EXPONENT 0x1205
+#define GL_SPOT_CUTOFF 0x1206
+#define GL_CONSTANT_ATTENUATION 0x1207
+#define GL_LINEAR_ATTENUATION 0x1208
+#define GL_QUADRATIC_ATTENUATION 0x1209
+
+/* InterleavedArrays */
+/* GL_V2F */
+/* GL_V3F */
+/* GL_C4UB_V2F */
+/* GL_C4UB_V3F */
+/* GL_C3F_V3F */
+/* GL_N3F_V3F */
+/* GL_C4F_N3F_V3F */
+/* GL_T2F_V3F */
+/* GL_T4F_V4F */
+/* GL_T2F_C4UB_V3F */
+/* GL_T2F_C3F_V3F */
+/* GL_T2F_N3F_V3F */
+/* GL_T2F_C4F_N3F_V3F */
+/* GL_T4F_C4F_N3F_V4F */
+
+/* ListMode */
+#define GL_COMPILE 0x1300
+#define GL_COMPILE_AND_EXECUTE 0x1301
+
+/* ListNameType */
+/* GL_BYTE */
+/* GL_UNSIGNED_BYTE */
+/* GL_SHORT */
+/* GL_UNSIGNED_SHORT */
+/* GL_INT */
+/* GL_UNSIGNED_INT */
+/* GL_FLOAT */
+/* GL_2_BYTES */
+/* GL_3_BYTES */
+/* GL_4_BYTES */
+
+/* LogicOp */
+#define GL_CLEAR 0x1500
+#define GL_AND 0x1501
+#define GL_AND_REVERSE 0x1502
+#define GL_COPY 0x1503
+#define GL_AND_INVERTED 0x1504
+#define GL_NOOP 0x1505
+#define GL_XOR 0x1506
+#define GL_OR 0x1507
+#define GL_NOR 0x1508
+#define GL_EQUIV 0x1509
+#define GL_INVERT 0x150A
+#define GL_OR_REVERSE 0x150B
+#define GL_COPY_INVERTED 0x150C
+#define GL_OR_INVERTED 0x150D
+#define GL_NAND 0x150E
+#define GL_SET 0x150F
+
+/* MapTarget */
+/* GL_MAP1_COLOR_4 */
+/* GL_MAP1_INDEX */
+/* GL_MAP1_NORMAL */
+/* GL_MAP1_TEXTURE_COORD_1 */
+/* GL_MAP1_TEXTURE_COORD_2 */
+/* GL_MAP1_TEXTURE_COORD_3 */
+/* GL_MAP1_TEXTURE_COORD_4 */
+/* GL_MAP1_VERTEX_3 */
+/* GL_MAP1_VERTEX_4 */
+/* GL_MAP2_COLOR_4 */
+/* GL_MAP2_INDEX */
+/* GL_MAP2_NORMAL */
+/* GL_MAP2_TEXTURE_COORD_1 */
+/* GL_MAP2_TEXTURE_COORD_2 */
+/* GL_MAP2_TEXTURE_COORD_3 */
+/* GL_MAP2_TEXTURE_COORD_4 */
+/* GL_MAP2_VERTEX_3 */
+/* GL_MAP2_VERTEX_4 */
+
+/* MaterialFace */
+/* GL_FRONT */
+/* GL_BACK */
+/* GL_FRONT_AND_BACK */
+
+/* MaterialParameter */
+#define GL_EMISSION 0x1600
+#define GL_SHININESS 0x1601
+#define GL_AMBIENT_AND_DIFFUSE 0x1602
+#define GL_COLOR_INDEXES 0x1603
+/* GL_AMBIENT */
+/* GL_DIFFUSE */
+/* GL_SPECULAR */
+
+/* MatrixMode */
+#define GL_MODELVIEW 0x1700
+#define GL_PROJECTION 0x1701
+#define GL_TEXTURE 0x1702
+
+/* MeshMode1 */
+/* GL_POINT */
+/* GL_LINE */
+
+/* MeshMode2 */
+/* GL_POINT */
+/* GL_LINE */
+/* GL_FILL */
+
+/* NormalPointerType */
+/* GL_BYTE */
+/* GL_SHORT */
+/* GL_INT */
+/* GL_FLOAT */
+/* GL_DOUBLE */
+
+/* PixelCopyType */
+#define GL_COLOR 0x1800
+#define GL_DEPTH 0x1801
+#define GL_STENCIL 0x1802
+
+/* PixelFormat */
+#define GL_COLOR_INDEX 0x1900
+#define GL_STENCIL_INDEX 0x1901
+#define GL_DEPTH_COMPONENT 0x1902
+#define GL_RED 0x1903
+#define GL_GREEN 0x1904
+#define GL_BLUE 0x1905
+#define GL_ALPHA 0x1906
+#define GL_RGB 0x1907
+#define GL_RGBA 0x1908
+#define GL_LUMINANCE 0x1909
+#define GL_LUMINANCE_ALPHA 0x190A
+
+/* PixelMap */
+/* GL_PIXEL_MAP_I_TO_I */
+/* GL_PIXEL_MAP_S_TO_S */
+/* GL_PIXEL_MAP_I_TO_R */
+/* GL_PIXEL_MAP_I_TO_G */
+/* GL_PIXEL_MAP_I_TO_B */
+/* GL_PIXEL_MAP_I_TO_A */
+/* GL_PIXEL_MAP_R_TO_R */
+/* GL_PIXEL_MAP_G_TO_G */
+/* GL_PIXEL_MAP_B_TO_B */
+/* GL_PIXEL_MAP_A_TO_A */
+
+/* PixelStore */
+/* GL_UNPACK_SWAP_BYTES */
+/* GL_UNPACK_LSB_FIRST */
+/* GL_UNPACK_ROW_LENGTH */
+/* GL_UNPACK_SKIP_ROWS */
+/* GL_UNPACK_SKIP_PIXELS */
+/* GL_UNPACK_ALIGNMENT */
+/* GL_PACK_SWAP_BYTES */
+/* GL_PACK_LSB_FIRST */
+/* GL_PACK_ROW_LENGTH */
+/* GL_PACK_SKIP_ROWS */
+/* GL_PACK_SKIP_PIXELS */
+/* GL_PACK_ALIGNMENT */
+
+/* PixelTransfer */
+/* GL_MAP_COLOR */
+/* GL_MAP_STENCIL */
+/* GL_INDEX_SHIFT */
+/* GL_INDEX_OFFSET */
+/* GL_RED_SCALE */
+/* GL_RED_BIAS */
+/* GL_GREEN_SCALE */
+/* GL_GREEN_BIAS */
+/* GL_BLUE_SCALE */
+/* GL_BLUE_BIAS */
+/* GL_ALPHA_SCALE */
+/* GL_ALPHA_BIAS */
+/* GL_DEPTH_SCALE */
+/* GL_DEPTH_BIAS */
+
+/* PixelType */
+#define GL_BITMAP 0x1A00
+/* GL_BYTE */
+/* GL_UNSIGNED_BYTE */
+/* GL_SHORT */
+/* GL_UNSIGNED_SHORT */
+/* GL_INT */
+/* GL_UNSIGNED_INT */
+/* GL_FLOAT */
+
+/* PolygonMode */
+#define GL_POINT 0x1B00
+#define GL_LINE 0x1B01
+#define GL_FILL 0x1B02
+
+/* ReadBufferMode */
+/* GL_FRONT_LEFT */
+/* GL_FRONT_RIGHT */
+/* GL_BACK_LEFT */
+/* GL_BACK_RIGHT */
+/* GL_FRONT */
+/* GL_BACK */
+/* GL_LEFT */
+/* GL_RIGHT */
+/* GL_AUX0 */
+/* GL_AUX1 */
+/* GL_AUX2 */
+/* GL_AUX3 */
+
+/* RenderingMode */
+#define GL_RENDER 0x1C00
+#define GL_FEEDBACK 0x1C01
+#define GL_SELECT 0x1C02
+
+/* ShadingModel */
+#define GL_FLAT 0x1D00
+#define GL_SMOOTH 0x1D01
+
+/* StencilFunction */
+/* GL_NEVER */
+/* GL_LESS */
+/* GL_EQUAL */
+/* GL_LEQUAL */
+/* GL_GREATER */
+/* GL_NOTEQUAL */
+/* GL_GEQUAL */
+/* GL_ALWAYS */
+
+/* StencilOp */
+/* GL_ZERO */
+#define GL_KEEP 0x1E00
+#define GL_REPLACE 0x1E01
+#define GL_INCR 0x1E02
+#define GL_DECR 0x1E03
+/* GL_INVERT */
+
+/* StringName */
+#define GL_VENDOR 0x1F00
+#define GL_RENDERER 0x1F01
+#define GL_VERSION 0x1F02
+#define GL_EXTENSIONS 0x1F03
+
+/* TextureCoordName */
+#define GL_S 0x2000
+#define GL_T 0x2001
+#define GL_R 0x2002
+#define GL_Q 0x2003
+
+/* TexCoordPointerType */
+/* GL_SHORT */
+/* GL_INT */
+/* GL_FLOAT */
+/* GL_DOUBLE */
+
+/* TextureEnvMode */
+#define GL_MODULATE 0x2100
+#define GL_DECAL 0x2101
+/* GL_BLEND */
+/* GL_REPLACE */
+
+/* TextureEnvParameter */
+#define GL_TEXTURE_ENV_MODE 0x2200
+#define GL_TEXTURE_ENV_COLOR 0x2201
+
+/* TextureEnvTarget */
+#define GL_TEXTURE_ENV 0x2300
+
+/* TextureGenMode */
+#define GL_EYE_LINEAR 0x2400
+#define GL_OBJECT_LINEAR 0x2401
+#define GL_SPHERE_MAP 0x2402
+
+/* TextureGenParameter */
+#define GL_TEXTURE_GEN_MODE 0x2500
+#define GL_OBJECT_PLANE 0x2501
+#define GL_EYE_PLANE 0x2502
+
+/* TextureMagFilter */
+#define GL_NEAREST 0x2600
+#define GL_LINEAR 0x2601
+
+/* TextureMinFilter */
+/* GL_NEAREST */
+/* GL_LINEAR */
+#define GL_NEAREST_MIPMAP_NEAREST 0x2700
+#define GL_LINEAR_MIPMAP_NEAREST 0x2701
+#define GL_NEAREST_MIPMAP_LINEAR 0x2702
+#define GL_LINEAR_MIPMAP_LINEAR 0x2703
+
+/* TextureParameterName */
+#define GL_TEXTURE_MAG_FILTER 0x2800
+#define GL_TEXTURE_MIN_FILTER 0x2801
+#define GL_TEXTURE_WRAP_S 0x2802
+#define GL_TEXTURE_WRAP_T 0x2803
+/* GL_TEXTURE_BORDER_COLOR */
+/* GL_TEXTURE_PRIORITY */
+
+/* TextureTarget */
+/* GL_TEXTURE_1D */
+/* GL_TEXTURE_2D */
+/* GL_PROXY_TEXTURE_1D */
+/* GL_PROXY_TEXTURE_2D */
+
+/* TextureWrapMode */
+#define GL_CLAMP 0x2900
+#define GL_REPEAT 0x2901
+
+/* VertexPointerType */
+/* GL_SHORT */
+/* GL_INT */
+/* GL_FLOAT */
+/* GL_DOUBLE */
+
+/* ClientAttribMask */
+#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001
+#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002
+#define GL_CLIENT_ALL_ATTRIB_BITS 0xffffffff
+
+/* polygon_offset */
+#define GL_POLYGON_OFFSET_FACTOR 0x8038
+#define GL_POLYGON_OFFSET_UNITS 0x2A00
+#define GL_POLYGON_OFFSET_POINT 0x2A01
+#define GL_POLYGON_OFFSET_LINE 0x2A02
+#define GL_POLYGON_OFFSET_FILL 0x8037
+
+/* texture */
+#define GL_ALPHA4 0x803B
+#define GL_ALPHA8 0x803C
+#define GL_ALPHA12 0x803D
+#define GL_ALPHA16 0x803E
+#define GL_LUMINANCE4 0x803F
+#define GL_LUMINANCE8 0x8040
+#define GL_LUMINANCE12 0x8041
+#define GL_LUMINANCE16 0x8042
+#define GL_LUMINANCE4_ALPHA4 0x8043
+#define GL_LUMINANCE6_ALPHA2 0x8044
+#define GL_LUMINANCE8_ALPHA8 0x8045
+#define GL_LUMINANCE12_ALPHA4 0x8046
+#define GL_LUMINANCE12_ALPHA12 0x8047
+#define GL_LUMINANCE16_ALPHA16 0x8048
+#define GL_INTENSITY 0x8049
+#define GL_INTENSITY4 0x804A
+#define GL_INTENSITY8 0x804B
+#define GL_INTENSITY12 0x804C
+#define GL_INTENSITY16 0x804D
+#define GL_R3_G3_B2 0x2A10
+#define GL_RGB4 0x804F
+#define GL_RGB5 0x8050
+#define GL_RGB8 0x8051
+#define GL_RGB10 0x8052
+#define GL_RGB12 0x8053
+#define GL_RGB16 0x8054
+#define GL_RGBA2 0x8055
+#define GL_RGBA4 0x8056
+#define GL_RGB5_A1 0x8057
+#define GL_RGBA8 0x8058
+#define GL_RGB10_A2 0x8059
+#define GL_RGBA12 0x805A
+#define GL_RGBA16 0x805B
+#define GL_TEXTURE_RED_SIZE 0x805C
+#define GL_TEXTURE_GREEN_SIZE 0x805D
+#define GL_TEXTURE_BLUE_SIZE 0x805E
+#define GL_TEXTURE_ALPHA_SIZE 0x805F
+#define GL_TEXTURE_LUMINANCE_SIZE 0x8060
+#define GL_TEXTURE_INTENSITY_SIZE 0x8061
+#define GL_PROXY_TEXTURE_1D 0x8063
+#define GL_PROXY_TEXTURE_2D 0x8064
+
+/* texture_object */
+#define GL_TEXTURE_PRIORITY 0x8066
+#define GL_TEXTURE_RESIDENT 0x8067
+#define GL_TEXTURE_BINDING_1D 0x8068
+#define GL_TEXTURE_BINDING_2D 0x8069
+
+/* vertex_array */
+#define GL_VERTEX_ARRAY 0x8074
+#define GL_NORMAL_ARRAY 0x8075
+#define GL_COLOR_ARRAY 0x8076
+#define GL_INDEX_ARRAY 0x8077
+#define GL_TEXTURE_COORD_ARRAY 0x8078
+#define GL_EDGE_FLAG_ARRAY 0x8079
+#define GL_VERTEX_ARRAY_SIZE 0x807A
+#define GL_VERTEX_ARRAY_TYPE 0x807B
+#define GL_VERTEX_ARRAY_STRIDE 0x807C
+#define GL_NORMAL_ARRAY_TYPE 0x807E
+#define GL_NORMAL_ARRAY_STRIDE 0x807F
+#define GL_COLOR_ARRAY_SIZE 0x8081
+#define GL_COLOR_ARRAY_TYPE 0x8082
+#define GL_COLOR_ARRAY_STRIDE 0x8083
+#define GL_INDEX_ARRAY_TYPE 0x8085
+#define GL_INDEX_ARRAY_STRIDE 0x8086
+#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A
+#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C
+#define GL_VERTEX_ARRAY_POINTER 0x808E
+#define GL_NORMAL_ARRAY_POINTER 0x808F
+#define GL_COLOR_ARRAY_POINTER 0x8090
+#define GL_INDEX_ARRAY_POINTER 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093
+#define GL_V2F 0x2A20
+#define GL_V3F 0x2A21
+#define GL_C4UB_V2F 0x2A22
+#define GL_C4UB_V3F 0x2A23
+#define GL_C3F_V3F 0x2A24
+#define GL_N3F_V3F 0x2A25
+#define GL_C4F_N3F_V3F 0x2A26
+#define GL_T2F_V3F 0x2A27
+#define GL_T4F_V4F 0x2A28
+#define GL_T2F_C4UB_V3F 0x2A29
+#define GL_T2F_C3F_V3F 0x2A2A
+#define GL_T2F_N3F_V3F 0x2A2B
+#define GL_T2F_C4F_N3F_V3F 0x2A2C
+#define GL_T4F_C4F_N3F_V4F 0x2A2D
+
+/* Extensions */
+#define GL_EXT_vertex_array 1
+#define GL_WIN_swap_hint 1
+#define GL_EXT_bgra 1
+#define GL_EXT_paletted_texture 1
+
+/* EXT_vertex_array */
+#define GL_VERTEX_ARRAY_EXT 0x8074
+#define GL_NORMAL_ARRAY_EXT 0x8075
+#define GL_COLOR_ARRAY_EXT 0x8076
+#define GL_INDEX_ARRAY_EXT 0x8077
+#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078
+#define GL_EDGE_FLAG_ARRAY_EXT 0x8079
+#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A
+#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B
+#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C
+#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D
+#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E
+#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F
+#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080
+#define GL_COLOR_ARRAY_SIZE_EXT 0x8081
+#define GL_COLOR_ARRAY_TYPE_EXT 0x8082
+#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083
+#define GL_COLOR_ARRAY_COUNT_EXT 0x8084
+#define GL_INDEX_ARRAY_TYPE_EXT 0x8085
+#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086
+#define GL_INDEX_ARRAY_COUNT_EXT 0x8087
+#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088
+#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089
+#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
+#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B
+#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C
+#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D
+#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E
+#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F
+#define GL_COLOR_ARRAY_POINTER_EXT 0x8090
+#define GL_INDEX_ARRAY_POINTER_EXT 0x8091
+#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
+#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093
+#define GL_DOUBLE_EXT GL_DOUBLE
+
+/* EXT_bgra */
+#define GL_BGR_EXT 0x80E0
+#define GL_BGRA_EXT 0x80E1
+
+/* EXT_paletted_texture */
+
+/* These must match the GL_COLOR_TABLE_*_SGI enumerants */
+#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8
+#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9
+#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA
+#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB
+#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC
+#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD
+#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE
+#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF
+
+#define GL_COLOR_INDEX1_EXT 0x80E2
+#define GL_COLOR_INDEX2_EXT 0x80E3
+#define GL_COLOR_INDEX4_EXT 0x80E4
+#define GL_COLOR_INDEX8_EXT 0x80E5
+#define GL_COLOR_INDEX12_EXT 0x80E6
+#define GL_COLOR_INDEX16_EXT 0x80E7
+
+/* For compatibility with OpenGL v1.0 */
+#define GL_LOGIC_OP GL_INDEX_LOGIC_OP
+#define GL_TEXTURE_COMPONENTS GL_TEXTURE_INTERNAL_FORMAT
+
+/*************************************************************/
+
+WINGDIAPI void APIENTRY glAccum (GLenum op, GLfloat value);
+WINGDIAPI void APIENTRY glAlphaFunc (GLenum func, GLclampf ref);
+WINGDIAPI GLboolean APIENTRY glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences);
+WINGDIAPI void APIENTRY glArrayElement (GLint i);
+WINGDIAPI void APIENTRY glBegin (GLenum mode);
+WINGDIAPI void APIENTRY glBindTexture (GLenum target, GLuint texture);
+WINGDIAPI void APIENTRY glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
+WINGDIAPI void APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
+WINGDIAPI void APIENTRY glCallList (GLuint list);
+WINGDIAPI void APIENTRY glCallLists (GLsizei n, GLenum type, const GLvoid *lists);
+WINGDIAPI void APIENTRY glClear (GLbitfield mask);
+WINGDIAPI void APIENTRY glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+WINGDIAPI void APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+WINGDIAPI void APIENTRY glClearDepth (GLclampd depth);
+WINGDIAPI void APIENTRY glClearIndex (GLfloat c);
+WINGDIAPI void APIENTRY glClearStencil (GLint s);
+WINGDIAPI void APIENTRY glClipPlane (GLenum plane, const GLdouble *equation);
+WINGDIAPI void APIENTRY glColor3b (GLbyte red, GLbyte green, GLbyte blue);
+WINGDIAPI void APIENTRY glColor3bv (const GLbyte *v);
+WINGDIAPI void APIENTRY glColor3d (GLdouble red, GLdouble green, GLdouble blue);
+WINGDIAPI void APIENTRY glColor3dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glColor3f (GLfloat red, GLfloat green, GLfloat blue);
+WINGDIAPI void APIENTRY glColor3fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glColor3i (GLint red, GLint green, GLint blue);
+WINGDIAPI void APIENTRY glColor3iv (const GLint *v);
+WINGDIAPI void APIENTRY glColor3s (GLshort red, GLshort green, GLshort blue);
+WINGDIAPI void APIENTRY glColor3sv (const GLshort *v);
+WINGDIAPI void APIENTRY glColor3ub (GLubyte red, GLubyte green, GLubyte blue);
+WINGDIAPI void APIENTRY glColor3ubv (const GLubyte *v);
+WINGDIAPI void APIENTRY glColor3ui (GLuint red, GLuint green, GLuint blue);
+WINGDIAPI void APIENTRY glColor3uiv (const GLuint *v);
+WINGDIAPI void APIENTRY glColor3us (GLushort red, GLushort green, GLushort blue);
+WINGDIAPI void APIENTRY glColor3usv (const GLushort *v);
+WINGDIAPI void APIENTRY glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
+WINGDIAPI void APIENTRY glColor4bv (const GLbyte *v);
+WINGDIAPI void APIENTRY glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+WINGDIAPI void APIENTRY glColor4dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+WINGDIAPI void APIENTRY glColor4fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glColor4i (GLint red, GLint green, GLint blue, GLint alpha);
+WINGDIAPI void APIENTRY glColor4iv (const GLint *v);
+WINGDIAPI void APIENTRY glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha);
+WINGDIAPI void APIENTRY glColor4sv (const GLshort *v);
+WINGDIAPI void APIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+WINGDIAPI void APIENTRY glColor4ubv (const GLubyte *v);
+WINGDIAPI void APIENTRY glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha);
+WINGDIAPI void APIENTRY glColor4uiv (const GLuint *v);
+WINGDIAPI void APIENTRY glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha);
+WINGDIAPI void APIENTRY glColor4usv (const GLushort *v);
+WINGDIAPI void APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+WINGDIAPI void APIENTRY glColorMaterial (GLenum face, GLenum mode);
+WINGDIAPI void APIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
+WINGDIAPI void APIENTRY glCopyTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
+WINGDIAPI void APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+WINGDIAPI void APIENTRY glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+WINGDIAPI void APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+WINGDIAPI void APIENTRY glCullFace (GLenum mode);
+WINGDIAPI void APIENTRY glDeleteLists (GLuint list, GLsizei range);
+WINGDIAPI void APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
+WINGDIAPI void APIENTRY glDepthFunc (GLenum func);
+WINGDIAPI void APIENTRY glDepthMask (GLboolean flag);
+WINGDIAPI void APIENTRY glDepthRange (GLclampd zNear, GLclampd zFar);
+WINGDIAPI void APIENTRY glDisable (GLenum cap);
+WINGDIAPI void APIENTRY glDisableClientState (GLenum array);
+WINGDIAPI void APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
+WINGDIAPI void APIENTRY glDrawBuffer (GLenum mode);
+WINGDIAPI void APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
+WINGDIAPI void APIENTRY glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+WINGDIAPI void APIENTRY glEdgeFlag (GLboolean flag);
+WINGDIAPI void APIENTRY glEdgeFlagPointer (GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glEdgeFlagv (const GLboolean *flag);
+WINGDIAPI void APIENTRY glEnable (GLenum cap);
+WINGDIAPI void APIENTRY glEnableClientState (GLenum array);
+WINGDIAPI void APIENTRY glEnd (void);
+WINGDIAPI void APIENTRY glEndList (void);
+WINGDIAPI void APIENTRY glEvalCoord1d (GLdouble u);
+WINGDIAPI void APIENTRY glEvalCoord1dv (const GLdouble *u);
+WINGDIAPI void APIENTRY glEvalCoord1f (GLfloat u);
+WINGDIAPI void APIENTRY glEvalCoord1fv (const GLfloat *u);
+WINGDIAPI void APIENTRY glEvalCoord2d (GLdouble u, GLdouble v);
+WINGDIAPI void APIENTRY glEvalCoord2dv (const GLdouble *u);
+WINGDIAPI void APIENTRY glEvalCoord2f (GLfloat u, GLfloat v);
+WINGDIAPI void APIENTRY glEvalCoord2fv (const GLfloat *u);
+WINGDIAPI void APIENTRY glEvalMesh1 (GLenum mode, GLint i1, GLint i2);
+WINGDIAPI void APIENTRY glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
+WINGDIAPI void APIENTRY glEvalPoint1 (GLint i);
+WINGDIAPI void APIENTRY glEvalPoint2 (GLint i, GLint j);
+WINGDIAPI void APIENTRY glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer);
+WINGDIAPI void APIENTRY glFinish (void);
+WINGDIAPI void APIENTRY glFlush (void);
+WINGDIAPI void APIENTRY glFogf (GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glFogfv (GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glFogi (GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glFogiv (GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glFrontFace (GLenum mode);
+WINGDIAPI void APIENTRY glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+WINGDIAPI GLuint APIENTRY glGenLists (GLsizei range);
+WINGDIAPI void APIENTRY glGenTextures (GLsizei n, GLuint *textures);
+WINGDIAPI void APIENTRY glGetBooleanv (GLenum pname, GLboolean *params);
+WINGDIAPI void APIENTRY glGetClipPlane (GLenum plane, GLdouble *equation);
+WINGDIAPI void APIENTRY glGetDoublev (GLenum pname, GLdouble *params);
+WINGDIAPI GLenum APIENTRY glGetError (void);
+WINGDIAPI void APIENTRY glGetFloatv (GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetIntegerv (GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetLightiv (GLenum light, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetMapdv (GLenum target, GLenum query, GLdouble *v);
+WINGDIAPI void APIENTRY glGetMapfv (GLenum target, GLenum query, GLfloat *v);
+WINGDIAPI void APIENTRY glGetMapiv (GLenum target, GLenum query, GLint *v);
+WINGDIAPI void APIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetMaterialiv (GLenum face, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetPixelMapfv (GLenum map, GLfloat *values);
+WINGDIAPI void APIENTRY glGetPixelMapuiv (GLenum map, GLuint *values);
+WINGDIAPI void APIENTRY glGetPixelMapusv (GLenum map, GLushort *values);
+WINGDIAPI void APIENTRY glGetPointerv (GLenum pname, GLvoid* *params);
+WINGDIAPI void APIENTRY glGetPolygonStipple (GLubyte *mask);
+WINGDIAPI const GLubyte * APIENTRY glGetString (GLenum name);
+WINGDIAPI void APIENTRY glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetTexEnviv (GLenum target, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params);
+WINGDIAPI void APIENTRY glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetTexGeniv (GLenum coord, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+WINGDIAPI void APIENTRY glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glHint (GLenum target, GLenum mode);
+WINGDIAPI void APIENTRY glIndexMask (GLuint mask);
+WINGDIAPI void APIENTRY glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glIndexd (GLdouble c);
+WINGDIAPI void APIENTRY glIndexdv (const GLdouble *c);
+WINGDIAPI void APIENTRY glIndexf (GLfloat c);
+WINGDIAPI void APIENTRY glIndexfv (const GLfloat *c);
+WINGDIAPI void APIENTRY glIndexi (GLint c);
+WINGDIAPI void APIENTRY glIndexiv (const GLint *c);
+WINGDIAPI void APIENTRY glIndexs (GLshort c);
+WINGDIAPI void APIENTRY glIndexsv (const GLshort *c);
+WINGDIAPI void APIENTRY glIndexub (GLubyte c);
+WINGDIAPI void APIENTRY glIndexubv (const GLubyte *c);
+WINGDIAPI void APIENTRY glInitNames (void);
+WINGDIAPI void APIENTRY glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI GLboolean APIENTRY glIsEnabled (GLenum cap);
+WINGDIAPI GLboolean APIENTRY glIsList (GLuint list);
+WINGDIAPI GLboolean APIENTRY glIsTexture (GLuint texture);
+WINGDIAPI void APIENTRY glLightModelf (GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glLightModelfv (GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glLightModeli (GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glLightModeliv (GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glLightf (GLenum light, GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glLighti (GLenum light, GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glLightiv (GLenum light, GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glLineStipple (GLint factor, GLushort pattern);
+WINGDIAPI void APIENTRY glLineWidth (GLfloat width);
+WINGDIAPI void APIENTRY glListBase (GLuint base);
+WINGDIAPI void APIENTRY glLoadIdentity (void);
+WINGDIAPI void APIENTRY glLoadMatrixd (const GLdouble *m);
+WINGDIAPI void APIENTRY glLoadMatrixf (const GLfloat *m);
+WINGDIAPI void APIENTRY glLoadName (GLuint name);
+WINGDIAPI void APIENTRY glLogicOp (GLenum opcode);
+WINGDIAPI void APIENTRY glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
+WINGDIAPI void APIENTRY glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
+WINGDIAPI void APIENTRY glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
+WINGDIAPI void APIENTRY glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
+WINGDIAPI void APIENTRY glMapGrid1d (GLint un, GLdouble u1, GLdouble u2);
+WINGDIAPI void APIENTRY glMapGrid1f (GLint un, GLfloat u1, GLfloat u2);
+WINGDIAPI void APIENTRY glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
+WINGDIAPI void APIENTRY glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
+WINGDIAPI void APIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glMateriali (GLenum face, GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glMaterialiv (GLenum face, GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glMatrixMode (GLenum mode);
+WINGDIAPI void APIENTRY glMultMatrixd (const GLdouble *m);
+WINGDIAPI void APIENTRY glMultMatrixf (const GLfloat *m);
+WINGDIAPI void APIENTRY glNewList (GLuint list, GLenum mode);
+WINGDIAPI void APIENTRY glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz);
+WINGDIAPI void APIENTRY glNormal3bv (const GLbyte *v);
+WINGDIAPI void APIENTRY glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz);
+WINGDIAPI void APIENTRY glNormal3dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz);
+WINGDIAPI void APIENTRY glNormal3fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glNormal3i (GLint nx, GLint ny, GLint nz);
+WINGDIAPI void APIENTRY glNormal3iv (const GLint *v);
+WINGDIAPI void APIENTRY glNormal3s (GLshort nx, GLshort ny, GLshort nz);
+WINGDIAPI void APIENTRY glNormal3sv (const GLshort *v);
+WINGDIAPI void APIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+WINGDIAPI void APIENTRY glPassThrough (GLfloat token);
+WINGDIAPI void APIENTRY glPixelMapfv (GLenum map, GLsizei mapsize, const GLfloat *values);
+WINGDIAPI void APIENTRY glPixelMapuiv (GLenum map, GLsizei mapsize, const GLuint *values);
+WINGDIAPI void APIENTRY glPixelMapusv (GLenum map, GLsizei mapsize, const GLushort *values);
+WINGDIAPI void APIENTRY glPixelStoref (GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glPixelStorei (GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glPixelTransferf (GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glPixelTransferi (GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glPixelZoom (GLfloat xfactor, GLfloat yfactor);
+WINGDIAPI void APIENTRY glPointSize (GLfloat size);
+WINGDIAPI void APIENTRY glPolygonMode (GLenum face, GLenum mode);
+WINGDIAPI void APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
+WINGDIAPI void APIENTRY glPolygonStipple (const GLubyte *mask);
+WINGDIAPI void APIENTRY glPopAttrib (void);
+WINGDIAPI void APIENTRY glPopClientAttrib (void);
+WINGDIAPI void APIENTRY glPopMatrix (void);
+WINGDIAPI void APIENTRY glPopName (void);
+WINGDIAPI void APIENTRY glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities);
+WINGDIAPI void APIENTRY glPushAttrib (GLbitfield mask);
+WINGDIAPI void APIENTRY glPushClientAttrib (GLbitfield mask);
+WINGDIAPI void APIENTRY glPushMatrix (void);
+WINGDIAPI void APIENTRY glPushName (GLuint name);
+WINGDIAPI void APIENTRY glRasterPos2d (GLdouble x, GLdouble y);
+WINGDIAPI void APIENTRY glRasterPos2dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glRasterPos2f (GLfloat x, GLfloat y);
+WINGDIAPI void APIENTRY glRasterPos2fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glRasterPos2i (GLint x, GLint y);
+WINGDIAPI void APIENTRY glRasterPos2iv (const GLint *v);
+WINGDIAPI void APIENTRY glRasterPos2s (GLshort x, GLshort y);
+WINGDIAPI void APIENTRY glRasterPos2sv (const GLshort *v);
+WINGDIAPI void APIENTRY glRasterPos3d (GLdouble x, GLdouble y, GLdouble z);
+WINGDIAPI void APIENTRY glRasterPos3dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glRasterPos3f (GLfloat x, GLfloat y, GLfloat z);
+WINGDIAPI void APIENTRY glRasterPos3fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glRasterPos3i (GLint x, GLint y, GLint z);
+WINGDIAPI void APIENTRY glRasterPos3iv (const GLint *v);
+WINGDIAPI void APIENTRY glRasterPos3s (GLshort x, GLshort y, GLshort z);
+WINGDIAPI void APIENTRY glRasterPos3sv (const GLshort *v);
+WINGDIAPI void APIENTRY glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+WINGDIAPI void APIENTRY glRasterPos4dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+WINGDIAPI void APIENTRY glRasterPos4fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glRasterPos4i (GLint x, GLint y, GLint z, GLint w);
+WINGDIAPI void APIENTRY glRasterPos4iv (const GLint *v);
+WINGDIAPI void APIENTRY glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w);
+WINGDIAPI void APIENTRY glRasterPos4sv (const GLshort *v);
+WINGDIAPI void APIENTRY glReadBuffer (GLenum mode);
+WINGDIAPI void APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
+WINGDIAPI void APIENTRY glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
+WINGDIAPI void APIENTRY glRectdv (const GLdouble *v1, const GLdouble *v2);
+WINGDIAPI void APIENTRY glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
+WINGDIAPI void APIENTRY glRectfv (const GLfloat *v1, const GLfloat *v2);
+WINGDIAPI void APIENTRY glRecti (GLint x1, GLint y1, GLint x2, GLint y2);
+WINGDIAPI void APIENTRY glRectiv (const GLint *v1, const GLint *v2);
+WINGDIAPI void APIENTRY glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2);
+WINGDIAPI void APIENTRY glRectsv (const GLshort *v1, const GLshort *v2);
+WINGDIAPI GLint APIENTRY glRenderMode (GLenum mode);
+WINGDIAPI void APIENTRY glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+WINGDIAPI void APIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+WINGDIAPI void APIENTRY glScaled (GLdouble x, GLdouble y, GLdouble z);
+WINGDIAPI void APIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z);
+WINGDIAPI void APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
+WINGDIAPI void APIENTRY glSelectBuffer (GLsizei size, GLuint *buffer);
+WINGDIAPI void APIENTRY glShadeModel (GLenum mode);
+WINGDIAPI void APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
+WINGDIAPI void APIENTRY glStencilMask (GLuint mask);
+WINGDIAPI void APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
+WINGDIAPI void APIENTRY glTexCoord1d (GLdouble s);
+WINGDIAPI void APIENTRY glTexCoord1dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glTexCoord1f (GLfloat s);
+WINGDIAPI void APIENTRY glTexCoord1fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glTexCoord1i (GLint s);
+WINGDIAPI void APIENTRY glTexCoord1iv (const GLint *v);
+WINGDIAPI void APIENTRY glTexCoord1s (GLshort s);
+WINGDIAPI void APIENTRY glTexCoord1sv (const GLshort *v);
+WINGDIAPI void APIENTRY glTexCoord2d (GLdouble s, GLdouble t);
+WINGDIAPI void APIENTRY glTexCoord2dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glTexCoord2f (GLfloat s, GLfloat t);
+WINGDIAPI void APIENTRY glTexCoord2fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glTexCoord2i (GLint s, GLint t);
+WINGDIAPI void APIENTRY glTexCoord2iv (const GLint *v);
+WINGDIAPI void APIENTRY glTexCoord2s (GLshort s, GLshort t);
+WINGDIAPI void APIENTRY glTexCoord2sv (const GLshort *v);
+WINGDIAPI void APIENTRY glTexCoord3d (GLdouble s, GLdouble t, GLdouble r);
+WINGDIAPI void APIENTRY glTexCoord3dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glTexCoord3f (GLfloat s, GLfloat t, GLfloat r);
+WINGDIAPI void APIENTRY glTexCoord3fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glTexCoord3i (GLint s, GLint t, GLint r);
+WINGDIAPI void APIENTRY glTexCoord3iv (const GLint *v);
+WINGDIAPI void APIENTRY glTexCoord3s (GLshort s, GLshort t, GLshort r);
+WINGDIAPI void APIENTRY glTexCoord3sv (const GLshort *v);
+WINGDIAPI void APIENTRY glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+WINGDIAPI void APIENTRY glTexCoord4dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+WINGDIAPI void APIENTRY glTexCoord4fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glTexCoord4i (GLint s, GLint t, GLint r, GLint q);
+WINGDIAPI void APIENTRY glTexCoord4iv (const GLint *v);
+WINGDIAPI void APIENTRY glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q);
+WINGDIAPI void APIENTRY glTexCoord4sv (const GLshort *v);
+WINGDIAPI void APIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glTexGend (GLenum coord, GLenum pname, GLdouble param);
+WINGDIAPI void APIENTRY glTexGendv (GLenum coord, GLenum pname, const GLdouble *params);
+WINGDIAPI void APIENTRY glTexGenf (GLenum coord, GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glTexGeni (GLenum coord, GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glTexGeniv (GLenum coord, GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+WINGDIAPI void APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+WINGDIAPI void APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+WINGDIAPI void APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+WINGDIAPI void APIENTRY glTranslated (GLdouble x, GLdouble y, GLdouble z);
+WINGDIAPI void APIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z);
+WINGDIAPI void APIENTRY glVertex2d (GLdouble x, GLdouble y);
+WINGDIAPI void APIENTRY glVertex2dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glVertex2f (GLfloat x, GLfloat y);
+WINGDIAPI void APIENTRY glVertex2fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glVertex2i (GLint x, GLint y);
+WINGDIAPI void APIENTRY glVertex2iv (const GLint *v);
+WINGDIAPI void APIENTRY glVertex2s (GLshort x, GLshort y);
+WINGDIAPI void APIENTRY glVertex2sv (const GLshort *v);
+WINGDIAPI void APIENTRY glVertex3d (GLdouble x, GLdouble y, GLdouble z);
+WINGDIAPI void APIENTRY glVertex3dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glVertex3f (GLfloat x, GLfloat y, GLfloat z);
+WINGDIAPI void APIENTRY glVertex3fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glVertex3i (GLint x, GLint y, GLint z);
+WINGDIAPI void APIENTRY glVertex3iv (const GLint *v);
+WINGDIAPI void APIENTRY glVertex3s (GLshort x, GLshort y, GLshort z);
+WINGDIAPI void APIENTRY glVertex3sv (const GLshort *v);
+WINGDIAPI void APIENTRY glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+WINGDIAPI void APIENTRY glVertex4dv (const GLdouble *v);
+WINGDIAPI void APIENTRY glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+WINGDIAPI void APIENTRY glVertex4fv (const GLfloat *v);
+WINGDIAPI void APIENTRY glVertex4i (GLint x, GLint y, GLint z, GLint w);
+WINGDIAPI void APIENTRY glVertex4iv (const GLint *v);
+WINGDIAPI void APIENTRY glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w);
+WINGDIAPI void APIENTRY glVertex4sv (const GLshort *v);
+WINGDIAPI void APIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
+
+/* EXT_vertex_array */
+typedef void (APIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i);
+typedef void (APIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);
+typedef void (APIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+typedef void (APIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);
+typedef void (APIENTRY * PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params);
+typedef void (APIENTRY * PFNGLARRAYELEMENTARRAYEXTPROC)(GLenum mode, GLsizei count, const GLvoid* pi);
+
+/* WIN_swap_hint */
+typedef void (APIENTRY * PFNGLADDSWAPHINTRECTWINPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
+
+/* EXT_paletted_texture */
+typedef void (APIENTRY * PFNGLCOLORTABLEEXTPROC)
+ (GLenum target, GLenum internalFormat, GLsizei width, GLenum format,
+ GLenum type, const GLvoid *data);
+typedef void (APIENTRY * PFNGLCOLORSUBTABLEEXTPROC)
+ (GLenum target, GLsizei start, GLsizei count, GLenum format,
+ GLenum type, const GLvoid *data);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEEXTPROC)
+ (GLenum target, GLenum format, GLenum type, GLvoid *data);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)
+ (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)
+ (GLenum target, GLenum pname, GLfloat *params);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __GL_H__ */
+#endif /* __gl_h_ */
diff --git a/public/sdk/inc/gl/glaux.h b/public/sdk/inc/gl/glaux.h
new file mode 100644
index 000000000..3e970db61
--- /dev/null
+++ b/public/sdk/inc/gl/glaux.h
@@ -0,0 +1,373 @@
+/*++ BUILD Version: 0004 // Increment this if a change has global effects
+
+Copyright (c) 1985-95, Microsoft Corporation
+
+Module Name:
+
+ glaux.h
+
+Abstract:
+
+ Procedure declarations, constant definitions and macros for the OpenGL
+ Auxiliary Library.
+
+--*/
+
+#ifndef __GLAUX_H__
+#define __GLAUX_H__
+
+/*
+ * (c) Copyright 1993, Silicon Graphics, Inc.
+ * ALL RIGHTS RESERVED
+ * Permission to use, copy, modify, and distribute this software for
+ * any purpose and without fee is hereby granted, provided that the above
+ * copyright notice appear in all copies and that both the copyright notice
+ * and this permission notice appear in supporting documentation, and that
+ * the name of Silicon Graphics, Inc. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission.
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
+ * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
+ * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
+ * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
+ * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
+ * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
+ * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
+ * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * US Government Users Restricted Rights
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
+ * clause at DFARS 252.227-7013 and/or in similar or successor
+ * clauses in the FAR or the DOD or NASA FAR Supplement.
+ * Unpublished-- rights reserved under the copyright laws of the
+ * United States. Contractor/manufacturer is Silicon Graphics,
+ * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ */
+
+#include <windows.h>
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** ToolKit Window Types
+** In the future, AUX_RGBA may be a combination of both RGB and ALPHA
+*/
+
+#define AUX_RGB 0
+#define AUX_RGBA AUX_RGB
+#define AUX_INDEX 1
+#define AUX_SINGLE 0
+#define AUX_DOUBLE 2
+#define AUX_DIRECT 0
+#define AUX_INDIRECT 4
+
+#define AUX_ACCUM 8
+#define AUX_ALPHA 16
+#define AUX_DEPTH24 32 /* 24-bit depth buffer */
+#define AUX_STENCIL 64
+#define AUX_AUX 128
+#define AUX_DEPTH16 256 /* 16-bit depth buffer */
+#define AUX_FIXED_332_PAL 512
+#define AUX_DEPTH AUX_DEPTH16 /* default is 16-bit depth buffer */
+
+/*
+** Window Masks
+*/
+
+#define AUX_WIND_IS_RGB(x) (((x) & AUX_INDEX) == 0)
+#define AUX_WIND_IS_INDEX(x) (((x) & AUX_INDEX) != 0)
+#define AUX_WIND_IS_SINGLE(x) (((x) & AUX_DOUBLE) == 0)
+#define AUX_WIND_IS_DOUBLE(x) (((x) & AUX_DOUBLE) != 0)
+#define AUX_WIND_IS_INDIRECT(x) (((x) & AUX_INDIRECT) != 0)
+#define AUX_WIND_IS_DIRECT(x) (((x) & AUX_INDIRECT) == 0)
+#define AUX_WIND_HAS_ACCUM(x) (((x) & AUX_ACCUM) != 0)
+#define AUX_WIND_HAS_ALPHA(x) (((x) & AUX_ALPHA) != 0)
+#define AUX_WIND_HAS_DEPTH(x) (((x) & (AUX_DEPTH24 | AUX_DEPTH16)) != 0)
+#define AUX_WIND_HAS_STENCIL(x) (((x) & AUX_STENCIL) != 0)
+#define AUX_WIND_USES_FIXED_332_PAL(x) (((x) & AUX_FIXED_332_PAL) != 0)
+
+/*
+** ToolKit Event Structure
+*/
+
+typedef struct _AUX_EVENTREC {
+ GLint event;
+ GLint data[4];
+} AUX_EVENTREC;
+
+/*
+** ToolKit Event Types
+*/
+#define AUX_EXPOSE 1
+#define AUX_CONFIG 2
+#define AUX_DRAW 4
+#define AUX_KEYEVENT 8
+#define AUX_MOUSEDOWN 16
+#define AUX_MOUSEUP 32
+#define AUX_MOUSELOC 64
+
+/*
+** Toolkit Event Data Indices
+*/
+#define AUX_WINDOWX 0
+#define AUX_WINDOWY 1
+#define AUX_MOUSEX 0
+#define AUX_MOUSEY 1
+#define AUX_MOUSESTATUS 3
+#define AUX_KEY 0
+#define AUX_KEYSTATUS 1
+
+/*
+** ToolKit Event Status Messages
+*/
+#define AUX_LEFTBUTTON 1
+#define AUX_RIGHTBUTTON 2
+#define AUX_MIDDLEBUTTON 4
+#define AUX_SHIFT 1
+#define AUX_CONTROL 2
+
+/*
+** ToolKit Key Codes
+*/
+#define AUX_RETURN 0x0D
+#define AUX_ESCAPE 0x1B
+#define AUX_SPACE 0x20
+#define AUX_LEFT 0x25
+#define AUX_UP 0x26
+#define AUX_RIGHT 0x27
+#define AUX_DOWN 0x28
+#define AUX_A 'A'
+#define AUX_B 'B'
+#define AUX_C 'C'
+#define AUX_D 'D'
+#define AUX_E 'E'
+#define AUX_F 'F'
+#define AUX_G 'G'
+#define AUX_H 'H'
+#define AUX_I 'I'
+#define AUX_J 'J'
+#define AUX_K 'K'
+#define AUX_L 'L'
+#define AUX_M 'M'
+#define AUX_N 'N'
+#define AUX_O 'O'
+#define AUX_P 'P'
+#define AUX_Q 'Q'
+#define AUX_R 'R'
+#define AUX_S 'S'
+#define AUX_T 'T'
+#define AUX_U 'U'
+#define AUX_V 'V'
+#define AUX_W 'W'
+#define AUX_X 'X'
+#define AUX_Y 'Y'
+#define AUX_Z 'Z'
+#define AUX_a 'a'
+#define AUX_b 'b'
+#define AUX_c 'c'
+#define AUX_d 'd'
+#define AUX_e 'e'
+#define AUX_f 'f'
+#define AUX_g 'g'
+#define AUX_h 'h'
+#define AUX_i 'i'
+#define AUX_j 'j'
+#define AUX_k 'k'
+#define AUX_l 'l'
+#define AUX_m 'm'
+#define AUX_n 'n'
+#define AUX_o 'o'
+#define AUX_p 'p'
+#define AUX_q 'q'
+#define AUX_r 'r'
+#define AUX_s 's'
+#define AUX_t 't'
+#define AUX_u 'u'
+#define AUX_v 'v'
+#define AUX_w 'w'
+#define AUX_x 'x'
+#define AUX_y 'y'
+#define AUX_z 'z'
+#define AUX_0 '0'
+#define AUX_1 '1'
+#define AUX_2 '2'
+#define AUX_3 '3'
+#define AUX_4 '4'
+#define AUX_5 '5'
+#define AUX_6 '6'
+#define AUX_7 '7'
+#define AUX_8 '8'
+#define AUX_9 '9'
+
+/*
+** ToolKit Gets and Sets
+*/
+#define AUX_FD 1 /* return fd (long) */
+#define AUX_COLORMAP 3 /* pass buf of r, g and b (unsigned char) */
+#define AUX_GREYSCALEMAP 4
+#define AUX_FOGMAP 5 /* pass fog and color bits (long) */
+#define AUX_ONECOLOR 6 /* pass index, r, g, and b (long) */
+
+/*
+** Color Macros
+*/
+
+#define AUX_BLACK 0
+#define AUX_RED 13
+#define AUX_GREEN 14
+#define AUX_YELLOW 15
+#define AUX_BLUE 16
+#define AUX_MAGENTA 17
+#define AUX_CYAN 18
+#define AUX_WHITE 19
+
+extern float auxRGBMap[20][3];
+
+#define AUX_SETCOLOR(x, y) (AUX_WIND_IS_RGB((x)) ? \
+ glColor3fv(auxRGBMap[(y)]) : glIndexf((y)))
+
+/*
+** RGB Image Structure
+*/
+
+typedef struct _AUX_RGBImageRec {
+ GLint sizeX, sizeY;
+ unsigned char *data;
+} AUX_RGBImageRec;
+
+/*
+** Prototypes
+*/
+
+void APIENTRY auxInitDisplayMode(GLenum);
+void APIENTRY auxInitPosition(int, int, int, int);
+
+/* GLenum APIENTRY auxInitWindow(LPCTSTR); */
+#ifdef UNICODE
+#define auxInitWindow auxInitWindowW
+#else
+#define auxInitWindow auxInitWindowA
+#endif
+GLenum APIENTRY auxInitWindowA(LPCSTR);
+GLenum APIENTRY auxInitWindowW(LPCWSTR);
+
+void APIENTRY auxCloseWindow(void);
+void APIENTRY auxQuit(void);
+void APIENTRY auxSwapBuffers(void);
+
+typedef void (CALLBACK* AUXMAINPROC)(void);
+void APIENTRY auxMainLoop(AUXMAINPROC);
+
+typedef void (CALLBACK* AUXEXPOSEPROC)(int, int);
+void APIENTRY auxExposeFunc(AUXEXPOSEPROC);
+
+typedef void (CALLBACK* AUXRESHAPEPROC)(GLsizei, GLsizei);
+void APIENTRY auxReshapeFunc(AUXRESHAPEPROC);
+
+typedef void (CALLBACK* AUXIDLEPROC)(void);
+void APIENTRY auxIdleFunc(AUXIDLEPROC);
+
+typedef void (CALLBACK* AUXKEYPROC)(void);
+void APIENTRY auxKeyFunc(int, AUXKEYPROC);
+
+typedef void (CALLBACK* AUXMOUSEPROC)(AUX_EVENTREC *);
+void APIENTRY auxMouseFunc(int, int, AUXMOUSEPROC);
+
+int APIENTRY auxGetColorMapSize(void);
+void APIENTRY auxGetMouseLoc(int *, int *);
+void APIENTRY auxSetOneColor(int, float, float, float);
+void APIENTRY auxSetFogRamp(int, int);
+void APIENTRY auxSetGreyRamp(void);
+void APIENTRY auxSetRGBMap(int, float *);
+
+/* AUX_RGBImageRec * APIENTRY auxRGBImageLoad(LPCTSTR); */
+#ifdef UNICODE
+#define auxRGBImageLoad auxRGBImageLoadW
+#else
+#define auxRGBImageLoad auxRGBImageLoadA
+#endif
+AUX_RGBImageRec * APIENTRY auxRGBImageLoadA(LPCSTR);
+AUX_RGBImageRec * APIENTRY auxRGBImageLoadW(LPCWSTR);
+
+#ifdef UNICODE
+#define auxDIBImageLoad auxDIBImageLoadW
+#else
+#define auxDIBImageLoad auxDIBImageLoadA
+#endif
+AUX_RGBImageRec * APIENTRY auxDIBImageLoadA(LPCSTR);
+AUX_RGBImageRec * APIENTRY auxDIBImageLoadW(LPCWSTR);
+
+void APIENTRY auxCreateFont(void);
+/* void APIENTRY auxDrawStr(LPCTSTR); */
+#ifdef UNICODE
+#define auxDrawStr auxDrawStrW
+#else
+#define auxDrawStr auxDrawStrA
+#endif
+void APIENTRY auxDrawStrA(LPCSTR);
+void APIENTRY auxDrawStrW(LPCWSTR);
+
+void APIENTRY auxWireSphere(GLdouble);
+void APIENTRY auxSolidSphere(GLdouble);
+void APIENTRY auxWireCube(GLdouble);
+void APIENTRY auxSolidCube(GLdouble);
+void APIENTRY auxWireBox(GLdouble, GLdouble, GLdouble);
+void APIENTRY auxSolidBox(GLdouble, GLdouble, GLdouble);
+void APIENTRY auxWireTorus(GLdouble, GLdouble);
+void APIENTRY auxSolidTorus(GLdouble, GLdouble);
+void APIENTRY auxWireCylinder(GLdouble, GLdouble);
+void APIENTRY auxSolidCylinder(GLdouble, GLdouble);
+void APIENTRY auxWireIcosahedron(GLdouble);
+void APIENTRY auxSolidIcosahedron(GLdouble);
+void APIENTRY auxWireOctahedron(GLdouble);
+void APIENTRY auxSolidOctahedron(GLdouble);
+void APIENTRY auxWireTetrahedron(GLdouble);
+void APIENTRY auxSolidTetrahedron(GLdouble);
+void APIENTRY auxWireDodecahedron(GLdouble);
+void APIENTRY auxSolidDodecahedron(GLdouble);
+void APIENTRY auxWireCone(GLdouble, GLdouble);
+void APIENTRY auxSolidCone(GLdouble, GLdouble);
+void APIENTRY auxWireTeapot(GLdouble);
+void APIENTRY auxSolidTeapot(GLdouble);
+
+/*
+** Window specific functions
+** hwnd, hdc, and hglrc valid after auxInitWindow()
+*/
+HWND APIENTRY auxGetHWND(void);
+HDC APIENTRY auxGetHDC(void);
+HGLRC APIENTRY auxGetHGLRC(void);
+
+/*
+** Viewperf support functions and constants
+*/
+/* Display Mode Selection Criteria */
+enum {
+ AUX_USE_ID = 1,
+ AUX_EXACT_MATCH,
+ AUX_MINIMUM_CRITERIA
+};
+void APIENTRY auxInitDisplayModePolicy(GLenum);
+GLenum APIENTRY auxInitDisplayModeID(GLint);
+GLenum APIENTRY auxGetDisplayModePolicy(void);
+GLint APIENTRY auxGetDisplayModeID(void);
+GLenum APIENTRY auxGetDisplayMode(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __GLAUX_H__ */
diff --git a/public/sdk/inc/gl/glu.h b/public/sdk/inc/gl/glu.h
new file mode 100644
index 000000000..bf8a6f63d
--- /dev/null
+++ b/public/sdk/inc/gl/glu.h
@@ -0,0 +1,584 @@
+/*++ BUILD Version: 0004 // Increment this if a change has global effects
+
+Copyright (c) 1985-95, Microsoft Corporation
+
+Module Name:
+
+ glu.h
+
+Abstract:
+
+ Procedure declarations, constant definitions and macros for the OpenGL
+ Utility Library.
+
+--*/
+
+#ifndef __glu_h__
+#ifndef __GLU_H__
+
+#define __glu_h__
+#define __GLU_H__
+
+#include <GL/gl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Copyright 1991-1993, Silicon Graphics, Inc.
+** All Rights Reserved.
+**
+** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
+** the contents of this file may not be disclosed to third parties, copied or
+** duplicated in any form, in whole or in part, without the prior written
+** permission of Silicon Graphics, Inc.
+**
+** RESTRICTED RIGHTS LEGEND:
+** Use, duplication or disclosure by the Government is subject to restrictions
+** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
+** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
+** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
+** rights reserved under the Copyright Laws of the United States.
+*/
+
+/*
+** Return the error string associated with a particular error code.
+** This will return 0 for an invalid error code.
+**
+** The generic function prototype that can be compiled for ANSI or Unicode
+** is defined as follows:
+**
+** LPCTSTR APIENTRY gluErrorStringWIN (GLenum errCode);
+*/
+#ifdef UNICODE
+#define gluErrorStringWIN(errCode) ((LPCSTR) gluErrorUnicodeStringEXT(errCode))
+#else
+#define gluErrorStringWIN(errCode) ((LPCWSTR) gluErrorString(errCode))
+#endif
+
+const GLubyte* APIENTRY gluErrorString (
+ GLenum errCode);
+
+const wchar_t* APIENTRY gluErrorUnicodeStringEXT (
+ GLenum errCode);
+
+const GLubyte* APIENTRY gluGetString (
+ GLenum name);
+
+void APIENTRY gluOrtho2D (
+ GLdouble left,
+ GLdouble right,
+ GLdouble bottom,
+ GLdouble top);
+
+void APIENTRY gluPerspective (
+ GLdouble fovy,
+ GLdouble aspect,
+ GLdouble zNear,
+ GLdouble zFar);
+
+void APIENTRY gluPickMatrix (
+ GLdouble x,
+ GLdouble y,
+ GLdouble width,
+ GLdouble height,
+ GLint viewport[4]);
+
+void APIENTRY gluLookAt (
+ GLdouble eyex,
+ GLdouble eyey,
+ GLdouble eyez,
+ GLdouble centerx,
+ GLdouble centery,
+ GLdouble centerz,
+ GLdouble upx,
+ GLdouble upy,
+ GLdouble upz);
+
+int APIENTRY gluProject (
+ GLdouble objx,
+ GLdouble objy,
+ GLdouble objz,
+ const GLdouble modelMatrix[16],
+ const GLdouble projMatrix[16],
+ const GLint viewport[4],
+ GLdouble *winx,
+ GLdouble *winy,
+ GLdouble *winz);
+
+int APIENTRY gluUnProject (
+ GLdouble winx,
+ GLdouble winy,
+ GLdouble winz,
+ const GLdouble modelMatrix[16],
+ const GLdouble projMatrix[16],
+ const GLint viewport[4],
+ GLdouble *objx,
+ GLdouble *objy,
+ GLdouble *objz);
+
+
+int APIENTRY gluScaleImage (
+ GLenum format,
+ GLint widthin,
+ GLint heightin,
+ GLenum typein,
+ const void *datain,
+ GLint widthout,
+ GLint heightout,
+ GLenum typeout,
+ void *dataout);
+
+
+int APIENTRY gluBuild1DMipmaps (
+ GLenum target,
+ GLint components,
+ GLint width,
+ GLenum format,
+ GLenum type,
+ const void *data);
+
+int APIENTRY gluBuild2DMipmaps (
+ GLenum target,
+ GLint components,
+ GLint width,
+ GLint height,
+ GLenum format,
+ GLenum type,
+ const void *data);
+
+#ifdef __cplusplus
+
+class GLUnurbs;
+class GLUquadric;
+class GLUtesselator;
+
+/* backwards compatibility: */
+typedef class GLUnurbs GLUnurbsObj;
+typedef class GLUquadric GLUquadricObj;
+typedef class GLUtesselator GLUtesselatorObj;
+typedef class GLUtesselator GLUtriangulatorObj;
+
+#else
+
+typedef struct GLUnurbs GLUnurbs;
+typedef struct GLUquadric GLUquadric;
+typedef struct GLUtesselator GLUtesselator;
+
+/* backwards compatibility: */
+typedef struct GLUnurbs GLUnurbsObj;
+typedef struct GLUquadric GLUquadricObj;
+typedef struct GLUtesselator GLUtesselatorObj;
+typedef struct GLUtesselator GLUtriangulatorObj;
+
+#endif
+
+
+GLUquadric* APIENTRY gluNewQuadric (void);
+void APIENTRY gluDeleteQuadric (
+ GLUquadric *state);
+
+void APIENTRY gluQuadricNormals (
+ GLUquadric *quadObject,
+ GLenum normals);
+
+void APIENTRY gluQuadricTexture (
+ GLUquadric *quadObject,
+ GLboolean textureCoords);
+
+void APIENTRY gluQuadricOrientation (
+ GLUquadric *quadObject,
+ GLenum orientation);
+
+void APIENTRY gluQuadricDrawStyle (
+ GLUquadric *quadObject,
+ GLenum drawStyle);
+
+void APIENTRY gluCylinder (
+ GLUquadric *qobj,
+ GLdouble baseRadius,
+ GLdouble topRadius,
+ GLdouble height,
+ GLint slices,
+ GLint stacks);
+
+void APIENTRY gluDisk (
+ GLUquadric *qobj,
+ GLdouble innerRadius,
+ GLdouble outerRadius,
+ GLint slices,
+ GLint loops);
+
+void APIENTRY gluPartialDisk (
+ GLUquadric *qobj,
+ GLdouble innerRadius,
+ GLdouble outerRadius,
+ GLint slices,
+ GLint loops,
+ GLdouble startAngle,
+ GLdouble sweepAngle);
+
+void APIENTRY gluSphere (
+ GLUquadric *qobj,
+ GLdouble radius,
+ GLint slices,
+ GLint stacks);
+
+void APIENTRY gluQuadricCallback (
+ GLUquadric *qobj,
+ GLenum which,
+ void (CALLBACK* fn)());
+
+GLUtesselator* APIENTRY gluNewTess(
+ void );
+
+void APIENTRY gluDeleteTess(
+ GLUtesselator *tess );
+
+void APIENTRY gluTessBeginPolygon(
+ GLUtesselator *tess,
+ void *polygon_data );
+
+void APIENTRY gluTessBeginContour(
+ GLUtesselator *tess );
+
+void APIENTRY gluTessVertex(
+ GLUtesselator *tess,
+ GLdouble coords[3],
+ void *data );
+
+void APIENTRY gluTessEndContour(
+ GLUtesselator *tess );
+
+void APIENTRY gluTessEndPolygon(
+ GLUtesselator *tess );
+
+void APIENTRY gluTessProperty(
+ GLUtesselator *tess,
+ GLenum which,
+ GLdouble value );
+
+void APIENTRY gluTessNormal(
+ GLUtesselator *tess,
+ GLdouble x,
+ GLdouble y,
+ GLdouble z );
+
+void APIENTRY gluTessCallback(
+ GLUtesselator *tess,
+ GLenum which,
+ void (CALLBACK *fn)());
+
+void APIENTRY gluGetTessProperty(
+ GLUtesselator *tess,
+ GLenum which,
+ GLdouble *value );
+
+GLUnurbs* APIENTRY gluNewNurbsRenderer (void);
+
+void APIENTRY gluDeleteNurbsRenderer (
+ GLUnurbs *nobj);
+
+void APIENTRY gluBeginSurface (
+ GLUnurbs *nobj);
+
+void APIENTRY gluBeginCurve (
+ GLUnurbs *nobj);
+
+void APIENTRY gluEndCurve (
+ GLUnurbs *nobj);
+
+void APIENTRY gluEndSurface (
+ GLUnurbs *nobj);
+
+void APIENTRY gluBeginTrim (
+ GLUnurbs *nobj);
+
+void APIENTRY gluEndTrim (
+ GLUnurbs *nobj);
+
+void APIENTRY gluPwlCurve (
+ GLUnurbs *nobj,
+ GLint count,
+ GLfloat *array,
+ GLint stride,
+ GLenum type);
+
+void APIENTRY gluNurbsCurve (
+ GLUnurbs *nobj,
+ GLint nknots,
+ GLfloat *knot,
+ GLint stride,
+ GLfloat *ctlarray,
+ GLint order,
+ GLenum type);
+
+void APIENTRY
+gluNurbsSurface(
+ GLUnurbs *nobj,
+ GLint sknot_count,
+ float *sknot,
+ GLint tknot_count,
+ GLfloat *tknot,
+ GLint s_stride,
+ GLint t_stride,
+ GLfloat *ctlarray,
+ GLint sorder,
+ GLint torder,
+ GLenum type);
+
+void APIENTRY
+gluLoadSamplingMatrices (
+ GLUnurbs *nobj,
+ const GLfloat modelMatrix[16],
+ const GLfloat projMatrix[16],
+ const GLint viewport[4] );
+
+void APIENTRY
+gluNurbsProperty (
+ GLUnurbs *nobj,
+ GLenum property,
+ GLfloat value );
+
+void APIENTRY
+gluGetNurbsProperty (
+ GLUnurbs *nobj,
+ GLenum property,
+ GLfloat *value );
+
+void APIENTRY
+gluNurbsCallback (
+ GLUnurbs *nobj,
+ GLenum which,
+ void (CALLBACK* fn)() );
+
+
+/**** Callback function prototypes ****/
+
+/* gluQuadricCallback */
+typedef void (CALLBACK* GLUquadricErrorProc) (GLenum);
+
+/* gluTessCallback */
+typedef void (CALLBACK* GLUtessBeginProc) (GLenum);
+typedef void (CALLBACK* GLUtessEdgeFlagProc) (GLboolean);
+typedef void (CALLBACK* GLUtessVertexProc) (void *);
+typedef void (CALLBACK* GLUtessEndProc) (void);
+typedef void (CALLBACK* GLUtessErrorProc) (GLenum);
+typedef void (CALLBACK* GLUtessCombineProc) (GLdouble[3],
+ void*[4],
+ GLfloat[4],
+ void** );
+typedef void (CALLBACK* GLUtessBeginDataProc) (GLenum, void *);
+typedef void (CALLBACK* GLUtessEdgeFlagDataProc) (GLboolean, void *);
+typedef void (CALLBACK* GLUtessVertexDataProc) (void *, void *);
+typedef void (CALLBACK* GLUtessEndDataProc) (void *);
+typedef void (CALLBACK* GLUtessErrorDataProc) (GLenum, void *);
+typedef void (CALLBACK* GLUtessCombineDataProc) (GLdouble[3],
+ void*[4],
+ GLfloat[4],
+ void**,
+ void* );
+
+/* gluNurbsCallback */
+typedef void (CALLBACK* GLUnurbsErrorProc) (GLenum);
+
+
+/**** Generic constants ****/
+
+/* Version */
+#define GLU_VERSION_1_1 1
+#define GLU_VERSION_1_2 1
+
+/* Errors: (return value 0 = no error) */
+#define GLU_INVALID_ENUM 100900
+#define GLU_INVALID_VALUE 100901
+#define GLU_OUT_OF_MEMORY 100902
+#define GLU_INCOMPATIBLE_GL_VERSION 100903
+
+/* StringName */
+#define GLU_VERSION 100800
+#define GLU_EXTENSIONS 100801
+
+/* Boolean */
+#define GLU_TRUE GL_TRUE
+#define GLU_FALSE GL_FALSE
+
+
+/**** Quadric constants ****/
+
+/* QuadricNormal */
+#define GLU_SMOOTH 100000
+#define GLU_FLAT 100001
+#define GLU_NONE 100002
+
+/* QuadricDrawStyle */
+#define GLU_POINT 100010
+#define GLU_LINE 100011
+#define GLU_FILL 100012
+#define GLU_SILHOUETTE 100013
+
+/* QuadricOrientation */
+#define GLU_OUTSIDE 100020
+#define GLU_INSIDE 100021
+
+/* Callback types: */
+/* GLU_ERROR 100103 */
+
+
+/**** Tesselation constants ****/
+
+#define GLU_TESS_MAX_COORD 1.0e150
+
+/* TessProperty */
+#define GLU_TESS_WINDING_RULE 100140
+#define GLU_TESS_BOUNDARY_ONLY 100141
+#define GLU_TESS_TOLERANCE 100142
+
+/* TessWinding */
+#define GLU_TESS_WINDING_ODD 100130
+#define GLU_TESS_WINDING_NONZERO 100131
+#define GLU_TESS_WINDING_POSITIVE 100132
+#define GLU_TESS_WINDING_NEGATIVE 100133
+#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
+
+/* TessCallback */
+#define GLU_TESS_BEGIN 100100 /* void (CALLBACK*)(GLenum type) */
+#define GLU_TESS_VERTEX 100101 /* void (CALLBACK*)(void *data) */
+#define GLU_TESS_END 100102 /* void (CALLBACK*)(void) */
+#define GLU_TESS_ERROR 100103 /* void (CALLBACK*)(GLenum errno) */
+#define GLU_TESS_EDGE_FLAG 100104 /* void (CALLBACK*)(GLboolean boundaryEdge) */
+#define GLU_TESS_COMBINE 100105 /* void (CALLBACK*)(GLdouble coords[3],
+ void *data[4],
+ GLfloat weight[4],
+ void **dataOut) */
+#define GLU_TESS_BEGIN_DATA 100106 /* void (CALLBACK*)(GLenum type,
+ void *polygon_data) */
+#define GLU_TESS_VERTEX_DATA 100107 /* void (CALLBACK*)(void *data,
+ void *polygon_data) */
+#define GLU_TESS_END_DATA 100108 /* void (CALLBACK*)(void *polygon_data) */
+#define GLU_TESS_ERROR_DATA 100109 /* void (CALLBACK*)(GLenum errno,
+ void *polygon_data) */
+#define GLU_TESS_EDGE_FLAG_DATA 100110 /* void (CALLBACK*)(GLboolean boundaryEdge,
+ void *polygon_data) */
+#define GLU_TESS_COMBINE_DATA 100111 /* void (CALLBACK*)(GLdouble coords[3],
+ void *data[4],
+ GLfloat weight[4],
+ void **dataOut,
+ void *polygon_data) */
+
+/* TessError */
+#define GLU_TESS_ERROR1 100151
+#define GLU_TESS_ERROR2 100152
+#define GLU_TESS_ERROR3 100153
+#define GLU_TESS_ERROR4 100154
+#define GLU_TESS_ERROR5 100155
+#define GLU_TESS_ERROR6 100156
+#define GLU_TESS_ERROR7 100157
+#define GLU_TESS_ERROR8 100158
+
+#define GLU_TESS_MISSING_BEGIN_POLYGON GLU_TESS_ERROR1
+#define GLU_TESS_MISSING_BEGIN_CONTOUR GLU_TESS_ERROR2
+#define GLU_TESS_MISSING_END_POLYGON GLU_TESS_ERROR3
+#define GLU_TESS_MISSING_END_CONTOUR GLU_TESS_ERROR4
+#define GLU_TESS_COORD_TOO_LARGE GLU_TESS_ERROR5
+#define GLU_TESS_NEED_COMBINE_CALLBACK GLU_TESS_ERROR6
+
+/**** NURBS constants ****/
+
+/* NurbsProperty */
+#define GLU_AUTO_LOAD_MATRIX 100200
+#define GLU_CULLING 100201
+#define GLU_SAMPLING_TOLERANCE 100203
+#define GLU_DISPLAY_MODE 100204
+#define GLU_PARAMETRIC_TOLERANCE 100202
+#define GLU_SAMPLING_METHOD 100205
+#define GLU_U_STEP 100206
+#define GLU_V_STEP 100207
+
+/* NurbsSampling */
+#define GLU_PATH_LENGTH 100215
+#define GLU_PARAMETRIC_ERROR 100216
+#define GLU_DOMAIN_DISTANCE 100217
+
+
+/* NurbsTrim */
+#define GLU_MAP1_TRIM_2 100210
+#define GLU_MAP1_TRIM_3 100211
+
+/* NurbsDisplay */
+/* GLU_FILL 100012 */
+#define GLU_OUTLINE_POLYGON 100240
+#define GLU_OUTLINE_PATCH 100241
+
+/* NurbsCallback */
+/* GLU_ERROR 100103 */
+
+/* NurbsErrors */
+#define GLU_NURBS_ERROR1 100251
+#define GLU_NURBS_ERROR2 100252
+#define GLU_NURBS_ERROR3 100253
+#define GLU_NURBS_ERROR4 100254
+#define GLU_NURBS_ERROR5 100255
+#define GLU_NURBS_ERROR6 100256
+#define GLU_NURBS_ERROR7 100257
+#define GLU_NURBS_ERROR8 100258
+#define GLU_NURBS_ERROR9 100259
+#define GLU_NURBS_ERROR10 100260
+#define GLU_NURBS_ERROR11 100261
+#define GLU_NURBS_ERROR12 100262
+#define GLU_NURBS_ERROR13 100263
+#define GLU_NURBS_ERROR14 100264
+#define GLU_NURBS_ERROR15 100265
+#define GLU_NURBS_ERROR16 100266
+#define GLU_NURBS_ERROR17 100267
+#define GLU_NURBS_ERROR18 100268
+#define GLU_NURBS_ERROR19 100269
+#define GLU_NURBS_ERROR20 100270
+#define GLU_NURBS_ERROR21 100271
+#define GLU_NURBS_ERROR22 100272
+#define GLU_NURBS_ERROR23 100273
+#define GLU_NURBS_ERROR24 100274
+#define GLU_NURBS_ERROR25 100275
+#define GLU_NURBS_ERROR26 100276
+#define GLU_NURBS_ERROR27 100277
+#define GLU_NURBS_ERROR28 100278
+#define GLU_NURBS_ERROR29 100279
+#define GLU_NURBS_ERROR30 100280
+#define GLU_NURBS_ERROR31 100281
+#define GLU_NURBS_ERROR32 100282
+#define GLU_NURBS_ERROR33 100283
+#define GLU_NURBS_ERROR34 100284
+#define GLU_NURBS_ERROR35 100285
+#define GLU_NURBS_ERROR36 100286
+#define GLU_NURBS_ERROR37 100287
+
+/**** Backwards compatibility for old tesselator ****/
+
+void APIENTRY gluBeginPolygon( GLUtesselator *tess );
+
+void APIENTRY gluNextContour( GLUtesselator *tess,
+ GLenum type );
+
+void APIENTRY gluEndPolygon( GLUtesselator *tess );
+
+/* Contours types -- obsolete! */
+#define GLU_CW 100120
+#define GLU_CCW 100121
+#define GLU_INTERIOR 100122
+#define GLU_EXTERIOR 100123
+#define GLU_UNKNOWN 100124
+
+/* Names without "TESS_" prefix */
+#define GLU_BEGIN GLU_TESS_BEGIN
+#define GLU_VERTEX GLU_TESS_VERTEX
+#define GLU_END GLU_TESS_END
+#define GLU_ERROR GLU_TESS_ERROR
+#define GLU_EDGE_FLAG GLU_TESS_EDGE_FLAG
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __GLU_H__ */
+#endif /* __glu_h__ */
diff --git a/public/sdk/inc/gluon.h b/public/sdk/inc/gluon.h
new file mode 100644
index 000000000..0c0dc3ee2
--- /dev/null
+++ b/public/sdk/inc/gluon.h
@@ -0,0 +1,166 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1994.
+//
+// File: gluon.h
+//
+// Contents: Gluon data structure definitions
+//
+// History: 16-Mar-94 MikeSe Created
+//
+// Description:
+//
+// This file contains all the structure definitions related to
+// gluons. It is constructed in such a way that it can be #included
+// in an IDL file and that the resultant MIDL-generated H file will
+// not interfere when both are included, regardless of order.
+//
+//----------------------------------------------------------------------------
+
+#ifndef __GLUON_H__
+#define __GLUON_H__
+
+// Handy macro for decoration with MIDL attributes
+#if defined(MIDL_PASS)
+# define MIDL_DECL(x) x
+# define MIDL_QUOTE(x) cpp_quote(x)
+#else
+# define MIDL_DECL(x)
+# define MIDL_QUOTE(x)
+#endif
+
+MIDL_QUOTE("#ifndef __GLUON_H__")
+MIDL_QUOTE("#define __GLUON_H__")
+
+// TDI transport address structure. We do not define this if tdi.h has
+// already been included.
+
+MIDL_QUOTE("#if !defined(_TDI_USER_)")
+#if !defined(_TDI_USER_)
+
+typedef struct _TA_ADDRESS {
+ USHORT AddressLength; // length in bytes of Address[] in this
+ USHORT AddressType; // type of this address
+# if defined(MIDL_PASS)
+ [size_is(AddressLength)] UCHAR Address[];
+# else
+ UCHAR Address[1]; // actually AddressLength bytes long
+# endif
+} TA_ADDRESS;
+
+#endif
+MIDL_QUOTE("#endif")
+
+// Note that you must include tdi.h (first) if you need the AddressType
+// constant definitions.
+
+// DS_TRANSPORT, with RPC and File protocol modifiers
+
+typedef struct _DS_TRANSPORT
+{
+ USHORT usFileProtocol;
+ USHORT iPrincipal;
+ USHORT grfModifiers;
+ TA_ADDRESS taddr;
+} DS_TRANSPORT, *PDS_TRANSPORT;
+
+// The real size of a DS_TRANSPORT where AddressLength == 0. Need to
+// subtract off 2 UCHARs to take into account padding.
+#define DS_TRANSPORT_SIZE (sizeof(DS_TRANSPORT) - 2*sizeof(UCHAR))
+MIDL_QUOTE("#define DS_TRANSPORT_SIZE (sizeof(DS_TRANSPORT) - 2*sizeof(UCHAR))")
+
+// File protocol identifiers
+
+#if defined(MIDL_PASS)
+
+const USHORT FSP_NONE = 0; // file access not supported
+const USHORT FSP_SMB = 1; // SMB (ie: LanMan redirector)
+const USHORT FSP_NCP = 2; // Netware Core Protocol (Netware requestor)
+const USHORT FSP_NFS = 3; // Sun NFS protocol
+const USHORT FSP_VINES = 4; // Banyan Vines
+const USHORT FSP_AFS = 5; // Andrews File System
+const USHORT FSP_DCE = 6; // DCE Andrews File System
+
+#else
+
+#define FSP_NONE 0
+#define FSP_SMB 1
+#define FSP_NCP 2
+#define FSP_NFS 3
+#define FSP_VINES 4
+#define FSP_AFS 5
+#define FSP_DCE 6
+
+#endif
+
+// RPC modifiers
+
+#if defined(MIDL_PASS)
+
+const USHORT DST_RPC_CN = 0x0001; // supports a connection-oriented (ncacn_...)
+ // RPC protocol for this transport.
+const USHORT DST_RPC_DG = 0x0002; // supports a connectionless (ncadg_...)
+ // RPC protocol for this transport.
+const USHORT DST_RPC_NB_XNS = 0x0004; // ncacn_nb_xns protocol is supported
+const USHORT DST_RPC_NB_NB = 0x0008; // ncacn_nb_nb protocol is supported
+const USHORT DST_RPC_NB_IPX = 0x0010; // ncacn_nb_ipx protocol is supported
+const USHORT DST_RPC_NB_TCP = 0x0020; // ncacn_nb_tcp protocol is supported
+
+#else
+
+#define DST_RPC_CN 0x0001
+#define DST_RPC_DG 0x0002
+#define DST_RPC_NB_XNS 0x0004
+#define DST_RPC_NB_NB 0x0008
+#define DST_RPC_NB_IPX 0x0010
+#define DST_RPC_NB_TCP 0x0020
+
+#endif
+
+// DS_MACHINE
+
+typedef MIDL_DECL([string]) WCHAR * PNAME;
+
+typedef struct _DS_MACHINE
+{
+ GUID guidSite;
+ GUID guidMachine;
+ ULONG grfFlags;
+ MIDL_DECL([string]) LPWSTR pwszShareName;
+ ULONG cPrincipals;
+ MIDL_DECL([size_is(cPrincipals)]) PNAME *prgpwszPrincipals;
+ ULONG cTransports;
+# if defined(MIDL_PASS)
+ [size_is(cTransports)] PDS_TRANSPORT rpTrans[];
+# else
+ PDS_TRANSPORT rpTrans[1];
+# endif
+} DS_MACHINE, *PDS_MACHINE;
+
+// The real size of a DS_MACHINE in which cTransports == 0
+#define DS_MACHINE_SIZE (sizeof(DS_MACHINE) - sizeof(PDS_TRANSPORT))
+MIDL_QUOTE("#define DS_MACHINE_SIZE (sizeof(DS_MACHINE) - sizeof(PDS_TRANSPORT))")
+
+// DS_GLUON
+
+typedef struct _DS_GLUON
+{
+ GUID guidThis;
+ MIDL_DECL([string]) LPWSTR pwszName;
+ ULONG grfFlags;
+ ULONG cMachines;
+# if defined(MIDL_PASS)
+ [size_is(cMachines)] PDS_MACHINE rpMachines[];
+# else
+ PDS_MACHINE rpMachines[1];
+# endif
+} DS_GLUON, *PDS_GLUON;
+
+// The real size of a DS_GLUON in which cMachines == 0
+#define DS_GLUON_SIZE (sizeof(DS_GLUON) - sizeof(PDS_MACHINE))
+MIDL_QUOTE("#define DS_GLUON_SIZE (sizeof(DS_GLUON) - sizeof(PDS_MACHINE))")
+
+MIDL_QUOTE("#endif")
+
+#endif // of ifndef __GLUON_H__
diff --git a/public/sdk/inc/grpcpy.hxx b/public/sdk/inc/grpcpy.hxx
new file mode 100644
index 000000000..fb9422b28
--- /dev/null
+++ b/public/sdk/inc/grpcpy.hxx
@@ -0,0 +1,22 @@
+typedef DWORD HCOPY;
+
+DWORD StartGroupCopy(HCOPY *phCopy);
+
+BOOL CopyFileExW(LPWSTR lpszExistingFile,
+ LPWSTR lpszNewFile,
+ BOOL fFailIfExists,
+ HCOPY hCopy);
+
+BOOL CopyFileExA(LPSTR lpszExistingFile,
+ LPSTR lpszNewFile,
+ BOOL fFailIfExists,
+ HCOPY hCopy);
+
+DWORD EndGroupCopy(HCOPY hCopy, BOOL fUpdate);
+
+#ifdef UNICODE
+#define CopyFileEx CopyFileExW
+#else
+#define CopyFileEx CopyFileExA
+#endif
+
diff --git a/public/sdk/inc/httpext.h b/public/sdk/inc/httpext.h
new file mode 100644
index 000000000..c6fff59ec
--- /dev/null
+++ b/public/sdk/inc/httpext.h
@@ -0,0 +1,222 @@
+/********
+*
+* Copyright (c) 1995 Process Software Corporation
+*
+* Copyright (c) 1995-1996 Microsoft Corporation
+*
+*
+* Module Name : HttpExt.h
+*
+* Abstract :
+*
+* This module contains the structure definitions and prototypes for the
+* version 2.0 HTTP Server Extension interface.
+*
+******************/
+
+#ifndef _HTTPEXT_H_
+#define _HTTPEXT_H_
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define HSE_VERSION_MAJOR 2 // major version of this spec
+#define HSE_VERSION_MINOR 0 // minor version of this spec
+#define HSE_LOG_BUFFER_LEN 80
+#define HSE_MAX_EXT_DLL_NAME_LEN 256
+
+typedef LPVOID HCONN;
+
+// the following are the status codes returned by the Extension DLL
+
+#define HSE_STATUS_SUCCESS 1
+#define HSE_STATUS_SUCCESS_AND_KEEP_CONN 2
+#define HSE_STATUS_PENDING 3
+#define HSE_STATUS_ERROR 4
+
+// The following are the values to request services with the ServerSupportFunction.
+// Values from 0 to 1000 are reserved for future versions of the interface
+
+#define HSE_REQ_BASE 0
+#define HSE_REQ_SEND_URL_REDIRECT_RESP ( HSE_REQ_BASE + 1 )
+#define HSE_REQ_SEND_URL ( HSE_REQ_BASE + 2 )
+#define HSE_REQ_SEND_RESPONSE_HEADER ( HSE_REQ_BASE + 3 )
+#define HSE_REQ_DONE_WITH_SESSION ( HSE_REQ_BASE + 4 )
+#define HSE_REQ_END_RESERVED 1000
+
+//
+// These are Microsoft specific extensions
+//
+
+#define HSE_REQ_MAP_URL_TO_PATH (HSE_REQ_END_RESERVED+1)
+#define HSE_REQ_GET_SSPI_INFO (HSE_REQ_END_RESERVED+2)
+#define HSE_APPEND_LOG_PARAMETER (HSE_REQ_END_RESERVED+3)
+#define HSE_REQ_SEND_URL_EX (HSE_REQ_END_RESERVED+4)
+#define HSE_REQ_IO_COMPLETION (HSE_REQ_END_RESERVED+5)
+#define HSE_REQ_TRANSMIT_FILE (HSE_REQ_END_RESERVED+6)
+#define HSE_REQ_REFRESH_ISAPI_ACL (HSE_REQ_END_RESERVED+7)
+
+//
+// Bit Flags for TerminateExtension
+//
+// HSE_TERM_ADVISORY_UNLOAD - Server wants to unload the extension,
+// extension can return TRUE if OK, FALSE if the server should not
+// unload the extension
+//
+// HSE_TERM_MUST_UNLOAD - Server indicating the extension is about to be
+// unloaded, the extension cannot refuse.
+//
+
+#define HSE_TERM_ADVISORY_UNLOAD 0x00000001
+#define HSE_TERM_MUST_UNLOAD 0x00000002
+
+
+//
+// Flags for IO Functions, supported for IO Funcs.
+// TF means ServerSupportFunction( HSE_REQ_TRANSMIT_FILE)
+//
+
+# define HSE_IO_SYNC 0x00000001 // for WriteClient
+# define HSE_IO_ASYNC 0x00000002 // for WriteClient/TF
+# define HSE_IO_DISCONNECT_AFTER_SEND 0x00000004 // for TF
+# define HSE_IO_SEND_HEADERS 0x00000008 // for TF
+
+
+
+//
+// passed to GetExtensionVersion
+//
+
+typedef struct _HSE_VERSION_INFO {
+
+ DWORD dwExtensionVersion;
+ CHAR lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN];
+
+} HSE_VERSION_INFO, *LPHSE_VERSION_INFO;
+
+
+
+
+//
+// passed to extension procedure on a new request
+//
+typedef struct _EXTENSION_CONTROL_BLOCK {
+
+ DWORD cbSize; // size of this struct.
+ DWORD dwVersion; // version info of this spec
+ HCONN ConnID; // Context number not to be modified!
+ DWORD dwHttpStatusCode; // HTTP Status code
+ CHAR lpszLogData[HSE_LOG_BUFFER_LEN];// null terminated log info specific to this Extension DLL
+
+ LPSTR lpszMethod; // REQUEST_METHOD
+ LPSTR lpszQueryString; // QUERY_STRING
+ LPSTR lpszPathInfo; // PATH_INFO
+ LPSTR lpszPathTranslated; // PATH_TRANSLATED
+
+ DWORD cbTotalBytes; // Total bytes indicated from client
+ DWORD cbAvailable; // Available number of bytes
+ LPBYTE lpbData; // pointer to cbAvailable bytes
+
+ LPSTR lpszContentType; // Content type of client data
+
+ BOOL (WINAPI * GetServerVariable) ( HCONN hConn,
+ LPSTR lpszVariableName,
+ LPVOID lpvBuffer,
+ LPDWORD lpdwSize );
+
+ BOOL (WINAPI * WriteClient) ( HCONN ConnID,
+ LPVOID Buffer,
+ LPDWORD lpdwBytes,
+ DWORD dwReserved );
+
+ BOOL (WINAPI * ReadClient) ( HCONN ConnID,
+ LPVOID lpvBuffer,
+ LPDWORD lpdwSize );
+
+ BOOL (WINAPI * ServerSupportFunction)( HCONN hConn,
+ DWORD dwHSERRequest,
+ LPVOID lpvBuffer,
+ LPDWORD lpdwSize,
+ LPDWORD lpdwDataType );
+
+} EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;
+
+//
+// these are the prototypes that must be exported from the extension DLL
+//
+
+BOOL WINAPI GetExtensionVersion( HSE_VERSION_INFO *pVer );
+DWORD WINAPI HttpExtensionProc( EXTENSION_CONTROL_BLOCK *pECB );
+BOOL WINAPI TerminateExtension( DWORD dwFlags );
+
+// the following type declarations is for the server side
+
+typedef BOOL (WINAPI * PFN_GETEXTENSIONVERSION)( HSE_VERSION_INFO *pVer );
+typedef DWORD (WINAPI * PFN_HTTPEXTENSIONPROC )( EXTENSION_CONTROL_BLOCK *pECB );
+typedef BOOL (WINAPI * PFN_TERMINATEEXTENSION )( DWORD dwFlags );
+
+typedef VOID
+ (WINAPI * PFN_HSE_IO_COMPLETION)(
+ IN EXTENSION_CONTROL_BLOCK * pECB,
+ IN PVOID pContext,
+ IN DWORD cbIO,
+ IN DWORD dwError
+ );
+
+
+
+
+//
+// HSE_TF_INFO defines the type for HTTP SERVER EXTENSION support for
+// ISAPI applications to send files using TransmitFile.
+// A pointer to this object should be used with ServerSupportFunction()
+// for HSE_REQ_TRANSMIT_FILE.
+//
+
+typedef struct _HSE_TF_INFO {
+
+ //
+ // callback and context information
+ // the callback function will be called when IO is completed.
+ // the context specified will be used during such callback.
+ //
+ // These values (if non-NULL) will override the one set by calling
+ // ServerSupportFunction() with HSE_REQ_IO_COMPLETION
+ //
+ PFN_HSE_IO_COMPLETION pfnHseIO;
+ PVOID pContext;
+
+ // file should have been opened with FILE_FLAG_SEQUENTIAL_SCAN
+ HANDLE hFile;
+
+ //
+ // HTTP header and status code
+ // These fields are used only if HSE_IO_SEND_HEADERS is present in dwFlags
+ //
+
+ LPCSTR pszStatusCode; // HTTP Status Code eg: "200 OK"
+
+ DWORD BytesToWrite; // special value of "0" means write entire file.
+ DWORD Offset; // offset value within the file to start from
+
+ PVOID pHead; // Head buffer to be sent before file data
+ DWORD HeadLength; // header length
+ PVOID pTail; // Tail buffer to be sent after file data
+ DWORD TailLength; // tail length
+
+ DWORD dwFlags; // includes HSE_IO_DISCONNECT_AFTER_SEND, ...
+
+} HSE_TF_INFO, * LPHSE_TF_INFO;
+
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // end definition _HTTPEXT_H_
diff --git a/public/sdk/inc/httpfilt.h b/public/sdk/inc/httpfilt.h
new file mode 100644
index 000000000..5613c150c
--- /dev/null
+++ b/public/sdk/inc/httpfilt.h
@@ -0,0 +1,471 @@
+/*++
+
+Copyright (c) 1995-1996 Microsoft Corporation
+
+Module Name:
+
+ httpfilt.h
+
+Abstract:
+
+ This module contains the Microsoft HTTP filter extension info
+
+Revision History:
+
+--*/
+
+#ifndef _HTTPFILT_H_
+#define _HTTPFILT_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Current version of the filter spec is 2.0
+//
+
+#define HTTP_FILTER_REVISION MAKELONG( 0, 2);
+
+#define SF_MAX_USERNAME (256+1)
+#define SF_MAX_PASSWORD (256+1)
+
+#define SF_MAX_FILTER_DESC_LEN (256+1)
+
+//
+// These values can be used with the pfnSFCallback function supplied in
+// the filter context structure
+//
+
+enum SF_REQ_TYPE
+{
+ //
+ // Sends a complete HTTP server response header including
+ // the status, server version, message time and MIME version.
+ //
+ // Server extensions should append other information at the end,
+ // such as Content-type, Content-length etc followed by an extra
+ // '\r\n'.
+ //
+ // pData - Zero terminated string pointing to optional
+ // status string (i.e., "401 Access Denied") or NULL for
+ // the default response of "200 OK".
+ //
+ // ul1 - Zero terminated string pointing to optional data to be
+ // appended and set with the header. If NULL, the header will
+ // be terminated with an empty line.
+ //
+
+ SF_REQ_SEND_RESPONSE_HEADER,
+
+ //
+ // If the server denies the HTTP request, add the specified headers
+ // to the server error response.
+ //
+ // This allows an authentication filter to advertise its services
+ // w/o filtering every request. Generally the headers will be
+ // WWW-Authenticate headers with custom authentication schemes but
+ // no restriction is placed on what headers may be specified.
+ //
+ // pData - Zero terminated string pointing to one or more header lines
+ // with terminating '\r\n'.
+ //
+
+ SF_REQ_ADD_HEADERS_ON_DENIAL,
+
+ //
+ // Only used by raw data filters that return SF_STATUS_READ_NEXT
+ //
+ // ul1 - size in bytes for the next read
+ //
+
+ SF_REQ_SET_NEXT_READ_SIZE,
+
+ //
+ // Used to indicate this request is a proxy request
+ //
+ // ul1 - The proxy flags to set
+ // 0x00000001 - This is a HTTP proxy request
+ //
+ //
+
+ SF_REQ_SET_PROXY_INFO,
+
+ //
+ // Returns the connection ID contained in the ConnID field of an
+ // ISAPI Application's Extension Control Block. This value can be used
+ // as a key to cooridinate shared data between Filters and Applications.
+ //
+ // pData - Pointer to DWORD that receives the connection ID.
+ //
+
+ SF_REQ_GET_CONNID
+};
+
+
+//
+// These values are returned by the filter entry point when a new request is
+// received indicating their interest in this particular request
+//
+
+enum SF_STATUS_TYPE
+{
+ //
+ // The filter has handled the HTTP request. The server should disconnect
+ // the session.
+ //
+
+ SF_STATUS_REQ_FINISHED = 0x8000000,
+
+ //
+ // Same as SF_STATUS_FINISHED except the server should keep the TCP
+ // session open if the option was negotiated
+ //
+
+ SF_STATUS_REQ_FINISHED_KEEP_CONN,
+
+ //
+ // The next filter in the notification chain should be called
+ //
+
+ SF_STATUS_REQ_NEXT_NOTIFICATION,
+
+ //
+ // This filter handled the notification. No other handles should be
+ // called for this particular notification type
+ //
+
+ SF_STATUS_REQ_HANDLED_NOTIFICATION,
+
+ //
+ // An error occurred. The server should use GetLastError() and indicate
+ // the error to the client
+ //
+
+ SF_STATUS_REQ_ERROR,
+
+ //
+ // The filter is an opaque stream filter and we're negotiating the
+ // session parameters. Only valid for raw read notification.
+ //
+
+ SF_STATUS_REQ_READ_NEXT
+};
+
+//
+// pvNotification points to this structure for all request notification types
+//
+
+typedef struct _HTTP_FILTER_CONTEXT
+{
+ DWORD cbSize;
+
+ //
+ // This is the structure revision level.
+ //
+
+ DWORD Revision;
+
+ //
+ // Private context information for the server.
+ //
+
+ PVOID ServerContext;
+ DWORD ulReserved;
+
+ //
+ // TRUE if this request is coming over a secure port
+ //
+
+ BOOL fIsSecurePort;
+
+ //
+ // A context that can be used by the filter
+ //
+
+ PVOID pFilterContext;
+
+ //
+ // Server callbacks
+ //
+
+ BOOL (WINAPI * GetServerVariable) (
+ struct _HTTP_FILTER_CONTEXT * pfc,
+ LPSTR lpszVariableName,
+ LPVOID lpvBuffer,
+ LPDWORD lpdwSize
+ );
+
+ BOOL (WINAPI * AddResponseHeaders) (
+ struct _HTTP_FILTER_CONTEXT * pfc,
+ LPSTR lpszHeaders,
+ DWORD dwReserved
+ );
+
+ BOOL (WINAPI * WriteClient) (
+ struct _HTTP_FILTER_CONTEXT * pfc,
+ LPVOID Buffer,
+ LPDWORD lpdwBytes,
+ DWORD dwReserved
+ );
+
+ VOID * (WINAPI * AllocMem) (
+ struct _HTTP_FILTER_CONTEXT * pfc,
+ DWORD cbSize,
+ DWORD dwReserved
+ );
+
+ BOOL (WINAPI * ServerSupportFunction) (
+ struct _HTTP_FILTER_CONTEXT * pfc,
+ enum SF_REQ_TYPE sfReq,
+ PVOID pData,
+ DWORD ul1,
+ DWORD ul2
+ );
+
+} HTTP_FILTER_CONTEXT, *PHTTP_FILTER_CONTEXT;
+
+//
+// This structure is the notification info for the read and send raw data
+// notification types
+//
+
+typedef struct _HTTP_FILTER_RAW_DATA
+{
+ //
+ // This is a pointer to the data for the filter to process.
+ //
+
+ PVOID pvInData;
+ DWORD cbInData; // Number of valid data bytes
+ DWORD cbInBuffer; // Total size of buffer
+
+ DWORD dwReserved;
+
+} HTTP_FILTER_RAW_DATA, *PHTTP_FILTER_RAW_DATA;
+
+//
+// This structure is the notification info for when the server is about to
+// process the client headers
+//
+
+typedef struct _HTTP_FILTER_PREPROC_HEADERS
+{
+ //
+ // Retrieves the specified header value. Header names should include
+ // the trailing ':'. The special values 'method', 'url' and 'version'
+ // can be used to retrieve the individual portions of the request line
+ //
+
+ BOOL (WINAPI * GetHeader) (
+ struct _HTTP_FILTER_CONTEXT * pfc,
+ LPSTR lpszName,
+ LPVOID lpvBuffer,
+ LPDWORD lpdwSize
+ );
+
+ //
+ // Replaces this header value to the specified value. To delete a header,
+ // specified a value of '\0'.
+ //
+
+ BOOL (WINAPI * SetHeader) (
+ struct _HTTP_FILTER_CONTEXT * pfc,
+ LPSTR lpszName,
+ LPSTR lpszValue
+ );
+
+ //
+ // Adds the specified header and value
+ //
+
+ BOOL (WINAPI * AddHeader) (
+ struct _HTTP_FILTER_CONTEXT * pfc,
+ LPSTR lpszName,
+ LPSTR lpszValue
+ );
+
+ DWORD dwReserved;
+} HTTP_FILTER_PREPROC_HEADERS, *PHTTP_FILTER_PREPROC_HEADERS;
+
+//
+// Authentication information for this request.
+//
+
+typedef struct _HTTP_FILTER_AUTHENT
+{
+ //
+ // Pointer to username and password, empty strings for the anonymous user
+ //
+ // Client's can overwrite these buffers which are guaranteed to be at
+ // least SF_MAX_USERNAME and SF_MAX_PASSWORD bytes large.
+ //
+
+ CHAR * pszUser;
+ DWORD cbUserBuff;
+
+ CHAR * pszPassword;
+ DWORD cbPasswordBuff;
+
+} HTTP_FILTER_AUTHENT, *PHTTP_FILTER_AUTHENT;
+
+//
+// Indicates the server is going to use the specific physical mapping for
+// the specified URL. Filters can modify the physical path in place.
+//
+
+typedef struct _HTTP_FILTER_URL_MAP
+{
+ const CHAR * pszURL;
+
+ CHAR * pszPhysicalPath;
+ DWORD cbPathBuff;
+
+} HTTP_FILTER_URL_MAP, *PHTTP_FILTER_URL_MAP;
+
+//
+// Bitfield indicating the requested resource has been denied by the server due
+// to a logon failure, an ACL on a resource, an ISAPI Filter or an
+// ISAPI Application/CGI Application.
+//
+// SF_DENIED_BY_CONFIG can appear with SF_DENIED_LOGON if the server
+// configuration did not allow the user to logon.
+//
+
+#define SF_DENIED_LOGON 0x00000001
+#define SF_DENIED_RESOURCE 0x00000002
+#define SF_DENIED_FILTER 0x00000004
+#define SF_DENIED_APPLICATION 0x00000008
+
+#define SF_DENIED_BY_CONFIG 0x00010000
+
+typedef struct _HTTP_FILTER_ACCESS_DENIED
+{
+ const CHAR * pszURL; // Requesting URL
+ const CHAR * pszPhysicalPath; // Physical path of resource
+ DWORD dwReason; // Bitfield of SF_DENIED flags
+
+} HTTP_FILTER_ACCESS_DENIED, *PHTTP_FILTER_ACCESS_DENIED;
+
+//
+// The log information about to be written to the server log file. The
+// string pointers can be replaced but the memory must remain valid until
+// the next notification
+//
+
+typedef struct _HTTP_FILTER_LOG
+{
+ const CHAR * pszClientHostName;
+ const CHAR * pszClientUserName;
+ const CHAR * pszServerName;
+ const CHAR * pszOperation;
+ const CHAR * pszTarget;
+ const CHAR * pszParameters;
+
+ DWORD dwHttpStatus;
+ DWORD dwWin32Status;
+
+} HTTP_FILTER_LOG, *PHTTP_FILTER_LOG;
+
+//
+// Notification Flags
+//
+// SF_NOTIFY_SECURE_PORT
+// SF_NOTIFY_NONSECURE_PORT
+//
+// Indicates whether the application wants to be notified for transactions
+// that are happenning on the server port(s) that support data encryption
+// (such as PCT and SSL), on only the non-secure port(s) or both.
+//
+// SF_NOTIFY_READ_RAW_DATA
+//
+// Applications are notified after the server reads a block of memory
+// from the client but before the server does any processing on the
+// block. The data block may contain HTTP headers and entity data.
+//
+//
+//
+
+#define SF_NOTIFY_SECURE_PORT 0x00000001
+#define SF_NOTIFY_NONSECURE_PORT 0x00000002
+
+#define SF_NOTIFY_READ_RAW_DATA 0x00008000
+#define SF_NOTIFY_PREPROC_HEADERS 0x00004000
+#define SF_NOTIFY_AUTHENTICATION 0x00002000
+#define SF_NOTIFY_URL_MAP 0x00001000
+#define SF_NOTIFY_ACCESS_DENIED 0x00000800
+#define SF_NOTIFY_SEND_RAW_DATA 0x00000400
+#define SF_NOTIFY_LOG 0x00000200
+#define SF_NOTIFY_END_OF_NET_SESSION 0x00000100
+
+//
+// Filter ordering flags
+//
+// Filters will tend to be notified by their specified
+// ordering. For ties, notification order is determined by load order.
+//
+// SF_NOTIFY_ORDER_HIGH - Authentication or data transformation filters
+// SF_NOTIFY_ORDER_MEDIUM
+// SF_NOTIFY_ORDER_LOW - Logging filters that want the results of any other
+// filters might specify this order.
+//
+
+#define SF_NOTIFY_ORDER_HIGH 0x00080000
+#define SF_NOTIFY_ORDER_MEDIUM 0x00040000
+#define SF_NOTIFY_ORDER_LOW 0x00020000
+#define SF_NOTIFY_ORDER_DEFAULT SF_NOTIFY_ORDER_LOW
+
+#define SF_NOTIFY_ORDER_MASK (SF_NOTIFY_ORDER_HIGH | \
+ SF_NOTIFY_ORDER_MEDIUM | \
+ SF_NOTIFY_ORDER_LOW)
+
+//
+// Filter version information, passed to GetFilterVersion
+//
+
+typedef struct _HTTP_FILTER_VERSION
+{
+ //
+ // Version of the spec the server is using
+ //
+
+ DWORD dwServerFilterVersion;
+
+ //
+ // Fields specified by the client
+ //
+
+ DWORD dwFilterVersion;
+ CHAR lpszFilterDesc[SF_MAX_FILTER_DESC_LEN];
+ DWORD dwFlags;
+
+
+} HTTP_FILTER_VERSION, *PHTTP_FILTER_VERSION;
+
+//
+// A filter DLL's entry point looks like this. The return code should be
+// an SF_STATUS_TYPE
+//
+// NotificationType - Type of notification
+// pvNotification - Pointer to notification specific data
+//
+
+DWORD
+WINAPI
+HttpFilterProc(
+ HTTP_FILTER_CONTEXT * pfc,
+ DWORD NotificationType,
+ VOID * pvNotification
+ );
+
+BOOL
+WINAPI
+GetFilterVersion(
+ HTTP_FILTER_VERSION * pVer
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_HTTPFILT_H_
diff --git a/public/sdk/inc/icmpapi.h b/public/sdk/inc/icmpapi.h
new file mode 100644
index 000000000..1682e3b0f
--- /dev/null
+++ b/public/sdk/inc/icmpapi.h
@@ -0,0 +1,152 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ icmpapi.h
+
+Abstract:
+
+ Declarations for the Win32 ICMP Echo request API.
+
+Author:
+
+ Portable Systems Group 30-December-1993
+
+Revision History:
+
+
+Notes:
+
+--*/
+
+#ifndef _ICMP_INCLUDED_
+#define _ICMP_INCLUDED_
+
+
+//
+// Exported Routines.
+//
+
+//++
+//
+// Routine Name:
+//
+// IcmpCreateFile
+//
+// Routine Description:
+//
+// Opens a handle on which ICMP Echo Requests can be issued.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// An open file handle or INVALID_HANDLE_VALUE. Extended error information
+// is available by calling GetLastError().
+//
+//--
+
+HANDLE
+WINAPI
+IcmpCreateFile(
+ VOID
+ );
+
+
+//++
+//
+// Routine Name:
+//
+// IcmpCloseHandle
+//
+// Routine Description:
+//
+// Closes a handle opened by ICMPOpenFile.
+//
+// Arguments:
+//
+// IcmpHandle - The handle to close.
+//
+// Return Value:
+//
+// TRUE if the handle was closed successfully, otherwise FALSE. Extended
+// error information is available by calling GetLastError().
+//
+//--
+
+BOOL
+WINAPI
+IcmpCloseHandle(
+ HANDLE IcmpHandle
+ );
+
+
+
+//++
+//
+// Routine Name:
+//
+// IcmpSendEcho
+//
+// Routine Description:
+//
+// Sends an ICMP Echo request and returns any replies. The
+// call returns when the timeout has expired or the reply buffer
+// is filled.
+//
+// Arguments:
+//
+// IcmpHandle - An open handle returned by ICMPCreateFile.
+//
+// DestinationAddress - The destination of the echo request.
+//
+// RequestData - A buffer containing the data to send in the
+// request.
+//
+// RequestSize - The number of bytes in the request data buffer.
+//
+// RequestOptions - Pointer to the IP header options for the request.
+// May be NULL.
+//
+// ReplyBuffer - A buffer to hold any replies to the request.
+// On return, the buffer will contain an array of
+// ICMP_ECHO_REPLY structures followed by the
+// options and data for the replies. The buffer
+// should be large enough to hold at least one
+// ICMP_ECHO_REPLY structure plus
+// MAX(RequestSize, 8) bytes of data since an ICMP
+// error message contains 8 bytes of data.
+//
+// ReplySize - The size in bytes of the reply buffer.
+//
+// Timeout - The time in milliseconds to wait for replies.
+//
+// Return Value:
+//
+// Returns the number of ICMP_ECHO_REPLY structures stored in ReplyBuffer.
+// The status of each reply is contained in the structure. If the return
+// value is zero, extended error information is available via
+// GetLastError().
+//
+//--
+
+DWORD
+WINAPI
+IcmpSendEcho(
+ HANDLE IcmpHandle,
+ IPAddr DestinationAddress,
+ LPVOID RequestData,
+ WORD RequestSize,
+ PIP_OPTION_INFORMATION RequestOptions,
+ LPVOID ReplyBuffer,
+ DWORD ReplySize,
+ DWORD Timeout
+ );
+
+
+#endif // _ICMP_INCLUDED_
+
diff --git a/public/sdk/inc/icntnr.h b/public/sdk/inc/icntnr.h
new file mode 100644
index 000000000..fb3434111
--- /dev/null
+++ b/public/sdk/inc/icntnr.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: icntnr.h
+//
+// Contents: Replacement for icntnr.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/ilink.hxx b/public/sdk/inc/ilink.hxx
new file mode 100644
index 000000000..0a2a32bfa
--- /dev/null
+++ b/public/sdk/inc/ilink.hxx
@@ -0,0 +1,53 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1991 - 1992.
+//
+// File: ilink.hxx
+//
+// Contents: Declarations exposed by link tracking to other parts of Cairo.
+//
+// Classes:
+//
+// History: 7-Jan-93 BillMo Created.
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+
+#ifndef __ILINK_HXX__
+#define __ILINK_HXX__
+
+class IBindFeedback : public IUnknown
+{
+public:
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject) = 0;
+ virtual ULONG STDMETHODCALLTYPE AddRef(VOID) = 0;
+ virtual ULONG STDMETHODCALLTYPE Release(VOID) = 0;
+
+ virtual BOOL STDMETHODCALLTYPE DoneLocalSearch(VOID) = 0;
+ virtual VOID STDMETHODCALLTYPE NotifySearchScope(const WCHAR *pwszVolumeName) = 0;
+ virtual VOID STDMETHODCALLTYPE NotifySearchResult(const WCHAR *pwszVolumeName, HRESULT hr) = 0;
+ virtual BOOL STDMETHODCALLTYPE IsCancelled(VOID) = 0;
+ virtual VOID STDMETHODCALLTYPE NotifySearchDone(const WCHAR *pwszFound) = 0;
+};
+
+HRESULT MoveObjectId(IStorage *pstgSrc, IStorage *pstgDest);
+
+//
+// Error codes (HRESULT)0x800815C0 to 0x800815FF are internal
+// to cairo.
+//
+
+#define LINK_E_SEARCH_TIMEOUT_EXPIRED ((HRESULT)0x800815C0)
+#define LINK_E_SEARCH_ABORTED ((HRESULT)0x800815C1)
+#define LINK_E_STREAM_CORRUPT ((HRESULT)0x800815C2)
+
+#ifndef LINK_E_INVALID_COPY_GROUP_HANDLE
+#define LINK_E_INVALID_COPY_GROUP_HANDLE ((HRESULT)0x800815C3)
+#endif
+
+#define LINK_E_BAD_MONIKER_IMPLEMENTATION ((HRESULT)0x800815C4)
+
+#endif
+
diff --git a/public/sdk/inc/ilinkp.hxx b/public/sdk/inc/ilinkp.hxx
new file mode 100644
index 000000000..7229f9f13
--- /dev/null
+++ b/public/sdk/inc/ilinkp.hxx
@@ -0,0 +1,424 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: ilinkp.hxx
+//
+// Contents: Declarations PRIVATE to link tracking code across
+// multiple Cairo projects.
+// Do not use these declarations without first contacting
+// the current owner of this file.
+//
+// Classes: CTracker -- base for all tracking links
+// COleTrackingLink -- base for shell and ole links
+// COleLinkTrackingLink -- tracking for IOleLink def link
+// COleShellTrackingLink -- tracking for shell ref
+//
+// Functions:
+//
+// History: 07-Aug-93 BillMo Created.
+//
+// Note: Id's of source are retrieved only when the source is bound to.
+//
+//--------------------------------------------------------------------------
+
+#ifndef __ILINKP_HXX__
+#define __ILINKP_HXX__
+
+#include <lnkobjid.hxx>
+
+#define ELEMENTS(x) (sizeof(x)/sizeof((x)[0]))
+#define WCHARS(x) ELEMENTS(x)
+#define ALIGN8(cb) (((cb-1) & (~7)) + 8)
+
+#define WCH_COMP_SEPARATOR L'\\'
+#define WCH_ROOT_SEPARATOR L':'
+
+#define USER_REGISTRY_ROOT L"SoftWare\\Microsoft\\LinkSearch"
+#define ABSOLUTE_MAX_AUTO 64 // volumes in auto searchlist
+#define DEFAULT_MAX_AUTO 10
+#define MAX_BROADCASTS 10
+#define BROADCAST_REPLY_WAIT 300
+
+#define DEFAULT_GROVEL_MONIKER_SIZE 1024
+
+// new (ExceptOnFail) SFindObjectOut [FSCTL_OUT_BUFFER_SIZE];
+#define FSCTL_OUT_BUFFER_SIZE 10
+
+//
+// treepatcher won't allow paths > MAX_DOS_NETWORK_PATH
+//
+#define MAX_DOS_NETWORK_PATH 384
+#define MAX_NT_HEADER 20
+#define MAX_NT_NETWORK_PATH (MAX_DOS_NETWORK_PATH + MAX_NT_HEADER)
+
+#define MAX_EMBEDDINGLEVELS 40
+
+#define TREECOPY_PAGESIZE 4096
+#define TREEPATCHER_SIG LONGSIG('h','c','p','y')
+
+
+
+class CVolume;
+class CSearchContext;
+class CEmbeddedMonikers;
+
+//--------------------------------------------------------------------------
+//
+// Currently private definitions that may become public.
+//
+//--------------------------------------------------------------------------
+
+typedef DWORD HCOPY;
+
+//--------------------------------------------------------------------------
+//
+// Private error codes.
+//
+//--------------------------------------------------------------------------
+
+#if !defined(LNK_NO_OLE2)
+
+//
+// Error codes (HRESULT)0x80081580 to 0x800815bf are internal
+// to link tracking.
+//
+
+//
+// Generated by CVolume::FindObject to indicate the volume was
+// not even searched.
+//
+#define LINKP_E_VOLUME_NOT_SEARCHED ((HRESULT)0x80081580)
+
+//
+// Generated by objectid.cxx::ReadObjectId(IPropertyStorage*,OBJECTID*)
+// as an internal error to GetObjectId.
+//
+#define LINKP_E_NOSUCHPROPERTY ((HRESULT)0x80081581)
+
+//
+// Generated by CVolume::FindObject to indicate that the volume was
+// successfully contacted, but no object with matching id was found.
+//
+#define LINKP_E_VOLUME_SEARCHED_OBJECT_NOT_FOUND ((HRESULT)0x80081582)
+
+//
+// Used in failure testing
+//
+#define LINKP_E_FAILTEST ((HRESULT)0x80081583)
+
+//
+// Returned by ReplaceFileMoniker if there is no file moniker to replace.
+//
+#define LINKP_E_NOFILEMONIKER ((HRESULT)0x80081584)
+
+//
+// IEnumMoniker::Next returned S_FALSE immediately after IMoniker::Enum
+// was called successfully.
+//
+#define LINKP_E_NOMONIKERS ((HRESULT)0x80081585)
+
+//
+// Couldn't rebuild moniker to pseudo-object because there
+// weren't enough monikers in the enumeration.
+//
+#define LINKP_E_RANGE_INACCESSIBLE ((HRESULT) 0x80081586)
+
+//
+// The path passed to CPathWalker was too long (i.e. absolute moniker
+// path name too long.)
+//
+#define LINKP_E_INVALID_PATH ((HRESULT) 0x80081587)
+
+//
+// The ancestor was not found by CPathWalker
+//
+#define LINKP_E_ANCESTOR_NOT_FOUND ((HRESULT) 0x80081588)
+
+//
+// No object which is the only object with matching lineage and
+// last component of name
+//
+#define LINKP_E_NOLINEAGEMATCH ((HRESULT) 0x80081589)
+
+//
+// No object exactly matches the id
+//
+#define LINKP_E_NOEXACTMATCH ((HRESULT) 0x80081589)
+
+//
+// No monikers in IMoniker::Enum
+//
+#define LINKP_E_ENUMEMPTY ((HRESULT) 0x8008158a)
+
+//
+// Too many nesting levels
+//
+#define LINKP_E_TOOMANYEMBEDDINGLEVELS ((HRESULT) 0x8008158b)
+
+//
+// Used when throwing exceptions due to not enough memory
+//
+#define LINK_E_NOT_ENOUGH_MEMORY \
+ (HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY))
+
+#endif // !defined(LNK_NO_OLE2)
+
+//--------------------------------------------------------------------------
+//
+// Defines for tracker object serialized form
+//
+//--------------------------------------------------------------------------
+
+#define SHELLMK_SIG 0x0033
+#define OLEMK_SIG 0x0022
+#define MAX_LINK_EXPANSION 262144
+
+#define LINK_FLAG_DOMAINID 0x00000001
+#define LINK_FLAG_VOLUMEID 0x00000002
+#define LINK_FLAG_OBJECTID 0x00000004
+
+//--------------------------------------------------------------------------
+//
+// Function predeclarations
+//
+//--------------------------------------------------------------------------
+
+void UpdateAutoSearchList(void);
+
+//--------------------------------------------------------------------------
+//
+// Functions used by DRT.
+//
+//--------------------------------------------------------------------------
+
+const WCHAR *ObjectIdToString(const OBJECTID &oid);
+
+//+-------------------------------------------------------------------------
+//
+// Class: DFSID
+//
+// Purpose: Encapsulate specifics of DFS domain and volume ids.
+//
+//--------------------------------------------------------------------------
+
+class DFSID
+{
+public:
+ DFSID()
+ {
+ Invalidate();
+ }
+ VOID Invalidate(VOID)
+ {
+ memset(&g, 0, sizeof(g));
+ }
+ operator GUID ()
+ {
+ return(g);
+ }
+ operator GUID * ()
+ {
+ return(&g);
+ }
+ operator == (const DFSID &other)
+ {
+ return(0 == memcmp(&g, &other.g, sizeof(g)));
+ }
+ BOOL IsValid(VOID)
+ {
+ DFSID i;
+
+ return(i != *this);
+ }
+private:
+ GUID g;
+};
+
+typedef DFSID DOMAINID;
+typedef DFSID VOLUMEID;
+
+//+-------------------------------------------------------------------------
+//
+// Class: CTracker
+//
+// Purpose: Base class for 1. extending Ole links, 2. supporting
+// shell references, 3. supporting win32 links.
+//
+// This class contains code common to all types.
+//
+// Interface:
+//
+// History: 07-Aug-93 BillMo Created.
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+#if !defined(LNK_NO_OLE2)
+
+// this should be put in its own header
+class CTracker
+{
+public:
+
+ CTracker();
+
+ // assignment operators/ctors needed because of pointer.
+
+ // doesn't copy expansion data
+ CTracker(const CTracker &);
+
+ // doesn't overwrite expansion data
+ CTracker & CTracker::operator = (const CTracker & t);
+
+ ~CTracker();
+
+
+ //
+ // For OLE2 tracking
+ //
+ BOOL operator == (const CTracker &t);
+ BOOL operator != (const CTracker &t);
+
+ HRESULT Load(IStorage *pstg);
+ HRESULT Save(IStorage *pstg);
+ HRESULT BindToObject(IBindCtx *pbc,
+ IMoniker *pmkToLeft,
+ REFIID riid,
+ void ** ppv,
+ IMoniker**ppmk);
+ HRESULT UpdateIdsFromMoniker(IBindCtx *pbc, IMoniker *pmk);
+
+ //
+ // For OLE1 tracking
+ //
+ VOID SetObjectId(const OBJECTID &oid);
+
+ //
+ // For OLE1 and OLE2 tracking
+ //
+ HRESULT FindObjectName(CVolume * pVolume,
+ BOOL fHintedVolumeValid,
+ WCHAR ** ppwszPath,
+ CEmbeddedMonikers *pem,
+ CSearchContext *psc,
+ const WCHAR *pwszOriginal);
+
+private:
+
+ HRESULT SaveTrackingInfo(USHORT usSig, LPSTREAM pstm);
+ void Read(LPSTREAM pstm, void *pv, ULONG cbExpected);
+ HRESULT LoadTrackingInfo(USHORT usSig, LPSTREAM pstm);
+ HRESULT SearchEnumVolumes(CVolume *pVolume,
+ WCHAR **ppwszPath,
+ CEmbeddedMonikers *pem,
+ CSearchContext *psc,
+ const WCHAR *pwszOriginal);
+ HRESULT GetEmbeddedObjectsId(IBindCtx *pbc, IMoniker *pmk);
+ HRESULT wBindToObject(CSearchContext *psc,
+ IMoniker *pmkToLeft,
+ REFIID riid,
+ void ** ppv,
+ IMoniker**ppmk);
+
+ HRESULT GetVolume(IBindCtx * pbc, IMoniker *pmkFile, CVolume *pVolume);
+
+
+ //
+ // if persistent data is added, then GetSizeMax must be
+ // changed.
+ //
+ ULONG _ulFlags;
+
+ DOMAINID _didDomain;
+ VOLUMEID _vidVolume;
+ OBJECTID _oidFile;
+ OBJECTID _oidEmbed;
+ LONG _cNoStorage;
+
+ // other cairo info
+
+ // expansion data
+ ULONG _cbExpansion;
+ BYTE * _pbExpansion;
+
+};
+#endif // !defined(LNK_NO_OLE2)
+
+#if !defined(LNK_NO_NTDEF)
+NTSTATUS PatchObjectId(UNICODE_STRING *pus, const OBJECTID &oid);
+#endif
+
+// BUGBUG this class definition should be in its own header file
+// when we get rid of lnkfsctl.exe's dependence on lnktrack.dll
+
+#if !defined(LNK_NO_EXCEPTIONS)
+//+-------------------------------------------------------------------------
+//
+// Class: CFileHandle
+//
+// Purpose: Handle opening files for caller if necessary.
+//
+// Interface: CFileHandle::CFileHandle -- Initialize.
+// CFileHandle::Open -- Open path.
+// CFileHandle::OpenIf -- Open path if handle is not passed.
+// CFileHandle::~CFileHandle -- Close file if we opened it.
+//
+// History: 07-Jun-92 BillMo Created.
+//
+// Notes: BUGBUG: should probably have a single unwindable object
+// which contains all these resources.
+//
+//--------------------------------------------------------------------------
+
+#include <except.hxx>
+
+class CFileHandle
+{
+public:
+ CFileHandle();
+ ~CFileHandle();
+
+ NTSTATUS OpenIf(HANDLE hFile,
+ const WCHAR * pwszPath,
+ DWORD dwAccess,
+ DWORD dwShare);
+
+ NTSTATUS Open(const WCHAR * pwszDosPath,
+ ACCESS_MASK AccessMask = GENERIC_READ | SYNCHRONIZE,
+ ULONG ShareAccess = FILE_SHARE_READ);
+
+ inline operator HANDLE ();
+
+private:
+
+ HANDLE _hFile;
+ BOOL _fOpened;
+};
+
+//+-------------------------------------------------------------------
+//
+// Member: CFileHandle::operator HANDLE, public
+//
+// Synopsis: Return internal handle. For HANDLE parameter passing.
+//
+// History: 25-Jan-93 BillMo Created.
+//
+// Notes:
+//
+//--------------------------------------------------------------------
+
+CFileHandle::operator HANDLE (void)
+{
+ return(_hFile);
+}
+#endif // !defined(LNK_NO_EXCEPTIONS)
+
+#if !defined(LNK_NO_NTDEF)
+VOID PrependNtObjectName(UNICODE_STRING *pus);
+#endif
+
+#endif
+
diff --git a/public/sdk/inc/imagehlp.h b/public/sdk/inc/imagehlp.h
new file mode 100644
index 000000000..3d15665d4
--- /dev/null
+++ b/public/sdk/inc/imagehlp.h
@@ -0,0 +1,922 @@
+/*++ BUILD Version: 0001 Increment this if a change has global effects
+
+Copyright (c) 1993-1996 Microsoft Corporation
+
+Module Name:
+
+ imagehlp.h
+
+Abstract:
+
+ This module defines the prptotypes and constants required for the image
+ help routines.
+
+Revision History:
+
+--*/
+
+#ifndef _IMAGEHLP_
+#define _IMAGEHLP_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Define checksum return codes.
+//
+
+#define CHECKSUM_SUCCESS 0
+#define CHECKSUM_OPEN_FAILURE 1
+#define CHECKSUM_MAP_FAILURE 2
+#define CHECKSUM_MAPVIEW_FAILURE 3
+#define CHECKSUM_UNICODE_FAILURE 4
+
+// Define Splitsym flags.
+
+#define SPLITSYM_REMOVE_PRIVATE 0x00000001 // Remove CV types/symbols and Fixup debug
+ // Used for creating .dbg files that ship
+ // as part of the product.
+
+#define SPLITSYM_EXTRACT_ALL 0x00000002 // Extract all debug info from image.
+ // Normally, FPO is left in the image
+ // to allow stack traces through the code.
+ // Using this switch is similar to linking
+ // with -debug:none except the .dbg file
+ // exists...
+
+#ifdef _IMAGEHLP_SOURCE_
+#define IMAGEAPI __stdcall
+#else
+#define IMAGEAPI DECLSPEC_IMPORT __stdcall
+#endif
+
+//
+// Define checksum function prototypes.
+//
+
+PIMAGE_NT_HEADERS
+IMAGEAPI
+CheckSumMappedFile (
+ LPVOID BaseAddress,
+ DWORD FileLength,
+ LPDWORD HeaderSum,
+ LPDWORD CheckSum
+ );
+
+DWORD
+IMAGEAPI
+MapFileAndCheckSumA (
+ LPSTR Filename,
+ LPDWORD HeaderSum,
+ LPDWORD CheckSum
+ );
+
+DWORD
+IMAGEAPI
+MapFileAndCheckSumW (
+ PWSTR Filename,
+ LPDWORD HeaderSum,
+ LPDWORD CheckSum
+ );
+
+#ifdef UNICODE
+#define MapFileAndCheckSum MapFileAndCheckSumW
+#else
+#define MapFileAndCheckSum MapFileAndCheckSumA
+#endif // !UNICODE
+
+
+BOOL
+IMAGEAPI
+TouchFileTimes (
+ HANDLE FileHandle,
+ LPSYSTEMTIME lpSystemTime
+ );
+
+BOOL
+IMAGEAPI
+SplitSymbols (
+ LPSTR ImageName,
+ LPSTR SymbolsPath,
+ LPSTR SymbolFilePath,
+ DWORD Flags // Combination of flags above
+ );
+
+HANDLE
+IMAGEAPI
+FindDebugInfoFile (
+ LPSTR FileName,
+ LPSTR SymbolPath,
+ LPSTR DebugFilePath
+ );
+
+HANDLE
+IMAGEAPI
+FindExecutableImage(
+ LPSTR FileName,
+ LPSTR SymbolPath,
+ LPSTR ImageFilePath
+ );
+
+BOOL
+IMAGEAPI
+UpdateDebugInfoFile(
+ LPSTR ImageFileName,
+ LPSTR SymbolPath,
+ LPSTR DebugFilePath,
+ PIMAGE_NT_HEADERS NtHeaders
+ );
+
+BOOL
+IMAGEAPI
+UpdateDebugInfoFileEx(
+ LPSTR ImageFileName,
+ LPSTR SymbolPath,
+ LPSTR DebugFilePath,
+ PIMAGE_NT_HEADERS NtHeaders,
+ DWORD OldChecksum
+ );
+
+BOOL
+IMAGEAPI
+BindImage(
+ IN LPSTR ImageName,
+ IN LPSTR DllPath,
+ IN LPSTR SymbolPath
+ );
+
+typedef enum _IMAGEHLP_STATUS_REASON {
+ BindOutOfMemory,
+ BindRvaToVaFailed,
+ BindNoRoomInImage,
+ BindImportModuleFailed,
+ BindImportProcedureFailed,
+ BindImportModule,
+ BindImportProcedure,
+ BindForwarder,
+ BindForwarderNOT,
+ BindImageModified,
+ BindExpandFileHeaders,
+ BindImageComplete,
+ BindMismatchedSymbols,
+ BindSymbolsNotUpdated
+} IMAGEHLP_STATUS_REASON;
+
+typedef
+BOOL
+(__stdcall *PIMAGEHLP_STATUS_ROUTINE)(
+ IMAGEHLP_STATUS_REASON Reason,
+ LPSTR ImageName,
+ LPSTR DllName,
+ ULONG Va,
+ ULONG Parameter
+ );
+
+
+BOOL
+IMAGEAPI
+BindImageEx(
+ IN DWORD Flags,
+ IN LPSTR ImageName,
+ IN LPSTR DllPath,
+ IN LPSTR SymbolPath,
+ IN PIMAGEHLP_STATUS_ROUTINE StatusRoutine
+ );
+
+#define BIND_NO_BOUND_IMPORTS 0x00000001
+#define BIND_NO_UPDATE 0x00000002
+#define BIND_ALL_IMAGES 0x00000004
+
+BOOL
+IMAGEAPI
+ReBaseImage(
+ IN LPSTR CurrentImageName,
+ IN LPSTR SymbolPath,
+ IN BOOL fReBase, // TRUE if actually rebasing, false if only summing
+ IN BOOL fRebaseSysfileOk, // TRUE is system images s/b rebased
+ IN BOOL fGoingDown, // TRUE if the image s/b rebased below the given base
+ IN ULONG CheckImageSize, // Max size allowed (0 if don't care)
+ OUT ULONG *OldImageSize, // Returned from the header
+ OUT ULONG *OldImageBase, // Returned from the header
+ OUT ULONG *NewImageSize, // Image size rounded to next separation boundary
+ IN OUT ULONG *NewImageBase, // (in) Desired new address.
+ // (out) Next address (actual if going down)
+ IN ULONG TimeStamp // new timestamp for image, if non-zero
+ );
+
+#define IMAGE_SEPARATION (64*1024)
+
+
+typedef struct _LOADED_IMAGE {
+ LPSTR ModuleName;
+ HANDLE hFile;
+ PUCHAR MappedAddress;
+ PIMAGE_NT_HEADERS FileHeader;
+ PIMAGE_SECTION_HEADER LastRvaSection;
+ ULONG NumberOfSections;
+ PIMAGE_SECTION_HEADER Sections;
+ ULONG Characteristics;
+ BOOLEAN fSystemImage;
+ BOOLEAN fDOSImage;
+ LIST_ENTRY Links;
+ ULONG SizeOfImage;
+} LOADED_IMAGE, *PLOADED_IMAGE;
+
+
+PLOADED_IMAGE
+IMAGEAPI
+ImageLoad(
+ LPSTR DllName,
+ LPSTR DllPath
+ );
+
+BOOL
+IMAGEAPI
+ImageUnload(
+ PLOADED_IMAGE LoadedImage
+ );
+
+PIMAGE_NT_HEADERS
+IMAGEAPI
+ImageNtHeader (
+ IN PVOID Base
+ );
+
+PVOID
+IMAGEAPI
+ImageDirectoryEntryToData (
+ IN PVOID Base,
+ IN BOOLEAN MappedAsImage,
+ IN USHORT DirectoryEntry,
+ OUT PULONG Size
+ );
+
+PIMAGE_SECTION_HEADER
+IMAGEAPI
+ImageRvaToSection(
+ IN PIMAGE_NT_HEADERS NtHeaders,
+ IN PVOID Base,
+ IN ULONG Rva
+ );
+
+PVOID
+IMAGEAPI
+ImageRvaToVa(
+ IN PIMAGE_NT_HEADERS NtHeaders,
+ IN PVOID Base,
+ IN ULONG Rva,
+ IN OUT PIMAGE_SECTION_HEADER *LastRvaSection
+ );
+
+BOOL
+IMAGEAPI
+MapAndLoad(
+ LPSTR ImageName,
+ LPSTR DllPath,
+ PLOADED_IMAGE LoadedImage,
+ BOOL DotDll,
+ BOOL ReadOnly
+ );
+
+BOOL
+IMAGEAPI
+GetImageConfigInformation(
+ PLOADED_IMAGE LoadedImage,
+ PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
+ );
+
+DWORD
+IMAGEAPI
+GetImageUnusedHeaderBytes(
+ PLOADED_IMAGE LoadedImage,
+ LPDWORD SizeUnusedHeaderBytes
+ );
+
+BOOL
+IMAGEAPI
+SetImageConfigInformation(
+ PLOADED_IMAGE LoadedImage,
+ PIMAGE_LOAD_CONFIG_DIRECTORY ImageConfigInformation
+ );
+
+BOOL
+IMAGEAPI
+UnMapAndLoad(
+ PLOADED_IMAGE LoadedImage
+ );
+
+typedef struct _IMAGE_DEBUG_INFORMATION {
+ LIST_ENTRY List;
+ DWORD Size;
+ PVOID MappedBase;
+ USHORT Machine;
+ USHORT Characteristics;
+ DWORD CheckSum;
+ DWORD ImageBase;
+ DWORD SizeOfImage;
+
+ DWORD NumberOfSections;
+ PIMAGE_SECTION_HEADER Sections;
+
+ DWORD ExportedNamesSize;
+ LPSTR ExportedNames;
+
+ DWORD NumberOfFunctionTableEntries;
+ PIMAGE_FUNCTION_ENTRY FunctionTableEntries;
+ DWORD LowestFunctionStartingAddress;
+ DWORD HighestFunctionEndingAddress;
+
+ DWORD NumberOfFpoTableEntries;
+ PFPO_DATA FpoTableEntries;
+
+ DWORD SizeOfCoffSymbols;
+ PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
+
+ DWORD SizeOfCodeViewSymbols;
+ PVOID CodeViewSymbols;
+
+ LPSTR ImageFilePath;
+ LPSTR ImageFileName;
+ LPSTR DebugFilePath;
+
+ DWORD TimeDateStamp;
+
+ BOOL RomImage;
+ PIMAGE_DEBUG_DIRECTORY DebugDirectory;
+ DWORD NumberOfDebugDirectories;
+
+ DWORD Reserved[ 3 ];
+
+} IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
+
+
+PIMAGE_DEBUG_INFORMATION
+IMAGEAPI
+MapDebugInformation (
+ HANDLE FileHandle,
+ LPSTR FileName,
+ LPSTR SymbolPath,
+ DWORD ImageBase
+ );
+
+BOOL
+IMAGEAPI
+UnmapDebugInformation(
+ PIMAGE_DEBUG_INFORMATION DebugInfo
+ );
+
+HANDLE
+IMAGEAPI
+FindExecutableImage(
+ LPSTR FileName,
+ LPSTR SymbolPath,
+ LPSTR ImageFilePath
+ );
+
+BOOL
+IMAGEAPI
+SearchTreeForFile(
+ LPSTR RootPath,
+ LPSTR InputPathName,
+ LPSTR OutputPathBuffer
+ );
+
+BOOL
+IMAGEAPI
+MakeSureDirectoryPathExists(
+ LPCSTR DirPath
+ );
+
+//
+// UnDecorateSymbolName Flags
+//
+
+#define UNDNAME_COMPLETE (0x0000) // Enable full undecoration
+#define UNDNAME_NO_LEADING_UNDERSCORES (0x0001) // Remove leading underscores from MS extended keywords
+#define UNDNAME_NO_MS_KEYWORDS (0x0002) // Disable expansion of MS extended keywords
+#define UNDNAME_NO_FUNCTION_RETURNS (0x0004) // Disable expansion of return type for primary declaration
+#define UNDNAME_NO_ALLOCATION_MODEL (0x0008) // Disable expansion of the declaration model
+#define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010) // Disable expansion of the declaration language specifier
+#define UNDNAME_NO_MS_THISTYPE (0x0020) // NYI Disable expansion of MS keywords on the 'this' type for primary declaration
+#define UNDNAME_NO_CV_THISTYPE (0x0040) // NYI Disable expansion of CV modifiers on the 'this' type for primary declaration
+#define UNDNAME_NO_THISTYPE (0x0060) // Disable all modifiers on the 'this' type
+#define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080) // Disable expansion of access specifiers for members
+#define UNDNAME_NO_THROW_SIGNATURES (0x0100) // Disable expansion of 'throw-signatures' for functions and pointers to functions
+#define UNDNAME_NO_MEMBER_TYPE (0x0200) // Disable expansion of 'static' or 'virtual'ness of members
+#define UNDNAME_NO_RETURN_UDT_MODEL (0x0400) // Disable expansion of MS model for UDT returns
+#define UNDNAME_32_BIT_DECODE (0x0800) // Undecorate 32-bit decorated names
+#define UNDNAME_NAME_ONLY (0x1000) // Crack only the name for primary declaration;
+ // return just [scope::]name. Does expand template params
+#define UNDNAME_NO_ARGUMENTS (0x2000) // Don't undecorate arguments to function
+#define UNDNAME_NO_SPECIAL_SYMS (0x4000) // Don't undecorate special names (v-table, vcall, vector xxx, metatype, etc)
+
+DWORD
+IMAGEAPI
+WINAPI
+UnDecorateSymbolName(
+ LPCSTR DecoratedName, // Name to undecorate
+ LPSTR UnDecoratedName, // If NULL, it will be allocated
+ DWORD UndecoratedLength, // The maximym length
+ DWORD Flags // See above.
+ );
+
+//
+// StackWalking API
+//
+
+typedef enum {
+ AddrMode1616,
+ AddrMode1632,
+ AddrModeReal,
+ AddrModeFlat
+} ADDRESS_MODE;
+
+typedef struct _tagADDRESS {
+ DWORD Offset;
+ WORD Segment;
+ ADDRESS_MODE Mode;
+} ADDRESS, *LPADDRESS;
+
+
+//
+// This structure is included in the STACKFRAME structure,
+// and is used to trace through usermode callbacks in a thread's
+// kernel stack. The values must be copied by the kernel debugger
+// from the DBGKD_GET_VERSION and WAIT_STATE_CHANGE packets.
+//
+typedef struct _KDHELP {
+
+ //
+ // address of kernel thread object, as provided in the
+ // WAIT_STATE_CHANGE packet.
+ //
+ DWORD Thread;
+
+ //
+ // offset in thread object to pointer to the current callback frame
+ // in kernel stack.
+ //
+ DWORD ThCallbackStack;
+
+ //
+ // offsets to values in frame:
+ //
+ // address of next callback frame
+ DWORD NextCallback;
+
+ // address of saved frame pointer (if applicable)
+ DWORD FramePointer;
+
+ //
+ // Address of the kernel function that calls out to user mode
+ //
+ DWORD KiCallUserMode;
+
+ //
+ // Address of the user mode dispatcher function
+ //
+ DWORD KeUserCallbackDispatcher;
+
+} KDHELP, *PKDHELP;
+
+
+typedef struct _tagSTACKFRAME {
+ ADDRESS AddrPC; // program counter
+ ADDRESS AddrReturn; // return address
+ ADDRESS AddrFrame; // frame pointer
+ ADDRESS AddrStack; // stack pointer
+ LPVOID FuncTableEntry; // pointer to pdata/fpo or NULL
+ DWORD Params[4]; // possible arguments to the function
+ BOOL Far; // WOW far call
+ BOOL Virtual; // is this a virtual frame?
+ DWORD Reserved[3]; // used internally by StackWalk api
+ KDHELP KdHelp;
+} STACKFRAME, *LPSTACKFRAME;
+
+typedef
+BOOL
+(__stdcall *PREAD_PROCESS_MEMORY_ROUTINE)(
+ HANDLE hProcess,
+ LPCVOID lpBaseAddress,
+ LPVOID lpBuffer,
+ DWORD nSize,
+ LPDWORD lpNumberOfBytesRead
+ );
+
+typedef
+LPVOID
+(__stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE)(
+ HANDLE hProcess,
+ DWORD AddrBase
+ );
+
+typedef
+DWORD
+(__stdcall *PGET_MODULE_BASE_ROUTINE)(
+ HANDLE hProcess,
+ DWORD ReturnAddress
+ );
+
+
+typedef
+DWORD
+(__stdcall *PTRANSLATE_ADDRESS_ROUTINE)(
+ HANDLE hProcess,
+ HANDLE hThread,
+ LPADDRESS lpaddr
+ );
+
+BOOL
+IMAGEAPI
+StackWalk(
+ DWORD MachineType,
+ HANDLE hProcess,
+ HANDLE hThread,
+ LPSTACKFRAME StackFrame,
+ LPVOID ContextRecord,
+ PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
+ PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
+ PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
+ PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
+ );
+
+#define API_VERSION_NUMBER 5
+
+typedef struct API_VERSION {
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ USHORT Revision;
+ USHORT Reserved;
+} API_VERSION, *LPAPI_VERSION;
+
+LPAPI_VERSION
+IMAGEAPI
+ImagehlpApiVersion(
+ VOID
+ );
+
+LPAPI_VERSION
+IMAGEAPI
+ImagehlpApiVersionEx(
+ LPAPI_VERSION AppVersion
+ );
+
+DWORD
+IMAGEAPI
+GetTimestampForLoadedLibrary(
+ HMODULE Module
+ );
+
+BOOL
+IMAGEAPI
+RemovePrivateCvSymbolic(
+ PCHAR DebugData,
+ PCHAR * NewDebugData,
+ ULONG * NewDebugSize
+ );
+
+VOID
+IMAGEAPI
+RemoveRelocations(
+ PCHAR ImageName
+ );
+
+//
+// typedefs for function pointers
+//
+typedef BOOL
+(CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
+ LPSTR ModuleName,
+ ULONG BaseOfDll,
+ PVOID UserContext
+ );
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
+ LPSTR SymbolName,
+ ULONG SymbolAddress,
+ ULONG SymbolSize,
+ PVOID UserContext
+ );
+
+typedef BOOL
+(CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
+ LPSTR ModuleName,
+ ULONG ModuleBase,
+ ULONG ModuleSize,
+ PVOID UserContext
+ );
+
+typedef BOOL
+(CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
+ HANDLE hProcess,
+ ULONG ActionCode,
+ PVOID CallbackData,
+ PVOID UserContext
+ );
+
+//
+// symbol flags
+//
+#define SYMF_OMAP_GENERATED 0x00000001
+#define SYMF_OMAP_MODIFIED 0x00000002
+
+//
+// symbol type enumeration
+//
+typedef enum {
+ SymNone,
+ SymCoff,
+ SymCv,
+ SymPdb,
+ SymExport,
+ SymDeferred,
+ SymSym // .sym file
+} SYM_TYPE;
+
+//
+// symbol data structure
+//
+typedef struct _IMAGEHLP_SYMBOL {
+ DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_SYMBOL)
+ DWORD Address; // virtual address including dll base address
+ DWORD Size; // estimated size of symbol, can be zero
+ DWORD Flags; // info about the symbols, see the SYMF defines
+ DWORD MaxNameLength; // maximum size of symbol name in 'Name'
+ CHAR Name[1]; // symbol name (null terminated string)
+} IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
+
+//
+// module data structure
+//
+typedef struct _IMAGEHLP_MODULE {
+ DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_MODULE)
+ DWORD BaseOfImage; // base load address of module
+ DWORD ImageSize; // virtual size of the loaded module
+ DWORD TimeDateStamp; // date/time stamp from pe header
+ DWORD CheckSum; // checksum from the pe header
+ DWORD NumSyms; // number of symbols in the symbol table
+ SYM_TYPE SymType; // type of symbols loaded
+ CHAR ModuleName[32]; // module name
+ CHAR ImageName[256]; // image name
+ CHAR LoadedImageName[256]; // symbol file name
+} IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
+
+//
+// data structures used for registered symbol callbacks
+//
+
+#define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
+#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
+#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
+#define CBA_SYMBOLS_UNLOADED 0x00000004
+#define CBA_DUPLICATE_SYMBOL 0x00000005
+
+typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
+ DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_DEFERRED_SYMBOL_LOAD)
+ DWORD BaseOfImage; // base load address of module
+ DWORD CheckSum; // checksum from the pe header
+ DWORD TimeDateStamp; // date/time stamp from pe header
+ CHAR FileName[MAX_PATH]; // symbols file or image name
+} IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
+
+typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
+ DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_DUPLICATE_SYMBOL)
+ DWORD NumberOfDups; // number of duplicates in the Symbol array
+ PIMAGEHLP_SYMBOL Symbol; // array of duplicate symbols
+ ULONG SelectedSymbol; // symbol selected (-1 to start)
+} IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
+
+
+//
+// options that are set/returned by SymSetOptions() & SymGetOptions()
+// these are used as a mask
+//
+#define SYMOPT_CASE_INSENSITIVE 0x00000001
+#define SYMOPT_UNDNAME 0x00000002
+#define SYMOPT_DEFERRED_LOADS 0x00000004
+#define SYMOPT_NO_CPP 0x00000008
+
+
+DWORD
+IMAGEAPI
+SymSetOptions(
+ IN DWORD SymOptions
+ );
+
+DWORD
+IMAGEAPI
+SymGetOptions(
+ VOID
+ );
+
+BOOL
+IMAGEAPI
+SymCleanup(
+ IN HANDLE hProcess
+ );
+
+BOOL
+IMAGEAPI
+SymEnumerateModules(
+ IN HANDLE hProcess,
+ IN PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
+ IN PVOID UserContext
+ );
+
+BOOL
+IMAGEAPI
+SymEnumerateSymbols(
+ IN HANDLE hProcess,
+ IN DWORD BaseOfDll,
+ IN PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback,
+ IN PVOID UserContext
+ );
+
+BOOL
+IMAGEAPI
+EnumerateLoadedModules(
+ IN HANDLE hProcess,
+ IN PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
+ IN PVOID UserContext
+ );
+
+LPVOID
+IMAGEAPI
+SymFunctionTableAccess(
+ HANDLE hProcess,
+ DWORD AddrBase
+ );
+
+BOOL
+IMAGEAPI
+SymGetModuleInfo(
+ IN HANDLE hProcess,
+ IN DWORD dwAddr,
+ OUT PIMAGEHLP_MODULE ModuleInfo
+ );
+
+DWORD
+IMAGEAPI
+SymGetModuleBase(
+ IN HANDLE hProcess,
+ IN DWORD dwAddr
+ );
+
+BOOL
+IMAGEAPI
+SymGetSymFromAddr(
+ IN HANDLE hProcess,
+ IN DWORD dwAddr,
+ OUT PDWORD pdwDisplacement,
+ OUT PIMAGEHLP_SYMBOL Symbol
+ );
+
+BOOL
+IMAGEAPI
+SymGetSymFromName(
+ IN HANDLE hProcess,
+ IN LPSTR Name,
+ OUT PIMAGEHLP_SYMBOL Symbol
+ );
+
+BOOL
+IMAGEAPI
+SymGetSymNext(
+ IN HANDLE hProcess,
+ IN OUT PIMAGEHLP_SYMBOL Symbol
+ );
+
+BOOL
+IMAGEAPI
+SymGetSymPrev(
+ IN HANDLE hProcess,
+ IN OUT PIMAGEHLP_SYMBOL Symbol
+ );
+
+BOOL
+IMAGEAPI
+SymInitialize(
+ IN HANDLE hProcess,
+ IN LPSTR UserSearchPath,
+ IN BOOL fInvadeProcess
+ );
+
+BOOL
+IMAGEAPI
+SymGetSearchPath(
+ IN HANDLE hProcess,
+ OUT LPSTR SearchPath,
+ IN DWORD SearchPathLength
+ );
+
+BOOL
+IMAGEAPI
+SymSetSearchPath(
+ IN HANDLE hProcess,
+ IN LPSTR SearchPath
+ );
+
+BOOL
+IMAGEAPI
+SymLoadModule(
+ IN HANDLE hProcess,
+ IN HANDLE hFile,
+ IN PSTR ImageName,
+ IN PSTR ModuleName,
+ IN DWORD BaseOfDll,
+ IN DWORD SizeOfDll
+ );
+
+BOOL
+IMAGEAPI
+SymUnloadModule(
+ IN HANDLE hProcess,
+ IN DWORD BaseOfDll
+ );
+
+BOOL
+IMAGEAPI
+SymUnDName(
+ IN PIMAGEHLP_SYMBOL sym, // Symbol to undecorate
+ OUT LPSTR UnDecName, // Buffer to store undecorated name in
+ IN DWORD UnDecNameLength // Size of the buffer
+ );
+
+BOOL
+IMAGEAPI
+SymRegisterCallback(
+ IN HANDLE hProcess,
+ IN PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
+ IN PVOID UserContext
+ );
+
+// Image Integrity API's
+
+#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 0x01
+#define CERT_PE_IMAGE_DIGEST_RESOURCES 0x02
+#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 0x04
+
+#define CERT_SECTION_TYPE_ANY 0xFF // Any Certificate type
+
+typedef PVOID DIGEST_HANDLE;
+
+typedef BOOL (WINAPI *DIGEST_FUNCTION) (DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength);
+
+BOOL
+IMAGEAPI
+ImageGetDigestStream(
+ IN HANDLE FileHandle,
+ IN DWORD DigestLevel,
+ IN DIGEST_FUNCTION DigestFunction,
+ IN DIGEST_HANDLE DigestHandle
+ );
+
+BOOL
+IMAGEAPI
+ImageAddCertificate(
+ IN HANDLE FileHandle,
+ IN LPWIN_CERTIFICATE Certificate,
+ OUT PDWORD Index
+ );
+
+BOOL
+IMAGEAPI
+ImageRemoveCertificate(
+ IN HANDLE FileHandle,
+ IN DWORD Index
+ );
+
+BOOL
+IMAGEAPI
+ImageEnumerateCertificates(
+ IN HANDLE FileHandle,
+ IN WORD TypeFilter,
+ OUT PDWORD CertificateCount,
+ IN OUT PDWORD Indices OPTIONAL,
+ IN OUT DWORD IndexCount OPTIONAL
+ );
+
+BOOL
+IMAGEAPI
+ImageGetCertificateData(
+ IN HANDLE FileHandle,
+ IN DWORD CertificateIndex,
+ OUT LPWIN_CERTIFICATE Certificate,
+ IN OUT PDWORD RequiredLength
+ );
+
+BOOL
+IMAGEAPI
+ImageGetCertificateHeader(
+ IN HANDLE FileHandle,
+ IN DWORD CertificateIndex,
+ IN OUT LPWIN_CERTIFICATE Certificateheader
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _IMAGEHLP_
diff --git a/public/sdk/inc/imaloc.h b/public/sdk/inc/imaloc.h
new file mode 100644
index 000000000..e7d2aeaab
--- /dev/null
+++ b/public/sdk/inc/imaloc.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: imaloc.h
+//
+// Contents: Replacement for imaloc.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/ime.h b/public/sdk/inc/ime.h
new file mode 100644
index 000000000..801983f1e
--- /dev/null
+++ b/public/sdk/inc/ime.h
@@ -0,0 +1,288 @@
+/*++ BUILD Version: 0003 // Increment this if a change has global effects
+
+Copyright (c) 1985-1996, Microsoft Corporation
+
+Module Name:
+
+ ime.h
+
+Abstract:
+
+ Procedure declarations, constant definitions and macros for the IME
+ component.
+
+--*/
+
+#ifndef _IME_
+#define _IME_
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#ifndef _WINDEF_
+typedef unsigned int UINT;
+#endif // _WINDEF_
+
+#define IME_MAXPROCESS 32
+
+LRESULT WINAPI SendIMEMessageExA(HWND, LPARAM);
+LRESULT WINAPI SendIMEMessageExW(HWND, LPARAM);
+#ifdef UNICODE
+#define SendIMEMessageEx SendIMEMessageExW
+#else
+#define SendIMEMessageEx SendIMEMessageExA
+#endif // !UNICODE
+
+//
+// IMESTRUCT structure for SendIMEMessageEx
+//
+typedef struct tagIMESTRUCT {
+ UINT fnc; // function code
+ WPARAM wParam; // word parameter
+ UINT wCount; // word counter
+ UINT dchSource; // offset to Source from top of memory object
+ UINT dchDest; // offset to Desrination from top of memory object
+ LPARAM lParam1;
+ LPARAM lParam2;
+ LPARAM lParam3;
+} IMESTRUCT,*PIMESTRUCT,NEAR *NPIMESTRUCT,FAR *LPIMESTRUCT;
+
+
+
+#ifdef KOREA // BeomOh - 10/05/92
+#define CP_HWND 0
+#define CP_OPEN 1
+#define CP_DIRECT 2
+#define CP_LEVEL 3
+
+#define lpSource(lpks) (LPSTR)((LPSTR)lpks+lpks->dchSource)
+#define lpDest(lpks) (LPSTR)((LPSTR)lpks+lpks->dchDest)
+#endif // KOREA
+
+//
+// Virtual Keys
+//
+#ifdef KOREA // BeomOh - 9/29/92
+#define VK_FINAL 0x18 /* dummy VK to make final on mouse down */
+#define VK_CONVERT 0x1C
+#define VK_NONCONVERT 0x1D
+#define VK_ACCEPT 0x1E
+#define VK_MODECHANGE 0x1F
+#else // KOREA
+#define VK_KANA 0x15
+#define VK_KANJI 0x19
+
+#define VK_CONVERT 0x1C
+#define VK_NONCONVERT 0x1D
+#define VK_ACCEPT 0x1E
+#define VK_MODECHANGE 0x1F
+
+#define VK_DBE_ALPHANUMERIC 0x0f0
+#define VK_DBE_KATAKANA 0x0f1
+#define VK_DBE_HIRAGANA 0x0f2
+#define VK_DBE_SBCSCHAR 0x0f3
+#define VK_DBE_DBCSCHAR 0x0f4
+#define VK_DBE_ROMAN 0x0f5
+#define VK_DBE_NOROMAN 0x0f6
+#define VK_DBE_ENTERWORDREGISTERMODE 0x0f7
+#define VK_DBE_ENTERIMECONFIGMODE 0x0f8
+#define VK_DBE_FLUSHSTRING 0x0f9
+#define VK_DBE_CODEINPUT 0x0fa
+#define VK_DBE_NOCODEINPUT 0x0fb
+#define VK_DBE_DETERMINESTRING 0x0fc
+#define VK_DBE_ENTERDLGCONVERSIONMODE 0x0fd
+#endif // KOREA
+
+
+//
+// switch for wParam of IME_SETCONVERSIONWINDOW
+//
+#define MCW_DEFAULT 0x00
+#define MCW_RECT 0x01
+#define MCW_WINDOW 0x02
+#define MCW_SCREEN 0x04
+#define MCW_VERTICAL 0x08
+#define MCW_HIDDEN 0x10
+
+//
+// switch for wParam of IME_SETCONVERSIONMODE
+// and IME_GETCONVERSIONMODE
+//
+#define IME_MODE_ALPHANUMERIC 0x0001
+#ifdef KOREA // BeomOh - 9/29/92
+#define IME_MODE_SBCSCHAR 0x0002
+#define IME_MODE_HANJACONVERT 0x0004
+#else // !KOREA
+#define IME_MODE_KATAKANA 0x0002
+#define IME_MODE_HIRAGANA 0x0004
+#define IME_MODE_SBCSCHAR 0x0008
+#define IME_MODE_DBCSCHAR 0x0010
+#define IME_MODE_ROMAN 0x0020
+#define IME_MODE_NOROMAN 0x0040
+#define IME_MODE_CODEINPUT 0x0080
+#define IME_MODE_NOCODEINPUT 0x0100
+//
+//
+#endif // !KOREA
+
+//
+// IME APIs
+//
+#define IME_GETIMECAPS 0x03
+#define IME_SETOPEN 0x04
+#define IME_GETOPEN 0x05
+#define IME_GETVERSION 0x07
+#define IME_SETCONVERSIONWINDOW 0x08
+#ifdef KOREA
+#define IME_MOVEIMEWINDOW IME_SETCONVERSIONWINDOW
+#else
+#endif
+#define IME_SETCONVERSIONMODE 0x10
+#ifdef KOREA // BeomOh - 10/23/92
+#define IME_SET_MODE 0x12
+#else
+#endif
+#define IME_GETCONVERSIONMODE 0x11
+#define IME_SENDVKEY 0x13
+#define IME_ENTERWORDREGISTERMODE 0x18
+#define IME_SETCONVERSIONFONTEX 0x19
+#ifdef KOREA // 01/12/93 KDLee MSCH
+#endif
+
+
+#ifdef KOREA // BeomOh - 9/29/92
+//
+// IME_CODECONVERT subfunctions
+//
+#define IME_BANJAtoJUNJA 0x13
+#define IME_JUNJAtoBANJA 0x14
+#define IME_JOHABtoKS 0x15
+#define IME_KStoJOHAB 0x16
+
+//
+// IME_AUTOMATA subfunctions
+//
+#define IMEA_INIT 0x01
+#define IMEA_NEXT 0x02
+#define IMEA_PREV 0x03
+
+//
+// IME_HANJAMODE subfunctions
+//
+#define IME_REQUEST_CONVERT 0x01
+#define IME_ENABLE_CONVERT 0x02
+
+//
+// IME_MOVEIMEWINDOW subfunctions
+//
+#define INTERIM_WINDOW 0x00
+#define MODE_WINDOW 0x01
+#define HANJA_WINDOW 0x02
+#endif // KOREA
+
+//
+//
+
+
+
+
+
+
+
+// CTRL_MODIFY is "or" all modify bits, but now only one
+
+//
+// error code
+//
+#define IME_RS_ERROR 0x01 // genetal error
+#define IME_RS_NOIME 0x02 // IME is not installed
+#define IME_RS_TOOLONG 0x05 // given string is too long
+#define IME_RS_ILLEGAL 0x06 // illegal charactor(s) is string
+#define IME_RS_NOTFOUND 0x07 // no (more) candidate
+#define IME_RS_NOROOM 0x0a // no disk/memory space
+#define IME_RS_DISKERROR 0x0e // disk I/O error
+#define IME_RS_INVALID 0x11 // Win3.1/NT
+#define IME_RS_NEST 0x12 // called nested
+#define IME_RS_SYSTEMMODAL 0x13 // called when system mode
+
+//
+// report messge from IME to WinApps
+//
+#define WM_IME_REPORT 0x0280
+
+//
+// report message parameter for WM_IME_REPORT
+//
+#define IR_STRINGSTART 0x100
+#define IR_STRINGEND 0x101
+#define IR_OPENCONVERT 0x120
+#define IR_CHANGECONVERT 0x121
+#define IR_CLOSECONVERT 0x122
+#define IR_FULLCONVERT 0x123
+#define IR_IMESELECT 0x130
+#define IR_STRING 0x140
+#define IR_DBCSCHAR 0x160
+#define IR_UNDETERMINE 0x170
+#define IR_STRINGEX 0x180 // New for 3.1
+#define IR_MODEINFO 0x190
+
+//#define WM_CONVERTREQUESTEX 0x0109
+#define WM_WNT_CONVERTREQUESTEX 0x0109 /* WM_CONVERTREQUESTEX: 109 for NT, 108 for OT */
+#define WM_CONVERTREQUEST 0x010A
+#define WM_CONVERTRESULT 0x010B
+#define WM_INTERIM 0x010C
+
+#define WM_IMEKEYDOWN 0x290
+#define WM_IMEKEYUP 0x291
+
+
+
+
+//
+// UNDETERMINESTRING structure for IR_UNDETERMINE
+//
+typedef struct tagUNDETERMINESTRUCT {
+ DWORD dwSize;
+ UINT uDefIMESize;
+ UINT uDefIMEPos;
+ UINT uUndetTextLen;
+ UINT uUndetTextPos;
+ UINT uUndetAttrPos;
+ UINT uCursorPos;
+ UINT uDeltaStart;
+ UINT uDetermineTextLen;
+ UINT uDetermineTextPos;
+ UINT uDetermineDelimPos;
+ UINT uYomiTextLen;
+ UINT uYomiTextPos;
+ UINT uYomiDelimPos;
+} UNDETERMINESTRUCT,*PUNDETERMINESTRUCT,NEAR *NPUNDETERMINESTRUCT,FAR *LPUNDETERMINESTRUCT;
+
+
+typedef struct tagSTRINGEXSTRUCT {
+ DWORD dwSize;
+ UINT uDeterminePos;
+ UINT uDetermineDelimPos;
+ UINT uYomiPos;
+ UINT uYomiDelimPos;
+} STRINGEXSTRUCT,NEAR *NPSTRINGEXSTRUCT,FAR *LPSTRINGEXSTRUCT;
+
+
+#if 0
+#define IMEMODE_CCHMAXTEXT 256
+typedef struct tagIMEMODEINFO {
+ DWORD cchSystemTextLength;
+ CHAR_INFO aciSystemText[IMEMODE_CCHMAXTEXT];
+ DWORD cchModeTextLength;
+ CHAR_INFO aciModeText[IMEMODE_CCHMAXTEXT];
+} IMEMODEINFO,*PIMEMODEINFO,*LPIMEMODEINFO;
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif // _IME_
diff --git a/public/sdk/inc/imessage.h b/public/sdk/inc/imessage.h
new file mode 100644
index 000000000..27bd6c5ad
--- /dev/null
+++ b/public/sdk/inc/imessage.h
@@ -0,0 +1,194 @@
+/*
+ * I M E S S A G E . H
+ *
+ * External definitions for MAPI's IMessage-on-IStorage facility
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef _IMESSAGE_H_
+#define _IMESSAGE_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef struct _MSGSESS FAR * LPMSGSESS;
+
+/* Typedef of optional callback routine to be called on last release of
+ * top-level messages opened with OpenIMsgOnIStg
+ */
+typedef void (STDAPICALLTYPE MSGCALLRELEASE)(
+ ULONG ulCallerData,
+ LPMESSAGE lpMessage );
+
+/* DLL Entry Points (found in mapiu.dll) */
+
+/* OpenIMsgSession
+ * CloseIMsgSession
+ *
+ * These entry points allow the caller to "wrap" the creation of messages
+ * inside a session, so that when the session is closed, all messages
+ * created within that session are closed as well. Use of IMSG sessions
+ * is optional. If OpenIMsgOnIStg is called with a NULL for the lpmsgsess
+ * parameter, the message is created independent of any session, and has
+ * no way to be shutdown. If the caller forgets to release the message, or
+ * to release open tables within the message, the memory will be leaked until
+ * the external application terminates.
+ */
+
+STDAPI_(SCODE) OpenIMsgSession(
+ LPMALLOC lpMalloc, /* -> Co malloc object */
+ ULONG ulFlags, /* reserved. Must be zero. */
+ LPMSGSESS FAR *lppMsgSess ); /* <- message session object */
+
+STDAPI_(void) CloseIMsgSession(
+ LPMSGSESS lpMsgSess ); /* -> message session object */
+
+/* OpenIMsgOnIStg - Main entry point
+ *
+ * NOTE 1: The IStg must be opened with STGM_TRANSACTED if STGM_READWRITE
+ * is specified. Since messages don't support a write only mode, IMessage
+ * doesn't allow a storage object opened in write only mode. If the storage
+ * is opened STGM_READ, then STGM_TRANSACTED is NOT required.
+ *
+ * NOTE 2: The lpMapiSup parameter is optional. If supplied then IMessage
+ * will support the MAPI_DIALOG and ATTACH_DIALOG flags (by calling
+ * support method: DoMCDialog) on CopyTo and DeleteAttach methods.
+ * If lpMapiSup is not supplied (i.e. passed 0) then dialog flags will be
+ * ignored. If supplied then ModifyRecipients will attempt to convert
+ * short term entryids to long term entryids (by calling support method
+ * OpenAddressBook and calls on the returned object). If not supplied
+ * then short term entryid's will be stored without conversion.
+ *
+ * NOTE 3: The lpfMsgCallRelease parameter is optional. If supplied then
+ * IMessage will call the routine when the last release on (the toplevel only)
+ * message is called. It is intended to allow the callee to free the IStorage
+ * that contains the message. IMessage will not use the IStorage object after
+ * making this call.
+ *
+ * NOTE 4: Behavior of multiple opens of sub-objects (Attachments, Streams,
+ * Storages, Messages, etc.) within a message is deliberately undefined in
+ * MAPI. This implementation allows them, but will do it by AddRef'ing the
+ * existing open and returning it to the caller of OpenAttachment or
+ * OpenProperty. This means that whatever access mode the first open on a
+ * specific Attachment or Property had is what all others will get regardless
+ * of what the subsequent opens asked for.
+ *
+ * NOTE 5: There is currently one flag defined for use with the ulFlags
+ * parameter. The IMSG_NO_ISTG_COMMIT flag controls whether the commit
+ * method of IStorage is called when the client calls SaveChanges on the
+ * IMessage object. Some clients of IMessage may wish to commit the IStorage
+ * themselves after writing additional data to the storage (beyond what
+ * IMessage itself writes). To aid in this, the IMessage implementation
+ * guarantees to name all sub-storages starting with "__". Therefore,
+ * if the client keeps its names out of that namespace, there will be no
+ * accidental collisions.
+ *
+ * WARNING:
+ *
+ * This implementation of IMessage will support OpenProperty w/MAPI_CREATE
+ * where the source interface is IID_IStorage if the property id is
+ * 'PR_ATTACH_DATA'. Once this has been done, the caller has an IStorage
+ * interface on this property. This is ok and should allow for
+ * easier implementation of OLE 2.0 Server functionality. However, if you
+ * pass in the new IStorage ptr (to the attachment data) through the
+ * OpenIMsgOnIStg entry point and then proceed to release things in the
+ * wrong order we will make no attempt to behave in a predictable fashion.
+ * Keep in mind that the correct method for placing a message into an
+ * attachment is to call OpenProperty where the source interface is
+ * IID_IMessage. The IStorage interface is supported to allow an easy way
+ * to stick a WWord doc. into an attachment w/o converting to/from IStream.
+ *
+ */
+STDAPI_(SCODE) OpenIMsgOnIStg(
+ LPMSGSESS lpMsgSess, /* -> message session obj (optional) */
+ LPALLOCATEBUFFER lpAllocateBuffer, /* -> AllocateBuffer memory routine */
+ LPALLOCATEMORE lpAllocateMore, /* -> AllocateMore memory routine */
+ LPFREEBUFFER lpFreeBuffer, /* -> FreeBuffer memory routine */
+ LPMALLOC lpMalloc, /* -> Co malloc object */
+ LPVOID lpMapiSup, /* -> MAPI Support Obj (optional) */
+ LPSTORAGE lpStg, /* -> open IStorage containing msg */
+ MSGCALLRELEASE FAR *lpfMsgCallRelease, /* -> release callback rtn (opt) */
+ ULONG ulCallerData, /* caller data returned in callback */
+ ULONG ulFlags, /* -> flags (controls istg commit) */
+ LPMESSAGE FAR *lppMsg ); /* <- open message object */
+
+#define IMSG_NO_ISTG_COMMIT ((ULONG) 0x00000001)
+
+
+/* NOTE: Property Attributes are specific to this IMessage on IStorage */
+/* implementation and are not a part of standard MAPI 1.0 property methods */
+
+/* Property Attributes */
+
+#define PROPATTR_MANDATORY ((ULONG) 0x00000001)
+#define PROPATTR_READABLE ((ULONG) 0x00000002)
+#define PROPATTR_WRITEABLE ((ULONG) 0x00000004)
+
+#define PROPATTR_NOT_PRESENT ((ULONG) 0x00000008)
+
+/* Attribute Array */
+
+typedef struct _SPropAttrArray
+{
+ ULONG cValues;
+ ULONG aPropAttr[MAPI_DIM];
+} SPropAttrArray, FAR * LPSPropAttrArray;
+
+#define CbNewSPropAttrArray(_cattr) \
+ (offsetof(SPropAttrArray,aPropAttr) + (_cattr)*sizeof(ULONG))
+#define CbSPropAttrArray(_lparray) \
+ (offsetof(SPropAttrArray,aPropAttr) + \
+ (UINT)((_lparray)->cValues)*sizeof(ULONG))
+
+#define SizedSPropAttrArray(_cattr, _name) \
+struct _SPropAttrArray_ ## _name \
+{ \
+ ULONG cValues; \
+ ULONG aPropAttr[_cattr]; \
+} _name
+
+
+
+/* GetAttribIMsgOnIStg - To get attributes on properties
+ *
+ * This call is provided because there is no method of IMAPIPropSet to allow
+ * getting attributes.
+ */
+STDAPI GetAttribIMsgOnIStg(
+ LPVOID lpObject,
+ LPSPropTagArray lpPropTagArray,
+ LPSPropAttrArray FAR *lppPropAttrArray );
+
+/* SetAttribIMsgOnIStg - To set attributes on properties
+ *
+ * This call is provided because there is no method of IMAPIPropSet to allow
+ * setting of attributes.
+ */
+STDAPI SetAttribIMsgOnIStg(
+ LPVOID lpObject,
+ LPSPropTagArray lpPropTags,
+ LPSPropAttrArray lpPropAttrs,
+ LPSPropProblemArray FAR *lppPropProblems );
+
+/* MapStorageSCode - To map an IStorage hResult to a MAPI sCode value
+ *
+ * This call is provided for the internal use of PDK components that base
+ * their message implementations on IMessage. Since these components must
+ * open the storage themselves, there is a common need to map OLE 2.0
+ * Storage error returns to MAPI sCodes.
+ *
+ * WARNING: There is no guarantee that this entry point will exist in
+ * shipped versions of mapiu.dll.
+ */
+STDAPI_(SCODE) MapStorageSCode( SCODE StgSCode );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IMESSAGE_H_ */
+
diff --git a/public/sdk/inc/imm.h b/public/sdk/inc/imm.h
new file mode 100644
index 000000000..53798752d
--- /dev/null
+++ b/public/sdk/inc/imm.h
@@ -0,0 +1,588 @@
+/**********************************************************************/
+/* IMM.H - Input Method Manager definitions */
+/* */
+/* Copyright (c) 1993-1996 Microsoft Corporation */
+/**********************************************************************/
+
+#ifndef _IMM_
+#define _IMM_ // defined if IMM.H has been included
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef DWORD HIMC;
+typedef DWORD HIMCC;
+
+typedef HKL FAR *LPHKL;
+typedef UINT FAR *LPUINT;
+
+
+typedef struct tagCOMPOSITIONFORM {
+ DWORD dwStyle;
+ POINT ptCurrentPos;
+ RECT rcArea;
+} COMPOSITIONFORM, *PCOMPOSITIONFORM, NEAR *NPCOMPOSITIONFORM, FAR *LPCOMPOSITIONFORM;
+
+
+typedef struct tagCANDIDATEFORM {
+ DWORD dwIndex;
+ DWORD dwStyle;
+ POINT ptCurrentPos;
+ RECT rcArea;
+} CANDIDATEFORM, *PCANDIDATEFORM, NEAR *NPCANDIDATEFORM, FAR *LPCANDIDATEFORM;
+
+
+typedef struct tagCANDIDATELIST {
+ DWORD dwSize;
+ DWORD dwStyle;
+ DWORD dwCount;
+ DWORD dwSelection;
+ DWORD dwPageStart;
+ DWORD dwPageSize;
+ DWORD dwOffset[1];
+} CANDIDATELIST, *PCANDIDATELIST, NEAR *NPCANDIDATELIST, FAR *LPCANDIDATELIST;
+
+typedef struct tagREGISTERWORDA {
+ LPSTR lpReading;
+ LPSTR lpWord;
+} REGISTERWORDA, *PREGISTERWORDA, NEAR *NPREGISTERWORDA, FAR *LPREGISTERWORDA;
+typedef struct tagREGISTERWORDW {
+ LPWSTR lpReading;
+ LPWSTR lpWord;
+} REGISTERWORDW, *PREGISTERWORDW, NEAR *NPREGISTERWORDW, FAR *LPREGISTERWORDW;
+#ifdef UNICODE
+typedef REGISTERWORDW REGISTERWORD;
+typedef PREGISTERWORDW PREGISTERWORD;
+typedef NPREGISTERWORDW NPREGISTERWORD;
+typedef LPREGISTERWORDW LPREGISTERWORD;
+#else
+typedef REGISTERWORDA REGISTERWORD;
+typedef PREGISTERWORDA PREGISTERWORD;
+typedef NPREGISTERWORDA NPREGISTERWORD;
+typedef LPREGISTERWORDA LPREGISTERWORD;
+#endif // UNICODE
+
+
+
+#define STYLE_DESCRIPTION_SIZE 32
+
+typedef struct tagSTYLEBUFA {
+ DWORD dwStyle;
+ CHAR szDescription[STYLE_DESCRIPTION_SIZE];
+} STYLEBUFA, *PSTYLEBUFA, NEAR *NPSTYLEBUFA, FAR *LPSTYLEBUFA;
+typedef struct tagSTYLEBUFW {
+ DWORD dwStyle;
+ WCHAR szDescription[STYLE_DESCRIPTION_SIZE];
+} STYLEBUFW, *PSTYLEBUFW, NEAR *NPSTYLEBUFW, FAR *LPSTYLEBUFW;
+#ifdef UNICODE
+typedef STYLEBUFW STYLEBUF;
+typedef PSTYLEBUFW PSTYLEBUF;
+typedef NPSTYLEBUFW NPSTYLEBUF;
+typedef LPSTYLEBUFW LPSTYLEBUF;
+#else
+typedef STYLEBUFA STYLEBUF;
+typedef PSTYLEBUFA PSTYLEBUF;
+typedef NPSTYLEBUFA NPSTYLEBUF;
+typedef LPSTYLEBUFA LPSTYLEBUF;
+#endif // UNICODE
+
+
+// prototype of IMM API
+
+HKL WINAPI ImmInstallIMEA(LPCSTR lpszIMEFileName, LPCSTR lpszLayoutText);
+HKL WINAPI ImmInstallIMEW(LPCWSTR lpszIMEFileName, LPCWSTR lpszLayoutText);
+#ifdef UNICODE
+#define ImmInstallIME ImmInstallIMEW
+#else
+#define ImmInstallIME ImmInstallIMEA
+#endif // !UNICODE
+
+HWND WINAPI ImmGetDefaultIMEWnd(HWND);
+
+UINT WINAPI ImmGetDescriptionA(HKL, LPSTR, UINT uBufLen);
+UINT WINAPI ImmGetDescriptionW(HKL, LPWSTR, UINT uBufLen);
+#ifdef UNICODE
+#define ImmGetDescription ImmGetDescriptionW
+#else
+#define ImmGetDescription ImmGetDescriptionA
+#endif // !UNICODE
+
+UINT WINAPI ImmGetIMEFileNameA(HKL, LPSTR, UINT uBufLen);
+UINT WINAPI ImmGetIMEFileNameW(HKL, LPWSTR, UINT uBufLen);
+#ifdef UNICODE
+#define ImmGetIMEFileName ImmGetIMEFileNameW
+#else
+#define ImmGetIMEFileName ImmGetIMEFileNameA
+#endif // !UNICODE
+
+DWORD WINAPI ImmGetProperty(HKL, DWORD);
+
+
+BOOL WINAPI ImmIsIME(HKL);
+
+BOOL WINAPI ImmSimulateHotKey(HWND, DWORD);
+
+HIMC WINAPI ImmCreateContext(void);
+BOOL WINAPI ImmDestroyContext(HIMC);
+HIMC WINAPI ImmGetContext(HWND);
+BOOL WINAPI ImmReleaseContext(HWND, HIMC);
+HIMC WINAPI ImmAssociateContext(HWND, HIMC);
+
+LONG WINAPI ImmGetCompositionStringA(HIMC, DWORD, LPVOID, DWORD);
+LONG WINAPI ImmGetCompositionStringW(HIMC, DWORD, LPVOID, DWORD);
+#ifdef UNICODE
+#define ImmGetCompositionString ImmGetCompositionStringW
+#else
+#define ImmGetCompositionString ImmGetCompositionStringA
+#endif // !UNICODE
+
+BOOL WINAPI ImmSetCompositionStringA(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD);
+BOOL WINAPI ImmSetCompositionStringW(HIMC, DWORD dwIndex, LPCVOID lpComp, DWORD, LPCVOID lpRead, DWORD);
+#ifdef UNICODE
+#define ImmSetCompositionString ImmSetCompositionStringW
+#else
+#define ImmSetCompositionString ImmSetCompositionStringA
+#endif // !UNICODE
+
+DWORD WINAPI ImmGetCandidateListCountA(HIMC, LPDWORD lpdwListCount);
+DWORD WINAPI ImmGetCandidateListCountW(HIMC, LPDWORD lpdwListCount);
+#ifdef UNICODE
+#define ImmGetCandidateListCount ImmGetCandidateListCountW
+#else
+#define ImmGetCandidateListCount ImmGetCandidateListCountA
+#endif // !UNICODE
+
+DWORD WINAPI ImmGetCandidateListA(HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen);
+DWORD WINAPI ImmGetCandidateListW(HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen);
+#ifdef UNICODE
+#define ImmGetCandidateList ImmGetCandidateListW
+#else
+#define ImmGetCandidateList ImmGetCandidateListA
+#endif // !UNICODE
+
+DWORD WINAPI ImmGetGuideLineA(HIMC, DWORD dwIndex, LPSTR, DWORD dwBufLen);
+DWORD WINAPI ImmGetGuideLineW(HIMC, DWORD dwIndex, LPWSTR, DWORD dwBufLen);
+#ifdef UNICODE
+#define ImmGetGuideLine ImmGetGuideLineW
+#else
+#define ImmGetGuideLine ImmGetGuideLineA
+#endif // !UNICODE
+
+BOOL WINAPI ImmGetConversionStatus(HIMC, LPDWORD, LPDWORD);
+BOOL WINAPI ImmSetConversionStatus(HIMC, DWORD, DWORD);
+BOOL WINAPI ImmGetOpenStatus(HIMC);
+BOOL WINAPI ImmSetOpenStatus(HIMC, BOOL);
+
+#ifdef _WINGDI_
+#ifndef NOGDI
+BOOL WINAPI ImmGetCompositionFontA(HIMC, LPLOGFONTA);
+BOOL WINAPI ImmGetCompositionFontW(HIMC, LPLOGFONTW);
+#ifdef UNICODE
+#define ImmGetCompositionFont ImmGetCompositionFontW
+#else
+#define ImmGetCompositionFont ImmGetCompositionFontA
+#endif // !UNICODE
+
+BOOL WINAPI ImmSetCompositionFontA(HIMC, LPLOGFONTA);
+BOOL WINAPI ImmSetCompositionFontW(HIMC, LPLOGFONTW);
+#ifdef UNICODE
+#define ImmSetCompositionFont ImmSetCompositionFontW
+#else
+#define ImmSetCompositionFont ImmSetCompositionFontA
+#endif // !UNICODE
+#endif // ifndef NOGDI
+#endif // ifdef _WINGDI_
+
+BOOL WINAPI ImmConfigureIMEA(HKL, HWND, DWORD, LPVOID);
+BOOL WINAPI ImmConfigureIMEW(HKL, HWND, DWORD, LPVOID);
+#ifdef UNICODE
+#define ImmConfigureIME ImmConfigureIMEW
+#else
+#define ImmConfigureIME ImmConfigureIMEA
+#endif // !UNICODE
+
+LRESULT WINAPI ImmEscapeA(HKL, HIMC, UINT, LPVOID);
+LRESULT WINAPI ImmEscapeW(HKL, HIMC, UINT, LPVOID);
+#ifdef UNICODE
+#define ImmEscape ImmEscapeW
+#else
+#define ImmEscape ImmEscapeA
+#endif // !UNICODE
+
+DWORD WINAPI ImmGetConversionListA(HKL, HIMC, LPCSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag);
+DWORD WINAPI ImmGetConversionListW(HKL, HIMC, LPCWSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag);
+#ifdef UNICODE
+#define ImmGetConversionList ImmGetConversionListW
+#else
+#define ImmGetConversionList ImmGetConversionListA
+#endif // !UNICODE
+
+BOOL WINAPI ImmNotifyIME(HIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue);
+
+
+BOOL WINAPI ImmGetStatusWindowPos(HIMC, LPPOINT);
+BOOL WINAPI ImmSetStatusWindowPos(HIMC, LPPOINT);
+BOOL WINAPI ImmGetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
+BOOL WINAPI ImmSetCompositionWindow(HIMC, LPCOMPOSITIONFORM);
+BOOL WINAPI ImmGetCandidateWindow(HIMC, DWORD, LPCANDIDATEFORM);
+BOOL WINAPI ImmSetCandidateWindow(HIMC, LPCANDIDATEFORM);
+
+BOOL WINAPI ImmIsUIMessageA(HWND, UINT, WPARAM, LPARAM);
+BOOL WINAPI ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM);
+#ifdef UNICODE
+#define ImmIsUIMessage ImmIsUIMessageW
+#else
+#define ImmIsUIMessage ImmIsUIMessageA
+#endif // !UNICODE
+
+UINT WINAPI ImmGetVirtualKey(HWND);
+
+typedef int (CALLBACK *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID);
+typedef int (CALLBACK *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID);
+#ifdef UNICODE
+#define REGISTERWORDENUMPROC REGISTERWORDENUMPROCW
+#else
+#define REGISTERWORDENUMPROC REGISTERWORDENUMPROCA
+#endif // !UNICODE
+
+BOOL WINAPI ImmRegisterWordA(HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister);
+BOOL WINAPI ImmRegisterWordW(HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister);
+#ifdef UNICODE
+#define ImmRegisterWord ImmRegisterWordW
+#else
+#define ImmRegisterWord ImmRegisterWordA
+#endif // !UNICODE
+
+BOOL WINAPI ImmUnregisterWordA(HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszUnregister);
+BOOL WINAPI ImmUnregisterWordW(HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszUnregister);
+#ifdef UNICODE
+#define ImmUnregisterWord ImmUnregisterWordW
+#else
+#define ImmUnregisterWord ImmUnregisterWordA
+#endif // !UNICODE
+
+UINT WINAPI ImmGetRegisterWordStyleA(HKL, UINT nItem, LPSTYLEBUFA);
+UINT WINAPI ImmGetRegisterWordStyleW(HKL, UINT nItem, LPSTYLEBUFW);
+#ifdef UNICODE
+#define ImmGetRegisterWordStyle ImmGetRegisterWordStyleW
+#else
+#define ImmGetRegisterWordStyle ImmGetRegisterWordStyleA
+#endif // !UNICODE
+
+UINT WINAPI ImmEnumRegisterWordA(HKL, REGISTERWORDENUMPROCA, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister, LPVOID);
+UINT WINAPI ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister, LPVOID);
+#ifdef UNICODE
+#define ImmEnumRegisterWord ImmEnumRegisterWordW
+#else
+#define ImmEnumRegisterWord ImmEnumRegisterWordA
+#endif // !UNICODE
+
+
+// wParam for WM_IME_CONTROL
+#define IMC_GETCANDIDATEPOS 0x0007
+#define IMC_SETCANDIDATEPOS 0x0008
+#define IMC_GETCOMPOSITIONFONT 0x0009
+#define IMC_SETCOMPOSITIONFONT 0x000A
+#define IMC_GETCOMPOSITIONWINDOW 0x000B
+#define IMC_SETCOMPOSITIONWINDOW 0x000C
+#define IMC_GETSTATUSWINDOWPOS 0x000F
+#define IMC_SETSTATUSWINDOWPOS 0x0010
+#define IMC_CLOSESTATUSWINDOW 0x0021
+#define IMC_OPENSTATUSWINDOW 0x0022
+
+
+
+
+
+
+
+// wParam for WM_IME_CONTROL to the soft keyboard
+// dwAction for ImmNotifyIME
+#define NI_OPENCANDIDATE 0x0010
+#define NI_CLOSECANDIDATE 0x0011
+#define NI_SELECTCANDIDATESTR 0x0012
+#define NI_CHANGECANDIDATELIST 0x0013
+#define NI_FINALIZECONVERSIONRESULT 0x0014
+#define NI_COMPOSITIONSTR 0x0015
+#define NI_SETCANDIDATE_PAGESTART 0x0016
+#define NI_SETCANDIDATE_PAGESIZE 0x0017
+
+
+// lParam for WM_IME_SETCONTEXT
+#define ISC_SHOWUICANDIDATEWINDOW 0x00000001
+#define ISC_SHOWUICOMPOSITIONWINDOW 0x80000000
+#define ISC_SHOWUIGUIDELINE 0x40000000
+#define ISC_SHOWUIALLCANDIDATEWINDOW 0x0000000F
+#define ISC_SHOWUIALL 0xC000000F
+
+
+// dwIndex for ImmNotifyIME/NI_COMPOSITIONSTR
+#define CPS_COMPLETE 0x0001
+#define CPS_CONVERT 0x0002
+#define CPS_REVERT 0x0003
+#define CPS_CANCEL 0x0004
+
+
+// the modifiers of hot key
+#define MOD_ALT 0x0001
+#define MOD_CONTROL 0x0002
+#define MOD_SHIFT 0x0004
+
+
+#define MOD_LEFT 0x8000
+#define MOD_RIGHT 0x4000
+
+#define MOD_ON_KEYUP 0x0800
+#define MOD_IGNORE_ALL_MODIFIER 0x0400
+
+
+// Windows for Simplified Chinese Edition hot key ID from 0x10 - 0x2F
+#define IME_CHOTKEY_IME_NONIME_TOGGLE 0x10
+#define IME_CHOTKEY_SHAPE_TOGGLE 0x11
+#define IME_CHOTKEY_SYMBOL_TOGGLE 0x12
+
+// Windows for Japanese Edition hot key ID from 0x30 - 0x4F
+#define IME_JHOTKEY_CLOSE_OPEN 0x30
+
+// Windows for Korean Edition hot key ID from 0x50 - 0x6F
+#define IME_KHOTKEY_SHAPE_TOGGLE 0x50
+#define IME_KHOTKEY_HANJACONVERT 0x51
+#define IME_KHOTKEY_ENGLISH 0x52
+
+// Windows for Tranditional Chinese Edition hot key ID from 0x70 - 0x8F
+#define IME_THOTKEY_IME_NONIME_TOGGLE 0x70
+#define IME_THOTKEY_SHAPE_TOGGLE 0x71
+#define IME_THOTKEY_SYMBOL_TOGGLE 0x72
+
+// direct switch hot key ID from 0x100 - 0x11F
+#define IME_HOTKEY_DSWITCH_FIRST 0x100
+#define IME_HOTKEY_DSWITCH_LAST 0x11F
+
+// IME private hot key from 0x200 - 0x21F
+#define IME_ITHOTKEY_RESEND_RESULTSTR 0x200
+#define IME_ITHOTKEY_PREVIOUS_COMPOSITION 0x201
+#define IME_ITHOTKEY_UISTYLE_TOGGLE 0x202
+
+
+
+// parameter of ImmGetCompositionString
+#define GCS_COMPREADSTR 0x0001
+#define GCS_COMPREADATTR 0x0002
+#define GCS_COMPREADCLAUSE 0x0004
+#define GCS_COMPSTR 0x0008
+#define GCS_COMPATTR 0x0010
+#define GCS_COMPCLAUSE 0x0020
+#define GCS_CURSORPOS 0x0080
+#define GCS_DELTASTART 0x0100
+#define GCS_RESULTREADSTR 0x0200
+#define GCS_RESULTREADCLAUSE 0x0400
+#define GCS_RESULTSTR 0x0800
+#define GCS_RESULTCLAUSE 0x1000
+
+// style bit flags for WM_IME_COMPOSITION
+#define CS_INSERTCHAR 0x2000
+#define CS_NOMOVECARET 0x4000
+
+
+
+// bits of fdwInit of INPUTCONTEXT
+// IME version constants
+#define IMEVER_0310 0x0003000A
+#define IMEVER_0400 0x00040000
+
+
+// IME property bits
+#define IME_PROP_AT_CARET 0x00010000
+#define IME_PROP_SPECIAL_UI 0x00020000
+#define IME_PROP_CANDLIST_START_FROM_1 0x00040000
+#define IME_PROP_UNICODE 0x00080000
+
+
+// IME UICapability bits
+#define UI_CAP_2700 0x00000001
+#define UI_CAP_ROT90 0x00000002
+#define UI_CAP_ROTANY 0x00000004
+
+
+// ImmSetCompositionString Capability bits
+#define SCS_CAP_COMPSTR 0x00000001
+#define SCS_CAP_MAKEREAD 0x00000002
+
+
+// IME WM_IME_SELECT inheritance Capability bits
+#define SELECT_CAP_CONVERSION 0x00000001
+#define SELECT_CAP_SENTENCE 0x00000002
+
+
+// ID for deIndex of ImmGetGuideLine
+#define GGL_LEVEL 0x00000001
+#define GGL_INDEX 0x00000002
+#define GGL_STRING 0x00000003
+#define GGL_PRIVATE 0x00000004
+
+
+// ID for dwLevel of GUIDELINE Structure
+#define GL_LEVEL_NOGUIDELINE 0x00000000
+#define GL_LEVEL_FATAL 0x00000001
+#define GL_LEVEL_ERROR 0x00000002
+#define GL_LEVEL_WARNING 0x00000003
+#define GL_LEVEL_INFORMATION 0x00000004
+
+
+// ID for dwIndex of GUIDELINE Structure
+#define GL_ID_UNKNOWN 0x00000000
+#define GL_ID_NOMODULE 0x00000001
+#define GL_ID_NODICTIONARY 0x00000010
+#define GL_ID_CANNOTSAVE 0x00000011
+#define GL_ID_NOCONVERT 0x00000020
+#define GL_ID_TYPINGERROR 0x00000021
+#define GL_ID_TOOMANYSTROKE 0x00000022
+#define GL_ID_READINGCONFLICT 0x00000023
+#define GL_ID_INPUTREADING 0x00000024
+#define GL_ID_INPUTRADICAL 0x00000025
+#define GL_ID_INPUTCODE 0x00000026
+#define GL_ID_INPUTSYMBOL 0x00000027
+#define GL_ID_CHOOSECANDIDATE 0x00000028
+#define GL_ID_REVERSECONVERSION 0x00000029
+#define GL_ID_PRIVATE_FIRST 0x00008000
+#define GL_ID_PRIVATE_LAST 0x0000FFFF
+
+
+// ID for dwIndex of ImmGetProperty
+#define IGP_GETIMEVERSION (DWORD)(-4)
+#define IGP_PROPERTY 0x00000004
+#define IGP_CONVERSION 0x00000008
+#define IGP_SENTENCE 0x0000000c
+#define IGP_UI 0x00000010
+#define IGP_SETCOMPSTR 0x00000014
+#define IGP_SELECT 0x00000018
+
+
+// dwIndex for ImmSetCompositionString API
+#define SCS_SETSTR (GCS_COMPREADSTR|GCS_COMPSTR)
+#define SCS_CHANGEATTR (GCS_COMPREADATTR|GCS_COMPATTR)
+#define SCS_CHANGECLAUSE (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE)
+
+
+// attribute for COMPOSITIONSTRING Structure
+#define ATTR_INPUT 0x00
+#define ATTR_TARGET_CONVERTED 0x01
+#define ATTR_CONVERTED 0x02
+#define ATTR_TARGET_NOTCONVERTED 0x03
+#define ATTR_INPUT_ERROR 0x04
+
+
+// bit field for IMC_SETCOMPOSITIONWINDOW, IMC_SETCANDIDATEWINDOW
+#define CFS_DEFAULT 0x0000
+#define CFS_RECT 0x0001
+#define CFS_POINT 0x0002
+#define CFS_FORCE_POSITION 0x0020
+#define CFS_CANDIDATEPOS 0x0040
+#define CFS_EXCLUDE 0x0080
+
+
+// conversion direction for ImmGetConversionList
+#define GCL_CONVERSION 0x0001
+#define GCL_REVERSECONVERSION 0x0002
+#define GCL_REVERSE_LENGTH 0x0003
+
+
+// bit field for conversion mode
+#define IME_CMODE_ALPHANUMERIC 0x0000
+#define IME_CMODE_NATIVE 0x0001
+#define IME_CMODE_CHINESE IME_CMODE_NATIVE
+#define IME_CMODE_HANGEUL IME_CMODE_NATIVE
+#define IME_CMODE_JAPANESE IME_CMODE_NATIVE
+#define IME_CMODE_KATAKANA 0x0002 // only effect under IME_CMODE_NATIVE
+#define IME_CMODE_LANGUAGE 0x0003
+#define IME_CMODE_FULLSHAPE 0x0008
+#define IME_CMODE_ROMAN 0x0010
+#define IME_CMODE_CHARCODE 0x0020
+#define IME_CMODE_HANJACONVERT 0x0040
+#define IME_CMODE_SOFTKBD 0x0080
+#define IME_CMODE_NOCONVERSION 0x0100
+#define IME_CMODE_EUDC 0x0200
+#define IME_CMODE_SYMBOL 0x0400
+
+
+#define IME_SMODE_NONE 0x0000
+#define IME_SMODE_PLAURALCLAUSE 0x0001
+#define IME_SMODE_SINGLECONVERT 0x0002
+#define IME_SMODE_AUTOMATIC 0x0004
+#define IME_SMODE_PHRASEPREDICT 0x0008
+
+
+// style of candidate
+#define IME_CAND_UNKNOWN 0x0000
+#define IME_CAND_READ 0x0001
+#define IME_CAND_CODE 0x0002
+#define IME_CAND_MEANING 0x0003
+#define IME_CAND_RADICAL 0x0004
+#define IME_CAND_STROKE 0x0005
+
+
+// wParam of report message WM_IME_NOTIFY
+#define IMN_CLOSESTATUSWINDOW 0x0001
+#define IMN_OPENSTATUSWINDOW 0x0002
+#define IMN_CHANGECANDIDATE 0x0003
+#define IMN_CLOSECANDIDATE 0x0004
+#define IMN_OPENCANDIDATE 0x0005
+#define IMN_SETCONVERSIONMODE 0x0006
+#define IMN_SETSENTENCEMODE 0x0007
+#define IMN_SETOPENSTATUS 0x0008
+#define IMN_SETCANDIDATEPOS 0x0009
+#define IMN_SETCOMPOSITIONFONT 0x000A
+#define IMN_SETCOMPOSITIONWINDOW 0x000B
+#define IMN_SETSTATUSWINDOWPOS 0x000C
+#define IMN_GUIDELINE 0x000D
+#define IMN_PRIVATE 0x000E
+
+
+// error code of ImmGetCompositionString
+#define IMM_ERROR_NODATA (-1)
+#define IMM_ERROR_GENERAL (-2)
+
+
+// dialog mode of ImmConfigureIME
+#define IME_CONFIG_GENERAL 1
+#define IME_CONFIG_REGISTERWORD 2
+#define IME_CONFIG_SELECTDICTIONARY 3
+
+
+// dialog mode of ImmEscape
+#define IME_ESC_QUERY_SUPPORT 0x0003
+#define IME_ESC_RESERVED_FIRST 0x0004
+#define IME_ESC_RESERVED_LAST 0x07FF
+#define IME_ESC_PRIVATE_FIRST 0x0800
+#define IME_ESC_PRIVATE_LAST 0x0FFF
+#define IME_ESC_SEQUENCE_TO_INTERNAL 0x1001
+#define IME_ESC_GET_EUDC_DICTIONARY 0x1003
+#define IME_ESC_SET_EUDC_DICTIONARY 0x1004
+#define IME_ESC_MAX_KEY 0x1005
+#define IME_ESC_IME_NAME 0x1006
+#define IME_ESC_SYNC_HOTKEY 0x1007
+#define IME_ESC_HANJA_MODE 0x1008
+#define IME_ESC_AUTOMATA 0x1009
+
+
+// style of word registration
+#define IME_REGWORD_STYLE_EUDC 0x00000001
+#define IME_REGWORD_STYLE_USER_FIRST 0x80000000
+#define IME_REGWORD_STYLE_USER_LAST 0xFFFFFFFF
+
+
+// type of soft keyboard
+// for Windows Tranditional Chinese Edition
+#define SOFTKEYBOARD_TYPE_T1 0x0001
+// for Windows Simplified Chinese Edition
+#define SOFTKEYBOARD_TYPE_C1 0x0002
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // _IMM_
diff --git a/public/sdk/inc/infstr.h b/public/sdk/inc/infstr.h
new file mode 100644
index 000000000..8d3aee3e3
--- /dev/null
+++ b/public/sdk/inc/infstr.h
@@ -0,0 +1,243 @@
+/*** infstr.h - Registry string definitions
+ *
+ * This module contains public registry string definitions.
+ *
+ * Copyright (c) 1993 Microsoft Corporation
+ *
+ * MODIFICATION HISTORY
+ */
+
+
+#ifndef _INC_INFSTR
+#define _INC_INFSTR
+
+//***************************************************************************
+//
+// Misc. key strings used by Setup Info. File
+//
+//***************************************************************************
+
+#define MAX_KEY_LEN 100
+
+#define SZ_KEY_OPTIONDESC TEXT("OptionDesc")
+#define SZ_KEY_LDIDOEM TEXT("LdidOEM")
+#define SZ_KEY_SRCDISKFILES TEXT("SourceDisksFiles")
+#define SZ_KEY_SRCDISKNAMES TEXT("SourceDisksNames")
+#define SZ_KEY_STRINGS TEXT("Strings")
+#define SZ_KEY_DESTDIRS TEXT("DestinationDirs")
+#define SZ_KEY_LAYOUT_FILE TEXT("LayoutFile")
+#define SZ_KEY_DEFDESTDIR TEXT("DefaultDestDir")
+
+#define SZ_KEY_UPDATEINIS TEXT("UpdateInis")
+#define SZ_KEY_UPDATEINIFIELDS TEXT("UpdateIniFields")
+#define SZ_KEY_INI2REG TEXT("Ini2Reg")
+#define SZ_KEY_COPYFILES TEXT("CopyFiles")
+#define SZ_KEY_RENFILES TEXT("RenFiles")
+#define SZ_KEY_DELFILES TEXT("DelFiles")
+#define SZ_KEY_ADDREG TEXT("AddReg")
+#define SZ_KEY_ADDREGNOCLOBBER TEXT("AddRegNoClobber")
+#define SZ_KEY_DELREG TEXT("DelReg")
+#define SZ_KEY_LOGCONFIG TEXT("LogConfig")
+#define SZ_KEY_ADDSERVICE TEXT("AddService")
+#define SZ_KEY_DELSERVICE TEXT("DelService")
+
+#define SZ_KEY_MODULES TEXT("Modules")
+#define SZ_KEY_DEFAULTOPTION TEXT("DefaultOption")
+#define SZ_KEY_LISTOPTIONS TEXT("ListOptions")
+
+// keys used to communicate with System Detection Manager, use Registry!
+// BUGBUG should be in central place for use by System Detection Mgr & us!
+#define SZ_KEY_PHASE1 TEXT("Phase1")
+#define SZ_KEY_HARDWARE TEXT("Hardware")
+
+// Foll. char is used to enclose a STRING KEY -- A key enclosed by this char
+// should be in the [Strings] section of the INF file.
+#define CH_STRINGKEY TEXT('%')
+
+// Foll. char is used to specify that what follows it is a file name
+// rather than a section with files in the Copy= file of a Generic
+// Install_Section.
+//
+#define CH_FILESPECIFIER TEXT('@')
+
+
+
+/*** Strings that will be used in the PnP INF files to specify
+ * LogConfig information, etc. This will be used to update the
+ * registry appropriately.
+ */
+
+#define INFSTR_KEY_CONFIGPRIORITY TEXT("ConfigPriority")
+
+// Foll. is length of buffer for the strings like HARDWIRED, etc.
+#define MAX_PRIORITYSTR_LEN 16
+
+/*** Foll. are strings that can be used for ConfigPriority=
+ */
+#define INFSTR_CFGPRI_HARDWIRED TEXT("HARDWIRED")
+#define INFSTR_CFGPRI_DESIRED TEXT("DESIRED")
+#define INFSTR_CFGPRI_NORMAL TEXT("NORMAL")
+#define INFSTR_CFGPRI_SUBOPTIMAL TEXT("SUBOPTIMAL")
+#define INFSTR_CFGPRI_DISABLED TEXT("DISABLED")
+#define INFSTR_CFGPRI_RESTART TEXT("RESTART")
+#define INFSTR_CFGPRI_REBOOT TEXT("REBOOT")
+#define INFSTR_CFGPRI_POWEROFF TEXT("POWEROFF")
+#define INFSTR_CFGPRI_HARDRECONFIG TEXT("HARDRECONFIG")
+
+
+#define INFSTR_KEY_MEMCONFIG TEXT("MemConfig")
+#define INFSTR_KEY_IOCONFIG TEXT("IOConfig")
+#define INFSTR_KEY_IRQCONFIG TEXT("IRQConfig")
+#define INFSTR_KEY_DMACONFIG TEXT("DMAConfig")
+
+//
+// Used to install a class installer
+//
+#define INFSTR_SECT_CLASS_INSTALL TEXT("ClassInstall")
+#define INFSTR_SECT_CLASS_INSTALL_32 TEXT("ClassInstall32")
+
+// General information about the contents/origins of the .INF.
+#define INFSTR_SECT_VERSION TEXT("Version")
+
+// Provider name under [version] section
+#define INFSTR_KEY_PROVIDER TEXT("Provider")
+
+// Signature under [version] section indicates a Win95-style device INF
+#define INFSTR_KEY_SIGNATURE TEXT("Signature")
+
+
+// [Version]
+// Specifies what the hardware class of any devices contained in this .INF.
+#define MAX_INF_FLAG 20
+#define INFSTR_KEY_HARDWARE_CLASS TEXT("Class")
+#define INFSTR_KEY_HARDWARE_CLASSGUID TEXT("ClassGUID")
+#define INFSTR_KEY_NOSETUPINF TEXT("NoSetupInf")
+
+//
+// Manufacturer section name
+//
+#define INFSTR_SECT_MFG TEXT("Manufacturer")
+
+//
+// Specifies the hardware class of this device.
+//
+#define INFSTR_KEY_CLASS TEXT("Class")
+#define INFSTR_KEY_CLASSGUID TEXT("ClassGUID")
+
+//
+// Used by (Setup)DiInstallDevice to know that need to reboot or restart after
+// installing the device.
+//
+#define INFSTR_RESTART TEXT("Restart")
+#define INFSTR_REBOOT TEXT("Reboot")
+
+//
+// Used by SetupDiInstallDevice to specify the service parameters passed
+// to the Service Control Manager to create/modify a service.
+//
+#define INFSTR_KEY_DISPLAYNAME TEXT("DisplayName")
+#define INFSTR_KEY_SERVICETYPE TEXT("ServiceType")
+#define INFSTR_KEY_STARTTYPE TEXT("StartType")
+#define INFSTR_KEY_ERRORCONTROL TEXT("ErrorControl")
+#define INFSTR_KEY_SERVICEBINARY TEXT("ServiceBinary")
+#define INFSTR_KEY_LOADORDERGROUP TEXT("LoadOrderGroup")
+#define INFSTR_KEY_DEPENDENCIES TEXT("Dependencies")
+#define INFSTR_KEY_STARTNAME TEXT("StartName")
+
+// The following are the characters to parse IORange and MemRange fields.
+#define CH_SIZE_DELIM TEXT('@')
+#define CH_MINMAX_SEP TEXT('-')
+#define CH_ALIGNMASK_BEGIN TEXT('%')
+#define CH_TRAIL_BEGIN TEXT('(')
+#define CH_TRAIL_SEP TEXT(':')
+#define CH_TRAIL_END TEXT(')')
+
+
+// The following is char to parse IRQ and DMA attr from the numbers!
+#define CH_ATTR_DELIM TEXT(':')
+
+// The following is for System Detection
+#define INFSTR_SECT_DETMODULES TEXT("Det.Modules")
+#define INFSTR_SECT_DETCLASSINFO TEXT("Det.ClassInfo")
+#define INFSTR_SECT_MANUALDEV TEXT("Det.ManualDev")
+#define INFSTR_SECT_AVOIDCFGSYSDEV TEXT("Det.AvoidCfgSysDev")
+#define INFSTR_SECT_REGCFGSYSDEV TEXT("Det.RegCfgSysDev")
+#define INFSTR_SECT_DEVINFS TEXT("Det.DevINFs")
+#define INFSTR_SECT_AVOIDINIDEV TEXT("Det.AvoidIniDev")
+#define INFSTR_SECT_AVOIDENVDEV TEXT("Det.AvoidEnvDev")
+#define INFSTR_SECT_REGINIDEV TEXT("Det.RegIniDev")
+#define INFSTR_SECT_REGENVDEV TEXT("Det.RegEnvDev")
+#define INFSTR_SECT_HPOMNIBOOK TEXT("Det.HPOmnibook")
+#define INFSTR_SECT_FORCEHWVERIFY TEXT("Det.ForceHWVerify")
+#define INFSTR_SECT_DETOPTIONS TEXT("Det.Options")
+#define INFSTR_KEY_DETPARAMS TEXT("Params")
+#define INFSTR_SECT_BADPNPBIOS TEXT("BadPnpBios")
+#define INFSTR_SECT_BADDISKBIOS TEXT("BadDiskBios")
+#define INFSTR_SECT_BADDSBIOS TEXT("BadDSBios")
+#define INFSTR_KEY_SKIPLIST TEXT("SkipList")
+
+//Subkeys are used in the form x.<subkey>
+#define INFSTR_SUBKEY_LOGCONFIG TEXT("LogConfig")
+#define INFSTR_SUBKEY_DET TEXT("Det")
+#define INFSTR_SUBKEY_FACTDEF TEXT("FactDef")
+#define INFSTR_SUBKEY_POSSIBLEDUPS TEXT("PosDup")
+#define INFSTR_SUBKEY_NORESOURCEDUPS TEXT("NoResDup")
+#define INFSTR_SUBKEY_HW TEXT("Hw")
+#define INFSTR_SUBKEY_CTL TEXT("CTL")
+#define INFSTR_SUBKEY_SERVICES TEXT("Services")
+
+// Control Section
+#define INFSTR_CONTROLFLAGS_SECTION TEXT("ControlFlags")
+#define INFSTR_KEY_COPYFILESONLY TEXT("CopyFilesOnly")
+#define INFSTR_KEY_EXCLUDEFROMSELECT TEXT("ExcludeFromSelect")
+
+// Platform-specific suffixes (e.g., "ExcludeFromSelect.NT")
+#define INFSTR_PLATFORM_WIN TEXT("Win")
+#define INFSTR_PLATFORM_NT TEXT("NT")
+#define INFSTR_PLATFORM_NTX86 TEXT("NTx86")
+#define INFSTR_PLATFORM_NTMIPS TEXT("NTMIPS")
+#define INFSTR_PLATFORM_NTALPHA TEXT("NTAlpha")
+#define INFSTR_PLATFORM_NTPPC TEXT("NTPPC")
+
+// Fields that will by use de dereference strings.
+// These are of the form x.<strkey> were strkey is limited to
+// MAX_INFSTR_STRKEY_LEN characters
+#define MAX_INFSTR_STRKEY_LEN 32
+#define INFSTR_STRKEY_DRVDESC TEXT("DriverDesc")
+
+// The following is for PCMCIA.INF parsing
+#define INFSTR_SECT_CFGSYS TEXT("ConfigSysDrivers")
+#define INFSTR_SECT_AUTOEXECBAT TEXT("AutoexecBatDrivers")
+#define INFSTR_SECT_SYSINI TEXT("SystemIniDrivers")
+#define INFSTR_SECT_SYSINIDRV TEXT("SystemIniDriversLine")
+#define INFSTR_SECT_WININIRUN TEXT("WinIniRunLine")
+
+//Keys in the config.sys device sections
+#define INFSTR_KEY_PATH TEXT("Path")
+#define INFSTR_KEY_NAME TEXT("Name")
+#define INFSTR_KEY_IO TEXT("IO")
+#define INFSTR_KEY_MEM TEXT("Mem")
+#define INFSTR_KEY_IRQ TEXT("IRQ")
+#define INFSTR_KEY_DMA TEXT("DMA")
+
+//Fields of detection function registration
+#define INFSTR_BUS_ISA TEXT("BUS_ISA")
+#define INFSTR_BUS_EISA TEXT("BUS_EISA")
+#define INFSTR_BUS_MCA TEXT("BUS_MCA")
+#define INFSTR_BUS_ALL TEXT("BUS_ALL")
+#define INFSTR_RISK_NONE TEXT("RISK_NONE")
+#define INFSTR_RISK_VERYLOW TEXT("RISK_VERYLOW")
+#define INFSTR_RISK_BIOSROMRD TEXT("RISK_BIOSROMRD")
+#define INFSTR_RISK_QUERYDRV TEXT("RISK_QUERYDRV")
+#define INFSTR_RISK_SWINT TEXT("RISK_SWINT")
+#define INFSTR_RISK_LOW TEXT("RISK_LOW")
+#define INFSTR_RISK_DELICATE TEXT("RISK_DELICATE")
+#define INFSTR_RISK_MEMRD TEXT("RISK_MEMRD")
+#define INFSTR_RISK_IORD TEXT("RISK_IORD")
+#define INFSTR_RISK_MEMWR TEXT("RISK_MEMWR")
+#define INFSTR_RISK_IOWR TEXT("RISK_IOWR")
+#define INFSTR_RISK_UNRELIABLE TEXT("RISK_UNRELIABLE")
+#define INFSTR_RISK_VERYHIGH TEXT("RISK_VERYHIGH")
+#define INFSTR_CLASS_SAFEEXCL TEXT("SAFE_EXCL")
+
+#endif //_INC_INFSTR
diff --git a/public/sdk/inc/initguid.h b/public/sdk/inc/initguid.h
new file mode 100644
index 000000000..60a576415
--- /dev/null
+++ b/public/sdk/inc/initguid.h
@@ -0,0 +1,38 @@
+/*****************************************************************************\
+* *
+* initguid.h - Definitions for controlling GUID initialization *
+* *
+* OLE Version 2.0 *
+* *
+* Copyright (c) 1992-1996, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+// Include after compobj.h to enable GUID initialization. This
+// must be done once per exe/dll.
+//
+// After this file, include one or more of the GUID definition files.
+//
+// NOTE: ole2.lib contains references to all GUIDs defined by OLE.
+
+#ifndef DEFINE_GUID
+#error initguid: must include objbase.h first.
+#endif
+
+#undef DEFINE_GUID
+
+#ifdef _MAC
+#define __based(a)
+#endif
+
+#ifdef _WIN32
+#define __based(a)
+#endif
+
+#ifdef __TURBOC__
+#define __based(a)
+#endif
+
+#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ EXTERN_C const GUID __based(__segname("_CODE")) name \
+ = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
diff --git a/public/sdk/inc/inplca.h b/public/sdk/inc/inplca.h
new file mode 100644
index 000000000..8022e3dab
--- /dev/null
+++ b/public/sdk/inc/inplca.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: inplca.h
+//
+// Contents: Replacement for inplca.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/inplcf.h b/public/sdk/inc/inplcf.h
new file mode 100644
index 000000000..2f7d0b6f0
--- /dev/null
+++ b/public/sdk/inc/inplcf.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: inplcf.h
+//
+// Contents: Replacement for inplcf.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/inplco.h b/public/sdk/inc/inplco.h
new file mode 100644
index 000000000..95fbff815
--- /dev/null
+++ b/public/sdk/inc/inplco.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: inplco.h
+//
+// Contents: Replacement for inplco.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/inplcs.h b/public/sdk/inc/inplcs.h
new file mode 100644
index 000000000..beb6225d1
--- /dev/null
+++ b/public/sdk/inc/inplcs.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: inplcs.h
+//
+// Contents: Replacement for inplcs.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/inplcu.h b/public/sdk/inc/inplcu.h
new file mode 100644
index 000000000..7327c67d8
--- /dev/null
+++ b/public/sdk/inc/inplcu.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: inplcu.h
+//
+// Contents: Replacement for inplcu.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/iofs.h b/public/sdk/inc/iofs.h
new file mode 100644
index 000000000..f6a3607e9
--- /dev/null
+++ b/public/sdk/inc/iofs.h
@@ -0,0 +1,1246 @@
+//+---------------------------------------------------------------------------
+//
+// File: iofs.h
+//
+// Contents: OFS interfaces
+//
+// History: 27-Oct-93 VicH Created.
+//
+// Copyright (C) Microsoft Corporation 1991
+//
+//----------------------------------------------------------------------------
+
+#ifndef INCL_IOFS
+#define INCL_IOFS
+
+#include <oleext.h>
+#include <query.h>
+#include <oledb.h>
+#include <propapi.h>
+
+#define CGUID_StdOfsFolder \
+ { 0x49691d58, \
+ 0x7e17, 0x101a, \
+ { 0xa9, 0x1c, 0x08, 0x00, 0x2b, 0x2e, 0xcd, 0xa9 } }
+
+#define CGUID_StdOfsFile \
+ { 0x49691dbc, \
+ 0x7e17, 0x101a, \
+ { 0xa9, 0x1c, 0x08, 0x00, 0x2b, 0x2e, 0xcd, 0xa9 } }
+
+#define CGUID_StdDownlevelFolder \
+ { 0x49691e20, \
+ 0x7e17, 0x101a, \
+ { 0xa9, 0x1c, 0x08, 0x00, 0x2b, 0x2e, 0xcd, 0xa9 } }
+
+#define CGUID_StdDownlevelFile \
+ { 0x49691e84, \
+ 0x7e17, 0x101a, \
+ { 0xa9, 0x1c, 0x08, 0x00, 0x2b, 0x2e, 0xcd, 0xa9 } }
+
+
+//+--------------------------------------------------------------------------
+// Structure: DELETION_ENTRY
+//
+// Synopsis: information stored in index about each deleted object
+// and returned from enumerations
+//---------------------------------------------------------------------------
+
+typedef struct _DELETION_ENTRY // de
+{
+ USN usn; // usn of deletion operation
+ LONGLONG llDeleteTime; // time of deletion
+ ULONG workid; // id of object deleted
+ ULONG workidParent; // id of parent of object deleted
+ unsigned cwcPathOld:12; // length of old path
+ unsigned cwcPathNew:12; // length of new path if rename
+ unsigned cwcShortName:4; // length of old short name
+ unsigned Flags:4; // flags (DELEF_*)
+ OBJECTID oid; // object id
+ WCHAR awcPath[1]; // paths :
+ // oldpath [+ newpath] [+ shortname]
+} DELETION_ENTRY;
+
+#define CB_DELETION_ENTRY FIELD_OFFSET(DELETION_ENTRY, awcPath)
+
+#define DELEF_OBJECTID_EXISTS 0x00000001
+
+
+//+--------------------------------------------------------------------------
+// Structure: DELETION_ENUM_ENTRY
+//
+// Synopsis: entry returned by a deletion enumerator
+//---------------------------------------------------------------------------
+
+typedef struct _DELETION_ENUM_ENTRY // dee
+{
+ ULONG offset; // offset to next entry
+ ULONG pad; // quad align next field
+ DELETION_ENTRY de; // entry
+} DELETION_ENUM_ENTRY;
+
+#define CB_DELETION_ENUM_ENTRY FIELD_OFFSET(DELETION_ENUM_ENTRY, de.awcPath)
+
+
+//+--------------------------------------------------------------------------
+// Structure: DELETION_ENUM_BUFFER
+//
+// Synopsis: actual deletion enumeration buffer
+//---------------------------------------------------------------------------
+
+typedef struct _DELETION_ENUM_BUFFER // denb
+{
+ USN usnMin; // minimum usn in log
+ DELETION_ENUM_ENTRY adee[1]; // array of deletion entries
+} DELETION_ENUM_BUFFER;
+
+
+//+--------------------------------------------------------------------------
+// Structure: DELETION_ENUM_ARGS
+//
+// Synopsis: arguments to GetDeletionsAfterUsn fsctl
+//---------------------------------------------------------------------------
+
+typedef struct _DELETION_ENUM_ARGS // dea
+{
+ USN usn;
+ ULONG grbit;
+ ULONG pad; // pad to quadword boundary
+} DELETION_ENUM_ARGS;
+
+#define DENF_INCLUDE_RENAMES 0x00000001
+
+
+//+--------------------------------------------------------------------------
+// Structure: SERVICE_ARGS
+//
+// Synopsis: arguments to RegisterDeletionLogService fsctl
+//---------------------------------------------------------------------------
+
+typedef struct _SERVICE_ARGS // sa
+{
+ USN usnMinRetain; // minimum usn to retain
+ OBJECTID oidService; // guid of service
+ BOOLEAN fCancel; // cancel service
+ BYTE pad[3]; // pad to quadword boundary
+} SERVICE_ARGS;
+
+#define CB_SERVICE_ARGS FIELD_OFFSET(SERVICE_ARGS, pad)
+
+
+//+--------------------------------------------------------------------------
+// Structure: SERVICE_ENUM_ENTRY
+//
+// Synopsis: entry within a service enum
+//---------------------------------------------------------------------------
+
+typedef struct _SERVICE_ENUM_ENTRY // see
+{
+ USN usnMinRetain; // minimum usn to retain
+ OBJECTID oid; // object id of service
+ ULONG pad;
+} SERVICE_ENUM_ENTRY;
+
+
+//+--------------------------------------------------------------------------
+// Structure: SERVICE_ENUM
+//
+// Synopsis: result of EnumerateDeletionLogServices
+//---------------------------------------------------------------------------
+
+typedef struct _SERVICE_ENUM // se
+{
+ ULONG csee; // # of entries
+ ULONG pad; // quad align next field
+ SERVICE_ENUM_ENTRY asee[1]; // array of entries
+} SERVICE_ENUM;
+
+
+//+--------------------------------------------------------------------------
+// Structure: OLENAMES
+//
+// Synopsis: input to RtlNameToOleId & result of RtlOleIdToName
+//---------------------------------------------------------------------------
+
+typedef struct _OLENAMEENTRY // one
+{
+ ULONG cbName;
+ WCHAR awcName[1]; // variable size array
+} OLENAMEENTRY;
+
+#define CB_OLENAMEENTRY FIELD_OFFSET(OLENAMEENTRY, awcName)
+
+typedef struct _OLENAMES // on
+{
+ ULONG cNames;
+ OLENAMEENTRY aone[1]; // variable sized array
+} OLENAMES;
+
+#define CB_OLENAMES FIELD_OFFSET(OLENAMES, aone)
+
+
+//+--------------------------------------------------------------------------
+// Structure: FINDOBJECT
+//
+// Synopsis: used internally by RtlSearchVolume
+//---------------------------------------------------------------------------
+
+// FINDOBJECT.oid:
+// ObjectId to match
+//
+// FINDOBJECT.cLineage:
+// In. Max of lineage matches to return.
+// 0 -> lookup objectid only
+// 1 -> return match by ObjectId + 1 lineage id match max.
+// 2 -> return match by ObjectId + 2 lineage id matches max.
+//
+// FINDOBJECT.ulFlags:
+// FO_CONTINUE_ENUM clear -> query for exact id and then lineage
+// as controlled by cLineage
+// FO_CONTINUE_ENUM set -> query for lineage only starting at oid.
+
+typedef struct _FINDOBJECT
+{
+ OBJECTID oid;
+ USHORT cLineage;
+ ULONG ulFlags;
+} FINDOBJECT;
+
+#define MAX_LINEAGE_MATCHES 10
+#define FO_CONTINUE_ENUM 0x00000001
+
+
+//+--------------------------------------------------------------------------
+// Structure: FINDOBJECTOUT
+//
+// Synopsis: result of RtlSearchVolume
+//---------------------------------------------------------------------------
+
+// FINDOBJECTOUT.cwcExact;
+// Non-zero -> first path returned is exact match count of characters
+// in exact match, not including nuls.
+//
+// FINDOBJECTOUT.cMatches;
+// 1 -> one lineage match returned, 2->two etc.
+//
+// FINDOBJECTOUT.ulNextFirstUniquifier;
+// value to pass in oid.Uniquifier on next call.
+//
+// FINDOBJECTOUT.wszPaths[MAX_PATH + 1];
+// contains (fExact? 1 : 0) + cMatches paths.
+// NOTE!! From wszPaths[0] ... end of system buffer contains paths
+// of exact match and candidates.
+
+typedef struct _FINDOBJECTOUT
+{
+ USHORT cwcExact;
+ USHORT cMatches;
+ ULONG ulNextFirstUniquifier;
+ WCHAR wszPaths[MAX_PATH + 1];
+} FINDOBJECTOUT;
+
+
+//+--------------------------------------------------------------------------
+// Structure: TUNNELMODE, TUNNELMODEOUT
+//
+// Synopsis: used internally by RtlSetTunnelMode
+//---------------------------------------------------------------------------
+
+typedef struct _TUNNELMODE
+{
+ ULONG ulFlags; // Bits to set within mask
+ ULONG ulMask; // Mask of bits to change
+} TUNNELMODE;
+
+typedef struct _TUNNELMODEOUT
+{
+ ULONG ulFlags;
+} TUNNELMODEOUT;
+
+#define TM_ENABLE_TUNNEL 0x00000001
+
+
+//+--------------------------------------------------------------------------
+// Summary Catalog Data Structures:
+//---------------------------------------------------------------------------
+
+#ifndef CATALOGSTG_ROWID_INVALID
+typedef ULONG CATALOGSTG_ROWID;
+
+#define CATALOGSTG_ROWID_INVALID ((CATALOGSTG_ROWID) 0xffffffff)
+#endif // CATALOGSTG_ROWID_INVALID
+
+
+//+--------------------------------------------------------------------------
+// Structure: CATALOG_QUERY_ROWINFO
+//
+// Synopsis: used for Query of catalog rows
+//---------------------------------------------------------------------------
+
+typedef struct _CATALOG_QUERY_ROWINFO // cqr
+{
+ ULONG NextEntryOffset; // Offset to next CATALOG_ROW_DATA
+ CATALOGSTG_ROWID RowId; // RowId
+ PROPVARIANT aProp[1]; // PROPVARIANT array for requested columns
+ //BYTE abVarBuf[]; // variable PROPVARIANT data
+} CATALOG_QUERY_ROWINFO;
+
+#define CB_CATALOG_QUERY_ROWINFO FIELD_OFFSET(CATALOG_QUERY_ROWINFO, aProp)
+
+
+//+--------------------------------------------------------------------------
+// Structure: FSCTL_CATALOG_QUERY_INFO, private to OFS
+//
+// Synopsis: used for Query of catalog columns
+//+--------------------------------------------------------------------------
+
+typedef struct _FSCTL_CATALOG_QUERY_INFO // cqi
+{
+ VOID *pvBase; // base offset of user space memory block
+ ULONG Key; // start column/row caller to 0 before first call
+ ULONG Count; // max (IN) & returned (OUT) column/row count
+ union {
+ ULONG cRowId; // IN: serialized RowId count
+ BOOLEAN fMoreData; // OUT: TRUE --> more columns/rows to fetch
+ };
+} FSCTL_CATALOG_QUERY_INFO;
+
+
+//+--------------------------------------------------------------------------
+// Structure: FSCTL_CATALOG_UPDATE_INFO, private to OFS
+//
+// Synopsis: used for Update of catalog rows
+//+--------------------------------------------------------------------------
+
+typedef struct _FSCTL_CATALOG_UPDATE_INFO // cui
+{
+ CATALOGSTG_ROWID RowId; // IN+OUT: RowId
+ union {
+ ULONG Operation; // IN: requested operation
+ NTSTATUS Status; // OUT: operation status
+ };
+} FSCTL_CATALOG_UPDATE_INFO;
+
+
+//+--------------------------------------------------------------------------
+// BUGBUG: Obsolete Summary Catalog data structures
+//---------------------------------------------------------------------------
+//+--------------------------------------------------------------------------
+// Structure: CATALOG_ROW_DATA
+//
+// Synopsis: used for Delete, Set, Get of catalog rows
+//---------------------------------------------------------------------------
+
+typedef struct _CATALOG_ROW_DATA // crd
+{
+ ULONG NextEntryOffset;
+ CATALOGSTG_ROWID RowId;
+ BYTE RowData[1];
+} CATALOG_ROW_DATA;
+
+#define CB_CATALOG_ROW_DATA FIELD_OFFSET(CATALOG_ROW_DATA, RowData)
+
+
+//+--------------------------------------------------------------------------
+// Structure: CATALOG_ROW_INFO
+//
+// Synopsis: used for Delete, Set, Get of catalog rows
+//---------------------------------------------------------------------------
+
+typedef struct _CATALOG_ROW_INFO // cri
+{
+ CATALOGSTG_ROWID RowId;
+ NTSTATUS Status;
+ ULONG dwReserved; // Must be zero, strictly enforced.
+ PROPVARIANT *aVariants;
+} CATALOG_ROW_INFO;
+
+
+//+--------------------------------------------------------------------------
+// Structure: CATALOG_GET_ROW_PARAMS, CATALOG_GET_ROW_RESULTS
+//
+// Synopsis: used by RtlGetCatalogRows
+//---------------------------------------------------------------------------
+
+typedef struct _CATALOG_GET_ROW_PARAMS // cgrp
+{
+ ULONG cColumns; // No. of columns
+ FULLPROPSPEC *aColumnSpec; // the column specifiers
+ ULONG cRowsRequested; // No. of rows requested.
+ CATALOG_ROW_INFO *aRowInfo; // Row. Ids of the rows.
+ ULONG cbVarData; // buffer size for variable length data
+ VOID *pvVarData; // buffer for variable length data
+} CATALOG_GET_ROW_PARAMS;
+
+
+typedef struct _CATALOG_GET_ROW_RESULTS // cgrr
+{
+ ULONG cRowsReturned; // No. of rows returned
+ ULONG cbVarDataUsed; // Length of the var. data buffer used.
+} CATALOG_GET_ROW_RESULTS;
+
+
+//+--------------------------------------------------------------------------
+// Structure: CATALOG_ENUMERATE_ROW_PARAMS, CATALOG_ENUMERATE_ROW_RESULTS
+//
+// Synopsis: used by RtlEnumerateCatalogRows
+//---------------------------------------------------------------------------
+
+typedef struct _CATALOG_ENUMERATE_ROW_PARAMS // cerp
+{
+ CATALOGSTG_ROWID LastFetchedRowId; // last RowId retrieved, 0 = from start
+ ULONG cColumns; // No. of columns
+ FULLPROPSPEC *aColumnSpec; // the column ids.
+ ULONG cRowsRequested; // No. of rows requested.
+ CATALOG_ROW_INFO *aRowInfo; // Row. Ids of the rows.
+ ULONG cbVarData; // buffer size for variable length data
+ VOID *pvVarData; // buffer for variable length data
+} CATALOG_ENUMERATE_ROW_PARAMS;
+
+
+typedef struct _CATALOG_ENUMERATE_ROW_RESULTS // cerr
+{
+ ULONG cRowsReturned; // No. of rows returned
+ ULONG cbVarDataUsed; // Length of the var. data buffer used.
+} CATALOG_ENUMERATE_ROW_RESULTS;
+//+--------------------------------------------------------------------------
+// BUGBUG: End Obsolete Summary Catalog data structures
+//---------------------------------------------------------------------------
+
+
+//+--------------------------------------------------------------------------
+// Structure: VIEW_COLUMN
+//
+// Synopsis: descriptor of a view column. If cwcName is 0, then the propid
+// identifies the column; otherwise the property name follows
+// this header
+//---------------------------------------------------------------------------
+
+typedef struct _VIEW_COLUMN
+{
+ GUID PropertySet;
+ PROPID propid;
+ ULONG cwcName;
+ ULONG dwOrder;
+} VIEW_COLUMN;
+
+
+//+--------------------------------------------------------------------------
+// Structure: VIEW_INDEX_ENTRY
+//
+// Synopsis: information stored about a particular view
+//---------------------------------------------------------------------------
+
+typedef struct _VIEW_INDEX_ENTRY
+{
+ ULONG ibEntry; // offset to next entry or 0
+ ULONG id; // identifier for view
+ ULONG ccol; // # of columns for view
+ ULONG ckey; // # of key columns in view
+ ULONG flags; // flags associated with view
+ VIEW_COLUMN avc[1]; // array of view columns
+} VIEW_INDEX_ENTRY;
+
+#define VF_RESTRICTION_EXISTS 0x00000001 // a restriction exists
+
+
+//+--------------------------------------------------------------------------
+// Enumeration: SPACE_PARAMETER_OPS
+//
+// Synopsis: operations that can be performed using FSCTL_CHANGE_DISKSPACE
+//---------------------------------------------------------------------------
+
+typedef enum _SPACE_PARAMETER_OPS // spo
+{
+ spDecommit, // decommit memory from file
+ spSetFileSize, // set file size for file
+} SPACE_PARAMETER_OPS;
+
+
+//+--------------------------------------------------------------------------
+// Structure: SPACE_PARAMETERS
+//
+// Synopsis: parameters controlling allocation of disk space for a file
+// using FSCTL_CHANGE_DISKSPACE
+//---------------------------------------------------------------------------
+
+typedef struct _SPACE_PARAMETERS // sp
+{
+ LARGE_INTEGER lioff; // offset into file
+ ULONG cb; // size of range to allocate/decommit
+ SPACE_PARAMETER_OPS op; // operation to perform
+} SPACE_PARAMETERS;
+
+//+--------------------------------------------------------------------------
+// Structure: COMMIT_PARAMETERS
+//
+// Synopsis: parameters controlling commit of a structured storage, embedding
+// or stream using FSCTL_XOLE_COMMIT
+//---------------------------------------------------------------------------
+
+typedef struct _COMMIT_PARAMETERS // comp
+{
+ BOOLEAN AbortTransaction;
+ ULONG CommitFlags;
+} COMMIT_PARAMETERS;
+
+//+--------------------------------------------------------------------------
+// Structure: LONG_OPERATION_STATUS
+//
+// Synopsis: return status for certain long operations such as
+// creating a view, setting unread maintanence, etc.
+//---------------------------------------------------------------------------
+
+typedef struct _LONG_OPERATION_STATUS // los
+{
+ NTSTATUS status; // status code for operation
+ BOOLEAN fPending; // is operation still pending
+ ULONG complete; // percentage complete
+ ULONG id; // id for view created
+} LONG_OPERATION_STATUS;
+
+
+//+--------------------------------------------------------------------------
+// Structure: OFS_DEBUG_INFO
+//
+// Synopsis: set and fetch OFS debug info scalars.
+//---------------------------------------------------------------------------
+
+#define ODI_DEBUG_LEVEL 0 // LONGLONG DebugLevel
+#define ODI_NO_CORRUPT_ASSERT 1 // BOOLEAN fNoCorruptAssert
+#define ODI_SINGLE_CLUSTER_ALLOC 2 // BOOLEAN fSingleClusterAlloc
+#define ODI_NOT_FOUND_ASSERT 3 // BOOLEAN fNotFoundAssert
+#define ODI_ENABLE_COMPRESSION 4 // BOOLEAN fEnableCompression
+#define ODI_ENABLE_POSIX 5 // BOOLEAN fEnablePosix
+#define ODI_ENABLE_EMBEDDINGS 6 // BOOLEAN fEnableEmbeddings
+
+typedef struct _OFS_DEBUG_INFO // odi
+{
+ BYTE InfoType; // Debug Info selector
+ BOOLEAN fSet; // TRUE --> set value, else get value
+ USHORT pad;
+ union {
+ BOOLEAN f; // BOOLEAN value
+ ULONG ul; // ULONG value
+ LONGLONG ll; // LONGLONG value
+ };
+} OFS_DEBUG_INFO;
+
+//+--------------------------------------------------------------------------
+// Structure: USN_CHANGES_CONFIGURATION
+//
+// Synopsis: configure usn change table
+//---------------------------------------------------------------------------
+
+typedef struct _USN_CHANGES_CONFIGURATION
+{
+ ULONG cbBlock; // size of block
+ ULONG cHash; // size of hash table
+ ULONG iProbe2; // second probe to be used in hash table
+} USN_CHANGES_CONFIGURATION;
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+//+--------------------------------------------------------------------------
+// OFS Miscellaneous APIs:
+//---------------------------------------------------------------------------
+
+NTSTATUS NTSYSAPI NTAPI
+OFSGetVersion(
+ HANDLE hf,
+ ULONG *pversion
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+OFSGetCloseUsn(
+ HANDLE h,
+ USN *pusn
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlGenerateUsn(
+ HANDLE h,
+ USN *pusn
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlDeleteObject(
+ IN HANDLE hf
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlDeleteObjectByPath(
+ IN WCHAR const *pwszPath
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlNameToOleId(
+ IN HANDLE hf, // must be volume handle
+ IN ULONG cbNames,
+ IN OLENAMES const *pon,
+ OUT ULONG *pOleId
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlOleIdToName(
+ IN HANDLE hf, // must be volume handle
+ IN ULONG cOleId,
+ IN ULONG const *pOleId,
+ IN OUT ULONG *pcbNameBuf,
+ OUT OLENAMES *pon
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlQueryQuota(
+ IN HANDLE hf, // must be volume handle
+ IN OUT ULONG *pcb,
+ IN OUT FILE_QUOTA_INFORMATION *pfqi
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlQueryClassId(
+ IN HANDLE hf,
+ OUT GUID *pclsid
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlSetClassId(
+ IN HANDLE hf,
+ OPTIONAL IN GUID const *pclsid
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlSetReplicationState(
+ IN HANDLE hf
+ );
+
+//+--------------------------------------------------------------------------
+// Structure: ACCESS_CHECK_PARAMETERS
+//
+// Synopsis: The parameters used to call FSCTL_FILE_ACCESS_CHECK
+//---------------------------------------------------------------------------
+
+#if defined(KERNEL)
+typedef struct _ACCESS_CHECK_PARAMETERS // acp
+{
+ SECURITY_SUBJECT_CONTEXT SubjectContext;
+ ULONG DesiredAccess;
+} ACCESS_CHECK_PARAMETERS;
+#endif
+
+
+//+--------------------------------------------------------------------------
+// ObjectId & Link Tracking APIs:
+//---------------------------------------------------------------------------
+
+NTSTATUS NTSYSAPI NTAPI
+RtlQueryObjectId(
+ IN HANDLE hf,
+ OUT OBJECTID *poid
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlSetObjectId(
+ IN HANDLE hf,
+ OPTIONAL IN OBJECTID const *poid
+ );
+
+VOID NTSYSAPI NTAPI
+RtlGenerateRelatedObjectId(
+ IN OBJECTID const *poidOld,
+ OUT OBJECTID *poidNew
+ );
+
+// inline NTSTATUS
+// RtlGenerateObjectId(OBJECTID *poid)
+// {
+// poid->Uniquifier = 0;
+// return(UuidCreate(&poid->Lineage));
+// }
+
+#define RtlGenerateObjectId(poid) \
+ ((poid)->Uniquifier = 0, UuidCreate(&(poid)->Lineage))
+
+
+NTSTATUS NTSYSAPI NTAPI
+RtlSetTunnelMode(
+ IN HANDLE hf, // must be volume handle
+ IN ULONG ulFlags,
+ IN ULONG ulMask,
+ OUT ULONG *pulOld
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlSearchVolume(
+ IN HANDLE hAncestor,
+ IN OBJECTID const* poid,
+ IN USHORT cLineage,
+ IN BOOLEAN fContinue,
+ IN ULONG usBufLen,
+ OUT FINDOBJECTOUT *pfoo
+ );
+
+//+--------------------------------------------------------------------------
+// Cairo only Property Access APIs:
+//---------------------------------------------------------------------------
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlCreateMappedStream(
+ IN HANDLE h, // property set handle
+ IN ULONG Flags, // [CMS_WRITE] | [CMS_TRANSACTED]
+ OUT NTMAPPEDSTREAM *pms); // Nt mapped stream
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlCloseMappedStream(
+ IN NTMAPPEDSTREAM ms); // Nt mapped stream
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlQueryPropertiesDirect(
+ IN HANDLE hf, // handle to object
+ IN ULONG cCol, // property count
+ IN DBID const *aCol, // requested columns
+ IN OUT ULONG *pcbProp, // max (IN) & returned (OUT) space used
+ IN OUT PROPVARIANT *aProp); // cCol returned properties (size = *pcbProp)
+
+BOOLEAN PROPSYSAPI PROPAPI
+RtlCompareVariants(
+ IN USHORT CodePage,
+ IN PROPVARIANT const *pvar1,
+ IN PROPVARIANT const *pvar2);
+
+
+
+//+--------------------------------------------------------------------------
+// BUGBUG: Obsolete OFS Property Access APIs:
+//---------------------------------------------------------------------------
+
+typedef LPVOID (WINAPI FNMALLOC) (ULONG cb);
+
+NTSTATUS NTSYSAPI NTAPI
+OFSGetProp(
+ HANDLE h,
+ GUID psguid,
+ ULONG cprop,
+ PROPSPEC rgpspec[],
+ PROPID rgpid[],
+ VOID *pttl,
+ PROPVARIANT *pv,
+ FNMALLOC *pMalloc);
+
+NTSTATUS NTSYSAPI NTAPI
+OFSSetProp(
+ HANDLE h,
+ GUID psguid,
+ ULONG cprop,
+ PROPSPEC rgpspec[],
+ PROPID rgpid[],
+ PROPVARIANT rgvar[]);
+
+NTSTATUS NTSYSAPI NTAPI
+OFSDeleteProp(
+ HANDLE h,
+ GUID psguid,
+ ULONG cprop,
+ PROPSPEC rgpspec[]);
+
+NTSTATUS NTSYSAPI NTAPI
+OFSEnumProp(
+ HANDLE h,
+ GUID psguid,
+ ULONG *pcprop,
+ STATPROPSTG rgsps[],
+ ULONG cskip,
+ FNMALLOC *pMalloc);
+
+NTSTATUS NTSYSAPI NTAPI
+OFSEnumPropSet(
+ HANDLE h,
+ BOOLEAN fRestart,
+ ULONG *pcspss, // [in, out]
+ GUID *pkey, // [in, out]
+ STATPROPSETSTG rgspss[]); // [out, size_is(*pcspss)]
+// BUGBUG: End Obsolete OFS Property Access APIs
+
+
+//+--------------------------------------------------------------------------
+// Summary Catalog APIs:
+//---------------------------------------------------------------------------
+
+NTSTATUS NTSYSAPI NTAPI
+RtlQueryCatalogColumns(
+ IN HANDLE hCatalog, // handle to summary catalog
+ IN OUT ULONG *pColKey, // caller set to zero before first call
+ IN OUT ULONG *pcCol, // max (IN) & returned (OUT) row count
+ IN OUT ULONG *pcbCol, // max (IN) & returned (OUT) space used in aCol
+ OUT DBID *aCol, // *pcCol returned columns (size = *pcbCol)
+ OUT BOOLEAN *pfMoreData // TRUE --> more columns to fetch
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlQueryCatalogRows(
+ IN HANDLE hCatalog, // handle to summary catalog
+ IN ULONG cCol, // # of requested columns for all rows
+ IN DBID const *aCol, // requested columns
+ IN OUT CATALOGSTG_ROWID *pRowIdKey, // caller set to 1st RowId or
+ // CATALOGSTG_ROWID_INVALID
+ OPTIONAL IN CATALOGSTG_ROWID const *aRowId,
+ // *pcRow RowIds to fetch, else NULL
+ IN OUT ULONG *pcRow, // max (IN) & returned (OUT) row count
+ IN OUT ULONG *pcbRow, // max (IN) & returned (OUT) space used
+ OUT CATALOG_QUERY_ROWINFO *aQueryRowInfo,
+ // *pcRow returned rows (size = *pcbRow)
+ OUT BOOLEAN *pfMoreData // TRUE --> more rows to fetch
+ );
+
+// The following function is for adding, updating, replacing and deleting rows.
+// aCol defines the total set of columns which will be operated upon. cBind
+// may be greater than cCol, but there must exist a value binding in aBind for
+// each column in aCol.
+//
+// In other words:
+//
+// ASSERT(cCol <= cBind);
+// for (i = 0; i < cCol; i++)
+// {
+// for (j = 0; j < cBind; j++)
+// {
+// if (aBind[j].iColumn == i &&
+// aBind[j].dwPart == DBCOLUMNPART_VALUE)
+// {
+// break;
+// }
+// }
+// ASSERT(j < cBind);
+// // fetch property value for column i from aRowInfo[n].pData buffer
+// }
+
+typedef struct _CATALOG_UPDATE_ROWINFO CATALOG_UPDATE_ROWINFO;
+
+NTSTATUS NTSYSAPI NTAPI
+RtlUpdateCatalogRows(
+ IN HANDLE hCatalog, // handle to summary catalog
+ IN ULONG cCol, // # of columns for all rows
+ IN DBID const *aCol, // pertinent columns
+ IN ULONG cBind, // # of column bindings
+ IN DBBINDING const *aBind, // column binding information
+ IN ULONG cRow, // # of rows in aRowInfo
+ IN OUT CATALOG_UPDATE_ROWINFO *aRowInfo
+ // row Action/RowId/Status and property data
+ );
+
+//+--------------------------------------------------------------------------
+// BUGBUG: Obsolete Summary Catalog Access APIs
+//---------------------------------------------------------------------------
+
+NTSTATUS NTSYSAPI NTAPI
+RtlEnumerateCatalogRowIds(
+ IN HANDLE hCatalog,
+ IN OUT CATALOGSTG_ROWID *pRowIdKey,
+ IN OUT ULONG *pcrow,
+ OUT CATALOGSTG_ROWID *aRowId
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlEnumerateCatalogRows(
+ IN HANDLE hCatalog,
+ IN OUT CATALOG_ENUMERATE_ROW_PARAMS *pcerp,
+ OUT CATALOG_ENUMERATE_ROW_RESULTS *pcerr
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlGetCatalogRows(
+ IN HANDLE hCatalog,
+ IN OUT CATALOG_GET_ROW_PARAMS *pcgrp,
+ OUT CATALOG_GET_ROW_RESULTS *pcgrr
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlUpdateCatalog(
+ IN HANDLE hCatalog,
+ IN ULONG ccol,
+ IN FULLPROPSPEC const *aColumnSpec,
+ IN ULONG crow,
+ IN OUT CATALOG_ROW_INFO *acro
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlDeleteCatalogRows(
+ IN HANDLE hCatalog,
+ IN ULONG crow,
+ IN CATALOGSTG_ROWID *aRowId
+ );
+//+--------------------------------------------------------------------------
+// BUGBUG: End Obsolete Summary Catalog Access APIs
+//---------------------------------------------------------------------------
+
+
+//+--------------------------------------------------------------------------
+// OFS Deletion Log APIs:
+//---------------------------------------------------------------------------
+
+NTSTATUS NTSYSAPI NTAPI
+RtlRegisterDeletionLogService(
+ HANDLE hf,
+ OBJECTID const *poid,
+ USN usn,
+ BOOLEAN fCancel
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlGetDeletionLogServices(
+ HANDLE hf,
+ OBJECTID const *poid,
+ SERVICE_ENUM *pse,
+ ULONG cb
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+RtlGetDeletionsAfter(
+ HANDLE hf,
+ USN usn,
+ ULONG grbit,
+ DELETION_ENUM_BUFFER *pdenb,
+ ULONG cb
+ );
+
+
+//+--------------------------------------------------------------------------
+// OFS View APIs:
+//---------------------------------------------------------------------------
+
+NTSTATUS NTSYSAPI NTAPI
+EnumerateViews(
+ HANDLE hf,
+ ULONG id,
+ VIEW_INDEX_ENTRY *pvie,
+ ULONG cb
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+GetViewRestriction(
+ HANDLE hf,
+ ULONG id,
+ RESTRICTION **ppRestriction
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+DeleteView(
+ HANDLE hf,
+ ULONG id
+ );
+
+NTSTATUS NTSYSAPI NTAPI
+CreateView(
+ HANDLE hf,
+ RESTRICTION const *pRestriction,
+ COLUMNSET const *pColumns,
+ SORTSET const *pSort
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+//+--------------------------------------------------------------------------
+// OFS FSCTL codes:
+// BUGBUG -- move to ntioapi.h at a convenient time
+//---------------------------------------------------------------------------
+
+#define FSCTL_CI_UPDATE_OBJECTS \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 100, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//+--------------------------------------------------------------------------
+// FSCTLs for summary catalog access:
+//---------------------------------------------------------------------------
+
+#define FSCTL_OFS_QUERY_CATALOG_COLUMNS \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 101, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_QUERY_CATALOG_ROWS \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_UPDATE_CATALOG_ROWS \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+// CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+// CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 105, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_ENUMERATE_CATALOG_ROW \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_SET_CATALOG_ROW \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_GET_CATALOG_ROW \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_DELETE_CATALOG_ROW \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//+--------------------------------------------------------------------------
+// Miscellaneous OFS FSCTL codes:
+//---------------------------------------------------------------------------
+
+#define FSCTL_OFS_VERSION \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_FINDOBJECT \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 111, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_QUERY_PROPERTIES \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 112, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_SET_REPLICATION_STATE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 113, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//+--------------------------------------------------------------------------
+// FSCTLs for xactole:
+//---------------------------------------------------------------------------
+
+#define FSCTL_XOLE_COMMIT \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 114, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//+--------------------------------------------------------------------------
+// Conversion FSCTL:
+//---------------------------------------------------------------------------
+
+#define FSCTL_OFS_CONVERT_DOCFILE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 115, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_CONVERT_STRUCTURED_OBJECT \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//+--------------------------------------------------------------------------
+// FSCTLs for summary catalog access:
+//---------------------------------------------------------------------------
+
+#define FSCTL_USN_CHANGES_CONFIGURATION \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 117, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 118, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 119, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 122, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 123, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DELLOG_REGISTER_SERVICE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 124, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DELLOG_GET_DELETIONS_AFTER \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 125, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DELLOG_GET_SERVICES \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 126, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+// content index filter daemon interface
+
+#define FSCTL_CI_FILTER_READY \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 127, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_FILTER_DATA_READY \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 128, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_FILTER_DONE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 129, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_FILTER_MORE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 130, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+// usn interface
+
+#define FSCTL_OFS_USN_GET_CLOSE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 131, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+// set/retrieve debug info
+
+#define FSCTL_OFS_DEBUG_INFO \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 132, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+// tunnelling
+
+#define FSCTL_OFS_TUNNEL_MODE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 133, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+// views
+
+#define FSCTL_OFS_CREATE_VIEW \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 134, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_ENUMERATE_VIEWS \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 135, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_DELETE_VIEW \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 136, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+#define FSCTL_OFS_USN_GENERATE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 137, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+//+--------------------------------------------------------------------------
+// Miscellaneous OFS FSCTL codes:
+//---------------------------------------------------------------------------
+
+#define FSCTL_OFS_TRANSLATE_OLENAMES \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 138, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_TRANSLATE_OLEIDS \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 139, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_GETNOTIFY \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 140, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_CHANGE_DISKSPACE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 141, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 142, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 143, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 144, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 145, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 146, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 147, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_LONG_OPERATION_STATUS \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 148, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 149, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_CONVERT_COW_TO_LARGE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_QUERY_QUOTA \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 151, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED:
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 152, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_INTERNAL_FORCE_CKPOINT \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 153, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+//+--------------------------------------------------------------------------
+// FSCTLs for IRowset table access:
+//---------------------------------------------------------------------------
+
+#define FSCTL_CI_NEW_IROWSET \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 154, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_GETSTATUS \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 155, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_WIDTOPATH \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 156, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 157, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_SETBINDINGS \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 158, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 159, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 160, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 161, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 162, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 163, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_APPROXPOS \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 164, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//UNUSED
+//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 165, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_FREECURSOR \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 166, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_OFS_GET_VIEW_RESTRICTION \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 167, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_SEEKANDFETCH \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 168, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_RATIOFINISHED \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 169, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_COMPAREBMK \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 170, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+// filter pid remapper
+
+#define FSCTL_CI_FILTER_PIDREMAPPER \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 171, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+// IRowsetWatchRegion
+
+#define FSCTL_CI_QUERY_RUNCHANGES \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 172, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_SETWATCHMODE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 173, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_GETWATCHINFO \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 174, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_QUERY_SHRINKWATCHREGION \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 175, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// CI Admin interfaces
+//
+#define FSCTL_CI_FORCE_MASTER_MERGE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 176, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_FORCE_SHADOW_MERGE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 177, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_ABORT_MERGES \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 178, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_CI_STATE \
+ CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 179, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+#endif // !DEFINED(INCL_IOFS)
diff --git a/public/sdk/inc/ipexport.h b/public/sdk/inc/ipexport.h
new file mode 100644
index 000000000..bd8c8a222
--- /dev/null
+++ b/public/sdk/inc/ipexport.h
@@ -0,0 +1,140 @@
+/********************************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1990-1996 **/
+/********************************************************************/
+/* :ts=4 */
+
+//** IPEXPORT.H - IP public definitions.
+//
+// This file contains public definitions exported to transport layer and
+// application software.
+//
+
+#ifndef IP_EXPORT_INCLUDED
+#define IP_EXPORT_INCLUDED 1
+
+/*NOINC*/
+
+//
+// IP type definitions.
+//
+typedef unsigned long IPAddr; // An IP address.
+typedef unsigned long IPMask; // An IP subnet mask.
+typedef unsigned long IP_STATUS; // Status code returned from IP APIs.
+
+
+/*INC*/
+
+//
+// The ip_option_information structure describes the options to be
+// included in the header of an IP packet. The TTL, TOS, and Flags
+// values are carried in specific fields in the header. The OptionsData
+// bytes are carried in the options area following the standard IP header.
+// With the exception of source route options, this data must be in the
+// format to be transmitted on the wire as specified in RFC 791. A source
+// route option should contain the full route - first hop thru final
+// destination - in the route data. The first hop will be pulled out of the
+// data and the option will be reformatted accordingly. Otherwise, the route
+// option should be formatted as specified in RFC 791.
+//
+struct ip_option_information {
+ unsigned char Ttl; // Time To Live
+ unsigned char Tos; // Type Of Service
+ unsigned char Flags; // IP header flags
+ unsigned char OptionsSize; // Size in bytes of options data
+ unsigned char FAR *OptionsData; // Pointer to options data
+}; /* ip_option_information */
+
+//
+// The icmp_echo_reply structure describes the data returned in response
+// to an echo request.
+//
+struct icmp_echo_reply {
+ IPAddr Address; // Replying address
+ unsigned long Status; // Reply IP_STATUS
+ unsigned long RoundTripTime; // RTT in milliseconds
+ unsigned short DataSize; // Reply data size in bytes
+ unsigned short Reserved; // Reserved for system use
+ void FAR *Data; // Pointer to the reply data
+ struct ip_option_information Options; // Reply options
+}; /* icmp_echo_reply */
+
+
+/*NOINC*/
+
+typedef struct ip_option_information IP_OPTION_INFORMATION,
+ FAR *PIP_OPTION_INFORMATION;
+
+typedef struct icmp_echo_reply ICMP_ECHO_REPLY,
+ FAR *PICMP_ECHO_REPLY;
+
+/*INC*/
+
+//
+// IP_STATUS codes returned from IP APIs
+//
+
+#define IP_STATUS_BASE 11000
+
+#define IP_SUCCESS 0
+#define IP_BUF_TOO_SMALL (IP_STATUS_BASE + 1)
+#define IP_DEST_NET_UNREACHABLE (IP_STATUS_BASE + 2)
+#define IP_DEST_HOST_UNREACHABLE (IP_STATUS_BASE + 3)
+#define IP_DEST_PROT_UNREACHABLE (IP_STATUS_BASE + 4)
+#define IP_DEST_PORT_UNREACHABLE (IP_STATUS_BASE + 5)
+#define IP_NO_RESOURCES (IP_STATUS_BASE + 6)
+#define IP_BAD_OPTION (IP_STATUS_BASE + 7)
+#define IP_HW_ERROR (IP_STATUS_BASE + 8)
+#define IP_PACKET_TOO_BIG (IP_STATUS_BASE + 9)
+#define IP_REQ_TIMED_OUT (IP_STATUS_BASE + 10)
+#define IP_BAD_REQ (IP_STATUS_BASE + 11)
+#define IP_BAD_ROUTE (IP_STATUS_BASE + 12)
+#define IP_TTL_EXPIRED_TRANSIT (IP_STATUS_BASE + 13)
+#define IP_TTL_EXPIRED_REASSEM (IP_STATUS_BASE + 14)
+#define IP_PARAM_PROBLEM (IP_STATUS_BASE + 15)
+#define IP_SOURCE_QUENCH (IP_STATUS_BASE + 16)
+#define IP_OPTION_TOO_BIG (IP_STATUS_BASE + 17)
+#define IP_BAD_DESTINATION (IP_STATUS_BASE + 18)
+
+
+//
+// The next group are status codes passed up on status indications to
+// transport layer protocols.
+//
+#define IP_ADDR_DELETED (IP_STATUS_BASE + 19)
+#define IP_SPEC_MTU_CHANGE (IP_STATUS_BASE + 20)
+#define IP_MTU_CHANGE (IP_STATUS_BASE + 21)
+#define IP_UNLOAD (IP_STATUS_BASE + 22)
+#define IP_ADDR_ADDED (IP_STATUS_BASE + 23)
+
+#define IP_GENERAL_FAILURE (IP_STATUS_BASE + 50)
+#define MAX_IP_STATUS IP_GENERAL_FAILURE
+#define IP_PENDING (IP_STATUS_BASE + 255)
+
+
+//
+// Values used in the IP header Flags field.
+//
+#define IP_FLAG_DF 0x2 // Don't fragment this packet.
+
+//
+// Supported IP Option Types.
+//
+// These types define the options which may be used in the OptionsData field
+// of the ip_option_information structure. See RFC 791 for a complete
+// description of each.
+//
+#define IP_OPT_EOL 0 // End of list option
+#define IP_OPT_NOP 1 // No operation
+#define IP_OPT_SECURITY 0x82 // Security option
+#define IP_OPT_LSRR 0x83 // Loose source route
+#define IP_OPT_SSRR 0x89 // Strict source route
+#define IP_OPT_RR 0x7 // Record route
+#define IP_OPT_TS 0x44 // Timestamp
+#define IP_OPT_SID 0x88 // Stream ID (obsolete)
+
+#define MAX_OPT_SIZE 40 // Maximum length of IP options in bytes
+
+
+#endif // IP_EXPORT_INCLUDED
+
diff --git a/public/sdk/inc/ipropidl.h b/public/sdk/inc/ipropidl.h
new file mode 100644
index 000000000..e52374d49
--- /dev/null
+++ b/public/sdk/inc/ipropidl.h
@@ -0,0 +1,57 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 29 11:23:49 1996
+ */
+/* Compiler settings for ipropidl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __ipropidl_h__
+#define __ipropidl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+/* header files for imported files */
+#include "objidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 29 11:23:49 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1996.
+//
+//--------------------------------------------------------------------------
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/ipropidl.idl b/public/sdk/inc/ipropidl.idl
new file mode 100644
index 000000000..73412c8ff
--- /dev/null
+++ b/public/sdk/inc/ipropidl.idl
@@ -0,0 +1,20 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1996.
+//
+// File: ipropidl.idl
+//
+//--------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+#endif
diff --git a/public/sdk/inc/issper16.h b/public/sdk/inc/issper16.h
new file mode 100644
index 000000000..a4916bd46
--- /dev/null
+++ b/public/sdk/inc/issper16.h
@@ -0,0 +1,336 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: issperr.h
+//
+// Contents: Constant definitions for OLE HRESULT values.
+//
+// History: dd-mmm-yy Author Comment
+// 20-Sep-93 richardw genesis
+//
+// Notes:
+// This is a generated file. Do not modify directly.
+// The MC tool generates this file from dsyserr.mc
+//
+//--------------------------------------------------------------------------
+#ifndef _ISSPERR_H_
+#define _ISSPERR_H_
+// Define the status type.
+
+#ifdef FACILITY_SECURITY
+#undef FACILITY_SECURITY
+#endif
+
+#ifdef STATUS_SEVERITY_SUCCESS
+#undef STATUS_SEVERITY_SUCCESS
+#endif
+//#ifdef STATUS_SEVERITY_ERROR
+//#undef STATUS_SEVERITY_ERROR
+//#endif
+
+// Define the severities
+//
+// 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_SECURITY 0x9
+#define FACILITY_NULL 0x0
+
+
+//
+// Define the severity codes
+//
+#define STATUS_SEVERITY_SUCCESS 0x0
+#define STATUS_SEVERITY_COERROR 0x2
+
+
+//
+// MessageId: SEC_E_INSUFFICIENT_MEMORY
+//
+// MessageText:
+//
+// Not enough memory is available to complete this request
+//
+#define SEC_E_INSUFFICIENT_MEMORY ((SECURITY_STATUS)0x1300)
+
+//
+// MessageId: SEC_E_INVALID_HANDLE
+//
+// MessageText:
+//
+// The handle specified is invalid
+//
+#define SEC_E_INVALID_HANDLE ((SECURITY_STATUS)0x1301)
+
+//
+// MessageId: SEC_E_UNSUPPORTED_FUNCTION
+//
+// MessageText:
+//
+// The function requested is not supported
+//
+#define SEC_E_UNSUPPORTED_FUNCTION ((SECURITY_STATUS)0x1302)
+
+// BUGBUG: This is for backwards compatibility
+//
+// MessageId: SEC_E_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The function requested is not supported
+//
+#define SEC_E_NOT_SUPPORTED ((SECURITY_STATUS)0x1302)
+
+//
+// MessageId: SEC_E_TARGET_UNKNOWN
+//
+// MessageText:
+//
+// The specified target is unknown or unreachable
+//
+#define SEC_E_TARGET_UNKNOWN ((SECURITY_STATUS)0x1303)
+
+//
+// MessageId: SEC_E_INTERNAL_ERROR
+//
+// MessageText:
+//
+// The Local Security Authority cannot be contacted
+//
+#define SEC_E_INTERNAL_ERROR ((SECURITY_STATUS)0x1304)
+
+ // BUGBUG: for backwards compatibility
+//
+// MessageId: SEC_E_NO_SPM
+//
+// MessageText:
+//
+// The Local Security Authority cannot be contacted
+//
+#define SEC_E_NO_SPM ((SECURITY_STATUS)0x1304)
+
+//
+// MessageId: SEC_E_SECPKG_NOT_FOUND
+//
+// MessageText:
+//
+// The requested security package does not exist
+//
+#define SEC_E_SECPKG_NOT_FOUND ((SECURITY_STATUS)0x1305)
+
+ // BUGBUG: for backwards compatibility
+//
+// MessageId: SEC_E_BAD_PKGID
+//
+// MessageText:
+//
+// The requested security package does not exist
+//
+#define SEC_E_BAD_PKGID ((SECURITY_STATUS)0x1305)
+
+//
+// MessageId: SEC_E_NOT_OWNER
+//
+// MessageText:
+//
+// The caller is not the owner of the desired credentials
+//
+#define SEC_E_NOT_OWNER ((SECURITY_STATUS)0x1306)
+
+//
+// MessageId: SEC_E_CANNOT_INSTALL
+//
+// MessageText:
+//
+// The security package failed to initialize, and cannot be installed
+//
+#define SEC_E_CANNOT_INSTALL ((SECURITY_STATUS)0x1307)
+
+//
+// MessageId: SEC_E_INVALID_TOKEN
+//
+// MessageText:
+//
+// The token supplied to the function is invalid
+//
+#define SEC_E_INVALID_TOKEN ((SECURITY_STATUS)0x1308)
+
+//
+// MessageId: SEC_E_CANNOT_PACK
+//
+// MessageText:
+//
+// The security package is not able to marshall the logon buffer,
+// so the logon attempt has failed
+//
+#define SEC_E_CANNOT_PACK ((SECURITY_STATUS)0x1309)
+
+//
+// MessageId: SEC_E_QOP_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The per-message Quality of Protection is not supported by the
+// security package
+//
+#define SEC_E_QOP_NOT_SUPPORTED ((SECURITY_STATUS)0x130A)
+
+//
+// MessageId: SEC_E_NO_IMPERSONATION
+//
+// MessageText:
+//
+// The security context does not allow impersonation of the client
+//
+#define SEC_E_NO_IMPERSONATION ((SECURITY_STATUS)0x130B)
+
+//
+// MessageId: SEC_E_LOGON_DENIED
+//
+// MessageText:
+//
+// The logon attempt failed
+//
+#define SEC_E_LOGON_DENIED ((SECURITY_STATUS)0x130C)
+
+//
+// MessageId: SEC_E_UNKNOWN_CREDENTIALS
+//
+// MessageText:
+//
+// The credentials supplied to the package were not
+// recognized
+//
+#define SEC_E_UNKNOWN_CREDENTIALS ((SECURITY_STATUS)0x130D)
+
+//
+// MessageId: SEC_E_NO_CREDENTIALS
+//
+// MessageText:
+//
+// No credentials are available in the security package
+//
+#define SEC_E_NO_CREDENTIALS ((SECURITY_STATUS)0x130E)
+
+//
+// MessageId: SEC_E_MESSAGE_ALTERED
+//
+// MessageText:
+//
+// The message supplied for verification has been altered
+//
+#define SEC_E_MESSAGE_ALTERED ((SECURITY_STATUS)0x130F)
+
+//
+// MessageId: SEC_E_OUT_OF_SEQUENCE
+//
+// MessageText:
+//
+// The message supplied for verification is out of sequence
+//
+#define SEC_E_OUT_OF_SEQUENCE ((SECURITY_STATUS)0x1310)
+
+//
+// MessageId: SEC_E_NO_AUTHENTICATING_AUTHORITY
+//
+// MessageText:
+//
+// No authority could be contacted for authentication.
+//
+#define SEC_E_NO_AUTHENTICATING_AUTHORITY ((SECURITY_STATUS)0x1311)
+
+// MessageId: SEC_E_CONTEXT_EXPIRED
+//
+// MessageText:
+//
+// The context has expired and can no longer be used.
+//
+#define SEC_E_CONTEXT_EXPIRED ((SECURITY_STATUS)0x1312)
+
+//
+// MessageId: SEC_E_INCOMPLETE_MESSAGE
+//
+// MessageText:
+//
+// The supplied message is incomplete. The signature was not verified.
+//
+#define SEC_E_INCOMPLETE_MESSAGE ((SECURITY_STATUS)0x1313)
+
+//
+// MessageId: SEC_I_CONTINUE_NEEDED
+//
+// MessageText:
+//
+// The function completed successfully, but must be called
+// again to complete the context
+//
+#define SEC_I_CONTINUE_NEEDED ((SECURITY_STATUS)0x1012)
+
+//
+// MessageId: SEC_I_COMPLETE_NEEDED
+//
+// MessageText:
+//
+// The function completed successfully, but CompleteToken
+// must be called
+//
+#define SEC_I_COMPLETE_NEEDED ((SECURITY_STATUS)0x1013)
+
+//
+// MessageId: SEC_I_COMPLETE_AND_CONTINUE
+//
+// MessageText:
+//
+// The function completed successfully, but both CompleteToken
+// and this function must be called to complete the context
+//
+#define SEC_I_COMPLETE_AND_CONTINUE ((SECURITY_STATUS)0x1014)
+
+//
+// MessageId: SEC_I_LOCAL_LOGON
+//
+// MessageText:
+//
+// The logon was completed, but no network authority was
+// available. The logon was made using locally known information
+//
+#define SEC_I_LOCAL_LOGON ((SECURITY_STATUS)0x1015)
+
+// BUGBUG: This is for backwards compatibility
+//
+// MessageId: SEC_E_OK
+//
+// MessageText:
+//
+// Call completed successfully
+//
+#define SEC_E_OK ((SECURITY_STATUS)0x0000)
+
+#endif // _ISSPERR_H_
diff --git a/public/sdk/inc/issperr.dbg b/public/sdk/inc/issperr.dbg
new file mode 100644
index 000000000..03e7e0c2e
--- /dev/null
+++ b/public/sdk/inc/issperr.dbg
@@ -0,0 +1,37 @@
+//
+// This file maps message Id values in to a text string that contains
+// the symbolic name used for the message Id. Useful for debugging
+// output.
+//
+
+struct {
+ HRESULT MessageId;
+ char *SymbolicName;
+} issperrSymbolicNames[] = {
+ (HRESULT) SEC_E_INSUFFICIENT_MEMORY, "SEC_E_INSUFFICIENT_MEMORY",
+ (HRESULT) SEC_E_INVALID_HANDLE, "SEC_E_INVALID_HANDLE",
+ (HRESULT) SEC_E_UNSUPPORTED_FUNCTION, "SEC_E_UNSUPPORTED_FUNCTION",
+ (HRESULT) SEC_E_TARGET_UNKNOWN, "SEC_E_TARGET_UNKNOWN",
+ (HRESULT) SEC_E_INTERNAL_ERROR, "SEC_E_INTERNAL_ERROR",
+ (HRESULT) SEC_E_SECPKG_NOT_FOUND, "SEC_E_SECPKG_NOT_FOUND",
+ (HRESULT) SEC_E_NOT_OWNER, "SEC_E_NOT_OWNER",
+ (HRESULT) SEC_E_CANNOT_INSTALL, "SEC_E_CANNOT_INSTALL",
+ (HRESULT) SEC_E_INVALID_TOKEN, "SEC_E_INVALID_TOKEN",
+ (HRESULT) SEC_E_CANNOT_PACK, "SEC_E_CANNOT_PACK",
+ (HRESULT) SEC_E_QOP_NOT_SUPPORTED, "SEC_E_QOP_NOT_SUPPORTED",
+ (HRESULT) SEC_E_NO_IMPERSONATION, "SEC_E_NO_IMPERSONATION",
+ (HRESULT) SEC_E_LOGON_DENIED, "SEC_E_LOGON_DENIED",
+ (HRESULT) SEC_E_UNKNOWN_CREDENTIALS, "SEC_E_UNKNOWN_CREDENTIALS",
+ (HRESULT) SEC_E_NO_CREDENTIALS, "SEC_E_NO_CREDENTIALS",
+ (HRESULT) SEC_E_MESSAGE_ALTERED, "SEC_E_MESSAGE_ALTERED",
+ (HRESULT) SEC_E_OUT_OF_SEQUENCE, "SEC_E_OUT_OF_SEQUENCE",
+ (HRESULT) SEC_E_NO_AUTHENTICATING_AUTHORITY, "SEC_E_NO_AUTHENTICATING_AUTHORITY",
+ (HRESULT) SEC_I_CONTINUE_NEEDED, "SEC_I_CONTINUE_NEEDED",
+ (HRESULT) SEC_I_COMPLETE_NEEDED, "SEC_I_COMPLETE_NEEDED",
+ (HRESULT) SEC_I_COMPLETE_AND_CONTINUE, "SEC_I_COMPLETE_AND_CONTINUE",
+ (HRESULT) SEC_I_LOCAL_LOGON, "SEC_I_LOCAL_LOGON",
+ (HRESULT) SEC_E_BAD_PKGID, "SEC_E_BAD_PKGID",
+ (HRESULT) SEC_E_CONTEXT_EXPIRED, "SEC_E_CONTEXT_EXPIRED",
+ (HRESULT) SEC_E_INCOMPLETE_MESSAGE, "SEC_E_INCOMPLETE_MESSAGE",
+ (HRESULT) 0xFFFFFFFF, NULL
+};
diff --git a/public/sdk/inc/issperr.h b/public/sdk/inc/issperr.h
new file mode 100644
index 000000000..d64e45227
--- /dev/null
+++ b/public/sdk/inc/issperr.h
@@ -0,0 +1,319 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: issperr.h
+//
+// Contents: Constant definitions for OLE HRESULT values.
+//
+// History: dd-mmm-yy Author Comment
+// 20-Sep-93 richardw genesis
+//
+// Notes:
+// This is a generated file. Do not modify directly.
+// The MC tool generates this file from private\nls\issperr.mc
+//
+//--------------------------------------------------------------------------
+#ifndef _ISSPERR_H_
+#define _ISSPERR_H_
+// Define the status type.
+
+#ifdef FACILITY_SECURITY
+#undef FACILITY_SECURITY
+#endif
+
+#ifdef STATUS_SEVERITY_SUCCESS
+#undef STATUS_SEVERITY_SUCCESS
+#endif
+
+#ifdef STATUS_SEVERITY_COERROR
+#undef STATUS_SEVERITY_COERROR
+#endif
+
+//
+// Define standard security success code
+//
+
+#define SEC_E_OK ((HRESULT)0x00000000L)
+
+// Define the severities
+//
+// 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_SECURITY 0x9
+
+
+//
+// Define the severity codes
+//
+#define STATUS_SEVERITY_SUCCESS 0x0
+#define STATUS_SEVERITY_COERROR 0x2
+
+
+//
+// MessageId: SEC_E_INSUFFICIENT_MEMORY
+//
+// MessageText:
+//
+// Not enough memory is available to complete this request
+//
+#define SEC_E_INSUFFICIENT_MEMORY ((HRESULT)0x80090300L)
+
+//
+// MessageId: SEC_E_INVALID_HANDLE
+//
+// MessageText:
+//
+// The handle specified is invalid
+//
+#define SEC_E_INVALID_HANDLE ((HRESULT)0x80090301L)
+
+//
+// MessageId: SEC_E_UNSUPPORTED_FUNCTION
+//
+// MessageText:
+//
+// The function requested is not supported
+//
+#define SEC_E_UNSUPPORTED_FUNCTION ((HRESULT)0x80090302L)
+
+//
+// MessageId: SEC_E_TARGET_UNKNOWN
+//
+// MessageText:
+//
+// The specified target is unknown or unreachable
+//
+#define SEC_E_TARGET_UNKNOWN ((HRESULT)0x80090303L)
+
+//
+// MessageId: SEC_E_INTERNAL_ERROR
+//
+// MessageText:
+//
+// The Local Security Authority cannot be contacted
+//
+#define SEC_E_INTERNAL_ERROR ((HRESULT)0x80090304L)
+
+//
+// MessageId: SEC_E_SECPKG_NOT_FOUND
+//
+// MessageText:
+//
+// The requested security package does not exist
+//
+#define SEC_E_SECPKG_NOT_FOUND ((HRESULT)0x80090305L)
+
+//
+// MessageId: SEC_E_NOT_OWNER
+//
+// MessageText:
+//
+// The caller is not the owner of the desired credentials
+//
+#define SEC_E_NOT_OWNER ((HRESULT)0x80090306L)
+
+//
+// MessageId: SEC_E_CANNOT_INSTALL
+//
+// MessageText:
+//
+// The security package failed to initialize, and cannot be installed
+//
+#define SEC_E_CANNOT_INSTALL ((HRESULT)0x80090307L)
+
+//
+// MessageId: SEC_E_INVALID_TOKEN
+//
+// MessageText:
+//
+// The token supplied to the function is invalid
+//
+#define SEC_E_INVALID_TOKEN ((HRESULT)0x80090308L)
+
+//
+// MessageId: SEC_E_CANNOT_PACK
+//
+// MessageText:
+//
+// The security package is not able to marshall the logon buffer,
+// so the logon attempt has failed
+//
+#define SEC_E_CANNOT_PACK ((HRESULT)0x80090309L)
+
+//
+// MessageId: SEC_E_QOP_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The per-message Quality of Protection is not supported by the
+// security package
+//
+#define SEC_E_QOP_NOT_SUPPORTED ((HRESULT)0x8009030AL)
+
+//
+// MessageId: SEC_E_NO_IMPERSONATION
+//
+// MessageText:
+//
+// The security context does not allow impersonation of the client
+//
+#define SEC_E_NO_IMPERSONATION ((HRESULT)0x8009030BL)
+
+//
+// MessageId: SEC_E_LOGON_DENIED
+//
+// MessageText:
+//
+// The logon attempt failed
+//
+#define SEC_E_LOGON_DENIED ((HRESULT)0x8009030CL)
+
+//
+// MessageId: SEC_E_UNKNOWN_CREDENTIALS
+//
+// MessageText:
+//
+// The credentials supplied to the package were not
+// recognized
+//
+#define SEC_E_UNKNOWN_CREDENTIALS ((HRESULT)0x8009030DL)
+
+//
+// MessageId: SEC_E_NO_CREDENTIALS
+//
+// MessageText:
+//
+// No credentials are available in the security package
+//
+#define SEC_E_NO_CREDENTIALS ((HRESULT)0x8009030EL)
+
+//
+// MessageId: SEC_E_MESSAGE_ALTERED
+//
+// MessageText:
+//
+// The message supplied for verification has been altered
+//
+#define SEC_E_MESSAGE_ALTERED ((HRESULT)0x8009030FL)
+
+//
+// MessageId: SEC_E_OUT_OF_SEQUENCE
+//
+// MessageText:
+//
+// The message supplied for verification is out of sequence
+//
+#define SEC_E_OUT_OF_SEQUENCE ((HRESULT)0x80090310L)
+
+//
+// MessageId: SEC_E_NO_AUTHENTICATING_AUTHORITY
+//
+// MessageText:
+//
+// No authority could be contacted for authentication.
+//
+#define SEC_E_NO_AUTHENTICATING_AUTHORITY ((HRESULT)0x80090311L)
+
+//
+// MessageId: SEC_I_CONTINUE_NEEDED
+//
+// MessageText:
+//
+// The function completed successfully, but must be called
+// again to complete the context
+//
+#define SEC_I_CONTINUE_NEEDED ((HRESULT)0x00090312L)
+
+//
+// MessageId: SEC_I_COMPLETE_NEEDED
+//
+// MessageText:
+//
+// The function completed successfully, but CompleteToken
+// must be called
+//
+#define SEC_I_COMPLETE_NEEDED ((HRESULT)0x00090313L)
+
+//
+// MessageId: SEC_I_COMPLETE_AND_CONTINUE
+//
+// MessageText:
+//
+// The function completed successfully, but both CompleteToken
+// and this function must be called to complete the context
+//
+#define SEC_I_COMPLETE_AND_CONTINUE ((HRESULT)0x00090314L)
+
+//
+// MessageId: SEC_I_LOCAL_LOGON
+//
+// MessageText:
+//
+// The logon was completed, but no network authority was
+// available. The logon was made using locally known information
+//
+#define SEC_I_LOCAL_LOGON ((HRESULT)0x00090315L)
+
+//
+// MessageId: SEC_E_BAD_PKGID
+//
+// MessageText:
+//
+// The requested security package does not exist
+//
+#define SEC_E_BAD_PKGID ((HRESULT)0x80090316L)
+
+//
+// MessageId: SEC_E_CONTEXT_EXPIRED
+//
+// MessageText:
+//
+// The context has expired and can no longer be used.
+//
+#define SEC_E_CONTEXT_EXPIRED ((HRESULT)0x80090317L)
+
+//
+// MessageId: SEC_E_INCOMPLETE_MESSAGE
+//
+// MessageText:
+//
+// The supplied message is incomplete. The signature was not verified.
+//
+#define SEC_E_INCOMPLETE_MESSAGE ((HRESULT)0x80090318L)
+
+//
+// Provided for backwards compatibility
+//
+
+#define SEC_E_NO_SPM SEC_E_INTERNAL_ERROR
+#define SEC_E_NOT_SUPPORTED SEC_E_UNSUPPORTED_FUNCTION
+
+#endif // _ISSPERR_H_
diff --git a/public/sdk/inc/isvbop.h b/public/sdk/inc/isvbop.h
new file mode 100644
index 000000000..eba3dc91c
--- /dev/null
+++ b/public/sdk/inc/isvbop.h
@@ -0,0 +1,134 @@
+/*++ BUILD Version: 0001
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ ISVBOP.H
+
+Abstract:
+
+ This is the header file supporting third party bops.
+ isvbop.inc is the inc file for this h file.
+
+Note:
+ Following include file uses 'DB' to define assembly macros. Some
+ assemblers use 'emit' instead. If you are using such a compiler,
+ you will have to change db's to emit's.
+
+--*/
+
+
+#define BOP_3RDPARTY 0x58
+#define BOP_UNSIMULATE 0xFE
+
+/* XLATOFF */
+
+/** RegisterModule - This Bop call is made from the 16 bit module
+ * to register a third party DLL with the bop
+ * manager. This call returns a handle to the
+ * 16bit caller which is to be used later to
+ * dispatch a call to the DLL.
+ *
+ * INPUT:
+ * Client DS:SI - asciiz string of DLL name.
+ * Client ES:DI - asciiz string of Init Routine in the DLL. (Optional)
+ * Client DS:BX - asciiz string to Dispatch routine in the DLL.
+ *
+ * OUTPUT:
+ * SUCCESS:
+ * Client Carry Clear
+ * Client AX = Handle (non Zero)
+ * FAILURE:
+ * Client Carry Set
+ * Client AX = Error Code
+ * AX = 1 - DLL not found
+ * AX = 2 - Dispacth routine not found.
+ * AX = 3 - Init Routine Not Found
+ * AX = 4 - Insufficient Memory
+ *
+ * NOTES:
+ * RegisterModule results in loading the DLL (specified in DS:SI).
+ * Its Init routine (specified in ES:DI) is called. Its Dispatch
+ * routine (specified in DS:BX) is stored away and all the calls
+ * made from DispatchCall are dispacthed to this routine.
+ * If ES and DI both are null than the caller did'nt supply the init
+ * routine.
+ */
+
+#define RegisterModule() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0x0
+
+/** UnRegisterModule - This Bop call is made from the 16 bit module
+ * to unregister a third party DLL with the bop
+ * manager.
+ *
+ * INPUT:
+ * Client AX - Handle returned by RegisterModule Call.
+ *
+ * OUTPUT:
+ * None (VDM Is terminated with a debug message if Handle is invalid)
+ *
+ * NOTES:
+ * Use it if initialization of 16bit app fails after registering the
+ * Bop.
+ */
+
+#define UnRegisterModule() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0x1
+
+/** DispacthCall - This Bop call is made from the 16 bit module
+ * to pass a request to its DLL.
+ *
+ * INPUT:
+ * Client AX - Handle returned by RegisterModule Call.
+ *
+ * OUTPUT:
+ * None (DLL should set the proper output registers etc.)
+ * (VDM Is terminated with a debug message if Handle is invalid)
+ *
+ * NOTES:
+ * Use it to pass a request to 32bit DLL. The request index and the
+ * parameters are passed in different registers. These register settings
+ * are private to the 16bit module and its associated VDD. Bop manager
+ * does'nt know anything about these registers.
+ */
+#define DispatchCall() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_3RDPARTY _asm _emit 0x2
+
+/*** VDDUnSimulate16
+ *
+ * This service causes the simulation of intel instructions to stop and
+ * control to return to VDD.
+ *
+ * INPUT
+ * None
+ *
+ * OUTPUT
+ * None
+ *
+ * NOTES
+ * This service is a macro intended for 16bit stub-drivers. At the
+ * end of worker routine stub-driver should use it.
+ */
+
+#define VDDUnSimulate16() _asm _emit 0xC4 _asm _emit 0xC4 _asm _emit BOP_UNSIMULATE
+
+/* XLATON */
+
+
+/* ASM
+RegisterModule macro
+ db 0C4h, 0C4h, BOP_3RDPARTY, 0
+ endm
+
+UnRegisterModule macro
+ db 0C4h, 0C4h, BOP_3RDPARTY, 1
+ endm
+
+DispatchCall macro
+ db 0C4h, 0C4h, BOP_3RDPARTY, 2
+ endm
+
+VDDUnSimulate16 macro
+ db 0C4h, 0C4h, BOP_UNSIMULATE
+ endm
+
+ */
diff --git a/public/sdk/inc/isvbop.inc b/public/sdk/inc/isvbop.inc
new file mode 100644
index 000000000..328d0481d
--- /dev/null
+++ b/public/sdk/inc/isvbop.inc
@@ -0,0 +1,21 @@
+; This is the inc file for isvbop.h.
+; Please refer to isvbop.h for comments and notes on these interfaces
+;
+BOP_3RDPARTY EQU 58H
+BOP_UNSIMULATE EQU 0FEH
+
+RegisterModule macro
+ db 0C4h, 0C4h, BOP_3RDPARTY, 0
+ endm
+
+UnRegisterModule macro
+ db 0C4h, 0C4h, BOP_3RDPARTY, 1
+ endm
+
+DispatchCall macro
+ db 0C4h, 0C4h, BOP_3RDPARTY, 2
+ endm
+
+VDDUnSimulate16 macro
+ db 0C4h, 0C4h, BOP_UNSIMULATE
+ endm
diff --git a/public/sdk/inc/kerbcon.h b/public/sdk/inc/kerbcon.h
new file mode 100644
index 000000000..f6194024e
--- /dev/null
+++ b/public/sdk/inc/kerbcon.h
@@ -0,0 +1,113 @@
+//+-----------------------------------------------------------------------
+//
+// File: KERBCON.H
+//
+// Contents: Microsoft Kerberos constants
+//
+//
+// History: 25 Feb 92 RichardW Compiled from other files
+//
+//------------------------------------------------------------------------
+
+#ifndef __KERBCON_H__
+#define __KERBCON_H__
+
+
+// Revision of the Kerberos Protocol. MS uses Version 5, Revision 4
+
+#define KERBEROS_VERSION 5
+#define KERBEROS_REVISION 4
+
+
+
+// Encryption Types:
+// These encryption types are supported by the default MS KERBSUPP DLL
+// as crypto systems. Values over 127 are local values, and may be changed
+// without notice.
+
+#define KERB_ETYPE_NULL 0
+#define KERB_ETYPE_DES_CBC_CRC 1
+#define KERB_ETYPE_DES_CBC_MD4 2
+#define KERB_ETYPE_DES_CBC_MD5 3
+
+#define KERB_ETYPE_RC4_MD4 128
+#define KERB_ETYPE_RC4_MD5 129
+#define KERB_ETYPE_RC2_MD4 130
+#define KERB_ETYPE_RC2_MD5 131
+
+
+// Checksum algorithms.
+// These algorithms are keyed internally for our use.
+
+#define KERB_CHECKSUM_NONE 0
+#define KERB_CHECKSUM_CRC32 1
+#define KERB_CHECKSUM_MD4 2
+#define KERB_CHECKSUM_MD5 3
+
+
+// Ticket Flags:
+// Ticket flags are used within a ticket and in the reply to indicate
+// what options are enabled for the ticket.
+
+#define KERBFLAG_FORWARDABLE 0x40000000
+#define KERBFLAG_FORWARDED 0x20000000
+#define KERBFLAG_PROXIABLE 0x10000000
+#define KERBFLAG_PROXY 0x08000000
+#define KERBFLAG_MAY_POSTDATE 0x04000000
+#define KERBFLAG_POSTDATED 0x02000000
+#define KERBFLAG_INVALID 0x01000000
+#define KERBFLAG_RENEWABLE 0x00800000
+#define KERBFLAG_INITIAL 0x00400000
+#define KERBFLAG_PRE_AUTHENT 0x00200000
+#define KERBFLAG_HW_AUTHENT 0x00100000
+#define KERBFLAG_REFERRAL 0x00000001
+#define KERBFLAG_RESERVED 0x800FFFFE
+
+
+// Options:
+// Option bits can be set and passed to the KDC in a TGS request.
+
+#define KERBOPT_FORWARDABLE 0x40000000
+#define KERBOPT_FORWARDED 0x20000000
+#define KERBOPT_PROXIABLE 0x10000000
+#define KERBOPT_PROXY 0x08000000
+#define KERBOPT_ALLOW_POSTDATE 0x04000000
+#define KERBOPT_POSTDATED 0x02000000
+#define KERBOPT_UNUSED 0x01000000
+#define KERBOPT_RENEWABLE 0x00800000
+#define KERBOPT_RENEWABLE_OK 0x00000010
+#define KERBOPT_ENC_TKT_IN_SKEY 0x00000008
+#define KERBOPT_RENEW 0x00000002
+#define KERBOPT_VALIDATE 0x00000001
+#define KERBOPT_RESERVED 0x807FFFE4
+
+//
+// Sizes
+//
+
+
+#define KERBSIZE_AP_REPLY (2*sizeof(ULONG) + \
+ (((sizeof(TimeStamp) + \
+ (2 * sizeof(unsigned long) + \
+ 16 * sizeof(unsigned char)) + \
+ 2 * sizeof(ULONG)) +7) & ~7) + \
+ 2 * sizeof(ULONG) + \
+ 16 * sizeof(UCHAR) + \
+ 24 )
+
+
+// Authentication options. These values can be set in either of
+//
+// PSDomainPolicy::AuthOptions
+// PSLoginParameters::AuthOptions
+
+#define AUTH_REQ_ALLOW_FORWARDABLE 0x40000000
+#define AUTH_REQ_ALLOW_PROXIABLE 0x10000000
+#define AUTH_REQ_ALLOW_POSTDATE 0x04000000
+#define AUTH_REQ_ALLOW_RENEWABLE 0x00800000
+#define AUTH_REQ_ALLOW_NOADDRESS 0x00100000
+#define AUTH_REQ_ALLOW_ENC_TKT_IN_SKEY 0x00000008
+#define AUTH_REQ_ALLOW_VALIDATE 0x00000001
+
+#endif // __KERBCON_H__
+
diff --git a/public/sdk/inc/kerberos.h b/public/sdk/inc/kerberos.h
new file mode 100644
index 000000000..4eedaae4c
--- /dev/null
+++ b/public/sdk/inc/kerberos.h
@@ -0,0 +1,64 @@
+//+-----------------------------------------------------------------------
+//
+// File: KERBEROS.H
+//
+// Contents: Public Kerberos Security Package structures for use
+// with APIs from SECURITY.H
+//
+//
+// History: 26 Feb 92, RichardW Compiled from other files
+//
+//------------------------------------------------------------------------
+
+#ifndef __KERBEROS_H__
+#define __KERBEROS_H__
+#include <ntmsv1_0.h>
+
+#define MICROSOFT_KERBEROS_NAME_A "Kerberos"
+#define MICROSOFT_KERBEROS_NAME_W L"Kerberos"
+#ifdef WIN32_CHICAGO
+#define MICROSOFT_KERBEROS_NAME MICROSOFT_KERBEROS_NAME_A
+#else
+#define MICROSOFT_KERBEROS_NAME MICROSOFT_KERBEROS_NAME_W
+#endif
+
+
+typedef struct _KERB_INIT_CONTEXT_DATA {
+ TimeStamp StartTime; // Start time
+ TimeStamp EndTime; // End time
+ TimeStamp RenewUntilTime; // Renew until time
+ ULONG TicketOptions; // From KERBCON.H
+} KERB_INIT_CONTEXT_DATA, *PKERB_INIT_CONTEXT_DATA;
+
+
+typedef enum _KERB_LOGON_SUBMIT_TYPE {
+ KerbInteractiveLogon = 1
+} KERB_LOGON_SUBMIT_TYPE, *PKERB_LOGON_SUBMIT_TYPE;
+
+
+typedef struct _KERB_INTERACTIVE_LOGON {
+ KERB_LOGON_SUBMIT_TYPE MessageType;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Password;
+ UNICODE_STRING SubAuthData;
+ ULONG Flags;
+} KERB_INTERACTIVE_LOGON, *PKERB_INTERACTIVE_LOGON;
+
+
+#define KERB_LOGON_SUBUATH 0x1
+#define KERB_LOGON_EMAIL_NAMES 0x2
+#define KERB_LOGON_UPDATE_STATISTICS 0x4
+
+//
+// Use the same profile structure as MSV1_0
+//
+
+typedef MSV1_0_INTERACTIVE_PROFILE KERB_INTERACTIVE_PROFILE, *PKERB_INTERACTIVE_PROFILE;
+
+
+
+
+#endif // __KERBEROS_H__
+
+
diff --git a/public/sdk/inc/ks386.inc b/public/sdk/inc/ks386.inc
new file mode 100644
index 000000000..7cbcbfe57
--- /dev/null
+++ b/public/sdk/inc/ks386.inc
@@ -0,0 +1,1097 @@
+
+;
+; Process State Enumerated Type Values
+;
+
+ProcessInMemory equ 00H
+ProcessOutOfMemory equ 01H
+ProcessInTransition equ 02H
+
+;
+; Thread State Enumerated Type Values
+;
+
+Initialized equ 00H
+Ready equ 01H
+Running equ 02H
+Standby equ 03H
+Terminated equ 04H
+Waiting equ 05H
+
+;
+; Wait Reason and Wait Type Enumerated Type Values
+;
+
+WrExecutive equ 00H
+WrEventPair equ 0EH
+WaitAny equ 01H
+WaitAll equ 00H
+
+;
+; Apc State Structure Offset Definitions
+;
+
+AsApcListHead equ 00H
+AsProcess equ 010H
+AsKernelApcInProgress equ 014H
+AsKernelApcPending equ 015H
+AsUserApcPending equ 016H
+
+;
+; Bug Check Code Definitions
+;
+
+APC_INDEX_MISMATCH equ 01H
+DATA_BUS_ERROR equ 02EH
+DATA_COHERENCY_EXCEPTION equ 055H
+HAL1_INITIALIZATION_FAILED equ 061H
+INSTRUCTION_BUS_ERROR equ 02FH
+INSTRUCTION_COHERENCY_EXCEPTION equ 056H
+INTERRUPT_EXCEPTION_NOT_HANDLED equ 03DH
+INTERRUPT_UNWIND_ATTEMPTED equ 03CH
+INVALID_AFFINITY_SET equ 03H
+INVALID_DATA_ACCESS_TRAP equ 04H
+IRQL_GT_ZERO_AT_SYSTEM_SERVICE equ 04AH
+IRQL_NOT_LESS_OR_EQUAL equ 0AH
+KMODE_EXCEPTION_NOT_HANDLED equ 01EH
+NMI_HARDWARE_FAILURE equ 080H
+NO_USER_MODE_CONTEXT equ 0EH
+PAGE_FAULT_WITH_INTERRUPTS_OFF equ 049H
+PANIC_STACK_SWITCH equ 02BH
+SPIN_LOCK_INIT_FAILURE equ 081H
+SYSTEM_EXIT_OWNED_MUTEX equ 039H
+SYSTEM_SERVICE_EXCEPTION equ 03BH
+SYSTEM_UNWIND_PREVIOUS_USER equ 03AH
+TRAP_CAUSE_UNKNOWN equ 012H
+UNEXPECTED_KERNEL_MODE_TRAP equ 07FH
+
+;
+; Breakpoint type definitions
+;
+
+DBG_STATUS_CONTROL_C equ 01H
+
+;
+; Client Id Structure Offset Definitions
+;
+
+CidUniqueProcess equ 00H
+CidUniqueThread equ 04H
+
+;
+; Critical Section Structure Offset Definitions
+;
+
+CsDebugInfo equ 00H
+CsLockCount equ 04H
+CsRecursionCount equ 08H
+CsOwningThread equ 0CH
+CsLockSemaphore equ 010H
+
+;
+; Critical Section Debug Information Structure Offset Definitions
+;
+
+CsType equ 00H
+CsCreatorBackTraceIndex equ 02H
+CsCriticalSection equ 04H
+CsProcessLocksList equ 08H
+CsEntryCount equ 010H
+CsContentionCount equ 014H
+
+;
+; Exception Record Offset, Flag, and Enumerated Type Definitions
+;
+
+EXCEPTION_NONCONTINUABLE equ 01H
+EXCEPTION_UNWINDING equ 02H
+EXCEPTION_EXIT_UNWIND equ 04H
+EXCEPTION_STACK_INVALID equ 08H
+EXCEPTION_NESTED_CALL equ 010H
+EXCEPTION_TARGET_UNWIND equ 020H
+EXCEPTION_COLLIDED_UNWIND equ 040H
+EXCEPTION_UNWIND equ 066H
+EXCEPTION_EXECUTE_HANDLER equ 01H
+EXCEPTION_CONTINUE_SEARCH equ 00H
+EXCEPTION_CONTINUE_EXECUTION equ 0FFFFFFFFH
+EXCEPTION_CHAIN_END equ 0FFFFFFFFH
+
+ExceptionContinueExecution equ 00H
+ExceptionContinueSearch equ 01H
+ExceptionNestedException equ 02H
+ExceptionCollidedUnwind equ 03H
+
+ErExceptionCode equ 00H
+ErExceptionFlags equ 04H
+ErExceptionRecord equ 08H
+ErExceptionAddress equ 0CH
+ErNumberParameters equ 010H
+ErExceptionInformation equ 014H
+ExceptionRecordLength equ 050H
+
+;
+; Fast Mutex Structure Offset Definitions
+;
+
+FmCount equ 00H
+FmOwner equ 04H
+FmContention equ 08H
+FmEvent equ 0CH
+FmOldIrql equ 01CH
+
+;
+; Interrupt Priority Request Level Definitions
+;
+
+APC_LEVEL equ 01H
+DISPATCH_LEVEL equ 02H
+CLOCK1_LEVEL equ 01CH
+CLOCK2_LEVEL equ 01CH
+IPI_LEVEL equ 01DH
+POWER_LEVEL equ 01EH
+PROFILE_LEVEL equ 01BH
+HIGH_LEVEL equ 01FH
+SYNCH_LEVEL equ 01CH
+
+;
+; Large Integer Structure Offset Definitions
+;
+
+LiLowPart equ 00H
+LiHighPart equ 04H
+
+;
+; List Entry Structure Offset Definitions
+;
+
+LsFlink equ 00H
+LsBlink equ 04H
+
+;
+; String Structure Offset Definitions
+;
+
+StrLength equ 00H
+StrMaximumLength equ 02H
+StrBuffer equ 04H
+
+;
+; System Time Structure Offset Definitions
+;
+
+StLowTime equ 00H
+StHigh1Time equ 04H
+StHigh2Time equ 08H
+
+;
+; Time Structure Offset Definitions
+;
+
+TmLowTime equ 00H
+TmHighTime equ 04H
+
+;
+; Thread Switch Counter Offset Definitions
+;
+
+TwFindAny equ 00H
+TwFindIdeal equ 04H
+TwFindLast equ 08H
+TwIdleAny equ 0CH
+TwIdleCurrent equ 010H
+TwIdleIdeal equ 014H
+TwIdleLast equ 018H
+TwPreemptAny equ 01CH
+TwPreemptCurrent equ 020H
+TwPreemptLast equ 024H
+TwSwitchToIdle equ 028H
+
+;
+; Status Code Definitions
+;
+
+STATUS_ACCESS_VIOLATION equ 0C0000005H
+STATUS_ARRAY_BOUNDS_EXCEEDED equ 0C000008CH
+STATUS_BAD_COMPRESSION_BUFFER equ 0C0000242H
+STATUS_BREAKPOINT equ 080000003H
+STATUS_DATATYPE_MISALIGNMENT equ 080000002H
+STATUS_FLOAT_DENORMAL_OPERAND equ 0C000008DH
+STATUS_FLOAT_DIVIDE_BY_ZERO equ 0C000008EH
+STATUS_FLOAT_INEXACT_RESULT equ 0C000008FH
+STATUS_FLOAT_INVALID_OPERATION equ 0C0000090H
+STATUS_FLOAT_OVERFLOW equ 0C0000091H
+STATUS_FLOAT_STACK_CHECK equ 0C0000092H
+STATUS_FLOAT_UNDERFLOW equ 0C0000093H
+STATUS_GUARD_PAGE_VIOLATION equ 080000001H
+STATUS_ILLEGAL_FLOAT_CONTEXT equ 0C000014AH
+STATUS_ILLEGAL_INSTRUCTION equ 0C000001DH
+STATUS_INSTRUCTION_MISALIGNMENT equ 0C00000AAH
+STATUS_INVALID_HANDLE equ 0C0000008H
+STATUS_INVALID_LOCK_SEQUENCE equ 0C000001EH
+STATUS_INVALID_OWNER equ 0C000005AH
+STATUS_INVALID_PARAMETER_1 equ 0C00000EFH
+STATUS_INVALID_SYSTEM_SERVICE equ 0C000001CH
+STATUS_INTEGER_DIVIDE_BY_ZERO equ 0C0000094H
+STATUS_INTEGER_OVERFLOW equ 0C0000095H
+STATUS_IN_PAGE_ERROR equ 0C0000006H
+STATUS_KERNEL_APC equ 0100H
+STATUS_LONGJUMP equ 080000026H
+STATUS_NO_CALLBACK_ACTIVE equ 0C0000258H
+STATUS_NO_EVENT_PAIR equ 0C000014EH
+STATUS_PRIVILEGED_INSTRUCTION equ 0C0000096H
+STATUS_SINGLE_STEP equ 080000004H
+STATUS_STACK_OVERFLOW equ 0C00000FDH
+STATUS_SUCCESS equ 00H
+STATUS_THREAD_IS_TERMINATING equ 0C000004BH
+STATUS_TIMEOUT equ 0102H
+STATUS_UNWIND equ 0C0000027H
+STATUS_WAKE_SYSTEM_DEBUGGER equ 080000007H
+
+;
+; APC Object Structure Offset Definitions
+;
+
+ApType equ 00H
+ApSize equ 02H
+ApThread equ 08H
+ApApcListEntry equ 0CH
+ApKernelRoutine equ 014H
+ApRundownRoutine equ 018H
+ApNormalRoutine equ 01CH
+ApNormalContext equ 020H
+ApSystemArgument1 equ 024H
+ApSystemArgument2 equ 028H
+ApApcStateIndex equ 02CH
+ApApcMode equ 02DH
+ApInserted equ 02EH
+ApcObjectLength equ 030H
+
+;
+; DPC object Structure Offset Definitions
+;
+
+DpType equ 00H
+DpNumber equ 02H
+DpImportance equ 03H
+DpDpcListEntry equ 04H
+DpDeferredRoutine equ 0CH
+DpDeferredContext equ 010H
+DpSystemArgument1 equ 014H
+DpSystemArgument2 equ 018H
+DpLock equ 01CH
+DpcObjectLength equ 020H
+
+;
+; Device Queue Object Structure Offset Definitions
+;
+
+DvType equ 00H
+DvSize equ 02H
+DvDeviceListHead equ 04H
+DvSpinLock equ 0CH
+DvBusy equ 010H
+DeviceQueueObjectLength equ 014H
+
+;
+; Device Queue Entry Structure Offset Definitions
+;
+
+DeDeviceListEntry equ 00H
+DeSortKey equ 08H
+DeInserted equ 0CH
+DeviceQueueEntryLength equ 010H
+
+;
+; Event Object Structure Offset Definitions
+;
+
+EvType equ 00H
+EvSize equ 02H
+EvSignalState equ 04H
+EvWaitListHead equ 08H
+EventObjectLength equ 010H
+
+;
+; Event Pair Object Structure Offset Definitions
+;
+
+EpType equ 00H
+EpSize equ 02H
+EpEventLow equ 04H
+EpEventHigh equ 014H
+
+;
+; Interrupt Object Structure Offset Definitions
+;
+
+InLevelSensitive equ 00H
+InLatched equ 01H
+
+InType equ 00H
+InSize equ 02H
+InInterruptListEntry equ 04H
+InServiceRoutine equ 0CH
+InServiceContext equ 010H
+InSpinLock equ 014H
+InActualLock equ 01CH
+InDispatchAddress equ 020H
+InVector equ 024H
+InIrql equ 028H
+InSynchronizeIrql equ 029H
+InFloatingSave equ 02AH
+InConnected equ 02BH
+InNumber equ 02CH
+InMode equ 030H
+InShareVector equ 02DH
+InDispatchCode equ 03CH
+InterruptObjectLength equ 01E4H
+
+NORMAL_DISPATCH_LENGTH equ 01A8H
+DISPATCH_LENGTH equ 01A8H
+
+;
+; Process Object Structure Offset Definitions
+;
+
+PrType equ 00H
+PrSize equ 02H
+PrSignalState equ 04H
+PrProfileListHead equ 010H
+PrDirectoryTableBase equ 018H
+PrLdtDescriptor equ 020H
+PrInt21Descriptor equ 028H
+PrIopmOffset equ 030H
+PrIopl equ 032H
+PrVdmFlag equ 033H
+PrActiveProcessors equ 034H
+PrKernelTime equ 038H
+PrUserTime equ 03CH
+PrReadyListHead equ 040H
+PrSwapListEntry equ 048H
+PrThreadListHead equ 050H
+PrProcessLock equ 058H
+PrAffinity equ 05CH
+PrStackCount equ 060H
+PrBasePriority equ 062H
+PrThreadQuantum equ 063H
+PrAutoAlignment equ 064H
+PrState equ 065H
+ProcessObjectLength equ 070H
+ExtendedProcessObjectLength equ 0200H
+
+;
+; Profile Object Structure Offset Definitions
+;
+
+PfType equ 00H
+PfSize equ 02H
+PfProfileListEntry equ 04H
+PfProcess equ 0CH
+PfRangeBase equ 010H
+PfRangeLimit equ 014H
+PfBucketShift equ 018H
+PfBuffer equ 01CH
+PfSegment equ 020H
+PfAffinity equ 024H
+PfSource equ 028H
+PfStarted equ 02AH
+ProfileObjectLength equ 02CH
+
+;
+; Queue Object Structure Offset Definitions
+;
+
+QuType equ 00H
+QuSize equ 02H
+QuSignalState equ 04H
+QuEntryListHead equ 010H
+QuCurrentCount equ 018H
+QuMaximumCount equ 01CH
+QuThreadListHead equ 020H
+QueueObjectLength equ 028H
+
+;
+; Thread Object Structure Offset Definitions
+;
+
+EeKernelEventPair equ 00H
+EtCid equ 01E0H
+EtEventPair equ 0224H
+EtPerformanceCountLow equ 0204H
+EtPerformanceCountHigh equ 023CH
+EtEthreadLength equ 0240H
+
+ThType equ 00H
+ThSize equ 02H
+ThSignalState equ 04H
+ThMutantListHead equ 010H
+ThInitialStack equ 018H
+ThStackLimit equ 01CH
+ThTeb equ 020H
+ThTlsArray equ 024H
+ThKernelStack equ 028H
+ThDebugActive equ 02CH
+ThState equ 02DH
+ThAlerted equ 02EH
+ThIopl equ 030H
+ThNpxState equ 031H
+ThSaturation equ 032H
+ThPriority equ 033H
+ThApcState equ 034H
+ThContextSwitches equ 04CH
+ThWaitStatus equ 050H
+ThWaitIrql equ 054H
+ThWaitMode equ 055H
+ThWaitNext equ 056H
+ThWaitReason equ 057H
+ThWaitBlockList equ 058H
+ThWaitListEntry equ 05CH
+ThWaitTime equ 064H
+ThBasePriority equ 068H
+ThDecrementCount equ 069H
+ThPriorityDecrement equ 06AH
+ThQuantum equ 06BH
+ThWaitBlock equ 06CH
+ThKernelApcDisable equ 0D0H
+ThUserAffinity equ 0D4H
+ThSystemAffinityActive equ 0D8H
+ThServiceTable equ 0DCH
+ThQueue equ 0E0H
+ThApcQueueLock equ 0E4H
+ThTimer equ 0E8H
+ThQueueListEntry equ 0110H
+ThAffinity equ 0118H
+ThPreempted equ 011CH
+ThProcessReadyQueue equ 011DH
+ThKernelStackResident equ 011EH
+ThNextProcessor equ 011FH
+ThCallbackStack equ 0120H
+ThWin32Thread equ 0124H
+ThTrapFrame equ 0128H
+ThApcStatePointer equ 012CH
+ThPreviousMode equ 0137H
+ThEnableStackSwap equ 0134H
+ThLargeStack equ 0135H
+ThKernelTime equ 0138H
+ThUserTime equ 013CH
+ThSavedApcState equ 0140H
+ThAlertable equ 0158H
+ThApcStateIndex equ 0159H
+ThApcQueueable equ 015AH
+ThAutoAlignment equ 015BH
+ThStackBase equ 015CH
+ThSuspendApc equ 0160H
+ThSuspendSemaphore equ 0190H
+ThThreadListEntry equ 01A4H
+ThFreezeCount equ 01ACH
+ThSuspendCount equ 01ADH
+ThIdealProcessor equ 01AEH
+ThDisableBoost equ 01AFH
+ThreadObjectLength equ 01B0H
+ExtendedThreadObjectLength equ 0240H
+
+EVENT_WAIT_BLOCK_OFFSET equ 09CH
+NPX_STATE_NOT_LOADED equ 0AH
+NPX_STATE_LOADED equ 00H
+
+;
+; Timer object Structure Offset Definitions
+;
+
+TiType equ 00H
+TiSize equ 02H
+TiInserted equ 03H
+TiSignalState equ 04H
+TiDueTime equ 010H
+TiTimerListEntry equ 018H
+TiDpc equ 020H
+TiPeriod equ 024H
+TimerObjectLength equ 028H
+
+TIMER_TABLE_SIZE equ 080H
+
+;
+; Wait Block Structure Offset Definitions
+;
+
+WbWaitListEntry equ 00H
+WbThread equ 08H
+WbObject equ 0CH
+WbNextWaitBlock equ 010H
+WbWaitKey equ 014H
+WbWaitType equ 016H
+
+;
+; Fiber Structure Offset Definitions
+;
+
+FbFiberData equ 00H
+FbExceptionList equ 04H
+FbStackBase equ 08H
+FbStackLimit equ 0CH
+FbDeallocationStack equ 010H
+FbFiberContext equ 014H
+
+;
+; Process Environment Block Structure Offset Definitions
+;
+
+PeKernelCallbackTable equ 02CH
+
+;
+; System Service Descriptor Table Structure Definitions
+;
+
+NUMBER_SERVICE_TABLES equ 04H
+SERVICE_NUMBER_MASK equ 0FFFH
+SERVICE_TABLE_SHIFT equ 08H
+SERVICE_TABLE_MASK equ 030H
+SERVICE_TABLE_TEST equ 010H
+
+SdBase equ 00H
+SdCount equ 04H
+SdLimit equ 08H
+SdNumber equ 0CH
+
+;
+; Thread Environment Block Structure Offset Definitions
+;
+
+TeStackBase equ 04H
+TeStackLimit equ 08H
+TeFiberData equ 010H
+TeEnvironmentPointer equ 01CH
+TeClientId equ 020H
+TeActiveRpcHandle equ 028H
+TeThreadLocalStoragePointer equ 02CH
+TePeb equ 030H
+TeCsrClientThread equ 03CH
+TeSoftFpcr equ 0C8H
+TeGdiClientPID equ 06F4H
+TeGdiClientTID equ 06F8H
+TeGdiThreadLocalInfo equ 06FCH
+TeglDispatchTable equ 0714H
+TeglSectionInfo equ 0BE0H
+TeglSection equ 0BE4H
+TeglTable equ 0BE8H
+TeglCurrentRC equ 0BECH
+TeglContext equ 0BF0H
+TeDeallocationStack equ 0E0CH
+TeGdiBatchCount equ 0F70H
+TeInstrumentation equ 0F2CH
+
+;
+; Apc Record Structure Offset Definitions
+;
+
+ArNormalRoutine equ 00H
+ArNormalContext equ 04H
+ArSystemArgument1 equ 08H
+ArSystemArgument2 equ 0CH
+ApcRecordLength equ 010H
+
+
+;
+; Processor Control Registers Structure Offset Definitions
+;
+
+KI_BEGIN_KERNEL_RESERVED equ 0FFDF0000H
+ifdef NT_UP
+ P0PCRADDRESS equ 0FFDFF000H
+ PCR equ ds:[0FFDFF000H]
+else
+ PCR equ fs:
+endif
+
+PcExceptionList equ 00H
+PcInitialStack equ 04H
+PcStackLimit equ 08H
+PcSelfPcr equ 01CH
+PcPrcb equ 020H
+PcTeb equ 018H
+PcIrql equ 024H
+PcIRR equ 028H
+PcIrrActive equ 02CH
+PcIDR equ 030H
+PcIdt equ 038H
+PcGdt equ 03CH
+PcTss equ 040H
+PcDebugActive equ 050H
+PcNumber equ 051H
+PcVdmAlert equ 052H
+PcSetMember equ 048H
+PcStallScaleFactor equ 04CH
+PcHal equ 094H
+PcKernel equ 054H
+PcPrcbData equ 0120H
+ProcessorControlRegisterLength equ 0678H
+TebPeb equ 030H
+PebBeingDebugged equ 02H
+PebKernelCallbackTable equ 02CH
+
+;
+; Defines for user shared data
+;
+USER_SHARED_DATA equ 0FFDF0000H
+MM_SHARED_USER_DATA_VA equ 07FFE0000H
+USERDATA equ ds:[0FFDF0000H]
+UsTickCountLow equ 00H
+UsTickCountMultiplier equ 04H
+UsInterruptTime equ 08H
+UsSystemTime equ 014H
+
+;
+; Tss Structure Offset Definitions
+;
+
+TssEsp0 equ 04H
+TssCR3 equ 01CH
+TssIoMapBase equ 066H
+TssIoMaps equ 068H
+TssLength equ 020ACH
+
+;
+; Gdt Descriptor Offset Definitions
+;
+
+KGDT_R3_DATA equ 020H
+KGDT_R3_CODE equ 018H
+KGDT_R0_CODE equ 08H
+KGDT_R0_DATA equ 010H
+KGDT_R0_PCR equ 030H
+KGDT_STACK16 equ 0F8H
+KGDT_CODE16 equ 0F0H
+KGDT_TSS equ 028H
+KGDT_R3_TEB equ 038H
+KGDT_DF_TSS equ 050H
+KGDT_NMI_TSS equ 058H
+KGDT_LDT equ 048H
+
+;
+; GdtEntry Offset Definitions
+;
+
+KgdtBaseLow equ 02H
+KgdtBaseMid equ 04H
+KgdtBaseHi equ 07H
+KgdtLimitHi equ 06H
+KgdtLimitLow equ 00H
+
+
+;
+; Processor Block Structure Offset Definitions
+;
+
+PbCurrentThread equ 04H
+PbNextThread equ 08H
+PbIdleThread equ 0CH
+PbNumber equ 010H
+PbSetMember equ 014H
+PbCpuID equ 019H
+PbCpuType equ 018H
+PbCpuStep equ 01AH
+PbHalReserved equ 017CH
+PbProcessorState equ 01CH
+PbNpxThread equ 01BCH
+PbInterruptCount equ 01C0H
+PbKernelTime equ 01C4H
+PbUserTime equ 01C8H
+PbDpcTime equ 01CCH
+PbInterruptTime equ 01D0H
+PbApcBypassCount equ 01D4H
+PbDpcBypassCount equ 01D8H
+PbAdjustDpcThreshold equ 01DCH
+PbThreadStartCount equ 01F4H
+PbAlignmentFixupCount equ 021CH
+PbContextSwitches equ 0220H
+PbDcacheFlushCount equ 0224H
+PbExceptionDispatchCount equ 0228H
+PbFirstLevelTbFills equ 022CH
+PbFloatingEmulationCount equ 0230H
+PbIcacheFlushCount equ 0234H
+PbSecondLevelTbFills equ 0238H
+PbSystemCalls equ 023CH
+PbCurrentPacket equ 0480H
+PbTargetSet equ 048CH
+PbWorkerRoutine equ 0490H
+PbIpiFrozen equ 0494H
+PbRequestSummary equ 04A0H
+PbSignalDone equ 04A4H
+PbIpiFrame equ 04ACH
+PbDpcInterruptRequested equ 04C0H
+PbMaximumDpcQueueDepth equ 04D0H
+PbMinimumDpcRate equ 04D4H
+PbDpcListHead equ 04E0H
+PbDpcQueueDepth equ 04E8H
+PbDpcRoutineActive equ 04ECH
+PbDpcCount equ 04F0H
+PbDpcLastCount equ 04F4H
+PbDpcRequestRate equ 04F8H
+PbDpcLock equ 0528H
+PbSkipTick equ 052CH
+PbQuantumEnd equ 0550H
+ProcessorBlockLength equ 0560H
+
+;
+; Immediate Interprocessor Command Definitions
+;
+
+IPI_APC equ 01H
+IPI_DPC equ 02H
+IPI_FREEZE equ 04H
+IPI_PACKET_READY equ 08H
+;
+; Thread Environment Block Structure Offset Definitions
+;
+
+TbExceptionList equ 00H
+TbStackBase equ 04H
+TbStackLimit equ 08H
+TbEnvironmentPointer equ 01CH
+TbVersion equ 010H
+TbFiberData equ 010H
+TbArbitraryUserPointer equ 014H
+TbClientId equ 020H
+TbThreadLocalStoragePointer equ 02CH
+TbCountOfOwnedCriticalSections equ 038H
+TbSystemReserved1 equ 0CCH
+TbSystemReserved2 equ 01D4H
+TbVdm equ 0F18H
+TbCsrClientThread equ 03CH
+TbGdiClientPID equ 06F4H
+TbGdiClientTID equ 06F8H
+TbGdiThreadLocalInfo equ 06FCH
+TbglDispatchTable equ 0714H
+TbglSectionInfo equ 0BE0H
+TbglSection equ 0BE4H
+TbglTable equ 0BE8H
+TbglCurrentRC equ 0BECH
+TbglContext equ 0BF0H
+TbWin32ClientInfo equ 044H
+TbWOW32Reserved equ 0C0H
+TbWin32ThreadInfo equ 040H
+TbSpare1 equ 01A4H
+TbExceptionCode equ 01A8H
+TbDeallocationStack equ 0E0CH
+TbGdiBatchCount equ 0F70H
+;
+;
+; Time Fields (TIME_FIELDS) Structure Offset Definitions
+;
+
+TfSecond equ 0AH
+TfMinute equ 08H
+TfHour equ 06H
+TfWeekday equ 0EH
+TfDay equ 04H
+TfMonth equ 02H
+TfYear equ 00H
+TfMilliseconds equ 0CH
+
+;
+; constants for system irql and IDT vector conversion
+;
+
+MAXIMUM_IDTVECTOR equ 0FFH
+MAXIMUM_PRIMARY_VECTOR equ 0FFH
+PRIMARY_VECTOR_BASE equ 030H
+RPL_MASK equ 03H
+MODE_MASK equ 01H
+
+;
+; Flags in the CR0 register
+;
+
+CR0_PG equ 080000000H
+CR0_ET equ 010H
+CR0_TS equ 08H
+CR0_EM equ 04H
+CR0_MP equ 02H
+CR0_PE equ 01H
+CR0_CD equ 040000000H
+CR0_NW equ 020000000H
+CR0_AM equ 040000H
+CR0_WP equ 010000H
+CR0_NE equ 020H
+
+;
+; Flags in the CR4 register
+;
+
+CR4_VME equ 01H
+CR4_PVI equ 02H
+CR4_TSD equ 04H
+CR4_DE equ 08H
+CR4_PSE equ 010H
+CR4_PAE equ 020H
+CR4_MCE equ 040H
+CR4_PGE equ 080H
+;
+; Miscellaneous Definitions
+;
+
+MAXIMUM_PROCESSORS equ 020H
+INITIAL_STALL_COUNT equ 064H
+IRQL_NOT_GREATER_OR_EQUAL equ 09H
+IRQL_NOT_LESS_OR_EQUAL equ 0AH
+BASE_PRIORITY_THRESHOLD equ 08H
+EVENT_PAIR_INCREMENT equ 01H
+LOW_REALTIME_PRIORITY equ 010H
+BlackHole equ 0FFFFA000H
+KERNEL_LARGE_STACK_COMMIT equ 03000H
+KERNEL_STACK_SIZE equ 03000H
+DOUBLE_FAULT_STACK_SIZE equ 01000H
+EFLAG_SELECT equ 0C000H
+BREAKPOINT_BREAK equ 00H
+IPI_FREEZE equ 04H
+CLOCK_QUANTUM_DECREMENT equ 03H
+READY_SKIP_QUANTUM equ 02H
+THREAD_QUANTUM equ 06H
+WAIT_QUANTUM_DECREMENT equ 01H
+ROUND_TRIP_DECREMENT_COUNT equ 010H
+
+;
+; Trap Frame Offset Definitions and Length
+;
+
+TsExceptionList equ 04CH
+TsPreviousPreviousMode equ 048H
+TsSegGs equ 030H
+TsSegFs equ 050H
+TsSegEs equ 034H
+TsSegDs equ 038H
+TsEdi equ 054H
+TsEsi equ 058H
+TsEbp equ 060H
+TsEbx equ 05CH
+TsEdx equ 03CH
+TsEcx equ 040H
+TsEax equ 044H
+TsErrCode equ 064H
+TsEip equ 068H
+TsSegCs equ 06CH
+TsEflags equ 070H
+TsHardwareEsp equ 074H
+TsHardwareSegSs equ 078H
+TsTempSegCs equ 010H
+TsTempEsp equ 014H
+TsDbgEbp equ 00H
+TsDbgEip equ 04H
+TsDbgArgMark equ 08H
+TsDbgArgPointer equ 0CH
+TsDr0 equ 018H
+TsDr1 equ 01CH
+TsDr2 equ 020H
+TsDr3 equ 024H
+TsDr6 equ 028H
+TsDr7 equ 02CH
+TsV86Es equ 07CH
+TsV86Ds equ 080H
+TsV86Fs equ 084H
+TsV86Gs equ 088H
+KTRAP_FRAME_LENGTH equ 08CH
+KTRAP_FRAME_ALIGN equ 04H
+FRAME_EDITED equ 0FFF8H
+EFLAGS_ALIGN_CHECK equ 040000H
+EFLAGS_V86_MASK equ 020000H
+EFLAGS_INTERRUPT_MASK equ 0200H
+EFLAGS_VIF equ 080000H
+EFLAGS_VIP equ 0100000H
+EFLAGS_USER_SANITIZE equ 01E0DD7H
+
+;
+; Context Frame Offset and Flag Definitions
+;
+
+CONTEXT_FULL equ 010007H
+CONTEXT_DEBUG_REGISTERS equ 010010H
+CONTEXT_CONTROL equ 010001H
+CONTEXT_FLOATING_POINT equ 010008H
+CONTEXT_INTEGER equ 010002H
+CONTEXT_SEGMENTS equ 010004H
+
+CsContextFlags equ 00H
+CsFloatSave equ 01CH
+CsSegGs equ 08CH
+CsSegFs equ 090H
+CsSegEs equ 094H
+CsSegDs equ 098H
+CsEdi equ 09CH
+CsEsi equ 0A0H
+CsEbp equ 0B4H
+CsEbx equ 0A4H
+CsEdx equ 0A8H
+CsEcx equ 0ACH
+CsEax equ 0B0H
+CsEip equ 0B8H
+CsSegCs equ 0BCH
+CsEflags equ 0C0H
+CsEsp equ 0C4H
+CsSegSs equ 0C8H
+CsDr0 equ 04H
+CsDr1 equ 08H
+CsDr2 equ 0CH
+CsDr3 equ 010H
+CsDr6 equ 014H
+CsDr7 equ 018H
+ContextFrameLength equ 0D0H
+DR6_LEGAL equ 0E00FH
+DR7_LEGAL equ 0FFFF0155H
+DR7_ACTIVE equ 055H
+ErrHandler equ 04H
+ErrNext equ 00H
+
+;
+; Floating save area field offset definitions
+;
+FpControlWord equ 00H
+FpStatusWord equ 04H
+FpTagWord equ 08H
+FpErrorOffset equ 0CH
+FpErrorSelector equ 010H
+FpDataOffset equ 014H
+FpDataSelector equ 018H
+FpRegisterArea equ 01CH
+FpCr0NpxState equ 06CH
+
+NPX_FRAME_LENGTH equ 070H
+;
+; Processor State Frame Offset Definitions
+;
+
+PsContextFrame equ 00H
+PsSpecialRegisters equ 0CCH
+SrCr0 equ 00H
+SrCr2 equ 04H
+SrCr3 equ 08H
+SrCr4 equ 0CH
+SrKernelDr0 equ 010H
+SrKernelDr1 equ 014H
+SrKernelDr2 equ 018H
+SrKernelDr3 equ 01CH
+SrKernelDr6 equ 020H
+SrKernelDr7 equ 024H
+SrGdtr equ 02AH
+SrIdtr equ 032H
+SrTr equ 038H
+SrLdtr equ 03AH
+ProcessorStateLength equ 0120H
+;
+; EPROCESS
+;
+
+EpDebugPort equ 0FCH
+
+;
+; NTDDK Resource
+;
+
+RsOwnerThreads equ 08H
+RsOwnerCounts equ 0CH
+RsTableSize equ 010H
+RsActiveCount equ 012H
+RsFlag equ 014H
+RsInitialOwnerThreads equ 01CH
+RsOwnedExclusive equ 080H
+;
+; Machine type definitions (Temporarily)
+;
+
+MACHINE_TYPE_ISA equ 00H
+MACHINE_TYPE_EISA equ 01H
+MACHINE_TYPE_MCA equ 02H
+;
+; KeFeatureBits defines
+;
+
+KF_V86_VIS equ 01H
+KF_RDTSC equ 02H
+KF_CR4 equ 04H
+KF_GLOBAL_PAGE equ 010H
+KF_LARGE_PAGE equ 020H
+KF_CMPXCHG8B equ 080H
+;
+; LoaderParameterBlock offsets relative to base
+;
+
+LpbLoadOrderListHead equ 00H
+LpbMemoryDescriptorListHead equ 08H
+LpbKernelStack equ 018H
+LpbPrcb equ 01CH
+LpbProcess equ 020H
+LpbThread equ 024H
+LpbI386 equ 05CH
+LpbRegistryLength equ 028H
+LpbRegistryBase equ 02CH
+LpbConfigurationRoot equ 030H
+LpbArcBootDeviceName equ 034H
+LpbArcHalDeviceName equ 038H
+PAGE_SIZE equ 01000H
+
+;
+; VDM equates.
+;
+
+VDM_INDEX_Invalid equ 00H
+VDM_INDEX_0F equ 01H
+VDM_INDEX_ESPrefix equ 02H
+VDM_INDEX_CSPrefix equ 03H
+VDM_INDEX_SSPrefix equ 04H
+VDM_INDEX_DSPrefix equ 05H
+VDM_INDEX_FSPrefix equ 06H
+VDM_INDEX_GSPrefix equ 07H
+VDM_INDEX_OPER32Prefix equ 08H
+VDM_INDEX_ADDR32Prefix equ 09H
+VDM_INDEX_INSB equ 0AH
+VDM_INDEX_INSW equ 0BH
+VDM_INDEX_OUTSB equ 0CH
+VDM_INDEX_OUTSW equ 0DH
+VDM_INDEX_PUSHF equ 0EH
+VDM_INDEX_POPF equ 0FH
+VDM_INDEX_INTnn equ 010H
+VDM_INDEX_INTO equ 011H
+VDM_INDEX_IRET equ 012H
+VDM_INDEX_NPX equ 013H
+VDM_INDEX_INBimm equ 014H
+VDM_INDEX_INWimm equ 015H
+VDM_INDEX_OUTBimm equ 016H
+VDM_INDEX_OUTWimm equ 017H
+VDM_INDEX_INB equ 018H
+VDM_INDEX_INW equ 019H
+VDM_INDEX_OUTB equ 01AH
+VDM_INDEX_OUTW equ 01BH
+VDM_INDEX_LOCKPrefix equ 01CH
+VDM_INDEX_REPNEPrefix equ 01DH
+VDM_INDEX_REPPrefix equ 01EH
+VDM_INDEX_CLI equ 01FH
+VDM_INDEX_STI equ 020H
+VDM_INDEX_HLT equ 021H
+MAX_VDM_INDEX equ 022H
+
+;
+; VDM feature bits.
+;
+
+V86_VIRTUAL_INT_EXTENSIONS equ 01H
+PM_VIRTUAL_INT_EXTENSIONS equ 02H
+
+;
+; Selector types.
+;
+
+SEL_TYPE_NP equ 040H
+
+;
+; Usermode callout frame definitions
+;
+
+CuInStk equ 00H
+CuTrFr equ 04H
+CuCbStk equ 08H
+CuEdi equ 0CH
+CuEsi equ 010H
+CuEbx equ 014H
+CuEbp equ 018H
+CuRet equ 01CH
+CuOutBf equ 020H
+CuOutLn equ 024H
diff --git a/public/sdk/inc/ksalpha.h b/public/sdk/inc/ksalpha.h
new file mode 100644
index 000000000..194fa8291
--- /dev/null
+++ b/public/sdk/inc/ksalpha.h
@@ -0,0 +1,1267 @@
+#include "kxalpha.h"
+
+//
+// Process State Enumerated Type Values
+//
+
+#define ProcessInMemory 0x0
+#define ProcessOutOfMemory 0x1
+#define ProcessInTransition 0x2
+
+//
+// Thread State Enumerated Type Values
+//
+
+#define Initialized 0x0
+#define Ready 0x1
+#define Running 0x2
+#define Standby 0x3
+#define Terminated 0x4
+#define Waiting 0x5
+
+//
+// Wait Reason and Wait Type Enumerated Type Values
+//
+
+#define WrExecutive 0x0
+#define WrEventPair 0xe
+#define WaitAny 0x1
+#define WaitAll 0x0
+
+//
+// Apc State Structure Offset Definitions
+//
+
+#define AsApcListHead 0x0
+#define AsProcess 0x10
+#define AsKernelApcInProgress 0x14
+#define AsKernelApcPending 0x15
+#define AsUserApcPending 0x16
+
+//
+// Bug Check Code Definitions
+//
+
+#define APC_INDEX_MISMATCH 0x1
+#define DATA_BUS_ERROR 0x2e
+#define DATA_COHERENCY_EXCEPTION 0x55
+#define HAL1_INITIALIZATION_FAILED 0x61
+#define INSTRUCTION_BUS_ERROR 0x2f
+#define INSTRUCTION_COHERENCY_EXCEPTION 0x56
+#define INTERRUPT_EXCEPTION_NOT_HANDLED 0x3d
+#define INTERRUPT_UNWIND_ATTEMPTED 0x3c
+#define INVALID_AFFINITY_SET 0x3
+#define INVALID_DATA_ACCESS_TRAP 0x4
+#define IRQL_GT_ZERO_AT_SYSTEM_SERVICE 0x4a
+#define IRQL_NOT_LESS_OR_EQUAL 0xa
+#define KMODE_EXCEPTION_NOT_HANDLED 0x1e
+#define NMI_HARDWARE_FAILURE 0x80
+#define NO_USER_MODE_CONTEXT 0xe
+#define PAGE_FAULT_WITH_INTERRUPTS_OFF 0x49
+#define PANIC_STACK_SWITCH 0x2b
+#define SPIN_LOCK_INIT_FAILURE 0x81
+#define SYSTEM_EXIT_OWNED_MUTEX 0x39
+#define SYSTEM_SERVICE_EXCEPTION 0x3b
+#define SYSTEM_UNWIND_PREVIOUS_USER 0x3a
+#define TRAP_CAUSE_UNKNOWN 0x12
+#define UNEXPECTED_KERNEL_MODE_TRAP 0x7f
+
+//
+// Breakpoint type definitions
+//
+
+#define DBG_STATUS_CONTROL_C 0x1
+
+//
+// Client Id Structure Offset Definitions
+//
+
+#define CidUniqueProcess 0x0
+#define CidUniqueThread 0x4
+
+//
+// Critical Section Structure Offset Definitions
+//
+
+#define CsDebugInfo 0x0
+#define CsLockCount 0x4
+#define CsRecursionCount 0x8
+#define CsOwningThread 0xc
+#define CsLockSemaphore 0x10
+
+//
+// Critical Section Debug Information Structure Offset Definitions
+//
+
+#define CsType 0x0
+#define CsCreatorBackTraceIndex 0x2
+#define CsCriticalSection 0x4
+#define CsProcessLocksList 0x8
+#define CsEntryCount 0x10
+#define CsContentionCount 0x14
+
+//
+// Dispatcher Context Structure Offset Definitions
+//
+
+#define DcControlPc 0x0
+#define DcFunctionEntry 0x4
+#define DcEstablisherFrame 0x8
+#define DcContextRecord 0xc
+
+//
+// Exception Record Offset, Flag, and Enumerated Type Definitions
+//
+
+#define EXCEPTION_NONCONTINUABLE 0x1
+#define EXCEPTION_UNWINDING 0x2
+#define EXCEPTION_EXIT_UNWIND 0x4
+#define EXCEPTION_STACK_INVALID 0x8
+#define EXCEPTION_NESTED_CALL 0x10
+#define EXCEPTION_TARGET_UNWIND 0x20
+#define EXCEPTION_COLLIDED_UNWIND 0x40
+#define EXCEPTION_UNWIND 0x66
+#define EXCEPTION_EXECUTE_HANDLER 0x1
+#define EXCEPTION_CONTINUE_SEARCH 0x0
+#define EXCEPTION_CONTINUE_EXECUTION 0xffffffff
+
+#define ExceptionContinueExecution 0x0
+#define ExceptionContinueSearch 0x1
+#define ExceptionNestedException 0x2
+#define ExceptionCollidedUnwind 0x3
+
+#define ErExceptionCode 0x0
+#define ErExceptionFlags 0x4
+#define ErExceptionRecord 0x8
+#define ErExceptionAddress 0xc
+#define ErNumberParameters 0x10
+#define ErExceptionInformation 0x14
+#define ExceptionRecordLength 0x50
+
+//
+// Fast Mutex Structure Offset Definitions
+//
+
+#define FmCount 0x0
+#define FmOwner 0x4
+#define FmContention 0x8
+#define FmEvent 0xc
+#define FmOldIrql 0x1c
+
+//
+// Interrupt Priority Request Level Definitions
+//
+
+#define APC_LEVEL 0x1
+#define DISPATCH_LEVEL 0x2
+#define IPI_LEVEL 0x6
+#define POWER_LEVEL 0x7
+#define PROFILE_LEVEL 0x3
+#define HIGH_LEVEL 0x7
+#define SYNCH_LEVEL 0x5
+
+//
+// Large Integer Structure Offset Definitions
+//
+
+#define LiLowPart 0x0
+#define LiHighPart 0x4
+
+//
+// List Entry Structure Offset Definitions
+//
+
+#define LsFlink 0x0
+#define LsBlink 0x4
+
+//
+// String Structure Offset Definitions
+//
+
+#define StrLength 0x0
+#define StrMaximumLength 0x2
+#define StrBuffer 0x4
+
+//
+// Time Structure Offset Definitions
+//
+
+#define TmLowTime 0x0
+#define TmHighTime 0x4
+
+//
+// Thread Switch Counter Offset Definitions
+//
+
+#define TwFindAny 0x0
+#define TwFindIdeal 0x4
+#define TwFindLast 0x8
+#define TwIdleAny 0xc
+#define TwIdleCurrent 0x10
+#define TwIdleIdeal 0x14
+#define TwIdleLast 0x18
+#define TwPreemptAny 0x1c
+#define TwPreemptCurrent 0x20
+#define TwPreemptLast 0x24
+#define TwSwitchToIdle 0x28
+
+//
+// Status Code Definitions
+//
+
+#define STATUS_ALPHA_ARITHMETIC_EXCEPTION 0xc0000092
+#define STATUS_ALPHA_BAD_VIRTUAL_ADDRESS 0xc0000005
+#define STATUS_ALPHA_FLOATING_NOT_IMPLEMENTED 0xc000014a
+#define STATUS_ALPHA_GENTRAP 0xc00000aa
+#define STATUS_ALPHA_MACHINE_CHECK 0xdfff002e
+#define STATUS_ACCESS_VIOLATION 0xc0000005
+#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xc000008c
+#define STATUS_BAD_COMPRESSION_BUFFER 0xc0000242
+#define STATUS_BREAKPOINT 0x80000003
+#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
+#define STATUS_FLOAT_DENORMAL_OPERAND 0xc000008d
+#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xc000008e
+#define STATUS_FLOAT_INEXACT_RESULT 0xc000008f
+#define STATUS_FLOAT_INVALID_OPERATION 0xc0000090
+#define STATUS_FLOAT_OVERFLOW 0xc0000091
+#define STATUS_FLOAT_STACK_CHECK 0xc0000092
+#define STATUS_FLOAT_UNDERFLOW 0xc0000093
+#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
+#define STATUS_ILLEGAL_FLOAT_CONTEXT 0xc000014a
+#define STATUS_ILLEGAL_INSTRUCTION 0xc000001d
+#define STATUS_INSTRUCTION_MISALIGNMENT 0xc00000aa
+#define STATUS_INVALID_HANDLE 0xc0000008
+#define STATUS_INVALID_LOCK_SEQUENCE 0xc000001e
+#define STATUS_INVALID_OWNER 0xc000005a
+#define STATUS_INVALID_PARAMETER_1 0xc00000ef
+#define STATUS_INVALID_SYSTEM_SERVICE 0xc000001c
+#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xc0000094
+#define STATUS_INTEGER_OVERFLOW 0xc0000095
+#define STATUS_IN_PAGE_ERROR 0xc0000006
+#define STATUS_KERNEL_APC 0x100
+#define STATUS_LONGJUMP 0x80000026
+#define STATUS_NO_CALLBACK_ACTIVE 0xc0000258
+#define STATUS_NO_EVENT_PAIR 0xc000014e
+#define STATUS_PRIVILEGED_INSTRUCTION 0xc0000096
+#define STATUS_SINGLE_STEP 0x80000004
+#define STATUS_STACK_OVERFLOW 0xc00000fd
+#define STATUS_SUCCESS 0x0
+#define STATUS_THREAD_IS_TERMINATING 0xc000004b
+#define STATUS_TIMEOUT 0x102
+#define STATUS_UNWIND 0xc0000027
+#define STATUS_WAKE_SYSTEM_DEBUGGER 0x80000007
+
+//
+// APC Object Structure Offset Definitions
+//
+
+#define ApType 0x0
+#define ApSize 0x2
+#define ApThread 0x8
+#define ApApcListEntry 0xc
+#define ApKernelRoutine 0x14
+#define ApRundownRoutine 0x18
+#define ApNormalRoutine 0x1c
+#define ApNormalContext 0x20
+#define ApSystemArgument1 0x24
+#define ApSystemArgument2 0x28
+#define ApApcStateIndex 0x2c
+#define ApApcMode 0x2d
+#define ApInserted 0x2e
+#define ApcObjectLength 0x30
+
+//
+// DPC object Structure Offset Definitions
+//
+
+#define DpType 0x0
+#define DpNumber 0x2
+#define DpImportance 0x3
+#define DpDpcListEntry 0x4
+#define DpDeferredRoutine 0xc
+#define DpDeferredContext 0x10
+#define DpSystemArgument1 0x14
+#define DpSystemArgument2 0x18
+#define DpLock 0x1c
+#define DpcObjectLength 0x20
+
+//
+// Device Queue Object Structure Offset Definitions
+//
+
+#define DvType 0x0
+#define DvSize 0x2
+#define DvDeviceListHead 0x4
+#define DvSpinLock 0xc
+#define DvBusy 0x10
+#define DeviceQueueObjectLength 0x14
+
+//
+// Device Queue Entry Structure Offset Definitions
+//
+
+#define DeDeviceListEntry 0x0
+#define DeSortKey 0x8
+#define DeInserted 0xc
+#define DeviceQueueEntryLength 0x10
+
+//
+// Event Object Structure Offset Definitions
+//
+
+#define EvType 0x0
+#define EvSize 0x2
+#define EvSignalState 0x4
+#define EvWaitListHead 0x8
+#define EventObjectLength 0x10
+
+//
+// Event Pair Object Structure Offset Definitions
+//
+
+#define EpType 0x0
+#define EpSize 0x2
+#define EpEventLow 0x4
+#define EpEventHigh 0x14
+
+//
+// Interrupt Object Structure Offset Definitions
+//
+
+#define InLevelSensitive 0x0
+#define InLatched 0x1
+
+#define InType 0x0
+#define InSize 0x2
+#define InInterruptListEntry 0x4
+#define InServiceRoutine 0xc
+#define InServiceContext 0x10
+#define InSpinLock 0x14
+#define InActualLock 0x1c
+#define InDispatchAddress 0x20
+#define InVector 0x24
+#define InIrql 0x28
+#define InSynchronizeIrql 0x29
+#define InFloatingSave 0x2a
+#define InConnected 0x2b
+#define InNumber 0x2c
+#define InMode 0x30
+#define InShareVector 0x2d
+#define InDispatchCode 0x3c
+#define InterruptObjectLength 0x4c
+
+//
+// Process Object Structure Offset Definitions
+//
+
+#define PrType 0x0
+#define PrSize 0x2
+#define PrSignalState 0x4
+#define PrProfileListHead 0x10
+#define PrDirectoryTableBase 0x18
+#define PrActiveProcessors 0x20
+#define PrKernelTime 0x24
+#define PrUserTime 0x28
+#define PrReadyListHead 0x2c
+#define PrSwapListEntry 0x34
+#define PrThreadListHead 0x3c
+#define PrProcessLock 0x44
+#define PrAffinity 0x48
+#define PrStackCount 0x4c
+#define PrBasePriority 0x4e
+#define PrThreadQuantum 0x4f
+#define PrAutoAlignment 0x50
+#define PrState 0x51
+#define ProcessObjectLength 0x60
+#define ExtendedProcessObjectLength 0x1f0
+
+//
+// Profile Object Structure Offset Definitions
+//
+
+#define PfType 0x0
+#define PfSize 0x2
+#define PfProfileListEntry 0x4
+#define PfProcess 0xc
+#define PfRangeBase 0x10
+#define PfRangeLimit 0x14
+#define PfBucketShift 0x18
+#define PfBuffer 0x1c
+#define PfSegment 0x20
+#define PfAffinity 0x24
+#define PfSource 0x28
+#define PfStarted 0x2a
+#define ProfileObjectLength 0x2c
+
+//
+// Queue Object Structure Offset Definitions
+//
+
+#define QuType 0x0
+#define QuSize 0x2
+#define QuSignalState 0x4
+#define QuEntryListHead 0x10
+#define QuCurrentCount 0x18
+#define QuMaximumCount 0x1c
+#define QuThreadListHead 0x20
+#define QueueObjectLength 0x28
+
+//
+// Thread Object Structure Offset Definitions
+//
+
+#define EeKernelEventPair 0x0
+#define EtCid 0x1e0
+#define EtEventPair 0x224
+#define EtPerformanceCountLow 0x204
+#define EtPerformanceCountHigh 0x23c
+#define EtEthreadLength 0x240
+
+#define ThType 0x0
+#define ThSize 0x2
+#define ThSignalState 0x4
+#define ThMutantListHead 0x10
+#define ThInitialStack 0x18
+#define ThStackLimit 0x1c
+#define ThTeb 0x20
+#define ThTlsArray 0x24
+#define ThKernelStack 0x28
+#define ThDebugActive 0x2c
+#define ThState 0x2d
+#define ThAlerted 0x2e
+#define ThIopl 0x30
+#define ThNpxState 0x31
+#define ThSaturation 0x32
+#define ThPriority 0x33
+#define ThApcState 0x34
+#define ThContextSwitches 0x4c
+#define ThWaitStatus 0x50
+#define ThWaitIrql 0x54
+#define ThWaitMode 0x55
+#define ThWaitNext 0x56
+#define ThWaitReason 0x57
+#define ThWaitBlockList 0x58
+#define ThWaitListEntry 0x5c
+#define ThWaitTime 0x64
+#define ThBasePriority 0x68
+#define ThDecrementCount 0x69
+#define ThPriorityDecrement 0x6a
+#define ThQuantum 0x6b
+#define ThWaitBlock 0x6c
+#define ThKernelApcDisable 0xd0
+#define ThUserAffinity 0xd4
+#define ThSystemAffinityActive 0xd8
+#define ThServiceTable 0xdc
+#define ThQueue 0xe0
+#define ThApcQueueLock 0xe4
+#define ThTimer 0xe8
+#define ThQueueListEntry 0x110
+#define ThAffinity 0x118
+#define ThPreempted 0x11c
+#define ThProcessReadyQueue 0x11d
+#define ThKernelStackResident 0x11e
+#define ThNextProcessor 0x11f
+#define ThCallbackStack 0x120
+#define ThWin32Thread 0x124
+#define ThTrapFrame 0x128
+#define ThApcStatePointer 0x12c
+#define ThPreviousMode 0x137
+#define ThEnableStackSwap 0x134
+#define ThLargeStack 0x135
+#define ThKernelTime 0x138
+#define ThUserTime 0x13c
+#define ThSavedApcState 0x140
+#define ThAlertable 0x158
+#define ThApcStateIndex 0x159
+#define ThApcQueueable 0x15a
+#define ThAutoAlignment 0x15b
+#define ThStackBase 0x15c
+#define ThSuspendApc 0x160
+#define ThSuspendSemaphore 0x190
+#define ThThreadListEntry 0x1a4
+#define ThFreezeCount 0x1ac
+#define ThSuspendCount 0x1ad
+#define ThIdealProcessor 0x1ae
+#define ThDisableBoost 0x1af
+#define ThreadObjectLength 0x1b0
+#define ExtendedThreadObjectLength 0x240
+
+#define EVENT_WAIT_BLOCK_OFFSET 0x9c
+
+//
+// Timer object Structure Offset Definitions
+//
+
+#define TiType 0x0
+#define TiSize 0x2
+#define TiInserted 0x3
+#define TiSignalState 0x4
+#define TiDueTime 0x10
+#define TiTimerListEntry 0x18
+#define TiDpc 0x20
+#define TiPeriod 0x24
+#define TimerObjectLength 0x28
+
+#define TIMER_TABLE_SIZE 0x80
+
+//
+// Wait Block Structure Offset Definitions
+//
+
+#define WbWaitListEntry 0x0
+#define WbThread 0x8
+#define WbObject 0xc
+#define WbNextWaitBlock 0x10
+#define WbWaitKey 0x14
+#define WbWaitType 0x16
+
+//
+// Fiber Structure Offset Definitions
+//
+
+#define FbFiberData 0x0
+#define FbExceptionList 0x4
+#define FbStackBase 0x8
+#define FbStackLimit 0xc
+#define FbDeallocationStack 0x10
+#define FbFiberContext 0x18
+
+//
+// Process Environment Block Structure Offset Definitions
+//
+
+#define PeKernelCallbackTable 0x2c
+
+//
+// System Service Descriptor Table Structure Definitions
+//
+
+#define NUMBER_SERVICE_TABLES 0x4
+#define SERVICE_NUMBER_MASK 0xfff
+#define SERVICE_TABLE_SHIFT 0x8
+#define SERVICE_TABLE_MASK 0x30
+#define SERVICE_TABLE_TEST 0x10
+
+#define SdBase 0x0
+#define SdCount 0x4
+#define SdLimit 0x8
+#define SdNumber 0xc
+
+//
+// Thread Environment Block Structure Offset Definitions
+//
+
+#define TeStackBase 0x4
+#define TeStackLimit 0x8
+#define TeFiberData 0x10
+#define TeEnvironmentPointer 0x1c
+#define TeClientId 0x20
+#define TeActiveRpcHandle 0x28
+#define TeThreadLocalStoragePointer 0x2c
+#define TePeb 0x30
+#define TeCsrClientThread 0x3c
+#define TeSoftFpcr 0xc8
+#define TeGdiClientPID 0x6f4
+#define TeGdiClientTID 0x6f8
+#define TeGdiThreadLocalInfo 0x6fc
+#define TeglDispatchTable 0x714
+#define TeglSectionInfo 0xbe0
+#define TeglSection 0xbe4
+#define TeglTable 0xbe8
+#define TeglCurrentRC 0xbec
+#define TeglContext 0xbf0
+#define TeDeallocationStack 0xe0c
+#define TeGdiBatchCount 0xf70
+#define TeInstrumentation 0xf2c
+
+//
+// Processor Control Registers Structure Offset Definitions
+//
+
+#define PCR_MINOR_VERSION 0x1
+#define PCR_MAJOR_VERSION 0x1
+#define PcMinorVersion 0x0
+#define PcMajorVersion 0x4
+#define PcPalBaseAddress 0x8
+#define PcPalMajorVersion 0x10
+#define PcPalMinorVersion 0x14
+#define PcPalSequenceVersion 0x18
+#define PcPalMajorSpecification 0x1c
+#define PcPalMinorSpecification 0x20
+#define PcFirmwareRestartAddress 0x28
+#define PcRestartBlock 0x30
+#define PcPalReserved 0x38
+#define PcPanicStack 0xc38
+#define PcProcessorType 0xc3c
+#define PcProcessorRevision 0xc40
+#define PcPhysicalAddressBits 0xc44
+#define PcMaximumAddressSpaceNumber 0xc48
+#define PcPageSize 0xc4c
+#define PcFirstLevelDcacheSize 0xc50
+#define PcFirstLevelDcacheFillSize 0xc54
+#define PcFirstLevelIcacheSize 0xc58
+#define PcFirstLevelIcacheFillSize 0xc5c
+#define PcFirmwareRevisionId 0xc60
+#define PcSystemType 0xc64
+#define PcSystemVariant 0xc6c
+#define PcSystemRevision 0xc70
+#define PcSystemSerialNumber 0xc74
+#define PcCycleClockPeriod 0xc84
+#define PcSecondLevelCacheSize 0xc88
+#define PcSecondLevelCacheFillSize 0xc8c
+#define PcThirdLevelCacheSize 0xc90
+#define PcThirdLevelCacheFillSize 0xc94
+#define PcFourthLevelCacheSize 0xc98
+#define PcFourthLevelCacheFillSize 0xc9c
+#define PcPrcb 0xca0
+#define PcNumber 0xca4
+#define PcSetMember 0xca8
+#define PcHalReserved 0xcb0
+#define PcIrqlTable 0xeb0
+#define PcIrqlMask 0xed0
+#define PcInterruptRoutine 0x10e0
+#define PcReservedVectors 0x14e0
+#define PcMachineCheckError 0x14f0
+#define PcDpcStack 0x14f4
+#define PcNotMember 0x14e4
+#define PcCurrentPid 0x14fc
+#define PcSystemServiceDispatchStart 0x1504
+#define PcSystemServiceDispatchEnd 0x1508
+#define PcIdleThread 0x150c
+#define ProcessorControlRegisterLength 0x1510
+#define SharedUserData 0xff000000
+#define UsTickCountLow 0x0
+#define UsTickCountMultiplier 0x4
+#define UsInterruptTime 0x8
+#define UsSystemTime 0x10
+
+//
+// Processor Block Structure Offset Definitions
+//
+
+#define PRCB_MINOR_VERSION 0x1
+#define PRCB_MAJOR_VERSION 0x2
+#define PbMinorVersion 0x0
+#define PbMajorVersion 0x2
+#define PbCurrentThread 0x4
+#define PbNextThread 0x8
+#define PbIdleThread 0xc
+#define PbNumber 0x10
+#define PbBuildType 0x12
+#define PbSetMember 0x14
+#define PbRestartBlock 0x18
+#define PbInterruptCount 0x1c
+#define PbDpcTime 0x20
+#define PbInterruptTime 0x24
+#define PbKernelTime 0x28
+#define PbUserTime 0x2c
+#define PbQuantumEndDpc 0x30
+#define PbIpiFrozen 0x5c
+#define PbIpiCounts 0x2d0
+#define PbProcessorState 0x60
+#define PbAlignmentFixupCount 0x2f4
+#define PbContextSwitches 0x2f8
+#define PbDcacheFlushCount 0x2fc
+#define PbExceptionDispatchcount 0x300
+#define PbFirstLevelTbFills 0x304
+#define PbFloatingEmulationCount 0x308
+#define PbIcacheFlushCount 0x30c
+#define PbSecondLevelTbFills 0x310
+#define PbSystemCalls 0x314
+#define PbCurrentPacket 0x540
+#define PbTargetSet 0x54c
+#define PbWorkerRoutine 0x550
+#define PbRequestSummary 0x580
+#define PbSignalDone 0x584
+#define PbDpcListHead 0x628
+#define PbDpcLock 0x630
+#define PbDpcCount 0x634
+#define PbLastDpcCount 0x290
+#define PbQuantumEnd 0x638
+#define PbStartCount 0x620
+#define PbSoftwareInterrupts 0x298
+#define PbInterruptActive 0x29c
+#define PbDpcRoutineActive 0x63c
+#define PbDpcQueueDepth 0x640
+#define PbDpcRequestRate 0x61c
+#define PbDpcBypassCount 0x294
+#define PbApcBypassCount 0x2a0
+#define PbDispatchInterruptCount 0x2a4
+#define PbDpcInterruptRequested 0x5c0
+#define PbMaximumDpcQueueDepth 0x610
+#define PbMinimumDpcRate 0x614
+#define PbAdjustDpcThreshold 0x618
+#define ProcessorBlockLength 0x650
+
+//
+// Immediate Interprocessor Command Definitions
+//
+
+#define IPI_APC 0x1
+#define IPI_DPC 0x2
+#define IPI_FREEZE 0x4
+#define IPI_PACKET_READY 0x8
+
+//
+// Interprocessor Interrupt Count Structure Offset Definitions
+//
+
+#define IcFreeze 0x0
+#define IcPacket 0x4
+#define IcDPC 0x8
+#define IcAPC 0xc
+#define IcFlushSingleTb 0x10
+#define IcFlushEntireTb 0x18
+#define IcChangeColor 0x20
+#define IcSweepDcache 0x24
+#define IcSweepIcache 0x28
+#define IcSweepIcacheRange 0x2c
+#define IcFlushIoBuffers 0x30
+
+//
+// Context Frame Offset and Flag Definitions
+//
+
+#define CONTEXT_FULL 0x20007
+#define CONTEXT_CONTROL 0x20001
+#define CONTEXT_FLOATING_POINT 0x20002
+#define CONTEXT_INTEGER 0x20004
+
+#define CxFltF0 0x0
+#define CxFltF1 0x8
+#define CxFltF2 0x10
+#define CxFltF3 0x18
+#define CxFltF4 0x20
+#define CxFltF5 0x28
+#define CxFltF6 0x30
+#define CxFltF7 0x38
+#define CxFltF8 0x40
+#define CxFltF9 0x48
+#define CxFltF10 0x50
+#define CxFltF11 0x58
+#define CxFltF12 0x60
+#define CxFltF13 0x68
+#define CxFltF14 0x70
+#define CxFltF15 0x78
+#define CxFltF16 0x80
+#define CxFltF17 0x88
+#define CxFltF18 0x90
+#define CxFltF19 0x98
+#define CxFltF20 0xa0
+#define CxFltF21 0xa8
+#define CxFltF22 0xb0
+#define CxFltF23 0xb8
+#define CxFltF24 0xc0
+#define CxFltF25 0xc8
+#define CxFltF26 0xd0
+#define CxFltF27 0xd8
+#define CxFltF28 0xe0
+#define CxFltF29 0xe8
+#define CxFltF30 0xf0
+#define CxFltF31 0xf8
+#define CxIntV0 0x100
+#define CxIntT0 0x108
+#define CxIntT1 0x110
+#define CxIntT2 0x118
+#define CxIntT3 0x120
+#define CxIntT4 0x128
+#define CxIntT5 0x130
+#define CxIntT6 0x138
+#define CxIntT7 0x140
+#define CxIntS0 0x148
+#define CxIntS1 0x150
+#define CxIntS2 0x158
+#define CxIntS3 0x160
+#define CxIntS4 0x168
+#define CxIntS5 0x170
+#define CxIntFp 0x178
+#define CxIntA0 0x180
+#define CxIntA1 0x188
+#define CxIntA2 0x190
+#define CxIntA3 0x198
+#define CxIntA4 0x1a0
+#define CxIntA5 0x1a8
+#define CxIntT8 0x1b0
+#define CxIntT9 0x1b8
+#define CxIntT10 0x1c0
+#define CxIntT11 0x1c8
+#define CxIntRa 0x1d0
+#define CxIntT12 0x1d8
+#define CxIntAt 0x1e0
+#define CxIntGp 0x1e8
+#define CxIntSp 0x1f0
+#define CxIntZero 0x1f8
+#define CxFpcr 0x200
+#define CxSoftFpcr 0x208
+#define CxFir 0x210
+#define CxPsr 0x218
+#define CxContextFlags 0x21c
+#define ContextFrameLength 0x230
+
+//
+// Exception Frame Offset Definitions and Length
+//
+
+#define ExFltF2 0x8
+#define ExFltF3 0x10
+#define ExFltF4 0x18
+#define ExFltF5 0x20
+#define ExFltF6 0x28
+#define ExFltF7 0x30
+#define ExFltF8 0x38
+#define ExFltF9 0x40
+#define ExIntS0 0x48
+#define ExIntS1 0x50
+#define ExIntS2 0x58
+#define ExIntS3 0x60
+#define ExIntS4 0x68
+#define ExIntS5 0x70
+#define ExIntFp 0x78
+#define ExPsr 0x88
+#define ExSwapReturn 0x80
+#define ExIntRa 0x0
+#define ExceptionFrameLength 0xa0
+
+//
+// Jump Offset Definitions and Length
+//
+
+#define JbFp 0x0
+#define JbPc 0x4
+#define JbSeb 0x8
+#define JbType 0xc
+#define JbFltF2 0x10
+#define JbFltF3 0x18
+#define JbFltF4 0x20
+#define JbFltF5 0x28
+#define JbFltF6 0x30
+#define JbFltF7 0x38
+#define JbFltF8 0x40
+#define JbFltF9 0x48
+#define JbIntS0 0x50
+#define JbIntS1 0x58
+#define JbIntS2 0x60
+#define JbIntS3 0x68
+#define JbIntS4 0x70
+#define JbIntS5 0x78
+#define JbIntS6 0x80
+#define JbIntSp 0x88
+#define JbFir 0x90
+
+//
+// Trap Frame Offset Definitions and Length
+//
+
+#define TrFltF0 0x128
+#define TrFltF1 0x138
+#define TrFltF10 0x140
+#define TrFltF11 0x148
+#define TrFltF12 0x150
+#define TrFltF13 0x158
+#define TrFltF14 0x160
+#define TrFltF15 0x168
+#define TrFltF16 0x170
+#define TrFltF17 0x178
+#define TrFltF18 0x180
+#define TrFltF19 0x188
+#define TrFltF20 0x190
+#define TrFltF21 0x198
+#define TrFltF22 0x1a0
+#define TrFltF23 0x1a8
+#define TrFltF24 0x1b0
+#define TrFltF25 0x1b8
+#define TrFltF26 0x1c0
+#define TrFltF27 0x1c8
+#define TrFltF28 0x1d0
+#define TrFltF29 0x1d8
+#define TrFltF30 0x1e0
+#define TrIntV0 0xa0
+#define TrIntT0 0xa8
+#define TrIntT1 0xb0
+#define TrIntT2 0xb8
+#define TrIntT3 0xc0
+#define TrIntT4 0xc8
+#define TrIntT5 0xd0
+#define TrIntT6 0xd8
+#define TrIntT7 0xe0
+#define TrIntFp 0x18
+#define TrIntA0 0x20
+#define TrIntA1 0x28
+#define TrIntA2 0x30
+#define TrIntA3 0x38
+#define TrIntA4 0x118
+#define TrIntA5 0x120
+#define TrIntT8 0xe8
+#define TrIntT9 0xf0
+#define TrIntT10 0xf8
+#define TrIntT11 0x100
+#define TrIntT12 0x108
+#define TrIntAt 0x110
+#define TrIntGp 0x48
+#define TrIntSp 0x0
+#define TrFpcr 0x130
+#define TrPsr 0x10
+#define TrPreviousKsp 0x14
+#define TrFir 0x8
+#define TrExceptionRecord 0x50
+#define TrOldIrql 0x1e8
+#define TrPreviousMode 0x1ec
+#define TrIntRa 0x40
+#define TrTrapFrame 0x1f0
+#define TrapFrameLength 0x200
+
+//
+// Usermode callout frame definitions
+//
+
+#define CuF2 0x0
+#define CuF3 0x8
+#define CuF4 0x10
+#define CuF5 0x18
+#define CuF6 0x20
+#define CuF7 0x28
+#define CuF8 0x30
+#define CuF9 0x38
+#define CuS0 0x40
+#define CuS1 0x48
+#define CuS2 0x50
+#define CuS3 0x58
+#define CuS4 0x60
+#define CuS5 0x68
+#define CuFP 0x70
+#define CuCbStk 0x78
+#define CuInStk 0x80
+#define CuTrFr 0x88
+#define CuTrFir 0x90
+#define CuRa 0x98
+#define CuA0 0xa0
+#define CuA1 0xa8
+#define CuFrameLength 0xb0
+
+//
+// Usermode callout user frame definitions
+//
+
+#define CkBuffer 0x0
+#define CkLength 0x4
+#define CkApiNumber 0x8
+#define CkSp 0x10
+#define CkRa 0x18
+
+//
+// Loader Parameter Block Offset Definitions
+//
+
+#define LpbLoadOrderListHead 0x0
+#define LpbMemoryDescriptorListHead 0x8
+#define LpbKernelStack 0x18
+#define LpbPrcb 0x1c
+#define LpbProcess 0x20
+#define LpbThread 0x24
+#define LpbRegistryLength 0x28
+#define LpbRegistryBase 0x2c
+#define LpbDpcStack 0x60
+#define LpbFirstLevelDcacheSize 0x64
+#define LpbFirstLevelDcacheFillSize 0x68
+#define LpbFirstLevelIcacheSize 0x6c
+#define LpbFirstLevelIcacheFillSize 0x70
+#define LpbGpBase 0x74
+#define LpbPanicStack 0x78
+#define LpbPcrPage 0x7c
+#define LpbPdrPage 0x80
+#define LpbSecondLevelDcacheSize 0x84
+#define LpbSecondLevelDcacheFillSize 0x88
+#define LpbSecondLevelIcacheSize 0x8c
+#define LpbSecondLevelIcacheFillSize 0x90
+#define LpbPhysicalAddressBits 0x94
+#define LpbMaximumAddressSpaceNumber 0x98
+#define LpbSystemSerialNumber 0x9c
+#define LpbSystemType 0xac
+#define LpbSystemVariant 0xb4
+#define LpbSystemRevision 0xb8
+#define LpbProcessorType 0xbc
+#define LpbProcessorRevision 0xc0
+#define LpbCycleClockPeriod 0xc4
+#define LpbPageSize 0xc8
+#define LpbRestartBlock 0xcc
+#define LpbFirmwareRestartAddress 0xd0
+#define LpbFirmwareRevisionId 0xd8
+#define LpbPalBaseAddress 0xdc
+
+//
+// Restart Block Structure Definitions
+//
+
+#define RbSignature 0x0
+#define RbLength 0x4
+#define RbVersion 0x8
+#define RbRevision 0xa
+#define RbNextRestartBlock 0xc
+#define RbRestartAddress 0x10
+#define RbBootMasterId 0x14
+#define RbProcessorId 0x18
+#define RbBootStatus 0x1c
+#define RbCheckSum 0x20
+#define RbSaveAreaLength 0x24
+#define RbSaveArea 0x28
+#define RbHaltReason 0x28
+#define RbLogoutFrame 0x2c
+#define RbPalBase 0x30
+#define RbIntV0 0x38
+#define RbIntT0 0x40
+#define RbIntT1 0x48
+#define RbIntT2 0x50
+#define RbIntT3 0x58
+#define RbIntT4 0x60
+#define RbIntT5 0x68
+#define RbIntT6 0x70
+#define RbIntT7 0x78
+#define RbIntS0 0x80
+#define RbIntS1 0x88
+#define RbIntS2 0x90
+#define RbIntS3 0x98
+#define RbIntS4 0xa0
+#define RbIntS5 0xa8
+#define RbIntFp 0xb0
+#define RbIntA0 0xb8
+#define RbIntA1 0xc0
+#define RbIntA2 0xc8
+#define RbIntA3 0xd0
+#define RbIntA4 0xd8
+#define RbIntA5 0xe0
+#define RbIntT8 0xe8
+#define RbIntT9 0xf0
+#define RbIntT10 0xf8
+#define RbIntT11 0x100
+#define RbIntRa 0x108
+#define RbIntT12 0x110
+#define RbIntAT 0x118
+#define RbIntGp 0x120
+#define RbIntSp 0x128
+#define RbIntZero 0x130
+#define RbFpcr 0x138
+#define RbFltF0 0x140
+#define RbFltF1 0x148
+#define RbFltF2 0x150
+#define RbFltF3 0x158
+#define RbFltF4 0x160
+#define RbFltF5 0x168
+#define RbFltF6 0x170
+#define RbFltF7 0x178
+#define RbFltF8 0x180
+#define RbFltF9 0x188
+#define RbFltF10 0x190
+#define RbFltF11 0x198
+#define RbFltF12 0x1a0
+#define RbFltF13 0x1a8
+#define RbFltF14 0x1b0
+#define RbFltF15 0x1b8
+#define RbFltF16 0x1c0
+#define RbFltF17 0x1c8
+#define RbFltF18 0x1d0
+#define RbFltF19 0x1d8
+#define RbFltF20 0x1e0
+#define RbFltF21 0x1e8
+#define RbFltF22 0x1f0
+#define RbFltF23 0x1f8
+#define RbFltF24 0x200
+#define RbFltF25 0x208
+#define RbFltF26 0x210
+#define RbFltF27 0x218
+#define RbFltF28 0x220
+#define RbFltF29 0x228
+#define RbFltF30 0x230
+#define RbFltF31 0x238
+#define RbAsn 0x240
+#define RbGeneralEntry 0x244
+#define RbIksp 0x248
+#define RbInterruptEntry 0x24c
+#define RbKgp 0x250
+#define RbMces 0x254
+#define RbMemMgmtEntry 0x258
+#define RbPanicEntry 0x25c
+#define RbPcr 0x260
+#define RbPdr 0x264
+#define RbPsr 0x268
+#define RbReiRestartAddress 0x26c
+#define RbSirr 0x270
+#define RbSyscallEntry 0x274
+#define RbTeb 0x278
+#define RbThread 0x27c
+#define RbPerProcessorState 0x280
+
+//
+// Address Space Layout Definitions
+//
+
+#define KSEG0_BASE 0x80000000
+#define KSEG2_BASE 0xc0000000
+#define SYSTEM_BASE 0xc0800000
+#define PDE_BASE 0xc0180000
+#define PTE_BASE 0xc0000000
+
+//
+// Page Table and Directory Entry Definitions
+//
+
+#define PAGE_SIZE 0x2000
+#define PAGE_SHIFT 0xd
+#define PDI_SHIFT 0x18
+#define PTI_SHIFT 0xd
+
+//
+// Breakpoint Definitions
+//
+
+#define USER_BREAKPOINT 0x0
+#define KERNEL_BREAKPOINT 0x1
+#define BREAKIN_BREAKPOINT 0x19
+#define DEBUG_PRINT_BREAKPOINT 0x14
+#define DEBUG_PROMPT_BREAKPOINT 0x15
+#define DEBUG_STOP_BREAKPOINT 0x16
+#define DEBUG_LOAD_SYMBOLS_BREAKPOINT 0x17
+#define DEBUG_UNLOAD_SYMBOLS_BREAKPOINT 0x18
+
+//
+// Trap Code Definitions
+//
+
+#define GENTRAP_INTEGER_OVERFLOW 0xffffffff
+#define GENTRAP_INTEGER_DIVIDE_BY_ZERO 0xfffffffe
+#define GENTRAP_FLOATING_OVERFLOW 0xfffffffd
+#define GENTRAP_FLOATING_DIVIDE_BY_ZERO 0xfffffffc
+#define GENTRAP_FLOATING_UNDERFLOW 0xfffffffb
+#define GENTRAP_FLOATING_INVALID_OPERAND 0xfffffffa
+#define GENTRAP_FLOATING_INEXACT_RESULT 0xfffffff9
+
+//
+// Miscellaneous Definitions
+//
+
+#define Executive 0x0
+#define KernelMode 0x0
+#define FALSE 0x0
+#define TRUE 0x1
+#define BASE_PRIORITY_THRESHOLD 0x8
+#define EVENT_PAIR_INCREMENT 0x1
+#define LOW_REALTIME_PRIORITY 0x10
+#define MM_USER_PROBE_ADDRESS 0x7fff0000
+#define KERNEL_STACK_SIZE 0x4000
+#define KERNEL_LARGE_STACK_COMMIT 0x4000
+#define SET_LOW_WAIT_HIGH 0xfffffffe
+#define SET_HIGH_WAIT_LOW 0xffffffff
+#define CLOCK_QUANTUM_DECREMENT 0x3
+#define READY_SKIP_QUANTUM 0x2
+#define THREAD_QUANTUM 0x6
+#define WAIT_QUANTUM_DECREMENT 0x1
+#define ROUND_TRIP_DECREMENT_COUNT 0x10
+#define PROCESSOR_ALPHA_21064 0x5248
+#define PROCESSOR_ALPHA_21164 0x52ac
+#define PROCESSOR_ALPHA_21066 0x524a
+#define PROCESSOR_ALPHA_21068 0x524c
+#define PTE_VALID_MASK 0x1
+#define PTE_VALID 0x0
+#define PTE_OWNER_MASK 0x2
+#define PTE_OWNER 0x1
+#define PTE_DIRTY_MASK 0x4
+#define PTE_DIRTY 0x2
+#define PTE_GLOBAL_MASK 0x10
+#define PTE_GLOBAL 0x4
+#define PTE_WRITE_MASK 0x80
+#define PTE_WRITE 0x7
+#define PTE_COPYONWRITE_MASK 0x100
+#define PTE_COPYONWRITE 0x8
+#define PTE_PFN_MASK 0xfffffe00
+#define PTE_PFN 0x9
+#define PSR_MODE_MASK 0x1
+#define PSR_USER_MODE 0x1
+#define PSR_MODE 0x0
+#define PSR_IE_MASK 0x2
+#define PSR_IE 0x1
+#define PSR_IRQL_MASK 0x1c
+#define PSR_IRQL 0x2
+#define IE_SFW_MASK 0x3
+#define IE_SFW 0x0
+#define IE_HDW_MASK 0xfc
+#define IE_HDW 0x2
+#define MCHK_CORRECTABLE_MASK 0x1
+#define MCHK_CORRECTABLE 0x0
+#define MCHK_RETRYABLE_MASK 0x2
+#define MCHK_RETRYABLE 0x1
+#define MCES_MCK_MASK 0x1
+#define MCES_MCK 0x0
+#define MCES_SCE_MASK 0x2
+#define MCES_SCE 0x1
+#define MCES_PCE_MASK 0x4
+#define MCES_PCE 0x2
+#define MCES_DPC_MASK 0x8
+#define MCES_DPC 0x3
+#define MCES_DSC_MASK 0x10
+#define MCES_DSC 0x4
+#define MCES_DMCK_MASK 0x20
+#define MCES_DMCK 0x5
+#define EXCSUM_SWC_MASK 0x1
+#define EXCSUM_SWC 0x0
+#define EXCSUM_INV_MASK 0x2
+#define EXCSUM_INV 0x1
+#define EXCSUM_DZE_MASK 0x4
+#define EXCSUM_DZE 0x2
+#define EXCSUM_OVF_MASK 0x8
+#define EXCSUM_OVF 0x3
+#define EXCSUM_UNF_MASK 0x10
+#define EXCSUM_UNF 0x4
+#define EXCSUM_INE_MASK 0x20
+#define EXCSUM_INE 0x5
+#define EXCSUM_IOV_MASK 0x40
+#define EXCSUM_IOV 0x6
+
+//
+// Call PAL mnemonics
+//
+
+// begin callpal
+
+#define bpt 0x80
+#define callsys 0x83
+#define imb 0x86
+#define gentrap 0xaa
+#define rdteb 0xab
+#define kbpt 0xac
+#define callkd 0xad
+#define halt 0x0
+#define restart 0x1
+#define draina 0x2
+#define reboot 0x3
+#define initpal 0x4
+#define wrentry 0x5
+#define swpirql 0x6
+#define rdirql 0x7
+#define di 0x8
+#define ei 0x9
+#define swppal 0xa
+#define ssir 0xc
+#define csir 0xd
+#define rfe 0xe
+#define retsys 0xf
+#define swpctx 0x10
+#define swpprocess 0x11
+#define rdmces 0x12
+#define wrmces 0x13
+#define tbia 0x14
+#define tbis 0x15
+#define tbisasn 0x17
+#define dtbis 0x16
+#define rdksp 0x18
+#define swpksp 0x19
+#define rdpsr 0x1a
+#define rdpcr 0x1c
+#define rdthread 0x1e
+#define tbim 0x20
+#define tbimasn 0x21
+#define rdcounters 0x30
+#define rdstate 0x31
+#define wrperfmon 0x32
+#define initpcr 0x38
+
+// end callpal
+
diff --git a/public/sdk/inc/ksmips.h b/public/sdk/inc/ksmips.h
new file mode 100644
index 000000000..899e3cd2a
--- /dev/null
+++ b/public/sdk/inc/ksmips.h
@@ -0,0 +1,1258 @@
+#include "kxmips.h"
+
+//
+// Process State Enumerated Type Values
+//
+
+#define ProcessInMemory 0x0
+#define ProcessOutOfMemory 0x1
+#define ProcessInTransition 0x2
+
+//
+// Thread State Enumerated Type Values
+//
+
+#define Initialized 0x0
+#define Ready 0x1
+#define Running 0x2
+#define Standby 0x3
+#define Terminated 0x4
+#define Waiting 0x5
+
+//
+// Wait Reason and Wait Type Enumerated Type Values
+//
+
+#define WrExecutive 0x0
+#define WrEventPair 0xe
+#define WaitAny 0x1
+#define WaitAll 0x0
+
+//
+// Apc State Structure Offset Definitions
+//
+
+#define AsApcListHead 0x0
+#define AsProcess 0x10
+#define AsKernelApcInProgress 0x14
+#define AsKernelApcPending 0x15
+#define AsUserApcPending 0x16
+
+//
+// Bug Check Code Definitions
+//
+
+#define APC_INDEX_MISMATCH 0x1
+#define DATA_BUS_ERROR 0x2e
+#define DATA_COHERENCY_EXCEPTION 0x55
+#define HAL1_INITIALIZATION_FAILED 0x61
+#define INSTRUCTION_BUS_ERROR 0x2f
+#define INSTRUCTION_COHERENCY_EXCEPTION 0x56
+#define INTERRUPT_EXCEPTION_NOT_HANDLED 0x3d
+#define INTERRUPT_UNWIND_ATTEMPTED 0x3c
+#define INVALID_AFFINITY_SET 0x3
+#define INVALID_DATA_ACCESS_TRAP 0x4
+#define IRQL_GT_ZERO_AT_SYSTEM_SERVICE 0x4a
+#define IRQL_NOT_LESS_OR_EQUAL 0xa
+#define KMODE_EXCEPTION_NOT_HANDLED 0x1e
+#define NMI_HARDWARE_FAILURE 0x80
+#define NO_USER_MODE_CONTEXT 0xe
+#define PAGE_FAULT_WITH_INTERRUPTS_OFF 0x49
+#define PANIC_STACK_SWITCH 0x2b
+#define SPIN_LOCK_INIT_FAILURE 0x81
+#define SYSTEM_EXIT_OWNED_MUTEX 0x39
+#define SYSTEM_SERVICE_EXCEPTION 0x3b
+#define SYSTEM_UNWIND_PREVIOUS_USER 0x3a
+#define TRAP_CAUSE_UNKNOWN 0x12
+#define UNEXPECTED_KERNEL_MODE_TRAP 0x7f
+
+//
+// Breakpoint type definitions
+//
+
+#define DBG_STATUS_CONTROL_C 0x1
+
+//
+// Client Id Structure Offset Definitions
+//
+
+#define CidUniqueProcess 0x0
+#define CidUniqueThread 0x4
+
+//
+// Critical Section Structure Offset Definitions
+//
+
+#define CsDebugInfo 0x0
+#define CsLockCount 0x4
+#define CsRecursionCount 0x8
+#define CsOwningThread 0xc
+#define CsLockSemaphore 0x10
+
+//
+// Critical Section Debug Information Structure Offset Definitions
+//
+
+#define CsType 0x0
+#define CsCreatorBackTraceIndex 0x2
+#define CsCriticalSection 0x4
+#define CsProcessLocksList 0x8
+#define CsEntryCount 0x10
+#define CsContentionCount 0x14
+
+//
+// Dispatcher Context Structure Offset Definitions
+//
+
+#define DcControlPc 0x0
+#define DcFunctionEntry 0x4
+#define DcEstablisherFrame 0x8
+#define DcContextRecord 0xc
+
+//
+// Exception Record Offset, Flag, and Enumerated Type Definitions
+//
+
+#define EXCEPTION_NONCONTINUABLE 0x1
+#define EXCEPTION_UNWINDING 0x2
+#define EXCEPTION_EXIT_UNWIND 0x4
+#define EXCEPTION_STACK_INVALID 0x8
+#define EXCEPTION_NESTED_CALL 0x10
+#define EXCEPTION_TARGET_UNWIND 0x20
+#define EXCEPTION_COLLIDED_UNWIND 0x40
+#define EXCEPTION_UNWIND 0x66
+#define EXCEPTION_EXECUTE_HANDLER 0x1
+#define EXCEPTION_CONTINUE_SEARCH 0x0
+#define EXCEPTION_CONTINUE_EXECUTION 0xffffffff
+
+#define ExceptionContinueExecution 0x0
+#define ExceptionContinueSearch 0x1
+#define ExceptionNestedException 0x2
+#define ExceptionCollidedUnwind 0x3
+
+#define ErExceptionCode 0x0
+#define ErExceptionFlags 0x4
+#define ErExceptionRecord 0x8
+#define ErExceptionAddress 0xc
+#define ErNumberParameters 0x10
+#define ErExceptionInformation 0x14
+#define ExceptionRecordLength 0x50
+
+//
+// Fast Mutex Structure Offset Definitions
+//
+
+#define FmCount 0x0
+#define FmOwner 0x4
+#define FmContention 0x8
+#define FmEvent 0xc
+#define FmOldIrql 0x1c
+
+//
+// Interrupt Priority Request Level Definitions
+//
+
+#define APC_LEVEL 0x1
+#define DISPATCH_LEVEL 0x2
+#define IPI_LEVEL 0x7
+#define POWER_LEVEL 0x7
+#define PROFILE_LEVEL 0x8
+#define HIGH_LEVEL 0x8
+#define SYNCH_LEVEL 0x6
+
+//
+// Large Integer Structure Offset Definitions
+//
+
+#define LiLowPart 0x0
+#define LiHighPart 0x4
+
+//
+// List Entry Structure Offset Definitions
+//
+
+#define LsFlink 0x0
+#define LsBlink 0x4
+
+//
+// String Structure Offset Definitions
+//
+
+#define StrLength 0x0
+#define StrMaximumLength 0x2
+#define StrBuffer 0x4
+
+//
+// System Time Structure Offset Definitions
+//
+
+#define StLowTime 0x0
+#define StHigh1Time 0x4
+#define StHigh2Time 0x8
+
+//
+// Time Structure Offset Definitions
+//
+
+#define TmLowTime 0x0
+#define TmHighTime 0x4
+
+//
+// Thread Switch Counter Offset Definitions
+//
+
+#define TwFindAny 0x0
+#define TwFindIdeal 0x4
+#define TwFindLast 0x8
+#define TwIdleAny 0xc
+#define TwIdleCurrent 0x10
+#define TwIdleIdeal 0x14
+#define TwIdleLast 0x18
+#define TwPreemptAny 0x1c
+#define TwPreemptCurrent 0x20
+#define TwPreemptLast 0x24
+#define TwSwitchToIdle 0x28
+
+//
+// Status Code Definitions
+//
+
+#define STATUS_ACCESS_VIOLATION 0xc0000005
+#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xc000008c
+#define STATUS_BAD_COMPRESSION_BUFFER 0xc0000242
+#define STATUS_BREAKPOINT 0x80000003
+#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
+#define STATUS_FLOAT_DENORMAL_OPERAND 0xc000008d
+#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xc000008e
+#define STATUS_FLOAT_INEXACT_RESULT 0xc000008f
+#define STATUS_FLOAT_INVALID_OPERATION 0xc0000090
+#define STATUS_FLOAT_OVERFLOW 0xc0000091
+#define STATUS_FLOAT_STACK_CHECK 0xc0000092
+#define STATUS_FLOAT_UNDERFLOW 0xc0000093
+#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
+#define STATUS_ILLEGAL_FLOAT_CONTEXT 0xc000014a
+#define STATUS_ILLEGAL_INSTRUCTION 0xc000001d
+#define STATUS_INSTRUCTION_MISALIGNMENT 0xc00000aa
+#define STATUS_INVALID_HANDLE 0xc0000008
+#define STATUS_INVALID_LOCK_SEQUENCE 0xc000001e
+#define STATUS_INVALID_OWNER 0xc000005a
+#define STATUS_INVALID_PARAMETER_1 0xc00000ef
+#define STATUS_INVALID_SYSTEM_SERVICE 0xc000001c
+#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xc0000094
+#define STATUS_INTEGER_OVERFLOW 0xc0000095
+#define STATUS_IN_PAGE_ERROR 0xc0000006
+#define STATUS_KERNEL_APC 0x100
+#define STATUS_LONGJUMP 0x80000026
+#define STATUS_NO_CALLBACK_ACTIVE 0xc0000258
+#define STATUS_NO_EVENT_PAIR 0xc000014e
+#define STATUS_PRIVILEGED_INSTRUCTION 0xc0000096
+#define STATUS_SINGLE_STEP 0x80000004
+#define STATUS_STACK_OVERFLOW 0xc00000fd
+#define STATUS_SUCCESS 0x0
+#define STATUS_THREAD_IS_TERMINATING 0xc000004b
+#define STATUS_TIMEOUT 0x102
+#define STATUS_UNWIND 0xc0000027
+#define STATUS_WAKE_SYSTEM_DEBUGGER 0x80000007
+
+//
+// APC Object Structure Offset Definitions
+//
+
+#define ApType 0x0
+#define ApSize 0x2
+#define ApThread 0x8
+#define ApApcListEntry 0xc
+#define ApKernelRoutine 0x14
+#define ApRundownRoutine 0x18
+#define ApNormalRoutine 0x1c
+#define ApNormalContext 0x20
+#define ApSystemArgument1 0x24
+#define ApSystemArgument2 0x28
+#define ApApcStateIndex 0x2c
+#define ApApcMode 0x2d
+#define ApInserted 0x2e
+#define ApcObjectLength 0x30
+
+//
+// DPC object Structure Offset Definitions
+//
+
+#define DpType 0x0
+#define DpNumber 0x2
+#define DpImportance 0x3
+#define DpDpcListEntry 0x4
+#define DpDeferredRoutine 0xc
+#define DpDeferredContext 0x10
+#define DpSystemArgument1 0x14
+#define DpSystemArgument2 0x18
+#define DpLock 0x1c
+#define DpcObjectLength 0x20
+
+//
+// Device Queue Object Structure Offset Definitions
+//
+
+#define DvType 0x0
+#define DvSize 0x2
+#define DvDeviceListHead 0x4
+#define DvSpinLock 0xc
+#define DvBusy 0x10
+#define DeviceQueueObjectLength 0x14
+
+//
+// Device Queue Entry Structure Offset Definitions
+//
+
+#define DeDeviceListEntry 0x0
+#define DeSortKey 0x8
+#define DeInserted 0xc
+#define DeviceQueueEntryLength 0x10
+
+//
+// Event Object Structure Offset Definitions
+//
+
+#define EvType 0x0
+#define EvSize 0x2
+#define EvSignalState 0x4
+#define EvWaitListHead 0x8
+#define EventObjectLength 0x10
+
+//
+// Event Pair Object Structure Offset Definitions
+//
+
+#define EpType 0x0
+#define EpSize 0x2
+#define EpEventLow 0x4
+#define EpEventHigh 0x14
+#define SET_LOW_WAIT_HIGH 0xffffffe0
+#define SET_HIGH_WAIT_LOW 0xfffffff0
+#define SET_EVENT_PAIR_MASK 0x10
+
+//
+// Interrupt Object Structure Offset Definitions
+//
+
+#define InLevelSensitive 0x0
+#define InLatched 0x1
+
+#define InType 0x0
+#define InSize 0x2
+#define InInterruptListEntry 0x4
+#define InServiceRoutine 0xc
+#define InServiceContext 0x10
+#define InSpinLock 0x14
+#define InActualLock 0x1c
+#define InDispatchAddress 0x20
+#define InVector 0x24
+#define InIrql 0x28
+#define InSynchronizeIrql 0x29
+#define InFloatingSave 0x2a
+#define InConnected 0x2b
+#define InNumber 0x2c
+#define InMode 0x30
+#define InShareVector 0x2d
+#define InDispatchCode 0x3c
+#define InterruptObjectLength 0x4c
+
+//
+// Process Object Structure Offset Definitions
+//
+
+#define PrType 0x0
+#define PrSize 0x2
+#define PrSignalState 0x4
+#define PrProfileListHead 0x10
+#define PrDirectoryTableBase 0x18
+#define PrActiveProcessors 0x20
+#define PrKernelTime 0x24
+#define PrUserTime 0x28
+#define PrReadyListHead 0x2c
+#define PrSwapListEntry 0x34
+#define PrThreadListHead 0x3c
+#define PrProcessLock 0x44
+#define PrAffinity 0x48
+#define PrStackCount 0x4c
+#define PrBasePriority 0x4e
+#define PrThreadQuantum 0x4f
+#define PrAutoAlignment 0x50
+#define PrState 0x51
+#define ProcessObjectLength 0x60
+#define ExtendedProcessObjectLength 0x1f0
+
+//
+// Profile Object Structure Offset Definitions
+//
+
+#define PfType 0x0
+#define PfSize 0x2
+#define PfProfileListEntry 0x4
+#define PfProcess 0xc
+#define PfRangeBase 0x10
+#define PfRangeLimit 0x14
+#define PfBucketShift 0x18
+#define PfBuffer 0x1c
+#define PfSegment 0x20
+#define PfAffinity 0x24
+#define PfSource 0x28
+#define PfStarted 0x2a
+#define ProfileObjectLength 0x2c
+
+//
+// Queue Object Structure Offset Definitions
+//
+
+#define QuType 0x0
+#define QuSize 0x2
+#define QuSignalState 0x4
+#define QuEntryListHead 0x10
+#define QuCurrentCount 0x18
+#define QuMaximumCount 0x1c
+#define QuThreadListHead 0x20
+#define QueueObjectLength 0x28
+
+//
+// Thread Object Structure Offset Definitions
+//
+
+#define EeKernelEventPair 0x0
+#define EtCid 0x1e0
+#define EtEventPair 0x224
+#define EtPerformanceCountLow 0x204
+#define EtPerformanceCountHigh 0x23c
+#define EtEthreadLength 0x240
+
+#define ThType 0x0
+#define ThSize 0x2
+#define ThSignalState 0x4
+#define ThMutantListHead 0x10
+#define ThInitialStack 0x18
+#define ThStackLimit 0x1c
+#define ThTeb 0x20
+#define ThTlsArray 0x24
+#define ThKernelStack 0x28
+#define ThDebugActive 0x2c
+#define ThState 0x2d
+#define ThAlerted 0x2e
+#define ThIopl 0x30
+#define ThNpxState 0x31
+#define ThSaturation 0x32
+#define ThPriority 0x33
+#define ThApcState 0x34
+#define ThContextSwitches 0x4c
+#define ThWaitStatus 0x50
+#define ThWaitIrql 0x54
+#define ThWaitMode 0x55
+#define ThWaitNext 0x56
+#define ThWaitReason 0x57
+#define ThWaitBlockList 0x58
+#define ThWaitListEntry 0x5c
+#define ThWaitTime 0x64
+#define ThBasePriority 0x68
+#define ThDecrementCount 0x69
+#define ThPriorityDecrement 0x6a
+#define ThQuantum 0x6b
+#define ThWaitBlock 0x6c
+#define ThKernelApcDisable 0xd0
+#define ThUserAffinity 0xd4
+#define ThSystemAffinityActive 0xd8
+#define ThServiceTable 0xdc
+#define ThQueue 0xe0
+#define ThApcQueueLock 0xe4
+#define ThTimer 0xe8
+#define ThQueueListEntry 0x110
+#define ThAffinity 0x118
+#define ThPreempted 0x11c
+#define ThProcessReadyQueue 0x11d
+#define ThKernelStackResident 0x11e
+#define ThNextProcessor 0x11f
+#define ThCallbackStack 0x120
+#define ThWin32Thread 0x124
+#define ThTrapFrame 0x128
+#define ThApcStatePointer 0x12c
+#define ThPreviousMode 0x137
+#define ThEnableStackSwap 0x134
+#define ThLargeStack 0x135
+#define ThKernelTime 0x138
+#define ThUserTime 0x13c
+#define ThSavedApcState 0x140
+#define ThAlertable 0x158
+#define ThApcStateIndex 0x159
+#define ThApcQueueable 0x15a
+#define ThAutoAlignment 0x15b
+#define ThStackBase 0x15c
+#define ThSuspendApc 0x160
+#define ThSuspendSemaphore 0x190
+#define ThThreadListEntry 0x1a4
+#define ThFreezeCount 0x1ac
+#define ThSuspendCount 0x1ad
+#define ThIdealProcessor 0x1ae
+#define ThDisableBoost 0x1af
+#define ThreadObjectLength 0x1b0
+#define ExtendedThreadObjectLength 0x240
+
+#define EVENT_WAIT_BLOCK_OFFSET 0x9c
+
+//
+// Timer object Structure Offset Definitions
+//
+
+#define TiType 0x0
+#define TiSize 0x2
+#define TiInserted 0x3
+#define TiSignalState 0x4
+#define TiDueTime 0x10
+#define TiTimerListEntry 0x18
+#define TiDpc 0x20
+#define TiPeriod 0x24
+#define TimerObjectLength 0x28
+
+#define TIMER_TABLE_SIZE 0x80
+
+//
+// Wait Block Structure Offset Definitions
+//
+
+#define WbWaitListEntry 0x0
+#define WbThread 0x8
+#define WbObject 0xc
+#define WbNextWaitBlock 0x10
+#define WbWaitKey 0x14
+#define WbWaitType 0x16
+
+//
+// Fiber Structure Offset Definitions
+//
+
+#define FbFiberData 0x0
+#define FbExceptionList 0x4
+#define FbStackBase 0x8
+#define FbStackLimit 0xc
+#define FbDeallocationStack 0x10
+#define FbFiberContext 0x18
+
+//
+// Process Environment Block Structure Offset Definitions
+//
+
+#define PeKernelCallbackTable 0x2c
+
+//
+// System Service Descriptor Table Structure Definitions
+//
+
+#define NUMBER_SERVICE_TABLES 0x4
+#define SERVICE_NUMBER_MASK 0xfff
+#define SERVICE_TABLE_SHIFT 0x8
+#define SERVICE_TABLE_MASK 0x30
+#define SERVICE_TABLE_TEST 0x10
+
+#define SdBase 0x0
+#define SdCount 0x4
+#define SdLimit 0x8
+#define SdNumber 0xc
+
+//
+// Thread Environment Block Structure Offset Definitions
+//
+
+#define TeStackBase 0x4
+#define TeStackLimit 0x8
+#define TeFiberData 0x10
+#define TeEnvironmentPointer 0x1c
+#define TeClientId 0x20
+#define TeActiveRpcHandle 0x28
+#define TeThreadLocalStoragePointer 0x2c
+#define TePeb 0x30
+#define TeCsrClientThread 0x3c
+#define TeSoftFpcr 0xc8
+#define TeGdiClientPID 0x6f4
+#define TeGdiClientTID 0x6f8
+#define TeGdiThreadLocalInfo 0x6fc
+#define TeglDispatchTable 0x714
+#define TeglSectionInfo 0xbe0
+#define TeglSection 0xbe4
+#define TeglTable 0xbe8
+#define TeglCurrentRC 0xbec
+#define TeglContext 0xbf0
+#define TeDeallocationStack 0xe0c
+#define TeGdiBatchCount 0xf70
+#define TeInstrumentation 0xf2c
+
+//
+// Processor Block Structure Offset Definitions
+//
+
+#define PRCB_MINOR_VERSION 0x1
+#define PRCB_MAJOR_VERSION 0x1
+
+#define PbMinorVersion 0x0
+#define PbMajorVersion 0x2
+#define PbCurrentThread 0x4
+#define PbNextThread 0x8
+#define PbIdleThread 0xc
+#define PbNumber 0x10
+#define PbSetMember 0x14
+#define PbRestartBlock 0x18
+#define PbSystemReserved 0x20
+#define PbHalReserved 0x60
+#define PbDpcTime 0xa0
+#define PbInterruptTime 0xa4
+#define PbKernelTime 0xa8
+#define PbUserTime 0xac
+#define PbAdjustDpcThreshold 0xb0
+#define PbInterruptCount 0xb4
+#define PbApcBypassCount 0xb8
+#define PbDpcBypassCount 0xbc
+#define PbIpiFrozen 0xdc
+#define PbProcessorState 0xe0
+#define PbAlignmentFixupCount 0x73c
+#define PbContextSwitches 0x740
+#define PbDcacheFlushCount 0x744
+#define PbExceptionDispatchCount 0x748
+#define PbFirstLevelTbFills 0x74c
+#define PbFloatingEmulationCount 0x750
+#define PbIcacheFlushCount 0x754
+#define PbSecondLevelTbFills 0x758
+#define PbSystemCalls 0x75c
+#define PbCurrentPacket 0x980
+#define PbTargetSet 0x98c
+#define PbWorkerRoutine 0x990
+#define PbRequestSummary 0x9a0
+#define PbSignalDone 0x9a4
+#define PbDpcInterruptRequested 0x9c0
+#define PbMaximumDpcQueueDepth 0x9e0
+#define PbMinimumDpcRate 0x9e4
+#define PbIpiCounts 0xa10
+#define PbStartCount 0xa18
+#define PbDpcLock 0xa20
+#define PbDpcListHead 0xa24
+#define PbDpcQueueDepth 0xa2c
+#define PbDpcCount 0xa30
+#define PbDpcLastCount 0xa34
+#define PbDpcRequestRate 0xa38
+#define PbDpcRoutineActive 0xa3c
+#define ProcessorBlockLength 0xa60
+
+//
+// Processor Control Registers Structure Offset Definitions
+//
+
+#define PCR_MINOR_VERSION 0x1
+#define PCR_MAJOR_VERSION 0x1
+
+#define PcMinorVersion 0x0
+#define PcMajorVersion 0x2
+#define PcInterruptRoutine 0x4
+#define PcXcodeDispatch 0x404
+#define PcFirstLevelDcacheSize 0x484
+#define PcFirstLevelDcacheFillSize 0x488
+#define PcFirstLevelIcacheSize 0x48c
+#define PcFirstLevelIcacheFillSize 0x490
+#define PcSecondLevelDcacheSize 0x494
+#define PcSecondLevelDcacheFillSize 0x498
+#define PcSecondLevelIcacheSize 0x49c
+#define PcSecondLevelIcacheFillSize 0x4a0
+#define PcPrcb 0x4a4
+#define PcTeb 0x4a8
+#define PcTlsArray 0x4ac
+#define PcDcacheFillSize 0x4b0
+#define PcIcacheAlignment 0x4b4
+#define PcIcacheFillSize 0x4b8
+#define PcProcessorId 0x4bc
+#define PcProfileInterval 0x4c0
+#define PcProfileCount 0x4c4
+#define PcStallExecutionCount 0x4c8
+#define PcStallScaleFactor 0x4cc
+#define PcNumber 0x4d0
+#define PcDataBusError 0x4d4
+#define PcInstructionBusError 0x4d8
+#define PcCachePolicy 0x4dc
+#define PcIrqlMask 0x4e0
+#define PcIrqlTable 0x500
+#define PcCurrentIrql 0x509
+#define PcSetMember 0x50c
+#define PcCurrentThread 0x514
+#define PcAlignedCachePolicy 0x518
+#define PcNotMember 0x51c
+#define PcSystemReserved 0x520
+#define PcDcacheAlignment 0x55c
+#define PcHalReserved 0x560
+#define PcFirstLevelActive 0x5a0
+#define PcDpcRoutineActive 0x5a4
+#define PcCurrentPid 0x5a8
+#define PcOnInterruptStack 0x5ac
+#define PcSavedInitialStack 0x5b0
+#define PcSavedStackLimit 0x5b4
+#define PcSystemServiceDispatchStart 0x5b8
+#define PcSystemServiceDispatchEnd 0x5bc
+#define PcInterruptStack 0x5c0
+#define PcPanicStack 0x5c4
+#define PcBadVaddr 0x5c8
+#define PcInitialStack 0x5cc
+#define PcStackLimit 0x5d0
+#define PcSavedEpc 0x5d4
+#define PcSavedT7 0x5d8
+#define PcSavedT8 0x5e0
+#define PcSavedT9 0x5e8
+#define PcSystemGp 0x5f0
+#define PcQuantumEnd 0x5f4
+#define ProcessorControlRegisterLength 0x600
+
+#define Pc2TickCountLow 0x0
+#define Pc2TickCountMultiplier 0x4
+#define Pc2InterruptTime 0x8
+#define Pc2SystemTime 0x18
+
+//
+// TB Entry Structure Offset Definitions
+//
+
+#define TbEntrylo0 0x0
+#define TbEntrylo1 0x4
+#define TbEntryhi 0x8
+#define TbPagemask 0xc
+
+//
+// Immediate Interprocessor Command Definitions
+//
+
+#define IPI_APC 0x1
+#define IPI_DPC 0x2
+#define IPI_FREEZE 0x4
+#define IPI_PACKET_READY 0x8
+
+//
+// Interprocessor Interrupt Count Structure Offset Definitions
+//
+
+#define IcFreeze 0x0
+#define IcPacket 0x4
+#define IcDPC 0x8
+#define IcAPC 0xc
+#define IcFlushSingleTb 0x10
+#define IcFlushMultipleTb 0x14
+#define IcFlushEntireTb 0x18
+#define IcGenericCall 0x1c
+#define IcChangeColor 0x20
+#define IcSweepDcache 0x24
+#define IcSweepIcache 0x28
+#define IcSweepIcacheRange 0x2c
+#define IcFlushIoBuffers 0x30
+#define IcGratuitousDPC 0x34
+
+//
+// Context Frame Offset and Flag Definitions
+//
+
+#define CONTEXT_FULL 0x10017
+#define CONTEXT_CONTROL 0x10001
+#define CONTEXT_FLOATING_POINT 0x10002
+#define CONTEXT_INTEGER 0x10004
+#define CONTEXT_EXTENDED_FLOAT 0x1000a
+#define CONTEXT_EXTENDED_INTEGER 0x10014
+
+//
+// 32-bit Context Frame Offset Definitions
+//
+
+#define CxFltF0 0x10
+#define CxFltF1 0x14
+#define CxFltF2 0x18
+#define CxFltF3 0x1c
+#define CxFltF4 0x20
+#define CxFltF5 0x24
+#define CxFltF6 0x28
+#define CxFltF7 0x2c
+#define CxFltF8 0x30
+#define CxFltF9 0x34
+#define CxFltF10 0x38
+#define CxFltF11 0x3c
+#define CxFltF12 0x40
+#define CxFltF13 0x44
+#define CxFltF14 0x48
+#define CxFltF15 0x4c
+#define CxFltF16 0x50
+#define CxFltF17 0x54
+#define CxFltF18 0x58
+#define CxFltF19 0x5c
+#define CxFltF20 0x60
+#define CxFltF21 0x64
+#define CxFltF22 0x68
+#define CxFltF23 0x6c
+#define CxFltF24 0x70
+#define CxFltF25 0x74
+#define CxFltF26 0x78
+#define CxFltF27 0x7c
+#define CxFltF28 0x80
+#define CxFltF29 0x84
+#define CxFltF30 0x88
+#define CxFltF31 0x8c
+#define CxIntZero 0x90
+#define CxIntAt 0x94
+#define CxIntV0 0x98
+#define CxIntV1 0x9c
+#define CxIntA0 0xa0
+#define CxIntA1 0xa4
+#define CxIntA2 0xa8
+#define CxIntA3 0xac
+#define CxIntT0 0xb0
+#define CxIntT1 0xb4
+#define CxIntT2 0xb8
+#define CxIntT3 0xbc
+#define CxIntT4 0xc0
+#define CxIntT5 0xc4
+#define CxIntT6 0xc8
+#define CxIntT7 0xcc
+#define CxIntS0 0xd0
+#define CxIntS1 0xd4
+#define CxIntS2 0xd8
+#define CxIntS3 0xdc
+#define CxIntS4 0xe0
+#define CxIntS5 0xe4
+#define CxIntS6 0xe8
+#define CxIntS7 0xec
+#define CxIntT8 0xf0
+#define CxIntT9 0xf4
+#define CxIntK0 0xf8
+#define CxIntK1 0xfc
+#define CxIntGp 0x100
+#define CxIntSp 0x104
+#define CxIntS8 0x108
+#define CxIntRa 0x10c
+#define CxIntLo 0x110
+#define CxIntHi 0x114
+#define CxFsr 0x118
+#define CxFir 0x11c
+#define CxPsr 0x120
+#define CxContextFlags 0x124
+
+//
+// 64-bit Context Frame Offset Definitions
+//
+
+#define CxXFltF0 0x10
+#define CxXFltF1 0x18
+#define CxXFltF2 0x20
+#define CxXFltF3 0x28
+#define CxXFltF4 0x30
+#define CxXFltF5 0x38
+#define CxXFltF6 0x40
+#define CxXFltF7 0x48
+#define CxXFltF8 0x50
+#define CxXFltF9 0x58
+#define CxXFltF10 0x60
+#define CxXFltF11 0x68
+#define CxXFltF12 0x70
+#define CxXFltF13 0x78
+#define CxXFltF14 0x80
+#define CxXFltF15 0x88
+#define CxXFltF16 0x90
+#define CxXFltF17 0x98
+#define CxXFltF18 0xa0
+#define CxXFltF19 0xa8
+#define CxXFltF20 0xb0
+#define CxXFltF21 0xb8
+#define CxXFltF22 0xc0
+#define CxXFltF23 0xc8
+#define CxXFltF24 0xd0
+#define CxXFltF25 0xd8
+#define CxXFltF26 0xe0
+#define CxXFltF27 0xe8
+#define CxXFltF28 0xf0
+#define CxXFltF29 0xf8
+#define CxXFltF30 0x100
+#define CxXFltF31 0x108
+#define CxXFsr 0x118
+#define CxXFir 0x11c
+#define CxXPsr 0x120
+#define CxXContextFlags 0x124
+#define CxXIntZero 0x128
+#define CxXIntAt 0x130
+#define CxXIntV0 0x138
+#define CxXIntV1 0x140
+#define CxXIntA0 0x148
+#define CxXIntA1 0x150
+#define CxXIntA2 0x158
+#define CxXIntA3 0x160
+#define CxXIntT0 0x168
+#define CxXIntT1 0x170
+#define CxXIntT2 0x178
+#define CxXIntT3 0x180
+#define CxXIntT4 0x188
+#define CxXIntT5 0x190
+#define CxXIntT6 0x198
+#define CxXIntT7 0x1a0
+#define CxXIntS0 0x1a8
+#define CxXIntS1 0x1b0
+#define CxXIntS2 0x1b8
+#define CxXIntS3 0x1c0
+#define CxXIntS4 0x1c8
+#define CxXIntS5 0x1d0
+#define CxXIntS6 0x1d8
+#define CxXIntS7 0x1e0
+#define CxXIntT8 0x1e8
+#define CxXIntT9 0x1f0
+#define CxXIntK0 0x1f8
+#define CxXIntK1 0x200
+#define CxXIntGp 0x208
+#define CxXIntSp 0x210
+#define CxXIntS8 0x218
+#define CxXIntRa 0x220
+#define CxXIntLo 0x228
+#define CxXIntHi 0x230
+#define ContextFrameLength 0x238
+
+//
+// Exception Frame Offset Definitions and Length
+//
+
+#define ExArgs 0x0
+
+//
+// 32-bit Nonvolatile Floating State
+//
+
+#define ExFltF20 0x20
+#define ExFltF21 0x24
+#define ExFltF22 0x28
+#define ExFltF23 0x2c
+#define ExFltF24 0x30
+#define ExFltF25 0x34
+#define ExFltF26 0x38
+#define ExFltF27 0x3c
+#define ExFltF28 0x40
+#define ExFltF29 0x44
+#define ExFltF30 0x48
+#define ExFltF31 0x4c
+
+//
+// 64-bit Nonvolatile Floating State
+//
+
+#define ExXFltF20 0x20
+#define ExXFltF22 0x28
+#define ExXFltF24 0x30
+#define ExXFltF26 0x38
+#define ExXFltF28 0x40
+#define ExXFltF30 0x48
+
+//
+// 32-bit Nonvolatile Integer State
+//
+
+#define ExIntS0 0x50
+#define ExIntS1 0x54
+#define ExIntS2 0x58
+#define ExIntS3 0x5c
+#define ExIntS4 0x60
+#define ExIntS5 0x64
+#define ExIntS6 0x68
+#define ExIntS7 0x6c
+#define ExIntS8 0x70
+#define ExSwapReturn 0x74
+#define ExIntRa 0x78
+#define ExceptionFrameLength 0x80
+
+//
+// Jump Offset Definitions and Length
+//
+
+#define JbFltF20 0x0
+#define JbFltF21 0x4
+#define JbFltF22 0x8
+#define JbFltF23 0xc
+#define JbFltF24 0x10
+#define JbFltF25 0x14
+#define JbFltF26 0x18
+#define JbFltF27 0x1c
+#define JbFltF28 0x20
+#define JbFltF29 0x24
+#define JbFltF30 0x28
+#define JbFltF31 0x2c
+#define JbIntS0 0x30
+#define JbIntS1 0x34
+#define JbIntS2 0x38
+#define JbIntS3 0x3c
+#define JbIntS4 0x40
+#define JbIntS5 0x44
+#define JbIntS6 0x48
+#define JbIntS7 0x4c
+#define JbIntS8 0x50
+#define JbIntSp 0x54
+#define JbType 0x58
+#define JbFir 0x5c
+
+//
+// Trap Frame Offset Definitions and Length
+//
+
+#define TrArgs 0x0
+
+//
+// 32-bit Volatile Floating State
+//
+
+#define TrFltF0 0x10
+#define TrFltF1 0x14
+#define TrFltF2 0x18
+#define TrFltF3 0x1c
+#define TrFltF4 0x20
+#define TrFltF5 0x24
+#define TrFltF6 0x28
+#define TrFltF7 0x2c
+#define TrFltF8 0x30
+#define TrFltF9 0x34
+#define TrFltF10 0x38
+#define TrFltF11 0x3c
+#define TrFltF12 0x40
+#define TrFltF13 0x44
+#define TrFltF14 0x48
+#define TrFltF15 0x4c
+#define TrFltF16 0x50
+#define TrFltF17 0x54
+#define TrFltF18 0x58
+#define TrFltF19 0x5c
+
+//
+// 64-bit Volatile Floating State
+//
+
+#define TrXFltF0 0x10
+#define TrXFltF1 0x18
+#define TrXFltF2 0x20
+#define TrXFltF3 0x28
+#define TrXFltF4 0x30
+#define TrXFltF5 0x38
+#define TrXFltF6 0x40
+#define TrXFltF7 0x48
+#define TrXFltF8 0x50
+#define TrXFltF9 0x58
+#define TrXFltF10 0x60
+#define TrXFltF11 0x68
+#define TrXFltF12 0x70
+#define TrXFltF13 0x78
+#define TrXFltF14 0x80
+#define TrXFltF15 0x88
+#define TrXFltF16 0x90
+#define TrXFltF17 0x98
+#define TrXFltF18 0xa0
+#define TrXFltF19 0xa8
+#define TrXFltF21 0xb0
+#define TrXFltF23 0xb8
+#define TrXFltF25 0xc0
+#define TrXFltF27 0xc8
+#define TrXFltF29 0xd0
+#define TrXFltF31 0xd8
+
+//
+// 64-bit Volatile Integer State
+//
+
+#define TrXIntZero 0xe0
+#define TrXIntAt 0xe8
+#define TrXIntV0 0xf0
+#define TrXIntV1 0xf8
+#define TrXIntA0 0x100
+#define TrXIntA1 0x108
+#define TrXIntA2 0x110
+#define TrXIntA3 0x118
+#define TrXIntT0 0x120
+#define TrXIntT1 0x128
+#define TrXIntT2 0x130
+#define TrXIntT3 0x138
+#define TrXIntT4 0x140
+#define TrXIntT5 0x148
+#define TrXIntT6 0x150
+#define TrXIntT7 0x158
+#define TrXIntS0 0x160
+#define TrXIntS1 0x168
+#define TrXIntS2 0x170
+#define TrXIntS3 0x178
+#define TrXIntS4 0x180
+#define TrXIntS5 0x188
+#define TrXIntS6 0x190
+#define TrXIntS7 0x198
+#define TrXIntT8 0x1a0
+#define TrXIntT9 0x1a8
+#define TrXIntGp 0x1c0
+#define TrXIntSp 0x1c8
+#define TrXIntS8 0x1d0
+#define TrXIntRa 0x1d8
+#define TrXIntLo 0x1e0
+#define TrXIntHi 0x1e8
+
+#define TrFir 0x1f4
+#define TrFsr 0x1f0
+#define TrPsr 0x1f8
+#define TrExceptionRecord 0x1fc
+#define TrOldIrql 0x24c
+#define TrPreviousMode 0x24d
+#define TrSavedFlag 0x24e
+#define TrOnInterruptStack 0x250
+#define TrTrapFrame 0x250
+#define TrapFrameLength 0x258
+#define TrapFrameArguments 0x40
+
+//
+// Usermode callout kernel frame definitions
+//
+
+#define CuF20 0x10
+#define CuF21 0x14
+#define CuF22 0x18
+#define CuF23 0x1c
+#define CuF24 0x20
+#define CuF25 0x24
+#define CuF26 0x28
+#define CuF20 0x10
+#define CuF20 0x10
+#define CuF20 0x10
+#define CuF20 0x10
+#define CuF27 0x2c
+#define CuF28 0x30
+#define CuF29 0x34
+#define CuF30 0x38
+#define CuF31 0x3c
+#define CuS0 0x40
+#define CuS1 0x44
+#define CuS2 0x48
+#define CuS3 0x4c
+#define CuS4 0x50
+#define CuS5 0x54
+#define CuS6 0x58
+#define CuS7 0x5c
+#define CuS8 0x60
+#define CuCbStk 0x64
+#define CuTrFr 0x68
+#define CuFsr 0x6c
+#define CuInStk 0x70
+#define CuRa 0x74
+#define CuFrameLength 0x78
+#define CuA0 0x78
+#define CuA1 0x7c
+
+//
+// Usermode callout user frame definitions
+//
+
+#define CkBuffer 0x10
+#define CkLength 0x14
+#define CkApiNumber 0x18
+#define CkSp 0x20
+#define CkRa 0x28
+
+//
+// Loader Parameter Block Offset Definitions
+//
+
+#define LpbLoadOrderListHead 0x0
+#define LpbMemoryDescriptorListHead 0x8
+#define LpbKernelStack 0x18
+#define LpbPrcb 0x1c
+#define LpbProcess 0x20
+#define LpbThread 0x24
+#define LpbInterruptStack 0x5c
+#define LpbFirstLevelDcacheSize 0x60
+#define LpbFirstLevelDcacheFillSize 0x64
+#define LpbFirstLevelIcacheSize 0x68
+#define LpbFirstLevelIcacheFillSize 0x6c
+#define LpbGpBase 0x70
+#define LpbPanicStack 0x74
+#define LpbPcrPage 0x78
+#define LpbPdrPage 0x7c
+#define LpbSecondLevelDcacheSize 0x80
+#define LpbSecondLevelDcacheFillSize 0x84
+#define LpbSecondLevelIcacheSize 0x88
+#define LpbSecondLevelIcacheFillSize 0x8c
+#define LpbPcrPage2 0x90
+#define LpbRegistryLength 0x28
+#define LpbRegistryBase 0x2c
+
+//
+// Client/Server Structure Definitions
+//
+
+#define CidUniqueProcess 0x0
+#define CidUniqueThread 0x4
+
+//
+// Address Space Layout Definitions
+//
+
+#define KUSEG_BASE 0x0
+#define KSEG0_BASE 0x80000000
+#define KSEG1_BASE 0xa0000000
+#define KSEG2_BASE 0xc0000000
+#define CACHE_ERROR_VECTOR 0xa0000400
+#define SYSTEM_BASE 0xc0800000
+#define PDE_BASE 0xc0300000
+#define PTE_BASE 0xc0000000
+
+//
+// Page Table and Directory Entry Definitions
+//
+
+#define PAGE_SIZE 0x1000
+#define PAGE_SHIFT 0xc
+#define PDI_SHIFT 0x16
+#define PTI_SHIFT 0xc
+
+//
+// Software Interrupt Request Mask Definitions
+//
+
+#define APC_INTERRUPT 0x100
+#define DISPATCH_INTERRUPT 0x200
+
+//
+// Breakpoint Definitions
+//
+
+#define USER_BREAKPOINT 0x0
+#define KERNEL_BREAKPOINT 0x1
+#define BREAKIN_BREAKPOINT 0x2
+#define BRANCH_TAKEN_BREAKPOINT 0x3
+#define BRANCH_NOT_TAKEN_BREAKPOINT 0x4
+#define SINGLE_STEP_BREAKPOINT 0x5
+#define DIVIDE_OVERFLOW_BREAKPOINT 0x6
+#define DIVIDE_BY_ZERO_BREAKPOINT 0x7
+#define RANGE_CHECK_BREAKPOINT 0x8
+#define STACK_OVERFLOW_BREAKPOINT 0x9
+#define MULTIPLY_OVERFLOW_BREAKPOINT 0xa
+#define DEBUG_PRINT_BREAKPOINT 0x14
+#define DEBUG_PROMPT_BREAKPOINT 0x15
+#define DEBUG_STOP_BREAKPOINT 0x16
+#define DEBUG_LOAD_SYMBOLS_BREAKPOINT 0x17
+#define DEBUG_UNLOAD_SYMBOLS_BREAKPOINT 0x18
+
+//
+// Miscellaneous Definitions
+//
+
+#define Executive 0x0
+#define KernelMode 0x0
+#define FALSE 0x0
+#define TRUE 0x1
+#define UNCACHED_POLICY 0x2
+#define KiPcr 0xfffff000
+#define KiPcr2 0xffffe000
+#define UsPcr 0x7ffff000
+#define UsPcr2 0x7fffe000
+#define BASE_PRIORITY_THRESHOLD 0x8
+#define EVENT_PAIR_INCREMENT 0x1
+#define LOW_REALTIME_PRIORITY 0x10
+#define KERNEL_STACK_SIZE 0x3000
+#define KERNEL_LARGE_STACK_COMMIT 0x3000
+#define XCODE_VECTOR_LENGTH 0x20
+#define MM_USER_PROBE_ADDRESS 0x7fff0000
+#define ROUND_TO_NEAREST 0x0
+#define ROUND_TO_ZERO 0x1
+#define ROUND_TO_PLUS_INFINITY 0x2
+#define ROUND_TO_MINUS_INFINITY 0x3
+#define CLOCK_QUANTUM_DECREMENT 0x3
+#define READY_SKIP_QUANTUM 0x2
+#define THREAD_QUANTUM 0x6
+#define WAIT_QUANTUM_DECREMENT 0x1
+#define ROUND_TRIP_DECREMENT_COUNT 0x10
diff --git a/public/sdk/inc/ksppc.h b/public/sdk/inc/ksppc.h
new file mode 100644
index 000000000..3d467a566
--- /dev/null
+++ b/public/sdk/inc/ksppc.h
@@ -0,0 +1,1216 @@
+#include "kxppc.h"
+
+//
+// Process State Enumerated Type Values
+//
+
+#define ProcessInMemory 0x0
+#define ProcessOutOfMemory 0x1
+#define ProcessInTransition 0x2
+
+//
+// Thread State Enumerated Type Values
+//
+
+#define Initialized 0x0
+#define Ready 0x1
+#define Running 0x2
+#define Standby 0x3
+#define Terminated 0x4
+#define Waiting 0x5
+
+//
+// Wait Reason and Wait Type Enumerated Type Values
+//
+
+#define WrExecutive 0x0
+#define WrEventPair 0xe
+#define WaitAny 0x1
+#define WaitAll 0x0
+
+//
+// Apc State Structure Offset Definitions
+//
+
+#define AsApcListHead 0x0
+#define AsProcess 0x10
+#define AsKernelApcInProgress 0x14
+#define AsKernelApcPending 0x15
+#define AsUserApcPending 0x16
+
+//
+// Bug Check Code Definitions
+//
+
+#define APC_INDEX_MISMATCH 0x1
+#define DATA_BUS_ERROR 0x2e
+#define DATA_COHERENCY_EXCEPTION 0x55
+#define HAL1_INITIALIZATION_FAILED 0x61
+#define INSTRUCTION_BUS_ERROR 0x2f
+#define INSTRUCTION_COHERENCY_EXCEPTION 0x56
+#define INTERRUPT_EXCEPTION_NOT_HANDLED 0x3d
+#define INTERRUPT_UNWIND_ATTEMPTED 0x3c
+#define INVALID_AFFINITY_SET 0x3
+#define INVALID_DATA_ACCESS_TRAP 0x4
+#define IRQL_GT_ZERO_AT_SYSTEM_SERVICE 0x4a
+#define IRQL_NOT_LESS_OR_EQUAL 0xa
+#define KMODE_EXCEPTION_NOT_HANDLED 0x1e
+#define NMI_HARDWARE_FAILURE 0x80
+#define NO_USER_MODE_CONTEXT 0xe
+#define PAGE_FAULT_WITH_INTERRUPTS_OFF 0x49
+#define PANIC_STACK_SWITCH 0x2b
+#define SPIN_LOCK_INIT_FAILURE 0x81
+#define SYSTEM_EXIT_OWNED_MUTEX 0x39
+#define SYSTEM_SERVICE_EXCEPTION 0x3b
+#define SYSTEM_UNWIND_PREVIOUS_USER 0x3a
+#define TRAP_CAUSE_UNKNOWN 0x12
+#define UNEXPECTED_KERNEL_MODE_TRAP 0x7f
+
+//
+// Breakpoint type definitions
+//
+
+#define DBG_STATUS_CONTROL_C 0x1
+
+//
+// Client Id Structure Offset Definitions
+//
+
+#define CidUniqueProcess 0x0
+#define CidUniqueThread 0x4
+
+//
+// Critical Section Structure Offset Definitions
+//
+
+#define CsDebugInfo 0x0
+#define CsLockCount 0x4
+#define CsRecursionCount 0x8
+#define CsOwningThread 0xc
+#define CsLockSemaphore 0x10
+
+//
+// Critical Section Debug Information Structure Offset Definitions
+//
+
+#define CsType 0x0
+#define CsCreatorBackTraceIndex 0x2
+#define CsCriticalSection 0x4
+#define CsProcessLocksList 0x8
+#define CsEntryCount 0x10
+#define CsContentionCount 0x14
+
+//
+// Dispatcher Context Structure Offset Definitions
+//
+
+#define DcControlPc 0x0
+#define DcFunctionEntry 0x4
+#define DcEstablisherFrame 0x8
+#define DcContextRecord 0xc
+
+//
+// Exception Record Offset, Flag, and Enumerated Type Definitions
+//
+
+#define EXCEPTION_NONCONTINUABLE 0x1
+#define EXCEPTION_UNWINDING 0x2
+#define EXCEPTION_EXIT_UNWIND 0x4
+#define EXCEPTION_STACK_INVALID 0x8
+#define EXCEPTION_NESTED_CALL 0x10
+#define EXCEPTION_TARGET_UNWIND 0x20
+#define EXCEPTION_COLLIDED_UNWIND 0x40
+#define EXCEPTION_UNWIND 0x66
+#define EXCEPTION_EXECUTE_HANDLER 0x1
+#define EXCEPTION_CONTINUE_SEARCH 0x0
+#define EXCEPTION_CONTINUE_EXECUTION 0xffffffff
+
+#define ExceptionContinueExecution 0x0
+#define ExceptionContinueSearch 0x1
+#define ExceptionNestedException 0x2
+#define ExceptionCollidedUnwind 0x3
+
+#define ErExceptionCode 0x0
+#define ErExceptionFlags 0x4
+#define ErExceptionRecord 0x8
+#define ErExceptionAddress 0xc
+#define ErNumberParameters 0x10
+#define ErExceptionInformation 0x14
+#define ExceptionRecordLength 0x50
+
+//
+// Fast Mutex Structure Offset Definitions
+//
+
+#define FmCount 0x0
+#define FmOwner 0x4
+#define FmContention 0x8
+#define FmEvent 0xc
+#define FmOldIrql 0x1c
+
+//
+// Interrupt Priority Request Level Definitions
+//
+
+#define APC_LEVEL 0x1
+#define DISPATCH_LEVEL 0x2
+#define IPI_LEVEL 0x1d
+#define POWER_LEVEL 0x1e
+#define PROFILE_LEVEL 0x1b
+#define HIGH_LEVEL 0x1f
+#define SYNCH_LEVEL 0x2
+
+//
+// Large Integer Structure Offset Definitions
+//
+
+#define LiLowPart 0x0
+#define LiHighPart 0x4
+
+//
+// List Entry Structure Offset Definitions
+//
+
+#define LsFlink 0x0
+#define LsBlink 0x4
+
+//
+// String Structure Offset Definitions
+//
+
+#define StrLength 0x0
+#define StrMaximumLength 0x2
+#define StrBuffer 0x4
+
+//
+// System Time Structure Offset Definitions
+//
+
+#define StLowTime 0x0
+#define StHigh1Time 0x4
+#define StHigh2Time 0x8
+
+//
+// Time Structure Offset Definitions
+//
+
+#define TmLowTime 0x0
+#define TmHighTime 0x4
+
+//
+// Thread Switch Counter Offset Definitions
+//
+
+#define TwFindAny 0x0
+#define TwFindIdeal 0x4
+#define TwFindLast 0x8
+#define TwIdleAny 0xc
+#define TwIdleCurrent 0x10
+#define TwIdleIdeal 0x14
+#define TwIdleLast 0x18
+#define TwPreemptAny 0x1c
+#define TwPreemptCurrent 0x20
+#define TwPreemptLast 0x24
+#define TwSwitchToIdle 0x28
+
+//
+// Status Code Definitions
+//
+
+#define STATUS_ACCESS_VIOLATION 0xc0000005
+#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xc000008c
+#define STATUS_BAD_COMPRESSION_BUFFER 0xc0000242
+#define STATUS_BREAKPOINT 0x80000003
+#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
+#define STATUS_FLOAT_DENORMAL_OPERAND 0xc000008d
+#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xc000008e
+#define STATUS_FLOAT_INEXACT_RESULT 0xc000008f
+#define STATUS_FLOAT_INVALID_OPERATION 0xc0000090
+#define STATUS_FLOAT_OVERFLOW 0xc0000091
+#define STATUS_FLOAT_STACK_CHECK 0xc0000092
+#define STATUS_FLOAT_UNDERFLOW 0xc0000093
+#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
+#define STATUS_ILLEGAL_FLOAT_CONTEXT 0xc000014a
+#define STATUS_ILLEGAL_INSTRUCTION 0xc000001d
+#define STATUS_INSTRUCTION_MISALIGNMENT 0xc00000aa
+#define STATUS_INVALID_HANDLE 0xc0000008
+#define STATUS_INVALID_LOCK_SEQUENCE 0xc000001e
+#define STATUS_INVALID_OWNER 0xc000005a
+#define STATUS_INVALID_PARAMETER_1 0xc00000ef
+#define STATUS_INVALID_SYSTEM_SERVICE 0xc000001c
+#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xc0000094
+#define STATUS_INTEGER_OVERFLOW 0xc0000095
+#define STATUS_IN_PAGE_ERROR 0xc0000006
+#define STATUS_KERNEL_APC 0x100
+#define STATUS_LONGJUMP 0x80000026
+#define STATUS_NO_CALLBACK_ACTIVE 0xc0000258
+#define STATUS_NO_EVENT_PAIR 0xc000014e
+#define STATUS_PRIVILEGED_INSTRUCTION 0xc0000096
+#define STATUS_SINGLE_STEP 0x80000004
+#define STATUS_STACK_OVERFLOW 0xc00000fd
+#define STATUS_SUCCESS 0x0
+#define STATUS_THREAD_IS_TERMINATING 0xc000004b
+#define STATUS_TIMEOUT 0x102
+#define STATUS_UNWIND 0xc0000027
+#define STATUS_WAKE_SYSTEM_DEBUGGER 0x80000007
+
+//
+// APC Object Structure Offset Definitions
+//
+
+#define ApType 0x0
+#define ApSize 0x2
+#define ApThread 0x8
+#define ApApcListEntry 0xc
+#define ApKernelRoutine 0x14
+#define ApRundownRoutine 0x18
+#define ApNormalRoutine 0x1c
+#define ApNormalContext 0x20
+#define ApSystemArgument1 0x24
+#define ApSystemArgument2 0x28
+#define ApApcStateIndex 0x2c
+#define ApApcMode 0x2d
+#define ApInserted 0x2e
+#define ApcObjectLength 0x30
+
+//
+// DPC object Structure Offset Definitions
+//
+
+#define DpType 0x0
+#define DpNumber 0x2
+#define DpImportance 0x3
+#define DpDpcListEntry 0x4
+#define DpDeferredRoutine 0xc
+#define DpDeferredContext 0x10
+#define DpSystemArgument1 0x14
+#define DpSystemArgument2 0x18
+#define DpLock 0x1c
+#define DpcObjectLength 0x20
+
+//
+// Device Queue Object Structure Offset Definitions
+//
+
+#define DvType 0x0
+#define DvSize 0x2
+#define DvDeviceListHead 0x4
+#define DvSpinLock 0xc
+#define DvBusy 0x10
+#define DeviceQueueObjectLength 0x14
+
+//
+// Device Queue Entry Structure Offset Definitions
+//
+
+#define DeDeviceListEntry 0x0
+#define DeSortKey 0x8
+#define DeInserted 0xc
+#define DeviceQueueEntryLength 0x10
+
+//
+// Event Object Structure Offset Definitions
+//
+
+#define EvType 0x0
+#define EvSize 0x2
+#define EvSignalState 0x4
+#define EvWaitListHead 0x8
+#define EventObjectLength 0x10
+
+//
+// Event Pair Object Structure Offset Definitions
+//
+
+#define EpType 0x0
+#define EpSize 0x2
+#define EpEventLow 0x4
+#define EpEventHigh 0x14
+#define SET_LOW_WAIT_HIGH 0xffffffe0
+#define SET_HIGH_WAIT_LOW 0xfffffff0
+#define SET_EVENT_PAIR_MASK 0x10
+
+//
+// Interrupt Object Structure Offset Definitions
+//
+
+#define InLevelSensitive 0x0
+#define InLatched 0x1
+
+#define InType 0x0
+#define InSize 0x2
+#define InInterruptListEntry 0x4
+#define InServiceRoutine 0xc
+#define InServiceContext 0x10
+#define InSpinLock 0x14
+#define InActualLock 0x1c
+#define InDispatchAddress 0x20
+#define InVector 0x24
+#define InIrql 0x28
+#define InSynchronizeIrql 0x29
+#define InFloatingSave 0x2a
+#define InConnected 0x2b
+#define InNumber 0x2c
+#define InMode 0x30
+#define InShareVector 0x2d
+#define InDispatchCode 0x3c
+#define InterruptObjectLength 0x4c
+
+//
+// Process Object Structure Offset Definitions
+//
+
+#define PrType 0x0
+#define PrSize 0x2
+#define PrSignalState 0x4
+#define PrProfileListHead 0x10
+#define PrDirectoryTableBase 0x18
+#define PrProcessPid 0x20
+#define PrProcessSequence 0x24
+#define PrActiveProcessors 0x28
+#define PrKernelTime 0x2c
+#define PrUserTime 0x30
+#define PrReadyListHead 0x34
+#define PrSwapListEntry 0x3c
+#define PrThreadListHead 0x44
+#define PrProcessLock 0x4c
+#define PrAffinity 0x50
+#define PrStackCount 0x54
+#define PrBasePriority 0x56
+#define PrThreadQuantum 0x57
+#define PrAutoAlignment 0x58
+#define PrState 0x59
+#define ProcessObjectLength 0x60
+#define ExtendedProcessObjectLength 0x1f0
+
+//
+// Profile Object Structure Offset Definitions
+//
+
+#define PfType 0x0
+#define PfSize 0x2
+#define PfProfileListEntry 0x4
+#define PfProcess 0xc
+#define PfRangeBase 0x10
+#define PfRangeLimit 0x14
+#define PfBucketShift 0x18
+#define PfBuffer 0x1c
+#define PfSegment 0x20
+#define PfAffinity 0x24
+#define PfSource 0x28
+#define PfStarted 0x2a
+#define ProfileObjectLength 0x2c
+
+//
+// Queue Object Structure Offset Definitions
+//
+
+#define QuType 0x0
+#define QuSize 0x2
+#define QuSignalState 0x4
+#define QuEntryListHead 0x10
+#define QuCurrentCount 0x18
+#define QuMaximumCount 0x1c
+#define QuThreadListHead 0x20
+#define QueueObjectLength 0x28
+
+//
+// Thread Object Structure Offset Definitions
+//
+
+#define EeKernelEventPair 0x0
+#define EtCid 0x1e0
+#define EtEventPair 0x224
+#define EtPerformanceCountLow 0x204
+#define EtPerformanceCountHigh 0x23c
+#define EtEthreadLength 0x240
+
+#define ThType 0x0
+#define ThSize 0x2
+#define ThSignalState 0x4
+#define ThMutantListHead 0x10
+#define ThInitialStack 0x18
+#define ThStackLimit 0x1c
+#define ThTeb 0x20
+#define ThTlsArray 0x24
+#define ThKernelStack 0x28
+#define ThDebugActive 0x2c
+#define ThState 0x2d
+#define ThAlerted 0x2e
+#define ThIopl 0x30
+#define ThNpxState 0x31
+#define ThSaturation 0x32
+#define ThPriority 0x33
+#define ThApcState 0x34
+#define ThContextSwitches 0x4c
+#define ThWaitStatus 0x50
+#define ThWaitIrql 0x54
+#define ThWaitMode 0x55
+#define ThWaitNext 0x56
+#define ThWaitReason 0x57
+#define ThWaitBlockList 0x58
+#define ThWaitListEntry 0x5c
+#define ThWaitTime 0x64
+#define ThBasePriority 0x68
+#define ThDecrementCount 0x69
+#define ThPriorityDecrement 0x6a
+#define ThQuantum 0x6b
+#define ThWaitBlock 0x6c
+#define ThKernelApcDisable 0xd0
+#define ThUserAffinity 0xd4
+#define ThSystemAffinityActive 0xd8
+#define ThServiceTable 0xdc
+#define ThQueue 0xe0
+#define ThApcQueueLock 0xe4
+#define ThTimer 0xe8
+#define ThQueueListEntry 0x110
+#define ThAffinity 0x118
+#define ThPreempted 0x11c
+#define ThProcessReadyQueue 0x11d
+#define ThKernelStackResident 0x11e
+#define ThNextProcessor 0x11f
+#define ThCallbackStack 0x120
+#define ThWin32Thread 0x124
+#define ThTrapFrame 0x128
+#define ThApcStatePointer 0x12c
+#define ThPreviousMode 0x137
+#define ThEnableStackSwap 0x134
+#define ThLargeStack 0x135
+#define ThKernelTime 0x138
+#define ThUserTime 0x13c
+#define ThSavedApcState 0x140
+#define ThAlertable 0x158
+#define ThApcStateIndex 0x159
+#define ThApcQueueable 0x15a
+#define ThAutoAlignment 0x15b
+#define ThStackBase 0x15c
+#define ThSuspendApc 0x160
+#define ThSuspendSemaphore 0x190
+#define ThThreadListEntry 0x1a4
+#define ThFreezeCount 0x1ac
+#define ThSuspendCount 0x1ad
+#define ThIdealProcessor 0x1ae
+#define ThDisableBoost 0x1af
+#define ThreadObjectLength 0x1b0
+#define ExtendedThreadObjectLength 0x240
+
+#define EVENT_WAIT_BLOCK_OFFSET 0x9c
+
+//
+// Timer object Structure Offset Definitions
+//
+
+#define TiType 0x0
+#define TiSize 0x2
+#define TiInserted 0x3
+#define TiSignalState 0x4
+#define TiDueTime 0x10
+#define TiTimerListEntry 0x18
+#define TiDpc 0x20
+#define TiPeriod 0x24
+#define TimerObjectLength 0x28
+
+#define TIMER_TABLE_SIZE 0x80
+
+//
+// Wait Block Structure Offset Definitions
+//
+
+#define WbWaitListEntry 0x0
+#define WbThread 0x8
+#define WbObject 0xc
+#define WbNextWaitBlock 0x10
+#define WbWaitKey 0x14
+#define WbWaitType 0x16
+
+//
+// Fiber Structure Offset Definitions
+//
+
+#define FbFiberData 0x0
+#define FbExceptionList 0x4
+#define FbStackBase 0x8
+#define FbStackLimit 0xc
+#define FbDeallocationStack 0x10
+#define FbFiberContext 0x18
+
+//
+// Process Environment Block Structure Offset Definitions
+//
+
+#define PeKernelCallbackTable 0x2c
+
+//
+// System Service Descriptor Table Structure Definitions
+//
+
+#define NUMBER_SERVICE_TABLES 0x4
+#define SERVICE_NUMBER_MASK 0xfff
+#define SERVICE_TABLE_SHIFT 0x8
+#define SERVICE_TABLE_MASK 0x30
+#define SERVICE_TABLE_TEST 0x10
+
+#define SdBase 0x0
+#define SdCount 0x4
+#define SdLimit 0x8
+#define SdNumber 0xc
+
+//
+// Thread Environment Block Structure Offset Definitions
+//
+
+#define TeStackBase 0x4
+#define TeStackLimit 0x8
+#define TeFiberData 0x10
+#define TeEnvironmentPointer 0x1c
+#define TeClientId 0x20
+#define TeActiveRpcHandle 0x28
+#define TeThreadLocalStoragePointer 0x2c
+#define TePeb 0x30
+#define TeCsrClientThread 0x3c
+#define TeSoftFpcr 0xc8
+#define TeGdiClientPID 0x6f4
+#define TeGdiClientTID 0x6f8
+#define TeGdiThreadLocalInfo 0x6fc
+#define TeglDispatchTable 0x714
+#define TeglSectionInfo 0xbe0
+#define TeglSection 0xbe4
+#define TeglTable 0xbe8
+#define TeglCurrentRC 0xbec
+#define TeglContext 0xbf0
+#define TeDeallocationStack 0xe0c
+#define TeGdiBatchCount 0xf70
+#define TeInstrumentation 0xf2c
+
+//
+// Processor Control Registers Structure Offset Definitions
+//
+
+#define PCR_MINOR_VERSION 0x1
+#define PCR_MAJOR_VERSION 0x1
+
+#define PcMinorVersion 0x0
+#define PcMajorVersion 0x2
+#define PcInterruptRoutine 0x4
+#define PcPcrPage2 0x404
+#define PcKseg0Top 0x408
+#define PcFirstLevelDcacheSize 0x484
+#define PcFirstLevelDcacheFillSize 0x488
+#define PcFirstLevelIcacheSize 0x48c
+#define PcFirstLevelIcacheFillSize 0x490
+#define PcSecondLevelDcacheSize 0x494
+#define PcSecondLevelDcacheFillSize 0x498
+#define PcSecondLevelIcacheSize 0x49c
+#define PcSecondLevelIcacheFillSize 0x4a0
+#define PcPrcb 0x4a4
+#define PcTeb 0x4a8
+#define PcDcacheAlignment 0x4ac
+#define PcDcacheFillSize 0x4b0
+#define PcIcacheAlignment 0x4b4
+#define PcIcacheFillSize 0x4b8
+#define PcProcessorVersion 0x4bc
+#define PcProcessorRevision 0x4c0
+#define PcProfileInterval 0x4c4
+#define PcProfileCount 0x4c8
+#define PcStallExecutionCount 0x4cc
+#define PcStallScaleFactor 0x4d0
+#define PcCachePolicy 0x4d8
+#define PcIcacheMode 0x4d8
+#define PcDcacheMode 0x4d9
+#define PcIrqlMask 0x4dc
+#define PcIrqlTable 0x4fc
+#define PcCurrentIrql 0x505
+#define PcNumber 0x506
+#define PcSetMember 0x508
+#define PcCurrentThread 0x510
+#define PcAlignedCachePolicy 0x514
+#define PcSoftwareInterrupt 0x518
+#define PcApcInterrupt 0x518
+#define PcDispatchInterrupt 0x519
+#define PcNotMember 0x51c
+#define PcSystemReserved 0x520
+#define PcHalReserved 0x560
+#define PcFirstLevelActive 0x5a0
+#define PcSystemServiceDispatchStart 0x5a4
+#define PcSystemServiceDispatchEnd 0x5a8
+#define PcInterruptStack 0x5ac
+#define PcQuantumEnd 0x5b0
+#define PcInitialStack 0x5b4
+#define PcPanicStack 0x5b8
+#define PcBadVaddr 0x5bc
+#define PcStackLimit 0x5c0
+#define PcSavedStackLimit 0x5c4
+#define PcSavedV0 0x5c8
+#define PcSavedV1 0x5cc
+#define PcDebugActive 0x5d0
+#define PcGprSave 0x5d4
+#define PcSiR0 0x5ec
+#define PcSiR2 0x5f0
+#define PcSiR3 0x5f4
+#define PcSiR4 0x5f8
+#define PcSiR5 0x5fc
+#define PcPgDirRa 0x608
+#define PcOnInterruptStack 0x60c
+#define PcSavedInitialStack 0x610
+#define ProcessorControlRegisterLength 0x620
+
+#define Pc2TickCountLow 0x0
+#define Pc2TickCountMultiplier 0x4
+#define Pc2InterruptTime 0x8
+#define Pc2SystemTime 0x14
+
+#define IrPmiVector 0xc
+#define IrMachineCheckVector 0x10
+#define IrDeviceVector 0x14
+#define IrDecrementVector 0x1c
+
+//
+// Processor Block Structure Offset Definitions
+//
+
+#define PRCB_MINOR_VERSION 0x1
+#define PRCB_MAJOR_VERSION 0x1
+
+#define PbMinorVersion 0x0
+#define PbMajorVersion 0x2
+#define PbCurrentThread 0x4
+#define PbNextThread 0x8
+#define PbIdleThread 0xc
+#define PbNumber 0x10
+#define PbSetMember 0x14
+#define PbRestartBlock 0x18
+#define PbPcrPage 0x1c
+#define PbSystemReserved 0x24
+#define PbHalReserved 0x60
+#define PbDpcTime 0xa0
+#define PbInterruptTime 0xa4
+#define PbKernelTime 0xa8
+#define PbUserTime 0xac
+#define PbAdjustDpcThreshold 0xb0
+#define PbInterruptCount 0xb4
+#define PbApcBypassCount 0xb8
+#define PbDpcBypassCount 0xbc
+#define PbIpiFrozen 0xdc
+#define PbProcessorState 0xe0
+#define PbAlignmentFixupCount 0x3a0
+#define PbContextSwitches 0x3a4
+#define PbDcacheFlushCount 0x3a8
+#define PbExceptionDispatchCount 0x3ac
+#define PbFirstLevelTbFills 0x3b0
+#define PbFloatingEmulationCount 0x3b4
+#define PbIcacheFlushCount 0x3b8
+#define PbSecondLevelTbFills 0x3bc
+#define PbSystemCalls 0x3c0
+#define PbCurrentPacket 0x600
+#define PbTargetSet 0x60c
+#define PbWorkerRoutine 0x610
+#define PbRequestSummary 0x620
+#define PbSignalDone 0x624
+#define PbDpcInterruptRequested 0x640
+#define PbMaximumDpcQueueDepth 0x660
+#define PbMinimumDpcRate 0x664
+#define PbIpiCounts 0x690
+#define PbStartCount 0x698
+#define PbDpcLock 0x6a0
+#define PbDpcListHead 0x6a4
+#define PbDpcQueueDepth 0x6ac
+#define PbDpcCount 0x6b0
+#define PbDpcLastCount 0x6b4
+#define PbDpcRequestRate 0x6b8
+#define PbDpcRoutineActive 0x6bc
+#define ProcessorBlockLength 0x6e0
+
+//
+// Immediate Interprocessor Command Definitions
+//
+
+#define IPI_APC 0x1
+#define IPI_DPC 0x2
+#define IPI_FREEZE 0x4
+#define IPI_PACKET_READY 0x8
+
+//
+// Interprocessor Interrupt Count Structure Offset Definitions
+//
+
+#define IcFreeze 0x0
+#define IcPacket 0x4
+#define IcDPC 0x8
+#define IcAPC 0xc
+#define IcFlushSingleTb 0x10
+#define IcFlushEntireTb 0x18
+#define IcChangeColor 0x20
+#define IcSweepDcache 0x24
+#define IcSweepIcache 0x28
+#define IcSweepIcacheRange 0x2c
+#define IcFlushIoBuffers 0x30
+
+//
+// Context Frame Offset and Flag Definitions
+//
+
+#define CONTEXT_FULL 0x7
+#define CONTEXT_CONTROL 0x1
+#define CONTEXT_FLOATING_POINT 0x2
+#define CONTEXT_INTEGER 0x4
+
+#define CxFpr0 0x0
+#define CxFpr1 0x8
+#define CxFpr2 0x10
+#define CxFpr3 0x18
+#define CxFpr4 0x20
+#define CxFpr5 0x28
+#define CxFpr6 0x30
+#define CxFpr7 0x38
+#define CxFpr8 0x40
+#define CxFpr9 0x48
+#define CxFpr10 0x50
+#define CxFpr11 0x58
+#define CxFpr12 0x60
+#define CxFpr13 0x68
+#define CxFpr14 0x70
+#define CxFpr15 0x78
+#define CxFpr16 0x80
+#define CxFpr17 0x88
+#define CxFpr18 0x90
+#define CxFpr19 0x98
+#define CxFpr20 0xa0
+#define CxFpr21 0xa8
+#define CxFpr22 0xb0
+#define CxFpr23 0xb8
+#define CxFpr24 0xc0
+#define CxFpr25 0xc8
+#define CxFpr26 0xd0
+#define CxFpr27 0xd8
+#define CxFpr28 0xe0
+#define CxFpr29 0xe8
+#define CxFpr30 0xf0
+#define CxFpr31 0xf8
+#define CxFpscr 0x100
+#define CxGpr0 0x108
+#define CxGpr1 0x10c
+#define CxGpr2 0x110
+#define CxGpr3 0x114
+#define CxGpr4 0x118
+#define CxGpr5 0x11c
+#define CxGpr6 0x120
+#define CxGpr7 0x124
+#define CxGpr8 0x128
+#define CxGpr9 0x12c
+#define CxGpr10 0x130
+#define CxGpr11 0x134
+#define CxGpr12 0x138
+#define CxGpr13 0x13c
+#define CxGpr14 0x140
+#define CxGpr15 0x144
+#define CxGpr16 0x148
+#define CxGpr17 0x14c
+#define CxGpr18 0x150
+#define CxGpr19 0x154
+#define CxGpr20 0x158
+#define CxGpr21 0x15c
+#define CxGpr22 0x160
+#define CxGpr23 0x164
+#define CxGpr24 0x168
+#define CxGpr25 0x16c
+#define CxGpr26 0x170
+#define CxGpr27 0x174
+#define CxGpr28 0x178
+#define CxGpr29 0x17c
+#define CxGpr30 0x180
+#define CxGpr31 0x184
+#define CxCr 0x188
+#define CxXer 0x18c
+#define CxMsr 0x190
+#define CxIar 0x194
+#define CxLr 0x198
+#define CxCtr 0x19c
+#define CxContextFlags 0x1a0
+#define CxDr0 0x1b0
+#define CxDr1 0x1b4
+#define CxDr2 0x1b8
+#define CxDr3 0x1bc
+#define CxDr4 0x1c0
+#define CxDr5 0x1c4
+#define CxDr6 0x1c8
+#define CxDr7 0x1cc
+#define ContextFrameLength 0x1d0
+
+//
+// Call/Return Stack Frame Header Offset Definitions and Length
+//
+
+#define CrBackChain 0x0
+#define CrGlueSaved1 0x4
+#define CrGlueSaved2 0x8
+#define CrReserved1 0xc
+#define CrSpare1 0x10
+#define CrSpare2 0x14
+#define CrParameter0 0x18
+#define CrParameter1 0x1c
+#define CrParameter2 0x20
+#define CrParameter3 0x24
+#define CrParameter4 0x28
+#define CrParameter5 0x2c
+#define CrParameter6 0x30
+#define CrParameter7 0x34
+#define StackFrameHeaderLength 0x38
+
+//
+// Exception Frame Offset Definitions and Length
+//
+
+#define ExGpr13 0x4
+#define ExGpr14 0x8
+#define ExGpr15 0xc
+#define ExGpr16 0x10
+#define ExGpr17 0x14
+#define ExGpr18 0x18
+#define ExGpr19 0x1c
+#define ExGpr20 0x20
+#define ExGpr21 0x24
+#define ExGpr22 0x28
+#define ExGpr23 0x2c
+#define ExGpr24 0x30
+#define ExGpr25 0x34
+#define ExGpr26 0x38
+#define ExGpr27 0x3c
+#define ExGpr28 0x40
+#define ExGpr29 0x44
+#define ExGpr30 0x48
+#define ExGpr31 0x4c
+#define ExFpr14 0x50
+#define ExFpr15 0x58
+#define ExFpr16 0x60
+#define ExFpr17 0x68
+#define ExFpr18 0x70
+#define ExFpr19 0x78
+#define ExFpr20 0x80
+#define ExFpr21 0x88
+#define ExFpr22 0x90
+#define ExFpr23 0x98
+#define ExFpr24 0xa0
+#define ExFpr25 0xa8
+#define ExFpr26 0xb0
+#define ExFpr27 0xb8
+#define ExFpr28 0xc0
+#define ExFpr29 0xc8
+#define ExFpr30 0xd0
+#define ExFpr31 0xd8
+#define ExceptionFrameLength 0xe0
+
+//
+// Swap Frame Definitions and Length
+//
+
+#define SwConditionRegister 0xe0
+#define SwSwapReturn 0xe4
+#define SwapFrameLength 0xe8
+
+//
+// Jump Offset Definitions and Length
+//
+
+#define JbFpr14 0x0
+#define JbFpr15 0x8
+#define JbFpr16 0x10
+#define JbFpr17 0x18
+#define JbFpr18 0x20
+#define JbFpr19 0x28
+#define JbFpr20 0x30
+#define JbFpr21 0x38
+#define JbFpr22 0x40
+#define JbFpr23 0x48
+#define JbFpr24 0x50
+#define JbFpr25 0x58
+#define JbFpr26 0x60
+#define JbFpr27 0x68
+#define JbFpr28 0x70
+#define JbFpr29 0x78
+#define JbFpr30 0x80
+#define JbFpr31 0x88
+#define JbGpr1 0x90
+#define JbGpr2 0x94
+#define JbGpr13 0x98
+#define JbGpr14 0x9c
+#define JbGpr15 0xa0
+#define JbGpr16 0xa4
+#define JbGpr17 0xa8
+#define JbGpr18 0xac
+#define JbGpr19 0xb0
+#define JbGpr20 0xb4
+#define JbGpr21 0xb8
+#define JbGpr22 0xbc
+#define JbGpr23 0xc0
+#define JbGpr24 0xc4
+#define JbGpr25 0xc8
+#define JbGpr26 0xcc
+#define JbGpr27 0xd0
+#define JbGpr28 0xd4
+#define JbGpr29 0xd8
+#define JbGpr30 0xdc
+#define JbGpr31 0xe0
+#define JbCr 0xe4
+#define JbIar 0xe8
+#define JbType 0xec
+
+//
+// Trap Frame Offset Definitions and Length
+//
+
+#define TrTrapFrame 0x0
+#define TrOldIrql 0x4
+#define TrPreviousMode 0x5
+#define TrSavedApcStateIndex 0x6
+#define TrSavedKernelApcDisable 0x7
+#define TrExceptionRecord 0x8
+#define TrGpr0 0x5c
+#define TrGpr1 0x60
+#define TrGpr2 0x64
+#define TrGpr3 0x68
+#define TrGpr4 0x6c
+#define TrGpr5 0x70
+#define TrGpr6 0x74
+#define TrGpr7 0x78
+#define TrGpr8 0x7c
+#define TrGpr9 0x80
+#define TrGpr10 0x84
+#define TrGpr11 0x88
+#define TrGpr12 0x8c
+#define TrFpr0 0x90
+#define TrFpr1 0x98
+#define TrFpr2 0xa0
+#define TrFpr3 0xa8
+#define TrFpr4 0xb0
+#define TrFpr5 0xb8
+#define TrFpr6 0xc0
+#define TrFpr7 0xc8
+#define TrFpr8 0xd0
+#define TrFpr9 0xd8
+#define TrFpr10 0xe0
+#define TrFpr11 0xe8
+#define TrFpr12 0xf0
+#define TrFpr13 0xf8
+#define TrFpscr 0x100
+#define TrCr 0x108
+#define TrXer 0x10c
+#define TrMsr 0x110
+#define TrIar 0x114
+#define TrLr 0x118
+#define TrCtr 0x11c
+#define TrDr0 0x120
+#define TrDr1 0x124
+#define TrDr2 0x128
+#define TrDr3 0x12c
+#define TrDr4 0x130
+#define TrDr5 0x134
+#define TrDr6 0x138
+#define TrDr7 0x13c
+#define TrapFrameLength 0x140
+
+//
+// Usermode callout frame definitions
+//
+
+#define CuFrame 0x0
+#define CuCbStk 0x38
+#define CuTrFr 0x3c
+#define CuInStk 0x40
+#define CuTrIar 0x44
+#define CuTrToc 0x48
+#define CuR3 0x4c
+#define CuR4 0x50
+#define CuLr 0x54
+#define CuGpr 0x58
+#define CuFpr 0xa0
+#define CuFrameLength 0x130
+
+//
+// Usermode callout user frame definitions
+//
+
+#define CkFrame 0x0
+#define CkBuffer 0x38
+#define CkLength 0x3c
+#define CkApiNumber 0x40
+#define CkLr 0x44
+#define CkToc 0x48
+#define CkFrameLength 0x50
+
+//
+// Exception stack frame frame definitions
+//
+
+#define STK_SLACK_SPACE 0xe8
+#define TF_BASE 0x58
+#define KERN_SYS_CALL_FRAME 0x198
+#define EF_BASE 0x198
+#define EfLr 0x278
+#define EfCr 0x27c
+#define USER_SYS_CALL_FRAME 0x280
+#define STACK_DELTA_NEWSTK 0x280
+#define STACK_DELTA 0x368
+
+//
+// Processor State Frame Offset Definitions
+//
+
+#define PsContextFrame 0x0
+#define PsSpecialRegisters 0x1d0
+#define SrKernelDr0 0x0
+#define SrKernelDr1 0x4
+#define SrKernelDr2 0x8
+#define SrKernelDr3 0xc
+#define SrKernelDr4 0x10
+#define SrKernelDr5 0x14
+#define SrKernelDr6 0x18
+#define SrKernelDr7 0x1c
+#define SrSprg0 0x20
+#define SrSprg1 0x24
+#define SrSr0 0x28
+#define SrSr1 0x2c
+#define SrSr2 0x30
+#define SrSr3 0x34
+#define SrSr4 0x38
+#define SrSr5 0x3c
+#define SrSr6 0x40
+#define SrSr7 0x44
+#define SrSr8 0x48
+#define SrSr9 0x4c
+#define SrSr10 0x50
+#define SrSr11 0x54
+#define SrSr12 0x58
+#define SrSr13 0x5c
+#define SrSr14 0x60
+#define SrSr15 0x64
+#define SrDBAT0L 0x68
+#define SrDBAT0U 0x6c
+#define SrDBAT1L 0x70
+#define SrDBAT1U 0x74
+#define SrDBAT2L 0x78
+#define SrDBAT2U 0x7c
+#define SrDBAT3L 0x80
+#define SrDBAT3U 0x84
+#define SrIBAT0L 0x88
+#define SrIBAT0U 0x8c
+#define SrIBAT1L 0x90
+#define SrIBAT1U 0x94
+#define SrIBAT2L 0x98
+#define SrIBAT2U 0x9c
+#define SrIBAT3L 0xa0
+#define SrIBAT3U 0xa4
+#define SrSdr1 0xa8
+#define ProcessorStateLength 0x2a0
+
+//
+// Loader Parameter Block Offset Definitions
+//
+
+#define LpbLoadOrderListHead 0x0
+#define LpbMemoryDescriptorListHead 0x8
+#define LpbKernelStack 0x18
+#define LpbPrcb 0x1c
+#define LpbProcess 0x20
+#define LpbThread 0x24
+#define LpbRegistryLength 0x28
+#define LpbRegistryBase 0x2c
+#define LpbInterruptStack 0x5c
+#define LpbFirstLevelDcacheSize 0x60
+#define LpbFirstLevelDcacheFillSize 0x64
+#define LpbFirstLevelIcacheSize 0x68
+#define LpbFirstLevelIcacheFillSize 0x6c
+#define LpbHashedPageTable 0x70
+#define LpbPanicStack 0x74
+#define LpbPcrPage 0x78
+#define LpbPdrPage 0x7c
+#define LpbSecondLevelDcacheSize 0x80
+#define LpbSecondLevelDcacheFillSize 0x84
+#define LpbSecondLevelIcacheSize 0x88
+#define LpbSecondLevelIcacheFillSize 0x8c
+#define LpbPcrPage2 0x90
+#define LpbIcacheMode 0x94
+#define LpbDcacheMode 0x95
+#define LpbNumberCongruenceClasses 0x96
+#define LpbKseg0Top 0x98
+#define LpbHashedPageTableSize 0xa0
+#define LpbKernelKseg0PagesDescriptor 0xa8
+#define LpbMinimumBlockLength 0xac
+#define LpbMaximumBlockLength 0xb0
+
+//
+// Memory Allocation Descriptor Offset Definitions
+//
+
+#define MadListEntry 0x0
+#define MadMemoryType 0x8
+#define MadBasePage 0xc
+#define MadPageCount 0x10
+
+//
+// Address Space Layout Definitions
+//
+
+#define KUSEG_BASE 0x0
+#define KSEG0_BASE 0x80000000
+#define KSEG1_BASE PCR->Kseg0Top
+#define KSEG2_BASE KSEG1_BASE
+#define SYSTEM_BASE 0x80000000
+#define PDE_BASE 0xc0300000
+#define PTE_BASE 0xc0000000
+
+//
+// Page Table and Directory Entry Definitions
+//
+
+#define PAGE_SIZE 0x1000
+#define PAGE_SHIFT 0xc
+#define PDI_SHIFT 0x16
+#define PTI_SHIFT 0xc
+
+//
+// Breakpoint Definitions
+//
+
+#define USER_BREAKPOINT 0x0
+#define KERNEL_BREAKPOINT 0x1
+#define BREAKIN_BREAKPOINT 0x2
+#define BRANCH_TAKEN_BREAKPOINT 0x3
+#define BRANCH_NOT_TAKEN_BREAKPOINT 0x4
+#define SINGLE_STEP_BREAKPOINT 0x5
+#define DIVIDE_OVERFLOW_BREAKPOINT 0x6
+#define DIVIDE_BY_ZERO_BREAKPOINT 0x7
+#define RANGE_CHECK_BREAKPOINT 0x8
+#define STACK_OVERFLOW_BREAKPOINT 0x9
+#define MULTIPLY_OVERFLOW_BREAKPOINT 0xa
+#define DEBUG_PRINT_BREAKPOINT 0x14
+#define DEBUG_PROMPT_BREAKPOINT 0x15
+#define DEBUG_STOP_BREAKPOINT 0x16
+#define DEBUG_LOAD_SYMBOLS_BREAKPOINT 0x17
+#define DEBUG_UNLOAD_SYMBOLS_BREAKPOINT 0x18
+
+//
+// Miscellaneous Definitions
+//
+
+#define Executive 0x0
+#define KernelMode 0x0
+#define FALSE 0x0
+#define TRUE 0x1
+#define UNCACHED_POLICY 0x2
+#define KiPcr 0xffffd000
+#define KiPcr2 0xffffe000
+#define BASE_PRIORITY_THRESHOLD 0x8
+#define EVENT_PAIR_INCREMENT 0x1
+#define LOW_REALTIME_PRIORITY 0x10
+#define KERNEL_STACK_SIZE 0x4000
+#define KERNEL_LARGE_STACK_COMMIT 0x4000
+#define MM_USER_PROBE_ADDRESS 0x7fff0000
+#define ROUND_TO_NEAREST 0x0
+#define ROUND_TO_ZERO 0x1
+#define ROUND_TO_PLUS_INFINITY 0x2
+#define ROUND_TO_MINUS_INFINITY 0x3
+#define CLOCK_QUANTUM_DECREMENT 0x3
+#define READY_SKIP_QUANTUM 0x2
+#define THREAD_QUANTUM 0x6
+#define WAIT_QUANTUM_DECREMENT 0x1
+#define ROUND_TRIP_DECREMENT_COUNT 0x10
diff --git a/public/sdk/inc/kxalpha.h b/public/sdk/inc/kxalpha.h
new file mode 100644
index 000000000..45062df4f
--- /dev/null
+++ b/public/sdk/inc/kxalpha.h
@@ -0,0 +1,1915 @@
+/*++
+
+ Copyright (c) 1992-1996 Digital Equipment Corporation
+
+
+ Module:
+ kxalpha.h
+
+ Abstract:
+ Contains alpha architecture constants and assembly macros.
+
+ Author:
+ Joe Notarangelo 31-March-1992 (based on Dave Cutler's kxmips.h)
+
+
+ Revision History
+
+ 16-July-1992 John DeRosa
+
+ Removed fwcalpal.h hook.
+
+
+ 8-July-1992 John DeRosa
+
+ Added fwcalpal.h hooks, defined HALT call_pal.
+
+
+--*/
+
+//
+// Define Sfw Interrupt Levels and masks
+//
+
+#define APC_INTERRUPT 0x1
+#define DISPATCH_INTERRUPT 0x2
+
+//
+// Define standard integer registers.
+//
+// N.B. `at' is `AT' so it doesn't conflict with the `.set at' pseudo-op.
+//
+
+#define v0 $0 // return value register
+#define t0 $1 // caller saved (temporary) registers
+#define t1 $2 //
+#define t2 $3 //
+#define t3 $4 //
+#define t4 $5 //
+#define t5 $6 //
+#define t6 $7 //
+#define t7 $8 //
+#define s0 $9 // callee saved (nonvolatile) registers
+#define s1 $10 //
+#define s2 $11 //
+#define s3 $12 //
+#define s4 $13 //
+#define s5 $14 //
+#define fp $15 // frame pointer register, or s6
+#define a0 $16 // argument registers
+#define a1 $17 //
+#define a2 $18 //
+#define a3 $19 //
+#define a4 $20 //
+#define a5 $21 //
+#define t8 $22 // caller saved (temporary) registers
+#define t9 $23 //
+#define t10 $24 //
+#define t11 $25 //
+#define ra $26 // return address register
+#define t12 $27 // caller saved (temporary) registers
+#define AT $28 // assembler temporary register
+#define gp $29 // global pointer register
+#define sp $30 // stack pointer register
+#define zero $31 // zero register
+
+#ifndef PALCODE
+
+//
+// Define standard floating point registers.
+//
+
+#define f0 $f0 // return value register
+#define f1 $f1 // return value register
+#define f2 $f2 // callee saved (nonvolatile) registers
+#define f3 $f3 //
+#define f4 $f4 //
+#define f5 $f5 //
+#define f6 $f6 //
+#define f7 $f7 //
+#define f8 $f8 //
+#define f9 $f9 //
+#define f10 $f10 // caller saved (temporary) registers
+#define f11 $f11 //
+#define f12 $f12 //
+#define f13 $f13 //
+#define f14 $f14 //
+#define f15 $f15 //
+#define f16 $f16 // argument registers
+#define f17 $f17 //
+#define f18 $f18 //
+#define f19 $f19 //
+#define f20 $f20 //
+#define f21 $f21 //
+#define f22 $f22 // caller saved (temporary) registers
+#define f23 $f23 //
+#define f24 $f24 //
+#define f25 $f25 //
+#define f26 $f26 //
+#define f27 $f27 //
+#define f28 $f28 //
+#define f29 $f29 //
+#define f30 $f30 //
+#define f31 $f31 // floating zero register
+#define fzero $f31 // floating zero register (alias)
+
+#endif //!PALCODE
+
+
+//
+// Define procedure entry macros
+//
+
+#define ALTERNATE_ENTRY(Name) \
+ .globl Name; \
+Name:;
+
+#define LEAF_ENTRY(Name) \
+ .text; \
+ .align 4; \
+ .globl Name; \
+ .ent Name, 0; \
+Name:; \
+ .frame sp, 0, ra; \
+ .prologue 0;
+
+#define NESTED_ENTRY(Name, fsize, retrg) \
+ .text; \
+ .align 4; \
+ .globl Name; \
+ .ent Name, 0; \
+Name:; \
+ .frame sp, fsize, retrg;
+
+//
+// Define global definition macros.
+//
+
+#define END_REGION(Name) \
+ .globl Name; \
+Name:;
+
+#define START_REGION(Name) \
+ .globl Name; \
+Name:;
+
+//
+// Define exception handling macros.
+//
+
+#define EXCEPTION_HANDLER(Handler) \
+ .edata 1, Handler;
+
+
+#define PROLOGUE_END .prologue 1;
+
+//
+// Define save and restore floating state macros.
+//
+
+#define SAVE_NONVOLATILE_FLOAT_STATE \
+ bsr ra, KiSaveNonVolatileFloatState
+
+//
+// Define interfaces to pcr and palcode
+//
+// The interfaces defined in the following macros will be PALcode
+// calls for some implemenations, but may be in-line code in others
+// (eg. uniprocessor vs multiprocessor). At the current time all of
+// the interfaces are PALcode calls.
+//
+
+//
+// Define interfaces for cache coherency
+//
+
+//++
+//
+// IMB
+//
+// Macro Description:
+//
+// Issue the architecture-defined Instruction Memory Barrier. This
+// instruction will make the processor instruction stream coherent with
+// the system memory.
+//
+// Mode:
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define IMB call_pal imb
+
+//
+// Define PALcode Environment Transition Interfaces
+//
+
+//++
+//
+// REBOOT
+//
+// Macro Description:
+//
+// Reboot the processor to return to firmware.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// Does not return.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define REBOOT call_pal reboot
+
+//++
+//
+// RESTART
+//
+// Macro Description:
+//
+// Restart the processor with the processor state found in a
+// restart block.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies a pointer to an ARC restart block with an Alpha AXP
+// saved state area.
+//
+// Return Value:
+//
+// If successful the call does not return. Otherwise, any return
+// is considered a failure.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define RESTART call_pal restart
+
+//++
+//
+// SWPPAL
+//
+// Macro Description:
+//
+// Swap the execution environment to a new PALcode image.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the physical address of the base of the new PALcode
+// image.
+//
+// a1 - a5 - Supply arguments to the new PALcode environment.
+//
+// Return Value:
+//
+// Does not return.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define SWPPAL call_pal swppal
+
+//
+// Define IRQL and interrupt interfaces
+//
+
+//++
+//
+// DISABLE_INTERRUPTS
+//
+// Macro Description:
+//
+// Disable all interrupts for the current processor and return the
+// previous PSR.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define DISABLE_INTERRUPTS call_pal di
+
+//++
+//
+// ENABLE_INTERRUPTS
+//
+// Macro Description:
+//
+// Enable interrupts according to the current PSR for the current
+// processor.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define ENABLE_INTERRUPTS call_pal ei
+
+//++
+//
+// SWAP_IRQL
+//
+// Macro Description:
+//
+// Swap the IRQL level for the current processor.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the new IRQL level.
+//
+// Return Value:
+//
+// v0 = previous IRQL level.
+//
+// Registers Used:
+//
+// AT, a1 - a3.
+//
+//--
+
+#define SWAP_IRQL call_pal swpirql
+
+//++
+//
+// GET_CURRENT_IRQL
+//
+// Macro Description:
+//
+// Return the current processor Interrupt Request Level (IRQL).
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// v0 = current IRQL.
+//
+// Registers Used:
+//
+// AT.
+//
+//--
+
+#define GET_CURRENT_IRQL call_pal rdirql
+
+
+//
+// Define interfaces for software interrupts
+//
+
+//++
+//
+// DEASSERT_SOFTWARE_INTERRUPT
+//
+// Macro Description:
+//
+// Deassert the software interrupts indicated in a0 for the current
+// processor.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the mask for the software interrupt to be de-asserted.
+// a0<1> - Deassert DISPATCH software interrupt.
+// a0<0> - Deassert APC software interrupt.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// AT, a1 - a3.
+//
+//--
+
+#define DEASSERT_SOFTWARE_INTERRUPT call_pal csir
+
+//++
+//
+// REQUEST_SOFTWARE_INTERRUPT
+//
+// Macro Description:
+//
+// Request software interrupts on the current processor according to
+// the mask supplied in a0.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the mask of software interrupts to be requested.
+// a0<1> - Request DISPATCH software interrupt.
+// a0<0> - Request APC software interrupt.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// AT, a1 - a3.
+//
+//--
+
+#define REQUEST_SOFTWARE_INTERRUPT call_pal ssir
+
+//
+// Define interfaces to Processor Status Register
+//
+
+//++
+//
+// GET_CURRENT_PROCESSOR_STATUS_REGISTER
+//
+// Macro Description:
+//
+// Return the current Processor Status Register (PSR) for the current
+// processor.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// v0 = current PSR.
+//
+// Registers Used:
+//
+// AT.
+//
+//--
+
+#define GET_CURRENT_PROCESSOR_STATUS_REGISTER call_pal rdpsr
+
+
+//
+// Define current thread interface
+//
+
+//++
+//
+// GET_THREAD_ENVIRONMENT_BLOCK
+//
+// Macro Description:
+//
+// Return the base address of the current Thread Environment Block (TEB),
+// for the currently executing thread on the current processor.
+//
+// Mode;
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// v0 = TEB base address.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define GET_THREAD_ENVIRONMENT_BLOCK call_pal rdteb
+
+//++
+//
+// GET_CURRENT_THREAD
+//
+// Macro Description:
+//
+// Return the thread object address for the currently executing thread
+// on the current processor.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// v0 = PCR base address.
+//
+// Registers Used:
+//
+// AT.
+//
+//--
+
+#ifdef NT_UP
+
+//
+// If uni-processor, retrieve current thread address from the global
+// variable KiCurrentThread.
+//
+
+#define GET_CURRENT_THREAD \
+ lda v0, KiCurrentThread; \
+ ldl v0, 0(v0)
+
+#else
+
+//
+// If multi-processor, retrive per-processor current thread via a call pal.
+//
+
+#define GET_CURRENT_THREAD call_pal rdthread
+
+#endif //NT_UP
+
+//
+// Define per-processor data area routine interfaces
+//
+
+//++
+//
+// GET_PROCESSOR_CONTROL_REGION_BASE
+//
+// Macro Description:
+//
+// Return the base address of the Process Control Region (PCR)
+// for the current processor.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// v0 = PCR base address.
+//
+// Registers Used:
+//
+// AT.
+//
+//--
+
+#ifdef NT_UP
+
+//
+// Uni-processor, address of PCR is in global variable.
+//
+
+#define GET_PROCESSOR_CONTROL_REGION_BASE \
+ lda v0, KiPcrBaseAddress; \
+ ldl v0, 0(v0)
+
+#else
+
+//
+// Multi-processor, get per-processor value via call pal.
+//
+
+#define GET_PROCESSOR_CONTROL_REGION_BASE call_pal rdpcr
+
+#endif //NT_UP
+
+//++
+//
+// GET_PROCESSOR_CONTROL_BLOCK_BASE
+//
+// Macro Description:
+//
+// Return the Processor Control Block base address.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// v0 = PRCB base address.
+//
+// Registers Used:
+//
+// AT.
+//
+//--
+
+#define GET_PROCESSOR_CONTROL_BLOCK_BASE \
+ GET_PROCESSOR_CONTROL_REGION_BASE; \
+ ldl v0, PcPrcb(v0)
+
+
+//
+// Define kernel stack interfaces
+//
+
+//++
+//
+// GET_INITIAL_KERNEL_STACK
+//
+// Macro Description:
+//
+// Return the initial kernel stack address for the current thread.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// v0 = initial kernel stack address.
+//
+// Registers Used:
+//
+// AT.
+//
+//--
+
+#define GET_INITIAL_KERNEL_STACK call_pal rdksp
+
+//++
+//
+// SET_INITIAL_KERNEL_STACK
+//
+// Macro Description:
+//
+// Set the initial kernel stack address for the current thread.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the new initial kernel stack address.
+//
+// Return Value:
+//
+// v0 - Previous initial kernel stack address.
+//
+// Registers Used:
+//
+// AT.
+//
+//--
+
+#define SET_INITIAL_KERNEL_STACK call_pal swpksp
+
+//
+// Define initialization routine interfaces
+//
+
+//++
+//
+// INITIALIZE_PAL
+//
+// Macro Description:
+//
+// Supply values to initialize the PALcode.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies initial PageDirectoryBase (32-bit superpage address).
+// a1 - Supplies PRCB Base Address (32-bit superpage address).
+// a2 - Supplies address of initial kernel thread object.
+// a3 - Supplies address of TEB for initial kernel thread object.
+// gp - Supplies kernel image global pointer.
+// sp - Supplies initial thread kernel stack pointer.
+//
+// Return Value:
+//
+// v0 = PAL base address in 32-bit super-page format (KSEG0).
+//
+// Registers Used:
+//
+// AT, a3.
+//
+//--
+
+#define INITIALIZE_PAL call_pal initpal
+
+//++
+//
+// WRITE_KERNEL_ENTRY_POINT
+//
+// Macro Description:
+//
+// Register the kernel entry point to receive control for a
+// class of exceptions.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the address of the kernel entry point.
+// a1 - Supplies the class of exception dispatched to this entry point.
+// 0 = bug check conditions
+// 1 = memory management faults
+// 2 = interrupts
+// 3 = system service calls
+// 4 = general exception traps
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// AT, a2-a3.
+//
+//--
+
+#define WRITE_KERNEL_ENTRY_POINT call_pal wrentry
+
+//
+// Define entry point values for the wrentry callpal function
+//
+
+#define entryBugCheck 0
+#define entryMM 1
+#define entryInterrupt 2
+#define entrySyscall 3
+#define entryGeneral 4
+
+//++
+//
+// CACHE_PCR_VALUES
+//
+// Macro Description:
+//
+// Notify the PALcode that the PCR has been initialized by the
+// kernel and the HAL and that the PALcode may now read values
+// from the PCR and cache them inside the processor.
+//
+// N.B. - the PCR pointer must have already been established in
+// initpal
+//
+// N.B. - This interface is a processor-specific implementation
+// and cannot be assumed to be present on all processors.
+// Currently implemented for the following processors:
+//
+// DECchip 21064
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// AT, a0 - a3.
+//
+//--
+
+#define CACHE_PCR_VALUES call_pal initpcr
+
+//
+// Define transition interfaces
+//
+
+//++
+//
+// RETURN_FROM_TRAP_OR_INTERRUPT
+//
+// Macro Description:
+//
+// Return to execution thread after processing a trap or
+// interrupt. Traps can be general exceptions (breakpoint,
+// arithmetic traps, etc.) or memory management faults.
+// This macro is also used to startup a thread of execution
+// for the first time.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the previous processor status register.
+// a1 - Supplies new software interrupt requests.
+// a1<1> - Request a DISPATCH Interrupt.
+// a1<0> - Request an APC Interrupt.
+//
+// Return Value:
+//
+// Does not return.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define RETURN_FROM_TRAP_OR_INTERRUPT call_pal rfe
+
+//++
+//
+// RETURN_FROM_SYSTEM_CALL
+//
+// Macro Description:
+//
+// Return from a system service call.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the previous processor status register.
+// a1 - Supplies new software interrupt requests.
+// a1<1> - Request a DISPATCH Interrupt.
+// a1<0> - Request an APC Interrupt.
+//
+// Return Value:
+//
+// Does not return.
+//
+// Registers Used:
+//
+// All volatile registers.
+//
+//--
+
+#define RETURN_FROM_SYSTEM_CALL call_pal retsys
+
+//++
+//
+// SYSCALL
+//
+// Macro Description:
+//
+// Call a system service.
+//
+// Mode:
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// v0 - Supplies the system service number.
+// [other arguments as per calling standard]
+//
+// Return Value:
+//
+// Will not return directly, returns via retsys, no return value.
+//
+// Registers Used:
+//
+// All volatile registers.
+//
+//--
+
+#define SYSCALL call_pal callsys
+
+//
+// Define breakpoint interfaces
+//
+
+//++
+//
+// BREAK
+//
+// Macro Description:
+//
+// Issue a user breakpoint which may be handled by a user-mode
+// debugger.
+//
+// Mode:
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// Will not return directly, returns via rti, no return value.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define BREAK call_pal bpt
+
+//++
+//
+// BREAK_DEBUG_STOP
+//
+// Macro Description:
+//
+// Issue a stop breakpoint to the kernel debugger.
+//
+// Mode:
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// Will not return directly, returns via rti, no return value.
+//
+// Registers Used:
+//
+// AT, v0.
+//
+//--
+
+#define BREAK_DEBUG_STOP \
+ ldil v0, DEBUG_STOP_BREAKPOINT; \
+ call_pal callkd
+
+//++
+//++
+//
+// BREAK_BREAKIN
+//
+// Macro Description:
+//
+// Issue a breakin breakpoint to the kernel debugger.
+//
+// Mode:
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// Will not return directly, returns via rti, no return value.
+//
+// Registers Used:
+//
+// AT, v0.
+//
+//--
+
+#define BREAK_BREAKIN \
+ ldil v0, BREAKIN_BREAKPOINT; \
+ call_pal callkd
+
+//++
+//
+// BREAK_DEBUG_LOAD_SYMBOLS
+//
+// Macro Description:
+//
+// Issue a load symbols breakpoint to the kernel debugger.
+//
+// Mode:
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// Will not return directly, returns via rti, no return value.
+//
+// Registers Used:
+//
+// AT, v0.
+//
+//--
+
+#define BREAK_DEBUG_LOAD_SYMBOLS \
+ ldil v0, DEBUG_LOAD_SYMBOLS_BREAKPOINT; \
+ call_pal callkd
+
+//++
+//
+// BREAK_DEBUG_UNLOAD_SYMBOLS
+//
+// Macro Description:
+//
+// Issue a unload symbols breakpoint to the kernel debugger.
+//
+// Mode:
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// Will not return directly, returns via rti, no return value.
+//
+// Registers Used:
+//
+// AT, v0.
+//
+//--
+
+#define BREAK_DEBUG_UNLOAD_SYMBOLS \
+ ldil v0, DEBUG_UNLOAD_SYMBOLS_BREAKPOINT; \
+ call_pal callkd
+
+//++
+//
+// BREAK_DEBUG_PRINT
+//
+// Macro Description:
+//
+// Cause a debug print breakpoint which will be interpreted by
+// the kernel debugger and will print a string to the kernel debugger
+// port.
+//
+// Mode:
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// a0 - Supplies the address of ASCII string to print.
+// a1 - Supplies the length of the string to print.
+//
+// Return Value:
+//
+// Does not return directly, returns via rti, no return value.
+//
+// Registers Used:
+//
+// AT, v0.
+//
+//--
+
+
+#define BREAK_DEBUG_PRINT \
+ ldil v0, DEBUG_PRINT_BREAKPOINT; \
+ call_pal callkd
+
+//++
+//
+// BREAK_DEBUG_PROMPT
+//
+// Macro Description:
+//
+// Cause a debug print breakpoint which will be interpreted by
+// the kernel debugger and will receive a string from the kernel debugger
+// port after prompting for input.
+//
+// Mode:
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// a0 - Supplies the address of ASCII string to print.
+// a1 - Supplies the length of the string to print.
+// a2 - Supplies the address of the buffer to receive the input string.
+// a3 - Supplies the maximum length of the input string.
+//
+// Return Value:
+//
+// Does not return directly, returns via rti, no return value.
+//
+// Registers Used:
+//
+// AT, v0.
+//
+//--
+
+
+#define BREAK_DEBUG_PROMPT \
+ ldil v0, DEBUG_PROMPT_BREAKPOINT; \
+ call_pal callkd
+
+//
+// Define tb manipulation interfaces
+//
+
+//++
+//
+// TB_INVALIDATE_ALL
+//
+// Macro Description:
+//
+// Invalidate all cached virtual address translations for the current
+// processor that are not fixed.
+// Some translations may be fixed in hardware and/or software and
+// these are not invalidated (eg. super-pages).
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// a0 - a3.
+//
+//--
+
+
+#define TB_INVALIDATE_ALL call_pal tbia
+
+//++
+//
+// TB_INVALIDATE_SINGLE
+//
+// Macro Description:
+//
+// Invalidate any cached virtual address translations for a single
+// virtual address.
+//
+// Note - it is legal for an implementation to invalidate more
+// translations that the single one specified.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the Virtual Address of the translation to invalidate.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// a1 - a3.
+//
+//--
+
+#define TB_INVALIDATE_SINGLE call_pal tbis
+
+//++
+//
+// TB_INVALIDATE_MULTIPLE
+//
+// Macro Description:
+//
+// Invalidate any cached virtual address translations for the specified
+// set of virtual addresses.
+//
+// Note - it is legal for an implementation to invalidate more
+// translations than those specified.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies a pointer to the list of Virtual Addresses of the
+// translations to invalidate.
+// a1 - Supplies the count of Virtual Addresses in the list
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// a2.
+//
+//--
+
+#define TB_INVALIDATE_MULTIPLE call_pal tbim
+
+//++
+//
+// TB_INVALIDATE_SINGLE_ASN
+//
+// Macro Description:
+//
+// Invalidate any cached virtual address translations for a single
+// virtual address for the specified address space number.
+//
+// Note - it is legal for an implementation to invalidate more
+// translations that the single one specified.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the Virtual Address of the translation to invalidate.
+//
+// a1 - Supplies the Address Space Number of the translation to be
+// invalidated.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// a1 - a3.
+//
+//--
+
+#define TB_INVALIDATE_SINGLE_ASN call_pal tbisasn
+
+//++
+//
+// TB_INVALIDATE_MULTIPLE_ASN
+//
+// Macro Description:
+//
+// Invalidate any cached virtual address translations for the specified
+// set of virtual addresses for the specified address space number.
+//
+// Note - it is legal for an implementation to invalidate more
+// translations than those specified.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies a pointer to the list of Virtual Addresses of the
+// translations to invalidate.
+//
+// a1 - Supplies the count of Virtual Addresses in the list
+//
+// a2 - Supplies the Address Space Number of the translation to be
+// invalidated.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// a3.
+//
+//--
+
+#define TB_INVALIDATE_MULTIPLE_ASN call_pal tbimasn
+
+//++
+//
+// DATA_TB_INVALIDATE_SINGLE
+//
+// Macro Description:
+//
+// Invalidate data stream translations for a single virtual address.
+//
+// Note - it is legal for an implementation to invalidate more
+// translations that the single one specified.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the Virtual Address of the translation to invalidate.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// a1 - a3.
+//
+//--
+
+#define DATA_TB_INVALIDATE_SINGLE call_pal dtbis
+
+//
+// Define context switch interfaces
+//
+
+//++
+//
+// SWAP_THREAD_CONTEXT
+//
+// Macro Description:
+//
+//
+// Change to a new thread context. This will mean a new kernel stack,
+// new current thread address and a new thread environment block.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the Virtual Address of new initial kernel stack.
+// a1 - Supplies the address of new thread object.
+// a2 - Supplies the address of new thread environment block.
+// a3 - Supplies the PFN of the new page directory if the process
+// is to be swapped, -1 otherwise.
+// a4 - Supplies the ASN of the new processor if the process is to
+// be swapped, undefined otherwise.
+// a5 - Supplies the ASN wrap indicator if the process is to be swapped,
+// undefined otherwise.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// AT.
+//
+//--
+
+#define SWAP_THREAD_CONTEXT call_pal swpctx
+
+//++
+//
+// SWAP_PROCESS_CONTEXT
+//
+// Macro Description:
+//
+// Change from one process address space to another.
+//
+// Mode:
+//
+// Kernel only.
+//
+// Arguments:
+//
+// a0 - Supplies the Pfn of Page Directory for new address space.
+// a1 - Supplies the Address Space Number for new address space.
+// a2 - Supplies the ASN wrap indicator (0 = no wrap, non-zero = wrap).
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// AT, a3.
+//
+//--
+
+#define SWAP_PROCESS_CONTEXT call_pal swpprocess
+
+//
+// Define interfaces for generate trap
+//
+
+//++
+//
+// GENERATE_TRAP
+//
+// Macro Description:
+//
+// Generate a trap. Code has discovered an exception condition
+// and wants to raise a trap to indicate the condition. Anticipated
+// for use by compilers for divide by zero, etc..
+//
+// Mode:
+//
+// Kernel and User.
+//
+// Arguments:
+//
+// a0 = Supplies the trap number which identifies the exception.
+//
+// Return Value:
+//
+// Does not return, generates a trap to kernel mode, no return value.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define GENERATE_TRAP call_pal gentrap
+
+//
+// Define performance and debug interfaces.
+//
+
+//++
+//
+// GET_INTERNAL_COUNTERS
+//
+// Macro Description:
+//
+// Read the internal processor event counters. The counter formats
+// and the events counted are processor implementation-dependent.
+//
+// N.B. - the counters will only be implemented for checked builds.
+//
+// Mode:
+//
+// Kernel.
+//
+// Arguments:
+//
+// a0 - Supplies the superpage 32 address of the buffer to receive
+// the counter data. The address must be quadword aligned.
+//
+// a1 - Supplies the length of the buffer allocated for the counters.
+//
+// Return Value:
+//
+// v0 - 0 is returned if the interface is not implemented.
+// If v0 <= a1 then v0 is the length of the data returned.
+// If v0 > a1 then v0 is the length of the processor implementation
+// counter record.
+//
+// Registers Used:
+//
+// AT, a2 - a3.
+//
+//--
+
+#define GET_INTERNAL_COUNTERS call_pal rdcounters
+
+//++
+//
+// GET_INTERNAL_PROCESSOR_STATE
+//
+// Macro Description:
+//
+// Read the internal processor state. The data values returned and
+// their format are processor implementation-dependent.
+//
+// Mode:
+//
+// Kernel.
+//
+// Arguments:
+//
+// a0 - Supplies the superpage 32 address of the buffer to receive
+// the processor state data. The address must be quadword aligned.
+//
+// a1 - Supplies the length of the buffer allocated for the state.
+//
+// Return Value:
+//
+// v0 - If v0 <= a1 then v0 is the length of the data returned.
+// If v0 > a1 then v0 is the length of the processor implementation
+// state record.
+//
+// Registers Used:
+//
+// AT, a2 - a3.
+//
+//--
+
+#define GET_INTERNAL_PROCESSOR_STATE call_pal rdstate
+
+//++
+//
+// WRITE_PERFORMANCE_COUNTERS
+//
+// Macro Description:
+//
+// Write the state of the internal processor performance counters.
+// The number of performance counters, the events they count, and their
+// usage is processor implementation-depedent.
+//
+// Mode:
+//
+// Kernel.
+//
+// Arguments:
+//
+// a0 - Supplies the number of the performance counter.
+//
+// a1 - Supplies a flag that indicates if the performance counter is
+// to be enabled or disabled (0 = disabled, non-zero = enabled).
+//
+// a2 - a5 - Supply processor implementation-dependent parameters.
+//
+// Return Value:
+//
+// v0 - 0 is returned if the operation is unsuccessful or the performance
+// counter does not exist. Otherwise, a non-zero value is returned.
+//
+// Registers Used:
+//
+// AT, a2 - a5.
+//
+//--
+
+#define WRITE_PERFORMANCE_COUNTERS call_pal wrperfmon
+
+
+//
+// Define interfaces for controlling the state of machine checks.
+//
+
+//++
+//
+// DRAIN_ABORTS
+//
+// Macro Description:
+//
+// Stall processor execution until all previous instructions have
+// executed to the point that any exceptions they may raise have been
+// signalled.
+//
+// Mode:
+//
+// Kernel.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// None.
+//
+//--
+
+#define DRAIN_ABORTS call_pal draina
+
+
+//++
+//
+// GET_MACHINE_CHECK_ERROR_SUMMARY
+//
+// Macro Description:
+//
+// Read the processor machine check error summary register.
+//
+// Mode:
+//
+// Kernel.
+//
+// Arguments:
+//
+// None.
+//
+// Return Value:
+//
+// v0 - The value of the MCES register.
+//
+// Registers Used:
+//
+// AT.
+//
+//--
+
+#define GET_MACHINE_CHECK_ERROR_SUMMARY call_pal rdmces
+
+
+//++
+//
+// WRITE_MACHINE_CHECK_ERROR_SUMMARY
+//
+// Macro Description:
+//
+// Write new values to the machine check error summary register.
+//
+// Mode:
+//
+// Kernel.
+//
+// Arguments:
+//
+// a0 - Supplies the values to write to the MCES register.
+//
+// Return Value:
+//
+// v0 - Previous value of the MCES register.
+//
+// Registers Used:
+//
+// AT, a1 - a3.
+//
+//--
+
+#define WRITE_MACHINE_CHECK_ERROR_SUMMARY call_pal wrmces
+
+
+//++
+//
+// LoadByte(
+// Register Value,
+// Offset(Register) Base
+// )
+//
+// Macro Description:
+//
+// Loades the byte at the base address defined by the
+// offset + register expression Base into the register Value
+//
+// Arguments:
+//
+// Value - Supplies the string name of the destination register
+//
+// Base - Supplies the base address (as an offset(register) string) of
+// the source of the byte.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// AT
+//
+//--
+
+#define LoadByte( Value, Base ) \
+ .set noat; \
+ lda AT, Base; \
+ ldq_u Value, Base; \
+ extbl Value, AT, Value; \
+ .set at;
+
+
+//++
+//
+// StoreByte(
+// Register Value,
+// Offset(Register) Base
+// )
+//
+// Macro Description:
+//
+// Store the low byte of the register Value at the base address
+// defined by the offset + register expression Base.
+//
+// N.B. - This macro preserves longword granularity of accesses.
+//
+// Arguments:
+//
+// Value - Supplies the string name of the register containing the store
+// data.
+//
+// Base - Supplies the base address (as an offset(register) string) of
+// the destination of the store.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// AT, t12.
+//
+//--
+
+#define StoreByte( Value, Base ) \
+ .set noat; \
+ lda AT, Base; \
+ ldq_u t12, (AT); \
+ mskbl t12, AT, t12; \
+ insbl Value, AT, AT; \
+ bis t12, AT, t12; \
+ lda AT, Base; \
+ bic AT, 3, AT; \
+ extll t12, AT, t12; \
+ stl t12, 0(AT); \
+ .set at;
+
+
+//++
+//
+// ZeroByte(
+// Offset(Register) Base
+// )
+//
+// Macro Description:
+//
+// Zeroes the byte at the address defined by the offset + register
+// expression Base.
+//
+// N.B. - This macro preserves longword granularity of accesses.
+//
+// Arguments:
+//
+// Base - Supplies the base address (as an offset(register) string) of
+// the destination of the store.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// AT, t12.
+//
+//--
+
+#define ZeroByte( Base ) \
+ .set noat; \
+ lda AT, Base; \
+ ldq_u t12, (AT); \
+ mskbl t12, AT, t12; \
+ bic AT, 3, AT; \
+ extll t12, AT, t12; \
+ stl t12, (AT); \
+ .set at;
+
+
+//++
+//
+// StoreWord(
+// Register Value,
+// Offset(Register) Base
+// )
+//
+// Macro Description:
+//
+// Store the word of the register Value at the word aligned base address
+// defined by the offset + register expression Base.
+//
+// N.B. - This macro preserves longword granularity of accesses.
+//
+// N.B. - The destination must be word-aligned.
+//
+// Arguments:
+//
+// Value - Supplies the string name of the register containing the store
+// data.
+//
+// Base - Supplies the base address (as an offset(register) string) of
+// the destination of the store.
+//
+// Return Value:
+//
+// None.
+//
+// Registers Used:
+//
+// AT, t12.
+//
+//--
+
+#define StoreWord( Value, Base ) \
+ .set noat; \
+ lda AT, Base; \
+ ldq_u t12, (AT); \
+ mskwl t12, AT, t12; \
+ inswl Value, AT, AT; \
+ bis t12, AT, t12; \
+ lda AT, Base; \
+ bic AT, 3, AT; \
+ extll t12, AT, t12; \
+ stl t12, 0(AT); \
+ .set at;
+
+//
+// Define subtitle macro
+//
+
+#define SBTTL(x)
+
+//
+// Define mnemonic for writing callpal in assembly language that will
+// fit in the opcode field.
+//
+
+#define callpal call_pal
+
+//
+// Define exception data section and align.
+//
+// Nearly all source files that include this header file need the following
+// few pseudo-ops and so, by default, they are placed once here rather than
+// repeated in every source file. If these pseudo-ops are not needed, then
+// define HEADER_FILE prior to including this file.
+//
+// Also the PALCODE environment uses this include file but cannot use
+// these definitions.
+//
+
+#if !defined(HEADER_FILE) && !defined(PALCODE)
+
+ .edata 0
+ .align 2
+ .text
+
+#endif
+
+
diff --git a/public/sdk/inc/kxmips.h b/public/sdk/inc/kxmips.h
new file mode 100644
index 000000000..352d9be07
--- /dev/null
+++ b/public/sdk/inc/kxmips.h
@@ -0,0 +1,517 @@
+/*++ BUILD Version: 0003 // Increment this if a change has global effects
+*/
+//*++
+//
+// Copyright (c) 1990-1996 Microsoft Corporation
+//
+// Module Name:
+//
+// kxmips.h
+//
+// Abstract:
+//
+// This module contains the nongenerated part of the MIPS assembler
+// header file. In general, it contains processor architecture constant
+// information, however some assembler macros are also included.
+//
+// Author:
+//
+// David N. Cutler (davec) 23-Mar-1990
+//
+// Revision History:
+//
+//--*/
+
+//
+// Define soft reset vector address for nonhandled cache parity errors.
+//
+
+#define SOFT_RESET_VECTOR 0xbfc00300 // default parity error routine address
+
+//
+// Define low memory transfer vector address and TB index address (temporary).
+//
+
+#define TRANSFER_VECTOR (KSEG1_BASE + 0x400) // exception handler address
+
+//
+// Define standard integer registers.
+//
+
+#define zero $0 // read zero, writes ignored
+#define AT $1 // assembler temporary
+#define v0 $2 // return value
+#define v1 $3 //
+#define a0 $4 // argument registers
+#define a1 $5 //
+#define a2 $6 //
+#define a3 $7 //
+#define t0 $8 // caller saved registers
+#define t1 $9 //
+#define t2 $10 //
+#define t3 $11 //
+#define t4 $12 //
+#define t5 $13 //
+#define t6 $14 //
+#define t7 $15 //
+#define s0 $16 // callee saved registers
+#define s1 $17 //
+#define s2 $18 //
+#define s3 $19 //
+#define s4 $20 //
+#define s5 $21 //
+#define s6 $22 //
+#define s7 $23 //
+#define t8 $24 // caller saved registers
+#define t9 $25 //
+#define k0 $26 // kernel reserved registers
+#define k1 $27 //
+#define gp $28 // global pointer
+#define sp $29 // stack pointer
+#define s8 $30 // callee saved register
+#define ra $31 // return address register
+
+//
+// Define standard floating point registers.
+//
+
+#define f0 $f0 // caller saved registers
+#define f1 $f1 //
+#define f2 $f2 //
+#define f3 $f3 //
+#define f4 $f4 //
+#define f5 $f5 //
+#define f6 $f6 //
+#define f7 $f7 //
+#define f8 $f8 //
+#define f9 $f9 //
+#define f10 $f10 //
+#define f11 $f11 //
+#define f12 $f12 //
+#define f13 $f13 //
+#define f14 $f14 //
+#define f15 $f15 //
+#define f16 $f16 //
+#define f17 $f17 //
+#define f18 $f18 //
+#define f19 $f19 //
+#define f20 $f20 // callee saved registers
+#define f21 $f21 //
+#define f22 $f22 //
+#define f23 $f23 //
+#define f24 $f24 //
+#define f25 $f25 //
+#define f26 $f26 //
+#define f27 $f27 //
+#define f28 $f28 //
+#define f29 $f29 //
+#define f30 $f30 //
+#define f31 $f31 //
+
+//
+// Define R4000/R10000 system coprocessor registers.
+//
+
+#define index $0 // TB index register
+#define random $1 // TB random register
+#define entrylo0 $2 // TB entry low 0 register
+#define entrylo1 $3 // TB entry low 1 register
+#define context $4 // TB context register
+#define pagemask $5 // Page mask register
+#define wired $6 // Wired TB entries register
+#define badvaddr $8 // TB bad virtual address register
+#define count $9 // Timer count register
+#define entryhi $10 // TB entry high register
+#define compare $11 // Timer compare register
+#define psr $12 // Processor status register
+#define cause $13 // Exception cause register
+#define epc $14 // Exception PC register
+#define prid $15 // Processor id register
+#define config $16 // Configuration register
+#define lladdr $17 // Load linked address register
+#define watchlo $18 // Watch low address register
+#define watchhi $19 // Watch high address register
+#define xcontext $20 // extended context register
+#define framemask $21 // Frame mask register
+#define ecc $26 // S-cache ECC and primary parity register
+#define cacheerr $27 // Cache error and status register
+#define taglo $28 // Cache tag low register
+#define taghi $29 // Cache tag high register
+#define errorepc $30 // Error exception PC register
+
+//
+// Define R4000 system coprocessor register bit field offsets.
+//
+
+#define INDEX_INDEX 0x0 // TLB specified index <5:0>
+#define INDEX_PROBE 0x1f // TLB probe failure <31>
+
+#define RANDOM_INDEX 0x0 // TLB random index <5:0>
+
+#define ENTRYLO_G 0x0 // Global <0>
+#define ENTRYLO_V 0x1 // Valid <1>
+#define ENTRYLO_D 0x2 // Dirty <2>
+#define ENTRYLO_C 0x3 // Cache control <5:3>
+#define ENTRYLO_PFN 0x6 // Page Frame <29:6>
+
+#define PAGEMASK_PAGEMASK 0xd // Page mask <24:13>
+
+#define WIRED_NUMBER 0x0 // Wired entries <5:0>
+
+#define ENTRYHI_PID 0x0 // Process id <7:0>
+#define ENTRYHI_VPN2 0xd // Virtual page <31:13>
+
+#define PID_MASK 0xfff // allow for ample expansion
+
+#define PSR_IE 0x0 // Interrupt enable <0>
+#define PSR_EXL 0x1 // Exception level <1>
+#define PSR_ERL 0x2 // Error level <2>
+#define PSR_KSU 0x3 // Kernel/supervisor/user <4:3>
+#define PSR_PMODE (PSR_KSU + 1) // Previous mode bit <4>
+#define PSR_UX 0x5 // User extended <5>
+#define PSR_SX 0x6 // Supervior extended <6>
+#define PSR_KX 0x7 // Kernel extended <7>
+#define PSR_INTMASK 0x8 // Interrupt mask <15:8>
+#define PSR_DE 0x10 // Disable cache parity and ECC <16>
+#define PSR_CE 0x11 // Check enable <17>
+#define PSR_CH 0x12 // Cache hit <18>
+#define PSR_SR 0x14 // Soft reset <20>
+#define PSR_TS 0x15 // TLB shutdown <21>
+#define PSR_BEV 0x16 // Bootstrap exception vector <22>
+#define PSR_CU0 0x1c // Coprocessor 0 enabled <28>
+#define PSR_CU1 0x1d // Coprocessor 1 enabled <29>
+#define PSR_CU2 0x1e // Coprocessor 2 enabled <30>
+#define PSR_CU3 0x1f // Coprocessor 3 enabled <31>
+
+#define CONFIG_K0 0x0 // Kseg0 cache algorithm <2:0>
+#define CONFIG_CU 0x3 // Update on store conditional <3>
+#define CONFIG_DB 0x4 // Data cache block size <4>
+#define CONFIG_IB 0x5 // Instruction cache block size <5>
+#define CONFIG_DC 0x6 // Data cache size <8:6>
+#define CONFIG_IC 0x9 // Instruction cache size <11:9>
+#define CONFIG_EB 0xd // Block ordering <13>
+#define CONFIG_EM 0xe // ECC mode enable <14>
+#define CONFIG_BE 0xf // Big endian memory <15>
+#define CONFIG_SM 0x10 // Use dirty shared state <16>
+#define CONFIG_SC 0x11 // Secondary cache present <17>
+#define CONFIG_EW 0x12 // System address port width <19:18>
+#define CONFIG_SW 0x14 // Secondary cache port width <20>
+#define CONFIG_SS 0x15 // Split secondary cache mode <21>
+#define CONFIG_SB 0x16 // Secondary cache block size <23:22>
+#define CONFIG_EP 0x18 // Pattern for write back data <27:24>
+#define CONFIG_EC 0x1c // System address port clock ratio <30:28>
+#define CONFIG_CM 0x1f // Master checker mode <31>
+
+#define ECC_ECC 0x0 // Secondary cache ECC <7:0>
+
+#define CACHEERR_PIDX 0x0 // Primary cache index <2:0>
+#define CACHEERR_SIDX 0x3 // Secondary cache index <21:3>
+#define CACHEERR_EI 0x18 // ECC error on pimary store miss <24>
+#define CACHEERR_EB 0x19 // Data error on instrruction error <25>
+#define CACHEERR_EE 0x1a // Error on system address bus <26>
+#define CACHEERR_ES 0x1b // Error accessing processor state <27>
+#define CACHEERR_ET 0x1c // Error on tag field <28>
+#define CACHEERR_ED 0x1d // Error on data field <29>
+#define CACHEERR_EC 0x1e // Cache level of error <30>
+#define CACHEERR_ER 0x1f // Type of reference <31>
+
+#define TAGLO_P 0x0 // primary tag even parity <0>
+#define TAGLO_PSTATE 0x6 // primary cache state <7:6>
+#define TAGLO_PTAGLO 0x8 // primary tag low physical address <31:8>
+
+//
+// Define R4000 cause register bit offsets.
+//
+
+#define CAUSE_XCODE 0x2 // Exception code <6:2>
+#define CAUSE_INTPEND 0x8 // Interrupt pending <15:8>
+#define CAUSE_CE 0x1c // Coprocessor unusable <29:28>
+#define CAUSE_BD 0x1f // Branch delay slot <31>
+
+//
+// Define R4000 processor id register field offsets.
+//
+
+#define PRID_REV 0x0 // Revision level <7:0>
+#define PRID_IMP 0x8 // Implementation type <15:8>
+
+//
+// Define R4000 exception codes.
+//
+
+#define XCODE_INTERRUPT 0x0 // Interrupt
+#define XCODE_MODIFY 0x4 // TLB modify
+#define XCODE_READ_MISS 0x8 // TLB read miss
+#define XCODE_WRITE_MISS 0xc // TLB write miss
+#define XCODE_READ_ADDRESS_ERROR 0x10 // Read alignment error
+#define XCODE_WRITE_ADDRESS_ERROR 0x14 // Write alignment error
+#define XCODE_INSTRUCTION_BUS_ERROR 0x18 // Instruction bus error
+#define XCODE_DATA_BUS_ERROR 0x1c // Data bus error
+#define XCODE_SYSTEM_CALL 0x20 // System call
+#define XCODE_BREAKPOINT 0x24 // Breakpoint
+#define XCODE_ILLEGAL_INSTRUCTION 0x28 // Illegal instruction
+#define XCODE_COPROCESSOR_UNUSABLE 0x2c // Coprocessor unusable
+#define XCODE_INTEGER_OVERFLOW 0x30 // Arithmetic overflow
+#define XCODE_TRAP 0x34 // Trap instruction
+#define XCODE_VIRTUAL_INSTRUCTION 0x38 // Virtual instruction coherency
+#define XCODE_FLOATING_EXCEPTION 0x3c // Floating point exception
+#define XCODE_WATCHPOINT 0x5c // Watch point
+#define XCODE_INVALID_USER_ADDRESS 0x70 // Invalid user address (64-bit)
+#define XCODE_PANIC 0x78 // Stack overflow (software)
+#define XCODE_VIRTUAL_DATA 0x7c // Virtual data coherency
+
+#define R4000_XCODE_MASK (0x1f << CAUSE_XCODE) // R4000 exception code mask
+
+#define R4000_MISS_MASK (R4000_XCODE_MASK & \
+ (~(XCODE_READ_MISS ^ XCODE_WRITE_MISS))) //
+
+//
+// Define R4000 page mask values.
+//
+
+#define PAGEMASK_4KB 0x0 // 4kb page
+#define PAGEMASK_16KB 0x3 // 16kb page
+#define PAGEMASK_64KB 0xf // 64kb page
+#define PAGEMASK_256KB 0x3f // 256kb page
+#define PAGEMASK_1MB 0xff // 1mb page
+#define PAGEMASK_4MB 0x3ff // 4mb page
+#define PAGEMASK_16MB 0xfff // 16mb page
+
+//
+// Define R4000 primary cache states.
+//
+
+#define PRIMARY_CACHE_INVALID 0x0 // primary cache invalid
+#define PRIMARY_CACHE_SHARED 0x1 // primary cache shared (clean or dirty)
+#define PRIMARY_CACHE_CLEAN_EXCLUSIVE 0x2 // primary cache clean exclusive
+#define PRIMARY_CACHE_DIRTY_EXCLUSIVE 0x3 // primary cache dirty exclusive
+
+//
+// Define R4000 cache instruction operation codes.
+//
+
+#define INDEX_INVALIDATE_I 0x0 // invalidate primary instruction cache
+#define INDEX_WRITEBACK_INVALIDATE_D 0x1 // writeback/invalidate primary data cache
+#define INDEX_INVALIDATE_SI 0x2 // invalidate secondary instruction cache
+#define INDEX_WRITEBACK_INVALIDATE_SD 0x3 // writeback/invalidate secondary data cache
+
+#define INDEX_LOAD_TAG_I 0x4 // load primary instruction tag indexed
+#define INDEX_LOAD_TAG_D 0x5 // load primary data tag indexed
+#define INDEX_LOAD_TAG_SI 0x6 // load secondary instruction tag indexed
+#define INDEX_LOAD_TAG_SD 0x7 // load secondary data tag indexed
+
+#define INDEX_STORE_TAG_I 0x8 // store primary instruction tag indexed
+#define INDEX_STORE_TAG_D 0x9 // store primary data tag indexed
+#define INDEX_STORE_TAG_SI 0xa // store secondary instruction tag indexed
+#define INDEX_STORE_TAG_SD 0xb // store secondary data tag indexed
+
+#define CREATE_DIRTY_EXCLUSIVE_D 0xd // create dirty exclusive primary data cache
+#define CREATE_DIRTY_EXCLUSIVE_SD 0xf // create dirty exclusive secondary data cache
+
+#define HIT_INVALIDATE_I 0x10 // invalidate primary instruction cache
+#define HIT_INVALIDATE_D 0x11 // invalidate primary data cache
+#define HIT_INVALIDATE_SI 0x12 // invalidate secondary instruction cache
+#define HIT_INVALIDATE_SD 0x13 // invalidate secondary data cache
+
+#define HIT_WRITEBACK_INVALIDATE_D 0x15 // writeback/invalidate primary data cache
+#define HIT_WRITEBACK_INVALIDATE_SD 0x17 // writeback/invalidate secondary data cache
+
+#define HIT_WRITEBACK_D 0x19 // writeback primary data cache
+#define HIT_WRITEBACK_SD 0x1b // writeback secondary data cache
+
+#define HIT_SET_VIRTUAL_SI 0x1e // hit set virtual secondary instruction cache
+#define HIT_SET_VIRTUAL_SD 0x1f // hit set virtual secondary data cache
+
+//
+// Define enable and disable interrupt macros.
+//
+
+#define DISABLE_INTERRUPTS(reg) \
+ .set noreorder; \
+ .set noat; \
+ li AT,1 << PSR_CU1; \
+ mfc0 reg,psr; \
+ mtc0 AT,psr; \
+ nop; \
+ nop; \
+ nop; \
+ .set at; \
+ .set reorder;
+
+#define ENABLE_INTERRUPTS(reg) \
+ .set noreorder; \
+ .set noat; \
+ mtc0 reg,psr; \
+ nop; \
+ nop; \
+ .set at; \
+ .set reorder;
+
+//
+// Define floating coprocessor registers
+//
+
+#define fsrid $0 // floating identification register
+#define fsr $31 // floating status register
+
+//
+// Define floating status register bit offsets.
+//
+
+#define FSR_RM 0x0
+#define FSR_SI 0x2
+#define FSR_SU 0x3
+#define FSR_SO 0x4
+#define FSR_SZ 0x5
+#define FSR_SV 0x6
+#define FSR_EI 0x7
+#define FSR_EU 0x8
+#define FSR_EO 0x9
+#define FSR_EZ 0xa
+#define FSR_EV 0xb
+#define FSR_XI 0xc
+#define FSR_XU 0xd
+#define FSR_XO 0xe
+#define FSR_XZ 0xf
+#define FSR_XV 0x10
+#define FSR_XE 0x11
+#define FSR_CC 0x17
+#define FSR_FS 0x18
+
+//
+// Define save and restore floating state macros.
+//
+
+#define RESTORE_VOLATILE_FLOAT_STATE \
+ .set noreorder; \
+ jal KiRestoreVolatileFloatState; \
+ ldc1 f0,TrFltF0(s8); \
+ .set reorder;
+
+#define SAVE_VOLATILE_FLOAT_STATE \
+ .set noreorder; \
+ jal KiSaveVolatileFloatState; \
+ sdc1 f0,TrFltF0(s8); \
+ .set reorder;
+
+#define RESTORE_NONVOLATILE_FLOAT_STATE \
+ .set noreorder; \
+ jal KiRestoreNonvolatileFloatState; \
+ ldc1 f20,ExFltF20(sp); \
+ .set reorder;
+
+#define SAVE_NONVOLATILE_FLOAT_STATE \
+ .set noreorder; \
+ jal KiSaveNonvolatileFloatState; \
+ sdc1 f20,ExFltF20(sp); \
+ .set reorder;
+
+//
+// Define TB and cache parameters.
+//
+
+#define PCR_ENTRY 0 // TB entry numbers (2) for the PCR
+#define PDR_ENTRY 2 // TB entry number (1) for the PDR
+#define LARGE_ENTRY 3 // TB entry number (1) for large entry
+#define DMA_ENTRY 4 // TB entry number (1) for DMA/InterruptSource
+
+#define TB_ENTRY_SIZE (3 * 4) // size of TB entry
+#define FIXED_BASE 0 // base index of fixed TB entries
+#define FIXED_ENTRIES (DMA_ENTRY + 1) // number of fixed TB entries
+
+//
+// Define cache parameters
+//
+
+#define DCACHE_SIZE 4 * 1024 // size of data cache in bytes
+#define ICACHE_SIZE 4 * 1024 // size of instruction cache in bytes
+#define MINIMUM_CACHE_SIZE 4 * 1024 // minimum size of cache
+#define MAXIMUM_CACHE_SIZE 128 * 1024 // maximum size fo cache
+
+//
+// Define subtitle macro
+//
+
+#define SBTTL(x)
+
+//
+// Define global definition macros.
+//
+
+#define END_REGION(Name) \
+ .globl Name; \
+Name:;
+
+#define START_REGION(Name) \
+ .globl Name; \
+Name:;
+
+//
+// Define procedure entry macros
+//
+
+#define ALTERNATE_ENTRY(Name) \
+ .globl Name; \
+Name:;
+
+#define LEAF_ENTRY(Name) \
+ .text; \
+ .globl Name; \
+ .ent Name, 0; \
+Name:; \
+ .frame sp, 0, ra; \
+ .prologue 0;
+
+#define NESTED_ENTRY(Name, fsize, retrg) \
+ .text; \
+ .globl Name; \
+ .ent Name, 0; \
+Name:; \
+ .frame sp, fsize, retrg;
+
+#define ALTERNATE_ENTRY_S(Name) \
+ .globl Name; \
+Name:;
+
+#define SYSTEM_ENTRY(Name) \
+ .text; \
+ .globl Name; \
+ .ent Name, 0; \
+Name:; \
+ .frame sp, 0, ra; \
+ .prologue 0;
+
+#define LEAF_ENTRY_S(Name, Section) \
+ .text Section; \
+ .globl Name; \
+ .ent Name, 0; \
+Name:; \
+ .frame sp, 0, ra; \
+ .prologue 0;
+
+#define NESTED_ENTRY_S(Name, fsize, retrg, Section) \
+ .text Section; \
+ .globl Name; \
+ .ent Name, 0; \
+Name:; \
+ .frame sp, fsize, retrg;
+
+//
+// Define exception handling macros.
+//
+
+#define EXCEPTION_HANDLER(Handler) \
+ .edata 1, Handler;
+
+#define PROLOGUE_END .prologue 1;
+
+//
+// Define exception data section and align.
+//
+
+#ifndef HEADER_FILE
+
+ .edata 0
+ .text
+
+#endif
diff --git a/public/sdk/inc/kxppc.h b/public/sdk/inc/kxppc.h
new file mode 100644
index 000000000..af2252c71
--- /dev/null
+++ b/public/sdk/inc/kxppc.h
@@ -0,0 +1,1733 @@
+//++ BUILD Version: 0003 // Increment this if a change has global effects //
+//*++
+//
+// Copyright (c) 1990-1996 IBM Corporation
+//
+// Module Name:
+//
+// kxppc.h
+//
+// Abstract:
+//
+// This module contains the nongenerated part of the PPC assembler
+// header file. In general, it contains processor architecture constant
+// information, however some assembler macros are also included.
+//
+// Author:
+//
+// Chuck Bauman (chuck2) 03-Aug-1993
+//
+// Revision History:
+//
+// Base on kxmips.h, NT product1 source (R3000 paths removed)
+// Add procedure entry exit macros (Chuck Bauman) 10-Aug-1993
+// Fixed # comments so C modules compile (Chuck Bauman) 13-Aug-1993
+// Add exception entry codes and STK_SLACK_SPACE (Peter Johnston) 19-Aug-1993
+// Optimizations for NESTED ENTRY/EXIT (Chuck Bauman) 27-Aug-1993
+// New entry point linkage convention (Chuck Bauman) 01-Sep-1993
+// Added SPECIAL ENTRY/EXIT (Curt Fawcett) 22-Sep-1993
+// Deleted EXCEPTION_HANDLER and changed NESTED_ENTRY_EX
+// and LEAF_ENTRY_EX to not append .scope to the Scope
+// parameter (Tom Wood) 02-Nov-1993
+// Added definition for SPR #1, Fixed Point Exception
+// register XER (Mark D. Johnson) 11-Mar-1994
+// Added in the macros that used to be in /private/ntos/
+// crt32/h/ppcsects.h. I then removed that file since
+// we don't need it anymore. (Matt Holle) 27-Apr-1994
+//
+//--*/
+
+#ifndef _KXPPC_
+#define _KXPPC_
+
+#ifndef _KXPPC_C_HEADER_
+
+// =====================================================================
+// Begin code extracted from ppcsects.h
+// =====================================================================
+
+//Purpose:
+// This file defines sections for the C and C++ libs.
+//
+// NOTE: As needed, special "CRT" sections can be added into the existing
+// init/term tables. These will be for our use only -- users who put
+// stuff in here do so at their own risk.
+//
+//Revision History:
+// 03-19-92 SKS Loosely based on the 16-bit include file DEFSEGS.INC
+// 08-06-92 SKS Changed these section names from X[ICPT]$[ACLUXZ] to
+// .CRT$X[ICPT][ACLUXZ] to avoid creating too many sections
+// Also, sections are no longer defined in groups. That was
+// for use with OMF type objects where order of appearance
+// is important. With COFF, sorting is done by section name.
+// 10-26-93 CDB Based on MS defsects.inc
+//
+// beginSection - a macro for declaring and beginning a section
+//
+// endSection - a macro for ending a previously declared section
+//
+// *****
+
+#define beginSection(SectName) \
+.section .CRT$##SectName, "drw2"
+
+#define endSection(SectName)
+
+// XIA Begin C Initializer Sections
+// XIC Microsoft Reserved
+// XIU User
+// XIZ End C Initializer Sections
+//
+// XCA Begin C++ Constructor Sections
+// XCC Compiler (MS)
+// XCL Library
+// XCU User
+// XCZ End C++ Constructor Sections
+//
+// XPA Begin C Pre-Terminator Sections
+// XPU User
+// XPX Microsoft Reserved
+// XPZ End C Pre-Terminator Sections
+//
+// XTA Begin C Pre-Terminator Sections
+// XTU User
+// XTX Microsoft Reserved
+// XTZ End C Pre-Terminator Sections
+
+// =====================================================================
+// End code extracted from ppcsects.h
+// =====================================================================
+
+#endif // _KXPPC_C_HEADER_
+
+//
+// Define soft reset vector address for nonhandled cache parity errors.
+//
+
+#define SOFT_RESET_VECTOR 0xbfc00300 // default parity error routine address
+
+//
+// Define low memory transfer vector address and TB index address (temporary).
+//
+#define TRANSFER_VECTOR (KSEG1_BASE + 0x400) // exception handler address
+
+//
+// Maximum Bit number (32 bit implementation)
+//
+#define MAX_BITS 0x1f
+
+//
+// Macro to generate a mask using the SPR bit definitions below
+//
+#define MASK_SPR(shift,mask) ((mask) << (MAX_BITS-(shift)))
+
+//
+// Define Machine State Register bit field offsets.
+//
+// MSR_POW 0x0d Power management enable <13>
+// MSR_IMPL 0x0e Implementation dependent <14>
+// MSR_ILE 0x0f Interrupt Little-Endian mode <15>
+// MSR_EE 0x10 External interrupt Enable <16>
+// MSR_PR 0x11 Problem state <17>
+// MSR_FP 0x12 Floating Point available <18>
+// MSR_ME 0x13 Machine check Enable <19>
+// MSR_FE0 0x14 Floating point Exception mode 0 <20>
+// MSR_SE 0x15 Single-step trace Enable <21>
+// MSR_BE 0x16 Branch trace Enable <22>
+// MSR_FE1 0x17 Floating point Exception mode 1 <23>
+// MSR_IP 0x19 Interrupt Prefix <25>
+// MSR_IR 0x1a Instruction Relocate <26>
+// MSR_DR 0x1b Data Relocate <27>
+// MSR_PM 0x1d Performance Monitor <29>
+// MSR_RI 0x1e Recoverable Interrupt <30>
+// MSR_LE 0x1f Little-Endian execution mode <31>
+
+#define MSR_POW 0x0d
+#define MSR_IMPL 0x0e
+#define MSR_ILE 0x0f
+#define MSR_EE 0x10
+#define MSR_PR 0x11
+#define MSR_FP 0x12
+#define MSR_ME 0x13
+#define MSR_FE0 0x14
+#define MSR_SE 0x15
+#define MSR_BE 0x16
+#define MSR_FE1 0x17
+#define MSR_IP 0x19
+#define MSR_IR 0x1a
+#define MSR_DR 0x1b
+#define MSR_PM 0x1d
+#define MSR_RI 0x1e
+#define MSR_LE 0x1f
+
+
+//
+// Define Processor Version Register (PVR) bit fields
+//
+// PVR_Version 0x0 Processor Version <0:15>
+// PVR_Revision 0x10 Processor Revision <16:31>
+#define PVR_Version 0x0
+#define PVR_Revision 0x10
+
+//
+// Fixed Point Exception Register is Special Purpose Reg no. 1
+//
+
+#define XER 0x1
+
+//
+// Define Fixed Point Exception Register (XER) bit fields
+//
+
+// XER_SO 0x0 Summary Overflow <0>
+// XER_OV 0x1 Overflow <1>
+// XER_CA 0x2 Carry <2>
+// XER_COMP 0x10 > Carry <16:23>
+// XER_COUNT 0x19 Carry <25:31>
+
+#define XER_SO 0x0
+#define XER_OV 0x1
+#define XER_CA 0x2
+#define XER_COMP 0x10
+#define XER_COUNT 0x19
+
+
+//
+// Define Floating Point Status/Control Register (FPSCR) bit fields
+//
+// FPSCR_FX 0x0 Exception summary <0>
+// FPSCR_FEX 0x1 Enabled Exception summary <1>
+// FPSCR_VX 0x2 Invalid operation exception summary <2>
+// FPSCR_OX 0x3 Overflow exception <3>
+// FPSCR_UX 0x4 Underflow exception <4>
+// FPSCR_ZX 0x5 Zero divide exception <5>
+// FPSCR_XX 0x6 Inexact exception <6>
+// FPSCR_VXSNAN 0x7 Invalid op exception (signalling NaN) <7>
+// FPSCR_VXISI 0x8 Invalid op exception (infinity - infinity) <8>
+// FPSCR_VXIDI 0x9 Invalid op exception (infinity / infinity) <9>
+// FPSCR_VXZDZ 0x0a Invalid op exception (0 / 0) <10>
+// FPSCR_VXIMZ 0x0b Invalid op exception (infinity * 0) <11>
+// FPSCR_VXVC 0x0c Invalid op exception (compare) <12>
+// FPSCR_FR 0x0d Fraction Rounded <13>
+// FPSCR_FI 0x0e Fraction Inexact <14>
+// FPSCR_C 0x0f Result Class descriptor <15>
+// FPSCR_FL 0x10 Result Less than or negative <16>
+// FPSCR_FG 0x11 Result Greater than or positive <17>
+// FPSCR_FE 0x12 Result Equal or zero <18>
+// FPSCR_FU 0x13 Result Unordered or NaN <19>
+// FPSCR_Res1 0x14 reserved <20>
+// FPSCR_VXSOFT 0x15 Invalid op exception (software request) <21>
+// FPSCR_VXSQRT 0x16 Invalid op exception (square root) <22>
+// FPSCR_VXCVI 0x17 Invalid op exception (integer convert) <23>
+// FPSCR_VE 0x18 Invalid operation exception Enable <24>
+// FPSCR_OE 0x19 Overflow exception Enable <25>
+// FPSCR_UE 0x1a Underflow exception Enable <26>
+// FPSCR_ZE 0x1b Zero divide exception Enable <27>
+// FPSCR_XE 0x1c Inexact exception Enable <28>
+// FPSCR_NI 0x1d Non-IEEE mode <29>
+// FPSCR_RN 0x1e Rounding control <30:31>
+#define FPSCR_FX 0x0
+#define FPSCR_FEX 0x1
+#define FPSCR_VX 0x2
+#define FPSCR_OX 0x3
+#define FPSCR_UX 0x4
+#define FPSCR_ZX 0x5
+#define FPSCR_XX 0x6
+#define FPSCR_VXSNAN 0x7
+#define FPSCR_VXISI 0x8
+#define FPSCR_VXIDI 0x9
+#define FPSCR_VXZDZ 0x0a
+#define FPSCR_VXIMZ 0x0b
+#define FPSCR_VXVC 0x0c
+#define FPSCR_FR 0x0d
+#define FPSCR_FI 0x0e
+#define FPSCR_C 0x0f
+#define FPSCR_FL 0x10
+#define FPSCR_FG 0x11
+#define FPSCR_FE 0x12
+#define FPSCR_FU 0x13
+#define FPSCR_Res1 0x14
+#define FPSCR_VXSOFT 0x15
+#define FPSCR_VXSQRT 0x16
+#define FPSCR_VXCVI 0x17
+#define FPSCR_VE 0x18
+#define FPSCR_OE 0x19
+#define FPSCR_UE 0x1a
+#define FPSCR_ZE 0x1b
+#define FPSCR_XE 0x1c
+#define FPSCR_NI 0x1d
+#define FPSCR_RN 0x1e
+
+
+//
+// Define exception codes.
+//
+
+#define XCODE_INTERRUPT 0x0 // Interrupt
+#define XCODE_MODIFY 0x4 // TLB modify
+#define XCODE_READ_MISS 0x8 // TLB read miss
+#define XCODE_WRITE_MISS 0xc // TLB write miss
+#define XCODE_READ_ADDRESS_ERROR 0x10 // Read alignment error
+#define XCODE_WRITE_ADDRESS_ERROR 0x14 // Write alignment error
+#define XCODE_INSTRUCTION_BUS_ERROR 0x18 // Instruction bus error
+#define XCODE_DATA_BUS_ERROR 0x1c // Data bus error
+#define XCODE_SYSTEM_CALL 0x20 // System call
+#define XCODE_BREAKPOINT 0x24 // Breakpoint
+#define XCODE_ILLEGAL_INSTRUCTION 0x28 // Illegal instruction
+#define XCODE_COPROCESSOR_UNUSABLE 0x2c // Coprocessor unusable
+#define XCODE_INTEGER_OVERFLOW 0x30 // Arithmetic overflow
+
+#define XCODE_TRAP 0x34 // Trap instruction
+#define XCODE_VIRTUAL_INSTRUCTION 0x38 // Virtual instruction coherency
+#define XCODE_FLOATING_EXCEPTION 0x3c // Floating point exception
+#define XCODE_WATCHPOINT 0x5c // Watch point
+#define XCODE_PANIC 0x78 // Stack overflow (software)
+#define XCODE_VIRTUAL_DATA 0x7c // Virtual data coherency
+
+#define R4000_XCODE_MASK (0x1f << CAUSE_XCODE) // R4000 exception code mask
+
+#define R4000_MISS_MASK (R4000_XCODE_MASK & \
+ (~(XCODE_READ_MISS ^ XCODE_WRITE_MISS))) //
+
+//
+// Define page mask values.
+//
+
+#define PAGEMASK_4KB 0x0 // 4kb page
+#define PAGEMASK_16KB 0x3 // 16kb page
+#define PAGEMASK_64KB 0xf // 64kb page
+#define PAGEMASK_256KB 0x3f // 256kb page
+#define PAGEMASK_1MB 0xff // 1mb page
+#define PAGEMASK_4MB 0x3ff // 4mb page
+#define PAGEMASK_16MB 0xfff // 16mb page
+
+//
+// Define primary cache states.
+//
+
+#define PRIMARY_CACHE_INVALID 0x0 // primary cache invalid
+#define PRIMARY_CACHE_SHARED 0x1 // primary cache shared (clean or dirty)
+#define PRIMARY_CACHE_CLEAN_EXCLUSIVE 0x2 // primary cache clean exclusive
+#define PRIMARY_CACHE_DIRTY_EXCLUSIVE 0x3 // primary cache dirty exclusive
+
+//
+// Define cache instruction operation codes.
+//
+
+#define INDEX_INVALIDATE_I 0x0 // invalidate primary instruction cache
+#define INDEX_WRITEBACK_INVALIDATE_D 0x1 // writeback/invalidate primary data cache
+#define INDEX_INVALIDATE_SI 0x2 // invalidate secondary instruction cache
+#define INDEX_WRITEBACK_INVALIDATE_SD 0x3 // writeback/invalidate secondary data cache
+
+#define INDEX_LOAD_TAG_I 0x4 // load primary instruction tag indexed
+#define INDEX_LOAD_TAG_D 0x5 // load primary data tag indexed
+#define INDEX_LOAD_TAG_SI 0x6 // load secondary instruction tag indexed
+#define INDEX_LOAD_TAG_SD 0x7 // load secondary data tag indexed
+
+#define INDEX_STORE_TAG_I 0x8 // store primary instruction tag indexed
+#define INDEX_STORE_TAG_D 0x9 // store primary data tag indexed
+#define INDEX_STORE_TAG_SI 0xa // store secondary instruction tag indexed
+#define INDEX_STORE_TAG_SD 0xb // store secondary data tag indexed
+
+#define CREATE_DIRTY_EXCLUSIVE_D 0xd // create dirty exclusive primary data cache
+#define CREATE_DIRTY_EXCLUSIVE_SD 0xf // create dirty exclusive secondary data cache
+
+#define HIT_INVALIDATE_I 0x10 // invalidate primary instruction cache
+#define HIT_INVALIDATE_D 0x11 // invalidate primary data cache
+#define HIT_INVALIDATE_SI 0x12 // invalidate secondary instruction cache
+#define HIT_INVALIDATE_SD 0x13 // invalidate secondary data cache
+
+#define HIT_WRITEBACK_INVALIDATE_D 0x15 // writeback/invalidate primary data cache
+#define HIT_WRITEBACK_INVALIDATE_SD 0x17 // writeback/invalidate secondary data cache
+
+#define HIT_WRITEBACK_D 0x19 // writeback primary data cache
+#define HIT_WRITEBACK_SD 0x1b // writeback secondary data cache
+
+#define HIT_SET_VIRTUAL_SI 0x1e // hit set virtual secondary instruction cache
+#define HIT_SET_VIRTUAL_SD 0x1f // hit set virtual secondary data cache
+
+#ifndef _KXPPC_C_HEADER_
+
+//
+// Define save and restore floating state macros.
+//
+
+#define RESTORE_VOLATILE_FLOAT_STATE(_tf) \
+ lfd f.13, TrFpscr(_tf); \
+ lfd f.0, TrFpr0(_tf); \
+ lfd f.1, TrFpr1(_tf); \
+ lfd f.2, TrFpr2(_tf); \
+ lfd f.3, TrFpr3(_tf); \
+ lfd f.4, TrFpr4(_tf); \
+ lfd f.5, TrFpr5(_tf); \
+ lfd f.6, TrFpr6(_tf); \
+ lfd f.7, TrFpr7(_tf); \
+ lfd f.8, TrFpr8(_tf); \
+ mtfsf 0xff, f.13; \
+ lfd f.9, TrFpr9(_tf); \
+ lfd f.10, TrFpr10(_tf); \
+ lfd f.11, TrFpr11(_tf); \
+ lfd f.12, TrFpr12(_tf); \
+ lfd f.13, TrFpr13(_tf);
+
+#define SAVE_VOLATILE_FLOAT_STATE(_tf) \
+ stfd f.0, TrFpr0(_tf); \
+ stfd f.1, TrFpr1(_tf); \
+ stfd f.2, TrFpr2(_tf); \
+ stfd f.3, TrFpr3(_tf); \
+ stfd f.4, TrFpr4(_tf); \
+ stfd f.5, TrFpr5(_tf); \
+ mffs f.0; \
+ stfd f.6, TrFpr6(_tf); \
+ stfd f.7, TrFpr7(_tf); \
+ stfd f.8, TrFpr8(_tf); \
+ stfd f.9, TrFpr9(_tf); \
+ stfd f.10, TrFpr10(_tf); \
+ stfd f.11, TrFpr11(_tf); \
+ stfd f.12, TrFpr12(_tf); \
+ stfd f.13, TrFpr13(_tf); \
+ stfd f.0, TrFpscr(_tf);
+
+//#define RESTORE_NONVOLATILE_FLOAT_STATE
+// ldc1 f20,ExFltF20(sp);
+// jal KiRestoreNonvolatileFloatState;
+
+//#define SAVE_NONVOLATILE_FLOAT_STATE
+// sdc1 f20,ExFltF20(sp);
+// jal KiSaveNonvolatileFloatState;
+
+#endif // _KXPPC_C_HEADER_
+
+//
+// Define TB and cache parameters.
+//
+
+#define PCR_ENTRY 0 // TB entry numbers (2) for the PCR
+#define PDR_ENTRY 2 // TB entry number (1) for the PDR
+#define KSTACK_ENTRY 3 // TB entry numbers (1) for kernel stack
+#define DMA_ENTRY 4 // TB entry number (1) for DMA/InterruptSource
+
+#define TB_ENTRY_SIZE (3 * 4) // size of TB entry
+#define FIXED_BASE 0 // base index of fixed TB entries
+#define FIXED_ENTRIES (DMA_ENTRY + 1) // number of fixed TB entries
+
+//
+// Define cache parameters
+//
+
+#define DCACHE_SIZE (4 * 1024) // size of data cache in bytes
+#define ICACHE_SIZE (4 * 1024) // size of instruction cache in bytes
+#define MINIMUM_CACHE_SIZE (4 * 1024) // minimum size of cache
+#define MAXIMUM_CACHE_SIZE (128 * 1024) // maximum size fo cache
+
+#ifndef _KXPPC_C_HEADER_
+
+//
+// Define subtitle macro
+//
+
+#define SBTTL(x)
+
+//
+// Define global definition macros.
+//
+
+//
+// Define load immediate macro for 32-bit values.
+//
+// reg - Register to load with the 32-bit immediate
+// immediate - 32-bit immediate value
+//
+#define LWI(reg,immediate) \
+ lis reg,(immediate) >> 16 ;\
+ ori reg,reg,(immediate) & 0xffff
+
+#define END_REGION(Name) \
+ .globl Name ;\
+Name:
+
+#define START_REGION(Name) \
+ .globl Name ;\
+Name:
+
+//
+// Define trap frame generation macro.
+//
+
+//#define GENERATE_TRAP_FRAME
+// .set noat;
+// sw AT,TrIntAt(s8);
+// jal KiGenerateTrapFrame;
+// .set at;
+
+//
+// Define restore volatile integer state macro.
+//
+
+//#define RESTORE_VOLATILE_INTEGER_STATE
+// .set noat;
+// lw AT,TrIntAt(s8);
+// jal KiRestoreVolatileIntegerState;
+// .set at;
+
+//
+// Define save volatile integer state macro.
+//
+
+//#define SAVE_VOLATILE_INTEGER_STATE
+// .set noat;
+// sw AT,TrIntAt(s8);
+// jal KiSaveVolatileIntegerState;
+// .set at;
+
+//
+// Define macros used by procedure entry/exit macros
+//
+
+//
+// Set register 12 to the GPR save location based on the number
+// of floating point registers to be saved.
+//
+#define __setFramemr(Fpr) \
+ mr r.12,r.sp
+
+#define __setFramesubi(Fpr) \
+ subi r.12,r.sp,8*Fpr
+
+//
+// Save the number of GPRs specified inline or by setting r.12 to the GPR
+// save location and branching to the appropriate millicode save procedure.
+//
+// Changed bla to bl in __savegpr4-__savegrp19 IBMCDB
+#define __savegpr0(op,Fpr)
+#define __savegpr1(op,Fpr) \
+ stw r.31,-(4+(8*Fpr))(r.sp)
+#define __savegpr2(op,Fpr) \
+ stw r.31,-(4+(8*Fpr))(r.sp) ;\
+ stw r.30,-(8+(8*Fpr))(r.sp)
+#define __savegpr3(op,Fpr) \
+ stw r.31,-(4+(8*Fpr))(r.sp) ;\
+ stw r.30,-(8+(8*Fpr))(r.sp) ;\
+ stw r.29,-(12+(8*Fpr))(r.sp)
+#define __savegpr4(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_28
+#define __savegpr5(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_27
+#define __savegpr6(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_26
+#define __savegpr7(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_25
+#define __savegpr8(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_24
+#define __savegpr9(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_23
+#define __savegpr10(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_22
+#define __savegpr11(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_21
+#define __savegpr12(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_20
+#define __savegpr13(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_19
+
+
+#define __savegpr14(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_18
+#define __savegpr15(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_17
+#define __savegpr16(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_16
+#define __savegpr17(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_15
+#define __savegpr18(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_14
+#define __savegpr19(op,Fpr) \
+ __setFrame##op(Fpr) ;\
+ bl .._savegpr_13
+//
+// Macros for removing the stack frame established through NESTED ENTRY.
+//
+#define __unsetFramemov(Fsize,Fpr) \
+ addi r.12,r.sp,Fsize ; \
+ mtlr r.0 ; \
+ mr r.sp,r.12
+
+#define __unsetFrameaddi(Fsize,Fpr) \
+ addi r.12,r.sp,(Fsize)-(8*Fpr)
+
+#define __unsetFrameblr(Fsize,Fpr) \
+ mtlr r.0 ; \
+ addi r.sp,r.sp,Fsize ; \
+ blr
+
+// Change __unsetFrameba to __unsetFrameb IBMCDB
+#define __unsetFrameb(Fsize,Fpr) \
+ addi r.sp,r.sp,Fsize ; \
+ blr
+
+// Change __unsetFramebla to __unsetFramebl IBMCDB
+#define __unsetFramebl(Fsize,Fpr)
+
+#define __unsetFramenop(Fsize,Fpr)
+
+// Change __setLRba to __setLRb IBMCDB
+#define __setLRb(Fsize,Fpr) \
+ mtlr r.0
+
+// Change __setLRbla to __setLRbl IBMCDB
+#define __setLRbl(Fsize,Fpr)
+
+
+//
+// Restore number of GPRs specified
+// setr - determines how to remove the stack frame (mov or addi)
+// mov - will cause __unsetFramemov to be used
+// addi - will cause __unsetFrameaddi to be used
+// opret - if set to blr will cause GPR restore to return to caller
+// only used for 0 GPRs and 0 FPRs
+// op - specifies instruction to be used for the call to the
+// restore millicode (ba, bla) - Changed to (b, bl) IBMCDB
+// Fsize - stack frame size
+// Fpr - number of FPRs to be restored
+//
+#define __restgpr0(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##opret(Fsize,Fpr)
+#define __restgpr1(setr,opret,op,Fsize,Fpr) \
+ __setLR##op(Fsize,Fpr) ;\
+ lwz r.31,((Fsize)-(4+(8*Fpr)))(r.sp) ;\
+ __unsetFrame##op(Fsize,Fpr)
+#define __restgpr2(setr,opret,op,Fsize,Fpr) \
+ lwz r.31,((Fsize)-(4+(8*Fpr)))(r.sp) ;\
+ __setLR##op(Fsize,Fpr) ;\
+ lwz r.30,((Fsize)-(8+(8*Fpr)))(r.sp) ;\
+ __unsetFrame##op(Fsize,Fpr)
+#define __restgpr3(setr,opret,op,Fsize,Fpr) \
+ lwz r.31,((Fsize)-(4+(8*Fpr)))(r.sp) ;\
+ __setLR##op(Fsize,Fpr) ;\
+ lwz r.30,((Fsize)-(8+(8*Fpr)))(r.sp) ;\
+ lwz r.29,((Fsize)-(12+(8*Fpr)))(r.sp) ;\
+ __unsetFrame##op(Fsize,Fpr)
+#define __restgpr4(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_28
+#define __restgpr5(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_27
+#define __restgpr6(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_26
+#define __restgpr7(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_25
+#define __restgpr8(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_24
+#define __restgpr9(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_23
+#define __restgpr10(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_22
+#define __restgpr11(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_21
+#define __restgpr12(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_20
+#define __restgpr13(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_19
+
+
+#define __restgpr14(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_18
+#define __restgpr15(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_17
+#define __restgpr16(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_16
+#define __restgpr17(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_15
+#define __restgpr18(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_14
+#define __restgpr19(setr,opret,op,Fsize,Fpr) \
+ __unsetFrame##setr(Fsize,Fpr) ;\
+ op .._restgpr_13
+
+//
+// Set r.12 to GPR save location based on number of FPRs to save.
+//
+#define __setGPRFrm0(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(mr,0) ;\
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __setGPRFrm1(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,1)
+#define __setGPRFrm2(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,2)
+#define __setGPRFrm3(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,3)
+#define __setGPRFrm4(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,4)
+#define __setGPRFrm5(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,5)
+#define __setGPRFrm6(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,6)
+#define __setGPRFrm7(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,7)
+#define __setGPRFrm8(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,8)
+#define __setGPRFrm9(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,9)
+#define __setGPRFrm10(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,10)
+#define __setGPRFrm11(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,11)
+#define __setGPRFrm12(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,12)
+#define __setGPRFrm13(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,13)
+
+
+#define __setGPRFrm14(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,14)
+#define __setGPRFrm15(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,15)
+#define __setGPRFrm16(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,16)
+#define __setGPRFrm17(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,17)
+#define __setGPRFrm18(Fsize,Gpr,Fpr) \
+ __savegpr##Gpr(subi,18)
+
+//
+// Generate epilogue code for NESTED EXIT based on number of GPRs and FPRs
+// to be restored.
+// Fsize - stack frame size
+// Gpr - number of GPRs to restore
+// Fpr - number of FPRs to restore
+//
+// Changed 3rd argument to __restgpr##Gpr in __unsetGPRFrm1 from ba to b IBMCDB
+// Changed 3rd argument to __restgpr##Gpr in __unsetGPRFrm2-18 from bla to bl IBMCDB
+#define __unsetGPRFrm0(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(mov,blr,b,Fsize,Fpr)
+#define __unsetGPRFrm1(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ mtlr r.0 ;\
+ lfd f.31,((Fsize)-8)(r.sp) ;\
+ addi r.sp,r.sp,Fsize ;\
+ blr
+#define __unsetGPRFrm2(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ lfd f.31,((Fsize)-8)(r.sp) ;\
+ mtlr r.0 ;\
+ lfd f.30,((Fsize)-16)(r.sp) ;\
+ addi r.sp,r.sp,Fsize ;\
+ blr
+#define __unsetGPRFrm3(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ lfd f.31,((Fsize)-8)(r.sp) ;\
+ mtlr r.0 ;\
+ lfd f.30,((Fsize)-16)(r.sp) ;\
+ lfd f.29,((Fsize)-24)(r.sp) ;\
+ addi r.sp,r.sp,Fsize ;\
+ blr
+#define __unsetGPRFrm4(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm5(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm6(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+
+
+#define __unsetGPRFrm7(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm8(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm9(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm10(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm11(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm12(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm13(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm14(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm15(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm16(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm17(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+#define __unsetGPRFrm18(Fsize,Gpr,Fpr) \
+ __restgpr##Gpr(addi,nop,bl,Fsize,Fpr) ;\
+ addi r.sp,r.sp,Fsize ;\
+ mtlr r.0 ;\
+ __restfpr##Fpr
+
+
+//
+// Save the number of FPRs specified inline or by branching to the appropriate
+// millicode procedure.
+//
+// Change bla to bl in __savefrp4-18 IBMCDB
+#define __savefpr0(Fsize,Gpr,Fpr)
+#define __savefpr1(Fsize,Gpr,Fpr) \
+ stfd f.31,-8(r.sp) ;\
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr2(Fsize,Gpr,Fpr) \
+ stfd f.31,-8(r.sp) ;\
+ stfd f.30,-16(r.sp) ;\
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr3(Fsize,Gpr,Fpr) \
+ stfd f.31,-8(r.sp) ;\
+ stfd f.30,-16(r.sp) ;\
+ stfd f.29,-24(r.sp) ;\
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr4(Fsize,Gpr,Fpr) \
+ bl .._savefpr_28 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr5(Fsize,Gpr,Fpr) \
+ bl .._savefpr_27 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr6(Fsize,Gpr,Fpr) \
+ bl .._savefpr_26 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr7(Fsize,Gpr,Fpr) \
+ bl .._savefpr_25 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr8(Fsize,Gpr,Fpr) \
+ bl .._savefpr_24 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr9(Fsize,Gpr,Fpr) \
+ bl .._savefpr_23 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr10(Fsize,Gpr,Fpr) \
+ bl .._savefpr_22 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr11(Fsize,Gpr,Fpr) \
+ bl .._savefpr_21 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr12(Fsize,Gpr,Fpr) \
+ bl .._savefpr_20 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr13(Fsize,Gpr,Fpr) \
+ bl .._savefpr_19 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr14(Fsize,Gpr,Fpr) \
+ bl .._savefpr_18 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr15(Fsize,Gpr,Fpr) \
+ bl .._savefpr_17 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr16(Fsize,Gpr,Fpr) \
+ bl .._savefpr_16 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr17(Fsize,Gpr,Fpr) \
+ bl .._savefpr_15 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+#define __savefpr18(Fsize,Gpr,Fpr) \
+ bl .._savefpr_14 ; \
+ stwu r.sp,-(Fsize)(r.sp) ;\
+ stw r.0,(Fsize)-(4*(Gpr+1)+(8 * Fpr))(r.sp)
+
+
+//
+// Restore the number of FPRs specified inline or by branching to the
+// appropriate millicode procedure.
+//
+// Changed ba to b in __restfpr4-18 IBMCDB
+#define __restfpr0
+#define __restfpr4 \
+ b .._restfpr_28
+#define __restfpr5 \
+ b .._restfpr_27
+#define __restfpr6 \
+ b .._restfpr_26
+#define __restfpr7 \
+ b .._restfpr_25
+#define __restfpr8 \
+ b .._restfpr_24
+#define __restfpr9 \
+ b .._restfpr_23
+#define __restfpr10 \
+ b .._restfpr_22
+#define __restfpr11 \
+ b .._restfpr_21
+#define __restfpr12 \
+ b .._restfpr_20
+#define __restfpr13 \
+ b .._restfpr_19
+#define __restfpr14 \
+ b .._restfpr_18
+#define __restfpr15 \
+ b .._restfpr_17
+#define __restfpr16 \
+ b .._restfpr_16
+#define __restfpr17 \
+ b .._restfpr_15
+#define __restfpr18 \
+ b .._restfpr_14
+
+#endif // _KXPPC_C_HEADER_
+
+
+//**************************************************************************/
+//
+// PPC Linkage support macros
+//
+//
+//**************************************************************************/
+// Caller's stack frame is addressed via R1, which points to
+// the stack frame header. The 6 words following where R1 points
+// comprise the header. The area PRECEEDING R1 is where FPRs are saved,
+// and the area preceeding that is where GPRs are saved.
+//
+// | |
+// +--------------------------------------+
+// | |
+// | |
+// | Saved GPRs |
+// | |
+// | |
+// | |
+// +--------------------------------------+
+// | |
+// | |
+// | Saved FPRs |
+// | |
+// | |
+// | |
+// R1 ------> +------------------+-------------------+
+// | Back chain | Glue saved reg |
+// +------------------+-------------------+
+// | Glue saved rtoc | Reserved |
+// +------------------+-------------------+
+// | Reserved | Reserved |
+// +------------------+-------------------+
+// | Parameter Wd 0 | Parameter Wd 1 |
+// +------------------+-------------------+
+// | Parameter Wd 2 | Parameter Wd 3 |
+// +------------------+-------------------+
+// | Parameter Wd 4 | Parameter Wd 5 |
+// +------------------+-------------------+
+// | Parameter Wd 6 | Parameter Wd 7 |
+// +------------------+-------------------+
+// | ... |
+//
+// Offsets to various elements of stack frame header
+
+#define STK_RSP 0
+#define STK_GSR 4
+#define STK_GSRTOC 8
+
+#define STK_HDR_SZ 24
+#define STK_P0 STK_HDR_SZ
+#define STK_P1 (STK_P0+4)
+#define STK_P2 (STK_P0+8)
+#define STK_P3 (STK_P0+12)
+#define STK_P4 (STK_P0+16)
+#define STK_P5 (STK_P0+20)
+#define STK_P6 (STK_P0+24)
+#define STK_P7 (STK_P0+28)
+#define STK_MIN_FRAME 56
+
+#ifndef _KXPPC_C_HEADER_
+
+//
+// Define procedure entry/exit macros
+//
+// Name - Name of the nested procedure entry
+// Fsize - Stack frame size
+// Gprs - Number of general purpose registers to save
+// Fprs - Number of floating point registers to save
+//
+
+//
+// For primary entry points (NESTED_ENTRY, LEAF_ENTRY), a function table
+// entry (for debugging, exception handling) is built.
+//
+// For all entry points, a function descriptor is built.
+//
+//
+// NESTED_ENTRY is used for routines that call other routines; a stack
+// frame is acquired and registers are saved.
+//
+// LEAF_ENTRY is used for routines that do not call other routines; no stack
+// frame is acquired and no registers are saved.
+//
+//
+// NESTED_ENTRY_EX and LEAF_ENTRY_EX are used when an exception or termination
+// handler is provided.
+//
+//
+// NESTED_ENTRY always saves the LR register. Fsize must account for this.
+// Fsize must be a multiple of 8 bytes.
+// Minimum stack frame size is 64 bytes.
+//
+//
+// The PROLOGUE_END macro must be coded in all routines that used NESTED_ENTRY
+// or NESTED_ENTRY_EX, because the function table entry refers to the label
+// that it generates.
+//
+// SPECIAL_ENTRY is a used for routines that function like a LEAF_ENTRY
+// but require some prologue for exception handling. An example of this
+// is a stack checking routine which must make a system call to get
+// the TEB pointer. The efficiency of a LEAF_ENTRY is needed, but also
+// parts of the NESTED_ENTRY are required for the system call.
+//
+// Just like the NESTED_ENTRY, SPECIAL_ENTRY requires the PROLOGUE_END
+// macro.
+//
+// FN_TABLE, DUMMY_ENTRY, and DUMMY_EXIT are used to construct the "prologues"
+// for low-level exception handling code. These prologues are never executed,
+// but are present to allow unwinding through the hand-written low-level
+// assembly code. See real0.s for examples.
+
+//
+// The following macros are provided for coding by assembly language programmers
+//
+
+#define NESTED_ENTRY(Name,Fsize,Gprs,Fprs) \
+ __fntabentry(Name,0,0) ;\
+ __gendescriptor(Name) ;\
+ __begintext(Name) ;\
+ mflr r.0 ;\
+ __setGPRFrm##Fprs(Fsize,Gprs,Fprs) ;\
+ __savefpr##Fprs(Fsize,Gprs,Fprs)
+
+#define NESTED_ENTRY_EX(Name,Fsize,Gprs,Fprs,LangHandler,Scope) \
+ __fntabentry(Name,LangHandler,Scope) ;\
+ __gendescriptor(Name) ;\
+ __begintext(Name) ;\
+ mflr r.0 ;\
+ __setGPRFrm##Fprs(Fsize,Gprs,Fprs) ;\
+ __savefpr##Fprs(Fsize,Gprs,Fprs)
+
+#define NESTED_ENTRY_S(Name,Fsize,Gprs,Fprs,Section) \
+ __fntabentry(Name,0,0) ;\
+ __gendescriptor(Name) ;\
+ __begintext_S(Name,Section) ;\
+ mflr r.0 ;\
+ __setGPRFrm##Fprs(Fsize,Gprs,Fprs) ;\
+ __savefpr##Fprs(Fsize,Gprs,Fprs)
+
+#define NESTED_ENTRY_EX_S(Name,Fsize,Gprs,Fprs,LangHandler,Scope,Section) \
+ __fntabentry(Name,LangHandler,Scope) ;\
+ __gendescriptor(Name) ;\
+ __begintext_S(Name,Section) ;\
+ mflr r.0 ;\
+ __setGPRFrm##Fprs(Fsize,Gprs,Fprs) ;\
+ __savefpr##Fprs(Fsize,Gprs,Fprs)
+
+#define NESTED_EXIT(Name,Fsize,Gprs,Fprs) \
+Name##.epi: \
+ lwz r.0,((Fsize)-(4*(Gprs+1)+(8*Fprs)))(r.sp) ;\
+ __unsetGPRFrm##Fprs(Fsize,Gprs,Fprs) ;\
+Name##.end:
+
+#define PROLOGUE_END(Name) \
+Name##.body:
+
+#define ALTERNATE_ENTRY(Name) \
+ __gendescriptor(Name) ;\
+ __begintext(Name)
+
+#define LEAF_ENTRY(Name) \
+ __gendescriptor(Name) ;\
+ __begintext(Name) ;\
+Name##.body:
+
+#define LEAF_ENTRY_EX(Name,LangHandler,Scope) \
+ __gendescriptor(Name) ;\
+ __begintext(Name) ;\
+Name##.body:
+
+#define SPECIAL_ENTRY(Name) \
+ __fntabentry(Name,0,0) ;\
+ __gendescriptor(Name) ;\
+ __begintext(Name)
+
+#define DUMMY_ENTRY(Name) \
+ __begintext(Name)
+
+#define ALTERNATE_ENTRY_S(Name,Section) \
+ __gendescriptor(Name) ;\
+ __begintext_S(Name,Section)
+
+#define LEAF_ENTRY_S(Name,Section) \
+ __gendescriptor(Name) ;\
+ __begintext_S(Name,Section) ;\
+Name##.body:
+
+#define LEAF_ENTRY_EX_S(Name,LangHandler,Scope,Section) \
+ __gendescriptor(Name) ;\
+ __begintext_S(Name,Section) ;\
+Name##.body:
+
+#define SPECIAL_ENTRY_S(Name,Section) \
+ __fntabentry(Name,0,0) ;\
+ __gendescriptor(Name) ;\
+ __begintext_S(Name,Section)
+
+#define DUMMY_ENTRY_S(Name,Section) \
+ __begintext_S(Name,Section)
+
+#define LEAF_EXIT(Name) \
+ blr ;\
+Name##.end:
+
+#define ALTERNATE_EXIT(Name) \
+ blr
+
+#define SPECIAL_EXIT(Name) \
+ blr ;\
+Name##.end:
+
+#define DUMMY_EXIT(Name) \
+Name##.end:
+
+#define FN_TABLE(Name,ExHandler,Data) \
+ __fntabentry(Name,ExHandler,Data)
+
+//
+// Define special section "names" for use with the NESTED/LEAF_ENTRY_S
+// macros. For the moment just define all possibilities as .text.
+//
+
+#define _TEXT$normal .text
+#define _TEXT$00 .text
+#define _TEXT$01 .text
+
+
+//
+// Internal macros, used by the above (not for programmer use)
+//
+
+#define __gendescriptor(Name) \
+ .rdata ;\
+ .align 2 ;\
+ .globl Name ;\
+Name: ;\
+ .long ..##Name, .toc
+
+#define __fntabentry(Name,ExHandler,Data) \
+ .pdata ;\
+ .align 2 ;\
+ .long ..##Name ;\
+ .long Name##.end ;\
+ .long ExHandler ;\
+ .long Data ;\
+ .long Name##.body
+
+#define __begintext(Name) \
+ .text ;\
+ .align 2 ;\
+ .globl ..##Name ;\
+..##Name:
+
+#define __begintext_S(Name,Section) \
+ .section Section ;\
+ .align 2 ;\
+ .globl ..##Name ;\
+..##Name:
+
+//
+// KIPCR(reg)
+//
+// Get address of KiPcr into reg
+//
+
+#define KIPCR(reg) li reg, 0xffffd000
+
+
+//
+// DISABLE_INTERRUPTS(p0,s0)
+//
+// Clear EXTERNAL INTERRUPT ENABLE bit in Machine State Register
+// (bit MSR:EE).
+//
+// The cror instructions in these macros work around 603e/ev errata #15
+// by forcing the mtmsr to complete before allowing any subsequent loads
+// to issue. The condition register no-op is executed in the system unit
+// on the 603. This will not dispatch until the mtmsr completes and will
+// halt further dispatch. On a 601 or 604 this instruction executes in
+// the branch unit and will run in parallel (i.e., no performance penalty
+// except for code bloat).
+//
+// Returns OLD value in p0
+// Destroys s0 (actually, s0 contains new value)
+
+#define DISABLE_INTERRUPTS(p0, s0) ; \
+ mfmsr p0 ; \
+ rlwinm s0,p0,0,~MASK_SPR(MSR_EE,1) ; \
+ mtmsr s0 ; \
+ cror 0,0,0
+
+#define ENABLE_INTERRUPTS(p0) ; \
+ mtmsr p0 ; \
+ cror 0,0,0
+
+
+//
+// RAISE_SOFTWARE_IRQL(p0, p1, s0)
+//
+// Raise Interrupt Request Level.
+// Parameters
+// p0 new irql
+// p1 pointer to byte to receive old irql
+// s0 scratch register (destroyed by this macro)
+//
+// LOWER_SOFTWARE_IRQL is done in a function rather than a macro.
+//
+// This macro should only be used to raise the IRQL if the interrupt
+// mask does NOT need to be changed.
+//
+
+#define RAISE_SOFTWARE_IRQL(p0, p1, s0) ;\
+ lbz s0, KiPcr+PcCurrentIrql(r.0) ;\
+ stb p0, KiPcr+PcCurrentIrql(r.0) ;\
+ stb s0, 0(p1)
+
+//
+// SOFTWARE_INTERRUPT(level, scratch)
+//
+// Set a flag indicating we need to process a software interrupt.
+// This flag is checked when priority is lowered below dispatch level.
+//
+// Parameters
+// level is the priority of the interrupt (either DISPATCH_LEVEL
+// or APC_LEVEL).
+// scratch is a register that will be destroyed by this macro.
+//
+// The flag is in fact a word in the PCR. There are only two levels of
+// software interrupt and we need to be able to set either one atomically.
+// To accomplish this we store into a different byte for either of the
+// interrupts. To indicate an APC_LEVEL interrupt store a non-zero value
+// at pcr->SoftwareInterrupt + 0, DISPATCH_LEVEL store at the same address
+// + 1.
+//
+
+#define SOFTWARE_INTERRUPT(level, scr) \
+ li scr, 1 ;\
+ stb scr, KiPcr+PcSoftwareInterrupt+(level)-APC_LEVEL(r.0)
+
+//
+// ACQUIRE_SPIN_LOCK(_lock, _value, _scratch, _try, _spin)
+//
+// Acquire a spin lock.
+//
+// _lock is the register that holds the address of the spin lock.
+// _value is the register that holds the value to be stored to the
+// spin lock to lock it.
+// _scratch is a scratch register.
+// _try is a label to use in the generated code.
+// _spin is the label at an out-of-line location where a
+// SPIN_ON_SPIN_LOCK invocation occurs.
+//
+
+#if !SPINDBG
+#define ACQUIRE_SPIN_LOCK(_lock, _value, _scratch, _try, _spin) \
+_try: \
+ lwarx _scratch, 0, _lock ;\
+ cmpwi _scratch, 0 ;\
+ bne- _spin ;\
+ stwcx. _value, 0, _lock ;\
+ bne- _spin ;\
+ isync
+#else
+#define ACQUIRE_SPIN_LOCK(_lock, _value, _scratch, _try, _spin) \
+ stw _lock,KiPcr+PcPcrPage2+8(0) ;\
+ li _scratch,0 ;\
+ stw _scratch,KiPcr+PcPcrPage2+16(0) ;\
+_try: \
+ lwarx _scratch, 0, _lock ;\
+ cmpwi _scratch, 0 ;\
+ bne- _spin ;\
+ stwcx. _value, 0, _lock ;\
+ bne- _spin ;\
+ isync ;\
+ stw _lock,KiPcr+PcPcrPage2+16(0) ;\
+ stw _scratch,KiPcr+PcPcrPage2+20(0)
+#endif
+
+//
+// SPIN_ON_SPIN_LOCK(_lock, _scratch, _try, _spin)
+//
+// Spin waiting for a spin lock to be released.
+//
+// _lock is the register that holds the address of the spin lock.
+// _scratch is a scratch register.
+// _try is the label on the associated ACQUIRE_SPIN_LOCK invocation.
+// _spin is a label to use in the generated code.
+//
+
+#if !SPINDBG
+#define SPIN_ON_SPIN_LOCK(_lock, _scratch, _try, _spin) \
+_spin: \
+ lwz _scratch, 0(_lock) ;\
+ cmpwi _scratch, 0 ;\
+ beq+ _try ;\
+ b _spin
+#else
+#define SPIN_ON_SPIN_LOCK(_lock, _scratch, _try, _spin) \
+_spin: \
+ stw _lock,KiPcr+PcPcrPage2+12(0) ;\
+ lwz _scratch, 0(_lock) ;\
+ cmpwi _scratch, 0 ;\
+ bne- _spin ;\
+ stw _lock,KiPcr+PcPcrPage2+24(0) ;\
+ stw _scratch,KiPcr+PcPcrPage2+12(0) ;\
+ b _try
+#endif
+
+//
+// SPIN_ON_SPIN_LOCK_ENABLED(_lock, _scratch, _try, _entry, _spin, _enable, _disable)
+//
+// Spin with interrupts enabled waiting for a spin lock to be released.
+//
+// _lock is the register that holds the address of the spin lock.
+// _scratch is a scratch register.
+// _try is the label on the associated ACQUIRE_SPIN_LOCK invocation.
+// _entry is a label to use in the generated code.
+// _spin is a label to use in the generated code.
+//
+// The cror instruction in this macro works around 603e/ev errata #15
+// by forcing the mtmsr to complete before allowing any subsequent loads
+// to issue. The condition register no-op is executed in the system unit
+// on the 603. This will not dispatch until the mtmsr completes and will
+// halt further dispatch. On a 601 or 604 this instruction executes in
+// the branch unit and will run in parallel (i.e., no performance penalty
+// except for code bloat).
+//
+
+#if !SPINDBG
+#define SPIN_ON_SPIN_LOCK_ENABLED(_lock, _scratch, _try, _entry, _spin, _enable, _disable) \
+_entry: \
+ ENABLE_INTERRUPTS(_enable) ;\
+_spin: \
+ lwz _scratch, 0(_lock) ;\
+ cmpwi _scratch, 0 ;\
+ bne- _spin ;\
+ mtmsr _disable ;\
+ cror 0,0,0 ;\
+ b _try
+#else
+#define SPIN_ON_SPIN_LOCK_ENABLED(_lock, _scratch, _try, _entry, _spin, _enable, _disable) \
+_entry: \
+ ori _scratch,_lock,0 ;\
+ ori _scratch,_scratch,1 ;\
+ stw _scratch,KiPcr+PcPcrPage2+12(0) ;\
+ ENABLE_INTERRUPTS(_enable) ;\
+_spin: \
+ lwz _scratch, 0(_lock) ;\
+ cmpwi _scratch, 0 ;\
+ bne- _spin ;\
+ ori _scratch,_lock,0 ;\
+ ori _scratch,_scratch,1 ;\
+ stw _scratch,KiPcr+PcPcrPage2+24(0) ;\
+ li _scratch,0 ;\
+ stw _scratch,KiPcr+PcPcrPage2+12(0) ;\
+ mtmsr _disable ;\
+ cror 0,0,0 ;\
+ b _try
+#endif
+
+//
+// TRY_TO_ACQUIRE_SPIN_LOCK(_lock, _value, _scratch, _try, _fail)
+//
+// Try to acquire a spin lock.
+//
+// _lock is the register that holds the address of the spin lock.
+// _value is the register that holds the value to be stored to the
+// spin lock to lock it.
+// _scratch is a scratch register.
+// _try is a label to use in the generated code.
+// fail_label is the label to jump to if the spin lock is already held.
+//
+
+#if !SPINDBG
+#define TRY_TO_ACQUIRE_SPIN_LOCK(_lock, _value, _scratch, _try, _fail) \
+_try: \
+ lwarx _scratch, 0, _lock ;\
+ cmpwi _scratch, 0 ;\
+ bne- _fail ;\
+ stwcx. _value, 0, _lock ;\
+ bne- _try ;\
+ isync
+#else
+#define TRY_TO_ACQUIRE_SPIN_LOCK(_lock, _value, _scratch, _try, _fail) \
+ ori _scratch,_lock,0 ;\
+ ori _scratch,_scratch,1 ;\
+ stw _scratch,KiPcr+PcPcrPage2+8(0) ;\
+ li _scratch,0 ;\
+ stw _scratch,KiPcr+PcPcrPage2+16(0) ;\
+_try: \
+ lwarx _scratch, 0, _lock ;\
+ cmpwi _scratch, 0 ;\
+ bne- _fail ;\
+ stwcx. _value, 0, _lock ;\
+ bne- _try ;\
+ isync ;\
+ ori _scratch,_lock,0 ;\
+ ori _scratch,_scratch,1 ;\
+ stw _scratch,KiPcr+PcPcrPage2+16(0) ;\
+ li _scratch,0 ;\
+ stw _scratch,KiPcr+PcPcrPage2+20(0)
+#endif
+
+//
+// RELEASE_SPIN_LOCK(_lock, _zero)
+//
+// Release a spin lock.
+//
+// _lock is the register that holds the address of the spin lock.
+// _zero is a register that contains a 0.
+//
+
+#if !SPINDBG
+#define RELEASE_SPIN_LOCK(_lock, _zero) \
+ eieio ;\
+ stw _zero, 0(_lock)
+#else
+#define RELEASE_SPIN_LOCK(_lock, _zero) \
+ stw _lock,KiPcr+PcPcrPage2+20(0) ;\
+ eieio ;\
+ stw _zero, 0(_lock)
+#endif
+
+#endif // _KXPPC_C_HEADER_
+
+
+#ifndef _PPC601_
+#define _PPC601_ 601
+#endif
+#define PPC60X _PPC601_
+
+//
+// Exception entry reasons. Passed to KiDispatchException from
+// exception entry routines.
+//
+#define ppc_machine_check 1
+#define ppc_data_storage 2
+#define ppc_instruction_storage 3
+#define ppc_external 4
+#define ppc_alignment 5
+#define ppc_program 6
+#define ppc_fp_unavailable 7
+#define ppc_decrementer 8
+#define ppc_direct_store_error 9
+#define ppc_syscall 10
+#define ppc_trace 11
+#define ppc_fp_assist 12
+#define ppc_run_mode 13
+#define ppc_panic 256
+
+#if !DBG_STORE
+
+#define DBGSTORE(reg,reg2,regv)
+#define DBGSTORE_I(reg,reg2,val)
+#define DBGSTORE_IRR(reg,reg2,val,regv2,regv3)
+#define DBGSTORE_IRRR(reg,reg2,val,regv2,regv3,regv4)
+#define DBGSTORE_I_R(reg,reg2,val)
+
+#else
+
+#define STORE_ADDR 0x3800
+
+#if 1
+#define DCBST(reg)
+#else
+#define DCBST(reg) dcbst 0,reg
+#endif
+
+#if 0
+#define DBGSTORE(reg,reg2,regv)
+#else
+#define DBGSTORE(reg,reg2,regv) \
+ mfsprg reg,1; \
+ lwz reg2,PcSpare+4(reg); \
+ addi reg2,reg2,16; \
+ clrlwi reg2,reg2,22; \
+ stw reg2,PcSpare+4(reg); \
+ lbz reg,PcNumber(reg); \
+ slwi reg,reg,10; \
+ add reg,reg,reg2; \
+ addi reg,reg,STORE_ADDR; \
+ oris reg,reg,0x8000; \
+ stw regv,0(reg); \
+ DCBST(reg)
+#endif
+
+#if 0
+#define DBGSTORE_I(reg,reg2,val)
+#else
+#define DBGSTORE_I(reg,reg2,val) \
+ mfsprg reg,1; \
+ lwz reg2,PcSpare+4(reg); \
+ addi reg2,reg2,16; \
+ clrlwi reg2,reg2,22; \
+ stw reg2,PcSpare+4(reg); \
+ lbz reg,PcNumber(reg); \
+ slwi reg,reg,10; \
+ add reg,reg,reg2; \
+ addi reg,reg,STORE_ADDR; \
+ oris reg,reg,0x8000; \
+ li reg2,val; \
+ stw reg2,0(reg); \
+ DCBST(reg)
+#endif
+
+#if 0
+#define DBGSTORE_IRR(reg,reg2,val,regv2,regv3)
+#else
+#define DBGSTORE_IRR(reg,reg2,val,regv2,regv3) \
+ .extern KeTickCount; \
+ mfsprg reg,1; \
+ lwz reg2,PcSpare+4(reg); \
+ addi reg2,reg2,16; \
+ clrlwi reg2,reg2,22; \
+ stw reg2,PcSpare+4(reg); \
+ lbz reg,PcNumber(reg); \
+ slwi reg,reg,10; \
+ add reg,reg,reg2; \
+ addi reg,reg,STORE_ADDR; \
+ oris reg,reg,0x8000; \
+ li reg2,val; \
+ stw reg2,0(reg); \
+ stw regv2,4(reg); \
+ stw regv3,8(reg); \
+ lwz reg2,[toc]KeTickCount(r2); \
+ lwz reg2,0(reg2); \
+ stw reg2,0xc(reg); \
+ DCBST(reg)
+#endif
+
+#if 0
+#define DBGSTORE_IRRR(reg,reg2,val,regv2,regv3,regv4)
+#else
+#define DBGSTORE_IRRR(reg,reg2,val,regv2,regv3,regv4) \
+ mfsprg reg,1; \
+ lwz reg2,PcSpare+4(reg); \
+ addi reg2,reg2,16; \
+ clrlwi reg2,reg2,22; \
+ stw reg2,PcSpare+4(reg); \
+ lbz reg,PcNumber(reg); \
+ slwi reg,reg,10; \
+ add reg,reg,reg2; \
+ addi reg,reg,STORE_ADDR; \
+ oris reg,reg,0x8000; \
+ li reg2,val; \
+ stw reg2,0(reg); \
+ stw regv2,4(reg); \
+ stw regv3,8(reg); \
+ stw regv4,0xc(reg); \
+ DCBST(reg)
+#endif
+
+#if 0
+#define DBGSTORE_I_R(reg,reg2,val)
+#else
+#define DBGSTORE_I_R(reg,reg2,val) \
+ mfsprg reg,0; \
+ lwz reg2,PcSpare+4(reg); \
+ addi reg2,reg2,16; \
+ clrlwi reg2,reg2,22; \
+ stw reg2,PcSpare+4(reg); \
+ lbz reg,PcNumber(reg); \
+ slwi reg,reg,10; \
+ add reg,reg,reg2; \
+ addi reg,reg,STORE_ADDR; \
+ li reg2,val; \
+ stw reg2,0(reg); \
+ DCBST(reg)
+#endif
+
+#endif // DBG_STORE
+
+#if !SPINDBG
+
+#define CHKBRK(reg,label)
+#define CHKLOCK(reg,regl,label)
+
+#else
+
+#if 1
+#define CHKBRK(reg,label)
+#else
+#define CHKBRK(reg,label) \
+ mfsprg reg,1; \
+ lwz reg,PcSpare+8(reg); \
+ cmpwi reg,0; \
+ beq label; \
+ twi 31,0,0x16; \
+label:
+#endif
+
+#if 1
+#define CHKLOCK(reg,regl,label)
+#else
+#define CHKLOCK(reg,regl,label) \
+ .extern KiDispatcherLock; \
+ lwz reg,[toc]KiDispatcherLock(r2); \
+ cmpw reg,regl; \
+ bne label
+#endif
+
+#endif // SPINDBG
+
+#if !COLLECT_PAGING_DATA
+
+#define INC_CTR(ctr,rpcr,rscr)
+#define INC_CTR2(ctr,rpcr,rscr)
+#define INC_GRP_CTR_R(ctr,roff)
+#define INC_GRP_CTR(ctr,roff,rscr1,rscr2)
+
+#else
+
+#define CTR_DTLB_MISS 0
+#define CTR_DTLB_MISS_VALID_PTE 4
+#define CTR_ITLB_MISS 8
+#define CTR_ITLB_MISS_VALID_PTE 12
+#define CTR_DSI 16
+#define CTR_DSI_HPT_MISS 20
+#define CTR_ISI 24
+#define CTR_ISI_HPT_MISS 28
+#define CTR_PCR 32
+#define CTR_PCR2 36
+#define CTR_STORAGE_ERROR 40
+#define CTR_PAGE_FAULT 44
+#define CTR_FLUSH_SINGLE 48
+#define CTR_FILL_ENTRY 52
+#define CTR_FLUSH_CURRENT 56
+#define PROC_CTR_SIZE 60
+
+#define GRP_CTR_BASE PROC_CTR_SIZE
+
+#define GRP_CTR_DSI_VALID_PTE (GRP_CTR_BASE + 0)
+#define GRP_CTR_DSI_FULL (GRP_CTR_BASE + 4)
+#define GRP_CTR_DSI_FOUND (GRP_CTR_BASE + 8)
+#define GRP_CTR_FLUSH_SINGLE (GRP_CTR_BASE + 12)
+#define GRP_CTR_FLUSH_SINGLE_FOUND (GRP_CTR_BASE + 16)
+#define GRP_CTR_FILL_ENTRY (GRP_CTR_BASE + 20)
+#define GRP_CTR_FILL_ENTRY_FOUND (GRP_CTR_BASE + 24)
+#define GRP_CTR_FILL_ENTRY_FULL (GRP_CTR_BASE + 28)
+#define GRP_CTR_SIZE (GRP_CTR_BASE + 32)
+
+#define CTR_SIZE (PROC_CTR_SIZE + GRP_CTR_SIZE)
+
+#define PcSpare (PcPcrPage2+4)
+#define PcR31 (PcSpare+4)
+#define PcPagingData (PcSpare+8)
+
+#define INC_CTR(ctr,rpcr,rscr) \
+ lwz rscr,PcPagingData+ctr(rpcr); \
+ addi rscr,rscr,1; \
+ stw rscr,PcPagingData+ctr(rpcr)
+
+#define INC_CTR2(ctr,rpcr,rscr) \
+ mfsprg rpcr,1; \
+ lwz rscr,PcPagingData+ctr(rpcr); \
+ addi rscr,rscr,1; \
+ stw rscr,PcPagingData+ctr(rpcr)
+
+#define INC_GRP_CTR_R(ctr,rgrp) \
+ ori r0,r30,0; \
+ mfsprg r30,0; \
+ stw r31,PcR31(r30); \
+ lwz r31,PcPagingData+ctr(r30); \
+ addi r31,r31,1; \
+ stw r31,PcPagingData+ctr(r30); \
+ lwz r31,PcR31(r30); \
+ ori r30,r0,0
+
+#define INC_GRP_CTR(ctr,rgrp,rscr1,rscr2) \
+ mfsprg rscr2,1; \
+ lwz rscr1,PcPagingData+ctr(rscr2); \
+ addi rscr1,rscr1,1; \
+ stw rscr1,PcPagingData+ctr(rscr2)
+
+#endif // COLLECT_PAGING_DATA
+
+#endif // _KXPPC_
diff --git a/public/sdk/inc/linkinfo.h b/public/sdk/inc/linkinfo.h
new file mode 100644
index 000000000..aa8ae35aa
--- /dev/null
+++ b/public/sdk/inc/linkinfo.h
@@ -0,0 +1,235 @@
+/*
+ * linkinfo.h - LinkInfo ADT module description.
+ */
+
+
+#ifndef __LINKINFO_H__
+#define __LINKINFO_H__
+
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++. */
+#endif /* __cplusplus */
+
+
+/* Constants
+ ************/
+
+/* Define API decoration for direct export or import of DLL functions. */
+
+#ifdef _LINKINFO_
+#define LINKINFOAPI
+#else
+#define LINKINFOAPI DECLSPEC_IMPORT
+#endif
+
+
+/* Types
+ ********/
+
+/* LinkInfo structure */
+
+typedef struct _linkinfo
+{
+ /* size of LinkInfo structure, including ucbSize field */
+
+ UINT ucbSize;
+}
+LINKINFO;
+typedef LINKINFO *PLINKINFO;
+typedef const LINKINFO CLINKINFO;
+typedef const LINKINFO *PCLINKINFO;
+
+/* input flags to ResolveLinkInfo() */
+
+typedef enum _resolvelinkinfoinflags
+{
+ /* Set up connection to referent. */
+
+ RLI_IFL_CONNECT = 0x0001,
+
+ /*
+ * Set up temporary connection to referent. May only be set if
+ * RLI_IFL_CONNECT is also set.
+ */
+
+ RLI_IFL_TEMPORARY = 0x0002,
+
+ /* Allow interaction with user. */
+
+ RLI_IFL_ALLOW_UI = 0x0004,
+
+ /* Resolve to redirected local device path. */
+
+ RLI_IFL_REDIRECT = 0x0008,
+
+ /* Update source LinkInfo structure if necessary. */
+
+ RLI_IFL_UPDATE = 0x0010,
+
+ /* Search matching local devices for missing volume. */
+
+ RLI_IFL_LOCAL_SEARCH = 0x0020,
+
+ /* flag combinations */
+
+ ALL_RLI_IFLAGS = (RLI_IFL_CONNECT |
+ RLI_IFL_TEMPORARY |
+ RLI_IFL_ALLOW_UI |
+ RLI_IFL_REDIRECT |
+ RLI_IFL_UPDATE |
+ RLI_IFL_LOCAL_SEARCH)
+}
+RESOLVELINKINFOINFLAGS;
+
+/* output flags from ResolveLinkInfo() */
+
+typedef enum _resolvelinkinfooutflags
+{
+ /*
+ * Only set if RLI_IFL_UPDATE was set in dwInFlags. The source LinkInfo
+ * structure needs updating, and *ppliUpdated points to an updated LinkInfo
+ * structure.
+ */
+
+ RLI_OFL_UPDATED = 0x0001,
+
+ /*
+ * Only set if RLI_IFL_CONNECT was set in dwInFlags. A connection to a net
+ * resource was established to resolve the LinkInfo. DisconnectLinkInfo()
+ * should be called to shut down the connection when the caller is finished
+ * with the remote referent. DisconnectLinkInfo() need not be called if
+ * RLI_IFL_TEMPORARY was also set in dwInFlags.
+ */
+
+ RLI_OFL_DISCONNECT = 0x0002,
+
+ /* flag combinations */
+
+ ALL_RLI_OFLAGS = (RLI_OFL_UPDATED |
+ RLI_OFL_DISCONNECT)
+}
+RESOLVELINKINFOOUTFLAGS;
+
+/* LinkInfo data types used by GetLinkInfo() */
+
+typedef enum _linkinfodatatype
+{
+ /* PCDWORD - pointer to volume's serial number */
+
+ LIDT_VOLUME_SERIAL_NUMBER,
+
+ /* PCUINT - pointer to volume's host drive type */
+
+ LIDT_DRIVE_TYPE,
+
+ /* PCSTR - pointer to volume's label */
+
+ LIDT_VOLUME_LABEL,
+
+ /* PCSTR - pointer to local base path */
+
+ LIDT_LOCAL_BASE_PATH,
+
+ /* PCSTR - pointer to parent network resource's name */
+
+ LIDT_NET_RESOURCE,
+
+ /* PCSTR - pointer to last device redirected to parent network resource */
+
+ LIDT_REDIRECTED_DEVICE,
+
+ /* PCSTR - pointer to common path suffix */
+
+ LIDT_COMMON_PATH_SUFFIX,
+
+ /* PCDWORD - pointer to network type */
+
+ LIDT_NET_TYPE,
+
+ /* PCWSTR - pointer to possible unicode volume label */
+
+ LIDT_VOLUME_LABELW,
+
+ /* PCSTR - pointer to possible unicode parent network resource's name */
+
+ LIDT_NET_RESOURCEW,
+
+ /* PCSTR - pointer to possible unicode last device redirected to parent network resource */
+
+ LIDT_REDIRECTED_DEVICEW,
+
+ /* PCWSTR - pointer to possible unicode local base path */
+
+ LIDT_LOCAL_BASE_PATHW,
+
+ /* PCWSTR - pointer to possible unicode common path suffix */
+
+ LIDT_COMMON_PATH_SUFFIXW
+}
+LINKINFODATATYPE;
+
+/* output flags from GetCanonicalPathInfo() */
+
+typedef enum _getcanonicalpathinfooutflags
+{
+ /* The path is on a remote volume. */
+
+ GCPI_OFL_REMOTE = 0x0001,
+
+ /* flag combinations */
+
+ ALL_GCPI_OFLAGS = GCPI_OFL_REMOTE
+}
+GETCANONICALPATHINFOOUTFLAGS;
+
+
+/* Prototypes
+ *************/
+
+/* LinkInfo APIs */
+
+LINKINFOAPI BOOL WINAPI CreateLinkInfoA(LPCSTR, PLINKINFO *);
+LINKINFOAPI BOOL WINAPI CreateLinkInfoW(LPCWSTR, PLINKINFO *);
+
+#ifdef UNICODE
+#define CreateLinkInfo CreateLinkInfoW
+#else
+#define CreateLinkInfo CreateLinkInfoA
+#endif
+
+LINKINFOAPI void WINAPI DestroyLinkInfo(PLINKINFO);
+LINKINFOAPI int WINAPI CompareLinkInfoReferents(PCLINKINFO, PCLINKINFO);
+LINKINFOAPI int WINAPI CompareLinkInfoVolumes(PCLINKINFO, PCLINKINFO);
+
+LINKINFOAPI BOOL WINAPI ResolveLinkInfoA(PCLINKINFO, LPSTR, DWORD, HWND, PDWORD, PLINKINFO *);
+LINKINFOAPI BOOL WINAPI ResolveLinkInfoW(PCLINKINFO, LPWSTR, DWORD, HWND, PDWORD, PLINKINFO *);
+
+#ifdef UNICODE
+#define ResolveLinkInfo ResolveLinkInfoW
+#else
+#define ResolveLinkInfo ResolveLinkInfoA
+#endif
+
+LINKINFOAPI BOOL WINAPI DisconnectLinkInfo(PCLINKINFO);
+LINKINFOAPI BOOL WINAPI GetLinkInfoData(PCLINKINFO, LINKINFODATATYPE, const VOID **);
+LINKINFOAPI BOOL WINAPI IsValidLinkInfo(PCLINKINFO);
+
+/* canonical path APIs */
+
+LINKINFOAPI BOOL WINAPI GetCanonicalPathInfoA(LPCSTR, LPSTR, LPDWORD, LPSTR, LPSTR *);
+LINKINFOAPI BOOL WINAPI GetCanonicalPathInfoW(LPCWSTR, LPWSTR, LPDWORD, LPWSTR, LPWSTR *);
+
+#ifdef UNICODE
+#define GetCanonicalPathInfo GetCanonicalPathInfoW
+#else
+#define GetCanonicalPathInfo GetCanonicalPathInfoA
+#endif
+
+
+#ifdef __cplusplus
+} /* End of extern "C" {. */
+#endif /* __cplusplus */
+
+
+#endif /* ! __LINKINFO_H__ */
diff --git a/public/sdk/inc/lm.h b/public/sdk/inc/lm.h
new file mode 100644
index 000000000..79bd4df46
--- /dev/null
+++ b/public/sdk/inc/lm.h
@@ -0,0 +1,43 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lm.h
+
+Abstract:
+
+ This is the top level include file that includes all the files
+ necessary for writing Lan Manager Application.
+
+[Environment:]
+
+ User Mode - Win32
+
+--*/
+
+#ifndef _LM_
+#define _LM_
+
+#include <lmcons.h> // LAN Manager common definitions
+#include <lmerr.h> // LAN Manager network error definitions
+
+#include <lmaccess.h> // Access, Domain, Group and User classes
+#include <lmalert.h> // Alerter
+#include <lmchdev.h> // Character Device and Handle classes
+#include <lmshare.h> // Connection, File, Session and Share classes
+#include <lmmsg.h> // Message class
+#include <lmremutl.h> // Remote Utility class
+#include <lmrepl.h> // Replicator class
+#include <lmserver.h> // Server class
+#include <lmsvc.h> // Service class
+#include <lmuse.h> // Use class
+#include <lmwksta.h> // Workstation class
+#include <lmapibuf.h> // NetApiBuffer class
+#include <lmerrlog.h> // NetErrorLog class
+#include <lmconfig.h> // NetConfig class
+#include <lmstats.h> // NetStats class
+#include <lmaudit.h> // NetAudit class
+
+#endif // _LM_
diff --git a/public/sdk/inc/lmaccess.h b/public/sdk/inc/lmaccess.h
new file mode 100644
index 000000000..53c19681b
--- /dev/null
+++ b/public/sdk/inc/lmaccess.h
@@ -0,0 +1,1400 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmaccess.h
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the NetUser, NetUserModals, NetGroup, NetAccess, and NetLogon API.
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+--*/
+
+//
+// User Class
+//
+
+#ifndef _LMUSER_
+#define _LMUSER_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <lmcons.h> // unfortunately created a dependence on this
+
+//
+// Function Prototypes - User
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserAdd (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserEnum (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ IN DWORD filter,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserGetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR username,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserSetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR username,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserDel (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR username
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserGetGroups (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR username,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserSetGroups (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR username,
+ IN DWORD level,
+ IN LPBYTE buf,
+ IN DWORD num_entries
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserGetLocalGroups (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR username,
+ IN DWORD level,
+ IN DWORD flags,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserModalsGet (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserModalsSet (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUserChangePassword (
+ IN LPCWSTR domainname OPTIONAL,
+ IN LPCWSTR username OPTIONAL,
+ IN LPCWSTR oldpassword,
+ IN LPCWSTR newpassword
+ );
+
+
+//
+// Data Structures - User
+//
+
+typedef struct _USER_INFO_0 {
+ LPWSTR usri0_name;
+}USER_INFO_0, *PUSER_INFO_0, *LPUSER_INFO_0;
+
+typedef struct _USER_INFO_1 {
+ LPWSTR usri1_name;
+ LPWSTR usri1_password;
+ DWORD usri1_password_age;
+ DWORD usri1_priv;
+ LPWSTR usri1_home_dir;
+ LPWSTR usri1_comment;
+ DWORD usri1_flags;
+ LPWSTR usri1_script_path;
+}USER_INFO_1, *PUSER_INFO_1, *LPUSER_INFO_1;
+
+typedef struct _USER_INFO_2 {
+ LPWSTR usri2_name;
+ LPWSTR usri2_password;
+ DWORD usri2_password_age;
+ DWORD usri2_priv;
+ LPWSTR usri2_home_dir;
+ LPWSTR usri2_comment;
+ DWORD usri2_flags;
+ LPWSTR usri2_script_path;
+ DWORD usri2_auth_flags;
+ LPWSTR usri2_full_name;
+ LPWSTR usri2_usr_comment;
+ LPWSTR usri2_parms;
+ LPWSTR usri2_workstations;
+ DWORD usri2_last_logon;
+ DWORD usri2_last_logoff;
+ DWORD usri2_acct_expires;
+ DWORD usri2_max_storage;
+ DWORD usri2_units_per_week;
+ PBYTE usri2_logon_hours;
+ DWORD usri2_bad_pw_count;
+ DWORD usri2_num_logons;
+ LPWSTR usri2_logon_server;
+ DWORD usri2_country_code;
+ DWORD usri2_code_page;
+}USER_INFO_2, *PUSER_INFO_2, *LPUSER_INFO_2;
+
+typedef struct _USER_INFO_3 {
+ LPWSTR usri3_name;
+ LPWSTR usri3_password;
+ DWORD usri3_password_age;
+ DWORD usri3_priv;
+ LPWSTR usri3_home_dir;
+ LPWSTR usri3_comment;
+ DWORD usri3_flags;
+ LPWSTR usri3_script_path;
+ DWORD usri3_auth_flags;
+ LPWSTR usri3_full_name;
+ LPWSTR usri3_usr_comment;
+ LPWSTR usri3_parms;
+ LPWSTR usri3_workstations;
+ DWORD usri3_last_logon;
+ DWORD usri3_last_logoff;
+ DWORD usri3_acct_expires;
+ DWORD usri3_max_storage;
+ DWORD usri3_units_per_week;
+ PBYTE usri3_logon_hours;
+ DWORD usri3_bad_pw_count;
+ DWORD usri3_num_logons;
+ LPWSTR usri3_logon_server;
+ DWORD usri3_country_code;
+ DWORD usri3_code_page;
+ DWORD usri3_user_id;
+ DWORD usri3_primary_group_id;
+ LPWSTR usri3_profile;
+ LPWSTR usri3_home_dir_drive;
+ DWORD usri3_password_expired;
+}USER_INFO_3, *PUSER_INFO_3, *LPUSER_INFO_3;
+
+typedef struct _USER_INFO_10 {
+ LPWSTR usri10_name;
+ LPWSTR usri10_comment;
+ LPWSTR usri10_usr_comment;
+ LPWSTR usri10_full_name;
+}USER_INFO_10, *PUSER_INFO_10, *LPUSER_INFO_10;
+
+typedef struct _USER_INFO_11 {
+ LPWSTR usri11_name;
+ LPWSTR usri11_comment;
+ LPWSTR usri11_usr_comment;
+ LPWSTR usri11_full_name;
+ DWORD usri11_priv;
+ DWORD usri11_auth_flags;
+ DWORD usri11_password_age;
+ LPWSTR usri11_home_dir;
+ LPWSTR usri11_parms;
+ DWORD usri11_last_logon;
+ DWORD usri11_last_logoff;
+ DWORD usri11_bad_pw_count;
+ DWORD usri11_num_logons;
+ LPWSTR usri11_logon_server;
+ DWORD usri11_country_code;
+ LPWSTR usri11_workstations;
+ DWORD usri11_max_storage;
+ DWORD usri11_units_per_week;
+ PBYTE usri11_logon_hours;
+ DWORD usri11_code_page;
+}USER_INFO_11, *PUSER_INFO_11, *LPUSER_INFO_11;
+
+typedef struct _USER_INFO_20 {
+ LPWSTR usri20_name;
+ LPWSTR usri20_full_name;
+ LPWSTR usri20_comment;
+ DWORD usri20_flags;
+ DWORD usri20_user_id;
+}USER_INFO_20, *PUSER_INFO_20, *LPUSER_INFO_20;
+
+typedef struct _USER_INFO_21 {
+ BYTE usri21_password[ENCRYPTED_PWLEN];
+}USER_INFO_21, *PUSER_INFO_21, *LPUSER_INFO_21;
+
+typedef struct _USER_INFO_22 {
+ LPWSTR usri22_name;
+ BYTE usri22_password[ENCRYPTED_PWLEN];
+ DWORD usri22_password_age;
+ DWORD usri22_priv;
+ LPWSTR usri22_home_dir;
+ LPWSTR usri22_comment;
+ DWORD usri22_flags;
+ LPWSTR usri22_script_path;
+ DWORD usri22_auth_flags;
+ LPWSTR usri22_full_name;
+ LPWSTR usri22_usr_comment;
+ LPWSTR usri22_parms;
+ LPWSTR usri22_workstations;
+ DWORD usri22_last_logon;
+ DWORD usri22_last_logoff;
+ DWORD usri22_acct_expires;
+ DWORD usri22_max_storage;
+ DWORD usri22_units_per_week;
+ PBYTE usri22_logon_hours;
+ DWORD usri22_bad_pw_count;
+ DWORD usri22_num_logons;
+ LPWSTR usri22_logon_server;
+ DWORD usri22_country_code;
+ DWORD usri22_code_page;
+}USER_INFO_22, *PUSER_INFO_22, *LPUSER_INFO_22;
+
+typedef struct _USER_INFO_1003 {
+ LPWSTR usri1003_password;
+} USER_INFO_1003, *PUSER_INFO_1003, *LPUSER_INFO_1003;
+
+typedef struct _USER_INFO_1005 {
+ DWORD usri1005_priv;
+} USER_INFO_1005, *PUSER_INFO_1005, *LPUSER_INFO_1005;
+
+typedef struct _USER_INFO_1006 {
+ LPWSTR usri1006_home_dir;
+} USER_INFO_1006, *PUSER_INFO_1006, *LPUSER_INFO_1006;
+
+typedef struct _USER_INFO_1007 {
+ LPWSTR usri1007_comment;
+} USER_INFO_1007, *PUSER_INFO_1007, *LPUSER_INFO_1007;
+
+typedef struct _USER_INFO_1008 {
+ DWORD usri1008_flags;
+} USER_INFO_1008, *PUSER_INFO_1008, *LPUSER_INFO_1008;
+
+typedef struct _USER_INFO_1009 {
+ LPWSTR usri1009_script_path;
+} USER_INFO_1009, *PUSER_INFO_1009, *LPUSER_INFO_1009;
+
+typedef struct _USER_INFO_1010 {
+ DWORD usri1010_auth_flags;
+} USER_INFO_1010, *PUSER_INFO_1010, *LPUSER_INFO_1010;
+
+typedef struct _USER_INFO_1011 {
+ LPWSTR usri1011_full_name;
+} USER_INFO_1011, *PUSER_INFO_1011, *LPUSER_INFO_1011;
+
+typedef struct _USER_INFO_1012 {
+ LPWSTR usri1012_usr_comment;
+} USER_INFO_1012, *PUSER_INFO_1012, *LPUSER_INFO_1012;
+
+typedef struct _USER_INFO_1013 {
+ LPWSTR usri1013_parms;
+} USER_INFO_1013, *PUSER_INFO_1013, *LPUSER_INFO_1013;
+
+typedef struct _USER_INFO_1014 {
+ LPWSTR usri1014_workstations;
+} USER_INFO_1014, *PUSER_INFO_1014, *LPUSER_INFO_1014;
+
+typedef struct _USER_INFO_1017 {
+ DWORD usri1017_acct_expires;
+} USER_INFO_1017, *PUSER_INFO_1017, *LPUSER_INFO_1017;
+
+typedef struct _USER_INFO_1018 {
+ DWORD usri1018_max_storage;
+} USER_INFO_1018, *PUSER_INFO_1018, *LPUSER_INFO_1018;
+
+typedef struct _USER_INFO_1020 {
+ DWORD usri1020_units_per_week;
+ LPBYTE usri1020_logon_hours;
+} USER_INFO_1020, *PUSER_INFO_1020, *LPUSER_INFO_1020;
+
+typedef struct _USER_INFO_1023 {
+ LPWSTR usri1023_logon_server;
+} USER_INFO_1023, *PUSER_INFO_1023, *LPUSER_INFO_1023;
+
+typedef struct _USER_INFO_1024 {
+ DWORD usri1024_country_code;
+} USER_INFO_1024, *PUSER_INFO_1024, *LPUSER_INFO_1024;
+
+typedef struct _USER_INFO_1025 {
+ DWORD usri1025_code_page;
+} USER_INFO_1025, *PUSER_INFO_1025, *LPUSER_INFO_1025;
+
+typedef struct _USER_INFO_1051 {
+ DWORD usri1051_primary_group_id;
+} USER_INFO_1051, *PUSER_INFO_1051, *LPUSER_INFO_1051;
+
+typedef struct _USER_INFO_1052 {
+ LPWSTR usri1052_profile;
+} USER_INFO_1052, *PUSER_INFO_1052, *LPUSER_INFO_1052;
+
+typedef struct _USER_INFO_1053 {
+ LPWSTR usri1053_home_dir_drive;
+} USER_INFO_1053, *PUSER_INFO_1053, *LPUSER_INFO_1053;
+
+
+//
+// Data Structures - User Modals
+//
+
+typedef struct _USER_MODALS_INFO_0 {
+ DWORD usrmod0_min_passwd_len;
+ DWORD usrmod0_max_passwd_age;
+ DWORD usrmod0_min_passwd_age;
+ DWORD usrmod0_force_logoff;
+ DWORD usrmod0_password_hist_len;
+}USER_MODALS_INFO_0, *PUSER_MODALS_INFO_0, *LPUSER_MODALS_INFO_0;
+
+typedef struct _USER_MODALS_INFO_1 {
+ DWORD usrmod1_role;
+ LPWSTR usrmod1_primary;
+}USER_MODALS_INFO_1, *PUSER_MODALS_INFO_1, *LPUSER_MODALS_INFO_1;
+
+typedef struct _USER_MODALS_INFO_2 {
+ LPWSTR usrmod2_domain_name;
+ PSID usrmod2_domain_id;
+}USER_MODALS_INFO_2, *PUSER_MODALS_INFO_2, *LPUSER_MODALS_INFO_2;
+
+typedef struct _USER_MODALS_INFO_3 {
+ DWORD usrmod3_lockout_duration;
+ DWORD usrmod3_lockout_observation_window;
+ DWORD usrmod3_lockout_threshold;
+}USER_MODALS_INFO_3, *PUSER_MODALS_INFO_3, *LPUSER_MODALS_INFO_3;
+
+typedef struct _USER_MODALS_INFO_1001 {
+ DWORD usrmod1001_min_passwd_len;
+} USER_MODALS_INFO_1001, *PUSER_MODALS_INFO_1001, *LPUSER_MODALS_INFO_1001;
+
+typedef struct _USER_MODALS_INFO_1002 {
+ DWORD usrmod1002_max_passwd_age;
+} USER_MODALS_INFO_1002, *PUSER_MODALS_INFO_1002, *LPUSER_MODALS_INFO_1002;
+
+typedef struct _USER_MODALS_INFO_1003 {
+ DWORD usrmod1003_min_passwd_age;
+} USER_MODALS_INFO_1003, *PUSER_MODALS_INFO_1003, *LPUSER_MODALS_INFO_1003;
+
+typedef struct _USER_MODALS_INFO_1004 {
+ DWORD usrmod1004_force_logoff;
+} USER_MODALS_INFO_1004, *PUSER_MODALS_INFO_1004, *LPUSER_MODALS_INFO_1004;
+
+typedef struct _USER_MODALS_INFO_1005 {
+ DWORD usrmod1005_password_hist_len;
+} USER_MODALS_INFO_1005, *PUSER_MODALS_INFO_1005, *LPUSER_MODALS_INFO_1005;
+
+typedef struct _USER_MODALS_INFO_1006 {
+ DWORD usrmod1006_role;
+} USER_MODALS_INFO_1006, *PUSER_MODALS_INFO_1006, *LPUSER_MODALS_INFO_1006;
+
+typedef struct _USER_MODALS_INFO_1007 {
+ LPWSTR usrmod1007_primary;
+} USER_MODALS_INFO_1007, *PUSER_MODALS_INFO_1007, *LPUSER_MODALS_INFO_1007;
+
+
+//
+// Special Values and Constants - User
+//
+
+//
+// Bit masks for field usriX_flags of USER_INFO_X (X = 0/1).
+//
+
+#define UF_SCRIPT 0x0001
+#define UF_ACCOUNTDISABLE 0x0002
+#define UF_HOMEDIR_REQUIRED 0x0008
+#define UF_LOCKOUT 0x0010
+#define UF_PASSWD_NOTREQD 0x0020
+#define UF_PASSWD_CANT_CHANGE 0x0040
+
+//
+// Account type bits as part of usri_flags.
+//
+
+#define UF_TEMP_DUPLICATE_ACCOUNT 0x0100
+#define UF_NORMAL_ACCOUNT 0x0200
+#define UF_INTERDOMAIN_TRUST_ACCOUNT 0x0800
+#define UF_WORKSTATION_TRUST_ACCOUNT 0x1000
+#define UF_SERVER_TRUST_ACCOUNT 0x2000
+
+#define UF_MACHINE_ACCOUNT_MASK ( UF_INTERDOMAIN_TRUST_ACCOUNT | \
+ UF_WORKSTATION_TRUST_ACCOUNT | \
+ UF_SERVER_TRUST_ACCOUNT )
+
+#define UF_ACCOUNT_TYPE_MASK ( \
+ UF_TEMP_DUPLICATE_ACCOUNT | \
+ UF_NORMAL_ACCOUNT | \
+ UF_INTERDOMAIN_TRUST_ACCOUNT | \
+ UF_WORKSTATION_TRUST_ACCOUNT | \
+ UF_SERVER_TRUST_ACCOUNT \
+ )
+
+#define UF_DONT_EXPIRE_PASSWD 0x10000
+#define UF_MNS_LOGON_ACCOUNT 0x20000
+
+
+#define UF_SETTABLE_BITS ( \
+ UF_SCRIPT | \
+ UF_ACCOUNTDISABLE | \
+ UF_LOCKOUT | \
+ UF_HOMEDIR_REQUIRED | \
+ UF_PASSWD_NOTREQD | \
+ UF_PASSWD_CANT_CHANGE | \
+ UF_ACCOUNT_TYPE_MASK | \
+ UF_DONT_EXPIRE_PASSWD | \
+ UF_MNS_LOGON_ACCOUNT \
+ )
+
+//
+// bit masks for the NetUserEnum filter parameter.
+//
+
+#define FILTER_TEMP_DUPLICATE_ACCOUNT (0x0001)
+#define FILTER_NORMAL_ACCOUNT (0x0002)
+// #define FILTER_PROXY_ACCOUNT (0x0004)
+#define FILTER_INTERDOMAIN_TRUST_ACCOUNT (0x0008)
+#define FILTER_WORKSTATION_TRUST_ACCOUNT (0x0010)
+#define FILTER_SERVER_TRUST_ACCOUNT (0x0020)
+
+//
+// bit masks for the NetUserGetLocalGroups flags
+//
+#define LG_INCLUDE_INDIRECT (0x0001)
+
+//
+// Bit masks for field usri2_auth_flags of USER_INFO_2.
+//
+
+#define AF_OP_PRINT 0x1
+#define AF_OP_COMM 0x2
+#define AF_OP_SERVER 0x4
+#define AF_OP_ACCOUNTS 0x8
+#define AF_SETTABLE_BITS (AF_OP_PRINT | AF_OP_COMM | \
+ AF_OP_SERVER | AF_OP_ACCOUNTS)
+
+//
+// UAS role manifests under NETLOGON
+//
+
+#define UAS_ROLE_STANDALONE 0
+#define UAS_ROLE_MEMBER 1
+#define UAS_ROLE_BACKUP 2
+#define UAS_ROLE_PRIMARY 3
+
+//
+// Values for ParmError for NetUserSetInfo.
+//
+
+#define USER_NAME_PARMNUM 1
+#define USER_PASSWORD_PARMNUM 3
+#define USER_PASSWORD_AGE_PARMNUM 4
+#define USER_PRIV_PARMNUM 5
+#define USER_HOME_DIR_PARMNUM 6
+#define USER_COMMENT_PARMNUM 7
+#define USER_FLAGS_PARMNUM 8
+#define USER_SCRIPT_PATH_PARMNUM 9
+#define USER_AUTH_FLAGS_PARMNUM 10
+#define USER_FULL_NAME_PARMNUM 11
+#define USER_USR_COMMENT_PARMNUM 12
+#define USER_PARMS_PARMNUM 13
+#define USER_WORKSTATIONS_PARMNUM 14
+#define USER_LAST_LOGON_PARMNUM 15
+#define USER_LAST_LOGOFF_PARMNUM 16
+#define USER_ACCT_EXPIRES_PARMNUM 17
+#define USER_MAX_STORAGE_PARMNUM 18
+#define USER_UNITS_PER_WEEK_PARMNUM 19
+#define USER_LOGON_HOURS_PARMNUM 20
+#define USER_PAD_PW_COUNT_PARMNUM 21
+#define USER_NUM_LOGONS_PARMNUM 22
+#define USER_LOGON_SERVER_PARMNUM 23
+#define USER_COUNTRY_CODE_PARMNUM 24
+#define USER_CODE_PAGE_PARMNUM 25
+#define USER_PRIMARY_GROUP_PARMNUM 51
+#define USER_PROFILE 52 // ?? Delete when convenient
+#define USER_PROFILE_PARMNUM 52
+#define USER_HOME_DIR_DRIVE_PARMNUM 53
+
+//
+// the new infolevel counterparts of the old info level + parmnum
+//
+
+#define USER_NAME_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_NAME_PARMNUM)
+#define USER_PASSWORD_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_PARMNUM)
+#define USER_PASSWORD_AGE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_PASSWORD_AGE_PARMNUM)
+#define USER_PRIV_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_PRIV_PARMNUM)
+#define USER_HOME_DIR_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_PARMNUM)
+#define USER_COMMENT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_COMMENT_PARMNUM)
+#define USER_FLAGS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_FLAGS_PARMNUM)
+#define USER_SCRIPT_PATH_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_SCRIPT_PATH_PARMNUM)
+#define USER_AUTH_FLAGS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_AUTH_FLAGS_PARMNUM)
+#define USER_FULL_NAME_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_FULL_NAME_PARMNUM)
+#define USER_USR_COMMENT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_USR_COMMENT_PARMNUM)
+#define USER_PARMS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_PARMS_PARMNUM)
+#define USER_WORKSTATIONS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_WORKSTATIONS_PARMNUM)
+#define USER_LAST_LOGON_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGON_PARMNUM)
+#define USER_LAST_LOGOFF_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_LAST_LOGOFF_PARMNUM)
+#define USER_ACCT_EXPIRES_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_ACCT_EXPIRES_PARMNUM)
+#define USER_MAX_STORAGE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_MAX_STORAGE_PARMNUM)
+#define USER_UNITS_PER_WEEK_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_UNITS_PER_WEEK_PARMNUM)
+#define USER_LOGON_HOURS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_LOGON_HOURS_PARMNUM)
+#define USER_PAD_PW_COUNT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_PAD_PW_COUNT_PARMNUM)
+#define USER_NUM_LOGONS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_NUM_LOGONS_PARMNUM)
+#define USER_LOGON_SERVER_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_LOGON_SERVER_PARMNUM)
+#define USER_COUNTRY_CODE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_COUNTRY_CODE_PARMNUM)
+#define USER_CODE_PAGE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_CODE_PAGE_PARMNUM)
+#define USER_PRIMARY_GROUP_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_PRIMARY_GROUP_PARMNUM)
+#define USER_POSIX_ID_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_POSIX_ID_PARMNUM)
+#define USER_HOME_DIR_DRIVE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + USER_HOME_DIR_DRIVE_PARMNUM)
+
+//
+// For SetInfo call (parmnum 0) when password change not required
+//
+
+#define NULL_USERSETINFO_PASSWD " "
+
+#define TIMEQ_FOREVER ((unsigned long) -1L)
+#define USER_MAXSTORAGE_UNLIMITED ((unsigned long) -1L)
+#define USER_NO_LOGOFF ((unsigned long) -1L)
+#define UNITS_PER_DAY 24
+#define UNITS_PER_WEEK UNITS_PER_DAY * 7
+
+//
+// Privilege levels (USER_INFO_X field usriX_priv (X = 0/1)).
+//
+
+#define USER_PRIV_MASK 0x3
+#define USER_PRIV_GUEST 0
+#define USER_PRIV_USER 1
+#define USER_PRIV_ADMIN 2
+
+//
+// user modals related defaults
+//
+
+#define MAX_PASSWD_LEN PWLEN
+#define DEF_MIN_PWLEN 6
+#define DEF_PWUNIQUENESS 5
+#define DEF_MAX_PWHIST 8
+
+#define DEF_MAX_PWAGE TIMEQ_FOREVER // forever
+#define DEF_MIN_PWAGE (unsigned long) 0L // 0 days
+#define DEF_FORCE_LOGOFF (unsigned long) 0xffffffff // never
+#define DEF_MAX_BADPW 0 // no limit
+#define ONE_DAY (unsigned long) 01*24*3600 // 01 day
+
+//
+// User Logon Validation (codes returned)
+//
+
+#define VALIDATED_LOGON 0
+#define PASSWORD_EXPIRED 2
+#define NON_VALIDATED_LOGON 3
+
+#define VALID_LOGOFF 1
+
+//
+// parmnum manifests for user modals
+//
+
+#define MODALS_MIN_PASSWD_LEN_PARMNUM 1
+#define MODALS_MAX_PASSWD_AGE_PARMNUM 2
+#define MODALS_MIN_PASSWD_AGE_PARMNUM 3
+#define MODALS_FORCE_LOGOFF_PARMNUM 4
+#define MODALS_PASSWD_HIST_LEN_PARMNUM 5
+#define MODALS_ROLE_PARMNUM 6
+#define MODALS_PRIMARY_PARMNUM 7
+#define MODALS_DOMAIN_NAME_PARMNUM 8
+#define MODALS_DOMAIN_ID_PARMNUM 9
+#define MODALS_LOCKOUT_DURATION_PARMNUM 10
+#define MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM 11
+#define MODALS_LOCKOUT_THRESHOLD_PARMNUM 12
+
+//
+// the new infolevel counterparts of the old info level + parmnum
+//
+
+#define MODALS_MIN_PASSWD_LEN_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_LEN_PARMNUM)
+#define MODALS_MAX_PASSWD_AGE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + MODALS_MAX_PASSWD_AGE_PARMNUM)
+#define MODALS_MIN_PASSWD_AGE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + MODALS_MIN_PASSWD_AGE_PARMNUM)
+#define MODALS_FORCE_LOGOFF_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + MODALS_FORCE_LOGOFF_PARMNUM)
+#define MODALS_PASSWD_HIST_LEN_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + MODALS_PASSWD_HIST_LEN_PARMNUM)
+#define MODALS_ROLE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + MODALS_ROLE_PARMNUM)
+#define MODALS_PRIMARY_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + MODALS_PRIMARY_PARMNUM)
+#define MODALS_DOMAIN_NAME_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_NAME_PARMNUM)
+#define MODALS_DOMAIN_ID_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + MODALS_DOMAIN_ID_PARMNUM)
+
+#endif // _LMUSER_
+
+//
+// Group Class
+//
+
+#ifndef _LMGROUP_
+#define _LMGROUP_
+
+//
+// Function Prototypes
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetGroupAdd (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetGroupAddUser (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR GroupName,
+ IN LPCWSTR username
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetGroupEnum (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetGroupGetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetGroupSetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetGroupDel (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetGroupDelUser (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR GroupName,
+ IN LPCWSTR Username
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetGroupGetUsers (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD ResumeHandle
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetGroupSetUsers (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN DWORD level,
+ IN LPBYTE buf,
+ IN DWORD totalentries
+ );
+
+//
+// Data Structures - Group
+//
+
+typedef struct _GROUP_INFO_0 {
+ LPWSTR grpi0_name;
+}GROUP_INFO_0, *PGROUP_INFO_0, *LPGROUP_INFO_0;
+
+typedef struct _GROUP_INFO_1 {
+ LPWSTR grpi1_name;
+ LPWSTR grpi1_comment;
+}GROUP_INFO_1, *PGROUP_INFO_1, *LPGROUP_INFO_1;
+
+typedef struct _GROUP_INFO_2 {
+ LPWSTR grpi2_name;
+ LPWSTR grpi2_comment;
+ DWORD grpi2_group_id;
+ DWORD grpi2_attributes;
+}GROUP_INFO_2, *PGROUP_INFO_2;
+
+typedef struct _GROUP_INFO_1002 {
+ LPWSTR grpi1002_comment;
+} GROUP_INFO_1002, *PGROUP_INFO_1002, *LPGROUP_INFO_1002;
+
+typedef struct _GROUP_INFO_1005 {
+ DWORD grpi1005_attributes;
+} GROUP_INFO_1005, *PGROUP_INFO_1005, *LPGROUP_INFO_1005;
+
+
+typedef struct _GROUP_USERS_INFO_0 {
+ LPWSTR grui0_name;
+} GROUP_USERS_INFO_0, *PGROUP_USERS_INFO_0, *LPGROUP_USERS_INFO_0;
+
+typedef struct _GROUP_USERS_INFO_1 {
+ LPWSTR grui1_name;
+ DWORD grui1_attributes;
+} GROUP_USERS_INFO_1, *PGROUP_USERS_INFO_1, *LPGROUP_USERS_INFO_1;
+
+//
+// Special Values and Constants - Group
+//
+
+#define GROUPIDMASK 0x8000 // MSB set if uid refers
+ // to a group
+
+//
+// Predefined group for all normal users, administrators and guests
+// LOCAL is a special group for pinball local security.
+//
+
+#define GROUP_SPECIALGRP_USERS L"USERS"
+#define GROUP_SPECIALGRP_ADMINS L"ADMINS"
+#define GROUP_SPECIALGRP_GUESTS L"GUESTS"
+#define GROUP_SPECIALGRP_LOCAL L"LOCAL"
+
+//
+// parmnum manifests for SetInfo calls (only comment is settable)
+//
+
+#define GROUP_ALL_PARMNUM 0
+#define GROUP_NAME_PARMNUM 1
+#define GROUP_COMMENT_PARMNUM 2
+#define GROUP_ATTRIBUTES_PARMNUM 3
+
+//
+// the new infolevel counterparts of the old info level + parmnum
+//
+
+#define GROUP_ALL_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM)
+#define GROUP_NAME_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM)
+#define GROUP_COMMENT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM)
+#define GROUP_ATTRIBUTES_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM)
+#define GROUP_POSIX_ID_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + GROUP_POSIX_ID_PARMNUM)
+
+#endif // _LMGROUP_
+
+//
+// LocalGroup Class
+//
+
+#ifndef _LMLOCALGROUP_
+#define _LMLOCALGROUP_
+
+//
+// Function Prototypes
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupAdd (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupAddMember (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN PSID membersid
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupEnum (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resumehandle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupGetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupSetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupDel (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupDelMember (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN PSID membersid
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupGetMembers (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR localgroupname,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resumehandle
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupSetMembers (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN DWORD level,
+ IN LPBYTE buf,
+ IN DWORD totalentries
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupAddMembers (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN DWORD level,
+ IN LPBYTE buf,
+ IN DWORD totalentries
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetLocalGroupDelMembers (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR groupname,
+ IN DWORD level,
+ IN LPBYTE buf,
+ IN DWORD totalentries
+ );
+
+//
+// Data Structures - LocalGroup
+//
+
+typedef struct _LOCALGROUP_INFO_0 {
+ LPWSTR lgrpi0_name;
+}LOCALGROUP_INFO_0, *PLOCALGROUP_INFO_0, *LPLOCALGROUP_INFO_0;
+
+typedef struct _LOCALGROUP_INFO_1 {
+ LPWSTR lgrpi1_name;
+ LPWSTR lgrpi1_comment;
+}LOCALGROUP_INFO_1, *PLOCALGROUP_INFO_1, *LPLOCALGROUP_INFO_1;
+
+typedef struct _LOCALGROUP_INFO_1002 {
+ LPWSTR lgrpi1002_comment;
+}LOCALGROUP_INFO_1002, *PLOCALGROUP_INFO_1002, *LPLOCALGROUP_INFO_1002;
+
+typedef struct _LOCALGROUP_MEMBERS_INFO_0 {
+ PSID lgrmi0_sid;
+} LOCALGROUP_MEMBERS_INFO_0, *PLOCALGROUP_MEMBERS_INFO_0,
+ *LPLOCALGROUP_MEMBERS_INFO_0;
+
+typedef struct _LOCALGROUP_MEMBERS_INFO_1 {
+ PSID lgrmi1_sid;
+ SID_NAME_USE lgrmi1_sidusage;
+ LPWSTR lgrmi1_name;
+} LOCALGROUP_MEMBERS_INFO_1, *PLOCALGROUP_MEMBERS_INFO_1,
+ *LPLOCALGROUP_MEMBERS_INFO_1;
+
+typedef struct _LOCALGROUP_MEMBERS_INFO_2 {
+ PSID lgrmi2_sid;
+ SID_NAME_USE lgrmi2_sidusage;
+ LPWSTR lgrmi2_domainandname;
+} LOCALGROUP_MEMBERS_INFO_2, *PLOCALGROUP_MEMBERS_INFO_2,
+ *LPLOCALGROUP_MEMBERS_INFO_2;
+
+typedef struct _LOCALGROUP_MEMBERS_INFO_3 {
+ LPWSTR lgrmi3_domainandname;
+} LOCALGROUP_MEMBERS_INFO_3, *PLOCALGROUP_MEMBERS_INFO_3,
+ *LPLOCALGROUP_MEMBERS_INFO_3;
+
+typedef struct _LOCALGROUP_USERS_INFO_0 {
+ LPWSTR lgrui0_name;
+} LOCALGROUP_USERS_INFO_0, *PLOCALGROUP_USERS_INFO_0,
+ *LPLOCALGROUP_USERS_INFO_0;
+
+
+#define LOCALGROUP_NAME_PARMNUM 1
+#define LOCALGROUP_COMMENT_PARMNUM 2
+
+//
+// Display Information APIs
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetQueryDisplayInformation(
+ IN LPCWSTR ServerName OPTIONAL,
+ IN DWORD Level,
+ IN DWORD Index,
+ IN DWORD EntriesRequested,
+ IN DWORD PreferredMaximumLength,
+ OUT LPDWORD ReturnedEntryCount,
+ OUT PVOID *SortedBuffer );
+
+NET_API_STATUS NET_API_FUNCTION
+NetGetDisplayInformationIndex(
+ IN LPCWSTR ServerName OPTIONAL,
+ IN DWORD Level,
+ IN LPCWSTR Prefix,
+ OUT LPDWORD Index );
+
+//
+// QueryDisplayInformation levels
+
+typedef struct _NET_DISPLAY_USER {
+ LPWSTR usri1_name;
+ LPWSTR usri1_comment;
+ DWORD usri1_flags;
+ LPWSTR usri1_full_name;
+ DWORD usri1_user_id;
+ DWORD usri1_next_index;
+} NET_DISPLAY_USER, *PNET_DISPLAY_USER;
+
+typedef struct _NET_DISPLAY_MACHINE {
+ LPWSTR usri2_name;
+ LPWSTR usri2_comment;
+ DWORD usri2_flags;
+ DWORD usri2_user_id;
+ DWORD usri2_next_index;
+} NET_DISPLAY_MACHINE, *PNET_DISPLAY_MACHINE;
+
+typedef struct _NET_DISPLAY_GROUP {
+ LPWSTR grpi3_name;
+ LPWSTR grpi3_comment;
+ DWORD grpi3_group_id;
+ DWORD grpi3_attributes;
+ DWORD grpi3_next_index;
+} NET_DISPLAY_GROUP, *PNET_DISPLAY_GROUP;
+
+#endif // _LMLOCALGROUP_
+
+//
+// Access Class
+//
+
+#ifndef _LMACCESS_
+#define _LMACCESS_
+
+
+
+//
+// Function Prototypes - Access
+//
+//
+// The NetAccess APIs are only available to downlevel
+//
+
+#define NetAccessAdd RxNetAccessAdd
+
+NET_API_STATUS NET_API_FUNCTION
+NetAccessAdd (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+#define NetAccessEnum RxNetAccessEnum
+
+NET_API_STATUS NET_API_FUNCTION
+NetAccessEnum (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR BasePath,
+ IN DWORD Recursive,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle OPTIONAL
+ );
+
+#define NetAccessGetInfo RxNetAccessGetInfo
+
+NET_API_STATUS NET_API_FUNCTION
+NetAccessGetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR resource,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+#define NetAccessSetInfo RxNetAccessSetInfo
+
+NET_API_STATUS NET_API_FUNCTION
+NetAccessSetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR resource,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+#define NetAccessDel RxNetAccessDel
+
+NET_API_STATUS NET_API_FUNCTION
+NetAccessDel (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR resource
+ );
+
+#define NetAccessGetUserPerms RxNetAccessGetUserPerms
+
+NET_API_STATUS NET_API_FUNCTION
+NetAccessGetUserPerms (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR UGname,
+ IN LPCWSTR resource,
+ OUT LPDWORD Perms
+ );
+
+//
+// Data Structures - Access
+//
+
+typedef struct _ACCESS_INFO_0 {
+ LPWSTR acc0_resource_name;
+}ACCESS_INFO_0, *PACCESS_INFO_0, *LPACCESS_INFO_0;
+
+typedef struct _ACCESS_INFO_1 {
+ LPWSTR acc1_resource_name;
+ DWORD acc1_attr;
+ DWORD acc1_count;
+}ACCESS_INFO_1, *PACCESS_INFO_1, *LPACCESS_INFO_1;
+
+typedef struct _ACCESS_INFO_1002 {
+ DWORD acc1002_attr;
+} ACCESS_INFO_1002, *PACCESS_INFO_1002, *LPACCESS_INFO_1002;
+
+
+typedef struct _ACCESS_LIST {
+ LPWSTR acl_ugname;
+ DWORD acl_access;
+}ACCESS_LIST, *PACCESS_LIST, *LPACCESS_LIST;
+
+//
+// Special Values and Constants - Access
+//
+
+//
+// Maximum number of permission entries for each resource.
+//
+
+#define MAXPERMENTRIES 64
+
+//
+// Bit values for the access permissions. ACCESS_ALL is a handy
+// way to specify maximum permissions. These are used in
+// acl_access field of access_list structures.
+//
+
+#define ACCESS_NONE 0
+#define ACCESS_ALL ( ACCESS_READ | \
+ ACCESS_WRITE | \
+ ACCESS_CREATE | \
+ ACCESS_EXEC | \
+ ACCESS_DELETE | \
+ ACCESS_ATRIB | \
+ ACCESS_PERM \
+ )
+
+#define ACCESS_READ 0x01
+#define ACCESS_WRITE 0x02
+#define ACCESS_CREATE 0x04
+#define ACCESS_EXEC 0x08
+#define ACCESS_DELETE 0x10
+#define ACCESS_ATRIB 0x20
+#define ACCESS_PERM 0x40
+
+#define ACCESS_GROUP 0x8000
+
+//
+// Bit values for the acc1_attr field of the ACCESS_INFO_1 structure.
+//
+
+#define ACCESS_AUDIT 0x1
+
+#define ACCESS_SUCCESS_OPEN 0x10
+#define ACCESS_SUCCESS_WRITE 0x20
+#define ACCESS_SUCCESS_DELETE 0x40
+#define ACCESS_SUCCESS_ACL 0x80
+#define ACCESS_SUCCESS_MASK 0xF0
+
+#define ACCESS_FAIL_OPEN 0x100
+#define ACCESS_FAIL_WRITE 0x200
+#define ACCESS_FAIL_DELETE 0x400
+#define ACCESS_FAIL_ACL 0x800
+#define ACCESS_FAIL_MASK 0xF00
+
+#define ACCESS_FAIL_SHIFT 4
+
+//
+// Parmnum value for NetAccessSetInfo.
+//
+
+#define ACCESS_RESOURCE_NAME_PARMNUM 1
+#define ACCESS_ATTR_PARMNUM 2
+#define ACCESS_COUNT_PARMNUM 3
+#define ACCESS_ACCESS_LIST_PARMNUM 4
+
+//
+// the new infolevel counterparts of the old info level + parmnum
+//
+
+#define ACCESS_RESOURCE_NAME_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + ACCESS_RESOURCE_NAME_PARMNUM)
+#define ACCESS_ATTR_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + ACCESS_ATTR_PARMNUM)
+#define ACCESS_COUNT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + ACCESS_COUNT_PARMNUM)
+#define ACCESS_ACCESS_LIST_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + ACCESS_ACCESS_LIST_PARMNUM)
+
+//
+// ACCESS_LETTERS defines a letter for each bit position in
+// the acl_access field of struct access_list. Note that some
+// bits have a corresponding letter of ' ' (space).
+//
+
+#define ACCESS_LETTERS "RWCXDAP "
+
+#endif // _LMACCESS_
+
+//
+// Domain Class
+//
+
+#ifndef _LMDOMAIN_
+#define _LMDOMAIN_
+
+//
+// Function Prototypes - Domain
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetGetDCName (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR domainname OPTIONAL,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetGetAnyDCName (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR domainname OPTIONAL,
+ OUT LPBYTE *bufptr
+ );
+
+
+NET_API_STATUS NET_API_FUNCTION
+I_NetLogonControl(
+ IN LPCWSTR ServerName OPTIONAL,
+ IN DWORD FunctionCode,
+ IN DWORD QueryLevel,
+ OUT LPBYTE *Buffer
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+I_NetLogonControl2(
+ IN LPCWSTR ServerName OPTIONAL,
+ IN DWORD FunctionCode,
+ IN DWORD QueryLevel,
+ IN LPBYTE Data,
+ OUT LPBYTE *Buffer
+ );
+
+#ifndef _NTDEF_
+typedef LONG NTSTATUS, *PNTSTATUS;
+#endif
+
+NTSTATUS
+NetEnumerateTrustedDomains (
+ IN LPWSTR ServerName OPTIONAL,
+ OUT LPWSTR *DomainNames
+ );
+
+
+
+//
+// Special Values and Constants - Domain
+//
+
+//
+// FunctionCode values for I_NetLogonControl.
+//
+// NOTE : if you change the following NETLOGON_CONTROL_* values,
+// change them in net\svcdlls\logonsrv\logon.idl file also.
+//
+
+#define NETLOGON_CONTROL_QUERY 1 // No-op: just query
+#define NETLOGON_CONTROL_REPLICATE 2 // Force replicate on BDC
+#define NETLOGON_CONTROL_SYNCHRONIZE 3 // Force synchronize on BDC
+#define NETLOGON_CONTROL_PDC_REPLICATE 4 // Force PDC to broadcast change
+#define NETLOGON_CONTROL_REDISCOVER 5 // Force to re-discover trusted domain DCs
+#define NETLOGON_CONTROL_TC_QUERY 6 // Query status of specified trusted channel status
+#define NETLOGON_CONTROL_TRANSPORT_NOTIFY 7 // Notify netlogon that a new transport has come online
+#define NETLOGON_CONTROL_FIND_USER 8 // Find named user in a trusted domain
+
+// Debug function codes
+
+#define NETLOGON_CONTROL_UNLOAD_NETLOGON_DLL 0xFFFB
+#define NETLOGON_CONTROL_BACKUP_CHANGE_LOG 0xFFFC
+#define NETLOGON_CONTROL_TRUNCATE_LOG 0xFFFD
+#define NETLOGON_CONTROL_SET_DBFLAG 0xFFFE
+#define NETLOGON_CONTROL_BREAKPOINT 0xFFFF
+
+//
+// Query level 1 for I_NetLogonControl
+//
+
+typedef struct _NETLOGON_INFO_1 {
+ DWORD netlog1_flags;
+ NET_API_STATUS netlog1_pdc_connection_status;
+} NETLOGON_INFO_1, *PNETLOGON_INFO_1;
+
+typedef struct _NETLOGON_INFO_2 {
+ DWORD netlog2_flags;
+ NET_API_STATUS netlog2_pdc_connection_status;
+#ifdef MIDL_PASS
+ [string] wchar_t * netlog2_trusted_dc_name;
+#else
+ LPWSTR netlog2_trusted_dc_name;
+#endif // MIDL_PASS
+ NET_API_STATUS netlog2_tc_connection_status;
+} NETLOGON_INFO_2, *PNETLOGON_INFO_2;
+
+typedef struct _NETLOGON_INFO_3 {
+ DWORD netlog3_flags;
+ DWORD netlog3_logon_attempts;
+ DWORD netlog3_reserved1;
+ DWORD netlog3_reserved2;
+ DWORD netlog3_reserved3;
+ DWORD netlog3_reserved4;
+ DWORD netlog3_reserved5;
+} NETLOGON_INFO_3, *PNETLOGON_INFO_3;
+
+typedef struct _NETLOGON_INFO_4 {
+#ifdef MIDL_PASS
+ [string] wchar_t * netlog4_trusted_dc_name;
+ [string] wchar_t * netlog4_trusted_domain_name;
+#else
+ LPWSTR netlog4_trusted_dc_name;
+ LPWSTR netlog4_trusted_domain_name;
+#endif // MIDL_PASS
+} NETLOGON_INFO_4, *PNETLOGON_INFO_4;
+
+//
+// Values of netlog1_flags
+//
+
+#define NETLOGON_REPLICATION_NEEDED 0x01 // Database is out of date
+#define NETLOGON_REPLICATION_IN_PROGRESS 0x02 // Replication is happening now
+#define NETLOGON_FULL_SYNC_REPLICATION 0x04 // full sync replication required/progress
+#define NETLOGON_REDO_NEEDED 0x08 // Redo of previous replication needed
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMDOMAIN_
diff --git a/public/sdk/inc/lmalert.h b/public/sdk/inc/lmalert.h
new file mode 100644
index 000000000..1aef3f722
--- /dev/null
+++ b/public/sdk/inc/lmalert.h
@@ -0,0 +1,155 @@
+/*++ BUILD Version: 0003 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ alert.h
+
+Abstract:
+
+ This file contains structures for communication with the Alerter
+ service.
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include LmCons.H before this file, since this file depends
+ on values defined in LmCons.H.
+
+ ALERT.H includes ALERTMSG.H which defines the alert message numbers
+
+
+--*/
+
+
+#ifndef _ALERT_
+#define _ALERT_
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Function Prototypes
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetAlertRaise(
+ IN LPCWSTR AlertEventName,
+ IN LPVOID Buffer,
+ IN DWORD BufferSize
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetAlertRaiseEx(
+ IN LPCWSTR AlertEventName,
+ IN LPVOID VariableInfo,
+ IN DWORD VariableInfoSize,
+ IN LPCWSTR ServiceName
+ );
+
+
+//
+// Data Structures
+//
+
+typedef struct _STD_ALERT {
+ DWORD alrt_timestamp;
+ WCHAR alrt_eventname[EVLEN + 1];
+ WCHAR alrt_servicename[SNLEN + 1];
+}STD_ALERT, *PSTD_ALERT, *LPSTD_ALERT;
+
+typedef struct _ADMIN_OTHER_INFO {
+ DWORD alrtad_errcode;
+ DWORD alrtad_numstrings;
+}ADMIN_OTHER_INFO, *PADMIN_OTHER_INFO, *LPADMIN_OTHER_INFO;
+
+typedef struct _ERRLOG_OTHER_INFO {
+ DWORD alrter_errcode;
+ DWORD alrter_offset;
+}ERRLOG_OTHER_INFO, *PERRLOG_OTHER_INFO, *LPERRLOG_OTHER_INFO;
+
+typedef struct _PRINT_OTHER_INFO {
+ DWORD alrtpr_jobid;
+ DWORD alrtpr_status;
+ DWORD alrtpr_submitted;
+ DWORD alrtpr_size;
+}PRINT_OTHER_INFO, *PPRINT_OTHER_INFO, *LPPRINT_OTHER_INFO;
+
+typedef struct _USER_OTHER_INFO {
+ DWORD alrtus_errcode;
+ DWORD alrtus_numstrings;
+}USER_OTHER_INFO, *PUSER_OTHER_INFO, *LPUSER_OTHER_INFO;
+
+//
+// Special Values and Constants
+//
+
+//
+// Name of mailslot to send alert notifications
+//
+#define ALERTER_MAILSLOT L"\\\\.\\MAILSLOT\\Alerter"
+
+//
+// The following macro gives a pointer to the other_info data.
+// It takes an alert structure and returns a pointer to structure
+// beyond the standard portion.
+//
+
+#define ALERT_OTHER_INFO(x) ((LPBYTE)(x) + sizeof(STD_ALERT))
+
+//
+// The following macro gives a pointer to the variable-length data.
+// It takes a pointer to one of the other-info structs and returns a
+// pointer to the variable data portion.
+//
+
+#define ALERT_VAR_DATA(p) ((LPBYTE)(p) + sizeof(*p))
+
+//
+// Names of standard Microsoft-defined alert events.
+//
+
+#define ALERT_PRINT_EVENT L"PRINTING"
+#define ALERT_MESSAGE_EVENT L"MESSAGE"
+#define ALERT_ERRORLOG_EVENT L"ERRORLOG"
+#define ALERT_ADMIN_EVENT L"ADMIN"
+#define ALERT_USER_EVENT L"USER"
+
+//
+// Bitmap masks for prjob_status field of PRINTJOB.
+//
+
+// 2-7 bits also used in device status
+
+#define PRJOB_QSTATUS 0x3 // Bits 0,1
+#define PRJOB_DEVSTATUS 0x1fc // 2-8 bits
+#define PRJOB_COMPLETE 0x4 // Bit 2
+#define PRJOB_INTERV 0x8 // Bit 3
+#define PRJOB_ERROR 0x10 // Bit 4
+#define PRJOB_DESTOFFLINE 0x20 // Bit 5
+#define PRJOB_DESTPAUSED 0x40 // Bit 6
+#define PRJOB_NOTIFY 0x80 // BIT 7
+#define PRJOB_DESTNOPAPER 0x100 // BIT 8
+#define PRJOB_DELETED 0x8000 // BIT 15
+
+//
+// Values of PRJOB_QSTATUS bits in prjob_status field of PRINTJOB.
+//
+
+#define PRJOB_QS_QUEUED 0
+#define PRJOB_QS_PAUSED 1
+#define PRJOB_QS_SPOOLING 2
+#define PRJOB_QS_PRINTING 3
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _ALERT_
diff --git a/public/sdk/inc/lmapibuf.h b/public/sdk/inc/lmapibuf.h
new file mode 100644
index 000000000..4cde16ef8
--- /dev/null
+++ b/public/sdk/inc/lmapibuf.h
@@ -0,0 +1,74 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmapibuf.h
+
+Abstract:
+
+ This file contains information about NetApiBuffer APIs.
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include LMCONS.H before this file, since this file depends
+ on values defined in LMCONS.H.
+
+--*/
+
+#ifndef _LMAPIBUF_
+#define _LMAPIBUF_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Function Prototypes
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetApiBufferAllocate(
+ IN DWORD ByteCount,
+ OUT LPVOID * Buffer
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetApiBufferFree (
+ IN LPVOID Buffer
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetApiBufferReallocate(
+ IN LPVOID OldBuffer OPTIONAL,
+ IN DWORD NewByteCount,
+ OUT LPVOID * NewBuffer
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetApiBufferSize(
+ IN LPVOID Buffer,
+ OUT LPDWORD ByteCount
+ );
+
+
+//
+// The following private function will go away eventually.
+// Call NetApiBufferAllocate instead.
+//
+NET_API_STATUS NET_API_FUNCTION
+NetapipBufferAllocate ( // Internal Function
+ IN DWORD ByteCount,
+ OUT LPVOID * Buffer
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMAPIBUF_
diff --git a/public/sdk/inc/lmat.h b/public/sdk/inc/lmat.h
new file mode 100644
index 000000000..f8babb393
--- /dev/null
+++ b/public/sdk/inc/lmat.h
@@ -0,0 +1,137 @@
+/*++ BUILD Version: 0006 // Increment this if a change has global effects
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ lmat.h
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the schedule service API-s.
+
+Environment:
+
+ User Mode - Win32
+ Portable to any flat, 32-bit environment. (Uses Win32 typedefs.)
+ Requires ANSI C extensions: slash-slash comments, long external names.
+
+Notes:
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+Revision History:
+
+--*/
+
+#ifndef _LMAT_
+#define _LMAT_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// The following bits are used with Flags field in structures below.
+//
+
+//
+// Do we exec programs for this job periodically (/EVERY switch)
+// or one time (/NEXT switch).
+//
+#define JOB_RUN_PERIODICALLY 0x01 // set if EVERY
+
+
+//
+// Was there an error last time we tried to exec a program on behalf of
+// this job.
+// This flag is meaningfull on output only!
+//
+#define JOB_EXEC_ERROR 0x02 // set if error
+
+//
+// Will this job run today or tomorrow.
+// This flag is meaningfull on output only!
+//
+#define JOB_RUNS_TODAY 0x04 // set if today
+
+//
+// Add current day of the month to DaysOfMonth input.
+// This flag is meaningfull on input only!
+//
+#define JOB_ADD_CURRENT_DATE 0x08 // set if to add current date
+
+
+//
+// Will this job be run interactively or not. Windows NT 3.1 do not
+// know about this bit, i.e. they submit interactive jobs only.
+//
+#define JOB_NONINTERACTIVE 0x10 // set for noninteractive
+
+
+#define JOB_INPUT_FLAGS ( JOB_RUN_PERIODICALLY | \
+ JOB_ADD_CURRENT_DATE | \
+ JOB_NONINTERACTIVE )
+
+#define JOB_OUTPUT_FLAGS ( JOB_RUN_PERIODICALLY | \
+ JOB_EXEC_ERROR | \
+ JOB_RUNS_TODAY | \
+ JOB_NONINTERACTIVE )
+
+
+
+typedef struct _AT_INFO {
+ DWORD JobTime;
+ DWORD DaysOfMonth;
+ UCHAR DaysOfWeek;
+ UCHAR Flags;
+ LPWSTR Command;
+} AT_INFO, *PAT_INFO, *LPAT_INFO;
+
+typedef struct _AT_ENUM {
+ DWORD JobId;
+ DWORD JobTime;
+ DWORD DaysOfMonth;
+ UCHAR DaysOfWeek;
+ UCHAR Flags;
+ LPWSTR Command;
+} AT_ENUM, *PAT_ENUM, *LPAT_ENUM;
+
+NET_API_STATUS NET_API_FUNCTION
+NetScheduleJobAdd(
+ IN LPCWSTR Servername OPTIONAL,
+ IN LPBYTE Buffer,
+ OUT LPDWORD JobId
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetScheduleJobDel(
+ IN LPCWSTR Servername OPTIONAL,
+ IN DWORD MinJobId,
+ IN DWORD MaxJobId
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetScheduleJobEnum(
+ IN LPCWSTR Servername OPTIONAL,
+ OUT LPBYTE * PointerToBuffer,
+ IN DWORD PrefferedMaximumLength,
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD TotalEntries,
+ IN OUT LPDWORD ResumeHandle
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetScheduleJobGetInfo(
+ IN LPCWSTR Servername OPTIONAL,
+ IN DWORD JobId,
+ OUT LPBYTE * PointerToBuffer
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMAT_
diff --git a/public/sdk/inc/lmaudit.h b/public/sdk/inc/lmaudit.h
new file mode 100644
index 000000000..2641c4f42
--- /dev/null
+++ b/public/sdk/inc/lmaudit.h
@@ -0,0 +1,398 @@
+/*++ BUILD Version: 0003 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmaudit.h
+
+Abstract:
+
+ This module defines the API function prototypes and data structures
+ for the following groups of NT API functions:
+ NetAudit
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+--*/
+
+#ifndef _LMAUDIT_
+#define _LMAUDIT_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _LMHLOGDEFINED_
+#define _LMHLOGDEFINED_
+
+typedef struct _HLOG {
+ DWORD time;
+ DWORD last_flags;
+ DWORD offset;
+ DWORD rec_offset;
+} HLOG, *PHLOG, *LPHLOG;
+
+#define LOGFLAGS_FORWARD 0
+#define LOGFLAGS_BACKWARD 0x1
+#define LOGFLAGS_SEEK 0x2
+
+#endif
+
+//
+// Function Prototypes - Audit
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetAuditClear (
+ IN LPCWSTR server OPTIONAL,
+ IN LPCWSTR backupfile OPTIONAL,
+ IN LPCWSTR service OPTIONAL // WARNING: buggy support before LM 2.0C!!
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetAuditRead (
+ IN LPCWSTR server OPTIONAL,
+ IN LPCWSTR service OPTIONAL, // WARNING: buggy support before LM 2.0C!!
+ IN LPHLOG auditloghandle,
+ IN DWORD offset,
+ IN LPDWORD reserved1 OPTIONAL,
+ IN DWORD reserved2,
+ IN DWORD offsetflag,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD bytesread,
+ OUT LPDWORD totalavailable
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetAuditWrite (
+ IN DWORD type,
+ IN LPBYTE buf,
+ IN DWORD numbytes,
+ IN LPCWSTR service OPTIONAL,
+ IN LPBYTE reserved OPTIONAL
+ );
+
+
+//
+// Data Structures - Audit
+//
+
+typedef struct _AUDIT_ENTRY {
+ DWORD ae_len;
+ DWORD ae_reserved;
+ DWORD ae_time;
+ DWORD ae_type;
+ DWORD ae_data_offset; /* Offset from beginning
+ address of audit_entry */
+ DWORD ae_data_size; // byte count of ae_data area (not incl pad).
+} AUDIT_ENTRY, *PAUDIT_ENTRY, *LPAUDIT_ENTRY;
+
+// BUGBUG: Temporary to let users ifdef on this struct layout.
+#define REVISED_AUDIT_ENTRY_STRUCT
+
+
+typedef struct _AE_SRVSTATUS {
+ DWORD ae_sv_status;
+} AE_SRVSTATUS, *PAE_SRVSTATUS, *LPAE_SRVSTATUS;
+
+typedef struct _AE_SESSLOGON {
+ DWORD ae_so_compname;
+ DWORD ae_so_username;
+ DWORD ae_so_privilege;
+} AE_SESSLOGON, *PAE_SESSLOGON, *LPAE_SESSLOGON;
+
+typedef struct _AE_SESSLOGOFF {
+ DWORD ae_sf_compname;
+ DWORD ae_sf_username;
+ DWORD ae_sf_reason;
+} AE_SESSLOGOFF, *PAE_SESSLOGOFF, *LPAE_SESSLOGOFF;
+
+typedef struct _AE_SESSPWERR {
+ DWORD ae_sp_compname;
+ DWORD ae_sp_username;
+} AE_SESSPWERR, *PAE_SESSPWERR, *LPAE_SESSPWERR;
+
+typedef struct _AE_CONNSTART {
+ DWORD ae_ct_compname;
+ DWORD ae_ct_username;
+ DWORD ae_ct_netname;
+ DWORD ae_ct_connid;
+} AE_CONNSTART, *PAE_CONNSTART, *LPAE_CONNSTART;
+
+typedef struct _AE_CONNSTOP {
+ DWORD ae_cp_compname;
+ DWORD ae_cp_username;
+ DWORD ae_cp_netname;
+ DWORD ae_cp_connid;
+ DWORD ae_cp_reason;
+} AE_CONNSTOP, *PAE_CONNSTOP, *LPAE_CONNSTOP;
+
+typedef struct _AE_CONNREJ {
+ DWORD ae_cr_compname;
+ DWORD ae_cr_username;
+ DWORD ae_cr_netname;
+ DWORD ae_cr_reason;
+} AE_CONNREJ, *PAE_CONNREJ, *LPAE_CONNREJ;
+
+typedef struct _AE_RESACCESS {
+ DWORD ae_ra_compname;
+ DWORD ae_ra_username;
+ DWORD ae_ra_resname;
+ DWORD ae_ra_operation;
+ DWORD ae_ra_returncode;
+ DWORD ae_ra_restype;
+ DWORD ae_ra_fileid;
+} AE_RESACCESS, *PAE_RESACCESS, *LPAE_RESACCESS;
+
+typedef struct _AE_RESACCESSREJ {
+ DWORD ae_rr_compname;
+ DWORD ae_rr_username;
+ DWORD ae_rr_resname;
+ DWORD ae_rr_operation;
+} AE_RESACCESSREJ, *PAE_RESACCESSREJ, *LPAE_RESACCESSREJ;
+
+typedef struct _AE_CLOSEFILE {
+ DWORD ae_cf_compname;
+ DWORD ae_cf_username;
+ DWORD ae_cf_resname;
+ DWORD ae_cf_fileid;
+ DWORD ae_cf_duration;
+ DWORD ae_cf_reason;
+} AE_CLOSEFILE, *PAE_CLOSEFILE, *LPAE_CLOSEFILE;
+
+typedef struct _AE_SERVICESTAT {
+ DWORD ae_ss_compname;
+ DWORD ae_ss_username;
+ DWORD ae_ss_svcname;
+ DWORD ae_ss_status;
+ DWORD ae_ss_code;
+ DWORD ae_ss_text;
+ DWORD ae_ss_returnval;
+} AE_SERVICESTAT, *PAE_SERVICESTAT, *LPAE_SERVICESTAT;
+
+typedef struct _AE_ACLMOD {
+ DWORD ae_am_compname;
+ DWORD ae_am_username;
+ DWORD ae_am_resname;
+ DWORD ae_am_action;
+ DWORD ae_am_datalen;
+} AE_ACLMOD, *PAE_ACLMOD, *LPAE_ACLMOD;
+
+typedef struct _AE_UASMOD {
+ DWORD ae_um_compname;
+ DWORD ae_um_username;
+ DWORD ae_um_resname;
+ DWORD ae_um_rectype;
+ DWORD ae_um_action;
+ DWORD ae_um_datalen;
+} AE_UASMOD, *PAE_UASMOD, *LPAE_UASMOD;
+
+typedef struct _AE_NETLOGON {
+ DWORD ae_no_compname;
+ DWORD ae_no_username;
+ DWORD ae_no_privilege;
+ DWORD ae_no_authflags;
+} AE_NETLOGON, *PAE_NETLOGON, *LPAE_NETLOGON;
+
+typedef struct _AE_NETLOGOFF {
+ DWORD ae_nf_compname;
+ DWORD ae_nf_username;
+ DWORD ae_nf_reserved1;
+ DWORD ae_nf_reserved2;
+} AE_NETLOGOFF, *PAE_NETLOGOFF, *LPAE_NETLOGOFF;
+
+typedef struct _AE_ACCLIM {
+ DWORD ae_al_compname;
+ DWORD ae_al_username;
+ DWORD ae_al_resname;
+ DWORD ae_al_limit;
+} AE_ACCLIM, *PAE_ACCLIM, *LPAE_ACCLIM;
+
+#define ACTION_LOCKOUT 00
+#define ACTION_ADMINUNLOCK 01
+
+typedef struct _AE_LOCKOUT {
+ DWORD ae_lk_compname; // Ptr to computername of client.
+ DWORD ae_lk_username; // Ptr to username of client (NULL
+ // if same as computername).
+ DWORD ae_lk_action; // Action taken on account:
+ // 0 means locked out, 1 means not.
+ DWORD ae_lk_bad_pw_count; // Bad password count at the time
+ // of lockout.
+} AE_LOCKOUT, *PAE_LOCKOUT, *LPAE_LOCKOUT;
+
+typedef struct _AE_GENERIC {
+ DWORD ae_ge_msgfile;
+ DWORD ae_ge_msgnum;
+ DWORD ae_ge_params;
+ DWORD ae_ge_param1;
+ DWORD ae_ge_param2;
+ DWORD ae_ge_param3;
+ DWORD ae_ge_param4;
+ DWORD ae_ge_param5;
+ DWORD ae_ge_param6;
+ DWORD ae_ge_param7;
+ DWORD ae_ge_param8;
+ DWORD ae_ge_param9;
+} AE_GENERIC, *PAE_GENERIC, *LPAE_GENERIC;
+
+//
+// Special Values and Constants - Audit
+//
+
+//
+// Audit entry types (field ae_type in audit_entry).
+//
+
+#define AE_SRVSTATUS 0
+#define AE_SESSLOGON 1
+#define AE_SESSLOGOFF 2
+#define AE_SESSPWERR 3
+#define AE_CONNSTART 4
+#define AE_CONNSTOP 5
+#define AE_CONNREJ 6
+#define AE_RESACCESS 7
+#define AE_RESACCESSREJ 8
+#define AE_CLOSEFILE 9
+#define AE_SERVICESTAT 11
+#define AE_ACLMOD 12
+#define AE_UASMOD 13
+#define AE_NETLOGON 14
+#define AE_NETLOGOFF 15
+#define AE_NETLOGDENIED 16
+#define AE_ACCLIMITEXCD 17
+#define AE_RESACCESS2 18
+#define AE_ACLMODFAIL 19
+#define AE_LOCKOUT 20
+#define AE_GENERIC_TYPE 21
+//
+// Values for ae_ss_status field of ae_srvstatus.
+//
+
+#define AE_SRVSTART 0
+#define AE_SRVPAUSED 1
+#define AE_SRVCONT 2
+#define AE_SRVSTOP 3
+
+//
+// Values for ae_so_privilege field of ae_sesslogon.
+//
+
+#define AE_GUEST 0
+#define AE_USER 1
+#define AE_ADMIN 2
+
+//
+// Values for various ae_XX_reason fields.
+//
+
+#define AE_NORMAL 0
+#define AE_USERLIMIT 0
+#define AE_GENERAL 0
+#define AE_ERROR 1
+#define AE_SESSDIS 1
+#define AE_BADPW 1
+#define AE_AUTODIS 2
+#define AE_UNSHARE 2
+#define AE_ADMINPRIVREQD 2
+#define AE_ADMINDIS 3
+#define AE_NOACCESSPERM 3
+#define AE_ACCRESTRICT 4
+
+#define AE_NORMAL_CLOSE 0
+#define AE_SES_CLOSE 1
+#define AE_ADMIN_CLOSE 2
+
+//
+// Values for xx_subreason fields.
+//
+
+#define AE_LIM_UNKNOWN 0
+#define AE_LIM_LOGONHOURS 1
+#define AE_LIM_EXPIRED 2
+#define AE_LIM_INVAL_WKSTA 3
+#define AE_LIM_DISABLED 4
+#define AE_LIM_DELETED 5
+
+//
+// Values for xx_action fields
+//
+
+#define AE_MOD 0
+#define AE_DELETE 1
+#define AE_ADD 2
+
+//
+// Types of UAS record for um_rectype field
+//
+
+#define AE_UAS_USER 0
+#define AE_UAS_GROUP 1
+#define AE_UAS_MODALS 2
+
+//
+// Bitmasks for auditing events
+//
+// The parentheses around the hex constants broke h_to_inc
+// and have been purged from the face of the earth.
+//
+
+#define SVAUD_SERVICE 0x1
+#define SVAUD_GOODSESSLOGON 0x6
+#define SVAUD_BADSESSLOGON 0x18
+#define SVAUD_SESSLOGON (SVAUD_GOODSESSLOGON | SVAUD_BADSESSLOGON)
+#define SVAUD_GOODNETLOGON 0x60
+#define SVAUD_BADNETLOGON 0x180
+#define SVAUD_NETLOGON (SVAUD_GOODNETLOGON | SVAUD_BADNETLOGON)
+#define SVAUD_LOGON (SVAUD_NETLOGON | SVAUD_SESSLOGON)
+#define SVAUD_GOODUSE 0x600
+#define SVAUD_BADUSE 0x1800
+#define SVAUD_USE (SVAUD_GOODUSE | SVAUD_BADUSE)
+#define SVAUD_USERLIST 0x2000
+#define SVAUD_PERMISSIONS 0x4000
+#define SVAUD_RESOURCE 0x8000
+#define SVAUD_LOGONLIM 0x00010000
+
+//
+// Resource access audit bitmasks.
+//
+
+#define AA_AUDIT_ALL 0x0001
+#define AA_A_OWNER 0x0004
+#define AA_CLOSE 0x0008
+#define AA_S_OPEN 0x0010
+#define AA_S_WRITE 0x0020
+#define AA_S_CREATE 0x0020
+#define AA_S_DELETE 0x0040
+#define AA_S_ACL 0x0080
+#define AA_S_ALL ( AA_S_OPEN | AA_S_WRITE | AA_S_DELETE | AA_S_ACL)
+#define AA_F_OPEN 0x0100
+#define AA_F_WRITE 0x0200
+#define AA_F_CREATE 0x0200
+#define AA_F_DELETE 0x0400
+#define AA_F_ACL 0x0800
+#define AA_F_ALL ( AA_F_OPEN | AA_F_WRITE | AA_F_DELETE | AA_F_ACL)
+
+// Pinball-specific
+#define AA_A_OPEN 0x1000
+#define AA_A_WRITE 0x2000
+#define AA_A_CREATE 0x2000
+#define AA_A_DELETE 0x4000
+#define AA_A_ACL 0x8000
+#define AA_A_ALL ( AA_F_OPEN | AA_F_WRITE | AA_F_DELETE | AA_F_ACL)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMAUDIT_
diff --git a/public/sdk/inc/lmbrowsr.h b/public/sdk/inc/lmbrowsr.h
new file mode 100644
index 000000000..ee4571b33
--- /dev/null
+++ b/public/sdk/inc/lmbrowsr.h
@@ -0,0 +1,217 @@
+/*++ BUILD Version: 0007 // Increment this if a change has global effects
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ lmbrowsr.h
+
+Abstract:
+
+ This file contains information about browser stubbed versions of the
+ NetServer APIs.
+ Function Prototypes
+ Data Structures
+ Definition of special values
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+
+--*/
+
+#ifndef _LMBROWSR_
+#define _LMBROWSR_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef struct _BROWSER_STATISTICS {
+ LARGE_INTEGER StatisticsStartTime;
+ LARGE_INTEGER NumberOfServerAnnouncements;
+ LARGE_INTEGER NumberOfDomainAnnouncements;
+ ULONG NumberOfElectionPackets;
+ ULONG NumberOfMailslotWrites;
+ ULONG NumberOfGetBrowserServerListRequests;
+ ULONG NumberOfServerEnumerations;
+ ULONG NumberOfDomainEnumerations;
+ ULONG NumberOfOtherEnumerations;
+ ULONG NumberOfMissedServerAnnouncements;
+ ULONG NumberOfMissedMailslotDatagrams;
+ ULONG NumberOfMissedGetBrowserServerListRequests;
+ ULONG NumberOfFailedServerAnnounceAllocations;
+ ULONG NumberOfFailedMailslotAllocations;
+ ULONG NumberOfFailedMailslotReceives;
+ ULONG NumberOfFailedMailslotWrites;
+ ULONG NumberOfFailedMailslotOpens;
+ ULONG NumberOfDuplicateMasterAnnouncements;
+ LARGE_INTEGER NumberOfIllegalDatagrams;
+} BROWSER_STATISTICS, *PBROWSER_STATISTICS, *LPBROWSER_STATISTICS;
+
+typedef struct _BROWSER_STATISTICS_100 {
+ LARGE_INTEGER StartTime;
+ LARGE_INTEGER NumberOfServerAnnouncements;
+ LARGE_INTEGER NumberOfDomainAnnouncements;
+ ULONG NumberOfElectionPackets;
+ ULONG NumberOfMailslotWrites;
+ ULONG NumberOfGetBrowserServerListRequests;
+ LARGE_INTEGER NumberOfIllegalDatagrams;
+} BROWSER_STATISTICS_100, *PBROWSER_STATISTICS_100;
+
+typedef struct _BROWSER_STATISTICS_101 {
+ LARGE_INTEGER StartTime;
+ LARGE_INTEGER NumberOfServerAnnouncements;
+ LARGE_INTEGER NumberOfDomainAnnouncements;
+ ULONG NumberOfElectionPackets;
+ ULONG NumberOfMailslotWrites;
+ ULONG NumberOfGetBrowserServerListRequests;
+ LARGE_INTEGER NumberOfIllegalDatagrams;
+
+ ULONG NumberOfMissedServerAnnouncements;
+ ULONG NumberOfMissedMailslotDatagrams;
+ ULONG NumberOfMissedGetBrowserServerListRequests;
+ ULONG NumberOfFailedServerAnnounceAllocations;
+ ULONG NumberOfFailedMailslotAllocations;
+ ULONG NumberOfFailedMailslotReceives;
+ ULONG NumberOfFailedMailslotWrites;
+ ULONG NumberOfFailedMailslotOpens;
+ ULONG NumberOfDuplicateMasterAnnouncements;
+} BROWSER_STATISTICS_101, *PBROWSER_STATISTICS_101;
+
+
+typedef struct _BROWSER_EMULATED_DOMAIN {
+#ifdef MIDL_PASS
+ [string] wchar_t *DomainName;
+#else
+ LPWSTR DomainName;
+#endif // MIDL_PASS
+#ifdef MIDL_PASS
+ [string] wchar_t *EmulatedServerName;
+#else
+ LPWSTR EmulatedServerName;
+#endif // MIDL_PASS
+ DWORD Role;
+} BROWSER_EMULATED_DOMAIN, *PBROWSER_EMULATED_DOMAIN;
+
+//
+// Function Prototypes - BROWSER
+//
+
+NET_API_STATUS NET_API_FUNCTION
+I_BrowserServerEnum (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR transport OPTIONAL,
+ IN LPCWSTR clientname OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN DWORD servertype,
+ IN LPCWSTR domain OPTIONAL,
+ IN OUT LPDWORD resume_handle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+I_BrowserServerEnumEx (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR transport OPTIONAL,
+ IN LPCWSTR clientname OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN DWORD servertype,
+ IN LPCWSTR domain OPTIONAL,
+ IN LPCWSTR FirstNameToReturn OPTIONAL
+ );
+
+
+NET_API_STATUS
+I_BrowserQueryOtherDomains (
+ IN LPCWSTR servername OPTIONAL,
+ OUT LPBYTE *bufptr,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries
+ );
+
+NET_API_STATUS
+I_BrowserResetNetlogonState (
+ IN LPCWSTR servername OPTIONAL
+ );
+
+NET_API_STATUS
+I_BrowserSetNetlogonState(
+ IN LPWSTR ServerName OPTIONAL,
+ IN LPWSTR DomainName,
+ IN LPWSTR EmulatedServerName OPTIONAL,
+ IN DWORD Role
+ );
+
+#define BROWSER_ROLE_PDC 0x1
+#define BROWSER_ROLE_BDC 0x2
+
+NET_API_STATUS
+I_BrowserQueryEmulatedDomains(
+ IN LPWSTR ServerName OPTIONAL,
+ OUT PBROWSER_EMULATED_DOMAIN *EmulatedDomains,
+ OUT LPDWORD EntriesRead );
+
+NET_API_STATUS
+I_BrowserQueryStatistics (
+ IN LPCWSTR servername OPTIONAL,
+ OUT LPBROWSER_STATISTICS *statistics
+ );
+
+NET_API_STATUS
+I_BrowserResetStatistics (
+ IN LPCWSTR servername OPTIONAL
+ );
+
+
+WORD
+I_BrowserServerEnumForXactsrv(
+ IN LPCWSTR TransportName OPTIONAL,
+ IN LPCWSTR ClientName OPTIONAL,
+
+ IN ULONG NtLevel,
+ IN USHORT ClientLevel,
+
+ OUT PVOID Buffer,
+ IN WORD BufferLength,
+ IN DWORD PreferedMaximumLength,
+
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD TotalEntries,
+
+ IN DWORD ServerType,
+ IN LPCWSTR Domain,
+ IN LPCWSTR FirstNameToReturn,
+
+ OUT PWORD Converter
+
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#if DBG
+NET_API_STATUS
+I_BrowserDebugTrace(
+ PWCHAR Server,
+ PCHAR Buffer
+ );
+
+#endif
+
+#endif // _LMBROWSR_
diff --git a/public/sdk/inc/lmchdev.h b/public/sdk/inc/lmchdev.h
new file mode 100644
index 000000000..025c70821
--- /dev/null
+++ b/public/sdk/inc/lmchdev.h
@@ -0,0 +1,270 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmchdev.h
+
+Abstract:
+
+ This module defines the API function prototypes and data structures
+ for the following groups of NT API functions:
+ NetCharDev
+ NetCharDevQ
+ NetHandle
+
+[Environment:]
+
+ User Mode - Win32
+
+[Notes:]
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+--*/
+
+#ifndef _LMCHDEV_
+#define _LMCHDEV_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// CharDev Class
+//
+
+//
+// Function Prototypes - CharDev
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetCharDevEnum (
+ IN LPCWSTR servername,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetCharDevGetInfo (
+ IN LPCWSTR servername,
+ IN LPCWSTR devname,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetCharDevControl (
+ IN LPCWSTR servername,
+ IN LPCWSTR devname,
+ IN DWORD opcode
+ );
+
+//
+// Data Structures - CharDev
+//
+
+typedef struct _CHARDEV_INFO_0 {
+ LPWSTR ch0_dev;
+} CHARDEV_INFO_0, *PCHARDEV_INFO_0, *LPCHARDEV_INFO_0;
+
+typedef struct _CHARDEV_INFO_1 {
+ LPWSTR ch1_dev;
+ DWORD ch1_status;
+ LPWSTR ch1_username;
+ DWORD ch1_time;
+} CHARDEV_INFO_1, *PCHARDEV_INFO_1, *LPCHARDEV_INFO_1;
+
+
+//
+// CharDevQ Class
+//
+
+//
+// Function Prototypes - CharDevQ
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetCharDevQEnum (
+ IN LPCWSTR servername,
+ IN LPCWSTR username,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetCharDevQGetInfo (
+ IN LPCWSTR servername,
+ IN LPCWSTR queuename,
+ IN LPCWSTR username,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetCharDevQSetInfo (
+ IN LPCWSTR servername,
+ IN LPCWSTR queuename,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetCharDevQPurge (
+ IN LPCWSTR servername,
+ IN LPCWSTR queuename
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetCharDevQPurgeSelf (
+ IN LPCWSTR servername,
+ IN LPCWSTR queuename,
+ IN LPCWSTR computername
+ );
+
+//
+// Data Structures - CharDevQ
+//
+
+typedef struct _CHARDEVQ_INFO_0 {
+ LPWSTR cq0_dev;
+} CHARDEVQ_INFO_0, *PCHARDEVQ_INFO_0, *LPCHARDEVQ_INFO_0;
+
+typedef struct _CHARDEVQ_INFO_1 {
+ LPWSTR cq1_dev;
+ DWORD cq1_priority;
+ LPWSTR cq1_devs;
+ DWORD cq1_numusers;
+ DWORD cq1_numahead;
+} CHARDEVQ_INFO_1, *PCHARDEVQ_INFO_1, *LPCHARDEVQ_INFO_1;
+
+typedef struct _CHARDEVQ_INFO_1002 {
+ DWORD cq1002_priority;
+} CHARDEVQ_INFO_1002, *PCHARDEVQ_INFO_1002, *LPCHARDEVQ_INFO_1002;
+
+typedef struct _CHARDEVQ_INFO_1003 {
+ LPWSTR cq1003_devs;
+} CHARDEVQ_INFO_1003, *PCHARDEVQ_INFO_1003, *LPCHARDEVQ_INFO_1003;
+
+
+//
+// Special Values and Constants
+//
+
+//
+// Bits for chardev_info_1 field ch1_status.
+//
+
+#define CHARDEV_STAT_OPENED 0x02
+#define CHARDEV_STAT_ERROR 0x04
+
+//
+// Opcodes for NetCharDevControl
+//
+
+#define CHARDEV_CLOSE 0
+
+//
+// Values for parm_err parameter.
+//
+
+#define CHARDEVQ_DEV_PARMNUM 1
+#define CHARDEVQ_PRIORITY_PARMNUM 2
+#define CHARDEVQ_DEVS_PARMNUM 3
+#define CHARDEVQ_NUMUSERS_PARMNUM 4
+#define CHARDEVQ_NUMAHEAD_PARMNUM 5
+
+//
+// Single-field infolevels for NetCharDevQSetInfo.
+//
+
+#define CHARDEVQ_PRIORITY_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + CHARDEVQ_PRIORITY_PARMNUM)
+#define CHARDEVQ_DEVS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + CHARDEVQ_DEVS_PARMNUM)
+
+//
+// Minimum, maximum, and recommended default for priority.
+//
+
+#define CHARDEVQ_MAX_PRIORITY 1
+#define CHARDEVQ_MIN_PRIORITY 9
+#define CHARDEVQ_DEF_PRIORITY 5
+
+//
+// Value indicating no requests in the queue.
+//
+
+#define CHARDEVQ_NO_REQUESTS -1
+
+#endif // _LMCHDEV_
+
+//
+// Handle Class
+//
+
+#ifndef _LMHANDLE_
+#define _LMHANDLE_
+
+//
+// Function Prototypes
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetHandleGetInfo (
+ IN HANDLE handle,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetHandleSetInfo (
+ IN HANDLE handle,
+ IN DWORD level,
+ IN LPBYTE buf,
+ IN DWORD parmnum,
+ OUT LPDWORD parmerr
+ );
+
+//
+// Data Structures
+//
+
+typedef struct _HANDLE_INFO_1 {
+ DWORD hdli1_chartime;
+ DWORD hdli1_charcount;
+}HANDLE_INFO_1, *PHANDLE_INFO_1, *LPHANDLE_INFO_1;
+
+//
+// Special Values and Constants
+//
+
+//
+// Handle Get Info Levels
+//
+
+#define HANDLE_INFO_LEVEL_1 1
+
+//
+// Handle Set Info parm numbers
+//
+
+#define HANDLE_CHARTIME_PARMNUM 1
+#define HANDLE_CHARCOUNT_PARMNUM 2
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMHANDLE_
diff --git a/public/sdk/inc/lmconfig.h b/public/sdk/inc/lmconfig.h
new file mode 100644
index 000000000..f7413cee1
--- /dev/null
+++ b/public/sdk/inc/lmconfig.h
@@ -0,0 +1,90 @@
+/*++ BUILD Version: 0003 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmconfig.h
+
+Abstract:
+
+ This module defines the API function prototypes and data structures
+ for the following groups of NT API functions:
+ NetConfig
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+--*/
+
+#ifndef _LMCONFIG_
+#define _LMCONFIG_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define REVISED_CONFIG_APIS
+
+//
+// Function Prototypes - Config
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetConfigGet (
+ IN LPCWSTR server OPTIONAL,
+ IN LPCWSTR component,
+ IN LPCWSTR parameter,
+#ifdef REVISED_CONFIG_APIS
+ OUT LPBYTE *bufptr
+#else
+ OUT LPBYTE *bufptr,
+ OUT LPDWORD totalavailable
+#endif
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetConfigGetAll (
+ IN LPCWSTR server OPTIONAL,
+ IN LPCWSTR component,
+#ifdef REVISED_CONFIG_APIS
+ OUT LPBYTE *bufptr
+#else
+ OUT LPBYTE *bufptr,
+ OUT LPDWORD totalavailable
+#endif
+ );
+
+
+NET_API_STATUS NET_API_FUNCTION
+NetConfigSet (
+ IN LPCWSTR server OPTIONAL,
+ IN LPCWSTR reserved1 OPTIONAL,
+ IN LPCWSTR component,
+ IN DWORD level,
+ IN DWORD reserved2,
+ IN LPBYTE buf,
+ IN DWORD reserved3
+ );
+
+//
+// Data Structures - Config
+//
+
+typedef struct _CONFIG_INFO_0 {
+ LPWSTR cfgi0_key;
+ LPWSTR cfgi0_data;
+} CONFIG_INFO_0, *PCONFIG_INFO_0, *LPCONFIG_INFO_0;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMCONFIG_
diff --git a/public/sdk/inc/lmcons.h b/public/sdk/inc/lmcons.h
new file mode 100644
index 000000000..cdfdefc11
--- /dev/null
+++ b/public/sdk/inc/lmcons.h
@@ -0,0 +1,242 @@
+/*++ BUILD Version: 0003 // Increment this if a change has global effects
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+
+ LMCONS.H (was NETCONS.H in LM 2.x)
+
+Abstract:
+
+ This file contains constants used throughout the LAN Manager
+ API header files. It should be included in any source file
+ that is going to include other LAN Manager API header files or
+ call a LAN Manager API.
+
+ NOTE: Lengths of strings are given as the maximum lengths of the
+ string in characters (not bytes). This does not include space for the
+ terminating 0-characters. When allocating space for such an item,
+ use the form:
+
+ TCHAR username[UNLEN+1];
+
+ Definitions of the form LN20_* define those values in effect for
+ LanMan 2.0.
+
+
+
+--*/
+
+/*NOINC*/
+#ifndef NETCONS_INCLUDED
+
+#define NETCONS_INCLUDED
+/*INC*/
+
+#ifndef PASCAL
+#define PASCAL // pascal on OS/2
+#endif
+
+#ifndef FAR
+#define FAR // far on OS/2
+#endif
+
+//
+// String Lengths for various LanMan names
+//
+
+#define CNLEN 15 // Computer name length
+#define LM20_CNLEN 15 // LM 2.0 Computer name length
+#define DNLEN CNLEN // Maximum domain name length
+#define LM20_DNLEN LM20_CNLEN // LM 2.0 Maximum domain name length
+
+#if (CNLEN != DNLEN)
+#error CNLEN and DNLEN are not equal
+#endif
+
+#define UNCLEN (CNLEN+2) // UNC computer name length
+#define LM20_UNCLEN (LM20_CNLEN+2) // LM 2.0 UNC computer name length
+
+#define NNLEN 80 // Net name length (share name)
+#define LM20_NNLEN 12 // LM 2.0 Net name length
+
+#define RMLEN (UNCLEN+1+NNLEN) // Max remote name length
+#define LM20_RMLEN (LM20_UNCLEN+1+LM20_NNLEN) // LM 2.0 Max remote name length
+
+#define SNLEN 80 // Service name length
+#define LM20_SNLEN 15 // LM 2.0 Service name length
+#define STXTLEN 256 // Service text length
+#define LM20_STXTLEN 63 // LM 2.0 Service text length
+
+#define PATHLEN 256 // Max. path (not including drive name)
+#define LM20_PATHLEN 256 // LM 2.0 Max. path
+
+#define DEVLEN 80 // Device name length
+#define LM20_DEVLEN 8 // LM 2.0 Device name length
+
+#define EVLEN 16 // Event name length
+
+//
+// User, Group and Password lengths
+//
+
+#define UNLEN 256 // Maximum user name length
+#define LM20_UNLEN 20 // LM 2.0 Maximum user name length
+
+#define GNLEN UNLEN // Group name
+#define LM20_GNLEN LM20_UNLEN // LM 2.0 Group name
+
+#define PWLEN 256 // Maximum password length
+#define LM20_PWLEN 14 // LM 2.0 Maximum password length
+
+#define SHPWLEN 8 // Share password length (bytes)
+
+
+#define CLTYPE_LEN 12 // Length of client type string
+
+
+#define MAXCOMMENTSZ 256 // Multipurpose comment length
+#define LM20_MAXCOMMENTSZ 48 // LM 2.0 Multipurpose comment length
+
+#define QNLEN NNLEN // Queue name maximum length
+#define LM20_QNLEN LM20_NNLEN // LM 2.0 Queue name maximum length
+#if (QNLEN != NNLEN)
+# error QNLEN and NNLEN are not equal
+#endif
+
+//
+// The ALERTSZ and MAXDEVENTRIES defines have not yet been NT'ized.
+// Whoever ports these components should change these values appropriately.
+//
+
+#define ALERTSZ 128 // size of alert string in server
+#define MAXDEVENTRIES (sizeof (int)*8) // Max number of device entries
+
+ //
+ // We use int bitmap to represent
+ //
+
+#define NETBIOS_NAME_LEN 16 // NetBIOS net name (bytes)
+
+//
+// Value to be used with APIs which have a "preferred maximum length"
+// parameter. This value indicates that the API should just allocate
+// "as much as it takes."
+//
+
+#define MAX_PREFERRED_LENGTH ((DWORD) -1)
+
+//
+// Constants used with encryption
+//
+
+#define CRYPT_KEY_LEN 7
+#define CRYPT_TXT_LEN 8
+#define ENCRYPTED_PWLEN 16
+#define SESSION_PWLEN 24
+#define SESSION_CRYPT_KLEN 21
+
+//
+// Value to be used with SetInfo calls to allow setting of all
+// settable parameters (parmnum zero option)
+//
+#ifndef PARMNUM_ALL
+#define PARMNUM_ALL 0
+#endif
+
+#define PARM_ERROR_UNKNOWN ( (DWORD) (-1) )
+#define PARM_ERROR_NONE 0
+#define PARMNUM_BASE_INFOLEVEL 1000
+
+//
+// Message File Names
+//
+
+#define MESSAGE_FILENAME TEXT("NETMSG")
+#define OS2MSG_FILENAME TEXT("BASE")
+#define HELP_MSG_FILENAME TEXT("NETH")
+
+/**INTERNAL_ONLY**/
+
+// The backup message file named here is a duplicate of net.msg. It
+// is not shipped with the product, but is used at buildtime to
+// msgbind certain messages to netapi.dll and some of the services.
+// This allows for OEMs to modify the message text in net.msg and
+// have those changes show up. Only in case there is an error in
+// retrieving the messages from net.msg do we then get the bound
+// messages out of bak.msg (really out of the message segment).
+
+#define BACKUP_MSG_FILENAME TEXT("BAK.MSG")
+
+/**END_INTERNAL**/
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+//
+// Keywords used in Function Prototypes
+//
+
+#define NET_API_STATUS DWORD
+#define API_RET_TYPE NET_API_STATUS // Old value: do not use
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define NET_API_FUNCTION __stdcall
+#else
+#define NET_API_FUNCTION
+#endif
+
+// Define pseudo-keywords.
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+/*INC*/
+
+
+
+//
+// The platform ID indicates the levels to use for platform-specific
+// information.
+//
+
+#define PLATFORM_ID_DOS 300
+#define PLATFORM_ID_OS2 400
+#define PLATFORM_ID_NT 500
+#define PLATFORM_ID_OSF 600
+#define PLATFORM_ID_VMS 700
+
+//
+// There message numbers assigned to different LANMAN components
+// are as defined below.
+//
+// lmerr.h: 2100 - 2999 NERR_BASE
+// alertmsg.h: 3000 - 3049 ALERT_BASE
+// lmsvc.h: 3050 - 3099 SERVICE_BASE
+// lmerrlog.h: 3100 - 3299 ERRLOG_BASE
+// msgtext.h: 3300 - 3499 MTXT_BASE
+// apperr.h: 3500 - 3999 APPERR_BASE
+// apperrfs.h: 4000 - 4299 APPERRFS_BASE
+// apperr2.h: 4300 - 5299 APPERR2_BASE
+// ncberr.h: 5300 - 5499 NRCERR_BASE
+// alertmsg.h: 5500 - 5599 ALERT2_BASE
+// lmsvc.h: 5600 - 5699 SERVICE2_BASE
+// lmerrlog.h 5700 - 5799 ERRLOG2_BASE
+//
+
+#define MIN_LANMAN_MESSAGE_ID NERR_BASE
+#define MAX_LANMAN_MESSAGE_ID 5799
+
+/*NOINC*/
+#endif // NETCONS_INCLUDED
+/*INC*/
diff --git a/public/sdk/inc/lmdfs.h b/public/sdk/inc/lmdfs.h
new file mode 100644
index 000000000..f27e2e414
--- /dev/null
+++ b/public/sdk/inc/lmdfs.h
@@ -0,0 +1,250 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1995 Microsoft Corporation
+
+Module Name:
+
+ lmdfs.h
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the NetDfs API
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include <windef.h> and <lmcons.h> before this file.
+
+--*/
+
+#ifndef _LMDFS_
+#define _LMDFS_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// DFS Volume state
+//
+
+#define DFS_VOLUME_STATE_OK 1
+#define DFS_VOLUME_STATE_INCONSISTENT 2
+#define DFS_VOLUME_STATE_OFFLINE 3
+#define DFS_VOLUME_STATE_ONLINE 4
+
+//
+// DFS Storage State
+//
+
+#define DFS_STORAGE_STATE_OFFLINE 1
+#define DFS_STORAGE_STATE_ONLINE 2
+
+//
+// Path Type flags
+//
+#define DFS_PATH_NONDFS 1 // eg, d:\foo\bar or \\nwsrv1\vol, where neither is in a Dfs at all.
+#define DFS_PATH_REDIRECTED 2 // eg, x:\foo\bar, where x:\ is a Dfs redirected drive
+#define DFS_PATH_LOCAL 3 // eg, c:\foo\bar, where c:\foo\bar is in Dfs
+#define DFS_PATH_UNC_IN_DFS 4 // eg, \\remote-server\share, where \\remote-server\share is in Dfs
+#define DFS_PATH_UNIVERSAL 5 // eg, \\c_or_d\DFS\foo\bar
+
+//
+// Level 1:
+//
+typedef struct _DFS_INFO_1 {
+ LPWSTR EntryPath; // Dfs name for the top of this piece of storage
+} DFS_INFO_1, *PDFS_INFO_1, *LPDFS_INFO_1;
+
+//
+// Level 2:
+//
+typedef struct _DFS_INFO_2 {
+ LPWSTR EntryPath; // Dfs name for the top of this volume
+ LPWSTR Comment; // Comment for this volume
+ DWORD State; // State of this volume, one of DFS_VOLUME_STATE_*
+ DWORD NumberOfStorages; // Number of storages for this volume
+} DFS_INFO_2, *PDFS_INFO_2, *LPDFS_INFO_2;
+
+typedef struct _DFS_STORAGE_INFO {
+ ULONG State; // State of this storage, one of DFS_STORAGE_STATE_*
+ LPWSTR ServerName; // Name of server hosting this storage
+ LPWSTR ShareName; // Name of share hosting this storage
+} DFS_STORAGE_INFO, *PDFS_STORAGE_INFO, *LPDFS_STORAGE_INFO;
+
+//
+// Level 3:
+//
+typedef struct _DFS_INFO_3 {
+ LPWSTR EntryPath; // Dfs name for the top of this volume
+ LPWSTR Comment; // Comment for this volume
+ DWORD State; // State of this volume, one of DFS_VOLUME_STATE_*
+ DWORD NumberOfStorages; // Number of storage servers for this volume
+#ifdef MIDL_PASS
+ [size_is(NumberOfStorages)] LPDFS_STORAGE_INFO Storage;
+#else
+ LPDFS_STORAGE_INFO Storage; // An array (of NumberOfStorages elements) of storage-specific information.
+#endif // MIDL_PASS
+} DFS_INFO_3, *PDFS_INFO_3, *LPDFS_INFO_3;
+
+//
+// Level 100:
+//
+typedef struct _DFS_INFO_100 {
+ LPWSTR Comment; // Comment for this volume or storage
+} DFS_INFO_100, *PDFS_INFO_100, *LPDFS_INFO_100;
+
+//
+// Level 101:
+//
+typedef struct _DFS_INFO_101 {
+ DWORD State; // State of this storage, one of DFS_STORAGE_STATE_*
+} DFS_INFO_101, *PDFS_INFO_101, *LPDFS_INFO_101;
+
+//
+// Level 200:
+//
+typedef struct _DFS_INFO_200 {
+ DWORD PathType; // Type of path, see DFS_PATH_XXX flags
+} DFS_INFO_200, *PDFS_INFO_200, *LPDFS_INFO_200;
+
+//
+// Level 201:
+//
+typedef struct _DFS_INFO_201 {
+ DWORD PathType; // Type of path, see DFS_PATH_XXX flags
+ LPWSTR DfsUniversalPath; // Dfs Universal Path of input path,
+ // of the form \\DfsName\dfs\... Only
+ // valid if PathType != DFS_PATH_NONDFS
+} DFS_INFO_201, *PDFS_INFO_201, *LPDFS_INFO_201;
+
+//
+// Level 202:
+//
+typedef struct _DFS_INFO_202 {
+ DWORD PathType; // Type of path, see DFS_PATH_XXX flags
+ LPWSTR DfsUniversalPath; // Dfs Universal Path of input path,
+ // of the form \\DfsName\dfs\... Only
+ // valid if PathType != DFS_PATH_NONDFS
+ DWORD EntryPathLen; // Length of entry path portion of DfsUniversalPath. Only
+ // valid if PathType != DFS_PATH_NONDFS
+} DFS_INFO_202, *PDFS_INFO_202, *LPDFS_INFO_202;
+
+
+//
+// Add a new volume or additional storage for an existing volume at
+// DfsEntryPath.
+//
+NET_API_STATUS NET_API_FUNCTION
+NetDfsAdd(
+ IN LPWSTR DfsEntryPath, // DFS entry path for this added volume or storage
+ IN LPWSTR ServerName, // Name of server hosting the storage
+ IN LPWSTR ShareName, // Existing share name for the storage
+ IN LPWSTR Comment OPTIONAL, // Optional comment for this volume or storage
+ IN DWORD Flags // See below. Zero for no flags.
+);
+
+//
+// Flags:
+//
+#define DFS_ADD_VOLUME 1 // Add a new volume to the DFS if not already there
+
+//
+// Remove a volume or additional storage for volume from the Dfs at
+// DfsEntryPath. When applied to the last storage in a volume, removes
+// the volume from the DFS.
+//
+NET_API_STATUS NET_API_FUNCTION
+NetDfsRemove(
+ IN LPWSTR DfsEntryPath, // DFS entry path for this added volume or storage
+ IN LPWSTR ServerName, // Name of server hosting the storage
+ IN LPWSTR ShareName // Name of share hosting the storage
+);
+
+//
+// Get information about all of the volumes in the Dfs. DfsName is
+// the "server" part of the UNC name used to refer to this particular Dfs.
+//
+// Valid levels are 1-3.
+//
+NET_API_STATUS NET_API_FUNCTION
+NetDfsEnum(
+ IN LPWSTR DfsName, // Name of the Dfs for enumeration
+ IN DWORD Level, // Level of information requested
+ IN DWORD PrefMaxLen, // Advisory, but -1 means "get it all"
+ OUT LPBYTE* Buffer, // API allocates and returns buffer with requested info
+ OUT LPDWORD EntriesRead, // Number of entries returned
+ IN OUT LPDWORD ResumeHandle // Must be 0 on first call, reused on subsequent calls
+);
+
+//
+// Get information about the volume or storage.
+// If ServerName and ShareName are specified, the information returned
+// is specific to that server and share, else the information is specific
+// to the volume as a whole.
+//
+// Valid levels are 1-3, 100-101.
+//
+NET_API_STATUS NET_API_FUNCTION
+NetDfsGetInfo(
+ IN LPWSTR DfsEntryPath, // DFS entry path for the volume
+ IN LPWSTR ServerName OPTIONAL,// Name of server hosting a storage
+ IN LPWSTR ShareName OPTIONAL, // Name of share on server serving the volume
+ IN DWORD Level, // Level of information requested
+ OUT LPBYTE* Buffer // API allocates and returns buffer with requested info
+);
+
+//
+// Get information about the path.
+//
+// Valid levels are 200-202.
+//
+NET_API_STATUS NET_API_FUNCTION
+NetDfsGetPathInfo(
+ IN LPWSTR Path, // Win32 path
+ IN DWORD Level, // Level of information requested
+ OUT LPBYTE* Buffer // API allocates and returns buffer with requested info
+);
+
+//
+// Set info about the volume or storage.
+// If ServerName and ShareName are specified, the information set is
+// specific to that server and share, else the information is specific
+// to the volume as a whole.
+//
+// Valid levels are 100 and 101.
+//
+NET_API_STATUS NET_API_FUNCTION
+NetDfsSetInfo(
+ IN LPWSTR DfsEntryPath, // DFS entry path for the volume
+ IN LPWSTR ServerName OPTIONAL, // Name of server hosting a storage
+ IN LPWSTR ShareName OPTIONAL, // Name of share hosting a storage
+ IN DWORD Level, // Level of information to be set
+ IN LPBYTE Buffer // Buffer holding information
+);
+
+//
+// Move a DFS volume and all subordinate volumes from one place in the
+// DFS to another place in the DFS.
+//
+NET_API_STATUS NET_API_FUNCTION
+NetDfsMove(
+ IN LPWSTR DfsEntryPath, // Current DFS entry path for this volume
+ IN LPWSTR DfsNewEntryPath // New DFS entry path for this volume
+);
+
+NET_API_STATUS NET_API_FUNCTION
+NetDfsRename(
+ IN LPWSTR Path, // Current Win32 path in a Dfs
+ IN LPWSTR NewPath // New Win32 path in the same Dfs
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMDFS_
diff --git a/public/sdk/inc/lmerr.h b/public/sdk/inc/lmerr.h
new file mode 100644
index 000000000..0f206858c
--- /dev/null
+++ b/public/sdk/inc/lmerr.h
@@ -0,0 +1,582 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+*/
+/********************************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1987-1996 **/
+/********************************************************************/
+
+/*** lmerr.h - network error definitions
+ *
+ */
+
+
+/**INTERNAL_ONLY**/
+
+/***********WARNING ****************
+ *See the comment in lmcons.h for *
+ *info on the allocation of errors *
+ ***********************************/
+
+/**END_INTERNAL**/
+
+/*NOINC*/
+#ifndef NETERR_INCLUDED
+
+#define NETERR_INCLUDED
+/*INC*/
+
+
+#define NERR_Success 0 /* Success */
+
+// ERROR_ equates can be intermixed with NERR_ equates.
+#include <winerror.h>
+
+
+
+/*** NERR_BASE is the base of error codes from network utilities,
+ * chosen to avoid conflict with system and redirector error codes.
+ * 2100 is a value that has been assigned to us by system.
+ */
+#define NERR_BASE 2100
+
+
+/**INTERNAL_ONLY**/
+
+/***********WARNING ****************
+ *See the comment in lmcons.h for *
+ *info on the allocation of errors *
+ ***********************************/
+
+/***********WARNING ****************
+ *The range 2750-2799 has been *
+ *allocated to the IBM LAN Server *
+ ***********************************/
+
+/***********WARNING ****************
+ *The range 2900-2999 has been *
+ *reserved for Microsoft OEMs *
+ ***********************************/
+
+/**END_INTERNAL**/
+
+/* UNUSED BASE+0 */
+/* UNUSED BASE+1 */
+#define NERR_NetNotStarted (NERR_BASE+2) /* The workstation driver is not installed. */
+#define NERR_UnknownServer (NERR_BASE+3) /* The server could not be located. */
+#define NERR_ShareMem (NERR_BASE+4) /* An internal error occurred. The network cannot access a shared memory segment. */
+
+#define NERR_NoNetworkResource (NERR_BASE+5) /* A network resource shortage occurred . */
+#define NERR_RemoteOnly (NERR_BASE+6) /* This operation is not supported on workstations. */
+#define NERR_DevNotRedirected (NERR_BASE+7) /* The device is not connected. */
+/* UNUSED BASE+8 */
+/* UNUSED BASE+9 */
+/* UNUSED BASE+10 */
+/* UNUSED BASE+11 */
+/* UNUSED BASE+12 */
+/* UNUSED BASE+13 */
+#define NERR_ServerNotStarted (NERR_BASE+14) /* The Server service is not started. */
+#define NERR_ItemNotFound (NERR_BASE+15) /* The queue is empty. */
+#define NERR_UnknownDevDir (NERR_BASE+16) /* The device or directory does not exist. */
+#define NERR_RedirectedPath (NERR_BASE+17) /* The operation is invalid on a redirected resource. */
+#define NERR_DuplicateShare (NERR_BASE+18) /* The name has already been shared. */
+#define NERR_NoRoom (NERR_BASE+19) /* The server is currently out of the requested resource. */
+/* UNUSED BASE+20 */
+#define NERR_TooManyItems (NERR_BASE+21) /* Requested addition of items exceeds the maximum allowed. */
+#define NERR_InvalidMaxUsers (NERR_BASE+22) /* The Peer service supports only two simultaneous users. */
+#define NERR_BufTooSmall (NERR_BASE+23) /* The API return buffer is too small. */
+/* UNUSED BASE+24 */
+/* UNUSED BASE+25 */
+/* UNUSED BASE+26 */
+#define NERR_RemoteErr (NERR_BASE+27) /* A remote API error occurred. */
+/* UNUSED BASE+28 */
+/* UNUSED BASE+29 */
+/* UNUSED BASE+30 */
+#define NERR_LanmanIniError (NERR_BASE+31) /* An error occurred when opening or reading the configuration file. */
+/* UNUSED BASE+32 */
+/* UNUSED BASE+33 */
+/* UNUSED BASE+34 */
+/* UNUSED BASE+35 */
+#define NERR_NetworkError (NERR_BASE+36) /* A general network error occurred. */
+#define NERR_WkstaInconsistentState (NERR_BASE+37)
+ /* The Workstation service is in an inconsistent state. Restart the computer before restarting the Workstation service. */
+#define NERR_WkstaNotStarted (NERR_BASE+38) /* The Workstation service has not been started. */
+#define NERR_BrowserNotStarted (NERR_BASE+39) /* The requested information is not available. */
+#define NERR_InternalError (NERR_BASE+40) /* An internal Windows NT error occurred.*/
+#define NERR_BadTransactConfig (NERR_BASE+41) /* The server is not configured for transactions. */
+#define NERR_InvalidAPI (NERR_BASE+42) /* The requested API is not supported on the remote server. */
+#define NERR_BadEventName (NERR_BASE+43) /* The event name is invalid. */
+#define NERR_DupNameReboot (NERR_BASE+44) /* The computer name already exists on the network. Change it and restart the computer. */
+/*
+ * Config API related
+ * Error codes from BASE+45 to BASE+49
+ */
+
+/* UNUSED BASE+45 */
+#define NERR_CfgCompNotFound (NERR_BASE+46) /* The specified component could not be found in the configuration information. */
+#define NERR_CfgParamNotFound (NERR_BASE+47) /* The specified parameter could not be found in the configuration information. */
+#define NERR_LineTooLong (NERR_BASE+49) /* A line in the configuration file is too long. */
+
+/*
+ * Spooler API related
+ * Error codes from BASE+50 to BASE+79
+ */
+
+#define NERR_QNotFound (NERR_BASE+50) /* The printer does not exist. */
+#define NERR_JobNotFound (NERR_BASE+51) /* The print job does not exist. */
+#define NERR_DestNotFound (NERR_BASE+52) /* The printer destination cannot be found. */
+#define NERR_DestExists (NERR_BASE+53) /* The printer destination already exists. */
+#define NERR_QExists (NERR_BASE+54) /* The printer queue already exists. */
+#define NERR_QNoRoom (NERR_BASE+55) /* No more printers can be added. */
+#define NERR_JobNoRoom (NERR_BASE+56) /* No more print jobs can be added. */
+#define NERR_DestNoRoom (NERR_BASE+57) /* No more printer destinations can be added. */
+#define NERR_DestIdle (NERR_BASE+58) /* This printer destination is idle and cannot accept control operations. */
+#define NERR_DestInvalidOp (NERR_BASE+59) /* This printer destination request contains an invalid control function. */
+#define NERR_ProcNoRespond (NERR_BASE+60) /* The print processor is not responding. */
+#define NERR_SpoolerNotLoaded (NERR_BASE+61) /* The spooler is not running. */
+#define NERR_DestInvalidState (NERR_BASE+62) /* This operation cannot be performed on the print destination in its current state. */
+#define NERR_QInvalidState (NERR_BASE+63) /* This operation cannot be performed on the printer queue in its current state. */
+#define NERR_JobInvalidState (NERR_BASE+64) /* This operation cannot be performed on the print job in its current state. */
+#define NERR_SpoolNoMemory (NERR_BASE+65) /* A spooler memory allocation failure occurred. */
+#define NERR_DriverNotFound (NERR_BASE+66) /* The device driver does not exist. */
+#define NERR_DataTypeInvalid (NERR_BASE+67) /* The data type is not supported by the print processor. */
+#define NERR_ProcNotFound (NERR_BASE+68) /* The print processor is not installed. */
+
+/*
+ * Service API related
+ * Error codes from BASE+80 to BASE+99
+ */
+
+#define NERR_ServiceTableLocked (NERR_BASE+80) /* The service database is locked. */
+#define NERR_ServiceTableFull (NERR_BASE+81) /* The service table is full. */
+#define NERR_ServiceInstalled (NERR_BASE+82) /* The requested service has already been started. */
+#define NERR_ServiceEntryLocked (NERR_BASE+83) /* The service does not respond to control actions. */
+#define NERR_ServiceNotInstalled (NERR_BASE+84) /* The service has not been started. */
+#define NERR_BadServiceName (NERR_BASE+85) /* The service name is invalid. */
+#define NERR_ServiceCtlTimeout (NERR_BASE+86) /* The service is not responding to the control function. */
+#define NERR_ServiceCtlBusy (NERR_BASE+87) /* The service control is busy. */
+#define NERR_BadServiceProgName (NERR_BASE+88) /* The configuration file contains an invalid service program name. */
+#define NERR_ServiceNotCtrl (NERR_BASE+89) /* The service could not be controlled in its present state. */
+#define NERR_ServiceKillProc (NERR_BASE+90) /* The service ended abnormally. */
+#define NERR_ServiceCtlNotValid (NERR_BASE+91) /* The requested pause or stop is not valid for this service. */
+#define NERR_NotInDispatchTbl (NERR_BASE+92) /* The service control dispatcher could not find the service name in the dispatch table. */
+#define NERR_BadControlRecv (NERR_BASE+93) /* The service control dispatcher pipe read failed. */
+#define NERR_ServiceNotStarting (NERR_BASE+94) /* A thread for the new service could not be created. */
+
+/*
+ * Wksta and Logon API related
+ * Error codes from BASE+100 to BASE+118
+ */
+
+#define NERR_AlreadyLoggedOn (NERR_BASE+100) /* This workstation is already logged on to the local-area network. */
+#define NERR_NotLoggedOn (NERR_BASE+101) /* The workstation is not logged on to the local-area network. */
+#define NERR_BadUsername (NERR_BASE+102) /* The user name or group name parameter is invalid. */
+#define NERR_BadPassword (NERR_BASE+103) /* The password parameter is invalid. */
+#define NERR_UnableToAddName_W (NERR_BASE+104) /* @W The logon processor did not add the message alias. */
+#define NERR_UnableToAddName_F (NERR_BASE+105) /* The logon processor did not add the message alias. */
+#define NERR_UnableToDelName_W (NERR_BASE+106) /* @W The logoff processor did not delete the message alias. */
+#define NERR_UnableToDelName_F (NERR_BASE+107) /* The logoff processor did not delete the message alias. */
+/* UNUSED BASE+108 */
+#define NERR_LogonsPaused (NERR_BASE+109) /* Network logons are paused. */
+#define NERR_LogonServerConflict (NERR_BASE+110)/* A centralized logon-server conflict occurred. */
+#define NERR_LogonNoUserPath (NERR_BASE+111) /* The server is configured without a valid user path. */
+#define NERR_LogonScriptError (NERR_BASE+112) /* An error occurred while loading or running the logon script. */
+/* UNUSED BASE+113 */
+#define NERR_StandaloneLogon (NERR_BASE+114) /* The logon server was not specified. Your computer will be logged on as STANDALONE. */
+#define NERR_LogonServerNotFound (NERR_BASE+115) /* The logon server could not be found. */
+#define NERR_LogonDomainExists (NERR_BASE+116) /* There is already a logon domain for this computer. */
+#define NERR_NonValidatedLogon (NERR_BASE+117) /* The logon server could not validate the logon. */
+
+/*
+ * ACF API related (access, user, group)
+ * Error codes from BASE+119 to BASE+149
+ */
+
+#define NERR_ACFNotFound (NERR_BASE+119) /* The security database could not be found. */
+#define NERR_GroupNotFound (NERR_BASE+120) /* The group name could not be found. */
+#define NERR_UserNotFound (NERR_BASE+121) /* The user name could not be found. */
+#define NERR_ResourceNotFound (NERR_BASE+122) /* The resource name could not be found. */
+#define NERR_GroupExists (NERR_BASE+123) /* The group already exists. */
+#define NERR_UserExists (NERR_BASE+124) /* The user account already exists. */
+#define NERR_ResourceExists (NERR_BASE+125) /* The resource permission list already exists. */
+#define NERR_NotPrimary (NERR_BASE+126) /* This operation is only allowed on the primary domain controller of the domain. */
+#define NERR_ACFNotLoaded (NERR_BASE+127) /* The security database has not been started. */
+#define NERR_ACFNoRoom (NERR_BASE+128) /* There are too many names in the user accounts database. */
+#define NERR_ACFFileIOFail (NERR_BASE+129) /* A disk I/O failure occurred.*/
+#define NERR_ACFTooManyLists (NERR_BASE+130) /* The limit of 64 entries per resource was exceeded. */
+#define NERR_UserLogon (NERR_BASE+131) /* Deleting a user with a session is not allowed. */
+#define NERR_ACFNoParent (NERR_BASE+132) /* The parent directory could not be located. */
+#define NERR_CanNotGrowSegment (NERR_BASE+133) /* Unable to add to the security database session cache segment. */
+#define NERR_SpeGroupOp (NERR_BASE+134) /* This operation is not allowed on this special group. */
+#define NERR_NotInCache (NERR_BASE+135) /* This user is not cached in user accounts database session cache. */
+#define NERR_UserInGroup (NERR_BASE+136) /* The user already belongs to this group. */
+#define NERR_UserNotInGroup (NERR_BASE+137) /* The user does not belong to this group. */
+#define NERR_AccountUndefined (NERR_BASE+138) /* This user account is undefined. */
+#define NERR_AccountExpired (NERR_BASE+139) /* This user account has expired. */
+#define NERR_InvalidWorkstation (NERR_BASE+140) /* The user is not allowed to log on from this workstation. */
+#define NERR_InvalidLogonHours (NERR_BASE+141) /* The user is not allowed to log on at this time. */
+#define NERR_PasswordExpired (NERR_BASE+142) /* The password of this user has expired. */
+#define NERR_PasswordCantChange (NERR_BASE+143) /* The password of this user cannot change. */
+#define NERR_PasswordHistConflict (NERR_BASE+144) /* This password cannot be used now. */
+#define NERR_PasswordTooShort (NERR_BASE+145) /* The password is shorter than required. */
+#define NERR_PasswordTooRecent (NERR_BASE+146) /* The password of this user is too recent to change. */
+#define NERR_InvalidDatabase (NERR_BASE+147) /* The security database is corrupted. */
+#define NERR_DatabaseUpToDate (NERR_BASE+148) /* No updates are necessary to this replicant network/local security database. */
+#define NERR_SyncRequired (NERR_BASE+149) /* This replicant database is outdated; synchronization is required. */
+
+/*
+ * Use API related
+ * Error codes from BASE+150 to BASE+169
+ */
+
+#define NERR_UseNotFound (NERR_BASE+150) /* The network connection could not be found. */
+#define NERR_BadAsgType (NERR_BASE+151) /* This asg_type is invalid. */
+#define NERR_DeviceIsShared (NERR_BASE+152) /* This device is currently being shared. */
+
+/*
+ * Message Server related
+ * Error codes BASE+170 to BASE+209
+ */
+
+#define NERR_NoComputerName (NERR_BASE+170) /* The computer name could not be added as a message alias. The name may already exist on the network. */
+#define NERR_MsgAlreadyStarted (NERR_BASE+171) /* The Messenger service is already started. */
+#define NERR_MsgInitFailed (NERR_BASE+172) /* The Messenger service failed to start. */
+#define NERR_NameNotFound (NERR_BASE+173) /* The message alias could not be found on the network. */
+#define NERR_AlreadyForwarded (NERR_BASE+174) /* This message alias has already been forwarded. */
+#define NERR_AddForwarded (NERR_BASE+175) /* This message alias has been added but is still forwarded. */
+#define NERR_AlreadyExists (NERR_BASE+176) /* This message alias already exists locally. */
+#define NERR_TooManyNames (NERR_BASE+177) /* The maximum number of added message aliases has been exceeded. */
+#define NERR_DelComputerName (NERR_BASE+178) /* The computer name could not be deleted.*/
+#define NERR_LocalForward (NERR_BASE+179) /* Messages cannot be forwarded back to the same workstation. */
+#define NERR_GrpMsgProcessor (NERR_BASE+180) /* An error occurred in the domain message processor. */
+#define NERR_PausedRemote (NERR_BASE+181) /* The message was sent, but the recipient has paused the Messenger service. */
+#define NERR_BadReceive (NERR_BASE+182) /* The message was sent but not received. */
+#define NERR_NameInUse (NERR_BASE+183) /* The message alias is currently in use. Try again later. */
+#define NERR_MsgNotStarted (NERR_BASE+184) /* The Messenger service has not been started. */
+#define NERR_NotLocalName (NERR_BASE+185) /* The name is not on the local computer. */
+#define NERR_NoForwardName (NERR_BASE+186) /* The forwarded message alias could not be found on the network. */
+#define NERR_RemoteFull (NERR_BASE+187) /* The message alias table on the remote station is full. */
+#define NERR_NameNotForwarded (NERR_BASE+188) /* Messages for this alias are not currently being forwarded. */
+#define NERR_TruncatedBroadcast (NERR_BASE+189) /* The broadcast message was truncated. */
+#define NERR_InvalidDevice (NERR_BASE+194) /* This is an invalid device name. */
+#define NERR_WriteFault (NERR_BASE+195) /* A write fault occurred. */
+/* UNUSED BASE+196 */
+#define NERR_DuplicateName (NERR_BASE+197) /* A duplicate message alias exists on the network. */
+#define NERR_DeleteLater (NERR_BASE+198) /* @W This message alias will be deleted later. */
+#define NERR_IncompleteDel (NERR_BASE+199) /* The message alias was not successfully deleted from all networks. */
+#define NERR_MultipleNets (NERR_BASE+200) /* This operation is not supported on computers with multiple networks. */
+
+/*
+ * Server API related
+ * Error codes BASE+210 to BASE+229
+ */
+
+#define NERR_NetNameNotFound (NERR_BASE+210) /* This shared resource does not exist.*/
+#define NERR_DeviceNotShared (NERR_BASE+211) /* This device is not shared. */
+#define NERR_ClientNameNotFound (NERR_BASE+212) /* A session does not exist with that computer name. */
+#define NERR_FileIdNotFound (NERR_BASE+214) /* There is not an open file with that identification number. */
+#define NERR_ExecFailure (NERR_BASE+215) /* A failure occurred when executing a remote administration command. */
+#define NERR_TmpFile (NERR_BASE+216) /* A failure occurred when opening a remote temporary file. */
+#define NERR_TooMuchData (NERR_BASE+217) /* The data returned from a remote administration command has been truncated to 64K. */
+#define NERR_DeviceShareConflict (NERR_BASE+218) /* This device cannot be shared as both a spooled and a non-spooled resource. */
+#define NERR_BrowserTableIncomplete (NERR_BASE+219) /* The information in the list of servers may be incorrect. */
+#define NERR_NotLocalDomain (NERR_BASE+220) /* The computer is not active in this domain. */
+#define NERR_IsDfsShare (NERR_BASE+221) /* The share must be removed from the Distributed File System before it can be deleted. */
+
+/*
+ * CharDev API related
+ * Error codes BASE+230 to BASE+249
+ */
+
+/* UNUSED BASE+230 */
+#define NERR_DevInvalidOpCode (NERR_BASE+231) /* The operation is invalid for this device. */
+#define NERR_DevNotFound (NERR_BASE+232) /* This device cannot be shared. */
+#define NERR_DevNotOpen (NERR_BASE+233) /* This device was not open. */
+#define NERR_BadQueueDevString (NERR_BASE+234) /* This device name list is invalid. */
+#define NERR_BadQueuePriority (NERR_BASE+235) /* The queue priority is invalid. */
+#define NERR_NoCommDevs (NERR_BASE+237) /* There are no shared communication devices. */
+#define NERR_QueueNotFound (NERR_BASE+238) /* The queue you specified does not exist. */
+#define NERR_BadDevString (NERR_BASE+240) /* This list of devices is invalid. */
+#define NERR_BadDev (NERR_BASE+241) /* The requested device is invalid. */
+#define NERR_InUseBySpooler (NERR_BASE+242) /* This device is already in use by the spooler. */
+#define NERR_CommDevInUse (NERR_BASE+243) /* This device is already in use as a communication device. */
+
+/*
+ * NetICanonicalize and NetIType and NetIMakeLMFileName
+ * NetIListCanon and NetINameCheck
+ * Error codes BASE+250 to BASE+269
+ */
+
+#define NERR_InvalidComputer (NERR_BASE+251) /* This computer name is invalid. */
+/* UNUSED BASE+252 */
+/* UNUSED BASE+253 */
+#define NERR_MaxLenExceeded (NERR_BASE+254) /* The string and prefix specified are too long. */
+/* UNUSED BASE+255 */
+#define NERR_BadComponent (NERR_BASE+256) /* This path component is invalid. */
+#define NERR_CantType (NERR_BASE+257) /* Could not determine the type of input. */
+/* UNUSED BASE+258 */
+/* UNUSED BASE+259 */
+#define NERR_TooManyEntries (NERR_BASE+262) /* The buffer for types is not big enough. */
+
+/*
+ * NetProfile
+ * Error codes BASE+270 to BASE+276
+ */
+
+#define NERR_ProfileFileTooBig (NERR_BASE+270) /* Profile files cannot exceed 64K. */
+#define NERR_ProfileOffset (NERR_BASE+271) /* The start offset is out of range. */
+#define NERR_ProfileCleanup (NERR_BASE+272) /* The system cannot delete current connections to network resources. */
+#define NERR_ProfileUnknownCmd (NERR_BASE+273) /* The system was unable to parse the command line in this file.*/
+#define NERR_ProfileLoadErr (NERR_BASE+274) /* An error occurred while loading the profile file. */
+#define NERR_ProfileSaveErr (NERR_BASE+275) /* @W Errors occurred while saving the profile file. The profile was partially saved. */
+
+
+/*
+ * NetAudit and NetErrorLog
+ * Error codes BASE+277 to BASE+279
+ */
+
+#define NERR_LogOverflow (NERR_BASE+277) /* Log file %1 is full. */
+#define NERR_LogFileChanged (NERR_BASE+278) /* This log file has changed between reads. */
+#define NERR_LogFileCorrupt (NERR_BASE+279) /* Log file %1 is corrupt. */
+
+
+/*
+ * NetRemote
+ * Error codes BASE+280 to BASE+299
+ */
+#define NERR_SourceIsDir (NERR_BASE+280) /* The source path cannot be a directory. */
+#define NERR_BadSource (NERR_BASE+281) /* The source path is illegal. */
+#define NERR_BadDest (NERR_BASE+282) /* The destination path is illegal. */
+#define NERR_DifferentServers (NERR_BASE+283) /* The source and destination paths are on different servers. */
+/* UNUSED BASE+284 */
+#define NERR_RunSrvPaused (NERR_BASE+285) /* The Run server you requested is paused. */
+/* UNUSED BASE+286 */
+/* UNUSED BASE+287 */
+/* UNUSED BASE+288 */
+#define NERR_ErrCommRunSrv (NERR_BASE+289) /* An error occurred when communicating with a Run server. */
+/* UNUSED BASE+290 */
+#define NERR_ErrorExecingGhost (NERR_BASE+291) /* An error occurred when starting a background process. */
+#define NERR_ShareNotFound (NERR_BASE+292) /* The shared resource you are connected to could not be found.*/
+/* UNUSED BASE+293 */
+/* UNUSED BASE+294 */
+
+
+/*
+ * NetWksta.sys (redir) returned error codes.
+ *
+ * NERR_BASE + (300-329)
+ */
+
+#define NERR_InvalidLana (NERR_BASE+300) /* The LAN adapter number is invalid. */
+#define NERR_OpenFiles (NERR_BASE+301) /* There are open files on the connection. */
+#define NERR_ActiveConns (NERR_BASE+302) /* Active connections still exist. */
+#define NERR_BadPasswordCore (NERR_BASE+303) /* This share name or password is invalid. */
+#define NERR_DevInUse (NERR_BASE+304) /* The device is being accessed by an active process. */
+#define NERR_LocalDrive (NERR_BASE+305) /* The drive letter is in use locally. */
+
+/*
+ * Alert error codes.
+ *
+ * NERR_BASE + (330-339)
+ */
+#define NERR_AlertExists (NERR_BASE+330) /* The specified client is already registered for the specified event. */
+#define NERR_TooManyAlerts (NERR_BASE+331) /* The alert table is full. */
+#define NERR_NoSuchAlert (NERR_BASE+332) /* An invalid or nonexistent alert name was raised. */
+#define NERR_BadRecipient (NERR_BASE+333) /* The alert recipient is invalid.*/
+#define NERR_AcctLimitExceeded (NERR_BASE+334) /* A user's session with this server has been deleted
+ * because the user's logon hours are no longer valid. */
+
+/*
+ * Additional Error and Audit log codes.
+ *
+ * NERR_BASE +(340-343)
+ */
+#define NERR_InvalidLogSeek (NERR_BASE+340) /* The log file does not contain the requested record number. */
+/* UNUSED BASE+341 */
+/* UNUSED BASE+342 */
+/* UNUSED BASE+343 */
+
+/*
+ * Additional UAS and NETLOGON codes
+ *
+ * NERR_BASE +(350-359)
+ */
+#define NERR_BadUasConfig (NERR_BASE+350) /* The user accounts database is not configured correctly. */
+#define NERR_InvalidUASOp (NERR_BASE+351) /* This operation is not permitted when the Netlogon service is running. */
+#define NERR_LastAdmin (NERR_BASE+352) /* This operation is not allowed on the last administrative account. */
+#define NERR_DCNotFound (NERR_BASE+353) /* Could not find domain controller for this domain. */
+#define NERR_LogonTrackingError (NERR_BASE+354) /* Could not set logon information for this user. */
+#define NERR_NetlogonNotStarted (NERR_BASE+355) /* The Netlogon service has not been started. */
+#define NERR_CanNotGrowUASFile (NERR_BASE+356) /* Unable to add to the user accounts database. */
+#define NERR_TimeDiffAtDC (NERR_BASE+357) /* This server's clock is not synchronized with the primary domain controller's clock. */
+#define NERR_PasswordMismatch (NERR_BASE+358) /* A password mismatch has been detected. */
+
+
+/*
+ * Server Integration error codes.
+ *
+ * NERR_BASE +(360-369)
+ */
+#define NERR_NoSuchServer (NERR_BASE+360) /* The server identification does not specify a valid server. */
+#define NERR_NoSuchSession (NERR_BASE+361) /* The session identification does not specify a valid session. */
+#define NERR_NoSuchConnection (NERR_BASE+362) /* The connection identification does not specify a valid connection. */
+#define NERR_TooManyServers (NERR_BASE+363) /* There is no space for another entry in the table of available servers. */
+#define NERR_TooManySessions (NERR_BASE+364) /* The server has reached the maximum number of sessions it supports. */
+#define NERR_TooManyConnections (NERR_BASE+365) /* The server has reached the maximum number of connections it supports. */
+#define NERR_TooManyFiles (NERR_BASE+366) /* The server cannot open more files because it has reached its maximum number. */
+#define NERR_NoAlternateServers (NERR_BASE+367) /* There are no alternate servers registered on this server. */
+/* UNUSED BASE+368 */
+/* UNUSED BASE+369 */
+
+#define NERR_TryDownLevel (NERR_BASE+370) /* Try down-level (remote admin protocol) version of API instead. */
+
+/*
+ * UPS error codes.
+ *
+ * NERR_BASE + (380-384)
+ */
+#define NERR_UPSDriverNotStarted (NERR_BASE+380) /* The UPS driver could not be accessed by the UPS service. */
+#define NERR_UPSInvalidConfig (NERR_BASE+381) /* The UPS service is not configured correctly. */
+#define NERR_UPSInvalidCommPort (NERR_BASE+382) /* The UPS service could not access the specified Comm Port. */
+#define NERR_UPSSignalAsserted (NERR_BASE+383) /* The UPS indicated a line fail or low battery situation. Service not started. */
+#define NERR_UPSShutdownFailed (NERR_BASE+384) /* The UPS service failed to perform a system shut down. */
+
+/*
+ * Remoteboot error codes.
+ *
+ * NERR_BASE + (400-419)
+ * Error codes 400 - 405 are used by RPLBOOT.SYS.
+ * Error codes 403, 407 - 416 are used by RPLLOADR.COM,
+ * Error code 417 is the alerter message of REMOTEBOOT (RPLSERVR.EXE).
+ * Error code 418 is for when REMOTEBOOT can't start
+ * Error code 419 is for a disallowed 2nd rpl connection
+ *
+ */
+#define NERR_BadDosRetCode (NERR_BASE+400) /* The program below returned an MS-DOS error code:*/
+#define NERR_ProgNeedsExtraMem (NERR_BASE+401) /* The program below needs more memory:*/
+#define NERR_BadDosFunction (NERR_BASE+402) /* The program below called an unsupported MS-DOS function:*/
+#define NERR_RemoteBootFailed (NERR_BASE+403) /* The workstation failed to boot.*/
+#define NERR_BadFileCheckSum (NERR_BASE+404) /* The file below is corrupt.*/
+#define NERR_NoRplBootSystem (NERR_BASE+405) /* No loader is specified in the boot-block definition file.*/
+#define NERR_RplLoadrNetBiosErr (NERR_BASE+406) /* NetBIOS returned an error: The NCB and SMB are dumped above.*/
+#define NERR_RplLoadrDiskErr (NERR_BASE+407) /* A disk I/O error occurred.*/
+#define NERR_ImageParamErr (NERR_BASE+408) /* Image parameter substitution failed.*/
+#define NERR_TooManyImageParams (NERR_BASE+409) /* Too many image parameters cross disk sector boundaries.*/
+#define NERR_NonDosFloppyUsed (NERR_BASE+410) /* The image was not generated from an MS-DOS diskette formatted with /S.*/
+#define NERR_RplBootRestart (NERR_BASE+411) /* Remote boot will be restarted later.*/
+#define NERR_RplSrvrCallFailed (NERR_BASE+412) /* The call to the Remoteboot server failed.*/
+#define NERR_CantConnectRplSrvr (NERR_BASE+413) /* Cannot connect to the Remoteboot server.*/
+#define NERR_CantOpenImageFile (NERR_BASE+414) /* Cannot open image file on the Remoteboot server.*/
+#define NERR_CallingRplSrvr (NERR_BASE+415) /* Connecting to the Remoteboot server...*/
+#define NERR_StartingRplBoot (NERR_BASE+416) /* Connecting to the Remoteboot server...*/
+#define NERR_RplBootServiceTerm (NERR_BASE+417) /* Remote boot service was stopped; check the error log for the cause of the problem.*/
+#define NERR_RplBootStartFailed (NERR_BASE+418) /* Remote boot startup failed; check the error log for the cause of the problem.*/
+#define NERR_RPL_CONNECTED (NERR_BASE+419) /* A second connection to a Remoteboot resource is not allowed.*/
+
+/*
+ * FTADMIN API error codes
+ *
+ * NERR_BASE + (425-434)
+ *
+ * (Currently not used in NT)
+ *
+ */
+
+/*
+ * Browser service API error codes
+ *
+ * NERR_BASE + (450-475)
+ *
+ */
+#define NERR_BrowserConfiguredToNotRun (NERR_BASE+450) /* The browser service was configured with MaintainServerList=No. */
+
+/*
+ * Additional Remoteboot error codes.
+ *
+ * NERR_BASE + (510-550)
+ */
+#define NERR_RplNoAdaptersStarted (NERR_BASE+510) /*Service failed to start since none of the network adapters started with this service.*/
+#define NERR_RplBadRegistry (NERR_BASE+511) /*Service failed to start due to bad startup information in the registry.*/
+#define NERR_RplBadDatabase (NERR_BASE+512) /*Service failed to start because its database is absent or corrupt.*/
+#define NERR_RplRplfilesShare (NERR_BASE+513) /*Service failed to start because RPLFILES share is absent.*/
+#define NERR_RplNotRplServer (NERR_BASE+514) /*Service failed to start because RPLUSER group is absent.*/
+#define NERR_RplCannotEnum (NERR_BASE+515) /*Cannot enumerate service records.*/
+#define NERR_RplWkstaInfoCorrupted (NERR_BASE+516) /*Workstation record information has been corrupted.*/
+#define NERR_RplWkstaNotFound (NERR_BASE+517) /*Workstation record was not found.*/
+#define NERR_RplWkstaNameUnavailable (NERR_BASE+518) /*Workstation name is in use by some other workstation.*/
+#define NERR_RplProfileInfoCorrupted (NERR_BASE+519) /*Profile record information has been corrupted.*/
+#define NERR_RplProfileNotFound (NERR_BASE+520) /*Profile record was not found.*/
+#define NERR_RplProfileNameUnavailable (NERR_BASE+521) /*Profile name is in use by some other profile.*/
+#define NERR_RplProfileNotEmpty (NERR_BASE+522) /*There are workstations using this profile.*/
+#define NERR_RplConfigInfoCorrupted (NERR_BASE+523) /*Configuration record information has been corrupted.*/
+#define NERR_RplConfigNotFound (NERR_BASE+524) /*Configuration record was not found.*/
+#define NERR_RplAdapterInfoCorrupted (NERR_BASE+525) /*Adapter id record information has been corrupted.*/
+#define NERR_RplInternal (NERR_BASE+526) /*An internal service error has occured.*/
+#define NERR_RplVendorInfoCorrupted (NERR_BASE+527) /*Vendor id record information has been corrupted.*/
+#define NERR_RplBootInfoCorrupted (NERR_BASE+528) /*Boot block record information has been corrupted.*/
+#define NERR_RplWkstaNeedsUserAcct (NERR_BASE+529) /*The user account for this workstation record is missing.*/
+#define NERR_RplNeedsRPLUSERAcct (NERR_BASE+530) /*The RPLUSER local group could not be found.*/
+#define NERR_RplBootNotFound (NERR_BASE+531) /*Boot block record was not found.*/
+#define NERR_RplIncompatibleProfile (NERR_BASE+532) /*Chosen profile is incompatible with this workstation.*/
+#define NERR_RplAdapterNameUnavailable (NERR_BASE+533) /*Chosen network adapter id is in use by some other workstation.*/
+#define NERR_RplConfigNotEmpty (NERR_BASE+534) /*There are profiles using this configuration.*/
+#define NERR_RplBootInUse (NERR_BASE+535) /*There are workstations, profiles or configurations using this boot block.*/
+#define NERR_RplBackupDatabase (NERR_BASE+536) /*Service failed to backup remoteboot database.*/
+#define NERR_RplAdapterNotFound (NERR_BASE+537) /*Adapter record was not found.*/
+#define NERR_RplVendorNotFound (NERR_BASE+538) /*Vendor record was not found.*/
+#define NERR_RplVendorNameUnavailable (NERR_BASE+539) /*Vendor name is in use by some other vendor record.*/
+#define NERR_RplBootNameUnavailable (NERR_BASE+540) /*(boot name, vendor id) is in use by some other boot block record.*/
+#define NERR_RplConfigNameUnavailable (NERR_BASE+541) /*Configuration name is in use by some other configuration.*/
+
+/**INTERNAL_ONLY**/
+
+/*
+ * Dfs API error codes.
+ *
+ * NERR_BASE + (560-590)
+ */
+
+#define NERR_DfsInternalCorruption (NERR_BASE+560) /*The internal database maintained by the Dfs service is corrupt*/
+#define NERR_DfsVolumeDataCorrupt (NERR_BASE+561) /*One of the records in the internal Dfs database is corrupt*/
+#define NERR_DfsNoSuchVolume (NERR_BASE+562) /*There is no volume whose entry path matches the input Entry Path*/
+#define NERR_DfsVolumeAlreadyExists (NERR_BASE+563) /*A volume with the given name already exists*/
+#define NERR_DfsAlreadyShared (NERR_BASE+564) /*The server share specified is already shared in the Dfs*/
+#define NERR_DfsNoSuchShare (NERR_BASE+565) /*The indicated server share does not support the indicated Dfs volume*/
+#define NERR_DfsNotALeafVolume (NERR_BASE+566) /*The operation is not valid on a non-leaf volume*/
+#define NERR_DfsLeafVolume (NERR_BASE+567) /*The operation is not valid on a leaf volume*/
+#define NERR_DfsVolumeHasMultipleServers (NERR_BASE+568) /*The operation is ambiguous because the volume has multiple servers*/
+#define NERR_DfsCantCreateJunctionPoint (NERR_BASE+569) /*Unable to create a junction point*/
+#define NERR_DfsServerNotDfsAware (NERR_BASE+570) /*The server is not Dfs Aware*/
+#define NERR_DfsBadRenamePath (NERR_BASE+571) /*The specified rename target path is invalid*/
+#define NERR_DfsVolumeIsOffline (NERR_BASE+572) /*The specified Dfs volume is offline*/
+#define NERR_DfsNoSuchServer (NERR_BASE+573) /*The specified server is not a server for this volume*/
+#define NERR_DfsCyclicalName (NERR_BASE+574) /*A cycle in the Dfs name was detected*/
+#define NERR_DfsNotSupportedInServerDfs (NERR_BASE+575) /*The operation is not supported on a server-based Dfs*/
+#define NERR_DfsInternalError (NERR_BASE+590) /*Dfs internal error*/
+
+/***********WARNING ****************
+ *The range 2750-2799 has been *
+ *allocated to the IBM LAN Server *
+ ***********************************/
+
+/***********WARNING ****************
+ *The range 2900-2999 has been *
+ *reserved for Microsoft OEMs *
+ ***********************************/
+
+/**END_INTERNAL**/
+
+#define MAX_NERR (NERR_BASE+899) /* This is the last error in NERR range. */
+
+/*
+ * end of list
+ *
+ * WARNING: Do not exceed MAX_NERR; values above this are used by
+ * other error code ranges (errlog.h, service.h, apperr.h).
+ */
+
+
+/*NOINC*/
+#endif /* NETERR_INCLUDED */
+/*INC*/
+
diff --git a/public/sdk/inc/lmerrlog.h b/public/sdk/inc/lmerrlog.h
new file mode 100644
index 000000000..df8c16ebb
--- /dev/null
+++ b/public/sdk/inc/lmerrlog.h
@@ -0,0 +1,1258 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmerrlog.h
+
+Abstract:
+
+ This module defines the API function prototypes and data structures
+ for the following groups of NT API functions:
+ NetErrorLog
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+--*/
+
+#ifndef _LMERRLOG_
+#define _LMERRLOG_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Data Structures - Config
+//
+
+typedef struct _ERROR_LOG {
+ DWORD el_len;
+ DWORD el_reserved;
+ DWORD el_time;
+ DWORD el_error;
+ LPWSTR el_name; // pointer to service name
+ LPWSTR el_text; // pointer to string array
+ LPBYTE el_data; // pointer to BYTE array
+ DWORD el_data_size; // byte count of el_data area
+ DWORD el_nstrings; // number of strings in el_text.
+} ERROR_LOG, *PERROR_LOG, *LPERROR_LOG;
+
+
+// BUGBUG: Temporary to let users ifdef on this struct layout.
+#define REVISED_ERROR_LOG_STRUCT
+
+
+#ifndef _LMHLOGDEFINED_
+#define _LMHLOGDEFINED_
+
+typedef struct _HLOG {
+ DWORD time;
+ DWORD last_flags;
+ DWORD offset;
+ DWORD rec_offset;
+} HLOG, *PHLOG, *LPHLOG;
+
+#define LOGFLAGS_FORWARD 0
+#define LOGFLAGS_BACKWARD 0x1
+#define LOGFLAGS_SEEK 0x2
+
+#endif
+
+//
+// Function Prototypes - ErrorLog
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetErrorLogClear (
+ IN LPCWSTR server,
+ IN LPCWSTR backupfile,
+ IN LPBYTE reserved
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetErrorLogRead (
+ IN LPCWSTR server,
+ IN LPWSTR reserved1,
+ IN LPHLOG errloghandle,
+ IN DWORD offset,
+ IN LPDWORD reserved2,
+ IN DWORD reserved3,
+ IN DWORD offsetflag,
+ OUT LPBYTE * bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD bytesread,
+ OUT LPDWORD totalbytes
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetErrorLogWrite (
+ IN LPBYTE reserved1,
+ IN DWORD code,
+ IN LPCWSTR component,
+ IN LPBYTE buffer,
+ IN DWORD numbytes,
+ IN LPBYTE msgbuf,
+ IN DWORD strcount,
+ IN LPBYTE reserved2
+ );
+
+//
+// Special Values and Constants
+//
+
+
+//
+// Generic (could be used by more than one service)
+// error log messages from 0 to 25
+//
+// Do not change the comments following the manifest constants without
+// understanding how mapmsg works.
+//
+
+#define ERRLOG_BASE 3100 /* NELOG errors start here */
+
+#define NELOG_Internal_Error (ERRLOG_BASE + 0)
+ /*
+ * The operation failed because a network software error occurred.
+ */
+
+#define NELOG_Resource_Shortage (ERRLOG_BASE + 1)
+ /*
+ * The system ran out of a resource controlled by the %1 option.
+ */
+
+#define NELOG_Unable_To_Lock_Segment (ERRLOG_BASE + 2)
+ /*
+ * The service failed to obtain a long-term lock on the
+ * segment for network control blocks (NCBs). The error code is the data.
+ */
+
+#define NELOG_Unable_To_Unlock_Segment (ERRLOG_BASE + 3)
+ /*
+ * The service failed to release the long-term lock on the
+ * segment for network control blocks (NCBs). The error code is the data.
+ */
+
+#define NELOG_Uninstall_Service (ERRLOG_BASE + 4)
+ /*
+ * There was an error stopping service %1.
+ * The error code from NetServiceControl is the data.
+ */
+
+#define NELOG_Init_Exec_Fail (ERRLOG_BASE + 5)
+ /*
+ * Initialization failed because of a system execution failure on
+ * path %1. The system error code is the data.
+ */
+
+#define NELOG_Ncb_Error (ERRLOG_BASE + 6)
+ /*
+ * An unexpected network control block (NCB) was received. The NCB is the data.
+ */
+
+#define NELOG_Net_Not_Started (ERRLOG_BASE + 7)
+ /*
+ * The network is not started.
+ */
+
+#define NELOG_Ioctl_Error (ERRLOG_BASE + 8)
+ /*
+ * A DosDevIoctl or DosFsCtl to NETWKSTA.SYS failed.
+ * The data shown is in this format:
+ * DWORD approx CS:IP of call to ioctl or fsctl
+ * WORD error code
+ * WORD ioctl or fsctl number
+ */
+
+#define NELOG_System_Semaphore (ERRLOG_BASE + 9)
+ /*
+ * Unable to create or open system semaphore %1.
+ * The error code is the data.
+ */
+
+#define NELOG_Init_OpenCreate_Err (ERRLOG_BASE + 10)
+ /*
+ * Initialization failed because of an open/create error on the
+ * file %1. The system error code is the data.
+ */
+
+#define NELOG_NetBios (ERRLOG_BASE + 11)
+ /*
+ * An unexpected NetBIOS error occurred.
+ * The error code is the data.
+ */
+
+#define NELOG_SMB_Illegal (ERRLOG_BASE + 12)
+ /*
+ * An illegal server message block (SMB) was received.
+ * The SMB is the data.
+ */
+
+#define NELOG_Service_Fail (ERRLOG_BASE + 13)
+ /*
+ * Initialization failed because the requested service %1
+ * could not be started.
+ */
+
+#define NELOG_Entries_Lost (ERRLOG_BASE + 14)
+ /*
+ * Some entries in the error log were lost because of a buffer
+ * overflow.
+ */
+
+
+//
+// Server specific error log messages from 20 to 40
+//
+
+#define NELOG_Init_Seg_Overflow (ERRLOG_BASE + 20)
+ /*
+ * Initialization parameters controlling resource usage other
+ * than net buffers are sized so that too much memory is needed.
+ */
+
+#define NELOG_Srv_No_Mem_Grow (ERRLOG_BASE + 21)
+ /*
+ * The server cannot increase the size of a memory segment.
+ */
+
+#define NELOG_Access_File_Bad (ERRLOG_BASE + 22)
+ /*
+ * Initialization failed because account file %1 is either incorrect
+ * or not present.
+ */
+
+#define NELOG_Srvnet_Not_Started (ERRLOG_BASE + 23)
+ /*
+ * Initialization failed because network %1 was not started.
+ */
+
+#define NELOG_Init_Chardev_Err (ERRLOG_BASE + 24)
+ /*
+ * The server failed to start. Either all three chdev
+ * parameters must be zero or all three must be nonzero.
+ */
+
+#define NELOG_Remote_API (ERRLOG_BASE + 25)
+ /* A remote API request was halted due to the following
+ * invalid description string: %1.
+ */
+
+#define NELOG_Ncb_TooManyErr (ERRLOG_BASE + 26)
+ /* The network %1 ran out of network control blocks (NCBs). You may need to increase NCBs
+ * for this network. The following information includes the
+ * number of NCBs submitted by the server when this error occurred:
+ */
+
+#define NELOG_Mailslot_err (ERRLOG_BASE + 27)
+ /* The server cannot create the %1 mailslot needed to send
+ * the ReleaseMemory alert message. The error received is:
+ */
+
+#define NELOG_ReleaseMem_Alert (ERRLOG_BASE + 28)
+ /* The server failed to register for the ReleaseMemory alert,
+ * with recipient %1. The error code from
+ * NetAlertStart is the data.
+ */
+
+#define NELOG_AT_cannot_write (ERRLOG_BASE + 29)
+ /* The server cannot update the AT schedule file. The file
+ * is corrupted.
+ */
+
+#define NELOG_Cant_Make_Msg_File (ERRLOG_BASE + 30)
+ /* The server encountered an error when calling
+ * NetIMakeLMFileName. The error code is the data.
+ */
+
+#define NELOG_Exec_Netservr_NoMem (ERRLOG_BASE + 31)
+ /* Initialization failed because of a system execution failure on
+ * path %1. There is not enough memory to start the process.
+ * The system error code is the data.
+ */
+
+#define NELOG_Server_Lock_Failure (ERRLOG_BASE + 32)
+ /* Longterm lock of the server buffers failed.
+ * Check swap disk's free space and restart the system to start the server.
+ */
+
+//
+// Message service and POPUP specific error log messages from 40 to 55
+//
+
+#define NELOG_Msg_Shutdown (ERRLOG_BASE + 40)
+ /*
+ * The service has stopped due to repeated consecutive
+ * occurrences of a network control block (NCB) error. The last bad NCB follows
+ * in raw data.
+ */
+
+#define NELOG_Msg_Sem_Shutdown (ERRLOG_BASE + 41)
+ /*
+ * The Message server has stopped due to a lock on the
+ * Message server shared data segment.
+ */
+
+#define NELOG_Msg_Log_Err (ERRLOG_BASE + 50)
+ /*
+ * A file system error occurred while opening or writing to the
+ * system message log file %1. Message logging has been
+ * switched off due to the error. The error code is the data.
+ */
+
+
+
+#define NELOG_VIO_POPUP_ERR (ERRLOG_BASE + 51)
+ /*
+ * Unable to display message POPUP due to system VIO call error.
+ * The error code is the data.
+ */
+
+#define NELOG_Msg_Unexpected_SMB_Type (ERRLOG_BASE + 52)
+ /*
+ * An illegal server message block (SMB) was received. The SMB is the data.
+ */
+
+//
+// Workstation specific error log messages from 60 to 75
+//
+
+
+#define NELOG_Wksta_Infoseg (ERRLOG_BASE + 60)
+ /*
+ * The workstation information segment is bigger than 64K.
+ * The size follows, in DWORD format:
+ */
+
+#define NELOG_Wksta_Compname (ERRLOG_BASE + 61)
+ /*
+ * The workstation was unable to get the name-number of the computer.
+ */
+
+#define NELOG_Wksta_BiosThreadFailure (ERRLOG_BASE + 62)
+ /*
+ * The workstation could not initialize the Async NetBIOS Thread.
+ * The error code is the data.
+ */
+
+#define NELOG_Wksta_IniSeg (ERRLOG_BASE + 63)
+ /*
+ * The workstation could not open the initial shared segment.
+ * The error code is the data.
+ */
+
+#define NELOG_Wksta_HostTab_Full (ERRLOG_BASE + 64)
+ /*
+ * The workstation host table is full.
+ */
+
+#define NELOG_Wksta_Bad_Mailslot_SMB (ERRLOG_BASE + 65)
+ /*
+ * A bad mailslot server message block (SMB) was received. The SMB is the data.
+ */
+
+#define NELOG_Wksta_UASInit (ERRLOG_BASE + 66)
+ /*
+ * The workstation encountered an error while trying to start the user accounts database.
+ * The error code is the data.
+ */
+
+#define NELOG_Wksta_SSIRelogon (ERRLOG_BASE + 67)
+ /*
+ * The workstation encountered an error while responding to an SSI revalidation request.
+ * The function code and the error codes are the data.
+ */
+
+//
+// Alerter service specific error log messages from 70 to 79
+//
+
+
+#define NELOG_Build_Name (ERRLOG_BASE + 70)
+ /*
+ * The Alerter service had a problem creating the list of
+ * alert recipients. The error code is %1.
+ */
+
+#define NELOG_Name_Expansion (ERRLOG_BASE + 71)
+ /*
+ * There was an error expanding %1 as a group name. Try
+ * splitting the group into two or more smaller groups.
+ */
+
+#define NELOG_Message_Send (ERRLOG_BASE + 72)
+ /*
+ * There was an error sending %2 the alert message -
+ * (
+ * %3 )
+ * The error code is %1.
+ */
+
+#define NELOG_Mail_Slt_Err (ERRLOG_BASE + 73)
+ /*
+ * There was an error in creating or reading the alerter mailslot.
+ * The error code is %1.
+ */
+
+#define NELOG_AT_cannot_read (ERRLOG_BASE + 74)
+ /*
+ * The server could not read the AT schedule file.
+ */
+
+#define NELOG_AT_sched_err (ERRLOG_BASE + 75)
+ /*
+ * The server found an invalid AT schedule record.
+ */
+
+#define NELOG_AT_schedule_file_created (ERRLOG_BASE + 76)
+ /*
+ * The server could not find an AT schedule file so it created one.
+ */
+
+#define NELOG_Srvnet_NB_Open (ERRLOG_BASE + 77)
+ /*
+ * The server could not access the %1 network with NetBiosOpen.
+ */
+
+#define NELOG_AT_Exec_Err (ERRLOG_BASE + 78)
+ /*
+ * The AT command processor could not run %1.
+ */
+
+//
+// Cache Lazy Write and HPFS386 specific error log messages from 80 to 89
+//
+
+#define NELOG_Lazy_Write_Err (ERRLOG_BASE + 80)
+ /*
+ * WARNING: Because of a lazy-write error, drive %1 now
+ * contains some corrupted data. The cache is stopped.
+ */
+
+#define NELOG_HotFix (ERRLOG_BASE + 81)
+ /*
+ * A defective sector on drive %1 has been replaced (hotfixed).
+ * No data was lost. You should run CHKDSK soon to restore full
+ * performance and replenish the volume's spare sector pool.
+ *
+ * The hotfix occurred while processing a remote request.
+ */
+
+#define NELOG_HardErr_From_Server (ERRLOG_BASE + 82)
+ /*
+ * A disk error occurred on the HPFS volume in drive %1.
+ * The error occurred while processing a remote request.
+ */
+
+#define NELOG_LocalSecFail1 (ERRLOG_BASE + 83)
+ /*
+ * The user accounts database (NET.ACC) is corrupted. The local security
+ * system is replacing the corrupted NET.ACC with the backup
+ * made at %1.
+ * Any updates made to the database after this time are lost.
+ *
+ */
+
+#define NELOG_LocalSecFail2 (ERRLOG_BASE + 84)
+ /*
+ * The user accounts database (NET.ACC) is missing. The local
+ * security system is restoring the backup database
+ * made at %1.
+ * Any updates made to the database made after this time are lost.
+ *
+ */
+
+#define NELOG_LocalSecFail3 (ERRLOG_BASE + 85)
+ /*
+ * Local security could not be started because the user accounts database
+ * (NET.ACC) was missing or corrupted, and no usable backup
+ * database was present.
+ *
+ * THE SYSTEM IS NOT SECURE.
+ */
+
+#define NELOG_LocalSecGeneralFail (ERRLOG_BASE + 86)
+ /*
+ * Local security could not be started because an error
+ * occurred during initialization. The error code returned is %1.
+ *
+ * THE SYSTEM IS NOT SECURE.
+ *
+ */
+
+//
+// NETWKSTA.SYS specific error log messages from 90 to 99
+//
+
+#define NELOG_NetWkSta_Internal_Error (ERRLOG_BASE + 90)
+ /*
+ * A NetWksta internal error has occurred:
+ * %1
+ */
+
+#define NELOG_NetWkSta_No_Resource (ERRLOG_BASE + 91)
+ /*
+ * The redirector is out of a resource: %1.
+ */
+
+#define NELOG_NetWkSta_SMB_Err (ERRLOG_BASE + 92)
+ /*
+ * A server message block (SMB) error occurred on the connection to %1.
+ * The SMB header is the data.
+ */
+
+#define NELOG_NetWkSta_VC_Err (ERRLOG_BASE + 93)
+ /*
+ * A virtual circuit error occurred on the session to %1.
+ * The network control block (NCB) command and return code is the data.
+ */
+
+#define NELOG_NetWkSta_Stuck_VC_Err (ERRLOG_BASE + 94)
+ /*
+ * Hanging up a stuck session to %1.
+ */
+
+#define NELOG_NetWkSta_NCB_Err (ERRLOG_BASE + 95)
+ /*
+ * A network control block (NCB) error occurred (%1).
+ * The NCB is the data.
+ */
+
+#define NELOG_NetWkSta_Write_Behind_Err (ERRLOG_BASE + 96)
+ /*
+ * A write operation to %1 failed.
+ * Data may have been lost.
+ */
+
+#define NELOG_NetWkSta_Reset_Err (ERRLOG_BASE + 97)
+ /*
+ * Reset of driver %1 failed to complete the network control block (NCB).
+ * The NCB is the data.
+ */
+
+#define NELOG_NetWkSta_Too_Many (ERRLOG_BASE + 98)
+ /*
+ * The amount of resource %1 requested was more
+ * than the maximum. The maximum amount was allocated.
+ */
+
+//
+// Spooler specific error log messages from 100 to 103
+//
+
+#define NELOG_Srv_Thread_Failure (ERRLOG_BASE + 104)
+ /*
+ * The server could not create a thread.
+ * The THREADS parameter in the CONFIG.SYS file should be increased.
+ */
+
+#define NELOG_Srv_Close_Failure (ERRLOG_BASE + 105)
+ /*
+ * The server could not close %1.
+ * The file is probably corrupted.
+ */
+
+#define NELOG_ReplUserCurDir (ERRLOG_BASE + 106)
+ /*
+ *The replicator cannot update directory %1. It has tree integrity
+ * and is the current directory for some process.
+ */
+
+#define NELOG_ReplCannotMasterDir (ERRLOG_BASE + 107)
+ /*
+ *The server cannot export directory %1 to client %2.
+ * It is exported from another server.
+ */
+
+#define NELOG_ReplUpdateError (ERRLOG_BASE + 108)
+ /*
+ *The replication server could not update directory %2 from the source
+ * on %3 due to error %1.
+ */
+
+#define NELOG_ReplLostMaster (ERRLOG_BASE + 109)
+ /*
+ *Master %1 did not send an update notice for directory %2 at the expected
+ * time.
+ */
+
+#define NELOG_NetlogonAuthDCFail (ERRLOG_BASE + 110)
+ /*
+ *Failed to authenticate with %2, a Windows NT domain controller for domain %1.
+ */
+
+#define NELOG_ReplLogonFailed (ERRLOG_BASE + 111)
+ /*
+ *The replicator attempted to log on at %2 as %1 and failed.
+ */
+
+#define NELOG_ReplNetErr (ERRLOG_BASE + 112)
+ /*
+ * Network error %1 occurred.
+ */
+
+#define NELOG_ReplMaxFiles (ERRLOG_BASE + 113)
+ /*
+ * Replicator limit for files in a directory has been exceeded.
+ */
+
+
+#define NELOG_ReplMaxTreeDepth (ERRLOG_BASE + 114)
+ /*
+ * Replicator limit for tree depth has been exceeded.
+ */
+
+#define NELOG_ReplBadMsg (ERRLOG_BASE + 115)
+ /*
+ * Unrecognized message received in mailslot.
+ */
+
+#define NELOG_ReplSysErr (ERRLOG_BASE + 116)
+ /*
+ * System error %1 occurred.
+ */
+
+#define NELOG_ReplUserLoged (ERRLOG_BASE + 117)
+ /*
+ * Cannot log on. User is currently logged on and argument TRYUSER
+ * is set to NO.
+ */
+
+#define NELOG_ReplBadImport (ERRLOG_BASE + 118)
+ /*
+ * IMPORT path %1 cannot be found.
+ */
+
+#define NELOG_ReplBadExport (ERRLOG_BASE + 119)
+ /*
+ * EXPORT path %1 cannot be found.
+ */
+
+#define NELOG_ReplSignalFileErr (ERRLOG_BASE + 120)
+ /*
+ * Replicator failed to update signal file in directory %2 due to
+ * %1 system error.
+ */
+
+#define NELOG_DiskFT (ERRLOG_BASE+121)
+ /*
+ * Disk Fault Tolerance Error
+ *
+ * %1
+ */
+
+#define NELOG_ReplAccessDenied (ERRLOG_BASE + 122)
+ /*
+ * Replicator could not access %2
+ * on %3 due to system error %1.
+ */
+
+#define NELOG_NetlogonFailedPrimary (ERRLOG_BASE + 123)
+ /*
+ *The primary domain controller for domain %1 has apparently failed.
+ */
+
+#define NELOG_NetlogonPasswdSetFailed (ERRLOG_BASE + 124)
+ /*
+ * Changing machine account password for account %1 failed with
+ * the following error: %n%2
+ */
+
+#define NELOG_NetlogonTrackingError (ERRLOG_BASE + 125)
+ /*
+ *An error occurred while updating the logon or logoff information for %1.
+ */
+
+#define NELOG_NetlogonSyncError (ERRLOG_BASE + 126)
+ /*
+ *An error occurred while synchronizing with primary domain controller %1
+ */
+
+//
+// UPS service specific error log messages from 130 to 135
+//
+
+#define NELOG_UPS_PowerOut (ERRLOG_BASE + 130)
+ /*
+ * A power failure was detected at the server.
+ */
+
+#define NELOG_UPS_Shutdown (ERRLOG_BASE + 131)
+ /*
+ * The UPS service performed server shut down.
+ */
+
+#define NELOG_UPS_CmdFileError (ERRLOG_BASE + 132)
+ /*
+ * The UPS service did not complete execution of the
+ * user specified shut down command file.
+ */
+
+#define NELOG_UPS_CannotOpenDriver (ERRLOG_BASE+133)
+ /*
+ * The UPS driver could not be opened. The error code is
+ * the data.
+ */
+
+#define NELOG_UPS_PowerBack (ERRLOG_BASE + 134)
+ /*
+ * Power has been restored.
+ */
+
+#define NELOG_UPS_CmdFileConfig (ERRLOG_BASE + 135)
+ /*
+ * There is a problem with a configuration of user specified
+ * shut down command file.
+ */
+
+#define NELOG_UPS_CmdFileExec (ERRLOG_BASE + 136)
+ /*
+ * The UPS service failed to execute a user specified shutdown
+ * command file %1. The error code is the data.
+ */
+
+//
+// Remoteboot server specific error log messages are from 150 to 157
+//
+
+#define NELOG_Missing_Parameter (ERRLOG_BASE + 150)
+ /*
+ * Initialization failed because of an invalid or missing
+ * parameter in the configuration file %1.
+ */
+
+#define NELOG_Invalid_Config_Line (ERRLOG_BASE + 151)
+ /*
+ * Initialization failed because of an invalid line in the
+ * configuration file %1. The invalid line is the data.
+ */
+
+#define NELOG_Invalid_Config_File (ERRLOG_BASE + 152)
+ /*
+ * Initialization failed because of an error in the configuration
+ * file %1.
+ */
+
+#define NELOG_File_Changed (ERRLOG_BASE + 153)
+ /*
+ * The file %1 has been changed after initialization.
+ * The boot-block loading was temporarily terminated.
+ */
+
+#define NELOG_Files_Dont_Fit (ERRLOG_BASE + 154)
+ /*
+ * The files do not fit to the boot-block configuration
+ * file %1. Change the BASE and ORG definitions or the order
+ * of the files.
+ */
+
+#define NELOG_Wrong_DLL_Version (ERRLOG_BASE + 155)
+ /*
+ * Initialization failed because the dynamic-link
+ * library %1 returned an incorrect version number.
+ */
+
+#define NELOG_Error_in_DLL (ERRLOG_BASE + 156)
+ /*
+ * There was an unrecoverable error in the dynamic-
+ * link library of the service.
+ */
+
+#define NELOG_System_Error (ERRLOG_BASE + 157)
+ /*
+ * The system returned an unexpected error code.
+ * The error code is the data.
+ */
+
+#define NELOG_FT_ErrLog_Too_Large (ERRLOG_BASE + 158)
+ /*
+ * The fault-tolerance error log file, LANROOT\LOGS\FT.LOG,
+ * is more than 64K.
+ */
+
+#define NELOG_FT_Update_In_Progress (ERRLOG_BASE + 159)
+ /*
+ * The fault-tolerance error-log file, LANROOT\LOGS\FT.LOG, had the
+ * update in progress bit set upon opening, which means that the
+ * system crashed while working on the error log.
+ */
+
+
+//
+// Microsoft has created a generic error log entry for OEMs to use to
+// log errors from OEM value added services. The code, which is the
+// 2nd arg to NetErrorLogWrite, is 3299. This value is manifest in
+// NET/H/ERRLOG.H as NELOG_OEM_Code. The text for error log entry
+// NELOG_OEM_Code is: "%1 %2 %3 %4 %5 %6 %7 %8 %9.".
+//
+// Microsoft suggests that OEMs use the insertion strings as follows:
+// %1: OEM System Name (e.g. 3+Open)
+// %2: OEM Service Name (e.g. 3+Mail)
+// %3: Severity level (e.g. error, warning, etc.)
+// %4: OEM error log entry sub-identifier (e.g. error code #)
+// %5 - % 9: Text.
+//
+// The call to NetErrorWrite must set nstrings = 9, and provide 9
+// ASCIIZ strings. If the caller does not have 9 insertion strings,
+// provide null strings for the empty insertion strings.
+//
+
+#define NELOG_OEM_Code (ERRLOG_BASE + 199)
+ /*
+ * %1 %2 %3 %4 %5 %6 %7 %8 %9.
+ */
+
+//
+// another error log range defined for NT Lanman.
+//
+
+#define ERRLOG2_BASE 5700 /* New NT NELOG errors start here */
+
+#define NELOG_NetlogonSSIInitError (ERRLOG2_BASE + 0)
+ /*
+ * The Netlogon service could not initialize the replication data
+ * structures successfully. The service was terminated. The following
+ * error occurred: %n%1
+ */
+
+#define NELOG_NetlogonFailedToUpdateTrustList (ERRLOG2_BASE + 1)
+ /*
+ * The Netlogon service failed to update the domain trust list. The
+ * following error occurred: %n%1
+ */
+
+#define NELOG_NetlogonFailedToAddRpcInterface (ERRLOG2_BASE + 2)
+ /*
+ * The Netlogon service could not add the RPC interface. The
+ * service was terminated. The following error occurred: %n%1
+ */
+
+#define NELOG_NetlogonFailedToReadMailslot (ERRLOG2_BASE + 3)
+ /*
+ * The Netlogon service could not read a mailslot message from %1 due
+ * to the following error: %n%2
+ */
+
+#define NELOG_NetlogonFailedToRegisterSC (ERRLOG2_BASE + 4)
+ /*
+ * The Netlogon service failed to register the service with the
+ * service controller. The service was terminated. The following
+ * error occurred: %n%1
+ */
+
+#define NELOG_NetlogonChangeLogCorrupt (ERRLOG2_BASE + 5)
+ /*
+ * The change log cache maintained by the Netlogon service for
+ * database changes is corrupted. The Netlogon service is resetting
+ * the change log.
+ */
+
+#define NELOG_NetlogonFailedToCreateShare (ERRLOG2_BASE + 6)
+ /*
+ * The Netlogon service could not create server share %1. The following
+ * error occurred: %n%2
+ */
+
+#define NELOG_NetlogonDownLevelLogonFailed (ERRLOG2_BASE + 7)
+ /*
+ * The down-level logon request for the user %1 from %2 failed.
+ */
+
+#define NELOG_NetlogonDownLevelLogoffFailed (ERRLOG2_BASE + 8)
+ /*
+ * The down-level logoff request for the user %1 from %2 failed.
+ */
+
+#define NELOG_NetlogonNTLogonFailed (ERRLOG2_BASE + 9)
+ /*
+ * The Windows NT %1 logon request for the user %2\%3 from %4 (via %5)
+ * failed.
+ */
+
+#define NELOG_NetlogonNTLogoffFailed (ERRLOG2_BASE + 10)
+ /*
+ * The Windows NT %1 logoff request for the user %2\%3 from %4
+ * failed.
+ */
+
+#define NELOG_NetlogonPartialSyncCallSuccess (ERRLOG2_BASE + 11)
+ /*
+ * The partial synchronization request from the server %1 completed
+ * successfully. %2 changes(s) has(have) been returned to the
+ * caller.
+ */
+
+#define NELOG_NetlogonPartialSyncCallFailed (ERRLOG2_BASE + 12)
+ /*
+ * The partial synchronization request from the server %1 failed with
+ * the following error: %n%2
+ */
+
+#define NELOG_NetlogonFullSyncCallSuccess (ERRLOG2_BASE + 13)
+ /*
+ * The full synchronization request from the server %1 completed
+ * successfully. %2 object(s) has(have) been returned to
+ * the caller.
+ */
+
+#define NELOG_NetlogonFullSyncCallFailed (ERRLOG2_BASE + 14)
+ /*
+ * The full synchronization request from the server %1 failed with
+ * the following error: %n%2
+ */
+
+#define NELOG_NetlogonPartialSyncSuccess (ERRLOG2_BASE + 15)
+ /*
+ * The partial synchronization replication of the %1 database from the
+ * primary domain controller %2 completed successfully. %3 change(s) is(are)
+ * applied to the database.
+ */
+
+
+#define NELOG_NetlogonPartialSyncFailed (ERRLOG2_BASE + 16)
+ /*
+ * The partial synchronization replication of the %1 database from the
+ * primary domain controller %2 failed with the following error: %n%3
+ */
+
+#define NELOG_NetlogonFullSyncSuccess (ERRLOG2_BASE + 17)
+ /*
+ * The full synchronization replication of the %1 database from the
+ * primary domain controller %2 completed successfully.
+ */
+
+
+#define NELOG_NetlogonFullSyncFailed (ERRLOG2_BASE + 18)
+ /*
+ * The full synchronization replication of the %1 database from the
+ * primary domain controller %2 failed with the following error: %n%3
+ */
+
+#define NELOG_NetlogonAuthNoDomainController (ERRLOG2_BASE + 19)
+ /*
+ * No Windows NT Domain Controller is available for domain %1.
+ * (This event is expected and can be ignored when booting with
+ * the 'No Net' Hardware Profile.) The following error occurred:%n%2
+ */
+
+#define NELOG_NetlogonAuthNoTrustLsaSecret (ERRLOG2_BASE + 20)
+ /*
+ * The session setup to the Windows NT Domain Controller %1 for the domain %2
+ * failed because the computer %3 does not have a local security database account.
+ */
+
+#define NELOG_NetlogonAuthNoTrustSamAccount (ERRLOG2_BASE + 21)
+ /*
+ * The session setup to the Windows NT Domain Controller %1 for the domain %2
+ * failed because the Windows NT Domain Controller does not have an account
+ * for the computer %3.
+ */
+
+#define NELOG_NetlogonServerAuthFailed (ERRLOG2_BASE + 22)
+ /*
+ * The session setup from the computer %1 failed to authenticate.
+ * The name of the account referenced in the security database is
+ * %2. The following error occurred: %n%3
+ */
+
+#define NELOG_NetlogonServerAuthNoTrustSamAccount (ERRLOG2_BASE + 23)
+ /*
+ * The session setup from the computer %1 failed because there is
+ * no trust account in the security database for this computer. The name of
+ * the account referenced in the security database is %2.
+ */
+
+//
+// General log messages for NT services.
+//
+
+#define NELOG_FailedToRegisterSC (ERRLOG2_BASE + 24)
+ /*
+ * Could not register control handler with service controller %1.
+ */
+
+#define NELOG_FailedToSetServiceStatus (ERRLOG2_BASE + 25)
+ /*
+ * Could not set service status with service controller %1.
+ */
+
+#define NELOG_FailedToGetComputerName (ERRLOG2_BASE + 26)
+ /*
+ * Could not find the computer name %1.
+ */
+
+#define NELOG_DriverNotLoaded (ERRLOG2_BASE + 27)
+ /*
+ * Could not load %1 device driver.
+ */
+
+#define NELOG_NoTranportLoaded (ERRLOG2_BASE + 28)
+ /*
+ * Could not load any transport.
+ */
+
+//
+// More Netlogon service events
+//
+
+#define NELOG_NetlogonFailedDomainDelta (ERRLOG2_BASE + 29)
+ /*
+ * Replication of the %1 Domain Object "%2" from primary domain controller
+ * %3 failed with the following error: %n%4
+ */
+
+#define NELOG_NetlogonFailedGlobalGroupDelta (ERRLOG2_BASE + 30)
+ /*
+ * Replication of the %1 Global Group "%2" from primary domain controller
+ * %3 failed with the following error: %n%4
+ */
+
+#define NELOG_NetlogonFailedLocalGroupDelta (ERRLOG2_BASE + 31)
+ /*
+ * Replication of the %1 Local Group "%2" from primary domain controller
+ * %3 failed with the following error: %n%4
+ */
+
+#define NELOG_NetlogonFailedUserDelta (ERRLOG2_BASE + 32)
+ /*
+ * Replication of the %1 User "%2" from primary domain controller
+ * %3 failed with the following error: %n%4
+ */
+
+#define NELOG_NetlogonFailedPolicyDelta (ERRLOG2_BASE + 33)
+ /*
+ * Replication of the %1 Policy Object "%2" from primary domain controller
+ * %3 failed with the following error: %n%4
+ */
+
+#define NELOG_NetlogonFailedTrustedDomainDelta (ERRLOG2_BASE + 34)
+ /*
+ * Replication of the %1 Trusted Domain Object "%2" from primary domain controller
+ * %3 failed with the following error: %n%4
+ */
+
+#define NELOG_NetlogonFailedAccountDelta (ERRLOG2_BASE + 35)
+ /*
+ * Replication of the %1 Account Object "%2" from primary domain controller
+ * %3 failed with the following error: %n%4
+ */
+
+#define NELOG_NetlogonFailedSecretDelta (ERRLOG2_BASE + 36)
+ /*
+ * Replication of the %1 Secret "%2" from primary domain controller
+ * %3 failed with the following error: %n%4
+ */
+
+#define NELOG_NetlogonSystemError (ERRLOG2_BASE + 37)
+ /*
+ * The system returned the following unexpected error code: %n%1
+ */
+
+#define NELOG_NetlogonDuplicateMachineAccounts (ERRLOG2_BASE + 38)
+ /*
+ * Netlogon has detected two machine accounts for server "%1".
+ * The server can be either a Windows NT Server that is a member of the
+ * domain or the server can be a LAN Manager server with an account in the
+ * SERVERS global group. It cannot be both.
+ */
+
+#define NELOG_NetlogonTooManyGlobalGroups (ERRLOG2_BASE + 39)
+ /*
+ * This domain has more global groups than can be replicated to a LanMan
+ * BDC. Either delete some of your global groups or remove the LanMan
+ * BDCs from the domain.
+ */
+
+#define NELOG_NetlogonBrowserDriver (ERRLOG2_BASE + 40)
+ /*
+ * The Browser driver returned the following error to Netlogon: %n%1
+ */
+
+#define NELOG_NetlogonAddNameFailure (ERRLOG2_BASE + 41)
+ /*
+ * Netlogon could not register the %1<1B> name for the following reason: %n%2
+ */
+
+//
+// More Remoteboot service events.
+//
+#define NELOG_RplMessages (ERRLOG2_BASE + 42)
+ /*
+ * Service failed to retrieve messages needed to boot remote boot clients.
+ */
+
+#define NELOG_RplXnsBoot (ERRLOG2_BASE + 43)
+ /*
+ * Service experienced a severe error and can no longer provide remote boot
+ * for 3Com 3Start remote boot clients.
+ */
+
+#define NELOG_RplSystem (ERRLOG2_BASE + 44)
+ /*
+ * Service experienced a severe system error and will shut itself down.
+ */
+
+#define NELOG_RplWkstaTimeout (ERRLOG2_BASE + 45)
+ /*
+ * Client with computer name %1 failed to acknowledge receipt of the
+ * boot data. Remote boot of this client was not completed.
+ */
+
+#define NELOG_RplWkstaFileOpen (ERRLOG2_BASE + 46)
+ /*
+ * Client with computer name %1 was not booted due to an error in opening
+ * file %2.
+ */
+
+#define NELOG_RplWkstaFileRead (ERRLOG2_BASE + 47)
+ /*
+ * Client with computer name %1 was not booted due to an error in reading
+ * file %2.
+ */
+
+#define NELOG_RplWkstaMemory (ERRLOG2_BASE + 48)
+ /*
+ * Client with computer name %1 was not booted due to insufficent memory
+ * at the remote boot server.
+ */
+
+#define NELOG_RplWkstaFileChecksum (ERRLOG2_BASE + 49)
+ /*
+ * Client with computer name %1 will be booted without using checksums
+ * because checksum for file %2 could not be calculated.
+ */
+
+#define NELOG_RplWkstaFileLineCount (ERRLOG2_BASE + 50)
+ /*
+ * Client with computer name %1 was not booted due to too many lines in
+ * file %2.
+ */
+
+#define NELOG_RplWkstaBbcFile (ERRLOG2_BASE + 51)
+ /*
+ * Client with computer name %1 was not booted because the boot block
+ * configuration file %2 for this client does not contain boot block
+ * line and/or loader line.
+ */
+
+#define NELOG_RplWkstaFileSize (ERRLOG2_BASE + 52)
+ /*
+ * Client with computer name %1 was not booted due to a bad size of
+ * file %2.
+ */
+
+#define NELOG_RplWkstaInternal (ERRLOG2_BASE + 53)
+ /*
+ * Client with computer name %1 was not booted due to remote boot
+ * service internal error.
+ */
+
+#define NELOG_RplWkstaWrongVersion (ERRLOG2_BASE + 54)
+ /*
+ * Client with computer name %1 was not booted because file %2 has an
+ * invalid boot header.
+ */
+
+#define NELOG_RplWkstaNetwork (ERRLOG2_BASE + 55)
+ /*
+ * Client with computer name %1 was not booted due to network error.
+ */
+
+#define NELOG_RplAdapterResource (ERRLOG2_BASE + 56)
+ /*
+ * Client with adapter id %1 was not booted due to lack of resources.
+ */
+
+#define NELOG_RplFileCopy (ERRLOG2_BASE + 57)
+ /*
+ * Service experienced error copying file or directory %1.
+ */
+
+#define NELOG_RplFileDelete (ERRLOG2_BASE + 58)
+ /*
+ * Service experienced error deleting file or directory %1.
+ */
+
+#define NELOG_RplFilePerms (ERRLOG2_BASE + 59)
+ /*
+ * Service experienced error setting permissions on file or directory %1.
+ */
+#define NELOG_RplCheckConfigs (ERRLOG2_BASE + 60)
+ /*
+ * Service experienced error evaluating RPL configurations.
+ */
+#define NELOG_RplCreateProfiles (ERRLOG2_BASE + 61)
+ /*
+ * Service experienced error creating RPL profiles for all configurations.
+ */
+#define NELOG_RplRegistry (ERRLOG2_BASE + 62)
+ /*
+ * Service experienced error accessing registry.
+ */
+#define NELOG_RplReplaceRPLDISK (ERRLOG2_BASE + 63)
+ /*
+ * Service experienced error replacing possibly outdated RPLDISK.SYS.
+ */
+#define NELOG_RplCheckSecurity (ERRLOG2_BASE + 64)
+ /*
+ * Service experienced error adding security accounts or setting
+ * file permissions. These accounts are the RPLUSER local group
+ * and the user accounts for the individual RPL workstations.
+ */
+#define NELOG_RplBackupDatabase (ERRLOG2_BASE + 65)
+ /*
+ * Service failed to back up its database.
+ */
+#define NELOG_RplInitDatabase (ERRLOG2_BASE + 66)
+ /*
+ * Service failed to initialize from its database. The database may be
+ * missing or corrupted. Service will attempt restoring the database
+ * from the backup.
+ */
+#define NELOG_RplRestoreDatabaseFailure (ERRLOG2_BASE + 67)
+ /*
+ * Service failed to restore its database from the backup. Service
+ * will not start.
+ */
+#define NELOG_RplRestoreDatabaseSuccess (ERRLOG2_BASE + 68)
+ /*
+ * Service sucessfully restored its database from the backup.
+ */
+#define NELOG_RplInitRestoredDatabase (ERRLOG2_BASE + 69)
+ /*
+ * Service failed to initialize from its restored database. Service
+ * will not start.
+ */
+
+//
+// More Netlogon and RPL service events
+//
+#define NELOG_NetlogonSessionTypeWrong (ERRLOG2_BASE + 70)
+ /*
+ * The session setup to the Windows NT Domain Controller %1 from computer
+ * %2 using account %4 failed. %2 is declared to be a BDC in domain %3.
+ * However, %2 tried to connect as either a DC in a trusted domain,
+ * a member workstation in domain %3, or as a server in domain %3.
+ * Use the Server Manager to remove the BDC account for %2.
+ */
+#define NELOG_RplUpgradeDBTo40 (ERRLOG2_BASE + 71)
+ /*
+ * The remoteboot database was in NT 3.5 / NT 3.51 format and NT is
+ * attempting to convert it to NT 4.0 format. The JETCONV converter
+ * will write to the Application event log when it is finished.
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMERRLOG_
diff --git a/public/sdk/inc/lmmsg.h b/public/sdk/inc/lmmsg.h
new file mode 100644
index 000000000..7ca4c65bd
--- /dev/null
+++ b/public/sdk/inc/lmmsg.h
@@ -0,0 +1,106 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmmsg.h
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the NetMessage API.
+
+[Environment:]
+
+ User Mode - Win32
+
+[Notes:]
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+--*/
+
+#ifndef _LMMSG_
+#define _LMMSG_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Function Prototypes
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetMessageNameAdd (
+ IN LPCWSTR servername,
+ IN LPCWSTR msgname
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetMessageNameEnum (
+ IN LPCWSTR servername,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetMessageNameGetInfo (
+ IN LPCWSTR servername,
+ IN LPCWSTR msgname,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetMessageNameDel (
+ IN LPCWSTR servername,
+ IN LPCWSTR msgname
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetMessageBufferSend (
+ IN LPCWSTR servername,
+ IN LPCWSTR msgname,
+ IN LPCWSTR fromname,
+ IN LPBYTE buf,
+ IN DWORD buflen
+ );
+
+//
+// Data Structures
+//
+
+typedef struct _MSG_INFO_0 {
+ LPWSTR msgi0_name;
+}MSG_INFO_0, *PMSG_INFO_0, *LPMSG_INFO_0;
+
+typedef struct _MSG_INFO_1 {
+ LPWSTR msgi1_name;
+ DWORD msgi1_forward_flag;
+ LPWSTR msgi1_forward;
+}MSG_INFO_1, *PMSG_INFO_1, *LPMSG_INFO_1;
+
+//
+// Special Values and Constants
+//
+
+//
+// Values for msgi1_forward_flag.
+//
+
+#define MSGNAME_NOT_FORWARDED 0 // Name not forwarded
+#define MSGNAME_FORWARDED_TO 0x04 // Name forward to remote station
+#define MSGNAME_FORWARDED_FROM 0x10 // Name forwarded from remote station
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_LMMSG_
diff --git a/public/sdk/inc/lmremutl.h b/public/sdk/inc/lmremutl.h
new file mode 100644
index 000000000..5f27b3b71
--- /dev/null
+++ b/public/sdk/inc/lmremutl.h
@@ -0,0 +1,128 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmremutl.h
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the NetRemote API.
+
+Environment:
+
+ User Mode - Win32
+ Portable to any flat, 32-bit environment. (Uses Win32 typedefs.)
+ Requires ANSI C extensions: slash-slash comments, long external names.
+
+--*/
+
+#ifndef _LMREMUTL_
+#define _LMREMUTL_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+//
+// Type Definitions
+//
+
+#ifndef DESC_CHAR_UNICODE
+
+typedef CHAR DESC_CHAR;
+
+#else // DESC_CHAR_UNICODE is defined
+
+typedef WCHAR DESC_CHAR;
+
+#endif // DESC_CHAR_UNICODE is defined
+
+
+typedef DESC_CHAR * LPDESC;
+
+
+//
+// Function Prototypes
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetRemoteTOD (
+ IN LPCWSTR UncServerName,
+ OUT LPBYTE *BufferPtr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetRemoteComputerSupports(
+ IN LPCWSTR UncServerName OPTIONAL, // Must start with "\\".
+ IN DWORD OptionsWanted, // Set SUPPORTS_ bits wanted.
+ OUT LPDWORD OptionsSupported // Supported features, masked.
+ );
+
+NET_API_STATUS
+RxRemoteApi(
+ IN DWORD ApiNumber,
+ IN LPCWSTR UncServerName, // Required, with \\name.
+ IN LPDESC ParmDescString,
+ IN LPDESC DataDesc16 OPTIONAL,
+ IN LPDESC DataDesc32 OPTIONAL,
+ IN LPDESC DataDescSmb OPTIONAL,
+ IN LPDESC AuxDesc16 OPTIONAL,
+ IN LPDESC AuxDesc32 OPTIONAL,
+ IN LPDESC AuxDescSmb OPTIONAL,
+ IN DWORD Flags,
+ ... // rest of API's arguments
+ );
+
+
+
+//
+// Data Structures
+//
+
+typedef struct _TIME_OF_DAY_INFO {
+ DWORD tod_elapsedt;
+ DWORD tod_msecs;
+ DWORD tod_hours;
+ DWORD tod_mins;
+ DWORD tod_secs;
+ DWORD tod_hunds;
+ LONG tod_timezone;
+ DWORD tod_tinterval;
+ DWORD tod_day;
+ DWORD tod_month;
+ DWORD tod_year;
+ DWORD tod_weekday;
+} TIME_OF_DAY_INFO, *PTIME_OF_DAY_INFO, *LPTIME_OF_DAY_INFO;
+
+//
+// Special Values and Constants
+//
+
+//
+// Mask bits for use with NetRemoteComputerSupports:
+//
+
+#define SUPPORTS_REMOTE_ADMIN_PROTOCOL 0x00000002L
+#define SUPPORTS_RPC 0x00000004L
+#define SUPPORTS_SAM_PROTOCOL 0x00000008L
+#define SUPPORTS_UNICODE 0x00000010L
+#define SUPPORTS_LOCAL 0x00000020L
+#define SUPPORTS_ANY 0xFFFFFFFFL
+
+//
+// Flag bits for RxRemoteApi:
+//
+
+#define NO_PERMISSION_REQUIRED 0x00000001 // set if use NULL session
+#define ALLOCATE_RESPONSE 0x00000002 // set if RxRemoteApi allocates response buffer
+#define USE_SPECIFIC_TRANSPORT 0x80000000
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_LMREMUTL_
diff --git a/public/sdk/inc/lmrepl.h b/public/sdk/inc/lmrepl.h
new file mode 100644
index 000000000..7dd70df2c
--- /dev/null
+++ b/public/sdk/inc/lmrepl.h
@@ -0,0 +1,275 @@
+/*++ BUILD Version: 0004 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ LmRepl.h
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the replicator APIs.
+
+Environment:
+
+ User Mode - Win32
+ Portable to any flat, 32-bit environment. (Uses Win32 typedefs.)
+ Requires ANSI C extensions: slash-slash comments, long external names.
+
+Notes:
+
+ You must include LmCons.h before this file.
+
+
+--*/
+
+#ifndef _LMREPL_
+#define _LMREPL_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Replicator Configuration APIs
+//
+
+#define REPL_ROLE_EXPORT 1
+#define REPL_ROLE_IMPORT 2
+#define REPL_ROLE_BOTH 3
+
+
+#define REPL_INTERVAL_INFOLEVEL (PARMNUM_BASE_INFOLEVEL + 0)
+#define REPL_PULSE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL + 1)
+#define REPL_GUARDTIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL + 2)
+#define REPL_RANDOM_INFOLEVEL (PARMNUM_BASE_INFOLEVEL + 3)
+
+
+typedef struct _REPL_INFO_0 {
+ DWORD rp0_role;
+ LPWSTR rp0_exportpath;
+ LPWSTR rp0_exportlist;
+ LPWSTR rp0_importpath;
+ LPWSTR rp0_importlist;
+ LPWSTR rp0_logonusername;
+ DWORD rp0_interval;
+ DWORD rp0_pulse;
+ DWORD rp0_guardtime;
+ DWORD rp0_random;
+} REPL_INFO_0, *PREPL_INFO_0, *LPREPL_INFO_0;
+
+typedef struct _REPL_INFO_1000 {
+ DWORD rp1000_interval;
+} REPL_INFO_1000, *PREPL_INFO_1000, *LPREPL_INFO_1000;
+
+typedef struct _REPL_INFO_1001 {
+ DWORD rp1001_pulse;
+} REPL_INFO_1001, *PREPL_INFO_1001, *LPREPL_INFO_1001;
+
+typedef struct _REPL_INFO_1002 {
+ DWORD rp1002_guardtime;
+} REPL_INFO_1002, *PREPL_INFO_1002, *LPREPL_INFO_1002;
+
+typedef struct _REPL_INFO_1003 {
+ DWORD rp1003_random;
+} REPL_INFO_1003, *PREPL_INFO_1003, *LPREPL_INFO_1003;
+
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplGetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE * bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplSetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ IN const LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+
+//
+// Replicator Export Directory APIs
+//
+
+#define REPL_INTEGRITY_FILE 1
+#define REPL_INTEGRITY_TREE 2
+
+
+#define REPL_EXTENT_FILE 1
+#define REPL_EXTENT_TREE 2
+
+
+#define REPL_EXPORT_INTEGRITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL + 0)
+#define REPL_EXPORT_EXTENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL + 1)
+
+
+typedef struct _REPL_EDIR_INFO_0 {
+ LPWSTR rped0_dirname;
+} REPL_EDIR_INFO_0, *PREPL_EDIR_INFO_0, *LPREPL_EDIR_INFO_0;
+
+typedef struct _REPL_EDIR_INFO_1 {
+ LPWSTR rped1_dirname;
+ DWORD rped1_integrity;
+ DWORD rped1_extent;
+} REPL_EDIR_INFO_1, *PREPL_EDIR_INFO_1, *LPREPL_EDIR_INFO_1;
+
+typedef struct _REPL_EDIR_INFO_2 {
+ LPWSTR rped2_dirname;
+ DWORD rped2_integrity;
+ DWORD rped2_extent;
+ DWORD rped2_lockcount;
+ DWORD rped2_locktime;
+} REPL_EDIR_INFO_2, *PREPL_EDIR_INFO_2, *LPREPL_EDIR_INFO_2;
+
+typedef struct _REPL_EDIR_INFO_1000 {
+ DWORD rped1000_integrity;
+} REPL_EDIR_INFO_1000, *PREPL_EDIR_INFO_1000, *LPREPL_EDIR_INFO_1000;
+
+typedef struct _REPL_EDIR_INFO_1001 {
+ DWORD rped1001_extent;
+} REPL_EDIR_INFO_1001, *PREPL_EDIR_INFO_1001, *LPREPL_EDIR_INFO_1001;
+
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplExportDirAdd (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ IN const LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplExportDirDel (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR dirname
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplExportDirEnum (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE * bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resumehandle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplExportDirGetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR dirname,
+ IN DWORD level,
+ OUT LPBYTE * bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplExportDirSetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR dirname,
+ IN DWORD level,
+ IN const LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplExportDirLock (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR dirname
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplExportDirUnlock (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR dirname,
+ IN DWORD unlockforce
+ );
+
+
+#define REPL_UNLOCK_NOFORCE 0
+#define REPL_UNLOCK_FORCE 1
+
+
+//
+// Replicator Import Directory APIs
+//
+
+
+typedef struct _REPL_IDIR_INFO_0 {
+ LPWSTR rpid0_dirname;
+} REPL_IDIR_INFO_0, *PREPL_IDIR_INFO_0, *LPREPL_IDIR_INFO_0;
+
+typedef struct _REPL_IDIR_INFO_1 {
+ LPWSTR rpid1_dirname;
+ DWORD rpid1_state;
+ LPWSTR rpid1_mastername;
+ DWORD rpid1_last_update_time;
+ DWORD rpid1_lockcount;
+ DWORD rpid1_locktime;
+} REPL_IDIR_INFO_1, *PREPL_IDIR_INFO_1, *LPREPL_IDIR_INFO_1;
+
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplImportDirAdd (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ IN const LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplImportDirDel (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR dirname
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplImportDirEnum (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE * bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resumehandle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplImportDirGetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR dirname,
+ IN DWORD level,
+ OUT LPBYTE * bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplImportDirLock (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR dirname
+ );
+
+
+NET_API_STATUS NET_API_FUNCTION
+NetReplImportDirUnlock (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR dirname,
+ IN DWORD unlockforce
+ );
+
+
+#define REPL_STATE_OK 0
+#define REPL_STATE_NO_MASTER 1
+#define REPL_STATE_NO_SYNC 2
+#define REPL_STATE_NEVER_REPLICATED 3
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_LMREPL_
diff --git a/public/sdk/inc/lmrpl.h b/public/sdk/inc/lmrpl.h
new file mode 100644
index 000000000..b08aff340
--- /dev/null
+++ b/public/sdk/inc/lmrpl.h
@@ -0,0 +1,541 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1995 Microsoft Corporation
+
+Module Name:
+
+ lmrpl.h
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the Remote (Initial) Program Load service.
+
+Environment:
+
+ User Mode - Win32
+ Portable to any flat, 32-bit environment. (Uses Win32 typedefs.)
+ Requires ANSI C extensions: slash-slash comments, long external names.
+
+Revision History:
+
+ 27-July-1993
+ Created from NT RPL API spec which was influenced by LM2.1 RPL product,
+ header files and specs.
+--*/
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RPL_MAX_WKSTA_NAME_LENGTH MAX_COMPUTERNAME_LENGTH
+#define RPL_MAX_PROFILE_NAME_LENGTH 16
+#define RPL_MAX_CONFIG_NAME_LENGTH RPL_MAX_PROFILE_NAME_LENGTH
+#define RPL_MAX_BOOT_NAME_LENGTH 12
+#define RPL_ADAPTER_NAME_LENGTH 12 // count of hex digits in network id
+#define RPL_VENDOR_NAME_LENGTH 6 // leading digits of network id
+#define RPL_MAX_STRING_LENGTH 126 // driven by jet < 255 byte limit
+
+//
+// Data Structures
+//
+
+//
+// NetRplGetInfo & NetRplSetInfo
+//
+
+//
+// Pass these flags in AdapterPolicy to cause these special actions
+// to occur. This will not change the adapter policy.
+//
+
+#define RPL_REPLACE_RPLDISK 0x80000000
+#define RPL_CHECK_SECURITY 0x40000000
+#define RPL_CHECK_CONFIGS 0x20000000
+#define RPL_CREATE_PROFILES 0x10000000
+#define RPL_BACKUP_DATABASE 0x08000000
+#define RPL_SPECIAL_ACTIONS \
+ ( RPL_REPLACE_RPLDISK | \
+ RPL_CHECK_SECURITY | \
+ RPL_CHECK_CONFIGS | \
+ RPL_CREATE_PROFILES | \
+ RPL_BACKUP_DATABASE )
+
+typedef struct _RPL_INFO_0 {
+ DWORD Flags;
+} RPL_INFO_0, *PRPL_INFO_0, *LPRPL_INFO_0;
+
+//
+// NetRplBootEnum & NetRplBootAdd
+//
+typedef struct _RPL_BOOT_INFO_0 {
+ LPTSTR BootName;
+ LPTSTR BootComment;
+} RPL_BOOT_INFO_0, *PRPL_BOOT_INFO_0, *LPRPL_BOOT_INFO_0;
+
+//
+//
+// BOOT_FLAGS_FINAL_ACKNOWLEDGMENT_* describe whether acknowledgment of the
+// last remote boot frame will be requested from the client.
+//
+#define BOOT_FLAGS_FINAL_ACKNOWLEDGMENT_TRUE ((DWORD)0x00000001)
+#define BOOT_FLAGS_FINAL_ACKNOWLEDGMENT_FALSE ((DWORD)0x00000002)
+#define BOOT_FLAGS_MASK_FINAL_ACKNOWLEDGMENT \
+ ( BOOT_FLAGS_FINAL_ACKNOWLEDGMENT_TRUE | \
+ BOOT_FLAGS_FINAL_ACKNOWLEDGMENT_FALSE )
+
+
+typedef struct _RPL_BOOT_INFO_1 {
+ LPTSTR BootName;
+ LPTSTR BootComment;
+ DWORD Flags;
+ LPTSTR VendorName;
+} RPL_BOOT_INFO_1, *PRPL_BOOT_INFO_1, *LPRPL_BOOT_INFO_1;
+
+typedef struct _RPL_BOOT_INFO_2 {
+ LPTSTR BootName;
+ LPTSTR BootComment;
+ DWORD Flags;
+ LPTSTR VendorName;
+ LPTSTR BbcFile;
+ DWORD WindowSize;
+} RPL_BOOT_INFO_2, *PRPL_BOOT_INFO_2, *LPRPL_BOOT_INFO_2;
+
+//
+// NetRplConfigEnum & NetRplConfigAdd
+//
+typedef struct _RPL_CONFIG_INFO_0 {
+ LPTSTR ConfigName;
+ LPTSTR ConfigComment;
+} RPL_CONFIG_INFO_0, *PRPL_CONFIG_INFO_0, *LPRPL_CONFIG_INFO_0;
+
+//
+// CONFIG_FLAGS_ENABLED_* describe whether configuration is enabled (admin
+// has copied all the necessary files to use such configuration) or disabled
+//
+#define CONFIG_FLAGS_ENABLED_TRUE ((DWORD)0x00000001) // enabled
+#define CONFIG_FLAGS_ENABLED_FALSE ((DWORD)0x00000002) // disabled
+#define CONFIG_FLAGS_MASK_ENABLED \
+ ( CONFIG_FLAGS_ENABLED_TRUE | \
+ CONFIG_FLAGS_ENABLED_FALSE )
+
+typedef struct _RPL_CONFIG_INFO_1 {
+ LPTSTR ConfigName;
+ LPTSTR ConfigComment;
+ DWORD Flags;
+} RPL_CONFIG_INFO_1, *PRPL_CONFIG_INFO_1, *LPRPL_CONFIG_INFO_1;
+
+typedef struct _RPL_CONFIG_INFO_2 {
+ LPTSTR ConfigName;
+ LPTSTR ConfigComment;
+ DWORD Flags;
+ LPTSTR BootName;
+ LPTSTR DirName;
+ LPTSTR DirName2;
+ LPTSTR DirName3;
+ LPTSTR DirName4;
+ LPTSTR FitShared;
+ LPTSTR FitPersonal;
+} RPL_CONFIG_INFO_2, *PRPL_CONFIG_INFO_2, *LPRPL_CONFIG_INFO_2;
+
+//
+// NetRplProfileEnum, NetRplProfileGetInfo, NetRplProfileSetInfo &
+// NetRplProfileAdd
+//
+typedef struct _RPL_PROFILE_INFO_0 {
+ LPTSTR ProfileName;
+ LPTSTR ProfileComment;
+} RPL_PROFILE_INFO_0, *PRPL_PROFILE_INFO_0, *LPRPL_PROFILE_INFO_0;
+
+typedef struct _RPL_PROFILE_INFO_1 {
+ LPTSTR ProfileName;
+ LPTSTR ProfileComment;
+ DWORD Flags;
+} RPL_PROFILE_INFO_1, *PRPL_PROFILE_INFO_1, *LPRPL_PROFILE_INFO_1;
+
+typedef struct _RPL_PROFILE_INFO_2 {
+ LPTSTR ProfileName;
+ LPTSTR ProfileComment;
+ DWORD Flags;
+ LPTSTR ConfigName;
+ LPTSTR BootName;
+ LPTSTR FitShared;
+ LPTSTR FitPersonal;
+} RPL_PROFILE_INFO_2, *PRPL_PROFILE_INFO_2, *LPRPL_PROFILE_INFO_2;
+
+//
+// NetRplVendorEnum
+//
+typedef struct _RPL_VENDOR_INFO_0 {
+ LPTSTR VendorName;
+ LPTSTR VendorComment;
+} RPL_VENDOR_INFO_0, *PRPL_VENDOR_INFO_0, *LPRPL_VENDOR_INFO_0;
+
+typedef struct _RPL_VENDOR_INFO_1 {
+ LPTSTR VendorName;
+ LPTSTR VendorComment;
+ DWORD Flags;
+} RPL_VENDOR_INFO_1, *PRPL_VENDOR_INFO_1, *LPRPL_VENDOR_INFO_1;
+
+//
+// NetRplAdapterEnum
+//
+typedef struct _RPL_ADAPTER_INFO_0 {
+ LPTSTR AdapterName;
+ LPTSTR AdapterComment;
+} RPL_ADAPTER_INFO_0, *PRPL_ADAPTER_INFO_0, *LPRPL_ADAPTER_INFO_0;
+
+typedef struct _RPL_ADAPTER_INFO_1 {
+ LPTSTR AdapterName;
+ LPTSTR AdapterComment;
+ DWORD Flags;
+} RPL_ADAPTER_INFO_1, *PRPL_ADAPTER_INFO_1, *LPRPL_ADAPTER_INFO_1;
+
+//
+// NetRplWkstaEnum, NetRplWkstaGetInfo, NetRplWkstaSetInfo &
+// NetRplWkstaAdd
+//
+// WKSTA_FLAGS_LOGON_INPUT_* describe username/password policy during rpl logon
+// on the client side. Depending on the value of this field, user input for
+// username/password during RPL logon will be:
+//
+#define WKSTA_FLAGS_LOGON_INPUT_REQUIRED ((DWORD)0x00000001) // L'P', user input is required
+#define WKSTA_FLAGS_LOGON_INPUT_OPTIONAL ((DWORD)0x00000002) // L'N', user input is optional
+#define WKSTA_FLAGS_LOGON_INPUT_IMPOSSIBLE ((DWORD)0x00000004) // L'D', user input is not solicited
+#define WKSTA_FLAGS_MASK_LOGON_INPUT \
+ ( WKSTA_FLAGS_LOGON_INPUT_REQUIRED | \
+ WKSTA_FLAGS_LOGON_INPUT_OPTIONAL | \
+ WKSTA_FLAGS_LOGON_INPUT_IMPOSSIBLE )
+//
+// WKSTA_FLAGS_SHARING_* describe whether workstation shares or does not share its
+// remote boot disk (i.e. "does it have shared or personal profile").
+//
+#define WKSTA_FLAGS_SHARING_TRUE ((DWORD)0x00000008) // L'S', shares remote boot disk
+#define WKSTA_FLAGS_SHARING_FALSE ((DWORD)0x00000010) // L'P', does not share remote boot disk
+#define WKSTA_FLAGS_MASK_SHARING \
+ ( WKSTA_FLAGS_SHARING_TRUE | \
+ WKSTA_FLAGS_SHARING_FALSE )
+
+//
+// WKSTA_FLAGS_DHCP_* describe whether workstation uses DHCP or not. Note
+// that these flags are relevant only if TCP/IP itself is enabled (i.e. changes
+// to boot block configuration file, config.sys & autoexec.bat have been made).
+//
+#define WKSTA_FLAGS_DHCP_TRUE ((DWORD)0x00000020) // use DHCP
+#define WKSTA_FLAGS_DHCP_FALSE ((DWORD)0x00000040) // do not use DHCP
+#define WKSTA_FLAGS_MASK_DHCP \
+ ( WKSTA_FLAGS_DHCP_TRUE | \
+ WKSTA_FLAGS_DHCP_FALSE )
+
+//
+// WKSTA_FLAGS_DELETE_ACCOUNT_* describes whether the corresponding user
+// account was created by Remoteboot Manager, and thus, should be deleted
+// when the workstation is deleted. This flag is actually used by
+// Remoteboot Manager rather than RPL Service.
+//
+#define WKSTA_FLAGS_DELETE_TRUE ((DWORD)0x00000080) // delete user acct
+#define WKSTA_FLAGS_DELETE_FALSE ((DWORD)0x00000100) // do not delete
+#define WKSTA_FLAGS_MASK_DELETE \
+ ( WKSTA_FLAGS_DELETE_TRUE | \
+ WKSTA_FLAGS_DELETE_FALSE )
+
+#define WKSTA_FLAGS_MASK \
+ ( WKSTA_FLAGS_MASK_LOGON_INPUT | \
+ WKSTA_FLAGS_MASK_SHARING | \
+ WKSTA_FLAGS_MASK_DHCP | \
+ WKSTA_FLAGS_MASK_DELETE )
+
+typedef struct _RPL_WKSTA_INFO_0 {
+ LPTSTR WkstaName;
+ LPTSTR WkstaComment;
+} RPL_WKSTA_INFO_0, *PRPL_WKSTA_INFO_0, *LPRPL_WKSTA_INFO_0;
+
+typedef struct _RPL_WKSTA_INFO_1 {
+ LPTSTR WkstaName;
+ LPTSTR WkstaComment;
+ DWORD Flags;
+ LPTSTR ProfileName;
+} RPL_WKSTA_INFO_1, *PRPL_WKSTA_INFO_1, *LPRPL_WKSTA_INFO_1;
+
+typedef struct _RPL_WKSTA_INFO_2 {
+ LPTSTR WkstaName;
+ LPTSTR WkstaComment;
+ DWORD Flags;
+ LPTSTR ProfileName;
+ LPTSTR BootName;
+ LPTSTR FitFile;
+ LPTSTR AdapterName;
+ DWORD TcpIpAddress;
+ DWORD TcpIpSubnet;
+ DWORD TcpIpGateway;
+} RPL_WKSTA_INFO_2, *PRPL_WKSTA_INFO_2, *LPRPL_WKSTA_INFO_2;
+
+//
+// RPL RPC Context Handle (Opaque form).
+//
+
+typedef HANDLE RPL_HANDLE;
+typedef RPL_HANDLE * PRPL_HANDLE;
+typedef PRPL_HANDLE LPRPL_HANDLE;
+
+
+//
+// Function Prototypes
+//
+
+//
+// Service apis
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetRplClose(
+ IN RPL_HANDLE ServerHandle
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplGetInfo(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ OUT LPBYTE * PointerToBuffer
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplOpen(
+ IN LPTSTR ServerName,
+ OUT LPRPL_HANDLE ServerHandle
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplSetInfo(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ IN LPBYTE Buffer,
+ OUT LPDWORD ErrorParameter OPTIONAL
+ );
+
+
+//
+// ADAPTER apis
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetRplAdapterAdd(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ IN LPBYTE Buffer,
+ OUT LPDWORD ErrorParameter OPTIONAL
+ );
+//
+// NetRplAdapterDel: if AdapterName is NULL then all adapters will be deleted.
+//
+NET_API_STATUS NET_API_FUNCTION
+NetRplAdapterDel(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR AdapterName OPTIONAL
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplAdapterEnum(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ OUT LPBYTE * PointerToBuffer,
+ IN DWORD PrefMaxLength,
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD TotalEntries,
+ OUT LPDWORD ResumeHandle
+ );
+
+//
+// BOOT block apis
+//
+NET_API_STATUS NET_API_FUNCTION
+NetRplBootAdd(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ IN LPBYTE Buffer,
+ OUT LPDWORD ErrorParameter OPTIONAL
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplBootDel(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR BootName,
+ IN LPTSTR VendorName
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplBootEnum(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ OUT LPBYTE * PointerToBuffer,
+ IN DWORD PrefMaxLength,
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD TotalEntries,
+ OUT LPDWORD ResumeHandle
+ );
+
+//
+// CONFIG apis
+//
+NET_API_STATUS NET_API_FUNCTION
+NetRplConfigAdd(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ IN LPBYTE Buffer,
+ OUT LPDWORD ErrorParameter OPTIONAL
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplConfigDel(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR ConfigName
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplConfigEnum(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR AdapterName,
+ IN DWORD InfoLevel,
+ OUT LPBYTE * PointerToBuffer,
+ IN DWORD PrefMaxLength,
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD TotalEntries,
+ OUT LPDWORD ResumeHandle
+ );
+
+//
+// PROFILE apis
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetRplProfileAdd(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ IN LPBYTE Buffer,
+ OUT LPDWORD ErrorParameter OPTIONAL
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplProfileClone(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR SourceProfileName,
+ IN LPTSTR TargetProfileName,
+ IN LPTSTR TargetProfileComment OPTIONAL
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplProfileDel(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR ProfileName
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplProfileEnum(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR AdapterName,
+ IN DWORD InfoLevel,
+ OUT LPBYTE * PointerToBuffer,
+ IN DWORD PrefMaxLength,
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD TotalEntries,
+ OUT LPDWORD ResumeHandle
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplProfileGetInfo(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR ProfileName,
+ IN DWORD InfoLevel,
+ OUT LPBYTE * PointerToBuffer
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplProfileSetInfo(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR ProfileName,
+ IN DWORD InfoLevel,
+ IN LPBYTE Buffer,
+ OUT LPDWORD ErrorParameter OPTIONAL
+ );
+
+//
+// VENDOR apis
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetRplVendorAdd(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ IN LPBYTE Buffer,
+ OUT LPDWORD ErrorParameter OPTIONAL
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplVendorDel(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR VendorName
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplVendorEnum(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ OUT LPBYTE * PointerToBuffer,
+ IN DWORD PrefMaxLength,
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD TotalEntries,
+ OUT LPDWORD ResumeHandle
+ );
+
+//
+// WKSTA apis
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetRplWkstaAdd(
+ IN RPL_HANDLE ServerHandle,
+ IN DWORD InfoLevel,
+ IN LPBYTE Buffer,
+ OUT LPDWORD ErrorParameter OPTIONAL
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplWkstaClone(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR SourceWkstaName,
+ IN LPTSTR TargetWkstaName,
+ IN LPTSTR TargetWkstaComment OPTIONAL,
+ IN LPTSTR TargetAdapterName,
+ IN DWORD TargetWkstaIpAddress
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplWkstaDel(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR WkstaName
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplWkstaEnum(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR ProfileName,
+ IN DWORD InfoLevel,
+ OUT LPBYTE * PointerToBuffer,
+ IN DWORD PrefMaxLength,
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD TotalEntries,
+ OUT LPDWORD ResumeHandle
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplWkstaGetInfo(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR WkstaName,
+ IN DWORD InfoLevel,
+ OUT LPBYTE * Buffer
+ );
+NET_API_STATUS NET_API_FUNCTION
+NetRplWkstaSetInfo(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR WkstaName,
+ IN DWORD InfoLevel,
+ IN LPBYTE Buffer,
+ OUT LPDWORD ErrorParameter OPTIONAL
+ );
+
+//
+// SECURITY api
+//
+NET_API_STATUS NET_API_FUNCTION
+NetRplSetSecurity(
+ IN RPL_HANDLE ServerHandle,
+ IN LPTSTR WkstaName OPTIONAL,
+ IN DWORD WkstaRid,
+ IN DWORD RplUserRid
+ );
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/public/sdk/inc/lmserver.h b/public/sdk/inc/lmserver.h
new file mode 100644
index 000000000..e55c85362
--- /dev/null
+++ b/public/sdk/inc/lmserver.h
@@ -0,0 +1,1230 @@
+/*++ BUILD VERSION: 0007 // INCREMENT THIS IF A CHANGE HAS GLOBAL EFFECTS
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ lmserver.h
+
+Abstract:
+
+ This file contains information about NetServer APIs.
+ Function Prototypes
+ Data Structures
+ Definition of special values
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+--*/
+
+#ifndef _LMSERVER_
+#define _LMSERVER_
+
+#include <winsvc.h> // SERVICE_STATUS_HANDLE
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Function Prototypes - SERVER
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerEnum (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN DWORD servertype,
+ IN LPCWSTR domain OPTIONAL,
+ IN OUT LPDWORD resume_handle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerEnumEx (
+ IN LPCWSTR ServerName OPTIONAL,
+ IN DWORD Level,
+ OUT LPBYTE *Bufptr,
+ IN DWORD PrefMaxlen,
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD totalentries,
+ IN DWORD servertype,
+ IN LPCWSTR domain OPTIONAL,
+ IN LPCWSTR FirstNameToReturn OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerGetInfo (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerSetInfo (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD ParmError OPTIONAL
+ );
+
+//
+// Temporary hack function.
+//
+
+NET_API_STATUS
+NetServerSetInfoCommandLine (
+ IN WORD argc,
+ IN LPTSTR argv[]
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerDiskEnum (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerComputerNameAdd(
+ IN LPWSTR ServerName OPTIONAL,
+ IN LPWSTR EmulatedDomainName OPTIONAL,
+ IN LPWSTR EmulatedServerName
+);
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerComputerNameDel (
+ IN LPWSTR ServerName OPTIONAL,
+ IN LPWSTR EmulatedServerName
+);
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerTransportAdd (
+ IN LPTSTR servername,
+ IN DWORD level,
+ IN LPBYTE bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerTransportAddEx (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD level,
+ IN LPBYTE bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerTransportDel (
+ IN LPTSTR servername,
+ IN DWORD level,
+ IN LPBYTE bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServerTransportEnum (
+ IN LPTSTR servername,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resumehandle
+ );
+
+//
+// The following function can be called by Win NT services to register
+// their service type. This function is exported from advapi32.dll.
+// Therefore, if this is the only function called by that service, then
+// it is not necessary to link to netapi32.lib.
+//
+BOOL
+SetServiceBits(
+ IN SERVICE_STATUS_HANDLE hServiceStatus,
+ IN DWORD dwServiceBits,
+ IN BOOL bSetBitsOn,
+ IN BOOL bUpdateImmediately
+ );
+
+//
+// Data Structures - SERVER
+//
+
+typedef struct _SERVER_INFO_100 {
+ DWORD sv100_platform_id;
+ LPTSTR sv100_name;
+} SERVER_INFO_100, *PSERVER_INFO_100, *LPSERVER_INFO_100;
+
+typedef struct _SERVER_INFO_101 {
+ DWORD sv101_platform_id;
+ LPTSTR sv101_name;
+ DWORD sv101_version_major;
+ DWORD sv101_version_minor;
+ DWORD sv101_type;
+ LPTSTR sv101_comment;
+} SERVER_INFO_101, *PSERVER_INFO_101, *LPSERVER_INFO_101;
+
+typedef struct _SERVER_INFO_102 {
+ DWORD sv102_platform_id;
+ LPTSTR sv102_name;
+ DWORD sv102_version_major;
+ DWORD sv102_version_minor;
+ DWORD sv102_type;
+ LPTSTR sv102_comment;
+ DWORD sv102_users;
+ LONG sv102_disc;
+ BOOL sv102_hidden;
+ DWORD sv102_announce;
+ DWORD sv102_anndelta;
+ DWORD sv102_licenses;
+ LPTSTR sv102_userpath;
+} SERVER_INFO_102, *PSERVER_INFO_102, *LPSERVER_INFO_102;
+
+typedef struct _SERVER_INFO_402 {
+ DWORD sv402_ulist_mtime;
+ DWORD sv402_glist_mtime;
+ DWORD sv402_alist_mtime;
+ LPTSTR sv402_alerts;
+ DWORD sv402_security;
+ DWORD sv402_numadmin;
+ DWORD sv402_lanmask;
+ LPTSTR sv402_guestacct;
+ DWORD sv402_chdevs;
+ DWORD sv402_chdevq;
+ DWORD sv402_chdevjobs;
+ DWORD sv402_connections;
+ DWORD sv402_shares;
+ DWORD sv402_openfiles;
+ DWORD sv402_sessopens;
+ DWORD sv402_sessvcs;
+ DWORD sv402_sessreqs;
+ DWORD sv402_opensearch;
+ DWORD sv402_activelocks;
+ DWORD sv402_numreqbuf;
+ DWORD sv402_sizreqbuf;
+ DWORD sv402_numbigbuf;
+ DWORD sv402_numfiletasks;
+ DWORD sv402_alertsched;
+ DWORD sv402_erroralert;
+ DWORD sv402_logonalert;
+ DWORD sv402_accessalert;
+ DWORD sv402_diskalert;
+ DWORD sv402_netioalert;
+ DWORD sv402_maxauditsz;
+ LPTSTR sv402_srvheuristics;
+} SERVER_INFO_402, *PSERVER_INFO_402, *LPSERVER_INFO_402;
+
+typedef struct _SERVER_INFO_403 {
+ DWORD sv403_ulist_mtime;
+ DWORD sv403_glist_mtime;
+ DWORD sv403_alist_mtime;
+ LPTSTR sv403_alerts;
+ DWORD sv403_security;
+ DWORD sv403_numadmin;
+ DWORD sv403_lanmask;
+ LPTSTR sv403_guestacct;
+ DWORD sv403_chdevs;
+ DWORD sv403_chdevq;
+ DWORD sv403_chdevjobs;
+ DWORD sv403_connections;
+ DWORD sv403_shares;
+ DWORD sv403_openfiles;
+ DWORD sv403_sessopens;
+ DWORD sv403_sessvcs;
+ DWORD sv403_sessreqs;
+ DWORD sv403_opensearch;
+ DWORD sv403_activelocks;
+ DWORD sv403_numreqbuf;
+ DWORD sv403_sizreqbuf;
+ DWORD sv403_numbigbuf;
+ DWORD sv403_numfiletasks;
+ DWORD sv403_alertsched;
+ DWORD sv403_erroralert;
+ DWORD sv403_logonalert;
+ DWORD sv403_accessalert;
+ DWORD sv403_diskalert;
+ DWORD sv403_netioalert;
+ DWORD sv403_maxauditsz;
+ LPTSTR sv403_srvheuristics;
+ DWORD sv403_auditedevents;
+ DWORD sv403_autoprofile;
+ LPTSTR sv403_autopath;
+} SERVER_INFO_403, *PSERVER_INFO_403, *LPSERVER_INFO_403;
+
+typedef struct _SERVER_INFO_502 {
+ DWORD sv502_sessopens;
+ DWORD sv502_sessvcs;
+ DWORD sv502_opensearch;
+ DWORD sv502_sizreqbuf;
+ DWORD sv502_initworkitems;
+ DWORD sv502_maxworkitems;
+ DWORD sv502_rawworkitems;
+ DWORD sv502_irpstacksize;
+ DWORD sv502_maxrawbuflen;
+ DWORD sv502_sessusers;
+ DWORD sv502_sessconns;
+ DWORD sv502_maxpagedmemoryusage;
+ DWORD sv502_maxnonpagedmemoryusage;
+ BOOL sv502_enablesoftcompat;
+ BOOL sv502_enableforcedlogoff;
+ BOOL sv502_timesource;
+ BOOL sv502_acceptdownlevelapis;
+ BOOL sv502_lmannounce;
+} SERVER_INFO_502, *PSERVER_INFO_502, *LPSERVER_INFO_502;
+
+typedef struct _SERVER_INFO_503 {
+ DWORD sv503_sessopens;
+ DWORD sv503_sessvcs;
+ DWORD sv503_opensearch;
+ DWORD sv503_sizreqbuf;
+ DWORD sv503_initworkitems;
+ DWORD sv503_maxworkitems;
+ DWORD sv503_rawworkitems;
+ DWORD sv503_irpstacksize;
+ DWORD sv503_maxrawbuflen;
+ DWORD sv503_sessusers;
+ DWORD sv503_sessconns;
+ DWORD sv503_maxpagedmemoryusage;
+ DWORD sv503_maxnonpagedmemoryusage;
+ BOOL sv503_enablesoftcompat;
+ BOOL sv503_enableforcedlogoff;
+ BOOL sv503_timesource;
+ BOOL sv503_acceptdownlevelapis;
+ BOOL sv503_lmannounce;
+ LPTSTR sv503_domain;
+ DWORD sv503_maxcopyreadlen;
+ DWORD sv503_maxcopywritelen;
+ DWORD sv503_minkeepsearch;
+ DWORD sv503_maxkeepsearch;
+ DWORD sv503_minkeepcomplsearch;
+ DWORD sv503_maxkeepcomplsearch;
+ DWORD sv503_threadcountadd;
+ DWORD sv503_numblockthreads;
+ DWORD sv503_scavtimeout;
+ DWORD sv503_minrcvqueue;
+ DWORD sv503_minfreeworkitems;
+ DWORD sv503_xactmemsize;
+ DWORD sv503_threadpriority;
+ DWORD sv503_maxmpxct;
+ DWORD sv503_oplockbreakwait;
+ DWORD sv503_oplockbreakresponsewait;
+ BOOL sv503_enableoplocks;
+ BOOL sv503_enableoplockforceclose;
+ BOOL sv503_enablefcbopens;
+ BOOL sv503_enableraw;
+ BOOL sv503_enablesharednetdrives;
+ DWORD sv503_minfreeconnections;
+ DWORD sv503_maxfreeconnections;
+} SERVER_INFO_503, *PSERVER_INFO_503, *LPSERVER_INFO_503;
+
+typedef struct _SERVER_INFO_599 {
+ DWORD sv599_sessopens;
+ DWORD sv599_sessvcs;
+ DWORD sv599_opensearch;
+ DWORD sv599_sizreqbuf;
+ DWORD sv599_initworkitems;
+ DWORD sv599_maxworkitems;
+ DWORD sv599_rawworkitems;
+ DWORD sv599_irpstacksize;
+ DWORD sv599_maxrawbuflen;
+ DWORD sv599_sessusers;
+ DWORD sv599_sessconns;
+ DWORD sv599_maxpagedmemoryusage;
+ DWORD sv599_maxnonpagedmemoryusage;
+ BOOL sv599_enablesoftcompat;
+ BOOL sv599_enableforcedlogoff;
+ BOOL sv599_timesource;
+ BOOL sv599_acceptdownlevelapis;
+ BOOL sv599_lmannounce;
+ LPTSTR sv599_domain;
+ DWORD sv599_maxcopyreadlen;
+ DWORD sv599_maxcopywritelen;
+ DWORD sv599_minkeepsearch;
+ DWORD sv599_maxkeepsearch;
+ DWORD sv599_minkeepcomplsearch;
+ DWORD sv599_maxkeepcomplsearch;
+ DWORD sv599_threadcountadd;
+ DWORD sv599_numblockthreads;
+ DWORD sv599_scavtimeout;
+ DWORD sv599_minrcvqueue;
+ DWORD sv599_minfreeworkitems;
+ DWORD sv599_xactmemsize;
+ DWORD sv599_threadpriority;
+ DWORD sv599_maxmpxct;
+ DWORD sv599_oplockbreakwait;
+ DWORD sv599_oplockbreakresponsewait;
+ BOOL sv599_enableoplocks;
+ BOOL sv599_enableoplockforceclose;
+ BOOL sv599_enablefcbopens;
+ BOOL sv599_enableraw;
+ BOOL sv599_enablesharednetdrives;
+ DWORD sv599_minfreeconnections;
+ DWORD sv599_maxfreeconnections;
+ DWORD sv599_initsesstable;
+ DWORD sv599_initconntable;
+ DWORD sv599_initfiletable;
+ DWORD sv599_initsearchtable;
+ DWORD sv599_alertschedule;
+ DWORD sv599_errorthreshold;
+ DWORD sv599_networkerrorthreshold;
+ DWORD sv599_diskspacethreshold;
+ DWORD sv599_reserved;
+ DWORD sv599_maxlinkdelay;
+ DWORD sv599_minlinkthroughput;
+ DWORD sv599_linkinfovalidtime;
+ DWORD sv599_scavqosinfoupdatetime;
+ DWORD sv599_maxworkitemidletime;
+} SERVER_INFO_599, *PSERVER_INFO_599, *LPSERVER_INFO_599;
+
+typedef struct _SERVER_INFO_598 {
+ DWORD sv598_maxrawworkitems;
+ DWORD sv598_maxthreadsperqueue;
+ DWORD sv598_producttype;
+ DWORD sv598_serversize;
+ DWORD sv598_connectionlessautodisc;
+ DWORD sv598_sharingviolationretries;
+ DWORD sv598_sharingviolationdelay;
+ DWORD sv598_maxglobalopensearch;
+ DWORD sv598_removeduplicatesearches;
+ DWORD sv598_lockviolationoffset;
+ DWORD sv598_lockviolationdelay;
+ DWORD sv598_mdlreadswitchover;
+ DWORD sv598_cachedopenlimit;
+ DWORD sv598_otherqueueaffinity;
+ BOOL sv598_restrictnullsessaccess;
+ BOOL sv598_enablewfw311directipx;
+ DWORD sv598_queuesamplesecs;
+ DWORD sv598_balancecount;
+ DWORD sv598_preferredaffinity;
+ DWORD sv598_maxfreerfcbs;
+ DWORD sv598_maxfreemfcbs;
+ DWORD sv598_maxfreelfcbs;
+ DWORD sv598_maxfreepagedpoolchunks;
+ DWORD sv598_minpagedpoolchunksize;
+ DWORD sv598_maxpagedpoolchunksize;
+ BOOL sv598_sendsfrompreferredprocessor;
+ DWORD sv598_cacheddirectorylimit;
+ DWORD sv598_maxcopylength;
+ BOOL sv598_enablebulktransfer;
+ BOOL sv598_enablecompression;
+ BOOL sv598_autosharewks;
+ BOOL sv598_autoshareserver;
+} SERVER_INFO_598, *PSERVER_INFO_598, *LPSERVER_INFO_598;
+
+typedef struct _SERVER_INFO_1005 {
+ LPTSTR sv1005_comment;
+} SERVER_INFO_1005, *PSERVER_INFO_1005, *LPSERVER_INFO_1005;
+
+typedef struct _SERVER_INFO_1107 {
+ DWORD sv1107_users;
+} SERVER_INFO_1107, *PSERVER_INFO_1107, *LPSERVER_INFO_1107;
+
+typedef struct _SERVER_INFO_1010 {
+ LONG sv1010_disc;
+} SERVER_INFO_1010, *PSERVER_INFO_1010, *LPSERVER_INFO_1010;
+
+typedef struct _SERVER_INFO_1016 {
+ BOOL sv1016_hidden;
+} SERVER_INFO_1016, *PSERVER_INFO_1016, *LPSERVER_INFO_1016;
+
+typedef struct _SERVER_INFO_1017 {
+ DWORD sv1017_announce;
+} SERVER_INFO_1017, *PSERVER_INFO_1017, *LPSERVER_INFO_1017;
+
+typedef struct _SERVER_INFO_1018 {
+ DWORD sv1018_anndelta;
+} SERVER_INFO_1018, *PSERVER_INFO_1018, *LPSERVER_INFO_1018;
+
+typedef struct _SERVER_INFO_1501 {
+ DWORD sv1501_sessopens;
+} SERVER_INFO_1501, *PSERVER_INFO_1501, *LPSERVER_INFO_1501;
+
+typedef struct _SERVER_INFO_1502 {
+ DWORD sv1502_sessvcs;
+} SERVER_INFO_1502, *PSERVER_INFO_1502, *LPSERVER_INFO_1502;
+
+typedef struct _SERVER_INFO_1503 {
+ DWORD sv1503_opensearch;
+} SERVER_INFO_1503, *PSERVER_INFO_1503, *LPSERVER_INFO_1503;
+
+typedef struct _SERVER_INFO_1506 {
+ DWORD sv1506_maxworkitems;
+} SERVER_INFO_1506, *PSERVER_INFO_1506, *LPSERVER_INFO_1506;
+
+typedef struct _SERVER_INFO_1509 {
+ DWORD sv1509_maxrawbuflen;
+} SERVER_INFO_1509, *PSERVER_INFO_1509, *LPSERVER_INFO_1509;
+
+typedef struct _SERVER_INFO_1510 {
+ DWORD sv1510_sessusers;
+} SERVER_INFO_1510, *PSERVER_INFO_1510, *LPSERVER_INFO_1510;
+
+typedef struct _SERVER_INFO_1511 {
+ DWORD sv1511_sessconns;
+} SERVER_INFO_1511, *PSERVER_INFO_1511, *LPSERVER_INFO_1511;
+
+typedef struct _SERVER_INFO_1512 {
+ DWORD sv1512_maxnonpagedmemoryusage;
+} SERVER_INFO_1512, *PSERVER_INFO_1512, *LPSERVER_INFO_1512;
+
+typedef struct _SERVER_INFO_1513 {
+ DWORD sv1513_maxpagedmemoryusage;
+} SERVER_INFO_1513, *PSERVER_INFO_1513, *LPSERVER_INFO_1513;
+
+typedef struct _SERVER_INFO_1514 {
+ BOOL sv1514_enablesoftcompat;
+} SERVER_INFO_1514, *PSERVER_INFO_1514, *LPSERVER_INFO_1514;
+
+typedef struct _SERVER_INFO_1515 {
+ BOOL sv1515_enableforcedlogoff;
+} SERVER_INFO_1515, *PSERVER_INFO_1515, *LPSERVER_INFO_1515;
+
+typedef struct _SERVER_INFO_1516 {
+ BOOL sv1516_timesource;
+} SERVER_INFO_1516, *PSERVER_INFO_1516, *LPSERVER_INFO_1516;
+
+typedef struct _SERVER_INFO_1518 {
+ BOOL sv1518_lmannounce;
+} SERVER_INFO_1518, *PSERVER_INFO_1518, *LPSERVER_INFO_1518;
+
+typedef struct _SERVER_INFO_1520 {
+ DWORD sv1520_maxcopyreadlen;
+} SERVER_INFO_1520, *PSERVER_INFO_1520, *LPSERVER_INFO_1520;
+
+typedef struct _SERVER_INFO_1521 {
+ DWORD sv1521_maxcopywritelen;
+} SERVER_INFO_1521, *PSERVER_INFO_1521, *LPSERVER_INFO_1521;
+
+typedef struct _SERVER_INFO_1522 {
+ DWORD sv1522_minkeepsearch;
+} SERVER_INFO_1522, *PSERVER_INFO_1522, *LPSERVER_INFO_1522;
+
+typedef struct _SERVER_INFO_1523 {
+ DWORD sv1523_maxkeepsearch;
+} SERVER_INFO_1523, *PSERVER_INFO_1523, *LPSERVER_INFO_1523;
+
+typedef struct _SERVER_INFO_1524 {
+ DWORD sv1524_minkeepcomplsearch;
+} SERVER_INFO_1524, *PSERVER_INFO_1524, *LPSERVER_INFO_1524;
+
+typedef struct _SERVER_INFO_1525 {
+ DWORD sv1525_maxkeepcomplsearch;
+} SERVER_INFO_1525, *PSERVER_INFO_1525, *LPSERVER_INFO_1525;
+
+typedef struct _SERVER_INFO_1528 {
+ DWORD sv1528_scavtimeout;
+} SERVER_INFO_1528, *PSERVER_INFO_1528, *LPSERVER_INFO_1528;
+
+typedef struct _SERVER_INFO_1529 {
+ DWORD sv1529_minrcvqueue;
+} SERVER_INFO_1529, *PSERVER_INFO_1529, *LPSERVER_INFO_1529;
+
+typedef struct _SERVER_INFO_1530 {
+ DWORD sv1530_minfreeworkitems;
+} SERVER_INFO_1530, *PSERVER_INFO_1530, *LPSERVER_INFO_1530;
+
+typedef struct _SERVER_INFO_1533 {
+ DWORD sv1533_maxmpxct;
+} SERVER_INFO_1533, *PSERVER_INFO_1533, *LPSERVER_INFO_1533;
+
+typedef struct _SERVER_INFO_1534 {
+ DWORD sv1534_oplockbreakwait;
+} SERVER_INFO_1534, *PSERVER_INFO_1534, *LPSERVER_INFO_1534;
+
+typedef struct _SERVER_INFO_1535 {
+ DWORD sv1535_oplockbreakresponsewait;
+} SERVER_INFO_1535, *PSERVER_INFO_1535, *LPSERVER_INFO_1535;
+
+typedef struct _SERVER_INFO_1536 {
+ BOOL sv1536_enableoplocks;
+} SERVER_INFO_1536, *PSERVER_INFO_1536, *LPSERVER_INFO_1536;
+
+typedef struct _SERVER_INFO_1537 {
+ BOOL sv1537_enableoplockforceclose;
+} SERVER_INFO_1537, *PSERVER_INFO_1537, *LPSERVER_INFO_1537;
+
+typedef struct _SERVER_INFO_1538 {
+ BOOL sv1538_enablefcbopens;
+} SERVER_INFO_1538, *PSERVER_INFO_1538, *LPSERVER_INFO_1538;
+
+typedef struct _SERVER_INFO_1539 {
+ BOOL sv1539_enableraw;
+} SERVER_INFO_1539, *PSERVER_INFO_1539, *LPSERVER_INFO_1539;
+
+typedef struct _SERVER_INFO_1540 {
+ BOOL sv1540_enablesharednetdrives;
+} SERVER_INFO_1540, *PSERVER_INFO_1540, *LPSERVER_INFO_1540;
+
+typedef struct _SERVER_INFO_1541 {
+ BOOL sv1541_minfreeconnections;
+} SERVER_INFO_1541, *PSERVER_INFO_1541, *LPSERVER_INFO_1541;
+
+typedef struct _SERVER_INFO_1542 {
+ BOOL sv1542_maxfreeconnections;
+} SERVER_INFO_1542, *PSERVER_INFO_1542, *LPSERVER_INFO_1542;
+
+typedef struct _SERVER_INFO_1543 {
+ DWORD sv1543_initsesstable;
+} SERVER_INFO_1543, *PSERVER_INFO_1543, *LPSERVER_INFO_1543;
+
+typedef struct _SERVER_INFO_1544 {
+ DWORD sv1544_initconntable;
+} SERVER_INFO_1544, *PSERVER_INFO_1544, *LPSERVER_INFO_1544;
+
+typedef struct _SERVER_INFO_1545 {
+ DWORD sv1545_initfiletable;
+} SERVER_INFO_1545, *PSERVER_INFO_1545, *LPSERVER_INFO_1545;
+
+typedef struct _SERVER_INFO_1546 {
+ DWORD sv1546_initsearchtable;
+} SERVER_INFO_1546, *PSERVER_INFO_1546, *LPSERVER_INFO_1546;
+
+typedef struct _SERVER_INFO_1547 {
+ DWORD sv1547_alertschedule;
+} SERVER_INFO_1547, *PSERVER_INFO_1547, *LPSERVER_INFO_1547;
+
+typedef struct _SERVER_INFO_1548 {
+ DWORD sv1548_errorthreshold;
+} SERVER_INFO_1548, *PSERVER_INFO_1548, *LPSERVER_INFO_1548;
+
+typedef struct _SERVER_INFO_1549 {
+ DWORD sv1549_networkerrorthreshold;
+} SERVER_INFO_1549, *PSERVER_INFO_1549, *LPSERVER_INFO_1549;
+
+typedef struct _SERVER_INFO_1550 {
+ DWORD sv1550_diskspacethreshold;
+} SERVER_INFO_1550, *PSERVER_INFO_1550, *LPSERVER_INFO_1550;
+
+typedef struct _SERVER_INFO_1552 {
+ DWORD sv1552_maxlinkdelay;
+} SERVER_INFO_1552, *PSERVER_INFO_1552, *LPSERVER_INFO_1552;
+
+typedef struct _SERVER_INFO_1553 {
+ DWORD sv1553_minlinkthroughput;
+} SERVER_INFO_1553, *PSERVER_INFO_1553, *LPSERVER_INFO_1553;
+
+typedef struct _SERVER_INFO_1554 {
+ DWORD sv1554_linkinfovalidtime;
+} SERVER_INFO_1554, *PSERVER_INFO_1554, *LPSERVER_INFO_1554;
+
+typedef struct _SERVER_INFO_1555 {
+ DWORD sv1555_scavqosinfoupdatetime;
+} SERVER_INFO_1555, *PSERVER_INFO_1555, *LPSERVER_INFO_1555;
+
+typedef struct _SERVER_INFO_1556 {
+ DWORD sv1556_maxworkitemidletime;
+} SERVER_INFO_1556, *PSERVER_INFO_1556, *LPSERVER_INFO_1556;
+
+typedef struct _SERVER_INFO_1557 {
+ DWORD sv1557_maxrawworkitems;
+} SERVER_INFO_1557, *PSERVER_INFO_1557, *LPSERVER_INFO_1557;
+
+typedef struct _SERVER_INFO_1560 {
+ DWORD sv1560_producttype;
+} SERVER_INFO_1560, *PSERVER_INFO_1560, *LPSERVER_INFO_1560;
+
+typedef struct _SERVER_INFO_1561 {
+ DWORD sv1561_serversize;
+} SERVER_INFO_1561, *PSERVER_INFO_1561, *LPSERVER_INFO_1561;
+
+typedef struct _SERVER_INFO_1562 {
+ DWORD sv1562_connectionlessautodisc;
+} SERVER_INFO_1562, *PSERVER_INFO_1562, *LPSERVER_INFO_1562;
+
+typedef struct _SERVER_INFO_1563 {
+ DWORD sv1563_sharingviolationretries;
+} SERVER_INFO_1563, *PSERVER_INFO_1563, *LPSERVER_INFO_1563;
+
+typedef struct _SERVER_INFO_1564 {
+ DWORD sv1564_sharingviolationdelay;
+} SERVER_INFO_1564, *PSERVER_INFO_1564, *LPSERVER_INFO_1564;
+
+typedef struct _SERVER_INFO_1565 {
+ DWORD sv1565_maxglobalopensearch;
+} SERVER_INFO_1565, *PSERVER_INFO_1565, *LPSERVER_INFO_1565;
+
+typedef struct _SERVER_INFO_1566 {
+ BOOL sv1566_removeduplicatesearches;
+} SERVER_INFO_1566, *PSERVER_INFO_1566, *LPSERVER_INFO_1566;
+
+typedef struct _SERVER_INFO_1567 {
+ DWORD sv1567_lockviolationretries;
+} SERVER_INFO_1567, *PSERVER_INFO_1567, *LPSERVER_INFO_1567;
+
+typedef struct _SERVER_INFO_1568 {
+ DWORD sv1568_lockviolationoffset;
+} SERVER_INFO_1568, *PSERVER_INFO_1568, *LPSERVER_INFO_1568;
+
+typedef struct _SERVER_INFO_1569 {
+ DWORD sv1569_lockviolationdelay;
+} SERVER_INFO_1569, *PSERVER_INFO_1569, *LPSERVER_INFO_1569;
+
+typedef struct _SERVER_INFO_1570 {
+ DWORD sv1570_mdlreadswitchover;
+} SERVER_INFO_1570, *PSERVER_INFO_1570, *LPSERVER_INFO_1570;
+
+typedef struct _SERVER_INFO_1571 {
+ DWORD sv1571_cachedopenlimit;
+} SERVER_INFO_1571, *PSERVER_INFO_1571, *LPSERVER_INFO_1571;
+
+typedef struct _SERVER_INFO_1572 {
+ DWORD sv1572_criticalthreads;
+} SERVER_INFO_1572, *PSERVER_INFO_1572, *LPSERVER_INFO_1572;
+
+typedef struct _SERVER_INFO_1573 {
+ DWORD sv1573_restrictnullsessaccess;
+} SERVER_INFO_1573, *PSERVER_INFO_1573, *LPSERVER_INFO_1573;
+
+typedef struct _SERVER_INFO_1574 {
+ DWORD sv1574_enablewfw311directipx;
+} SERVER_INFO_1574, *PSERVER_INFO_1574, *LPSERVER_INFO_1574;
+
+typedef struct _SERVER_INFO_1575 {
+ DWORD sv1575_otherqueueaffinity;
+} SERVER_INFO_1575, *PSERVER_INFO_1575, *LPSERVER_INFO_1575;
+
+typedef struct _SERVER_INFO_1576 {
+ DWORD sv1576_queuesamplesecs;
+} SERVER_INFO_1576, *PSERVER_INFO_1576, *LPSERVER_INFO_1576;
+
+typedef struct _SERVER_INFO_1577 {
+ DWORD sv1577_balancecount;
+} SERVER_INFO_1577, *PSERVER_INFO_1577, *LPSERVER_INFO_1577;
+
+typedef struct _SERVER_INFO_1578 {
+ DWORD sv1578_preferredaffinity;
+} SERVER_INFO_1578, *PSERVER_INFO_1578, *LPSERVER_INFO_1578;
+
+typedef struct _SERVER_INFO_1579 {
+ DWORD sv1579_maxfreerfcbs;
+} SERVER_INFO_1579, *PSERVER_INFO_1579, *LPSERVER_INFO_1579;
+
+typedef struct _SERVER_INFO_1580 {
+ DWORD sv1580_maxfreemfcbs;
+} SERVER_INFO_1580, *PSERVER_INFO_1580, *LPSERVER_INFO_1580;
+
+typedef struct _SERVER_INFO_1581 {
+ DWORD sv1581_maxfreemlcbs;
+} SERVER_INFO_1581, *PSERVER_INFO_1581, *LPSERVER_INFO_1581;
+
+typedef struct _SERVER_INFO_1582 {
+ DWORD sv1582_maxfreepagedpoolchunks;
+} SERVER_INFO_1582, *PSERVER_INFO_1582, *LPSERVER_INFO_1582;
+
+typedef struct _SERVER_INFO_1583 {
+ DWORD sv1583_minpagedpoolchunksize;
+} SERVER_INFO_1583, *PSERVER_INFO_1583, *LPSERVER_INFO_1583;
+
+typedef struct _SERVER_INFO_1584 {
+ DWORD sv1584_maxpagedpoolchunksize;
+} SERVER_INFO_1584, *PSERVER_INFO_1584, *LPSERVER_INFO_1584;
+
+typedef struct _SERVER_INFO_1585 {
+ BOOL sv1585_sendsfrompreferredprocessor;
+} SERVER_INFO_1585, *PSERVER_INFO_1585, *LPSERVER_INFO_1585;
+
+typedef struct _SERVER_INFO_1586 {
+ DWORD sv1586_maxthreadsperqueue;
+} SERVER_INFO_1586, *PSERVER_INFO_1586, *LPSERVER_INFO_1586;
+
+typedef struct _SERVER_INFO_1587 {
+ DWORD sv1587_cacheddirectorylimit;
+} SERVER_INFO_1587, *PSERVER_INFO_1587, *LPSERVER_INFO_1587;
+
+typedef struct _SERVER_INFO_1588 {
+ DWORD sv1588_maxcopylength;
+} SERVER_INFO_1588, *PSERVER_INFO_1588, *LPSERVER_INFO_1588;
+
+typedef struct _SERVER_INFO_1589 {
+ DWORD sv1589_enablebulktransfer;
+} SERVER_INFO_1589, *PSERVER_INFO_1589, *LPSERVER_INFO_1589;
+
+typedef struct _SERVER_INFO_1590 {
+ DWORD sv1590_enablecompression;
+} SERVER_INFO_1590, *PSERVER_INFO_1590, *LPSERVER_INFO_1590;
+
+typedef struct _SERVER_INFO_1591 {
+ DWORD sv1591_autosharewks;
+} SERVER_INFO_1591, *PSERVER_INFO_1591, *LPSERVER_INFO_1591;
+
+typedef struct _SERVER_INFO_1592 {
+ DWORD sv1592_autosharewks;
+} SERVER_INFO_1592, *PSERVER_INFO_1592, *LPSERVER_INFO_1592;
+
+//
+// A special structure definition is required in order for this
+// structure to work with RPC. The problem is that having addresslength
+// indicate the number of bytes in address means that RPC must know the
+// link between the two.
+//
+
+#ifdef MIDL_PASS
+
+typedef struct _SERVER_TRANSPORT_INFO_0 {
+ DWORD svti0_numberofvcs;
+ LPTSTR svti0_transportname;
+ [size_is(svti0_transportaddresslength)] LPBYTE svti0_transportaddress;
+ DWORD svti0_transportaddresslength;
+ LPTSTR svti0_networkaddress;
+} SERVER_TRANSPORT_INFO_0, *PSERVER_TRANSPORT_INFO_0, *LPSERVER_TRANSPORT_INFO_0;
+
+typedef struct _SERVER_TRANSPORT_INFO_1 {
+ DWORD svti1_numberofvcs;
+ LPTSTR svti1_transportname;
+ [size_is(svti1_transportaddresslength)] LPBYTE svti1_transportaddress;
+ DWORD svti1_transportaddresslength;
+ LPTSTR svti1_networkaddress;
+ LPTSTR svti1_domain;
+} SERVER_TRANSPORT_INFO_1, *PSERVER_TRANSPORT_INFO_1, *LPSERVER_TRANSPORT_INFO_1;
+
+#else
+
+typedef struct _SERVER_TRANSPORT_INFO_0 {
+ DWORD svti0_numberofvcs;
+ LPTSTR svti0_transportname;
+ LPBYTE svti0_transportaddress;
+ DWORD svti0_transportaddresslength;
+ LPTSTR svti0_networkaddress;
+} SERVER_TRANSPORT_INFO_0, *PSERVER_TRANSPORT_INFO_0, *LPSERVER_TRANSPORT_INFO_0;
+
+typedef struct _SERVER_TRANSPORT_INFO_1 {
+ DWORD svti1_numberofvcs;
+ LPTSTR svti1_transportname;
+ LPBYTE svti1_transportaddress;
+ DWORD svti1_transportaddresslength;
+ LPTSTR svti1_networkaddress;
+ LPTSTR svti1_domain;
+} SERVER_TRANSPORT_INFO_1, *PSERVER_TRANSPORT_INFO_1, *LPSERVER_TRANSPORT_INFO_1;
+
+#endif
+
+//
+// Defines - SERVER
+//
+
+//
+// The platform ID indicates the levels to use for platform-specific
+// information.
+//
+
+#define SV_PLATFORM_ID_OS2 400
+#define SV_PLATFORM_ID_NT 500
+
+//
+// Mask to be applied to svX_version_major in order to obtain
+// the major version number.
+//
+
+#define MAJOR_VERSION_MASK 0x0F
+
+//
+// Bit-mapped values for svX_type fields. X = 1, 2 or 3.
+//
+
+#define SV_TYPE_WORKSTATION 0x00000001
+#define SV_TYPE_SERVER 0x00000002
+#define SV_TYPE_SQLSERVER 0x00000004
+#define SV_TYPE_DOMAIN_CTRL 0x00000008
+#define SV_TYPE_DOMAIN_BAKCTRL 0x00000010
+#define SV_TYPE_TIME_SOURCE 0x00000020
+#define SV_TYPE_AFP 0x00000040
+#define SV_TYPE_NOVELL 0x00000080
+#define SV_TYPE_DOMAIN_MEMBER 0x00000100
+#define SV_TYPE_PRINTQ_SERVER 0x00000200
+#define SV_TYPE_DIALIN_SERVER 0x00000400
+#define SV_TYPE_XENIX_SERVER 0x00000800
+#define SV_TYPE_SERVER_UNIX SV_TYPE_XENIX_SERVER
+#define SV_TYPE_NT 0x00001000
+#define SV_TYPE_WFW 0x00002000
+#define SV_TYPE_SERVER_MFPN 0x00004000
+#define SV_TYPE_SERVER_NT 0x00008000
+#define SV_TYPE_POTENTIAL_BROWSER 0x00010000
+#define SV_TYPE_BACKUP_BROWSER 0x00020000
+#define SV_TYPE_MASTER_BROWSER 0x00040000
+#define SV_TYPE_DOMAIN_MASTER 0x00080000
+#define SV_TYPE_SERVER_OSF 0x00100000
+#define SV_TYPE_SERVER_VMS 0x00200000
+#define SV_TYPE_WINDOWS 0x00400000 /* Windows95 and above */
+#define SV_TYPE_DFS 0x00800000 /* Root of a DFS tree */
+#define SV_TYPE_ALTERNATE_XPORT 0x20000000 /* return list for alternate transport */
+#define SV_TYPE_LOCAL_LIST_ONLY 0x40000000 /* Return local list only */
+#define SV_TYPE_DOMAIN_ENUM 0x80000000
+#define SV_TYPE_ALL 0xFFFFFFFF /* handy for NetServerEnum2 */
+
+//
+// Special value for sv102_disc that specifies infinite disconnect
+// time.
+//
+
+#define SV_NODISC (-1L) /* No autodisconnect timeout enforced */
+
+//
+// Values of svX_security field. X = 2 or 3.
+//
+
+#define SV_USERSECURITY 1
+#define SV_SHARESECURITY 0
+
+//
+// Values of svX_hidden field. X = 2 or 3.
+//
+
+#define SV_HIDDEN 1
+#define SV_VISIBLE 0
+
+//
+// Values for ParmError parameter to NetServerSetInfo.
+//
+
+#define SV_PLATFORM_ID_PARMNUM 101
+#define SV_NAME_PARMNUM 102
+#define SV_VERSION_MAJOR_PARMNUM 103
+#define SV_VERSION_MINOR_PARMNUM 104
+#define SV_TYPE_PARMNUM 105
+#define SV_COMMENT_PARMNUM 5
+#define SV_USERS_PARMNUM 107
+#define SV_DISC_PARMNUM 10
+#define SV_HIDDEN_PARMNUM 16
+#define SV_ANNOUNCE_PARMNUM 17
+#define SV_ANNDELTA_PARMNUM 18
+#define SV_USERPATH_PARMNUM 112
+
+#define SV_ULIST_MTIME_PARMNUM 401
+#define SV_GLIST_MTIME_PARMNUM 402
+#define SV_ALIST_MTIME_PARMNUM 403
+#define SV_ALERTS_PARMNUM 11
+#define SV_SECURITY_PARMNUM 405
+#define SV_NUMADMIN_PARMNUM 406
+#define SV_LANMASK_PARMNUM 407
+#define SV_GUESTACC_PARMNUM 408
+#define SV_CHDEVQ_PARMNUM 410
+#define SV_CHDEVJOBS_PARMNUM 411
+#define SV_CONNECTIONS_PARMNUM 412
+#define SV_SHARES_PARMNUM 413
+#define SV_OPENFILES_PARMNUM 414
+#define SV_SESSREQS_PARMNUM 417
+#define SV_ACTIVELOCKS_PARMNUM 419
+#define SV_NUMREQBUF_PARMNUM 420
+#define SV_NUMBIGBUF_PARMNUM 422
+#define SV_NUMFILETASKS_PARMNUM 423
+#define SV_ALERTSCHED_PARMNUM 37
+#define SV_ERRORALERT_PARMNUM 38
+#define SV_LOGONALERT_PARMNUM 39
+#define SV_ACCESSALERT_PARMNUM 40
+#define SV_DISKALERT_PARMNUM 41
+#define SV_NETIOALERT_PARMNUM 42
+#define SV_MAXAUDITSZ_PARMNUM 43
+#define SV_SRVHEURISTICS_PARMNUM 431
+
+#define SV_SESSOPENS_PARMNUM 501
+#define SV_SESSVCS_PARMNUM 502
+#define SV_OPENSEARCH_PARMNUM 503
+#define SV_SIZREQBUF_PARMNUM 504
+#define SV_INITWORKITEMS_PARMNUM 505
+#define SV_MAXWORKITEMS_PARMNUM 506
+#define SV_RAWWORKITEMS_PARMNUM 507
+#define SV_IRPSTACKSIZE_PARMNUM 508
+#define SV_MAXRAWBUFLEN_PARMNUM 509
+#define SV_SESSUSERS_PARMNUM 510
+#define SV_SESSCONNS_PARMNUM 511
+#define SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM 512
+#define SV_MAXPAGEDMEMORYUSAGE_PARMNUM 513
+#define SV_ENABLESOFTCOMPAT_PARMNUM 514
+#define SV_ENABLEFORCEDLOGOFF_PARMNUM 515
+#define SV_TIMESOURCE_PARMNUM 516
+#define SV_ACCEPTDOWNLEVELAPIS_PARMNUM 517
+#define SV_LMANNOUNCE_PARMNUM 518
+#define SV_DOMAIN_PARMNUM 519
+#define SV_MAXCOPYREADLEN_PARMNUM 520
+#define SV_MAXCOPYWRITELEN_PARMNUM 521
+#define SV_MINKEEPSEARCH_PARMNUM 522
+#define SV_MAXKEEPSEARCH_PARMNUM 523
+#define SV_MINKEEPCOMPLSEARCH_PARMNUM 524
+#define SV_MAXKEEPCOMPLSEARCH_PARMNUM 525
+#define SV_THREADCOUNTADD_PARMNUM 526
+#define SV_NUMBLOCKTHREADS_PARMNUM 527
+#define SV_SCAVTIMEOUT_PARMNUM 528
+#define SV_MINRCVQUEUE_PARMNUM 529
+#define SV_MINFREEWORKITEMS_PARMNUM 530
+#define SV_XACTMEMSIZE_PARMNUM 531
+#define SV_THREADPRIORITY_PARMNUM 532
+#define SV_MAXMPXCT_PARMNUM 533
+#define SV_OPLOCKBREAKWAIT_PARMNUM 534
+#define SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM 535
+#define SV_ENABLEOPLOCKS_PARMNUM 536
+#define SV_ENABLEOPLOCKFORCECLOSE_PARMNUM 537
+#define SV_ENABLEFCBOPENS_PARMNUM 538
+#define SV_ENABLERAW_PARMNUM 539
+#define SV_ENABLESHAREDNETDRIVES_PARMNUM 540
+#define SV_MINFREECONNECTIONS_PARMNUM 541
+#define SV_MAXFREECONNECTIONS_PARMNUM 542
+#define SV_INITSESSTABLE_PARMNUM 543
+#define SV_INITCONNTABLE_PARMNUM 544
+#define SV_INITFILETABLE_PARMNUM 545
+#define SV_INITSEARCHTABLE_PARMNUM 546
+#define SV_ALERTSCHEDULE_PARMNUM 547
+#define SV_ERRORTHRESHOLD_PARMNUM 548
+#define SV_NETWORKERRORTHRESHOLD_PARMNUM 549
+#define SV_DISKSPACETHRESHOLD_PARMNUM 550
+#define SV_MAXLINKDELAY_PARMNUM 552
+#define SV_MINLINKTHROUGHPUT_PARMNUM 553
+#define SV_LINKINFOVALIDTIME_PARMNUM 554
+#define SV_SCAVQOSINFOUPDATETIME_PARMNUM 555
+#define SV_MAXWORKITEMIDLETIME_PARMNUM 556
+#define SV_MAXRAWWORKITEMS_PARMNUM 557
+#define SV_PRODUCTTYPE_PARMNUM 560
+#define SV_SERVERSIZE_PARMNUM 561
+#define SV_CONNECTIONLESSAUTODISC_PARMNUM 562
+#define SV_SHARINGVIOLATIONRETRIES_PARMNUM 563
+#define SV_SHARINGVIOLATIONDELAY_PARMNUM 564
+#define SV_MAXGLOBALOPENSEARCH_PARMNUM 565
+#define SV_REMOVEDUPLICATESEARCHES_PARMNUM 566
+#define SV_LOCKVIOLATIONRETRIES_PARMNUM 567
+#define SV_LOCKVIOLATIONOFFSET_PARMNUM 568
+#define SV_LOCKVIOLATIONDELAY_PARMNUM 569
+#define SV_MDLREADSWITCHOVER_PARMNUM 570
+#define SV_CACHEDOPENLIMIT_PARMNUM 571
+#define SV_CRITICALTHREADS_PARMNUM 572
+#define SV_RESTRICTNULLSESSACCESS_PARMNUM 573
+#define SV_ENABLEWFW311DIRECTIPX_PARMNUM 574
+#define SV_OTHERQUEUEAFFINITY_PARMNUM 575
+#define SV_QUEUESAMPLESECS_PARMNUM 576
+#define SV_BALANCECOUNT_PARMNUM 577
+#define SV_PREFERREDAFFINITY_PARMNUM 578
+#define SV_MAXFREERFCBS_PARMNUM 579
+#define SV_MAXFREEMFCBS_PARMNUM 580
+#define SV_MAXFREELFCBS_PARMNUM 581
+#define SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM 582
+#define SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM 583
+#define SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM 584
+#define SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM 585
+#define SV_MAXTHREADSPERQUEUE_PARMNUM 586
+#define SV_CACHEDDIRECTORYLIMIT_PARMNUM 587
+#define SV_MAXCOPYLENGTH_PARMNUM 588
+#define SV_ENABLEBULKTRANSFER_PARMNUM 589
+#define SV_ENABLECOMPRESSION_PARMNUM 590
+#define SV_AUTOSHAREWKS_PARMNUM 591
+#define SV_AUTOSHARESERVER_PARMNUM 592
+
+//
+// Single-field infolevels for NetServerSetInfo.
+//
+
+#define SV_COMMENT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_COMMENT_PARMNUM)
+#define SV_USERS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_USERS_PARMNUM)
+#define SV_DISC_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_DISC_PARMNUM)
+#define SV_HIDDEN_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_HIDDEN_PARMNUM)
+#define SV_ANNOUNCE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ANNOUNCE_PARMNUM)
+#define SV_ANNDELTA_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ANNDELTA_PARMNUM)
+#define SV_SESSOPENS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_SESSOPENS_PARMNUM)
+#define SV_SESSVCS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_SESSVCS_PARMNUM)
+#define SV_OPENSEARCH_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_OPENSEARCH_PARMNUM)
+#define SV_MAXWORKITEMS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXWORKITEMS_PARMNUM)
+#define SV_MAXRAWBUFLEN_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXRAWBUFLEN_PARMNUM)
+#define SV_SESSUSERS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_SESSUSERS_PARMNUM)
+#define SV_SESSCONNS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_SESSCONNS_PARMNUM)
+#define SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM)
+#define SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXPAGEDMEMORYUSAGE_PARMNUM)
+#define SV_ENABLESOFTCOMPAT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ENABLESOFTCOMPAT_PARMNUM)
+#define SV_ENABLEFORCEDLOGOFF_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ENABLEFORCEDLOGOFF_PARMNUM)
+#define SV_TIMESOURCE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_TIMESOURCE_PARMNUM)
+#define SV_LMANNOUNCE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_LMANNOUNCE_PARMNUM)
+#define SV_MAXCOPYREADLEN_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXCOPYREADLEN_PARMNUM)
+#define SV_MAXCOPYWRITELEN_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXCOPYWRITELEN_PARMNUM)
+#define SV_MINKEEPSEARCH_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MINKEEPSEARCH_PARMNUM)
+#define SV_MAXKEEPSEARCH_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXKEEPSEARCH_PARMNUM)
+#define SV_MINKEEPCOMPLSEARCH_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MINKEEPCOMPLSEARCH_PARMNUM)
+#define SV_MAXKEEPCOMPLSEARCH_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXKEEPCOMPLSEARCH_PARMNUM)
+#define SV_SCAVTIMEOUT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_SCAVTIMEOUT_PARMNUM)
+#define SV_MINRCVQUEUE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MINRCVQUEUE_PARMNUM)
+#define SV_MINFREEWORKITEMS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MINFREEWORKITEMS_PARMNUM)
+#define SV_MAXMPXCT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXMPXCT_PARMNUM)
+#define SV_OPLOCKBREAKWAIT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_OPLOCKBREAKWAIT_PARMNUM)
+#define SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM)
+#define SV_ENABLEOPLOCKS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ENABLEOPLOCKS_PARMNUM)
+#define SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ENABLEOPLOCKFORCECLOSE_PARMNUM)
+#define SV_ENABLEFCBOPENS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ENABLEFCBOPENS_PARMNUM)
+#define SV_ENABLERAW_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ENABLERAW_PARMNUM)
+#define SV_ENABLESHAREDNETDRIVES_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ENABLESHAREDNETDRIVES_PARMNUM)
+#define SV_MINFREECONNECTIONS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MINFREECONNECTIONS_PARMNUM)
+#define SV_MAXFREECONNECTIONS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXFREECONNECTIONS_PARMNUM)
+#define SV_INITSESSTABLE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_INITSESSTABLE_PARMNUM)
+#define SV_INITCONNTABLE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_INITCONNTABLE_PARMNUM)
+#define SV_INITFILETABLE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_INITFILETABLE_PARMNUM)
+#define SV_INITSEARCHTABLE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_INITSEARCHTABLE_PARMNUM)
+#define SV_ALERTSCHEDULE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ALERTSCHEDULE_PARMNUM)
+#define SV_ERRORTHRESHOLD_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ERRORTHRESHOLD_PARMNUM)
+#define SV_NETWORKERRORTHRESHOLD_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_NETWORKERRORTHRESHOLD_PARMNUM)
+#define SV_DISKSPACETHRESHOLD_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_DISKSPACETHRESHOLD_PARMNUM)
+#define SV_MAXLINKDELAY_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXLINKDELAY_PARMNUM)
+#define SV_MINLINKTHROUGHPUT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MINLINKTHROUGHPUT_PARMNUM)
+#define SV_LINKINFOVALIDTIME_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_LINKINFOVALIDTIME_PARMNUM)
+#define SV_SCAVQOSINFOUPDATETIME_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_SCAVQOSINFOUPDATETIME_PARMNUM)
+#define SV_MAXWORKITEMIDLETIME_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXWORKITEMIDLETIME_PARMNUM)
+#define SV_MAXRAWWORKITEMS_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXRAWWORKITEMS_PARMNUM)
+#define SV_PRODUCTTYPE_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_PRODUCTTYPE_PARMNUM)
+#define SV_SERVERSIZE_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_SERVERSIZE_PARMNUM)
+#define SV_CONNECTIONLESSAUTODISC_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_CONNECTIONLESSAUTODISC_PARMNUM)
+#define SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_SHARINGVIOLATIONRETRIES_PARMNUM)
+#define SV_SHARINGVIOLATIONDELAY_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_SHARINGVIOLATIONDELAY_PARMNUM)
+#define SV_MAXGLOBALOPENSEARCH_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXGLOBALOPENSEARCH_PARMNUM)
+#define SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_REMOVEDUPLICATESEARCHES_PARMNUM)
+#define SV_LOCKVIOLATIONRETRIES_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_LOCKVIOLATIONRETRIES_PARMNUM)
+#define SV_LOCKVIOLATIONOFFSET_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_LOCKVIOLATIONOFFSET_PARMNUM)
+#define SV_LOCKVIOLATIONDELAY_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_LOCKVIOLATIONDELAY_PARMNUM)
+#define SV_MDLREADSWITCHOVER_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MDLREADSWITCHOVER_PARMNUM)
+#define SV_CACHEDOPENLIMIT_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_CACHEDOPENLIMIT_PARMNUM)
+#define SV_CRITICALTHREADS_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_CRITICALTHREADS_PARMNUM)
+#define SV_RESTRICTNULLSESSACCESS_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_RESTRICTNULLSESSACCESS_PARMNUM)
+#define SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ENABLEWFW311DIRECTIPX_PARMNUM)
+#define SV_OTHERQUEUEAFFINITY_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_OTHERQUEUEAFFINITY_PARMNUM)
+#define SV_QUEUESAMPLESECS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_QUEUESAMPLESECS_PARMNUM)
+#define SV_BALANCECOUNT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_BALANCECOUNT_PARMNUM)
+#define SV_PREFERREDAFFINITY_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_PREFERREDAFFINITY_PARMNUM)
+#define SV_MAXFREERFCBS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXFREERFCBS_PARMNUM)
+#define SV_MAXFREEMFCBS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXFREEMFCBS_PARMNUM)
+#define SV_MAXFREELFCBS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXFREELFCBS_PARMNUM)
+#define SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM)
+#define SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM)
+#define SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM)
+#define SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM)
+#define SV_MAXTHREADSPERQUEUE_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXTHREADSPERQUEUE_PARMNUM)
+#define SV_CACHEDDIRECTORYLIMIT_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_CACHEDDIRECTORYLIMIT_PARMNUM)
+#define SV_MAXCOPYLENGTH_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_MAXCOPYLENGTH_PARMNUM)
+#define SV_ENABLEBULKTRANSFER_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ENABLEBULKTRANSFER_PARMNUM)
+#define SV_ENABLECOMPRESSION_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_ENABLECOMPRESSION_PARMNUM)
+#define SV_AUTOSHAREWKS_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_AUTOSHAREWKS_PARMNUM)
+#define SV_AUTOSHARESERVER_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SV_AUTOSHARESERVER_PARMNUM)
+
+#define SVI1_NUM_ELEMENTS 5
+#define SVI2_NUM_ELEMENTS 40
+#define SVI3_NUM_ELEMENTS 44
+
+//
+// Maxmimum length for command string to NetServerAdminCommand.
+//
+
+#define SV_MAX_CMD_LEN PATHLEN
+
+//
+// Masks describing AUTOPROFILE parameters
+//
+
+#define SW_AUTOPROF_LOAD_MASK 0x1
+#define SW_AUTOPROF_SAVE_MASK 0x2
+
+//
+// Max size of svX_srvheuristics.
+//
+
+#define SV_MAX_SRV_HEUR_LEN 32 // Max heuristics info string length.
+
+//
+// Equate for use with sv102_licenses.
+//
+
+#define SV_USERS_PER_LICENSE 5
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMSERVER_
+
diff --git a/public/sdk/inc/lmshare.h b/public/sdk/inc/lmshare.h
new file mode 100644
index 000000000..cbb566728
--- /dev/null
+++ b/public/sdk/inc/lmshare.h
@@ -0,0 +1,443 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ lmshare.h
+
+Abstract:
+
+ This module defines the API function prototypes and data structures
+ for the following groups of NT API functions:
+ NetShare
+ NetSession
+ NetFile
+ NetConnection
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include <windef.h> and <lmcons.h> before this file.
+
+--*/
+
+//
+// SHARE API
+//
+
+#ifndef _LMSHARE_
+#define _LMSHARE_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Function Prototypes - Share
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetShareAdd (
+ IN LPTSTR servername,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetShareEnum (
+ IN LPTSTR servername,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetShareEnumSticky (
+ IN LPTSTR servername,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetShareGetInfo (
+ IN LPTSTR servername,
+ IN LPTSTR netname,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetShareSetInfo (
+ IN LPTSTR servername,
+ IN LPTSTR netname,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetShareDel (
+ IN LPTSTR servername,
+ IN LPTSTR netname,
+ IN DWORD reserved
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetShareDelSticky (
+ IN LPTSTR servername,
+ IN LPTSTR netname,
+ IN DWORD reserved
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetShareCheck (
+ IN LPTSTR servername,
+ IN LPTSTR device,
+ OUT LPDWORD type
+ );
+
+//
+// Data Structures - Share
+//
+
+typedef struct _SHARE_INFO_0 {
+ LPTSTR shi0_netname;
+} SHARE_INFO_0, *PSHARE_INFO_0, *LPSHARE_INFO_0;
+
+typedef struct _SHARE_INFO_1 {
+ LPTSTR shi1_netname;
+ DWORD shi1_type;
+ LPTSTR shi1_remark;
+} SHARE_INFO_1, *PSHARE_INFO_1, *LPSHARE_INFO_1;
+
+typedef struct _SHARE_INFO_2 {
+ LPTSTR shi2_netname;
+ DWORD shi2_type;
+ LPTSTR shi2_remark;
+ DWORD shi2_permissions;
+ DWORD shi2_max_uses;
+ DWORD shi2_current_uses;
+ LPTSTR shi2_path;
+ LPTSTR shi2_passwd;
+} SHARE_INFO_2, *PSHARE_INFO_2, *LPSHARE_INFO_2;
+
+typedef struct _SHARE_INFO_502 {
+ LPTSTR shi502_netname;
+ DWORD shi502_type;
+ LPTSTR shi502_remark;
+ DWORD shi502_permissions;
+ DWORD shi502_max_uses;
+ DWORD shi502_current_uses;
+ LPTSTR shi502_path;
+ LPTSTR shi502_passwd;
+ DWORD shi502_reserved;
+ PSECURITY_DESCRIPTOR shi502_security_descriptor;
+} SHARE_INFO_502, *PSHARE_INFO_502, *LPSHARE_INFO_502;
+
+typedef struct _SHARE_INFO_1004 {
+ LPTSTR shi1004_remark;
+} SHARE_INFO_1004, *PSHARE_INFO_1004, *LPSHARE_INFO_1004;
+
+typedef struct _SHARE_INFO_1005 {
+ DWORD shi1005_flags;
+} SHARE_INFO_1005, *PSHARE_INFO_1005, *LPSHARE_INFO_1005;
+
+
+typedef struct _SHARE_INFO_1006 {
+ DWORD shi1006_max_uses;
+} SHARE_INFO_1006, *PSHARE_INFO_1006, *LPSHARE_INFO_1006;
+
+typedef struct _SHARE_INFO_1501 {
+ DWORD shi1501_reserved;
+ PSECURITY_DESCRIPTOR shi1501_security_descriptor;
+} SHARE_INFO_1501, *PSHARE_INFO_1501, *LPSHARE_INFO_1501;
+
+//
+// Special Values and Constants - Share
+//
+
+//
+// Values for parm_err parameter.
+//
+
+#define SHARE_NETNAME_PARMNUM 1
+#define SHARE_TYPE_PARMNUM 3
+#define SHARE_REMARK_PARMNUM 4
+#define SHARE_PERMISSIONS_PARMNUM 5
+#define SHARE_MAX_USES_PARMNUM 6
+#define SHARE_CURRENT_USES_PARMNUM 7
+#define SHARE_PATH_PARMNUM 8
+#define SHARE_PASSWD_PARMNUM 9
+#define SHARE_FILE_SD_PARMNUM 501
+
+//
+// Single-field infolevels for NetShareSetInfo.
+//
+
+#define SHARE_REMARK_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM)
+#define SHARE_MAX_USES_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM)
+#define SHARE_FILE_SD_INFOLEVEL \
+ (PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM)
+
+#define SHI1_NUM_ELEMENTS 4
+#define SHI2_NUM_ELEMENTS 10
+
+
+//
+// Share types (shi1_type and shi2_type fields).
+//
+
+#define STYPE_DISKTREE 0
+#define STYPE_PRINTQ 1
+#define STYPE_DEVICE 2
+#define STYPE_IPC 3
+
+#define STYPE_SPECIAL 0x80000000
+
+#define SHI_USES_UNLIMITED (DWORD)-1
+
+//
+// Flags values for the 1005 infolevel
+//
+#define SHI1005_FLAGS_DFS 0x01 // Share is in the DFS
+#define SHI1005_FLAGS_DFS_ROOT 0x02 // Share is root of DFS
+
+#endif // _LMSHARE_
+
+//
+// SESSION API
+//
+
+#ifndef _LMSESSION_
+#define _LMSESSION_
+
+//
+// Function Prototypes Session
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetSessionEnum (
+ IN LPTSTR servername OPTIONAL,
+ IN LPTSTR UncClientName OPTIONAL,
+ IN LPTSTR username OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetSessionDel (
+ IN LPTSTR servername OPTIONAL,
+ IN LPTSTR UncClientName,
+ IN LPTSTR username
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetSessionGetInfo (
+ IN LPTSTR servername OPTIONAL,
+ IN LPTSTR UncClientName,
+ IN LPTSTR username,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+
+//
+// Data Structures - Session
+//
+
+typedef struct _SESSION_INFO_0 {
+ LPTSTR sesi0_cname; // client name (no backslashes)
+} SESSION_INFO_0, *PSESSION_INFO_0, *LPSESSION_INFO_0;
+
+typedef struct _SESSION_INFO_1 {
+ LPTSTR sesi1_cname; // client name (no backslashes)
+ LPTSTR sesi1_username;
+ DWORD sesi1_num_opens;
+ DWORD sesi1_time;
+ DWORD sesi1_idle_time;
+ DWORD sesi1_user_flags;
+} SESSION_INFO_1, *PSESSION_INFO_1, *LPSESSION_INFO_1;
+
+typedef struct _SESSION_INFO_2 {
+ LPTSTR sesi2_cname; // client name (no backslashes)
+ LPTSTR sesi2_username;
+ DWORD sesi2_num_opens;
+ DWORD sesi2_time;
+ DWORD sesi2_idle_time;
+ DWORD sesi2_user_flags;
+ LPTSTR sesi2_cltype_name;
+} SESSION_INFO_2, *PSESSION_INFO_2, *LPSESSION_INFO_2;
+
+typedef struct _SESSION_INFO_10 {
+ LPTSTR sesi10_cname; // client name (no backslashes)
+ LPTSTR sesi10_username;
+ DWORD sesi10_time;
+ DWORD sesi10_idle_time;
+} SESSION_INFO_10, *PSESSION_INFO_10, *LPSESSION_INFO_10;
+
+typedef struct _SESSION_INFO_502 {
+ LPTSTR sesi502_cname; // client name (no backslashes)
+ LPTSTR sesi502_username;
+ DWORD sesi502_num_opens;
+ DWORD sesi502_time;
+ DWORD sesi502_idle_time;
+ DWORD sesi502_user_flags;
+ LPTSTR sesi502_cltype_name;
+ LPTSTR sesi502_transport;
+} SESSION_INFO_502, *PSESSION_INFO_502, *LPSESSION_INFO_502;
+
+
+//
+// Special Values and Constants - Session
+//
+
+
+//
+// Bits defined in sesi1_user_flags.
+//
+
+#define SESS_GUEST 0x00000001 // session is logged on as a guest
+#define SESS_NOENCRYPTION 0x00000002 // session is not using encryption
+
+#define SESI1_NUM_ELEMENTS 8
+#define SESI2_NUM_ELEMENTS 9
+
+#endif // _LMSESSION_
+
+//
+// CONNECTION API
+//
+
+#ifndef _LMCONNECTION_
+
+#define _LMCONNECTION_
+
+//
+// Function Prototypes - CONNECTION
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetConnectionEnum (
+ IN LPTSTR servername OPTIONAL,
+ IN LPTSTR qualifier,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle OPTIONAL
+ );
+
+//
+// Data Structures - CONNECTION
+//
+
+typedef struct _CONNECTION_INFO_0 {
+ DWORD coni0_id;
+} CONNECTION_INFO_0, *PCONNECTION_INFO_0, *LPCONNECTION_INFO_0;
+
+typedef struct _CONNECTION_INFO_1 {
+ DWORD coni1_id;
+ DWORD coni1_type;
+ DWORD coni1_num_opens;
+ DWORD coni1_num_users;
+ DWORD coni1_time;
+ LPTSTR coni1_username;
+ LPTSTR coni1_netname;
+} CONNECTION_INFO_1, *PCONNECTION_INFO_1, *LPCONNECTION_INFO_1;
+
+#endif // _LMCONNECTION_
+
+//
+// FILE API
+//
+
+#ifndef _LMFILE_
+#define _LMFILE_
+
+//
+// Function Prototypes - FILE
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetFileClose (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD fileid
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetFileEnum (
+ IN LPTSTR servername OPTIONAL,
+ IN LPTSTR basepath OPTIONAL,
+ IN LPTSTR username OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetFileGetInfo (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD fileid,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+//
+// Data Structures - File
+//
+
+// File APIs are available at information levels 2 & 3 only. Levels 0 &
+// 1 are not supported.
+//
+
+typedef struct _FILE_INFO_2 {
+ DWORD fi2_id;
+} FILE_INFO_2, *PFILE_INFO_2, *LPFILE_INFO_2;
+
+typedef struct _FILE_INFO_3 {
+ DWORD fi3_id;
+ DWORD fi3_permissions;
+ DWORD fi3_num_locks;
+ LPTSTR fi3_pathname;
+ LPTSTR fi3_username;
+} FILE_INFO_3, *PFILE_INFO_3, *LPFILE_INFO_3;
+
+//
+// Special Values and Constants - File
+//
+
+//
+// bit values for permissions
+//
+
+#define PERM_FILE_READ 0x1 // user has read access
+#define PERM_FILE_WRITE 0x2 // user has write access
+#define PERM_FILE_CREATE 0x4 // user has create access
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMFILE_
diff --git a/public/sdk/inc/lmsname.h b/public/sdk/inc/lmsname.h
new file mode 100644
index 000000000..069ae5262
--- /dev/null
+++ b/public/sdk/inc/lmsname.h
@@ -0,0 +1,103 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmsname.h
+
+Abstract:
+
+ This file contains service name strings. It is included by lmsvc.h.
+
+Environment:
+
+ User Mode -Win32
+
+
+--*/
+
+#ifndef _LMSNAME_
+#define _LMSNAME_
+
+//
+// Standard LAN Manager service names.
+//
+
+#define SERVICE_WORKSTATION TEXT("LanmanWorkstation")
+#define SERVICE_LM20_WORKSTATION TEXT("WORKSTATION")
+#define WORKSTATION_DISPLAY_NAME TEXT("Workstation")
+
+#define SERVICE_SERVER TEXT("LanmanServer")
+#define SERVICE_LM20_SERVER TEXT("SERVER")
+#define SERVER_DISPLAY_NAME TEXT("Server")
+
+#define SERVICE_BROWSER TEXT("BROWSER")
+#define SERVICE_LM20_BROWSER SERVICE_BROWSER
+
+#define SERVICE_MESSENGER TEXT("MESSENGER")
+#define SERVICE_LM20_MESSENGER SERVICE_MESSENGER
+
+#define SERVICE_NETRUN TEXT("NETRUN")
+#define SERVICE_LM20_NETRUN SERVICE_NETRUN
+
+#define SERVICE_SPOOLER TEXT("SPOOLER")
+#define SERVICE_LM20_SPOOLER SERVICE_SPOOLER
+
+#define SERVICE_ALERTER TEXT("ALERTER")
+#define SERVICE_LM20_ALERTER SERVICE_ALERTER
+
+#define SERVICE_NETLOGON TEXT("NETLOGON")
+#define SERVICE_LM20_NETLOGON SERVICE_NETLOGON
+
+#define SERVICE_NETPOPUP TEXT("NETPOPUP")
+#define SERVICE_LM20_NETPOPUP SERVICE_NETPOPUP
+
+#define SERVICE_SQLSERVER TEXT("SQLSERVER")
+#define SERVICE_LM20_SQLSERVER SERVICE_SQLSERVER
+
+#define SERVICE_REPL TEXT("REPLICATOR")
+#define SERVICE_LM20_REPL SERVICE_REPL
+
+#define SERVICE_RIPL TEXT("REMOTEBOOT")
+#define SERVICE_LM20_RIPL SERVICE_RIPL
+
+#define SERVICE_TIMESOURCE TEXT("TIMESOURCE")
+#define SERVICE_LM20_TIMESOURCE SERVICE_TIMESOURCE
+
+#define SERVICE_AFP TEXT("AFP")
+#define SERVICE_LM20_AFP SERVICE_AFP
+
+#define SERVICE_UPS TEXT("UPS")
+#define SERVICE_LM20_UPS SERVICE_UPS
+
+#define SERVICE_XACTSRV TEXT("XACTSRV")
+#define SERVICE_LM20_XACTSRV SERVICE_XACTSRV
+
+#define SERVICE_TCPIP TEXT("TCPIP")
+#define SERVICE_LM20_TCPIP SERVICE_TCPIP
+
+#define SERVICE_NBT TEXT("NBT")
+#define SERVICE_LM20_NBT SERVICE_NBT
+
+#define SERVICE_LMHOSTS TEXT("LMHOSTS")
+#define SERVICE_LM20_LMHOSTS SERVICE_LMHOSTS
+
+#define SERVICE_TELNET TEXT("Telnet")
+#define SERVICE_LM20_TELNET SERVICE_TELNET
+
+#define SERVICE_SCHEDULE TEXT("Schedule")
+#define SERVICE_LM20_SCHEDULE SERVICE_SCHEDULE
+
+#define SERVICE_NTLMSSP TEXT("NtLmSsp")
+
+#define SERVICE_DHCP TEXT("DHCP")
+#define SERVICE_LM20_DHCP SERVICE_DHCP
+
+#define SERVICE_NWSAP TEXT("NwSapAgent")
+#define SERVICE_LM20_NWSAP SERVICE_NWSAP
+#define NWSAP_DISPLAY_NAME TEXT("NW Sap Agent")
+
+#define SERVICE_NWCS TEXT("NWCWorkstation")
+
+#endif
diff --git a/public/sdk/inc/lmstats.h b/public/sdk/inc/lmstats.h
new file mode 100644
index 000000000..fffb50fd7
--- /dev/null
+++ b/public/sdk/inc/lmstats.h
@@ -0,0 +1,184 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmstats.h
+
+Abstract:
+
+ This module defines the API function prototypes and data structures
+ for the following groups of NT API functions:
+ NetStatistics
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+--*/
+
+#ifndef _LMSTATS_
+#define _LMSTATS_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Function Prototypes - Statistics
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetStatisticsGet (
+ IN LPTSTR server,
+ IN LPTSTR service,
+ IN DWORD level,
+ IN DWORD options,
+ OUT LPBYTE *bufptr
+ );
+
+//
+// Data Structures - Statistics
+//
+
+#ifdef LM20_WORKSTATION_STATISTICS
+typedef struct _STAT_WORKSTATION_0 {
+ DWORD stw0_start;
+ DWORD stw0_numNCB_r;
+ DWORD stw0_numNCB_s;
+ DWORD stw0_numNCB_a;
+ DWORD stw0_fiNCB_r;
+ DWORD stw0_fiNCB_s;
+ DWORD stw0_fiNCB_a;
+ DWORD stw0_fcNCB_r;
+ DWORD stw0_fcNCB_s;
+ DWORD stw0_fcNCB_a;
+ DWORD stw0_sesstart;
+ DWORD stw0_sessfailcon;
+ DWORD stw0_sessbroke;
+ DWORD stw0_uses;
+ DWORD stw0_usefail;
+ DWORD stw0_autorec;
+ DWORD stw0_bytessent_r_lo;
+ DWORD stw0_bytessent_r_hi;
+ DWORD stw0_bytesrcvd_r_lo;
+ DWORD stw0_bytesrcvd_r_hi;
+ DWORD stw0_bytessent_s_lo;
+ DWORD stw0_bytessent_s_hi;
+ DWORD stw0_bytesrcvd_s_lo;
+ DWORD stw0_bytesrcvd_s_hi;
+ DWORD stw0_bytessent_a_lo;
+ DWORD stw0_bytessent_a_hi;
+ DWORD stw0_bytesrcvd_a_lo;
+ DWORD stw0_bytesrcvd_a_hi;
+ DWORD stw0_reqbufneed;
+ DWORD stw0_bigbufneed;
+} STAT_WORKSTATION_0, *PSTAT_WORKSTATION_0, *LPSTAT_WORKSTATION_0;
+#else
+
+//
+// NB: The following structure is REDIR_STATISTICS in sdk\inc\ntddnfs.h. If you
+// change the structure, change it in both places
+//
+
+typedef struct _STAT_WORKSTATION_0 {
+ LARGE_INTEGER StatisticsStartTime;
+
+ LARGE_INTEGER BytesReceived;
+ LARGE_INTEGER SmbsReceived;
+ LARGE_INTEGER PagingReadBytesRequested;
+ LARGE_INTEGER NonPagingReadBytesRequested;
+ LARGE_INTEGER CacheReadBytesRequested;
+ LARGE_INTEGER NetworkReadBytesRequested;
+
+ LARGE_INTEGER BytesTransmitted;
+ LARGE_INTEGER SmbsTransmitted;
+ LARGE_INTEGER PagingWriteBytesRequested;
+ LARGE_INTEGER NonPagingWriteBytesRequested;
+ LARGE_INTEGER CacheWriteBytesRequested;
+ LARGE_INTEGER NetworkWriteBytesRequested;
+
+ DWORD InitiallyFailedOperations;
+ DWORD FailedCompletionOperations;
+
+ DWORD ReadOperations;
+ DWORD RandomReadOperations;
+ DWORD ReadSmbs;
+ DWORD LargeReadSmbs;
+ DWORD SmallReadSmbs;
+
+ DWORD WriteOperations;
+ DWORD RandomWriteOperations;
+ DWORD WriteSmbs;
+ DWORD LargeWriteSmbs;
+ DWORD SmallWriteSmbs;
+
+ DWORD RawReadsDenied;
+ DWORD RawWritesDenied;
+
+ DWORD NetworkErrors;
+
+ // Connection/Session counts
+ DWORD Sessions;
+ DWORD FailedSessions;
+ DWORD Reconnects;
+ DWORD CoreConnects;
+ DWORD Lanman20Connects;
+ DWORD Lanman21Connects;
+ DWORD LanmanNtConnects;
+ DWORD ServerDisconnects;
+ DWORD HungSessions;
+ DWORD UseCount;
+ DWORD FailedUseCount;
+
+ //
+ // Queue Lengths (updates protected by RdrMpxTableSpinLock NOT
+ // RdrStatisticsSpinlock)
+ //
+
+ DWORD CurrentCommands;
+
+} STAT_WORKSTATION_0, *PSTAT_WORKSTATION_0, *LPSTAT_WORKSTATION_0;
+#endif
+
+typedef struct _STAT_SERVER_0 {
+ DWORD sts0_start;
+ DWORD sts0_fopens;
+ DWORD sts0_devopens;
+ DWORD sts0_jobsqueued;
+ DWORD sts0_sopens;
+ DWORD sts0_stimedout;
+ DWORD sts0_serrorout;
+ DWORD sts0_pwerrors;
+ DWORD sts0_permerrors;
+ DWORD sts0_syserrors;
+ DWORD sts0_bytessent_low;
+ DWORD sts0_bytessent_high;
+ DWORD sts0_bytesrcvd_low;
+ DWORD sts0_bytesrcvd_high;
+ DWORD sts0_avresponse;
+ DWORD sts0_reqbufneed;
+ DWORD sts0_bigbufneed;
+} STAT_SERVER_0, *PSTAT_SERVER_0, *LPSTAT_SERVER_0;
+
+
+//
+// Special Values and Constants
+//
+
+#define STATSOPT_CLR 1
+#define STATS_NO_VALUE ((unsigned long) -1L)
+#define STATS_OVERFLOW ((unsigned long) -2L)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMSTATS.H
diff --git a/public/sdk/inc/lmsvc.h b/public/sdk/inc/lmsvc.h
new file mode 100644
index 000000000..a319f1e05
--- /dev/null
+++ b/public/sdk/inc/lmsvc.h
@@ -0,0 +1,532 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmsvc.h
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the NetService API.
+
+[Environment:]
+
+ User Mode -Win32
+
+[Notes:]
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+--*/
+
+#ifndef _LMSVC_
+#define _LMSVC_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Include the file which contains all the service name strings.
+//
+#include <lmsname.h>
+
+//
+// Data Structures
+//
+
+typedef struct _SERVICE_INFO_0 {
+ LPWSTR svci0_name;
+} SERVICE_INFO_0, *PSERVICE_INFO_0, * LPSERVICE_INFO_0;
+
+typedef struct _SERVICE_INFO_1 {
+ LPWSTR svci1_name;
+ DWORD svci1_status;
+ DWORD svci1_code;
+ DWORD svci1_pid;
+} SERVICE_INFO_1, *PSERVICE_INFO_1, * LPSERVICE_INFO_1;
+
+typedef struct _SERVICE_INFO_2 {
+ LPWSTR svci2_name;
+ DWORD svci2_status;
+ DWORD svci2_code;
+ DWORD svci2_pid;
+ LPWSTR svci2_text;
+ DWORD svci2_specific_error;
+ LPWSTR svci2_display_name;
+} SERVICE_INFO_2, *PSERVICE_INFO_2, * LPSERVICE_INFO_2;
+
+//
+// Function Prototypes
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetServiceControl (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR service,
+ IN DWORD opcode,
+ IN DWORD arg,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServiceEnum (
+ IN LPCWSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resume_handle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServiceGetInfo (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR service,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetServiceInstall (
+ IN LPCWSTR servername OPTIONAL,
+ IN LPCWSTR service,
+ IN DWORD argc,
+ IN LPCWSTR argv[],
+ OUT LPBYTE *bufptr
+ );
+
+//
+// Special Values and Constants
+//
+
+//
+// Bitmask and bit values for svci1_status, and svci2_status
+// fields. For each "subfield", there is a mask defined,
+// and a number of constants representing the value
+// obtained by doing (status & mask).
+//
+
+// Bits 0,1 -- general status
+
+#define SERVICE_INSTALL_STATE 0x03
+#define SERVICE_UNINSTALLED 0x00
+#define SERVICE_INSTALL_PENDING 0x01
+#define SERVICE_UNINSTALL_PENDING 0x02
+#define SERVICE_INSTALLED 0x03
+
+// Bits 2,3 -- paused/active status
+
+#define SERVICE_PAUSE_STATE 0x0C
+#define LM20_SERVICE_ACTIVE 0x00
+#define LM20_SERVICE_CONTINUE_PENDING 0x04
+#define LM20_SERVICE_PAUSE_PENDING 0x08
+#define LM20_SERVICE_PAUSED 0x0C
+
+// Bit 4 -- uninstallable indication
+
+#define SERVICE_NOT_UNINSTALLABLE 0x00
+#define SERVICE_UNINSTALLABLE 0x10
+
+// Bit 5 -- pausable indication
+
+#define SERVICE_NOT_PAUSABLE 0x00
+#define SERVICE_PAUSABLE 0x20
+
+// Workstation service only:
+// Bits 8,9,10 -- redirection paused/active
+
+#define SERVICE_REDIR_PAUSED 0x700
+#define SERVICE_REDIR_DISK_PAUSED 0x100
+#define SERVICE_REDIR_PRINT_PAUSED 0x200
+#define SERVICE_REDIR_COMM_PAUSED 0x400
+
+//
+// Additional standard LAN Manager for MS-DOS services
+//
+
+#define SERVICE_DOS_ENCRYPTION L"ENCRYPT"
+
+//
+// NetServiceControl opcodes.
+//
+
+#define SERVICE_CTRL_INTERROGATE 0
+#define SERVICE_CTRL_PAUSE 1
+#define SERVICE_CTRL_CONTINUE 2
+#define SERVICE_CTRL_UNINSTALL 3
+
+//
+// Workstation service only: Bits used in the "arg" parameter
+// to NetServiceControl in conjunction with the opcode
+// SERVICE_CTRL_PAUSE or SERVICE_CTRL_CONTINUE, to pause or
+// continue redirection.
+//
+
+#define SERVICE_CTRL_REDIR_DISK 0x1
+#define SERVICE_CTRL_REDIR_PRINT 0x2
+#define SERVICE_CTRL_REDIR_COMM 0x4
+
+//
+// Values for svci1_code, and svci2_code when status
+// of the service is SERVICE_INSTALL_PENDING or
+// SERVICE_UNINSTALL_PENDING.
+// A service can optionally provide a hint to the installer
+// that the install is proceeding and how long to wait
+// (in 0.1 second increments) before querying status again.
+//
+
+#define SERVICE_IP_NO_HINT 0x0
+#define SERVICE_CCP_NO_HINT 0x0
+
+#define SERVICE_IP_QUERY_HINT 0x10000
+#define SERVICE_CCP_QUERY_HINT 0x10000
+
+//
+// Mask for install proceeding checkpoint number
+//
+
+#define SERVICE_IP_CHKPT_NUM 0x0FF
+#define SERVICE_CCP_CHKPT_NUM 0x0FF
+
+//
+// Mask for wait time hint before querying again
+//
+
+#define SERVICE_IP_WAIT_TIME 0x0FF00
+#define SERVICE_CCP_WAIT_TIME 0x0FF00
+
+//
+// Shift count for building wait time _code values
+//
+
+#define SERVICE_IP_WAITTIME_SHIFT 8
+#define SERVICE_NTIP_WAITTIME_SHIFT 12
+
+//
+// Mask used for upper and lower portions of wait hint time.
+//
+#define UPPER_HINT_MASK 0x0000FF00
+#define LOWER_HINT_MASK 0x000000FF
+#define UPPER_GET_HINT_MASK 0x0FF00000
+#define LOWER_GET_HINT_MASK 0x0000FF00
+#define SERVICE_NT_MAXTIME 0x0000FFFF
+#define SERVICE_RESRV_MASK 0x0001FFFF
+#define SERVICE_MAXTIME 0x000000FF
+
+//
+// SERVICE_BASE is the base of service error codes,
+// chosen to avoid conflict with OS, redirector,
+// netapi, and errlog codes.
+//
+// Don't change the comments following the manifest constants without
+// understanding how mapmsg works.
+//
+
+#define SERVICE_BASE 3050
+#define SERVICE_UIC_NORMAL 0
+/*
+ * Uninstall codes, to be used in high byte of 'code' on final NetStatus,
+ * which sets the status to UNINSTALLED.
+ */
+
+#define SERVICE_UIC_BADPARMVAL (SERVICE_BASE + 1)
+/*
+ * The Registry or the information you just typed includes an illegal
+ * value for "%1".
+ */
+
+#define SERVICE_UIC_MISSPARM (SERVICE_BASE + 2)
+/*
+ * The required parameter was not provided on the command
+ * line or in the configuration file.
+ */
+
+#define SERVICE_UIC_UNKPARM (SERVICE_BASE + 3)
+/*
+ * LAN Manager does not recognize "%1" as a valid option.
+ */
+
+#define SERVICE_UIC_RESOURCE (SERVICE_BASE + 4)
+/*
+ * A request for resource could not be satisfied.
+ */
+
+#define SERVICE_UIC_CONFIG (SERVICE_BASE + 5)
+/*
+ * A problem exists with the system configuration.
+ */
+
+#define SERVICE_UIC_SYSTEM (SERVICE_BASE + 6)
+/*
+ * A system error has occurred.
+ */
+
+#define SERVICE_UIC_INTERNAL (SERVICE_BASE + 7)
+/*
+ * An internal consistency error has occurred.
+ */
+
+#define SERVICE_UIC_AMBIGPARM (SERVICE_BASE + 8)
+/*
+ * The configuration file or the command line has an ambiguous option.
+ */
+
+#define SERVICE_UIC_DUPPARM (SERVICE_BASE + 9)
+/*
+ * The configuration file or the command line has a duplicate parameter.
+ */
+
+#define SERVICE_UIC_KILL (SERVICE_BASE + 10)
+/*
+ * The service did not respond to control and was stopped with
+ * the DosKillProc function.
+ */
+
+#define SERVICE_UIC_EXEC (SERVICE_BASE + 11)
+/*
+ * An error occurred when attempting to run the service program.
+ */
+
+#define SERVICE_UIC_SUBSERV (SERVICE_BASE + 12)
+/*
+ * The sub-service failed to start.
+ */
+
+#define SERVICE_UIC_CONFLPARM (SERVICE_BASE + 13)
+/*
+ * There is a conflict in the value or use of these options: %1.
+ */
+
+#define SERVICE_UIC_FILE (SERVICE_BASE + 14)
+/*
+ * There is a problem with the file.
+ */
+
+
+
+//
+// The modifiers
+//
+
+//
+// General:
+//
+
+#define SERVICE_UIC_M_NULL 0
+
+//
+// RESOURCE:
+//
+
+#define SERVICE_UIC_M_MEMORY (SERVICE_BASE + 20) /* memory */
+#define SERVICE_UIC_M_DISK (SERVICE_BASE + 21) /* disk space */
+#define SERVICE_UIC_M_THREADS (SERVICE_BASE + 22) /* thread */
+#define SERVICE_UIC_M_PROCESSES (SERVICE_BASE + 23) /* process */
+
+//
+// CONFIG:
+//
+
+//
+// Security failure
+//
+
+#define SERVICE_UIC_M_SECURITY (SERVICE_BASE + 24)
+/* Security Failure. %0 */
+
+#define SERVICE_UIC_M_LANROOT (SERVICE_BASE + 25)
+/*
+ * Bad or missing LAN Manager root directory.
+ */
+
+#define SERVICE_UIC_M_REDIR (SERVICE_BASE + 26)
+/*
+ * The network software is not installed.
+ */
+
+#define SERVICE_UIC_M_SERVER (SERVICE_BASE + 27)
+/*
+ * The server is not started.
+ */
+
+#define SERVICE_UIC_M_SEC_FILE_ERR (SERVICE_BASE + 28)
+/*
+ * The server cannot access the user accounts database (NET.ACC).
+ */
+
+#define SERVICE_UIC_M_FILES (SERVICE_BASE + 29)
+/*
+ * Incompatible files are installed in the LANMAN tree.
+ */
+
+#define SERVICE_UIC_M_LOGS (SERVICE_BASE + 30)
+/*
+ * The LANMAN\LOGS directory is invalid.
+ */
+
+#define SERVICE_UIC_M_LANGROUP (SERVICE_BASE + 31)
+/*
+ * The domain specified could not be used.
+ */
+
+#define SERVICE_UIC_M_MSGNAME (SERVICE_BASE + 32)
+/*
+ * The computer name is being used as a message alias on another computer.
+ */
+
+#define SERVICE_UIC_M_ANNOUNCE (SERVICE_BASE + 33)
+/*
+ * The announcement of the server name failed.
+ */
+
+#define SERVICE_UIC_M_UAS (SERVICE_BASE + 34)
+/*
+ * The user accounts database is not configured correctly.
+ */
+
+#define SERVICE_UIC_M_SERVER_SEC_ERR (SERVICE_BASE + 35)
+/*
+ * The server is not running with user-level security.
+ */
+
+#define SERVICE_UIC_M_WKSTA (SERVICE_BASE + 37)
+/*
+ * The workstation is not configured properly.
+ */
+
+#define SERVICE_UIC_M_ERRLOG (SERVICE_BASE + 38)
+/*
+ * View your error log for details.
+ */
+
+#define SERVICE_UIC_M_FILE_UW (SERVICE_BASE + 39)
+/*
+ * Unable to write to this file.
+ */
+
+#define SERVICE_UIC_M_ADDPAK (SERVICE_BASE + 40)
+/*
+ * ADDPAK file is corrupted. Delete LANMAN\NETPROG\ADDPAK.SER
+ * and reapply all ADDPAKs.
+ */
+
+#define SERVICE_UIC_M_LAZY (SERVICE_BASE + 41)
+/*
+ * The LM386 server cannot be started because CACHE.EXE is not running.
+ */
+
+#define SERVICE_UIC_M_UAS_MACHINE_ACCT (SERVICE_BASE + 42)
+/*
+ * There is no account for this computer in the security database.
+ */
+
+#define SERVICE_UIC_M_UAS_SERVERS_NMEMB (SERVICE_BASE + 43)
+/*
+ * This computer is not a member of the group SERVERS.
+ */
+
+#define SERVICE_UIC_M_UAS_SERVERS_NOGRP (SERVICE_BASE + 44)
+/*
+ * The group SERVERS is not present in the local security database.
+ */
+
+#define SERVICE_UIC_M_UAS_INVALID_ROLE (SERVICE_BASE + 45)
+/*
+ * This Windows NT computer is configured as a member of a workgroup, not as
+ * a member of a domain. The Netlogon service does not need to run in this
+ * configuration.
+ */
+
+#define SERVICE_UIC_M_NETLOGON_NO_DC (SERVICE_BASE + 46)
+/*
+ * The Windows NT domain controller for this domain could not be located.
+ */
+
+#define SERVICE_UIC_M_NETLOGON_DC_CFLCT (SERVICE_BASE + 47)
+/*
+ * A primary domain controller is already running in this domain.
+ */
+
+#define SERVICE_UIC_M_NETLOGON_AUTH (SERVICE_BASE + 48)
+/*
+ * The service failed to authenticate with the primary domain controller.
+ */
+
+#define SERVICE_UIC_M_UAS_PROLOG (SERVICE_BASE + 49)
+/*
+ * There is a problem with the security database creation date or serial number.
+ */
+
+
+#define SERVICE2_BASE 5600
+/* new SEVICE_UIC messages go here */
+
+#define SERVICE_UIC_M_NETLOGON_MPATH (SERVICE2_BASE + 0)
+/*
+ * Could not share the User or Script path.
+ */
+
+#define SERVICE_UIC_M_LSA_MACHINE_ACCT (SERVICE2_BASE + 1)
+/*
+ * The password for this computer is not found in the local security
+ * database.
+ */
+
+#define SERVICE_UIC_M_DATABASE_ERROR (SERVICE2_BASE + 2)
+/*
+ * An internal error occurred while accessing the computer's
+ * local or network security database.
+ */
+
+
+//
+// End modifiers
+//
+
+//
+// Commonly used Macros:
+//
+
+#define SERVICE_IP_CODE(tt,nn) \
+ ((long)SERVICE_IP_QUERY_HINT|(long)(nn|(tt<<SERVICE_IP_WAITTIME_SHIFT)))
+
+#define SERVICE_CCP_CODE(tt,nn) \
+ ((long)SERVICE_CCP_QUERY_HINT|(long)(nn|(tt<<SERVICE_IP_WAITTIME_SHIFT)))
+
+#define SERVICE_UIC_CODE(cc,mm) \
+ ((long)(((long)cc<<16)|(long)(unsigned short)mm))
+
+//
+// This macro takes a wait hint (tt) which can have a maximum value of
+// 0xFFFF and puts it into the service status code field.
+// 0x0FF1FFnn (where nn is the checkpoint information).
+//
+#define SERVICE_NT_CCP_CODE(tt,nn) \
+ ( \
+ ((long)SERVICE_CCP_QUERY_HINT) | \
+ ((long)(nn)) | \
+ (((tt)&LOWER_HINT_MASK) << SERVICE_IP_WAITTIME_SHIFT) | \
+ (((tt)&UPPER_HINT_MASK) << SERVICE_NTIP_WAITTIME_SHIFT) \
+ )
+
+//
+// This macro takes a status code field, and strips out the wait hint
+// from the upper and lower sections.
+// 0x0FF1FFnn results in 0x0000FFFF.
+//
+#define SERVICE_NT_WAIT_GET(code) \
+ ( \
+ (((code) & UPPER_GET_HINT_MASK) >> SERVICE_NTIP_WAITTIME_SHIFT) | \
+ (((code) & LOWER_GET_HINT_MASK) >> SERVICE_IP_WAITTIME_SHIFT) \
+ )
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMSVC_
diff --git a/public/sdk/inc/lmuse.h b/public/sdk/inc/lmuse.h
new file mode 100644
index 000000000..974070ac8
--- /dev/null
+++ b/public/sdk/inc/lmuse.h
@@ -0,0 +1,164 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmuse.c
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the NetUse API.
+
+
+Environment:
+
+ User Mode - Win32
+ Portable to any flat, 32-bit environment. (Uses Win32 typedefs.)
+ Requires ANSI C extensions: slash-slash comments, long external names.
+
+Notes:
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+
+--*/
+
+#ifndef _LMUSE_
+#define _LMUSE_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <lmuseflg.h> // Deletion force level flags
+
+//
+// Function Prototypes
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetUseAdd (
+ IN LPTSTR UncServerName OPTIONAL,
+ IN DWORD Level,
+ IN LPBYTE Buf,
+ OUT LPDWORD ParmError OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUseDel (
+ IN LPTSTR UncServerName OPTIONAL,
+ IN LPTSTR UseName,
+ IN DWORD ForceCond
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUseEnum (
+ IN LPTSTR UncServerName OPTIONAL,
+ IN DWORD Level,
+ OUT LPBYTE *BufPtr,
+ IN DWORD PreferedMaximumSize,
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD TotalEntries,
+ IN OUT LPDWORD ResumeHandle
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetUseGetInfo (
+ IN LPTSTR UncServerName OPTIONAL,
+ IN LPTSTR UseName,
+ IN DWORD Level,
+ OUT LPBYTE *BufPtr
+ );
+
+//
+// Data Structures
+//
+
+typedef struct _USE_INFO_0 {
+ LPTSTR ui0_local;
+ LPTSTR ui0_remote;
+}USE_INFO_0, *PUSE_INFO_0, *LPUSE_INFO_0;
+
+typedef struct _USE_INFO_1 {
+ LPTSTR ui1_local;
+ LPTSTR ui1_remote;
+ LPTSTR ui1_password;
+ DWORD ui1_status;
+ DWORD ui1_asg_type;
+ DWORD ui1_refcount;
+ DWORD ui1_usecount;
+}USE_INFO_1, *PUSE_INFO_1, *LPUSE_INFO_1;
+
+typedef struct _USE_INFO_2 {
+ LPTSTR ui2_local;
+ LPTSTR ui2_remote;
+ LPTSTR ui2_password;
+ DWORD ui2_status;
+ DWORD ui2_asg_type;
+ DWORD ui2_refcount;
+ DWORD ui2_usecount;
+ LPTSTR ui2_username;
+ LPTSTR ui2_domainname;
+}USE_INFO_2, *PUSE_INFO_2, *LPUSE_INFO_2;
+
+typedef struct _USE_INFO_3 {
+ USE_INFO_2 ui3_ui2;
+ ULONG ui3_flags;
+} USE_INFO_3, *PUSE_INFO_3, *LPUSE_INFO_3;
+
+
+//
+// Special Values and Constants
+//
+
+//
+// One of these values indicates the parameter within an information
+// structure that is invalid when ERROR_INVALID_PARAMETER is returned by
+// NetUseAdd.
+//
+
+#define USE_LOCAL_PARMNUM 1
+#define USE_REMOTE_PARMNUM 2
+#define USE_PASSWORD_PARMNUM 3
+#define USE_ASGTYPE_PARMNUM 4
+#define USE_USERNAME_PARMNUM 5
+#define USE_DOMAINNAME_PARMNUM 6
+
+//
+// Values appearing in the ui1_status field of use_info_1 structure.
+// Note that USE_SESSLOST and USE_DISCONN are synonyms.
+//
+
+#define USE_OK 0
+#define USE_PAUSED 1
+#define USE_SESSLOST 2
+#define USE_DISCONN 2
+#define USE_NETERR 3
+#define USE_CONN 4
+#define USE_RECONN 5
+
+
+//
+// Values of the ui1_asg_type field of use_info_1 structure
+//
+
+#define USE_WILDCARD ( (DWORD) (-1) )
+#define USE_DISKDEV 0
+#define USE_SPOOLDEV 1
+#define USE_CHARDEV 2
+#define USE_IPC 3
+
+//
+// Flags defined in the use_info_3 structure
+//
+
+#define CREATE_NO_CONNECT 0x1 // creation flags
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMUSE_
diff --git a/public/sdk/inc/lmuseflg.h b/public/sdk/inc/lmuseflg.h
new file mode 100644
index 000000000..4fee7688e
--- /dev/null
+++ b/public/sdk/inc/lmuseflg.h
@@ -0,0 +1,38 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmuseflg.h
+
+Abstract:
+
+ This file contains deletion force levels for deleting a connection.
+
+Environment:
+
+ User Mode - Win32
+
+Notes:
+
+ This file has no dependencies. It is included by lmwksta.h and
+ lmuse.h.
+
+Revision History:
+
+--*/
+
+#ifndef _LMUSEFLG_
+#define _LMUSEFLG_
+
+//
+// Definition for NetWkstaTransportDel and NetUseDel deletion force levels
+//
+
+#define USE_NOFORCE 0
+#define USE_FORCE 1
+#define USE_LOTS_OF_FORCE 2
+
+
+#endif // _LMUSEFLG_
diff --git a/public/sdk/inc/lmwksta.h b/public/sdk/inc/lmwksta.h
new file mode 100644
index 000000000..1bc866a24
--- /dev/null
+++ b/public/sdk/inc/lmwksta.h
@@ -0,0 +1,539 @@
+/*++ BUILD Version: 0006 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ lmwksta.h
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the NetWorkstation and NetWkstaTransport API.
+
+Environment:
+
+ User Mode - Win32
+ Portable to any flat, 32-bit environment. (Uses Win32 typedefs.)
+ Requires ANSI C extensions: slash-slash comments, long external names.
+
+Notes:
+
+ You must include NETCONS.H before this file, since this file depends
+ on values defined in NETCONS.H.
+
+--*/
+
+#ifndef _LMWKSTA_
+#define _LMWKSTA_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <lmuseflg.h> // Deletion force level flags
+
+//
+// Function Prototypes
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetWkstaGetInfo (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetWkstaSetInfo (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD level,
+ IN LPBYTE buffer,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetWkstaUserGetInfo (
+ IN LPTSTR reserved,
+ IN DWORD level,
+ OUT LPBYTE *bufptr
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetWkstaUserSetInfo (
+ IN LPTSTR reserved,
+ IN DWORD level,
+ OUT LPBYTE buf,
+ OUT LPDWORD parm_err OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetWkstaUserEnum (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resumehandle OPTIONAL
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetWkstaTransportAdd (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD level,
+ IN LPBYTE buf,
+ OUT LPDWORD parm_err
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetWkstaTransportDel (
+ IN LPTSTR servername OPTIONAL,
+ IN LPTSTR transportname,
+ IN DWORD ucond
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetWkstaTransportEnum (
+ IN LPTSTR servername OPTIONAL,
+ IN DWORD level,
+ OUT LPBYTE *bufptr,
+ IN DWORD prefmaxlen,
+ OUT LPDWORD entriesread,
+ OUT LPDWORD totalentries,
+ IN OUT LPDWORD resumehandle OPTIONAL
+ );
+
+//
+// Data Structures
+//
+
+//
+// NetWkstaGetInfo and NetWkstaSetInfo
+//
+
+//
+// NetWkstaGetInfo only. System information - guest access
+//
+typedef struct _WKSTA_INFO_100 {
+ DWORD wki100_platform_id;
+ LPTSTR wki100_computername;
+ LPTSTR wki100_langroup;
+ DWORD wki100_ver_major;
+ DWORD wki100_ver_minor;
+}WKSTA_INFO_100, *PWKSTA_INFO_100, *LPWKSTA_INFO_100;
+
+//
+// NetWkstaGetInfo only. System information - user access
+//
+typedef struct _WKSTA_INFO_101 {
+ DWORD wki101_platform_id;
+ LPTSTR wki101_computername;
+ LPTSTR wki101_langroup;
+ DWORD wki101_ver_major;
+ DWORD wki101_ver_minor;
+ LPTSTR wki101_lanroot;
+}WKSTA_INFO_101, *PWKSTA_INFO_101, *LPWKSTA_INFO_101;
+
+//
+// NetWkstaGetInfo only. System information - admin or operator access
+//
+typedef struct _WKSTA_INFO_102 {
+ DWORD wki102_platform_id;
+ LPTSTR wki102_computername;
+ LPTSTR wki102_langroup;
+ DWORD wki102_ver_major;
+ DWORD wki102_ver_minor;
+ LPTSTR wki102_lanroot;
+ DWORD wki102_logged_on_users;
+}WKSTA_INFO_102, *PWKSTA_INFO_102, *LPWKSTA_INFO_102;
+
+//
+// Down-level NetWkstaGetInfo and NetWkstaSetInfo.
+//
+// DOS specific workstation information -
+// admin or domain operator access
+//
+typedef struct _WKSTA_INFO_302{
+ DWORD wki302_char_wait;
+ DWORD wki302_collection_time;
+ DWORD wki302_maximum_collection_count;
+ DWORD wki302_keep_conn;
+ DWORD wki302_keep_search;
+ DWORD wki302_max_cmds;
+ DWORD wki302_num_work_buf;
+ DWORD wki302_siz_work_buf;
+ DWORD wki302_max_wrk_cache;
+ DWORD wki302_sess_timeout;
+ DWORD wki302_siz_error;
+ DWORD wki302_num_alerts;
+ DWORD wki302_num_services;
+ DWORD wki302_errlog_sz;
+ DWORD wki302_print_buf_time;
+ DWORD wki302_num_char_buf;
+ DWORD wki302_siz_char_buf;
+ LPTSTR wki302_wrk_heuristics;
+ DWORD wki302_mailslots;
+ DWORD wki302_num_dgram_buf;
+}WKSTA_INFO_302, *PWKSTA_INFO_302, *LPWKSTA_INFO_302;
+
+//
+// Down-level NetWkstaGetInfo and NetWkstaSetInfo
+//
+// OS/2 specific workstation information -
+// admin or domain operator access
+//
+typedef struct _WKSTA_INFO_402{
+ DWORD wki402_char_wait;
+ DWORD wki402_collection_time;
+ DWORD wki402_maximum_collection_count;
+ DWORD wki402_keep_conn;
+ DWORD wki402_keep_search;
+ DWORD wki402_max_cmds;
+ DWORD wki402_num_work_buf;
+ DWORD wki402_siz_work_buf;
+ DWORD wki402_max_wrk_cache;
+ DWORD wki402_sess_timeout;
+ DWORD wki402_siz_error;
+ DWORD wki402_num_alerts;
+ DWORD wki402_num_services;
+ DWORD wki402_errlog_sz;
+ DWORD wki402_print_buf_time;
+ DWORD wki402_num_char_buf;
+ DWORD wki402_siz_char_buf;
+ LPTSTR wki402_wrk_heuristics;
+ DWORD wki402_mailslots;
+ DWORD wki402_num_dgram_buf;
+ DWORD wki402_max_threads;
+}WKSTA_INFO_402, *PWKSTA_INFO_402, *LPWKSTA_INFO_402;
+
+//
+// Same-level NetWkstaGetInfo and NetWkstaSetInfo.
+//
+// NT specific workstation information -
+// admin or domain operator access
+//
+typedef struct _WKSTA_INFO_502{
+ DWORD wki502_char_wait;
+ DWORD wki502_collection_time;
+ DWORD wki502_maximum_collection_count;
+ DWORD wki502_keep_conn;
+ DWORD wki502_max_cmds;
+ DWORD wki502_sess_timeout;
+ DWORD wki502_siz_char_buf;
+ DWORD wki502_max_threads;
+
+ DWORD wki502_lock_quota;
+ DWORD wki502_lock_increment;
+ DWORD wki502_lock_maximum;
+ DWORD wki502_pipe_increment;
+ DWORD wki502_pipe_maximum;
+ DWORD wki502_cache_file_timeout;
+ DWORD wki502_dormant_file_limit;
+ DWORD wki502_read_ahead_throughput;
+
+ DWORD wki502_num_mailslot_buffers;
+ DWORD wki502_num_srv_announce_buffers;
+ DWORD wki502_max_illegal_datagram_events;
+ DWORD wki502_illegal_datagram_event_reset_frequency;
+ BOOL wki502_log_election_packets;
+
+ BOOL wki502_use_opportunistic_locking;
+ BOOL wki502_use_unlock_behind;
+ BOOL wki502_use_close_behind;
+ BOOL wki502_buf_named_pipes;
+ BOOL wki502_use_lock_read_unlock;
+ BOOL wki502_utilize_nt_caching;
+ BOOL wki502_use_raw_read;
+ BOOL wki502_use_raw_write;
+ BOOL wki502_use_write_raw_data;
+ BOOL wki502_use_encryption;
+ BOOL wki502_buf_files_deny_write;
+ BOOL wki502_buf_read_only_files;
+ BOOL wki502_force_core_create_mode;
+ BOOL wki502_use_512_byte_max_transfer;
+}WKSTA_INFO_502, *PWKSTA_INFO_502, *LPWKSTA_INFO_502;
+
+
+//
+// The following info-levels are only valid for NetWkstaSetInfo
+//
+
+//
+// The following levels are supported on down-level systems (LAN Man 2.x)
+// as well as NT systems:
+//
+typedef struct _WKSTA_INFO_1010 {
+ DWORD wki1010_char_wait;
+} WKSTA_INFO_1010, *PWKSTA_INFO_1010, *LPWKSTA_INFO_1010;
+
+typedef struct _WKSTA_INFO_1011 {
+ DWORD wki1011_collection_time;
+} WKSTA_INFO_1011, *PWKSTA_INFO_1011, *LPWKSTA_INFO_1011;
+
+typedef struct _WKSTA_INFO_1012 {
+ DWORD wki1012_maximum_collection_count;
+} WKSTA_INFO_1012, *PWKSTA_INFO_1012, *LPWKSTA_INFO_1012;
+
+//
+// The following level are supported on down-level systems (LAN Man 2.x)
+// only:
+//
+typedef struct _WKSTA_INFO_1027 {
+ DWORD wki1027_errlog_sz;
+} WKSTA_INFO_1027, *PWKSTA_INFO_1027, *LPWKSTA_INFO_1027;
+
+typedef struct _WKSTA_INFO_1028 {
+ DWORD wki1028_print_buf_time;
+} WKSTA_INFO_1028, *PWKSTA_INFO_1028, *LPWKSTA_INFO_1028;
+
+typedef struct _WKSTA_INFO_1032 {
+ DWORD wki1032_wrk_heuristics;
+} WKSTA_INFO_1032, *PWKSTA_INFO_1032, *LPWKSTA_INFO_1032;
+
+//
+// The following levels are settable on NT systems, and have no
+// effect on down-level systems (i.e. LANMan 2.x) since these
+// fields cannot be set on them:
+//
+typedef struct _WKSTA_INFO_1013 {
+ DWORD wki1013_keep_conn;
+} WKSTA_INFO_1013, *PWKSTA_INFO_1013, *LPWKSTA_INFO_1013;
+
+typedef struct _WKSTA_INFO_1018 {
+ DWORD wki1018_sess_timeout;
+} WKSTA_INFO_1018, *PWKSTA_INFO_1018, *LPWKSTA_INFO_1018;
+
+typedef struct _WKSTA_INFO_1023 {
+ DWORD wki1023_siz_char_buf;
+} WKSTA_INFO_1023, *PWKSTA_INFO_1023, *LPWKSTA_INFO_1023;
+
+typedef struct _WKSTA_INFO_1033 {
+ DWORD wki1033_max_threads;
+} WKSTA_INFO_1033, *PWKSTA_INFO_1033, *LPWKSTA_INFO_1033;
+
+//
+// The following levels are only supported on NT systems:
+//
+typedef struct _WKSTA_INFO_1041 {
+ DWORD wki1041_lock_quota;
+} WKSTA_INFO_1041, *PWKSTA_INFO_1041, *LPWKSTA_INFO_1041;
+
+typedef struct _WKSTA_INFO_1042 {
+ DWORD wki1042_lock_increment;
+} WKSTA_INFO_1042, *PWKSTA_INFO_1042, *LPWKSTA_INFO_1042;
+
+typedef struct _WKSTA_INFO_1043 {
+ DWORD wki1043_lock_maximum;
+} WKSTA_INFO_1043, *PWKSTA_INFO_1043, *LPWKSTA_INFO_1043;
+
+typedef struct _WKSTA_INFO_1044 {
+ DWORD wki1044_pipe_increment;
+} WKSTA_INFO_1044, *PWKSTA_INFO_1044, *LPWKSTA_INFO_1044;
+
+typedef struct _WKSTA_INFO_1045 {
+ DWORD wki1045_pipe_maximum;
+} WKSTA_INFO_1045, *PWKSTA_INFO_1045, *LPWKSTA_INFO_1045;
+
+typedef struct _WKSTA_INFO_1046 {
+ DWORD wki1046_dormant_file_limit;
+} WKSTA_INFO_1046, *PWKSTA_INFO_1046, *LPWKSTA_INFO_1046;
+
+typedef struct _WKSTA_INFO_1047 {
+ DWORD wki1047_cache_file_timeout;
+} WKSTA_INFO_1047, *PWKSTA_INFO_1047, *LPWKSTA_INFO_1047;
+
+typedef struct _WKSTA_INFO_1048 {
+ BOOL wki1048_use_opportunistic_locking;
+} WKSTA_INFO_1048, *PWKSTA_INFO_1048, *LPWKSTA_INFO_1048;
+
+typedef struct _WKSTA_INFO_1049 {
+ BOOL wki1049_use_unlock_behind;
+} WKSTA_INFO_1049, *PWKSTA_INFO_1049, *LPWKSTA_INFO_1049;
+
+typedef struct _WKSTA_INFO_1050 {
+ BOOL wki1050_use_close_behind;
+} WKSTA_INFO_1050, *PWKSTA_INFO_1050, *LPWKSTA_INFO_1050;
+
+typedef struct _WKSTA_INFO_1051 {
+ BOOL wki1051_buf_named_pipes;
+} WKSTA_INFO_1051, *PWKSTA_INFO_1051, *LPWKSTA_INFO_1051;
+
+typedef struct _WKSTA_INFO_1052 {
+ BOOL wki1052_use_lock_read_unlock;
+} WKSTA_INFO_1052, *PWKSTA_INFO_1052, *LPWKSTA_INFO_1052;
+
+typedef struct _WKSTA_INFO_1053 {
+ BOOL wki1053_utilize_nt_caching;
+} WKSTA_INFO_1053, *PWKSTA_INFO_1053, *LPWKSTA_INFO_1053;
+
+typedef struct _WKSTA_INFO_1054 {
+ BOOL wki1054_use_raw_read;
+} WKSTA_INFO_1054, *PWKSTA_INFO_1054, *LPWKSTA_INFO_1054;
+
+typedef struct _WKSTA_INFO_1055 {
+ BOOL wki1055_use_raw_write;
+} WKSTA_INFO_1055, *PWKSTA_INFO_1055, *LPWKSTA_INFO_1055;
+
+typedef struct _WKSTA_INFO_1056 {
+ BOOL wki1056_use_write_raw_data;
+} WKSTA_INFO_1056, *PWKSTA_INFO_1056, *LPWKSTA_INFO_1056;
+
+typedef struct _WKSTA_INFO_1057 {
+ BOOL wki1057_use_encryption;
+} WKSTA_INFO_1057, *PWKSTA_INFO_1057, *LPWKSTA_INFO_1057;
+
+typedef struct _WKSTA_INFO_1058 {
+ BOOL wki1058_buf_files_deny_write;
+} WKSTA_INFO_1058, *PWKSTA_INFO_1058, *LPWKSTA_INFO_1058;
+
+typedef struct _WKSTA_INFO_1059 {
+ BOOL wki1059_buf_read_only_files;
+} WKSTA_INFO_1059, *PWKSTA_INFO_1059, *LPWKSTA_INFO_1059;
+
+typedef struct _WKSTA_INFO_1060 {
+ BOOL wki1060_force_core_create_mode;
+} WKSTA_INFO_1060, *PWKSTA_INFO_1060, *LPWKSTA_INFO_1060;
+
+typedef struct _WKSTA_INFO_1061 {
+ BOOL wki1061_use_512_byte_max_transfer;
+} WKSTA_INFO_1061, *PWKSTA_INFO_1061, *LPWKSTA_INFO_1061;
+
+typedef struct _WKSTA_INFO_1062 {
+ DWORD wki1062_read_ahead_throughput;
+} WKSTA_INFO_1062, *PWKSTA_INFO_1062, *LPWKSTA_INFO_1062;
+
+
+//
+// NetWkstaUserGetInfo (local only) and NetWkstaUserEnum -
+// no access restrictions.
+//
+typedef struct _WKSTA_USER_INFO_0 {
+ LPTSTR wkui0_username;
+}WKSTA_USER_INFO_0, *PWKSTA_USER_INFO_0, *LPWKSTA_USER_INFO_0;
+
+//
+// NetWkstaUserGetInfo (local only) and NetWkstaUserEnum -
+// no access restrictions.
+//
+typedef struct _WKSTA_USER_INFO_1 {
+ LPTSTR wkui1_username;
+ LPTSTR wkui1_logon_domain;
+ LPTSTR wkui1_oth_domains;
+ LPTSTR wkui1_logon_server;
+}WKSTA_USER_INFO_1, *PWKSTA_USER_INFO_1, *LPWKSTA_USER_INFO_1;
+
+//
+// NetWkstaUserSetInfo - local access.
+//
+typedef struct _WKSTA_USER_INFO_1101 {
+ LPTSTR wkui1101_oth_domains;
+} WKSTA_USER_INFO_1101, *PWKSTA_USER_INFO_1101,
+ *LPWKSTA_USER_INFO_1101;
+
+
+//
+// NetWkstaTransportAdd - admin access
+//
+typedef struct _WKSTA_TRANSPORT_INFO_0 {
+ DWORD wkti0_quality_of_service;
+ DWORD wkti0_number_of_vcs;
+ LPTSTR wkti0_transport_name;
+ LPTSTR wkti0_transport_address;
+ BOOL wkti0_wan_ish;
+}WKSTA_TRANSPORT_INFO_0, *PWKSTA_TRANSPORT_INFO_0,
+ *LPWKSTA_TRANSPORT_INFO_0;
+
+
+//
+// Special Values and Constants
+//
+
+//
+// Identifiers for use as NetWkstaSetInfo parmnum parameter
+//
+
+//
+// One of these values indicates the parameter within an information
+// structure that is invalid when ERROR_INVALID_PARAMETER is returned by
+// NetWkstaSetInfo.
+//
+
+#define WKSTA_PLATFORM_ID_PARMNUM 100
+#define WKSTA_COMPUTERNAME_PARMNUM 1
+#define WKSTA_LANGROUP_PARMNUM 2
+#define WKSTA_VER_MAJOR_PARMNUM 4
+#define WKSTA_VER_MINOR_PARMNUM 5
+#define WKSTA_LOGGED_ON_USERS_PARMNUM 6
+#define WKSTA_LANROOT_PARMNUM 7
+#define WKSTA_LOGON_DOMAIN_PARMNUM 8
+#define WKSTA_LOGON_SERVER_PARMNUM 9
+#define WKSTA_CHARWAIT_PARMNUM 10 // Supported by down-level.
+#define WKSTA_CHARTIME_PARMNUM 11 // Supported by down-level.
+#define WKSTA_CHARCOUNT_PARMNUM 12 // Supported by down-level.
+#define WKSTA_KEEPCONN_PARMNUM 13
+#define WKSTA_KEEPSEARCH_PARMNUM 14
+#define WKSTA_MAXCMDS_PARMNUM 15
+#define WKSTA_NUMWORKBUF_PARMNUM 16
+#define WKSTA_MAXWRKCACHE_PARMNUM 17
+#define WKSTA_SESSTIMEOUT_PARMNUM 18
+#define WKSTA_SIZERROR_PARMNUM 19
+#define WKSTA_NUMALERTS_PARMNUM 20
+#define WKSTA_NUMSERVICES_PARMNUM 21
+#define WKSTA_NUMCHARBUF_PARMNUM 22
+#define WKSTA_SIZCHARBUF_PARMNUM 23
+#define WKSTA_ERRLOGSZ_PARMNUM 27 // Supported by down-level.
+#define WKSTA_PRINTBUFTIME_PARMNUM 28 // Supported by down-level.
+#define WKSTA_SIZWORKBUF_PARMNUM 29
+#define WKSTA_MAILSLOTS_PARMNUM 30
+#define WKSTA_NUMDGRAMBUF_PARMNUM 31
+#define WKSTA_WRKHEURISTICS_PARMNUM 32 // Supported by down-level.
+#define WKSTA_MAXTHREADS_PARMNUM 33
+
+#define WKSTA_LOCKQUOTA_PARMNUM 41
+#define WKSTA_LOCKINCREMENT_PARMNUM 42
+#define WKSTA_LOCKMAXIMUM_PARMNUM 43
+#define WKSTA_PIPEINCREMENT_PARMNUM 44
+#define WKSTA_PIPEMAXIMUM_PARMNUM 45
+#define WKSTA_DORMANTFILELIMIT_PARMNUM 46
+#define WKSTA_CACHEFILETIMEOUT_PARMNUM 47
+#define WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM 48
+#define WKSTA_USEUNLOCKBEHIND_PARMNUM 49
+#define WKSTA_USECLOSEBEHIND_PARMNUM 50
+#define WKSTA_BUFFERNAMEDPIPES_PARMNUM 51
+#define WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM 52
+#define WKSTA_UTILIZENTCACHING_PARMNUM 53
+#define WKSTA_USERAWREAD_PARMNUM 54
+#define WKSTA_USERAWWRITE_PARMNUM 55
+#define WKSTA_USEWRITERAWWITHDATA_PARMNUM 56
+#define WKSTA_USEENCRYPTION_PARMNUM 57
+#define WKSTA_BUFFILESWITHDENYWRITE_PARMNUM 58
+#define WKSTA_BUFFERREADONLYFILES_PARMNUM 59
+#define WKSTA_FORCECORECREATEMODE_PARMNUM 60
+#define WKSTA_USE512BYTESMAXTRANSFER_PARMNUM 61
+#define WKSTA_READAHEADTHRUPUT_PARMNUM 62
+
+
+//
+// One of these values indicates the parameter within an information
+// structure that is invalid when ERROR_INVALID_PARAMETER is returned by
+// NetWkstaUserSetInfo.
+//
+
+#define WKSTA_OTH_DOMAINS_PARMNUM 101
+
+
+//
+// One of these values indicates the parameter within an information
+// structure that is invalid when ERROR_INVALID_PARAMETER is returned by
+// NetWkstaTransportAdd.
+//
+
+#define TRANSPORT_QUALITYOFSERVICE_PARMNUM 201
+#define TRANSPORT_NAME_PARMNUM 202
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _LMWKSTA_
diff --git a/public/sdk/inc/lnkobjid.hxx b/public/sdk/inc/lnkobjid.hxx
new file mode 100644
index 000000000..057d7cad4
--- /dev/null
+++ b/public/sdk/inc/lnkobjid.hxx
@@ -0,0 +1,79 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1991 - 1992.
+//
+// File: LnkObjId.Hxx
+//
+// Contents: Common def's for link tracking.
+//
+// Classes:
+//
+// History: 7-Jan-93 BillMo Created.
+//
+//
+//----------------------------------------------------------------------------
+
+#ifndef __LNKOBJID_HXX__
+#define __LNKOBJID_HXX__
+
+#include <wtypes.h> // for OBJECTID
+
+#define WSZ_OBJECTID L".OBJECTID"
+#define SZ_OBJECTID ".OBJECTID"
+
+#define MAX_LINEAGE_MATCHES 10
+
+#define TUNNEL_TIME 15 // a name that disappears and reappears
+ // within this time limit will have the
+ // object id moved.
+
+#define TUNNEL_MAX_DELETION_LOG_ENTRIES 200 // the number of entries added to
+ // deletion log before an incremental
+ // cleanup is performed to remove the
+ // link tracking entries.
+
+#define FO_CONTINUE_ENUM 0x00000001
+
+typedef struct tagSFindObject
+{
+ OBJECTID oid; // In.
+ USHORT cLineage; // In. Max of lineage matches to return.
+ // 0 -> lookup objectid only
+ // 1 -> return match by ObjectId + 1 lineage id match max.
+ // 2 -> return match by ObjectId + 2 lineage id matches max.
+ ULONG ulFlags; // FO_CONTINUE_ENUM clear -> query for exact id and then lineage
+ // as controlled by cLineage
+ // set -> query for lineage only
+ // starting at oid.
+} SFindObject;
+
+typedef struct tagSFindObjectOut
+{
+ USHORT cwcExact; // nz -> first path returned is exact match
+ // count of characters in exact match, not
+ // including nuls.
+ USHORT cMatches; // 1 -> one lineage match returned, 2->two etc.
+ ULONG ulNextFirstUniquifier;// value to pass in oid.Uniquifier on next call.
+ WCHAR wszPaths[MAX_PATH+1]; // contains (fExact ? 1 : 0) + cMatches paths.
+ // NOTE!! From wszPaths[0] ... end of system
+ // buffer contains paths of exact match and
+ // candidates.
+} SFindObjectOut;
+
+#define TM_ENABLE_TUNNEL 0x00000001
+
+typedef struct tagSTunnelMode
+{
+ ULONG ulFlags; // ofs_tunnel_flags =
+ // (ofs_tunnel_flags & ulMask) | ulFlags;
+ ULONG ulMask;
+} STunnelMode;
+
+typedef struct tagSTunnelModeOut
+{
+ ULONG ulFlags;
+} STunnelModeOut;
+
+#endif
+
diff --git a/public/sdk/inc/loadperf.h b/public/sdk/inc/loadperf.h
new file mode 100644
index 000000000..9fbe94473
--- /dev/null
+++ b/public/sdk/inc/loadperf.h
@@ -0,0 +1,70 @@
+/*++
+
+Copyright (C) 1995-1996 Microsoft Corporation
+
+Module Name:
+
+ loadperf.h
+
+Abstract:
+
+ Header file for the Performance Monitor counter string installation
+ and removal functions.
+
+Revision History
+
+ 16-Nov-95 Created (a-robw)
+
+--*/
+
+#ifndef _LOADPERF_H_
+#define _LOADPERF_H_
+
+// function prototypes for perf counter name string load & unload functions
+// provided in LOADPERF.DLL
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define LOADPERF_FUNCTION __declspec(dllexport) LONG __stdcall
+
+LOADPERF_FUNCTION
+LoadPerfCounterTextStringsA (
+ IN LPSTR lpAnsiCommandLine,
+ IN BOOL bQuietModeArg
+);
+
+LOADPERF_FUNCTION
+LoadPerfCounterTextStringsW (
+ IN LPWSTR lpWideCommandLine,
+ IN BOOL bQuietModeArg
+);
+
+LOADPERF_FUNCTION
+UnloadPerfCounterTextStringsW (
+ IN LPWSTR lpWideCommandLine,
+ IN BOOL bQuietModeArg
+);
+
+LOADPERF_FUNCTION
+UnloadPerfCounterTextStringsA (
+ IN LPSTR lpAnsiCommandLine,
+ IN BOOL bQuietModeArg
+);
+
+#ifdef UNICODE
+#define LoadPerfCounterTextStrings LoadPerfCounterTextStringsW
+#define UnloadPerfCounterTextStrings UnloadPerfCounterTextStringsW
+#else
+#define LoadPerfCounterTextStrings LoadPerfCounterTextStringsA
+#define UnloadPerfCounterTextStrings UnloadPerfCounterTextStringsA
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // _LOADPERF_H_
diff --git a/public/sdk/inc/lockb.h b/public/sdk/inc/lockb.h
new file mode 100644
index 000000000..25b7e9d25
--- /dev/null
+++ b/public/sdk/inc/lockb.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: lockb.h
+//
+// Contents: Replacement for lockb.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/lrpcmon.h b/public/sdk/inc/lrpcmon.h
new file mode 100644
index 000000000..a813657a0
--- /dev/null
+++ b/public/sdk/inc/lrpcmon.h
@@ -0,0 +1,19 @@
+#ifndef _LRPCMON_H
+#define _LRPCMON_H
+
+// Creates a window and registers it with LRPC. Also saves the address, size
+// of the given static buffer; address of Notification routine.
+//
+// For every LRPC message processed LRPC posts an identical message to this
+// window. The message is processed: it content is formatted into the buffer.
+// It then calls the notification routine.
+//
+STDAPI_(BOOL) StartMonitor(HINSTANCE hInst, FARPROC pNotify,
+ LPOLESTR pBuf, DWORD dwBufSize);
+
+STDAPI_(void) StopMonitor(void);
+
+#define MINBUFSIZE 32 /* Minimum buffer size passed to StartMonitor */
+
+#endif
+
diff --git a/public/sdk/inc/lzexpand.h b/public/sdk/inc/lzexpand.h
new file mode 100644
index 000000000..6dca06f4e
--- /dev/null
+++ b/public/sdk/inc/lzexpand.h
@@ -0,0 +1,127 @@
+/*
+** lzdos.h - Public interface to LZEXP?.LIB.
+*/
+
+#ifndef _LZEXPAND_
+#define _LZEXPAND_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+** Error Return Codes
+*/
+
+#define LZERROR_BADINHANDLE (-1) /* invalid input handle */
+#define LZERROR_BADOUTHANDLE (-2) /* invalid output handle */
+#define LZERROR_READ (-3) /* corrupt compressed file format */
+#define LZERROR_WRITE (-4) /* out of space for output file */
+#define LZERROR_GLOBALLOC (-5) /* insufficient memory for LZFile struct */
+#define LZERROR_GLOBLOCK (-6) /* bad global handle */
+#define LZERROR_BADVALUE (-7) /* input parameter out of acceptable range*/
+#define LZERROR_UNKNOWNALG (-8) /* compression algorithm not recognized */
+
+
+/*
+** Prototypes
+*/
+
+INT
+APIENTRY
+LZStart(
+ VOID
+ );
+
+VOID
+APIENTRY
+LZDone(
+ VOID
+ );
+
+LONG
+APIENTRY
+CopyLZFile(
+ INT,
+ INT
+ );
+
+LONG
+APIENTRY
+LZCopy(
+ INT,
+ INT
+ );
+
+INT
+APIENTRY
+LZInit(
+ INT
+ );
+
+INT
+APIENTRY
+GetExpandedNameA(
+ LPSTR,
+ LPSTR
+ );
+INT
+APIENTRY
+GetExpandedNameW(
+ LPWSTR,
+ LPWSTR
+ );
+#ifdef UNICODE
+#define GetExpandedName GetExpandedNameW
+#else
+#define GetExpandedName GetExpandedNameA
+#endif // !UNICODE
+
+INT
+APIENTRY
+LZOpenFileA(
+ LPSTR,
+ LPOFSTRUCT,
+ WORD
+ );
+INT
+APIENTRY
+LZOpenFileW(
+ LPWSTR,
+ LPOFSTRUCT,
+ WORD
+ );
+#ifdef UNICODE
+#define LZOpenFile LZOpenFileW
+#else
+#define LZOpenFile LZOpenFileA
+#endif // !UNICODE
+
+LONG
+APIENTRY
+LZSeek(
+ INT,
+ LONG,
+ INT
+ );
+
+INT
+APIENTRY
+LZRead(
+ INT,
+ LPSTR,
+ INT
+ );
+
+VOID
+APIENTRY
+LZClose(
+ INT
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // _LZEXPAND_
diff --git a/public/sdk/inc/mac386.inc b/public/sdk/inc/mac386.inc
new file mode 100644
index 000000000..982df197c
--- /dev/null
+++ b/public/sdk/inc/mac386.inc
@@ -0,0 +1,267 @@
+;++
+;
+; Copyright (c) 1989 Microsoft Corporation
+;
+; Module Name:
+;
+; mac386.inc - 386 machine specific assembler macros
+;
+; Abstract:
+;
+; This module contains 386 machine specific (assembler) macros
+; applicable to code outside the kernel. Note that
+; ACQUIRE_SPINLOCK_DIRECT assumes the PCR is handy, so it won't
+; work in user mode (with debugging turned on.)
+;
+; Author:
+;
+; Bryan Willman (bryanwi) 1 Aug 90
+;
+
+if NT_INST
+else
+
+;++
+;
+; ACQUIRE_SPINLOCK LockAddress, SpinLabel
+;
+; Macro Description:
+;
+; This macro acquires a kernel spin lock.
+;
+; N.B. This macro assumes that the current IRQL is set properly.
+; It neither raises nor lowers IRQL.
+;
+; Arguments:
+;
+; (KSPIN_LOCK) LockAddress - address of SpinLock value
+; SpinLabel - if acquire spinlock fail, the label to perform the
+; spin checking. It could be simply a "label" or
+; "short label" which means the label is within 128
+; bytes in distant.
+;
+; NoChecking - Not blank, if no debugging code should be generated.
+;--
+
+ACQUIRE_SPINLOCK macro LockAddress, SpinLabel, NoChecking
+
+.errb <LockAddress>
+.errb <SpinLabel>
+
+ifndef NT_UP
+
+;
+; Attempt to assert the lock
+;
+
+ lock bts dword ptr [LockAddress], 0 ; test and set the spinlock
+ jc SpinLabel ; spinlock owned, go SpinLabe
+
+if DBG
+ifb <NoChecking>
+ push edi ; save edi
+ mov edi,fs:PcPrcb
+ mov edi, [edi].PbCurrentThread
+ or edi, 1 ; spinlock owned
+ mov [LockAddress], edi ; remember current thread
+ pop edi ; restore edi
+endif ; NoChecking
+endif ; DBG
+endif ; NT_UP
+
+endm
+
+;++
+;
+; SPIN_ON_SPINLOCK LockAddress, AcquireLabel
+;
+; Macro Description:
+;
+; This macro spins on a kernel spin lock.
+;
+; N.B. This macro assumes that the current IRQL is set properly.
+; It neither raises nor lowers IRQL.
+;
+; Arguments:
+;
+; (KSPIN_LOCK) LockAddress - address of a SpinLock value
+;
+; SpinLabel - if the test on cleared spinlock sucess, the label
+; to assert the spin lock. It could be simply a
+; "label" or "short label" which means the label is
+; within 128 bytes in distance.
+;
+; NoChecking - Not blank, if no debugging code should be generated.
+;--
+
+SPIN_ON_SPINLOCK macro LockAddress, AcquireLabel, NoChecking, PollDebugger, NoTimeout
+local a,flag ; define a local label
+
+.errb <LockAddress>
+.errb <AcquireLabel>
+
+ifndef NT_UP
+if DBG
+
+EXTRNP Kii386SpinOnSpinLock,2
+ flag = 0
+
+ifb <NoChecking>
+ flag = flag + 1
+endif
+
+ifnb <Polldebugger>
+ flag = flag + 2
+endif
+
+ifb <NoTimeout>
+ flag = flag + 4
+endif
+ stdCall Kii386SpinOnSpinLock,<LockAddress,flag>
+ jmp AcquireLabel
+
+else ; DBG
+
+;
+; Non-Debug version
+;
+
+a: test dword ptr [LockAddress], 1 ; Was spinlock cleared?
+ jz AcquireLabel ; Yes, go get it
+ jmp short a
+
+endif ; DBG
+endif ; NT_UP
+
+endm
+
+
+;++
+;
+; TEST_SPINLOCK LockAddress, BusyLabel
+;
+; Macro Description:
+;
+; This macro tests a kernel spin lock to see if it's busy.
+; If it's not busy, ACQUIRE_SPINLOCK still needs to be called
+; to obtain the spinlock in a locked manner.
+;
+; Arguments:
+;
+; (KSPIN_LOCK) LockAddress - address of a SpinLock value
+
+
+TEST_SPINLOCK macro LockAddress, BusyLabel
+ test dword ptr [LockAddress], 1 ; spinlock clear?
+ jnz BusyLabel ; No, then busy
+endm
+
+
+
+
+;++
+;
+; RELEASE_SPINLOCK LockAddress
+;
+; Macro Description:
+;
+; This macro releases a kernel spin lock.
+;
+; N.B. This macro assumes that the current IRQL is set properly.
+; It neither raises nor lowers IRQL.
+;
+; Arguments:
+;
+; (KSPIN_LOCK) LockAddress - Supplies an address to a spin lock value
+; NoChecking - Not blank, if no debugging code should be generated.
+;--
+
+RELEASE_SPINLOCK macro LockAddress, NoChecking
+local a
+.errb <LockAddress>
+ifndef NT_UP
+if DBG
+ifb <NoChecking>
+EXTRNP _KeBugCheck,1
+
+ push edi ; save edi
+ mov edi,fs:PcPrcb
+ mov edi,[edi].PbCurrentThread
+ or edi, 1 ; assume current thread owns the lock
+ cmp edi, [LockAddress] ; Does current thread own the lock?
+ pop edi ; restore edi
+ jz short a ; if z, yes, goto a and release lock
+ stdCall _KeBugCheck,<LockAddress> ; Never return ...
+a:
+endif
+ mov dword ptr [LockAddress], 0
+else
+ mov byte ptr [LockAddress], 0
+
+endif ; DBG
+endif ; NT_UP
+endm
+
+
+endif
+if NT_INST
+
+;
+; These are the instrumentation version of the above functions.
+; internal use only
+;
+
+ACQUIRE_SPINLOCK macro LockAddress, SpinLabel, NoChecking
+EXTRNP KiInst_AcquireSpinLock,0
+ifidni <&LockAddress>, <eax>
+ stdCall KiInst_AcquireSpinLock
+else
+ push eax
+ mov eax, LockAddress
+ stdCall KiInst_AcquireSpinLock
+ pop eax
+endif
+ jc SpinLabel
+endm
+
+SPIN_ON_SPINLOCK macro LockAddress, AcquireLabel, NoChecking, PollDebugger
+EXTRNP KiInst_SpinOnSpinLock,0
+ifidni <&LockAddress>, <eax>
+ stdCall KiInst_SpinOnSpinLock
+else
+ push eax
+ mov eax, LockAddress
+ stdCall KiInst_SpinOnSpinLock
+ pop eax
+endif
+ jmp AcquireLabel
+endm
+
+TEST_SPINLOCK macro LockAddress, BusyLabel
+EXTRNP KiInst_TestSpinLock,0
+ifidni <&LockAddress>, <eax>
+ stdCall KiInst_TestSpinLock
+else
+ push eax
+ mov eax, LockAddress
+ stdCall KiInst_TestSpinLock
+ pop eax
+endif
+ jnc AcquireLabel
+endm
+
+RELEASE_SPINLOCK macro LockAddress, NoChecking
+EXTRNP KiInst_ReleaseSpinLock,0
+ifidni <&LockAddress>, <eax>
+ stdCall KiInst_ReleaseSpinLock
+else
+ push eax
+ mov eax, LockAddress
+ stdCall KiInst_ReleaseSpinLock
+ pop eax
+endif
+endm
+
+endif
+
+
diff --git a/public/sdk/inc/macfile.h b/public/sdk/inc/macfile.h
new file mode 100644
index 000000000..06edc9929
--- /dev/null
+++ b/public/sdk/inc/macfile.h
@@ -0,0 +1,911 @@
+/*
+
+Copyright (c) 1992 Microsoft Corporation
+
+Module Name:
+
+ macfile.h
+
+Abstract:
+
+ This module contains data structures, related constants and functions,
+ error retuen codes and prototypes of AfpAdminxxx APIs. This file should
+ be included by any application that will administer the MACFILE service.
+
+Author:
+
+ Narendra Gidwani (microsoft!nareng)
+
+
+Revision History:
+ 12 Jume 1992 NarenG Initial version. Split admin.h into admin.h
+ and macfile.h.
+--*/
+
+#ifndef _MACFILE_
+#define _MACFILE_
+
+// Used as RPC binding handle to server
+
+typedef ULONG AFP_SERVER_HANDLE;
+typedef ULONG *PAFP_SERVER_HANDLE;
+
+#define AFP_SERVICE_NAME TEXT("MacFile")
+
+// Error return values from AfpAdminxxx Api's
+// WARNING! If you change any any codes below, please change
+// afpmgr.h accoringly.
+
+#define AFPERR_BASE -6000
+
+#define AFPERR_InvalidVolumeName (AFPERR_BASE-1)
+#define AFPERR_InvalidId (AFPERR_BASE-2)
+#define AFPERR_InvalidParms (AFPERR_BASE-3)
+#define AFPERR_CodePage (AFPERR_BASE-4)
+#define AFPERR_InvalidServerName (AFPERR_BASE-5)
+#define AFPERR_DuplicateVolume (AFPERR_BASE-6)
+#define AFPERR_VolumeBusy (AFPERR_BASE-7)
+#define AFPERR_VolumeReadOnly (AFPERR_BASE-8)
+#define AFPERR_DirectoryNotInVolume (AFPERR_BASE-9)
+#define AFPERR_SecurityNotSupported (AFPERR_BASE-10)
+#define AFPERR_BufferSize (AFPERR_BASE-11)
+#define AFPERR_DuplicateExtension (AFPERR_BASE-12)
+#define AFPERR_UnsupportedFS (AFPERR_BASE-13)
+#define AFPERR_InvalidSessionType (AFPERR_BASE-14)
+#define AFPERR_InvalidServerState (AFPERR_BASE-15)
+#define AFPERR_NestedVolume (AFPERR_BASE-16)
+#define AFPERR_InvalidComputername (AFPERR_BASE-17)
+#define AFPERR_DuplicateTypeCreator (AFPERR_BASE-18)
+#define AFPERR_TypeCreatorNotExistant (AFPERR_BASE-19)
+#define AFPERR_CannotDeleteDefaultTC (AFPERR_BASE-20)
+#define AFPERR_CannotEditDefaultTC (AFPERR_BASE-21)
+#define AFPERR_InvalidTypeCreator (AFPERR_BASE-22)
+#define AFPERR_InvalidExtension (AFPERR_BASE-23)
+#define AFPERR_TooManyEtcMaps (AFPERR_BASE-24)
+#define AFPERR_InvalidPassword (AFPERR_BASE-25)
+#define AFPERR_VolumeNonExist (AFPERR_BASE-26)
+#define AFPERR_NoSuchUserGroup (AFPERR_BASE-27)
+#define AFPERR_NoSuchUser (AFPERR_BASE-28)
+#define AFPERR_NoSuchGroup (AFPERR_BASE-29)
+
+#define AFPERR_MIN AFPERR_NoSuchGroup
+
+// Constants related to the following data strucutures.
+
+#define AFP_SERVERNAME_LEN 31
+#define AFP_VOLNAME_LEN 27
+#define AFP_VOLPASS_LEN 8
+#define AFP_WKSTANAME_LEN 65
+#define AFP_EXTENSION_LEN 3
+#define AFP_CREATOR_LEN 4
+#define AFP_TYPE_LEN 4
+#define AFP_MESSAGE_LEN 199
+#define AFP_MAXICONSIZE 2048
+#define AFP_MAXSESSIONS 0XFFFFFFFF
+#define AFP_ETC_COMMENT_LEN 36
+
+
+// Relative paths to registry keys that contain information for the macfile
+// server.
+
+#define AFP_KEYPATH_SERVER_PARAMS \
+ TEXT("SYSTEM\\CurrentControlSet\\Services\\MacFile\\PARAMETERS")
+
+#define AFP_KEYPATH_VOLUMES \
+ TEXT("SYSTEM\\CurrentControlSet\\Services\\MacFile\\PARAMETERS\\VOLUMES")
+
+#define AFP_KEYPATH_TYPE_CREATORS \
+ TEXT("SYSTEM\\CurrentControlSet\\Services\\MacFile\\PARAMETERS\\TYPE_CREATORS")
+
+#define AFP_KEYPATH_EXTENSIONS \
+ TEXT("SYSTEM\\CurrentControlSet\\Services\\MacFile\\PARAMETERS\\EXTENSIONS")
+
+#define AFP_KEYPATH_ICONS \
+ TEXT("SYSTEM\\CurrentControlSet\\Services\\MacFile\\PARAMETERS\\ICONS")
+
+#define AFP_KEYPATH_CODEPAGE \
+ TEXT("SYSTEM\\CurrentControlSet\\Control\\Nls\\Codepage")
+
+// Value names for server parameters
+
+#define AFPREG_VALNAME_SVRNAME TEXT("ServerName")
+#define AFPREG_VALNAME_SRVOPTIONS TEXT("ServerOptions")
+#define AFPREG_VALNAME_MAXSESSIONS TEXT("MaxSessions")
+#define AFPREG_VALNAME_LOGINMSG TEXT("LoginMsg")
+#define AFPREG_VALNAME_MAXPAGEDMEM TEXT("PagedMemLimit")
+#define AFPREG_VALNAME_MAXNONPAGEDMEM TEXT("NonPagedMemLimit")
+#define AFPREG_VALNAME_TYPE TEXT("Type")
+#define AFPREG_VALNAME_CREATOR TEXT("Creator")
+#define AFPREG_VALNAME_COMMENT TEXT("Comment")
+#define AFPREG_VALNAME_PASSWORD TEXT("Password")
+#define AFPREG_VALNAME_MAXUSES TEXT("MaxUses")
+#define AFPREG_VALNAME_PROPS TEXT("Properties")
+#define AFPREG_VALNAME_PATH TEXT("Path")
+#define AFPREG_VALNAME_ID TEXT("Id")
+#define AFPREG_VALNAME_ICONTYPE TEXT("IconType")
+#define AFPREG_VALNAME_DATA TEXT("Data")
+#define AFPREG_VALNAME_LENGTH TEXT("Length")
+#define AFPREG_VALNAME_CODEPAGE TEXT("MACCP")
+#define AFPREG_VALNAME_CATSEARCH TEXT("DisableCatsearch")
+
+// Limits on server parameters
+
+#define AFP_MAX_ALLOWED_SRV_SESSIONS AFP_MAXSESSIONS
+#define AFP_MIN_ALLOWED_PAGED_MEM 1000
+#define AFP_MAX_ALLOWED_PAGED_MEM 256000
+#define AFP_MIN_ALLOWED_NONPAGED_MEM 256
+#define AFP_MAX_ALLOWED_NONPAGED_MEM 16000
+
+// Server default parameter values
+
+#define AFP_DEF_SRVOPTIONS (AFP_SRVROPT_GUESTLOGONALLOWED)
+#define AFP_DEF_MAXSESSIONS AFP_MAXSESSIONS
+#define AFP_DEF_TYPE TEXT("TEXT")
+#define AFP_DEF_CREATOR TEXT("LMAN")
+#define AFP_DEF_EXTENSION_W L"*"
+#define AFP_DEF_EXTENSION_A "*"
+#define AFP_DEF_TCID 0
+#define AFP_DEF_MAXPAGEDMEM 20000
+#define AFP_DEF_MAXNONPAGEDMEM 4000
+#define AFP_DEF_CODEPAGE_PATH TEXT("C:\\NT\\SYSTEM32\\C_10000.NLS")
+
+// Will be concatenated to the system path to form source path of volume icon
+#define AFP_DEF_VOLICON_SRCNAME TEXT("\\SFMICON.VOL")
+
+// Server options
+
+#define AFP_SRVROPT_NONE 0x0000
+#define AFP_SRVROPT_GUESTLOGONALLOWED 0x0001
+#define AFP_SRVROPT_CLEARTEXTLOGONALLOWED 0x0002
+#define AFP_SRVROPT_ALLOWSAVEDPASSWORD 0x0004
+#define AFP_SRVROPT_STANDALONE 0x0008
+#define AFP_SRVROPT_4GB_VOLUMES 0x0010
+#define AFP_SRVROPT_ALL ( AFP_SRVROPT_GUESTLOGONALLOWED \
+ | AFP_SRVROPT_CLEARTEXTLOGONALLOWED \
+ | AFP_SRVROPT_ALLOWSAVEDPASSWORD \
+ | AFP_SRVROPT_4GB_VOLUMES \
+ | AFP_SRVROPT_STANDALONE )
+
+// AFP Service default parameters
+
+
+#define AFP_SERVER_PARMNUM_LOGINMSG 0x00000001
+#define AFP_SERVER_PARMNUM_MAX_SESSIONS 0x00000002
+#define AFP_SERVER_PARMNUM_OPTIONS 0x00000004
+#define AFP_SERVER_PARMNUM_NAME 0x00000008
+#define AFP_SERVER_PARMNUM_PAGEMEMLIM 0x00000010
+#define AFP_SERVER_PARMNUM_NONPAGEMEMLIM 0x00000020
+#define AFP_SERVER_PARMNUM_CODEPAGE 0x00000040
+#define AFP_SERVER_PARMNUM_ALL ( AFP_SERVER_PARMNUM_LOGINMSG \
+ | AFP_SERVER_PARMNUM_MAX_SESSIONS \
+ | AFP_SERVER_PARMNUM_OPTIONS \
+ | AFP_SERVER_PARMNUM_NAME \
+ | AFP_SERVER_PARMNUM_PAGEMEMLIM \
+ | AFP_SERVER_PARMNUM_NONPAGEMEMLIM \
+ | AFP_SERVER_PARMNUM_CODEPAGE)
+
+typedef struct _AFP_SERVER_INFO
+{
+ LPWSTR afpsrv_name; // Macintosh name of the server
+ // max. AFP_SERVERNAME_LEN.
+ DWORD afpsrv_max_sessions; // Maximum simultaneous sessions
+ // In the range 1 - AFP_MAXSESSIONS.
+ // 0 is invalid
+ DWORD afpsrv_options; // Server Options
+ DWORD afpsrv_max_paged_mem; // Cap on paged memory usage
+ DWORD afpsrv_max_nonpaged_mem;// Cap on paged memory usage
+ LPWSTR afpsrv_login_msg; // NULL terminated UNICODE string.
+ // MAX AFP_MESSAGE_LEN chars.
+ // NULL => no login msg.
+ LPWSTR afpsrv_codepage; // NULL terminated UNICODE path
+ // NULL => no codepage path.
+} AFP_SERVER_INFO, *PAFP_SERVER_INFO;
+
+// Volume properties mask values. Values may be or'ed together.
+// Volume flags with msk 0x0000001F are defined by the AFP specification.
+// Do not overload these. Most of these values (except for READONLY above)
+// are not exposed via admin apis.
+#define AFP_VOLUME_READONLY 0x00000001
+#define AFP_VOLUME_GUESTACCESS 0x00008000
+#define AFP_VOLUME_EXCLUSIVE 0x00010000
+#define AFP_VOLUME_HAS_CUSTOM_ICON 0x00020000
+#define AFP_VOLUME_4GB 0x00040000
+#define AFP_VOLUME_AGE_DFES 0x00080000
+#define AFP_VOLUME_DISALLOW_CATSRCH 0x00100000
+#define AFP_VOLUME_ALL_DOWNLEVEL (AFP_VOLUME_READONLY | \
+ AFP_VOLUME_GUESTACCESS)
+#define AFP_VOLUME_ALL (AFP_VOLUME_READONLY | \
+ AFP_VOLUME_GUESTACCESS | \
+ AFP_VOLUME_EXCLUSIVE | \
+ AFP_VOLUME_HAS_CUSTOM_ICON | \
+ AFP_VOLUME_4GB | \
+ AFP_VOLUME_DISALLOW_CATSRCH | \
+ AFP_VOLUME_AGE_DFES)
+
+#define AFP_VOLUME_UNLIMITED_USES 0xFFFFFFFF
+
+// The following bits define the fields within the AFP_VOLUME_INFO
+// structure whose values will be set.
+//
+#define AFP_VOL_PARMNUM_MAXUSES 0x00000002
+#define AFP_VOL_PARMNUM_PROPSMASK 0x00000004
+#define AFP_VOL_PARMNUM_PASSWORD 0x00000001
+#define AFP_VOL_PARMNUM_ALL ( AFP_VOL_PARMNUM_PASSWORD \
+ | AFP_VOL_PARMNUM_MAXUSES \
+ | AFP_VOL_PARMNUM_PROPSMASK )
+
+typedef struct _AFP_VOLUME_INFO
+{
+ LPWSTR afpvol_name; // Name of the volume max.
+ DWORD afpvol_id; // id of this volume. generated by sever
+ LPWSTR afpvol_password; // Volume password, max. AFP_VOLPASS_LEN
+ DWORD afpvol_max_uses; // Max opens allowed
+ DWORD afpvol_props_mask; // Mask of volume properties
+ DWORD afpvol_curr_uses; // Number of curr open connections.
+ LPWSTR afpvol_path; // The actual path
+ // Ignored for VolumeSetInfo
+} AFP_VOLUME_INFO, *PAFP_VOLUME_INFO;
+
+typedef struct _AFP_SESSION_INFO
+{
+ DWORD afpsess_id; // Id of the session
+ LPWSTR afpsess_ws_name; // Workstation Name,
+ LPWSTR afpsess_username; // User Name, max. UNLEN
+ DWORD afpsess_num_cons; // Number of open volumes
+ DWORD afpsess_num_opens; // Number of open files
+ LONG afpsess_time; // Time session established
+ DWORD afpsess_logon_type; // How the user logged on
+
+} AFP_SESSION_INFO, *PAFP_SESSION_INFO;
+
+// afpicon_type values
+
+#define ICONTYPE_SRVR 0 // Large, monochrome
+#define ICONTYPE_ICN 1 // Large. monochrome
+#define ICONTYPE_ICS 2 // Small, monochrome
+#define ICONTYPE_ICN4 3 // Large, 4 color
+#define ICONTYPE_ICN8 4 // Large, 8 color
+#define ICONTYPE_ICS4 5 // Small, 4 color
+#define ICONTYPE_ICS8 6 // Small, 8 color
+#define MAX_ICONTYPE 7
+
+// afpicon_length values
+
+#define ICONSIZE_ICN 256 // Large. monochrome
+#define ICONSIZE_ICS 64 // Small, monochrome
+#define ICONSIZE_ICN4 1024// Large, 4 color
+#define ICONSIZE_ICN8 2048// Large, 8 color
+#define ICONSIZE_ICS4 256 // Small, 4 color
+#define ICONSIZE_ICS8 512 // Small, 8 color
+
+typedef struct _AFP_ICON_INFO
+{
+ WCHAR afpicon_type[AFP_TYPE_LEN+1]; // Resource Type
+ WCHAR afpicon_creator[AFP_CREATOR_LEN+1]; // Resource Creator
+ DWORD afpicon_icontype; // Icon type
+ DWORD afpicon_length; // Length of icon block
+ PBYTE afpicon_data; // The actual icon.
+
+} AFP_ICON_INFO, *PAFP_ICON_INFO;
+
+// The AfpAdminConnectionEnum Filter values
+
+#define AFP_NO_FILTER 0
+#define AFP_FILTER_ON_VOLUME_ID 1
+#define AFP_FILTER_ON_SESSION_ID 2
+
+typedef struct _AFP_CONNECTION_INFO
+{
+ DWORD afpconn_id; // Connection Id
+ LPWSTR afpconn_username; // User who has this session open
+ // Max. UNLEN
+ LPWSTR afpconn_volumename; // Volume corresponding to this
+ // connection
+ ULONG afpconn_time; // Time since the vol was opened.(secs)
+ DWORD afpconn_num_opens; // Number of open resources
+
+} AFP_CONNECTION_INFO, *PAFP_CONNECTION_INFO;
+
+// Various File open modes
+
+#define AFP_OPEN_MODE_NONE 0x00000000
+#define AFP_OPEN_MODE_READ 0x00000001
+#define AFP_OPEN_MODE_WRITE 0x00000002
+
+// Fork type of an open file
+#define AFP_FORK_DATA 0x00000000
+#define AFP_FORK_RESOURCE 0x00000001
+
+typedef struct _AFP_FILE_INFO
+{
+ DWORD afpfile_id; // Id of the open file fork
+ DWORD afpfile_open_mode; // Mode in which file is opened
+ DWORD afpfile_num_locks; // Number of locks on the file
+ DWORD afpfile_fork_type; // Fork type
+ LPWSTR afpfile_username; // File opened by this user. max UNLEN
+ LPWSTR afpfile_path; // Absolute canonical path to the file
+
+} AFP_FILE_INFO, *PAFP_FILE_INFO;
+
+// The following bits define the permissions mask
+// NOTE: These MUST be consistent with the AFP permissions
+
+#define AFP_PERM_WORLD_SFO 0x00010000
+#define AFP_PERM_WORLD_SFI 0x00020000
+#define AFP_PERM_WORLD_MC 0x00040000
+#define AFP_PERM_WORLD_MASK 0x00070000
+#define AFP_PERM_GROUP_SFO 0x00000100
+#define AFP_PERM_GROUP_SFI 0x00000200
+#define AFP_PERM_GROUP_MC 0x00000400
+#define AFP_PERM_GROUP_MASK 0x00000700
+#define AFP_PERM_OWNER_SFO 0x00000001
+#define AFP_PERM_OWNER_SFI 0x00000002
+#define AFP_PERM_OWNER_MC 0x00000004
+#define AFP_PERM_OWNER_MASK 0x00000007
+#define AFP_PERM_INHIBIT_MOVE_DELETE 0x01000000
+#define AFP_PERM_SET_SUBDIRS 0x02000000
+
+
+// The following bits define the fields within the AFP_DIRECTORY_INFO
+// structure whose values will be set.
+//
+#define AFP_DIR_PARMNUM_PERMS 0x00000001
+#define AFP_DIR_PARMNUM_OWNER 0x00000002
+#define AFP_DIR_PARMNUM_GROUP 0x00000004
+#define AFP_DIR_PARMNUM_ALL ( AFP_DIR_PARMNUM_PERMS \
+ | AFP_DIR_PARMNUM_OWNER \
+ | AFP_DIR_PARMNUM_GROUP )
+typedef struct _AFP_DIRECTORY_INFO
+{
+ LPWSTR afpdir_path; // Absolute dir path,
+ DWORD afpdir_perms; // Directory permissions
+ LPWSTR afpdir_owner; // Directory owner, max. UNLEN
+ LPWSTR afpdir_group; // Group Association max. GNLEN
+ BOOLEAN afpdir_in_volume; // TRUE indicates that this directory
+ // is part of a volume, FALSE otherwise.
+
+} AFP_DIRECTORY_INFO, *PAFP_DIRECTORY_INFO;
+
+// The following bits define the fields within the AFP_FINDER_INFO
+// structure whos values will be set
+//
+#define AFP_FD_PARMNUM_TYPE 0x00000001
+#define AFP_FD_PARMNUM_CREATOR 0x00000002
+#define AFP_FD_PARMNUM_ALL ( AFP_FD_PARMNUM_TYPE \
+ | AFP_FD_PARMNUM_CREATOR)
+typedef struct _AFP_FINDER_INFO
+{
+ LPWSTR afpfd_path; // Absolute file/dir path
+ WCHAR afpfd_type[AFP_TYPE_LEN+1]; // Finder type
+ WCHAR afpfd_creator[AFP_CREATOR_LEN+1]; // Finder creator
+
+} AFP_FINDER_INFO, *PAFP_FINDER_INFO;
+
+typedef struct _AFP_EXTENSION {
+
+ WCHAR afpe_extension[AFP_EXTENSION_LEN+1];
+ DWORD afpe_tcid;
+
+} AFP_EXTENSION, *PAFP_EXTENSION;
+
+typedef struct _AFP_TYPE_CREATOR
+{
+ WCHAR afptc_creator[AFP_CREATOR_LEN+1]; // Resource Creator
+ WCHAR afptc_type[AFP_TYPE_LEN+1]; // Resource Type
+ WCHAR afptc_comment[AFP_ETC_COMMENT_LEN+1];
+ DWORD afptc_id;
+
+} AFP_TYPE_CREATOR, *PAFP_TYPE_CREATOR;
+
+typedef struct _AFP_MESSAGE_INFO
+{
+ DWORD afpmsg_session_id; // Session Id of the user to which
+ // the message is to be sent.
+ LPWSTR afpmsg_text; // Must be at most AFP_MESSAGE_LEN
+
+} AFP_MESSAGE_INFO, *PAFP_MESSAGE_INFO;
+
+typedef struct _AFP_ETCMAP_INFO {
+
+ DWORD afpetc_num_type_creators;
+
+#ifdef MIDL_PASS
+ [size_is(afpetc_num_type_creators)] PAFP_TYPE_CREATOR afpetc_type_creator;
+#else
+ PAFP_TYPE_CREATOR afpetc_type_creator;
+#endif
+
+ DWORD afpetc_num_extensions;
+#ifdef MIDL_PASS
+ [size_is(afpetc_num_extensions)] PAFP_EXTENSION afpetc_extension;
+#else
+ PAFP_EXTENSION afpetc_extension;
+#endif
+
+} AFP_ETCMAP_INFO, *PAFP_ETCMAP_INFO;
+
+
+/* Our version of the AFP Function codes organized by class */
+#define _AFP_INVALID_OPCODE 0x00
+#define _AFP_UNSUPPORTED_OPCODE 0x01
+
+#define _AFP_GET_SRVR_INFO 0x02 /* SERVER APIs */
+#define _AFP_GET_SRVR_PARMS 0x03
+#define _AFP_CHANGE_PASSWORD 0x04
+#define _AFP_LOGIN 0x05
+#define _AFP_LOGIN_CONT 0x06
+#define _AFP_LOGOUT 0x07
+#define _AFP_MAP_ID 0x08
+#define _AFP_MAP_NAME 0x09
+#define _AFP_GET_USER_INFO 0x0A
+#define _AFP_GET_SRVR_MSG 0x0B
+#define _AFP_GET_DOMAIN_LIST 0x0C
+
+#define _AFP_OPEN_VOL 0x0D /* VOLUME APIs */
+#define _AFP_CLOSE_VOL 0x0E
+#define _AFP_GET_VOL_PARMS 0x0F
+#define _AFP_SET_VOL_PARMS 0x10
+#define _AFP_FLUSH 0x11
+
+#define _AFP_GET_FILE_DIR_PARMS 0x12 /* FILE-DIRECTORY APIs */
+#define _AFP_SET_FILE_DIR_PARMS 0x13
+#define _AFP_DELETE 0x14
+#define _AFP_RENAME 0x15
+#define _AFP_MOVE_AND_RENAME 0x16
+
+#define _AFP_OPEN_DIR 0x17 /* DIRECTORY APIs */
+#define _AFP_CLOSE_DIR 0x18
+#define _AFP_CREATE_DIR 0x19
+#define _AFP_ENUMERATE 0x1A
+#define _AFP_SET_DIR_PARMS 0x1B
+
+#define _AFP_CREATE_FILE 0x1C /* FILE APIs */
+#define _AFP_COPY_FILE 0x1D
+#define _AFP_CREATE_ID 0x1E
+#define _AFP_DELETE_ID 0x1F
+#define _AFP_RESOLVE_ID 0x20
+#define _AFP_SET_FILE_PARMS 0x21
+#define _AFP_EXCHANGE_FILES 0x22
+
+#define _AFP_OPEN_FORK 0x23 /* FORK APIs */
+#define _AFP_CLOSE_FORK 0x24
+#define _AFP_FLUSH_FORK 0x25
+#define _AFP_READ 0x26
+#define _AFP_WRITE 0x27
+#define _AFP_BYTE_RANGE_LOCK 0x28
+#define _AFP_GET_FORK_PARMS 0x29
+#define _AFP_SET_FORK_PARMS 0x2A
+
+#define _AFP_OPEN_DT 0x2B /* DESKTOP APIs */
+#define _AFP_CLOSE_DT 0x2C
+#define _AFP_ADD_APPL 0x2D
+#define _AFP_GET_APPL 0x2E
+#define _AFP_REMOVE_APPL 0x2F
+#define _AFP_ADD_COMMENT 0x30
+#define _AFP_GET_COMMENT 0x31
+#define _AFP_REMOVE_COMMENT 0x32
+#define _AFP_ADD_ICON 0x33
+#define _AFP_GET_ICON 0x34
+#define _AFP_GET_ICON_INFO 0x35
+
+#define _AFP_CAT_SEARCH 0x36
+#define _AFP_MAX_ENTRIES 0x38 /* Keep it even */
+
+typedef struct _AFP_STATISTICS_INFO
+{
+ DWORD stat_ServerStartTime; // Server start time
+ DWORD stat_TimeStamp; // Statistics collected since
+ DWORD stat_Errors; // Unexpected Errors
+ DWORD stat_MaxSessions; // Max. sessions active simulataneously
+ DWORD stat_TotalSessions; // Total number of sessions created
+ DWORD stat_CurrentSessions; // Number of sessions active now
+ DWORD stat_NumAdminReqs; // Total number of admin requests
+ DWORD stat_NumAdminChanges; // Number of admin reqs causing change
+ // The file statistics are actually fork statistics i.e. opening both the
+ // data and the resource forks will yield a count of TWO
+ DWORD stat_MaxFilesOpened; // Max. files opened simulataneously
+ DWORD stat_TotalFilesOpened; // Total number of files opened
+ DWORD stat_CurrentFilesOpen; // Number of files open now
+ DWORD stat_CurrentFileLocks; // Current count of locks
+ DWORD stat_NumFailedLogins; // Number of unsuccessful logins
+ DWORD stat_NumForcedLogoffs; // Number of sessions kicked out
+ DWORD stat_NumMessagesSent; // Number of messages sent out
+ DWORD stat_MaxNonPagedUsage; // High-water mark of the non-paged
+ // memory usage
+ DWORD stat_CurrNonPagedUsage; // Amount of non-paged memory in use
+ DWORD stat_MaxPagedUsage; // High-water mark of the paged
+ // memory usage
+ DWORD stat_CurrPagedUsage; // Amount of paged memory in use
+} AFP_STATISTICS_INFO, *PAFP_STATISTICS_INFO;
+
+typedef struct _AFP_STATISTICS_INFO_EX
+{
+ DWORD stat_ServerStartTime; // Server start time
+ DWORD stat_TimeStamp; // Statistics collected since
+ DWORD stat_Errors; // Unexpected Errors
+
+ DWORD stat_MaxSessions; // Max. sessions active simulataneously
+ DWORD stat_TotalSessions; // Total number of sessions created
+ DWORD stat_CurrentSessions; // Number of sessions active now
+
+ DWORD stat_NumAdminReqs; // Total number of admin requests
+ DWORD stat_NumAdminChanges; // Number of admin reqs causing change
+
+ // The file statistics are actually fork statistics i.e. opening both the
+ // data and the resource forks will yield a count of TWO
+ DWORD stat_MaxFilesOpened; // Max. files opened simulataneously
+ DWORD stat_TotalFilesOpened; // Total number of files opened
+ DWORD stat_CurrentFilesOpen; // Number of files open now
+ DWORD stat_CurrentFileLocks; // Current count of locks
+
+ DWORD stat_NumFailedLogins; // Number of unsuccessful logins
+ DWORD stat_NumForcedLogoffs; // Number of sessions kicked out
+ DWORD stat_NumMessagesSent; // Number of messages sent out
+
+ DWORD stat_MaxNonPagedUsage; // High-water mark of the non-paged
+ // memory usage
+ DWORD stat_CurrNonPagedUsage; // Amount of non-paged memory in use
+ DWORD stat_MaxPagedUsage; // High-water mark of the paged
+ // memory usage
+ DWORD stat_CurrPagedUsage; // Amount of paged memory in use
+
+ // NOTE: MAKE SURE THE STRUCTURE ABOVE THIS LINE MATCHES EXACTLY THE AFP_STATISTICS_INFO
+
+ DWORD stat_PagedCount; // Number of current allocations
+ DWORD stat_NonPagedCount; // Number of current allocations
+
+ DWORD stat_EnumCacheHits; // # of times cache was hit
+ DWORD stat_EnumCacheMisses; // # of times cache was missed
+ DWORD stat_IoPoolHits; // # of times Io Pool was hit
+ DWORD stat_IoPoolMisses; // # of times Io Pool was missed
+
+ DWORD stat_MaxInternalOpens; // Max # of internal opens
+ DWORD stat_TotalInternalOpens;// Total # of internal opens
+ DWORD stat_CurrentInternalOpens;// Current # of internal opens
+
+
+ DWORD stat_CurrQueueLength; // # of requests in the queue
+ DWORD stat_MaxQueueLength; // Max # of requests in the queue
+ DWORD stat_CurrThreadCount; // # of worker threads active
+ DWORD stat_MaxThreadCount; // Max # of worker threads active
+
+ // Make sure the following is Quadword aligned for efficiency
+ LARGE_INTEGER stat_DataRead; // Amount of data read (disk)
+ LARGE_INTEGER stat_DataWritten; // Amount of data written (disk)
+ LARGE_INTEGER stat_DataReadInternal; // Amount of data read (disk)
+ LARGE_INTEGER stat_DataWrittenInternal;// Amount of data written (disk)
+ LARGE_INTEGER stat_DataOut; // Amount of data sent out (wire)
+ LARGE_INTEGER stat_DataIn; // Amount of data read in (wire)
+
+} AFP_STATISTICS_INFO_EX, *PAFP_STATISTICS_INFO_EX;
+
+typedef struct _AFP_PROFILE_INFO
+{
+ DWORD perf_ApiCounts[_AFP_MAX_ENTRIES];
+ // # of times each Api is called
+ LARGE_INTEGER perf_ApiCumTimes[_AFP_MAX_ENTRIES];
+ // Cummulative time spent in Apis
+ LARGE_INTEGER perf_ApiWorstTime[_AFP_MAX_ENTRIES];
+ // Worst time for an api
+ LARGE_INTEGER perf_ApiBestTime[_AFP_MAX_ENTRIES];
+ // Best time for an api
+ LARGE_INTEGER perf_OpenTimeRA; // Time spent in NtOpenFile for ReadAttr
+ LARGE_INTEGER perf_OpenTimeRC; // Time spent in NtOpenFile for ReadControl
+ LARGE_INTEGER perf_OpenTimeWC; // Time spent in NtOpenFile for WriteControl
+ LARGE_INTEGER perf_OpenTimeRW; // Time spent in NtOpenFile for Read/Write
+ LARGE_INTEGER perf_OpenTimeDL; // Time spent in NtOpenFile for Delete
+ LARGE_INTEGER perf_OpenTimeDR; // Time spent in NtOpenFile for Directories
+ LARGE_INTEGER perf_CreateTimeFIL; // Time spent in NtCreateFile for file/data stream
+ LARGE_INTEGER perf_CreateTimeSTR; // Time spent in NtCreateFile for file/other streams
+ LARGE_INTEGER perf_CreateTimeDIR; // Time spent in NtCreateFile for dir/data stream
+ LARGE_INTEGER perf_CloseTime; // Time spent in NtClose
+ LARGE_INTEGER perf_DeleteTime; // Time spent in NtSetInformationFile
+ LARGE_INTEGER perf_GetInfoTime; // Time spent in NtQueryInformationFile
+ LARGE_INTEGER perf_SetInfoTime; // Time spent in NtSetInformationFile
+ LARGE_INTEGER perf_GetPermsTime; // Time spent on getting permissions
+ LARGE_INTEGER perf_SetPermsTime; // Time spent on setting permissions
+ LARGE_INTEGER perf_PathMapTime; // Time spent in pathmap code
+ LARGE_INTEGER perf_ScavengerTime; // Time spent in scavenger
+ LARGE_INTEGER perf_IdIndexUpdTime; // Time spent updating idindex
+ LARGE_INTEGER perf_DesktopUpdTime; // Time spent updating desktop
+ LARGE_INTEGER perf_SwmrWaitTime; // Time spent waiting for Swmr
+ LARGE_INTEGER perf_SwmrLockTimeR; // Time swmr was locked for read
+ LARGE_INTEGER perf_SwmrLockTimeW; // Time swmr was locked for write
+ LARGE_INTEGER perf_QueueTime; // Time Apis spent in queue
+ LARGE_INTEGER perf_UnmarshallTime; // Time spent in un-marshalling a request
+ LARGE_INTEGER perf_InterReqTime; // Time elapse between subsequent requests
+ LARGE_INTEGER perf_ExAllocTimeN; // Time spent in ExAllocatePool (NonPaged)
+ LARGE_INTEGER perf_ExFreeTimeN; // Time spent in ExFreePool (NonPaged)
+ LARGE_INTEGER perf_ExAllocTimeP; // Time spent in ExAllocatePool (Paged)
+ LARGE_INTEGER perf_ExFreeTimeP; // Time spent in ExFreePool (Paged)
+ LARGE_INTEGER perf_AfpAllocTimeN; // Time spent in AfpAllocateMemory (NonPaged)
+ LARGE_INTEGER perf_AfpFreeTimeN; // Time spent in AfpFreeMemory (NonPaged)
+ LARGE_INTEGER perf_AfpAllocTimeP; // Time spent in AfpAllocateMemory (Paged)
+ LARGE_INTEGER perf_AfpFreeTimeP; // Time spent in AfpFreeMemory (Paged)
+ LARGE_INTEGER perf_BPAllocTime; // Time spent in BP Alloc
+ LARGE_INTEGER perf_BPFreeTime; // Time spent in BP Free
+ LARGE_INTEGER perf_DFEAllocTime; // Time spent in allocating a DFE
+ LARGE_INTEGER perf_DFEFreeTime; // Time spent in freeing a DFE
+ LARGE_INTEGER perf_ChangeNotifyTime; // Time spent processing change notifies
+ LARGE_INTEGER perf_ScanTreeTime; // Time spent in scanning a directory tree
+ LARGE_INTEGER perf_PerfFreq; // Perf. counter frequency
+ DWORD perf_NumFastIoSucceeded;// Fast IO success count
+ DWORD perf_NumFastIoFailed; // Fast Io failure count
+ DWORD perf_OpenCountRA; // # of times NtOpenFile called for ReadAttr
+ DWORD perf_OpenCountRC; // # of times NtOpenFile called for ReadControl
+ DWORD perf_OpenCountWC; // # of times NtOpenFile called for WriteControl
+ DWORD perf_OpenCountRW; // # of times NtOpenFile called for Read/Write
+ DWORD perf_OpenCountDL; // # of times NtOpenFile called for Delete
+ DWORD perf_OpenCountDR; // # of times NtOpenFile called for Directories
+ DWORD perf_CreateCountFIL; // # of times NtCreateFile called - file/data
+ DWORD perf_CreateCountSTR; // # of times NtCreateFile called - file/other
+ DWORD perf_CreateCountDIR; // # of times NtCreateFile called - dir/data
+ DWORD perf_CloseCount; // # of times NtClose called
+ DWORD perf_DeleteCount; // # of times NtSetInformationFile called
+ DWORD perf_GetInfoCount; // # of times NtQueryInformationFile called
+ DWORD perf_SetInfoCount; // # of times NtSetInformationFile called
+ DWORD perf_GetPermsCount; // # of times Get permissions called
+ DWORD perf_SetPermsCount; // # of times Get permissions called
+ DWORD perf_PathMapCount; // # of times PathMap was invoked
+ DWORD perf_ScavengerCount; // # of times scavenger was scheduled
+ DWORD perf_IdIndexUpdCount; // # of times idindex was updated
+ DWORD perf_DesktopUpdCount; // # of times desktop was updated
+ DWORD perf_SwmrWaitCount; // # of times swmr access was blocked
+ DWORD perf_SwmrLockCountR; // # of times swmr was locked for read
+ DWORD perf_SwmrLockCountW; // # of times swmr was locked for write
+ DWORD perf_SwmrUpgradeCount; // # of times swmr was upgraded
+ DWORD perf_SwmrDowngradeCount;// # of times swmr was downgraded
+ DWORD perf_QueueCount; // # of times worker was queued
+ DWORD perf_UnmarshallCount; // # of times api unmarshalling done
+ DWORD perf_ReqCount; // # of apis - this is essentially total of perf_ApiCounts[i]
+ DWORD perf_ExAllocCountN; // # of times in ExAllocatePool (NonPaged) called
+ DWORD perf_ExFreeCountN; // # of times in ExFreePool (NonPaged) called
+ DWORD perf_ExAllocCountP; // # of times in ExAllocatePool (Paged) called
+ DWORD perf_ExFreeCountP; // # of times in ExFreePool (Paged) called
+ DWORD perf_AfpAllocCountN; // # of times in AfpAllocateMemory (NonPaged) called
+ DWORD perf_AfpFreeCountN; // # of times in AfpFreeMemory (NonPaged) called
+ DWORD perf_AfpAllocCountP; // # of times in AfpAllocateMemory (Paged) called
+ DWORD perf_AfpFreeCountP; // # of times in AfpFreeMemory (Paged) called
+ DWORD perf_BPAllocCount; // # of times in BP Alloc called
+ DWORD perf_BPFreeCount; // # of times in BP Free called
+ DWORD perf_BPAgeCount; // # of times in BP aged out
+ DWORD perf_DFEAllocCount; // # of times in a DFE is allocated
+ DWORD perf_DFEFreeCount; // # of times in a DFE is freed
+ DWORD perf_DFEAgeCount; // # of times in DFE aged out
+ DWORD perf_ChangeNotifyCount; // # of times ChangeNotify called
+ DWORD perf_ScanTreeCount; // # of items scanned during scantree
+ DWORD perf_NumDfeLookupByName;// # of times DFE lookup by Name was called
+ DWORD perf_NumDfeLookupById; // # of times DFE lookup by Id was called
+ DWORD perf_DfeDepthTraversed; // How deep in the hash buckets did we go
+ DWORD perf_DfeCacheHits; // # of times DFE cache was hit
+ DWORD perf_DfeCacheMisses; // # of times DFE cache was missed
+ DWORD perf_MaxDfrdReqCount; // Current # of request deferred
+ DWORD perf_CurDfrdReqCount; // Max # of request deferred
+ DWORD perf_cAllocatedIrps; // Total # of Irps allocated
+ DWORD perf_cAllocatedMdls; // Total # of Mdls allocated
+} AFP_PROFILE_INFO, *PAFP_PROFILE_INFO;
+
+
+// AfpAdminXXX API prototypes
+//
+DWORD
+AfpAdminConnect(
+ IN LPWSTR lpwsServerName,
+ OUT PAFP_SERVER_HANDLE phAfpServer
+);
+
+VOID
+AfpAdminDisconnect(
+ IN AFP_SERVER_HANDLE hAfpServer
+);
+
+VOID
+AfpAdminBufferFree(
+ IN PVOID pBuffer
+);
+
+DWORD
+AfpAdminVolumeEnum(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ OUT LPBYTE * lpbBuffer,
+ IN DWORD dwPrefMaxLen,
+ OUT LPDWORD lpdwEntriesRead,
+ OUT LPDWORD lpdwTotalEntries,
+ IN LPDWORD lpdwResumeHandle
+);
+
+DWORD
+AfpAdminVolumeSetInfo (
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN LPBYTE pBuffer,
+ IN DWORD dwParmNum
+);
+
+DWORD
+AfpAdminVolumeGetInfo (
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN LPWSTR lpwsVolumeName,
+ OUT LPBYTE * lpbBuffer
+);
+
+
+DWORD
+AfpAdminVolumeDelete(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN LPWSTR lpwsVolumeName
+);
+
+DWORD
+AfpAdminVolumeAdd(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN LPBYTE pBuffer
+);
+
+DWORD
+AfpAdminInvalidVolumeEnum(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ OUT LPBYTE * lpbBuffer,
+ OUT LPDWORD lpdwEntriesRead
+);
+
+DWORD
+AfpAdminInvalidVolumeDelete(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN LPWSTR lpwsVolumeName
+);
+
+DWORD
+AfpAdminDirectoryGetInfo(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN LPWSTR lpwsPath,
+ OUT LPBYTE *ppAfpDirectoryInfo
+);
+
+DWORD
+AfpAdminDirectorySetInfo(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN LPBYTE pAfpDirectoryInfo,
+ IN DWORD dwParmNum
+);
+
+DWORD
+AfpAdminServerGetInfo(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ OUT LPBYTE *ppAfpServerInfo
+);
+
+DWORD
+AfpAdminServerSetInfo(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN LPBYTE pAfpServerInfo,
+ IN DWORD dwParmNum
+);
+
+DWORD
+AfpAdminSessionEnum(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ OUT LPBYTE * lpbBuffer,
+ IN DWORD dwPrefMaxLen,
+ OUT LPDWORD lpdwEntriesRead,
+ OUT LPDWORD lpdwTotalEntries,
+ IN LPDWORD lpdwResumeHandle
+);
+
+DWORD
+AfpAdminSessionClose(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN DWORD dwSessionId
+);
+
+DWORD
+AfpAdminConnectionEnum(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ OUT LPBYTE * lpbBuffer,
+ IN DWORD dwFilter,
+ IN DWORD dwId,
+ IN DWORD dwPrefMaxLen,
+ OUT LPDWORD lpdwEntriesRead,
+ OUT LPDWORD lpdwTotalEntries,
+ IN LPDWORD lpdwResumeHandle
+);
+
+DWORD
+AfpAdminConnectionClose(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN DWORD dwConnectionId
+);
+
+DWORD
+AfpAdminFileEnum(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ OUT LPBYTE * lpbBuffer,
+ IN DWORD dwPrefMaxLen,
+ OUT LPDWORD lpdwEntriesRead,
+ OUT LPDWORD lpdwTotalEntries,
+ IN LPDWORD lpdwResumeHandle
+);
+
+DWORD
+AfpAdminFileClose(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN DWORD dwConnectionId
+);
+
+DWORD
+AfpAdminETCMapGetInfo(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ OUT LPBYTE * ppbBuffer
+);
+
+DWORD
+AfpAdminETCMapAdd(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN PAFP_TYPE_CREATOR pAfpTypeCreator
+);
+
+DWORD
+AfpAdminETCMapDelete(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN PAFP_TYPE_CREATOR pAfpTypeCreator
+);
+
+DWORD
+AfpAdminETCMapSetInfo(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN PAFP_TYPE_CREATOR pAfpTypeCreator
+);
+
+DWORD
+AfpAdminETCMapAssociate(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN PAFP_TYPE_CREATOR pAfpTypeCreator,
+ IN PAFP_EXTENSION pAfpExtension
+);
+
+DWORD
+AfpAdminMessageSend(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN PAFP_MESSAGE_INFO pAfpMessage
+);
+
+DWORD
+AfpAdminStatisticsGet(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ OUT LPBYTE * ppbBuffer
+);
+
+DWORD
+AfpAdminStatisticsGetEx(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ OUT LPBYTE * ppbBuffer
+);
+
+DWORD
+AfpAdminStatisticsClear(
+ IN AFP_SERVER_HANDLE hAfpServer
+);
+
+DWORD
+AfpAdminProfileGet(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ OUT LPBYTE * ppbBuffer
+);
+
+DWORD
+AfpAdminProfileClear(
+ IN AFP_SERVER_HANDLE hAfpServer
+);
+
+DWORD
+AfpAdminFinderSetInfo(
+ IN AFP_SERVER_HANDLE hAfpServer,
+ IN LPWSTR pType,
+ IN LPWSTR pCreator,
+ IN LPWSTR pData,
+ IN LPWSTR pResource,
+ IN LPWSTR pTarget,
+ IN DWORD dwParmNum
+);
+
+#endif // _MACFILE_
+
diff --git a/public/sdk/inc/makefil1 b/public/sdk/inc/makefil1
new file mode 100644
index 000000000..f2b08c940
--- /dev/null
+++ b/public/sdk/inc/makefil1
@@ -0,0 +1,62 @@
+#
+# This is the MIDL compile phase of the build process.
+#
+# The following symbols should be defined in your environment:
+# BASEDIR - Used to indicate where the start of the nt tree is.
+# ie. this could be set to d:\nt or c:\ntrel
+#
+
+# The following is where you put the name of your .idl file without
+# the .idl extension:
+
+IDL_NAME = ntrpc
+IMPORT = ntimp
+
+#
+#
+
+!IFNDEF BASEDIR
+BASEDIR=\nt
+!ENDIF
+
+SDKBIN = $(BASEDIR)\public\sdk\bin
+SDKINC = $(BASEDIR)\public\sdk\inc
+SDKCRTINC = $(BASEDIR)\public\sdk\inc\crt
+PRIVATEINC = $(BASEDIR)\private\inc
+FLAGS = -Di386
+INCS = -I$(SDKINC) -I$(SDKCRTINC) -I$(PRIVATEINC)
+
+!IF "$(NTVERSION)" == ""
+TARGETS = .\$(IDL_NAME).h
+
+!ENDIF
+
+#
+# Define Products and Dependencies
+#
+
+all: $(TARGETS) $(EXTRN_DEPENDS)
+!IF "$(BUILDMSG)" != ""
+ @ech ; $(BUILDMSG) ;
+!ENDIF
+
+clean: delete_source all
+
+delete_source:
+ erase $(TARGETS)
+
+#
+# MIDL COMPILE
+#
+
+!IF "$(NTVERSION)" == ""
+
+$(TARGETS) : $(IDL_NAME).idl $(EXTRN_DEPENDS)
+ $(SDKBIN)\midl $(FLAGS) $(IDL_NAME).idl $(INCS)
+ IF EXIST $(IDL_NAME)_x.c del $(IDL_NAME)_x.c
+ IF EXIST $(IDL_NAME)_c.c del $(IDL_NAME)_c.c
+ IF EXIST $(IDL_NAME)_y.c del $(IDL_NAME)_y.c
+ IF EXIST $(IDL_NAME)_s.c del $(IDL_NAME)_s.c
+
+!ENDIF
+
diff --git a/public/sdk/inc/mapi.h b/public/sdk/inc/mapi.h
new file mode 100644
index 000000000..18b855400
--- /dev/null
+++ b/public/sdk/inc/mapi.h
@@ -0,0 +1,359 @@
+/*
+ * M A P I . H
+ *
+ * Messaging Applications Programming Interface.
+ *
+ * Copyright 1993-1995 Microsoft Corporation. All Rights Reserved.
+ *
+ * Purpose:
+ *
+ * This file defines the structures and constants used by that
+ * subset of the Messaging Applications Programming Interface
+ * which is supported under Windows by Microsoft Mail for PC
+ * Networks version 3.x.
+ */
+
+
+#ifndef MAPI_H
+#define MAPI_H
+
+
+/*
+ * Types.
+ */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef EXPORT
+#ifdef WIN16
+#define EXPORT __export
+#else
+/* Additional special definitions here */
+#define EXPORT
+#endif
+#endif
+
+typedef unsigned long FAR * LPULONG;
+typedef unsigned long FLAGS;
+
+#ifndef __LHANDLE
+#define __LHANDLE
+typedef unsigned long LHANDLE, FAR * LPLHANDLE;
+#endif
+
+typedef unsigned char FAR * LPBYTE;
+
+#define lhSessionNull ((LHANDLE)0)
+
+typedef struct
+{
+ ULONG ulReserved; /* Reserved for future use (must be 0) */
+ ULONG flFlags; /* Flags */
+ ULONG nPosition; /* character in text to be replaced by attachment */
+ LPSTR lpszPathName; /* Full path name of attachment file */
+ LPSTR lpszFileName; /* Original file name (optional) */
+ LPVOID lpFileType; /* Attachment file type (can be lpMapiFileTagExt) */
+} MapiFileDesc, FAR * lpMapiFileDesc;
+
+#define MAPI_OLE 0x00000001
+#define MAPI_OLE_STATIC 0x00000002
+
+
+typedef struct
+{
+ ULONG ulReserved; /* Reserved, must be zero. */
+ ULONG cbTag; /* Size (in bytes) of */
+ LPBYTE lpTag; /* X.400 OID for this attachment type */
+ ULONG cbEncoding; /* Size (in bytes) of */
+ LPBYTE lpEncoding; /* X.400 OID for this attachment's encoding */
+} MapiFileTagExt, FAR *lpMapiFileTagExt;
+
+
+typedef struct
+{
+ ULONG ulReserved; /* Reserved for future use */
+ ULONG ulRecipClass; /* Recipient class */
+ /* MAPI_TO, MAPI_CC, MAPI_BCC, MAPI_ORIG */
+ LPSTR lpszName; /* Recipient name */
+ LPSTR lpszAddress; /* Recipient address (optional) */
+ ULONG ulEIDSize; /* Count in bytes of size of pEntryID */
+ LPVOID lpEntryID; /* System-specific recipient reference */
+} MapiRecipDesc, FAR * lpMapiRecipDesc;
+
+#ifndef MAPI_ORIG /* also defined in mapix.h */
+#define MAPI_ORIG 0 /* Recipient is message originator */
+#define MAPI_TO 1 /* Recipient is a primary recipient */
+#define MAPI_CC 2 /* Recipient is a copy recipient */
+#define MAPI_BCC 3 /* Recipient is blind copy recipient */
+#endif
+
+typedef struct
+{
+ ULONG ulReserved; /* Reserved for future use (M.B. 0) */
+ LPSTR lpszSubject; /* Message Subject */
+ LPSTR lpszNoteText; /* Message Text */
+ LPSTR lpszMessageType; /* Message Class */
+ LPSTR lpszDateReceived; /* in YYYY/MM/DD HH:MM format */
+ LPSTR lpszConversationID; /* conversation thread ID */
+ FLAGS flFlags; /* unread,return receipt */
+ lpMapiRecipDesc lpOriginator; /* Originator descriptor */
+ ULONG nRecipCount; /* Number of recipients */
+ lpMapiRecipDesc lpRecips; /* Recipient descriptors */
+ ULONG nFileCount; /* # of file attachments */
+ lpMapiFileDesc lpFiles; /* Attachment descriptors */
+} MapiMessage, FAR * lpMapiMessage;
+
+#define MAPI_UNREAD 0x00000001
+#define MAPI_RECEIPT_REQUESTED 0x00000002
+#define MAPI_SENT 0x00000004
+
+
+/*
+ * Entry points.
+ */
+
+/*
+ * flFlags values for Simple MAPI entry points. All documented flags are
+ * shown for each call. Duplicates are commented out but remain present
+ * for every call.
+ */
+
+/* MAPILogon() flags. */
+
+#define MAPI_LOGON_UI 0x00000001 /* Display logon UI */
+#ifndef MAPI_PASSWORD_UI
+#define MAPI_PASSWORD_UI 0x00020000 /* prompt for password only */
+#endif
+#define MAPI_NEW_SESSION 0x00000002 /* Don't use shared session */
+#define MAPI_FORCE_DOWNLOAD 0x00001000 /* Get new mail before return */
+#define MAPI_EXTENDED 0x00000020 /* Extended MAPI Logon */
+
+/* MAPISendMail() flags. */
+
+/* #define MAPI_LOGON_UI 0x00000001 Display logon UI */
+/* #define MAPI_NEW_SESSION 0x00000002 Don't use shared session */
+
+#ifndef MAPI_DIALOG /* also defined in property.h */
+#define MAPI_DIALOG 0x00000008 /* Display a send note UI */
+#endif
+/*# define MAPI_USE_DEFAULT 0x00000040 Use default profile in logon */
+
+/* MAPIFindNext() flags. */
+
+#define MAPI_UNREAD_ONLY 0x00000020 /* Only unread messages */
+#define MAPI_GUARANTEE_FIFO 0x00000100 /* use date order */
+#define MAPI_LONG_MSGID 0x00004000 /* allow 512 char returned ID */
+
+/* MAPIReadMail() flags. */
+
+#define MAPI_PEEK 0x00000080 /* Do not mark as read. */
+#define MAPI_SUPPRESS_ATTACH 0x00000800 /* header + body, no files */
+#define MAPI_ENVELOPE_ONLY 0x00000040 /* Only header information */
+#define MAPI_BODY_AS_FILE 0x00000200
+
+/* MAPISaveMail() flags. */
+
+/* #define MAPI_LOGON_UI 0x00000001 Display logon UI */
+/* #define MAPI_NEW_SESSION 0x00000002 Don't use shared session */
+/* #define MAPI_LONG_MSGID 0x00004000 /* allow 512 char returned ID */
+
+/* MAPIAddress() flags. */
+
+/* #define MAPI_LOGON_UI 0x00000001 Display logon UI */
+/* #define MAPI_NEW_SESSION 0x00000002 Don't use shared session */
+
+/* MAPIDetails() flags. */
+
+/* #define MAPI_LOGON_UI 0x00000001 Display logon UI */
+/* #define MAPI_NEW_SESSION 0x00000002 Don't use shared session */
+#define MAPI_AB_NOMODIFY 0x00000400 /* Don't allow mods of AB entries */
+
+/* MAPIResolveName() flags. */
+
+/* #define MAPI_LOGON_UI 0x00000001 Display logon UI */
+/* #define MAPI_NEW_SESSION 0x00000002 Don't use shared session */
+/* #define MAPI_DIALOG 0x00000008 Prompt for choices if ambiguous */
+/* #define MAPI_AB_NOMODIFY 0x00000400 Don't allow mods of AB entries */
+
+typedef ULONG (FAR PASCAL MAPILOGON)(
+ ULONG ulUIParam,
+ LPSTR lpszProfileName,
+ LPSTR lpszPassword,
+ FLAGS flFlags,
+ ULONG ulReserved,
+ LPLHANDLE lplhSession
+);
+typedef MAPILOGON FAR *LPMAPILOGON;
+MAPILOGON MAPILogon;
+
+typedef ULONG (FAR PASCAL MAPILOGOFF)(
+ LHANDLE lhSession,
+ ULONG ulUIParam,
+ FLAGS flFlags,
+ ULONG ulReserved
+);
+typedef MAPILOGOFF FAR *LPMAPILOGOFF;
+MAPILOGOFF MAPILogoff;
+
+
+typedef ULONG (FAR PASCAL MAPISENDMAIL)(
+ LHANDLE lhSession,
+ ULONG ulUIParam,
+ lpMapiMessage lpMessage,
+ FLAGS flFlags,
+ ULONG ulReserved
+);
+typedef MAPISENDMAIL FAR *LPMAPISENDMAIL;
+MAPISENDMAIL MAPISendMail;
+
+
+typedef ULONG (FAR PASCAL MAPISENDDOCUMENTS)(
+ ULONG ulUIParam,
+ LPSTR lpszDelimChar,
+ LPSTR lpszFilePaths,
+ LPSTR lpszFileNames,
+ ULONG ulReserved
+);
+typedef MAPISENDDOCUMENTS FAR *LPMAPISENDDOCUMENTS;
+MAPISENDDOCUMENTS MAPISendDocuments;
+
+
+typedef ULONG (FAR PASCAL MAPIFINDNEXT)(
+ LHANDLE lhSession,
+ ULONG ulUIParam,
+ LPSTR lpszMessageType,
+ LPSTR lpszSeedMessageID,
+ FLAGS flFlags,
+ ULONG ulReserved,
+ LPSTR lpszMessageID
+);
+typedef MAPIFINDNEXT FAR *LPMAPIFINDNEXT;
+MAPIFINDNEXT MAPIFindNext;
+
+typedef ULONG (FAR PASCAL MAPIREADMAIL)(
+ LHANDLE lhSession,
+ ULONG ulUIParam,
+ LPSTR lpszMessageID,
+ FLAGS flFlags,
+ ULONG ulReserved,
+ lpMapiMessage FAR *lppMessage
+);
+typedef MAPIREADMAIL FAR *LPMAPIREADMAIL;
+MAPIREADMAIL MAPIReadMail;
+
+typedef ULONG (FAR PASCAL MAPISAVEMAIL)(
+ LHANDLE lhSession,
+ ULONG ulUIParam,
+ lpMapiMessage lpMessage,
+ FLAGS flFlags,
+ ULONG ulReserved,
+ LPSTR lpszMessageID
+);
+typedef MAPISAVEMAIL FAR *LPMAPISAVEMAIL;
+MAPISAVEMAIL MAPISaveMail;
+
+typedef ULONG (FAR PASCAL MAPIDELETEMAIL)(
+ LHANDLE lhSession,
+ ULONG ulUIParam,
+ LPSTR lpszMessageID,
+ FLAGS flFlags,
+ ULONG ulReserved
+);
+typedef MAPIDELETEMAIL FAR *LPMAPIDELETEMAIL;
+MAPIDELETEMAIL MAPIDeleteMail;
+
+typedef ULONG (EXPORT FAR PASCAL *LPMAPIFREEBUFFER)(LPVOID pv);
+
+ULONG FAR PASCAL MAPIFreeBuffer(LPVOID pv);
+
+typedef ULONG (FAR PASCAL MAPIADDRESS)(
+ LHANDLE lhSession,
+ ULONG ulUIParam,
+ LPSTR lpszCaption,
+ ULONG nEditFields,
+ LPSTR lpszLabels,
+ ULONG nRecips,
+ lpMapiRecipDesc lpRecips,
+ FLAGS flFlags,
+ ULONG ulReserved,
+ LPULONG lpnNewRecips,
+ lpMapiRecipDesc FAR *lppNewRecips
+);
+typedef MAPIADDRESS FAR *LPMAPIADDRESS;
+MAPIADDRESS MAPIAddress;
+
+typedef ULONG (FAR PASCAL MAPIDETAILS)(
+ LHANDLE lhSession,
+ ULONG ulUIParam,
+ lpMapiRecipDesc lpRecip,
+ FLAGS flFlags,
+ ULONG ulReserved
+);
+typedef MAPIDETAILS FAR *LPMAPIDETAILS;
+MAPIDETAILS MAPIDetails;
+
+typedef ULONG (FAR PASCAL MAPIRESOLVENAME)(
+ LHANDLE lhSession,
+ ULONG ulUIParam,
+ LPSTR lpszName,
+ FLAGS flFlags,
+ ULONG ulReserved,
+ lpMapiRecipDesc FAR *lppRecip
+);
+typedef MAPIRESOLVENAME FAR *LPMAPIRESOLVENAME;
+MAPIRESOLVENAME MAPIResolveName;
+
+#ifndef SUCCESS_SUCCESS
+#define SUCCESS_SUCCESS 0
+#endif
+#define MAPI_USER_ABORT 1
+#define MAPI_E_USER_ABORT MAPI_USER_ABORT
+#define MAPI_E_FAILURE 2
+#define MAPI_E_LOGON_FAILURE 3
+#define MAPI_E_LOGIN_FAILURE MAPI_E_LOGON_FAILURE
+#define MAPI_E_DISK_FULL 4
+#define MAPI_E_INSUFFICIENT_MEMORY 5
+#define MAPI_E_ACCESS_DENIED 6
+#define MAPI_E_TOO_MANY_SESSIONS 8
+#define MAPI_E_TOO_MANY_FILES 9
+#define MAPI_E_TOO_MANY_RECIPIENTS 10
+#define MAPI_E_ATTACHMENT_NOT_FOUND 11
+#define MAPI_E_ATTACHMENT_OPEN_FAILURE 12
+#define MAPI_E_ATTACHMENT_WRITE_FAILURE 13
+#define MAPI_E_UNKNOWN_RECIPIENT 14
+#define MAPI_E_BAD_RECIPTYPE 15
+#define MAPI_E_NO_MESSAGES 16
+#define MAPI_E_INVALID_MESSAGE 17
+#define MAPI_E_TEXT_TOO_LARGE 18
+#define MAPI_E_INVALID_SESSION 19
+#define MAPI_E_TYPE_NOT_SUPPORTED 20
+#define MAPI_E_AMBIGUOUS_RECIPIENT 21
+#define MAPI_E_AMBIG_RECIP MAPI_E_AMBIGUOUS_RECIPIENT
+#define MAPI_E_MESSAGE_IN_USE 22
+#define MAPI_E_NETWORK_FAILURE 23
+#define MAPI_E_INVALID_EDITFIELDS 24
+#define MAPI_E_INVALID_RECIPS 25
+#define MAPI_E_NOT_SUPPORTED 26
+
+
+
+#ifdef MAPIX_H
+/* Maps from a simple mapi session to a MAPI 1.0 extended mapi session */
+
+STDMETHODIMP_(SCODE)
+ScMAPIXFromSMAPI(LHANDLE lhSimpleSession,
+ ULONG ulFlags,
+ LPCIID lpInterface,
+ LPMAPISESSION FAR * lppMAPISession);
+#endif /* MAPIX_H */
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* MAPI_H */
diff --git a/public/sdk/inc/mapicode.h b/public/sdk/inc/mapicode.h
new file mode 100644
index 000000000..73079b6f1
--- /dev/null
+++ b/public/sdk/inc/mapicode.h
@@ -0,0 +1,245 @@
+/*
+ * M A P I C O D E . H
+ *
+ * Status Codes returned by MAPI routines
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef MAPICODE_H
+#define MAPICODE_H
+
+#if defined (WIN32) && !defined (_WIN32)
+#define _WIN32
+#endif
+
+/* Define S_OK and ITF_* */
+
+#ifdef _WIN32
+#include <winerror.h>
+#endif
+
+/*
+ * MAPI Status codes follow the style of OLE 2.0 sCodes as defined in the
+ * OLE 2.0 Programmer's Reference and header file scode.h (Windows 3.x)
+ * or winerror.h (Windows NT and Windows 95).
+ *
+ */
+
+/* On Windows 3.x, status codes have 32-bit values 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
+ * +-+---------------------+-------+-------------------------------+
+ * |S| Context | Facil | Code |
+ * +-+---------------------+-------+-------------------------------+
+ *
+ * where
+ *
+ * S - is the severity code
+ *
+ * 0 - SEVERITY_SUCCESS
+ * 1 - SEVERITY_ERROR
+ *
+ * Context - context info
+ *
+ * Facility - is the facility code
+ *
+ * 0x0 - FACILITY_NULL generally useful errors ([SE]_*)
+ * 0x1 - FACILITY_RPC remote procedure call errors (RPC_E_*)
+ * 0x2 - FACILITY_DISPATCH late binding dispatch errors
+ * 0x3 - FACILITY_STORAGE storage errors (STG_E_*)
+ * 0x4 - FACILITY_ITF interface-specific errors
+ *
+ * Code - is the facility's status code
+ *
+ *
+ */
+
+/*
+ * On Windows NT 3.5 and Windows 95, scodes are 32-bit values
+ * laid 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
+ * +-+-+-+-+-+---------------------+-------------------------------+
+ * |S|R|C|N|r| Facility | Code |
+ * +-+-+-+-+-+---------------------+-------------------------------+
+ *
+ * where
+ *
+ * S - Severity - indicates success/fail
+ *
+ * 0 - Success
+ * 1 - Fail (COERROR)
+ *
+ * R - reserved portion of the facility code, corresponds to NT's
+ * second severity bit.
+ *
+ * C - reserved portion of the facility code, corresponds to NT's
+ * C field.
+ *
+ * N - reserved portion of the facility code. Used to indicate a
+ * mapped NT status value.
+ *
+ * r - reserved portion of the facility code. Reserved for internal
+ * use. Used to indicate HRESULT values that are not status
+ * values, but are instead message ids for display strings.
+ *
+ * Facility - is the facility code
+ * FACILITY_NULL 0x0
+ * FACILITY_RPC 0x1
+ * FACILITY_DISPATCH 0x2
+ * FACILITY_STORAGE 0x3
+ * FACILITY_ITF 0x4
+ * FACILITY_WIN32 0x7
+ * FACILITY_WINDOWS 0x8
+ *
+ * Code - is the facility's status code
+ *
+ */
+
+
+
+
+/*
+ * We can't use OLE 2.0 macros to build sCodes because the definition has
+ * changed and we wish to conform to the new definition.
+ */
+#define MAKE_MAPI_SCODE(sev,fac,code) \
+ ((SCODE) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) )
+
+/* The following two macros are used to build OLE 2.0 style sCodes */
+
+#define MAKE_MAPI_E( err ) (MAKE_MAPI_SCODE( 1, FACILITY_ITF, err ))
+#define MAKE_MAPI_S( warn ) (MAKE_MAPI_SCODE( 0, FACILITY_ITF, warn ))
+
+#ifdef SUCCESS_SUCCESS
+#undef SUCCESS_SUCCESS
+#endif
+#define SUCCESS_SUCCESS 0L
+
+/* General errors (used by more than one MAPI object) */
+
+#define MAPI_E_CALL_FAILED E_FAIL
+#define MAPI_E_NOT_ENOUGH_MEMORY E_OUTOFMEMORY
+#define MAPI_E_INVALID_PARAMETER E_INVALIDARG
+#define MAPI_E_INTERFACE_NOT_SUPPORTED E_NOINTERFACE
+#define MAPI_E_NO_ACCESS E_ACCESSDENIED
+
+#define MAPI_E_NO_SUPPORT MAKE_MAPI_E( 0x102 )
+#define MAPI_E_BAD_CHARWIDTH MAKE_MAPI_E( 0x103 )
+#define MAPI_E_STRING_TOO_LONG MAKE_MAPI_E( 0x105 )
+#define MAPI_E_UNKNOWN_FLAGS MAKE_MAPI_E( 0x106 )
+#define MAPI_E_INVALID_ENTRYID MAKE_MAPI_E( 0x107 )
+#define MAPI_E_INVALID_OBJECT MAKE_MAPI_E( 0x108 )
+#define MAPI_E_OBJECT_CHANGED MAKE_MAPI_E( 0x109 )
+#define MAPI_E_OBJECT_DELETED MAKE_MAPI_E( 0x10A )
+#define MAPI_E_BUSY MAKE_MAPI_E( 0x10B )
+#define MAPI_E_NOT_ENOUGH_DISK MAKE_MAPI_E( 0x10D )
+#define MAPI_E_NOT_ENOUGH_RESOURCES MAKE_MAPI_E( 0x10E )
+#define MAPI_E_NOT_FOUND MAKE_MAPI_E( 0x10F )
+#define MAPI_E_VERSION MAKE_MAPI_E( 0x110 )
+#define MAPI_E_LOGON_FAILED MAKE_MAPI_E( 0x111 )
+#define MAPI_E_SESSION_LIMIT MAKE_MAPI_E( 0x112 )
+#define MAPI_E_USER_CANCEL MAKE_MAPI_E( 0x113 )
+#define MAPI_E_UNABLE_TO_ABORT MAKE_MAPI_E( 0x114 )
+#define MAPI_E_NETWORK_ERROR MAKE_MAPI_E( 0x115 )
+#define MAPI_E_DISK_ERROR MAKE_MAPI_E( 0x116 )
+#define MAPI_E_TOO_COMPLEX MAKE_MAPI_E( 0x117 )
+#define MAPI_E_BAD_COLUMN MAKE_MAPI_E( 0x118 )
+#define MAPI_E_EXTENDED_ERROR MAKE_MAPI_E( 0x119 )
+#define MAPI_E_COMPUTED MAKE_MAPI_E( 0x11A )
+#define MAPI_E_CORRUPT_DATA MAKE_MAPI_E( 0x11B )
+#define MAPI_E_UNCONFIGURED MAKE_MAPI_E( 0x11C )
+#define MAPI_E_FAILONEPROVIDER MAKE_MAPI_E( 0x11D )
+#define MAPI_E_UNKNOWN_CPID MAKE_MAPI_E( 0x11E )
+#define MAPI_E_UNKNOWN_LCID MAKE_MAPI_E( 0x11F )
+
+/* Flavors of E_ACCESSDENIED, used at logon */
+
+#define MAPI_E_PASSWORD_CHANGE_REQUIRED MAKE_MAPI_E( 0x120 )
+#define MAPI_E_PASSWORD_EXPIRED MAKE_MAPI_E( 0x121 )
+#define MAPI_E_INVALID_WORKSTATION_ACCOUNT MAKE_MAPI_E( 0x122 )
+#define MAPI_E_INVALID_ACCESS_TIME MAKE_MAPI_E( 0x123 )
+#define MAPI_E_ACCOUNT_DISABLED MAKE_MAPI_E( 0x124 )
+
+/* MAPI base function and status object specific errors and warnings */
+
+#define MAPI_E_END_OF_SESSION MAKE_MAPI_E( 0x200 )
+#define MAPI_E_UNKNOWN_ENTRYID MAKE_MAPI_E( 0x201 )
+#define MAPI_E_MISSING_REQUIRED_COLUMN MAKE_MAPI_E( 0x202 )
+#define MAPI_W_NO_SERVICE MAKE_MAPI_S( 0x203 )
+
+/* Property specific errors and warnings */
+
+#define MAPI_E_BAD_VALUE MAKE_MAPI_E( 0x301 )
+#define MAPI_E_INVALID_TYPE MAKE_MAPI_E( 0x302 )
+#define MAPI_E_TYPE_NO_SUPPORT MAKE_MAPI_E( 0x303 )
+#define MAPI_E_UNEXPECTED_TYPE MAKE_MAPI_E( 0x304 )
+#define MAPI_E_TOO_BIG MAKE_MAPI_E( 0x305 )
+#define MAPI_E_DECLINE_COPY MAKE_MAPI_E( 0x306 )
+#define MAPI_E_UNEXPECTED_ID MAKE_MAPI_E( 0x307 )
+
+#define MAPI_W_ERRORS_RETURNED MAKE_MAPI_S( 0x380 )
+
+/* Table specific errors and warnings */
+
+#define MAPI_E_UNABLE_TO_COMPLETE MAKE_MAPI_E( 0x400 )
+#define MAPI_E_TIMEOUT MAKE_MAPI_E( 0x401 )
+#define MAPI_E_TABLE_EMPTY MAKE_MAPI_E( 0x402 )
+#define MAPI_E_TABLE_TOO_BIG MAKE_MAPI_E( 0x403 )
+
+#define MAPI_E_INVALID_BOOKMARK MAKE_MAPI_E( 0x405 )
+
+#define MAPI_W_POSITION_CHANGED MAKE_MAPI_S( 0x481 )
+#define MAPI_W_APPROX_COUNT MAKE_MAPI_S( 0x482 )
+
+/* Transport specific errors and warnings */
+
+#define MAPI_E_WAIT MAKE_MAPI_E( 0x500 )
+#define MAPI_E_CANCEL MAKE_MAPI_E( 0x501 )
+#define MAPI_E_NOT_ME MAKE_MAPI_E( 0x502 )
+
+#define MAPI_W_CANCEL_MESSAGE MAKE_MAPI_S( 0x580 )
+
+/* Message Store, Folder, and Message specific errors and warnings */
+
+#define MAPI_E_CORRUPT_STORE MAKE_MAPI_E( 0x600 )
+#define MAPI_E_NOT_IN_QUEUE MAKE_MAPI_E( 0x601 )
+#define MAPI_E_NO_SUPPRESS MAKE_MAPI_E( 0x602 )
+#define MAPI_E_COLLISION MAKE_MAPI_E( 0x604 )
+#define MAPI_E_NOT_INITIALIZED MAKE_MAPI_E( 0x605 )
+#define MAPI_E_NON_STANDARD MAKE_MAPI_E( 0x606 )
+#define MAPI_E_NO_RECIPIENTS MAKE_MAPI_E( 0x607 )
+#define MAPI_E_SUBMITTED MAKE_MAPI_E( 0x608 )
+#define MAPI_E_HAS_FOLDERS MAKE_MAPI_E( 0x609 )
+#define MAPI_E_HAS_MESSAGES MAKE_MAPI_E( 0x60A )
+#define MAPI_E_FOLDER_CYCLE MAKE_MAPI_E( 0x60B )
+
+#define MAPI_W_PARTIAL_COMPLETION MAKE_MAPI_S( 0x680 )
+
+/* Address Book specific errors and warnings */
+
+#define MAPI_E_AMBIGUOUS_RECIP MAKE_MAPI_E( 0x700 )
+
+/* The range 0x0800 to 0x08FF is reserved */
+
+/* Obsolete typing shortcut that will go away eventually. */
+#ifndef MakeResult
+#define MakeResult(_s) ResultFromScode(_s)
+#endif
+
+/* We expect these to eventually be defined by OLE, but for now,
+ * here they are. When OLE defines them they can be much more
+ * efficient than these, but these are "proper" and don't make
+ * use of any hidden tricks.
+ */
+#ifndef HR_SUCCEEDED
+#define HR_SUCCEEDED(_hr) SUCCEEDED((SCODE)(_hr))
+#define HR_FAILED(_hr) FAILED((SCODE)(_hr))
+#endif
+
+#endif /* MAPICODE_H */
+
+
diff --git a/public/sdk/inc/mapidbg.h b/public/sdk/inc/mapidbg.h
new file mode 100644
index 000000000..bccbf357f
--- /dev/null
+++ b/public/sdk/inc/mapidbg.h
@@ -0,0 +1,479 @@
+/*
+ * M A P I D B G . H
+ *
+ * Debugging support for MAPI service providers.
+ * Support functions are implemented in MAPIDBG.C.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef __MAPIDBG_H_
+#define __MAPIDBG_H_
+
+#if defined (WIN32) && !defined (_WIN32)
+#define _WIN32
+#endif
+
+/*
+ * Debugging Macros -------------------------------------------------------
+ *
+ * IFDBG(x) Results in the expression x if DEBUG is defined, or
+ * to nothing if DEBUG is not defined
+ *
+ * IFNDBG(x) Results in the expression x if DEBUG is not defined,
+ * or to nothing if DEBUG is defined
+ *
+ * Unreferenced(a) Causes a to be referenced so that the compiler
+ * doesn't issue warnings about unused local variables
+ * which exist but are reserved for future use (eg
+ * ulFlags in many cases)
+ */
+
+#if defined(DEBUG)
+#define IFDBG(x) x
+#define IFNDBG(x)
+#else
+#define IFDBG(x)
+#define IFNDBG(x) x
+#endif
+
+#ifdef __cplusplus
+#define EXTERN_C_BEGIN extern "C" {
+#define EXTERN_C_END }
+#else
+#define EXTERN_C_BEGIN
+#define EXTERN_C_END
+#endif
+
+#define dimensionof(a) (sizeof(a)/sizeof(*(a)))
+
+#define Unreferenced(a) ((void)(a))
+
+typedef long SCODE;
+typedef unsigned long ULONG;
+typedef unsigned long DWORD;
+
+/*
+ * Assert Macros ---------------------------------------------------------
+ *
+ * Assert(a) Displays a message indicating the file and line number
+ * of this Assert() if a == 0. OK'ing an assert traps
+ * into the debugger.
+ *
+ * AssertSz(a,sz) Works like an Assert(), but displays the string sz
+ * along with the file and line number.
+ *
+ * Side asserts A side assert works like an Assert(), but evaluates
+ * 'a' even when asserts are not enabled.
+ *
+ * NF asserts A NF (Non-Fatal) assert works like an Assert(), but
+ * continues instead of trapping into the debugger when
+ * OK'ed.
+ */
+
+#if defined(DEBUG) || defined(ASSERTS_ENABLED)
+#define IFTRAP(x) x
+#else
+#define IFTRAP(x) 0
+#endif
+
+#define Trap() IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,"Trap"))
+#define TrapSz(psz) IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz))
+#define TrapSz1(psz,a1) IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1))
+#define TrapSz2(psz,a1,a2) IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2))
+#define TrapSz3(psz,a1,a2,a3) IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3))
+#define TrapSz4(psz,a1,a2,a3,a4) IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4))
+#define TrapSz5(psz,a1,a2,a3,a4,a5) IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5))
+#define TrapSz6(psz,a1,a2,a3,a4,a5,a6) IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6))
+#define TrapSz7(psz,a1,a2,a3,a4,a5,a6,a7) IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7))
+#define TrapSz8(psz,a1,a2,a3,a4,a5,a6,a7,a8) IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7,a8))
+#define TrapSz9(psz,a1,a2,a3,a4,a5,a6,a7,a8,a9) IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7,a8,a9))
+
+#define Assert(t) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,"Assertion Failure: " #t),0))
+#define AssertSz(t,psz) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,psz),0))
+#define AssertSz1(t,psz,a1) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,psz,a1),0))
+#define AssertSz2(t,psz,a1,a2) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2),0))
+#define AssertSz3(t,psz,a1,a2,a3) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3),0))
+#define AssertSz4(t,psz,a1,a2,a3,a4) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4),0))
+#define AssertSz5(t,psz,a1,a2,a3,a4,a5) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5),0))
+#define AssertSz6(t,psz,a1,a2,a3,a4,a5,a6) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6),0))
+#define AssertSz7(t,psz,a1,a2,a3,a4,a5,a6,a7) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7),0))
+#define AssertSz8(t,psz,a1,a2,a3,a4,a5,a6,a7,a8) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7,a8),0))
+#define AssertSz9(t,psz,a1,a2,a3,a4,a5,a6,a7,a8,a9) IFTRAP(((t) ? 0 : DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7,a8,a9),0))
+
+#define SideAssert(t) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,"Assertion Failure: " #t)),0)
+#define SideAssertSz(t,psz) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz)),0)
+#define SideAssertSz1(t,psz,a1) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1)),0)
+#define SideAssertSz2(t,psz,a1,a2) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2)),0)
+#define SideAssertSz3(t,psz,a1,a2,a3) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3)),0)
+#define SideAssertSz4(t,psz,a1,a2,a3,a4) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4)),0)
+#define SideAssertSz5(t,psz,a1,a2,a3,a4,a5) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5)),0)
+#define SideAssertSz6(t,psz,a1,a2,a3,a4,a5,a6) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6)),0)
+#define SideAssertSz7(t,psz,a1,a2,a3,a4,a5,a6,a7) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7)),0)
+#define SideAssertSz8(t,psz,a1,a2,a3,a4,a5,a6,a7,a8) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7,a8)),0)
+#define SideAssertSz9(t,psz,a1,a2,a3,a4,a5,a6,a7,a8,a9) ((t) ? 0 : IFTRAP(DebugTrapFn(1,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7,a8,a9)),0)
+
+#define NFAssert(t) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,"Assertion Failure: " #t),0))
+#define NFAssertSz(t,psz) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,psz),0))
+#define NFAssertSz1(t,psz,a1) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,psz,a1),0))
+#define NFAssertSz2(t,psz,a1,a2) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2),0))
+#define NFAssertSz3(t,psz,a1,a2,a3) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3),0))
+#define NFAssertSz4(t,psz,a1,a2,a3,a4) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4),0))
+#define NFAssertSz5(t,psz,a1,a2,a3,a4,a5) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5),0))
+#define NFAssertSz6(t,psz,a1,a2,a3,a4,a5,a6) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6),0))
+#define NFAssertSz7(t,psz,a1,a2,a3,a4,a5,a6,a7) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7),0))
+#define NFAssertSz8(t,psz,a1,a2,a3,a4,a5,a6,a7,a8) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7,a8),0))
+#define NFAssertSz9(t,psz,a1,a2,a3,a4,a5,a6,a7,a8,a9) IFTRAP(((t) ? 0 : DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7,a8,a9),0))
+
+#define NFSideAssert(t) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,"Assertion Failure: " #t)),0)
+#define NFSideAssertSz(t,psz) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,psz)),0)
+#define NFSideAssertSz1(t,psz,a1) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,psz,a1)),0)
+#define NFSideAssertSz2(t,psz,a1,a2) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2)),0)
+#define NFSideAssertSz3(t,psz,a1,a2,a3) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3)),0)
+#define NFSideAssertSz4(t,psz,a1,a2,a3,a4) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4)),0)
+#define NFSideAssertSz5(t,psz,a1,a2,a3,a4,a5) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5)),0)
+#define NFSideAssertSz6(t,psz,a1,a2,a3,a4,a5,a6) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6)),0)
+#define NFSideAssertSz7(t,psz,a1,a2,a3,a4,a5,a6,a7) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7)),0)
+#define NFSideAssertSz8(t,psz,a1,a2,a3,a4,a5,a6,a7,a8) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7,a8)),0)
+#define NFSideAssertSz9(t,psz,a1,a2,a3,a4,a5,a6,a7,a8,a9) ((t) ? 0 : IFTRAP(DebugTrapFn(0,__FILE__,__LINE__,psz,a1,a2,a3,a4,a5,a6,a7,a8,a9)),0)
+
+/*
+ * Trace Macros ------------------------------------------------------------
+ *
+ * DebugTrace Use for arbitrary formatted output. It
+ * takes exactly the same arguments as the
+ * Windows wsprintf() function.
+ * DebugTraceResult Shorthand for error tracing with an
+ * HRESULT. Arguments are the name of the
+ * function (not quoted) and the HRESULT.
+ * DebugTraceSc Shorthand for error tracing with an
+ * SCODE. Arguments are the name of the
+ * function (not quoted) and the SCODE.
+ * DebugTraceArg Shorthand for invalid parameter
+ * tracing. Arguments are the name of the
+ * function (not quoted) and a quoted
+ * string describing the bad parameter.
+ */
+
+#if defined(DEBUG) || defined(TRACES_ENABLED)
+#define IFTRACE(x) x
+#define DebugTrace DebugTraceFn
+#else
+#define IFTRACE(x) 0
+#define DebugTrace 1?0:DebugTraceFn
+#endif
+
+#define DebugTraceResult(f,hr) IFTRACE(((hr) ? DebugTraceFn(#f " returns 0x%08lX %s\n", GetScode(hr), SzDecodeScode(GetScode(hr))) : 0))
+#define DebugTraceSc(f,sc) IFTRACE(((sc) ? DebugTraceFn(#f " returns 0x%08lX %s\n", sc, SzDecodeScode(sc)) : 0))
+#define DebugTraceArg(f,s) IFTRACE(DebugTraceFn(#f ": bad parameter: " s "\n"))
+#define DebugTraceLine() IFTRACE(DebugTraceFn("File %s, Line %i \n",__FILE__,__LINE__))
+#define DebugTraceProblems(sz, rgprob) IFTRACE(DebugTraceProblemsFn(sz, rgprob))
+
+#define TraceSz(psz) IFTRACE(DebugTraceFn("~" psz))
+#define TraceSz1(psz,a1) IFTRACE(DebugTraceFn("~" psz,a1))
+#define TraceSz2(psz,a1,a2) IFTRACE(DebugTraceFn("~" psz,a1,a2))
+#define TraceSz3(psz,a1,a2,a3) IFTRACE(DebugTraceFn("~" psz,a1,a2,a3))
+#define TraceSz4(psz,a1,a2,a3,a4) IFTRACE(DebugTraceFn("~" psz,a1,a2,a3,a4))
+#define TraceSz5(psz,a1,a2,a3,a4,a5) IFTRACE(DebugTraceFn("~" psz,a1,a2,a3,a4,a5))
+#define TraceSz6(psz,a1,a2,a3,a4,a5,a6) IFTRACE(DebugTraceFn("~" psz,a1,a2,a3,a4,a5,a6))
+#define TraceSz7(psz,a1,a2,a3,a4,a5,a6,a7) IFTRACE(DebugTraceFn("~" psz,a1,a2,a3,a4,a5,a6,a7))
+#define TraceSz8(psz,a1,a2,a3,a4,a5,a6,a7,a8) IFTRACE(DebugTraceFn("~" psz,a1,a2,a3,a4,a5,a6,a7,a8))
+#define TraceSz9(psz,a1,a2,a3,a4,a5,a6,a7,a8,a9) IFTRACE(DebugTraceFn("~" psz,a1,a2,a3,a4,a5,a6,a7,a8,a9))
+
+/* Debugging Functions ---------------------------------------------------- */
+
+EXTERN_C_BEGIN
+
+#ifdef WIN16
+#define EXPORTDBG __export
+#else
+#define EXPORTDBG
+#endif
+
+int EXPORTDBG __cdecl DebugTrapFn(int fFatal, char *pszFile, int iLine, char *pszFormat, ...);
+int EXPORTDBG __cdecl DebugTraceFn(char *pszFormat, ...);
+void EXPORTDBG __cdecl DebugTraceProblemsFn(char *sz, void *rgprob);
+char * EXPORTDBG __cdecl SzDecodeScodeFn(SCODE sc);
+char * EXPORTDBG __cdecl SzDecodeUlPropTypeFn(unsigned long ulPropType);
+char * EXPORTDBG __cdecl SzDecodeUlPropTagFn(unsigned long ulPropTag);
+unsigned long EXPORTDBG __cdecl UlPropTagFromSzFn(char *psz);
+SCODE EXPORTDBG __cdecl ScodeFromSzFn(char *psz);
+void * EXPORTDBG __cdecl DBGMEM_EncapsulateFn(void * pmalloc, char *pszSubsys, int fCheckOften);
+void EXPORTDBG __cdecl DBGMEM_ShutdownFn(void * pmalloc);
+void EXPORTDBG __cdecl DBGMEM_CheckMemFn(void * pmalloc, int fReportOrphans);
+#if defined(_WIN32) && defined(_X86_)
+void EXPORTDBG __cdecl DBGMEM_LeakHook(FARPROC pfn);
+void EXPORTDBG __cdecl GetCallStack(DWORD *, int, int);
+#endif
+void EXPORTDBG __cdecl DBGMEM_NoLeakDetectFn(void * pmalloc, void *pv);
+void EXPORTDBG __cdecl DBGMEM_SetFailureAtFn(void * pmalloc, ULONG ulFailureAt);
+SCODE EXPORTDBG __cdecl ScCheckScFn(SCODE, SCODE *, char *, char *, int);
+void * EXPORTDBG __cdecl VMAlloc(ULONG);
+void * EXPORTDBG __cdecl VMAllocEx(ULONG, ULONG);
+void * EXPORTDBG __cdecl VMRealloc(void *, ULONG);
+void * EXPORTDBG __cdecl VMReallocEx(void *, ULONG, ULONG);
+ULONG EXPORTDBG __cdecl VMGetSize(void *);
+ULONG EXPORTDBG __cdecl VMGetSizeEx(void *, ULONG);
+void EXPORTDBG __cdecl VMFree(void *);
+void EXPORTDBG __cdecl VMFreeEx(void *, ULONG);
+
+EXTERN_C_END
+
+/*
+ * Debugging Macros -------------------------------------------------------
+ *
+ * SzDecodeScode Returns the string name of an SCODE
+ * SzDecodeUlPropTag Returns the string name of a property
+ * tag
+ * UlPropTagFromSz Given a property tag's name, returns
+ * its value
+ * ScodeFromSz Given an SCODE's name, returns its
+ * value
+ *
+ * DBGMEM_Encapsulate Given an IMalloc interface, adds heap-
+ * checking functionality and returns a
+ * wrapped interface
+ * DBGMEM_Shutdown Undoes DBGMEM_Encapsulate, and prints
+ * out information on any allocations made
+ * since the interface was encapsulated
+ * that have not yet been released.
+ * DBGMEM_CheckMem Checks all memory allocated on the heap,
+ * and optionally reports leaked blocks.
+ * DBGMEM_NoLeakDetect Prevents a block from appearing on the leak
+ * report. Pass NULL for pv to inhibit leak
+ * reports at all from this heap.
+ */
+
+#ifdef DEBUG
+
+#define SzDecodeScode(_sc) SzDecodeScodeFn(_sc)
+#define SzDecodeUlPropType(_ulPropType) SzDecodeUlPropTypeFn(_ulPropType)
+#define SzDecodeUlPropTag(_ulPropTag) SzDecodeUlPropTagFn(_ulPropTag)
+#define UlPropTagFromSz(_sz) UlPropTagFromSzFn(_sz)
+#define ScodeFromSz(_sz) ScodeFromSzFn(_sz)
+#define DBGMEM_Encapsulate(pm, psz, f) DBGMEM_EncapsulateFn(pm, psz, f)
+#define DBGMEM_Shutdown(pm) DBGMEM_ShutdownFn(pm)
+#define DBGMEM_CheckMem(pm, f) DBGMEM_CheckMemFn(pm, f)
+#define DBGMEM_NoLeakDetect(pm, pv) DBGMEM_NoLeakDetectFn(pm, pv)
+#define DBGMEM_SetFailureAt(pm, ul) DBGMEM_SetFailureAtFn(pm, ul)
+
+#else
+
+#define SzDecodeScode(_sc) (0)
+#define SzDecodeUlPropType(_ulPropType) (0)
+#define SzDecodeUlPropTag(_ulPropTag) (0)
+#define UlPropTagFromSz(_sz) (0)
+#define ScodeFromSz(_sz) (0)
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+#define DBGMEM_Encapsulate(pmalloc, pszSubsys, fCheckOften) \
+ ((pmalloc)->AddRef(), (pmalloc))
+#define DBGMEM_Shutdown(pmalloc) \
+ ((pmalloc)->Release())
+#else
+#define DBGMEM_Encapsulate(pmalloc, pszSubsys, fCheckOften) \
+ ((pmalloc)->lpVtbl->AddRef(pmalloc), (pmalloc))
+#define DBGMEM_Shutdown(pmalloc) \
+ ((pmalloc)->lpVtbl->Release(pmalloc))
+#endif
+#define DBGMEM_CheckMem(pm, f)
+#define DBGMEM_NoLeakDetect(pm, pv)
+#define DBGMEM_SetFailureAt(pm, ul)
+
+#endif
+
+/*
+ * SCODE maps -------------------------------------------------------------
+ *
+ * ScCheckSc Given an SCODE and method name, verifies
+ * that the SCODE can legally be returned from
+ * thet method. Prints out a debug string if
+ * it cannot.
+ * HrCheckHr As ScCheckSc, for functions that return
+ * HRESULT.
+ */
+
+#if defined(DEBUG) && !defined(DOS)
+#define ScCheckSc(sc,fn) ScCheckScFn(sc,fn##_Scodes,#fn,__FILE__, __LINE__)
+#define HrCheckHr(hr,fn) HrCheckSc(GetScode(hr),fn)
+#else
+#define ScCheckSc(sc,fn) (sc)
+#define HrCheckHr(hr,fn) (hr)
+#endif
+
+#define HrCheckSc(sc,fn) ResultFromScode(ScCheckSc(sc,fn))
+
+#if defined(DEBUG) && !defined(DOS)
+extern SCODE Common_Scodes[];
+extern SCODE MAPILogon_Scodes[];
+extern SCODE MAPIAllocateBuffer_Scodes[];
+extern SCODE MAPIAllocateMore_Scodes[];
+extern SCODE MAPIFreeBuffer_Scodes[];
+
+extern SCODE IUnknown_QueryInterface_Scodes[];
+extern SCODE IUnknown_AddRef_Scodes[];
+extern SCODE IUnknown_Release_Scodes[];
+extern SCODE IUnknown_GetLastError_Scodes[];
+
+extern SCODE IMAPIProp_CopyTo_Scodes[];
+extern SCODE IMAPIProp_CopyProps_Scodes[];
+extern SCODE IMAPIProp_DeleteProps_Scodes[];
+extern SCODE IMAPIProp_GetIDsFromNames_Scodes[];
+extern SCODE IMAPIProp_GetLastError_Scodes[];
+extern SCODE IMAPIProp_GetNamesFromIDs_Scodes[];
+extern SCODE IMAPIProp_GetPropList_Scodes[];
+extern SCODE IMAPIProp_GetProps_Scodes[];
+extern SCODE IMAPIProp_OpenProperty_Scodes[];
+extern SCODE IMAPIProp_SetProps_Scodes[];
+extern SCODE IMAPIProp_SaveChanges_Scodes[];
+
+extern SCODE IStream_Read_Scodes[];
+extern SCODE IStream_Write_Scodes[];
+extern SCODE IStream_Seek_Scodes[];
+extern SCODE IStream_SetSize_Scodes[];
+extern SCODE IStream_Tell_Scodes[];
+extern SCODE IStream_LockRegion_Scodes[];
+extern SCODE IStream_UnlockRegion_Scodes[];
+extern SCODE IStream_Clone_Scodes[];
+extern SCODE IStream_CopyTo_Scodes[];
+extern SCODE IStream_Revert_Scodes[];
+extern SCODE IStream_Stat_Scodes[];
+extern SCODE IStream_Commit_Scodes[];
+
+extern SCODE IMAPITable_GetLastError_Scodes[];
+extern SCODE IMAPITable_Advise_Scodes[];
+extern SCODE IMAPITable_Unadvise_Scodes[];
+extern SCODE IMAPITable_GetStatus_Scodes[];
+extern SCODE IMAPITable_SetColumns_Scodes[];
+extern SCODE IMAPITable_QueryColumns_Scodes[];
+extern SCODE IMAPITable_GetRowCount_Scodes[];
+extern SCODE IMAPITable_SeekRow_Scodes[];
+extern SCODE IMAPITable_SeekRowApprox_Scodes[];
+extern SCODE IMAPITable_QueryPosition_Scodes[];
+extern SCODE IMAPITable_FindRow_Scodes[];
+extern SCODE IMAPITable_Restrict_Scodes[];
+extern SCODE IMAPITable_CreateBookmark_Scodes[];
+extern SCODE IMAPITable_FreeBookmark_Scodes[];
+extern SCODE IMAPITable_SortTable_Scodes[];
+extern SCODE IMAPITable_QuerySortOrder_Scodes[];
+extern SCODE IMAPITable_QueryRows_Scodes[];
+extern SCODE IMAPITable_Abort_Scodes[];
+extern SCODE IMAPITable_ExpandRow_Scodes[];
+extern SCODE IMAPITable_CollapseRow_Scodes[];
+extern SCODE IMAPITable_WaitForCompletion_Scodes[];
+extern SCODE IMAPITable_GetCollapseState_Scodes[];
+extern SCODE IMAPITable_SetCollapseState_Scodes[];
+
+extern SCODE IMAPISession_LogOff_Scodes[];
+extern SCODE IMAPISession_Release_Scodes[];
+extern SCODE IMAPISession_GetLastError_Scodes[];
+extern SCODE IMAPISession_GetMsgStoresTable_Scodes[];
+extern SCODE IMAPISession_GetStatusTable_Scodes[];
+extern SCODE IMAPISession_OpenMsgStore_Scodes[];
+extern SCODE IMAPISession_OpenAddressBook_Scodes[];
+extern SCODE IMAPISession_OpenEntry_Scodes[];
+extern SCODE IMAPISession_OpenProfileSection_Scodes[];
+extern SCODE IMAPISession_Advise_Scodes[];
+extern SCODE IMAPISession_Unadvise_Scodes[];
+extern SCODE IMAPISession_CompareEntryIDs_Scodes[];
+extern SCODE IMAPISession_MessageOptions_Scodes[];
+extern SCODE IMAPISession_QueryDefaultMessageOpt_Scodes[];
+extern SCODE IMAPISession_EnumAdrTypes_Scodes[];
+extern SCODE IMAPISession_QueryIdentity_Scodes[];
+extern SCODE IMAPISession_OpenProfileSection_Scodes[];
+extern SCODE IMAPISession_GetStatusTable_Scodes[];
+
+extern SCODE IMsgStore_Advise_Scodes[] ;
+extern SCODE IMsgStore_Unadvise_Scodes[] ;
+extern SCODE IMsgStore_CompareEntryIDs_Scodes[] ;
+extern SCODE IMsgStore_OpenEntry_Scodes[] ;
+extern SCODE IMsgStore_SetReceiveFolder_Scodes[];
+extern SCODE IMsgStore_GetReceiveFolder_Scodes[];
+extern SCODE IMsgStore_GetReceiveFolderTable_Scodes[];
+extern SCODE IMsgStore_StoreLogoff_Scodes[];
+extern SCODE IMsgStore_AbortSubmit_Scodes[];
+extern SCODE IMsgStore_GetOutgoingQueue_Scodes[] ;
+extern SCODE IMsgStore_SetLockState_Scodes[] ;
+extern SCODE IMsgStore_FinishedMsg_Scodes[] ;
+extern SCODE IMsgStore_NotifyNewMail_Scodes[];
+
+extern SCODE IMAPIFolder_GetContentsTable_Scodes[];
+extern SCODE IMAPIFolder_GetHierarchyTable_Scodes[];
+extern SCODE IMAPIFolder_SaveContentsSort_Scodes[];
+extern SCODE IMAPIFolder_OpenEntry_Scodes[];
+extern SCODE IMAPIFolder_CreateMessage_Scodes[];
+extern SCODE IMAPIFolder_CopyMessages_Scodes[];
+extern SCODE IMAPIFolder_DeleteMessages_Scodes[];
+extern SCODE IMAPIFolder_CreateFolder_Scodes[];
+extern SCODE IMAPIFolder_CopyFolder_Scodes[];
+extern SCODE IMAPIFolder_DeleteFolder_Scodes[];
+extern SCODE IMAPIFolder_SetSearchCriteria_Scodes[];
+extern SCODE IMAPIFolder_GetSearchCriteria_Scodes[];
+extern SCODE IMAPIFolder_SetReadFlags_Scodes[];
+extern SCODE IMAPIFolder_GetMessageStatus_Scodes[];
+extern SCODE IMAPIFolder_SetMessageStatus_Scodes[];
+extern SCODE IMAPIFolder_EmptyFolder_Scodes[];
+
+extern SCODE IMessage_SaveChanges_Scodes[];
+extern SCODE IMessage_GetAttachmentTable_Scodes[];
+extern SCODE IMessage_OpenAttach_Scodes[];
+extern SCODE IMessage_CreateAttach_Scodes[];
+extern SCODE IMessage_DeleteAttach_Scodes[];
+extern SCODE IMessage_GetRecipientTable_Scodes[];
+extern SCODE IMessage_ModifyRecipients_Scodes[];
+extern SCODE IMessage_SubmitMessage_Scodes[];
+extern SCODE IMessage_SetReadFlag_Scodes[];
+
+extern SCODE IAttach_SaveChanges_Scodes[];
+
+extern SCODE IAddrBook_OpenEntry_Scodes[];
+extern SCODE IAddrBook_CompareEntryIDs_Scodes[];
+extern SCODE IAddrBook_CreateOneOff_Scodes[];
+extern SCODE IAddrBook_ResolveName_Scodes[];
+extern SCODE IAddrBook_Address_Scodes[];
+extern SCODE IAddrBook_Details_Scodes[];
+extern SCODE IAddrBook_RecipOptions_Scodes[];
+extern SCODE IAddrBook_QueryDefaultRecipOpt_Scodes[];
+extern SCODE IAddrBook_Address_Scodes[];
+extern SCODE IAddrBook_ButtonPress_Scodes[];
+
+extern SCODE IABContainer_GetContentsTable_Scodes[];
+extern SCODE IABContainer_GetHierarchyTable_Scodes[];
+
+extern SCODE INotifObj_ChangeEvMask_Scodes[];
+
+extern SCODE IMAPIStatus_ChangePassword_Scodes[];
+extern SCODE IMAPIStatus_FlushQueues_Scodes[];
+extern SCODE IMAPIStatus_SettingsDialog_Scodes[];
+extern SCODE IMAPIStatus_ValidateState_Scodes[];
+
+extern SCODE IMSProvider_Logon_Scodes[];
+extern SCODE IMSProvider_Deinit_Scodes[];
+extern SCODE IMSProvider_Init_Scodes[];
+extern SCODE IMSProvider_SpoolerLogon_Scodes[];
+extern SCODE IMSProvider_Shutdown_Scodes[];
+
+extern SCODE SMAPI_MAPILogon_Scodes[];
+extern SCODE SMAPI_MAPILogoff_Scodes[];
+extern SCODE SMAPI_MAPIFreeBuffer_Scodes[];
+extern SCODE SMAPI_MAPISendMail_Scodes[];
+extern SCODE SMAPI_MAPISendDocuments_Scodes[];
+extern SCODE SMAPI_MAPIFindNext_Scodes[];
+extern SCODE SMAPI_MAPIReadMail_Scodes[];
+extern SCODE SMAPI_MAPISaveMail_Scodes[];
+extern SCODE SMAPI_MAPIDeleteMail_Scodes[];
+extern SCODE SMAPI_MAPIAddress_Scodes[];
+extern SCODE SMAPI_MAPIResolveName_Scodes[];
+extern SCODE SMAPI_MAPIDetails_Scodes[];
+
+extern SCODE IMSLogon_OpenEntry_Scodes[];
+extern SCODE IMSLogon_OpenStatusEntry_Scodes[];
+extern SCODE IMSLogon_CompareEntryIDs_Scodes[];
+extern SCODE IMSLogon_Advise_Scodes[];
+extern SCODE IMSLogon_Unadvise_Scodes[];
+extern SCODE IMSLogon_Logoff_Scodes[];
+#endif
+
+/* ------------------------------------------------------------------------ */
+
+#endif
diff --git a/public/sdk/inc/mapidefs.h b/public/sdk/inc/mapidefs.h
new file mode 100644
index 000000000..b75320dd8
--- /dev/null
+++ b/public/sdk/inc/mapidefs.h
@@ -0,0 +1,2649 @@
+/*
+ * M A P I D E F S . H
+ *
+ * Definitions used by MAPI clients and service providers.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef MAPIDEFS_H
+#define MAPIDEFS_H
+
+#if defined (WIN32) && !defined (_WIN32)
+#define _WIN32
+#endif
+
+#if defined (_WIN32) /* Must include WINDOWS.H on Win32 */
+#ifndef _WINDOWS_
+#define INC_OLE2 /* Get the OLE2 stuff */
+#define INC_RPC /* harmless on Windows NT; Windows 95 needs it */
+#define _INC_OLE /* Windows 95 will include OLE1 without this */
+#include <windows.h>
+#endif
+
+#ifndef _OLEERROR_H_
+#include <winerror.h>
+#endif
+#ifndef _OBJBASE_H_
+#include <objbase.h>
+#endif
+#endif
+
+#if defined (WIN16) || defined (DOS) || defined (DOS16)
+#ifndef _COMPOBJ_H_
+#include <compobj.h>
+#endif
+#endif
+
+#ifndef _INC_STDDEF
+#include <stddef.h>
+#endif
+
+/* Array dimension for structures with variable-sized arrays at the end. */
+
+#ifndef MAPI_DIM
+#define MAPI_DIM 1
+#endif
+
+/* Provider init type. Force to cdecl always */
+
+#ifndef STDMAPIINITCALLTYPE
+#if !defined (_MAC) && defined (_WIN32)
+#define STDMAPIINITCALLTYPE __cdecl
+#else
+#define STDMAPIINITCALLTYPE STDMETHODCALLTYPE
+#endif
+#define STDINITMETHODIMP HRESULT STDMAPIINITCALLTYPE
+#define STDINITMETHODIMP_(type) type STDMAPIINITCALLTYPE
+#endif
+
+
+#define MAPI_NT_SERVICE ((ULONG) 0x00010000) /* Provider is being loaded in an NT service */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Simple data types */
+
+#if !defined (MIDL_PASS) /* MIDL doesn't want to see these */
+
+typedef WORD WCHAR;
+
+#ifdef UNICODE
+typedef WCHAR TCHAR;
+#else
+typedef char TCHAR;
+#endif
+
+typedef WCHAR FAR * LPWSTR;
+typedef const WCHAR FAR * LPCWSTR;
+typedef TCHAR FAR * LPTSTR;
+typedef const TCHAR FAR * LPCTSTR;
+typedef BYTE FAR * LPBYTE;
+#endif /* defined MIDL_PASS */
+
+typedef ULONG FAR * LPULONG;
+
+#ifndef __LHANDLE
+#define __LHANDLE
+typedef unsigned long LHANDLE, FAR * LPLHANDLE;
+#endif
+
+#if !defined(_WINBASE_) && !defined(_FILETIME_)
+#define _FILETIME_
+typedef struct _FILETIME
+{
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+} FILETIME, FAR * LPFILETIME;
+#endif
+
+#ifndef BEGIN_INTERFACE
+#define BEGIN_INTERFACE
+#endif
+
+/*
+ * This flag is used in many different MAPI calls to signify that
+ * the object opened by the call should be modifiable (MAPI_MODIFY).
+ * If the flag MAPI_MAX_ACCESS is set, the object returned should be
+ * returned at the maximum access level allowed. An additional
+ * property available on the object (PR_ACCESS_LEVEL) uses the same
+ * MAPI_MODIFY flag to say just what this new access level is.
+ */
+
+#define MAPI_MODIFY ((ULONG) 0x00000001)
+
+/*
+ * The following flags are used to indicate to the client what access
+ * level is permissible in the object. They appear in PR_ACCESS in
+ * message and folder objects as well as in contents and associated
+ * contents tables
+ */
+
+#define MAPI_ACCESS_MODIFY ((ULONG) 0x00000001)
+#define MAPI_ACCESS_READ ((ULONG) 0x00000002)
+#define MAPI_ACCESS_DELETE ((ULONG) 0x00000004)
+#define MAPI_ACCESS_CREATE_HIERARCHY ((ULONG) 0x00000008)
+#define MAPI_ACCESS_CREATE_CONTENTS ((ULONG) 0x00000010)
+#define MAPI_ACCESS_CREATE_ASSOCIATED ((ULONG) 0x00000020)
+
+/*
+ * The MAPI_UNICODE flag is used in many different MAPI calls to signify
+ * that strings passed through the interface are in Unicode (a 16-bit
+ * character set). The default is an 8-bit character set.
+ *
+ * The value fMapiUnicode can be used as the 'normal' value for
+ * that bit, given the application's default character set.
+ */
+
+#define MAPI_UNICODE ((ULONG) 0x80000000)
+
+#ifdef UNICODE
+#define fMapiUnicode MAPI_UNICODE
+#else
+#define fMapiUnicode 0
+#endif
+
+/* successful HRESULT */
+#define hrSuccess 0
+
+
+
+/* Recipient types */
+#ifndef MAPI_ORIG /* also defined in mapi.h */
+#define MAPI_ORIG 0 /* Recipient is message originator */
+#define MAPI_TO 1 /* Recipient is a primary recipient */
+#define MAPI_CC 2 /* Recipient is a copy recipient */
+#define MAPI_BCC 3 /* Recipient is blind copy recipient */
+#define MAPI_P1 0x10000000 /* Recipient is a P1 resend recipient */
+#define MAPI_SUBMITTED 0x80000000 /* Recipient is already processed */
+/* #define MAPI_AUTHORIZE 4 recipient is a CMC authorizing user */
+/*#define MAPI_DISCRETE 0x10000000 Recipient is a P1 resend recipient */
+#endif
+
+/* Bit definitions for abFlags[0] of ENTRYID */
+#define MAPI_SHORTTERM 0x80
+#define MAPI_NOTRECIP 0x40
+#define MAPI_THISSESSION 0x20
+#define MAPI_NOW 0x10
+#define MAPI_NOTRESERVED 0x08
+
+/* Bit definitions for abFlags[1] of ENTRYID */
+#define MAPI_COMPOUND 0x80
+
+/* ENTRYID */
+typedef struct
+{
+ BYTE abFlags[4];
+ BYTE ab[MAPI_DIM];
+} ENTRYID, FAR *LPENTRYID;
+
+#define CbNewENTRYID(_cb) (offsetof(ENTRYID,ab) + (_cb))
+#define CbENTRYID(_cb) (offsetof(ENTRYID,ab) + (_cb))
+#define SizedENTRYID(_cb, _name) \
+ struct _ENTRYID_ ## _name \
+{ \
+ BYTE abFlags[4]; \
+ BYTE ab[_cb]; \
+} _name
+
+/* Byte-order-independent version of GUID (world-unique identifier) */
+typedef struct _MAPIUID
+{
+ BYTE ab[16];
+} MAPIUID, FAR * LPMAPIUID;
+
+/* Note: need to include C run-times (memory.h) to use this macro */
+
+#define IsEqualMAPIUID(lpuid1, lpuid2) (!memcmp(lpuid1, lpuid2, sizeof(MAPIUID)))
+
+/*
+ * Constants for one-off entry ID:
+ * The MAPIUID that identifies the one-off provider;
+ * the flag that defines whether the embedded strings are Unicode;
+ * the flag that specifies whether the recipient gets TNEF or not.
+ */
+
+#define MAPI_ONE_OFF_UID { 0x81, 0x2b, 0x1f, 0xa4, 0xbe, 0xa3, 0x10, 0x19, \
+ 0x9d, 0x6e, 0x00, 0xdd, 0x01, 0x0f, 0x54, 0x02 }
+#define MAPI_ONE_OFF_UNICODE 0x8000
+#define MAPI_ONE_OFF_NO_RICH_INFO 0x0001
+
+/* Object type */
+
+#define MAPI_STORE ((ULONG) 0x00000001) /* Message Store */
+#define MAPI_ADDRBOOK ((ULONG) 0x00000002) /* Address Book */
+#define MAPI_FOLDER ((ULONG) 0x00000003) /* Folder */
+#define MAPI_ABCONT ((ULONG) 0x00000004) /* Address Book Container */
+#define MAPI_MESSAGE ((ULONG) 0x00000005) /* Message */
+#define MAPI_MAILUSER ((ULONG) 0x00000006) /* Individual Recipient */
+#define MAPI_ATTACH ((ULONG) 0x00000007) /* Attachment */
+#define MAPI_DISTLIST ((ULONG) 0x00000008) /* Distribution List Recipient */
+#define MAPI_PROFSECT ((ULONG) 0x00000009) /* Profile Section */
+#define MAPI_STATUS ((ULONG) 0x0000000A) /* Status Object */
+#define MAPI_SESSION ((ULONG) 0x0000000B) /* Session */
+#define MAPI_FORMINFO ((ULONG) 0x0000000C) /* Form Information */
+
+
+/*
+ * Maximum length of profile names and passwords, not including
+ * the null termination character.
+ */
+#ifndef cchProfileNameMax
+#define cchProfileNameMax 64
+#define cchProfilePassMax 64
+#endif
+
+
+/* Property Types */
+
+#define MV_FLAG 0x1000 /* Multi-value flag */
+
+#define PT_UNSPECIFIED ((ULONG) 0) /* (Reserved for interface use) type doesn't matter to caller */
+#define PT_NULL ((ULONG) 1) /* NULL property value */
+#define PT_I2 ((ULONG) 2) /* Signed 16-bit value */
+#define PT_LONG ((ULONG) 3) /* Signed 32-bit value */
+#define PT_R4 ((ULONG) 4) /* 4-byte floating point */
+#define PT_DOUBLE ((ULONG) 5) /* Floating point double */
+#define PT_CURRENCY ((ULONG) 6) /* Signed 64-bit int (decimal w/ 4 digits right of decimal pt) */
+#define PT_APPTIME ((ULONG) 7) /* Application time */
+#define PT_ERROR ((ULONG) 10) /* 32-bit error value */
+#define PT_BOOLEAN ((ULONG) 11) /* 16-bit boolean (non-zero true) */
+#define PT_OBJECT ((ULONG) 13) /* Embedded object in a property */
+#define PT_I8 ((ULONG) 20) /* 8-byte signed integer */
+#define PT_STRING8 ((ULONG) 30) /* Null terminated 8-bit character string */
+#define PT_UNICODE ((ULONG) 31) /* Null terminated Unicode string */
+#define PT_SYSTIME ((ULONG) 64) /* FILETIME 64-bit int w/ number of 100ns periods since Jan 1,1601 */
+#define PT_CLSID ((ULONG) 72) /* OLE GUID */
+#define PT_BINARY ((ULONG) 258) /* Uninterpreted (counted byte array) */
+/* Changes are likely to these numbers, and to their structures. */
+
+/* Alternate property type names for ease of use */
+#define PT_SHORT PT_I2
+#define PT_I4 PT_LONG
+#define PT_FLOAT PT_R4
+#define PT_R8 PT_DOUBLE
+#define PT_LONGLONG PT_I8
+
+/*
+ * The type of a MAPI-defined string property is indirected, so
+ * that it defaults to Unicode string on a Unicode platform and to
+ * String8 on an ANSI or DBCS platform.
+ *
+ * Macros are defined here both for the property type, and for the
+ * field of the property value structure which should be
+ * dereferenced to obtain the string pointer.
+ */
+
+#ifdef UNICODE
+#define PT_TSTRING PT_UNICODE
+#define PT_MV_TSTRING (MV_FLAG|PT_UNICODE)
+#define LPSZ lpszW
+#define LPPSZ lppszW
+#define MVSZ MVszW
+#else
+#define PT_TSTRING PT_STRING8
+#define PT_MV_TSTRING (MV_FLAG|PT_STRING8)
+#define LPSZ lpszA
+#define LPPSZ lppszA
+#define MVSZ MVszA
+#endif
+
+
+/* Property Tags
+ *
+ * By convention, MAPI never uses 0 or FFFF as a property ID.
+ * Use as null values, initializers, sentinels, or what have you.
+ */
+
+#define PROP_TYPE_MASK ((ULONG)0x0000FFFF) /* Mask for Property type */
+#define PROP_TYPE(ulPropTag) (((ULONG)(ulPropTag))&PROP_TYPE_MASK)
+#define PROP_ID(ulPropTag) (((ULONG)(ulPropTag))>>16)
+#define PROP_TAG(ulPropType,ulPropID) ((((ULONG)(ulPropID))<<16)|((ULONG)(ulPropType)))
+#define PROP_ID_NULL 0
+#define PROP_ID_INVALID 0xFFFF
+#define PR_NULL PROP_TAG( PT_NULL, PROP_ID_NULL)
+#define CHANGE_PROP_TYPE(ulPropTag, ulPropType) \
+ (((ULONG)0xFFFF0000 & ulPropTag) | ulPropType)
+
+
+/* Multi-valued Property Types */
+
+#define PT_MV_I2 (MV_FLAG|PT_I2)
+#define PT_MV_LONG (MV_FLAG|PT_LONG)
+#define PT_MV_R4 (MV_FLAG|PT_R4)
+#define PT_MV_DOUBLE (MV_FLAG|PT_DOUBLE)
+#define PT_MV_CURRENCY (MV_FLAG|PT_CURRENCY)
+#define PT_MV_APPTIME (MV_FLAG|PT_APPTIME)
+#define PT_MV_SYSTIME (MV_FLAG|PT_SYSTIME)
+#define PT_MV_STRING8 (MV_FLAG|PT_STRING8)
+#define PT_MV_BINARY (MV_FLAG|PT_BINARY)
+#define PT_MV_UNICODE (MV_FLAG|PT_UNICODE)
+#define PT_MV_CLSID (MV_FLAG|PT_CLSID)
+#define PT_MV_I8 (MV_FLAG|PT_I8)
+
+/* Alternate property type names for ease of use */
+#define PT_MV_SHORT PT_MV_I2
+#define PT_MV_I4 PT_MV_LONG
+#define PT_MV_FLOAT PT_MV_R4
+#define PT_MV_R8 PT_MV_DOUBLE
+#define PT_MV_LONGLONG PT_MV_I8
+
+/*
+ * Property type reserved bits
+ *
+ * MV_INSTANCE is used as a flag in table operations to request
+ * that a multi-valued property be presented as a single-valued
+ * property appearing in multiple rows.
+ */
+
+#define MV_INSTANCE 0x2000
+#define MVI_FLAG (MV_FLAG | MV_INSTANCE)
+#define MVI_PROP(tag) ((tag) | MVI_FLAG)
+
+/* --------------- */
+/* Data Structures */
+/* --------------- */
+
+/* Property Tag Array */
+
+typedef struct _SPropTagArray
+{
+ ULONG cValues;
+ ULONG aulPropTag[MAPI_DIM];
+} SPropTagArray, FAR * LPSPropTagArray;
+
+#define CbNewSPropTagArray(_ctag) \
+ (offsetof(SPropTagArray,aulPropTag) + (_ctag)*sizeof(ULONG))
+#define CbSPropTagArray(_lparray) \
+ (offsetof(SPropTagArray,aulPropTag) + \
+ (UINT)((_lparray)->cValues)*sizeof(ULONG))
+/* SPropTagArray */
+#define SizedSPropTagArray(_ctag, _name) \
+struct _SPropTagArray_ ## _name \
+{ \
+ ULONG cValues; \
+ ULONG aulPropTag[_ctag]; \
+} _name
+
+/* -------------- */
+/* Property Value */
+/* -------------- */
+
+typedef struct _SPropValue SPropValue;
+
+
+/* 32-bit CURRENCY definition stolen from oaidl.h */
+/* 16-bit CURRENCY definition stolen from variant.h */
+
+#ifndef _tagCY_DEFINED
+#define _tagCY_DEFINED
+#define _CY_DEFINED
+#if (defined (WIN16) || defined (DOS)) && !defined (_VARIANT_H_)
+typedef struct FARSTRUCT tagCY {
+#ifdef _MAC
+ long Hi;
+ long Lo;
+#else
+ unsigned long Lo;
+ long Hi;
+#endif
+} CY;
+#elif defined (_WIN32)
+/* real definition that makes the C++ compiler happy */
+typedef union tagCY {
+ struct {
+#ifdef _MAC
+ long Hi;
+ long Lo;
+#else
+ unsigned long Lo;
+ long Hi;
+#endif
+ };
+ LONGLONG int64;
+} CY;
+#endif /* 16-bit vs 32-bit definition */
+#endif
+ /* size is 8 */
+typedef CY CURRENCY;
+
+typedef struct _SBinary
+{
+ ULONG cb;
+ LPBYTE lpb;
+} SBinary, FAR *LPSBinary;
+
+typedef struct _SShortArray
+{
+ ULONG cValues;
+ short int FAR *lpi;
+} SShortArray;
+
+typedef struct _SGuidArray
+{
+ ULONG cValues;
+ GUID FAR *lpguid;
+} SGuidArray;
+
+typedef struct _SRealArray
+{
+ ULONG cValues;
+ float FAR *lpflt;
+} SRealArray;
+
+typedef struct _SLongArray
+{
+ ULONG cValues;
+ LONG FAR *lpl;
+} SLongArray;
+
+typedef struct _SLargeIntegerArray
+{
+ ULONG cValues;
+ LARGE_INTEGER FAR *lpli;
+} SLargeIntegerArray;
+
+typedef struct _SDateTimeArray
+{
+ ULONG cValues;
+ FILETIME FAR *lpft;
+} SDateTimeArray;
+
+typedef struct _SAppTimeArray
+{
+ ULONG cValues;
+ double FAR *lpat;
+} SAppTimeArray;
+
+typedef struct _SCurrencyArray
+{
+ ULONG cValues;
+ CURRENCY FAR *lpcur;
+} SCurrencyArray;
+
+typedef struct _SBinaryArray
+{
+ ULONG cValues;
+ SBinary FAR *lpbin;
+} SBinaryArray;
+
+typedef struct _SDoubleArray
+{
+ ULONG cValues;
+ double FAR *lpdbl;
+} SDoubleArray;
+
+typedef struct _SWStringArray
+{
+ ULONG cValues;
+ LPWSTR FAR *lppszW;
+} SWStringArray;
+
+typedef struct _SLPSTRArray
+{
+ ULONG cValues;
+ LPSTR FAR *lppszA;
+} SLPSTRArray;
+
+typedef union _PV
+{
+ short int i; /* case PT_I2 */
+ LONG l; /* case PT_LONG */
+ ULONG ul; /* alias for PT_LONG */
+ float flt; /* case PT_R4 */
+ double dbl; /* case PT_DOUBLE */
+ unsigned short int b; /* case PT_BOOLEAN */
+ CURRENCY cur; /* case PT_CURRENCY */
+ double at; /* case PT_APPTIME */
+ FILETIME ft; /* case PT_SYSTIME */
+ LPSTR lpszA; /* case PT_STRING8 */
+ SBinary bin; /* case PT_BINARY */
+ LPWSTR lpszW; /* case PT_UNICODE */
+ LPGUID lpguid; /* case PT_CLSID */
+ LARGE_INTEGER li; /* case PT_I8 */
+ SShortArray MVi; /* case PT_MV_I2 */
+ SLongArray MVl; /* case PT_MV_LONG */
+ SRealArray MVflt; /* case PT_MV_R4 */
+ SDoubleArray MVdbl; /* case PT_MV_DOUBLE */
+ SCurrencyArray MVcur; /* case PT_MV_CURRENCY */
+ SAppTimeArray MVat; /* case PT_MV_APPTIME */
+ SDateTimeArray MVft; /* case PT_MV_SYSTIME */
+ SBinaryArray MVbin; /* case PT_MV_BINARY */
+ SLPSTRArray MVszA; /* case PT_MV_STRING8 */
+ SWStringArray MVszW; /* case PT_MV_UNICODE */
+ SGuidArray MVguid; /* case PT_MV_CLSID */
+ SLargeIntegerArray MVli; /* case PT_MV_I8 */
+ SCODE err; /* case PT_ERROR */
+ LONG x; /* case PT_NULL, PT_OBJECT (no usable value) */
+} __UPV;
+
+typedef struct _SPropValue
+{
+ ULONG ulPropTag;
+ ULONG dwAlignPad;
+ union _PV Value;
+} SPropValue, FAR * LPSPropValue;
+
+
+/* --------------------------------------------- */
+/* Property Problem and Property Problem Arrays */
+/* --------------------------------------------- */
+
+typedef struct _SPropProblem
+{
+ ULONG ulIndex;
+ ULONG ulPropTag;
+ SCODE scode;
+} SPropProblem, FAR * LPSPropProblem;
+
+typedef struct _SPropProblemArray
+{
+ ULONG cProblem;
+ SPropProblem aProblem[MAPI_DIM];
+} SPropProblemArray, FAR * LPSPropProblemArray;
+
+#define CbNewSPropProblemArray(_cprob) \
+ (offsetof(SPropProblemArray,aProblem) + (_cprob)*sizeof(SPropProblem))
+#define CbSPropProblemArray(_lparray) \
+ (offsetof(SPropProblemArray,aProblem) + \
+ (UINT) ((_lparray)->cProblem*sizeof(SPropProblem)))
+#define SizedSPropProblemArray(_cprob, _name) \
+struct _SPropProblemArray_ ## _name \
+{ \
+ ULONG cProblem; \
+ SPropProblem aProblem[_cprob]; \
+} _name
+
+/*
+ * ENTRYLIST
+ */
+
+typedef SBinaryArray ENTRYLIST, FAR *LPENTRYLIST;
+
+/*
+ * FLATENTRYLIST
+ * MTSID
+ * FLATMTSIDLIST
+ */
+
+typedef struct {
+ ULONG cb;
+ BYTE abEntry[MAPI_DIM];
+} FLATENTRY, FAR *LPFLATENTRY;
+
+typedef struct {
+ ULONG cEntries;
+ ULONG cbEntries;
+ BYTE abEntries[MAPI_DIM];
+} FLATENTRYLIST, FAR *LPFLATENTRYLIST;
+
+typedef struct {
+ ULONG cb;
+ BYTE ab[MAPI_DIM];
+} MTSID, FAR *LPMTSID;
+
+typedef struct {
+ ULONG cMTSIDs;
+ ULONG cbMTSIDs;
+ BYTE abMTSIDs[MAPI_DIM];
+} FLATMTSIDLIST, FAR *LPFLATMTSIDLIST;
+
+#define CbNewFLATENTRY(_cb) (offsetof(FLATENTRY,abEntry) + (_cb))
+#define CbFLATENTRY(_lpentry) (offsetof(FLATENTRY,abEntry) + (_lpentry)->cb)
+#define CbNewFLATENTRYLIST(_cb) (offsetof(FLATENTRYLIST,abEntries) + (_cb))
+#define CbFLATENTRYLIST(_lplist) (offsetof(FLATENTRYLIST,abEntries) + (_lplist)->cbEntries)
+#define CbNewMTSID(_cb) (offsetof(MTSID,ab) + (_cb))
+#define CbMTSID(_lpentry) (offsetof(MTSID,ab) + (_lpentry)->cb)
+#define CbNewFLATMTSIDLIST(_cb) (offsetof(FLATMTSIDLIST,abMTSIDs) + (_cb))
+#define CbFLATMTSIDLIST(_lplist) (offsetof(FLATMTSIDLIST,abMTSIDs) + (_lplist)->cbMTSIDs)
+/* No SizedXXX macros for these types. */
+
+/* ------------------------------ */
+/* ADRENTRY, ADRLIST */
+
+typedef struct _ADRENTRY
+{
+ ULONG ulReserved1; /* Never used */
+ ULONG cValues;
+ LPSPropValue rgPropVals;
+} ADRENTRY, FAR * LPADRENTRY;
+
+typedef struct _ADRLIST
+{
+ ULONG cEntries;
+ ADRENTRY aEntries[MAPI_DIM];
+} ADRLIST, FAR * LPADRLIST;
+
+#define CbNewADRLIST(_centries) \
+ (offsetof(ADRLIST,aEntries) + (_centries)*sizeof(ADRENTRY))
+#define CbADRLIST(_lpadrlist) \
+ (offsetof(ADRLIST,aEntries) + (UINT)(_lpadrlist)->cEntries*sizeof(ADRENTRY))
+#define SizedADRLIST(_centries, _name) \
+struct _ADRLIST_ ## _name \
+{ \
+ ULONG cEntries; \
+ ADRENTRY aEntries[_centries]; \
+} _name
+
+/* ------------------------------ */
+/* SRow, SRowSet */
+
+typedef struct _SRow
+{
+ ULONG ulAdrEntryPad; /* Pad so SRow's can map to ADRENTRY's */
+ ULONG cValues; /* Count of property values */
+ LPSPropValue lpProps; /* Property value array */
+} SRow, FAR * LPSRow;
+
+typedef struct _SRowSet
+{
+ ULONG cRows; /* Count of rows */
+ SRow aRow[MAPI_DIM]; /* Array of rows */
+} SRowSet, FAR * LPSRowSet;
+
+#define CbNewSRowSet(_crow) (offsetof(SRowSet,aRow) + (_crow)*sizeof(SRow))
+#define CbSRowSet(_lprowset) (offsetof(SRowSet,aRow) + \
+ (UINT)((_lprowset)->cRows*sizeof(SRow)))
+#define SizedSRowSet(_crow, _name) \
+struct _SRowSet_ ## _name \
+{ \
+ ULONG cRows; \
+ SRow aRow[_crow]; \
+} _name
+
+/* MAPI Allocation Routines ------------------------------------------------ */
+
+typedef SCODE (STDMETHODCALLTYPE ALLOCATEBUFFER)(
+ ULONG cbSize,
+ LPVOID FAR * lppBuffer
+);
+
+typedef SCODE (STDMETHODCALLTYPE ALLOCATEMORE)(
+ ULONG cbSize,
+ LPVOID lpObject,
+ LPVOID FAR * lppBuffer
+);
+
+typedef ULONG (STDAPICALLTYPE FREEBUFFER)(
+ LPVOID lpBuffer
+);
+
+typedef ALLOCATEBUFFER FAR *LPALLOCATEBUFFER;
+typedef ALLOCATEMORE FAR * LPALLOCATEMORE;
+typedef FREEBUFFER FAR * LPFREEBUFFER;
+
+/* MAPI Component Object Model Macros -------------------------------------- */
+
+#if defined(MAPI_IF) && (!defined(__cplusplus) || defined(CINTERFACE))
+#define DECLARE_MAPI_INTERFACE(iface) \
+ typedef struct iface##Vtbl iface##Vtbl, FAR * iface; \
+ struct iface##Vtbl
+#define DECLARE_MAPI_INTERFACE_(iface, baseiface) \
+ DECLARE_MAPI_INTERFACE(iface)
+#define DECLARE_MAPI_INTERFACE_PTR(iface, piface) \
+ typedef struct iface##Vtbl iface##Vtbl, FAR * iface, FAR * FAR * piface;
+#else
+#define DECLARE_MAPI_INTERFACE(iface) \
+ DECLARE_INTERFACE(iface)
+#define DECLARE_MAPI_INTERFACE_(iface, baseiface) \
+ DECLARE_INTERFACE_(iface, baseiface)
+#ifdef __cplusplus
+#define DECLARE_MAPI_INTERFACE_PTR(iface, piface) \
+ interface iface; typedef iface FAR * piface
+#else
+#define DECLARE_MAPI_INTERFACE_PTR(iface, piface) \
+ typedef interface iface iface, FAR * piface
+#endif
+#endif
+
+#define MAPIMETHOD(method) MAPIMETHOD_(HRESULT, method)
+#define MAPIMETHOD_(type, method) STDMETHOD_(type, method)
+#define MAPIMETHOD_DECLARE(type, method, prefix) \
+ STDMETHODIMP_(type) prefix##method
+#define MAPIMETHOD_TYPEDEF(type, method, prefix) \
+ typedef type (STDMETHODCALLTYPE prefix##method##_METHOD)
+
+#define MAPI_IUNKNOWN_METHODS(IPURE) \
+ MAPIMETHOD(QueryInterface) \
+ (THIS_ REFIID riid, LPVOID FAR * ppvObj) IPURE; \
+ MAPIMETHOD_(ULONG,AddRef) (THIS) IPURE; \
+ MAPIMETHOD_(ULONG,Release) (THIS) IPURE; \
+
+#undef IMPL
+#define IMPL
+
+/* Pointers to MAPI Interfaces --------------------------------------------- */
+
+typedef const IID FAR * LPCIID;
+
+DECLARE_MAPI_INTERFACE_PTR(IMsgStore, LPMDB);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIFolder, LPMAPIFOLDER);
+DECLARE_MAPI_INTERFACE_PTR(IMessage, LPMESSAGE);
+DECLARE_MAPI_INTERFACE_PTR(IAttach, LPATTACH);
+DECLARE_MAPI_INTERFACE_PTR(IAddrBook, LPADRBOOK);
+DECLARE_MAPI_INTERFACE_PTR(IABContainer, LPABCONT);
+DECLARE_MAPI_INTERFACE_PTR(IMailUser, LPMAILUSER);
+DECLARE_MAPI_INTERFACE_PTR(IDistList, LPDISTLIST);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIStatus, LPMAPISTATUS);
+DECLARE_MAPI_INTERFACE_PTR(IMAPITable, LPMAPITABLE);
+DECLARE_MAPI_INTERFACE_PTR(IProfSect, LPPROFSECT);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIProp, LPMAPIPROP);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIContainer, LPMAPICONTAINER);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIAdviseSink, LPMAPIADVISESINK);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIProgress, LPMAPIPROGRESS);
+DECLARE_MAPI_INTERFACE_PTR(IProviderAdmin, LPPROVIDERADMIN);
+
+/* Extended MAPI Error Information ----------------------------------------- */
+
+typedef struct _MAPIERROR
+{
+ ULONG ulVersion;
+ LPTSTR lpszError;
+ LPTSTR lpszComponent;
+ ULONG ulLowLevelError;
+ ULONG ulContext;
+
+} MAPIERROR, FAR * LPMAPIERROR;
+
+
+/* IMAPIAdviseSink Interface ----------------------------------------------- */
+
+/*
+ * Notification event types. The event types can be combined in a bitmask
+ * for filtering. Each one has a parameter structure associated with it:
+ *
+ * fnevCriticalError ERROR_NOTIFICATION
+ * fnevNewMail NEWMAIL_NOTIFICATION
+ * fnevObjectCreated OBJECT_NOTIFICATION
+ * fnevObjectDeleted OBJECT_NOTIFICATION
+ * fnevObjectModified OBJECT_NOTIFICATION
+ * fnevObjectCopied OBJECT_NOTIFICATION
+ * fnevSearchComplete OBJECT_NOTIFICATION
+ * fnevTableModified TABLE_NOTIFICATION
+ * fnevStatusObjectModified ?
+ *
+ * fnevExtended EXTENDED_NOTIFICATION
+ */
+
+#define fnevCriticalError ((ULONG) 0x00000001)
+#define fnevNewMail ((ULONG) 0x00000002)
+#define fnevObjectCreated ((ULONG) 0x00000004)
+#define fnevObjectDeleted ((ULONG) 0x00000008)
+#define fnevObjectModified ((ULONG) 0x00000010)
+#define fnevObjectMoved ((ULONG) 0x00000020)
+#define fnevObjectCopied ((ULONG) 0x00000040)
+#define fnevSearchComplete ((ULONG) 0x00000080)
+#define fnevTableModified ((ULONG) 0x00000100)
+#define fnevStatusObjectModified ((ULONG) 0x00000200)
+#define fnevReservedForMapi ((ULONG) 0x40000000)
+#define fnevExtended ((ULONG) 0x80000000)
+
+/* TABLE_NOTIFICATION event types passed in ulTableEvent */
+
+#define TABLE_CHANGED 1
+#define TABLE_ERROR 2
+#define TABLE_ROW_ADDED 3
+#define TABLE_ROW_DELETED 4
+#define TABLE_ROW_MODIFIED 5
+#define TABLE_SORT_DONE 6
+#define TABLE_RESTRICT_DONE 7
+#define TABLE_SETCOL_DONE 8
+#define TABLE_RELOAD 9
+
+/* Event Structures */
+
+typedef struct _ERROR_NOTIFICATION
+{
+ ULONG cbEntryID;
+ LPENTRYID lpEntryID;
+ SCODE scode;
+ ULONG ulFlags; /* 0 or MAPI_UNICODE */
+ LPMAPIERROR lpMAPIError; /* Detailed error information */
+} ERROR_NOTIFICATION;
+
+typedef struct _NEWMAIL_NOTIFICATION
+{
+ ULONG cbEntryID;
+ LPENTRYID lpEntryID; /* identifies the new message */
+ ULONG cbParentID;
+ LPENTRYID lpParentID; /* identifies the folder it lives in */
+ ULONG ulFlags; /* 0 or MAPI_UNICODE */
+ LPTSTR lpszMessageClass; /* message class (UNICODE or string8) */
+ ULONG ulMessageFlags; /* copy of PR_MESSAGE_FLAGS */
+} NEWMAIL_NOTIFICATION;
+
+typedef struct _OBJECT_NOTIFICATION
+{
+ ULONG cbEntryID;
+ LPENTRYID lpEntryID; /* EntryID of object */
+ ULONG ulObjType; /* Type of object */
+ ULONG cbParentID;
+ LPENTRYID lpParentID; /* EntryID of parent object */
+ ULONG cbOldID;
+ LPENTRYID lpOldID; /* EntryID of old object */
+ ULONG cbOldParentID;
+ LPENTRYID lpOldParentID; /* EntryID of old parent */
+ LPSPropTagArray lpPropTagArray;
+} OBJECT_NOTIFICATION;
+
+typedef struct _TABLE_NOTIFICATION
+{
+ ULONG ulTableEvent; /* Identifies WHICH table event */
+ HRESULT hResult; /* Value for TABLE_ERROR */
+ SPropValue propIndex; /* This row's "index property" */
+ SPropValue propPrior; /* Preceding row's "index property" */
+ SRow row; /* New data of added/modified row */
+ ULONG ulPad; /* Force to 8-byte boundary */
+} TABLE_NOTIFICATION;
+
+typedef struct _EXTENDED_NOTIFICATION
+{
+ ULONG ulEvent; /* extended event code */
+ ULONG cb; /* size of event parameters */
+ LPBYTE pbEventParameters; /* event parameters */
+} EXTENDED_NOTIFICATION;
+
+typedef struct
+{
+ ULONG cbEntryID;
+ LPENTRYID lpEntryID;
+ ULONG cValues;
+ LPSPropValue lpPropVals;
+} STATUS_OBJECT_NOTIFICATION;
+
+typedef struct _NOTIFICATION
+{
+ ULONG ulEventType; /* notification type, i.e. fnevSomething */
+ ULONG ulAlignPad; /* Force to 8-byte boundary */
+ union
+ {
+ ERROR_NOTIFICATION err;
+ NEWMAIL_NOTIFICATION newmail;
+ OBJECT_NOTIFICATION obj;
+ TABLE_NOTIFICATION tab;
+ EXTENDED_NOTIFICATION ext;
+ STATUS_OBJECT_NOTIFICATION statobj;
+ } info;
+} NOTIFICATION, FAR * LPNOTIFICATION;
+
+
+/* Interface used for registering and issuing notification callbacks. */
+
+#define MAPI_IMAPIADVISESINK_METHODS(IPURE) \
+ MAPIMETHOD_(ULONG, OnNotify) \
+ (THIS_ ULONG cNotif, \
+ LPNOTIFICATION lpNotifications) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIAdviseSink
+DECLARE_MAPI_INTERFACE_(IMAPIAdviseSink, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIADVISESINK_METHODS(PURE)
+};
+
+/* Callback function type for MAPIAllocAdviseSink */
+
+typedef long (STDAPICALLTYPE NOTIFCALLBACK) (
+ LPVOID lpvContext,
+ ULONG cNotification,
+ LPNOTIFICATION lpNotifications);
+typedef NOTIFCALLBACK FAR * LPNOTIFCALLBACK;
+
+/*
+ * Message name for the 16-bit MAPI notififcation engine.
+ * This can be used in 16-bit applications to force processing
+ * of notification callbacks.
+ */
+
+#define szMAPINotificationMsg "MAPI Notify window message"
+
+
+/* IMAPIProgress Interface ------------------------------------------------- */
+
+/* Flag values for the progress indicator */
+
+#define MAPI_TOP_LEVEL ((ULONG) 0x00000001)
+
+#define MAPI_IMAPIPROGRESS_METHODS(IPURE) \
+ MAPIMETHOD(Progress) \
+ (THIS_ ULONG ulValue, \
+ ULONG ulCount, \
+ ULONG ulTotal) IPURE; \
+ MAPIMETHOD(GetFlags) \
+ (THIS_ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(GetMax) \
+ (THIS_ ULONG FAR * lpulMax) IPURE; \
+ MAPIMETHOD(GetMin) \
+ (THIS_ ULONG FAR * lpulMin) IPURE; \
+ MAPIMETHOD(SetLimits) \
+ (THIS_ LPULONG lpulMin, \
+ LPULONG lpulMax, \
+ LPULONG lpulFlags) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIProgress
+DECLARE_MAPI_INTERFACE_(IMAPIProgress, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROGRESS_METHODS(PURE)
+};
+
+
+/* IMAPIProp Interface ----------------------------------------------------- */
+
+/* GetLastError */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/*
+ * Version:
+ */
+#define MAPI_ERROR_VERSION 0x00000000L
+
+/* GetPropList */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/* GetProps */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/* SaveChanges */
+
+#define KEEP_OPEN_READONLY ((ULONG) 0x00000001)
+#define KEEP_OPEN_READWRITE ((ULONG) 0x00000002)
+#define FORCE_SAVE ((ULONG) 0x00000004)
+/* define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+
+/* OpenProperty - ulFlags */
+/****** MAPI_MODIFY ((ULONG) 0x00000001) above */
+#define MAPI_CREATE ((ULONG) 0x00000002)
+#define STREAM_APPEND ((ULONG) 0x00000004)
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+
+/* OpenProperty - ulInterfaceOptions, IID_IMAPITable */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/* CopyTo, CopyProps */
+
+#define MAPI_MOVE ((ULONG) 0x00000001)
+#define MAPI_NOREPLACE ((ULONG) 0x00000002)
+#define MAPI_DECLINE_OK ((ULONG) 0x00000004)
+
+#ifndef MAPI_DIALOG /* also defined in mapi.h */
+#define MAPI_DIALOG ((ULONG) 0x00000008)
+#endif
+
+#ifndef MAPI_USE_DEFAULT /* also defined in mapi.h */
+#define MAPI_USE_DEFAULT 0x00000040 /* Use default profile in logon */
+#endif
+
+/* Flags used in GetIDsFromNames */
+/****** MAPI_CREATE ((ULONG) 0x00000002) above */
+
+/* Flags used in GetNamesFromIDs (bit fields) */
+#define MAPI_NO_STRINGS ((ULONG) 0x00000001)
+#define MAPI_NO_IDS ((ULONG) 0x00000002)
+
+/* Union discriminator */
+#define MNID_ID 0
+#define MNID_STRING 1
+typedef struct _MAPINAMEID
+{
+ LPGUID lpguid;
+ ULONG ulKind;
+ union {
+ LONG lID;
+ LPWSTR lpwstrName;
+ } Kind;
+
+} MAPINAMEID, FAR * LPMAPINAMEID;
+
+#define MAPI_IMAPIPROP_METHODS(IPURE) \
+ MAPIMETHOD(GetLastError) \
+ (THIS_ HRESULT hResult, \
+ ULONG ulFlags, \
+ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+ MAPIMETHOD(SaveChanges) \
+ (THIS_ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(GetProps) \
+ (THIS_ LPSPropTagArray lpPropTagArray, \
+ ULONG ulFlags, \
+ ULONG FAR * lpcValues, \
+ LPSPropValue FAR * lppPropArray) IPURE; \
+ MAPIMETHOD(GetPropList) \
+ (THIS_ ULONG ulFlags, \
+ LPSPropTagArray FAR * lppPropTagArray) IPURE; \
+ MAPIMETHOD(OpenProperty) \
+ (THIS_ ULONG ulPropTag, \
+ LPCIID lpiid, \
+ ULONG ulInterfaceOptions, \
+ ULONG ulFlags, \
+ LPUNKNOWN FAR * lppUnk) IPURE; \
+ MAPIMETHOD(SetProps) \
+ (THIS_ ULONG cValues, \
+ LPSPropValue lpPropArray, \
+ LPSPropProblemArray FAR * lppProblems) IPURE; \
+ MAPIMETHOD(DeleteProps) \
+ (THIS_ LPSPropTagArray lpPropTagArray, \
+ LPSPropProblemArray FAR * lppProblems) IPURE; \
+ MAPIMETHOD(CopyTo) \
+ (THIS_ ULONG ciidExclude, \
+ LPCIID rgiidExclude, \
+ LPSPropTagArray lpExcludeProps, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ LPCIID lpInterface, \
+ LPVOID lpDestObj, \
+ ULONG ulFlags, \
+ LPSPropProblemArray FAR * lppProblems) IPURE; \
+ MAPIMETHOD(CopyProps) \
+ (THIS_ LPSPropTagArray lpIncludeProps, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ LPCIID lpInterface, \
+ LPVOID lpDestObj, \
+ ULONG ulFlags, \
+ LPSPropProblemArray FAR * lppProblems) IPURE; \
+ MAPIMETHOD(GetNamesFromIDs) \
+ (THIS_ LPSPropTagArray FAR * lppPropTags, \
+ LPGUID lpPropSetGuid, \
+ ULONG ulFlags, \
+ ULONG FAR * lpcPropNames, \
+ LPMAPINAMEID FAR * FAR * lpppPropNames) IPURE; \
+ MAPIMETHOD(GetIDsFromNames) \
+ (THIS_ ULONG cPropNames, \
+ LPMAPINAMEID FAR * lppPropNames, \
+ ULONG ulFlags, \
+ LPSPropTagArray FAR * lppPropTags) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIProp
+DECLARE_MAPI_INTERFACE_(IMAPIProp, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+};
+
+/* IMAPITable Interface ---------------------------------------------------- */
+
+/* Table status */
+
+#define TBLSTAT_COMPLETE ((ULONG) 0)
+#define TBLSTAT_QCHANGED ((ULONG) 7)
+#define TBLSTAT_SORTING ((ULONG) 9)
+#define TBLSTAT_SORT_ERROR ((ULONG) 10)
+#define TBLSTAT_SETTING_COLS ((ULONG) 11)
+#define TBLSTAT_SETCOL_ERROR ((ULONG) 13)
+#define TBLSTAT_RESTRICTING ((ULONG) 14)
+#define TBLSTAT_RESTRICT_ERROR ((ULONG) 15)
+
+
+/* Table Type */
+
+#define TBLTYPE_SNAPSHOT ((ULONG) 0)
+#define TBLTYPE_KEYSET ((ULONG) 1)
+#define TBLTYPE_DYNAMIC ((ULONG) 2)
+
+
+/* Sort order */
+
+/* bit 0: set if descending, clear if ascending */
+
+#define TABLE_SORT_ASCEND ((ULONG) 0x00000000)
+#define TABLE_SORT_DESCEND ((ULONG) 0x00000001)
+#define TABLE_SORT_COMBINE ((ULONG) 0x00000002)
+
+
+/* Data structures */
+
+typedef struct _SSortOrder
+{
+ ULONG ulPropTag; /* Column to sort on */
+ ULONG ulOrder; /* Ascending, descending, combine to left */
+} SSortOrder, FAR * LPSSortOrder;
+
+typedef struct _SSortOrderSet
+{
+ ULONG cSorts; /* Number of sort columns in aSort below*/
+ ULONG cCategories; /* 0 for non-categorized, up to cSorts */
+ ULONG cExpanded; /* 0 if no categories start expanded, */
+ /* up to cExpanded */
+ SSortOrder aSort[MAPI_DIM]; /* The sort orders */
+} SSortOrderSet, FAR * LPSSortOrderSet;
+
+#define CbNewSSortOrderSet(_csort) \
+ (offsetof(SSortOrderSet,aSort) + (_csort)*sizeof(SSortOrder))
+#define CbSSortOrderSet(_lpset) \
+ (offsetof(SSortOrderSet,aSort) + \
+ (UINT)((_lpset)->cSorts*sizeof(SSortOrder)))
+#define SizedSSortOrderSet(_csort, _name) \
+struct _SSortOrderSet_ ## _name \
+{ \
+ ULONG cSorts; \
+ ULONG cCategories; \
+ ULONG cExpanded; \
+ SSortOrder aSort[_csort]; \
+} _name
+
+typedef ULONG BOOKMARK;
+
+#define BOOKMARK_BEGINNING ((BOOKMARK) 0) /* Before first row */
+#define BOOKMARK_CURRENT ((BOOKMARK) 1) /* Before current row */
+#define BOOKMARK_END ((BOOKMARK) 2) /* After last row */
+
+/* Fuzzy Level */
+
+#define FL_FULLSTRING ((ULONG) 0x00000000)
+#define FL_SUBSTRING ((ULONG) 0x00000001)
+#define FL_PREFIX ((ULONG) 0x00000002)
+
+#define FL_IGNORECASE ((ULONG) 0x00010000)
+#define FL_IGNORENONSPACE ((ULONG) 0x00020000)
+#define FL_LOOSE ((ULONG) 0x00040000)
+
+/* Restrictions */
+
+typedef struct _SRestriction FAR * LPSRestriction;
+
+/* Restriction types */
+
+#define RES_AND ((ULONG) 0x00000000)
+#define RES_OR ((ULONG) 0x00000001)
+#define RES_NOT ((ULONG) 0x00000002)
+#define RES_CONTENT ((ULONG) 0x00000003)
+#define RES_PROPERTY ((ULONG) 0x00000004)
+#define RES_COMPAREPROPS ((ULONG) 0x00000005)
+#define RES_BITMASK ((ULONG) 0x00000006)
+#define RES_SIZE ((ULONG) 0x00000007)
+#define RES_EXIST ((ULONG) 0x00000008)
+#define RES_SUBRESTRICTION ((ULONG) 0x00000009)
+#define RES_COMMENT ((ULONG) 0x0000000A)
+
+/* Relational operators. These apply to all property comparison restrictions. */
+
+#define RELOP_LT ((ULONG) 0) /* < */
+#define RELOP_LE ((ULONG) 1) /* <= */
+#define RELOP_GT ((ULONG) 2) /* > */
+#define RELOP_GE ((ULONG) 3) /* >= */
+#define RELOP_EQ ((ULONG) 4) /* == */
+#define RELOP_NE ((ULONG) 5) /* != */
+#define RELOP_RE ((ULONG) 6) /* LIKE (Regular expression) */
+
+/* Bitmask operators, for RES_BITMASK only. */
+
+#define BMR_EQZ ((ULONG) 0) /* ==0 */
+#define BMR_NEZ ((ULONG) 1) /* !=0 */
+
+/* Subobject identifiers for RES_SUBRESTRICTION only. See MAPITAGS.H. */
+
+/* #define PR_MESSAGE_RECIPIENTS PROP_TAG(PT_OBJECT,0x0E12) */
+/* #define PR_MESSAGE_ATTACHMENTS PROP_TAG(PT_OBJECT,0x0E13) */
+
+typedef struct _SAndRestriction
+{
+ ULONG cRes;
+ LPSRestriction lpRes;
+} SAndRestriction;
+
+typedef struct _SOrRestriction
+{
+ ULONG cRes;
+ LPSRestriction lpRes;
+} SOrRestriction;
+
+typedef struct _SNotRestriction
+{
+ ULONG ulReserved;
+ LPSRestriction lpRes;
+} SNotRestriction;
+
+typedef struct _SContentRestriction
+{
+ ULONG ulFuzzyLevel;
+ ULONG ulPropTag;
+ LPSPropValue lpProp;
+} SContentRestriction;
+
+typedef struct _SBitMaskRestriction
+{
+ ULONG relBMR;
+ ULONG ulPropTag;
+ ULONG ulMask;
+} SBitMaskRestriction;
+
+typedef struct _SPropertyRestriction
+{
+ ULONG relop;
+ ULONG ulPropTag;
+ LPSPropValue lpProp;
+} SPropertyRestriction;
+
+typedef struct _SComparePropsRestriction
+{
+ ULONG relop;
+ ULONG ulPropTag1;
+ ULONG ulPropTag2;
+} SComparePropsRestriction;
+
+typedef struct _SSizeRestriction
+{
+ ULONG relop;
+ ULONG ulPropTag;
+ ULONG cb;
+} SSizeRestriction;
+
+typedef struct _SExistRestriction
+{
+ ULONG ulReserved1;
+ ULONG ulPropTag;
+ ULONG ulReserved2;
+} SExistRestriction;
+
+typedef struct _SSubRestriction
+{
+ ULONG ulSubObject;
+ LPSRestriction lpRes;
+} SSubRestriction;
+
+typedef struct _SCommentRestriction
+{
+ ULONG cValues; /* # of properties in lpProp */
+ LPSRestriction lpRes;
+ LPSPropValue lpProp;
+} SCommentRestriction;
+
+typedef struct _SRestriction
+{
+ ULONG rt; /* Restriction type */
+ union
+ {
+ SComparePropsRestriction resCompareProps; /* first */
+ SAndRestriction resAnd;
+ SOrRestriction resOr;
+ SNotRestriction resNot;
+ SContentRestriction resContent;
+ SPropertyRestriction resProperty;
+ SBitMaskRestriction resBitMask;
+ SSizeRestriction resSize;
+ SExistRestriction resExist;
+ SSubRestriction resSub;
+ SCommentRestriction resComment;
+ } res;
+} SRestriction;
+
+/* SComparePropsRestriction is first in the union so that */
+/* static initializations of 3-value restriction work. */
+
+/* Flags of the methods of IMAPITable */
+
+/* QueryColumn */
+
+#define TBL_ALL_COLUMNS ((ULONG) 0x00000001)
+
+/* QueryRows */
+/* Possible values for PR_ROW_TYPE (for categorization) */
+
+#define TBL_LEAF_ROW ((ULONG) 1)
+#define TBL_EMPTY_CATEGORY ((ULONG) 2)
+#define TBL_EXPANDED_CATEGORY ((ULONG) 3)
+#define TBL_COLLAPSED_CATEGORY ((ULONG) 4)
+
+/* Table wait flag */
+
+#define TBL_NOWAIT ((ULONG) 0x00000001)
+/* alternative name for TBL_NOWAIT */
+#define TBL_ASYNC ((ULONG) 0x00000001)
+#define TBL_BATCH ((ULONG) 0x00000002)
+
+/* FindRow */
+
+#define DIR_BACKWARD ((ULONG) 0x00000001)
+
+/* Table cursor states */
+
+#define TBL_NOADVANCE ((ULONG) 0x00000001)
+
+#define MAPI_IMAPITABLE_METHODS(IPURE) \
+ MAPIMETHOD(GetLastError) \
+ (THIS_ HRESULT hResult, \
+ ULONG ulFlags, \
+ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+ MAPIMETHOD(Advise) \
+ (THIS_ ULONG ulEventMask, \
+ LPMAPIADVISESINK lpAdviseSink, \
+ ULONG FAR * lpulConnection) IPURE; \
+ MAPIMETHOD(Unadvise) \
+ (THIS_ ULONG ulConnection) IPURE; \
+ MAPIMETHOD(GetStatus) \
+ (THIS_ ULONG FAR * lpulTableStatus, \
+ ULONG FAR * lpulTableType) IPURE; \
+ MAPIMETHOD(SetColumns) \
+ (THIS_ LPSPropTagArray lpPropTagArray, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(QueryColumns) \
+ (THIS_ ULONG ulFlags, \
+ LPSPropTagArray FAR * lpPropTagArray) IPURE; \
+ MAPIMETHOD(GetRowCount) \
+ (THIS_ ULONG ulFlags, \
+ ULONG FAR * lpulCount) IPURE; \
+ MAPIMETHOD(SeekRow) \
+ (THIS_ BOOKMARK bkOrigin, \
+ LONG lRowCount, \
+ LONG FAR * lplRowsSought) IPURE; \
+ MAPIMETHOD(SeekRowApprox) \
+ (THIS_ ULONG ulNumerator, \
+ ULONG ulDenominator) IPURE; \
+ MAPIMETHOD(QueryPosition) \
+ (THIS_ ULONG FAR * lpulRow, \
+ ULONG FAR * lpulNumerator, \
+ ULONG FAR * lpulDenominator) IPURE; \
+ MAPIMETHOD(FindRow) \
+ (THIS_ LPSRestriction lpRestriction, \
+ BOOKMARK bkOrigin, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(Restrict) \
+ (THIS_ LPSRestriction lpRestriction, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(CreateBookmark) \
+ (THIS_ BOOKMARK FAR * lpbkPosition) IPURE; \
+ MAPIMETHOD(FreeBookmark) \
+ (THIS_ BOOKMARK bkPosition) IPURE; \
+ MAPIMETHOD(SortTable) \
+ (THIS_ LPSSortOrderSet lpSortCriteria, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(QuerySortOrder) \
+ (THIS_ LPSSortOrderSet FAR * lppSortCriteria) IPURE; \
+ MAPIMETHOD(QueryRows) \
+ (THIS_ LONG lRowCount, \
+ ULONG ulFlags, \
+ LPSRowSet FAR * lppRows) IPURE; \
+ MAPIMETHOD(Abort) (THIS) IPURE; \
+ MAPIMETHOD(ExpandRow) \
+ (THIS_ ULONG cbInstanceKey, \
+ LPBYTE pbInstanceKey, \
+ ULONG ulRowCount, \
+ ULONG ulFlags, \
+ LPSRowSet FAR * lppRows, \
+ ULONG FAR * lpulMoreRows) IPURE; \
+ MAPIMETHOD(CollapseRow) \
+ (THIS_ ULONG cbInstanceKey, \
+ LPBYTE pbInstanceKey, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulRowCount) IPURE; \
+ MAPIMETHOD(WaitForCompletion) \
+ (THIS_ ULONG ulFlags, \
+ ULONG ulTimeout, \
+ ULONG FAR * lpulTableStatus) IPURE; \
+ MAPIMETHOD(GetCollapseState) \
+ (THIS_ ULONG ulFlags, \
+ ULONG cbInstanceKey, \
+ LPBYTE lpbInstanceKey, \
+ ULONG FAR * lpcbCollapseState, \
+ LPBYTE FAR * lppbCollapseState) IPURE; \
+ MAPIMETHOD(SetCollapseState) \
+ (THIS_ ULONG ulFlags, \
+ ULONG cbCollapseState, \
+ LPBYTE pbCollapseState, \
+ BOOKMARK FAR * lpbkLocation) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPITable
+DECLARE_MAPI_INTERFACE_(IMAPITable, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPITABLE_METHODS(PURE)
+};
+
+/* IProfSect Interface ----------------------------------------------------- */
+
+/* Standard section for public profile properties */
+
+#define PS_PROFILE_PROPERTIES_INIT \
+{ 0x98, 0x15, 0xAC, 0x08, 0xAA, 0xB0, 0x10, 0x1A, \
+ 0x8C, 0x93, 0x08, 0x00, 0x2B, 0x2A, 0x56, 0xC2 }
+
+
+#define MAPI_IPROFSECT_METHODS(IPURE)
+
+#undef INTERFACE
+#define INTERFACE IProfSect
+DECLARE_MAPI_INTERFACE_(IProfSect, IMAPIProp)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IPROFSECT_METHODS(PURE)
+};
+
+/* IMAPIStatus Interface --------------------------------------------------- */
+
+/* Values for PR_RESOURCE_TYPE, _METHODS, _FLAGS */
+
+#define MAPI_STORE_PROVIDER ((ULONG) 33) /* Message Store */
+#define MAPI_AB ((ULONG) 34) /* Address Book */
+#define MAPI_AB_PROVIDER ((ULONG) 35) /* Address Book Provider */
+#define MAPI_TRANSPORT_PROVIDER ((ULONG) 36) /* Transport Provider */
+#define MAPI_SPOOLER ((ULONG) 37) /* Message Spooler */
+#define MAPI_PROFILE_PROVIDER ((ULONG) 38) /* Profile Provider */
+#define MAPI_SUBSYSTEM ((ULONG) 39) /* Overall Subsystem Status */
+#define MAPI_HOOK_PROVIDER ((ULONG) 40) /* Spooler Hook */
+
+#define STATUS_VALIDATE_STATE ((ULONG) 0x00000001)
+#define STATUS_SETTINGS_DIALOG ((ULONG) 0x00000002)
+#define STATUS_CHANGE_PASSWORD ((ULONG) 0x00000004)
+#define STATUS_FLUSH_QUEUES ((ULONG) 0x00000008)
+
+#define STATUS_DEFAULT_OUTBOUND ((ULONG) 0x00000001)
+#define STATUS_DEFAULT_STORE ((ULONG) 0x00000002)
+#define STATUS_PRIMARY_IDENTITY ((ULONG) 0x00000004)
+#define STATUS_SIMPLE_STORE ((ULONG) 0x00000008)
+#define STATUS_XP_PREFER_LAST ((ULONG) 0x00000010)
+#define STATUS_NO_PRIMARY_IDENTITY ((ULONG) 0x00000020)
+#define STATUS_NO_DEFAULT_STORE ((ULONG) 0x00000040)
+#define STATUS_TEMP_SECTION ((ULONG) 0x00000080)
+#define STATUS_OWN_STORE ((ULONG) 0x00000100)
+/****** HOOK_INBOUND ((ULONG) 0x00000200) Defined in MAPIHOOK.H */
+/****** HOOK_OUTBOUND ((ULONG) 0x00000400) Defined in MAPIHOOK.H */
+#define STATUS_NEED_IPM_TREE ((ULONG) 0x00000800)
+#define STATUS_PRIMARY_STORE ((ULONG) 0x00001000)
+#define STATUS_SECONDARY_STORE ((ULONG) 0x00002000)
+
+
+/*
+ * PR_STATUS_CODE bit. Low 16 bits for common values; High 16 bits
+ * for provider type-specific values. (DCR 304)
+ */
+
+#define STATUS_AVAILABLE ((ULONG) 0x00000001)
+#define STATUS_OFFLINE ((ULONG) 0x00000002)
+#define STATUS_FAILURE ((ULONG) 0x00000004)
+
+/* Transport values of PR_STATUS_CODE */
+
+#define STATUS_INBOUND_ENABLED ((ULONG) 0x00010000)
+#define STATUS_INBOUND_ACTIVE ((ULONG) 0x00020000)
+#define STATUS_INBOUND_FLUSH ((ULONG) 0x00040000)
+#define STATUS_OUTBOUND_ENABLED ((ULONG) 0x00100000)
+#define STATUS_OUTBOUND_ACTIVE ((ULONG) 0x00200000)
+#define STATUS_OUTBOUND_FLUSH ((ULONG) 0x00400000)
+#define STATUS_REMOTE_ACCESS ((ULONG) 0x00800000)
+
+/* ValidateState flags */
+
+#define SUPPRESS_UI ((ULONG) 0x00000001)
+#define REFRESH_XP_HEADER_CACHE ((ULONG) 0x00010000)
+#define PROCESS_XP_HEADER_CACHE ((ULONG) 0x00020000)
+#define FORCE_XP_CONNECT ((ULONG) 0x00040000)
+#define FORCE_XP_DISCONNECT ((ULONG) 0x00080000)
+#define CONFIG_CHANGED ((ULONG) 0x00100000)
+#define ABORT_XP_HEADER_OPERATION ((ULONG) 0x00200000)
+#define SHOW_XP_SESSION_UI ((ULONG) 0x00400000)
+
+/* SettingsDialog flags */
+
+#define UI_READONLY ((ULONG) 0x00000001)
+
+/* FlushQueues flags */
+
+#define FLUSH_UPLOAD ((ULONG) 0x00000002)
+#define FLUSH_DOWNLOAD ((ULONG) 0x00000004)
+#define FLUSH_FORCE ((ULONG) 0x00000008)
+#define FLUSH_NO_UI ((ULONG) 0x00000010)
+#define FLUSH_ASYNC_OK ((ULONG) 0x00000020)
+
+#define MAPI_IMAPISTATUS_METHODS(IPURE) \
+ MAPIMETHOD(ValidateState) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(SettingsDialog) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(ChangePassword) \
+ (THIS_ LPTSTR lpOldPass, \
+ LPTSTR lpNewPass, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(FlushQueues) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG cbTargetTransport, \
+ LPENTRYID lpTargetTransport, \
+ ULONG ulFlags) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIStatus
+DECLARE_MAPI_INTERFACE_(IMAPIStatus, IMAPIProp)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IMAPISTATUS_METHODS(PURE)
+};
+
+/* IMAPIContainer Interface ------------------------------------------------ */
+
+/* Flags for OpenEntry() */
+
+/****** MAPI_MODIFY ((ULONG) 0x00000001) above */
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+#define MAPI_BEST_ACCESS ((ULONG) 0x00000010)
+
+/* GetContentsTable() */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+/****** MAPI_ASSOCIATED ((ULONG) 0x00000040) below */
+
+/* GetHierarchyTable() */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+#define CONVENIENT_DEPTH ((ULONG) 0x00000001)
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+
+/* GetSearchCriteria */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+#define SEARCH_RUNNING ((ULONG) 0x00000001)
+#define SEARCH_REBUILD ((ULONG) 0x00000002)
+#define SEARCH_RECURSIVE ((ULONG) 0x00000004)
+#define SEARCH_FOREGROUND ((ULONG) 0x00000008)
+
+/* SetSearchCriteria */
+#define STOP_SEARCH ((ULONG) 0x00000001)
+#define RESTART_SEARCH ((ULONG) 0x00000002)
+#define RECURSIVE_SEARCH ((ULONG) 0x00000004)
+#define SHALLOW_SEARCH ((ULONG) 0x00000008)
+#define FOREGROUND_SEARCH ((ULONG) 0x00000010)
+#define BACKGROUND_SEARCH ((ULONG) 0x00000020)
+
+#define MAPI_IMAPICONTAINER_METHODS(IPURE) \
+ MAPIMETHOD(GetContentsTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(GetHierarchyTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(OpenEntry) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulObjType, \
+ LPUNKNOWN FAR * lppUnk) IPURE; \
+ MAPIMETHOD(SetSearchCriteria) \
+ (THIS_ LPSRestriction lpRestriction, \
+ LPENTRYLIST lpContainerList, \
+ ULONG ulSearchFlags) IPURE; \
+ MAPIMETHOD(GetSearchCriteria) \
+ (THIS_ ULONG ulFlags, \
+ LPSRestriction FAR * lppRestriction, \
+ LPENTRYLIST FAR * lppContainerList, \
+ ULONG FAR * lpulSearchState)IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIContainer
+DECLARE_MAPI_INTERFACE_(IMAPIContainer, IMAPIProp)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IMAPICONTAINER_METHODS(PURE)
+};
+
+/* IABContainer Interface -------------------------------------------------- */
+
+/*
+ * IABContainer PR_CONTAINER_FLAGS values
+ * If AB_UNMODIFIABLE and AB_MODIFIABLE are both set, it means the container
+ * doesn't know if it's modifiable or not, and the client should
+ * try to modify the contents but we won't expect it to work.
+ * If the AB_RECIPIENTS flag is set and neither AB_MODIFIABLE or AB_UNMODIFIABLE
+ * bits are set, it is an error.
+ */
+
+typedef struct _flaglist
+{
+ ULONG cFlags;
+ ULONG ulFlag[MAPI_DIM];
+} FlagList, FAR * LPFlagList;
+
+
+/*
+ * Container flags
+ */
+#define AB_RECIPIENTS ((ULONG) 0x00000001)
+#define AB_SUBCONTAINERS ((ULONG) 0x00000002)
+#define AB_MODIFIABLE ((ULONG) 0x00000004)
+#define AB_UNMODIFIABLE ((ULONG) 0x00000008)
+#define AB_FIND_ON_OPEN ((ULONG) 0x00000010)
+#define AB_NOT_DEFAULT ((ULONG) 0x00000020)
+
+/* CreateEntry() */
+
+#define CREATE_CHECK_DUP_STRICT ((ULONG) 0x00000001)
+#define CREATE_CHECK_DUP_LOOSE ((ULONG) 0x00000002)
+#define CREATE_REPLACE ((ULONG) 0x00000004)
+
+/* ResolveNames() - ulFlags */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/* ResolveNames() - rgulFlags */
+#define MAPI_UNRESOLVED ((ULONG) 0x00000000)
+#define MAPI_AMBIGUOUS ((ULONG) 0x00000001)
+#define MAPI_RESOLVED ((ULONG) 0x00000002)
+
+
+#define MAPI_IABCONTAINER_METHODS(IPURE) \
+ MAPIMETHOD(CreateEntry) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulCreateFlags, \
+ LPMAPIPROP FAR * lppMAPIPropEntry) IPURE; \
+ MAPIMETHOD(CopyEntries) \
+ (THIS_ LPENTRYLIST lpEntries, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(DeleteEntries) \
+ (THIS_ LPENTRYLIST lpEntries, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(ResolveNames) \
+ (THIS_ LPSPropTagArray lpPropTagArray, \
+ ULONG ulFlags, \
+ LPADRLIST lpAdrList, \
+ LPFlagList lpFlagList) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IABContainer
+DECLARE_MAPI_INTERFACE_(IABContainer, IMAPIContainer)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IMAPICONTAINER_METHODS(PURE)
+ MAPI_IABCONTAINER_METHODS(PURE)
+};
+
+/* IMailUser Interface ----------------------------------------------------- */
+
+/* Any call which can create a one-off entryID (i.e. MAPISupport::CreateOneOff
+ or IAdrBook::CreateOneOff) can encode the value for PR_SEND_RICH_INFO by
+ passing in the following flag in the ulFlags parameter. Setting this flag
+ indicates that PR_SEND_RICH_INFO will be FALSE.
+*/
+#define MAPI_SEND_NO_RICH_INFO ((ULONG) 0x00010000)
+
+
+
+
+/* Values of PR_NDR_DIAG_CODE */
+
+#define MAPI_DIAG(_code) ((LONG) _code)
+
+#define MAPI_DIAG_NO_DIAGNOSTIC MAPI_DIAG( -1 )
+#define MAPI_DIAG_OR_NAME_UNRECOGNIZED MAPI_DIAG( 0 )
+#define MAPI_DIAG_OR_NAME_AMBIGUOUS MAPI_DIAG( 1 )
+#define MAPI_DIAG_MTS_CONGESTED MAPI_DIAG( 2 )
+#define MAPI_DIAG_LOOP_DETECTED MAPI_DIAG( 3 )
+#define MAPI_DIAG_RECIPIENT_UNAVAILABLE MAPI_DIAG( 4 )
+#define MAPI_DIAG_MAXIMUM_TIME_EXPIRED MAPI_DIAG( 5 )
+#define MAPI_DIAG_EITS_UNSUPPORTED MAPI_DIAG( 6 )
+#define MAPI_DIAG_CONTENT_TOO_LONG MAPI_DIAG( 7 )
+#define MAPI_DIAG_IMPRACTICAL_TO_CONVERT MAPI_DIAG( 8 )
+#define MAPI_DIAG_PROHIBITED_TO_CONVERT MAPI_DIAG( 9 )
+#define MAPI_DIAG_CONVERSION_UNSUBSCRIBED MAPI_DIAG( 10 )
+#define MAPI_DIAG_PARAMETERS_INVALID MAPI_DIAG( 11 )
+#define MAPI_DIAG_CONTENT_SYNTAX_IN_ERROR MAPI_DIAG( 12 )
+#define MAPI_DIAG_LENGTH_CONSTRAINT_VIOLATD MAPI_DIAG( 13 )
+#define MAPI_DIAG_NUMBER_CONSTRAINT_VIOLATD MAPI_DIAG( 14 )
+#define MAPI_DIAG_CONTENT_TYPE_UNSUPPORTED MAPI_DIAG( 15 )
+#define MAPI_DIAG_TOO_MANY_RECIPIENTS MAPI_DIAG( 16 )
+#define MAPI_DIAG_NO_BILATERAL_AGREEMENT MAPI_DIAG( 17 )
+#define MAPI_DIAG_CRITICAL_FUNC_UNSUPPORTED MAPI_DIAG( 18 )
+#define MAPI_DIAG_CONVERSION_LOSS_PROHIB MAPI_DIAG( 19 )
+#define MAPI_DIAG_LINE_TOO_LONG MAPI_DIAG( 20 )
+#define MAPI_DIAG_PAGE_TOO_LONG MAPI_DIAG( 21 )
+#define MAPI_DIAG_PICTORIAL_SYMBOL_LOST MAPI_DIAG( 22 )
+#define MAPI_DIAG_PUNCTUATION_SYMBOL_LOST MAPI_DIAG( 23 )
+#define MAPI_DIAG_ALPHABETIC_CHARACTER_LOST MAPI_DIAG( 24 )
+#define MAPI_DIAG_MULTIPLE_INFO_LOSSES MAPI_DIAG( 25 )
+#define MAPI_DIAG_REASSIGNMENT_PROHIBITED MAPI_DIAG( 26 )
+#define MAPI_DIAG_REDIRECTION_LOOP_DETECTED MAPI_DIAG( 27 )
+#define MAPI_DIAG_EXPANSION_PROHIBITED MAPI_DIAG( 28 )
+#define MAPI_DIAG_SUBMISSION_PROHIBITED MAPI_DIAG( 29 )
+#define MAPI_DIAG_EXPANSION_FAILED MAPI_DIAG( 30 )
+#define MAPI_DIAG_RENDITION_UNSUPPORTED MAPI_DIAG( 31 )
+#define MAPI_DIAG_MAIL_ADDRESS_INCORRECT MAPI_DIAG( 32 )
+#define MAPI_DIAG_MAIL_OFFICE_INCOR_OR_INVD MAPI_DIAG( 33 )
+#define MAPI_DIAG_MAIL_ADDRESS_INCOMPLETE MAPI_DIAG( 34 )
+#define MAPI_DIAG_MAIL_RECIPIENT_UNKNOWN MAPI_DIAG( 35 )
+#define MAPI_DIAG_MAIL_RECIPIENT_DECEASED MAPI_DIAG( 36 )
+#define MAPI_DIAG_MAIL_ORGANIZATION_EXPIRED MAPI_DIAG( 37 )
+#define MAPI_DIAG_MAIL_REFUSED MAPI_DIAG( 38 )
+#define MAPI_DIAG_MAIL_UNCLAIMED MAPI_DIAG( 39 )
+#define MAPI_DIAG_MAIL_RECIPIENT_MOVED MAPI_DIAG( 40 )
+#define MAPI_DIAG_MAIL_RECIPIENT_TRAVELLING MAPI_DIAG( 41 )
+#define MAPI_DIAG_MAIL_RECIPIENT_DEPARTED MAPI_DIAG( 42 )
+#define MAPI_DIAG_MAIL_NEW_ADDRESS_UNKNOWN MAPI_DIAG( 43 )
+#define MAPI_DIAG_MAIL_FORWARDING_UNWANTED MAPI_DIAG( 44 )
+#define MAPI_DIAG_MAIL_FORWARDING_PROHIB MAPI_DIAG( 45 )
+#define MAPI_DIAG_SECURE_MESSAGING_ERROR MAPI_DIAG( 46 )
+#define MAPI_DIAG_DOWNGRADING_IMPOSSIBLE MAPI_DIAG( 47 )
+
+/* Values of PR_DELIVERY_POINT (MH_T_DELIVERY_POINT) */
+
+#define MAPI_MH_DP_PUBLIC_UA ((ULONG) 0)
+#define MAPI_MH_DP_PRIVATE_UA ((ULONG) 1)
+#define MAPI_MH_DP_MS ((ULONG) 2)
+#define MAPI_MH_DP_ML ((ULONG) 3)
+#define MAPI_MH_DP_PDAU ((ULONG) 4)
+#define MAPI_MH_DP_PDS_PATRON ((ULONG) 5)
+#define MAPI_MH_DP_OTHER_AU ((ULONG) 6)
+
+
+#define MAPI_IMAILUSER_METHODS(IPURE)
+
+#undef INTERFACE
+#define INTERFACE IMailUser
+DECLARE_MAPI_INTERFACE_(IMailUser, IMAPIProp)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IMAILUSER_METHODS(PURE)
+};
+
+/* IDistList Interface ----------------------------------------------------- */
+
+#define MAPI_IDISTLIST_METHODS(IPURE) \
+ MAPIMETHOD(CreateEntry) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulCreateFlags, \
+ LPMAPIPROP FAR * lppMAPIPropEntry) IPURE; \
+ MAPIMETHOD(CopyEntries) \
+ (THIS_ LPENTRYLIST lpEntries, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(DeleteEntries) \
+ (THIS_ LPENTRYLIST lpEntries, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(ResolveNames) \
+ (THIS_ LPSPropTagArray lpPropTagArray, \
+ ULONG ulFlags, \
+ LPADRLIST lpAdrList, \
+ LPFlagList lpFlagList) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IDistList
+DECLARE_MAPI_INTERFACE_(IDistList, IMAPIContainer)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IMAPICONTAINER_METHODS(PURE)
+ MAPI_IDISTLIST_METHODS(PURE)
+};
+
+/* IMAPIFolder Interface --------------------------------------------------- */
+
+/* IMAPIFolder folder type (enum) */
+
+#define FOLDER_ROOT ((ULONG) 0x00000000)
+#define FOLDER_GENERIC ((ULONG) 0x00000001)
+#define FOLDER_SEARCH ((ULONG) 0x00000002)
+
+/* CreateMessage */
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+/****** MAPI_ASSOCIATED ((ULONG) 0x00000040) below */
+
+/* CopyMessages */
+
+#define MESSAGE_MOVE ((ULONG) 0x00000001)
+#define MESSAGE_DIALOG ((ULONG) 0x00000002)
+/****** MAPI_DECLINE_OK ((ULONG) 0x00000004) above */
+
+/* CreateFolder */
+
+#define OPEN_IF_EXISTS ((ULONG) 0x00000001)
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/* DeleteFolder */
+
+#define DEL_MESSAGES ((ULONG) 0x00000001)
+#define FOLDER_DIALOG ((ULONG) 0x00000002)
+#define DEL_FOLDERS ((ULONG) 0x00000004)
+
+/* EmptyFolder */
+#define DEL_ASSOCIATED ((ULONG) 0x00000008)
+
+/* CopyFolder */
+
+#define FOLDER_MOVE ((ULONG) 0x00000001)
+/****** FOLDER_DIALOG ((ULONG) 0x00000002) above */
+/****** MAPI_DECLINE_OK ((ULONG) 0x00000004) above */
+#define COPY_SUBFOLDERS ((ULONG) 0x00000010)
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+
+/* SetReadFlags */
+
+/****** SUPPRESS_RECEIPT ((ULONG) 0x00000001) below */
+/****** FOLDER_DIALOG ((ULONG) 0x00000002) above */
+/****** CLEAR_READ_FLAG ((ULONG) 0x00000004) below */
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+/****** GENERATE_RECEIPT_ONLY ((ULONG) 0x00000010) below */
+/****** CLEAR_RN_PENDING ((ULONG) 0x00000020) below */
+/****** CLEAR_NRN_PENDING ((ULONG) 0x00000040) below */
+
+
+/* GetMessageStatus */
+
+#define MSGSTATUS_HIGHLIGHTED ((ULONG) 0x00000001)
+#define MSGSTATUS_TAGGED ((ULONG) 0x00000002)
+#define MSGSTATUS_HIDDEN ((ULONG) 0x00000004)
+#define MSGSTATUS_DELMARKED ((ULONG) 0x00000008)
+
+/* Bits for remote message status */
+
+#define MSGSTATUS_REMOTE_DOWNLOAD ((ULONG) 0x00001000)
+#define MSGSTATUS_REMOTE_DELETE ((ULONG) 0x00002000)
+
+/* SaveContentsSort */
+
+#define RECURSIVE_SORT ((ULONG) 0x00000002)
+
+/* PR_STATUS property */
+
+#define FLDSTATUS_HIGHLIGHTED ((ULONG) 0x00000001)
+#define FLDSTATUS_TAGGED ((ULONG) 0x00000002)
+#define FLDSTATUS_HIDDEN ((ULONG) 0x00000004)
+#define FLDSTATUS_DELMARKED ((ULONG) 0x00000008)
+
+#define MAPI_IMAPIFOLDER_METHODS(IPURE) \
+ MAPIMETHOD(CreateMessage) \
+ (THIS_ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ LPMESSAGE FAR * lppMessage) IPURE; \
+ MAPIMETHOD(CopyMessages) \
+ (THIS_ LPENTRYLIST lpMsgList, \
+ LPCIID lpInterface, \
+ LPVOID lpDestFolder, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(DeleteMessages) \
+ (THIS_ LPENTRYLIST lpMsgList, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(CreateFolder) \
+ (THIS_ ULONG ulFolderType, \
+ LPTSTR lpszFolderName, \
+ LPTSTR lpszFolderComment, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ LPMAPIFOLDER FAR * lppFolder) IPURE; \
+ MAPIMETHOD(CopyFolder) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPCIID lpInterface, \
+ LPVOID lpDestFolder, \
+ LPTSTR lpszNewFolderName, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(DeleteFolder) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(SetReadFlags) \
+ (THIS_ LPENTRYLIST lpMsgList, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(GetMessageStatus) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulMessageStatus) IPURE; \
+ MAPIMETHOD(SetMessageStatus) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulNewStatus, \
+ ULONG ulNewStatusMask, \
+ ULONG FAR * lpulOldStatus) IPURE; \
+ MAPIMETHOD(SaveContentsSort) \
+ (THIS_ LPSSortOrderSet lpSortCriteria, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(EmptyFolder) \
+ (THIS_ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIFolder
+DECLARE_MAPI_INTERFACE_(IMAPIFolder, IMAPIContainer)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IMAPICONTAINER_METHODS(PURE)
+ MAPI_IMAPIFOLDER_METHODS(PURE)
+};
+
+/* IMsgStore Interface ----------------------------------------------------- */
+
+/* PR_STORE_SUPPORT_MASK bits */
+#define STORE_ENTRYID_UNIQUE ((ULONG) 0x00000001)
+#define STORE_READONLY ((ULONG) 0x00000002)
+#define STORE_SEARCH_OK ((ULONG) 0x00000004)
+#define STORE_MODIFY_OK ((ULONG) 0x00000008)
+#define STORE_CREATE_OK ((ULONG) 0x00000010)
+#define STORE_ATTACH_OK ((ULONG) 0x00000020)
+#define STORE_OLE_OK ((ULONG) 0x00000040)
+#define STORE_SUBMIT_OK ((ULONG) 0x00000080)
+#define STORE_NOTIFY_OK ((ULONG) 0x00000100)
+#define STORE_MV_PROPS_OK ((ULONG) 0x00000200)
+#define STORE_CATEGORIZE_OK ((ULONG) 0x00000400)
+#define STORE_RTF_OK ((ULONG) 0x00000800)
+#define STORE_RESTRICTION_OK ((ULONG) 0x00001000)
+#define STORE_SORT_OK ((ULONG) 0x00002000)
+#define STORE_PUBLIC_FOLDERS ((ULONG) 0x00004000)
+#define STORE_UNCOMPRESSED_RTF ((ULONG) 0x00008000)
+
+/* PR_STORE_STATE bits, try not to collide with PR_STORE_SUPPORT_MASK */
+
+#define STORE_HAS_SEARCHES ((ULONG) 0x01000000)
+
+
+/* OpenEntry() */
+
+/****** MAPI_MODIFY ((ULONG) 0x00000001) above */
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+/****** MAPI_BEST_ACCESS ((ULONG) 0x00000010) above */
+
+/* SetReceiveFolder() */
+
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/* GetReceiveFolder() */
+
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/* GetReceiveFolderTable() */
+
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+
+/* StoreLogoff() */
+
+#define LOGOFF_NO_WAIT ((ULONG) 0x00000001)
+#define LOGOFF_ORDERLY ((ULONG) 0x00000002)
+#define LOGOFF_PURGE ((ULONG) 0x00000004)
+#define LOGOFF_ABORT ((ULONG) 0x00000008)
+#define LOGOFF_QUIET ((ULONG) 0x00000010)
+
+#define LOGOFF_COMPLETE ((ULONG) 0x00010000)
+#define LOGOFF_INBOUND ((ULONG) 0x00020000)
+#define LOGOFF_OUTBOUND ((ULONG) 0x00040000)
+#define LOGOFF_OUTBOUND_QUEUE ((ULONG) 0x00080000)
+
+/* SetLockState() */
+
+#define MSG_LOCKED ((ULONG) 0x00000001)
+#define MSG_UNLOCKED ((ULONG) 0x00000000)
+
+/* Flag bits for PR_VALID_FOLDER_MASK */
+
+#define FOLDER_IPM_SUBTREE_VALID ((ULONG) 0x00000001)
+#define FOLDER_IPM_INBOX_VALID ((ULONG) 0x00000002)
+#define FOLDER_IPM_OUTBOX_VALID ((ULONG) 0x00000004)
+#define FOLDER_IPM_WASTEBASKET_VALID ((ULONG) 0x00000008)
+#define FOLDER_IPM_SENTMAIL_VALID ((ULONG) 0x00000010)
+#define FOLDER_VIEWS_VALID ((ULONG) 0x00000020)
+#define FOLDER_COMMON_VIEWS_VALID ((ULONG) 0x00000040)
+#define FOLDER_FINDER_VALID ((ULONG) 0x00000080)
+
+#define MAPI_IMSGSTORE_METHODS(IPURE) \
+ MAPIMETHOD(Advise) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulEventMask, \
+ LPMAPIADVISESINK lpAdviseSink, \
+ ULONG FAR * lpulConnection) IPURE; \
+ MAPIMETHOD(Unadvise) \
+ (THIS_ ULONG ulConnection) IPURE; \
+ MAPIMETHOD(CompareEntryIDs) \
+ (THIS_ ULONG cbEntryID1, \
+ LPENTRYID lpEntryID1, \
+ ULONG cbEntryID2, \
+ LPENTRYID lpEntryID2, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulResult) IPURE; \
+ MAPIMETHOD(OpenEntry) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulObjType, \
+ LPUNKNOWN FAR * lppUnk) IPURE; \
+ MAPIMETHOD(SetReceiveFolder) \
+ (THIS_ LPTSTR lpszMessageClass, \
+ ULONG ulFlags, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID) IPURE; \
+ MAPIMETHOD(GetReceiveFolder) \
+ (THIS_ LPTSTR lpszMessageClass, \
+ ULONG ulFlags, \
+ ULONG FAR * lpcbEntryID, \
+ LPENTRYID FAR * lppEntryID, \
+ LPTSTR FAR * lppszExplicitClass) IPURE; \
+ MAPIMETHOD(GetReceiveFolderTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(StoreLogoff) \
+ (THIS_ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(AbortSubmit) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(GetOutgoingQueue) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(SetLockState) \
+ (THIS_ LPMESSAGE lpMessage, \
+ ULONG ulLockState) IPURE; \
+ MAPIMETHOD(FinishedMsg) \
+ (THIS_ ULONG ulFlags, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID) IPURE; \
+ MAPIMETHOD(NotifyNewMail) \
+ (THIS_ LPNOTIFICATION lpNotification) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMsgStore
+DECLARE_MAPI_INTERFACE_(IMsgStore, IMAPIProp)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IMSGSTORE_METHODS(PURE)
+};
+
+/* IMessage Interface ------------------------------------------------------ */
+
+/* SubmitMessage */
+
+#define FORCE_SUBMIT ((ULONG) 0x00000001)
+
+/* Flags defined in PR_MESSAGE_FLAGS */
+
+#define MSGFLAG_READ ((ULONG) 0x00000001)
+#define MSGFLAG_UNMODIFIED ((ULONG) 0x00000002)
+#define MSGFLAG_SUBMIT ((ULONG) 0x00000004)
+#define MSGFLAG_UNSENT ((ULONG) 0x00000008)
+#define MSGFLAG_HASATTACH ((ULONG) 0x00000010)
+#define MSGFLAG_FROMME ((ULONG) 0x00000020)
+#define MSGFLAG_ASSOCIATED ((ULONG) 0x00000040)
+#define MSGFLAG_RESEND ((ULONG) 0x00000080)
+#define MSGFLAG_RN_PENDING ((ULONG) 0x00000100)
+#define MSGFLAG_NRN_PENDING ((ULONG) 0x00000200)
+
+/* Flags defined in PR_SUBMIT_FLAGS */
+
+#define SUBMITFLAG_LOCKED ((ULONG) 0x00000001)
+#define SUBMITFLAG_PREPROCESS ((ULONG) 0x00000002)
+
+/* GetAttachmentTable() */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/* GetRecipientTable() */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/* ModifyRecipients */
+
+/* ((ULONG) 0x00000001 is not a valid flag on ModifyRecipients. */
+#define MODRECIP_ADD ((ULONG) 0x00000002)
+#define MODRECIP_MODIFY ((ULONG) 0x00000004)
+#define MODRECIP_REMOVE ((ULONG) 0x00000008)
+
+/* SetReadFlag */
+
+#define SUPPRESS_RECEIPT ((ULONG) 0x00000001)
+#define CLEAR_READ_FLAG ((ULONG) 0x00000004)
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) below */
+#define GENERATE_RECEIPT_ONLY ((ULONG) 0x00000010)
+#define CLEAR_RN_PENDING ((ULONG) 0x00000020)
+#define CLEAR_NRN_PENDING ((ULONG) 0x00000040)
+
+/* DeleteAttach */
+
+#define ATTACH_DIALOG ((ULONG) 0x00000001)
+
+/* PR_SECURITY values */
+#define SECURITY_SIGNED ((ULONG) 0x00000001)
+#define SECURITY_ENCRYPTED ((ULONG) 0x00000002)
+
+/* PR_PRIORITY values */
+#define PRIO_URGENT ((long) 1)
+#define PRIO_NORMAL ((long) 0)
+#define PRIO_NONURGENT ((long) -1)
+
+/* PR_SENSITIVITY values */
+#define SENSITIVITY_NONE ((ULONG) 0x00000000)
+#define SENSITIVITY_PERSONAL ((ULONG) 0x00000001)
+#define SENSITIVITY_PRIVATE ((ULONG) 0x00000002)
+#define SENSITIVITY_COMPANY_CONFIDENTIAL ((ULONG) 0x00000003)
+
+/* PR_IMPORTANCE values */
+#define IMPORTANCE_LOW ((long) 0)
+#define IMPORTANCE_NORMAL ((long) 1)
+#define IMPORTANCE_HIGH ((long) 2)
+
+#define MAPI_IMESSAGE_METHODS(IPURE) \
+ MAPIMETHOD(GetAttachmentTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(OpenAttach) \
+ (THIS_ ULONG ulAttachmentNum, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ LPATTACH FAR * lppAttach) IPURE; \
+ MAPIMETHOD(CreateAttach) \
+ (THIS_ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulAttachmentNum, \
+ LPATTACH FAR * lppAttach) IPURE; \
+ MAPIMETHOD(DeleteAttach) \
+ (THIS_ ULONG ulAttachmentNum, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(GetRecipientTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(ModifyRecipients) \
+ (THIS_ ULONG ulFlags, \
+ LPADRLIST lpMods) IPURE; \
+ MAPIMETHOD(SubmitMessage) \
+ (THIS_ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(SetReadFlag) \
+ (THIS_ ULONG ulFlags) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMessage
+DECLARE_MAPI_INTERFACE_(IMessage, IMAPIProp)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IMESSAGE_METHODS(PURE)
+};
+
+/* IAttach Interface ------------------------------------------------------- */
+
+/* IAttach attachment methods: PR_ATTACH_METHOD values */
+
+#define NO_ATTACHMENT ((ULONG) 0x00000000)
+#define ATTACH_BY_VALUE ((ULONG) 0x00000001)
+#define ATTACH_BY_REFERENCE ((ULONG) 0x00000002)
+#define ATTACH_BY_REF_RESOLVE ((ULONG) 0x00000003)
+#define ATTACH_BY_REF_ONLY ((ULONG) 0x00000004)
+#define ATTACH_EMBEDDED_MSG ((ULONG) 0x00000005)
+#define ATTACH_OLE ((ULONG) 0x00000006)
+
+#define MAPI_IATTACH_METHODS(IPURE)
+
+#undef INTERFACE
+#define INTERFACE IAttach
+DECLARE_MAPI_INTERFACE_(IAttach, IMAPIProp)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IATTACH_METHODS(PURE)
+};
+
+/* --------------------------------- */
+/* Address Book interface definition */
+
+/* ADRPARM ulFlags - top 4 bits used for versioning */
+
+#define GET_ADRPARM_VERSION(ulFlags) (((ULONG)ulFlags) & 0xF0000000)
+#define SET_ADRPARM_VERSION(ulFlags, ulVersion) (((ULONG)ulVersion) | (((ULONG)ulFlags) & 0x0FFFFFFF))
+
+/* Current versions of ADRPARM */
+#define ADRPARM_HELP_CTX ((ULONG) 0x00000000)
+
+
+/* ulFlags - bit fields */
+#define DIALOG_MODAL ((ULONG) 0x00000001)
+#define DIALOG_SDI ((ULONG) 0x00000002)
+#define DIALOG_OPTIONS ((ULONG) 0x00000004)
+#define ADDRESS_ONE ((ULONG) 0x00000008)
+#define AB_SELECTONLY ((ULONG) 0x00000010)
+#define AB_RESOLVE ((ULONG) 0x00000020)
+
+/* --------------------------------- */
+/* PR_DISPLAY_TYPEs */
+/*
+ * These standard display types are
+ * by default handled by MAPI.
+ * They have default icons associated
+ * with them.
+ */
+
+/* For address book contents tables */
+#define DT_MAILUSER ((ULONG) 0x00000000)
+#define DT_DISTLIST ((ULONG) 0x00000001)
+#define DT_FORUM ((ULONG) 0x00000002)
+#define DT_AGENT ((ULONG) 0x00000003)
+#define DT_ORGANIZATION ((ULONG) 0x00000004)
+#define DT_PRIVATE_DISTLIST ((ULONG) 0x00000005)
+#define DT_REMOTE_MAILUSER ((ULONG) 0x00000006)
+
+/* For address book hierarchy tables */
+#define DT_MODIFIABLE ((ULONG) 0x00010000)
+#define DT_GLOBAL ((ULONG) 0x00020000)
+#define DT_LOCAL ((ULONG) 0x00030000)
+#define DT_WAN ((ULONG) 0x00040000)
+#define DT_NOT_SPECIFIC ((ULONG) 0x00050000)
+
+/* For folder hierarchy tables */
+#define DT_FOLDER ((ULONG) 0x01000000)
+#define DT_FOLDER_LINK ((ULONG) 0x02000000)
+#define DT_FOLDER_SPECIAL ((ULONG) 0x04000000)
+
+/* Accelerator callback for DIALOG_SDI form of AB UI */
+typedef BOOL (STDMETHODCALLTYPE ACCELERATEABSDI)(ULONG ulUIParam,
+ LPVOID lpvmsg);
+typedef ACCELERATEABSDI FAR * LPFNABSDI;
+
+/* Callback to application telling it that the DIALOG_SDI form of the */
+/* AB UI has been dismissed. This is so that the above LPFNABSDI */
+/* function doesn't keep being called. */
+typedef void (STDMETHODCALLTYPE DISMISSMODELESS)(ULONG ulUIParam,
+ LPVOID lpvContext);
+typedef DISMISSMODELESS FAR * LPFNDISMISS;
+
+/*
+ * Prototype for the client function hooked to an optional button on
+ * the address book dialog
+ */
+
+typedef SCODE (STDMETHODCALLTYPE FAR * LPFNBUTTON)(
+ ULONG ulUIParam,
+ LPVOID lpvContext,
+ ULONG cbEntryID,
+ LPENTRYID lpSelection,
+ ULONG ulFlags
+);
+
+
+/* Parameters for the address book dialog */
+typedef struct _ADRPARM
+{
+ ULONG cbABContEntryID;
+ LPENTRYID lpABContEntryID;
+ ULONG ulFlags;
+
+ LPVOID lpReserved;
+ ULONG ulHelpContext;
+ LPTSTR lpszHelpFileName;
+
+ LPFNABSDI lpfnABSDI;
+ LPFNDISMISS lpfnDismiss;
+ LPVOID lpvDismissContext;
+ LPTSTR lpszCaption;
+ LPTSTR lpszNewEntryTitle;
+ LPTSTR lpszDestWellsTitle;
+ ULONG cDestFields;
+ ULONG nDestFieldFocus;
+ LPTSTR FAR * lppszDestTitles;
+ ULONG FAR * lpulDestComps;
+ LPSRestriction lpContRestriction;
+ LPSRestriction lpHierRestriction;
+} ADRPARM, FAR * LPADRPARM;
+
+
+/* ------------ */
+/* Random flags */
+
+/* Flag for deferred error */
+#define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008)
+
+/* Flag for creating and using Folder Associated Information Messages */
+#define MAPI_ASSOCIATED ((ULONG) 0x00000040)
+
+/* Flags for OpenMessageStore() */
+
+#define MDB_NO_DIALOG ((ULONG) 0x00000001)
+#define MDB_WRITE ((ULONG) 0x00000004)
+/****** MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) above */
+/****** MAPI_BEST_ACCESS ((ULONG) 0x00000010) above */
+#define MDB_TEMPORARY ((ULONG) 0x00000020)
+#define MDB_NO_MAIL ((ULONG) 0x00000080)
+
+/* Flags for OpenAddressBook */
+
+#define AB_NO_DIALOG ((ULONG) 0x00000001)
+
+/* IMAPIControl Interface -------------------------------------------------- */
+
+/* Interface used in controls (particularly the button) defined by */
+/* Display Tables. */
+
+/* Flags for GetState */
+
+#define MAPI_ENABLED ((ULONG) 0x00000000)
+#define MAPI_DISABLED ((ULONG) 0x00000001)
+
+#define MAPI_IMAPICONTROL_METHODS(IPURE) \
+ MAPIMETHOD(GetLastError) \
+ (THIS_ HRESULT hResult, \
+ ULONG ulFlags, \
+ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+ MAPIMETHOD(Activate) \
+ (THIS_ ULONG ulFlags, \
+ ULONG ulUIParam) IPURE; \
+ MAPIMETHOD(GetState) \
+ (THIS_ ULONG ulFlags, \
+ ULONG FAR * lpulState) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIControl
+DECLARE_MAPI_INTERFACE_(IMAPIControl, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPICONTROL_METHODS(PURE)
+};
+
+DECLARE_MAPI_INTERFACE_PTR(IMAPIControl, LPMAPICONTROL);
+
+/* Display Tables ---------------------------------------------------------- */
+
+/* Flags used in display tables - that is, PR_CONTROL_FLAGS */
+
+#define DT_MULTILINE ((ULONG) 0x00000001)
+#define DT_EDITABLE ((ULONG) 0x00000002)
+#define DT_REQUIRED ((ULONG) 0x00000004)
+#define DT_SET_IMMEDIATE ((ULONG) 0x00000008)
+#define DT_PASSWORD_EDIT ((ULONG) 0x00000010)
+#define DT_ACCEPT_DBCS ((ULONG) 0x00000020)
+#define DT_SET_SELECTION ((ULONG) 0x00000040)
+
+/* Display Table structures */
+
+#define DTCT_LABEL ((ULONG) 0x00000000)
+#define DTCT_EDIT ((ULONG) 0x00000001)
+#define DTCT_LBX ((ULONG) 0x00000002)
+#define DTCT_COMBOBOX ((ULONG) 0x00000003)
+#define DTCT_DDLBX ((ULONG) 0x00000004)
+#define DTCT_CHECKBOX ((ULONG) 0x00000005)
+#define DTCT_GROUPBOX ((ULONG) 0x00000006)
+#define DTCT_BUTTON ((ULONG) 0x00000007)
+#define DTCT_PAGE ((ULONG) 0x00000008)
+#define DTCT_RADIOBUTTON ((ULONG) 0x00000009)
+#define DTCT_MVLISTBOX ((ULONG) 0x0000000B)
+#define DTCT_MVDDLBX ((ULONG) 0x0000000C)
+
+/* Labels */
+/* Valid ulFlags:
+ * MAPI_UNICODE
+ */
+typedef struct _DTBLLABEL
+{
+ ULONG ulbLpszLabelName;
+ ULONG ulFlags;
+} DTBLLABEL, FAR * LPDTBLLABEL;
+#define SizedDtblLabel(n,u) \
+struct _DTBLLABEL_ ## u \
+{ \
+ DTBLLABEL dtbllabel; \
+ TCHAR lpszLabelName[n]; \
+} u
+
+
+/* Simple Text Edits */
+/* Valid ulFlags:
+ * MAPI_UNICODE
+ */
+typedef struct _DTBLEDIT
+{
+ ULONG ulbLpszCharsAllowed;
+ ULONG ulFlags;
+ ULONG ulNumCharsAllowed;
+ ULONG ulPropTag;
+} DTBLEDIT, FAR * LPDTBLEDIT;
+#define SizedDtblEdit(n,u) \
+struct _DTBLEDIT_ ## u \
+{ \
+ DTBLEDIT dtbledit; \
+ TCHAR lpszCharsAllowed[n]; \
+} u
+
+/* List Box */
+/* Valid ulFlags:
+ */
+#define MAPI_NO_HBAR ((ULONG) 0x00000001)
+#define MAPI_NO_VBAR ((ULONG) 0x00000002)
+
+typedef struct _DTBLLBX
+{
+ ULONG ulFlags;
+ ULONG ulPRSetProperty;
+ ULONG ulPRTableName;
+} DTBLLBX, FAR * LPDTBLLBX;
+
+
+/* Combo Box */
+/* Valid ulFlags:
+ * MAPI_UNICODE
+ */
+typedef struct _DTBLCOMBOBOX
+{
+ ULONG ulbLpszCharsAllowed;
+ ULONG ulFlags;
+ ULONG ulNumCharsAllowed;
+ ULONG ulPRPropertyName;
+ ULONG ulPRTableName;
+} DTBLCOMBOBOX, FAR * LPDTBLCOMBOBOX;
+#define SizedDtblComboBox(n,u) \
+struct _DTBLCOMBOBOX_ ## u \
+{ \
+ DTBLCOMBOBOX dtblcombobox; \
+ TCHAR lpszCharsAllowed[n]; \
+} u
+
+
+/* Drop Down */
+/* Valid ulFlags:
+ * none
+ */
+typedef struct _DTBLDDLBX
+{
+ ULONG ulFlags;
+ ULONG ulPRDisplayProperty;
+ ULONG ulPRSetProperty;
+ ULONG ulPRTableName;
+} DTBLDDLBX, FAR * LPDTBLDDLBX;
+
+
+/* Check Box */
+/* Valid ulFlags:
+ * MAPI_UNICODE
+ */
+typedef struct _DTBLCHECKBOX
+{
+ ULONG ulbLpszLabel;
+ ULONG ulFlags;
+ ULONG ulPRPropertyName;
+} DTBLCHECKBOX, FAR * LPDTBLCHECKBOX;
+#define SizedDtblCheckBox(n,u) \
+struct _DTBLCHECKBOX_ ## u \
+{ \
+ DTBLCHECKBOX dtblcheckbox; \
+ TCHAR lpszLabel[n]; \
+} u
+
+
+
+/* Group Box */
+/* Valid ulFlags:
+ * MAPI_UNICODE
+ */
+typedef struct _DTBLGROUPBOX
+{
+ ULONG ulbLpszLabel;
+ ULONG ulFlags;
+} DTBLGROUPBOX, FAR * LPDTBLGROUPBOX;
+#define SizedDtblGroupBox(n,u) \
+struct _DTBLGROUPBOX_ ## u \
+{ \
+ DTBLGROUPBOX dtblgroupbox; \
+ TCHAR lpszLabel[n]; \
+} u
+
+/* Button control */
+/* Valid ulFlags:
+ * MAPI_UNICODE
+ */
+typedef struct _DTBLBUTTON
+{
+ ULONG ulbLpszLabel;
+ ULONG ulFlags;
+ ULONG ulPRControl;
+} DTBLBUTTON, FAR * LPDTBLBUTTON;
+#define SizedDtblButton(n,u) \
+struct _DTBLBUTTON_ ## u \
+{ \
+ DTBLBUTTON dtblbutton; \
+ TCHAR lpszLabel[n]; \
+} u
+
+/* Pages */
+/* Valid ulFlags:
+ * MAPI_UNICODE
+ */
+typedef struct _DTBLPAGE
+{
+ ULONG ulbLpszLabel;
+ ULONG ulFlags;
+ ULONG ulbLpszComponent;
+ ULONG ulContext;
+} DTBLPAGE, FAR * LPDTBLPAGE;
+#define SizedDtblPage(n,n1,u) \
+struct _DTBLPAGE_ ## u \
+{ \
+ DTBLPAGE dtblpage; \
+ TCHAR lpszLabel[n]; \
+ TCHAR lpszComponent[n1]; \
+} u
+
+/* Radio button */
+/* Valid ulFlags:
+ * MAPI_UNICODE
+ */
+typedef struct _DTBLRADIOBUTTON
+{
+ ULONG ulbLpszLabel;
+ ULONG ulFlags;
+ ULONG ulcButtons;
+ ULONG ulPropTag;
+ long lReturnValue;
+} DTBLRADIOBUTTON, FAR * LPDTBLRADIOBUTTON;
+#define SizedDtblRadioButton(n,u) \
+struct _DTBLRADIOBUTTON_ ## u \
+{ \
+ DTBLRADIOBUTTON dtblradiobutton; \
+ TCHAR lpszLabel[n]; \
+} u
+
+
+/* MultiValued listbox */
+/* Valid ulFlags:
+ * none
+ */
+typedef struct _DTBLMVLISTBOX
+{
+ ULONG ulFlags;
+ ULONG ulMVPropTag;
+} DTBLMVLISTBOX, FAR * LPDTBLMVLISTBOX;
+
+
+/* MultiValued dropdown */
+/* Valid ulFlags:
+ * none
+ */
+typedef struct _DTBLMVDDLBX
+{
+ ULONG ulFlags;
+ ULONG ulMVPropTag;
+} DTBLMVDDLBX, FAR * LPDTBLMVDDLBX;
+
+
+
+
+
+/* IProviderAdmin Interface ---------------------------------------------- */
+
+/* Flags for ConfigureMsgService */
+
+#define UI_SERVICE 0x00000002
+#define SERVICE_UI_ALWAYS 0x00000002 /* Duplicate UI_SERVICE for consistency and compatibility */
+#define SERVICE_UI_ALLOWED 0x00000010
+#define UI_CURRENT_PROVIDER_FIRST 0x00000004
+/* MSG_SERVICE_UI_READ_ONLY 0x00000008 - in MAPISPI.H */
+
+/* GetProviderTable() */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) above */
+
+/* Values for PR_RESOURCE_FLAGS in message service table */
+
+#define MAPI_IPROVIDERADMIN_METHODS(IPURE) \
+ MAPIMETHOD(GetLastError) \
+ (THIS_ HRESULT hResult, \
+ ULONG ulFlags, \
+ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+ MAPIMETHOD(GetProviderTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(CreateProvider) \
+ (THIS_ LPTSTR lpszProvider, \
+ ULONG cValues, \
+ LPSPropValue lpProps, \
+ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ MAPIUID FAR * lpUID) IPURE; \
+ MAPIMETHOD(DeleteProvider) \
+ (THIS_ LPMAPIUID lpUID) IPURE; \
+ MAPIMETHOD(OpenProfileSection) \
+ (THIS_ LPMAPIUID lpUID, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ LPPROFSECT FAR * lppProfSect) IPURE; \
+
+
+#undef INTERFACE
+#define INTERFACE IProviderAdmin
+DECLARE_MAPI_INTERFACE_(IProviderAdmin, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IPROVIDERADMIN_METHODS(PURE)
+};
+
+
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* MAPIDEFS_H */
+
diff --git a/public/sdk/inc/mapiform.h b/public/sdk/inc/mapiform.h
new file mode 100644
index 000000000..c002b0b4a
--- /dev/null
+++ b/public/sdk/inc/mapiform.h
@@ -0,0 +1,627 @@
+/*
+ * M A P I F O R M . H
+ *
+ * Declarations of interfaces for clients and providers of MAPI
+ * forms and form registries.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef MAPIFORM_H
+#define MAPIFORM_H
+
+/* Include common MAPI header files if they haven't been already. */
+
+#ifndef MAPIDEFS_H
+#include <mapidefs.h>
+#include <mapicode.h>
+#include <mapiguid.h>
+#include <mapitags.h>
+#endif
+
+#ifndef BEGIN_INTERFACE
+#define BEGIN_INTERFACE
+#endif
+
+#ifndef _MAC
+typedef const RECT FAR *LPCRECT;
+#endif
+
+/* HFRMREG is an enumeration which represents a registry container.
+ * Microsoft reserves the values from 0 to 0x3FFF for its own use.
+ */
+
+typedef ULONG HFRMREG;
+
+#define HFRMREG_DEFAULT 0
+#define HFRMREG_LOCAL 1
+#define HFRMREG_PERSONAL 2
+#define HFRMREG_FOLDER 3
+
+DECLARE_MAPI_INTERFACE_PTR(IPersistMessage, LPPERSISTMESSAGE);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIMessageSite, LPMAPIMESSAGESITE);
+DECLARE_MAPI_INTERFACE_PTR(IMAPISession, LPMAPISESSION);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIViewContext, LPMAPIVIEWCONTEXT);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIViewAdviseSink, LPMAPIVIEWADVISESINK);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIFormAdviseSink, LPMAPIFORMADVISESINK);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIFormInfo, LPMAPIFORMINFO);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIFormMgr, LPMAPIFORMMGR);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIFormContainer, LPMAPIFORMCONTAINER);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIForm, LPMAPIFORM);
+DECLARE_MAPI_INTERFACE_PTR(IMAPIFormFactory, LPMAPIFORMFACTORY);
+
+typedef const char FAR *FAR * LPPCSTR;
+typedef LPMAPIFORMINFO FAR *LPPMAPIFORMINFO;
+
+STDAPI MAPIOpenFormMgr(LPMAPISESSION pSession, LPMAPIFORMMGR FAR * ppmgr);
+STDAPI MAPIOpenLocalFormContainer(LPMAPIFORMCONTAINER FAR * ppfcnt);
+
+
+/*-- GetLastError ----------------------------------------------------------*/
+/* This defines the GetLastError method held in common by most mapiform
+ * interfaces. It is defined separately so that an implementor may include
+ * more than one mapiform interface in a class.
+ */
+
+#define MAPI_GETLASTERROR_METHOD(IPURE) \
+ MAPIMETHOD(GetLastError) (THIS_ \
+ /*in*/ HRESULT hResult, \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+
+
+/*-- IPersistMessage -------------------------------------------------------*/
+/* This interface is implemented by forms and is used to save,
+ * initialize and load forms to and from messages.
+ */
+
+#define MAPI_IPERSISTMESSAGE_METHODS(IPURE) \
+ MAPIMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) IPURE; \
+ MAPIMETHOD(IsDirty)(THIS) IPURE; \
+ MAPIMETHOD(InitNew)(THIS_ \
+ /*in*/ LPMAPIMESSAGESITE pMessageSite, \
+ /*in*/ LPMESSAGE pMessage) IPURE; \
+ MAPIMETHOD(Load)(THIS_ \
+ /*in*/ LPMAPIMESSAGESITE pMessageSite, \
+ /*in*/ LPMESSAGE pMessage, \
+ /*in*/ ULONG ulMessageStatus, \
+ /*in*/ ULONG ulMessageFlags) IPURE; \
+ MAPIMETHOD(Save)(THIS_ \
+ /*in*/ LPMESSAGE pMessage, \
+ /*in*/ ULONG fSameAsLoad) IPURE; \
+ MAPIMETHOD(SaveCompleted)(THIS_ \
+ /*in*/ LPMESSAGE pMessage) IPURE; \
+ MAPIMETHOD(HandsOffMessage)(THIS) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IPersistMessage
+DECLARE_MAPI_INTERFACE_(IPersistMessage, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_GETLASTERROR_METHOD(PURE)
+ MAPI_IPERSISTMESSAGE_METHODS(PURE)
+};
+
+
+/*-- IMAPIMessageSite ------------------------------------------------------*/
+
+#define MAPI_IMAPIMESSAGESITE_METHODS(IPURE) \
+ MAPIMETHOD(GetSession) (THIS_ \
+ /*out*/ LPMAPISESSION FAR * ppSession) IPURE; \
+ MAPIMETHOD(GetStore) (THIS_ \
+ /*out*/ LPMDB FAR * ppStore) IPURE; \
+ MAPIMETHOD(GetFolder) (THIS_ \
+ /*out*/ LPMAPIFOLDER FAR * ppFolder) IPURE; \
+ MAPIMETHOD(GetMessage) (THIS_ \
+ /*out*/ LPMESSAGE FAR * ppmsg) IPURE; \
+ MAPIMETHOD(GetFormManager) (THIS_ \
+ /*out*/ LPMAPIFORMMGR FAR * ppFormMgr) IPURE; \
+ MAPIMETHOD(NewMessage) (THIS_ \
+ /*in*/ ULONG fComposeInFolder, \
+ /*in*/ LPMAPIFOLDER pFolderFocus, \
+ /*in*/ LPPERSISTMESSAGE pPersistMessage, \
+ /*out*/ LPMESSAGE FAR * ppMessage, \
+ /*out*/ LPMAPIMESSAGESITE FAR * ppMessageSite, \
+ /*out*/ LPMAPIVIEWCONTEXT FAR * ppViewContext) IPURE; \
+ MAPIMETHOD(CopyMessage) (THIS_ \
+ /*in*/ LPMAPIFOLDER pFolderDestination) IPURE; \
+ MAPIMETHOD(MoveMessage) (THIS_ \
+ /*in*/ LPMAPIFOLDER pFolderDestination, \
+ /*in*/ LPMAPIVIEWCONTEXT pViewContext, \
+ /*in*/ LPCRECT prcPosRect) IPURE; \
+ MAPIMETHOD(DeleteMessage) (THIS_ \
+ /*in*/ LPMAPIVIEWCONTEXT pViewContext, \
+ /*in*/ LPCRECT prcPosRect) IPURE; \
+ MAPIMETHOD(SaveMessage) (THIS) IPURE; \
+ MAPIMETHOD(SubmitMessage) (THIS_ \
+ /*in*/ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(GetSiteStatus) (THIS_ \
+ /*out*/ LPULONG lpulStatus) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIMessageSite
+DECLARE_MAPI_INTERFACE_(IMAPIMessageSite, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_GETLASTERROR_METHOD(PURE)
+ MAPI_IMAPIMESSAGESITE_METHODS(PURE)
+};
+
+
+/*-- IMAPIForm -------------------------------------------------------------*/
+/* This interface is implemented by forms for the benefit of viewers.
+ * One method (ShutdownForm) is provided such that simple forms implementing
+ * only IMAPIForm and IPersistMessage have reasonable embedding behavior.
+ */
+
+#define MAPI_IMAPIFORM_METHODS(IPURE) \
+ MAPIMETHOD(SetViewContext) (THIS_ \
+ /*in*/ LPMAPIVIEWCONTEXT pViewContext) IPURE; \
+ MAPIMETHOD(GetViewContext) (THIS_ \
+ /*out*/ LPMAPIVIEWCONTEXT FAR * ppViewContext) IPURE; \
+ MAPIMETHOD(ShutdownForm)(THIS_ \
+ /*in*/ ULONG ulSaveOptions) IPURE; \
+ MAPIMETHOD(DoVerb) (THIS_ \
+ /*in*/ LONG iVerb, \
+ /*in*/ LPMAPIVIEWCONTEXT lpViewContext, /* can be null */ \
+ /*in*/ ULONG hwndParent, \
+ /*in*/ LPCRECT lprcPosRect) IPURE; \
+ MAPIMETHOD(Advise)(THIS_ \
+ /*in*/ LPMAPIVIEWADVISESINK pAdvise, \
+ /*out*/ ULONG FAR * pdwStatus) IPURE; \
+ MAPIMETHOD(Unadvise) (THIS_ \
+ /*in*/ ULONG ulConnection) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIForm
+DECLARE_MAPI_INTERFACE_(IMAPIForm, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_GETLASTERROR_METHOD(PURE)
+ MAPI_IMAPIFORM_METHODS(PURE)
+};
+
+typedef enum tagSAVEOPTS
+{
+ SAVEOPTS_SAVEIFDIRTY = 0,
+ SAVEOPTS_NOSAVE = 1,
+ SAVEOPTS_PROMPTSAVE = 2
+} SAVEOPTS;
+
+
+/*-- IMAPIViewContext ------------------------------------------------------*/
+/* Implemented by viewers to support next/previous in forms.
+ */
+
+/* Structure passed in GetPrintSetup */
+
+typedef struct {
+ ULONG ulFlags; /* MAPI_UNICODE */
+ HGLOBAL hDevMode;
+ HGLOBAL hDevNames;
+ ULONG ulFirstPageNumber;
+ ULONG fPrintAttachments;
+} FORMPRINTSETUP, FAR * LPFORMPRINTSETUP;
+
+/* Values for pulFormat in GetSaveStream */
+
+#define SAVE_FORMAT_TEXT 1
+#define SAVE_FORMAT_RICHTEXT 2
+
+/* Values from 0 to 0x3fff are reserved for future definition by Microsoft */
+
+#define MAPI_IMAPIVIEWCONTEXT_METHODS(IPURE) \
+ MAPIMETHOD(SetAdviseSink)(THIS_ \
+ /*in*/ LPMAPIFORMADVISESINK pmvns) IPURE; \
+ MAPIMETHOD(ActivateNext)(THIS_ \
+ /*in*/ ULONG ulDir, \
+ /*in*/ LPCRECT prcPosRect) IPURE; \
+ MAPIMETHOD(GetPrintSetup)(THIS_ \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPFORMPRINTSETUP FAR * lppFormPrintSetup) IPURE; \
+ MAPIMETHOD(GetSaveStream)(THIS_ \
+ /*out*/ ULONG FAR * pulFlags, \
+ /*out*/ ULONG FAR * pulFormat, \
+ /*out*/ LPSTREAM FAR * ppstm) IPURE; \
+ MAPIMETHOD(GetViewStatus) (THIS_ \
+ /*out*/ LPULONG lpulStatus) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIViewContext
+DECLARE_MAPI_INTERFACE_(IMAPIViewContext, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_GETLASTERROR_METHOD(PURE)
+ MAPI_IMAPIVIEWCONTEXT_METHODS(PURE)
+};
+
+#define VCSTATUS_NEXT 0x00000001
+#define VCSTATUS_PREV 0x00000002
+#define VCSTATUS_MODAL 0x00000004
+#define VCSTATUS_INTERACTIVE 0x00000008
+#define VCSTATUS_READONLY 0x00000010
+#define VCSTATUS_DELETE 0x00010000
+#define VCSTATUS_COPY 0x00020000
+#define VCSTATUS_MOVE 0x00040000
+#define VCSTATUS_SUBMIT 0x00080000
+#define VCSTATUS_DELETE_IS_MOVE 0x00100000
+#define VCSTATUS_SAVE 0x00200000
+#define VCSTATUS_NEW_MESSAGE 0x00400000
+
+#define VCDIR_NEXT VCSTATUS_NEXT
+#define VCDIR_PREV VCSTATUS_PREV
+#define VCDIR_DELETE VCSTATUS_DELETE
+#define VCDIR_MOVE VCSTATUS_MOVE
+
+
+/*-- IMAPIFormAdviseSink ---------------------------------------------------*/
+/* Part of form server, held by view; receives notifications from the view.
+ *
+ * This part of the form server, but is not an interface on the form
+ * object. This means that clients should not expect to QueryInterface
+ * from an IMAPIForm* or IOleObject* to this interface, or vice versa.
+ */
+
+#define MAPI_IMAPIFORMADVISESINK_METHODS(IPURE) \
+ STDMETHOD(OnChange)(THIS_ ULONG ulDir) IPURE; \
+ STDMETHOD(OnActivateNext)(THIS_ \
+ /*in*/ LPCSTR lpszMessageClass, \
+ /*in*/ ULONG ulMessageStatus, \
+ /*in*/ ULONG ulMessageFlags, \
+ /*out*/ LPPERSISTMESSAGE FAR * ppPersistMessage) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIFormAdviseSink
+DECLARE_MAPI_INTERFACE_(IMAPIFormAdviseSink, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIFORMADVISESINK_METHODS(PURE)
+};
+
+
+/*-- IMAPIViewAdviseSink ---------------------------------------------------*/
+/* Part of view context, held by form; receives notifications from the form.
+ */
+
+#define MAPI_IMAPIVIEWADVISESINK_METHODS(IPURE) \
+ MAPIMETHOD(OnShutdown)(THIS) IPURE; \
+ MAPIMETHOD(OnNewMessage)(THIS) IPURE; \
+ MAPIMETHOD(OnPrint)(THIS_ \
+ /*in*/ ULONG dwPageNumber, \
+ /*in*/ HRESULT hrStatus) IPURE; \
+ MAPIMETHOD(OnSubmitted) (THIS) IPURE; \
+ MAPIMETHOD(OnSaved) (THIS) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIViewAdviseSink
+DECLARE_MAPI_INTERFACE_(IMAPIViewAdviseSink, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIVIEWADVISESINK_METHODS(PURE)
+};
+
+
+/*-- IMAPIFormInfo ---------------------------------------------------------*/
+/* Is implemented by registries. Describes the form.
+ */
+
+/* Single enum value */
+
+typedef struct
+{ /* fpev */
+ LPTSTR pszDisplayName; /* carries the display string */
+ ULONG nVal; /* the value for the above enumeration */
+} SMAPIFormPropEnumVal, FAR * LPMAPIFORMPROPENUMVAL;
+
+/* MAPI Form property descriptor */
+
+/*
+ * Values for the tag in the SMAPIFormProp structure
+ *
+ * Microsoft reserves the range from 0 to 0x3FFF for future use in its other
+ * forms registry implementations.
+ */
+
+typedef ULONG FORMPROPSPECIALTYPE;
+
+#define FPST_VANILLA 0
+#define FPST_ENUM_PROP 1
+
+typedef struct
+{
+ ULONG ulFlags; /* Contains MAPI_UNICODE if strings are UNICODE */
+ ULONG nPropType; /* type of the property, hiword is 0 */
+ MAPINAMEID nmid; /* id of the property */
+ LPTSTR pszDisplayName;
+ FORMPROPSPECIALTYPE nSpecialType; /* tag for the following union */
+ union
+ {
+ struct
+ {
+ MAPINAMEID nmidIdx;
+ ULONG cfpevAvailable; /* # of enums */
+ LPMAPIFORMPROPENUMVAL pfpevAvailable;
+ } s1; /* Property String/Number association Enumeration */
+ } u;
+} SMAPIFormProp, FAR * LPMAPIFORMPROP;
+
+/* Array of form properties */
+
+typedef struct
+{
+ ULONG cProps;
+ ULONG ulPad; /* Pad to 8-byte alignment for insurance */
+ SMAPIFormProp aFormProp[MAPI_DIM];
+} SMAPIFormPropArray, FAR * LPMAPIFORMPROPARRAY;
+
+#define CbMAPIFormPropArray(_c) \
+ (offsetof(SMAPIFormPropArray, aFormProp) + \
+ (_c)*sizeof(SMAPIFormProp))
+
+/* Structure defining the layout of an mapi verb description */
+
+typedef struct
+{
+ LONG lVerb;
+ LPTSTR szVerbname;
+ DWORD fuFlags;
+ DWORD grfAttribs;
+ ULONG ulFlags; /* Either 0 or MAPI_UNICODE */
+} SMAPIVerb, FAR * LPMAPIVERB;
+
+/* Structure used for returning arrays of mapi verbs */
+
+typedef struct
+{
+ ULONG cMAPIVerb; /* Number of verbs in the structure */
+ SMAPIVerb aMAPIVerb[MAPI_DIM];
+} SMAPIVerbArray, FAR * LPMAPIVERBARRAY;
+
+#define CbMAPIVerbArray(_c) \
+ (offsetof(SMAPIVerbArray, aMAPIVerb) + \
+ (_c)*sizeof(SMAPIVerb))
+
+#define MAPI_IMAPIFORMINFO_METHODS(IPURE) \
+ MAPIMETHOD(CalcFormPropSet)(THIS_ \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPMAPIFORMPROPARRAY FAR * ppFormPropArray) IPURE; \
+ MAPIMETHOD(CalcVerbSet)(THIS_ \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPMAPIVERBARRAY FAR * ppMAPIVerbArray) IPURE; \
+ MAPIMETHOD(MakeIconFromBinary)(THIS_ \
+ /*in*/ ULONG nPropID, \
+ /*out*/ HICON FAR* phicon) IPURE; \
+ MAPIMETHOD(SaveForm)(THIS_ \
+ /*in*/ LPCTSTR szFileName) IPURE; \
+ MAPIMETHOD(OpenFormContainer)(THIS_ \
+ /*out*/ LPMAPIFORMCONTAINER FAR * ppformcontainer) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIFormInfo
+DECLARE_MAPI_INTERFACE_(IMAPIFormInfo, IMAPIProp)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE) /* note: subsumes getlasterror */
+ MAPI_IMAPIFORMINFO_METHODS(PURE)
+};
+
+
+/* Enumeration of permissible values for PR_FORM_MESSAGE_BEHAVIOR */
+
+#define MAPI_MESSAGE_BEHAVIOR_IPM 0
+#define MAPI_MESSAGE_BEHAVIOR_FOLDER 1
+
+
+/*-- IMAPIFormMgr ----------------------------------------------------------*/
+/* The client-visible interface for form resolution and dispatch.
+ */
+
+/* Structure containing an array of message class strings */
+
+typedef struct
+{
+ ULONG cValues;
+ LPCSTR aMessageClass[MAPI_DIM];
+} SMessageClassArray, FAR * LPSMESSAGECLASSARRAY;
+
+#define CbMessageClassArray(_c) \
+ (offsetof(SMessageClassArray, aMessageClass) + (_c)*sizeof(LPCSTR))
+
+/* Structure containing an array of IMAPIFormInfo interfaces */
+
+typedef struct
+{
+ ULONG cForms;
+ LPMAPIFORMINFO aFormInfo[MAPI_DIM];
+} SMAPIFormInfoArray, FAR * LPSMAPIFORMINFOARRAY;
+
+#define CbMAPIFormInfoArray(_c) \
+ (offsetof(SMAPIFormInfoArray, aFormInfo) + \
+ (_c)*sizeof(LPMAPIFORMINFO))
+
+/* Flags for IMAPIFormMgr::SelectFormContainer */
+
+#define MAPIFORM_SELECT_ALL_REGISTRIES 0
+#define MAPIFORM_SELECT_FOLDER_REGISTRY_ONLY 1
+#define MAPIFORM_SELECT_NON_FOLDER_REGISTRY_ONLY 2
+
+/* Flags for IMAPIFormMgr::CalcFormPropSet */
+
+#define FORMPROPSET_UNION 0
+#define FORMPROPSET_INTERSECTION 1
+
+/* Flags for IMAPIFormMgr::ResolveMessageClass and
+ IMAPIFormMgr::ResolveMultipleMessageClasses */
+
+#define MAPIFORM_EXACTMATCH 0x0020
+
+#define MAPI_IMAPIFORMMGR_METHODS(IPURE) \
+ MAPIMETHOD(LoadForm)(THIS_ \
+ /*in*/ ULONG ulUIParam, \
+ /*in*/ ULONG ulFlags, \
+ /*in*/ LPCSTR lpszMessageClass, \
+ /*in*/ ULONG ulMessageStatus, \
+ /*in*/ ULONG ulMessageFlags, \
+ /*in*/ LPMAPIFOLDER pFolderFocus, \
+ /*in*/ LPMAPIMESSAGESITE pMessageSite, \
+ /*in*/ LPMESSAGE pmsg, \
+ /*in*/ LPMAPIVIEWCONTEXT pViewContext, \
+ /*in*/ REFIID riid, \
+ /*out*/ LPVOID FAR *ppvObj) IPURE; \
+ MAPIMETHOD(ResolveMessageClass)(THIS_ \
+ /*in*/ LPCSTR szMsgClass, \
+ /*in*/ ULONG ulFlags, \
+ /*in*/ LPMAPIFOLDER pFolderFocus, /* can be null */ \
+ /*out*/ LPMAPIFORMINFO FAR* ppResult) IPURE; \
+ MAPIMETHOD(ResolveMultipleMessageClasses)(THIS_ \
+ /*in*/ LPSMESSAGECLASSARRAY pMsgClasses, \
+ /*in*/ ULONG ulFlags, \
+ /*in*/ LPMAPIFOLDER pFolderFocus, /* can be null */ \
+ /*out*/ LPSMAPIFORMINFOARRAY FAR * pfrminfoarray) IPURE; \
+ MAPIMETHOD(CalcFormPropSet)(THIS_ \
+ /*in*/ LPSMAPIFORMINFOARRAY pfrminfoarray, \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPMAPIFORMPROPARRAY FAR* ppResults) IPURE; \
+ MAPIMETHOD(CreateForm)(THIS_ \
+ /*in*/ ULONG ulUIParam, \
+ /*in*/ ULONG ulFlags, \
+ /*in*/ LPMAPIFORMINFO pfrminfoToActivate, \
+ /*in*/ REFIID refiidToAsk, \
+ /*out*/ LPVOID FAR* ppvObj) IPURE; \
+ MAPIMETHOD(SelectForm)(THIS_ \
+ /*in*/ ULONG ulUIParam, \
+ /*in*/ ULONG ulFlags, \
+ /*in*/ LPCTSTR pszTitle, \
+ /*in*/ LPMAPIFOLDER pfld, \
+ /*out*/ LPMAPIFORMINFO FAR * ppfrminfoReturned) IPURE; \
+ MAPIMETHOD(SelectMultipleForms)(THIS_ \
+ /*in*/ ULONG ulUIParam, \
+ /*in*/ ULONG ulFlags, \
+ /*in*/ LPCTSTR pszTitle, \
+ /*in*/ LPMAPIFOLDER pfld, \
+ /*in*/ LPSMAPIFORMINFOARRAY pfrminfoarray, \
+ /*out*/ LPSMAPIFORMINFOARRAY FAR * ppfrminfoarray) IPURE; \
+ MAPIMETHOD(SelectFormContainer)(THIS_ \
+ /*in*/ ULONG ulUIParam, \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPMAPIFORMCONTAINER FAR * lppfcnt) IPURE; \
+ MAPIMETHOD(OpenFormContainer)(THIS_ \
+ /*in*/ HFRMREG hfrmreg, \
+ /*in*/ LPUNKNOWN lpunk, \
+ /*out*/ LPMAPIFORMCONTAINER FAR * lppfcnt) IPURE; \
+ MAPIMETHOD(PrepareForm)(THIS_ \
+ /*in*/ ULONG ulUIParam, \
+ /*in*/ ULONG ulFlags, \
+ /*in*/ LPMAPIFORMINFO pfrminfo) IPURE; \
+ MAPIMETHOD(IsInConflict)(THIS_ \
+ /*in*/ ULONG ulMessageFlags, \
+ /*in*/ ULONG ulMessageStatus, \
+ /*in*/ LPCSTR szMessageClass, \
+ /*in*/ LPMAPIFOLDER pFolderFocus) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIFormMgr
+DECLARE_MAPI_INTERFACE_(IMAPIFormMgr, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_GETLASTERROR_METHOD(PURE)
+ MAPI_IMAPIFORMMGR_METHODS(PURE)
+};
+
+/* Platform numbers (used in .CFG files for forms) */
+
+#define MAPIFORM_CPU_X86 1
+#define MAPIFORM_CPU_MIP 2
+#define MAPIFORM_CPU_AXP 3
+#define MAPIFORM_CPU_PPC 4
+#define MAPIFORM_CPU_M68 5
+
+#define MAPIFORM_OS_WIN_31 1
+#define MAPIFORM_OS_WINNT_35 2
+#define MAPIFORM_OS_WIN_95 3
+#define MAPIFORM_OS_MAC_7x 4
+#define MAPIFORM_OS_WINNT_40 5
+
+#define MAPIFORM_PLATFORM(CPU, OS) ((ULONG) ((((ULONG) CPU) << 16) | OS))
+
+
+/*-- IMAPIFormContainer -------------------------------------------------*/
+
+/* Flags for IMAPIFormMgr::CalcFormPropSet */
+
+/* #define FORMPROPSET_UNION 0 */
+/* #define FORMPROPSET_INTERSECTION 1 */
+
+/* Flags for IMAPIFormMgr::InstallForm */
+
+#define MAPIFORM_INSTALL_DIALOG MAPI_DIALOG
+#define MAPIFORM_INSTALL_OVERWRITEONCONFLICT 0x0010
+
+/* Flags for IMAPIFormContainer::ResolveMessageClass and
+ IMAPIFormContainer::ResolveMultipleMessageClasses */
+/* #define MAPIFORM_EXACTIMATCH 0x0020 */
+
+#define MAPI_IMAPIFORMCONTAINER_METHODS(IPURE) \
+ MAPIMETHOD(InstallForm)(THIS_ \
+ /*in*/ ULONG ulUIParam, \
+ /*in*/ ULONG ulFlags, \
+ /*in*/ LPCTSTR szCfgPathName) IPURE; \
+ MAPIMETHOD(RemoveForm)(THIS_ \
+ /*in*/ LPCSTR szMessageClass) IPURE; \
+ MAPIMETHOD(ResolveMessageClass) (THIS_ \
+ /*in*/ LPCSTR szMessageClass, \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPMAPIFORMINFO FAR * pforminfo) IPURE; \
+ MAPIMETHOD(ResolveMultipleMessageClasses) (THIS_ \
+ /*in*/ LPSMESSAGECLASSARRAY pMsgClassArray, \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPSMAPIFORMINFOARRAY FAR * ppfrminfoarray) IPURE; \
+ MAPIMETHOD(CalcFormPropSet)(THIS_ \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPMAPIFORMPROPARRAY FAR * ppResults) IPURE; \
+ MAPIMETHOD(GetDisplay)(THIS_ \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPTSTR FAR * pszDisplayName) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIFormContainer
+DECLARE_MAPI_INTERFACE_(IMAPIFormContainer, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_GETLASTERROR_METHOD(PURE)
+ MAPI_IMAPIFORMCONTAINER_METHODS(PURE)
+};
+
+/*-- IMAPIFormFactory ------------------------------------------------------*/
+
+#define MAPI_IMAPIFORMFACTORY_METHODS(IPURE) \
+ MAPIMETHOD(CreateClassFactory) (THIS_ \
+ /*in*/ REFCLSID clsidForm, \
+ /*in*/ ULONG ulFlags, \
+ /*out*/ LPCLASSFACTORY FAR * lppClassFactory) IPURE; \
+ MAPIMETHOD(LockServer) (THIS_ \
+ /*in*/ ULONG ulFlags, \
+ /*in*/ ULONG fLockServer) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPIFormFactory
+DECLARE_MAPI_INTERFACE_(IMAPIFormFactory, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_GETLASTERROR_METHOD(PURE)
+ MAPI_IMAPIFORMFACTORY_METHODS(PURE)
+};
+
+#endif /* MAPIFORM_H */
+
+
diff --git a/public/sdk/inc/mapiguid.h b/public/sdk/inc/mapiguid.h
new file mode 100644
index 000000000..c1d62a2fd
--- /dev/null
+++ b/public/sdk/inc/mapiguid.h
@@ -0,0 +1,336 @@
+/*
+ * M A P I G U I D . H
+ *
+ * Master definitions of all GUID's for MAPI.
+ *
+ * When included without INITGUID defined, this header file
+ * defines symbols that reference IIDs elsewhere.
+ *
+ * When included with INITGUID defined and a "USES_IID_I..."
+ * statement for each IID used by the subsystem, it generates the
+ * bytes for those actual IIDs into the associated object file.
+ *
+ * This range of 256 GUIDs reserved by OLE for MAPI use October 5, 1992.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+/*
+ * List of GUIDS allocated by MAPI
+ *
+ * 0x00020300 IID_IMAPISession
+ * 0x00020301 IID_IMAPITable
+ * 0x00020302 IID_IMAPIAdviseSink
+ * 0x00020303 IID_IMAPIProp
+ * 0x00020304 IID_IProfSect
+ * 0x00020305 IID_IMAPIStatus
+ * 0x00020306 IID_IMsgStore
+ * 0x00020307 IID_IMessage
+ * 0x00020308 IID_IAttachment
+ * 0x00020309 IID_IAddrBook
+ * 0x0002030A IID_IMailUser
+ * 0x0002030B IID_IMAPIContainer
+ * 0x0002030C IID_IMAPIFolder
+ * 0x0002030D IID_IABContainer
+ * 0x0002030E IID_IDistList
+ * 0x0002030F IID_IMAPISup
+ * 0x00020310 IID_IMSProvider
+ * 0x00020311 IID_IABProvider
+ * 0x00020312 IID_IXPProvider
+ * 0x00020313 IID_IMSLogon
+ * 0x00020314 IID_IABLogon
+ * 0x00020315 IID_IXPLogon
+ * 0x00020316 IID_IMAPITableData
+ * 0x00020317 IID_IMAPISpoolerInit
+ * 0x00020318 IID_IMAPISpoolerSession
+ * 0x00020319 IID_ITNEF
+ * 0x0002031A IID_IMAPIPropData
+ * 0x0002031B IID_IMAPIControl
+ * 0x0002031C IID_IProfAdmin
+ * 0x0002031D IID_IMsgServiceAdmin
+ * 0x0002031E IID_IMAPISpoolerService
+ * 0x0002031F IID_IMAPIProgress
+ * 0x00020320 IID_ISpoolerHook
+ * 0x00020321 IID_IMAPIViewContext
+ * 0x00020322 IID_IMAPIFormMgr
+ * 0x00020323 IID_IEnumMAPIFormProp
+ * 0x00020324 IID_IMAPIFormInfo
+ * 0x00020325 IID_IProviderAdmin
+ * 0x00020327 IID_IMAPIForm
+ * 0x00020328 PS_MAPI
+ * 0x00020329 PS_PUBLIC_STRINGS
+ * 0x0002032A IID_IPersistMessage
+ * 0x0002032B IID_IMAPIViewAdviseSink
+ * 0x0002032C IID_IStreamDocfile
+ * 0x0002032D IID_IMAPIFormProp
+ * 0x0002032E IID_IMAPIFormContainer
+ * 0x0002032F IID_IMAPIFormAdviseSink
+ * 0x00020330 IID_IStreamTnef
+ * 0x00020350 IID_IMAPIFormFactory
+ * 0x00020370 IID_IMAPIMessageSite
+ * 0x00020380 PS_ROUTING_EMAIL_ADDRESSES
+ * 0x00020381 PS_ROUTING_ADDRTYPE
+ * 0x00020382 PS_ROUTING_DISPLAY_NAME
+ * 0x00020383 PS_ROUTING_ENTRYID
+ * 0x00020384 PS_ROUTING_SEARCH_KEY
+ * 0x00020385 MUID_PROFILE_INSTANCE
+ *
+ * The remaining GUIDs from 0x00020300 to 0x000203FF are reserved by
+ * MAPI for future use. The current maximum used by MAPI is 0x00020385
+ *
+ */
+
+#ifndef MAPIGUID_H
+#ifdef INITGUID
+#define MAPIGUID_H
+#endif
+
+/* Derive from IUnknown */
+#if !defined(INITGUID) || defined(USES_IID_IMAPISession)
+DEFINE_OLEGUID(IID_IMAPISession, 0x00020300, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMAPITable)
+DEFINE_OLEGUID(IID_IMAPITable, 0x00020301, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMAPIAdviseSink)
+DEFINE_OLEGUID(IID_IMAPIAdviseSink, 0x00020302, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMAPIControl)
+DEFINE_OLEGUID(IID_IMAPIControl, 0x0002031B, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IProfAdmin)
+DEFINE_OLEGUID(IID_IProfAdmin, 0x0002031C, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMsgServiceAdmin)
+DEFINE_OLEGUID(IID_IMsgServiceAdmin,0x0002031D, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IProviderAdmin)
+DEFINE_OLEGUID(IID_IProviderAdmin, 0x00020325, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMAPIProgress)
+DEFINE_OLEGUID(IID_IMAPIProgress, 0x0002031F, 0, 0);
+#endif
+
+/* MAPIProp or derive from MAPIProp */
+#if !defined(INITGUID) || defined(USES_IID_IMAPIProp)
+DEFINE_OLEGUID(IID_IMAPIProp, 0x00020303, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IProfSect)
+DEFINE_OLEGUID(IID_IProfSect, 0x00020304, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMAPIStatus)
+DEFINE_OLEGUID(IID_IMAPIStatus, 0x00020305, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMsgStore)
+DEFINE_OLEGUID(IID_IMsgStore, 0x00020306, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMessage)
+DEFINE_OLEGUID(IID_IMessage, 0x00020307, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IAttachment)
+DEFINE_OLEGUID(IID_IAttachment, 0x00020308, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IAddrBook)
+DEFINE_OLEGUID(IID_IAddrBook, 0x00020309, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMailUser)
+DEFINE_OLEGUID(IID_IMailUser, 0x0002030A, 0, 0);
+#endif
+
+/* MAPIContainer or derive from MAPIContainer */
+#if !defined(INITGUID) || defined(USES_IID_IMAPIContainer)
+DEFINE_OLEGUID(IID_IMAPIContainer, 0x0002030B, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMAPIFolder)
+DEFINE_OLEGUID(IID_IMAPIFolder, 0x0002030C, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IABContainer)
+DEFINE_OLEGUID(IID_IABContainer, 0x0002030D, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IDistList)
+DEFINE_OLEGUID(IID_IDistList, 0x0002030E, 0, 0);
+#endif
+
+/* MAPI Support Object */
+#if !defined(INITGUID) || defined(USES_IID_IMAPISup)
+DEFINE_OLEGUID(IID_IMAPISup, 0x0002030F, 0, 0);
+#endif
+
+/* Provider INIT objects */
+#if !defined(INITGUID) || defined(USES_IID_IMSProvider)
+DEFINE_OLEGUID(IID_IMSProvider, 0x00020310, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IABProvider)
+DEFINE_OLEGUID(IID_IABProvider, 0x00020311, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IXPProvider)
+DEFINE_OLEGUID(IID_IXPProvider, 0x00020312, 0, 0);
+#endif
+
+/* Provider LOGON Objects */
+#if !defined(INITGUID) || defined(USES_IID_IMSLogon)
+DEFINE_OLEGUID(IID_IMSLogon, 0x00020313, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IABLogon)
+DEFINE_OLEGUID(IID_IABLogon, 0x00020314, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IXPLogon)
+DEFINE_OLEGUID(IID_IXPLogon, 0x00020315, 0, 0);
+#endif
+
+/* IMAPITable-in-memory Table Data Object */
+#if !defined(INITGUID) || defined(USES_IID_IMAPITableData)
+DEFINE_OLEGUID(IID_IMAPITableData, 0x00020316, 0, 0);
+#endif
+
+/* MAPI Spooler Init Object (internal) */
+#if !defined(INITGUID) || defined(USES_IID_IMAPISpoolerInit)
+DEFINE_OLEGUID(IID_IMAPISpoolerInit, 0x00020317, 0, 0);
+#endif
+
+/* MAPI Spooler Session Object (internal) */
+#if !defined(INITGUID) || defined(USES_IID_IMAPISpoolerSession)
+DEFINE_OLEGUID(IID_IMAPISpoolerSession, 0x00020318, 0, 0);
+#endif
+
+/* MAPI TNEF Object Interface */
+#if !defined(INITGUID) || defined(USES_IID_ITNEF)
+DEFINE_OLEGUID(IID_ITNEF, 0x00020319, 0, 0);
+#endif
+
+/* IMAPIProp-in-memory Property Data Object */
+#if !defined(INITGUID) || defined(USES_IID_IMAPIPropData)
+DEFINE_OLEGUID(IID_IMAPIPropData, 0x0002031A, 0, 0);
+#endif
+
+/* MAPI Spooler Hook Object */
+#if !defined(INITGUID) || defined(USES_IID_ISpoolerHook)
+DEFINE_OLEGUID(IID_ISpoolerHook, 0x00020320, 0, 0);
+#endif
+
+/* MAPI Spooler Service Object */
+#if !defined(INITGUID) || defined(USES_IID_IMAPISpoolerService)
+DEFINE_OLEGUID(IID_IMAPISpoolerService, 0x0002031E, 0, 0);
+#endif
+
+/* MAPI forms, form manager, etc. */
+#if !defined(INITGUID) || defined(USES_IID_IMAPIViewContext)
+DEFINE_OLEGUID(IID_IMAPIViewContext, 0x00020321, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMAPIFormMgr)
+DEFINE_OLEGUID(IID_IMAPIFormMgr, 0x00020322, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IEnumMAPIFormProp)
+DEFINE_OLEGUID(IID_IEnumMAPIFormProp, 0x00020323, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMAPIFormInfo)
+DEFINE_OLEGUID(IID_IMAPIFormInfo, 0x00020324, 0, 0);
+#endif
+#if !defined(INITGUID) || defined(USES_IID_IMAPIForm)
+DEFINE_OLEGUID(IID_IMAPIForm, 0x00020327, 0, 0);
+#endif
+
+
+/* Well known guids for name<->id mappings */
+
+/* The name of MAPI's property set */
+#if !defined(INITGUID) || defined(USES_PS_MAPI)
+DEFINE_OLEGUID(PS_MAPI, 0x00020328, 0, 0);
+#endif
+
+/* The name of the set of public strings */
+#if !defined(INITGUID) || defined(USES_PS_PUBLIC_STRINGS)
+DEFINE_OLEGUID(PS_PUBLIC_STRINGS, 0x00020329, 0, 0);
+#endif
+
+
+
+
+/* MAPI forms, form manager, (cont) */
+#if !defined(INITGUID) || defined(USES_IID_IPersistMessage)
+DEFINE_OLEGUID(IID_IPersistMessage, 0x0002032A, 0, 0);
+#endif
+
+/* IMAPIViewAdviseSink */
+#if !defined(INITGUID) || defined(USES_IID_IMAPIViewAdviseSink)
+DEFINE_OLEGUID(IID_IMAPIViewAdviseSink, 0x0002032B, 0, 0);
+#endif
+
+/* Message Store OpenProperty */
+#if !defined(INITGUID) || defined(USES_IID_IStreamDocfile)
+DEFINE_OLEGUID(IID_IStreamDocfile, 0x0002032C, 0, 0);
+#endif
+
+/* IMAPIFormProp */
+#if !defined(INITGUID) || defined(USES_IID_IMAPIFormProp)
+DEFINE_OLEGUID(IID_IMAPIFormProp, 0x0002032D, 0, 0);
+#endif
+
+/* IMAPIFormContainer */
+#if !defined(INITGUID) || defined(USES_IID_IMAPIFormContainer)
+DEFINE_OLEGUID(IID_IMAPIFormContainer, 0x0002032E, 0, 0);
+#endif
+
+/* IMAPIFormAdviseSink */
+#if !defined(INITGUID) || defined(USES_IID_IMAPIFormAdviseSink)
+DEFINE_OLEGUID(IID_IMAPIFormAdviseSink, 0x0002032F, 0, 0);
+#endif
+
+/* TNEF OpenProperty */
+#if !defined(INITGUID) || defined(USES_IID_IStreamTnef)
+DEFINE_OLEGUID(IID_IStreamTnef, 0x00020330, 0, 0);
+#endif
+
+/* IMAPIFormFactory */
+#if !defined(INITGUID) || defined(USES_IID_IMAPIFormFactory)
+DEFINE_OLEGUID(IID_IMAPIFormFactory, 0x00020350, 0, 0);
+#endif
+
+/* IMAPIMessageSite */
+#if !defined(INITGUID) || defined(USES_IID_IMAPIMessageSite)
+DEFINE_OLEGUID(IID_IMAPIMessageSite, 0x00020370, 0, 0);
+#endif
+
+
+
+/* Well known guids routing property sets.
+ Usefull when writing applications that route documents
+ (i.e. Workflow) across gateways. Gateways that speak MAPI
+ should convert the properties found in the follow property
+ sets appropriately. */
+
+/* PS_ROUTING_EMAIL_ADDRESSES: Addresses that need converting at gateways, etc. */
+#if !defined(INITGUID) || defined(USES_PS_ROUTING_EMAIL_ADDRESSES)
+DEFINE_OLEGUID(PS_ROUTING_EMAIL_ADDRESSES, 0x00020380, 0, 0);
+#endif
+
+/* PS_ROUTING_ADDRTYPE: Address types that need converting at gateways, etc. */
+#if !defined(INITGUID) || defined(USES_PS_ROUTING_ADDRTYPE)
+DEFINE_OLEGUID(PS_ROUTING_ADDRTYPE, 0x00020381, 0, 0);
+#endif
+
+/* PS_ROUTING_DISPLAY_NAME: Display Name that corresponds to the other props */
+#if !defined(INITGUID) || defined(USES_PS_ROUTING_DISPLAY_NAME)
+DEFINE_OLEGUID(PS_ROUTING_DISPLAY_NAME, 0x00020382, 0, 0);
+#endif
+
+/* PS_ROUTING_ENTRYID: (optional) EntryIDs that need converting at gateways, etc. */
+#if !defined(INITGUID) || defined(USES_PS_ROUTING_ENTRYID)
+DEFINE_OLEGUID(PS_ROUTING_ENTRYID, 0x00020383, 0, 0);
+#endif
+
+/* PS_ROUTING_SEARCH_KEY: (optional) search keys that need converting at gateways, etc. */
+#if !defined(INITGUID) || defined(USES_PS_ROUTING_SEARCH_KEY)
+DEFINE_OLEGUID(PS_ROUTING_SEARCH_KEY, 0x00020384, 0, 0);
+#endif
+
+/* MUID_PROFILE_INSTANCE
+ Well known section in a profile which contains a property (PR_SEARCH_KEY) which is unique
+ for any given profile. Applications and providers can depend on this value as being
+ different for each unique profile. */
+#if !defined(INITGUID) || defined(USES_MUID_PROFILE_INSTANCE)
+DEFINE_OLEGUID(MUID_PROFILE_INSTANCE, 0x00020385, 0, 0);
+#endif
+
+#endif /* MAPIGUID_H */
+
diff --git a/public/sdk/inc/mapinls.h b/public/sdk/inc/mapinls.h
new file mode 100644
index 000000000..c573c4899
--- /dev/null
+++ b/public/sdk/inc/mapinls.h
@@ -0,0 +1,209 @@
+/*
+ * M A P I N L S . H
+ *
+ * Internationalization Support Utilities
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef _MAPINLS_H_
+#define _MAPINLS_H_
+
+#if defined (WIN32) && !defined (_WIN32)
+#define _WIN32
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* We don't want to include windows.h in case that conflicts with an */
+/* earlier inclusion of compobj.h */
+
+#if !defined(WINAPI)
+ #if defined(_WIN32) && (_MSC_VER >= 800)
+ #define WINAPI __stdcall
+ #elif defined(WIN16)
+ #define WINAPI _far _pascal
+ #else
+ #define WINAPI _far _pascal
+ #endif
+#endif
+
+#if defined(DOS) || defined(_MAC)
+#include <string.h>
+#endif
+
+#ifndef FAR
+#define FAR
+#endif
+
+typedef unsigned char BYTE;
+typedef unsigned short WORD;
+typedef unsigned long DWORD;
+typedef unsigned int UINT;
+typedef int BOOL;
+
+#ifndef __CHAR_DEFINED__
+typedef char CHAR;
+#endif
+
+#ifdef UNICODE
+typedef WCHAR TCHAR;
+#else
+typedef char TCHAR;
+#endif
+
+typedef unsigned short WCHAR;
+typedef WCHAR FAR * LPWSTR;
+typedef const WCHAR FAR * LPCWSTR;
+typedef CHAR FAR * LPSTR;
+typedef const CHAR FAR * LPCSTR;
+typedef TCHAR FAR * LPTSTR;
+typedef const TCHAR FAR * LPCTSTR;
+typedef DWORD LCID;
+typedef const void FAR * LPCVOID;
+
+#ifndef _MAC
+#ifndef LPOLESTR
+#if !defined (_WIN32)
+
+#define LPOLESTR LPSTR
+#define LPCOLESTR LPCSTR
+#define OLECHAR char
+#define OLESTR(str) str
+
+#else /* Win32 */
+
+#define LPOLESTR LPWSTR
+#define LPCOLESTR LPCWSTR
+#define OLECHAR WCHAR
+#define OLESTR(str) L##str
+
+#endif /* !_WIN32 */
+#endif /* LPOLESTR */
+#endif /* _MAC */
+
+#define NORM_IGNORECASE 0x00000001 /* ignore case */
+#define NORM_IGNORENONSPACE 0x00000002 /* ignore diacritics */
+#define NORM_IGNORESYMBOLS 0x00000004 /* ignore symbols */
+
+#if defined (_WIN32) /* from winnls.h */
+#define NORM_IGNOREKANATYPE 0x00010000 /* ignore kanatype */
+#define NORM_IGNOREWIDTH 0x00020000 /* ignore width */
+#elif defined (WIN16) /* from olenls.h */
+#define NORM_IGNOREWIDTH 0x00000008 /* ignore width */
+#define NORM_IGNOREKANATYPE 0x00000040 /* ignore kanatype */
+#endif
+
+#if defined(WIN16)
+
+#define lstrcpyA lstrcpy
+#define lstrlenA lstrlen
+#define lstrcmpA lstrcmp
+#define lstrcmpiA lstrcmpi
+#define LoadStringA LoadString
+#define IsBadStringPtrA(a1, a2) IsBadStringPtr(a1, a2)
+#define wvsprintfA wvsprintf
+#define MessageBoxA MessageBox
+#define GetModuleHandleA GetModuleHandle
+#define CreateWindowA CreateWindow
+#define RegisterClassA RegisterClass
+#define CharToOemBuff AnsiToOemBuff
+#define CharToOem AnsiToOem
+#define CharUpperBuff AnsiUpperBuff
+#define CharUpper AnsiUpper
+
+#elif defined(DOS) || defined(_MAC)
+
+#define IsBadReadPtr(lp, cb) (FALSE)
+#define IsBadWritePtr(lp, cb) (FALSE)
+#define IsBadHugeReadPtr(lp, cb) (FALSE)
+#define IsBadHugeWritePtr(lp, cb) (FALSE)
+#define IsBadCodePtr(lpfn) (FALSE)
+#ifdef _MAC
+#undef IsBadStringPtr
+#endif
+#define IsBadStringPtr(lpsz, cchMax) (FALSE)
+#define IsBadStringPtrA(lpsz, cchMax) (FALSE)
+
+#if defined(DOS)
+
+#define lstrcpyA strcpy
+#define lstrlenA strlen
+#define lstrcmpA strcmp
+#define lstrcmp strcmp
+#define lstrcmpi strcmpi
+#define lstrcpy strcpy
+#define lstrcat strcat
+#define lstrlen strlen
+#define wsprintf sprintf
+
+#endif
+#endif
+
+#if defined(DOS) || defined(WIN16)
+/* Simulate effect of afx header */
+#define __T(x) x
+#define _T(x) __T(x)
+#define TEXT _T
+#endif
+
+#define CP_ACP 0 /* default to ANSI code page */
+#define CP_OEMCP 1 /* default to OEM code page */
+
+LCID WINAPI MNLS_GetUserDefaultLCID(void);
+UINT WINAPI MNLS_GetACP(void);
+int WINAPI MNLS_CompareStringA(LCID Locale, DWORD dwCmpFlags,
+ LPCSTR lpString1, int cchCount1, LPCSTR lpString2,
+ int cchCount2);
+int WINAPI MNLS_CompareStringW(LCID Locale, DWORD dwCmpFlags,
+ LPCWSTR lpString1, int cchCount1, LPCWSTR lpString2,
+ int cchCount2);
+int WINAPI MNLS_MultiByteToWideChar(UINT uCodePage, DWORD dwFlags,
+ LPCSTR lpMultiByteStr, int cchMultiByte,
+ LPWSTR lpWideCharStr, int cchWideChar);
+int WINAPI MNLS_WideCharToMultiByte(UINT uCodePage, DWORD dwFlags,
+ LPCWSTR lpWideCharStr, int cchWideChar,
+ LPSTR lpMultiByteStr, int cchMultiByte,
+ LPCSTR lpDefaultChar, BOOL FAR *lpfUsedDefaultChar);
+int WINAPI MNLS_lstrlenW(LPCWSTR lpString);
+int WINAPI MNLS_lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2);
+LPWSTR WINAPI MNLS_lstrcpyW(LPWSTR lpString1, LPCWSTR lpString2);
+BOOL WINAPI MNLS_IsBadStringPtrW(LPCWSTR lpsz, UINT ucchMax);
+
+#if defined(_WIN32) && !defined(_WINNT) && !defined(_WIN95) && !defined(_MAC)
+#define _WINNT
+#endif
+
+#if !defined(_WINNT) && !defined(_WIN95)
+#define GetUserDefaultLCID MNLS_GetUserDefaultLCID
+#define GetACP MNLS_GetACP
+#define MultiByteToWideChar MNLS_MultiByteToWideChar
+#define WideCharToMultiByte MNLS_WideCharToMultiByte
+#define CompareStringA MNLS_CompareStringA
+#endif
+
+#if !defined(MAPI_NOWIDECHAR)
+
+#define lstrlenW MNLS_lstrlenW
+#define lstrcmpW MNLS_lstrcmpW
+#define lstrcpyW MNLS_lstrcpyW
+#define CompareStringW MNLS_CompareStringW
+
+#if defined(WIN16) || defined(_WINNT) || defined(_WIN95)
+#define IsBadStringPtrW MNLS_IsBadStringPtrW
+#elif defined(_MAC)
+#define IsBadStringPtrW(lpsz, cchMax) (FALSE)
+#else
+#define IsBadStringPtrW (FALSE)
+#endif
+
+#endif /* ! MAPI_NOWIDECHAR */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MAPINLS_H_ */
+
diff --git a/public/sdk/inc/mapispi.h b/public/sdk/inc/mapispi.h
new file mode 100644
index 000000000..cefef5132
--- /dev/null
+++ b/public/sdk/inc/mapispi.h
@@ -0,0 +1,927 @@
+/*
+ * M A P I S P I . H
+ *
+ * Defines the calls and structures exchanged between MAPI or the spooler
+ * and the MAPI service providers
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef MAPISPI_H
+#define MAPISPI_H
+/* Include common MAPI header files if they haven't been already. */
+#ifndef MAPIDEFS_H
+#include <mapidefs.h>
+#endif
+#ifndef MAPICODE_H
+#include <mapicode.h>
+#endif
+#ifndef MAPIGUID_H
+#include <mapiguid.h>
+#endif
+#ifndef MAPITAGS_H
+#include <mapitags.h>
+#endif
+
+#if defined (WIN16) || defined (DOS) || defined (DOS16)
+#include <storage.h>
+#endif
+
+#ifndef BEGIN_INTERFACE
+#define BEGIN_INTERFACE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* The MAPI SPI has a version number. MAPIX.DLL knows and supports
+ * one or more versions of the SPI. Each provider supports one or
+ * more versions of the SPI. Checks are performed in both MAPIX.DLL
+ * and in the provider to ensure that they agree to use exactly one
+ * version of the MAPI SPI.
+ *
+ * The SPI version number is composed of a major (8-bit) version,
+ * minor (8-bit) version, and micro (16-bit) version. The first
+ * retail ship of MAPI 1.0 is expected to be version 1.0.0.
+ * The major version number changes rarely.
+ * The minor version number changes opon each retail ship of
+ * MAPI if the SPI has been modified.
+ * The micro version number changes internally at Microsoft
+ * during development of MAPI.
+ *
+ * The version of the SPI documented by this set of header files
+ * is ALWAYS known as "CURRENT_SPI_VERSION". If you write a
+ * service provider, and get a new set of header files, and update
+ * your code to the new interface, you'll be at the "current" version.
+ */
+#define CURRENT_SPI_VERSION 0x00010010L
+
+/* Here are some well-known SPI version numbers:
+ * (These will eventually be useful for provider-writers who
+ * might choose to make provider DLLs that support more than
+ * one version of the MAPI SPI.
+ */
+#define PDK1_SPI_VERSION 0x00010000L /* 0.1.0 MAPI PDK1 Spring 1993 */
+
+#define PDK2_SPI_VERSION 0x00010008L /* 0.1.8 MAPI PDK2 Spring 1994 */
+
+#define PDK3_SPI_VERSION 0x00010010L /* 0.1.16 MAPI PDK3 Fall 1994 */
+
+/*
+ * Forward declaration of interface pointers specific to the service
+ * provider interface.
+ */
+DECLARE_MAPI_INTERFACE_PTR(IMAPISupport, LPMAPISUP);
+
+/* IMAPISupport Interface -------------------------------------------------- */
+
+/* Notification key structure for the MAPI notification engine */
+
+typedef struct
+{
+ ULONG cb; /* How big the key is */
+ BYTE ab[MAPI_DIM]; /* Key contents */
+} NOTIFKEY, FAR * LPNOTIFKEY;
+
+#define CbNewNOTIFKEY(_cb) (offsetof(NOTIFKEY,ab) + (_cb))
+#define CbNOTIFKEY(_lpkey) (offsetof(NOTIFKEY,ab) + (_lpkey)->cb)
+#define SizedNOTIFKEY(_cb, _name) \
+ struct _NOTIFKEY_ ## _name \
+{ \
+ ULONG cb; \
+ BYTE ab[_cb]; \
+} _name
+
+
+/* For Subscribe() */
+
+#define NOTIFY_SYNC ((ULONG) 0x40000000)
+
+/* For Notify() */
+
+#define NOTIFY_CANCELED ((ULONG) 0x80000000)
+
+
+/* From the Notification Callback function (well, this is really a ulResult) */
+
+#define CALLBACK_DISCONTINUE ((ULONG) 0x80000000)
+
+/* For Transport's SpoolerNotify() */
+
+#define NOTIFY_NEWMAIL ((ULONG) 0x00000001)
+#define NOTIFY_READYTOSEND ((ULONG) 0x00000002)
+#define NOTIFY_SENTDEFERRED ((ULONG) 0x00000004)
+#define NOTIFY_CRITSEC ((ULONG) 0x00001000)
+#define NOTIFY_NONCRIT ((ULONG) 0x00002000)
+#define NOTIFY_CONFIG_CHANGE ((ULONG) 0x00004000)
+#define NOTIFY_CRITICAL_ERROR ((ULONG) 0x10000000)
+
+/* For Message Store's SpoolerNotify() */
+
+#define NOTIFY_NEWMAIL_RECEIVED ((ULONG) 0x20000000)
+
+/* For ModifyStatusRow() */
+
+#define STATUSROW_UPDATE ((ULONG) 0x10000000)
+
+/* For IStorageFromStream() */
+
+#define STGSTRM_RESET ((ULONG) 0x00000000)
+#define STGSTRM_CURRENT ((ULONG) 0x10000000)
+#define STGSTRM_MODIFY ((ULONG) 0x00000002)
+#define STGSTRM_CREATE ((ULONG) 0x00001000)
+
+/* For GetOneOffTable() */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+/* For CreateOneOff() */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+/****** MAPI_SEND_NO_RICH_INFO ((ULONG) 0x00010000) */
+
+/* For ReadReceipt() */
+#define MAPI_NON_READ ((ULONG) 0x00000001)
+
+/* For DoConfigPropSheet() */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+/* Preprocessor calls: */
+
+/* PreprocessMessage, first ordinal in RegisterPreprocessor(). */
+
+typedef HRESULT (STDMETHODCALLTYPE PREPROCESSMESSAGE)(
+ LPVOID lpvSession,
+ LPMESSAGE lpMessage,
+ LPADRBOOK lpAdrBook,
+ LPMAPIFOLDER lpFolder,
+ LPALLOCATEBUFFER AllocateBuffer,
+ LPALLOCATEMORE AllocateMore,
+ LPFREEBUFFER FreeBuffer,
+ ULONG FAR *lpcOutbound,
+ LPMESSAGE FAR * FAR *lpppMessage,
+ LPADRLIST FAR *lppRecipList);
+
+/* RemovePreprocessInfo, second ordinal in RegisterPreprocessor(). */
+
+typedef HRESULT (STDMETHODCALLTYPE REMOVEPREPROCESSINFO)(LPMESSAGE lpMessage);
+
+/* Function pointer for GetReleaseInfo */
+
+#define MAPI_IMAPISUPPORT_METHODS1(IPURE) \
+ MAPIMETHOD(GetLastError) \
+ (THIS_ HRESULT hResult, \
+ ULONG ulFlags, \
+ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+ MAPIMETHOD(GetMemAllocRoutines) \
+ (THIS_ LPALLOCATEBUFFER FAR * lpAllocateBuffer, \
+ LPALLOCATEMORE FAR * lpAllocateMore, \
+ LPFREEBUFFER FAR * lpFreeBuffer) IPURE; \
+ MAPIMETHOD(Subscribe) \
+ (THIS_ LPNOTIFKEY lpKey, \
+ ULONG ulEventMask, \
+ ULONG ulFlags, \
+ LPMAPIADVISESINK lpAdviseSink, \
+ ULONG FAR * lpulConnection) IPURE; \
+ MAPIMETHOD(Unsubscribe) \
+ (THIS_ ULONG ulConnection) IPURE; \
+ MAPIMETHOD(Notify) \
+ (THIS_ LPNOTIFKEY lpKey, \
+ ULONG cNotification, \
+ LPNOTIFICATION lpNotifications, \
+ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(ModifyStatusRow) \
+ (THIS_ ULONG cValues, \
+ LPSPropValue lpColumnVals, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(OpenProfileSection) \
+ (THIS_ LPMAPIUID lpUid, \
+ ULONG ulFlags, \
+ LPPROFSECT FAR * lppProfileObj) IPURE; \
+ MAPIMETHOD(RegisterPreprocessor) \
+ (THIS_ LPMAPIUID lpMuid, \
+ LPTSTR lpszAdrType, \
+ LPTSTR lpszDLLName, \
+ LPSTR /* String8! */ lpszPreprocess, \
+ LPSTR /* String8! */ lpszRemovePreprocessInfo, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(NewUID) \
+ (THIS_ LPMAPIUID lpMuid) IPURE; \
+ MAPIMETHOD(MakeInvalid) \
+ (THIS_ ULONG ulFlags, \
+ LPVOID lpObject, \
+ ULONG ulRefCount, \
+ ULONG cMethods) IPURE; \
+
+#define MAPI_IMAPISUPPORT_METHODS2(IPURE) \
+ MAPIMETHOD(SpoolerYield) \
+ (THIS_ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(SpoolerNotify) \
+ (THIS_ ULONG ulFlags, \
+ LPVOID lpvData) IPURE; \
+ MAPIMETHOD(CreateOneOff) \
+ (THIS_ LPTSTR lpszName, \
+ LPTSTR lpszAdrType, \
+ LPTSTR lpszAddress, \
+ ULONG ulFlags, \
+ ULONG FAR * lpcbEntryID, \
+ LPENTRYID FAR * lppEntryID) IPURE; \
+ MAPIMETHOD(SetProviderUID) \
+ (THIS_ LPMAPIUID lpProviderID, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(CompareEntryIDs) \
+ (THIS_ ULONG cbEntry1, \
+ LPENTRYID lpEntry1, \
+ ULONG cbEntry2, \
+ LPENTRYID lpEntry2, \
+ ULONG ulCompareFlags, \
+ ULONG FAR * lpulResult) IPURE; \
+ MAPIMETHOD(OpenTemplateID) \
+ (THIS_ ULONG cbTemplateID, \
+ LPENTRYID lpTemplateID, \
+ ULONG ulTemplateFlags, \
+ LPMAPIPROP lpMAPIPropData, \
+ LPCIID lpInterface, \
+ LPMAPIPROP FAR * lppMAPIPropNew, \
+ LPMAPIPROP lpMAPIPropSibling) IPURE; \
+ MAPIMETHOD(OpenEntry) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPCIID lpInterface, \
+ ULONG ulOpenFlags, \
+ ULONG FAR * lpulObjType, \
+ LPUNKNOWN FAR * lppUnk) IPURE; \
+ MAPIMETHOD(GetOneOffTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(Address) \
+ (THIS_ ULONG FAR * lpulUIParam, \
+ LPADRPARM lpAdrParms, \
+ LPADRLIST FAR * lppAdrList) IPURE; \
+ MAPIMETHOD(Details) \
+ (THIS_ ULONG FAR * lpulUIParam, \
+ LPFNDISMISS lpfnDismiss, \
+ LPVOID lpvDismissContext, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPFNBUTTON lpfButtonCallback, \
+ LPVOID lpvButtonContext, \
+ LPTSTR lpszButtonText, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(NewEntry) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ ULONG cbEIDContainer, \
+ LPENTRYID lpEIDContainer, \
+ ULONG cbEIDNewEntryTpl, \
+ LPENTRYID lpEIDNewEntryTpl, \
+ ULONG FAR * lpcbEIDNewEntry, \
+ LPENTRYID FAR * lppEIDNewEntry) IPURE; \
+ MAPIMETHOD(DoConfigPropsheet) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ LPTSTR lpszTitle, \
+ LPMAPITABLE lpDisplayTable, \
+ LPMAPIPROP lpCOnfigData, \
+ ULONG ulTopPage) IPURE; \
+ MAPIMETHOD(CopyMessages) \
+ (THIS_ LPCIID lpSrcInterface, \
+ LPVOID lpSrcFolder, \
+ LPENTRYLIST lpMsgList, \
+ LPCIID lpDestInterface, \
+ LPVOID lpDestFolder, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(CopyFolder) \
+ (THIS_ LPCIID lpSrcInterface, \
+ LPVOID lpSrcFolder, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPCIID lpDestInterface, \
+ LPVOID lpDestFolder, \
+ LPTSTR lszNewFolderName, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ ULONG ulFlags) IPURE; \
+
+#define MAPI_IMAPISUPPORT_METHODS3(IPURE) \
+ MAPIMETHOD(DoCopyTo) \
+ (THIS_ LPCIID lpSrcInterface, \
+ LPVOID lpSrcObj, \
+ ULONG ciidExclude, \
+ LPCIID rgiidExclude, \
+ LPSPropTagArray lpExcludeProps, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ LPCIID lpDestInterface, \
+ LPVOID lpDestObj, \
+ ULONG ulFlags, \
+ LPSPropProblemArray FAR * lppProblems) IPURE; \
+ MAPIMETHOD(DoCopyProps) \
+ (THIS_ LPCIID lpSrcInterface, \
+ LPVOID lpSrcObj, \
+ LPSPropTagArray lpIncludeProps, \
+ ULONG ulUIParam, \
+ LPMAPIPROGRESS lpProgress, \
+ LPCIID lpDestInterface, \
+ LPVOID lpDestObj, \
+ ULONG ulFlags, \
+ LPSPropProblemArray FAR * lppProblems) IPURE; \
+ MAPIMETHOD(DoProgressDialog) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ LPMAPIPROGRESS FAR * lppProgress) IPURE; \
+ MAPIMETHOD(ReadReceipt) \
+ (THIS_ ULONG ulFlags, \
+ LPMESSAGE lpReadMessage, \
+ LPMESSAGE FAR * lppEmptyMessage) IPURE; \
+ MAPIMETHOD(PrepareSubmit) \
+ (THIS_ LPMESSAGE lpMessage, \
+ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(ExpandRecips) \
+ (THIS_ LPMESSAGE lpMessage, \
+ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(UpdatePAB) \
+ (THIS_ ULONG ulFlags, \
+ LPMESSAGE lpMessage) IPURE; \
+ MAPIMETHOD(DoSentMail) \
+ (THIS_ ULONG ulFlags, \
+ LPMESSAGE lpMessage) IPURE; \
+ MAPIMETHOD(OpenAddressBook) \
+ (THIS_ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ LPADRBOOK FAR * lppAdrBook) IPURE; \
+ MAPIMETHOD(Preprocess) \
+ (THIS_ ULONG ulFlags, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID) IPURE; \
+ MAPIMETHOD(CompleteMsg) \
+ (THIS_ ULONG ulFlags, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID) IPURE; \
+ MAPIMETHOD(StoreLogoffTransports) \
+ (THIS_ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(StatusRecips) \
+ (THIS_ LPMESSAGE lpMessage, \
+ LPADRLIST lpRecipList) IPURE; \
+ MAPIMETHOD(WrapStoreEntryID) \
+ (THIS_ ULONG cbOrigEntry, \
+ LPENTRYID lpOrigEntry, \
+ ULONG FAR * lpcbWrappedEntry, \
+ LPENTRYID FAR * lppWrappedEntry) IPURE; \
+ MAPIMETHOD(ModifyProfile) \
+ (THIS_ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(IStorageFromStream) \
+ (THIS_ LPUNKNOWN lpUnkIn, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ LPSTORAGE FAR * lppStorageOut) IPURE; \
+ MAPIMETHOD(GetSvcConfigSupportObj) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPISUP FAR * lppSvcSupport) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMAPISupport
+DECLARE_MAPI_INTERFACE_(IMAPISupport, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPISUPPORT_METHODS1(PURE)
+ MAPI_IMAPISUPPORT_METHODS2(PURE)
+ MAPI_IMAPISUPPORT_METHODS3(PURE)
+};
+
+
+/********************************************************************/
+/* */
+/* ADDRESS BOOK SPI */
+/* */
+/********************************************************************/
+
+/* Address Book Provider ------------------------------------------------- */
+
+/* OpenTemplateID() */
+#define FILL_ENTRY ((ULONG) 0x00000001)
+
+/* For Logon() */
+
+/*#define AB_NO_DIALOG ((ULONG) 0x00000001) in mapidefs.h */
+/*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
+
+
+
+DECLARE_MAPI_INTERFACE_PTR(IABProvider, LPABPROVIDER);
+DECLARE_MAPI_INTERFACE_PTR(IABLogon, LPABLOGON);
+
+#define MAPI_IABPROVIDER_METHODS(IPURE) \
+ MAPIMETHOD(Shutdown) \
+ (THIS_ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(Logon) \
+ (THIS_ LPMAPISUP lpMAPISup, \
+ ULONG ulUIParam, \
+ LPTSTR lpszProfileName, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulpcbSecurity, \
+ LPBYTE FAR * lppbSecurity, \
+ LPMAPIERROR FAR * lppMAPIError, \
+ LPABLOGON FAR * lppABLogon) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IABProvider
+DECLARE_MAPI_INTERFACE_(IABProvider, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IABPROVIDER_METHODS(PURE)
+};
+
+/* For GetOneOffTable() */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+#define MAPI_IABLOGON_METHODS(IPURE) \
+ MAPIMETHOD(GetLastError) \
+ (THIS_ HRESULT hResult, \
+ ULONG ulFlags, \
+ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+ MAPIMETHOD(Logoff) \
+ (THIS_ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(OpenEntry) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulObjType, \
+ LPUNKNOWN FAR * lppUnk) IPURE; \
+ MAPIMETHOD(CompareEntryIDs) \
+ (THIS_ ULONG cbEntryID1, \
+ LPENTRYID lpEntryID1, \
+ ULONG cbEntryID2, \
+ LPENTRYID lpEntryID2, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulResult) IPURE; \
+ MAPIMETHOD(Advise) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulEventMask, \
+ LPMAPIADVISESINK lpAdviseSink, \
+ ULONG FAR * lpulConnection) IPURE; \
+ MAPIMETHOD(Unadvise) \
+ (THIS_ ULONG ulConnection) IPURE; \
+ MAPIMETHOD(OpenStatusEntry) \
+ (THIS_ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulObjType, \
+ LPMAPISTATUS FAR * lppEntry) IPURE; \
+ MAPIMETHOD(OpenTemplateID) \
+ (THIS_ ULONG cbTemplateID, \
+ LPENTRYID lpTemplateID, \
+ ULONG ulTemplateFlags, \
+ LPMAPIPROP lpMAPIPropData, \
+ LPCIID lpInterface, \
+ LPMAPIPROP FAR * lppMAPIPropNew, \
+ LPMAPIPROP lpMAPIPropSibling) IPURE; \
+ MAPIMETHOD(GetOneOffTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(PrepareRecips) \
+ (THIS_ ULONG ulFlags, \
+ LPSPropTagArray lpPropTagArray, \
+ LPADRLIST lpRecipList) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IABLogon
+DECLARE_MAPI_INTERFACE_(IABLogon, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IABLOGON_METHODS(PURE)
+};
+
+typedef HRESULT (STDMAPIINITCALLTYPE ABPROVIDERINIT)(
+ HINSTANCE hInstance,
+ LPMALLOC lpMalloc,
+ LPALLOCATEBUFFER lpAllocateBuffer,
+ LPALLOCATEMORE lpAllocateMore,
+ LPFREEBUFFER lpFreeBuffer,
+ ULONG ulFlags,
+ ULONG ulMAPIVer,
+ ULONG FAR * lpulProviderVer,
+ LPABPROVIDER FAR * lppABProvider
+);
+
+ABPROVIDERINIT ABProviderInit;
+
+
+
+/********************************************************************/
+/* */
+/* TRANSPORT SPI */
+/* */
+/********************************************************************/
+
+/* For DeinitTransport */
+
+#define DEINIT_NORMAL ((ULONG) 0x00000001)
+#define DEINIT_HURRY ((ULONG) 0x80000000)
+
+/* For TransportLogon */
+
+/* Flags that the Spooler may pass to the transport: */
+
+#define LOGON_NO_DIALOG ((ULONG) 0x00000001)
+#define LOGON_NO_CONNECT ((ULONG) 0x00000004)
+#define LOGON_NO_INBOUND ((ULONG) 0x00000008)
+#define LOGON_NO_OUTBOUND ((ULONG) 0x00000010)
+/*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
+
+/* Flags that the transport may pass to the Spooler: */
+
+#define LOGON_SP_IDLE ((ULONG) 0x00010000)
+#define LOGON_SP_POLL ((ULONG) 0x00020000)
+#define LOGON_SP_RESOLVE ((ULONG) 0x00040000)
+
+
+DECLARE_MAPI_INTERFACE_PTR(IXPProvider, LPXPPROVIDER);
+DECLARE_MAPI_INTERFACE_PTR(IXPLogon, LPXPLOGON);
+
+#define MAPI_IXPPROVIDER_METHODS(IPURE) \
+ MAPIMETHOD(Shutdown) \
+ (THIS_ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(TransportLogon) \
+ (THIS_ LPMAPISUP lpMAPISup, \
+ ULONG ulUIParam, \
+ LPTSTR lpszProfileName, \
+ ULONG FAR * lpulFlags, \
+ LPMAPIERROR FAR * lppMAPIError, \
+ LPXPLOGON FAR * lppXPLogon) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IXPProvider
+DECLARE_MAPI_INTERFACE_(IXPProvider, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IXPPROVIDER_METHODS(PURE)
+};
+
+/* OptionData returned from call to RegisterOptions */
+
+#define OPTION_TYPE_RECIPIENT ((ULONG) 0x00000001)
+#define OPTION_TYPE_MESSAGE ((ULONG) 0x00000002)
+
+typedef struct _OPTIONDATA
+{
+ ULONG ulFlags; /* MAPI_RECIPIENT, MAPI_MESSAGE */
+ LPGUID lpRecipGUID; /* Same as returned by AddressTypes() */
+ LPTSTR lpszAdrType; /* Same as returned by AddressTypes() */
+ LPTSTR lpszDLLName; /* Options DLL */
+ ULONG ulOrdinal; /* Ordinal in that DLL */
+ ULONG cbOptionsData; /* Count of bytes in lpbOptionsData */
+ LPBYTE lpbOptionsData; /* Providers per [recip|message] option data */
+ ULONG cOptionsProps; /* Count of Options default prop values */
+ LPSPropValue lpOptionsProps; /* Default Options property values */
+} OPTIONDATA, FAR *LPOPTIONDATA;
+
+typedef SCODE (STDMAPIINITCALLTYPE OPTIONCALLBACK)(
+ HINSTANCE hInst,
+ LPMALLOC lpMalloc,
+ ULONG ulFlags,
+ ULONG cbOptionData,
+ LPBYTE lpbOptionData,
+ LPMAPISUP lpMAPISup,
+ LPMAPIPROP lpDataSource,
+ LPMAPIPROP FAR * lppWrappedSource,
+ LPMAPIERROR FAR * lppMAPIError);
+
+/* For XP_AddressTypes */
+
+/*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
+
+/* For XP_RegisterRecipOptions */
+
+/*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
+
+/* For XP_RegisterMessageOptions */
+
+/*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
+
+/* For TransportNotify */
+
+#define NOTIFY_ABORT_DEFERRED ((ULONG) 0x40000000)
+#define NOTIFY_CANCEL_MESSAGE ((ULONG) 0x80000000)
+#define NOTIFY_BEGIN_INBOUND ((ULONG) 0x00000001)
+#define NOTIFY_END_INBOUND ((ULONG) 0x00010000)
+#define NOTIFY_BEGIN_OUTBOUND ((ULONG) 0x00000002)
+#define NOTIFY_END_OUTBOUND ((ULONG) 0x00020000)
+#define NOTIFY_BEGIN_INBOUND_FLUSH ((ULONG) 0x00000004)
+#define NOTIFY_END_INBOUND_FLUSH ((ULONG) 0x00040000)
+#define NOTIFY_BEGIN_OUTBOUND_FLUSH ((ULONG) 0x00000008)
+#define NOTIFY_END_OUTBOUND_FLUSH ((ULONG) 0x00080000)
+
+/* For TransportLogoff */
+
+#define LOGOFF_NORMAL ((ULONG) 0x00000001)
+#define LOGOFF_HURRY ((ULONG) 0x80000000)
+
+/* For SubmitMessage */
+
+#define BEGIN_DEFERRED ((ULONG) 0x00000001)
+
+/* For EndMessage */
+
+/* Flags that the Spooler may pass to the Transport: */
+
+/* Flags that the transport may pass to the Spooler: */
+
+#define END_RESEND_NOW ((ULONG) 0x00010000)
+#define END_RESEND_LATER ((ULONG) 0x00020000)
+#define END_DONT_RESEND ((ULONG) 0x00040000)
+
+#define MAPI_IXPLOGON_METHODS(IPURE) \
+ MAPIMETHOD(AddressTypes) \
+ (THIS_ ULONG FAR * lpulFlags, \
+ ULONG FAR * lpcAdrType, \
+ LPTSTR FAR * FAR * lpppAdrTypeArray, \
+ ULONG FAR * lpcMAPIUID, \
+ LPMAPIUID FAR * FAR * lpppUIDArray) IPURE; \
+ MAPIMETHOD(RegisterOptions) \
+ (THIS_ ULONG FAR * lpulFlags, \
+ ULONG FAR * lpcOptions, \
+ LPOPTIONDATA FAR * lppOptions) IPURE; \
+ MAPIMETHOD(TransportNotify) \
+ (THIS_ ULONG FAR * lpulFlags, \
+ LPVOID FAR * lppvData) IPURE; \
+ MAPIMETHOD(Idle) \
+ (THIS_ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(TransportLogoff) \
+ (THIS_ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(SubmitMessage) \
+ (THIS_ ULONG ulFlags, \
+ LPMESSAGE lpMessage, \
+ ULONG FAR * lpulMsgRef, \
+ ULONG FAR * lpulReturnParm) IPURE; \
+ MAPIMETHOD(EndMessage) \
+ (THIS_ ULONG ulMsgRef, \
+ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(Poll) \
+ (THIS_ ULONG FAR * lpulIncoming) IPURE; \
+ MAPIMETHOD(StartMessage) \
+ (THIS_ ULONG ulFlags, \
+ LPMESSAGE lpMessage, \
+ ULONG FAR * lpulMsgRef) IPURE; \
+ MAPIMETHOD(OpenStatusEntry) \
+ (THIS_ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulObjType, \
+ LPMAPISTATUS FAR * lppEntry) IPURE; \
+ MAPIMETHOD(ValidateState) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(FlushQueues) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG cbTargetTransport, \
+ LPENTRYID lpTargetTransport, \
+ ULONG ulFlags) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IXPLogon
+DECLARE_MAPI_INTERFACE_(IXPLogon, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IXPLOGON_METHODS(PURE)
+};
+
+
+/* Transport Provider Entry Point */
+
+typedef HRESULT (STDMAPIINITCALLTYPE XPPROVIDERINIT)(
+ HINSTANCE hInstance,
+ LPMALLOC lpMalloc,
+ LPALLOCATEBUFFER lpAllocateBuffer,
+ LPALLOCATEMORE lpAllocateMore,
+ LPFREEBUFFER lpFreeBuffer,
+ ULONG ulFlags,
+ ULONG ulMAPIVer,
+ ULONG FAR * lpulProviderVer,
+ LPXPPROVIDER FAR * lppXPProvider);
+
+XPPROVIDERINIT XPProviderInit;
+
+/********************************************************************/
+/* */
+/* MESSAGE STORE SPI */
+/* */
+/********************************************************************/
+
+/* Flags and enums */
+
+/* For Logon() */
+
+/*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
+/*#define MDB_NO_DIALOG ((ULONG) 0x00000001) in mapidefs.h */
+/*#define MDB_WRITE ((ULONG) 0x00000004) in mapidefs.h */
+/*#define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) in mapidefs.h */
+/*#define MDB_TEMPORARY ((ULONG) 0x00000020) in mapidefs.h */
+/*#define MDB_NO_MAIL ((ULONG) 0x00000080) in mapidefs.h */
+
+/* For SpoolerLogon() */
+
+/*#define MAPI_UNICODE ((ULONG) 0x80000000) in mapidefs.h */
+/*#define MDB_NO_DIALOG ((ULONG) 0x00000001) in mapidefs.h */
+/*#define MDB_WRITE ((ULONG) 0x00000004) in mapidefs.h */
+/*#define MAPI_DEFERRED_ERRORS ((ULONG) 0x00000008) in mapidefs.h */
+
+/* GetCredentials, SetCredentials */
+
+#define LOGON_SP_TRANSPORT ((ULONG) 0x00000001)
+#define LOGON_SP_PROMPT ((ULONG) 0x00000002)
+#define LOGON_SP_NEWPW ((ULONG) 0x00000004)
+#define LOGON_CHANGED ((ULONG) 0x00000008)
+
+/* DoMCDialog */
+
+#define DIALOG_FOLDER ((ULONG) 0x00000001)
+#define DIALOG_MESSAGE ((ULONG) 0x00000002)
+#define DIALOG_PROP ((ULONG) 0x00000004)
+#define DIALOG_ATTACH ((ULONG) 0x00000008)
+
+#define DIALOG_MOVE ((ULONG) 0x00000010)
+#define DIALOG_COPY ((ULONG) 0x00000020)
+#define DIALOG_DELETE ((ULONG) 0x00000040)
+
+#define DIALOG_ALLOW_CANCEL ((ULONG) 0x00000080)
+#define DIALOG_CONFIRM_CANCEL ((ULONG) 0x00000100)
+
+/* ExpandRecips */
+
+#define NEEDS_PREPROCESSING ((ULONG) 0x00000001)
+#define NEEDS_SPOOLER ((ULONG) 0x00000002)
+
+/* PrepareSubmit */
+
+#define CHECK_SENDER ((ULONG) 0x00000001)
+#define NON_STANDARD ((ULONG) 0x00010000)
+
+
+DECLARE_MAPI_INTERFACE_PTR(IMSLogon, LPMSLOGON);
+DECLARE_MAPI_INTERFACE_PTR(IMSProvider, LPMSPROVIDER);
+
+/* Message Store Provider Interface (IMSPROVIDER) */
+
+#define MAPI_IMSPROVIDER_METHODS(IPURE) \
+ MAPIMETHOD(Shutdown) \
+ (THIS_ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(Logon) \
+ (THIS_ LPMAPISUP lpMAPISup, \
+ ULONG ulUIParam, \
+ LPTSTR lpszProfileName, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulFlags, \
+ LPCIID lpInterface, \
+ ULONG FAR * lpcbSpoolSecurity, \
+ LPBYTE FAR * lppbSpoolSecurity, \
+ LPMAPIERROR FAR * lppMAPIError, \
+ LPMSLOGON FAR * lppMSLogon, \
+ LPMDB FAR * lppMDB) IPURE; \
+ MAPIMETHOD(SpoolerLogon) \
+ (THIS_ LPMAPISUP lpMAPISup, \
+ ULONG ulUIParam, \
+ LPTSTR lpszProfileName, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulFlags, \
+ LPCIID lpInterface, \
+ ULONG cbSpoolSecurity, \
+ LPBYTE lpbSpoolSecurity, \
+ LPMAPIERROR FAR * lppMAPIError, \
+ LPMSLOGON FAR * lppMSLogon, \
+ LPMDB FAR * lppMDB) IPURE; \
+ MAPIMETHOD(CompareStoreIDs) \
+ (THIS_ ULONG cbEntryID1, \
+ LPENTRYID lpEntryID1, \
+ ULONG cbEntryID2, \
+ LPENTRYID lpEntryID2, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulResult) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMSProvider
+DECLARE_MAPI_INTERFACE_(IMSProvider, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMSPROVIDER_METHODS(PURE)
+};
+
+/* The MSLOGON object is returned by the Logon() method of the
+ * MSPROVIDER interface. This object is for use by MAPIX.DLL.
+ */
+#define MAPI_IMSLOGON_METHODS(IPURE) \
+ MAPIMETHOD(GetLastError) \
+ (THIS_ HRESULT hResult, \
+ ULONG ulFlags, \
+ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+ MAPIMETHOD(Logoff) \
+ (THIS_ ULONG FAR * lpulFlags) IPURE; \
+ MAPIMETHOD(OpenEntry) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulObjType, \
+ LPUNKNOWN FAR * lppUnk) IPURE; \
+ MAPIMETHOD(CompareEntryIDs) \
+ (THIS_ ULONG cbEntryID1, \
+ LPENTRYID lpEntryID1, \
+ ULONG cbEntryID2, \
+ LPENTRYID lpEntryID2, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulResult) IPURE; \
+ MAPIMETHOD(Advise) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulEventMask, \
+ LPMAPIADVISESINK lpAdviseSink, \
+ ULONG FAR * lpulConnection) IPURE; \
+ MAPIMETHOD(Unadvise) \
+ (THIS_ ULONG ulConnection) IPURE; \
+ MAPIMETHOD(OpenStatusEntry) \
+ (THIS_ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulObjType, \
+ LPVOID FAR * lppEntry) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IMSLogon
+DECLARE_MAPI_INTERFACE_(IMSLogon, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMSLOGON_METHODS(PURE)
+};
+
+/* Message Store Provider Entry Point */
+
+typedef HRESULT (STDMAPIINITCALLTYPE MSPROVIDERINIT)(
+ HINSTANCE hInstance,
+ LPMALLOC lpMalloc, /* AddRef() if you keep it */
+ LPALLOCATEBUFFER lpAllocateBuffer, /* -> AllocateBuffer */
+ LPALLOCATEMORE lpAllocateMore, /* -> AllocateMore */
+ LPFREEBUFFER lpFreeBuffer, /* -> FreeBuffer */
+ ULONG ulFlags,
+ ULONG ulMAPIVer,
+ ULONG FAR * lpulProviderVer,
+ LPMSPROVIDER FAR * lppMSProvider
+);
+
+MSPROVIDERINIT MSProviderInit;
+
+
+/********************************************************************/
+/* */
+/* MESSAGE SERVICE CONFIGURATION */
+/* */
+/********************************************************************/
+
+/* Flags for service configuration entry point */
+
+/* #define MAPI_UNICODE 0x80000000 */
+/* #define SERVICE_UI_ALWAYS 0x00000002 */
+/* #define SERVICE_UI_ALLOWED 0x00000010 */
+#define MSG_SERVICE_UI_READ_ONLY 0x00000008 /* display parameters only */
+#define SERVICE_LOGON_FAILED 0x00000020 /* reconfigure provider */
+
+/* Contexts for service configuration entry point */
+
+#define MSG_SERVICE_INSTALL 0x00000001
+#define MSG_SERVICE_CREATE 0x00000002
+#define MSG_SERVICE_CONFIGURE 0x00000003
+#define MSG_SERVICE_DELETE 0x00000004
+#define MSG_SERVICE_UNINSTALL 0x00000005
+#define MSG_SERVICE_PROVIDER_CREATE 0x00000006
+#define MSG_SERVICE_PROVIDER_DELETE 0x00000007
+
+/* Prototype for service configuration entry point */
+
+typedef HRESULT (STDAPICALLTYPE MSGSERVICEENTRY)(
+ HINSTANCE hInstance,
+ LPMALLOC lpMalloc,
+ LPMAPISUP lpMAPISup,
+ ULONG ulUIParam,
+ ULONG ulFlags,
+ ULONG ulContext,
+ ULONG cValues,
+ LPSPropValue lpProps,
+ LPPROVIDERADMIN lpProviderAdmin,
+ LPMAPIERROR FAR *lppMapiError
+);
+typedef MSGSERVICEENTRY FAR *LPMSGSERVICEENTRY;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MAPISPI_H */
diff --git a/public/sdk/inc/mapitags.h b/public/sdk/inc/mapitags.h
new file mode 100644
index 000000000..152d14f97
--- /dev/null
+++ b/public/sdk/inc/mapitags.h
@@ -0,0 +1,1033 @@
+/*
+ * M A P I T A G S . H
+ *
+ * Property tag definitions for standard properties of MAPI
+ * objects.
+ *
+ * The following ranges should be used for all property IDs. Note that
+ * property IDs for objects other than messages and recipients should
+ * all fall in the range 0x3000 to 0x3FFF:
+ *
+ * From To Kind of property
+ * --------------------------------
+ * 0001 0BFF MAPI_defined envelope property
+ * 0C00 0DFF MAPI_defined per-recipient property
+ * 0E00 0FFF MAPI_defined non-transmittable property
+ * 1000 2FFF MAPI_defined message content property
+ *
+ * 3000 3FFF MAPI_defined property (usually not message or recipient)
+ *
+ * 4000 57FF Transport-defined envelope property
+ * 5800 5FFF Transport-defined per-recipient property
+ * 6000 65FF User-defined non-transmittable property
+ * 6600 67FF Provider-defined internal non-transmittable property
+ * 6800 7BFF Message class-defined content property
+ * 7C00 7FFF Message class-defined non-transmittable
+ * property
+ *
+ * 8000 FFFE User-defined Name-to-id mapped property
+ *
+ * The 3000-3FFF range is further subdivided as follows:
+ *
+ * From To Kind of property
+ * --------------------------------
+ * 3000 33FF Common property such as display name, entry ID
+ * 3400 35FF Message store object
+ * 3600 36FF Folder or AB container
+ * 3700 38FF Attachment
+ * 3900 39FF Address book object
+ * 3A00 3BFF Mail user
+ * 3C00 3CFF Distribution list
+ * 3D00 3DFF Profile section
+ * 3E00 3FFF Status object
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef MAPITAGS_H
+#define MAPITAGS_H
+
+/* Determine if a property is transmittable. */
+
+#define FIsTransmittable(ulPropTag) \
+ ((PROP_ID (ulPropTag) < (ULONG)0x0E00) || \
+ (PROP_ID (ulPropTag) >= (ULONG)0x8000) || \
+ ((PROP_ID (ulPropTag) >= (ULONG)0x1000) && (PROP_ID (ulPropTag) < (ULONG)0x6000)) || \
+ ((PROP_ID (ulPropTag) >= (ULONG)0x6800) && (PROP_ID (ulPropTag) < (ULONG)0x7C00)))
+
+/*
+ * Message envelope properties
+ */
+
+#define PR_ACKNOWLEDGEMENT_MODE PROP_TAG( PT_LONG, 0x0001)
+#define PR_ALTERNATE_RECIPIENT_ALLOWED PROP_TAG( PT_BOOLEAN, 0x0002)
+#define PR_AUTHORIZING_USERS PROP_TAG( PT_BINARY, 0x0003)
+#define PR_AUTO_FORWARD_COMMENT PROP_TAG( PT_TSTRING, 0x0004)
+#define PR_AUTO_FORWARD_COMMENT_W PROP_TAG( PT_UNICODE, 0x0004)
+#define PR_AUTO_FORWARD_COMMENT_A PROP_TAG( PT_STRING8, 0x0004)
+#define PR_AUTO_FORWARDED PROP_TAG( PT_BOOLEAN, 0x0005)
+#define PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID PROP_TAG( PT_BINARY, 0x0006)
+#define PR_CONTENT_CORRELATOR PROP_TAG( PT_BINARY, 0x0007)
+#define PR_CONTENT_IDENTIFIER PROP_TAG( PT_TSTRING, 0x0008)
+#define PR_CONTENT_IDENTIFIER_W PROP_TAG( PT_UNICODE, 0x0008)
+#define PR_CONTENT_IDENTIFIER_A PROP_TAG( PT_STRING8, 0x0008)
+#define PR_CONTENT_LENGTH PROP_TAG( PT_LONG, 0x0009)
+#define PR_CONTENT_RETURN_REQUESTED PROP_TAG( PT_BOOLEAN, 0x000A)
+
+
+
+#define PR_CONVERSATION_KEY PROP_TAG( PT_BINARY, 0x000B)
+
+#define PR_CONVERSION_EITS PROP_TAG( PT_BINARY, 0x000C)
+#define PR_CONVERSION_WITH_LOSS_PROHIBITED PROP_TAG( PT_BOOLEAN, 0x000D)
+#define PR_CONVERTED_EITS PROP_TAG( PT_BINARY, 0x000E)
+#define PR_DEFERRED_DELIVERY_TIME PROP_TAG( PT_SYSTIME, 0x000F)
+#define PR_DELIVER_TIME PROP_TAG( PT_SYSTIME, 0x0010)
+#define PR_DISCARD_REASON PROP_TAG( PT_LONG, 0x0011)
+#define PR_DISCLOSURE_OF_RECIPIENTS PROP_TAG( PT_BOOLEAN, 0x0012)
+#define PR_DL_EXPANSION_HISTORY PROP_TAG( PT_BINARY, 0x0013)
+#define PR_DL_EXPANSION_PROHIBITED PROP_TAG( PT_BOOLEAN, 0x0014)
+#define PR_EXPIRY_TIME PROP_TAG( PT_SYSTIME, 0x0015)
+#define PR_IMPLICIT_CONVERSION_PROHIBITED PROP_TAG( PT_BOOLEAN, 0x0016)
+#define PR_IMPORTANCE PROP_TAG( PT_LONG, 0x0017)
+#define PR_IPM_ID PROP_TAG( PT_BINARY, 0x0018)
+#define PR_LATEST_DELIVERY_TIME PROP_TAG( PT_SYSTIME, 0x0019)
+#define PR_MESSAGE_CLASS PROP_TAG( PT_TSTRING, 0x001A)
+#define PR_MESSAGE_CLASS_W PROP_TAG( PT_UNICODE, 0x001A)
+#define PR_MESSAGE_CLASS_A PROP_TAG( PT_STRING8, 0x001A)
+#define PR_MESSAGE_DELIVERY_ID PROP_TAG( PT_BINARY, 0x001B)
+
+
+
+
+
+#define PR_MESSAGE_SECURITY_LABEL PROP_TAG( PT_BINARY, 0x001E)
+#define PR_OBSOLETED_IPMS PROP_TAG( PT_BINARY, 0x001F)
+#define PR_ORIGINALLY_INTENDED_RECIPIENT_NAME PROP_TAG( PT_BINARY, 0x0020)
+#define PR_ORIGINAL_EITS PROP_TAG( PT_BINARY, 0x0021)
+#define PR_ORIGINATOR_CERTIFICATE PROP_TAG( PT_BINARY, 0x0022)
+#define PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED PROP_TAG( PT_BOOLEAN, 0x0023)
+#define PR_ORIGINATOR_RETURN_ADDRESS PROP_TAG( PT_BINARY, 0x0024)
+
+
+
+#define PR_PARENT_KEY PROP_TAG( PT_BINARY, 0x0025)
+#define PR_PRIORITY PROP_TAG( PT_LONG, 0x0026)
+
+
+
+#define PR_ORIGIN_CHECK PROP_TAG( PT_BINARY, 0x0027)
+#define PR_PROOF_OF_SUBMISSION_REQUESTED PROP_TAG( PT_BOOLEAN, 0x0028)
+#define PR_READ_RECEIPT_REQUESTED PROP_TAG( PT_BOOLEAN, 0x0029)
+#define PR_RECEIPT_TIME PROP_TAG( PT_SYSTIME, 0x002A)
+#define PR_RECIPIENT_REASSIGNMENT_PROHIBITED PROP_TAG( PT_BOOLEAN, 0x002B)
+#define PR_REDIRECTION_HISTORY PROP_TAG( PT_BINARY, 0x002C)
+#define PR_RELATED_IPMS PROP_TAG( PT_BINARY, 0x002D)
+#define PR_ORIGINAL_SENSITIVITY PROP_TAG( PT_LONG, 0x002E)
+#define PR_LANGUAGES PROP_TAG( PT_TSTRING, 0x002F)
+#define PR_LANGUAGES_W PROP_TAG( PT_UNICODE, 0x002F)
+#define PR_LANGUAGES_A PROP_TAG( PT_STRING8, 0x002F)
+#define PR_REPLY_TIME PROP_TAG( PT_SYSTIME, 0x0030)
+#define PR_REPORT_TAG PROP_TAG( PT_BINARY, 0x0031)
+#define PR_REPORT_TIME PROP_TAG( PT_SYSTIME, 0x0032)
+#define PR_RETURNED_IPM PROP_TAG( PT_BOOLEAN, 0x0033)
+#define PR_SECURITY PROP_TAG( PT_LONG, 0x0034)
+#define PR_INCOMPLETE_COPY PROP_TAG( PT_BOOLEAN, 0x0035)
+#define PR_SENSITIVITY PROP_TAG( PT_LONG, 0x0036)
+#define PR_SUBJECT PROP_TAG( PT_TSTRING, 0x0037)
+#define PR_SUBJECT_W PROP_TAG( PT_UNICODE, 0x0037)
+#define PR_SUBJECT_A PROP_TAG( PT_STRING8, 0x0037)
+#define PR_SUBJECT_IPM PROP_TAG( PT_BINARY, 0x0038)
+#define PR_CLIENT_SUBMIT_TIME PROP_TAG( PT_SYSTIME, 0x0039)
+#define PR_REPORT_NAME PROP_TAG( PT_TSTRING, 0x003A)
+#define PR_REPORT_NAME_W PROP_TAG( PT_UNICODE, 0x003A)
+#define PR_REPORT_NAME_A PROP_TAG( PT_STRING8, 0x003A)
+#define PR_SENT_REPRESENTING_SEARCH_KEY PROP_TAG( PT_BINARY, 0x003B)
+#define PR_X400_CONTENT_TYPE PROP_TAG( PT_BINARY, 0x003C)
+#define PR_SUBJECT_PREFIX PROP_TAG( PT_TSTRING, 0x003D)
+#define PR_SUBJECT_PREFIX_W PROP_TAG( PT_UNICODE, 0x003D)
+#define PR_SUBJECT_PREFIX_A PROP_TAG( PT_STRING8, 0x003D)
+#define PR_NON_RECEIPT_REASON PROP_TAG( PT_LONG, 0x003E)
+#define PR_RECEIVED_BY_ENTRYID PROP_TAG( PT_BINARY, 0x003F)
+#define PR_RECEIVED_BY_NAME PROP_TAG( PT_TSTRING, 0x0040)
+#define PR_RECEIVED_BY_NAME_W PROP_TAG( PT_UNICODE, 0x0040)
+#define PR_RECEIVED_BY_NAME_A PROP_TAG( PT_STRING8, 0x0040)
+#define PR_SENT_REPRESENTING_ENTRYID PROP_TAG( PT_BINARY, 0x0041)
+#define PR_SENT_REPRESENTING_NAME PROP_TAG( PT_TSTRING, 0x0042)
+#define PR_SENT_REPRESENTING_NAME_W PROP_TAG( PT_UNICODE, 0x0042)
+#define PR_SENT_REPRESENTING_NAME_A PROP_TAG( PT_STRING8, 0x0042)
+#define PR_RCVD_REPRESENTING_ENTRYID PROP_TAG( PT_BINARY, 0x0043)
+#define PR_RCVD_REPRESENTING_NAME PROP_TAG( PT_TSTRING, 0x0044)
+#define PR_RCVD_REPRESENTING_NAME_W PROP_TAG( PT_UNICODE, 0x0044)
+#define PR_RCVD_REPRESENTING_NAME_A PROP_TAG( PT_STRING8, 0x0044)
+#define PR_REPORT_ENTRYID PROP_TAG( PT_BINARY, 0x0045)
+#define PR_READ_RECEIPT_ENTRYID PROP_TAG( PT_BINARY, 0x0046)
+#define PR_MESSAGE_SUBMISSION_ID PROP_TAG( PT_BINARY, 0x0047)
+#define PR_PROVIDER_SUBMIT_TIME PROP_TAG( PT_SYSTIME, 0x0048)
+#define PR_ORIGINAL_SUBJECT PROP_TAG( PT_TSTRING, 0x0049)
+#define PR_ORIGINAL_SUBJECT_W PROP_TAG( PT_UNICODE, 0x0049)
+#define PR_ORIGINAL_SUBJECT_A PROP_TAG( PT_STRING8, 0x0049)
+#define PR_DISC_VAL PROP_TAG( PT_BOOLEAN, 0x004A)
+#define PR_ORIG_MESSAGE_CLASS PROP_TAG( PT_TSTRING, 0x004B)
+#define PR_ORIG_MESSAGE_CLASS_W PROP_TAG( PT_UNICODE, 0x004B)
+#define PR_ORIG_MESSAGE_CLASS_A PROP_TAG( PT_STRING8, 0x004B)
+#define PR_ORIGINAL_AUTHOR_ENTRYID PROP_TAG( PT_BINARY, 0x004C)
+#define PR_ORIGINAL_AUTHOR_NAME PROP_TAG( PT_TSTRING, 0x004D)
+#define PR_ORIGINAL_AUTHOR_NAME_W PROP_TAG( PT_UNICODE, 0x004D)
+#define PR_ORIGINAL_AUTHOR_NAME_A PROP_TAG( PT_STRING8, 0x004D)
+#define PR_ORIGINAL_SUBMIT_TIME PROP_TAG( PT_SYSTIME, 0x004E)
+#define PR_REPLY_RECIPIENT_ENTRIES PROP_TAG( PT_BINARY, 0x004F)
+#define PR_REPLY_RECIPIENT_NAMES PROP_TAG( PT_TSTRING, 0x0050)
+#define PR_REPLY_RECIPIENT_NAMES_W PROP_TAG( PT_UNICODE, 0x0050)
+#define PR_REPLY_RECIPIENT_NAMES_A PROP_TAG( PT_STRING8, 0x0050)
+
+#define PR_RECEIVED_BY_SEARCH_KEY PROP_TAG( PT_BINARY, 0x0051)
+#define PR_RCVD_REPRESENTING_SEARCH_KEY PROP_TAG( PT_BINARY, 0x0052)
+#define PR_READ_RECEIPT_SEARCH_KEY PROP_TAG( PT_BINARY, 0x0053)
+#define PR_REPORT_SEARCH_KEY PROP_TAG( PT_BINARY, 0x0054)
+#define PR_ORIGINAL_DELIVERY_TIME PROP_TAG( PT_SYSTIME, 0x0055)
+#define PR_ORIGINAL_AUTHOR_SEARCH_KEY PROP_TAG( PT_BINARY, 0x0056)
+
+#define PR_MESSAGE_TO_ME PROP_TAG( PT_BOOLEAN, 0x0057)
+#define PR_MESSAGE_CC_ME PROP_TAG( PT_BOOLEAN, 0x0058)
+#define PR_MESSAGE_RECIP_ME PROP_TAG( PT_BOOLEAN, 0x0059)
+
+#define PR_ORIGINAL_SENDER_NAME PROP_TAG( PT_TSTRING, 0x005A)
+#define PR_ORIGINAL_SENDER_NAME_W PROP_TAG( PT_UNICODE, 0x005A)
+#define PR_ORIGINAL_SENDER_NAME_A PROP_TAG( PT_STRING8, 0x005A)
+#define PR_ORIGINAL_SENDER_ENTRYID PROP_TAG( PT_BINARY, 0x005B)
+#define PR_ORIGINAL_SENDER_SEARCH_KEY PROP_TAG( PT_BINARY, 0x005C)
+#define PR_ORIGINAL_SENT_REPRESENTING_NAME PROP_TAG( PT_TSTRING, 0x005D)
+#define PR_ORIGINAL_SENT_REPRESENTING_NAME_W PROP_TAG( PT_UNICODE, 0x005D)
+#define PR_ORIGINAL_SENT_REPRESENTING_NAME_A PROP_TAG( PT_STRING8, 0x005D)
+#define PR_ORIGINAL_SENT_REPRESENTING_ENTRYID PROP_TAG( PT_BINARY, 0x005E)
+#define PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY PROP_TAG( PT_BINARY, 0x005F)
+
+#define PR_START_DATE PROP_TAG( PT_SYSTIME, 0x0060)
+#define PR_END_DATE PROP_TAG( PT_SYSTIME, 0x0061)
+#define PR_OWNER_APPT_ID PROP_TAG( PT_LONG, 0x0062)
+#define PR_RESPONSE_REQUESTED PROP_TAG( PT_BOOLEAN, 0x0063)
+
+#define PR_SENT_REPRESENTING_ADDRTYPE PROP_TAG( PT_TSTRING, 0x0064)
+#define PR_SENT_REPRESENTING_ADDRTYPE_W PROP_TAG( PT_UNICODE, 0x0064)
+#define PR_SENT_REPRESENTING_ADDRTYPE_A PROP_TAG( PT_STRING8, 0x0064)
+#define PR_SENT_REPRESENTING_EMAIL_ADDRESS PROP_TAG( PT_TSTRING, 0x0065)
+#define PR_SENT_REPRESENTING_EMAIL_ADDRESS_W PROP_TAG( PT_UNICODE, 0x0065)
+#define PR_SENT_REPRESENTING_EMAIL_ADDRESS_A PROP_TAG( PT_STRING8, 0x0065)
+
+#define PR_ORIGINAL_SENDER_ADDRTYPE PROP_TAG( PT_TSTRING, 0x0066)
+#define PR_ORIGINAL_SENDER_ADDRTYPE_W PROP_TAG( PT_UNICODE, 0x0066)
+#define PR_ORIGINAL_SENDER_ADDRTYPE_A PROP_TAG( PT_STRING8, 0x0066)
+#define PR_ORIGINAL_SENDER_EMAIL_ADDRESS PROP_TAG( PT_TSTRING, 0x0067)
+#define PR_ORIGINAL_SENDER_EMAIL_ADDRESS_W PROP_TAG( PT_UNICODE, 0x0067)
+#define PR_ORIGINAL_SENDER_EMAIL_ADDRESS_A PROP_TAG( PT_STRING8, 0x0067)
+
+#define PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE PROP_TAG( PT_TSTRING, 0x0068)
+#define PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_W PROP_TAG( PT_UNICODE, 0x0068)
+#define PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_A PROP_TAG( PT_STRING8, 0x0068)
+#define PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS PROP_TAG( PT_TSTRING, 0x0069)
+#define PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_W PROP_TAG( PT_UNICODE, 0x0069)
+#define PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_A PROP_TAG( PT_STRING8, 0x0069)
+
+#define PR_CONVERSATION_TOPIC PROP_TAG( PT_TSTRING, 0x0070)
+#define PR_CONVERSATION_TOPIC_W PROP_TAG( PT_UNICODE, 0x0070)
+#define PR_CONVERSATION_TOPIC_A PROP_TAG( PT_STRING8, 0x0070)
+#define PR_CONVERSATION_INDEX PROP_TAG( PT_BINARY, 0x0071)
+
+#define PR_ORIGINAL_DISPLAY_BCC PROP_TAG( PT_TSTRING, 0x0072)
+#define PR_ORIGINAL_DISPLAY_BCC_W PROP_TAG( PT_UNICODE, 0x0072)
+#define PR_ORIGINAL_DISPLAY_BCC_A PROP_TAG( PT_STRING8, 0x0072)
+#define PR_ORIGINAL_DISPLAY_CC PROP_TAG( PT_TSTRING, 0x0073)
+#define PR_ORIGINAL_DISPLAY_CC_W PROP_TAG( PT_UNICODE, 0x0073)
+#define PR_ORIGINAL_DISPLAY_CC_A PROP_TAG( PT_STRING8, 0x0073)
+#define PR_ORIGINAL_DISPLAY_TO PROP_TAG( PT_TSTRING, 0x0074)
+#define PR_ORIGINAL_DISPLAY_TO_W PROP_TAG( PT_UNICODE, 0x0074)
+#define PR_ORIGINAL_DISPLAY_TO_A PROP_TAG( PT_STRING8, 0x0074)
+
+#define PR_RECEIVED_BY_ADDRTYPE PROP_TAG( PT_TSTRING, 0x0075)
+#define PR_RECEIVED_BY_ADDRTYPE_W PROP_TAG( PT_UNICODE, 0x0075)
+#define PR_RECEIVED_BY_ADDRTYPE_A PROP_TAG( PT_STRING8, 0x0075)
+#define PR_RECEIVED_BY_EMAIL_ADDRESS PROP_TAG( PT_TSTRING, 0x0076)
+#define PR_RECEIVED_BY_EMAIL_ADDRESS_W PROP_TAG( PT_UNICODE, 0x0076)
+#define PR_RECEIVED_BY_EMAIL_ADDRESS_A PROP_TAG( PT_STRING8, 0x0076)
+
+#define PR_RCVD_REPRESENTING_ADDRTYPE PROP_TAG( PT_TSTRING, 0x0077)
+#define PR_RCVD_REPRESENTING_ADDRTYPE_W PROP_TAG( PT_UNICODE, 0x0077)
+#define PR_RCVD_REPRESENTING_ADDRTYPE_A PROP_TAG( PT_STRING8, 0x0077)
+#define PR_RCVD_REPRESENTING_EMAIL_ADDRESS PROP_TAG( PT_TSTRING, 0x0078)
+#define PR_RCVD_REPRESENTING_EMAIL_ADDRESS_W PROP_TAG( PT_UNICODE, 0x0078)
+#define PR_RCVD_REPRESENTING_EMAIL_ADDRESS_A PROP_TAG( PT_STRING8, 0x0078)
+
+#define PR_ORIGINAL_AUTHOR_ADDRTYPE PROP_TAG( PT_TSTRING, 0x0079)
+#define PR_ORIGINAL_AUTHOR_ADDRTYPE_W PROP_TAG( PT_UNICODE, 0x0079)
+#define PR_ORIGINAL_AUTHOR_ADDRTYPE_A PROP_TAG( PT_STRING8, 0x0079)
+#define PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS PROP_TAG( PT_TSTRING, 0x007A)
+#define PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_W PROP_TAG( PT_UNICODE, 0x007A)
+#define PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_A PROP_TAG( PT_STRING8, 0x007A)
+
+#define PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE PROP_TAG( PT_TSTRING, 0x007B)
+#define PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_W PROP_TAG( PT_UNICODE, 0x007B)
+#define PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_A PROP_TAG( PT_STRING8, 0x007B)
+#define PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS PROP_TAG( PT_TSTRING, 0x007C)
+#define PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_W PROP_TAG( PT_UNICODE, 0x007C)
+#define PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_A PROP_TAG( PT_STRING8, 0x007C)
+
+#define PR_TRANSPORT_MESSAGE_HEADERS PROP_TAG(PT_TSTRING, 0x007D)
+#define PR_TRANSPORT_MESSAGE_HEADERS_W PROP_TAG(PT_UNICODE, 0x007D)
+#define PR_TRANSPORT_MESSAGE_HEADERS_A PROP_TAG(PT_STRING8, 0x007D)
+
+#define PR_DELEGATION PROP_TAG(PT_BINARY, 0x007E)
+
+#define PR_TNEF_CORRELATION_KEY PROP_TAG(PT_BINARY, 0x007F)
+
+
+
+/*
+ * Message content properties
+ */
+
+#define PR_BODY PROP_TAG( PT_TSTRING, 0x1000)
+#define PR_BODY_W PROP_TAG( PT_UNICODE, 0x1000)
+#define PR_BODY_A PROP_TAG( PT_STRING8, 0x1000)
+#define PR_REPORT_TEXT PROP_TAG( PT_TSTRING, 0x1001)
+#define PR_REPORT_TEXT_W PROP_TAG( PT_UNICODE, 0x1001)
+#define PR_REPORT_TEXT_A PROP_TAG( PT_STRING8, 0x1001)
+#define PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY PROP_TAG( PT_BINARY, 0x1002)
+#define PR_REPORTING_DL_NAME PROP_TAG( PT_BINARY, 0x1003)
+#define PR_REPORTING_MTA_CERTIFICATE PROP_TAG( PT_BINARY, 0x1004)
+
+/* Removed PR_REPORT_ORIGIN_AUTHENTICATION_CHECK with DCR 3865, use PR_ORIGIN_CHECK */
+
+#define PR_RTF_SYNC_BODY_CRC PROP_TAG( PT_LONG, 0x1006)
+#define PR_RTF_SYNC_BODY_COUNT PROP_TAG( PT_LONG, 0x1007)
+#define PR_RTF_SYNC_BODY_TAG PROP_TAG( PT_TSTRING, 0x1008)
+#define PR_RTF_SYNC_BODY_TAG_W PROP_TAG( PT_UNICODE, 0x1008)
+#define PR_RTF_SYNC_BODY_TAG_A PROP_TAG( PT_STRING8, 0x1008)
+#define PR_RTF_COMPRESSED PROP_TAG( PT_BINARY, 0x1009)
+#define PR_RTF_SYNC_PREFIX_COUNT PROP_TAG( PT_LONG, 0x1010)
+#define PR_RTF_SYNC_TRAILING_COUNT PROP_TAG( PT_LONG, 0x1011)
+#define PR_ORIGINALLY_INTENDED_RECIP_ENTRYID PROP_TAG( PT_BINARY, 0x1012)
+
+/*
+ * Reserved 0x1100-0x1200
+ */
+
+
+/*
+ * Message recipient properties
+ */
+
+#define PR_CONTENT_INTEGRITY_CHECK PROP_TAG( PT_BINARY, 0x0C00)
+#define PR_EXPLICIT_CONVERSION PROP_TAG( PT_LONG, 0x0C01)
+#define PR_IPM_RETURN_REQUESTED PROP_TAG( PT_BOOLEAN, 0x0C02)
+#define PR_MESSAGE_TOKEN PROP_TAG( PT_BINARY, 0x0C03)
+#define PR_NDR_REASON_CODE PROP_TAG( PT_LONG, 0x0C04)
+#define PR_NDR_DIAG_CODE PROP_TAG( PT_LONG, 0x0C05)
+#define PR_NON_RECEIPT_NOTIFICATION_REQUESTED PROP_TAG( PT_BOOLEAN, 0x0C06)
+#define PR_DELIVERY_POINT PROP_TAG( PT_LONG, 0x0C07)
+
+#define PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED PROP_TAG( PT_BOOLEAN, 0x0C08)
+#define PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT PROP_TAG( PT_BINARY, 0x0C09)
+#define PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY PROP_TAG( PT_BOOLEAN, 0x0C0A)
+#define PR_PHYSICAL_DELIVERY_MODE PROP_TAG( PT_LONG, 0x0C0B)
+#define PR_PHYSICAL_DELIVERY_REPORT_REQUEST PROP_TAG( PT_LONG, 0x0C0C)
+#define PR_PHYSICAL_FORWARDING_ADDRESS PROP_TAG( PT_BINARY, 0x0C0D)
+#define PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED PROP_TAG( PT_BOOLEAN, 0x0C0E)
+#define PR_PHYSICAL_FORWARDING_PROHIBITED PROP_TAG( PT_BOOLEAN, 0x0C0F)
+#define PR_PHYSICAL_RENDITION_ATTRIBUTES PROP_TAG( PT_BINARY, 0x0C10)
+#define PR_PROOF_OF_DELIVERY PROP_TAG( PT_BINARY, 0x0C11)
+#define PR_PROOF_OF_DELIVERY_REQUESTED PROP_TAG( PT_BOOLEAN, 0x0C12)
+#define PR_RECIPIENT_CERTIFICATE PROP_TAG( PT_BINARY, 0x0C13)
+#define PR_RECIPIENT_NUMBER_FOR_ADVICE PROP_TAG( PT_TSTRING, 0x0C14)
+#define PR_RECIPIENT_NUMBER_FOR_ADVICE_W PROP_TAG( PT_UNICODE, 0x0C14)
+#define PR_RECIPIENT_NUMBER_FOR_ADVICE_A PROP_TAG( PT_STRING8, 0x0C14)
+#define PR_RECIPIENT_TYPE PROP_TAG( PT_LONG, 0x0C15)
+#define PR_REGISTERED_MAIL_TYPE PROP_TAG( PT_LONG, 0x0C16)
+#define PR_REPLY_REQUESTED PROP_TAG( PT_BOOLEAN, 0x0C17)
+#define PR_REQUESTED_DELIVERY_METHOD PROP_TAG( PT_LONG, 0x0C18)
+#define PR_SENDER_ENTRYID PROP_TAG( PT_BINARY, 0x0C19)
+#define PR_SENDER_NAME PROP_TAG( PT_TSTRING, 0x0C1A)
+#define PR_SENDER_NAME_W PROP_TAG( PT_UNICODE, 0x0C1A)
+#define PR_SENDER_NAME_A PROP_TAG( PT_STRING8, 0x0C1A)
+#define PR_SUPPLEMENTARY_INFO PROP_TAG( PT_TSTRING, 0x0C1B)
+#define PR_SUPPLEMENTARY_INFO_W PROP_TAG( PT_UNICODE, 0x0C1B)
+#define PR_SUPPLEMENTARY_INFO_A PROP_TAG( PT_STRING8, 0x0C1B)
+#define PR_TYPE_OF_MTS_USER PROP_TAG( PT_LONG, 0x0C1C)
+#define PR_SENDER_SEARCH_KEY PROP_TAG( PT_BINARY, 0x0C1D)
+#define PR_SENDER_ADDRTYPE PROP_TAG( PT_TSTRING, 0x0C1E)
+#define PR_SENDER_ADDRTYPE_W PROP_TAG( PT_UNICODE, 0x0C1E)
+#define PR_SENDER_ADDRTYPE_A PROP_TAG( PT_STRING8, 0x0C1E)
+#define PR_SENDER_EMAIL_ADDRESS PROP_TAG( PT_TSTRING, 0x0C1F)
+#define PR_SENDER_EMAIL_ADDRESS_W PROP_TAG( PT_UNICODE, 0x0C1F)
+#define PR_SENDER_EMAIL_ADDRESS_A PROP_TAG( PT_STRING8, 0x0C1F)
+
+/*
+ * Message non-transmittable properties
+ */
+
+/*
+ * The two tags, PR_MESSAGE_RECIPIENTS and PR_MESSAGE_ATTACHMENTS,
+ * are to be used in the exclude list passed to
+ * IMessage::CopyTo when the caller wants either the recipients or attachments
+ * of the message to not get copied. It is also used in the ProblemArray
+ * return from IMessage::CopyTo when an error is encountered copying them
+ */
+
+#define PR_CURRENT_VERSION PROP_TAG( PT_I8, 0x0E00)
+#define PR_DELETE_AFTER_SUBMIT PROP_TAG( PT_BOOLEAN, 0x0E01)
+#define PR_DISPLAY_BCC PROP_TAG( PT_TSTRING, 0x0E02)
+#define PR_DISPLAY_BCC_W PROP_TAG( PT_UNICODE, 0x0E02)
+#define PR_DISPLAY_BCC_A PROP_TAG( PT_STRING8, 0x0E02)
+#define PR_DISPLAY_CC PROP_TAG( PT_TSTRING, 0x0E03)
+#define PR_DISPLAY_CC_W PROP_TAG( PT_UNICODE, 0x0E03)
+#define PR_DISPLAY_CC_A PROP_TAG( PT_STRING8, 0x0E03)
+#define PR_DISPLAY_TO PROP_TAG( PT_TSTRING, 0x0E04)
+#define PR_DISPLAY_TO_W PROP_TAG( PT_UNICODE, 0x0E04)
+#define PR_DISPLAY_TO_A PROP_TAG( PT_STRING8, 0x0E04)
+#define PR_PARENT_DISPLAY PROP_TAG( PT_TSTRING, 0x0E05)
+#define PR_PARENT_DISPLAY_W PROP_TAG( PT_UNICODE, 0x0E05)
+#define PR_PARENT_DISPLAY_A PROP_TAG( PT_STRING8, 0x0E05)
+#define PR_MESSAGE_DELIVERY_TIME PROP_TAG( PT_SYSTIME, 0x0E06)
+#define PR_MESSAGE_FLAGS PROP_TAG( PT_LONG, 0x0E07)
+#define PR_MESSAGE_SIZE PROP_TAG( PT_LONG, 0x0E08)
+#define PR_PARENT_ENTRYID PROP_TAG( PT_BINARY, 0x0E09)
+#define PR_SENTMAIL_ENTRYID PROP_TAG( PT_BINARY, 0x0E0A)
+#define PR_CORRELATE PROP_TAG( PT_BOOLEAN, 0x0E0C)
+#define PR_CORRELATE_MTSID PROP_TAG( PT_BINARY, 0x0E0D)
+#define PR_DISCRETE_VALUES PROP_TAG( PT_BOOLEAN, 0x0E0E)
+#define PR_RESPONSIBILITY PROP_TAG( PT_BOOLEAN, 0x0E0F)
+#define PR_SPOOLER_STATUS PROP_TAG( PT_LONG, 0x0E10)
+#define PR_TRANSPORT_STATUS PROP_TAG( PT_LONG, 0x0E11)
+#define PR_MESSAGE_RECIPIENTS PROP_TAG( PT_OBJECT, 0x0E12)
+#define PR_MESSAGE_ATTACHMENTS PROP_TAG( PT_OBJECT, 0x0E13)
+#define PR_SUBMIT_FLAGS PROP_TAG( PT_LONG, 0x0E14)
+#define PR_RECIPIENT_STATUS PROP_TAG( PT_LONG, 0x0E15)
+#define PR_TRANSPORT_KEY PROP_TAG( PT_LONG, 0x0E16)
+#define PR_MSG_STATUS PROP_TAG( PT_LONG, 0x0E17)
+#define PR_MESSAGE_DOWNLOAD_TIME PROP_TAG( PT_LONG, 0x0E18)
+#define PR_CREATION_VERSION PROP_TAG( PT_I8, 0x0E19)
+#define PR_MODIFY_VERSION PROP_TAG( PT_I8, 0x0E1A)
+#define PR_HASATTACH PROP_TAG( PT_BOOLEAN, 0x0E1B)
+#define PR_BODY_CRC PROP_TAG( PT_LONG, 0x0E1C)
+#define PR_NORMALIZED_SUBJECT PROP_TAG( PT_TSTRING, 0x0E1D)
+#define PR_NORMALIZED_SUBJECT_W PROP_TAG( PT_UNICODE, 0x0E1D)
+#define PR_NORMALIZED_SUBJECT_A PROP_TAG( PT_STRING8, 0x0E1D)
+#define PR_RTF_IN_SYNC PROP_TAG( PT_BOOLEAN, 0x0E1F)
+#define PR_ATTACH_SIZE PROP_TAG( PT_LONG, 0x0E20)
+#define PR_ATTACH_NUM PROP_TAG( PT_LONG, 0x0E21)
+#define PR_PREPROCESS PROP_TAG( PT_BOOLEAN, 0x0E22)
+
+/* PR_ORIGINAL_DISPLAY_TO, _CC, and _BCC moved to transmittible range 03/09/95 */
+
+#define PR_ORIGINATING_MTA_CERTIFICATE PROP_TAG( PT_BINARY, 0x0E25)
+#define PR_PROOF_OF_SUBMISSION PROP_TAG( PT_BINARY, 0x0E26)
+
+
+/*
+ * The range of non-message and non-recipient property IDs (0x3000 - 0x3FFF) is
+ * further broken down into ranges to make assigning new property IDs easier.
+ *
+ * From To Kind of property
+ * --------------------------------
+ * 3000 32FF MAPI_defined common property
+ * 3200 33FF MAPI_defined form property
+ * 3400 35FF MAPI_defined message store property
+ * 3600 36FF MAPI_defined Folder or AB Container property
+ * 3700 38FF MAPI_defined attachment property
+ * 3900 39FF MAPI_defined address book property
+ * 3A00 3BFF MAPI_defined mailuser property
+ * 3C00 3CFF MAPI_defined DistList property
+ * 3D00 3DFF MAPI_defined Profile Section property
+ * 3E00 3EFF MAPI_defined Status property
+ * 3F00 3FFF MAPI_defined display table property
+ */
+
+/*
+ * Properties common to numerous MAPI objects.
+ *
+ * Those properties that can appear on messages are in the
+ * non-transmittable range for messages. They start at the high
+ * end of that range and work down.
+ *
+ * Properties that never appear on messages are defined in the common
+ * property range (see above).
+ */
+
+/*
+ * properties that are common to multiple objects (including message objects)
+ * -- these ids are in the non-transmittable range
+ */
+
+#define PR_ENTRYID PROP_TAG( PT_BINARY, 0x0FFF)
+#define PR_OBJECT_TYPE PROP_TAG( PT_LONG, 0x0FFE)
+#define PR_ICON PROP_TAG( PT_BINARY, 0x0FFD)
+#define PR_MINI_ICON PROP_TAG( PT_BINARY, 0x0FFC)
+#define PR_STORE_ENTRYID PROP_TAG( PT_BINARY, 0x0FFB)
+#define PR_STORE_RECORD_KEY PROP_TAG( PT_BINARY, 0x0FFA)
+#define PR_RECORD_KEY PROP_TAG( PT_BINARY, 0x0FF9)
+#define PR_MAPPING_SIGNATURE PROP_TAG( PT_BINARY, 0x0FF8)
+#define PR_ACCESS_LEVEL PROP_TAG( PT_LONG, 0x0FF7)
+#define PR_INSTANCE_KEY PROP_TAG( PT_BINARY, 0x0FF6)
+#define PR_ROW_TYPE PROP_TAG( PT_LONG, 0x0FF5)
+#define PR_ACCESS PROP_TAG( PT_LONG, 0x0FF4)
+
+/*
+ * properties that are common to multiple objects (usually not including message objects)
+ * -- these ids are in the transmittable range
+ */
+
+#define PR_ROWID PROP_TAG( PT_LONG, 0x3000)
+#define PR_DISPLAY_NAME PROP_TAG( PT_TSTRING, 0x3001)
+#define PR_DISPLAY_NAME_W PROP_TAG( PT_UNICODE, 0x3001)
+#define PR_DISPLAY_NAME_A PROP_TAG( PT_STRING8, 0x3001)
+#define PR_ADDRTYPE PROP_TAG( PT_TSTRING, 0x3002)
+#define PR_ADDRTYPE_W PROP_TAG( PT_UNICODE, 0x3002)
+#define PR_ADDRTYPE_A PROP_TAG( PT_STRING8, 0x3002)
+#define PR_EMAIL_ADDRESS PROP_TAG( PT_TSTRING, 0x3003)
+#define PR_EMAIL_ADDRESS_W PROP_TAG( PT_UNICODE, 0x3003)
+#define PR_EMAIL_ADDRESS_A PROP_TAG( PT_STRING8, 0x3003)
+#define PR_COMMENT PROP_TAG( PT_TSTRING, 0x3004)
+#define PR_COMMENT_W PROP_TAG( PT_UNICODE, 0x3004)
+#define PR_COMMENT_A PROP_TAG( PT_STRING8, 0x3004)
+#define PR_DEPTH PROP_TAG( PT_LONG, 0x3005)
+#define PR_PROVIDER_DISPLAY PROP_TAG( PT_TSTRING, 0x3006)
+#define PR_PROVIDER_DISPLAY_W PROP_TAG( PT_UNICODE, 0x3006)
+#define PR_PROVIDER_DISPLAY_A PROP_TAG( PT_STRING8, 0x3006)
+#define PR_CREATION_TIME PROP_TAG( PT_SYSTIME, 0x3007)
+#define PR_LAST_MODIFICATION_TIME PROP_TAG( PT_SYSTIME, 0x3008)
+#define PR_RESOURCE_FLAGS PROP_TAG( PT_LONG, 0x3009)
+#define PR_PROVIDER_DLL_NAME PROP_TAG( PT_TSTRING, 0x300A)
+#define PR_PROVIDER_DLL_NAME_W PROP_TAG( PT_UNICODE, 0x300A)
+#define PR_PROVIDER_DLL_NAME_A PROP_TAG( PT_STRING8, 0x300A)
+#define PR_SEARCH_KEY PROP_TAG( PT_BINARY, 0x300B)
+#define PR_PROVIDER_UID PROP_TAG( PT_BINARY, 0x300C)
+#define PR_PROVIDER_ORDINAL PROP_TAG( PT_LONG, 0x300D)
+
+/*
+ * MAPI Form properties
+ */
+#define PR_FORM_VERSION PROP_TAG(PT_TSTRING, 0x3301)
+#define PR_FORM_VERSION_W PROP_TAG(PT_UNICODE, 0x3301)
+#define PR_FORM_VERSION_A PROP_TAG(PT_STRING8, 0x3301)
+#define PR_FORM_CLSID PROP_TAG(PT_CLSID, 0x3302)
+#define PR_FORM_CONTACT_NAME PROP_TAG(PT_TSTRING, 0x3303)
+#define PR_FORM_CONTACT_NAME_W PROP_TAG(PT_UNICODE, 0x3303)
+#define PR_FORM_CONTACT_NAME_A PROP_TAG(PT_STRING8, 0x3303)
+#define PR_FORM_CATEGORY PROP_TAG(PT_TSTRING, 0x3304)
+#define PR_FORM_CATEGORY_W PROP_TAG(PT_UNICODE, 0x3304)
+#define PR_FORM_CATEGORY_A PROP_TAG(PT_STRING8, 0x3304)
+#define PR_FORM_CATEGORY_SUB PROP_TAG(PT_TSTRING, 0x3305)
+#define PR_FORM_CATEGORY_SUB_W PROP_TAG(PT_UNICODE, 0x3305)
+#define PR_FORM_CATEGORY_SUB_A PROP_TAG(PT_STRING8, 0x3305)
+#define PR_FORM_HOST_MAP PROP_TAG(PT_MV_LONG, 0x3306)
+#define PR_FORM_HIDDEN PROP_TAG(PT_BOOLEAN, 0x3307)
+#define PR_FORM_DESIGNER_NAME PROP_TAG(PT_TSTRING, 0x3308)
+#define PR_FORM_DESIGNER_NAME_W PROP_TAG(PT_UNICODE, 0x3308)
+#define PR_FORM_DESIGNER_NAME_A PROP_TAG(PT_STRING8, 0x3308)
+#define PR_FORM_DESIGNER_GUID PROP_TAG(PT_CLSID, 0x3309)
+#define PR_FORM_MESSAGE_BEHAVIOR PROP_TAG(PT_LONG, 0x330A)
+
+/*
+ * Message store properties
+ */
+
+#define PR_DEFAULT_STORE PROP_TAG( PT_BOOLEAN, 0x3400)
+#define PR_STORE_SUPPORT_MASK PROP_TAG( PT_LONG, 0x340D)
+#define PR_STORE_STATE PROP_TAG( PT_LONG, 0x340E)
+
+#define PR_IPM_SUBTREE_SEARCH_KEY PROP_TAG( PT_BINARY, 0x3410)
+#define PR_IPM_OUTBOX_SEARCH_KEY PROP_TAG( PT_BINARY, 0x3411)
+#define PR_IPM_WASTEBASKET_SEARCH_KEY PROP_TAG( PT_BINARY, 0x3412)
+#define PR_IPM_SENTMAIL_SEARCH_KEY PROP_TAG( PT_BINARY, 0x3413)
+#define PR_MDB_PROVIDER PROP_TAG( PT_BINARY, 0x3414)
+#define PR_RECEIVE_FOLDER_SETTINGS PROP_TAG( PT_OBJECT, 0x3415)
+
+#define PR_VALID_FOLDER_MASK PROP_TAG( PT_LONG, 0x35DF)
+#define PR_IPM_SUBTREE_ENTRYID PROP_TAG( PT_BINARY, 0x35E0)
+
+#define PR_IPM_OUTBOX_ENTRYID PROP_TAG( PT_BINARY, 0x35E2)
+#define PR_IPM_WASTEBASKET_ENTRYID PROP_TAG( PT_BINARY, 0x35E3)
+#define PR_IPM_SENTMAIL_ENTRYID PROP_TAG( PT_BINARY, 0x35E4)
+#define PR_VIEWS_ENTRYID PROP_TAG( PT_BINARY, 0x35E5)
+#define PR_COMMON_VIEWS_ENTRYID PROP_TAG( PT_BINARY, 0x35E6)
+#define PR_FINDER_ENTRYID PROP_TAG( PT_BINARY, 0x35E7)
+
+/* Proptags 0x35E8-0x35FF reserved for folders "guaranteed" by PR_VALID_FOLDER_MASK */
+
+
+/*
+ * Folder and AB Container properties
+ */
+
+#define PR_CONTAINER_FLAGS PROP_TAG( PT_LONG, 0x3600)
+#define PR_FOLDER_TYPE PROP_TAG( PT_LONG, 0x3601)
+#define PR_CONTENT_COUNT PROP_TAG( PT_LONG, 0x3602)
+#define PR_CONTENT_UNREAD PROP_TAG( PT_LONG, 0x3603)
+#define PR_CREATE_TEMPLATES PROP_TAG( PT_OBJECT, 0x3604)
+#define PR_DETAILS_TABLE PROP_TAG( PT_OBJECT, 0x3605)
+#define PR_SEARCH PROP_TAG( PT_OBJECT, 0x3607)
+#define PR_SELECTABLE PROP_TAG( PT_BOOLEAN, 0x3609)
+#define PR_SUBFOLDERS PROP_TAG( PT_BOOLEAN, 0x360A)
+#define PR_STATUS PROP_TAG( PT_LONG, 0x360B)
+#define PR_ANR PROP_TAG( PT_TSTRING, 0x360C)
+#define PR_ANR_W PROP_TAG( PT_UNICODE, 0x360C)
+#define PR_ANR_A PROP_TAG( PT_STRING8, 0x360C)
+#define PR_CONTENTS_SORT_ORDER PROP_TAG( PT_MV_LONG, 0x360D)
+#define PR_CONTAINER_HIERARCHY PROP_TAG( PT_OBJECT, 0x360E)
+#define PR_CONTAINER_CONTENTS PROP_TAG( PT_OBJECT, 0x360F)
+#define PR_FOLDER_ASSOCIATED_CONTENTS PROP_TAG( PT_OBJECT, 0x3610)
+#define PR_DEF_CREATE_DL PROP_TAG( PT_BINARY, 0x3611)
+#define PR_DEF_CREATE_MAILUSER PROP_TAG( PT_BINARY, 0x3612)
+#define PR_CONTAINER_CLASS PROP_TAG( PT_TSTRING, 0x3613)
+#define PR_CONTAINER_CLASS_W PROP_TAG( PT_UNICODE, 0x3613)
+#define PR_CONTAINER_CLASS_A PROP_TAG( PT_STRING8, 0x3613)
+#define PR_CONTAINER_MODIFY_VERSION PROP_TAG( PT_I8, 0x3614)
+#define PR_AB_PROVIDER_ID PROP_TAG( PT_BINARY, 0x3615)
+#define PR_DEFAULT_VIEW_ENTRYID PROP_TAG( PT_BINARY, 0x3616)
+#define PR_ASSOC_CONTENT_COUNT PROP_TAG( PT_LONG, 0x3617)
+
+/* Reserved 0x36C0-0x36FF */
+
+/*
+ * Attachment properties
+ */
+
+#define PR_ATTACHMENT_X400_PARAMETERS PROP_TAG( PT_BINARY, 0x3700)
+#define PR_ATTACH_DATA_OBJ PROP_TAG( PT_OBJECT, 0x3701)
+#define PR_ATTACH_DATA_BIN PROP_TAG( PT_BINARY, 0x3701)
+#define PR_ATTACH_ENCODING PROP_TAG( PT_BINARY, 0x3702)
+#define PR_ATTACH_EXTENSION PROP_TAG( PT_TSTRING, 0x3703)
+#define PR_ATTACH_EXTENSION_W PROP_TAG( PT_UNICODE, 0x3703)
+#define PR_ATTACH_EXTENSION_A PROP_TAG( PT_STRING8, 0x3703)
+#define PR_ATTACH_FILENAME PROP_TAG( PT_TSTRING, 0x3704)
+#define PR_ATTACH_FILENAME_W PROP_TAG( PT_UNICODE, 0x3704)
+#define PR_ATTACH_FILENAME_A PROP_TAG( PT_STRING8, 0x3704)
+#define PR_ATTACH_METHOD PROP_TAG( PT_LONG, 0x3705)
+#define PR_ATTACH_LONG_FILENAME PROP_TAG( PT_TSTRING, 0x3707)
+#define PR_ATTACH_LONG_FILENAME_W PROP_TAG( PT_UNICODE, 0x3707)
+#define PR_ATTACH_LONG_FILENAME_A PROP_TAG( PT_STRING8, 0x3707)
+#define PR_ATTACH_PATHNAME PROP_TAG( PT_TSTRING, 0x3708)
+#define PR_ATTACH_PATHNAME_W PROP_TAG( PT_UNICODE, 0x3708)
+#define PR_ATTACH_PATHNAME_A PROP_TAG( PT_STRING8, 0x3708)
+#define PR_ATTACH_RENDERING PROP_TAG( PT_BINARY, 0x3709)
+#define PR_ATTACH_TAG PROP_TAG( PT_BINARY, 0x370A)
+#define PR_RENDERING_POSITION PROP_TAG( PT_LONG, 0x370B)
+#define PR_ATTACH_TRANSPORT_NAME PROP_TAG( PT_TSTRING, 0x370C)
+#define PR_ATTACH_TRANSPORT_NAME_W PROP_TAG( PT_UNICODE, 0x370C)
+#define PR_ATTACH_TRANSPORT_NAME_A PROP_TAG( PT_STRING8, 0x370C)
+#define PR_ATTACH_LONG_PATHNAME PROP_TAG( PT_TSTRING, 0x370D)
+#define PR_ATTACH_LONG_PATHNAME_W PROP_TAG( PT_UNICODE, 0x370D)
+#define PR_ATTACH_LONG_PATHNAME_A PROP_TAG( PT_STRING8, 0x370D)
+#define PR_ATTACH_MIME_TAG PROP_TAG( PT_TSTRING, 0x370E)
+#define PR_ATTACH_MIME_TAG_W PROP_TAG( PT_UNICODE, 0x370E)
+#define PR_ATTACH_MIME_TAG_A PROP_TAG( PT_STRING8, 0x370E)
+#define PR_ATTACH_ADDITIONAL_INFO PROP_TAG( PT_BINARY, 0x370F)
+
+/*
+ * AB Object properties
+ */
+
+#define PR_DISPLAY_TYPE PROP_TAG( PT_LONG, 0x3900)
+#define PR_TEMPLATEID PROP_TAG( PT_BINARY, 0x3902)
+#define PR_PRIMARY_CAPABILITY PROP_TAG( PT_BINARY, 0x3904)
+
+
+/*
+ * Mail user properties
+ */
+#define PR_7BIT_DISPLAY_NAME PROP_TAG( PT_STRING8, 0x39FF)
+#define PR_ACCOUNT PROP_TAG( PT_TSTRING, 0x3A00)
+#define PR_ACCOUNT_W PROP_TAG( PT_UNICODE, 0x3A00)
+#define PR_ACCOUNT_A PROP_TAG( PT_STRING8, 0x3A00)
+#define PR_ALTERNATE_RECIPIENT PROP_TAG( PT_BINARY, 0x3A01)
+#define PR_CALLBACK_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A02)
+#define PR_CALLBACK_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A02)
+#define PR_CALLBACK_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A02)
+#define PR_CONVERSION_PROHIBITED PROP_TAG( PT_BOOLEAN, 0x3A03)
+#define PR_DISCLOSE_RECIPIENTS PROP_TAG( PT_BOOLEAN, 0x3A04)
+#define PR_GENERATION PROP_TAG( PT_TSTRING, 0x3A05)
+#define PR_GENERATION_W PROP_TAG( PT_UNICODE, 0x3A05)
+#define PR_GENERATION_A PROP_TAG( PT_STRING8, 0x3A05)
+#define PR_GIVEN_NAME PROP_TAG( PT_TSTRING, 0x3A06)
+#define PR_GIVEN_NAME_W PROP_TAG( PT_UNICODE, 0x3A06)
+#define PR_GIVEN_NAME_A PROP_TAG( PT_STRING8, 0x3A06)
+#define PR_GOVERNMENT_ID_NUMBER PROP_TAG( PT_TSTRING, 0x3A07)
+#define PR_GOVERNMENT_ID_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A07)
+#define PR_GOVERNMENT_ID_NUMBER_A PROP_TAG( PT_STRING8, 0x3A07)
+#define PR_BUSINESS_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A08)
+#define PR_BUSINESS_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A08)
+#define PR_BUSINESS_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A08)
+#define PR_OFFICE_TELEPHONE_NUMBER PR_BUSINESS_TELEPHONE_NUMBER
+#define PR_OFFICE_TELEPHONE_NUMBER_W PR_BUSINESS_TELEPHONE_NUMBER_W
+#define PR_OFFICE_TELEPHONE_NUMBER_A PR_BUSINESS_TELEPHONE_NUMBER_A
+#define PR_HOME_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A09)
+#define PR_HOME_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A09)
+#define PR_HOME_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A09)
+#define PR_INITIALS PROP_TAG( PT_TSTRING, 0x3A0A)
+#define PR_INITIALS_W PROP_TAG( PT_UNICODE, 0x3A0A)
+#define PR_INITIALS_A PROP_TAG( PT_STRING8, 0x3A0A)
+#define PR_KEYWORD PROP_TAG( PT_TSTRING, 0x3A0B)
+#define PR_KEYWORD_W PROP_TAG( PT_UNICODE, 0x3A0B)
+#define PR_KEYWORD_A PROP_TAG( PT_STRING8, 0x3A0B)
+#define PR_LANGUAGE PROP_TAG( PT_TSTRING, 0x3A0C)
+#define PR_LANGUAGE_W PROP_TAG( PT_UNICODE, 0x3A0C)
+#define PR_LANGUAGE_A PROP_TAG( PT_STRING8, 0x3A0C)
+#define PR_LOCATION PROP_TAG( PT_TSTRING, 0x3A0D)
+#define PR_LOCATION_W PROP_TAG( PT_UNICODE, 0x3A0D)
+#define PR_LOCATION_A PROP_TAG( PT_STRING8, 0x3A0D)
+#define PR_MAIL_PERMISSION PROP_TAG( PT_BOOLEAN, 0x3A0E)
+#define PR_MHS_COMMON_NAME PROP_TAG( PT_TSTRING, 0x3A0F)
+#define PR_MHS_COMMON_NAME_W PROP_TAG( PT_UNICODE, 0x3A0F)
+#define PR_MHS_COMMON_NAME_A PROP_TAG( PT_STRING8, 0x3A0F)
+#define PR_ORGANIZATIONAL_ID_NUMBER PROP_TAG( PT_TSTRING, 0x3A10)
+#define PR_ORGANIZATIONAL_ID_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A10)
+#define PR_ORGANIZATIONAL_ID_NUMBER_A PROP_TAG( PT_STRING8, 0x3A10)
+#define PR_SURNAME PROP_TAG( PT_TSTRING, 0x3A11)
+#define PR_SURNAME_W PROP_TAG( PT_UNICODE, 0x3A11)
+#define PR_SURNAME_A PROP_TAG( PT_STRING8, 0x3A11)
+#define PR_ORIGINAL_ENTRYID PROP_TAG( PT_BINARY, 0x3A12)
+#define PR_ORIGINAL_DISPLAY_NAME PROP_TAG( PT_TSTRING, 0x3A13)
+#define PR_ORIGINAL_DISPLAY_NAME_W PROP_TAG( PT_UNICODE, 0x3A13)
+#define PR_ORIGINAL_DISPLAY_NAME_A PROP_TAG( PT_STRING8, 0x3A13)
+#define PR_ORIGINAL_SEARCH_KEY PROP_TAG( PT_BINARY, 0x3A14)
+#define PR_POSTAL_ADDRESS PROP_TAG( PT_TSTRING, 0x3A15)
+#define PR_POSTAL_ADDRESS_W PROP_TAG( PT_UNICODE, 0x3A15)
+#define PR_POSTAL_ADDRESS_A PROP_TAG( PT_STRING8, 0x3A15)
+#define PR_COMPANY_NAME PROP_TAG( PT_TSTRING, 0x3A16)
+#define PR_COMPANY_NAME_W PROP_TAG( PT_UNICODE, 0x3A16)
+#define PR_COMPANY_NAME_A PROP_TAG( PT_STRING8, 0x3A16)
+#define PR_TITLE PROP_TAG( PT_TSTRING, 0x3A17)
+#define PR_TITLE_W PROP_TAG( PT_UNICODE, 0x3A17)
+#define PR_TITLE_A PROP_TAG( PT_STRING8, 0x3A17)
+#define PR_DEPARTMENT_NAME PROP_TAG( PT_TSTRING, 0x3A18)
+#define PR_DEPARTMENT_NAME_W PROP_TAG( PT_UNICODE, 0x3A18)
+#define PR_DEPARTMENT_NAME_A PROP_TAG( PT_STRING8, 0x3A18)
+#define PR_OFFICE_LOCATION PROP_TAG( PT_TSTRING, 0x3A19)
+#define PR_OFFICE_LOCATION_W PROP_TAG( PT_UNICODE, 0x3A19)
+#define PR_OFFICE_LOCATION_A PROP_TAG( PT_STRING8, 0x3A19)
+#define PR_PRIMARY_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A1A)
+#define PR_PRIMARY_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A1A)
+#define PR_PRIMARY_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A1A)
+#define PR_BUSINESS2_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A1B)
+#define PR_BUSINESS2_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A1B)
+#define PR_BUSINESS2_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A1B)
+#define PR_OFFICE2_TELEPHONE_NUMBER PR_BUSINESS2_TELEPHONE_NUMBER
+#define PR_OFFICE2_TELEPHONE_NUMBER_W PR_BUSINESS2_TELEPHONE_NUMBER_W
+#define PR_OFFICE2_TELEPHONE_NUMBER_A PR_BUSINESS2_TELEPHONE_NUMBER_A
+#define PR_MOBILE_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A1C)
+#define PR_MOBILE_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A1C)
+#define PR_MOBILE_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A1C)
+#define PR_CELLULAR_TELEPHONE_NUMBER PR_MOBILE_TELEPHONE_NUMBER
+#define PR_CELLULAR_TELEPHONE_NUMBER_W PR_MOBILE_TELEPHONE_NUMBER_W
+#define PR_CELLULAR_TELEPHONE_NUMBER_A PR_MOBILE_TELEPHONE_NUMBER_A
+#define PR_RADIO_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A1D)
+#define PR_RADIO_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A1D)
+#define PR_RADIO_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A1D)
+#define PR_CAR_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A1E)
+#define PR_CAR_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A1E)
+#define PR_CAR_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A1E)
+#define PR_OTHER_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A1F)
+#define PR_OTHER_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A1F)
+#define PR_OTHER_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A1F)
+#define PR_TRANSMITABLE_DISPLAY_NAME PROP_TAG( PT_TSTRING, 0x3A20)
+#define PR_TRANSMITABLE_DISPLAY_NAME_W PROP_TAG( PT_UNICODE, 0x3A20)
+#define PR_TRANSMITABLE_DISPLAY_NAME_A PROP_TAG( PT_STRING8, 0x3A20)
+#define PR_PAGER_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A21)
+#define PR_PAGER_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A21)
+#define PR_PAGER_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A21)
+#define PR_BEEPER_TELEPHONE_NUMBER PR_PAGER_TELEPHONE_NUMBER
+#define PR_BEEPER_TELEPHONE_NUMBER_W PR_PAGER_TELEPHONE_NUMBER_W
+#define PR_BEEPER_TELEPHONE_NUMBER_A PR_PAGER_TELEPHONE_NUMBER_A
+#define PR_USER_CERTIFICATE PROP_TAG( PT_BINARY, 0x3A22)
+#define PR_PRIMARY_FAX_NUMBER PROP_TAG( PT_TSTRING, 0x3A23)
+#define PR_PRIMARY_FAX_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A23)
+#define PR_PRIMARY_FAX_NUMBER_A PROP_TAG( PT_STRING8, 0x3A23)
+#define PR_BUSINESS_FAX_NUMBER PROP_TAG( PT_TSTRING, 0x3A24)
+#define PR_BUSINESS_FAX_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A24)
+#define PR_BUSINESS_FAX_NUMBER_A PROP_TAG( PT_STRING8, 0x3A24)
+#define PR_HOME_FAX_NUMBER PROP_TAG( PT_TSTRING, 0x3A25)
+#define PR_HOME_FAX_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A25)
+#define PR_HOME_FAX_NUMBER_A PROP_TAG( PT_STRING8, 0x3A25)
+#define PR_COUNTRY PROP_TAG( PT_TSTRING, 0x3A26)
+#define PR_COUNTRY_W PROP_TAG( PT_UNICODE, 0x3A26)
+#define PR_COUNTRY_A PROP_TAG( PT_STRING8, 0x3A26)
+#define PR_BUSINESS_ADDRESS_COUNTRY PR_COUNTRY
+#define PR_BUSINESS_ADDRESS_COUNTRY_W PR_COUNTRY_W
+#define PR_BUSINESS_ADDRESS_COUNTRY_A PR_COUNTRY_A
+
+#define PR_LOCALITY PROP_TAG( PT_TSTRING, 0x3A27)
+#define PR_LOCALITY_W PROP_TAG( PT_UNICODE, 0x3A27)
+#define PR_LOCALITY_A PROP_TAG( PT_STRING8, 0x3A27)
+#define PR_BUSINESS_ADDRESS_CITY PR_LOCALITY
+#define PR_BUSINESS_ADDRESS_CITY_W PR_LOCALITY_W
+#define PR_BUSINESS_ADDRESS_CITY_A PR_LOCALITY_A
+
+#define PR_STATE_OR_PROVINCE PROP_TAG( PT_TSTRING, 0x3A28)
+#define PR_STATE_OR_PROVINCE_W PROP_TAG( PT_UNICODE, 0x3A28)
+#define PR_STATE_OR_PROVINCE_A PROP_TAG( PT_STRING8, 0x3A28)
+#define PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE PR_STATE_OR_PROVINCE
+#define PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_W PR_STATE_OR_PROVINCE_W
+#define PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_A PR_STATE_OR_PROVINCE_A
+
+#define PR_STREET_ADDRESS PROP_TAG( PT_TSTRING, 0x3A29)
+#define PR_STREET_ADDRESS_W PROP_TAG( PT_UNICODE, 0x3A29)
+#define PR_STREET_ADDRESS_A PROP_TAG( PT_STRING8, 0x3A29)
+#define PR_BUSINESS_ADDRESS_STREET PR_STREET_ADDRESS
+#define PR_BUSINESS_ADDRESS_STREET_W PR_STREET_ADDRESS_W
+#define PR_BUSINESS_ADDRESS_STREET_A PR_STREET_ADDRESS_A
+
+#define PR_POSTAL_CODE PROP_TAG( PT_TSTRING, 0x3A2A)
+#define PR_POSTAL_CODE_W PROP_TAG( PT_UNICODE, 0x3A2A)
+#define PR_POSTAL_CODE_A PROP_TAG( PT_STRING8, 0x3A2A)
+#define PR_BUSINESS_ADDRESS_POSTAL_CODE PR_POSTAL_CODE
+#define PR_BUSINESS_ADDRESS_POSTAL_CODE_W PR_POSTAL_CODE_W
+#define PR_BUSINESS_ADDRESS_POSTAL_CODE_A PR_POSTAL_CODE_A
+
+
+#define PR_POST_OFFICE_BOX PROP_TAG( PT_TSTRING, 0x3A2B)
+#define PR_POST_OFFICE_BOX_W PROP_TAG( PT_UNICODE, 0x3A2B)
+#define PR_POST_OFFICE_BOX_A PROP_TAG( PT_STRING8, 0x3A2B)
+#define PR_BUSINESS_ADDRESS_POST_OFFICE_BOX PR_POST_OFFICE_BOX
+#define PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_W PR_POST_OFFICE_BOX_W
+#define PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_A PR_POST_OFFICE_BOX_A
+
+
+#define PR_TELEX_NUMBER PROP_TAG( PT_TSTRING, 0x3A2C)
+#define PR_TELEX_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A2C)
+#define PR_TELEX_NUMBER_A PROP_TAG( PT_STRING8, 0x3A2C)
+#define PR_ISDN_NUMBER PROP_TAG( PT_TSTRING, 0x3A2D)
+#define PR_ISDN_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A2D)
+#define PR_ISDN_NUMBER_A PROP_TAG( PT_STRING8, 0x3A2D)
+#define PR_ASSISTANT_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A2E)
+#define PR_ASSISTANT_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A2E)
+#define PR_ASSISTANT_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A2E)
+#define PR_HOME2_TELEPHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A2F)
+#define PR_HOME2_TELEPHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A2F)
+#define PR_HOME2_TELEPHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A2F)
+#define PR_ASSISTANT PROP_TAG( PT_TSTRING, 0x3A30)
+#define PR_ASSISTANT_W PROP_TAG( PT_UNICODE, 0x3A30)
+#define PR_ASSISTANT_A PROP_TAG( PT_STRING8, 0x3A30)
+#define PR_SEND_RICH_INFO PROP_TAG( PT_BOOLEAN, 0x3A40)
+
+#define PR_WEDDING_ANNIVERSARY PROP_TAG( PT_SYSTIME, 0x3A41)
+#define PR_BIRTHDAY PROP_TAG( PT_SYSTIME, 0x3A42)
+
+
+#define PR_HOBBIES PROP_TAG( PT_TSTRING, 0x3A43)
+#define PR_HOBBIES_W PROP_TAG( PT_UNICODE, 0x3A43)
+#define PR_HOBBIES_A PROP_TAG( PT_STRING8, 0x3A43)
+
+#define PR_MIDDLE_NAME PROP_TAG( PT_TSTRING, 0x3A44)
+#define PR_MIDDLE_NAME_W PROP_TAG( PT_UNICODE, 0x3A44)
+#define PR_MIDDLE_NAME_A PROP_TAG( PT_STRING8, 0x3A44)
+
+#define PR_DISPLAY_NAME_PREFIX PROP_TAG( PT_TSTRING, 0x3A45)
+#define PR_DISPLAY_NAME_PREFIX_W PROP_TAG( PT_UNICODE, 0x3A45)
+#define PR_DISPLAY_NAME_PREFIX_A PROP_TAG( PT_STRING8, 0x3A45)
+
+#define PR_PROFESSION PROP_TAG( PT_TSTRING, 0x3A46)
+#define PR_PROFESSION_W PROP_TAG( PT_UNICODE, 0x3A46)
+#define PR_PROFESSION_A PROP_TAG( PT_STRING8, 0x3A46)
+
+#define PR_PREFERRED_BY_NAME PROP_TAG( PT_TSTRING, 0x3A47)
+#define PR_PREFERRED_BY_NAME_W PROP_TAG( PT_UNICODE, 0x3A47)
+#define PR_PREFERRED_BY_NAME_A PROP_TAG( PT_STRING8, 0x3A47)
+
+#define PR_SPOUSE_NAME PROP_TAG( PT_TSTRING, 0x3A48)
+#define PR_SPOUSE_NAME_W PROP_TAG( PT_UNICODE, 0x3A48)
+#define PR_SPOUSE_NAME_A PROP_TAG( PT_STRING8, 0x3A48)
+
+#define PR_COMPUTER_NETWORK_NAME PROP_TAG( PT_TSTRING, 0x3A49)
+#define PR_COMPUTER_NETWORK_NAME_W PROP_TAG( PT_UNICODE, 0x3A49)
+#define PR_COMPUTER_NETWORK_NAME_A PROP_TAG( PT_STRING8, 0x3A49)
+
+#define PR_CUSTOMER_ID PROP_TAG( PT_TSTRING, 0x3A4A)
+#define PR_CUSTOMER_ID_W PROP_TAG( PT_UNICODE, 0x3A4A)
+#define PR_CUSTOMER_ID_A PROP_TAG( PT_STRING8, 0x3A4A)
+
+#define PR_TTYTDD_PHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A4B)
+#define PR_TTYTDD_PHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A4B)
+#define PR_TTYTDD_PHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A4B)
+
+#define PR_FTP_SITE PROP_TAG( PT_TSTRING, 0x3A4C)
+#define PR_FTP_SITE_W PROP_TAG( PT_UNICODE, 0x3A4C)
+#define PR_FTP_SITE_A PROP_TAG( PT_STRING8, 0x3A4C)
+
+#define PR_GENDER PROP_TAG( PT_SHORT, 0x3A4D)
+
+#define PR_MANAGER_NAME PROP_TAG( PT_TSTRING, 0x3A4E)
+#define PR_MANAGER_NAME_W PROP_TAG( PT_UNICODE, 0x3A4E)
+#define PR_MANAGER_NAME_A PROP_TAG( PT_STRING8, 0x3A4E)
+
+#define PR_NICKNAME PROP_TAG( PT_TSTRING, 0x3A4F)
+#define PR_NICKNAME_W PROP_TAG( PT_UNICODE, 0x3A4F)
+#define PR_NICKNAME_A PROP_TAG( PT_STRING8, 0x3A4F)
+
+#define PR_PERSONAL_HOME_PAGE PROP_TAG( PT_TSTRING, 0x3A50)
+#define PR_PERSONAL_HOME_PAGE_W PROP_TAG( PT_UNICODE, 0x3A50)
+#define PR_PERSONAL_HOME_PAGE_A PROP_TAG( PT_STRING8, 0x3A50)
+
+
+#define PR_BUSINESS_HOME_PAGE PROP_TAG( PT_TSTRING, 0x3A51)
+#define PR_BUSINESS_HOME_PAGE_W PROP_TAG( PT_UNICODE, 0x3A51)
+#define PR_BUSINESS_HOME_PAGE_A PROP_TAG( PT_STRING8, 0x3A51)
+
+#define PR_CONTACT_VERSION PROP_TAG( PT_CLSID, 0x3A52)
+#define PR_CONTACT_ENTRYIDS PROP_TAG( PT_MV_BINARY, 0x3A53)
+
+#define PR_CONTACT_ADDRTYPES PROP_TAG( PT_MV_TSTRING, 0x3A54)
+#define PR_CONTACT_ADDRTYPES_W PROP_TAG( PT_MV_UNICODE, 0x3A54)
+#define PR_CONTACT_ADDRTYPES_A PROP_TAG( PT_MV_STRING8, 0x3A54)
+
+#define PR_CONTACT_DEFAULT_ADDRESS_INDEX PROP_TAG( PT_LONG, 0x3A55)
+
+#define PR_CONTACT_EMAIL_ADDRESSES PROP_TAG( PT_MV_TSTRING, 0x3A56)
+#define PR_CONTACT_EMAIL_ADDRESSES_W PROP_TAG( PT_MV_UNICODE, 0x3A56)
+#define PR_CONTACT_EMAIL_ADDRESSES_A PROP_TAG( PT_MV_STRING8, 0x3A56)
+
+
+#define PR_COMPANY_MAIN_PHONE_NUMBER PROP_TAG( PT_TSTRING, 0x3A57)
+#define PR_COMPANY_MAIN_PHONE_NUMBER_W PROP_TAG( PT_UNICODE, 0x3A57)
+#define PR_COMPANY_MAIN_PHONE_NUMBER_A PROP_TAG( PT_STRING8, 0x3A57)
+
+#define PR_CHILDRENS_NAMES PROP_TAG( PT_MV_TSTRING, 0x3A58)
+#define PR_CHILDRENS_NAMES_W PROP_TAG( PT_MV_UNICODE, 0x3A58)
+#define PR_CHILDRENS_NAMES_A PROP_TAG( PT_MV_STRING8, 0x3A58)
+
+
+
+#define PR_HOME_ADDRESS_CITY PROP_TAG( PT_TSTRING, 0x3A59)
+#define PR_HOME_ADDRESS_CITY_W PROP_TAG( PT_UNICODE, 0x3A59)
+#define PR_HOME_ADDRESS_CITY_A PROP_TAG( PT_STRING8, 0x3A59)
+
+#define PR_HOME_ADDRESS_COUNTRY PROP_TAG( PT_TSTRING, 0x3A5A)
+#define PR_HOME_ADDRESS_COUNTRY_W PROP_TAG( PT_UNICODE, 0x3A5A)
+#define PR_HOME_ADDRESS_COUNTRY_A PROP_TAG( PT_STRING8, 0x3A5A)
+
+#define PR_HOME_ADDRESS_POSTAL_CODE PROP_TAG( PT_TSTRING, 0x3A5B)
+#define PR_HOME_ADDRESS_POSTAL_CODE_W PROP_TAG( PT_UNICODE, 0x3A5B)
+#define PR_HOME_ADDRESS_POSTAL_CODE_A PROP_TAG( PT_STRING8, 0x3A5B)
+
+#define PR_HOME_ADDRESS_STATE_OR_PROVINCE PROP_TAG( PT_TSTRING, 0x3A5C)
+#define PR_HOME_ADDRESS_STATE_OR_PROVINCE_W PROP_TAG( PT_UNICODE, 0x3A5C)
+#define PR_HOME_ADDRESS_STATE_OR_PROVINCE_A PROP_TAG( PT_STRING8, 0x3A5C)
+
+#define PR_HOME_ADDRESS_STREET PROP_TAG( PT_TSTRING, 0x3A5D)
+#define PR_HOME_ADDRESS_STREET_W PROP_TAG( PT_UNICODE, 0x3A5D)
+#define PR_HOME_ADDRESS_STREET_A PROP_TAG( PT_STRING8, 0x3A5D)
+
+#define PR_HOME_ADDRESS_POST_OFFICE_BOX PROP_TAG( PT_TSTRING, 0x3A5E)
+#define PR_HOME_ADDRESS_POST_OFFICE_BOX_W PROP_TAG( PT_UNICODE, 0x3A5E)
+#define PR_HOME_ADDRESS_POST_OFFICE_BOX_A PROP_TAG( PT_STRING8, 0x3A5E)
+
+#define PR_OTHER_ADDRESS_CITY PROP_TAG( PT_TSTRING, 0x3A5F)
+#define PR_OTHER_ADDRESS_CITY_W PROP_TAG( PT_UNICODE, 0x3A5F)
+#define PR_OTHER_ADDRESS_CITY_A PROP_TAG( PT_STRING8, 0x3A5F)
+
+#define PR_OTHER_ADDRESS_COUNTRY PROP_TAG( PT_TSTRING, 0x3A60)
+#define PR_OTHER_ADDRESS_COUNTRY_W PROP_TAG( PT_UNICODE, 0x3A60)
+#define PR_OTHER_ADDRESS_COUNTRY_A PROP_TAG( PT_STRING8, 0x3A60)
+
+#define PR_OTHER_ADDRESS_POSTAL_CODE PROP_TAG( PT_TSTRING, 0x3A61)
+#define PR_OTHER_ADDRESS_POSTAL_CODE_W PROP_TAG( PT_UNICODE, 0x3A61)
+#define PR_OTHER_ADDRESS_POSTAL_CODE_A PROP_TAG( PT_STRING8, 0x3A61)
+
+#define PR_OTHER_ADDRESS_STATE_OR_PROVINCE PROP_TAG( PT_TSTRING, 0x3A62)
+#define PR_OTHER_ADDRESS_STATE_OR_PROVINCE_W PROP_TAG( PT_UNICODE, 0x3A62)
+#define PR_OTHER_ADDRESS_STATE_OR_PROVINCE_A PROP_TAG( PT_STRING8, 0x3A62)
+
+#define PR_OTHER_ADDRESS_STREET PROP_TAG( PT_TSTRING, 0x3A63)
+#define PR_OTHER_ADDRESS_STREET_W PROP_TAG( PT_UNICODE, 0x3A63)
+#define PR_OTHER_ADDRESS_STREET_A PROP_TAG( PT_STRING8, 0x3A63)
+
+#define PR_OTHER_ADDRESS_POST_OFFICE_BOX PROP_TAG( PT_TSTRING, 0x3A64)
+#define PR_OTHER_ADDRESS_POST_OFFICE_BOX_W PROP_TAG( PT_UNICODE, 0x3A64)
+#define PR_OTHER_ADDRESS_POST_OFFICE_BOX_A PROP_TAG( PT_STRING8, 0x3A64)
+
+
+/*
+ * Profile section properties
+ */
+
+#define PR_STORE_PROVIDERS PROP_TAG( PT_BINARY, 0x3D00)
+#define PR_AB_PROVIDERS PROP_TAG( PT_BINARY, 0x3D01)
+#define PR_TRANSPORT_PROVIDERS PROP_TAG( PT_BINARY, 0x3D02)
+
+#define PR_DEFAULT_PROFILE PROP_TAG( PT_BOOLEAN, 0x3D04)
+#define PR_AB_SEARCH_PATH PROP_TAG( PT_MV_BINARY, 0x3D05)
+#define PR_AB_DEFAULT_DIR PROP_TAG( PT_BINARY, 0x3D06)
+#define PR_AB_DEFAULT_PAB PROP_TAG( PT_BINARY, 0x3D07)
+
+#define PR_FILTERING_HOOKS PROP_TAG( PT_BINARY, 0x3D08)
+#define PR_SERVICE_NAME PROP_TAG( PT_TSTRING, 0x3D09)
+#define PR_SERVICE_NAME_W PROP_TAG( PT_UNICODE, 0x3D09)
+#define PR_SERVICE_NAME_A PROP_TAG( PT_STRING8, 0x3D09)
+#define PR_SERVICE_DLL_NAME PROP_TAG( PT_TSTRING, 0x3D0A)
+#define PR_SERVICE_DLL_NAME_W PROP_TAG( PT_UNICODE, 0x3D0A)
+#define PR_SERVICE_DLL_NAME_A PROP_TAG( PT_STRING8, 0x3D0A)
+#define PR_SERVICE_ENTRY_NAME PROP_TAG( PT_STRING8, 0x3D0B)
+#define PR_SERVICE_UID PROP_TAG( PT_BINARY, 0x3D0C)
+#define PR_SERVICE_EXTRA_UIDS PROP_TAG( PT_BINARY, 0x3D0D)
+#define PR_SERVICES PROP_TAG( PT_BINARY, 0x3D0E)
+#define PR_SERVICE_SUPPORT_FILES PROP_TAG( PT_MV_TSTRING, 0x3D0F)
+#define PR_SERVICE_SUPPORT_FILES_W PROP_TAG( PT_MV_UNICODE, 0x3D0F)
+#define PR_SERVICE_SUPPORT_FILES_A PROP_TAG( PT_MV_STRING8, 0x3D0F)
+#define PR_SERVICE_DELETE_FILES PROP_TAG( PT_MV_TSTRING, 0x3D10)
+#define PR_SERVICE_DELETE_FILES_W PROP_TAG( PT_MV_UNICODE, 0x3D10)
+#define PR_SERVICE_DELETE_FILES_A PROP_TAG( PT_MV_STRING8, 0x3D10)
+#define PR_AB_SEARCH_PATH_UPDATE PROP_TAG( PT_BINARY, 0x3D11)
+#define PR_PROFILE_NAME PROP_TAG( PT_TSTRING, 0x3D12)
+#define PR_PROFILE_NAME_A PROP_TAG( PT_STRING8, 0x3D12)
+#define PR_PROFILE_NAME_W PROP_TAG( PT_UNICODE, 0x3D12)
+
+/*
+ * Status object properties
+ */
+
+#define PR_IDENTITY_DISPLAY PROP_TAG( PT_TSTRING, 0x3E00)
+#define PR_IDENTITY_DISPLAY_W PROP_TAG( PT_UNICODE, 0x3E00)
+#define PR_IDENTITY_DISPLAY_A PROP_TAG( PT_STRING8, 0x3E00)
+#define PR_IDENTITY_ENTRYID PROP_TAG( PT_BINARY, 0x3E01)
+#define PR_RESOURCE_METHODS PROP_TAG( PT_LONG, 0x3E02)
+#define PR_RESOURCE_TYPE PROP_TAG( PT_LONG, 0x3E03)
+#define PR_STATUS_CODE PROP_TAG( PT_LONG, 0x3E04)
+#define PR_IDENTITY_SEARCH_KEY PROP_TAG( PT_BINARY, 0x3E05)
+#define PR_OWN_STORE_ENTRYID PROP_TAG( PT_BINARY, 0x3E06)
+#define PR_RESOURCE_PATH PROP_TAG( PT_TSTRING, 0x3E07)
+#define PR_RESOURCE_PATH_W PROP_TAG( PT_UNICODE, 0x3E07)
+#define PR_RESOURCE_PATH_A PROP_TAG( PT_STRING8, 0x3E07)
+#define PR_STATUS_STRING PROP_TAG( PT_TSTRING, 0x3E08)
+#define PR_STATUS_STRING_W PROP_TAG( PT_UNICODE, 0x3E08)
+#define PR_STATUS_STRING_A PROP_TAG( PT_STRING8, 0x3E08)
+#define PR_X400_DEFERRED_DELIVERY_CANCEL PROP_TAG( PT_BOOLEAN, 0x3E09)
+#define PR_HEADER_FOLDER_ENTRYID PROP_TAG( PT_BINARY, 0x3E0A)
+#define PR_REMOTE_PROGRESS PROP_TAG( PT_LONG, 0x3E0B)
+#define PR_REMOTE_PROGRESS_TEXT PROP_TAG( PT_TSTRING, 0x3E0C)
+#define PR_REMOTE_PROGRESS_TEXT_W PROP_TAG( PT_UNICODE, 0x3E0C)
+#define PR_REMOTE_PROGRESS_TEXT_A PROP_TAG( PT_STRING8, 0x3E0C)
+#define PR_REMOTE_VALIDATE_OK PROP_TAG( PT_BOOLEAN, 0x3E0D)
+
+/*
+ * Display table properties
+ */
+
+#define PR_CONTROL_FLAGS PROP_TAG( PT_LONG, 0x3F00)
+#define PR_CONTROL_STRUCTURE PROP_TAG( PT_BINARY, 0x3F01)
+#define PR_CONTROL_TYPE PROP_TAG( PT_LONG, 0x3F02)
+#define PR_DELTAX PROP_TAG( PT_LONG, 0x3F03)
+#define PR_DELTAY PROP_TAG( PT_LONG, 0x3F04)
+#define PR_XPOS PROP_TAG( PT_LONG, 0x3F05)
+#define PR_YPOS PROP_TAG( PT_LONG, 0x3F06)
+#define PR_CONTROL_ID PROP_TAG( PT_BINARY, 0x3F07)
+#define PR_INITIAL_DETAILS_PANE PROP_TAG( PT_LONG, 0x3F08)
+
+/*
+ * Secure property id range
+ */
+
+#define PROP_ID_SECURE_MIN 0x67F0
+#define PROP_ID_SECURE_MAX 0x67FF
+
+
+#endif /* MAPITAGS_H */
+
diff --git a/public/sdk/inc/mapiutil.h b/public/sdk/inc/mapiutil.h
new file mode 100644
index 000000000..2a98ded52
--- /dev/null
+++ b/public/sdk/inc/mapiutil.h
@@ -0,0 +1,882 @@
+/*
+ * M A P I U T I L . H
+ *
+ * Definitions and prototypes for utility functions provided by MAPI
+ * in MAPI[xx].DLL.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef _MAPIUTIL_H_
+#define _MAPIUTIL_H_
+
+#if defined (WIN32) && !defined (_WIN32)
+#define _WIN32
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef MAPIX_H
+#include <mapix.h>
+#endif
+
+#ifdef WIN16
+#include <storage.h>
+#endif
+
+#ifndef BEGIN_INTERFACE
+#define BEGIN_INTERFACE
+#endif
+
+
+/* IMAPITable in memory */
+
+/* ITableData Interface ---------------------------------------------------- */
+
+DECLARE_MAPI_INTERFACE_PTR(ITableData, LPTABLEDATA);
+
+typedef void (STDAPICALLTYPE CALLERRELEASE)(
+ ULONG ulCallerData,
+ LPTABLEDATA lpTblData,
+ LPMAPITABLE lpVue
+);
+
+#define MAPI_ITABLEDATA_METHODS(IPURE) \
+ MAPIMETHOD(HrGetView) \
+ (THIS_ LPSSortOrderSet lpSSortOrderSet, \
+ CALLERRELEASE FAR * lpfCallerRelease, \
+ ULONG ulCallerData, \
+ LPMAPITABLE FAR * lppMAPITable) IPURE; \
+ MAPIMETHOD(HrModifyRow) \
+ (THIS_ LPSRow) IPURE; \
+ MAPIMETHOD(HrDeleteRow) \
+ (THIS_ LPSPropValue lpSPropValue) IPURE; \
+ MAPIMETHOD(HrQueryRow) \
+ (THIS_ LPSPropValue lpsPropValue, \
+ LPSRow FAR * lppSRow, \
+ ULONG FAR * lpuliRow) IPURE; \
+ MAPIMETHOD(HrEnumRow) \
+ (THIS_ ULONG ulRowNumber, \
+ LPSRow FAR * lppSRow) IPURE; \
+ MAPIMETHOD(HrNotify) \
+ (THIS_ ULONG ulFlags, \
+ ULONG cValues, \
+ LPSPropValue lpSPropValue) IPURE; \
+ MAPIMETHOD(HrInsertRow) \
+ (THIS_ ULONG uliRow, \
+ LPSRow lpSRow) IPURE; \
+ MAPIMETHOD(HrModifyRows) \
+ (THIS_ ULONG ulFlags, \
+ LPSRowSet lpSRowSet) IPURE; \
+ MAPIMETHOD(HrDeleteRows) \
+ (THIS_ ULONG ulFlags, \
+ LPSRowSet lprowsetToDelete, \
+ ULONG FAR * cRowsDeleted) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE ITableData
+DECLARE_MAPI_INTERFACE_(ITableData, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_ITABLEDATA_METHODS(PURE)
+};
+
+
+/* Entry Point for in memory ITable */
+
+
+/* CreateTable()
+ * Creates the internal memory structures and object handle
+ * to bring a new table into existence.
+ *
+ * lpInterface
+ * Interface ID of the TableData object (IID_IMAPITableData)
+ *
+ * lpAllocateBuffer, lpAllocateMore, and lpFreeBuffer
+ * Function addresses are provided by the caller so that
+ * this DLL allocates/frees memory appropriately.
+ * lpvReserved
+ * Reserved. Should be NULL.
+ * ulTableType
+ * TBLTYPE_DYNAMIC, etc. Visible to the calling application
+ * as part of the GetStatus return data on its views
+ * ulPropTagIndexColumn
+ * Index column for use when changing the data
+ * lpSPropTagArrayColumns
+ * Column proptags for the minimum set of columns in the table
+ * lppTableData
+ * Address of the pointer which will receive the TableData object
+ */
+
+STDAPI_(SCODE)
+CreateTable( LPCIID lpInterface,
+ ALLOCATEBUFFER FAR * lpAllocateBuffer,
+ ALLOCATEMORE FAR * lpAllocateMore,
+ FREEBUFFER FAR * lpFreeBuffer,
+ LPVOID lpvReserved,
+ ULONG ulTableType,
+ ULONG ulPropTagIndexColumn,
+ LPSPropTagArray lpSPropTagArrayColumns,
+ LPTABLEDATA FAR * lppTableData );
+
+/* HrGetView()
+ * This function obtains a new view on the underlying data
+ * which supports the IMAPITable interface. All rows and columns
+ * of the underlying table data are initially visible
+ * lpSSortOrderSet
+ * if specified, results in the view being sorted
+ * lpfCallerRelease
+ * pointer to a routine to be called when the view is released, or
+ * NULL.
+ * ulCallerData
+ * arbitrary data the caller wants saved with this view and returned in
+ * the Release callback.
+ */
+
+/* HrModifyRows()
+ * Add or modify a set of rows in the table data
+ * ulFlags
+ * Must be zero
+ * lpSRowSet
+ * Each row in the row set contains all the properties for one row
+ * in the table. One of the properties must be the index column. Any
+ * row in the table with the same value for its index column is
+ * replaced, or if there is no current row with that value the
+ * row is added.
+ * Each row in LPSRowSet MUST have a unique Index column!
+ * If any views are open, the view is updated as well.
+ * The properties do not have to be in the same order as the
+ * columns in the current table
+ */
+
+/* HrModifyRow()
+ * Add or modify one row in the table
+ * lpSRow
+ * This row contains all the properties for one row in the table.
+ * One of the properties must be the index column. Any row in
+ * the table with the same value for its index column is
+ * replaced, or if there is no current row with that value the
+ * row is added
+ * If any views are open, the view is updated as well.
+ * The properties do not have to be in the same order as the
+ * columns in the current table
+ */
+
+/* HrDeleteRows()
+ * Delete a row in the table.
+ * ulFlags
+ * TAD_ALL_ROWS - Causes all rows in the table to be deleted
+ * lpSRowSet is ignored in this case.
+ * lpSRowSet
+ * Each row in the row set contains all the properties for one row
+ * in the table. One of the properties must be the index column. Any
+ * row in the table with the same value for its index column is
+ * deleted.
+ * Each row in LPSRowSet MUST have a unique Index column!
+ * If any views are open, the view is updated as well.
+ * The properties do not have to be in the same order as the
+ * columns in the current table
+ */
+#define TAD_ALL_ROWS 1
+
+/* HrDeleteRow()
+ * Delete a row in the table.
+ * lpSPropValue
+ * This property value specifies the row which has this value
+ * for its index column
+ */
+
+/* HrQueryRow()
+ * Returns the values of a specified row in the table
+ * lpSPropValue
+ * This property value specifies the row which has this value
+ * for its index column
+ * lppSRow
+ * Address of where to return a pointer to an SRow
+ * lpuliRow
+ * Address of where to return the row number. This can be NULL
+ * if the row number is not required.
+ *
+ */
+
+/* HrEnumRow()
+ * Returns the values of a specific (numbered) row in the table
+ * ulRowNumber
+ * Indicates row number 0 to n-1
+ * lppSRow
+ * Address of where to return a pointer to a SRow
+ */
+
+/* HrInsertRow()
+ * Inserts a row into the table.
+ * uliRow
+ * The row number before which this row will be inserted into the table.
+ * Row numbers can be from 0 to n where o to n-1 result in row insertion
+ * a row number of n results in the row being appended to the table.
+ * lpSRow
+ * This row contains all the properties for one row in the table.
+ * One of the properties must be the index column. Any row in
+ * the table with the same value for its index column is
+ * replaced, or if there is no current row with that value the
+ * row is added
+ * If any views are open, the view is updated as well.
+ * The properties do not have to be in the same order as the
+ * columns in the current table
+ */
+
+
+/* IMAPIProp in memory */
+
+/* IPropData Interface ---------------------------------------------------- */
+
+
+#define MAPI_IPROPDATA_METHODS(IPURE) \
+ MAPIMETHOD(HrSetObjAccess) \
+ (THIS_ ULONG ulAccess) IPURE; \
+ MAPIMETHOD(HrSetPropAccess) \
+ (THIS_ LPSPropTagArray lpPropTagArray, \
+ ULONG FAR * rgulAccess) IPURE; \
+ MAPIMETHOD(HrGetPropAccess) \
+ (THIS_ LPSPropTagArray FAR * lppPropTagArray, \
+ ULONG FAR * FAR * lprgulAccess) IPURE; \
+ MAPIMETHOD(HrAddObjProps) \
+ (THIS_ LPSPropTagArray lppPropTagArray, \
+ LPSPropProblemArray FAR * lprgulAccess) IPURE;
+
+
+#undef INTERFACE
+#define INTERFACE IPropData
+DECLARE_MAPI_INTERFACE_(IPropData, IMAPIProp)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IPROPDATA_METHODS(PURE)
+};
+
+DECLARE_MAPI_INTERFACE_PTR(IPropData, LPPROPDATA);
+
+
+/* Entry Point for in memory IMAPIProp */
+
+
+/* CreateIProp()
+ * Creates the internal memory structures and object handle
+ * to bring a new property interface into existance.
+ *
+ * lpInterface
+ * Interface ID of the TableData object (IID_IMAPIPropData)
+ *
+ * lpAllocateBuffer, lpAllocateMore, and lpFreeBuffer
+ * Function addresses are provided by the caller so that
+ * this DLL allocates/frees memory appropriately.
+ * lppPropData
+ * Address of the pointer which will receive the IPropData object
+ * lpvReserved
+ * Reserved. Should be NULL.
+ */
+
+STDAPI_(SCODE)
+CreateIProp( LPCIID lpInterface,
+ ALLOCATEBUFFER FAR * lpAllocateBuffer,
+ ALLOCATEMORE FAR * lpAllocateMore,
+ FREEBUFFER FAR * lpFreeBuffer,
+ LPVOID lpvReserved,
+ LPPROPDATA FAR * lppPropData );
+
+/*
+ * Defines for prop/obj access
+ */
+#define IPROP_READONLY ((ULONG) 0x00000001)
+#define IPROP_READWRITE ((ULONG) 0x00000002)
+#define IPROP_CLEAN ((ULONG) 0x00010000)
+#define IPROP_DIRTY ((ULONG) 0x00020000)
+
+/*
+ - HrSetPropAccess
+ -
+ * Sets access right attributes on a per-property basis. By default,
+ * all properties are read/write.
+ *
+ */
+
+/*
+ - HrSetObjAccess
+ -
+ * Sets access rights for the object itself. By default, the object has
+ * read/write access.
+ *
+ */
+
+#ifndef NOIDLEENGINE
+
+/* Idle time scheduler */
+
+/*
+ * PRI
+ *
+ * Priority of an idle task.
+ * The idle engine sorts tasks by priority, and the one with the higher
+ * value runs first. Within a priority level, the functions are called
+ * round-robin.
+ */
+
+#define PRILOWEST -32768
+#define PRIHIGHEST 32767
+#define PRIUSER 0
+
+/*
+ * IRO
+ *
+ * Idle routine options. This is a combined bit mask consisting of
+ * individual firo's. Listed below are the possible bit flags.
+ *
+ * FIROWAIT and FIROINTERVAL are mutually exclusive.
+ * If neither of the flags are specified, the default action
+ * is to ignore the time parameter of the idle function and
+ * call it as often as possible if firoPerBlock is not set;
+ * otherwise call it one time only during the idle block
+ * once the time constraint has been set. FIROINTERVAL
+ * is also incompatible with FIROPERBLOCK.
+ *
+ * FIROWAIT - time given is minimum idle time before calling
+ * for the first time in the block of idle time,
+ * afterwhich call as often as possible.
+ * FIROINTERVAL - time given is minimum interval between each
+ * successive call
+ * FIROPERBLOCK - called only once per contiguous block of idle
+ * time
+ * FIRODISABLED - initially disabled when registered, the
+ * default is to enable the function when registered.
+ * FIROONCEONLY - called only one time by the scheduler and then
+ * deregistered automatically.
+ */
+
+#define IRONULL ((USHORT) 0x0000)
+#define FIROWAIT ((USHORT) 0x0001)
+#define FIROINTERVAL ((USHORT) 0x0002)
+#define FIROPERBLOCK ((USHORT) 0x0004)
+#define FIRODISABLED ((USHORT) 0x0020)
+#define FIROONCEONLY ((USHORT) 0x0040)
+
+/*
+ * IRC
+ *
+ * Idle routine change options. This is a combined bit mask consisting
+ * of individual firc's; each one identifies an aspect of the idle task
+ * that can be changed.
+ *
+ */
+
+#define IRCNULL ((USHORT) 0x0000)
+#define FIRCPFN ((USHORT) 0x0001) /* change function pointer */
+#define FIRCPV ((USHORT) 0x0002) /* change parameter block */
+#define FIRCPRI ((USHORT) 0x0004) /* change priority */
+#define FIRCCSEC ((USHORT) 0x0008) /* change time */
+#define FIRCIRO ((USHORT) 0x0010) /* change routine options */
+
+/*
+ * Type definition for idle functions. An idle function takes one
+ * parameter, an PV, and returns a BOOL value.
+ */
+
+typedef BOOL (STDAPICALLTYPE FNIDLE) (LPVOID);
+typedef FNIDLE FAR *PFNIDLE;
+
+/*
+ * FTG
+ *
+ * Function Tag. Used to identify a registered idle function.
+ *
+ */
+
+typedef void FAR *FTG;
+typedef FTG FAR *PFTG;
+#define FTGNULL ((FTG) NULL)
+
+/*
+ - MAPIInitIdle/MAPIDeinitIdle
+ -
+ * Purpose:
+ * Initialises the idle engine
+ * If the initialisation succeded, returns 0, else returns -1
+ *
+ * Arguments:
+ * lpvReserved Reserved, must be NULL.
+ */
+
+STDAPI_(LONG)
+MAPIInitIdle (LPVOID lpvReserved);
+
+STDAPI_(VOID)
+MAPIDeinitIdle (VOID);
+
+
+/*
+ * FtgRegisterIdleRoutine
+ *
+ * Registers the function pfn of type PFNIDLE, i.e., (BOOL (*)(LPVOID))
+ * as an idle function.
+ *
+ * The idle function will be called with the parameter pv by the
+ * idle engine. The function has initial priority priIdle,
+ * associated time csecIdle, and options iroIdle.
+ */
+
+STDAPI_(FTG)
+FtgRegisterIdleRoutine (PFNIDLE lpfnIdle, LPVOID lpvIdleParam,
+ short priIdle, ULONG csecIdle, USHORT iroIdle);
+
+/*
+ * DeregisterIdleRoutine
+ *
+ * Removes the given routine from the list of idle routines.
+ * The routine will not be called again. It is the responsibility
+ * of the caller to clean up any data structures pointed to by the
+ * pvIdleParam parameter; this routine does not free the block.
+ */
+
+STDAPI_(void)
+DeregisterIdleRoutine (FTG ftg);
+
+/*
+ * EnableIdleRoutine
+ *
+ * Enables or disables an idle routine.
+ */
+
+STDAPI_(void)
+EnableIdleRoutine (FTG ftg, BOOL fEnable);
+
+/*
+ * ChangeIdleRoutine
+ *
+ * Changes some or all of the characteristics of the given idle
+ * function. The changes to make are indicated with flags in the
+ * ircIdle parameter.
+ */
+
+STDAPI_(void)
+ChangeIdleRoutine (FTG ftg, PFNIDLE lpfnIdle, LPVOID lpvIdleParam,
+ short priIdle, ULONG csecIdle, USHORT iroIdle, USHORT ircIdle);
+
+
+#endif /* ! NOIDLEENGINE */
+
+
+/* IMalloc Utilities */
+
+STDAPI_(LPMALLOC) MAPIGetDefaultMalloc(VOID);
+
+
+/* StreamOnFile (SOF) */
+
+/*
+ * Methods and #define's for implementing an OLE 2.0 storage stream
+ * (as defined in the OLE 2.0 specs) on top of a system file.
+ */
+
+#define SOF_UNIQUEFILENAME ((ULONG) 0x80000000)
+
+STDMETHODIMP OpenStreamOnFile(
+ LPALLOCATEBUFFER lpAllocateBuffer,
+ LPFREEBUFFER lpFreeBuffer,
+ ULONG ulFlags,
+ LPTSTR lpszFileName,
+ LPTSTR lpszPrefix,
+ LPSTREAM FAR * lppStream);
+
+typedef HRESULT (STDMETHODCALLTYPE FAR * LPOPENSTREAMONFILE) (
+ LPALLOCATEBUFFER lpAllocateBuffer,
+ LPFREEBUFFER lpFreeBuffer,
+ ULONG ulFlags,
+ LPTSTR lpszFileName,
+ LPTSTR lpszPrefix,
+ LPSTREAM FAR * lppStream);
+
+#ifdef _WIN32
+#define OPENSTREAMONFILE "OpenStreamOnFile"
+#endif
+#ifdef WIN16
+#define OPENSTREAMONFILE "_OPENSTREAMONFILE"
+#endif
+
+
+/* Property interface utilities */
+
+/*
+ * Copies a single SPropValue from Src to Dest. Handles all the various
+ * types of properties and will link its allocations given the master
+ * allocation object and an allocate more function.
+ */
+STDAPI_(SCODE)
+PropCopyMore( LPSPropValue lpSPropValueDest,
+ LPSPropValue lpSPropValueSrc,
+ ALLOCATEMORE * lpfAllocMore,
+ LPVOID lpvObject );
+
+/*
+ * Returns the size in bytes of structure at lpSPropValue, including the
+ * Value.
+ */
+STDAPI_(ULONG)
+UlPropSize( LPSPropValue lpSPropValue );
+
+
+STDAPI_(BOOL)
+FEqualNames( LPMAPINAMEID lpName1, LPMAPINAMEID lpName2 );
+
+#if defined(_WIN32) && !defined(_WINNT) && !defined(_WIN95) && !defined(_MAC)
+#define _WINNT
+#endif
+
+STDAPI_(void)
+GetInstance(LPSPropValue lpPropMv, LPSPropValue lpPropSv, ULONG uliInst);
+
+extern char rgchCsds[];
+extern char rgchCids[];
+extern char rgchCsdi[];
+extern char rgchCidi[];
+
+STDAPI_(BOOL)
+FPropContainsProp( LPSPropValue lpSPropValueDst,
+ LPSPropValue lpSPropValueSrc,
+ ULONG ulFuzzyLevel );
+
+STDAPI_(BOOL)
+FPropCompareProp( LPSPropValue lpSPropValue1,
+ ULONG ulRelOp,
+ LPSPropValue lpSPropValue2 );
+
+STDAPI_(LONG)
+LPropCompareProp( LPSPropValue lpSPropValueA,
+ LPSPropValue lpSPropValueB );
+
+STDAPI_(HRESULT)
+HrAddColumns( LPMAPITABLE lptbl,
+ LPSPropTagArray lpproptagColumnsNew,
+ LPALLOCATEBUFFER lpAllocateBuffer,
+ LPFREEBUFFER lpFreeBuffer);
+
+STDAPI_(HRESULT)
+HrAddColumnsEx( LPMAPITABLE lptbl,
+ LPSPropTagArray lpproptagColumnsNew,
+ LPALLOCATEBUFFER lpAllocateBuffer,
+ LPFREEBUFFER lpFreeBuffer,
+ void (FAR *lpfnFilterColumns)(LPSPropTagArray ptaga));
+
+
+/* Notification utilities */
+
+/*
+ * Function that creates an advise sink object given a notification
+ * callback function and context.
+ */
+
+STDAPI
+HrAllocAdviseSink( LPNOTIFCALLBACK lpfnCallback,
+ LPVOID lpvContext,
+ LPMAPIADVISESINK FAR *lppAdviseSink );
+
+
+/*
+ * Wraps an existing advise sink with another one which guarantees
+ * that the original advise sink will be called in the thread on
+ * which it was created.
+ */
+
+STDAPI
+HrThisThreadAdviseSink( LPMAPIADVISESINK lpAdviseSink,
+ LPMAPIADVISESINK FAR *lppAdviseSink);
+
+
+
+/*
+ * Allows a client and/or provider to force notifications
+ * which are currently queued in the MAPI notification engine
+ * to be dispatched without doing a message dispatch.
+ */
+
+STDAPI HrDispatchNotifications (ULONG ulFlags);
+
+
+/* Service Provider Utilities */
+
+/*
+ * Structures and utility function for building a display table
+ * from resources.
+ */
+
+typedef struct {
+ ULONG ulCtlType; /* DTCT_LABEL, etc. */
+ ULONG ulCtlFlags; /* DT_REQUIRED, etc. */
+ LPBYTE lpbNotif; /* pointer to notification data */
+ ULONG cbNotif; /* count of bytes of notification data */
+ LPTSTR lpszFilter; /* character filter for edit/combobox */
+ ULONG ulItemID; /* to validate parallel dlg template entry */
+ union { /* ulCtlType discriminates */
+ LPVOID lpv; /* Initialize this to avoid warnings */
+ LPDTBLLABEL lplabel;
+ LPDTBLEDIT lpedit;
+ LPDTBLLBX lplbx;
+ LPDTBLCOMBOBOX lpcombobox;
+ LPDTBLDDLBX lpddlbx;
+ LPDTBLCHECKBOX lpcheckbox;
+ LPDTBLGROUPBOX lpgroupbox;
+ LPDTBLBUTTON lpbutton;
+ LPDTBLRADIOBUTTON lpradiobutton;
+ LPDTBLMVLISTBOX lpmvlbx;
+ LPDTBLMVDDLBX lpmvddlbx;
+ LPDTBLPAGE lppage;
+ } ctl;
+} DTCTL, FAR *LPDTCTL;
+
+typedef struct {
+ ULONG cctl;
+ LPTSTR lpszResourceName; /* as usual, may be an integer ID */
+ union { /* as usual, may be an integer ID */
+ LPTSTR lpszComponent;
+ ULONG ulItemID;
+ };
+ LPDTCTL lpctl;
+} DTPAGE, FAR *LPDTPAGE;
+
+
+
+STDAPI
+BuildDisplayTable( LPALLOCATEBUFFER lpAllocateBuffer,
+ LPALLOCATEMORE lpAllocateMore,
+ LPFREEBUFFER lpFreeBuffer,
+ LPMALLOC lpMalloc,
+ HINSTANCE hInstance,
+ UINT cPages,
+ LPDTPAGE lpPage,
+ ULONG ulFlags,
+ LPMAPITABLE * lppTable,
+ LPTABLEDATA * lppTblData );
+
+
+/* MAPI structure validation/copy utilities */
+
+/*
+ * Validate, copy, and adjust pointers in MAPI structures:
+ * notification
+ * property value array
+ * option data
+ */
+
+STDAPI_(SCODE)
+ScCountNotifications(int cNotifications, LPNOTIFICATION lpNotifications,
+ ULONG FAR *lpcb);
+
+STDAPI_(SCODE)
+ScCopyNotifications(int cNotification, LPNOTIFICATION lpNotifications,
+ LPVOID lpvDst, ULONG FAR *lpcb);
+
+STDAPI_(SCODE)
+ScRelocNotifications(int cNotification, LPNOTIFICATION lpNotifications,
+ LPVOID lpvBaseOld, LPVOID lpvBaseNew, ULONG FAR *lpcb);
+
+
+STDAPI_(SCODE)
+ScCountProps(int cValues, LPSPropValue lpPropArray, ULONG FAR *lpcb);
+
+STDAPI_(LPSPropValue)
+LpValFindProp(ULONG ulPropTag, ULONG cValues, LPSPropValue lpPropArray);
+
+STDAPI_(SCODE)
+ScCopyProps(int cValues, LPSPropValue lpPropArray, LPVOID lpvDst,
+ ULONG FAR *lpcb);
+
+STDAPI_(SCODE)
+ScRelocProps(int cValues, LPSPropValue lpPropArray,
+ LPVOID lpvBaseOld, LPVOID lpvBaseNew, ULONG FAR *lpcb);
+
+STDAPI_(SCODE)
+ScDupPropset(int cValues, LPSPropValue lpPropArray,
+ LPALLOCATEBUFFER lpAllocateBuffer, LPSPropValue FAR *lppPropArray);
+
+
+/* General utility functions */
+
+/* Related to the OLE Component object model */
+
+STDAPI_(ULONG) UlAddRef(LPVOID lpunk);
+STDAPI_(ULONG) UlRelease(LPVOID lpunk);
+
+/* Related to the MAPI interface */
+
+STDAPI HrGetOneProp(LPMAPIPROP lpMapiProp, ULONG ulPropTag,
+ LPSPropValue FAR *lppProp);
+STDAPI HrSetOneProp(LPMAPIPROP lpMapiProp,
+ LPSPropValue lpProp);
+STDAPI_(BOOL) FPropExists(LPMAPIPROP lpMapiProp, ULONG ulPropTag);
+STDAPI_(LPSPropValue) PpropFindProp(LPSPropValue lpPropArray, ULONG cValues,
+ ULONG ulPropTag);
+STDAPI_(void) FreePadrlist(LPADRLIST lpAdrlist);
+STDAPI_(void) FreeProws(LPSRowSet lpRows);
+STDAPI HrQueryAllRows(LPMAPITABLE lpTable,
+ LPSPropTagArray lpPropTags,
+ LPSRestriction lpRestriction,
+ LPSSortOrderSet lpSortOrderSet,
+ LONG crowsMax,
+ LPSRowSet FAR *lppRows);
+
+/* Create or validate the IPM folder tree in a message store */
+
+#define MAPI_FORCE_CREATE 1
+#define MAPI_FULL_IPM_TREE 2
+
+STDAPI HrValidateIPMSubtree(LPMDB lpMDB, ULONG ulFlags,
+ ULONG FAR *lpcValues, LPSPropValue FAR *lppValues,
+ LPMAPIERROR FAR *lpperr);
+
+/* Encoding and decoding strings */
+
+STDAPI_(BOOL) FBinFromHex(LPTSTR lpsz, LPBYTE lpb);
+STDAPI_(SCODE) ScBinFromHexBounded(LPTSTR lpsz, LPBYTE lpb, ULONG cb);
+STDAPI_(void) HexFromBin(LPBYTE lpb, int cb, LPTSTR lpsz);
+STDAPI_(ULONG) UlFromSzHex(LPCTSTR lpsz);
+
+/* Encoding and decoding entry IDs */
+STDAPI HrEntryIDFromSz(LPTSTR lpsz, ULONG FAR *lpcb,
+ LPENTRYID FAR *lppEntryID);
+STDAPI HrSzFromEntryID(ULONG cb, LPENTRYID lpEntryID,
+ LPTSTR FAR *lpsz);
+STDAPI HrComposeEID(LPMAPISESSION lpSession,
+ ULONG cbStoreRecordKey, LPBYTE lpStoreRecordKey,
+ ULONG cbMsgEntryID, LPENTRYID lpMsgEntryID,
+ ULONG FAR *lpcbEID, LPENTRYID FAR *lppEntryID);
+STDAPI HrDecomposeEID(LPMAPISESSION lpSession,
+ ULONG cbEntryID, LPENTRYID lpEntryID,
+ ULONG FAR *lpcbStoreEntryID,
+ LPENTRYID FAR *lppStoreEntryID,
+ ULONG FAR *lpcbMsgEntryID,
+ LPENTRYID FAR *lppMsgEntryID);
+STDAPI HrComposeMsgID(LPMAPISESSION lpSession,
+ ULONG cbStoreSearchKey, LPBYTE pStoreSearchKey,
+ ULONG cbMsgEntryID, LPENTRYID lpMsgEntryID,
+ LPTSTR FAR *lpszMsgID);
+STDAPI HrDecomposeMsgID(LPMAPISESSION lpSession,
+ LPTSTR lpszMsgID,
+ ULONG FAR *lpcbStoreEntryID,
+ LPENTRYID FAR *lppStoreEntryID,
+ ULONG FAR *lppcbMsgEntryID,
+ LPENTRYID FAR *lppMsgEntryID);
+
+/* C runtime substitutes */
+
+
+STDAPI_(LPTSTR) SzFindCh(LPCTSTR lpsz, USHORT ch); /* strchr */
+STDAPI_(LPTSTR) SzFindLastCh(LPCTSTR lpsz, USHORT ch); /* strrchr */
+STDAPI_(LPTSTR) SzFindSz(LPCTSTR lpsz, LPCTSTR lpszKey); /*strstr */
+STDAPI_(unsigned int) UFromSz(LPCTSTR lpsz); /* atoi */
+
+STDAPI_(SCODE) ScUNCFromLocalPath(LPSTR lpszLocal, LPSTR lpszUNC,
+ UINT cchUNC);
+STDAPI_(SCODE) ScLocalPathFromUNC(LPSTR lpszUNC, LPSTR lpszLocal,
+ UINT cchLocal);
+
+/* 64-bit arithmetic with times */
+
+STDAPI_(FILETIME) FtAddFt(FILETIME ftAddend1, FILETIME ftAddend2);
+STDAPI_(FILETIME) FtMulDwDw(DWORD ftMultiplicand, DWORD ftMultiplier);
+STDAPI_(FILETIME) FtMulDw(DWORD ftMultiplier, FILETIME ftMultiplicand);
+STDAPI_(FILETIME) FtSubFt(FILETIME ftMinuend, FILETIME ftSubtrahend);
+STDAPI_(FILETIME) FtNegFt(FILETIME ft);
+
+/* Message composition */
+
+STDAPI_(SCODE) ScCreateConversationIndex (ULONG cbParent,
+ LPBYTE lpbParent,
+ ULONG FAR * lpcbConvIndex,
+ LPBYTE FAR * lppbConvIndex);
+
+/* Store support */
+
+STDAPI WrapStoreEntryID (ULONG ulFlags, LPTSTR lpszDLLName, ULONG cbOrigEntry,
+ LPENTRYID lpOrigEntry, ULONG *lpcbWrappedEntry, LPENTRYID *lppWrappedEntry);
+
+/* RTF Sync Utilities */
+
+#define RTF_SYNC_RTF_CHANGED ((ULONG) 0x00000001)
+#define RTF_SYNC_BODY_CHANGED ((ULONG) 0x00000002)
+
+STDAPI_(HRESULT)
+RTFSync (LPMESSAGE lpMessage, ULONG ulFlags, BOOL FAR * lpfMessageUpdated);
+
+
+/* Flags for WrapCompressedRTFStream() */
+
+/****** MAPI_MODIFY ((ULONG) 0x00000001) mapidefs.h */
+/****** STORE_UNCOMPRESSED_RTF ((ULONG) 0x00008000) mapidefs.h */
+
+STDAPI_(HRESULT)
+WrapCompressedRTFStream (LPSTREAM lpCompressedRTFStream,
+ ULONG ulFlags, LPSTREAM FAR * lpUncompressedRTFStream);
+
+/* Storage on Stream */
+
+#if defined(_WIN32) || defined(WIN16)
+STDAPI_(HRESULT)
+HrIStorageFromStream (LPUNKNOWN lpUnkIn,
+ LPCIID lpInterface, ULONG ulFlags, LPSTORAGE FAR * lppStorageOut);
+#endif
+
+
+/*
+ * Setup and cleanup.
+ *
+ * Providers never need to make these calls.
+ *
+ * Test applications and the like which do not call MAPIInitialize
+ * may want to call them, so that the few utility functions which
+ * need MAPI allocators (and do not ask for them explicitly)
+ * will work.
+ */
+
+/* All flags are reserved for ScInitMapiUtil. */
+
+STDAPI_(SCODE) ScInitMapiUtil(ULONG ulFlags);
+STDAPI_(VOID) DeinitMapiUtil(VOID);
+
+
+/*
+ * Entry point names.
+ *
+ * These are for new entry points defined since MAPI first shipped
+ * in Windows 95. Using these names in a GetProcAddress call makes
+ * it easier to write code which uses them optionally.
+ */
+
+#if defined (WIN16)
+#define szHrDispatchNotifications "HrDispatchNotifications"
+#elif defined (_WIN32) && defined (_X86_)
+#define szHrDispatchNotifications "_HrDispatchNotifications@4"
+#elif defined (_ALPHA_) || defined (_MIPS_) || defined (_PPC_)
+#define szHrDispatchNotifications "HrDispatchNotifications"
+#endif
+
+typedef HRESULT (STDAPICALLTYPE DISPATCHNOTIFICATIONS)(ULONG ulFlags);
+typedef DISPATCHNOTIFICATIONS FAR * LPDISPATCHNOTIFICATIONS;
+
+#if defined (WIN16)
+#define szScCreateConversationIndex "ScCreateConversationIndex"
+#elif defined (_WIN32) && defined (_X86_)
+#define szScCreateConversationIndex "_ScCreateConversationIndex@16"
+#elif defined (_ALPHA_) || defined (_MIPS_) || defined (_PPC_)
+#define szScCreateConversationIndex "ScCreateConversationIndex"
+#endif
+
+typedef SCODE (STDAPICALLTYPE CREATECONVERSATIONINDEX)(ULONG cbParent,
+ LPBYTE lpbParent, ULONG FAR *lpcbConvIndex, LPBYTE FAR *lppbConvIndex);
+typedef CREATECONVERSATIONINDEX FAR *LPCREATECONVERSATIONINDEX;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MAPIUTIL_H_ */
diff --git a/public/sdk/inc/mapival.h b/public/sdk/inc/mapival.h
new file mode 100644
index 000000000..c94ed6e53
--- /dev/null
+++ b/public/sdk/inc/mapival.h
@@ -0,0 +1,1786 @@
+/*
+ * M A P I V A L . H
+ *
+ * Macros used to validate parameters on standard MAPI object methods.
+ * Used in conjunction with routines found in MAPIU.DLL.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef _INC_VALIDATE
+#define _INC_VALIDATE
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef MAPIUTIL_H
+#include <mapiutil.h>
+#endif
+#include <stddef.h>
+#include <stdarg.h>
+
+
+#define MAKE_ENUM(Method, Interface) Interface##_##Method
+
+typedef enum _tagMethods
+{
+/* IUnknown */
+ MAKE_ENUM(QueryInterface, IUnknown) = 0,
+ MAKE_ENUM(AddRef, IUnknown), /* For completness */
+ MAKE_ENUM(Release, IUnknown), /* For completness */
+
+/* IMAPIProps */
+ MAKE_ENUM(GetLastError, IMAPIProp),
+ MAKE_ENUM(SaveChanges, IMAPIProp),
+ MAKE_ENUM(GetProps, IMAPIProp),
+ MAKE_ENUM(GetPropList, IMAPIProp),
+ MAKE_ENUM(OpenProperty, IMAPIProp),
+ MAKE_ENUM(SetProps, IMAPIProp),
+ MAKE_ENUM(DeleteProps, IMAPIProp),
+ MAKE_ENUM(CopyTo, IMAPIProp),
+ MAKE_ENUM(CopyProps, IMAPIProp),
+ MAKE_ENUM(GetNamesFromIDs, IMAPIProp),
+ MAKE_ENUM(GetIDsFromNames, IMAPIProp),
+
+/* IMAPITable */
+ MAKE_ENUM(GetLastError, IMAPITable),
+ MAKE_ENUM(Advise, IMAPITable),
+ MAKE_ENUM(Unadvise, IMAPITable),
+ MAKE_ENUM(GetStatus, IMAPITable),
+ MAKE_ENUM(SetColumns, IMAPITable),
+ MAKE_ENUM(QueryColumns, IMAPITable),
+ MAKE_ENUM(GetRowCount, IMAPITable),
+ MAKE_ENUM(SeekRow, IMAPITable),
+ MAKE_ENUM(SeekRowApprox, IMAPITable),
+ MAKE_ENUM(QueryPosition, IMAPITable),
+ MAKE_ENUM(FindRow, IMAPITable),
+ MAKE_ENUM(Restrict, IMAPITable),
+ MAKE_ENUM(CreateBookmark, IMAPITable),
+ MAKE_ENUM(FreeBookmark, IMAPITable),
+ MAKE_ENUM(SortTable, IMAPITable),
+ MAKE_ENUM(QuerySortOrder, IMAPITable),
+ MAKE_ENUM(QueryRows, IMAPITable),
+ MAKE_ENUM(Abort, IMAPITable),
+ MAKE_ENUM(ExpandRow, IMAPITable),
+ MAKE_ENUM(CollapseRow, IMAPITable),
+ MAKE_ENUM(WaitForCompletion, IMAPITable),
+ MAKE_ENUM(GetCollapseState, IMAPITable),
+ MAKE_ENUM(SetCollapseState, IMAPITable),
+
+/* IMAPIContainer */
+ MAKE_ENUM(GetContentsTable, IMAPIContainer),
+ MAKE_ENUM(GetHierarchyTable, IMAPIContainer),
+ MAKE_ENUM(OpenEntry, IMAPIContainer),
+ MAKE_ENUM(SetSearchCriteria, IMAPIContainer),
+ MAKE_ENUM(GetSearchCriteria, IMAPIContainer),
+
+/* IABContainer */
+ MAKE_ENUM(CreateEntry, IABContainer),
+ MAKE_ENUM(CopyEntries, IABContainer),
+ MAKE_ENUM(DeleteEntries, IABContainer),
+ MAKE_ENUM(ResolveNames, IABContainer),
+
+/* IDistList */
+ MAKE_ENUM(CreateEntry, IDistList),
+ MAKE_ENUM(CopyEntries, IDistList),
+ MAKE_ENUM(DeleteEntries, IDistList),
+ MAKE_ENUM(ResolveNames, IDistList),
+
+/* IMAPIFolder */
+ MAKE_ENUM(CreateMessage, IMAPIFolder),
+ MAKE_ENUM(CopyMessages, IMAPIFolder),
+ MAKE_ENUM(DeleteMessages, IMAPIFolder),
+ MAKE_ENUM(CreateFolder, IMAPIFolder),
+ MAKE_ENUM(CopyFolder, IMAPIFolder),
+ MAKE_ENUM(DeleteFolder, IMAPIFolder),
+ MAKE_ENUM(SetReadFlags, IMAPIFolder),
+ MAKE_ENUM(GetMessageStatus, IMAPIFolder),
+ MAKE_ENUM(SetMessageStatus, IMAPIFolder),
+ MAKE_ENUM(SaveContentsSort, IMAPIFolder),
+ MAKE_ENUM(EmptyFolder, IMAPIFolder),
+
+/* IMsgStore */
+ MAKE_ENUM(Advise, IMsgStore),
+ MAKE_ENUM(Unadvise, IMsgStore),
+ MAKE_ENUM(CompareEntryIDs, IMsgStore),
+ MAKE_ENUM(OpenEntry, IMsgStore),
+ MAKE_ENUM(SetReceiveFolder, IMsgStore),
+ MAKE_ENUM(GetReceiveFolder, IMsgStore),
+ MAKE_ENUM(GetReceiveFolderTable, IMsgStore),
+ MAKE_ENUM(StoreLogoff, IMsgStore),
+ MAKE_ENUM(AbortSubmit, IMsgStore),
+ MAKE_ENUM(GetOutgoingQueue, IMsgStore),
+ MAKE_ENUM(SetLockState, IMsgStore),
+ MAKE_ENUM(FinishedMsg, IMsgStore),
+ MAKE_ENUM(NotifyNewMail, IMsgStore),
+
+/* IMessage */
+ MAKE_ENUM(GetAttachmentTable, IMessage),
+ MAKE_ENUM(OpenAttach, IMessage),
+ MAKE_ENUM(CreateAttach, IMessage),
+ MAKE_ENUM(DeleteAttach, IMessage),
+ MAKE_ENUM(GetRecipientTable, IMessage),
+ MAKE_ENUM(ModifyRecipients, IMessage),
+ MAKE_ENUM(SubmitMessage, IMessage),
+ MAKE_ENUM(SetReadFlag, IMessage),
+
+
+/* IABProvider */
+ MAKE_ENUM(Shutdown, IABProvider),
+ MAKE_ENUM(Logon, IABProvider),
+
+/* IABLogon */
+ MAKE_ENUM(GetLastError, IABLogon),
+ MAKE_ENUM(Logoff, IABLogon),
+ MAKE_ENUM(OpenEntry, IABLogon),
+ MAKE_ENUM(CompareEntryIDs, IABLogon),
+ MAKE_ENUM(Advise, IABLogon),
+ MAKE_ENUM(Unadvise, IABLogon),
+ MAKE_ENUM(OpenStatusEntry, IABLogon),
+ MAKE_ENUM(OpenTemplateID, IABLogon),
+ MAKE_ENUM(GetOneOffTable, IABLogon),
+ MAKE_ENUM(PrepareRecips, IABLogon),
+
+/* IXPProvider */
+ MAKE_ENUM(Shutdown, IXPProvider),
+ MAKE_ENUM(TransportLogon, IXPProvider),
+
+/* IXPLogon */
+ MAKE_ENUM(AddressTypes, IXPLogon),
+ MAKE_ENUM(RegisterOptions, IXPLogon),
+ MAKE_ENUM(TransportNotify, IXPLogon),
+ MAKE_ENUM(Idle, IXPLogon),
+ MAKE_ENUM(TransportLogoff, IXPLogon),
+ MAKE_ENUM(SubmitMessage, IXPLogon),
+ MAKE_ENUM(EndMessage, IXPLogon),
+ MAKE_ENUM(Poll, IXPLogon),
+ MAKE_ENUM(StartMessage, IXPLogon),
+ MAKE_ENUM(OpenStatusEntry, IXPLogon),
+ MAKE_ENUM(ValidateState, IXPLogon),
+ MAKE_ENUM(FlushQueues, IXPLogon),
+
+/* IMSProvider */
+ MAKE_ENUM(Shutdown, IMSProvider),
+ MAKE_ENUM(Logon, IMSProvider),
+ MAKE_ENUM(SpoolerLogon, IMSProvider),
+ MAKE_ENUM(CompareStoreIDs, IMSProvider),
+
+/* IMSLogon */
+ MAKE_ENUM(GetLastError, IMSLogon),
+ MAKE_ENUM(Logoff, IMSLogon),
+ MAKE_ENUM(OpenEntry, IMSLogon),
+ MAKE_ENUM(CompareEntryIDs, IMSLogon),
+ MAKE_ENUM(Advise, IMSLogon),
+ MAKE_ENUM(Unadvise, IMSLogon),
+ MAKE_ENUM(OpenStatusEntry, IMSLogon),
+
+/* IMAPIControl */
+ MAKE_ENUM(GetLastError, IMAPIControl),
+ MAKE_ENUM(Activate, IMAPIControl),
+ MAKE_ENUM(GetState, IMAPIControl),
+
+/* IMAPIStatus */
+ MAKE_ENUM(ValidateState, IMAPIStatus),
+ MAKE_ENUM(SettingsDialog, IMAPIStatus),
+ MAKE_ENUM(ChangePassword, IMAPIStatus),
+ MAKE_ENUM(FlushQueues, IMAPIStatus),
+
+/* IStream */
+ MAKE_ENUM(Read, IStream),
+ MAKE_ENUM(Write, IStream),
+ MAKE_ENUM(Seek, IStream),
+ MAKE_ENUM(SetSize, IStream),
+ MAKE_ENUM(CopyTo, IStream),
+ MAKE_ENUM(Commit, IStream),
+ MAKE_ENUM(Revert, IStream),
+ MAKE_ENUM(LockRegion, IStream),
+ MAKE_ENUM(UnlockRegion, IStream),
+ MAKE_ENUM(Stat, IStream),
+ MAKE_ENUM(Clone, IStream),
+
+/* IMAPIAdviseSink */
+ MAKE_ENUM(OnNotify, IMAPIAdviseSink),
+
+} METHODS;
+
+
+/* Macro wrappers to hide the Validate function return handling */
+#if defined(_X86_) || defined( WIN16 )
+#ifdef __cplusplus
+
+/* C++ methods can't take the address of the This pointer, so we must
+ use the first parameter instead */
+
+#define ValidateParameters(eMethod, First) \
+ { HRESULT _hr_; \
+ _hr_ = __CPPValidateParameters(eMethod, (LPVOID) &First); \
+ if (HR_FAILED(_hr_)) return (_hr_); }
+
+#define UlValidateParameters(eMethod, First) \
+ { HRESULT _hr_; \
+ _hr_ = __CPPValidateParameters(eMethod, &First); \
+ if (HR_FAILED(_hr_)) return (ULONG) (_hr_); }
+
+/* Methods called by MAPI should have correct parameters
+ - just assert in Debug to check */
+#define CheckParameters(eMethod, First) \
+ AssertSz(HR_SUCCEEDED(__CPPValidateParameters(eMethod, &First)), "Parameter validation failed for method called by MAPI!")
+
+
+#else /* __cplusplus */
+
+/* For methods that will be called by clients
+ - validate always */
+
+#define ValidateParameters(eMethod, ppThis) \
+ { HRESULT _hr_; \
+ _hr_ = __ValidateParameters(eMethod, ppThis); \
+ if (HR_FAILED(_hr_)) return (_hr_); }
+
+#define UlValidateParameters(eMethod, ppThis) \
+ { HRESULT _hr_; \
+ _hr_ = __ValidateParameters(eMethod, ppThis); \
+ if (HR_FAILED(_hr_)) return (ULONG) (_hr_); }
+
+/* Methods called by MAPI should have correct parameters
+ - just assert in Debug to check */
+#define CheckParameters(eMethod, ppThis) \
+ AssertSz(HR_SUCCEEDED(__ValidateParameters(eMethod, ppThis)), "Parameter validation failed for method called by MAPI!")
+
+#endif /* __cplusplus */
+#endif /* _X86_ || WIN16 */
+
+/* Prototypes for functions used to validate complex parameters.
+ */
+#define FBadPropVal( lpPropVal) (FAILED(ScCountProps( 1, lpPropVal, NULL)))
+
+#define FBadRgPropVal( lpPropVal, cValues) \
+ (FAILED(ScCountProps( cValues, lpPropVal, NULL)))
+
+#define FBadAdrList( lpAdrList) \
+ ( AssertSz( ( offsetof( ADRLIST, cEntries) \
+ == offsetof( SRowSet, cRows)) \
+ && ( offsetof( ADRLIST, aEntries) \
+ == offsetof( SRowSet, aRow)) \
+ && ( offsetof( ADRENTRY, cValues) \
+ == offsetof( SRow, cValues)) \
+ && ( offsetof( ADRENTRY, rgPropVals) \
+ == offsetof( SRow, lpProps)) \
+ , "ADRLIST doesn't match SRowSet") \
+ || FBadRowSet( (LPSRowSet) lpAdrList))
+
+STDAPI_(BOOL)
+FBadRglpszW( LPWSTR FAR *lppszW,
+ ULONG cStrings);
+
+STDAPI_(BOOL)
+FBadRowSet( LPSRowSet lpRowSet);
+
+STDAPI_(BOOL)
+FBadRglpNameID( LPMAPINAMEID FAR * lppNameId,
+ ULONG cNames);
+
+STDAPI_(BOOL)
+FBadEntryList( LPENTRYLIST lpEntryList);
+
+
+/* BAD_STANDARD_OBJ
+ *
+ * This macro insures that the object is a writable object of the correct size
+ * and that this method belongs to the object.
+ *
+ * NOTES ON USE!
+ * This depends upon using the standard method of declaring the object
+ * interface.
+ *
+ * prefix is the method prefix you chose when declaring the object interface.
+ * method is the standard method name of the calling method.
+ * lpVtbl is the name of the lpVtbl element of your object.
+ */
+#define BAD_STANDARD_OBJ( lpObj, prefix, method, lpVtbl) \
+ ( IsBadWritePtr( (lpObj), sizeof(*lpObj)) \
+ || IsBadReadPtr( (void *) &(lpObj->lpVtbl->method), sizeof(LPVOID)) \
+ ||( ( LPVOID) (lpObj->lpVtbl->method) != (LPVOID) (prefix##method)))
+
+
+#define FBadUnknown( lpObj ) \
+ ( IsBadReadPtr( (lpObj), sizeof(LPVOID) ) \
+ || IsBadReadPtr( (lpObj)->lpVtbl, 3 * sizeof(LPUNKNOWN) ) \
+ || IsBadCodePtr( (FARPROC)(lpObj)->lpVtbl->QueryInterface ))
+
+/*
+ * IUnknown
+ */
+
+
+/*
+ * QueryInterface
+ */
+#define FBadQueryInterface( lpObj, riid, ppvObj) \
+ ( IsBadReadPtr( riid, sizeof(IID)) \
+ || IsBadWritePtr( ppvObj, sizeof(LPVOID)))
+
+
+/*
+ * AddRef
+ * No parameter validation required.
+ */
+#define FBadAddRef( lpObj) FALSE
+
+
+/*
+ * Release
+ * No parameter validation required.
+ */
+#define FBadRelease( lpObj) FALSE
+
+
+/*
+ * GetLastError
+ */
+#define FBadGetLastError( lpObj, hResult, ulFlags, lppMAPIError )\
+ (IsBadWritePtr( lppMAPIError, sizeof(LPMAPIERROR)))
+
+/*
+ * IMAPIProp
+ */
+
+
+/*
+ * SaveChanges
+ * No parameter validation required.
+ */
+#define FBadSaveChanges( lpObj, ulFlags) FALSE
+
+
+/*
+ * GetProps
+ */
+#define FBadGetProps( lpObj, lpPTagA, lpcValues, lppPropArray) \
+ ( ( lpPTagA \
+ && ( IsBadReadPtr( lpPTagA, sizeof(ULONG)) \
+ || IsBadReadPtr( lpPTagA, (UINT)( (lpPTagA->cValues + 1) \
+ * sizeof(ULONG))))) \
+ || IsBadWritePtr( lpcValues, sizeof(ULONG)) \
+ || IsBadWritePtr( lppPropArray, sizeof(LPSPropValue)))
+
+
+/*
+ * GetPropList
+ */
+#define FBadGetPropList( lpObj, lppPTagA) \
+ (IsBadWritePtr( lppPTagA, sizeof(LPSPropTagArray FAR *)))
+
+
+/*
+ * OpenProperty
+ */
+#define FBadOpenProperty( lpObj, ulPropTag, lpiid, ulInterfaceOptions, ulFlags \
+ , lppUnk) \
+ ( IsBadReadPtr( lpiid, sizeof(IID)) \
+ || IsBadWritePtr( lppUnk, sizeof (LPUNKNOWN FAR *)))
+
+
+/*
+ * SetProps
+ */
+#define FBadSetProps( lpObj, cValues, lpPropArray, lppProblems) \
+ ( FBadRgPropVal( lpPropArray, (UINT) cValues) \
+ || ( lppProblems \
+ && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
+
+
+/*
+ * DeleteProps
+ */
+#define FBadDeleteProps( lpObj, lpPTagA, lppProblems) \
+ ( ( !lpPTagA \
+ || ( IsBadReadPtr( lpPTagA, sizeof(ULONG)) \
+ || IsBadReadPtr( lpPTagA, (UINT)( (lpPTagA->cValues + 1) \
+ * sizeof(ULONG))))) \
+ || ( lppProblems \
+ && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
+
+
+/*
+ * CopyTo
+ */
+#define FBadCopyTo( lpIPDAT, ciidExclude, rgiidExclude, lpExcludeProps \
+ , ulUIParam, lpProgress, lpInterface, lpDestObj \
+ , ulFlags, lppProblems) \
+ ( ( ciidExclude \
+ && ( IsBadReadPtr( rgiidExclude, (UINT)(ciidExclude * sizeof(IID))))) \
+ || ( lpExcludeProps \
+ && ( IsBadReadPtr( lpExcludeProps, sizeof(ULONG)) \
+ || IsBadReadPtr( lpExcludeProps \
+ , (UINT)( (lpExcludeProps->cValues + 1) \
+ * sizeof(ULONG))))) \
+ || (lpProgress && FBadUnknown( lpProgress )) \
+ || (lpInterface && IsBadReadPtr( lpInterface, sizeof(IID))) \
+ || IsBadReadPtr( lpDestObj, sizeof(LPVOID)) \
+ || ( lppProblems \
+ && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
+
+
+/*
+ * CopyProps
+ */
+#define FBadCopyProps( lpIPDAT, lpPropTagArray \
+ , ulUIParam, lpProgress, lpInterface, lpDestObj \
+ , ulFlags, lppProblems) \
+ ( ( lpPropTagArray \
+ && ( IsBadReadPtr( lpPropTagArray, sizeof(ULONG)) \
+ || IsBadReadPtr( lpPropTagArray \
+ , (UINT)( (lpPropTagArray->cValues + 1) \
+ * sizeof(ULONG))))) \
+ || (lpProgress && FBadUnknown( lpProgress )) \
+ || (lpInterface && IsBadReadPtr( lpInterface, sizeof(IID))) \
+ || IsBadReadPtr( lpDestObj, sizeof(LPVOID)) \
+ || ( lppProblems \
+ && IsBadWritePtr( lppProblems, sizeof(LPSPropProblemArray))))
+
+
+
+/*
+ * GetNamesFromIDs
+ */
+#define FBadGetNamesFromIDs( lpIPDAT, lppPropTags, lpPropSetGuid, ulFlags, \
+ lpcPropNames, lpppPropNames) \
+ ( IsBadReadPtr( lppPropTags, sizeof(LPSPropTagArray)) \
+ || ( lpPropSetGuid && IsBadReadPtr( lpPropSetGuid, sizeof(GUID))) \
+ || ( *lppPropTags \
+ && ( IsBadReadPtr( *lppPropTags, sizeof(ULONG)) \
+ || IsBadReadPtr( *lppPropTags \
+ , (UINT)( ( ( *lppPropTags)->cValues + 1) \
+ * sizeof(ULONG))))) \
+ || IsBadWritePtr( lpcPropNames, sizeof (ULONG)) \
+ || IsBadWritePtr( lpppPropNames, sizeof (LPVOID FAR *)))
+
+
+
+/*
+ * GetNamesFromIDs
+ */
+#define FBadGetIDsFromNames( lpIPDAT, cPropNames, lppPropNames, ulFlags \
+ , lppPropTags) \
+ ( (cPropNames && FBadRglpNameID( lppPropNames, cPropNames)) \
+ || IsBadWritePtr( lppPropTags, sizeof(LPULONG FAR *)))
+
+
+STDAPI_(ULONG)
+FBadRestriction( LPSRestriction lpres );
+
+STDAPI_(ULONG)
+FBadPropTag( ULONG ulPropTag );
+
+STDAPI_(ULONG)
+FBadRow( LPSRow lprow );
+
+STDAPI_(ULONG)
+FBadProp( LPSPropValue lpprop );
+
+STDAPI_(ULONG)
+FBadSortOrderSet( LPSSortOrderSet lpsos );
+
+STDAPI_(ULONG)
+FBadColumnSet( LPSPropTagArray lpptaCols );
+
+/* Validation function
+
+ The eMethod parameter tells us which internal validation to perform.
+
+ The ppThis parameter tells us where the stack is, so we can access the other
+ parameters.
+
+ Becuase of this *magic* we MUST obtain the pointer to the This pointer in
+ the method function.
+
+*/
+
+#ifdef WIN16
+#define BASED_STACK __based(__segname("_STACK"))
+#else
+#define BASED_STACK
+#endif
+
+
+#ifdef WIN16
+HRESULT PASCAL
+#else
+HRESULT STDAPICALLTYPE
+#endif
+__CPPValidateParameters(METHODS eMethod, const LPVOID ppFirst);
+
+#ifdef WIN16
+HRESULT PASCAL
+#else
+HRESULT STDAPICALLTYPE
+#endif
+__ValidateParameters(METHODS eMethod, LPVOID ppThis);
+
+#ifdef _MAC
+#define STDAPIVCALLTYPE __cdecl
+#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
+#define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE
+#endif /* _MAC */
+
+/* Macro wrappers for platform independent validation */
+
+#if defined(_X86_) || defined( WIN16 )
+#define ValidateParms(x) { HRESULT _hr_ = HrValidateParameters x; if (HR_FAILED(_hr_)) return (_hr_); }
+#define UlValidateParms(x) { HRESULT _hr_ = HrValidateParameters x; if (HR_FAILED(_hr_)) return (ULONG)(_hr_); }
+#define CheckParms(x) AssertSz(HR_SUCCEEDED( HrValidateParameters x), "Parameter validation failed for method called by MAPI!")
+#else
+#define ValidateParms(x) { HRESULT _hr_ = HrValidateParametersV x; if (HR_FAILED(_hr_)) return (_hr_); }
+#define UlValidateParms(x) { HRESULT _hr_ = HrValidateParametersV x; if (HR_FAILED(_hr_)) return (ULONG)(_hr_); }
+#define CheckParms(x) AssertSz(HR_SUCCEEDED( HrValidateParametersV x ), "Parameter validation failed for method called by MAPI!")
+#endif
+
+#if defined(_X86_) || defined( WIN16 )
+
+#define ValidateParameters1( m, a1 )
+#define ValidateParameters2( m, a1, a2 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters3( m, a1, a2, a3 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters4( m, a1, a2, a3, a4 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters5( m, a1, a2, a3, a4, a5 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define ValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ ValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+
+#define UlValidateParameters1( m, a1 )
+#define UlValidateParameters2( m, a1, a2 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters3( m, a1, a2, a3 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters4( m, a1, a2, a3, a4 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters5( m, a1, a2, a3, a4, a5 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+#define UlValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ UlValidateParms( ( m, (LPVOID FAR *) &a2 ) )
+
+#define CheckParameters1( m, a1 )
+#define CheckParameters2( m, a1, a2 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters3( m, a1, a2, a3) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters4( m, a1, a2, a3, a4 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters5( m, a1, a2, a3, a4, a5 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+#define CheckParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ CheckParms( ( m, (LPVOID FAR *) &a2 ) )
+
+#else /* !_X86_ && !WIN16 */
+
+#define ValidateParameters1( m, a1 ) \
+ ValidateParms( ( m, a1 ) )
+#define ValidateParameters2( m, a1, a2 ) \
+ ValidateParms( ( m, a1, a2 ))
+#define ValidateParameters3( m, a1, a2, a3 ) \
+ ValidateParms( ( m, a1, a2, a3 ))
+#define ValidateParameters4( m, a1, a2, a3, a4 ) \
+ ValidateParms( ( m, a1, a2, a3, a4 ))
+#define ValidateParameters5( m, a1, a2, a3, a4, a5 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5 ))
+#define ValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6 ))
+#define ValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7 ))
+#define ValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8 ))
+#define ValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ))
+#define ValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ))
+#define ValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ))
+#define ValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ))
+#define ValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ))
+#define ValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ))
+#define ValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ))
+#define ValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ ValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ))
+
+#define UlValidateParameters1( m, a1 ) \
+ UlValidateParms( ( m, a1 ) )
+#define UlValidateParameters2( m, a1, a2 ) \
+ UlValidateParms( ( m, a1, a2 ))
+#define UlValidateParameters3( m, a1, a2, a3 ) \
+ UlValidateParms( ( m, a1, a2, a3 ))
+#define UlValidateParameters4( m, a1, a2, a3, a4 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4 ))
+#define UlValidateParameters5( m, a1, a2, a3, a4, a5 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5 ))
+#define UlValidateParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6 ))
+#define UlValidateParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7 ))
+#define UlValidateParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8 ))
+#define UlValidateParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ))
+#define UlValidateParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ))
+#define UlValidateParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ))
+#define UlValidateParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ))
+#define UlValidateParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ))
+#define UlValidateParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ))
+#define UlValidateParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ))
+#define UlValidateParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ UlValidateParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ))
+
+#define CheckParameters1( m, a1 ) \
+ CheckParms( ( m, a1 ) )
+#define CheckParameters2( m, a1, a2 ) \
+ CheckParms( ( m, a1, a2 ))
+#define CheckParameters3( m, a1, a2, a3 ) \
+ CheckParms( ( m, a1, a2, a3 ))
+#define CheckParameters4( m, a1, a2, a3, a4 ) \
+ CheckParms( ( m, a1, a2, a3, a4 ))
+#define CheckParameters5( m, a1, a2, a3, a4, a5 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5 ))
+#define CheckParameters6( m, a1, a2, a3, a4, a5, a6 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6 ))
+#define CheckParameters7( m, a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7 ))
+#define CheckParameters8( m, a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8 ))
+#define CheckParameters9( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9 ))
+#define CheckParameters10( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ))
+#define CheckParameters11( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11 ))
+#define CheckParameters12( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 ))
+#define CheckParameters13( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ))
+#define CheckParameters14( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 ))
+#define CheckParameters15( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 ))
+#define CheckParameters16( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ) \
+ CheckParms( ( m, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16 ))
+
+#endif /* _X86_ || WIN16 */
+
+
+/*
+ * M A P I P A R A M E T E R V A L I D A T I O N M A C R O S
+ */
+
+
+/* IUnknown */
+
+#define Validate_IUnknown_QueryInterface( a1, a2, a3 ) \
+ ValidateParameters3( IUnknown_QueryInterface, a1, a2, a3 )
+#define UlValidate_IUnknown_QueryInterface( a1, a2, a3 ) \
+ UlValidateParameters3( IUnknown_QueryInterface, a1, a2, a3 )
+#define CheckParameters_IUnknown_QueryInterface( a1, a2, a3 ) \
+ CheckParameters3( IUnknown_QueryInterface, a1, a2, a3 )
+
+#define Validate_IUnknown_AddRef( a1 ) \
+ ValidateParameters1( IUnknown_AddRef, a1 )
+#define UlValidate_IUnknown_AddRef( a1 ) \
+ UlValidateParameters1( IUnknown_AddRef, a1 )
+#define CheckParameters_IUnknown_AddRef( a1 ) \
+ CheckParameters1( IUnknown_AddRef, a1 )
+
+#define Validate_IUnknown_Release( a1 ) \
+ ValidateParameters1( IUnknown_Release, a1 )
+#define UlValidate_IUnknown_Release( a1 ) \
+ UlValidateParameters1( IUnknown_Release, a1 )
+#define CheckParameters_IUnknown_Release( a1 ) \
+ CheckParameters1( IUnknown_Release, a1 )
+
+
+/* IMAPIProp */
+
+#define Validate_IMAPIProp_GetLastError( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIProp_GetLastError, a1, a2, a3, a4 )
+#define UlValidate_IMAPIProp_GetLastError( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIProp_GetLastError, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIProp_GetLastError( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIProp_GetLastError, a1, a2, a3, a4 )
+
+#define Validate_IMAPIProp_SaveChanges( a1, a2 ) \
+ ValidateParameters2( IMAPIProp_SaveChanges, a1, a2 )
+#define UlValidate_IMAPIProp_SaveChanges( a1, a2 ) \
+ UlValidateParameters2( IMAPIProp_SaveChanges, a1, a2 )
+#define CheckParameters_IMAPIProp_SaveChanges( a1, a2 ) \
+ CheckParameters2( IMAPIProp_SaveChanges, a1, a2 )
+
+#define Validate_IMAPIProp_GetProps( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIProp_GetProps, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIProp_GetProps( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIProp_GetProps, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIProp_GetProps( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIProp_GetProps, a1, a2, a3, a4, a5 )
+
+#define Validate_IMAPIProp_GetPropList( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIProp_GetPropList, a1, a2, a3 )
+#define UlValidate_IMAPIProp_GetPropList( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIProp_GetPropList, a1, a2, a3 )
+#define CheckParameters_IMAPIProp_GetPropList( a1, a2, a3 ) \
+ CheckParameters3( IMAPIProp_GetPropList, a1, a2, a3 )
+
+#define Validate_IMAPIProp_OpenProperty( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMAPIProp_OpenProperty, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMAPIProp_OpenProperty( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMAPIProp_OpenProperty, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMAPIProp_OpenProperty( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMAPIProp_OpenProperty, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMAPIProp_SetProps( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIProp_SetProps, a1, a2, a3, a4 )
+#define UlValidate_IMAPIProp_SetProps( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIProp_SetProps, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIProp_SetProps( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIProp_SetProps, a1, a2, a3, a4 )
+
+#define Validate_IMAPIProp_DeleteProps( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIProp_DeleteProps, a1, a2, a3 )
+#define UlValidate_IMAPIProp_DeleteProps( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIProp_DeleteProps, a1, a2, a3 )
+#define CheckParameters_IMAPIProp_DeleteProps( a1, a2, a3 ) \
+ CheckParameters3( IMAPIProp_DeleteProps, a1, a2, a3 )
+
+#define Validate_IMAPIProp_CopyTo( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ ValidateParameters10( IMAPIProp_CopyTo, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
+#define UlValidate_IMAPIProp_CopyTo( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ UlValidateParameters10( IMAPIProp_CopyTo, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
+#define CheckParameters_IMAPIProp_CopyTo( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 ) \
+ CheckParameters10( IMAPIProp_CopyTo, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 )
+
+#define Validate_IMAPIProp_CopyProps( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ ValidateParameters8( IMAPIProp_CopyProps, a1, a2, a3, a4, a5, a6, a7, a8 )
+#define UlValidate_IMAPIProp_CopyProps( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ UlValidateParameters8( IMAPIProp_CopyProps, a1, a2, a3, a4, a5, a6, a7, a8 )
+#define CheckParameters_IMAPIProp_CopyProps( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ CheckParameters8( IMAPIProp_CopyProps, a1, a2, a3, a4, a5, a6, a7, a8 )
+
+#define Validate_IMAPIProp_GetNamesFromIDs( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMAPIProp_GetNamesFromIDs, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMAPIProp_GetNamesFromIDs( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMAPIProp_GetNamesFromIDs, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMAPIProp_GetNamesFromIDs( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMAPIProp_GetNamesFromIDs, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMAPIProp_GetIDsFromNames( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIProp_GetIDsFromNames, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIProp_GetIDsFromNames( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIProp_GetIDsFromNames, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIProp_GetIDsFromNames( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIProp_GetIDsFromNames, a1, a2, a3, a4, a5 )
+
+
+/* IMAPITable */
+
+#define Validate_IMAPITable_GetLastError( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_GetLastError, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_GetLastError( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_GetLastError, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_GetLastError( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_GetLastError, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_Advise( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_Advise, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_Advise( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_Advise, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_Advise( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_Advise, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_Unadvise( a1, a2 ) \
+ ValidateParameters2( IMAPITable_Unadvise, a1, a2 )
+#define UlValidate_IMAPITable_Unadvise( a1, a2 ) \
+ UlValidateParameters2( IMAPITable_Unadvise, a1, a2 )
+#define CheckParameters_IMAPITable_Unadvise( a1, a2 ) \
+ CheckParameters2( IMAPITable_Unadvise, a1, a2 )
+
+#define Validate_IMAPITable_GetStatus( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_GetStatus, a1, a2, a3 )
+#define UlValidate_IMAPITable_GetStatus( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_GetStatus, a1, a2, a3 )
+#define CheckParameters_IMAPITable_GetStatus( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_GetStatus, a1, a2, a3 )
+
+#define Validate_IMAPITable_SetColumns( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_SetColumns, a1, a2, a3 )
+#define UlValidate_IMAPITable_SetColumns( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_SetColumns, a1, a2, a3 )
+#define CheckParameters_IMAPITable_SetColumns( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_SetColumns, a1, a2, a3 )
+
+#define Validate_IMAPITable_QueryColumns( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_QueryColumns, a1, a2, a3 )
+#define UlValidate_IMAPITable_QueryColumns( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_QueryColumns, a1, a2, a3 )
+#define CheckParameters_IMAPITable_QueryColumns( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_QueryColumns, a1, a2, a3 )
+
+#define Validate_IMAPITable_GetRowCount( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_GetRowCount, a1, a2, a3 )
+#define UlValidate_IMAPITable_GetRowCount( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_GetRowCount, a1, a2, a3 )
+#define CheckParameters_IMAPITable_GetRowCount( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_GetRowCount, a1, a2, a3 )
+
+#define Validate_IMAPITable_SeekRow( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_SeekRow, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_SeekRow( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_SeekRow, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_SeekRow( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_SeekRow, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_SeekRowApprox( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_SeekRowApprox, a1, a2, a3 )
+#define UlValidate_IMAPITable_SeekRowApprox( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_SeekRowApprox, a1, a2, a3 )
+#define CheckParameters_IMAPITable_SeekRowApprox( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_SeekRowApprox, a1, a2, a3 )
+
+#define Validate_IMAPITable_QueryPosition( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_QueryPosition, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_QueryPosition( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_QueryPosition, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_QueryPosition( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_QueryPosition, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_FindRow( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_FindRow, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_FindRow( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_FindRow, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_FindRow( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_FindRow, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_Restrict( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_Restrict, a1, a2, a3 )
+#define UlValidate_IMAPITable_Restrict( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_Restrict, a1, a2, a3 )
+#define CheckParameters_IMAPITable_Restrict( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_Restrict, a1, a2, a3 )
+
+#define Validate_IMAPITable_CreateBookmark( a1, a2 ) \
+ ValidateParameters2( IMAPITable_CreateBookmark, a1, a2 )
+#define UlValidate_IMAPITable_CreateBookmark( a1, a2 ) \
+ UlValidateParameters2( IMAPITable_CreateBookmark, a1, a2 )
+#define CheckParameters_IMAPITable_CreateBookmark( a1, a2 ) \
+ CheckParameters2( IMAPITable_CreateBookmark, a1, a2 )
+
+#define Validate_IMAPITable_FreeBookmark( a1, a2 ) \
+ ValidateParameters2( IMAPITable_FreeBookmark, a1, a2 )
+#define UlValidate_IMAPITable_FreeBookmark( a1, a2 ) \
+ UlValidateParameters2( IMAPITable_FreeBookmark, a1, a2 )
+#define CheckParameters_IMAPITable_FreeBookmark( a1, a2 ) \
+ CheckParameters2( IMAPITable_FreeBookmark, a1, a2 )
+
+#define Validate_IMAPITable_SortTable( a1, a2, a3 ) \
+ ValidateParameters3( IMAPITable_SortTable, a1, a2, a3 )
+#define UlValidate_IMAPITable_SortTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPITable_SortTable, a1, a2, a3 )
+#define CheckParameters_IMAPITable_SortTable( a1, a2, a3 ) \
+ CheckParameters3( IMAPITable_SortTable, a1, a2, a3 )
+
+#define Validate_IMAPITable_QuerySortOrder( a1, a2 ) \
+ ValidateParameters2( IMAPITable_QuerySortOrder, a1, a2 )
+#define UlValidate_IMAPITable_QuerySortOrder( a1, a2 ) \
+ UlValidateParameters2( IMAPITable_QuerySortOrder, a1, a2 )
+#define CheckParameters_IMAPITable_QuerySortOrder( a1, a2 ) \
+ CheckParameters2( IMAPITable_QuerySortOrder, a1, a2 )
+
+#define Validate_IMAPITable_QueryRows( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_QueryRows, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_QueryRows( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_QueryRows, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_QueryRows( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_QueryRows, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_Abort( a1 ) \
+ ValidateParameters1( IMAPITable_Abort, a1 )
+#define UlValidate_IMAPITable_Abort( a1 ) \
+ UlValidateParameters1( IMAPITable_Abort, a1 )
+#define CheckParameters_IMAPITable_Abort( a1 ) \
+ CheckParameters1( IMAPITable_Abort, a1 )
+
+#define Validate_IMAPITable_ExpandRow( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMAPITable_ExpandRow, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMAPITable_ExpandRow( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMAPITable_ExpandRow, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMAPITable_ExpandRow( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMAPITable_ExpandRow, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMAPITable_CollapseRow( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPITable_CollapseRow, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPITable_CollapseRow( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPITable_CollapseRow, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPITable_CollapseRow( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPITable_CollapseRow, a1, a2, a3, a4, a5 )
+
+#define Validate_IMAPITable_WaitForCompletion( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPITable_WaitForCompletion, a1, a2, a3, a4 )
+#define UlValidate_IMAPITable_WaitForCompletion( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPITable_WaitForCompletion, a1, a2, a3, a4 )
+#define CheckParameters_IMAPITable_WaitForCompletion( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPITable_WaitForCompletion, a1, a2, a3, a4 )
+
+#define Validate_IMAPITable_GetCollapseState( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMAPITable_GetCollapseState, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMAPITable_GetCollapseState( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMAPITable_GetCollapseState, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMAPITable_GetCollapseState( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMAPITable_GetCollapseState, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMAPITable_SetCollapseState( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPITable_SetCollapseState, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPITable_SetCollapseState( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPITable_SetCollapseState, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPITable_SetCollapseState( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPITable_SetCollapseState, a1, a2, a3, a4, a5 )
+
+
+/* IMAPIContainer */
+
+#define Validate_IMAPIContainer_GetContentsTable( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIContainer_GetContentsTable, a1, a2, a3 )
+#define UlValidate_IMAPIContainer_GetContentsTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIContainer_GetContentsTable, a1, a2, a3 )
+#define CheckParameters_IMAPIContainer_GetContentsTable( a1, a2, a3 ) \
+ CheckParameters3( IMAPIContainer_GetContentsTable, a1, a2, a3 )
+
+#define Validate_IMAPIContainer_GetHierarchyTable( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIContainer_GetHierarchyTable, a1, a2, a3 )
+#define UlValidate_IMAPIContainer_GetHierarchyTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIContainer_GetHierarchyTable, a1, a2, a3 )
+#define CheckParameters_IMAPIContainer_GetHierarchyTable( a1, a2, a3 ) \
+ CheckParameters3( IMAPIContainer_GetHierarchyTable, a1, a2, a3 )
+
+#define Validate_IMAPIContainer_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMAPIContainer_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMAPIContainer_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMAPIContainer_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMAPIContainer_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMAPIContainer_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMAPIContainer_SetSearchCriteria( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIContainer_SetSearchCriteria, a1, a2, a3, a4 )
+#define UlValidate_IMAPIContainer_SetSearchCriteria( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIContainer_SetSearchCriteria, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIContainer_SetSearchCriteria( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIContainer_SetSearchCriteria, a1, a2, a3, a4 )
+
+#define Validate_IMAPIContainer_GetSearchCriteria( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIContainer_GetSearchCriteria, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIContainer_GetSearchCriteria( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIContainer_GetSearchCriteria, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIContainer_GetSearchCriteria( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIContainer_GetSearchCriteria, a1, a2, a3, a4, a5 )
+
+
+/* IABContainer */
+
+#define Validate_IABContainer_CreateEntry( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IABContainer_CreateEntry, a1, a2, a3, a4, a5 )
+#define UlValidate_IABContainer_CreateEntry( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IABContainer_CreateEntry, a1, a2, a3, a4, a5 )
+#define CheckParameters_IABContainer_CreateEntry( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IABContainer_CreateEntry, a1, a2, a3, a4, a5 )
+
+#define Validate_IABContainer_CopyEntries( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IABContainer_CopyEntries, a1, a2, a3, a4, a5 )
+#define UlValidate_IABContainer_CopyEntries( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IABContainer_CopyEntries, a1, a2, a3, a4, a5 )
+#define CheckParameters_IABContainer_CopyEntries( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IABContainer_CopyEntries, a1, a2, a3, a4, a5 )
+
+#define Validate_IABContainer_DeleteEntries( a1, a2, a3 ) \
+ ValidateParameters3( IABContainer_DeleteEntries, a1, a2, a3 )
+#define UlValidate_IABContainer_DeleteEntries( a1, a2, a3 ) \
+ UlValidateParameters3( IABContainer_DeleteEntries, a1, a2, a3 )
+#define CheckParameters_IABContainer_DeleteEntries( a1, a2, a3 ) \
+ CheckParameters3( IABContainer_DeleteEntries, a1, a2, a3 )
+
+#define Validate_IABContainer_ResolveNames( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IABContainer_ResolveNames, a1, a2, a3, a4, a5 )
+#define UlValidate_IABContainer_ResolveNames( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IABContainer_ResolveNames, a1, a2, a3, a4, a5 )
+#define CheckParameters_IABContainer_ResolveNames( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IABContainer_ResolveNames, a1, a2, a3, a4, a5 )
+
+
+/* IDistList */
+
+#define Validate_IDistList_CreateEntry( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IDistList_CreateEntry, a1, a2, a3, a4, a5 )
+#define UlValidate_IDistList_CreateEntry( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IDistList_CreateEntry, a1, a2, a3, a4, a5 )
+#define CheckParameters_IDistList_CreateEntry( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IDistList_CreateEntry, a1, a2, a3, a4, a5 )
+
+#define Validate_IDistList_CopyEntries( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IDistList_CopyEntries, a1, a2, a3, a4, a5 )
+#define UlValidate_IDistList_CopyEntries( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IDistList_CopyEntries, a1, a2, a3, a4, a5 )
+#define CheckParameters_IDistList_CopyEntries( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IDistList_CopyEntries, a1, a2, a3, a4, a5 )
+
+#define Validate_IDistList_DeleteEntries( a1, a2, a3 ) \
+ ValidateParameters3( IDistList_DeleteEntries, a1, a2, a3 )
+#define UlValidate_IDistList_DeleteEntries( a1, a2, a3 ) \
+ UlValidateParameters3( IDistList_DeleteEntries, a1, a2, a3 )
+#define CheckParameters_IDistList_DeleteEntries( a1, a2, a3 ) \
+ CheckParameters3( IDistList_DeleteEntries, a1, a2, a3 )
+
+#define Validate_IDistList_ResolveNames( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IDistList_ResolveNames, a1, a2, a3, a4, a5 )
+#define UlValidate_IDistList_ResolveNames( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IDistList_ResolveNames, a1, a2, a3, a4, a5 )
+#define CheckParameters_IDistList_ResolveNames( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IDistList_ResolveNames, a1, a2, a3, a4, a5 )
+
+
+/* IMAPIFolder */
+
+#define Validate_IMAPIFolder_CreateMessage( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIFolder_CreateMessage, a1, a2, a3, a4 )
+#define UlValidate_IMAPIFolder_CreateMessage( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIFolder_CreateMessage, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIFolder_CreateMessage( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIFolder_CreateMessage, a1, a2, a3, a4 )
+
+#define Validate_IMAPIFolder_CopyMessages( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMAPIFolder_CopyMessages, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMAPIFolder_CopyMessages( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMAPIFolder_CopyMessages, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMAPIFolder_CopyMessages( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMAPIFolder_CopyMessages, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMAPIFolder_DeleteMessages( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIFolder_DeleteMessages, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIFolder_DeleteMessages( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIFolder_DeleteMessages, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIFolder_DeleteMessages( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIFolder_DeleteMessages, a1, a2, a3, a4, a5 )
+
+#define Validate_IMAPIFolder_CreateFolder( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMAPIFolder_CreateFolder, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMAPIFolder_CreateFolder( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMAPIFolder_CreateFolder, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMAPIFolder_CreateFolder( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMAPIFolder_CreateFolder, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMAPIFolder_CopyFolder( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ ValidateParameters9( IMAPIFolder_CopyFolder, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+#define UlValidate_IMAPIFolder_CopyFolder( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ UlValidateParameters9( IMAPIFolder_CopyFolder, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+#define CheckParameters_IMAPIFolder_CopyFolder( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ CheckParameters9( IMAPIFolder_CopyFolder, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+
+#define Validate_IMAPIFolder_DeleteFolder( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMAPIFolder_DeleteFolder, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMAPIFolder_DeleteFolder( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMAPIFolder_DeleteFolder, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMAPIFolder_DeleteFolder( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMAPIFolder_DeleteFolder, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMAPIFolder_SetReadFlags( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIFolder_SetReadFlags, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIFolder_SetReadFlags( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIFolder_SetReadFlags, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIFolder_SetReadFlags( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIFolder_SetReadFlags, a1, a2, a3, a4, a5 )
+
+#define Validate_IMAPIFolder_GetMessageStatus( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIFolder_GetMessageStatus, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIFolder_GetMessageStatus( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIFolder_GetMessageStatus, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIFolder_GetMessageStatus( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIFolder_GetMessageStatus, a1, a2, a3, a4, a5 )
+
+#define Validate_IMAPIFolder_SetMessageStatus( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMAPIFolder_SetMessageStatus, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMAPIFolder_SetMessageStatus( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMAPIFolder_SetMessageStatus, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMAPIFolder_SetMessageStatus( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMAPIFolder_SetMessageStatus, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMAPIFolder_SaveContentsSort( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIFolder_SaveContentsSort, a1, a2, a3 )
+#define UlValidate_IMAPIFolder_SaveContentsSort( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIFolder_SaveContentsSort, a1, a2, a3 )
+#define CheckParameters_IMAPIFolder_SaveContentsSort( a1, a2, a3 ) \
+ CheckParameters3( IMAPIFolder_SaveContentsSort, a1, a2, a3 )
+
+#define Validate_IMAPIFolder_EmptyFolder( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIFolder_EmptyFolder, a1, a2, a3, a4 )
+#define UlValidate_IMAPIFolder_EmptyFolder( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIFolder_EmptyFolder, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIFolder_EmptyFolder( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIFolder_EmptyFolder, a1, a2, a3, a4 )
+
+
+/* IMsgStore */
+
+#define Validate_IMsgStore_Advise( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMsgStore_Advise, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMsgStore_Advise( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMsgStore_Advise, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMsgStore_Advise( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMsgStore_Advise, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMsgStore_Unadvise( a1, a2 ) \
+ ValidateParameters2( IMsgStore_Unadvise, a1, a2 )
+#define UlValidate_IMsgStore_Unadvise( a1, a2 ) \
+ UlValidateParameters2( IMsgStore_Unadvise, a1, a2 )
+#define CheckParameters_IMsgStore_Unadvise( a1, a2 ) \
+ CheckParameters2( IMsgStore_Unadvise, a1, a2 )
+
+#define Validate_IMsgStore_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMsgStore_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMsgStore_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMsgStore_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMsgStore_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMsgStore_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMsgStore_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMsgStore_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMsgStore_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMsgStore_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMsgStore_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMsgStore_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMsgStore_SetReceiveFolder( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMsgStore_SetReceiveFolder, a1, a2, a3, a4, a5 )
+#define UlValidate_IMsgStore_SetReceiveFolder( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMsgStore_SetReceiveFolder, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMsgStore_SetReceiveFolder( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMsgStore_SetReceiveFolder, a1, a2, a3, a4, a5 )
+
+#define Validate_IMsgStore_GetReceiveFolder( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMsgStore_GetReceiveFolder, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMsgStore_GetReceiveFolder( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMsgStore_GetReceiveFolder, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMsgStore_GetReceiveFolder( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMsgStore_GetReceiveFolder, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMsgStore_GetReceiveFolderTable( a1, a2, a3 ) \
+ ValidateParameters3( IMsgStore_GetReceiveFolderTable, a1, a2, a3 )
+#define UlValidate_IMsgStore_GetReceiveFolderTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMsgStore_GetReceiveFolderTable, a1, a2, a3 )
+#define CheckParameters_IMsgStore_GetReceiveFolderTable( a1, a2, a3 ) \
+ CheckParameters3( IMsgStore_GetReceiveFolderTable, a1, a2, a3 )
+
+#define Validate_IMsgStore_StoreLogoff( a1, a2 ) \
+ ValidateParameters2( IMsgStore_StoreLogoff, a1, a2 )
+#define UlValidate_IMsgStore_StoreLogoff( a1, a2 ) \
+ UlValidateParameters2( IMsgStore_StoreLogoff, a1, a2 )
+#define CheckParameters_IMsgStore_StoreLogoff( a1, a2 ) \
+ CheckParameters2( IMsgStore_StoreLogoff, a1, a2 )
+
+#define Validate_IMsgStore_AbortSubmit( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMsgStore_AbortSubmit, a1, a2, a3, a4 )
+#define UlValidate_IMsgStore_AbortSubmit( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMsgStore_AbortSubmit, a1, a2, a3, a4 )
+#define CheckParameters_IMsgStore_AbortSubmit( a1, a2, a3, a4 ) \
+ CheckParameters4( IMsgStore_AbortSubmit, a1, a2, a3, a4 )
+
+#define Validate_IMsgStore_GetOutgoingQueue( a1, a2, a3 ) \
+ ValidateParameters3( IMsgStore_GetOutgoingQueue, a1, a2, a3 )
+#define UlValidate_IMsgStore_GetOutgoingQueue( a1, a2, a3 ) \
+ UlValidateParameters3( IMsgStore_GetOutgoingQueue, a1, a2, a3 )
+#define CheckParameters_IMsgStore_GetOutgoingQueue( a1, a2, a3 ) \
+ CheckParameters3( IMsgStore_GetOutgoingQueue, a1, a2, a3 )
+
+#define Validate_IMsgStore_SetLockState( a1, a2, a3 ) \
+ ValidateParameters3( IMsgStore_SetLockState, a1, a2, a3 )
+#define UlValidate_IMsgStore_SetLockState( a1, a2, a3 ) \
+ UlValidateParameters3( IMsgStore_SetLockState, a1, a2, a3 )
+#define CheckParameters_IMsgStore_SetLockState( a1, a2, a3 ) \
+ CheckParameters3( IMsgStore_SetLockState, a1, a2, a3 )
+
+#define Validate_IMsgStore_FinishedMsg( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMsgStore_FinishedMsg, a1, a2, a3, a4 )
+#define UlValidate_IMsgStore_FinishedMsg( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMsgStore_FinishedMsg, a1, a2, a3, a4 )
+#define CheckParameters_IMsgStore_FinishedMsg( a1, a2, a3, a4 ) \
+ CheckParameters4( IMsgStore_FinishedMsg, a1, a2, a3, a4 )
+
+#define Validate_IMsgStore_NotifyNewMail( a1, a2 ) \
+ ValidateParameters2( IMsgStore_NotifyNewMail, a1, a2 )
+#define UlValidate_IMsgStore_NotifyNewMail( a1, a2 ) \
+ UlValidateParameters2( IMsgStore_NotifyNewMail, a1, a2 )
+#define CheckParameters_IMsgStore_NotifyNewMail( a1, a2 ) \
+ CheckParameters2( IMsgStore_NotifyNewMail, a1, a2 )
+
+
+/* IMessage */
+
+#define Validate_IMessage_GetAttachmentTable( a1, a2, a3 ) \
+ ValidateParameters3( IMessage_GetAttachmentTable, a1, a2, a3 )
+#define UlValidate_IMessage_GetAttachmentTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMessage_GetAttachmentTable, a1, a2, a3 )
+#define CheckParameters_IMessage_GetAttachmentTable( a1, a2, a3 ) \
+ CheckParameters3( IMessage_GetAttachmentTable, a1, a2, a3 )
+
+#define Validate_IMessage_OpenAttach( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMessage_OpenAttach, a1, a2, a3, a4, a5 )
+#define UlValidate_IMessage_OpenAttach( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMessage_OpenAttach, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMessage_OpenAttach( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMessage_OpenAttach, a1, a2, a3, a4, a5 )
+
+#define Validate_IMessage_CreateAttach( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMessage_CreateAttach, a1, a2, a3, a4, a5 )
+#define UlValidate_IMessage_CreateAttach( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMessage_CreateAttach, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMessage_CreateAttach( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMessage_CreateAttach, a1, a2, a3, a4, a5 )
+
+#define Validate_IMessage_DeleteAttach( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMessage_DeleteAttach, a1, a2, a3, a4, a5 )
+#define UlValidate_IMessage_DeleteAttach( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMessage_DeleteAttach, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMessage_DeleteAttach( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMessage_DeleteAttach, a1, a2, a3, a4, a5 )
+
+#define Validate_IMessage_GetRecipientTable( a1, a2, a3 ) \
+ ValidateParameters3( IMessage_GetRecipientTable, a1, a2, a3 )
+#define UlValidate_IMessage_GetRecipientTable( a1, a2, a3 ) \
+ UlValidateParameters3( IMessage_GetRecipientTable, a1, a2, a3 )
+#define CheckParameters_IMessage_GetRecipientTable( a1, a2, a3 ) \
+ CheckParameters3( IMessage_GetRecipientTable, a1, a2, a3 )
+
+#define Validate_IMessage_ModifyRecipients( a1, a2, a3 ) \
+ ValidateParameters3( IMessage_ModifyRecipients, a1, a2, a3 )
+#define UlValidate_IMessage_ModifyRecipients( a1, a2, a3 ) \
+ UlValidateParameters3( IMessage_ModifyRecipients, a1, a2, a3 )
+#define CheckParameters_IMessage_ModifyRecipients( a1, a2, a3 ) \
+ CheckParameters3( IMessage_ModifyRecipients, a1, a2, a3 )
+
+#define Validate_IMessage_SubmitMessage( a1, a2 ) \
+ ValidateParameters2( IMessage_SubmitMessage, a1, a2 )
+#define UlValidate_IMessage_SubmitMessage( a1, a2 ) \
+ UlValidateParameters2( IMessage_SubmitMessage, a1, a2 )
+#define CheckParameters_IMessage_SubmitMessage( a1, a2 ) \
+ CheckParameters2( IMessage_SubmitMessage, a1, a2 )
+
+#define Validate_IMessage_SetReadFlag( a1, a2 ) \
+ ValidateParameters2( IMessage_SetReadFlag, a1, a2 )
+#define UlValidate_IMessage_SetReadFlag( a1, a2 ) \
+ UlValidateParameters2( IMessage_SetReadFlag, a1, a2 )
+#define CheckParameters_IMessage_SetReadFlag( a1, a2 ) \
+ CheckParameters2( IMessage_SetReadFlag, a1, a2 )
+
+
+/* IABProvider */
+
+#define Validate_IABProvider_Shutdown( a1, a2 ) \
+ ValidateParameters2( IABProvider_Shutdown, a1, a2 )
+#define UlValidate_IABProvider_Shutdown( a1, a2 ) \
+ UlValidateParameters2( IABProvider_Shutdown, a1, a2 )
+#define CheckParameters_IABProvider_Shutdown( a1, a2 ) \
+ CheckParameters2( IABProvider_Shutdown, a1, a2 )
+
+#define Validate_IABProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ ValidateParameters9( IABProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+#define UlValidate_IABProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ UlValidateParameters9( IABProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+#define CheckParameters_IABProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) \
+ CheckParameters9( IABProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9 )
+
+
+/* IABLogon */
+
+#define Validate_IABLogon_GetLastError( a1, a2, a3, a4 ) \
+ ValidateParameters4( IABLogon_GetLastError, a1, a2, a3, a4 )
+#define UlValidate_IABLogon_GetLastError( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IABLogon_GetLastError, a1, a2, a3, a4 )
+#define CheckParameters_IABLogon_GetLastError( a1, a2, a3, a4 ) \
+ CheckParameters4( IABLogon_GetLastError, a1, a2, a3, a4 )
+
+#define Validate_IABLogon_Logoff( a1, a2 ) \
+ ValidateParameters2( IABLogon_Logoff, a1, a2 )
+#define UlValidate_IABLogon_Logoff( a1, a2 ) \
+ UlValidateParameters2( IABLogon_Logoff, a1, a2 )
+#define CheckParameters_IABLogon_Logoff( a1, a2 ) \
+ CheckParameters2( IABLogon_Logoff, a1, a2 )
+
+#define Validate_IABLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IABLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IABLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IABLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IABLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IABLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IABLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IABLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IABLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IABLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IABLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IABLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IABLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IABLogon_Advise, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IABLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IABLogon_Advise, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IABLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IABLogon_Advise, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IABLogon_Unadvise( a1, a2 ) \
+ ValidateParameters2( IABLogon_Unadvise, a1, a2 )
+#define UlValidate_IABLogon_Unadvise( a1, a2 ) \
+ UlValidateParameters2( IABLogon_Unadvise, a1, a2 )
+#define CheckParameters_IABLogon_Unadvise( a1, a2 ) \
+ CheckParameters2( IABLogon_Unadvise, a1, a2 )
+
+#define Validate_IABLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IABLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define UlValidate_IABLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IABLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define CheckParameters_IABLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IABLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+
+#define Validate_IABLogon_OpenTemplateID( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ ValidateParameters8( IABLogon_OpenTemplateID, a1, a2, a3, a4, a5, a6, a7, a8 )
+#define UlValidate_IABLogon_OpenTemplateID( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ UlValidateParameters8( IABLogon_OpenTemplateID, a1, a2, a3, a4, a5, a6, a7, a8 )
+#define CheckParameters_IABLogon_OpenTemplateID( a1, a2, a3, a4, a5, a6, a7, a8 ) \
+ CheckParameters8( IABLogon_OpenTemplateID, a1, a2, a3, a4, a5, a6, a7, a8 )
+
+#define Validate_IABLogon_GetOneOffTable( a1, a2, a3 ) \
+ ValidateParameters3( IABLogon_GetOneOffTable, a1, a2, a3 )
+#define UlValidate_IABLogon_GetOneOffTable( a1, a2, a3 ) \
+ UlValidateParameters3( IABLogon_GetOneOffTable, a1, a2, a3 )
+#define CheckParameters_IABLogon_GetOneOffTable( a1, a2, a3 ) \
+ CheckParameters3( IABLogon_GetOneOffTable, a1, a2, a3 )
+
+#define Validate_IABLogon_PrepareRecips( a1, a2, a3, a4 ) \
+ ValidateParameters4( IABLogon_PrepareRecips, a1, a2, a3, a4 )
+#define UlValidate_IABLogon_PrepareRecips( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IABLogon_PrepareRecips, a1, a2, a3, a4 )
+#define CheckParameters_IABLogon_PrepareRecips( a1, a2, a3, a4 ) \
+ CheckParameters4( IABLogon_PrepareRecips, a1, a2, a3, a4 )
+
+
+/* IXPProvider */
+
+#define Validate_IXPProvider_Shutdown( a1, a2 ) \
+ ValidateParameters2( IXPProvider_Shutdown, a1, a2 )
+#define UlValidate_IXPProvider_Shutdown( a1, a2 ) \
+ UlValidateParameters2( IXPProvider_Shutdown, a1, a2 )
+#define CheckParameters_IXPProvider_Shutdown( a1, a2 ) \
+ CheckParameters2( IXPProvider_Shutdown, a1, a2 )
+
+#define Validate_IXPProvider_TransportLogon( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IXPProvider_TransportLogon, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IXPProvider_TransportLogon( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IXPProvider_TransportLogon, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IXPProvider_TransportLogon( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IXPProvider_TransportLogon, a1, a2, a3, a4, a5, a6, a7 )
+
+
+/* IXPLogon */
+
+#define Validate_IXPLogon_AddressTypes( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IXPLogon_AddressTypes, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IXPLogon_AddressTypes( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IXPLogon_AddressTypes, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IXPLogon_AddressTypes( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IXPLogon_AddressTypes, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IXPLogon_RegisterOptions( a1, a2, a3, a4 ) \
+ ValidateParameters4( IXPLogon_RegisterOptions, a1, a2, a3, a4 )
+#define UlValidate_IXPLogon_RegisterOptions( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IXPLogon_RegisterOptions, a1, a2, a3, a4 )
+#define CheckParameters_IXPLogon_RegisterOptions( a1, a2, a3, a4 ) \
+ CheckParameters4( IXPLogon_RegisterOptions, a1, a2, a3, a4 )
+
+#define Validate_IXPLogon_TransportNotify( a1, a2, a3 ) \
+ ValidateParameters3( IXPLogon_TransportNotify, a1, a2, a3 )
+#define UlValidate_IXPLogon_TransportNotify( a1, a2, a3 ) \
+ UlValidateParameters3( IXPLogon_TransportNotify, a1, a2, a3 )
+#define CheckParameters_IXPLogon_TransportNotify( a1, a2, a3 ) \
+ CheckParameters3( IXPLogon_TransportNotify, a1, a2, a3 )
+
+#define Validate_IXPLogon_Idle( a1, a2 ) \
+ ValidateParameters2( IXPLogon_Idle, a1, a2 )
+#define UlValidate_IXPLogon_Idle( a1, a2 ) \
+ UlValidateParameters2( IXPLogon_Idle, a1, a2 )
+#define CheckParameters_IXPLogon_Idle( a1, a2 ) \
+ CheckParameters2( IXPLogon_Idle, a1, a2 )
+
+#define Validate_IXPLogon_TransportLogoff( a1, a2 ) \
+ ValidateParameters2( IXPLogon_TransportLogoff, a1, a2 )
+#define UlValidate_IXPLogon_TransportLogoff( a1, a2 ) \
+ UlValidateParameters2( IXPLogon_TransportLogoff, a1, a2 )
+#define CheckParameters_IXPLogon_TransportLogoff( a1, a2 ) \
+ CheckParameters2( IXPLogon_TransportLogoff, a1, a2 )
+
+#define Validate_IXPLogon_SubmitMessage( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IXPLogon_SubmitMessage, a1, a2, a3, a4, a5 )
+#define UlValidate_IXPLogon_SubmitMessage( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IXPLogon_SubmitMessage, a1, a2, a3, a4, a5 )
+#define CheckParameters_IXPLogon_SubmitMessage( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IXPLogon_SubmitMessage, a1, a2, a3, a4, a5 )
+
+#define Validate_IXPLogon_EndMessage( a1, a2, a3 ) \
+ ValidateParameters3( IXPLogon_EndMessage, a1, a2, a3 )
+#define UlValidate_IXPLogon_EndMessage( a1, a2, a3 ) \
+ UlValidateParameters3( IXPLogon_EndMessage, a1, a2, a3 )
+#define CheckParameters_IXPLogon_EndMessage( a1, a2, a3 ) \
+ CheckParameters3( IXPLogon_EndMessage, a1, a2, a3 )
+
+#define Validate_IXPLogon_Poll( a1, a2 ) \
+ ValidateParameters2( IXPLogon_Poll, a1, a2 )
+#define UlValidate_IXPLogon_Poll( a1, a2 ) \
+ UlValidateParameters2( IXPLogon_Poll, a1, a2 )
+#define CheckParameters_IXPLogon_Poll( a1, a2 ) \
+ CheckParameters2( IXPLogon_Poll, a1, a2 )
+
+#define Validate_IXPLogon_StartMessage( a1, a2, a3, a4 ) \
+ ValidateParameters4( IXPLogon_StartMessage, a1, a2, a3, a4 )
+#define UlValidate_IXPLogon_StartMessage( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IXPLogon_StartMessage, a1, a2, a3, a4 )
+#define CheckParameters_IXPLogon_StartMessage( a1, a2, a3, a4 ) \
+ CheckParameters4( IXPLogon_StartMessage, a1, a2, a3, a4 )
+
+#define Validate_IXPLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IXPLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define UlValidate_IXPLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IXPLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define CheckParameters_IXPLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IXPLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+
+#define Validate_IXPLogon_ValidateState( a1, a2, a3 ) \
+ ValidateParameters3( IXPLogon_ValidateState, a1, a2, a3 )
+#define UlValidate_IXPLogon_ValidateState( a1, a2, a3 ) \
+ UlValidateParameters3( IXPLogon_ValidateState, a1, a2, a3 )
+#define CheckParameters_IXPLogon_ValidateState( a1, a2, a3 ) \
+ CheckParameters3( IXPLogon_ValidateState, a1, a2, a3 )
+
+#define Validate_IXPLogon_FlushQueues( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IXPLogon_FlushQueues, a1, a2, a3, a4, a5 )
+#define UlValidate_IXPLogon_FlushQueues( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IXPLogon_FlushQueues, a1, a2, a3, a4, a5 )
+#define CheckParameters_IXPLogon_FlushQueues( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IXPLogon_FlushQueues, a1, a2, a3, a4, a5 )
+
+
+/* IMSProvider */
+
+#define Validate_IMSProvider_Shutdown( a1, a2 ) \
+ ValidateParameters2( IMSProvider_Shutdown, a1, a2 )
+#define UlValidate_IMSProvider_Shutdown( a1, a2 ) \
+ UlValidateParameters2( IMSProvider_Shutdown, a1, a2 )
+#define CheckParameters_IMSProvider_Shutdown( a1, a2 ) \
+ CheckParameters2( IMSProvider_Shutdown, a1, a2 )
+
+#define Validate_IMSProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ ValidateParameters13( IMSProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+#define UlValidate_IMSProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ UlValidateParameters13( IMSProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+#define CheckParameters_IMSProvider_Logon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ CheckParameters13( IMSProvider_Logon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+
+#define Validate_IMSProvider_SpoolerLogon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ ValidateParameters13( IMSProvider_SpoolerLogon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+#define UlValidate_IMSProvider_SpoolerLogon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ UlValidateParameters13( IMSProvider_SpoolerLogon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+#define CheckParameters_IMSProvider_SpoolerLogon( a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ) \
+ CheckParameters13( IMSProvider_SpoolerLogon, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 )
+
+#define Validate_IMSProvider_CompareStoreIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMSProvider_CompareStoreIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMSProvider_CompareStoreIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMSProvider_CompareStoreIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMSProvider_CompareStoreIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMSProvider_CompareStoreIDs, a1, a2, a3, a4, a5, a6, a7 )
+
+
+/* IMSLogon */
+
+#define Validate_IMSLogon_GetLastError( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMSLogon_GetLastError, a1, a2, a3, a4 )
+#define UlValidate_IMSLogon_GetLastError( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMSLogon_GetLastError, a1, a2, a3, a4 )
+#define CheckParameters_IMSLogon_GetLastError( a1, a2, a3, a4 ) \
+ CheckParameters4( IMSLogon_GetLastError, a1, a2, a3, a4 )
+
+#define Validate_IMSLogon_Logoff( a1, a2 ) \
+ ValidateParameters2( IMSLogon_Logoff, a1, a2 )
+#define UlValidate_IMSLogon_Logoff( a1, a2 ) \
+ UlValidateParameters2( IMSLogon_Logoff, a1, a2 )
+#define CheckParameters_IMSLogon_Logoff( a1, a2 ) \
+ CheckParameters2( IMSLogon_Logoff, a1, a2 )
+
+#define Validate_IMSLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMSLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMSLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMSLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMSLogon_OpenEntry( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMSLogon_OpenEntry, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMSLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ ValidateParameters7( IMSLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define UlValidate_IMSLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ UlValidateParameters7( IMSLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+#define CheckParameters_IMSLogon_CompareEntryIDs( a1, a2, a3, a4, a5, a6, a7 ) \
+ CheckParameters7( IMSLogon_CompareEntryIDs, a1, a2, a3, a4, a5, a6, a7 )
+
+#define Validate_IMSLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ ValidateParameters6( IMSLogon_Advise, a1, a2, a3, a4, a5, a6 )
+#define UlValidate_IMSLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ UlValidateParameters6( IMSLogon_Advise, a1, a2, a3, a4, a5, a6 )
+#define CheckParameters_IMSLogon_Advise( a1, a2, a3, a4, a5, a6 ) \
+ CheckParameters6( IMSLogon_Advise, a1, a2, a3, a4, a5, a6 )
+
+#define Validate_IMSLogon_Unadvise( a1, a2 ) \
+ ValidateParameters2( IMSLogon_Unadvise, a1, a2 )
+#define UlValidate_IMSLogon_Unadvise( a1, a2 ) \
+ UlValidateParameters2( IMSLogon_Unadvise, a1, a2 )
+#define CheckParameters_IMSLogon_Unadvise( a1, a2 ) \
+ CheckParameters2( IMSLogon_Unadvise, a1, a2 )
+
+#define Validate_IMSLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMSLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define UlValidate_IMSLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMSLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMSLogon_OpenStatusEntry( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMSLogon_OpenStatusEntry, a1, a2, a3, a4, a5 )
+
+
+/* IMAPIControl */
+
+#define Validate_IMAPIControl_GetLastError( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIControl_GetLastError, a1, a2, a3, a4 )
+#define UlValidate_IMAPIControl_GetLastError( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIControl_GetLastError, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIControl_GetLastError( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIControl_GetLastError, a1, a2, a3, a4 )
+
+#define Validate_IMAPIControl_Activate( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIControl_Activate, a1, a2, a3 )
+#define UlValidate_IMAPIControl_Activate( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIControl_Activate, a1, a2, a3 )
+#define CheckParameters_IMAPIControl_Activate( a1, a2, a3 ) \
+ CheckParameters3( IMAPIControl_Activate, a1, a2, a3 )
+
+#define Validate_IMAPIControl_GetState( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIControl_GetState, a1, a2, a3 )
+#define UlValidate_IMAPIControl_GetState( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIControl_GetState, a1, a2, a3 )
+#define CheckParameters_IMAPIControl_GetState( a1, a2, a3 ) \
+ CheckParameters3( IMAPIControl_GetState, a1, a2, a3 )
+
+
+/* IMAPIStatus */
+
+#define Validate_IMAPIStatus_ValidateState( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIStatus_ValidateState, a1, a2, a3 )
+#define UlValidate_IMAPIStatus_ValidateState( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIStatus_ValidateState, a1, a2, a3 )
+#define CheckParameters_IMAPIStatus_ValidateState( a1, a2, a3 ) \
+ CheckParameters3( IMAPIStatus_ValidateState, a1, a2, a3 )
+
+#define Validate_IMAPIStatus_SettingsDialog( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIStatus_SettingsDialog, a1, a2, a3 )
+#define UlValidate_IMAPIStatus_SettingsDialog( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIStatus_SettingsDialog, a1, a2, a3 )
+#define CheckParameters_IMAPIStatus_SettingsDialog( a1, a2, a3 ) \
+ CheckParameters3( IMAPIStatus_SettingsDialog, a1, a2, a3 )
+
+#define Validate_IMAPIStatus_ChangePassword( a1, a2, a3, a4 ) \
+ ValidateParameters4( IMAPIStatus_ChangePassword, a1, a2, a3, a4 )
+#define UlValidate_IMAPIStatus_ChangePassword( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IMAPIStatus_ChangePassword, a1, a2, a3, a4 )
+#define CheckParameters_IMAPIStatus_ChangePassword( a1, a2, a3, a4 ) \
+ CheckParameters4( IMAPIStatus_ChangePassword, a1, a2, a3, a4 )
+
+#define Validate_IMAPIStatus_FlushQueues( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IMAPIStatus_FlushQueues, a1, a2, a3, a4, a5 )
+#define UlValidate_IMAPIStatus_FlushQueues( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IMAPIStatus_FlushQueues, a1, a2, a3, a4, a5 )
+#define CheckParameters_IMAPIStatus_FlushQueues( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IMAPIStatus_FlushQueues, a1, a2, a3, a4, a5 )
+
+
+/* IStream */
+
+#define Validate_IStream_Read( a1, a2, a3, a4 ) \
+ ValidateParameters4( IStream_Read, a1, a2, a3, a4 )
+#define UlValidate_IStream_Read( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IStream_Read, a1, a2, a3, a4 )
+#define CheckParameters_IStream_Read( a1, a2, a3, a4 ) \
+ CheckParameters4( IStream_Read, a1, a2, a3, a4 )
+
+#define Validate_IStream_Write( a1, a2, a3, a4 ) \
+ ValidateParameters4( IStream_Write, a1, a2, a3, a4 )
+#define UlValidate_IStream_Write( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IStream_Write, a1, a2, a3, a4 )
+#define CheckParameters_IStream_Write( a1, a2, a3, a4 ) \
+ CheckParameters4( IStream_Write, a1, a2, a3, a4 )
+
+#define Validate_IStream_Seek( a1, a2, a3, a4 ) \
+ ValidateParameters4( IStream_Seek, a1, a2, a3, a4 )
+#define UlValidate_IStream_Seek( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IStream_Seek, a1, a2, a3, a4 )
+#define CheckParameters_IStream_Seek( a1, a2, a3, a4 ) \
+ CheckParameters4( IStream_Seek, a1, a2, a3, a4 )
+
+#define Validate_IStream_SetSize( a1, a2 ) \
+ ValidateParameters2( IStream_SetSize, a1, a2 )
+#define UlValidate_IStream_SetSize( a1, a2 ) \
+ UlValidateParameters2( IStream_SetSize, a1, a2 )
+#define CheckParameters_IStream_SetSize( a1, a2 ) \
+ CheckParameters2( IStream_SetSize, a1, a2 )
+
+#define Validate_IStream_CopyTo( a1, a2, a3, a4, a5 ) \
+ ValidateParameters5( IStream_CopyTo, a1, a2, a3, a4, a5 )
+#define UlValidate_IStream_CopyTo( a1, a2, a3, a4, a5 ) \
+ UlValidateParameters5( IStream_CopyTo, a1, a2, a3, a4, a5 )
+#define CheckParameters_IStream_CopyTo( a1, a2, a3, a4, a5 ) \
+ CheckParameters5( IStream_CopyTo, a1, a2, a3, a4, a5 )
+
+#define Validate_IStream_Commit( a1, a2 ) \
+ ValidateParameters2( IStream_Commit, a1, a2 )
+#define UlValidate_IStream_Commit( a1, a2 ) \
+ UlValidateParameters2( IStream_Commit, a1, a2 )
+#define CheckParameters_IStream_Commit( a1, a2 ) \
+ CheckParameters2( IStream_Commit, a1, a2 )
+
+#define Validate_IStream_Revert( a1 ) \
+ ValidateParameters1( IStream_Revert, a1 )
+#define UlValidate_IStream_Revert( a1 ) \
+ UlValidateParameters1( IStream_Revert, a1 )
+#define CheckParameters_IStream_Revert( a1 ) \
+ CheckParameters1( IStream_Revert, a1 )
+
+#define Validate_IStream_LockRegion( a1, a2, a3, a4 ) \
+ ValidateParameters4( IStream_LockRegion, a1, a2, a3, a4 )
+#define UlValidate_IStream_LockRegion( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IStream_LockRegion, a1, a2, a3, a4 )
+#define CheckParameters_IStream_LockRegion( a1, a2, a3, a4 ) \
+ CheckParameters4( IStream_LockRegion, a1, a2, a3, a4 )
+
+#define Validate_IStream_UnlockRegion( a1, a2, a3, a4 ) \
+ ValidateParameters4( IStream_UnlockRegion, a1, a2, a3, a4 )
+#define UlValidate_IStream_UnlockRegion( a1, a2, a3, a4 ) \
+ UlValidateParameters4( IStream_UnlockRegion, a1, a2, a3, a4 )
+#define CheckParameters_IStream_UnlockRegion( a1, a2, a3, a4 ) \
+ CheckParameters4( IStream_UnlockRegion, a1, a2, a3, a4 )
+
+#define Validate_IStream_Stat( a1, a2, a3 ) \
+ ValidateParameters3( IStream_Stat, a1, a2, a3 )
+#define UlValidate_IStream_Stat( a1, a2, a3 ) \
+ UlValidateParameters3( IStream_Stat, a1, a2, a3 )
+#define CheckParameters_IStream_Stat( a1, a2, a3 ) \
+ CheckParameters3( IStream_Stat, a1, a2, a3 )
+
+#define Validate_IStream_Clone( a1, a2 ) \
+ ValidateParameters2( IStream_Clone, a1, a2 )
+#define UlValidate_IStream_Clone( a1, a2 ) \
+ UlValidateParameters2( IStream_Clone, a1, a2 )
+#define CheckParameters_IStream_Clone( a1, a2 ) \
+ CheckParameters2( IStream_Clone, a1, a2 )
+
+
+/* IMAPIAdviseSink */
+
+#define Validate_IMAPIAdviseSink_OnNotify( a1, a2, a3 ) \
+ ValidateParameters3( IMAPIAdviseSink_OnNotify, a1, a2, a3 )
+#define UlValidate_IMAPIAdviseSink_OnNotify( a1, a2, a3 ) \
+ UlValidateParameters3( IMAPIAdviseSink_OnNotify, a1, a2, a3 )
+#define CheckParameters_IMAPIAdviseSink_OnNotify( a1, a2, a3 ) \
+ CheckParameters3( IMAPIAdviseSink_OnNotify, a1, a2, a3 )
+
+
+#ifdef WIN16
+HRESULT
+PASCAL HrValidateParameters( METHODS eMethod, LPVOID FAR *ppFirstArg );
+#elif defined(_X86_)
+STDAPI HrValidateParameters( METHODS eMethod, LPVOID FAR *ppFirstArg );
+#else
+STDAPIV HrValidateParametersV( METHODS eMethod, ... );
+STDAPIV HrValidateParametersValist( METHODS eMethod, va_list arglist );
+#endif /* WIN16 */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC_VALIDATE */
+
diff --git a/public/sdk/inc/mapiwin.h b/public/sdk/inc/mapiwin.h
new file mode 100644
index 000000000..40a3db777
--- /dev/null
+++ b/public/sdk/inc/mapiwin.h
@@ -0,0 +1,431 @@
+/*
+ * M A P I W I N . H
+ *
+ * Definitions used by the MAPI Development Team to aid in
+ * developing single-source service providers that run on
+ * both WIN32 and WIN16 platforms.
+ * There are three sections.
+ *
+ * The first section defines how to call something that
+ * is available by different methods in WIN16 vs. WIN32.
+ * As such, they are totally new mechanisms.
+ *
+ * The second section establishes things that are available
+ * AS-IS in one environment but we have to define for the
+ * other environment.
+ *
+ * The third section simply defines a few conventions
+ * (simplifications) for common operations.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+/*
+ * Routines are included in the first section to manage per-instance
+ * global variables for DLLs. They assume that all of the DLL's
+ * per-instance global variables live in a single block of memory.
+ * Functions are provided to install and retrieve the correct block of
+ * memory for the current instance.
+ *
+ * There are only two functions:
+ *
+ * PvGetInstanceGlobals Call this to get the address of the
+ * per-instance globals structure.
+ * ScSetinstanceGlobals Call this to install the
+ * per-instance globals structure. It
+ * may fail if the number of instances
+ * exceeds a certain limit.
+ *
+ * The caller is free to choose the name, size, and allocation
+ * method of the per-instance global variables structure.
+ *
+ * The WIN32 implementation uses a pointer in the DLL's data
+ * segment. This assumes that the DLL gets a separate instance
+ * of the default data segment per calling process.
+ *
+ * The WIN16 implementation uses a fixed array of pointers and a
+ * matching fixed array of keys unique to the calling process.
+ */
+
+/*
+ * The second section consists largely of Win32 file I/O functions
+ * that are not supported under Win16. These functions are
+ * implemented in mapiwin.c, using DOS calls. Most have limitations
+ * relative to their Win32 counterparts, which are spelled out in
+ * the comments to the source code.
+ */
+
+#ifndef __MAPIWIN_H__
+#define __MAPIWIN_H__
+
+#if defined (WIN32) && !defined (_WIN32)
+#define _WIN32
+#endif
+
+#include "mapinls.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/********************************/
+/* Our conventions for things */
+/* we choose to do differently */
+/* on WIN16 vs. WIN32. */
+/********************************/
+
+#ifdef WIN16
+
+#define MULDIV(x,y,z) MulDiv32(x,y,z)
+#define IsBadReadPtr(lp,cb) FBadReadPtr(lp,cb)
+
+#define cInstMax 50
+LPVOID FAR PASCAL PvGetInstanceGlobals(void);
+LONG FAR PASCAL ScSetInstanceGlobals(LPVOID pv);
+LONG FAR PASCAL ScSetVerifyInstanceGlobals(LPVOID pv, DWORD dwPid);
+LPVOID FAR PASCAL PvGetVerifyInstanceGlobals(DWORD dwPid);
+LPVOID FAR PASCAL PvSlowGetInstanceGlobals(DWORD dwPid);
+BOOL __export FAR PASCAL FCleanupInstanceGlobals(WORD, DWORD);
+
+#elif defined(_MAC) /* !WIN16 */
+
+#define MULDIV(x,y,z) MulDiv(x,y,z)
+
+LPVOID FAR PASCAL PvGetInstanceGlobals(WORD wDataSet);
+LONG FAR PASCAL ScSetInstanceGlobals(LPVOID pv, WORD wDataSet);
+LONG FAR PASCAL ScSetVerifyInstanceGlobals(LPVOID pv, DWORD dwPid,
+ WORD wDataSet);
+LPVOID FAR PASCAL PvGetVerifyInstanceGlobals(DWORD dwPid, DWORD wDataSet);
+LPVOID FAR PASCAL PvSlowGetInstanceGlobals(DWORD dwPid, DWORD wDataSet);
+BOOL FAR PASCAL FCleanupInstanceGlobals(WORD, DWORD);
+
+#else /* !WIN16 */
+
+#define MULDIV(x,y,z) MulDiv(x,y,z)
+
+extern LPVOID pinstX;
+#define PvGetInstanceGlobals() pinstX
+#define ScSetInstanceGlobals(_pv) (pinstX = _pv, 0)
+#define PvGetVerifyInstanceGlobals(_pid) pinstX
+#define ScSetVerifyInstanceGlobals(_pv,_pid) (pinstX = _pv, 0)
+#define PvSlowGetInstanceGlobals(_pid) pinstX
+
+#endif /* WIN16 */
+
+#if defined(_WIN32) && !defined(_MAC)
+#define szMAPIDLLSuffix "32"
+#elif defined(WIN16) || defined(DOS)
+#define szMAPIDLLSuffix ""
+#elif defined(_MAC)
+#define szMAPIDLLSuffix "M"
+#else
+#error "Don't know the suffix for DLLs on this platform"
+#endif
+
+/********************************/
+/* Things missing from one */
+/* system-provided environment */
+/* or the other. */
+/********************************/
+
+#if !defined(_WIN32)
+#define ZeroMemory(pb,cb) memset((pb),0,(cb))
+#define FillMemory(pb,cb,b) memset((pb),(b),(cb))
+#define CopyMemory(pbDst,pbSrc,cb) do \
+ { \
+ size_t _cb = (size_t)(cb); \
+ if (_cb) \
+ memcpy(pbDst,pbSrc,_cb);\
+ } while (FALSE)
+#define MoveMemory(pbDst,pbSrc,cb) memmove((pbDst),(pbSrc),(cb))
+
+#define UNALIGNED
+
+#endif
+
+#if defined(WIN16) || defined(_MAC)
+
+#ifndef _MAC
+#include <error.h> /* for GetLastError() */
+#endif
+
+typedef int INT;
+typedef unsigned long ULONG;
+typedef short SHORT;
+typedef unsigned short USHORT;
+typedef double LONGLONG;
+typedef double DWORDLONG;
+typedef unsigned char UCHAR;
+typedef unsigned char FAR* PUCHAR;
+typedef int BOOL;
+
+
+#ifndef _MAC
+typedef char BOOLEAN;
+
+#ifndef _FILETIME_
+#define _FILETIME_
+typedef struct tagFILETIME
+{
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+} FILETIME;
+#endif /* _FILETIME */
+
+typedef struct _SYSTEMTIME {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+} SYSTEMTIME, *PSYSTEMTIME, FAR *LPSYSTEMTIME;
+
+typedef struct _TIME_ZONE_INFORMATION {
+ LONG Bias;
+ CHAR StandardName[ 32 ]; /* was WCHAR */
+ SYSTEMTIME StandardDate;
+ LONG StandardBias;
+ CHAR DaylightName[ 32 ]; /* was WCHAR */
+ SYSTEMTIME DaylightDate;
+ LONG DaylightBias;
+} TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, FAR *LPTIME_ZONE_INFORMATION;
+
+
+#if defined(DOS) || defined(WIN16)
+/* Simulate effect of afx header */
+#define __T(x) x
+#define _T(x) __T(x)
+#define TEXT _T
+#endif
+
+#define APIENTRY WINAPI
+
+#define SetForegroundWindow SetActiveWindow
+
+#define wsprintfA wsprintf
+#define GetWindowsDirectoryA GetWindowsDirectory
+#define GetSystemDirectoryA GetSystemDirectory
+#define GetPrivateProfileStringA GetPrivateProfileString
+#define GetPrivateProfileIntA GetPrivateProfileInt
+#define GetProfileStringA GetProfileString
+#define GetModuleFileNameA GetModuleFileName
+#define CharUpperBuffA CharUpperBuff
+#define LoadLibraryA LoadLibrary
+#define lstrcatA lstrcat
+#define RegisterWindowMessageA RegisterWindowMessage
+#define MAKEINTRESOURCEA MAKEINTRESOURCE
+
+#define WNDCLASSA WNDCLASS
+
+#endif /* !_MAC */
+
+/* Synchronization */
+#define InterlockedIncrement(plong) (++(*(plong)))
+#define InterlockedDecrement(plong) (--(*(plong)))
+
+#ifndef CreateMutex
+#define CreateMutexA CreateMutex
+#define CreateMutexW CreateMutex
+#define CreateMutex(pv, bool, sz) (INVALID_HANDLE_VALUE)
+#endif
+
+#define WaitForSingleObject(hObj, dw) ((void)0)
+#define ReleaseMutex(hObj) ((BOOL)1)
+#define CloseMutexHandle(hObj) TRUE
+
+#define CRITICAL_SECTION ULONG
+#define InitializeCriticalSection(_pcs) ((void)0)
+#define DeleteCriticalSection(_pcs) ((void)0)
+#define EnterCriticalSection(_pcs) ((void)0)
+#define LeaveCriticalSection(_pcs) ((void)0)
+
+#define MAX_PATH 260
+
+#ifndef _MAC
+/*
+ * File Access Modes
+ *
+ * The possible combination of file access modes as passed into
+ * the CreateFile() api map to OpenFile() as follows:
+ *
+ * GENERIC_READ OPEN_ACCESS_READONLY
+ * GENERIC_WRITE OPEN_ACCESS_WRITEONLY
+ * GENERIC_READ | GENERIC_WRITE OPEN_ACCESS_READWRITE
+ *
+ * 0 OPEN_SHARE_DENYREADWRITE
+ * FILE_SHARE_READ OPEN_SHARE_DENYWRITE
+ * FILE_SHARE_WRITE OPEN_SHARE_DENYREAD
+ * FILE_SHARE_READ | FILE_SHARE_WRITE OPEN_SHARE_DENYNONE
+ *
+ * Due to the mappings we cannot pass them through directly,
+ * so we will have to use a conversion within APIs that test
+ * these bits. It would be best to use the Win32 #defines
+ * for these flags and convert as needed in the APIs.
+ */
+#define GENERIC_READ (0x80000000) /* from WINNT.H */
+#define GENERIC_WRITE (0x40000000) /* from WINNT.H */
+#define FILE_SHARE_READ (0x00000001) /* from WINNT.H */
+#define FILE_SHARE_WRITE (0x00000002) /* from WINNT.H */
+#endif /* _MAC */
+
+#define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000
+
+#define CREATE_NEW 1
+#define CREATE_ALWAYS 2
+#define OPEN_EXISTING 3
+#define OPEN_ALWAYS 4
+#define TRUNCATE_EXISTING 5
+
+#ifndef _MAC
+#define INVALID_HANDLE_VALUE ((HANDLE)(-1))
+#define DELETE 0x00010000L
+
+#define FILE_BEGIN 0
+#define FILE_CURRENT 1
+#define FILE_END 2
+#endif
+
+#define FILE_ATTRIBUTE_READONLY 0x00000001
+#define FILE_ATTRIBUTE_HIDDEN 0x00000002
+#define FILE_ATTRIBUTE_SYSTEM 0x00000004
+#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
+#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
+#define FILE_ATTRIBUTE_NORMAL 0x00000080
+#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
+
+#define FILE_FLAG_WRITE_THROUGH 0x80000000
+#define FILE_FLAG_RANDOM_ACCESS 0x10000000
+
+#ifndef _MAC
+typedef struct _WIN32_FIND_DATA {
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+ DWORD dwReserved0;
+ DWORD dwReserved1;
+ CHAR cFileName[ MAX_PATH ];
+ CHAR cAlternateFileName[ 16 ];
+} WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA;
+
+#define TIME_ZONE_ID_INVALID 0xFFFFFFFF
+#endif
+#define TIME_ZONE_ID_UNKNOWN 0
+#define TIME_ZONE_ID_STANDARD 1
+#define TIME_ZONE_ID_DAYLIGHT 2
+
+
+
+DWORD WINAPI GetLastError(void);
+DWORD WINAPI GetFileAttributes(LPCSTR lpFileName);
+DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh);
+BOOL WINAPI GetFileTime(HANDLE hFile, FILETIME FAR *lpftCreation,
+ FILETIME FAR *lpftLastAccess, FILETIME FAR *lpftLastWrite);
+BOOL WINAPI SetFileTime(HANDLE hFile, const FILETIME FAR *lpftCreation,
+ const FILETIME FAR *lpftLastAccess,
+ const FILETIME FAR *lpftLastWrite);
+#ifndef _MAC
+/* IsTask can crash - here's a safer one. */
+BOOL WINAPI FIsTask(HTASK hTask);
+
+HANDLE WINAPI CreateFile(LPCSTR lpFileName, DWORD dwDesiredAccess,
+ DWORD dwShareMode, LPVOID lpSecurityAttributes,
+ DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,
+ HANDLE hTemplateFile);
+BOOL WINAPI ReadFile(HANDLE hFile, LPVOID lpBuffer,
+ DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead,
+ LPVOID lpOverlapped);
+BOOL WINAPI WriteFile(HANDLE hFile, LPCVOID lpBuffer,
+ DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten,
+ LPVOID lpOverlapped);
+#endif
+DWORD WINAPI SetFilePointer(HANDLE hFile, LONG lDistanceToMove,
+ LONG FAR *lpDistanceToMoveHigh, DWORD dwMoveMethod);
+BOOL WINAPI SetEndOfFile(HANDLE hFile);
+BOOL WINAPI CloseHandle(HANDLE hObject);
+DWORD WINAPI GetTempPath(DWORD nBufferLength, LPSTR lpBuffer);
+UINT WINAPI GetTempFileName32 (LPCSTR lpPathName, LPCSTR lpPrefixString,
+ UINT uUnique, LPSTR lpTempFileName);
+BOOL WINAPI DeleteFile(LPCSTR lpFileName);
+#ifndef _MAC
+BOOL WINAPI CreateDirectory(LPCSTR lpPathName, LPVOID lpSecurityAttributes);
+#endif
+BOOL WINAPI RemoveDirectory(LPCSTR lpPathName);
+BOOL WINAPI CopyFile(LPCSTR szSrc, LPCSTR szDst, BOOL fFailIfExists);
+BOOL WINAPI MoveFile(LPCSTR lpExistingFileName, LPCSTR lpNewFileName);
+HANDLE WINAPI FindFirstFile(LPCSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData);
+BOOL WINAPI FindNextFile(HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData);
+BOOL WINAPI FindClose(HANDLE hFindFile);
+DWORD WINAPI GetFullPathName(LPCSTR lpFileName, DWORD nBufferLength,
+ LPSTR lpBuffer, LPSTR *lpFilePart);
+void WINAPI Sleep(DWORD dwMilliseconds);
+LONG WINAPI CompareFileTime(const FILETIME FAR *, const FILETIME FAR *);
+BOOL WINAPI LocalFileTimeToFileTime(const FILETIME FAR *, FILETIME FAR *);
+BOOL WINAPI FileTimeToLocalFileTime(const FILETIME FAR *, FILETIME FAR *);
+BOOL WINAPI FileTimeToSystemTime(const FILETIME FAR *, SYSTEMTIME FAR *);
+BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME FAR *, FILETIME FAR *);
+void WINAPI GetSystemTime(SYSTEMTIME FAR *);
+void WINAPI GetLocalTime(SYSTEMTIME FAR *);
+BOOL WINAPI FileTimeToDosDateTime(const FILETIME FAR * lpFileTime,
+ WORD FAR *lpFatDate, WORD FAR *lpFatTime);
+BOOL WINAPI DosDateTimeToFileTime(WORD wFatDate, WORD wFatTime,
+ FILETIME FAR * lpFileTime);
+DWORD WINAPI GetTimeZoneInformation(
+ LPTIME_ZONE_INFORMATION lpTimeZoneInformation);
+BOOL WINAPI SetTimeZoneInformation(
+ const TIME_ZONE_INFORMATION FAR *lpTimeZoneInformation);
+
+DWORD WINAPI GetCurrentProcessId(void);
+long WINAPI MulDiv32(long, long, long);
+#ifndef _MAC
+BOOL WINAPI FBadReadPtr(const void FAR* lp, UINT cb);
+#endif
+
+#else /* !WIN16 */
+
+/* Remaps GetTempFileName32() to the real 32bit version */
+
+#define GetTempFileName32(_szPath,_szPfx,_n,_lpbuf) GetTempFileName(_szPath,_szPfx,_n,_lpbuf)
+
+#define CloseMutexHandle CloseHandle
+
+#endif /* !WIN16 */
+
+
+#ifdef _MAC
+#define CRITICAL_SECTION ULONG
+#define InitializeCriticalSection(_pcs) ((void)0)
+#define DeleteCriticalSection(_pcs) ((void)0)
+#define EnterCriticalSection(_pcs) ((void)0)
+#define LeaveCriticalSection(_pcs) ((void)0)
+#endif
+
+/********************************/
+/* Our private conventions */
+/* (common to WIN16/WIN32) */
+/********************************/
+
+#define Cbtszsize(_a) ((lstrlen(_a)+1)*sizeof(TCHAR))
+#define CbtszsizeA(_a) ((lstrlenA(_a) + 1))
+#define CbtszsizeW(_a) ((lstrlenW(_a) + 1) * sizeof(WCHAR))
+#define HexCchOf(_s) (sizeof(_s)*2+1)
+#define HexSizeOf(_s) (HexCchOf(_s)*sizeof(TCHAR))
+
+BOOL WINAPI IsBadBoundedStringPtr(const void FAR* lpsz, UINT cchMax);
+
+/* FUTURE - obsolete. OLE2 no longer contains these */
+#define GetSCode GetScode
+#define ReportResult(_a,_b,_c,_d) ResultFromScode(_b)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MAPIWIN_H__ */
+
diff --git a/public/sdk/inc/mapiwz.h b/public/sdk/inc/mapiwz.h
new file mode 100644
index 000000000..5d3e54176
--- /dev/null
+++ b/public/sdk/inc/mapiwz.h
@@ -0,0 +1,68 @@
+/*
+ * M A P I W Z . H
+ *
+ * Definitions for the Profile Wizard. Includes all prototypes
+ * and constants required by the provider-wizard code consumers.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef _MAPIWZ_H
+#define _MAPIWZ_H
+
+#define WIZ_QUERYNUMPAGES (WM_USER +10)
+#define WIZ_NEXT (WM_USER +11)
+#define WIZ_PREV (WM_USER +12)
+/*
+ * NOTE: Provider-Wizards should not use ids ranging between
+ * (WM_USER + 1) and (WM_USER +20) as these have been reserved for
+ * future releases.
+ */
+
+/* Flags for LaunchWizard API */
+
+#define MAPI_PW_FIRST_PROFILE 0x00000001
+#define MAPI_PW_LAUNCHED_BY_CONFIG 0x00000002
+#define MAPI_PW_ADD_SERVICE_ONLY 0x00000004
+#define MAPI_PW_PROVIDER_UI_ONLY 0x00000008
+#define MAPI_PW_HIDE_SERVICES_LIST 0x00000010
+
+/*
+ * Provider should set this property to TRUE if it does not
+ * want the Profile Wizard to display the PST setup page.
+ */
+#define PR_WIZARD_NO_PST_PAGE PROP_TAG(PT_BOOLEAN, 0x6700)
+#define PR_WIZARD_NO_PAB_PAGE PROP_TAG(PT_BOOLEAN, 0x6701)
+
+typedef HRESULT (STDAPICALLTYPE LAUNCHWIZARDENTRY)
+(
+ HWND hParentWnd,
+ ULONG ulFlags,
+ LPCTSTR FAR * lppszServiceNameToAdd,
+ ULONG cbBufferMax,
+ LPTSTR lpszNewProfileName
+);
+typedef LAUNCHWIZARDENTRY FAR * LPLAUNCHWIZARDENTRY;
+
+typedef BOOL (STDAPICALLTYPE SERVICEWIZARDDLGPROC)
+(
+ HWND hDlg,
+ UINT wMsgID,
+ WPARAM wParam,
+ LPARAM lParam
+);
+typedef SERVICEWIZARDDLGPROC FAR * LPSERVICEWIZARDDLGPROC;
+
+typedef ULONG (STDAPICALLTYPE WIZARDENTRY)
+(
+ HINSTANCE hProviderDLLInstance,
+ LPTSTR FAR * lppcsResourceName,
+ DLGPROC FAR * lppDlgProc,
+ LPMAPIPROP lpMapiProp,
+ LPVOID lpMapiSupportObject
+);
+typedef WIZARDENTRY FAR * LPWIZARDENTRY;
+
+#define LAUNCHWIZARDENTRYNAME "LAUNCHWIZARD"
+
+#endif /* _MAPIWZ_H */
diff --git a/public/sdk/inc/mapix.h b/public/sdk/inc/mapix.h
new file mode 100644
index 000000000..d983b2fec
--- /dev/null
+++ b/public/sdk/inc/mapix.h
@@ -0,0 +1,541 @@
+/*
+ * M A P I X . H
+ *
+ * Definitions of objects/flags, etc used by Extended MAPI.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef MAPIX_H
+#define MAPIX_H
+
+/* Include common MAPI header files if they haven't been already. */
+#ifndef MAPIDEFS_H
+#include <mapidefs.h>
+#endif
+#ifndef MAPICODE_H
+#include <mapicode.h>
+#endif
+#ifndef MAPIGUID_H
+#include <mapiguid.h>
+#endif
+#ifndef MAPITAGS_H
+#include <mapitags.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef BEGIN_INTERFACE
+#define BEGIN_INTERFACE
+#endif
+
+/* Forward interface declarations */
+
+DECLARE_MAPI_INTERFACE_PTR(IProfAdmin, LPPROFADMIN);
+DECLARE_MAPI_INTERFACE_PTR(IMsgServiceAdmin, LPSERVICEADMIN);
+DECLARE_MAPI_INTERFACE_PTR(IMAPISession, LPMAPISESSION);
+
+/* ------------------------------------------------------ */
+/* shared with simple mapi */
+
+typedef ULONG FLAGS;
+
+/* MAPILogon() flags. */
+
+#define MAPI_LOGON_UI 0x00000001 /* Display logon UI */
+#define MAPI_NEW_SESSION 0x00000002 /* Don't use shared session */
+#define MAPI_ALLOW_OTHERS 0x00000008 /* Make this a shared session */
+#define MAPI_EXPLICIT_PROFILE 0x00000010 /* Don't use default profile */
+#define MAPI_EXTENDED 0x00000020 /* Extended MAPI Logon */
+#define MAPI_FORCE_DOWNLOAD 0x00001000 /* Get new mail before return */
+#define MAPI_SERVICE_UI_ALWAYS 0x00002000 /* Do logon UI in all providers */
+#define MAPI_NO_MAIL 0x00008000 /* Do not activate transports */
+/* #define MAPI_NT_SERVICE 0x00010000 Allow logon from an NT service */
+#ifndef MAPI_PASSWORD_UI
+#define MAPI_PASSWORD_UI 0x00020000 /* Display password UI only */
+#endif
+#define MAPI_TIMEOUT_SHORT 0x00100000 /* Minimal wait for logon resources */
+
+#define MAPI_SIMPLE_DEFAULT (MAPI_LOGON_UI | MAPI_FORCE_DOWNLOAD | MAPI_ALLOW_OTHERS)
+#define MAPI_SIMPLE_EXPLICIT (MAPI_NEW_SESSION | MAPI_FORCE_DOWNLOAD | MAPI_EXPLICIT_PROFILE)
+
+/* Structure passed to MAPIInitialize(), and its ulFlags values */
+
+typedef struct
+{
+ ULONG ulVersion;
+ ULONG ulFlags;
+} MAPIINIT_0, FAR *LPMAPIINIT_0;
+
+typedef MAPIINIT_0 MAPIINIT;
+typedef MAPIINIT FAR *LPMAPIINIT;
+
+#define MAPI_INIT_VERSION 0
+
+#define MAPI_MULTITHREAD_NOTIFICATIONS 0x00000001
+/* Reserved for MAPI 0x40000000 */
+/* #define MAPI_NT_SERVICE 0x00010000 Use from NT service */
+
+/* MAPI base functions */
+
+typedef HRESULT (STDAPICALLTYPE MAPIINITIALIZE)(
+ LPVOID lpMapiInit
+);
+typedef MAPIINITIALIZE FAR *LPMAPIINITIALIZE;
+
+typedef void (STDAPICALLTYPE MAPIUNINITIALIZE)(void);
+typedef MAPIUNINITIALIZE FAR *LPMAPIUNINITIALIZE;
+
+MAPIINITIALIZE MAPIInitialize;
+MAPIUNINITIALIZE MAPIUninitialize;
+
+
+/* Extended MAPI Logon function */
+
+
+typedef HRESULT (STDMETHODCALLTYPE MAPILOGONEX)(
+ ULONG ulUIParam,
+ LPTSTR lpszProfileName,
+ LPTSTR lpszPassword,
+ ULONG ulFlags, /* ulFlags takes all that SimpleMAPI does + MAPI_UNICODE */
+ LPMAPISESSION FAR * lppSession
+);
+typedef MAPILOGONEX FAR *LPMAPILOGONEX;
+
+MAPILOGONEX MAPILogonEx;
+
+
+typedef SCODE (STDMETHODCALLTYPE MAPIALLOCATEBUFFER)(
+ ULONG cbSize,
+ LPVOID FAR * lppBuffer
+);
+
+typedef SCODE (STDMETHODCALLTYPE MAPIALLOCATEMORE)(
+ ULONG cbSize,
+ LPVOID lpObject,
+ LPVOID FAR * lppBuffer
+);
+
+typedef ULONG (STDAPICALLTYPE MAPIFREEBUFFER)(
+ LPVOID lpBuffer
+);
+
+typedef MAPIALLOCATEBUFFER FAR *LPMAPIALLOCATEBUFFER;
+typedef MAPIALLOCATEMORE FAR *LPMAPIALLOCATEMORE;
+typedef MAPIFREEBUFFER FAR *LPMAPIFREEBUFFER;
+
+MAPIALLOCATEBUFFER MAPIAllocateBuffer;
+MAPIALLOCATEMORE MAPIAllocateMore;
+MAPIFREEBUFFER MAPIFreeBuffer;
+
+typedef HRESULT (STDMETHODCALLTYPE MAPIADMINPROFILES)(
+ ULONG ulFlags,
+ LPPROFADMIN FAR *lppProfAdmin
+);
+
+typedef MAPIADMINPROFILES FAR *LPMAPIADMINPROFILES;
+
+MAPIADMINPROFILES MAPIAdminProfiles;
+
+/* IMAPISession Interface -------------------------------------------------- */
+
+/* Flags for OpenEntry and others */
+
+/*#define MAPI_MODIFY ((ULONG) 0x00000001) */
+
+/* Flags for Logoff */
+
+#define MAPI_LOGOFF_SHARED 0x00000001 /* Close all shared sessions */
+#define MAPI_LOGOFF_UI 0x00000002 /* It's OK to present UI */
+
+/* Flags for SetDefaultStore. They are mutually exclusive. */
+
+#define MAPI_DEFAULT_STORE 0x00000001 /* for incoming messages */
+#define MAPI_SIMPLE_STORE_TEMPORARY 0x00000002 /* for simple MAPI and CMC */
+#define MAPI_SIMPLE_STORE_PERMANENT 0x00000003 /* for simple MAPI and CMC */
+#define MAPI_PRIMARY_STORE 0x00000004 /* Used by some clients */
+#define MAPI_SECONDARY_STORE 0x00000005 /* Used by some clients */
+
+/* Flags for ShowForm. */
+
+#define MAPI_POST_MESSAGE 0x00000001 /* Selects post/send semantics */
+#define MAPI_NEW_MESSAGE 0x00000002 /* Governs copying during submission */
+
+/* MessageOptions */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+/* QueryDefaultMessageOpt */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+#define MAPI_IMAPISESSION_METHODS(IPURE) \
+ MAPIMETHOD(GetLastError) \
+ (THIS_ HRESULT hResult, \
+ ULONG ulFlags, \
+ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+ MAPIMETHOD(GetMsgStoresTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(OpenMsgStore) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ LPMDB FAR * lppMDB) IPURE; \
+ MAPIMETHOD(OpenAddressBook) \
+ (THIS_ ULONG ulUIParam, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ LPADRBOOK FAR * lppAdrBook) IPURE; \
+ MAPIMETHOD(OpenProfileSection) \
+ (THIS_ LPMAPIUID lpUID, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ LPPROFSECT FAR * lppProfSect) IPURE; \
+ MAPIMETHOD(GetStatusTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(OpenEntry) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulObjType, \
+ LPUNKNOWN FAR * lppUnk) IPURE; \
+ MAPIMETHOD(CompareEntryIDs) \
+ (THIS_ ULONG cbEntryID1, \
+ LPENTRYID lpEntryID1, \
+ ULONG cbEntryID2, \
+ LPENTRYID lpEntryID2, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulResult) IPURE; \
+ MAPIMETHOD(Advise) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulEventMask, \
+ LPMAPIADVISESINK lpAdviseSink, \
+ ULONG FAR * lpulConnection) IPURE; \
+ MAPIMETHOD(Unadvise) \
+ (THIS_ ULONG ulConnection) IPURE; \
+ MAPIMETHOD(MessageOptions) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ LPTSTR lpszAdrType, \
+ LPMESSAGE lpMessage) IPURE; \
+ MAPIMETHOD(QueryDefaultMessageOpt) \
+ (THIS_ LPTSTR lpszAdrType, \
+ ULONG ulFlags, \
+ ULONG FAR * lpcValues, \
+ LPSPropValue FAR * lppOptions) IPURE; \
+ MAPIMETHOD(EnumAdrTypes) \
+ (THIS_ ULONG ulFlags, \
+ ULONG FAR * lpcAdrTypes, \
+ LPTSTR FAR * FAR * lpppszAdrTypes) IPURE; \
+ MAPIMETHOD(QueryIdentity) \
+ (THIS_ ULONG FAR * lpcbEntryID, \
+ LPENTRYID FAR * lppEntryID) IPURE; \
+ MAPIMETHOD(Logoff) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ ULONG ulReserved) IPURE; \
+ MAPIMETHOD(SetDefaultStore) \
+ (THIS_ ULONG ulFlags, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID) IPURE; \
+ MAPIMETHOD(AdminServices) \
+ (THIS_ ULONG ulFlags, \
+ LPSERVICEADMIN FAR * lppServiceAdmin) IPURE; \
+ MAPIMETHOD(ShowForm) \
+ (THIS_ ULONG ulUIParam, \
+ LPMDB lpMsgStore, \
+ LPMAPIFOLDER lpParentFolder, \
+ LPCIID lpInterface, \
+ ULONG ulMessageToken, \
+ LPMESSAGE lpMessageSent, \
+ ULONG ulFlags, \
+ ULONG ulMessageStatus, \
+ ULONG ulMessageFlags, \
+ ULONG ulAccess, \
+ LPSTR lpszMessageClass) IPURE; \
+ MAPIMETHOD(PrepareForm) \
+ (THIS_ LPCIID lpInterface, \
+ LPMESSAGE lpMessage, \
+ ULONG FAR * lpulMessageToken) IPURE; \
+
+
+#undef INTERFACE
+#define INTERFACE IMAPISession
+DECLARE_MAPI_INTERFACE_(IMAPISession, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPISESSION_METHODS(PURE)
+};
+
+/*DECLARE_MAPI_INTERFACE_PTR(IMAPISession, LPMAPISESSION);*/
+
+/* IAddrBook Interface ----------------------------------------------------- */
+
+/* CreateOneOff */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+/****** MAPI_SEND_NO_RICH_INFO ((ULONG) 0x00010000) */
+
+/* RecipOptions */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+/* QueryDefaultRecipOpt */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+/* GetSearchPath */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+
+#define MAPI_IADDRBOOK_METHODS(IPURE) \
+ MAPIMETHOD(OpenEntry) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulObjType, \
+ LPUNKNOWN FAR * lppUnk) IPURE; \
+ MAPIMETHOD(CompareEntryIDs) \
+ (THIS_ ULONG cbEntryID1, \
+ LPENTRYID lpEntryID1, \
+ ULONG cbEntryID2, \
+ LPENTRYID lpEntryID2, \
+ ULONG ulFlags, \
+ ULONG FAR * lpulResult) IPURE; \
+ MAPIMETHOD(Advise) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ ULONG ulEventMask, \
+ LPMAPIADVISESINK lpAdviseSink, \
+ ULONG FAR * lpulConnection) IPURE; \
+ MAPIMETHOD(Unadvise) \
+ (THIS_ ULONG ulConnection) IPURE; \
+ MAPIMETHOD(CreateOneOff) \
+ (THIS_ LPTSTR lpszName, \
+ LPTSTR lpszAdrType, \
+ LPTSTR lpszAddress, \
+ ULONG ulFlags, \
+ ULONG FAR * lpcbEntryID, \
+ LPENTRYID FAR * lppEntryID) IPURE; \
+ MAPIMETHOD(NewEntry) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ ULONG cbEIDContainer, \
+ LPENTRYID lpEIDContainer, \
+ ULONG cbEIDNewEntryTpl, \
+ LPENTRYID lpEIDNewEntryTpl, \
+ ULONG FAR * lpcbEIDNewEntry, \
+ LPENTRYID FAR * lppEIDNewEntry) IPURE; \
+ MAPIMETHOD(ResolveName) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ LPTSTR lpszNewEntryTitle, \
+ LPADRLIST lpAdrList) IPURE; \
+ MAPIMETHOD(Address) \
+ (THIS_ ULONG FAR * lpulUIParam, \
+ LPADRPARM lpAdrParms, \
+ LPADRLIST FAR * lppAdrList) IPURE; \
+ MAPIMETHOD(Details) \
+ (THIS_ ULONG FAR * lpulUIParam, \
+ LPFNDISMISS lpfnDismiss, \
+ LPVOID lpvDismissContext, \
+ ULONG cbEntryID, \
+ LPENTRYID lpEntryID, \
+ LPFNBUTTON lpfButtonCallback, \
+ LPVOID lpvButtonContext, \
+ LPTSTR lpszButtonText, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(RecipOptions) \
+ (THIS_ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ LPADRENTRY lpRecip) IPURE; \
+ MAPIMETHOD(QueryDefaultRecipOpt) \
+ (THIS_ LPTSTR lpszAdrType, \
+ ULONG ulFlags, \
+ ULONG FAR * lpcValues, \
+ LPSPropValue FAR * lppOptions) IPURE; \
+ MAPIMETHOD(GetPAB) \
+ (THIS_ ULONG FAR * lpcbEntryID, \
+ LPENTRYID FAR * lppEntryID) IPURE; \
+ MAPIMETHOD(SetPAB) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID) IPURE; \
+ MAPIMETHOD(GetDefaultDir) \
+ (THIS_ ULONG FAR * lpcbEntryID, \
+ LPENTRYID FAR * lppEntryID) IPURE; \
+ MAPIMETHOD(SetDefaultDir) \
+ (THIS_ ULONG cbEntryID, \
+ LPENTRYID lpEntryID) IPURE; \
+ MAPIMETHOD(GetSearchPath) \
+ (THIS_ ULONG ulFlags, \
+ LPSRowSet FAR * lppSearchPath) IPURE; \
+ MAPIMETHOD(SetSearchPath) \
+ (THIS_ ULONG ulFlags, \
+ LPSRowSet lpSearchPath) IPURE; \
+ MAPIMETHOD(PrepareRecips) \
+ (THIS_ ULONG ulFlags, \
+ LPSPropTagArray lpPropTagArray, \
+ LPADRLIST lpRecipList) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE IAddrBook
+DECLARE_MAPI_INTERFACE_(IAddrBook, IMAPIProp)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMAPIPROP_METHODS(PURE)
+ MAPI_IADDRBOOK_METHODS(PURE)
+};
+
+DECLARE_MAPI_INTERFACE_PTR(IAddrBook, LPADRBOOK);
+
+/* IProfAdmin Interface ---------------------------------------------------- */
+
+/* Flags for CreateProfile */
+#define MAPI_DEFAULT_SERVICES 0x00000001
+
+/* GetProfileTable */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+#define MAPI_IPROFADMIN_METHODS(IPURE) \
+ MAPIMETHOD(GetLastError) \
+ (THIS_ HRESULT hResult, \
+ ULONG ulFlags, \
+ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+ MAPIMETHOD(GetProfileTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(CreateProfile) \
+ (THIS_ LPTSTR lpszProfileName, \
+ LPTSTR lpszPassword, \
+ ULONG ulUIParam, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(DeleteProfile) \
+ (THIS_ LPTSTR lpszProfileName, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(ChangeProfilePassword) \
+ (THIS_ LPTSTR lpszProfileName, \
+ LPTSTR lpszOldPassword, \
+ LPTSTR lpszNewPassword, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(CopyProfile) \
+ (THIS_ LPTSTR lpszOldProfileName, \
+ LPTSTR lpszOldPassword, \
+ LPTSTR lpszNewProfileName, \
+ ULONG ulUIParam, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(RenameProfile) \
+ (THIS_ LPTSTR lpszOldProfileName, \
+ LPTSTR lpszOldPassword, \
+ LPTSTR lpszNewProfileName, \
+ ULONG ulUIParam, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(SetDefaultProfile) \
+ (THIS_ LPTSTR lpszProfileName, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(AdminServices) \
+ (THIS_ LPTSTR lpszProfileName, \
+ LPTSTR lpszPassword, \
+ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ LPSERVICEADMIN FAR * lppServiceAdmin) IPURE; \
+
+
+#undef INTERFACE
+#define INTERFACE IProfAdmin
+DECLARE_MAPI_INTERFACE_(IProfAdmin, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IPROFADMIN_METHODS(PURE)
+};
+
+/* IMsgServiceAdmin Interface ---------------------------------------------- */
+
+/* Values for PR_RESOURCE_FLAGS in message service table */
+
+#define SERVICE_DEFAULT_STORE 0x00000001
+#define SERVICE_SINGLE_COPY 0x00000002
+#define SERVICE_CREATE_WITH_STORE 0x00000004
+#define SERVICE_PRIMARY_IDENTITY 0x00000008
+#define SERVICE_NO_PRIMARY_IDENTITY 0x00000020
+
+/* GetMsgServiceTable */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+/* GetProviderTable */
+/****** MAPI_UNICODE ((ULONG) 0x80000000) */
+
+#define MAPI_IMSGSERVICEADMIN_METHODS(IPURE) \
+ MAPIMETHOD(GetLastError) \
+ (THIS_ HRESULT hResult, \
+ ULONG ulFlags, \
+ LPMAPIERROR FAR * lppMAPIError) IPURE; \
+ MAPIMETHOD(GetMsgServiceTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+ MAPIMETHOD(CreateMsgService) \
+ (THIS_ LPTSTR lpszService, \
+ LPTSTR lpszDisplayName, \
+ ULONG ulUIParam, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(DeleteMsgService) \
+ (THIS_ LPMAPIUID lpUID) IPURE; \
+ MAPIMETHOD(CopyMsgService) \
+ (THIS_ LPMAPIUID lpUID, \
+ LPTSTR lpszDisplayName, \
+ LPCIID lpInterfaceToCopy, \
+ LPCIID lpInterfaceDst, \
+ LPVOID lpObjectDst, \
+ ULONG ulUIParam, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(RenameMsgService) \
+ (THIS_ LPMAPIUID lpUID, \
+ ULONG ulFlags, \
+ LPTSTR lpszDisplayName) IPURE; \
+ MAPIMETHOD(ConfigureMsgService) \
+ (THIS_ LPMAPIUID lpUID, \
+ ULONG ulUIParam, \
+ ULONG ulFlags, \
+ ULONG cValues, \
+ LPSPropValue lpProps) IPURE; \
+ MAPIMETHOD(OpenProfileSection) \
+ (THIS_ LPMAPIUID lpUID, \
+ LPCIID lpInterface, \
+ ULONG ulFlags, \
+ LPPROFSECT FAR * lppProfSect) IPURE; \
+ MAPIMETHOD(MsgServiceTransportOrder) \
+ (THIS_ ULONG cUID, \
+ LPMAPIUID lpUIDList, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(AdminProviders) \
+ (THIS_ LPMAPIUID lpUID, \
+ ULONG ulFlags, \
+ LPPROVIDERADMIN FAR * lppProviderAdmin) IPURE; \
+ MAPIMETHOD(SetPrimaryIdentity) \
+ (THIS_ LPMAPIUID lpUID, \
+ ULONG ulFlags) IPURE; \
+ MAPIMETHOD(GetProviderTable) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE FAR * lppTable) IPURE; \
+
+
+#undef INTERFACE
+#define INTERFACE IMsgServiceAdmin
+DECLARE_MAPI_INTERFACE_(IMsgServiceAdmin, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_IMSGSERVICEADMIN_METHODS(PURE)
+};
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* MAPIX_H */
diff --git a/public/sdk/inc/marshl.h b/public/sdk/inc/marshl.h
new file mode 100644
index 000000000..5eb5d952e
--- /dev/null
+++ b/public/sdk/inc/marshl.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: marshl.h
+//
+// Contents: Replacement for marshl.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/mciavi.h b/public/sdk/inc/mciavi.h
new file mode 100644
index 000000000..322d680ba
--- /dev/null
+++ b/public/sdk/inc/mciavi.h
@@ -0,0 +1,81 @@
+/**************************************************************************
+ *
+ * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
+ * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ *
+ *
+** Copyright (C) Microsoft Corporation 1991-1996. All rights reserved.
+**
+** Title: mciavi.h - Multimedia Systems Media Control Interface
+** AVI driver external header file
+**
+** Version: 1.00
+**
+** Date: 16-JUL-1992
+**
+** Depends on MMSYSTEM.H and WINDOWS.h
+*/
+
+/************************************************************************/
+
+
+/*
+** These three flags apply to the 'play' command:
+** play <alias> window Play in normal window
+** play <alias> fullscreen Play in 320x240 full-screen mode
+** play <alias> fullscreen by 2 Play fullscreen, zoomed by 2
+*/
+#define MCI_MCIAVI_PLAY_WINDOW 0x01000000L
+#define MCI_MCIAVI_PLAY_FULLSCREEN 0x02000000L
+#define MCI_MCIAVI_PLAY_FULLBY2 0x04000000L
+/*
+** Debugging constants for AVI diagnostics
+*/
+/*
+** Returns number of frames not drawn during last play. If this number
+** is more than a small fraction of the number of frames that should have
+** been displayed, things aren't looking good.
+*/
+#define MCI_AVI_STATUS_FRAMES_SKIPPED 0x8001L
+/*
+** Returns a number representing how well the last AVI play worked.
+** A result of 1000 indicates that the AVI sequence took the amount
+** of time to play that it should have; a result of 2000, for instance,
+** would indicate that a 5-second AVI sequence took 10 seconds to play,
+** implying that the audio and video were badly broken up.
+*/
+#define MCI_AVI_STATUS_LAST_PLAY_SPEED 0x8002L
+/*
+** Returns the number of times that the audio definitely broke up.
+** (We count one for every time we're about to write some audio data
+** to the driver, and we notice that it's already played all of the
+** data we have.
+*/
+#define MCI_AVI_STATUS_AUDIO_BREAKS 0x8003L
+
+
+#define MCI_AVI_SETVIDEO_DRAW_PROCEDURE 0x8000L
+
+#define MCI_AVI_SETVIDEO_PALETTE_COLOR 0x8100L
+
+
+/*
+** This constant specifies that the "halftone" palette should be
+** used, rather than the default palette.
+*/
+#define MCI_AVI_SETVIDEO_PALETTE_HALFTONE 0x0000FFFFL
+
+/*
+** Custom error return values
+*/
+#define MCIERR_AVI_OLDAVIFORMAT (MCIERR_CUSTOM_DRIVER_BASE + 100)
+#define MCIERR_AVI_NOTINTERLEAVED (MCIERR_CUSTOM_DRIVER_BASE + 101)
+#define MCIERR_AVI_NODISPDIB (MCIERR_CUSTOM_DRIVER_BASE + 102)
+#define MCIERR_AVI_CANTPLAYFULLSCREEN (MCIERR_CUSTOM_DRIVER_BASE + 103)
+#define MCIERR_AVI_TOOBIGFORVGA (MCIERR_CUSTOM_DRIVER_BASE + 104)
+#define MCIERR_AVI_NOCOMPRESSOR (MCIERR_CUSTOM_DRIVER_BASE + 105)
+#define MCIERR_AVI_DISPLAYERROR (MCIERR_CUSTOM_DRIVER_BASE + 106)
+#define MCIERR_AVI_AUDIOERROR (MCIERR_CUSTOM_DRIVER_BASE + 107)
+#define MCIERR_AVI_BADPALETTE (MCIERR_CUSTOM_DRIVER_BASE + 108)
diff --git a/public/sdk/inc/mcx.h b/public/sdk/inc/mcx.h
new file mode 100644
index 000000000..579b763bb
--- /dev/null
+++ b/public/sdk/inc/mcx.h
@@ -0,0 +1,102 @@
+/************************************************************************
+* *
+* mcx.h -- This module defines the 32-Bit Windows MCX APIs *
+* *
+* Copyright (c) 1990-1996, Microsoft Corp. All rights reserved. *
+* *
+************************************************************************/
+
+#ifndef _MCX_H_
+#define _MCX_H_
+
+typedef struct _MODEMDEVCAPS {
+ DWORD dwActualSize;
+ DWORD dwRequiredSize;
+ DWORD dwDevSpecificOffset;
+ DWORD dwDevSpecificSize;
+
+ // product and version identification
+ DWORD dwModemProviderVersion;
+ DWORD dwModemManufacturerOffset;
+ DWORD dwModemManufacturerSize;
+ DWORD dwModemModelOffset;
+ DWORD dwModemModelSize;
+ DWORD dwModemVersionOffset;
+ DWORD dwModemVersionSize;
+
+ // local option capabilities
+ DWORD dwDialOptions; // bitmap of supported values
+ DWORD dwCallSetupFailTimer; // maximum in seconds
+ DWORD dwInactivityTimeout; // maximum in seconds
+ DWORD dwSpeakerVolume; // bitmap of supported values
+ DWORD dwSpeakerMode; // bitmap of supported values
+ DWORD dwModemOptions; // bitmap of supported values
+ DWORD dwMaxDTERate; // maximum value in bit/s
+ DWORD dwMaxDCERate; // maximum value in bit/s
+
+ // Variable portion for proprietary expansion
+ BYTE abVariablePortion [1];
+} MODEMDEVCAPS, *PMODEMDEVCAPS, *LPMODEMDEVCAPS;
+
+typedef struct _MODEMSETTINGS {
+ DWORD dwActualSize;
+ DWORD dwRequiredSize;
+ DWORD dwDevSpecificOffset;
+ DWORD dwDevSpecificSize;
+
+ // static local options (read/write)
+ DWORD dwCallSetupFailTimer; // seconds
+ DWORD dwInactivityTimeout; // seconds
+ DWORD dwSpeakerVolume; // level
+ DWORD dwSpeakerMode; // mode
+ DWORD dwPreferredModemOptions; // bitmap
+
+ // negotiated options (read only) for current or last call
+ DWORD dwNegotiatedModemOptions; // bitmap
+ DWORD dwNegotiatedDCERate; // bit/s
+
+ // Variable portion for proprietary expansion
+ BYTE abVariablePortion [1];
+} MODEMSETTINGS, *PMODEMSETTINGS, *LPMODEMSETTINGS;
+
+// Dial Options
+#define DIALOPTION_BILLING 0x00000040 // Supports wait for bong "$"
+#define DIALOPTION_QUIET 0x00000080 // Supports wait for quiet "@"
+#define DIALOPTION_DIALTONE 0x00000100 // Supports wait for dial tone "W"
+
+// SpeakerVolume for MODEMDEVCAPS
+#define MDMVOLFLAG_LOW 0x00000001
+#define MDMVOLFLAG_MEDIUM 0x00000002
+#define MDMVOLFLAG_HIGH 0x00000004
+
+// SpeakerVolume for MODEMSETTINGS
+#define MDMVOL_LOW 0x00000000
+#define MDMVOL_MEDIUM 0x00000001
+#define MDMVOL_HIGH 0x00000002
+
+// SpeakerMode for MODEMDEVCAPS
+#define MDMSPKRFLAG_OFF 0x00000001
+#define MDMSPKRFLAG_DIAL 0x00000002
+#define MDMSPKRFLAG_ON 0x00000004
+#define MDMSPKRFLAG_CALLSETUP 0x00000008
+
+// SpeakerMode for MODEMSETTINGS
+#define MDMSPKR_OFF 0x00000000
+#define MDMSPKR_DIAL 0x00000001
+#define MDMSPKR_ON 0x00000002
+#define MDMSPKR_CALLSETUP 0x00000003
+
+// Modem Options
+#define MDM_COMPRESSION 0x00000001
+#define MDM_ERROR_CONTROL 0x00000002
+#define MDM_FORCED_EC 0x00000004
+#define MDM_CELLULAR 0x00000008
+#define MDM_FLOWCONTROL_HARD 0x00000010
+#define MDM_FLOWCONTROL_SOFT 0x00000020
+#define MDM_CCITT_OVERRIDE 0x00000040
+#define MDM_SPEED_ADJUST 0x00000080
+#define MDM_TONE_DIAL 0x00000100
+#define MDM_BLIND_DIAL 0x00000200
+#define MDM_V23_OVERRIDE 0x00000400
+
+#endif /* _MCX_H_ */
diff --git a/public/sdk/inc/memdeser.hxx b/public/sdk/inc/memdeser.hxx
new file mode 100644
index 000000000..b5998518c
--- /dev/null
+++ b/public/sdk/inc/memdeser.hxx
@@ -0,0 +1,81 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: MemDeSer.hxx
+//
+// History: 29-Jul-94 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+#if !defined( __MEMDESER_HXX__ )
+#define __MEMDESER_HXX__
+
+#include <restrict.hxx>
+#include <SStream.hxx>
+
+class CMemDeSerStream : public PDeSerStream
+{
+public:
+
+ inline CMemDeSerStream( BYTE *pb, ULONG cb);
+
+ virtual ~CMemDeSerStream() {};
+
+ virtual BYTE GetByte();
+ virtual void SkipByte();
+
+ virtual void GetChar( char * pc, ULONG cc );
+ virtual void SkipChar( ULONG cc );
+
+ virtual void GetWChar( WCHAR * pwc, ULONG cc );
+ virtual void SkipWChar( ULONG cc );
+
+ virtual USHORT GetUShort();
+ virtual void SkipUShort();
+
+ virtual ULONG GetULong();
+ virtual void SkipULong();
+ virtual ULONG PeekULong();
+
+ virtual long GetLong();
+ virtual void SkipLong();
+
+#if defined(KERNEL) // Can not return floating point #'s in the kernel
+
+ virtual ULONG GetFloat();
+ virtual LONGLONG GetDouble();
+
+#else
+
+ virtual float GetFloat();
+ virtual double GetDouble();
+
+#endif
+ virtual void SkipFloat();
+ virtual void SkipDouble();
+
+ virtual char * GetString();
+
+ virtual WCHAR * GetWString();
+
+ virtual void GetBlob( BYTE * pb, ULONG cb );
+ virtual void SkipBlob( ULONG cb );
+
+ virtual void GetGUID( GUID & guid );
+ virtual void SkipGUID();
+
+protected:
+
+ BYTE * _pbCurrent;
+ BYTE * _pbEnd;
+};
+
+inline CMemDeSerStream::CMemDeSerStream( BYTE * pb, ULONG cb )
+ : _pbCurrent( pb )
+{
+ _pbEnd = _pbCurrent + cb;
+}
+
+#endif // __MEMDESER_HXX__
diff --git a/public/sdk/inc/memser.hxx b/public/sdk/inc/memser.hxx
new file mode 100644
index 000000000..b3a8d74a6
--- /dev/null
+++ b/public/sdk/inc/memser.hxx
@@ -0,0 +1,79 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: MemSer.hxx
+//
+// History: 29-Jul-94 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+#if !defined( __MEMSER_HXX__ )
+#define __MEMSER_HXX__
+
+#include <restrict.hxx>
+#include <SStream.hxx>
+
+class CMemSerStream : public PSerStream
+{
+public:
+
+ CMemSerStream( unsigned cb );
+ CMemSerStream(BYTE * pb, ULONG cb);
+
+ virtual ~CMemSerStream();
+
+ inline BYTE *AcqBuf();
+
+ virtual void PutByte( BYTE b );
+
+ virtual void PutChar( char const * pc, ULONG cc );
+
+ virtual void PutWChar( WCHAR const * pwc, ULONG cc );
+
+ virtual void PutUShort( USHORT us );
+
+ virtual void PutULong( ULONG ul );
+
+ virtual void PutLong( long l );
+
+ virtual void PutFloat( float f );
+
+ virtual void PutDouble( double d );
+
+ virtual void PutString( char const * psz );
+
+ virtual void PutWString( WCHAR const * pwsz );
+
+ virtual void PutBlob( BYTE const * pb, ULONG cb );
+
+ virtual void PutGUID( GUID const & guid );
+
+ inline unsigned Size() { return _cb; }
+
+protected:
+
+ unsigned _cb;
+ BYTE * _pb;
+ BYTE * _pbCurrent;
+ BYTE * _pbEnd;
+};
+
+inline BYTE * CMemSerStream::AcqBuf()
+{
+ BYTE * pb;
+
+ if ( _cb > 0 )
+ {
+ pb = _pb;
+ _pb = 0;
+ _cb = 0;
+ }
+ else
+ pb = 0;
+
+ return( pb );
+}
+
+#endif // __MEMSER_HXX__
diff --git a/public/sdk/inc/mfc30/afx.h b/public/sdk/inc/mfc30/afx.h
new file mode 100644
index 000000000..9e879fd0c
--- /dev/null
+++ b/public/sdk/inc/mfc30/afx.h
@@ -0,0 +1,1533 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFX_H__
+#define __AFX_H__
+
+#ifndef __cplusplus
+ #error MFC requires C++ compilation (use a .cpp suffix)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#include <afxver_.h> // Target version control
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifndef _AFXDLL
+ #ifndef _USRDLL
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "nafxcwd.lib")
+ #else
+ #pragma comment(lib, "nafxcw.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "uafxcwd.lib")
+ #else
+ #pragma comment(lib, "uafxcw.lib")
+ #endif
+ #endif
+ #else //!_USRDLL
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "nafxdwd.lib")
+ #else
+ #pragma comment(lib, "nafxdw.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "uafxdwd.lib")
+ #else
+ #pragma comment(lib, "uafxdw.lib")
+ #endif
+ #endif
+ #endif //_USRDLL
+ #ifdef _MT
+ #pragma comment(lib, "libcmt.lib")
+ #else
+ #pragma comment(lib, "libc.lib")
+ #endif
+#else
+ #ifndef _AFXCTL
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "cfm30d.lib")
+ #else
+ #pragma comment(lib, "cfm30.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "cfm30ud.lib")
+ #else
+ #pragma comment(lib, "cfm30u.lib")
+ #endif
+ #endif
+ #endif
+ #pragma comment(lib, "crtdll.lib")
+#endif
+
+#pragma comment(lib, "kernel32.lib")
+#pragma comment(lib, "user32.lib")
+#pragma comment(lib, "gdi32.lib")
+#pragma comment(lib, "comdlg32.lib")
+#pragma comment(lib, "winspool.lib")
+#pragma comment(lib, "advapi32.lib")
+#pragma comment(lib, "shell32.lib")
+
+#else //!_MAC
+
+//////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#ifndef _AFXDLL
+ #ifdef _DEBUG
+ #ifdef _68K_
+ #pragma comment(lib, "nafxcmd.lib")
+ #else
+ #pragma comment(lib, "nafxcpd.lib")
+ #endif
+ #pragma comment(lib, "wlmd.lib")
+ #else
+ #ifdef _68K_
+ #pragma comment(lib, "nafxcm.lib")
+ #else
+ #pragma comment(lib, "nafxcp.lib")
+ #endif
+ #pragma comment(lib, "wlm.lib")
+ #endif
+#else
+ #ifdef _DEBUG
+ #ifdef _68K_
+ #pragma comment(lib, "mfc30md.lib")
+ #else
+ #pragma comment(lib, "mfc30pd.lib")
+ #endif
+ #pragma comment(lib, "msvcwlmd.lib")
+ #else
+ #ifdef _68K_
+ #pragma comment(lib, "mfc30m.lib")
+ #else
+ #pragma comment(lib, "mfc30p.lib")
+ #endif
+ #pragma comment(lib, "msvcwlm.lib")
+ #endif
+#endif
+
+#ifdef _68K_
+ #pragma comment(lib, "libcs.lib")
+ #pragma comment(lib, "sanes.lib")
+ #ifdef _DEBUG
+ #pragma comment(lib, "swapd.lib")
+ #else
+ #pragma comment(lib, "swap.lib")
+ #endif
+#endif
+
+#ifdef _PPC_
+ #ifndef _AFXDLL
+ #pragma comment(lib, "libc.lib")
+ #else
+ #pragma comment(lib, "msvcrt.lib")
+ #endif
+ #pragma comment(lib, "privint.lib")
+ #pragma comment(lib, "aocelib.lib")
+ #pragma comment(lib, "math.lib")
+ #pragma comment(lib, "threads.lib")
+ #pragma comment(lib, "translat.lib")
+ #pragma comment(lib, "interfac.lib")
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+// in addition to standard primitive data types and various helper macros
+
+struct CRuntimeClass; // object type information
+
+class CObject; // the root of all objects classes
+
+ class CException; // the root of all exceptions
+ class CMemoryException; // out-of-memory exception
+ class CNotSupportedException; // feature not supported exception
+ class CArchiveException;// archive exception
+ class CFileException; // file exception
+
+ class CFile; // raw binary file
+ class CStdioFile; // buffered stdio text/binary file
+ class CMemFile; // memory based file
+
+// Non CObject classes
+class CString; // growable string type
+class CTimeSpan; // time/date difference
+class CTime; // absolute time/date
+struct CFileStatus; // file status information
+struct CMemoryState; // diagnostic memory support
+
+class CArchive; // object persistence tool
+class CDumpContext; // object diagnostic dumping
+
+/////////////////////////////////////////////////////////////////////////////
+// Other includes from standard "C" runtimes
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#ifdef _AFX_OLD_EXCEPTIONS
+// use setjmp and helper functions instead of C++ keywords
+#pragma warning(disable: 4611)
+#include <setjmp.h>
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic types
+
+typedef void* POSITION; // abstract iteration position
+
+struct _AFX_DOUBLE { BYTE doubleBits[sizeof(double)]; };
+struct _AFX_FLOAT { BYTE floatBits[sizeof(float)]; };
+
+// Standard constants
+#undef FALSE
+#undef TRUE
+#undef NULL
+
+#define FALSE 0
+#define TRUE 1
+#define NULL 0
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic support
+
+#ifdef _DEBUG
+
+void AFX_CDECL AfxTrace(LPCTSTR lpszFormat, ...);
+// Note: file names are still ANSI strings (filenames rarely need UNICODE)
+BOOL AFXAPI AfxAssertFailedLine(LPCSTR lpszFileName, int nLine);
+void AFXAPI AfxAssertValidObject(const CObject* pOb,
+ LPCSTR lpszFileName, int nLine);
+void AFXAPI AfxDump(const CObject* pOb); // Dump an object from CodeView
+
+#define TRACE ::AfxTrace
+#define THIS_FILE __FILE__
+#define ASSERT(f) \
+ do \
+ { \
+ if (!(f) && AfxAssertFailedLine(THIS_FILE, __LINE__)) \
+ AfxDebugBreak(); \
+ } while (0) \
+
+#define VERIFY(f) ASSERT(f)
+#define ASSERT_VALID(pOb) (::AfxAssertValidObject(pOb, THIS_FILE, __LINE__))
+
+// The following trace macros are provided for backward compatiblity
+// (they also take a fixed number of parameters which provides
+// some amount of extra error checking)
+#define TRACE0(sz) ::AfxTrace(_T(sz))
+#define TRACE1(sz, p1) ::AfxTrace(_T(sz), p1)
+#define TRACE2(sz, p1, p2) ::AfxTrace(_T(sz), p1, p2)
+#define TRACE3(sz, p1, p2, p3) ::AfxTrace(_T(sz), p1, p2, p3)
+
+// These AFX_DUMP macros also provided for backward compatibility
+#define AFX_DUMP0(dc, sz) dc << _T(sz)
+#define AFX_DUMP1(dc, sz, p1) dc << _T(sz) << p1
+
+#else // _DEBUG
+
+#define ASSERT(f) ((void)0)
+#define VERIFY(f) ((void)(f))
+#define ASSERT_VALID(pOb) ((void)0)
+inline void AFX_CDECL AfxTrace(LPCTSTR, ...) { }
+#define TRACE 1 ? (void)0 : ::AfxTrace
+#define TRACE0(sz)
+#define TRACE1(sz, p1)
+#define TRACE2(sz, p1, p2)
+#define TRACE3(sz, p1, p2, p3)
+
+#endif // !_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+#ifndef ALL_WARNINGS
+// warnings caused by normal optimizations
+#ifndef _DEBUG
+#pragma warning(disable: 4701) // local variable *may* be used without init
+#pragma warning(disable: 4702) // unreachable code caused by optimizations
+#pragma warning(disable: 4791) // loss of debugging info in retail version
+#endif
+// warnings generated with common MFC/Windows code
+#pragma warning(disable: 4127) // constant expression for TRACE/ASSERT
+#pragma warning(disable: 4134) // message map member fxn casts
+#pragma warning(disable: 4201) // nameless unions are part of C++
+#pragma warning(disable: 4511) // private copy constructors are good to have
+#pragma warning(disable: 4512) // private operator= are good to have
+#pragma warning(disable: 4514) // unreferenced inlines are common
+#pragma warning(disable: 4705) // TRACE turned into statement with no effect
+#pragma warning(disable: 4710) // private constructors are disallowed
+// warnings specific to _AFXDLL version
+#ifdef _AFXDLL
+#pragma warning(disable: 4204) // non-constant aggregate initializer
+#endif
+#endif //!ALL_WARNINGS
+
+/////////////////////////////////////////////////////////////////////////////
+// Other implementation helpers
+
+#define BEFORE_START_POSITION ((void*)-1L)
+
+/////////////////////////////////////////////////////////////////////////////
+// explicit extern for version API/Windows 3.0 loader problem
+
+extern "C" int AFXAPI AFX_EXPORT _afx_version();
+void AFXAPI AfxInitialize();
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic object model
+
+struct CRuntimeClass
+{
+// Attributes
+ LPCSTR m_lpszClassName;
+ int m_nObjectSize;
+ UINT m_wSchema; // schema number of the loaded class
+ void (PASCAL* m_pfnConstruct)(void* p); // NULL => abstract class
+#ifdef _AFXDLL
+ CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
+#else
+ CRuntimeClass* m_pBaseClass;
+#endif
+
+// Operations
+ CObject* CreateObject();
+
+// Implementation
+ BOOL ConstructObject(void* pThis);
+ void Store(CArchive& ar);
+ static CRuntimeClass* PASCAL Load(CArchive& ar, UINT* pwSchemaNum);
+
+ // CRuntimeClass objects linked together in simple list
+ CRuntimeClass* m_pNextClass; // linked list of registered classes
+
+ // special debug diagnostics
+#ifdef _DEBUG
+ BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CObject is the root of all compliant objects
+
+class CObject
+{
+public:
+
+// Object model (types, destruction, allocation)
+ virtual CRuntimeClass* GetRuntimeClass() const;
+ virtual ~CObject(); // virtual destructors are necessary
+
+ // Diagnostic allocations
+ void* AFX_CDECL operator new(size_t, void* p);
+ void* AFX_CDECL operator new(size_t nSize);
+ void AFX_CDECL operator delete(void* p);
+
+#ifdef _DEBUG
+ // for file name/line number tracking using DEBUG_NEW
+ void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
+#endif
+
+ // Disable the copy constructor and assignment by default so you will get
+ // compiler errors instead of unexpected behaviour if you pass objects
+ // by value or assign objects.
+protected:
+ CObject();
+private:
+ CObject(const CObject& objectSrc); // no implementation
+ void operator=(const CObject& objectSrc); // no implementation
+
+// Attributes
+public:
+ BOOL IsSerializable() const;
+ BOOL IsKindOf(const CRuntimeClass* pClass) const;
+
+// Overridables
+ virtual void Serialize(CArchive& ar);
+
+ // Diagnostic Support
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+
+// Implementation
+public:
+ static AFX_DATA CRuntimeClass classCObject;
+#ifdef _AFXDLL
+ static CRuntimeClass* PASCAL _GetBaseClass();
+#endif
+};
+
+// Helper macros
+#define RUNTIME_CLASS(class_name) (&class_name::class##class_name)
+
+//////////////////////////////////////////////////////////////////////////////
+// Helper macros for declaring compliant classes
+
+#ifdef _AFXDLL
+#define DECLARE_DYNAMIC(class_name) \
+protected: \
+ static CRuntimeClass* PASCAL _GetBaseClass(); \
+public: \
+ static AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#else
+#define DECLARE_DYNAMIC(class_name) \
+public: \
+ static AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#endif
+
+// not serializable, but dynamically constructable
+#define DECLARE_DYNCREATE(class_name) \
+ DECLARE_DYNAMIC(class_name) \
+ static void PASCAL Construct(void* p);
+
+#define DECLARE_SERIAL(class_name) \
+ DECLARE_DYNCREATE(class_name) \
+ friend CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb);
+
+// generate static object constructor for class registration
+struct AFX_CLASSINIT
+ { AFX_CLASSINIT(CRuntimeClass* pNewClass); };
+
+#ifdef _AFXDLL
+#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ CRuntimeClass* PASCAL class_name::_GetBaseClass() \
+ { return RUNTIME_CLASS(base_class_name); } \
+ AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class_name), wSchema, pfnNew, \
+ &class_name::_GetBaseClass, NULL }; \
+ static const AFX_CLASSINIT _init_##class_name(&class_name::class##class_name); \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return &class_name::class##class_name; } \
+
+#else
+#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class_name), wSchema, pfnNew, \
+ RUNTIME_CLASS(base_class_name), NULL }; \
+ static const AFX_CLASSINIT _init_##class_name(&class_name::class##class_name); \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return &class_name::class##class_name; } \
+
+#endif
+
+#define IMPLEMENT_DYNAMIC(class_name, base_class_name) \
+ _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, NULL)
+
+#define IMPLEMENT_DYNCREATE(class_name, base_class_name) \
+ void PASCAL class_name::Construct(void* p) \
+ { new(p) class_name; } \
+ _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, \
+ class_name::Construct)
+
+#define IMPLEMENT_SERIAL(class_name, base_class_name, wSchema) \
+ void PASCAL class_name::Construct(void* p) \
+ { new(p) class_name; } \
+ _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, \
+ class_name::Construct) \
+ CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb) \
+ { pOb = (class_name*) ar.ReadObject(RUNTIME_CLASS(class_name)); \
+ return ar; } \
+
+// optional bit for schema number that enables object versioning
+#define VERSIONABLE_SCHEMA (0x80000000)
+
+/////////////////////////////////////////////////////////////////////////////
+// other helpers
+
+// zero fill everything after the vtbl pointer
+#define AFX_ZERO_INIT_OBJECT(base_class) \
+ memset(((base_class*)this)+1, 0, sizeof(*this) - sizeof(base_class));
+
+/////////////////////////////////////////////////////////////////////////////
+// Exceptions
+
+class CException : public CObject
+{
+ // abstract class for dynamic type checking
+ DECLARE_DYNAMIC(CException)
+
+public:
+// Constructors
+ CException(); // sets m_bAutoDelete = TRUE
+ CException(BOOL bAutoDelete); // sets m_bAutoDelete = bAutoDelete
+
+// Operations
+ void Delete(); // use to delete exception in 'catch' block
+
+// Implementation (setting m_bAutoDelete to FALSE is advanced)
+public:
+ virtual ~CException();
+ BOOL m_bAutoDelete;
+
+protected:
+ void AFX_CDECL operator delete(void* p);
+#ifdef _DEBUG
+ BOOL m_bReadyForDelete;
+#endif
+};
+
+// helper routines for non-C++ EH implementations
+#ifdef _AFX_OLD_EXCEPTIONS
+ BOOL AFXAPI AfxCatchProc(CRuntimeClass* pClass);
+ void AFXAPI AfxThrow(CException* pException);
+#else
+ // for THROW_LAST auto-delete backward compatiblity
+ void AFXAPI AfxThrowLastCleanup();
+#endif
+
+// other out-of-line helper functions
+void AFXAPI AfxTryCleanup();
+
+#ifndef _AFX_JUMPBUF
+// Use portable 'jmp_buf' defined by ANSI by default.
+#define _AFX_JUMPBUF jmp_buf
+#endif
+
+// Placed on frame for EXCEPTION linkage, or CException cleanup
+struct AFX_EXCEPTION_LINK
+{
+#ifdef _AFX_OLD_EXCEPTIONS
+ union
+ {
+ _AFX_JUMPBUF m_jumpBuf;
+ struct
+ {
+ void (PASCAL* pfnCleanup)(AFX_EXCEPTION_LINK* pLink);
+ void* pvData; // extra data follows
+ } m_callback; // callback for cleanup (nType != 0)
+ };
+ UINT m_nType; // 0 for setjmp, !=0 for user extension
+#endif //!_AFX_OLD_EXCEPTIONS
+
+ AFX_EXCEPTION_LINK* m_pLinkPrev; // previous top, next in handler chain
+ CException* m_pException; // current exception (NULL in TRY block)
+
+ AFX_EXCEPTION_LINK(); // for initialization and linking
+ ~AFX_EXCEPTION_LINK() // for cleanup and unlinking
+ { AfxTryCleanup(); };
+};
+
+// Exception global state - never access directly
+struct AFX_EXCEPTION_CONTEXT
+{
+ AFX_EXCEPTION_LINK* m_pLinkTop;
+
+ // Note: most of the exception context is now in the AFX_EXCEPTION_LINK
+};
+
+void AFXAPI AfxAbort();
+void AFX_CDECL AfxStandardTerminate();
+int AFX_CDECL AfxNewHandler(size_t nSize);
+
+// Obsolete and non-portable: setting terminate handler
+// use CWinApp::ProcessWndProcException for Windows apps instead
+// can also use set_terminate which is part of C++ standard library
+// (these are provided for backward compatibility)
+void AFXAPI AfxTerminate();
+typedef void (AFXAPI* AFX_TERM_PROC)();
+AFX_TERM_PROC AFXAPI AfxSetTerminate(AFX_TERM_PROC);
+
+/////////////////////////////////////////////////////////////////////////////
+// Exception macros using try, catch and throw
+// (for backward compatibility to previous versions of MFC)
+
+#ifndef _AFX_OLD_EXCEPTIONS
+
+#define TRY { AFX_EXCEPTION_LINK _afxExceptionLink; try {
+
+#define CATCH(class, e) } catch (class* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(class))); \
+ _afxExceptionLink.m_pException = e;
+
+#define AND_CATCH(class, e) } catch (class* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(class))); \
+ _afxExceptionLink.m_pException = e;
+
+#define END_CATCH } }
+
+#define THROW(e) throw e
+#define THROW_LAST() (AfxThrowLastCleanup(), throw)
+
+// Advanced macros for smaller code
+#define CATCH_ALL(e) } catch (CException* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e;
+
+#define AND_CATCH_ALL(e) } catch (CException* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e;
+
+#define END_CATCH_ALL } }
+
+#define END_TRY } catch (CException* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e; } }
+
+#else //_AFX_OLD_EXCEPTIONS
+
+/////////////////////////////////////////////////////////////////////////////
+// Exception macros using setjmp and longjmp
+// (for portability to compilers with no support for C++ exception handling)
+
+#define TRY \
+ { AFX_EXCEPTION_LINK _afxExceptionLink; \
+ if (::setjmp(_afxExceptionLink.m_jumpBuf) == 0)
+
+#define CATCH(class, e) \
+ else if (::AfxCatchProc(RUNTIME_CLASS(class))) \
+ { class* e = (class*)_afxExceptionLink.m_pException;
+
+#define AND_CATCH(class, e) \
+ } else if (::AfxCatchProc(RUNTIME_CLASS(class))) \
+ { class* e = (class*)_afxExceptionLink.m_pException;
+
+#define END_CATCH \
+ } else { ::AfxThrow(NULL); } }
+
+#define THROW(e) AfxThrow(e)
+#define THROW_LAST() AfxThrow(NULL)
+
+// Advanced macros for smaller code
+#define CATCH_ALL(e) \
+ else { CException* e = _afxExceptionLink.m_pException;
+
+#define AND_CATCH_ALL(e) \
+ } else { CException* e = _afxExceptionLink.m_pException;
+
+#define END_CATCH_ALL } }
+
+#define END_TRY }
+
+#endif //_AFX_OLD_EXCEPTIONS
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Exception classes
+
+class CMemoryException : public CException
+{
+ DECLARE_DYNAMIC(CMemoryException)
+public:
+ CMemoryException();
+
+// Implementation
+ CMemoryException(BOOL bAutoDelete);
+ virtual ~CMemoryException();
+};
+
+class CNotSupportedException : public CException
+{
+ DECLARE_DYNAMIC(CNotSupportedException)
+public:
+ CNotSupportedException();
+
+// Implementation
+ CNotSupportedException(BOOL bAutoDelete);
+ virtual ~CNotSupportedException();
+};
+
+class CArchiveException : public CException
+{
+ DECLARE_DYNAMIC(CArchiveException)
+public:
+ enum {
+ none,
+ generic,
+ readOnly,
+ endOfFile,
+ writeOnly,
+ badIndex,
+ badClass,
+ badSchema
+ };
+
+// Constructor
+ CArchiveException(int cause = CArchiveException::none);
+
+// Attributes
+ int m_cause;
+
+// Implementation
+ virtual ~CArchiveException();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CFileException : public CException
+{
+ DECLARE_DYNAMIC(CFileException)
+
+public:
+ enum {
+ none,
+ generic,
+ fileNotFound,
+ badPath,
+ tooManyOpenFiles,
+ accessDenied,
+ invalidFile,
+ removeCurrentDir,
+ directoryFull,
+ badSeek,
+ hardIO,
+ sharingViolation,
+ lockViolation,
+ diskFull,
+ endOfFile
+ };
+
+// Constructor
+ CFileException(int cause = CFileException::none, LONG lOsError = -1);
+
+// Attributes
+ int m_cause;
+ LONG m_lOsError;
+
+// Operations
+ // convert a OS dependent error code to a Cause
+ static int PASCAL OsErrorToException(LONG lOsError);
+ static int PASCAL ErrnoToException(int nErrno);
+
+ // helper functions to throw exception after converting to a Cause
+ static void PASCAL ThrowOsError(LONG lOsError);
+ static void PASCAL ThrowErrno(int nErrno);
+
+// Implementation
+ virtual ~CFileException();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard exception throws
+
+void AFXAPI AfxThrowMemoryException();
+void AFXAPI AfxThrowNotSupportedException();
+void AFXAPI AfxThrowArchiveException(int cause);
+void AFXAPI AfxThrowFileException(int cause, LONG lOsError = -1);
+
+/////////////////////////////////////////////////////////////////////////////
+// File - raw unbuffered disk file I/O
+
+class CFile : public CObject
+{
+ DECLARE_DYNAMIC(CFile)
+
+public:
+// Flag values
+ enum OpenFlags {
+ modeRead = 0x0000,
+ modeWrite = 0x0001,
+ modeReadWrite = 0x0002,
+ shareCompat = 0x0000,
+ shareExclusive = 0x0010,
+ shareDenyWrite = 0x0020,
+ shareDenyRead = 0x0030,
+ shareDenyNone = 0x0040,
+ modeNoInherit = 0x0080,
+ modeCreate = 0x1000,
+ typeText = 0x4000, // typeText and typeBinary are used in
+ typeBinary = (int)0x8000 // derived classes only
+ };
+
+ enum Attribute {
+ normal = 0x00,
+ readOnly = 0x01,
+ hidden = 0x02,
+ system = 0x04,
+ volume = 0x08,
+ directory = 0x10,
+ archive = 0x20
+ };
+
+ enum SeekPosition { begin = 0x0, current = 0x1, end = 0x2 };
+
+ enum { hFileNull = -1 };
+
+// Constructors
+ CFile();
+ CFile(int hFile);
+ CFile(LPCTSTR lpszFileName, UINT nOpenFlags);
+
+// Attributes
+ UINT m_hFile;
+
+ virtual DWORD GetPosition() const;
+ BOOL GetStatus(CFileStatus& rStatus) const;
+
+// Operations
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+
+ static void PASCAL Rename(LPCTSTR lpszOldName,
+ LPCTSTR lpszNewName);
+ static void PASCAL Remove(LPCTSTR lpszFileName);
+ static BOOL PASCAL GetStatus(LPCTSTR lpszFileName,
+ CFileStatus& rStatus);
+ static void PASCAL SetStatus(LPCTSTR lpszFileName,
+ const CFileStatus& status);
+
+ DWORD SeekToEnd();
+ void SeekToBegin();
+
+ // backward compatible ReadHuge and WriteHuge
+ DWORD ReadHuge(void* lpBuffer, DWORD dwCount);
+ void WriteHuge(const void* lpBuffer, DWORD dwCount);
+
+// Overridables
+ virtual CFile* Duplicate() const;
+
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+// Implementation
+public:
+ virtual ~CFile();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ enum BufferCommand { bufferRead, bufferWrite, bufferCommit, bufferCheck };
+ virtual UINT GetBufferPtr(UINT nCommand, UINT nCount = 0,
+ void** ppBufStart = NULL, void** ppBufMax = NULL);
+
+protected:
+ BOOL m_bCloseOnDelete;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// STDIO file implementation
+
+class CStdioFile : public CFile
+{
+ DECLARE_DYNAMIC(CStdioFile)
+
+public:
+// Constructors
+ CStdioFile();
+ CStdioFile(FILE* pOpenStream);
+ CStdioFile(LPCTSTR lpszFileName, UINT nOpenFlags);
+
+// Attributes
+ FILE* m_pStream; // stdio FILE
+ // m_hFile from base class is _fileno(m_pStream)
+
+// Operations
+ virtual void WriteString(LPCTSTR lpsz);
+ // write a string -- like "C" fputs
+ virtual LPTSTR ReadString(LPTSTR lpsz, UINT nMax);
+ // read a string -- like "C" fgets
+
+// Implementation
+public:
+ virtual ~CStdioFile();
+#ifdef _DEBUG
+ void Dump(CDumpContext& dc) const;
+#endif
+ virtual DWORD GetPosition() const;
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+ // Unsupported APIs
+ virtual CFile* Duplicate() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+};
+
+////////////////////////////////////////////////////////////////////////////
+// Memory based file implementation
+
+class CMemFile : public CFile
+{
+ DECLARE_DYNAMIC(CMemFile)
+
+public:
+// Constructors
+ CMemFile(UINT nGrowBytes = 1024);
+
+// Advanced Overridables
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual BYTE* Memcpy(BYTE* lpMemTarget, const BYTE* lpMemSource, UINT nBytes);
+ virtual void Free(BYTE* lpMem);
+ virtual void GrowFile(DWORD dwNewLen);
+
+// Implementation
+protected:
+ UINT m_nGrowBytes;
+ DWORD m_nPosition;
+ DWORD m_nBufferSize;
+ DWORD m_nFileSize;
+ BYTE* m_lpBuffer;
+
+public:
+ virtual ~CMemFile();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ virtual DWORD GetPosition() const;
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+ virtual UINT GetBufferPtr(UINT nCommand, UINT nCount = 0,
+ void** ppBufStart = NULL, void** ppBufMax = NULL);
+
+ // Unsupported APIs
+ virtual CFile* Duplicate() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+// Note: _AFX_NO_BSTR_SUPPORT can be defined if you are including OLE2.H
+// directly instead of using AFXDISP.H. This will disable CString's direct
+// support for BSTRs, however.
+
+#ifndef _AFX_NO_BSTR_SUPPORT
+#ifndef _OLEAUTO_H_
+ typedef LPTSTR BSTR; // must (semantically) match typedef in oleauto.h
+#endif
+#endif
+
+class CString
+{
+public:
+
+// Constructors
+ CString();
+ CString(const CString& stringSrc);
+ CString(TCHAR ch, int nRepeat = 1);
+ CString(LPCSTR lpsz);
+ CString(LPCWSTR lpsz);
+ CString(LPCTSTR lpch, int nLength);
+ CString(const unsigned char* psz);
+
+// Attributes & Operations
+ // as an array of characters
+ int GetLength() const;
+ BOOL IsEmpty() const;
+ void Empty(); // free up the data
+
+ TCHAR GetAt(int nIndex) const; // 0 based
+ TCHAR operator[](int nIndex) const; // same as GetAt
+ void SetAt(int nIndex, TCHAR ch);
+ operator LPCTSTR() const; // as a C string
+
+ // overloaded assignment
+ const CString& operator=(const CString& stringSrc);
+ const CString& operator=(TCHAR ch);
+#ifdef _UNICODE
+ const CString& operator=(char ch);
+#endif
+ const CString& operator=(LPCSTR lpsz);
+ const CString& operator=(LPCWSTR lpsz);
+ const CString& operator=(const unsigned char* psz);
+
+ // string concatenation
+ const CString& operator+=(const CString& string);
+ const CString& operator+=(TCHAR ch);
+#ifdef _UNICODE
+ const CString& operator+=(char ch);
+#endif
+ const CString& operator+=(LPCTSTR lpsz);
+
+ friend CString AFXAPI operator+(const CString& string1,
+ const CString& string2);
+ friend CString AFXAPI operator+(const CString& string, TCHAR ch);
+ friend CString AFXAPI operator+(TCHAR ch, const CString& string);
+#ifdef _UNICODE
+ friend CString AFXAPI operator+(const CString& string, char ch);
+ friend CString AFXAPI operator+(char ch, const CString& string);
+#endif
+ friend CString AFXAPI operator+(const CString& string, LPCTSTR lpsz);
+ friend CString AFXAPI operator+(LPCTSTR lpsz, const CString& string);
+
+ // string comparison
+ int Compare(LPCTSTR lpsz) const; // straight character
+ int CompareNoCase(LPCTSTR lpsz) const; // ignore case
+ int Collate(LPCTSTR lpsz) const; // NLS aware
+
+ // simple sub-string extraction
+ CString Mid(int nFirst, int nCount) const;
+ CString Mid(int nFirst) const;
+ CString Left(int nCount) const;
+ CString Right(int nCount) const;
+
+ CString SpanIncluding(LPCTSTR lpszCharSet) const;
+ CString SpanExcluding(LPCTSTR lpszCharSet) const;
+
+ // upper/lower/reverse conversion
+ void MakeUpper();
+ void MakeLower();
+ void MakeReverse();
+
+ // trimming whitespace (either side)
+ void TrimRight();
+ void TrimLeft();
+
+ // searching (return starting index, or -1 if not found)
+ // look for a single character match
+ int Find(TCHAR ch) const; // like "C" strchr
+ int ReverseFind(TCHAR ch) const;
+ int FindOneOf(LPCTSTR lpszCharSet) const;
+
+ // look for a specific sub-string
+ int Find(LPCTSTR lpszSub) const; // like "C" strstr
+
+ // simple formatting
+ void Format(LPCTSTR lpszFormat, ...);
+
+ // input and output
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc,
+ const CString& string);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, const CString& string);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CString& string);
+
+ // Windows support
+ BOOL LoadString(UINT nID); // load from string resource
+ // 255 chars max
+#ifndef _UNICODE
+ // ANSI <-> OEM support (convert string in place)
+ void AnsiToOem();
+ void OemToAnsi();
+#endif
+
+#ifndef _AFX_NO_BSTR_SUPPORT
+ // OLE 2.0 BSTR support (use for OLE automation)
+ BSTR AllocSysString();
+ BSTR SetSysString(BSTR* pbstr);
+#endif
+
+ // Access to string implementation buffer as "C" character array
+ LPTSTR GetBuffer(int nMinBufLength);
+ void ReleaseBuffer(int nNewLength = -1);
+ LPTSTR GetBufferSetLength(int nNewLength);
+ void FreeExtra();
+
+// Implementation
+public:
+ ~CString();
+ int GetAllocLength() const;
+
+protected:
+ // lengths/sizes in characters
+ // (note: an extra character is always allocated)
+ LPTSTR m_pchData; // actual string (zero terminated)
+ int m_nDataLength; // does not include terminating 0
+ int m_nAllocLength; // does not include terminating 0
+
+ // implementation helpers
+ void Init();
+ void AllocCopy(CString& dest, int nCopyLen, int nCopyIndex, int nExtraLen) const;
+ void AllocBuffer(int nLen);
+ void AssignCopy(int nSrcLen, LPCTSTR lpszSrcData);
+ void ConcatCopy(int nSrc1Len, LPCTSTR lpszSrc1Data, int nSrc2Len, LPCTSTR lpszSrc2Data);
+ void ConcatInPlace(int nSrcLen, LPCTSTR lpszSrcData);
+ static void SafeDelete(LPTSTR lpch);
+ static int SafeStrlen(LPCTSTR lpsz);
+};
+
+// Compare helpers
+BOOL AFXAPI operator==(const CString& s1, const CString& s2);
+BOOL AFXAPI operator==(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator==(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator!=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator!=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator!=(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator<(const CString& s1, const CString& s2);
+BOOL AFXAPI operator<(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator<(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator>(const CString& s1, const CString& s2);
+BOOL AFXAPI operator>(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator>(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator<=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator<=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator<=(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator>=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator>=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator>=(LPCTSTR s1, const CString& s2);
+
+// conversion helpers
+int _wcstombsz(char* mbstr, const wchar_t* wcstr, size_t count);
+int _mbstowcsz(wchar_t* wcstr, const char* mbstr, size_t count);
+
+// Globals
+extern const AFX_DATA CString afxEmptyString;
+extern AFX_DATA TCHAR afxChNil;
+
+/////////////////////////////////////////////////////////////////////////////
+// CTimeSpan and CTime
+
+class CTimeSpan
+{
+public:
+
+// Constructors
+ CTimeSpan();
+ CTimeSpan(time_t time);
+ CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs);
+
+ CTimeSpan(const CTimeSpan& timeSpanSrc);
+ const CTimeSpan& operator=(const CTimeSpan& timeSpanSrc);
+
+// Attributes
+ // extract parts
+ LONG GetDays() const; // total # of days
+ LONG GetTotalHours() const;
+ int GetHours() const;
+ LONG GetTotalMinutes() const;
+ int GetMinutes() const;
+ LONG GetTotalSeconds() const;
+ int GetSeconds() const;
+
+// Operations
+ // time math
+ CTimeSpan operator-(CTimeSpan timeSpan) const;
+ CTimeSpan operator+(CTimeSpan timeSpan) const;
+ const CTimeSpan& operator+=(CTimeSpan timeSpan);
+ const CTimeSpan& operator-=(CTimeSpan timeSpan);
+ BOOL operator==(CTimeSpan timeSpan) const;
+ BOOL operator!=(CTimeSpan timeSpan) const;
+ BOOL operator<(CTimeSpan timeSpan) const;
+ BOOL operator>(CTimeSpan timeSpan) const;
+ BOOL operator<=(CTimeSpan timeSpan) const;
+ BOOL operator>=(CTimeSpan timeSpan) const;
+
+ CString Format(LPCSTR pFormat) const;
+ // Note: for _UNICODE variant, pFormat is still 'char'
+
+ // serialization
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc,CTimeSpan timeSpan);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, CTimeSpan timeSpan);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CTimeSpan& rtimeSpan);
+
+private:
+ time_t m_timeSpan;
+ friend class CTime;
+};
+
+class CTime
+{
+public:
+
+// Constructors
+ static CTime PASCAL GetCurrentTime();
+
+ CTime();
+ CTime(time_t time);
+ CTime(int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec);
+ CTime(WORD wDosDate, WORD wDosTime);
+ CTime(const CTime& timeSrc);
+
+ CTime(const SYSTEMTIME& sysTime);
+ CTime(const FILETIME& fileTime);
+ const CTime& operator=(const CTime& timeSrc);
+ const CTime& operator=(time_t t);
+
+// Attributes
+ struct tm* GetGmtTm(struct tm* ptm = NULL) const;
+ struct tm* GetLocalTm(struct tm* ptm = NULL) const;
+
+ time_t GetTime() const;
+ int GetYear() const;
+ int GetMonth() const; // month of year (1 = Jan)
+ int GetDay() const; // day of month
+ int GetHour() const;
+ int GetMinute() const;
+ int GetSecond() const;
+ int GetDayOfWeek() const; // 1=Sun, 2=Mon, ..., 7=Sat
+
+// Operations
+ // time math
+ CTimeSpan operator-(CTime time) const;
+ CTime operator-(CTimeSpan timeSpan) const;
+ CTime operator+(CTimeSpan timeSpan) const;
+ const CTime& operator+=(CTimeSpan timeSpan);
+ const CTime& operator-=(CTimeSpan timeSpan);
+ BOOL operator==(CTime time) const;
+ BOOL operator!=(CTime time) const;
+ BOOL operator<(CTime time) const;
+ BOOL operator>(CTime time) const;
+ BOOL operator<=(CTime time) const;
+ BOOL operator>=(CTime time) const;
+
+ // formatting using "C" strftime
+ CString Format(LPCSTR pFormat) const;
+ CString FormatGmt(LPCSTR pFormat) const;
+ // Note: for _UNICODE variant, pFormat is still 'char'
+
+ // serialization
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc, CTime time);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, CTime time);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CTime& rtime);
+
+private:
+ time_t m_time;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// File status
+
+struct CFileStatus
+{
+ CTime m_ctime; // creation date/time of file
+ CTime m_mtime; // last modification date/time of file
+ CTime m_atime; // last access date/time of file
+ LONG m_size; // logical size of file in bytes
+ BYTE m_attribute; // logical OR of CFile::Attribute enum values
+ BYTE _m_padding; // pad the structure to a WORD
+ TCHAR m_szFullName[_MAX_PATH]; // absolute path name
+
+#ifdef _DEBUG
+ void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic memory management routines
+
+// Low level sanity checks for memory blocks
+BOOL AFXAPI AfxIsValidAddress(const void* lp,
+ UINT nBytes, BOOL bReadWrite = TRUE);
+BOOL AFXAPI AfxIsValidString(LPCWSTR lpsz, int nLength = -1);
+BOOL AFXAPI AfxIsValidString(LPCSTR lpsz, int nLength = -1);
+
+#ifdef _DEBUG
+// Memory tracking allocation
+void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
+#define DEBUG_NEW new(THIS_FILE, __LINE__)
+
+void* AfxAllocMemoryDebug(size_t nSize, BOOL bIsObject,
+ LPCSTR lpszFileName, int nLine);
+void AfxFreeMemoryDebug(void* pbData, BOOL bIsObject);
+
+// Dump any memory leaks since program started
+BOOL AFXAPI AfxDumpMemoryLeaks();
+
+// Return TRUE if valid memory block of nBytes
+BOOL AFXAPI AfxIsMemoryBlock(const void* p, UINT nBytes,
+ LONG* plRequestNumber = NULL);
+
+// Return TRUE if memory is sane or print out what is wrong
+BOOL AFXAPI AfxCheckMemory();
+
+// Options for tuning the allocation diagnostics
+#if defined(_WINDLL) || defined(_AFXDLL)
+#define afxMemDF AfxGetAllocState()->m_nMemDF
+#else
+extern AFX_DATA int afxMemDF;
+#endif
+
+enum AfxMemDF // memory debug/diagnostic flags
+{
+ allocMemDF = 0x01, // turn on debugging allocator
+ delayFreeMemDF = 0x02, // delay freeing memory
+ checkAlwaysMemDF = 0x04 // AfxCheckMemory on every alloc/free
+};
+
+// Advanced initialization: for overriding default diagnostics
+BOOL AFXAPI AfxDiagnosticInit(void);
+
+// turn on/off tracking for a short while
+BOOL AFXAPI AfxEnableMemoryTracking(BOOL bTrack);
+
+// Memory allocator failure simulation and control (_DEBUG only)
+
+// A failure hook returns whether to permit allocation
+typedef BOOL (AFXAPI* AFX_ALLOC_HOOK)(size_t nSize, BOOL bObject, LONG lRequestNumber);
+
+// Set new hook, return old (never NULL)
+AFX_ALLOC_HOOK AFXAPI AfxSetAllocHook(AFX_ALLOC_HOOK pfnAllocHook);
+
+// Debugger hook on specified allocation request - Obsolete
+void AFXAPI AfxSetAllocStop(LONG lRequestNumber);
+
+struct CBlockHeader;
+
+// Memory state for snapshots/leak detection
+struct CMemoryState
+{
+// Attributes
+ enum blockUsage
+ {
+ freeBlock, // memory not used
+ objectBlock, // contains a CObject derived class object
+ bitBlock, // contains ::operator new data
+ nBlockUseMax // total number of usages
+ };
+
+ CBlockHeader* m_pBlockHeader;
+ LONG m_lCounts[nBlockUseMax];
+ LONG m_lSizes[nBlockUseMax];
+ LONG m_lHighWaterCount;
+ LONG m_lTotalCount;
+
+ CMemoryState();
+
+// Operations
+ void Checkpoint(); // fill with current state
+ BOOL Difference(const CMemoryState& oldState,
+ const CMemoryState& newState); // fill with difference
+
+ // Output to afxDump
+ void DumpStatistics() const;
+ void DumpAllObjectsSince() const;
+};
+
+// Enumerate allocated objects or runtime classes
+void AFXAPI AfxDoForAllObjects(void (*pfn)(CObject* pObject, void* pContext),
+ void* pContext);
+void AFXAPI AfxDoForAllClasses(void (*pfn)(const CRuntimeClass* pClass,
+ void* pContext), void* pContext);
+
+#else
+
+// non-_DEBUG version that assume everything is OK
+#define DEBUG_NEW new
+#define AfxCheckMemory() TRUE
+#define AfxIsMemoryBlock(p, nBytes) TRUE
+#define AfxEnableMemoryTracking(bTrack) FALSE
+
+#endif // _DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// Archives for serializing CObject data
+
+// needed for implementation
+class CPtrArray;
+class CMapPtrToPtr;
+class CDocument;
+
+class CArchive
+{
+public:
+// Flag values
+ enum Mode { store = 0, load = 1, bNoFlushOnDelete = 2, bNoByteSwap = 4 };
+
+ CArchive(CFile* pFile, UINT nMode, int nBufSize = 512, void* lpBuf = NULL);
+ ~CArchive();
+
+// Attributes
+ BOOL IsLoading() const;
+ BOOL IsStoring() const;
+ BOOL IsBufferEmpty() const;
+ CFile* GetFile() const;
+ UINT GetObjectSchema(); // only valid when reading a CObject*
+
+ CDocument* m_pDocument;
+ // pointer to document being serialized -- must set to serialize
+ // COleClientItems in a document!
+
+// Operations
+ UINT Read(void* lpBuf, UINT nMax);
+ void Write(const void* lpBuf, UINT nMax);
+ void Flush();
+ void Close();
+
+public:
+ // Object I/O is pointer based to avoid added construction overhead.
+ // Use the Serialize member function directly for embedded objects.
+ friend CArchive& AFXAPI operator<<(CArchive& ar, const CObject* pOb);
+
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CObject*& pOb);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, const CObject*& pOb);
+
+ // insertion operations
+ // NOTE: operators available only for fixed size types for portability
+ CArchive& operator<<(BYTE by);
+ CArchive& operator<<(WORD w);
+ CArchive& operator<<(LONG l);
+ CArchive& operator<<(DWORD dw);
+ CArchive& operator<<(float f);
+ CArchive& operator<<(double d);
+
+ // extraction operations
+ // NOTE: operators available only for fixed size types for portability
+ CArchive& operator>>(BYTE& by);
+ CArchive& operator>>(WORD& w);
+ CArchive& operator>>(DWORD& dw);
+ CArchive& operator>>(LONG& l);
+ CArchive& operator>>(float& f);
+ CArchive& operator>>(double& d);
+
+ CObject* ReadObject(const CRuntimeClass* pClass);
+ void WriteObject(const CObject* pOb);
+
+// Implementation
+public:
+ BOOL m_bForceFlat; // for COleClientItem implementation (default TRUE)
+ BOOL m_bDirectBuffer; // TRUE if m_pFile supports direct buffering
+ void FillBuffer(UINT nBytesNeeded);
+ void Abort(); // close and completely shutdown
+
+protected:
+ // archive objects cannot be copied or assigned
+ CArchive(const CArchive& arSrc);
+ void operator=(const CArchive& arSrc);
+
+ BOOL m_nMode;
+ BOOL m_bUserBuf;
+ int m_nBufSize;
+ CFile* m_pFile;
+ BYTE* m_lpBufCur;
+ BYTE* m_lpBufMax;
+ BYTE* m_lpBufStart;
+
+ UINT m_nObjectSchema;
+
+ UINT m_nMapCount; // count and map used when storing
+ union
+ {
+ CPtrArray* m_pLoadArray;
+ CMapPtrToPtr* m_pStoreMap;
+ };
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic dumping
+
+class CDumpContext
+{
+public:
+ CDumpContext(CFile* pFile);
+
+// Attributes
+ int GetDepth() const; // 0 => this object, 1 => children objects
+ void SetDepth(int nNewDepth);
+
+// Operations
+ CDumpContext& operator<<(LPCTSTR lpsz);
+#ifdef _UNICODE
+ CDumpContext& operator<<(LPCSTR lpsz); // automatically widened
+#else
+ CDumpContext& operator<<(LPCWSTR lpsz); // automatically thinned
+#endif
+ CDumpContext& operator<<(const void* lp);
+ CDumpContext& operator<<(const CObject* pOb);
+ CDumpContext& operator<<(const CObject& ob);
+ CDumpContext& operator<<(BYTE by);
+ CDumpContext& operator<<(WORD w);
+ CDumpContext& operator<<(UINT u);
+ CDumpContext& operator<<(LONG l);
+ CDumpContext& operator<<(DWORD dw);
+ CDumpContext& operator<<(float f);
+ CDumpContext& operator<<(double d);
+ CDumpContext& operator<<(int n);
+ void HexDump(LPCTSTR lpszLine, BYTE* pby, int nBytes, int nWidth);
+ void Flush();
+
+// Implementation
+protected:
+ // dump context objects cannot be copied or assigned
+ CDumpContext(const CDumpContext& dcSrc);
+ void operator=(const CDumpContext& dcSrc);
+ void OutputString(LPCTSTR lpsz);
+
+ int m_nDepth;
+
+public:
+ CFile* m_pFile;
+};
+
+#ifdef _DEBUG
+#define afxDump AfxGetAllocState()->m_afxDump
+#define afxTraceEnabled AfxGetAllocState()->m_bTraceEnabled
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Special include for Win32s compatibility
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifndef __AFXCOLL_H__
+ #include <afxcoll.h>
+ #ifndef __AFXSTATE_H__
+ #include <afxstat_.h> // for AFX_APP_STATE and AFX_THREAD_STATE
+ #endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFX_INLINE inline
+#include <afx.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif // __AFX_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afx.inl b/public/sdk/inc/mfc30/afx.inl
new file mode 100644
index 000000000..133a14d90
--- /dev/null
+++ b/public/sdk/inc/mfc30/afx.inl
@@ -0,0 +1,368 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFX.H
+
+#ifdef _AFX_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+
+// CObject
+_AFX_INLINE CObject::CObject()
+ { }
+_AFX_INLINE CObject::~CObject()
+ { }
+_AFX_INLINE void CObject::Serialize(CArchive&)
+ { /* CObject does not serialize anything by default */ }
+_AFX_INLINE void* CObject::operator new(size_t, void* p)
+ { return p; }
+#ifndef _DEBUG
+// _DEBUG versions in memory.cpp
+_AFX_INLINE void CObject::operator delete(void* p)
+ { ::operator delete(p); }
+_AFX_INLINE void* CObject::operator new(size_t nSize)
+ { return ::operator new(nSize); }
+// _DEBUG versions in objcore.cpp
+_AFX_INLINE void CObject::AssertValid() const
+ { /* no asserts in release builds */ }
+_AFX_INLINE void CObject::Dump(CDumpContext&) const
+ { /* no dumping in release builds */ }
+#endif
+
+
+// exceptions
+_AFX_INLINE CException::~CException()
+ { }
+_AFX_INLINE CMemoryException::CMemoryException()
+ { }
+_AFX_INLINE CMemoryException::CMemoryException(BOOL bAutoDelete)
+ : CException(bAutoDelete) { }
+_AFX_INLINE CMemoryException::~CMemoryException()
+ { }
+_AFX_INLINE CNotSupportedException::CNotSupportedException()
+ { }
+_AFX_INLINE CNotSupportedException::CNotSupportedException(BOOL bAutoDelete)
+ : CException(bAutoDelete) { }
+_AFX_INLINE CNotSupportedException::~CNotSupportedException()
+ { }
+_AFX_INLINE CArchiveException::CArchiveException(int cause)
+ { m_cause = cause; }
+_AFX_INLINE CArchiveException::~CArchiveException()
+ { }
+_AFX_INLINE CFileException::CFileException(int cause, LONG lOsError)
+ { m_cause = cause; m_lOsError = lOsError; }
+_AFX_INLINE CFileException::~CFileException()
+ { }
+#ifndef _DEBUG
+// Note: _DEBUG version in except.cpp
+_AFX_INLINE void AFX_CDECL CException::operator delete(void* pbData)
+ { CObject::operator delete(pbData); }
+#endif
+
+// CFile
+_AFX_INLINE DWORD CFile::ReadHuge(void* lpBuffer, DWORD dwCount)
+ { return (DWORD)Read(lpBuffer, (UINT)dwCount); }
+_AFX_INLINE void CFile::WriteHuge(const void* lpBuffer, DWORD dwCount)
+ { Write(lpBuffer, (UINT)dwCount); }
+
+_AFX_INLINE DWORD CFile::SeekToEnd()
+ { return Seek(0, CFile::end); }
+_AFX_INLINE void CFile::SeekToBegin()
+ { Seek(0, CFile::begin); }
+
+// CString
+_AFX_INLINE CString::CString(const unsigned char* lpsz)
+ { Init(); *this = (LPCSTR)lpsz; }
+_AFX_INLINE const CString& CString::operator=(const unsigned char* lpsz)
+ { *this = (LPCSTR)lpsz; return *this; }
+#ifdef _UNICODE
+_AFX_INLINE const CString& CString::operator+=(char ch)
+ { *this += (TCHAR)ch; return *this; }
+_AFX_INLINE const CString& CString::operator=(char ch)
+ { *this = (TCHAR)ch; return *this; }
+_AFX_INLINE CString AFXAPI operator+(const CString& string, char ch)
+ { return string + (TCHAR)ch; }
+_AFX_INLINE CString AFXAPI operator+(char ch, const CString& string)
+ { return (TCHAR)ch + string; }
+#endif
+
+_AFX_INLINE int CString::GetLength() const
+ { return m_nDataLength; }
+_AFX_INLINE int CString::GetAllocLength() const
+ { return m_nAllocLength; }
+_AFX_INLINE BOOL CString::IsEmpty() const
+ { return m_nDataLength == 0; }
+_AFX_INLINE CString::operator LPCTSTR() const
+ { return (LPCTSTR)m_pchData; }
+_AFX_INLINE int CString::SafeStrlen(LPCTSTR lpsz)
+ { return (lpsz == NULL) ? NULL : _tcslen(lpsz); }
+
+// CString support (windows specific)
+_AFX_INLINE int CString::Compare(LPCTSTR lpsz) const
+ { return _tcscmp(m_pchData, lpsz); } // MBCS/Unicode aware
+_AFX_INLINE int CString::CompareNoCase(LPCTSTR lpsz) const
+ { return _tcsicmp(m_pchData, lpsz); } // MBCS/Unicode aware
+// CString::Collate is often slower than Compare but is MBSC/Unicode
+// aware as well as locale-sensitive with respect to sort order.
+_AFX_INLINE int CString::Collate(LPCTSTR lpsz) const
+ { return _tcscoll(m_pchData, lpsz); } // locale sensitive
+_AFX_INLINE void CString::MakeUpper()
+ { ::CharUpper(m_pchData); }
+_AFX_INLINE void CString::MakeLower()
+ { ::CharLower(m_pchData); }
+
+_AFX_INLINE void CString::MakeReverse()
+ { _tcsrev(m_pchData); }
+_AFX_INLINE TCHAR CString::GetAt(int nIndex) const
+ {
+ ASSERT(nIndex >= 0);
+ ASSERT(nIndex < m_nDataLength);
+
+ return m_pchData[nIndex];
+ }
+_AFX_INLINE TCHAR CString::operator[](int nIndex) const
+ {
+ // same as GetAt
+
+ ASSERT(nIndex >= 0);
+ ASSERT(nIndex < m_nDataLength);
+
+ return m_pchData[nIndex];
+ }
+_AFX_INLINE void CString::SetAt(int nIndex, TCHAR ch)
+ {
+ ASSERT(nIndex >= 0);
+ ASSERT(nIndex < m_nDataLength);
+ ASSERT(ch != 0);
+
+ m_pchData[nIndex] = ch;
+ }
+_AFX_INLINE BOOL AFXAPI operator==(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) == 0; }
+_AFX_INLINE BOOL AFXAPI operator==(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) == 0; }
+_AFX_INLINE BOOL AFXAPI operator==(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) == 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) != 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) != 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) != 0; }
+_AFX_INLINE BOOL AFXAPI operator<(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) <= 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) <= 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) <= 0; }
+
+#ifndef _UNICODE
+_AFX_INLINE void CString::AnsiToOem()
+ { ::AnsiToOem(m_pchData, m_pchData); }
+_AFX_INLINE void CString::OemToAnsi()
+ { ::OemToAnsi(m_pchData, m_pchData); }
+#endif
+
+// CTime and CTimeSpan
+_AFX_INLINE CTimeSpan::CTimeSpan()
+ { }
+_AFX_INLINE CTimeSpan::CTimeSpan(time_t time)
+ { m_timeSpan = time; }
+_AFX_INLINE CTimeSpan::CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs)
+ { m_timeSpan = nSecs + 60* (nMins + 60* (nHours + 24* lDays)); }
+_AFX_INLINE CTimeSpan::CTimeSpan(const CTimeSpan& timeSpanSrc)
+ { m_timeSpan = timeSpanSrc.m_timeSpan; }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator=(const CTimeSpan& timeSpanSrc)
+ { m_timeSpan = timeSpanSrc.m_timeSpan; return *this; }
+_AFX_INLINE LONG CTimeSpan::GetDays() const
+ { return m_timeSpan / (24*3600L); }
+_AFX_INLINE LONG CTimeSpan::GetTotalHours() const
+ { return m_timeSpan/3600; }
+_AFX_INLINE int CTimeSpan::GetHours() const
+ { return (int)(GetTotalHours() - GetDays()*24); }
+_AFX_INLINE LONG CTimeSpan::GetTotalMinutes() const
+ { return m_timeSpan/60; }
+_AFX_INLINE int CTimeSpan::GetMinutes() const
+ { return (int)(GetTotalMinutes() - GetTotalHours()*60); }
+_AFX_INLINE LONG CTimeSpan::GetTotalSeconds() const
+ { return m_timeSpan; }
+_AFX_INLINE int CTimeSpan::GetSeconds() const
+ { return (int)(GetTotalSeconds() - GetTotalMinutes()*60); }
+_AFX_INLINE CTimeSpan CTimeSpan::operator-(CTimeSpan timeSpan) const
+ { return CTimeSpan(m_timeSpan - timeSpan.m_timeSpan); }
+_AFX_INLINE CTimeSpan CTimeSpan::operator+(CTimeSpan timeSpan) const
+ { return CTimeSpan(m_timeSpan + timeSpan.m_timeSpan); }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator+=(CTimeSpan timeSpan)
+ { m_timeSpan += timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator-=(CTimeSpan timeSpan)
+ { m_timeSpan -= timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE BOOL CTimeSpan::operator==(CTimeSpan timeSpan) const
+ { return m_timeSpan == timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator!=(CTimeSpan timeSpan) const
+ { return m_timeSpan != timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator<(CTimeSpan timeSpan) const
+ { return m_timeSpan < timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator>(CTimeSpan timeSpan) const
+ { return m_timeSpan > timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator<=(CTimeSpan timeSpan) const
+ { return m_timeSpan <= timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator>=(CTimeSpan timeSpan) const
+ { return m_timeSpan >= timeSpan.m_timeSpan; }
+
+
+_AFX_INLINE CTime::CTime()
+ { }
+_AFX_INLINE CTime::CTime(time_t time)
+ { m_time = time; }
+_AFX_INLINE CTime::CTime(const CTime& timeSrc)
+ { m_time = timeSrc.m_time; }
+_AFX_INLINE const CTime& CTime::operator=(const CTime& timeSrc)
+ { m_time = timeSrc.m_time; return *this; }
+_AFX_INLINE const CTime& CTime::operator=(time_t t)
+ { m_time = t; return *this; }
+_AFX_INLINE time_t CTime::GetTime() const
+ { return m_time; }
+_AFX_INLINE int CTime::GetYear() const
+ { return (GetLocalTm(NULL)->tm_year) + 1900; }
+_AFX_INLINE int CTime::GetMonth() const
+ { return GetLocalTm(NULL)->tm_mon + 1; }
+_AFX_INLINE int CTime::GetDay() const
+ { return GetLocalTm(NULL)->tm_mday; }
+_AFX_INLINE int CTime::GetHour() const
+ { return GetLocalTm(NULL)->tm_hour; }
+_AFX_INLINE int CTime::GetMinute() const
+ { return GetLocalTm(NULL)->tm_min; }
+_AFX_INLINE int CTime::GetSecond() const
+ { return GetLocalTm(NULL)->tm_sec; }
+_AFX_INLINE int CTime::GetDayOfWeek() const
+ { return GetLocalTm(NULL)->tm_wday + 1; }
+_AFX_INLINE CTimeSpan CTime::operator-(CTime time) const
+ { return CTimeSpan(m_time - time.m_time); }
+_AFX_INLINE CTime CTime::operator-(CTimeSpan timeSpan) const
+ { return CTime(m_time - timeSpan.m_timeSpan); }
+_AFX_INLINE CTime CTime::operator+(CTimeSpan timeSpan) const
+ { return CTime(m_time + timeSpan.m_timeSpan); }
+_AFX_INLINE const CTime& CTime::operator+=(CTimeSpan timeSpan)
+ { m_time += timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE const CTime& CTime::operator-=(CTimeSpan timeSpan)
+ { m_time -= timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE BOOL CTime::operator==(CTime time) const
+ { return m_time == time.m_time; }
+_AFX_INLINE BOOL CTime::operator!=(CTime time) const
+ { return m_time != time.m_time; }
+_AFX_INLINE BOOL CTime::operator<(CTime time) const
+ { return m_time < time.m_time; }
+_AFX_INLINE BOOL CTime::operator>(CTime time) const
+ { return m_time > time.m_time; }
+_AFX_INLINE BOOL CTime::operator<=(CTime time) const
+ { return m_time <= time.m_time; }
+_AFX_INLINE BOOL CTime::operator>=(CTime time) const
+ { return m_time >= time.m_time; }
+
+
+// CArchive
+_AFX_INLINE BOOL CArchive::IsLoading() const
+ { return (m_nMode & CArchive::load) != 0; }
+_AFX_INLINE BOOL CArchive::IsStoring() const
+ { return (m_nMode & CArchive::load) == 0; }
+_AFX_INLINE BOOL CArchive::IsBufferEmpty() const
+ { return m_lpBufCur == m_lpBufMax; }
+_AFX_INLINE CFile* CArchive::GetFile() const
+ { return m_pFile; }
+_AFX_INLINE CArchive& CArchive::operator<<(BYTE by)
+ { if (m_lpBufCur + sizeof(BYTE) > m_lpBufMax) Flush();
+ *(UNALIGNED BYTE*)m_lpBufCur = by; m_lpBufCur += sizeof(BYTE); return *this; }
+#ifndef _MAC
+_AFX_INLINE CArchive& CArchive::operator<<(WORD w)
+ { if (m_lpBufCur + sizeof(WORD) > m_lpBufMax) Flush();
+ *(UNALIGNED WORD*)m_lpBufCur = w; m_lpBufCur += sizeof(WORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(LONG l)
+ { if (m_lpBufCur + sizeof(LONG) > m_lpBufMax) Flush();
+ *(UNALIGNED LONG*)m_lpBufCur = l; m_lpBufCur += sizeof(LONG); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(DWORD dw)
+ { if (m_lpBufCur + sizeof(DWORD) > m_lpBufMax) Flush();
+ *(UNALIGNED DWORD*)m_lpBufCur = dw; m_lpBufCur += sizeof(DWORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(float f)
+ { if (m_lpBufCur + sizeof(float) > m_lpBufMax) Flush();
+ *(UNALIGNED _AFX_FLOAT*)m_lpBufCur = *(_AFX_FLOAT*)&f; m_lpBufCur += sizeof(float); return *this;
+ }
+_AFX_INLINE CArchive& CArchive::operator<<(double d)
+ { if (m_lpBufCur + sizeof(double) > m_lpBufMax) Flush();
+ *(UNALIGNED _AFX_DOUBLE*)m_lpBufCur = *(_AFX_DOUBLE*)&d; m_lpBufCur += sizeof(double); return *this; }
+#endif
+_AFX_INLINE CArchive& CArchive::operator>>(BYTE& by)
+ { if (m_lpBufCur + sizeof(BYTE) > m_lpBufMax)
+ FillBuffer(sizeof(BYTE) - (UINT)(m_lpBufMax - m_lpBufCur));
+ by = *(UNALIGNED BYTE*)m_lpBufCur; m_lpBufCur += sizeof(BYTE); return *this; }
+#ifndef _MAC
+_AFX_INLINE CArchive& CArchive::operator>>(WORD& w)
+ { if (m_lpBufCur + sizeof(WORD) > m_lpBufMax)
+ FillBuffer(sizeof(WORD) - (UINT)(m_lpBufMax - m_lpBufCur));
+ w = *(UNALIGNED WORD*)m_lpBufCur; m_lpBufCur += sizeof(WORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(DWORD& dw)
+ { if (m_lpBufCur + sizeof(DWORD) > m_lpBufMax)
+ FillBuffer(sizeof(DWORD) - (UINT)(m_lpBufMax - m_lpBufCur));
+ dw = *(UNALIGNED DWORD*)m_lpBufCur; m_lpBufCur += sizeof(DWORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(float& f)
+ { if (m_lpBufCur + sizeof(float) > m_lpBufMax)
+ FillBuffer(sizeof(float) - (UINT)(m_lpBufMax - m_lpBufCur));
+ *(_AFX_FLOAT*)&f = *(UNALIGNED _AFX_FLOAT*)m_lpBufCur; m_lpBufCur += sizeof(float); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(double& d)
+ { if (m_lpBufCur + sizeof(double) > m_lpBufMax)
+ FillBuffer(sizeof(double) - (UINT)(m_lpBufMax - m_lpBufCur));
+ *(_AFX_DOUBLE*)&d = *(UNALIGNED _AFX_DOUBLE*)m_lpBufCur; m_lpBufCur += sizeof(double); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(LONG& l)
+ { if (m_lpBufCur + sizeof(LONG) > m_lpBufMax)
+ FillBuffer(sizeof(LONG) - (UINT)(m_lpBufMax - m_lpBufCur));
+ l = *(UNALIGNED LONG*)m_lpBufCur; m_lpBufCur += sizeof(LONG); return *this; }
+#endif
+_AFX_INLINE CArchive::CArchive(const CArchive& /* arSrc */)
+ { }
+_AFX_INLINE void CArchive::operator=(const CArchive& /* arSrc */)
+ { }
+_AFX_INLINE CArchive& AFXAPI operator<<(CArchive& ar, const CObject* pOb)
+ { ar.WriteObject(pOb); return ar; }
+_AFX_INLINE CArchive& AFXAPI operator>>(CArchive& ar, CObject*& pOb)
+ { pOb = ar.ReadObject(NULL); return ar; }
+_AFX_INLINE CArchive& AFXAPI operator>>(CArchive& ar, const CObject*& pOb)
+ { pOb = ar.ReadObject(NULL); return ar; }
+
+
+// CDumpContext
+_AFX_INLINE int CDumpContext::GetDepth() const
+ { return m_nDepth; }
+_AFX_INLINE void CDumpContext::SetDepth(int nNewDepth)
+ { m_nDepth = nNewDepth; }
+_AFX_INLINE CDumpContext::CDumpContext(const CDumpContext& /* dcSrc */)
+ { }
+_AFX_INLINE void CDumpContext::operator=(const CDumpContext& /* dcSrc */)
+ { }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFX_INLINE
diff --git a/public/sdk/inc/mfc30/afxaete.r b/public/sdk/inc/mfc30/afxaete.r
new file mode 100644
index 000000000..158ab13a9
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxaete.r
@@ -0,0 +1,92 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1994 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXAETE_R__
+#define __AFXAETE_R__
+
+#include "mrc\Types.r"
+#include "mrc\SysTypes.r"
+#include "mrc\AppleEve.r"
+#include "mrc\AERegist.r"
+#include "mrc\AEUserTe.r"
+
+
+resource 'aete' (0)
+{
+ 1,
+ 0,
+ langEnglish,
+ smRoman,
+ {
+ "Required Suite",
+ "Terms that every application should support",
+ kAERequiredSuite,
+ 1,
+ 1,
+ {}, {}, {}, {},
+
+ "MFC Suite",
+ "Terms supported by MFC applications",
+ '****',
+ 1,
+ 1,
+ {
+ "quit",
+ "Quit an application program",
+ kAERequiredSuite,
+ kAEQuitApplication,
+ noReply,
+ "",
+ replyOptional,
+ singleItem,
+ notEnumerated,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved,
+ verbEvent,
+ reserved, reserved, reserved,
+ noParams,
+ "",
+ directParamOptional,
+ singleItem,
+ notEnumerated,
+ changesState,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved,
+ {
+ "saving",
+ keyAESaveOptions,
+ enumSaveOptions,
+ "specifies whether to save currently open documents",
+ optional,
+ singleItem,
+ enumerated,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved,
+ prepositionParam,
+ notFeminine,
+ notMasculine,
+ singular
+ },
+ },
+ {}, {},
+ {
+ enumSaveOptions,
+ {
+ "yes", kAEYes, "Save objects now",
+ "no", kAENo, "Do not save objects",
+ "ask", kAEAsk, "Ask the user whether to save"
+ },
+ }
+ }
+};
+
+
+#endif
diff --git a/public/sdk/inc/mfc30/afxcmn.h b/public/sdk/inc/mfc30/afxcmn.h
new file mode 100644
index 000000000..ee2e7149d
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxcmn.h
@@ -0,0 +1,709 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCMN_H__
+#define __AFXCMN_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+#ifndef _INC_COMMCTRL
+ #include <commctrl.h>
+#endif
+
+#ifndef IMAGE_BITMAP
+#define IMAGE_BITMAP 0
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #ifdef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "eafxccud.lib")
+ #else
+ #pragma comment(lib, "eafxccu.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "eafxccd.lib")
+ #else
+ #pragma comment(lib, "eafxcc.lib")
+ #endif
+ #endif
+#else
+ #ifdef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "nafxccud.lib")
+ #else
+ #pragma comment(lib, "nafxccu.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "nafxccd.lib")
+ #else
+ #pragma comment(lib, "nafxcc.lib")
+ #endif
+ #endif
+#endif
+
+#pragma comment(lib, "comctl32.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXCMN - MFC COMCTL32 Control Classes
+
+// Classes declared in this file
+
+//CObject
+ class CImageList;
+ //CCmdTarget;
+ //CWnd
+ class CListCtrl;
+ class CTreeCtrl;
+ class CSpinButtonCtrl;
+ class CHeaderCtrl;
+ class CSliderCtrl;
+ class CProgressCtrl;
+ class CHotKeyCtrl;
+ class CToolTipCtrl;
+ class CTabCtrl;
+ class CAnimateCtrl;
+ class CToolBarCtrl;
+ class CStatusBarCtrl;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CStatusBarCtrl
+
+class CStatusBarCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CStatusBarCtrl)
+
+// Constructors
+public:
+ CStatusBarCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL SetText(LPCTSTR lpszText, int nPane, int nType);
+ int GetText(LPCTSTR lpszText, int nPane, int* pType = NULL);
+ int GetTextLength(int nPane, int* pType = NULL);
+ BOOL SetParts(int nParts, int* pWidths);
+ BOOL SetBorders(int* pBorders);
+ BOOL SetBorders(int nHorz, int nVert, int nSpacing);
+ int GetParts(int nParts, int* pParts);
+ BOOL GetBorders(int* pBorders);
+ BOOL GetBorders(int& nHorz, int& nVert, int& nSpacing);
+ void SetMinHeight(int nMin);
+ BOOL SetSimple(BOOL bSimple = TRUE);
+ BOOL GetRect(int nPane, LPRECT lpRect);
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CStatusBarCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CListCtrl
+
+class CListCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CListCtrl)
+
+// Constructors
+public:
+ CListCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ COLORREF GetBkColor();
+ BOOL SetBkColor(COLORREF cr);
+ CImageList* GetImageList(int nImageList);
+ CImageList* SetImageList(CImageList* pImageList, int nImageList);
+ int GetItemCount();
+ BOOL GetItem(LV_ITEM* pItem);
+ BOOL SetItem(const LV_ITEM* pItem);
+ UINT GetCallbackMask();
+ BOOL SetCallbackMask(UINT nMask);
+ int GetNextItem(int nItem, int nFlags);
+ BOOL GetItemRect(int nItem, LPRECT lpRect, UINT nCode);
+ BOOL SetItemPosition(int nItem, POINT pt);
+ BOOL GetItemPosition(int nItem, LPPOINT lpPoint);
+ int GetStringWidth(LPCTSTR lpsz);
+ CEdit* GetEditControl();
+ BOOL GetColumn(int nCol, LV_COLUMN* pColumn);
+ BOOL SetColumn(int nCol, const LV_COLUMN* pColumn);
+ int GetColumnWidth(int nCol);
+ BOOL SetColumnWidth(int nCol, int cx);
+ BOOL GetViewRect(LPRECT lpRect);
+ COLORREF GetTextColor();
+ BOOL SetTextColor(COLORREF cr);
+ COLORREF GetTextBkColor();
+ BOOL SetTextBkColor(COLORREF cr);
+ int GetTopIndex();
+ int GetCountPerPage();
+ BOOL GetOrigin(LPPOINT lpPoint);
+ BOOL SetItemState(int nItem, LV_ITEM* pItem);
+ BOOL SetItemState(int nItem, UINT nState, UINT nMask);
+ UINT GetItemState(int nItem, UINT nMask);
+ int GetItemText(int nItem, int nSubItem, LPTSTR lpszText, int nLen);
+ BOOL SetItemText(int nItem, int nSubItem, LPTSTR lpszText);
+ void SetItemCount(int nItems);
+ UINT GetSelectedCount();
+
+// Operations
+ int InsertItem(const LV_ITEM* pItem);
+ BOOL DeleteItem(int nItem);
+ BOOL DeleteAllItems();
+ int FindItem(int nStart, LV_FINDINFO* pFindInfo);
+ int HitTest(LV_HITTESTINFO* pHitTestInfo);
+ int HitTest(CPoint pt, UINT* pFlags);
+ BOOL EnsureVisible(int nItem, BOOL bPartialOK);
+ BOOL Scroll(CSize size);
+ BOOL RedrawItems(int nFirst, int nLast);
+ BOOL Arrange(UINT nCode);
+ CEdit* EditLabel(int nItem);
+ int InsertColumn(int nCol, const LV_COLUMN* pColumn);
+ BOOL DeleteColumn(int nCol);
+ CImageList* CreateDragImage(int nItem, LPPOINT lpPoint);
+ BOOL Update(int nItem);
+ BOOL SortItems(PFNLVCOMPARE pfnCompare, DWORD dwData);
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CListCtrl();
+protected:
+ void RemoveImageList(int nImageList);
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+protected:
+ //{{AFX_MSG(CListCtrl)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTreeCtrl
+
+class CTreeCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CTreeCtrl)
+
+// Constructors
+public:
+ CTreeCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL GetItemRect(HTREEITEM hItem, LPRECT lpRect, BOOL bTextOnly);
+ UINT GetCount();
+ UINT GetIndent();
+ BOOL SetIndent(UINT nIndent);
+ CImageList* GetImageList(UINT nImage);
+ CImageList* SetImageList(UINT nImage, CImageList* pImageList);
+ HTREEITEM GetNextItem(HTREEITEM hItem, UINT nCode);
+ HTREEITEM GetChildItem(HTREEITEM hItem);
+ HTREEITEM GetNextSiblingItem(HTREEITEM hItem);
+ HTREEITEM GetPrevSiblingItem(HTREEITEM hItem);
+ HTREEITEM GetParentItem(HTREEITEM hItem);
+ HTREEITEM GetFirstVisibleItem();
+ HTREEITEM GetNextVisibleItem(HTREEITEM hItem);
+ HTREEITEM GetPrevVisibleItem(HTREEITEM hItem);
+ HTREEITEM GetSelectedItem();
+ HTREEITEM GetDropHilightItem();
+ HTREEITEM GetRootItem();
+ BOOL GetItem(TV_ITEM* pItem);
+ BOOL SetItem(TV_ITEM* pItem);
+ CEdit* GetEditControl();
+ UINT GetVisibleCount();
+
+// Operations
+ HTREEITEM InsertItem(LPTV_INSERTSTRUCT lpInsertStruct);
+ BOOL DeleteItem(HTREEITEM hItem);
+ BOOL DeleteAllItems();
+ BOOL Expand(HTREEITEM hItem, UINT nCode);
+ HTREEITEM Select(HTREEITEM hItem, UINT nCode);
+ HTREEITEM SelectItem(HTREEITEM hItem);
+ HTREEITEM SelectDropTarget(HTREEITEM hItem);
+ CEdit* EditLabel(HTREEITEM hItem);
+ HTREEITEM HitTest(CPoint pt, UINT* pFlags);
+ HTREEITEM HitTest(TV_HITTESTINFO* pHitTestInfo);
+ CImageList* CreateDragImage(HTREEITEM hItem);
+ BOOL SortChildren(HTREEITEM hItem, BOOL bRecurse);
+ BOOL EnsureVisible(HTREEITEM hItem);
+ BOOL SortChildrenCB(LPTV_SORTCB pSort, BOOL bRecurse);
+
+// Implementation
+protected:
+ void RemoveImageList(int nImageList);
+public:
+ virtual ~CTreeCtrl();
+ //{{AFX_MSG(CTreeCtrl)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSpinButtonCtrl
+
+class CSpinButtonCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CSpinButtonCtrl)
+
+// Constructors
+public:
+ CSpinButtonCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL SetAccel(int nAccel, UDACCEL* pAccel);
+ UINT GetAccel(int nAccel, UDACCEL* pAccel);
+ int SetBase(int nBase);
+ UINT GetBase();
+ CWnd* SetBuddy(CWnd* pWndBuddy);
+ CWnd* GetBuddy();
+ int SetPos(int nPos);
+ int GetPos();
+ void SetRange(int nLower, int nUpper);
+ DWORD GetRange();
+ void GetRange(int &lower, int& upper);
+
+// Implementation
+public:
+ virtual ~CSpinButtonCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSliderCtrl
+
+class CSliderCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CSliderCtrl)
+
+// Constructors
+public:
+ CSliderCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetLineSize();
+ int SetLineSize(int nSize);
+ int GetPageSize();
+ int SetPageSize(int nSize);
+ int GetRangeMax();
+ int GetRangeMin();
+ void GetRange(int& nMin, int& nMax);
+ void SetRangeMin(int nMin, BOOL bRedraw = FALSE);
+ void SetRangeMax(int nMax, BOOL bRedraw = FALSE);
+ void SetRange(int nMin, int nMax, BOOL bRedraw = FALSE);
+ void GetSelection(int& nMin, int& nMax);
+ void SetSelection(int nMin, int nMax);
+ void GetChannelRect(LPRECT lprc);
+ void GetThumbRect(LPRECT lprc);
+ int GetPos();
+ void SetPos(int nPos);
+ UINT GetNumTics();
+ DWORD* GetTicArray();
+ int GetTic(int nTic);
+ int GetTicPos(int nTic);
+ BOOL SetTic(int nTic);
+ void SetTicFreq(int nFreq);
+
+// Operations
+ void ClearSel(BOOL bRedraw = FALSE);
+ void VerifyPos();
+ void ClearTics(BOOL bRedraw = FALSE);
+
+// Implementation
+public:
+ virtual ~CSliderCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CProgressCtrl
+
+class CProgressCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CProgressCtrl)
+
+// Constructors
+public:
+ CProgressCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetRange(int nLower, int nUpper);
+ int SetPos(int nPos);
+ int OffsetPos(int nPos);
+ int SetStep(int nStep);
+
+// Operations
+ int StepIt();
+
+// Implementation
+public:
+ virtual ~CProgressCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CHeaderCtrl
+
+class CHeaderCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CHeaderCtrl)
+
+// Constructors
+public:
+ CHeaderCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetItemCount();
+ BOOL GetItem(int nPos, HD_ITEM* pHeaderItem);
+ BOOL SetItem(int nPos, HD_ITEM* pHeaderItem);
+
+// Operations
+ int InsertItem(int nPos, HD_ITEM* phdi);
+ BOOL DeleteItem(int nPos);
+ BOOL Layout(HD_LAYOUT* pHeaderLayout);
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CHeaderCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CHotKeyCtrl
+
+class CHotKeyCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CHotKeyCtrl)
+
+// Constructors
+public:
+ CHotKeyCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetHotKey(WORD wVirtualKeyCode, WORD wModifiers);
+ DWORD GetHotKey();
+ void GetHotKey(WORD &wVirtualKeyCode, WORD &wModifiers);
+
+// Operations
+ void SetRules(WORD wInvalidComb, WORD wModifiers);
+
+// Implementation
+public:
+ virtual ~CHotKeyCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolTipCtrl
+
+class CToolTipCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CToolTipCtrl)
+
+// Constructors
+public:
+ CToolTipCtrl();
+ BOOL Create(CWnd* pParentWnd);
+
+// Attributes
+ void GetText(CString& str, CWnd* pWnd, UINT nIDTool = 0);
+ BOOL GetToolInfo(LPTOOLINFO lpToolInfo, CWnd* pWnd, UINT nIDTool = 0);
+ void SetToolInfo(LPTOOLINFO lpToolInfo);
+ void SetToolRect(CWnd* pWnd, UINT nIDTool, LPCRECT lpRect);
+ int GetToolCount();
+
+// Operations
+ void Activate(BOOL bActivate);
+
+ BOOL AddTool(CWnd* pWnd, UINT nIDText, LPCRECT lpRectTool = NULL,
+ UINT nIDTool = 0);
+ BOOL AddTool(CWnd* pWnd, LPCTSTR lpszText = LPSTR_TEXTCALLBACK,
+ LPCRECT lpRectTool = NULL, UINT nIDTool = 0);
+
+ void DelTool(CWnd* pWnd, UINT nIDTool = 0);
+
+ BOOL HitTest(CWnd* pWnd, CPoint pt, LPTOOLINFO lpToolInfo);
+ void RelayEvent(LPMSG lpMsg);
+ void SetDelayTime(UINT nDelay);
+ void UpdateTipText(LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool = 0);
+ void UpdateTipText(UINT nIDText, CWnd* pWnd, UINT nIDTool = 0);
+
+// Implementation
+public:
+ void FillInToolInfo(TOOLINFO& ti, CWnd* pWnd, UINT nIDTool);
+ virtual ~CToolTipCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTabCtrl
+
+class CTabCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CTabCtrl)
+
+// Constructors
+public:
+ CTabCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ COLORREF GetBkColor();
+ BOOL SetBkColor(COLORREF cr);
+ CImageList* GetImageList();
+ CImageList* SetImageList(CImageList* pImageList);
+ int GetItemCount();
+ BOOL GetItem(int nItem, TC_ITEM* pTabCtrlItem);
+ BOOL SetItem(int nItem, TC_ITEM* pTabCtrlItem);
+ BOOL GetItemRect(int nItem, LPRECT lpRect);
+ int GetCurSel();
+ int SetCurSel(int nItem);
+ CSize SetItemSize(CSize size);
+ void SetPadding(CSize size);
+ int GetRowCount();
+ CToolTipCtrl* GetTooltips();
+ void SetTooltips(CToolTipCtrl* pWndTip);
+ int GetCurFocus();
+
+// Operations
+ BOOL InsertItem(int nItem, TC_ITEM* pTabCtrlItem);
+ BOOL DeleteItem(int nItem);
+ BOOL DeleteAllItems();
+ void AdjustRect(BOOL bLarger, LPRECT lpRect);
+ void RemoveImage(int nImage);
+ int HitTest(TC_HITTESTINFO* pHitTestInfo);
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CTabCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+ //{{AFX_MSG(CTabCtrl)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CAnimateCtrl
+
+class CAnimateCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CAnimateCtrl)
+
+// Constructors
+public:
+ CAnimateCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Operations
+ BOOL Open(LPCTSTR lpszFileName);
+ BOOL Open(UINT nID);
+ BOOL Play(UINT nFrom, UINT nTo, UINT nRep);
+ BOOL Stop();
+ BOOL Close();
+ BOOL Seek(UINT nTo);
+
+// Implementation
+public:
+ virtual ~CAnimateCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CImageList
+
+class CImageList : public CObject
+{
+ DECLARE_DYNCREATE(CImageList)
+
+// Constructors
+public:
+ CImageList();
+ BOOL Create(int cx, int cy, BOOL bMask, int nInitial, int nGrow);
+ BOOL Create(UINT nBitmapID, int cx, int nGrow, COLORREF crMask);
+ BOOL Create(LPCTSTR lpszBitmapID, int cx, int nGrow, COLORREF crMask);
+ BOOL Create(CImageList& imagelist1, int nImage1, CImageList& imagelist2,
+ int nImage2, int dx, int dy);
+
+// Attributes
+ HIMAGELIST m_hImageList; // must be first data member
+ HIMAGELIST GetSafeHandle() const;
+
+ static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);
+ static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HIMAGELIST hImageList);
+ HIMAGELIST Detach();
+
+ int GetImageCount();
+ COLORREF SetBkColor(COLORREF cr);
+ COLORREF GetBkColor();
+ BOOL GetImageInfo(int nImage, IMAGEINFO* pImageInfo);
+
+// Operations
+ BOOL DeleteImageList();
+
+ int Add(CBitmap* pbmImage, CBitmap* pbmMask);
+ int Add(CBitmap* pbmImage, COLORREF crMask);
+ BOOL Remove(int nImage);
+ BOOL Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask);
+ int Add(HICON hIcon);
+ int Replace(int nImage, HICON hIcon);
+ HICON ExtractIcon(int nImage);
+ BOOL Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle);
+ BOOL SetOverlayImage(int nImage, int nOverlay);
+
+ BOOL Read(CArchive* pArchive);
+ BOOL Write(CArchive* pArchive);
+
+// Drag APIs
+ BOOL BeginDrag(int nImage, CPoint ptHotSpot);
+ static void EndDrag();
+ static BOOL DragMove(CPoint pt);
+ BOOL SetDragCursorImage(int nDrag, CPoint ptHotSpot);
+ static BOOL DragShowNolock(BOOL bShow);
+ static CImageList* GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot);
+ static BOOL DragEnter(CWnd* pWndLock, CPoint point);
+ static BOOL DragLeave(CWnd* pWndLock);
+
+// Implementation
+public:
+ virtual ~CImageList();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolBarCtrl
+
+class CToolBarCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CToolBarCtrl)
+// Construction
+public:
+ CToolBarCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+public:
+ BOOL IsButtonEnabled(int nID);
+ BOOL IsButtonChecked(int nID);
+ BOOL IsButtonPressed(int nID);
+ BOOL IsButtonHidden(int nID);
+ BOOL IsButtonIndeterminate(int nID);
+ BOOL SetState(int nID, UINT nState);
+ int GetState(int nID);
+ BOOL GetButton(int nIndex, LPTBBUTTON lpButton);
+ int GetButtonCount();
+ BOOL GetItemRect(int nIndex, LPRECT lpRect);
+ void SetButtonStructSize(int nSize);
+ BOOL SetButtonSize(CSize size);
+ BOOL SetBitmapSize(CSize size);
+ CToolTipCtrl* GetToolTips();
+ void SetToolTips(CToolTipCtrl* pTip);
+ void SetOwner(CWnd* pWnd);
+ void SetRows(int nRows, BOOL bLarger, LPRECT lpRect);
+ int GetRows();
+ BOOL SetCmdID(int nIndex, UINT nID);
+ UINT GetBitmapFlags();
+
+// Operations
+public:
+ BOOL EnableButton(int nID, BOOL bEnable = TRUE);
+ BOOL CheckButton(int nID, BOOL bCheck = TRUE);
+ BOOL PressButton(int nID, BOOL bPress = TRUE);
+ BOOL HideButton(int nID, BOOL bHide = TRUE);
+ BOOL Indeterminate(int nID, BOOL bIndeterminate = TRUE);
+ int AddBitmap(int nNumButtons, UINT nBitmapID);
+ int AddBitmap(int nNumButtons, CBitmap* pBitmap);
+ BOOL AddButtons(int nNumButtons, LPTBBUTTON lpButtons);
+ BOOL InsertButton(int nIndex, LPTBBUTTON lpButton);
+ BOOL DeleteButton(int nIndex);
+ UINT CommandToIndex(UINT nID);
+ void SaveState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
+ LPCTSTR lpszValueName);
+ void RestoreState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
+ LPCTSTR lpszValueName);
+
+ void Customize();
+ int AddString(UINT nStringID);
+ int AddStrings(LPCTSTR lpszStrings);
+ void AutoSize();
+
+// Implementation
+public:
+ virtual ~CToolBarCtrl();
+
+protected:
+ //{{AFX_MSG(CToolBarCtrl)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCMN_INLINE inline
+#include <afxcmn.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXCMN_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxcmn.inl b/public/sdk/inc/mfc30/afxcmn.inl
new file mode 100644
index 000000000..a5bd0ea17
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxcmn.inl
@@ -0,0 +1,524 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCMN.H
+
+/////////////////////////////////////////////////////////////////////////////
+// main inlines
+
+#ifdef _AFXCMN_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CToolBarCtrl::CToolBarCtrl()
+ { }
+_AFXCMN_INLINE BOOL CToolBarCtrl::EnableButton(int nID, BOOL bEnable)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ENABLEBUTTON, nID, MAKELPARAM(bEnable, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::CheckButton(int nID, BOOL bCheck)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_CHECKBUTTON, nID, MAKELPARAM(bCheck, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::PressButton(int nID, BOOL bPress)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_PRESSBUTTON, nID, MAKELPARAM(bPress, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::HideButton(int nID, BOOL bHide)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_HIDEBUTTON, nID, MAKELPARAM(bHide, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::Indeterminate(int nID, BOOL bIndeterminate)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_INDETERMINATE, nID, MAKELPARAM(bIndeterminate, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonEnabled(int nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONENABLED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonChecked(int nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONCHECKED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonPressed(int nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONPRESSED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonHidden(int nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONHIDDEN, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonIndeterminate(int nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONINDETERMINATE, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetState(int nID, UINT nState)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETSTATE, nID, MAKELPARAM(nState, 0)); }
+_AFXCMN_INLINE int CToolBarCtrl::GetState(int nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_GETSTATE, nID, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::AddButtons(int nNumButtons, LPTBBUTTON lpButtons)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ADDBUTTONS, nNumButtons, (LPARAM)lpButtons); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::InsertButton(int nIndex, LPTBBUTTON lpButton)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_INSERTBUTTON, nIndex, (LPARAM)lpButton); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::DeleteButton(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_DELETEBUTTON, nIndex, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::GetButton(int nIndex, LPTBBUTTON lpButton)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_GETBUTTON, nIndex, (LPARAM)lpButton); }
+_AFXCMN_INLINE int CToolBarCtrl::GetButtonCount()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_BUTTONCOUNT, 0, 0L); }
+_AFXCMN_INLINE UINT CToolBarCtrl::CommandToIndex(UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TB_COMMANDTOINDEX, nID, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::Customize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_CUSTOMIZE, 0, 0L); }
+// lpszStrings are separated by zeroes, last one is marked by two zeroes
+_AFXCMN_INLINE int CToolBarCtrl::AddStrings(LPCTSTR lpszStrings)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_ADDSTRING, 0, (LPARAM)lpszStrings); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::GetItemRect(int nIndex, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_GETITEMRECT, nIndex, (LPARAM)lpRect); }
+_AFXCMN_INLINE void CToolBarCtrl::SetButtonStructSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_BUTTONSTRUCTSIZE, nSize, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetButtonSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETBUTTONSIZE, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetBitmapSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETBITMAPSIZE, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE void CToolBarCtrl::AutoSize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_AUTOSIZE, 0, 0L); }
+_AFXCMN_INLINE CToolTipCtrl* CToolBarCtrl::GetToolTips()
+ { ASSERT(::IsWindow(m_hWnd)); return (CToolTipCtrl*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TB_GETTOOLTIPS, 0, 0L)); }
+_AFXCMN_INLINE void CToolBarCtrl::SetToolTips(CToolTipCtrl* pTip)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETTOOLTIPS, (WPARAM)pTip->m_hWnd, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::SetOwner(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETPARENT, (WPARAM)pWnd->m_hWnd, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::SetRows(int nRows, BOOL bLarger, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETROWS, MAKELPARAM(nRows, bLarger), (LPARAM)lpRect); }
+_AFXCMN_INLINE int CToolBarCtrl::GetRows()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_GETROWS, 0, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetCmdID(int nIndex, UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETCMDID, nIndex, nID); }
+_AFXCMN_INLINE UINT CToolBarCtrl::GetBitmapFlags()
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TB_GETBITMAPFLAGS, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CStatusBarCtrl::CStatusBarCtrl()
+ { }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetText(LPCTSTR lpszText, int nPane, int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ASSERT(nPane < 256); return (BOOL) ::SendMessage(m_hWnd, SB_SETTEXT, (nPane|nType), (LPARAM)lpszText); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetParts(int nParts, int* pWidths)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_SETPARTS, nParts, (LPARAM)pWidths); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetBorders(int* pBorders)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_SETPARTS, 0, (LPARAM)pBorders); }
+_AFXCMN_INLINE int CStatusBarCtrl::GetParts(int nParts, int* pParts)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, SB_GETPARTS, nParts, (LPARAM)pParts); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::GetBorders(int* pBorders)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_GETBORDERS, 0, (LPARAM)pBorders); }
+_AFXCMN_INLINE void CStatusBarCtrl::SetMinHeight(int nMin)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, SB_SETMINHEIGHT, nMin, 0L); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetSimple(BOOL bSimple)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_SIMPLE, bSimple, 0L); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::GetRect(int nPane, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_GETRECT, nPane, (LPARAM)lpRect); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CListCtrl::CListCtrl()
+ { }
+_AFXCMN_INLINE COLORREF CListCtrl::GetBkColor()
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETBKCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetBkColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETBKCOLOR, 0, cr); }
+_AFXCMN_INLINE CImageList* CListCtrl::GetImageList(int nImageList)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, LVM_GETIMAGELIST, nImageList, 0L)); }
+_AFXCMN_INLINE CImageList* CListCtrl::SetImageList(CImageList* pImageList, int nImageList)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, LVM_SETIMAGELIST, nImageList, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE int CListCtrl::GetItemCount()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::GetItem(LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItem(const LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE int CListCtrl::InsertItem(const LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_INSERTITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteItem(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETEITEM, nItem, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETEALLITEMS, 0, 0L); }
+_AFXCMN_INLINE UINT CListCtrl::GetCallbackMask()
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETCALLBACKMASK, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetCallbackMask(UINT nMask)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCALLBACKMASK, nMask, 0); }
+_AFXCMN_INLINE int CListCtrl::GetNextItem(int nItem, int nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETNEXTITEM, nItem, MAKELPARAM(nFlags, 0)); }
+_AFXCMN_INLINE int CListCtrl::FindItem(int nStart, LV_FINDINFO* pFindInfo)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_FINDITEM, nStart, (LPARAM)pFindInfo); }
+_AFXCMN_INLINE int CListCtrl::HitTest(LV_HITTESTINFO* pHitTestInfo)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_HITTEST, 0, (LPARAM)pHitTestInfo); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemPosition(int nItem, POINT pt)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMPOSITION32, nItem, (LPARAM)&pt); }
+_AFXCMN_INLINE BOOL CListCtrl::GetItemPosition(int nItem, LPPOINT lpPoint)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETITEMPOSITION, nItem, (LPARAM)lpPoint); }
+_AFXCMN_INLINE int CListCtrl::GetStringWidth(LPCTSTR lpsz)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETSTRINGWIDTH, 0, (LPARAM)lpsz); }
+_AFXCMN_INLINE BOOL CListCtrl::EnsureVisible(int nItem, BOOL bPartialOK)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_ENSUREVISIBLE, nItem, MAKELPARAM(bPartialOK, 0)); }
+_AFXCMN_INLINE BOOL CListCtrl::Scroll(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SCROLL, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE BOOL CListCtrl::RedrawItems(int nFirst, int nLast)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_REDRAWITEMS, 0, MAKELPARAM(nFirst, nLast)); }
+_AFXCMN_INLINE BOOL CListCtrl::Arrange(UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_ARRANGE, nCode, 0L); }
+_AFXCMN_INLINE CEdit* CListCtrl::EditLabel(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle( (HWND)::SendMessage(m_hWnd, LVM_EDITLABEL, nItem, 0L)); }
+_AFXCMN_INLINE CEdit* CListCtrl::GetEditControl()
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle( (HWND)::SendMessage(m_hWnd, LVM_GETEDITCONTROL, 0, 0L)); }
+_AFXCMN_INLINE BOOL CListCtrl::GetColumn(int nCol, LV_COLUMN* pColumn)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE BOOL CListCtrl::SetColumn(int nCol, const LV_COLUMN* pColumn)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE int CListCtrl::InsertColumn(int nCol, const LV_COLUMN* pColumn)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_INSERTCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteColumn(int nCol)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETECOLUMN, nCol, 0); }
+_AFXCMN_INLINE int CListCtrl::GetColumnWidth(int nCol)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETCOLUMNWIDTH, nCol, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetColumnWidth(int nCol, int cx)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCOLUMNWIDTH, nCol, MAKELPARAM(cx, 0)); }
+_AFXCMN_INLINE CImageList* CListCtrl::CreateDragImage(int nItem, LPPOINT lpPoint)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, LVM_CREATEDRAGIMAGE, nItem, (LPARAM)lpPoint)); }
+_AFXCMN_INLINE BOOL CListCtrl::GetViewRect(LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETVIEWRECT, 0, (LPARAM)lpRect); }
+_AFXCMN_INLINE COLORREF CListCtrl::GetTextColor()
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETTEXTCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetTextColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETTEXTCOLOR, 0, cr); }
+_AFXCMN_INLINE COLORREF CListCtrl::GetTextBkColor()
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETTEXTBKCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetTextBkColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETTEXTBKCOLOR, 0, cr); }
+_AFXCMN_INLINE int CListCtrl::GetTopIndex()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETTOPINDEX, 0, 0); }
+_AFXCMN_INLINE int CListCtrl::GetCountPerPage()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETCOUNTPERPAGE, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::GetOrigin(LPPOINT lpPoint)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETORIGIN, 0, (LPARAM)lpPoint); }
+_AFXCMN_INLINE BOOL CListCtrl::Update(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_UPDATE, nItem, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemState(int nItem, LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)pItem); }
+_AFXCMN_INLINE UINT CListCtrl::GetItemState(int nItem, UINT nMask)
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETITEMSTATE, nItem, nMask); }
+_AFXCMN_INLINE void CListCtrl::SetItemCount(int nItems)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LVM_SETITEMCOUNT, nItems, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SortItems(PFNLVCOMPARE pfnCompare, DWORD dwData)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SORTITEMS, dwData, (LPARAM)pfnCompare); }
+_AFXCMN_INLINE UINT CListCtrl::GetSelectedCount()
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETSELECTEDCOUNT, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CTreeCtrl::CTreeCtrl()
+ { }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::InsertItem(LPTV_INSERTSTRUCT lpInsertStruct)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)lpInsertStruct); }
+_AFXCMN_INLINE BOOL CTreeCtrl::DeleteItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)hItem); }
+#pragma warning(disable: 4310)
+_AFXCMN_INLINE BOOL CTreeCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT); }
+#pragma warning(default: 4310)
+_AFXCMN_INLINE BOOL CTreeCtrl::Expand(HTREEITEM hItem, UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_EXPAND, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetCount()
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETCOUNT, 0, 0); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetIndent()
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETINDENT, 0, 0); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetIndent(UINT nIndent)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SETINDENT, nIndent, 0); }
+_AFXCMN_INLINE CImageList* CTreeCtrl::GetImageList(UINT nImage)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TVM_GETIMAGELIST, (UINT)nImage, 0)); }
+_AFXCMN_INLINE CImageList* CTreeCtrl::SetImageList(UINT nImage, CImageList* pImageList)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TVM_SETIMAGELIST, (UINT)nImage, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextItem(HTREEITEM hItem, UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetChildItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextSiblingItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetPrevSiblingItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUS, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetParentItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetFirstVisibleItem()
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextVisibleItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetPrevVisibleItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetSelectedItem()
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CARET, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetDropHilightItem()
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_DROPHILITE, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetRootItem()
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::Select(HTREEITEM hItem, UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_SELECTITEM, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::SelectItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::SelectDropTarget(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::GetItem(TV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItem(TV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE CEdit* CTreeCtrl::EditLabel(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TVM_EDITLABEL, 0, (LPARAM)hItem)); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::HitTest(TV_HITTESTINFO* pHitTestInfo)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)pHitTestInfo); }
+_AFXCMN_INLINE CEdit* CTreeCtrl::GetEditControl()
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TVM_GETEDITCONTROL, 0, 0)); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetVisibleCount()
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETVISIBLECOUNT, 0, 0); }
+_AFXCMN_INLINE CImageList* CTreeCtrl::CreateDragImage(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TVM_CREATEDRAGIMAGE, 0, (LPARAM)hItem)); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SortChildren(HTREEITEM hItem, BOOL bRecurse)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDREN, bRecurse, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::EnsureVisible(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_ENSUREVISIBLE, 0, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SortChildrenCB(LPTV_SORTCB pSort, BOOL bRecurse)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDRENCB, bRecurse, (LPARAM)pSort); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CHotKeyCtrl::CHotKeyCtrl()
+ { }
+_AFXCMN_INLINE void CHotKeyCtrl::SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, HKM_SETHOTKEY, MAKEWPARAM(wVirtualKeyCode, wModifiers), 0L); }
+_AFXCMN_INLINE DWORD CHotKeyCtrl::GetHotKey()
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, HKM_GETHOTKEY, 0, 0L); }
+_AFXCMN_INLINE void CHotKeyCtrl::SetRules(WORD wInvalidComb, WORD wModifiers)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, HKM_SETRULES, wInvalidComb, MAKELPARAM(wModifiers, 0)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CToolTipCtrl::CToolTipCtrl()
+ { }
+_AFXCMN_INLINE void CToolTipCtrl::Activate(BOOL bActivate)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_ACTIVATE, bActivate, 0L); }
+_AFXCMN_INLINE void CToolTipCtrl::SetToolInfo(LPTOOLINFO lpToolInfo)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_SETTOOLINFO, 0, (LPARAM)lpToolInfo); }
+_AFXCMN_INLINE void CToolTipCtrl::RelayEvent(LPMSG lpMsg)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_RELAYEVENT, 0, (LPARAM)lpMsg); }
+_AFXCMN_INLINE void CToolTipCtrl::SetDelayTime(UINT nDelay)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_SETDELAYTIME, 0, nDelay); }
+_AFXCMN_INLINE int CToolTipCtrl::GetToolCount()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TTM_GETTOOLCOUNT, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CSpinButtonCtrl::CSpinButtonCtrl()
+ { }
+_AFXCMN_INLINE UINT CSpinButtonCtrl::GetAccel(int nAccel, UDACCEL* pAccel)
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) LOWORD(::SendMessage(m_hWnd, UDM_GETACCEL, nAccel, (LPARAM)pAccel)); }
+_AFXCMN_INLINE UINT CSpinButtonCtrl::GetBase()
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) LOWORD(::SendMessage(m_hWnd, UDM_GETBASE, 0, 0l)); }
+_AFXCMN_INLINE CWnd* CSpinButtonCtrl::GetBuddy()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle((HWND) ::SendMessage(m_hWnd, UDM_GETBUDDY, 0, 0l)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::GetPos()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, UDM_GETPOS, 0, 0l)); }
+_AFXCMN_INLINE DWORD CSpinButtonCtrl::GetRange()
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD) ::SendMessage(m_hWnd, UDM_GETRANGE, 0, 0l); }
+_AFXCMN_INLINE BOOL CSpinButtonCtrl::SetAccel(int nAccel, UDACCEL* pAccel)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) LOWORD(::SendMessage(m_hWnd, UDM_SETACCEL, nAccel, (LPARAM)pAccel)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::SetBase(int nBase)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, UDM_SETBASE, nBase, 0L); }
+_AFXCMN_INLINE CWnd* CSpinButtonCtrl::SetBuddy(CWnd* pWndBuddy)
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle((HWND) ::SendMessage(m_hWnd, UDM_SETBUDDY, (WPARAM)pWndBuddy->m_hWnd, 0L)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) (short) LOWORD(::SendMessage(m_hWnd, UDM_SETPOS, 0, MAKELPARAM(nPos, 0))); }
+_AFXCMN_INLINE void CSpinButtonCtrl::SetRange(int nLower, int nUpper)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, UDM_SETRANGE, 0, MAKELPARAM(nUpper, nLower)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CSliderCtrl::CSliderCtrl()
+ { }
+_AFXCMN_INLINE int CSliderCtrl::GetLineSize()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETLINESIZE, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::SetLineSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_SETLINESIZE, 0, nSize); }
+_AFXCMN_INLINE int CSliderCtrl::GetPageSize()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETPAGESIZE, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::SetPageSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_SETPAGESIZE, 0, nSize); }
+_AFXCMN_INLINE int CSliderCtrl::GetRangeMax()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETRANGEMAX, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::GetRangeMin()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETRANGEMIN, 0, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::SetRangeMin(int nMin, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETRANGEMIN, bRedraw, nMin); }
+_AFXCMN_INLINE void CSliderCtrl::SetRangeMax(int nMax, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETRANGEMAX, bRedraw, nMax); }
+_AFXCMN_INLINE void CSliderCtrl::ClearSel(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_CLEARSEL, bRedraw, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::GetChannelRect(LPRECT lprc)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_GETCHANNELRECT, 0, (LPARAM)lprc); }
+_AFXCMN_INLINE void CSliderCtrl::GetThumbRect(LPRECT lprc)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_GETTHUMBRECT, 0, (LPARAM)lprc); }
+_AFXCMN_INLINE int CSliderCtrl::GetPos()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETPOS, 0, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETPOS, TRUE, nPos); }
+_AFXCMN_INLINE void CSliderCtrl::VerifyPos()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETPOS, FALSE, 0L); }
+_AFXCMN_INLINE void CSliderCtrl::ClearTics(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_CLEARTICS, bRedraw, 0l); }
+_AFXCMN_INLINE UINT CSliderCtrl::GetNumTics()
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TBM_GETNUMTICS, 0, 0l); }
+_AFXCMN_INLINE DWORD* CSliderCtrl::GetTicArray()
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD*) ::SendMessage(m_hWnd, TBM_GETPTICS, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::GetTic(int nTic)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETTIC, nTic, 0L); }
+_AFXCMN_INLINE int CSliderCtrl::GetTicPos(int nTic)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETTICPOS, nTic, 0L); }
+_AFXCMN_INLINE BOOL CSliderCtrl::SetTic(int nTic)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TBM_SETTIC, 0, nTic); }
+_AFXCMN_INLINE void CSliderCtrl::SetTicFreq(int nFreq)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETTICFREQ, nFreq, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CProgressCtrl::CProgressCtrl()
+ { }
+_AFXCMN_INLINE void CProgressCtrl::SetRange(int nLower, int nUpper)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PBM_SETRANGE, 0, MAKELPARAM(nLower, nUpper)); }
+_AFXCMN_INLINE int CProgressCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_SETPOS, nPos, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::OffsetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_DELTAPOS, nPos, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::SetStep(int nStep)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_SETSTEP, nStep, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::StepIt()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_STEPIT, 0, 0L)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CHeaderCtrl::CHeaderCtrl()
+ { }
+_AFXCMN_INLINE int CHeaderCtrl::GetItemCount()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, HDM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE int CHeaderCtrl::InsertItem(int nPos, HD_ITEM* phdi)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, HDM_INSERTITEM, nPos, (LPARAM)phdi); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::DeleteItem(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_DELETEITEM, nPos, 0L); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::GetItem(int nPos, HD_ITEM* pHeaderItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_GETITEM, nPos, (LPARAM)pHeaderItem); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::SetItem(int nPos, HD_ITEM* pHeaderItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_SETITEM, nPos, (LPARAM)pHeaderItem); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::Layout(HD_LAYOUT* pHeaderLayout)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_LAYOUT, 0, (LPARAM)pHeaderLayout); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE HIMAGELIST CImageList::GetSafeHandle() const
+ { return (this == NULL) ? NULL : m_hImageList; }
+_AFXCMN_INLINE int CImageList::GetImageCount()
+ { ASSERT(m_hImageList != NULL); return ImageList_GetImageCount(m_hImageList); }
+_AFXCMN_INLINE int CImageList::Add(CBitmap* pbmImage, CBitmap* pbmMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_Add(m_hImageList, (HBITMAP)pbmImage->GetSafeHandle(), (HBITMAP)pbmMask->GetSafeHandle()); }
+_AFXCMN_INLINE int CImageList::Add(CBitmap* pbmImage, COLORREF crMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_AddMasked(m_hImageList, (HBITMAP)pbmImage->GetSafeHandle(), crMask); }
+_AFXCMN_INLINE BOOL CImageList::Remove(int nImage)
+ { ASSERT(m_hImageList != NULL); return ImageList_Remove(m_hImageList, nImage); }
+_AFXCMN_INLINE BOOL CImageList::Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_Replace(m_hImageList, nImage, (HBITMAP)pbmImage->GetSafeHandle(), (HBITMAP)pbmMask->GetSafeHandle()); }
+_AFXCMN_INLINE int CImageList::Add(HICON hIcon)
+ { ASSERT(m_hImageList != NULL); return ImageList_AddIcon(m_hImageList, hIcon); }
+_AFXCMN_INLINE int CImageList::Replace(int nImage, HICON hIcon)
+ { ASSERT(m_hImageList != NULL); return ImageList_ReplaceIcon(m_hImageList, nImage, hIcon); }
+_AFXCMN_INLINE HICON CImageList::ExtractIcon(int nImage)
+ { ASSERT(m_hImageList != NULL); return ImageList_ExtractIcon(NULL, m_hImageList, nImage); }
+_AFXCMN_INLINE BOOL CImageList::Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle)
+ { ASSERT(m_hImageList != NULL); ASSERT(pDC != NULL); return ImageList_Draw(m_hImageList, nImage, pDC->GetSafeHdc(), pt.x, pt.y, nStyle); }
+_AFXCMN_INLINE COLORREF CImageList::SetBkColor(COLORREF cr)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetBkColor(m_hImageList, cr); }
+_AFXCMN_INLINE COLORREF CImageList::GetBkColor()
+ { ASSERT(m_hImageList != NULL); return ImageList_GetBkColor(m_hImageList); }
+_AFXCMN_INLINE BOOL CImageList::SetOverlayImage(int nImage, int nOverlay)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetOverlayImage(m_hImageList, nImage, nOverlay); }
+_AFXCMN_INLINE BOOL CImageList::GetImageInfo(int nImage, IMAGEINFO* pImageInfo)
+ { ASSERT(m_hImageList != NULL); return ImageList_GetImageInfo(m_hImageList, nImage, pImageInfo); }
+_AFXCMN_INLINE BOOL CImageList::BeginDrag(int nImage, CPoint ptHotSpot)
+ { ASSERT(m_hImageList != NULL); return ImageList_BeginDrag(m_hImageList, nImage, ptHotSpot.x, ptHotSpot.y); }
+_AFXCMN_INLINE void CImageList::EndDrag()
+ { ImageList_EndDrag(); }
+_AFXCMN_INLINE BOOL CImageList::DragMove(CPoint pt)
+ { return ImageList_DragMove(pt.x, pt.y); }
+_AFXCMN_INLINE BOOL CImageList::SetDragCursorImage(int nDrag, CPoint ptHotSpot)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetDragCursorImage(m_hImageList, nDrag, ptHotSpot.x, ptHotSpot.y); }
+_AFXCMN_INLINE BOOL CImageList::DragShowNolock(BOOL bShow)
+ {return ImageList_DragShowNolock(bShow);}
+_AFXCMN_INLINE CImageList* CImageList::GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot)
+ {return CImageList::FromHandle(ImageList_GetDragImage(lpPoint, lpPointHotSpot));}
+_AFXCMN_INLINE BOOL CImageList::DragEnter(CWnd* pWndLock, CPoint point)
+ { return ImageList_DragEnter(pWndLock->m_hWnd, point.x, point.y); }
+_AFXCMN_INLINE BOOL CImageList::DragLeave(CWnd* pWndLock)
+ { return ImageList_DragLeave(pWndLock->m_hWnd); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CTabCtrl::CTabCtrl()
+ { }
+_AFXCMN_INLINE COLORREF CTabCtrl::GetBkColor()
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF)::SendMessage(m_hWnd, TCM_GETBKCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::SetBkColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_SETBKCOLOR, 0, cr); }
+_AFXCMN_INLINE CImageList* CTabCtrl::GetImageList()
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TCM_GETIMAGELIST, 0, 0L)); }
+_AFXCMN_INLINE CImageList* CTabCtrl::SetImageList(CImageList* pImageList)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TCM_SETIMAGELIST, 0, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE int CTabCtrl::GetItemCount()
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::GetItem(int nItem, TC_ITEM* pTabCtrlItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_GETITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::SetItem(int nItem, TC_ITEM* pTabCtrlItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_SETITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::InsertItem(int nItem, TC_ITEM* pTabCtrlItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::DeleteItem(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_DELETEITEM, nItem, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_DELETEALLITEMS, 0, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::GetItemRect(int nItem, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_GETITEMRECT, nItem, (LPARAM)lpRect); }
+_AFXCMN_INLINE int CTabCtrl::GetCurSel()
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETCURSEL, 0, 0L); }
+_AFXCMN_INLINE int CTabCtrl::SetCurSel(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_SETCURSEL, nItem, 0L); }
+_AFXCMN_INLINE int CTabCtrl::HitTest(TC_HITTESTINFO* pHitTestInfo)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_HITTEST, 0, (LPARAM) pHitTestInfo); }
+_AFXCMN_INLINE void CTabCtrl::AdjustRect(BOOL bLarger, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_ADJUSTRECT, bLarger, (LPARAM)lpRect); }
+_AFXCMN_INLINE CSize CTabCtrl::SetItemSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (CSize)::SendMessage(m_hWnd, TCM_SETITEMSIZE, 0, MAKELPARAM(size.cx,size.cy)); }
+_AFXCMN_INLINE void CTabCtrl::RemoveImage(int nImage)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_REMOVEIMAGE, nImage, 0L); }
+_AFXCMN_INLINE void CTabCtrl::SetPadding(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_SETPADDING, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE int CTabCtrl::GetRowCount()
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETROWCOUNT, 0, 0L); }
+_AFXCMN_INLINE CToolTipCtrl* CTabCtrl::GetTooltips()
+ { ASSERT(::IsWindow(m_hWnd)); return (CToolTipCtrl*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TCM_GETTOOLTIPS, 0, 0L)); }
+_AFXCMN_INLINE void CTabCtrl::SetTooltips(CToolTipCtrl* pWndTip)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_SETTOOLTIPS, (WPARAM)pWndTip->m_hWnd, 0L); }
+_AFXCMN_INLINE int CTabCtrl::GetCurFocus()
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETCURFOCUS, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CAnimateCtrl::CAnimateCtrl()
+ { }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Open(LPCTSTR lpszName)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, (LPARAM)lpszName); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Open(UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, nID); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Play(UINT nFrom, UINT nTo, UINT nRep)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, nRep, MAKELPARAM(nFrom, nTo)); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Stop()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_STOP, 0, 0L); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Close()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, 0L); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Seek(UINT nTo)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, 0, MAKELPARAM(nTo, nTo)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXCMN_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxcoll.h b/public/sdk/inc/mfc30/afxcoll.h
new file mode 100644
index 000000000..e426d5051
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxcoll.h
@@ -0,0 +1,1370 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCOLL_H__
+#define __AFXCOLL_H__
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+//CObject
+ // Arrays
+ class CByteArray; // array of BYTE
+ class CWordArray; // array of WORD
+ class CDWordArray; // array of DWORD
+ class CUIntArray; // array of UINT
+ class CPtrArray; // array of void*
+ class CObArray; // array of CObject*
+
+ // Lists
+ class CPtrList; // list of void*
+ class CObList; // list of CObject*
+
+ // Maps (aka Dictionaries)
+ class CMapWordToOb; // map from WORD to CObject*
+ class CMapWordToPtr; // map from WORD to void*
+ class CMapPtrToWord; // map from void* to WORD
+ class CMapPtrToPtr; // map from void* to void*
+
+ // Special String variants
+ class CStringArray; // array of CStrings
+ class CStringList; // list of CStrings
+ class CMapStringToPtr; // map from CString to void*
+ class CMapStringToOb; // map from CString to CObject*
+ class CMapStringToString; // map from CString to CString
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+////////////////////////////////////////////////////////////////////////////
+
+class CByteArray : public CObject
+{
+
+ DECLARE_SERIAL(CByteArray)
+public:
+
+// Construction
+ CByteArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ BYTE GetAt(int nIndex) const;
+ void SetAt(int nIndex, BYTE newElement);
+ BYTE& ElementAt(int nIndex);
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, BYTE newElement);
+ int Add(BYTE newElement);
+
+ // overloaded operator helpers
+ BYTE operator[](int nIndex) const;
+ BYTE& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, BYTE newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CByteArray* pNewArray);
+
+// Implementation
+protected:
+ BYTE* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CByteArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef BYTE BASE_TYPE;
+ typedef BYTE BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CWordArray : public CObject
+{
+
+ DECLARE_SERIAL(CWordArray)
+public:
+
+// Construction
+ CWordArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ WORD GetAt(int nIndex) const;
+ void SetAt(int nIndex, WORD newElement);
+ WORD& ElementAt(int nIndex);
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, WORD newElement);
+ int Add(WORD newElement);
+
+ // overloaded operator helpers
+ WORD operator[](int nIndex) const;
+ WORD& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, WORD newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CWordArray* pNewArray);
+
+// Implementation
+protected:
+ WORD* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CWordArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef WORD BASE_TYPE;
+ typedef WORD BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CDWordArray : public CObject
+{
+
+ DECLARE_SERIAL(CDWordArray)
+public:
+
+// Construction
+ CDWordArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ DWORD GetAt(int nIndex) const;
+ void SetAt(int nIndex, DWORD newElement);
+ DWORD& ElementAt(int nIndex);
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, DWORD newElement);
+ int Add(DWORD newElement);
+
+ // overloaded operator helpers
+ DWORD operator[](int nIndex) const;
+ DWORD& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, DWORD newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CDWordArray* pNewArray);
+
+// Implementation
+protected:
+ DWORD* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CDWordArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef DWORD BASE_TYPE;
+ typedef DWORD BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CUIntArray : public CObject
+{
+
+ DECLARE_DYNAMIC(CUIntArray)
+public:
+
+// Construction
+ CUIntArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ UINT GetAt(int nIndex) const;
+ void SetAt(int nIndex, UINT newElement);
+ UINT& ElementAt(int nIndex);
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, UINT newElement);
+ int Add(UINT newElement);
+
+ // overloaded operator helpers
+ UINT operator[](int nIndex) const;
+ UINT& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, UINT newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CUIntArray* pNewArray);
+
+// Implementation
+protected:
+ UINT* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CUIntArray();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef UINT BASE_TYPE;
+ typedef UINT BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CPtrArray : public CObject
+{
+
+ DECLARE_DYNAMIC(CPtrArray)
+public:
+
+// Construction
+ CPtrArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ void* GetAt(int nIndex) const;
+ void SetAt(int nIndex, void* newElement);
+ void*& ElementAt(int nIndex);
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, void* newElement);
+ int Add(void* newElement);
+
+ // overloaded operator helpers
+ void* operator[](int nIndex) const;
+ void*& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, void* newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CPtrArray* pNewArray);
+
+// Implementation
+protected:
+ void** m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CPtrArray();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef void* BASE_TYPE;
+ typedef void* BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CObArray : public CObject
+{
+
+ DECLARE_SERIAL(CObArray)
+public:
+
+// Construction
+ CObArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ CObject* GetAt(int nIndex) const;
+ void SetAt(int nIndex, CObject* newElement);
+ CObject*& ElementAt(int nIndex);
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, CObject* newElement);
+ int Add(CObject* newElement);
+
+ // overloaded operator helpers
+ CObject* operator[](int nIndex) const;
+ CObject*& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, CObject* newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CObArray* pNewArray);
+
+// Implementation
+protected:
+ CObject** m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CObArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef CObject* BASE_TYPE;
+ typedef CObject* BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CStringArray : public CObject
+{
+
+ DECLARE_SERIAL(CStringArray)
+public:
+
+// Construction
+ CStringArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ CString GetAt(int nIndex) const;
+ void SetAt(int nIndex, LPCTSTR newElement);
+ CString& ElementAt(int nIndex);
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, LPCTSTR newElement);
+ int Add(LPCTSTR newElement);
+
+ // overloaded operator helpers
+ CString operator[](int nIndex) const;
+ CString& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, LPCTSTR newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CStringArray* pNewArray);
+
+// Implementation
+protected:
+ CString* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CStringArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef CString BASE_TYPE;
+ typedef LPCTSTR BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CPtrList : public CObject
+{
+
+ DECLARE_DYNAMIC(CPtrList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ void* data;
+ };
+public:
+
+// Construction
+ CPtrList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ void*& GetHead();
+ void* GetHead() const;
+ void*& GetTail();
+ void* GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ void* RemoveHead();
+ void* RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(void* newElement);
+ POSITION AddTail(void* newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CPtrList* pNewList);
+ void AddTail(CPtrList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ void*& GetNext(POSITION& rPosition); // return *Position++
+ void* GetNext(POSITION& rPosition) const; // return *Position++
+ void*& GetPrev(POSITION& rPosition); // return *Position--
+ void* GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ void*& GetAt(POSITION position);
+ void* GetAt(POSITION position) const;
+ void SetAt(POSITION pos, void* newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, void* newElement);
+ POSITION InsertAfter(POSITION position, void* newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(void* searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CPtrList();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef void* BASE_TYPE;
+ typedef void* BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CObList : public CObject
+{
+
+ DECLARE_SERIAL(CObList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ CObject* data;
+ };
+public:
+
+// Construction
+ CObList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ CObject*& GetHead();
+ CObject* GetHead() const;
+ CObject*& GetTail();
+ CObject* GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ CObject* RemoveHead();
+ CObject* RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(CObject* newElement);
+ POSITION AddTail(CObject* newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CObList* pNewList);
+ void AddTail(CObList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ CObject*& GetNext(POSITION& rPosition); // return *Position++
+ CObject* GetNext(POSITION& rPosition) const; // return *Position++
+ CObject*& GetPrev(POSITION& rPosition); // return *Position--
+ CObject* GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ CObject*& GetAt(POSITION position);
+ CObject* GetAt(POSITION position) const;
+ void SetAt(POSITION pos, CObject* newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, CObject* newElement);
+ POSITION InsertAfter(POSITION position, CObject* newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(CObject* searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CObList();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef CObject* BASE_TYPE;
+ typedef CObject* BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CStringList : public CObject
+{
+
+ DECLARE_SERIAL(CStringList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ CString data;
+ };
+public:
+
+// Construction
+ CStringList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ CString& GetHead();
+ CString GetHead() const;
+ CString& GetTail();
+ CString GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ CString RemoveHead();
+ CString RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(LPCTSTR newElement);
+ POSITION AddTail(LPCTSTR newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CStringList* pNewList);
+ void AddTail(CStringList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ CString& GetNext(POSITION& rPosition); // return *Position++
+ CString GetNext(POSITION& rPosition) const; // return *Position++
+ CString& GetPrev(POSITION& rPosition); // return *Position--
+ CString GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ CString& GetAt(POSITION position);
+ CString GetAt(POSITION position) const;
+ void SetAt(POSITION pos, LPCTSTR newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, LPCTSTR newElement);
+ POSITION InsertAfter(POSITION position, LPCTSTR newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(LPCTSTR searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CStringList();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef CString BASE_TYPE;
+ typedef LPCTSTR BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapWordToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapWordToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ WORD key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapWordToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(WORD key, void*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](WORD key);
+
+ // add a new (key, value) pair
+ void SetAt(WORD key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(WORD key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, WORD& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(WORD key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(WORD, UINT&) const;
+
+public:
+ ~CMapWordToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef WORD BASE_KEY;
+ typedef WORD BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapPtrToWord : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapPtrToWord)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ void* key;
+ WORD value;
+ };
+
+public:
+
+// Construction
+ CMapPtrToWord(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(void* key, WORD& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ WORD& operator[](void* key);
+
+ // add a new (key, value) pair
+ void SetAt(void* key, WORD newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(void* key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, void*& rKey, WORD& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(void* key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(void*, UINT&) const;
+
+public:
+ ~CMapPtrToWord();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef void* BASE_KEY;
+ typedef void* BASE_ARG_KEY;
+ typedef WORD BASE_VALUE;
+ typedef WORD BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapPtrToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapPtrToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ void* key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapPtrToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(void* key, void*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](void* key);
+
+ // add a new (key, value) pair
+ void SetAt(void* key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(void* key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, void*& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(void* key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(void*, UINT&) const;
+
+public:
+ ~CMapPtrToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef void* BASE_KEY;
+ typedef void* BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapWordToOb : public CObject
+{
+
+ DECLARE_SERIAL(CMapWordToOb)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ WORD key;
+ CObject* value;
+ };
+
+public:
+
+// Construction
+ CMapWordToOb(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(WORD key, CObject*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ CObject*& operator[](WORD key);
+
+ // add a new (key, value) pair
+ void SetAt(WORD key, CObject* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(WORD key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, WORD& rKey, CObject*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(WORD key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(WORD, UINT&) const;
+
+public:
+ ~CMapWordToOb();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef WORD BASE_KEY;
+ typedef WORD BASE_ARG_KEY;
+ typedef CObject* BASE_VALUE;
+ typedef CObject* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapStringToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapStringToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, void*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToOb : public CObject
+{
+
+ DECLARE_SERIAL(CMapStringToOb)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ CObject* value;
+ };
+
+public:
+
+// Construction
+ CMapStringToOb(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, CObject*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ CObject*& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, CObject* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, CObject*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToOb();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef CObject* BASE_VALUE;
+ typedef CObject* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToString : public CObject
+{
+
+ DECLARE_SERIAL(CMapStringToString)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ CString value;
+ };
+
+public:
+
+// Construction
+ CMapStringToString(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, CString& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ CString& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, LPCTSTR newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, CString& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToString();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef CString BASE_VALUE;
+ typedef LPCTSTR BASE_ARG_VALUE;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Special include for Win32s compatibility
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifndef __AFXSTATE_H__
+ #include <afxstat_.h> // for AFX_APP_STATE and AFX_THREAD_STATE
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCOLL_INLINE inline
+#include <afxcoll.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+#endif //!__AFXCOLL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxcoll.inl b/public/sdk/inc/mfc30/afxcoll.inl
new file mode 100644
index 000000000..7995dc563
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxcoll.inl
@@ -0,0 +1,468 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCOLL.H
+
+#ifdef _AFXCOLL_INLINE
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CByteArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CByteArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CByteArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE BYTE CByteArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CByteArray::SetAt(int nIndex, BYTE newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE BYTE& CByteArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE int CByteArray::Add(BYTE newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE BYTE CByteArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE BYTE& CByteArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CWordArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CWordArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CWordArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE WORD CWordArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CWordArray::SetAt(int nIndex, WORD newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE WORD& CWordArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE int CWordArray::Add(WORD newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE WORD CWordArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE WORD& CWordArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CDWordArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CDWordArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CDWordArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE DWORD CDWordArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CDWordArray::SetAt(int nIndex, DWORD newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE DWORD& CDWordArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE int CDWordArray::Add(DWORD newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE DWORD CDWordArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE DWORD& CDWordArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CUIntArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CUIntArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CUIntArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE UINT CUIntArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CUIntArray::SetAt(int nIndex, UINT newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE UINT& CUIntArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE int CUIntArray::Add(UINT newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE UINT CUIntArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE UINT& CUIntArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CPtrArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CPtrArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CPtrArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE void* CPtrArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CPtrArray::SetAt(int nIndex, void* newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE void*& CPtrArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE int CPtrArray::Add(void* newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE void* CPtrArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE void*& CPtrArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CObArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CObArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CObArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE CObject* CObArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CObArray::SetAt(int nIndex, CObject* newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE CObject*& CObArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE int CObArray::Add(CObject* newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE CObject* CObArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE CObject*& CObArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CStringArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CStringArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CStringArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE CString CStringArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CStringArray::SetAt(int nIndex, LPCTSTR newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE CString& CStringArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE int CStringArray::Add(LPCTSTR newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE CString CStringArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE CString& CStringArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CPtrList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CPtrList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void*& CPtrList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE void* CPtrList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE void* CPtrList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CPtrList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CPtrList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE void*& CPtrList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CPtrList::SetAt(POSITION pos, void* newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CObList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CObList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE CObject*& CObList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CObject* CObList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE CObject* CObList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CObList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CObList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE CObject*& CObList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CObList::SetAt(POSITION pos, CObject* newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CStringList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CStringList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE CString& CStringList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CString CStringList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CString& CStringList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE CString CStringList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CStringList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CStringList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE CString& CStringList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CString& CStringList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CString& CStringList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CStringList::SetAt(POSITION pos, LPCTSTR newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapWordToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapWordToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapWordToPtr::SetAt(WORD key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapWordToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapWordToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapPtrToWord::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapPtrToWord::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapPtrToWord::SetAt(void* key, WORD newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapPtrToWord::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapPtrToWord::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapPtrToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapPtrToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapPtrToPtr::SetAt(void* key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapPtrToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapPtrToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapWordToOb::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapWordToOb::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapWordToOb::SetAt(WORD key, CObject* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapWordToOb::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapWordToOb::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToPtr::SetAt(LPCTSTR key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToOb::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToOb::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToOb::SetAt(LPCTSTR key, CObject* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToOb::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToOb::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToString::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToString::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToString::SetAt(LPCTSTR key, LPCTSTR newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToString::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToString::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXCOLL_INLINE
diff --git a/public/sdk/inc/mfc30/afxdb.h b/public/sdk/inc/mfc30/afxdb.h
new file mode 100644
index 000000000..0b6107cf8
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxdb.h
@@ -0,0 +1,817 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_H__
+#define __AFXDB_H__
+
+#ifdef _AFX_NO_DB_SUPPORT
+ #error Database classes not supported in this library variant.
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h>
+#endif
+
+// include standard SQL/ODBC "C" APIs
+#include <sql.h> // core
+#include <sqlext.h> // extensions
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #ifdef _AFXCTL
+ #ifdef _DEBUG
+ #pragma comment(lib, "ocd30d.lib")
+ #else
+ #pragma comment(lib, "ocd30.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfcd30d.lib")
+ #else
+ #pragma comment(lib, "mfcd30.lib")
+ #endif
+ #endif
+#endif
+#pragma comment(lib, "odbc32.lib")
+#pragma comment(lib, "odbccp32.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDB - MFC SQL/ODBC/Database support
+
+// Classes declared in this file
+
+ //CException
+ class CDBException; // abnormal return value
+
+ //CFieldExchange
+ class CFieldExchange; // Recordset Field Exchange
+
+ //CObject
+ class CDatabase; // Connecting to databases
+ class CRecordset; // Data result sets
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CView
+ //CScrollView
+ //CFormView
+ class CRecordView; // view records with a form
+
+// Non CObject classes
+struct CRecordsetStatus;
+struct CFieldInfo;
+
+/////////////////////////////////////////////////////////////////////////////
+
+// ODBC helpers
+// return code left in 'nRetCode'
+#define AFX_SQL_ASYNC(prs, SQLFunc) \
+ do \
+ { \
+ ASSERT(!CDatabase::InWaitForDataSource()); \
+ while ((nRetCode = (SQLFunc)) == SQL_STILL_EXECUTING) \
+ prs->OnWaitForDataSource(TRUE); \
+ prs->OnWaitForDataSource(FALSE); \
+ } while (0)
+
+#define AFX_SQL_SYNC(SQLFunc) \
+ do \
+ { \
+ ASSERT(!CDatabase::InWaitForDataSource()); \
+ nRetCode = SQLFunc; \
+ } while (0)
+
+// Max display length in chars of timestamp (date & time) value
+#define TIMESTAMP_PRECISION 23
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_DB_DATA
+
+// Miscellaneous sizing info
+#define MAX_CURRENCY 30 // Max size of Currency($) string
+#define MAX_TNAME_LEN 64 // Max size of table names
+#define MAX_FNAME_LEN 64 // Max size of field names
+#define MAX_DBNAME_LEN 32 // Max size of a database name
+#define MAX_DNAME_LEN 256 // Max size of Recordset names
+#define MAX_CONNECT_LEN 512 // Max size of Connect string
+#define MAX_CURSOR_NAME 18 // Max size of a cursor name
+
+// Timeout and net wait defaults
+#define DEFAULT_LOGIN_TIMEOUT 15 // seconds to before fail on connect
+#define DEFAULT_QUERY_TIMEOUT 15 // seconds to before fail waiting for results
+#define DEFAULT_MAX_WAIT_FOR_DATASOURCE 250 // milliseconds. Give DATASOURCE 1/4 second to respond
+#define DEFAULT_MIN_WAIT_FOR_DATASOURCE 50 // milliseconds. Start value for min wait heuristic
+
+// Field Flags, used to indicate status of fields
+#define AFX_SQL_FIELD_FLAG_DIRTY 0x1
+#define AFX_SQL_FIELD_FLAG_NULL 0x2
+
+/////////////////////////////////////////////////////////////////////////////
+// CDBException - something gone wrong
+
+// Dbkit extended error codes
+#define AFX_SQL_ERROR 1000
+#define AFX_SQL_ERROR_CONNECT_FAIL AFX_SQL_ERROR+1
+#define AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY AFX_SQL_ERROR+2
+#define AFX_SQL_ERROR_EMPTY_COLUMN_LIST AFX_SQL_ERROR+3
+#define AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH AFX_SQL_ERROR+4
+#define AFX_SQL_ERROR_ILLEGAL_MODE AFX_SQL_ERROR+5
+#define AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED AFX_SQL_ERROR+6
+#define AFX_SQL_ERROR_NO_CURRENT_RECORD AFX_SQL_ERROR+7
+#define AFX_SQL_ERROR_NO_ROWS_AFFECTED AFX_SQL_ERROR+8
+#define AFX_SQL_ERROR_RECORDSET_READONLY AFX_SQL_ERROR+9
+#define AFX_SQL_ERROR_SQL_NO_TOTAL AFX_SQL_ERROR+10
+#define AFX_SQL_ERROR_ODBC_LOAD_FAILED AFX_SQL_ERROR+11
+#define AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED AFX_SQL_ERROR+12
+#define AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED AFX_SQL_ERROR+13
+#define AFX_SQL_ERROR_API_CONFORMANCE AFX_SQL_ERROR+14
+#define AFX_SQL_ERROR_SQL_CONFORMANCE AFX_SQL_ERROR+15
+#define AFX_SQL_ERROR_NO_DATA_FOUND AFX_SQL_ERROR+16
+#define AFX_SQL_ERROR_ROW_UPDATE_NOT_SUPPORTED AFX_SQL_ERROR+17
+#define AFX_SQL_ERROR_ODBC_V2_REQUIRED AFX_SQL_ERROR+18
+#define AFX_SQL_ERROR_NO_POSITIONED_UPDATES AFX_SQL_ERROR+19
+#define AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED AFX_SQL_ERROR+20
+#define AFX_SQL_ERROR_DATA_TRUNCATED AFX_SQL_ERROR+21
+#define AFX_SQL_ERROR_ROW_FETCH AFX_SQL_ERROR+22
+#define AFX_SQL_ERROR_INCORRECT_ODBC AFX_SQL_ERROR+23
+#define AFX_SQL_ERROR_UPDATE_DELETE_FAILED AFX_SQL_ERROR+24
+#define AFX_SQL_ERROR_MAX AFX_SQL_ERROR+25
+
+class CDBException : public CException
+{
+ DECLARE_DYNAMIC(CDBException)
+
+// Attributes
+public:
+ RETCODE m_nRetCode;
+ CString m_strError;
+ CString m_strStateNativeOrigin;
+
+// Implementation (use AfxThrowDBException to create)
+public:
+ CDBException(RETCODE nRetCode = SQL_SUCCESS);
+
+ void BuildErrorString(CDatabase* pdb, HSTMT hstmt, BOOL bTrace = TRUE);
+ void Empty();
+ virtual ~CDBException();
+#ifdef _DEBUG
+ void TraceErrorMessage(LPCTSTR szTrace) const;
+#endif // DEBUG
+
+};
+
+void AFXAPI AfxThrowDBException(RETCODE nRetCode, CDatabase* pdb, HSTMT hstmt);
+
+//////////////////////////////////////////////////////////////////////////////
+// CLongBinary - a Long (generally > 32k in length) Binary object
+
+#define AFX_SQL_DEFAULT_LONGBINARY_SIZE 1024
+
+class CLongBinary : public CObject
+{
+ DECLARE_DYNAMIC(CLongBinary)
+
+// Constructors
+public:
+ CLongBinary();
+
+// Attributes
+ HGLOBAL m_hData;
+ DWORD m_dwDataLength;
+
+// Implementation
+public:
+ virtual ~CLongBinary();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// CDatabase - a SQL Database
+
+class CDatabase : public CObject
+{
+ DECLARE_DYNAMIC(CDatabase)
+
+// Constructors
+public:
+ CDatabase();
+
+ virtual BOOL Open(LPCSTR lpszDSN, BOOL bExclusive = FALSE,
+ BOOL bReadonly = FALSE, LPCSTR lpszConnect = "ODBC;",
+ BOOL bUseCursorLib = TRUE);
+ virtual void Close();
+
+// Attributes
+public:
+ HDBC m_hdbc;
+
+ BOOL IsOpen() const; // Database successfully opened?
+ BOOL CanUpdate() const;
+ BOOL CanTransact() const; // Are Transactions supported?
+
+ CString GetDatabaseName() const;
+ const CString& GetConnect() const;
+
+ // global state - if waiting for datasource => not normal operations
+ static BOOL PASCAL InWaitForDataSource();
+
+// Operations
+public:
+ void SetLoginTimeout(DWORD dwSeconds);
+ void SetQueryTimeout(DWORD dwSeconds);
+ void SetSynchronousMode(BOOL bSynchronous);
+
+ // transaction control
+ BOOL BeginTrans();
+ BOOL CommitTrans();
+ BOOL Rollback();
+
+ // direct sql execution
+ void ExecuteSQL(LPCSTR lpszSQL);
+
+ // Cancel asynchronous operation
+ void Cancel();
+
+// Overridables
+public:
+ // set special options
+ virtual void OnSetOptions(HSTMT hstmt);
+
+ // Give user chance to cancel long operation
+ virtual void OnWaitForDataSource(BOOL bStillExecuting);
+
+// Implementation
+public:
+ virtual ~CDatabase();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+
+ BOOL m_bTransactionPending;
+#endif //_DEBUG
+
+ // general error check
+ virtual BOOL Check(RETCODE nRetCode) const;
+
+ void ReplaceBrackets(LPTSTR lpchSQL);
+ BOOL m_bStripTrailingSpaces;
+ BOOL m_bIncRecordCountOnAdd;
+
+protected:
+ CString m_strConnect;
+
+ CPtrList m_listRecordsets; // maintain list to ensure CRecordsets all closed
+
+ int nRefCount;
+ BOOL m_bUpdatable;
+
+ BOOL m_bTransactions;
+ SWORD m_nTransactionCapable;
+ SWORD m_nCursorCommitBehavior;
+ SWORD m_nCursorRollbackBehavior;
+ UDWORD m_dwGetDataExtensions;
+
+ DWORD m_dwLoginTimeout;
+ HSTMT m_hstmt;
+ DWORD m_dwWait;
+
+ DWORD m_dwQueryTimeout;
+ DWORD m_dwMinWaitForDataSource;
+ DWORD m_dwMaxWaitForDataSource;
+ BOOL m_bAsync;
+ char m_chIDQuoteChar;
+ char m_reserved1[3]; // pad to even 4 bytes
+
+ void ThrowDBException(RETCODE nRetCode);
+ void AllocConnect();
+ void Free();
+
+ // friend classes that call protected CDatabase overridables
+ friend class CRecordset;
+ friend class CFieldExchange;
+ friend class CDBException;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// Recordset Field exchanged (RFX_)
+
+#define AFX_RFX_INT_PSEUDO_NULL (0x7EE4)
+#define AFX_RFX_LONG_PSEUDO_NULL (0x4a4d4120L)
+#define AFX_RFX_BYTE_PSEUDO_NULL 255
+#define AFX_RFX_SINGLE_PSEUDO_NULL (-9.123e19f)
+#define AFX_RFX_DOUBLE_PSEUDO_NULL (-9.123e19)
+#define AFX_RFX_BOOL_PSEUDO_NULL 2
+#define AFX_RFX_DATE_PSEUDO_NULL CTime(0)
+#define AFX_RFX_TIMESTAMP_PSEUDO_NULL 99
+
+#define AFX_RFX_BOOL 1
+#define AFX_RFX_BYTE 2
+#define AFX_RFX_INT 3
+#define AFX_RFX_LONG 4
+#define AFX_RFX_SINGLE 6
+#define AFX_RFX_DOUBLE 7
+#define AFX_RFX_DATE 8
+#define AFX_RFX_BINARY 9
+#define AFX_RFX_TEXT 10
+#define AFX_RFX_LONGBINARY 11
+
+// CFieldExchange - for field exchange
+class CFieldExchange
+{
+// Attributes
+public:
+ enum RFX_Operation
+ {
+ BindParam, // register users parameters with ODBC SQLBindParameter
+ RebindDateParam, // migrate date param values to proxy array before Requery
+ BindFieldToColumn, // register users fields with ODBC SQLBindCol
+ BindFieldForUpdate, // temporarily bind columns before update (via SQLSetPos)
+ UnbindFieldForUpdate, // unbind columns after update (via SQLSetPos)
+ Fixup, // Set string lengths, clear status bits
+ MarkForAddNew,
+ MarkForUpdate, // Prepare fields and flags for update operation
+ Name, // append dirty field name
+ NameValue, // append dirty name=value
+ Value, // append dirty value or parameter marker
+ SetFieldDirty, // Set status bit for changed status
+ SetFieldNull, // Set status bit for null value
+ IsFieldDirty,// return TRUE if field is dirty
+ IsFieldNull,// return TRUE if field is marked NULL
+ IsFieldNullable,// return TRUE if field can hold NULL values
+ StoreField, // archive values of current record
+ LoadField, // reload archived values into current record
+ GetFieldInfoValue, // general info on a field via pv for field
+ GetFieldInfoOrdinal, // general info on a field via field ordinal
+#ifdef _DEBUG
+ DumpField, // dump bound field name and value
+#endif
+ };
+ UINT m_nOperation; // Type of exchange operation
+ CRecordset* m_prs; // recordset handle
+
+// Operations
+ enum FieldType
+ {
+ noFieldType,
+ outputColumn,
+ param,
+ };
+
+// Operations (for implementors of RFX procs)
+ BOOL IsFieldType(UINT* pnField);
+
+ // Indicate purpose of subsequent RFX calls
+ void SetFieldType(UINT nFieldType);
+
+// Implementation
+ CFieldExchange(UINT nOperation, CRecordset* prs, void* pvField = NULL);
+
+ void Default(const char* szName,
+ void* pv, LONG* plLength, int nCType, UINT cbValue, UINT cbPrecision);
+
+ int GetColumnType(int nColumn, UINT* pcbLength = NULL,
+ int* pnScale = NULL, int* pnNullable = NULL);
+
+ // Current type of field
+ UINT m_nFieldType;
+
+ // For GetFieldInfo
+ CFieldInfo* m_pfi; // GetFieldInfo return struct
+ BOOL m_bFieldFound; // GetFieldInfo search successful
+
+ // For returning status info for a field
+ BOOL m_bNull; // return result of IsFieldNull(able)/Dirty operation
+ BOOL m_bDirty; // return result of IsFieldNull(able)/Dirty operation
+
+ CString* m_pstr; // Field name or destination for building various SQL clauses
+ BOOL m_bField; // Value to set for SetField operation
+ void* m_pvField; // For indicating an operation on a specific field
+ CArchive* m_par; // For storing/loading copy buffer
+ LPCSTR m_lpszSeparator; // append after field names
+ UINT m_nFields; // count of fields for various operations
+ UINT m_nParams; // count of fields for various operations
+ UINT m_nParamFields; // count of fields for various operations
+ HSTMT m_hstmt; // For SQLBindParameter on update statement
+
+#ifdef _DEBUG
+ CDumpContext* m_pdcDump;
+#endif //_DEBUG
+
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard RecordSet Field Exchange routines
+
+// text data
+void AFXAPI RFX_Text(CFieldExchange* pFX, const char* szName, CString& value,
+ // Default max length for char and varchar, default datasource type
+ int nMaxLength = 255, int nColumnType = SQL_VARCHAR);
+
+// boolean data
+void AFXAPI RFX_Bool(CFieldExchange* pFX, const char* szName, BOOL& value);
+
+// integer data
+void AFXAPI RFX_Long(CFieldExchange* pFX, const char* szName, long& value);
+void AFXAPI RFX_Int(CFieldExchange* pFX, const char* szName, int& value);
+void AFXAPI RFX_Single(CFieldExchange* pFX, const char* szName, float& value);
+void AFXAPI RFX_Double(CFieldExchange* pFX, const char* szName, double& value);
+
+// date and time
+void AFXAPI RFX_Date(CFieldExchange* pFX, const char* szName, CTime& value);
+void AFXAPI RFX_Date(CFieldExchange* pFX, const char* szName, TIMESTAMP_STRUCT& value);
+
+// Binary data
+void AFXAPI RFX_Binary(CFieldExchange* pFX, const char* szName, CByteArray& value,
+ // Default max length is for binary and varbinary
+ int nMaxLength = 255);
+void AFXAPI RFX_Byte(CFieldExchange* pFX, const char* szName, BYTE& value);
+void AFXAPI RFX_LongBinary(CFieldExchange* pFX, const char* szName, CLongBinary& value);
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Dialog Data Exchange cover routines
+// Cover routines provide database semantics on top of DDX routines
+
+// simple text operations
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BYTE& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, UINT& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, long& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, DWORD& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, double& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, float& value, CRecordset* pRecordset);
+
+// special control types
+void AFXAPI DDX_FieldCheck(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldRadio(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBString(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBString(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+
+//////////////////////////////////////////////////////////////////////////////
+// CRecordset - the result of a SQL Statement
+
+#define AFX_MOVE_FIRST 0x80000000L
+#define AFX_MOVE_PREVIOUS (-1L)
+#define AFX_MOVE_REFRESH 0L
+#define AFX_MOVE_NEXT (+1L)
+#define AFX_MOVE_LAST 0x7fffffffL
+
+#define AFX_RECORDSET_STATUS_OPEN (+1L)
+#define AFX_RECORDSET_STATUS_CLOSED 0L
+#define AFX_RECORDSET_STATUS_UNKNOWN (-1L)
+
+class CRecordset : public CObject
+{
+ DECLARE_DYNAMIC(CRecordset)
+
+// Constructor
+protected:
+ CRecordset(CDatabase* pDatabase = NULL);
+
+public:
+ virtual ~CRecordset();
+
+ enum OpenType
+ {
+ dynaset,
+ snapshot,
+ forwardOnly
+ };
+
+ enum OpenOptions
+ {
+ none = 0x0,
+ readOnly = 0x0004,
+ appendOnly = 0x0008,
+ optimizeBulkAdd = 0x4000, // Use prepared HSTMT for multiple AddNews, dirty fields must not change.
+ firstBulkAdd = 0x8000, // INTERNAL to MFC, don't specify on Open.
+ };
+ virtual BOOL Open(UINT nOpenType = snapshot, LPCSTR lpszSQL = NULL, DWORD dwOptions = none);
+ virtual void Close();
+
+// Attributes
+public:
+ HSTMT m_hstmt; // Source statement for this resultset
+ CDatabase* m_pDatabase; // Source database for this resultset
+
+ CString m_strFilter; // Where clause
+ CString m_strSort; // Order By Clause
+
+ BOOL CanAppend() const; // Can AddNew be called?
+ BOOL CanRestart() const; // Can Requery be called to restart a query?
+ BOOL CanScroll() const; // Can MovePrev and MoveFirst be called?
+ BOOL CanTransact() const; // Are Transactions supported?
+ BOOL CanUpdate() const; // Can Edit/AddNew/Delete be called?
+
+ const CString& GetSQL() const; // SQL executed for this recordset
+ const CString& GetTableName() const; // Table name
+
+ BOOL IsOpen() const; // Recordset successfully opened?
+ BOOL IsBOF() const; // Beginning Of File
+ BOOL IsEOF() const; // End Of File
+ BOOL IsDeleted() const; // On a deleted record
+
+ BOOL IsFieldDirty(void *pv); // has field been updated?
+ BOOL IsFieldNull(void *pv); // is field NULL valued?
+ BOOL IsFieldNullable(void *pv); // can field be set to a NULL value
+
+ long GetRecordCount() const; // Records seen so far or -1 if unknown
+ void GetStatus(CRecordsetStatus& rStatus) const;
+
+// Operations
+public:
+ // cursor operations
+ void MoveNext();
+ void MovePrev();
+ void MoveFirst();
+ void MoveLast();
+ virtual void Move(long lRows);
+
+ // edit buffer operations
+ virtual void AddNew(); // add new record at the end
+ virtual void Edit(); // start editing
+ virtual BOOL Update(); // update it
+ virtual void Delete(); // delete the current record
+
+ // field operations
+ void SetFieldDirty(void *pv, BOOL bDirty = TRUE);
+ void SetFieldNull(void *pv, BOOL bNull = TRUE);
+
+ // locking control during Edit
+ enum LockMode
+ {
+ optimistic,
+ pessimistic,
+ };
+ void SetLockingMode(UINT nMode);
+
+ // Recordset operations
+ virtual BOOL Requery(); // Re-execute query based on new params
+
+ // Cancel asynchronous operation
+ void Cancel();
+
+// Overridables
+public:
+ // Get default connect string
+ virtual CString GetDefaultConnect();
+
+ // Get SQL to execute
+ virtual CString GetDefaultSQL() = 0;
+
+ // set special options
+ virtual void OnSetOptions(HSTMT hstmt);
+
+ // Give user chance to cancel long operation
+ virtual void OnWaitForDataSource(BOOL bStillExecuting);
+
+ // for recordset field exchange
+ virtual void DoFieldExchange(CFieldExchange* pFX) = 0;
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+
+ virtual BOOL Check(RETCODE nRetCode) const; // general error check
+ void InitRecord();
+ virtual void PreBindFields(); // called before data fields are bound
+ UINT m_nFields; // number of RFX fields
+ UINT m_nParams; // number of RFX params
+ BOOL m_bDateParams; // date parameter existence flag
+ BOOL m_bLongBinaryColumns; // long binary column existence flag
+ BOOL m_bUseUpdateSQL; // uses SQL-based updates (or SQLSetPos)
+ UDWORD m_dwDriverPositionedStatements;
+
+ BOOL IsSQLUpdatable(LPCTSTR lpszSQL);
+ BOOL IsSelectQueryUpdatable(LPCTSTR lpszSQL);
+ static BOOL PASCAL IsJoin(LPCTSTR lpszJoinClause);
+ static LPCTSTR PASCAL FindSQLToken(LPCTSTR lpszSQL, LPCTSTR lpszSQLToken);
+
+ // RFX Operations on fields of CRecordset
+ UINT BindParams(HSTMT hstmt);
+ void RebindDateParams(HSTMT hstmt);
+ UINT BindFieldsToColumns();
+ void BindFieldsForUpdate();
+ void UnbindFieldsForUpdate();
+ void Fixups();
+ UINT AppendNames(CString* pstr, LPCSTR szSeparator);
+ UINT AppendValues(HSTMT hstmt, CString* pstr, LPCSTR szSeparator);
+ UINT AppendNamesValues(HSTMT hstmt, CString* pstr, LPCSTR szSeparator);
+ void StoreFields();
+ void LoadFields();
+ void MarkForAddNew();
+ void MarkForUpdate();
+ BOOL GetFieldInfo(void* pv, CFieldInfo* pfi);
+ BOOL GetFieldInfo(UINT nField, CFieldInfo* pfi);
+#ifdef _DEBUG
+ void DumpFields(CDumpContext& dc) const;
+#endif //_DEBUG
+
+ // RFX operation helper functions
+ BOOL UnboundFieldInfo(UINT nField, CFieldInfo* pfi);
+
+ void ThrowDBException(RETCODE nRetCode, HSTMT hstmt = SQL_NULL_HSTMT);
+
+ CMemFile* m_pmemfile; // For saving copy buffer
+ CArchive* m_par; // For saving copy buffer
+
+ void AllocFlags();
+ BYTE GetFieldFlags(UINT nField, UINT nFieldType = CFieldExchange::outputColumn);
+ void SetFieldFlags(UINT nField, BYTE bFlags, UINT nFieldType = CFieldExchange::outputColumn);
+ void ClearFieldFlags(UINT nField, BYTE bFlags, UINT nFieldType = CFieldExchange::outputColumn);
+ LONG* GetFieldLength(CFieldExchange* pFX);
+ BOOL IsFieldFlagNull(UINT nField, UINT nFieldType);
+ BOOL IsFieldFlagDirty(UINT nField, UINT nFieldType);
+ void** m_pvFieldProxy;
+ void** m_pvParamProxy;
+ UINT m_nProxyFields;
+ UINT m_nProxyParams;
+
+protected:
+ UINT m_nOpenType;
+ enum EditMode
+ {
+ noMode,
+ edit,
+ addnew
+ };
+ long m_lOpen;
+ UINT m_nEditMode;
+ BOOL m_bEOFSeen;
+ long m_lRecordCount;
+ long m_lCurrentRecord;
+ CString m_strCursorName;
+ // Perform operation based on m_nEditMode
+ BOOL UpdateInsertDelete();
+ void ReleaseCopyBuffer();
+ BOOL m_nLockMode; // Control concurrency for Edit()
+ UDWORD m_dwDriverConcurrency; // driver supported concurrency types
+ UDWORD m_dwConcurrency; // requested concurrency type
+ UWORD m_wRowStatus; // row status used by SQLExtendedFetch and SQLSetPos
+ HSTMT m_hstmtUpdate;
+ BOOL m_bRecordsetDb;
+ BOOL m_bBOF;
+ BOOL m_bEOF;
+ BOOL m_bUpdatable; // Is recordset updatable?
+ BOOL m_bAppendable;
+ CString m_strSQL; // SQL statement for recordset
+ CString m_strUpdateSQL; // SQL statement for updates
+ CString m_strTableName; // source table of recordset
+ BOOL m_bScrollable; // supports MovePrev
+ BOOL m_bDeleted;
+ DWORD m_dwWait;
+ UINT m_nFieldsBound;
+ BYTE* m_pbFieldFlags;
+ LONG* m_plFieldLength; // Pointer to field length bound in SQLBindCol
+ BYTE* m_pbParamFlags;
+ LONG* m_plParamLength;
+ BOOL m_bExtendedFetch;
+public:
+ DWORD m_dwOptions; // archive dwOptions on Open
+protected:
+ CString m_strRequerySQL; // archive SQL string for use in Requery()
+ CString m_strRequeryFilter; // archive filter string for use in Requery()
+ CString m_strRequerySort; // archive sort string for use in Requery()
+ void BuildSelectSQL();
+ void AppendFilterAndSortSQL();
+ BOOL IsRecordsetUpdatable();
+ void ExecuteSetPosUpdate();
+ void PrepareUpdateHstmt();
+ void BuildUpdateSQL();
+ void ExecuteUpdateSQL();
+ void SendLongBinaryData(HSTMT hstmt);
+
+ friend class CFieldExchange;
+ friend class CRecordView;
+};
+
+#define AFX_CURRENT_RECORD_UNDEFINED (-2)
+#define AFX_CURRENT_RECORD_BOF (-1)
+
+// For returning status for a recordset
+struct CRecordsetStatus
+{
+ long m_lCurrentRecord; // -2=Unknown,-1=BOF,0=1st record. . .
+ BOOL m_bRecordCountFinal;// Have we counted all records?
+};
+
+// For returning field info on RFX fields
+struct CFieldInfo
+{
+ // For ID'ing field
+ UINT nField; // Field number
+ CString strName; // Field name
+ void* pv; // Address of value for field
+
+ // Return info GetFieldInfo
+ UINT nDataType; // data type of field (BOOL, BYTE, etc)
+ DWORD dwSize; // Max size for field data
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRecordView - form for viewing data records
+
+class CRecordView : public CFormView
+{
+ DECLARE_DYNAMIC(CRecordView)
+
+// Construction
+protected: // must derive your own class
+ CRecordView(LPCSTR lpszTemplateName);
+ CRecordView(UINT nIDTemplate);
+
+// Attributes
+public:
+ virtual CRecordset* OnGetRecordset() = 0;
+
+ BOOL IsOnLastRecord();
+ BOOL IsOnFirstRecord();
+
+// Operations
+public:
+ virtual BOOL OnMove(UINT nIDMoveCommand);
+
+// Implementation
+public:
+ virtual ~CRecordView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ BOOL m_bOnFirstRecord;
+ BOOL m_bOnLastRecord;
+
+ //{{AFX_MSG(CRecordView)
+ afx_msg void OnUpdateRecordFirst(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordPrev(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordNext(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordLast(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDBCORE_INLINE inline
+#define _AFXDBRFX_INLINE inline
+#define _AFXDBVIEW_INLINE inline
+#include <afxdb.inl>
+#undef _AFXDBVIEW_INLINE
+#undef _AFXDBCORE_INLINE
+#undef _AFXDBRFX_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXDB_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxdb.inl b/public/sdk/inc/mfc30/afxdb.inl
new file mode 100644
index 000000000..d65243902
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxdb.inl
@@ -0,0 +1,92 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDB.H
+
+/////////////////////////////////////////////////////////////////////////////
+// General database inlines
+
+#ifdef _AFXDBCORE_INLINE
+
+// CDatabase inlines
+_AFXDBCORE_INLINE BOOL CDatabase::IsOpen() const
+ { ASSERT_VALID(this); return m_hdbc != SQL_NULL_HDBC; }
+_AFXDBCORE_INLINE BOOL CDatabase::CanUpdate() const
+ { ASSERT(IsOpen()); return m_bUpdatable; }
+_AFXDBCORE_INLINE BOOL CDatabase::CanTransact() const
+ { ASSERT(IsOpen()); return m_bTransactions; }
+_AFXDBCORE_INLINE void CDatabase::SetLoginTimeout(DWORD dwSeconds)
+ { ASSERT_VALID(this); m_dwLoginTimeout = dwSeconds; }
+_AFXDBCORE_INLINE void CDatabase::SetQueryTimeout(DWORD dwSeconds)
+ { ASSERT_VALID(this); m_dwQueryTimeout = dwSeconds; }
+_AFXDBCORE_INLINE void CDatabase::SetSynchronousMode(BOOL bSynchronous)
+ { ASSERT_VALID(this); m_bAsync = !bSynchronous; }
+_AFXDBCORE_INLINE const CString& CDatabase::GetConnect() const
+ { ASSERT_VALID(this); return m_strConnect; }
+_AFXDBCORE_INLINE void CDatabase::ThrowDBException(RETCODE nRetCode)
+ { ASSERT_VALID(this); AfxThrowDBException(nRetCode, this, m_hstmt); }
+
+// CRecordset inlines
+_AFXDBCORE_INLINE const CString& CRecordset::GetSQL() const
+ { ASSERT(IsOpen()); return m_strSQL; }
+_AFXDBCORE_INLINE const CString& CRecordset::GetTableName() const
+ { ASSERT(IsOpen()); return m_strTableName; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsBOF() const
+ { ASSERT(IsOpen()); return m_bBOF; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsEOF() const
+ { ASSERT(IsOpen()); return m_bEOF; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsDeleted() const
+ { ASSERT(IsOpen()); return m_bDeleted; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanUpdate() const
+ { ASSERT(IsOpen()); return m_bUpdatable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanScroll() const
+ { ASSERT(IsOpen()); return m_bScrollable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanAppend() const
+ { ASSERT(IsOpen()); return m_bAppendable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanRestart() const
+ { ASSERT(IsOpen()); return TRUE; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanTransact() const
+ { ASSERT(IsOpen());return m_pDatabase->m_bTransactions; }
+_AFXDBCORE_INLINE long CRecordset::GetRecordCount() const
+ { ASSERT(IsOpen()); return m_lRecordCount; }
+_AFXDBCORE_INLINE void CRecordset::GetStatus(CRecordsetStatus& rStatus) const
+ { ASSERT(IsOpen());
+ rStatus.m_lCurrentRecord = m_lCurrentRecord;
+ rStatus.m_bRecordCountFinal = m_bEOFSeen; }
+_AFXDBCORE_INLINE void CRecordset::ThrowDBException(RETCODE nRetCode, HSTMT hstmt)
+ { ASSERT_VALID(this); AfxThrowDBException(nRetCode, m_pDatabase,
+ (hstmt == SQL_NULL_HSTMT)? m_hstmt : hstmt); }
+_AFXDBCORE_INLINE void CRecordset::MoveNext()
+ { ASSERT(IsOpen()); Move(AFX_MOVE_NEXT); }
+_AFXDBCORE_INLINE void CRecordset::MovePrev()
+ { ASSERT(IsOpen()); Move(AFX_MOVE_PREVIOUS); }
+_AFXDBCORE_INLINE void CRecordset::MoveFirst()
+ { ASSERT(IsOpen()); Move(AFX_MOVE_FIRST); }
+_AFXDBCORE_INLINE void CRecordset::MoveLast()
+ { ASSERT(IsOpen()); Move(AFX_MOVE_LAST); }
+_AFXDBCORE_INLINE BOOL CRecordset::IsFieldFlagNull(UINT nColumn, UINT nFieldType)
+ { ASSERT_VALID(this);
+ return (GetFieldFlags(nColumn, nFieldType) & AFX_SQL_FIELD_FLAG_NULL) != 0; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsFieldFlagDirty(UINT nColumn, UINT nFieldType)
+ { ASSERT_VALID(this);
+ return (GetFieldFlags(nColumn, nFieldType) & AFX_SQL_FIELD_FLAG_DIRTY) != 0; }
+
+#endif //_AFXDBCORE_INLINE
+
+
+#ifdef _AFXDBRFX_INLINE
+
+_AFXDBRFX_INLINE void CFieldExchange::SetFieldType(UINT nFieldType)
+ { ASSERT(nFieldType == outputColumn || nFieldType == param);
+ m_nFieldType = nFieldType; }
+
+#endif //_AFXDBRFX_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxdb.rc b/public/sdk/inc/mfc30/afxdb.rc
new file mode 100644
index 000000000..31e21b3ce
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxdb.rc
@@ -0,0 +1,83 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Attempt to connect to datasource failed"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Recordset supports forward movement only."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Attempt to open a table failed - there were no columns to retrieve were specified."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Unexpected column data types were returned from query."
+ AFX_IDP_SQL_ILLEGAL_MODE "Attempt to Update or Delete failed."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Multiple rows were updated."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operation failed, no current record."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "No rows were affected by the update or delete operation."
+ AFX_IDP_SQL_RECORDSET_READONLY "Recordset is read-only"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC driver doesn't support MFC LongBinary data model."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Attempt to load required component ODBC32.DLL failed."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC driver does not support dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ODBC static cursors required for snapshot support."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC driver incompatible with MFC database classes (API_CONFORMANCE >= SQL_OAC_LEVEL1 required)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC driver incompatible with MFC database classes (SQL_CONFORMANCE >= SQL_OSC_MINIMUM required)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Attempt to scroll past end or before beginning of data."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets not supported by ODBC driver."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC Level 2 compliant driver required."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Positioned updates not supported by ODBC driver."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Requested lock mode is not supported."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Data truncated."
+ AFX_IDP_SQL_ROW_FETCH
+ "Error retrieving record."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "A required ODBC entry point was not found. Make sure ODBC is installed correctly."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Update or Delete failed."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc30/afxdd_.h b/public/sdk/inc/mfc30/afxdd_.h
new file mode 100644
index 000000000..6981eb770
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxdd_.h
@@ -0,0 +1,57 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXWIN.H)
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialog Data Exchange routines
+
+// simple text operations
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, BYTE& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, UINT& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, long& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, DWORD& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, float& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, double& value);
+
+// special control types
+void AFXAPI DDX_Check(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_Radio(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_LBString(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_CBString(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_LBIndex(CDataExchange* pDX, int nIDC, int& index);
+void AFXAPI DDX_CBIndex(CDataExchange* pDX, int nIDC, int& index);
+void AFXAPI DDX_LBStringExact(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_CBStringExact(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_Scroll(CDataExchange* pDX, int nIDC, int& value);
+
+// for getting access to the actual controls
+void AFXAPI DDX_Control(CDataExchange* pDX, int nIDC, CWnd& rControl);
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialog Data Validation routines
+
+// range - value must be >= minVal and <= maxVal
+// NOTE: you will require casts for 'minVal' and 'maxVal' to use the
+// UINT, DWORD or float types
+void AFXAPI DDV_MinMaxByte(CDataExchange* pDX, BYTE value, BYTE minVal, BYTE maxVal);
+void AFXAPI DDV_MinMaxInt(CDataExchange* pDX, int value, int minVal, int maxVal);
+void AFXAPI DDV_MinMaxLong(CDataExchange* pDX, long value, long minVal, long maxVal);
+void AFXAPI DDV_MinMaxUInt(CDataExchange* pDX, UINT value, UINT minVal, UINT maxVal);
+void AFXAPI DDV_MinMaxDWord(CDataExchange* pDX, DWORD value, DWORD minVal, DWORD maxVal);
+void AFXAPI DDV_MinMaxFloat(CDataExchange* pDX, float const& value, float minVal, float maxVal);
+void AFXAPI DDV_MinMaxDouble(CDataExchange* pDX, double const& value, double minVal, double maxVal);
+
+// number of characters
+void AFXAPI DDV_MaxChars(CDataExchange* pDX, CString const& value, int nChars);
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxdisp.h b/public/sdk/inc/mfc30/afxdisp.h
new file mode 100644
index 000000000..d1df382c0
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxdisp.h
@@ -0,0 +1,590 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDISP_H__
+#define __AFXDISP_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+// include necessary OLE 2.0 headers
+#ifndef _UNICODE
+ #define OLE2ANSI
+#endif
+#include <objbase.h>
+#include <objerror.h>
+#include <scode.h>
+#include <oleauto.h>
+
+#include <stddef.h> // for offsetof()
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifndef _AFXCTL
+#ifdef _AFXDLL
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "cfmo30d.lib")
+ #else
+ #pragma comment(lib, "cfmo30.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "cfmo30ud.lib")
+ #else
+ #pragma comment(lib, "cfmo30u.lib")
+ #endif
+ #endif
+#endif
+
+#ifndef _UNICODE
+ #pragma comment(lib, "mfcans32.lib")
+ #pragma comment(lib, "mfcuia32.lib")
+#else
+ #pragma comment(lib, "mfcuiw32.lib")
+#endif
+
+#endif // !_AFXCTL
+
+#pragma comment(lib, "ole32.lib")
+#pragma comment(lib, "oleaut32.lib")
+#pragma comment(lib, "uuid.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+// This will cause an error if BSTR is not defined correctly. This can
+// happen if you include the OLE headers directly, without defining
+// OLE2ANSI for non-UNICODE apps.
+//
+// Better to catch the error at compile time, rather than link time.
+
+typedef LPTSTR BSTR;
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDISP - MFC IDispatch & ClassFactory support
+
+// Classes declared in this file
+
+//CException
+ class COleException; // caught by client or server
+ class COleDispatchException; // special exception for IDispatch calls
+
+//CCmdTarget
+ class COleObjectFactory; // glue for IClassFactory -> runtime class
+ class COleTemplateServer; // server documents using CDocTemplate
+
+class COleDispatchDriver; // helper class to call IDispatch
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE 2.0 COM (Component Object Model) implementation infrastructure
+// - data driven QueryInterface
+// - standard implementation of aggregate AddRef and Release
+// (see CCmdTarget in AFXWIN.H for more information)
+
+#define METHOD_PROLOGUE(theClass, localClass) \
+ theClass* pThis = \
+ ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define METHOD_PROLOGUE_EX(theClass, localClass) \
+ theClass* pThis = ((theClass*)((BYTE*)this - m_nOffset)); \
+
+#else
+#define METHOD_PROLOGUE_EX(theClass, localClass) \
+ METHOD_PROLOGUE(theClass, localClass) \
+
+#endif
+
+#define BEGIN_INTERFACE_PART(localClass, baseClass) \
+ class X##localClass : public baseClass \
+ { \
+ public: \
+ STDMETHOD_(ULONG, AddRef)(); \
+ STDMETHOD_(ULONG, Release)(); \
+ STDMETHOD(QueryInterface)(REFIID iid, LPVOID* ppvObj); \
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define BEGIN_INTERFACE_PART_DERIVE(localClass, baseClass) \
+ class X##localClass : public baseClass \
+ { \
+ public: \
+
+#else
+#define BEGIN_INTERFACE_PART_DERIVE(localClass, baseClass) \
+ BEGIN_INTERFACE_PART(localClass, baseClass) \
+
+#endif
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define INIT_INTERFACE_PART(theClass, localClass) \
+ size_t m_nOffset; \
+ INIT_INTERFACE_PART_DERIVE(theClass, localClass) \
+
+#define INIT_INTERFACE_PART_DERIVE(theClass, localClass) \
+ X##localClass() \
+ { m_nOffset = offsetof(theClass, m_x##localClass); } \
+
+#else
+#define INIT_INTERFACE_PART(theClass, localClass)
+#define INIT_INTERFACE_PART_DERIVE(theClass, localClass)
+
+#endif
+
+// Note: Inserts the rest of OLE functionality between these two macros,
+// depending upon the interface that is being implemented. It is not
+// necessary to include AddRef, Release, and QueryInterface since those
+// member functions are declared by the macro.
+
+#define END_INTERFACE_PART(localClass) \
+ } m_x##localClass; \
+ friend class X##localClass; \
+
+#ifdef _AFXDLL
+#define BEGIN_INTERFACE_MAP(theClass, theBase) \
+ const AFX_INTERFACEMAP* PASCAL theClass::_GetBaseInterfaceMap() \
+ { return &theBase::interfaceMap; } \
+ const AFX_INTERFACEMAP* theClass::GetInterfaceMap() const \
+ { return &theClass::interfaceMap; } \
+ const AFX_DATADEF AFX_INTERFACEMAP theClass::interfaceMap = \
+ { &theClass::_GetBaseInterfaceMap, &theClass::_interfaceEntries[0], }; \
+ const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass::_interfaceEntries[] = \
+ { \
+
+#else
+#define BEGIN_INTERFACE_MAP(theClass, theBase) \
+ const AFX_INTERFACEMAP* theClass::GetInterfaceMap() const \
+ { return &theClass::interfaceMap; } \
+ const AFX_DATADEF AFX_INTERFACEMAP theClass::interfaceMap = \
+ { &theBase::interfaceMap, &theClass::_interfaceEntries[0], }; \
+ const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass::_interfaceEntries[] = \
+ { \
+
+#endif
+
+#define INTERFACE_PART(theClass, iid, localClass) \
+ { &iid, offsetof(theClass, m_x##localClass) }, \
+
+#define INTERFACE_AGGREGATE(theClass, theAggr) \
+ { NULL, offsetof(theClass, theAggr) }, \
+
+#define END_INTERFACE_MAP() \
+ { NULL, (size_t)-1 } \
+ }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// COleException - unexpected or rare OLE error returned
+
+class COleException : public CException
+{
+ DECLARE_DYNAMIC(COleException)
+
+public:
+ SCODE m_sc;
+ static SCODE PASCAL Process(const CException* pAnyException);
+
+// Implementation (use AfxThrowOleException to create)
+ COleException();
+ virtual ~COleException();
+};
+
+void AFXAPI AfxThrowOleException(SCODE sc);
+
+/////////////////////////////////////////////////////////////////////////////
+// IDispatch specific exception
+
+class COleDispatchException : public CException
+{
+ DECLARE_DYNAMIC(COleDispatchException)
+
+public:
+// Attributes
+ WORD m_wCode; // error code (specific to IDispatch implementation)
+ CString m_strDescription; // human readable description of the error
+ DWORD m_dwHelpContext; // help context for error
+
+ // usually empty in application which creates it (eg. servers)
+ CString m_strHelpFile; // help file to use with m_dwHelpContext
+ CString m_strSource; // source of the error (name of server)
+
+// Implementation
+public:
+ COleDispatchException(LPCTSTR lpszDescription, UINT nHelpID, WORD wCode);
+ virtual ~COleDispatchException();
+ static void PASCAL Process(
+ EXCEPINFO* pInfo, const CException* pAnyException);
+
+ SCODE m_scError; // SCODE describing the error
+};
+
+void AFXAPI AfxThrowOleDispatchException(WORD wCode, LPCTSTR lpszDescription,
+ UINT nHelpID = 0);
+void AFXAPI AfxThrowOleDispatchException(WORD wCode, UINT nDescriptionID,
+ UINT nHelpID = (UINT)-1);
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for CCmdTarget IDispatchable classes
+
+#ifdef _AFXDLL
+#define BEGIN_DISPATCH_MAP(theClass, baseClass) \
+ const AFX_DISPMAP* PASCAL theClass::_GetBaseDispatchMap() \
+ { return &baseClass::dispatchMap; } \
+ const AFX_DISPMAP* theClass::GetDispatchMap() const \
+ { return &theClass::dispatchMap; } \
+ const AFX_DISPMAP theClass::dispatchMap = \
+ { &theClass::_GetBaseDispatchMap, &theClass::_dispatchEntries[0], \
+ &theClass::_dispatchEntryCount }; \
+ UINT theClass::_dispatchEntryCount = (UINT)-1; \
+ const AFX_DISPMAP_ENTRY theClass::_dispatchEntries[] = \
+ { \
+
+#else
+#define BEGIN_DISPATCH_MAP(theClass, baseClass) \
+ const AFX_DISPMAP* theClass::GetDispatchMap() const \
+ { return &theClass::dispatchMap; } \
+ const AFX_DISPMAP theClass::dispatchMap = \
+ { &baseClass::dispatchMap, &theClass::_dispatchEntries[0], \
+ &theClass::_dispatchEntryCount }; \
+ UINT theClass::_dispatchEntryCount = (UINT)-1; \
+ const AFX_DISPMAP_ENTRY theClass::_dispatchEntries[] = \
+ { \
+
+#endif
+
+#define END_DISPATCH_MAP() \
+ { VTS_NONE, DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)NULL, (AFX_PMSG)NULL, (size_t)-1 } }; \
+
+// parameter types: by value VTs
+#define VTS_I2 "\x02" // a 'short'
+#define VTS_I4 "\x03" // a 'long'
+#define VTS_R4 "\x04" // a 'float'
+#define VTS_R8 "\x05" // a 'double'
+#define VTS_CY "\x06" // a 'CY' or 'CY*'
+#define VTS_DATE "\x07" // a 'DATE'
+#define VTS_BSTR "\x08" // an 'LPCTSTR'
+#define VTS_DISPATCH "\x09" // an 'IDispatch*'
+#define VTS_SCODE "\x0A" // an 'SCODE'
+#define VTS_BOOL "\x0B" // a 'BOOL'
+#define VTS_VARIANT "\x0C" // a 'const VARIANT&' or 'VARIANT*'
+#define VTS_UNKNOWN "\x0D" // an 'IUnknown*'
+
+// parameter types: by reference VTs
+#define VTS_PI2 "\x42" // a 'short*'
+#define VTS_PI4 "\x43" // a 'long*'
+#define VTS_PR4 "\x44" // a 'float*'
+#define VTS_PR8 "\x45" // a 'double*'
+#define VTS_PCY "\x46" // a 'CY*'
+#define VTS_PDATE "\x47" // a 'DATE*'
+#define VTS_PBSTR "\x48" // a 'BSTR*'
+#define VTS_PDISPATCH "\x49" // an 'IDispatch**'
+#define VTS_PSCODE "\x4A" // an 'SCODE*'
+#define VTS_PBOOL "\x4B" // a 'VARIANT_BOOL*'
+#define VTS_PVARIANT "\x4C" // a 'VARIANT*'
+#define VTS_PUNKNOWN "\x4D" // an 'IUnknown**'
+
+// special VT_ and VTS_ values
+#define VTS_NONE NULL // used for members with 0 params
+#define VT_MFCVALUE 0xFFF // special value for DISPID_VALUE
+#define VT_MFCBYREF 0x40 // indicates VT_BYREF type
+#define VT_MFCMARKER 0xFF // delimits named parameters (INTERNAL USE)
+
+// these DISP_ macros cause the framework to generate the DISPID
+#define DISP_FUNCTION(theClass, szExternalName, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), DISPID_UNKNOWN, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnMember, (AFX_PMSG)0, 0 }, \
+
+#define DISP_PROPERTY(theClass, szExternalName, memberName, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, (AFX_PMSG)0, (AFX_PMSG)0, \
+ offsetof(theClass, memberName) }, \
+
+#define DISP_PROPERTY_NOTIFY(theClass, szExternalName, memberName, pfnAfterSet, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, (AFX_PMSG)0, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnAfterSet, \
+ offsetof(theClass, memberName) }, \
+
+#define DISP_PROPERTY_EX(theClass, szExternalName, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnSet, 0 }, \
+
+#define DISP_PROPERTY_PARAM(theClass, szExternalName, pfnGet, pfnSet, vtPropType, vtsParams) \
+ { _T(szExternalName), DISPID_UNKNOWN, vtsParams, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnSet, 0 }, \
+
+// these DISP_ macros allow the app to determine the DISPID
+#define DISP_FUNCTION_ID(theClass, szExternalName, dispid, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnMember, (AFX_PMSG)0, 0 }, \
+
+#define DISP_PROPERTY_ID(theClass, szExternalName, dispid, memberName, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, (AFX_PMSG)0, (AFX_PMSG)0, \
+ offsetof(theClass, memberName) }, \
+
+#define DISP_PROPERTY_NOTIFY_ID(theClass, szExternalName, dispid, memberName, pfnAfterSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, (AFX_PMSG)0, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnAfterSet, \
+ offsetof(theClass, memberName) }, \
+
+#define DISP_PROPERTY_EX_ID(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnSet, 0 }, \
+
+#define DISP_PROPERTY_PARAM_ID(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnSet, 0 }, \
+
+// the DISP_DEFVALUE is a special case macro that creates an alias for DISPID_VALUE
+#define DISP_DEFVALUE(theClass, szExternalName) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, VT_MFCVALUE, \
+ (AFX_PMSG)0, (AFX_PMSG)0, 0 }, \
+
+#define DISP_DEFVALUE_ID(theClass, dispid) \
+ { NULL, dispid, NULL, VT_MFCVALUE, (AFX_PMSG)0, (AFX_PMSG)0, 0 }, \
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for creating "creatable" automation classes.
+
+#define DECLARE_OLECREATE(class_name) \
+protected: \
+ static AFX_DATA COleObjectFactory factory; \
+ static AFX_DATA const GUID guid; \
+
+#define IMPLEMENT_OLECREATE(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ AFX_DATADEF COleObjectFactory class_name::factory(class_name::guid, \
+ RUNTIME_CLASS(class_name), FALSE, _T(external_name)); \
+ const AFX_DATADEF GUID class_name::guid = \
+ { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// Helper class for driving IDispatch
+
+class COleDispatchDriver
+{
+// Constructors
+public:
+ COleDispatchDriver();
+
+// Operations
+ BOOL CreateDispatch(REFCLSID clsid, COleException* pError = NULL);
+ BOOL CreateDispatch(LPCTSTR lpszProgID, COleException* pError = NULL);
+
+ void AttachDispatch(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE);
+ LPDISPATCH DetachDispatch();
+ // detach and get ownership of m_lpDispatch
+ void ReleaseDispatch();
+
+ // helpers for IDispatch::Invoke
+ void InvokeHelper(DISPID dwDispID, WORD wFlags,
+ VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ...);
+ void SetProperty(DISPID dwDispID, VARTYPE vtProp, ...);
+ void GetProperty(DISPID dwDispID, VARTYPE vtProp, void* pvProp) const;
+
+// Implementation
+public:
+ LPDISPATCH m_lpDispatch;
+
+ ~COleDispatchDriver();
+ void InvokeHelperV(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
+ void* pvRet, const BYTE* pbParamInfo, va_list argList);
+
+protected:
+ BOOL m_bAutoRelease; // TRUE if destructor should call Release
+
+private:
+ // Disable the copy constructor and assignment by default so you will get
+ // compiler errors instead of unexpected behaviour if you pass objects
+ // by value or assign objects.
+ COleDispatchDriver(const COleDispatchDriver&); // no implementation
+ void operator=(const COleDispatchDriver&); // no implementation
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Class Factory implementation (binds OLE class factory -> runtime class)
+// (all specific class factories derive from this class factory)
+
+class COleObjectFactory : public CCmdTarget
+{
+ DECLARE_DYNAMIC(COleObjectFactory)
+
+// Construction
+public:
+ COleObjectFactory(REFCLSID clsid, CRuntimeClass* pRuntimeClass,
+ BOOL bMultiInstance, LPCTSTR lpszProgID);
+
+// Attributes
+ BOOL IsRegistered() const;
+ REFCLSID GetClassID() const;
+
+// Operations
+ BOOL Register();
+ void Revoke();
+ void UpdateRegistry(LPCTSTR lpszProgID = NULL);
+ // default uses m_lpszProgID if not NULL
+
+ static BOOL PASCAL RegisterAll();
+ static void PASCAL RevokeAll();
+ static void PASCAL UpdateRegistryAll();
+
+// Overridables
+protected:
+ virtual CCmdTarget* OnCreateObject();
+
+// Implementation
+public:
+ virtual ~COleObjectFactory();
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif
+
+public:
+ COleObjectFactory* m_pNextFactory; // list of factories maintained
+
+protected:
+ DWORD m_dwRegister; // registry identifier
+ CLSID m_clsid; // registered class ID
+ CRuntimeClass* m_pRuntimeClass; // runtime class of CCmdTarget derivative
+ BOOL m_bMultiInstance; // multiple instance?
+ LPCTSTR m_lpszProgID; // human readable class ID
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(ClassFactory, IClassFactory)
+ INIT_INTERFACE_PART(COleObjectFactory, ClassFactory)
+ STDMETHOD(CreateInstance)(LPUNKNOWN, REFIID, LPVOID*);
+ STDMETHOD(LockServer)(BOOL);
+ END_INTERFACE_PART(ClassFactory)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend SCODE AFXAPI AfxDllGetClassObject(REFCLSID, REFIID, LPVOID FAR*);
+ friend SCODE STDAPICALLTYPE DllGetClassObject(REFCLSID, REFIID, LPVOID*);
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleTemplateServer - COleObjectFactory using CDocTemplates
+
+// This enumeration is used in AfxOleRegisterServerClass to pick the
+// correct registration entries given the application type.
+enum OLE_APPTYPE
+{
+ OAT_INPLACE_SERVER = 0, // server has full server user-interface
+ OAT_SERVER = 1, // server supports only embedding
+ OAT_CONTAINER = 2, // container supports links to embeddings
+ OAT_DISPATCH_OBJECT = 3, // IDispatch capable object
+};
+
+class COleTemplateServer : public COleObjectFactory
+{
+// Constructors
+public:
+ COleTemplateServer();
+
+// Operations
+ void ConnectTemplate(REFCLSID clsid, CDocTemplate* pDocTemplate,
+ BOOL bMultiInstance);
+ // set doc template after creating it in InitInstance
+ void UpdateRegistry(OLE_APPTYPE nAppType = OAT_INPLACE_SERVER,
+ LPCTSTR* rglpszRegister = NULL, LPCTSTR* rglpszOverwrite = NULL);
+ // may want to UpdateRegistry if not run with /Embedded
+
+// Implementation
+protected:
+ virtual CCmdTarget* OnCreateObject();
+ CDocTemplate* m_pDocTemplate;
+
+private:
+ void UpdateRegistry(LPCTSTR lpszProgID);
+ // hide base class version of UpdateRegistry
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// System registry helpers
+
+// Helper to register server in case of no .REG file loaded
+BOOL AFXAPI AfxOleRegisterServerClass(
+ REFCLSID clsid, LPCTSTR lpszClassName,
+ LPCTSTR lpszShortTypeName, LPCTSTR lpszLongTypeName,
+ OLE_APPTYPE nAppType = OAT_SERVER,
+ LPCTSTR* rglpszRegister = NULL, LPCTSTR* rglpszOverwrite = NULL);
+
+// AfxOleRegisterHelper is a worker function used by AfxOleRegisterServerClass
+// (available for advanced registry work)
+BOOL AFXAPI AfxOleRegisterHelper(LPCTSTR* rglpszRegister,
+ LPCTSTR* rglpszSymbols, int nSymbols, BOOL bReplace);
+
+/////////////////////////////////////////////////////////////////////////////
+// Init & Term helpers
+
+BOOL AFXAPI AfxOleInit();
+void CALLBACK AfxOleTerm(BOOL bJustRevoke = FALSE);
+
+/////////////////////////////////////////////////////////////////////////////
+// Memory management helpers (for OLE task allocator memory)
+
+void* AFXAPI AfxAllocTaskMem(size_t nSize);
+void AFXAPI AfxFreeTaskMem(void* p);
+LPTSTR AFXAPI AfxAllocTaskString(LPCTSTR lpszString);
+
+/////////////////////////////////////////////////////////////////////////////
+// Special in-proc server APIs
+
+SCODE AFXAPI AfxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
+SCODE AFXAPI AfxDllCanUnloadNow(void);
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDISP_INLINE inline
+#include <afxole.inl>
+#undef _AFXDISP_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXDISP_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxdlgs.h b/public/sdk/inc/mfc30/afxdlgs.h
new file mode 100644
index 000000000..0deca1044
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxdlgs.h
@@ -0,0 +1,604 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDLGS_H__
+#define __AFXDLGS_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#include <commdlg.h> // common dialog APIs
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLGS - MFC Standard dialogs
+
+// Classes declared in this file
+
+ // CDialog
+ class CCommonDialog; // implementation base class
+
+ // modeless dialogs
+ class CFindReplaceDialog; // Find/FindReplace dialog
+
+ // modal dialogs
+ class CFileDialog; // FileOpen/FileSaveAs dialogs
+ class CColorDialog; // Color picker dialog
+ class CFontDialog; // Font chooser dialog
+ class CPrintDialog; // Print/PrintSetup dialogs
+
+
+ // CWnd
+ class CPropertySheet; // implements tabbed dialogs
+
+ // CDialog
+ class CPropertyPage; // Used with CPropertySheet for tabbed dialogs
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CCommonDialog - base class for all common dialogs
+
+class CCommonDialog : public CDialog
+{
+public:
+ CCommonDialog(CWnd* pParentWnd);
+
+// Implementation
+protected:
+ virtual void OnOK();
+ virtual void OnCancel();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFileDialog - used for FileOpen... or FileSaveAs...
+
+class CFileDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFileDialog)
+
+public:
+// Attributes
+ OPENFILENAME m_ofn; // open file parameter block
+
+// Constructors
+ CFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
+ LPCTSTR lpszDefExt = NULL,
+ LPCTSTR lpszFileName = NULL,
+ DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
+ LPCTSTR lpszFilter = NULL,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // Helpers for parsing file name after successful return
+ CString GetPathName() const; // return full path name
+ CString GetFileName() const; // return only filename
+ CString GetFileExt() const; // return only ext
+ CString GetFileTitle() const; // return file title
+ BOOL GetReadOnlyPref() const; // return TRUE if readonly checked
+
+// Overridable callbacks
+protected:
+ friend UINT CALLBACK _AfxCommDlgProc(HWND, UINT, WPARAM, LPARAM);
+ virtual UINT OnShareViolation(LPCTSTR lpszPathName);
+ virtual BOOL OnFileNameOK();
+ virtual void OnLBSelChangedNotify(UINT nIDBox, UINT iCurSel, UINT nCode);
+
+// Implementation
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ BOOL m_bOpenFileDialog; // TRUE for file open, FALSE for file save
+ CString m_strFilter; // filter string
+ // separate fields with '|', terminate with '||\0'
+ TCHAR m_szFileTitle[64]; // contains file title after return
+ TCHAR m_szFileName[_MAX_PATH]; // contains full path name after return
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFontDialog - used to select a font
+
+class CFontDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFontDialog)
+
+public:
+// Attributes
+ // font choosing parameter block
+ CHOOSEFONT m_cf;
+
+// Constructors
+ CFontDialog(LPLOGFONT lplfInitial = NULL,
+ DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS,
+ CDC* pdcPrinter = NULL,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // Retrieve the currently selected font while dialog is displayed
+ void GetCurrentFont(LPLOGFONT lplf);
+
+ // Helpers for parsing information after successful return
+ CString GetFaceName() const; // return the face name of the font
+ CString GetStyleName() const; // return the style name of the font
+ int GetSize() const; // return the pt size of the font
+ COLORREF GetColor() const; // return the color of the font
+ int GetWeight() const; // return the chosen font weight
+ BOOL IsStrikeOut() const; // return TRUE if strikeout
+ BOOL IsUnderline() const; // return TRUE if underline
+ BOOL IsBold() const; // return TRUE if bold font
+ BOOL IsItalic() const; // return TRUE if italic font
+
+// Implementation
+ LOGFONT m_lf; // default LOGFONT to store the info
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szStyleName[64]; // contains style name after return
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CColorDialog - used to select a color
+
+class CColorDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CColorDialog)
+
+public:
+// Attributes
+ // color chooser parameter block
+ CHOOSECOLOR m_cc;
+
+// Constructors
+ CColorDialog(COLORREF clrInit = 0, DWORD dwFlags = 0,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // Set the current color while dialog is displayed
+ void SetCurrentColor(COLORREF clr);
+
+ // Helpers for parsing information after successful return
+ COLORREF GetColor() const;
+ static COLORREF* PASCAL GetSavedCustomColors();
+
+// Overridable callbacks
+protected:
+ friend UINT CALLBACK _AfxCommDlgProc(HWND, UINT, WPARAM, LPARAM);
+ virtual BOOL OnColorOK(); // validate color
+
+// Implementation
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ //{{AFX_MSG(CColorDialog)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// for backward compatibility clrSavedCustom is defined as GetSavedCustomColors
+#define clrSavedCustom GetSavedCustomColors()
+
+/////////////////////////////////////////////////////////////////////////////
+// CPrintDialog - used for Print... and PrintSetup...
+
+class CPrintDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CPrintDialog)
+
+public:
+// Attributes
+ // print dialog parameter block (note this is a reference)
+ PRINTDLG& m_pd;
+
+// Constructors
+ CPrintDialog(BOOL bPrintSetupOnly,
+ // TRUE for Print Setup, FALSE for Print Dialog
+ DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS
+ | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // GetDefaults will not display a dialog but will get
+ // device defaults
+ BOOL GetDefaults();
+
+ // Helpers for parsing information after successful return
+ int GetCopies() const; // num. copies requested
+ BOOL PrintCollate() const; // TRUE if collate checked
+ BOOL PrintSelection() const; // TRUE if printing selection
+ BOOL PrintAll() const; // TRUE if printing all pages
+ BOOL PrintRange() const; // TRUE if printing page range
+ int GetFromPage() const; // starting page if valid
+ int GetToPage() const; // starting page if valid
+ LPDEVMODE GetDevMode() const; // return DEVMODE
+ CString GetDriverName() const; // return driver name
+ CString GetDeviceName() const; // return device name
+ CString GetPortName() const; // return output port name
+ HDC GetPrinterDC() const; // return HDC (caller must delete)
+
+ // This helper creates a DC based on the DEVNAMES and DEVMODE structures.
+ // This DC is returned, but also stored in m_pd.hDC as though it had been
+ // returned by CommDlg. It is assumed that any previously obtained DC
+ // has been/will be deleted by the user. This may be
+ // used without ever invoking the print/print setup dialogs.
+
+ HDC CreatePrinterDC();
+
+// Implementation
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+private:
+ PRINTDLG m_pdActual; // the Print/Print Setup need to share this
+protected:
+ // The following handle the case of print setup... from the print dialog
+ CPrintDialog(PRINTDLG& pdInit);
+ virtual CPrintDialog* AttachOnSetup();
+
+ //{{AFX_MSG(CPrintDialog)
+ afx_msg void OnPrintSetup();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Find/FindReplace modeless dialogs
+
+class CFindReplaceDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFindReplaceDialog)
+
+public:
+// Attributes
+ FINDREPLACE m_fr;
+
+// Constructors
+ CFindReplaceDialog();
+ // Note: you must allocate these on the heap.
+ // If you do not, you must derive and override PostNcDestroy()
+
+ BOOL Create(BOOL bFindDialogOnly, // TRUE for Find, FALSE for FindReplace
+ LPCTSTR lpszFindWhat,
+ LPCTSTR lpszReplaceWith = NULL,
+ DWORD dwFlags = FR_DOWN,
+ CWnd* pParentWnd = NULL);
+
+ // find/replace parameter block
+ static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
+
+// Operations
+ // Helpers for parsing information after successful return
+ CString GetReplaceString() const;// get replacement string
+ CString GetFindString() const; // get find string
+ BOOL SearchDown() const; // TRUE if search down, FALSE is up
+ BOOL FindNext() const; // TRUE if command is find next
+ BOOL MatchCase() const; // TRUE if matching case
+ BOOL MatchWholeWord() const; // TRUE if matching whole words only
+ BOOL ReplaceCurrent() const; // TRUE if replacing current string
+ BOOL ReplaceAll() const; // TRUE if replacing all occurrences
+ BOOL IsTerminating() const; // TRUE if terminating dialog
+
+// Implementation
+protected:
+ virtual void PostNcDestroy();
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szFindWhat[128];
+ TCHAR m_szReplaceWith[128];
+};
+
+////////////////////////////////////////////////////////////////////////////
+// CPropertyPage -- one page of a tabbed dialog
+
+class CPropertyPage : public CDialog
+{
+ DECLARE_DYNAMIC(CPropertyPage)
+
+// Construction
+public:
+ CPropertyPage(UINT nIDTemplate, UINT nIDCaption = 0);
+ CPropertyPage(LPCTSTR lpszTemplateName, UINT nIDCaption = 0);
+
+// Operations
+public:
+ void CancelToClose(); // called when the property sheet should display close instead of cancel
+ // lets the property sheet activate the apply now button
+ void SetModified(BOOL bChanged = TRUE);
+
+// Overridables
+public:
+ virtual BOOL OnSetActive(); // called when this page gets the focus
+ virtual BOOL OnKillActive(); // perform validation here
+ virtual void OnOK(); // ok or apply now pressed -- KillActive is called first
+ virtual void OnCancel(); // cancel pressed
+
+// Implementation
+public:
+ virtual ~CPropertyPage();
+ virtual BOOL PreTranslateMessage(MSG* pMsg); // handle tab, enter, and escape keys
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ // EndDialog is provided to generate an assert if it is called
+ void EndDialog(int nEndID);
+#endif
+
+protected:
+ CString m_strCaption;
+ BOOL m_bChanged;
+
+ void CommonConstruct(LPCTSTR lpszTemplateName, UINT nIDCaption);
+ // loads the resource indicated by CDialog::m_lpDialogTemplate
+ BOOL PreTranslateKeyDown(MSG* pMsg);
+ BOOL ProcessTab(MSG* pMsg); // handles tab key from PreTranslateMessage
+ BOOL CreatePage(); // called from CPropertySheet to create the dialog
+ // by loading the dialog resource into memory and
+ // turning off WS_CAPTION before creating
+ void LoadCaption();
+ // gets the caption of the dialog from the resource and puts it in m_strCaption
+
+ // Generated message map functions
+ //{{AFX_MSG(CPropertyPage)
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg void OnClose();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CPropertySheet;
+};
+
+////////////////////////////////////////////////////////////////////////////
+// CTabControl -- internal use only
+// Implementation for a generic row of tabs along the top of dialog
+// Future versions of MFC may or may not include this exact class.
+
+class CTabItem; // private to CTabControl implementation
+
+// TCN_ messages are tab control notifications
+#define TCN_TABCHANGING 1
+#define TCN_TABCHANGED 2
+
+class CTabControl : public CWnd
+{
+ DECLARE_DYNAMIC(CTabControl)
+
+public:
+// Construction
+ CTabControl();
+
+// Attributes
+ BOOL m_bInSize;
+ int m_nHeight;
+ BOOL SetCurSel(int nTab);
+ int GetCurSel() const;
+ int GetItemCount() const;
+
+// Operations
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+ void AddTab(LPCTSTR lpszCaption);
+ void RemoveTab(int nTab);
+
+// Implementation
+public:
+ virtual ~CTabControl();
+ BOOL NextTab(BOOL bNext);
+
+protected:
+ void Scroll(int nDirection);
+ void ScrollIntoView(int nTab);
+ void DrawFocusRect(CDC* pDC = NULL);
+ void InvalidateTab(int nTab, BOOL bInflate = TRUE);
+ int TabFromPoint(CPoint pt);
+ void Capture(int nDirection);
+ void LayoutTabsStacked(int nTab);
+ void LayoutTabsSingle(int nTab);
+
+ enum
+ {
+ SCROLL_LEFT = -5, // all the SCROLL_ items must be less
+ SCROLL_RIGHT = -6, // than -1 to avoid ID conflict
+ SCROLL_NULL = -7,
+ TIMER_ID = 15, // timer constants
+ TIMER_DELAY = 500
+ };
+
+ void DrawScrollers(CDC* pDC);
+
+ BOOL CanScroll();
+ void SetFirstTab(int nTab);
+ CTabItem* GetTabItem(int nTab) const;
+ BOOL IsTabVisible(int nTab, BOOL bComplete = FALSE) const;
+
+ // Member variables
+ HFONT m_hBoldFont;
+ HFONT m_hThinFont;
+ CRect m_rectScroll; // location of scroll buttons
+ int m_nCurTab; // index of current selected tab
+ int m_nFirstTab; // index of leftmost visible tab
+ int m_nScrollState; // shows whether left or right scroll btn is down
+ BOOL m_bScrollPause;// if we have capture, has the mouse wandered off btn?
+
+ CPtrArray m_tabs; // list of CTabItems, in order
+
+ // Generated message map functions
+ //{{AFX_MSG(CTabControl)
+ afx_msg void OnPaint();
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg UINT OnGetDlgCode();
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint point);
+ afx_msg void OnTimer(UINT nIDEvent);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnKillFocus(CWnd* pNewWnd);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+////////////////////////////////////////////////////////////////////////////
+// CPropertySheet -- a tabbed "dialog" (really a popup-window)
+
+class CPropertySheet : public CWnd
+{
+ DECLARE_DYNAMIC(CPropertySheet)
+
+// Construction
+public:
+ CPropertySheet(UINT nIDCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+ CPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+
+ // for modeless creation
+ BOOL Create(CWnd* pParentWnd = NULL, DWORD dwStyle =
+ WS_SYSMENU | WS_POPUP | WS_CAPTION | DS_MODALFRAME | WS_VISIBLE,
+ DWORD dwExStyle = WS_EX_DLGMODALFRAME);
+
+// Attributes
+public:
+ int GetPageCount() const;
+ CPropertyPage* GetPage(int nPage) const;
+
+// Operations
+public:
+ int DoModal();
+ void AddPage(CPropertyPage* pPage);
+ void RemovePage(CPropertyPage* pPage);
+ void RemovePage(int nPage);
+ void EndDialog(int nEndID); // used to terminate a modal dialog
+
+// Implementation
+public:
+ virtual ~CPropertySheet();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ void EnableStackedTabs(BOOL bStacked);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL DestroyWindow();
+ BOOL SetActivePage(int nPage);
+
+protected:
+ HWND FindNextControl(HWND hWnd, TCHAR ch);
+ void GotoControl(HWND hWnd, TCHAR ch);
+ BOOL ProcessChars(MSG* pMsg);
+ BOOL ProcessTab(MSG* pMsg);
+ BOOL CreateStandardButtons();
+ BOOL PumpMessage();
+ void PageChanged();
+ void CancelToClose();
+ void CommonConstruct(CWnd* pParent, UINT iSelectPage);
+ void RecalcLayout();
+ CPropertyPage* GetActivePage() const;
+ void CheckDefaultButton(HWND hFocusBefore, HWND hFocusAfter);
+ void CheckFocusChange();
+
+ // implementation data members
+ HFONT m_hFont; // sizes below dependent on this font
+ CSize m_sizeButton;
+ CSize m_sizeTabMargin;
+ int m_cxButtonGap;
+ BOOL m_bModeless;
+ BOOL m_bStacked;
+
+ int m_nCurPage;
+ int m_nID; // ID passed to EndDialog and returned from DoModal
+
+ CPtrArray m_pages; // array of CPropertyPage pointers
+ HWND m_hWndDefault; // current default push button if there is one
+ HWND m_hFocusWnd; // focus when we lost activation
+ HWND m_hLastFocus; // tracks last window with focus
+ CWnd* m_pParentWnd; // owner of the tabbed dialog
+ CString m_strCaption; // caption of the pseudo-dialog
+ CTabControl m_tabRow; // entire row of tabs at top of dialog
+ BOOL m_bParentDisabled; // TRUE if parent was disabled by DoModal
+
+ // Generated message map functions
+ //{{AFX_MSG(CPropertySheet)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnPaint();
+ afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
+ afx_msg void OnClose();
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnOK();
+ afx_msg void OnCancel();
+ afx_msg void OnApply();
+ afx_msg void OnTabChanged(NMHDR*, LRESULT*);
+ afx_msg void OnTabChanging(NMHDR*, LRESULT*);
+ afx_msg LRESULT OnGetFont(WPARAM, LPARAM);
+ afx_msg LRESULT OnCommandHelp(WPARAM, LPARAM);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg LRESULT OnMacintosh(WPARAM wParam, LPARAM lParam);
+#endif
+ DECLARE_MESSAGE_MAP()
+
+ friend class CPropertyPage; // for tab handler
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDLGS_INLINE inline
+#include <afxdlgs.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXDLGS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxdlgs.inl b/public/sdk/inc/mfc30/afxdlgs.inl
new file mode 100644
index 000000000..87e9bd6b0
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxdlgs.inl
@@ -0,0 +1,110 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDLGS.H
+
+#ifdef _AFXDLGS_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXDLGS_INLINE CCommonDialog::CCommonDialog(CWnd* pParentWnd)
+ : CDialog((UINT)0, pParentWnd) { }
+
+_AFXDLGS_INLINE CString CFileDialog::GetPathName() const
+ { return m_ofn.lpstrFile; }
+_AFXDLGS_INLINE CString CFileDialog::GetFileExt() const
+ { if (m_ofn.nFileExtension == 0) return (TCHAR)'\0';
+ else return m_ofn.lpstrFile + m_ofn.nFileExtension; }
+_AFXDLGS_INLINE CString CFileDialog::GetFileTitle() const
+ { return m_ofn.lpstrFileTitle; }
+_AFXDLGS_INLINE BOOL CFileDialog::GetReadOnlyPref() const
+ { return m_ofn.Flags & OFN_READONLY ? TRUE : FALSE; }
+_AFXDLGS_INLINE void CFontDialog::GetCurrentFont(LPLOGFONT lplf)
+ { ASSERT(m_hWnd != NULL); SendMessage(WM_CHOOSEFONT_GETLOGFONT,
+ 0, (DWORD)(LPVOID)lplf); }
+_AFXDLGS_INLINE CString CFontDialog::GetFaceName() const
+ { return (LPCTSTR)m_cf.lpLogFont->lfFaceName; }
+_AFXDLGS_INLINE CString CFontDialog::GetStyleName() const
+ { return m_cf.lpszStyle; }
+_AFXDLGS_INLINE int CFontDialog::GetSize() const
+ { return m_cf.iPointSize; }
+_AFXDLGS_INLINE int CFontDialog::GetWeight() const
+ { return (int)m_cf.lpLogFont->lfWeight; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsItalic() const
+ { return m_cf.lpLogFont->lfItalic ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsStrikeOut() const
+ { return m_cf.lpLogFont->lfStrikeOut ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsBold() const
+ { return m_cf.lpLogFont->lfWeight == FW_BOLD ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsUnderline() const
+ { return m_cf.lpLogFont->lfUnderline ? TRUE : FALSE; }
+_AFXDLGS_INLINE COLORREF CFontDialog::GetColor() const
+ { return m_cf.rgbColors; }
+_AFXDLGS_INLINE COLORREF CColorDialog::GetColor() const
+ { return m_cc.rgbResult; }
+_AFXDLGS_INLINE COLORREF* PASCAL CColorDialog::GetSavedCustomColors()
+ { return &AfxGetWinState()->m_crSavedCustom[0]; }
+_AFXDLGS_INLINE BOOL CPrintDialog::GetDefaults()
+ { m_pd.Flags |= PD_RETURNDEFAULT;
+ return ::PrintDlg(&m_pd); }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintSelection() const
+ { return m_pd.Flags & PD_SELECTION ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintRange() const
+ { return m_pd.Flags & PD_PAGENUMS ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintAll() const
+ { return !PrintRange() && !PrintSelection() ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintCollate() const
+ { return m_pd.Flags & PD_COLLATE ? TRUE : FALSE; }
+_AFXDLGS_INLINE int CPrintDialog::GetFromPage() const
+ { return (PrintRange() ? m_pd.nFromPage :-1); }
+_AFXDLGS_INLINE int CPrintDialog::GetToPage() const
+ { return (PrintRange() ? m_pd.nToPage :-1); }
+_AFXDLGS_INLINE HDC CPrintDialog::GetPrinterDC() const
+ { ASSERT_VALID(this);
+ ASSERT(m_pd.Flags & PD_RETURNDC);
+ return m_pd.hDC; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::IsTerminating() const
+ { return m_fr.Flags & FR_DIALOGTERM ? TRUE : FALSE ; }
+_AFXDLGS_INLINE CString CFindReplaceDialog::GetReplaceString() const
+ { return m_fr.lpstrReplaceWith; }
+_AFXDLGS_INLINE CString CFindReplaceDialog::GetFindString() const
+ { return m_fr.lpstrFindWhat; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::SearchDown() const
+ { return m_fr.Flags & FR_DOWN ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::FindNext() const
+ { return m_fr.Flags & FR_FINDNEXT ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::MatchCase() const
+ { return m_fr.Flags & FR_MATCHCASE ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::MatchWholeWord() const
+ { return m_fr.Flags & FR_WHOLEWORD ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::ReplaceCurrent() const
+ { return m_fr. Flags & FR_REPLACE ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::ReplaceAll() const
+ { return m_fr.Flags & FR_REPLACEALL ? TRUE : FALSE; }
+
+// CPropertySheet/CPropertyPage/CTabControl inlines
+_AFXDLGS_INLINE int CTabControl::GetCurSel() const
+ { return m_nCurTab; }
+_AFXDLGS_INLINE CTabItem* CTabControl::GetTabItem(int nTab) const
+ { return (CTabItem*)m_tabs[nTab]; }
+_AFXDLGS_INLINE int CTabControl::GetItemCount() const
+ { return m_tabs.GetSize(); }
+_AFXDLGS_INLINE void CPropertySheet::EnableStackedTabs(BOOL bStacked)
+ { m_bStacked = bStacked; }
+_AFXDLGS_INLINE int CPropertySheet::GetPageCount() const
+ { return m_pages.GetSize(); }
+_AFXDLGS_INLINE CPropertyPage* CPropertySheet::GetPage(int nPage) const
+ { return (CPropertyPage*)m_pages[nPage]; }
+_AFXDLGS_INLINE CPropertyPage* CPropertySheet::GetActivePage() const
+ {return GetPage(m_nCurPage);}
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXDLGS_INLINE
diff --git a/public/sdk/inc/mfc30/afxdll_.h b/public/sdk/inc/mfc30/afxdll_.h
new file mode 100644
index 000000000..f1734498d
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxdll_.h
@@ -0,0 +1,90 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxdll_.h - extensions to AFXWIN.H used for the 'AFXDLL' version
+// This file contains MFC library implementation details as well
+// as APIs for writing MFC Extension DLLs.
+// Please refer to Technical Note 033 (TN033) for more details.
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _AFXDLL
+ #error file must be compiled with _AFXDLL
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFX_EXTENSION_MODULE - special struct used during DLL initialization
+
+struct AFX_EXTENSION_MODULE
+{
+ BOOL bInitialized;
+ HMODULE hModule;
+ HMODULE hResource;
+ CRuntimeClass* pFirstSharedClass;
+ COleObjectFactory* pFirstSharedFactory;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDynLinkLibrary - for implementation of MFC Extension DLLs
+
+class COleObjectFactory;
+
+class CDynLinkLibrary : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDynLinkLibrary)
+public:
+
+// Constructor
+ CDynLinkLibrary(AFX_EXTENSION_MODULE& state);
+
+// Attributes
+ HMODULE m_hModule;
+ HMODULE m_hResource; // for shared resources
+ CRuntimeClass* m_pFirstSharedClass;
+ COleObjectFactory* m_pFirstSharedFactory;
+ BOOL m_bSystem; // TRUE only for MFC DLLs
+
+// Implementation
+public:
+ CDynLinkLibrary* m_pNextDLL; // simple singly linked list
+ virtual ~CDynLinkLibrary();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+};
+
+// get best fitting resource
+HINSTANCE AFXAPI AfxFindResourceHandle(LPCTSTR lpszName, LPCTSTR lpszType);
+
+// Call in DLL's LibMain
+BOOL AFXAPI AfxInitExtensionModule(AFX_EXTENSION_MODULE& state, HMODULE hMod);
+
+// Optional: call on final process detach in your DLL
+// (not necessary unless clients can dynamically load/unload your DLL)
+void AFXAPI AfxTermExtensionModule(AFX_EXTENSION_MODULE& state);
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxdllx.h b/public/sdk/inc/mfc30/afxdllx.h
new file mode 100644
index 000000000..08ffd1427
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxdllx.h
@@ -0,0 +1,20 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLLX.H: Extra header for building an MFC Extension DLL
+// This file is really a source file that you should include in the
+// main source file of your DLL.
+/////////////////////////////////////////////////////////////////////////////
+
+// Note: this file is not required with the Win32 version of MFC, but it
+// is provided for backward compatibility with existing extension DLLs.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxext.h b/public/sdk/inc/mfc30/afxext.h
new file mode 100644
index 000000000..52e5c6f93
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxext.h
@@ -0,0 +1,992 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXEXT_H__
+#define __AFXEXT_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXEXT - MFC Advanced Extensions and Advanced Customizable classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CButton
+ class CBitmapButton; // Bitmap button (self-draw)
+
+ class CControlBar; // control bar
+ class CStatusBar; // status bar
+ class CToolBar; // toolbar
+ class CDialogBar; // dialog as control bar
+
+ class CSplitterWnd; // splitter manager
+
+ //CView
+ //CScrollView
+ class CFormView; // view with a dialog template
+ class CEditView; // simple text editor view
+
+ //CDC
+ class CMetaFileDC; // a metafile with proxy
+
+class CRectTracker; // tracker for rectangle objects
+
+// information structures
+struct CPrintInfo; // Printing context
+struct CPrintPreviewState; // Print Preview context/state
+struct CCreateContext; // Creation context
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Simple bitmap button
+
+// CBitmapButton - push-button with 1->4 bitmap images
+class CBitmapButton : public CButton
+{
+ DECLARE_DYNAMIC(CBitmapButton)
+public:
+// Construction
+ CBitmapButton();
+
+ BOOL LoadBitmaps(LPCTSTR lpszBitmapResource,
+ LPCTSTR lpszBitmapResourceSel = NULL,
+ LPCTSTR lpszBitmapResourceFocus = NULL,
+ LPCTSTR lpszBitmapResourceDisabled = NULL);
+ BOOL LoadBitmaps(UINT nIDBitmapResource,
+ UINT nIDBitmapResourceSel = 0,
+ UINT nIDBitmapResourceFocus = 0,
+ UINT nIDBitmapResourceDisabled = 0);
+ BOOL AutoLoad(UINT nID, CWnd* pParent);
+
+// Operations
+ void SizeToContent();
+
+// Implementation:
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+protected:
+ // all bitmaps must be the same size
+ CBitmap m_bitmap; // normal image (REQUIRED)
+ CBitmap m_bitmapSel; // selected image (OPTIONAL)
+ CBitmap m_bitmapFocus; // focused but not selected (OPTIONAL)
+ CBitmap m_bitmapDisabled; // disabled bitmap (OPTIONAL)
+
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Control Bars
+
+// forward declarations (internal to implementation)
+class CDockBar;
+class CDockContext;
+class _AFX_BARINFO;
+struct AFX_SIZEPARENTPARAMS;
+
+class CControlBar : public CWnd
+{
+ DECLARE_DYNAMIC(CControlBar)
+// Construction
+protected:
+ CControlBar();
+
+// Attributes
+public:
+ int GetCount() const;
+
+ // for styles specific to CControlBar
+ DWORD GetBarStyle();
+ void SetBarStyle(DWORD dwStyle);
+
+ BOOL m_bAutoDelete;
+
+// Operations
+ void EnableDocking(DWORD dwDockStyle);
+
+// Implementation
+public:
+ virtual ~CControlBar();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void DelayShow(BOOL bShow);
+ // allows hiding or showing on idle time
+ virtual BOOL IsVisible() const;
+ // works even if DelayShow or DelayHide is pending!
+ virtual DWORD RecalcDelayShow(AFX_SIZEPARENTPARAMS* lpLayout);
+ // commits any pending DelayShow calls
+
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual BOOL IsDockBar() const;
+ CFrameWnd* GetDockingFrame() const;
+
+ // info about bar (for status bar and toolbar)
+ int m_cxLeftBorder, m_cxRightBorder;
+ int m_cyTopBorder, m_cyBottomBorder;
+ int m_cxDefaultGap; // default gap value
+#ifdef _MAC
+ BOOL m_bMonochrome; // whether to draw in monochrome or color
+#endif
+
+ // array of elements
+ int m_nCount;
+ void* m_pData; // m_nCount elements - type depends on derived class
+
+ // support for delayed hide/show
+ enum StateFlags
+ { delayHide = 1, delayShow = 2, tempHide = 4 };
+ UINT m_nStateFlags;
+
+ // support for docking
+ DWORD m_dwStyle; // creation style (used for layout)
+ DWORD m_dwDockStyle;// indicates how bar can be docked
+ CFrameWnd* m_pDockSite; // current dock site, if dockable
+ CDockBar* m_pDockBar; // current dock bar, if dockable
+ CDockContext* m_pDockContext; // used during dragging
+ BOOL IsFloating() const;
+
+ void GetBarInfo(_AFX_BARINFO* pInfo);
+ void SetBarInfo(_AFX_BARINFO* pInfo, CFrameWnd* pFrameWnd);
+
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) = 0;
+ virtual void PostNcDestroy();
+
+ virtual void DoPaint(CDC* pDC);
+ void DrawBorders(CDC* pDC, const CRect& rectArg);
+
+ // tooltip support (global state)
+ static BOOL m_bStatusSet; // set to TRUE when status bar has been set
+ static BOOL m_bDelayDone; // set to TRUE when delay for has expired
+ static CWnd* m_pToolTip; // current tooltip window (if not NULL)
+ static CPoint m_pointLastMove; // last mouse move (relative to screen)
+ static UINT m_nHitLast; // last hit test code
+ static CControlBar* m_pBarLast; // last CControlBar tooltip displayed for
+
+ virtual CWnd* CreateToolTip();
+ virtual UINT OnCmdHitTest(CPoint point, CPoint* pCenter);
+ void ShowToolTip(CPoint point, UINT nHit);
+ virtual void DestroyToolTip(BOOL bIdleStatus, BOOL bResetTimer);
+ int HitTestToolTip(CPoint point, UINT* pHit);
+ void FilterToolTipMsg(UINT message, CPoint point);
+ static void CancelToolTips();
+
+ // implementation helpers
+ BOOL AllocElements(int nElements, int cbElement); // one time only
+ LRESULT WindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ void CalcInsideRect(CRect& rect, BOOL bHorz) const; // adjusts borders etc
+#ifdef _MAC
+ void OnReposition();
+ BOOL CheckMonochrome();
+#endif
+
+ //{{AFX_MSG(CControlBar)
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnDestroy();
+ afx_msg void OnPaint();
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnInitialUpdate();
+ afx_msg LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint pt );
+ afx_msg void OnTimer(UINT nIDEvent);
+ afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
+ afx_msg void OnCancelMode();
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT nMsg);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg LRESULT OnMacintosh(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnSysColorChange();
+ afx_msg void OnMove(int x, int y);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+#endif
+ DECLARE_MESSAGE_MAP()
+
+ friend class CFrameWnd;
+ friend class CDockBar;
+};
+
+////////////////////////////////////////////
+// CStatusBar control
+
+struct AFX_STATUSPANE; // private to implementation
+
+class CStatusBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CStatusBar)
+// Construction
+public:
+ CStatusBar();
+ BOOL Create(CWnd* pParentWnd,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
+ UINT nID = AFX_IDW_STATUS_BAR);
+ BOOL SetIndicators(const UINT* lpIDArray, int nIDCount);
+
+// Attributes
+public: // standard control bar things
+ int CommandToIndex(UINT nIDFind) const;
+ UINT GetItemID(int nIndex) const;
+ void GetItemRect(int nIndex, LPRECT lpRect) const;
+public:
+ void GetPaneText(int nIndex, CString& s) const;
+ BOOL SetPaneText(int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE);
+ void GetPaneInfo(int nIndex, UINT& nID, UINT& nStyle, int& cxWidth) const;
+ void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth);
+
+// Implementation
+public:
+ virtual ~CStatusBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ inline UINT _GetPaneStyle(int nIndex) const;
+ void _SetPaneStyle(int nIndex, UINT nStyle);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ void EnableDocking(DWORD dwDockStyle);
+#endif
+
+protected:
+ HFONT m_hFont;
+ int m_cxSizeBox; // for Win4 style size box in corner
+ BOOL m_bHideSizeBox; // hide size box if TRUE
+
+ inline AFX_STATUSPANE* _GetPanePtr(int nIndex) const;
+ void DrawStatusText(CDC* pDC, const CRect& rect,
+ LPCTSTR lpszText, UINT nStyle);
+ virtual void DoPaint(CDC* pDC);
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+ //{{AFX_MSG(CStatusBar)
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetFont(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnWinIniChange(LPCTSTR lpszSection);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// Styles for status bar panes
+#define SBPS_NORMAL 0x0000
+#define SBPS_NOBORDERS 0x0100
+#define SBPS_POPOUT 0x0200
+#define SBPS_DISABLED 0x0400
+#define SBPS_STRETCH 0x0800 // stretch to fill status bar - 1st pane only
+
+////////////////////////////////////////////
+// CToolBar control
+
+struct AFX_TBBUTTON; // private to implementation
+
+#ifndef _MAC
+HBITMAP AFXAPI AfxLoadSysColorBitmap(HINSTANCE hInst, HRSRC hRsrc);
+#else
+HBITMAP AFXAPI AfxLoadSysColorBitmap(HINSTANCE hInst, HRSRC hRsrc,
+ HDC hDCGlyphs, BOOL bMonochrome);
+#endif
+
+class CToolBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CToolBar)
+
+// Construction
+public:
+ CToolBar();
+ BOOL Create(CWnd* pParentWnd,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP,
+ UINT nID = AFX_IDW_TOOLBAR);
+
+ void SetSizes(SIZE sizeButton, SIZE sizeImage);
+ // button size should be bigger than image
+ void SetHeight(int cyHeight);
+ // call after SetSizes, height overrides bitmap size
+ BOOL LoadBitmap(LPCTSTR lpszResourceName);
+ BOOL LoadBitmap(UINT nIDResource);
+ BOOL SetButtons(const UINT* lpIDArray, int nIDCount);
+ // lpIDArray can be NULL to allocate empty buttons
+
+// Attributes
+public: // standard control bar things
+ int CommandToIndex(UINT nIDFind) const;
+ UINT GetItemID(int nIndex) const;
+ virtual void GetItemRect(int nIndex, LPRECT lpRect) const;
+
+public:
+ // for changing button info
+ void GetButtonInfo(int nIndex, UINT& nID, UINT& nStyle, int& iImage) const;
+ void SetButtonInfo(int nIndex, UINT nID, UINT nStyle, int iImage);
+
+// Implementation
+public:
+ virtual ~CToolBar();
+ inline UINT _GetButtonStyle(int nIndex) const;
+ void _SetButtonStyle(int nIndex, UINT nStyle);
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ inline AFX_TBBUTTON* _GetButtonPtr(int nIndex) const;
+ void InvalidateButton(int nIndex);
+ void UpdateButton(int nIndex);
+ void CreateMask(int iImage, CPoint offset,
+ BOOL bHilite, BOOL bHiliteShadow);
+
+ // for custom drawing
+ struct DrawState
+ {
+ HBITMAP hbmMono;
+ HBITMAP hbmMonoOld;
+ HBITMAP hbmOldGlyphs;
+ };
+ BOOL PrepareDrawButton(DrawState& ds);
+ BOOL DrawButton(CDC* pDC, int x, int y, int iImage, UINT nStyle);
+#ifdef _MAC
+ BOOL DrawMonoButton(CDC* pDC, int x, int y, int dx, int dy,
+ int iImage, UINT nStyle);
+#endif
+ void EndDrawButton(DrawState& ds);
+
+protected:
+ CSize m_sizeButton; // size of button
+ CSize m_sizeImage; // size of glyph
+ int m_cxSharedBorder; // shared x border between buttons
+ int m_cySharedBorder; // shared y border between buttons
+ HBITMAP m_hbmImageWell; // glyphs only
+ int m_iButtonCapture; // index of button with capture (-1 => none)
+ HRSRC m_hRsrcImageWell; // handle to loaded resource for image well
+ HINSTANCE m_hInstImageWell; // instance handle to load image well from
+
+#ifdef _MAC
+ // Macintosh toolbars need per-toolbar DCs in order to
+ // work correctly in multiple-monitor environments
+
+ HDC m_hDCGlyphs; // per-toolbar DC for glyph images
+ HDC m_hDCMono; // per-toolbar DC for mono glyph masks
+#endif
+ virtual void DoPaint(CDC* pDC);
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+ virtual int HitTest(CPoint point);
+ virtual UINT OnCmdHitTest(CPoint point, CPoint* pCenter);
+
+ //{{AFX_MSG(CToolBar)
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnCancelMode();
+ afx_msg void OnSysColorChange();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// Styles for toolbar buttons
+#define TBBS_BUTTON 0x00 // this entry is button
+#define TBBS_SEPARATOR 0x01 // this entry is a separator
+#define TBBS_CHECKBOX 0x02 // this is an auto check/radio button
+
+// styles for display states
+#define TBBS_CHECKED 0x0100 // button is checked/down
+#define TBBS_INDETERMINATE 0x0200 // third state
+#define TBBS_DISABLED 0x0400 // element is disabled
+#define TBBS_PRESSED 0x0800 // button is being depressed - mouse down
+
+////////////////////////////////////////////
+// CDialogBar control
+// This is a control bar built from a dialog template. It is a modeless
+// dialog that delegates all control notifications to the parent window
+// of the control bar [the grandparent of the control]
+
+class CDialogBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CDialogBar)
+
+// Construction
+public:
+ CDialogBar();
+ BOOL Create(CWnd* pParentWnd, LPCTSTR lpszTemplateName,
+ UINT nStyle, UINT nID);
+ BOOL Create(CWnd* pParentWnd, UINT nIDTemplate,
+ UINT nStyle, UINT nID);
+
+// Implementation
+public:
+ virtual ~CDialogBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ CSize m_sizeDefault;
+
+protected:
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Splitter Window
+
+#define SPLS_DYNAMIC_SPLIT 0x0001
+#define SPLS_INVERT_TRACKER 0x0002
+
+class CSplitterWnd : public CWnd
+{
+ DECLARE_DYNAMIC(CSplitterWnd)
+
+// Construction
+public:
+ CSplitterWnd();
+ // Create a single view type splitter with multiple splits
+ BOOL Create(CWnd* pParentWnd,
+ int nMaxRows, int nMaxCols, SIZE sizeMin,
+ CCreateContext* pContext,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE |
+ WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
+ UINT nID = AFX_IDW_PANE_FIRST);
+
+ // Create a multiple view type splitter with static layout
+ BOOL CreateStatic(CWnd* pParentWnd,
+ int nRows, int nCols,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE,
+ UINT nID = AFX_IDW_PANE_FIRST);
+
+ virtual BOOL CreateView(int row, int col, CRuntimeClass* pViewClass,
+ SIZE sizeInit, CCreateContext* pContext);
+
+// Attributes
+public:
+ int GetRowCount() const;
+ int GetColumnCount() const;
+
+ // information about a specific row or column
+ void GetRowInfo(int row, int& cyCur, int& cyMin) const;
+ void SetRowInfo(int row, int cyIdeal, int cyMin);
+ void GetColumnInfo(int col, int& cxCur, int& cxMin) const;
+ void SetColumnInfo(int col, int cxIdeal, int cxMin);
+
+ // for setting and getting shared scroll bar style
+ DWORD GetScrollStyle() const;
+ void SetScrollStyle(DWORD dwStyle);
+
+ // views inside the splitter
+ CWnd* GetPane(int row, int col) const;
+ BOOL IsChildPane(CWnd* pWnd, int* pRow, int* pCol);
+ BOOL IsChildPane(CWnd* pWnd, int& row, int& col); // obsolete
+ int IdFromRowCol(int row, int col) const;
+
+// Operations
+public:
+ virtual void RecalcLayout(); // call after changing sizes
+
+// Implementation Overridables
+protected:
+ // to customize the drawing
+ enum ESplitType { splitBox, splitBar, splitIntersection, splitBorder };
+ virtual void OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rect);
+ virtual void OnInvertTracker(const CRect& rect);
+
+ // for customizing scrollbar regions
+ virtual BOOL CreateScrollBarCtrl(DWORD dwStyle, UINT nID);
+
+ // for customizing DYNAMIC_SPLIT behavior
+ virtual void DeleteView(int row, int col);
+ virtual BOOL SplitRow(int cyBefore);
+ virtual BOOL SplitColumn(int cxBefore);
+ virtual void DeleteRow(int rowDelete);
+ virtual void DeleteColumn(int colDelete);
+
+ // determining active pane from focus or active view in frame
+ virtual CWnd* GetActivePane(int* pRow = NULL, int* pCol = NULL);
+ CWnd* GetActivePane(int& row, int& col); // obsolete
+ virtual void SetActivePane(int row, int col, CWnd* pWnd = NULL);
+
+// Implementation
+public:
+ virtual ~CSplitterWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // high level command operations - called by default view implementation
+ virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
+ virtual void ActivateNext(BOOL bPrev = FALSE);
+ virtual BOOL DoKeyboardSplit();
+
+ // implementation structure
+ struct CRowColInfo
+ {
+ int nMinSize; // below that try not to show
+ int nIdealSize; // user set size
+ // variable depending on the available size layout
+ int nCurSize; // 0 => invisible, -1 => nonexistant
+ };
+
+ // syncronized scrolling
+ virtual BOOL DoScroll(CView* pViewFrom, UINT nScrollCode,
+ BOOL bDoScroll = TRUE);
+ virtual BOOL DoScrollBy(CView* pViewFrom, CSize sizeScroll,
+ BOOL bDoScroll = TRUE);
+
+protected:
+ // customizable implementation attributes (set by constructor or Create)
+ CRuntimeClass* m_pDynamicViewClass;
+ int m_nMaxRows, m_nMaxCols;
+
+ // implementation attributes which control layout of the splitter
+ int m_cxSplitter, m_cySplitter; // size of splitter bar
+ int m_cxBorderShare, m_cyBorderShare; // space on either side of splitter
+ int m_cxSplitterGap, m_cySplitterGap; // amount of space between panes
+ int m_cxBorder, m_cyBorder; // borders in client area
+
+ // current state information
+ int m_nRows, m_nCols;
+ BOOL m_bHasHScroll, m_bHasVScroll;
+ CRowColInfo* m_pColInfo;
+ CRowColInfo* m_pRowInfo;
+
+ // Tracking info - only valid when 'm_bTracking' is set
+ BOOL m_bTracking, m_bTracking2;
+ CPoint m_ptTrackOffset;
+ CRect m_rectLimit;
+ CRect m_rectTracker, m_rectTracker2;
+ int m_htTrack;
+
+ // implementation routines
+ BOOL CreateCommon(CWnd* pParentWnd, SIZE sizeMin, DWORD dwStyle, UINT nID);
+ int HitTest(CPoint pt) const;
+ void GetInsideRect(CRect& rect) const;
+ void GetHitRect(int ht, CRect& rect);
+ void TrackRowSize(int y, int row);
+ void TrackColumnSize(int x, int col);
+ void DrawAllSplitBars(CDC* pDC, int cxInside, int cyInside);
+ void SetSplitCursor(int ht);
+ CWnd* GetSizingParent();
+
+ // starting and stopping tracking
+ virtual void StartTracking(int ht);
+ virtual void StopTracking(BOOL bAccept);
+
+ // special command routing to frame
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ //{{AFX_MSG(CSplitterWnd)
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint pt);
+ afx_msg void OnPaint();
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint pt);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint pt);
+ afx_msg void OnCancelMode();
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnDisplayChange();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFormView - generic view constructed from a dialog template
+
+class CFormView : public CScrollView
+{
+ DECLARE_DYNAMIC(CFormView)
+
+// Construction
+protected: // must derive your own class
+ CFormView(LPCTSTR lpszTemplateName);
+ CFormView(UINT nIDTemplate);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ LPCTSTR m_lpszTemplateName;
+ CCreateContext* m_pCreateContext;
+ HWND m_hWndFocus; // last window to have focus
+
+ virtual void OnDraw(CDC* pDC); // default does nothing
+ // special case override of child window creation
+ virtual BOOL Create(LPCTSTR, LPCTSTR, DWORD,
+ const RECT&, CWnd*, UINT, CCreateContext*);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void OnActivateView(BOOL, CView*, CView*);
+ virtual void OnActivateFrame(UINT, CFrameWnd*);
+ BOOL SaveFocusControl(); // updates m_hWndFocus
+
+ //{{AFX_MSG(CFormView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CEditView - simple text editor view
+
+class CEditView : public CView
+{
+ DECLARE_DYNCREATE(CEditView)
+
+// Construction
+public:
+ CEditView();
+ static AFX_DATA const DWORD dwStyleDefault;
+
+// Attributes
+public:
+ // CEdit control access
+ CEdit& GetEditCtrl() const;
+
+ // presentation attributes
+ CFont* GetPrinterFont() const;
+ void SetPrinterFont(CFont* pFont);
+#ifndef _MAC
+ void SetTabStops(int nTabStops);
+#endif
+
+ // other attributes
+ void GetSelectedText(CString& strResult) const;
+
+// Operations
+public:
+ BOOL FindText(LPCTSTR lpszFind, BOOL bNext = TRUE, BOOL bCase = TRUE);
+ void SerializeRaw(CArchive& ar);
+ UINT PrintInsideRect(CDC* pDC, RECT& rectLayout, UINT nIndexStart,
+ UINT nIndexStop);
+
+// Overrideables
+protected:
+ virtual void OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase);
+ virtual void OnReplaceSel(LPCTSTR lpszFind, BOOL bNext, BOOL bCase,
+ LPCTSTR lpszReplace);
+ virtual void OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
+ BOOL bCase);
+ virtual void OnTextNotFound(LPCTSTR lpszFind);
+
+// Implementation
+public:
+ virtual ~CEditView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnDraw(CDC* pDC);
+ virtual void Serialize(CArchive& ar);
+ virtual void DeleteContents();
+ void ReadFromArchive(CArchive& ar, UINT nLen);
+ void WriteToArchive(CArchive& ar);
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
+
+ static AFX_DATA const UINT nMaxSize;
+ // maximum number of characters supported
+
+protected:
+#ifndef _MAC
+ int m_nTabStops; // tab stops in dialog units
+#endif
+ LPTSTR m_pShadowBuffer; // special shadow buffer only used in Win32s
+ UINT m_nShadowSize;
+
+ CUIntArray m_aPageStart; // array of starting pages
+ HFONT m_hPrinterFont; // if NULL, mirror display font
+ HFONT m_hMirrorFont; // font object used when mirroring
+
+ // construction
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ // printing support
+ virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo = NULL);
+ BOOL PaginateTo(CDC* pDC, CPrintInfo* pInfo);
+
+ // find & replace support
+ void OnEditFindReplace(BOOL bFindOnly);
+ BOOL InitializeReplace();
+ BOOL SameAsSelected(LPCTSTR lpszCompare, BOOL bCase);
+
+ // buffer access
+ LPCTSTR LockBuffer() const;
+ void UnlockBuffer() const;
+ UINT GetBufferLength() const;
+
+ // special overrides for implementation
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+ //{{AFX_MSG(CEditView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnPaint();
+ afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnUpdateNeedSel(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedClip(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedText(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedFind(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
+ afx_msg void OnEditChange();
+ afx_msg void OnEditCut();
+ afx_msg void OnEditCopy();
+ afx_msg void OnEditPaste();
+ afx_msg void OnEditClear();
+ afx_msg void OnEditUndo();
+ afx_msg void OnEditSelectAll();
+ afx_msg void OnEditFind();
+ afx_msg void OnEditReplace();
+ afx_msg void OnEditRepeat();
+ afx_msg LRESULT OnFindReplaceCmd(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMetaFileDC
+
+class CMetaFileDC : public CDC
+{
+ DECLARE_DYNAMIC(CMetaFileDC)
+
+// Constructors
+public:
+ CMetaFileDC();
+ BOOL Create(LPCTSTR lpszFilename = NULL);
+#ifndef _MAC
+ BOOL CreateEnhanced(CDC* pDCRef, LPCTSTR lpszFileName,
+ LPCRECT lpBounds, LPCTSTR lpszDescription);
+#endif
+
+// Operations
+ HMETAFILE Close();
+#ifndef _MAC
+ HENHMETAFILE CloseEnhanced();
+#endif
+
+// Implementation
+public:
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+
+protected:
+ virtual void SetOutputDC(HDC hDC); // Set the Output DC -- Not allowed
+ virtual void ReleaseOutputDC(); // Release the Output DC -- Not allowed
+
+public:
+ virtual ~CMetaFileDC();
+
+// Clipping Functions (use the Attribute DC's clip region)
+ virtual int GetClipBox(LPRECT lpRect) const;
+ virtual BOOL PtVisible(int x, int y) const;
+ BOOL PtVisible(POINT point) const;
+ virtual BOOL RectVisible(LPCRECT lpRect) const;
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ BOOL TextOut(int x, int y, const CString& str);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+
+// Printer Escape Functions
+ virtual int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData);
+
+// Viewport Functions
+ virtual CPoint SetViewportOrg(int x, int y);
+ CPoint SetViewportOrg(POINT point);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+ virtual CSize SetViewportExt(int x, int y);
+ CSize SetViewportExt(SIZE size);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+
+protected:
+ void AdjustCP(int cx);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRectTracker - simple rectangular tracking rectangle w/resize handles
+
+class CRectTracker
+{
+public:
+// Constructors
+ CRectTracker();
+ CRectTracker(LPCRECT lpSrcRect, UINT nStyle);
+
+// Style Flags
+ enum StyleFlags
+ {
+ solidLine = 1, dottedLine = 2, hatchedBorder = 4,
+ resizeInside = 8, resizeOutside = 16, hatchInside = 32,
+ };
+
+// Hit-Test codes
+ enum TrackerHit
+ {
+ hitNothing = -1,
+ hitTopLeft = 0, hitTopRight = 1, hitBottomRight = 2, hitBottomLeft = 3,
+ hitTop = 4, hitRight = 5, hitBottom = 6, hitLeft = 7, hitMiddle = 8
+ };
+
+// Attributes
+ UINT m_nStyle; // current state
+ CRect m_rect; // current position (always in pixels)
+ CSize m_sizeMin; // minimum X and Y size during track operation
+ int m_nHandleSize; // size of resize handles (default from WIN.INI)
+
+// Operations
+ void Draw(CDC* pDC) const;
+ void GetTrueRect(LPRECT lpTrueRect) const;
+ BOOL SetCursor(CWnd* pWnd, UINT nHitTest) const;
+ BOOL Track(CWnd* pWnd, CPoint point, BOOL bAllowInvert = FALSE,
+ CWnd* pWndClipTo = NULL);
+ BOOL TrackRubberBand(CWnd* pWnd, CPoint point, BOOL bAllowInvert = TRUE);
+ int HitTest(CPoint point) const;
+ int NormalizeHit(int nHandle) const;
+
+// Overridables
+ virtual void DrawTrackerRect(LPCRECT lpRect, CWnd* pWndClipTo,
+ CDC* pDC, CWnd* pWnd);
+ virtual void AdjustRect(int nHandle, LPRECT lpRect);
+ virtual void OnChangedRect(const CRect& rectOld);
+
+// Implementation
+public:
+ virtual ~CRectTracker();
+
+protected:
+ BOOL m_bAllowInvert; // flag passed to Track or TrackRubberBand
+ CRect m_rectLast;
+ CSize m_sizeLast;
+ BOOL m_bErase; // TRUE if DrawTrackerRect is called for erasing
+ BOOL m_bFinalErase; // TRUE if DragTrackerRect called for final erase
+
+ // implementation helpers
+ int HitTestHandles(CPoint point) const;
+ virtual UINT GetHandleMask() const;
+ void GetHandleRect(int nHandle, CRect* pHandleRect) const;
+ void GetModifyPointers(int nHandle, int**ppx, int**ppy, int* px, int*py);
+ virtual int GetHandleSize(LPCRECT lpRect = NULL) const;
+ BOOL TrackHandle(int nHandle, CWnd* pWnd, CPoint point, CWnd* pWndClipTo);
+ void Construct();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Informational data structures
+
+struct CPrintInfo // Printing information structure
+{
+ CPrintInfo();
+ ~CPrintInfo();
+
+ CPrintDialog* m_pPD; // pointer to print dialog
+
+ BOOL m_bPreview; // TRUE if in preview mode
+ BOOL m_bContinuePrinting;// set to FALSE to prematurely end printing
+ UINT m_nCurPage; // Current page
+ UINT m_nNumPreviewPages; // Desired number of preview pages
+ CString m_strPageDesc; // Format string for page number display
+ LPVOID m_lpUserData; // pointer to user created struct
+ CRect m_rectDraw; // rectangle defining current usable page area
+
+ void SetMinPage(UINT nMinPage);
+ void SetMaxPage(UINT nMaxPage);
+ UINT GetMinPage() const;
+ UINT GetMaxPage() const;
+ UINT GetFromPage() const;
+ UINT GetToPage() const;
+};
+
+struct CPrintPreviewState // Print Preview context/state
+{
+ UINT nIDMainPane; // main pane ID to hide
+ HMENU hMenu; // saved hMenu
+ DWORD dwStates; // Control Bar Visible states (bit map)
+ CView* pViewActiveOld; // save old active view during preview
+ BOOL (CALLBACK* lpfnCloseProc)(CFrameWnd* pFrameWnd);
+ HACCEL hAccelTable; // saved accelerator table
+
+// Implementation
+ CPrintPreviewState();
+};
+
+struct CCreateContext // Creation information structure
+ // All fields are optional and may be NULL
+{
+ // for creating new views
+ CRuntimeClass* m_pNewViewClass; // runtime class of view to create or NULL
+ CDocument* m_pCurrentDoc;
+
+ // for creating MDI children (CMDIChildWnd::LoadFrame)
+ CDocTemplate* m_pNewDocTemplate;
+
+ // for sharing view/frame state from the original view/frame
+ CView* m_pLastView;
+ CFrameWnd* m_pCurrentFrame;
+
+// Implementation
+ CCreateContext();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXEXT_INLINE inline
+#include <afxext.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXEXT_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxext.inl b/public/sdk/inc/mfc30/afxext.inl
new file mode 100644
index 000000000..388b7ddea
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxext.inl
@@ -0,0 +1,107 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXEXT.H
+
+/////////////////////////////////////////////////////////////////////////////
+// main inlines
+
+#ifdef _AFXEXT_INLINE
+
+// CCreateContext
+_AFXEXT_INLINE CCreateContext::CCreateContext()
+ { memset(this, 0, sizeof(*this)); }
+
+// CMetaFileDC
+_AFXEXT_INLINE BOOL CMetaFileDC::Create(LPCTSTR lpszFilename)
+ { return Attach(::CreateMetaFile(lpszFilename)); }
+_AFXEXT_INLINE HMETAFILE CMetaFileDC::Close()
+ { return ::CloseMetaFile(Detach()); }
+#ifndef _MAC
+_AFXEXT_INLINE BOOL CMetaFileDC::CreateEnhanced(CDC* pDCRef,
+ LPCTSTR lpszFileName, LPCRECT lpBounds, LPCTSTR lpszDescription)
+ { return Attach(::CreateEnhMetaFile(pDCRef->m_hDC,
+ lpszFileName, lpBounds, lpszDescription)); }
+_AFXEXT_INLINE HENHMETAFILE CMetaFileDC::CloseEnhanced()
+ { return ::CloseEnhMetaFile(Detach()); }
+_AFXEXT_INLINE CPoint CMetaFileDC::SetViewportOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetViewportOrg(point.x, point.y); }
+_AFXEXT_INLINE CSize CMetaFileDC::SetViewportExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetViewportExt(size.cx, size.cy); }
+_AFXEXT_INLINE BOOL CMetaFileDC::TextOut(int x, int y, const CString& str)
+ { ASSERT(m_hDC != NULL); return TextOut(x, y, (LPCTSTR)str, str.GetLength()); }
+_AFXEXT_INLINE BOOL CMetaFileDC::PtVisible(POINT point) const
+ { ASSERT(m_hDC != NULL); return PtVisible(point.x, point.y); }
+#endif
+
+// CSplitterWnd
+_AFXEXT_INLINE int CSplitterWnd::GetRowCount() const
+ { return m_nRows; }
+_AFXEXT_INLINE int CSplitterWnd::GetColumnCount() const
+ { return m_nCols; }
+// obsolete functions
+_AFXEXT_INLINE BOOL CSplitterWnd::IsChildPane(CWnd* pWnd, int& row, int& col)
+ { return IsChildPane(pWnd, &row, &col); }
+_AFXEXT_INLINE CWnd* CSplitterWnd::GetActivePane(int& row, int& col)
+ { return GetActivePane(&row, &col); }
+
+// control bars
+_AFXEXT_INLINE int CControlBar::GetCount() const
+ { return m_nCount; }
+_AFXEXT_INLINE void CControlBar::SetBarStyle(DWORD dwStyle)
+ { m_dwStyle = dwStyle; }
+_AFXEXT_INLINE DWORD CControlBar::GetBarStyle()
+ { return m_dwStyle; }
+_AFXEXT_INLINE BOOL CToolBar::LoadBitmap(UINT nIDResource)
+ { return LoadBitmap(MAKEINTRESOURCE(nIDResource)); }
+_AFXEXT_INLINE BOOL CDialogBar::Create(CWnd* pParentWnd, UINT nIDTemplate,
+ UINT nStyle, UINT nID)
+ { return Create(pParentWnd, MAKEINTRESOURCE(nIDTemplate), nStyle, nID); }
+#ifdef _DEBUG
+// status bars do not support docking
+_AFXEXT_INLINE void CStatusBar::EnableDocking(DWORD)
+ { ASSERT(FALSE); }
+#endif
+
+// CRectTracker
+_AFXEXT_INLINE CRectTracker::CRectTracker()
+ { Construct(); }
+
+// CBitmapButton
+_AFXEXT_INLINE CBitmapButton::CBitmapButton()
+ { }
+_AFXEXT_INLINE BOOL CBitmapButton::LoadBitmaps(UINT nIDBitmapResource,
+ UINT nIDBitmapResourceSel, UINT nIDBitmapResourceFocus,
+ UINT nIDBitmapResourceDisabled)
+ { return LoadBitmaps(MAKEINTRESOURCE(nIDBitmapResource),
+ MAKEINTRESOURCE(nIDBitmapResourceSel),
+ MAKEINTRESOURCE(nIDBitmapResourceFocus),
+ MAKEINTRESOURCE(nIDBitmapResourceDisabled)); }
+
+// CPrintInfo
+_AFXEXT_INLINE void CPrintInfo::SetMinPage(UINT nMinPage)
+ { m_pPD->m_pd.nMinPage = (WORD)nMinPage; }
+_AFXEXT_INLINE void CPrintInfo::SetMaxPage(UINT nMaxPage)
+ { m_pPD->m_pd.nMaxPage = (WORD)nMaxPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetMinPage() const
+ { return m_pPD->m_pd.nMinPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetMaxPage() const
+ { return m_pPD->m_pd.nMaxPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetFromPage() const
+ { return m_pPD->m_pd.nFromPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetToPage() const
+ { return m_pPD->m_pd.nToPage; }
+// CEditView
+_AFXEXT_INLINE CEdit& CEditView::GetEditCtrl() const
+ { return *(CEdit*)this; }
+
+#endif //_AFXEXT_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxhelp.hm b/public/sdk/inc/mfc30/afxhelp.hm
new file mode 100644
index 000000000..00f1c36e7
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxhelp.hm
@@ -0,0 +1,226 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Non-Client HitTest help IDs
+HID_HT_NOWHERE 0x40000
+HID_HT_CAPTION 0x40002
+HID_HT_SIZE 0x40004
+HID_HT_HSCROLL 0x40006
+HID_HT_VSCROLL 0x40007
+HID_HT_MINBUTTON 0x40008
+HID_HT_MAXBUTTON 0x40009
+HID_HT_SIZE 0x4000A // alias: ID_HT_LEFT
+HID_HT_SIZE 0x4000B // alias: ID_HT_RIGHT
+HID_HT_SIZE 0x4000C // alias: ID_HT_TOP
+HID_HT_SIZE 0x4000D // alias: ID_HT_TOPLEFT
+HID_HT_SIZE 0x4000E // alias: ID_HT_TOPRIGHT
+HID_HT_SIZE 0x4000F // alias: ID_HT_BOTTOM
+HID_HT_SIZE 0x40010 // alias: ID_HT_BOTTOMLEFT
+HID_HT_SIZE 0x40011 // alias: ID_HT_BOTTOMRIGHT
+HID_HT_SIZE 0x40012 // alias: ID_HT_BORDER
+
+// WM_SYSCOMMAND help IDs
+HID_SC_SIZE 0x1EF00
+HID_SC_MOVE 0x1EF01
+HID_SC_MINIMIZE 0x1EF02
+HID_SC_MAXIMIZE 0x1EF03
+HID_SC_NEXTWINDOW 0x1EF04
+HID_SC_PREVWINDOW 0x1EF05
+HID_SC_CLOSE 0x1EF06
+HID_SC_RESTORE 0x1EF12
+HID_SC_TASKLIST 0x1EF13
+
+// File MRU and aliases
+HID_FILE_MRU_FILE1 0x1E110
+HID_FILE_MRU_FILE1 0x1E111 // aliases: MRU_2 - MRU_16
+HID_FILE_MRU_FILE1 0x1E112
+HID_FILE_MRU_FILE1 0x1E113
+HID_FILE_MRU_FILE1 0x1E114
+HID_FILE_MRU_FILE1 0x1E115
+HID_FILE_MRU_FILE1 0x1E116
+HID_FILE_MRU_FILE1 0x1E117
+HID_FILE_MRU_FILE1 0x1E118
+HID_FILE_MRU_FILE1 0x1E119
+HID_FILE_MRU_FILE1 0x1E11A
+HID_FILE_MRU_FILE1 0x1E11B
+HID_FILE_MRU_FILE1 0x1E11C
+HID_FILE_MRU_FILE1 0x1E11D
+HID_FILE_MRU_FILE1 0x1E11E
+HID_FILE_MRU_FILE1 0x1E11F
+
+// Window menu list
+HID_WINDOW_ALL 0x1EF1F
+
+// OLE menu and aliases
+HID_OLE_VERB_1 0x1E210
+HID_OLE_VERB_1 0x1E211 // aliases: VERB_2 -> VERB_16
+HID_OLE_VERB_1 0x1E212
+HID_OLE_VERB_1 0x1E213
+HID_OLE_VERB_1 0x1E214
+HID_OLE_VERB_1 0x1E215
+HID_OLE_VERB_1 0x1E216
+HID_OLE_VERB_1 0x1E217
+HID_OLE_VERB_1 0x1E218
+HID_OLE_VERB_1 0x1E219
+HID_OLE_VERB_1 0x1E21A
+HID_OLE_VERB_1 0x1E21B
+HID_OLE_VERB_1 0x1E21C
+HID_OLE_VERB_1 0x1E21D
+HID_OLE_VERB_1 0x1E21E
+HID_OLE_VERB_1 0x1E21F
+
+// Commands (HID_*)
+HID_FILE_NEW 0x1E100
+HID_FILE_OPEN 0x1E101
+HID_FILE_CLOSE 0x1E102
+HID_FILE_SAVE 0x1E103
+HID_FILE_SAVE_AS 0x1E104
+HID_FILE_PAGE_SETUP 0x1E105
+HID_FILE_PRINT_SETUP 0x1E106
+HID_FILE_PRINT 0x1E107
+HID_FILE_PRINT_PREVIEW 0x1E108
+HID_FILE_UPDATE 0x1E109
+HID_FILE_SAVE_COPY_AS 0x1E10A
+HID_FILE_SEND_MAIL 0x1E10B
+HID_EDIT_CLEAR 0x1E120
+HID_EDIT_CLEAR_ALL 0x1E121
+HID_EDIT_COPY 0x1E122
+HID_EDIT_CUT 0x1E123
+HID_EDIT_FIND 0x1E124
+HID_EDIT_PASTE 0x1E125
+HID_EDIT_PASTE_LINK 0x1E126
+HID_EDIT_PASTE_SPECIAL 0x1E127
+HID_EDIT_REPEAT 0x1E128
+HID_EDIT_REPLACE 0x1E129
+HID_EDIT_SELECT_ALL 0x1E12A
+HID_EDIT_UNDO 0x1E12B
+HID_EDIT_REDO 0x1E12C
+HID_WINDOW_NEW 0x1E130
+HID_WINDOW_ARRANGE 0x1E131
+HID_WINDOW_CASCADE 0x1E132
+HID_WINDOW_TILE_HORZ 0x1E133
+HID_WINDOW_TILE_VERT 0x1E134
+HID_WINDOW_SPLIT 0x1E135
+HID_APP_ABOUT 0x1E140
+HID_APP_EXIT 0x1E141
+HID_HELP_INDEX 0x1E142
+HID_HELP_USING 0x1E143
+HID_CONTEXT_HELP 0x1E144
+HID_NEXT_PANE 0x1E150
+HID_PREV_PANE 0x1E151
+HID_OLE_INSERT_NEW 0x1E200
+HID_OLE_EDIT_LINKS 0x1E201
+HID_OLE_EDIT_CONVERT 0x1E202
+HID_OLE_EDIT_CHANGE_ICON 0x1E203
+HID_VIEW_TOOLBAR 0x1E800
+HID_VIEW_STATUS_BAR 0x1E801
+HID_RECORD_FIRST 0x1E900
+HID_RECORD_LAST 0x1E901
+HID_RECORD_NEXT 0x1E902
+HID_RECORD_PREV 0x1E903
+
+// Dialogs (AFX_HIDD_*)
+AFX_HIDD_FILEOPEN 0x27004
+AFX_HIDD_FILESAVE 0x27005
+AFX_HIDD_FONT 0x27006
+AFX_HIDD_COLOR 0x27007
+AFX_HIDD_PRINT 0x27008
+AFX_HIDD_PRINTSETUP 0x27009
+AFX_HIDD_FIND 0x2700A
+AFX_HIDD_REPLACE 0x2700B
+AFX_HIDD_NEWTYPEDLG 0x27801
+AFX_HIDD_PRINTDLG 0x27802
+AFX_HIDD_PREVIEW_TOOLBAR 0x27803
+AFX_HIDD_PREVIEW_SHORTTOOLBAR 0x2780B
+AFX_HIDD_INSERTOBJECT 0x27804
+AFX_HIDD_CHANGEICON 0x27805
+AFX_HIDD_CONVERT 0x27806
+AFX_HIDD_PASTESPECIAL 0x27807
+AFX_HIDD_EDITLINKS 0x27808
+AFX_HIDD_FILEBROWSE 0x27809
+AFX_HIDD_BUSY 0x2780A
+
+// Prompts/Errors (AFX_HIDP_*)
+AFX_HIDP_INVALID_FILENAME 0x3F100
+AFX_HIDP_FAILED_TO_OPEN_DOC 0x3F101
+AFX_HIDP_FAILED_TO_SAVE_DOC 0x3F102
+AFX_HIDP_ASK_TO_SAVE 0x3F103
+AFX_HIDP_FAILED_TO_CREATE_DOC 0x3F104
+AFX_HIDP_FILE_TOO_LARGE 0x3F105
+AFX_HIDP_FAILED_TO_START_PRINT 0x3F106
+AFX_HIDP_FAILED_TO_LAUNCH_HELP 0x3F107
+AFX_HIDP_INTERNAL_FAILURE 0x3F108
+AFX_HIDP_COMMAND_FAILURE 0x3F109
+AFX_HIDP_FAILED_MEMORY_ALLOC 0x3F10A
+AFX_HIDP_PARSE_INT 0x3F110
+AFX_HIDP_PARSE_REAL 0x3F111
+AFX_HIDP_PARSE_INT_RANGE 0x3F112
+AFX_HIDP_PARSE_REAL_RANGE 0x3F113
+AFX_HIDP_PARSE_STRING_SIZE 0x3F114
+AFX_HIDP_PARSE_RADIO_BUTTON 0x3F115
+AFX_HIDP_FAILED_INVALID_FORMAT 0x3F120
+AFX_HIDP_FAILED_INVALID_PATH 0x3F121
+AFX_HIDP_FAILED_DISK_FULL 0x3F122
+AFX_HIDP_FAILED_ACCESS_READ 0x3F123
+AFX_HIDP_FAILED_ACCESS_WRITE 0x3F124
+AFX_HIDP_FAILED_IO_ERROR_READ 0x3F125
+AFX_HIDP_FAILED_IO_ERROR_WRITE 0x3F126
+AFX_HIDP_STATIC_OBJECT 0x3F180
+AFX_HIDP_FAILED_TO_CONNECT 0x3F181
+AFX_HIDP_SERVER_BUSY 0x3F182
+AFX_HIDP_BAD_VERB 0x3F183
+AFX_HIDP_FAILED_TO_NOTIFY 0x3F185
+AFX_HIDP_FAILED_TO_LAUNCH 0x3F186
+AFX_HIDP_ASK_TO_UPDATE 0x3F187
+AFX_HIDP_FAILED_TO_UPDATE 0x3F188
+AFX_HIDP_FAILED_TO_REGISTER 0x3F189
+AFX_HIDP_FAILED_TO_AUTO_REGISTER 0x3F18A
+AFX_HIDP_FAILED_TO_CONVERT 0x3F18B
+AFX_HIDP_GET_NOT_SUPPORTED 0x3F18C
+AFX_HIDP_SET_NOT_SUPPORTED 0x3F18D
+AFX_HIDP_ASK_TO_DISCARD 0x3F18E
+AFX_HIDP_SQL_FIRST 0x3F280
+AFX_HIDP_SQL_CONNECT_FAIL 0x3F281
+AFX_HIDP_SQL_RECORDSET_FORWARD_ONLY 0x3F282
+AFX_HIDP_SQL_EMPTY_COLUMN_LIST 0x3F283
+AFX_HIDP_SQL_FIELD_SCHEMA_MISMATCH 0x3F284
+AFX_HIDP_SQL_ILLEGAL_MODE 0x3F285
+AFX_HIDP_SQL_MULTIPLE_ROWS_AFFECTED 0x3F286
+AFX_HIDP_SQL_NO_CURRENT_RECORD 0x3F287
+AFX_HIDP_SQL_NO_ROWS_AFFECTED 0x3F288
+AFX_HIDP_SQL_RECORDSET_READONLY 0x3F289
+AFX_HIDP_SQL_SQL_NO_TOTAL 0x3F28A
+AFX_HIDP_SQL_ODBC_LOAD_FAILED 0x3F28B
+AFX_HIDP_SQL_DYNASET_NOT_SUPPORTED 0x3F28C
+AFX_HIDP_SQL_SNAPSHOT_NOT_SUPPORTED 0x3F28D
+AFX_HIDP_SQL_API_CONFORMANCE 0x3F28E
+AFX_HIDP_SQL_SQL_CONFORMANCE 0x3F28F
+AFX_HIDP_SQL_NO_DATA_FOUND 0x3F290
+AFX_HIDP_SQL_ROW_UPDATE_NOT_SUPPORTED 0x3F291
+AFX_HIDP_SQL_ODBC_V2_REQUIRED 0x3F292
+AFX_HIDP_SQL_NO_POSITIONED_UPDATES 0x3F293
+AFX_HIDP_SQL_LOCK_MODE_NOT_SUPPORTED 0x3F294
+AFX_HIDP_SQL_DATA_TRUNCATED 0x3F295
+AFX_HIDP_SQL_ROW_FETCH 0x3F296
+AFX_HIDP_SQL_INCORRECT_ODBC 0x3F297
+AFX_HIDP_SQL_UPDATE_DELETE_FAILED 0x3F298
+
+// Frame Controls (AFX_HIDW_*)
+AFX_HIDW_TOOLBAR 0x5E800
+AFX_HIDW_STATUS_BAR 0x5E801
+AFX_HIDW_PREVIEW_BAR 0x5E802
+AFX_HIDW_RESIZE_BAR 0x5E803
+AFX_HIDW_DOCKBAR_TOP 0x5E81B
+AFX_HIDW_DOCKBAR_LEFT 0x5E81C
+AFX_HIDW_DOCKBAR_RIGHT 0x5E81D
+AFX_HIDW_DOCKBAR_BOTTOM 0x5E81E
+AFX_HIDW_DOCKBAR_FLOAT 0x5E81F
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxmsg_.h b/public/sdk/inc/mfc30/afxmsg_.h
new file mode 100644
index 000000000..c32e61b16
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxmsg_.h
@@ -0,0 +1,568 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXWIN.H)
+
+/////////////////////////////////////////////////////////////////////////////
+
+// Entries in a message map (a 'AFX_MSGMAP_ENTRY') table can be of 9 formats
+//
+// 1) control notification message (i.e. in response to WM_COMMAND)
+// WM_COMMAND, nNotifyCode, nControlID, nControlID, signature type, parameterless member function
+// (eg: WM_COMMAND, LBN_SELCHANGE, IDC_LISTBOX, AfxSig_vv, ... )
+// 2) control notification message range (i.e. in response to WM_COMMAND)
+// WM_COMMAND, nNotifyCode, nControlIDFirst, nControlIDLast, signature type, parameterless member function
+// (eg: WM_COMMAND, LBN_SELCHANGE, IDC_LISTBOX1, IDC_LISTBOX5, AfxSig_vw, ... )
+// 3) WM_NOTIFY notification
+// WM_NOTIFY, nNotifyCode, nControlID, nControlID, signature type, ...)
+// 3) Update Command UI
+// -1, 0, nControlID, 0, signature Unknown, parameterless member function
+// 4) Update Command UI Range
+// -1, 0, nControlIDFirst, nControlIDLast, signature Unknown, parameterless member function
+// 5) menu/accelerator notification message (i.e. special case of first format)
+// WM_COMMAND, 0, nID, 0, signature type, parameterless member function
+// (eg: WM_COMMAND, 0, IDM_FILESAVE, 0, AfxSig_vv, ... )
+// 6) menu/accelerator notification message range
+// WM_COMMAND, 0, nIDFirst, nIDLast, signature type, parameterless member function
+// (eg: WM_COMMAND, 0, IDM_FILE_MRU1, IDM_FILE_MRU4, AfxSig_vw, ... )
+// 7) constant windows message
+// nMessage, 0, 0, 0, signature type, member function
+// (eg: WM_PAINT, 0, ...)
+// 8) variable windows message (using RegisterWindowMessage)
+// 0xC000, 0, 0, 0, &nMessage, special member function
+//
+// The end of the message map is marked with a special value
+// 0, 0, AfxSig_end, 0
+/////////////////////////////////////////////////////////////////////////////
+
+enum AfxSig
+{
+ AfxSig_end = 0, // [marks end of message map]
+
+ AfxSig_bD, // BOOL (CDC*)
+ AfxSig_bb, // BOOL (BOOL)
+ AfxSig_bWww, // BOOL (CWnd*, UINT, UINT)
+ AfxSig_hDWw, // HBRUSH (CDC*, CWnd*, UINT)
+ AfxSig_iwWw, // int (UINT, CWnd*, UINT)
+ AfxSig_iWww, // int (CWnd*, UINT, UINT)
+ AfxSig_is, // int (LPTSTR)
+ AfxSig_lwl, // LRESULT (WPARAM, LPARAM)
+ AfxSig_lwwM, // LRESULT (UINT, UINT, CMenu*)
+ AfxSig_vv, // void (void)
+
+ AfxSig_vw, // void (UINT)
+ AfxSig_vww, // void (UINT, UINT)
+ AfxSig_vvii, // void (int, int) // wParam is ignored
+ AfxSig_vwww, // void (UINT, UINT, UINT)
+ AfxSig_vwii, // void (UINT, int, int)
+ AfxSig_vwl, // void (UINT, LPARAM)
+ AfxSig_vbWW, // void (BOOL, CWnd*, CWnd*)
+ AfxSig_vD, // void (CDC*)
+ AfxSig_vM, // void (CMenu*)
+ AfxSig_vMwb, // void (CMenu*, UINT, BOOL)
+
+ AfxSig_vW, // void (CWnd*)
+ AfxSig_vWww, // void (CWnd*, UINT, UINT)
+ AfxSig_vWh, // void (CWnd*, HANDLE)
+ AfxSig_vwW, // void (UINT, CWnd*)
+ AfxSig_vwWb, // void (UINT, CWnd*, BOOL)
+ AfxSig_vwwW, // void (UINT, UINT, CWnd*)
+ AfxSig_vs, // void (LPTSTR)
+ AfxSig_vOWNER, // void (int, LPTSTR), force return TRUE
+ AfxSig_iis, // int (int, LPTSTR)
+ AfxSig_wp, // UINT (CPoint)
+ AfxSig_wv, // UINT (void)
+ AfxSig_vPOS, // void (WINDOWPOS*)
+ AfxSig_vCALC, // void (NCCALCSIZE_PARAMS*)
+ AfxSig_vNMHDRpl, // void (NMHDR*, LRESULT*)
+ AfxSig_vwNMHDRpl, // void (UINT, NMHDR*, LRESULT*)
+ AfxSig_bwNMHDRpl, // BOOL (UINT, NMHDR*, LRESULT*)
+
+ // signatures specific to CCmdTarget
+ AfxSig_cmdui, // void (CCmdUI*)
+ AfxSig_cmduiw, // void (CCmdUI*, UINT)
+ AfxSig_vpv, // void (void*)
+ AfxSig_bpv, // BOOL (void*)
+
+ // Other aliases (based on implementation)
+ AfxSig_vwwh, // void (UINT, UINT, HANDLE)
+ AfxSig_vwp, // void (UINT, CPoint)
+ AfxSig_bw = AfxSig_bb, // BOOL (UINT)
+ AfxSig_bh = AfxSig_bb, // BOOL (HANDLE)
+ AfxSig_iw = AfxSig_bb, // int (UINT)
+ AfxSig_ww = AfxSig_bb, // UINT (UINT)
+ AfxSig_bv = AfxSig_wv, // BOOL (void)
+ AfxSig_hv = AfxSig_wv, // HANDLE (void)
+ AfxSig_vb = AfxSig_vw, // void (BOOL)
+ AfxSig_vbh = AfxSig_vww, // void (BOOL, HANDLE)
+ AfxSig_vbw = AfxSig_vww, // void (BOOL, UINT)
+ AfxSig_vhh = AfxSig_vww, // void (HANDLE, HANDLE)
+ AfxSig_vh = AfxSig_vw, // void (HANDLE)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Command notifications for CCmdTarget notifications
+
+#define CN_COMMAND 0 // void ()
+#define CN_UPDATE_COMMAND_UI ((UINT)(-1)) // void (CCmdUI*)
+// > 0 are control notifications
+
+#define ON_COMMAND(id, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, (AFX_PMSG)memberFxn },
+ // ON_COMMAND(id, OnFoo) is the same as
+ // ON_CONTROL(0, id, OnFoo) or ON_BN_CLICKED(0, id, OnFoo)
+
+#define ON_COMMAND_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_vw, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT))memberFxn },
+ // ON_COMMAND_RANGE(id, idLast, OnFoo) is the same as
+ // ON_CONTROL_RANGE(0, id, idLast, OnFoo)
+
+#define ON_COMMAND_EX(id, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_bw, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))memberFxn },
+
+#define ON_COMMAND_EX_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_bw, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))memberFxn },
+
+// update ui's are listed as WM_COMMAND's so they get routed like commands
+#define ON_UPDATE_COMMAND_UI(id, memberFxn) \
+ { WM_COMMAND, CN_UPDATE_COMMAND_UI, (WORD)id, (WORD)id, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))memberFxn },
+
+#define ON_UPDATE_COMMAND_UI_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_UPDATE_COMMAND_UI, (WORD)id, (WORD)idLast, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))memberFxn },
+
+#define ON_NOTIFY(wNotifyCode, id, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_vNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))memberFxn },
+
+#define ON_NOTIFY_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_vwNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))memberFxn },
+
+#define ON_NOTIFY_EX(wNotifyCode, id, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_bwNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))memberFxn },
+
+#define ON_NOTIFY_EX_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_bwNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))memberFxn },
+
+// for general controls
+#define ON_CONTROL(wNotifyCode, id, memberFxn) \
+ { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)id, AfxSig_vv, \
+ (AFX_PMSG)memberFxn },
+
+#define ON_CONTROL_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_vw, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT))memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
+// Message map tables for Windows messages
+
+#define ON_WM_CREATE() \
+ { WM_CREATE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))OnCreate },
+#define ON_WM_DESTROY() \
+ { WM_DESTROY, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnDestroy },
+#define ON_WM_MOVE() \
+ { WM_MOVE, 0, 0, 0, AfxSig_vvii, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, int))OnMove },
+#define ON_WM_SIZE() \
+ { WM_SIZE, 0, 0, 0, AfxSig_vwii, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, int, int))OnSize },
+#define ON_WM_ACTIVATE() \
+ { WM_ACTIVATE, 0, 0, 0, AfxSig_vwWb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CWnd*, BOOL))OnActivate },
+#define ON_WM_SETFOCUS() \
+ { WM_SETFOCUS, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))OnSetFocus },
+#define ON_WM_KILLFOCUS() \
+ { WM_KILLFOCUS, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))OnKillFocus },
+#define ON_WM_ENABLE() \
+ { WM_ENABLE, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))OnEnable },
+#define ON_WM_PAINT() \
+ { WM_PAINT, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnPaint },
+#define ON_WM_CLOSE() \
+ { WM_CLOSE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnClose },
+#define ON_WM_QUERYENDSESSION() \
+ { WM_QUERYENDSESSION, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))OnQueryEndSession },
+#define ON_WM_QUERYOPEN() \
+ { WM_QUERYOPEN, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))OnQueryOpen },
+#define ON_WM_ERASEBKGND() \
+ { WM_ERASEBKGND, 0, 0, 0, AfxSig_bD, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CDC*))OnEraseBkgnd },
+#define ON_WM_SYSCOLORCHANGE() \
+ { WM_SYSCOLORCHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnSysColorChange },
+#define ON_WM_ENDSESSION() \
+ { WM_ENDSESSION, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))OnEndSession },
+#define ON_WM_SHOWWINDOW() \
+ { WM_SHOWWINDOW, 0, 0, 0, AfxSig_vbw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, UINT))OnShowWindow },
+#define ON_WM_CTLCOLOR() \
+ { WM_CTLCOLOR, 0, 0, 0, AfxSig_hDWw, \
+ (AFX_PMSG)(AFX_PMSGW)(HBRUSH (AFX_MSG_CALL CWnd::*)(CDC*, CWnd*, UINT))OnCtlColor },
+#define ON_WM_WININICHANGE() \
+ { WM_WININICHANGE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPCTSTR))OnWinIniChange },
+#define ON_WM_DEVMODECHANGE() \
+ { WM_DEVMODECHANGE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPTSTR))OnDevModeChange },
+#define ON_WM_ACTIVATEAPP() \
+ { WM_ACTIVATEAPP, 0, 0, 0, AfxSig_vbh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, HTASK))OnActivateApp },
+#define ON_WM_FONTCHANGE() \
+ { WM_FONTCHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnFontChange },
+#define ON_WM_TIMECHANGE() \
+ { WM_TIMECHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnTimeChange },
+#define ON_WM_CANCELMODE() \
+ { WM_CANCELMODE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnCancelMode },
+#define ON_WM_SETCURSOR() \
+ { WM_SETCURSOR, 0, 0, 0, AfxSig_bWww, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))OnSetCursor },
+#define ON_WM_MOUSEACTIVATE() \
+ { WM_MOUSEACTIVATE, 0, 0, 0, AfxSig_iWww, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))OnMouseActivate },
+#define ON_WM_CHILDACTIVATE() \
+ { WM_CHILDACTIVATE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnChildActivate },
+#define ON_WM_GETMINMAXINFO() \
+ { WM_GETMINMAXINFO, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(MINMAXINFO*))OnGetMinMaxInfo },
+#define ON_WM_ICONERASEBKGND() \
+ { WM_ICONERASEBKGND, 0, 0, 0, AfxSig_vD, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CDC*))OnIconEraseBkgnd },
+#define ON_WM_SPOOLERSTATUS() \
+ { WM_SPOOLERSTATUS, 0, 0, 0, AfxSig_vww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))OnSpoolerStatus },
+#define ON_WM_DRAWITEM() \
+ { WM_DRAWITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPDRAWITEMSTRUCT))OnDrawItem },
+#define ON_WM_MEASUREITEM() \
+ { WM_MEASUREITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPMEASUREITEMSTRUCT))OnMeasureItem },
+#define ON_WM_DELETEITEM() \
+ { WM_DELETEITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPDELETEITEMSTRUCT))OnDeleteItem },
+#define ON_WM_CHARTOITEM() \
+ { WM_CHARTOITEM, 0, 0, 0, AfxSig_iwWw, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, CListBox*, UINT))OnCharToItem },
+#define ON_WM_VKEYTOITEM() \
+ { WM_VKEYTOITEM, 0, 0, 0, AfxSig_iwWw, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, CListBox*, UINT))OnVKeyToItem },
+#define ON_WM_QUERYDRAGICON() \
+ { WM_QUERYDRAGICON, 0, 0, 0, AfxSig_hv, \
+ (AFX_PMSG)(AFX_PMSGW)(HCURSOR (AFX_MSG_CALL CWnd::*)())OnQueryDragIcon },
+#define ON_WM_COMPAREITEM() \
+ { WM_COMPAREITEM, 0, 0, 0, AfxSig_iis, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(int, LPCOMPAREITEMSTRUCT))OnCompareItem },
+#define ON_WM_COMPACTING() \
+ { WM_COMPACTING, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))OnCompacting },
+#define ON_WM_NCCREATE() \
+ { WM_NCCREATE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))OnNcCreate },
+#define ON_WM_NCDESTROY() \
+ { WM_NCDESTROY, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnNcDestroy },
+#define ON_WM_NCCALCSIZE() \
+ { WM_NCCALCSIZE, 0, 0, 0, AfxSig_vCALC, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, NCCALCSIZE_PARAMS*))OnNcCalcSize },
+#define ON_WM_NCHITTEST() \
+ { WM_NCHITTEST, 0, 0, 0, AfxSig_wp, \
+ (AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(CPoint))OnNcHitTest },
+#define ON_WM_NCPAINT() \
+ { WM_NCPAINT, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnNcPaint },
+#define ON_WM_NCACTIVATE() \
+ { WM_NCACTIVATE, 0, 0, 0, AfxSig_bb, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(BOOL))OnNcActivate },
+#define ON_WM_GETDLGCODE() \
+ { WM_GETDLGCODE, 0, 0, 0, AfxSig_wv, \
+ (AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(void))OnGetDlgCode },
+#define ON_WM_NCMOUSEMOVE() \
+ { WM_NCMOUSEMOVE, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcMouseMove },
+#define ON_WM_NCLBUTTONDOWN() \
+ { WM_NCLBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcLButtonDown },
+#define ON_WM_NCLBUTTONUP() \
+ { WM_NCLBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcLButtonUp },
+#define ON_WM_NCLBUTTONDBLCLK() \
+ { WM_NCLBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcLButtonDblClk },
+#define ON_WM_NCRBUTTONDOWN() \
+ { WM_NCRBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcRButtonDown },
+#define ON_WM_NCRBUTTONUP() \
+ { WM_NCRBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcRButtonUp },
+#define ON_WM_NCRBUTTONDBLCLK() \
+ { WM_NCRBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcRButtonDblClk },
+#define ON_WM_NCMBUTTONDOWN() \
+ { WM_NCMBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcMButtonDown },
+#define ON_WM_NCMBUTTONUP() \
+ { WM_NCMBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcMButtonUp },
+#define ON_WM_NCMBUTTONDBLCLK() \
+ { WM_NCMBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcMButtonDblClk },
+#define ON_WM_KEYDOWN() \
+ { WM_KEYDOWN, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnKeyDown },
+#define ON_WM_KEYUP() \
+ { WM_KEYUP, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnKeyUp },
+#define ON_WM_CHAR() \
+ { WM_CHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnChar },
+#define ON_WM_DEADCHAR() \
+ { WM_DEADCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnDeadChar },
+#define ON_WM_SYSKEYDOWN() \
+ { WM_SYSKEYDOWN, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnSysKeyDown },
+#define ON_WM_SYSKEYUP() \
+ { WM_SYSKEYUP, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnSysKeyUp },
+#define ON_WM_SYSCHAR() \
+ { WM_SYSCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnSysChar },
+#define ON_WM_SYSDEADCHAR() \
+ { WM_SYSDEADCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnSysDeadChar },
+#define ON_WM_SYSCOMMAND() \
+ { WM_SYSCOMMAND, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))OnSysCommand },
+#define ON_WM_TIMER() \
+ { WM_TIMER, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))OnTimer },
+#define ON_WM_HSCROLL() \
+ { WM_HSCROLL, 0, 0, 0, AfxSig_vwwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, CScrollBar*))OnHScroll },
+#define ON_WM_VSCROLL() \
+ { WM_VSCROLL, 0, 0, 0, AfxSig_vwwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, CScrollBar*))OnVScroll },
+#define ON_WM_INITMENU() \
+ { WM_INITMENU, 0, 0, 0, AfxSig_vM, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CMenu*))OnInitMenu },
+#define ON_WM_INITMENUPOPUP() \
+ { WM_INITMENUPOPUP, 0, 0, 0, AfxSig_vMwb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CMenu*, UINT, BOOL))OnInitMenuPopup },
+#define ON_WM_MENUSELECT() \
+ { WM_MENUSELECT, 0, 0, 0, AfxSig_vwwh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, HMENU))OnMenuSelect },
+#define ON_WM_MENUCHAR() \
+ { WM_MENUCHAR, 0, 0, 0, AfxSig_lwwM, \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(UINT, UINT, CMenu*))OnMenuChar },
+#define ON_WM_ENTERIDLE() \
+ { WM_ENTERIDLE, 0, 0, 0, AfxSig_vwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CWnd*))OnEnterIdle },
+#define ON_WM_MOUSEMOVE() \
+ { WM_MOUSEMOVE, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnMouseMove },
+#define ON_WM_LBUTTONDOWN() \
+ { WM_LBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnLButtonDown },
+#define ON_WM_LBUTTONUP() \
+ { WM_LBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnLButtonUp },
+#define ON_WM_LBUTTONDBLCLK() \
+ { WM_LBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnLButtonDblClk },
+#define ON_WM_RBUTTONDOWN() \
+ { WM_RBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnRButtonDown },
+#define ON_WM_RBUTTONUP() \
+ { WM_RBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnRButtonUp },
+#define ON_WM_RBUTTONDBLCLK() \
+ { WM_RBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnRButtonDblClk },
+#define ON_WM_MBUTTONDOWN() \
+ { WM_MBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnMButtonDown },
+#define ON_WM_MBUTTONUP() \
+ { WM_MBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnMButtonUp },
+#define ON_WM_MBUTTONDBLCLK() \
+ { WM_MBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnMButtonDblClk },
+#define ON_WM_PARENTNOTIFY() \
+ { WM_PARENTNOTIFY, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))OnParentNotify },
+#define ON_WM_MDIACTIVATE() \
+ { WM_MDIACTIVATE, 0, 0, 0, AfxSig_vbWW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, CWnd*, CWnd*))OnMDIActivate },
+#define ON_WM_RENDERFORMAT() \
+ { WM_RENDERFORMAT, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))OnRenderFormat },
+#define ON_WM_RENDERALLFORMATS() \
+ { WM_RENDERALLFORMATS, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnRenderAllFormats },
+#define ON_WM_DESTROYCLIPBOARD() \
+ { WM_DESTROYCLIPBOARD, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnDestroyClipboard },
+#define ON_WM_DRAWCLIPBOARD() \
+ { WM_DRAWCLIPBOARD, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnDrawClipboard },
+#define ON_WM_PAINTCLIPBOARD() \
+ { WM_PAINTCLIPBOARD, 0, 0, 0, AfxSig_vWh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, HGLOBAL))OnPaintClipboard },
+#define ON_WM_VSCROLLCLIPBOARD() \
+ { WM_VSCROLLCLIPBOARD, 0, 0, 0, AfxSig_vWww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))OnVScrollClipboard },
+#define ON_WM_SIZECLIPBOARD() \
+ { WM_SIZECLIPBOARD, 0, 0, 0, AfxSig_vWh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, HGLOBAL))OnSizeClipboard },
+#define ON_WM_ASKCBFORMATNAME() \
+ { WM_ASKCBFORMATNAME, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPTSTR))OnAskCbFormatName },
+#define ON_WM_CHANGECBCHAIN() \
+ { WM_CHANGECBCHAIN, 0, 0, 0, AfxSig_vhh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(HWND, HWND))OnChangeCbChain },
+#define ON_WM_HSCROLLCLIPBOARD() \
+ { WM_HSCROLLCLIPBOARD, 0, 0, 0, AfxSig_vWww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))OnHScrollClipboard },
+#define ON_WM_QUERYNEWPALETTE() \
+ { WM_QUERYNEWPALETTE, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))OnQueryNewPalette },
+#define ON_WM_PALETTECHANGED() \
+ { WM_PALETTECHANGED, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))OnPaletteChanged },
+
+#define ON_WM_PALETTEISCHANGING() \
+ { WM_PALETTEISCHANGING, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))OnPaletteIsChanging },
+#define ON_WM_DROPFILES() \
+ { WM_DROPFILES, 0, 0, 0, AfxSig_vh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(HDROP))OnDropFiles },
+#define ON_WM_WINDOWPOSCHANGING() \
+ { WM_WINDOWPOSCHANGING, 0, 0, 0, AfxSig_vPOS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WINDOWPOS*))OnWindowPosChanging },
+#define ON_WM_WINDOWPOSCHANGED() \
+ { WM_WINDOWPOSCHANGED, 0, 0, 0, AfxSig_vPOS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WINDOWPOS*))OnWindowPosChanged },
+
+#define ON_WM_EXITMENULOOP() \
+ { WM_EXITMENULOOP, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))OnExitMenuLoop },
+#define ON_WM_ENTERMENULOOP() \
+ { WM_ENTERMENULOOP, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))OnEnterMenuLoop },
+
+/////////////////////////////////////////////////////////////////////////////
+// Message map tables for Control Notification messages
+
+// Edit Control Notification Codes
+#define ON_EN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(EN_SETFOCUS, id, memberFxn)
+#define ON_EN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(EN_KILLFOCUS, id, memberFxn)
+#define ON_EN_CHANGE(id, memberFxn) \
+ ON_CONTROL(EN_CHANGE, id, memberFxn)
+#define ON_EN_UPDATE(id, memberFxn) \
+ ON_CONTROL(EN_UPDATE, id, memberFxn)
+#define ON_EN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(EN_ERRSPACE, id, memberFxn)
+#define ON_EN_MAXTEXT(id, memberFxn) \
+ ON_CONTROL(EN_MAXTEXT, id, memberFxn)
+#define ON_EN_HSCROLL(id, memberFxn) \
+ ON_CONTROL(EN_HSCROLL, id, memberFxn)
+#define ON_EN_VSCROLL(id, memberFxn) \
+ ON_CONTROL(EN_VSCROLL, id, memberFxn)
+
+// User Button Notification Codes
+#define ON_BN_CLICKED(id, memberFxn) \
+ ON_CONTROL(BN_CLICKED, id, memberFxn)
+#define ON_BN_DOUBLECLICKED(id, memberFxn) \
+ ON_CONTROL(BN_DOUBLECLICKED, id, memberFxn)
+
+// old BS_USERBUTTON button notifications - obsolete in Win31
+#define ON_BN_PAINT(id, memberFxn) \
+ ON_CONTROL(BN_PAINT, id, memberFxn)
+#define ON_BN_HILITE(id, memberFxn) \
+ ON_CONTROL(BN_HILITE, id, memberFxn)
+#define ON_BN_UNHILITE(id, memberFxn) \
+ ON_CONTROL(BN_UNHILITE, id, memberFxn)
+#define ON_BN_DISABLE(id, memberFxn) \
+ ON_CONTROL(BN_DISABLE, id, memberFxn)
+
+// Listbox Notification Codes
+#define ON_LBN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(LBN_ERRSPACE, id, memberFxn)
+#define ON_LBN_SELCHANGE(id, memberFxn) \
+ ON_CONTROL(LBN_SELCHANGE, id, memberFxn)
+#define ON_LBN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(LBN_DBLCLK, id, memberFxn)
+#define ON_LBN_SELCANCEL(id, memberFxn) \
+ ON_CONTROL(LBN_SELCANCEL, id, memberFxn)
+#define ON_LBN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(LBN_SETFOCUS, id, memberFxn)
+#define ON_LBN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(LBN_KILLFOCUS, id, memberFxn)
+
+// Combo Box Notification Codes
+#define ON_CBN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(CBN_ERRSPACE, id, memberFxn)
+#define ON_CBN_SELCHANGE(id, memberFxn) \
+ ON_CONTROL(CBN_SELCHANGE, id, memberFxn)
+#define ON_CBN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(CBN_DBLCLK, id, memberFxn)
+#define ON_CBN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(CBN_SETFOCUS, id, memberFxn)
+#define ON_CBN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(CBN_KILLFOCUS, id, memberFxn)
+#define ON_CBN_EDITCHANGE(id, memberFxn) \
+ ON_CONTROL(CBN_EDITCHANGE, id, memberFxn)
+#define ON_CBN_EDITUPDATE(id, memberFxn) \
+ ON_CONTROL(CBN_EDITUPDATE, id, memberFxn)
+#define ON_CBN_DROPDOWN(id, memberFxn) \
+ ON_CONTROL(CBN_DROPDOWN, id, memberFxn)
+#define ON_CBN_CLOSEUP(id, memberFxn) \
+ ON_CONTROL(CBN_CLOSEUP, id, memberFxn)
+#define ON_CBN_SELENDOK(id, memberFxn) \
+ ON_CONTROL(CBN_SELENDOK, id, memberFxn)
+#define ON_CBN_SELENDCANCEL(id, memberFxn) \
+ ON_CONTROL(CBN_SELENDCANCEL, id, memberFxn)
+
+/////////////////////////////////////////////////////////////////////////////
+// User extensions for message map entries
+
+// for Windows messages
+#define ON_MESSAGE(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_lwl, \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))memberFxn },
+
+// for Registered Windows messages
+#define ON_REGISTERED_MESSAGE(nMessageVariable, memberFxn) \
+ { 0xC000, 0, 0, 0, (UINT)(UINT*)(&nMessageVariable), \
+ /*implied 'AfxSig_lwl'*/ \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxodlgs.h b/public/sdk/inc/mfc30/afxodlgs.h
new file mode 100644
index 000000000..c5eb1a7c7
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxodlgs.h
@@ -0,0 +1,375 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXODLGS_H__
+#define __AFXODLGS_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in _MAC builds.
+#endif
+
+#ifdef _AFXCTL
+ #error OLE UI dialogs not supported in _AFXCTL builds.
+#endif
+
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+
+// include OLE 2.0 dialog/helper APIs
+#include <ole2ui.h>
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXODLGS.H - MFC OLE dialogs
+
+// Classes declared in this file
+
+//CCommonDialog
+ class COleDialog; // base class for OLE dialog wrappers
+ class COleInsertDialog; // insert object dialog
+ class COleConvertDialog; // convert dialog
+ class COleChangeIconDialog; // change icon dialog
+ class COlePasteSpecialDialog; // paste special dialog
+ class COleLinksDialog; // edit links dialog
+ class COleUpdateDialog; // update links/embeddings dialog
+ class COleBusyDialog; // used for
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Wrappers for OLE UI dialogs
+
+class COleDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(COleDialog)
+
+// Attributes
+public:
+ UINT GetLastError() const;
+
+// Implementation
+public:
+ int MapResult(UINT nResult);
+ COleDialog(CWnd* pParentWnd);
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ UINT m_nLastError;
+
+protected:
+ friend UINT CALLBACK AFX_EXPORT _AfxOleHookProc(HWND, UINT, WPARAM, LPARAM);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleInsertDialog
+
+class COleInsertDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleInsertDialog)
+
+// Attributes
+public:
+ OLEUIINSERTOBJECT m_io; // structure for OleUIInsertObject
+
+// Constructors
+ COleInsertDialog(DWORD dwFlags = IOF_SELECTCREATENEW,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ BOOL CreateItem(COleClientItem* pItem);
+ // call after DoModal to create item based on dialog data
+
+// Attributes (after DoModal returns IDOK)
+ enum Selection { createNewItem, insertFromFile, linkToFile };
+ UINT GetSelectionType() const;
+ // return type of selection made
+
+ CString GetPathName() const; // return full path name
+ REFCLSID GetClassID() const; // get class ID of new item
+
+ DVASPECT GetDrawAspect() const;
+ // DVASPECT_CONTENT or DVASPECT_ICON
+ HGLOBAL GetIconicMetafile() const;
+ // returns HGLOBAL to METAFILEPICT struct with iconic data
+
+// Implementation
+public:
+ virtual ~COleInsertDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szFileName[_MAX_PATH];
+ // contains full path name after return
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleConvertDialog
+
+class COleConvertDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleConvertDialog)
+
+// Attributes
+public:
+ OLEUICONVERT m_cv; // structure for OleUIConvert
+
+// Constructors
+ COleConvertDialog(COleClientItem* pItem,
+ DWORD dwFlags = CF_SELECTCONVERTTO, CLSID* pClassID = NULL,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ // just display the dialog and collect convert info
+ BOOL DoConvert(COleClientItem* pItem);
+ // do the conversion on pItem (after DoModal == IDOK)
+
+// Attributes (after DoModal returns IDOK)
+ enum Selection { noConversion, convertItem, activateAs };
+ UINT GetSelectionType() const;
+
+ HGLOBAL GetIconicMetafile() const; // will return NULL if same as before
+ REFCLSID GetClassID() const; // get class ID to convert or activate as
+ DVASPECT GetDrawAspect() const; // get new draw aspect
+
+// Implementation
+public:
+ virtual ~COleConvertDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleChangeIconDialog
+
+class COleChangeIconDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleChangeIconDialog)
+
+// Attributes
+public:
+ OLEUICHANGEICON m_ci; // structure for OleUIChangeIcon
+
+// Constructors
+ COleChangeIconDialog(COleClientItem* pItem,
+ DWORD dwFlags = CIF_SELECTCURRENT,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ BOOL DoChangeIcon(COleClientItem* pItem);
+
+// Attributes
+ HGLOBAL GetIconicMetafile() const;
+
+// Implementation
+public:
+ virtual ~COleChangeIconDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COlePasteSpecialDialog
+
+class COlePasteSpecialDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COlePasteSpecialDialog)
+
+// Attributes
+public:
+ OLEUIPASTESPECIAL m_ps; // structure for OleUIPasteSpecial
+
+// Constructors
+ COlePasteSpecialDialog(DWORD dwFlags = PSF_SELECTPASTE,
+ COleDataObject* pDataObject = NULL, CWnd *pParentWnd = NULL);
+
+// Operations
+ OLEUIPASTEFLAG AddLinkEntry(UINT cf);
+ void AddFormat(const FORMATETC& formatEtc, LPTSTR lpszFormat,
+ LPTSTR lpszResult, DWORD flags);
+ void AddFormat(UINT cf, DWORD tymed, UINT nFormatID, BOOL bEnableIcon,
+ BOOL bLink);
+ void AddStandardFormats(BOOL bEnableLink = TRUE);
+
+ virtual int DoModal();
+ BOOL CreateItem(COleClientItem *pNewItem);
+ // creates a standard OLE item from selection data
+
+// Attributes (after DoModal returns IDOK)
+ int GetPasteIndex() const; // resulting index to use for paste
+
+ enum Selection { pasteLink = 1, pasteNormal = 2, pasteStatic = 3, pasteOther = 4};
+ UINT GetSelectionType() const;
+ // get selection type (pasteLink, pasteNormal, pasteStatic)
+
+ DVASPECT GetDrawAspect() const;
+ // DVASPECT_CONTENT or DVASPECT_ICON
+ HGLOBAL GetIconicMetafile() const;
+ // returns HGLOBAL to METAFILEPICT struct with iconic data
+
+// Implementation
+public:
+ virtual ~COlePasteSpecialDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ unsigned int m_arrLinkTypes[8];
+ // size limit imposed by MFCUIx32.DLL library
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleLinksDialog
+
+class COleLinksDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleLinksDialog)
+
+// Attributes
+public:
+ OLEUIEDITLINKS m_el; // structure for OleUIEditLinks
+
+// Constructors
+ COleLinksDialog(COleDocument* pDoc, CView* pView, DWORD dwFlags = 0,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal(); // display the dialog and edit links
+
+// Implementation
+public:
+ virtual ~COleLinksDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+
+public:
+ COleDocument* m_pDocument; // document being manipulated
+ COleClientItem* m_pSelectedItem; // primary selected item in m_pDocument
+ POSITION m_pos; // used during link enumeration
+ BOOL m_bUpdateLinks; // update links?
+ BOOL m_bUpdateEmbeddings; // update embeddings?
+
+// Interface Maps
+ BEGIN_INTERFACE_PART(OleUILinkContainer, IOleUILinkContainer)
+ INIT_INTERFACE_PART(COleLinksDialog, OleUILinkContainer)
+ STDMETHOD_(DWORD,GetNextLink)(DWORD);
+ STDMETHOD(SetLinkUpdateOptions)(DWORD, DWORD);
+ STDMETHOD(GetLinkUpdateOptions)(DWORD, LPDWORD);
+ STDMETHOD(SetLinkSource)(DWORD, LPTSTR, ULONG, ULONG*, BOOL);
+ STDMETHOD(GetLinkSource)(DWORD, LPTSTR*, ULONG*,
+ LPTSTR*, LPTSTR*, BOOL*, BOOL*);
+ STDMETHOD(OpenLinkSource)(DWORD);
+ STDMETHOD(UpdateLink)(DWORD, BOOL, BOOL);
+ STDMETHOD(CancelLink)(DWORD);
+ END_INTERFACE_PART(OleUILinkContainer)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleUpdateDialog
+
+class COleUpdateDialog : public COleLinksDialog
+{
+ DECLARE_DYNAMIC(COleUpdateDialog)
+
+// Constructors
+public:
+ COleUpdateDialog(COleDocument* pDoc,
+ BOOL bUpdateLinks = TRUE, BOOL bUpdateEmbeddings = FALSE,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+// Implementation
+public:
+ virtual ~COleUpdateDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ CString m_strCaption; // caption for the dialog
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleBusyDialog - useful in managing concurrency
+
+class COleBusyDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleBusyDialog)
+
+// Attributes
+public:
+ OLEUIBUSY m_bz;
+
+// Constructors
+ COleBusyDialog(HTASK htaskBusy, BOOL bNotResponding = FALSE,
+ DWORD dwFlags = 0, CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ enum Selection { switchTo = 1, retry = 2, callUnblocked = 3 };
+ UINT GetSelectionType() const;
+
+// Implementation
+public:
+ ~COleBusyDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ Selection m_selection; // selection after DoModal returns IDOK
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXODLGS_INLINE inline
+#include <afxole.inl>
+#undef _AFXODLGS_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXODLGS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxole.h b/public/sdk/inc/mfc30/afxole.h
new file mode 100644
index 000000000..5c865ccdb
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxole.h
@@ -0,0 +1,1630 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLE_H__
+#define __AFXOLE_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h>
+#endif
+
+#ifndef __AFXDISP_H__
+ #include <afxdisp.h>
+#endif
+
+// include OLE 2.0 Compound Document headers
+#ifndef _UNICODE
+ #define OLE2ANSI
+#endif
+#include <ole2.h>
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXOLE.H - MFC OLE support
+
+// Classes declared in this file
+
+//CDocument
+ class COleDocument; // OLE container document
+ class COleLinkingDoc; // supports links to embeddings
+ class COleServerDoc; // OLE server document
+
+//CCmdTarget
+ class CDocItem; // part of a document
+ class COleClientItem; // embedded ole object from outside
+ class COleServerItem; // ole object to export
+ class COleDataSource; // clipboard data source mechanism
+ class COleDropSource; // drag/drop source
+ class COleDropTarget; // drag/drop target
+ class COleMessageFilter; // concurrency management
+
+//CFrameWnd
+ class COleIPFrameWnd; // frame window for in-place servers
+
+//CControlBar
+ class COleResizeBar; // implements in-place resizing
+
+//CFile
+ class COleStreamFile; // CFile wrapper for IStream interface
+
+class COleDataObject; // wrapper for IDataObject interface
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// backward compatibility
+
+// COleClientDoc is now obsolete -- use COleDocument instead
+#define COleClientDoc COleDocument
+
+// COleServer has been replaced by the more general COleObjectFactory
+#define COleServer COleObjectFactory
+
+/////////////////////////////////////////////////////////////////////////////
+// Useful OLE specific types (some from OLE 1.0 headers)
+
+// Codes for CallBack events
+enum OLE_NOTIFICATION
+{
+ OLE_CHANGED, // representation of a draw aspect has changed
+ OLE_SAVED, // the item has committed its storage
+ OLE_CLOSED, // the item has closed
+ OLE_RENAMED, // the item has changed its moniker
+ OLE_CHANGED_STATE, // the item state (open, active, etc.) has changed
+ OLE_CHANGED_ASPECT, // the item draw aspect has changed
+};
+
+// Object types
+enum OLE_OBJTYPE
+{
+ OT_UNKNOWN = 0,
+
+ // These are OLE 1.0 types and OLE 2.0 types as returned from GetType().
+ OT_LINK = 1,
+ OT_EMBEDDED = 2,
+ OT_STATIC = 3,
+
+ // All OLE2 objects are written with this tag when serialized. This
+ // differentiates them from OLE 1.0 objects written with MFC 2.0.
+ // This value will never be returned from GetType().
+ OT_OLE2 = 256,
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDataObject -- simple wrapper for IDataObject
+
+class COleDataObject
+{
+// Constructors
+public:
+ COleDataObject();
+
+// Operations
+ void Attach(LPDATAOBJECT lpDataObject, BOOL bAutoRelease = TRUE);
+ LPDATAOBJECT Detach(); // detach and get ownership of m_lpDataObject
+ void Release(); // detach and Release ownership of m_lpDataObject
+ BOOL AttachClipboard(); // attach to current clipboard object
+
+// Attributes
+ void BeginEnumFormats();
+ BOOL GetNextFormat(LPFORMATETC lpFormatEtc);
+ CFile* GetFileData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+ HGLOBAL GetGlobalData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+ BOOL GetData(CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium,
+ LPFORMATETC lpFormatEtc = NULL);
+ BOOL IsDataAvailable(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+// Implementation
+public:
+ LPDATAOBJECT m_lpDataObject;
+ LPENUMFORMATETC m_lpEnumerator;
+ ~COleDataObject();
+
+ // advanced use and implementation
+ LPDATAOBJECT GetIDataObject(BOOL bAddRef);
+ void EnsureClipboardObject();
+ BOOL m_bClipboard; // TRUE if represents the Win32 clipboard
+
+protected:
+ BOOL m_bAutoRelease; // TRUE if destructor should call Release
+
+private:
+ // Disable the copy constructor and assignment by default so you will get
+ // compiler errors instead of unexpected behaviour if you pass objects
+ // by value or assign objects.
+ COleDataObject(const COleDataObject&); // no implementation
+ void operator=(const COleDataObject&); // no implementation
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDataSource -- wrapper for implementing IDataObject
+// (works similar to how data is provided on the clipboard)
+
+struct AFX_DATACACHE_ENTRY;
+class COleDropSource;
+
+class COleDataSource : public CCmdTarget
+{
+// Constructors
+public:
+ COleDataSource();
+
+// Operations
+ void Empty(); // empty cache (similar to ::EmptyClipboard)
+
+ // CacheData & DelayRenderData operations similar to ::SetClipboardData
+ void CacheGlobalData(CLIPFORMAT cfFormat, HGLOBAL hGlobal,
+ LPFORMATETC lpFormatEtc = NULL); // for HGLOBAL based data
+ void DelayRenderFileData(CLIPFORMAT cfFormat,
+ LPFORMATETC lpFormatEtc = NULL); // for CFile* based delayed render
+
+ // Clipboard and Drag/Drop access
+ DROPEFFECT DoDragDrop(
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE|DROPEFFECT_LINK,
+ LPCRECT lpRectStartDrag = NULL,
+ COleDropSource* pDropSource = NULL);
+ void SetClipboard();
+ static void PASCAL FlushClipboard();
+ static COleDataSource* PASCAL GetClipboardOwner();
+
+ // Advanced: STGMEDIUM based cached data
+ void CacheData(CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium,
+ LPFORMATETC lpFormatEtc = NULL); // for LPSTGMEDIUM based data
+ // Advanced: STGMEDIUM or HGLOBAL based delayed render
+ void DelayRenderData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+ // Advanced: support for SetData in COleServerItem
+ // (not generally useful for clipboard or drag/drop operations)
+ void DelaySetData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+// Overidables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // OnRenderFileData and OnRenderGlobalData are called by
+ // the default implementation of OnRenderData.
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ // used only in COleServerItem implementation
+
+// Implementation
+public:
+ virtual ~COleDataSource();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ AFX_DATACACHE_ENTRY* m_pDataCache; // data cache itself
+ UINT m_nMaxSize; // current allocated size
+ UINT m_nSize; // current size of the cache
+ UINT m_nGrowBy; // number of cache elements to grow by for new allocs
+
+ AFX_DATACACHE_ENTRY* Lookup(
+ LPFORMATETC lpFormatEtc, DATADIR nDataDir) const;
+ AFX_DATACACHE_ENTRY* GetCacheEntry(
+ LPFORMATETC lpFormatEtc, DATADIR nDataDir);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleDataSource, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleServerItem;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// DocItem support
+
+class CDocItem : public CCmdTarget
+{
+ DECLARE_SERIAL(CDocItem)
+
+// Constructors
+protected: // abstract class
+ CDocItem();
+
+// Attributes
+public:
+ CDocument* GetDocument() const; // return container document
+
+// Overridables
+public:
+ // Raw data access (native format)
+ virtual BOOL IsBlank() const;
+
+// Implementation
+protected:
+ COleDocument* m_pDocument;
+
+public:
+ virtual void Serialize(CArchive& ar); // for Native data
+ virtual ~CDocItem();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ friend class COleDocument; // for access to back pointer
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleDocument - common OLE container behavior (enables server functionality)
+
+class COleDocument : public CDocument
+{
+ DECLARE_DYNAMIC(COleDocument)
+
+// Constructors
+public:
+ COleDocument();
+
+// Attributes
+ BOOL HasBlankItems() const; // check for BLANK items
+ COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);
+ // return in-place active item for this view or NULL if none
+
+// Operations
+ // iterating over existing items
+ virtual POSITION GetStartPosition() const;
+ virtual CDocItem* GetNextItem(POSITION& pos) const;
+
+ // iterator helpers (helpers use virtual GetNextItem above)
+ COleClientItem* GetNextClientItem(POSITION& pos) const;
+ COleServerItem* GetNextServerItem(POSITION& pos) const;
+
+ // adding new items - called from item constructors
+ virtual void AddItem(CDocItem* pItem);
+ virtual void RemoveItem(CDocItem* pItem);
+
+ void EnableCompoundFile(BOOL bEnable = TRUE);
+ // enable compound file support (only call during constructor)
+ void UpdateModifiedFlag();
+ // scan for modified items -- mark document modified
+
+ // printer-device caching/control
+ BOOL ApplyPrintDevice(const DVTARGETDEVICE* ptd);
+ BOOL ApplyPrintDevice(const PRINTDLG* ppd);
+ // these apply the target device to all COleClientItem objects
+
+// Overridables
+ virtual COleClientItem* GetPrimarySelectedItem(CView* pView);
+ // return primary selected item or NULL if none
+ virtual void OnShowViews(BOOL bVisible);
+ // called during app-idle when visibility of a document has changed
+
+// Implementation
+public:
+ CObList m_docItemList; // not owned items
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ CFrameWnd* GetFirstFrame();
+
+ // document handling overrides
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE);
+ virtual ~COleDocument();
+ virtual void DeleteContents(); // delete client items in list
+ virtual void Serialize(CArchive& ar); // serialize items to file
+ virtual void PreCloseFrame(CFrameWnd* pFrame);
+ virtual BOOL SaveModified();
+ virtual void OnIdle();
+
+ // compound file implementation
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ void CommitItems(BOOL bSuccess); // called during File.Save & File.Save As
+
+ // minimal linking protocol
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+ virtual LPOLEITEMCONTAINER GetContainer();
+
+protected:
+ // document state implementation
+ UINT m_dwNextItemNumber;// serial number for next item in this document
+ BOOL m_bLastVisible; // TRUE if one or more views was last visible
+
+ // 'docfile' support
+ BOOL m_bCompoundFile; // TRUE if use compound files
+ LPSTORAGE m_lpRootStg; // root storage for the document
+ BOOL m_bSameAsLoad; // TRUE = file-save, FALSE = Save [Copy] As
+ BOOL m_bRemember; // if FALSE, indicates Save Copy As
+
+ DVTARGETDEVICE* m_ptd; // current document target device
+
+ // implementation helpers
+ virtual void LoadFromStorage();
+ virtual void SaveToStorage(CObject* pObject = NULL);
+ CDocItem* GetNextItemOfKind(POSITION& pos, CRuntimeClass* pClass) const;
+
+ // command handling
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+
+ afx_msg void OnUpdatePasteMenu(CCmdUI* pCmdUI);
+ afx_msg void OnUpdatePasteLinkMenu(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditLinksMenu(CCmdUI* pCmdUI);
+ afx_msg void OnEditLinks();
+ afx_msg void OnEditConvert();
+ afx_msg void OnUpdateEditChangeIcon(CCmdUI* pCmdUI);
+ afx_msg void OnEditChangeIcon();
+ afx_msg void OnUpdateObjectVerbMenu(CCmdUI* pCmdUI);
+ afx_msg void OnFileSendMail();
+
+ friend class COleClientItem;
+ friend class COleServerItem;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleClientItem - Supports OLE2 non-inplace editing.
+// implements IOleClientSite, IAdviseSink, and IOleInPlaceSite
+
+class COleFrameHook; // forward reference (see ..\src\oleimpl.h)
+
+class COleClientItem : public CDocItem
+{
+ DECLARE_DYNAMIC(COleClientItem)
+
+// Constructors
+public:
+ COleClientItem(COleDocument* pContainerDoc = NULL);
+
+ // create from the clipboard
+ BOOL CreateFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateStaticFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from a class ID (Insert New Object dialog)
+ BOOL CreateNewItem(REFCLSID clsid, OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from COleDataObject
+ BOOL CreateFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateStaticFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from file (package support)
+ BOOL CreateFromFile(LPCTSTR lpszFileName, REFCLSID clsid = CLSID_NULL,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromFile(LPCTSTR lpszFileName,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create a copy
+ BOOL CreateCloneFrom(const COleClientItem* pSrcItem);
+
+// General Attributes
+public:
+ SCODE GetLastStatus() const;
+ OLE_OBJTYPE GetType() const; // OT_LINK, OT_EMBEDDED, OT_STATIC
+ void GetClassID(CLSID* pClassID) const;
+ void GetUserType(USERCLASSTYPE nUserClassType, CString& rString);
+ BOOL GetExtent(LPSIZE lpSize, DVASPECT nDrawAspect = (DVASPECT)-1);
+ // will return FALSE if item is BLANK
+ BOOL GetCachedExtent(LPSIZE lpSize, DVASPECT nDrawAspect = (DVASPECT)-1);
+
+ // getting/setting iconic cache
+ HGLOBAL GetIconicMetafile();
+ BOOL SetIconicMetafile(HGLOBAL hMetaPict);
+
+ // setting/getting default display aspect
+ DVASPECT GetDrawAspect() const;
+ void SetDrawAspect(DVASPECT nDrawAspect);
+
+ // for printer presentation cache
+ BOOL SetPrintDevice(const DVTARGETDEVICE* ptd);
+ BOOL SetPrintDevice(const PRINTDLG* ppd);
+
+ // Item state
+ enum ItemState
+ { emptyState, loadedState, openState, activeState, activeUIState };
+ UINT GetItemState() const;
+
+ BOOL IsModified() const;
+ BOOL IsRunning() const;
+ BOOL IsInPlaceActive() const;
+ BOOL IsOpen() const;
+ CView* GetActiveView() const;
+
+ // Data access
+ void AttachDataObject(COleDataObject& rDataObject) const;
+
+ // other rare access information
+ COleDocument* GetDocument() const; // return container
+
+ // helpers for checking clipboard data availability
+ static BOOL PASCAL CanPaste();
+ static BOOL PASCAL CanPasteLink();
+
+ // helpers for checking COleDataObject, useful in drag drop
+ static BOOL PASCAL CanCreateFromData(const COleDataObject* pDataObject);
+ static BOOL PASCAL CanCreateLinkFromData(const COleDataObject* pDataObject);
+
+// General Operations
+ virtual void Release(OLECLOSE dwCloseOption = OLECLOSE_NOSAVE);
+ // cleanup, detach (close if needed)
+ void Close(OLECLOSE dwCloseOption = OLECLOSE_SAVEIFDIRTY);
+ // close without releasing the item
+ void Delete(BOOL bAutoDelete = TRUE);
+ // logically delete from file -- not part of the document anymore
+ void Run(); // insure item is in running state
+
+ // Drawing
+ BOOL Draw(CDC* pDC, LPCRECT lpBounds,
+ DVASPECT nDrawAspect = (DVASPECT)-1); // defaults to m_nDrawAspect
+
+ // Activation
+ virtual BOOL DoVerb(LONG nVerb, CView* pView, LPMSG lpMsg = NULL);
+ void Activate(LONG nVerb, CView* pView, LPMSG lpMsg = NULL);
+
+ // In-place Activation
+ void Deactivate(); // completely deactivate
+ void DeactivateUI(); // deactivate the user interface
+ BOOL ReactivateAndUndo(); // reactivate then perform undo command
+ BOOL SetItemRects(LPCRECT lpPosRect = NULL, LPCRECT lpClipRect = NULL);
+ CWnd* GetInPlaceWindow();
+
+ // Clipboard operations
+ void CopyToClipboard(BOOL bIncludeLink = FALSE);
+ DROPEFFECT DoDragDrop(LPCRECT lpItemRect, CPoint ptOffset,
+ BOOL bIncludeLink = FALSE,
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE,
+ LPCRECT lpRectStartDrag = NULL);
+ void GetClipboardData(COleDataSource* pDataSource,
+ BOOL bIncludeLink = FALSE, LPPOINT lpOffset = NULL,
+ LPSIZE lpSize = NULL);
+
+ // called for creating a COleDataSource by CopyToClipboard and DoDragDrop
+ virtual COleDataSource* OnGetClipboardData(BOOL bIncludeLink,
+ LPPOINT lpOffset, LPSIZE lpSize);
+
+ // Operations that apply to embedded items only
+ void SetHostNames(LPCTSTR lpszHost, LPCTSTR lpszHostObj);
+ void SetExtent(const CSize& size, DVASPECT nDrawAspect = DVASPECT_CONTENT);
+
+ // Operations that apply to linked items only
+ // (link options are rarely changed, except through Links dialog)
+ OLEUPDATE GetLinkUpdateOptions();
+ void SetLinkUpdateOptions(OLEUPDATE dwUpdateOpt);
+
+ // Link-source update status (also useful for embeddings that contain links)
+ BOOL UpdateLink(); // make up-to-date
+ BOOL IsLinkUpToDate() const; // is link up-to-date
+
+ // object conversion
+ BOOL ConvertTo(REFCLSID clsidNew);
+ BOOL ActivateAs(LPCTSTR lpszUserType, REFCLSID clsidOld, REFCLSID clsidNew);
+ BOOL Reload(); // for lazy reload after ActivateAs
+
+// Overridables (notifications of IAdviseSink, IOleClientSite and IOleInPlaceSite)
+ // Callbacks/notifications from the server you must/should implement
+ virtual void OnChange(OLE_NOTIFICATION nCode, DWORD dwParam);
+ // implement OnChange to invalidate when item changes
+
+protected:
+ virtual void OnGetItemPosition(CRect& rPosition);
+ // implement OnGetItemPosition if you support in-place activation
+
+ // Common overrides for in-place activation
+ virtual BOOL OnScrollBy(CSize sizeExtent);
+
+ // Common overrides for applications supporting undo
+ virtual void OnDiscardUndoState();
+ virtual void OnDeactivateAndUndo();
+
+public:
+ virtual void OnDeactivateUI(BOOL bUndoable);
+
+protected:
+ // Common overrides for applications supporting links to embeddings
+ virtual void OnShowItem();
+
+ // Advanced overrides for in-place activation
+ virtual void OnGetClipRect(CRect& rClipRect);
+ virtual BOOL CanActivate();
+
+public:
+ virtual void OnActivate();
+ virtual void OnActivateUI();
+ virtual void OnDeactivate();
+
+protected:
+ virtual BOOL OnGetWindowContext(CFrameWnd** ppMainFrame,
+ CFrameWnd** ppDocFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+ virtual BOOL OnChangeItemPosition(const CRect& rectPos);
+ // default calls SetItemRects and caches the pos rect
+
+public:
+ // Advanced overrides for menu/title handling (rarely overridden)
+ virtual void OnInsertMenus(CMenu* pMenuShared,
+ LPOLEMENUGROUPWIDTHS lpMenuWidths);
+ virtual void OnSetMenu(CMenu* pMenuShared, HOLEMENU holemenu,
+ HWND hwndActiveObject);
+ virtual void OnRemoveMenus(CMenu* pMenuShared);
+ virtual void OnUpdateFrameTitle();
+
+ // Advanced override for control bar handling
+ virtual BOOL OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow);
+
+// Implementation
+public:
+ // data to support non-inplace activated items
+ LPOLEOBJECT m_lpObject; // in case you want direct access to the OLE object
+ LPVIEWOBJECT2 m_lpViewObject;// IViewObject for IOleObject above
+ DWORD m_dwItemNumber; // serial number for this item in this document
+ DVASPECT m_nDrawAspect; // current default display aspect
+ SCODE m_scLast; // last error code encountered
+ LPSTORAGE m_lpStorage; // provides storage for m_lpObject
+ LPLOCKBYTES m_lpLockBytes; // part of implementation of m_lpStorage
+ DWORD m_dwConnection; // advise connection to the m_lpObject
+ BYTE m_bLinkUnavail; // TRUE if link is currently unavailable
+ BYTE m_bMoniker; // TRUE if moniker is assigned
+ BYTE m_bLocked; // TRUE if object has external lock
+ BYTE m_bNeedCommit; // TRUE if need CommitItem
+ BYTE m_bClosing; // TRUE if currently doing COleClientItem::Close
+ BYTE m_bReserved[3]; // (reserved for future use)
+
+ // for compound file support
+ LPSTORAGE m_lpNewStorage; // used during Save As situations
+
+ // item state & item type
+ ItemState m_nItemState; // item state (see ItemState enumeration)
+ OLE_OBJTYPE m_nItemType; // item type (depends on how created)
+
+ // data valid when in-place activated
+ CView* m_pView; // view when object is in-place activated
+ DWORD m_dwContainerStyle; // style of the container wnd before activation
+ COleFrameHook* m_pInPlaceFrame;// frame window when in-place active
+ COleFrameHook* m_pInPlaceDoc; // doc window when in-place (may be NULL)
+ HWND m_hWndServer; // HWND of in-place server window
+
+public:
+ virtual ~COleClientItem();
+ virtual void Serialize(CArchive& ar);
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+// Implementation
+public:
+ virtual BOOL ReportError(SCODE sc) const;
+ virtual BOOL FreezeLink(); // converts to static: for edit links dialog
+
+ DWORD GetNewItemNumber(); // generates new item number
+ void GetItemName(LPTSTR lpszItemName) const; // gets readable item name
+
+ void UpdateItemType(); // update m_nItemType
+
+protected:
+ // clipboard helpers
+ void GetEmbeddedItemData(LPSTGMEDIUM lpStgMedium);
+ void AddCachedData(COleDataSource* pDataSource);
+ BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);
+ void GetObjectDescriptorData(LPPOINT lpOffset, LPSIZE lpSize,
+ LPSTGMEDIUM lpStgMedium);
+
+ // interface helpers
+ virtual LPOLECLIENTSITE GetClientSite();
+
+ // helpers for printer-cached representation
+ BOOL GetPrintDeviceInfo(LPOLECACHE* plpOleCache,
+ DVTARGETDEVICE** pptd, DWORD* pdwConnection);
+
+// Advanced Overridables for implementation
+protected:
+ virtual BOOL FinishCreate(SCODE sc);
+ virtual void CheckGeneral(SCODE sc);
+
+ virtual void OnDataChange(LPFORMATETC lpFormatEtc,
+ LPSTGMEDIUM lpStgMedium);
+
+public:
+ // for storage hookability (override to use 'docfiles')
+ virtual void GetItemStorage(); // allocate storage for new item
+ virtual void ReadItem(CArchive& ar); // read item from archive
+ virtual void WriteItem(CArchive& ar); // write item to archive
+ virtual void CommitItem(BOOL bSuccess); // commit item's storage
+
+ // compound & flat file implementations of above
+ void GetItemStorageFlat();
+ void ReadItemFlat(CArchive& ar);
+ void WriteItemFlat(CArchive& ar);
+ void GetItemStorageCompound();
+ void ReadItemCompound(CArchive& ar);
+ void WriteItemCompound(CArchive& ar);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(OleClientSite, IOleClientSite)
+ INIT_INTERFACE_PART(COleClientItem, OleClientSite)
+ STDMETHOD(SaveObject)();
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(GetContainer)(LPOLECONTAINER*);
+ STDMETHOD(ShowObject)();
+ STDMETHOD(OnShowWindow)(BOOL);
+ STDMETHOD(RequestNewObjectLayout)();
+ END_INTERFACE_PART(OleClientSite)
+
+ BEGIN_INTERFACE_PART(AdviseSink, IAdviseSink)
+ INIT_INTERFACE_PART(COleClientItem, AdviseSink)
+ STDMETHOD_(void,OnDataChange)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD_(void,OnViewChange)(DWORD, LONG);
+ STDMETHOD_(void,OnRename)(LPMONIKER);
+ STDMETHOD_(void,OnSave)();
+ STDMETHOD_(void,OnClose)();
+ END_INTERFACE_PART(AdviseSink)
+
+ BEGIN_INTERFACE_PART(OleIPSite, IOleInPlaceSite)
+ INIT_INTERFACE_PART(COleClientItem, OleIPSite)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(CanInPlaceActivate)();
+ STDMETHOD(OnInPlaceActivate)();
+ STDMETHOD(OnUIActivate)();
+ STDMETHOD(GetWindowContext)(LPOLEINPLACEFRAME*,
+ LPOLEINPLACEUIWINDOW*, LPRECT, LPRECT, LPOLEINPLACEFRAMEINFO);
+ STDMETHOD(Scroll)(SIZE);
+ STDMETHOD(OnUIDeactivate)(BOOL);
+ STDMETHOD(OnInPlaceDeactivate)();
+ STDMETHOD(DiscardUndoState)();
+ STDMETHOD(DeactivateAndUndo)();
+ STDMETHOD(OnPosRectChange)(LPCRECT);
+ END_INTERFACE_PART(OleIPSite)
+
+ DECLARE_INTERFACE_MAP()
+
+// Friendship declarations (to avoid many public members)
+ friend class COleUIWindow;
+ friend class COleFrameWindow;
+ friend class COleLinkingDoc;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleServerItem - IOleObject & IDataObject OLE component
+
+class COleServerItem : public CDocItem
+{
+ DECLARE_DYNAMIC(COleServerItem)
+protected:
+ // NOTE: many members in this class are protected - since everything
+ // in this class is designed for implementing an OLE server.
+ // Requests will come from OLE containers through non-C++ mechanisms,
+ // which will result in virtual functions in this class being called.
+
+// Constructors
+ COleServerItem(COleServerDoc* pServerDoc, BOOL bAutoDelete);
+ // If your COleServerItem is an integral part of your data,
+ // bAutoDelete should be FALSE. If your COleServerItem can be
+ // deleted when a link is released, it can be TRUE.
+
+ COleDataSource* GetDataSource();
+ // Use this data source to add conversion formats that your
+ // server should support. Usually such formats are
+ // added in the item's constructor.
+
+// Public Attributes
+public:
+ COleServerDoc* GetDocument() const; // return server document
+
+ // naming (for links only)
+ const CString& GetItemName() const; // get name of linked item
+ void SetItemName(LPCTSTR lpszItemName); // set name of linked item
+
+ // link state
+ BOOL IsConnected() const; // returns TRUE if item has a client
+ BOOL IsLinkedItem() const; // returns TRUE if item is not embedded item
+
+ // extents
+ CSize m_sizeExtent;
+ // HIMETRIC size -- the default implementation of OnSetExtent
+ // updates this member variable. This member tells the server how
+ // much of the object is visible in the container document.
+
+// Operations
+public:
+ void NotifyChanged(DVASPECT nDrawAspect = DVASPECT_CONTENT);
+ // call this after you change item
+ void CopyToClipboard(BOOL bIncludeLink = FALSE);
+ // helper for implementing server 'copy to clipboard'
+ DROPEFFECT DoDragDrop(LPCRECT lpRectItem, CPoint ptOffset,
+ BOOL bIncludeLink = FALSE,
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE,
+ LPCRECT lpRectStartDrag = NULL);
+ void GetClipboardData(COleDataSource* pDataSource,
+ BOOL bIncludeLink = FALSE, LPPOINT lpOffset = NULL,
+ LPSIZE lpSize = NULL);
+
+// Overridables
+ // overridables you must implement for yourself
+ virtual BOOL OnDraw(CDC* pDC, CSize& rSize) = 0;
+ // drawing for metafile format (return FALSE if not supported or error)
+ // (called for DVASPECT_CONTENT only)
+
+ // overridables you may want to implement yourself
+ virtual void OnUpdate(COleServerItem* pSender,
+ LPARAM lHint, CObject* pHint, DVASPECT nDrawAspect);
+ // the default implementation always calls NotifyChanged
+
+ virtual BOOL OnDrawEx(CDC* pDC, DVASPECT nDrawAspect, CSize& rSize);
+ // advanced drawing -- called for DVASPECT other than DVASPECT_CONTENT
+ virtual BOOL OnSetExtent(DVASPECT nDrawAspect, const CSize& size);
+ virtual BOOL OnGetExtent(DVASPECT nDrawAspect, CSize& rSize);
+ // default implementation uses m_sizeExtent
+
+ // overridables you do not have to implement
+ virtual void OnDoVerb(LONG iVerb);
+ // default routes to OnShow &/or OnOpen
+ virtual BOOL OnSetColorScheme(const LOGPALETTE* lpLogPalette);
+ // default does nothing
+ virtual COleDataSource* OnGetClipboardData(BOOL bIncludeLink,
+ LPPOINT lpOffset, LPSIZE lpSize);
+ // called for access to clipboard data
+ virtual BOOL OnQueryUpdateItems();
+ // called to determine if there are any contained out-of-date links
+ virtual void OnUpdateItems();
+ // called to update any out-of-date links
+
+protected:
+ virtual void OnShow();
+ // show item in the user interface (may edit in-place)
+ virtual void OnOpen();
+ // show item in the user interface (must open fully)
+ virtual void OnHide();
+ // hide document (and sometimes application)
+
+ // very advanced overridables
+public:
+ virtual BOOL OnInitFromData(COleDataObject* pDataObject, BOOL bCreation);
+ // initialize object from IDataObject
+
+ // see COleDataSource for a description of these overridables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // HGLOBAL version will be called first, then CFile* version
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ // Rare -- only if you support SetData (programmatic paste)
+
+ // advanced helpers for CopyToClipboard
+ void GetEmbedSourceData(LPSTGMEDIUM lpStgMedium);
+ void AddOtherClipboardData(COleDataSource* pDataSource);
+ BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);
+ void GetObjectDescriptorData(LPPOINT lpOffset, LPSIZE lpSize,
+ LPSTGMEDIUM lpStgMedium);
+
+// Implementation
+public:
+ BOOL m_bNeedUnlock; // if TRUE need to pDoc->LockExternal(FALSE)
+ BOOL m_bAutoDelete; // if TRUE will OnRelease will 'delete this'
+
+ // special version of OnFinalRelease to implement document locking
+ virtual void OnFinalRelease();
+
+protected:
+ CString m_strItemName; // simple item name
+
+public:
+ LPOLEADVISEHOLDER m_lpOleAdviseHolder; // may be NULL
+ LPDATAADVISEHOLDER m_lpDataAdviseHolder; // may be NULL
+
+ virtual ~COleServerItem();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // implementation helpers
+ void NotifyClient(OLE_NOTIFICATION wNotification, DWORD dwParam);
+ LPDATAOBJECT GetDataObject();
+ LPOLEOBJECT GetOleObject();
+ LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+
+protected:
+ virtual BOOL GetMetafileData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM pmedium);
+ // calls OnDraw or OnDrawEx
+ virtual void OnSaveEmbedding(LPSTORAGE lpStorage);
+ virtual BOOL IsBlank() const;
+
+ // CItemDataSource implements OnRender reflections to COleServerItem
+ class CItemDataSource : public COleDataSource
+ {
+ protected:
+ // the GetData and SetData interfaces forward to m_pItem
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // HGLOBAL version will be called first, then CFile* version
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ };
+ CItemDataSource m_dataSource;
+ // data source used to implement IDataObject
+
+// Interface Maps
+// (Note: these interface maps are used just for link implementation)
+public:
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleServerItem, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCTSTR, LPCTSTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(LPENUMOLEVERB*);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(LPCLSID);
+ STDMETHOD(GetUserType)(DWORD, LPTSTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleServerItem, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class CItemDataSource;
+ friend class COleServerDoc;
+ friend class COleLinkingDoc;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleLinkingDoc -
+// (enables linking to embeddings - beginnings of server fuctionality)
+
+class COleLinkingDoc : public COleDocument
+{
+ DECLARE_DYNAMIC(COleLinkingDoc)
+
+// Constructors
+public:
+ COleLinkingDoc();
+
+// Operations
+ BOOL Register(COleObjectFactory* pFactory, LPCTSTR lpszPathName);
+ // notify the running object table and connect to pServer
+ void Revoke();
+ // revoke from running object table
+
+// Overridables
+protected:
+ virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
+ // return item for the named linked item (for supporting links)
+ virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);
+ // return item for the named embedded item (for links to embeddings)
+
+// Implementation
+public:
+ COleObjectFactory* m_pFactory; // back-pointer to server
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleLinkingDoc();
+
+ // overrides for updating of monikers & running object table registration
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ virtual LPOLEITEMCONTAINER GetContainer();
+ virtual void OnShowViews(BOOL bVisible);
+
+ // special handling of error messages during save/load
+ virtual void ReportSaveLoadException(LPCTSTR lpszPathName,
+ CException* e, BOOL bSaving, UINT nIDPDefault);
+ void BeginDeferErrors();
+ SCODE EndDeferErrors(SCODE sc);
+
+protected:
+ BOOL m_bDeferErrors; // TRUE if in non-interactive OLE mode
+ CException* m_pLastException;
+
+ DWORD m_dwRegister; // file moniker's registration in the ROT
+ BOOL m_bVisibleLock; // TRUE if user is holding lock on document
+
+ // implementation helpers
+ virtual BOOL RegisterIfServerAttached(LPCTSTR lpszPathName, BOOL bMessage);
+ void LockExternal(BOOL bLock, BOOL bRemoveRefs);
+ void UpdateVisibleLock(BOOL bVisible, BOOL bRemoveRefs);
+
+ virtual void SaveToStorage(CObject* pObject = NULL);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PersistFile, IPersistFile)
+ INIT_INTERFACE_PART(COleLinkingDoc, PersistFile)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(Load)(LPCTSTR, DWORD);
+ STDMETHOD(Save)(LPCTSTR, BOOL);
+ STDMETHOD(SaveCompleted)(LPCTSTR);
+ STDMETHOD(GetCurFile)(LPTSTR*);
+ END_INTERFACE_PART(PersistFile)
+
+ BEGIN_INTERFACE_PART(OleItemContainer, IOleItemContainer)
+ INIT_INTERFACE_PART(COleLinkingDoc, OleItemContainer)
+ STDMETHOD(ParseDisplayName)(LPBC, LPTSTR, ULONG*, LPMONIKER*);
+ STDMETHOD(EnumObjects)(DWORD, LPENUMUNKNOWN*);
+ STDMETHOD(LockContainer)(BOOL);
+ STDMETHOD(GetObject)(LPTSTR, DWORD, LPBINDCTX, REFIID, LPVOID*);
+ STDMETHOD(GetObjectStorage)(LPTSTR, LPBINDCTX, REFIID, LPVOID*);
+ STDMETHOD(IsRunning)(LPTSTR);
+ END_INTERFACE_PART(OleItemContainer)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleClientItem;
+ friend class COleClientItem::XOleClientSite;
+ friend class COleServerItem::XOleObject;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleServerDoc - registered server document containing COleServerItems
+
+class COleServerDoc : public COleLinkingDoc
+{
+ DECLARE_DYNAMIC(COleServerDoc)
+
+// Constructors and Destructors
+public:
+ COleServerDoc();
+
+// Attributes
+ BOOL IsEmbedded() const; // TRUE if document is an embedding
+ COleServerItem* GetEmbeddedItem();
+ // return embedded item for document (will allocate if necessary)
+
+ // attributes specific to in-place activation
+ BOOL IsInPlaceActive() const;
+ void GetItemPosition(LPRECT lpPosRect) const;
+ // get current position rectangle of in-place edit
+ void GetItemClipRect(LPRECT lpClipRect) const;
+ // get current clipping rectangle of in-place edit
+ BOOL GetZoomFactor(LPSIZE lpSizeNum = NULL, LPSIZE lpSizeDenom = NULL,
+ LPCRECT lpPosRect = NULL) const;
+ // returns the zoom factor in pixels
+
+// Operations
+ void NotifyChanged();
+ // call this after you change some global attribute like
+ // document dimensions
+ void UpdateAllItems(COleServerItem* pSender,
+ LPARAM lHint = 0L, CObject* pHint = NULL,
+ DVASPECT nDrawAspect = DVASPECT_CONTENT);
+
+ // changes to the entire document (automatically notifies clients)
+ void NotifyRename(LPCTSTR lpszNewName);
+ void NotifySaved();
+ void NotifyClosed(); // call this after you close document
+
+ // specific operations for embedded documents
+ void SaveEmbedding(); // call this to save embedded (before closing)
+
+ // specific to in-place activation
+ BOOL ActivateInPlace();
+ void RequestPositionChange(LPCRECT lpPosRect);
+ BOOL ScrollContainerBy(CSize sizeScroll);
+ BOOL DeactivateAndUndo();
+ BOOL DiscardUndoState();
+
+public:
+// Overridables for standard user interface (full server)
+ virtual BOOL OnUpdateDocument(); // implementation of embedded update
+
+protected:
+// Overridables you must implement for yourself
+ virtual COleServerItem* OnGetEmbeddedItem() = 0;
+ // return item representing entire (embedded) document
+
+// Overridables you do not have to implement
+ virtual void OnClose(OLECLOSE dwCloseOption);
+ virtual void OnSetHostNames(LPCTSTR lpszHost, LPCTSTR lpszHostObj);
+
+// Advanced overridables
+ virtual void OnShowDocument(BOOL bShow);
+ // show first frame for document or hide all frames for document
+
+// Advanced overridables for in-place activation
+public:
+ virtual void OnDeactivate();
+ virtual void OnDeactivateUI(BOOL bUndoable);
+
+protected:
+ virtual void OnSetItemRects(LPCRECT lpPosRect, LPCRECT lpClipRect);
+ virtual BOOL OnReactivateAndUndo();
+
+ virtual void OnFrameWindowActivate(BOOL bActivate);
+ virtual void OnDocWindowActivate(BOOL bActivate);
+ virtual void OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow);
+ virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);
+ virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);
+public:
+ virtual void OnResizeBorder(LPCRECT lpRectBorder,
+ LPOLEINPLACEUIWINDOW lpUIWindow, BOOL bFrame);
+
+// Implementation
+protected:
+ LPOLECLIENTSITE m_lpClientSite; // for embedded item
+ CString m_strHostObj; // name of document in container
+ BOOL m_bCntrVisible; // TRUE if OnShowWindow(TRUE) called
+ BOOL m_bClosing; // TRUE if shutting down
+ COleServerItem* m_pEmbeddedItem; // pointer to embedded item for document
+
+ COleIPFrameWnd* m_pInPlaceFrame; // not NULL if in-place activated
+ CWnd* m_pOrigParent; // not NULL if existing view used
+ DWORD m_dwOrigStyle; // original style of in-place view
+ DWORD m_dwOrigStyleEx; // original extended style
+
+public:
+ virtual ~COleServerDoc();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // overridables for implementation
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ virtual void DeleteContents(); // delete auto-delete server items
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+ virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
+ // return item for the named linked item (only if supporting links)
+ virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
+
+protected:
+ // overrides to handle server user-interface
+ virtual BOOL SaveModified(); // return TRUE if ok to continue
+ virtual HMENU GetDefaultMenu(); // return menu based on doc type
+ virtual HACCEL GetDefaultAccelerator(); // return accel table based on doc type
+ virtual BOOL GetFileTypeString(CString& rString);
+
+ // IPersistStorage implementation
+ virtual void OnNewEmbedding(LPSTORAGE lpStorage);
+ virtual void OnOpenEmbedding(LPSTORAGE lpStorage);
+ virtual void OnSaveEmbedding(LPSTORAGE lpStorage);
+
+ // Implementation helpers
+ void NotifyAllItems(OLE_NOTIFICATION wNotification, DWORD dwParam);
+ BOOL SaveModifiedPrompt();
+ void ConnectView(CWnd* pParentWnd, CView* pView);
+ void UpdateUsingHostObj(UINT nIDS, CCmdUI* pCmdUI);
+
+// Message Maps
+ //{{AFX_MSG(COleServerDoc)
+ afx_msg void OnFileUpdate();
+ afx_msg void OnFileSaveCopyAs();
+ afx_msg void OnUpdateFileUpdate(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateFileExit(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PersistStorage, IPersistStorage)
+ INIT_INTERFACE_PART(COleServerDoc, PersistStorage)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(InitNew)(LPSTORAGE);
+ STDMETHOD(Load)(LPSTORAGE);
+ STDMETHOD(Save)(LPSTORAGE, BOOL);
+ STDMETHOD(SaveCompleted)(LPSTORAGE);
+ STDMETHOD(HandsOffStorage)();
+ END_INTERFACE_PART(PersistStorage)
+
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCTSTR, LPCTSTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(CLSID*);
+ STDMETHOD(GetUserType)(DWORD, LPTSTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleServerDoc, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ BEGIN_INTERFACE_PART(OleInPlaceObject, IOleInPlaceObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleInPlaceObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(InPlaceDeactivate)();
+ STDMETHOD(UIDeactivate)();
+ STDMETHOD(SetObjectRects)(LPCRECT, LPCRECT);
+ STDMETHOD(ReactivateAndUndo)();
+ END_INTERFACE_PART(OleInPlaceObject)
+
+ BEGIN_INTERFACE_PART(OleInPlaceActiveObject, IOleInPlaceActiveObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleInPlaceActiveObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(TranslateAccelerator)(LPMSG);
+ STDMETHOD(OnFrameWindowActivate)(BOOL);
+ STDMETHOD(OnDocWindowActivate)(BOOL);
+ STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL);
+ STDMETHOD(EnableModeless)(BOOL);
+ END_INTERFACE_PART(OleInPlaceActiveObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleServer;
+ friend class COleServerItem;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleIPFrameWnd
+
+class COleCntrFrameWnd;
+
+class COleIPFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(COleIPFrameWnd)
+
+// Constructors
+public:
+ COleIPFrameWnd();
+
+// Overridables
+public:
+ virtual BOOL OnCreateControlBars(CWnd* pWndFrame, CWnd* pWndDoc);
+ // create control bars on container windows (pWndDoc can be NULL)
+ virtual BOOL OnCreateControlBars(CFrameWnd* pWndFrame, CFrameWnd* pWndDoc);
+ // create control bars on container windows (pWndDoc can be NULL)
+
+ virtual void RepositionFrame(LPCRECT lpPosRect, LPCRECT lpClipRect);
+ // Advanced: reposition frame to wrap around new lpPosRect
+
+// Implementation
+public:
+ BOOL m_bUIActive; // TRUE if currently in uiacitve state
+
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_CHILD|WS_BORDER|WS_CLIPSIBLINGS,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ virtual ~COleIPFrameWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ // in-place state
+ OLEINPLACEFRAMEINFO m_frameInfo;
+ LPOLEINPLACEFRAME m_lpFrame;
+ LPOLEINPLACEUIWINDOW m_lpDocFrame;
+ COleCntrFrameWnd* m_pMainFrame;
+ COleCntrFrameWnd* m_pDocFrame;
+
+ HMENU m_hSharedMenu;
+ OLEMENUGROUPWIDTHS m_menuWidths;
+ HOLEMENU m_hOleMenu;
+ CRect m_rectPos; // client area rect of the item
+ CRect m_rectClip; // area to which frame should be clipped
+ BOOL m_bInsideRecalc;
+
+ // Advanced: in-place activation virtual implementation
+ virtual BOOL BuildSharedMenu();
+ virtual void DestroySharedMenu();
+ virtual HMENU GetInPlaceMenu();
+
+ // Advanced: possible override to change in-place sizing behavior
+ virtual void OnRequestPositionChange(LPCRECT lpRect);
+
+protected:
+ //{{AFX_MSG(COleIPFrameWnd)
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg LRESULT OnRecalcParent(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg LRESULT OnResizeChild(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnContextHelp();
+ afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnBarCheck(UINT nID);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class COleServerDoc;
+ friend class COleCntrFrameWnd;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleResizeBar - supports in-place resizing in server applications
+
+class COleResizeBar : public CControlBar
+{
+ DECLARE_DYNAMIC(COleResizeBar)
+
+// Constructors
+public:
+ COleResizeBar();
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE,
+ UINT nID = AFX_IDW_RESIZE_BAR);
+
+// Implementation
+public:
+ virtual ~COleResizeBar();
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+ CRectTracker m_tracker; // implemented with a tracker
+
+protected:
+ //{{AFX_MSG(COleResizeBar)
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnPaint();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnLButtonDown(UINT, CPoint point);
+ afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleStreamFile - implementation of CFile which uses an IStream
+
+class COleStreamFile : public CFile
+{
+ DECLARE_DYNAMIC(COleStreamFile)
+
+// Constructors and Destructors
+public:
+ COleStreamFile(LPSTREAM lpStream = NULL);
+
+// Operations
+ // Note: OpenStream and CreateStream can accept eith STGM_ flags or
+ // CFile::OpenFlags bits since common values are guaranteed to have
+ // the same semantics.
+ BOOL OpenStream(LPSTORAGE lpStorage, LPCTSTR lpszStreamName,
+ DWORD nOpenFlags = modeReadWrite|shareExclusive,
+ CFileException* pError = NULL);
+ BOOL CreateStream(LPSTORAGE lpStorage, LPCTSTR lpszStreamName,
+ DWORD nOpenFlags = modeReadWrite|shareExclusive|modeCreate,
+ CFileException* pError = NULL);
+
+ BOOL CreateMemoryStream(CFileException* pError = NULL);
+
+ // attach & detach can be used when Open/Create functions aren't adequate
+ void Attach(LPSTREAM lpStream);
+ LPSTREAM Detach();
+
+// Implementation
+public:
+ LPSTREAM m_lpStream;
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleStreamFile();
+
+ // attributes for implementation
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual DWORD GetPosition() const;
+
+ // overrides for implementation
+ virtual CFile* Duplicate() const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDropSource (advanced drop source support)
+
+class COleDropSource : public CCmdTarget
+{
+// Constructors
+public:
+ COleDropSource();
+
+// Overridables
+ virtual SCODE QueryContinueDrag(BOOL bEscapePressed, DWORD dwKeyState);
+ virtual SCODE GiveFeedback(DROPEFFECT dropEffect);
+ virtual BOOL OnBeginDrag(CWnd* pWnd);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+public:
+ BEGIN_INTERFACE_PART(DropSource, IDropSource)
+ INIT_INTERFACE_PART(COleDropSource, DropSource)
+ STDMETHOD(QueryContinueDrag)(BOOL, DWORD);
+ STDMETHOD(GiveFeedback)(DWORD);
+ END_INTERFACE_PART(DropSource)
+
+ DECLARE_INTERFACE_MAP()
+
+ CRect m_rectStartDrag; // when mouse leaves this rect, drag drop starts
+ BOOL m_bDragStarted; // has drag really started yet?
+
+ // metrics for drag start determination
+ static AFX_DATA UINT nDragMinDist; // min. amount mouse must move for drag
+ static AFX_DATA UINT nDragDelay; // delay before drag starts
+
+ friend class COleDataSource;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDropTarget (advanced drop target support)
+
+class COleDropTarget : public CCmdTarget
+{
+// Constructors
+public:
+ COleDropTarget();
+
+// Operations
+ BOOL Register(CWnd* pWnd);
+ virtual void Revoke(); // virtual for implementation
+
+// Overridables
+ virtual DROPEFFECT OnDragEnter(CWnd* pWnd, COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual DROPEFFECT OnDragOver(CWnd* pWnd, COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual BOOL OnDrop(CWnd* pWnd, COleDataObject* pDataObject,
+ DROPEFFECT dropEffect, CPoint point);
+ virtual void OnDragLeave(CWnd* pWnd);
+ virtual BOOL OnDragScroll(CWnd* pWnd, DWORD dwKeyState, CPoint point);
+
+// Implementation
+public:
+ virtual ~COleDropTarget();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ HWND m_hWnd; // HWND this IDropTarget is attached to
+ LPDATAOBJECT m_lpDataObject; // != NULL between OnDragEnter, OnDragLeave
+ UINT m_nTimerID; // != MAKEWORD(-1, -1) when in scroll area
+ DWORD m_dwLastTick; // only valid when m_nTimerID valid
+ UINT m_nScrollDelay; // time to next scroll
+
+ // metrics for drag-scrolling
+ static AFX_DATA int nScrollInset;
+ static AFX_DATA UINT nScrollDelay;
+ static AFX_DATA UINT nScrollInterval;
+
+ // implementation helpers
+ void SetupTimer(CView* pView, UINT nTimerID);
+ void CancelTimer(CWnd* pWnd);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(DropTarget, IDropTarget)
+ INIT_INTERFACE_PART(COleDropTarget, DropTarget)
+ STDMETHOD(DragEnter)(LPDATAOBJECT, DWORD, POINTL, LPDWORD);
+ STDMETHOD(DragOver)(DWORD, POINTL, LPDWORD);
+ STDMETHOD(DragLeave)();
+ STDMETHOD(Drop)(LPDATAOBJECT, DWORD, POINTL pt, LPDWORD);
+ END_INTERFACE_PART(DropTarget)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleMessageFilter (implements IMessageFilter)
+
+class COleMessageFilter : public CCmdTarget
+{
+// Constructors
+public:
+ COleMessageFilter();
+
+// Operations
+ BOOL Register();
+ void Revoke();
+
+ // for controlling the busy state of the server application (called app)
+ virtual void BeginBusyState();
+ virtual void EndBusyState();
+ void SetBusyReply(SERVERCALL nBusyReply);
+
+ // for controlling actions taken against rejected/retried calls
+ void SetRetryReply(DWORD nRetryReply = 0);
+ // only used when the "not responding" dialog is disabled
+ void SetMessagePendingDelay(DWORD nTimeout = 5000);
+ // used to determine amount of time before significant message
+ void EnableBusyDialog(BOOL bEnableBusy = TRUE);
+ void EnableNotRespondingDialog(BOOL bEnableNotResponding = TRUE);
+ // used to enable/disable the two types of busy dialogs
+
+// Overridables
+ virtual BOOL OnMessagePending(const MSG* pMsg);
+ // return TRUE to eat the message (usually only if processed)
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleMessageFilter();
+ virtual BOOL IsSignificantMessage(MSG* pMsg);
+ // determine if any significant messages are present in the queue
+ virtual int OnBusyDialog(HTASK htaskBusy);
+ virtual int OnNotRespondingDialog(HTASK htaskBusy);
+ // these functions display the busy dialog
+
+protected:
+ BOOL m_bRegistered;
+ LONG m_nBusyCount; // for BeginBusyState & EndBusyState
+ BOOL m_bEnableBusy;
+ BOOL m_bEnableNotResponding;
+ BOOL m_bUnblocking;
+ DWORD m_nRetryReply; // only used if m_bEnableNotResponding == FALSE
+ DWORD m_nBusyReply;
+ DWORD m_nTimeout;
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(MessageFilter, IMessageFilter)
+ INIT_INTERFACE_PART(COleMessageFilter, MessageFilter)
+ STDMETHOD_(DWORD, HandleInComingCall)(DWORD, HTASK, DWORD,
+ LPINTERFACEINFO);
+ STDMETHOD_(DWORD, RetryRejectedCall)(HTASK, DWORD, DWORD);
+ STDMETHOD_(DWORD, MessagePending)(HTASK, DWORD, DWORD);
+ END_INTERFACE_PART(MessageFilter)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// global helpers and debugging
+
+void AFXAPI AfxOleSetEditMenu(COleClientItem* pClient, CMenu* pMenu,
+ UINT iMenuItem, UINT nIDVerbMin, UINT nIDVerbMax = 0, UINT nIDConvert = 0);
+
+#ifdef _DEBUG
+// Mapping SCODEs to readable text
+LPCTSTR AFXAPI AfxGetFullScodeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetScodeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetScodeRangeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetSeverityString(SCODE sc);
+LPCTSTR AFXAPI AfxGetFacilityString(SCODE sc);
+
+// Mapping IIDs to readable text
+LPCTSTR AFXAPI AfxGetIIDString(REFIID iid);
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#ifndef _AFXCTL
+#define _AFXOLE_INLINE inline
+#define _AFXOLECLI_INLINE inline
+#define _AFXOLESVR_INLINE inline
+#endif
+#define _AFXOLEDOBJ_INLINE inline
+#include <afxole.inl>
+#undef _AFXOLE_INLINE
+#undef _AFXOLECLI_INLINE
+#undef _AFXOLEDOBJ_INLINE
+#undef _AFXOLESVR_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXOLE_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxole.inl b/public/sdk/inc/mfc30/afxole.inl
new file mode 100644
index 000000000..e4b273d90
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxole.inl
@@ -0,0 +1,190 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXOLE.H
+
+
+/////////////////////////////////////////////////////////////////////////////
+// General OLE inlines (CDocItem, COleDocument)
+
+#ifdef _AFXOLE_INLINE
+
+// CDocItem
+_AFXOLE_INLINE CDocument* CDocItem::GetDocument() const
+ { return m_pDocument; }
+
+// COleDocument
+_AFXOLE_INLINE void COleDocument::EnableCompoundFile(BOOL bEnable)
+ { m_bCompoundFile = bEnable; }
+
+// COleMessageFilter
+_AFXOLE_INLINE void COleMessageFilter::SetBusyReply(SERVERCALL nBusyReply)
+ { ASSERT_VALID(this); m_nBusyReply = nBusyReply; }
+_AFXOLE_INLINE void COleMessageFilter::SetRetryReply(DWORD nRetryReply)
+ { ASSERT_VALID(this); m_nRetryReply = nRetryReply; }
+_AFXOLE_INLINE void COleMessageFilter::SetMessagePendingDelay(DWORD nTimeout)
+ { ASSERT_VALID(this); m_nTimeout = nTimeout; }
+_AFXOLE_INLINE void COleMessageFilter::EnableBusyDialog(BOOL bEnable)
+ { ASSERT_VALID(this); m_bEnableBusy = bEnable; }
+_AFXOLE_INLINE void COleMessageFilter::EnableNotRespondingDialog(BOOL bEnable)
+ { ASSERT_VALID(this); m_bEnableNotResponding = bEnable; }
+
+#endif //_AFXOLE_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE automation inlines
+
+#ifdef _AFXDISP_INLINE
+
+// COleException
+_AFXDISP_INLINE COleException::COleException()
+ { m_sc = S_OK; }
+_AFXDISP_INLINE COleException::~COleException()
+ { }
+
+// CCmdTarget
+_AFXDISP_INLINE DWORD CCmdTarget::InternalAddRef()
+ { ASSERT(GetInterfaceMap() != NULL); return ++m_dwRef; }
+
+// CObjectFactory
+_AFXDISP_INLINE BOOL COleObjectFactory::IsRegistered() const
+ { ASSERT_VALID(this); return m_dwRegister != 0; }
+_AFXDISP_INLINE REFCLSID COleObjectFactory::GetClassID() const
+ { ASSERT_VALID(this); return m_clsid; }
+
+// COleDispatchDriver
+_AFXDISP_INLINE COleDispatchDriver::~COleDispatchDriver()
+ { ReleaseDispatch(); }
+
+#endif //_AFXDISP_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Container inlines
+
+#ifdef _AFXOLECLI_INLINE
+
+// COleClientItem
+_AFXOLECLI_INLINE SCODE COleClientItem::GetLastStatus() const
+ { ASSERT_VALID(this); return m_scLast; }
+_AFXOLECLI_INLINE COleDocument* COleClientItem::GetDocument() const
+ { ASSERT_VALID(this); return (COleDocument*)m_pDocument; }
+_AFXOLECLI_INLINE OLE_OBJTYPE COleClientItem::GetType() const
+ { ASSERT_VALID(this); return m_nItemType; }
+_AFXOLECLI_INLINE DVASPECT COleClientItem::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_nDrawAspect; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsRunning() const
+ { ASSERT_VALID(this);
+ ASSERT(m_lpObject != NULL);
+ return ::OleIsRunning(m_lpObject); }
+_AFXOLECLI_INLINE UINT COleClientItem::GetItemState() const
+ { ASSERT_VALID(this); return m_nItemState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsInPlaceActive() const
+ { ASSERT_VALID(this);
+ return m_nItemState == activeState || m_nItemState == activeUIState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsOpen() const
+ { ASSERT_VALID(this); return m_nItemState == openState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsLinkUpToDate() const
+ { ASSERT_VALID(this);
+ ASSERT(m_lpObject != NULL);
+ // TRUE if result is S_OK (aka S_TRUE)
+ return m_lpObject->IsUpToDate() == NOERROR; }
+_AFXOLECLI_INLINE CView* COleClientItem::GetActiveView() const
+ { return m_pView; }
+
+// COleLinkingDoc
+_AFXOLECLI_INLINE void COleLinkingDoc::BeginDeferErrors()
+ { ASSERT(m_pLastException == NULL); ++m_bDeferErrors; }
+
+#endif //_AFXOLECLI_INLINE
+
+#ifdef _AFXOLEDOBJ_INLINE
+
+// COleDataObject
+_AFXOLEDOBJ_INLINE COleDataObject::~COleDataObject()
+ { Release(); }
+
+#endif //_AFXOLECTL_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE dialog inlines
+
+#ifdef _AFXODLGS_INLINE
+
+_AFXODLGS_INLINE UINT COleDialog::GetLastError() const
+ { return m_nLastError; }
+_AFXODLGS_INLINE CString COleInsertDialog::GetPathName() const
+ { ASSERT_VALID(this);
+ ASSERT(GetSelectionType() != createNewItem); return m_szFileName; }
+_AFXODLGS_INLINE REFCLSID COleInsertDialog::GetClassID() const
+ { ASSERT_VALID(this); return m_io.clsid; }
+_AFXODLGS_INLINE HGLOBAL COleInsertDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_io.hMetaPict; }
+_AFXODLGS_INLINE DVASPECT COleInsertDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_io.dwFlags & IOF_CHECKDISPLAYASICON ?
+ DVASPECT_ICON : DVASPECT_CONTENT; }
+_AFXODLGS_INLINE HGLOBAL COleConvertDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_cv.hMetaPict; }
+_AFXODLGS_INLINE DVASPECT COleConvertDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return (DVASPECT)m_cv.dvAspect; }
+_AFXODLGS_INLINE REFCLSID COleConvertDialog::GetClassID() const
+ { ASSERT_VALID(this); return m_cv.clsidNew; }
+_AFXODLGS_INLINE HGLOBAL COleChangeIconDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_ci.hMetaPict; }
+_AFXODLGS_INLINE int COlePasteSpecialDialog::GetPasteIndex() const
+ { ASSERT_VALID(this); return m_ps.nSelectedIndex; }
+_AFXODLGS_INLINE DVASPECT COlePasteSpecialDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_ps.dwFlags & PSF_CHECKDISPLAYASICON ?
+ DVASPECT_ICON : DVASPECT_CONTENT; }
+_AFXODLGS_INLINE HGLOBAL COlePasteSpecialDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_ps.hMetaPict; }
+_AFXODLGS_INLINE UINT COleBusyDialog::GetSelectionType() const
+ { ASSERT_VALID(this); return m_selection; }
+
+#endif //_AFXODLGS_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server inlines
+
+#ifdef _AFXOLESVR_INLINE
+
+// COleServerItem
+_AFXOLESVR_INLINE COleServerDoc* COleServerItem::GetDocument() const
+ { ASSERT_VALID(this); return (COleServerDoc*)m_pDocument; }
+_AFXOLESVR_INLINE void COleServerItem::NotifyChanged(DVASPECT nDrawAspect)
+ { ASSERT_VALID(this); NotifyClient(OLE_CHANGED, nDrawAspect); }
+_AFXOLESVR_INLINE const CString& COleServerItem::GetItemName() const
+ { ASSERT_VALID(this); return m_strItemName; }
+_AFXOLESVR_INLINE void COleServerItem::SetItemName(LPCTSTR lpszItemName)
+{
+ ASSERT_VALID(this);
+ ASSERT(lpszItemName != NULL);
+ ASSERT(AfxIsValidString(lpszItemName));
+ m_strItemName = lpszItemName;
+}
+_AFXOLESVR_INLINE BOOL COleServerItem::IsLinkedItem() const
+ { ASSERT_VALID(this); return GetDocument()->m_pEmbeddedItem != this; }
+_AFXOLESVR_INLINE COleDataSource* COleServerItem::GetDataSource()
+ { ASSERT_VALID(this); return &m_dataSource; }
+
+// COleServerDoc
+_AFXOLESVR_INLINE void COleServerDoc::NotifyChanged()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_CHANGED, DVASPECT_CONTENT); }
+_AFXOLESVR_INLINE void COleServerDoc::NotifyClosed()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_CLOSED, 0); }
+_AFXOLESVR_INLINE void COleServerDoc::NotifySaved()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_SAVED, 0); }
+_AFXOLESVR_INLINE BOOL COleServerDoc::IsEmbedded() const
+ { ASSERT_VALID(this); return m_bEmbedded; }
+_AFXOLESVR_INLINE BOOL COleServerDoc::IsInPlaceActive() const
+ { ASSERT_VALID(this); return m_pInPlaceFrame != NULL; }
+
+#endif //_AFXOLESVR_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxolecl.rc b/public/sdk/inc/mfc30/afxolecl.rc
new file mode 100644
index 000000000..8a32cd670
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxolecl.rc
@@ -0,0 +1,60 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+#include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Warning: Static object unexpected."
+ AFX_IDP_FAILED_TO_CONNECT "Failed to connect.\nLink may be broken."
+ AFX_IDP_SERVER_BUSY "Unable to process command, server busy."
+ AFX_IDP_BAD_VERB "Failed to perform server operation."
+ AFX_IDP_FAILED_TO_LAUNCH "Failed to launch server application."
+ AFX_IDS_APP_TITLE_INPLACE "%1 in %2"
+ AFX_IDS_UPDATING_ITEMS "Updating OLE objects"
+ AFX_IDP_FAILED_TO_CONVERT "Failed to convert OLE object."
+ AFX_IDP_ASK_TO_DISCARD "OLE objects cannot be saved while exiting Windows!\nDiscard all changes to %1?"
+
+ AFX_IDS_METAFILE_FORMAT "Picture (Metafile)\na picture"
+ AFX_IDS_DIB_FORMAT "Device Independent Bitmap\na device independent bitmap"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\na bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc30/afxolesv.rc b/public/sdk/inc/mfc30/afxolesv.rc
new file mode 100644
index 000000000..cf6df9577
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxolesv.rc
@@ -0,0 +1,53 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Update %1 before proceeding?"
+ AFX_IDP_FAILED_TO_UPDATE, "Could not update client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Failed to register. OLE features may not work properly."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Failed to update the system registry.\nPlease try using REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "E&xit && Return to %1"
+ AFX_IDS_UPDATE_MENU, "&Update %1"
+ AFX_IDS_SAVEFILECOPY, "Save Copy As"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc30/afxplex_.h b/public/sdk/inc/mfc30/afxplex_.h
new file mode 100644
index 000000000..4d015b1ae
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxplex_.h
@@ -0,0 +1,48 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPLEX_H__
+#define __AFXPLEX_H__
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifdef AFX_COLL_SEG
+#pragma code_seg(AFX_COLL_SEG)
+#endif
+
+struct CPlex // warning variable length structure
+{
+ CPlex* pNext;
+ UINT nMax;
+ UINT nCur;
+ /* BYTE data[maxNum*elementSize]; */
+
+ void* data() { return this+1; }
+
+ static CPlex* PASCAL Create(CPlex*& head, UINT nMax, UINT cbElement);
+ // like 'calloc' but no zero fill
+ // may throw memory exceptions
+
+ void FreeDataChain(); // free this one and links
+};
+
+#ifdef AFX_COLL_SEG
+#pragma code_seg()
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#endif //__AFXPLEX_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxprint.rc b/public/sdk/inc/mfc30/afxprint.rc
new file mode 100644
index 000000000..d20638ecd
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxprint.rc
@@ -0,0 +1,130 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Printing",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "on the",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Cancel",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Cancel",IDCANCEL,46,45,40,15
+ CTEXT "Press Cmd-. to cancel.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Next Page",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "Pre&v Page",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Zoom &In",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Zoom &Out",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14" and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Next Page",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "Pre&v Page",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Zoom &In",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Zoom &Out",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9" and 12" screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Next",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "Pre&v",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&In",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Out",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "on %1" // for print output
+ AFX_IDS_ONEPAGE, "&One Page" // for preview button
+ AFX_IDS_TWOPAGE, "&Two Page" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Page %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Page %u\nPages %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Printer Files (*.prn)|*.prn|All Files (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Print to File" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "to %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc30/afxpriv.h b/public/sdk/inc/mfc30/afxpriv.h
new file mode 100644
index 000000000..646fa1b36
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxpriv.h
@@ -0,0 +1,680 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRIV_H__
+#define __AFXPRIV_H__
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXPRIV - MFC Private Classes
+
+#define AFX_ABBREV_FILENAME_LEN 30
+
+// Implementation structures
+struct AFX_SIZEPARENTPARAMS; // Control bar implementation
+struct AFX_CMDHANDLERINFO; // Command routing implementation
+
+// Classes declared in this file
+
+//CObject
+ //CFile
+ //CMemFile
+ class CSharedFile; // Shared memory file
+
+ //CDC
+ class CPreviewDC; // Virtual DC for print preview
+
+ //CCmdTarget
+ //CWnd
+ //CView
+ class CPreviewView; // Print preview view
+ //CFrameWnd
+ class COleCntrFrameWnd;
+ //CMiniFrameWnd
+ class CMiniDockFrameWnd;
+
+ class CRecentFileList; // used in CWinApp for MRU list
+ class CDockState; // state of docking toolbars
+
+class CDockContext; // for dragging control bars
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Global ID ranges (see Technical note TN020 for more details)
+
+// 8000 -> FFFF command IDs (used for menu items, accelerators and controls)
+#define IS_COMMAND_ID(nID) ((nID) & 0x8000)
+
+// 8000 -> DFFF : user commands
+// E000 -> EFFF : AFX commands and other things
+// F000 -> FFFF : standard windows commands and other things etc
+ // E000 -> E7FF standard commands
+ // E800 -> E8FF control bars (first 32 are special)
+ // E900 -> EEFF standard window controls/components
+ // EF00 -> EFFF SC_ menu help
+ // F000 -> FFFF standard strings
+#define ID_COMMAND_FROM_SC(sc) (((sc - 0xF000) >> 4) + AFX_IDS_SCFIRST)
+
+// 0000 -> 7FFF IDR range
+// 0000 -> 6FFF : user resources
+// 7000 -> 7FFF : AFX (and standard windows) resources
+// IDR ranges (NOTE: IDR_ values must be <32768)
+#define ASSERT_VALID_IDR(nIDR) ASSERT((nIDR) != 0 && (nIDR) < 0x8000)
+
+/////////////////////////////////////////////////////////////////////////////
+// Context sensitive help support (see Technical note TN028 for more details)
+
+// Help ID bases
+#define HID_BASE_COMMAND 0x00010000UL // ID and IDM
+#define HID_BASE_RESOURCE 0x00020000UL // IDR and IDD
+#define HID_BASE_PROMPT 0x00030000UL // IDP
+#define HID_BASE_NCAREAS 0x00040000UL
+#define HID_BASE_CONTROL 0x00050000UL // IDC
+#define HID_BASE_DISPATCH 0x00060000UL // IDispatch help codes
+
+/////////////////////////////////////////////////////////////////////////////
+// Internal AFX Windows messages (see Technical note TN024 for more details)
+// (0x0360 - 0x037F are reserved for MFC)
+
+#define WM_QUERYAFXWNDPROC 0x0360 // lResult = 1 if processed by AfxWndProc
+#define WM_SIZEPARENT 0x0361 // lParam = &AFX_SIZEPARENTPARAMS
+#define WM_SETMESSAGESTRING 0x0362 // wParam = nIDS (or 0),
+ // lParam = lpszOther (or NULL)
+#define WM_IDLEUPDATECMDUI 0x0363 // wParam == bDisableIfNoHandler
+#define WM_INITIALUPDATE 0x0364 // (params unused) - sent to children
+#define WM_COMMANDHELP 0x0365 // lResult = TRUE/FALSE,
+ // lParam = dwContext
+#define WM_HELPHITTEST 0x0366 // lResult = dwContext,
+ // lParam = MAKELONG(x,y)
+#define WM_EXITHELPMODE 0x0367 // (params unused)
+#define WM_RECALCPARENT 0x0368 // force RecalcLayout on frame window
+ // (only for inplace frame windows)
+#define WM_SIZECHILD 0x0369 // special notify from COleResizeBar
+ // wParam = ID of child window
+ // lParam = lpRectNew (new position/size)
+#define WM_KICKIDLE 0x036A // (params unused) causes idles to kick in
+#define WM_QUERYCENTERWND 0x036B // lParam = HWND to use as centering parent
+#define WM_DISABLEMODAL 0x036C // lResult = 0, disable during modal state
+ // lResult = 1, don't disable
+#define WM_FLOATSTATUS 0x036D // wParam combination of FS_* flags below
+
+// WM_ACTIVATETOPLEVEL is like WM_ACTIVATEAPP but works with hierarchies
+// of mixed processes (as is the case with OLE in-place activation)
+#define WM_ACTIVATETOPLEVEL 0x036E // wParam = nState (like WM_ACTIVATE)
+ // lParam = pointer to HWND[2]
+ // lParam[0] = hWnd getting WM_ACTIVATE
+ // lParam[1] = hWndOther
+
+#define WM_QUERY3DCONTROLS 0x036F // lResult != 0 if 3D controls wanted
+
+// Note: Messages 0x0370, 0x0371, and 0x372 were incorrectly used by
+// some versions of Windows. To remain compatible, MFC does not
+// use messages in that range.
+#define WM_RESERVED_0370 0x0370
+#define WM_RESERVED_0371 0x0371
+#define WM_RESERVED_0372 0x0372
+
+// WM_SOCKET_NOTIFY and WM_SOCKET_DEAD are used internally by MFC's
+// Windows sockets implementation. For more information, see sockcore.cpp
+#define WM_SOCKET_NOTIFY 0x0373
+#define WM_SOCKET_DEAD 0x0374
+
+// Note: Messages 0x0375 - 0x37F reserved for future MFC use.
+#define WM_RESERVED_0375 0x0375
+#define WM_RESERVED_0376 0x0376
+#define WM_RESERVED_0377 0x0377
+#define WM_RESERVED_0378 0x0378
+#define WM_RESERVED_0379 0x0379
+#define WM_RESERVED_037A 0x037A
+#define WM_RESERVED_037B 0x037B
+#define WM_RESERVED_037C 0x037C
+#define WM_RESERVED_037D 0x037D
+#define WM_RESERVED_037E 0x037E
+#define WM_RESERVED_037F 0x037F
+
+// like ON_MESSAGE but no return value
+#define ON_MESSAGE_VOID(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))memberFxn },
+
+// special struct for WM_SIZEPARENT
+struct AFX_SIZEPARENTPARAMS
+{
+ HDWP hDWP; // handle for DeferWindowPos
+ RECT rect; // parent client rectangle (trim as appropriate)
+ SIZE sizeTotal; // total size on each side as layout proceeds
+ BOOL bStretch; // should stretch to fill all space
+};
+
+// flags for wParam in the WM_FLOATSTATUS message
+enum { FS_SHOW = 0x01, FS_HIDE = 0x02,
+ FS_ACTIVATE = 0x04, FS_DEACTIVATE = 0x08,
+ FS_ENABLE = 0x10, FS_DISABLE = 0x20,
+ FS_SYNCACTIVE = 0x40 };
+
+void AFXAPI AfxRepositionWindow(AFX_SIZEPARENTPARAMS* lpLayout,
+ HWND hWnd, LPCRECT lpRect);
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of command routing
+
+struct AFX_CMDHANDLERINFO
+{
+ CCmdTarget* pTarget;
+ void (AFX_MSG_CALL CCmdTarget::*pmf)(void);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Shared file support
+
+class CSharedFile : public CMemFile
+{
+ DECLARE_DYNAMIC(CSharedFile)
+
+public:
+// Constructors
+ CSharedFile(UINT nAllocFlags = GMEM_DDESHARE|GMEM_MOVEABLE,
+ UINT nGrowBytes = 4096);
+
+// Attributes
+ HGLOBAL Detach();
+ void SetHandle(HGLOBAL hGlobalMemory, BOOL bAllowGrow = TRUE);
+
+// Implementation
+public:
+ virtual ~CSharedFile();
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual void Free(BYTE* lpMem);
+
+ UINT m_nAllocFlags;
+ HGLOBAL m_hGlobalMemory;
+ BOOL m_bAllowGrow;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of PrintPreview
+
+class CPreviewDC : public CDC
+{
+ DECLARE_DYNAMIC(CPreviewDC)
+
+public:
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+ virtual void SetOutputDC(HDC hDC);
+
+ virtual void ReleaseOutputDC();
+
+// Constructors
+ CPreviewDC();
+
+// Implementation
+public:
+ virtual ~CPreviewDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ void SetScaleRatio(int nNumerator, int nDenominator);
+ void SetTopLeftOffset(CSize TopLeft);
+ void ClipToPage();
+
+ // These conversion functions can be used without an output DC
+
+ void PrinterDPtoScreenDP(LPPOINT lpPoint) const;
+
+// Device-Context Functions
+ virtual int SaveDC();
+ virtual BOOL RestoreDC(int nSavedDC);
+
+public:
+ virtual CGdiObject* SelectStockObject(int nIndex);
+ virtual CFont* SelectObject(CFont* pFont);
+
+// Drawing-Attribute Functions
+ virtual COLORREF SetBkColor(COLORREF crColor);
+ virtual COLORREF SetTextColor(COLORREF crColor);
+
+// Mapping Functions
+ virtual int SetMapMode(int nMapMode);
+ virtual CPoint SetViewportOrg(int x, int y);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+ virtual CSize SetViewportExt(int x, int y);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+ virtual CSize SetWindowExt(int x, int y);
+ virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ virtual BOOL GrayString(CBrush* pBrush,
+ BOOL (CALLBACK EXPORT* lpfnOutput)(HDC, LPARAM, int),
+ LPARAM lpData, int nCount,
+ int x, int y, int nWidth, int nHeight);
+
+// Printer Escape Functions
+ virtual int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData);
+
+// Implementation
+protected:
+ void MirrorMappingMode(BOOL bCompute);
+ void MirrorViewportOrg();
+ void MirrorFont();
+ void MirrorAttributes();
+
+ CSize ComputeDeltas(int& x, LPCTSTR lpszString, UINT& nCount, BOOL bTabbed,
+ UINT nTabStops, LPINT lpnTabStops, int nTabOrigin,
+ LPTSTR lpszOutputString, int* pnDxWidths, int& nRightFixup);
+
+protected:
+ int m_nScaleNum; // Scale ratio Numerator
+ int m_nScaleDen; // Scale ratio Denominator
+ int m_nSaveDCIndex; // DC Save index when Screen DC Attached
+ int m_nSaveDCDelta; // delta between Attrib and output restore indices
+ CSize m_sizeTopLeft;// Offset for top left corner of page
+ HFONT m_hFont; // Font selected into the screen DC (NULL if none)
+ HFONT m_hPrinterFont; // Font selected into the print DC
+#ifdef _MAC
+ int m_aCharWidthsDraw[256]; // character widths for m_hDC
+ int m_aCharWidthsAttrib[256]; // character widths for m_hAttribDC
+#endif
+
+ CSize m_sizeWinExt; // cached window extents computed for screen
+ CSize m_sizeVpExt; // cached viewport extents computed for screen
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPreviewView
+
+class CDialogBar;
+
+class CPreviewView : public CScrollView
+{
+ DECLARE_DYNCREATE(CPreviewView)
+
+// Constructors
+public:
+ CPreviewView();
+ BOOL SetPrintView(CView* pPrintView);
+
+// Attributes
+protected:
+ CView* m_pOrigView;
+ CView* m_pPrintView;
+ CPreviewDC* m_pPreviewDC; // Output and attrib DCs Set, not created
+ CDC m_dcPrint; // Actual printer DC
+
+// Operations
+ void SetZoomState(UINT nNewState, UINT nPage, CPoint point);
+ void SetCurrentPage(UINT nPage, BOOL bClearRatios);
+
+ // Returns TRUE if in a page rect. Returns the page index
+ // in nPage and the point converted to 1:1 screen device coordinates
+ BOOL FindPageRect(CPoint& point, UINT& nPage);
+
+
+// Overridables
+ virtual void OnActivateView(BOOL bActivate,
+ CView* pActivateView, CView* pDeactiveView);
+
+ // Returns .cx/.cy as the numerator/denominator pair for the ratio
+ // using CSize for convenience
+ virtual CSize CalcScaleRatio(CSize windowSize, CSize actualSize);
+
+ virtual void PositionPage(UINT nPage);
+ virtual void OnDisplayPageNumber(UINT nPage, UINT nPagesDisplayed);
+
+// Implementation
+public:
+ virtual ~CPreviewView();
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif
+#ifdef _MAC
+ virtual void CalcWindowRect(LPRECT lpClientRect);
+#endif
+
+protected:
+ //{{AFX_MSG(CPreviewView)
+ afx_msg void OnPreviewClose();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnDraw(CDC* pDC);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnNumPageChange();
+ afx_msg void OnNextPage();
+ afx_msg void OnPrevPage();
+ afx_msg void OnPreviewPrint();
+ afx_msg void OnZoomIn();
+ afx_msg void OnZoomOut();
+
+ afx_msg void OnUpdateNumPageChange(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNextPage(CCmdUI* pCmdUI);
+ afx_msg void OnUpdatePrevPage(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateZoomIn(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateZoomOut(CCmdUI* pCmdUI);
+
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ //}}AFX_MSG
+
+ void DoZoom(UINT nPage, CPoint point);
+ void SetScaledSize(UINT nPage);
+ CSize CalcPageDisplaySize();
+
+ CPrintPreviewState* m_pPreviewState; // State to restore
+ CDialogBar* m_pToolBar; // Toolbar for preview
+
+ struct PAGE_INFO
+ {
+ CRect rectScreen; // screen rect (screen device units)
+ CSize sizeUnscaled; // unscaled screen rect (screen device units)
+ CSize sizeScaleRatio; // scale ratio (cx/cy)
+ CSize sizeZoomOutRatio; // scale ratio when zoomed out (cx/cy)
+ };
+
+ PAGE_INFO* m_pPageInfo; // Array of page info structures
+ PAGE_INFO m_pageInfoArray[2]; // Embedded array for the default implementation
+
+ BOOL m_bPageNumDisplayed;// Flags whether or not page number has yet
+ // been displayed on status line
+ UINT m_nZoomOutPages; // number of pages when zoomed out
+ UINT m_nZoomState;
+ UINT m_nMaxPages; // for sanity checks
+ UINT m_nCurrentPage;
+ UINT m_nPages;
+ int m_nSecondPageOffset; // used to shift second page position
+
+ HCURSOR m_hMagnifyCursor;
+
+ CSize m_sizePrinterPPI; // printer pixels per inch
+ CPoint m_ptCenterPoint;
+ CPrintInfo* m_pPreviewInfo;
+
+ DECLARE_MESSAGE_MAP()
+
+ friend class CView;
+ friend BOOL CALLBACK _AfxPreviewCloseProc(CFrameWnd* pFrameWnd);
+};
+
+// Zoom States
+#define ZOOM_OUT 0
+#define ZOOM_MIDDLE 1
+#define ZOOM_IN 2
+
+/////////////////////////////////////////////////////////////////////////////
+// CRecentFileList
+
+class CRecentFileList
+{
+// Constructors
+public:
+ CRecentFileList(UINT nStart, LPCTSTR lpszSection,
+ LPCTSTR lpszEntryFormat, int nSize,
+ int nMaxDispLen = AFX_ABBREV_FILENAME_LEN);
+
+// Attributes
+ int GetSize() const;
+ CString& operator[](int nIndex);
+
+// Operations
+ virtual void Add(LPCTSTR lpszPathName);
+ BOOL GetDisplayName(CString& strName, int nIndex,
+ LPCTSTR lpszCurDir, int nCurDir, BOOL bAtLeastName = TRUE) const;
+ virtual void UpdateMenu(CCmdUI* pCmdUI);
+ virtual void ReadList(); // reads from registry or ini file
+ virtual void WriteList(); // writes to registry or ini file
+
+// Implementation
+ virtual ~CRecentFileList();
+
+ int m_nSize; // contents of the MRU list
+ CString* m_arrNames;
+ CString m_strSectionName; // for saving
+ CString m_strEntryFormat;
+ UINT m_nStart; // for displaying
+ int m_nMaxDisplayLength;
+};
+
+inline int CRecentFileList::GetSize() const
+ { return m_nSize; }
+inline CString& CRecentFileList::operator[](int nIndex)
+ { ASSERT(nIndex < m_nSize); return m_arrNames[nIndex]; }
+
+/////////////////////////////////////////////////////////////////////////////
+// toolbar docking support
+
+class CDockContext
+{
+public:
+// Construction
+ CDockContext(CControlBar* pBar);
+
+// Attributes
+ CPoint m_ptLast; // last mouse position during drag
+ CRect m_rectLast;
+ CSize m_sizeLast;
+ BOOL m_bDitherLast;
+
+ CRect m_rectDragHorz;
+ CRect m_rectDragVert;
+ CRect m_rectFrameDragHorz; // rectangle used when not over a dock area
+ CRect m_rectFrameDragVert;
+
+ CControlBar* m_pBar; // the toolbar that created this context
+ CFrameWnd* m_pDockSite; // the controlling frame of the CControlBar
+ DWORD m_dwDockStyle; // allowable dock styles for bar
+ DWORD m_dwOverDockStyle; // style of dock that rect is over
+ DWORD m_dwStyle; // style of control bar
+ BOOL m_bFlip; // if shift key is down
+ BOOL m_bForceFrame; // if ctrl key is down
+
+ CDC* m_pDC; // where to draw during drag
+
+// Operations
+ virtual void StartDrag(CPoint pt);
+ void Move(CPoint pt); // called when mouse has moved
+ void EndDrag(); // drop
+ void CancelDrag(); // drag cancelled
+ void OnKey(int nChar, BOOL bDown);
+
+// Implementation
+public:
+ ~CDockContext();
+ BOOL Track();
+ void DrawFocusRect(BOOL bRemoveRect = FALSE);
+ // draws the correct outline
+ void UpdateState(BOOL* pFlag, BOOL bNewValue);
+ DWORD CanDock();
+ CDockBar* GetDockBar();
+};
+
+class _AFX_BARINFO; // private implementation
+
+class CDockBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CDockBar)
+
+// Construction
+public:
+ CDockBar(BOOL bFloating = FALSE); //true if attached to CMiniDockFrameWnd
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle, UINT nID);
+
+// Attributes
+ BOOL m_bFloating;
+
+ virtual BOOL IsDockBar() const;
+ int GetDockedCount() const;
+ virtual int GetDockedVisibleCount() const;
+
+// Operations
+ void DockControlBar(CControlBar* pBar, LPCRECT lpRect = NULL);
+ void RemoveControlBar(CControlBar*, int nPosExclude = -1);
+
+// Implementation
+public:
+ virtual ~CDockBar();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual void DoPaint(CDC* pDC);
+
+ // public implementation helpers
+ void GetBarInfo(_AFX_BARINFO* pInfo);
+ void SetBarInfo(_AFX_BARINFO* pInfo, CFrameWnd* pFrameWnd);
+ int FindBar(CControlBar* pBar, int nPosExclude = -1);
+ void ShowAll(BOOL bShow);
+
+protected:
+ CPtrArray m_arrBars; // each element is a CControlBar
+ BOOL m_bLayoutQuery;
+
+ // implementation helpers
+ int Insert(CControlBar* pBar, CRect rect, CPoint ptMid);
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+ //{{AFX_MSG(CDockBar)
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg void OnNcPaint();
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg void OnPaint();
+ afx_msg LRESULT OnSizeParent(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CMiniDockFrameWnd;
+};
+
+class CDockState : public CObject
+{
+ DECLARE_SERIAL(CDockState)
+
+public:
+// Attributes
+ CPtrArray m_arrBarInfo;
+
+// Operations
+ void LoadState(LPCTSTR lpszProfileName);
+ void SaveState(LPCTSTR lpszProfileName);
+ void Clear(); //deletes all the barinfo's
+
+// Implementation
+public:
+ ~CDockState();
+ virtual void Serialize(CArchive& ar);
+};
+
+class CMiniDockFrameWnd : public CMiniFrameWnd
+{
+ DECLARE_DYNCREATE(CMiniDockFrameWnd)
+
+public:
+// Construction
+ CMiniDockFrameWnd();
+ virtual BOOL Create(CWnd* pParent, DWORD dwBarStyle);
+
+// Operations
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+
+// Implementation
+public:
+ CDockBar m_wndDockBar;
+
+ //{{AFX_MSG(CMiniFrameWnd)
+ afx_msg void OnClose();
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+#endif
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleCntrFrameWnd
+
+class COleIPFrameWnd;
+
+class COleCntrFrameWnd : public CFrameWnd
+{
+// Constructor
+public:
+ COleCntrFrameWnd(COleIPFrameWnd* pInPlaceFrame);
+
+// Implementation
+protected:
+ COleIPFrameWnd* m_pInPlaceFrame;
+ virtual void PostNcDestroy();
+
+public:
+ virtual ~COleCntrFrameWnd();
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ void OnIdleUpdateCmdUI();
+#ifdef _DEBUG
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// WM_NOTIFY support
+
+struct AFX_NOTIFY
+{
+ LRESULT* pResult;
+ NMHDR* pNMHDR;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global implementation helpers
+
+// window creation hooking
+void AFXAPI AfxHookWindowCreate(CWnd* pWnd);
+BOOL AFXAPI AfxUnhookWindowCreate();
+
+// for backward compatibility to previous versions
+#define _AfxHookWindowCreate AfxHookWindowCreate
+#define _AfxUnhookWindowCreate AfxUnhookWindowCreate
+
+// string helpers
+void AFXAPI AfxSetWindowText(HWND hWndCtrl, LPCTSTR lpszNew);
+int AFXAPI AfxLoadString(UINT nIDS, LPTSTR lpszBuf); // 256 TCHAR buffer
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#endif // __AFXPRIV_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxres.aps b/public/sdk/inc/mfc30/afxres.aps
new file mode 100644
index 000000000..ef31537f7
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxres.aps
Binary files differ
diff --git a/public/sdk/inc/mfc30/afxres.h b/public/sdk/inc/mfc30/afxres.h
new file mode 100644
index 000000000..a13c1cef1
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxres.h
@@ -0,0 +1,691 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_H__
+#define __AFXRES_H__
+
+#ifdef REZ // Mac resource compiler (mrc) defines REZ
+#define RC_INVOKED
+#endif
+
+#ifdef RC_INVOKED
+#ifndef _INC_WINDOWS
+#define _INC_WINDOWS
+#include "winres.h" // extract from windows header
+#endif
+#endif
+
+#ifdef APSTUDIO_INVOKED
+#define APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// MFC resource types (see Technical note TN024 for implementation details)
+
+#ifdef RC_INVOKED
+#define DLGINIT 240
+#else
+#define RT_DLGINIT MAKEINTRESOURCE(240)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef APSTUDIO_INVOKED
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// General style bits etc
+
+// Tab Control styles
+#ifndef TCS_MULTILINE // new in later versions of Win32
+#define TCS_MULTILINE 0x0200
+#endif
+
+// ControlBar styles
+#define CBRS_ALIGN_LEFT 0x1000L
+#define CBRS_ALIGN_TOP 0x2000L
+#define CBRS_ALIGN_RIGHT 0x4000L
+#define CBRS_ALIGN_BOTTOM 0x8000L
+#define CBRS_ALIGN_ANY 0xF000L
+
+#define CBRS_BORDER_LEFT 0x0100L
+#define CBRS_BORDER_TOP 0x0200L
+#define CBRS_BORDER_RIGHT 0x0400L
+#define CBRS_BORDER_BOTTOM 0x0800L
+#define CBRS_BORDER_ANY 0x0F00L
+
+#define CBRS_TOOLTIPS 0x0010L
+#define CBRS_FLYBY 0x0020L
+#define CBRS_FLOAT_MULTI 0x0040L
+#define CBRS_BORDER_3D 0x0080L
+#define CBRS_HIDE_INPLACE 0x0008L
+
+#define CBRS_ORIENT_HORZ (CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM)
+#define CBRS_ORIENT_VERT (CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT)
+#define CBRS_ORIENT_ANY (CBRS_ORIENT_HORZ|CBRS_ORIENT_VERT)
+
+
+// the CBRS_ style is made up of an alignment style and a draw border style
+// the alignment styles are mutually exclusive
+// the draw border styles may be combined
+#define CBRS_NOALIGN 0x00000000L
+#define CBRS_LEFT (CBRS_ALIGN_LEFT|CBRS_BORDER_RIGHT)
+#define CBRS_TOP (CBRS_ALIGN_TOP|CBRS_BORDER_BOTTOM)
+#define CBRS_RIGHT (CBRS_ALIGN_RIGHT|CBRS_BORDER_LEFT)
+#define CBRS_BOTTOM (CBRS_ALIGN_BOTTOM|CBRS_BORDER_TOP)
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard window components
+
+// Mode indicators in status bar - these are routed like commands
+#define ID_INDICATOR_EXT 0xE700 // extended selection indicator
+#define ID_INDICATOR_CAPS 0xE701 // cap lock indicator
+#define ID_INDICATOR_NUM 0xE702 // num lock indicator
+#define ID_INDICATOR_SCRL 0xE703 // scroll lock indicator
+#define ID_INDICATOR_OVR 0xE704 // overtype mode indicator
+#define ID_INDICATOR_REC 0xE705 // record mode indicator
+#define ID_INDICATOR_KANA 0xE706 // kana lock indicator
+
+#define ID_SEPARATOR 0 // special separator value
+
+#ifndef RC_INVOKED // code only
+// Standard control bars (IDW = window ID)
+#define AFX_IDW_CONTROLBAR_FIRST 0xE800
+#define AFX_IDW_CONTROLBAR_LAST 0xE8FF
+
+#define AFX_IDW_TOOLBAR 0xE800 // main Toolbar for window
+#define AFX_IDW_STATUS_BAR 0xE801 // Status bar window
+#define AFX_IDW_PREVIEW_BAR 0xE802 // PrintPreview Dialog Bar
+#define AFX_IDW_RESIZE_BAR 0xE803 // OLE in-place resize bar
+
+// Note: If your application supports docking toolbars, you should
+// not use the following IDs for your own toolbars. The IDs chosen
+// are at the top of the first 32 such that the bars will be hidden
+// while in print preview mode, and are not likely to conflict with
+// IDs your application may have used succesfully in the past.
+
+#define AFX_IDW_DOCKBAR_TOP 0xE81B
+#define AFX_IDW_DOCKBAR_LEFT 0xE81C
+#define AFX_IDW_DOCKBAR_RIGHT 0xE81D
+#define AFX_IDW_DOCKBAR_BOTTOM 0xE81E
+#define AFX_IDW_DOCKBAR_FLOAT 0xE81F
+
+// Macro for mapping standard control bars to bitmask (limit of 32)
+#define AFX_CONTROLBAR_MASK(nIDC) (1L << (nIDC - AFX_IDW_CONTROLBAR_FIRST))
+
+// parts of Main Frame
+#define AFX_IDW_PANE_FIRST 0xE900 // first pane (256 max)
+#define AFX_IDW_PANE_LAST 0xE9ff
+#define AFX_IDW_HSCROLL_FIRST 0xEA00 // first Horz scrollbar (16 max)
+#define AFX_IDW_VSCROLL_FIRST 0xEA10 // first Vert scrollbar (16 max)
+
+#define AFX_IDW_SIZE_BOX 0xEA20 // size box for splitters
+#define AFX_IDW_PANE_SAVE 0xEA21 // to shift AFX_IDW_PANE_FIRST
+#endif //!RC_INVOKED
+
+#ifndef APSTUDIO_INVOKED
+
+// common style for form views
+#define AFX_WS_DEFAULT_VIEW (WS_CHILD | WS_VISIBLE | WS_BORDER)
+
+#endif //!APSTUDIO_INVOKED
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard app configurable strings
+
+// for application title (defaults to EXE name or name in constructor)
+#define AFX_IDS_APP_TITLE 0xE000
+// idle message bar line
+#define AFX_IDS_IDLEMESSAGE 0xE001
+// message bar line when in shift-F1 help mode
+#define AFX_IDS_HELPMODEMESSAGE 0xE002
+// application title when OLE object is in-place active
+#define AFX_IDS_APP_TITLE_INPLACE 0xE003
+// document title when editing OLE embedding
+#define AFX_IDS_APP_TITLE_EMBEDDING 0xE004
+// company name
+#define AFX_IDS_COMPANY_NAME 0xE005
+// object name when server is inplace
+#define AFX_IDS_OBJ_TITLE_INPLACE 0xE006
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Commands
+
+// File commands
+#define ID_FILE_NEW 0xE100
+#define ID_FILE_OPEN 0xE101
+#define ID_FILE_CLOSE 0xE102
+#define ID_FILE_SAVE 0xE103
+#define ID_FILE_SAVE_AS 0xE104
+#define ID_FILE_PAGE_SETUP 0xE105
+#define ID_FILE_PRINT_SETUP 0xE106
+#define ID_FILE_PRINT 0xE107
+#define ID_FILE_PRINT_PREVIEW 0xE108
+#define ID_FILE_UPDATE 0xE109
+#define ID_FILE_SAVE_COPY_AS 0xE10A
+#define ID_FILE_SEND_MAIL 0xE10B
+
+#define ID_FILE_MRU_FIRST 0xE110
+#define ID_FILE_MRU_FILE1 0xE110 // range - 16 max
+#define ID_FILE_MRU_FILE2 0xE111
+#define ID_FILE_MRU_FILE3 0xE112
+#define ID_FILE_MRU_FILE4 0xE113
+#define ID_FILE_MRU_FILE5 0xE114
+#define ID_FILE_MRU_FILE6 0xE115
+#define ID_FILE_MRU_FILE7 0xE116
+#define ID_FILE_MRU_FILE8 0xE117
+#define ID_FILE_MRU_FILE9 0xE118
+#define ID_FILE_MRU_FILE10 0xE119
+#define ID_FILE_MRU_FILE11 0xE11A
+#define ID_FILE_MRU_FILE12 0xE11B
+#define ID_FILE_MRU_FILE13 0xE11C
+#define ID_FILE_MRU_FILE14 0xE11D
+#define ID_FILE_MRU_FILE15 0xE11E
+#define ID_FILE_MRU_FILE16 0xE11F
+#define ID_FILE_MRU_LAST 0xE11F
+
+// Edit commands
+#define ID_EDIT_CLEAR 0xE120
+#define ID_EDIT_CLEAR_ALL 0xE121
+#define ID_EDIT_COPY 0xE122
+#define ID_EDIT_CUT 0xE123
+#define ID_EDIT_FIND 0xE124
+#define ID_EDIT_PASTE 0xE125
+#define ID_EDIT_PASTE_LINK 0xE126
+#define ID_EDIT_PASTE_SPECIAL 0xE127
+#define ID_EDIT_REPEAT 0xE128
+#define ID_EDIT_REPLACE 0xE129
+#define ID_EDIT_SELECT_ALL 0xE12A
+#define ID_EDIT_UNDO 0xE12B
+#define ID_EDIT_REDO 0xE12C
+
+// Window commands
+#define ID_WINDOW_NEW 0xE130
+#define ID_WINDOW_ARRANGE 0xE131
+#define ID_WINDOW_CASCADE 0xE132
+#define ID_WINDOW_TILE_HORZ 0xE133
+#define ID_WINDOW_TILE_VERT 0xE134
+#define ID_WINDOW_SPLIT 0xE135
+#ifndef RC_INVOKED // code only
+#define AFX_IDM_WINDOW_FIRST 0xE130
+#define AFX_IDM_WINDOW_LAST 0xE13F
+#define AFX_IDM_FIRST_MDICHILD 0xFF00 // window list starts here
+#endif //!RC_INVOKED
+
+// Help and App commands
+#define ID_APP_ABOUT 0xE140
+#define ID_APP_EXIT 0xE141
+#define ID_HELP_INDEX 0xE142
+#define ID_HELP_USING 0xE143
+#define ID_CONTEXT_HELP 0xE144 // shift-F1
+// special commands for processing help
+#define ID_HELP 0xE145 // first attempt for F1
+#define ID_DEFAULT_HELP 0xE146 // last attempt
+
+// Misc
+#define ID_NEXT_PANE 0xE150
+#define ID_PREV_PANE 0xE151
+
+// OLE commands
+#define ID_OLE_INSERT_NEW 0xE200
+#define ID_OLE_EDIT_LINKS 0xE201
+#define ID_OLE_EDIT_CONVERT 0xE202
+#define ID_OLE_EDIT_CHANGE_ICON 0xE203
+#define ID_OLE_EDIT_PROPERTIES 0xE204
+#define ID_OLE_VERB_FIRST 0xE210 // range - 16 max
+#ifndef RC_INVOKED // code only
+#define ID_OLE_VERB_LAST 0xE21F
+#endif //!RC_INVOKED
+
+// for print preview dialog bar
+#define AFX_ID_PREVIEW_CLOSE 0xE300
+#define AFX_ID_PREVIEW_NUMPAGE 0xE301 // One/Two Page button
+#define AFX_ID_PREVIEW_NEXT 0xE302
+#define AFX_ID_PREVIEW_PREV 0xE303
+#define AFX_ID_PREVIEW_PRINT 0xE304
+#define AFX_ID_PREVIEW_ZOOMIN 0xE305
+#define AFX_ID_PREVIEW_ZOOMOUT 0xE306
+
+// View commands (same number used as IDW used for control bar)
+#define ID_VIEW_TOOLBAR 0xE800
+#define ID_VIEW_STATUS_BAR 0xE801
+ // -> E8FF reserved for other control bar commands
+
+// RecordForm commands
+#define ID_RECORD_FIRST 0xE900
+#define ID_RECORD_LAST 0xE901
+#define ID_RECORD_NEXT 0xE902
+#define ID_RECORD_PREV 0xE903
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard control IDs
+
+#ifdef IDC_STATIC
+#undef IDC_STATIC
+#endif
+#define IDC_STATIC (-1) // all static controls
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard string error/warnings
+
+#ifndef RC_INVOKED // code only
+#define AFX_IDS_SCFIRST 0xEF00
+#endif //!RC_INVOKED
+
+#define AFX_IDS_SCSIZE 0xEF00
+#define AFX_IDS_SCMOVE 0xEF01
+#define AFX_IDS_SCMINIMIZE 0xEF02
+#define AFX_IDS_SCMAXIMIZE 0xEF03
+#define AFX_IDS_SCNEXTWINDOW 0xEF04
+#define AFX_IDS_SCPREVWINDOW 0xEF05
+#define AFX_IDS_SCCLOSE 0xEF06
+#define AFX_IDS_SCRESTORE 0xEF12
+#define AFX_IDS_SCTASKLIST 0xEF13
+
+#define AFX_IDS_MDICHILD 0xEF1F
+
+#define AFX_IDS_DESKACCESSORY 0xEFDA
+
+// General strings
+#define AFX_IDS_OPENFILE 0xF000
+#define AFX_IDS_SAVEFILE 0xF001
+#define AFX_IDS_ALLFILTER 0xF002
+#define AFX_IDS_UNTITLED 0xF003
+#define AFX_IDS_SAVEFILECOPY 0xF004
+#define AFX_IDS_PREVIEW_CLOSE 0xF005
+#ifdef _MAC
+#define AFX_IDS_ABOUT 0xF010
+#endif
+
+// Printing and print preview strings
+#define AFX_IDS_PRINTONPORT 0xF040
+#define AFX_IDS_ONEPAGE 0xF041
+#define AFX_IDS_TWOPAGE 0xF042
+#define AFX_IDS_PRINTPAGENUM 0xF043
+#define AFX_IDS_PREVIEWPAGEDESC 0xF044
+#define AFX_IDS_PRINTDEFAULTEXT 0xF045
+#define AFX_IDS_PRINTDEFAULT 0xF046
+#define AFX_IDS_PRINTFILTER 0xF047
+#define AFX_IDS_PRINTCAPTION 0xF048
+#define AFX_IDS_PRINTTOFILE 0xF049
+
+
+// OLE strings
+#define AFX_IDS_OBJECT_MENUITEM 0xF080
+#define AFX_IDS_EDIT_VERB 0xF081
+#define AFX_IDS_ACTIVATE_VERB 0xF082
+#define AFX_IDS_CHANGE_LINK 0xF083
+#define AFX_IDS_AUTO 0xF084
+#define AFX_IDS_MANUAL 0xF085
+#define AFX_IDS_FROZEN 0xF086
+#define AFX_IDS_ALL_FILES 0xF087
+// dynamically changing menu items
+#define AFX_IDS_SAVE_MENU 0xF088
+#define AFX_IDS_UPDATE_MENU 0xF089
+#define AFX_IDS_SAVE_AS_MENU 0xF08A
+#define AFX_IDS_SAVE_COPY_AS_MENU 0xF08B
+#define AFX_IDS_EXIT_MENU 0xF08C
+#define AFX_IDS_UPDATING_ITEMS 0xF08D
+// COlePasteSpecialDialog defines
+#define AFX_IDS_METAFILE_FORMAT 0xF08E
+#define AFX_IDS_DIB_FORMAT 0xF08F
+#define AFX_IDS_BITMAP_FORMAT 0xF090
+#define AFX_IDS_LINKSOURCE_FORMAT 0xF091
+#define AFX_IDS_EMBED_FORMAT 0xF092
+// other OLE utility strings
+#define AFX_IDS_PASTELINKEDTYPE 0xF094
+#define AFX_IDS_UNKNOWNTYPE 0xF095
+
+// General error / prompt strings
+#define AFX_IDP_INVALID_FILENAME 0xF100
+#define AFX_IDP_FAILED_TO_OPEN_DOC 0xF101
+#define AFX_IDP_FAILED_TO_SAVE_DOC 0xF102
+#define AFX_IDP_ASK_TO_SAVE 0xF103
+#define AFX_IDP_FAILED_TO_CREATE_DOC 0xF104
+#define AFX_IDP_FILE_TOO_LARGE 0xF105
+#define AFX_IDP_FAILED_TO_START_PRINT 0xF106
+#define AFX_IDP_FAILED_TO_LAUNCH_HELP 0xF107
+#define AFX_IDP_INTERNAL_FAILURE 0xF108 // general failure
+#define AFX_IDP_COMMAND_FAILURE 0xF109 // command failure
+#define AFX_IDP_FAILED_MEMORY_ALLOC 0xF10A
+
+// DDV parse errors
+#define AFX_IDP_PARSE_INT 0xF110
+#define AFX_IDP_PARSE_REAL 0xF111
+#define AFX_IDP_PARSE_INT_RANGE 0xF112
+#define AFX_IDP_PARSE_REAL_RANGE 0xF113
+#define AFX_IDP_PARSE_STRING_SIZE 0xF114
+#define AFX_IDP_PARSE_RADIO_BUTTON 0xF115
+#define AFX_IDP_PARSE_BYTE 0xF116
+#define AFX_IDP_PARSE_UINT 0xF117
+
+// CFile/CArchive error strings for user failure
+#define AFX_IDP_FAILED_INVALID_FORMAT 0xF120
+#define AFX_IDP_FAILED_INVALID_PATH 0xF121
+#define AFX_IDP_FAILED_DISK_FULL 0xF122
+#define AFX_IDP_FAILED_ACCESS_READ 0xF123
+#define AFX_IDP_FAILED_ACCESS_WRITE 0xF124
+#define AFX_IDP_FAILED_IO_ERROR_READ 0xF125
+#define AFX_IDP_FAILED_IO_ERROR_WRITE 0xF126
+
+// OLE errors / prompt strings
+#define AFX_IDP_STATIC_OBJECT 0xF180
+#define AFX_IDP_FAILED_TO_CONNECT 0xF181
+#define AFX_IDP_SERVER_BUSY 0xF182
+#define AFX_IDP_BAD_VERB 0xF183
+#define AFX_IDP_FAILED_TO_NOTIFY 0xF185
+#define AFX_IDP_FAILED_TO_LAUNCH 0xF186
+#define AFX_IDP_ASK_TO_UPDATE 0xF187
+#define AFX_IDP_FAILED_TO_UPDATE 0xF188
+#define AFX_IDP_FAILED_TO_REGISTER 0xF189
+#define AFX_IDP_FAILED_TO_AUTO_REGISTER 0xF18A
+#define AFX_IDP_FAILED_TO_CONVERT 0xF18B
+#define AFX_IDP_GET_NOT_SUPPORTED 0xF18C
+#define AFX_IDP_SET_NOT_SUPPORTED 0xF18D
+#define AFX_IDP_ASK_TO_DISCARD 0xF18E
+
+// MAPI errors / prompt strings
+#define AFX_IDP_FAILED_MAPI_LOAD 0xF190
+#define AFX_IDP_INVALID_MAPI_DLL 0xF191
+#define AFX_IDP_FAILED_MAPI_SEND 0xF192
+
+// 0xf200-0xf20f reserved
+
+// Property Sheet button strings (must be in this order)
+#define AFX_IDS_PS_OK 0xF220
+#define AFX_IDS_PS_CANCEL 0xF221
+#define AFX_IDS_PS_APPLY_NOW 0xF222
+#define AFX_IDS_PS_HELP 0xF223
+#define AFX_IDS_PS_CLOSE 0xF224
+
+// font names and point sizes
+#define AFX_IDS_STATUS_FONT 0xF230
+#define AFX_IDS_TOOLTIP_FONT 0xF231
+#define AFX_IDS_UNICODE_FONT 0xF232
+#define AFX_IDS_MINI_FONT 0xF233
+
+// Database errors / prompt strings
+#ifndef RC_INVOKED // code only
+#define AFX_IDP_SQL_FIRST 0xF280
+#endif //!RC_INVOKED
+#define AFX_IDP_SQL_CONNECT_FAIL 0xF281
+#define AFX_IDP_SQL_RECORDSET_FORWARD_ONLY 0xF282
+#define AFX_IDP_SQL_EMPTY_COLUMN_LIST 0xF283
+#define AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH 0xF284
+#define AFX_IDP_SQL_ILLEGAL_MODE 0xF285
+#define AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED 0xF286
+#define AFX_IDP_SQL_NO_CURRENT_RECORD 0xF287
+#define AFX_IDP_SQL_NO_ROWS_AFFECTED 0xF288
+#define AFX_IDP_SQL_RECORDSET_READONLY 0xF289
+#define AFX_IDP_SQL_SQL_NO_TOTAL 0xF28A
+#define AFX_IDP_SQL_ODBC_LOAD_FAILED 0xF28B
+#define AFX_IDP_SQL_DYNASET_NOT_SUPPORTED 0xF28C
+#define AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED 0xF28D
+#define AFX_IDP_SQL_API_CONFORMANCE 0xF28E
+#define AFX_IDP_SQL_SQL_CONFORMANCE 0xF28F
+#define AFX_IDP_SQL_NO_DATA_FOUND 0xF290
+#define AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED 0xF291
+#define AFX_IDP_SQL_ODBC_V2_REQUIRED 0xF292
+#define AFX_IDP_SQL_NO_POSITIONED_UPDATES 0xF293
+#define AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED 0xF294
+#define AFX_IDP_SQL_DATA_TRUNCATED 0xF295
+#define AFX_IDP_SQL_ROW_FETCH 0xF296
+#define AFX_IDP_SQL_INCORRECT_ODBC 0xF297
+#define AFX_IDP_SQL_UPDATE_DELETE_FAILED 0xF298
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX implementation - control IDs (AFX_IDC)
+
+// Parts of dialogs
+#define AFX_IDC_LISTBOX 100
+#define AFX_IDC_CHANGE 101
+
+// for print dialog
+#define AFX_IDC_PRINT_DOCNAME 201
+#define AFX_IDC_PRINT_PRINTERNAME 202
+#define AFX_IDC_PRINT_PORTNAME 203
+#define AFX_IDC_PRINT_PAGENUM 204
+
+// Property Sheet control id's
+#define ID_APPLY_NOW 0xEA00
+#define AFX_IDC_TAB_CONTROL 301
+
+/////////////////////////////////////////////////////////////////////////////
+// IDRs for standard components
+
+#ifndef RC_INVOKED // code only
+// These are really COMMDLG dialogs, so there usually isn't a resource
+// for them, but these IDs are used as help IDs.
+#define AFX_IDD_FILEOPEN 28676
+#define AFX_IDD_FILESAVE 28677
+#define AFX_IDD_FONT 28678
+#define AFX_IDD_COLOR 28679
+#define AFX_IDD_PRINT 28680
+#define AFX_IDD_PRINTSETUP 28681
+#define AFX_IDD_FIND 28682
+#define AFX_IDD_REPLACE 28683
+#endif //!RC_INVOKED
+
+// Standard dialogs app should leave alone (0x7801->)
+#define AFX_IDD_NEWTYPEDLG 30721
+#define AFX_IDD_PRINTDLG 30722
+#define AFX_IDD_PREVIEW_TOOLBAR 30723
+#ifdef _MAC
+#define AFX_IDD_PREVIEW_SHORTTOOLBAR 30731
+#endif
+
+// Dialogs defined for OLE2UI library
+#define AFX_IDD_INSERTOBJECT 30724
+#define AFX_IDD_CHANGEICON 30725
+#define AFX_IDD_CONVERT 30726
+#define AFX_IDD_PASTESPECIAL 30727
+#define AFX_IDD_EDITLINKS 30728
+#define AFX_IDD_FILEBROWSE 30729
+#define AFX_IDD_BUSY 30730
+
+// Standard cursors (0x7901->)
+ // AFX_IDC = Cursor resources
+#define AFX_IDC_CONTEXTHELP 30977 // context sensitive help
+#define AFX_IDC_MAGNIFY 30978 // print preview zoom
+#define AFX_IDC_SMALLARROWS 30979 // splitter
+#define AFX_IDC_HSPLITBAR 30980 // splitter
+#define AFX_IDC_VSPLITBAR 30981 // splitter
+#define AFX_IDC_NODROPCRSR 30982 // No Drop Cursor
+#define AFX_IDC_TRACKNWSE 30983 // tracker
+#define AFX_IDC_TRACKNESW 30984 // tracker
+#define AFX_IDC_TRACKNS 30985 // tracker
+#define AFX_IDC_TRACKWE 30986 // tracker
+#define AFX_IDC_TRACK4WAY 30987 // tracker
+#define AFX_IDC_MOVE4WAY 30988 // resize bar (server only)
+
+// Tab Control bitmap IDs
+#define AFX_IDB_SCROLL 30989
+
+// Mini frame window bitmap ID
+#define AFX_IDB_MINIFRAME_MENU 30994
+
+// AFX standard accelerator resources
+#define AFX_IDR_PREVIEW_ACCEL 30995
+
+// AFX standard ICON IDs (for MFC V1 apps) (0x7A01->)
+#define AFX_IDI_STD_MDIFRAME 31233
+#define AFX_IDI_STD_FRAME 31234
+
+#ifdef _AFXCTL
+/////////////////////////////////////////////////////////////////////////////
+// AFX OLE control implementation - control IDs (AFX_IDC)
+
+// Font property page
+#define AFX_IDC_FONTPROP 1000
+#define AFX_IDC_FONTNAMES 1001
+#define AFX_IDC_FONTSTYLES 1002
+#define AFX_IDC_FONTSIZES 1003
+#define AFX_IDC_STRIKEOUT 1004
+#define AFX_IDC_UNDERLINE 1005
+#define AFX_IDC_SAMPLEBOX 1006
+
+// Color property page
+#define AFX_IDC_COLOR_BLACK 1100
+#define AFX_IDC_COLOR_WHITE 1101
+#define AFX_IDC_COLOR_RED 1102
+#define AFX_IDC_COLOR_GREEN 1103
+#define AFX_IDC_COLOR_BLUE 1104
+#define AFX_IDC_COLOR_YELLOW 1105
+#define AFX_IDC_COLOR_MAGENTA 1106
+#define AFX_IDC_COLOR_CYAN 1107
+#define AFX_IDC_COLOR_GRAY 1108
+#define AFX_IDC_COLOR_LIGHTGRAY 1109
+#define AFX_IDC_COLOR_DARKRED 1110
+#define AFX_IDC_COLOR_DARKGREEN 1111
+#define AFX_IDC_COLOR_DARKBLUE 1112
+#define AFX_IDC_COLOR_LIGHTBROWN 1113
+#define AFX_IDC_COLOR_DARKMAGENTA 1114
+#define AFX_IDC_COLOR_DARKCYAN 1115
+#define AFX_IDC_COLORPROP 1116
+#define AFX_IDC_SYSTEMCOLORS 1117
+
+// Picture porperty page
+#define AFX_IDC_PROPNAME 1201
+#define AFX_IDC_PICTURE 1202
+#define AFX_IDC_BROWSE 1203
+
+/////////////////////////////////////////////////////////////////////////////
+// IDRs for OLE control standard components
+
+// Standard propery page dialogs app should leave alone (0x7E01->)
+#define AFX_IDD_PROPPAGE_COLOR 32257
+#define AFX_IDD_PROPPAGE_FONT 32258
+#define AFX_IDD_PROPPAGE_PICTURE 32259
+
+#define AFX_IDB_TRUETYPE 32384
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard OLE control string error/warnings
+
+// Property Sheet button strings
+#define AFX_IDS_PS_OK 0xF220
+#define AFX_IDS_PS_CANCEL 0xF221
+#define AFX_IDS_PS_APPLY_NOW 0xF222
+#define AFX_IDS_PS_HELP 0xF223
+#define AFX_IDS_PS_CLOSE 0xF224
+
+#define AFX_IDS_DEFAULT_PAGE_TITLE 0xFE00
+#define AFX_IDS_PROPPAGE_UNKNOWN 0xFE01
+#define AFX_IDS_FRAMECAPTIONFORMAT 0xFE02
+#define AFX_IDS_PROPERTIES 0xFE03
+#define AFX_IDS_COLOR_DESKTOP 0xFE04
+#define AFX_IDS_COLOR_APPWORKSPACE 0xFE05
+#define AFX_IDS_COLOR_WNDBACKGND 0xFE06
+#define AFX_IDS_COLOR_WNDTEXT 0xFE07
+#define AFX_IDS_COLOR_MENUBAR 0xFE08
+#define AFX_IDS_COLOR_MENUTEXT 0xFE09
+#define AFX_IDS_COLOR_ACTIVEBAR 0xFE0A
+#define AFX_IDS_COLOR_INACTIVEBAR 0xFE0B
+#define AFX_IDS_COLOR_ACTIVETEXT 0xFE0C
+#define AFX_IDS_COLOR_INACTIVETEXT 0xFE0D
+#define AFX_IDS_COLOR_ACTIVEBORDER 0xFE0E
+#define AFX_IDS_COLOR_INACTIVEBORDER 0xFE0F
+#define AFX_IDS_COLOR_WNDFRAME 0xFE10
+#define AFX_IDS_COLOR_SCROLLBARS 0xFE11
+#define AFX_IDS_COLOR_BTNFACE 0xFE12
+#define AFX_IDS_COLOR_BTNSHADOW 0xFE13
+#define AFX_IDS_COLOR_BTNTEXT 0xFE14
+#define AFX_IDS_COLOR_BTNHIGHLIGHT 0xFE15
+#define AFX_IDS_COLOR_DISABLEDTEXT 0xFE16
+#define AFX_IDS_COLOR_HIGHLIGHT 0xFE17
+#define AFX_IDS_COLOR_HIGHLIGHTTEXT 0xFE18
+#define AFX_IDS_REGULAR 0xFE19
+#define AFX_IDS_BOLD 0xFE1A
+#define AFX_IDS_ITALIC 0xFE1B
+#define AFX_IDS_BOLDITALIC 0xFE1C
+#define AFX_IDS_SAMPLETEXT 0xFE1D
+#define AFX_IDS_DISPLAYSTRING_FONT 0xFE1E
+#define AFX_IDS_DISPLAYSTRING_COLOR 0xFE1F
+#define AFX_IDS_DISPLAYSTRING_PICTURE 0xFE20
+#define AFX_IDS_PICTUREFILTER 0xFE21
+#define AFX_IDS_PICTYPE_UNKNOWN 0xFE22
+#define AFX_IDS_PICTYPE_NONE 0xFE23
+#define AFX_IDS_PICTYPE_BITMAP 0xFE24
+#define AFX_IDS_PICTYPE_METAFILE 0xFE25
+#define AFX_IDS_PICTYPE_ICON 0xFE26
+#define AFX_IDS_PROPFRAME 0xFE27
+#define AFX_IDS_COLOR_PPG 0xFE28
+#define AFX_IDS_COLOR_PPG_CAPTION 0xFE29
+#define AFX_IDS_FONT_PPG 0xFE2A
+#define AFX_IDS_FONT_PPG_CAPTION 0xFE2B
+#define AFX_IDS_PICTURE_PPG 0xFE2C
+#define AFX_IDS_PICTURE_PPG_CAPTION 0xFE2D
+#define AFX_IDS_STANDARD_FONT 0xFE2E
+#define AFX_IDS_STANDARD_PICTURE 0xFE2F
+#define AFX_IDS_PICTUREBROWSETITLE 0xFE30
+#define AFX_IDS_BORDERSTYLE_0 0xFE31
+#define AFX_IDS_BORDERSTYLE_1 0xFE32
+
+// OLE Control verb names
+#define AFX_IDS_VERB_EDIT 0xFE40
+#define AFX_IDS_VERB_PROPERTIES 0xFE41
+
+// OLE Control internal error messages
+#define AFX_IDP_PROPFRAME_OOM 0xFE80
+#define AFX_IDP_PROPFRAME_OOR 0xFE81
+#define AFX_IDP_PROPFRAME_NOPAGES 0xFE82
+#define AFX_IDP_PICTURECANTOPEN 0xFE83
+#define AFX_IDP_PICTURECANTLOAD 0xFE84
+#define AFX_IDP_PICTURETOOLARGE 0xFE85
+#define AFX_IDP_PICTUREREADFAILED 0xFE86
+
+// Standard OLE Control error strings
+#define AFX_IDP_E_ILLEGALFUNCTIONCALL 0xFEA0
+#define AFX_IDP_E_OVERFLOW 0xFEA1
+#define AFX_IDP_E_OUTOFMEMORY 0xFEA2
+#define AFX_IDP_E_DIVISIONBYZERO 0xFEA3
+#define AFX_IDP_E_OUTOFSTRINGSPACE 0xFEA4
+#define AFX_IDP_E_OUTOFSTACKSPACE 0xFEA5
+#define AFX_IDP_E_BADFILENAMEORNUMBER 0xFEA6
+#define AFX_IDP_E_FILENOTFOUND 0xFEA7
+#define AFX_IDP_E_BADFILEMODE 0xFEA8
+#define AFX_IDP_E_FILEALREADYOPEN 0xFEA9
+#define AFX_IDP_E_DEVICEIOERROR 0xFEAA
+#define AFX_IDP_E_FILEALREADYEXISTS 0xFEAB
+#define AFX_IDP_E_BADRECORDLENGTH 0xFEAC
+#define AFX_IDP_E_DISKFULL 0xFEAD
+#define AFX_IDP_E_BADRECORDNUMBER 0xFEAE
+#define AFX_IDP_E_BADFILENAME 0xFEAF
+#define AFX_IDP_E_TOOMANYFILES 0xFEB0
+#define AFX_IDP_E_DEVICEUNAVAILABLE 0xFEB1
+#define AFX_IDP_E_PERMISSIONDENIED 0xFEB2
+#define AFX_IDP_E_DISKNOTREADY 0xFEB3
+#define AFX_IDP_E_PATHFILEACCESSERROR 0xFEB4
+#define AFX_IDP_E_PATHNOTFOUND 0xFEB5
+#define AFX_IDP_E_INVALIDPATTERNSTRING 0xFEB6
+#define AFX_IDP_E_INVALIDUSEOFNULL 0xFEB7
+#define AFX_IDP_E_INVALIDFILEFORMAT 0xFEB8
+#define AFX_IDP_E_INVALIDPROPERTYVALUE 0xFEB9
+#define AFX_IDP_E_INVALIDPROPERTYARRAYINDEX 0xFEBA
+#define AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME 0xFEBB
+#define AFX_IDP_E_SETNOTSUPPORTED 0xFEBC
+#define AFX_IDP_E_NEEDPROPERTYARRAYINDEX 0xFEBD
+#define AFX_IDP_E_SETNOTPERMITTED 0xFEBE
+#define AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME 0xFEBF
+#define AFX_IDP_E_GETNOTSUPPORTED 0xFEC0
+#define AFX_IDP_E_PROPERTYNOTFOUND 0xFEC1
+#define AFX_IDP_E_INVALIDCLIPBOARDFORMAT 0xFEC2
+#define AFX_IDP_E_INVALIDPICTURE 0xFEC3
+#define AFX_IDP_E_PRINTERERROR 0xFEC4
+#define AFX_IDP_E_CANTSAVEFILETOTEMP 0xFEC5
+#define AFX_IDP_E_SEARCHTEXTNOTFOUND 0xFEC6
+#define AFX_IDP_E_REPLACEMENTSTOOLONG 0xFEC7
+
+#endif //_AFXCTL
+
+#endif //__AFXRES_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxres.rc b/public/sdk/inc/mfc30/afxres.rc
new file mode 100644
index 000000000..4fc0d1f8a
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxres.rc
@@ -0,0 +1,177 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE
+BEGIN
+ AFX_IDS_OPENFILE, "Open"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Save As"
+ AFX_IDS_ALLFILTER, "All Files (*.*)"
+ AFX_IDS_UNTITLED, "Untitled"
+#else
+ AFX_IDS_SAVEFILE, "Save document as:"
+ AFX_IDS_ALLFILTER, "All Files"
+ AFX_IDS_UNTITLED, "untitled"
+ AFX_IDS_ABOUT, "About "
+#endif
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "Invalid filename."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Failed to open document."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Failed to save document."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Save changes to %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Save changes to the %1 document \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Failed to create empty document."
+ AFX_IDP_FILE_TOO_LARGE, "The file is too large to open."
+ AFX_IDP_FAILED_TO_START_PRINT, "Could not start print job."
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Failed to launch help."
+ AFX_IDP_INTERNAL_FAILURE, "Internal application error."
+ AFX_IDP_COMMAND_FAILURE, "Command failed."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Insufficient memory to perform operation."
+ AFX_IDP_GET_NOT_SUPPORTED, "Unable to read write-only property."
+ AFX_IDP_SET_NOT_SUPPORTED, "Unable to write read-only property."
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "Unexpected file format."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nCannot find this file.\nPlease verify that the correct path and file name are given."
+ AFX_IDP_FAILED_DISK_FULL "Destination disk drive is full."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Cannot find the file \042%1.\042 Please verify that the correct file name is given."
+ AFX_IDP_FAILED_DISK_FULL "Destination disk is full."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Unable to read from %1, it is opened by someone else."
+ AFX_IDP_FAILED_ACCESS_WRITE "Unable to write to %1, it is read-only or opened by someone else."
+ AFX_IDP_FAILED_IO_ERROR_READ "An unexpected error occurred while reading %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "An unexpected error occurred while writing %1."
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Please enter an integer."
+ AFX_IDP_PARSE_REAL, "Please enter a number."
+ AFX_IDP_PARSE_INT_RANGE, "Please enter an integer between %1 and %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Please enter a number between %1 and %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Please enter no more than %1 characters."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Please select a button."
+ AFX_IDP_PARSE_BYTE, "Please enter an integer between 0 and 255."
+ AFX_IDP_PARSE_UINT, "Please enter a positive integer."
+
+#ifndef _AFX_NO_PROPSHEET_RESOURCES
+ // Property Sheet button strings (Note: 50 is the X-axis button size)
+ AFX_IDS_PS_OK "OK\n50"
+ AFX_IDS_PS_CANCEL "Cancel\n50"
+ AFX_IDS_PS_APPLY_NOW "&Apply\n50"
+ AFX_IDS_PS_HELP "&Help\n50"
+ AFX_IDS_PS_CLOSE "Close"
+#endif //!_AFX_NO_PROPSHEET_RESOURCES
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Linked %s"
+ AFX_IDS_UNKNOWNTYPE "Unknown Type"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nUnable to register document.\nThe document may already be open."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Unable to register document \042%1.\042 The document may already be open."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Unable to load mail system support."
+ AFX_IDP_INVALID_MAPI_DLL "Mail system DLL is invalid."
+ AFX_IDP_FAILED_MAPI_SEND "Send Mail failed to send message."
+#endif //!_AFX_NO_MAPI_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "New"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&New ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Cancel",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Help",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Property Sheet Bitmaps
+
+#ifndef _AFX_NO_PROPERTY_RESOURCES
+AFX_IDB_SCROLL BITMAP DISCARDABLE "res\\psscroll.bmp"
+#endif //!_AFX_NO_PROPERTY_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxsock.h b/public/sdk/inc/mfc30/afxsock.h
new file mode 100644
index 000000000..26e00a273
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxsock.h
@@ -0,0 +1,350 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1994 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXSOCK_H__
+#define __AFXSOCK_H__
+
+#ifdef _AFX_NO_SOCKET_SUPPORT
+ #error Windows Sockets classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#include <winsock.h>
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifndef _AFXCTL
+#ifdef _AFXDLL
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "cfmn30d.lib")
+ #else
+ #pragma comment(lib, "cfmn30.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "cfmn30ud.lib")
+ #else
+ #pragma comment(lib, "cfmn30u.lib")
+ #endif
+ #endif
+#endif
+
+#endif // !_AFXCTL
+
+#pragma comment(lib, "wsock32.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXSOCK - MFC support for Windows Sockets
+
+// Classes declared in this file
+
+ // CObject
+ class CAsyncSocket; // Async Socket implementation and
+ // base class for Synchronous Socket
+ class CSocket; // Synchronous Socket
+
+ // CFile
+ class CSocketFile; // Used with CSocket and CArchive for
+ // streaming objects on sockets.
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_NET_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocketWnd -- internal use only
+// Implementation for sockets notification callbacks.
+// Future versions of MFC may or may not include this exact class.
+
+class CSocketWnd : public CWnd
+{
+// Construction
+public:
+ CSocketWnd();
+
+// Implementation
+public:
+ virtual ~CSocketWnd();
+
+protected:
+ //{{AFX_MSG(CSocketWnd)
+ LRESULT OnSocketNotify(WPARAM wParam, LPARAM lParam);
+ LRESULT OnSocketDead(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CAsyncSocket
+
+class CAsyncSocket : public CObject
+{
+ DECLARE_DYNAMIC(CAsyncSocket);
+private:
+ CAsyncSocket(const CAsyncSocket& rSrc); // no implementation
+ void operator=(const CAsyncSocket& rSrc); // no implementation
+
+// Construction
+public:
+ CAsyncSocket();
+ BOOL Create(UINT nSocketPort = 0, int nSocketType=SOCK_STREAM,
+ long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
+ LPCTSTR lpszSocketAddress = NULL);
+
+// Attributes
+public:
+ SOCKET m_hSocket;
+
+ BOOL Attach(SOCKET hSocket, long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
+ SOCKET Detach();
+
+ BOOL GetPeerName(CString& rPeerAddress, UINT& rPeerPort);
+ BOOL GetPeerName(SOCKADDR* lpSockAddr, int* lpSockAddrLen);
+
+ BOOL GetSockName(CString& rSocketAddress, UINT& rSocketPort);
+ BOOL GetSockName(SOCKADDR* lpSockAddr, int* lpSockAddrLen);
+
+ BOOL SetSockOpt(int nOptionName, const void* lpOptionValue,
+ int nOptionLen, int nLevel = SOL_SOCKET);
+ BOOL GetSockOpt(int nOptionName, void* lpOptionValue,
+ int* lpOptionLen, int nLevel = SOL_SOCKET);
+
+ static CAsyncSocket* PASCAL FromHandle(SOCKET hSocket);
+ static int GetLastError();
+
+// Operations
+public:
+
+ virtual BOOL Accept(CAsyncSocket& rConnectedSocket,
+ SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL);
+
+ BOOL Bind(UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL);
+ BOOL Bind (const SOCKADDR* lpSockAddr, int nSockAddrLen);
+
+ virtual void Close();
+
+ BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort);
+ BOOL Connect(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+
+ BOOL IOCtl(long lCommand, DWORD* lpArgument);
+
+ BOOL Listen(int nConnectionBacklog=5);
+
+ virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int ReceiveFrom(void* lpBuf, int nBufLen,
+ CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0);
+ int ReceiveFrom(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags = 0);
+
+ enum { receives = 0, sends = 1, both = 2 };
+ BOOL ShutDown(int nHow = sends);
+
+ virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int SendTo(const void* lpBuf, int nBufLen,
+ UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0);
+ int SendTo(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags = 0);
+
+ BOOL AsyncSelect(long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
+
+// Overridable callbacks
+protected:
+ virtual void OnReceive(int nErrorCode);
+ virtual void OnSend(int nErrorCode);
+ virtual void OnOutOfBandData(int nErrorCode);
+ virtual void OnAccept(int nErrorCode);
+ virtual void OnConnect(int nErrorCode);
+ virtual void OnClose(int nErrorCode);
+
+// Implementation
+public:
+ virtual ~CAsyncSocket();
+
+ static CAsyncSocket* PASCAL LookupHandle(SOCKET hSocket, BOOL bDead = FALSE);
+ static void PASCAL AttachHandle(SOCKET hSocket, CAsyncSocket* pSocket, BOOL bDead = FALSE);
+ static void PASCAL DetachHandle(SOCKET hSocket, BOOL bDead = FALSE);
+ static void PASCAL KillSocket(SOCKET hSocket, CAsyncSocket* pSocket);
+ static void PASCAL DoCallBack(WPARAM wParam, LPARAM lParam);
+
+ BOOL Socket(int nSocketType=SOCK_STREAM, long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
+ int nProtocolType = 0, int nAddressFormat = PF_INET);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ friend class CSocketWnd;
+
+ virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+ virtual int ReceiveFromHelper(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags);
+ virtual int SendToHelper(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocket
+
+class CSocket : public CAsyncSocket
+{
+ DECLARE_DYNAMIC(CSocket);
+private:
+ CSocket(const CSocket& rSrc); // no implementation
+ void operator=(const CSocket& rSrc); // no implementation
+
+// Construction
+public:
+ CSocket();
+ BOOL Create(UINT nSocketPort = 0, int nSocketType=SOCK_STREAM,
+ LPCTSTR lpszSocketAddress = NULL);
+
+// Attributes
+public:
+ BOOL IsBlocking();
+ static CSocket* PASCAL FromHandle(SOCKET hSocket);
+ BOOL Attach(SOCKET hSocket);
+
+// Operations
+public:
+ void CancelBlockingCall();
+
+// Overridable callbacks
+protected:
+ virtual BOOL OnMessagePending();
+
+// Implementation
+public:
+ int m_nTimeOut;
+
+ virtual ~CSocket();
+
+ static int PASCAL ProcessAuxQueue();
+
+ virtual BOOL Accept(CAsyncSocket& rConnectedSocket,
+ SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL);
+ virtual void Close();
+ virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
+ virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int SendChunk(const void* lpBuf, int nBufLen, int nFlags);
+
+protected:
+ BOOL* m_pbBlocking;
+ int m_nConnectError;
+
+ virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+ virtual int ReceiveFromHelper(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags);
+ virtual int SendToHelper(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags);
+
+ static void PASCAL AuxQueueAdd(UINT message, WPARAM wParam, LPARAM lParam);
+
+ virtual BOOL PumpMessages(UINT uStopFlag);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocketFile
+
+class CSocketFile : public CFile
+{
+ DECLARE_DYNAMIC(CSocketFile)
+public:
+//Constructors
+ CSocketFile(CSocket* pSocket, BOOL bArchiveCompatible = TRUE);
+
+// Implementation
+public:
+ CSocket* m_pSocket;
+ BOOL m_bArchiveCompatible;
+
+ virtual ~CSocketFile();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void Close();
+
+// Unsupported APIs
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL);
+ virtual CFile* Duplicate() const;
+ virtual DWORD GetPosition() const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+ virtual void Flush();
+ virtual void Abort();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global functions
+
+BOOL AfxSocketInit(WSADATA* lpwsaData = NULL);
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXSOCK_INLINE inline
+#include <afxsock.inl>
+#undef _AFXSOCK_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif // __AFXSOCK_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxsock.inl b/public/sdk/inc/mfc30/afxsock.inl
new file mode 100644
index 000000000..e590170a2
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxsock.inl
@@ -0,0 +1,51 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXSOCK.H
+
+#ifdef _AFXSOCK_INLINE
+
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetPeerName(SOCKADDR* lpSockAddr, int* lpSockAddrLen)
+ { return (SOCKET_ERROR != getpeername(m_hSocket, lpSockAddr, lpSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetSockName(SOCKADDR* lpSockAddr, int* lpSockAddrLen)
+ { return (SOCKET_ERROR != getsockname(m_hSocket, lpSockAddr, lpSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::SetSockOpt(int nOptionName, const void* lpOptionValue, int nOptionLen, int nLevel)
+ { return (SOCKET_ERROR != setsockopt(m_hSocket, nLevel, nOptionName, (LPCSTR)lpOptionValue, nOptionLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetSockOpt(int nOptionName, void* lpOptionValue, int* lpOptionLen, int nLevel)
+ { return (SOCKET_ERROR != getsockopt(m_hSocket, nLevel, nOptionName, (LPSTR)lpOptionValue, lpOptionLen)); }
+_AFXSOCK_INLINE CAsyncSocket* PASCAL CAsyncSocket::FromHandle(SOCKET hSocket)
+ { return CAsyncSocket::LookupHandle(hSocket, FALSE); }
+_AFXSOCK_INLINE int CAsyncSocket::GetLastError()
+ { return WSAGetLastError(); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Bind(const SOCKADDR* lpSockAddr, int nSockAddrLen)
+ { return (SOCKET_ERROR != bind(m_hSocket, lpSockAddr, nSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Connect(const SOCKADDR* lpSockAddr, int nSockAddrLen)
+ { return ConnectHelper(lpSockAddr, nSockAddrLen); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::IOCtl(long lCommand, DWORD* lpArgument)
+ { *lpArgument = 0; return (SOCKET_ERROR != ioctlsocket(m_hSocket, lCommand, lpArgument)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Listen(int nConnectionBacklog)
+ { return (SOCKET_ERROR != listen(m_hSocket, nConnectionBacklog)); }
+_AFXSOCK_INLINE int CAsyncSocket::ReceiveFrom(void* lpBuf, int nBufLen, SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags)
+ { return ReceiveFromHelper(lpBuf, nBufLen, lpSockAddr, lpSockAddrLen, nFlags); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::ShutDown(int nHow)
+ { return (SOCKET_ERROR != shutdown(m_hSocket,nHow)); }
+_AFXSOCK_INLINE int CAsyncSocket::SendTo(const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags)
+ { return SendToHelper(lpBuf, nBufLen, lpSockAddr, nSockAddrLen, nFlags); }
+
+_AFXSOCK_INLINE BOOL CSocket::Create(UINT nSocketPort, int nSocketType, LPCTSTR lpszSocketAddress)
+ { return CAsyncSocket::Create(nSocketPort, nSocketType, FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, lpszSocketAddress); }
+_AFXSOCK_INLINE BOOL CSocket::IsBlocking()
+ { return (m_pbBlocking != NULL); }
+_AFXSOCK_INLINE CSocket* PASCAL CSocket::FromHandle(SOCKET hSocket)
+ { return (CSocket*)CAsyncSocket::LookupHandle(hSocket, FALSE); }
+_AFXSOCK_INLINE BOOL CSocket::Attach(SOCKET hSocket)
+ { return CAsyncSocket::Attach(hSocket); }
+
+#endif //_AFXSOCK_INLINE
diff --git a/public/sdk/inc/mfc30/afxstat_.h b/public/sdk/inc/mfc30/afxstat_.h
new file mode 100644
index 000000000..abee25a2d
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxstat_.h
@@ -0,0 +1,537 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXSTATE_H__
+#define __AFXSTATE_H__
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Application global state
+
+class CWinApp;
+class COleObjectFactory;
+class CDynLinkLibrary;
+
+struct AFX_CORE_STATE
+{
+// Implementation
+public:
+ CWinApp* m_pCurrentWinApp;
+ HINSTANCE m_hCurrentInstanceHandle;
+ HINSTANCE m_hCurrentResourceHandle;
+ LPCTSTR m_lpszCurrentAppName;
+
+ // instance specific lists
+ CRuntimeClass* m_pFirstClass;
+
+ // exceptions
+ AFX_TERM_PROC m_pfnTerminate;
+
+#ifdef _AFXDLL
+ CDynLinkLibrary* m_pFirstDLL; // start of DLL list
+ HINSTANCE m_appLangDLL;
+#endif
+
+public:
+ AFX_CORE_STATE();
+};
+
+#if defined(_AFXDLL) || defined(_AFXCTL)
+ #define AfxGetCoreState() (&AfxGetAppState()->m_coreState)
+#else
+ extern AFX_DATA AFX_CORE_STATE _afxCoreState;
+ #define AfxGetCoreState() (&_afxCoreState)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_WIN_STATE
+
+class CView;
+class CFrameWnd;
+
+struct AFX_WIN_STATE
+{
+// Implementation
+public:
+ // custom colors are held here and saved between calls
+ COLORREF m_crSavedCustom[16];
+
+ // gray dialog support
+ HBRUSH m_hDlgBkBrush; // dialog and message box background brush
+ COLORREF m_crDlgTextClr;
+#ifdef _MAC
+ COLORREF m_crDlgBkClr;
+#endif
+
+#if !defined(_MAC) && !defined(_USRDLL) && !defined(_AFXCTL)
+ // 3d controls support
+ BOOL m_bCtl3dInited;
+ HINSTANCE m_hCtl3dLib;
+ BOOL (WINAPI* m_pfnRegister)(HINSTANCE);
+ BOOL (WINAPI* m_pfnUnregister)(HINSTANCE);
+ BOOL (WINAPI* m_pfnAutoSubclass)(HINSTANCE);
+ BOOL (WINAPI* m_pfnUnAutoSubclass)();
+ BOOL (WINAPI* m_pfnColorChange)();
+ BOOL (WINAPI* m_pfnSubclassDlgEx)(HWND, DWORD);
+ void (WINAPI* m_pfnWinIniChange)();
+ BOOL (WINAPI* m_pfnSubclassCtl)(HWND);
+ BOOL (WINAPI* m_pfnSubclassCtlEx)(HWND, int);
+#endif
+
+ // printing abort
+ BOOL m_bUserAbort;
+
+ // pen support
+ void (CALLBACK* m_pfnRegisterPenAppProc)(UINT, BOOL);
+
+ // application shutdown behavior
+ DWORD m_nObjectCount;
+ BOOL m_bUserCtrl;
+
+#if defined(_USRDLL) || defined(_AFXCTL)
+ TCHAR m_szUnregisterList[4096]; // per-process AfxRegisterClass data
+#endif
+
+public:
+ AFX_WIN_STATE();
+ ~AFX_WIN_STATE();
+};
+
+#if defined(_AFXDLL) || defined(_AFXCTL)
+ #define AfxGetWinState() (&AfxGetAppState()->m_winState)
+#else
+ extern AFX_DATA AFX_WIN_STATE _afxWinState;
+ #define AfxGetWinState() (&_afxWinState)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_EDIT_STATE : last find/replace state
+
+class CFindReplaceDialog;
+
+struct AFX_EDIT_STATE
+{
+ CFindReplaceDialog* pFindReplaceDlg; // find or replace dialog
+ BOOL bFindOnly; // Is pFindReplace the find or replace?
+ CString strFind; // last find string
+ CString strReplace; // last replace string
+ BOOL bCase; // TRUE==case sensitive, FALSE==not
+ int bNext; // TRUE==search down, FALSE== search up
+
+ AFX_EDIT_STATE();
+ ~AFX_EDIT_STATE();
+};
+
+
+#if defined(_WINDLL) || defined(_AFXDLL)
+ #define AfxGetEditState() (&AfxGetAppState()->m_editState)
+#else
+ extern AFX_DATA AFX_EDIT_STATE _afxEditState;
+ #define AfxGetEditState() (&_afxEditState)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_OLE_STATE
+
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+class COleDataSource;
+
+struct AFX_OLE_STATE
+{
+// Implementation
+public:
+ COleObjectFactory* m_pFirstFactory;
+
+ BOOL m_bNeedTerm;
+ BOOL m_bNeedTermCOM;
+
+ CView* m_pActivateView; // activation view
+ COleDataSource* m_pClipboardSource;
+
+public:
+ AFX_OLE_STATE();
+};
+
+#if defined(_AFXDLL) || defined(_AFXCTL)
+ #define AfxGetOleState() (&AfxGetAppState()->m_oleState)
+#else
+ extern AFX_DATA AFX_OLE_STATE _afxOleState;
+ #define AfxGetOleState() (&_afxOleState)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_DB_STATE
+
+#undef AFX_DATA
+#define AFX_DATA AFX_DB_DATA
+
+typedef void* HENV; // must match SQL.H
+
+struct AFX_DB_STATE
+{
+// Implementation
+public:
+ // MFC/DB global data
+ HENV m_henvAllConnections; // per-app HENV (CDatabase)
+ int m_nAllocatedConnections; // per-app reference to HENV above
+
+public:
+ AFX_DB_STATE();
+};
+
+#if defined(_WINDLL) || defined(_AFXDLL)
+ #define AfxGetDbState() (&AfxGetAppState()->m_dbState)
+#else
+ extern AFX_DATA AFX_DB_STATE _afxDbState;
+ #define AfxGetDbState() (&_afxDbState)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_MAIL_STATE
+
+struct AFX_MAIL_STATE
+{
+// Implementation
+public:
+ HINSTANCE m_hInstMail; // handle to MAPI32.DLL
+
+public:
+ ~AFX_MAIL_STATE();
+};
+
+#if defined(_WINDLL) || defined(_AFXDLL)
+ #define AfxGetMailState() (&AfxGetAppState()->m_mailState)
+#else
+ extern AFX_DATA AFX_MAIL_STATE _afxMailState;
+ #define AfxGetMailState() (&_afxMailState)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_SOCK_STATE
+
+struct AFX_SOCK_STATE
+{
+// Implementation
+public:
+ void (*m_lpfnCleanup)();
+
+public:
+ ~AFX_SOCK_STATE();
+};
+
+#if defined(_WINDLL) || defined(_AFXDLL)
+ #define AfxGetSockState() (&AfxGetAppState()->m_sockState)
+#else
+ extern AFX_DATA AFX_SOCK_STATE _afxSockState;
+ #define AfxGetSockState() (&_afxSockState)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_ALLOC_STATE
+
+struct IMalloc; // must match OBJBASE.H
+typedef IMalloc* LPMALLOC;
+
+struct AFX_ALLOC_STATE
+{
+// Implementation
+public:
+ LPMALLOC m_lpTaskMalloc; // OLE task allocator.
+
+#ifdef _DEBUG
+ // options for tuning the allocation diagnostics
+ CDumpContext m_afxDump;
+ BOOL m_bTraceEnabled;
+ int m_nTraceFlags;
+#if defined(_USRDLL) || defined(_AFXDLL)
+ int m_nMemDF; // a global variable with static linking
+#endif
+
+ // memory diagnostics state
+ LONG m_lTotalAlloc; // total bytes of memory allocated
+ LONG m_lCurAlloc; // current bytes of memory allocated
+ LONG m_lMaxAlloc; // maximum bytes of memory allocated at any one time
+
+ CBlockHeader* m_pFirstBlock; // add in reverse order
+ BOOL (AFXAPI *m_lpfnAssertFailedLine)(LPCSTR, int);
+#endif
+
+public:
+ AFX_ALLOC_STATE();
+};
+
+#if defined(_WINDLL) || defined(_AFXDLL)
+ #define AfxGetAllocState() (&AfxGetAppState()->m_allocState)
+#else
+ extern AFX_DATA AFX_ALLOC_STATE _afxAllocState;
+ #define AfxGetAllocState() (&_afxAllocState)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_APP_STATE (only used for DLL versions)
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+#if defined(_WINDLL) || defined(_AFXDLL)
+
+struct AFX_MODULE_STATE
+{
+// Implementation
+public:
+#ifdef _AFXCTL
+ AFX_MODULE_STATE* m_pID; // Uniquely identify where this data came from.
+#endif
+#if defined(_AFXDLL) || defined(_AFXCTL)
+ AFX_CORE_STATE m_coreState;
+ AFX_WIN_STATE m_winState;
+ AFX_OLE_STATE m_oleState;
+
+public:
+ AFX_MODULE_STATE();
+ ~AFX_MODULE_STATE();
+#endif
+
+#ifdef _AFXCTL
+public:
+ void* operator new(size_t nSize);
+ void operator delete(void* p);
+#endif
+};
+
+struct AFX_APP_STATE : AFX_MODULE_STATE
+{
+// Implementation
+public:
+ AFX_DB_STATE m_dbState;
+ AFX_ALLOC_STATE m_allocState;
+ AFX_EDIT_STATE m_editState;
+ AFX_MAIL_STATE m_mailState;
+ AFX_SOCK_STATE m_sockState;
+
+#ifdef _AFXCTL
+ CMapPtrToPtr m_mapExtraData; // Extra data for OLE controls.
+#endif
+
+ void* AFX_CDECL operator new(size_t nSize);
+ void AFX_CDECL operator delete(void* p);
+
+public:
+ AFX_APP_STATE();
+ ~AFX_APP_STATE();
+};
+
+AFX_APP_STATE* AFXAPI AfxGetAppState();
+
+#ifdef _AFXCTL
+#define AfxGetExtraDataMap() (&AfxGetAppState()->m_mapExtraData)
+
+AFX_MODULE_STATE* AFXAPI AfxGetBaseModuleContext();
+AFX_MODULE_STATE* AFXAPI AfxGetCurrentModuleContext();
+
+#define _afxModuleAddrCurrent AfxGetCurrentModuleContext()
+
+#define AFX_MANAGE_STATE(pData) AFX_MAINTAIN_STATE _ctlState(pData);
+
+#define METHOD_MANAGE_STATE(theClass, localClass) \
+ METHOD_PROLOGUE_EX(theClass, localClass) \
+ AFX_MANAGE_STATE(pThis->m_pModuleState)
+
+extern AFX_MODULE_STATE* AFXAPI AfxPushModuleContext(AFX_MODULE_STATE* psIn);
+extern void AFXAPI AfxPopModuleContext(AFX_MODULE_STATE* psIn,
+ BOOL bCopy = FALSE);
+
+// When using this object, or the macros above that use this object
+// it is necessary to insure that the object's destructor cannot be
+// thrown past, by an unexpected exception.
+
+class AFX_MAINTAIN_STATE
+{
+private:
+ AFX_MODULE_STATE* m_psPrevious;
+
+public:
+ AFX_MAINTAIN_STATE(AFX_MODULE_STATE* psData);
+ ~AFX_MAINTAIN_STATE();
+};
+#endif //_AFXCTL
+
+#endif //_WINDLL || _AFXDLL
+
+// Stub special OLE Control macros
+#ifndef _AFXCTL
+#define AFX_MANAGE_CTL_STATE()
+#define METHOD_MANAGE_STATE(theClass, localClass) \
+ METHOD_PROLOGUE_EX(theClass, localClass)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CHandleMap (needed for AFX_THREAD_STATE)
+
+// Note: Do not access the members of this class directly.
+// Use CWnd::FromHandle, CDC::FromHandle, etc.
+// The actual definition is only included because it is
+// necessary for the definition of CWinThread.
+//
+// Most Windows objects are represented with a HANDLE, including
+// the most important ones, HWND, HDC, HPEN, HFONT etc.
+// We want C++ objects to wrap these handle based objects whenever we can.
+// Since Windows objects can be created outside of C++ (eg: calling
+// ::CreateWindow will return an HWND with no C++ wrapper) we must
+// support a reasonably uniform mapping from permanent handles
+// (i.e. the ones allocated in C++) and temporary handles (i.e.
+// the ones allocated in C, but passed through a C++ interface.
+// We keep two dictionaries for this purpose. The permanent dictionary
+// stores those C++ objects that have been explicitly created by
+// the developer. The C++ constructor for the wrapper class will
+// insert the mapping into the permanent dictionary and the C++
+// destructor will remove it and possibly free up the associated
+// Windows object.
+// When a handle passes through a C++ interface that doesn't exist in
+// the permanent dictionary, we allocate a temporary wrapping object
+// and store that mapping into the temporary dictionary.
+// At idle time the temporary wrapping objects are flushed (since you better
+// not be holding onto something you didn't create).
+//
+
+class CWinThread; // forward reference for friend declaration
+
+class CHandleMap
+{
+private: // implementation
+ CMapPtrToPtr m_permanentMap;
+ CMapPtrToPtr m_temporaryMap;
+ CRuntimeClass* m_pClass;
+ size_t m_nOffset; // offset of handles in the object
+ int m_nHandles; // 1 or 2 (for CDC)
+
+// Constructors
+public:
+ CHandleMap(CRuntimeClass* pClass, size_t nOffset, int nHandles = 1);
+
+// Operations
+public:
+ CObject* FromHandle(HANDLE h);
+ void DeleteTemp();
+
+ void SetPermanent(HANDLE h, CObject* permOb);
+ void RemoveHandle(HANDLE h);
+
+ BOOL LookupPermanent(HANDLE h, CObject*& pObject);
+ BOOL LookupTemporary(HANDLE h, CObject*& pObject);
+
+ friend class CWinThread;
+};
+
+// Note: out-of-line _DEBUG version is in winhand.cpp
+#ifndef _DEBUG
+inline void CHandleMap::SetPermanent(HANDLE h, CObject* permOb)
+ { m_permanentMap[(LPVOID)h] = permOb; }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Thread global state
+
+class CWinThread; // forward reference (see afxwin.h)
+class CWnd; // forward reference (see afxwin.h)
+
+struct AFX_THREAD_STATE
+{
+// Implementation
+public:
+ // current CWinThread pointer
+ CWinThread* m_pCurrentWinThread;
+ BOOL m_bInMsgFilter;
+
+ // list of CFrameWnds for thread
+ CFrameWnd* m_pFirstFrameWnd;
+
+ // memory safety pool for temp maps
+ void* m_pSafetyPoolBuffer; // current buffer
+
+ // thread local exception context
+ AFX_EXCEPTION_CONTEXT m_exceptionContext;
+
+ // temp map state
+ DWORD m_nTempMapLock; // if not 0, temp maps locked
+ CHandleMap* m_pmapHWND;
+ CHandleMap* m_pmapHMENU;
+ CHandleMap* m_pmapHDC;
+ CHandleMap* m_pmapHGDIOBJ;
+
+ // CWnd create and gray dialog hook
+ CWnd* m_pWndInit;
+ HWND m_hWndInit;
+ BOOL m_bDlgCreate;
+ HHOOK m_hHookOldSendMsg;
+ HHOOK m_hHookOldCbtFilter;
+
+ // other CWnd modal data
+ MSG m_lastSentMsg; // see CWnd::WindowProc
+ HWND m_hTrackingWindow; // see CWnd::TrackPopupMenu
+ HMENU m_hTrackingMenu;
+ TCHAR m_szTempClassName[64]; // see AfxRegisterWndClass
+ HWND m_hLockoutNotifyWindow; // see CWnd::OnCommand
+
+ // other framework modal data
+ CView* m_pRoutingView; // see CCmdTarget::GetRoutingView
+
+ // MFC/DB thread-local data
+ BOOL m_bWaitForDataSource;
+
+#ifndef _AFXCTL
+#ifndef _USRDLL
+ HHOOK m_hHookOldMsgFilter;
+#endif
+#endif
+
+ // WinSock specific thread state
+ HWND m_hSocketWindow;
+ CMapPtrToPtr m_mapSocketHandle;
+ CMapPtrToPtr m_mapDeadSockets;
+ CPtrList m_listSocketNotifications;
+
+ // common controls thread state
+ CHandleMap* m_pmapHIMAGELIST;
+
+ void* AFX_CDECL operator new(size_t nSize);
+#ifdef _DEBUG
+ void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
+#endif
+
+ void AFX_CDECL operator delete(void* p);
+
+public:
+ AFX_THREAD_STATE();
+ ~AFX_THREAD_STATE();
+};
+
+AFX_THREAD_STATE* AFXAPI AfxGetThreadState();
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXSTATE_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxtempl.h b/public/sdk/inc/mfc30/afxtempl.h
new file mode 100644
index 000000000..eab8cab45
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxtempl.h
@@ -0,0 +1,1501 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXTEMPL_H__
+#define __AFXTEMPL_H__
+
+#include <limits.h>
+#include <string.h>
+
+#ifndef __AFXPLEX_H__
+ #include <afxplex_.h>
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifdef _DEBUG
+static char _szAfxTempl[] = "afxtempl.h";
+#undef THIS_FILE
+#define THIS_FILE _szAfxTempl
+#endif
+
+#define new DEBUG_NEW
+
+/////////////////////////////////////////////////////////////////////////////
+// global helpers (can be overridden)
+
+template<class TYPE>
+inline void AFXAPI ConstructElements(TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // default is bit-wise zero initialization
+ memset((void*)pElements, 0, nCount * sizeof(TYPE));
+}
+
+template<class TYPE>
+inline void AFXAPI DestructElements(TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+ pElements; // not used
+ nCount; // not used
+
+ // default does nothing
+}
+
+template<class TYPE>
+void AFXAPI SerializeElements(CArchive& ar, TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // default is bit-wise read/write
+ if (ar.IsStoring())
+ ar.Write((void*)pElements, nCount * sizeof(TYPE));
+ else
+ ar.Read((void*)pElements, nCount * sizeof(TYPE));
+}
+
+#ifdef _DEBUG
+template<class TYPE>
+void AFXAPI DumpElements(CDumpContext& dc, const TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+ dc; // not used
+ pElements; // not used
+ nCount; // not used
+
+ // default does nothing
+}
+#endif
+
+template<class TYPE, class ARG_TYPE>
+BOOL AFXAPI CompareElements(const TYPE* pElement1, const ARG_TYPE* pElement2)
+{
+ ASSERT(AfxIsValidAddress(pElement1, sizeof(TYPE)));
+ ASSERT(AfxIsValidAddress(pElement2, sizeof(ARG_TYPE)));
+
+ return *pElement1 == *pElement2;
+}
+
+template<class ARG_KEY>
+inline UINT AFXAPI HashKey(ARG_KEY key)
+{
+ // default identity hash - works for most primitive values
+ return ((UINT)(void*)(DWORD)key) >> 4;
+}
+
+// special versions for CString
+void AFXAPI SerializeElements(CArchive& ar, CString* pElements, int nCount);
+void AFXAPI ConstructElements(CString* pElements, int nCount);
+void AFXAPI DestructElements(CString* pElements, int nCount);
+UINT AFXAPI HashKey(LPCTSTR key);
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE>
+
+template<class TYPE, class ARG_TYPE>
+class CArray : public CObject
+{
+public:
+// Construction
+ CArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ TYPE GetAt(int nIndex) const;
+ void SetAt(int nIndex, ARG_TYPE newElement);
+ TYPE& ElementAt(int nIndex);
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, ARG_TYPE newElement);
+ int Add(ARG_TYPE newElement);
+
+ // overloaded operator helpers
+ TYPE operator[](int nIndex) const;
+ TYPE& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, ARG_TYPE newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CArray* pNewArray);
+
+// Implementation
+protected:
+ TYPE* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CArray();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE> inline functions
+
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::GetSize() const
+ { return m_nSize; }
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::GetUpperBound() const
+ { return m_nSize-1; }
+template<class TYPE, class ARG_TYPE>
+inline void CArray<TYPE, ARG_TYPE>::RemoveAll()
+ { SetSize(0, -1); }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CArray<TYPE, ARG_TYPE>::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+template<class TYPE, class ARG_TYPE>
+inline void CArray<TYPE, ARG_TYPE>::SetAt(int nIndex, ARG_TYPE newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CArray<TYPE, ARG_TYPE>::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::Add(ARG_TYPE newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CArray<TYPE, ARG_TYPE>::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CArray<TYPE, ARG_TYPE>::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE> out-of-line functions
+
+template<class TYPE, class ARG_TYPE>
+CArray<TYPE, ARG_TYPE>::CArray()
+{
+ m_pData = NULL;
+ m_nSize = m_nMaxSize = m_nGrowBy = 0;
+}
+
+template<class TYPE, class ARG_TYPE>
+CArray<TYPE, ARG_TYPE>::~CArray()
+{
+ ASSERT_VALID(this);
+
+ if (m_pData != NULL)
+ {
+ DestructElements(m_pData, m_nSize);
+ delete[] (BYTE*)m_pData;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::SetSize(int nNewSize, int nGrowBy)
+{
+ ASSERT_VALID(this);
+ ASSERT(nNewSize >= 0);
+
+ if (nGrowBy != -1)
+ m_nGrowBy = nGrowBy; // set new size
+
+ if (nNewSize == 0)
+ {
+ // shrink to nothing
+ if (m_pData != NULL)
+ {
+ DestructElements(m_pData, m_nSize);
+ delete[] (BYTE*)m_pData;
+ m_pData = NULL;
+ }
+ m_nSize = m_nMaxSize = 0;
+ }
+ else if (m_pData == NULL)
+ {
+ // create one with exact size
+#ifdef SIZE_T_MAX
+ ASSERT(nNewSize <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ m_pData = (TYPE*) new BYTE[nNewSize * sizeof(TYPE)];
+ ConstructElements(m_pData, nNewSize);
+ m_nSize = m_nMaxSize = nNewSize;
+ }
+ else if (nNewSize <= m_nMaxSize)
+ {
+ // it fits
+ if (nNewSize > m_nSize)
+ {
+ // initialize the new elements
+ ConstructElements(&m_pData[m_nSize], nNewSize-m_nSize);
+ }
+ else if (m_nSize > nNewSize)
+ {
+ // destroy the old elements
+ DestructElements(&m_pData[nNewSize], m_nSize-nNewSize);
+ }
+ m_nSize = nNewSize;
+ }
+ else
+ {
+ // otherwise, grow array
+ int nGrowBy = m_nGrowBy;
+ if (nGrowBy == 0)
+ {
+ // heuristically determe growth when nGrowBy == 0
+ // (this avoids heap fragmentation in many situations)
+ nGrowBy = min(1024, max(4, m_nSize / 8));
+ }
+ int nNewMax;
+ if (nNewSize < m_nMaxSize + nGrowBy)
+ nNewMax = m_nMaxSize + nGrowBy; // granularity
+ else
+ nNewMax = nNewSize; // no slush
+
+ ASSERT(nNewMax >= m_nMaxSize); // no wrap around
+#ifdef SIZE_T_MAX
+ ASSERT(nNewMax <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ TYPE* pNewData = (TYPE*) new BYTE[nNewMax * sizeof(TYPE)];
+
+ // copy new data from old
+ memcpy(pNewData, m_pData, m_nSize * sizeof(TYPE));
+
+ // construct remaining elements
+ ASSERT(nNewSize > m_nSize);
+ ConstructElements(&pNewData[m_nSize], nNewSize-m_nSize);
+
+ // get rid of old stuff (note: no destructors called)
+ delete[] (BYTE*)m_pData;
+ m_pData = pNewData;
+ m_nSize = nNewSize;
+ m_nMaxSize = nNewMax;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::FreeExtra()
+{
+ ASSERT_VALID(this);
+
+ if (m_nSize != m_nMaxSize)
+ {
+ // shrink to desired size
+#ifdef SIZE_T_MAX
+ ASSERT(m_nSize <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ TYPE* pNewData = NULL;
+ if (m_nSize != 0)
+ {
+ pNewData = (TYPE*) new BYTE[m_nSize * sizeof(TYPE)];
+ // copy new data from old
+ memcpy(pNewData, m_pData, m_nSize * sizeof(TYPE));
+ }
+
+ // get rid of old stuff (note: no destructors called)
+ delete[] (BYTE*)m_pData;
+ m_pData = pNewData;
+ m_nMaxSize = m_nSize;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::SetAtGrow(int nIndex, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+
+ if (nIndex >= m_nSize)
+ SetSize(nIndex+1, -1);
+ m_pData[nIndex] = newElement;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::InsertAt(int nIndex, ARG_TYPE newElement, int nCount /*=1*/)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0); // will expand to meet need
+ ASSERT(nCount > 0); // zero or negative size not allowed
+
+ if (nIndex >= m_nSize)
+ {
+ // adding after the end of the array
+ SetSize(nIndex + nCount, -1); // grow so nIndex is valid
+ }
+ else
+ {
+ // inserting in the middle of the array
+ int nOldSize = m_nSize;
+ SetSize(m_nSize + nCount, -1); // grow it to new size
+ // shift old data up to fill gap
+ memmove(&m_pData[nIndex+nCount], &m_pData[nIndex],
+ (nOldSize-nIndex) * sizeof(TYPE));
+
+ // re-init slots we copied from
+ ConstructElements(&m_pData[nIndex], nCount);
+ }
+
+ // insert new value in the gap
+ ASSERT(nIndex + nCount <= m_nSize);
+ while (nCount--)
+ m_pData[nIndex++] = newElement;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::RemoveAt(int nIndex, int nCount)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+ ASSERT(nCount >= 0);
+ ASSERT(nIndex + nCount <= m_nSize);
+
+ // just remove a range
+ int nMoveCount = m_nSize - (nIndex + nCount);
+ DestructElements(&m_pData[nIndex], nCount);
+ if (nMoveCount)
+ memcpy(&m_pData[nIndex], &m_pData[nIndex + nCount],
+ nMoveCount * sizeof(TYPE));
+ m_nSize -= nCount;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::InsertAt(int nStartIndex, CArray* pNewArray)
+{
+ ASSERT_VALID(this);
+ ASSERT(pNewArray != NULL);
+ ASSERT_VALID(pNewArray);
+ ASSERT(nStartIndex >= 0);
+
+ if (pNewArray->GetSize() > 0)
+ {
+ InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize());
+ for (int i = 0; i < pNewArray->GetSize(); i++)
+ SetAt(nStartIndex + i, pNewArray->GetAt(i));
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+ if (ar.IsStoring())
+ {
+ ar << (WORD) m_nSize;
+ }
+ else
+ {
+ WORD nOldSize;
+ ar >> nOldSize;
+ SetSize(nOldSize, -1);
+ }
+ SerializeElements(ar, m_pData, m_nSize);
+}
+
+#ifdef _DEBUG
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nSize << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ dc << "\n";
+ DumpElements(dc, m_pData, m_nSize);
+ }
+
+ dc << "\n";
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ if (m_pData == NULL)
+ {
+ ASSERT(m_nSize == 0);
+ ASSERT(m_nMaxSize == 0);
+ }
+ else
+ {
+ ASSERT(m_nSize >= 0);
+ ASSERT(m_nMaxSize >= 0);
+ ASSERT(m_nSize <= m_nMaxSize);
+ ASSERT(AfxIsValidAddress(m_pData, m_nMaxSize * sizeof(TYPE)));
+ }
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CList<TYPE, ARG_TYPE>
+
+template<class TYPE, class ARG_TYPE>
+class CList : public CObject
+{
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ TYPE data;
+ };
+public:
+// Construction
+ CList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ TYPE& GetHead();
+ TYPE GetHead() const;
+ TYPE& GetTail();
+ TYPE GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list !
+ TYPE RemoveHead();
+ TYPE RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(ARG_TYPE newElement);
+ POSITION AddTail(ARG_TYPE newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CList* pNewList);
+ void AddTail(CList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ TYPE& GetNext(POSITION& rPosition); // return *Position++
+ TYPE GetNext(POSITION& rPosition) const; // return *Position++
+ TYPE& GetPrev(POSITION& rPosition); // return *Position--
+ TYPE GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ TYPE& GetAt(POSITION position);
+ TYPE GetAt(POSITION position) const;
+ void SetAt(POSITION pos, ARG_TYPE newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, ARG_TYPE newElement);
+ POSITION InsertAfter(POSITION position, ARG_TYPE newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(ARG_TYPE searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD, return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CList();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CList<TYPE, ARG_TYPE> inline functions
+
+template<class TYPE, class ARG_TYPE>
+inline int CList<TYPE, ARG_TYPE>::GetCount() const
+ { return m_nCount; }
+template<class TYPE, class ARG_TYPE>
+inline BOOL CList<TYPE, ARG_TYPE>::IsEmpty() const
+ { return m_nCount == 0; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+template<class TYPE, class ARG_TYPE>
+inline POSITION CList<TYPE, ARG_TYPE>::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+template<class TYPE, class ARG_TYPE>
+inline POSITION CList<TYPE, ARG_TYPE>::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline void CList<TYPE, ARG_TYPE>::SetAt(POSITION pos, ARG_TYPE newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::CList(int nBlockSize)
+{
+ ASSERT(nBlockSize > 0);
+
+ m_nCount = 0;
+ m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL;
+ m_pBlocks = NULL;
+ m_nBlockSize = nBlockSize;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::RemoveAll()
+{
+ ASSERT_VALID(this);
+
+ // destroy elements
+ CNode* pNode;
+ for (pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
+ DestructElements(&pNode->data, 1);
+
+ m_nCount = 0;
+ m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL;
+ m_pBlocks->FreeDataChain();
+ m_pBlocks = NULL;
+}
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::~CList()
+{
+ RemoveAll();
+ ASSERT(m_nCount == 0);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// Node helpers
+//
+// Implementation note: CNode's are stored in CPlex blocks and
+// chained together. Free blocks are maintained in a singly linked list
+// using the 'pNext' member of CNode with 'm_pNodeFree' as the head.
+// Used blocks are maintained in a doubly linked list using both 'pNext'
+// and 'pPrev' as links and 'm_pNodeHead' and 'm_pNodeTail'
+// as the head/tail.
+//
+// We never free a CPlex block unless the List is destroyed or RemoveAll()
+// is used - so the total number of CPlex blocks may grow large depending
+// on the maximum past size of the list.
+//
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::CNode*
+CList<TYPE, ARG_TYPE>::NewNode(CList::CNode* pPrev, CList::CNode* pNext)
+{
+ if (m_pNodeFree == NULL)
+ {
+ // add another block
+ CPlex* pNewBlock = CPlex::Create(m_pBlocks, m_nBlockSize,
+ sizeof(CNode));
+
+ // chain them into free list
+ CNode* pNode = (CNode*) pNewBlock->data();
+ // free in reverse order to make it easier to debug
+ pNode += m_nBlockSize - 1;
+ for (int i = m_nBlockSize-1; i >= 0; i--, pNode--)
+ {
+ pNode->pNext = m_pNodeFree;
+ m_pNodeFree = pNode;
+ }
+ }
+ ASSERT(m_pNodeFree != NULL); // we must have something
+
+ CList::CNode* pNode = m_pNodeFree;
+ m_pNodeFree = m_pNodeFree->pNext;
+ pNode->pPrev = pPrev;
+ pNode->pNext = pNext;
+ m_nCount++;
+ ASSERT(m_nCount > 0); // make sure we don't overflow
+
+ ConstructElements(&pNode->data, 1);
+ return pNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::FreeNode(CList::CNode* pNode)
+{
+ DestructElements(&pNode->data, 1);
+ pNode->pNext = m_pNodeFree;
+ m_pNodeFree = pNode;
+ m_nCount--;
+ ASSERT(m_nCount >= 0); // make sure we don't underflow
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::AddHead(ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ CNode* pNewNode = NewNode(NULL, m_pNodeHead);
+ pNewNode->data = newElement;
+ if (m_pNodeHead != NULL)
+ m_pNodeHead->pPrev = pNewNode;
+ else
+ m_pNodeTail = pNewNode;
+ m_pNodeHead = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::AddTail(ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ CNode* pNewNode = NewNode(m_pNodeTail, NULL);
+ pNewNode->data = newElement;
+ if (m_pNodeTail != NULL)
+ m_pNodeTail->pNext = pNewNode;
+ else
+ m_pNodeHead = pNewNode;
+ m_pNodeTail = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AddHead(CList* pNewList)
+{
+ ASSERT_VALID(this);
+
+ ASSERT(pNewList != NULL);
+ ASSERT_VALID(pNewList);
+
+ // add a list of same elements to head (maintain order)
+ POSITION pos = pNewList->GetTailPosition();
+ while (pos != NULL)
+ AddHead(pNewList->GetPrev(pos));
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AddTail(CList* pNewList)
+{
+ ASSERT_VALID(this);
+ ASSERT(pNewList != NULL);
+ ASSERT_VALID(pNewList);
+
+ // add a list of same elements
+ POSITION pos = pNewList->GetHeadPosition();
+ while (pos != NULL)
+ AddTail(pNewList->GetNext(pos));
+}
+
+template<class TYPE, class ARG_TYPE>
+TYPE CList<TYPE, ARG_TYPE>::RemoveHead()
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pNodeHead != NULL); // don't call on empty list !!!
+ ASSERT(AfxIsValidAddress(m_pNodeHead, sizeof(CNode)));
+
+ CNode* pOldNode = m_pNodeHead;
+ TYPE returnValue = pOldNode->data;
+
+ m_pNodeHead = pOldNode->pNext;
+ if (m_pNodeHead != NULL)
+ m_pNodeHead->pPrev = NULL;
+ else
+ m_pNodeTail = NULL;
+ FreeNode(pOldNode);
+ return returnValue;
+}
+
+template<class TYPE, class ARG_TYPE>
+TYPE CList<TYPE, ARG_TYPE>::RemoveTail()
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pNodeTail != NULL); // don't call on empty list !!!
+ ASSERT(AfxIsValidAddress(m_pNodeTail, sizeof(CNode)));
+
+ CNode* pOldNode = m_pNodeTail;
+ TYPE returnValue = pOldNode->data;
+
+ m_pNodeTail = pOldNode->pPrev;
+ if (m_pNodeTail != NULL)
+ m_pNodeTail->pNext = NULL;
+ else
+ m_pNodeHead = NULL;
+ FreeNode(pOldNode);
+ return returnValue;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::InsertBefore(POSITION position, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ if (position == NULL)
+ return AddHead(newElement); // insert before nothing -> head of the list
+
+ // Insert it before position
+ CNode* pOldNode = (CNode*) position;
+ CNode* pNewNode = NewNode(pOldNode->pPrev, pOldNode);
+ pNewNode->data = newElement;
+
+ if (pOldNode->pPrev != NULL)
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pPrev, sizeof(CNode)));
+ pOldNode->pPrev->pNext = pNewNode;
+ }
+ else
+ {
+ ASSERT(pOldNode == m_pNodeHead);
+ m_pNodeHead = pNewNode;
+ }
+ pOldNode->pPrev = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::InsertAfter(POSITION position, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ if (position == NULL)
+ return AddTail(newElement); // insert after nothing -> tail of the list
+
+ // Insert it before position
+ CNode* pOldNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pOldNode, sizeof(CNode)));
+ CNode* pNewNode = NewNode(pOldNode, pOldNode->pNext);
+ pNewNode->data = newElement;
+
+ if (pOldNode->pNext != NULL)
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pNext, sizeof(CNode)));
+ pOldNode->pNext->pPrev = pNewNode;
+ }
+ else
+ {
+ ASSERT(pOldNode == m_pNodeTail);
+ m_pNodeTail = pNewNode;
+ }
+ pOldNode->pNext = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::RemoveAt(POSITION position)
+{
+ ASSERT_VALID(this);
+
+ CNode* pOldNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pOldNode, sizeof(CNode)));
+
+ // remove pOldNode from list
+ if (pOldNode == m_pNodeHead)
+ {
+ m_pNodeHead = pOldNode->pNext;
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pPrev, sizeof(CNode)));
+ pOldNode->pPrev->pNext = pOldNode->pNext;
+ }
+ if (pOldNode == m_pNodeTail)
+ {
+ m_pNodeTail = pOldNode->pPrev;
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pNext, sizeof(CNode)));
+ pOldNode->pNext->pPrev = pOldNode->pPrev;
+ }
+ FreeNode(pOldNode);
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::FindIndex(int nIndex) const
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+
+ if (nIndex >= m_nCount)
+ return NULL; // went too far
+
+ CNode* pNode = m_pNodeHead;
+ while (nIndex--)
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode = pNode->pNext;
+ }
+ return (POSITION) pNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::Find(ARG_TYPE searchValue, POSITION startAfter) const
+{
+ ASSERT_VALID(this);
+
+ CNode* pNode = (CNode*) startAfter;
+ if (pNode == NULL)
+ {
+ pNode = m_pNodeHead; // start at head
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode = pNode->pNext; // start after the one specified
+ }
+
+ for (; pNode != NULL; pNode = pNode->pNext)
+ if (CompareElements(&pNode->data, &searchValue))
+ return (POSITION)pNode;
+ return NULL;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+
+ if (ar.IsStoring())
+ {
+ ar << (WORD) m_nCount;
+ for (CNode* pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ SerializeElements(ar, &pNode->data, 1);
+ }
+ }
+ else
+ {
+ WORD nNewCount;
+ ar >> nNewCount;
+
+ TYPE newData;
+ while (nNewCount--)
+ {
+ SerializeElements(ar, &newData, 1);
+ AddTail(newData);
+ }
+ }
+}
+
+#ifdef _DEBUG
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nCount << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ POSITION pos = GetHeadPosition();
+ while (pos != NULL)
+ {
+ dc << "\n";
+ DumpElements(dc, &((CList*)this)->GetNext(pos), 1);
+ }
+ }
+
+ dc << "\n";
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ if (m_nCount == 0)
+ {
+ // empty list
+ ASSERT(m_pNodeHead == NULL);
+ ASSERT(m_pNodeTail == NULL);
+ }
+ else
+ {
+ // non-empty list
+ ASSERT(AfxIsValidAddress(m_pNodeHead, sizeof(CNode)));
+ ASSERT(AfxIsValidAddress(m_pNodeTail, sizeof(CNode)));
+ }
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+class CMap : public CObject
+{
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ KEY key;
+ VALUE value;
+ };
+public:
+// Construction
+ CMap(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(ARG_KEY key, VALUE& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ VALUE& operator[](ARG_KEY key);
+
+ // add a new (key, value) pair
+ void SetAt(ARG_KEY key, ARG_VALUE newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(ARG_KEY key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, KEY& rKey, VALUE& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(ARG_KEY, UINT&) const;
+
+public:
+ ~CMap();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE> inline functions
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline int CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetCount() const
+ { return m_nCount; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::IsEmpty() const
+ { return m_nCount == 0; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::SetAt(ARG_KEY key, ARG_VALUE newValue)
+ { (*this)[key] = newValue; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline POSITION CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline UINT CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE> out-of-line functions
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CMap(int nBlockSize)
+{
+ ASSERT(nBlockSize > 0);
+
+ m_pHashTable = NULL;
+ m_nHashTableSize = 17; // default size
+ m_nCount = 0;
+ m_pFreeList = NULL;
+ m_pBlocks = NULL;
+ m_nBlockSize = nBlockSize;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::InitHashTable(
+ UINT nHashSize, BOOL bAllocNow)
+//
+// Used to force allocation of a hash table or to override the default
+// hash table size of (which is fairly small)
+{
+ ASSERT_VALID(this);
+ ASSERT(m_nCount == 0);
+ ASSERT(nHashSize > 0);
+
+ if (m_pHashTable != NULL)
+ {
+ // free hash table
+ delete[] m_pHashTable;
+ m_pHashTable = NULL;
+ }
+
+ if (bAllocNow)
+ {
+ m_pHashTable = new CAssoc* [nHashSize];
+ memset(m_pHashTable, 0, sizeof(CAssoc*) * nHashSize);
+ }
+ m_nHashTableSize = nHashSize;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::RemoveAll()
+{
+ ASSERT_VALID(this);
+
+ if (m_pHashTable != NULL)
+ {
+ // destroy elements (values and keys)
+ for (UINT nHash = 0; nHash < m_nHashTableSize; nHash++)
+ {
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL;
+ pAssoc = pAssoc->pNext)
+ {
+ DestructElements(&pAssoc->value, 1);
+ DestructElements(&pAssoc->key, 1);
+ }
+ }
+ }
+
+ // free hash table
+ delete[] m_pHashTable;
+ m_pHashTable = NULL;
+
+ m_nCount = 0;
+ m_pFreeList = NULL;
+ m_pBlocks->FreeDataChain();
+ m_pBlocks = NULL;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::~CMap()
+{
+ RemoveAll();
+ ASSERT(m_nCount == 0);
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CAssoc*
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::NewAssoc()
+{
+ if (m_pFreeList == NULL)
+ {
+ // add another block
+ CPlex* newBlock = CPlex::Create(m_pBlocks, m_nBlockSize, sizeof(CMap::CAssoc));
+ // chain them into free list
+ CMap::CAssoc* pAssoc = (CMap::CAssoc*) newBlock->data();
+ // free in reverse order to make it easier to debug
+ pAssoc += m_nBlockSize - 1;
+ for (int i = m_nBlockSize-1; i >= 0; i--, pAssoc--)
+ {
+ pAssoc->pNext = m_pFreeList;
+ m_pFreeList = pAssoc;
+ }
+ }
+ ASSERT(m_pFreeList != NULL); // we must have something
+
+ CMap::CAssoc* pAssoc = m_pFreeList;
+ m_pFreeList = m_pFreeList->pNext;
+ m_nCount++;
+ ASSERT(m_nCount > 0); // make sure we don't overflow
+ ConstructElements(&pAssoc->key, 1);
+ ConstructElements(&pAssoc->value, 1); // special construct values
+ return pAssoc;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::FreeAssoc(CMap::CAssoc* pAssoc)
+{
+ DestructElements(&pAssoc->value, 1);
+ DestructElements(&pAssoc->key, 1);
+ pAssoc->pNext = m_pFreeList;
+ m_pFreeList = pAssoc;
+ m_nCount--;
+ ASSERT(m_nCount >= 0); // make sure we don't underflow
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CAssoc*
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetAssocAt(ARG_KEY key, UINT& nHash) const
+// find association (or return NULL)
+{
+ nHash = HashKey(key) % m_nHashTableSize;
+
+ if (m_pHashTable == NULL)
+ return NULL;
+
+ // see if it exists
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL; pAssoc = pAssoc->pNext)
+ {
+ if (CompareElements(&pAssoc->key, &key))
+ return pAssoc;
+ }
+ return NULL;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Lookup(ARG_KEY key, VALUE& rValue) const
+{
+ ASSERT_VALID(this);
+
+ UINT nHash;
+ CAssoc* pAssoc = GetAssocAt(key, nHash);
+ if (pAssoc == NULL)
+ return FALSE; // not in map
+
+ rValue = pAssoc->value;
+ return TRUE;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+VALUE& CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::operator[](ARG_KEY key)
+{
+ ASSERT_VALID(this);
+
+ UINT nHash;
+ CAssoc* pAssoc;
+ if ((pAssoc = GetAssocAt(key, nHash)) == NULL)
+ {
+ if (m_pHashTable == NULL)
+ InitHashTable(m_nHashTableSize);
+
+ // it doesn't exist, add a new Association
+ pAssoc = NewAssoc();
+ pAssoc->nHashValue = nHash;
+ pAssoc->key = key;
+ // 'pAssoc->value' is a constructed object, nothing more
+
+ // put into hash table
+ pAssoc->pNext = m_pHashTable[nHash];
+ m_pHashTable[nHash] = pAssoc;
+ }
+ return pAssoc->value; // return new reference
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::RemoveKey(ARG_KEY key)
+// remove key - return TRUE if removed
+{
+ ASSERT_VALID(this);
+
+ if (m_pHashTable == NULL)
+ return FALSE; // nothing in the table
+
+ CAssoc** ppAssocPrev;
+ ppAssocPrev = &m_pHashTable[HashKey(key) % m_nHashTableSize];
+
+ CAssoc* pAssoc;
+ for (pAssoc = *ppAssocPrev; pAssoc != NULL; pAssoc = pAssoc->pNext)
+ {
+ if (CompareElements(&pAssoc->key, &key))
+ {
+ // remove it
+ *ppAssocPrev = pAssoc->pNext; // remove from list
+ FreeAssoc(pAssoc);
+ return TRUE;
+ }
+ ppAssocPrev = &pAssoc->pNext;
+ }
+ return FALSE; // not found
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetNextAssoc(POSITION& rNextPosition,
+ KEY& rKey, VALUE& rValue) const
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pHashTable != NULL); // never call on empty map
+
+ CAssoc* pAssocRet = (CAssoc*)rNextPosition;
+ ASSERT(pAssocRet != NULL);
+
+ if (pAssocRet == (CAssoc*) BEFORE_START_POSITION)
+ {
+ // find the first association
+ for (UINT nBucket = 0; nBucket < m_nHashTableSize; nBucket++)
+ if ((pAssocRet = m_pHashTable[nBucket]) != NULL)
+ break;
+ ASSERT(pAssocRet != NULL); // must find something
+ }
+
+ // find next association
+ ASSERT(AfxIsValidAddress(pAssocRet, sizeof(CAssoc)));
+ CAssoc* pAssocNext;
+ if ((pAssocNext = pAssocRet->pNext) == NULL)
+ {
+ // go to next bucket
+ for (UINT nBucket = pAssocRet->nHashValue + 1;
+ nBucket < m_nHashTableSize; nBucket++)
+ if ((pAssocNext = m_pHashTable[nBucket]) != NULL)
+ break;
+ }
+
+ rNextPosition = (POSITION) pAssocNext;
+
+ // fill in return data
+ rKey = pAssocRet->key;
+ rValue = pAssocRet->value;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+
+ if (ar.IsStoring())
+ {
+ ar << (WORD) m_nCount;
+ if (m_nCount == 0)
+ return; // nothing more to do
+
+ ASSERT(m_pHashTable != NULL);
+ for (UINT nHash = 0; nHash < m_nHashTableSize; nHash++)
+ {
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL;
+ pAssoc = pAssoc->pNext)
+ {
+ SerializeElements(ar, &pAssoc->key, 1);
+ SerializeElements(ar, &pAssoc->value, 1);
+ }
+ }
+ }
+ else
+ {
+ WORD wNewCount;
+ ar >> wNewCount;
+
+ KEY newKey;
+ VALUE newValue;
+ while (wNewCount--)
+ {
+ SerializeElements(ar, &newKey, 1);
+ SerializeElements(ar, &newValue, 1);
+ SetAt(newKey, newValue);
+ }
+ }
+}
+
+#ifdef _DEBUG
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nCount << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ // Dump in format "[key] -> value"
+ KEY key;
+ VALUE val;
+
+ POSITION pos = GetStartPosition();
+ while (pos != NULL)
+ {
+ GetNextAssoc(pos, key, val);
+ dc << "\n\t[";
+ DumpElements(dc, &key, 1);
+ dc << "] = ";
+ DumpElements(dc, &val, 1);
+ }
+ }
+
+ dc << "\n";
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ ASSERT(m_nHashTableSize > 0);
+ ASSERT(m_nCount == 0 || m_pHashTable != NULL);
+ // non-empty map should have hash table
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrArray<BASE_CLASS, TYPE>
+
+template<class BASE_CLASS, class TYPE>
+class CTypedPtrArray : public BASE_CLASS
+{
+public:
+ // Accessing elements
+ TYPE GetAt(int nIndex) const
+ { return (TYPE)BASE_CLASS::GetAt(nIndex); }
+ TYPE& ElementAt(int nIndex)
+ { return (TYPE&)BASE_CLASS::ElementAt(nIndex); }
+
+ // overloaded operator helpers
+ TYPE operator[](int nIndex) const
+ { return (TYPE)BASE_CLASS::operator[](nIndex); }
+ TYPE& operator[](int nIndex)
+ { return (TYPE&)BASE_CLASS::operator[](nIndex); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrList<BASE_CLASS, TYPE>
+
+template<class BASE_CLASS, class TYPE>
+class CTypedPtrList : public BASE_CLASS
+{
+public:
+ // peek at head or tail
+ TYPE& GetHead()
+ { return (TYPE&)BASE_CLASS::GetHead(); }
+ TYPE GetHead() const
+ { return (TYPE)BASE_CLASS::GetHead(); }
+ TYPE& GetTail()
+ { return (TYPE&)BASE_CLASS::GetTail(); }
+ TYPE GetTail() const
+ { return (TYPE)BASE_CLASS::GetTail(); }
+
+ // get head or tail (and remove it) - don't call on empty list!
+ TYPE RemoveHead()
+ { return (TYPE)BASE_CLASS::RemoveHead(); }
+ TYPE RemoveTail()
+ { return (TYPE)BASE_CLASS::RemoveTail(); }
+
+ // iteration
+ TYPE& GetNext(POSITION& rPosition)
+ { return (TYPE&)BASE_CLASS::GetNext(rPosition); }
+ TYPE GetNext(POSITION& rPosition) const
+ { return (TYPE)BASE_CLASS::GetNext(rPosition); }
+ TYPE& GetPrev(POSITION& rPosition)
+ { return (TYPE&)BASE_CLASS::GetPrev(rPosition); }
+ TYPE GetPrev(POSITION& rPosition) const
+ { return (TYPE)BASE_CLASS::GetPrev(rPosition); }
+
+ // getting/modifying an element at a given position
+ TYPE& GetAt(POSITION position)
+ { return (TYPE&)BASE_CLASS::GetAt(position); }
+ TYPE GetAt(POSITION position) const
+ { return (TYPE)BASE_CLASS::GetAt(position); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrMap<BASE_CLASS, KEY, VALUE>
+
+template<class BASE_CLASS, class KEY, class VALUE>
+class CTypedPtrMap : public BASE_CLASS
+{
+public:
+ // Lookup
+ BOOL Lookup(BASE_CLASS::BASE_ARG_KEY key, VALUE& rValue) const
+ { return BASE_CLASS::Lookup(key, (BASE_CLASS::BASE_VALUE&)rValue); }
+
+ // Lookup and add if not there
+ VALUE& operator[](BASE_CLASS::BASE_ARG_KEY key)
+ { return (VALUE&)BASE_CLASS::operator[](key); }
+
+ // iteration
+ void GetNextAssoc(POSITION& rPosition, KEY& rKey, VALUE& rValue) const
+ { BASE_CLASS::GetNextAssoc(rPosition, (BASE_CLASS::BASE_KEY&)rKey,
+ (BASE_CLASS::BASE_VALUE&)rValue); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef THIS_FILE
+#define THIS_FILE __FILE__
+
+#undef new
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#endif //__AFXTEMPL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxv_cfg.h b/public/sdk/inc/mfc30/afxv_cfg.h
new file mode 100644
index 000000000..6b6ea2818
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxv_cfg.h
@@ -0,0 +1,7 @@
+// afxv_cfg.h - target configuration control for non-Microsoft compilers
+
+// You can define _AFX_PORTABLE in order to keep the library from using
+// certain Microsoft extensions that are not commonly implemented by
+// other compilers.
+
+#define _AFX_PORTABLE
diff --git a/public/sdk/inc/mfc30/afxv_cpu.h b/public/sdk/inc/mfc30/afxv_cpu.h
new file mode 100644
index 000000000..8b83ae8eb
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxv_cpu.h
@@ -0,0 +1,65 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_cpu.h - target version/configuration control for non-Intel CPUs
+
+#if !defined(_M_MRX000) && !defined(_M_ALPHA) && !defined(_M_PPC) && !defined(_M_M68K) && !defined(_M_MPPC)
+ #error afxv_cpu.h is only for MIPS R4000, DEC AXP, Motorola M68000, and Motorola PowerPC builds
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _M_M68K
+// specific overrides for MAC_68K...
+#define AFXAPI __cdecl
+#endif //_M_M68K
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _M_MPPC
+// specific overrides for MAC_PPC...
+#define AFXAPI __cdecl
+#endif //_M_MPPC
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _MIPS_
+// specific overrides for MIPS...
+#define _AFX_PACKING 8 // default MIPS alignment (required)
+#define _AFX_NO_DB_SUPPORT
+#endif //_MIPS_
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _ALPHA_
+#if (_MSC_VER < 900)
+#pragma warning(disable: 4135) // common warning with Win32 headers
+#define _AFX_NO_NESTED_DERIVATION
+#endif
+// specific overrides for ALPHA...
+#define _AFX_PACKING 8 // default AXP alignment (required)
+extern "C" void _BPT();
+#pragma intrinsic(_BPT)
+#define AfxDebugBreak() _BPT()
+#endif //_ALPHA_
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _PPC_
+#if (_MSC_VER < 900)
+#pragma warning(disable: 4135) // common warning with Win32 headers
+#define _AFX_NO_NESTED_DERIVATION
+#endif
+// specific overrides for PPC...
+
+#define _AFX_PACKING 8 // default PPC alignment (required)
+#endif //_PPC_
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxv_dll.h b/public/sdk/inc/mfc30/afxv_dll.h
new file mode 100644
index 000000000..66f26ef37
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxv_dll.h
@@ -0,0 +1,53 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// special header for _AFXDLL variant.
+
+// default AFX_XXX_DATA and AFX_XXX_DATADEF macros for using MFC DLLs
+
+#ifndef AFX_CORE_DATA
+ #define AFX_CORE_DATA AFX_DATA_IMPORT
+ #define AFX_CORE_DATADEF
+#endif
+
+#ifndef AFX_OLE_DATA
+ #define AFX_OLE_DATA AFX_DATA_IMPORT
+ #define AFX_OLE_DATADEF
+#endif
+
+#ifndef AFX_DB_DATA
+ #define AFX_DB_DATA AFX_DATA_IMPORT
+ #define AFX_DB_DATADEF
+#endif
+
+#ifndef AFX_NET_DATA
+ #define AFX_NET_DATA AFX_DATA_IMPORT
+ #define AFX_NET_DATADEF
+#endif
+
+// default AFX_EXT_DATA and AFX_EXT_DATADEF macros for using or
+// creating MFC extension DLLs, depending on _AFX_EXT_IMPL
+// AFX_EXT_CLASS can be used to import or export entire classes
+// in an extension DLL without the hassle of creating a .DEF file
+// with decorated names.
+
+#ifndef AFX_EXT_DATA
+ #ifdef _AFXEXT
+ #define AFX_EXT_CLASS AFX_CLASS_EXPORT
+ #define AFX_EXT_API AFX_API_EXPORT
+ #define AFX_EXT_DATA AFX_DATA_EXPORT
+ #define AFX_EXT_DATADEF
+ #else
+ #define AFX_EXT_CLASS AFX_CLASS_IMPORT
+ #define AFX_EXT_API AFX_API_IMPORT
+ #define AFX_EXT_DATA AFX_DATA_IMPORT
+ #define AFX_EXT_DATADEF
+ #endif
+#endif
diff --git a/public/sdk/inc/mfc30/afxv_mac.h b/public/sdk/inc/mfc30/afxv_mac.h
new file mode 100644
index 000000000..ffc3bbf0e
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxv_mac.h
@@ -0,0 +1,57 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_mac.h - target version/configuration control for Macintosh OS
+
+#if !defined(_MAC)
+ #error afxv_mac.h is used only for Macintosh-targeted builds
+#endif
+
+#if !defined(_M_M68K) && !defined(_M_MPPC)
+ #error afxv_mac.h is used only for Motorola M68000 and Motorola PowerPC builds
+#endif
+
+#define SystemSevenOrLater 1
+
+#define AFX_DATA_IMPORT
+#define AFX_CLASS_IMPORT
+#define AFX_API_IMPORT
+
+#if defined(_68K_)
+pascal void AfxDebugger(void) = 0xA9FF;
+#else
+extern "C" pascal void Debugger(void);
+inline void AfxDebugger(void)
+ { Debugger(); }
+#endif
+
+#define AfxDebugBreak() AfxDebugger()
+
+#define _beginthreadex(p1, p2, p3, p4, p5, p6) NULL
+#define _endthreadex(p1)
+
+extern "C" size_t __cdecl wcslen(const wchar_t*);
+
+#ifndef _HYPER_DEFINED
+typedef double hyper;
+#endif
+
+#define _AFX_NO_OLE_SUPPORT
+#define _AFX_NO_DB_SUPPORT
+#define _AFX_NO_SOCKET_SUPPORT
+
+#ifndef ALL_WARNINGS
+#pragma warning(disable: 4103)
+#ifdef _PPC_
+#pragma warning(disable:4069)
+#endif
+#endif //!ALL_WARNINGS
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxv_w32.h b/public/sdk/inc/mfc30/afxv_w32.h
new file mode 100644
index 000000000..2856e24a8
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxv_w32.h
@@ -0,0 +1,201 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_w32.h - target version/configuration control for Win32
+
+#ifdef _WINDOWS_
+ #error WINDOWS.H already included. MFC apps must not #include <windows.h>
+#endif
+
+// STRICT is the only supported option (NOSTRICT is no longer supported)
+#ifndef STRICT
+#define STRICT 1
+#endif
+
+// certain parts of WINDOWS.H are necessary
+#undef NOKERNEL
+#undef NOGDI
+#undef NOUSER
+#undef NOSOUND
+#undef NOCOMM
+#undef NODRIVERS
+#undef NOLOGERROR
+#undef NOPROFILER
+#undef NOMEMMGR
+#undef NOLFILEIO
+#undef NOOPENFILE
+#undef NORESOURCE
+#undef NOATOM
+#undef NOLANGUAGE
+#undef NOLSTRING
+#undef NODBCS
+#undef NOKEYBOARDINFO
+#undef NOGDICAPMASKS
+#undef NOCOLOR
+#undef NOGDIOBJ
+#undef NODRAWTEXT
+#undef NOTEXTMETRIC
+#undef NOSCALABLEFONT
+#undef NOBITMAP
+#undef NORASTEROPS
+#undef NOMETAFILE
+#undef NOSYSMETRICS
+#undef NOSYSTEMPARAMSINFO
+#undef NOMSG
+#undef NOWINSTYLES
+#undef NOWINOFFSETS
+#undef NOSHOWWINDOW
+#undef NODEFERWINDOWPOS
+#undef NOVIRTUALKEYCODES
+#undef NOKEYSTATES
+#undef NOWH
+#undef NOMENUS
+#undef NOSCROLL
+#undef NOCLIPBOARD
+#undef NOICONS
+#undef NOMB
+#undef NOSYSCOMMANDS
+#undef NOMDI
+#undef NOCTLMGR
+#undef NOWINMESSAGES
+
+#ifndef WIN32
+#define WIN32
+#endif
+
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+
+#ifdef _MAC
+#define _WIN32NLS
+#define _WIN32REG
+#define _WLM_NOFORCE_LIBS
+#if defined(_WINDLL) || defined(_AFXDLL)
+#define _WLMDLL
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+
+#ifndef ALL_WARNINGS
+#pragma warning(disable: 4201) // winnt.h uses nameless structs
+#endif
+
+#ifdef _UNICODE
+#ifndef UNICODE
+#define UNICODE // UNICODE is used by Windows headers
+#endif
+#endif
+
+#ifdef UNICODE
+#ifndef _UNICODE
+#define _UNICODE // _UNICODE is used by C-runtime/MFC headers
+#endif
+#endif
+
+#include <windows.h>
+
+#ifndef WM_NOTIFY
+// WM_NOTIFY is new in later versions of Win32
+#define WM_NOTIFY 0x004e
+typedef struct tagNMHDR
+{
+ HWND hwndFrom;
+ UINT idFrom;
+ UINT code;
+} NMHDR;
+#endif //!WM_NOTIFY
+
+#ifndef _INC_COMMCTRL
+ #if (WINVER < 0x400)
+ #define _REDEF_WINVER
+ #undef WINVER
+ #define WINVER 0x0400
+ #endif
+ #include <commctrl.h>
+ #ifdef _REDEF_WINVER
+ #undef _REDEF_WINVER
+ #undef WINVER
+ #define WINVER 0x030A
+ #endif
+#endif
+
+#ifndef EXPORT
+#define EXPORT
+#endif
+
+#include <tchar.h> // used for ANSI v.s. UNICODE abstraction
+#ifdef _MBCS
+#include <mbctype.h>
+#include <mbstring.h>
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Now for the Windows API specific parts
+
+// WM_CTLCOLOR for 16 bit API compatability
+#define WM_CTLCOLOR 0x0019
+
+// Win32 uses macros with parameters for this, which breaks C++ code.
+#ifdef GetWindowTask
+#undef GetWindowTask
+inline HTASK GetWindowTask(HWND hWnd)
+ { return (HTASK)::GetWindowThreadProcessId(hWnd, NULL); }
+#endif
+
+// Win32 uses macros with parameters for this, which breaks C++ code.
+#ifdef GetNextWindow
+#undef GetNextWindow
+inline HWND GetNextWindow(HWND hWnd, UINT nDirection)
+ { return ::GetWindow(hWnd, nDirection); }
+#endif
+
+// Win32 now includes lstrcpyn, but original Windows/NT didn't
+#undef lstrcpyn
+#define lstrcpyn afx_lstrcpyn
+LPCTSTR WINAPI afx_lstrcpyn(LPTSTR, LPCTSTR, int);
+
+// Avoid Windows NT 3.1 bug in FindResource
+#undef FindResource
+#define FindResource AfxFindResource
+HRSRC WINAPI
+AfxFindResource(HINSTANCE hInstance, LPCTSTR lpstrName, LPCTSTR lpstrType);
+
+// Avoid Win95 mapping CToolBar::DrawState to DrawState[A/W]
+#ifdef DrawState
+#undef DrawState
+inline BOOL WINAPI DrawState(HDC hdc, HBRUSH hbr, DRAWSTATEPROC lpOutputFunc,
+ LPARAM lData, WPARAM wData, int x, int y, int cx, int cy, UINT fuFlags)
+#ifdef UNICODE
+ { return ::DrawStateW(hdc, hbr, lpOutputFunc, lData, wData, x, y, cx, cy,
+ fuFlags); }
+#else
+ { return ::DrawStateA(hdc, hbr, lpOutputFunc, lData, wData, x, y, cx, cy,
+ fuFlags); }
+#endif
+#endif
+
+// Avoid Win95 mapping CStatusBar::DrawStatusText to DrawStatusText[A/W]
+#ifdef DrawStatusText
+#undef DrawStatusText
+inline void WINAPI DrawStatusText(HDC hDC, LPRECT lprc, LPTSTR szText,
+ UINT uFlags)
+#ifdef UNICODE
+ { ::DrawStatusTextW(hDC, lprc, szText, uFlags); }
+#else
+ { ::DrawStatusTextA(hDC, lprc, szText, uFlags); }
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxver_.h b/public/sdk/inc/mfc30/afxver_.h
new file mode 100644
index 000000000..b8c9f855a
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxver_.h
@@ -0,0 +1,324 @@
+
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxver_.h - target version/configuration control
+
+/////////////////////////////////////////////////////////////////////////////
+// Master version numbers
+
+#define _AFX 1 // Microsoft Application Framework Classes
+#define _MFC_VER 0x0310 // Microsoft Foundation Classes 3.10
+
+/////////////////////////////////////////////////////////////////////////////
+// Default swap tuning for AFX library
+
+#ifndef _68K_
+ #define _TEXTSEG(name) ".text$" #name
+#else
+ #define _TEXTSEG(name) #name, "swappable"
+#endif
+
+// Most segments are tuned via function order list (DLL version)
+#ifndef _AFX_FUNCTION_ORDER
+#define AFX_CORE1_SEG _TEXTSEG(AFX_CORE1) // core functionality
+#define AFX_CORE2_SEG _TEXTSEG(AFX_CORE2) // more core functionality
+#define AFX_CORE3_SEG _TEXTSEG(AFX_CORE3) // more core functionality
+#define AFX_CORE4_SEG _TEXTSEG(AFX_CORE4) // more core functionality
+#define AFX_AUX_SEG _TEXTSEG(AFX_AUX) // auxilliary functionality
+#define AFX_COLL_SEG _TEXTSEG(AFX_COL1) // collections
+#define AFX_COLL2_SEG _TEXTSEG(AFX_COL2) // more collections
+#define AFX_OLE_SEG _TEXTSEG(AFX_OLE1) // OLE support
+#define AFX_OLE2_SEG _TEXTSEG(AFX_OLE2) // more OLE support
+#define AFX_OLE3_SEG _TEXTSEG(AFX_OLE3) // and more OLE support
+#define AFX_OLE4_SEG _TEXTSEG(AFX_OLE4) // and more OLE support
+#define AFX_OLE5_SEG _TEXTSEG(AFX_OLE5) // and even more OLE support
+#define AFX_PRINT_SEG _TEXTSEG(AFX_PRNT) // Printing functionality
+#define AFX_DBG1_SEG _TEXTSEG(AFX_DBG1) // inlines go here in _DEBUG
+#define AFX_DBG2_SEG _TEXTSEG(AFX_DBG2) // inlines go here in _DEBUG
+#define AFX_VDEL_SEG _TEXTSEG(AFX_VDEL) // vector deleting destructors
+#define AFX_TERM_SEG _TEXTSEG(AFX_TERM) // cleanup routines
+#define AFX_MAPI_SEG _TEXTSEG(AFX_MAPI) // simple MAPI support
+#define AFX_SOCK_SEG _TEXTSEG(AFX_SOCK) // windows sockets support
+#else
+#define AFX_CORE1_SEG // core functionality
+#define AFX_CORE2_SEG // more core functionality
+#define AFX_CORE3_SEG // more core functionality
+#define AFX_CORE4_SEG // more core functionality
+#define AFX_AUX_SEG // auxilliary functionality
+#define AFX_COLL_SEG // collections
+#define AFX_COLL2_SEG // more collections
+#define AFX_OLE_SEG // OLE support
+#define AFX_OLE2_SEG // more OLE support
+#define AFX_OLE3_SEG // and more OLE support
+#define AFX_OLE4_SEG // and more OLE support
+#define AFX_OLE5_SEG // and even more OLE support
+#define AFX_PRINT_SEG // Printing functionality
+#define AFX_DBG1_SEG // inlines go here in _DEBUG
+#define AFX_DBG2_SEG // inlines go here in _DEBUG
+#define AFX_VDEL_SEG // vector deleting destructors
+#define AFX_TERM_SEG // cleanup routines
+#define AFX_MAPI_SEG // simple MAPI support
+#define AFX_SOCK_SEG // windows sockets support
+#endif
+
+// AFX_INIT_SEG is hand tuned even in DLL version
+#define AFX_INIT_SEG _TEXTSEG(AFX_INIT) // initialization
+
+/////////////////////////////////////////////////////////////////////////////
+// For target version (one of)
+// _CUSTOM : for custom configurations (causes afxv_cfg.h to be included)
+//
+// Additional build options:
+// _DEBUG debug versions (full diagnostics)
+// _WINDLL DLL version, used in conjunction with _USRDLL
+// _USRDLL Statically linked DLL version
+// _AFXDLL Use shared MFC DLL
+// _AFXEXT extension DLL version, implies _AFXDLL
+// _AFXCTL OLE Custom Controls runtime library
+
+#ifndef _DEBUG
+ #define _AFX_ENABLE_INLINES
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Special configurations
+
+// _AFXEXT implies _AFXDLL
+#if defined(_AFXEXT) && !defined(_AFXDLL)
+ #define _AFXDLL
+#endif
+
+#if defined(_WINDLL) && !defined(_USRDLL) && !defined(_AFXDLL)
+ #error Please define one of _AFXDLL, or _USRDLL with _WINDLL
+#endif
+
+#if defined(_AFXDLL) && defined(_USRDLL)
+ #error Please define only one of _AFXDLL or _USRDLL
+#endif
+
+#if defined(_USRDLL) && !defined(_WINDLL)
+ #error Please define _WINDLL along with _USRDLL
+#endif
+
+#if defined(_AFXCTL) && !defined(_AFXDLL)
+ #error Please define _AFXDLL along with _AFXCTL
+#endif
+
+#ifndef _MAC
+#if defined(_AFXDLL) && !defined(_DLL)
+ #error Please use the /MD switch for _AFXDLL builds
+#endif
+
+#if defined(_AFXDLL) && !defined(_MT)
+ #error Please use the /MD switch (multithreaded DLL C-runtime)
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// special include files
+
+#include <afxv_w32.h>
+
+// Include any non-Intel platform specific items
+#ifndef _X86_
+ #include <afxv_cpu.h>
+#endif
+
+// Include any non-Windows OS-specific items
+#ifdef _MAC
+ #include <afxv_mac.h>
+#endif
+
+#ifdef _CUSTOM
+// Put any custom configuration items in afxv_cfg.h
+ #include <afxv_cfg.h>
+#endif
+
+// setup default packing value
+#ifndef _AFX_PACKING
+ #define _AFX_PACKING 4 // default packs structs at 4 bytes
+#endif
+
+#ifdef _AFXDLL
+// stand alone DLL (_WINDLL defined for DLL, not defined for app using DLL)
+ #include <afxv_dll.h>
+#endif
+
+// Define this virtual key for use by status bar
+#ifndef VK_KANA
+#define VK_KANA 0x15
+#endif
+
+#if defined(_UNICODE)
+ #define _AFX_NO_DB_SUPPORT
+#endif
+
+#define _AFX_NO_DB_SUPPORT
+#define _AFX_OLD_EXCEPTIONS
+
+#define _istlead(_c) (0)
+
+#ifdef _UNICODE
+ #define _ttoi _wtoi
+// #define _tcsftime wscftime
+ typedef wchar_t _TUCHAR;
+ #define _tWinMain wWinMain
+#else
+ #define _ttoi atoi
+// #define _tcsftime strftime
+ typedef unsigned char _TUCHAR;
+ #define _tWinMain WinMain
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Special AfxDebugBreak: used to break into debugger at critical times
+
+#ifndef AfxDebugBreak
+// by default, debug break is asm int 3, or a call to DebugBreak, or nothing
+#if defined(_M_IX86) && !defined(_AFX_PORTABLE)
+#define AfxDebugBreak() _asm { int 3 }
+#else
+#define AfxDebugBreak() DebugBreak()
+#endif
+#endif
+
+#ifndef _DEBUG
+#ifdef AfxDebugBreak
+#undef AfxDebugBreak
+#endif
+#define AfxDebugBreak()
+#endif // _DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard preprocessor symbols if not already defined
+/////////////////////////////////////////////////////////////////////////////
+
+// SIZE_T_MAX is used by the collection classes
+#ifndef SIZE_T_MAX
+ #define SIZE_T_MAX UINT_MAX
+#endif
+
+// PASCAL is used for static member functions
+#ifndef PASCAL
+ #define PASCAL
+#endif
+
+// CDECL and EXPORT are defined in case WINDOWS.H doesn't
+#ifndef CDECL
+ #define CDECL __cdecl
+#endif
+
+#ifndef EXPORT
+ #define EXPORT
+#endif
+
+// UNALIGNED is used for unaligned data access (in CArchive mostly)
+#ifndef UNALIGNED
+ #define UNALIGNED
+#endif
+
+// AFXAPI is used on global public functions
+#ifndef AFXAPI
+ #define AFXAPI __stdcall
+#endif
+
+// AFX_CDECL is used for rare functions taking variable arguments
+#ifndef AFX_CDECL
+ #define AFX_CDECL __cdecl
+#endif
+
+// AFX_EXPORT is used for functions which need to be exported
+#ifndef AFX_EXPORT
+ #define AFX_EXPORT EXPORT
+#endif
+
+// The following macros are used to enable export/import
+
+// for data
+#ifndef AFX_DATA_EXPORT
+ #define AFX_DATA_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_DATA_IMPORT
+ #define AFX_DATA_IMPORT __declspec(dllimport)
+#endif
+
+// for classes
+#ifndef AFX_CLASS_EXPORT
+ #define AFX_CLASS_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_CLASS_IMPORT
+ #define AFX_CLASS_IMPORT __declspec(dllimport)
+#endif
+
+// for global APIs
+#ifndef AFX_API_EXPORT
+ #define AFX_API_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_API_IMPORT
+ #define AFX_API_IMPORT __declspec(dllimport)
+#endif
+
+// The following macros are used on data declarations/definitions
+// (they are redefined for extension DLLs and the shared MFC DLL)
+#define AFX_DATA
+#define AFX_DATADEF
+
+// used when building the "core" MFC30.DLL
+#ifndef AFX_CORE_DATA
+ #define AFX_CORE_DATA
+ #define AFX_CORE_DATADEF
+#endif
+
+// used when building the MFC/OLE support MFCO30.DLL
+#ifndef AFX_OLE_DATA
+ #define AFX_OLE_DATA
+ #define AFX_OLE_DATADEF
+#endif
+
+// used when building the MFC/DB support MFCD30.DLL
+#ifndef AFX_DB_DATA
+ #define AFX_DB_DATA
+ #define AFX_DB_DATADEF
+#endif
+
+// used when building the MFC/NET support MFCN30.DLL
+#ifndef AFX_NET_DATA
+ #define AFX_NET_DATA
+ #define AFX_NET_DATADEF
+#endif
+
+// used when building extension DLLs
+#ifndef AFX_EXT_DATA
+ #define AFX_EXT_DATA
+ #define AFX_EXT_DATADEF
+ #define AFX_EXT_CLASS
+ #define AFX_EXT_API
+#endif
+
+// BASED_XXXX macros are provided for backward compatibility
+#ifndef BASED_CODE
+ #define BASED_CODE
+#endif
+
+#ifndef BASED_DEBUG
+ #define BASED_DEBUG
+#endif
+
+#ifndef BASED_STACK
+ #define BASED_STACK
+#endif
+
+// setup default code segment
+#ifdef AFX_DEF_SEG
+ #pragma code_seg(AFX_DEF_SEG)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxwin.h b/public/sdk/inc/mfc30/afxwin.h
new file mode 100644
index 000000000..fabdec92f
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxwin.h
@@ -0,0 +1,3755 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXWIN_H__
+#ifndef RC_INVOKED
+#define __AFXWIN_H__
+
+/////////////////////////////////////////////////////////////////////////////
+// Make sure 'afx.h' is included first
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+// Note: WINDOWS.H already included from AFXV_W32.H
+
+#include <shellapi.h>
+
+#ifndef __AFXRES_H__
+ #include <afxres.h> // standard resource IDs
+#endif
+
+#ifndef __AFXCOLL_H__
+ #include <afxcoll.h> // standard collections
+#endif
+
+#ifdef _INC_WINDOWSX
+// The following names from WINDOWSX.H collide with names in this header
+#undef SubclassWindow
+#undef CopyRgn
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+class CSize;
+class CPoint;
+class CRect;
+
+//CObject
+ //CException
+ class CResourceException;// Win resource failure exception
+ class CUserException; // Message Box alert and stop operation
+
+ class CGdiObject; // CDC drawing tool
+ class CPen; // a pen / HPEN wrapper
+ class CBrush; // a brush / HBRUSH wrapper
+ class CFont; // a font / HFONT wrapper
+ class CBitmap; // a bitmap / HBITMAP wrapper
+ class CPalette; // a palette / HPALLETE wrapper
+ class CRgn; // a region / HRGN wrapper
+
+ class CDC; // a Display Context / HDC wrapper
+ class CClientDC; // CDC for client of window
+ class CWindowDC; // CDC for entire window
+ class CPaintDC; // embeddable BeginPaint struct helper
+
+ class CMenu; // a menu / HMENU wrapper
+
+ class CCmdTarget; // a target for user commands
+ class CWnd; // a window / HWND wrapper
+ class CDialog; // a dialog
+
+ // standard windows controls
+ class CStatic; // Static control
+ class CButton; // Button control
+ class CListBox; // ListBox control
+ class CComboBox; // ComboBox control
+ class CEdit; // Edit control
+ class CScrollBar; // ScrollBar control
+
+ // frame windows
+ class CFrameWnd; // standard SDI frame
+#ifndef _AFXCTL
+ class CMDIFrameWnd; // standard MDI frame
+ class CMDIChildWnd; // standard MDI child
+#endif
+ class CMiniFrameWnd;// half-height caption frame wnd
+
+ // views on a document
+ class CView; // a view on a document
+ class CScrollView; // a scrolling view
+
+ class CWinThread; // thread base class
+ class CWinApp; // application base class
+
+ class CDocTemplate; // template for document creation
+#ifndef _AFXCTL
+ class CSingleDocTemplate;// SDI support
+ class CMultiDocTemplate; // MDI support
+#endif
+
+ class CDocument; // main document abstraction
+
+
+// Helper classes
+class CCmdUI; // Menu/button enabling
+class CDataExchange; // Data exchange and validation context
+
+/////////////////////////////////////////////////////////////////////////////
+
+// Type modifier for message handlers
+#ifndef afx_msg
+#define afx_msg // intentional placeholder
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CSize - An extent, similar to Windows SIZE structure.
+
+class CSize : public tagSIZE
+{
+public:
+
+// Constructors
+ CSize();
+ CSize(int initCX, int initCY);
+ CSize(SIZE initSize);
+ CSize(POINT initPt);
+ CSize(DWORD dwSize);
+
+// Operations
+ BOOL operator==(SIZE size) const;
+ BOOL operator!=(SIZE size) const;
+ void operator+=(SIZE size);
+ void operator-=(SIZE size);
+
+// Operators returning CSize values
+ CSize operator+(SIZE size) const;
+ CSize operator-(SIZE size) const;
+ CSize operator-() const;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPoint - A 2-D point, similar to Windows POINT structure.
+
+class CPoint : public tagPOINT
+{
+public:
+
+// Constructors
+ CPoint();
+ CPoint(int initX, int initY);
+ CPoint(POINT initPt);
+ CPoint(SIZE initSize);
+ CPoint(DWORD dwPoint);
+
+// Operations
+ void Offset(int xOffset, int yOffset);
+ void Offset(POINT point);
+ void Offset(SIZE size);
+ BOOL operator==(POINT point) const;
+ BOOL operator!=(POINT point) const;
+ void operator+=(SIZE size);
+ void operator-=(SIZE size);
+
+// Operators returning CPoint values
+ CPoint operator+(SIZE size) const;
+ CPoint operator-(SIZE size) const;
+ CPoint operator-() const;
+
+// Operators returning CSize values
+ CSize operator-(POINT point) const;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRect - A 2-D rectangle, similar to Windows RECT structure.
+
+typedef const RECT* LPCRECT; // pointer to read/only RECT
+
+class CRect : public tagRECT
+{
+public:
+
+// Constructors
+ CRect();
+ CRect(int l, int t, int r, int b);
+ CRect(const RECT& srcRect);
+ CRect(LPCRECT lpSrcRect);
+ CRect(POINT point, SIZE size);
+
+// Attributes (in addition to RECT members)
+ int Width() const;
+ int Height() const;
+ CSize Size() const;
+ CPoint& TopLeft();
+ CPoint& BottomRight();
+
+ // convert between CRect and LPRECT/LPCRECT (no need for &)
+ operator LPRECT();
+ operator LPCRECT() const;
+
+ BOOL IsRectEmpty() const;
+ BOOL IsRectNull() const;
+ BOOL PtInRect(POINT point) const;
+
+// Operations
+ void SetRect(int x1, int y1, int x2, int y2);
+ void SetRectEmpty();
+ void CopyRect(LPCRECT lpSrcRect);
+ BOOL EqualRect(LPCRECT lpRect) const;
+
+ void InflateRect(int x, int y);
+ void InflateRect(SIZE size);
+ void OffsetRect(int x, int y);
+ void OffsetRect(SIZE size);
+ void OffsetRect(POINT point);
+ void NormalizeRect();
+
+ // operations that fill '*this' with result
+ BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2);
+ BOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2);
+ BOOL SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2);
+
+// Additional Operations
+ void operator=(const RECT& srcRect);
+ BOOL operator==(const RECT& rect) const;
+ BOOL operator!=(const RECT& rect) const;
+ void operator+=(POINT point);
+ void operator-=(POINT point);
+ void operator&=(const RECT& rect);
+ void operator|=(const RECT& rect);
+
+// Operators returning CRect values
+ CRect operator+(POINT point) const;
+ CRect operator-(POINT point) const;
+ CRect operator&(const RECT& rect2) const;
+ CRect operator|(const RECT& rect2) const;
+};
+
+#ifdef _DEBUG
+// Diagnostic Output
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, SIZE size);
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, POINT point);
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, const RECT& rect);
+#endif //_DEBUG
+
+// Serialization
+CArchive& AFXAPI operator<<(CArchive& ar, SIZE size);
+CArchive& AFXAPI operator<<(CArchive& ar, POINT point);
+CArchive& AFXAPI operator<<(CArchive& ar, const RECT& rect);
+CArchive& AFXAPI operator>>(CArchive& ar, SIZE& size);
+CArchive& AFXAPI operator>>(CArchive& ar, POINT& point);
+CArchive& AFXAPI operator>>(CArchive& ar, RECT& rect);
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard exceptions
+
+class CResourceException : public CException // resource failure
+{
+ DECLARE_DYNAMIC(CResourceException)
+public:
+ CResourceException();
+
+// Implementation
+ CResourceException(BOOL bAutoDelete);
+ virtual ~CResourceException();
+};
+
+class CUserException : public CException // general user visible alert
+{
+ DECLARE_DYNAMIC(CUserException)
+public:
+ CUserException();
+
+// Implementation
+ CUserException(BOOL bAutoDelete);
+ virtual ~CUserException();
+};
+
+void AFXAPI AfxThrowResourceException();
+void AFXAPI AfxThrowUserException();
+
+/////////////////////////////////////////////////////////////////////////////
+// CGdiObject abstract class for CDC SelectObject
+
+class CGdiObject : public CObject
+{
+ DECLARE_DYNCREATE(CGdiObject)
+public:
+
+// Attributes
+ HGDIOBJ m_hObject; // must be first data member
+ HGDIOBJ GetSafeHandle() const;
+
+ static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HGDIOBJ hObject);
+ HGDIOBJ Detach();
+
+// Constructors
+ CGdiObject(); // must Create a derived class object
+ BOOL DeleteObject();
+
+// Operations
+ int GetObject(int nCount, LPVOID lpObject) const;
+ UINT GetObjectType() const;
+ BOOL CreateStockObject(int nIndex);
+ BOOL UnrealizeObject();
+
+// Implementation
+public:
+ virtual ~CGdiObject();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CGdiObject subclasses (drawing tools)
+
+class CPen : public CGdiObject
+{
+ DECLARE_DYNAMIC(CPen)
+
+public:
+ static CPen* PASCAL FromHandle(HPEN hPen);
+
+// Constructors
+ CPen();
+ CPen(int nPenStyle, int nWidth, COLORREF crColor);
+#ifndef _MAC
+ CPen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount = 0, const DWORD* lpStyle = NULL);
+#endif
+ BOOL CreatePen(int nPenStyle, int nWidth, COLORREF crColor);
+#ifndef _MAC
+ BOOL CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount = 0, const DWORD* lpStyle = NULL);
+#endif
+ BOOL CreatePenIndirect(LPLOGPEN lpLogPen);
+
+// Implementation
+public:
+ virtual ~CPen();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CBrush : public CGdiObject
+{
+ DECLARE_DYNAMIC(CBrush)
+
+public:
+ static CBrush* PASCAL FromHandle(HBRUSH hBrush);
+
+// Constructors
+ CBrush();
+ CBrush(COLORREF crColor); // CreateSolidBrush
+ CBrush(int nIndex, COLORREF crColor); // CreateHatchBrush
+ CBrush(CBitmap* pBitmap); // CreatePatternBrush
+
+ BOOL CreateSolidBrush(COLORREF crColor);
+ BOOL CreateHatchBrush(int nIndex, COLORREF crColor);
+ BOOL CreateBrushIndirect(LPLOGBRUSH lpLogBrush);
+ BOOL CreatePatternBrush(CBitmap* pBitmap);
+ BOOL CreateDIBPatternBrush(HGLOBAL hPackedDIB, UINT nUsage);
+ BOOL CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage);
+
+// Implementation
+public:
+ virtual ~CBrush();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CFont : public CGdiObject
+{
+ DECLARE_DYNAMIC(CFont)
+
+public:
+ static CFont* PASCAL FromHandle(HFONT hFont);
+
+// Constructors
+ CFont();
+ BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
+ BOOL CreateFont(int nHeight, int nWidth, int nEscapement,
+ int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline,
+ BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
+ BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily,
+ LPCTSTR lpszFacename);
+// Implementation
+public:
+ virtual ~CFont();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CBitmap : public CGdiObject
+{
+ DECLARE_DYNAMIC(CBitmap)
+
+public:
+ static CBitmap* PASCAL FromHandle(HBITMAP hBitmap);
+
+// Constructors
+ CBitmap();
+
+ BOOL LoadBitmap(LPCTSTR lpszResourceName);
+ BOOL LoadBitmap(UINT nIDResource);
+#ifndef _MAC
+ BOOL LoadOEMBitmap(UINT nIDBitmap); // for OBM_/OCR_/OIC_
+#endif
+ BOOL CreateBitmap(int nWidth, int nHeight, UINT nPlanes, UINT nBitcount,
+ const void* lpBits);
+ BOOL CreateBitmapIndirect(LPBITMAP lpBitmap);
+ BOOL CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight);
+ BOOL CreateDiscardableBitmap(CDC* pDC, int nWidth, int nHeight);
+
+// Operations
+ DWORD SetBitmapBits(DWORD dwCount, const void* lpBits);
+ DWORD GetBitmapBits(DWORD dwCount, LPVOID lpBits) const;
+ CSize SetBitmapDimension(int nWidth, int nHeight);
+ CSize GetBitmapDimension() const;
+
+// Implementation
+public:
+ virtual ~CBitmap();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CPalette : public CGdiObject
+{
+ DECLARE_DYNAMIC(CPalette)
+
+public:
+ static CPalette* PASCAL FromHandle(HPALETTE hPalette);
+
+// Constructors
+ CPalette();
+ BOOL CreatePalette(LPLOGPALETTE lpLogPalette);
+#ifndef _MAC
+ BOOL CreateHalftonePalette(CDC* pDC);
+#endif
+
+// Operations
+ UINT GetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors) const;
+ UINT SetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors);
+#ifndef _MAC
+ void AnimatePalette(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors);
+#endif
+ UINT GetNearestPaletteIndex(COLORREF crColor) const;
+ BOOL ResizePalette(UINT nNumEntries);
+
+// Implementation
+ virtual ~CPalette();
+};
+
+class CRgn : public CGdiObject
+{
+ DECLARE_DYNAMIC(CRgn)
+
+public:
+ static CRgn* PASCAL FromHandle(HRGN hRgn);
+
+// Constructors
+ CRgn();
+ BOOL CreateRectRgn(int x1, int y1, int x2, int y2);
+ BOOL CreateRectRgnIndirect(LPCRECT lpRect);
+ BOOL CreateEllipticRgn(int x1, int y1, int x2, int y2);
+ BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);
+ BOOL CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode);
+#ifndef _MAC
+ BOOL CreatePolyPolygonRgn(LPPOINT lpPoints, LPINT lpPolyCounts,
+ int nCount, int nPolyFillMode);
+#endif
+ BOOL CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3);
+#ifndef _MAC
+ BOOL CreateFromPath(CDC* pDC);
+ BOOL CreateFromData(const XFORM* lpXForm, int nCount,
+ const RGNDATA* pRgnData);
+#endif
+
+// Operations
+ void SetRectRgn(int x1, int y1, int x2, int y2);
+ void SetRectRgn(LPCRECT lpRect);
+ int CombineRgn(CRgn* pRgn1, CRgn* pRgn2, int nCombineMode);
+ int CopyRgn(CRgn* pRgnSrc);
+ BOOL EqualRgn(CRgn* pRgn) const;
+ int OffsetRgn(int x, int y);
+ int OffsetRgn(POINT point);
+ int GetRgnBox(LPRECT lpRect) const;
+ BOOL PtInRegion(int x, int y) const;
+ BOOL PtInRegion(POINT point) const;
+ BOOL RectInRegion(LPCRECT lpRect) const;
+#ifndef _MAC
+ int GetRegionData(LPRGNDATA lpRgnData, int nCount) const;
+#endif
+
+// Implementation
+ virtual ~CRgn();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// The device context
+
+class CDC : public CObject
+{
+ DECLARE_DYNCREATE(CDC)
+public:
+
+// Attributes
+ HDC m_hDC; // The output DC (must be first data member)
+ HDC m_hAttribDC; // The Attribute DC
+ HDC GetSafeHdc() const; // Always returns the Output DC
+
+ static CDC* PASCAL FromHandle(HDC hDC);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HDC hDC); // Attach/Detach affects only the Output DC
+ HDC Detach();
+
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+ virtual void SetOutputDC(HDC hDC); // Set the Output DC
+ virtual void ReleaseAttribDC(); // Release the Attribute DC
+ virtual void ReleaseOutputDC(); // Release the Output DC
+
+ BOOL IsPrinting() const; // TRUE if being used for printing
+
+ CPen* GetCurrentPen() const;
+ CBrush* GetCurrentBrush() const;
+ CPalette* GetCurrentPalette() const;
+ CFont* GetCurrentFont() const;
+ CBitmap* GetCurrentBitmap() const;
+
+// Constructors
+ CDC();
+ BOOL CreateDC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
+ LPCTSTR lpszOutput, const void* lpInitData);
+ BOOL CreateIC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
+ LPCTSTR lpszOutput, const void* lpInitData);
+ BOOL CreateCompatibleDC(CDC* pDC);
+
+ BOOL DeleteDC();
+
+// Device-Context Functions
+ virtual int SaveDC();
+ virtual BOOL RestoreDC(int nSavedDC);
+ int GetDeviceCaps(int nIndex) const;
+#ifndef _MAC
+ UINT SetBoundsRect(LPCRECT lpRectBounds, UINT flags);
+ UINT GetBoundsRect(LPRECT lpRectBounds, UINT flags);
+#endif
+ BOOL ResetDC(const DEVMODE* lpDevMode);
+
+// Drawing-Tool Functions
+ CPoint GetBrushOrg() const;
+ CPoint SetBrushOrg(int x, int y);
+ CPoint SetBrushOrg(POINT point);
+ int EnumObjects(int nObjectType,
+ int (CALLBACK EXPORT* lpfn)(LPVOID, LPARAM), LPARAM lpData);
+
+// Type-safe selection helpers
+public:
+ virtual CGdiObject* SelectStockObject(int nIndex);
+ CPen* SelectObject(CPen* pPen);
+ CBrush* SelectObject(CBrush* pBrush);
+ virtual CFont* SelectObject(CFont* pFont);
+ CBitmap* SelectObject(CBitmap* pBitmap);
+ int SelectObject(CRgn* pRgn); // special return for regions
+ CGdiObject* SelectObject(CGdiObject* pObject);
+ // CGdiObject* provided so compiler doesn't use SelectObject(HGDIOBJ)
+
+// Color and Color Palette Functions
+ COLORREF GetNearestColor(COLORREF crColor) const;
+ CPalette* SelectPalette(CPalette* pPalette, BOOL bForceBackground);
+ UINT RealizePalette();
+ void UpdateColors();
+
+// Drawing-Attribute Functions
+ COLORREF GetBkColor() const;
+ int GetBkMode() const;
+ int GetPolyFillMode() const;
+ int GetROP2() const;
+ int GetStretchBltMode() const;
+ COLORREF GetTextColor() const;
+
+ virtual COLORREF SetBkColor(COLORREF crColor);
+ int SetBkMode(int nBkMode);
+ int SetPolyFillMode(int nPolyFillMode);
+ int SetROP2(int nDrawMode);
+ int SetStretchBltMode(int nStretchMode);
+ virtual COLORREF SetTextColor(COLORREF crColor);
+
+#ifndef _MAC
+ BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
+ BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
+#endif
+
+// Mapping Functions
+ int GetMapMode() const;
+ CPoint GetViewportOrg() const;
+ virtual int SetMapMode(int nMapMode);
+ // Viewport Origin
+ virtual CPoint SetViewportOrg(int x, int y);
+ CPoint SetViewportOrg(POINT point);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+
+ // Viewport Extent
+ CSize GetViewportExt() const;
+ virtual CSize SetViewportExt(int cx, int cy);
+ CSize SetViewportExt(SIZE size);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+
+ // Window Origin
+ CPoint GetWindowOrg() const;
+ CPoint SetWindowOrg(int x, int y);
+ CPoint SetWindowOrg(POINT point);
+ CPoint OffsetWindowOrg(int nWidth, int nHeight);
+
+ // Window extent
+ CSize GetWindowExt() const;
+ virtual CSize SetWindowExt(int cx, int cy);
+ CSize SetWindowExt(SIZE size);
+ virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
+
+// Coordinate Functions
+ void DPtoLP(LPPOINT lpPoints, int nCount = 1) const;
+ void DPtoLP(LPRECT lpRect) const;
+ void DPtoLP(LPSIZE lpSize) const;
+ void LPtoDP(LPPOINT lpPoints, int nCount = 1) const;
+ void LPtoDP(LPRECT lpRect) const;
+ void LPtoDP(LPSIZE lpSize) const;
+
+// Special Coordinate Functions (useful for dealing with metafiles and OLE)
+ void DPtoHIMETRIC(LPSIZE lpSize) const;
+ void LPtoHIMETRIC(LPSIZE lpSize) const;
+ void HIMETRICtoDP(LPSIZE lpSize) const;
+ void HIMETRICtoLP(LPSIZE lpSize) const;
+
+// Region Functions
+ BOOL FillRgn(CRgn* pRgn, CBrush* pBrush);
+ BOOL FrameRgn(CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight);
+ BOOL InvertRgn(CRgn* pRgn);
+ BOOL PaintRgn(CRgn* pRgn);
+
+// Clipping Functions
+ virtual int GetClipBox(LPRECT lpRect) const;
+ virtual BOOL PtVisible(int x, int y) const;
+ BOOL PtVisible(POINT point) const;
+ virtual BOOL RectVisible(LPCRECT lpRect) const;
+ int SelectClipRgn(CRgn* pRgn);
+ int ExcludeClipRect(int x1, int y1, int x2, int y2);
+ int ExcludeClipRect(LPCRECT lpRect);
+ int ExcludeUpdateRgn(CWnd* pWnd);
+ int IntersectClipRect(int x1, int y1, int x2, int y2);
+ int IntersectClipRect(LPCRECT lpRect);
+ int OffsetClipRgn(int x, int y);
+ int OffsetClipRgn(SIZE size);
+#ifndef _MAC
+ int SelectClipRgn(CRgn* pRgn, int nMode);
+#endif
+
+// Line-Output Functions
+ CPoint GetCurrentPosition() const;
+ CPoint MoveTo(int x, int y);
+ CPoint MoveTo(POINT point);
+ BOOL LineTo(int x, int y);
+ BOOL LineTo(POINT point);
+ BOOL Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ BOOL Polyline(LPPOINT lpPoints, int nCount);
+
+#ifndef _MAC
+ BOOL AngleArc(int x, int y, int nRadius, float fStartAngle, float fSweepAngle);
+ BOOL ArcTo(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ int GetArcDirection() const;
+ int SetArcDirection(int nArcDirection);
+
+ BOOL PolyDraw(const POINT* lpPoints, const BYTE* lpTypes, int nCount);
+ BOOL PolylineTo(const POINT* lpPoints, int nCount);
+ BOOL PolyPolyline(const POINT* lpPoints,
+ const DWORD* lpPolyPoints, int nCount);
+
+ BOOL PolyBezier(const POINT* lpPoints, int nCount);
+ BOOL PolyBezierTo(const POINT* lpPoints, int nCount);
+#endif
+
+// Simple Drawing Functions
+ void FillRect(LPCRECT lpRect, CBrush* pBrush);
+ void FrameRect(LPCRECT lpRect, CBrush* pBrush);
+ void InvertRect(LPCRECT lpRect);
+ BOOL DrawIcon(int x, int y, HICON hIcon);
+ BOOL DrawIcon(POINT point, HICON hIcon);
+
+// Ellipse and Polygon Functions
+#ifndef _MAC
+ BOOL Chord(int x1, int y1, int x2, int y2, int x3, int y3,
+ int x4, int y4);
+ BOOL Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+#endif
+ void DrawFocusRect(LPCRECT lpRect);
+ BOOL Ellipse(int x1, int y1, int x2, int y2);
+ BOOL Ellipse(LPCRECT lpRect);
+ BOOL Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ BOOL Polygon(LPPOINT lpPoints, int nCount);
+#ifndef _MAC
+ BOOL PolyPolygon(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount);
+#endif
+ BOOL Rectangle(int x1, int y1, int x2, int y2);
+ BOOL Rectangle(LPCRECT lpRect);
+ BOOL RoundRect(int x1, int y1, int x2, int y2, int x3, int y3);
+ BOOL RoundRect(LPCRECT lpRect, POINT point);
+
+// Bitmap Functions
+ BOOL PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop);
+ BOOL BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, DWORD dwRop);
+ BOOL StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop);
+ COLORREF GetPixel(int x, int y) const;
+ COLORREF GetPixel(POINT point) const;
+ COLORREF SetPixel(int x, int y, COLORREF crColor);
+ COLORREF SetPixel(POINT point, COLORREF crColor);
+#ifndef _MAC
+ BOOL FloodFill(int x, int y, COLORREF crColor);
+ BOOL ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType);
+ BOOL MaskBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask,
+ DWORD dwRop);
+ BOOL PlgBlt(LPPOINT lpPoint, CDC* pSrcDC, int xSrc, int ySrc,
+ int nWidth, int nHeight, CBitmap& maskBitmap, int xMask, int yMask);
+ BOOL SetPixelV(int x, int y, COLORREF crColor);
+ BOOL SetPixelV(POINT point, COLORREF crColor);
+#endif
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ BOOL TextOut(int x, int y, const CString& str);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ CSize GetTextExtent(LPCTSTR lpszString, int nCount) const;
+ CSize GetOutputTextExtent(LPCTSTR lpszString, int nCount) const;
+ CSize GetTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ CSize GetOutputTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ virtual BOOL GrayString(CBrush* pBrush,
+ BOOL (CALLBACK EXPORT* lpfnOutput)(HDC, LPARAM, int), LPARAM lpData,
+ int nCount, int x, int y, int nWidth, int nHeight);
+ UINT GetTextAlign() const;
+ UINT SetTextAlign(UINT nFlags);
+ int GetTextFace(int nCount, LPTSTR lpszFacename) const;
+ BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
+ BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
+#ifndef _MAC
+ int SetTextJustification(int nBreakExtra, int nBreakCount);
+#endif
+ int GetTextCharacterExtra() const;
+ int SetTextCharacterExtra(int nCharExtra);
+
+// Font Functions
+ BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
+ BOOL GetOutputCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
+ DWORD SetMapperFlags(DWORD dwFlag);
+ CSize GetAspectRatioFilter() const;
+
+ BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const;
+ DWORD GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData, DWORD cbData) const;
+#ifndef _MAC
+ int GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const;
+#endif
+ UINT GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const;
+#ifndef _MAC
+ DWORD GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm,
+ DWORD cbBuffer, LPVOID lpBuffer, const MAT2* lpmat2) const;
+#endif
+
+#ifndef _MAC
+ BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar,
+ LPABCFLOAT lpABCF) const;
+ BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar,
+ float* lpFloatBuffer) const;
+#endif
+
+// Printer/Device Escape Functions
+ virtual int Escape(int nEscape, int nCount,
+ LPCSTR lpszInData, LPVOID lpOutData);
+#ifndef _MAC
+ int Escape(int nEscape, int nInputSize, LPCSTR lpszInputData,
+ int nOutputSize, LPSTR lpszOutputData);
+ int DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData);
+#endif
+
+ // Escape helpers
+ int StartDoc(LPCTSTR lpszDocName); // old Win3.0 version
+ int StartDoc(LPDOCINFO lpDocInfo);
+ int StartPage();
+ int EndPage();
+ int SetAbortProc(BOOL (CALLBACK EXPORT* lpfn)(HDC, int));
+ int AbortDoc();
+ int EndDoc();
+
+// Scrolling Functions
+ BOOL ScrollDC(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* pRgnUpdate, LPRECT lpRectUpdate);
+
+// MetaFile Functions
+ BOOL PlayMetaFile(HMETAFILE hMF);
+#ifndef _MAC
+ BOOL PlayMetaFile(HENHMETAFILE hEnhMetaFile, LPCRECT lpBounds);
+ BOOL AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData);
+ // can be used for enhanced metafiles only
+
+// Path Functions
+ BOOL AbortPath();
+ BOOL BeginPath();
+ BOOL CloseFigure();
+ BOOL EndPath();
+ BOOL FillPath();
+ BOOL FlattenPath();
+ BOOL StrokeAndFillPath();
+ BOOL StrokePath();
+ BOOL WidenPath();
+ float GetMiterLimit() const;
+ BOOL SetMiterLimit(float fMiterLimit);
+ int GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const;
+ BOOL SelectClipPath(int nMode);
+#endif
+
+// Implementation
+public:
+ virtual ~CDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // advanced use and implementation
+ BOOL m_bPrinting;
+ HGDIOBJ SelectObject(HGDIOBJ); // do not use for regions
+
+ // DrawDragRect is useful for drawing drag rects with no flicker
+ static CBrush* PASCAL GetHalftoneBrush();
+ void DrawDragRect(LPCRECT lpRect, SIZE size,
+ LPCRECT lpRectLast, SIZE sizeLast,
+ CBrush* pBrush = NULL, CBrush* pBrushLast = NULL);
+ void FillSolidRect(LPCRECT lpRect, COLORREF clr);
+ void FillSolidRect(int x, int y, int cx, int cy, COLORREF clr);
+ void Draw3dRect(LPCRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomRight);
+ void Draw3dRect(int x, int y, int cx, int cy,
+ COLORREF clrTopLeft, COLORREF clrBottomRight);
+
+protected:
+ // used for implementation of non-virtual SelectObject calls
+ static CGdiObject* PASCAL SelectGdiObject(HDC hDC, HGDIOBJ h);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDC Helpers
+
+class CPaintDC : public CDC
+{
+ DECLARE_DYNAMIC(CPaintDC)
+
+// Constructors
+public:
+ CPaintDC(CWnd* pWnd); // BeginPaint
+
+// Attributes
+protected:
+ HWND m_hWnd;
+public:
+ PAINTSTRUCT m_ps; // actual paint struct!
+
+// Implementation
+public:
+ virtual ~CPaintDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CClientDC : public CDC
+{
+ DECLARE_DYNAMIC(CClientDC)
+
+// Constructors
+public:
+ CClientDC(CWnd* pWnd);
+
+// Attributes
+protected:
+ HWND m_hWnd;
+
+// Implementation
+public:
+ virtual ~CClientDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CWindowDC : public CDC
+{
+ DECLARE_DYNAMIC(CWindowDC)
+
+// Constructors
+public:
+ CWindowDC(CWnd* pWnd);
+
+// Attributes
+protected:
+ HWND m_hWnd;
+
+// Implementation
+public:
+ virtual ~CWindowDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMenu
+
+class CMenu : public CObject
+{
+ DECLARE_DYNCREATE(CMenu)
+public:
+
+// Constructors
+ CMenu();
+
+ BOOL CreateMenu();
+ BOOL CreatePopupMenu();
+ BOOL LoadMenu(LPCTSTR lpszResourceName);
+ BOOL LoadMenu(UINT nIDResource);
+ BOOL LoadMenuIndirect(const void* lpMenuTemplate);
+ BOOL DestroyMenu();
+
+// Attributes
+ HMENU m_hMenu; // must be first data member
+ HMENU GetSafeHmenu() const;
+
+ static CMenu* PASCAL FromHandle(HMENU hMenu);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HMENU hMenu);
+ HMENU Detach();
+
+// CMenu Operations
+ BOOL DeleteMenu(UINT nPosition, UINT nFlags);
+ BOOL TrackPopupMenu(UINT nFlags, int x, int y,
+ CWnd* pWnd, LPCRECT lpRect = 0);
+
+// CMenuItem Operations
+ BOOL AppendMenu(UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL AppendMenu(UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp);
+ UINT CheckMenuItem(UINT nIDCheckItem, UINT nCheck);
+ UINT EnableMenuItem(UINT nIDEnableItem, UINT nEnable);
+ UINT GetMenuItemCount() const;
+ UINT GetMenuItemID(int nPos) const;
+ UINT GetMenuState(UINT nID, UINT nFlags) const;
+ int GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount,
+ UINT nFlags) const;
+ CMenu* GetSubMenu(int nPos) const;
+ BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ const CBitmap* pBmp);
+ BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ const CBitmap* pBmp);
+ BOOL RemoveMenu(UINT nPosition, UINT nFlags);
+ BOOL SetMenuItemBitmaps(UINT nPosition, UINT nFlags,
+ const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked);
+
+// Overridables (must override draw and measure for owner-draw menu items)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+
+// Implementation
+public:
+ virtual ~CMenu();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ static CMenu* PASCAL CMenu::FromHandlePermanent(HMENU hMenu);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Window message map handling
+
+struct AFX_MSGMAP_ENTRY; // declared below after CWnd
+
+struct AFX_MSGMAP
+{
+#ifdef _AFXDLL
+ const AFX_MSGMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_MSGMAP* pBaseMap;
+#endif
+ const AFX_MSGMAP_ENTRY* lpEntries;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_MESSAGE_MAP() \
+private: \
+ static const AFX_MSGMAP_ENTRY _messageEntries[]; \
+protected: \
+ static AFX_DATA const AFX_MSGMAP messageMap; \
+ static const AFX_MSGMAP* PASCAL _GetBaseMessageMap(); \
+ virtual const AFX_MSGMAP* GetMessageMap() const; \
+
+#else
+#define DECLARE_MESSAGE_MAP() \
+private: \
+ static const AFX_MSGMAP_ENTRY _messageEntries[]; \
+protected: \
+ static AFX_DATA const AFX_MSGMAP messageMap; \
+ virtual const AFX_MSGMAP* GetMessageMap() const; \
+
+#endif
+
+#ifdef _AFXDLL
+#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
+ const AFX_MSGMAP* PASCAL theClass::_GetBaseMessageMap() \
+ { return &baseClass::messageMap; } \
+ const AFX_MSGMAP* theClass::GetMessageMap() const \
+ { return &theClass::messageMap; } \
+ AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
+ { &theClass::_GetBaseMessageMap, &theClass::_messageEntries[0] }; \
+ const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
+ { \
+
+#else
+#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
+ const AFX_MSGMAP* theClass::GetMessageMap() const \
+ { return &theClass::messageMap; } \
+ AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
+ { &baseClass::messageMap, &theClass::_messageEntries[0] }; \
+ const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
+ { \
+
+#endif
+
+#define END_MESSAGE_MAP() \
+ {0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
+ }; \
+
+// Message map signature values and macros in separate header
+#include <afxmsg_.h>
+
+/////////////////////////////////////////////////////////////////////////////
+// Dialog data exchange (DDX_) and validation (DDV_)
+
+// CDataExchange - for data exchange and validation
+class CDataExchange
+{
+// Attributes
+public:
+ BOOL m_bSaveAndValidate; // TRUE => save and validate data
+ CWnd* m_pDlgWnd; // container usually a dialog
+
+// Operations (for implementors of DDX and DDV procs)
+ HWND PrepareCtrl(int nIDC); // return HWND of control
+ HWND PrepareEditCtrl(int nIDC); // return HWND of control
+ void Fail(); // will throw exception
+
+// Implementation
+ CDataExchange(CWnd* pDlgWnd, BOOL bSaveAndValidate);
+
+ HWND m_hWndLastControl; // last control used (for validation)
+ BOOL m_bEditLastControl; // last control was an edit item
+};
+
+#include <afxdd_.h> // standard DDX_ and DDV_ routines
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE types
+
+struct IUnknown;
+typedef IUnknown* LPUNKNOWN;
+
+struct IDispatch;
+typedef IDispatch* LPDISPATCH;
+
+typedef unsigned short VARTYPE;
+typedef long SCODE;
+
+struct tagDISPPARAMS;
+typedef tagDISPPARAMS DISPPARAMS;
+
+struct tagVARIANT;
+typedef tagVARIANT VARIANT;
+
+/////////////////////////////////////////////////////////////////////////////
+// CCmdTarget
+
+// private structures
+struct AFX_CMDHANDLERINFO; // info about where the command is handled
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE 2.0 interface map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_INTERFACEMAP_ENTRY
+{
+ const void* piid; // the interface id (IID) (NULL for aggregate)
+ size_t nOffset; // offset of the interface vtable from m_unknown
+};
+
+struct AFX_INTERFACEMAP
+{
+#ifdef _AFXDLL
+ const AFX_INTERFACEMAP* (PASCAL* pfnGetBaseMap)(); // NULL is root class
+#else
+ const AFX_INTERFACEMAP* pBaseMap;
+#endif
+ const AFX_INTERFACEMAP_ENTRY* pEntry; // map for this class
+};
+
+
+#ifdef _AFXDLL
+#define DECLARE_INTERFACE_MAP() \
+private: \
+ static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
+protected: \
+ static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \
+ static const AFX_INTERFACEMAP* PASCAL _GetBaseInterfaceMap(); \
+ virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \
+
+#else
+#define DECLARE_INTERFACE_MAP() \
+private: \
+ static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
+protected: \
+ static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \
+ virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE 2.0 dispatch map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_DISPMAP_ENTRY;
+
+struct AFX_DISPMAP
+{
+#ifdef _AFXDLL
+ const AFX_DISPMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_DISPMAP* pBaseMap;
+#endif
+ const AFX_DISPMAP_ENTRY* lpEntries;
+ UINT* lpEntryCount;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_DISPATCH_MAP() \
+private: \
+ static const AFX_DISPMAP_ENTRY _dispatchEntries[]; \
+ static UINT _dispatchEntryCount; \
+protected: \
+ static AFX_DATA const AFX_DISPMAP dispatchMap; \
+ static const AFX_DISPMAP* PASCAL _GetBaseDispatchMap(); \
+ virtual const AFX_DISPMAP* GetDispatchMap() const; \
+
+#else
+#define DECLARE_DISPATCH_MAP() \
+private: \
+ static const AFX_DISPMAP_ENTRY _dispatchEntries[]; \
+ static UINT _dispatchEntryCount; \
+protected: \
+ static AFX_DATA const AFX_DISPMAP dispatchMap; \
+ virtual const AFX_DISPMAP* GetDispatchMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// CCmdTarget proper
+
+class CCmdTarget : public CObject
+{
+ DECLARE_DYNAMIC(CCmdTarget)
+protected:
+
+public:
+// Constructors
+ CCmdTarget();
+
+// Attributes
+ LPDISPATCH GetIDispatch(BOOL bAddRef);
+ // retrieve IDispatch part of CCmdTarget
+ static CCmdTarget* PASCAL FromIDispatch(LPDISPATCH lpDispatch);
+ // map LPDISPATCH back to CCmdTarget* (inverse of GetIDispatch)
+ BOOL IsResultExpected();
+ // returns TRUE if automation function should return a value
+
+// Operations
+ void EnableAutomation();
+ // call in constructor to wire up IDispatch
+
+ void BeginWaitCursor();
+ void EndWaitCursor();
+ void RestoreWaitCursor(); // call after messagebox
+
+// Overridables
+ // route and dispatch standard command message types
+ // (more sophisticated than OnCommand)
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // called when last OLE reference is released
+ virtual void OnFinalRelease();
+#endif
+
+// Implementation
+public:
+ virtual ~CCmdTarget();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+#ifndef _AFX_NO_OLE_SUPPORT
+ void GetNotSupported();
+ void SetNotSupported();
+#endif
+
+protected:
+ friend class CView;
+
+ CView* GetRoutingView();
+ DECLARE_MESSAGE_MAP() // base class - no {{ }} macros
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ DECLARE_DISPATCH_MAP()
+ DECLARE_INTERFACE_MAP()
+
+ // OLE interface map implementation
+public:
+ // data used when CCmdTarget is made OLE aware
+ DWORD m_dwRef;
+ LPUNKNOWN m_pOuterUnknown; // external controlling unknown if != NULL
+ DWORD m_xInnerUnknown; // place-holder for inner controlling unknown
+
+public:
+ // advanced operations
+ void EnableAggregation(); // call to enable aggregation
+ void ExternalDisconnect(); // forcibly disconnect
+ LPUNKNOWN GetControllingUnknown();
+ // get controlling IUnknown for aggregate creation
+
+ // these versions do not delegate to m_pOuterUnknown
+ DWORD InternalQueryInterface(const void*, LPVOID* ppvObj);
+ DWORD InternalAddRef();
+ DWORD InternalRelease();
+ // these versions delegate to m_pOuterUnknown
+ DWORD ExternalQueryInterface(const void*, LPVOID* ppvObj);
+ DWORD ExternalAddRef();
+ DWORD ExternalRelease();
+
+ // implementation helpers
+ LPUNKNOWN GetInterface(const void*);
+ LPUNKNOWN QueryAggregates(const void*);
+
+ // advanced overrideables for implementation
+ virtual BOOL OnCreateAggregates();
+ virtual LPUNKNOWN GetInterfaceHook(const void*);
+
+ // OLE automation implementation
+protected:
+ struct XDispatch
+ {
+ DWORD m_vtbl; // place-holder for IDispatch vtable
+ size_t m_nOffset;
+ } m_xDispatch;
+ BOOL m_bResultExpected;
+
+ // member variable-based properties
+ void GetStandardProp(const AFX_DISPMAP_ENTRY* pEntry,
+ VARIANT* pvarResult, UINT* puArgErr);
+ SCODE SetStandardProp(const AFX_DISPMAP_ENTRY* pEntry,
+ DISPPARAMS* pDispParams, UINT* puArgErr);
+
+ // DISPID to dispatch map lookup
+ static UINT PASCAL GetEntryCount(const AFX_DISPMAP* pDispMap);
+ const AFX_DISPMAP_ENTRY* PASCAL GetDispEntry(LONG memid);
+ static LONG PASCAL MemberIDFromName(const AFX_DISPMAP* pDispMap, LPCTSTR lpszName);
+
+ // helpers for member function calling implementation
+ static UINT PASCAL GetStackSize(const BYTE* pbParams, VARTYPE vtResult);
+#if defined(_PPC_)
+ SCODE PushStackArgs(BYTE* pStack, const BYTE* pbParams,
+ void* pResult, VARTYPE vtResult, DISPPARAMS* pDispParams,
+ UINT* puArgErr, VARIANT* rgTempVars, UINT nSizeArgs);
+#else
+ SCODE PushStackArgs(BYTE* pStack, const BYTE* pbParams,
+ void* pResult, VARTYPE vtResult, DISPPARAMS* pDispParams,
+ UINT* puArgErr, VARIANT* rgTempVars);
+#endif
+ SCODE CallMemberFunc(const AFX_DISPMAP_ENTRY* pEntry, WORD wFlags,
+ VARIANT* pvarResult, DISPPARAMS* pDispParams, UINT* puArgErr);
+
+ friend class COleDispatchImpl;
+#endif //!_AFX_NO_OLE_SUPPORT
+};
+
+class CCmdUI // simple helper class
+{
+public:
+// Attributes
+ UINT m_nID;
+ UINT m_nIndex; // menu item or other index
+
+ // if a menu item
+ CMenu* m_pMenu; // NULL if not a menu
+ CMenu* m_pSubMenu; // sub containing menu item
+ // if a popup sub menu - ID is for first in popup
+
+ // if from some other window
+ CWnd* m_pOther; // NULL if a menu or not a CWnd
+
+// Operations to do in ON_UPDATE_COMMAND_UI
+ virtual void Enable(BOOL bOn = TRUE);
+ virtual void SetCheck(int nCheck = 1); // 0, 1 or 2 (indeterminate)
+ virtual void SetRadio(BOOL bOn = TRUE);
+ virtual void SetText(LPCTSTR lpszText);
+
+// Advanced operation
+ void ContinueRouting();
+
+// Implementation
+ CCmdUI();
+ BOOL m_bEnableChanged;
+ BOOL m_bContinueRouting;
+ UINT m_nIndexMax; // last + 1 for iterating m_nIndex
+
+ CMenu* m_pParentMenu; // NULL if parent menu not easily determined
+ // (probably a secondary popup menu)
+
+ void DoUpdate(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
+};
+
+// special CCmdUI derived classes are used for other UI paradigms
+// like toolbar buttons and status indicators
+
+// pointer to afx_msg member function
+#ifndef AFX_MSG_CALL
+#define AFX_MSG_CALL
+#endif
+typedef void (AFX_MSG_CALL CCmdTarget::*AFX_PMSG)(void);
+
+struct AFX_DISPMAP_ENTRY
+{
+ LPCTSTR lpszName; // member/property name
+ long lDispID; // DISPID (may be DISPID_UNKNOWN)
+ LPCSTR lpszParams; // member parameter description
+ WORD vt; // return value type / or type of property
+ AFX_PMSG pfn; // normal member On<membercall> or, OnGet<property>
+ AFX_PMSG pfnSet; // special member for OnSet<property>
+ size_t nPropOffset; // property offset
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWnd implementation
+
+// structures (see afxext.h)
+struct CCreateContext; // context for creating things
+struct CPrintInfo; // print preview customization info
+
+struct AFX_MSGMAP_ENTRY
+{
+ UINT nMessage; // windows message
+ UINT nCode; // control code or WM_NOTIFY code
+ UINT nID; // control ID (or 0 for windows messages)
+ UINT nLastID; // used for entries specifying a range of control id's
+ UINT nSig; // signature type (action) or pointer to message #
+ AFX_PMSG pfn; // routine to call (or special value)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWnd - a Microsoft Windows application window
+
+#if (WINVER < 0x400)
+typedef struct tagSCROLLINFO
+{
+ UINT cbSize;
+ UINT fMask;
+ int nMin;
+ int nMax;
+ int nPage;
+ int nPos;
+} SCROLLINFO;
+typedef SCROLLINFO* LPSCROLLINFO;
+typedef const SCROLLINFO* LPCSCROLLINFO;
+
+#define SIF_RANGE 0x0001
+#define SIF_PAGE 0x0002
+#define SIF_POS 0x0004
+#define SIF_DISABLENOSCROLL 0x0008
+#endif
+
+class COleDropTarget; // for more information see AFXOLE.H
+
+class CWnd : public CCmdTarget
+{
+ DECLARE_DYNCREATE(CWnd)
+protected:
+ static const MSG* PASCAL GetCurrentMessage();
+
+// Attributes
+public:
+ HWND m_hWnd; // must be first data member
+
+ HWND GetSafeHwnd() const;
+ DWORD GetStyle() const;
+ DWORD GetExStyle() const;
+ static BOOL PASCAL ModifyStyle(HWND hWnd, DWORD dwRemove, DWORD dwAdd,
+ UINT nFlags);
+ BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0);
+ static BOOL PASCAL ModifyStyleEx(HWND hWnd, DWORD dwRemove, DWORD dwAdd,
+ UINT nFlags);
+ BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0);
+
+ CWnd* GetOwner() const;
+ void SetOwner(CWnd* pOwnerWnd);
+
+// Constructors and other creation
+ CWnd();
+
+ static CWnd* PASCAL FromHandle(HWND hWnd);
+ static CWnd* PASCAL FromHandlePermanent(HWND hWnd);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HWND hWndNew);
+ HWND Detach();
+ BOOL SubclassWindow(HWND hWnd);
+ BOOL SubclassDlgItem(UINT nID, CWnd* pParent);
+ // for dynamic subclassing of windows control
+
+public:
+ // for child windows, views, panes etc
+ virtual BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName, DWORD dwStyle,
+ const RECT& rect,
+ CWnd* pParentWnd, UINT nID,
+ CCreateContext* pContext = NULL);
+
+ // advanced creation (allows access to extended styles)
+ BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName, DWORD dwStyle,
+ int x, int y, int nWidth, int nHeight,
+ HWND hWndParent, HMENU nIDorHMenu, LPVOID lpParam = NULL);
+
+ virtual BOOL DestroyWindow();
+
+ // special pre-creation and window rect adjustment hooks
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ // Advanced: virtual AdjustWindowRect
+ enum AdjustType { adjustBorder = 0, adjustOutside = 1 };
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+// Window tree access
+ int GetDlgCtrlID() const;
+ int SetDlgCtrlID(int nID);
+ // get and set window ID, for child windows only
+ CWnd* GetDlgItem(int nID) const;
+ // get immediate child with given ID
+ CWnd* GetDescendantWindow(int nID, BOOL bOnlyPerm = FALSE) const;
+ // like GetDlgItem but recursive
+ void SendMessageToDescendants(UINT message, WPARAM wParam = 0,
+ LPARAM lParam = 0, BOOL bDeep = TRUE, BOOL bOnlyPerm = FALSE);
+ CFrameWnd* GetParentFrame() const;
+ CWnd* GetTopLevelParent() const;
+ CFrameWnd* GetTopLevelFrame() const;
+
+// Message Functions
+ LRESULT SendMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
+ BOOL PostMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
+
+#ifndef _MAC
+ BOOL SendNotifyMessage(UINT message, WPARAM wParam, LPARAM lParam);
+#endif
+
+// Window Text Functions
+ void SetWindowText(LPCTSTR lpszString);
+ int GetWindowText(LPTSTR lpszStringBuf, int nMaxCount) const;
+ int GetWindowTextLength() const;
+ void GetWindowText(CString& rString) const;
+ void SetFont(CFont* pFont, BOOL bRedraw = TRUE);
+ CFont* GetFont() const;
+
+// CMenu Functions - non-Child windows only
+ CMenu* GetMenu() const;
+ BOOL SetMenu(CMenu* pMenu);
+ void DrawMenuBar();
+ CMenu* GetSystemMenu(BOOL bRevert) const;
+ BOOL HiliteMenuItem(CMenu* pMenu, UINT nIDHiliteItem, UINT nHilite);
+
+// Window Size and Position Functions
+ BOOL IsIconic() const;
+ BOOL IsZoomed() const;
+ void MoveWindow(int x, int y, int nWidth, int nHeight,
+ BOOL bRepaint = TRUE);
+ void MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE);
+
+ static AFX_DATA const CWnd wndTop; // SetWindowPos's pWndInsertAfter
+ static AFX_DATA const CWnd wndBottom; // SetWindowPos's pWndInsertAfter
+ static AFX_DATA const CWnd wndTopMost; // SetWindowPos pWndInsertAfter
+ static AFX_DATA const CWnd wndNoTopMost; // SetWindowPos pWndInsertAfter
+
+ BOOL SetWindowPos(const CWnd* pWndInsertAfter, int x, int y,
+ int cx, int cy, UINT nFlags);
+#ifndef _MAC
+ UINT ArrangeIconicWindows();
+#endif
+ void BringWindowToTop();
+ void GetWindowRect(LPRECT lpRect) const;
+ void GetClientRect(LPRECT lpRect) const;
+
+ BOOL GetWindowPlacement(WINDOWPLACEMENT* lpwndpl) const;
+ BOOL SetWindowPlacement(const WINDOWPLACEMENT* lpwndpl);
+
+// Coordinate Mapping Functions
+ void ClientToScreen(LPPOINT lpPoint) const;
+ void ClientToScreen(LPRECT lpRect) const;
+ void ScreenToClient(LPPOINT lpPoint) const;
+ void ScreenToClient(LPRECT lpRect) const;
+ void MapWindowPoints(CWnd* pwndTo, LPPOINT lpPoint, UINT nCount) const;
+ void MapWindowPoints(CWnd* pwndTo, LPRECT lpRect) const;
+
+// Update/Painting Functions
+ CDC* BeginPaint(LPPAINTSTRUCT lpPaint);
+ void EndPaint(LPPAINTSTRUCT lpPaint);
+ CDC* GetDC();
+ CDC* GetWindowDC();
+ int ReleaseDC(CDC* pDC);
+
+ void UpdateWindow();
+ void SetRedraw(BOOL bRedraw = TRUE);
+ BOOL GetUpdateRect(LPRECT lpRect, BOOL bErase = FALSE);
+ int GetUpdateRgn(CRgn* pRgn, BOOL bErase = FALSE);
+ void Invalidate(BOOL bErase = TRUE);
+ void InvalidateRect(LPCRECT lpRect, BOOL bErase = TRUE);
+ void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);
+ void ValidateRect(LPCRECT lpRect);
+ void ValidateRgn(CRgn* pRgn);
+ BOOL ShowWindow(int nCmdShow);
+ BOOL IsWindowVisible() const;
+ void ShowOwnedPopups(BOOL bShow = TRUE);
+
+ CDC* GetDCEx(CRgn* prgnClip, DWORD flags);
+#ifndef _MAC
+ BOOL LockWindowUpdate(); // for backward compatibility
+ void UnlockWindowUpdate();
+#endif
+ BOOL RedrawWindow(LPCRECT lpRectUpdate = NULL,
+ CRgn* prgnUpdate = NULL,
+ UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);
+ BOOL EnableScrollBar(int nSBFlags, UINT nArrowFlags = ESB_ENABLE_BOTH);
+
+// Timer Functions
+ UINT SetTimer(UINT nIDEvent, UINT nElapse,
+ void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD));
+ BOOL KillTimer(int nIDEvent);
+
+// Window State Functions
+ BOOL IsWindowEnabled() const;
+ BOOL EnableWindow(BOOL bEnable = TRUE);
+
+ // the active window applies only to top-level (frame windows)
+ static CWnd* PASCAL GetActiveWindow();
+ CWnd* SetActiveWindow();
+
+ // the foreground window applies only to top-level windows (frame windows)
+ BOOL SetForegroundWindow();
+ static CWnd* PASCAL GetForegroundWindow();
+
+ // capture and focus apply to all windows
+ static CWnd* PASCAL GetCapture();
+ CWnd* SetCapture();
+ static CWnd* PASCAL GetFocus();
+ CWnd* SetFocus();
+
+ static CWnd* PASCAL GetDesktopWindow();
+
+// Obsolete and non-portable APIs - not recommended for new code
+#ifndef _MAC
+ void CloseWindow();
+ BOOL OpenIcon();
+#endif
+
+// Dialog-Box Item Functions
+// (NOTE: Dialog-Box Items/Controls are not necessarily in dialog boxes!)
+ void CheckDlgButton(int nIDButton, UINT nCheck);
+ void CheckRadioButton(int nIDFirstButton, int nIDLastButton,
+ int nIDCheckButton);
+ int GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton);
+#ifndef _MAC
+ int DlgDirList(LPTSTR lpPathSpec, int nIDListBox,
+ int nIDStaticPath, UINT nFileType);
+ int DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox,
+ int nIDStaticPath, UINT nFileType);
+ BOOL DlgDirSelect(LPTSTR lpString, int nIDListBox);
+ BOOL DlgDirSelectComboBox(LPTSTR lpString, int nIDComboBox);
+#endif
+
+ UINT GetDlgItemInt(int nID, BOOL* lpTrans = NULL,
+ BOOL bSigned = TRUE) const;
+ int GetDlgItemText(int nID, LPTSTR lpStr, int nMaxCount) const;
+ CWnd* GetNextDlgGroupItem(CWnd* pWndCtl, BOOL bPrevious = FALSE) const;
+
+ CWnd* GetNextDlgTabItem(CWnd* pWndCtl, BOOL bPrevious = FALSE) const;
+ UINT IsDlgButtonChecked(int nIDButton) const;
+ LRESULT SendDlgItemMessage(int nID, UINT message,
+ WPARAM wParam = 0, LPARAM lParam = 0);
+ void SetDlgItemInt(int nID, UINT nValue, BOOL bSigned = TRUE);
+ void SetDlgItemText(int nID, LPCTSTR lpszString);
+
+// Scrolling Functions
+ int GetScrollPos(int nBar) const;
+ void GetScrollRange(int nBar, LPINT lpMinPos, LPINT lpMaxPos) const;
+ void ScrollWindow(int xAmount, int yAmount,
+ LPCRECT lpRect = NULL,
+ LPCRECT lpClipRect = NULL);
+ int SetScrollPos(int nBar, int nPos, BOOL bRedraw = TRUE);
+ void SetScrollRange(int nBar, int nMinPos, int nMaxPos,
+ BOOL bRedraw = TRUE);
+ void ShowScrollBar(UINT nBar, BOOL bShow = TRUE);
+ void EnableScrollBarCtrl(int nBar, BOOL bEnable = TRUE);
+ virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
+ // return sibling scrollbar control (or NULL if none)
+
+ int ScrollWindowEx(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags);
+
+// Window Access Functions
+ CWnd* ChildWindowFromPoint(POINT point) const;
+ static CWnd* PASCAL FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName);
+ CWnd* GetNextWindow(UINT nFlag = GW_HWNDNEXT) const;
+ CWnd* GetTopWindow() const;
+
+ CWnd* GetWindow(UINT nCmd) const;
+ CWnd* GetLastActivePopup() const;
+
+ BOOL IsChild(const CWnd* pWnd) const;
+ CWnd* GetParent() const;
+ CWnd* SetParent(CWnd* pWndNewParent);
+ static CWnd* PASCAL WindowFromPoint(POINT point);
+
+// Alert Functions
+ BOOL FlashWindow(BOOL bInvert);
+ int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
+ UINT nType = MB_OK);
+
+// Clipboard Functions
+ BOOL ChangeClipboardChain(HWND hWndNext);
+ HWND SetClipboardViewer();
+ BOOL OpenClipboard();
+ static CWnd* PASCAL GetClipboardOwner();
+ static CWnd* PASCAL GetClipboardViewer();
+ static CWnd* PASCAL GetOpenClipboardWindow();
+
+// Caret Functions
+ void CreateCaret(CBitmap* pBitmap);
+ void CreateSolidCaret(int nWidth, int nHeight);
+ void CreateGrayCaret(int nWidth, int nHeight);
+ static CPoint PASCAL GetCaretPos();
+ static void PASCAL SetCaretPos(POINT point);
+ void HideCaret();
+ void ShowCaret();
+
+// Shell Interaction Functions
+ void DragAcceptFiles(BOOL bAccept = TRUE);
+
+// Dialog Data support
+public:
+ BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
+ // data wnd must be same type as this
+
+// Help Command Handlers
+ afx_msg void OnHelp(); // F1 (uses current context)
+ afx_msg void OnHelpIndex(); // ID_HELP_INDEX, ID_DEFAULT_HELP
+ afx_msg void OnHelpUsing(); // ID_HELP_USING
+ virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
+
+// Layout and other functions
+public:
+ enum RepositionFlags
+ { reposDefault = 0, reposQuery = 1, reposExtra = 2 };
+ void RepositionBars(UINT nIDFirst, UINT nIDLast, UINT nIDLeftOver,
+ UINT nFlag = reposDefault, LPRECT lpRectParam = NULL,
+ LPCRECT lpRectClient = NULL, BOOL bStretch = TRUE);
+
+ void UpdateDialogControls(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
+ void CenterWindow(CWnd* pAlternateOwner = NULL);
+
+// Window-Management message handler member functions
+protected:
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
+ afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
+ afx_msg void OnCancelMode();
+ afx_msg void OnChildActivate();
+ afx_msg void OnClose();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+
+ afx_msg void OnDestroy();
+ afx_msg void OnEnable(BOOL bEnable);
+ afx_msg void OnEndSession(BOOL bEnding);
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
+ afx_msg void OnIconEraseBkgnd(CDC* pDC);
+ afx_msg void OnKillFocus(CWnd* pNewWnd);
+ afx_msg LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg void OnMove(int x, int y);
+ afx_msg void OnPaint();
+ afx_msg void OnParentNotify(UINT message, LPARAM lParam);
+ afx_msg HCURSOR OnQueryDragIcon();
+ afx_msg BOOL OnQueryEndSession();
+ afx_msg BOOL OnQueryNewPalette();
+ afx_msg BOOL OnQueryOpen();
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
+ afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
+
+// Nonclient-Area message handler member functions
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnNcDestroy();
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonUp(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcRButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcRButtonUp(UINT nHitTest, CPoint point);
+
+// System message handler member functions
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg void OnPaletteIsChanging(CWnd* pRealizeWnd);
+ afx_msg void OnSysChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnSysDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnCompacting(UINT nCpuTime);
+ afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
+ afx_msg void OnFontChange();
+ afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
+ afx_msg void OnSpoolerStatus(UINT nStatus, UINT nJobs);
+ afx_msg void OnSysColorChange();
+ afx_msg void OnTimeChange();
+ afx_msg void OnWinIniChange(LPCTSTR lpszSection);
+
+// Input message handler member functions
+ afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnTimer(UINT nIDEvent);
+
+// Initialization message handler member functions
+ afx_msg void OnInitMenu(CMenu* pMenu);
+ afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
+
+// Clipboard message handler member functions
+ afx_msg void OnAskCbFormatName(UINT nMaxCount, LPTSTR lpszString);
+ afx_msg void OnChangeCbChain(HWND hWndRemove, HWND hWndAfter);
+ afx_msg void OnDestroyClipboard();
+ afx_msg void OnDrawClipboard();
+ afx_msg void OnHScrollClipboard(CWnd* pClipAppWnd, UINT nSBCode, UINT nPos);
+ afx_msg void OnPaintClipboard(CWnd* pClipAppWnd, HGLOBAL hPaintStruct);
+ afx_msg void OnRenderAllFormats();
+ afx_msg void OnRenderFormat(UINT nFormat);
+ afx_msg void OnSizeClipboard(CWnd* pClipAppWnd, HGLOBAL hRect);
+ afx_msg void OnVScrollClipboard(CWnd* pClipAppWnd, UINT nSBCode, UINT nPos);
+
+// Control message handler member functions
+ afx_msg int OnCompareItem(int nIDCtl, LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ afx_msg void OnDeleteItem(int nIDCtl, LPDELETEITEMSTRUCT lpDeleteItemStruct);
+ afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
+ afx_msg UINT OnGetDlgCode();
+ afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ afx_msg int OnCharToItem(UINT nChar, CListBox* pListBox, UINT nIndex);
+ afx_msg int OnVKeyToItem(UINT nKey, CListBox* pListBox, UINT nIndex);
+
+// MDI message handler member functions
+ afx_msg void OnMDIActivate(BOOL bActivate,
+ CWnd* pActivateWnd, CWnd* pDeactivateWnd);
+
+// Menu loop notification messages
+ afx_msg void OnEnterMenuLoop(BOOL bIsTrackPopupMenu);
+ afx_msg void OnExitMenuLoop(BOOL bIsTrackPopupMenu);
+
+// Overridables and other helpers (for implementation of derived classes)
+protected:
+ // for deriving from a standard control
+ virtual WNDPROC* GetSuperWndProcAddr();
+
+ // for dialog data exchange and validation
+ virtual void DoDataExchange(CDataExchange* pDX);
+
+public:
+ // for translating Windows messages in main message pump
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+
+protected:
+ // for processing Windows messages
+ virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+
+ // for handling default processing
+ LRESULT Default();
+ virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+
+ // for custom cleanup after WM_NCDESTROY
+ virtual void PostNcDestroy();
+
+ // for notifications from parent
+ virtual BOOL OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam,
+ LRESULT* pResult);
+ // return TRUE if parent should not process this message
+
+// Implementation
+public:
+ virtual ~CWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+#ifndef _AFXCTL
+#ifndef _USRDLL
+ // 3D support (these APIs will be obsolete with next version of Windows)
+ BOOL SubclassCtl3d(int nControlType = -1);
+ // see CTL3D.H for list of control types
+ BOOL SubclassDlg3d(DWORD dwMask = 0xFFFF /*CTL3D_ALL*/);
+ // see CTL3D.H for list of mask values
+#endif
+#endif
+
+ // helper routines for implementation
+ BOOL HandleFloatingSysCommand(UINT nID, LPARAM lParam);
+ HWND GetFirstLevelChild(HWND hWndLevel);
+ BOOL IsTopParentActive() const;
+ void ActivateTopParent();
+ HWND FindNextControl(HWND hWnd, TCHAR ch);
+ static BOOL PASCAL WalkPreTranslateTree(HWND hWndStop, MSG* pMsg);
+ BOOL SendChildNotifyLastMsg(LRESULT* pResult = NULL);
+ BOOL ExecuteDlgInit(LPCTSTR lpszResourceName);
+ static BOOL PASCAL GrayCtlColor(HDC hDC, HWND hWnd, UINT nCtlColor,
+ HBRUSH hbrGray, COLORREF clrText);
+ HBRUSH OnGrayCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ static CWnd* PASCAL GetDescendantWindow(HWND hWnd, int nID,
+ BOOL bOnlyPerm);
+ static void PASCAL SendMessageToDescendants(HWND hWnd, UINT message,
+ WPARAM wParam, LPARAM lParam, BOOL bDeep, BOOL bOnlyPerm);
+ virtual BOOL IsFrameWnd() const; // IsKindOf(RUNTIME_CLASS(CFrameWnd)))
+ virtual void OnFinalRelease();
+ BOOL PreTranslateInput(LPMSG lpMsg);
+
+ // advanced scrolling functions for future versions of Windows
+ BOOL SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo,
+ BOOL bRedraw = TRUE);
+ BOOL GetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo);
+
+public:
+ HWND m_hWndOwner; // implementation of SetOwner and GetOwner
+
+protected:
+ WNDPROC m_pfnSuper; // for subclassing of controls
+ BOOL m_bTempHidden; // window is temporarily hidden
+
+ COleDropTarget* m_pDropTarget; // for automatic cleanup of drop target
+ friend class COleDropTarget;
+ friend class CFrameWnd;
+
+ // implementation of message dispatch/hooking
+ friend LRESULT CALLBACK _AfxSendMsgHook(int, WPARAM, LPARAM);
+ friend void AFXAPI _AfxStandardSubclass(HWND);
+ friend LRESULT AFXAPI AfxCallWndProc(CWnd*, HWND, UINT, WPARAM, LPARAM);
+
+ // standard message implementation
+ afx_msg LRESULT OnNTCtlColor(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnQuery3dControls(WPARAM, LPARAM);
+ afx_msg LRESULT OnDisplayChange(WPARAM, LPARAM);
+
+ //{{AFX_MSG(CWnd)
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+private:
+ CWnd(HWND hWnd); // just for special initialization
+};
+
+// helpers for registering your own WNDCLASSes
+LPCTSTR AFXAPI AfxRegisterWndClass(UINT nClassStyle,
+ HCURSOR hCursor = 0, HBRUSH hbrBackground = 0, HICON hIcon = 0);
+
+#if defined(_USRDLL) || defined(_AFXCTL)
+BOOL AFXAPI AfxRegisterClass(WNDCLASS* lpWndClass);
+#else
+#define AfxRegisterClass RegisterClass
+#endif
+
+// Implementation
+LRESULT CALLBACK AfxWndProc(HWND, UINT, WPARAM, LPARAM);
+
+WNDPROC AFXAPI AfxGetAfxWndProc();
+#define AfxWndProc (*AfxGetAfxWndProc())
+
+typedef void (AFX_MSG_CALL CWnd::*AFX_PMSGW)(void);
+ // like 'AFX_PMSG' but for CWnd derived classes only
+
+/////////////////////////////////////////////////////////////////////////////
+// CDialog - a modal or modeless dialog
+
+class CDialog : public CWnd
+{
+ DECLARE_DYNAMIC(CDialog)
+
+ // Modeless construct
+public:
+ CDialog();
+
+ BOOL Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
+ BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
+ BOOL CreateIndirect(const void* lpDialogTemplate, CWnd* pParentWnd = NULL);
+
+ // Modal construct
+public:
+ CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
+ CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
+
+ BOOL InitModalIndirect(HGLOBAL hDialogTemplate);
+ // was CModalDialog::Create() in MFC 1.0
+
+// Attributes
+public:
+ void MapDialogRect(LPRECT lpRect) const;
+ void SetHelpID(UINT nIDR);
+
+// Operations
+public:
+ // modal processing
+ virtual int DoModal();
+
+ // message processing for modeless
+ BOOL IsDialogMessage(LPMSG lpMsg);
+
+ // support for passing on tab control - use 'PostMessage' if needed
+ void NextDlgCtrl() const;
+ void PrevDlgCtrl() const;
+ void GotoDlgCtrl(CWnd* pWndCtrl);
+
+ // default button access
+ void SetDefID(UINT nID);
+ DWORD GetDefID() const;
+
+ // termination
+ void EndDialog(int nResult);
+
+// Overridables (special message map entries)
+ virtual BOOL OnInitDialog();
+ virtual void OnSetFont(CFont* pFont);
+protected:
+ virtual void OnOK();
+ virtual void OnCancel();
+
+// Implementation
+public:
+ virtual ~CDialog();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ BOOL CheckAutoCenter();
+
+protected:
+ UINT m_nIDHelp; // Help ID (0 for none, see HID_BASE_RESOURCE)
+
+ // parameters for 'DoModal'
+ LPCTSTR m_lpDialogTemplate; // name or MAKEINTRESOURCE
+ HGLOBAL m_hDialogTemplate; // Indirect if (lpDialogTemplate == NULL)
+ CWnd* m_pParentWnd;
+ HWND m_hWndTopLevel; // disabled top-level parent
+
+ // implementation helpers
+ HWND PreModal();
+ void PostModal();
+
+protected:
+ //{{AFX_MSG(CDialog)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg void OnSysColorChange();
+#endif
+ DECLARE_MESSAGE_MAP()
+};
+
+// all CModalDialog functionality is now in CDialog
+#define CModalDialog CDialog
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Windows controls
+
+class CStatic : public CWnd
+{
+ DECLARE_DYNAMIC(CStatic)
+
+// Constructors
+public:
+ CStatic();
+ BOOL Create(LPCTSTR lpszText, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff);
+
+ HICON SetIcon(HICON hIcon);
+ HICON GetIcon() const;
+
+// Implementation
+public:
+ virtual ~CStatic();
+};
+
+class CButton : public CWnd
+{
+ DECLARE_DYNAMIC(CButton)
+
+// Constructors
+public:
+ CButton();
+ BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ UINT GetState() const;
+ void SetState(BOOL bHighlight);
+ int GetCheck() const;
+ void SetCheck(int nCheck);
+ UINT GetButtonStyle() const;
+ void SetButtonStyle(UINT nStyle, BOOL bRedraw = TRUE);
+
+// Overridables (for owner draw only)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CButton();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CListBox : public CWnd
+{
+ DECLARE_DYNAMIC(CListBox)
+
+// Constructors
+public:
+ CListBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+
+ // for entire listbox
+ int GetCount() const;
+ int GetHorizontalExtent() const;
+ void SetHorizontalExtent(int cxExtent);
+ int GetTopIndex() const;
+ int SetTopIndex(int nIndex);
+ LCID GetLocale() const;
+ LCID SetLocale(LCID nNewLocale);
+
+ // for single-selection listboxes
+ int GetCurSel() const;
+ int SetCurSel(int nSelect);
+
+ // for multiple-selection listboxes
+ int GetSel(int nIndex) const; // also works for single-selection
+ int SetSel(int nIndex, BOOL bSelect = TRUE);
+ int GetSelCount() const;
+ int GetSelItems(int nMaxItems, LPINT rgIndex) const;
+ void SetAnchorIndex(int nIndex);
+ int GetAnchorIndex() const;
+
+ // for listbox items
+ DWORD GetItemData(int nIndex) const;
+ int SetItemData(int nIndex, DWORD dwItemData);
+ void* GetItemDataPtr(int nIndex) const;
+ int SetItemDataPtr(int nIndex, void* pData);
+ int GetItemRect(int nIndex, LPRECT lpRect) const;
+ int GetText(int nIndex, LPTSTR lpszBuffer) const;
+ int GetTextLen(int nIndex) const;
+ void GetText(int nIndex, CString& rString) const;
+
+ // Settable only attributes
+ void SetColumnWidth(int cxWidth);
+ BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
+ void SetTabStops();
+ BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
+
+ int SetItemHeight(int nIndex, UINT cyItemHeight);
+ int GetItemHeight(int nIndex) const;
+ int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const;
+ int GetCaretIndex() const;
+ int SetCaretIndex(int nIndex, BOOL bScroll = TRUE);
+
+// Operations
+ // manipulating listbox items
+ int AddString(LPCTSTR lpszItem);
+ int DeleteString(UINT nIndex);
+ int InsertString(int nIndex, LPCTSTR lpszItem);
+ void ResetContent();
+ int Dir(UINT attr, LPCTSTR lpszWildCard);
+
+ // selection helpers
+ int FindString(int nStartAfter, LPCTSTR lpszItem) const;
+ int SelectString(int nStartAfter, LPCTSTR lpszItem);
+ int SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem);
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+
+// Implementation
+public:
+ virtual ~CListBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CComboBox : public CWnd
+{
+ DECLARE_DYNAMIC(CComboBox)
+
+// Constructors
+public:
+ CComboBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ // for entire combo box
+ int GetCount() const;
+ int GetCurSel() const;
+ int SetCurSel(int nSelect);
+ LCID GetLocale() const;
+ LCID SetLocale(LCID nNewLocale);
+
+ // for edit control
+ DWORD GetEditSel() const;
+ BOOL LimitText(int nMaxChars);
+ BOOL SetEditSel(int nStartChar, int nEndChar);
+
+ // for combobox item
+ DWORD GetItemData(int nIndex) const;
+ int SetItemData(int nIndex, DWORD dwItemData);
+ void* GetItemDataPtr(int nIndex) const;
+ int SetItemDataPtr(int nIndex, void* pData);
+ int GetLBText(int nIndex, LPTSTR lpszText) const;
+ int GetLBTextLen(int nIndex) const;
+ void GetLBText(int nIndex, CString& rString) const;
+
+ int SetItemHeight(int nIndex, UINT cyItemHeight);
+ int GetItemHeight(int nIndex) const;
+ int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const;
+ int SetExtendedUI(BOOL bExtended = TRUE);
+ BOOL GetExtendedUI() const;
+ void GetDroppedControlRect(LPRECT lprect) const;
+ BOOL GetDroppedState() const;
+
+// Operations
+ // for drop-down combo boxes
+ void ShowDropDown(BOOL bShowIt = TRUE);
+
+ // manipulating listbox items
+ int AddString(LPCTSTR lpszString);
+ int DeleteString(UINT nIndex);
+ int InsertString(int nIndex, LPCTSTR lpszString);
+ void ResetContent();
+ int Dir(UINT attr, LPCTSTR lpszWildCard);
+
+ // selection helpers
+ int FindString(int nStartAfter, LPCTSTR lpszString) const;
+ int SelectString(int nStartAfter, LPCTSTR lpszString);
+
+ // Clipboard operations
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+
+// Implementation
+public:
+ virtual ~CComboBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CEdit : public CWnd
+{
+ DECLARE_DYNAMIC(CEdit)
+
+// Constructors
+public:
+ CEdit();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL CanUndo() const;
+ int GetLineCount() const;
+ BOOL GetModify() const;
+ void SetModify(BOOL bModified = TRUE);
+ void GetRect(LPRECT lpRect) const;
+ DWORD GetSel() const;
+ void GetSel(int& nStartChar, int& nEndChar) const;
+ HLOCAL GetHandle() const;
+ void SetHandle(HLOCAL hBuffer);
+
+ // NOTE: first word in lpszBuffer must contain the size of the buffer!
+ int GetLine(int nIndex, LPTSTR lpszBuffer) const;
+ int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
+
+// Operations
+ void EmptyUndoBuffer();
+ BOOL FmtLines(BOOL bAddEOL);
+
+ void LimitText(int nChars = 0);
+ int LineFromChar(int nIndex = -1) const;
+ int LineIndex(int nLine = -1) const;
+ int LineLength(int nLine = -1) const;
+ void LineScroll(int nLines, int nChars = 0);
+ void ReplaceSel(LPCTSTR lpszNewText);
+ void SetPasswordChar(TCHAR ch);
+ void SetRect(LPCRECT lpRect);
+ void SetRectNP(LPCRECT lpRect);
+ void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE);
+ void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = FALSE);
+#ifndef _MAC
+ BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
+ void SetTabStops();
+ BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
+#endif
+
+ // Clipboard operations
+ BOOL Undo();
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+ BOOL SetReadOnly(BOOL bReadOnly = TRUE);
+ int GetFirstVisibleLine() const;
+ TCHAR GetPasswordChar() const;
+
+// Implementation
+public:
+ virtual ~CEdit();
+};
+
+class CScrollBar : public CWnd
+{
+ DECLARE_DYNAMIC(CScrollBar)
+
+// Constructors
+public:
+ CScrollBar();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetScrollPos() const;
+ int SetScrollPos(int nPos, BOOL bRedraw = TRUE);
+ void GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const;
+ void SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw = TRUE);
+ void ShowScrollBar(BOOL bShow = TRUE);
+
+ BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);
+
+// Implementation
+public:
+ virtual ~CScrollBar();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFrameWnd - base class for SDI and other frame windows
+
+// Frame window styles
+#define FWS_ADDTOTITLE 0x00008000L // modify title based on content
+#define FWS_PREFIXTITLE 0x00004000L // show document name before app name
+#define FWS_SNAPTOBARS 0x00002000L // snap size to size of contained bars
+
+struct CPrintPreviewState; // forward reference (see afxext.h)
+class CControlBar; // forward reference (see afxext.h)
+
+class CDockBar; // forward reference (see afxpriv.h)
+class CMiniDockFrameWnd; // forward reference (see afxpriv.h)
+class CDockState; // forward reference (see afxpriv.h)
+
+class COleFrameHook; // forward reference (see ..\src\oleimpl.h)
+
+class CFrameWnd : public CWnd
+{
+ DECLARE_DYNCREATE(CFrameWnd)
+
+// Constructors
+public:
+ static AFX_DATA const CRect rectDefault;
+ CFrameWnd();
+
+ BOOL LoadAccelTable(LPCTSTR lpszResourceName);
+ BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName,
+ DWORD dwStyle = WS_OVERLAPPEDWINDOW,
+ const RECT& rect = rectDefault,
+ CWnd* pParentWnd = NULL, // != NULL for popups
+ LPCTSTR lpszMenuName = NULL,
+ DWORD dwExStyle = 0,
+ CCreateContext* pContext = NULL);
+
+ // dynamic creation - load frame and associated resources
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+
+// Attributes
+ virtual CDocument* GetActiveDocument();
+
+ // Active child view maintenance
+ CView* GetActiveView() const; // active view or NULL
+ void SetActiveView(CView* pViewNew, BOOL bNotify = TRUE);
+ // active view or NULL, bNotify == FALSE if focus should not be set
+
+ // Active frame (for frames within frames -- MDI)
+ virtual CFrameWnd* GetActiveFrame();
+
+ // For customizing the default messages on the status bar
+ virtual void GetMessageString(UINT nID, CString& rMessage) const;
+
+ BOOL m_bAutoMenuEnable;
+ // TRUE => menu items without handlers will be disabled
+
+// Operations
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ virtual void ActivateFrame(int nCmdShow = -1);
+
+ // to set text of standard status bar
+ void SetMessageText(LPCTSTR lpszText);
+ void SetMessageText(UINT nID);
+
+ // control bar docking
+ void EnableDocking(DWORD dwDockStyle);
+ void DockControlBar(CControlBar* pBar, UINT nDockBarID = 0,
+ LPCRECT lpRect = NULL);
+ void FloatControlBar(CControlBar* pBar, CPoint point,
+ DWORD dwStyle = CBRS_ALIGN_TOP);
+ CControlBar* GetControlBar(UINT nID);
+
+ // saving and loading control bar state
+ void LoadBarState(LPCTSTR lpszProfileName);
+ void SaveBarState(LPCTSTR lpszProfileName) const;
+
+// Overridables
+ virtual void OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState);
+protected:
+ virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+
+// Command Handlers
+public:
+ afx_msg void OnContextHelp(); // for Shift+F1 help
+
+// Implementation
+public:
+ virtual ~CFrameWnd();
+ int m_nWindow; // general purpose window number - display as ":n"
+ // -1 => unknown, 0 => only window viewing document
+ // 1 => first of many windows viewing document, 2=> second
+
+ HMENU m_hMenuDefault; // default menu resource for this frame
+ HACCEL m_hAccelTable; // accelerator table
+ DWORD m_dwPromptContext; // current help prompt context for message box
+ BOOL m_bHelpMode; // if TRUE, then Shift+F1 help mode is active
+ BOOL m_bStayActive; // if TRUE, then caption is forced active
+ CFrameWnd* m_pNextFrameWnd; // next CFrameWnd in app global list
+ CRect m_rectBorder; // for OLE 2.0 border space negotiation
+ COleFrameHook* m_pNotifyHook;
+
+ CPtrList m_listControlBars; // array of all control bars that have this
+ // window as their dock site
+ BOOL m_bModalDisable; // TRUE if BeginModalState for WM_ENABLE
+ int m_nShowDelay; // SW_ command for delay show/hide
+
+ CMiniDockFrameWnd* CreateFloatingFrame(DWORD dwStyle);
+ DWORD CanDock(CRect rect, DWORD dwDockStyle,
+ CDockBar** ppDockBar = NULL); // called by CDockContext
+ void AddControlBar(CControlBar *pBar);
+ void RemoveControlBar(CControlBar *pBar);
+ void DockControlBar(CControlBar* pBar, CDockBar* pDockBar,
+ LPCRECT lpRect = NULL);
+ void NotifyFloatingWindows(DWORD dwFlags);
+ void ShowControlBar(CControlBar* pBar, BOOL bShow, BOOL bDelay);
+ void DestroyDockBars();
+ // for loading and saving control bar state
+ void SetDockState(const CDockState& state);
+ void GetDockState(CDockState& state) const;
+
+protected:
+ UINT m_nIDHelp; // Help ID (0 for none, see HID_BASE_RESOURCE)
+ UINT m_nIDTracking; // tracking command ID or string IDS
+ UINT m_nIDLastMessage; // last displayed message string IDS
+ CView* m_pViewActive; // current active view
+ BOOL (CALLBACK* m_lpfnCloseProc)(CFrameWnd* pFrameWnd);
+ UINT m_cModalStack; // BeginModalState depth
+ HWND* m_phWndDisable; // windows disabled because of BeginModalState
+ HMENU m_hMenuAlt; // menu to update to (NULL means default)
+ CString m_strTitle; // default title (original)
+ BOOL m_bInRecalcLayout; // avoid recursion in RecalcLayout
+ CRuntimeClass* m_pFloatingFrameClass;
+ static const DWORD dwDockBarMap[4][2];
+
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL IsFrameWnd() const;
+ BOOL IsTracking() const;
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual CWnd* GetMessageBar();
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
+ virtual HACCEL GetDefaultAccelerator();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ void InitialUpdateFrame(CDocument* pDoc, BOOL bMakeVisible);
+
+ // idle update of frame user interface
+ enum IdleFlags
+ { idleMenu = 1, idleTitle = 2, idleNotify = 4, idleLayout = 8 };
+ UINT m_nIdleFlags; // set of bit flags for idle processing
+ virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
+ void DelayUpdateFrameTitle();
+ void DelayRecalcLayout(BOOL bNotify = TRUE);
+
+ // border space negotiation
+ enum BorderCmd
+ { borderGet = 1, borderRequest = 2, borderSet = 3 };
+ virtual BOOL NegotiateBorderSpace(UINT nBorderCmd, LPRECT lpRectBorder);
+
+ // frame window based modality
+ void BeginModalState();
+ void EndModalState();
+ BOOL InModalState() const;
+ void ShowOwnedWindows(BOOL bShow);
+
+ // for Shift+F1 help support
+ BOOL CanEnterHelpMode();
+ virtual void ExitHelpMode();
+
+protected:
+ // implementation helpers
+ LPCTSTR GetIconWndClass(DWORD dwDefaultStyle, UINT nIDResource);
+ void UpdateFrameTitleForDocument(LPCTSTR lpszDocName);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual void PostNcDestroy(); // default to delete this.
+ int OnCreateHelper(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+ void BringToTop(int nCmdShow);
+ // bring window to top for SW_ commands which affect z-order
+
+ // implementation helpers for Shift+F1 help mode
+ BOOL ProcessHelpMsg(MSG& msg, DWORD* pContext);
+ HWND SetHelpCapture(POINT point, BOOL* pbDescendant);
+
+ // CFrameWnd list management
+ void AddFrameWnd();
+ void RemoveFrameWnd();
+
+ friend class CWnd; // for access to m_bModalDisable
+
+ //{{AFX_MSG(CFrameWnd)
+ // Windows messages
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg void OnClose();
+ afx_msg void OnInitMenuPopup(CMenu*, UINT, BOOL);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnSysCommand(UINT nID, LONG lParam);
+ afx_msg BOOL OnQueryEndSession();
+ afx_msg void OnEndSession(BOOL bEnding);
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnActivateTopLevel(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnEnable(BOOL bEnable);
+ // standard commands
+ afx_msg BOOL OnToolTipText(UINT nID, NMHDR* pNMHDR, LRESULT* pResult);
+ afx_msg void OnUpdateKeyIndicator(CCmdUI* pCmdUI);
+ afx_msg void OnHelp();
+ afx_msg void OnUpdateContextHelp(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+public:
+ afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnBarCheck(UINT nID);
+protected:
+#ifndef _MAC
+ afx_msg LRESULT OnDDEInitiate(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnDDEExecute(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnDDETerminate(WPARAM wParam, LPARAM lParam);
+#endif
+#ifdef _MAC
+ afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
+ afx_msg void OnPaint();
+#endif
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// MDI Support
+
+#ifndef _AFXCTL
+class CMDIFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMDIFrameWnd)
+
+public:
+// Constructors
+ CMDIFrameWnd();
+
+// Operations
+ void MDIActivate(CWnd* pWndActivate);
+ CMDIChildWnd* MDIGetActive(BOOL* pbMaximized = NULL) const;
+ void MDIIconArrange();
+ void MDIMaximize(CWnd* pWnd);
+ void MDINext();
+ void MDIRestore(CWnd* pWnd);
+ CMenu* MDISetMenu(CMenu* pFrameMenu, CMenu* pWindowMenu);
+ void MDITile();
+ void MDICascade();
+ void MDITile(int nType);
+ void MDICascade(int nType);
+
+// Overridables
+ // MFC 1.0 backward compatible CreateClient hook (called by OnCreateClient)
+ virtual BOOL CreateClient(LPCREATESTRUCT lpCreateStruct, CMenu* pWindowMenu);
+ // customize if using an 'Window' menu with non-standard IDs
+ virtual HMENU GetWindowMenuPopup(HMENU hMenuBar);
+
+// Implementation
+public:
+ HWND m_hWndMDIClient; // MDI Client window handle
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+ virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
+ virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
+ virtual CFrameWnd* GetActiveFrame();
+
+protected:
+ virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+
+ //{{AFX_MSG(CMDIFrameWnd)
+ afx_msg void OnDestroy();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnUpdateMDIWindowCmd(CCmdUI* pCmdUI);
+ afx_msg BOOL OnMDIWindowCmd(UINT nID);
+ afx_msg void OnWindowNew();
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+class CMDIChildWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMDIChildWnd)
+
+// Constructors
+public:
+ CMDIChildWnd();
+
+ BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,
+ const RECT& rect = rectDefault,
+ CMDIFrameWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+
+// Attributes
+ CMDIFrameWnd* GetMDIFrame();
+
+// Operations
+ void MDIDestroy();
+ void MDIActivate();
+ void MDIMaximize();
+ void MDIRestore();
+
+// Implementation
+protected:
+ HMENU m_hMenuShared; // menu when we are active
+
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle,
+ CWnd* pParentWnd, CCreateContext* pContext = NULL);
+ // 'pParentWnd' parameter is required for MDI Child
+ virtual BOOL DestroyWindow();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void ActivateFrame(int nCmdShow = -1);
+ virtual void OnUpdateFrameMenu(BOOL bActive, CWnd* pActivateWnd,
+ HMENU hMenuAlt);
+
+ BOOL m_bPseudoInactive; // TRUE if window is MDI active according to
+ // windows, but not according to MFC...
+
+protected:
+ virtual CWnd* GetMessageBar();
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ BOOL UpdateClientEdge(LPRECT lpRect = NULL);
+
+ //{{AFX_MSG(CMDIChildWnd)
+ afx_msg void OnMDIActivate(BOOL bActivate, CWnd*, CWnd*);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+#endif //!_AFXCTL
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd
+
+// MiniFrame window styles
+#define MFS_SYNCACTIVE 0x00000100L // syncronize activation w/ parent
+#define MFS_4THICKFRAME 0x00000200L // thick frame all around (no tiles)
+#define MFS_THICKFRAME 0x00000400L // use instead of WS_THICKFRAME
+#define MFS_MOVEFRAME 0x00000800L // no sizing, just moving
+#define MFS_BLOCKSYSMENU 0x00001000L // block hit testing on system menu
+
+class CMiniFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMiniFrameWnd)
+
+// Constructors
+public:
+ CMiniFrameWnd();
+ BOOL Create(LPCTSTR lpClassName, LPCTSTR lpWindowName,
+ DWORD dwStyle, const RECT& rect,
+ CWnd* pParentWnd = NULL, UINT nID = 0);
+
+// Implementation
+public:
+ ~CMiniFrameWnd();
+
+ //{{AFX_MSG(CMiniFrameWnd)
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpParams);
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint pt );
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint pt );
+ afx_msg void OnMouseMove(UINT nFlags, CPoint pt );
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnGetMinMaxInfo(MINMAXINFO* pMMI);
+ afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnFloatStatus(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnQueryCenterWnd(WPARAM wParam, LPARAM lParam);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg LRESULT OnMacintosh(WPARAM wParam, LPARAM lParam);
+#endif
+ DECLARE_MESSAGE_MAP()
+
+public:
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+protected:
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+protected:
+ BOOL m_bSysTracking;
+ BOOL m_bInSys;
+ BOOL m_bActive;
+ CString m_strCaption;
+
+ void InvertSysMenu();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CView is the client area UI for a document
+
+class CPrintDialog; // forward reference (see afxdlgs.h)
+class CPreviewView; // forward reference (see afxpriv.h)
+class CSplitterWnd; // forward reference (see afxext.h)
+class COleServerDoc; // forward reference (see afxole.h)
+
+typedef DWORD DROPEFFECT;
+class COleDataObject; // forward reference (see afxole.h)
+
+class CView : public CWnd
+{
+ DECLARE_DYNAMIC(CView)
+
+// Constructors
+protected:
+ CView();
+
+// Attributes
+public:
+ CDocument* GetDocument() const;
+
+// Operations
+public:
+ // for standard printing setup (override OnPreparePrinting)
+ BOOL DoPreparePrinting(CPrintInfo* pInfo);
+
+// Overridables
+public:
+ virtual BOOL IsSelected(const CObject* pDocItem) const; // support for OLE
+
+ // OLE 2.0 scrolling support (used for drag/drop as well)
+ virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
+ virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
+
+ // OLE 2.0 drag/drop support
+ virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual void OnDragLeave();
+ virtual BOOL OnDrop(COleDataObject* pDataObject,
+ DROPEFFECT dropEffect, CPoint point);
+
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+
+ virtual void OnInitialUpdate(); // called first time after construct
+
+protected:
+ // Activation
+ virtual void OnActivateView(BOOL bActivate, CView* pActivateView,
+ CView* pDeactiveView);
+
+ // General drawing/updating
+ virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
+ virtual void OnDraw(CDC* pDC) = 0;
+
+ // Printing support
+ virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
+ // must override to enable printing and print preview
+
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
+
+ // Advanced: end print preview mode, move to point
+ virtual void OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point,
+ CPreviewView* pView);
+
+// Implementation
+public:
+ virtual ~CView();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+ // Advanced: for implementing custom print preview
+ BOOL DoPrintPreview(UINT nIDResource, CView* pPrintView,
+ CRuntimeClass* pPreviewViewClass, CPrintPreviewState* pState);
+
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+ virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
+ static CSplitterWnd* PASCAL GetParentSplitter(
+ const CWnd* pWnd, BOOL bAnyState);
+
+protected:
+ CDocument* m_pDocument;
+
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual void PostNcDestroy();
+ virtual void OnActivateFrame(UINT nState, CFrameWnd* pFrameWnd);
+
+ // friend classes that call protected CView overridables
+ friend class CDocument;
+ friend class CDocTemplate;
+ friend class CPreviewView;
+ friend class CFrameWnd;
+#ifndef _AFXCTL
+ friend class CMDIFrameWnd;
+ friend class CMDIChildWnd;
+#endif
+ friend class CSplitterWnd;
+ friend class COleServerDoc;
+
+ //{{AFX_MSG(CView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnDestroy();
+ afx_msg void OnPaint();
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ // commands
+ afx_msg void OnUpdateSplitCmd(CCmdUI* pCmdUI);
+ afx_msg BOOL OnSplitCmd(UINT nID);
+ afx_msg void OnUpdateNextPaneMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnNextPaneCmd(UINT nID);
+
+ // not mapped commands - must be mapped in derived class
+ afx_msg void OnFilePrint();
+ afx_msg void OnFilePrintPreview();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CScrollView supports simple scrolling and scaling
+
+class CScrollView : public CView
+{
+ DECLARE_DYNAMIC(CScrollView)
+
+// Constructors
+protected:
+ CScrollView();
+
+public:
+ static AFX_DATA const SIZE sizeDefault;
+ // used to specify default calculated page and line sizes
+
+ // in logical units - call one of the following Set routines
+ void SetScaleToFitSize(SIZE sizeTotal);
+ void SetScrollSizes(int nMapMode, SIZE sizeTotal,
+ const SIZE& sizePage = sizeDefault,
+ const SIZE& sizeLine = sizeDefault);
+
+// Attributes
+public:
+ CPoint GetScrollPosition() const; // upper corner of scrolling
+ CSize GetTotalSize() const; // logical size
+
+ // for device units
+ CPoint GetDeviceScrollPosition() const;
+ void GetDeviceScrollSizes(int& nMapMode, SIZE& sizeTotal,
+ SIZE& sizePage, SIZE& sizeLine) const;
+
+// Operations
+public:
+ void ScrollToPosition(POINT pt); // set upper left position
+ void FillOutsideRect(CDC* pDC, CBrush* pBrush);
+ void ResizeParentToFit(BOOL bShrinkOnly = TRUE);
+
+// Implementation
+protected:
+ int m_nMapMode;
+ CSize m_totalLog; // total size in logical units (no rounding)
+ CSize m_totalDev; // total size in device units
+ CSize m_pageDev; // per page scroll size in device units
+ CSize m_lineDev; // per line scroll size in device units
+
+ BOOL m_bCenter; // Center output if larger than total size
+ BOOL m_bInsideUpdate; // internal state for OnSize callback
+ void CenterOnPoint(CPoint ptCenter);
+ void ScrollToDevicePosition(POINT ptDev); // explicit scrolling no checking
+
+protected:
+ virtual void OnDraw(CDC* pDC) = 0; // pass on pure virtual
+
+ void UpdateBars(); // adjust scrollbars etc
+ BOOL GetTrueClientSize(CSize& size, CSize& sizeSb);
+ // size with no bars
+ void GetScrollBarSizes(CSize& sizeSb);
+ void GetScrollBarState(CSize sizeClient, CSize& needSb,
+ CSize& sizeRange, CPoint& ptMove, BOOL bInsideClient);
+ int GetScrollLimit(int nBar);
+
+public:
+ virtual ~CScrollView();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+ void DoScrollWindow(int xAmount, int yAmount);
+
+ // scrolling implementation support for OLE 2.0
+ virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
+ virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
+
+ //{{AFX_MSG(CScrollView)
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWinThread
+
+typedef UINT (AFX_CDECL *AFX_THREADPROC)(LPVOID);
+
+class CWinThread : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CWinThread)
+
+public:
+// Constructors
+ CWinThread();
+ BOOL CreateThread(DWORD dwCreateFlags = 0, UINT nStackSize = 0,
+ LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+
+// Attributes
+ CWnd* m_pMainWnd; // main window (usually same AfxGetApp()->m_pMainWnd)
+ CWnd* m_pActiveWnd; // active main window (may not be m_pMainWnd)
+ BOOL m_bAutoDelete; // enables 'delete this' after thread termination
+
+ // only valid while running
+ HANDLE m_hThread; // this thread's HANDLE
+ DWORD m_nThreadID; // this thread's ID
+
+ int GetThreadPriority();
+ BOOL SetThreadPriority(int nPriority);
+
+// Operations
+ DWORD SuspendThread();
+ DWORD ResumeThread();
+
+// Overridables
+ // thread initialization
+ virtual BOOL InitInstance();
+
+ // running and idle processing
+ virtual int Run();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
+
+ // thread termination
+ virtual int ExitInstance(); // default will 'delete this'
+
+ // Advanced: exception handling
+ virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg);
+
+ // Advanced: handling messages sent to message filter hook
+ virtual BOOL ProcessMessageFilter(int code, LPMSG lpMsg);
+
+ // Advanced: virtual access to m_pMainWnd
+ virtual CWnd* GetMainWnd();
+
+// Implementation
+public:
+ virtual ~CWinThread();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ int m_nDisablePumpCount; // Diagnostic trap to detect illegal re-entrancy
+#endif
+ void CommonConstruct();
+ virtual void Delete();
+ // 'delete this' only if m_bAutoDelete == TRUE
+
+ // message pump for Run
+ MSG m_msgCur; // current message
+ virtual BOOL PumpMessage(); // low level message pump
+ virtual BOOL IsIdleMessage(MSG* pMsg); // checks for special messages
+
+public:
+ // constructor used by implementation of AfxBeginThread
+ CWinThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam);
+
+ // valid after construction
+ LPVOID m_pThreadParams; // generic parameters passed to starting function
+ AFX_THREADPROC m_pfnThreadProc;
+
+protected:
+ CPoint m_ptCursorLast; // last mouse position
+ UINT m_nMsgLast; // last mouse message
+};
+
+// global helpers for threads
+
+CWinThread* AFXAPI AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam,
+ int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,
+ DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+CWinThread* AFXAPI AfxBeginThread(CRuntimeClass* pThreadClass,
+ int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,
+ DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+
+CWinThread* AFXAPI AfxGetThread();
+void AFXAPI AfxEndThread(UINT nExitCode);
+
+/////////////////////////////////////////////////////////////////////////////
+// Global functions for access to the one and only CWinApp
+
+#define afxCurrentWinApp AfxGetCoreState()->m_pCurrentWinApp
+#define afxCurrentInstanceHandle AfxGetCoreState()->m_hCurrentInstanceHandle
+#define afxCurrentResourceHandle AfxGetCoreState()->m_hCurrentResourceHandle
+#define afxCurrentAppName AfxGetCoreState()->m_lpszCurrentAppName
+
+// Advanced initialization: for overriding default WinMain
+BOOL AFXAPI AfxWinInit(HINSTANCE, HINSTANCE, LPTSTR, int);
+void AFXAPI AfxWinTerm();
+
+// Global Windows state data helper functions (inlines)
+CWinApp* AFXAPI AfxGetApp();
+CWnd* AFXAPI AfxGetMainWnd();
+HINSTANCE AFXAPI AfxGetInstanceHandle();
+HINSTANCE AFXAPI AfxGetResourceHandle();
+void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource);
+LPCTSTR AFXAPI AfxGetAppName();
+
+// Use instead of PostQuitMessage in OLE server applications
+void AFXAPI AfxPostQuitMessage(int nExitCode);
+
+// Use AfxFindResourceHandle to find resource in chain of extension DLLs
+HINSTANCE AFXAPI AfxFindResourceHandle(LPCTSTR lpszName, LPCTSTR lpszType);
+
+// In non-AFXDLL, the resource handle is always AfxGetResourceHandle
+#ifndef _AFXDLL
+#define AfxFindResourceHandle(lpszResource, lpszType) AfxGetResourceHandle()
+#endif
+
+class COleMessageFilter; // forward reference (see afxole.h)
+class CRecentFileList; // forward reference (see afxpriv.h)
+
+// access to message filter in CWinApp
+COleMessageFilter* AFXAPI AfxOleGetMessageFilter();
+
+/////////////////////////////////////////////////////////////////////////////
+// CWinApp - the root of all Windows applications
+
+#define _AFX_MRU_COUNT 4 // default support for 4 entries in file MRU
+#define _AFX_MRU_MAX_COUNT 16 // currently allocated id range supports 16
+
+class CWinApp : public CWinThread
+{
+ DECLARE_DYNAMIC(CWinApp)
+public:
+
+// Constructor
+ CWinApp(LPCTSTR lpszAppName = NULL); // app name defaults to EXE name
+
+// Attributes
+ // Startup args (do not change)
+ HINSTANCE m_hInstance;
+ HINSTANCE m_hPrevInstance;
+ LPTSTR m_lpCmdLine;
+ int m_nCmdShow;
+
+ // Running args (can be changed in InitInstance)
+ LPCTSTR m_pszAppName; // human readable name
+ // (from constructor or AFX_IDS_APP_TITLE)
+ LPCTSTR m_pszRegistryKey; // used for registry entries
+
+ // Support for Shift+F1 help mode.
+ BOOL m_bHelpMode; // are we in Shift+F1 mode?
+
+#ifdef _MAC
+ // Support for AppleEvent interaction levels
+ enum SaveOption
+ {
+ saveYes, // always save modified documents
+ saveNo, // never save modified documents
+ saveAsk // ask user whether to save modified documents
+ };
+ SaveOption m_nSaveOption;
+#endif
+
+public: // set in constructor to override default
+ LPCTSTR m_pszExeName; // executable name (no spaces)
+ LPCTSTR m_pszHelpFilePath; // default based on module path
+ LPCTSTR m_pszProfileName; // default based on app name
+
+// Initialization Operations - should be done in InitInstance
+protected:
+ void LoadStdProfileSettings(UINT nMaxMRU = _AFX_MRU_COUNT); // load MRU file list and last preview state
+ void EnableShellOpen();
+
+ void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192),
+ COLORREF clrCtlText = RGB(0, 0, 0));
+ // set dialog box and message box background color
+
+ void SetRegistryKey(LPCTSTR lpszRegistryKey);
+ void SetRegistryKey(UINT nIDRegistryKey);
+ // enables app settings in registry instead of INI files
+ // (registry key is usually a "company name")
+
+#ifdef _MAC
+ friend void CFrameWnd::OnSysColorChange();
+ friend void CDialog::OnSysColorChange();
+#endif
+
+#ifndef _AFXCTL
+#ifndef _USRDLL
+ BOOL Enable3dControls(); // use CTL3D32.DLL for 3D controls in dialogs
+#endif
+#endif
+
+ void RegisterShellFileTypes();
+ // call after all doc templates are registered
+
+// Helper Operations - usually done in InitInstance
+public:
+ // Cursors
+ HCURSOR LoadCursor(LPCTSTR lpszResourceName) const;
+ HCURSOR LoadCursor(UINT nIDResource) const;
+ HCURSOR LoadStandardCursor(LPCTSTR lpszCursorName) const; // for IDC_ values
+ HCURSOR LoadOEMCursor(UINT nIDCursor) const; // for OCR_ values
+
+ // Icons
+ HICON LoadIcon(LPCTSTR lpszResourceName) const;
+ HICON LoadIcon(UINT nIDResource) const;
+ HICON LoadStandardIcon(LPCTSTR lpszIconName) const; // for IDI_ values
+ HICON LoadOEMIcon(UINT nIDIcon) const; // for OIC_ values
+
+ // Profile settings (to the app specific .INI file, or registry)
+ UINT GetProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault);
+ BOOL WriteProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue);
+ CString GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPCTSTR lpszDefault = NULL);
+ BOOL WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPCTSTR lpszValue);
+
+// Running Operations - to be done on a running application
+ // Dealing with document templates
+ void AddDocTemplate(CDocTemplate* pTemplate);
+
+ // Dealing with files
+ virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName); // open named file
+ virtual void AddToRecentFileList(LPCTSTR lpszPathName); // add to MRU
+
+ // Printer DC Setup routine, 'struct tagPD' is a PRINTDLG structure
+#ifndef _UNICODE
+ BOOL GetPrinterDeviceDefaults(struct tagPDA* pPrintDlg);
+#else
+ BOOL GetPrinterDeviceDefaults(struct tagPDW* pPrintDlg);
+#endif
+
+ // Command line parsing
+ BOOL RunEmbedded();
+ BOOL RunAutomated();
+
+// Overridables
+ // hooks for your initialization code
+ virtual BOOL InitApplication();
+ virtual BOOL InitInstance();
+#ifdef _MAC
+ virtual BOOL CreateInitialDocument();
+#endif
+
+ // running and idle processing
+ virtual int Run();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
+
+ // exiting
+ virtual BOOL SaveAllModified(); // save before exit
+ virtual int ExitInstance(); // return app exit code
+
+ // Advanced: to override message boxes and other hooks
+ virtual int DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt);
+ virtual BOOL ProcessMessageFilter(int code, LPMSG lpMsg);
+ virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg);
+ virtual void DoWaitCursor(int nCode); // 0 => restore, 1=> begin, -1=> end
+
+#ifndef _MAC
+ // Advanced: process async DDE request
+ virtual BOOL OnDDECommand(LPTSTR lpszCommand);
+#endif
+
+ // Advanced: Help support
+ virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
+
+
+// Command Handlers
+protected:
+ // map to the following for file new/open
+ afx_msg void OnFileNew();
+ afx_msg void OnFileOpen();
+
+ // map to the following to enable print setup
+ afx_msg void OnFilePrintSetup();
+
+ // map to the following to enable help
+ afx_msg void OnContextHelp(); // shift-F1
+ afx_msg void OnHelp(); // F1 (uses current context)
+ afx_msg void OnHelpIndex(); // ID_HELP_INDEX, ID_DEFAULT_HELP
+ afx_msg void OnHelpUsing(); // ID_HELP_USING
+
+// Implementation
+protected:
+ HGLOBAL m_hDevMode; // printer Dev Mode
+ HGLOBAL m_hDevNames; // printer Device Names
+ DWORD m_dwPromptContext; // help context override for message box
+
+ int m_nWaitCursorCount; // for wait cursor (>0 => waiting)
+ HCURSOR m_hcurWaitCursorRestore; // old cursor to restore after wait cursor
+
+ CRecentFileList* m_pRecentFileList;
+
+ void UpdatePrinterSelection(BOOL bForceDefaults);
+ void SaveStdProfileSettings(); // save options to .INI file
+
+public: // public for implementation access
+ CPtrList m_templateList; // list of templates
+
+ ATOM m_atomApp, m_atomSystemTopic; // for DDE open
+ UINT m_nNumPreviewPages; // number of default printed pages
+
+ size_t m_nSafetyPoolSize; // ideal size
+
+ void (CALLBACK* m_lpfnOleFreeLibraries)();
+ void (CALLBACK* m_lpfnOleTerm)(BOOL);
+ COleMessageFilter* m_pMessageFilter;
+
+ void DevModeChange(LPTSTR lpDeviceName);
+ void SetCurrentHandles();
+ int GetOpenDocumentCount();
+
+ // helpers for standard commdlg dialogs
+ BOOL DoPromptFileName(CString& fileName, UINT nIDSTitle,
+ DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate);
+ int DoPrintDialog(CPrintDialog* pPD);
+
+ void EnableModeless(BOOL bEnable); // to disable OLE in-place dialogs
+
+public:
+ virtual ~CWinApp();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+#ifndef _MAC
+ // helpers for registration
+ HKEY GetSectionKey(LPCTSTR lpszSection);
+ HKEY GetAppRegistryKey();
+#endif
+
+ void HideApplication(); // hide application before closing docs
+ void CloseAllDocuments(BOOL bEndSession);
+ // close documents before exiting
+
+protected:
+ //{{AFX_MSG(CWinApp)
+ afx_msg void OnAppExit();
+ afx_msg void OnUpdateRecentFileMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnOpenRecentFile(UINT nID);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CDocTemplate creates documents
+
+class CDocTemplate : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDocTemplate)
+
+// Constructors
+protected:
+ CDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+
+// Attributes
+public:
+ // setup for OLE containers
+ void SetContainerInfo(UINT nIDOleInPlaceContainer);
+
+ // setup for OLE servers
+ void SetServerInfo(UINT nIDOleEmbedding, UINT nIDOleInPlaceServer = 0,
+ CRuntimeClass* pOleFrameClass = NULL, CRuntimeClass* pOleViewClass = NULL);
+
+ // iterating over open documents
+ virtual POSITION GetFirstDocPosition() const = 0;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const = 0;
+
+// Operations
+public:
+ virtual void AddDocument(CDocument* pDoc); // must override
+ virtual void RemoveDocument(CDocument* pDoc); // must override
+
+ enum DocStringIndex
+ {
+ windowTitle, // default window title
+ docName, // user visible name for default document
+ fileNewName, // user visible name for FileNew
+ // for file based documents:
+#ifndef _MAC
+ filterName, // user visible name for FileOpen
+ filterExt, // user visible extension for FileOpen
+#else
+ filterWinName, // user visible name for FileOpen
+ filterWinExt, // user visible extension for FileOpen
+#endif
+ // for file based documents with Shell open support:
+ regFileTypeId, // REGEDIT visible registered file type identifier
+ regFileTypeName, // Shell visible registered file type name
+ // for Macintosh file based documents:
+#ifdef _MAC
+ filterExt, // Macintosh file type for FileOpen
+ filterName // user visible name for Macintosh FileOpen
+#else
+ filterMacExt, // Macintosh file type for FileOpen
+ filterMacName // user visible name for Macintosh FileOpen
+#endif
+ };
+ virtual BOOL GetDocString(CString& rString,
+ enum DocStringIndex index) const; // get one of the info strings
+
+// Overridables
+public:
+ enum Confidence
+ {
+ noAttempt,
+ maybeAttemptForeign,
+ maybeAttemptNative,
+ yesAttemptForeign,
+ yesAttemptNative,
+ yesAlreadyOpen
+ };
+#ifndef _MAC
+ virtual Confidence MatchDocType(LPCTSTR lpszPathName,
+ CDocument*& rpDocMatch);
+#else
+ virtual Confidence MatchDocType(LPCTSTR lpszFileName,
+ DWORD dwFileType, CDocument*& rpDocMatch);
+#endif
+ virtual CDocument* CreateNewDocument();
+ virtual CFrameWnd* CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther);
+ virtual void InitialUpdateFrame(CFrameWnd* pFrame, CDocument* pDoc,
+ BOOL bMakeVisible = TRUE);
+ virtual BOOL SaveAllModified(); // for all documents
+ virtual void CloseAllDocuments(BOOL bEndSession);
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE) = 0;
+ // open named file
+ // if lpszPathName == NULL => create new file with this type
+ virtual void SetDefaultTitle(CDocument* pDocument) = 0;
+
+// Implementation
+public:
+ virtual ~CDocTemplate();
+
+ // back pointer to OLE or other server (NULL if none or disabled)
+ CObject* m_pAttachedFactory;
+
+ // menu & accelerator resources for in-place container
+ HMENU m_hMenuInPlace;
+ HACCEL m_hAccelInPlace;
+
+ // menu & accelerator resource for server editing embedding
+ HMENU m_hMenuEmbedding;
+ HACCEL m_hAccelEmbedding;
+
+ // menu & accelerator resource for server editing in-place
+ HMENU m_hMenuInPlaceServer;
+ HACCEL m_hAccelInPlaceServer;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif
+ virtual void OnIdle(); // for all documents
+
+ // implementation helpers
+ CFrameWnd* CreateOleFrame(CWnd* pParentWnd, CDocument* pDoc,
+ BOOL bCreateView);
+
+protected: // standard implementation
+ UINT m_nIDResource; // IDR_ for frame/menu/accel as well
+ UINT m_nIDServerResource; // IDR_ for OLE frame/menu/accel
+ CRuntimeClass* m_pDocClass; // class for creating new documents
+ CRuntimeClass* m_pFrameClass; // class for creating new frames
+ CRuntimeClass* m_pViewClass; // class for creating new views
+ CRuntimeClass* m_pOleFrameClass; // class for creating in-place frame
+ CRuntimeClass* m_pOleViewClass; // class for creating in-place view
+ CString m_strDocStrings; // '\n' separated names
+ // The document names sub-strings are represented as _one_ string:
+ // windowTitle\ndocName\n ... (see DocStringIndex enum)
+};
+
+#ifndef _AFXCTL
+// SDI support (1 document only)
+class CSingleDocTemplate : public CDocTemplate
+{
+ DECLARE_DYNAMIC(CSingleDocTemplate)
+
+// Constructors
+public:
+ CSingleDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+
+// Implementation
+public:
+ virtual ~CSingleDocTemplate();
+ virtual void AddDocument(CDocument* pDoc);
+ virtual void RemoveDocument(CDocument* pDoc);
+ virtual POSITION GetFirstDocPosition() const;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const;
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
+ virtual void SetDefaultTitle(CDocument* pDocument);
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected: // standard implementation
+ CDocument* m_pOnlyDoc;
+};
+
+// MDI support (zero or more documents)
+class CMultiDocTemplate : public CDocTemplate
+{
+ DECLARE_DYNAMIC(CMultiDocTemplate)
+
+// Constructors
+public:
+ CMultiDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+
+// Implementation
+public:
+ // Menu and accel table for MDI Child windows of this type
+ HMENU m_hMenuShared;
+ HACCEL m_hAccelTable;
+
+ virtual ~CMultiDocTemplate();
+ virtual void AddDocument(CDocument* pDoc);
+ virtual void RemoveDocument(CDocument* pDoc);
+ virtual POSITION GetFirstDocPosition() const;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const;
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
+ virtual void SetDefaultTitle(CDocument* pDocument);
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected: // standard implementation
+ CPtrList m_docList; // open documents of this type
+ UINT m_nUntitledCount; // start at 0, for "Document1" title
+};
+#endif //!_AFXCTL
+
+/////////////////////////////////////////////////////////////////////////////
+// class CDocument is the main document data abstraction
+
+class CDocument : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDocument)
+
+public:
+// Constructors
+ CDocument();
+
+// Attributes
+public:
+ const CString& GetTitle() const;
+ virtual void SetTitle(LPCTSTR lpszTitle);
+ const CString& GetPathName() const;
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE);
+
+ CDocTemplate* GetDocTemplate() const;
+ BOOL IsModified();
+ void SetModifiedFlag(BOOL bModified = TRUE);
+
+// Operations
+ void AddView(CView* pView);
+ void RemoveView(CView* pView);
+ virtual POSITION GetFirstViewPosition() const;
+ virtual CView* GetNextView(POSITION& rPosition) const;
+
+ // Update Views (simple update - DAG only)
+ void UpdateAllViews(CView* pSender, LPARAM lHint = 0L,
+ CObject* pHint = NULL);
+
+// Overridables
+ // Special notifications
+ virtual void OnChangedViewList(); // after Add or Remove view
+ virtual void DeleteContents(); // delete doc items etc
+
+ // File helpers
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+#ifdef _MAC
+ virtual void RecordDataFileOwner(LPCTSTR lpszPathName, LPCTSTR lpszAppName);
+#endif
+ virtual void OnCloseDocument();
+ virtual void ReportSaveLoadException(LPCTSTR lpszPathName,
+ CException* e, BOOL bSaving, UINT nIDPDefault);
+
+ // advanced overridables, closing down frame/doc, etc.
+ virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
+ virtual BOOL SaveModified(); // return TRUE if ok to continue
+
+// Implementation
+protected:
+ // default implementation
+ CString m_strTitle;
+ CString m_strPathName;
+ CDocTemplate* m_pDocTemplate;
+ CPtrList m_viewList; // list of views
+ BOOL m_bModified; // changed since last saved
+
+public:
+ BOOL m_bAutoDelete; // TRUE => delete document when no more views
+ BOOL m_bEmbedded; // TRUE => document is being created by OLE
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+ virtual ~CDocument();
+
+ // implementation helpers
+ virtual BOOL DoSave(LPCTSTR lpszPathName, BOOL bReplace = TRUE);
+ virtual BOOL DoFileSave();
+ void UpdateFrameCounts();
+ void DisconnectViews();
+ void SendInitialUpdate();
+
+ // overridables for implementation
+ virtual HMENU GetDefaultMenu(); // get menu depending on state
+ virtual HACCEL GetDefaultAccelerator();
+ virtual void PreCloseFrame(CFrameWnd* pFrame);
+ virtual void OnIdle();
+ virtual void OnFinalRelease();
+ virtual CFile* GetFile(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError);
+
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ friend class CDocTemplate;
+
+protected:
+ // file menu commands
+ //{{AFX_MSG(CDocument)
+ afx_msg void OnFileClose();
+ afx_msg void OnFileSave();
+ afx_msg void OnFileSaveAs();
+ //}}AFX_MSG
+ // mail enabling
+ afx_msg void OnFileSendMail();
+ afx_msg void OnUpdateFileSendMail(CCmdUI* pCmdUI);
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Extra diagnostic tracing options
+
+#ifdef _DEBUG
+
+#define afxTraceFlags AfxGetAllocState()->m_nTraceFlags
+enum AfxTraceFlags
+{
+ traceMultiApp = 1, // multi-app debugging
+ traceAppMsg = 2, // main message pump trace (includes DDE)
+ traceWinMsg = 4, // Windows message tracing
+ traceCmdRouting = 8, // Windows command routing trace (set 4+8 for control notifications)
+ traceOle = 16, // special OLE callback trace
+ traceDatabase = 32 // special database trace
+};
+
+#endif // _DEBUG
+
+//////////////////////////////////////////////////////////////////////////////
+// MessageBox helpers
+
+void AFXAPI AfxFormatString1(CString& rString, UINT nIDS, LPCTSTR lpsz1);
+void AFXAPI AfxFormatString2(CString& rString, UINT nIDS,
+ LPCTSTR lpsz1, LPCTSTR lpsz2);
+int AFXAPI AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK,
+ UINT nIDHelp = 0);
+int AFXAPI AfxMessageBox(UINT nIDPrompt, UINT nType = MB_OK,
+ UINT nIDHelp = (UINT)-1);
+
+// Implementation string helpers
+void AFXAPI AfxFormatStrings(CString& rString, UINT nIDS,
+ LPCTSTR* rglpsz, int nString);
+void AFXAPI AfxFormatStrings(CString& rString, LPCTSTR lpszFormat,
+ LPCTSTR* rglpsz, int nString);
+BOOL AFXAPI AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,
+ int iSubString, TCHAR chSep = '\n');
+
+/////////////////////////////////////////////////////////////////////////////
+// Special target variant APIs
+
+#ifdef _AFXDLL
+ #include <afxdll_.h>
+#endif
+
+// Windows Version compatibility (obsolete)
+#define AfxEnableWin30Compatibility()
+#define AfxEnableWin31Compatibility()
+#define AfxEnableWin40Compatibility()
+
+// Temporary map management (locks temp map on current thread)
+void AFXAPI AfxLockTempMaps();
+BOOL AFXAPI AfxUnlockTempMaps();
+
+/////////////////////////////////////////////////////////////////////////////
+// Special OLE related functions (see OLELOCK.CPP)
+
+void AFXAPI AfxOleOnReleaseAllObjects();
+BOOL AFXAPI AfxOleCanExitApp();
+void AFXAPI AfxOleLockApp();
+void AFXAPI AfxOleUnlockApp();
+
+void AFXAPI AfxOleSetUserCtrl(BOOL bUserCtrl);
+BOOL AFXAPI AfxOleGetUserCtrl();
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXWIN_INLINE inline
+#include <afxwin1.inl>
+#include <afxwin2.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+
+#else //RC_INVOKED
+#include <afxres.h> // standard resource IDs
+#endif //RC_INVOKED
+
+#endif //__AFXWIN_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/afxwin1.inl b/public/sdk/inc/mfc30/afxwin1.inl
new file mode 100644
index 000000000..82e6eaf37
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxwin1.inl
@@ -0,0 +1,931 @@
+
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXWIN.H (part 1)
+
+#ifdef _AFXWIN_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+
+// Global helper functions
+_AFXWIN_INLINE CWinApp* AFXAPI AfxGetApp()
+ { return afxCurrentWinApp; }
+_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
+ { ASSERT(afxCurrentInstanceHandle != NULL);
+ return afxCurrentInstanceHandle; }
+_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetResourceHandle()
+ { ASSERT(afxCurrentResourceHandle != NULL);
+ return afxCurrentResourceHandle; }
+_AFXWIN_INLINE void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource)
+ { ASSERT(hInstResource != NULL); afxCurrentResourceHandle = hInstResource; }
+_AFXWIN_INLINE LPCTSTR AFXAPI AfxGetAppName()
+ { ASSERT(afxCurrentAppName != NULL); return afxCurrentAppName; }
+_AFXWIN_INLINE COleMessageFilter* AFXAPI AfxOleGetMessageFilter()
+ { ASSERT_VALID(AfxGetApp()); return AfxGetApp()->m_pMessageFilter; }
+#ifndef _AFXCTL
+_AFXWIN_INLINE CWnd* AFXAPI AfxGetMainWnd()
+ { return AfxGetThread() != NULL ? AfxGetThread()->GetMainWnd() : NULL; }
+#else
+_AFXWIN_INLINE CWnd* AFXAPI AfxGetMainWnd()
+ { return CWnd::GetActiveWindow(); }
+_AFXWIN_INLINE AFX_MAINTAIN_STATE::AFX_MAINTAIN_STATE(AFX_MODULE_STATE* psData)
+ { m_psPrevious = AfxPushModuleContext(psData); }
+_AFXWIN_INLINE AFX_MAINTAIN_STATE::~AFX_MAINTAIN_STATE()
+ { if (m_psPrevious != NULL)
+ AfxPopModuleContext(m_psPrevious); }
+#endif
+
+// CHandleMap functions
+_AFXWIN_INLINE BOOL CHandleMap::LookupPermanent(HANDLE h, CObject*& pObject)
+ { return m_permanentMap.Lookup((LPVOID)h, (void*&)pObject); }
+_AFXWIN_INLINE BOOL CHandleMap::LookupTemporary(HANDLE h, CObject*& pObject)
+ { return m_temporaryMap.Lookup((LPVOID)h, (void*&)pObject); }
+
+// CSize
+_AFXWIN_INLINE CSize::CSize()
+ { /* random filled */ }
+_AFXWIN_INLINE CSize::CSize(int initCX, int initCY)
+ { cx = initCX; cy = initCY; }
+_AFXWIN_INLINE CSize::CSize(SIZE initSize)
+ { *(SIZE*)this = initSize; }
+_AFXWIN_INLINE CSize::CSize(POINT initPt)
+ { *(POINT*)this = initPt; }
+_AFXWIN_INLINE CSize::CSize(DWORD dwSize)
+ {
+ cx = (short)LOWORD(dwSize);
+ cy = (short)HIWORD(dwSize);
+ }
+_AFXWIN_INLINE BOOL CSize::operator==(SIZE size) const
+ { return (cx == size.cx && cy == size.cy); }
+_AFXWIN_INLINE BOOL CSize::operator!=(SIZE size) const
+ { return (cx != size.cx || cy != size.cy); }
+_AFXWIN_INLINE void CSize::operator+=(SIZE size)
+ { cx += size.cx; cy += size.cy; }
+_AFXWIN_INLINE void CSize::operator-=(SIZE size)
+ { cx -= size.cx; cy -= size.cy; }
+_AFXWIN_INLINE CSize CSize::operator+(SIZE size) const
+ { return CSize(cx + size.cx, cy + size.cy); }
+_AFXWIN_INLINE CSize CSize::operator-(SIZE size) const
+ { return CSize(cx - size.cx, cy - size.cy); }
+_AFXWIN_INLINE CSize CSize::operator-() const
+ { return CSize(-cx, -cy); }
+
+// CPoint
+_AFXWIN_INLINE CPoint::CPoint()
+ { /* random filled */ }
+_AFXWIN_INLINE CPoint::CPoint(int initX, int initY)
+ { x = initX; y = initY; }
+_AFXWIN_INLINE CPoint::CPoint(POINT initPt)
+ { *(POINT*)this = initPt; }
+_AFXWIN_INLINE CPoint::CPoint(SIZE initSize)
+ { *(SIZE*)this = initSize; }
+_AFXWIN_INLINE CPoint::CPoint(DWORD dwPoint)
+ {
+ x = (short)LOWORD(dwPoint);
+ y = (short)HIWORD(dwPoint);
+ }
+_AFXWIN_INLINE void CPoint::Offset(int xOffset, int yOffset)
+ { x += xOffset; y += yOffset; }
+_AFXWIN_INLINE void CPoint::Offset(POINT point)
+ { x += point.x; y += point.y; }
+_AFXWIN_INLINE void CPoint::Offset(SIZE size)
+ { x += size.cx; y += size.cy; }
+_AFXWIN_INLINE BOOL CPoint::operator==(POINT point) const
+ { return (x == point.x && y == point.y); }
+_AFXWIN_INLINE BOOL CPoint::operator!=(POINT point) const
+ { return (x != point.x || y != point.y); }
+_AFXWIN_INLINE void CPoint::operator+=(SIZE size)
+ { x += size.cx; y += size.cy; }
+_AFXWIN_INLINE void CPoint::operator-=(SIZE size)
+ { x -= size.cx; y -= size.cy; }
+_AFXWIN_INLINE CPoint CPoint::operator+(SIZE size) const
+ { return CPoint(x + size.cx, y + size.cy); }
+_AFXWIN_INLINE CPoint CPoint::operator-(SIZE size) const
+ { return CPoint(x - size.cx, y - size.cy); }
+_AFXWIN_INLINE CPoint CPoint::operator-() const
+ { return CPoint(-x, -y); }
+_AFXWIN_INLINE CSize CPoint::operator-(POINT point) const
+ { return CSize(x - point.x, y - point.y); }
+
+// CRect
+_AFXWIN_INLINE CRect::CRect()
+ { /* random filled */ }
+_AFXWIN_INLINE CRect::CRect(int l, int t, int r, int b)
+ { left = l; top = t; right = r; bottom = b; }
+_AFXWIN_INLINE CRect::CRect(const RECT& srcRect)
+ { ::CopyRect(this, &srcRect); }
+_AFXWIN_INLINE CRect::CRect(LPCRECT lpSrcRect)
+ { ::CopyRect(this, lpSrcRect); }
+_AFXWIN_INLINE CRect::CRect(POINT point, SIZE size)
+ { right = (left = point.x) + size.cx; bottom = (top = point.y) + size.cy; }
+_AFXWIN_INLINE int CRect::Width() const
+ { return right - left; }
+_AFXWIN_INLINE int CRect::Height() const
+ { return bottom - top; }
+_AFXWIN_INLINE CSize CRect::Size() const
+ { return CSize(right - left, bottom - top); }
+_AFXWIN_INLINE CPoint& CRect::TopLeft()
+ { return *((CPoint*)this); }
+_AFXWIN_INLINE CPoint& CRect::BottomRight()
+ { return *((CPoint*)this+1); }
+_AFXWIN_INLINE CRect::operator LPRECT()
+ { return this; }
+_AFXWIN_INLINE CRect::operator LPCRECT() const
+ { return this; }
+_AFXWIN_INLINE BOOL CRect::IsRectEmpty() const
+ { return ::IsRectEmpty(this); }
+_AFXWIN_INLINE BOOL CRect::IsRectNull() const
+ { return (left == 0 && right == 0 && top == 0 && bottom == 0); }
+_AFXWIN_INLINE BOOL CRect::PtInRect(POINT point) const
+ { return ::PtInRect(this, point); }
+_AFXWIN_INLINE void CRect::SetRect(int x1, int y1, int x2, int y2)
+ { ::SetRect(this, x1, y1, x2, y2); }
+_AFXWIN_INLINE void CRect::SetRectEmpty()
+ { ::SetRectEmpty(this); }
+_AFXWIN_INLINE void CRect::CopyRect(LPCRECT lpSrcRect)
+ { ::CopyRect(this, lpSrcRect); }
+_AFXWIN_INLINE BOOL CRect::EqualRect(LPCRECT lpRect) const
+ { return ::EqualRect(this, lpRect); }
+_AFXWIN_INLINE void CRect::InflateRect(int x, int y)
+ { ::InflateRect(this, x, y); }
+_AFXWIN_INLINE void CRect::InflateRect(SIZE size)
+ { ::InflateRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE void CRect::OffsetRect(int x, int y)
+ { ::OffsetRect(this, x, y); }
+_AFXWIN_INLINE void CRect::OffsetRect(POINT point)
+ { ::OffsetRect(this, point.x, point.y); }
+_AFXWIN_INLINE void CRect::OffsetRect(SIZE size)
+ { ::OffsetRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE BOOL CRect::IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2)
+ { return ::IntersectRect(this, lpRect1, lpRect2);}
+_AFXWIN_INLINE BOOL CRect::UnionRect(LPCRECT lpRect1, LPCRECT lpRect2)
+ { return ::UnionRect(this, lpRect1, lpRect2); }
+_AFXWIN_INLINE void CRect::operator=(const RECT& srcRect)
+ { ::CopyRect(this, &srcRect); }
+_AFXWIN_INLINE BOOL CRect::operator==(const RECT& rect) const
+ { return ::EqualRect(this, &rect); }
+_AFXWIN_INLINE BOOL CRect::operator!=(const RECT& rect) const
+ { return !::EqualRect(this, &rect); }
+_AFXWIN_INLINE void CRect::operator+=(POINT point)
+ { ::OffsetRect(this, point.x, point.y); }
+_AFXWIN_INLINE void CRect::operator-=(POINT point)
+ { ::OffsetRect(this, -point.x, -point.y); }
+_AFXWIN_INLINE void CRect::operator&=(const RECT& rect)
+ { ::IntersectRect(this, this, &rect); }
+_AFXWIN_INLINE void CRect::operator|=(const RECT& rect)
+ { ::UnionRect(this, this, &rect); }
+_AFXWIN_INLINE CRect CRect::operator+(POINT pt) const
+ { CRect rect(*this); ::OffsetRect(&rect, pt.x, pt.y); return rect; }
+_AFXWIN_INLINE CRect CRect::operator-(POINT pt) const
+ { CRect rect(*this); ::OffsetRect(&rect, -pt.x, -pt.y); return rect; }
+_AFXWIN_INLINE CRect CRect::operator&(const RECT& rect2) const
+ { CRect rect; ::IntersectRect(&rect, this, &rect2);
+ return rect; }
+_AFXWIN_INLINE CRect CRect::operator|(const RECT& rect2) const
+ { CRect rect; ::UnionRect(&rect, this, &rect2);
+ return rect; }
+_AFXWIN_INLINE BOOL CRect::SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2)
+ { return ::SubtractRect(this, lpRectSrc1, lpRectSrc2); }
+
+// CArchive output helpers
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, SIZE size)
+ { ar.Write(&size, sizeof(SIZE));
+ return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, POINT point)
+ { ar.Write(&point, sizeof(POINT));
+ return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, const RECT& rect)
+ { ar.Write(&rect, sizeof(RECT));
+ return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, SIZE& size)
+ { ar.Read(&size, sizeof(SIZE));
+ return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, POINT& point)
+ { ar.Read(&point, sizeof(POINT));
+ return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, RECT& rect)
+ { ar.Read(&rect, sizeof(RECT));
+ return ar; }
+
+// exception support
+_AFXWIN_INLINE CResourceException::CResourceException()
+ { }
+_AFXWIN_INLINE CResourceException::CResourceException(BOOL bAutoDelete)
+ : CException(bAutoDelete) { }
+_AFXWIN_INLINE CResourceException::~CResourceException()
+ { }
+_AFXWIN_INLINE CUserException::CUserException()
+ { }
+_AFXWIN_INLINE CUserException::CUserException(BOOL bAutoDelete)
+ : CException(bAutoDelete) { }
+_AFXWIN_INLINE CUserException::~CUserException()
+ { }
+
+// CGdiObject
+_AFXWIN_INLINE HGDIOBJ CGdiObject::GetSafeHandle() const
+ { return this == NULL ? NULL : m_hObject; }
+_AFXWIN_INLINE CGdiObject::CGdiObject()
+ { m_hObject = NULL; }
+_AFXWIN_INLINE CGdiObject::~CGdiObject()
+ { DeleteObject(); }
+_AFXWIN_INLINE int CGdiObject::GetObject(int nCount, LPVOID lpObject) const
+ { ASSERT(m_hObject != NULL); return ::GetObject(m_hObject, nCount, lpObject); }
+_AFXWIN_INLINE BOOL CGdiObject::CreateStockObject(int nIndex)
+ { return (m_hObject = ::GetStockObject(nIndex)) != NULL; }
+_AFXWIN_INLINE BOOL CGdiObject::UnrealizeObject()
+ { return TRUE; }
+_AFXWIN_INLINE UINT CGdiObject::GetObjectType() const
+ { return (UINT)::GetObjectType(m_hObject); }
+
+// CPen
+_AFXWIN_INLINE CPen* PASCAL CPen::FromHandle(HPEN hPen)
+ { return (CPen*) CGdiObject::FromHandle(hPen); }
+_AFXWIN_INLINE CPen::CPen()
+ { }
+_AFXWIN_INLINE CPen::~CPen()
+ { }
+_AFXWIN_INLINE BOOL CPen::CreatePen(int nPenStyle, int nWidth, COLORREF crColor)
+ { return Attach(::CreatePen(nPenStyle, nWidth, crColor)); }
+_AFXWIN_INLINE BOOL CPen::CreatePenIndirect(LPLOGPEN lpLogPen)
+ { return Attach(::CreatePenIndirect(lpLogPen)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CPen::CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount, const DWORD* lpStyle)
+ { return Attach(::ExtCreatePen(nPenStyle, nWidth, pLogBrush, nStyleCount,
+ lpStyle)); }
+#endif
+
+// CBrush
+_AFXWIN_INLINE CBrush* PASCAL CBrush::FromHandle(HBRUSH hBrush)
+ { return (CBrush*) CGdiObject::FromHandle(hBrush); }
+_AFXWIN_INLINE CBrush::CBrush()
+ { }
+_AFXWIN_INLINE CBrush::~CBrush()
+ { }
+_AFXWIN_INLINE BOOL CBrush::CreateSolidBrush(COLORREF crColor)
+ { return Attach(::CreateSolidBrush(crColor)); }
+_AFXWIN_INLINE BOOL CBrush::CreateHatchBrush(int nIndex, COLORREF crColor)
+ { return Attach(::CreateHatchBrush(nIndex, crColor)); }
+_AFXWIN_INLINE BOOL CBrush::CreateBrushIndirect(LPLOGBRUSH lpLogBrush)
+ { return Attach(::CreateBrushIndirect(lpLogBrush)); }
+_AFXWIN_INLINE BOOL CBrush::CreateDIBPatternBrush(HGLOBAL hPackedDIB, UINT nUsage)
+ { return Attach(::CreateDIBPatternBrush(hPackedDIB, nUsage)); }
+_AFXWIN_INLINE BOOL CBrush::CreatePatternBrush(CBitmap* pBitmap)
+ { return Attach(::CreatePatternBrush((HBITMAP)pBitmap->GetSafeHandle())); }
+_AFXWIN_INLINE BOOL CBrush::CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage)
+ { return Attach(::CreateDIBPatternBrushPt(lpPackedDIB, nUsage)); }
+
+// CFont
+_AFXWIN_INLINE CFont* PASCAL CFont::FromHandle(HFONT hFont)
+ { return (CFont*) CGdiObject::FromHandle(hFont); }
+_AFXWIN_INLINE CFont::CFont()
+ { }
+_AFXWIN_INLINE CFont::~CFont()
+ { }
+_AFXWIN_INLINE BOOL CFont::CreateFontIndirect(const LOGFONT* lpLogFont)
+ { return Attach(::CreateFontIndirect(lpLogFont)); }
+_AFXWIN_INLINE BOOL CFont::CreateFont(int nHeight, int nWidth, int nEscapement,
+ int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline,
+ BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
+ BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily,
+ LPCTSTR lpszFacename)
+ { return Attach(::CreateFont(nHeight, nWidth, nEscapement,
+ nOrientation, nWeight, bItalic, bUnderline, cStrikeOut,
+ nCharSet, nOutPrecision, nClipPrecision, nQuality,
+ nPitchAndFamily, lpszFacename)); }
+
+// CBitmap
+_AFXWIN_INLINE CBitmap* PASCAL CBitmap::FromHandle(HBITMAP hBitmap)
+ { return (CBitmap*) CGdiObject::FromHandle(hBitmap); }
+_AFXWIN_INLINE CBitmap::CBitmap()
+ { }
+_AFXWIN_INLINE CBitmap::~CBitmap()
+ { }
+_AFXWIN_INLINE BOOL CBitmap::CreateBitmap(int nWidth, int nHeight, UINT nPlanes,
+ UINT nBitcount, const void* lpBits)
+ { return Attach(::CreateBitmap(nWidth, nHeight, nPlanes, nBitcount, lpBits)); }
+_AFXWIN_INLINE BOOL CBitmap::CreateBitmapIndirect(LPBITMAP lpBitmap)
+ { return Attach(::CreateBitmapIndirect(lpBitmap)); }
+
+_AFXWIN_INLINE DWORD CBitmap::SetBitmapBits(DWORD dwCount, const void* lpBits)
+ { return ::SetBitmapBits((HBITMAP)m_hObject, dwCount, lpBits); }
+_AFXWIN_INLINE DWORD CBitmap::GetBitmapBits(DWORD dwCount, LPVOID lpBits) const
+ { return ::GetBitmapBits((HBITMAP)m_hObject, dwCount, lpBits); }
+_AFXWIN_INLINE BOOL CBitmap::LoadBitmap(LPCTSTR lpszResourceName)
+ { return Attach(::LoadBitmap(AfxFindResourceHandle(
+ lpszResourceName, RT_BITMAP), lpszResourceName));}
+_AFXWIN_INLINE CSize CBitmap::SetBitmapDimension(int nWidth, int nHeight)
+ {
+ SIZE size;
+ VERIFY(::SetBitmapDimensionEx((HBITMAP)m_hObject, nWidth, nHeight, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CBitmap::GetBitmapDimension() const
+ {
+ SIZE size;
+ VERIFY(::GetBitmapDimensionEx((HBITMAP)m_hObject, &size));
+ return size;
+ }
+
+_AFXWIN_INLINE BOOL CBitmap::LoadBitmap(UINT nIDResource)
+ { return Attach(::LoadBitmap(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDResource), RT_BITMAP), MAKEINTRESOURCE(nIDResource))); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CBitmap::LoadOEMBitmap(UINT nIDBitmap)
+ { return Attach(::LoadBitmap(NULL, MAKEINTRESOURCE(nIDBitmap))); }
+#endif
+_AFXWIN_INLINE BOOL CBitmap::CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight)
+ { return Attach(::CreateCompatibleBitmap(pDC->m_hDC, nWidth, nHeight)); }
+_AFXWIN_INLINE BOOL CBitmap::CreateDiscardableBitmap(CDC* pDC, int nWidth, int nHeight)
+ { return Attach(::CreateDiscardableBitmap(pDC->m_hDC, nWidth, nHeight)); }
+
+// CPalette
+_AFXWIN_INLINE CPalette* PASCAL CPalette::FromHandle(HPALETTE hPalette)
+ { return (CPalette*) CGdiObject::FromHandle(hPalette); }
+_AFXWIN_INLINE CPalette::CPalette()
+ { }
+_AFXWIN_INLINE CPalette::~CPalette()
+ { }
+_AFXWIN_INLINE BOOL CPalette::CreatePalette(LPLOGPALETTE lpLogPalette)
+ { return Attach(::CreatePalette(lpLogPalette)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CPalette::CreateHalftonePalette(CDC* pDC)
+ { ASSERT(pDC != NULL && pDC->m_hDC != NULL); return Attach(
+ ::CreateHalftonePalette(pDC->m_hDC)); }
+#endif
+_AFXWIN_INLINE UINT CPalette::GetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors) const
+ { ASSERT(m_hObject != NULL); return ::GetPaletteEntries((HPALETTE)m_hObject, nStartIndex,
+ nNumEntries, lpPaletteColors); }
+_AFXWIN_INLINE UINT CPalette::SetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors)
+ { ASSERT(m_hObject != NULL); return ::SetPaletteEntries((HPALETTE)m_hObject, nStartIndex,
+ nNumEntries, lpPaletteColors); }
+#ifndef _MAC
+_AFXWIN_INLINE void CPalette::AnimatePalette(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors)
+ { ASSERT(m_hObject != NULL); ::AnimatePalette((HPALETTE)m_hObject, nStartIndex, nNumEntries,
+ lpPaletteColors); }
+#endif
+_AFXWIN_INLINE UINT CPalette::GetNearestPaletteIndex(COLORREF crColor) const
+ { ASSERT(m_hObject != NULL); return ::GetNearestPaletteIndex((HPALETTE)m_hObject, crColor); }
+_AFXWIN_INLINE BOOL CPalette::ResizePalette(UINT nNumEntries)
+ { ASSERT(m_hObject != NULL); return ::ResizePalette((HPALETTE)m_hObject, nNumEntries); }
+
+// CRgn
+_AFXWIN_INLINE CRgn* PASCAL CRgn::FromHandle(HRGN hRgn)
+ { return (CRgn*) CGdiObject::FromHandle(hRgn); }
+_AFXWIN_INLINE CRgn::CRgn()
+ { }
+_AFXWIN_INLINE CRgn::~CRgn()
+ { }
+_AFXWIN_INLINE BOOL CRgn::CreateRectRgn(int x1, int y1, int x2, int y2)
+ { return Attach(::CreateRectRgn(x1, y1, x2, y2)); }
+_AFXWIN_INLINE BOOL CRgn::CreateRectRgnIndirect(LPCRECT lpRect)
+ { return Attach(::CreateRectRgnIndirect(lpRect)); }
+_AFXWIN_INLINE BOOL CRgn::CreateEllipticRgn(int x1, int y1, int x2, int y2)
+ { return Attach(::CreateEllipticRgn(x1, y1, x2, y2)); }
+_AFXWIN_INLINE BOOL CRgn::CreateEllipticRgnIndirect(LPCRECT lpRect)
+ { return Attach(::CreateEllipticRgnIndirect(lpRect)); }
+_AFXWIN_INLINE BOOL CRgn::CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode)
+ { return Attach(::CreatePolygonRgn(lpPoints, nCount, nMode)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CRgn::CreatePolyPolygonRgn(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount, int nPolyFillMode)
+ { return Attach(::CreatePolyPolygonRgn(lpPoints, lpPolyCounts, nCount, nPolyFillMode)); }
+#endif
+_AFXWIN_INLINE BOOL CRgn::CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3)
+ { return Attach(::CreateRoundRectRgn(x1, y1, x2, y2, x3, y3)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CRgn::CreateFromPath(CDC* pDC)
+ { ASSERT(pDC != NULL); return Attach(::PathToRegion(pDC->m_hDC)); }
+_AFXWIN_INLINE BOOL CRgn::CreateFromData(const XFORM* lpXForm, int nCount, const RGNDATA* pRgnData)
+ { return Attach(::ExtCreateRegion(lpXForm, nCount, pRgnData)); }
+_AFXWIN_INLINE int CRgn::GetRegionData(LPRGNDATA lpRgnData, int nDataSize) const
+ { ASSERT(m_hObject != NULL); return (int)::GetRegionData((HRGN)m_hObject, nDataSize, lpRgnData); }
+#endif
+_AFXWIN_INLINE void CRgn::SetRectRgn(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hObject != NULL); ::SetRectRgn((HRGN)m_hObject, x1, y1, x2, y2); }
+_AFXWIN_INLINE void CRgn::SetRectRgn(LPCRECT lpRect)
+ { ASSERT(m_hObject != NULL); ::SetRectRgn((HRGN)m_hObject, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE int CRgn::CombineRgn(CRgn* pRgn1, CRgn* pRgn2, int nCombineMode)
+ { ASSERT(m_hObject != NULL); return ::CombineRgn((HRGN)m_hObject, (HRGN)pRgn1->GetSafeHandle(),
+ (HRGN)pRgn2->GetSafeHandle(), nCombineMode); }
+_AFXWIN_INLINE int CRgn::CopyRgn(CRgn* pRgnSrc)
+ { ASSERT(m_hObject != NULL); return ::CombineRgn((HRGN)m_hObject, (HRGN)pRgnSrc->GetSafeHandle(), NULL, RGN_COPY); }
+_AFXWIN_INLINE BOOL CRgn::EqualRgn(CRgn* pRgn) const
+ { ASSERT(m_hObject != NULL); return ::EqualRgn((HRGN)m_hObject, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE int CRgn::OffsetRgn(int x, int y)
+ { ASSERT(m_hObject != NULL); return ::OffsetRgn((HRGN)m_hObject, x, y); }
+_AFXWIN_INLINE int CRgn::OffsetRgn(POINT point)
+ { ASSERT(m_hObject != NULL); return ::OffsetRgn((HRGN)m_hObject, point.x, point.y); }
+_AFXWIN_INLINE int CRgn::GetRgnBox(LPRECT lpRect) const
+ { ASSERT(m_hObject != NULL); return ::GetRgnBox((HRGN)m_hObject, lpRect); }
+_AFXWIN_INLINE BOOL CRgn::PtInRegion(int x, int y) const
+ { ASSERT(m_hObject != NULL); return ::PtInRegion((HRGN)m_hObject, x, y); }
+_AFXWIN_INLINE BOOL CRgn::PtInRegion(POINT point) const
+ { ASSERT(m_hObject != NULL); return ::PtInRegion((HRGN)m_hObject, point.x, point.y); }
+_AFXWIN_INLINE BOOL CRgn::RectInRegion(LPCRECT lpRect) const
+ { ASSERT(m_hObject != NULL); return ::RectInRegion((HRGN)m_hObject, lpRect); }
+
+// CDC
+_AFXWIN_INLINE HDC CDC::GetSafeHdc() const
+ { return this == NULL ? NULL : m_hDC; }
+_AFXWIN_INLINE BOOL CDC::IsPrinting() const
+ { return m_bPrinting; }
+_AFXWIN_INLINE BOOL CDC::CreateDC(LPCTSTR lpszDriverName,
+ LPCTSTR lpszDeviceName, LPCTSTR lpszOutput, const void* lpInitData)
+ { return Attach(::CreateDC(lpszDriverName,
+ lpszDeviceName, lpszOutput, (const DEVMODE*)lpInitData)); }
+_AFXWIN_INLINE BOOL CDC::CreateIC(LPCTSTR lpszDriverName,
+ LPCTSTR lpszDeviceName, LPCTSTR lpszOutput, const void* lpInitData)
+ { return Attach(::CreateIC(lpszDriverName,
+ lpszDeviceName, lpszOutput, (const DEVMODE*) lpInitData)); }
+_AFXWIN_INLINE BOOL CDC::CreateCompatibleDC(CDC* pDC)
+ { return Attach(::CreateCompatibleDC(pDC->GetSafeHdc())); }
+_AFXWIN_INLINE int CDC::ExcludeUpdateRgn(CWnd* pWnd)
+ { ASSERT(m_hDC != NULL); return ::ExcludeUpdateRgn(m_hDC, pWnd->m_hWnd); }
+_AFXWIN_INLINE int CDC::GetDeviceCaps(int nIndex) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetDeviceCaps(m_hAttribDC, nIndex); }
+_AFXWIN_INLINE CPoint CDC::GetBrushOrg() const
+ {
+ ASSERT(m_hDC != NULL);
+ POINT point;
+ VERIFY(::GetBrushOrgEx(m_hDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CPoint CDC::SetBrushOrg(int x, int y)
+ {
+ ASSERT(m_hDC != NULL);
+ POINT point;
+ VERIFY(::SetBrushOrgEx(m_hDC, x, y, &point));
+ return point;
+ }
+_AFXWIN_INLINE CPoint CDC::SetBrushOrg(POINT point)
+ {
+ ASSERT(m_hDC != NULL);
+ VERIFY(::SetBrushOrgEx(m_hDC, point.x, point.y, &point));
+ return point;
+ }
+
+_AFXWIN_INLINE int CDC::EnumObjects(int nObjectType,
+ int (CALLBACK EXPORT* lpfn)(LPVOID, LPARAM), LPARAM lpData)
+ { ASSERT(m_hAttribDC != NULL); return ::EnumObjects(m_hAttribDC, nObjectType, (GOBJENUMPROC)lpfn, lpData); }
+
+_AFXWIN_INLINE CBitmap* CDC::SelectObject(CBitmap* pBitmap)
+ { ASSERT(m_hDC != NULL); return (CBitmap*) SelectGdiObject(m_hDC, pBitmap->GetSafeHandle()); }
+_AFXWIN_INLINE CGdiObject* CDC::SelectObject(CGdiObject* pObject)
+ { ASSERT(m_hDC != NULL); return SelectGdiObject(m_hDC, pObject->GetSafeHandle()); }
+_AFXWIN_INLINE HGDIOBJ CDC::SelectObject(HGDIOBJ hObject) // Safe for NULL handles
+ { ASSERT(m_hDC == m_hAttribDC); // ASSERT a simple CDC object
+ return (hObject != NULL) ? ::SelectObject(m_hDC, hObject) : NULL; }
+_AFXWIN_INLINE COLORREF CDC::GetNearestColor(COLORREF crColor) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetNearestColor(m_hAttribDC, crColor); }
+_AFXWIN_INLINE UINT CDC::RealizePalette()
+ { ASSERT(m_hDC != NULL); return ::RealizePalette(m_hDC); }
+_AFXWIN_INLINE void CDC::UpdateColors()
+ { ASSERT(m_hDC != NULL); ::UpdateColors(m_hDC); }
+_AFXWIN_INLINE COLORREF CDC::GetBkColor() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetBkColor(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetBkMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetBkMode(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetPolyFillMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetPolyFillMode(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetROP2() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetROP2(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetStretchBltMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetStretchBltMode(m_hAttribDC); }
+_AFXWIN_INLINE COLORREF CDC::GetTextColor() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextColor(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetMapMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetMapMode(m_hAttribDC); }
+
+_AFXWIN_INLINE CPoint CDC::GetViewportOrg() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetViewportOrgEx(m_hAttribDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CSize CDC::GetViewportExt() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetViewportExtEx(m_hAttribDC, &size));
+ return size;
+ }
+_AFXWIN_INLINE CPoint CDC::GetWindowOrg() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetWindowOrgEx(m_hAttribDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CSize CDC::GetWindowExt() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetWindowExtEx(m_hAttribDC, &size));
+ return size;
+ }
+
+// non-virtual helpers calling virtual mapping functions
+_AFXWIN_INLINE CPoint CDC::SetViewportOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetViewportOrg(point.x, point.y); }
+_AFXWIN_INLINE CSize CDC::SetViewportExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetViewportExt(size.cx, size.cy); }
+_AFXWIN_INLINE CPoint CDC::SetWindowOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetWindowOrg(point.x, point.y); }
+_AFXWIN_INLINE CSize CDC::SetWindowExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetWindowExt(size.cx, size.cy); }
+
+_AFXWIN_INLINE void CDC::DPtoLP(LPPOINT lpPoints, int nCount) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::DPtoLP(m_hAttribDC, lpPoints, nCount)); }
+_AFXWIN_INLINE void CDC::DPtoLP(LPRECT lpRect) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::DPtoLP(m_hAttribDC, (LPPOINT)lpRect, 2)); }
+_AFXWIN_INLINE void CDC::LPtoDP(LPPOINT lpPoints, int nCount) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::LPtoDP(m_hAttribDC, lpPoints, nCount)); }
+_AFXWIN_INLINE void CDC::LPtoDP(LPRECT lpRect) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::LPtoDP(m_hAttribDC, (LPPOINT)lpRect, 2)); }
+
+_AFXWIN_INLINE BOOL CDC::FillRgn(CRgn* pRgn, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::FillRgn(m_hDC, (HRGN)pRgn->GetSafeHandle(), (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::FrameRgn(CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight)
+ { ASSERT(m_hDC != NULL); return ::FrameRgn(m_hDC, (HRGN)pRgn->GetSafeHandle(), (HBRUSH)pBrush->GetSafeHandle(),
+ nWidth, nHeight); }
+_AFXWIN_INLINE BOOL CDC::InvertRgn(CRgn* pRgn)
+ { ASSERT(m_hDC != NULL); return ::InvertRgn(m_hDC, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::PaintRgn(CRgn* pRgn)
+ { ASSERT(m_hDC != NULL); return ::PaintRgn(m_hDC, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::PtVisible(int x, int y) const
+ { ASSERT(m_hDC != NULL); return ::PtVisible(m_hDC, x, y); }
+_AFXWIN_INLINE BOOL CDC::PtVisible(POINT point) const
+ { ASSERT(m_hDC != NULL); return PtVisible(point.x, point.y); } // call virtual
+_AFXWIN_INLINE BOOL CDC::RectVisible(LPCRECT lpRect) const
+ { ASSERT(m_hDC != NULL); return ::RectVisible(m_hDC, lpRect); }
+_AFXWIN_INLINE CPoint CDC::GetCurrentPosition() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetCurrentPositionEx(m_hAttribDC, &point));
+ return point;
+ }
+
+_AFXWIN_INLINE CPoint CDC::MoveTo(POINT point)
+ { ASSERT(m_hDC != NULL); return MoveTo(point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::LineTo(POINT point)
+ { ASSERT(m_hDC != NULL); return LineTo(point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Arc(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Arc(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE BOOL CDC::Polyline(LPPOINT lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::Polyline(m_hDC, lpPoints, nCount); }
+_AFXWIN_INLINE void CDC::FillRect(LPCRECT lpRect, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); ::FillRect(m_hDC, lpRect, (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE void CDC::FrameRect(LPCRECT lpRect, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); ::FrameRect(m_hDC, lpRect, (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE void CDC::InvertRect(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); ::InvertRect(m_hDC, lpRect); }
+_AFXWIN_INLINE BOOL CDC::DrawIcon(int x, int y, HICON hIcon)
+ { ASSERT(m_hDC != NULL); return ::DrawIcon(m_hDC, x, y, hIcon); }
+_AFXWIN_INLINE BOOL CDC::DrawIcon(POINT point, HICON hIcon)
+ { ASSERT(m_hDC != NULL); return ::DrawIcon(m_hDC, point.x, point.y, hIcon); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::Chord(int x1, int y1, int x2, int y2, int x3, int y3,
+ int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Chord(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Chord(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+#endif
+_AFXWIN_INLINE void CDC::DrawFocusRect(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); ::DrawFocusRect(m_hDC, lpRect); }
+_AFXWIN_INLINE BOOL CDC::Ellipse(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hDC != NULL); return ::Ellipse(m_hDC, x1, y1, x2, y2); }
+_AFXWIN_INLINE BOOL CDC::Ellipse(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); return ::Ellipse(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE BOOL CDC::Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Pie(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Pie(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE BOOL CDC::Polygon(LPPOINT lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::Polygon(m_hDC, lpPoints, nCount); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::PolyPolygon(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyPolygon(m_hDC, lpPoints, lpPolyCounts, nCount); }
+#endif
+_AFXWIN_INLINE BOOL CDC::Rectangle(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hDC != NULL); return ::Rectangle(m_hDC, x1, y1, x2, y2); }
+_AFXWIN_INLINE BOOL CDC::Rectangle(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); return ::Rectangle(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE BOOL CDC::RoundRect(int x1, int y1, int x2, int y2, int x3, int y3)
+ { ASSERT(m_hDC != NULL); return ::RoundRect(m_hDC, x1, y1, x2, y2, x3, y3); }
+_AFXWIN_INLINE BOOL CDC::RoundRect(LPCRECT lpRect, POINT point)
+ { ASSERT(m_hDC != NULL); return ::RoundRect(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::PatBlt(m_hDC, x, y, nWidth, nHeight, dwRop); }
+_AFXWIN_INLINE BOOL CDC::BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::BitBlt(m_hDC, x, y, nWidth, nHeight,
+ pSrcDC->GetSafeHdc(), xSrc, ySrc, dwRop); }
+_AFXWIN_INLINE BOOL CDC::StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::StretchBlt(m_hDC, x, y, nWidth, nHeight,
+ pSrcDC->GetSafeHdc(), xSrc, ySrc, nSrcWidth, nSrcHeight,
+ dwRop); }
+_AFXWIN_INLINE COLORREF CDC::GetPixel(int x, int y) const
+ { ASSERT(m_hDC != NULL); return ::GetPixel(m_hDC, x, y); }
+_AFXWIN_INLINE COLORREF CDC::GetPixel(POINT point) const
+ { ASSERT(m_hDC != NULL); return ::GetPixel(m_hDC, point.x, point.y); }
+_AFXWIN_INLINE COLORREF CDC::SetPixel(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixel(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE COLORREF CDC::SetPixel(POINT point, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixel(m_hDC, point.x, point.y, crColor); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::FloodFill(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::FloodFill(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE BOOL CDC::ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType)
+ { ASSERT(m_hDC != NULL); return ::ExtFloodFill(m_hDC, x, y, crColor, nFillType); }
+#endif
+_AFXWIN_INLINE BOOL CDC::TextOut(int x, int y, LPCTSTR lpszString, int nCount)
+ { ASSERT(m_hDC != NULL); return ::TextOut(m_hDC, x, y, lpszString, nCount); }
+_AFXWIN_INLINE BOOL CDC::TextOut(int x, int y, const CString& str)
+ { ASSERT(m_hDC != NULL); return TextOut(x, y, (LPCTSTR)str, str.GetLength()); } // call virtual
+_AFXWIN_INLINE BOOL CDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths)
+ { ASSERT(m_hDC != NULL); return ::ExtTextOut(m_hDC, x, y, nOptions, lpRect,
+ lpszString, nCount, lpDxWidths); }
+_AFXWIN_INLINE CSize CDC::TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin)
+ { ASSERT(m_hDC != NULL); return ::TabbedTextOut(m_hDC, x, y, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions, nTabOrigin); }
+_AFXWIN_INLINE int CDC::DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat)
+ { ASSERT(m_hDC != NULL); return ::DrawText(m_hDC, lpszString, nCount, lpRect, nFormat); }
+_AFXWIN_INLINE CSize CDC::GetTextExtent(LPCTSTR lpszString, int nCount) const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hAttribDC, lpszString, nCount, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CDC::GetOutputTextExtent(LPCTSTR lpszString, int nCount) const
+ {
+ ASSERT(m_hDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hDC, lpszString, nCount, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CDC::GetTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTabbedTextExtent(m_hAttribDC, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE CSize CDC::GetOutputTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hDC != NULL); return ::GetTabbedTextExtent(m_hDC, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE BOOL CDC::GrayString(CBrush* pBrush,
+ BOOL (CALLBACK EXPORT* lpfnOutput)(HDC, LPARAM, int),
+ LPARAM lpData, int nCount,
+ int x, int y, int nWidth, int nHeight)
+ { ASSERT(m_hDC != NULL); return ::GrayString(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ (GRAYSTRINGPROC)lpfnOutput, lpData, nCount, x, y, nWidth, nHeight); }
+_AFXWIN_INLINE UINT CDC::GetTextAlign() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextAlign(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetTextFace(int nCount, LPTSTR lpszFacename) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextFace(m_hAttribDC, nCount, lpszFacename); }
+_AFXWIN_INLINE BOOL CDC::GetTextMetrics(LPTEXTMETRIC lpMetrics) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextMetrics(m_hAttribDC, lpMetrics); }
+_AFXWIN_INLINE BOOL CDC::GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const
+ { ASSERT(m_hDC != NULL); return ::GetTextMetrics(m_hDC, lpMetrics); }
+_AFXWIN_INLINE int CDC::GetTextCharacterExtra() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextCharacterExtra(m_hAttribDC); }
+_AFXWIN_INLINE BOOL CDC::GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharWidth(m_hAttribDC, nFirstChar, nLastChar, lpBuffer); }
+_AFXWIN_INLINE BOOL CDC::GetOutputCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const
+ { ASSERT(m_hDC != NULL); return ::GetCharWidth(m_hDC, nFirstChar, nLastChar, lpBuffer); }
+_AFXWIN_INLINE CSize CDC::GetAspectRatioFilter() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetAspectRatioFilterEx(m_hAttribDC, &size));
+ return size;
+ }
+_AFXWIN_INLINE BOOL CDC::ScrollDC(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* pRgnUpdate, LPRECT lpRectUpdate)
+ { ASSERT(m_hDC != NULL); return ::ScrollDC(m_hDC, dx, dy, lpRectScroll,
+ lpRectClip, (HRGN)pRgnUpdate->GetSafeHandle(), lpRectUpdate); }
+
+// Printer Escape Functions
+_AFXWIN_INLINE int CDC::Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData)
+ { ASSERT(m_hDC != NULL); return ::Escape(m_hDC, nEscape, nCount, lpszInData, lpOutData);}
+
+// CDC 3.1 Specific functions
+#ifndef _MAC
+_AFXWIN_INLINE UINT CDC::SetBoundsRect(LPCRECT lpRectBounds, UINT flags)
+ { ASSERT(m_hDC != NULL); return ::SetBoundsRect(m_hDC, lpRectBounds, flags); }
+_AFXWIN_INLINE UINT CDC::GetBoundsRect(LPRECT lpRectBounds, UINT flags)
+ { ASSERT(m_hAttribDC != NULL); return ::GetBoundsRect(m_hAttribDC, lpRectBounds, flags); }
+#endif
+_AFXWIN_INLINE BOOL CDC::ResetDC(const DEVMODE* lpDevMode)
+ { ASSERT(m_hAttribDC != NULL); return ::ResetDC(m_hAttribDC, lpDevMode) != NULL; }
+_AFXWIN_INLINE UINT CDC::GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetOutlineTextMetrics(m_hAttribDC, cbData, lpotm); }
+_AFXWIN_INLINE BOOL CDC::GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharABCWidths(m_hAttribDC, nFirstChar, nLastChar, lpabc); }
+_AFXWIN_INLINE DWORD CDC::GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData,
+ DWORD cbData) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetFontData(m_hAttribDC, dwTable, dwOffset, lpData, cbData); }
+#ifndef _MAC
+_AFXWIN_INLINE int CDC::GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetKerningPairs(m_hAttribDC, nPairs, lpkrnpair); }
+_AFXWIN_INLINE DWORD CDC::GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm,
+ DWORD cbBuffer, LPVOID lpBuffer, const MAT2* lpmat2) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetGlyphOutline(m_hAttribDC, nChar, nFormat,
+ lpgm, cbBuffer, lpBuffer, lpmat2); }
+#endif
+
+// Document handling functions
+_AFXWIN_INLINE int CDC::StartDoc(LPDOCINFO lpDocInfo)
+ { ASSERT(m_hDC != NULL); return ::StartDoc(m_hDC, lpDocInfo); }
+_AFXWIN_INLINE int CDC::StartPage()
+ { ASSERT(m_hDC != NULL); return ::StartPage(m_hDC); }
+_AFXWIN_INLINE int CDC::EndPage()
+ { ASSERT(m_hDC != NULL); return ::EndPage(m_hDC); }
+_AFXWIN_INLINE int CDC::SetAbortProc(BOOL (CALLBACK EXPORT* lpfn)(HDC, int))
+ { ASSERT(m_hDC != NULL); return ::SetAbortProc(m_hDC, (ABORTPROC)lpfn); }
+_AFXWIN_INLINE int CDC::AbortDoc()
+ { ASSERT(m_hDC != NULL); return ::AbortDoc(m_hDC); }
+_AFXWIN_INLINE int CDC::EndDoc()
+ { ASSERT(m_hDC != NULL); return ::EndDoc(m_hDC); }
+
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::MaskBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::MaskBlt(m_hDC, x, y, nWidth, nHeight, pSrcDC->GetSafeHdc(),
+ xSrc, ySrc, (HBITMAP)maskBitmap.m_hObject, xMask, yMask, dwRop); }
+_AFXWIN_INLINE BOOL CDC::PlgBlt(LPPOINT lpPoint, CDC* pSrcDC, int xSrc, int ySrc,
+ int nWidth, int nHeight, CBitmap& maskBitmap, int xMask, int yMask)
+ { ASSERT(m_hDC != NULL); return ::PlgBlt(m_hDC, lpPoint, pSrcDC->GetSafeHdc(), xSrc, ySrc, nWidth,
+ nHeight, (HBITMAP)maskBitmap.m_hObject, xMask, yMask); }
+_AFXWIN_INLINE BOOL CDC::SetPixelV(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixelV(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE BOOL CDC::SetPixelV(POINT point, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixelV(m_hDC, point.x, point.y, crColor); }
+_AFXWIN_INLINE BOOL CDC::AngleArc(int x, int y, int nRadius,
+ float fStartAngle, float fSweepAngle)
+ { ASSERT(m_hDC != NULL); return ::AngleArc(m_hDC, x, y, nRadius, fStartAngle, fSweepAngle); }
+_AFXWIN_INLINE BOOL CDC::ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ArcTo(lpRect->left, lpRect->top, lpRect->right,
+ lpRect->bottom, ptStart.x, ptStart.y, ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE int CDC::GetArcDirection() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetArcDirection(m_hAttribDC); }
+_AFXWIN_INLINE BOOL CDC::PolyPolyline(const POINT* lpPoints, const DWORD* lpPolyPoints,
+ int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyPolyline(m_hDC, lpPoints, lpPolyPoints, nCount); }
+_AFXWIN_INLINE BOOL CDC::GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetColorAdjustment(m_hAttribDC, lpColorAdjust); }
+_AFXWIN_INLINE CPen* CDC::GetCurrentPen() const
+ { ASSERT(m_hAttribDC != NULL); return CPen::FromHandle((HPEN)::GetCurrentObject(m_hAttribDC, OBJ_PEN)); }
+_AFXWIN_INLINE CBrush* CDC::GetCurrentBrush() const
+ { ASSERT(m_hAttribDC != NULL); return CBrush::FromHandle((HBRUSH)::GetCurrentObject(m_hAttribDC, OBJ_BRUSH)); }
+_AFXWIN_INLINE CPalette* CDC::GetCurrentPalette() const
+ { ASSERT(m_hAttribDC != NULL); return CPalette::FromHandle((HPALETTE)::GetCurrentObject(m_hAttribDC, OBJ_PAL)); }
+_AFXWIN_INLINE CFont* CDC::GetCurrentFont() const
+ { ASSERT(m_hAttribDC != NULL); return CFont::FromHandle((HFONT)::GetCurrentObject(m_hAttribDC, OBJ_FONT)); }
+_AFXWIN_INLINE CBitmap* CDC::GetCurrentBitmap() const
+ { ASSERT(m_hAttribDC != NULL); return CBitmap::FromHandle((HBITMAP)::GetCurrentObject(m_hAttribDC, OBJ_BITMAP)); }
+_AFXWIN_INLINE BOOL CDC::PolyBezier(const POINT* lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyBezier(m_hDC, lpPoints, nCount); }
+
+_AFXWIN_INLINE int CDC::DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData)
+ { ASSERT(m_hDC != NULL); return ::DrawEscape(m_hDC, nEscape, nInputSize, lpszInputData); }
+_AFXWIN_INLINE int CDC::Escape(int nEscape, int nInputSize, LPCSTR lpszInputData,
+ int nOutputSize, LPSTR lpszOutputData)
+ { ASSERT(m_hDC != NULL); return ::ExtEscape(m_hDC, nEscape, nInputSize, lpszInputData,
+ nOutputSize, lpszOutputData); }
+
+_AFXWIN_INLINE BOOL CDC::GetCharABCWidths(UINT nFirstChar, UINT nLastChar,
+ LPABCFLOAT lpABCF) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharABCWidthsFloat(m_hAttribDC, nFirstChar, nLastChar, lpABCF); }
+_AFXWIN_INLINE BOOL CDC::GetCharWidth(UINT nFirstChar, UINT nLastChar,
+ float* lpFloatBuffer) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharWidthFloat(m_hAttribDC, nFirstChar, nLastChar, lpFloatBuffer); }
+
+_AFXWIN_INLINE BOOL CDC::AbortPath()
+ { ASSERT(m_hDC != NULL); return ::AbortPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::BeginPath()
+ { ASSERT(m_hDC != NULL); return ::BeginPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::CloseFigure()
+ { ASSERT(m_hDC != NULL); return ::CloseFigure(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::EndPath()
+ { ASSERT(m_hDC != NULL); return ::EndPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::FillPath()
+ { ASSERT(m_hDC != NULL); return ::FillPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::FlattenPath()
+ { ASSERT(m_hDC != NULL); return ::FlattenPath(m_hDC); }
+_AFXWIN_INLINE float CDC::GetMiterLimit() const
+ { ASSERT(m_hDC != NULL); float fMiterLimit;
+ VERIFY(::GetMiterLimit(m_hDC, &fMiterLimit)); return fMiterLimit; }
+_AFXWIN_INLINE int CDC::GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const
+ { ASSERT(m_hDC != NULL); return ::GetPath(m_hDC, lpPoints, lpTypes, nCount); }
+_AFXWIN_INLINE BOOL CDC::SetMiterLimit(float fMiterLimit)
+ { ASSERT(m_hDC != NULL); return ::SetMiterLimit(m_hDC, fMiterLimit, NULL); }
+_AFXWIN_INLINE BOOL CDC::StrokeAndFillPath()
+ { ASSERT(m_hDC != NULL); return ::StrokeAndFillPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::StrokePath()
+ { ASSERT(m_hDC != NULL); return ::StrokePath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::WidenPath()
+ { ASSERT(m_hDC != NULL); return ::WidenPath(m_hDC); }
+
+_AFXWIN_INLINE BOOL CDC::AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData)
+ { ASSERT(m_hDC != NULL); return ::GdiComment(m_hDC, nDataSize, pCommentData); }
+_AFXWIN_INLINE BOOL CDC::PlayMetaFile(HENHMETAFILE hEnhMF, LPCRECT lpBounds)
+ { ASSERT(m_hDC != NULL); return ::PlayEnhMetaFile(m_hDC, hEnhMF, lpBounds); }
+#endif
+
+// CMenu
+_AFXWIN_INLINE CMenu::CMenu()
+ { m_hMenu = NULL; }
+_AFXWIN_INLINE CMenu::~CMenu()
+ { DestroyMenu(); }
+_AFXWIN_INLINE BOOL CMenu::CreateMenu()
+ { return Attach(::CreateMenu()); }
+_AFXWIN_INLINE BOOL CMenu::CreatePopupMenu()
+ { return Attach(::CreatePopupMenu()); }
+_AFXWIN_INLINE HMENU CMenu::GetSafeHmenu() const
+ { ASSERT(this == NULL || m_hMenu == NULL || ::IsMenu(m_hMenu));
+ return this == NULL ? NULL : m_hMenu; }
+_AFXWIN_INLINE BOOL CMenu::DeleteMenu(UINT nPosition, UINT nFlags)
+ { ASSERT(::IsMenu(m_hMenu)); return ::DeleteMenu(m_hMenu, nPosition, nFlags); }
+_AFXWIN_INLINE BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::AppendMenu(m_hMenu, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::AppendMenu(m_hMenu, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE UINT CMenu::CheckMenuItem(UINT nIDCheckItem, UINT nCheck)
+ { ASSERT(::IsMenu(m_hMenu)); return (UINT)::CheckMenuItem(m_hMenu, nIDCheckItem, nCheck); }
+_AFXWIN_INLINE UINT CMenu::EnableMenuItem(UINT nIDEnableItem, UINT nEnable)
+ { ASSERT(::IsMenu(m_hMenu)); return ::EnableMenuItem(m_hMenu, nIDEnableItem, nEnable); }
+_AFXWIN_INLINE UINT CMenu::GetMenuItemCount() const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuItemCount(m_hMenu); }
+_AFXWIN_INLINE UINT CMenu::GetMenuItemID(int nPos) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuItemID(m_hMenu, nPos); }
+_AFXWIN_INLINE UINT CMenu::GetMenuState(UINT nID, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuState(m_hMenu, nID, nFlags); }
+_AFXWIN_INLINE int CMenu::GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuString(m_hMenu, nIDItem, lpString, nMaxCount, nFlags); }
+_AFXWIN_INLINE CMenu* CMenu::GetSubMenu(int nPos) const
+ { ASSERT(::IsMenu(m_hMenu)); return CMenu::FromHandle(::GetSubMenu(m_hMenu, nPos)); }
+_AFXWIN_INLINE BOOL CMenu::InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::InsertMenu(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::InsertMenu(m_hMenu, nPosition, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::ModifyMenu(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::ModifyMenu(m_hMenu, nPosition, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::RemoveMenu(UINT nPosition, UINT nFlags)
+ { ASSERT(::IsMenu(m_hMenu)); return ::RemoveMenu(m_hMenu, nPosition, nFlags); }
+_AFXWIN_INLINE BOOL CMenu::SetMenuItemBitmaps(UINT nPosition, UINT nFlags,
+ const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked)
+ { ASSERT(::IsMenu(m_hMenu)); return ::SetMenuItemBitmaps(m_hMenu, nPosition, nFlags,
+ (HBITMAP)pBmpUnchecked->GetSafeHandle(),
+ (HBITMAP)pBmpChecked->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenu(LPCTSTR lpszResourceName)
+ { return Attach(::LoadMenu(AfxFindResourceHandle(lpszResourceName,
+ RT_MENU), lpszResourceName)); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenu(UINT nIDResource)
+ { return Attach(::LoadMenu(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDResource), RT_MENU), MAKEINTRESOURCE(nIDResource))); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenuIndirect(const void* lpMenuTemplate)
+ { return Attach(::LoadMenuIndirect(lpMenuTemplate)); }
+
+// CCmdUI
+_AFXWIN_INLINE void CCmdUI::ContinueRouting()
+ { m_bContinueRouting = TRUE; }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXWIN_INLINE
diff --git a/public/sdk/inc/mfc30/afxwin2.inl b/public/sdk/inc/mfc30/afxwin2.inl
new file mode 100644
index 000000000..d7b21fdf9
--- /dev/null
+++ b/public/sdk/inc/mfc30/afxwin2.inl
@@ -0,0 +1,899 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXWIN.H (part 2)
+
+#include <limits.h>
+
+#ifdef _AFXWIN_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+
+// CWnd
+_AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const
+ { return this == NULL ? NULL : m_hWnd; }
+_AFXWIN_INLINE DWORD CWnd::GetStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)GetWindowLong(m_hWnd, GWL_STYLE); }
+_AFXWIN_INLINE DWORD CWnd::GetExStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)GetWindowLong(m_hWnd, GWL_EXSTYLE); }
+_AFXWIN_INLINE BOOL CWnd::ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ModifyStyle(m_hWnd, dwRemove, dwAdd, nFlags); }
+_AFXWIN_INLINE BOOL CWnd::ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ModifyStyleEx(m_hWnd, dwRemove, dwAdd, nFlags); }
+_AFXWIN_INLINE CWnd* CWnd::GetOwner() const
+ { return m_hWndOwner != NULL ? CWnd::FromHandle(m_hWndOwner) : GetParent(); }
+_AFXWIN_INLINE void CWnd::SetOwner(CWnd* pOwnerWnd)
+ { m_hWndOwner = pOwnerWnd != NULL ? pOwnerWnd->m_hWnd : NULL; }
+_AFXWIN_INLINE LRESULT CWnd::SendMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, message, wParam, lParam); }
+_AFXWIN_INLINE BOOL CWnd::PostMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::PostMessage(m_hWnd, message, wParam, lParam); }
+_AFXWIN_INLINE void CWnd::SetWindowText(LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetWindowText(m_hWnd, lpszString); }
+_AFXWIN_INLINE int CWnd::GetWindowText(LPTSTR lpszString, int nMaxCount) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowText(m_hWnd, lpszString, nMaxCount); }
+_AFXWIN_INLINE int CWnd::GetWindowTextLength() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowTextLength(m_hWnd); }
+_AFXWIN_INLINE void CWnd::SetFont(CFont* pFont, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_SETFONT, (WPARAM)pFont->GetSafeHandle(), bRedraw); }
+_AFXWIN_INLINE CFont* CWnd::GetFont() const
+ { ASSERT(::IsWindow(m_hWnd)); return CFont::FromHandle(
+ (HFONT)::SendMessage(m_hWnd, WM_GETFONT, 0, 0)); }
+_AFXWIN_INLINE CMenu* CWnd::GetMenu() const
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle(::GetMenu(m_hWnd)); }
+_AFXWIN_INLINE BOOL CWnd::SetMenu(CMenu* pMenu)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetMenu(m_hWnd, pMenu->GetSafeHmenu()); }
+_AFXWIN_INLINE void CWnd::DrawMenuBar()
+ { ASSERT(::IsWindow(m_hWnd)); ::DrawMenuBar(m_hWnd); }
+_AFXWIN_INLINE CMenu* CWnd::GetSystemMenu(BOOL bRevert) const
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle(::GetSystemMenu(m_hWnd, bRevert)); }
+_AFXWIN_INLINE BOOL CWnd::HiliteMenuItem(CMenu* pMenu, UINT nIDHiliteItem, UINT nHilite)
+ { ASSERT(::IsWindow(m_hWnd)); return ::HiliteMenuItem(m_hWnd, pMenu->m_hMenu, nIDHiliteItem, nHilite); }
+_AFXWIN_INLINE int CWnd::GetDlgCtrlID() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgCtrlID(m_hWnd); }
+_AFXWIN_INLINE int CWnd::SetDlgCtrlID(int nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SetWindowLong(m_hWnd, GWL_ID, nID); }
+_AFXWIN_INLINE BOOL CWnd::IsIconic() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsIconic(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::IsZoomed() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsZoomed(m_hWnd); }
+_AFXWIN_INLINE void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint)
+ { ASSERT(::IsWindow(m_hWnd)); ::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint); }
+_AFXWIN_INLINE void CWnd::MoveWindow(LPCRECT lpRect, BOOL bRepaint)
+ { ASSERT(::IsWindow(m_hWnd)); ::MoveWindow(m_hWnd, lpRect->left, lpRect->top,
+ lpRect->right - lpRect->left, lpRect->bottom - lpRect->top, bRepaint); }
+_AFXWIN_INLINE BOOL CWnd::SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetWindowPos(m_hWnd, pWndInsertAfter->GetSafeHwnd(),
+ x, y, cx, cy, nFlags); }
+#ifndef _MAC
+_AFXWIN_INLINE UINT CWnd::ArrangeIconicWindows()
+ { ASSERT(::IsWindow(m_hWnd)); return ::ArrangeIconicWindows(m_hWnd); }
+#endif
+_AFXWIN_INLINE void CWnd::BringWindowToTop()
+ { ASSERT(::IsWindow(m_hWnd)); ::BringWindowToTop(m_hWnd); }
+_AFXWIN_INLINE void CWnd::GetWindowRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetWindowRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::GetClientRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetClientRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE BOOL CWnd::GetWindowPlacement(WINDOWPLACEMENT* lpwndpl) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowPlacement(m_hWnd, lpwndpl); }
+_AFXWIN_INLINE BOOL CWnd::SetWindowPlacement(const WINDOWPLACEMENT* lpwndpl)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetWindowPlacement(m_hWnd, lpwndpl); }
+_AFXWIN_INLINE void CWnd::MapWindowPoints(CWnd* pwndTo, LPPOINT lpPoint, UINT nCount) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapWindowPoints(m_hWnd, pwndTo->GetSafeHwnd(), lpPoint, nCount); }
+_AFXWIN_INLINE void CWnd::MapWindowPoints(CWnd* pwndTo, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapWindowPoints(m_hWnd, pwndTo->GetSafeHwnd(), (LPPOINT)lpRect, 2); }
+_AFXWIN_INLINE void CWnd::ClientToScreen(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ClientToScreen(m_hWnd, lpPoint); }
+_AFXWIN_INLINE void CWnd::ClientToScreen(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ClientToScreen(m_hWnd, (LPPOINT)lpRect);
+ ::ClientToScreen(m_hWnd, ((LPPOINT)lpRect)+1); }
+_AFXWIN_INLINE void CWnd::ScreenToClient(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ScreenToClient(m_hWnd, lpPoint); }
+_AFXWIN_INLINE void CWnd::ScreenToClient(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ScreenToClient(m_hWnd, (LPPOINT)lpRect);
+ ::ScreenToClient(m_hWnd, ((LPPOINT)lpRect)+1); }
+_AFXWIN_INLINE CDC* CWnd::BeginPaint(LPPAINTSTRUCT lpPaint)
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::BeginPaint(m_hWnd, lpPaint)); }
+_AFXWIN_INLINE void CWnd::EndPaint(LPPAINTSTRUCT lpPaint)
+ { ASSERT(::IsWindow(m_hWnd)); ::EndPaint(m_hWnd, lpPaint); }
+_AFXWIN_INLINE CDC* CWnd::GetDC()
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDC(m_hWnd)); }
+_AFXWIN_INLINE CDC* CWnd::GetWindowDC()
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetWindowDC(m_hWnd)); }
+_AFXWIN_INLINE int CWnd::ReleaseDC(CDC* pDC)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ReleaseDC(m_hWnd, pDC->m_hDC); }
+_AFXWIN_INLINE void CWnd::UpdateWindow()
+ { ASSERT(::IsWindow(m_hWnd)); ::UpdateWindow(m_hWnd); }
+_AFXWIN_INLINE void CWnd::SetRedraw(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_SETREDRAW, bRedraw, 0); }
+_AFXWIN_INLINE BOOL CWnd::GetUpdateRect(LPRECT lpRect, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetUpdateRect(m_hWnd, lpRect, bErase); }
+_AFXWIN_INLINE int CWnd::GetUpdateRgn(CRgn* pRgn, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetUpdateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle(), bErase); }
+_AFXWIN_INLINE void CWnd::Invalidate(BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRect(m_hWnd, NULL, bErase); }
+_AFXWIN_INLINE void CWnd::InvalidateRect(LPCRECT lpRect, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRect(m_hWnd, lpRect, bErase); }
+_AFXWIN_INLINE void CWnd::InvalidateRgn(CRgn* pRgn, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle(), bErase); }
+_AFXWIN_INLINE void CWnd::ValidateRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::ValidateRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::ValidateRgn(CRgn* pRgn)
+ { ASSERT(::IsWindow(m_hWnd)); ::ValidateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CWnd::ShowWindow(int nCmdShow)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ShowWindow(m_hWnd, nCmdShow); }
+_AFXWIN_INLINE BOOL CWnd::IsWindowVisible() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsWindowVisible(m_hWnd); }
+_AFXWIN_INLINE void CWnd::ShowOwnedPopups(BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowOwnedPopups(m_hWnd, bShow); }
+_AFXWIN_INLINE void CWnd::SendMessageToDescendants(
+ UINT message, WPARAM wParam, LPARAM lParam, BOOL bDeep, BOOL bOnlyPerm)
+ { ASSERT(::IsWindow(m_hWnd)); CWnd::SendMessageToDescendants(m_hWnd, message, wParam, lParam, bDeep,
+ bOnlyPerm); }
+_AFXWIN_INLINE CWnd* CWnd::GetDescendantWindow(int nID, BOOL bOnlyPerm) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::GetDescendantWindow(m_hWnd, nID, bOnlyPerm); }
+
+_AFXWIN_INLINE CDC* CWnd::GetDCEx(CRgn* prgnClip, DWORD flags)
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDCEx(m_hWnd, (HRGN)prgnClip->GetSafeHandle(), flags)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::LockWindowUpdate()
+ { ASSERT(::IsWindow(m_hWnd)); return ::LockWindowUpdate(m_hWnd); }
+_AFXWIN_INLINE void CWnd::UnlockWindowUpdate()
+ { ASSERT(::IsWindow(m_hWnd)); ::LockWindowUpdate(NULL); }
+#endif
+_AFXWIN_INLINE BOOL CWnd::RedrawWindow(LPCRECT lpRectUpdate, CRgn* prgnUpdate,
+ UINT flags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::RedrawWindow(m_hWnd, lpRectUpdate, (HRGN)prgnUpdate->GetSafeHandle(), flags); }
+_AFXWIN_INLINE BOOL CWnd::EnableScrollBar(int nSBFlags, UINT nArrowFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::EnableScrollBar(m_hWnd, nSBFlags, nArrowFlags); }
+
+_AFXWIN_INLINE UINT CWnd::SetTimer(UINT nIDEvent, UINT nElapse,
+ void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD))
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetTimer(m_hWnd, nIDEvent, nElapse,
+ (TIMERPROC)lpfnTimer); }
+_AFXWIN_INLINE BOOL CWnd::KillTimer(int nIDEvent)
+ { ASSERT(::IsWindow(m_hWnd)); return ::KillTimer(m_hWnd, nIDEvent); }
+_AFXWIN_INLINE BOOL CWnd::IsWindowEnabled() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsWindowEnabled(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::EnableWindow(BOOL bEnable)
+ { ASSERT(::IsWindow(m_hWnd)); return ::EnableWindow(m_hWnd, bEnable); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetActiveWindow()
+ { return CWnd::FromHandle(::GetActiveWindow()); }
+_AFXWIN_INLINE CWnd* CWnd::SetActiveWindow()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetActiveWindow(m_hWnd)); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetCapture()
+ { return CWnd::FromHandle(::GetCapture()); }
+_AFXWIN_INLINE CWnd* CWnd::SetCapture()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetCapture(m_hWnd)); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetFocus()
+ { return CWnd::FromHandle(::GetFocus()); }
+_AFXWIN_INLINE CWnd* CWnd::SetFocus()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetFocus(m_hWnd)); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetDesktopWindow()
+ { return CWnd::FromHandle(::GetDesktopWindow()); }
+_AFXWIN_INLINE void CWnd::CheckDlgButton(int nIDButton, UINT nCheck)
+ { ASSERT(::IsWindow(m_hWnd)); ::CheckDlgButton(m_hWnd, nIDButton, nCheck); }
+_AFXWIN_INLINE void CWnd::CheckRadioButton(int nIDFirstButton, int nIDLastButton,
+ int nIDCheckButton)
+ { ASSERT(::IsWindow(m_hWnd)); ::CheckRadioButton(m_hWnd, nIDFirstButton, nIDLastButton, nIDCheckButton); }
+#ifndef _MAC
+_AFXWIN_INLINE int CWnd::DlgDirList(LPTSTR lpPathSpec, int nIDListBox,
+ int nIDStaticPath, UINT nFileType)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirList(m_hWnd, lpPathSpec, nIDListBox,
+ nIDStaticPath, nFileType); }
+_AFXWIN_INLINE int CWnd::DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox,
+ int nIDStaticPath, UINT nFileType)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirListComboBox(m_hWnd, lpPathSpec,
+ nIDComboBox, nIDStaticPath, nFileType); }
+_AFXWIN_INLINE BOOL CWnd::DlgDirSelect(LPTSTR lpString, int nIDListBox)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirSelectEx(m_hWnd, lpString, _MAX_PATH, nIDListBox); }
+_AFXWIN_INLINE BOOL CWnd::DlgDirSelectComboBox(LPTSTR lpString, int nIDComboBox)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirSelectComboBoxEx(m_hWnd, lpString, _MAX_PATH, nIDComboBox);}
+#endif
+_AFXWIN_INLINE CWnd* CWnd::GetDlgItem(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID)); }
+_AFXWIN_INLINE UINT CWnd::GetDlgItemInt(int nID, BOOL* lpTrans,
+ BOOL bSigned) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgItemInt(m_hWnd, nID, lpTrans, bSigned);}
+_AFXWIN_INLINE int CWnd::GetDlgItemText(int nID, LPTSTR lpStr, int nMaxCount) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgItemText(m_hWnd, nID, lpStr, nMaxCount);}
+_AFXWIN_INLINE CWnd* CWnd::GetNextDlgGroupItem(CWnd* pWndCtl, BOOL bPrevious) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextDlgGroupItem(m_hWnd,
+ pWndCtl->m_hWnd, bPrevious)); }
+_AFXWIN_INLINE CWnd* CWnd::GetNextDlgTabItem(CWnd* pWndCtl, BOOL bPrevious) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextDlgTabItem(m_hWnd,
+ pWndCtl->m_hWnd, bPrevious)); }
+_AFXWIN_INLINE UINT CWnd::IsDlgButtonChecked(int nIDButton) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsDlgButtonChecked(m_hWnd, nIDButton); }
+_AFXWIN_INLINE LPARAM CWnd::SendDlgItemMessage(int nID, UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendDlgItemMessage(m_hWnd, nID, message, wParam, lParam); }
+_AFXWIN_INLINE void CWnd::SetDlgItemInt(int nID, UINT nValue, BOOL bSigned)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetDlgItemInt(m_hWnd, nID, nValue, bSigned); }
+_AFXWIN_INLINE void CWnd::SetDlgItemText(int nID, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetDlgItemText(m_hWnd, nID, lpszString); }
+_AFXWIN_INLINE void CWnd::ScrollWindow(int xAmount, int yAmount,
+ LPCRECT lpRect, LPCRECT lpClipRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::ScrollWindow(m_hWnd, xAmount, yAmount, lpRect, lpClipRect); }
+_AFXWIN_INLINE int CWnd::ScrollWindowEx(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ScrollWindowEx(m_hWnd, dx, dy, lpRectScroll, lpRectClip,
+ (HRGN)prgnUpdate->GetSafeHandle(), lpRectUpdate, flags); }
+
+_AFXWIN_INLINE void CWnd::ShowScrollBar(UINT nBar, BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowScrollBar(m_hWnd, nBar, bShow); }
+_AFXWIN_INLINE CWnd* CWnd::ChildWindowFromPoint(POINT point) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::ChildWindowFromPoint(m_hWnd, point)); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName)
+ { return CWnd::FromHandle(::FindWindow(lpszClassName, lpszWindowName)); }
+_AFXWIN_INLINE CWnd* CWnd::GetNextWindow(UINT nFlag) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextWindow(m_hWnd, nFlag)); }
+_AFXWIN_INLINE CWnd* CWnd::GetTopWindow() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetTopWindow(m_hWnd)); }
+_AFXWIN_INLINE CWnd* CWnd::GetWindow(UINT nCmd) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetWindow(m_hWnd, nCmd)); }
+_AFXWIN_INLINE CWnd* CWnd::GetLastActivePopup() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetLastActivePopup(m_hWnd)); }
+_AFXWIN_INLINE BOOL CWnd::IsChild(const CWnd* pWnd) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsChild(m_hWnd, pWnd->GetSafeHwnd()); }
+_AFXWIN_INLINE CWnd* CWnd::GetParent() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetParent(m_hWnd)); }
+_AFXWIN_INLINE CWnd* CWnd::SetParent(CWnd* pWndNewParent)
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetParent(m_hWnd,
+ pWndNewParent->GetSafeHwnd())); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::WindowFromPoint(POINT point)
+ { return CWnd::FromHandle(::WindowFromPoint(point)); }
+_AFXWIN_INLINE BOOL CWnd::FlashWindow(BOOL bInvert)
+ { ASSERT(::IsWindow(m_hWnd)); return ::FlashWindow(m_hWnd, bInvert); }
+_AFXWIN_INLINE BOOL CWnd::ChangeClipboardChain(HWND hWndNext)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ChangeClipboardChain(m_hWnd, hWndNext); }
+_AFXWIN_INLINE HWND CWnd::SetClipboardViewer()
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetClipboardViewer(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::OpenClipboard()
+ { ASSERT(::IsWindow(m_hWnd)); return ::OpenClipboard(m_hWnd); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetOpenClipboardWindow()
+ { return CWnd::FromHandle(::GetOpenClipboardWindow()); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetClipboardOwner()
+ { return CWnd::FromHandle(::GetClipboardOwner()); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetClipboardViewer()
+ { return CWnd::FromHandle(::GetClipboardViewer()); }
+_AFXWIN_INLINE void CWnd::CreateCaret(CBitmap* pBitmap)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)pBitmap->GetSafeHandle(), 0, 0); }
+_AFXWIN_INLINE void CWnd::CreateSolidCaret(int nWidth, int nHeight)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)0, nWidth, nHeight); }
+_AFXWIN_INLINE void CWnd::CreateGrayCaret(int nWidth, int nHeight)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)1, nWidth, nHeight); }
+_AFXWIN_INLINE CPoint PASCAL CWnd::GetCaretPos()
+ { CPoint point; ::GetCaretPos((LPPOINT)&point); return point; }
+_AFXWIN_INLINE void PASCAL CWnd::SetCaretPos(POINT point)
+ { ::SetCaretPos(point.x, point.y); }
+_AFXWIN_INLINE void CWnd::HideCaret()
+ { ASSERT(::IsWindow(m_hWnd)); ::HideCaret(m_hWnd); }
+_AFXWIN_INLINE void CWnd::ShowCaret()
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowCaret(m_hWnd); }
+_AFXWIN_INLINE void CWnd::DragAcceptFiles(BOOL bAccept)
+ { ASSERT(::IsWindow(m_hWnd)); ::DragAcceptFiles(m_hWnd, bAccept); }
+_AFXWIN_INLINE BOOL CWnd::SetForegroundWindow()
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetForegroundWindow(m_hWnd); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetForegroundWindow()
+ { return CWnd::FromHandle(::GetForegroundWindow()); }
+
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::SendNotifyMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendNotifyMessage(m_hWnd, message, wParam, lParam); }
+#endif
+
+// Default message map implementations
+_AFXWIN_INLINE void CWnd::OnActivateApp(BOOL, HTASK)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnActivate(UINT, CWnd*, BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCancelMode()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChildActivate()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnClose()
+ { Default(); }
+_AFXWIN_INLINE int CWnd::OnCreate(LPCREATESTRUCT)
+ { return (int)Default(); }
+_AFXWIN_INLINE void CWnd::OnDestroy()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEnable(BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEndSession(BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEnterIdle(UINT, CWnd*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnEraseBkgnd(CDC*)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnGetMinMaxInfo(MINMAXINFO*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnIconEraseBkgnd(CDC*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKillFocus(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE LRESULT CWnd::OnMenuChar(UINT, UINT, CMenu*)
+ { return Default(); }
+_AFXWIN_INLINE void CWnd::OnMenuSelect(UINT, UINT, HMENU)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMove(int, int)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaint()
+ { Default(); }
+_AFXWIN_INLINE HCURSOR CWnd::OnQueryDragIcon()
+ { return (HCURSOR)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryEndSession()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryNewPalette()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryOpen()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnSetCursor(CWnd*, UINT, UINT)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnSetFocus(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnShowWindow(BOOL, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSize(UINT, int, int)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnWindowPosChanging(WINDOWPOS*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnWindowPosChanged(WINDOWPOS*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDropFiles(HDROP)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaletteIsChanging(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnNcActivate(BOOL)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnNcCreate(LPCREATESTRUCT)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE UINT CWnd::OnNcHitTest(CPoint)
+ { return (UINT)Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMouseMove(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcPaint()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysCommand(UINT, LPARAM)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysDeadChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysKeyDown(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysKeyUp(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCompacting(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnFontChange()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaletteChanged(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSpoolerStatus(UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTimeChange()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDeadChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKeyDown(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKeyUp(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE int CWnd::OnMouseActivate(CWnd*, UINT, UINT)
+ { return (int)Default(); }
+_AFXWIN_INLINE void CWnd::OnMouseMove(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTimer(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnInitMenu(CMenu*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnInitMenuPopup(CMenu*, UINT, BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnAskCbFormatName(UINT, LPTSTR)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChangeCbChain(HWND, HWND)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDestroyClipboard()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDrawClipboard()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnHScrollClipboard(CWnd*, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaintClipboard(CWnd*, HGLOBAL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRenderAllFormats()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRenderFormat(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSizeClipboard(CWnd*, HGLOBAL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnVScrollClipboard(CWnd*, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE UINT CWnd::OnGetDlgCode()
+ { return (UINT)Default(); }
+_AFXWIN_INLINE int CWnd::OnCharToItem(UINT, CListBox*, UINT)
+ { return (int)Default(); }
+_AFXWIN_INLINE int CWnd::OnVKeyToItem(UINT, CListBox*, UINT)
+ { return (int)Default(); }
+_AFXWIN_INLINE void CWnd::OnMDIActivate(BOOL, CWnd*, CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEnterMenuLoop(BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnExitMenuLoop(BOOL)
+ { Default(); }
+
+// CWnd dialog data support
+_AFXWIN_INLINE void CWnd::DoDataExchange(CDataExchange*)
+ { } // default does nothing
+
+// CFrameWnd
+_AFXWIN_INLINE void CFrameWnd::DelayUpdateFrameTitle()
+ { m_nIdleFlags |= idleTitle; }
+_AFXWIN_INLINE void CFrameWnd::DelayRecalcLayout(BOOL bNotify)
+ { m_nIdleFlags |= (idleLayout | (bNotify ? idleNotify : 0)); };
+_AFXWIN_INLINE BOOL CFrameWnd::InModalState() const
+ { return m_cModalStack != 0; }
+_AFXWIN_INLINE void CFrameWnd::AddControlBar(CControlBar *pBar)
+ { m_listControlBars.AddTail(pBar); }
+
+// CDialog
+_AFXWIN_INLINE BOOL CDialog::Create(UINT nIDTemplate, CWnd* pParentWnd)
+ { return Create(MAKEINTRESOURCE(nIDTemplate), pParentWnd); }
+_AFXWIN_INLINE void CDialog::MapDialogRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapDialogRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CDialog::SetHelpID(UINT nIDR)
+ { m_nIDHelp = nIDR; }
+_AFXWIN_INLINE BOOL CDialog::IsDialogMessage(LPMSG lpMsg)
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsDialogMessage(m_hWnd, lpMsg); }
+_AFXWIN_INLINE void CDialog::NextDlgCtrl() const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, 0, 0); }
+_AFXWIN_INLINE void CDialog::PrevDlgCtrl() const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, 1, 0); }
+_AFXWIN_INLINE void CDialog::GotoDlgCtrl(CWnd* pWndCtrl)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, (WPARAM)pWndCtrl->m_hWnd, 1L); }
+_AFXWIN_INLINE void CDialog::SetDefID(UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, DM_SETDEFID, nID, 0); }
+_AFXWIN_INLINE DWORD CDialog::GetDefID() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, DM_GETDEFID, 0, 0); }
+_AFXWIN_INLINE void CDialog::EndDialog(int nResult)
+ { ASSERT(::IsWindow(m_hWnd)); ::EndDialog(m_hWnd, nResult); }
+
+// Window control functions
+_AFXWIN_INLINE CStatic::CStatic()
+ { }
+_AFXWIN_INLINE CButton::CButton()
+ { }
+_AFXWIN_INLINE HICON CStatic::SetIcon(HICON hIcon)
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, STM_SETICON, (WPARAM)hIcon, 0L); }
+_AFXWIN_INLINE HICON CStatic::GetIcon() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, STM_GETICON, 0, 0L); }
+
+_AFXWIN_INLINE UINT CButton::GetState() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, BM_GETSTATE, 0, 0); }
+_AFXWIN_INLINE void CButton::SetState(BOOL bHighlight)
+ { ::SendMessage(m_hWnd, BM_SETSTATE, bHighlight, 0); }
+_AFXWIN_INLINE int CButton::GetCheck() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, BM_GETCHECK, 0, 0); }
+_AFXWIN_INLINE void CButton::SetCheck(int nCheck)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETCHECK, nCheck, 0); }
+_AFXWIN_INLINE UINT CButton::GetButtonStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)GetWindowLong(m_hWnd, GWL_STYLE) & 0xff; }
+_AFXWIN_INLINE void CButton::SetButtonStyle(UINT nStyle, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETSTYLE, nStyle, (LPARAM)bRedraw); }
+_AFXWIN_INLINE CListBox::CListBox()
+ { }
+_AFXWIN_INLINE int CListBox::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0); }
+_AFXWIN_INLINE int CListBox::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0); }
+_AFXWIN_INLINE int CListBox::SetCurSel(int nSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETCURSEL, nSelect, 0); }
+_AFXWIN_INLINE int CListBox::GetHorizontalExtent() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETHORIZONTALEXTENT,
+ 0, 0); }
+_AFXWIN_INLINE void CListBox::SetHorizontalExtent(int cxExtent)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETHORIZONTALEXTENT, cxExtent, 0); }
+_AFXWIN_INLINE int CListBox::GetSelCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSELCOUNT, 0, 0); }
+_AFXWIN_INLINE int CListBox::GetSelItems(int nMaxItems, LPINT rgIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSELITEMS, nMaxItems, (LPARAM)rgIndex); }
+_AFXWIN_INLINE int CListBox::GetTopIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTOPINDEX, 0, 0); }
+_AFXWIN_INLINE int CListBox::SetTopIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETTOPINDEX, nIndex, 0);}
+_AFXWIN_INLINE DWORD CListBox::GetItemData(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetItemData(int nIndex, DWORD dwItemData)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETITEMDATA, nIndex, (LPARAM)dwItemData); }
+_AFXWIN_INLINE void* CListBox::GetItemDataPtr(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (LPVOID)::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetItemDataPtr(int nIndex, void* pData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItemData(nIndex, (DWORD)(LPVOID)pData); }
+_AFXWIN_INLINE int CListBox::GetItemRect(int nIndex, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETITEMRECT, nIndex, (LPARAM)lpRect); }
+_AFXWIN_INLINE int CListBox::GetSel(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSEL, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetSel(int nIndex, BOOL bSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETSEL, bSelect, nIndex); }
+_AFXWIN_INLINE int CListBox::GetText(int nIndex, LPTSTR lpszBuffer) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTEXT, nIndex, (LPARAM)lpszBuffer); }
+_AFXWIN_INLINE int CListBox::GetTextLen(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTEXTLEN, nIndex, 0); }
+_AFXWIN_INLINE void CListBox::SetColumnWidth(int cxWidth)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETCOLUMNWIDTH, cxWidth, 0); }
+_AFXWIN_INLINE BOOL CListBox::SetTabStops(int nTabStops, LPINT rgTabStops)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, nTabStops, (LPARAM)rgTabStops); }
+_AFXWIN_INLINE void CListBox::SetTabStops()
+ { ASSERT(::IsWindow(m_hWnd)); VERIFY(::SendMessage(m_hWnd, LB_SETTABSTOPS, 0, 0)); }
+_AFXWIN_INLINE BOOL CListBox::SetTabStops(const int& cxEachStop)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, 1, (LPARAM)(LPINT)&cxEachStop); }
+_AFXWIN_INLINE int CListBox::SetItemHeight(int nIndex, UINT cyItemHeight)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0)); }
+_AFXWIN_INLINE int CListBox::GetItemHeight(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETITEMHEIGHT, nIndex, 0L); }
+_AFXWIN_INLINE int CListBox::FindStringExact(int nIndexStart, LPCTSTR lpszFind) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind); }
+_AFXWIN_INLINE int CListBox::GetCaretIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCARETINDEX, 0, 0L); }
+_AFXWIN_INLINE int CListBox::SetCaretIndex(int nIndex, BOOL bScroll)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETCARETINDEX, nIndex, MAKELONG(bScroll, 0)); }
+_AFXWIN_INLINE int CListBox::AddString(LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_ADDSTRING, 0, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::DeleteString(UINT nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_DELETESTRING, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::InsertString(int nIndex, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_INSERTSTRING, nIndex, (LPARAM)lpszItem); }
+_AFXWIN_INLINE void CListBox::ResetContent()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_RESETCONTENT, 0, 0); }
+_AFXWIN_INLINE int CListBox::Dir(UINT attr, LPCTSTR lpszWildCard)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_DIR, attr, (LPARAM)lpszWildCard); }
+_AFXWIN_INLINE int CListBox::FindString(int nStartAfter, LPCTSTR lpszItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_FINDSTRING,
+ nStartAfter, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::SelectString(int nStartAfter, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SELECTSTRING,
+ nStartAfter, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem)
+ { ASSERT(::IsWindow(m_hWnd)); return bSelect ?
+ (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nFirstItem, nLastItem) :
+ (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nLastItem, nFirstItem); }
+_AFXWIN_INLINE void CListBox::SetAnchorIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETANCHORINDEX, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::GetAnchorIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETANCHORINDEX, 0, 0); }
+_AFXWIN_INLINE LCID CListBox::GetLocale() const
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, LB_GETLOCALE, 0, 0); }
+_AFXWIN_INLINE LCID CListBox::SetLocale(LCID nNewLocale)
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, LB_SETLOCALE, (WPARAM)nNewLocale, 0); }
+
+
+_AFXWIN_INLINE CComboBox::CComboBox()
+ { }
+_AFXWIN_INLINE int CComboBox::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETCOUNT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetCurSel(int nSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETCURSEL, nSelect, 0); }
+_AFXWIN_INLINE DWORD CComboBox::GetEditSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, CB_GETEDITSEL, 0, 0); }
+_AFXWIN_INLINE BOOL CComboBox::LimitText(int nMaxChars)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_LIMITTEXT, nMaxChars, 0); }
+_AFXWIN_INLINE BOOL CComboBox::SetEditSel(int nStartChar, int nEndChar)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_SETEDITSEL, 0, MAKELONG(nStartChar, nEndChar)); }
+_AFXWIN_INLINE DWORD CComboBox::GetItemData(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, CB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CComboBox::SetItemData(int nIndex, DWORD dwItemData)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETITEMDATA, nIndex, (LPARAM)dwItemData); }
+_AFXWIN_INLINE void* CComboBox::GetItemDataPtr(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (LPVOID)GetItemData(nIndex); }
+_AFXWIN_INLINE int CComboBox::SetItemDataPtr(int nIndex, void* pData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItemData(nIndex, (DWORD)(LPVOID)pData); }
+_AFXWIN_INLINE int CComboBox::GetLBText(int nIndex, LPTSTR lpszText) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETLBTEXT, nIndex, (LPARAM)lpszText); }
+_AFXWIN_INLINE int CComboBox::GetLBTextLen(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETLBTEXTLEN, nIndex, 0); }
+_AFXWIN_INLINE void CComboBox::ShowDropDown(BOOL bShowIt)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_SHOWDROPDOWN, bShowIt, 0); }
+_AFXWIN_INLINE int CComboBox::AddString(LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_ADDSTRING, 0, (LPARAM)lpszString); }
+_AFXWIN_INLINE int CComboBox::DeleteString(UINT nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_DELETESTRING, nIndex, 0);}
+_AFXWIN_INLINE int CComboBox::InsertString(int nIndex, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_INSERTSTRING, nIndex, (LPARAM)lpszString); }
+_AFXWIN_INLINE void CComboBox::ResetContent()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_RESETCONTENT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::Dir(UINT attr, LPCTSTR lpszWildCard)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_DIR, attr, (LPARAM)lpszWildCard); }
+_AFXWIN_INLINE int CComboBox::FindString(int nStartAfter, LPCTSTR lpszString) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_FINDSTRING, nStartAfter,
+ (LPARAM)lpszString); }
+_AFXWIN_INLINE int CComboBox::SelectString(int nStartAfter, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SELECTSTRING,
+ nStartAfter, (LPARAM)lpszString); }
+_AFXWIN_INLINE void CComboBox::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetItemHeight(int nIndex, UINT cyItemHeight)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0)); }
+_AFXWIN_INLINE int CComboBox::GetItemHeight(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETITEMHEIGHT, nIndex, 0L); }
+_AFXWIN_INLINE int CComboBox::FindStringExact(int nIndexStart, LPCTSTR lpszFind) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind); }
+_AFXWIN_INLINE int CComboBox::SetExtendedUI(BOOL bExtended )
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETEXTENDEDUI, bExtended, 0L); }
+_AFXWIN_INLINE BOOL CComboBox::GetExtendedUI() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_GETEXTENDEDUI, 0, 0L); }
+_AFXWIN_INLINE void CComboBox::GetDroppedControlRect(LPRECT lprect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_GETDROPPEDCONTROLRECT, 0, (DWORD)lprect); }
+_AFXWIN_INLINE BOOL CComboBox::GetDroppedState() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_GETDROPPEDSTATE, 0, 0L); }
+_AFXWIN_INLINE LCID CComboBox::GetLocale() const
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, CB_GETLOCALE, 0, 0); }
+_AFXWIN_INLINE LCID CComboBox::SetLocale(LCID nNewLocale)
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, CB_SETLOCALE, (WPARAM)nNewLocale, 0); }
+
+_AFXWIN_INLINE CEdit::CEdit()
+ { }
+_AFXWIN_INLINE BOOL CEdit::CanUndo() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0); }
+_AFXWIN_INLINE int CEdit::GetLineCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::GetModify() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetModify(BOOL bModified)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0); }
+_AFXWIN_INLINE void CEdit::GetRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::GetSel(int& nStartChar, int& nEndChar) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETSEL, (WPARAM)&nStartChar,(LPARAM)&nEndChar); }
+_AFXWIN_INLINE DWORD CEdit::GetSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, EM_GETSEL, 0, 0); }
+_AFXWIN_INLINE HLOCAL CEdit::GetHandle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HLOCAL)::SendMessage(m_hWnd, EM_GETHANDLE, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetHandle(HLOCAL hBuffer)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETHANDLE, (WPARAM)hBuffer, 0); }
+_AFXWIN_INLINE int CEdit::GetLine(int nIndex, LPTSTR lpszBuffer) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer); }
+_AFXWIN_INLINE int CEdit::GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const
+ {
+ ASSERT(::IsWindow(m_hWnd));
+ *(LPWORD)lpszBuffer = (WORD)nMaxLength;
+ return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
+ }
+_AFXWIN_INLINE void CEdit::EmptyUndoBuffer()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::FmtLines(BOOL bAddEOL)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_FMTLINES, bAddEOL, 0); }
+_AFXWIN_INLINE void CEdit::LimitText(int nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_LIMITTEXT, nChars, 0); }
+_AFXWIN_INLINE int CEdit::LineFromChar(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINEFROMCHAR, nIndex, 0); }
+_AFXWIN_INLINE int CEdit::LineIndex(int nLine) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINEINDEX, nLine, 0); }
+_AFXWIN_INLINE int CEdit::LineLength(int nLine) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINELENGTH, nLine, 0); }
+_AFXWIN_INLINE void CEdit::LineScroll(int nLines, int nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_LINESCROLL, nChars, nLines); }
+_AFXWIN_INLINE void CEdit::ReplaceSel(LPCTSTR lpszNewText)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_REPLACESEL, 0, (LPARAM)lpszNewText); }
+_AFXWIN_INLINE void CEdit::SetPasswordChar(TCHAR ch)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETPASSWORDCHAR, ch, 0); }
+_AFXWIN_INLINE void CEdit::SetRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::SetRectNP(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECTNP, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::SetSel(DWORD dwSelection, BOOL bNoScroll)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETSEL,
+ LOWORD(dwSelection), HIWORD(dwSelection));
+ if (!bNoScroll)
+ ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetSel(int nStartChar, int nEndChar, BOOL bNoScroll)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETSEL, nStartChar, nEndChar);
+ if (!bNoScroll)
+ ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CEdit::SetTabStops(int nTabStops, LPINT rgTabStops)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, nTabStops,
+ (LPARAM)rgTabStops); }
+_AFXWIN_INLINE void CEdit::SetTabStops()
+ { ASSERT(::IsWindow(m_hWnd)); VERIFY(::SendMessage(m_hWnd, EM_SETTABSTOPS, 0, 0)); }
+_AFXWIN_INLINE BOOL CEdit::SetTabStops(const int& cxEachStop)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS,
+ 1, (LPARAM)(LPINT)&cxEachStop); }
+#endif
+_AFXWIN_INLINE BOOL CEdit::Undo()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0); }
+_AFXWIN_INLINE void CEdit::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXWIN_INLINE void CEdit::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXWIN_INLINE void CEdit::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXWIN_INLINE void CEdit::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::SetReadOnly(BOOL bReadOnly )
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L); }
+_AFXWIN_INLINE int CEdit::GetFirstVisibleLine() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L); }
+_AFXWIN_INLINE TCHAR CEdit::GetPasswordChar() const
+ { ASSERT(::IsWindow(m_hWnd)); return (TCHAR)::SendMessage(m_hWnd, EM_GETPASSWORDCHAR, 0, 0L); }
+
+_AFXWIN_INLINE CScrollBar::CScrollBar()
+ { }
+_AFXWIN_INLINE int CScrollBar::GetScrollPos() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetScrollPos(m_hWnd, SB_CTL); }
+_AFXWIN_INLINE int CScrollBar::SetScrollPos(int nPos, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetScrollPos(m_hWnd, SB_CTL, nPos, bRedraw); }
+_AFXWIN_INLINE void CScrollBar::GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetScrollRange(m_hWnd, SB_CTL, lpMinPos, lpMaxPos); }
+_AFXWIN_INLINE void CScrollBar::SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetScrollRange(m_hWnd, SB_CTL, nMinPos, nMaxPos, bRedraw); }
+_AFXWIN_INLINE void CScrollBar::ShowScrollBar(BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowScrollBar(m_hWnd, SB_CTL, bShow); }
+_AFXWIN_INLINE BOOL CScrollBar::EnableScrollBar(UINT nArrowFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::EnableScrollBar(m_hWnd, SB_CTL, nArrowFlags); }
+
+// MDI functions
+#ifndef _AFXCTL
+_AFXWIN_INLINE void CMDIFrameWnd::MDIActivate(CWnd* pWndActivate)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIACTIVATE,
+ (WPARAM)pWndActivate->m_hWnd, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIIconArrange()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIICONARRANGE, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIMaximize(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIMAXIMIZE, (WPARAM)pWnd->m_hWnd, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDINext()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDINEXT, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIRestore(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIRESTORE, (WPARAM)pWnd->m_hWnd, 0); }
+_AFXWIN_INLINE CMenu* CMDIFrameWnd::MDISetMenu(CMenu* pFrameMenu, CMenu* pWindowMenu)
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle((HMENU)::SendMessage(
+ m_hWndMDIClient, WM_MDISETMENU, (WPARAM)pFrameMenu->GetSafeHmenu(),
+ (LPARAM)pWindowMenu->GetSafeHmenu())); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDITile()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDITILE, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDICascade()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDICASCADE, 0, 0); }
+
+_AFXWIN_INLINE void CMDIFrameWnd::MDICascade(int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDICASCADE, nType, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDITile(int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDITILE, nType, 0); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIDestroy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIDESTROY, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIActivate()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIACTIVATE, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIMaximize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIMAXIMIZE, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIRestore()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIRESTORE, (WPARAM)m_hWnd, 0L); }
+#endif //!_AFXCTL
+
+// CView
+_AFXWIN_INLINE CDocument* CView::GetDocument() const
+ { ASSERT(this != NULL); return m_pDocument; }
+_AFXWIN_INLINE CSize CScrollView::GetTotalSize() const
+ { ASSERT(this != NULL); return m_totalLog; }
+
+// CDocument
+_AFXWIN_INLINE const CString& CDocument::GetTitle() const
+ { ASSERT(this != NULL); return m_strTitle; }
+_AFXWIN_INLINE const CString& CDocument::GetPathName() const
+ { ASSERT(this != NULL); return m_strPathName; }
+_AFXWIN_INLINE CDocTemplate* CDocument::GetDocTemplate() const
+ { ASSERT(this != NULL); return m_pDocTemplate; }
+_AFXWIN_INLINE BOOL CDocument::IsModified()
+ { ASSERT(this != NULL); return m_bModified; }
+_AFXWIN_INLINE void CDocument::SetModifiedFlag(BOOL bModified)
+ { ASSERT(this != NULL); m_bModified = bModified; }
+
+// CWinThread
+_AFXWIN_INLINE BOOL CWinThread::SetThreadPriority(int nPriority)
+ { ASSERT(m_hThread != NULL); return ::SetThreadPriority(m_hThread, nPriority); }
+_AFXWIN_INLINE int CWinThread::GetThreadPriority()
+ { ASSERT(m_hThread != NULL); return ::GetThreadPriority(m_hThread); }
+_AFXWIN_INLINE DWORD CWinThread::ResumeThread()
+ { ASSERT(m_hThread != NULL); return ::ResumeThread(m_hThread); }
+_AFXWIN_INLINE DWORD CWinThread::SuspendThread()
+ { ASSERT(m_hThread != NULL); return ::SuspendThread(m_hThread); }
+
+// CWinApp
+#ifdef _MAC
+_AFXWIN_INLINE BOOL CWinApp::Enable3dControls()
+ { return FALSE; }
+#endif
+_AFXWIN_INLINE HCURSOR CWinApp::LoadCursor(LPCTSTR lpszResourceName) const
+ { return ::LoadCursor(AfxFindResourceHandle(lpszResourceName,
+ RT_GROUP_CURSOR), lpszResourceName); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadCursor(UINT nIDResource) const
+ { return ::LoadCursor(AfxFindResourceHandle(MAKEINTRESOURCE(nIDResource),
+ RT_GROUP_CURSOR), MAKEINTRESOURCE(nIDResource)); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadStandardCursor(LPCTSTR lpszCursorName) const
+ { return ::LoadCursor(NULL, lpszCursorName); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadOEMCursor(UINT nIDCursor) const
+ { return ::LoadCursor(NULL, MAKEINTRESOURCE(nIDCursor)); }
+_AFXWIN_INLINE HICON CWinApp::LoadIcon(LPCTSTR lpszResourceName) const
+ { return ::LoadIcon(AfxFindResourceHandle(lpszResourceName,
+ RT_GROUP_ICON), lpszResourceName); }
+_AFXWIN_INLINE HICON CWinApp::LoadIcon(UINT nIDResource) const
+ { return ::LoadIcon(AfxFindResourceHandle(MAKEINTRESOURCE(nIDResource),
+ RT_GROUP_ICON), MAKEINTRESOURCE(nIDResource)); }
+_AFXWIN_INLINE HICON CWinApp::LoadStandardIcon(LPCTSTR lpszIconName) const
+ { return ::LoadIcon(NULL, lpszIconName); }
+_AFXWIN_INLINE HICON CWinApp::LoadOEMIcon(UINT nIDIcon) const
+ { return ::LoadIcon(NULL, MAKEINTRESOURCE(nIDIcon)); }
+#ifdef _MAC
+_AFXWIN_INLINE void CWinApp::EnableShellOpen()
+ { }
+_AFXWIN_INLINE void CWinApp::RegisterShellFileTypes()
+ { }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Obsolete and non-portable
+
+#ifndef _MAC
+_AFXWIN_INLINE void CWnd::CloseWindow()
+ { ASSERT(::IsWindow(m_hWnd)); ::CloseWindow(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::OpenIcon()
+ { ASSERT(::IsWindow(m_hWnd)); return ::OpenIcon(m_hWnd); }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXWIN_INLINE
diff --git a/public/sdk/inc/mfc30/commctrl.h b/public/sdk/inc/mfc30/commctrl.h
new file mode 100644
index 000000000..e1149ebba
--- /dev/null
+++ b/public/sdk/inc/mfc30/commctrl.h
@@ -0,0 +1,2634 @@
+/*****************************************************************************\
+* *
+* commctrl.h - - Interface for the Windows Common Controls *
+* *
+* Version 1.0 *
+* *
+* Copyright (c) 1991-1994, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+#ifndef _INC_COMMCTRL
+#define _INC_COMMCTRL
+
+#ifndef NOUSER
+
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+#ifndef WINCOMMCTRLAPI
+#if !defined(_COMCTL32_) && defined(_WIN32)
+#define WINCOMMCTRLAPI DECLSPEC_IMPORT
+#else
+#define WINCOMMCTRLAPI
+#endif
+#endif // WINCOMMCTRLAPI
+
+//
+// For compilers that don't support nameless unions
+//
+#ifndef DUMMYUNIONNAME
+#ifdef NONAMELESSUNION
+#define DUMMYUNIONNAME u
+#define DUMMYUNIONNAME2 u2
+#define DUMMYUNIONNAME3 u3
+#else
+#define DUMMYUNIONNAME
+#define DUMMYUNIONNAME2
+#define DUMMYUNIONNAME3
+#endif
+#endif // DUMMYUNIONNAME
+
+#ifdef _WIN32
+#include <pshpack1.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (WINVER >= 0x0400)
+
+//
+// Users of this header may define any number of these constants to avoid
+// the definitions of each functional group.
+//
+// NOTOOLBAR Customizable bitmap-button toolbar control.
+// NOUPDOWN Up and Down arrow increment/decrement control.
+// NOSTATUSBAR Status bar control.
+// NOMENUHELP APIs to help manage menus, especially with a status bar.
+// NOTRACKBAR Customizable column-width tracking control.
+// NODRAGLIST APIs to make a listbox source and sink drag&drop actions.
+// NOPROGRESS Progress gas gauge.
+// NOHOTKEY HotKey control
+// NOHEADER Header bar control.
+// NOIMAGEAPIS ImageList apis.
+// NOLISTVIEW ListView control.
+// NOTREEVIEW TreeView control.
+// NOTABCONTROL Tab control.
+// NOANIMATE Animate control.
+//
+//=============================================================================
+
+#include <prsht.h>
+
+
+WINCOMMCTRLAPI void WINAPI InitCommonControls();
+
+#define ODT_HEADER 100
+#define ODT_TAB 101
+#define ODT_LISTVIEW 102
+
+
+//====== Ranges for control message IDs =======================================
+
+#define LVM_FIRST 0x1000 // ListView messages
+#define TV_FIRST 0x1100 // TreeView messages
+#define HDM_FIRST 0x1200 // Header messages
+
+//====== WM_NOTIFY Macros =====================================================
+
+#define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
+ (fn)((hwnd), (int)(wParam), (NMHDR FAR*)(lParam))
+#define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \
+ (void)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(id), (LPARAM)(NMHDR FAR*)(pnmhdr))
+
+
+//====== Generic WM_NOTIFY notification codes =================================
+
+#define NM_OUTOFMEMORY (NM_FIRST-1)
+#define NM_CLICK (NM_FIRST-2)
+#define NM_DBLCLK (NM_FIRST-3)
+#define NM_RETURN (NM_FIRST-4)
+#define NM_RCLICK (NM_FIRST-5)
+#define NM_RDBLCLK (NM_FIRST-6)
+#define NM_SETFOCUS (NM_FIRST-7)
+#define NM_KILLFOCUS (NM_FIRST-8)
+#define NM_STARTWAIT (NM_FIRST-9)
+#define NM_ENDWAIT (NM_FIRST-10)
+#define NM_BTNCLK (NM_FIRST-10)
+
+
+//====== WM_NOTIFY codes (NMHDR.code values) ==================================
+
+#define NM_FIRST (0U- 0U) // generic to all controls
+#define NM_LAST (0U- 99U)
+
+#define LVN_FIRST (0U-100U) // listview
+#define LVN_LAST (0U-199U)
+
+#define HDN_FIRST (0U-300U) // header
+#define HDN_LAST (0U-399U)
+
+#define TVN_FIRST (0U-400U) // treeview
+#define TVN_LAST (0U-499U)
+
+#define TTN_FIRST (0U-520U) // tooltips
+#define TTN_LAST (0U-549U)
+
+#define TCN_FIRST (0U-550U) // tab control
+#define TCN_LAST (0U-580U)
+
+// Shell reserved (0U-580U) - (0U-589U)
+
+#define CDN_FIRST (0U-601U) // common dialog (new)
+#define CDN_LAST (0U-699U)
+
+#define TBN_FIRST (0U-700U) // toolbar
+#define TBN_LAST (0U-720U)
+
+#define UDN_FIRST (0U-721) // updown
+#define UDN_LAST (0U-740)
+
+#define MSGF_COMMCTRL_BEGINDRAG 0x4200
+#define MSGF_COMMCTRL_SIZEHEADER 0x4201
+#define MSGF_COMMCTRL_DRAGSELECT 0x4202
+#define MSGF_COMMCTRL_TOOLBARCUST 0x4203
+
+
+//====== IMAGE APIS ===========================================================
+
+#ifndef NOIMAGEAPIS
+
+#define CLR_NONE 0xFFFFFFFFL
+#define CLR_DEFAULT 0xFF000000L
+
+struct _IMAGELIST;
+typedef struct _IMAGELIST NEAR* HIMAGELIST;
+
+#define ILC_MASK 0x0001
+#define ILC_COLOR 0x00FE
+#define ILC_COLORDDB 0x00FE
+#define ILC_COLOR4 0x0004
+#define ILC_COLOR8 0x0008
+#define ILC_COLOR16 0x0010
+#define ILC_COLOR24 0x0018
+#define ILC_COLOR32 0x0020
+#define ILC_PALETTE 0x0800
+
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Create(int cx, int cy, UINT flags, int cInitial, int cGrow);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Destroy(HIMAGELIST himl);
+WINCOMMCTRLAPI int WINAPI ImageList_GetImageCount(HIMAGELIST himl);
+WINCOMMCTRLAPI int WINAPI ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask);
+WINCOMMCTRLAPI int WINAPI ImageList_ReplaceIcon(HIMAGELIST himl, int i, HICON hicon);
+WINCOMMCTRLAPI COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk);
+WINCOMMCTRLAPI COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST himl);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST himl, int iImage, int iOverlay);
+
+#define ImageList_AddIcon(himl, hicon) ImageList_ReplaceIcon(himl, -1, hicon)
+
+#define ILD_NORMAL 0x0000
+#define ILD_TRANSPARENT 0x0001
+#define ILD_MASK 0x0010
+#define ILD_IMAGE 0x0020
+#define ILD_BLEND 0x000E
+#define ILD_BLEND25 0x0002
+#define ILD_BLEND50 0x0004
+#define ILD_OVERLAYMASK 0x0F00
+#define INDEXTOOVERLAYMASK(i) ((i) << 8)
+
+#define ILD_SELECTED ILD_BLEND50
+#define ILD_FOCUS ILD_BLEND25
+#define CLR_HILIGHT CLR_DEFAULT
+
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Draw(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, UINT fStyle);
+
+
+#ifdef _WIN32
+
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Replace(HIMAGELIST himl, int i, HBITMAP hbmImage, HBITMAP hbmMask);
+WINCOMMCTRLAPI int WINAPI ImageList_AddMasked(HIMAGELIST himl, HBITMAP hbmImage, COLORREF crMask);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DrawEx(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Remove(HIMAGELIST himl, int i);
+WINCOMMCTRLAPI HICON WINAPI ImageList_GetIcon(HIMAGELIST himl, int i, UINT flags);
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_LoadImage(HINSTANCE hi, LPCTSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags);
+
+WINCOMMCTRLAPI BOOL WINAPI ImageList_BeginDrag(HIMAGELIST himlTrack, int iTrack, int dxHotspot, int dyHotspot);
+WINCOMMCTRLAPI void WINAPI ImageList_EndDrag();
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DragEnter(HWND hwndLock, int x, int y);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DragLeave(HWND hwndLock);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DragMove(int x, int y);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST himlDrag, int iDrag, int dxHotspot, int dyHotspot);
+
+WINCOMMCTRLAPI BOOL WINAPI ImageList_DragShowNolock(BOOL fShow);
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_GetDragImage(POINT FAR* ppt,POINT FAR* pptHotspot);
+
+#define ImageList_RemoveAll(himl) ImageList_Remove(himl, -1)
+#define ImageList_ExtractIcon(hi, himl, i) ImageList_GetIcon(himl, i, 0)
+#define ImageList_LoadBitmap(hi, lpbmp, cx, cGrow, crMask) ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0)
+
+#ifdef _OBJBASE_H_
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Read(LPSTREAM pstm);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_Write(HIMAGELIST himl, LPSTREAM pstm);
+#endif
+
+typedef struct _IMAGEINFO
+{
+ HBITMAP hbmImage;
+ HBITMAP hbmMask;
+ int Unused1;
+ int Unused2;
+ RECT rcImage;
+} IMAGEINFO;
+
+WINCOMMCTRLAPI BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, int FAR *cx, int FAR *cy);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_SetIconSize(HIMAGELIST himl, int cx, int cy);
+WINCOMMCTRLAPI BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST himl, int i, IMAGEINFO FAR* pImageInfo);
+WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST himl1, int i1, HIMAGELIST himl2, int i2, int dx, int dy);
+
+#endif
+
+#endif
+
+
+//====== HEADER CONTROL =======================================================
+
+#ifndef NOHEADER
+
+#ifdef _WIN32
+#define WC_HEADERA "SysHeader32"
+#define WC_HEADERW L"SysHeader32"
+
+#ifdef UNICODE
+#define WC_HEADER WC_HEADERW
+#else
+#define WC_HEADER WC_HEADERA
+#endif
+
+#else
+#define WC_HEADER "SysHeader"
+#endif
+
+#define HDS_HORZ 0x00000000
+#define HDS_BUTTONS 0x00000002
+#define HDS_HIDDEN 0x00000008
+
+typedef struct _HD_ITEMA
+{
+ UINT mask;
+ int cxy;
+ LPSTR pszText;
+ HBITMAP hbm;
+ int cchTextMax;
+ int fmt;
+ LPARAM lParam;
+} HD_ITEMA;
+
+typedef struct _HD_ITEMW
+{
+ UINT mask;
+ int cxy;
+ LPWSTR pszText;
+ HBITMAP hbm;
+ int cchTextMax;
+ int fmt;
+ LPARAM lParam;
+} HD_ITEMW;
+
+#ifdef UNICODE
+#define HD_ITEM HD_ITEMW
+#else
+#define HD_ITEM HD_ITEMA
+#endif
+
+
+#define HDI_WIDTH 0x0001
+#define HDI_HEIGHT HDI_WIDTH
+#define HDI_TEXT 0x0002
+#define HDI_FORMAT 0x0004
+#define HDI_LPARAM 0x0008
+#define HDI_BITMAP 0x0010
+
+#define HDF_LEFT 0
+#define HDF_RIGHT 1
+#define HDF_CENTER 2
+#define HDF_JUSTIFYMASK 0x0003
+
+#define HDF_OWNERDRAW 0x8000
+#define HDF_STRING 0x4000
+#define HDF_BITMAP 0x2000
+
+
+#define HDM_GETITEMCOUNT (HDM_FIRST + 0)
+#define Header_GetItemCount(hwndHD) \
+ (int)SendMessage((hwndHD), HDM_GETITEMCOUNT, 0, 0L)
+
+
+#define HDM_INSERTITEMA (HDM_FIRST + 1)
+#define HDM_INSERTITEMW (HDM_FIRST + 10)
+
+#ifdef UNICODE
+#define HDM_INSERTITEM HDM_INSERTITEMW
+#else
+#define HDM_INSERTITEM HDM_INSERTITEMA
+#endif
+
+#define Header_InsertItem(hwndHD, i, phdi) \
+ (int)SendMessage((hwndHD), HDM_INSERTITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM FAR*)(phdi))
+
+
+#define HDM_DELETEITEM (HDM_FIRST + 2)
+#define Header_DeleteItem(hwndHD, i) \
+ (BOOL)SendMessage((hwndHD), HDM_DELETEITEM, (WPARAM)(int)(i), 0L)
+
+
+#define HDM_GETITEMA (HDM_FIRST + 3)
+#define HDM_GETITEMW (HDM_FIRST + 11)
+
+#ifdef UNICODE
+#define HDM_GETITEM HDM_GETITEMW
+#else
+#define HDM_GETITEM HDM_GETITEMA
+#endif
+
+#define Header_GetItem(hwndHD, i, phdi) \
+ (BOOL)SendMessage((hwndHD), HDM_GETITEM, (WPARAM)(int)(i), (LPARAM)(HD_ITEM FAR*)(phdi))
+
+
+#define HDM_SETITEMA (HDM_FIRST + 4)
+#define HDM_SETITEMW (HDM_FIRST + 12)
+
+#ifdef UNICODE
+#define HDM_SETITEM HDM_SETITEMW
+#else
+#define HDM_SETITEM HDM_SETITEMA
+#endif
+
+#define Header_SetItem(hwndHD, i, phdi) \
+ (BOOL)SendMessage((hwndHD), HDM_SETITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM FAR*)(phdi))
+
+
+typedef struct _HD_LAYOUT
+{
+ RECT FAR* prc;
+ WINDOWPOS FAR* pwpos;
+} HD_LAYOUT;
+
+
+#define HDM_LAYOUT (HDM_FIRST + 5)
+#define Header_Layout(hwndHD, playout) \
+ (BOOL)SendMessage((hwndHD), HDM_LAYOUT, 0, (LPARAM)(HD_LAYOUT FAR*)(playout))
+
+
+#define HHT_NOWHERE 0x0001
+#define HHT_ONHEADER 0x0002
+#define HHT_ONDIVIDER 0x0004
+#define HHT_ONDIVOPEN 0x0008
+#define HHT_ABOVE 0x0100
+#define HHT_BELOW 0x0200
+#define HHT_TORIGHT 0x0400
+#define HHT_TOLEFT 0x0800
+
+typedef struct _HD_HITTESTINFO
+{
+ POINT pt;
+ UINT flags;
+ int iItem;
+} HD_HITTESTINFO;
+#define HDM_HITTEST (HDM_FIRST + 6)
+
+
+#define HDN_ITEMCHANGINGA (HDN_FIRST-0)
+#define HDN_ITEMCHANGINGW (HDN_FIRST-20)
+#define HDN_ITEMCHANGEDA (HDN_FIRST-1)
+#define HDN_ITEMCHANGEDW (HDN_FIRST-21)
+#define HDN_ITEMCLICKA (HDN_FIRST-2)
+#define HDN_ITEMCLICKW (HDN_FIRST-22)
+#define HDN_ITEMDBLCLICKA (HDN_FIRST-3)
+#define HDN_ITEMDBLCLICKW (HDN_FIRST-23)
+#define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5)
+#define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25)
+#define HDN_BEGINTRACKA (HDN_FIRST-6)
+#define HDN_BEGINTRACKW (HDN_FIRST-26)
+#define HDN_ENDTRACKA (HDN_FIRST-7)
+#define HDN_ENDTRACKW (HDN_FIRST-27)
+#define HDN_TRACKA (HDN_FIRST-8)
+#define HDN_TRACKW (HDN_FIRST-28)
+
+#ifdef UNICODE
+#define HDN_ITEMCHANGING HDN_ITEMCHANGINGW
+#define HDN_ITEMCHANGED HDN_ITEMCHANGEDW
+#define HDN_ITEMCLICK HDN_ITEMCLICKW
+#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKW
+#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKW
+#define HDN_BEGINTRACK HDN_BEGINTRACKW
+#define HDN_ENDTRACK HDN_ENDTRACKW
+#define HDN_TRACK HDN_TRACKW
+#else
+#define HDN_ITEMCHANGING HDN_ITEMCHANGINGA
+#define HDN_ITEMCHANGED HDN_ITEMCHANGEDA
+#define HDN_ITEMCLICK HDN_ITEMCLICKA
+#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKA
+#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKA
+#define HDN_BEGINTRACK HDN_BEGINTRACKA
+#define HDN_ENDTRACK HDN_ENDTRACKA
+#define HDN_TRACK HDN_TRACKA
+#endif
+
+
+typedef struct _HD_NOTIFY
+{
+ NMHDR hdr;
+ int iItem;
+ int iButton;
+ HD_ITEMA FAR* pitem;
+} HD_NOTIFYA;
+
+typedef struct _HD_NOTIFYW
+{
+ NMHDR hdr;
+ int iItem;
+ int iButton;
+ HD_ITEMW FAR* pitem;
+} HD_NOTIFYW;
+
+#ifdef UNICODE
+#define HD_NOTIFY HD_NOTIFYW
+#else
+#define HD_NOTIFY HD_NOTIFYA
+#endif
+
+#endif
+
+
+//====== TOOLBAR CONTROL ======================================================
+
+#ifndef NOTOOLBAR
+
+#ifdef _WIN32
+#define TOOLBARCLASSNAMEW L"ToolbarWindow32"
+#define TOOLBARCLASSNAMEA "ToolbarWindow32"
+
+#ifdef UNICODE
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEW
+#else
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEA
+#endif
+
+#else
+#define TOOLBARCLASSNAME "ToolbarWindow"
+#endif
+
+typedef struct _TBBUTTON {
+ int iBitmap;
+ int idCommand;
+ BYTE fsState;
+ BYTE fsStyle;
+#ifdef _WIN32
+ BYTE bReserved[2];
+#endif
+ DWORD dwData;
+ int iString;
+} TBBUTTON, NEAR* PTBBUTTON, FAR* LPTBBUTTON;
+typedef const TBBUTTON FAR* LPCTBBUTTON;
+
+typedef struct _COLORMAP {
+ COLORREF from;
+ COLORREF to;
+} COLORMAP, FAR* LPCOLORMAP;
+
+WINCOMMCTRLAPI HWND WINAPI CreateToolbarEx(HWND hwnd, DWORD ws, UINT wID, int nBitmaps,
+ HINSTANCE hBMInst, UINT wBMID, LPCTBBUTTON lpButtons,
+ int iNumButtons, int dxButton, int dyButton,
+ int dxBitmap, int dyBitmap, UINT uStructSize);
+
+WINCOMMCTRLAPI HBITMAP WINAPI CreateMappedBitmap(HINSTANCE hInstance, int idBitmap,
+ UINT wFlags, LPCOLORMAP lpColorMap,
+ int iNumMaps);
+
+#define CMB_MASKED 0x02
+
+#define TBSTATE_CHECKED 0x01
+#define TBSTATE_PRESSED 0x02
+#define TBSTATE_ENABLED 0x04
+#define TBSTATE_HIDDEN 0x08
+#define TBSTATE_INDETERMINATE 0x10
+#define TBSTATE_WRAP 0x20
+
+#define TBSTYLE_BUTTON 0x00
+#define TBSTYLE_SEP 0x01
+#define TBSTYLE_CHECK 0x02
+#define TBSTYLE_GROUP 0x04
+#define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP | TBSTYLE_CHECK)
+
+#define TBSTYLE_TOOLTIPS 0x0100
+#define TBSTYLE_WRAPABLE 0x0200
+#define TBSTYLE_ALTDRAG 0x0400
+
+#define TB_ENABLEBUTTON (WM_USER + 1)
+#define TB_CHECKBUTTON (WM_USER + 2)
+#define TB_PRESSBUTTON (WM_USER + 3)
+#define TB_HIDEBUTTON (WM_USER + 4)
+#define TB_INDETERMINATE (WM_USER + 5)
+#define TB_ISBUTTONENABLED (WM_USER + 9)
+#define TB_ISBUTTONCHECKED (WM_USER + 10)
+#define TB_ISBUTTONPRESSED (WM_USER + 11)
+#define TB_ISBUTTONHIDDEN (WM_USER + 12)
+#define TB_ISBUTTONINDETERMINATE (WM_USER + 13)
+#define TB_SETSTATE (WM_USER + 17)
+#define TB_GETSTATE (WM_USER + 18)
+#define TB_ADDBITMAP (WM_USER + 19)
+
+#ifdef _WIN32
+typedef struct tagTBADDBITMAP {
+ HINSTANCE hInst;
+ UINT nID;
+} TBADDBITMAP, *LPTBADDBITMAP;
+
+#define HINST_COMMCTRL ((HINSTANCE)-1)
+#define IDB_STD_SMALL_COLOR 0
+#define IDB_STD_LARGE_COLOR 1
+#define IDB_VIEW_SMALL_COLOR 4
+#define IDB_VIEW_LARGE_COLOR 5
+
+// icon indexes for standard bitmap
+
+#define STD_CUT 0
+#define STD_COPY 1
+#define STD_PASTE 2
+#define STD_UNDO 3
+#define STD_REDOW 4
+#define STD_DELETE 5
+#define STD_FILENEW 6
+#define STD_FILEOPEN 7
+#define STD_FILESAVE 8
+#define STD_PRINTPRE 9
+#define STD_PROPERTIES 10
+#define STD_HELP 11
+#define STD_FIND 12
+#define STD_REPLACE 13
+#define STD_PRINT 14
+
+// icon indexes for standard view bitmap
+
+#define VIEW_LARGEICONS 0
+#define VIEW_SMALLICONS 1
+#define VIEW_LIST 2
+#define VIEW_DETAILS 3
+#define VIEW_SORTNAME 4
+#define VIEW_SORTSIZE 5
+#define VIEW_SORTDATE 6
+#define VIEW_SORTTYPE 7
+#define VIEW_PARENTFOLDER 8
+#define VIEW_NETCONNECT 9
+#define VIEW_NETDISCONNECT 10
+#define VIEW_NEWFOLDER 11
+
+
+#endif
+
+#define TB_ADDBUTTONS (WM_USER + 20)
+#define TB_INSERTBUTTON (WM_USER + 21)
+#define TB_DELETEBUTTON (WM_USER + 22)
+#define TB_GETBUTTON (WM_USER + 23)
+#define TB_BUTTONCOUNT (WM_USER + 24)
+#define TB_COMMANDTOINDEX (WM_USER + 25)
+
+#ifdef _WIN32
+
+typedef struct tagTBSAVEPARAMSA {
+ HKEY hkr;
+ LPCSTR pszSubKey;
+ LPCSTR pszValueName;
+} TBSAVEPARAMSA;
+
+typedef struct tagTBSAVEPARAMSW {
+ HKEY hkr;
+ LPCWSTR pszSubKey;
+ LPCWSTR pszValueName;
+} TBSAVEPARAMSW;
+
+#ifdef UNICODE
+#define TBSAVEPARAMS TBSAVEPARAMSW
+#else
+#define TBSAVEPARAMS TBSAVEPARAMSA
+#endif
+
+#endif
+
+#define TB_SAVERESTOREA (WM_USER + 26)
+#define TB_SAVERESTOREW (WM_USER + 47)
+#define TB_CUSTOMIZE (WM_USER + 27)
+#define TB_ADDSTRINGA (WM_USER + 28)
+#define TB_ADDSTRINGW (WM_USER + 48)
+#define TB_GETITEMRECT (WM_USER + 29)
+#define TB_BUTTONSTRUCTSIZE (WM_USER + 30)
+#define TB_SETBUTTONSIZE (WM_USER + 31)
+#define TB_SETBITMAPSIZE (WM_USER + 32)
+#define TB_AUTOSIZE (WM_USER + 33)
+#define TB_SETBUTTONTYPE (WM_USER + 34)
+#define TB_GETTOOLTIPS (WM_USER + 35)
+#define TB_SETTOOLTIPS (WM_USER + 36)
+#define TB_SETPARENT (WM_USER + 37)
+#define TB_SETROWS (WM_USER + 39)
+#define TB_GETROWS (WM_USER + 40)
+#define TB_SETCMDID (WM_USER + 42)
+#define TB_CHANGEBITMAP (WM_USER + 43)
+#define TB_GETBITMAP (WM_USER + 44)
+#define TB_GETBUTTONTEXTA (WM_USER + 45)
+#define TB_GETBUTTONTEXTW (WM_USER + 46)
+
+#ifdef UNICODE
+#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTW
+#define TB_SAVERESTORE TB_SAVERESTOREW
+#define TB_ADDSTRING TB_ADDSTRINGW
+#else
+#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTA
+#define TB_SAVERESTORE TB_SAVERESTOREA
+#define TB_ADDSTRING TB_ADDSTRINGA
+#endif
+
+#ifdef _WIN32
+
+#define TBBF_LARGE 0x0001
+
+#define TB_GETBITMAPFLAGS (WM_USER + 41)
+
+#define TBN_GETBUTTONINFOA (TBN_FIRST-0)
+#define TBN_GETBUTTONINFOW (TBN_FIRST-20)
+#define TBN_BEGINDRAG (TBN_FIRST-1)
+#define TBN_ENDDRAG (TBN_FIRST-2)
+#define TBN_BEGINADJUST (TBN_FIRST-3)
+#define TBN_ENDADJUST (TBN_FIRST-4)
+#define TBN_RESET (TBN_FIRST-5)
+#define TBN_QUERYINSERT (TBN_FIRST-6)
+#define TBN_QUERYDELETE (TBN_FIRST-7)
+#define TBN_TOOLBARCHANGE (TBN_FIRST-8)
+#define TBN_CUSTHELP (TBN_FIRST-9)
+
+#ifdef UNICODE
+#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOW
+#else
+#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOA
+#endif
+
+typedef struct tagTBNOTIFYA {
+ NMHDR hdr;
+ int iItem;
+ TBBUTTON tbButton;
+ int cchText;
+ LPSTR pszText;
+} TBNOTIFYA, FAR *LPTBNOTIFYA;
+
+typedef struct tagTBNOTIFYW {
+ NMHDR hdr;
+ int iItem;
+ TBBUTTON tbButton;
+ int cchText;
+ LPWSTR pszText;
+} TBNOTIFYW, FAR *LPTBNOTIFYW;
+
+#ifdef UNICODE
+#define TBNOTIFY TBNOTIFYW
+#define LPTBNOTIFY LPTBNOTIFYW
+#else
+#define TBNOTIFY TBNOTIFYA
+#define LPTBNOTIFY LPTBNOTIFYA
+#endif
+
+#endif
+
+#endif
+
+
+//====== TOOLTIPS CONTROL =====================================================
+
+#ifndef NOTOOLTIPS
+
+#ifdef _WIN32
+
+#define TOOLTIPS_CLASSW L"tooltips_class32"
+#define TOOLTIPS_CLASSA "tooltips_class32"
+
+#ifdef UNICODE
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSW
+#else
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSA
+#endif
+
+#else
+#define TOOLTIPS_CLASS "tooltips_class"
+#endif
+
+typedef struct tagTOOLINFOA {
+ UINT cbSize;
+ UINT uFlags;
+ HWND hwnd;
+ UINT uId;
+ RECT rect;
+ HINSTANCE hinst;
+ LPSTR lpszText;
+} TOOLINFOA, NEAR *PTOOLINFOA, FAR *LPTOOLINFOA;
+
+typedef struct tagTOOLINFOW {
+ UINT cbSize;
+ UINT uFlags;
+ HWND hwnd;
+ UINT uId;
+ RECT rect;
+ HINSTANCE hinst;
+ LPWSTR lpszText;
+} TOOLINFOW, NEAR *PTOOLINFOW, FAR *LPTOOLINFOW;
+
+#ifdef UNICODE
+#define TOOLINFO TOOLINFOW
+#define PTOOLINFO PTOOLINFOW
+#define LPTOOLINFO LPTOOLINFOW
+#else
+#define TOOLINFO TOOLINFOA
+#define PTOOLINFO PTOOLINFOA
+#define LPTOOLINFO LPTOOLINFOA
+#endif
+
+
+#define TTS_ALWAYSTIP 0x01
+#define TTS_NOPREFIX 0x02
+
+#define TTF_IDISHWND 0x01
+#define TTF_CENTERTIP 0x02
+
+#define TTDT_AUTOMATIC 0
+#define TTDT_RESHOW 1
+#define TTDT_AUTOPOP 2
+#define TTDT_INITIAL 3
+
+#define TTM_ACTIVATE (WM_USER + 1)
+#define TTM_SETDELAYTIME (WM_USER + 3)
+#define TTM_ADDTOOLA (WM_USER + 4)
+#define TTM_ADDTOOLW (WM_USER + 50)
+#define TTM_DELTOOLA (WM_USER + 5)
+#define TTM_DELTOOLW (WM_USER + 51)
+#define TTM_NEWTOOLRECTA (WM_USER + 6)
+#define TTM_NEWTOOLRECTW (WM_USER + 52)
+#define TTM_RELAYEVENT (WM_USER + 7)
+
+#define TTM_GETTOOLINFOA (WM_USER + 8)
+#define TTM_GETTOOLINFOW (WM_USER + 53)
+
+#define TTM_SETTOOLINFOA (WM_USER + 9)
+#define TTM_SETTOOLINFOW (WM_USER + 54)
+
+#define TTM_HITTESTA (WM_USER +10)
+#define TTM_HITTESTW (WM_USER +55)
+#define TTM_GETTEXTA (WM_USER +11)
+#define TTM_GETTEXTW (WM_USER +56)
+#define TTM_UPDATETIPTEXTA (WM_USER +12)
+#define TTM_UPDATETIPTEXTW (WM_USER +57)
+#define TTM_GETTOOLCOUNT (WM_USER +13)
+#define TTM_ENUMTOOLSA (WM_USER +14)
+#define TTM_ENUMTOOLSW (WM_USER +58)
+#define TTM_GETCURRENTTOOLA (WM_USER + 15)
+#define TTM_GETCURRENTTOOLW (WM_USER + 59)
+
+#ifdef UNICODE
+#define TTM_ADDTOOL TTM_ADDTOOLW
+#define TTM_DELTOOL TTM_DELTOOLW
+#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTW
+#define TTM_GETTOOLINFO TTM_GETTOOLINFOW
+#define TTM_SETTOOLINFO TTM_SETTOOLINFOW
+#define TTM_HITTEST TTM_HITTESTW
+#define TTM_GETTEXT TTM_GETTEXTW
+#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTW
+#define TTM_ENUMTOOLS TTM_ENUMTOOLSW
+#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLW
+#else
+#define TTM_ADDTOOL TTM_ADDTOOLA
+#define TTM_DELTOOL TTM_DELTOOLA
+#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTA
+#define TTM_GETTOOLINFO TTM_GETTOOLINFOA
+#define TTM_SETTOOLINFO TTM_SETTOOLINFOA
+#define TTM_HITTEST TTM_HITTESTA
+#define TTM_GETTEXT TTM_GETTEXTA
+#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTA
+#define TTM_ENUMTOOLS TTM_ENUMTOOLSA
+#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLA
+#endif
+
+
+typedef struct _TT_HITTESTINFOA {
+ HWND hwnd;
+ POINT pt;
+ TOOLINFOA ti;
+} TTHITTESTINFOA, FAR * LPHITTESTINFOA;
+
+typedef struct _TT_HITTESTINFOW {
+ HWND hwnd;
+ POINT pt;
+ TOOLINFOW ti;
+} TTHITTESTINFOW, FAR * LPHITTESTINFOW;
+
+
+#ifdef UNICODE
+#define TTHITTESTINFO TTHITTESTINFOW
+#define LPHITTESTINFO LPHITTESTINFOW
+#else
+#define TTHITTESTINFO TTHITTESTINFOA
+#define LPHITTESTINFO LPHITTESTINFOA
+#endif
+
+
+#define TTN_NEEDTEXTA (TTN_FIRST - 0)
+#define TTN_NEEDTEXTW (TTN_FIRST - 10)
+#define TTN_SHOW (TTN_FIRST - 1)
+#define TTN_POP (TTN_FIRST - 2)
+
+
+#ifdef UNICODE
+#define TTN_NEEDTEXT TTN_NEEDTEXTW
+#else
+#define TTN_NEEDTEXT TTN_NEEDTEXTA
+#endif
+
+typedef struct tagTOOLTIPTEXTA {
+ NMHDR hdr;
+ LPSTR lpszText;
+ char szText[80];
+ HINSTANCE hinst;
+ UINT uFlags;
+} TOOLTIPTEXTA, FAR *LPTOOLTIPTEXTA;
+
+typedef struct tagTOOLTIPTEXTW {
+ NMHDR hdr;
+ LPWSTR lpszText;
+ WCHAR szText[80];
+ HINSTANCE hinst;
+ UINT uFlags;
+} TOOLTIPTEXTW, FAR *LPTOOLTIPTEXTW;
+
+
+#ifdef UNICODE
+#define TOOLTIPTEXT TOOLTIPTEXTW
+#define LPTOOLTIPTEXT LPTOOLTIPTEXTW
+#else
+#define TOOLTIPTEXT TOOLTIPTEXTA
+#define LPTOOLTIPTEXT LPTOOLTIPTEXTA
+#endif
+
+#endif
+
+
+//====== STATUS BAR CONTROL ===================================================
+
+#ifndef NOSTATUSBAR
+
+#define SBARS_SIZEGRIP 0x0100
+
+
+WINCOMMCTRLAPI void WINAPI DrawStatusTextA(HDC hDC, LPRECT lprc, LPCSTR szText, UINT uFlags);
+WINCOMMCTRLAPI void WINAPI DrawStatusTextW(HDC hDC, LPRECT lprc, LPCWSTR szText, UINT uFlags);
+
+WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowA(LONG style, LPCSTR lpszText, HWND hwndParent, UINT wID);
+WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowW(LONG style, LPCWSTR lpszText, HWND hwndParent, UINT wID);
+
+#ifdef UNICODE
+#define CreateStatusWindow CreateStatusWindowW
+#define DrawStatusText DrawStatusTextW
+#else
+#define CreateStatusWindow CreateStatusWindowA
+#define DrawStatusText DrawStatusTextA
+#endif
+
+#ifdef _WIN32
+#define STATUSCLASSNAMEW L"msctls_statusbar32"
+#define STATUSCLASSNAMEA "msctls_statusbar32"
+
+#ifdef UNICODE
+#define STATUSCLASSNAME STATUSCLASSNAMEW
+#else
+#define STATUSCLASSNAME STATUSCLASSNAMEA
+#endif
+
+#else
+#define STATUSCLASSNAME "msctls_statusbar"
+#endif
+
+#define SB_SETTEXTA (WM_USER+1)
+#define SB_SETTEXTW (WM_USER+11)
+#define SB_GETTEXTA (WM_USER+2)
+#define SB_GETTEXTW (WM_USER+13)
+#define SB_GETTEXTLENGTHA (WM_USER+3)
+#define SB_GETTEXTLENGTHW (WM_USER+12)
+
+#ifdef UNICODE
+#define SB_GETTEXT SB_GETTEXTW
+#define SB_SETTEXT SB_SETTEXTW
+#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHW
+#else
+#define SB_GETTEXT SB_GETTEXTA
+#define SB_SETTEXT SB_SETTEXTA
+#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHA
+#endif
+
+
+#define SB_SETPARTS (WM_USER+4)
+#define SB_SETBORDERS (WM_USER+5)
+#define SB_GETPARTS (WM_USER+6)
+#define SB_GETBORDERS (WM_USER+7)
+#define SB_SETMINHEIGHT (WM_USER+8)
+#define SB_SIMPLE (WM_USER+9)
+#define SB_GETRECT (WM_USER + 10)
+
+
+#define SBT_OWNERDRAW 0x1000
+#define SBT_NOBORDERS 0x0100
+#define SBT_POPOUT 0x0200
+#define HBT_SPRING 0x0400
+
+#endif
+
+//====== MENU HELP ============================================================
+
+#ifndef NOMENUHELP
+
+WINCOMMCTRLAPI void WINAPI MenuHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, HMENU hMainMenu, HINSTANCE hInst, HWND hwndStatus, UINT FAR *lpwIDs);
+WINCOMMCTRLAPI BOOL WINAPI ShowHideMenuCtl(HWND hWnd, UINT uFlags, LPINT lpInfo);
+WINCOMMCTRLAPI void WINAPI GetEffectiveClientRect(HWND hWnd, LPRECT lprc, LPINT lpInfo);
+
+#define MINSYSCOMMAND SC_SIZE
+
+#endif
+
+
+//====== TRACKBAR CONTROL =====================================================
+
+#ifndef NOTRACKBAR
+
+#ifdef _WIN32
+
+#define TRACKBAR_CLASSA "msctls_trackbar32"
+#define TRACKBAR_CLASSW L"msctls_trackbar32"
+
+#ifdef UNICODE
+#define TRACKBAR_CLASS TRACKBAR_CLASSW
+#else
+#define TRACKBAR_CLASS TRACKBAR_CLASSA
+#endif
+
+#else
+#define TRACKBAR_CLASS "msctls_trackbar"
+#endif
+
+
+#define TBS_AUTOTICKS 0x0001
+#define TBS_VERT 0x0002
+#define TBS_HORZ 0x0000
+#define TBS_TOP 0x0004
+#define TBS_BOTTOM 0x0000
+#define TBS_LEFT 0x0004
+#define TBS_RIGHT 0x0000
+#define TBS_BOTH 0x0008
+#define TBS_NOTICKS 0x0010
+#define TBS_ENABLESELRANGE 0x0020
+#define TBS_FIXEDLENGTH 0x0040
+#define TBS_NOTHUMB 0x0080
+
+
+#define TBM_GETPOS (WM_USER)
+#define TBM_GETRANGEMIN (WM_USER+1)
+#define TBM_GETRANGEMAX (WM_USER+2)
+#define TBM_GETTIC (WM_USER+3)
+#define TBM_SETTIC (WM_USER+4)
+#define TBM_SETPOS (WM_USER+5)
+#define TBM_SETRANGE (WM_USER+6)
+#define TBM_SETRANGEMIN (WM_USER+7)
+#define TBM_SETRANGEMAX (WM_USER+8)
+#define TBM_CLEARTICS (WM_USER+9)
+#define TBM_SETSEL (WM_USER+10)
+#define TBM_SETSELSTART (WM_USER+11)
+#define TBM_SETSELEND (WM_USER+12)
+#define TBM_GETPTICS (WM_USER+14)
+#define TBM_GETTICPOS (WM_USER+15)
+#define TBM_GETNUMTICS (WM_USER+16)
+#define TBM_GETSELSTART (WM_USER+17)
+#define TBM_GETSELEND (WM_USER+18)
+#define TBM_CLEARSEL (WM_USER+19)
+#define TBM_SETTICFREQ (WM_USER+20)
+#define TBM_SETPAGESIZE (WM_USER+21)
+#define TBM_GETPAGESIZE (WM_USER+22)
+#define TBM_SETLINESIZE (WM_USER+23)
+#define TBM_GETLINESIZE (WM_USER+24)
+#define TBM_GETTHUMBRECT (WM_USER+25)
+#define TBM_GETCHANNELRECT (WM_USER+26)
+#define TBM_SETTHUMBLENGTH (WM_USER+27)
+#define TBM_GETTHUMBLENGTH (WM_USER+28)
+
+
+#define TB_LINEUP 0
+#define TB_LINEDOWN 1
+#define TB_PAGEUP 2
+#define TB_PAGEDOWN 3
+#define TB_THUMBPOSITION 4
+#define TB_THUMBTRACK 5
+#define TB_TOP 6
+#define TB_BOTTOM 7
+#define TB_ENDTRACK 8
+
+#endif
+
+//====== DRAG LIST CONTROL ====================================================
+
+#ifndef NODRAGLIST
+
+typedef struct tagDRAGLISTINFO {
+ UINT uNotification;
+ HWND hWnd;
+ POINT ptCursor;
+} DRAGLISTINFO, FAR *LPDRAGLISTINFO;
+
+#define DL_BEGINDRAG (WM_USER+133)
+#define DL_DRAGGING (WM_USER+134)
+#define DL_DROPPED (WM_USER+135)
+#define DL_CANCELDRAG (WM_USER+136)
+
+#define DL_CURSORSET 0
+#define DL_STOPCURSOR 1
+#define DL_COPYCURSOR 2
+#define DL_MOVECURSOR 3
+
+#define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg")
+
+WINCOMMCTRLAPI BOOL WINAPI MakeDragList(HWND hLB);
+WINCOMMCTRLAPI void WINAPI DrawInsert(HWND handParent, HWND hLB, int nItem);
+WINCOMMCTRLAPI int WINAPI LBItemFromPt(HWND hLB, POINT pt, BOOL bAutoScroll);
+
+#endif
+
+
+//====== UPDOWN CONTROL =======================================================
+
+#ifndef NOUPDOWN
+
+#ifdef _WIN32
+
+#define UPDOWN_CLASSA "msctls_updown32"
+#define UPDOWN_CLASSW L"msctls_updown32"
+
+#ifdef UNICODE
+#define UPDOWN_CLASS UPDOWN_CLASSW
+#else
+#define UPDOWN_CLASS UPDOWN_CLASSA
+#endif
+
+#else
+#define UPDOWN_CLASS "msctls_updown"
+#endif
+
+
+typedef struct _UDACCEL {
+ UINT nSec;
+ UINT nInc;
+} UDACCEL, FAR *LPUDACCEL;
+
+#define UD_MAXVAL 0x7fff
+#define UD_MINVAL (-UD_MAXVAL)
+
+
+#define UDS_WRAP 0x0001
+#define UDS_SETBUDDYINT 0x0002
+#define UDS_ALIGNRIGHT 0x0004
+#define UDS_ALIGNLEFT 0x0008
+#define UDS_AUTOBUDDY 0x0010
+#define UDS_ARROWKEYS 0x0020
+#define UDS_HORZ 0x0040
+#define UDS_NOTHOUSANDS 0x0080
+
+
+#define UDM_SETRANGE (WM_USER+101)
+#define UDM_GETRANGE (WM_USER+102)
+#define UDM_SETPOS (WM_USER+103)
+#define UDM_GETPOS (WM_USER+104)
+#define UDM_SETBUDDY (WM_USER+105)
+#define UDM_GETBUDDY (WM_USER+106)
+#define UDM_SETACCEL (WM_USER+107)
+#define UDM_GETACCEL (WM_USER+108)
+#define UDM_SETBASE (WM_USER+109)
+#define UDM_GETBASE (WM_USER+110)
+
+
+WINCOMMCTRLAPI HWND WINAPI CreateUpDownControl(DWORD dwStyle, int x, int y, int cx, int cy,
+ HWND hParent, int nID, HINSTANCE hInst,
+ HWND hBuddy,
+ int nUpper, int nLower, int nPos);
+
+typedef struct _NM_UPDOWN
+{
+ NMHDR hdr;
+ int iPos;
+ int iDelta;
+} NM_UPDOWN, FAR *LPNM_UPDOWN;
+
+#define UDN_DELTAPOS (UDN_FIRST - 1)
+
+#endif
+
+
+//====== PROGRESS CONTROL =====================================================
+
+#ifndef NOPROGRESS
+
+#ifdef _WIN32
+
+#define PROGRESS_CLASSA "msctls_progress32"
+#define PROGRESS_CLASSW L"msctls_progress32"
+
+#ifdef UNICODE
+#define PROGRESS_CLASS PROGRESS_CLASSW
+#else
+#define PROGRESS_CLASS PROGRESS_CLASSA
+#endif
+
+#else
+#define PROGRESS_CLASS "msctls_progress"
+#endif
+
+
+#define PBM_SETRANGE (WM_USER+1)
+#define PBM_SETPOS (WM_USER+2)
+#define PBM_DELTAPOS (WM_USER+3)
+#define PBM_SETSTEP (WM_USER+4)
+#define PBM_STEPIT (WM_USER+5)
+
+#endif
+
+
+//====== HOTKEY CONTROL =======================================================
+
+#ifndef NOHOTKEY
+
+#define HOTKEYF_SHIFT 0x01
+#define HOTKEYF_CONTROL 0x02
+#define HOTKEYF_ALT 0x04
+#define HOTKEYF_EXT 0x08
+
+#define HKCOMB_NONE 0x0001
+#define HKCOMB_S 0x0002
+#define HKCOMB_C 0x0004
+#define HKCOMB_A 0x0008
+#define HKCOMB_SC 0x0010
+#define HKCOMB_SA 0x0020
+#define HKCOMB_CA 0x0040
+#define HKCOMB_SCA 0x0080
+
+
+#define HKM_SETHOTKEY (WM_USER+1)
+#define HKM_GETHOTKEY (WM_USER+2)
+#define HKM_SETRULES (WM_USER+3)
+
+#ifdef _WIN32
+
+#define HOTKEY_CLASSA "msctls_hotkey32"
+#define HOTKEY_CLASSW L"msctls_hotkey32"
+
+#ifdef UNICODE
+#define HOTKEY_CLASS HOTKEY_CLASSW
+#else
+#define HOTKEY_CLASS HOTKEY_CLASSA
+#endif
+
+#else
+#define HOTKEY_CLASS "msctls_hotkey"
+#endif
+
+#endif
+
+
+//====== COMMON CONTROL STYLES ================================================
+
+#define CCS_TOP 0x00000001L
+#define CCS_NOMOVEY 0x00000002L
+#define CCS_BOTTOM 0x00000003L
+#define CCS_NORESIZE 0x00000004L
+#define CCS_NOPARENTALIGN 0x00000008L
+#define CCS_NOHILITE 0x00000010L
+#define CCS_ADJUSTABLE 0x00000020L
+#define CCS_NODIVIDER 0x00000040L
+
+
+//====== LISTVIEW CONTROL =====================================================
+
+#ifndef NOLISTVIEW
+
+#ifdef _WIN32
+
+#define WC_LISTVIEWA "SysListView32"
+#define WC_LISTVIEWW L"SysListView32"
+
+#ifdef UNICODE
+#define WC_LISTVIEW WC_LISTVIEWW
+#else
+#define WC_LISTVIEW WC_LISTVIEWA
+#endif
+
+#else
+#define WC_LISTVIEW "SysListView"
+#endif
+
+#define LVS_ICON 0x0000
+#define LVS_REPORT 0x0001
+#define LVS_SMALLICON 0x0002
+#define LVS_LIST 0x0003
+#define LVS_TYPEMASK 0x0003
+#define LVS_SINGLESEL 0x0004
+#define LVS_SHOWSELALWAYS 0x0008
+#define LVS_SORTASCENDING 0x0010
+#define LVS_SORTDESCENDING 0x0020
+#define LVS_SHAREIMAGELISTS 0x0040
+#define LVS_NOLABELWRAP 0x0080
+#define LVS_AUTOARRANGE 0x0100
+#define LVS_EDITLABELS 0x0200
+#define LVS_NOSCROLL 0x2000
+
+#define LVS_TYPESTYLEMASK 0xfc00
+
+#define LVS_ALIGNTOP 0x0000
+#define LVS_ALIGNBOTTOM 0x0400
+#define LVS_ALIGNLEFT 0x0800
+#define LVS_ALIGNRIGHT 0x0c00
+#define LVS_ALIGNMASK 0x0c00
+
+#define LVS_OWNERDRAWFIXED 0x0400
+#define LVS_NOCOLUMNHEADER 0x4000
+#define LVS_NOSORTHEADER 0x8000
+
+#define LVM_GETBKCOLOR (LVM_FIRST + 0)
+#define ListView_GetBkColor(hwnd) \
+ (COLORREF)SendMessage((hwnd), LVM_GETBKCOLOR, 0, 0L)
+
+#define LVM_SETBKCOLOR (LVM_FIRST + 1)
+#define ListView_SetBkColor(hwnd, clrBk) \
+ (BOOL)SendMessage((hwnd), LVM_SETBKCOLOR, 0, (LPARAM)(COLORREF)(clrBk))
+
+#define LVM_GETIMAGELIST (LVM_FIRST + 2)
+#define ListView_GetImageList(hwnd, iImageList) \
+ (HIMAGELIST)SendMessage((hwnd), LVM_GETIMAGELIST, (WPARAM)(INT)(iImageList), 0L)
+
+#define LVSIL_NORMAL 0
+#define LVSIL_SMALL 1
+#define LVSIL_STATE 2
+
+#define LVM_SETIMAGELIST (LVM_FIRST + 3)
+#define ListView_SetImageList(hwnd, himl, iImageList) \
+ (HIMAGELIST)(UINT)SendMessage((hwnd), LVM_SETIMAGELIST, (WPARAM)(iImageList), (LPARAM)(UINT)(HIMAGELIST)(himl))
+
+#define LVM_GETITEMCOUNT (LVM_FIRST + 4)
+#define ListView_GetItemCount(hwnd) \
+ (int)SendMessage((hwnd), LVM_GETITEMCOUNT, 0, 0L)
+
+
+#define LVIF_TEXT 0x0001
+#define LVIF_IMAGE 0x0002
+#define LVIF_PARAM 0x0004
+#define LVIF_STATE 0x0008
+
+#define LVIS_FOCUSED 0x0001
+#define LVIS_SELECTED 0x0002
+#define LVIS_CUT 0x0004
+#define LVIS_DROPHILITED 0x0008
+#define LVIS_LINK 0x0040
+
+#define LVIS_OVERLAYMASK 0x0F00
+#define LVIS_STATEIMAGEMASK 0xF000
+
+#define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
+
+typedef struct _LV_ITEMA
+{
+ UINT mask;
+ int iItem;
+ int iSubItem;
+ UINT state;
+ UINT stateMask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+} LV_ITEMA;
+
+typedef struct _LV_ITEMW
+{
+ UINT mask;
+ int iItem;
+ int iSubItem;
+ UINT state;
+ UINT stateMask;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+} LV_ITEMW;
+
+#ifdef UNICODE
+#define LV_ITEM LV_ITEMW
+#else
+#define LV_ITEM LV_ITEMA
+#endif
+
+#define LPSTR_TEXTCALLBACKW ((LPWSTR)-1L)
+#define LPSTR_TEXTCALLBACKA ((LPSTR)-1L)
+#ifdef UNICODE
+#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW
+#else
+#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA
+#endif
+
+#define I_IMAGECALLBACK (-1)
+
+#define LVM_GETITEMA (LVM_FIRST + 5)
+#define LVM_GETITEMW (LVM_FIRST + 75)
+#ifdef UNICODE
+#define LVM_GETITEM LVM_GETITEMW
+#else
+#define LVM_GETITEM LVM_GETITEMA
+#endif
+
+#define ListView_GetItem(hwnd, pitem) \
+ (BOOL)SendMessage((hwnd), LVM_GETITEM, 0, (LPARAM)(LV_ITEM FAR*)(pitem))
+
+
+#define LVM_SETITEMA (LVM_FIRST + 6)
+#define LVM_SETITEMW (LVM_FIRST + 76)
+#ifdef UNICODE
+#define LVM_SETITEM LVM_SETITEMW
+#else
+#define LVM_SETITEM LVM_SETITEMA
+#endif
+
+#define ListView_SetItem(hwnd, pitem) \
+ (BOOL)SendMessage((hwnd), LVM_SETITEM, 0, (LPARAM)(const LV_ITEM FAR*)(pitem))
+
+
+#define LVM_INSERTITEMA (LVM_FIRST + 7)
+#define LVM_INSERTITEMW (LVM_FIRST + 77)
+#ifdef UNICODE
+#define LVM_INSERTITEM LVM_INSERTITEMW
+#else
+#define LVM_INSERTITEM LVM_INSERTITEMA
+#endif
+#define ListView_InsertItem(hwnd, pitem) \
+ (int)SendMessage((hwnd), LVM_INSERTITEM, 0, (LPARAM)(const LV_ITEM FAR*)(pitem))
+
+
+#define LVM_DELETEITEM (LVM_FIRST + 8)
+#define ListView_DeleteItem(hwnd, i) \
+ (BOOL)SendMessage((hwnd), LVM_DELETEITEM, (WPARAM)(int)(i), 0L)
+
+
+#define LVM_DELETEALLITEMS (LVM_FIRST + 9)
+#define ListView_DeleteAllItems(hwnd) \
+ (BOOL)SendMessage((hwnd), LVM_DELETEALLITEMS, 0, 0L)
+
+
+#define LVM_GETCALLBACKMASK (LVM_FIRST + 10)
+#define ListView_GetCallbackMask(hwnd) \
+ (BOOL)SendMessage((hwnd), LVM_GETCALLBACKMASK, 0, 0)
+
+
+#define LVM_SETCALLBACKMASK (LVM_FIRST + 11)
+#define ListView_SetCallbackMask(hwnd, mask) \
+ (BOOL)SendMessage((hwnd), LVM_SETCALLBACKMASK, (WPARAM)(UINT)(mask), 0)
+
+
+#define LVNI_ALL 0x0000
+#define LVNI_FOCUSED 0x0001
+#define LVNI_SELECTED 0x0002
+#define LVNI_CUT 0x0004
+#define LVNI_DROPHILITED 0x0008
+#define LVNI_PREVIOUS 0x0020
+
+#define LVNI_ABOVE 0x0100
+#define LVNI_BELOW 0x0200
+#define LVNI_TOLEFT 0x0400
+#define LVNI_TORIGHT 0x0800
+
+
+#define LVM_GETNEXTITEM (LVM_FIRST + 12)
+#define ListView_GetNextItem(hwnd, i, flags) \
+ (int)SendMessage((hwnd), LVM_GETNEXTITEM, (WPARAM)(int)(i), MAKELPARAM((flags), 0))
+
+
+#define LVFI_PARAM 0x0001
+#define LVFI_STRING 0x0002
+#define LVFI_SUBSTRING 0x0004
+#define LVFI_PARTIAL 0x0008
+#define LVFI_NOCASE 0x0010
+#define LVFI_WRAP 0x0020
+#define LVFI_NEARESTXY 0x0040
+
+typedef struct _LV_FINDINFOA
+{
+ UINT flags;
+ LPCSTR psz;
+ LPARAM lParam;
+ POINT pt;
+ UINT vkDirection;
+} LV_FINDINFOA;
+
+typedef struct _LV_FINDINFOW
+{
+ UINT flags;
+ LPCWSTR psz;
+ LPARAM lParam;
+ POINT pt;
+ UINT vkDirection;
+} LV_FINDINFOW;
+
+#ifdef UNICODE
+#define LV_FINDINFO LV_FINDINFOW
+#else
+#define LV_FINDINFO LV_FINDINFOA
+#endif
+
+#define LVM_FINDITEMA (LVM_FIRST + 13)
+#define LVM_FINDITEMW (LVM_FIRST + 83)
+#ifdef UNICODE
+#define LVM_FINDITEM LVM_FINDITEMW
+#else
+#define LVM_FINDITEM LVM_FINDITEMA
+#endif
+
+#define ListView_FindItem(hwnd, iStart, plvfi) \
+ (int)SendMessage((hwnd), LVM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const LV_FINDINFO FAR*)(plvfi))
+
+#define LVIR_BOUNDS 0
+#define LVIR_ICON 1
+#define LVIR_LABEL 2
+#define LVIR_SELECTBOUNDS 3
+
+
+#define LVM_GETITEMRECT (LVM_FIRST + 14)
+#define ListView_GetItemRect(hwnd, i, prc, code) \
+ ((prc)->left = (code), (BOOL)SendMessage((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT FAR*)(prc)))
+
+
+#define LVM_SETITEMPOSITION (LVM_FIRST + 15)
+#define ListView_SetItemPosition(hwndLV, i, x, y) \
+ (BOOL)SendMessage((hwndLV), LVM_SETITEMPOSITION, (WPARAM)(int)(i), MAKELPARAM((x), (y)))
+
+
+#define LVM_GETITEMPOSITION (LVM_FIRST + 16)
+#define ListView_GetItemPosition(hwndLV, i, ppt) \
+ (BOOL)SendMessage((hwndLV), LVM_GETITEMPOSITION, (WPARAM)(int)(i), (LPARAM)(POINT FAR*)(ppt))
+
+
+#define LVM_GETSTRINGWIDTHA (LVM_FIRST + 17)
+#define LVM_GETSTRINGWIDTHW (LVM_FIRST + 87)
+#ifdef UNICODE
+#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHW
+#else
+#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHA
+#endif
+
+#define ListView_GetStringWidth(hwndLV, psz) \
+ (int)SendMessage((hwndLV), LVM_GETSTRINGWIDTH, 0, (LPARAM)(LPCTSTR)(psz))
+
+
+#define LVHT_NOWHERE 0x0001
+#define LVHT_ONITEMICON 0x0002
+#define LVHT_ONITEMLABEL 0x0004
+#define LVHT_ONITEMSTATEICON 0x0008
+#define LVHT_ONITEM (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON)
+
+#define LVHT_ABOVE 0x0008
+#define LVHT_BELOW 0x0010
+#define LVHT_TORIGHT 0x0020
+#define LVHT_TOLEFT 0x0040
+
+typedef struct _LV_HITTESTINFO
+{
+ POINT pt;
+ UINT flags;
+ int iItem;
+} LV_HITTESTINFO;
+
+#define LVM_HITTEST (LVM_FIRST + 18)
+#define ListView_HitTest(hwndLV, pinfo) \
+ (int)SendMessage((hwndLV), LVM_HITTEST, 0, (LPARAM)(LV_HITTESTINFO FAR*)(pinfo))
+
+
+#define LVM_ENSUREVISIBLE (LVM_FIRST + 19)
+#define ListView_EnsureVisible(hwndLV, i, fPartialOK) \
+ (BOOL)SendMessage((hwndLV), LVM_ENSUREVISIBLE, (WPARAM)(int)(i), MAKELPARAM((fPartialOK), 0))
+
+
+#define LVM_SCROLL (LVM_FIRST + 20)
+#define ListView_Scroll(hwndLV, dx, dy) \
+ (BOOL)SendMessage((hwndLV), LVM_SCROLL, (WPARAM)(int)dx, (LPARAM)(int)dy)
+
+
+#define LVM_REDRAWITEMS (LVM_FIRST + 21)
+#define ListView_RedrawItems(hwndLV, iFirst, iLast) \
+ (BOOL)SendMessage((hwndLV), LVM_REDRAWITEMS, (WPARAM)(int)iFirst, (LPARAM)(int)iLast)
+
+
+#define LVA_DEFAULT 0x0000
+#define LVA_ALIGNLEFT 0x0001
+#define LVA_ALIGNTOP 0x0002
+#define LVA_ALIGNRIGHT 0x0003
+#define LVA_ALIGNBOTTOM 0x0004
+#define LVA_SNAPTOGRID 0x0005
+
+#define LVA_SORTASCENDING 0x0100
+#define LVA_SORTDESCENDING 0x0200
+
+#define LVM_ARRANGE (LVM_FIRST + 22)
+#define ListView_Arrange(hwndLV, code) \
+ (BOOL)SendMessage((hwndLV), LVM_ARRANGE, (WPARAM)(UINT)(code), 0L)
+
+
+#define LVM_EDITLABEL (LVM_FIRST + 23)
+#define ListView_EditLabel(hwndLV, i) \
+ (HWND)SendMessage((hwndLV), LVM_EDITLABEL, (WPARAM)(int)(i), 0L)
+
+
+#define LVM_GETEDITCONTROL (LVM_FIRST + 24)
+#define ListView_GetEditControl(hwndLV) \
+ (HWND)SendMessage((hwndLV), LVM_GETEDITCONTROL, 0, 0L)
+
+
+typedef struct _LV_COLUMNA
+{
+ UINT mask;
+ int fmt;
+ int cx;
+ LPSTR pszText;
+ int cchTextMax;
+ int iSubItem;
+} LV_COLUMNA;
+
+typedef struct _LV_COLUMNW
+{
+ UINT mask;
+ int fmt;
+ int cx;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iSubItem;
+} LV_COLUMNW;
+
+#ifdef UNICODE
+#define LV_COLUMN LV_COLUMNW
+#else
+#define LV_COLUMN LV_COLUMNA
+#endif
+
+
+#define LVCF_FMT 0x0001
+#define LVCF_WIDTH 0x0002
+#define LVCF_TEXT 0x0004
+#define LVCF_SUBITEM 0x0008
+
+#define LVCFMT_LEFT 0
+#define LVCFMT_RIGHT 1
+#define LVCFMT_CENTER 2
+
+
+#define LVM_GETCOLUMNA (LVM_FIRST + 25)
+#define LVM_GETCOLUMNW (LVM_FIRST + 95)
+#ifdef UNICODE
+#define LVM_GETCOLUMN LVM_GETCOLUMNW
+#else
+#define LVM_GETCOLUMN LVM_GETCOLUMNA
+#endif
+
+#define ListView_GetColumn(hwnd, iCol, pcol) \
+ (BOOL)SendMessage((hwnd), LVM_GETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(LV_COLUMN FAR*)(pcol))
+
+
+#define LVM_SETCOLUMNA (LVM_FIRST + 26)
+#define LVM_SETCOLUMNW (LVM_FIRST + 96)
+#ifdef UNICODE
+#define LVM_SETCOLUMN LVM_SETCOLUMNW
+#else
+#define LVM_SETCOLUMN LVM_SETCOLUMNA
+#endif
+
+#define ListView_SetColumn(hwnd, iCol, pcol) \
+ (BOOL)SendMessage((hwnd), LVM_SETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN FAR*)(pcol))
+
+
+#define LVM_INSERTCOLUMNA (LVM_FIRST + 27)
+#define LVM_INSERTCOLUMNW (LVM_FIRST + 97)
+#ifdef UNICODE
+# define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW
+#else
+# define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA
+#endif
+
+#define ListView_InsertColumn(hwnd, iCol, pcol) \
+ (int)SendMessage((hwnd), LVM_INSERTCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN FAR*)(pcol))
+
+
+#define LVM_DELETECOLUMN (LVM_FIRST + 28)
+#define ListView_DeleteColumn(hwnd, iCol) \
+ (BOOL)SendMessage((hwnd), LVM_DELETECOLUMN, (WPARAM)(int)(iCol), 0)
+
+
+#define LVM_GETCOLUMNWIDTH (LVM_FIRST + 29)
+#define ListView_GetColumnWidth(hwnd, iCol) \
+ (int)SendMessage((hwnd), LVM_GETCOLUMNWIDTH, (WPARAM)(int)(iCol), 0)
+
+
+#define LVSCW_AUTOSIZE -1
+#define LVSCW_AUTOSIZE_USEHEADER -2
+#define LVM_SETCOLUMNWIDTH (LVM_FIRST + 30)
+
+#define ListView_SetColumnWidth(hwnd, iCol, cx) \
+ (BOOL)SendMessage((hwnd), LVM_SETCOLUMNWIDTH, (WPARAM)(int)(iCol), MAKELPARAM((cx), 0))
+
+
+#define LVM_CREATEDRAGIMAGE (LVM_FIRST + 33)
+#define ListView_CreateDragImage(hwnd, i, lpptUpLeft) \
+ (HIMAGELIST)SendMessage((hwnd), LVM_CREATEDRAGIMAGE, (WPARAM)(int)(i), (LPARAM)(LPPOINT)(lpptUpLeft))
+
+
+#define LVM_GETVIEWRECT (LVM_FIRST + 34)
+#define ListView_GetViewRect(hwnd, prc) \
+ (BOOL)SendMessage((hwnd), LVM_GETVIEWRECT, 0, (LPARAM)(RECT FAR*)(prc))
+
+
+#define LVM_GETTEXTCOLOR (LVM_FIRST + 35)
+#define ListView_GetTextColor(hwnd) \
+ (COLORREF)SendMessage((hwnd), LVM_GETTEXTCOLOR, 0, 0L)
+
+
+#define LVM_SETTEXTCOLOR (LVM_FIRST + 36)
+#define ListView_SetTextColor(hwnd, clrText) \
+ (BOOL)SendMessage((hwnd), LVM_SETTEXTCOLOR, 0, (LPARAM)(COLORREF)(clrText))
+
+
+#define LVM_GETTEXTBKCOLOR (LVM_FIRST + 37)
+#define ListView_GetTextBkColor(hwnd) \
+ (COLORREF)SendMessage((hwnd), LVM_GETTEXTBKCOLOR, 0, 0L)
+
+
+#define LVM_SETTEXTBKCOLOR (LVM_FIRST + 38)
+#define ListView_SetTextBkColor(hwnd, clrTextBk) \
+ (BOOL)SendMessage((hwnd), LVM_SETTEXTBKCOLOR, 0, (LPARAM)(COLORREF)(clrTextBk))
+
+
+#define LVM_GETTOPINDEX (LVM_FIRST + 39)
+#define ListView_GetTopIndex(hwndLV) \
+ (int)SendMessage((hwndLV), LVM_GETTOPINDEX, 0, 0)
+
+
+#define LVM_GETCOUNTPERPAGE (LVM_FIRST + 40)
+#define ListView_GetCountPerPage(hwndLV, ppt) \
+ (int)SendMessage((hwndLV), LVM_GETCOUNTPERPAGE, 0, 0)
+
+
+#define LVM_GETORIGIN (LVM_FIRST + 41)
+#define ListView_GetOrigin(hwndLV, ppt) \
+ (BOOL)SendMessage((hwndLV), LVM_GETORIGIN, (WPARAM)0, (LPARAM)(POINT FAR*)(ppt))
+
+
+#define LVM_UPDATE (LVM_FIRST + 42)
+#define ListView_Update(hwndLV, i) \
+ (BOOL)SendMessage((hwndLV), LVM_UPDATE, (WPARAM)i, 0L)
+
+
+#define LVM_SETITEMSTATE (LVM_FIRST + 43)
+#define ListView_SetItemState(hwndLV, i, data, mask) \
+{ LV_ITEM _ms_lvi;\
+ _ms_lvi.stateMask = mask;\
+ _ms_lvi.state = data;\
+ SendMessage((hwndLV), LVM_SETITEMSTATE, (WPARAM)i, (LPARAM)(LV_ITEM FAR *)&_ms_lvi);\
+}
+
+
+#define LVM_GETITEMSTATE (LVM_FIRST + 44)
+#define ListView_GetItemState(hwndLV, i, mask) \
+ (UINT)SendMessage((hwndLV), LVM_GETITEMSTATE, (WPARAM)i, (LPARAM)mask)
+
+
+#define LVM_GETITEMTEXTA (LVM_FIRST + 45)
+#define LVM_GETITEMTEXTW (LVM_FIRST + 115)
+
+#ifdef UNICODE
+#define LVM_GETITEMTEXT LVM_GETITEMTEXTW
+#else
+#define LVM_GETITEMTEXT LVM_GETITEMTEXTA
+#endif
+
+#define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_) \
+{ LV_ITEM _ms_lvi;\
+ _ms_lvi.iSubItem = iSubItem_;\
+ _ms_lvi.cchTextMax = cchTextMax_;\
+ _ms_lvi.pszText = pszText_;\
+ SendMessage((hwndLV), LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)(LV_ITEM FAR *)&_ms_lvi);\
+}
+
+
+#define LVM_SETITEMTEXTA (LVM_FIRST + 46)
+#define LVM_SETITEMTEXTW (LVM_FIRST + 116)
+
+#ifdef UNICODE
+#define LVM_SETITEMTEXT LVM_SETITEMTEXTW
+#else
+#define LVM_SETITEMTEXT LVM_SETITEMTEXTA
+#endif
+
+#define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_) \
+{ LV_ITEM _ms_lvi;\
+ _ms_lvi.iSubItem = iSubItem_;\
+ _ms_lvi.pszText = pszText_;\
+ SendMessage((hwndLV), LVM_SETITEMTEXT, (WPARAM)i, (LPARAM)(LV_ITEM FAR *)&_ms_lvi);\
+}
+
+
+#define LVM_SETITEMCOUNT (LVM_FIRST + 47)
+#define ListView_SetItemCount(hwndLV, cItems) \
+ SendMessage((hwndLV), LVM_SETITEMCOUNT, (WPARAM)cItems, 0)
+
+
+typedef int (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
+
+
+#define LVM_SORTITEMS (LVM_FIRST + 48)
+#define ListView_SortItems(hwndLV, _pfnCompare, _lPrm) \
+ (BOOL)SendMessage((hwndLV), LVM_SORTITEMS, (WPARAM)(LPARAM)_lPrm, \
+ (LPARAM)(PFNLVCOMPARE)_pfnCompare)
+
+
+#define LVM_SETITEMPOSITION32 (LVM_FIRST + 49)
+#define ListView_SetItemPosition32(hwndLV, i, x, y) \
+{ POINT ptNewPos = {x,y}; \
+ SendMessage((hwndLV), LVM_SETITEMPOSITION32, (WPARAM)(int)(i), (LPARAM)&ptNewPos); \
+}
+
+
+#define LVM_GETSELECTEDCOUNT (LVM_FIRST + 50)
+#define ListView_GetSelectedCount(hwndLV) \
+ (UINT)SendMessage((hwndLV), LVM_GETSELECTEDCOUNT, 0, 0L)
+
+
+#define LVM_GETITEMSPACING (LVM_FIRST + 51)
+#define ListView_GetItemSpacing(hwndLV, fSmall) \
+ (DWORD)SendMessage((hwndLV), LVM_GETITEMSPACING, fSmall, 0L)
+
+
+#define LVM_GETISEARCHSTRINGA (LVM_FIRST + 52)
+#define LVM_GETISEARCHSTRINGW (LVM_FIRST + 117)
+
+#ifdef UNICODE
+#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGW
+#else
+#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGA
+#endif
+
+#define ListView_GetISearchString(hwndLV, lpsz) \
+ (BOOL)SendMessage((hwndLV), LVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)lpsz)
+
+
+typedef struct _NM_LISTVIEW
+{
+ NMHDR hdr;
+ int iItem;
+ int iSubItem;
+ UINT uNewState;
+ UINT uOldState;
+ UINT uChanged;
+ POINT ptAction;
+ LPARAM lParam;
+} NM_LISTVIEW, FAR *LPNM_LISTVIEW;
+
+#define LVN_ITEMCHANGING (LVN_FIRST-0)
+#define LVN_ITEMCHANGED (LVN_FIRST-1)
+#define LVN_INSERTITEM (LVN_FIRST-2)
+#define LVN_DELETEITEM (LVN_FIRST-3)
+#define LVN_DELETEALLITEMS (LVN_FIRST-4)
+#define LVN_BEGINLABELEDITA (LVN_FIRST-5)
+#define LVN_BEGINLABELEDITW (LVN_FIRST-75)
+#define LVN_ENDLABELEDITA (LVN_FIRST-6)
+#define LVN_ENDLABELEDITW (LVN_FIRST-76)
+#define LVN_COLUMNCLICK (LVN_FIRST-8)
+#define LVN_BEGINDRAG (LVN_FIRST-9)
+#define LVN_ENDDRAG (LVN_FIRST-10)
+#define LVN_BEGINRDRAG (LVN_FIRST-11)
+#define LVN_ENDRDRAG (LVN_FIRST-12)
+
+#ifdef PW2
+#define LVN_PEN (LVN_FIRST-20)
+#endif
+
+#define LVN_GETDISPINFOA (LVN_FIRST-50)
+#define LVN_GETDISPINFOW (LVN_FIRST-77)
+#define LVN_SETDISPINFOA (LVN_FIRST-51)
+#define LVN_SETDISPINFOW (LVN_FIRST-78)
+
+#ifdef UNICODE
+#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITW
+#define LVN_ENDLABELEDIT LVN_ENDLABELEDITW
+#define LVN_GETDISPINFO LVN_GETDISPINFOW
+#define LVN_SETDISPINFO LVN_SETDISPINFOW
+#else
+#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITA
+#define LVN_ENDLABELEDIT LVN_ENDLABELEDITA
+#define LVN_GETDISPINFO LVN_GETDISPINFOA
+#define LVN_SETDISPINFO LVN_SETDISPINFOA
+#endif
+
+
+
+
+#define LVIF_DI_SETITEM 0x1000
+
+typedef struct _LV_DISPINFO {
+ NMHDR hdr;
+ LV_ITEMA item;
+} LV_DISPINFOA;
+
+typedef struct _LV_DISPINFOW {
+ NMHDR hdr;
+ LV_ITEMW item;
+} LV_DISPINFOW;
+
+#ifdef UNICODE
+#define LV_DISPINFO LV_DISPINFOW
+#else
+#define LV_DISPINFO LV_DISPINFOA
+#endif
+
+#define LVN_KEYDOWN (LVN_FIRST-55)
+
+typedef struct _LV_KEYDOWN
+{
+ NMHDR hdr;
+ WORD wVKey;
+ UINT flags;
+} LV_KEYDOWN;
+
+#endif
+
+//====== TREEVIEW CONTROL =====================================================
+
+#ifndef NOTREEVIEW
+
+#ifdef _WIN32
+#define WC_TREEVIEWA "SysTreeView32"
+#define WC_TREEVIEWW L"SysTreeView32"
+
+#ifdef UNICODE
+#define WC_TREEVIEW WC_TREEVIEWW
+#else
+#define WC_TREEVIEW WC_TREEVIEWA
+#endif
+
+#else
+#define WC_TREEVIEW "SysTreeView"
+#endif
+
+#define TVS_HASBUTTONS 0x0001
+#define TVS_HASLINES 0x0002
+#define TVS_LINESATROOT 0x0004
+#define TVS_EDITLABELS 0x0008
+#define TVS_DISABLEDRAGDROP 0x0010
+#define TVS_SHOWSELALWAYS 0x0020
+
+typedef struct _TREEITEM FAR* HTREEITEM;
+
+#define TVIF_TEXT 0x0001
+#define TVIF_IMAGE 0x0002
+#define TVIF_PARAM 0x0004
+#define TVIF_STATE 0x0008
+#define TVIF_HANDLE 0x0010
+#define TVIF_SELECTEDIMAGE 0x0020
+#define TVIF_CHILDREN 0x0040
+
+#define TVIS_FOCUSED 0x0001
+#define TVIS_SELECTED 0x0002
+#define TVIS_CUT 0x0004
+#define TVIS_DROPHILITED 0x0008
+#define TVIS_BOLD 0x0010
+#define TVIS_EXPANDED 0x0020
+#define TVIS_EXPANDEDONCE 0x0040
+
+#define TVIS_OVERLAYMASK 0x0F00
+#define TVIS_STATEIMAGEMASK 0xF000
+#define TVIS_USERMASK 0xF000
+
+
+#define I_CHILDRENCALLBACK (-1)
+
+typedef struct _TV_ITEMA {
+ UINT mask;
+ HTREEITEM hItem;
+ UINT state;
+ UINT stateMask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int cChildren;
+ LPARAM lParam;
+} TV_ITEMA, FAR *LPTV_ITEMA;
+
+typedef struct _TV_ITEMW {
+ UINT mask;
+ HTREEITEM hItem;
+ UINT state;
+ UINT stateMask;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int cChildren;
+ LPARAM lParam;
+} TV_ITEMW, FAR *LPTV_ITEMW;
+
+#ifdef UNICODE
+#define TV_ITEM TV_ITEMW
+#define LPTV_ITEM LPTV_ITEMW
+#else
+#define TV_ITEM TV_ITEMA
+#define LPTV_ITEM LPTV_ITEMA
+#endif
+
+
+#define TVI_ROOT ((HTREEITEM)0xFFFF0000)
+#define TVI_FIRST ((HTREEITEM)0xFFFF0001)
+#define TVI_LAST ((HTREEITEM)0xFFFF0002)
+#define TVI_SORT ((HTREEITEM)0xFFFF0003)
+
+typedef struct _TV_INSERTSTRUCTA {
+ HTREEITEM hParent;
+ HTREEITEM hInsertAfter;
+ TV_ITEMA item;
+} TV_INSERTSTRUCTA, FAR *LPTV_INSERTSTRUCTA;
+
+typedef struct _TV_INSERTSTRUCTW {
+ HTREEITEM hParent;
+ HTREEITEM hInsertAfter;
+ TV_ITEMW item;
+} TV_INSERTSTRUCTW, FAR *LPTV_INSERTSTRUCTW;
+
+#ifdef UNICODE
+#define TV_INSERTSTRUCT TV_INSERTSTRUCTW
+#define LPTV_INSERTSTRUCT LPTV_INSERTSTRUCTW
+#else
+#define TV_INSERTSTRUCT TV_INSERTSTRUCTA
+#define LPTV_INSERTSTRUCT LPTV_INSERTSTRUCTA
+#endif
+
+#define TVM_INSERTITEMA (TV_FIRST + 0)
+#define TVM_INSERTITEMW (TV_FIRST + 50)
+#ifdef UNICODE
+#define TVM_INSERTITEM TVM_INSERTITEMW
+#else
+#define TVM_INSERTITEM TVM_INSERTITEMA
+#endif
+
+#define TreeView_InsertItem(hwnd, lpis) \
+ (HTREEITEM)SendMessage((hwnd), TVM_INSERTITEM, 0, (LPARAM)(LPTV_INSERTSTRUCT)(lpis))
+
+
+#define TVM_DELETEITEM (TV_FIRST + 1)
+#define TreeView_DeleteItem(hwnd, hitem) \
+ (BOOL)SendMessage((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TreeView_DeleteAllItems(hwnd) \
+ (BOOL)SendMessage((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT)
+
+
+#define TVM_EXPAND (TV_FIRST + 2)
+#define TreeView_Expand(hwnd, hitem, code) \
+ (BOOL)SendMessage((hwnd), TVM_EXPAND, (WPARAM)code, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVE_COLLAPSE 0x0001
+#define TVE_EXPAND 0x0002
+#define TVE_TOGGLE 0x0003
+#define TVE_COLLAPSERESET 0x8000
+
+
+#define TVM_GETITEMRECT (TV_FIRST + 4)
+#define TreeView_GetItemRect(hwnd, hitem, prc, code) \
+ (*(HTREEITEM FAR *)prc = (hitem), (BOOL)SendMessage((hwnd), TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT FAR*)(prc)))
+
+
+#define TVM_GETCOUNT (TV_FIRST + 5)
+#define TreeView_GetCount(hwnd) \
+ (UINT)SendMessage((hwnd), TVM_GETCOUNT, 0, 0)
+
+
+#define TVM_GETINDENT (TV_FIRST + 6)
+#define TreeView_GetIndent(hwnd) \
+ (UINT)SendMessage((hwnd), TVM_GETINDENT, 0, 0)
+
+
+#define TVM_SETINDENT (TV_FIRST + 7)
+#define TreeView_SetIndent(hwnd, indent) \
+ (BOOL)SendMessage((hwnd), TVM_SETINDENT, (WPARAM)indent, 0)
+
+
+#define TVM_GETIMAGELIST (TV_FIRST + 8)
+#define TreeView_GetImageList(hwnd, iImage) \
+ (HIMAGELIST)SendMessage((hwnd), TVM_GETIMAGELIST, iImage, 0)
+
+
+#define TVSIL_NORMAL 0
+#define TVSIL_STATE 2
+
+
+#define TVM_SETIMAGELIST (TV_FIRST + 9)
+#define TreeView_SetImageList(hwnd, himl, iImage) \
+ (HIMAGELIST)SendMessage((hwnd), TVM_SETIMAGELIST, iImage, (LPARAM)(UINT)(HIMAGELIST)(himl))
+
+
+#define TVM_GETNEXTITEM (TV_FIRST + 10)
+#define TreeView_GetNextItem(hwnd, hitem, code) \
+ (HTREEITEM)SendMessage((hwnd), TVM_GETNEXTITEM, (WPARAM)code, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVGN_ROOT 0x0000
+#define TVGN_NEXT 0x0001
+#define TVGN_PREVIOUS 0x0002
+#define TVGN_PARENT 0x0003
+#define TVGN_CHILD 0x0004
+#define TVGN_FIRSTVISIBLE 0x0005
+#define TVGN_NEXTVISIBLE 0x0006
+#define TVGN_PREVIOUSVISIBLE 0x0007
+#define TVGN_DROPHILITE 0x0008
+#define TVGN_CARET 0x0009
+
+#define TreeView_GetChild(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD)
+#define TreeView_GetNextSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)
+#define TreeView_GetPrevSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS)
+#define TreeView_GetParent(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT)
+#define TreeView_GetFirstVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
+#define TreeView_GetNextVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)
+#define TreeView_GetPrevVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE)
+#define TreeView_GetSelection(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_CARET)
+#define TreeView_GetDropHilight(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
+#define TreeView_GetRoot(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT)
+
+
+#define TVM_SELECTITEM (TV_FIRST + 11)
+#define TreeView_Select(hwnd, hitem, code) \
+ (HTREEITEM)SendMessage((hwnd), TVM_SELECTITEM, (WPARAM)code, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TreeView_SelectItem(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_CARET)
+#define TreeView_SelectDropTarget(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
+#define TreeView_SelectSetFirstVisible(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
+
+
+#define TVM_GETITEMA (TV_FIRST + 12)
+#define TVM_GETITEMW (TV_FIRST + 62)
+
+#ifdef UNICODE
+#define TVM_GETITEM TVM_GETITEMW
+#else
+#define TVM_GETITEM TVM_GETITEMA
+#endif
+
+#define TreeView_GetItem(hwnd, pitem) \
+ (BOOL)SendMessage((hwnd), TVM_GETITEM, 0, (LPARAM)(TV_ITEM FAR*)(pitem))
+
+
+#define TVM_SETITEMA (TV_FIRST + 13)
+#define TVM_SETITEMW (TV_FIRST + 63)
+
+#ifdef UNICODE
+#define TVM_SETITEM TVM_SETITEMW
+#else
+#define TVM_SETITEM TVM_SETITEMA
+#endif
+
+#define TreeView_SetItem(hwnd, pitem) \
+ (BOOL)SendMessage((hwnd), TVM_SETITEM, 0, (LPARAM)(const TV_ITEM FAR*)(pitem))
+
+
+#define TVM_EDITLABEL (TV_FIRST + 14)
+#define TreeView_EditLabel(hwnd, hitem) \
+ (HWND)SendMessage((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVM_GETEDITCONTROL (TV_FIRST + 15)
+#define TreeView_GetEditControl(hwnd) \
+ (HWND)SendMessage((hwnd), TVM_GETEDITCONTROL, 0, 0)
+
+
+#define TVM_GETVISIBLECOUNT (TV_FIRST + 16)
+#define TreeView_GetVisibleCount(hwnd) \
+ (UINT)SendMessage((hwnd), TVM_GETVISIBLECOUNT, 0, 0)
+
+
+#define TVM_HITTEST (TV_FIRST + 17)
+#define TreeView_HitTest(hwnd, lpht) \
+ (HTREEITEM)SendMessage((hwnd), TVM_HITTEST, 0, (LPARAM)(LPTV_HITTESTINFO)(lpht))
+
+
+typedef struct _TV_HITTESTINFO {
+ POINT pt;
+ UINT flags;
+ HTREEITEM hItem;
+} TV_HITTESTINFO, FAR *LPTV_HITTESTINFO;
+
+#define TVHT_NOWHERE 0x0001
+#define TVHT_ONITEMICON 0x0002
+#define TVHT_ONITEMLABEL 0x0004
+#define TVHT_ONITEM (TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON)
+#define TVHT_ONITEMINDENT 0x0008
+#define TVHT_ONITEMBUTTON 0x0010
+#define TVHT_ONITEMRIGHT 0x0020
+#define TVHT_ONITEMSTATEICON 0x0040
+
+#define TVHT_ABOVE 0x0100
+#define TVHT_BELOW 0x0200
+#define TVHT_TORIGHT 0x0400
+#define TVHT_TOLEFT 0x0800
+
+
+#define TVM_CREATEDRAGIMAGE (TV_FIRST + 18)
+#define TreeView_CreateDragImage(hwnd, hitem) \
+ (HIMAGELIST)SendMessage((hwnd), TVM_CREATEDRAGIMAGE, 0, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVM_SORTCHILDREN (TV_FIRST + 19)
+#define TreeView_SortChildren(hwnd, hitem, recurse) \
+ (BOOL)SendMessage((hwnd), TVM_SORTCHILDREN, (WPARAM)recurse, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVM_ENSUREVISIBLE (TV_FIRST + 20)
+#define TreeView_EnsureVisible(hwnd, hitem) \
+ (BOOL)SendMessage((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TVM_SORTCHILDRENCB (TV_FIRST + 21)
+#define TreeView_SortChildrenCB(hwnd, psort, recurse) \
+ (BOOL)SendMessage((hwnd), TVM_SORTCHILDRENCB, (WPARAM)recurse, \
+ (LPARAM)(LPTV_SORTCB)(psort))
+
+
+#define TVM_ENDEDITLABELNOW (TV_FIRST + 22)
+#define TreeView_EndEditLabelNow(hwnd, fCancel) \
+ (BOOL)SendMessage((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)fCancel, 0)
+
+
+#define TVM_GETISEARCHSTRINGA (TV_FIRST + 23)
+#define TVM_GETISEARCHSTRINGW (TV_FIRST + 64)
+
+#ifdef UNICODE
+#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGW
+#else
+#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGA
+#endif
+
+#define TreeView_GetISearchString(hwndTV, lpsz) \
+ (BOOL)SendMessage((hwndTV), TVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)lpsz)
+
+
+typedef int (CALLBACK *PFNTVCOMPARE)(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
+typedef struct _TV_SORTCB
+{
+ HTREEITEM hParent;
+ PFNTVCOMPARE lpfnCompare;
+ LPARAM lParam;
+} TV_SORTCB, FAR *LPTV_SORTCB;
+
+
+typedef struct _NM_TREEVIEWA {
+ NMHDR hdr;
+ UINT action;
+ TV_ITEMA itemOld;
+ TV_ITEMA itemNew;
+ POINT ptDrag;
+} NM_TREEVIEWA, FAR *LPNM_TREEVIEWA;
+
+typedef struct _NM_TREEVIEWW {
+ NMHDR hdr;
+ UINT action;
+ TV_ITEMW itemOld;
+ TV_ITEMW itemNew;
+ POINT ptDrag;
+} NM_TREEVIEWW, FAR *LPNM_TREEVIEWW;
+
+#ifdef UNICODE
+#define NM_TREEVIEW NM_TREEVIEWW
+#define LPNM_TREEVIEW LPNM_TREEVIEWW
+#else
+#define NM_TREEVIEW NM_TREEVIEWA
+#define LPNM_TREEVIEW LPNM_TREEVIEWA
+#endif
+
+#define TVN_SELCHANGINGA (TVN_FIRST-1)
+#define TVN_SELCHANGINGW (TVN_FIRST-50)
+#define TVN_SELCHANGEDA (TVN_FIRST-2)
+#define TVN_SELCHANGEDW (TVN_FIRST-51)
+
+#define TVC_UNKNOWN 0x0000
+#define TVC_BYMOUSE 0x0001
+#define TVC_BYKEYBOARD 0x0002
+
+#define TVN_GETDISPINFOA (TVN_FIRST-3)
+#define TVN_GETDISPINFOW (TVN_FIRST-52)
+#define TVN_SETDISPINFOA (TVN_FIRST-4)
+#define TVN_SETDISPINFOW (TVN_FIRST-53)
+
+#define TVIF_DI_SETITEM 0x1000
+
+typedef struct _TV_DISPINFOA {
+ NMHDR hdr;
+ TV_ITEMA item;
+} TV_DISPINFOA;
+
+typedef struct _TV_DISPINFOW {
+ NMHDR hdr;
+ TV_ITEMW item;
+} TV_DISPINFOW;
+
+#ifdef UNICODE
+# define TV_DISPINFO TV_DISPINFOW
+#else
+# define TV_DISPINFO TV_DISPINFOA
+#endif
+
+#define TVN_ITEMEXPANDINGA (TVN_FIRST-5)
+#define TVN_ITEMEXPANDINGW (TVN_FIRST-54)
+#define TVN_ITEMEXPANDEDA (TVN_FIRST-6)
+#define TVN_ITEMEXPANDEDW (TVN_FIRST-55)
+#define TVN_BEGINDRAGA (TVN_FIRST-7)
+#define TVN_BEGINDRAGW (TVN_FIRST-56)
+#define TVN_BEGINRDRAGA (TVN_FIRST-8)
+#define TVN_BEGINRDRAGW (TVN_FIRST-57)
+#define TVN_DELETEITEMA (TVN_FIRST-9)
+#define TVN_DELETEITEMW (TVN_FIRST-58)
+#define TVN_BEGINLABELEDITA (TVN_FIRST-10)
+#define TVN_BEGINLABELEDITW (TVN_FIRST-59)
+#define TVN_ENDLABELEDITA (TVN_FIRST-11)
+#define TVN_ENDLABELEDITW (TVN_FIRST-60)
+#define TVN_KEYDOWN (TVN_FIRST-12)
+
+typedef struct _TV_KEYDOWN {
+ NMHDR hdr;
+ WORD wVKey;
+ UINT flags;
+} TV_KEYDOWN;
+
+#ifdef UNICODE
+#define TVN_SELCHANGING TVN_SELCHANGINGW
+#define TVN_SELCHANGED TVN_SELCHANGEDW
+#define TVN_GETDISPINFO TVN_GETDISPINFOW
+#define TVN_SETDISPINFO TVN_SETDISPINFOW
+#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW
+#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW
+#define TVN_BEGINDRAG TVN_BEGINDRAGW
+#define TVN_BEGINRDRAG TVN_BEGINRDRAGW
+#define TVN_DELETEITEM TVN_DELETEITEMW
+#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW
+#define TVN_ENDLABELEDIT TVN_ENDLABELEDITW
+#else
+#define TVN_SELCHANGING TVN_SELCHANGINGA
+#define TVN_SELCHANGED TVN_SELCHANGEDA
+#define TVN_GETDISPINFO TVN_GETDISPINFOA
+#define TVN_SETDISPINFO TVN_SETDISPINFOA
+#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA
+#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA
+#define TVN_BEGINDRAG TVN_BEGINDRAGA
+#define TVN_BEGINRDRAG TVN_BEGINRDRAGA
+#define TVN_DELETEITEM TVN_DELETEITEMA
+#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA
+#define TVN_ENDLABELEDIT TVN_ENDLABELEDITA
+#endif
+
+#endif
+
+
+//====== TAB CONTROL ==========================================================
+
+#ifndef NOTABCONTROL
+
+#ifdef _WIN32
+
+#define WC_TABCONTROLA "SysTabControl32"
+#define WC_TABCONTROLW L"SysTabControl32"
+
+#ifdef UNICODE
+#define WC_TABCONTROL WC_TABCONTROLW
+#else
+#define WC_TABCONTROL WC_TABCONTROLA
+#endif
+
+#else
+#define WC_TABCONTROL "SysTabControl"
+#endif
+
+
+#define TCS_FORCEICONLEFT 0x0010
+#define TCS_FORCELABELLEFT 0x0020
+#define TCS_SHAREIMAGELISTS 0x0040
+#define TCS_TABS 0x0000
+#define TCS_BUTTONS 0x0100
+#define TCS_SINGLELINE 0x0000
+#define TCS_MULTILINE 0x0200
+#define TCS_RIGHTJUSTIFY 0x0000
+#define TCS_FIXEDWIDTH 0x0400
+#define TCS_RAGGEDRIGHT 0x0800
+#define TCS_FOCUSONBUTTONDOWN 0x1000
+#define TCS_OWNERDRAWFIXED 0x2000
+#define TCS_TOOLTIPS 0x4000
+#define TCS_FOCUSNEVER 0x8000
+
+
+#define TCM_FIRST 0x1300
+
+#define TCM_GETBKCOLOR (TCM_FIRST + 0)
+#define TabCtrl_GetBkColor(hwnd) \
+ (COLORREF)SendMessage((hwnd), TCM_GETBKCOLOR, 0, 0L)
+
+
+#define TCM_SETBKCOLOR (TCM_FIRST + 1)
+#define TabCtrl_SetBkColor(hwnd, clrBk) \
+ (BOOL)SendMessage((hwnd), TCM_SETBKCOLOR, 0, (LPARAM)(COLORREF)(clrBk))
+
+
+#define TCM_GETIMAGELIST (TCM_FIRST + 2)
+#define TabCtrl_GetImageList(hwnd) \
+ (HIMAGELIST)SendMessage((hwnd), TCM_GETIMAGELIST, 0, 0L)
+
+
+#define TCM_SETIMAGELIST (TCM_FIRST + 3)
+#define TabCtrl_SetImageList(hwnd, himl) \
+ (HIMAGELIST)SendMessage((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(UINT)(HIMAGELIST)(himl))
+
+
+#define TCM_GETITEMCOUNT (TCM_FIRST + 4)
+#define TabCtrl_GetItemCount(hwnd) \
+ (int)SendMessage((hwnd), TCM_GETITEMCOUNT, 0, 0L)
+
+
+
+#define TCIF_TEXT 0x0001
+#define TCIF_IMAGE 0x0002
+#define TCIF_PARAM 0x0008
+
+
+typedef struct _TC_ITEMHEADERA
+{
+ UINT mask;
+ UINT lpReserved1;
+ UINT lpReserved2;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+} TC_ITEMHEADERA;
+
+typedef struct _TC_ITEMHEADERW
+{
+ UINT mask;
+ UINT lpReserved1;
+ UINT lpReserved2;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+} TC_ITEMHEADERW;
+
+#ifdef UNICODE
+#define TC_ITEMHEADER TC_ITEMHEADERW
+#else
+#define TC_ITEMHEADER TC_ITEMHEADERA
+#endif
+
+
+typedef struct _TC_ITEMA
+{
+ UINT mask;
+ UINT lpReserved1;
+ UINT lpReserved2;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+
+ LPARAM lParam;
+} TC_ITEMA;
+
+typedef struct _TC_ITEMW
+{
+ UINT mask;
+ UINT lpReserved1;
+ UINT lpReserved2;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+
+ LPARAM lParam;
+} TC_ITEMW;
+
+#ifdef UNICODE
+#define TC_ITEM TC_ITEMW
+#else
+#define TC_ITEM TC_ITEMA
+#endif
+
+
+#define TCM_GETITEMA (TCM_FIRST + 5)
+#define TCM_GETITEMW (TCM_FIRST + 60)
+
+#ifdef UNICODE
+#define TCM_GETITEM TCM_GETITEMW
+#else
+#define TCM_GETITEM TCM_GETITEMA
+#endif
+
+#define TabCtrl_GetItem(hwnd, iItem, pitem) \
+ (BOOL)SendMessage((hwnd), TCM_GETITEM, (WPARAM)(int)iItem, (LPARAM)(TC_ITEM FAR*)(pitem))
+
+
+#define TCM_SETITEMA (TCM_FIRST + 6)
+#define TCM_SETITEMW (TCM_FIRST + 61)
+
+#ifdef UNICODE
+#define TCM_SETITEM TCM_SETITEMW
+#else
+#define TCM_SETITEM TCM_SETITEMA
+#endif
+
+#define TabCtrl_SetItem(hwnd, iItem, pitem) \
+ (BOOL)SendMessage((hwnd), TCM_SETITEM, (WPARAM)(int)iItem, (LPARAM)(TC_ITEM FAR*)(pitem))
+
+
+#define TCM_INSERTITEMA (TCM_FIRST + 7)
+#define TCM_INSERTITEMW (TCM_FIRST + 62)
+
+#ifdef UNICODE
+#define TCM_INSERTITEM TCM_INSERTITEMW
+#else
+#define TCM_INSERTITEM TCM_INSERTITEMA
+#endif
+
+#define TabCtrl_InsertItem(hwnd, iItem, pitem) \
+ (int)SendMessage((hwnd), TCM_INSERTITEM, (WPARAM)(int)iItem, (LPARAM)(const TC_ITEM FAR*)(pitem))
+
+
+#define TCM_DELETEITEM (TCM_FIRST + 8)
+#define TabCtrl_DeleteItem(hwnd, i) \
+ (BOOL)SendMessage((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L)
+
+
+#define TCM_DELETEALLITEMS (TCM_FIRST + 9)
+#define TabCtrl_DeleteAllItems(hwnd) \
+ (BOOL)SendMessage((hwnd), TCM_DELETEALLITEMS, 0, 0L)
+
+
+#define TCM_GETITEMRECT (TCM_FIRST + 10)
+#define TabCtrl_GetItemRect(hwnd, i, prc) \
+ (BOOL)SendMessage((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT FAR*)(prc))
+
+
+#define TCM_GETCURSEL (TCM_FIRST + 11)
+#define TabCtrl_GetCurSel(hwnd) \
+ (int)SendMessage((hwnd), TCM_GETCURSEL, 0, 0)
+
+
+#define TCM_SETCURSEL (TCM_FIRST + 12)
+#define TabCtrl_SetCurSel(hwnd, i) \
+ (int)SendMessage((hwnd), TCM_SETCURSEL, (WPARAM)i, 0)
+
+
+#define TCHT_NOWHERE 0x0001
+#define TCHT_ONITEMICON 0x0002
+#define TCHT_ONITEMLABEL 0x0004
+#define TCHT_ONITEM (TCHT_ONITEMICON | TCHT_ONITEMLABEL)
+
+
+typedef struct _TC_HITTESTINFO
+{
+ POINT pt;
+ UINT flags;
+} TC_HITTESTINFO, FAR * LPTC_HITTESTINFO;
+
+
+#define TCM_HITTEST (TCM_FIRST + 13)
+#define TabCtrl_HitTest(hwndTC, pinfo) \
+ (int)SendMessage((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO FAR*)(pinfo))
+
+
+#define TCM_SETITEMEXTRA (TCM_FIRST + 14)
+#define TabCtrl_SetItemExtra(hwndTC, cb) \
+ (BOOL)SendMessage((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L)
+
+
+#define TCM_ADJUSTRECT (TCM_FIRST + 40)
+#define TabCtrl_AdjustRect(hwnd, bLarger, prc) \
+ (void)SendMessage(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)bLarger, (LPARAM)(RECT FAR *)prc)
+
+
+#define TCM_SETITEMSIZE (TCM_FIRST + 41)
+#define TabCtrl_SetItemSize(hwnd, x, y) \
+ (DWORD)SendMessage((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y))
+
+
+#define TCM_REMOVEIMAGE (TCM_FIRST + 42)
+#define TabCtrl_RemoveImage(hwnd, i) \
+ (void)SendMessage((hwnd), TCM_REMOVEIMAGE, i, 0L)
+
+
+#define TCM_SETPADDING (TCM_FIRST + 43)
+#define TabCtrl_SetPadding(hwnd, cx, cy) \
+ (void)SendMessage((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
+
+
+#define TCM_GETROWCOUNT (TCM_FIRST + 44)
+#define TabCtrl_GetRowCount(hwnd) \
+ (int)SendMessage((hwnd), TCM_GETROWCOUNT, 0, 0L)
+
+
+#define TCM_GETTOOLTIPS (TCM_FIRST + 45)
+#define TabCtrl_GetToolTips(hwnd) \
+ (HWND)SendMessage((hwnd), TCM_GETTOOLTIPS, 0, 0L)
+
+
+#define TCM_SETTOOLTIPS (TCM_FIRST + 46)
+#define TabCtrl_SetToolTips(hwnd, hwndTT) \
+ (void)SendMessage((hwnd), TCM_SETTOOLTIPS, (WPARAM)hwndTT, 0L)
+
+
+#define TCM_GETCURFOCUS (TCM_FIRST + 47)
+#define TabCtrl_GetCurFocus(hwnd) \
+ (int)SendMessage((hwnd), TCM_GETCURFOCUS, 0, 0)
+
+#define TCM_SETCURFOCUS (TCM_FIRST + 48)
+#define TabCtrl_SetCurFocus(hwnd, i) \
+ SendMessage((hwnd),TCM_SETCURFOCUS, i, 0)
+
+
+#define TCN_KEYDOWN (TCN_FIRST - 0)
+typedef struct _TC_KEYDOWN
+{
+ NMHDR hdr;
+ WORD wVKey;
+ UINT flags;
+} TC_KEYDOWN;
+
+#define TCN_SELCHANGE (TCN_FIRST - 1)
+#define TCN_SELCHANGING (TCN_FIRST - 2)
+
+#endif
+
+
+//====== ANIMATE CONTROL ======================================================
+
+#ifndef NOANIMATE
+
+#ifdef _WIN32
+
+#define ANIMATE_CLASSW L"SysAnimate32"
+#define ANIMATE_CLASSA "SysAnimate32"
+
+#ifdef UNICODE
+#define ANIMATE_CLASS ANIMATE_CLASSW
+#else
+#define ANIMATE_CLASS ANIMATE_CLASSA
+#endif
+
+#define ACS_CENTER 0x0001
+#define ACS_TRANSPARENT 0x0002
+#define ACS_AUTOPLAY 0x0004
+
+
+#define ACM_OPENA (WM_USER+100)
+#define ACM_OPENW (WM_USER+103)
+
+#ifdef UNICODE
+#define ACM_OPEN ACM_OPENW
+#else
+#define ACM_OPEN ACM_OPENA
+#endif
+
+#define ACM_PLAY (WM_USER+101)
+#define ACM_STOP (WM_USER+102)
+
+
+#define ACN_START 1
+#define ACN_STOP 2
+
+
+#define Animate_Create(hwndP, id, dwStyle, hInstance) \
+ CreateWindow(ANIMATE_CLASS, NULL, \
+ dwStyle, 0, 0, 0, 0, hwndP, (HMENU)(id), hInstance, NULL)
+
+#define Animate_Open(hwnd, szName) (BOOL)SendMessage(hwnd, ACM_OPEN, 0, (LPARAM)(LPTSTR)(szName))
+#define Animate_Play(hwnd, from, to, rep) (BOOL)SendMessage(hwnd, ACM_PLAY, (WPARAM)(UINT)(rep), (LPARAM)MAKELONG(from, to))
+#define Animate_Stop(hwnd) (BOOL)SendMessage(hwnd, ACM_STOP, 0, 0)
+#define Animate_Close(hwnd) Animate_Open(hwnd, NULL)
+#define Animate_Seek(hwnd, frame) Animate_Play(hwnd, frame, frame, 1)
+#endif
+
+#endif
+
+
+#endif // (WINVER >= 0x0400)
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _WIN32
+#include <poppack.h>
+#endif
+
+#endif
+
+#endif
diff --git a/public/sdk/inc/mfc30/l.deu/afxdb.rc b/public/sdk/inc/mfc30/l.deu/afxdb.rc
new file mode 100644
index 000000000..76e50446a
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.deu/afxdb.rc
@@ -0,0 +1,83 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Der Verbindungsversuch zur Datenquelle ist gescheitert."
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Datensatzmenge unterstützt nur Vorwärtsbewegung."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Der Versuch, eine Tabelle zu öffnen, ist fehlgeschlagen, da am angegebenen Ort keine Spalten abgerufen werden konnten."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Von einer Abfrage wurden unerwartete Spaltendatentypen zurückgegeben."
+ AFX_IDP_SQL_ILLEGAL_MODE "Der Versuch zu aktualisieren oder zu löschen ist fehlgeschlagen."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Es wurden mehrere Zeilen aktualisiert."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operation ist fehlgeschlagen; es gibt keinen aktuellen Datensatz"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Es waren keine Zeilen von der Aktualisierungs- oder Löschoperation betroffen."
+ AFX_IDP_SQL_RECORDSET_READONLY "Datensatzmenge kann nur gelesen werden."
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "MFC LongBinary Datenmodell wird vom ODBC Treiber nicht unterstützt."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Der Versuch, die benötigte Komponente ODBC32.DLL zu laden, ist fehlgeschlagen."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Der ODBC-Treiber unterstützt keine Dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Statische ODBC-Cursors werden zur Unterstützung von Schnappschüssen benötigt."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Der ODBC-Treiber ist inkompatibel zu den MFC-Datenbankklassen (API_CONFORMANCE >= SQL_OAC_LEVEL1 benötigt)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Der ODBC-Treiber ist inkompatibel zu den MFC-Datenbankklassen (SQL_CONFORMANCE >= SQL_OSC_MINIMUM benötigt)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Es wurde versucht, hinter das Ende oder vor den Anfang der Daten zu gelangen."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Ein Treiber gemäß ODBC Level 2 wird benötigt."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Positionierte Aktualisierungen werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Der angeforderte Sperrmodus wird nicht unterstützt."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Daten abgeschnitten."
+ AFX_IDP_SQL_ROW_FETCH
+ "Fehler beim Auslesen des Datensatzes."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Ein benötigter ODBC-Einsprungspunkt konnte nicht gefunden werden. Überprüfen Sie, ob OBDC korrekt installiert ist."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Auffrischen oder Löschen versagte."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc30/l.deu/afxolecl.rc b/public/sdk/inc/mfc30/l.deu/afxolecl.rc
new file mode 100644
index 000000000..aa8354c66
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.deu/afxolecl.rc
@@ -0,0 +1,60 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+#include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Warnung: Unerwartetes statisches Objekt."
+ AFX_IDP_FAILED_TO_CONNECT "Der Verbindungsversuch ist fehlgeschlagen.\nDie Verbindung ist vielleicht unterbrochen."
+ AFX_IDP_SERVER_BUSY "Der Befehl kann nicht verarbeitet werden, weil der Server beschäftigt ist."
+ AFX_IDP_BAD_VERB "Die Ausführung der Server-Operation ist fehlgeschlagen."
+ AFX_IDP_FAILED_TO_LAUNCH "Die Server-Anwendung konnte nicht gestartet werden."
+ AFX_IDS_APP_TITLE_INPLACE "%1 in %2"
+ AFX_IDS_UPDATING_ITEMS "Aktualisiere OLE-Objekte."
+ AFX_IDP_FAILED_TO_CONVERT "Das OLE-Objekt konnte nicht umgewandelt werden."
+ AFX_IDP_ASK_TO_DISCARD "OLE-Objekte können nicht beim Beenden von Windows gespeichert werden!\nSollen alle Änderungen an %1 verworfen werden?"
+
+ AFX_IDS_METAFILE_FORMAT "Bild (Metadatei)\nein Bild"
+ AFX_IDS_DIB_FORMAT "Geräteunabhängige Bitmap\neine geräteunabhängige Bitmap"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\neine Bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc30/l.deu/afxolesv.rc b/public/sdk/inc/mfc30/l.deu/afxolesv.rc
new file mode 100644
index 000000000..5533423ed
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.deu/afxolesv.rc
@@ -0,0 +1,53 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "%1 vor dem Fortfahren aktualisieren?"
+ AFX_IDP_FAILED_TO_UPDATE, "Der Client konnte nicht aktualisiert werden."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Die Registrierung ist fehlgeschlagen. Die OLE-Funktionen arbeiten u.U. nicht richtig."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Die Aktualisierung der Systemregistrierung ist fehlgeschlagen.\nVersuchen Sie REGEDIT zu benutzen."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Beenden und zu %1 zurückkehren"
+ AFX_IDS_UPDATE_MENU, "&Aktualisiere %1"
+ AFX_IDS_SAVEFILECOPY, "Kopie speichern unter"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc30/l.deu/afxprint.rc b/public/sdk/inc/mfc30/l.deu/afxprint.rc
new file mode 100644
index 000000000..a2dbe7c88
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.deu/afxprint.rc
@@ -0,0 +1,130 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Drucke",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "auf",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Abbrechen",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Abbrechen",IDCANCEL,46,45,40,15
+ CTEXT "Drücken Sie Cmd-. um abzubrechen.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Vorherige",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Ver&größern",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Ver&kleinern",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14" and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Vorherige",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ver&größern",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Ver&kleinern",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9" and 12" screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Vorh.",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Größer",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Kleiner",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "auf %1" // for print output
+ AFX_IDS_ONEPAGE, "&Eine Seite" // for preview button
+ AFX_IDS_TWOPAGE, "&Zwei Seiten" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Seite %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Page %u\nPages %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Printer Files (*.prn)|*.prn|All Files (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Print to File" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "to %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc30/l.deu/afxres.aps b/public/sdk/inc/mfc30/l.deu/afxres.aps
new file mode 100644
index 000000000..a21408b2f
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.deu/afxres.aps
Binary files differ
diff --git a/public/sdk/inc/mfc30/l.deu/afxres.rc b/public/sdk/inc/mfc30/l.deu/afxres.rc
new file mode 100644
index 000000000..56eeb46f1
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.deu/afxres.rc
@@ -0,0 +1,177 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE
+BEGIN
+ AFX_IDS_OPENFILE, "Öffnen"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Speichern unter"
+ AFX_IDS_ALLFILTER, "Alle Dateien (*.*)"
+ AFX_IDS_UNTITLED, "Unbenannt"
+#else
+ AFX_IDS_SAVEFILE, "Dokument speichern unter:"
+ AFX_IDS_ALLFILTER, "Alle Dateien"
+ AFX_IDS_UNTITLED, "unbenannt"
+ AFX_IDS_ABOUT, "Info "
+#endif
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "Ungültiger Dateiname."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Das Öffnen des Dokuments ist fehlgeschlagen."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Das Speichern des Dokuments ist fehlgeschlagen."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Änderungen in %1 speichern?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Änderungen im %1-Dokument \042%2\042 speichern?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Die Erzeugung eines leeren Dokuments ist fehlgeschlagen."
+ AFX_IDP_FILE_TOO_LARGE, "Die Datei ist zu groß zum Öffnen."
+ AFX_IDP_FAILED_TO_START_PRINT, "Der Druckauftrag konnte nicht gestartet werden."
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Die Hilfe konnte nicht aufgerufen werden."
+ AFX_IDP_INTERNAL_FAILURE, "Interner Anwendungsfehler."
+ AFX_IDP_COMMAND_FAILURE, "Befehl fehlgeschlagen."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Nicht genügend Speicher vorhanden, um Operation auszuführen."
+ AFX_IDP_GET_NOT_SUPPORTED, "Lesen ist wegen der Eigenschaft Nur-Schreiben nicht möglich."
+ AFX_IDP_SET_NOT_SUPPORTED, "Schreiben ist wegen der Eigenschaft Nur-Lesen nicht möglich."
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "Unerwartetes Dateiformat."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nDiese Datei konnte nicht gefunden werden.\nÜberprüfen Sie, ob der korrekte Pfad und Dateiname angegeben wurde."
+ AFX_IDP_FAILED_DISK_FULL "Das Ziellaufwerk ist voll."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Die Datei \042%1\042 konnte nicht gefunden werden. Überprüfen Sie, ob der korrekte Dateiname angegeben wurde."
+ AFX_IDP_FAILED_DISK_FULL "Das Zielvolume ist voll."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Lesen von %1 ist nicht möglich, da von jemand Anderem geöffnet."
+ AFX_IDP_FAILED_ACCESS_WRITE "Schreiben auf %1 ist nicht möglich, da schreibgeschützt oder von jemand Anderem geöffnet."
+ AFX_IDP_FAILED_IO_ERROR_READ "Beim Lesen von %1 ist ein unerwarteter Fehler aufgetreten."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Beim Schreiben von %1 ist ein unerwarteter Fehler aufgetreten."
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Geben Sie bitte eine ganze Zahl ein."
+ AFX_IDP_PARSE_REAL, "Geben Sie bitte ein Zahl ein."
+ AFX_IDP_PARSE_INT_RANGE, "Geben Sie bitte eine ganze Zahl zwischen %1 und %2 ein."
+ AFX_IDP_PARSE_REAL_RANGE, "Geben Sie bitte eine Zahl zwischen %1 und %2 ein."
+ AFX_IDP_PARSE_STRING_SIZE, "Geben Sie bitte nicht mehr als %1 Zeichen ein."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Wählen Sie bitte eine Schaltfläche."
+ AFX_IDP_PARSE_BYTE, "Bitte geben Sie einen ganzzahligen Wert zwischen 0 und 255 ein."
+ AFX_IDP_PARSE_UINT, "Bitte geben Sie einen positiven, ganzzahligen Wert ein."
+
+#ifndef _AFX_NO_PROPSHEET_RESOURCES
+ // Property Sheet button strings (Note: 50 is the X-axis button size)
+ AFX_IDS_PS_OK "OK\n50"
+ AFX_IDS_PS_CANCEL "Abbrechen\n50"
+ AFX_IDS_PS_APPLY_NOW "&Anwenden\n50"
+ AFX_IDS_PS_HELP "&Hilfe\n50"
+ AFX_IDS_PS_CLOSE "Schließen"
+#endif //!_AFX_NO_PROPSHEET_RESOURCES
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Verknupft: %s"
+ AFX_IDS_UNKNOWNTYPE "Unbekannter Typ"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nRegistrierung des Dokuments nicht möglich.\nDas Dokument ist vielleicht schon geöffnet."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Registrierung des Dokuments \042%1\042 nicht möglich.\nDas Dokument ist vielleicht schon geöffnet."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Mail System-Unterstützung kann nicht geladen werden."
+ AFX_IDP_INVALID_MAPI_DLL "Mail System-DLL ist ungültig."
+ AFX_IDP_FAILED_MAPI_SEND "Nachricht Senden versagte beim Senden der Nachricht."
+#endif //!_AFX_NO_MAPI_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Neu"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Neu",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Cancel",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Help",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Property Sheet Bitmaps
+
+#ifndef _AFX_NO_PROPERTY_RESOURCES
+AFX_IDB_SCROLL BITMAP DISCARDABLE "res\\psscroll.bmp"
+#endif //!_AFX_NO_PROPERTY_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/l.fra/afxdb.rc b/public/sdk/inc/mfc30/l.fra/afxdb.rc
new file mode 100644
index 000000000..69ec3e8d0
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.fra/afxdb.rc
@@ -0,0 +1,83 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Tentative infructueuse de connexion à la source de données"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Le jeu d'enregistrements n'accepte que les déplacements vers l'avant."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Tentative infructueuse d'ouverture de table - colonnes à extraire introuvables à l'endroit spécifié."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "La requête a renvoyé des types de données de colonnes inattendus."
+ AFX_IDP_SQL_ILLEGAL_MODE "Tentative infructueuse de Mise à jour ou de Suppression."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Plusieurs lignes ont été mises à jour."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "L'opération a échoué, pas d'enregistrement en cours"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Aucune ligne n'a été affectée par l'opération de mise à jour ou de suppression."
+ AFX_IDP_SQL_RECORDSET_READONLY "Le jeu d'enregistrements est en lecture seule"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "Le pilote ODBC ne gère pas le modèle de donnée MFC LongBinary."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Tentative infructueuse de chargement de l'élément ODBC32.DLL."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Le gestionnaire ODBC ne prend pas en charge les feuilles de réponses dynamiques."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Curseurs ODBC statiques requis pour la prise en charge des instantanés."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Gestionnaire ODBC incompatible avec les classes de bases de données MFC (API_CONFORMANCE >= SQL_OAC_LEVEL1 requis)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Gestionnaire ODBC incompatible avec les classes de bases de données MFC (SQL_CONFORMANCE >= SQL_OSC_MINIMUM requis)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Tentative de défilement après la fin ou avant le début des données."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Feuilles de réponses dynamiques non prises en charge par le gestionnaire ODBC."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Gestionnaire ODBC conforme Niveau 2 (Level 2) requis."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Les mises à jour programmées ne sont pas prises en charge par le gestionnaire ODBC."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Le mode de verrouillage requis n'est pas accepté."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Données tronquées."
+ AFX_IDP_SQL_ROW_FETCH
+ "Erreur pendant la recherhe d'un enregistrement."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Un point d'entrée ODBC requis est introuvable. Vérifiez qu'ODBC est correctement installé."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Une Mise à jour ou Suppression a echouée."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc30/l.fra/afxolecl.rc b/public/sdk/inc/mfc30/l.fra/afxolecl.rc
new file mode 100644
index 000000000..94657e1e3
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.fra/afxolecl.rc
@@ -0,0 +1,60 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+#include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Avertissement : Objet statique inattendu."
+ AFX_IDP_FAILED_TO_CONNECT "La connection a échoué. \nLa liaison est peut être rompue."
+ AFX_IDP_SERVER_BUSY "Impossible d'exécuter la commande, le serveur est occupé."
+ AFX_IDP_BAD_VERB "Erreur lors de l'exécution de l'opération par l'application serveur."
+ AFX_IDP_FAILED_TO_LAUNCH "Erreur lors du démarrage d'une application serveur."
+ AFX_IDS_APP_TITLE_INPLACE "%1 dans %2"
+ AFX_IDS_UPDATING_ITEMS "Mise à jour des objets OLE"
+ AFX_IDP_FAILED_TO_CONVERT "La conversion de l'objet OLE a échoué."
+ AFX_IDP_ASK_TO_DISCARD "Impossible d'enregistrer des objets OLE lorsque vous quittez Windows!\nSupprimer toutes les modifications apportées à %1?"
+
+ AFX_IDS_METAFILE_FORMAT "Image (métafichier)\na image"
+ AFX_IDS_DIB_FORMAT "Image en mode point indépendante du périphérique\na image en mode point indépendante du périphérique"
+ AFX_IDS_BITMAP_FORMAT "Image en mode point\na image en mode point"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc30/l.fra/afxolesv.rc b/public/sdk/inc/mfc30/l.fra/afxolesv.rc
new file mode 100644
index 000000000..ef54b5d8f
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.fra/afxolesv.rc
@@ -0,0 +1,53 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Mettre à jour %1 avant de continuer?"
+ AFX_IDP_FAILED_TO_UPDATE, "Impossible de mettre à jour le client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "L'enregistrement a échoué. Il se peut que les fonctions OLE ne fonctionnent pas correctement."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "La mise à jour du registre du système a échoué. \nEssayez d'utiliser REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 dans %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Quitter et retourner à %1"
+ AFX_IDS_UPDATE_MENU, "Mise à jo&ur de %1"
+ AFX_IDS_SAVEFILECOPY, "Enregistrer la copie sous"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc30/l.fra/afxprint.rc b/public/sdk/inc/mfc30/l.fra/afxprint.rc
new file mode 100644
index 000000000..6b6b38b34
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.fra/afxprint.rc
@@ -0,0 +1,130 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Impression",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "sur",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Annuler",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Annuler",IDCANCEL,46,45,40,15
+ CTEXT "Appuyer sur Cmd-. pour annuler l'impression.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Suivante",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Précédente",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Zoom ava&nt",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Zoom a&rrière",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14" and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Suivante",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Précédente",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ava&nt",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "A&rrière",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9" and 12" screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Suivant",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Précédent",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Avant",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "A&rrière",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "on %1" // for print output
+ AFX_IDS_ONEPAGE, "&Une page" // for preview button
+ AFX_IDS_TWOPAGE, "&Deux pages" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Page %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Page %u\nPages %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Printer Files (*.prn)|*.prn|All Files (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Print to File" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "to %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc30/l.fra/afxres.rc b/public/sdk/inc/mfc30/l.fra/afxres.rc
new file mode 100644
index 000000000..a815d401c
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.fra/afxres.rc
@@ -0,0 +1,177 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE
+BEGIN
+ AFX_IDS_OPENFILE, "Ouvrir"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Enregistrer sous"
+ AFX_IDS_ALLFILTER, "Tous les fichiers (*.*)"
+ AFX_IDS_UNTITLED, "Sans nom"
+#else
+ AFX_IDS_SAVEFILE, "Enregistrer le document sous :"
+ AFX_IDS_ALLFILTER, "Tous les fichiers"
+ AFX_IDS_UNTITLED, "sans nom"
+ AFX_IDS_ABOUT, "A propos de"
+#endif
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "Nom de fichier incorrect."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "L'ouverture du document a échoué."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "L'enregistrement du document a échoué."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Enregistrer les modifications apportées à %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Enregistrer les modifications apportées au document %1 \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "La création d'un document vide a échoué."
+ AFX_IDP_FILE_TOO_LARGE, "Le fichier est trop volumineux pour être ouvert."
+ AFX_IDP_FAILED_TO_START_PRINT, "Impossible de lancer l'impression."
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Le démarrage de l'aide a échoué."
+ AFX_IDP_INTERNAL_FAILURE, "Erreur d'application interne."
+ AFX_IDP_COMMAND_FAILURE, "La commande a échoué."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Mémoire insuffisante pour exécuter l'opération."
+ AFX_IDP_GET_NOT_SUPPORTED, "Impossible de lire une propriété en écriture seule."
+ AFX_IDP_SET_NOT_SUPPORTED, "Impossible d'écrire une propriété en lecture seule."
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "Format de fichier inattendu."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nImpossible de trouver ce fichier. Vérifiez que le chemin et le nom du fichier sont corrects."
+ AFX_IDP_FAILED_DISK_FULL "Le lecteur de disque de destination est plein."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Impossible de trouver le fichier \042%1.\042. Vérifiez que le nom du fichier est correct."
+ AFX_IDP_FAILED_DISK_FULL "Le disque de destination est plein."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Impossible de lire à partir de %1, il est en cours d'utilisation."
+ AFX_IDP_FAILED_ACCESS_WRITE "Impossible d'écrire sur %1, il est en lecture seule ou en cours d'utilisation."
+ AFX_IDP_FAILED_IO_ERROR_READ "Une erreur inattendue s'est produite lors de la lecture de %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Une erreur inattendue s'est produite lors de l'écriture sur %1."
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Tapez un nombre entier."
+ AFX_IDP_PARSE_REAL, "Tapez un nombre."
+ AFX_IDP_PARSE_INT_RANGE, "Tapez un nombre entier compris entre %1 et %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Tapez un nombre compris entre %1 et %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Tapez %1 caractères au maximum."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Choisissez un bouton."
+ AFX_IDP_PARSE_BYTE, "Veuillez entrer un entier entre 0 et 255."
+ AFX_IDP_PARSE_UINT, "Veuillez entrer un entier positif."
+
+#ifndef _AFX_NO_PROPSHEET_RESOURCES
+ // Property Sheet button strings (Note: 50 is the X-axis button size)
+ AFX_IDS_PS_OK "OK\n50"
+ AFX_IDS_PS_CANCEL "Annuler\n50"
+ AFX_IDS_PS_APPLY_NOW "&Appliquer\n50"
+ AFX_IDS_PS_HELP "&Aide\n50"
+ AFX_IDS_PS_CLOSE "Fermer"
+#endif //!_AFX_NO_PROPSHEET_RESOURCES
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s lié(e)"
+ AFX_IDS_UNKNOWNTYPE "Type inconnu"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nImpossible d'enregistrer le document. \nLe document est peut-être déjà ouvert."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Impossible d'enregistrer le document \042%1.\042. Le document est peut-être déjà ouvert."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Impossible de charger le système de support du courrier."
+ AFX_IDP_INVALID_MAPI_DLL "La DLL système du courrier n'est aps valide."
+ AFX_IDP_FAILED_MAPI_SEND "Le système de courrier n'a pas pu envoyer le message."
+#endif //!_AFX_NO_MAPI_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Nouveau"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nouveau",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Annuler",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Aide",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Property Sheet Bitmaps
+
+#ifndef _AFX_NO_PROPERTY_RESOURCES
+AFX_IDB_SCROLL BITMAP DISCARDABLE "res\\psscroll.bmp"
+#endif //!_AFX_NO_PROPERTY_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/l.jpn/afxdb.rc b/public/sdk/inc/mfc30/l.jpn/afxdb.rc
new file mode 100644
index 000000000..426c881d3
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.jpn/afxdb.rc
@@ -0,0 +1,83 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1993 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "ÃÞ°À¿°½‚Ö‚ÌÚ‘±‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Úº°ÄÞ¾¯Ä‚ł̈ړ®‚͇•ûŒü‚Ì‚Ý»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "ŒŸõ‚·‚é—ñ‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢‚½‚ßAðÌÞÙ‚ðŠJ‚¯‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "¸´Ø°‚Å—\Šú‚¹‚Ê—ñ‚ÌÃÞ°À À²Ìß‚ª•Ô‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_ILLEGAL_MODE "XV‚Ü‚½‚Í휂Ɏ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "•¡”‚Ìs‚ªXV‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_NO_CURRENT_RECORD "¶ÚÝÄ Úº°ÄÞ‚ª‚È‚¢‚½‚ßA‘€ì‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "XV‚Ü‚½‚Í휑€ì‚ÌŒ‹‰ÊA•ÏX‚ð‚¤‚¯‚½s‚Í‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_RECORDSET_READONLY "Úº°ÄÞ¾¯Ä‚Íã‘‚«‹ÖŽ~‚Å‚·B"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC ÄÞײÊÞ‚Í MFC LongBinary ÃÞ°À ÓÃÞÙ‚ðˆµ‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "ODBC32.DLL ‚ÌÛ°ÄÞ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC ÄÞײÊÞ‚ÍÀ޲ž¯Ä‚ðˆµ‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ODBC ½À诸 ¶°¿Ù‚ɂͽůÌß¼®¯Ä‚Ì»Îß°Ä‚ª•K—v‚Å‚·B"
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC ÄÞײÊÞ‚Í MFC ÃÞ°ÀÍÞ°½ ¸×½‚ƌ݊·«‚ª‚ ‚è‚Ü‚¹‚ñ (API_CONFORMANCE >= SQL_OAC_LEVEL1 ‚ª•K—v‚Å‚·)B"
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC ÄÞײÊÞ‚Í MFC ÃÞ°ÀÍÞ°½ ¸×½‚ƌ݊·«‚ª‚ ‚è‚Ü‚¹‚ñ (SQL_CONFORMANCE >= SQL_OSC_MINIMUM ‚ª•K—v‚Å‚·)B"
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "ÃÞ°À‚ÌI’[‚Ü‚½‚Í擪‚ð’´‚¦‚Ľ¸Û°Ù‚µ‚悤‚Æ‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "À޲ž¯Ä‚Í ODBC ÄÞײÊÞ‚Å»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC Level 2 ‚É€‹’‚µ‚½ÄÞײÊÞ‚ª•K—v‚Å‚·B"
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "“Á’è‚̈ʒu‚ÌXV‚Í ODBC ÄÞײÊÞ‚Å»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "—v‹‚µ‚½Û¯¸ Ó°ÄÞ‚Í»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "ÃÞ°À‚ÍØ‚èŽÌ‚Ä‚ç‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_ROW_FETCH
+ "Úº°ÄÞ‚ÌŒŸõ´×°B"
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "—v‹‚µ‚½ ODBC ´ÝÄØ° Îß²ÝÄ‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñBODBC ÄÞײÊÞ‚ª³‚µ‚­²Ý½Ä°Ù‚³‚ꂽ‚©Šm”F‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "XV–”‚Í휑€ì‚ÍŽ¸”s‚µ‚Ü‚µ‚½B"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc30/l.jpn/afxolecl.rc b/public/sdk/inc/mfc30/l.jpn/afxolecl.rc
new file mode 100644
index 000000000..2e7d937d1
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.jpn/afxolecl.rc
@@ -0,0 +1,60 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+#include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Œx: —\Šú‚µ‚È‚¢½À诸 µÌÞ¼Þª¸Ä‚Å‚·B"
+ AFX_IDP_FAILED_TO_CONNECT "Ú‘±‚ÉŽ¸”s‚µ‚Ü‚µ‚½B\nØݸ‚ª‰ó‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_SERVER_BUSY "ºÏÝÄÞ‚ðŽÀs‚Å‚«‚Ü‚¹‚ñB»°ÊÞ°‚ªËÞ¼Þ°‚Å‚·B"
+ AFX_IDP_BAD_VERB "»°ÊÞ°‚Ì‘€ì‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_FAILED_TO_LAUNCH "»°ÊÞ° ±Ìßع°¼®Ý‚ð‹N“®‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDS_APP_TITLE_INPLACE "%2 “à‚Ì %1"
+ AFX_IDS_UPDATING_ITEMS "OLE µÌÞ¼Þª¸Ä‚ðXV‚µ‚Ä‚¢‚Ü‚·"
+ AFX_IDP_FAILED_TO_CONVERT "OLE µÌÞ¼Þª¸Ä‚Ì•ÏŠ·‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ASK_TO_DISCARD "Windows ‚ÌI—¹Žž‚É OLE µÌÞ¼Þª¸Ä‚ð•Û‘¶‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB\n%1 ‚Ö‚Ì‚·‚ׂĂ̕ÏX‚ð”pŠü‚µ‚Ü‚·‚©H"
+
+ AFX_IDS_METAFILE_FORMAT "Ë߸Á¬ (ÒÀ̧²Ù)\nË߸Á¬"
+ AFX_IDS_DIB_FORMAT "ÃÞÊÞ²½‚Ɉˑ¶‚µ‚È‚¢ËÞ¯ÄϯÌß\nÃÞÊÞ²½”ñˆË‘¶ËÞ¯ÄϯÌß"
+ AFX_IDS_BITMAP_FORMAT "ËÞ¯ÄϯÌß\nËÞ¯ÄϯÌß"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc30/l.jpn/afxolesv.rc b/public/sdk/inc/mfc30/l.jpn/afxolesv.rc
new file mode 100644
index 000000000..2e561e357
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.jpn/afxolesv.rc
@@ -0,0 +1,53 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "æ‚É %1 ‚ðXV‚µ‚Ü‚·‚©H"
+ AFX_IDP_FAILED_TO_UPDATE, "¸×²±ÝÄ‚ðXV‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+
+ AFX_IDP_FAILED_TO_REGISTER, "“o˜^‚ÉŽ¸”s‚µ‚Ü‚µ‚½BOLE ‚Ì‹@”\‚ͳí‚É“®ì‚µ‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "¼½ÃÑ Ú¼Þ½ÄØ‚ÌXV‚ÉŽ¸”s‚µ‚Ü‚µ‚½B\nREGEDIT ‚ðŽg—p‚µ‚ÄXV‚µ‚Ä‚­‚¾‚³‚¢B"
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%2 “à‚Ì %1"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "I—¹‚µ‚Ä %1 ‚É–ß‚é(&X)"
+ AFX_IDS_UPDATE_MENU, "%1 ‚ðXV(&U)"
+ AFX_IDS_SAVEFILECOPY, "–¼‘O‚ð•t‚¯‚Ä•Û‘¶"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc30/l.jpn/afxprint.rc b/public/sdk/inc/mfc30/l.jpn/afxprint.rc
new file mode 100644
index 000000000..ac52a30b4
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.jpn/afxprint.rc
@@ -0,0 +1,130 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "System"
+BEGIN
+ CTEXT "ˆóü’†",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "‚ð",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,46,45,40,15
+ CTEXT "<Cmd>-. ·°‚ð‰Ÿ‚·‚Æ·¬Ý¾Ù‚µ‚Ü‚·B",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "System"
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "ŽŸÍß°¼Þ(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "‘OÍß°¼Þ(&V)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "½Þ°Ñ ²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "½Þ°Ñ ±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14" and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ŽŸÍß°¼Þ(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "‘OÍß°¼Þ(&V)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "½Þ°Ñ ²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "½Þ°Ñ ±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9" and 12" screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ŽŸ(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "‘O(&V)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "%1 ‚Öo—Í’†" // for print output
+ AFX_IDS_ONEPAGE, "1 Íß°¼Þ(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "2 Íß°¼Þ(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Íß°¼Þ %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Íß°¼Þ %u\nÍß°¼Þ %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Printer Files (*.prn)|*.prn|All Files (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Print to File" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "to %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc30/l.jpn/afxres.aps b/public/sdk/inc/mfc30/l.jpn/afxres.aps
new file mode 100644
index 000000000..31ec2f278
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.jpn/afxres.aps
Binary files differ
diff --git a/public/sdk/inc/mfc30/l.jpn/afxres.rc b/public/sdk/inc/mfc30/l.jpn/afxres.rc
new file mode 100644
index 000000000..6ca9b7f0d
--- /dev/null
+++ b/public/sdk/inc/mfc30/l.jpn/afxres.rc
@@ -0,0 +1,177 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+#include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE
+BEGIN
+ AFX_IDS_OPENFILE, "ŠJ‚­"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "–¼‘O‚ð•t‚¯‚Ä•Û‘¶"
+ AFX_IDS_ALLFILTER, "‚·‚ׂĂÌ̧²Ù (*.*)"
+ AFX_IDS_UNTITLED, "Untitled"
+#else
+ AFX_IDS_SAVEFILE, "ÄÞ·­ÒÝÄ‚É–¼‘O‚ð•t‚¯‚Ä•Û‘¶:"
+ AFX_IDS_ALLFILTER, "‚·‚ׂĂÌ̧²Ù"
+ AFX_IDS_UNTITLED, "untitled"
+ AFX_IDS_ABOUT, "ÊÞ°¼Þ®Ýî•ñ "
+#endif
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "–³Œø‚Ȩ̀²Ù–¼‚Å‚·B"
+ AFX_IDP_FAILED_TO_OPEN_DOC, "ÄÞ·­ÒÝĂ̵°ÌßÝ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_TO_SAVE_DOC, "ÄÞ·­ÒÝÄ‚Ì•Û‘¶‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "%1 ‚Ö‚Ì•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚©H"
+#else
+ AFX_IDP_ASK_TO_SAVE, "%1 ÄÞ·­ÒÝÄ \042%2\042 ‚Ö‚Ì•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚©H"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "‹ó‚ÌÄÞ·­ÒÝÄ‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_TOO_LARGE, "̧²Ù‚ª‘å‚«‚·‚¬‚ÄŠJ‚¯‚Ü‚¹‚ñB"
+ AFX_IDP_FAILED_TO_START_PRINT, "ˆóü‚ðŠJŽn‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "ÍÙÌß‚Ì‹N“®‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_INTERNAL_FAILURE, "±Ìßع°¼®Ý‚Ì“à•”´×°‚Å‚·B"
+ AFX_IDP_COMMAND_FAILURE, "ºÏÝÄÞ‚ÌŽÀs‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_MEMORY_ALLOC "ŽÀs‚·‚邽‚ß‚ÌÒÓØ‚ª‘«‚è‚Ü‚¹‚ñB"
+ AFX_IDP_GET_NOT_SUPPORTED, "‘‚«ž‚Ýê—p‚ÌÌßÛÊßè‚©‚ç“Ç‚Ýo‚µ‚Ís‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SET_NOT_SUPPORTED, "“Ç‚Ýo‚µê—p‚ÌÌßÛÊßè‚É‘‚«ž‚Ý‚Ís‚¦‚Ü‚¹‚ñB"
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "—\Šú‚µ‚È‚¢Ì§²ÙŒ`Ž®‚Å‚·B"
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\n‚±‚Ì̧²Ù‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB\n³‚µ‚¢ÃÞ¨Ú¸ÄØ‚Æ̧²Ù–¼‚ðŠm”F‚µ‚Ä“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_FAILED_DISK_FULL "o—Íæ‚ÌÃÞ¨½¸ ÄÞײÌÞ‚ª‚¢‚Á‚Ï‚¢‚Å‚·B"
+#else
+ AFX_IDP_FAILED_INVALID_PATH "̧²Ù \042%1.\042 ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB\n³‚µ‚¢Ì§²Ù–¼‚ðŠm”F‚µ‚Ä“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_FAILED_DISK_FULL "o—Íæ‚ÌÃÞ¨½¸‚ª‚¢‚Á‚Ï‚¢‚Å‚·B"
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "%1 ‚©‚ç“Ç‚Ýž‚ß‚Ü‚¹‚ñB‘¼‚̱Ìßع°¼®Ý‚É‚æ‚Á‚ÄŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FAILED_ACCESS_WRITE "%1 ‚É‘‚«ž‚ß‚Ü‚¹‚ñB‘¼‚̱Ìßع°¼®Ý‚É‚æ‚Á‚ÄŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FAILED_IO_ERROR_READ "%1 ‚Ì“Ç‚Ýž‚Ý’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_IO_ERROR_WRITE "%1 ‚Ì‘‚«ž‚Ý’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_REAL, "”’l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_INT_RANGE, "%1 ‚©‚ç %2 –˜‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_REAL_RANGE, "%1 ‚©‚ç %2 –˜‚Ì”’l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_STRING_SIZE, "%1 •¶ŽšˆÈ“à‚Å“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_RADIO_BUTTON, "ÎÞÀÝ‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_BYTE, "0 ‚©‚ç 255 ‚Ü‚Å‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_UINT, "³‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+
+#ifndef _AFX_NO_PROPSHEET_RESOURCES
+ // Property Sheet button strings (Note: 50 is the X-axis button size)
+ AFX_IDS_PS_OK "OK\n50"
+ AFX_IDS_PS_CANCEL "·¬Ý¾Ù\n50"
+ AFX_IDS_PS_APPLY_NOW "“K—p(&A)\n50"
+ AFX_IDS_PS_HELP "ÍÙÌß(&H)\n50"
+ AFX_IDS_PS_CLOSE "•Â‚¶‚é0"
+#endif //!_AFX_NO_PROPSHEET_RESOURCES
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s ‚ðØݸ‚µ‚Ü‚µ‚½"
+ AFX_IDS_UNKNOWNTYPE "Unknown Type"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nÄÞ·­ÒÝÄ‚ð“o˜^‚Å‚«‚Ü‚¹‚ñB\nÄÞ·­ÒÝÄ‚Í‚·‚Å‚ÉŠJ‚©‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "ÄÞ·­ÒÝÄ \042%1.\042 ‚ð“o˜^‚Å‚«‚Ü‚¹‚ñB\nÄÞ·­ÒÝÄ‚Í‚·‚Å‚ÉŠJ‚©‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Ò°Ù ¼½ÃÑ‚ÌÛ°ÄÞ‚ª‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_INVALID_MAPI_DLL "Ò°Ù ¼½ÃÑ DLL‚ª•s³‚Å‚·B"
+ AFX_IDP_FAILED_MAPI_SEND "Ò°Ù‚Ì‘—M‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+#endif //!_AFX_NO_MAPI_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "V‹K"
+FONT 8, "System"
+BEGIN
+ LTEXT "V‹K(&N) ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,137,23,40,14
+ PUSHBUTTON "ÍÙÌß(&H)",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Property Sheet Bitmaps
+
+#ifndef _AFX_NO_PROPERTY_RESOURCES
+AFX_IDB_SCROLL BITMAP DISCARDABLE "res\\psscroll.bmp"
+#endif //!_AFX_NO_PROPERTY_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/mapi.h b/public/sdk/inc/mfc30/mapi.h
new file mode 100644
index 000000000..82d91be3f
--- /dev/null
+++ b/public/sdk/inc/mfc30/mapi.h
@@ -0,0 +1,175 @@
+/*
+ * m a p i . h
+ *
+ * Messaging Applications Programming Interface.
+ *
+ * Copyright (c) 1992, Microsoft Corporation. All rights reserved.
+ *
+ * Purpose:
+ * This file defines the structures and constants used by
+ * that subset of the messaging applications programming
+ * interface which will be supported under Windows by
+ * Microsoft Mail for PC Networks vesion 3.0.
+ */
+
+/*
+ * Types.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned long ULONG;
+typedef unsigned long * LPULONG;
+typedef unsigned long FLAGS;
+typedef unsigned long LHANDLE, *LPLHANDLE;
+#define lhSessionNull ((LHANDLE)0)
+
+#define MAPI_MESSAGEID_LENGTH 64
+
+typedef struct {
+ ULONG ulReserved; // Reserved for future use (must be 0)
+ ULONG flFlags; // Flags
+ ULONG nPosition; // character in text to be replaced by attachment
+ LPSTR lpszPathName; // Full path name of attachment file
+ LPSTR lpszFileName; // Original file name (optional)
+ LPVOID UNALIGNED lpFileType; // Attachment file type (optional)
+} MapiFileDesc;
+
+typedef MapiFileDesc UNALIGNED *lpMapiFileDesc;
+
+#define MAPI_OLE 0x00000001
+#define MAPI_OLE_STATIC 0x00000002
+
+typedef struct {
+ ULONG ulReserved; // Reserved for future use
+ ULONG ulRecipClass; // Recipient class
+ // MAPI_TO, MAPI_CC, MAPI_BCC, MAPI_ORIG
+ LPSTR lpszName; // Recipient name
+ LPSTR lpszAddress; // Recipient address (optional)
+ ULONG ulEIDSize; // Count in bytes of size of pEntryID
+ LPVOID lpEntryID; // System-specific recipient reference
+} MapiRecipDesc;
+
+typedef MapiRecipDesc UNALIGNED *lpMapiRecipDesc;
+
+#define MAPI_ORIG 0 // Recipient is message originator
+#define MAPI_TO 1 // Recipient is a primary recipient
+#define MAPI_CC 2 // Recipient is a copy recipient
+#define MAPI_BCC 3 // Recipient is blind copy recipient
+
+typedef struct {
+ ULONG ulReserved; // Reserved for future use (M.B. 0)
+ LPSTR lpszSubject; // Message Subject
+ LPSTR lpszNoteText; // Message Text
+ LPSTR lpszMessageType; // Message Class
+ LPSTR lpszDateReceived; // in YYYY/MM/DD HH:MM format
+ LPSTR lpszConversationID; // conversation thread ID
+ FLAGS flFlags; // unread,return receipt
+ lpMapiRecipDesc lpOriginator; // Originator descriptor
+ ULONG nRecipCount; // Number of recipients
+ lpMapiRecipDesc lpRecips; // Recipient descriptors
+ ULONG nFileCount; // # of file attachments
+ lpMapiFileDesc lpFiles; // Attachment descriptors
+} MapiMessage;
+
+typedef MapiMessage UNALIGNED *lpMapiMessage;
+
+#define MAPI_UNREAD 0x00000001
+#define MAPI_RECEIPT_REQUESTED 0x00000002
+#define MAPI_SENT 0x00000004
+
+/*
+ * Entry points.
+ */
+
+#define MAPI_LOGON_UI 0x00000001 // Display logon UI
+#define MAPI_NEW_SESSION 0x00000002 // Do not use default.
+#define MAPI_DIALOG 0x00000008 // Display a send note UI
+#define MAPI_UNREAD_ONLY 0x00000020 // Only unread messages
+#define MAPI_ENVELOPE_ONLY 0x00000040 // Only header information
+#define MAPI_PEEK 0x00000080 // Do not mark as read.
+#define MAPI_GUARANTEE_FIFO 0x00000100 // use date order
+#define MAPI_BODY_AS_FILE 0x00000200
+#define MAPI_AB_NOMODIFY 0x00000400 // Don't allow mods of AB entries
+#define MAPI_SUPPRESS_ATTACH 0x00000800 // header + body, no files
+#define MAPI_FORCE_DOWNLOAD 0x00001000 // force download of new mail during MAPILogon
+
+ULONG MAPILogon(ULONG ulUIParam, LPSTR lpszName, LPSTR lpszPassword,
+ FLAGS flFlags, ULONG ulReserved,
+ LPLHANDLE lplhSession);
+
+ULONG MAPILogoff(LHANDLE lhSession, ULONG ulUIParam, FLAGS flFlags,
+ ULONG ulReserved);
+
+ULONG MAPISendMail(LHANDLE lhSession, ULONG ulUIParam,
+ lpMapiMessage lpMessage, FLAGS flFlags,
+ ULONG ulReserved);
+
+ULONG MAPISendDocuments(ULONG ulUIParam, LPSTR lpszDelimChar,
+ LPSTR lpszFilePaths, LPSTR lpszFileNames,
+ ULONG ulReserved);
+
+ULONG MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam,
+ LPSTR lpszMessageType, LPSTR lpszSeedMessageID,
+ FLAGS flFlags, ULONG ulReserved,
+ LPSTR lpszMessageID);
+
+ULONG MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam,
+ LPSTR lpszMessageID, FLAGS flFlags,
+ ULONG ulReserved, lpMapiMessage *lppMessageOut);
+
+ULONG MAPISaveMail(LHANDLE lhSession, ULONG ulUIParam,
+ lpMapiMessage pMessage, FLAGS flFlags,
+ ULONG ulReserved, LPSTR lpszMessageID);
+
+ULONG MAPIDeleteMail(LHANDLE lhSession, ULONG ulUIParam,
+ LPSTR lpszMessageID, FLAGS flFlags,
+ ULONG ulReserved);
+
+ULONG MAPIFreeBuffer( LPVOID pv );
+
+ULONG MAPIAddress(LHANDLE lhSession, ULONG ulUIParam,
+ LPSTR plszCaption, ULONG nEditFields,
+ LPSTR lpszLabels, ULONG nRecips,
+ lpMapiRecipDesc lpRecips, FLAGS flFlags, ULONG ulReserved,
+ LPULONG lpnNewRecips, lpMapiRecipDesc *lppNewRecips);
+
+ULONG MAPIDetails(LHANDLE lhSession, ULONG ulUIParam,
+ lpMapiRecipDesc lpRecip, FLAGS flFlags, ULONG ulReserved);
+
+ULONG MAPIResolveName(LHANDLE lhSession, ULONG ulUIParam,
+ LPSTR lpszName, FLAGS flFlags,
+ ULONG ulReserved, lpMapiRecipDesc *lppRecip);
+
+#define SUCCESS_SUCCESS 0
+#define MAPI_USER_ABORT 1
+#define MAPI_E_FAILURE 2
+#define MAPI_E_LOGIN_FAILURE 3
+#define MAPI_E_DISK_FULL 4
+#define MAPI_E_INSUFFICIENT_MEMORY 5
+#define MAPI_E_ACCESS_DENIED 6
+#define MAPI_E_TOO_MANY_SESSIONS 8
+#define MAPI_E_TOO_MANY_FILES 9
+#define MAPI_E_TOO_MANY_RECIPIENTS 10
+#define MAPI_E_ATTACHMENT_NOT_FOUND 11
+#define MAPI_E_ATTACHMENT_OPEN_FAILURE 12
+#define MAPI_E_ATTACHMENT_WRITE_FAILURE 13
+#define MAPI_E_UNKNOWN_RECIPIENT 14
+#define MAPI_E_BAD_RECIPTYPE 15
+#define MAPI_E_NO_MESSAGES 16
+#define MAPI_E_INVALID_MESSAGE 17
+#define MAPI_E_TEXT_TOO_LARGE 18
+#define MAPI_E_INVALID_SESSION 19
+#define MAPI_E_TYPE_NOT_SUPPORTED 20
+#define MAPI_E_AMBIGUOUS_RECIPIENT 21
+#define MAPI_E_MESSAGE_IN_USE 22
+#define MAPI_E_NETWORK_FAILURE 23
+#define MAPI_E_INVALID_EDITFIELDS 24
+#define MAPI_E_INVALID_RECIPS 25
+#define MAPI_E_NOT_SUPPORTED 26
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/public/sdk/inc/mfc30/ole2ansi.h b/public/sdk/inc/mfc30/ole2ansi.h
new file mode 100644
index 000000000..03907993b
--- /dev/null
+++ b/public/sdk/inc/mfc30/ole2ansi.h
@@ -0,0 +1,86 @@
+//+--------------------------------------------------------------------------
+//
+// Copyright (C) 1994, Microsoft Corporation. All Rights Reserved.
+//
+// File: ole2ansi.h
+//
+// Contents: API include file for MFCANS32.DLL users.
+// Provides direct access to the wrapper APIs.
+//
+// History: 25-Oct-94 deanm Created.
+//
+//---------------------------------------------------------------------------
+
+#ifndef _OLE2ANSI_H_
+#define _OLE2ANSI_H_
+
+//
+// Ole2AnsiSetFlags
+//
+// This function affects per-task options for MFCANS32.DLL. It should
+// be called at initialization before any OLE calls are made(if at all).
+// The default flags are zero, and are that way for backward compatibility
+// to previous versions of the DLL.
+//
+// OLE2ANSI_WRAPCUSTOM - Use if you wish custom interfaces to be wrapped.
+// (Note: when a custom interface is wrapped its vtable must contain
+// 128 or less vtable entries)
+// By default this option is not on to avoid breaking applications
+// that rely on the original non-wrapping of custom interfaces.
+//
+// OLE2ANSI_AGGREGATION - Use if you use aggregation in your application.
+// Using this option "turns off" a couple of bugs in the original
+// implementation where aggregation was not handled correctly. By default
+// the library operates in a mode where this bug is not fixed, since
+// applications may have worked around the bug in such a way that fixing
+// it in the library itself breaks those applications.
+
+STDAPI Ole2AnsiSetFlags(DWORD dwFlags, DWORD* pdwOldFlags);
+STDAPI_(DWORD) Ole2AnsiGetFlags(void);
+
+// Ole2AnsiSetFlags option flags
+#define OLE2ANSI_WRAPCUSTOM 0x00000001L
+#define OLE2ANSI_AGGREGATION 0x00000002L
+
+//
+// Ole2AnsiSetHashSizes
+//
+// The MFCANS32.DLL uses a number of different hash tables to manage
+// object and interface identity. The default size should handle most
+// applications and should keep object searches down to a minumum.
+// If your application creates a large number of objects managed by
+// the MFCANS32.DLL, you might want to bump these values up.
+//
+// nHashSize - Determines the size of the hash tables used to map
+// wrappers to native objects and native objects to wrappers.
+// The default is 1021.
+//
+// nGuidSize - Determines the size of the hash table used to manage
+// sets of custom GUIDs. This table is only used if you use
+// automation dual interfaces or custom interfaces. The default
+// is 71.
+//
+// It is best to use a prime number for both values.
+
+STDAPI Ole2AnsiSetHashSizes(int nHashSize, int nGuidSize);
+
+//
+// Ole2AnsiAFromW
+// Ole2AnsiWFromA
+//
+// These functions return either wide or ansi wrappers for a given
+// interface. For any given interface, only one wrapper will ever
+// be returned (ie. it is reference counted). In addition, a
+// wrapper will never be "wrapped again", at least not in the same
+// address space.
+//
+// Usually direct calls to these APIs are not necessary since the
+// MFCANS32.DLL provides "thunking" entry-points for all the OLE
+// APIs. Use these functions when you obtain interface pointers outside
+// the documented OLE APIs. Commonly these functions are used in an
+// ANSI inproc server in its DllGetClassObject.
+
+STDAPI Ole2AnsiAFromW(REFIID riid, LPUNKNOWN pWrappee, LPUNKNOWN * ppWrapper);
+STDAPI Ole2AnsiWFromA(REFIID riid, LPUNKNOWN pWrappee, LPUNKNOWN * ppWrapper);
+
+#endif //_OLE2ANSI_H_
diff --git a/public/sdk/inc/mfc30/ole2ui.h b/public/sdk/inc/mfc30/ole2ui.h
new file mode 100644
index 000000000..a4d30c2f0
--- /dev/null
+++ b/public/sdk/inc/mfc30/ole2ui.h
@@ -0,0 +1,1622 @@
+/*++ BUILD Version: 0001 Increment this if a change has global effects
+
+Copyright (c) 1993-1994, Microsoft Corporation
+
+Module Name:
+
+ ole2ui.h
+
+Abstract:
+
+ Include file for the OLE common dialogs.
+ The following dialog implementations are provided:
+ - Insert Object Dialog
+ - Convert Object Dialog
+ - Paste Special Dialog
+ - Change Icon Dialog
+ - Edit Links Dialog
+ - Update Links Dialog
+ - Change Source Dialog
+ - Busy Dialog
+ - User Error Message Dialog
+ - Object Properties Dialog
+
+--*/
+
+#ifndef _OLE2UI_H_
+#define _OLE2UI_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __cplusplus
+ #define NONAMELESSUNION // use strict ANSI standard (for DVOBJ.H)
+#endif
+
+// syncronize UNICODE options
+#if defined(_UNICODE) && !defined(UNICODE)
+ #define UNICODE
+#endif
+#if defined(UNICODE) && !defined(_UNICODE)
+ #define _UNICODE
+#endif
+
+// syncronize OLE2ANSI option w/ _UNICODE
+#if !defined(_UNICODE) && !defined(OLE2ANSI)
+ #define OLE2ANSI
+#endif
+
+#ifndef _WINDOWS_
+#include <windows.h>
+#endif
+#ifndef _INC_SHELLAPI
+#include <shellapi.h>
+#endif
+#ifndef _INC_COMMDLG
+#include <commdlg.h>
+#endif
+#ifndef _OLE2_H_
+#include <ole2.h>
+#endif
+#include <string.h>
+#include <dlgs.h> // common dialog IDs
+//#include <oledlgs.h> // OLE common dialog IDs
+#include <tchar.h>
+
+
+// Help Button Identifier
+#define IDC_OLEUIHELP 99
+
+// Insert Object Dialog identifiers
+#define IDC_IO_CREATENEW 2100
+#define IDC_IO_CREATEFROMFILE 2101
+#define IDC_IO_LINKFILE 2102
+#define IDC_IO_OBJECTTYPELIST 2103
+#define IDC_IO_DISPLAYASICON 2104
+#define IDC_IO_CHANGEICON 2105
+#define IDC_IO_FILE 2106
+#define IDC_IO_FILEDISPLAY 2107
+#define IDC_IO_RESULTIMAGE 2108
+#define IDC_IO_RESULTTEXT 2109
+#define IDC_IO_ICONDISPLAY 2110
+#define IDC_IO_OBJECTTYPETEXT 2111 //{{NOHELP}}
+#define IDC_IO_FILETEXT 2112 //{{NOHELP}}
+#define IDC_IO_FILETYPE 2113
+#define IDC_IO_INSERTCONTROL 2114
+#define IDC_IO_ADDCONTROL 2115
+#define IDC_IO_CONTROLTYPELIST 2116
+
+// Paste Special Dialog identifiers
+#define IDC_PS_PASTE 500
+#define IDC_PS_PASTELINK 501
+#define IDC_PS_SOURCETEXT 502
+#define IDC_PS_PASTELIST 503 //{{NOHELP}}
+#define IDC_PS_PASTELINKLIST 504 //{{NOHELP}}
+#define IDC_PS_DISPLAYLIST 505
+#define IDC_PS_DISPLAYASICON 506
+#define IDC_PS_ICONDISPLAY 507
+#define IDC_PS_CHANGEICON 508
+#define IDC_PS_RESULTIMAGE 509
+#define IDC_PS_RESULTTEXT 510
+
+// Change Icon Dialog identifiers
+#define IDC_CI_GROUP 120 //{{NOHELP}}
+#define IDC_CI_CURRENT 121
+#define IDC_CI_CURRENTICON 122
+#define IDC_CI_DEFAULT 123
+#define IDC_CI_DEFAULTICON 124
+#define IDC_CI_FROMFILE 125
+#define IDC_CI_FROMFILEEDIT 126
+#define IDC_CI_ICONLIST 127
+#define IDC_CI_LABEL 128 //{{NOHELP}
+#define IDC_CI_LABELEDIT 129
+#define IDC_CI_BROWSE 130
+#define IDC_CI_ICONDISPLAY 131
+
+// Convert Dialog identifiers
+#define IDC_CV_OBJECTTYPE 150
+#define IDC_CV_DISPLAYASICON 152
+#define IDC_CV_CHANGEICON 153
+#define IDC_CV_ACTIVATELIST 154
+#define IDC_CV_CONVERTTO 155
+#define IDC_CV_ACTIVATEAS 156
+#define IDC_CV_RESULTTEXT 157
+#define IDC_CV_CONVERTLIST 158
+#define IDC_CV_ICONDISPLAY 165
+
+// Edit Links Dialog identifiers
+#define IDC_EL_CHANGESOURCE 201
+#define IDC_EL_AUTOMATIC 202
+#define IDC_EL_CANCELLINK 209
+#define IDC_EL_UPDATENOW 210
+#define IDC_EL_OPENSOURCE 211
+#define IDC_EL_MANUAL 212
+#define IDC_EL_LINKSOURCE 216
+#define IDC_EL_LINKTYPE 217
+#define IDC_EL_LINKSLISTBOX 206
+#define IDC_EL_COL1 220 //{{NOHELP}}
+#define IDC_EL_COL2 221 //{{NOHELP}}
+#define IDC_EL_COL3 222 //{{NOHELP}}
+
+// Busy dialog identifiers
+#define IDC_BZ_RETRY 600
+#define IDC_BZ_ICON 601
+#define IDC_BZ_MESSAGE1 602 //{{NOHELP}}
+#define IDC_BZ_SWITCHTO 604
+
+// Update Links dialog identifiers
+#define IDC_UL_METER 1029 //{{NOHELP}}
+#define IDC_UL_STOP 1030 //{{NOHELP}}
+#define IDC_UL_PERCENT 1031 //{{NOHELP}}
+#define IDC_UL_PROGRESS 1032 //{{NOHELP}}
+
+// User Prompt dialog identifiers
+#define IDC_PU_LINKS 900 //{{NOHELP}}
+#define IDC_PU_TEXT 901 //{{NOHELP}}
+#define IDC_PU_CONVERT 902 //{{NOHELP}}
+#define IDC_PU_ICON 908 //{{NOHELP}}
+
+// General Properties identifiers
+#define IDC_GP_OBJECTNAME 1009
+#define IDC_GP_OBJECTTYPE 1010
+#define IDC_GP_OBJECTSIZE 1011
+#define IDC_GP_CONVERT 1013
+#define IDC_GP_OBJECTICON 1014 //{{NOHELP}}
+#define IDC_GP_OBJECTLOCATION 1022
+
+// View Properties identifiers
+#define IDC_VP_PERCENT 1000
+#define IDC_VP_CHANGEICON 1001
+#define IDC_VP_EDITABLE 1002
+#define IDC_VP_ASICON 1003
+#define IDC_VP_RELATIVE 1005
+#define IDC_VP_SPIN 1006
+#define IDC_VP_SCALETXT 1034
+#define IDC_VP_ICONDISPLAY 1021
+#define IDC_VP_RESULTIMAGE 1033
+
+// Link Properties identifiers
+#define IDC_LP_OPENSOURCE 1006
+#define IDC_LP_UPDATENOW 1007
+#define IDC_LP_BREAKLINK 1008
+#define IDC_LP_LINKSOURCE 1012
+#define IDC_LP_CHANGESOURCE 1015
+#define IDC_LP_AUTOMATIC 1016
+#define IDC_LP_MANUAL 1017
+#define IDC_LP_DATE 1018
+#define IDC_LP_TIME 1019
+
+// Dialog Identifiers as passed in Help messages to identify the source.
+#define IDD_INSERTOBJECT 1000
+#define IDD_CHANGEICON 1001
+#define IDD_CONVERT 1002
+#define IDD_PASTESPECIAL 1003
+#define IDD_EDITLINKS 1004
+#define IDD_BUSY 1006
+#define IDD_UPDATELINKS 1007
+#define IDD_CHANGESOURCE 1009
+#define IDD_INSERTFILEBROWSE 1010
+#define IDD_CHANGEICONBROWSE 1011
+#define IDD_CONVERTONLY 1012
+#define IDD_CHANGESOURCE4 1013
+#define IDD_GNRLPROPS 1100
+#define IDD_VIEWPROPS 1101
+#define IDD_LINKPROPS 1102
+
+// The following Dialogs are message dialogs used by OleUIPromptUser API
+#define IDD_CANNOTUPDATELINK 1008
+#define IDD_LINKSOURCEUNAVAILABLE 1020
+#define IDD_SERVERNOTFOUND 1023
+#define IDD_OUTOFMEMORY 1024
+#define IDD_SERVERNOTREGW 1021
+#define IDD_LINKTYPECHANGEDW 1022
+#define IDD_SERVERNOTREGA 1025
+#define IDD_LINKTYPECHANGEDA 1026
+#ifdef UNICODE
+#define IDD_SERVERNOTREG IDD_SERVERNOTREGW
+#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDW
+#else
+#define IDD_SERVERNOTREG IDD_SERVERNOTREGA
+#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDA
+#endif
+
+#ifndef RC_INVOKED
+
+#pragma pack(push, 8)
+
+#ifndef EXPORT
+ #define EXPORT
+#endif
+
+// Delimeter used to separate ItemMoniker pieces of a composite moniker
+#ifdef _MAC
+ #define OLESTDDELIM ":"
+#else
+ #define OLESTDDELIM TEXT("\\")
+#endif
+
+// Hook type used in all structures.
+typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
+
+// Strings for registered messages
+#define SZOLEUI_MSG_HELP TEXT("OLEUI_MSG_HELP")
+#define SZOLEUI_MSG_ENDDIALOG TEXT("OLEUI_MSG_ENDDIALOG")
+#define SZOLEUI_MSG_BROWSE TEXT("OLEUI_MSG_BROWSE")
+#define SZOLEUI_MSG_CHANGEICON TEXT("OLEUI_MSG_CHANGEICON")
+#define SZOLEUI_MSG_CLOSEBUSYDIALOG TEXT("OLEUI_MSG_CLOSEBUSYDIALOG")
+#define SZOLEUI_MSG_CONVERT TEXT("OLEUI_MSG_CONVERT")
+#define SZOLEUI_MSG_CHANGESOURCE TEXT("OLEUI_MSG_CHANGESOURCE")
+#define SZOLEUI_MSG_ADDCONTROL TEXT("OLEUI_MSG_ADDCONTROL")
+#define SZOLEUI_MSG_BROWSE_OFN TEXT("OLEUI_MSG_BROWSE_OFN")
+
+// Identifiers for SZOLEUI_MSG_BROWSE_OFN (in wParam)
+#define ID_BROWSE_CHANGEICON 1
+#define ID_BROWSE_INSERTFILE 2
+#define ID_BROWSE_ADDCONTROL 3
+#define ID_BROWSE_CHANGESOURCE 4
+
+// Standard success/error definitions
+#define OLEUI_FALSE 0
+#define OLEUI_SUCCESS 1 // No error, same as OLEUI_OK
+#define OLEUI_OK 1 // OK button pressed
+#define OLEUI_CANCEL 2 // Cancel button pressed
+
+#define OLEUI_ERR_STANDARDMIN 100
+#define OLEUI_ERR_STRUCTURENULL 101 // Standard field validation
+#define OLEUI_ERR_STRUCTUREINVALID 102
+#define OLEUI_ERR_CBSTRUCTINCORRECT 103
+#define OLEUI_ERR_HWNDOWNERINVALID 104
+#define OLEUI_ERR_LPSZCAPTIONINVALID 105
+#define OLEUI_ERR_LPFNHOOKINVALID 106
+#define OLEUI_ERR_HINSTANCEINVALID 107
+#define OLEUI_ERR_LPSZTEMPLATEINVALID 108
+#define OLEUI_ERR_HRESOURCEINVALID 109
+
+#define OLEUI_ERR_FINDTEMPLATEFAILURE 110 // Initialization errors
+#define OLEUI_ERR_LOADTEMPLATEFAILURE 111
+#define OLEUI_ERR_DIALOGFAILURE 112
+#define OLEUI_ERR_LOCALMEMALLOC 113
+#define OLEUI_ERR_GLOBALMEMALLOC 114
+#define OLEUI_ERR_LOADSTRING 115
+#define OLEUI_ERR_OLEMEMALLOC 116
+
+#define OLEUI_ERR_STANDARDMAX 117 // Start here for specific errors.
+
+// Miscellaneous utility functions.
+STDAPI_(BOOL) OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj, LPCWSTR lpszShortType,
+ HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
+ BOOL bAddConvert, UINT idConvert, HMENU FAR *lphMenu);
+STDAPI_(BOOL) OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj, LPCSTR lpszShortType,
+ HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
+ BOOL bAddConvert, UINT idConvert, HMENU FAR *lphMenu);
+#ifdef UNICODE
+#define OleUIAddVerbMenu OleUIAddVerbMenuW
+#else
+#define OleUIAddVerbMenu OleUIAddVerbMenuA
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// INSERT OBJECT DIALOG
+
+typedef struct tagOLEUIINSERTOBJECTW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIINSERTOBJECT.
+ CLSID clsid; // OUT: Return space for class ID
+ LPWSTR lpszFile; // IN-OUT: Filename for inserts or links
+ UINT cchFile; // IN: Size of lpszFile buffer: MAX_PATH
+ UINT cClsidExclude; // IN: CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; // IN: List of CLSIDs to exclude from listing.
+
+ // Specific to create objects if flags say so
+ IID iid; // IN: Requested interface on creation.
+ DWORD oleRender; // IN: Rendering option
+ LPFORMATETC lpFormatEtc; // IN: Desired format
+ LPOLECLIENTSITE lpIOleClientSite; // IN: Site to be use for the object.
+ LPSTORAGE lpIStorage; // IN: Storage used for the object
+ LPVOID FAR *ppvObj; // OUT: Where the object is returned.
+ SCODE sc; // OUT: Result of creation calls.
+ HGLOBAL hMetaPict; // OUT: metafile aspect (METAFILEPICT)
+
+} OLEUIINSERTOBJECTW, *POLEUIINSERTOBJECTW, FAR *LPOLEUIINSERTOBJECTW;
+typedef struct tagOLEUIINSERTOBJECTA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIINSERTOBJECT.
+ CLSID clsid; // OUT: Return space for class ID
+ LPSTR lpszFile; // IN-OUT: Filename for inserts or links
+ UINT cchFile; // IN: Size of lpszFile buffer: MAX_PATH
+ UINT cClsidExclude; // IN: CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; // IN: List of CLSIDs to exclude from listing.
+
+ // Specific to create objects if flags say so
+ IID iid; // IN: Requested interface on creation.
+ DWORD oleRender; // IN: Rendering option
+ LPFORMATETC lpFormatEtc; // IN: Desired format
+ LPOLECLIENTSITE lpIOleClientSite; // IN: Site to be use for the object.
+ LPSTORAGE lpIStorage; // IN: Storage used for the object
+ LPVOID FAR *ppvObj; // OUT: Where the object is returned.
+ SCODE sc; // OUT: Result of creation calls.
+ HGLOBAL hMetaPict; // OUT: metafile aspect (METAFILEPICT)
+
+} OLEUIINSERTOBJECTA, *POLEUIINSERTOBJECTA, FAR *LPOLEUIINSERTOBJECTA;
+
+STDAPI_(UINT) OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
+STDAPI_(UINT) OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
+
+#ifdef UNICODE
+#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTW
+#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTW
+#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTW
+#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTW
+#define OleUIInsertObject OleUIInsertObjectW
+#else
+#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTA
+#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTA
+#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTA
+#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTA
+#define OleUIInsertObject OleUIInsertObjectA
+#endif
+
+// Insert Object flags
+#define IOF_SHOWHELP 0x00000001L
+#define IOF_SELECTCREATENEW 0x00000002L
+#define IOF_SELECTCREATEFROMFILE 0x00000004L
+#define IOF_CHECKLINK 0x00000008L
+#define IOF_CHECKDISPLAYASICON 0x00000010L
+#define IOF_CREATENEWOBJECT 0x00000020L
+#define IOF_CREATEFILEOBJECT 0x00000040L
+#define IOF_CREATELINKOBJECT 0x00000080L
+#define IOF_DISABLELINK 0x00000100L
+#define IOF_VERIFYSERVERSEXIST 0x00000200L
+#define IOF_DISABLEDISPLAYASICON 0x00000400L
+#define IOF_HIDECHANGEICON 0x00000800L
+#define IOF_SHOWINSERTCONTROL 0x00001000L
+#define IOF_SELECTCREATECONTROL 0x00002000L
+
+// Insert Object specific error codes
+#define OLEUI_IOERR_LPSZFILEINVALID (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_IOERR_LPSZLABELINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_IOERR_HICONINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_IOERR_LPFORMATETCINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_IOERR_PPVOBJINVALID (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_IOERR_LPISTORAGEINVALID (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_IOERR_SCODEHASERROR (OLEUI_ERR_STANDARDMAX+7)
+#define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+8)
+#define OLEUI_IOERR_CCHFILEINVALID (OLEUI_ERR_STANDARDMAX+9)
+
+/////////////////////////////////////////////////////////////////////////////
+// PASTE SPECIAL DIALOG
+
+// The OLEUIPASTEFLAG enumeration is used by the OLEUIPASTEENTRY structure.
+//
+// OLEUIPASTE_ENABLEICON: If the container does not specify this flag for
+// the entry in the OLEUIPASTEENTRY array passed as input to
+// OleUIPasteSpecial, the DisplayAsIcon button will be unchecked and
+// disabled when the the user selects the format that corresponds to
+// the entry.
+//
+// OLEUIPASTE_PASTEONLY: Indicates that the entry in the OLEUIPASTEENTRY
+// array is valid for pasting only.
+//
+// OLEUIPASTE_PASTE: Indicates that the entry in the OLEUIPASTEENTRY array
+// is valid for pasting. It may also be valid for linking if any of
+// the following linking flags are specified.
+//
+// If the entry in the OLEUIPASTEENTRY array is valid for linking, the
+// following flags indicate which link types are acceptable by OR'ing
+// together the appropriate OLEUIPASTE_LINKTYPE<#> values.
+//
+// These values correspond as follows to the array of link types passed to
+// OleUIPasteSpecial:
+//
+// OLEUIPASTE_LINKTYPE1 = arrLinkTypes[0]
+// OLEUIPASTE_LINKTYPE2 = arrLinkTypes[1]
+// OLEUIPASTE_LINKTYPE3 = arrLinkTypes[2]
+// OLEUIPASTE_LINKTYPE4 = arrLinkTypes[3]
+// OLEUIPASTE_LINKTYPE5 = arrLinkTypes[4]
+// OLEUIPASTE_LINKTYPE6 = arrLinkTypes[5]
+// OLEUIPASTE_LINKTYPE7 = arrLinkTypes[6]
+// OLEUIPASTE_LINKTYPE8 = arrLinkTypes[7]
+//
+// where,
+// UINT arrLinkTypes[8] is an array of registered clipboard formats for
+// linking. A maximium of 8 link types are allowed.
+
+typedef enum tagOLEUIPASTEFLAG
+{
+ OLEUIPASTE_ENABLEICON = 2048, // enable display as icon
+ OLEUIPASTE_PASTEONLY = 0,
+ OLEUIPASTE_PASTE = 512,
+ OLEUIPASTE_LINKANYTYPE = 1024,
+ OLEUIPASTE_LINKTYPE1 = 1,
+ OLEUIPASTE_LINKTYPE2 = 2,
+ OLEUIPASTE_LINKTYPE3 = 4,
+ OLEUIPASTE_LINKTYPE4 = 8,
+ OLEUIPASTE_LINKTYPE5 = 16,
+ OLEUIPASTE_LINKTYPE6 = 32,
+ OLEUIPASTE_LINKTYPE7 = 64,
+ OLEUIPASTE_LINKTYPE8 = 128
+} OLEUIPASTEFLAG;
+
+// OLEUIPASTEENTRY structure
+//
+// An array of OLEUIPASTEENTRY entries is specified for the PasteSpecial
+// dialog box. Each entry includes a FORMATETC which specifies the
+// formats that are acceptable, a string that is to represent the format
+// in the dialog's list box, a string to customize the result text of the
+// dialog and a set of flags from the OLEUIPASTEFLAG enumeration. The
+// flags indicate if the entry is valid for pasting only, linking only or
+// both pasting and linking.
+
+typedef struct tagOLEUIPASTEENTRYW
+{
+ FORMATETC fmtetc; // Format that is acceptable.
+ LPCWSTR lpstrFormatName;// String that represents the format
+ // to the user. %s is replaced by the
+ // full user type name of the object.
+ LPCWSTR lpstrResultText;// String to customize the result text
+ // of the dialog when the user
+ // selects the format correspoding to
+ // this entry. Any %s in this string
+ // is replaced by the the application
+ // name or FullUserTypeName of the
+ // object on the clipboard.
+ DWORD dwFlags; // Values from OLEUIPASTEFLAG enum
+ DWORD dwScratchSpace; // Scratch space used internally.
+
+} OLEUIPASTEENTRYW, *POLEUIPASTEENTRYW, FAR *LPOLEUIPASTEENTRYW;
+typedef struct tagOLEUIPASTEENTRYA
+{
+ FORMATETC fmtetc; // Format that is acceptable.
+ LPCSTR lpstrFormatName;// String that represents the format
+ // to the user. %s is replaced by the
+ // full user type name of the object.
+ LPCSTR lpstrResultText;// String to customize the result text
+ // of the dialog when the user
+ // selects the format correspoding to
+ // this entry. Any %s in this string
+ // is replaced by the the application
+ // name or FullUserTypeName of the
+ // object on the clipboard.
+ DWORD dwFlags; // Values from OLEUIPASTEFLAG enum
+ DWORD dwScratchSpace; // Scratch space used internally.
+
+} OLEUIPASTEENTRYA, *POLEUIPASTEENTRYA, FAR *LPOLEUIPASTEENTRYA;
+#ifdef UNICODE
+#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYW
+#define OLEUIPASTEENTRY OLEUIPASTEENTRYW
+#define POLEUIPASTEENTRY POLEUIPASTEENTRYW
+#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYW
+#else
+#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYA
+#define OLEUIPASTEENTRY OLEUIPASTEENTRYA
+#define POLEUIPASTEENTRY POLEUIPASTEENTRYA
+#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYA
+#endif
+
+// Maximum number of link types
+#define PS_MAXLINKTYPES 8
+
+typedef struct tagOLEUIPASTESPECIALW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIPASTESPECIAL.
+ LPDATAOBJECT lpSrcDataObj; // IN-OUT: Source IDataObject* on the clipboard
+ // If lpSrcDataObj is NULL when OleUIPasteSpecial is called, then
+ // OleUIPasteSpecial will attempt to retrieve a pointer to an
+ // IDataObject from the clipboard. If OleUIPasteSpecial succeeds
+ // then it is the caller's responsibility to free the IDataObject
+ // returned in lpSrcDataObj.
+ LPOLEUIPASTEENTRYW arrPasteEntries;// IN: Array of acceptable formats
+ int cPasteEntries; // IN: No. of OLEUIPASTEENTRY array entries
+ UINT FAR* arrLinkTypes; // IN: List of acceptable link types
+ int cLinkTypes; // IN: Number of link types
+ UINT cClsidExclude; // IN: Number of CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; // IN: List of CLSIDs to exclude from list.
+ int nSelectedIndex; // OUT: Index that the user selected
+ BOOL fLink; // OUT: Indicates if Paste or PasteLink
+ HGLOBAL hMetaPict; // OUT: Handle to Metafile containing icon
+ SIZEL sizel; // OUT: size of object/link in its source
+ // may be 0,0 if different display
+ // aspect is chosen.
+
+} OLEUIPASTESPECIALW, *POLEUIPASTESPECIALW, FAR *LPOLEUIPASTESPECIALW;
+typedef struct tagOLEUIPASTESPECIALA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIPASTESPECIAL.
+ LPDATAOBJECT lpSrcDataObj; // IN-OUT: Source IDataObject* on the clipboard
+ // If lpSrcDataObj is NULL when OleUIPasteSpecial is called, then
+ // OleUIPasteSpecial will attempt to retrieve a pointer to an
+ // IDataObject from the clipboard. If OleUIPasteSpecial succeeds
+ // then it is the caller's responsibility to free the IDataObject
+ // returned in lpSrcDataObj.
+ LPOLEUIPASTEENTRYA arrPasteEntries;// IN: Array of acceptable formats
+ int cPasteEntries; // IN: No. of OLEUIPASTEENTRY array entries
+ UINT FAR* arrLinkTypes; // IN: List of acceptable link types
+ int cLinkTypes; // IN: Number of link types
+ UINT cClsidExclude; // IN: Number of CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; // IN: List of CLSIDs to exclude from list.
+ int nSelectedIndex; // OUT: Index that the user selected
+ BOOL fLink; // OUT: Indicates if Paste or PasteLink
+ HGLOBAL hMetaPict; // OUT: Handle to Metafile containing icon
+ SIZEL sizel; // OUT: size of object/link in its source
+ // may be 0,0 if different display
+ // aspect is chosen.
+
+} OLEUIPASTESPECIALA, *POLEUIPASTESPECIALA, FAR *LPOLEUIPASTESPECIALA;
+#ifdef UNICODE
+
+#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALW
+#define OLEUIPASTESPECIAL OLEUIPASTESPECIALW
+#define POLEUIPASTESPECIAL POLEUIPASTESPECIALW
+#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALW
+#else
+#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALA
+#define OLEUIPASTESPECIAL OLEUIPASTESPECIALA
+#define POLEUIPASTESPECIAL POLEUIPASTESPECIALA
+#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALA
+#endif
+
+STDAPI_(UINT) OleUIPasteSpecialW(LPOLEUIPASTESPECIALW);
+STDAPI_(UINT) OleUIPasteSpecialA(LPOLEUIPASTESPECIALA);
+#ifdef UNICODE
+#define OleUIPasteSpecial OleUIPasteSpecialW
+#else
+#define OleUIPasteSpecial OleUIPasteSpecialA
+#endif
+
+// Paste Special specific flags
+#define PSF_SHOWHELP 0x00000001L
+#define PSF_SELECTPASTE 0x00000002L
+#define PSF_SELECTPASTELINK 0x00000004L
+#define PSF_CHECKDISPLAYASICON 0x00000008L
+#define PSF_DISABLEDISPLAYASICON 0x00000010L
+#define PSF_HIDECHANGEICON 0x00000020L
+#define PSF_STAYONCLIPBOARDCHANGE 0x00000040L
+#define PSF_NOREFRESHDATAOBJECT 0x00000080L
+
+// Paste Special specific error codes
+#define OLEUI_IOERR_SRCDATAOBJECTINVALID (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_PSERR_GETCLIPBOARDFAILED (OLEUI_ERR_STANDARDMAX+4)
+
+/////////////////////////////////////////////////////////////////////////////
+// EDIT LINKS DIALOG
+
+// IOleUILinkContainer interface
+//
+// This interface must be implemented by container applications that
+// want to use the EditLinks dialog. the EditLinks dialog calls back
+// to the container app to perform the OLE functions to manipulate
+// the links within the container.
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkContainerW
+
+DECLARE_INTERFACE_(IOleUILinkContainerW, IUnknown)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleUILinkContainer *** //
+ STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD FAR* lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPWSTR lpszDisplayName,
+ ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
+ LPWSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
+ LPWSTR FAR* lplpszFullLinkType, LPWSTR FAR* lplpszShortLinkType,
+ BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
+ BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
+};
+
+typedef IOleUILinkContainerW FAR* LPOLEUILINKCONTAINERW;
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkContainerA
+
+DECLARE_INTERFACE_(IOleUILinkContainerA, IUnknown)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleUILinkContainer *** //
+ STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD FAR* lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPSTR lpszDisplayName,
+ ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
+ LPSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
+ LPSTR FAR* lplpszFullLinkType, LPSTR FAR* lplpszShortLinkType,
+ BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
+ BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
+};
+
+typedef IOleUILinkContainerA FAR* LPOLEUILINKCONTAINERA;
+
+#ifdef UNICODE
+#define IOleUILinkContainer IOleUILinkContainerW
+#define IOleUILinkContainerVtbl IOleUILinkContainerWVtbl
+#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERW
+#else
+#define IOleUILinkContainer IOleUILinkContainerA
+#define IOleUILinkContainerVtbl IOleUILinkContainerAVtbl
+#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERA
+#endif
+
+typedef struct tagOLEUIEDITLINKSW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIEDITLINKS.
+ LPOLEUILINKCONTAINERW lpOleUILinkContainer; // IN: Interface to manipulate
+ // links in the container
+
+} OLEUIEDITLINKSW, *POLEUIEDITLINKSW, FAR *LPOLEUIEDITLINKSW;
+
+typedef struct tagOLEUIEDITLINKSA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIEDITLINKS.
+ LPOLEUILINKCONTAINERA lpOleUILinkContainer; // IN: Interface to manipulate
+ // links in the container
+
+} OLEUIEDITLINKSA, *POLEUIEDITLINKSA, FAR *LPOLEUIEDITLINKSA;
+
+#ifdef UNICODE
+#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSW
+#define OLEUIEDITLINKS OLEUIEDITLINKSW
+#define POLEUIEDITLINKS POLEUIEDITLINKSW
+#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSW
+#else
+#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSA
+#define OLEUIEDITLINKS OLEUIEDITLINKSA
+#define POLEUIEDITLINKS POLEUIEDITLINKSA
+#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSA
+#endif
+
+#define OLEUI_ELERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_ELERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
+
+STDAPI_(UINT) OleUIEditLinksW(LPOLEUIEDITLINKSW);
+STDAPI_(UINT) OleUIEditLinksA(LPOLEUIEDITLINKSA);
+
+#ifdef UNICODE
+#define OleUIEditLinks OleUIEditLinksW
+#else
+#define OleUIEditLinks OleUIEditLinksA
+#endif
+
+// Edit Links flags
+#define ELF_SHOWHELP 0x00000001L
+#define ELF_DISABLEUPDATENOW 0x00000002L
+#define ELF_DISABLEOPENSOURCE 0x00000004L
+#define ELF_DISABLECHANGESOURCE 0x00000008L
+#define ELF_DISABLECANCELLINK 0x00000010L
+
+/////////////////////////////////////////////////////////////////////////////
+// CHANGE ICON DIALOG
+
+typedef struct tagOLEUICHANGEICONW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUICHANGEICON.
+ HGLOBAL hMetaPict; // IN-OUT: Current and final image.
+ // Source of the icon is embedded in
+ // the metafile itself.
+ CLSID clsid; // IN: class used to get Default icon
+ WCHAR szIconExe[MAX_PATH]; // IN: exlicit icon source path
+ int cchIconExe; // IN: number of characters in szIconExe
+
+} OLEUICHANGEICONW, *POLEUICHANGEICONW, FAR *LPOLEUICHANGEICONW;
+
+typedef struct tagOLEUICHANGEICONA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUICHANGEICON.
+ HGLOBAL hMetaPict; // IN-OUT: Current and final image.
+ // Source of the icon is embedded in
+ // the metafile itself.
+ CLSID clsid; // IN: class used to get Default icon
+ CHAR szIconExe[MAX_PATH]; // IN: exlicit icon source path
+ int cchIconExe; // IN: number of characters in szIconExe
+
+} OLEUICHANGEICONA, *POLEUICHANGEICONA, FAR *LPOLEUICHANGEICONA;
+
+STDAPI_(UINT) OleUIChangeIconW(LPOLEUICHANGEICONW);
+STDAPI_(UINT) OleUIChangeIconA(LPOLEUICHANGEICONA);
+
+#ifdef UNICODE
+#define tagOLEUICHANGEICON tagOLEUICHANGEICONW
+#define OLEUICHANGEICON OLEUICHANGEICONW
+#define POLEUICHANGEICON POLEUICHANGEICONW
+#define LPOLEUICHANGEICON LPOLEUICHANGEICONW
+#define OleUIChangeIcon OleUIChangeIconW
+#else
+#define tagOLEUICHANGEICON tagOLEUICHANGEICONA
+#define OLEUICHANGEICON OLEUICHANGEICONA
+#define POLEUICHANGEICON POLEUICHANGEICONA
+#define LPOLEUICHANGEICON LPOLEUICHANGEICONA
+#define OleUIChangeIcon OleUIChangeIconA
+#endif
+
+// Change Icon flags
+#define CIF_SHOWHELP 0x00000001L
+#define CIF_SELECTCURRENT 0x00000002L
+#define CIF_SELECTDEFAULT 0x00000004L
+#define CIF_SELECTFROMFILE 0x00000008L
+#define CIF_USEICONEXE 0x00000010L
+
+// Change Icon specific error codes
+#define OLEUI_CIERR_MUSTHAVECLSID (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2)
+
+// Property used by ChangeIcon dialog to give its parent window access to
+// its hDlg. The PasteSpecial dialog may need to force the ChgIcon dialog
+// down if the clipboard contents change underneath it. if so it will send
+// a IDCANCEL command to the ChangeIcon dialog.
+#define PROP_HWND_CHGICONDLG TEXT("HWND_CIDLG")
+
+/////////////////////////////////////////////////////////////////////////////
+// CONVERT DIALOG
+
+typedef struct tagOLEUICONVERTW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUICONVERT.
+ CLSID clsid; // IN: Class ID sent in to dialog: IN only
+ CLSID clsidConvertDefault; // IN: use as convert default: IN only
+ CLSID clsidActivateDefault; // IN: use as activate default: IN only
+
+ CLSID clsidNew; // OUT: Selected Class ID
+ DWORD dvAspect; // IN-OUT: either DVASPECT_CONTENT or
+ // DVASPECT_ICON
+ WORD wFormat; // IN" Original data format
+ BOOL fIsLinkedObject;// IN: true if object is linked
+ HGLOBAL hMetaPict; // IN-OUT: metafile icon image
+ LPWSTR lpszUserType; // IN-OUT: user type name of original class.
+ // We'll do lookup if NULL.
+ // This gets freed on exit.
+ BOOL fObjectsIconChanged; // OUT: TRUE == ChangeIcon was called
+ LPWSTR lpszDefLabel; //IN-OUT: default label to use for icon.
+ // if NULL, the short user type name
+ // will be used. if the object is a
+ // link, the caller should pass the
+ // DisplayName of the link source
+ // This gets freed on exit.
+
+ UINT cClsidExclude; //IN: No. of CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; //IN: List of CLSIDs to exclude from list
+
+} OLEUICONVERTW, *POLEUICONVERTW, FAR *LPOLEUICONVERTW;
+
+typedef struct tagOLEUICONVERTA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUICONVERT.
+ CLSID clsid; // IN: Class ID sent in to dialog: IN only
+ CLSID clsidConvertDefault; // IN: use as convert default: IN only
+ CLSID clsidActivateDefault; // IN: use as activate default: IN only
+
+ CLSID clsidNew; // OUT: Selected Class ID
+ DWORD dvAspect; // IN-OUT: either DVASPECT_CONTENT or
+ // DVASPECT_ICON
+ WORD wFormat; // IN" Original data format
+ BOOL fIsLinkedObject;// IN: true if object is linked
+ HGLOBAL hMetaPict; // IN-OUT: metafile icon image
+ LPSTR lpszUserType; // IN-OUT: user type name of original class.
+ // We'll do lookup if NULL.
+ // This gets freed on exit.
+ BOOL fObjectsIconChanged; // OUT: TRUE == ChangeIcon was called
+ LPSTR lpszDefLabel; //IN-OUT: default label to use for icon.
+ // if NULL, the short user type name
+ // will be used. if the object is a
+ // link, the caller should pass the
+ // DisplayName of the link source
+ // This gets freed on exit.
+
+ UINT cClsidExclude; //IN: No. of CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; //IN: List of CLSIDs to exclude from list
+
+} OLEUICONVERTA, *POLEUICONVERTA, FAR *LPOLEUICONVERTA;
+
+STDAPI_(UINT) OleUIConvertW(LPOLEUICONVERTW);
+STDAPI_(UINT) OleUIConvertA(LPOLEUICONVERTA);
+
+#ifdef UNICODE
+#define tagOLEUICONVERT tagOLEUICONVERTW
+#define OLEUICONVERT OLEUICONVERTW
+#define POLEUICONVERT POLEUICONVERTW
+#define LPOLEUICONVERT LPOLEUICONVERTW
+#define OleUIConvert OleUIConvertW
+#else
+#define tagOLEUICONVERT tagOLEUICONVERTA
+#define OLEUICONVERT OLEUICONVERTA
+#define POLEUICONVERT POLEUICONVERTA
+#define LPOLEUICONVERT LPOLEUICONVERTA
+#define OleUIConvert OleUIConvertA
+#endif
+
+// Determine if there is at least one class that can Convert or ActivateAs
+// the given clsid.
+STDAPI_(BOOL) OleUICanConvertOrActivateAs(
+ REFCLSID rClsid, BOOL fIsLinkedObject, WORD wFormat);
+
+// Convert Dialog flags
+#define CF_SHOWHELPBUTTON 0x00000001L
+#define CF_SETCONVERTDEFAULT 0x00000002L
+#define CF_SETACTIVATEDEFAULT 0x00000004L
+#define CF_SELECTCONVERTTO 0x00000008L
+#define CF_SELECTACTIVATEAS 0x00000010L
+#define CF_DISABLEDISPLAYASICON 0x00000020L
+#define CF_DISABLEACTIVATEAS 0x00000040L
+#define CF_HIDECHANGEICON 0x00000080L
+#define CF_CONVERTONLY 0x00000100L
+
+// Convert specific error codes
+#define OLEUI_CTERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CTERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_CTERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_CTERR_HMETAPICTINVALID (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_CTERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+5)
+
+/////////////////////////////////////////////////////////////////////////////
+// BUSY DIALOG
+
+typedef struct tagOLEUIBUSYW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: see below
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIBUSY.
+ HTASK hTask; // IN: HTask which is blocking
+ HWND FAR * lphWndDialog; // IN: Dialog's HWND is placed here
+
+} OLEUIBUSYW, *POLEUIBUSYW, FAR *LPOLEUIBUSYW;
+
+typedef struct tagOLEUIBUSYA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: see below
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIBUSY.
+ HTASK hTask; // IN: HTask which is blocking
+ HWND FAR * lphWndDialog; // IN: Dialog's HWND is placed here
+
+} OLEUIBUSYA, *POLEUIBUSYA, FAR *LPOLEUIBUSYA;
+
+STDAPI_(UINT) OleUIBusyW(LPOLEUIBUSYW);
+STDAPI_(UINT) OleUIBusyA(LPOLEUIBUSYA);
+
+#ifdef UNICODE
+#define tagOLEUIBUSY tagOLEUIBUSYW
+#define OLEUIBUSY OLEUIBUSYW
+#define POLEUIBUSY POLEUIBUSYW
+#define LPOLEUIBUSY LPOLEUIBUSYW
+#define OleUIBusy OleUIBusyW
+#else
+#define tagOLEUIBUSY tagOLEUIBUSYA
+#define OLEUIBUSY OLEUIBUSYA
+#define POLEUIBUSY POLEUIBUSYA
+#define LPOLEUIBUSY LPOLEUIBUSYA
+#define OleUIBusy OleUIBusyA
+#endif
+
+// Flags for the Busy dialog
+#define BZ_DISABLECANCELBUTTON 0x00000001L
+#define BZ_DISABLESWITCHTOBUTTON 0x00000002L
+#define BZ_DISABLERETRYBUTTON 0x00000004L
+
+#define BZ_NOTRESPONDINGDIALOG 0x00000008L
+
+// Busy specific error/return codes
+#define OLEUI_BZERR_HTASKINVALID (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3)
+
+/////////////////////////////////////////////////////////////////////////////
+// CHANGE SOURCE DIALOG
+
+// Data to and from the ChangeSource dialog hook
+typedef struct tagOLEUICHANGESOURCEW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // INTERNAL ONLY: do not modify these members
+ OPENFILENAMEW* lpOFN; // pointer OPENFILENAME struct
+ DWORD dwReserved1[4]; // (reserved for future use)
+
+ // Specifics for OLEUICHANGESOURCE.
+ LPOLEUILINKCONTAINERW lpOleUILinkContainer; // IN: used to validate link sources
+ DWORD dwLink; // IN: magic# for lpOleUILinkContainer
+ LPWSTR lpszDisplayName;// IN-OUT: complete source display name
+ ULONG nFileLength; // IN-OUT: file moniker part of lpszDisplayName
+ LPWSTR lpszFrom; // OUT: prefix of source changed from
+ LPWSTR lpszTo; // OUT: prefix of source changed to
+
+} OLEUICHANGESOURCEW, *POLEUICHANGESOURCEW, FAR *LPOLEUICHANGESOURCEW;
+
+typedef struct tagOLEUICHANGESOURCEA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // INTERNAL ONLY: do not modify these members
+ OPENFILENAMEA* lpOFN; // pointer OPENFILENAME struct
+ DWORD dwReserved1[4]; // (reserved for future use)
+
+ // Specifics for OLEUICHANGESOURCE.
+ LPOLEUILINKCONTAINERA lpOleUILinkContainer; // IN: used to validate link sources
+ DWORD dwLink; // IN: magic# for lpOleUILinkContainer
+ LPSTR lpszDisplayName;// IN-OUT: complete source display name
+ ULONG nFileLength; // IN-OUT: file moniker part of lpszDisplayName
+ LPSTR lpszFrom; // OUT: prefix of source changed from
+ LPSTR lpszTo; // OUT: prefix of source changed to
+
+} OLEUICHANGESOURCEA, *POLEUICHANGESOURCEA, FAR *LPOLEUICHANGESOURCEA;
+
+STDAPI_(UINT) OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
+STDAPI_(UINT) OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
+
+#ifdef UNICODE
+#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEW
+#define OLEUICHANGESOURCE OLEUICHANGESOURCEW
+#define POLEUICHANGESOURCE POLEUICHANGESOURCEW
+#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEW
+#define OleUIChangeSource OleUIChangeSourceW
+#else
+#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEA
+#define OLEUICHANGESOURCE OLEUICHANGESOURCEA
+#define POLEUICHANGESOURCE POLEUICHANGESOURCEA
+#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEA
+#define OleUIChangeSource OleUIChangeSourceA
+#endif
+
+// Change Source Dialog flags
+#define CSF_SHOWHELP 0x00000001L // IN: enable/show help button
+#define CSF_VALIDSOURCE 0x00000002L // OUT: link was validated
+#define CSF_ONLYGETSOURCE 0x00000004L // OUT: don't actually set it
+
+// Change Source Dialog errors
+#define OLEUI_CSERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_CSERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CSERR_FROMNOTNULL (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_CSERR_TONOTNULL (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_CSERR_SOURCENULL (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_CSERR_SOURCEINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_CSERR_SOURCEPARSERROR (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_CSERR_SOURCEPARSEERROR (OLEUI_ERR_STANDARDMAX+7)
+
+/////////////////////////////////////////////////////////////////////////////
+// OBJECT PROPERTIES DIALOG
+
+#undef INTERFACE
+#define INTERFACE IOleUIObjInfoW
+
+DECLARE_INTERFACE_(IOleUIObjInfoW, IUnknown)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** extra for General Properties *** //
+ STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
+ DWORD FAR* lpdwObjSize, LPWSTR FAR* lplpszLabel,
+ LPWSTR FAR* lplpszType, LPWSTR FAR* lplpszShortType,
+ LPWSTR FAR* lplpszLocation) PURE;
+ STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
+ CLSID FAR* lpClassID, WORD FAR* lpwFormat,
+ CLSID FAR* lpConvertDefaultClassID,
+ LPCLSID FAR* lplpClsidExclude, UINT FAR* lpcClsidExclude) PURE;
+ STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew) PURE;
+
+ // *** extra for View Properties *** //
+ STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL FAR* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale) PURE;
+ STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL hMetaPict, DWORD dvAspect,
+ int nCurrentScale, BOOL bRelativeToOrig) PURE;
+};
+
+typedef IOleUIObjInfoW FAR* LPOLEUIOBJINFOW;
+
+#undef INTERFACE
+#define INTERFACE IOleUIObjInfoA
+
+DECLARE_INTERFACE_(IOleUIObjInfoA, IUnknown)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** extra for General Properties *** //
+ STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
+ DWORD FAR* lpdwObjSize, LPSTR FAR* lplpszLabel,
+ LPSTR FAR* lplpszType, LPSTR FAR* lplpszShortType,
+ LPSTR FAR* lplpszLocation) PURE;
+ STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
+ CLSID FAR* lpClassID, WORD FAR* lpwFormat,
+ CLSID FAR* lpConvertDefaultClassID,
+ LPCLSID FAR* lplpClsidExclude, UINT FAR* lpcClsidExclude) PURE;
+ STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew) PURE;
+
+ // *** extra for View Properties *** //
+ STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL FAR* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale) PURE;
+ STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL hMetaPict, DWORD dvAspect,
+ int nCurrentScale, BOOL bRelativeToOrig) PURE;
+};
+
+typedef IOleUIObjInfoA FAR* LPOLEUIOBJINFOA;
+
+#ifdef UNICODE
+#define IOleUIObjInfo IOleUIObjInfoW
+#define IOleUIObjInfoVtbl IOleUIObjInfoWVtbl
+#define LPOLEUIOBJINFO LPOLEUIOBJINFOW
+#else
+#define IOleUIObjInfo IOleUIObjInfoA
+#define IOleUIObjInfoVtbl IOleUIObjInfoAVtbl
+#define LPOLEUIOBJINFO LPOLEUIOBJINFOA
+#endif
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkInfoW
+
+DECLARE_INTERFACE_(IOleUILinkInfoW, IOleUILinkContainerW)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleUILinkContainer *** //
+ STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD FAR* lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPWSTR lpszDisplayName,
+ ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
+ LPWSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
+ LPWSTR FAR* lplpszFullLinkType, LPWSTR FAR* lplpszShortLinkType,
+ BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
+ BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
+
+ // *** extra for Link Properties *** //
+ STDMETHOD(GetLastUpdate) (THIS_ DWORD dwLink,
+ FILETIME FAR* lpLastUpdate) PURE;
+};
+
+typedef IOleUILinkInfoW FAR* LPOLEUILINKINFOW;
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkInfoA
+
+DECLARE_INTERFACE_(IOleUILinkInfoA, IOleUILinkContainerA)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleUILinkContainer *** //
+ STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD FAR* lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPSTR lpszDisplayName,
+ ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
+ LPSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
+ LPSTR FAR* lplpszFullLinkType, LPSTR FAR* lplpszShortLinkType,
+ BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
+ BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
+
+ // *** extra for Link Properties *** //
+ STDMETHOD(GetLastUpdate) (THIS_ DWORD dwLink,
+ FILETIME FAR* lpLastUpdate) PURE;
+};
+
+typedef IOleUILinkInfoA FAR* LPOLEUILINKINFOA;
+
+#ifdef UNICODE
+#define IOleUILinkInfo IOleUILinkInfoW
+#define IOleUILinkInfoVtbl IOleUILinkInfoWVtbl
+#define LPOLEUILINKINFO LPOLEUILINKINFOW
+#else
+#define IOleUILinkInfo IOleUILinkInfoA
+#define IOleUILinkInfoVtbl IOleUILinkInfoAVtbl
+#define LPOLEUILINKINFO LPOLEUILINKINFOA
+#endif
+
+struct tagOLEUIOBJECTPROPSW;
+struct tagOLEUIOBJECTPROPSA;
+
+typedef struct tagOLEUIGNRLPROPSW
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to general page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSW* lpOP; // (used internally)
+
+} OLEUIGNRLPROPSW, *POLEUIGNRLPROPSW, FAR* LPOLEUIGNRLPROPSW;
+
+typedef struct tagOLEUIGNRLPROPSA
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to general page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSA* lpOP; // (used internally)
+
+} OLEUIGNRLPROPSA, *POLEUIGNRLPROPSA, FAR* LPOLEUIGNRLPROPSA;
+
+#ifdef UNICODE
+#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSW
+#define OLEUIGNRLPROPS OLEUIGNRLPROPSW
+#define POLEUIGNRLPROPS POLEUIGNRLPROPSW
+#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSW
+#else
+#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSA
+#define OLEUIGNRLPROPS OLEUIGNRLPROPSA
+#define POLEUIGNRLPROPS POLEUIGNRLPROPSA
+#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSA
+#endif
+
+typedef struct tagOLEUIVIEWPROPSW
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to view page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback (not used in this dialog)
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSW* lpOP; // (used internally)
+
+ int nScaleMin; // scale range
+ int nScaleMax;
+
+} OLEUIVIEWPROPSW, *POLEUIVIEWPROPSW, FAR* LPOLEUIVIEWPROPSW;
+
+typedef struct tagOLEUIVIEWPROPSA
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to view page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback (not used in this dialog)
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSA* lpOP; // (used internally)
+
+ int nScaleMin; // scale range
+ int nScaleMax;
+
+} OLEUIVIEWPROPSA, *POLEUIVIEWPROPSA, FAR* LPOLEUIVIEWPROPSA;
+
+#ifdef UNICODE
+#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSW
+#define OLEUIVIEWPROPS OLEUIVIEWPROPSW
+#define POLEUIVIEWPROPS POLEUIVIEWPROPSW
+#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSW
+#else
+#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSA
+#define OLEUIVIEWPROPS OLEUIVIEWPROPSA
+#define POLEUIVIEWPROPS POLEUIVIEWPROPSA
+#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSA
+#endif
+
+// Flags for OLEUIVIEWPROPS
+#define VPF_SELECTRELATIVE 0x00000001L // IN: relative to orig
+#define VPF_DISABLERELATIVE 0x00000002L // IN: disable relative to orig
+#define VPF_DISABLESCALE 0x00000004L // IN: disable scale option
+
+typedef struct tagOLEUILINKPROPSW
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to links page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback (not used in this dialog)
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSW* lpOP; // (used internally)
+
+} OLEUILINKPROPSW, *POLEUILINKPROPSW, FAR* LPOLEUILINKPROPSW;
+
+typedef struct tagOLEUILINKPROPSA
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to links page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback (not used in this dialog)
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSA* lpOP; // (used internally)
+
+} OLEUILINKPROPSA, *POLEUILINKPROPSA, FAR* LPOLEUILINKPROPSA;
+
+#ifdef UNICODE
+#define tagOLEUILINKPROPS tagOLEUILINKPROPSW
+#define OLEUILINKPROPS OLEUILINKPROPSW
+#define POLEUILINKPROPS POLEUILINKPROPSW
+#define LPOLEUILINKPROPS LPOLEUILINKPROPSW
+#else
+#define tagOLEUILINKPROPS tagOLEUILINKPROPSA
+#define OLEUILINKPROPS OLEUILINKPROPSA
+#define POLEUILINKPROPS POLEUILINKPROPSA
+#define LPOLEUILINKPROPS LPOLEUILINKPROPSA
+#endif
+
+#if (WINVER >= 0x400)
+// Under Windows 95 prsht.h is NOT a part of the normal Windows
+// environment, so we explicitly include it here to be safe.
+#include <prsht.h>
+
+#ifndef PSM_SETFINISHTEXTA
+// We are building under Windows 95.
+//
+// Under Windows 95 there are no wide-character definitions
+// for the property sheet code.
+//
+// Since the UNICODE version of our API is not implemented on Windows 95,
+// this only creates a semantic problem. The entry points will still
+// look the same and the code will still work the same if we define
+// LPPROPSHEETHEADERW to be the narrow version of the structure.
+
+typedef struct _PROPSHEETHEADER FAR* LPPROPSHEETHEADERW;
+typedef struct _PROPSHEETHEADER FAR* LPPROPSHEETHEADERA;
+
+#else
+// We are building under Windows NT.
+
+// Go ahead and define LPPROPSHEETHEADERW as it should be defined!
+
+typedef struct _PROPSHEETHEADERW FAR* LPPROPSHEETHEADERW;
+typedef struct _PROPSHEETHEADERA FAR* LPPROPSHEETHEADERA;
+
+#ifdef UNICODE
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERW
+#else
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERA
+#endif
+
+#endif // PSM_SETFINISHTEXTA
+
+#else // WINVER
+
+// If WINVER < 0x400, then PROPSHEETHEADER stuff isn't defined.
+// The user won't be able to use the prop-sheet code, so we just define the
+// necessary structures to be void pointers to enable to header file to
+// at least compile correctly.
+
+//typedef void FAR* LPPROPSHEETHEADERW;
+//typedef void FAR* LPPROPSHEETHEADERA;
+
+#ifdef UNICODE
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERW
+#else
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERA
+#endif
+
+#endif // WINVER
+
+typedef struct tagOLEUIOBJECTPROPSW
+{
+ // These IN fields are standard across all OLEUI property sheets.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: global flags for the sheet
+
+ // Standard PROPSHEETHEADER used for extensibility
+ LPPROPSHEETHEADERW lpPS; // IN: property sheet header
+
+ // Data which allows manipulation of the object
+ DWORD dwObject; // IN: identifier for the object
+ LPOLEUIOBJINFOW lpObjInfo; // IN: interface to manipulate object
+
+ // Data which allows manipulation of the link
+ DWORD dwLink; // IN: identifier for the link
+ LPOLEUILINKINFOW lpLinkInfo; // IN: interface to manipulate link
+
+ // Data specfic to each page
+ LPOLEUIGNRLPROPSW lpGP; // IN: general page
+ LPOLEUIVIEWPROPSW lpVP; // IN: view page
+ LPOLEUILINKPROPSW lpLP; // IN: link page
+
+} OLEUIOBJECTPROPSW, *POLEUIOBJECTPROPSW, FAR* LPOLEUIOBJECTPROPSW;
+
+typedef struct tagOLEUIOBJECTPROPSA
+{
+ // These IN fields are standard across all OLEUI property sheets.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: global flags for the sheet
+
+ // Standard PROPSHEETHEADER used for extensibility
+ LPPROPSHEETHEADERA lpPS; // IN: property sheet header
+
+ // Data which allows manipulation of the object
+ DWORD dwObject; // IN: identifier for the object
+ LPOLEUIOBJINFOA lpObjInfo; // IN: interface to manipulate object
+
+ // Data which allows manipulation of the link
+ DWORD dwLink; // IN: identifier for the link
+ LPOLEUILINKINFOA lpLinkInfo; // IN: interface to manipulate link
+
+ // Data specfic to each page
+ LPOLEUIGNRLPROPSA lpGP; // IN: general page
+ LPOLEUIVIEWPROPSA lpVP; // IN: view page
+ LPOLEUILINKPROPSA lpLP; // IN: link page
+
+} OLEUIOBJECTPROPSA, *POLEUIOBJECTPROPSA, FAR* LPOLEUIOBJECTPROPSA;
+
+STDAPI_(UINT) OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
+STDAPI_(UINT) OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
+
+#ifdef UNICODE
+#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSW
+#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSW
+#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSW
+#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSW
+#define OleUIObjectProperties OleUIObjectPropertiesW
+#else
+#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSA
+#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSA
+#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSA
+#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSA
+#define OleUIObjectProperties OleUIObjectPropertiesA
+#endif
+
+// Flags for OLEUIOBJECTPROPS
+#define OPF_OBJECTISLINK 0x00000001L
+#define OPF_NOFILLDEFAULT 0x00000002L
+#define OPF_SHOWHELP 0x00000004L
+#define OPF_DISABLECONVERT 0x00000008L
+
+// Errors for OleUIObjectProperties
+#define OLEUI_OPERR_SUBPROPNULL (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_OPERR_SUBPROPINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_OPERR_PROPSHEETNULL (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_OPERR_PROPSHEETINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_OPERR_SUPPROP (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_OPERR_PROPSINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_OPERR_PAGESINCORRECT (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_OPERR_INVALIDPAGES (OLEUI_ERR_STANDARDMAX+7)
+#define OLEUI_OPERR_NOTSUPPORTED (OLEUI_ERR_STANDARDMAX+8)
+#define OLEUI_OPERR_DLGPROCNOTNULL (OLEUI_ERR_STANDARDMAX+9)
+#define OLEUI_OPERR_LPARAMNOTZERO (OLEUI_ERR_STANDARDMAX+10)
+
+#define OLEUI_GPERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+11)
+#define OLEUI_GPERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+12)
+#define OLEUI_GPERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+13)
+#define OLEUI_GPERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+14)
+#define OLEUI_VPERR_METAPICTINVALID (OLEUI_ERR_STANDARDMAX+15)
+#define OLEUI_VPERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+16)
+#define OLEUI_LPERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+17)
+#define OLEUI_LPERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+18)
+
+#define OLEUI_OPERR_PROPERTYSHEET (OLEUI_ERR_STANDARDMAX+19)
+#define OLEUI_OPERR_OBJINFOINVALID (OLEUI_ERR_STANDARDMAX+20)
+#define OLEUI_OPERR_LINKINFOINVALID (OLEUI_ERR_STANDARDMAX+21)
+
+// wParam used by PSM_QUERYSIBLINGS
+#define OLEUI_QUERY_GETCLASSID 0xFF00 // override class id for icon
+#define OLEUI_QUERY_LINKBROKEN 0xFF01 // after link broken
+
+/////////////////////////////////////////////////////////////////////////////
+// PROMPT USER DIALOGS
+
+int EXPORT FAR CDECL OleUIPromptUserW(int nTemplate, HWND hwndParent, ...);
+int EXPORT FAR CDECL OleUIPromptUserA(int nTemplate, HWND hwndParent, ...);
+
+#ifdef UNICODE
+#define OleUIPromptUser OleUIPromptUserW
+#else
+#define OleUIPromptUser OleUIPromptUserA
+#endif
+
+STDAPI_(BOOL) OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr,
+ HWND hwndParent, LPWSTR lpszTitle, int cLinks);
+STDAPI_(BOOL) OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr,
+ HWND hwndParent, LPSTR lpszTitle, int cLinks);
+
+#ifdef UNICODE
+#define OleUIUpdateLinks OleUIUpdateLinksW
+#else
+#define OleUIUpdateLinks OleUIUpdateLinksA
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // RC_INVOKED
+
+#endif //_OLE2UI_H_
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/oledlgs.h b/public/sdk/inc/mfc30/oledlgs.h
new file mode 100644
index 000000000..0142158e4
--- /dev/null
+++ b/public/sdk/inc/mfc30/oledlgs.h
@@ -0,0 +1,162 @@
+/*++ BUILD Version: 0001 Increment this if a change has global effects
+
+Copyright (c) 1993-1994, Microsoft Corporation
+
+Module Name:
+
+ oledlgs.h
+
+Abstract:
+
+ Resource ID identifiers for the OLE common dialog boxes.
+
+--*/
+
+// Help Button Identifier
+#define IDC_OLEUIHELP 99
+
+// Insert Object Dialog identifiers
+#define IDC_IO_CREATENEW 2100
+#define IDC_IO_CREATEFROMFILE 2101
+#define IDC_IO_LINKFILE 2102
+#define IDC_IO_OBJECTTYPELIST 2103
+#define IDC_IO_DISPLAYASICON 2104
+#define IDC_IO_CHANGEICON 2105
+#define IDC_IO_FILE 2106
+#define IDC_IO_FILEDISPLAY 2107
+#define IDC_IO_RESULTIMAGE 2108
+#define IDC_IO_RESULTTEXT 2109
+#define IDC_IO_ICONDISPLAY 2110
+#define IDC_IO_OBJECTTYPETEXT 2111 //{{NOHELP}}
+#define IDC_IO_FILETEXT 2112 //{{NOHELP}}
+#define IDC_IO_FILETYPE 2113
+#define IDC_IO_INSERTCONTROL 2114
+#define IDC_IO_ADDCONTROL 2115
+#define IDC_IO_CONTROLTYPELIST 2116
+
+// Paste Special Dialog identifiers
+#define IDC_PS_PASTE 500
+#define IDC_PS_PASTELINK 501
+#define IDC_PS_SOURCETEXT 502
+#define IDC_PS_PASTELIST 503 //{{NOHELP}}
+#define IDC_PS_PASTELINKLIST 504 //{{NOHELP}}
+#define IDC_PS_DISPLAYLIST 505
+#define IDC_PS_DISPLAYASICON 506
+#define IDC_PS_ICONDISPLAY 507
+#define IDC_PS_CHANGEICON 508
+#define IDC_PS_RESULTIMAGE 509
+#define IDC_PS_RESULTTEXT 510
+
+// Change Icon Dialog identifiers
+#define IDC_CI_GROUP 120 //{{NOHELP}}
+#define IDC_CI_CURRENT 121
+#define IDC_CI_CURRENTICON 122
+#define IDC_CI_DEFAULT 123
+#define IDC_CI_DEFAULTICON 124
+#define IDC_CI_FROMFILE 125
+#define IDC_CI_FROMFILEEDIT 126
+#define IDC_CI_ICONLIST 127
+#define IDC_CI_LABEL 128 //{{NOHELP}
+#define IDC_CI_LABELEDIT 129
+#define IDC_CI_BROWSE 130
+#define IDC_CI_ICONDISPLAY 131
+
+// Convert Dialog identifiers
+#define IDC_CV_OBJECTTYPE 150
+#define IDC_CV_DISPLAYASICON 152
+#define IDC_CV_CHANGEICON 153
+#define IDC_CV_ACTIVATELIST 154
+#define IDC_CV_CONVERTTO 155
+#define IDC_CV_ACTIVATEAS 156
+#define IDC_CV_RESULTTEXT 157
+#define IDC_CV_CONVERTLIST 158
+#define IDC_CV_ICONDISPLAY 165
+
+// Edit Links Dialog identifiers
+#define IDC_EL_CHANGESOURCE 201
+#define IDC_EL_AUTOMATIC 202
+#define IDC_EL_CANCELLINK 209
+#define IDC_EL_UPDATENOW 210
+#define IDC_EL_OPENSOURCE 211
+#define IDC_EL_MANUAL 212
+#define IDC_EL_LINKSOURCE 216
+#define IDC_EL_LINKTYPE 217
+#define IDC_EL_LINKSLISTBOX 206
+#define IDC_EL_COL1 220 //{{NOHELP}}
+#define IDC_EL_COL2 221 //{{NOHELP}}
+#define IDC_EL_COL3 222 //{{NOHELP}}
+
+// Busy dialog identifiers
+#define IDC_BZ_RETRY 600
+#define IDC_BZ_ICON 601
+#define IDC_BZ_MESSAGE1 602 //{{NOHELP}}
+#define IDC_BZ_SWITCHTO 604
+
+// Update Links dialog identifiers
+#define IDC_UL_METER 1029 //{{NOHELP}}
+#define IDC_UL_STOP 1030 //{{NOHELP}}
+#define IDC_UL_PERCENT 1031 //{{NOHELP}}
+#define IDC_UL_PROGRESS 1032 //{{NOHELP}}
+
+// User Prompt dialog identifiers
+#define IDC_PU_LINKS 900 //{{NOHELP}}
+#define IDC_PU_TEXT 901 //{{NOHELP}}
+#define IDC_PU_CONVERT 902 //{{NOHELP}}
+#define IDC_PU_ICON 908 //{{NOHELP}}
+
+// General Properties identifiers
+#define IDC_GP_OBJECTNAME 1009
+#define IDC_GP_OBJECTTYPE 1010
+#define IDC_GP_OBJECTSIZE 1011
+#define IDC_GP_CONVERT 1013
+#define IDC_GP_OBJECTICON 1014 //{{NOHELP}}
+#define IDC_GP_OBJECTLOCATION 1022
+
+// View Properties identifiers
+#define IDC_VP_PERCENT 1000
+#define IDC_VP_CHANGEICON 1001
+#define IDC_VP_EDITABLE 1002
+#define IDC_VP_ASICON 1003
+#define IDC_VP_RELATIVE 1005
+#define IDC_VP_SPIN 1006
+#define IDC_VP_SCALETXT 1034
+#define IDC_VP_ICONDISPLAY 1021
+#define IDC_VP_RESULTIMAGE 1033
+
+// Link Properties identifiers
+#define IDC_LP_OPENSOURCE 1006
+#define IDC_LP_UPDATENOW 1007
+#define IDC_LP_BREAKLINK 1008
+#define IDC_LP_LINKSOURCE 1012
+#define IDC_LP_CHANGESOURCE 1015
+#define IDC_LP_AUTOMATIC 1016
+#define IDC_LP_MANUAL 1017
+#define IDC_LP_DATE 1018
+#define IDC_LP_TIME 1019
+
+// Dialog Identifiers as passed in Help messages to identify the source.
+#define IDD_INSERTOBJECT 1000
+#define IDD_CHANGEICON 1001
+#define IDD_CONVERT 1002
+#define IDD_PASTESPECIAL 1003
+#define IDD_EDITLINKS 1004
+#define IDD_BUSY 1006
+#define IDD_UPDATELINKS 1007
+#define IDD_CHANGESOURCE 1009
+#define IDD_INSERTFILEBROWSE 1010
+#define IDD_CHANGEICONBROWSE 1011
+#define IDD_CONVERTONLY 1012
+#define IDD_CHANGESOURCE4 1013
+#define IDD_GNRLPROPS 1100
+#define IDD_VIEWPROPS 1101
+#define IDD_LINKPROPS 1102
+
+// The following Dialogs are message dialogs used by OleUIPromptUser API
+#define IDD_CANNOTUPDATELINK 1008
+#define IDD_LINKSOURCEUNAVAILABLE 1020
+#define IDD_SERVERNOTREG 1021
+#define IDD_LINKTYPECHANGED 1022
+#define IDD_SERVERNOTFOUND 1023
+#define IDD_OUTOFMEMORY 1024
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc30/res/copy4way.cur b/public/sdk/inc/mfc30/res/copy4way.cur
new file mode 100644
index 000000000..e0f41447d
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/copy4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/help.cur b/public/sdk/inc/mfc30/res/help.cur
new file mode 100644
index 000000000..217090e5b
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/help.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/help.rsc b/public/sdk/inc/mfc30/res/help.rsc
new file mode 100644
index 000000000..3e21661ee
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/help.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/magnify.cur b/public/sdk/inc/mfc30/res/magnify.cur
new file mode 100644
index 000000000..d9a7042cf
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/magnify.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/magnify.rsc b/public/sdk/inc/mfc30/res/magnify.rsc
new file mode 100644
index 000000000..5d0c3813a
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/magnify.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/minifwnd.bmp b/public/sdk/inc/mfc30/res/minifwnd.bmp
new file mode 100644
index 000000000..b5861c4f7
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/minifwnd.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/move4way.cur b/public/sdk/inc/mfc30/res/move4way.cur
new file mode 100644
index 000000000..545afa10d
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/move4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/nodrop.cur b/public/sdk/inc/mfc30/res/nodrop.cur
new file mode 100644
index 000000000..9fc75a562
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/nodrop.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/psscr.bmp b/public/sdk/inc/mfc30/res/psscr.bmp
new file mode 100644
index 000000000..1819cd5d9
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/psscr.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/psscr_l.bmp b/public/sdk/inc/mfc30/res/psscr_l.bmp
new file mode 100644
index 000000000..388032d45
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/psscr_l.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/psscr_ld.bmp b/public/sdk/inc/mfc30/res/psscr_ld.bmp
new file mode 100644
index 000000000..c3398e0ad
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/psscr_ld.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/psscr_r.bmp b/public/sdk/inc/mfc30/res/psscr_r.bmp
new file mode 100644
index 000000000..6eab0fd61
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/psscr_r.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/psscr_rd.bmp b/public/sdk/inc/mfc30/res/psscr_rd.bmp
new file mode 100644
index 000000000..da0c879d3
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/psscr_rd.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/psscroll.bmp b/public/sdk/inc/mfc30/res/psscroll.bmp
new file mode 100644
index 000000000..8598ded38
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/psscroll.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/sarrows.cur b/public/sdk/inc/mfc30/res/sarrows.cur
new file mode 100644
index 000000000..b4e601ef0
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/sarrows.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/split.rsc b/public/sdk/inc/mfc30/res/split.rsc
new file mode 100644
index 000000000..8afb35a95
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/split.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/splith.cur b/public/sdk/inc/mfc30/res/splith.cur
new file mode 100644
index 000000000..bb03d7734
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/splith.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/splitv.cur b/public/sdk/inc/mfc30/res/splitv.cur
new file mode 100644
index 000000000..1fd0d55c8
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/splitv.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/trck4way.cur b/public/sdk/inc/mfc30/res/trck4way.cur
new file mode 100644
index 000000000..974d02017
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/trck4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/trcknesw.cur b/public/sdk/inc/mfc30/res/trcknesw.cur
new file mode 100644
index 000000000..f92de6e68
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/trcknesw.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/trckns.cur b/public/sdk/inc/mfc30/res/trckns.cur
new file mode 100644
index 000000000..49e558267
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/trckns.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/trcknwse.cur b/public/sdk/inc/mfc30/res/trcknwse.cur
new file mode 100644
index 000000000..7a7d8820d
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/trcknwse.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/res/trckwe.cur b/public/sdk/inc/mfc30/res/trckwe.cur
new file mode 100644
index 000000000..a069140e7
--- /dev/null
+++ b/public/sdk/inc/mfc30/res/trckwe.cur
Binary files differ
diff --git a/public/sdk/inc/mfc30/winres.h b/public/sdk/inc/mfc30/winres.h
new file mode 100644
index 000000000..441789706
--- /dev/null
+++ b/public/sdk/inc/mfc30/winres.h
@@ -0,0 +1,305 @@
+// Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992 Microsoft Corporation,
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and Microsoft
+// QuickHelp and/or WinHelp documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// winres.h - Windows resource definitions
+// extracted from WINDOWS.H
+// Version 3.10
+// Copyright (c) 1985-1992, Microsoft Corp. All rights reserved.
+//
+
+#define VS_VERSION_INFO 1
+
+#ifdef APSTUDIO_INVOKED
+#define APSTUDIO_HIDDEN_SYMBOLS // Ignore following symbols
+#endif
+
+#define OBM_CLOSE 32754
+#define OBM_UPARROW 32753
+#define OBM_DNARROW 32752
+#define OBM_RGARROW 32751
+#define OBM_LFARROW 32750
+#define OBM_REDUCE 32749
+#define OBM_ZOOM 32748
+#define OBM_RESTORE 32747
+#define OBM_REDUCED 32746
+#define OBM_ZOOMD 32745
+#define OBM_RESTORED 32744
+#define OBM_UPARROWD 32743
+#define OBM_DNARROWD 32742
+#define OBM_RGARROWD 32741
+#define OBM_LFARROWD 32740
+#define OBM_MNARROW 32739
+#define OBM_COMBO 32738
+#define OBM_UPARROWI 32737
+#define OBM_DNARROWI 32736
+#define OBM_RGARROWI 32735
+#define OBM_LFARROWI 32734
+#define OBM_OLD_CLOSE 32767
+#define OBM_SIZE 32766
+#define OBM_OLD_UPARROW 32765
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_LFARROW 32762
+#define OBM_BTSIZE 32761
+#define OBM_CHECK 32760
+#define OBM_CHECKBOXES 32759
+#define OBM_BTNCORNERS 32758
+#define OBM_OLD_REDUCE 32757
+#define OBM_OLD_ZOOM 32756
+#define OBM_OLD_RESTORE 32755
+#define OCR_NORMAL 32512
+#define OCR_IBEAM 32513
+#define OCR_WAIT 32514
+#define OCR_CROSS 32515
+#define OCR_UP 32516
+#define OCR_SIZE 32640
+#define OCR_ICON 32641
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_ICOCUR 32647
+#define OIC_SAMPLE 32512
+#define OIC_HAND 32513
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_NOTE 32516
+
+#define WS_OVERLAPPED 0x00000000L
+#define WS_POPUP 0x80000000L
+#define WS_CHILD 0x40000000L
+#define WS_CLIPSIBLINGS 0x04000000L
+#define WS_CLIPCHILDREN 0x02000000L
+#define WS_VISIBLE 0x10000000L
+#define WS_DISABLED 0x08000000L
+#define WS_MINIMIZE 0x20000000L
+#define WS_MAXIMIZE 0x01000000L
+#define WS_CAPTION 0x00C00000L
+#define WS_BORDER 0x00800000L
+#define WS_DLGFRAME 0x00400000L
+#define WS_VSCROLL 0x00200000L
+#define WS_HSCROLL 0x00100000L
+#define WS_SYSMENU 0x00080000L
+#define WS_THICKFRAME 0x00040000L
+#define WS_MINIMIZEBOX 0x00020000L
+#define WS_MAXIMIZEBOX 0x00010000L
+#define WS_GROUP 0x00020000L
+#define WS_TABSTOP 0x00010000L
+
+// other aliases
+#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
+#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
+#define WS_CHILDWINDOW (WS_CHILD)
+#define WS_TILED WS_OVERLAPPED
+#define WS_ICONIC WS_MINIMIZE
+#define WS_SIZEBOX WS_THICKFRAME
+#define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
+
+#define VK_LBUTTON 0x01
+#define VK_RBUTTON 0x02
+#define VK_CANCEL 0x03
+#define VK_MBUTTON 0x04
+#define VK_BACK 0x08
+#define VK_TAB 0x09
+#define VK_CLEAR 0x0C
+#define VK_RETURN 0x0D
+#define VK_SHIFT 0x10
+#define VK_CONTROL 0x11
+#define VK_MENU 0x12
+#define VK_PAUSE 0x13
+#define VK_CAPITAL 0x14
+#define VK_ESCAPE 0x1B
+#define VK_SPACE 0x20
+#define VK_PRIOR 0x21
+#define VK_NEXT 0x22
+#define VK_END 0x23
+#define VK_HOME 0x24
+#define VK_LEFT 0x25
+#define VK_UP 0x26
+#define VK_RIGHT 0x27
+#define VK_DOWN 0x28
+#define VK_SELECT 0x29
+#define VK_PRINT 0x2A
+#define VK_EXECUTE 0x2B
+#define VK_SNAPSHOT 0x2C
+#define VK_INSERT 0x2D
+#define VK_DELETE 0x2E
+#define VK_HELP 0x2F
+#define VK_NUMPAD0 0x60
+#define VK_NUMPAD1 0x61
+#define VK_NUMPAD2 0x62
+#define VK_NUMPAD3 0x63
+#define VK_NUMPAD4 0x64
+#define VK_NUMPAD5 0x65
+#define VK_NUMPAD6 0x66
+#define VK_NUMPAD7 0x67
+#define VK_NUMPAD8 0x68
+#define VK_NUMPAD9 0x69
+#define VK_MULTIPLY 0x6A
+#define VK_ADD 0x6B
+#define VK_SEPARATOR 0x6C
+#define VK_SUBTRACT 0x6D
+#define VK_DECIMAL 0x6E
+#define VK_DIVIDE 0x6F
+#define VK_F1 0x70
+#define VK_F2 0x71
+#define VK_F3 0x72
+#define VK_F4 0x73
+#define VK_F5 0x74
+#define VK_F6 0x75
+#define VK_F7 0x76
+#define VK_F8 0x77
+#define VK_F9 0x78
+#define VK_F10 0x79
+#define VK_F11 0x7A
+#define VK_F12 0x7B
+#define VK_F13 0x7C
+#define VK_F14 0x7D
+#define VK_F15 0x7E
+#define VK_F16 0x7F
+#define VK_F17 0x80
+#define VK_F18 0x81
+#define VK_F19 0x82
+#define VK_F20 0x83
+#define VK_F21 0x84
+#define VK_F22 0x85
+#define VK_F23 0x86
+#define VK_F24 0x87
+#define VK_NUMLOCK 0x90
+#define VK_SCROLL 0x91
+
+#define SC_SIZE 0xF000
+#define SC_MOVE 0xF010
+#define SC_MINIMIZE 0xF020
+#define SC_MAXIMIZE 0xF030
+#define SC_NEXTWINDOW 0xF040
+#define SC_PREVWINDOW 0xF050
+#define SC_CLOSE 0xF060
+#define SC_VSCROLL 0xF070
+#define SC_HSCROLL 0xF080
+#define SC_MOUSEMENU 0xF090
+#define SC_KEYMENU 0xF100
+#define SC_ARRANGE 0xF110
+#define SC_RESTORE 0xF120
+#define SC_TASKLIST 0xF130
+#define SC_SCREENSAVE 0xF140
+#define SC_HOTKEY 0xF150
+
+#define DS_ABSALIGN 0x01L
+#define DS_SYSMODAL 0x02L
+#define DS_LOCALEDIT 0x20L
+#define DS_SETFONT 0x40L
+#define DS_MODALFRAME 0x80L
+#define DS_NOIDLEMSG 0x100L
+
+#ifdef _MAC
+#define DS_WINDOWSUI 0x8000L
+#endif
+
+#define SS_LEFT 0x00000000L
+#define SS_CENTER 0x00000001L
+#define SS_RIGHT 0x00000002L
+#define SS_ICON 0x00000003L
+#define SS_BLACKRECT 0x00000004L
+#define SS_GRAYRECT 0x00000005L
+#define SS_WHITERECT 0x00000006L
+#define SS_BLACKFRAME 0x00000007L
+#define SS_GRAYFRAME 0x00000008L
+#define SS_WHITEFRAME 0x00000009L
+#define SS_SIMPLE 0x0000000BL
+#define SS_LEFTNOWORDWRAP 0x0000000CL
+#define SS_NOPREFIX 0x00000080L
+
+#define BS_PUSHBUTTON 0x00000000L
+#define BS_DEFPUSHBUTTON 0x00000001L
+#define BS_CHECKBOX 0x00000002L
+#define BS_AUTOCHECKBOX 0x00000003L
+#define BS_RADIOBUTTON 0x00000004L
+#define BS_3STATE 0x00000005L
+#define BS_AUTO3STATE 0x00000006L
+#define BS_GROUPBOX 0x00000007L
+#define BS_USERBUTTON 0x00000008L
+#define BS_AUTORADIOBUTTON 0x00000009L
+#define BS_OWNERDRAW 0x0000000BL
+#define BS_LEFTTEXT 0x00000020L
+
+#define ES_LEFT 0x00000000L
+#define ES_CENTER 0x00000001L
+#define ES_RIGHT 0x00000002L
+#define ES_MULTILINE 0x00000004L
+#define ES_UPPERCASE 0x00000008L
+#define ES_LOWERCASE 0x00000010L
+#define ES_PASSWORD 0x00000020L
+#define ES_AUTOVSCROLL 0x00000040L
+#define ES_AUTOHSCROLL 0x00000080L
+#define ES_NOHIDESEL 0x00000100L
+#define ES_OEMCONVERT 0x00000400L
+#define ES_READONLY 0x00000800L
+#define ES_WANTRETURN 0x00001000L
+
+#define SBS_HORZ 0x0000L
+#define SBS_VERT 0x0001L
+#define SBS_TOPALIGN 0x0002L
+#define SBS_LEFTALIGN 0x0002L
+#define SBS_BOTTOMALIGN 0x0004L
+#define SBS_RIGHTALIGN 0x0004L
+#define SBS_SIZEBOXTOPLEFTALIGN 0x0002L
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
+#define SBS_SIZEBOX 0x0008L
+
+#define LBS_NOTIFY 0x0001L
+#define LBS_SORT 0x0002L
+#define LBS_NOREDRAW 0x0004L
+#define LBS_MULTIPLESEL 0x0008L
+#define LBS_OWNERDRAWFIXED 0x0010L
+#define LBS_OWNERDRAWVARIABLE 0x0020L
+#define LBS_HASSTRINGS 0x0040L
+#define LBS_USETABSTOPS 0x0080L
+#define LBS_NOINTEGRALHEIGHT 0x0100L
+#define LBS_MULTICOLUMN 0x0200L
+#define LBS_WANTKEYBOARDINPUT 0x0400L
+#define LBS_EXTENDEDSEL 0x0800L
+#define LBS_DISABLENOSCROLL 0x1000L
+#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
+
+#define CBS_SIMPLE 0x0001L
+#define CBS_DROPDOWN 0x0002L
+#define CBS_DROPDOWNLIST 0x0003L
+#define CBS_OWNERDRAWFIXED 0x0010L
+#define CBS_OWNERDRAWVARIABLE 0x0020L
+#define CBS_AUTOHSCROLL 0x0040L
+#define CBS_OEMCONVERT 0x0080L
+#define CBS_SORT 0x0100L
+#define CBS_HASSTRINGS 0x0200L
+#define CBS_NOINTEGRALHEIGHT 0x0400L
+#define CBS_DISABLENOSCROLL 0x0800L
+
+// operation messages sent to DLGINIT
+#define WM_USER 0x0400
+#define LB_ADDSTRING (WM_USER+1)
+#define CB_ADDSTRING (WM_USER+3)
+
+#ifdef APSTUDIO_INVOKED
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+#define IDOK 1
+#define IDCANCEL 2
+#define IDABORT 3
+#define IDRETRY 4
+#define IDIGNORE 5
+#define IDYES 6
+#define IDNO 7
+
+#ifdef IDC_STATIC
+#undef IDC_STATIC
+#endif
+#define IDC_STATIC (-1)
diff --git a/public/sdk/inc/mfc40/afx.h b/public/sdk/inc/mfc40/afx.h
new file mode 100644
index 000000000..d2981a3b2
--- /dev/null
+++ b/public/sdk/inc/mfc40/afx.h
@@ -0,0 +1,1818 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFX_H__
+#define __AFX_H__
+
+#ifndef __cplusplus
+ #error MFC requires C++ compilation (use a .cpp suffix)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#include <afxver_.h> // Target version control
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifndef _AFXDLL
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "nafxcwd.lib")
+ #else
+ #pragma comment(lib, "nafxcw.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "uafxcwd.lib")
+ #else
+ #pragma comment(lib, "uafxcw.lib")
+ #endif
+ #endif
+#else
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfc40d.lib")
+ #pragma comment(lib, "mfcs40d.lib")
+ #else
+ #pragma comment(lib, "mfc40.lib")
+ #pragma comment(lib, "mfcs40.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfc40ud.lib")
+ #pragma comment(lib, "mfcs40ud.lib")
+ #else
+ #pragma comment(lib, "mfc40u.lib")
+ #pragma comment(lib, "mfcs40u.lib")
+ #endif
+ #endif
+#endif
+
+#ifdef _DLL
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "msvcrtd.lib")
+ #else
+ #pragma comment(lib, "msvcrt.lib")
+ #endif
+#else
+#ifdef _MT
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "libcmtd.lib")
+ #else
+ #pragma comment(lib, "libcmt.lib")
+ #endif
+#else
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "libcd.lib")
+ #else
+ #pragma comment(lib, "libc.lib")
+ #endif
+#endif
+#endif
+
+#pragma comment(lib, "kernel32.lib")
+#pragma comment(lib, "user32.lib")
+#pragma comment(lib, "gdi32.lib")
+#pragma comment(lib, "comdlg32.lib")
+#pragma comment(lib, "winspool.lib")
+#pragma comment(lib, "advapi32.lib")
+#pragma comment(lib, "shell32.lib")
+#pragma comment(lib, "comctl32.lib")
+
+#else //!_MAC
+
+//////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#ifndef _AFXDLL
+ #ifdef _DEBUG
+ #ifdef _68K_
+ #pragma comment(lib, "nafxcmd.lib")
+ #else
+ #pragma comment(lib, "nafxcpd.lib")
+ #endif
+ #else
+ #ifdef _68K_
+ #pragma comment(lib, "nafxcm.lib")
+ #else
+ #pragma comment(lib, "nafxcp.lib")
+ #endif
+ #endif
+#else
+ #ifdef _DEBUG
+ #ifdef _68K_
+ #error _AFXDLL is not supported for 68K Macintosh
+ #else
+ #pragma comment(lib, "mfc40pd.lib")
+ #pragma comment(lib, "mfcs40pd.lib")
+ #endif
+ #else
+ #ifdef _68K_
+ #error _AFXDLL is not supported for 68K Macintosh
+ #else
+ #pragma comment(lib, "mfc40p.lib")
+ #pragma comment(lib, "mfcs40p.lib")
+ #endif
+ #endif
+#endif
+
+#if !defined(_AFXDLL) && !defined(_USRDLL)
+ #ifdef _DEBUG
+ #pragma comment(lib, "wlmd.lib")
+ #pragma comment(lib, "comctld.lib")
+ #else
+ #pragma comment(lib, "wlm.lib")
+ #pragma comment(lib, "comctl.lib")
+ #endif
+ #pragma comment(linker, "/macres:wlm.rsc /macres:commdlg.rsc")
+ #pragma comment(linker, "/macres:comctl.rsc")
+ #ifdef _MPPC_
+ #pragma comment(lib, "privint.lib")
+ #pragma comment(lib, "threads.lib")
+ #pragma comment(lib, "math.lib")
+ #endif
+#else
+ #ifdef _DEBUG
+ #pragma comment(lib, "msvcwlmd.lib")
+ #pragma comment(lib, "msvcctld.lib")
+ #else
+ #pragma comment(lib, "msvcwlm.lib")
+ #pragma comment(lib, "msvcctl.lib")
+ #endif
+#endif
+
+#ifdef _68K_
+ #ifdef _DEBUG
+ #pragma comment(lib, "swapd.lib")
+ #else
+ #pragma comment(lib, "swap.lib")
+ #endif
+ #pragma comment(lib, "lsanes.lib")
+ #pragma comment(lib, "llibcs.lib")
+ #pragma comment(lib, "osl.lib")
+#endif
+
+#ifdef _MPPC_
+ #ifdef _DLL
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "msvcrtd.lib")
+ #else
+ #pragma comment(lib, "msvcrt.lib")
+ #endif
+ #else
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "libcd.lib")
+ #else
+ #pragma comment(lib, "libc.lib")
+ #endif
+ #endif
+#endif
+
+#endif //_MAC
+
+// force inclusion of NOLIB.OBJ for /disallowlib directives
+#pragma comment(linker, "/include:__afxForceEXCLUDE")
+
+// force inclusion of DLLMODUL.OBJ for _USRDLL
+#ifdef _USRDLL
+#pragma comment(linker, "/include:__afxForceUSRDLL")
+#endif
+
+// force inclusion of STDAFX.OBJ for precompiled types
+#ifdef _AFXDLL
+#pragma comment(linker, "/include:__afxForceSTDAFX")
+#endif
+
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+// in addition to standard primitive data types and various helper macros
+
+struct CRuntimeClass; // object type information
+
+class CObject; // the root of all objects classes
+
+ class CException; // the root of all exceptions
+ class CArchiveException; // archive exception
+ class CFileException; // file exception
+ class CSimpleException;
+ class CMemoryException; // out-of-memory exception
+ class CNotSupportedException; // feature not supported exception
+
+ class CFile; // raw binary file
+ class CStdioFile; // buffered stdio text/binary file
+ class CMemFile; // memory based file
+
+// Non CObject classes
+class CString; // growable string type
+class CTimeSpan; // time/date difference
+class CTime; // absolute time/date
+struct CFileStatus; // file status information
+struct CMemoryState; // diagnostic memory support
+
+class CArchive; // object persistence tool
+class CDumpContext; // object diagnostic dumping
+
+/////////////////////////////////////////////////////////////////////////////
+// Other includes from standard "C" runtimes
+
+#ifndef _INC_STRING
+ #include <string.h>
+#endif
+#ifndef _INC_STDIO
+ #include <stdio.h>
+#endif
+#ifndef _INC_STDLIB
+ #include <stdlib.h>
+#endif
+#ifndef _INC_TIME
+ #include <time.h>
+#endif
+#ifndef _INC_LIMITS
+ #include <limits.h>
+#endif
+#ifndef _INC_STDDEF
+ #include <stddef.h>
+#endif
+#ifndef _INC_STDARG
+ #include <stdarg.h>
+#endif
+
+#ifndef _AFX_NO_DEBUG_CRT
+#ifndef _INC_CRTDBG
+ #include <crtdbg.h>
+#endif
+#endif // _AFX_NO_DEBUG_CRT
+
+#ifdef _AFX_OLD_EXCEPTIONS
+// use setjmp and helper functions instead of C++ keywords
+#ifndef _INC_SETJMP
+ #pragma warning(disable: 4611)
+ #include <setjmp.h>
+#endif
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic types
+
+// abstract iteration position
+struct __POSITION { int unused; };
+typedef __POSITION* POSITION;
+
+#define CPlex CPlexNew
+struct CPlex;
+
+struct _AFX_DOUBLE { BYTE doubleBits[sizeof(double)]; };
+struct _AFX_FLOAT { BYTE floatBits[sizeof(float)]; };
+
+// Standard constants
+#undef FALSE
+#undef TRUE
+#undef NULL
+
+#define FALSE 0
+#define TRUE 1
+#define NULL 0
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic support
+
+#ifdef _DEBUG
+
+BOOL AFXAPI AfxAssertFailedLine(LPCSTR lpszFileName, int nLine);
+
+void AFX_CDECL AfxTrace(LPCTSTR lpszFormat, ...);
+// Note: file names are still ANSI strings (filenames rarely need UNICODE)
+void AFXAPI AfxAssertValidObject(const CObject* pOb,
+ LPCSTR lpszFileName, int nLine);
+void AFXAPI AfxDump(const CObject* pOb); // Dump an object from CodeView
+
+#define TRACE ::AfxTrace
+#define THIS_FILE __FILE__
+#define ASSERT(f) \
+ do \
+ { \
+ if (!(f) && AfxAssertFailedLine(THIS_FILE, __LINE__)) \
+ AfxDebugBreak(); \
+ } while (0) \
+
+#define VERIFY(f) ASSERT(f)
+#define ASSERT_VALID(pOb) (::AfxAssertValidObject(pOb, THIS_FILE, __LINE__))
+#define DEBUG_ONLY(f) (f)
+
+// The following trace macros are provided for backward compatiblity
+// (they also take a fixed number of parameters which provides
+// some amount of extra error checking)
+#define TRACE0(sz) ::AfxTrace(_T("%s"), _T(sz))
+#define TRACE1(sz, p1) ::AfxTrace(_T(sz), p1)
+#define TRACE2(sz, p1, p2) ::AfxTrace(_T(sz), p1, p2)
+#define TRACE3(sz, p1, p2, p3) ::AfxTrace(_T(sz), p1, p2, p3)
+
+// These AFX_DUMP macros also provided for backward compatibility
+#define AFX_DUMP0(dc, sz) dc << _T(sz)
+#define AFX_DUMP1(dc, sz, p1) dc << _T(sz) << p1
+
+#else // _DEBUG
+
+#define ASSERT(f) ((void)0)
+#define VERIFY(f) ((void)(f))
+#define ASSERT_VALID(pOb) ((void)0)
+#define DEBUG_ONLY(f) ((void)0)
+inline void AFX_CDECL AfxTrace(LPCTSTR, ...) { }
+#define TRACE 1 ? (void)0 : ::AfxTrace
+#define TRACE0(sz)
+#define TRACE1(sz, p1)
+#define TRACE2(sz, p1, p2)
+#define TRACE3(sz, p1, p2, p3)
+
+#endif // !_DEBUG
+
+#define ASSERT_POINTER(p, type) \
+ ASSERT(((p) != NULL) && AfxIsValidAddress((p), sizeof(type), FALSE))
+
+#define ASSERT_NULL_OR_POINTER(p, type) \
+ ASSERT(((p) == NULL) || AfxIsValidAddress((p), sizeof(type), FALSE))
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+#ifndef ALL_WARNINGS
+// warnings generated with common MFC/Windows code
+#pragma warning(disable: 4127) // constant expression for TRACE/ASSERT
+#pragma warning(disable: 4134) // message map member fxn casts
+#pragma warning(disable: 4201) // nameless unions are part of C++
+#pragma warning(disable: 4511) // private copy constructors are good to have
+#pragma warning(disable: 4512) // private operator= are good to have
+#pragma warning(disable: 4514) // unreferenced inlines are common
+#pragma warning(disable: 4710) // private constructors are disallowed
+#pragma warning(disable: 4705) // statement has no effect in optimized code
+// warnings caused by normal optimizations
+#ifndef _DEBUG
+#pragma warning(disable: 4701) // local variable *may* be used without init
+#pragma warning(disable: 4702) // unreachable code caused by optimizations
+#pragma warning(disable: 4791) // loss of debugging info in retail version
+#endif
+// warnings specific to _AFXDLL version
+#ifdef _AFXDLL
+#pragma warning(disable: 4204) // non-constant aggregate initializer
+#endif
+#ifdef _AFXDLL
+#pragma warning(disable: 4275) // deriving exported class from non-exported
+#pragma warning(disable: 4251) // using non-exported as public in exported
+#endif
+#endif //!ALL_WARNINGS
+
+#ifdef _DEBUG
+#define UNUSED(x)
+#else
+#define UNUSED(x) x
+#endif
+#define UNUSED_ALWAYS(x) x
+
+/////////////////////////////////////////////////////////////////////////////
+// Other implementation helpers
+
+#define BEFORE_START_POSITION ((POSITION)-1L)
+
+/////////////////////////////////////////////////////////////////////////////
+// explicit initialization for general purpose classes
+
+BOOL AFXAPI AfxInitialize(BOOL bDLL = FALSE, DWORD dwVersion = _MFC_VER);
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic object model
+
+struct CRuntimeClass
+{
+// Attributes
+ LPCSTR m_lpszClassName;
+ int m_nObjectSize;
+ UINT m_wSchema; // schema number of the loaded class
+ CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
+#ifdef _AFXDLL
+ CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
+#else
+ CRuntimeClass* m_pBaseClass;
+#endif
+
+// Operations
+ CObject* CreateObject();
+ BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;
+
+// Implementation
+ void Store(CArchive& ar) const;
+ static CRuntimeClass* PASCAL Load(CArchive& ar, UINT* pwSchemaNum);
+
+ // CRuntimeClass objects linked together in simple list
+ CRuntimeClass* m_pNextClass; // linked list of registered classes
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+#ifndef _OLEAUTO_H_
+#ifdef OLE2ANSI
+ typedef LPSTR BSTR;
+#else
+ typedef LPWSTR BSTR;// must (semantically) match typedef in oleauto.h
+#endif
+#endif
+
+struct CStringData
+{
+ long nRefs; // reference count
+ int nDataLength;
+ int nAllocLength;
+ // TCHAR data[nAllocLength]
+
+ TCHAR* data()
+ { return (TCHAR*)(this+1); }
+};
+
+class CString
+{
+public:
+// Constructors
+ CString();
+ CString(const CString& stringSrc);
+ CString(TCHAR ch, int nRepeat = 1);
+ CString(LPCSTR lpsz);
+ CString(LPCWSTR lpsz);
+ CString(LPCTSTR lpch, int nLength);
+ CString(const unsigned char* psz);
+
+// Attributes & Operations
+ // as an array of characters
+ int GetLength() const;
+ BOOL IsEmpty() const;
+ void Empty(); // free up the data
+
+ TCHAR GetAt(int nIndex) const; // 0 based
+ TCHAR operator[](int nIndex) const; // same as GetAt
+ void SetAt(int nIndex, TCHAR ch);
+ operator LPCTSTR() const; // as a C string
+
+ // overloaded assignment
+ const CString& operator=(const CString& stringSrc);
+ const CString& operator=(TCHAR ch);
+#ifdef _UNICODE
+ const CString& operator=(char ch);
+#endif
+ const CString& operator=(LPCSTR lpsz);
+ const CString& operator=(LPCWSTR lpsz);
+ const CString& operator=(const unsigned char* psz);
+
+ // string concatenation
+ const CString& operator+=(const CString& string);
+ const CString& operator+=(TCHAR ch);
+#ifdef _UNICODE
+ const CString& operator+=(char ch);
+#endif
+ const CString& operator+=(LPCTSTR lpsz);
+
+ friend CString AFXAPI operator+(const CString& string1,
+ const CString& string2);
+ friend CString AFXAPI operator+(const CString& string, TCHAR ch);
+ friend CString AFXAPI operator+(TCHAR ch, const CString& string);
+#ifdef _UNICODE
+ friend CString AFXAPI operator+(const CString& string, char ch);
+ friend CString AFXAPI operator+(char ch, const CString& string);
+#endif
+ friend CString AFXAPI operator+(const CString& string, LPCTSTR lpsz);
+ friend CString AFXAPI operator+(LPCTSTR lpsz, const CString& string);
+
+ // string comparison
+ int Compare(LPCTSTR lpsz) const; // straight character
+ int CompareNoCase(LPCTSTR lpsz) const; // ignore case
+ int Collate(LPCTSTR lpsz) const; // NLS aware
+
+ // simple sub-string extraction
+ CString Mid(int nFirst, int nCount) const;
+ CString Mid(int nFirst) const;
+ CString Left(int nCount) const;
+ CString Right(int nCount) const;
+
+ CString SpanIncluding(LPCTSTR lpszCharSet) const;
+ CString SpanExcluding(LPCTSTR lpszCharSet) const;
+
+ // upper/lower/reverse conversion
+ void MakeUpper();
+ void MakeLower();
+ void MakeReverse();
+
+ // trimming whitespace (either side)
+ void TrimRight();
+ void TrimLeft();
+
+ // searching (return starting index, or -1 if not found)
+ // look for a single character match
+ int Find(TCHAR ch) const; // like "C" strchr
+ int ReverseFind(TCHAR ch) const;
+ int FindOneOf(LPCTSTR lpszCharSet) const;
+
+ // look for a specific sub-string
+ int Find(LPCTSTR lpszSub) const; // like "C" strstr
+
+ // simple formatting
+ void AFX_CDECL Format(LPCTSTR lpszFormat, ...);
+ void AFX_CDECL Format(UINT nFormatID, ...);
+
+#ifndef _MAC
+ // formatting for localization (uses FormatMessage API)
+ void AFX_CDECL FormatMessage(LPCTSTR lpszFormat, ...);
+ void AFX_CDECL FormatMessage(UINT nFormatID, ...);
+#endif
+
+ // input and output
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc,
+ const CString& string);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, const CString& string);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CString& string);
+
+ // Windows support
+ BOOL LoadString(UINT nID); // load from string resource
+ // 255 chars max
+#ifndef _UNICODE
+ // ANSI <-> OEM support (convert string in place)
+ void AnsiToOem();
+ void OemToAnsi();
+#endif
+
+#ifndef _AFX_NO_BSTR_SUPPORT
+ // OLE BSTR support (use for OLE automation)
+ BSTR AllocSysString() const;
+ BSTR SetSysString(BSTR* pbstr) const;
+#endif
+
+ // Access to string implementation buffer as "C" character array
+ LPTSTR GetBuffer(int nMinBufLength);
+ void ReleaseBuffer(int nNewLength = -1);
+ LPTSTR GetBufferSetLength(int nNewLength);
+ void FreeExtra();
+
+ // Use LockBuffer/UnlockBuffer to turn refcounting off
+ LPTSTR LockBuffer();
+ void UnlockBuffer();
+
+// Implementation
+public:
+ ~CString();
+ int GetAllocLength() const;
+
+protected:
+ LPTSTR m_pchData; // pointer to ref counted string data
+
+ // implementation helpers
+ CStringData* GetData() const;
+ void Init();
+ void AllocCopy(CString& dest, int nCopyLen, int nCopyIndex, int nExtraLen) const;
+ void AllocBuffer(int nLen);
+ void AssignCopy(int nSrcLen, LPCTSTR lpszSrcData);
+ void ConcatCopy(int nSrc1Len, LPCTSTR lpszSrc1Data, int nSrc2Len, LPCTSTR lpszSrc2Data);
+ void ConcatInPlace(int nSrcLen, LPCTSTR lpszSrcData);
+ void FormatV(LPCTSTR lpszFormat, va_list argList);
+ void CopyBeforeWrite();
+ void AllocBeforeWrite(int nLen);
+ void Release();
+ static void PASCAL Release(CStringData* pData);
+ static int PASCAL SafeStrlen(LPCTSTR lpsz);
+};
+
+// Compare helpers
+BOOL AFXAPI operator==(const CString& s1, const CString& s2);
+BOOL AFXAPI operator==(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator==(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator!=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator!=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator!=(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator<(const CString& s1, const CString& s2);
+BOOL AFXAPI operator<(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator<(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator>(const CString& s1, const CString& s2);
+BOOL AFXAPI operator>(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator>(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator<=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator<=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator<=(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator>=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator>=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator>=(LPCTSTR s1, const CString& s2);
+
+// conversion helpers
+int AFX_CDECL _wcstombsz(char* mbstr, const wchar_t* wcstr, size_t count);
+int AFX_CDECL _mbstowcsz(wchar_t* wcstr, const char* mbstr, size_t count);
+
+// Globals
+extern AFX_DATA TCHAR afxChNil;
+const CString& AFXAPI AfxGetEmptyString();
+#define afxEmptyString AfxGetEmptyString()
+
+/////////////////////////////////////////////////////////////////////////////
+// class CObject is the root of all compliant objects
+
+class CObject
+{
+public:
+
+// Object model (types, destruction, allocation)
+ virtual CRuntimeClass* GetRuntimeClass() const;
+ virtual ~CObject(); // virtual destructors are necessary
+
+ // Diagnostic allocations
+ void* PASCAL operator new(size_t nSize);
+ void* PASCAL operator new(size_t, void* p);
+ void PASCAL operator delete(void* p);
+
+#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
+ // for file name/line number tracking using DEBUG_NEW
+ void* PASCAL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
+#endif
+
+ // Disable the copy constructor and assignment by default so you will get
+ // compiler errors instead of unexpected behaviour if you pass objects
+ // by value or assign objects.
+protected:
+ CObject();
+private:
+ CObject(const CObject& objectSrc); // no implementation
+ void operator=(const CObject& objectSrc); // no implementation
+
+// Attributes
+public:
+ BOOL IsSerializable() const;
+ BOOL IsKindOf(const CRuntimeClass* pClass) const;
+
+// Overridables
+ virtual void Serialize(CArchive& ar);
+
+ // Diagnostic Support
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+
+// Implementation
+public:
+ static AFX_DATA CRuntimeClass classCObject;
+#ifdef _AFXDLL
+ static CRuntimeClass* PASCAL _GetBaseClass();
+#endif
+};
+
+// Helper macros
+#define RUNTIME_CLASS(class_name) (&class_name::class##class_name)
+#define ASSERT_KINDOF(class_name, object) \
+ ASSERT((object)->IsKindOf(RUNTIME_CLASS(class_name)))
+
+// RTTI helper macros/functions
+const CObject* AFX_CDECL AfxDynamicDownCast(CRuntimeClass* pClass, const CObject* pObject);
+CObject* AFX_CDECL AfxDynamicDownCast(CRuntimeClass* pClass, CObject* pObject);
+#define DYNAMIC_DOWNCAST(class_name, object) \
+ (class_name*)AfxDynamicDownCast(RUNTIME_CLASS(class_name), object)
+
+#ifdef _DEBUG
+const CObject* AFX_CDECL AfxStaticDownCast(CRuntimeClass* pClass, const CObject* pObject);
+CObject* AFX_CDECL AfxStaticDownCast(CRuntimeClass* pClass, CObject* pObject);
+#define STATIC_DOWNCAST(class_name, object) \
+ ((class_name*)AfxStaticDownCast(RUNTIME_CLASS(class_name), object))
+#else
+#define STATIC_DOWNCAST(class_name, object) ((class_name*)object)
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// Helper macros for declaring CRuntimeClass compatible classes
+
+#ifdef _AFXDLL
+#define DECLARE_DYNAMIC(class_name) \
+protected: \
+ static CRuntimeClass* PASCAL _GetBaseClass(); \
+public: \
+ static AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#else
+#define DECLARE_DYNAMIC(class_name) \
+public: \
+ static AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#endif
+
+// not serializable, but dynamically constructable
+#define DECLARE_DYNCREATE(class_name) \
+ DECLARE_DYNAMIC(class_name) \
+ static CObject* PASCAL CreateObject();
+
+#define DECLARE_SERIAL(class_name) \
+ DECLARE_DYNCREATE(class_name) \
+ friend CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb);
+
+// generate static object constructor for class registration
+struct AFX_CLASSINIT
+ { AFX_CLASSINIT(CRuntimeClass* pNewClass); };
+
+#ifdef _AFXDLL
+#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ CRuntimeClass* PASCAL class_name::_GetBaseClass() \
+ { return RUNTIME_CLASS(base_class_name); } \
+ AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class class_name), wSchema, pfnNew, \
+ &class_name::_GetBaseClass, NULL }; \
+ static const AFX_CLASSINIT _init_##class_name(&class_name::class##class_name); \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return &class_name::class##class_name; } \
+
+#else
+#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class class_name), wSchema, pfnNew, \
+ RUNTIME_CLASS(base_class_name), NULL }; \
+ static const AFX_CLASSINIT _init_##class_name(&class_name::class##class_name); \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return &class_name::class##class_name; } \
+
+#endif
+
+#define IMPLEMENT_DYNAMIC(class_name, base_class_name) \
+ _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, NULL)
+
+#define IMPLEMENT_DYNCREATE(class_name, base_class_name) \
+ CObject* PASCAL class_name::CreateObject() \
+ { return new class_name; } \
+ _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, \
+ class_name::CreateObject)
+
+#define IMPLEMENT_SERIAL(class_name, base_class_name, wSchema) \
+ CObject* PASCAL class_name::CreateObject() \
+ { return new class_name; } \
+ _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, \
+ class_name::CreateObject) \
+ CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb) \
+ { pOb = (class_name*) ar.ReadObject(RUNTIME_CLASS(class_name)); \
+ return ar; } \
+
+// optional bit for schema number that enables object versioning
+#define VERSIONABLE_SCHEMA (0x80000000)
+
+/////////////////////////////////////////////////////////////////////////////
+// other helpers
+
+// zero fill everything after the vtbl pointer
+#define AFX_ZERO_INIT_OBJECT(base_class) \
+ memset(((base_class*)this)+1, 0, sizeof(*this) - sizeof(class base_class));
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Exceptions
+
+class CException : public CObject
+{
+ // abstract class for dynamic type checking
+ DECLARE_DYNAMIC(CException)
+
+public:
+// Constructors
+ CException(); // sets m_bAutoDelete = TRUE
+ CException(BOOL bAutoDelete); // sets m_bAutoDelete = bAutoDelete
+
+// Operations
+ void Delete(); // use to delete exception in 'catch' block
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+ virtual int ReportError(UINT nType = MB_OK, UINT nMessageID = 0);
+
+// Implementation (setting m_bAutoDelete to FALSE is advanced)
+public:
+ virtual ~CException();
+ BOOL m_bAutoDelete;
+#ifdef _DEBUG
+ void PASCAL operator delete(void* p);
+protected:
+ BOOL m_bReadyForDelete;
+#endif
+};
+
+class CSimpleException : public CException
+{
+ // base class for resource-critical MFC exceptions
+ // handles ownership and initialization of an error message
+
+public:
+// Constructors
+ CSimpleException();
+ CSimpleException(BOOL bAutoDelete);
+
+// Operations
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+// Implementation (setting m_bAutoDelete to FALSE is advanced)
+public:
+ virtual ~CSimpleException();
+ BOOL m_bAutoDelete;
+
+ void InitString(); // used during MFC initialization
+
+protected:
+ BOOL m_bInitialized;
+ BOOL m_bLoaded;
+ TCHAR m_szMessage[128];
+ UINT m_nResourceID;
+
+#ifdef _DEBUG
+ BOOL m_bReadyForDelete;
+#endif
+};
+
+// helper routines for non-C++ EH implementations
+#ifdef _AFX_OLD_EXCEPTIONS
+ BOOL AFXAPI AfxCatchProc(CRuntimeClass* pClass);
+ void AFXAPI AfxThrow(CException* pException);
+#else
+ // for THROW_LAST auto-delete backward compatiblity
+ void AFXAPI AfxThrowLastCleanup();
+#endif
+
+// other out-of-line helper functions
+void AFXAPI AfxTryCleanup();
+
+#ifndef _AFX_JUMPBUF
+// Use portable 'jmp_buf' defined by ANSI by default.
+#define _AFX_JUMPBUF jmp_buf
+#endif
+
+// Placed on frame for EXCEPTION linkage, or CException cleanup
+struct AFX_EXCEPTION_LINK
+{
+#ifdef _AFX_OLD_EXCEPTIONS
+ union
+ {
+ _AFX_JUMPBUF m_jumpBuf;
+ struct
+ {
+ void (PASCAL* pfnCleanup)(AFX_EXCEPTION_LINK* pLink);
+ void* pvData; // extra data follows
+ } m_callback; // callback for cleanup (nType != 0)
+ };
+ UINT m_nType; // 0 for setjmp, !=0 for user extension
+#endif //!_AFX_OLD_EXCEPTIONS
+
+ AFX_EXCEPTION_LINK* m_pLinkPrev; // previous top, next in handler chain
+ CException* m_pException; // current exception (NULL in TRY block)
+
+ AFX_EXCEPTION_LINK(); // for initialization and linking
+ ~AFX_EXCEPTION_LINK() // for cleanup and unlinking
+ { AfxTryCleanup(); };
+};
+
+// Exception global state - never access directly
+struct AFX_EXCEPTION_CONTEXT
+{
+ AFX_EXCEPTION_LINK* m_pLinkTop;
+
+ // Note: most of the exception context is now in the AFX_EXCEPTION_LINK
+};
+
+#ifndef _PNH_DEFINED
+typedef int (__cdecl * _PNH)( size_t );
+#define _PNH_DEFINED
+#endif
+
+_PNH AFXAPI AfxGetNewHandler();
+_PNH AFXAPI AfxSetNewHandler(_PNH pfnNewHandler);
+int AFX_CDECL AfxNewHandler(size_t nSize);
+
+void AFXAPI AfxAbort();
+
+#ifdef _AFX_OLD_EXCEPTIONS
+
+// Obsolete and non-portable: setting terminate handler
+// use CWinApp::ProcessWndProcException for Windows apps instead
+// can also use set_terminate which is part of C++ standard library
+// (these are provided for backward compatibility)
+void AFXAPI AfxTerminate();
+typedef void (AFXAPI* AFX_TERM_PROC)();
+AFX_TERM_PROC AFXAPI AfxSetTerminate(AFX_TERM_PROC);
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Exception macros using try, catch and throw
+// (for backward compatibility to previous versions of MFC)
+
+#ifndef _AFX_OLD_EXCEPTIONS
+
+#define TRY { AFX_EXCEPTION_LINK _afxExceptionLink; try {
+
+#define CATCH(class, e) } catch (class* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(class))); \
+ _afxExceptionLink.m_pException = e;
+
+#define AND_CATCH(class, e) } catch (class* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(class))); \
+ _afxExceptionLink.m_pException = e;
+
+#define END_CATCH } }
+
+#define THROW(e) throw e
+#define THROW_LAST() (AfxThrowLastCleanup(), throw)
+
+// Advanced macros for smaller code
+#define CATCH_ALL(e) } catch (CException* e) \
+ { { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e;
+
+#define AND_CATCH_ALL(e) } catch (CException* e) \
+ { { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e;
+
+#define END_CATCH_ALL } } }
+
+#define END_TRY } catch (CException* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e; } }
+
+#else //_AFX_OLD_EXCEPTIONS
+
+/////////////////////////////////////////////////////////////////////////////
+// Exception macros using setjmp and longjmp
+// (for portability to compilers with no support for C++ exception handling)
+
+#define TRY \
+ { AFX_EXCEPTION_LINK _afxExceptionLink; \
+ if (::setjmp(_afxExceptionLink.m_jumpBuf) == 0)
+
+#define CATCH(class, e) \
+ else if (::AfxCatchProc(RUNTIME_CLASS(class))) \
+ { class* e = (class*)_afxExceptionLink.m_pException;
+
+#define AND_CATCH(class, e) \
+ } else if (::AfxCatchProc(RUNTIME_CLASS(class))) \
+ { class* e = (class*)_afxExceptionLink.m_pException;
+
+#define END_CATCH \
+ } else { ::AfxThrow(NULL); } }
+
+#define THROW(e) AfxThrow(e)
+#define THROW_LAST() AfxThrow(NULL)
+
+// Advanced macros for smaller code
+#define CATCH_ALL(e) \
+ else { CException* e = _afxExceptionLink.m_pException;
+
+#define AND_CATCH_ALL(e) \
+ } else { CException* e = _afxExceptionLink.m_pException;
+
+#define END_CATCH_ALL } }
+
+#define END_TRY }
+
+#endif //_AFX_OLD_EXCEPTIONS
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Exception classes
+
+class CMemoryException : public CSimpleException
+{
+ DECLARE_DYNAMIC(CMemoryException)
+public:
+ CMemoryException();
+
+// Implementation
+public:
+ CMemoryException(BOOL bAutoDelete);
+ CMemoryException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CMemoryException();
+};
+
+class CNotSupportedException : public CSimpleException
+{
+ DECLARE_DYNAMIC(CNotSupportedException)
+public:
+ CNotSupportedException();
+
+// Implementation
+public:
+ CNotSupportedException(BOOL bAutoDelete);
+ CNotSupportedException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CNotSupportedException();
+};
+
+class CArchiveException : public CException
+{
+ DECLARE_DYNAMIC(CArchiveException)
+public:
+ enum {
+ none,
+ generic,
+ readOnly,
+ endOfFile,
+ writeOnly,
+ badIndex,
+ badClass,
+ badSchema
+ };
+
+// Constructor
+ CArchiveException(int cause = CArchiveException::none,
+ LPCTSTR lpszArchiveName = NULL);
+
+// Attributes
+ int m_cause;
+ CString m_strFileName;
+
+// Implementation
+public:
+ virtual ~CArchiveException();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+};
+
+class CFileException : public CException
+{
+ DECLARE_DYNAMIC(CFileException)
+
+public:
+ enum {
+ none,
+ generic,
+ fileNotFound,
+ badPath,
+ tooManyOpenFiles,
+ accessDenied,
+ invalidFile,
+ removeCurrentDir,
+ directoryFull,
+ badSeek,
+ hardIO,
+ sharingViolation,
+ lockViolation,
+ diskFull,
+ endOfFile
+ };
+
+// Constructor
+ CFileException(int cause = CFileException::none, LONG lOsError = -1,
+ LPCTSTR lpszArchiveName = NULL);
+
+// Attributes
+ int m_cause;
+ LONG m_lOsError;
+ CString m_strFileName;
+
+// Operations
+ // convert a OS dependent error code to a Cause
+ static int PASCAL OsErrorToException(LONG lOsError);
+ static int PASCAL ErrnoToException(int nErrno);
+
+ // helper functions to throw exception after converting to a Cause
+ static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
+ static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
+
+// Implementation
+public:
+ virtual ~CFileException();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+#endif
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard exception throws
+
+void AFXAPI AfxThrowMemoryException();
+void AFXAPI AfxThrowNotSupportedException();
+void AFXAPI AfxThrowArchiveException(int cause,
+ LPCTSTR lpszArchiveName = NULL);
+void AFXAPI AfxThrowFileException(int cause, LONG lOsError = -1,
+ LPCTSTR lpszFileName = NULL);
+
+/////////////////////////////////////////////////////////////////////////////
+// File - raw unbuffered disk file I/O
+
+class CFile : public CObject
+{
+ DECLARE_DYNAMIC(CFile)
+
+public:
+// Flag values
+ enum OpenFlags {
+ modeRead = 0x0000,
+ modeWrite = 0x0001,
+ modeReadWrite = 0x0002,
+ shareCompat = 0x0000,
+ shareExclusive = 0x0010,
+ shareDenyWrite = 0x0020,
+ shareDenyRead = 0x0030,
+ shareDenyNone = 0x0040,
+ modeNoInherit = 0x0080,
+ modeCreate = 0x1000,
+ modeNoTruncate = 0x2000,
+ typeText = 0x4000, // typeText and typeBinary are used in
+ typeBinary = (int)0x8000 // derived classes only
+ };
+
+ enum Attribute {
+ normal = 0x00,
+ readOnly = 0x01,
+ hidden = 0x02,
+ system = 0x04,
+ volume = 0x08,
+ directory = 0x10,
+ archive = 0x20
+ };
+
+ enum SeekPosition { begin = 0x0, current = 0x1, end = 0x2 };
+
+ enum { hFileNull = -1 };
+
+// Constructors
+ CFile();
+ CFile(int hFile);
+ CFile(LPCTSTR lpszFileName, UINT nOpenFlags);
+
+// Attributes
+ UINT m_hFile;
+ operator HFILE() const;
+
+ virtual DWORD GetPosition() const;
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual CString GetFileName() const;
+ virtual CString GetFileTitle() const;
+ virtual CString GetFilePath() const;
+ virtual void SetFilePath(LPCTSTR lpszNewName);
+
+// Operations
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+
+ static void PASCAL Rename(LPCTSTR lpszOldName,
+ LPCTSTR lpszNewName);
+ static void PASCAL Remove(LPCTSTR lpszFileName);
+ static BOOL PASCAL GetStatus(LPCTSTR lpszFileName,
+ CFileStatus& rStatus);
+ static void PASCAL SetStatus(LPCTSTR lpszFileName,
+ const CFileStatus& status);
+
+ DWORD SeekToEnd();
+ void SeekToBegin();
+
+ // backward compatible ReadHuge and WriteHuge
+ DWORD ReadHuge(void* lpBuffer, DWORD dwCount);
+ void WriteHuge(const void* lpBuffer, DWORD dwCount);
+
+// Overridables
+ virtual CFile* Duplicate() const;
+
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+// Implementation
+public:
+ virtual ~CFile();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ enum BufferCommand { bufferRead, bufferWrite, bufferCommit, bufferCheck };
+ virtual UINT GetBufferPtr(UINT nCommand, UINT nCount = 0,
+ void** ppBufStart = NULL, void** ppBufMax = NULL);
+
+protected:
+ BOOL m_bCloseOnDelete;
+ CString m_strFileName;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// STDIO file implementation
+
+class CStdioFile : public CFile
+{
+ DECLARE_DYNAMIC(CStdioFile)
+
+public:
+// Constructors
+ CStdioFile();
+ CStdioFile(FILE* pOpenStream);
+ CStdioFile(LPCTSTR lpszFileName, UINT nOpenFlags);
+
+// Attributes
+ FILE* m_pStream; // stdio FILE
+ // m_hFile from base class is _fileno(m_pStream)
+
+// Operations
+ // reading and writing strings
+ virtual void WriteString(LPCTSTR lpsz);
+ virtual LPTSTR ReadString(LPTSTR lpsz, UINT nMax);
+ BOOL ReadString(CString& rString);
+
+// Implementation
+public:
+ virtual ~CStdioFile();
+#ifdef _DEBUG
+ void Dump(CDumpContext& dc) const;
+#endif
+ virtual DWORD GetPosition() const;
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+ // Unsupported APIs
+ virtual CFile* Duplicate() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+};
+
+////////////////////////////////////////////////////////////////////////////
+// Memory based file implementation
+
+class CMemFile : public CFile
+{
+ DECLARE_DYNAMIC(CMemFile)
+
+public:
+// Constructors
+ CMemFile(UINT nGrowBytes = 1024);
+ CMemFile(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+
+// Operations
+ void Attach(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+ BYTE* Detach();
+
+// Advanced Overridables
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual BYTE* Memcpy(BYTE* lpMemTarget, const BYTE* lpMemSource, UINT nBytes);
+ virtual void Free(BYTE* lpMem);
+ virtual void GrowFile(DWORD dwNewLen);
+
+// Implementation
+protected:
+ UINT m_nGrowBytes;
+ DWORD m_nPosition;
+ DWORD m_nBufferSize;
+ DWORD m_nFileSize;
+ BYTE* m_lpBuffer;
+ BOOL m_bAutoDelete;
+
+public:
+ virtual ~CMemFile();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ virtual DWORD GetPosition() const;
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+ virtual UINT GetBufferPtr(UINT nCommand, UINT nCount = 0,
+ void** ppBufStart = NULL, void** ppBufMax = NULL);
+
+ // Unsupported APIs
+ virtual CFile* Duplicate() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTimeSpan and CTime
+
+class CTimeSpan
+{
+public:
+
+// Constructors
+ CTimeSpan();
+ CTimeSpan(time_t time);
+ CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs);
+
+ CTimeSpan(const CTimeSpan& timeSpanSrc);
+ const CTimeSpan& operator=(const CTimeSpan& timeSpanSrc);
+
+// Attributes
+ // extract parts
+ LONG GetDays() const; // total # of days
+ LONG GetTotalHours() const;
+ int GetHours() const;
+ LONG GetTotalMinutes() const;
+ int GetMinutes() const;
+ LONG GetTotalSeconds() const;
+ int GetSeconds() const;
+
+// Operations
+ // time math
+ CTimeSpan operator-(CTimeSpan timeSpan) const;
+ CTimeSpan operator+(CTimeSpan timeSpan) const;
+ const CTimeSpan& operator+=(CTimeSpan timeSpan);
+ const CTimeSpan& operator-=(CTimeSpan timeSpan);
+ BOOL operator==(CTimeSpan timeSpan) const;
+ BOOL operator!=(CTimeSpan timeSpan) const;
+ BOOL operator<(CTimeSpan timeSpan) const;
+ BOOL operator>(CTimeSpan timeSpan) const;
+ BOOL operator<=(CTimeSpan timeSpan) const;
+ BOOL operator>=(CTimeSpan timeSpan) const;
+
+#ifdef _UNICODE
+ // for compatibility with MFC 3.x
+ CString Format(LPCSTR pFormat) const;
+#endif
+ CString Format(LPCTSTR pFormat) const;
+ CString Format(UINT nID) const;
+
+ // serialization
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc,CTimeSpan timeSpan);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, CTimeSpan timeSpan);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CTimeSpan& rtimeSpan);
+
+private:
+ time_t m_timeSpan;
+ friend class CTime;
+};
+
+class CTime
+{
+public:
+
+// Constructors
+ static CTime PASCAL GetCurrentTime();
+
+ CTime();
+ CTime(time_t time);
+ CTime(int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec,
+ int nDST = -1);
+ CTime(WORD wDosDate, WORD wDosTime, int nDST = -1);
+ CTime(const CTime& timeSrc);
+
+ CTime(const SYSTEMTIME& sysTime, int nDST = -1);
+ CTime(const FILETIME& fileTime, int nDST = -1);
+ const CTime& operator=(const CTime& timeSrc);
+ const CTime& operator=(time_t t);
+
+// Attributes
+ struct tm* GetGmtTm(struct tm* ptm = NULL) const;
+ struct tm* GetLocalTm(struct tm* ptm = NULL) const;
+
+ time_t GetTime() const;
+ int GetYear() const;
+ int GetMonth() const; // month of year (1 = Jan)
+ int GetDay() const; // day of month
+ int GetHour() const;
+ int GetMinute() const;
+ int GetSecond() const;
+ int GetDayOfWeek() const; // 1=Sun, 2=Mon, ..., 7=Sat
+
+// Operations
+ // time math
+ CTimeSpan operator-(CTime time) const;
+ CTime operator-(CTimeSpan timeSpan) const;
+ CTime operator+(CTimeSpan timeSpan) const;
+ const CTime& operator+=(CTimeSpan timeSpan);
+ const CTime& operator-=(CTimeSpan timeSpan);
+ BOOL operator==(CTime time) const;
+ BOOL operator!=(CTime time) const;
+ BOOL operator<(CTime time) const;
+ BOOL operator>(CTime time) const;
+ BOOL operator<=(CTime time) const;
+ BOOL operator>=(CTime time) const;
+
+ // formatting using "C" strftime
+ CString Format(LPCTSTR pFormat) const;
+ CString FormatGmt(LPCTSTR pFormat) const;
+ CString Format(UINT nFormatID) const;
+ CString FormatGmt(UINT nFormatID) const;
+
+#ifdef _UNICODE
+ // for compatibility with MFC 3.x
+ CString Format(LPCSTR pFormat) const;
+ CString FormatGmt(LPCSTR pFormat) const;
+#endif
+
+ // serialization
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc, CTime time);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, CTime time);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CTime& rtime);
+
+private:
+ time_t m_time;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// File status
+
+struct CFileStatus
+{
+ CTime m_ctime; // creation date/time of file
+ CTime m_mtime; // last modification date/time of file
+ CTime m_atime; // last access date/time of file
+ LONG m_size; // logical size of file in bytes
+ BYTE m_attribute; // logical OR of CFile::Attribute enum values
+ BYTE _m_padding; // pad the structure to a WORD
+ TCHAR m_szFullName[_MAX_PATH]; // absolute path name
+
+#ifdef _DEBUG
+ void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic memory management routines
+
+// Low level sanity checks for memory blocks
+BOOL AFXAPI AfxIsValidAddress(const void* lp,
+ UINT nBytes, BOOL bReadWrite = TRUE);
+BOOL AFXAPI AfxIsValidString(LPCWSTR lpsz, int nLength = -1);
+BOOL AFXAPI AfxIsValidString(LPCSTR lpsz, int nLength = -1);
+
+#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
+
+// Memory tracking allocation
+void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
+#define DEBUG_NEW new(THIS_FILE, __LINE__)
+
+void* AFXAPI AfxAllocMemoryDebug(size_t nSize, BOOL bIsObject,
+ LPCSTR lpszFileName, int nLine);
+void AFXAPI AfxFreeMemoryDebug(void* pbData, BOOL bIsObject);
+
+// Dump any memory leaks since program started
+BOOL AFXAPI AfxDumpMemoryLeaks();
+
+// Return TRUE if valid memory block of nBytes
+BOOL AFXAPI AfxIsMemoryBlock(const void* p, UINT nBytes,
+ LONG* plRequestNumber = NULL);
+
+// Return TRUE if memory is sane or print out what is wrong
+BOOL AFXAPI AfxCheckMemory();
+
+#define afxMemDF _crtDbgFlag
+
+enum AfxMemDF // memory debug/diagnostic flags
+{
+ allocMemDF = 0x01, // turn on debugging allocator
+ delayFreeMemDF = 0x02, // delay freeing memory
+ checkAlwaysMemDF = 0x04 // AfxCheckMemory on every alloc/free
+};
+
+#ifdef _UNICODE
+#define AfxOutputDebugString(lpsz) \
+ do \
+ { \
+ int _convert; _convert = 0; \
+ _RPT0(_CRT_WARN, W2CA(lpsz)); \
+ } while (0)
+#else
+#define AfxOutputDebugString(lpsz) _RPT0(_CRT_WARN, lpsz)
+#endif
+
+// turn on/off tracking for a short while
+BOOL AFXAPI AfxEnableMemoryTracking(BOOL bTrack);
+
+// Advanced initialization: for overriding default diagnostics
+BOOL AFXAPI AfxDiagnosticInit(void);
+
+// A failure hook returns whether to permit allocation
+typedef BOOL (AFXAPI* AFX_ALLOC_HOOK)(size_t nSize, BOOL bObject, LONG lRequestNumber);
+
+// Set new hook, return old (never NULL)
+AFX_ALLOC_HOOK AFXAPI AfxSetAllocHook(AFX_ALLOC_HOOK pfnAllocHook);
+
+// Debugger hook on specified allocation request - Obsolete
+void AFXAPI AfxSetAllocStop(LONG lRequestNumber);
+
+// Memory state for snapshots/leak detection
+struct CMemoryState
+{
+// Attributes
+ enum blockUsage
+ {
+ freeBlock, // memory not used
+ objectBlock, // contains a CObject derived class object
+ bitBlock, // contains ::operator new data
+ crtBlock,
+ ignoredBlock,
+ nBlockUseMax // total number of usages
+ };
+
+ _CrtMemState m_memState;
+ LONG m_lCounts[nBlockUseMax];
+ LONG m_lSizes[nBlockUseMax];
+ LONG m_lHighWaterCount;
+ LONG m_lTotalCount;
+
+ CMemoryState();
+
+// Operations
+ void Checkpoint(); // fill with current state
+ BOOL Difference(const CMemoryState& oldState,
+ const CMemoryState& newState); // fill with difference
+ void UpdateData();
+
+ // Output to afxDump
+ void DumpStatistics() const;
+ void DumpAllObjectsSince() const;
+};
+
+// Enumerate allocated objects or runtime classes
+void AFXAPI AfxDoForAllObjects(void (AFX_CDECL *pfn)(CObject* pObject, void* pContext),
+ void* pContext);
+void AFXAPI AfxDoForAllClasses(void (AFX_CDECL *pfn)(const CRuntimeClass* pClass,
+ void* pContext), void* pContext);
+
+#else
+
+// non-_DEBUG_ALLOC version that assume everything is OK
+#define DEBUG_NEW new
+#define AfxCheckMemory() TRUE
+#define AfxIsMemoryBlock(p, nBytes) TRUE
+#define AfxEnableMemoryTracking(bTrack) FALSE
+#define AfxOutputDebugString(lpsz) ::OutputDebugString(lpsz)
+
+// diagnostic initialization
+#ifndef _DEBUG
+#define AfxDiagnosticInit() TRUE
+#else
+BOOL AFXAPI AfxDiagnosticInit(void);
+#endif
+
+#endif // _DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// Archives for serializing CObject data
+
+// needed for implementation
+class CPtrArray;
+class CMapPtrToPtr;
+class CDocument;
+
+class CArchive
+{
+public:
+// Flag values
+ enum Mode { store = 0, load = 1, bNoFlushOnDelete = 2, bNoByteSwap = 4 };
+
+ CArchive(CFile* pFile, UINT nMode, int nBufSize = 4096, void* lpBuf = NULL);
+ ~CArchive();
+
+// Attributes
+ BOOL IsLoading() const;
+ BOOL IsStoring() const;
+ BOOL IsByteSwapping() const;
+ BOOL IsBufferEmpty() const;
+
+ CFile* GetFile() const;
+ UINT GetObjectSchema(); // only valid when reading a CObject*
+ void SetObjectSchema(UINT nSchema);
+
+ // pointer to document being serialized -- must set to serialize
+ // COleClientItems in a document!
+ CDocument* m_pDocument;
+
+// Operations
+ UINT Read(void* lpBuf, UINT nMax);
+ void Write(const void* lpBuf, UINT nMax);
+ void Flush();
+ void Close();
+ void Abort(); // close and shutdown without exceptions
+
+ // reading and writing strings
+ void WriteString(LPCTSTR lpsz);
+ LPTSTR ReadString(LPTSTR lpsz, UINT nMax);
+ BOOL ReadString(CString& rString);
+
+public:
+ // Object I/O is pointer based to avoid added construction overhead.
+ // Use the Serialize member function directly for embedded objects.
+ friend CArchive& AFXAPI operator<<(CArchive& ar, const CObject* pOb);
+
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CObject*& pOb);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, const CObject*& pOb);
+
+ // insertion operations
+ CArchive& operator<<(BYTE by);
+ CArchive& operator<<(WORD w);
+ CArchive& operator<<(LONG l);
+ CArchive& operator<<(DWORD dw);
+ CArchive& operator<<(float f);
+ CArchive& operator<<(double d);
+
+ CArchive& operator<<(int i);
+ CArchive& operator<<(short w);
+ CArchive& operator<<(char ch);
+ CArchive& operator<<(unsigned u);
+
+ // extraction operations
+ CArchive& operator>>(BYTE& by);
+ CArchive& operator>>(WORD& w);
+ CArchive& operator>>(DWORD& dw);
+ CArchive& operator>>(LONG& l);
+ CArchive& operator>>(float& f);
+ CArchive& operator>>(double& d);
+
+ CArchive& operator>>(int& i);
+ CArchive& operator>>(short& w);
+ CArchive& operator>>(char& ch);
+ CArchive& operator>>(unsigned& u);
+
+ // object read/write
+ CObject* ReadObject(const CRuntimeClass* pClass);
+ void WriteObject(const CObject* pOb);
+ // advanced object mapping (used for forced references)
+ void MapObject(const CObject* pOb);
+
+ // advanced versioning support
+ void WriteClass(const CRuntimeClass* pClassRef);
+ CRuntimeClass* ReadClass(const CRuntimeClass* pClassRefRequested = NULL,
+ UINT* pSchema = NULL, DWORD* pObTag = NULL);
+ void SerializeClass(const CRuntimeClass* pClassRef);
+
+ // advanced operations (used when storing/loading many objects)
+ void SetStoreParams(UINT nHashSize = 2053, UINT nBlockSize = 128);
+ void SetLoadParams(UINT nGrowBy = 1024);
+
+// Implementation
+public:
+ BOOL m_bForceFlat; // for COleClientItem implementation (default TRUE)
+ BOOL m_bDirectBuffer; // TRUE if m_pFile supports direct buffering
+ void FillBuffer(UINT nBytesNeeded);
+ void CheckCount(); // throw exception if m_nMapCount is too large
+
+ // special functions for reading and writing (16-bit compatible) counts
+ DWORD ReadCount();
+ void WriteCount(DWORD dwCount);
+
+ // public for advanced use
+ UINT m_nObjectSchema;
+ CString m_strFileName;
+
+protected:
+ // archive objects cannot be copied or assigned
+ CArchive(const CArchive& arSrc);
+ void operator=(const CArchive& arSrc);
+
+ BOOL m_nMode;
+ BOOL m_bUserBuf;
+ int m_nBufSize;
+ CFile* m_pFile;
+ BYTE* m_lpBufCur;
+ BYTE* m_lpBufMax;
+ BYTE* m_lpBufStart;
+
+ // array/map for CObject* and CRuntimeClass* load/store
+ UINT m_nMapCount;
+ union
+ {
+ CPtrArray* m_pLoadArray;
+ CMapPtrToPtr* m_pStoreMap;
+ };
+ // map to keep track of mismatched schemas
+ CMapPtrToPtr* m_pSchemaMap;
+
+ // advanced parameters (controls performance with large archives)
+ UINT m_nGrowSize;
+ UINT m_nHashSize;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic dumping
+
+class CDumpContext
+{
+public:
+ CDumpContext(CFile* pFile = NULL);
+
+// Attributes
+ int GetDepth() const; // 0 => this object, 1 => children objects
+ void SetDepth(int nNewDepth);
+
+// Operations
+ CDumpContext& operator<<(LPCTSTR lpsz);
+#ifdef _UNICODE
+ CDumpContext& operator<<(LPCSTR lpsz); // automatically widened
+#else
+ CDumpContext& operator<<(LPCWSTR lpsz); // automatically thinned
+#endif
+ CDumpContext& operator<<(const void* lp);
+ CDumpContext& operator<<(const CObject* pOb);
+ CDumpContext& operator<<(const CObject& ob);
+ CDumpContext& operator<<(BYTE by);
+ CDumpContext& operator<<(WORD w);
+ CDumpContext& operator<<(UINT u);
+ CDumpContext& operator<<(LONG l);
+ CDumpContext& operator<<(DWORD dw);
+ CDumpContext& operator<<(float f);
+ CDumpContext& operator<<(double d);
+ CDumpContext& operator<<(int n);
+ void HexDump(LPCTSTR lpszLine, BYTE* pby, int nBytes, int nWidth);
+ void Flush();
+
+// Implementation
+protected:
+ // dump context objects cannot be copied or assigned
+ CDumpContext(const CDumpContext& dcSrc);
+ void operator=(const CDumpContext& dcSrc);
+ void OutputString(LPCTSTR lpsz);
+
+ int m_nDepth;
+
+public:
+ CFile* m_pFile;
+};
+
+#ifdef _DEBUG
+extern AFX_DATA CDumpContext afxDump;
+extern AFX_DATA BOOL afxTraceEnabled;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Special include for Win32s compatibility
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifndef __AFXCOLL_H__
+ #include <afxcoll.h>
+ #ifndef __AFXSTATE_H__
+ #include <afxstat_.h> // for _AFX_APP_STATE and _AFX_THREAD_STATE
+ #endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFX_INLINE inline
+#include <afx.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFX_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afx.inl b/public/sdk/inc/mfc40/afx.inl
new file mode 100644
index 000000000..f9d282ee7
--- /dev/null
+++ b/public/sdk/inc/mfc40/afx.inl
@@ -0,0 +1,395 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFX.H
+
+#ifdef _AFX_INLINE
+
+// CObject
+_AFX_INLINE CObject::CObject()
+ { }
+_AFX_INLINE CObject::~CObject()
+ { }
+_AFX_INLINE void CObject::Serialize(CArchive&)
+ { /* CObject does not serialize anything by default */ }
+_AFX_INLINE void* PASCAL CObject::operator new(size_t, void* p)
+ { return p; }
+#ifndef _DEBUG
+// _DEBUG versions in memory.cpp
+_AFX_INLINE void PASCAL CObject::operator delete(void* p)
+ { ::operator delete(p); }
+_AFX_INLINE void* PASCAL CObject::operator new(size_t nSize)
+ { return ::operator new(nSize); }
+// _DEBUG versions in objcore.cpp
+_AFX_INLINE void CObject::AssertValid() const
+ { /* no asserts in release builds */ }
+_AFX_INLINE void CObject::Dump(CDumpContext&) const
+ { /* no dumping in release builds */ }
+#endif
+_AFX_INLINE const CObject* AFX_CDECL AfxDynamicDownCast(CRuntimeClass* pClass, const CObject* pObject)
+ { return (CObject*)AfxDynamicDownCast(pClass, (const CObject*)pObject); }
+#ifdef _DEBUG
+_AFX_INLINE const CObject* AFX_CDECL AfxStaticDownCast(CRuntimeClass* pClass, const CObject* pObject)
+ { return (CObject*)AfxStaticDownCast(pClass, (const CObject*)pObject); }
+#endif
+
+// exceptions
+_AFX_INLINE CException::~CException()
+ { }
+_AFX_INLINE CSimpleException::CSimpleException()
+ { m_bInitialized = FALSE; m_bLoaded = FALSE; }
+_AFX_INLINE CSimpleException::CSimpleException(BOOL bAutoDelete)
+ : CException(bAutoDelete) { m_bInitialized = FALSE; m_bLoaded = FALSE; }
+_AFX_INLINE CSimpleException::~CSimpleException()
+ { }
+
+_AFX_INLINE CMemoryException::CMemoryException()
+ : CSimpleException() { }
+_AFX_INLINE CMemoryException::CMemoryException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFX_INLINE CMemoryException::~CMemoryException()
+ { }
+_AFX_INLINE CNotSupportedException::CNotSupportedException()
+ : CSimpleException() { }
+_AFX_INLINE CNotSupportedException::CNotSupportedException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFX_INLINE CNotSupportedException::~CNotSupportedException()
+ { }
+_AFX_INLINE CArchiveException::CArchiveException(int cause,
+ LPCTSTR lpszFileName /* = NULL */)
+ { m_cause = cause; m_strFileName = lpszFileName; }
+_AFX_INLINE CArchiveException::~CArchiveException()
+ { }
+_AFX_INLINE CFileException::CFileException(int cause, LONG lOsError,
+ LPCTSTR pstrFileName /* = NULL */)
+ { m_cause = cause; m_lOsError = lOsError; m_strFileName = pstrFileName; }
+_AFX_INLINE CFileException::~CFileException()
+ { }
+
+// CFile
+_AFX_INLINE CFile::operator HFILE() const
+ { return m_hFile; }
+_AFX_INLINE DWORD CFile::ReadHuge(void* lpBuffer, DWORD dwCount)
+ { return (DWORD)Read(lpBuffer, (UINT)dwCount); }
+_AFX_INLINE void CFile::WriteHuge(const void* lpBuffer, DWORD dwCount)
+ { Write(lpBuffer, (UINT)dwCount); }
+_AFX_INLINE DWORD CFile::SeekToEnd()
+ { return Seek(0, CFile::end); }
+_AFX_INLINE void CFile::SeekToBegin()
+ { Seek(0, CFile::begin); }
+_AFX_INLINE void CFile::SetFilePath(LPCTSTR lpszNewName)
+{
+ ASSERT_VALID(this);
+ ASSERT(AfxIsValidString(lpszNewName, FALSE));
+ m_strFileName = lpszNewName;
+}
+
+// CString
+_AFX_INLINE CStringData* CString::GetData() const
+ { ASSERT(m_pchData != NULL); return ((CStringData*)m_pchData)-1; }
+_AFX_INLINE void CString::Init()
+ { m_pchData = afxEmptyString.m_pchData; }
+_AFX_INLINE CString::CString(const unsigned char* lpsz)
+ { Init(); *this = (LPCSTR)lpsz; }
+_AFX_INLINE const CString& CString::operator=(const unsigned char* lpsz)
+ { *this = (LPCSTR)lpsz; return *this; }
+#ifdef _UNICODE
+_AFX_INLINE const CString& CString::operator+=(char ch)
+ { *this += (TCHAR)ch; return *this; }
+_AFX_INLINE const CString& CString::operator=(char ch)
+ { *this = (TCHAR)ch; return *this; }
+_AFX_INLINE CString AFXAPI operator+(const CString& string, char ch)
+ { return string + (TCHAR)ch; }
+_AFX_INLINE CString AFXAPI operator+(char ch, const CString& string)
+ { return (TCHAR)ch + string; }
+#endif
+
+_AFX_INLINE int CString::GetLength() const
+ { return GetData()->nDataLength; }
+_AFX_INLINE int CString::GetAllocLength() const
+ { return GetData()->nAllocLength; }
+_AFX_INLINE BOOL CString::IsEmpty() const
+ { return GetData()->nDataLength == 0; }
+_AFX_INLINE CString::operator LPCTSTR() const
+ { return m_pchData; }
+_AFX_INLINE int PASCAL CString::SafeStrlen(LPCTSTR lpsz)
+ { return (lpsz == NULL) ? 0 : lstrlen(lpsz); }
+
+// CString support (windows specific)
+_AFX_INLINE int CString::Compare(LPCTSTR lpsz) const
+ { return _tcscmp(m_pchData, lpsz); } // MBCS/Unicode aware
+_AFX_INLINE int CString::CompareNoCase(LPCTSTR lpsz) const
+ { return _tcsicmp(m_pchData, lpsz); } // MBCS/Unicode aware
+// CString::Collate is often slower than Compare but is MBSC/Unicode
+// aware as well as locale-sensitive with respect to sort order.
+_AFX_INLINE int CString::Collate(LPCTSTR lpsz) const
+ { return _tcscoll(m_pchData, lpsz); } // locale sensitive
+
+_AFX_INLINE TCHAR CString::GetAt(int nIndex) const
+{
+ ASSERT(nIndex >= 0);
+ ASSERT(nIndex < GetData()->nDataLength);
+ return m_pchData[nIndex];
+}
+_AFX_INLINE TCHAR CString::operator[](int nIndex) const
+{
+ // same as GetAt
+ ASSERT(nIndex >= 0);
+ ASSERT(nIndex < GetData()->nDataLength);
+ return m_pchData[nIndex];
+}
+_AFX_INLINE BOOL AFXAPI operator==(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) == 0; }
+_AFX_INLINE BOOL AFXAPI operator==(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) == 0; }
+_AFX_INLINE BOOL AFXAPI operator==(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) == 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) != 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) != 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) != 0; }
+_AFX_INLINE BOOL AFXAPI operator<(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) <= 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) <= 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) <= 0; }
+
+// CTime and CTimeSpan
+_AFX_INLINE CTimeSpan::CTimeSpan()
+ { }
+_AFX_INLINE CTimeSpan::CTimeSpan(time_t time)
+ { m_timeSpan = time; }
+_AFX_INLINE CTimeSpan::CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs)
+ { m_timeSpan = nSecs + 60* (nMins + 60* (nHours + 24* lDays)); }
+_AFX_INLINE CTimeSpan::CTimeSpan(const CTimeSpan& timeSpanSrc)
+ { m_timeSpan = timeSpanSrc.m_timeSpan; }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator=(const CTimeSpan& timeSpanSrc)
+ { m_timeSpan = timeSpanSrc.m_timeSpan; return *this; }
+_AFX_INLINE LONG CTimeSpan::GetDays() const
+ { return m_timeSpan / (24*3600L); }
+_AFX_INLINE LONG CTimeSpan::GetTotalHours() const
+ { return m_timeSpan/3600; }
+_AFX_INLINE int CTimeSpan::GetHours() const
+ { return (int)(GetTotalHours() - GetDays()*24); }
+_AFX_INLINE LONG CTimeSpan::GetTotalMinutes() const
+ { return m_timeSpan/60; }
+_AFX_INLINE int CTimeSpan::GetMinutes() const
+ { return (int)(GetTotalMinutes() - GetTotalHours()*60); }
+_AFX_INLINE LONG CTimeSpan::GetTotalSeconds() const
+ { return m_timeSpan; }
+_AFX_INLINE int CTimeSpan::GetSeconds() const
+ { return (int)(GetTotalSeconds() - GetTotalMinutes()*60); }
+_AFX_INLINE CTimeSpan CTimeSpan::operator-(CTimeSpan timeSpan) const
+ { return CTimeSpan(m_timeSpan - timeSpan.m_timeSpan); }
+_AFX_INLINE CTimeSpan CTimeSpan::operator+(CTimeSpan timeSpan) const
+ { return CTimeSpan(m_timeSpan + timeSpan.m_timeSpan); }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator+=(CTimeSpan timeSpan)
+ { m_timeSpan += timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator-=(CTimeSpan timeSpan)
+ { m_timeSpan -= timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE BOOL CTimeSpan::operator==(CTimeSpan timeSpan) const
+ { return m_timeSpan == timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator!=(CTimeSpan timeSpan) const
+ { return m_timeSpan != timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator<(CTimeSpan timeSpan) const
+ { return m_timeSpan < timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator>(CTimeSpan timeSpan) const
+ { return m_timeSpan > timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator<=(CTimeSpan timeSpan) const
+ { return m_timeSpan <= timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator>=(CTimeSpan timeSpan) const
+ { return m_timeSpan >= timeSpan.m_timeSpan; }
+
+
+_AFX_INLINE CTime::CTime()
+ { }
+_AFX_INLINE CTime::CTime(time_t time)
+ { m_time = time; }
+_AFX_INLINE CTime::CTime(const CTime& timeSrc)
+ { m_time = timeSrc.m_time; }
+_AFX_INLINE const CTime& CTime::operator=(const CTime& timeSrc)
+ { m_time = timeSrc.m_time; return *this; }
+_AFX_INLINE const CTime& CTime::operator=(time_t t)
+ { m_time = t; return *this; }
+_AFX_INLINE time_t CTime::GetTime() const
+ { return m_time; }
+_AFX_INLINE int CTime::GetYear() const
+ { return (GetLocalTm(NULL)->tm_year) + 1900; }
+_AFX_INLINE int CTime::GetMonth() const
+ { return GetLocalTm(NULL)->tm_mon + 1; }
+_AFX_INLINE int CTime::GetDay() const
+ { return GetLocalTm(NULL)->tm_mday; }
+_AFX_INLINE int CTime::GetHour() const
+ { return GetLocalTm(NULL)->tm_hour; }
+_AFX_INLINE int CTime::GetMinute() const
+ { return GetLocalTm(NULL)->tm_min; }
+_AFX_INLINE int CTime::GetSecond() const
+ { return GetLocalTm(NULL)->tm_sec; }
+_AFX_INLINE int CTime::GetDayOfWeek() const
+ { return GetLocalTm(NULL)->tm_wday + 1; }
+_AFX_INLINE CTimeSpan CTime::operator-(CTime time) const
+ { return CTimeSpan(m_time - time.m_time); }
+_AFX_INLINE CTime CTime::operator-(CTimeSpan timeSpan) const
+ { return CTime(m_time - timeSpan.m_timeSpan); }
+_AFX_INLINE CTime CTime::operator+(CTimeSpan timeSpan) const
+ { return CTime(m_time + timeSpan.m_timeSpan); }
+_AFX_INLINE const CTime& CTime::operator+=(CTimeSpan timeSpan)
+ { m_time += timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE const CTime& CTime::operator-=(CTimeSpan timeSpan)
+ { m_time -= timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE BOOL CTime::operator==(CTime time) const
+ { return m_time == time.m_time; }
+_AFX_INLINE BOOL CTime::operator!=(CTime time) const
+ { return m_time != time.m_time; }
+_AFX_INLINE BOOL CTime::operator<(CTime time) const
+ { return m_time < time.m_time; }
+_AFX_INLINE BOOL CTime::operator>(CTime time) const
+ { return m_time > time.m_time; }
+_AFX_INLINE BOOL CTime::operator<=(CTime time) const
+ { return m_time <= time.m_time; }
+_AFX_INLINE BOOL CTime::operator>=(CTime time) const
+ { return m_time >= time.m_time; }
+
+
+// CArchive
+_AFX_INLINE BOOL CArchive::IsLoading() const
+ { return (m_nMode & CArchive::load) != 0; }
+_AFX_INLINE BOOL CArchive::IsStoring() const
+ { return (m_nMode & CArchive::load) == 0; }
+_AFX_INLINE BOOL CArchive::IsByteSwapping() const
+ { return (m_nMode & CArchive::bNoByteSwap) == 0; }
+_AFX_INLINE BOOL CArchive::IsBufferEmpty() const
+ { return m_lpBufCur == m_lpBufMax; }
+_AFX_INLINE CFile* CArchive::GetFile() const
+ { return m_pFile; }
+_AFX_INLINE void CArchive::SetObjectSchema(UINT nSchema)
+ { m_nObjectSchema = nSchema; }
+_AFX_INLINE void CArchive::SetStoreParams(UINT nHashSize, UINT nBlockSize)
+{
+ ASSERT(IsStoring());
+ ASSERT(m_pStoreMap == NULL); // must be before first object written
+ m_nHashSize = nHashSize;
+ m_nGrowSize = nBlockSize;
+}
+_AFX_INLINE void CArchive::SetLoadParams(UINT nGrowBy)
+{
+ ASSERT(IsLoading());
+ ASSERT(m_pLoadArray == NULL); // must be before first object read
+ m_nGrowSize = nGrowBy;
+}
+_AFX_INLINE CArchive& CArchive::operator<<(int i)
+ { return CArchive::operator<<((LONG)i); }
+_AFX_INLINE CArchive& CArchive::operator<<(unsigned u)
+ { return CArchive::operator<<((LONG)u); }
+_AFX_INLINE CArchive& CArchive::operator<<(short w)
+ { return CArchive::operator<<((WORD)w); }
+_AFX_INLINE CArchive& CArchive::operator<<(char ch)
+ { return CArchive::operator<<((BYTE)ch); }
+_AFX_INLINE CArchive& CArchive::operator<<(BYTE by)
+ { if (m_lpBufCur + sizeof(BYTE) > m_lpBufMax) Flush();
+ *(UNALIGNED BYTE*)m_lpBufCur = by; m_lpBufCur += sizeof(BYTE); return *this; }
+#ifndef _MAC
+_AFX_INLINE CArchive& CArchive::operator<<(WORD w)
+ { if (m_lpBufCur + sizeof(WORD) > m_lpBufMax) Flush();
+ *(UNALIGNED WORD*)m_lpBufCur = w; m_lpBufCur += sizeof(WORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(LONG l)
+ { if (m_lpBufCur + sizeof(LONG) > m_lpBufMax) Flush();
+ *(UNALIGNED LONG*)m_lpBufCur = l; m_lpBufCur += sizeof(LONG); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(DWORD dw)
+ { if (m_lpBufCur + sizeof(DWORD) > m_lpBufMax) Flush();
+ *(UNALIGNED DWORD*)m_lpBufCur = dw; m_lpBufCur += sizeof(DWORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(float f)
+ { if (m_lpBufCur + sizeof(float) > m_lpBufMax) Flush();
+ *(UNALIGNED _AFX_FLOAT*)m_lpBufCur = *(_AFX_FLOAT*)&f; m_lpBufCur += sizeof(float); return *this;
+ }
+_AFX_INLINE CArchive& CArchive::operator<<(double d)
+ { if (m_lpBufCur + sizeof(double) > m_lpBufMax) Flush();
+ *(UNALIGNED _AFX_DOUBLE*)m_lpBufCur = *(_AFX_DOUBLE*)&d; m_lpBufCur += sizeof(double); return *this; }
+#endif
+_AFX_INLINE CArchive& CArchive::operator>>(int& i)
+ { return CArchive::operator>>((LONG&)i); }
+_AFX_INLINE CArchive& CArchive::operator>>(unsigned& u)
+ { return CArchive::operator>>((LONG&)u); }
+_AFX_INLINE CArchive& CArchive::operator>>(short& w)
+ { return CArchive::operator>>((WORD&)w); }
+_AFX_INLINE CArchive& CArchive::operator>>(char& ch)
+ { return CArchive::operator>>((BYTE&)ch); }
+_AFX_INLINE CArchive& CArchive::operator>>(BYTE& by)
+ { if (m_lpBufCur + sizeof(BYTE) > m_lpBufMax)
+ FillBuffer(sizeof(BYTE) - (UINT)(m_lpBufMax - m_lpBufCur));
+ by = *(UNALIGNED BYTE*)m_lpBufCur; m_lpBufCur += sizeof(BYTE); return *this; }
+#ifndef _MAC
+_AFX_INLINE CArchive& CArchive::operator>>(WORD& w)
+ { if (m_lpBufCur + sizeof(WORD) > m_lpBufMax)
+ FillBuffer(sizeof(WORD) - (UINT)(m_lpBufMax - m_lpBufCur));
+ w = *(UNALIGNED WORD*)m_lpBufCur; m_lpBufCur += sizeof(WORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(DWORD& dw)
+ { if (m_lpBufCur + sizeof(DWORD) > m_lpBufMax)
+ FillBuffer(sizeof(DWORD) - (UINT)(m_lpBufMax - m_lpBufCur));
+ dw = *(UNALIGNED DWORD*)m_lpBufCur; m_lpBufCur += sizeof(DWORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(float& f)
+ { if (m_lpBufCur + sizeof(float) > m_lpBufMax)
+ FillBuffer(sizeof(float) - (UINT)(m_lpBufMax - m_lpBufCur));
+ *(_AFX_FLOAT*)&f = *(UNALIGNED _AFX_FLOAT*)m_lpBufCur; m_lpBufCur += sizeof(float); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(double& d)
+ { if (m_lpBufCur + sizeof(double) > m_lpBufMax)
+ FillBuffer(sizeof(double) - (UINT)(m_lpBufMax - m_lpBufCur));
+ *(_AFX_DOUBLE*)&d = *(UNALIGNED _AFX_DOUBLE*)m_lpBufCur; m_lpBufCur += sizeof(double); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(LONG& l)
+ { if (m_lpBufCur + sizeof(LONG) > m_lpBufMax)
+ FillBuffer(sizeof(LONG) - (UINT)(m_lpBufMax - m_lpBufCur));
+ l = *(UNALIGNED LONG*)m_lpBufCur; m_lpBufCur += sizeof(LONG); return *this; }
+#endif
+_AFX_INLINE CArchive::CArchive(const CArchive& /* arSrc */)
+ { }
+_AFX_INLINE void CArchive::operator=(const CArchive& /* arSrc */)
+ { }
+_AFX_INLINE CArchive& AFXAPI operator<<(CArchive& ar, const CObject* pOb)
+ { ar.WriteObject(pOb); return ar; }
+_AFX_INLINE CArchive& AFXAPI operator>>(CArchive& ar, CObject*& pOb)
+ { pOb = ar.ReadObject(NULL); return ar; }
+_AFX_INLINE CArchive& AFXAPI operator>>(CArchive& ar, const CObject*& pOb)
+ { pOb = ar.ReadObject(NULL); return ar; }
+
+
+// CDumpContext
+_AFX_INLINE int CDumpContext::GetDepth() const
+ { return m_nDepth; }
+_AFX_INLINE void CDumpContext::SetDepth(int nNewDepth)
+ { m_nDepth = nNewDepth; }
+_AFX_INLINE CDumpContext::CDumpContext(const CDumpContext& /* dcSrc */)
+ { }
+_AFX_INLINE void CDumpContext::operator=(const CDumpContext& /* dcSrc */)
+ { }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFX_INLINE
diff --git a/public/sdk/inc/mfc40/afxadv.h b/public/sdk/inc/mfc40/afxadv.h
new file mode 100644
index 000000000..972416d37
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxadv.h
@@ -0,0 +1,181 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Note: This header file contains useful classes that are documented only
+// in the MFC Technical Notes. These classes may change from version to
+// version, so be prepared to change your code accordingly if you utilize
+// this header. In the future, commonly used portions of this header
+// may be moved and officially documented.
+
+#ifndef __AFXADV_H__
+#define __AFXADV_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXADV - MFC Advanced Classes
+
+// Classes declared in this file
+
+//CObject
+ //CFile
+ //CMemFile
+ class CSharedFile; // Shared memory file
+
+ class CRecentFileList; // used in CWinApp for MRU list
+ class CDockState; // state of docking toolbars
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Shared file support
+
+class CSharedFile : public CMemFile
+{
+ DECLARE_DYNAMIC(CSharedFile)
+
+public:
+// Constructors
+ CSharedFile(UINT nAllocFlags = GMEM_DDESHARE|GMEM_MOVEABLE,
+ UINT nGrowBytes = 4096);
+
+// Attributes
+ HGLOBAL Detach();
+ void SetHandle(HGLOBAL hGlobalMemory, BOOL bAllowGrow = TRUE);
+
+// Implementation
+public:
+ virtual ~CSharedFile();
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual void Free(BYTE* lpMem);
+
+ UINT m_nAllocFlags;
+ HGLOBAL m_hGlobalMemory;
+ BOOL m_bAllowGrow;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRecentFileList
+
+#define AFX_ABBREV_FILENAME_LEN 30
+
+class CRecentFileList
+{
+// Constructors
+public:
+ CRecentFileList(UINT nStart, LPCTSTR lpszSection,
+ LPCTSTR lpszEntryFormat, int nSize,
+ int nMaxDispLen = AFX_ABBREV_FILENAME_LEN);
+
+// Attributes
+ int GetSize() const;
+ CString& operator[](int nIndex);
+
+// Operations
+ virtual void Remove(int nIndex);
+ virtual void Add(LPCTSTR lpszPathName);
+ BOOL GetDisplayName(CString& strName, int nIndex,
+ LPCTSTR lpszCurDir, int nCurDir, BOOL bAtLeastName = TRUE) const;
+ virtual void UpdateMenu(CCmdUI* pCmdUI);
+ virtual void ReadList(); // reads from registry or ini file
+ virtual void WriteList(); // writes to registry or ini file
+
+// Implementation
+ virtual ~CRecentFileList();
+
+ int m_nSize; // contents of the MRU list
+ CString* m_arrNames;
+ CString m_strSectionName; // for saving
+ CString m_strEntryFormat;
+ UINT m_nStart; // for displaying
+ int m_nMaxDisplayLength;
+ CString m_strOriginal; // original menu item contents
+};
+
+inline int CRecentFileList::GetSize() const
+ { return m_nSize; }
+inline CString& CRecentFileList::operator[](int nIndex)
+ { ASSERT(nIndex < m_nSize); return m_arrNames[nIndex]; }
+
+/////////////////////////////////////////////////////////////////////////////
+// CDockState - used for docking serialization
+
+class CDockState : public CObject
+{
+ DECLARE_SERIAL(CDockState)
+ CDockState();
+
+public:
+// Attributes
+ CPtrArray m_arrBarInfo;
+
+public:
+// Operations
+ void LoadState(LPCTSTR lpszProfileName);
+ void SaveState(LPCTSTR lpszProfileName);
+ void Clear(); //deletes all the barinfo's
+ DWORD GetVersion();
+
+// Implementation
+protected:
+ BOOL m_bScaling;
+ CRect m_rectDevice;
+ CRect m_rectClip;
+ CSize m_sizeLogical;
+ DWORD m_dwVersion;
+
+public:
+ ~CDockState();
+ virtual void Serialize(CArchive& ar);
+
+ // scaling implementation
+ void ScalePoint(CPoint& pt);
+ void ScaleRectPos(CRect& rect);
+ CSize GetScreenSize();
+ void SetScreenSize(CSize& size);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXADV_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxaete.r b/public/sdk/inc/mfc40/afxaete.r
new file mode 100644
index 000000000..c3aa8d3a7
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxaete.r
@@ -0,0 +1,92 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXAETE_R__
+#define __AFXAETE_R__
+
+#include "mrc\Types.r"
+#include "mrc\SysTypes.r"
+#include "mrc\AppleEve.r"
+#include "mrc\AERegist.r"
+#include "mrc\AEUserTe.r"
+
+
+resource 'aete' (0)
+{
+ 1,
+ 0,
+ langEnglish,
+ smRoman,
+ {
+ "Required Suite",
+ "Terms that every application should support",
+ kAERequiredSuite,
+ 1,
+ 1,
+ {}, {}, {}, {},
+
+ "MFC Suite",
+ "Terms supported by MFC applications",
+ '****',
+ 1,
+ 1,
+ {
+ "quit",
+ "Quit an application program",
+ kAERequiredSuite,
+ kAEQuitApplication,
+ noReply,
+ "",
+ replyOptional,
+ singleItem,
+ notEnumerated,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved,
+ verbEvent,
+ reserved, reserved, reserved,
+ noParams,
+ "",
+ directParamOptional,
+ singleItem,
+ notEnumerated,
+ changesState,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved,
+ {
+ "saving",
+ keyAESaveOptions,
+ enumSaveOptions,
+ "specifies whether to save currently open documents",
+ optional,
+ singleItem,
+ enumerated,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved,
+ prepositionParam,
+ notFeminine,
+ notMasculine,
+ singular
+ },
+ },
+ {}, {},
+ {
+ enumSaveOptions,
+ {
+ "yes", kAEYes, "Save objects now",
+ "no", kAENo, "Do not save objects",
+ "ask", kAEAsk, "Ask the user whether to save"
+ },
+ }
+ }
+};
+
+
+#endif
diff --git a/public/sdk/inc/mfc40/afxcmn.h b/public/sdk/inc/mfc40/afxcmn.h
new file mode 100644
index 000000000..63aafb630
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxcmn.h
@@ -0,0 +1,1036 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCMN_H__
+#define __AFXCMN_H__
+
+#ifdef _AFX_NO_AFXCMN_SUPPORT
+ #error Windows Common Control classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef IMAGE_BITMAP
+#define IMAGE_BITMAP 0
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+// RichEdit requires OLE
+#if !defined(_AFXDLL) && !defined(_USRDLL)
+ #ifdef _DEBUG
+ #pragma comment(lib, "wlmoled.lib")
+ #else
+ #pragma comment(lib, "wlmole.lib")
+ #endif
+#else
+ #ifdef _DEBUG
+ #pragma comment(lib, "msvcoled.lib")
+ #else
+ #pragma comment(lib, "msvcole.lib")
+ #endif
+#endif
+
+#pragma comment(lib, "uuid.lib")
+
+#ifdef _DEBUG
+ #pragma comment(lib, "ole2d.lib")
+ #pragma comment(lib, "ole2autd.lib")
+#else
+ #pragma comment(lib, "ole2.lib")
+ #pragma comment(lib, "ole2auto.lib")
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ #ifndef _RICHEDIT_
+ #include <richedit.h>
+ #endif
+ #ifdef __AFXOLE_H__ // only include richole if OLE support is included
+ #ifndef _RICHOLE_
+ #include <richole.h>
+ #define _RICHOLE_
+ #endif
+ #else
+ struct IRichEditOle;
+ struct IRichEditOleCallback;
+ #endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXCMN - MFC COMCTL32 Control Classes
+
+// Classes declared in this file
+
+//TOOLINFO
+ class CToolInfo;
+
+//CObject
+ class CImageList;
+ //CCmdTarget;
+ //CWnd
+ // class CListBox;
+ class CDragListBox;
+ class CListCtrl;
+ class CTreeCtrl;
+ class CSpinButtonCtrl;
+ class CHeaderCtrl;
+ class CSliderCtrl;
+ class CProgressCtrl;
+ class CHotKeyCtrl;
+ class CToolTipCtrl;
+ class CTabCtrl;
+ class CAnimateCtrl;
+ class CToolBarCtrl;
+ class CStatusBarCtrl;
+ class CRichEditCtrl;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolInfo
+
+#ifdef _UNICODE
+class CToolInfo : public tagTOOLINFOW
+#else
+class CToolInfo : public tagTOOLINFOA
+#endif
+{
+public:
+ TCHAR szText[256];
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDragListBox
+
+class CDragListBox : public CListBox
+{
+ DECLARE_DYNAMIC(CDragListBox)
+
+// Constructors
+public:
+ CDragListBox();
+
+// Attributes
+ int ItemFromPt(CPoint pt, BOOL bAutoScroll = TRUE) const;
+
+// Operations
+ virtual void DrawInsert(int nItem);
+
+// Overridables
+ virtual BOOL BeginDrag(CPoint pt);
+ virtual void CancelDrag(CPoint pt);
+ virtual UINT Dragging(CPoint pt);
+ virtual void Dropped(int nSrcIndex, CPoint pt);
+
+// Implementation
+public:
+ int m_nLast;
+ void DrawSingle(int nIndex);
+ virtual void PreSubclassWindow();
+ virtual ~CDragListBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CStatusBarCtrl
+
+class CStatusBarCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CStatusBarCtrl)
+
+// Constructors
+public:
+ CStatusBarCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL SetText(LPCTSTR lpszText, int nPane, int nType);
+ CString GetText(int nPane, int* pType = NULL) const;
+ int GetText(LPCTSTR lpszText, int nPane, int* pType = NULL) const;
+ int GetTextLength(int nPane, int* pType = NULL) const;
+ BOOL SetParts(int nParts, int* pWidths);
+ int GetParts(int nParts, int* pParts) const;
+ BOOL GetBorders(int* pBorders) const;
+ BOOL GetBorders(int& nHorz, int& nVert, int& nSpacing) const;
+ void SetMinHeight(int nMin);
+ BOOL SetSimple(BOOL bSimple = TRUE);
+ BOOL GetRect(int nPane, LPRECT lpRect) const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CStatusBarCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CListCtrl
+
+class CListCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CListCtrl)
+
+// Constructors
+public:
+ CListCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ COLORREF GetBkColor() const;
+ BOOL SetBkColor(COLORREF cr);
+ CImageList* GetImageList(int nImageList) const;
+ CImageList* SetImageList(CImageList* pImageList, int nImageListType);
+ int GetItemCount() const;
+ BOOL GetItem(LV_ITEM* pItem) const;
+ BOOL SetItem(const LV_ITEM* pItem);
+ BOOL SetItem(int nItem, int nSubItem, UINT nMask, LPCTSTR lpszItem,
+ int nImage, UINT nState, UINT nStateMask, LPARAM lParam);
+ UINT GetCallbackMask() const;
+ BOOL SetCallbackMask(UINT nMask);
+ int GetNextItem(int nItem, int nFlags) const;
+ BOOL GetItemRect(int nItem, LPRECT lpRect, UINT nCode) const;
+ BOOL SetItemPosition(int nItem, POINT pt);
+ BOOL GetItemPosition(int nItem, LPPOINT lpPoint) const;
+ int GetStringWidth(LPCTSTR lpsz) const;
+ CEdit* GetEditControl() const;
+ BOOL GetColumn(int nCol, LV_COLUMN* pColumn) const;
+ BOOL SetColumn(int nCol, const LV_COLUMN* pColumn);
+ int GetColumnWidth(int nCol) const;
+ BOOL SetColumnWidth(int nCol, int cx);
+ BOOL GetViewRect(LPRECT lpRect) const;
+ COLORREF GetTextColor() const;
+ BOOL SetTextColor(COLORREF cr);
+ COLORREF GetTextBkColor() const;
+ BOOL SetTextBkColor(COLORREF cr);
+ int GetTopIndex() const;
+ int GetCountPerPage() const;
+ BOOL GetOrigin(LPPOINT lpPoint) const;
+ BOOL SetItemState(int nItem, LV_ITEM* pItem);
+ BOOL SetItemState(int nItem, UINT nState, UINT nMask);
+ UINT GetItemState(int nItem, UINT nMask) const;
+ CString GetItemText(int nItem, int nSubItem) const;
+ int GetItemText(int nItem, int nSubItem, LPTSTR lpszText, int nLen) const;
+ BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);
+ void SetItemCount(int nItems);
+ BOOL SetItemData(int nItem, DWORD dwData);
+ DWORD GetItemData(int nItem) const;
+ UINT GetSelectedCount() const;
+
+// Operations
+ int InsertItem(const LV_ITEM* pItem);
+ int InsertItem(int nItem, LPCTSTR lpszItem);
+ int InsertItem(int nItem, LPCTSTR lpszItem, int nImage);
+ BOOL DeleteItem(int nItem);
+ BOOL DeleteAllItems();
+ int FindItem(LV_FINDINFO* pFindInfo, int nStart = -1) const;
+ int HitTest(LV_HITTESTINFO* pHitTestInfo) const;
+ int HitTest(CPoint pt, UINT* pFlags = NULL) const;
+ BOOL EnsureVisible(int nItem, BOOL bPartialOK);
+ BOOL Scroll(CSize size);
+ BOOL RedrawItems(int nFirst, int nLast);
+ BOOL Arrange(UINT nCode);
+ CEdit* EditLabel(int nItem);
+ int InsertColumn(int nCol, const LV_COLUMN* pColumn);
+ int InsertColumn(int nCol, LPCTSTR lpszColumnHeading,
+ int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1);
+ BOOL DeleteColumn(int nCol);
+ CImageList* CreateDragImage(int nItem, LPPOINT lpPoint);
+ BOOL Update(int nItem);
+ BOOL SortItems(PFNLVCOMPARE pfnCompare, DWORD dwData);
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ int InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState,
+ UINT nStateMask, int nImage, LPARAM lParam);
+ virtual ~CListCtrl();
+protected:
+ void RemoveImageList(int nImageList);
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+protected:
+ //{{AFX_MSG(CListCtrl)
+ afx_msg void OnNcDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTreeCtrl
+
+class CTreeCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CTreeCtrl)
+
+// Constructors
+public:
+ CTreeCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL GetItemRect(HTREEITEM hItem, LPRECT lpRect, BOOL bTextOnly) const;
+ UINT GetCount() const;
+ UINT GetIndent() const;
+ void SetIndent(UINT nIndent);
+ CImageList* GetImageList(UINT nImageList) const;
+ CImageList* SetImageList(CImageList* pImageList, int nImageListType);
+ HTREEITEM GetNextItem(HTREEITEM hItem, UINT nCode) const;
+ HTREEITEM GetChildItem(HTREEITEM hItem) const;
+ HTREEITEM GetNextSiblingItem(HTREEITEM hItem) const;
+ HTREEITEM GetPrevSiblingItem(HTREEITEM hItem) const;
+ HTREEITEM GetParentItem(HTREEITEM hItem) const;
+ HTREEITEM GetFirstVisibleItem() const;
+ HTREEITEM GetNextVisibleItem(HTREEITEM hItem) const;
+ HTREEITEM GetPrevVisibleItem(HTREEITEM hItem) const;
+ HTREEITEM GetSelectedItem() const;
+ HTREEITEM GetDropHilightItem() const;
+ HTREEITEM GetRootItem() const;
+ BOOL GetItem(TV_ITEM* pItem) const;
+ CString GetItemText(HTREEITEM hItem) const;
+ BOOL GetItemImage(HTREEITEM hItem, int& nImage, int& nSelectedImage) const;
+ UINT GetItemState(HTREEITEM hItem, UINT nStateMask) const;
+ DWORD GetItemData(HTREEITEM hItem) const;
+ BOOL SetItem(TV_ITEM* pItem);
+ BOOL SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR lpszItem, int nImage,
+ int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam);
+ BOOL SetItemText(HTREEITEM hItem, LPCTSTR lpszItem);
+ BOOL SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage);
+ BOOL SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask);
+ BOOL SetItemData(HTREEITEM hItem, DWORD dwData);
+ BOOL ItemHasChildren(HTREEITEM hItem) const;
+ CEdit* GetEditControl() const;
+ UINT GetVisibleCount() const;
+
+// Operations
+ HTREEITEM InsertItem(LPTV_INSERTSTRUCT lpInsertStruct);
+ HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage,
+ int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam,
+ HTREEITEM hParent, HTREEITEM hInsertAfter);
+ HTREEITEM InsertItem(LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT,
+ HTREEITEM hInsertAfter = TVI_LAST);
+ HTREEITEM InsertItem(LPCTSTR lpszItem, int nImage, int nSelectedImage,
+ HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
+ BOOL DeleteItem(HTREEITEM hItem);
+ BOOL DeleteAllItems();
+ BOOL Expand(HTREEITEM hItem, UINT nCode);
+ HTREEITEM Select(HTREEITEM hItem, UINT nCode);
+ HTREEITEM SelectItem(HTREEITEM hItem);
+ HTREEITEM SelectDropTarget(HTREEITEM hItem);
+ HTREEITEM SelectSetFirstVisible(HTREEITEM hItem);
+ CEdit* EditLabel(HTREEITEM hItem);
+ HTREEITEM HitTest(CPoint pt, UINT* pFlags = NULL) const;
+ HTREEITEM HitTest(TV_HITTESTINFO* pHitTestInfo) const;
+ CImageList* CreateDragImage(HTREEITEM hItem);
+ BOOL SortChildren(HTREEITEM hItem);
+ BOOL EnsureVisible(HTREEITEM hItem);
+ BOOL SortChildrenCB(LPTV_SORTCB pSort);
+
+// Implementation
+protected:
+ void RemoveImageList(int nImageList);
+public:
+ virtual ~CTreeCtrl();
+ //{{AFX_MSG(CTreeCtrl)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSpinButtonCtrl
+
+class CSpinButtonCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CSpinButtonCtrl)
+
+// Constructors
+public:
+ CSpinButtonCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL SetAccel(int nAccel, UDACCEL* pAccel);
+ UINT GetAccel(int nAccel, UDACCEL* pAccel) const;
+ int SetBase(int nBase);
+ UINT GetBase() const;
+ CWnd* SetBuddy(CWnd* pWndBuddy);
+ CWnd* GetBuddy() const;
+ int SetPos(int nPos);
+ int GetPos() const;
+ void SetRange(int nLower, int nUpper);
+ DWORD GetRange() const;
+ void GetRange(int &lower, int& upper) const;
+
+// Implementation
+public:
+ virtual ~CSpinButtonCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSliderCtrl
+
+class CSliderCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CSliderCtrl)
+
+// Constructors
+public:
+ CSliderCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetLineSize() const;
+ int SetLineSize(int nSize);
+ int GetPageSize() const;
+ int SetPageSize(int nSize);
+ int GetRangeMax() const;
+ int GetRangeMin() const;
+ void GetRange(int& nMin, int& nMax) const;
+ void SetRangeMin(int nMin, BOOL bRedraw = FALSE);
+ void SetRangeMax(int nMax, BOOL bRedraw = FALSE);
+ void SetRange(int nMin, int nMax, BOOL bRedraw = FALSE);
+ void GetSelection(int& nMin, int& nMax) const;
+ void SetSelection(int nMin, int nMax);
+ void GetChannelRect(LPRECT lprc) const;
+ void GetThumbRect(LPRECT lprc) const;
+ int GetPos() const;
+ void SetPos(int nPos);
+ UINT GetNumTics() const;
+ DWORD* GetTicArray() const;
+ int GetTic(int nTic) const;
+ int GetTicPos(int nTic) const;
+ BOOL SetTic(int nTic);
+ void SetTicFreq(int nFreq);
+
+// Operations
+ void ClearSel(BOOL bRedraw = FALSE);
+ void VerifyPos();
+ void ClearTics(BOOL bRedraw = FALSE);
+
+// Implementation
+public:
+ virtual ~CSliderCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CProgressCtrl
+
+class CProgressCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CProgressCtrl)
+
+// Constructors
+public:
+ CProgressCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetRange(int nLower, int nUpper);
+ int SetPos(int nPos);
+ int OffsetPos(int nPos);
+ int SetStep(int nStep);
+
+// Operations
+ int StepIt();
+
+// Implementation
+public:
+ virtual ~CProgressCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CHeaderCtrl
+
+class CHeaderCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CHeaderCtrl)
+
+// Constructors
+public:
+ CHeaderCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetItemCount() const;
+ BOOL GetItem(int nPos, HD_ITEM* pHeaderItem) const;
+ BOOL SetItem(int nPos, HD_ITEM* pHeaderItem);
+
+// Operations
+ int InsertItem(int nPos, HD_ITEM* phdi);
+ BOOL DeleteItem(int nPos);
+ BOOL Layout(HD_LAYOUT* pHeaderLayout);
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CHeaderCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CHotKeyCtrl
+
+class CHotKeyCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CHotKeyCtrl)
+
+// Constructors
+public:
+ CHotKeyCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetHotKey(WORD wVirtualKeyCode, WORD wModifiers);
+ DWORD GetHotKey() const;
+ void GetHotKey(WORD &wVirtualKeyCode, WORD &wModifiers) const;
+
+// Operations
+ void SetRules(WORD wInvalidComb, WORD wModifiers);
+
+// Implementation
+public:
+ virtual ~CHotKeyCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolTipCtrl
+
+class CToolTipCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CToolTipCtrl)
+
+// Constructors
+public:
+ CToolTipCtrl();
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle = 0);
+
+// Attributes
+ void GetText(CString& str, CWnd* pWnd, UINT nIDTool = 0) const;
+ BOOL GetToolInfo(CToolInfo& ToolInfo, CWnd* pWnd, UINT nIDTool = 0) const;
+ void SetToolInfo(LPTOOLINFO lpToolInfo);
+ void SetToolRect(CWnd* pWnd, UINT nIDTool, LPCRECT lpRect);
+ int GetToolCount() const;
+
+// Operations
+ void Activate(BOOL bActivate);
+
+ BOOL AddTool(CWnd* pWnd, UINT nIDText, LPCRECT lpRectTool = NULL,
+ UINT nIDTool = 0);
+ BOOL AddTool(CWnd* pWnd, LPCTSTR lpszText = LPSTR_TEXTCALLBACK,
+ LPCRECT lpRectTool = NULL, UINT nIDTool = 0);
+
+ void DelTool(CWnd* pWnd, UINT nIDTool = 0);
+
+ BOOL HitTest(CWnd* pWnd, CPoint pt, LPTOOLINFO lpToolInfo) const;
+ void RelayEvent(LPMSG lpMsg);
+ void SetDelayTime(UINT nDelay);
+ void UpdateTipText(LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool = 0);
+ void UpdateTipText(UINT nIDText, CWnd* pWnd, UINT nIDTool = 0);
+
+// Implementation
+public:
+ void FillInToolInfo(TOOLINFO& ti, CWnd* pWnd, UINT nIDTool) const;
+ virtual ~CToolTipCtrl();
+ BOOL DestroyToolTipCtrl();
+
+protected:
+ //{{AFX_MSG(CToolTipCtrl)
+ afx_msg LRESULT OnDisableModal(WPARAM, LPARAM);
+ afx_msg LRESULT OnWindowFromPoint(WPARAM, LPARAM);
+ afx_msg LRESULT OnAddTool(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ CMapStringToPtr m_mapString;
+
+ friend class CWnd;
+ friend class CToolBar;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTabCtrl
+
+class CTabCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CTabCtrl)
+
+// Constructors
+public:
+ CTabCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ CImageList* GetImageList() const;
+ CImageList* SetImageList(CImageList* pImageList);
+ int GetItemCount() const;
+ BOOL GetItem(int nItem, TC_ITEM* pTabCtrlItem) const;
+ BOOL SetItem(int nItem, TC_ITEM* pTabCtrlItem);
+ BOOL GetItemRect(int nItem, LPRECT lpRect) const;
+ int GetCurSel() const;
+ int SetCurSel(int nItem);
+ CSize SetItemSize(CSize size);
+ void SetPadding(CSize size);
+ int GetRowCount() const;
+ CToolTipCtrl* GetTooltips() const;
+ void SetTooltips(CToolTipCtrl* pWndTip);
+ int GetCurFocus() const;
+
+// Operations
+ BOOL InsertItem(int nItem, TC_ITEM* pTabCtrlItem);
+ BOOL DeleteItem(int nItem);
+ BOOL DeleteAllItems();
+ void AdjustRect(BOOL bLarger, LPRECT lpRect);
+ void RemoveImage(int nImage);
+ int HitTest(TC_HITTESTINFO* pHitTestInfo) const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CTabCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+ //{{AFX_MSG(CTabCtrl)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CAnimateCtrl
+
+class CAnimateCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CAnimateCtrl)
+
+// Constructors
+public:
+ CAnimateCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Operations
+ BOOL Open(LPCTSTR lpszFileName);
+ BOOL Open(UINT nID);
+ BOOL Play(UINT nFrom, UINT nTo, UINT nRep);
+ BOOL Stop();
+ BOOL Close();
+ BOOL Seek(UINT nTo);
+
+// Implementation
+public:
+ virtual ~CAnimateCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CImageList
+
+class CImageList : public CObject
+{
+ DECLARE_DYNCREATE(CImageList)
+
+// Constructors
+public:
+ CImageList();
+ BOOL Create(int cx, int cy, BOOL bMask, int nInitial, int nGrow);
+ BOOL Create(UINT nBitmapID, int cx, int nGrow, COLORREF crMask);
+ BOOL Create(LPCTSTR lpszBitmapID, int cx, int nGrow, COLORREF crMask);
+ BOOL Create(CImageList& imagelist1, int nImage1, CImageList& imagelist2,
+ int nImage2, int dx, int dy);
+
+// Attributes
+ HIMAGELIST m_hImageList; // must be first data member
+ operator HIMAGELIST() const;
+ HIMAGELIST GetSafeHandle() const;
+
+ static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);
+ static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HIMAGELIST hImageList);
+ HIMAGELIST Detach();
+
+ int GetImageCount() const;
+ COLORREF SetBkColor(COLORREF cr);
+ COLORREF GetBkColor() const;
+ BOOL GetImageInfo(int nImage, IMAGEINFO* pImageInfo) const;
+
+// Operations
+ BOOL DeleteImageList();
+
+ int Add(CBitmap* pbmImage, CBitmap* pbmMask);
+ int Add(CBitmap* pbmImage, COLORREF crMask);
+ BOOL Remove(int nImage);
+ BOOL Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask);
+ int Add(HICON hIcon);
+ int Replace(int nImage, HICON hIcon);
+ HICON ExtractIcon(int nImage);
+ BOOL Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle);
+ BOOL SetOverlayImage(int nImage, int nOverlay);
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ BOOL Read(CArchive* pArchive);
+ BOOL Write(CArchive* pArchive);
+#endif
+
+// Drag APIs
+ BOOL BeginDrag(int nImage, CPoint ptHotSpot);
+ static void PASCAL EndDrag();
+ static BOOL PASCAL DragMove(CPoint pt);
+ BOOL SetDragCursorImage(int nDrag, CPoint ptHotSpot);
+ static BOOL PASCAL DragShowNolock(BOOL bShow);
+ static CImageList* PASCAL GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot);
+ static BOOL PASCAL DragEnter(CWnd* pWndLock, CPoint point);
+ static BOOL PASCAL DragLeave(CWnd* pWndLock);
+
+// Implementation
+public:
+ virtual ~CImageList();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolBarCtrl
+
+class CToolBarCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CToolBarCtrl)
+// Construction
+public:
+ CToolBarCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+public:
+ BOOL IsButtonEnabled(int nID) const;
+ BOOL IsButtonChecked(int nID) const;
+ BOOL IsButtonPressed(int nID) const;
+ BOOL IsButtonHidden(int nID) const;
+ BOOL IsButtonIndeterminate(int nID) const;
+ BOOL SetState(int nID, UINT nState);
+ int GetState(int nID) const;
+ BOOL GetButton(int nIndex, LPTBBUTTON lpButton) const;
+ int GetButtonCount() const;
+ BOOL GetItemRect(int nIndex, LPRECT lpRect) const;
+ void SetButtonStructSize(int nSize);
+ BOOL SetButtonSize(CSize size);
+ BOOL SetBitmapSize(CSize size);
+ CToolTipCtrl* GetToolTips() const;
+ void SetToolTips(CToolTipCtrl* pTip);
+ void SetOwner(CWnd* pWnd);
+ void SetRows(int nRows, BOOL bLarger, LPRECT lpRect);
+ int GetRows() const;
+ BOOL SetCmdID(int nIndex, UINT nID);
+ UINT GetBitmapFlags() const;
+
+// Operations
+public:
+ BOOL EnableButton(int nID, BOOL bEnable = TRUE);
+ BOOL CheckButton(int nID, BOOL bCheck = TRUE);
+ BOOL PressButton(int nID, BOOL bPress = TRUE);
+ BOOL HideButton(int nID, BOOL bHide = TRUE);
+ BOOL Indeterminate(int nID, BOOL bIndeterminate = TRUE);
+ int AddBitmap(int nNumButtons, UINT nBitmapID);
+ int AddBitmap(int nNumButtons, CBitmap* pBitmap);
+ BOOL AddButtons(int nNumButtons, LPTBBUTTON lpButtons);
+ BOOL InsertButton(int nIndex, LPTBBUTTON lpButton);
+ BOOL DeleteButton(int nIndex);
+ UINT CommandToIndex(UINT nID) const;
+ void SaveState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
+ LPCTSTR lpszValueName);
+ void RestoreState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
+ LPCTSTR lpszValueName);
+
+ void Customize();
+ int AddString(UINT nStringID);
+ int AddStrings(LPCTSTR lpszStrings);
+ void AutoSize();
+
+// Implementation
+public:
+ virtual ~CToolBarCtrl();
+
+protected:
+ //{{AFX_MSG(CToolBarCtrl)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditCtrl
+
+class CRichEditCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CRichEditCtrl)
+
+// Constructors
+public:
+ CRichEditCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL CanUndo() const;
+ int GetLineCount() const;
+ BOOL GetModify() const;
+ void SetModify(BOOL bModified = TRUE);
+ void GetRect(LPRECT lpRect) const;
+ CPoint GetCharPos(long lChar) const;
+ void SetOptions(WORD wOp, DWORD dwFlags);
+
+ // NOTE: first word in lpszBuffer must contain the size of the buffer!
+ int GetLine(int nIndex, LPTSTR lpszBuffer) const;
+ int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
+
+ BOOL CanPaste(UINT nFormat = 0) const;
+ void GetSel(long& nStartChar, long& nEndChar) const;
+ void GetSel(CHARRANGE &cr) const;
+ void LimitText(long nChars = 0);
+ long LineFromChar(long nIndex) const;
+ void SetSel(long nStartChar, long nEndChar);
+ void SetSel(CHARRANGE &cr);
+ long GetEventMask() const;
+ long GetLimitText() const;
+ DWORD GetParaFormat(PARAFORMAT &pf) const;
+ // richedit EM_GETSELTEXT is ANSI
+ long GetSelText(LPSTR lpBuf) const;
+ CString GetSelText() const;
+ WORD GetSelectionType() const;
+ COLORREF SetBackgroundColor(BOOL bSysColor, COLORREF cr);
+#ifdef UNICODE
+ BOOL SetDefaultCharFormat(struct _charformat &cf);
+ DWORD GetDefaultCharFormat(struct _charformat &cf) const;
+ DWORD GetSelectionCharFormat(struct _charformat &cf) const;
+ BOOL SetSelectionCharFormat(struct _charformat &cf);
+ BOOL SetWordCharFormat(struct _charformat &cf);
+#endif
+ DWORD GetDefaultCharFormat(CHARFORMAT &cf) const;
+ DWORD GetSelectionCharFormat(CHARFORMAT &cf) const;
+ BOOL SetDefaultCharFormat(CHARFORMAT &cf);
+ BOOL SetSelectionCharFormat(CHARFORMAT &cf);
+ BOOL SetWordCharFormat(CHARFORMAT &cf);
+ DWORD SetEventMask(DWORD dwEventMask);
+ BOOL SetParaFormat(PARAFORMAT &pf);
+ BOOL SetTargetDevice(HDC hDC, long lLineWidth);
+ BOOL SetTargetDevice(CDC &dc, long lLineWidth);
+ long GetTextLength() const;
+ BOOL SetReadOnly(BOOL bReadOnly = TRUE);
+ int GetFirstVisibleLine() const;
+
+// Operations
+ void EmptyUndoBuffer();
+
+ int LineIndex(int nLine = -1) const;
+ int LineLength(int nLine = -1) const;
+ void LineScroll(int nLines, int nChars = 0);
+ void ReplaceSel(LPCTSTR lpszNewText);
+ void SetRect(LPCRECT lpRect);
+
+ BOOL DisplayBand(LPRECT pDisplayRect);
+ long FindText(DWORD dwFlags, FINDTEXTEX* pFindText) const;
+ long FormatRange(FORMATRANGE* pfr, BOOL bDisplay = TRUE);
+ void HideSelection(BOOL bHide, BOOL bPerm);
+ void PasteSpecial(UINT nClipFormat, DWORD dvAspect = 0, HMETAFILE hMF = 0);
+ void RequestResize();
+ long StreamIn(int nFormat, EDITSTREAM &es);
+ long StreamOut(int nFormat, EDITSTREAM &es);
+
+ // Clipboard operations
+ BOOL Undo();
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+// OLE support
+ IRichEditOle* GetIRichEditOle() const;
+ BOOL SetOLECallback(IRichEditOleCallback* pCallback);
+
+// Implementation
+public:
+ virtual ~CRichEditCtrl();
+ LRESULT Send32s(UINT nMsg, WPARAM wParam, LPARAM lParam) const;
+};
+
+#ifdef UNICODE
+
+__inline
+BOOL CRichEditCtrl::SetDefaultCharFormat(CHARFORMAT &cf)
+{
+ CHARFORMATA a ;
+
+ a.cbSize = cf.cbSize;
+ a.dwMask = cf.dwMask;
+ a.dwEffects = cf.dwEffects;
+ a.yHeight = cf.yHeight;
+ a.yOffset = cf.yOffset;
+ a.crTextColor = cf.crTextColor;
+ a.bCharSet = cf.bCharSet;
+ a.bPitchAndFamily = cf.bPitchAndFamily;
+
+ WideCharToMultiByte(CP_OEMCP, WC_COMPOSITECHECK | WC_SEPCHARS, cf.szFaceName,
+ -1, a.szFaceName, sizeof(a.szFaceName), NULL, NULL);
+
+ return(SetDefaultCharFormat(a));
+}
+
+__inline
+DWORD CRichEditCtrl::GetDefaultCharFormat(CHARFORMAT &cf) const
+{
+ CHARFORMATA a ;
+
+ DWORD dwRc = GetDefaultCharFormat(a);
+
+ cf.cbSize = a.cbSize;
+ cf.dwMask = a.dwMask;
+ cf.dwEffects = a.dwEffects;
+ cf.yHeight = a.yHeight;
+ cf.yOffset = a.yOffset;
+ cf.crTextColor = a.crTextColor;
+ cf.bCharSet = a.bCharSet;
+ cf.bPitchAndFamily = a.bPitchAndFamily;
+
+ MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, a.szFaceName,
+ -1, cf.szFaceName, sizeof(cf.szFaceName)/sizeof(WCHAR));
+
+ return(dwRc);
+}
+
+__inline
+DWORD CRichEditCtrl::GetSelectionCharFormat(CHARFORMAT &cf) const
+{
+ CHARFORMATA a ;
+
+ DWORD dwRc = GetSelectionCharFormat(a);
+
+ cf.cbSize = a.cbSize;
+ cf.dwMask = a.dwMask;
+ cf.dwEffects = a.dwEffects;
+ cf.yHeight = a.yHeight;
+ cf.yOffset = a.yOffset;
+ cf.crTextColor = a.crTextColor;
+ cf.bCharSet = a.bCharSet;
+ cf.bPitchAndFamily = a.bPitchAndFamily;
+
+ MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, a.szFaceName,
+ -1, cf.szFaceName, sizeof(cf.szFaceName)/sizeof(WCHAR));
+
+ return(dwRc);
+}
+
+__inline
+BOOL CRichEditCtrl::SetSelectionCharFormat(CHARFORMAT &cf)
+{
+ CHARFORMATA a ;
+
+ a.cbSize = cf.cbSize;
+ a.dwMask = cf.dwMask;
+ a.dwEffects = cf.dwEffects;
+ a.yHeight = cf.yHeight;
+ a.yOffset = cf.yOffset;
+ a.crTextColor = cf.crTextColor;
+ a.bCharSet = cf.bCharSet;
+ a.bPitchAndFamily = cf.bPitchAndFamily;
+
+ WideCharToMultiByte(CP_OEMCP, WC_COMPOSITECHECK | WC_SEPCHARS, cf.szFaceName, -1,
+ a.szFaceName, sizeof(a.szFaceName), NULL, NULL);
+
+ return(SetSelectionCharFormat(a));
+}
+
+__inline
+BOOL CRichEditCtrl::SetWordCharFormat(CHARFORMAT &cf)
+{
+ CHARFORMATA a ;
+
+ a.cbSize = cf.cbSize;
+ a.dwMask = cf.dwMask;
+ a.dwEffects = cf.dwEffects;
+ a.yHeight = cf.yHeight;
+ a.yOffset = cf.yOffset;
+ a.crTextColor = cf.crTextColor;
+ a.bCharSet = cf.bCharSet;
+ a.bPitchAndFamily = cf.bPitchAndFamily;
+
+ WideCharToMultiByte(CP_OEMCP, WC_COMPOSITECHECK | WC_SEPCHARS, cf.szFaceName, -1,
+ a.szFaceName, sizeof(a.szFaceName), NULL, NULL);
+
+ return(SetWordCharFormat(a));
+}
+
+#endif
+
+#endif //!_AFX_NO_RICHEDIT_SUPPORT
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCMN_INLINE inline
+#include <afxcmn.inl>
+#undef _AFXCMN_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXCMN_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxcmn.inl b/public/sdk/inc/mfc40/afxcmn.inl
new file mode 100644
index 000000000..aba913481
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxcmn.inl
@@ -0,0 +1,647 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCMN.H
+
+#ifdef _AFXCMN_INLINE
+
+_AFXCMN_INLINE CDragListBox::CDragListBox()
+ { m_nLast = -1;}
+_AFXCMN_INLINE int CDragListBox::ItemFromPt(CPoint pt, BOOL bAutoScroll) const
+ {ASSERT(::IsWindow(m_hWnd)); return ::LBItemFromPt(m_hWnd, pt, bAutoScroll); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CToolBarCtrl::CToolBarCtrl()
+ { }
+_AFXCMN_INLINE BOOL CToolBarCtrl::EnableButton(int nID, BOOL bEnable)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ENABLEBUTTON, nID, MAKELPARAM(bEnable, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::CheckButton(int nID, BOOL bCheck)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_CHECKBUTTON, nID, MAKELPARAM(bCheck, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::PressButton(int nID, BOOL bPress)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_PRESSBUTTON, nID, MAKELPARAM(bPress, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::HideButton(int nID, BOOL bHide)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_HIDEBUTTON, nID, MAKELPARAM(bHide, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::Indeterminate(int nID, BOOL bIndeterminate)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_INDETERMINATE, nID, MAKELPARAM(bIndeterminate, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonEnabled(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONENABLED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonChecked(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONCHECKED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonPressed(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONPRESSED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonHidden(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONHIDDEN, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonIndeterminate(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONINDETERMINATE, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetState(int nID, UINT nState)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETSTATE, nID, MAKELPARAM(nState, 0)); }
+_AFXCMN_INLINE int CToolBarCtrl::GetState(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_GETSTATE, nID, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::AddButtons(int nNumButtons, LPTBBUTTON lpButtons)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ADDBUTTONS, nNumButtons, (LPARAM)lpButtons); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::InsertButton(int nIndex, LPTBBUTTON lpButton)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_INSERTBUTTON, nIndex, (LPARAM)lpButton); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::DeleteButton(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_DELETEBUTTON, nIndex, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::GetButton(int nIndex, LPTBBUTTON lpButton) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_GETBUTTON, nIndex, (LPARAM)lpButton); }
+_AFXCMN_INLINE int CToolBarCtrl::GetButtonCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_BUTTONCOUNT, 0, 0L); }
+_AFXCMN_INLINE UINT CToolBarCtrl::CommandToIndex(UINT nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TB_COMMANDTOINDEX, nID, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::Customize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_CUSTOMIZE, 0, 0L); }
+// lpszStrings are separated by zeroes, last one is marked by two zeroes
+_AFXCMN_INLINE int CToolBarCtrl::AddStrings(LPCTSTR lpszStrings)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_ADDSTRING, 0, (LPARAM)lpszStrings); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::GetItemRect(int nIndex, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_GETITEMRECT, nIndex, (LPARAM)lpRect); }
+_AFXCMN_INLINE void CToolBarCtrl::SetButtonStructSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_BUTTONSTRUCTSIZE, nSize, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetButtonSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETBUTTONSIZE, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetBitmapSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETBITMAPSIZE, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE void CToolBarCtrl::AutoSize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_AUTOSIZE, 0, 0L); }
+_AFXCMN_INLINE CToolTipCtrl* CToolBarCtrl::GetToolTips() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CToolTipCtrl*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TB_GETTOOLTIPS, 0, 0L)); }
+_AFXCMN_INLINE void CToolBarCtrl::SetToolTips(CToolTipCtrl* pTip)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETTOOLTIPS, (WPARAM)pTip->m_hWnd, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::SetOwner(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETPARENT, (WPARAM)pWnd->m_hWnd, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::SetRows(int nRows, BOOL bLarger, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETROWS, MAKELPARAM(nRows, bLarger), (LPARAM)lpRect); }
+_AFXCMN_INLINE int CToolBarCtrl::GetRows() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_GETROWS, 0, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetCmdID(int nIndex, UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETCMDID, nIndex, nID); }
+_AFXCMN_INLINE UINT CToolBarCtrl::GetBitmapFlags() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TB_GETBITMAPFLAGS, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CStatusBarCtrl::CStatusBarCtrl()
+ { }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetText(LPCTSTR lpszText, int nPane, int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ASSERT(nPane < 256); return (BOOL) ::SendMessage(m_hWnd, SB_SETTEXT, (nPane|nType), (LPARAM)lpszText); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetParts(int nParts, int* pWidths)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_SETPARTS, nParts, (LPARAM)pWidths); }
+_AFXCMN_INLINE int CStatusBarCtrl::GetParts(int nParts, int* pParts) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, SB_GETPARTS, nParts, (LPARAM)pParts); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::GetBorders(int* pBorders) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_GETBORDERS, 0, (LPARAM)pBorders); }
+_AFXCMN_INLINE void CStatusBarCtrl::SetMinHeight(int nMin)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, SB_SETMINHEIGHT, nMin, 0L); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetSimple(BOOL bSimple)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_SIMPLE, bSimple, 0L); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::GetRect(int nPane, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_GETRECT, nPane, (LPARAM)lpRect); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CListCtrl::CListCtrl()
+ { }
+_AFXCMN_INLINE COLORREF CListCtrl::GetBkColor() const
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETBKCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetBkColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETBKCOLOR, 0, cr); }
+_AFXCMN_INLINE CImageList* CListCtrl::GetImageList(int nImageListType) const
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, LVM_GETIMAGELIST, nImageListType, 0L)); }
+_AFXCMN_INLINE CImageList* CListCtrl::SetImageList(CImageList* pImageList, int nImageList)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, LVM_SETIMAGELIST, nImageList, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE int CListCtrl::GetItemCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::GetItem(LV_ITEM* pItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItem(const LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemState(int nItem, UINT nState, UINT nStateMask)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(nItem, 0, LVIF_STATE, NULL, 0, nState, nStateMask, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemText(int nItem, int nSubItem, LPCTSTR lpszText)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(nItem, nSubItem, LVIF_TEXT, lpszText, 0, 0, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemData(int nItem, DWORD dwData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(nItem, 0, LVIF_PARAM, NULL, 0, 0, 0, (LPARAM)dwData); }
+_AFXCMN_INLINE int CListCtrl::InsertItem(const LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_INSERTITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE int CListCtrl::InsertItem(int nItem, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(LVIF_TEXT, nItem, lpszItem, 0, 0, 0, 0); }
+_AFXCMN_INLINE int CListCtrl::InsertItem(int nItem, LPCTSTR lpszItem, int nImage)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(LVIF_TEXT|LVIF_IMAGE, nItem, lpszItem, 0, 0, nImage, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteItem(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETEITEM, nItem, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETEALLITEMS, 0, 0L); }
+_AFXCMN_INLINE UINT CListCtrl::GetCallbackMask() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETCALLBACKMASK, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetCallbackMask(UINT nMask)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCALLBACKMASK, nMask, 0); }
+_AFXCMN_INLINE int CListCtrl::GetNextItem(int nItem, int nFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETNEXTITEM, nItem, MAKELPARAM(nFlags, 0)); }
+_AFXCMN_INLINE int CListCtrl::FindItem(LV_FINDINFO* pFindInfo, int nStart) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_FINDITEM, nStart, (LPARAM)pFindInfo); }
+_AFXCMN_INLINE int CListCtrl::HitTest(LV_HITTESTINFO* pHitTestInfo) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_HITTEST, 0, (LPARAM)pHitTestInfo); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemPosition(int nItem, POINT pt)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMPOSITION32, nItem, (LPARAM)&pt); }
+_AFXCMN_INLINE BOOL CListCtrl::GetItemPosition(int nItem, LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETITEMPOSITION, nItem, (LPARAM)lpPoint); }
+_AFXCMN_INLINE int CListCtrl::GetStringWidth(LPCTSTR lpsz) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETSTRINGWIDTH, 0, (LPARAM)lpsz); }
+_AFXCMN_INLINE BOOL CListCtrl::EnsureVisible(int nItem, BOOL bPartialOK)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_ENSUREVISIBLE, nItem, MAKELPARAM(bPartialOK, 0)); }
+_AFXCMN_INLINE BOOL CListCtrl::Scroll(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SCROLL, size.cx, size.cy); }
+_AFXCMN_INLINE BOOL CListCtrl::RedrawItems(int nFirst, int nLast)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_REDRAWITEMS, 0, MAKELPARAM(nFirst, nLast)); }
+_AFXCMN_INLINE BOOL CListCtrl::Arrange(UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_ARRANGE, nCode, 0L); }
+_AFXCMN_INLINE CEdit* CListCtrl::EditLabel(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle( (HWND)::SendMessage(m_hWnd, LVM_EDITLABEL, nItem, 0L)); }
+_AFXCMN_INLINE CEdit* CListCtrl::GetEditControl() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle( (HWND)::SendMessage(m_hWnd, LVM_GETEDITCONTROL, 0, 0L)); }
+_AFXCMN_INLINE BOOL CListCtrl::GetColumn(int nCol, LV_COLUMN* pColumn) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE BOOL CListCtrl::SetColumn(int nCol, const LV_COLUMN* pColumn)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE int CListCtrl::InsertColumn(int nCol, const LV_COLUMN* pColumn)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_INSERTCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteColumn(int nCol)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETECOLUMN, nCol, 0); }
+_AFXCMN_INLINE int CListCtrl::GetColumnWidth(int nCol) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETCOLUMNWIDTH, nCol, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetColumnWidth(int nCol, int cx)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCOLUMNWIDTH, nCol, MAKELPARAM(cx, 0)); }
+_AFXCMN_INLINE CImageList* CListCtrl::CreateDragImage(int nItem, LPPOINT lpPoint)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, LVM_CREATEDRAGIMAGE, nItem, (LPARAM)lpPoint)); }
+_AFXCMN_INLINE BOOL CListCtrl::GetViewRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETVIEWRECT, 0, (LPARAM)lpRect); }
+_AFXCMN_INLINE COLORREF CListCtrl::GetTextColor() const
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETTEXTCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetTextColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETTEXTCOLOR, 0, cr); }
+_AFXCMN_INLINE COLORREF CListCtrl::GetTextBkColor() const
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETTEXTBKCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetTextBkColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETTEXTBKCOLOR, 0, cr); }
+_AFXCMN_INLINE int CListCtrl::GetTopIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETTOPINDEX, 0, 0); }
+_AFXCMN_INLINE int CListCtrl::GetCountPerPage() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETCOUNTPERPAGE, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::GetOrigin(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETORIGIN, 0, (LPARAM)lpPoint); }
+_AFXCMN_INLINE BOOL CListCtrl::Update(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_UPDATE, nItem, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemState(int nItem, LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)pItem); }
+_AFXCMN_INLINE UINT CListCtrl::GetItemState(int nItem, UINT nMask) const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETITEMSTATE, nItem, nMask); }
+_AFXCMN_INLINE void CListCtrl::SetItemCount(int nItems)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LVM_SETITEMCOUNT, nItems, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SortItems(PFNLVCOMPARE pfnCompare, DWORD dwData)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SORTITEMS, dwData, (LPARAM)pfnCompare); }
+_AFXCMN_INLINE UINT CListCtrl::GetSelectedCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETSELECTEDCOUNT, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CTreeCtrl::CTreeCtrl()
+ { }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::InsertItem(LPTV_INSERTSTRUCT lpInsertStruct)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)lpInsertStruct); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::InsertItem(LPCTSTR lpszItem, int nImage,
+ int nSelectedImage, HTREEITEM hParent, HTREEITEM hInsertAfter)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE, lpszItem, nImage, nSelectedImage, 0, 0, 0, hParent, hInsertAfter); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::InsertItem(LPCTSTR lpszItem, HTREEITEM hParent, HTREEITEM hInsertAfter)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(TVIF_TEXT, lpszItem, 0, 0, 0, 0, 0, hParent, hInsertAfter); }
+_AFXCMN_INLINE BOOL CTreeCtrl::DeleteItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)hItem); }
+#pragma warning(disable: 4310)
+_AFXCMN_INLINE BOOL CTreeCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT); }
+#pragma warning(default: 4310)
+_AFXCMN_INLINE BOOL CTreeCtrl::Expand(HTREEITEM hItem, UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_EXPAND, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETCOUNT, 0, 0); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetIndent() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETINDENT, 0, 0); }
+_AFXCMN_INLINE void CTreeCtrl::SetIndent(UINT nIndent)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TVM_SETINDENT, nIndent, 0); }
+_AFXCMN_INLINE CImageList* CTreeCtrl::GetImageList(UINT nImageList) const
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TVM_GETIMAGELIST, (UINT)nImageList, 0)); }
+_AFXCMN_INLINE CImageList* CTreeCtrl::SetImageList(CImageList* pImageList, int nImageListType)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TVM_SETIMAGELIST, (UINT)nImageListType, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextItem(HTREEITEM hItem, UINT nCode) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetChildItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextSiblingItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetPrevSiblingItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUS, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetParentItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetFirstVisibleItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextVisibleItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetPrevVisibleItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetSelectedItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CARET, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetDropHilightItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_DROPHILITE, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetRootItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::Select(HTREEITEM hItem, UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_SELECTITEM, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::SelectItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::SelectDropTarget(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::SelectSetFirstVisible(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_FIRSTVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::GetItem(TV_ITEM* pItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItem(TV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemText(HTREEITEM hItem, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_TEXT, lpszItem, 0, 0, 0, 0, NULL); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_IMAGE|TVIF_SELECTEDIMAGE, NULL, nImage, nSelectedImage, 0, 0, NULL); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_STATE, NULL, 0, 0, nState, nStateMask, NULL); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemData(HTREEITEM hItem, DWORD dwData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_PARAM, NULL, 0, 0, 0, 0, (LPARAM)dwData); }
+_AFXCMN_INLINE CEdit* CTreeCtrl::EditLabel(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TVM_EDITLABEL, 0, (LPARAM)hItem)); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::HitTest(TV_HITTESTINFO* pHitTestInfo) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)pHitTestInfo); }
+_AFXCMN_INLINE CEdit* CTreeCtrl::GetEditControl() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TVM_GETEDITCONTROL, 0, 0)); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetVisibleCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETVISIBLECOUNT, 0, 0); }
+_AFXCMN_INLINE CImageList* CTreeCtrl::CreateDragImage(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TVM_CREATEDRAGIMAGE, 0, (LPARAM)hItem)); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SortChildren(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDREN, 0, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::EnsureVisible(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_ENSUREVISIBLE, 0, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SortChildrenCB(LPTV_SORTCB pSort)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDRENCB, 0, (LPARAM)pSort); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CHotKeyCtrl::CHotKeyCtrl()
+ { }
+_AFXCMN_INLINE void CHotKeyCtrl::SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, HKM_SETHOTKEY, MAKEWORD(wVirtualKeyCode, wModifiers), 0L); }
+_AFXCMN_INLINE DWORD CHotKeyCtrl::GetHotKey() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, HKM_GETHOTKEY, 0, 0L); }
+_AFXCMN_INLINE void CHotKeyCtrl::SetRules(WORD wInvalidComb, WORD wModifiers)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, HKM_SETRULES, wInvalidComb, MAKELPARAM(wModifiers, 0)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE void CToolTipCtrl::Activate(BOOL bActivate)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_ACTIVATE, bActivate, 0L); }
+_AFXCMN_INLINE void CToolTipCtrl::SetToolInfo(LPTOOLINFO lpToolInfo)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_SETTOOLINFO, 0, (LPARAM)lpToolInfo); }
+_AFXCMN_INLINE void CToolTipCtrl::RelayEvent(LPMSG lpMsg)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_RELAYEVENT, 0, (LPARAM)lpMsg); }
+_AFXCMN_INLINE void CToolTipCtrl::SetDelayTime(UINT nDelay)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_SETDELAYTIME, 0, nDelay); }
+_AFXCMN_INLINE int CToolTipCtrl::GetToolCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TTM_GETTOOLCOUNT, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CSpinButtonCtrl::CSpinButtonCtrl()
+ { }
+_AFXCMN_INLINE UINT CSpinButtonCtrl::GetAccel(int nAccel, UDACCEL* pAccel) const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) LOWORD(::SendMessage(m_hWnd, UDM_GETACCEL, nAccel, (LPARAM)pAccel)); }
+_AFXCMN_INLINE UINT CSpinButtonCtrl::GetBase() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) LOWORD(::SendMessage(m_hWnd, UDM_GETBASE, 0, 0l)); }
+_AFXCMN_INLINE CWnd* CSpinButtonCtrl::GetBuddy() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle((HWND) ::SendMessage(m_hWnd, UDM_GETBUDDY, 0, 0l)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::GetPos() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, UDM_GETPOS, 0, 0l)); }
+_AFXCMN_INLINE DWORD CSpinButtonCtrl::GetRange() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD) ::SendMessage(m_hWnd, UDM_GETRANGE, 0, 0l); }
+_AFXCMN_INLINE BOOL CSpinButtonCtrl::SetAccel(int nAccel, UDACCEL* pAccel)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) LOWORD(::SendMessage(m_hWnd, UDM_SETACCEL, nAccel, (LPARAM)pAccel)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::SetBase(int nBase)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, UDM_SETBASE, nBase, 0L); }
+_AFXCMN_INLINE CWnd* CSpinButtonCtrl::SetBuddy(CWnd* pWndBuddy)
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle((HWND) ::SendMessage(m_hWnd, UDM_SETBUDDY, (WPARAM)pWndBuddy->m_hWnd, 0L)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) (short) LOWORD(::SendMessage(m_hWnd, UDM_SETPOS, 0, MAKELPARAM(nPos, 0))); }
+_AFXCMN_INLINE void CSpinButtonCtrl::SetRange(int nLower, int nUpper)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, UDM_SETRANGE, 0, MAKELPARAM(nUpper, nLower)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CSliderCtrl::CSliderCtrl()
+ { }
+_AFXCMN_INLINE int CSliderCtrl::GetLineSize() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETLINESIZE, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::SetLineSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_SETLINESIZE, 0, nSize); }
+_AFXCMN_INLINE int CSliderCtrl::GetPageSize() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETPAGESIZE, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::SetPageSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_SETPAGESIZE, 0, nSize); }
+_AFXCMN_INLINE int CSliderCtrl::GetRangeMax() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETRANGEMAX, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::GetRangeMin() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETRANGEMIN, 0, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::SetRangeMin(int nMin, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETRANGEMIN, bRedraw, nMin); }
+_AFXCMN_INLINE void CSliderCtrl::SetRangeMax(int nMax, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETRANGEMAX, bRedraw, nMax); }
+_AFXCMN_INLINE void CSliderCtrl::ClearSel(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_CLEARSEL, bRedraw, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::GetChannelRect(LPRECT lprc) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_GETCHANNELRECT, 0, (LPARAM)lprc); }
+_AFXCMN_INLINE void CSliderCtrl::GetThumbRect(LPRECT lprc) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_GETTHUMBRECT, 0, (LPARAM)lprc); }
+_AFXCMN_INLINE int CSliderCtrl::GetPos() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETPOS, 0, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETPOS, TRUE, nPos); }
+_AFXCMN_INLINE void CSliderCtrl::VerifyPos()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETPOS, FALSE, 0L); }
+_AFXCMN_INLINE void CSliderCtrl::ClearTics(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_CLEARTICS, bRedraw, 0l); }
+_AFXCMN_INLINE UINT CSliderCtrl::GetNumTics() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TBM_GETNUMTICS, 0, 0l); }
+_AFXCMN_INLINE DWORD* CSliderCtrl::GetTicArray() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD*) ::SendMessage(m_hWnd, TBM_GETPTICS, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::GetTic(int nTic) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETTIC, nTic, 0L); }
+_AFXCMN_INLINE int CSliderCtrl::GetTicPos(int nTic) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETTICPOS, nTic, 0L); }
+_AFXCMN_INLINE BOOL CSliderCtrl::SetTic(int nTic)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TBM_SETTIC, 0, nTic); }
+_AFXCMN_INLINE void CSliderCtrl::SetTicFreq(int nFreq)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETTICFREQ, nFreq, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CProgressCtrl::CProgressCtrl()
+ { }
+_AFXCMN_INLINE void CProgressCtrl::SetRange(int nLower, int nUpper)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PBM_SETRANGE, 0, MAKELPARAM(nLower, nUpper)); }
+_AFXCMN_INLINE int CProgressCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_SETPOS, nPos, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::OffsetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_DELTAPOS, nPos, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::SetStep(int nStep)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_SETSTEP, nStep, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::StepIt()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_STEPIT, 0, 0L)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CHeaderCtrl::CHeaderCtrl()
+ { }
+_AFXCMN_INLINE int CHeaderCtrl::GetItemCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, HDM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE int CHeaderCtrl::InsertItem(int nPos, HD_ITEM* phdi)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, HDM_INSERTITEM, nPos, (LPARAM)phdi); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::DeleteItem(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_DELETEITEM, nPos, 0L); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::GetItem(int nPos, HD_ITEM* pHeaderItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_GETITEM, nPos, (LPARAM)pHeaderItem); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::SetItem(int nPos, HD_ITEM* pHeaderItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_SETITEM, nPos, (LPARAM)pHeaderItem); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::Layout(HD_LAYOUT* pHeaderLayout)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_LAYOUT, 0, (LPARAM)pHeaderLayout); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CImageList::operator HIMAGELIST() const
+ { return m_hImageList;}
+_AFXCMN_INLINE HIMAGELIST CImageList::GetSafeHandle() const
+ { return (this == NULL) ? NULL : m_hImageList; }
+_AFXCMN_INLINE int CImageList::GetImageCount() const
+ { ASSERT(m_hImageList != NULL); return ImageList_GetImageCount(m_hImageList); }
+_AFXCMN_INLINE int CImageList::Add(CBitmap* pbmImage, CBitmap* pbmMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_Add(m_hImageList, (HBITMAP)pbmImage->GetSafeHandle(), (HBITMAP)pbmMask->GetSafeHandle()); }
+_AFXCMN_INLINE int CImageList::Add(CBitmap* pbmImage, COLORREF crMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_AddMasked(m_hImageList, (HBITMAP)pbmImage->GetSafeHandle(), crMask); }
+_AFXCMN_INLINE BOOL CImageList::Remove(int nImage)
+ { ASSERT(m_hImageList != NULL); return ImageList_Remove(m_hImageList, nImage); }
+_AFXCMN_INLINE BOOL CImageList::Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_Replace(m_hImageList, nImage, (HBITMAP)pbmImage->GetSafeHandle(), (HBITMAP)pbmMask->GetSafeHandle()); }
+_AFXCMN_INLINE int CImageList::Add(HICON hIcon)
+ { ASSERT(m_hImageList != NULL); return ImageList_AddIcon(m_hImageList, hIcon); }
+_AFXCMN_INLINE int CImageList::Replace(int nImage, HICON hIcon)
+ { ASSERT(m_hImageList != NULL); return ImageList_ReplaceIcon(m_hImageList, nImage, hIcon); }
+_AFXCMN_INLINE HICON CImageList::ExtractIcon(int nImage)
+ { ASSERT(m_hImageList != NULL); return ImageList_ExtractIcon(NULL, m_hImageList, nImage); }
+_AFXCMN_INLINE BOOL CImageList::Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle)
+ { ASSERT(m_hImageList != NULL); ASSERT(pDC != NULL); return ImageList_Draw(m_hImageList, nImage, pDC->GetSafeHdc(), pt.x, pt.y, nStyle); }
+_AFXCMN_INLINE COLORREF CImageList::SetBkColor(COLORREF cr)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetBkColor(m_hImageList, cr); }
+_AFXCMN_INLINE COLORREF CImageList::GetBkColor() const
+ { ASSERT(m_hImageList != NULL); return ImageList_GetBkColor(m_hImageList); }
+_AFXCMN_INLINE BOOL CImageList::SetOverlayImage(int nImage, int nOverlay)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetOverlayImage(m_hImageList, nImage, nOverlay); }
+_AFXCMN_INLINE BOOL CImageList::GetImageInfo(int nImage, IMAGEINFO* pImageInfo) const
+ { ASSERT(m_hImageList != NULL); return ImageList_GetImageInfo(m_hImageList, nImage, pImageInfo); }
+_AFXCMN_INLINE BOOL CImageList::BeginDrag(int nImage, CPoint ptHotSpot)
+ { ASSERT(m_hImageList != NULL); return ImageList_BeginDrag(m_hImageList, nImage, ptHotSpot.x, ptHotSpot.y); }
+_AFXCMN_INLINE void PASCAL CImageList::EndDrag()
+ { ImageList_EndDrag(); }
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragMove(CPoint pt)
+ { return ImageList_DragMove(pt.x, pt.y); }
+_AFXCMN_INLINE BOOL CImageList::SetDragCursorImage(int nDrag, CPoint ptHotSpot)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetDragCursorImage(m_hImageList, nDrag, ptHotSpot.x, ptHotSpot.y); }
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragShowNolock(BOOL bShow)
+ {return ImageList_DragShowNolock(bShow);}
+_AFXCMN_INLINE CImageList* PASCAL CImageList::GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot)
+ {return CImageList::FromHandle(ImageList_GetDragImage(lpPoint, lpPointHotSpot));}
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragEnter(CWnd* pWndLock, CPoint point)
+ { return ImageList_DragEnter(pWndLock->GetSafeHwnd(), point.x, point.y); }
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragLeave(CWnd* pWndLock)
+ { return ImageList_DragLeave(pWndLock->GetSafeHwnd()); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CTabCtrl::CTabCtrl()
+ { }
+_AFXCMN_INLINE CImageList* CTabCtrl::GetImageList() const
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TCM_GETIMAGELIST, 0, 0L)); }
+_AFXCMN_INLINE CImageList* CTabCtrl::SetImageList(CImageList* pImageList)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TCM_SETIMAGELIST, 0, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE int CTabCtrl::GetItemCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::GetItem(int nItem, TC_ITEM* pTabCtrlItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_GETITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::SetItem(int nItem, TC_ITEM* pTabCtrlItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_SETITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::InsertItem(int nItem, TC_ITEM* pTabCtrlItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::DeleteItem(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_DELETEITEM, nItem, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_DELETEALLITEMS, 0, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::GetItemRect(int nItem, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_GETITEMRECT, nItem, (LPARAM)lpRect); }
+_AFXCMN_INLINE int CTabCtrl::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETCURSEL, 0, 0L); }
+_AFXCMN_INLINE int CTabCtrl::SetCurSel(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_SETCURSEL, nItem, 0L); }
+_AFXCMN_INLINE int CTabCtrl::HitTest(TC_HITTESTINFO* pHitTestInfo) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_HITTEST, 0, (LPARAM) pHitTestInfo); }
+_AFXCMN_INLINE void CTabCtrl::AdjustRect(BOOL bLarger, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_ADJUSTRECT, bLarger, (LPARAM)lpRect); }
+_AFXCMN_INLINE CSize CTabCtrl::SetItemSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (CSize)::SendMessage(m_hWnd, TCM_SETITEMSIZE, 0, MAKELPARAM(size.cx,size.cy)); }
+_AFXCMN_INLINE void CTabCtrl::RemoveImage(int nImage)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_REMOVEIMAGE, nImage, 0L); }
+_AFXCMN_INLINE void CTabCtrl::SetPadding(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_SETPADDING, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE int CTabCtrl::GetRowCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETROWCOUNT, 0, 0L); }
+_AFXCMN_INLINE CToolTipCtrl* CTabCtrl::GetTooltips() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CToolTipCtrl*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TCM_GETTOOLTIPS, 0, 0L)); }
+_AFXCMN_INLINE void CTabCtrl::SetTooltips(CToolTipCtrl* pWndTip)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_SETTOOLTIPS, (WPARAM)pWndTip->m_hWnd, 0L); }
+_AFXCMN_INLINE int CTabCtrl::GetCurFocus() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETCURFOCUS, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CAnimateCtrl::CAnimateCtrl()
+ { }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Open(LPCTSTR lpszName)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, (LPARAM)lpszName); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Open(UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, nID); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Play(UINT nFrom, UINT nTo, UINT nRep)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, nRep, MAKELPARAM(nFrom, nTo)); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Stop()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_STOP, 0, 0L); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Close()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, 0L); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Seek(UINT nTo)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, 0, MAKELPARAM(nTo, nTo)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+_AFXCMN_INLINE CRichEditCtrl::CRichEditCtrl()
+ { }
+_AFXCMN_INLINE BOOL CRichEditCtrl::CanUndo() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0); }
+_AFXCMN_INLINE int CRichEditCtrl::GetLineCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::GetModify() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::SetModify(BOOL bModified /* = TRUE */)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0);}
+_AFXCMN_INLINE void CRichEditCtrl::GetRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect); }
+_AFXCMN_INLINE CPoint CRichEditCtrl::GetCharPos(long lChar) const
+ { ASSERT(::IsWindow(m_hWnd)); CPoint pt; ::SendMessage(m_hWnd, EM_POSFROMCHAR, (WPARAM)&pt, (LPARAM)lChar); return pt;}
+_AFXCMN_INLINE void CRichEditCtrl::SetOptions(WORD wOp, DWORD dwFlags)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETOPTIONS, (WPARAM)wOp, (LPARAM)dwFlags); }
+_AFXCMN_INLINE void CRichEditCtrl::EmptyUndoBuffer()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::ReplaceSel(LPCTSTR lpszNewText)
+ {ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_REPLACESEL, 0, (LPARAM)lpszNewText); }
+_AFXCMN_INLINE void CRichEditCtrl::SetRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::Undo()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetReadOnly(BOOL bReadOnly /* = TRUE */ )
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L); }
+_AFXCMN_INLINE int CRichEditCtrl::GetFirstVisibleLine() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::DisplayBand(LPRECT pDisplayRect)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_DISPLAYBAND, 0, (LPARAM)pDisplayRect); }
+_AFXCMN_INLINE void CRichEditCtrl::GetSel(CHARRANGE &cr) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr); }
+
+_AFXCMN_INLINE void CRichEditCtrl::LimitText(long nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EXLIMITTEXT, 0, nChars); }
+
+_AFXCMN_INLINE long CRichEditCtrl::LineFromChar(long nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_EXLINEFROMCHAR, 0, nIndex); }
+
+_AFXCMN_INLINE void CRichEditCtrl::SetSel(CHARRANGE &cr)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EXSETSEL, 0, (LPARAM)&cr); }
+
+_AFXCMN_INLINE long CRichEditCtrl::FindText(DWORD dwFlags, FINDTEXTEX* pFindText) const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_FINDTEXTEX, dwFlags, (LPARAM)pFindText); }
+
+_AFXCMN_INLINE long CRichEditCtrl::FormatRange(FORMATRANGE* pfr, BOOL bDisplay)
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_FORMATRANGE, (WPARAM)bDisplay, (LPARAM)pfr); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetEventMask() const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_GETEVENTMASK, 0, 0L); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetLimitText() const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_GETLIMITTEXT, 0, 0L); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetSelText(LPSTR lpBuf) const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpBuf); }
+
+_AFXCMN_INLINE void CRichEditCtrl::HideSelection(BOOL bHide, BOOL bPerm)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_HIDESELECTION, bHide, bPerm); }
+
+_AFXCMN_INLINE void CRichEditCtrl::RequestResize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_REQUESTRESIZE, 0, 0L); }
+
+_AFXCMN_INLINE WORD CRichEditCtrl::GetSelectionType() const
+ { ASSERT(::IsWindow(m_hWnd)); return (WORD)::SendMessage(m_hWnd, EM_SELECTIONTYPE, 0, 0L); }
+
+_AFXCMN_INLINE COLORREF CRichEditCtrl::SetBackgroundColor(BOOL bSysColor, COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF)::SendMessage(m_hWnd, EM_SETBKGNDCOLOR, bSysColor, cr); }
+
+_AFXCMN_INLINE DWORD CRichEditCtrl::SetEventMask(DWORD dwEventMask)
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)::SendMessage(m_hWnd, EM_SETEVENTMASK, 0, dwEventMask); }
+
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetOLECallback(IRichEditOleCallback* pCallback)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETOLECALLBACK, 0, (LPARAM)pCallback); }
+
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetTargetDevice(HDC hDC, long lLineWidth)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTARGETDEVICE, (WPARAM)hDC, lLineWidth); }
+
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetTargetDevice(CDC &dc, long lLineWidth)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTARGETDEVICE, (WPARAM)dc.m_hDC, lLineWidth); }
+
+_AFXCMN_INLINE long CRichEditCtrl::StreamIn(int nFormat, EDITSTREAM &es)
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_STREAMIN, nFormat, (LPARAM)&es); }
+
+_AFXCMN_INLINE long CRichEditCtrl::StreamOut(int nFormat, EDITSTREAM &es)
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_STREAMOUT, nFormat, (LPARAM)&es); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetTextLength() const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, WM_GETTEXTLENGTH, NULL, NULL); }
+
+#endif //!_AFX_NO_RICHEDIT_SUPPORT
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXCMN_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxcoll.h b/public/sdk/inc/mfc40/afxcoll.h
new file mode 100644
index 000000000..bab808e1f
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxcoll.h
@@ -0,0 +1,1440 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCOLL_H__
+#define __AFXCOLL_H__
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+//CObject
+ // Arrays
+ class CByteArray; // array of BYTE
+ class CWordArray; // array of WORD
+ class CDWordArray; // array of DWORD
+ class CUIntArray; // array of UINT
+ class CPtrArray; // array of void*
+ class CObArray; // array of CObject*
+
+ // Lists
+ class CPtrList; // list of void*
+ class CObList; // list of CObject*
+
+ // Maps (aka Dictionaries)
+ class CMapWordToOb; // map from WORD to CObject*
+ class CMapWordToPtr; // map from WORD to void*
+ class CMapPtrToWord; // map from void* to WORD
+ class CMapPtrToPtr; // map from void* to void*
+
+ // Special String variants
+ class CStringArray; // array of CStrings
+ class CStringList; // list of CStrings
+ class CMapStringToPtr; // map from CString to void*
+ class CMapStringToOb; // map from CString to CObject*
+ class CMapStringToString; // map from CString to CString
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+////////////////////////////////////////////////////////////////////////////
+
+class CByteArray : public CObject
+{
+
+ DECLARE_SERIAL(CByteArray)
+public:
+
+// Construction
+ CByteArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ BYTE GetAt(int nIndex) const;
+ void SetAt(int nIndex, BYTE newElement);
+ BYTE& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const BYTE* GetData() const;
+ BYTE* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, BYTE newElement);
+ int Add(BYTE newElement);
+ int Append(const CByteArray& src);
+ void Copy(const CByteArray& src);
+
+ // overloaded operator helpers
+ BYTE operator[](int nIndex) const;
+ BYTE& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, BYTE newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CByteArray* pNewArray);
+
+// Implementation
+protected:
+ BYTE* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CByteArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef BYTE BASE_TYPE;
+ typedef BYTE BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CWordArray : public CObject
+{
+
+ DECLARE_SERIAL(CWordArray)
+public:
+
+// Construction
+ CWordArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ WORD GetAt(int nIndex) const;
+ void SetAt(int nIndex, WORD newElement);
+ WORD& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const WORD* GetData() const;
+ WORD* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, WORD newElement);
+ int Add(WORD newElement);
+ int Append(const CWordArray& src);
+ void Copy(const CWordArray& src);
+
+ // overloaded operator helpers
+ WORD operator[](int nIndex) const;
+ WORD& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, WORD newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CWordArray* pNewArray);
+
+// Implementation
+protected:
+ WORD* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CWordArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef WORD BASE_TYPE;
+ typedef WORD BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CDWordArray : public CObject
+{
+
+ DECLARE_SERIAL(CDWordArray)
+public:
+
+// Construction
+ CDWordArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ DWORD GetAt(int nIndex) const;
+ void SetAt(int nIndex, DWORD newElement);
+ DWORD& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const DWORD* GetData() const;
+ DWORD* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, DWORD newElement);
+ int Add(DWORD newElement);
+ int Append(const CDWordArray& src);
+ void Copy(const CDWordArray& src);
+
+ // overloaded operator helpers
+ DWORD operator[](int nIndex) const;
+ DWORD& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, DWORD newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CDWordArray* pNewArray);
+
+// Implementation
+protected:
+ DWORD* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CDWordArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef DWORD BASE_TYPE;
+ typedef DWORD BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CUIntArray : public CObject
+{
+
+ DECLARE_DYNAMIC(CUIntArray)
+public:
+
+// Construction
+ CUIntArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ UINT GetAt(int nIndex) const;
+ void SetAt(int nIndex, UINT newElement);
+ UINT& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const UINT* GetData() const;
+ UINT* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, UINT newElement);
+ int Add(UINT newElement);
+ int Append(const CUIntArray& src);
+ void Copy(const CUIntArray& src);
+
+ // overloaded operator helpers
+ UINT operator[](int nIndex) const;
+ UINT& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, UINT newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CUIntArray* pNewArray);
+
+// Implementation
+protected:
+ UINT* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CUIntArray();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef UINT BASE_TYPE;
+ typedef UINT BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CPtrArray : public CObject
+{
+
+ DECLARE_DYNAMIC(CPtrArray)
+public:
+
+// Construction
+ CPtrArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ void* GetAt(int nIndex) const;
+ void SetAt(int nIndex, void* newElement);
+ void*& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const void** GetData() const;
+ void** GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, void* newElement);
+ int Add(void* newElement);
+ int Append(const CPtrArray& src);
+ void Copy(const CPtrArray& src);
+
+ // overloaded operator helpers
+ void* operator[](int nIndex) const;
+ void*& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, void* newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CPtrArray* pNewArray);
+
+// Implementation
+protected:
+ void** m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CPtrArray();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef void* BASE_TYPE;
+ typedef void* BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CObArray : public CObject
+{
+
+ DECLARE_SERIAL(CObArray)
+public:
+
+// Construction
+ CObArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ CObject* GetAt(int nIndex) const;
+ void SetAt(int nIndex, CObject* newElement);
+ CObject*& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const CObject** GetData() const;
+ CObject** GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, CObject* newElement);
+ int Add(CObject* newElement);
+ int Append(const CObArray& src);
+ void Copy(const CObArray& src);
+
+ // overloaded operator helpers
+ CObject* operator[](int nIndex) const;
+ CObject*& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, CObject* newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CObArray* pNewArray);
+
+// Implementation
+protected:
+ CObject** m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CObArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef CObject* BASE_TYPE;
+ typedef CObject* BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CStringArray : public CObject
+{
+
+ DECLARE_SERIAL(CStringArray)
+public:
+
+// Construction
+ CStringArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ CString GetAt(int nIndex) const;
+ void SetAt(int nIndex, LPCTSTR newElement);
+ CString& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const CString* GetData() const;
+ CString* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, LPCTSTR newElement);
+ int Add(LPCTSTR newElement);
+ int Append(const CStringArray& src);
+ void Copy(const CStringArray& src);
+
+ // overloaded operator helpers
+ CString operator[](int nIndex) const;
+ CString& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, LPCTSTR newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CStringArray* pNewArray);
+
+// Implementation
+protected:
+ CString* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CStringArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef CString BASE_TYPE;
+ typedef LPCTSTR BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CPtrList : public CObject
+{
+
+ DECLARE_DYNAMIC(CPtrList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ void* data;
+ };
+public:
+
+// Construction
+ CPtrList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ void*& GetHead();
+ void* GetHead() const;
+ void*& GetTail();
+ void* GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ void* RemoveHead();
+ void* RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(void* newElement);
+ POSITION AddTail(void* newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CPtrList* pNewList);
+ void AddTail(CPtrList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ void*& GetNext(POSITION& rPosition); // return *Position++
+ void* GetNext(POSITION& rPosition) const; // return *Position++
+ void*& GetPrev(POSITION& rPosition); // return *Position--
+ void* GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ void*& GetAt(POSITION position);
+ void* GetAt(POSITION position) const;
+ void SetAt(POSITION pos, void* newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, void* newElement);
+ POSITION InsertAfter(POSITION position, void* newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(void* searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CPtrList();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef void* BASE_TYPE;
+ typedef void* BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CObList : public CObject
+{
+
+ DECLARE_SERIAL(CObList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ CObject* data;
+ };
+public:
+
+// Construction
+ CObList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ CObject*& GetHead();
+ CObject* GetHead() const;
+ CObject*& GetTail();
+ CObject* GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ CObject* RemoveHead();
+ CObject* RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(CObject* newElement);
+ POSITION AddTail(CObject* newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CObList* pNewList);
+ void AddTail(CObList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ CObject*& GetNext(POSITION& rPosition); // return *Position++
+ CObject* GetNext(POSITION& rPosition) const; // return *Position++
+ CObject*& GetPrev(POSITION& rPosition); // return *Position--
+ CObject* GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ CObject*& GetAt(POSITION position);
+ CObject* GetAt(POSITION position) const;
+ void SetAt(POSITION pos, CObject* newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, CObject* newElement);
+ POSITION InsertAfter(POSITION position, CObject* newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(CObject* searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CObList();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef CObject* BASE_TYPE;
+ typedef CObject* BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CStringList : public CObject
+{
+
+ DECLARE_SERIAL(CStringList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ CString data;
+ };
+public:
+
+// Construction
+ CStringList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ CString& GetHead();
+ CString GetHead() const;
+ CString& GetTail();
+ CString GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ CString RemoveHead();
+ CString RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(LPCTSTR newElement);
+ POSITION AddTail(LPCTSTR newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CStringList* pNewList);
+ void AddTail(CStringList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ CString& GetNext(POSITION& rPosition); // return *Position++
+ CString GetNext(POSITION& rPosition) const; // return *Position++
+ CString& GetPrev(POSITION& rPosition); // return *Position--
+ CString GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ CString& GetAt(POSITION position);
+ CString GetAt(POSITION position) const;
+ void SetAt(POSITION pos, LPCTSTR newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, LPCTSTR newElement);
+ POSITION InsertAfter(POSITION position, LPCTSTR newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(LPCTSTR searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CStringList();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef CString BASE_TYPE;
+ typedef LPCTSTR BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapWordToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapWordToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ WORD key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapWordToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(WORD key, void*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](WORD key);
+
+ // add a new (key, value) pair
+ void SetAt(WORD key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(WORD key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, WORD& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(WORD key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(WORD, UINT&) const;
+
+public:
+ ~CMapWordToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef WORD BASE_KEY;
+ typedef WORD BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapPtrToWord : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapPtrToWord)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ void* key;
+ WORD value;
+ };
+
+public:
+
+// Construction
+ CMapPtrToWord(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(void* key, WORD& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ WORD& operator[](void* key);
+
+ // add a new (key, value) pair
+ void SetAt(void* key, WORD newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(void* key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, void*& rKey, WORD& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(void* key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(void*, UINT&) const;
+
+public:
+ ~CMapPtrToWord();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef void* BASE_KEY;
+ typedef void* BASE_ARG_KEY;
+ typedef WORD BASE_VALUE;
+ typedef WORD BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapPtrToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapPtrToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ void* key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapPtrToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(void* key, void*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](void* key);
+
+ // add a new (key, value) pair
+ void SetAt(void* key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(void* key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, void*& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(void* key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(void*, UINT&) const;
+
+public:
+ ~CMapPtrToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef void* BASE_KEY;
+ typedef void* BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapWordToOb : public CObject
+{
+
+ DECLARE_SERIAL(CMapWordToOb)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ WORD key;
+ CObject* value;
+ };
+
+public:
+
+// Construction
+ CMapWordToOb(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(WORD key, CObject*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ CObject*& operator[](WORD key);
+
+ // add a new (key, value) pair
+ void SetAt(WORD key, CObject* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(WORD key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, WORD& rKey, CObject*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(WORD key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(WORD, UINT&) const;
+
+public:
+ ~CMapWordToOb();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef WORD BASE_KEY;
+ typedef WORD BASE_ARG_KEY;
+ typedef CObject* BASE_VALUE;
+ typedef CObject* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapStringToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapStringToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, void*& rValue) const;
+ BOOL LookupKey(LPCTSTR key, LPCTSTR& rKey) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToOb : public CObject
+{
+
+ DECLARE_SERIAL(CMapStringToOb)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ CObject* value;
+ };
+
+public:
+
+// Construction
+ CMapStringToOb(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, CObject*& rValue) const;
+ BOOL LookupKey(LPCTSTR key, LPCTSTR& rKey) const;
+
+// Operations
+ // Lookup and add if not there
+ CObject*& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, CObject* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, CObject*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToOb();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef CObject* BASE_VALUE;
+ typedef CObject* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToString : public CObject
+{
+
+ DECLARE_SERIAL(CMapStringToString)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ CString value;
+ };
+
+public:
+
+// Construction
+ CMapStringToString(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, CString& rValue) const;
+ BOOL LookupKey(LPCTSTR key, LPCTSTR& rKey) const;
+
+// Operations
+ // Lookup and add if not there
+ CString& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, LPCTSTR newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, CString& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToString();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef CString BASE_VALUE;
+ typedef LPCTSTR BASE_ARG_VALUE;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Special include for Win32s compatibility
+//
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifndef __AFXSTATE_H__
+ #include <afxstat_.h> // for MFC private state structures
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCOLL_INLINE inline
+#include <afxcoll.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //!__AFXCOLL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxcoll.inl b/public/sdk/inc/mfc40/afxcoll.inl
new file mode 100644
index 000000000..171167c9a
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxcoll.inl
@@ -0,0 +1,496 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCOLL.H
+
+#ifdef _AFXCOLL_INLINE
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CByteArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CByteArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CByteArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE BYTE CByteArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CByteArray::SetAt(int nIndex, BYTE newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE BYTE& CByteArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const BYTE* CByteArray::GetData() const
+ { return (const BYTE*)m_pData; }
+_AFXCOLL_INLINE BYTE* CByteArray::GetData()
+ { return (BYTE*)m_pData; }
+_AFXCOLL_INLINE int CByteArray::Add(BYTE newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE BYTE CByteArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE BYTE& CByteArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CWordArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CWordArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CWordArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE WORD CWordArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CWordArray::SetAt(int nIndex, WORD newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE WORD& CWordArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const WORD* CWordArray::GetData() const
+ { return (const WORD*)m_pData; }
+_AFXCOLL_INLINE WORD* CWordArray::GetData()
+ { return (WORD*)m_pData; }
+_AFXCOLL_INLINE int CWordArray::Add(WORD newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE WORD CWordArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE WORD& CWordArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CDWordArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CDWordArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CDWordArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE DWORD CDWordArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CDWordArray::SetAt(int nIndex, DWORD newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE DWORD& CDWordArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const DWORD* CDWordArray::GetData() const
+ { return (const DWORD*)m_pData; }
+_AFXCOLL_INLINE DWORD* CDWordArray::GetData()
+ { return (DWORD*)m_pData; }
+_AFXCOLL_INLINE int CDWordArray::Add(DWORD newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE DWORD CDWordArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE DWORD& CDWordArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CUIntArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CUIntArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CUIntArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE UINT CUIntArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CUIntArray::SetAt(int nIndex, UINT newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE UINT& CUIntArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const UINT* CUIntArray::GetData() const
+ { return (const UINT*)m_pData; }
+_AFXCOLL_INLINE UINT* CUIntArray::GetData()
+ { return (UINT*)m_pData; }
+_AFXCOLL_INLINE int CUIntArray::Add(UINT newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE UINT CUIntArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE UINT& CUIntArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CPtrArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CPtrArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CPtrArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE void* CPtrArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CPtrArray::SetAt(int nIndex, void* newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE void*& CPtrArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const void** CPtrArray::GetData() const
+ { return (const void**)m_pData; }
+_AFXCOLL_INLINE void** CPtrArray::GetData()
+ { return (void**)m_pData; }
+_AFXCOLL_INLINE int CPtrArray::Add(void* newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE void* CPtrArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE void*& CPtrArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CObArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CObArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CObArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE CObject* CObArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CObArray::SetAt(int nIndex, CObject* newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE CObject*& CObArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const CObject** CObArray::GetData() const
+ { return (const CObject**)m_pData; }
+_AFXCOLL_INLINE CObject** CObArray::GetData()
+ { return (CObject**)m_pData; }
+_AFXCOLL_INLINE int CObArray::Add(CObject* newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE CObject* CObArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE CObject*& CObArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CStringArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CStringArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CStringArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE CString CStringArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CStringArray::SetAt(int nIndex, LPCTSTR newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE CString& CStringArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const CString* CStringArray::GetData() const
+ { return (const CString*)m_pData; }
+_AFXCOLL_INLINE CString* CStringArray::GetData()
+ { return (CString*)m_pData; }
+_AFXCOLL_INLINE int CStringArray::Add(LPCTSTR newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE CString CStringArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE CString& CStringArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CPtrList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CPtrList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void*& CPtrList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE void* CPtrList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE void* CPtrList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CPtrList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CPtrList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE void*& CPtrList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CPtrList::SetAt(POSITION pos, void* newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CObList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CObList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE CObject*& CObList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CObject* CObList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE CObject* CObList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CObList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CObList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE CObject*& CObList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CObList::SetAt(POSITION pos, CObject* newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CStringList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CStringList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE CString& CStringList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CString CStringList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CString& CStringList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE CString CStringList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CStringList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CStringList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE CString& CStringList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CString& CStringList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CString& CStringList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CStringList::SetAt(POSITION pos, LPCTSTR newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapWordToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapWordToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapWordToPtr::SetAt(WORD key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapWordToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapWordToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapPtrToWord::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapPtrToWord::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapPtrToWord::SetAt(void* key, WORD newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapPtrToWord::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapPtrToWord::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapPtrToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapPtrToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapPtrToPtr::SetAt(void* key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapPtrToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapPtrToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapWordToOb::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapWordToOb::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapWordToOb::SetAt(WORD key, CObject* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapWordToOb::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapWordToOb::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToPtr::SetAt(LPCTSTR key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToOb::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToOb::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToOb::SetAt(LPCTSTR key, CObject* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToOb::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToOb::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToString::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToString::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToString::SetAt(LPCTSTR key, LPCTSTR newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToString::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToString::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXCOLL_INLINE
diff --git a/public/sdk/inc/mfc40/afxctl.h b/public/sdk/inc/mfc40/afxctl.h
new file mode 100644
index 000000000..55829ceec
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxctl.h
@@ -0,0 +1,1410 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXCTL.H - MFC OLE Control support
+
+#ifndef __AFXCTL_H__
+#define __AFXCTL_H__
+
+#ifndef _AFXDLL
+ #error Please define _AFXDLL when including afxctl.h
+#endif
+
+// make sure afxole.h is included first
+#ifndef __AFXOLE_H_
+ #include <afxole.h>
+#endif
+
+// include OLE Control header
+#ifndef _OLECTL_H_
+ #include <olectl.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+//CWinApp
+ class COleControlModule; // Module housekeeping for an .OCX
+
+class CFontHolder; // For manipulating font objects
+class CPictureHolder; // For manipulating picture objects
+
+//CWnd
+ class COleControl; // OLE Control
+
+//CDialog
+ class COlePropertyPage; // OLE Property page
+
+class CPropExchange; // Abstract base for property exchange
+
+/////////////////////////////////////////////////////////////////////////////
+// Set structure packing
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// MFC data definition for data exported from the runtime DLL
+
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// COleControlModule - base class for .OCX module
+// This object is statically linked into the control.
+
+class COleControlModule : public CWinApp
+{
+ DECLARE_DYNAMIC(COleControlModule)
+public:
+ virtual BOOL InitInstance();
+ virtual int ExitInstance();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Module state macro
+
+#define AfxGetControlModuleContext AfxGetStaticModuleState
+#define _afxModuleAddrThis AfxGetStaticModuleState()
+
+/////////////////////////////////////////////////////////////////////////////
+// Connection helper functions
+
+BOOL AFXAPI AfxConnectionAdvise(LPUNKNOWN pUnkSrc, REFIID iid,
+ LPUNKNOWN pUnkSink, BOOL bRefCount, DWORD* pdwCookie);
+
+BOOL AFXAPI AfxConnectionUnadvise(LPUNKNOWN pUnkSrc, REFIID iid,
+ LPUNKNOWN pUnkSink, BOOL bRefCount, DWORD dwCookie);
+
+/////////////////////////////////////////////////////////////////////////////
+// Event maps
+
+enum AFX_EVENTMAP_FLAGS
+{
+ afxEventCustom = 0,
+ afxEventStock = 1,
+};
+
+struct AFX_EVENTMAP_ENTRY
+{
+ AFX_EVENTMAP_FLAGS flags;
+ DISPID dispid;
+ LPCTSTR pszName;
+ LPCSTR lpszParams;
+};
+
+struct AFX_EVENTMAP
+{
+ const AFX_EVENTMAP* lpBaseEventMap;
+ const AFX_EVENTMAP_ENTRY* lpEntries;
+};
+
+#define DECLARE_EVENT_MAP() \
+private: \
+ static const AFX_DATA AFX_EVENTMAP_ENTRY _eventEntries[]; \
+protected: \
+ static const AFX_DATA AFX_EVENTMAP eventMap; \
+ virtual const AFX_EVENTMAP* GetEventMap() const;
+
+#define BEGIN_EVENT_MAP(theClass, baseClass) \
+ const AFX_EVENTMAP* theClass::GetEventMap() const \
+ { return &eventMap; } \
+ const AFX_DATADEF AFX_EVENTMAP theClass::eventMap = \
+ { &(baseClass::eventMap), theClass::_eventEntries }; \
+ const AFX_DATADEF AFX_EVENTMAP_ENTRY theClass::_eventEntries[] = \
+ {
+
+#define END_EVENT_MAP() \
+ { afxEventCustom, DISPID_UNKNOWN, NULL, NULL }, \
+ };
+
+#define EVENT_CUSTOM(pszName, pfnFire, vtsParams) \
+ { afxEventCustom, DISPID_UNKNOWN, _T(pszName), vtsParams },
+
+#define EVENT_CUSTOM_ID(pszName, dispid, pfnFire, vtsParams) \
+ { afxEventCustom, dispid, _T(pszName), vtsParams },
+
+#define EVENT_PARAM(vtsParams) (BYTE*)(vtsParams)
+
+/////////////////////////////////////////////////////////////////////////////
+// Stock events
+
+#define EVENT_STOCK_CLICK() \
+ { afxEventStock, DISPID_CLICK, _T("Click"), VTS_NONE },
+
+#define EVENT_STOCK_DBLCLICK() \
+ { afxEventStock, DISPID_DBLCLICK, _T("DblClick"), VTS_NONE },
+
+#define EVENT_STOCK_KEYDOWN() \
+ { afxEventStock, DISPID_KEYDOWN, _T("KeyDown"), VTS_PI2 VTS_I2 },
+
+#define EVENT_STOCK_KEYPRESS() \
+ { afxEventStock, DISPID_KEYPRESS, _T("KeyPress"), VTS_PI2 },
+
+#define EVENT_STOCK_KEYUP() \
+ { afxEventStock, DISPID_KEYUP, _T("KeyUp"), VTS_PI2 VTS_I2 },
+
+#define EVENT_STOCK_MOUSEDOWN() \
+ { afxEventStock, DISPID_MOUSEDOWN, _T("MouseDown"), \
+ VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS },
+
+#define EVENT_STOCK_MOUSEMOVE() \
+ { afxEventStock, DISPID_MOUSEMOVE, _T("MouseMove"), \
+ VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS },
+
+#define EVENT_STOCK_MOUSEUP() \
+ { afxEventStock, DISPID_MOUSEUP, _T("MouseUp"), \
+ VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS },
+
+#define EVENT_STOCK_ERROREVENT() \
+ { afxEventStock, DISPID_ERROREVENT, _T("Error"), \
+ VTS_I2 VTS_PBSTR VTS_SCODE VTS_BSTR VTS_BSTR VTS_I4 VTS_PBOOL },
+
+// Shift state values for mouse and keyboard events
+#define SHIFT_MASK 0x01
+#define CTRL_MASK 0x02
+#define ALT_MASK 0x04
+
+// Button values for mouse events
+#define LEFT_BUTTON 0x01
+#define RIGHT_BUTTON 0x02
+#define MIDDLE_BUTTON 0x04
+
+/////////////////////////////////////////////////////////////////////////////
+// Stock properties
+
+#define DISP_PROPERTY_STOCK(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnSet, 0, afxDispStock }, \
+
+#define DISP_STOCKPROP_APPEARANCE() \
+ DISP_PROPERTY_STOCK(COleControl, "Appearance", DISPID_APPEARANCE, \
+ COleControl::GetAppearance, COleControl::SetAppearance, VT_I2)
+
+#define DISP_STOCKPROP_BACKCOLOR() \
+ DISP_PROPERTY_STOCK(COleControl, "BackColor", DISPID_BACKCOLOR, \
+ COleControl::GetBackColor, COleControl::SetBackColor, VT_COLOR)
+
+#define DISP_STOCKPROP_BORDERSTYLE() \
+ DISP_PROPERTY_STOCK(COleControl, "BorderStyle", DISPID_BORDERSTYLE, \
+ COleControl::GetBorderStyle, COleControl::SetBorderStyle, VT_I2)
+
+#define DISP_STOCKPROP_CAPTION() \
+ DISP_PROPERTY_STOCK(COleControl, "Caption", DISPID_CAPTION, \
+ COleControl::GetText, COleControl::SetText, VT_BSTR)
+
+#define DISP_STOCKPROP_ENABLED() \
+ DISP_PROPERTY_STOCK(COleControl, "Enabled", DISPID_ENABLED, \
+ COleControl::GetEnabled, COleControl::SetEnabled, VT_BOOL)
+
+#define DISP_STOCKPROP_FONT() \
+ DISP_PROPERTY_STOCK(COleControl, "Font", DISPID_FONT, \
+ COleControl::GetFont, COleControl::SetFont, VT_FONT)
+
+#define DISP_STOCKPROP_FORECOLOR() \
+ DISP_PROPERTY_STOCK(COleControl, "ForeColor", DISPID_FORECOLOR, \
+ COleControl::GetForeColor, COleControl::SetForeColor, VT_COLOR)
+
+#define DISP_STOCKPROP_HWND() \
+ DISP_PROPERTY_STOCK(COleControl, "hWnd", DISPID_HWND, \
+ COleControl::GetHwnd, SetNotSupported, VT_HANDLE)
+
+#define DISP_STOCKPROP_TEXT() \
+ DISP_PROPERTY_STOCK(COleControl, "Text", DISPID_TEXT, \
+ COleControl::GetText, COleControl::SetText, VT_BSTR)
+
+/////////////////////////////////////////////////////////////////////////////
+// Stock methods
+
+#define DISP_FUNCTION_STOCK(theClass, szExternalName, dispid, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnMember, (AFX_PMSG)0, 0, \
+ afxDispStock }, \
+
+#define DISP_STOCKFUNC_REFRESH() \
+ DISP_FUNCTION_STOCK(COleControl, "Refresh", DISPID_REFRESH, \
+ COleControl::Refresh, VT_EMPTY, VTS_NONE)
+
+#define DISP_STOCKFUNC_DOCLICK() \
+ DISP_FUNCTION_STOCK(COleControl, "DoClick", DISPID_DOCLICK, \
+ COleControl::DoClick, VT_EMPTY, VTS_NONE)
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for object factory and class ID
+
+#define BEGIN_OLEFACTORY(class_name) \
+protected: \
+ class class_name##Factory : public COleObjectFactoryEx \
+ { \
+ public: \
+ class_name##Factory(REFCLSID clsid, CRuntimeClass* pRuntimeClass, \
+ BOOL bMultiInstance, LPCTSTR lpszProgID) : \
+ COleObjectFactoryEx(clsid, pRuntimeClass, bMultiInstance, \
+ lpszProgID) {} \
+ virtual BOOL UpdateRegistry(BOOL);
+
+#define END_OLEFACTORY(class_name) \
+ }; \
+ friend class class_name##Factory; \
+ static AFX_DATA class_name##Factory factory; \
+public: \
+ static AFX_DATA const GUID guid; \
+ virtual HRESULT GetClassID(LPCLSID pclsid);
+
+#define DECLARE_OLECREATE_EX(class_name) \
+ BEGIN_OLEFACTORY(class_name) \
+ END_OLEFACTORY(class_name)
+
+#define IMPLEMENT_OLECREATE_EX(class_name, external_name, \
+ l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ static const TCHAR _szProgID_##class_name[] = _T(external_name); \
+ AFX_DATADEF class_name::class_name##Factory class_name::factory( \
+ class_name::guid, RUNTIME_CLASS(class_name), FALSE, \
+ _szProgID_##class_name); \
+ const AFX_DATADEF GUID class_name::guid = \
+ { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
+ HRESULT class_name::GetClassID(LPCLSID pclsid) \
+ { *pclsid = guid; return NOERROR; }
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for type name and misc status
+
+#define DECLARE_OLECTLTYPE(class_name) \
+ virtual UINT GetUserTypeNameID(); \
+ virtual DWORD GetMiscStatus();
+
+#define IMPLEMENT_OLECTLTYPE(class_name, idsUserTypeName, dwOleMisc) \
+ UINT class_name::GetUserTypeNameID() { return idsUserTypeName; } \
+ DWORD class_name::GetMiscStatus() { return dwOleMisc; }
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for property page IDs
+
+#define DECLARE_PROPPAGEIDS(class_name) \
+ protected: \
+ virtual LPCLSID GetPropPageIDs(ULONG& cPropPages);
+
+#define BEGIN_PROPPAGEIDS(class_name, count) \
+ static CLSID _rgPropPageIDs_##class_name[count]; \
+ static ULONG _cPropPages_##class_name = (ULONG)-1; \
+ LPCLSID class_name::GetPropPageIDs(ULONG& cPropPages) { \
+ if (_cPropPages_##class_name == (ULONG)-1) { \
+ _cPropPages_##class_name = count; \
+ LPCLSID pIDs = _rgPropPageIDs_##class_name; \
+ ULONG iPageMax = count; \
+ ULONG iPage = 0;
+
+#define PROPPAGEID(clsid) \
+ ASSERT(iPage < iPageMax); \
+ if (iPage < iPageMax) \
+ pIDs[iPage++] = clsid;
+
+#define END_PROPPAGEIDS(class_name) \
+ ASSERT(iPage == iPageMax); \
+ } \
+ cPropPages = _cPropPages_##class_name; \
+ return _rgPropPageIDs_##class_name; }
+
+/////////////////////////////////////////////////////////////////////////////
+// CFontHolder - helper class for dealing with font objects
+
+class CFontHolder
+{
+// Constructors
+public:
+ CFontHolder(LPPROPERTYNOTIFYSINK pNotify);
+
+// Attributes
+ LPFONT m_pFont;
+
+// Operations
+ void InitializeFont(
+ const FONTDESC* pFontDesc = NULL,
+ LPDISPATCH pFontDispAmbient = NULL);
+ void SetFont(LPFONT pNewFont);
+ void ReleaseFont();
+ HFONT GetFontHandle();
+ HFONT GetFontHandle(long cyLogical, long cyHimetric);
+ CFont* Select(CDC* pDC, long cyLogical, long cyHimetric);
+ BOOL GetDisplayString(CString& strValue);
+ LPFONTDISP GetFontDispatch();
+ void QueryTextMetrics(LPTEXTMETRIC lptm);
+
+// Implementation
+public:
+ ~CFontHolder();
+
+protected:
+ DWORD m_dwConnectCookie;
+ LPPROPERTYNOTIFYSINK m_pNotify;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPictureHolder - helper class for dealing with picture objects
+
+class CPictureHolder
+{
+// Constructors
+public:
+ CPictureHolder();
+
+// Attributes
+ LPPICTURE m_pPict;
+
+// Operations
+ BOOL CreateEmpty();
+
+ BOOL CreateFromBitmap(UINT idResource);
+ BOOL CreateFromBitmap(CBitmap* pBitmap, CPalette* pPal = NULL,
+ BOOL bTransferOwnership = TRUE);
+ BOOL CreateFromBitmap(HBITMAP hbm, HPALETTE hpal = NULL,
+ BOOL bTransferOwnership = FALSE);
+
+ BOOL CreateFromMetafile(HMETAFILE hmf, int xExt, int yExt,
+ BOOL bTransferOwnership = FALSE);
+
+ BOOL CreateFromIcon(UINT idResource);
+ BOOL CreateFromIcon(HICON hIcon, BOOL bTransferOwnership = FALSE);
+
+ short GetType();
+ BOOL GetDisplayString(CString& strValue);
+ LPPICTUREDISP GetPictureDispatch();
+ void SetPictureDispatch(LPPICTUREDISP pDisp);
+ void Render(CDC* pDC, const CRect& rcRender, const CRect& rcWBounds);
+
+// Implementation
+public:
+ ~CPictureHolder();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleControl - base class for a control implemented in C++ with MFC
+
+struct _AFXCTL_ADVISE_INFO; // implementation class
+struct _AFXCTL_UIACTIVE_INFO; // implementation class
+
+class COleControl : public CWnd
+{
+ DECLARE_DYNAMIC(COleControl)
+
+// Constructors
+public:
+ COleControl();
+
+// Operations
+
+ // Initialization
+ void SetInitialSize(int cx, int cy);
+ void InitializeIIDs(const IID* piidPrimary, const IID* piidEvents);
+
+ // Invalidating
+ void InvalidateControl(LPCRECT lpRect = NULL);
+
+ // Modified flag
+ BOOL IsModified();
+ void SetModifiedFlag(BOOL bModified = TRUE);
+
+ // Drawing operations
+ void DoSuperclassPaint(CDC* pDC, const CRect& rcBounds);
+
+ // Property exchange
+ BOOL ExchangeExtent(CPropExchange* pPX);
+ void ExchangeStockProps(CPropExchange* pPX);
+ BOOL ExchangeVersion(CPropExchange* pPX, DWORD dwVersionDefault,
+ BOOL bConvert = TRUE);
+ BOOL IsConvertingVBX();
+
+ // Stock methods
+ void Refresh();
+ void DoClick();
+
+ // Stock properties
+ short GetAppearance();
+ void SetAppearance(short);
+ OLE_COLOR GetBackColor();
+ void SetBackColor(OLE_COLOR);
+ short GetBorderStyle();
+ void SetBorderStyle(short);
+ BOOL GetEnabled();
+ void SetEnabled(BOOL);
+ CFontHolder& InternalGetFont();
+ LPFONTDISP GetFont();
+ void SetFont(LPFONTDISP);
+ OLE_COLOR GetForeColor();
+ void SetForeColor(OLE_COLOR);
+ OLE_HANDLE GetHwnd();
+ const CString& InternalGetText();
+ BSTR GetText();
+ void SetText(LPCTSTR);
+
+ // Using colors
+ COLORREF TranslateColor(OLE_COLOR clrColor, HPALETTE hpal = NULL);
+
+ // Using fonts
+ CFont* SelectStockFont(CDC* pDC);
+ CFont* SelectFontObject(CDC* pDC, CFontHolder& fontHolder);
+ void GetStockTextMetrics(LPTEXTMETRIC lptm);
+ void GetFontTextMetrics(LPTEXTMETRIC lptm, CFontHolder& fontHolder);
+
+ // Client site access
+ LPOLECLIENTSITE GetClientSite();
+
+ // Generic ambient property access
+ BOOL GetAmbientProperty(DISPID dispid, VARTYPE vtProp, void* pvProp);
+ BOOL WillAmbientsBeValidDuringLoad();
+
+ // Specific ambient properties
+ short AmbientAppearance();
+ OLE_COLOR AmbientBackColor();
+ CString AmbientDisplayName();
+ LPFONTDISP AmbientFont();
+ OLE_COLOR AmbientForeColor();
+ LCID AmbientLocaleID();
+ CString AmbientScaleUnits();
+ short AmbientTextAlign();
+ BOOL AmbientUserMode();
+ BOOL AmbientUIDead();
+ BOOL AmbientShowGrabHandles();
+ BOOL AmbientShowHatching();
+
+ // Firing events
+ void AFX_CDECL FireEvent(DISPID dispid, BYTE* pbParams, ...);
+
+ // Firing functions for stock events
+ void FireKeyDown(USHORT* pnChar, short nShiftState);
+ void FireKeyUp(USHORT* pnChar, short nShiftState);
+ void FireKeyPress(USHORT* pnChar);
+ void FireMouseDown(short nButton, short nShiftState,
+ OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
+ void FireMouseUp(short nButton, short nShiftState,
+ OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
+ void FireMouseMove(short nButton, short nShiftState,
+ OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
+ void FireClick();
+ void FireDblClick();
+ void FireError(SCODE scode, LPCTSTR lpszDescription, UINT nHelpID = 0);
+
+ // Changing size and/or rectangle
+ BOOL GetRectInContainer(LPRECT lpRect);
+ BOOL SetRectInContainer(LPCRECT lpRect);
+ void GetControlSize(int* pcx, int* pcy);
+ BOOL SetControlSize(int cx, int cy);
+
+ // Window management
+ void RecreateControlWindow();
+
+ // Modal dialog operations
+ void PreModalDialog(HWND hWndParent = NULL);
+ void PostModalDialog(HWND hWndParent = NULL);
+
+ // Data binding operations
+ void BoundPropertyChanged(DISPID dispid);
+ BOOL BoundPropertyRequestEdit(DISPID dispid);
+
+ // Dispatch exceptions
+ void ThrowError(SCODE sc, UINT nDescriptionID, UINT nHelpID = -1);
+ void ThrowError(SCODE sc, LPCTSTR pszDescription = NULL, UINT nHelpID = 0);
+ void GetNotSupported();
+ void SetNotSupported();
+ void SetNotPermitted();
+
+ // Communication with the control site
+ void ControlInfoChanged();
+ BOOL LockInPlaceActive(BOOL bLock);
+ LPDISPATCH GetExtendedControl();
+ void TransformCoords(POINTL* lpptlHimetric,
+ POINTF* lpptfContainer, DWORD flags);
+
+ // Simple frame
+ void EnableSimpleFrame();
+
+// Overridables
+ virtual void DoPropExchange(CPropExchange* pPX);
+ virtual void OnResetState();
+ virtual void OnDraw(
+ CDC* pDC, const CRect& rcBounds, const CRect& rcInvalid);
+ virtual void OnDrawMetafile(CDC* pDC, const CRect& rcBounds);
+
+ // Class ID (implemented by IMPLEMENT_OLECREATE_EX macro)
+ virtual HRESULT GetClassID(LPCLSID pclsid) = 0;
+
+ // For customizing the default messages on the status bar
+ virtual void GetMessageString(UINT nID, CString& rMessage) const;
+
+ // Display of error events to user
+ virtual void DisplayError(SCODE scode, LPCTSTR lpszDescription,
+ LPCTSTR lpszSource, LPCTSTR lpszHelpFile, UINT nHelpID);
+
+ // IOleObject notifications
+ virtual void OnSetClientSite();
+ virtual BOOL OnSetExtent(LPSIZEL lpSizeL);
+ virtual void OnClose(DWORD dwSaveOption);
+
+ // IOleInPlaceObject notifications
+ virtual BOOL OnSetObjectRects(LPCRECT lpRectPos, LPCRECT lpRectClip);
+
+ // Event connection point notifications
+ virtual void OnEventAdvise(BOOL bAdvise);
+
+ // Override to hook firing of Click event
+ virtual void OnClick(USHORT iButton);
+
+ // Override to get character after key events have been processed.
+ virtual void OnKeyDownEvent(USHORT nChar, USHORT nShiftState);
+ virtual void OnKeyUpEvent(USHORT nChar, USHORT nShiftState);
+ virtual void OnKeyPressEvent(USHORT nChar);
+
+ // Change notifications
+ virtual void OnAppearanceChanged();
+ virtual void OnBackColorChanged();
+ virtual void OnBorderStyleChanged();
+ virtual void OnEnabledChanged();
+ virtual void OnTextChanged();
+ virtual void OnFontChanged();
+ virtual void OnForeColorChanged();
+
+ // IOleControl notifications
+ virtual void OnGetControlInfo(LPCONTROLINFO pControlInfo);
+ virtual void OnMnemonic(LPMSG pMsg);
+ virtual void OnAmbientPropertyChange(DISPID dispid);
+ virtual void OnFreezeEvents(BOOL bFreeze);
+
+ // In-place activation
+ virtual HMENU OnGetInPlaceMenu();
+ virtual void OnShowToolBars();
+ virtual void OnHideToolBars();
+
+ // IViewObject
+ virtual BOOL OnGetColorSet(DVTARGETDEVICE* ptd, HDC hicTargetDev,
+ LPLOGPALETTE* ppColorSet);
+
+ // IDataObject - see COleDataSource for a description of these overridables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+
+ // Verbs
+ virtual BOOL OnEnumVerbs(LPENUMOLEVERB* ppenumOleVerb);
+ virtual BOOL OnDoVerb(LONG iVerb, LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+ virtual BOOL OnEdit(LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+ virtual BOOL OnProperties(LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+
+ // IPerPropertyBrowsing overrides
+ virtual BOOL OnGetDisplayString(DISPID dispid, CString& strValue);
+ virtual BOOL OnMapPropertyToPage(DISPID dispid, LPCLSID lpclsid,
+ BOOL* pbPageOptional);
+ virtual BOOL OnGetPredefinedStrings(DISPID dispid,
+ CStringArray* pStringArray, CDWordArray* pCookieArray);
+ virtual BOOL OnGetPredefinedValue(DISPID dispid, DWORD dwCookie,
+ VARIANT* lpvarOut);
+
+ // Subclassing
+ virtual BOOL IsSubclassedControl();
+
+ // Window reparenting
+ virtual void ReparentControlWindow(HWND hWndOuter, HWND hWndParent);
+
+ // Window procedure
+ virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+
+// Implementation
+ ~COleControl();
+
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif // _DEBUG
+
+protected:
+ // Friend classes
+ friend class COleControlInnerUnknown;
+ friend class CReflectorWnd;
+ friend class CControlFrameWnd;
+
+ // Interface hook for primary automation interface
+ LPUNKNOWN GetInterfaceHook(const void* piid);
+
+ // Shutdown
+ virtual void OnFinalRelease();
+
+ // Window management
+ BOOL CreateControlWindow(HWND hWndParent, const CRect& rcPos,
+ LPCRECT prcClipped = NULL);
+ void CreateWindowForSubclassedControl();
+ BOOL IgnoreWindowMessage(UINT msg, WPARAM wParam, LPARAM lParam,
+ LRESULT* plResult);
+
+ // Serialization
+ HRESULT SaveState(IStream* pStm);
+ HRESULT LoadState(IStream* pStm);
+ virtual void Serialize(CArchive& ar);
+
+ // Drawing
+ void DrawContent(CDC* pDC, CRect& rc);
+ void DrawMetafile(CDC* pDC, CRect& rc);
+ BOOL GetMetafileData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+
+ // IDataObject formats
+ void SetInitialDataFormats();
+ BOOL GetPropsetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ REFCLSID fmtid);
+ BOOL SetPropsetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ REFCLSID fmtid);
+
+ // Type library
+ BOOL GetDispatchIID(IID* pIID);
+
+ // Connection point container
+ virtual LPCONNECTIONPOINT GetConnectionHook(REFIID iid);
+ virtual BOOL GetExtraConnectionPoints(CPtrArray* pConnPoints);
+
+ // Events
+ static const AFX_DATA AFX_EVENTMAP_ENTRY _eventEntries[];
+ virtual const AFX_EVENTMAP* GetEventMap() const;
+ static const AFX_DATA AFX_EVENTMAP eventMap;
+ const AFX_EVENTMAP_ENTRY* GetEventMapEntry(LPCTSTR pszName,
+ DISPID* pDispid) const;
+ void FireEventV(DISPID dispid, BYTE* pbParams, va_list argList);
+
+ // Stock events
+ void KeyDown(USHORT* pnChar);
+ void KeyUp(USHORT* pnChar);
+ void ButtonDown(USHORT iButton, UINT nFlags, CPoint point);
+ void ButtonUp(USHORT iButton, UINT nFlags, CPoint point);
+ void ButtonDblClk(USHORT iButton, UINT nFlags, CPoint point);
+
+ // Masks to identify which stock events and properties are used
+ void InitStockEventMask();
+ void InitStockPropMask();
+
+ // Support for subclassing a Windows control
+ BOOL ContainerReflectsMessages();
+ BOOL ContainerClips();
+ CWnd* GetOuterWindow() const; // m_pReflect if any, otherwise this
+ virtual void OnReflectorDestroyed();
+
+ // Aggregation of default handler
+ virtual BOOL OnCreateAggregates();
+ LPVOID QueryDefHandler(REFIID iid);
+
+ // State change notifications
+ void SendAdvise(UINT uCode);
+
+ // Non-in-place activation
+ virtual HRESULT OnOpen(BOOL bTryInPlace, LPMSG pMsg);
+ void ResizeOpenControl(int cx, int cy);
+ virtual CControlFrameWnd* CreateFrameWindow();
+ virtual void ResizeFrameWindow(int cx, int cy);
+ virtual void OnFrameClose();
+ virtual HRESULT OnHide();
+
+ // In-place activation
+ virtual HRESULT OnActivateInPlace(BOOL bUIActivate, LPMSG pMsg);
+ void ForwardActivationMsg(LPMSG pMsg);
+ virtual void AddFrameLevelUI();
+ virtual void RemoveFrameLevelUI();
+ virtual BOOL BuildSharedMenu();
+ virtual void DestroySharedMenu();
+
+ // Property sheet
+ virtual LPCLSID GetPropPageIDs(ULONG& cPropPages);
+
+ // IOleObject implementation
+ void GetUserType(LPTSTR pszUserType);
+ virtual UINT GetUserTypeNameID() = 0;
+ virtual DWORD GetMiscStatus() = 0;
+
+ // Rectangle tracker
+ void CreateTracker(BOOL bHandles, BOOL bHatching);
+ void DestroyTracker();
+
+ // Automation
+ BOOL IsInvokeAllowed(DISPID dispid);
+
+ // Data members
+ const IID* m_piidPrimary; // IID for control automation
+ const IID* m_piidEvents; // IID for control events
+ DWORD m_dwVersionLoaded; // Version number of loaded state
+ COleDispatchDriver m_ambientDispDriver; // Driver for ambient properties
+ DWORD m_dwStockEventMask; // Which stock events are used?
+ DWORD m_dwStockPropMask; // Which stock properties are used?
+ ULONG m_cEventsFrozen; // Event freeze count (>0 means frozen)
+ union
+ {
+ CControlFrameWnd* m_pWndOpenFrame; // Open frame window.
+ CRectTracker* m_pRectTracker; // Tracker for UI active control
+ };
+ CRect m_rcPos; // Control's position rectangle
+ CRect m_rcBounds; // Bounding rectangle for drawing
+ CPoint m_ptOffset; // Child window origin
+ long m_cxExtent; // Control's width in HIMETRIC units
+ long m_cyExtent; // Control's height in HIMETRIC units
+ class CReflectorWnd* m_pReflect; // Reflector window
+ UINT m_nIDTracking; // Tracking command ID or string IDS
+ UINT m_nIDLastMessage; // Last displayed message string IDS
+ BYTE m_bAutoMenuEnable; // Disable menu items without handlers?
+ BYTE m_bFinalReleaseCalled; // Are we handling the final Release?
+ BYTE m_bModified; // "Dirty" bit.
+ BYTE m_bCountOnAmbients; // Can we count on Ambients during load?
+ BYTE m_iButtonState; // Which buttons are down?
+ BYTE m_iDblClkState; // Which buttons involved in dbl click?
+ BYTE m_bInPlaceActive; // Are we in-place active?
+ BYTE m_bUIActive; // Are we UI active?
+ BYTE m_bPendingUIActivation; // Are we about to become UI active?
+ BYTE m_bOpen; // Are we open (non-in-place)?
+ BYTE m_bChangingExtent; // Extent is currently being changed
+ BYTE m_bConvertVBX; // VBX conversion in progress
+ BYTE m_bSimpleFrame; // Simple frame support
+ BYTE m_bUIDead; // UIDead ambient property value
+ BYTE m_bInitialized; // Was IPersist*::{InitNew,Load} called?
+
+ // Stock properties
+ OLE_COLOR m_clrBackColor; // BackColor
+ OLE_COLOR m_clrForeColor; // ForeColor
+ CString m_strText; // Text/Caption
+ CFontHolder m_font; // Font
+ HFONT m_hFontPrev; // Previously selected font object
+ short m_sAppearance; // Appearance
+ short m_sBorderStyle; // BorderStyle
+ BOOL m_bEnabled; // Enabled
+
+ // UI Active info (shared OLE menu data)
+ _AFXCTL_UIACTIVE_INFO* m_pUIActiveInfo;
+
+ // Default Handler aggregation
+ LPUNKNOWN m_pDefIUnknown;
+ _AFXCTL_ADVISE_INFO* m_pAdviseInfo;
+ LPPERSISTSTORAGE m_pDefIPersistStorage;
+ LPVIEWOBJECT m_pDefIViewObject;
+ LPOLECACHE m_pDefIOleCache;
+
+ // OLE client site interfaces
+ LPOLECLIENTSITE m_pClientSite; // Client site
+ LPOLEINPLACESITE m_pInPlaceSite; // In-place site
+ LPOLECONTROLSITE m_pControlSite; // Control site
+ LPOLEADVISEHOLDER m_pOleAdviseHolder; // Advise holder
+ LPDATAADVISEHOLDER m_pDataAdviseHolder; // Data advise holder
+ LPSIMPLEFRAMESITE m_pSimpleFrameSite; // Simple frame site
+
+ // OLE in-place activation info
+ LPOLEINPLACEFRAME m_pInPlaceFrame;
+ OLEINPLACEFRAMEINFO m_frameInfo;
+ LPOLEINPLACEUIWINDOW m_pInPlaceDoc;
+
+ // Implementation of IDataObject
+ // CControlDataSource implements OnRender reflections to COleControl
+ class CControlDataSource : public COleDataSource
+ {
+ protected:
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ };
+ CControlDataSource m_dataSource;
+ friend class CControlDataSource;
+
+// Message Maps
+protected:
+ //{{AFX_MSG(COleControl)
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnInitMenuPopup(CMenu*, UINT, BOOL);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg void OnCancelMode();
+ afx_msg void OnPaint(CDC* pDC);
+ afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg int OnMouseActivate(CWnd *pDesktopWnd, UINT nHitTest, UINT message);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg void OnKillFocus(CWnd* pNewWnd);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg UINT OnGetDlgCode();
+ //}}AFX_MSG
+
+ afx_msg LRESULT OnOcmCtlColorBtn(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorDlg(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorEdit(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorListBox(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorMsgBox(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorScrollBar(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorStatic(WPARAM wParam, LPARAM lParam);
+
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ // IPersistStorage
+ BEGIN_INTERFACE_PART(PersistStorage, IPersistStorage)
+ INIT_INTERFACE_PART(COleControl, PersistStorage)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(InitNew)(LPSTORAGE);
+ STDMETHOD(Load)(LPSTORAGE);
+ STDMETHOD(Save)(LPSTORAGE, BOOL);
+ STDMETHOD(SaveCompleted)(LPSTORAGE);
+ STDMETHOD(HandsOffStorage)();
+ END_INTERFACE_PART(PersistStorage)
+
+ // IPersistStreamInit
+ BEGIN_INTERFACE_PART(PersistStreamInit, IPersistStreamInit)
+ INIT_INTERFACE_PART(COleControl, PersistStreamInit)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(Load)(LPSTREAM);
+ STDMETHOD(Save)(LPSTREAM, BOOL);
+ STDMETHOD(GetSizeMax)(ULARGE_INTEGER *);
+ STDMETHOD(InitNew)();
+ END_INTERFACE_PART(PersistStreamInit)
+
+ // IPersistMemory
+ BEGIN_INTERFACE_PART(PersistMemory, IPersistMemory)
+ INIT_INTERFACE_PART(COleControl, PersistMemory)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(Load)(LPVOID, ULONG);
+ STDMETHOD(Save)(LPVOID, BOOL, ULONG);
+ STDMETHOD(GetSizeMax)(ULONG*);
+ STDMETHOD(InitNew)();
+ END_INTERFACE_PART(PersistMemory)
+
+ // IPersistPropertyBag
+ BEGIN_INTERFACE_PART(PersistPropertyBag, IPersistPropertyBag)
+ INIT_INTERFACE_PART(COleControl, PersistPropertyBag)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(InitNew)();
+ STDMETHOD(Load)(LPPROPERTYBAG, LPERRORLOG);
+ STDMETHOD(Save)(LPPROPERTYBAG, BOOL, BOOL);
+ END_INTERFACE_PART(PersistPropertyBag)
+
+ // IOleObject
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleControl, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(CLSID*);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ // IViewObject2
+ BEGIN_INTERFACE_PART(ViewObject, IViewObject2)
+ INIT_INTERFACE_PART(COleControl, ViewObject)
+ STDMETHOD(Draw)(DWORD, LONG, void*, DVTARGETDEVICE*, HDC, HDC,
+ LPCRECTL, LPCRECTL, BOOL (CALLBACK*)(DWORD), DWORD);
+ STDMETHOD(GetColorSet)(DWORD, LONG, void*, DVTARGETDEVICE*,
+ HDC, LPLOGPALETTE*);
+ STDMETHOD(Freeze)(DWORD, LONG, void*, DWORD*);
+ STDMETHOD(Unfreeze)(DWORD);
+ STDMETHOD(SetAdvise)(DWORD, DWORD, LPADVISESINK);
+ STDMETHOD(GetAdvise)(DWORD*, DWORD*, LPADVISESINK*);
+ STDMETHOD(GetExtent) (DWORD, LONG, DVTARGETDEVICE*, LPSIZEL);
+ END_INTERFACE_PART(ViewObject)
+
+ // IDataObject
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleControl, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ // IOleInPlaceObject
+ BEGIN_INTERFACE_PART(OleInPlaceObject, IOleInPlaceObject)
+ INIT_INTERFACE_PART(COleControl, OleInPlaceObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(InPlaceDeactivate)();
+ STDMETHOD(UIDeactivate)();
+ STDMETHOD(SetObjectRects)(LPCRECT, LPCRECT);
+ STDMETHOD(ReactivateAndUndo)();
+ END_INTERFACE_PART(OleInPlaceObject)
+
+ // IOleInPlaceActiveObject
+ BEGIN_INTERFACE_PART(OleInPlaceActiveObject, IOleInPlaceActiveObject)
+ INIT_INTERFACE_PART(COleControl, OleInPlaceActiveObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(TranslateAccelerator)(LPMSG);
+ STDMETHOD(OnFrameWindowActivate)(BOOL);
+ STDMETHOD(OnDocWindowActivate)(BOOL);
+ STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL);
+ STDMETHOD(EnableModeless)(BOOL);
+ END_INTERFACE_PART(OleInPlaceActiveObject)
+
+ // IOleCache
+ BEGIN_INTERFACE_PART(OleCache, IOleCache)
+ INIT_INTERFACE_PART(COleControl, OleCache)
+ STDMETHOD(Cache)(LPFORMATETC, DWORD, LPDWORD);
+ STDMETHOD(Uncache)(DWORD);
+ STDMETHOD(EnumCache)(LPENUMSTATDATA*);
+ STDMETHOD(InitCache)(LPDATAOBJECT);
+ STDMETHOD(SetData)(LPFORMATETC, STGMEDIUM*, BOOL);
+ END_INTERFACE_PART(OleCache)
+
+ // IOleControl
+ BEGIN_INTERFACE_PART(OleControl, IOleControl)
+ INIT_INTERFACE_PART(COleControl, OleControl)
+ STDMETHOD(GetControlInfo)(LPCONTROLINFO pCI);
+ STDMETHOD(OnMnemonic)(LPMSG pMsg);
+ STDMETHOD(OnAmbientPropertyChange)(DISPID dispid);
+ STDMETHOD(FreezeEvents)(BOOL bFreeze);
+ END_INTERFACE_PART(OleControl)
+
+ // IProvideClassInfo2
+ BEGIN_INTERFACE_PART(ProvideClassInfo, IProvideClassInfo2)
+ INIT_INTERFACE_PART(COleControl, ProvideClassInfo)
+ STDMETHOD(GetClassInfo)(LPTYPEINFO* ppTypeInfo);
+ STDMETHOD(GetGUID)(DWORD dwGuidKind, GUID* pGUID);
+ END_INTERFACE_PART(ProvideClassInfo)
+
+ // ISpecifyPropertyPages
+ BEGIN_INTERFACE_PART(SpecifyPropertyPages, ISpecifyPropertyPages)
+ INIT_INTERFACE_PART(COleControl, SpecifyPropertyPages)
+ STDMETHOD(GetPages)(CAUUID*);
+ END_INTERFACE_PART(SpecifyPropertyPages)
+
+ // IPerPropertyBrowsing
+ BEGIN_INTERFACE_PART(PerPropertyBrowsing, IPerPropertyBrowsing)
+ INIT_INTERFACE_PART(COleControl, PerPropertyBrowsing)
+ STDMETHOD(GetDisplayString)(DISPID dispid, BSTR* lpbstr);
+ STDMETHOD(MapPropertyToPage)(DISPID dispid, LPCLSID lpclsid);
+ STDMETHOD(GetPredefinedStrings)(DISPID dispid,
+ CALPOLESTR* lpcaStringsOut, CADWORD* lpcaCookiesOut);
+ STDMETHOD(GetPredefinedValue)(DISPID dispid, DWORD dwCookie,
+ VARIANT* lpvarOut);
+ END_INTERFACE_PART(PerPropertyBrowsing)
+
+ // IPropertyNotifySink for font updates (not exposed via QueryInterface)
+ BEGIN_INTERFACE_PART(FontNotification, IPropertyNotifySink)
+ INIT_INTERFACE_PART(COleControl, FontNotification)
+ STDMETHOD(OnChanged)(DISPID dispid);
+ STDMETHOD(OnRequestEdit)(DISPID dispid);
+ END_INTERFACE_PART(FontNotification)
+
+ DECLARE_INTERFACE_MAP()
+
+// Connection maps
+protected:
+ // Connection point for events
+ BEGIN_CONNECTION_PART(COleControl, EventConnPt)
+ virtual void OnAdvise(BOOL bAdvise);
+ virtual REFIID GetIID();
+ END_CONNECTION_PART(EventConnPt)
+
+ // Connection point for property notifications
+ BEGIN_CONNECTION_PART(COleControl, PropConnPt)
+ CONNECTION_IID(IID_IPropertyNotifySink)
+ END_CONNECTION_PART(PropConnPt)
+
+ DECLARE_CONNECTION_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Registry functions
+
+enum AFX_REG_FLAGS
+{
+ afxRegInsertable = 0x0001,
+ afxRegApartmentThreading = 0x0002,
+};
+
+BOOL AFXAPI AfxOleRegisterTypeLib(HINSTANCE hInstance, REFGUID tlid,
+ LPCTSTR pszFileName = NULL, LPCTSTR pszHelpDir = NULL);
+
+BOOL AFXAPI AfxOleUnregisterTypeLib(REFGUID tlid);
+
+BOOL AFXAPI AfxOleRegisterControlClass(HINSTANCE hInstance, REFCLSID clsid,
+ LPCTSTR pszProgID, UINT idTypeName, UINT idBitmap, int nRegFlags,
+ DWORD dwMiscStatus, REFGUID tlid, WORD wVerMajor, WORD wVerMinor);
+
+BOOL AFXAPI AfxOleUnregisterClass(REFCLSID clsid, LPCTSTR pszProgID);
+
+BOOL AFXAPI AfxOleRegisterPropertyPageClass(HINSTANCE hInstance,
+ REFCLSID clsid, UINT idTypeName);
+
+BOOL AFXAPI AfxOleRegisterPropertyPageClass(HINSTANCE hInstance,
+ REFCLSID clsid, UINT idTypeName, int nRegFlags);
+
+/////////////////////////////////////////////////////////////////////////////
+// Licensing functions
+
+BOOL AFXAPI AfxVerifyLicFile(HINSTANCE hInstance, LPCTSTR pszLicFileName,
+ LPCOLESTR pszLicFileContents, UINT cch=-1);
+
+/////////////////////////////////////////////////////////////////////////////
+// CPropExchange - Abstract base class for property exchange
+
+class CPropExchange
+{
+// Operations
+public:
+ BOOL IsLoading();
+ DWORD GetVersion();
+ BOOL ExchangeVersion(DWORD& dwVersionLoaded, DWORD dwVersionDefault,
+ BOOL bConvert);
+
+ virtual BOOL ExchangeProp(LPCTSTR pszPropName, VARTYPE vtProp,
+ void* pvProp, const void* pvDefault = NULL) = 0;
+ virtual BOOL ExchangeBlobProp(LPCTSTR pszPropName, HGLOBAL* phBlob,
+ HGLOBAL hBlobDefault = NULL) = 0;
+ virtual BOOL ExchangeFontProp(LPCTSTR pszPropName, CFontHolder& font,
+ const FONTDESC* pFontDesc,
+ LPFONTDISP pFontDispAmbient) = 0;
+ virtual BOOL ExchangePersistentProp(LPCTSTR pszPropName,
+ LPUNKNOWN* ppUnk, REFIID iid, LPUNKNOWN pUnkDefault) = 0;
+
+// Implementation
+protected:
+ CPropExchange();
+ BOOL m_bLoading;
+ DWORD m_dwVersion;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Property-exchange (PX_) helper functions
+
+BOOL AFX_CDECL PX_Short(CPropExchange* pPX, LPCTSTR pszPropName, short& sValue);
+
+BOOL AFX_CDECL PX_Short(CPropExchange* pPX, LPCTSTR pszPropName, short& sValue,
+ short sDefault);
+
+BOOL AFX_CDECL PX_UShort(CPropExchange* pPX, LPCTSTR pszPropName, USHORT& usValue);
+
+BOOL AFX_CDECL PX_UShort(CPropExchange* pPX, LPCTSTR pszPropName, USHORT& usValue,
+ USHORT usDefault);
+
+BOOL AFX_CDECL PX_Long(CPropExchange* pPX, LPCTSTR pszPropName, long& lValue);
+
+BOOL AFX_CDECL PX_Long(CPropExchange* pPX, LPCTSTR pszPropName, long& lValue,
+ long lDefault);
+
+BOOL AFX_CDECL PX_ULong(CPropExchange* pPX, LPCTSTR pszPropName, ULONG& ulValue);
+
+BOOL AFX_CDECL PX_ULong(CPropExchange* pPX, LPCTSTR pszPropName, ULONG& ulValue,
+ ULONG ulDefault);
+
+BOOL AFX_CDECL PX_Color(CPropExchange* pPX, LPCTSTR pszPropName, OLE_COLOR& clrValue);
+
+BOOL AFX_CDECL PX_Color(CPropExchange* pPX, LPCTSTR pszPropName, OLE_COLOR& clrValue,
+ OLE_COLOR clrDefault);
+
+BOOL AFX_CDECL PX_Bool(CPropExchange* pPX, LPCTSTR pszPropName, BOOL& bValue);
+
+BOOL AFX_CDECL PX_Bool(CPropExchange* pPX, LPCTSTR pszPropName, BOOL& bValue,
+ BOOL bDefault);
+
+BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue);
+
+BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue,
+ const CString& strDefault);
+
+BOOL AFX_CDECL PX_Currency(CPropExchange* pPX, LPCTSTR pszPropName, CY& cyValue);
+
+BOOL AFX_CDECL PX_Currency(CPropExchange* pPX, LPCTSTR pszPropName, CY& cyValue,
+ CY cyDefault);
+
+BOOL AFX_CDECL PX_Float(CPropExchange* pPX, LPCTSTR pszPropName, float& floatValue);
+
+BOOL AFX_CDECL PX_Float(CPropExchange* pPX, LPCTSTR pszPropName, float& floatValue,
+ float floatDefault);
+
+BOOL AFX_CDECL PX_Double(CPropExchange* pPX, LPCTSTR pszPropName, double& doubleValue);
+
+BOOL AFX_CDECL PX_Double(CPropExchange* pPX, LPCTSTR pszPropName, double& doubleValue,
+ double doubleDefault);
+
+BOOL AFX_CDECL PX_Blob(CPropExchange* pPX, LPCTSTR pszPropName, HGLOBAL& hBlob,
+ HGLOBAL hBlobDefault = NULL);
+
+BOOL AFX_CDECL PX_Font(CPropExchange* pPX, LPCTSTR pszPropName, CFontHolder& font,
+ const FONTDESC* pFontDesc = NULL,
+ LPFONTDISP pFontDispAmbient = NULL);
+
+BOOL AFX_CDECL PX_Picture(CPropExchange* pPX, LPCTSTR pszPropName,
+ CPictureHolder& pict);
+
+BOOL AFX_CDECL PX_Picture(CPropExchange* pPX, LPCTSTR pszPropName,
+ CPictureHolder& pict, CPictureHolder& pictDefault);
+
+BOOL AFX_CDECL PX_IUnknown(CPropExchange* pPX, LPCTSTR pszPropName, LPUNKNOWN& pUnk,
+ REFIID iid, LPUNKNOWN pUnkDefault = NULL);
+
+BOOL AFX_CDECL PX_VBXFontConvert(CPropExchange* pPX, CFontHolder& font);
+
+/////////////////////////////////////////////////////////////////////////////
+// Structures used by COlePropertyPage
+
+typedef struct tagAFX_PPFIELDSTATUS
+{
+ UINT nID;
+ BOOL bDirty;
+
+} AFX_PPFIELDSTATUS;
+
+/////////////////////////////////////////////////////////////////////////////
+// Property Page Dialog Class
+
+class COlePropertyPage : public CDialog
+{
+ DECLARE_DYNAMIC(COlePropertyPage)
+
+// Constructors
+public:
+ COlePropertyPage(UINT idDlg, UINT idCaption);
+
+// Operations
+ LPDISPATCH* GetObjectArray(ULONG* pnObjects);
+ void SetModifiedFlag(BOOL bModified = TRUE);
+ BOOL IsModified();
+ LPPROPERTYPAGESITE GetPageSite();
+ void SetDialogResource(HGLOBAL hDialog);
+ void SetPageName(LPCTSTR lpszPageName);
+ void SetHelpInfo(LPCTSTR lpszDocString, LPCTSTR lpszHelpFile = NULL,
+ DWORD dwHelpContext = 0);
+
+ BOOL GetControlStatus(UINT nID);
+ BOOL SetControlStatus(UINT nID, BOOL bDirty);
+ void IgnoreApply(UINT nID);
+
+ int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
+ UINT nType = MB_OK);
+ // note that this is a non-virtual override of CWnd::MessageBox()
+
+// Overridables
+ virtual void OnSetPageSite();
+ virtual void OnObjectsChanged();
+ virtual BOOL OnHelp(LPCTSTR lpszHelpDir);
+ virtual BOOL OnInitDialog();
+ virtual BOOL OnEditProperty(DISPID dispid);
+
+// Implementation
+
+ // DDP_ property get/set helper routines
+ BOOL SetPropText(LPCTSTR pszPropName, BYTE &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, BYTE* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, int &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, int* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, UINT &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, UINT* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, long &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, long* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, DWORD &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, DWORD* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, CString &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, CString* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, float &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, float* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, double &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, double* pValue);
+ BOOL SetPropCheck(LPCTSTR pszPropName, int Value);
+ BOOL GetPropCheck(LPCTSTR pszPropName, int* pValue);
+ BOOL SetPropRadio(LPCTSTR pszPropName, int Value);
+ BOOL GetPropRadio(LPCTSTR pszPropName, int* pValue);
+ BOOL SetPropIndex(LPCTSTR pszPropName, int Value);
+ BOOL GetPropIndex(LPCTSTR pszPropName, int* pValue);
+ CPtrArray m_arrayDDP; // pending DDP data
+
+ // Destructors
+ ~COlePropertyPage();
+
+protected:
+ LRESULT WindowProc(UINT msg, WPARAM wParam, LPARAM lParam);
+ BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ BOOL PreTranslateMessage(LPMSG lpMsg);
+ virtual void OnFinalRelease();
+ void CleanupObjectArray();
+ static BOOL CALLBACK EnumChildProc(HWND hWnd, LPARAM lParam);
+ static BOOL CALLBACK EnumControls(HWND hWnd, LPARAM lParam);
+
+private:
+ BOOL m_bDirty;
+ UINT m_idDlg;
+ UINT m_idCaption;
+ CString m_strPageName;
+ SIZE m_sizePage;
+ CString m_strDocString;
+ CString m_strHelpFile;
+ DWORD m_dwHelpContext;
+ LPPROPERTYPAGESITE m_pPageSite;
+
+ LPDISPATCH* m_ppDisp; // Array of IDispatch pointers, used to
+ // access the properties of each control
+
+ LPDWORD m_pAdvisors; // Array of connection tokens used by
+ // IConnecitonPoint::Advise/UnAdvise.
+
+ BOOL m_bPropsChanged; // IPropertyNotifySink::OnChanged has been
+ // called, but not acted upon yet.
+
+ ULONG m_nObjects; // Objects in m_ppDisp, m_ppDataObj, m_pAdvisors
+
+ BOOL m_bInitializing; // TRUE if the contents of the fields of
+ // the dialog box are being initialized
+
+ int m_nControls; // Number of fields on this property page
+
+ AFX_PPFIELDSTATUS* m_pStatus; // Array containing information on
+ // which fields are dirty
+
+ CWordArray m_IDArray; // Array containing information on which
+ // controls to ignore when deciding if
+ // the apply button is to be enabled
+
+ HGLOBAL m_hDialog; // Handle of the dialog resource
+
+#ifdef _DEBUG
+ BOOL m_bNonStandardSize;
+#endif
+
+protected:
+ // Generated message map functions
+ //{{AFX_MSG(COlePropertyPage)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PropertyPage, IPropertyPage2)
+ INIT_INTERFACE_PART(COlePropertyPage, PropertyPage)
+ STDMETHOD(SetPageSite)(LPPROPERTYPAGESITE);
+ STDMETHOD(Activate)(HWND, LPCRECT, BOOL);
+ STDMETHOD(Deactivate)();
+ STDMETHOD(GetPageInfo)(LPPROPPAGEINFO);
+ STDMETHOD(SetObjects)(ULONG, LPUNKNOWN*);
+ STDMETHOD(Show)(UINT);
+ STDMETHOD(Move)(LPCRECT);
+ STDMETHOD(IsPageDirty)();
+ STDMETHOD(Apply)();
+ STDMETHOD(Help)(LPCOLESTR);
+ STDMETHOD(TranslateAccelerator)(LPMSG);
+ STDMETHOD(EditProperty)(DISPID);
+ END_INTERFACE_PART(PropertyPage)
+
+ BEGIN_INTERFACE_PART(PropNotifySink, IPropertyNotifySink)
+ INIT_INTERFACE_PART(COlePropertyPage, PropNotifySink)
+ STDMETHOD(OnRequestEdit)(DISPID);
+ STDMETHOD(OnChanged)(DISPID);
+ END_INTERFACE_PART(PropNotifySink)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Property Page Dialog Data Exchange routines
+
+// simple text operations
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, BYTE& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, UINT& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, long& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, DWORD& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, float& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, double& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Check(CDataExchange*pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Radio(CDataExchange*pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_LBString(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_LBStringExact(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_LBIndex(CDataExchange* pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_CBString(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_CBStringExact(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_CBIndex(CDataExchange* pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_PostProcessing(CDataExchange *pDX);
+
+////////////////////////////////////////////////////////////////////////////
+// AfxOleTypeMatchGuid - Tests whether a given TYPEDESC matches a type with a
+// given GUID, when all aliases have been expanded.
+
+BOOL AFXAPI AfxOleTypeMatchGuid(LPTYPEINFO pTypeInfo,
+ TYPEDESC* pTypeDesc, REFGUID guidType, ULONG cIndirectionLevels);
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCTL_INLINE inline
+#include <afxctl.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXCTL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxctl.inl b/public/sdk/inc/mfc40/afxctl.inl
new file mode 100644
index 000000000..d9608fcf2
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxctl.inl
@@ -0,0 +1,79 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCTL.H
+
+#ifdef _AFXCTL_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+
+// COleControl inlines
+_AFXCTL_INLINE BOOL COleControl::IsConvertingVBX()
+ { return m_bConvertVBX; }
+_AFXCTL_INLINE void COleControl::FireKeyDown(USHORT* pnChar, short nShiftState)
+ { FireEvent(DISPID_KEYDOWN, EVENT_PARAM(VTS_PI2 VTS_I2), pnChar,
+ nShiftState); }
+_AFXCTL_INLINE void COleControl::FireKeyUp(USHORT* pnChar, short nShiftState)
+ { FireEvent(DISPID_KEYUP, EVENT_PARAM(VTS_PI2 VTS_I2), pnChar,
+ nShiftState); }
+_AFXCTL_INLINE void COleControl::FireKeyPress(USHORT* pnChar)
+ { FireEvent(DISPID_KEYPRESS, EVENT_PARAM(VTS_PI2), pnChar); }
+_AFXCTL_INLINE void COleControl::FireMouseDown(short nButton,
+ short nShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
+ { FireEvent(DISPID_MOUSEDOWN,
+ EVENT_PARAM(VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS),
+ nButton, nShiftState, x, y); }
+_AFXCTL_INLINE void COleControl::FireMouseUp(short nButton,
+ short nShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
+ { FireEvent(DISPID_MOUSEUP,
+ EVENT_PARAM(VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS),
+ nButton, nShiftState, x, y); }
+_AFXCTL_INLINE void COleControl::FireMouseMove(short nButton,
+ short nShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
+ { FireEvent(DISPID_MOUSEMOVE,
+ EVENT_PARAM(VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS),
+ nButton, nShiftState, x, y); }
+_AFXCTL_INLINE void COleControl::FireClick()
+ { FireEvent(DISPID_CLICK, EVENT_PARAM(VTS_NONE)); }
+_AFXCTL_INLINE void COleControl::FireDblClick()
+ { FireEvent(DISPID_DBLCLICK, EVENT_PARAM(VTS_NONE)); }
+_AFXCTL_INLINE BOOL COleControl::ExchangeVersion(
+ CPropExchange* pPX, DWORD dwVersionDefault, BOOL bConvert)
+ { return pPX->ExchangeVersion(m_dwVersionLoaded, dwVersionDefault, bConvert); }
+
+// CPropExchange inlines
+_AFXCTL_INLINE CPropExchange::CPropExchange() : m_dwVersion(0)
+ { }
+_AFXCTL_INLINE BOOL CPropExchange::IsLoading()
+ { return m_bLoading; }
+_AFXCTL_INLINE DWORD CPropExchange::GetVersion()
+ { return m_dwVersion; }
+
+// inline DDP_ routines
+_AFXCTL_INLINE void AFXAPI DDP_LBString(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_LBStringExact(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_LBIndex(CDataExchange* pDX, int id,
+ int& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_CBString(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_CBStringExact(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_CBIndex(CDataExchange* pDX, int id,
+ int& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+
+#endif //_AFXCTL_INLINE
diff --git a/public/sdk/inc/mfc40/afxctl.rc b/public/sdk/inc/mfc40/afxctl.rc
new file mode 100644
index 000000000..936f57423
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxctl.rc
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Property &Name:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Font:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "Font St&yle:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Size:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effects",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Stri&keout",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Underline",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Sample",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Property &Name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "System &Color:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Property &Name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Browse...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Clear",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Preview:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Unknown)"
+ AFX_IDS_COLOR_DESKTOP "Desktop"
+ AFX_IDS_COLOR_APPWORKSPACE "Application Workspace"
+ AFX_IDS_COLOR_WNDBACKGND "Window Background"
+ AFX_IDS_COLOR_WNDTEXT "Window Text"
+ AFX_IDS_COLOR_MENUBAR "Menu Bar"
+ AFX_IDS_COLOR_MENUTEXT "Menu Text"
+ AFX_IDS_COLOR_ACTIVEBAR "Active Title Bar"
+ AFX_IDS_COLOR_INACTIVEBAR "Inactive Title Bar"
+ AFX_IDS_COLOR_ACTIVETEXT "Active Title Bar Text"
+ AFX_IDS_COLOR_INACTIVETEXT "Inactive Title Bar Text"
+ AFX_IDS_COLOR_ACTIVEBORDER "Active Border"
+ AFX_IDS_COLOR_INACTIVEBORDER "Inactive Border"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_COLOR_WNDFRAME "Window Frame"
+ AFX_IDS_COLOR_SCROLLBARS "Scroll Bars"
+ AFX_IDS_COLOR_BTNFACE "Button Face"
+ AFX_IDS_COLOR_BTNSHADOW "Button Shadow"
+ AFX_IDS_COLOR_BTNTEXT "Button Text"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Button Highlight"
+ AFX_IDS_COLOR_DISABLEDTEXT "Disabled Text"
+ AFX_IDS_COLOR_HIGHLIGHT "Highlight"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Highlighted Text"
+ AFX_IDS_REGULAR "Regular"
+ AFX_IDS_BOLD "Bold"
+ AFX_IDS_ITALIC "Italic"
+ AFX_IDS_BOLDITALIC "Bold Italic"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+ AFX_IDS_DISPLAYSTRING_FONT "(Font)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Color)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Picture - %s)"
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico|Metafiles (*.wmf;*.emf)|*.emf;*.wmf|All files (*.*)|*.*||"
+ AFX_IDS_PICTYPE_UNKNOWN "Unknown"
+ AFX_IDS_PICTYPE_NONE "None"
+ AFX_IDS_PICTYPE_BITMAP "Bitmap"
+ AFX_IDS_PICTYPE_METAFILE "Metafile"
+ AFX_IDS_PICTYPE_ICON "Icon"
+ AFX_IDS_COLOR_PPG "Color Property Page"
+ AFX_IDS_COLOR_PPG_CAPTION "Colors"
+ AFX_IDS_FONT_PPG "Font Property Page"
+ AFX_IDS_FONT_PPG_CAPTION "Fonts"
+ AFX_IDS_PICTURE_PPG "Picture Property Page"
+ AFX_IDS_PICTURE_PPG_CAPTION "Pictures"
+ AFX_IDS_BORDERSTYLE_0 "0 - None"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fixed Single"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Edit"
+ AFX_IDS_VERB_PROPERTIES "&Properties..."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Unable to open the picture file %1. The file may not exist, or may not be readable."
+ AFX_IDP_PICTURECANTLOAD "Unable to load the picture file %1. The file may have an invalid format."
+ AFX_IDP_PICTURETOOLARGE "Unable to load the picture file %1. The file is too large to fit in memory."
+ AFX_IDP_PICTUREREADFAILED
+ "Unable to load the picture file %1. Unexplained read failure."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Browse Pictures"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Illegal function call"
+ AFX_IDP_E_OVERFLOW "Overflow"
+ AFX_IDP_E_OUTOFMEMORY "Out of memory"
+ AFX_IDP_E_DIVISIONBYZERO "Division by zero"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Out of string space"
+ AFX_IDP_E_OUTOFSTACKSPACE "Out of stack space"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Bad file name or number"
+ AFX_IDP_E_FILENOTFOUND "File not found"
+ AFX_IDP_E_BADFILEMODE "Bad file mode"
+ AFX_IDP_E_FILEALREADYOPEN "File already open"
+ AFX_IDP_E_DEVICEIOERROR "Device I/O error"
+ AFX_IDP_E_FILEALREADYEXISTS "File already exists"
+ AFX_IDP_E_BADRECORDLENGTH "Bad record length"
+ AFX_IDP_E_DISKFULL "Disk full"
+ AFX_IDP_E_BADRECORDNUMBER "Bad record number"
+ AFX_IDP_E_BADFILENAME "Bad file name"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Too many files"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Device unavailable"
+ AFX_IDP_E_PERMISSIONDENIED "Permission denied"
+ AFX_IDP_E_DISKNOTREADY "Disk not ready"
+ AFX_IDP_E_PATHFILEACCESSERROR "Path/File access error"
+ AFX_IDP_E_PATHNOTFOUND "Path not found"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Invalid pattern string"
+ AFX_IDP_E_INVALIDUSEOFNULL "Invalid use of null"
+ AFX_IDP_E_INVALIDFILEFORMAT "Invalid file format"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Invalid property value"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Invalid array index"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Property cannot be set at run time"
+ AFX_IDP_E_SETNOTSUPPORTED "Property is read-only"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Must specify array index when using property array"
+ AFX_IDP_E_SETNOTPERMITTED "Property cannot be set on this control"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "Property cannot be read at run time"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Property is write-only"
+ AFX_IDP_E_PROPERTYNOTFOUND "Property not found"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Invalid clipboard format"
+ AFX_IDP_E_INVALIDPICTURE "Invalid picture"
+ AFX_IDP_E_PRINTERERROR "Printer error"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Cannot create temporary file necessary to save"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Search text not found"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Replacement text too long"
+END
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/afxcview.h b/public/sdk/inc/mfc40/afxcview.h
new file mode 100644
index 000000000..a53a580b1
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxcview.h
@@ -0,0 +1,135 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCVIEW_H__
+#define __AFXCVIEW_H__
+
+#ifdef _AFX_NO_AFXCMN_SUPPORT
+ #error Windows common control classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifndef __AFXCMN_H__
+ #include <afxcmn.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXRICH - MFC RichEdit classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CView
+ //CCtrlView
+ class CListView;// list control view
+ class CTreeView;// tree control view
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CListView
+
+class CListView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CListView)
+
+// Construction
+public:
+ CListView();
+
+// Attributes
+public:
+ CListCtrl& GetListCtrl() const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+protected:
+ void RemoveImageList(int nImageList);
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+
+public:
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ //{{AFX_MSG(CListView)
+ afx_msg void OnNcDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTreeView
+
+class CTreeView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CTreeView)
+
+// Construction
+public:
+ CTreeView();
+
+// Attributes
+public:
+ CTreeCtrl& GetTreeCtrl() const;
+
+protected:
+ void RemoveImageList(int nImageList);
+
+public:
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ //{{AFX_MSG(CTreeView)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCVIEW_INLINE inline
+#include <afxcview.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXCVIEW_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxcview.inl b/public/sdk/inc/mfc40/afxcview.inl
new file mode 100644
index 000000000..40274d4c0
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxcview.inl
@@ -0,0 +1,29 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCVIEW.H
+
+#ifdef _AFXCVIEW_INLINE
+
+// CListView
+_AFXCVIEW_INLINE CListView::CListView() : CCtrlView(WC_LISTVIEW,
+ AFX_WS_DEFAULT_VIEW)
+ { }
+_AFXCVIEW_INLINE CListCtrl& CListView::GetListCtrl() const
+ { return *(CListCtrl*)this; }
+_AFXCVIEW_INLINE CTreeView::CTreeView() : CCtrlView(WC_TREEVIEW,
+ AFX_WS_DEFAULT_VIEW)
+ { }
+_AFXCVIEW_INLINE CTreeCtrl& CTreeView::GetTreeCtrl() const
+ { return *(CTreeCtrl*)this; }
+
+#endif //_AFXCVIEW_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxdao.h b/public/sdk/inc/mfc40/afxdao.h
new file mode 100644
index 000000000..1e5ff4443
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdao.h
@@ -0,0 +1,1318 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDAO_H
+#define __AFXDAO_H
+
+#ifdef _AFX_NO_DAO_SUPPORT
+ #error DAO Database classes not supported in this library variant.
+#endif
+
+#ifndef __AFXDISP_H__
+ #include <afxdisp.h> // Must include this before dao headers
+#endif
+#ifndef _DBDAOINT_H_
+ #include <dbdaoint.h>
+#endif
+#ifndef _DAOGETRW_H_
+ #include <daogetrw.h>
+#endif
+#ifndef _DBDAOID_H_
+ #include <dbdaoid.h>
+#endif
+#ifndef _DBDAOERR_H_
+ #include <dbdaoerr.h>
+#endif
+
+#ifndef __AFXDB__H__
+ #include <afxdb_.h> // shared header with ODBC database classes
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfco40d.lib")
+ #pragma comment(lib, "mfcd40d.lib")
+ #else
+ #pragma comment(lib, "mfco40ud.lib")
+ #pragma comment(lib, "mfcd40ud.lib")
+ #endif
+ #endif
+
+#endif
+
+// DAO GUIDs in uuid2.lib
+#pragma comment(lib, "uuid2.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+////////////////////////////////////////////////////////////////////////
+// AFXDAO - MFC Database support using DAO
+
+// Classes declared in this file
+
+ // CException
+ class CDaoException; // DAO error/exception handling
+
+ // CObject
+ class CDaoRecordView;
+ class CDaoWorkspace; // DAO engine/transaction/security manager
+ class CDaoDatabase; // DAO database manager
+ class CDaoRecordset; // DAO result set manager
+ class CDaoTableDef; // DAO base table manager
+ class CDaoQueryDef; // DAO query manager
+
+ // Non-CObject classes
+ class CDaoFieldExchange;
+ struct CDaoFieldCache;
+ struct CDaoErrorInfo;
+ struct CDaoWorkspaceInfo;
+ struct CDaoDatabaseInfo;
+ struct CDaoTableDefInfo;
+ struct CDaoFieldInfo;
+ struct CDaoIndexInfo;
+ struct CDaoRelationInfo;
+ struct CDaoQueryDefInfo;
+ struct CDaoParameterInfo;
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLL support
+
+#undef AFX_DATA
+#define AFX_DATA AFX_DB_DATA
+
+////////////////////////////////////////////////////////////////////////
+// Data caching structures
+struct CDaoFieldCache
+{
+ void* m_pvData; // Pointer to cached data of any supported type.
+ BYTE m_nStatus; // (NULL) status cache.
+ BYTE m_nDataType; // Type of data cached.
+};
+
+////////////////////////////////////////////////////////////////////////
+// Info structures
+
+struct CDaoErrorInfo
+{
+// Attributes
+ long m_lErrorCode;
+ CString m_strSource;
+ CString m_strDescription;
+ CString m_strHelpFile;
+ long m_lHelpContext;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoWorkspaceInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ CString m_strUserName; // Secondary
+ BOOL m_bIsolateODBCTrans; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoDatabaseInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bUpdatable; // Primary
+ BOOL m_bTransactions; // Primary
+ CString m_strVersion; // Secondary
+ long m_lCollatingOrder; // Secondary
+ short m_nQueryTimeout; // Secondary
+ CString m_strConnect; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoTableDefInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bUpdatable; // Primary
+ long m_lAttributes; // Primary
+ COleDateTime m_dateCreated; // Secondary
+ COleDateTime m_dateLastUpdated; // Secondary
+ CString m_strSrcTableName; // Secondary
+ CString m_strConnect; // Secondary
+ CString m_strValidationRule; // All
+ CString m_strValidationText; // All
+ long m_lRecordCount; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ long m_lSize; // Primary
+ long m_lAttributes; // Primary
+ short m_nOrdinalPosition; // Secondary
+ BOOL m_bRequired; // Secondary
+ BOOL m_bAllowZeroLength; // Secondary
+ long m_lCollatingOrder; // Secondary
+ CString m_strForeignName; // Secondary
+ CString m_strSourceField; // Secondary
+ CString m_strSourceTable; // Secondary
+ CString m_strValidationRule; // All
+ CString m_strValidationText; // All
+ CString m_strDefaultValue; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoIndexFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bDescending; // Primary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoIndexInfo
+{
+// Constructors
+ CDaoIndexInfo();
+
+// Attributes
+ CString m_strName; // Primary
+ CDaoIndexFieldInfo* m_pFieldInfos; // Primary
+ short m_nFields; // Primary
+ BOOL m_bPrimary; // Secondary
+ BOOL m_bUnique; // Secondary
+ BOOL m_bClustered; // Secondary
+ BOOL m_bIgnoreNulls; // Secondary
+ BOOL m_bRequired; // Secondary
+ BOOL m_bForeign; // Secondary
+ long m_lDistinctCount; // All
+
+// Implementation
+ virtual ~CDaoIndexInfo();
+ BOOL m_bCleanupFieldInfo;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoRelationFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ CString m_strForeignName; // Primary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoRelationInfo
+{
+// Constructor
+ CDaoRelationInfo();
+
+// Attributes
+ CString m_strName; // Primary
+ CString m_strTable; // Primary
+ CString m_strForeignTable; // Primary
+ long m_lAttributes; // Secondary
+ CDaoRelationFieldInfo* m_pFieldInfos; // Secondary
+ short m_nFields; // Secondary
+
+// Implementation
+ virtual ~CDaoRelationInfo();
+ BOOL m_bCleanupFieldInfo;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoQueryDefInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ COleDateTime m_dateCreated; // Secondary
+ COleDateTime m_dateLastUpdated; // Secondary
+ BOOL m_bUpdatable; // Secondary
+ BOOL m_bReturnsRecords; // Secondary
+ CString m_strSQL; // All
+ CString m_strConnect; // All
+ short m_nODBCTimeout; // See readme
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoParameterInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ COleVariant m_varValue; // Secondary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+////////////////////////////////////////////////////////////////////////
+// DAO Helpers
+//
+
+// Flags for getting and/or setting object properties
+#define AFX_DAO_PRIMARY_INFO 0x00000001 // Get only primary
+#define AFX_DAO_SECONDARY_INFO 0x00000002 // Get primary & secondary
+#define AFX_DAO_ALL_INFO 0x00000004 // Get All info
+
+// Jet engine TRUE/FALSE definitions
+#define AFX_DAO_TRUE (-1L)
+#define AFX_DAO_FALSE 0
+
+// Set CDaoRecordset::Open option to use m_nDefaultType
+#define AFX_DAO_USE_DEFAULT_TYPE (-1L)
+
+// Flags used for Move/Find
+#define AFX_DAO_NEXT (+1L)
+#define AFX_DAO_PREV (-1L)
+#define AFX_DAO_FIRST LONG_MIN
+#define AFX_DAO_LAST LONG_MAX
+
+// Default sizes for DFX function PreAlloc sizes
+#define AFX_DAO_TEXT_DEFAULT_SIZE 255
+#define AFX_DAO_BINARY_DEFAULT_SIZE 2048
+#define AFX_DAO_LONGBINARY_DEFAULT_SIZE 32768
+
+// Flag used for DFX functions dwBindOptions bitmask
+#define AFX_DAO_ENABLE_FIELD_CACHE 0x01
+#define AFX_DAO_DISABLE_FIELD_CACHE 0
+
+// Field Flags, used to indicate status of fields
+#define AFX_DAO_FIELD_FLAG_DIRTY 0x01
+#define AFX_DAO_FIELD_FLAG_NULL 0x02
+#define AFX_DAO_FIELD_FLAG_NULLABLE_KNOWN 0x04
+#define AFX_DAO_FIELD_FLAG_NULLABLE 0x08
+
+// Extended error codes
+#define NO_AFX_DAO_ERROR 0
+#define AFX_DAO_ERROR_MIN 2000
+#define AFX_DAO_ERROR_ENGINE_INITIALIZATION AFX_DAO_ERROR_MIN + 0
+#define AFX_DAO_ERROR_DFX_BIND AFX_DAO_ERROR_MIN + 1
+#define AFX_DAO_ERROR_OBJECT_NOT_OPEN AFX_DAO_ERROR_MIN + 2
+#define AFX_DAO_ERROR_MAX AFX_DAO_ERROR_MIN + 2
+
+// Object status flags
+#define AFX_DAO_IMPLICIT_WS 0x01
+#define AFX_DAO_IMPLICIT_DB 0x02
+#define AFX_DAO_IMPLICIT_QD 0x04
+#define AFX_DAO_IMPLICIT_TD 0x08
+#define AFX_DAO_IMPLICIT_CLOSE 0x40
+#define AFX_DAO_DEFAULT_WS 0x80
+
+// CDaoRecordView status flags
+#define AFX_DAOVIEW_SCROLL_NEXT 0x01
+#define AFX_DAOVIEW_SCROLL_LAST 0x02
+#define AFX_DAOVIEW_SCROLL_BACKWARD 0x04
+
+// Logging helpers
+void AFXAPI AfxDaoCheck(SCODE scode, LPCSTR lpszDaoCall,
+ LPCSTR lpszFile, int nLine, int nError = NO_AFX_DAO_ERROR,
+ BOOL bMemOnly = FALSE);
+
+#ifdef _DEBUG
+void AFXAPI AfxDaoTrace(SCODE scode, LPCSTR lpszDaoCall,
+ LPCSTR lpszFile, int nLine);
+#endif
+
+#ifdef _DEBUG
+#define DAO_CHECK(f) AfxDaoCheck(f, #f, THIS_FILE, __LINE__)
+#define DAO_CHECK_ERROR(f, err) AfxDaoCheck(f, #f, THIS_FILE, __LINE__, err)
+#define DAO_CHECK_MEM(f) AfxDaoCheck(f, #f, THIS_FILE, __LINE__, \
+ NO_AFX_DAO_ERROR, TRUE)
+#define DAO_TRACE(f) AfxDaoTrace(f, #f, THIS_FILE, __LINE__)
+#else
+#define DAO_CHECK(f) AfxDaoCheck(f, NULL, NULL, 0)
+#define DAO_CHECK_ERROR(f, err) AfxDaoCheck(f, NULL, NULL, 0, err)
+#define DAO_CHECK_MEM(f) AfxDaoCheck(f, NULL, NULL, 0, \
+ NO_AFX_DAO_ERROR, TRUE)
+#define DAO_TRACE(f) f
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CDaoFieldExchange - for field exchange
+class CDaoFieldExchange
+{
+// Attributes
+public:
+ enum DFX_Operation
+ {
+ AddToParameterList, // builds PARAMETERS clause
+ AddToSelectList, // builds SELECT clause
+ BindField, // sets up binding structure
+ BindParam, // sets parameter values
+ Fixup, // sets NULL status
+ AllocCache, // allocates cache used for dirty check
+ StoreField, // saves current record to cache
+ LoadField, // restores cached data to member vars
+ FreeCache, // frees cache
+ SetFieldNull, // sets field status & value to NULL
+ MarkForAddNew, // marks fields dirty if not PSEUDO NULL
+ MarkForEdit, // marks fields dirty if don't match cache
+ SetDirtyField, // sets field values marked as dirty
+#ifdef _DEBUG
+ DumpField,
+#endif
+ MaxDFXOperation, // dummy operation type for input checking
+ };
+
+ UINT m_nOperation; // type of exchange operation
+ CDaoRecordset* m_prs; // recordset handle
+
+// Operations
+public:
+ enum FieldType
+ {
+ none,
+ outputColumn,
+ param,
+ };
+
+ void SetFieldType(UINT nFieldType);
+ BOOL IsValidOperation();
+
+// Implementation
+public:
+ CDaoFieldExchange(UINT nOperation, CDaoRecordset* prs,
+ void* pvField = NULL);
+
+ void Default(LPCTSTR lpszName, void* pv, DWORD dwFieldType,
+ DWORD dwBindOptions = 0);
+
+ static void PASCAL AppendParamType(CString& strParamList, DWORD dwParamType);
+ static CDaoFieldCache* PASCAL GetCacheValue(CDaoRecordset* prs, void* pv);
+ static void PASCAL SetNullValue(void* pv, DWORD dwDataType);
+ static BOOL PASCAL IsNullValue(void* pv, DWORD dwDataType);
+ static void PASCAL AllocCacheValue(CDaoFieldCache*& pCache, DWORD dwDataType);
+ static void PASCAL DeleteCacheValue(CDaoFieldCache* pCache, DWORD dwDataType);
+ static void PASCAL CopyValue(void* pvSrc, void* pvDest, DWORD dwDataType);
+ static BOOL PASCAL CompareValue(void* pvSrc, void* pvDest, DWORD dwDataType);
+ static void PASCAL FillVariant(void* pvValue, DWORD dwDataType, COleVariant** ppVar);
+
+ // Current type of field
+ UINT m_nFieldType;
+ void* m_pvField;
+ UINT m_nField;
+ UINT m_nParam;
+ UINT m_nFieldFound;
+
+#ifdef _DEBUG
+ CDumpContext* m_pdcDump;
+#endif //_DEBUG
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard RecordSet Field Exchange routines
+
+// variable length data
+void AFXAPI DFX_Text(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CString& value, int nPreAllocSize = AFX_DAO_TEXT_DEFAULT_SIZE,
+ DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Binary(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CByteArray& value, int nPreAllocSize = AFX_DAO_BINARY_DEFAULT_SIZE,
+ DWORD dwBindOptions = 0);
+void AFXAPI DFX_LongBinary(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CLongBinary& value, DWORD dwPreAllocSize = AFX_DAO_LONGBINARY_DEFAULT_SIZE,
+ DWORD dwBndOptions = 0);
+
+//fixed length data
+void AFXAPI DFX_Bool(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ BOOL& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Byte(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ BYTE& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Short(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ short& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Long(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ long& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Currency(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ COleCurrency& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Single(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ float& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Double(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ double& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_DateTime(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ COleDateTime& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+
+//////////////////////////////////////////////////////////////////////////
+// Database Dialog Data Exchange cover routines
+// Cover routines provide database semantics on top of DDX routines
+
+// simple text operations
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BOOL& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BYTE& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, short& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, long& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, COleCurrency& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, DWORD& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, float& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, double& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, COleDateTime& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+
+// special control types
+void AFXAPI DDX_FieldCheck(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldRadio(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBString(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBString(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBIndex(CDataExchange* pDX, int nIDC, int& index,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBIndex(CDataExchange* pDX, int nIDC, int& index,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldScroll(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+
+////////////////////////////////////////////////////////////////////////
+// CDaoWorkspace - a DAO Workspace
+
+class CDaoWorkspace : public CObject
+{
+ DECLARE_DYNAMIC(CDaoWorkspace)
+
+// Constructors
+public:
+ CDaoWorkspace();
+
+ virtual void Create(LPCTSTR lpszName, LPCTSTR lpszUserName,
+ LPCTSTR lpszPassword);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName = NULL);
+ virtual void Close();
+
+// Attributes
+public:
+ DAOWorkspace* m_pDAOWorkspace;
+
+ static CString PASCAL GetVersion();
+ static CString PASCAL GetIniPath();
+ static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);
+ static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);
+ static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);
+ static short PASCAL GetLoginTimeout();
+ static void PASCAL SetLoginTimeout(short nSeconds);
+
+ CString GetName();
+ CString GetUserName();
+ void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);
+ BOOL GetIsolateODBCTrans();
+
+ BOOL IsOpen() const;
+
+// Operations
+public:
+ void BeginTrans();
+ void CommitTrans();
+ void Rollback();
+
+ static void PASCAL CompactDatabase(LPCTSTR lpszSrcName,
+ LPCTSTR lpszDestName, LPCTSTR lpszLocale = dbLangGeneral,
+ int nOptions = 0);
+ // Password parameter added late in dev cycle, new interface req'd
+ static void PASCAL CompactDatabase(LPCTSTR lpszSrcName,
+ LPCTSTR lpszDestName, LPCTSTR lpszLocale, int nOptions,
+ LPCTSTR lpszPassword);
+ static void PASCAL RepairDatabase(LPCTSTR lpszName);
+
+ static void PASCAL Idle(int nAction = dbFreeLocks);
+
+ short GetWorkspaceCount();
+ void GetWorkspaceInfo(int nIndex, CDaoWorkspaceInfo& wkspcinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetWorkspaceInfo(LPCTSTR lpszName, CDaoWorkspaceInfo& wkspcinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetDatabaseCount();
+ void GetDatabaseInfo(int nIndex, CDaoDatabaseInfo& dbinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetDatabaseInfo(LPCTSTR lpszName, CDaoDatabaseInfo& dbinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ virtual ~CDaoWorkspace();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOWorkspaces* m_pDAOWorkspaces;
+ DAODatabases* m_pDAODatabases;
+ int m_nStatus;
+
+ CMapPtrToPtr m_mapDatabases; // Map of all Open CDaoDatabases
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ static void AFX_CDECL InitializeEngine();
+
+ void InitWorkspacesCollection();
+ void FillWorkspaceInfo(DAOWorkspace* pDAOWorkspace,
+ CDaoWorkspaceInfo& wsinfo, DWORD dwOptions);
+
+ void InitDatabasesCollection();
+ void FillDatabaseInfo(DAODatabase* pDAODatabase,
+ CDaoDatabaseInfo& dbinfo, DWORD dwOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+////////////////////////////////////////////////////////////////////////
+// CDaoException - DAO error trapping mechanism
+class CDaoException : public CException
+{
+ DECLARE_DYNAMIC(CDaoException)
+
+// Constructors
+public:
+ CDaoException();
+
+// Attributes
+public:
+ CDaoErrorInfo* m_pErrorInfo;
+
+ SCODE m_scode;
+ int m_nAfxDaoError; // DAO class extended error code
+
+// Operations
+public:
+ short GetErrorCount();
+ void GetErrorInfo(int nIndex);
+
+// Implementation
+public:
+ virtual ~CDaoException();
+
+ DAOError* m_pDAOError;
+ DAOErrors* m_pDAOErrors;
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+protected:
+ void InitErrorsCollection();
+ void FillErrorInfo();
+};
+
+void AFXAPI AfxThrowDaoException(int nAfxDaoError = NO_AFX_DAO_ERROR,
+ SCODE scode = S_OK);
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoDatabase - a DAO Database
+
+class CDaoDatabase : public CObject
+{
+ DECLARE_DYNAMIC(CDaoDatabase)
+
+// Constructors
+public:
+ CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);
+
+ virtual void Create(LPCTSTR lpszName,
+ LPCTSTR lpszLocale = dbLangGeneral, int dwOptions = 0);
+
+ virtual void Open(LPCTSTR lpszName, BOOL bExclusive = FALSE,
+ BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = _T(""));
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoWorkspace* m_pWorkspace;
+ DAODatabase* m_pDAODatabase;
+
+ BOOL IsOpen() const;
+
+ BOOL CanUpdate();
+ BOOL CanTransact();
+
+ CString GetName();
+ CString GetConnect();
+
+ CString GetVersion();
+ short GetQueryTimeout();
+ void SetQueryTimeout(short nSeconds);
+ long GetRecordsAffected();
+
+// Operations
+public:
+ void Execute(LPCTSTR lpszSQL, int nOptions = dbFailOnError);
+
+ void DeleteTableDef(LPCTSTR lpszName);
+ void DeleteQueryDef(LPCTSTR lpszName);
+
+ void CreateRelation(LPCTSTR lpszName, LPCTSTR lpszTable,
+ LPCTSTR lpszForeignTable, long lAttributes,
+ LPCTSTR lpszField, LPCTSTR lpszForeignField);
+ void CreateRelation(CDaoRelationInfo& relinfo);
+ void DeleteRelation(LPCTSTR lpszName);
+
+ short GetTableDefCount();
+ void GetTableDefInfo(int nIndex, CDaoTableDefInfo& tabledefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetTableDefInfo(LPCTSTR lpszName, CDaoTableDefInfo& tabledefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetRelationCount();
+ void GetRelationInfo(int nIndex, CDaoRelationInfo& relinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetRelationInfo(LPCTSTR lpszName, CDaoRelationInfo& relinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetQueryDefCount();
+ void GetQueryDefInfo(int nIndex, CDaoQueryDefInfo& querydefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetQueryDefInfo(LPCTSTR lpszName, CDaoQueryDefInfo& querydefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ virtual ~CDaoDatabase();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOTableDefs* m_pDAOTableDefs;
+ DAORelations* m_pDAORelations;
+ DAOQueryDefs* m_pDAOQueryDefs;
+ DAORecordsets* m_pDAORecordsets;
+ int m_nStatus;
+
+ CMapPtrToPtr m_mapTableDefs; // Map of all Open CDaoTableDefs
+ CMapPtrToPtr m_mapQueryDefs; // Map of all Open CDaoQueryDefs
+ CMapPtrToPtr m_mapRecordsets; // Map of all Open CDaoRecordsets
+
+protected:
+ BOOL m_bOpen;
+
+ void InitWorkspace();
+ void InitTableDefsCollection();
+ void FillTableDefInfo(DAOTableDef* pDAOTableDef,
+ CDaoTableDefInfo& tabledefinfo, DWORD dwOptions);
+ void InitRelationsCollection();
+ void FillRelationInfo(DAORelation* pDAORelation,
+ CDaoRelationInfo& relinfo, DWORD dwOptions);
+ void InitQueryDefsCollection();
+ void FillQueryDefInfo(DAOQueryDef* pDAOQueryDef,
+ CDaoQueryDefInfo& querydefinfo, DWORD dwOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoTableDef - a DAO TableDef
+
+class CDaoTableDef : public CObject
+{
+ DECLARE_DYNAMIC(CDaoTableDef)
+
+// Constructors
+public:
+ CDaoTableDef(CDaoDatabase* pDatabase);
+
+ virtual void Create(LPCTSTR lpszName, long lAttributes = 0,
+ LPCTSTR lpszSrcTable = NULL, LPCTSTR lpszConnect = NULL);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase;
+ DAOTableDef* m_pDAOTableDef;
+
+ BOOL IsOpen() const;
+ BOOL CanUpdate();
+
+ void SetName(LPCTSTR lpszName);
+ CString GetName();
+ void SetSourceTableName(LPCTSTR lpszSrcTableName);
+ CString GetSourceTableName();
+ void SetConnect(LPCTSTR lpszConnect);
+ CString GetConnect();
+ void SetAttributes(long lAttributes);
+ long GetAttributes();
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ void SetValidationRule(LPCTSTR lpszValidationRule);
+ CString GetValidationRule();
+ void SetValidationText(LPCTSTR lpszValidationText);
+ CString GetValidationText();
+ long GetRecordCount();
+
+// Overridables
+public:
+
+// Operations
+public:
+ void CreateField(LPCTSTR lpszName, short nType, long lSize,
+ long lAttributes = 0);
+ void CreateField(CDaoFieldInfo& fieldinfo);
+ void DeleteField(LPCTSTR lpszName);
+ void DeleteField(int nIndex);
+
+ void CreateIndex(CDaoIndexInfo& indexinfo);
+ void DeleteIndex(LPCTSTR lpszName);
+ void DeleteIndex(int nIndex);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetIndexCount();
+ void GetIndexInfo(int nIndex, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetIndexInfo(LPCTSTR lpszName, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ void RefreshLink();
+
+// Implementation
+public:
+ ~CDaoTableDef();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOFields* m_pDAOFields;
+ DAOIndexes* m_pDAOIndexes;
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ void InitFieldsCollection();
+ void InitIndexesCollection();
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoQueryDef - a DAO QueryDef
+
+class CDaoQueryDef : public CObject
+{
+ DECLARE_DYNAMIC(CDaoQueryDef)
+
+// Constructors
+public:
+ CDaoQueryDef(CDaoDatabase* pDatabase);
+
+ virtual void Create(LPCTSTR lpszName = NULL,
+ LPCTSTR lpszSQL = NULL);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName = NULL);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase;
+ DAOQueryDef* m_pDAOQueryDef;
+
+ BOOL CanUpdate();
+
+ CString GetName();
+ void SetName(LPCTSTR lpszName);
+ CString GetSQL();
+ void SetSQL(LPCTSTR lpszSQL);
+ short GetType();
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ CString GetConnect();
+ void SetConnect(LPCTSTR lpszConnect);
+ short GetODBCTimeout();
+ void SetODBCTimeout(short nODBCTimeout);
+ BOOL GetReturnsRecords();
+ void SetReturnsRecords(BOOL bReturnsRecords);
+ long GetRecordsAffected();
+
+ BOOL IsOpen() const;
+
+// Operations
+public:
+ virtual void Execute(int nOptions = dbFailOnError);
+
+ virtual COleVariant GetParamValue(LPCTSTR lpszName);
+ virtual COleVariant GetParamValue(int nIndex);
+ virtual void SetParamValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetParamValue(int nIndex,
+ const COleVariant& varValue);
+ void SetParamValueNull(LPCTSTR lpszName);
+ void SetParamValueNull(int nIndex);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetParameterCount();
+ void GetParameterInfo(int nIndex, CDaoParameterInfo& paraminfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetParameterInfo(LPCTSTR lpszName,
+ CDaoParameterInfo& paraminfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ ~CDaoQueryDef();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOFields* m_pDAOFields;
+ DAOParameters* m_pDAOParameters;
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ void InitFieldsCollection();
+ void InitParametersCollection();
+ void FillParameterInfo(DAOParameter* pDAOParameter,
+ CDaoParameterInfo& paraminfo, DWORD dwInfoOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoRecordset - the result of a query or base table browse
+
+class CDaoRecordset : public CObject
+{
+ DECLARE_DYNAMIC(CDaoRecordset)
+
+// Constructor
+public:
+ CDaoRecordset(CDaoDatabase* pDatabase = NULL);
+
+ virtual void Open(int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
+ LPCTSTR lpszSQL = NULL, int nOptions = 0);
+ virtual void Open(CDaoQueryDef* pQueryDef,
+ int nOpenType = dbOpenDynaset, int nOptions = 0);
+ virtual void Open(CDaoTableDef* pTableDef,
+ int nOpenType = dbOpenTable, int nOptions = 0);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase; // Source database for this result set
+ DAORecordset* m_pDAORecordset;
+
+ CString m_strFilter; // Filter string used when constructing SQL
+ CString m_strSort; // Sort string used when constructing SQL
+
+ int m_nFields;
+ int m_nParams;
+
+ BOOL m_bCheckCacheForDirtyFields; // Switch for dirty field checking.
+
+ BOOL CanUpdate() const;
+ BOOL CanAppend() const;
+ BOOL CanScroll() const;
+ BOOL CanRestart();
+ BOOL CanTransact();
+ BOOL CanBookmark();
+
+ BOOL IsOpen() const;
+ BOOL IsBOF();
+ BOOL IsEOF();
+ BOOL IsDeleted() const;
+
+ BOOL IsFieldDirty(void* pv);
+ BOOL IsFieldNull(void* pv);
+ BOOL IsFieldNullable(void* pv);
+
+ CString GetName();
+ short GetType();
+ short GetEditMode();
+ CString GetSQL() const;
+
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ COleVariant GetLastModifiedBookmark();
+ CString GetValidationRule();
+ CString GetValidationText();
+ CString GetCurrentIndex();
+ void SetCurrentIndex(LPCTSTR lpszIndex);
+
+ long GetRecordCount();
+
+// Operations
+public:
+ // Cursor operations
+ void MoveNext();
+ void MovePrev();
+ void MoveFirst();
+ void MoveLast();
+ virtual void Move(long lRows);
+
+ BOOL FindNext(LPCTSTR lpszFilter);
+ BOOL FindPrev(LPCTSTR lpszFilter);
+ BOOL FindFirst(LPCTSTR lpszFilter);
+ BOOL FindLast(LPCTSTR lpszFilter);
+ virtual BOOL Find(long lFindType, LPCTSTR lpszFilter);
+
+ COleVariant GetBookmark();
+ void SetBookmark(COleVariant varBookmark);
+ long GetAbsolutePosition();
+ void SetAbsolutePosition(long lPosition);
+ float GetPercentPosition();
+ void SetPercentPosition(float fPosition);
+
+ // seek allowed on recordset opened as tables (max keys = 13)
+ BOOL Seek(LPCTSTR lpszComparison, COleVariant* pKey1,
+ COleVariant* pKey2 = NULL, COleVariant* pKey3 = NULL);
+ BOOL Seek(LPCTSTR lpszComparison, COleVariant* pKeyArray, WORD nKeys);
+
+ // edit buffer operations
+ virtual void AddNew();
+ virtual void Edit();
+ virtual void Update();
+ virtual void Delete();
+ virtual void CancelUpdate();
+
+ // field operations
+ virtual COleVariant GetFieldValue(LPCTSTR lpszName);
+ virtual COleVariant GetFieldValue(int nIndex);
+ virtual void SetFieldValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetFieldValue(int nIndex,
+ const COleVariant& varValue);
+ void SetFieldValue(int nIndex, LPCTSTR lpszValue);
+ void SetFieldValue(LPCTSTR lpszName, LPCTSTR lpszValue);
+ void SetFieldValueNull(LPCTSTR lpszName);
+ void SetFieldValueNull(int nIndex);
+
+ virtual COleVariant GetParamValue(LPCTSTR lpszName);
+ virtual COleVariant GetParamValue(int nIndex);
+ virtual void SetParamValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetParamValue(int nIndex,
+ const COleVariant& varValue);
+ void SetParamValueNull(LPCTSTR lpszName);
+ void SetParamValueNull(int nIndex);
+
+ void SetFieldDirty(void* pv, BOOL bDirty = TRUE);
+ void SetFieldNull(void* pv, BOOL bNull = TRUE);
+
+ void SetLockingMode(BOOL bPessimistic);
+ BOOL GetLockingMode();
+
+ // Recordset operations
+ virtual void Requery();
+
+ // Jet's remote data caching operations
+ void SetCacheStart(COleVariant varBookmark);
+ COleVariant GetCacheStart();
+ void SetCacheSize(long lSize);
+ long GetCacheSize();
+ void FillCache(long* pSize = NULL, COleVariant* pBookmark = NULL);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetIndexCount();
+ void GetIndexInfo(int nIndex, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetIndexInfo(LPCTSTR lpszName, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+ virtual CString GetDefaultDBName();
+ virtual CString GetDefaultSQL();
+
+ // for recordset field exchange
+ virtual void DoFieldExchange(CDaoFieldExchange* pFX);
+
+// Implementation
+public:
+ virtual ~CDaoRecordset();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ CString m_strSQL;
+
+ CDaoQueryDef* m_pQueryDef; // Source query for this result set
+ CDaoTableDef* m_pTableDef;
+ ICDAORecordset* m_pICDAORecordsetGetRows;
+ DAOFields* m_pDAOFields;
+ DAOIndexes* m_pDAOIndexes;
+
+ void ResetCursor();
+ void SetCursorAttributes();
+ void ResetCursorAttributes();
+ void GetDataAndFixupNulls();
+ DWORD GetFieldLength(int nFieldIndex);
+
+ BOOL IsFieldStatusDirty(UINT nField);
+ void SetDirtyFieldStatus(UINT nField);
+ void ClearDirtyFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNull(UINT nField);
+ void SetNullFieldStatus(UINT nField);
+ void ClearNullFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNullable(UINT nField);
+ void SetNullableFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNullableKnown(UINT nField);
+ void SetNullableKnownFieldStatus(UINT nField);
+
+ void ClearFieldStatusFlags();
+ BOOL IsMatch();
+
+ DWORD m_cbFixedLengthFields;
+ DAOCOLUMNBINDING* m_prgDaoColBindInfo;
+ DWORD* m_pulColumnLengths;
+ DAOFETCHROWS m_DaoFetchRows;
+ BYTE* m_pbFieldFlags;
+ BYTE* m_pbParamFlags;
+
+ CMapPtrToPtr* m_pMapFieldCache;
+ CMapPtrToPtr* m_pMapFieldIndex;
+
+ static void AFX_CDECL StripBrackets(LPCTSTR lpszSrc, LPTSTR lpszDest);
+
+protected:
+ BOOL m_bOpen;
+ int m_nStatus;
+
+ BOOL m_bAppendable;
+ BOOL m_bScrollable;
+ BOOL m_bDeleted;
+
+ int m_nOpenType;
+ int m_nDefaultType;
+ int m_nOptions;
+
+ CString m_strRequerySQL;
+ CString m_strRequeryFilter;
+ CString m_strRequerySort;
+
+ void BuildSQL();
+ void AllocDatabase();
+
+ // RFX Operation Cover Functions
+ void BuildSelectList();
+ void BuildParameterList();
+ void BindFields();
+ void BindParameters();
+ void Fixup();
+ void AllocCache();
+ void StoreFields();
+ void LoadFields();
+ void FreeCache();
+ void MarkForEdit();
+ void MarkForAddNew();
+ int GetFieldIndex(void* pv);
+ virtual void SetDirtyFields();
+
+ void InitFieldsCollection();
+ void InitIndexesCollection();
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+
+ friend class CDaoFieldExchange;
+ friend class CDaoRecordView;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDaoRecordView - form for viewing data records
+
+class CDaoRecordView : public CFormView
+{
+ DECLARE_DYNAMIC(CDaoRecordView)
+
+// Construction
+protected: // must derive your own class
+ CDaoRecordView(LPCTSTR lpszTemplateName);
+ CDaoRecordView(UINT nIDTemplate);
+
+// Attributes
+public:
+ virtual CDaoRecordset* OnGetRecordset() = 0;
+
+ BOOL IsOnLastRecord();
+ BOOL IsOnFirstRecord();
+
+// Operations
+public:
+ virtual BOOL OnMove(UINT nIDMoveCommand);
+
+// Implementation
+public:
+ virtual ~CDaoRecordView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ int m_nStatus;
+ COleVariant m_varBookmarkCurrent;
+ COleVariant m_varBookmarkFirst;
+ COleVariant m_varBookmarkLast;
+
+ //{{AFX_MSG(CDaoRecordView)
+ afx_msg void OnUpdateRecordFirst(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordPrev(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordNext(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordLast(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ afx_msg void OnMove(int cx, int cy);
+
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// DAODBEngine helpers - implementation specific and undocumented
+void AFXAPI AfxDaoInit();
+DAODBEngine* AFXAPI AfxDaoGetEngine();
+void AFXAPI AfxDaoTerm();
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDAOCORE_INLINE inline
+#define _AFXDAODFX_INLINE inline
+#define _AFXDAOVIEW_INLINE inline
+#include <afxdao.inl>
+#undef _AFXDAOCORE_INLINE
+#undef _AFXDAODFX_INLINE
+#undef _AFXDAOVIEW_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDAO_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxdao.inl b/public/sdk/inc/mfc40/afxdao.inl
new file mode 100644
index 000000000..da978d945
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdao.inl
@@ -0,0 +1,75 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDAO.H
+
+/////////////////////////////////////////////////////////////////////////////
+// General database inlines
+
+#ifdef _AFXDAOCORE_INLINE
+
+// CDaoWorkspace inlines
+_AFXDAOCORE_INLINE BOOL CDaoWorkspace::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+// CDaoDatabase inlines
+_AFXDAOCORE_INLINE BOOL CDaoDatabase::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+// CDaoTableDef inlines
+_AFXDAOCORE_INLINE BOOL CDaoTableDef::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+// CDaoQueryDef inlines
+_AFXDAOCORE_INLINE BOOL CDaoQueryDef::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+// CDaoRecordset inlines
+_AFXDAOCORE_INLINE BOOL CDaoRecordset::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+#endif // _AFXDAOCORE_INLINE
+
+
+#ifdef _AFXDAODFX_INLINE
+
+// CDaoFieldExchange
+_AFXDAODFX_INLINE void CDaoFieldExchange::SetFieldType(UINT nFieldType)
+{ ASSERT(nFieldType == outputColumn || nFieldType == param);
+ m_nFieldType = nFieldType; }
+
+#endif // _AFXDAODFX_INLINE
+
+
+#ifdef _AFXDAOVIEW_INLINE
+
+// CDaoRecordView inlines
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordFirst(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_BACKWARD); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordNext(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_NEXT); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordPrev(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_BACKWARD); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordLast(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_LAST); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnMove(int cx, int cy)
+ { CFormView::OnMove(cx, cy); }
+
+#endif // _AFXDAOVIEW_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxdb.h b/public/sdk/inc/mfc40/afxdb.h
new file mode 100644
index 000000000..80574b43f
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdb.h
@@ -0,0 +1,838 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_H__
+#define __AFXDB_H__
+
+#ifdef _AFX_NO_DB_SUPPORT
+ #error Database classes not supported in this library variant.
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h>
+#endif
+
+#ifndef __AFXDB__H__
+ #include <afxdb_.h> // shared header DAO database classes
+#endif
+
+// include standard SQL/ODBC "C" APIs
+#ifndef __SQL
+ #include <sql.h> // core
+#endif
+#ifndef __SQLEXT
+ #include <sqlext.h> // extensions
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfcd40d.lib")
+ #else
+ #pragma comment(lib, "mfcd40ud.lib")
+ #endif
+ #endif
+#endif
+
+#pragma comment(lib, "odbc32.lib")
+#pragma comment(lib, "odbccp32.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#ifdef _AFXDLL
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfcd40pd.lib")
+ #else
+ #pragma comment(lib, "mfcd40p.lib")
+ #endif
+#endif
+
+#ifdef _MPPC_
+#pragma comment(lib, "odbccfgp.lib")
+#pragma comment(lib, "odbcdrvp.lib")
+#else
+#pragma comment(lib, "odbccfgm.lib")
+#pragma comment(lib, "odbcdrvm.lib")
+#ifdef _DEBUG
+#pragma comment (lib, "aslmd.lib")
+#else
+#pragma comment (lib, "aslm.lib")
+#endif
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDB - MFC SQL/ODBC/Database support
+
+// Classes declared in this file
+
+ //CException
+ class CDBException; // abnormal return value
+
+ //CFieldExchange
+ class CFieldExchange; // Recordset Field Exchange
+
+ //CObject
+ class CDatabase; // Connecting to databases
+ class CRecordset; // Data result sets
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CView
+ //CScrollView
+ //CFormView
+ class CRecordView; // view records with a form
+
+// Non CObject classes
+struct CRecordsetStatus;
+struct CFieldInfo;
+
+/////////////////////////////////////////////////////////////////////////////
+
+// ODBC helpers
+// return code left in 'nRetCode'
+#define AFX_SQL_ASYNC(prs, SQLFunc) \
+ do \
+ { \
+ ASSERT(!CDatabase::InWaitForDataSource()); \
+ while ((nRetCode = (SQLFunc)) == SQL_STILL_EXECUTING) \
+ prs->OnWaitForDataSource(TRUE); \
+ prs->OnWaitForDataSource(FALSE); \
+ } while (0)
+
+#define AFX_SQL_SYNC(SQLFunc) \
+ do \
+ { \
+ ASSERT(!CDatabase::InWaitForDataSource()); \
+ nRetCode = SQLFunc; \
+ } while (0)
+
+// Max display length in chars of timestamp (date & time) value
+#define TIMESTAMP_PRECISION 23
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_DB_DATA
+
+// Miscellaneous sizing info
+#define MAX_CURRENCY 30 // Max size of Currency($) string
+#define MAX_TNAME_LEN 64 // Max size of table names
+#define MAX_FNAME_LEN 64 // Max size of field names
+#define MAX_DBNAME_LEN 32 // Max size of a database name
+#define MAX_DNAME_LEN 256 // Max size of Recordset names
+#define MAX_CONNECT_LEN 512 // Max size of Connect string
+#define MAX_CURSOR_NAME 18 // Max size of a cursor name
+
+// Timeout and net wait defaults
+#define DEFAULT_LOGIN_TIMEOUT 15 // seconds to before fail on connect
+#define DEFAULT_QUERY_TIMEOUT 15 // seconds to before fail waiting for results
+#define DEFAULT_MAX_WAIT_FOR_DATASOURCE 250 // milliseconds. Give DATASOURCE 1/4 second to respond
+#define DEFAULT_MIN_WAIT_FOR_DATASOURCE 50 // milliseconds. Start value for min wait heuristic
+
+// Field Flags, used to indicate status of fields
+#define AFX_SQL_FIELD_FLAG_DIRTY 0x1
+#define AFX_SQL_FIELD_FLAG_NULL 0x2
+
+// Update options flags
+#define AFX_SQL_SETPOSUPDATES 0x0001
+#define AFX_SQL_POSITIONEDSQL 0x0002
+#define AFX_SQL_GDBOUND 0x0004
+
+/////////////////////////////////////////////////////////////////////////////
+// CDBException - something gone wrong
+
+// Dbkit extended error codes
+#define AFX_SQL_ERROR 1000
+#define AFX_SQL_ERROR_CONNECT_FAIL AFX_SQL_ERROR+1
+#define AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY AFX_SQL_ERROR+2
+#define AFX_SQL_ERROR_EMPTY_COLUMN_LIST AFX_SQL_ERROR+3
+#define AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH AFX_SQL_ERROR+4
+#define AFX_SQL_ERROR_ILLEGAL_MODE AFX_SQL_ERROR+5
+#define AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED AFX_SQL_ERROR+6
+#define AFX_SQL_ERROR_NO_CURRENT_RECORD AFX_SQL_ERROR+7
+#define AFX_SQL_ERROR_NO_ROWS_AFFECTED AFX_SQL_ERROR+8
+#define AFX_SQL_ERROR_RECORDSET_READONLY AFX_SQL_ERROR+9
+#define AFX_SQL_ERROR_SQL_NO_TOTAL AFX_SQL_ERROR+10
+#define AFX_SQL_ERROR_ODBC_LOAD_FAILED AFX_SQL_ERROR+11
+#define AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED AFX_SQL_ERROR+12
+#define AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED AFX_SQL_ERROR+13
+#define AFX_SQL_ERROR_API_CONFORMANCE AFX_SQL_ERROR+14
+#define AFX_SQL_ERROR_SQL_CONFORMANCE AFX_SQL_ERROR+15
+#define AFX_SQL_ERROR_NO_DATA_FOUND AFX_SQL_ERROR+16
+#define AFX_SQL_ERROR_ROW_UPDATE_NOT_SUPPORTED AFX_SQL_ERROR+17
+#define AFX_SQL_ERROR_ODBC_V2_REQUIRED AFX_SQL_ERROR+18
+#define AFX_SQL_ERROR_NO_POSITIONED_UPDATES AFX_SQL_ERROR+19
+#define AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED AFX_SQL_ERROR+20
+#define AFX_SQL_ERROR_DATA_TRUNCATED AFX_SQL_ERROR+21
+#define AFX_SQL_ERROR_ROW_FETCH AFX_SQL_ERROR+22
+#define AFX_SQL_ERROR_INCORRECT_ODBC AFX_SQL_ERROR+23
+#define AFX_SQL_ERROR_UPDATE_DELETE_FAILED AFX_SQL_ERROR+24
+#define AFX_SQL_ERROR_DYNAMIC_CURSOR_NOT_SUPPORTED AFX_SQL_ERROR+25
+#define AFX_SQL_ERROR_MAX AFX_SQL_ERROR+26
+
+class CDBException : public CException
+{
+ DECLARE_DYNAMIC(CDBException)
+
+// Attributes
+public:
+ RETCODE m_nRetCode;
+ CString m_strError;
+ CString m_strStateNativeOrigin;
+
+// Implementation (use AfxThrowDBException to create)
+public:
+ CDBException(RETCODE nRetCode = SQL_SUCCESS);
+
+ virtual void BuildErrorString(CDatabase* pdb, HSTMT hstmt,
+ BOOL bTrace = TRUE);
+ void Empty();
+ virtual ~CDBException();
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+#ifdef _DEBUG
+ void TraceErrorMessage(LPCTSTR szTrace) const;
+#endif // DEBUG
+
+};
+
+void AFXAPI AfxThrowDBException(RETCODE nRetCode, CDatabase* pdb, HSTMT hstmt);
+
+//////////////////////////////////////////////////////////////////////////////
+// CDatabase - a SQL Database
+
+class CDatabase : public CObject
+{
+ DECLARE_DYNAMIC(CDatabase)
+
+// Constructors
+public:
+ CDatabase();
+
+ virtual BOOL Open(LPCTSTR lpszDSN, BOOL bExclusive = FALSE,
+ BOOL bReadonly = FALSE, LPCTSTR lpszConnect = _T("ODBC;"),
+ BOOL bUseCursorLib = TRUE);
+ virtual void Close();
+
+// Attributes
+public:
+ HDBC m_hdbc;
+
+ BOOL IsOpen() const; // Database successfully opened?
+ BOOL CanUpdate() const;
+ BOOL CanTransact() const; // Are Transactions supported?
+
+ CString GetDatabaseName() const;
+ const CString& GetConnect() const;
+
+ // global state - if waiting for datasource => not normal operations
+ static BOOL PASCAL InWaitForDataSource();
+
+// Operations
+public:
+ void SetLoginTimeout(DWORD dwSeconds);
+ void SetQueryTimeout(DWORD dwSeconds);
+ void SetSynchronousMode(BOOL bSynchronous);
+
+ // transaction control
+ BOOL BeginTrans();
+ BOOL CommitTrans();
+ BOOL Rollback();
+
+ // direct sql execution
+ void ExecuteSQL(LPCTSTR lpszSQL);
+
+ // Cancel asynchronous operation
+ void Cancel();
+
+// Overridables
+public:
+ // set special options
+ virtual void OnSetOptions(HSTMT hstmt);
+
+ // Give user chance to cancel long operation
+ virtual void OnWaitForDataSource(BOOL bStillExecuting);
+
+// Implementation
+public:
+ virtual ~CDatabase();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+
+ BOOL m_bTransactionPending;
+#endif //_DEBUG
+
+ // general error check
+ virtual BOOL Check(RETCODE nRetCode) const;
+
+ void ReplaceBrackets(LPTSTR lpchSQL);
+ BOOL m_bStripTrailingSpaces;
+ BOOL m_bIncRecordCountOnAdd;
+
+protected:
+ CString m_strConnect;
+
+ CPtrList m_listRecordsets; // maintain list to ensure CRecordsets all closed
+
+ int nRefCount;
+ BOOL m_bUpdatable;
+
+ BOOL m_bTransactions;
+ SWORD m_nTransactionCapable;
+ SWORD m_nCursorCommitBehavior;
+ SWORD m_nCursorRollbackBehavior;
+ DWORD m_dwUpdateOptions;
+
+ DWORD m_dwLoginTimeout;
+ HSTMT m_hstmt;
+ DWORD m_dwWait;
+
+ DWORD m_dwQueryTimeout;
+ DWORD m_dwMinWaitForDataSource;
+ DWORD m_dwMaxWaitForDataSource;
+ BOOL m_bAsync;
+ char m_chIDQuoteChar;
+ char m_reserved1[3]; // pad to even 4 bytes
+
+ virtual void ThrowDBException(RETCODE nRetCode);
+ void AllocConnect();
+ void Free();
+
+ // friend classes that call protected CDatabase overridables
+ friend class CRecordset;
+ friend class CFieldExchange;
+ friend class CDBException;
+};
+
+// CFieldExchange - for field exchange
+class CFieldExchange
+{
+// Attributes
+public:
+ enum RFX_Operation
+ {
+ BindParam, // register users parameters with ODBC SQLBindParameter
+ RebindParam, // migrate param values to proxy array before Requery
+ BindFieldToColumn, // register users fields with ODBC SQLBindCol
+ BindFieldForUpdate, // temporarily bind columns before update (via SQLSetPos)
+ UnbindFieldForUpdate, // unbind columns after update (via SQLSetPos)
+ Fixup, // Set string lengths, clear status bits
+ MarkForAddNew,
+ MarkForUpdate, // Prepare fields and flags for update operation
+ Name, // append dirty field name
+ NameValue, // append dirty name=value
+ Value, // append dirty value or parameter marker
+ SetFieldDirty, // Set status bit for changed status
+ SetFieldNull, // Set status bit for null value
+ IsFieldDirty,// return TRUE if field is dirty
+ IsFieldNull,// return TRUE if field is marked NULL
+ IsFieldNullable,// return TRUE if field can hold NULL values
+ StoreField, // archive values of current record
+ LoadField, // reload archived values into current record
+ GetFieldInfoValue, // general info on a field via pv for field
+ GetFieldInfoOrdinal, // general info on a field via field ordinal
+#ifdef _DEBUG
+ DumpField, // dump bound field name and value
+#endif
+ };
+ UINT m_nOperation; // Type of exchange operation
+ CRecordset* m_prs; // recordset handle
+
+// Operations
+ enum FieldType
+ {
+ noFieldType,
+ outputColumn,
+ param,
+ };
+
+// Operations (for implementors of RFX procs)
+ BOOL IsFieldType(UINT* pnField);
+
+ // Indicate purpose of subsequent RFX calls
+ void SetFieldType(UINT nFieldType);
+
+// Implementation
+ CFieldExchange(UINT nOperation, CRecordset* prs, void* pvField = NULL);
+
+ void Default(LPCTSTR szName,
+ void* pv, LONG* plLength, int nCType, UINT cbValue, UINT cbPrecision);
+
+ int GetColumnType(int nColumn, UINT* pcbLength = NULL,
+ int* pnScale = NULL, int* pnNullable = NULL);
+
+ // long binary helpers
+ long GetLongBinarySize(int nField);
+ void GetLongBinaryData(int nField, CLongBinary& lb, long* plSize);
+ BYTE* ReallocLongBinary(CLongBinary& lb, long lSizeRequired,
+ long lReallocSize);
+
+ // Current type of field
+ UINT m_nFieldType;
+
+ // For GetFieldInfo
+ CFieldInfo* m_pfi; // GetFieldInfo return struct
+ BOOL m_bFieldFound; // GetFieldInfo search successful
+
+ // For returning status info for a field
+ BOOL m_bNull; // return result of IsFieldNull(able)/Dirty operation
+ BOOL m_bDirty; // return result of IsFieldNull(able)/Dirty operation
+
+ CString* m_pstr; // Field name or destination for building various SQL clauses
+ BOOL m_bField; // Value to set for SetField operation
+ void* m_pvField; // For indicating an operation on a specific field
+ CArchive* m_par; // For storing/loading copy buffer
+ LPCTSTR m_lpszSeparator; // append after field names
+ UINT m_nFields; // count of fields for various operations
+ UINT m_nParams; // count of fields for various operations
+ UINT m_nParamFields; // count of fields for various operations
+ HSTMT m_hstmt; // For SQLBindParameter on update statement
+ long m_lDefaultLBFetchSize; // For fetching CLongBinary data of unknown len
+ long m_lDefaultLBReallocSize; // For fetching CLongBinary data of unknown len
+
+#ifdef _DEBUG
+ CDumpContext* m_pdcDump;
+#endif //_DEBUG
+
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard RecordSet Field Exchange routines
+
+// text data
+void AFXAPI RFX_Text(CFieldExchange* pFX, LPCTSTR szName, CString& value,
+ // Default max length for char and varchar, default datasource type
+ int nMaxLength = 255, int nColumnType = SQL_VARCHAR);
+
+// boolean data
+void AFXAPI RFX_Bool(CFieldExchange* pFX, LPCTSTR szName, BOOL& value);
+
+// integer data
+void AFXAPI RFX_Long(CFieldExchange* pFX, LPCTSTR szName, long& value);
+void AFXAPI RFX_Int(CFieldExchange* pFX, LPCTSTR szName, int& value);
+void AFXAPI RFX_Single(CFieldExchange* pFX, LPCTSTR szName, float& value);
+void AFXAPI RFX_Double(CFieldExchange* pFX, LPCTSTR szName, double& value);
+
+// date and time
+void AFXAPI RFX_Date(CFieldExchange* pFX, LPCTSTR szName, CTime& value);
+void AFXAPI RFX_Date(CFieldExchange* pFX, LPCTSTR szName, TIMESTAMP_STRUCT& value);
+
+// Binary data
+void AFXAPI RFX_Binary(CFieldExchange* pFX, LPCTSTR szName, CByteArray& value,
+ // Default max length is for binary and varbinary
+ int nMaxLength = 255);
+void AFXAPI RFX_Byte(CFieldExchange* pFX, LPCTSTR szName, BYTE& value);
+void AFXAPI RFX_LongBinary(CFieldExchange* pFX, LPCTSTR szName, CLongBinary& value);
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Dialog Data Exchange cover routines
+// Cover routines provide database semantics on top of DDX routines
+
+// simple text operations
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BYTE& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, UINT& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, long& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, DWORD& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, double& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, float& value, CRecordset* pRecordset);
+
+// special control types
+void AFXAPI DDX_FieldCheck(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldRadio(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBString(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBString(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBIndex(CDataExchange* pDX, int nIDC, int& index, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBIndex(CDataExchange* pDX, int nIDC, int& index, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldScroll(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+
+//////////////////////////////////////////////////////////////////////////////
+// CRecordset - the result of a SQL Statement
+
+#define AFX_DB_USE_DEFAULT_TYPE (0xFFFFFFFF)
+
+#define AFX_MOVE_FIRST 0x80000000L
+#define AFX_MOVE_PREVIOUS (-1L)
+#define AFX_MOVE_REFRESH 0L
+#define AFX_MOVE_NEXT (+1L)
+#define AFX_MOVE_LAST 0x7fffffffL
+
+#define AFX_RECORDSET_STATUS_OPEN (+1L)
+#define AFX_RECORDSET_STATUS_CLOSED 0L
+#define AFX_RECORDSET_STATUS_UNKNOWN (-1L)
+
+class CRecordset : public CObject
+{
+ DECLARE_DYNAMIC(CRecordset)
+
+// Constructor
+protected:
+ CRecordset(CDatabase* pDatabase = NULL);
+
+public:
+ virtual ~CRecordset();
+
+ enum OpenType
+ {
+ dynaset, // uses SQLExtendedFetch, keyset driven cursor
+ snapshot, // uses SQLExtendedFetch, static cursor
+ forwardOnly, // uses SQLFetch
+ dynamic // uses SQLExtendedFetch, dynamic cursor
+ };
+
+ enum OpenOptions
+ {
+ none = 0x0,
+ readOnly = 0x0004,
+ appendOnly = 0x0008,
+ optimizeBulkAdd = 0x4000, // Use prepared HSTMT for multiple AddNews, dirty fields must not change.
+ firstBulkAdd = 0x8000, // INTERNAL to MFC, don't specify on Open.
+ };
+ virtual BOOL Open(UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE,
+ LPCTSTR lpszSQL = NULL, DWORD dwOptions = none);
+ virtual void Close();
+
+// Attributes
+public:
+ HSTMT m_hstmt; // Source statement for this resultset
+ CDatabase* m_pDatabase; // Source database for this resultset
+
+ CString m_strFilter; // Where clause
+ CString m_strSort; // Order By Clause
+
+ BOOL CanAppend() const; // Can AddNew be called?
+ BOOL CanRestart() const; // Can Requery be called to restart a query?
+ BOOL CanScroll() const; // Can MovePrev and MoveFirst be called?
+ BOOL CanTransact() const; // Are Transactions supported?
+ BOOL CanUpdate() const; // Can Edit/AddNew/Delete be called?
+
+ const CString& GetSQL() const; // SQL executed for this recordset
+ const CString& GetTableName() const; // Table name
+
+ BOOL IsOpen() const; // Recordset successfully opened?
+ BOOL IsBOF() const; // Beginning Of File
+ BOOL IsEOF() const; // End Of File
+ BOOL IsDeleted() const; // On a deleted record
+
+ BOOL IsFieldDirty(void *pv); // has field been updated?
+ BOOL IsFieldNull(void *pv); // is field NULL valued?
+ BOOL IsFieldNullable(void *pv); // can field be set to a NULL value
+
+ long GetRecordCount() const; // Records seen so far or -1 if unknown
+ void GetStatus(CRecordsetStatus& rStatus) const;
+
+// Operations
+public:
+ // cursor operations
+ void MoveNext();
+ void MovePrev();
+ void MoveFirst();
+ void MoveLast();
+ virtual void Move(long lRows);
+
+ // edit buffer operations
+ virtual void AddNew(); // add new record at the end
+ virtual void Edit(); // start editing
+ virtual BOOL Update(); // update it
+ virtual void Delete(); // delete the current record
+
+ // field operations
+ void SetFieldDirty(void *pv, BOOL bDirty = TRUE);
+ void SetFieldNull(void *pv, BOOL bNull = TRUE);
+
+ // locking control during Edit
+ enum LockMode
+ {
+ optimistic,
+ pessimistic,
+ };
+ void SetLockingMode(UINT nMode);
+
+ // Recordset operations
+ virtual BOOL Requery(); // Re-execute query based on new params
+
+ // Cancel asynchronous operation
+ void Cancel();
+
+// Overridables
+public:
+ // Get default connect string
+ virtual CString GetDefaultConnect();
+
+ // Get SQL to execute
+ virtual CString GetDefaultSQL() = 0;
+
+ // set special options
+ virtual void OnSetOptions(HSTMT hstmt);
+
+ // Give user chance to cancel long operation
+ virtual void OnWaitForDataSource(BOOL bStillExecuting);
+
+ // for recordset field exchange
+ virtual void DoFieldExchange(CFieldExchange* pFX) = 0;
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+
+ virtual BOOL Check(RETCODE nRetCode) const; // general error check
+ void InitRecord();
+ virtual void PreBindFields(); // called before data fields are bound
+ UINT m_nFields; // number of RFX fields
+ UINT m_nParams; // number of RFX params
+ BOOL m_bRebindParams; // date or UNICODE text parameter existence flag
+ BOOL m_bLongBinaryColumns; // long binary column existence flag
+ BOOL m_bUseUpdateSQL; // uses SQL-based updates
+ int m_nReserved; // reserved for later use
+ BOOL m_bUseODBCCursorLib; // uses ODBC cursor lib if m_pDatabase not Open
+ UDWORD m_dwDriverPositionedStatements;
+
+ BOOL IsSQLUpdatable(LPCTSTR lpszSQL);
+ BOOL IsSelectQueryUpdatable(LPCTSTR lpszSQL);
+ static BOOL PASCAL IsJoin(LPCTSTR lpszJoinClause);
+ static LPCTSTR PASCAL FindSQLToken(LPCTSTR lpszSQL, LPCTSTR lpszSQLToken);
+ BOOL ValidateSelectForUpdateSupport();
+
+ // RFX Operations on fields of CRecordset
+ UINT BindParams(HSTMT hstmt);
+ void RebindParams(HSTMT hstmt);
+ UINT BindFieldsToColumns();
+ void BindFieldsForUpdate();
+ void UnbindFieldsForUpdate();
+ void Fixups();
+ UINT AppendNames(CString* pstr, LPCTSTR szSeparator);
+ UINT AppendValues(HSTMT hstmt, CString* pstr, LPCTSTR szSeparator);
+ UINT AppendNamesValues(HSTMT hstmt, CString* pstr, LPCTSTR szSeparator);
+ void StoreFields();
+ void LoadFields();
+ void MarkForAddNew();
+ void MarkForUpdate();
+ BOOL GetFieldInfo(void* pv, CFieldInfo* pfi);
+ BOOL GetFieldInfo(UINT nField, CFieldInfo* pfi);
+#ifdef _DEBUG
+ void DumpFields(CDumpContext& dc) const;
+#endif //_DEBUG
+
+ // RFX operation helper functions
+ BOOL UnboundFieldInfo(UINT nField, CFieldInfo* pfi);
+
+ virtual void ThrowDBException(RETCODE nRetCode, HSTMT hstmt = SQL_NULL_HSTMT);
+
+ CMemFile* m_pmemfile; // For saving copy buffer
+ CArchive* m_par; // For saving copy buffer
+
+ void AllocFlags();
+ BYTE GetFieldFlags(UINT nField, UINT nFieldType = CFieldExchange::outputColumn);
+ void SetFieldFlags(UINT nField, BYTE bFlags, UINT nFieldType = CFieldExchange::outputColumn);
+ void ClearFieldFlags(UINT nField, BYTE bFlags, UINT nFieldType = CFieldExchange::outputColumn);
+ LONG* GetFieldLength(CFieldExchange* pFX);
+ BOOL IsFieldFlagNull(UINT nField, UINT nFieldType);
+ BOOL IsFieldFlagDirty(UINT nField, UINT nFieldType);
+ void** m_pvFieldProxy;
+ void** m_pvParamProxy;
+ UINT m_nProxyFields;
+ UINT m_nProxyParams;
+
+protected:
+ UINT m_nOpenType;
+ UINT m_nDefaultType;
+ enum EditMode
+ {
+ noMode,
+ edit,
+ addnew
+ };
+ long m_lOpen;
+ UINT m_nEditMode;
+ BOOL m_bEOFSeen;
+ long m_lRecordCount;
+ long m_lCurrentRecord;
+ CString m_strCursorName;
+ // Perform operation based on m_nEditMode
+ BOOL UpdateInsertDelete();
+ void ReleaseCopyBuffer();
+ BOOL m_nLockMode; // Control concurrency for Edit()
+ UDWORD m_dwDriverConcurrency; // driver supported concurrency types
+ UDWORD m_dwConcurrency; // requested concurrency type
+ UWORD m_wRowStatus; // row status used by SQLExtendedFetch and SQLSetPos
+ HSTMT m_hstmtUpdate;
+ BOOL m_bRecordsetDb;
+ BOOL m_bBOF;
+ BOOL m_bEOF;
+ BOOL m_bUpdatable; // Is recordset updatable?
+ BOOL m_bAppendable;
+ CString m_strSQL; // SQL statement for recordset
+ CString m_strUpdateSQL; // SQL statement for updates
+ CString m_strTableName; // source table of recordset
+ BOOL m_bScrollable; // supports MovePrev
+ BOOL m_bDeleted;
+ DWORD m_dwWait;
+ UINT m_nFieldsBound;
+ BYTE* m_pbFieldFlags;
+ LONG* m_plFieldLength; // Pointer to field length bound in SQLBindCol
+ BYTE* m_pbParamFlags;
+ LONG* m_plParamLength;
+ BOOL m_bExtendedFetch;
+public:
+ DWORD m_dwOptions; // archive dwOptions on Open
+protected:
+ CString m_strRequerySQL; // archive SQL string for use in Requery()
+ CString m_strRequeryFilter; // archive filter string for use in Requery()
+ CString m_strRequerySort; // archive sort string for use in Requery()
+ void BuildSelectSQL();
+ void AppendFilterAndSortSQL();
+ BOOL IsRecordsetUpdatable();
+ void ExecuteSetPosUpdate();
+ void PrepareUpdateHstmt();
+ void BuildUpdateSQL();
+ void ExecuteUpdateSQL();
+ void SendLongBinaryData(HSTMT hstmt);
+ virtual long GetLBFetchSize(long lOldSize); // CLongBinary fetch chunking
+ virtual long GetLBReallocSize(long lOldSize); // CLongBinary realloc chunking
+
+ friend class CFieldExchange;
+ friend class CRecordView;
+};
+
+#define AFX_CURRENT_RECORD_UNDEFINED (-2)
+#define AFX_CURRENT_RECORD_BOF (-1)
+
+// For returning status for a recordset
+struct CRecordsetStatus
+{
+ long m_lCurrentRecord; // -2=Unknown,-1=BOF,0=1st record. . .
+ BOOL m_bRecordCountFinal;// Have we counted all records?
+};
+
+// For returning field info on RFX fields
+struct CFieldInfo
+{
+ // For ID'ing field
+ UINT nField; // Field number
+ CString strName; // Field name
+ void* pv; // Address of value for field
+
+ // Return info GetFieldInfo
+ UINT nDataType; // data type of field (BOOL, BYTE, etc)
+ DWORD dwSize; // Max size for field data
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRecordView - form for viewing data records
+
+class CRecordView : public CFormView
+{
+ DECLARE_DYNAMIC(CRecordView)
+
+// Construction
+protected: // must derive your own class
+ CRecordView(LPCTSTR lpszTemplateName);
+ CRecordView(UINT nIDTemplate);
+
+// Attributes
+public:
+ virtual CRecordset* OnGetRecordset() = 0;
+
+ BOOL IsOnLastRecord();
+ BOOL IsOnFirstRecord();
+
+// Operations
+public:
+ virtual BOOL OnMove(UINT nIDMoveCommand);
+
+// Implementation
+public:
+ virtual ~CRecordView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ BOOL m_bOnFirstRecord;
+ BOOL m_bOnLastRecord;
+
+ //{{AFX_MSG(CRecordView)
+ afx_msg void OnUpdateRecordFirst(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordPrev(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordNext(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordLast(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ afx_msg void OnMove(int cx, int cy);
+
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDBCORE_INLINE inline
+#define _AFXDBRFX_INLINE inline
+#define _AFXDBVIEW_INLINE inline
+#include <afxdb.inl>
+#undef _AFXDBVIEW_INLINE
+#undef _AFXDBCORE_INLINE
+#undef _AFXDBRFX_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDB_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxdb.inl b/public/sdk/inc/mfc40/afxdb.inl
new file mode 100644
index 000000000..457345bcc
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdb.inl
@@ -0,0 +1,99 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDB.H
+
+/////////////////////////////////////////////////////////////////////////////
+// General database inlines
+
+#ifdef _AFXDBCORE_INLINE
+
+// CDatabase inlines
+_AFXDBCORE_INLINE BOOL CDatabase::IsOpen() const
+ { ASSERT_VALID(this); return m_hdbc != SQL_NULL_HDBC; }
+_AFXDBCORE_INLINE BOOL CDatabase::CanUpdate() const
+ { ASSERT(IsOpen()); return m_bUpdatable; }
+_AFXDBCORE_INLINE BOOL CDatabase::CanTransact() const
+ { ASSERT(IsOpen()); return m_bTransactions; }
+_AFXDBCORE_INLINE void CDatabase::SetLoginTimeout(DWORD dwSeconds)
+ { ASSERT_VALID(this); m_dwLoginTimeout = dwSeconds; }
+_AFXDBCORE_INLINE void CDatabase::SetQueryTimeout(DWORD dwSeconds)
+ { ASSERT_VALID(this); m_dwQueryTimeout = dwSeconds; }
+_AFXDBCORE_INLINE void CDatabase::SetSynchronousMode(BOOL bSynchronous)
+ { ASSERT_VALID(this); m_bAsync = !bSynchronous; }
+_AFXDBCORE_INLINE const CString& CDatabase::GetConnect() const
+ { ASSERT_VALID(this); return m_strConnect; }
+_AFXDBCORE_INLINE void CDatabase::ThrowDBException(RETCODE nRetCode)
+ { ASSERT_VALID(this); AfxThrowDBException(nRetCode, this, m_hstmt); }
+
+// CRecordset inlines
+_AFXDBCORE_INLINE const CString& CRecordset::GetSQL() const
+ { ASSERT(IsOpen()); return m_strSQL; }
+_AFXDBCORE_INLINE const CString& CRecordset::GetTableName() const
+ { ASSERT(IsOpen()); return m_strTableName; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsBOF() const
+ { ASSERT(IsOpen()); return m_bBOF; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsEOF() const
+ { ASSERT(IsOpen()); return m_bEOF; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsDeleted() const
+ { ASSERT(IsOpen()); return m_bDeleted; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanUpdate() const
+ { ASSERT(IsOpen()); return m_bUpdatable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanScroll() const
+ { ASSERT(IsOpen()); return m_bScrollable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanAppend() const
+ { ASSERT(IsOpen()); return m_bAppendable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanRestart() const
+ { ASSERT(IsOpen()); return TRUE; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanTransact() const
+ { ASSERT(IsOpen());return m_pDatabase->m_bTransactions; }
+_AFXDBCORE_INLINE long CRecordset::GetRecordCount() const
+ { ASSERT(IsOpen()); return m_lRecordCount; }
+_AFXDBCORE_INLINE void CRecordset::GetStatus(CRecordsetStatus& rStatus) const
+ { ASSERT(IsOpen());
+ rStatus.m_lCurrentRecord = m_lCurrentRecord;
+ rStatus.m_bRecordCountFinal = m_bEOFSeen; }
+_AFXDBCORE_INLINE void CRecordset::ThrowDBException(RETCODE nRetCode, HSTMT hstmt)
+ { ASSERT_VALID(this); AfxThrowDBException(nRetCode, m_pDatabase,
+ (hstmt == SQL_NULL_HSTMT)? m_hstmt : hstmt); }
+_AFXDBCORE_INLINE void CRecordset::MoveNext()
+ { ASSERT(IsOpen()); Move(AFX_MOVE_NEXT); }
+_AFXDBCORE_INLINE void CRecordset::MovePrev()
+ { ASSERT(IsOpen()); Move(AFX_MOVE_PREVIOUS); }
+_AFXDBCORE_INLINE void CRecordset::MoveFirst()
+ { ASSERT(IsOpen()); Move(AFX_MOVE_FIRST); }
+_AFXDBCORE_INLINE void CRecordset::MoveLast()
+ { ASSERT(IsOpen()); Move(AFX_MOVE_LAST); }
+_AFXDBCORE_INLINE BOOL CRecordset::IsFieldFlagNull(UINT nColumn, UINT nFieldType)
+ { ASSERT_VALID(this);
+ return (GetFieldFlags(nColumn, nFieldType) & AFX_SQL_FIELD_FLAG_NULL) != 0; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsFieldFlagDirty(UINT nColumn, UINT nFieldType)
+ { ASSERT_VALID(this);
+ return (GetFieldFlags(nColumn, nFieldType) & AFX_SQL_FIELD_FLAG_DIRTY) != 0; }
+
+#endif //_AFXDBCORE_INLINE
+
+#ifdef _AFXDBRFX_INLINE
+
+_AFXDBRFX_INLINE void CFieldExchange::SetFieldType(UINT nFieldType)
+ { ASSERT(nFieldType == outputColumn || nFieldType == param);
+ m_nFieldType = nFieldType; }
+
+#endif //_AFXDBRFX_INLINE
+
+#ifdef _AFXDBVIEW_INLINE
+
+// CRecordView inlines
+_AFXDBVIEW_INLINE void CRecordView::OnMove(int cx, int cy)
+ { CFormView::OnMove(cx, cy); }
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxdb.rc b/public/sdk/inc/mfc40/afxdb.rc
new file mode 100644
index 000000000..62e122617
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdb.rc
@@ -0,0 +1,97 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Attempt to connect to datasource failed"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Recordset supports forward movement only."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Attempt to open a table failed - there were no columns to retrieve were specified."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Unexpected column data types were returned from query."
+ AFX_IDP_SQL_ILLEGAL_MODE "Attempt to Update or Delete failed."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Multiple rows were updated."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operation failed, no current record."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "No rows were affected by the update or delete operation."
+ AFX_IDP_SQL_RECORDSET_READONLY "Recordset is read-only"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC driver doesn't support MFC LongBinary data model."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Attempt to load required component ODBC32.DLL failed."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC driver does not support dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ODBC static cursors required for snapshot support."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC driver incompatible with MFC database classes (API_CONFORMANCE >= SQL_OAC_LEVEL1 required)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC driver incompatible with MFC database classes (SQL_CONFORMANCE >= SQL_OSC_MINIMUM required)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Attempt to scroll past end or before beginning of data."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets not supported by ODBC driver."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC Level 2 compliant driver required."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Positioned updates not supported by ODBC driver."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Requested lock mode is not supported."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Data truncated."
+ AFX_IDP_SQL_ROW_FETCH
+ "Error retrieving record."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "A required ODBC entry point was not found. Make sure ODBC is installed correctly."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Update or Delete failed."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Dynamic cursors not supported by ODBC driver."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Unable to initialize DAO/Jet db engine."
+ AFX_IDP_DAO_DFX_BIND
+ "Bad DFX value parameter."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef or QueryDef not Open."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows failed. Not enough memory allocated for row."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows binding error. Probably caused by datatype mismatch."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows failed. The requested column is not a member of this recordset."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc40/afxdb_.h b/public/sdk/inc/mfc40/afxdb_.h
new file mode 100644
index 000000000..6eee2201b
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdb_.h
@@ -0,0 +1,69 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXDB.H & AFXDAO.H)
+
+#ifndef __AFXDB__H__
+#define __AFXDB__H__
+
+//////////////////////////////////////////////////////////////////////////////
+// Recordset Field exchange for ODBC & DAO classes (RFX_ and DFX_)
+
+#define AFX_RFX_SHORT_PSEUDO_NULL (0x7EE4)
+#define AFX_RFX_INT_PSEUDO_NULL (0x7EE4)
+#define AFX_RFX_LONG_PSEUDO_NULL (0x4a4d4120L)
+#define AFX_RFX_BYTE_PSEUDO_NULL 255
+#define AFX_RFX_SINGLE_PSEUDO_NULL (-9.123e19f)
+#define AFX_RFX_DOUBLE_PSEUDO_NULL (-9.123e19)
+#define AFX_RFX_BOOL_PSEUDO_NULL 2
+#define AFX_RFX_DATE_PSEUDO_NULL CTime(0)
+#define AFX_RFX_TIMESTAMP_PSEUDO_NULL 99
+
+#define AFX_RFX_BOOL 1
+#define AFX_RFX_BYTE 2
+#define AFX_RFX_INT 3
+#define AFX_RFX_LONG 4
+#define AFX_RFX_SINGLE 6
+#define AFX_RFX_DOUBLE 7
+#define AFX_RFX_DATE 8
+#define AFX_RFX_BINARY 9
+#define AFX_RFX_TEXT 10
+#define AFX_RFX_LONGBINARY 11
+#define AFX_RFX_SHORT 12
+#define AFX_RFX_CURRENCY 13
+
+//////////////////////////////////////////////////////////////////////////////
+// CLongBinary - a Long (generally > 32k in length) Binary object
+
+class CLongBinary : public CObject
+{
+ DECLARE_DYNAMIC(CLongBinary)
+
+// Constructors
+public:
+ CLongBinary();
+
+// Attributes
+ HGLOBAL m_hData;
+ DWORD m_dwDataLength;
+
+// Implementation
+public:
+ virtual ~CLongBinary();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // __AFXDB__H__
diff --git a/public/sdk/inc/mfc40/afxdd_.h b/public/sdk/inc/mfc40/afxdd_.h
new file mode 100644
index 000000000..26201f73e
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdd_.h
@@ -0,0 +1,63 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXWIN.H)
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialog Data Exchange routines
+
+class COleCurrency; // forward reference (see afxdisp.h)
+class COleDateTime; // forward reference (see afxdisp.h)
+
+// simple text operations
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, BYTE& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, short& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, UINT& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, long& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, DWORD& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, float& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, double& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, COleCurrency& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, COleDateTime& value);
+
+// special control types
+void AFXAPI DDX_Check(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_Radio(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_LBString(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_CBString(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_LBIndex(CDataExchange* pDX, int nIDC, int& index);
+void AFXAPI DDX_CBIndex(CDataExchange* pDX, int nIDC, int& index);
+void AFXAPI DDX_LBStringExact(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_CBStringExact(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_Scroll(CDataExchange* pDX, int nIDC, int& value);
+
+// for getting access to the actual controls
+void AFXAPI DDX_Control(CDataExchange* pDX, int nIDC, CWnd& rControl);
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialog Data Validation routines
+
+// range - value must be >= minVal and <= maxVal
+// NOTE: you will require casts for 'minVal' and 'maxVal' to use the
+// UINT, DWORD or float types
+void AFXAPI DDV_MinMaxByte(CDataExchange* pDX, BYTE value, BYTE minVal, BYTE maxVal);
+void AFXAPI DDV_MinMaxInt(CDataExchange* pDX, int value, int minVal, int maxVal);
+void AFXAPI DDV_MinMaxLong(CDataExchange* pDX, long value, long minVal, long maxVal);
+void AFXAPI DDV_MinMaxUInt(CDataExchange* pDX, UINT value, UINT minVal, UINT maxVal);
+void AFXAPI DDV_MinMaxDWord(CDataExchange* pDX, DWORD value, DWORD minVal, DWORD maxVal);
+void AFXAPI DDV_MinMaxFloat(CDataExchange* pDX, float const& value, float minVal, float maxVal);
+void AFXAPI DDV_MinMaxDouble(CDataExchange* pDX, double const& value, double minVal, double maxVal);
+
+// number of characters
+void AFXAPI DDV_MaxChars(CDataExchange* pDX, CString const& value, int nChars);
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxdisp.h b/public/sdk/inc/mfc40/afxdisp.h
new file mode 100644
index 000000000..ab0fce266
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdisp.h
@@ -0,0 +1,1297 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDISP_H__
+#define __AFXDISP_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+// include necessary OLE headers
+#ifndef _OBJBASE_H_
+ #include <objbase.h>
+#endif
+#ifndef _OLEAUTO_H_
+ #include <oleauto.h>
+#endif
+#ifndef _OLECTL_H_
+ #include <olectl.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfco40d.lib")
+ #else
+ #pragma comment(lib, "mfco40ud.lib")
+ #endif
+ #endif
+#endif
+
+#pragma comment(lib, "oledlg.lib")
+#pragma comment(lib, "ole32.lib")
+#pragma comment(lib, "oleaut32.lib")
+#pragma comment(lib, "uuid.lib")
+#pragma comment(lib, "uuid2.lib")
+#pragma comment(lib, "olepro32.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#ifdef _AFXDLL
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfco40pd.lib")
+ #else
+ #pragma comment(lib, "mfco40p.lib")
+ #endif
+#endif
+
+#if !defined(_AFXDLL) && !defined(_USRDLL)
+ #ifdef _DEBUG
+ #pragma comment(lib, "wlmoled.lib")
+ #pragma comment(lib, "ole2uid.lib")
+ #else
+ #pragma comment(lib, "wlmole.lib")
+ #pragma comment(lib, "ole2ui.lib")
+ #endif
+ #pragma comment(linker, "/macres:ole2ui.rsc")
+#else
+ #ifdef _DEBUG
+ #pragma comment(lib, "oledlgd.lib")
+ #pragma comment(lib, "msvcoled.lib")
+ #else
+ #pragma comment(lib, "oledlg.lib")
+ #pragma comment(lib, "msvcole.lib")
+ #endif
+#endif
+
+#pragma comment(lib, "uuid.lib")
+
+#ifdef _DEBUG
+ #pragma comment(lib, "ole2d.lib")
+ #pragma comment(lib, "ole2autd.lib")
+#else
+ #pragma comment(lib, "ole2.lib")
+ #pragma comment(lib, "ole2auto.lib")
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDISP - MFC IDispatch & ClassFactory support
+
+// Classes declared in this file
+
+//CException
+ class COleException; // caught by client or server
+ class COleDispatchException; // special exception for IDispatch calls
+
+//CCmdTarget
+ class COleObjectFactory; // glue for IClassFactory -> runtime class
+ class COleTemplateServer; // server documents using CDocTemplate
+
+class COleDispatchDriver; // helper class to call IDispatch
+
+class COleVariant; // OLE VARIANT wrapper
+class COleCurrency; // Based on OLE CY
+class COleDateTime; // Based on OLE DATE
+class COleDateTimeSpan; // Based on a double
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE COM (Component Object Model) implementation infrastructure
+// - data driven QueryInterface
+// - standard implementation of aggregate AddRef and Release
+// (see CCmdTarget in AFXWIN.H for more information)
+
+#define METHOD_PROLOGUE(theClass, localClass) \
+ theClass* pThis = \
+ ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
+ AFX_MANAGE_STATE(pThis->m_pModuleState) \
+
+#define METHOD_PROLOGUE_(theClass, localClass) \
+ theClass* pThis = \
+ ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define METHOD_PROLOGUE_EX(theClass, localClass) \
+ theClass* pThis = ((theClass*)((BYTE*)this - m_nOffset)); \
+ AFX_MANAGE_STATE(pThis->m_pModuleState) \
+
+#define METHOD_PROLOGUE_EX_(theClass, localClass) \
+ theClass* pThis = ((theClass*)((BYTE*)this - m_nOffset)); \
+
+#else
+#define METHOD_PROLOGUE_EX(theClass, localClass) \
+ METHOD_PROLOGUE(theClass, localClass) \
+
+#define METHOD_PROLOGUE_EX_(theClass, localClass) \
+ METHOD_PROLOGUE_(theClass, localClass) \
+
+#endif
+
+// Provided only for compatibility with CDK 1.x
+#define METHOD_MANAGE_STATE(theClass, localClass) \
+ METHOD_PROLOGUE_EX(theClass, localClass) \
+
+#define BEGIN_INTERFACE_PART(localClass, baseClass) \
+ class X##localClass : public baseClass \
+ { \
+ public: \
+ STDMETHOD_(ULONG, AddRef)(); \
+ STDMETHOD_(ULONG, Release)(); \
+ STDMETHOD(QueryInterface)(REFIID iid, LPVOID* ppvObj); \
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define BEGIN_INTERFACE_PART_DERIVE(localClass, baseClass) \
+ class X##localClass : public baseClass \
+ { \
+ public: \
+
+#else
+#define BEGIN_INTERFACE_PART_DERIVE(localClass, baseClass) \
+ BEGIN_INTERFACE_PART(localClass, baseClass) \
+
+#endif
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define INIT_INTERFACE_PART(theClass, localClass) \
+ size_t m_nOffset; \
+ INIT_INTERFACE_PART_DERIVE(theClass, localClass) \
+
+#define INIT_INTERFACE_PART_DERIVE(theClass, localClass) \
+ X##localClass() \
+ { m_nOffset = offsetof(theClass, m_x##localClass); } \
+
+#else
+#define INIT_INTERFACE_PART(theClass, localClass)
+#define INIT_INTERFACE_PART_DERIVE(theClass, localClass)
+
+#endif
+
+// Note: Inserts the rest of OLE functionality between these two macros,
+// depending upon the interface that is being implemented. It is not
+// necessary to include AddRef, Release, and QueryInterface since those
+// member functions are declared by the macro.
+
+#define END_INTERFACE_PART(localClass) \
+ } m_x##localClass; \
+ friend class X##localClass; \
+
+#ifdef _AFXDLL
+#define BEGIN_INTERFACE_MAP(theClass, theBase) \
+ const AFX_INTERFACEMAP* PASCAL theClass::_GetBaseInterfaceMap() \
+ { return &theBase::interfaceMap; } \
+ const AFX_INTERFACEMAP* theClass::GetInterfaceMap() const \
+ { return &theClass::interfaceMap; } \
+ const AFX_DATADEF AFX_INTERFACEMAP theClass::interfaceMap = \
+ { &theClass::_GetBaseInterfaceMap, &theClass::_interfaceEntries[0], }; \
+ const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass::_interfaceEntries[] = \
+ { \
+
+#else
+#define BEGIN_INTERFACE_MAP(theClass, theBase) \
+ const AFX_INTERFACEMAP* theClass::GetInterfaceMap() const \
+ { return &theClass::interfaceMap; } \
+ const AFX_DATADEF AFX_INTERFACEMAP theClass::interfaceMap = \
+ { &theBase::interfaceMap, &theClass::_interfaceEntries[0], }; \
+ const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass::_interfaceEntries[] = \
+ { \
+
+#endif
+
+#define INTERFACE_PART(theClass, iid, localClass) \
+ { &iid, offsetof(theClass, m_x##localClass) }, \
+
+#define INTERFACE_AGGREGATE(theClass, theAggr) \
+ { NULL, offsetof(theClass, theAggr) }, \
+
+#define END_INTERFACE_MAP() \
+ { NULL, (size_t)-1 } \
+ }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// COleException - unexpected or rare OLE error returned
+
+class COleException : public CException
+{
+ DECLARE_DYNAMIC(COleException)
+
+public:
+ SCODE m_sc;
+ static SCODE PASCAL Process(const CException* pAnyException);
+
+// Implementation (use AfxThrowOleException to create)
+public:
+ COleException();
+ virtual ~COleException();
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+};
+
+void AFXAPI AfxThrowOleException(SCODE sc);
+
+/////////////////////////////////////////////////////////////////////////////
+// IDispatch specific exception
+
+class COleDispatchException : public CException
+{
+ DECLARE_DYNAMIC(COleDispatchException)
+
+public:
+// Attributes
+ WORD m_wCode; // error code (specific to IDispatch implementation)
+ CString m_strDescription; // human readable description of the error
+ DWORD m_dwHelpContext; // help context for error
+
+ // usually empty in application which creates it (eg. servers)
+ CString m_strHelpFile; // help file to use with m_dwHelpContext
+ CString m_strSource; // source of the error (name of server)
+
+// Implementation
+public:
+ COleDispatchException(LPCTSTR lpszDescription, UINT nHelpID, WORD wCode);
+ virtual ~COleDispatchException();
+ static void PASCAL Process(
+ EXCEPINFO* pInfo, const CException* pAnyException);
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+ SCODE m_scError; // SCODE describing the error
+};
+
+void AFXAPI AfxThrowOleDispatchException(WORD wCode, LPCTSTR lpszDescription,
+ UINT nHelpID = 0);
+void AFXAPI AfxThrowOleDispatchException(WORD wCode, UINT nDescriptionID,
+ UINT nHelpID = (UINT)-1);
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for CCmdTarget IDispatchable classes
+
+#ifdef _AFXDLL
+#define BEGIN_DISPATCH_MAP(theClass, baseClass) \
+ const AFX_DISPMAP* PASCAL theClass::_GetBaseDispatchMap() \
+ { return &baseClass::dispatchMap; } \
+ const AFX_DISPMAP* theClass::GetDispatchMap() const \
+ { return &theClass::dispatchMap; } \
+ const AFX_DISPMAP theClass::dispatchMap = \
+ { &theClass::_GetBaseDispatchMap, &theClass::_dispatchEntries[0], \
+ &theClass::_dispatchEntryCount }; \
+ UINT theClass::_dispatchEntryCount = (UINT)-1; \
+ const AFX_DISPMAP_ENTRY theClass::_dispatchEntries[] = \
+ { \
+
+#else
+#define BEGIN_DISPATCH_MAP(theClass, baseClass) \
+ const AFX_DISPMAP* theClass::GetDispatchMap() const \
+ { return &theClass::dispatchMap; } \
+ const AFX_DISPMAP theClass::dispatchMap = \
+ { &baseClass::dispatchMap, &theClass::_dispatchEntries[0], \
+ &theClass::_dispatchEntryCount }; \
+ UINT theClass::_dispatchEntryCount = (UINT)-1; \
+ const AFX_DISPMAP_ENTRY theClass::_dispatchEntries[] = \
+ { \
+
+#endif
+
+#define END_DISPATCH_MAP() \
+ { VTS_NONE, DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)NULL, (AFX_PMSG)NULL, (size_t)-1, afxDispCustom } }; \
+
+// parameter types: by value VTs
+#define VTS_I2 "\x02" // a 'short'
+#define VTS_I4 "\x03" // a 'long'
+#define VTS_R4 "\x04" // a 'float'
+#define VTS_R8 "\x05" // a 'double'
+#define VTS_CY "\x06" // a 'CY' or 'CY*'
+#define VTS_DATE "\x07" // a 'DATE'
+#define VTS_WBSTR "\x08" // an 'LPCOLESTR'
+#define VTS_DISPATCH "\x09" // an 'IDispatch*'
+#define VTS_SCODE "\x0A" // an 'SCODE'
+#define VTS_BOOL "\x0B" // a 'BOOL'
+#define VTS_VARIANT "\x0C" // a 'const VARIANT&' or 'VARIANT*'
+#define VTS_UNKNOWN "\x0D" // an 'IUnknown*'
+#if defined(_UNICODE) || defined(OLE2ANSI)
+ #define VTS_BSTR VTS_WBSTR// an 'LPCOLESTR'
+ #define VT_BSTRT VT_BSTR
+#else
+ #define VTS_BSTR "\x0E" // an 'LPCSTR'
+ #define VT_BSTRA 14
+ #define VT_BSTRT VT_BSTRA
+#endif
+
+// parameter types: by reference VTs
+#define VTS_PI2 "\x42" // a 'short*'
+#define VTS_PI4 "\x43" // a 'long*'
+#define VTS_PR4 "\x44" // a 'float*'
+#define VTS_PR8 "\x45" // a 'double*'
+#define VTS_PCY "\x46" // a 'CY*'
+#define VTS_PDATE "\x47" // a 'DATE*'
+#define VTS_PBSTR "\x48" // a 'BSTR*'
+#define VTS_PDISPATCH "\x49" // an 'IDispatch**'
+#define VTS_PSCODE "\x4A" // an 'SCODE*'
+#define VTS_PBOOL "\x4B" // a 'VARIANT_BOOL*'
+#define VTS_PVARIANT "\x4C" // a 'VARIANT*'
+#define VTS_PUNKNOWN "\x4D" // an 'IUnknown**'
+
+// special VT_ and VTS_ values
+#define VTS_NONE NULL // used for members with 0 params
+#define VT_MFCVALUE 0xFFF // special value for DISPID_VALUE
+#define VT_MFCBYREF 0x40 // indicates VT_BYREF type
+#define VT_MFCMARKER 0xFF // delimits named parameters (INTERNAL USE)
+
+// variant handling (use V_BSTRT when you have ANSI BSTRs, as in DAO)
+#ifndef _UNICODE
+ #define V_BSTRT(b) (LPSTR)V_BSTR(b)
+#else
+ #define V_BSTRT(b) V_BSTR(b)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE control parameter types
+
+#define VTS_COLOR VTS_I4 // OLE_COLOR
+#define VTS_XPOS_PIXELS VTS_I4 // OLE_XPOS_PIXELS
+#define VTS_YPOS_PIXELS VTS_I4 // OLE_YPOS_PIXELS
+#define VTS_XSIZE_PIXELS VTS_I4 // OLE_XSIZE_PIXELS
+#define VTS_YSIZE_PIXELS VTS_I4 // OLE_YSIZE_PIXELS
+#define VTS_XPOS_HIMETRIC VTS_I4 // OLE_XPOS_HIMETRIC
+#define VTS_YPOS_HIMETRIC VTS_I4 // OLE_YPOS_HIMETRIC
+#define VTS_XSIZE_HIMETRIC VTS_I4 // OLE_XSIZE_HIMETRIC
+#define VTS_YSIZE_HIMETRIC VTS_I4 // OLE_YSIZE_HIMETRIC
+#define VTS_TRISTATE VTS_I2 // OLE_TRISTATE
+#define VTS_OPTEXCLUSIVE VTS_BOOL // OLE_OPTEXCLUSIVE
+
+#define VTS_PCOLOR VTS_PI4 // OLE_COLOR*
+#define VTS_PXPOS_PIXELS VTS_PI4 // OLE_XPOS_PIXELS*
+#define VTS_PYPOS_PIXELS VTS_PI4 // OLE_YPOS_PIXELS*
+#define VTS_PXSIZE_PIXELS VTS_PI4 // OLE_XSIZE_PIXELS*
+#define VTS_PYSIZE_PIXELS VTS_PI4 // OLE_YSIZE_PIXELS*
+#define VTS_PXPOS_HIMETRIC VTS_PI4 // OLE_XPOS_HIMETRIC*
+#define VTS_PYPOS_HIMETRIC VTS_PI4 // OLE_YPOS_HIMETRIC*
+#define VTS_PXSIZE_HIMETRIC VTS_PI4 // OLE_XSIZE_HIMETRIC*
+#define VTS_PYSIZE_HIMETRIC VTS_PI4 // OLE_YSIZE_HIMETRIC*
+#define VTS_PTRISTATE VTS_PI2 // OLE_TRISTATE*
+#define VTS_POPTEXCLUSIVE VTS_PBOOL // OLE_OPTEXCLUSIVE*
+
+#define VTS_FONT VTS_DISPATCH // IFontDispatch*
+#define VTS_PICTURE VTS_DISPATCH // IPictureDispatch*
+
+#define VTS_HANDLE VTS_I4 // OLE_HANDLE
+#define VTS_PHANDLE VTS_PI4 // OLE_HANDLE*
+
+// these DISP_ macros cause the framework to generate the DISPID
+#define DISP_FUNCTION(theClass, szExternalName, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), DISPID_UNKNOWN, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnMember, (AFX_PMSG)0, 0, \
+ afxDispCustom }, \
+
+#define DISP_PROPERTY(theClass, szExternalName, memberName, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, (AFX_PMSG)0, (AFX_PMSG)0, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_NOTIFY(theClass, szExternalName, memberName, pfnAfterSet, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, (AFX_PMSG)0, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnAfterSet, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_EX(theClass, szExternalName, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnSet, 0, afxDispCustom }, \
+
+#define DISP_PROPERTY_PARAM(theClass, szExternalName, pfnGet, pfnSet, vtPropType, vtsParams) \
+ { _T(szExternalName), DISPID_UNKNOWN, vtsParams, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnSet, 0, afxDispCustom }, \
+
+// these DISP_ macros allow the app to determine the DISPID
+#define DISP_FUNCTION_ID(theClass, szExternalName, dispid, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnMember, (AFX_PMSG)0, 0, \
+ afxDispCustom }, \
+
+#define DISP_PROPERTY_ID(theClass, szExternalName, dispid, memberName, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, (AFX_PMSG)0, (AFX_PMSG)0, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_NOTIFY_ID(theClass, szExternalName, dispid, memberName, pfnAfterSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, (AFX_PMSG)0, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnAfterSet, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_EX_ID(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnSet, 0, afxDispCustom }, \
+
+#define DISP_PROPERTY_PARAM_ID(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnSet, 0, afxDispCustom }, \
+
+// the DISP_DEFVALUE is a special case macro that creates an alias for DISPID_VALUE
+#define DISP_DEFVALUE(theClass, szExternalName) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, VT_MFCVALUE, \
+ (AFX_PMSG)0, (AFX_PMSG)0, 0, afxDispCustom }, \
+
+#define DISP_DEFVALUE_ID(theClass, dispid) \
+ { NULL, dispid, NULL, VT_MFCVALUE, (AFX_PMSG)0, (AFX_PMSG)0, 0, \
+ afxDispCustom }, \
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for creating "creatable" automation classes.
+
+#define DECLARE_OLECREATE(class_name) \
+public: \
+ static AFX_DATA COleObjectFactory factory; \
+ static AFX_DATA const GUID guid; \
+
+#define IMPLEMENT_OLECREATE(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ AFX_DATADEF COleObjectFactory class_name::factory(class_name::guid, \
+ RUNTIME_CLASS(class_name), FALSE, _T(external_name)); \
+ const AFX_DATADEF GUID class_name::guid = \
+ { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// Helper class for driving IDispatch
+
+class COleDispatchDriver
+{
+// Constructors
+public:
+ COleDispatchDriver();
+ COleDispatchDriver(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE);
+ COleDispatchDriver(const COleDispatchDriver& dispatchSrc);
+
+// Attributes
+ LPDISPATCH m_lpDispatch;
+ BOOL m_bAutoRelease;
+
+// Operations
+ BOOL CreateDispatch(REFCLSID clsid, COleException* pError = NULL);
+ BOOL CreateDispatch(LPCTSTR lpszProgID, COleException* pError = NULL);
+
+ void AttachDispatch(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE);
+ LPDISPATCH DetachDispatch();
+ // detach and get ownership of m_lpDispatch
+ void ReleaseDispatch();
+
+ // helpers for IDispatch::Invoke
+ void AFX_CDECL InvokeHelper(DISPID dwDispID, WORD wFlags,
+ VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ...);
+ void AFX_CDECL SetProperty(DISPID dwDispID, VARTYPE vtProp, ...);
+ void GetProperty(DISPID dwDispID, VARTYPE vtProp, void* pvProp) const;
+
+ // special operators
+ operator LPDISPATCH();
+ const COleDispatchDriver& operator=(const COleDispatchDriver& dispatchSrc);
+
+// Implementation
+public:
+ ~COleDispatchDriver();
+ void InvokeHelperV(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
+ void* pvRet, const BYTE* pbParamInfo, va_list argList);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Class Factory implementation (binds OLE class factory -> runtime class)
+// (all specific class factories derive from this class factory)
+
+class COleObjectFactory : public CCmdTarget
+{
+ DECLARE_DYNAMIC(COleObjectFactory)
+
+// Construction
+public:
+ COleObjectFactory(REFCLSID clsid, CRuntimeClass* pRuntimeClass,
+ BOOL bMultiInstance, LPCTSTR lpszProgID);
+
+// Attributes
+ BOOL IsRegistered() const;
+ REFCLSID GetClassID() const;
+
+// Operations
+ BOOL Register();
+ void Revoke();
+ void UpdateRegistry(LPCTSTR lpszProgID = NULL);
+ // default uses m_lpszProgID if not NULL
+ BOOL IsLicenseValid();
+
+ static BOOL PASCAL RegisterAll();
+ static void PASCAL RevokeAll();
+ static BOOL PASCAL UpdateRegistryAll(BOOL bRegister = TRUE);
+
+// Overridables
+protected:
+ virtual CCmdTarget* OnCreateObject();
+ virtual BOOL UpdateRegistry(BOOL bRegister);
+ virtual BOOL VerifyUserLicense();
+ virtual BOOL GetLicenseKey(DWORD dwReserved, BSTR* pbstrKey);
+ virtual BOOL VerifyLicenseKey(BSTR bstrKey);
+
+// Implementation
+public:
+ virtual ~COleObjectFactory();
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif
+
+public:
+ COleObjectFactory* m_pNextFactory; // list of factories maintained
+
+protected:
+ DWORD m_dwRegister; // registry identifier
+ CLSID m_clsid; // registered class ID
+ CRuntimeClass* m_pRuntimeClass; // runtime class of CCmdTarget derivative
+ BOOL m_bMultiInstance; // multiple instance?
+ LPCTSTR m_lpszProgID; // human readable class ID
+ BYTE m_bLicenseChecked;
+ BYTE m_bLicenseValid;
+ BYTE m_bRegistered; // is currently registered w/ system
+ BYTE m_bReserved; // reserved for future use
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(ClassFactory, IClassFactory2)
+ INIT_INTERFACE_PART(COleObjectFactory, ClassFactory)
+ STDMETHOD(CreateInstance)(LPUNKNOWN, REFIID, LPVOID*);
+ STDMETHOD(LockServer)(BOOL);
+ STDMETHOD(GetLicInfo)(LPLICINFO);
+ STDMETHOD(RequestLicKey)(DWORD, BSTR*);
+ STDMETHOD(CreateInstanceLic)(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR,
+ LPVOID*);
+ END_INTERFACE_PART(ClassFactory)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend SCODE AFXAPI AfxDllGetClassObject(REFCLSID, REFIID, LPVOID*);
+ friend SCODE STDAPICALLTYPE DllGetClassObject(REFCLSID, REFIID, LPVOID*);
+};
+
+// Define COleObjectFactoryEx for compatibility with old CDK
+#define COleObjectFactoryEx COleObjectFactory
+
+//////////////////////////////////////////////////////////////////////////////
+// COleTemplateServer - COleObjectFactory using CDocTemplates
+
+// This enumeration is used in AfxOleRegisterServerClass to pick the
+// correct registration entries given the application type.
+enum OLE_APPTYPE
+{
+ OAT_INPLACE_SERVER = 0, // server has full server user-interface
+ OAT_SERVER = 1, // server supports only embedding
+ OAT_CONTAINER = 2, // container supports links to embeddings
+ OAT_DISPATCH_OBJECT = 3, // IDispatch capable object
+};
+
+class COleTemplateServer : public COleObjectFactory
+{
+// Constructors
+public:
+ COleTemplateServer();
+
+// Operations
+ void ConnectTemplate(REFCLSID clsid, CDocTemplate* pDocTemplate,
+ BOOL bMultiInstance);
+ // set doc template after creating it in InitInstance
+ void UpdateRegistry(OLE_APPTYPE nAppType = OAT_INPLACE_SERVER,
+ LPCTSTR* rglpszRegister = NULL, LPCTSTR* rglpszOverwrite = NULL);
+ // may want to UpdateRegistry if not run with /Embedded
+
+// Implementation
+protected:
+ virtual CCmdTarget* OnCreateObject();
+ CDocTemplate* m_pDocTemplate;
+
+private:
+ void UpdateRegistry(LPCTSTR lpszProgID);
+ // hide base class version of UpdateRegistry
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// System registry helpers
+
+// Helper to register server in case of no .REG file loaded
+BOOL AFXAPI AfxOleRegisterServerClass(
+ REFCLSID clsid, LPCTSTR lpszClassName,
+ LPCTSTR lpszShortTypeName, LPCTSTR lpszLongTypeName,
+ OLE_APPTYPE nAppType = OAT_SERVER,
+ LPCTSTR* rglpszRegister = NULL, LPCTSTR* rglpszOverwrite = NULL,
+ int nIconIndex = 0);
+
+// AfxOleRegisterHelper is a worker function used by AfxOleRegisterServerClass
+// (available for advanced registry work)
+BOOL AFXAPI AfxOleRegisterHelper(LPCTSTR const* rglpszRegister,
+ LPCTSTR const* rglpszSymbols, int nSymbols, BOOL bReplace,
+ HKEY hKeyRoot = ((HKEY)0x80000000)); // HKEY_CLASSES_ROOT
+
+/////////////////////////////////////////////////////////////////////////////
+// Connection maps
+
+#define BEGIN_CONNECTION_PART(theClass, localClass) \
+ class X##localClass : public CConnectionPoint \
+ { \
+ public: \
+ X##localClass() \
+ { m_nOffset = offsetof(theClass, m_x##localClass); }
+
+#define CONNECTION_IID(iid) \
+ REFIID GetIID() { return iid; }
+
+#define END_CONNECTION_PART(localClass) \
+ } m_x##localClass; \
+ friend class X##localClass;
+
+#ifdef _AFXDLL
+#define BEGIN_CONNECTION_MAP(theClass, theBase) \
+ const AFX_CONNECTIONMAP* PASCAL theClass::_GetBaseConnectionMap() \
+ { return &theBase::connectionMap; } \
+ const AFX_CONNECTIONMAP* theClass::GetConnectionMap() const \
+ { return &theClass::connectionMap; } \
+ const AFX_DATADEF AFX_CONNECTIONMAP theClass::connectionMap = \
+ { &theClass::_GetBaseConnectionMap, &theClass::_connectionEntries[0], }; \
+ const AFX_DATADEF AFX_CONNECTIONMAP_ENTRY theClass::_connectionEntries[] = \
+ { \
+
+#else
+#define BEGIN_CONNECTION_MAP(theClass, theBase) \
+ const AFX_CONNECTIONMAP* theClass::GetConnectionMap() const \
+ { return &theClass::connectionMap; } \
+ const AFX_DATADEF AFX_CONNECTIONMAP theClass::connectionMap = \
+ { &(theBase::connectionMap), &theClass::_connectionEntries[0], }; \
+ const AFX_DATADEF AFX_CONNECTIONMAP_ENTRY theClass::_connectionEntries[] = \
+ { \
+
+#endif
+
+#define CONNECTION_PART(theClass, iid, localClass) \
+ { &iid, offsetof(theClass, m_x##localClass) }, \
+
+#define END_CONNECTION_MAP() \
+ { NULL, (size_t)-1 } \
+ }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// CConnectionPoint
+
+class CConnectionPoint : public CCmdTarget
+{
+// Constructors
+public:
+ CConnectionPoint();
+
+// Operations
+ const CPtrArray* GetConnections();
+
+// Overridables
+ virtual LPCONNECTIONPOINTCONTAINER GetContainer();
+ virtual REFIID GetIID() = 0;
+ virtual void OnAdvise(BOOL bAdvise);
+ virtual int GetMaxConnections();
+
+// Implementation
+ ~CConnectionPoint();
+
+protected:
+ size_t m_nOffset;
+ CPtrArray m_Connections;
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(ConnPt, IConnectionPoint)
+ INIT_INTERFACE_PART(CConnectionPoint, ConnPt)
+ STDMETHOD(GetConnectionInterface)(IID* pIID);
+ STDMETHOD(GetConnectionPointContainer)(
+ IConnectionPointContainer** ppCPC);
+ STDMETHOD(Advise)(LPUNKNOWN pUnkSink, DWORD* pdwCookie);
+ STDMETHOD(Unadvise)(DWORD dwCookie);
+ STDMETHOD(EnumConnections)(LPENUMCONNECTIONS* ppEnum);
+ END_INTERFACE_PART(ConnPt)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// EventSink Maps
+
+#ifndef _AFX_NO_OCC_SUPPORT
+
+#ifdef _AFXDLL
+#define BEGIN_EVENTSINK_MAP(theClass, baseClass) \
+ const AFX_EVENTSINKMAP* PASCAL theClass::_GetBaseEventSinkMap() \
+ { return &baseClass::eventsinkMap; } \
+ const AFX_EVENTSINKMAP* theClass::GetEventSinkMap() const \
+ { return &theClass::eventsinkMap; } \
+ const AFX_EVENTSINKMAP theClass::eventsinkMap = \
+ { &theClass::_GetBaseEventSinkMap, &theClass::_eventsinkEntries[0], \
+ &theClass::_eventsinkEntryCount }; \
+ UINT theClass::_eventsinkEntryCount = (UINT)-1; \
+ const AFX_EVENTSINKMAP_ENTRY theClass::_eventsinkEntries[] = \
+ { \
+
+#else
+#define BEGIN_EVENTSINK_MAP(theClass, baseClass) \
+ const AFX_EVENTSINKMAP* theClass::GetEventSinkMap() const \
+ { return &theClass::eventsinkMap; } \
+ const AFX_EVENTSINKMAP theClass::eventsinkMap = \
+ { &baseClass::eventsinkMap, &theClass::_eventsinkEntries[0], \
+ &theClass::_eventsinkEntryCount }; \
+ UINT theClass::_eventsinkEntryCount = (UINT)-1; \
+ const AFX_EVENTSINKMAP_ENTRY theClass::_eventsinkEntries[] = \
+ { \
+
+#endif
+
+#define END_EVENTSINK_MAP() \
+ { VTS_NONE, DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)NULL, (AFX_PMSG)NULL, (size_t)-1, afxDispCustom, \
+ (UINT)-1, 0 } }; \
+
+#define ON_EVENT(theClass, id, dispid, pfnHandler, vtsParams) \
+ { _T(""), dispid, vtsParams, VT_BOOL, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnHandler, (AFX_PMSG)0, 0, \
+ afxDispCustom, id, (UINT)-1 }, \
+
+#define ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler, vtsParams) \
+ { _T(""), dispid, vtsParams, VT_BOOL, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnHandler, (AFX_PMSG)0, 0, \
+ afxDispCustom, idFirst, idLast }, \
+
+#define ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged) \
+ { _T(""), dispid, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(BOOL*))pfnRequest, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(void))pfnChanged, \
+ 1, afxDispCustom, id, (UINT)-1 }, \
+
+#define ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged) \
+ { _T(""), dispid, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(UINT, BOOL*))pfnRequest, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(UINT))pfnChanged, \
+ 1, afxDispCustom, idFirst, idLast }, \
+
+#define ON_EVENT_REFLECT(theClass, dispid, pfnHandler, vtsParams) \
+ { _T(""), dispid, vtsParams, VT_BOOL, \
+ (AFX_PMSG)(void (theClass::*)(void))pfnHandler, (AFX_PMSG)0, 0, \
+ afxDispCustom, (UINT)-1, (UINT)-1 }, \
+
+#define ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged) \
+ { _T(""), dispid, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(BOOL*))pfnRequest, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(void))pfnChanged, \
+ 1, afxDispCustom, (UINT)-1, (UINT)-1 }, \
+
+#endif // !_AFX_NO_OCC_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for type library information
+
+CTypeLibCache* AFXAPI AfxGetTypeLibCache(const GUID* pTypeLibID);
+
+#define DECLARE_OLETYPELIB(class_name) \
+ protected: \
+ virtual UINT GetTypeInfoCount(); \
+ virtual HRESULT GetTypeLib(LCID, LPTYPELIB*); \
+ virtual CTypeLibCache* GetTypeLibCache(); \
+
+#define IMPLEMENT_OLETYPELIB(class_name, tlid, wVerMajor, wVerMinor) \
+ UINT class_name::GetTypeInfoCount() \
+ { return 1; } \
+ HRESULT class_name::GetTypeLib(LCID lcid, LPTYPELIB* ppTypeLib) \
+ { return ::LoadRegTypeLib(tlid, wVerMajor, wVerMinor, lcid, ppTypeLib); } \
+ CTypeLibCache* class_name::GetTypeLibCache() \
+ { return AfxGetTypeLibCache(&tlid); } \
+
+/////////////////////////////////////////////////////////////////////////////
+// Init & Term helpers
+
+BOOL AFXAPI AfxOleInit();
+void AFXAPI AfxOleTerm(BOOL bJustRevoke = FALSE);
+void AFXAPI AfxOleTermOrFreeLib(BOOL bTerm = TRUE, BOOL bJustRevoke = FALSE);
+
+/////////////////////////////////////////////////////////////////////////////
+// Memory management helpers (for OLE task allocator memory)
+
+#define AfxAllocTaskMem(nSize) CoTaskMemAlloc(nSize)
+#define AfxFreeTaskMem(p) CoTaskMemFree(p)
+
+LPWSTR AFXAPI AfxAllocTaskWideString(LPCWSTR lpszString);
+LPWSTR AFXAPI AfxAllocTaskWideString(LPCSTR lpszString);
+LPSTR AFXAPI AfxAllocTaskAnsiString(LPCWSTR lpszString);
+LPSTR AFXAPI AfxAllocTaskAnsiString(LPCSTR lpszString);
+
+#ifdef _UNICODE
+ #define AfxAllocTaskString(x) AfxAllocTaskWideString(x)
+#else
+ #define AfxAllocTaskString(x) AfxAllocTaskAnsiString(x)
+#endif
+
+#ifdef OLE2ANSI
+ #define AfxAllocTaskOleString(x) AfxAllocTaskAnsiString(x)
+#else
+ #define AfxAllocTaskOleString(x) AfxAllocTaskWideString(x)
+#endif
+
+HRESULT AFXAPI AfxGetClassIDFromString(LPCTSTR lpsz, LPCLSID lpClsID);
+
+/////////////////////////////////////////////////////////////////////////////
+// Special in-proc server APIs
+
+SCODE AFXAPI AfxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
+SCODE AFXAPI AfxDllCanUnloadNow(void);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleVariant class helpers
+
+#define AFX_OLE_TRUE (-1)
+#define AFX_OLE_FALSE 0
+
+class CLongBinary; // forward reference (see afxdb_.h)
+
+/////////////////////////////////////////////////////////////////////////////
+// COleVariant class - wraps VARIANT types
+
+typedef const VARIANT* LPCVARIANT;
+
+class COleVariant : public tagVARIANT
+{
+// Constructors
+public:
+ COleVariant();
+
+ COleVariant(const VARIANT& varSrc);
+ COleVariant(LPCVARIANT pSrc);
+ COleVariant(const COleVariant& varSrc);
+
+ COleVariant(LPCTSTR lpszSrc);
+ COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set to ANSI string
+ COleVariant(CString& strSrc);
+
+ COleVariant(BYTE nSrc);
+ COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);
+ COleVariant(long lSrc, VARTYPE vtSrc = VT_I4);
+ COleVariant(const COleCurrency& curSrc);
+
+ COleVariant(float fltSrc);
+ COleVariant(double dblSrc);
+ COleVariant(const COleDateTime& timeSrc);
+
+ COleVariant(const CByteArray& arrSrc);
+ COleVariant(const CLongBinary& lbSrc);
+
+// Operations
+public:
+ void Clear();
+ void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);
+ VARIANT Detach();
+
+ BOOL operator==(const VARIANT& varSrc) const;
+ BOOL operator==(LPCVARIANT pSrc) const;
+
+ const COleVariant& operator=(const VARIANT& varSrc);
+ const COleVariant& operator=(LPCVARIANT pSrc);
+ const COleVariant& operator=(const COleVariant& varSrc);
+
+ const COleVariant& operator=(const LPCTSTR lpszSrc);
+ const COleVariant& operator=(const CString& strSrc);
+
+ const COleVariant& operator=(BYTE nSrc);
+ const COleVariant& operator=(short nSrc);
+ const COleVariant& operator=(long lSrc);
+ const COleVariant& operator=(const COleCurrency& curSrc);
+
+ const COleVariant& operator=(float fltSrc);
+ const COleVariant& operator=(double dblSrc);
+ const COleVariant& operator=(const COleDateTime& dateSrc);
+
+ const COleVariant& operator=(const CByteArray& arrSrc);
+ const COleVariant& operator=(const CLongBinary& lbSrc);
+
+ void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set ANSI string
+
+ operator LPVARIANT();
+ operator LPCVARIANT() const;
+
+// Implementation
+public:
+ ~COleVariant();
+};
+
+// COleVariant diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleVariant varSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleVariant varSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleVariant& varSrc);
+
+// Helper for initializing VARIANT structures
+void AFXAPI AfxVariantInit(LPVARIANT pVar);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleCurrency class
+
+class COleCurrency
+{
+// Constructors
+public:
+ COleCurrency();
+
+ COleCurrency(CURRENCY cySrc);
+ COleCurrency(const COleCurrency& curSrc);
+ COleCurrency(const VARIANT& varSrc);
+ COleCurrency(long nUnits, long nFractionalUnits);
+
+// Attributes
+public:
+ enum CurrencyStatus
+ {
+ valid = 0,
+ invalid = 1, // Invalid currency (overflow, div 0, etc.)
+ null = 2, // Literally has no value
+ };
+
+ CURRENCY m_cur;
+ CurrencyStatus m_status;
+
+ void SetStatus(CurrencyStatus status);
+ CurrencyStatus GetStatus() const;
+
+// Operations
+public:
+ const COleCurrency& operator=(CURRENCY cySrc);
+ const COleCurrency& operator=(const COleCurrency& curSrc);
+ const COleCurrency& operator=(const VARIANT& varSrc);
+
+ BOOL operator==(const COleCurrency& cur) const;
+ BOOL operator!=(const COleCurrency& cur) const;
+ BOOL operator<(const COleCurrency& cur) const;
+ BOOL operator>(const COleCurrency& cur) const;
+ BOOL operator<=(const COleCurrency& cur) const;
+ BOOL operator>=(const COleCurrency& cur) const;
+
+ // Currency math
+ COleCurrency operator+(const COleCurrency& cur) const;
+ COleCurrency operator-(const COleCurrency& cur) const;
+ const COleCurrency& operator+=(const COleCurrency& cur);
+ const COleCurrency& operator-=(const COleCurrency& cur);
+ COleCurrency operator-() const;
+
+ COleCurrency operator*(long nOperand) const;
+ COleCurrency operator/(long nOperand) const;
+ const COleCurrency& operator*=(long nOperand);
+ const COleCurrency& operator/=(long nOperand);
+
+ operator CURRENCY() const;
+
+ // Currency definition
+ void SetCurrency(long nUnits, long nFractionalUnits);
+ BOOL ParseCurrency(LPCTSTR lpszCurrency, DWORD dwFlags = 0,
+ LCID = LANG_USER_DEFAULT);
+
+ // formatting
+ CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
+};
+
+// COleCurrency diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleCurrency curSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleCurrency curSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleCurrency& curSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDateTime class helpers
+
+#define AFX_OLE_DATETIME_ERROR (-1)
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDateTime class
+
+class COleDateTime
+{
+// Constructors
+public:
+ static COleDateTime PASCAL GetCurrentTime();
+
+ COleDateTime();
+
+ COleDateTime(const COleDateTime& dateSrc);
+ COleDateTime(const VARIANT& varSrc);
+ COleDateTime(DATE dtSrc);
+
+ COleDateTime(time_t timeSrc);
+ COleDateTime(const SYSTEMTIME& systimeSrc);
+ COleDateTime(const FILETIME& filetimeSrc);
+
+ COleDateTime(int nYear, int nMonth, int nDay,
+ int nHour, int nMin, int nSec);
+ COleDateTime(WORD wDosDate, WORD wDosTime);
+
+// Attributes
+public:
+ enum DateTimeStatus
+ {
+ valid = 0,
+ invalid = 1, // Invalid date (out of range, etc.)
+ null = 2, // Literally has no value
+ };
+
+ DATE m_dt;
+ DateTimeStatus m_status;
+
+ void SetStatus(DateTimeStatus status);
+ DateTimeStatus GetStatus() const;
+
+ int GetYear() const;
+ int GetMonth() const; // month of year (1 = Jan)
+ int GetDay() const; // day of month (0-31)
+ int GetHour() const; // hour in day (0-23)
+ int GetMinute() const; // minute in hour (0-59)
+ int GetSecond() const; // second in minute (0-59)
+ int GetDayOfWeek() const; // 1=Sun, 2=Mon, ..., 7=Sat
+ int GetDayOfYear() const; // days since start of year, Jan 1 = 1
+
+// Operations
+public:
+ const COleDateTime& operator=(const COleDateTime& dateSrc);
+ const COleDateTime& operator=(const VARIANT& varSrc);
+ const COleDateTime& operator=(DATE dtSrc);
+
+ const COleDateTime& operator=(const time_t& timeSrc);
+ const COleDateTime& operator=(const SYSTEMTIME& systimeSrc);
+ const COleDateTime& operator=(const FILETIME& filetimeSrc);
+
+ BOOL operator==(const COleDateTime& date) const;
+ BOOL operator!=(const COleDateTime& date) const;
+ BOOL operator<(const COleDateTime& date) const;
+ BOOL operator>(const COleDateTime& date) const;
+ BOOL operator<=(const COleDateTime& date) const;
+ BOOL operator>=(const COleDateTime& date) const;
+
+ // DateTime math
+ COleDateTime operator+(const COleDateTimeSpan& dateSpan) const;
+ COleDateTime operator-(const COleDateTimeSpan& dateSpan) const;
+ const COleDateTime& operator+=(const COleDateTimeSpan dateSpan);
+ const COleDateTime& operator-=(const COleDateTimeSpan dateSpan);
+
+ // DateTimeSpan math
+ COleDateTimeSpan operator-(const COleDateTime& date) const;
+
+ operator DATE() const;
+
+ BOOL SetDateTime(int nYear, int nMonth, int nDay,
+ int nHour, int nMin, int nSec);
+ BOOL SetDate(int nYear, int nMonth, int nDay);
+ BOOL SetTime(int nHour, int nMin, int nSec);
+ BOOL ParseDateTime(LPCTSTR lpszDate, DWORD dwFlags = 0,
+ LCID lcid = LANG_USER_DEFAULT);
+
+ // formatting
+ CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
+ CString Format(LPCTSTR lpszFormat) const;
+ CString Format(UINT nFormatID) const;
+
+// Implementation
+protected:
+ void CheckRange();
+ friend COleDateTimeSpan;
+};
+
+// COleDateTime diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleDateTime dateSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleDateTime dateSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleDateTime& dateSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDateTimeSpan class
+class COleDateTimeSpan
+{
+// Constructors
+public:
+ COleDateTimeSpan();
+
+ COleDateTimeSpan(double dblSpanSrc);
+ COleDateTimeSpan(const COleDateTimeSpan& dateSpanSrc);
+ COleDateTimeSpan(long lDays, int nHours, int nMins, int nSecs);
+
+// Attributes
+public:
+ enum DateTimeSpanStatus
+ {
+ valid = 0,
+ invalid = 1, // Invalid span (out of range, etc.)
+ null = 2, // Literally has no value
+ };
+
+ double m_span;
+ DateTimeSpanStatus m_status;
+
+ void SetStatus(DateTimeSpanStatus status);
+ DateTimeSpanStatus GetStatus() const;
+
+ double GetTotalDays() const; // span in days (about -3.65e6 to 3.65e6)
+ double GetTotalHours() const; // span in hours (about -8.77e7 to 8.77e6)
+ double GetTotalMinutes() const; // span in minutes (about -5.26e9 to 5.26e9)
+ double GetTotalSeconds() const; // span in seconds (about -3.16e11 to 3.16e11)
+
+ long GetDays() const; // component days in span
+ long GetHours() const; // component hours in span (-23 to 23)
+ long GetMinutes() const; // component minutes in span (-59 to 59)
+ long GetSeconds() const; // component seconds in span (-59 to 59)
+
+// Operations
+public:
+ const COleDateTimeSpan& operator=(double dblSpanSrc);
+ const COleDateTimeSpan& operator=(const COleDateTimeSpan& dateSpanSrc);
+
+ BOOL operator==(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator!=(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator<(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator>(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator<=(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator>=(const COleDateTimeSpan& dateSpan) const;
+
+ // DateTimeSpan math
+ COleDateTimeSpan operator+(const COleDateTimeSpan& dateSpan) const;
+ COleDateTimeSpan operator-(const COleDateTimeSpan& dateSpan) const;
+ const COleDateTimeSpan& operator+=(const COleDateTimeSpan dateSpan);
+ const COleDateTimeSpan& operator-=(const COleDateTimeSpan dateSpan);
+ COleDateTimeSpan operator-() const;
+
+ operator double() const;
+
+ void SetDateTimeSpan(long lDays, int nHours, int nMins, int nSecs);
+
+ // formatting
+ CString Format(LPCTSTR pFormat) const;
+ CString Format(UINT nID) const;
+
+// Implementation
+public:
+ void CheckRange();
+ friend COleDateTime;
+};
+
+// COleDateTimeSpan diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc,COleDateTimeSpan dateSpanSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleDateTimeSpan dateSpanSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleDateTimeSpan& dateSpanSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// DDX_ functions for OLE controls on dialogs
+
+#ifndef _AFX_NO_OCC_SUPPORT
+
+void AFXAPI DDX_OCText(CDataExchange* pDX, int nIDC, DISPID dispid,
+ CString& value);
+void AFXAPI DDX_OCTextRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ CString& value);
+void AFXAPI DDX_OCBool(CDataExchange* pDX, int nIDC, DISPID dispid,
+ BOOL& value);
+void AFXAPI DDX_OCBoolRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ BOOL& value);
+void AFXAPI DDX_OCInt(CDataExchange* pDX, int nIDC, DISPID dispid,
+ int &value);
+void AFXAPI DDX_OCIntRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ int &value);
+void AFXAPI DDX_OCInt(CDataExchange* pDX, int nIDC, DISPID dispid,
+ long &value);
+void AFXAPI DDX_OCIntRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ long &value);
+void AFXAPI DDX_OCShort(CDataExchange* pDX, int nIDC, DISPID dispid,
+ short& value);
+void AFXAPI DDX_OCShortRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ short& value);
+void AFXAPI DDX_OCColor(CDataExchange* pDX, int nIDC, DISPID dispid,
+ OLE_COLOR& value);
+void AFXAPI DDX_OCColorRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ OLE_COLOR& value);
+void AFXAPI DDX_OCFloat(CDataExchange* pDX, int nIDC, DISPID dispid,
+ float& value);
+void AFXAPI DDX_OCFloatRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ float& value);
+void AFXAPI DDX_OCFloat(CDataExchange* pDX, int nIDC, DISPID dispid,
+ double& value);
+void AFXAPI DDX_OCFloatRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ double& value);
+
+#endif // !_AFX_NO_OCC_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// Function to enable containment of OLE controls
+
+#ifndef _AFX_NO_OCC_SUPPORT
+void AFX_CDECL AfxEnableControlContainer();
+#else
+#define AfxEnableControlContainer()
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDISP_INLINE inline
+#include <afxole.inl>
+#undef _AFXDISP_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDISP_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxdlgs.h b/public/sdk/inc/mfc40/afxdlgs.h
new file mode 100644
index 000000000..2180f899b
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdlgs.h
@@ -0,0 +1,643 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDLGS_H__
+#define __AFXDLGS_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifndef _INC_COMMDLG
+ #include <commdlg.h> // common dialog APIs
+#endif
+
+// Avoid mapping GetFileTitle to GetFileTitle[A/W]
+#ifdef GetFileTitle
+#undef GetFileTitle
+inline short APIENTRY GetFileTitle(LPCTSTR lpszFile, LPTSTR lpszTitle, WORD cbBuf)
+#ifdef UNICODE
+ { return ::GetFileTitleW(lpszFile, lpszTitle, cbBuf); }
+#else
+ { return ::GetFileTitleA(lpszFile, lpszTitle, cbBuf); }
+#endif
+#endif
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ #ifndef _RICHEDIT_
+ #include <richedit.h>
+ #endif
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLGS - MFC Standard dialogs
+
+// Classes declared in this file
+
+ // CDialog
+ class CCommonDialog; // implementation base class
+
+ // modeless dialogs
+ class CFindReplaceDialog; // Find/FindReplace dialog
+
+ // modal dialogs
+ class CFileDialog; // FileOpen/FileSaveAs dialogs
+ class CColorDialog; // Color picker dialog
+ class CFontDialog; // Font chooser dialog
+ class CPrintDialog; // Print/PrintSetup dialogs
+ class CPageSetupDialog; // Page Setup dialog
+
+ // CWnd
+ class CPropertySheet; // implements tabbed dialogs
+
+ // CDialog
+ class CPropertyPage; // Used with CPropertySheet for tabbed dialogs
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CCommonDialog - base class for all common dialogs
+
+class CCommonDialog : public CDialog
+{
+public:
+ CCommonDialog(CWnd* pParentWnd);
+
+// Implementation
+protected:
+ virtual void OnOK();
+ virtual void OnCancel();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFileDialog - used for FileOpen... or FileSaveAs...
+
+class CFileDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFileDialog)
+
+public:
+// Attributes
+ OPENFILENAME m_ofn; // open file parameter block
+
+// Constructors
+ CFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
+ LPCTSTR lpszDefExt = NULL,
+ LPCTSTR lpszFileName = NULL,
+ DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
+ LPCTSTR lpszFilter = NULL,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // Helpers for parsing file name after successful return
+ // or during Overridable callbacks if OFN_EXPLORER is set
+ CString GetPathName() const; // return full path and filename
+ CString GetFileName() const; // return only filename
+ CString GetFileExt() const; // return only ext
+ CString GetFileTitle() const; // return file title
+ BOOL GetReadOnlyPref() const; // return TRUE if readonly checked
+
+ // Enumerating multiple file selections
+ POSITION GetStartPosition() const;
+ CString GetNextPathName(POSITION& pos) const;
+
+ // Helpers for custom templates
+ void SetTemplate(UINT nWin3ID, UINT nWin4ID);
+ void SetTemplate(LPCTSTR lpWin3ID, LPCTSTR lpWin4ID);
+
+#ifndef _MAC
+ // Other operations available while the dialog is visible
+ CString GetFolderPath() const; // return full path
+ void SetControlText(int nID, LPCSTR lpsz);
+ void HideControl(int nID);
+ void SetDefExt(LPCSTR lpsz);
+#endif
+
+// Overridable callbacks
+protected:
+ friend UINT CALLBACK _AfxCommDlgProc(HWND, UINT, WPARAM, LPARAM);
+ virtual UINT OnShareViolation(LPCTSTR lpszPathName);
+ virtual BOOL OnFileNameOK();
+ virtual void OnLBSelChangedNotify(UINT nIDBox, UINT iCurSel, UINT nCode);
+
+ // only called back if OFN_EXPLORER is set
+ virtual void OnInitDone();
+ virtual void OnFileNameChange();
+ virtual void OnFolderChange();
+ virtual void OnTypeChange();
+
+// Implementation
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ BOOL m_bOpenFileDialog; // TRUE for file open, FALSE for file save
+ CString m_strFilter; // filter string
+ // separate fields with '|', terminate with '||\0'
+ TCHAR m_szFileTitle[64]; // contains file title after return
+ TCHAR m_szFileName[_MAX_PATH]; // contains full path name after return
+
+ OPENFILENAME* m_pofnTemp;
+
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFontDialog - used to select a font
+
+class CFontDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFontDialog)
+
+public:
+// Attributes
+ // font choosing parameter block
+ CHOOSEFONT m_cf;
+
+// Constructors
+ CFontDialog(LPLOGFONT lplfInitial = NULL,
+ DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS,
+ CDC* pdcPrinter = NULL,
+ CWnd* pParentWnd = NULL);
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ CFontDialog(const CHARFORMAT& charformat,
+ DWORD dwFlags = CF_SCREENFONTS,
+ CDC* pdcPrinter = NULL,
+ CWnd* pParentWnd = NULL);
+#endif
+// Operations
+ virtual int DoModal();
+
+ // Get the selected font (works during DoModal displayed or after)
+ void GetCurrentFont(LPLOGFONT lplf);
+
+ // Helpers for parsing information after successful return
+ CString GetFaceName() const; // return the face name of the font
+ CString GetStyleName() const; // return the style name of the font
+ int GetSize() const; // return the pt size of the font
+ COLORREF GetColor() const; // return the color of the font
+ int GetWeight() const; // return the chosen font weight
+ BOOL IsStrikeOut() const; // return TRUE if strikeout
+ BOOL IsUnderline() const; // return TRUE if underline
+ BOOL IsBold() const; // return TRUE if bold font
+ BOOL IsItalic() const; // return TRUE if italic font
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ void GetCharFormat(CHARFORMAT& cf) const;
+#endif
+
+// Implementation
+ LOGFONT m_lf; // default LOGFONT to store the info
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ DWORD FillInLogFont(const CHARFORMAT& cf);
+#endif
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szStyleName[64]; // contains style name after return
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CColorDialog - used to select a color
+
+class CColorDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CColorDialog)
+
+public:
+// Attributes
+ // color chooser parameter block
+ CHOOSECOLOR m_cc;
+
+// Constructors
+ CColorDialog(COLORREF clrInit = 0, DWORD dwFlags = 0,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // Set the current color while dialog is displayed
+ void SetCurrentColor(COLORREF clr);
+
+ // Helpers for parsing information after successful return
+ COLORREF GetColor() const;
+ static COLORREF* PASCAL GetSavedCustomColors();
+
+// Overridable callbacks
+protected:
+ friend UINT CALLBACK _AfxCommDlgProc(HWND, UINT, WPARAM, LPARAM);
+ virtual BOOL OnColorOK(); // validate color
+
+// Implementation
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ //{{AFX_MSG(CColorDialog)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// for backward compatibility clrSavedCustom is defined as GetSavedCustomColors
+#define clrSavedCustom GetSavedCustomColors()
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+// Page Setup dialog
+
+class CPageSetupDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CPageSetupDialog)
+
+public:
+// Attributes
+ PAGESETUPDLG m_psd;
+
+// Constructors
+ CPageSetupDialog(DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
+ CWnd* pParentWnd = NULL);
+
+// Attributes
+ LPDEVMODE GetDevMode() const; // return DEVMODE
+ CString GetDriverName() const; // return driver name
+ CString GetDeviceName() const; // return device name
+ CString GetPortName() const; // return output port name
+ HDC CreatePrinterDC();
+ CSize GetPaperSize() const;
+ void GetMargins(LPRECT lpRectMargins, LPRECT lpRectMinMargins) const;
+
+// Operations
+ virtual int DoModal();
+
+// Overridables
+ virtual UINT PreDrawPage(WORD wPaper, WORD wFlags, LPPAGESETUPDLG pPSD);
+ virtual UINT OnDrawPage(CDC* pDC, UINT nMessage, LPRECT lpRect);
+
+// Implementation
+protected:
+ static UINT CALLBACK PaintHookProc(HWND hWnd, UINT message, WPARAM wParam,
+ LPARAM lParam);
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+#endif //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// CPrintDialog - used for Print... and PrintSetup...
+
+class CPrintDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CPrintDialog)
+
+public:
+// Attributes
+ // print dialog parameter block (note this is a reference)
+ PRINTDLG& m_pd;
+
+// Constructors
+ CPrintDialog(BOOL bPrintSetupOnly,
+ // TRUE for Print Setup, FALSE for Print Dialog
+ DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS
+ | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // GetDefaults will not display a dialog but will get
+ // device defaults
+ BOOL GetDefaults();
+
+ // Helpers for parsing information after successful return
+ int GetCopies() const; // num. copies requested
+ BOOL PrintCollate() const; // TRUE if collate checked
+ BOOL PrintSelection() const; // TRUE if printing selection
+ BOOL PrintAll() const; // TRUE if printing all pages
+ BOOL PrintRange() const; // TRUE if printing page range
+ int GetFromPage() const; // starting page if valid
+ int GetToPage() const; // starting page if valid
+ LPDEVMODE GetDevMode() const; // return DEVMODE
+ CString GetDriverName() const; // return driver name
+ CString GetDeviceName() const; // return device name
+ CString GetPortName() const; // return output port name
+ HDC GetPrinterDC() const; // return HDC (caller must delete)
+
+ // This helper creates a DC based on the DEVNAMES and DEVMODE structures.
+ // This DC is returned, but also stored in m_pd.hDC as though it had been
+ // returned by CommDlg. It is assumed that any previously obtained DC
+ // has been/will be deleted by the user. This may be
+ // used without ever invoking the print/print setup dialogs.
+
+ HDC CreatePrinterDC();
+
+// Implementation
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+private:
+ PRINTDLG m_pdActual; // the Print/Print Setup need to share this
+protected:
+ // The following handle the case of print setup... from the print dialog
+ CPrintDialog(PRINTDLG& pdInit);
+ virtual CPrintDialog* AttachOnSetup();
+
+ //{{AFX_MSG(CPrintDialog)
+ afx_msg void OnPrintSetup();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Find/FindReplace modeless dialogs
+
+class CFindReplaceDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFindReplaceDialog)
+
+public:
+// Attributes
+ FINDREPLACE m_fr;
+
+// Constructors
+ CFindReplaceDialog();
+ // Note: you must allocate these on the heap.
+ // If you do not, you must derive and override PostNcDestroy()
+
+ BOOL Create(BOOL bFindDialogOnly, // TRUE for Find, FALSE for FindReplace
+ LPCTSTR lpszFindWhat,
+ LPCTSTR lpszReplaceWith = NULL,
+ DWORD dwFlags = FR_DOWN,
+ CWnd* pParentWnd = NULL);
+
+ // find/replace parameter block
+ static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
+
+// Operations
+ // Helpers for parsing information after successful return
+ CString GetReplaceString() const;// get replacement string
+ CString GetFindString() const; // get find string
+ BOOL SearchDown() const; // TRUE if search down, FALSE is up
+ BOOL FindNext() const; // TRUE if command is find next
+ BOOL MatchCase() const; // TRUE if matching case
+ BOOL MatchWholeWord() const; // TRUE if matching whole words only
+ BOOL ReplaceCurrent() const; // TRUE if replacing current string
+ BOOL ReplaceAll() const; // TRUE if replacing all occurrences
+ BOOL IsTerminating() const; // TRUE if terminating dialog
+
+// Implementation
+protected:
+ virtual void PostNcDestroy();
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szFindWhat[128];
+ TCHAR m_szReplaceWith[128];
+};
+
+////////////////////////////////////////////////////////////////////////////
+// CPropertyPage -- one page of a tabbed dialog
+
+class CPropertyPage : public CDialog
+{
+ DECLARE_DYNAMIC(CPropertyPage)
+
+// Construction
+public:
+ CPropertyPage(UINT nIDTemplate, UINT nIDCaption = 0);
+ CPropertyPage(LPCTSTR lpszTemplateName, UINT nIDCaption = 0);
+ CPropertyPage();
+ void Construct(UINT nIDTemplate, UINT nIDCaption = 0);
+ void Construct(LPCTSTR lpszTemplateName, UINT nIDCaption = 0);
+
+// Attributes
+ PROPSHEETPAGE m_psp;
+
+// Operations
+ void CancelToClose();
+ void SetModified(BOOL bChanged = TRUE);
+ LRESULT QuerySiblings(WPARAM wParam, LPARAM lParam);
+
+// Overridables
+public:
+ virtual BOOL OnApply();
+ virtual void OnReset();
+ virtual void OnOK();
+ virtual void OnCancel();
+ virtual BOOL OnSetActive();
+ virtual BOOL OnKillActive();
+ virtual BOOL OnQueryCancel();
+
+ virtual LRESULT OnWizardBack();
+ virtual LRESULT OnWizardNext();
+ virtual BOOL OnWizardFinish();
+
+// Implementation
+public:
+ virtual ~CPropertyPage();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ void EndDialog(int nEndID); // incorrect to call and will assert
+#endif
+
+protected:
+ // private implementation data
+ CString m_strCaption;
+
+ // implementation helpers
+ void CommonConstruct(LPCTSTR lpszTemplateName, UINT nIDCaption);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+ virtual BOOL PreTranslateMessage(MSG*);
+ LRESULT MapWizardResult(LRESULT lToMap);
+
+ void PreProcessPageTemplate(PROPSHEETPAGE& psp, BOOL bWizard);
+#ifndef _AFX_NO_OCC_SUPPORT
+ void Cleanup();
+ const DLGTEMPLATE* InitDialogInfo(const DLGTEMPLATE* pTemplate);
+#endif
+
+ // Generated message map functions
+ //{{AFX_MSG(CPropertyPage)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CPropertySheet;
+};
+
+////////////////////////////////////////////////////////////////////////////
+// CPropertySheet -- a tabbed "dialog" (really a popup-window)
+
+class CTabCtrl; // forward reference (see afxcmn.h)
+
+class CPropertySheet : public CWnd
+{
+ DECLARE_DYNAMIC(CPropertySheet)
+
+// Construction
+public:
+ CPropertySheet();
+ CPropertySheet(UINT nIDCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+ CPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+ void Construct(UINT nIDCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+ void Construct(LPCTSTR pszCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+
+ // for modeless creation
+ BOOL Create(CWnd* pParentWnd = NULL, DWORD dwStyle = (DWORD)-1,
+ DWORD dwExStyle = 0);
+ // the default style, expressed by passing -1 as dwStyle, is actually:
+ // WS_SYSMENU | WS_POPUP | WS_CAPTION | DS_MODALFRAME | DS_CONTEXT_HELP | WS_VISIBLE
+
+// Attributes
+public:
+ PROPSHEETHEADER m_psh;
+
+ int GetPageCount() const;
+ CPropertyPage* GetActivePage() const;
+ int GetActiveIndex() const;
+ CPropertyPage* GetPage(int nPage) const;
+ int GetPageIndex(CPropertyPage* pPage);
+ BOOL SetActivePage(int nPage);
+ BOOL SetActivePage(CPropertyPage* pPage);
+ void SetTitle(LPCTSTR lpszText, UINT nStyle = 0);
+ CTabCtrl* GetTabControl() const;
+
+ void SetWizardMode();
+ void SetFinishText(LPCTSTR lpszText);
+ void SetWizardButtons(DWORD dwFlags);
+
+// Operations
+public:
+ virtual int DoModal();
+ void AddPage(CPropertyPage* pPage);
+ void RemovePage(CPropertyPage* pPage);
+ void RemovePage(int nPage);
+ void EndDialog(int nEndID); // used to terminate a modal dialog
+ BOOL PressButton(int nButton);
+
+// Implementation
+public:
+ virtual ~CPropertySheet();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ void CommonConstruct(CWnd* pParentWnd, UINT iSelectPage);
+ void EnableStackedTabs(BOOL bStacked);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void BuildPropPageArray();
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual BOOL OnInitDialog();
+ virtual BOOL ContinueModal();
+
+protected:
+ CPtrArray m_pages; // array of CPropertyPage pointers
+ CString m_strCaption; // caption of the pseudo-dialog
+ CWnd* m_pParentWnd; // parent window of property sheet
+ BOOL m_bStacked; // EnableStackedTabs sets this
+ BOOL m_bModeless; // TRUE when Create called instead of DoModal
+
+ // Generated message map functions
+ //{{AFX_MSG(CPropertySheet)
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg LRESULT OnCommandHelp(WPARAM, LPARAM);
+ afx_msg void OnClose();
+ afx_msg void OnSysCommand(UINT nID, LPARAM);
+ afx_msg LRESULT OnSetDefID(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CPropertyPage;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDLGS_INLINE inline
+#include <afxdlgs.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDLGS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxdlgs.inl b/public/sdk/inc/mfc40/afxdlgs.inl
new file mode 100644
index 000000000..e390f474a
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdlgs.inl
@@ -0,0 +1,100 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDLGS.H
+
+#ifdef _AFXDLGS_INLINE
+
+_AFXDLGS_INLINE CCommonDialog::CCommonDialog(CWnd* pParentWnd)
+ : CDialog((UINT)0, pParentWnd) { }
+
+_AFXDLGS_INLINE BOOL CFileDialog::GetReadOnlyPref() const
+ { return m_ofn.Flags & OFN_READONLY ? TRUE : FALSE; }
+_AFXDLGS_INLINE void CFileDialog::SetTemplate(UINT nWin3ID, UINT nWin4ID)
+ { SetTemplate(MAKEINTRESOURCE(nWin3ID), MAKEINTRESOURCE(nWin4ID)); }
+_AFXDLGS_INLINE POSITION CFileDialog::GetStartPosition() const
+ { return (POSITION)m_ofn.lpstrFile; }
+_AFXDLGS_INLINE CString CFontDialog::GetFaceName() const
+ { return (LPCTSTR)m_cf.lpLogFont->lfFaceName; }
+_AFXDLGS_INLINE CString CFontDialog::GetStyleName() const
+ { return m_cf.lpszStyle; }
+_AFXDLGS_INLINE int CFontDialog::GetSize() const
+ { return m_cf.iPointSize; }
+_AFXDLGS_INLINE int CFontDialog::GetWeight() const
+ { return (int)m_cf.lpLogFont->lfWeight; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsItalic() const
+ { return m_cf.lpLogFont->lfItalic ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsStrikeOut() const
+ { return m_cf.lpLogFont->lfStrikeOut ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsBold() const
+ { return m_cf.lpLogFont->lfWeight == FW_BOLD ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsUnderline() const
+ { return m_cf.lpLogFont->lfUnderline ? TRUE : FALSE; }
+_AFXDLGS_INLINE COLORREF CFontDialog::GetColor() const
+ { return m_cf.rgbColors; }
+_AFXDLGS_INLINE COLORREF CColorDialog::GetColor() const
+ { return m_cc.rgbResult; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintSelection() const
+ { return m_pd.Flags & PD_SELECTION ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintRange() const
+ { return m_pd.Flags & PD_PAGENUMS ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintAll() const
+ { return !PrintRange() && !PrintSelection() ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintCollate() const
+ { return m_pd.Flags & PD_COLLATE ? TRUE : FALSE; }
+_AFXDLGS_INLINE int CPrintDialog::GetFromPage() const
+ { return (PrintRange() ? m_pd.nFromPage :-1); }
+_AFXDLGS_INLINE int CPrintDialog::GetToPage() const
+ { return (PrintRange() ? m_pd.nToPage :-1); }
+_AFXDLGS_INLINE HDC CPrintDialog::GetPrinterDC() const
+ { ASSERT_VALID(this);
+ ASSERT(m_pd.Flags & PD_RETURNDC);
+ return m_pd.hDC; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::IsTerminating() const
+ { return m_fr.Flags & FR_DIALOGTERM ? TRUE : FALSE ; }
+_AFXDLGS_INLINE CString CFindReplaceDialog::GetReplaceString() const
+ { return m_fr.lpstrReplaceWith; }
+_AFXDLGS_INLINE CString CFindReplaceDialog::GetFindString() const
+ { return m_fr.lpstrFindWhat; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::SearchDown() const
+ { return m_fr.Flags & FR_DOWN ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::FindNext() const
+ { return m_fr.Flags & FR_FINDNEXT ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::MatchCase() const
+ { return m_fr.Flags & FR_MATCHCASE ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::MatchWholeWord() const
+ { return m_fr.Flags & FR_WHOLEWORD ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::ReplaceCurrent() const
+ { return m_fr. Flags & FR_REPLACE ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::ReplaceAll() const
+ { return m_fr.Flags & FR_REPLACEALL ? TRUE : FALSE; }
+
+_AFXDLGS_INLINE CPropertyPage* CPropertySheet::GetPage(int nPage) const
+ { return STATIC_DOWNCAST(CPropertyPage, (CObject*)m_pages[nPage]); }
+_AFXDLGS_INLINE void CPropertySheet::SetWizardMode()
+ { m_psh.dwFlags |= PSH_WIZARD; }
+_AFXDLGS_INLINE void CPropertySheet::SetFinishText(LPCTSTR lpszText)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PSM_SETFINISHTEXT, 0, (LPARAM)lpszText); }
+_AFXDLGS_INLINE void CPropertySheet::SetWizardButtons(DWORD dwFlags)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PSM_SETWIZBUTTONS, 0, dwFlags); }
+_AFXDLGS_INLINE CTabCtrl* CPropertySheet::GetTabControl() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CTabCtrl*)CWnd::FromHandle(
+ (HWND)::SendMessage(m_hWnd, PSM_GETTABCONTROL, 0, 0)); }
+_AFXDLGS_INLINE BOOL CPropertySheet::PressButton(int nButton)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, PSM_PRESSBUTTON, nButton, 0); }
+
+#ifndef _MAC
+_AFXDLGS_INLINE CSize CPageSetupDialog::GetPaperSize() const
+ { return CSize(m_psd.ptPaperSize.x, m_psd.ptPaperSize.y); }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXDLGS_INLINE
diff --git a/public/sdk/inc/mfc40/afxdll_.h b/public/sdk/inc/mfc40/afxdll_.h
new file mode 100644
index 000000000..53292bc40
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdll_.h
@@ -0,0 +1,105 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxdll_.h - extensions to AFXWIN.H used for the 'AFXDLL' version
+// This file contains MFC library implementation details as well
+// as APIs for writing MFC Extension DLLs.
+// Please refer to Technical Note 033 (TN033) for more details.
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _AFXDLL
+ #error file must be compiled with _AFXDLL
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFX_EXTENSION_MODULE - special struct used during DLL initialization
+
+struct AFX_EXTENSION_MODULE
+{
+ BOOL bInitialized;
+ HMODULE hModule;
+ HMODULE hResource;
+ CRuntimeClass* pFirstSharedClass;
+ COleObjectFactory* pFirstSharedFactory;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDynLinkLibrary - for implementation of MFC Extension DLLs
+
+class COleObjectFactory;
+
+class CDynLinkLibrary : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDynLinkLibrary)
+public:
+
+// Constructor
+ CDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem = FALSE);
+
+// Attributes
+ HMODULE m_hModule;
+ HMODULE m_hResource; // for shared resources
+ CTypedSimpleList<CRuntimeClass*> m_classList;
+#ifndef _AFX_NO_OLE_SUPPORT
+ CTypedSimpleList<COleObjectFactory*> m_factoryList;
+#endif
+ BOOL m_bSystem; // TRUE only for MFC DLLs
+
+// Implementation
+public:
+ CDynLinkLibrary* m_pNextDLL; // simple singly linked list
+ virtual ~CDynLinkLibrary();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+};
+
+// call in every DLL_PROCESS_ATTACH
+BOOL AFXAPI AfxInitExtensionModule(AFX_EXTENSION_MODULE&, HMODULE hMod);
+// call on every DLL_PROCESS_DETACH
+void AFXAPI AfxTermExtensionModule(AFX_EXTENSION_MODULE&, BOOL bAll = FALSE);
+
+// special function(s) for stand-alone DLLs (and controls)
+void AFXAPI AfxCoreInitModule();
+#if (defined(_DEBUG) || defined(_MAC)) && !defined(_AFX_MONOLITHIC)
+void AFXAPI AfxOleInitModule();
+void AFXAPI AfxNetInitModule();
+void AFXAPI AfxDbInitModule();
+#else
+#define AfxOleInitModule()
+#define AfxNetInitModule()
+#define AfxDbInitModule()
+#endif
+
+// special functions for loading and freeing MFC extension DLLs
+// (necessary if your app is multithreaded and loads extension
+// DLLs dynamically)
+HINSTANCE AFXAPI AfxLoadLibrary(LPCTSTR lpszModuleName);
+BOOL AFXAPI AfxFreeLibrary(HINSTANCE hInstLib);
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxdllx.h b/public/sdk/inc/mfc40/afxdllx.h
new file mode 100644
index 000000000..01eeba454
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxdllx.h
@@ -0,0 +1,68 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLLX.H: Extra header for building an MFC Extension DLL
+//
+// This file is really a source file that you should include in the
+// main source file of your DLL. It must only be included once, and
+// not multiple times (you will get linker errors if it is included
+// multiple times). If you do not use _AFXEXT, it is not required
+// but you may want the feature it provides.
+//
+// Previous versions of 32-bit MFC did not require this file. This version
+// requires this file to support dynamic loading of extension DLLs. In
+// other words, if your application does LoadLibrary on any extension
+// DLL (instead of binding to the DLL at link time), this file is
+// required.
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+// The following symbol used to force inclusion of this module for _AFXEXT
+#if defined(_X86_) || defined(_MAC)
+extern "C" { int _afxForceEXTDLL; }
+#else
+extern "C" { int __afxForceEXTDLL; }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// RawDllMain that saves current app class list and factory list
+
+extern "C" BOOL WINAPI ExtRawDllMain(HINSTANCE, DWORD dwReason, LPVOID);
+extern "C" BOOL (WINAPI* _pRawDllMain)(HINSTANCE, DWORD, LPVOID) = &ExtRawDllMain;
+
+extern "C"
+BOOL WINAPI ExtRawDllMain(HINSTANCE, DWORD dwReason, LPVOID)
+{
+ if (dwReason == DLL_PROCESS_ATTACH)
+ {
+ // save critical data pointers before running the constructors
+ AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
+ pModuleState->m_pClassInit = pModuleState->m_classList;
+ pModuleState->m_pFactoryInit = pModuleState->m_factoryList;
+ pModuleState->m_classList.m_pHead = NULL;
+ pModuleState->m_factoryList.m_pHead = NULL;
+ }
+ return TRUE; // ok
+}
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxext.h b/public/sdk/inc/mfc40/afxext.h
new file mode 100644
index 000000000..49433a88c
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxext.h
@@ -0,0 +1,1038 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXEXT_H__
+#define __AFXEXT_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXEXT - MFC Advanced Extensions and Advanced Customizable classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CButton
+ class CBitmapButton; // Bitmap button (self-draw)
+
+ class CControlBar; // control bar
+ class CStatusBar; // status bar
+ class CToolBar; // toolbar
+ class CDialogBar; // dialog as control bar
+
+ class CSplitterWnd; // splitter manager
+
+ //CView
+ //CScrollView
+ class CFormView; // view with a dialog template
+ class CEditView; // simple text editor view
+
+ //CDC
+ class CMetaFileDC; // a metafile with proxy
+
+class CRectTracker; // tracker for rectangle objects
+
+// information structures
+struct CPrintInfo; // Printing context
+struct CPrintPreviewState; // Print Preview context/state
+struct CCreateContext; // Creation context
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Simple bitmap button
+
+// CBitmapButton - push-button with 1->4 bitmap images
+class CBitmapButton : public CButton
+{
+ DECLARE_DYNAMIC(CBitmapButton)
+public:
+// Construction
+ CBitmapButton();
+
+ BOOL LoadBitmaps(LPCTSTR lpszBitmapResource,
+ LPCTSTR lpszBitmapResourceSel = NULL,
+ LPCTSTR lpszBitmapResourceFocus = NULL,
+ LPCTSTR lpszBitmapResourceDisabled = NULL);
+ BOOL LoadBitmaps(UINT nIDBitmapResource,
+ UINT nIDBitmapResourceSel = 0,
+ UINT nIDBitmapResourceFocus = 0,
+ UINT nIDBitmapResourceDisabled = 0);
+ BOOL AutoLoad(UINT nID, CWnd* pParent);
+
+// Operations
+ void SizeToContent();
+
+// Implementation:
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+protected:
+ // all bitmaps must be the same size
+ CBitmap m_bitmap; // normal image (REQUIRED)
+ CBitmap m_bitmapSel; // selected image (OPTIONAL)
+ CBitmap m_bitmapFocus; // focused but not selected (OPTIONAL)
+ CBitmap m_bitmapDisabled; // disabled bitmap (OPTIONAL)
+
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Control Bars
+
+// forward declarations (private to implementation)
+class CDockBar;
+class CDockContext;
+class CControlBarInfo;
+struct AFX_SIZEPARENTPARAMS;
+
+// Layout Modes for CalcDynamicLayout
+#define LM_STRETCH 0x01 // same meaning as bStretch in CalcFixedLayout. If set, ignores nLength
+ // and returns dimensions based on LM_HORZ state, otherwise LM_HORZ is used
+ // to determine if nLength is the desired horizontal or vertical length
+ // and dimensions are returned based on nLength
+#define LM_HORZ 0x02 // same as bHorz in CalcFixedLayout
+#define LM_MRUWIDTH 0x04 // Most Recently Used Dynamic Width
+#define LM_HORZDOCK 0x08 // Horizontal Docked Dimensions
+#define LM_VERTDOCK 0x10 // Vertical Docked Dimensions
+#define LM_LENGTHY 0x20 // Set if nLength is a Height instead of a Width
+#define LM_COMMIT 0x40 // Remember MRUWidth
+
+class CControlBar : public CWnd
+{
+ DECLARE_DYNAMIC(CControlBar)
+// Construction
+protected:
+ CControlBar();
+
+// Attributes
+public:
+ int GetCount() const;
+
+ // for styles specific to CControlBar
+ DWORD GetBarStyle();
+ void SetBarStyle(DWORD dwStyle);
+
+ BOOL m_bAutoDelete;
+
+ CFrameWnd* GetDockingFrame() const;
+ BOOL IsFloating() const;
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual CSize CalcDynamicLayout(int nLength, DWORD nMode);
+
+// Operations
+ void EnableDocking(DWORD dwDockStyle);
+
+// Overridables
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) = 0;
+
+// Implementation
+public:
+ virtual ~CControlBar();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void DelayShow(BOOL bShow);
+ virtual BOOL IsVisible() const;
+ virtual DWORD RecalcDelayShow(AFX_SIZEPARENTPARAMS* lpLayout);
+
+ virtual BOOL IsDockBar() const;
+ virtual BOOL DestroyWindow();
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+ // info about bar (for status bar and toolbar)
+ int m_cxLeftBorder, m_cxRightBorder;
+ int m_cyTopBorder, m_cyBottomBorder;
+ int m_cxDefaultGap; // default gap value
+ UINT m_nMRUWidth; // For dynamic resizing.
+#ifdef _MAC
+ BOOL m_bMonochrome; // whether to draw in monochrome or color
+#endif
+
+ // array of elements
+ int m_nCount;
+ void* m_pData; // m_nCount elements - type depends on derived class
+
+ // support for delayed hide/show
+ enum StateFlags
+ { delayHide = 1, delayShow = 2, tempHide = 4, statusSet = 8 };
+ UINT m_nStateFlags;
+
+ // support for docking
+ DWORD m_dwStyle; // creation style (used for layout)
+ DWORD m_dwDockStyle;// indicates how bar can be docked
+ CFrameWnd* m_pDockSite; // current dock site, if dockable
+ CDockBar* m_pDockBar; // current dock bar, if dockable
+ CDockContext* m_pDockContext; // used during dragging
+
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual void PostNcDestroy();
+
+ virtual void DoPaint(CDC* pDC);
+ void DrawBorders(CDC* pDC, CRect& rect);
+
+ // implementation helpers
+ virtual LRESULT WindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ void CalcInsideRect(CRect& rect, BOOL bHorz) const; // adjusts borders etc
+ BOOL AllocElements(int nElements, int cbElement);
+ virtual BOOL SetStatusText(int nHit);
+ void ResetTimer(UINT nEvent, UINT nTime);
+ void EraseNonClient();
+
+#ifdef _MAC
+ void OnReposition();
+ BOOL CheckMonochrome();
+#endif
+ void GetBarInfo(CControlBarInfo* pInfo);
+ void SetBarInfo(CControlBarInfo* pInfo, CFrameWnd* pFrameWnd);
+
+ //{{AFX_MSG(CControlBar)
+ afx_msg void OnTimer(UINT nIDEvent);
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnDestroy();
+ afx_msg void OnPaint();
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnInitialUpdate();
+ afx_msg LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint pt );
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT nMsg);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg LRESULT OnMacintosh(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnSysColorChange();
+ afx_msg void OnMove(int x, int y);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+#endif
+ DECLARE_MESSAGE_MAP()
+
+ friend class CFrameWnd;
+ friend class CDockBar;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CStatusBar control
+
+class CStatusBarCtrl; // forward reference (see afxcmn.h for definition)
+struct AFX_STATUSPANE; // private to implementation
+
+class CStatusBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CStatusBar)
+
+// Construction
+public:
+ CStatusBar();
+ BOOL Create(CWnd* pParentWnd,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
+ UINT nID = AFX_IDW_STATUS_BAR);
+ BOOL SetIndicators(const UINT* lpIDArray, int nIDCount);
+
+// Attributes
+public:
+ // standard control bar things
+ int CommandToIndex(UINT nIDFind) const;
+ UINT GetItemID(int nIndex) const;
+ void GetItemRect(int nIndex, LPRECT lpRect) const;
+
+ // specific to CStatusBar
+ void GetPaneText(int nIndex, CString& rString) const;
+ CString GetPaneText(int nIndex) const;
+ BOOL SetPaneText(int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE);
+ void GetPaneInfo(int nIndex, UINT& nID, UINT& nStyle, int& cxWidth) const;
+ void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth);
+ UINT GetPaneStyle(int nIndex) const;
+ void SetPaneStyle(int nIndex, UINT nStyle);
+
+ // for direct access to the underlying common control
+ CStatusBarCtrl& GetStatusBarCtrl() const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT);
+
+// Implementation
+public:
+ virtual ~CStatusBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ BOOL PreCreateWindow(CREATESTRUCT& cs);
+ BOOL AllocElements(int nElements, int cbElement);
+ void CalcInsideRect(CRect& rect, BOOL bHorz) const;
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ void EnableDocking(DWORD dwDockStyle);
+#endif
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+ int m_nMinHeight;
+
+ AFX_STATUSPANE* _GetPanePtr(int nIndex) const;
+ void UpdateAllPanes(BOOL bUpdateRects, BOOL bUpdateText);
+ virtual BOOL OnChildNotify(UINT message, WPARAM, LPARAM, LRESULT*);
+
+ //{{AFX_MSG(CStatusBar)
+ afx_msg UINT OnNcHitTest(CPoint);
+ afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*);
+ afx_msg void OnNcPaint();
+ afx_msg void OnPaint();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetMinHeight(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// Styles for status bar panes
+#define SBPS_NORMAL 0x0000
+#define SBPS_NOBORDERS SBT_NOBORDERS
+#define SBPS_POPOUT SBT_POPOUT
+#define SBPS_OWNERDRAW SBT_OWNERDRAW
+#define SBPS_DISABLED 0x04000000
+#define SBPS_STRETCH 0x08000000 // stretch to fill status bar
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolBar control
+
+HBITMAP AFXAPI AfxLoadSysColorBitmap(HINSTANCE hInst, HRSRC hRsrc, BOOL bMono = FALSE);
+
+class CToolBarCtrl; // forward reference (see afxcmn.h for definition)
+
+class CToolBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CToolBar)
+
+// Construction
+public:
+ CToolBar();
+ BOOL Create(CWnd* pParentWnd,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP,
+ UINT nID = AFX_IDW_TOOLBAR);
+
+ void SetSizes(SIZE sizeButton, SIZE sizeImage);
+ // button size should be bigger than image
+ void SetHeight(int cyHeight);
+ // call after SetSizes, height overrides bitmap size
+ BOOL LoadToolBar(LPCTSTR lpszResourceName);
+ BOOL LoadToolBar(UINT nIDResource);
+ BOOL LoadBitmap(LPCTSTR lpszResourceName);
+ BOOL LoadBitmap(UINT nIDResource);
+ BOOL SetBitmap(HBITMAP hbmImageWell);
+ BOOL SetButtons(const UINT* lpIDArray, int nIDCount);
+ // lpIDArray can be NULL to allocate empty buttons
+
+// Attributes
+public:
+ // standard control bar things
+ int CommandToIndex(UINT nIDFind) const;
+ UINT GetItemID(int nIndex) const;
+ virtual void GetItemRect(int nIndex, LPRECT lpRect) const;
+ UINT GetButtonStyle(int nIndex) const;
+ void SetButtonStyle(int nIndex, UINT nStyle);
+
+ // for changing button info
+ void GetButtonInfo(int nIndex, UINT& nID, UINT& nStyle, int& iImage) const;
+ void SetButtonInfo(int nIndex, UINT nID, UINT nStyle, int iImage);
+ BOOL SetButtonText(int nIndex, LPCTSTR lpszText);
+ CString GetButtonText(int nIndex) const;
+ void GetButtonText(int nIndex, CString& rString) const;
+
+ // for direct access to the underlying common control
+ CToolBarCtrl& GetToolBarCtrl() const;
+
+// Implementation
+public:
+ virtual ~CToolBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual CSize CalcDynamicLayout(int nLength, DWORD nMode);
+ virtual int OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+ void SetOwner(CWnd* pOwnerWnd);
+ BOOL AddReplaceBitmap(HBITMAP hbmImageWell);
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ HRSRC m_hRsrcImageWell; // handle to loaded resource for image well
+ HINSTANCE m_hInstImageWell; // instance handle to load image well from
+ HBITMAP m_hbmImageWell; // contains color mapped button images
+ BOOL m_bDelayedButtonLayout; // used to manage when button layout should be done
+
+ CSize m_sizeImage; // current image size
+ CSize m_sizeButton; // current button size
+
+ CMapStringToPtr* m_pStringMap; // used as CMapStringToUInt
+
+ // implementation helpers
+ void _GetButton(int nIndex, TBBUTTON* pButton) const;
+ void _SetButton(int nIndex, TBBUTTON* pButton);
+ CSize CalcLayout(DWORD nMode, int nLength = -1);
+ CSize CalcSize(TBBUTTON* pData, int nCount);
+ int WrapToolBar(TBBUTTON* pData, int nCount, int nWidth);
+ void SizeToolBar(TBBUTTON* pData, int nCount, int nLength, BOOL bVert = FALSE);
+
+ //{{AFX_MSG(CToolBar)
+ afx_msg UINT OnNcHitTest(CPoint);
+ afx_msg void OnNcPaint();
+ afx_msg void OnPaint();
+ afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS);
+ afx_msg void OnSysColorChange();
+ afx_msg LRESULT OnSetButtonSize(WPARAM, LPARAM);
+ afx_msg LRESULT OnSetBitmapSize(WPARAM, LPARAM);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// Styles for toolbar buttons
+#define TBBS_BUTTON MAKELONG(TBSTYLE_BUTTON, 0) // this entry is button
+#define TBBS_SEPARATOR MAKELONG(TBSTYLE_SEP, 0) // this entry is a separator
+#define TBBS_CHECKBOX MAKELONG(TBSTYLE_CHECK, 0) // this is an auto check button
+#define TBBS_GROUP MAKELONG(TBSTYLE_GROUP, 0) // marks the start of a group
+#define TBBS_CHECKGROUP (TBBS_GROUP|TBBS_CHECKBOX) // normal use of TBBS_GROUP
+
+// styles for display states
+#define TBBS_CHECKED MAKELONG(0, TBSTATE_CHECKED) // button is checked/down
+#define TBBS_PRESSED MAKELONG(0, TBSTATE_PRESSED) // button is being depressed
+#define TBBS_DISABLED MAKELONG(0, TBSTATE_ENABLED) // button is disabled
+#define TBBS_INDETERMINATE MAKELONG(0, TBSTATE_INDETERMINATE) // third state
+#define TBBS_HIDDEN MAKELONG(0, TBSTATE_HIDDEN) // button is hidden
+#define TBBS_WRAPPED MAKELONG(0, TBSTATE_WRAP) // button is wrapped at this point
+
+////////////////////////////////////////////
+// CDialogBar control
+// This is a control bar built from a dialog template. It is a modeless
+// dialog that delegates all control notifications to the parent window
+// of the control bar [the grandparent of the control]
+
+class CDialogBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CDialogBar)
+
+// Construction
+public:
+ CDialogBar();
+ BOOL Create(CWnd* pParentWnd, LPCTSTR lpszTemplateName,
+ UINT nStyle, UINT nID);
+ BOOL Create(CWnd* pParentWnd, UINT nIDTemplate,
+ UINT nStyle, UINT nID);
+
+// Implementation
+public:
+ virtual ~CDialogBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ CSize m_sizeDefault;
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+#ifndef _AFX_NO_OCC_SUPPORT
+ // data and functions necessary for OLE control containment
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ LPCTSTR m_lpszTemplateName;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+ DECLARE_MESSAGE_MAP()
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Splitter Window
+
+#define SPLS_DYNAMIC_SPLIT 0x0001
+#define SPLS_INVERT_TRACKER 0x0002 // obsolete (now ignored)
+
+class CSplitterWnd : public CWnd
+{
+ DECLARE_DYNAMIC(CSplitterWnd)
+
+// Construction
+public:
+ CSplitterWnd();
+ // Create a single view type splitter with multiple splits
+ BOOL Create(CWnd* pParentWnd,
+ int nMaxRows, int nMaxCols, SIZE sizeMin,
+ CCreateContext* pContext,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE |
+ WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
+ UINT nID = AFX_IDW_PANE_FIRST);
+
+ // Create a multiple view type splitter with static layout
+ BOOL CreateStatic(CWnd* pParentWnd,
+ int nRows, int nCols,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE,
+ UINT nID = AFX_IDW_PANE_FIRST);
+
+ virtual BOOL CreateView(int row, int col, CRuntimeClass* pViewClass,
+ SIZE sizeInit, CCreateContext* pContext);
+
+// Attributes
+public:
+ int GetRowCount() const;
+ int GetColumnCount() const;
+
+ // information about a specific row or column
+ void GetRowInfo(int row, int& cyCur, int& cyMin) const;
+ void SetRowInfo(int row, int cyIdeal, int cyMin);
+ void GetColumnInfo(int col, int& cxCur, int& cxMin) const;
+ void SetColumnInfo(int col, int cxIdeal, int cxMin);
+
+ // for setting and getting shared scroll bar style
+ DWORD GetScrollStyle() const;
+ void SetScrollStyle(DWORD dwStyle);
+
+ // views inside the splitter
+ CWnd* GetPane(int row, int col) const;
+ BOOL IsChildPane(CWnd* pWnd, int* pRow, int* pCol);
+ BOOL IsChildPane(CWnd* pWnd, int& row, int& col); // obsolete
+ int IdFromRowCol(int row, int col) const;
+
+ BOOL IsTracking(); // TRUE during split operation
+
+// Operations
+public:
+ virtual void RecalcLayout(); // call after changing sizes
+
+// Overridables
+protected:
+ // to customize the drawing
+ enum ESplitType { splitBox, splitBar, splitIntersection, splitBorder };
+ virtual void OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rect);
+ virtual void OnInvertTracker(const CRect& rect);
+
+public:
+ // for customizing scrollbar regions
+ virtual BOOL CreateScrollBarCtrl(DWORD dwStyle, UINT nID);
+
+ // for customizing DYNAMIC_SPLIT behavior
+ virtual void DeleteView(int row, int col);
+ virtual BOOL SplitRow(int cyBefore);
+ virtual BOOL SplitColumn(int cxBefore);
+ virtual void DeleteRow(int rowDelete);
+ virtual void DeleteColumn(int colDelete);
+
+ // determining active pane from focus or active view in frame
+ virtual CWnd* GetActivePane(int* pRow = NULL, int* pCol = NULL);
+ virtual void SetActivePane(int row, int col, CWnd* pWnd = NULL);
+protected:
+ CWnd* GetActivePane(int& row, int& col); // obsolete
+
+public:
+ // high level command operations - called by default view implementation
+ virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
+ virtual void ActivateNext(BOOL bPrev = FALSE);
+ virtual BOOL DoKeyboardSplit();
+
+ // syncronized scrolling
+ virtual BOOL DoScroll(CView* pViewFrom, UINT nScrollCode,
+ BOOL bDoScroll = TRUE);
+ virtual BOOL DoScrollBy(CView* pViewFrom, CSize sizeScroll,
+ BOOL bDoScroll = TRUE);
+
+// Implementation
+public:
+ virtual ~CSplitterWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // implementation structure
+ struct CRowColInfo
+ {
+ int nMinSize; // below that try not to show
+ int nIdealSize; // user set size
+ // variable depending on the available size layout
+ int nCurSize; // 0 => invisible, -1 => nonexistant
+ };
+
+protected:
+ // customizable implementation attributes (set by constructor or Create)
+ CRuntimeClass* m_pDynamicViewClass;
+ int m_nMaxRows, m_nMaxCols;
+
+ // implementation attributes which control layout of the splitter
+ int m_cxSplitter, m_cySplitter; // size of splitter bar
+ int m_cxBorderShare, m_cyBorderShare; // space on either side of splitter
+ int m_cxSplitterGap, m_cySplitterGap; // amount of space between panes
+ int m_cxBorder, m_cyBorder; // borders in client area
+
+ // current state information
+ int m_nRows, m_nCols;
+ BOOL m_bHasHScroll, m_bHasVScroll;
+ CRowColInfo* m_pColInfo;
+ CRowColInfo* m_pRowInfo;
+
+ // Tracking info - only valid when 'm_bTracking' is set
+ BOOL m_bTracking, m_bTracking2;
+ CPoint m_ptTrackOffset;
+ CRect m_rectLimit;
+ CRect m_rectTracker, m_rectTracker2;
+ int m_htTrack;
+
+ // implementation routines
+ BOOL CreateCommon(CWnd* pParentWnd, SIZE sizeMin, DWORD dwStyle, UINT nID);
+ int HitTest(CPoint pt) const;
+ void GetInsideRect(CRect& rect) const;
+ void GetHitRect(int ht, CRect& rect);
+ void TrackRowSize(int y, int row);
+ void TrackColumnSize(int x, int col);
+ void DrawAllSplitBars(CDC* pDC, int cxInside, int cyInside);
+ void SetSplitCursor(int ht);
+ CWnd* GetSizingParent();
+
+ // starting and stopping tracking
+ virtual void StartTracking(int ht);
+ virtual void StopTracking(BOOL bAccept);
+
+ // special command routing to frame
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ //{{AFX_MSG(CSplitterWnd)
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint pt);
+ afx_msg void OnPaint();
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint pt);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint pt);
+ afx_msg void OnCancelMode();
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnDisplayChange();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFormView - generic view constructed from a dialog template
+
+class CFormView : public CScrollView
+{
+ DECLARE_DYNAMIC(CFormView)
+
+// Construction
+protected: // must derive your own class
+ CFormView(LPCTSTR lpszTemplateName);
+ CFormView(UINT nIDTemplate);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ LPCTSTR m_lpszTemplateName;
+ CCreateContext* m_pCreateContext;
+ HWND m_hWndFocus; // last window to have focus
+
+ virtual void OnDraw(CDC* pDC); // default does nothing
+ // special case override of child window creation
+ virtual BOOL Create(LPCTSTR, LPCTSTR, DWORD,
+ const RECT&, CWnd*, UINT, CCreateContext*);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void OnActivateView(BOOL, CView*, CView*);
+ virtual void OnActivateFrame(UINT, CFrameWnd*);
+ BOOL SaveFocusControl(); // updates m_hWndFocus
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // data and functions necessary for OLE control containment
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+#endif
+
+ //{{AFX_MSG(CFormView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CEditView - simple text editor view
+
+class CEditView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CEditView)
+
+// Construction
+public:
+ CEditView();
+
+// Attributes
+public:
+ static AFX_DATA const DWORD dwStyleDefault;
+ // CEdit control access
+ CEdit& GetEditCtrl() const;
+
+ // presentation attributes
+ CFont* GetPrinterFont() const;
+ void SetPrinterFont(CFont* pFont);
+#ifndef _MAC
+ void SetTabStops(int nTabStops);
+#endif
+
+ // other attributes
+ void GetSelectedText(CString& strResult) const;
+
+ // buffer access
+ LPCTSTR LockBuffer() const;
+ void UnlockBuffer() const;
+ UINT GetBufferLength() const;
+
+// Operations
+public:
+ BOOL FindText(LPCTSTR lpszFind, BOOL bNext = TRUE, BOOL bCase = TRUE);
+ void SerializeRaw(CArchive& ar);
+ UINT PrintInsideRect(CDC* pDC, RECT& rectLayout, UINT nIndexStart,
+ UINT nIndexStop);
+
+// Overrideables
+protected:
+ virtual void OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase);
+ virtual void OnReplaceSel(LPCTSTR lpszFind, BOOL bNext, BOOL bCase,
+ LPCTSTR lpszReplace);
+ virtual void OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
+ BOOL bCase);
+ virtual void OnTextNotFound(LPCTSTR lpszFind);
+
+// Implementation
+public:
+ virtual ~CEditView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void Serialize(CArchive& ar);
+ virtual void DeleteContents();
+ void ReadFromArchive(CArchive& ar, UINT nLen);
+ void WriteToArchive(CArchive& ar);
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
+
+ static AFX_DATA const UINT nMaxSize;
+ // maximum number of characters supported
+
+protected:
+#ifndef _MAC
+ int m_nTabStops; // tab stops in dialog units
+#endif
+ LPTSTR m_pShadowBuffer; // special shadow buffer only used in Win32s
+ UINT m_nShadowSize;
+
+ CUIntArray m_aPageStart; // array of starting pages
+ HFONT m_hPrinterFont; // if NULL, mirror display font
+ HFONT m_hMirrorFont; // font object used when mirroring
+
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ // printing support
+ virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo = NULL);
+ BOOL PaginateTo(CDC* pDC, CPrintInfo* pInfo);
+
+ // find & replace support
+ void OnEditFindReplace(BOOL bFindOnly);
+ BOOL InitializeReplace();
+ BOOL SameAsSelected(LPCTSTR lpszCompare, BOOL bCase);
+
+ // special overrides for implementation
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+ //{{AFX_MSG(CEditView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnUpdateNeedSel(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedClip(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedText(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedFind(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
+ afx_msg BOOL OnEditChange();
+ afx_msg void OnEditCut();
+ afx_msg void OnEditCopy();
+ afx_msg void OnEditPaste();
+ afx_msg void OnEditClear();
+ afx_msg void OnEditUndo();
+ afx_msg void OnEditSelectAll();
+ afx_msg void OnEditFind();
+ afx_msg void OnEditReplace();
+ afx_msg void OnEditRepeat();
+ afx_msg LRESULT OnFindReplaceCmd(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMetaFileDC
+
+class CMetaFileDC : public CDC
+{
+ DECLARE_DYNAMIC(CMetaFileDC)
+
+// Constructors
+public:
+ CMetaFileDC();
+ BOOL Create(LPCTSTR lpszFilename = NULL);
+#ifndef _MAC
+ BOOL CreateEnhanced(CDC* pDCRef, LPCTSTR lpszFileName,
+ LPCRECT lpBounds, LPCTSTR lpszDescription);
+#endif
+
+// Operations
+ HMETAFILE Close();
+#ifndef _MAC
+ HENHMETAFILE CloseEnhanced();
+#endif
+
+// Implementation
+public:
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+
+protected:
+ virtual void SetOutputDC(HDC hDC); // Set the Output DC -- Not allowed
+ virtual void ReleaseOutputDC(); // Release the Output DC -- Not allowed
+
+public:
+ virtual ~CMetaFileDC();
+
+// Clipping Functions (use the Attribute DC's clip region)
+ virtual int GetClipBox(LPRECT lpRect) const;
+ virtual BOOL PtVisible(int x, int y) const;
+ BOOL PtVisible(POINT point) const;
+ virtual BOOL RectVisible(LPCRECT lpRect) const;
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ BOOL TextOut(int x, int y, const CString& str);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ CSize TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ int DrawText(const CString& str, LPRECT lpRect, UINT nFormat);
+
+// Printer Escape Functions
+ virtual int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData);
+
+// Viewport Functions
+ virtual CPoint SetViewportOrg(int x, int y);
+ CPoint SetViewportOrg(POINT point);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+ virtual CSize SetViewportExt(int x, int y);
+ CSize SetViewportExt(SIZE size);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+
+protected:
+ void AdjustCP(int cx);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRectTracker - simple rectangular tracking rectangle w/resize handles
+
+class CRectTracker
+{
+public:
+// Constructors
+ CRectTracker();
+ CRectTracker(LPCRECT lpSrcRect, UINT nStyle);
+
+// Style Flags
+ enum StyleFlags
+ {
+ solidLine = 1, dottedLine = 2, hatchedBorder = 4,
+ resizeInside = 8, resizeOutside = 16, hatchInside = 32,
+ };
+
+// Hit-Test codes
+ enum TrackerHit
+ {
+ hitNothing = -1,
+ hitTopLeft = 0, hitTopRight = 1, hitBottomRight = 2, hitBottomLeft = 3,
+ hitTop = 4, hitRight = 5, hitBottom = 6, hitLeft = 7, hitMiddle = 8
+ };
+
+// Attributes
+ UINT m_nStyle; // current state
+ CRect m_rect; // current position (always in pixels)
+ CSize m_sizeMin; // minimum X and Y size during track operation
+ int m_nHandleSize; // size of resize handles (default from WIN.INI)
+
+// Operations
+ void Draw(CDC* pDC) const;
+ void GetTrueRect(LPRECT lpTrueRect) const;
+ BOOL SetCursor(CWnd* pWnd, UINT nHitTest) const;
+ BOOL Track(CWnd* pWnd, CPoint point, BOOL bAllowInvert = FALSE,
+ CWnd* pWndClipTo = NULL);
+ BOOL TrackRubberBand(CWnd* pWnd, CPoint point, BOOL bAllowInvert = TRUE);
+ int HitTest(CPoint point) const;
+ int NormalizeHit(int nHandle) const;
+
+// Overridables
+ virtual void DrawTrackerRect(LPCRECT lpRect, CWnd* pWndClipTo,
+ CDC* pDC, CWnd* pWnd);
+ virtual void AdjustRect(int nHandle, LPRECT lpRect);
+ virtual void OnChangedRect(const CRect& rectOld);
+ virtual UINT GetHandleMask() const;
+
+// Implementation
+public:
+ virtual ~CRectTracker();
+
+protected:
+ BOOL m_bAllowInvert; // flag passed to Track or TrackRubberBand
+ CRect m_rectLast;
+ CSize m_sizeLast;
+ BOOL m_bErase; // TRUE if DrawTrackerRect is called for erasing
+ BOOL m_bFinalErase; // TRUE if DragTrackerRect called for final erase
+
+ // implementation helpers
+ int HitTestHandles(CPoint point) const;
+ void GetHandleRect(int nHandle, CRect* pHandleRect) const;
+ void GetModifyPointers(int nHandle, int**ppx, int**ppy, int* px, int*py);
+ virtual int GetHandleSize(LPCRECT lpRect = NULL) const;
+ BOOL TrackHandle(int nHandle, CWnd* pWnd, CPoint point, CWnd* pWndClipTo);
+ void Construct();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Informational data structures
+
+struct CPrintInfo // Printing information structure
+{
+ CPrintInfo();
+ ~CPrintInfo();
+
+ CPrintDialog* m_pPD; // pointer to print dialog
+
+ BOOL m_bPreview; // TRUE if in preview mode
+ BOOL m_bDirect; // TRUE if bypassing Print Dialog
+ BOOL m_bContinuePrinting;// set to FALSE to prematurely end printing
+ UINT m_nCurPage; // Current page
+ UINT m_nNumPreviewPages; // Desired number of preview pages
+ CString m_strPageDesc; // Format string for page number display
+ LPVOID m_lpUserData; // pointer to user created struct
+ CRect m_rectDraw; // rectangle defining current usable page area
+
+ void SetMinPage(UINT nMinPage);
+ void SetMaxPage(UINT nMaxPage);
+ UINT GetMinPage() const;
+ UINT GetMaxPage() const;
+ UINT GetFromPage() const;
+ UINT GetToPage() const;
+};
+
+struct CPrintPreviewState // Print Preview context/state
+{
+ UINT nIDMainPane; // main pane ID to hide
+ HMENU hMenu; // saved hMenu
+ DWORD dwStates; // Control Bar Visible states (bit map)
+ CView* pViewActiveOld; // save old active view during preview
+ BOOL (CALLBACK* lpfnCloseProc)(CFrameWnd* pFrameWnd);
+ HACCEL hAccelTable; // saved accelerator table
+
+// Implementation
+ CPrintPreviewState();
+};
+
+struct CCreateContext // Creation information structure
+ // All fields are optional and may be NULL
+{
+ // for creating new views
+ CRuntimeClass* m_pNewViewClass; // runtime class of view to create or NULL
+ CDocument* m_pCurrentDoc;
+
+ // for creating MDI children (CMDIChildWnd::LoadFrame)
+ CDocTemplate* m_pNewDocTemplate;
+
+ // for sharing view/frame state from the original view/frame
+ CView* m_pLastView;
+ CFrameWnd* m_pCurrentFrame;
+
+// Implementation
+ CCreateContext();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXEXT_INLINE inline
+#include <afxext.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXEXT_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxext.inl b/public/sdk/inc/mfc40/afxext.inl
new file mode 100644
index 000000000..559f1f37c
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxext.inl
@@ -0,0 +1,121 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXEXT.H
+
+#ifdef _AFXEXT_INLINE
+
+// CCreateContext
+_AFXEXT_INLINE CCreateContext::CCreateContext()
+ { memset(this, 0, sizeof(*this)); }
+
+// CMetaFileDC
+_AFXEXT_INLINE BOOL CMetaFileDC::Create(LPCTSTR lpszFilename)
+ { return Attach(::CreateMetaFile(lpszFilename)); }
+_AFXEXT_INLINE HMETAFILE CMetaFileDC::Close()
+ { return ::CloseMetaFile(Detach()); }
+#ifndef _MAC
+_AFXEXT_INLINE BOOL CMetaFileDC::CreateEnhanced(CDC* pDCRef,
+ LPCTSTR lpszFileName, LPCRECT lpBounds, LPCTSTR lpszDescription)
+ { return Attach(::CreateEnhMetaFile(pDCRef->GetSafeHdc(),
+ lpszFileName, lpBounds, lpszDescription)); }
+_AFXEXT_INLINE HENHMETAFILE CMetaFileDC::CloseEnhanced()
+ { return ::CloseEnhMetaFile(Detach()); }
+_AFXEXT_INLINE CPoint CMetaFileDC::SetViewportOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetViewportOrg(point.x, point.y); }
+_AFXEXT_INLINE CSize CMetaFileDC::SetViewportExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetViewportExt(size.cx, size.cy); }
+_AFXEXT_INLINE BOOL CMetaFileDC::TextOut(int x, int y, const CString& str)
+ { ASSERT(m_hDC != NULL); return TextOut(x, y, (LPCTSTR)str, str.GetLength()); }
+_AFXEXT_INLINE BOOL CMetaFileDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths)
+ { ASSERT(m_hDC != NULL); return ::ExtTextOut(m_hDC, x, y, nOptions, lpRect,
+ str, str.GetLength(), lpDxWidths); }
+_AFXEXT_INLINE CSize CMetaFileDC::TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin)
+ { ASSERT(m_hDC != NULL); return ::TabbedTextOut(m_hDC, x, y, str, str.GetLength(),
+ nTabPositions, lpnTabStopPositions, nTabOrigin); }
+_AFXEXT_INLINE int CMetaFileDC::DrawText(const CString& str, LPRECT lpRect, UINT nFormat)
+ { ASSERT(m_hDC != NULL);
+ return DrawText((LPCTSTR)str, str.GetLength(), lpRect, nFormat); }
+_AFXEXT_INLINE BOOL CMetaFileDC::PtVisible(POINT point) const
+ { ASSERT(m_hDC != NULL); return PtVisible(point.x, point.y); }
+#endif
+
+// CSplitterWnd
+_AFXEXT_INLINE int CSplitterWnd::GetRowCount() const
+ { return m_nRows; }
+_AFXEXT_INLINE int CSplitterWnd::GetColumnCount() const
+ { return m_nCols; }
+// obsolete functions
+_AFXEXT_INLINE BOOL CSplitterWnd::IsChildPane(CWnd* pWnd, int& row, int& col)
+ { return IsChildPane(pWnd, &row, &col); }
+_AFXEXT_INLINE CWnd* CSplitterWnd::GetActivePane(int& row, int& col)
+ { return GetActivePane(&row, &col); }
+_AFXEXT_INLINE BOOL CSplitterWnd::IsTracking()
+ { return m_bTracking; }
+
+// control bars
+_AFXEXT_INLINE int CControlBar::GetCount() const
+ { return m_nCount; }
+_AFXEXT_INLINE DWORD CControlBar::GetBarStyle()
+ { return m_dwStyle; }
+_AFXEXT_INLINE BOOL CToolBar::LoadToolBar(UINT nIDResource)
+ { return LoadToolBar(MAKEINTRESOURCE(nIDResource)); }
+_AFXEXT_INLINE BOOL CToolBar::LoadBitmap(UINT nIDResource)
+ { return LoadBitmap(MAKEINTRESOURCE(nIDResource)); }
+_AFXEXT_INLINE CToolBarCtrl& CToolBar::GetToolBarCtrl() const
+ { return *(CToolBarCtrl*)this; }
+_AFXEXT_INLINE BOOL CDialogBar::Create(CWnd* pParentWnd, UINT nIDTemplate,
+ UINT nStyle, UINT nID)
+ { return Create(pParentWnd, MAKEINTRESOURCE(nIDTemplate), nStyle, nID); }
+_AFXEXT_INLINE CStatusBarCtrl& CStatusBar::GetStatusBarCtrl() const
+ { return *(CStatusBarCtrl*)this; }
+#ifdef _DEBUG
+// status bars do not support docking
+_AFXEXT_INLINE void CStatusBar::EnableDocking(DWORD)
+ { ASSERT(FALSE); }
+#endif
+
+// CRectTracker
+_AFXEXT_INLINE CRectTracker::CRectTracker()
+ { Construct(); }
+
+// CBitmapButton
+_AFXEXT_INLINE CBitmapButton::CBitmapButton()
+ { }
+_AFXEXT_INLINE BOOL CBitmapButton::LoadBitmaps(UINT nIDBitmapResource,
+ UINT nIDBitmapResourceSel, UINT nIDBitmapResourceFocus,
+ UINT nIDBitmapResourceDisabled)
+ { return LoadBitmaps(MAKEINTRESOURCE(nIDBitmapResource),
+ MAKEINTRESOURCE(nIDBitmapResourceSel),
+ MAKEINTRESOURCE(nIDBitmapResourceFocus),
+ MAKEINTRESOURCE(nIDBitmapResourceDisabled)); }
+
+// CPrintInfo
+_AFXEXT_INLINE void CPrintInfo::SetMinPage(UINT nMinPage)
+ { m_pPD->m_pd.nMinPage = (WORD)nMinPage; }
+_AFXEXT_INLINE void CPrintInfo::SetMaxPage(UINT nMaxPage)
+ { m_pPD->m_pd.nMaxPage = (WORD)nMaxPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetMinPage() const
+ { return m_pPD->m_pd.nMinPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetMaxPage() const
+ { return m_pPD->m_pd.nMaxPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetFromPage() const
+ { return m_pPD->m_pd.nFromPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetToPage() const
+ { return m_pPD->m_pd.nToPage; }
+// CEditView
+_AFXEXT_INLINE CEdit& CEditView::GetEditCtrl() const
+ { return *(CEdit*)this; }
+
+#endif //_AFXEXT_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxhelp.hm b/public/sdk/inc/mfc40/afxhelp.hm
new file mode 100644
index 000000000..b511e5e30
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxhelp.hm
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Non-Client HitTest help IDs
+HID_HT_NOWHERE 0x40000
+HID_HT_CAPTION 0x40002
+HID_HT_SIZE 0x40004
+HID_HT_HSCROLL 0x40006
+HID_HT_VSCROLL 0x40007
+HID_HT_MINBUTTON 0x40008
+HID_HT_MAXBUTTON 0x40009
+HID_HT_SIZE 0x4000A // alias: ID_HT_LEFT
+HID_HT_SIZE 0x4000B // alias: ID_HT_RIGHT
+HID_HT_SIZE 0x4000C // alias: ID_HT_TOP
+HID_HT_SIZE 0x4000D // alias: ID_HT_TOPLEFT
+HID_HT_SIZE 0x4000E // alias: ID_HT_TOPRIGHT
+HID_HT_SIZE 0x4000F // alias: ID_HT_BOTTOM
+HID_HT_SIZE 0x40010 // alias: ID_HT_BOTTOMLEFT
+HID_HT_SIZE 0x40011 // alias: ID_HT_BOTTOMRIGHT
+HID_HT_SIZE 0x40012 // alias: ID_HT_BORDER
+
+// WM_SYSCOMMAND help IDs
+HID_SC_SIZE 0x1EF00
+HID_SC_MOVE 0x1EF01
+HID_SC_MINIMIZE 0x1EF02
+HID_SC_MAXIMIZE 0x1EF03
+HID_SC_NEXTWINDOW 0x1EF04
+HID_SC_PREVWINDOW 0x1EF05
+HID_SC_CLOSE 0x1EF06
+HID_SC_RESTORE 0x1EF12
+HID_SC_TASKLIST 0x1EF13
+
+// File MRU and aliases
+HID_FILE_MRU_FILE1 0x1E110
+HID_FILE_MRU_FILE1 0x1E111 // aliases: MRU_2 - MRU_16
+HID_FILE_MRU_FILE1 0x1E112
+HID_FILE_MRU_FILE1 0x1E113
+HID_FILE_MRU_FILE1 0x1E114
+HID_FILE_MRU_FILE1 0x1E115
+HID_FILE_MRU_FILE1 0x1E116
+HID_FILE_MRU_FILE1 0x1E117
+HID_FILE_MRU_FILE1 0x1E118
+HID_FILE_MRU_FILE1 0x1E119
+HID_FILE_MRU_FILE1 0x1E11A
+HID_FILE_MRU_FILE1 0x1E11B
+HID_FILE_MRU_FILE1 0x1E11C
+HID_FILE_MRU_FILE1 0x1E11D
+HID_FILE_MRU_FILE1 0x1E11E
+HID_FILE_MRU_FILE1 0x1E11F
+
+// Window menu list
+HID_WINDOW_ALL 0x1EF1F
+
+// OLE menu and aliases
+HID_OLE_VERB_1 0x1E210
+HID_OLE_VERB_1 0x1E211 // aliases: VERB_2 -> VERB_16
+HID_OLE_VERB_1 0x1E212
+HID_OLE_VERB_1 0x1E213
+HID_OLE_VERB_1 0x1E214
+HID_OLE_VERB_1 0x1E215
+HID_OLE_VERB_1 0x1E216
+HID_OLE_VERB_1 0x1E217
+HID_OLE_VERB_1 0x1E218
+HID_OLE_VERB_1 0x1E219
+HID_OLE_VERB_1 0x1E21A
+HID_OLE_VERB_1 0x1E21B
+HID_OLE_VERB_1 0x1E21C
+HID_OLE_VERB_1 0x1E21D
+HID_OLE_VERB_1 0x1E21E
+HID_OLE_VERB_1 0x1E21F
+
+// Commands (HID_*)
+HID_FILE_NEW 0x1E100
+HID_FILE_OPEN 0x1E101
+HID_FILE_CLOSE 0x1E102
+HID_FILE_SAVE 0x1E103
+HID_FILE_SAVE_AS 0x1E104
+HID_FILE_PAGE_SETUP 0x1E105
+HID_FILE_PRINT_SETUP 0x1E106
+HID_FILE_PRINT 0x1E107
+HID_FILE_PRINT_DIRECT 0x1E108
+HID_FILE_PRINT_PREVIEW 0x1E109
+HID_FILE_UPDATE 0x1E10A
+HID_FILE_SAVE_COPY_AS 0x1E10B
+HID_FILE_SEND_MAIL 0x1E10C
+HID_EDIT_CLEAR 0x1E120
+HID_EDIT_CLEAR_ALL 0x1E121
+HID_EDIT_COPY 0x1E122
+HID_EDIT_CUT 0x1E123
+HID_EDIT_FIND 0x1E124
+HID_EDIT_PASTE 0x1E125
+HID_EDIT_PASTE_LINK 0x1E126
+HID_EDIT_PASTE_SPECIAL 0x1E127
+HID_EDIT_REPEAT 0x1E128
+HID_EDIT_REPLACE 0x1E129
+HID_EDIT_SELECT_ALL 0x1E12A
+HID_EDIT_UNDO 0x1E12B
+HID_EDIT_REDO 0x1E12C
+HID_WINDOW_NEW 0x1E130
+HID_WINDOW_ARRANGE 0x1E131
+HID_WINDOW_CASCADE 0x1E132
+HID_WINDOW_TILE_HORZ 0x1E133
+HID_WINDOW_TILE_VERT 0x1E134
+HID_WINDOW_SPLIT 0x1E135
+HID_APP_ABOUT 0x1E140
+HID_APP_EXIT 0x1E141
+HID_HELP_INDEX 0x1E142
+HID_HELP_FINDER 0x1E143
+HID_HELP_USING 0x1E144
+HID_CONTEXT_HELP 0x1E145
+HID_NEXT_PANE 0x1E150
+HID_PREV_PANE 0x1E151
+HID_FORMAT_FONT 0x1E160
+HID_OLE_INSERT_NEW 0x1E200
+HID_OLE_EDIT_LINKS 0x1E201
+HID_OLE_EDIT_CONVERT 0x1E202
+HID_OLE_EDIT_CHANGE_ICON 0x1E203
+HID_OLE_EDIT_PROPERTIES 0x1E204
+HID_VIEW_TOOLBAR 0x1E800
+HID_VIEW_STATUS_BAR 0x1E801
+HID_RECORD_FIRST 0x1E900
+HID_RECORD_LAST 0x1E901
+HID_RECORD_NEXT 0x1E902
+HID_RECORD_PREV 0x1E903
+HID_WIZBACK 0x13023
+HID_WIZNEXT 0x13024
+HID_WIZFINISH 0x13025
+
+// Dialogs (AFX_HIDD_*)
+AFX_HIDD_FILEOPEN 0x27004
+AFX_HIDD_FILESAVE 0x27005
+AFX_HIDD_FONT 0x27006
+AFX_HIDD_COLOR 0x27007
+AFX_HIDD_PRINT 0x27008
+AFX_HIDD_PRINTSETUP 0x27009
+AFX_HIDD_FIND 0x2700A
+AFX_HIDD_REPLACE 0x2700B
+AFX_HIDD_NEWTYPEDLG 0x27801
+AFX_HIDD_PRINTDLG 0x27802
+AFX_HIDD_PREVIEW_TOOLBAR 0x27803
+AFX_HIDD_PREVIEW_SHORTTOOLBAR 0x2780B
+AFX_HIDD_INSERTOBJECT 0x27804
+AFX_HIDD_CHANGEICON 0x27805
+AFX_HIDD_CONVERT 0x27806
+AFX_HIDD_PASTESPECIAL 0x27807
+AFX_HIDD_EDITLINKS 0x27808
+AFX_HIDD_FILEBROWSE 0x27809
+AFX_HIDD_BUSY 0x2780A
+AFX_HIDD_OBJECTPROPERTIES 0x2780C
+AFX_HIDD_CHANGESOURCE 0x2780D
+
+// Prompts/Errors (AFX_HIDP_*)
+AFX_HIDP_NO_ERROR_AVAILABLE 0x3F020
+AFX_HIDP_INVALID_FILENAME 0x3F100
+AFX_HIDP_FAILED_TO_OPEN_DOC 0x3F101
+AFX_HIDP_FAILED_TO_SAVE_DOC 0x3F102
+AFX_HIDP_ASK_TO_SAVE 0x3F103
+AFX_HIDP_FAILED_TO_CREATE_DOC 0x3F104
+AFX_HIDP_FILE_TOO_LARGE 0x3F105
+AFX_HIDP_FAILED_TO_START_PRINT 0x3F106
+AFX_HIDP_FAILED_TO_LAUNCH_HELP 0x3F107
+AFX_HIDP_INTERNAL_FAILURE 0x3F108
+AFX_HIDP_COMMAND_FAILURE 0x3F109
+AFX_HIDP_FAILED_MEMORY_ALLOC 0x3F10A
+AFX_HIDP_PARSE_INT 0x3F110
+AFX_HIDP_PARSE_REAL 0x3F111
+AFX_HIDP_PARSE_INT_RANGE 0x3F112
+AFX_HIDP_PARSE_REAL_RANGE 0x3F113
+AFX_HIDP_PARSE_STRING_SIZE 0x3F114
+AFX_HIDP_PARSE_RADIO_BUTTON 0x3F115
+AFX_HIDP_PARSE_BYTE 0x3F116
+AFX_HIDP_PARSE_UINT 0x3F117
+AFX_HIDP_PARSE_DATETIME 0x3F118
+AFX_HIDP_PARSE_CURRENCY 0x3F119
+AFX_HIDP_FAILED_INVALID_FORMAT 0x3F120
+AFX_HIDP_FAILED_INVALID_PATH 0x3F121
+AFX_HIDP_FAILED_DISK_FULL 0x3F122
+AFX_HIDP_FAILED_ACCESS_READ 0x3F123
+AFX_HIDP_FAILED_ACCESS_WRITE 0x3F124
+AFX_HIDP_FAILED_IO_ERROR_READ 0x3F125
+AFX_HIDP_FAILED_IO_ERROR_WRITE 0x3F126
+AFX_HIDP_STATIC_OBJECT 0x3F180
+AFX_HIDP_FAILED_TO_CONNECT 0x3F181
+AFX_HIDP_SERVER_BUSY 0x3F182
+AFX_HIDP_BAD_VERB 0x3F183
+AFX_HIDP_FAILED_TO_NOTIFY 0x3F185
+AFX_HIDP_FAILED_TO_LAUNCH 0x3F186
+AFX_HIDP_ASK_TO_UPDATE 0x3F187
+AFX_HIDP_FAILED_TO_UPDATE 0x3F188
+AFX_HIDP_FAILED_TO_REGISTER 0x3F189
+AFX_HIDP_FAILED_TO_AUTO_REGISTER 0x3F18A
+AFX_HIDP_FAILED_TO_CONVERT 0x3F18B
+AFX_HIDP_GET_NOT_SUPPORTED 0x3F18C
+AFX_HIDP_SET_NOT_SUPPORTED 0x3F18D
+AFX_HIDP_ASK_TO_DISCARD 0x3F18E
+AFX_HIDP_FAILED_TO_CREATE 0x3F18F
+AFX_HIDP_FAILED_MAPI_LOAD 0x3F190
+AFX_HIDP_INVALID_MAPI_DLL 0x3F191
+AFX_HIDP_FAILED_MAPI_SEND 0x3F192
+AFX_HIDP_FILE_NONE 0x3F1A0
+AFX_HIDP_FILE_GENERIC 0x3F1A1
+AFX_HIDP_FILE_NOT_FOUND 0x3F1A2
+AFX_HIDP_FILE_BAD_PATH 0x3F1A3
+AFX_HIDP_FILE_TOO_MANY_OPEN 0x3F1A4
+AFX_HIDP_FILE_ACCESS_DENIED 0x3F1A5
+AFX_HIDP_FILE_INVALID_FILE 0x3F1A6
+AFX_HIDP_FILE_REMOVE_CURRENT 0x3F1A7
+AFX_HIDP_FILE_DIR_FULL 0x3F1A8
+AFX_HIDP_FILE_BAD_SEEK 0x3F1A9
+AFX_HIDP_FILE_HARD_IO 0x3F1AA
+AFX_HIDP_FILE_SHARING 0x3F1AB
+AFX_HIDP_FILE_LOCKING 0x3F1AC
+AFX_HIDP_FILE_DISKFULL 0x3F1AD
+AFX_HIDP_FILE_EOF 0x3F1AE
+AFX_HIDP_ARCH_NONE 0x3F1B0
+AFX_HIDP_ARCH_GENERIC 0x3F1B1
+AFX_HIDP_ARCH_READONLY 0x3F1B2
+AFX_HIDP_ARCH_ENDOFFILE 0x3F1B3
+AFX_HIDP_ARCH_WRITEONLY 0x3F1B4
+AFX_HIDP_ARCH_BADINDEX 0x3F1B5
+AFX_HIDP_ARCH_BADCLASS 0x3F1B6
+AFX_HIDP_ARCH_BADSCHEMA 0x3F1B7
+AFX_HIDP_SQL_CONNECT_FAIL 0x3F281
+AFX_HIDP_SQL_RECORDSET_FORWARD_ONLY 0x3F282
+AFX_HIDP_SQL_EMPTY_COLUMN_LIST 0x3F283
+AFX_HIDP_SQL_FIELD_SCHEMA_MISMATCH 0x3F284
+AFX_HIDP_SQL_ILLEGAL_MODE 0x3F285
+AFX_HIDP_SQL_MULTIPLE_ROWS_AFFECTED 0x3F286
+AFX_HIDP_SQL_NO_CURRENT_RECORD 0x3F287
+AFX_HIDP_SQL_NO_ROWS_AFFECTED 0x3F288
+AFX_HIDP_SQL_RECORDSET_READONLY 0x3F289
+AFX_HIDP_SQL_SQL_NO_TOTAL 0x3F28A
+AFX_HIDP_SQL_ODBC_LOAD_FAILED 0x3F28B
+AFX_HIDP_SQL_DYNASET_NOT_SUPPORTED 0x3F28C
+AFX_HIDP_SQL_SNAPSHOT_NOT_SUPPORTED 0x3F28D
+AFX_HIDP_SQL_API_CONFORMANCE 0x3F28E
+AFX_HIDP_SQL_SQL_CONFORMANCE 0x3F28F
+AFX_HIDP_SQL_NO_DATA_FOUND 0x3F290
+AFX_HIDP_SQL_ROW_UPDATE_NOT_SUPPORTED 0x3F291
+AFX_HIDP_SQL_ODBC_V2_REQUIRED 0x3F292
+AFX_HIDP_SQL_NO_POSITIONED_UPDATES 0x3F293
+AFX_HIDP_SQL_LOCK_MODE_NOT_SUPPORTED 0x3F294
+AFX_HIDP_SQL_DATA_TRUNCATED 0x3F295
+AFX_HIDP_SQL_ROW_FETCH 0x3F296
+AFX_HIDP_SQL_INCORRECT_ODBC 0x3F297
+AFX_HIDP_SQL_UPDATE_DELETE_FAILED 0x3F298
+AFX_HIDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED 0x3F299
+AFX_HIDP_DAO_ENGINE_INITIALIZATION 0x3F2A0
+AFX_HIDP_DAO_DFX_BIND 0x3F2A1
+AFX_HIDP_DAO_OBJECT_NOT_OPEN 0x3F2A2
+AFX_HIDP_DAO_ROWTOOSHORT 0x3F2A3
+AFX_HIDP_DAO_BADBINDINFO 0x3F2A4
+AFX_HIDP_DAO_COLUMNUNAVAILABLE 0x3F2A5
+
+// Frame Controls (AFX_HIDW_*)
+AFX_HIDW_TOOLBAR 0x5E800
+AFX_HIDW_STATUS_BAR 0x5E801
+AFX_HIDW_PREVIEW_BAR 0x5E802
+AFX_HIDW_RESIZE_BAR 0x5E803
+AFX_HIDW_DOCKBAR_TOP 0x5E81B
+AFX_HIDW_DOCKBAR_LEFT 0x5E81C
+AFX_HIDW_DOCKBAR_RIGHT 0x5E81D
+AFX_HIDW_DOCKBAR_BOTTOM 0x5E81E
+AFX_HIDW_DOCKBAR_FLOAT 0x5E81F
+
diff --git a/public/sdk/inc/mfc40/afxisapi.h b/public/sdk/inc/mfc40/afxisapi.h
new file mode 100644
index 000000000..ed3fac8e2
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxisapi.h
@@ -0,0 +1,553 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXISAPI_H_
+#define __AFXISAPI_H_
+
+#ifdef _UNICODE
+#error ERROR: ISAPI does not yet support Unicode.
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+#ifndef ALL_WARNINGS
+// warnings generated with common MFC/Windows code
+#pragma warning(disable: 4127) // constant expression for TRACE/ASSERT
+#pragma warning(disable: 4134) // message map member fxn casts
+#pragma warning(disable: 4201) // nameless unions are part of C++
+#pragma warning(disable: 4511) // private copy constructors are good to have
+#pragma warning(disable: 4512) // private operator= are good to have
+#pragma warning(disable: 4514) // unreferenced inlines are common
+#pragma warning(disable: 4710) // private constructors are disallowed
+#pragma warning(disable: 4705) // statement has no effect in optimized code
+// warnings caused by normal optimizations
+#ifndef _DEBUG
+#pragma warning(disable: 4701) // local variable *may* be used without init
+#pragma warning(disable: 4702) // unreachable code caused by optimizations
+#pragma warning(disable: 4791) // loss of debugging info in retail version
+#endif
+// warnings specific to _AFXDLL version
+#ifdef _AFXDLL
+#pragma warning(disable: 4204) // non-constant aggregate initializer
+#endif
+#ifdef _AFXDLL
+#pragma warning(disable: 4275) // deriving exported class from non-exported
+#pragma warning(disable: 4251) // using non-exported as public in exported
+#endif
+#endif //!ALL_WARNINGS
+
+#define STRICT 1
+
+#include <httpext.h>
+#include <httpfilt.h>
+
+#ifndef _INC_STDLIB
+ #include <stdlib.h>
+#endif
+#ifndef _INC_TCHAR
+ #include <tchar.h>
+#endif
+
+#ifndef UNUSED
+#ifdef _DEBUG
+#define UNUSED(x)
+#else
+#define UNUSED(x) x
+#endif
+#endif
+
+#define AFXISAPI __stdcall
+#define AFXIS_DATADEF
+
+/////////////////////////////////////////////////////////////////////////////
+// Internet Server API Library
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+#ifdef _AFXDLL
+#ifdef _DEBUG
+ #ifdef _UNICODE
+ #pragma comment(lib, "MFCISUD.lib")
+ #else
+ #pragma comment(lib, "EAFXISD.lib")
+ #endif
+#else
+ #ifdef _UNICODE
+ #pragma comment(lib, "MFCISU.lib")
+ #else
+ #pragma comment(lib, "EAFXIS.lib")
+ #endif // _UNICODE
+#endif // _DEBUG
+#else
+#ifdef _DEBUG
+ #ifdef _UNICODE
+ #pragma comment(lib, "UAFXISD.lib")
+ #else
+ #pragma comment(lib, "NAFXISD.lib")
+ #endif
+#else
+ #ifdef _UNICODE
+ #pragma comment(lib, "UAFXIS.lib")
+ #else
+ #pragma comment(lib, "NAFXIS.lib")
+ #endif // _UNICODE
+#endif // _DEBUG
+#endif // _AFXDLL
+
+#pragma comment(lib, "kernel32.lib")
+#pragma comment(lib, "user32.lib")
+#pragma comment(lib, "winspool.lib")
+#pragma comment(lib, "advapi32.lib")
+
+#endif // _MAC
+#endif // _AFX_NOFORCE_LIBS
+
+extern HINSTANCE AFXISAPI AfxGetResourceHandle();
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXIASPI - MFC Internet Server API support
+
+// Classes declared in this file
+
+class CHtmlStream;
+class CHttpServerContext;
+class CHttpServer;
+class CHttpFilterContext;
+class CHttpFilter;
+
+
+///////////////////////////////////////////////////////////////////////
+// CHtmlStream -- manages in-memory HTML
+
+class CHtmlStream
+{
+public:
+// Constructors
+ CHtmlStream(UINT nGrowBytes = 4096);
+ CHtmlStream(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+
+// Operations
+ void Attach(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+ BYTE* Detach();
+ DWORD GetStreamSize() const;
+
+ virtual void Abort();
+ virtual void Close();
+ virtual void InitStream();
+ virtual void Reset();
+
+ CHtmlStream& operator<<(LPCTSTR psz);
+ CHtmlStream& operator<<(short int w);
+ CHtmlStream& operator<<(long int dw);
+ CHtmlStream& operator<<(CHtmlStream& stream);
+ CHtmlStream& operator<<(double d);
+ CHtmlStream& operator<<(float f);
+
+// Advanced Overridables
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual BYTE* Memcpy(BYTE* lpMemTarget, const BYTE* lpMemSource, UINT nBytes);
+ virtual void GrowStream(DWORD dwNewLen);
+ virtual void Write(const void* lpBuf, UINT nCount);
+
+ DWORD m_nStreamSize;
+
+public:
+ virtual void Free(BYTE* lpMem);
+
+// Implementation
+protected:
+ UINT m_nGrowBytes;
+ DWORD m_nPosition;
+ DWORD m_nBufferSize;
+ BYTE* m_lpBuffer;
+ BOOL m_bAutoDelete;
+
+public:
+ virtual ~CHtmlStream();
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// Status codes for HTTP transactions
+
+#define HTTP_STATUS_OK 200 // OK
+#define HTTP_STATUS_CREATED 201 // created
+#define HTTP_STATUS_ACCEPTED 202 // accepted
+#define HTTP_STATUS_NO_CONTENT 204 // no content
+#define HTTP_STATUS_REDIRECT 301 // moved permanently
+#define HTTP_STATUS_TEMP_REDIRECT 302 // moved temporarily
+#define HTTP_STATUS_NOT_MODIFIED 304 // not modified
+#define HTTP_STATUS_BAD_REQUEST 400 // bad request
+#define HTTP_STATUS_AUTH_REQUIRED 401 // unauthorized
+#define HTTP_STATUS_FORBIDDEN 403 // forbidden
+#define HTTP_STATUS_NOT_FOUND 404 // not found
+#define HTTP_STATUS_SERVER_ERROR 500 // internal server error
+#define HTTP_STATUS_NOT_IMPLEMENTED 501 // not implemented
+#define HTTP_STATUS_BAD_GATEWAY 502 // bad gateway
+#define HTTP_STATUS_SERVICE_NA 503 // service unavailaibe
+
+
+///////////////////////////////////////////////////////////////////////
+// Parse Map macros
+
+#ifndef AFX_PARSE_CALL
+#define AFX_PARSE_CALL
+#endif
+
+typedef void (AFX_PARSE_CALL CHttpServer::*AFX_PISAPICMD)(CHttpServerContext* pCtxt);
+
+struct AFX_PARSEMAP_ENTRY; // declared after CHttpServer, below
+
+struct AFX_PARSEMAP
+{
+ UINT (PASCAL* pfnGetNumMapEntries)();
+#ifdef _AFXDLL
+ const AFX_PARSEMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_PARSEMAP* pBaseMap;
+#endif
+ const AFX_PARSEMAP_ENTRY* lpEntries;
+ ~AFX_PARSEMAP();
+};
+
+struct AFX_PARSEMAP_ENTRY_PARAMS
+{
+ int nParams; // number of parameters
+ int nRequired; // number of parameters without defaults
+ // all of these are arrays!
+ LPTSTR* ppszInfo; // pointers to name[2n], pointer to default[2n+1]
+ BYTE* ppszDefaults; // pointers to coerced default values
+ BYTE* ppszValues; // pointers to coerced actual values
+ ~AFX_PARSEMAP_ENTRY_PARAMS();
+};
+
+#ifdef _AFXDLL
+#define DECLARE_PARSE_MAP() \
+private: \
+ static AFX_PARSEMAP_ENTRY _parseEntries[]; \
+public: \
+ static const AFX_PARSEMAP parseMap; \
+ static const AFX_PARSEMAP* PASCAL _GetBaseParseMap(); \
+ static UINT PASCAL GetNumMapEntries(); \
+ virtual const AFX_PARSEMAP* GetParseMap() const; \
+
+#else
+#define DECLARE_PARSE_MAP() \
+private: \
+ static AFX_PARSEMAP_ENTRY _parseEntries[]; \
+public: \
+ static const AFX_PARSEMAP parseMap; \
+ static UINT PASCAL GetNumMapEntries(); \
+ virtual const AFX_PARSEMAP* GetParseMap() const; \
+
+#endif // _AFXDLL
+
+#ifdef _AFXDLL
+#define BEGIN_PARSE_MAP(theClass, baseClass) \
+ const AFX_PARSEMAP* PASCAL theClass::_GetBaseParseMap() \
+ { return &baseClass::parseMap; } \
+ typedef void (AFX_PARSE_CALL theClass::*theClass##CALL)(CHttpServerContext*); \
+ const AFX_PARSEMAP* theClass::GetParseMap() const \
+ { return &theClass::parseMap; } \
+ AFXIS_DATADEF const AFX_PARSEMAP theClass::parseMap = \
+ { &theClass::GetNumMapEntries, &theClass::_GetBaseParseMap, &theClass::_parseEntries[0] }; \
+ AFX_PARSEMAP_ENTRY theClass::_parseEntries[] = \
+ { \
+
+#else
+#define BEGIN_PARSE_MAP(theClass, baseClass) \
+ typedef void (AFX_PARSE_CALL theClass::*theClass##CALL)(CHttpServerContext*); \
+ const AFX_PARSEMAP* theClass::GetParseMap() const \
+ { return &theClass::parseMap; } \
+ AFXIS_DATADEF const AFX_PARSEMAP theClass::parseMap = \
+ { &theClass::GetNumMapEntries, &baseClass::parseMap, &theClass::_parseEntries[0] }; \
+ AFX_PARSEMAP_ENTRY theClass::_parseEntries[] = \
+ { \
+
+#endif
+
+#define ON_PARSE_COMMAND(FnName, mapClass, Args) \
+ { _T(#FnName), (AFX_PISAPICMD) (mapClass##CALL)mapClass::FnName, Args },
+
+#define ON_PARSE_COMMAND_PARAMS(Params) \
+ { NULL, (AFX_PISAPICMD) NULL, Params },
+
+#define DEFAULT_PARSE_COMMAND(FnName, mapClass) \
+ { _T(#FnName), (AFX_PISAPICMD) (mapClass##CALL)mapClass::FnName, NULL },
+
+#define END_PARSE_MAP(theClass) \
+ }; \
+ UINT PASCAL theClass::GetNumMapEntries() { \
+ return sizeof(theClass::_parseEntries) /\
+ sizeof(AFX_PARSEMAP_ENTRY); } \
+
+
+///////////////////////////////////////////////////////////////////////
+//
+
+class CHttpServerContext
+{
+public:
+ CHttpServerContext(EXTENSION_CONTROL_BLOCK* pECB);
+ virtual ~CHttpServerContext();
+
+// Operations
+ BOOL GetServerVariable(LPTSTR lpszVariableName,
+ LPVOID lpvBuffer, LPDWORD lpdwSize);
+ BOOL WriteClient(LPVOID lpvBuffer, LPDWORD lpdwBytes, DWORD dwReserved = 0);
+ BOOL ReadClient(LPVOID lpvBuffer, LPDWORD lpdwSize);
+ BOOL ServerSupportFunction(DWORD dwHSERRequest,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType);
+
+ CHttpServerContext& operator<<(LPCTSTR psz);
+ CHttpServerContext& operator<<(long int dw);
+ CHttpServerContext& operator<<(short int w);
+ CHttpServerContext& operator<<(CHtmlStream& stream);
+ CHttpServerContext& operator<<(double d);
+ CHttpServerContext& operator<<(float f);
+
+ void Reset();
+
+// Attributes
+ EXTENSION_CONTROL_BLOCK* const m_pECB;
+ CHtmlStream* m_pStream;
+ DWORD m_dwEndOfHeaders;
+#ifdef _DEBUG
+ DWORD m_dwOldEndOfHeaders;
+#endif
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// Internet Information Server Extension Support
+
+class CHttpServer
+{
+public:
+ CHttpServer(TCHAR cDelimiter = '&');
+ virtual ~CHttpServer();
+
+ enum errors {
+ callOK = 0, // everything is fine
+ callParamRequired, // a required parameter was missing
+ callBadParamCount, // there were too many or too few parameters
+ callBadCommand, // the command name was not found
+ callNoStackSpace, // no stack space was available
+ callNoStream, // no CHtmlStream was available
+ callMissingQuote, // a parameter had a bad format
+ callMissingParams, // no parameters were available
+ callBadParam, // a paremeter had a bad format (ie, only one quote)
+ };
+
+// overridables
+ virtual int CallFunction(CHttpServerContext* pCtxt,
+ LPTSTR pszQuery, LPTSTR pszCommand);
+ virtual BOOL OnParseError(CHttpServerContext* pCtxt, int nCause);
+
+// operations
+ virtual void EndContent(CHttpServerContext* pCtxt) const;
+ virtual void StartContent(CHttpServerContext* pCtxt) const;
+ virtual void WriteTitle(CHttpServerContext* pCtxt) const;
+ virtual LPCTSTR GetTitle() const;
+ void AddHeader(CHttpServerContext* pCtxt, LPCTSTR pszString) const;
+
+ virtual DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB);
+ virtual BOOL GetExtensionVersion(HSE_VERSION_INFO *pVer);
+ virtual CHtmlStream* ConstructStream();
+
+ virtual BOOL InitInstance(CHttpServerContext* pCtxt);
+
+// implementation
+
+protected:
+ UINT PASCAL GetStackSize(const BYTE* pbParams);
+ int CallMemberFunc(CHttpServerContext* pCtxt,
+ const AFX_PARSEMAP_ENTRY* pEntry,
+ AFX_PARSEMAP_ENTRY* pParams, LPTSTR szParams);
+ LPTSTR GetQuery(CHttpServerContext* pCtxt,
+ LPTSTR lpszQuery, DWORD cbQuery);
+ const AFX_PARSEMAP_ENTRY* LookUp(LPCTSTR szMethod,
+ const AFX_PARSEMAP*& pMap, AFX_PARSEMAP_ENTRY*& pParams,
+ AFX_PISAPICMD pCmdDefault = NULL);
+ int CountParams(LPCTSTR pszCommandLine, int& nCount);
+ int ParseDefaultParams(AFX_PARSEMAP_ENTRY* pParams,
+ int nParams, AFX_PARSEMAP_ENTRY_PARAMS*& pBlock,
+ const BYTE* pbTypes);
+ LPVOID PreprocessString(LPTSTR psz);
+ void BuildStatusCode(LPTSTR szResponse, DWORD dwCode);
+
+#if defined(_PPC_) || defined(_MPPC_)
+ int PushDefaultStackArgs(BYTE* pStack,
+ CHttpServerContext* pCtxt, const BYTE* pbParams,
+ LPTSTR lpszParams, AFX_PARSEMAP_ENTRY_PARAMS* pDefParams,
+ int nSizeArgs);
+ int PushStackArgs(BYTE* pStack, CHttpServerContext* pCtxt,
+ const BYTE* pbParams, LPTSTR lpszParams, UINT nSizeArgs);
+ BYTE* StoreStackParameter(BYTE* pStack, BYTE nType,
+ LPTSTR pszCurParam, UINT nSizeArgs, BOOL bDoShadow);
+ BYTE* StoreRawStackParameter(BYTE* pStack, BYTE nType,
+ BYTE* pRawParam, int nSizeArgs);
+#else
+ int PushDefaultStackArgs(BYTE* pStack,
+ CHttpServerContext* pCtxt, const BYTE* pbParams,
+ LPTSTR lpszParams, AFX_PARSEMAP_ENTRY_PARAMS* pDefParams);
+ int PushStackArgs(BYTE* pStack, CHttpServerContext* pCtxt,
+ const BYTE* pbParams, LPTSTR lpszParams);
+ BYTE* StoreStackParameter(BYTE* pStack, BYTE nType, LPTSTR pszParam);
+ BYTE* StoreRawStackParameter(BYTE* pStack, BYTE nType, BYTE* pRawParam);
+#endif
+
+ LPCRITICAL_SECTION m_pCritSec;
+ const TCHAR m_cTokenDelimiter; // can't EVER change
+
+ DECLARE_PARSE_MAP()
+};
+
+extern "C" BOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO *pVer);
+extern "C" DWORD WINAPI HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB);
+
+struct AFX_PARSEMAP_ENTRY
+{
+ LPTSTR pszFnName; // if default param entry, ptr to AFX_PARSEMAP_ENTRY_PARAMS
+ AFX_PISAPICMD pfn; // NULL if default param entry
+ LPSTR pszArgs; // NULL if default function entry
+};
+
+///////////////////////////////////////////////////////////////////////
+// Constants to describe parameter types
+
+#define ITS_EMPTY "\x06" // no parameters
+#define ITS_I2 "\x01" // a 'short'
+#define ITS_I4 "\x02" // a 'long'
+#define ITS_R4 "\x03" // a 'float'
+#define ITS_R8 "\x04" // a 'double'
+#define ITS_PSTR "\x05" // a 'LPCTSTR'
+
+enum INETVARENUM
+{
+ IT_I2 = 1,
+ IT_I4 = 2,
+ IT_R4 = 3,
+ IT_R8 = 4,
+ IT_PSTR = 5,
+ IT_EMPTY = 6,
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// Internet Information Server Entry Points
+
+extern "C" DWORD WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc,
+ DWORD dwNotificationType, LPVOID pvNotification);
+
+extern "C" BOOL WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer);
+
+
+///////////////////////////////////////////////////////////////////////
+// Internet Information Server Filter Support
+
+class CHttpFilterContext
+{
+public:
+ CHttpFilterContext(PHTTP_FILTER_CONTEXT pfc);
+ ~CHttpFilterContext() { }
+
+ BOOL GetServerVariable(LPTSTR lpszVariableName, LPVOID lpvBuffer,
+ LPDWORD lpdwSize);
+ BOOL AddResponseHeaders(LPTSTR lpszHeaders, DWORD dwReserved = 0);
+ BOOL WriteClient(LPVOID lpvBuffer, LPDWORD lpdwBytes,
+ DWORD dwReserved = 0);
+ LPVOID AllocMem(DWORD cbSize, DWORD dwReserved = 0);
+ BOOL ServerSupportFunction(enum SF_REQ_TYPE sfReq,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType);
+
+ PHTTP_FILTER_CONTEXT const m_pFC;
+};
+
+
+///////////////////////////////////////////////////////////////////////
+//
+
+class CHttpFilter
+{
+public:
+ CHttpFilter();
+ ~CHttpFilter();
+
+protected:
+
+public:
+ virtual DWORD HttpFilterProc(PHTTP_FILTER_CONTEXT pfc,
+ DWORD dwNotificationType, LPVOID pvNotification);
+ virtual BOOL GetFilterVersion(PHTTP_FILTER_VERSION pVer);
+
+ virtual DWORD OnReadRawData(CHttpFilterContext* pfc, PHTTP_FILTER_RAW_DATA pRawData);
+ virtual DWORD OnPreprocHeaders(CHttpFilterContext* pfc, PHTTP_FILTER_PREPROC_HEADERS pHeaders);
+ virtual DWORD OnAuthentication(CHttpFilterContext* pfc, PHTTP_FILTER_AUTHENT pAuthent);
+ virtual DWORD OnUrlMap(CHttpFilterContext* pfc, PHTTP_FILTER_URL_MAP pUrlMap);
+ virtual DWORD OnSendRawData(CHttpFilterContext* pfc, PHTTP_FILTER_RAW_DATA pRawData);
+ virtual DWORD OnLog(CHttpFilterContext* pfc, PHTTP_FILTER_LOG pLog);
+ virtual DWORD OnEndOfNetSession(CHttpFilterContext* pfc);
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Alternate debugging suppot
+
+#include <crtdbg.h>
+
+#ifdef _AFX
+#define ISAPIASSERT(expr) ASSERT(expr)
+#define ISAPITRACE(str) TRACE(str)
+#define ISAPITRACE0(str) TRACE0(str)
+#define ISAPITRACE1(str, arg1) TRACE1(str, arg1)
+#define ISAPITRACE2(str, arg1, arg2) TRACE2(str, arg1, arg2)
+#define ISAPITRACE3(str, arg1, arg2, arg3) TRACE3(str, arg1, arg2, arg3)
+#define ISAPIVERIFY(f) ASSERT(f)
+#else
+#define ISAPIASSERT(expr) _ASSERTE(expr)
+#define ISAPITRACE(str) _RPT0(_CRT_WARN, str)
+#define ISAPITRACE0(str) _RPT0(_CRT_WARN, str)
+#define ISAPITRACE1(str, arg1) _RPT1(_CRT_WARN, str, arg1)
+#define ISAPITRACE2(str, arg1, arg2) _RPT2(_CRT_WARN, str, arg1, arg2)
+#define ISAPITRACE3(str, arg1, arg2, arg3) _RPT3(_CRT_WARN, arg1, arg2, arg3)
+#ifdef _DEBUG
+#define ISAPIVERIFY(expr) _ASSERTE(expr)
+#else
+#define ISAPIVERIFY(expr) ((void)(expr))
+#endif
+#endif
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXISAPI_INLINE inline
+#include <afxisapi.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // the whole file
+
diff --git a/public/sdk/inc/mfc40/afxisapi.inl b/public/sdk/inc/mfc40/afxisapi.inl
new file mode 100644
index 000000000..a5c8ebb47
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxisapi.inl
@@ -0,0 +1,122 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXISAPI.H
+
+#ifdef _AFXISAPI_INLINE
+
+_AFXISAPI_INLINE CHttpServerContext::CHttpServerContext(EXTENSION_CONTROL_BLOCK* pECB)
+#ifdef _DEBUG
+ : m_pECB(pECB), m_pStream(NULL), m_dwEndOfHeaders(0), m_dwOldEndOfHeaders(0)
+#else
+ : m_pECB(pECB), m_pStream(NULL), m_dwEndOfHeaders(0)
+#endif
+ { }
+
+_AFXISAPI_INLINE CHttpServerContext::~CHttpServerContext()
+ { if (m_pStream != NULL) delete m_pStream; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(double d)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << d;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(float f)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << f;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(long int dw)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << dw;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(short int w)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << w;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(CHtmlStream& stream)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << stream;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(LPCTSTR psz)
+ { ISAPIASSERT(m_pStream != NULL && psz != NULL);
+ if (m_pStream != NULL && psz != NULL) *m_pStream << psz;
+ return *this; }
+
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::GetServerVariable(LPTSTR lpszVariableName,
+ LPVOID lpvBuffer, LPDWORD lpdwSize)
+ {
+ return m_pECB->GetServerVariable(m_pECB->ConnID,
+ lpszVariableName, lpvBuffer, lpdwSize);
+ }
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::WriteClient(LPVOID pBuffer, LPDWORD lpdwBytes,
+ DWORD dwReserved /* = 0 */)
+ {
+ return m_pECB->WriteClient(m_pECB->ConnID, pBuffer,
+ lpdwBytes, dwReserved);
+ }
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::ReadClient(LPVOID lpvBuffer, LPDWORD lpdwSize)
+ {
+ return m_pECB->ReadClient(m_pECB->ConnID, lpvBuffer, lpdwSize);
+ }
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::ServerSupportFunction(DWORD dwHSERRequest,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType)
+ {
+ return m_pECB->ServerSupportFunction(m_pECB->ConnID, dwHSERRequest,
+ lpvBuffer, lpdwSize, lpdwDataType);
+ }
+
+
+_AFXISAPI_INLINE DWORD CHtmlStream::GetStreamSize() const
+ { return m_nStreamSize; }
+
+
+_AFXISAPI_INLINE CHttpFilterContext::CHttpFilterContext(PHTTP_FILTER_CONTEXT pCtx)
+ : m_pFC(pCtx)
+ { }
+
+_AFXISAPI_INLINE BOOL CHttpFilterContext::GetServerVariable(LPTSTR lpszVariableName,
+ LPVOID lpvBuffer, LPDWORD lpdwSize)
+ {
+ return m_pFC->GetServerVariable(m_pFC, lpszVariableName, lpvBuffer, lpdwSize);
+ }
+_AFXISAPI_INLINE BOOL CHttpFilterContext::AddResponseHeaders(LPTSTR lpszHeaders,
+ DWORD dwReserved /* = 0 */)
+ {
+ return m_pFC->AddResponseHeaders(m_pFC, lpszHeaders, dwReserved);
+ }
+_AFXISAPI_INLINE BOOL CHttpFilterContext::WriteClient(LPVOID lpvBuffer,
+ LPDWORD lpdwBytes, DWORD dwReserved /* = 0 */)
+ {
+ return m_pFC->WriteClient(m_pFC, lpvBuffer, lpdwBytes, dwReserved);
+ }
+_AFXISAPI_INLINE LPVOID CHttpFilterContext::AllocMem(DWORD cbSize,
+ DWORD dwReserved /* = 0 */)
+ {
+ return m_pFC->AllocMem(m_pFC, cbSize, dwReserved);
+ }
+_AFXISAPI_INLINE BOOL CHttpFilterContext::ServerSupportFunction(enum SF_REQ_TYPE sfReq,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType)
+ {
+//WINBUG: HTTPFLT.H has the last two params as type DWORD
+ return m_pFC->ServerSupportFunction(m_pFC, sfReq, lpvBuffer,
+ (DWORD) lpdwSize, (DWORD) lpdwDataType);
+ }
+
+
+#endif // _AFXISAPI_INLINE
+
diff --git a/public/sdk/inc/mfc40/afxisapi.rc b/public/sdk/inc/mfc40/afxisapi.rc
new file mode 100644
index 000000000..6c6619048
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxisapi.rc
@@ -0,0 +1,44 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXISAPI_RC__
+#define __AFXISAPI_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+/////////////////////////////////////////////////////////////////////////////
+// ISAPI HTML Text for HTTP error conditions
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_HTTP_TITLE "<HEAD><TITLE>HTTP Error %d</TITLE></HEAD>"
+ AFX_IDS_HTTP_NO_TEXT "<BODY><H1>HTTP Error %d: No message available</H1></BODY>\r\n"
+ AFX_IDS_HTTP_BAD_REQUEST "<BODY><H1>BAD REQUEST</H1><P>Your client sent a request that this server didn't understand.<br>Request: %s\r\n"
+ AFX_IDS_HTTP_AUTH_REQUIRED "<BODY><H1>AUTH REQUIRED</H1><P>Browser not authentication-capable or authentication failed.</BODY>\r\n"
+ AFX_IDS_HTTP_FORBIDDEN "<BODY><H1>FORBIDDEN</H1><P>Your client does not have permission to get this URL from the server.</BODY>\r\n"
+ AFX_IDS_HTTP_NOT_FOUND "<BODY><H1>NOT FOUND</H1><P>The requested URL was not found on this server.</BODY>\r\n"
+ AFX_IDS_HTTP_SERVER_ERROR "<BODY><H1>SERVER ERROR</H1>The server encountered an internal error or misconfiguration and was unable to complete your request.</BODY>\r\n"
+ AFX_IDS_HTTP_NOT_IMPLEMENTED "<BODY><H1>NOT IMPLEMENTED</H1>The server is unable to perform the method <b>%s</b> at this time.</BODY>\r\n"
+END
+
+#endif //!__AFXISAPI_RC__
+
+
+
diff --git a/public/sdk/inc/mfc40/afxmsg_.h b/public/sdk/inc/mfc40/afxmsg_.h
new file mode 100644
index 000000000..1985fbdb8
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxmsg_.h
@@ -0,0 +1,683 @@
+
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXWIN.H)
+
+/////////////////////////////////////////////////////////////////////////////
+
+// Entries in a message map (a 'AFX_MSGMAP_ENTRY') table can be of 9 formats
+//
+// 1) control notification message (i.e. in response to WM_COMMAND)
+// WM_COMMAND, nNotifyCode, nControlID, nControlID, signature type, parameterless member function
+// (eg: WM_COMMAND, LBN_SELCHANGE, IDC_LISTBOX, AfxSig_vv, ... )
+// 2) control notification message range (i.e. in response to WM_COMMAND)
+// WM_COMMAND, nNotifyCode, nControlIDFirst, nControlIDLast, signature type, parameterless member function
+// (eg: WM_COMMAND, LBN_SELCHANGE, IDC_LISTBOX1, IDC_LISTBOX5, AfxSig_vw, ... )
+// 3) WM_NOTIFY notification
+// WM_NOTIFY, nNotifyCode, nControlID, nControlID, signature type, ...)
+// 3) Update Command UI
+// -1, 0, nControlID, 0, signature Unknown, parameterless member function
+// 4) Update Command UI Range
+// -1, 0, nControlIDFirst, nControlIDLast, signature Unknown, parameterless member function
+// 5) menu/accelerator notification message (i.e. special case of first format)
+// WM_COMMAND, 0, nID, 0, signature type, parameterless member function
+// (eg: WM_COMMAND, 0, IDM_FILESAVE, 0, AfxSig_vv, ... )
+// 6) menu/accelerator notification message range
+// WM_COMMAND, 0, nIDFirst, nIDLast, signature type, parameterless member function
+// (eg: WM_COMMAND, 0, IDM_FILE_MRU1, IDM_FILE_MRU4, AfxSig_vw, ... )
+// 7) constant windows message
+// nMessage, 0, 0, 0, signature type, member function
+// (eg: WM_PAINT, 0, ...)
+// 8) variable windows message (using RegisterWindowMessage)
+// 0xC000, 0, 0, 0, &nMessage, special member function
+//
+// The end of the message map is marked with a special value
+// 0, 0, AfxSig_end, 0
+/////////////////////////////////////////////////////////////////////////////
+
+enum AfxSig
+{
+ AfxSig_end = 0, // [marks end of message map]
+
+ AfxSig_bD, // BOOL (CDC*)
+ AfxSig_bb, // BOOL (BOOL)
+ AfxSig_bWww, // BOOL (CWnd*, UINT, UINT)
+ AfxSig_hDWw, // HBRUSH (CDC*, CWnd*, UINT)
+ AfxSig_hDw, // HBRUSH (CDC*, UINT)
+ AfxSig_iwWw, // int (UINT, CWnd*, UINT)
+ AfxSig_iww, // int (UINT, UINT)
+ AfxSig_iWww, // int (CWnd*, UINT, UINT)
+ AfxSig_is, // int (LPTSTR)
+ AfxSig_lwl, // LRESULT (WPARAM, LPARAM)
+ AfxSig_lwwM, // LRESULT (UINT, UINT, CMenu*)
+ AfxSig_vv, // void (void)
+
+ AfxSig_vw, // void (UINT)
+ AfxSig_vww, // void (UINT, UINT)
+ AfxSig_vvii, // void (int, int) // wParam is ignored
+ AfxSig_vwww, // void (UINT, UINT, UINT)
+ AfxSig_vwii, // void (UINT, int, int)
+ AfxSig_vwl, // void (UINT, LPARAM)
+ AfxSig_vbWW, // void (BOOL, CWnd*, CWnd*)
+ AfxSig_vD, // void (CDC*)
+ AfxSig_vM, // void (CMenu*)
+ AfxSig_vMwb, // void (CMenu*, UINT, BOOL)
+
+ AfxSig_vW, // void (CWnd*)
+ AfxSig_vWww, // void (CWnd*, UINT, UINT)
+ AfxSig_vWp, // void (CWnd*, CPoint)
+ AfxSig_vWh, // void (CWnd*, HANDLE)
+ AfxSig_vwW, // void (UINT, CWnd*)
+ AfxSig_vwWb, // void (UINT, CWnd*, BOOL)
+ AfxSig_vwwW, // void (UINT, UINT, CWnd*)
+ AfxSig_vwwx, // void (UINT, UINT)
+ AfxSig_vs, // void (LPTSTR)
+ AfxSig_vOWNER, // void (int, LPTSTR), force return TRUE
+ AfxSig_iis, // int (int, LPTSTR)
+ AfxSig_wp, // UINT (CPoint)
+ AfxSig_wv, // UINT (void)
+ AfxSig_vPOS, // void (WINDOWPOS*)
+ AfxSig_vCALC, // void (BOOL, NCCALCSIZE_PARAMS*)
+ AfxSig_vNMHDRpl, // void (NMHDR*, LRESULT*)
+ AfxSig_bNMHDRpl, // BOOL (NMHDR*, LRESULT*)
+ AfxSig_vwNMHDRpl, // void (UINT, NMHDR*, LRESULT*)
+ AfxSig_bwNMHDRpl, // BOOL (UINT, NMHDR*, LRESULT*)
+ AfxSig_bHELPINFO, // BOOL (HELPINFO*)
+ AfxSig_vwSIZING, // void (UINT, LPRECT) -- return TRUE
+
+ // signatures specific to CCmdTarget
+ AfxSig_cmdui, // void (CCmdUI*)
+ AfxSig_cmduiw, // void (CCmdUI*, UINT)
+ AfxSig_vpv, // void (void*)
+ AfxSig_bpv, // BOOL (void*)
+
+ // Other aliases (based on implementation)
+ AfxSig_vwwh, // void (UINT, UINT, HANDLE)
+ AfxSig_vwp, // void (UINT, CPoint)
+ AfxSig_bw = AfxSig_bb, // BOOL (UINT)
+ AfxSig_bh = AfxSig_bb, // BOOL (HANDLE)
+ AfxSig_iw = AfxSig_bb, // int (UINT)
+ AfxSig_ww = AfxSig_bb, // UINT (UINT)
+ AfxSig_bv = AfxSig_wv, // BOOL (void)
+ AfxSig_hv = AfxSig_wv, // HANDLE (void)
+ AfxSig_vb = AfxSig_vw, // void (BOOL)
+ AfxSig_vbh = AfxSig_vww, // void (BOOL, HANDLE)
+ AfxSig_vbw = AfxSig_vww, // void (BOOL, UINT)
+ AfxSig_vhh = AfxSig_vww, // void (HANDLE, HANDLE)
+ AfxSig_vh = AfxSig_vw, // void (HANDLE)
+ AfxSig_viSS = AfxSig_vwl, // void (int, STYLESTRUCT*)
+ AfxSig_bwl = AfxSig_lwl,
+ AfxSig_vwMOVING = AfxSig_vwSIZING, // void (UINT, LPRECT) -- return TRUE
+
+ AfxSig_vW2, // void (CWnd*) (CWnd* comes from lParam)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Command notifications for CCmdTarget notifications
+
+#define CN_COMMAND 0 // void ()
+#define CN_UPDATE_COMMAND_UI ((UINT)(-1)) // void (CCmdUI*)
+#define CN_EVENT ((UINT)(-2)) // OLE event
+// > 0 are control notifications
+
+#define ON_COMMAND(id, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, (AFX_PMSG)memberFxn },
+ // ON_COMMAND(id, OnFoo) is the same as
+ // ON_CONTROL(0, id, OnFoo) or ON_BN_CLICKED(0, id, OnFoo)
+
+#define ON_COMMAND_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_vw, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT))memberFxn },
+ // ON_COMMAND_RANGE(id, idLast, OnFoo) is the same as
+ // ON_CONTROL_RANGE(0, id, idLast, OnFoo)
+
+#define ON_COMMAND_EX(id, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_bw, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))memberFxn },
+
+#define ON_COMMAND_EX_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_bw, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))memberFxn },
+
+// update ui's are listed as WM_COMMAND's so they get routed like commands
+#define ON_UPDATE_COMMAND_UI(id, memberFxn) \
+ { WM_COMMAND, CN_UPDATE_COMMAND_UI, (WORD)id, (WORD)id, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))memberFxn },
+
+#define ON_UPDATE_COMMAND_UI_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_UPDATE_COMMAND_UI, (WORD)id, (WORD)idLast, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))memberFxn },
+
+#define ON_NOTIFY(wNotifyCode, id, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_vNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))memberFxn },
+
+#define ON_NOTIFY_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_vwNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))memberFxn },
+
+#define ON_NOTIFY_EX(wNotifyCode, id, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_bwNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))memberFxn },
+
+#define ON_NOTIFY_EX_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_bwNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))memberFxn },
+
+// for general controls
+#define ON_CONTROL(wNotifyCode, id, memberFxn) \
+ { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)id, AfxSig_vv, \
+ (AFX_PMSG)memberFxn },
+
+#define ON_CONTROL_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_vw, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT))memberFxn },
+
+#define WM_REFLECT_BASE 0xBC00
+
+// for control notification reflection
+#define ON_CONTROL_REFLECT(wNotifyCode, memberFxn) \
+ { WM_COMMAND+WM_REFLECT_BASE, (WORD)wNotifyCode, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)memberFxn },
+
+#define ON_CONTROL_REFLECT_EX(wNotifyCode, memberFxn) \
+ { WM_COMMAND+WM_REFLECT_BASE, (WORD)wNotifyCode, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)())memberFxn },
+
+#define ON_NOTIFY_REFLECT(wNotifyCode, memberFxn) \
+ { WM_NOTIFY+WM_REFLECT_BASE, (WORD)(int)wNotifyCode, 0, 0, AfxSig_vNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))memberFxn },
+
+#define ON_NOTIFY_REFLECT_EX(wNotifyCode, memberFxn) \
+ { WM_NOTIFY+WM_REFLECT_BASE, (WORD)(int)wNotifyCode, 0, 0, AfxSig_bNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))memberFxn },
+
+#define ON_UPDATE_COMMAND_UI_REFLECT(memberFxn) \
+ { WM_COMMAND+WM_REFLECT_BASE, CN_UPDATE_COMMAND_UI, 0, 0, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
+// Message map tables for Windows messages
+
+#define ON_WM_CREATE() \
+ { WM_CREATE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))OnCreate },
+#define ON_WM_DESTROY() \
+ { WM_DESTROY, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnDestroy },
+#define ON_WM_MOVE() \
+ { WM_MOVE, 0, 0, 0, AfxSig_vvii, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, int))OnMove },
+#define ON_WM_SIZE() \
+ { WM_SIZE, 0, 0, 0, AfxSig_vwii, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, int, int))OnSize },
+#define ON_WM_ACTIVATE() \
+ { WM_ACTIVATE, 0, 0, 0, AfxSig_vwWb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CWnd*, BOOL))OnActivate },
+#define ON_WM_SETFOCUS() \
+ { WM_SETFOCUS, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))OnSetFocus },
+#define ON_WM_KILLFOCUS() \
+ { WM_KILLFOCUS, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))OnKillFocus },
+#define ON_WM_ENABLE() \
+ { WM_ENABLE, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))OnEnable },
+#define ON_WM_HELPINFO() \
+ { WM_HELP, 0, 0, 0, AfxSig_bHELPINFO, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(HELPINFO*))OnHelpInfo },
+#define ON_WM_PAINT() \
+ { WM_PAINT, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnPaint },
+#define ON_WM_CLOSE() \
+ { WM_CLOSE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnClose },
+#define ON_WM_QUERYENDSESSION() \
+ { WM_QUERYENDSESSION, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))OnQueryEndSession },
+#define ON_WM_QUERYOPEN() \
+ { WM_QUERYOPEN, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))OnQueryOpen },
+#define ON_WM_ERASEBKGND() \
+ { WM_ERASEBKGND, 0, 0, 0, AfxSig_bD, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CDC*))OnEraseBkgnd },
+#define ON_WM_SYSCOLORCHANGE() \
+ { WM_SYSCOLORCHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnSysColorChange },
+#define ON_WM_ENDSESSION() \
+ { WM_ENDSESSION, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))OnEndSession },
+#define ON_WM_SHOWWINDOW() \
+ { WM_SHOWWINDOW, 0, 0, 0, AfxSig_vbw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, UINT))OnShowWindow },
+#define ON_WM_CTLCOLOR() \
+ { WM_CTLCOLOR, 0, 0, 0, AfxSig_hDWw, \
+ (AFX_PMSG)(AFX_PMSGW)(HBRUSH (AFX_MSG_CALL CWnd::*)(CDC*, CWnd*, UINT))OnCtlColor },
+#define ON_WM_CTLCOLOR_REFLECT() \
+ { WM_CTLCOLOR+WM_REFLECT_BASE, 0, 0, 0, AfxSig_hDw, \
+ (AFX_PMSG)(AFX_PMSGW)(HBRUSH (AFX_MSG_CALL CWnd::*)(CDC*, UINT))CtlColor },
+#define ON_WM_WININICHANGE() \
+ { WM_WININICHANGE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPCTSTR))OnWinIniChange },
+#define ON_WM_DEVMODECHANGE() \
+ { WM_DEVMODECHANGE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPTSTR))OnDevModeChange },
+#define ON_WM_ACTIVATEAPP() \
+ { WM_ACTIVATEAPP, 0, 0, 0, AfxSig_vbh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, HTASK))OnActivateApp },
+#define ON_WM_FONTCHANGE() \
+ { WM_FONTCHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnFontChange },
+#define ON_WM_TIMECHANGE() \
+ { WM_TIMECHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnTimeChange },
+#define ON_WM_CANCELMODE() \
+ { WM_CANCELMODE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnCancelMode },
+#define ON_WM_SETCURSOR() \
+ { WM_SETCURSOR, 0, 0, 0, AfxSig_bWww, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))OnSetCursor },
+#define ON_WM_MOUSEACTIVATE() \
+ { WM_MOUSEACTIVATE, 0, 0, 0, AfxSig_iWww, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))OnMouseActivate },
+#define ON_WM_CHILDACTIVATE() \
+ { WM_CHILDACTIVATE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnChildActivate },
+#define ON_WM_GETMINMAXINFO() \
+ { WM_GETMINMAXINFO, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(MINMAXINFO*))OnGetMinMaxInfo },
+#define ON_WM_ICONERASEBKGND() \
+ { WM_ICONERASEBKGND, 0, 0, 0, AfxSig_vD, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CDC*))OnIconEraseBkgnd },
+#define ON_WM_SPOOLERSTATUS() \
+ { WM_SPOOLERSTATUS, 0, 0, 0, AfxSig_vww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))OnSpoolerStatus },
+#define ON_WM_DRAWITEM() \
+ { WM_DRAWITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPDRAWITEMSTRUCT))OnDrawItem },
+#define ON_WM_DRAWITEM_REFLECT() \
+ { WM_DRAWITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPDRAWITEMSTRUCT))DrawItem },
+#define ON_WM_MEASUREITEM() \
+ { WM_MEASUREITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPMEASUREITEMSTRUCT))OnMeasureItem },
+#define ON_WM_MEASUREITEM_REFLECT() \
+ { WM_MEASUREITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPMEASUREITEMSTRUCT))MeasureItem },
+#define ON_WM_DELETEITEM() \
+ { WM_DELETEITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPDELETEITEMSTRUCT))OnDeleteItem },
+#define ON_WM_DELETEITEM_REFLECT() \
+ { WM_DELETEITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPDELETEITEMSTRUCT))DeleteItem },
+#define ON_WM_CHARTOITEM() \
+ { WM_CHARTOITEM, 0, 0, 0, AfxSig_iwWw, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, CListBox*, UINT))OnCharToItem },
+#define ON_WM_CHARTOITEM_REFLECT() \
+ { WM_CHARTOITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_iww, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, UINT))CharToItem },
+#define ON_WM_VKEYTOITEM() \
+ { WM_VKEYTOITEM, 0, 0, 0, AfxSig_iwWw, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, CListBox*, UINT))OnVKeyToItem },
+#define ON_WM_VKEYTOITEM_REFLECT() \
+ { WM_VKEYTOITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_iww, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, UINT))VKeyToItem },
+#define ON_WM_QUERYDRAGICON() \
+ { WM_QUERYDRAGICON, 0, 0, 0, AfxSig_hv, \
+ (AFX_PMSG)(AFX_PMSGW)(HCURSOR (AFX_MSG_CALL CWnd::*)())OnQueryDragIcon },
+#define ON_WM_COMPAREITEM() \
+ { WM_COMPAREITEM, 0, 0, 0, AfxSig_iis, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(int, LPCOMPAREITEMSTRUCT))OnCompareItem },
+#define ON_WM_COMPAREITEM_REFLECT() \
+ { WM_COMPAREITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCOMPAREITEMSTRUCT))CompareItem },
+#define ON_WM_COMPACTING() \
+ { WM_COMPACTING, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))OnCompacting },
+#define ON_WM_NCCREATE() \
+ { WM_NCCREATE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))OnNcCreate },
+#define ON_WM_NCDESTROY() \
+ { WM_NCDESTROY, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnNcDestroy },
+#define ON_WM_NCCALCSIZE() \
+ { WM_NCCALCSIZE, 0, 0, 0, AfxSig_vCALC, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, NCCALCSIZE_PARAMS*))OnNcCalcSize },
+#define ON_WM_NCHITTEST() \
+ { WM_NCHITTEST, 0, 0, 0, AfxSig_wp, \
+ (AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(CPoint))OnNcHitTest },
+#define ON_WM_NCPAINT() \
+ { WM_NCPAINT, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnNcPaint },
+#define ON_WM_NCACTIVATE() \
+ { WM_NCACTIVATE, 0, 0, 0, AfxSig_bb, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(BOOL))OnNcActivate },
+#define ON_WM_GETDLGCODE() \
+ { WM_GETDLGCODE, 0, 0, 0, AfxSig_wv, \
+ (AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(void))OnGetDlgCode },
+#define ON_WM_NCMOUSEMOVE() \
+ { WM_NCMOUSEMOVE, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcMouseMove },
+#define ON_WM_NCLBUTTONDOWN() \
+ { WM_NCLBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcLButtonDown },
+#define ON_WM_NCLBUTTONUP() \
+ { WM_NCLBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcLButtonUp },
+#define ON_WM_NCLBUTTONDBLCLK() \
+ { WM_NCLBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcLButtonDblClk },
+#define ON_WM_NCRBUTTONDOWN() \
+ { WM_NCRBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcRButtonDown },
+#define ON_WM_NCRBUTTONUP() \
+ { WM_NCRBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcRButtonUp },
+#define ON_WM_NCRBUTTONDBLCLK() \
+ { WM_NCRBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcRButtonDblClk },
+#define ON_WM_NCMBUTTONDOWN() \
+ { WM_NCMBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcMButtonDown },
+#define ON_WM_NCMBUTTONUP() \
+ { WM_NCMBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcMButtonUp },
+#define ON_WM_NCMBUTTONDBLCLK() \
+ { WM_NCMBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnNcMButtonDblClk },
+#define ON_WM_KEYDOWN() \
+ { WM_KEYDOWN, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnKeyDown },
+#define ON_WM_KEYUP() \
+ { WM_KEYUP, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnKeyUp },
+#define ON_WM_CHAR() \
+ { WM_CHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnChar },
+#define ON_WM_DEADCHAR() \
+ { WM_DEADCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnDeadChar },
+#define ON_WM_SYSKEYDOWN() \
+ { WM_SYSKEYDOWN, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnSysKeyDown },
+#define ON_WM_SYSKEYUP() \
+ { WM_SYSKEYUP, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnSysKeyUp },
+#define ON_WM_SYSCHAR() \
+ { WM_SYSCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnSysChar },
+#define ON_WM_SYSDEADCHAR() \
+ { WM_SYSDEADCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))OnSysDeadChar },
+#define ON_WM_SYSCOMMAND() \
+ { WM_SYSCOMMAND, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))OnSysCommand },
+#define ON_WM_TCARD() \
+ { WM_TCARD, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, DWORD))OnTCard },
+#define ON_WM_TIMER() \
+ { WM_TIMER, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))OnTimer },
+#define ON_WM_HSCROLL() \
+ { WM_HSCROLL, 0, 0, 0, AfxSig_vwwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, CScrollBar*))OnHScroll },
+#define ON_WM_HSCROLL_REFLECT() \
+ { WM_HSCROLL+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwwx, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))HScroll },
+#define ON_WM_VSCROLL() \
+ { WM_VSCROLL, 0, 0, 0, AfxSig_vwwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, CScrollBar*))OnVScroll },
+#define ON_WM_VSCROLL_REFLECT() \
+ { WM_VSCROLL+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwwx, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))VScroll },
+#define ON_WM_INITMENU() \
+ { WM_INITMENU, 0, 0, 0, AfxSig_vM, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CMenu*))OnInitMenu },
+#define ON_WM_INITMENUPOPUP() \
+ { WM_INITMENUPOPUP, 0, 0, 0, AfxSig_vMwb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CMenu*, UINT, BOOL))OnInitMenuPopup },
+#define ON_WM_MENUSELECT() \
+ { WM_MENUSELECT, 0, 0, 0, AfxSig_vwwh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, HMENU))OnMenuSelect },
+#define ON_WM_MENUCHAR() \
+ { WM_MENUCHAR, 0, 0, 0, AfxSig_lwwM, \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(UINT, UINT, CMenu*))OnMenuChar },
+#define ON_WM_ENTERIDLE() \
+ { WM_ENTERIDLE, 0, 0, 0, AfxSig_vwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CWnd*))OnEnterIdle },
+#define ON_WM_MOUSEMOVE() \
+ { WM_MOUSEMOVE, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnMouseMove },
+#define ON_WM_LBUTTONDOWN() \
+ { WM_LBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnLButtonDown },
+#define ON_WM_LBUTTONUP() \
+ { WM_LBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnLButtonUp },
+#define ON_WM_LBUTTONDBLCLK() \
+ { WM_LBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnLButtonDblClk },
+#define ON_WM_RBUTTONDOWN() \
+ { WM_RBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnRButtonDown },
+#define ON_WM_RBUTTONUP() \
+ { WM_RBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnRButtonUp },
+#define ON_WM_RBUTTONDBLCLK() \
+ { WM_RBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnRButtonDblClk },
+#define ON_WM_MBUTTONDOWN() \
+ { WM_MBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnMButtonDown },
+#define ON_WM_MBUTTONUP() \
+ { WM_MBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnMButtonUp },
+#define ON_WM_MBUTTONDBLCLK() \
+ { WM_MBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))OnMButtonDblClk },
+#define ON_WM_PARENTNOTIFY() \
+ { WM_PARENTNOTIFY, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))OnParentNotify },
+#define ON_WM_PARENTNOTIFY_REFLECT() \
+ { WM_PARENTNOTIFY+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))ParentNotify },
+#define ON_WM_MDIACTIVATE() \
+ { WM_MDIACTIVATE, 0, 0, 0, AfxSig_vbWW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, CWnd*, CWnd*))OnMDIActivate },
+#define ON_WM_RENDERFORMAT() \
+ { WM_RENDERFORMAT, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))OnRenderFormat },
+#define ON_WM_RENDERALLFORMATS() \
+ { WM_RENDERALLFORMATS, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnRenderAllFormats },
+#define ON_WM_DESTROYCLIPBOARD() \
+ { WM_DESTROYCLIPBOARD, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnDestroyClipboard },
+#define ON_WM_DRAWCLIPBOARD() \
+ { WM_DRAWCLIPBOARD, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))OnDrawClipboard },
+#define ON_WM_PAINTCLIPBOARD() \
+ { WM_PAINTCLIPBOARD, 0, 0, 0, AfxSig_vWh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, HGLOBAL))OnPaintClipboard },
+#define ON_WM_VSCROLLCLIPBOARD() \
+ { WM_VSCROLLCLIPBOARD, 0, 0, 0, AfxSig_vWww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))OnVScrollClipboard },
+#define ON_WM_CONTEXTMENU() \
+ { WM_CONTEXTMENU, 0, 0, 0, AfxSig_vWp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, CPoint))OnContextMenu },
+#define ON_WM_SIZECLIPBOARD() \
+ { WM_SIZECLIPBOARD, 0, 0, 0, AfxSig_vWh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, HGLOBAL))OnSizeClipboard },
+#define ON_WM_ASKCBFORMATNAME() \
+ { WM_ASKCBFORMATNAME, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPTSTR))OnAskCbFormatName },
+#define ON_WM_CHANGECBCHAIN() \
+ { WM_CHANGECBCHAIN, 0, 0, 0, AfxSig_vhh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(HWND, HWND))OnChangeCbChain },
+#define ON_WM_HSCROLLCLIPBOARD() \
+ { WM_HSCROLLCLIPBOARD, 0, 0, 0, AfxSig_vWww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))OnHScrollClipboard },
+#define ON_WM_QUERYNEWPALETTE() \
+ { WM_QUERYNEWPALETTE, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))OnQueryNewPalette },
+#define ON_WM_PALETTECHANGED() \
+ { WM_PALETTECHANGED, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))OnPaletteChanged },
+
+#define ON_WM_PALETTEISCHANGING() \
+ { WM_PALETTEISCHANGING, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))OnPaletteIsChanging },
+#define ON_WM_DROPFILES() \
+ { WM_DROPFILES, 0, 0, 0, AfxSig_vh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(HDROP))OnDropFiles },
+#define ON_WM_WINDOWPOSCHANGING() \
+ { WM_WINDOWPOSCHANGING, 0, 0, 0, AfxSig_vPOS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WINDOWPOS*))OnWindowPosChanging },
+#define ON_WM_WINDOWPOSCHANGED() \
+ { WM_WINDOWPOSCHANGED, 0, 0, 0, AfxSig_vPOS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WINDOWPOS*))OnWindowPosChanged },
+
+#define ON_WM_EXITMENULOOP() \
+ { WM_EXITMENULOOP, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))OnExitMenuLoop },
+#define ON_WM_ENTERMENULOOP() \
+ { WM_ENTERMENULOOP, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))OnEnterMenuLoop },
+
+#define ON_WM_STYLECHANGED() \
+ { WM_STYLECHANGED, 0, 0, 0, AfxSig_viSS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPSTYLESTRUCT))OnStyleChanged },
+#define ON_WM_STYLECHANGING() \
+ { WM_STYLECHANGING, 0, 0, 0, AfxSig_viSS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPSTYLESTRUCT))OnStyleChanging },
+#define ON_WM_SIZING() \
+ { WM_SIZING, 0, 0, 0, AfxSig_vwSIZING, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPRECT))OnSizing },
+#define ON_WM_MOVING() \
+ { WM_MOVING, 0, 0, 0, AfxSig_vwMOVING, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPRECT))OnMoving },
+#define ON_WM_CAPTURECHANGED() \
+ { WM_CAPTURECHANGED, 0, 0, 0, AfxSig_vW2, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))OnCaptureChanged },
+#define ON_WM_DEVICECHANGE() \
+ { WM_DEVICECHANGE, 0, 0, 0, AfxSig_bwl, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(UINT, DWORD))OnDeviceChange },
+
+/////////////////////////////////////////////////////////////////////////////
+// Message map tables for Control Notification messages
+
+// Static control notification codes
+#define ON_STN_CLICKED(id, memberFxn) \
+ ON_CONTROL(STN_CLICKED, id, memberFxn)
+#define ON_STN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(STN_DBLCLK, id, memberFxn)
+#define ON_STN_ENABLE(id, memberFxn) \
+ ON_CONTROL(STN_ENABLE, id, memberFxn)
+#define ON_STN_DISABLE(id, memberFxn) \
+ ON_CONTROL(STN_DISABLE, id, memberFxn)
+
+
+// Edit Control Notification Codes
+#define ON_EN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(EN_SETFOCUS, id, memberFxn)
+#define ON_EN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(EN_KILLFOCUS, id, memberFxn)
+#define ON_EN_CHANGE(id, memberFxn) \
+ ON_CONTROL(EN_CHANGE, id, memberFxn)
+#define ON_EN_UPDATE(id, memberFxn) \
+ ON_CONTROL(EN_UPDATE, id, memberFxn)
+#define ON_EN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(EN_ERRSPACE, id, memberFxn)
+#define ON_EN_MAXTEXT(id, memberFxn) \
+ ON_CONTROL(EN_MAXTEXT, id, memberFxn)
+#define ON_EN_HSCROLL(id, memberFxn) \
+ ON_CONTROL(EN_HSCROLL, id, memberFxn)
+#define ON_EN_VSCROLL(id, memberFxn) \
+ ON_CONTROL(EN_VSCROLL, id, memberFxn)
+
+// User Button Notification Codes
+#define ON_BN_CLICKED(id, memberFxn) \
+ ON_CONTROL(BN_CLICKED, id, memberFxn)
+#define ON_BN_DOUBLECLICKED(id, memberFxn) \
+ ON_CONTROL(BN_DOUBLECLICKED, id, memberFxn)
+#define ON_BN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(BN_SETFOCUS, id, memberFxn)
+#define ON_BN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(BN_KILLFOCUS, id, memberFxn)
+
+// old BS_USERBUTTON button notifications - obsolete in Win31
+#define ON_BN_PAINT(id, memberFxn) \
+ ON_CONTROL(BN_PAINT, id, memberFxn)
+#define ON_BN_HILITE(id, memberFxn) \
+ ON_CONTROL(BN_HILITE, id, memberFxn)
+#define ON_BN_UNHILITE(id, memberFxn) \
+ ON_CONTROL(BN_UNHILITE, id, memberFxn)
+#define ON_BN_DISABLE(id, memberFxn) \
+ ON_CONTROL(BN_DISABLE, id, memberFxn)
+
+// Listbox Notification Codes
+#define ON_LBN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(LBN_ERRSPACE, id, memberFxn)
+#define ON_LBN_SELCHANGE(id, memberFxn) \
+ ON_CONTROL(LBN_SELCHANGE, id, memberFxn)
+#define ON_LBN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(LBN_DBLCLK, id, memberFxn)
+#define ON_LBN_SELCANCEL(id, memberFxn) \
+ ON_CONTROL(LBN_SELCANCEL, id, memberFxn)
+#define ON_LBN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(LBN_SETFOCUS, id, memberFxn)
+#define ON_LBN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(LBN_KILLFOCUS, id, memberFxn)
+
+// Check Listbox Notification codes
+#define CLBN_CHKCHANGE (40)
+#define ON_CLBN_CHKCHANGE(id, memberFxn) \
+ ON_CONTROL(CLBN_CHKCHANGE, id, memberFxn)
+
+// Combo Box Notification Codes
+#define ON_CBN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(CBN_ERRSPACE, id, memberFxn)
+#define ON_CBN_SELCHANGE(id, memberFxn) \
+ ON_CONTROL(CBN_SELCHANGE, id, memberFxn)
+#define ON_CBN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(CBN_DBLCLK, id, memberFxn)
+#define ON_CBN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(CBN_SETFOCUS, id, memberFxn)
+#define ON_CBN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(CBN_KILLFOCUS, id, memberFxn)
+#define ON_CBN_EDITCHANGE(id, memberFxn) \
+ ON_CONTROL(CBN_EDITCHANGE, id, memberFxn)
+#define ON_CBN_EDITUPDATE(id, memberFxn) \
+ ON_CONTROL(CBN_EDITUPDATE, id, memberFxn)
+#define ON_CBN_DROPDOWN(id, memberFxn) \
+ ON_CONTROL(CBN_DROPDOWN, id, memberFxn)
+#define ON_CBN_CLOSEUP(id, memberFxn) \
+ ON_CONTROL(CBN_CLOSEUP, id, memberFxn)
+#define ON_CBN_SELENDOK(id, memberFxn) \
+ ON_CONTROL(CBN_SELENDOK, id, memberFxn)
+#define ON_CBN_SELENDCANCEL(id, memberFxn) \
+ ON_CONTROL(CBN_SELENDCANCEL, id, memberFxn)
+
+/////////////////////////////////////////////////////////////////////////////
+// User extensions for message map entries
+
+// for Windows messages
+#define ON_MESSAGE(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_lwl, \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))memberFxn },
+
+// for Registered Windows messages
+#define ON_REGISTERED_MESSAGE(nMessageVariable, memberFxn) \
+ { 0xC000, 0, 0, 0, (UINT)(UINT*)(&nMessageVariable), \
+ /*implied 'AfxSig_lwl'*/ \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxmt.h b/public/sdk/inc/mfc40/afxmt.h
new file mode 100644
index 000000000..d12d79aba
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxmt.h
@@ -0,0 +1,255 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXMT_H__
+#define __AFXMT_H__
+
+#ifdef _MAC
+ #error Multithreaded classes not supported in this library variant.
+#endif
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXMT - MFC Multithreaded Extensions (Syncronization Objects)
+
+// Classes declared in this file
+
+//CObject
+ class CSyncObject;
+ class CSemaphore;
+ class CMutex;
+ class CEvent;
+ class CCriticalSection;
+
+class CSingleLock;
+class CMultiLock;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic synchronization object
+
+class CSyncObject : public CObject
+{
+ DECLARE_DYNAMIC(CSyncObject)
+
+// Constructor
+public:
+ CSyncObject(LPCTSTR pstrName);
+
+// Attributes
+public:
+ operator HANDLE() const;
+ HANDLE m_hObject;
+
+// Operations
+ virtual BOOL Lock(DWORD dwTimeout = INFINITE);
+ virtual BOOL Unlock() = 0;
+ virtual BOOL Unlock(LONG /* lCount */, LPLONG /* lpPrevCount=NULL */)
+ { return TRUE; }
+
+// Implementation
+public:
+ virtual ~CSyncObject();
+#ifdef _DEBUG
+ CString m_strName;
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ friend class CSingleLock;
+ friend class CMultiLock;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSemaphore
+
+class CSemaphore : public CSyncObject
+{
+ DECLARE_DYNAMIC(CSemaphore)
+
+// Constructor
+public:
+ CSemaphore(LONG lInitialCount = 1, LONG lMaxCount = 1,
+ LPCTSTR pstrName=NULL, LPSECURITY_ATTRIBUTES lpsaAttributes = NULL);
+
+// Implementation
+public:
+ virtual ~CSemaphore();
+ virtual BOOL Unlock();
+ virtual BOOL Unlock(LONG lCount, LPLONG lprevCount = NULL);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMutex
+
+class CMutex : public CSyncObject
+{
+ DECLARE_DYNAMIC(CMutex)
+
+// Constructor
+public:
+ CMutex(BOOL bInitiallyOwn = FALSE, LPCTSTR lpszName = NULL,
+ LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
+
+// Implementation
+public:
+ virtual ~CMutex();
+ BOOL Unlock();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CEvent
+
+class CEvent : public CSyncObject
+{
+ DECLARE_DYNAMIC(CEvent)
+
+// Constructor
+public:
+ CEvent(BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE,
+ LPCTSTR lpszNAme = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
+
+// Operations
+public:
+ BOOL SetEvent();
+ BOOL PulseEvent();
+ BOOL ResetEvent();
+ BOOL Unlock();
+
+// Implementation
+public:
+ virtual ~CEvent();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CCriticalSection
+
+class CCriticalSection : public CSyncObject
+{
+ DECLARE_DYNAMIC(CCriticalSection)
+
+// Constructor
+public:
+ CCriticalSection();
+
+// Attributes
+public:
+ operator CRITICAL_SECTION*();
+ CRITICAL_SECTION m_sect;
+
+// Operations
+public:
+ BOOL Unlock();
+ BOOL Lock();
+ BOOL Lock(DWORD dwTimeout);
+
+// Implementation
+public:
+ virtual ~CCriticalSection();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSingleLock
+
+class CSingleLock
+{
+// Constructors
+public:
+ CSingleLock(CSyncObject* pObject, BOOL bInitialLock = FALSE);
+
+// Operations
+public:
+ BOOL Lock(DWORD dwTimeOut = INFINITE);
+ BOOL Unlock();
+ BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
+ BOOL IsLocked();
+
+// Implementation
+public:
+ ~CSingleLock();
+
+protected:
+ CSyncObject* m_pObject;
+ HANDLE m_hObject;
+ BOOL m_bAcquired;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMultiLock
+
+class CMultiLock
+{
+// Constructor
+public:
+ CMultiLock(CSyncObject* ppObjects[], DWORD dwCount, BOOL bInitialLock = FALSE);
+
+// Operations
+public:
+ DWORD Lock(DWORD dwTimeOut = INFINITE, BOOL bWaitForAll = TRUE,
+ DWORD dwWakeMask = 0);
+ BOOL Unlock();
+ BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
+ BOOL IsLocked(DWORD dwItem);
+
+// Implementation
+public:
+ ~CMultiLock();
+
+protected:
+ HANDLE m_hPreallocated[8];
+ BOOL m_bPreallocated[8];
+
+ CSyncObject* const * m_ppObjectArray;
+ HANDLE* m_pHandleArray;
+ BOOL* m_bLockedArray;
+ DWORD m_dwCount;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXMT_INLINE inline
+#include <afxmt.inl>
+#undef _AFXMT_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXMT_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxmt.inl b/public/sdk/inc/mfc40/afxmt.inl
new file mode 100644
index 000000000..036c5c2a4
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxmt.inl
@@ -0,0 +1,50 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXMT.H
+
+#ifdef _AFXMT_INLINE
+
+_AFXMT_INLINE CSyncObject::operator HANDLE() const
+ { return m_hObject;}
+
+_AFXMT_INLINE BOOL CSemaphore::Unlock()
+ { return Unlock(1, NULL); }
+
+_AFXMT_INLINE BOOL CEvent::SetEvent()
+ { ASSERT(m_hObject != NULL); return ::SetEvent(m_hObject); }
+_AFXMT_INLINE BOOL CEvent::PulseEvent()
+ { ASSERT(m_hObject != NULL); return ::PulseEvent(m_hObject); }
+_AFXMT_INLINE BOOL CEvent::ResetEvent()
+ { ASSERT(m_hObject != NULL); return ::ResetEvent(m_hObject); }
+
+_AFXMT_INLINE CSingleLock::~CSingleLock()
+ { Unlock(); }
+_AFXMT_INLINE BOOL CSingleLock::IsLocked()
+ { return m_bAcquired; }
+
+_AFXMT_INLINE BOOL CMultiLock::IsLocked(DWORD dwObject)
+ { ASSERT(dwObject >= 0 && dwObject < m_dwCount);
+ return m_bLockedArray[dwObject]; }
+
+_AFXMT_INLINE CCriticalSection::CCriticalSection() : CSyncObject(NULL)
+ { ::InitializeCriticalSection(&m_sect); }
+_AFXMT_INLINE CCriticalSection::operator CRITICAL_SECTION*()
+ { return (CRITICAL_SECTION*) &m_sect; }
+_AFXMT_INLINE CCriticalSection::~CCriticalSection()
+ { ::DeleteCriticalSection(&m_sect); }
+_AFXMT_INLINE BOOL CCriticalSection::Lock()
+ { ::EnterCriticalSection(&m_sect); return TRUE; }
+_AFXMT_INLINE BOOL CCriticalSection::Lock(DWORD /* dwTimeout */)
+ { return Lock(); }
+_AFXMT_INLINE BOOL CCriticalSection::Unlock()
+ { ::LeaveCriticalSection(&m_sect); return TRUE; }
+
+#endif //_AFXMT_INLINE
diff --git a/public/sdk/inc/mfc40/afxodlgs.h b/public/sdk/inc/mfc40/afxodlgs.h
new file mode 100644
index 000000000..dd887df4c
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxodlgs.h
@@ -0,0 +1,502 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXODLGS_H__
+#define __AFXODLGS_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+
+#ifdef _MAC
+ // include OLE dialog/helper APIs
+ #include <ole2ui.h>
+#else
+ // include OLE dialog/helper APIs
+ #ifndef _OLEDLG_H_
+ #include <oledlg.h>
+ #endif
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXODLGS.H - MFC OLE dialogs
+
+// Classes declared in this file
+
+//CCommonDialog
+ class COleDialog; // base class for OLE dialog wrappers
+ class COleInsertDialog; // insert object dialog
+ class COleConvertDialog; // convert dialog
+ class COleChangeIconDialog; // change icon dialog
+ class COlePasteSpecialDialog; // paste special dialog
+ class COleLinksDialog; // edit links dialog
+ class COleUpdateDialog; // update links/embeddings dialog
+ class COleBusyDialog; // used for
+ class COlePropertiesDialog;
+ class COleChangeSourceDialog;
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// COleUILinkInfo -- used internally to implement
+// IOleUILinkInfo and IOleUILinkContainer
+// used by COleLinksDialog and COleChangeSourceDialog
+
+class COleUILinkInfo : public IOleUILinkInfo
+{
+public:
+ COleUILinkInfo(COleDocument* pDocument);
+
+// Implementation
+ COleDocument* m_pDocument; // document being manipulated
+ COleClientItem* m_pSelectedItem; // primary selected item in m_pDocument
+ POSITION m_pos; // used during link enumeration
+ BOOL m_bUpdateLinks; // update links?
+ BOOL m_bUpdateEmbeddings; // update embeddings?
+
+ STDMETHOD_(ULONG, AddRef)();
+ STDMETHOD_(ULONG, Release)();
+ STDMETHOD(QueryInterface)(REFIID, LPVOID*);
+
+ // IOleUILinkContainer
+ STDMETHOD_(DWORD,GetNextLink)(DWORD);
+ STDMETHOD(SetLinkUpdateOptions)(DWORD, DWORD);
+ STDMETHOD(GetLinkUpdateOptions)(DWORD, LPDWORD);
+ STDMETHOD(SetLinkSource)(DWORD, LPTSTR, ULONG, ULONG*, BOOL);
+ STDMETHOD(GetLinkSource)(DWORD, LPTSTR*, ULONG*, LPTSTR*, LPTSTR*, BOOL*,
+ BOOL*);
+ STDMETHOD(OpenLinkSource)(DWORD);
+ STDMETHOD(UpdateLink)(DWORD, BOOL, BOOL);
+ STDMETHOD(CancelLink)(DWORD);
+ // IOleUILinkInfo
+ STDMETHOD(GetLastUpdate)(DWORD dwLink, FILETIME* lpLastUpdate);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Wrappers for OLE UI dialogs
+
+class COleDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(COleDialog)
+
+// Attributes
+public:
+ UINT GetLastError() const;
+
+// Implementation
+public:
+ int MapResult(UINT nResult);
+ COleDialog(CWnd* pParentWnd);
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ UINT m_nLastError;
+
+protected:
+ friend UINT CALLBACK _AfxOleHookProc(HWND, UINT, WPARAM, LPARAM);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleInsertDialog
+
+class COleInsertDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleInsertDialog)
+
+// Attributes
+public:
+ OLEUIINSERTOBJECT m_io; // structure for OleUIInsertObject
+
+// Constructors
+ COleInsertDialog(DWORD dwFlags = IOF_SELECTCREATENEW,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ BOOL CreateItem(COleClientItem* pItem);
+ // call after DoModal to create item based on dialog data
+
+// Attributes (after DoModal returns IDOK)
+ enum Selection { createNewItem, insertFromFile, linkToFile };
+ UINT GetSelectionType() const;
+ // return type of selection made
+
+ CString GetPathName() const; // return full path name
+ REFCLSID GetClassID() const; // get class ID of new item
+
+ DVASPECT GetDrawAspect() const;
+ // DVASPECT_CONTENT or DVASPECT_ICON
+ HGLOBAL GetIconicMetafile() const;
+ // returns HGLOBAL to METAFILEPICT struct with iconic data
+
+// Implementation
+public:
+ virtual ~COleInsertDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szFileName[_MAX_PATH];
+ // contains full path name after return
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleConvertDialog
+
+class COleConvertDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleConvertDialog)
+
+// Attributes
+public:
+ OLEUICONVERT m_cv; // structure for OleUIConvert
+
+// Constructors
+ COleConvertDialog(COleClientItem* pItem,
+ DWORD dwFlags = CF_SELECTCONVERTTO, CLSID* pClassID = NULL,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ // just display the dialog and collect convert info
+ BOOL DoConvert(COleClientItem* pItem);
+ // do the conversion on pItem (after DoModal == IDOK)
+
+// Attributes (after DoModal returns IDOK)
+ enum Selection { noConversion, convertItem, activateAs };
+ UINT GetSelectionType() const;
+
+ HGLOBAL GetIconicMetafile() const; // will return NULL if same as before
+ REFCLSID GetClassID() const; // get class ID to convert or activate as
+ DVASPECT GetDrawAspect() const; // get new draw aspect
+
+// Implementation
+public:
+ virtual ~COleConvertDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleChangeIconDialog
+
+class COleChangeIconDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleChangeIconDialog)
+
+// Attributes
+public:
+ OLEUICHANGEICON m_ci; // structure for OleUIChangeIcon
+
+// Constructors
+ COleChangeIconDialog(COleClientItem* pItem,
+ DWORD dwFlags = CIF_SELECTCURRENT,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ BOOL DoChangeIcon(COleClientItem* pItem);
+
+// Attributes
+ HGLOBAL GetIconicMetafile() const;
+
+// Implementation
+public:
+ virtual ~COleChangeIconDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COlePasteSpecialDialog
+
+class COlePasteSpecialDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COlePasteSpecialDialog)
+
+// Attributes
+public:
+ OLEUIPASTESPECIAL m_ps; // structure for OleUIPasteSpecial
+
+// Constructors
+ COlePasteSpecialDialog(DWORD dwFlags = PSF_SELECTPASTE,
+ COleDataObject* pDataObject = NULL, CWnd *pParentWnd = NULL);
+
+// Operations
+ OLEUIPASTEFLAG AddLinkEntry(UINT cf);
+ void AddFormat(const FORMATETC& formatEtc, LPTSTR lpszFormat,
+ LPTSTR lpszResult, DWORD flags);
+ void AddFormat(UINT cf, DWORD tymed, UINT nFormatID, BOOL bEnableIcon,
+ BOOL bLink);
+ void AddStandardFormats(BOOL bEnableLink = TRUE);
+
+ virtual int DoModal();
+ BOOL CreateItem(COleClientItem *pNewItem);
+ // creates a standard OLE item from selection data
+
+// Attributes (after DoModal returns IDOK)
+ int GetPasteIndex() const; // resulting index to use for paste
+
+ enum Selection { pasteLink = 1, pasteNormal = 2, pasteStatic = 3, pasteOther = 4};
+ UINT GetSelectionType() const;
+ // get selection type (pasteLink, pasteNormal, pasteStatic)
+
+ DVASPECT GetDrawAspect() const;
+ // DVASPECT_CONTENT or DVASPECT_ICON
+ HGLOBAL GetIconicMetafile() const;
+ // returns HGLOBAL to METAFILEPICT struct with iconic data
+
+// Implementation
+public:
+ virtual ~COlePasteSpecialDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ unsigned int m_arrLinkTypes[8];
+ // size limit imposed by MFCUIx32.DLL library
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleLinksDialog
+
+class COleLinksDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleLinksDialog)
+
+// Attributes
+public:
+ OLEUIEDITLINKS m_el; // structure for OleUIEditLinks
+
+// Constructors
+ COleLinksDialog(COleDocument* pDoc, CView* pView, DWORD dwFlags = 0,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal(); // display the dialog and edit links
+
+// Implementation
+public:
+ virtual ~COleLinksDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+
+public:
+ COleUILinkInfo m_xLinkInfo; // implements IOleUILinkContainer
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleUpdateDialog
+
+class COleUpdateDialog : public COleLinksDialog
+{
+ DECLARE_DYNAMIC(COleUpdateDialog)
+
+// Constructors
+public:
+ COleUpdateDialog(COleDocument* pDoc,
+ BOOL bUpdateLinks = TRUE, BOOL bUpdateEmbeddings = FALSE,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+// Implementation
+public:
+ virtual ~COleUpdateDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ CString m_strCaption; // caption for the dialog
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleBusyDialog - useful in managing concurrency
+
+class COleBusyDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleBusyDialog)
+
+// Attributes
+public:
+ OLEUIBUSY m_bz;
+
+// Constructors
+ COleBusyDialog(HTASK htaskBusy, BOOL bNotResponding = FALSE,
+ DWORD dwFlags = 0, CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ enum Selection { switchTo = 1, retry = 2, callUnblocked = 3 };
+ UINT GetSelectionType() const;
+
+// Implementation
+public:
+ ~COleBusyDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ Selection m_selection; // selection after DoModal returns IDOK
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleEditProperties
+
+class COlePropertiesDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COlePropertiesDialog)
+
+// Attributes
+public:
+ OLEUIOBJECTPROPS m_op; // structure for OleUIObjectProperties
+ OLEUIGNRLPROPS m_gp; // specific to "General" page
+ OLEUIVIEWPROPS m_vp; // specific to "View" page
+ OLEUILINKPROPS m_lp; // specific to "Link" page
+ PROPSHEETHEADER m_psh; // PROPSHEETHEADER for customization
+
+// Constructors
+public:
+ COlePropertiesDialog(COleClientItem* pItem,
+ UINT nScaleMin = 10, UINT nScaleMax = 500, CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+// Overridables
+ virtual BOOL OnApplyScale(
+ COleClientItem* pItem, int nCurrentScale, BOOL bRelativeToOrig);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ virtual BOOL OnInitDialog();
+
+ BEGIN_INTERFACE_PART(OleUIObjInfo, IOleUIObjInfo)
+ INIT_INTERFACE_PART(COlePropertiesDialog, OleUIObjInfo)
+ STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
+ DWORD* lpdwObjSize, LPTSTR* lplpszLabel,
+ LPTSTR* lplpszType, LPTSTR* lplpszShortType,
+ LPTSTR* lplpszLocation);
+ STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
+ CLSID* lpClassID, WORD* lpwFormat,
+ CLSID* lpConvertDefaultClassID,
+ LPCLSID* lplpClsidExclude, UINT* lpcClsidExclude);
+ STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew);
+ STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale);
+ STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL hMetaPict, DWORD dvAspect,
+ int nCurrentScale, BOOL bRelativeToOrig);
+ END_INTERFACE_PART(OleUIObjInfo)
+ COleUILinkInfo m_xLinkInfo; // implements IOleUILinkContainer
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleChangeSourceDialog
+
+class COleChangeSourceDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleChangeSourceDialog)
+
+// Attributes
+public:
+ OLEUICHANGESOURCE m_cs; // structure for OleUIChangeSource
+
+// Constructors
+public:
+ COleChangeSourceDialog(COleClientItem* pItem, CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+// Attributes (after DoModal returns IDOK)
+ BOOL IsValidSource();
+ CString GetDisplayName();
+ CString GetFileName();
+ CString GetItemName();
+ CString GetFromPrefix();
+ CString GetToPrefix();
+
+// Implementation
+public:
+ COleUILinkInfo m_xLinkInfo;
+
+ virtual ~COleChangeSourceDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ virtual void PreInitDialog();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXODLGS_INLINE inline
+#include <afxole.inl>
+#undef _AFXODLGS_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXODLGS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxole.h b/public/sdk/inc/mfc40/afxole.h
new file mode 100644
index 000000000..11044aaf4
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxole.h
@@ -0,0 +1,1666 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLE_H__
+#define __AFXOLE_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h>
+#endif
+
+#ifndef __AFXDISP_H__
+ #include <afxdisp.h>
+#endif
+
+// include OLE Compound Document headers
+#ifndef _OLE2_H_
+ #include <ole2.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXOLE.H - MFC OLE support
+
+// Classes declared in this file
+
+//CDocument
+ class COleDocument; // OLE container document
+ class COleLinkingDoc; // supports links to embeddings
+ class COleServerDoc; // OLE server document
+
+//CCmdTarget
+ class CDocItem; // part of a document
+ class COleClientItem; // embedded ole object from outside
+ class COleServerItem; // ole object to export
+ class COleDataSource; // clipboard data source mechanism
+ class COleDropSource; // drag/drop source
+ class COleDropTarget; // drag/drop target
+ class COleMessageFilter; // concurrency management
+
+//CFrameWnd
+ class COleIPFrameWnd; // frame window for in-place servers
+
+//CControlBar
+ class COleResizeBar; // implements in-place resizing
+
+//CFile
+ class COleStreamFile; // CFile wrapper for IStream interface
+
+class COleDataObject; // wrapper for IDataObject interface
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// backward compatibility
+
+// COleClientDoc is now obsolete -- use COleDocument instead
+#define COleClientDoc COleDocument
+
+// COleServer has been replaced by the more general COleObjectFactory
+#define COleServer COleObjectFactory
+
+/////////////////////////////////////////////////////////////////////////////
+// Useful OLE specific types (some from OLE 1.0 headers)
+
+// Codes for CallBack events
+enum OLE_NOTIFICATION
+{
+ OLE_CHANGED, // representation of a draw aspect has changed
+ OLE_SAVED, // the item has committed its storage
+ OLE_CLOSED, // the item has closed
+ OLE_RENAMED, // the item has changed its moniker
+ OLE_CHANGED_STATE, // the item state (open, active, etc.) has changed
+ OLE_CHANGED_ASPECT, // the item draw aspect has changed
+};
+
+// Object types
+enum OLE_OBJTYPE
+{
+ OT_UNKNOWN = 0,
+
+ // These are OLE 1.0 types and OLE 2.0 types as returned from GetType().
+ OT_LINK = 1,
+ OT_EMBEDDED = 2,
+ OT_STATIC = 3,
+
+ // All OLE2 objects are written with this tag when serialized. This
+ // differentiates them from OLE 1.0 objects written with MFC 2.0.
+ // This value will never be returned from GetType().
+ OT_OLE2 = 256,
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDataObject -- simple wrapper for IDataObject
+
+class COleDataObject
+{
+// Constructors
+public:
+ COleDataObject();
+
+// Operations
+ void Attach(LPDATAOBJECT lpDataObject, BOOL bAutoRelease = TRUE);
+ LPDATAOBJECT Detach(); // detach and get ownership of m_lpDataObject
+ void Release(); // detach and Release ownership of m_lpDataObject
+ BOOL AttachClipboard(); // attach to current clipboard object
+
+// Attributes
+ void BeginEnumFormats();
+ BOOL GetNextFormat(LPFORMATETC lpFormatEtc);
+ CFile* GetFileData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+ HGLOBAL GetGlobalData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+ BOOL GetData(CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium,
+ LPFORMATETC lpFormatEtc = NULL);
+ BOOL IsDataAvailable(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+// Implementation
+public:
+ LPDATAOBJECT m_lpDataObject;
+ LPENUMFORMATETC m_lpEnumerator;
+ ~COleDataObject();
+
+ // advanced use and implementation
+ LPDATAOBJECT GetIDataObject(BOOL bAddRef);
+ void EnsureClipboardObject();
+ BOOL m_bClipboard; // TRUE if represents the Win32 clipboard
+
+protected:
+ BOOL m_bAutoRelease; // TRUE if destructor should call Release
+
+private:
+ // Disable the copy constructor and assignment by default so you will get
+ // compiler errors instead of unexpected behaviour if you pass objects
+ // by value or assign objects.
+ COleDataObject(const COleDataObject&); // no implementation
+ void operator=(const COleDataObject&); // no implementation
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDataSource -- wrapper for implementing IDataObject
+// (works similar to how data is provided on the clipboard)
+
+struct AFX_DATACACHE_ENTRY;
+class COleDropSource;
+
+class COleDataSource : public CCmdTarget
+{
+// Constructors
+public:
+ COleDataSource();
+
+// Operations
+ void Empty(); // empty cache (similar to ::EmptyClipboard)
+
+ // CacheData & DelayRenderData operations similar to ::SetClipboardData
+ void CacheGlobalData(CLIPFORMAT cfFormat, HGLOBAL hGlobal,
+ LPFORMATETC lpFormatEtc = NULL); // for HGLOBAL based data
+ void DelayRenderFileData(CLIPFORMAT cfFormat,
+ LPFORMATETC lpFormatEtc = NULL); // for CFile* based delayed render
+
+ // Clipboard and Drag/Drop access
+ DROPEFFECT DoDragDrop(
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE|DROPEFFECT_LINK,
+ LPCRECT lpRectStartDrag = NULL,
+ COleDropSource* pDropSource = NULL);
+ void SetClipboard();
+ static void PASCAL FlushClipboard();
+ static COleDataSource* PASCAL GetClipboardOwner();
+
+ // Advanced: STGMEDIUM based cached data
+ void CacheData(CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium,
+ LPFORMATETC lpFormatEtc = NULL); // for LPSTGMEDIUM based data
+ // Advanced: STGMEDIUM or HGLOBAL based delayed render
+ void DelayRenderData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+ // Advanced: support for SetData in COleServerItem
+ // (not generally useful for clipboard or drag/drop operations)
+ void DelaySetData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+// Overidables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // OnRenderFileData and OnRenderGlobalData are called by
+ // the default implementation of OnRenderData.
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ // used only in COleServerItem implementation
+
+// Implementation
+public:
+ virtual ~COleDataSource();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ AFX_DATACACHE_ENTRY* m_pDataCache; // data cache itself
+ UINT m_nMaxSize; // current allocated size
+ UINT m_nSize; // current size of the cache
+ UINT m_nGrowBy; // number of cache elements to grow by for new allocs
+
+ AFX_DATACACHE_ENTRY* Lookup(
+ LPFORMATETC lpFormatEtc, DATADIR nDataDir) const;
+ AFX_DATACACHE_ENTRY* GetCacheEntry(
+ LPFORMATETC lpFormatEtc, DATADIR nDataDir);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleDataSource, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleServerItem;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// DocItem support
+
+class CDocItem : public CCmdTarget
+{
+ DECLARE_SERIAL(CDocItem)
+
+// Constructors
+protected: // abstract class
+ CDocItem();
+
+// Attributes
+public:
+ CDocument* GetDocument() const; // return container document
+
+// Overridables
+public:
+ // Raw data access (native format)
+ virtual BOOL IsBlank() const;
+
+// Implementation
+protected:
+ COleDocument* m_pDocument;
+
+public:
+ virtual void Serialize(CArchive& ar); // for Native data
+ virtual ~CDocItem();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ friend class COleDocument; // for access to back pointer
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleDocument - common OLE container behavior (enables server functionality)
+
+class COleDocument : public CDocument
+{
+ DECLARE_DYNAMIC(COleDocument)
+
+// Constructors
+public:
+ COleDocument();
+
+// Attributes
+ BOOL HasBlankItems() const; // check for BLANK items
+ virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);
+ // return in-place active item for this view or NULL if none
+
+// Operations
+ // iterating over existing items
+ virtual POSITION GetStartPosition() const;
+ virtual CDocItem* GetNextItem(POSITION& pos) const;
+
+ // iterator helpers (helpers use virtual GetNextItem above)
+ COleClientItem* GetNextClientItem(POSITION& pos) const;
+ COleServerItem* GetNextServerItem(POSITION& pos) const;
+
+ // adding new items - called from item constructors
+ virtual void AddItem(CDocItem* pItem);
+ virtual void RemoveItem(CDocItem* pItem);
+
+ void EnableCompoundFile(BOOL bEnable = TRUE);
+ // enable compound file support (only call during constructor)
+ virtual void UpdateModifiedFlag();
+ // scan for modified items -- mark document modified
+
+ // printer-device caching/control
+ BOOL ApplyPrintDevice(const DVTARGETDEVICE* ptd);
+ BOOL ApplyPrintDevice(const PRINTDLG* ppd);
+ // these apply the target device to all COleClientItem objects
+
+// Overridables
+ virtual COleClientItem* GetPrimarySelectedItem(CView* pView);
+ // return primary selected item or NULL if none
+ virtual void OnShowViews(BOOL bVisible);
+ // called during app-idle when visibility of a document has changed
+
+// Implementation
+public:
+ CObList m_docItemList; // not owned items
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ CFrameWnd* GetFirstFrame();
+
+ // document handling overrides
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE);
+ virtual ~COleDocument();
+ virtual void DeleteContents(); // delete client items in list
+ virtual void Serialize(CArchive& ar); // serialize items to file
+ virtual void PreCloseFrame(CFrameWnd* pFrame);
+ virtual BOOL SaveModified();
+ virtual void OnIdle();
+
+ // compound file implementation
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ void CommitItems(BOOL bSuccess); // called during File.Save & File.Save As
+
+ // minimal linking protocol
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+ virtual LPOLEITEMCONTAINER GetContainer();
+
+protected:
+ // document state implementation
+ UINT m_dwNextItemNumber;// serial number for next item in this document
+ BOOL m_bLastVisible; // TRUE if one or more views was last visible
+
+ // 'docfile' support
+ BOOL m_bCompoundFile; // TRUE if use compound files
+ LPSTORAGE m_lpRootStg; // root storage for the document
+ BOOL m_bSameAsLoad; // TRUE = file-save, FALSE = Save [Copy] As
+ BOOL m_bRemember; // if FALSE, indicates Save Copy As
+
+ DVTARGETDEVICE* m_ptd; // current document target device
+
+ // implementation helpers
+ virtual void LoadFromStorage();
+ virtual void SaveToStorage(CObject* pObject = NULL);
+ CDocItem* GetNextItemOfKind(POSITION& pos, CRuntimeClass* pClass) const;
+
+ // command handling
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+
+ afx_msg void OnUpdatePasteMenu(CCmdUI* pCmdUI);
+ afx_msg void OnUpdatePasteLinkMenu(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditLinksMenu(CCmdUI* pCmdUI);
+ afx_msg void OnEditLinks();
+ afx_msg void OnEditConvert();
+ afx_msg void OnUpdateEditChangeIcon(CCmdUI* pCmdUI);
+ afx_msg void OnEditChangeIcon();
+ afx_msg void OnUpdateObjectVerbMenu(CCmdUI* pCmdUI);
+ afx_msg void OnFileSendMail();
+
+ friend class COleClientItem;
+ friend class COleServerItem;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleClientItem - Supports OLE2 non-inplace editing.
+// implements IOleClientSite, IAdviseSink, and IOleInPlaceSite
+
+class COleFrameHook; // forward reference (see ..\src\oleimpl.h)
+
+class COleClientItem : public CDocItem
+{
+ DECLARE_DYNAMIC(COleClientItem)
+
+// Constructors
+public:
+ COleClientItem(COleDocument* pContainerDoc = NULL);
+
+ // create from the clipboard
+ BOOL CreateFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateStaticFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from a class ID (Insert New Object dialog)
+ BOOL CreateNewItem(REFCLSID clsid, OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from COleDataObject
+ BOOL CreateFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateStaticFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from file (package support)
+ BOOL CreateFromFile(LPCTSTR lpszFileName, REFCLSID clsid = CLSID_NULL,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromFile(LPCTSTR lpszFileName,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create a copy
+ BOOL CreateCloneFrom(const COleClientItem* pSrcItem);
+
+// General Attributes
+public:
+ SCODE GetLastStatus() const;
+ OLE_OBJTYPE GetType() const; // OT_LINK, OT_EMBEDDED, OT_STATIC
+ void GetClassID(CLSID* pClassID) const;
+ void GetUserType(USERCLASSTYPE nUserClassType, CString& rString);
+ BOOL GetExtent(LPSIZE lpSize, DVASPECT nDrawAspect = (DVASPECT)-1);
+ // will return FALSE if item is BLANK
+ BOOL GetCachedExtent(LPSIZE lpSize, DVASPECT nDrawAspect = (DVASPECT)-1);
+
+ // getting/setting iconic cache
+ HGLOBAL GetIconicMetafile();
+ BOOL SetIconicMetafile(HGLOBAL hMetaPict);
+
+ // setting/getting default display aspect
+ DVASPECT GetDrawAspect() const;
+ virtual void SetDrawAspect(DVASPECT nDrawAspect);
+
+ // for printer presentation cache
+ BOOL SetPrintDevice(const DVTARGETDEVICE* ptd);
+ BOOL SetPrintDevice(const PRINTDLG* ppd);
+
+ // Item state
+ enum ItemState
+ { emptyState, loadedState, openState, activeState, activeUIState };
+ UINT GetItemState() const;
+
+ BOOL IsModified() const;
+ BOOL IsRunning() const;
+ BOOL IsInPlaceActive() const;
+ BOOL IsOpen() const;
+ CView* GetActiveView() const;
+
+ // Data access
+ void AttachDataObject(COleDataObject& rDataObject) const;
+
+ // other rare access information
+ COleDocument* GetDocument() const; // return container
+
+ // helpers for checking clipboard data availability
+ static BOOL PASCAL CanPaste();
+ static BOOL PASCAL CanPasteLink();
+
+ // helpers for checking COleDataObject, useful in drag drop
+ static BOOL PASCAL CanCreateFromData(const COleDataObject* pDataObject);
+ static BOOL PASCAL CanCreateLinkFromData(const COleDataObject* pDataObject);
+
+// General Operations
+ virtual void Release(OLECLOSE dwCloseOption = OLECLOSE_NOSAVE);
+ // cleanup, detach (close if needed)
+ void Close(OLECLOSE dwCloseOption = OLECLOSE_SAVEIFDIRTY);
+ // close without releasing the item
+ void Delete(BOOL bAutoDelete = TRUE);
+ // logically delete from file -- not part of the document anymore
+ void Run(); // insure item is in running state
+
+ // Drawing
+ BOOL Draw(CDC* pDC, LPCRECT lpBounds,
+ DVASPECT nDrawAspect = (DVASPECT)-1); // defaults to m_nDrawAspect
+
+ // Activation
+ virtual BOOL DoVerb(LONG nVerb, CView* pView, LPMSG lpMsg = NULL);
+ void Activate(LONG nVerb, CView* pView, LPMSG lpMsg = NULL);
+
+ // In-place Activation
+ void Deactivate(); // completely deactivate
+ void DeactivateUI(); // deactivate the user interface
+ BOOL ReactivateAndUndo(); // reactivate then perform undo command
+ BOOL SetItemRects(LPCRECT lpPosRect = NULL, LPCRECT lpClipRect = NULL);
+ CWnd* GetInPlaceWindow();
+
+ // Clipboard operations
+ void CopyToClipboard(BOOL bIncludeLink = FALSE);
+ DROPEFFECT DoDragDrop(LPCRECT lpItemRect, CPoint ptOffset,
+ BOOL bIncludeLink = FALSE,
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE,
+ LPCRECT lpRectStartDrag = NULL);
+ void GetClipboardData(COleDataSource* pDataSource,
+ BOOL bIncludeLink = FALSE, LPPOINT lpOffset = NULL,
+ LPSIZE lpSize = NULL);
+
+ // called for creating a COleDataSource by CopyToClipboard and DoDragDrop
+ virtual COleDataSource* OnGetClipboardData(BOOL bIncludeLink,
+ LPPOINT lpOffset, LPSIZE lpSize);
+
+ // Operations that apply to embedded items only
+ void SetHostNames(LPCTSTR lpszHost, LPCTSTR lpszHostObj);
+ void SetExtent(const CSize& size, DVASPECT nDrawAspect = DVASPECT_CONTENT);
+
+ // Operations that apply to linked items only
+ // (link options are rarely changed, except through Links dialog)
+ OLEUPDATE GetLinkUpdateOptions();
+ void SetLinkUpdateOptions(OLEUPDATE dwUpdateOpt);
+
+ // Link-source update status (also useful for embeddings that contain links)
+ BOOL UpdateLink(); // make up-to-date
+ BOOL IsLinkUpToDate() const; // is link up-to-date
+
+ // object conversion
+ virtual BOOL ConvertTo(REFCLSID clsidNew);
+ virtual BOOL ActivateAs(LPCTSTR lpszUserType, REFCLSID clsidOld, REFCLSID clsidNew);
+ BOOL Reload(); // for lazy reload after ActivateAs
+
+// Overridables (notifications of IAdviseSink, IOleClientSite and IOleInPlaceSite)
+ // Callbacks/notifications from the server you must/should implement
+ virtual void OnChange(OLE_NOTIFICATION nCode, DWORD dwParam);
+ // implement OnChange to invalidate when item changes
+
+protected:
+ virtual void OnGetItemPosition(CRect& rPosition);
+ // implement OnGetItemPosition if you support in-place activation
+
+ // Common overrides for in-place activation
+ virtual BOOL OnScrollBy(CSize sizeExtent);
+
+ // Common overrides for applications supporting undo
+ virtual void OnDiscardUndoState();
+ virtual void OnDeactivateAndUndo();
+
+public:
+ virtual void OnDeactivateUI(BOOL bUndoable);
+
+protected:
+ // Common overrides for applications supporting links to embeddings
+ virtual void OnShowItem();
+
+ // Advanced overrides for in-place activation
+ virtual void OnGetClipRect(CRect& rClipRect);
+ virtual BOOL CanActivate();
+
+public:
+ virtual void OnActivate();
+ virtual void OnActivateUI();
+ virtual void OnDeactivate();
+
+protected:
+ virtual BOOL OnGetWindowContext(CFrameWnd** ppMainFrame,
+ CFrameWnd** ppDocFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+ virtual BOOL OnChangeItemPosition(const CRect& rectPos);
+ // default calls SetItemRects and caches the pos rect
+
+public:
+ // Advanced overrides for menu/title handling (rarely overridden)
+ virtual void OnInsertMenus(CMenu* pMenuShared,
+ LPOLEMENUGROUPWIDTHS lpMenuWidths);
+ virtual void OnSetMenu(CMenu* pMenuShared, HOLEMENU holemenu,
+ HWND hwndActiveObject);
+ virtual void OnRemoveMenus(CMenu* pMenuShared);
+ virtual BOOL OnUpdateFrameTitle();
+
+ // Advanced override for control bar handling
+ virtual BOOL OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow);
+
+// Implementation
+public:
+ // data to support non-inplace activated items
+ LPOLEOBJECT m_lpObject; // in case you want direct access to the OLE object
+ LPVIEWOBJECT2 m_lpViewObject;// IViewObject for IOleObject above
+ DWORD m_dwItemNumber; // serial number for this item in this document
+ DVASPECT m_nDrawAspect; // current default display aspect
+ SCODE m_scLast; // last error code encountered
+ LPSTORAGE m_lpStorage; // provides storage for m_lpObject
+ LPLOCKBYTES m_lpLockBytes; // part of implementation of m_lpStorage
+ DWORD m_dwConnection; // advise connection to the m_lpObject
+ BYTE m_bLinkUnavail; // TRUE if link is currently unavailable
+ BYTE m_bMoniker; // TRUE if moniker is assigned
+ BYTE m_bLocked; // TRUE if object has external lock
+ BYTE m_bNeedCommit; // TRUE if need CommitItem
+ BYTE m_bClosing; // TRUE if currently doing COleClientItem::Close
+ BYTE m_bReserved[3]; // (reserved for future use)
+
+ // for compound file support
+ LPSTORAGE m_lpNewStorage; // used during Save As situations
+
+ // item state & item type
+ ItemState m_nItemState; // item state (see ItemState enumeration)
+ OLE_OBJTYPE m_nItemType; // item type (depends on how created)
+
+ // data valid when in-place activated
+ CView* m_pView; // view when object is in-place activated
+ DWORD m_dwContainerStyle; // style of the container wnd before activation
+ COleFrameHook* m_pInPlaceFrame;// frame window when in-place active
+ COleFrameHook* m_pInPlaceDoc; // doc window when in-place (may be NULL)
+ HWND m_hWndServer; // HWND of in-place server window
+
+public:
+ virtual ~COleClientItem();
+ virtual void Serialize(CArchive& ar);
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+// Implementation
+public:
+ virtual BOOL ReportError(SCODE sc) const;
+ virtual BOOL FreezeLink(); // converts to static: for edit links dialog
+
+ DWORD GetNewItemNumber(); // generates new item number
+ void GetItemName(LPTSTR lpszItemName) const; // gets readable item name
+
+ void UpdateItemType(); // update m_nItemType
+
+protected:
+ // clipboard helpers
+ void GetEmbeddedItemData(LPSTGMEDIUM lpStgMedium);
+ void AddCachedData(COleDataSource* pDataSource);
+ BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);
+ void GetObjectDescriptorData(LPPOINT lpOffset, LPSIZE lpSize,
+ LPSTGMEDIUM lpStgMedium);
+
+ // interface helpers
+ virtual LPOLECLIENTSITE GetClientSite();
+
+ // helpers for printer-cached representation
+ BOOL GetPrintDeviceInfo(LPOLECACHE* plpOleCache,
+ DVTARGETDEVICE** pptd, DWORD* pdwConnection);
+
+// Advanced Overridables for implementation
+protected:
+ virtual BOOL FinishCreate(SCODE sc);
+ virtual void CheckGeneral(SCODE sc);
+
+ virtual void OnDataChange(LPFORMATETC lpFormatEtc,
+ LPSTGMEDIUM lpStgMedium);
+
+public:
+ // for storage hookability (override to use 'docfiles')
+ virtual void GetItemStorage(); // allocate storage for new item
+ virtual void ReadItem(CArchive& ar); // read item from archive
+ virtual void WriteItem(CArchive& ar); // write item to archive
+ virtual void CommitItem(BOOL bSuccess); // commit item's storage
+
+ // compound & flat file implementations of above
+ void GetItemStorageFlat();
+ void ReadItemFlat(CArchive& ar);
+ void WriteItemFlat(CArchive& ar);
+ void GetItemStorageCompound();
+ void ReadItemCompound(CArchive& ar);
+ void WriteItemCompound(CArchive& ar);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(OleClientSite, IOleClientSite)
+ INIT_INTERFACE_PART(COleClientItem, OleClientSite)
+ STDMETHOD(SaveObject)();
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(GetContainer)(LPOLECONTAINER*);
+ STDMETHOD(ShowObject)();
+ STDMETHOD(OnShowWindow)(BOOL);
+ STDMETHOD(RequestNewObjectLayout)();
+ END_INTERFACE_PART(OleClientSite)
+
+ BEGIN_INTERFACE_PART(AdviseSink, IAdviseSink)
+ INIT_INTERFACE_PART(COleClientItem, AdviseSink)
+ STDMETHOD_(void,OnDataChange)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD_(void,OnViewChange)(DWORD, LONG);
+ STDMETHOD_(void,OnRename)(LPMONIKER);
+ STDMETHOD_(void,OnSave)();
+ STDMETHOD_(void,OnClose)();
+ END_INTERFACE_PART(AdviseSink)
+
+ BEGIN_INTERFACE_PART(OleIPSite, IOleInPlaceSite)
+ INIT_INTERFACE_PART(COleClientItem, OleIPSite)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(CanInPlaceActivate)();
+ STDMETHOD(OnInPlaceActivate)();
+ STDMETHOD(OnUIActivate)();
+ STDMETHOD(GetWindowContext)(LPOLEINPLACEFRAME*,
+ LPOLEINPLACEUIWINDOW*, LPRECT, LPRECT, LPOLEINPLACEFRAMEINFO);
+ STDMETHOD(Scroll)(SIZE);
+ STDMETHOD(OnUIDeactivate)(BOOL);
+ STDMETHOD(OnInPlaceDeactivate)();
+ STDMETHOD(DiscardUndoState)();
+ STDMETHOD(DeactivateAndUndo)();
+ STDMETHOD(OnPosRectChange)(LPCRECT);
+ END_INTERFACE_PART(OleIPSite)
+
+ DECLARE_INTERFACE_MAP()
+
+// Friendship declarations (to avoid many public members)
+ friend class COleUIWindow;
+ friend class COleFrameWindow;
+ friend class COleLinkingDoc;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleServerItem - IOleObject & IDataObject OLE component
+
+class COleServerItem : public CDocItem
+{
+ DECLARE_DYNAMIC(COleServerItem)
+protected:
+ // NOTE: many members in this class are protected - since everything
+ // in this class is designed for implementing an OLE server.
+ // Requests will come from OLE containers through non-C++ mechanisms,
+ // which will result in virtual functions in this class being called.
+
+// Constructors
+ COleServerItem(COleServerDoc* pServerDoc, BOOL bAutoDelete);
+ // If your COleServerItem is an integral part of your data,
+ // bAutoDelete should be FALSE. If your COleServerItem can be
+ // deleted when a link is released, it can be TRUE.
+
+ COleDataSource* GetDataSource();
+ // Use this data source to add conversion formats that your
+ // server should support. Usually such formats are
+ // added in the item's constructor.
+
+// Public Attributes
+public:
+ COleServerDoc* GetDocument() const; // return server document
+
+ // naming (for links only)
+ const CString& GetItemName() const; // get name of linked item
+ void SetItemName(LPCTSTR lpszItemName); // set name of linked item
+
+ // link state
+ BOOL IsConnected() const; // returns TRUE if item has a client
+ BOOL IsLinkedItem() const; // returns TRUE if item is not embedded item
+
+ // extents
+ CSize m_sizeExtent;
+ // HIMETRIC size -- the default implementation of OnSetExtent
+ // updates this member variable. This member tells the server how
+ // much of the object is visible in the container document.
+
+// Operations
+public:
+ void NotifyChanged(DVASPECT nDrawAspect = DVASPECT_CONTENT);
+ // call this after you change item
+ void CopyToClipboard(BOOL bIncludeLink = FALSE);
+ // helper for implementing server 'copy to clipboard'
+ DROPEFFECT DoDragDrop(LPCRECT lpRectItem, CPoint ptOffset,
+ BOOL bIncludeLink = FALSE,
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE,
+ LPCRECT lpRectStartDrag = NULL);
+ void GetClipboardData(COleDataSource* pDataSource,
+ BOOL bIncludeLink = FALSE, LPPOINT lpOffset = NULL,
+ LPSIZE lpSize = NULL);
+
+// Overridables
+ // overridables you must implement for yourself
+ virtual BOOL OnDraw(CDC* pDC, CSize& rSize) = 0;
+ // drawing for metafile format (return FALSE if not supported or error)
+ // (called for DVASPECT_CONTENT only)
+
+ // overridables you may want to implement yourself
+ virtual void OnUpdate(COleServerItem* pSender,
+ LPARAM lHint, CObject* pHint, DVASPECT nDrawAspect);
+ // the default implementation always calls NotifyChanged
+
+ virtual BOOL OnDrawEx(CDC* pDC, DVASPECT nDrawAspect, CSize& rSize);
+ // advanced drawing -- called for DVASPECT other than DVASPECT_CONTENT
+ virtual BOOL OnSetExtent(DVASPECT nDrawAspect, const CSize& size);
+ virtual BOOL OnGetExtent(DVASPECT nDrawAspect, CSize& rSize);
+ // default implementation uses m_sizeExtent
+
+ // overridables you do not have to implement
+ virtual void OnDoVerb(LONG iVerb);
+ // default routes to OnShow &/or OnOpen
+ virtual BOOL OnSetColorScheme(const LOGPALETTE* lpLogPalette);
+ // default does nothing
+ virtual COleDataSource* OnGetClipboardData(BOOL bIncludeLink,
+ LPPOINT lpOffset, LPSIZE lpSize);
+ // called for access to clipboard data
+ virtual BOOL OnQueryUpdateItems();
+ // called to determine if there are any contained out-of-date links
+ virtual void OnUpdateItems();
+ // called to update any out-of-date links
+
+protected:
+ virtual void OnShow();
+ // show item in the user interface (may edit in-place)
+ virtual void OnOpen();
+ // show item in the user interface (must open fully)
+ virtual void OnHide();
+ // hide document (and sometimes application)
+
+ // very advanced overridables
+public:
+ virtual BOOL OnInitFromData(COleDataObject* pDataObject, BOOL bCreation);
+ // initialize object from IDataObject
+
+ // see COleDataSource for a description of these overridables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // HGLOBAL version will be called first, then CFile* version
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ // Rare -- only if you support SetData (programmatic paste)
+
+ // advanced helpers for CopyToClipboard
+ void GetEmbedSourceData(LPSTGMEDIUM lpStgMedium);
+ void AddOtherClipboardData(COleDataSource* pDataSource);
+ BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);
+ void GetObjectDescriptorData(LPPOINT lpOffset, LPSIZE lpSize,
+ LPSTGMEDIUM lpStgMedium);
+
+// Implementation
+public:
+ BOOL m_bNeedUnlock; // if TRUE need to pDoc->LockExternal(FALSE)
+ BOOL m_bAutoDelete; // if TRUE will OnRelease will 'delete this'
+
+ // special version of OnFinalRelease to implement document locking
+ virtual void OnFinalRelease();
+
+protected:
+ CString m_strItemName; // simple item name
+
+public:
+ LPOLEADVISEHOLDER m_lpOleAdviseHolder; // may be NULL
+ LPDATAADVISEHOLDER m_lpDataAdviseHolder; // may be NULL
+
+ virtual ~COleServerItem();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // implementation helpers
+ void NotifyClient(OLE_NOTIFICATION wNotification, DWORD dwParam);
+ LPDATAOBJECT GetDataObject();
+ LPOLEOBJECT GetOleObject();
+ LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+
+protected:
+ virtual BOOL GetMetafileData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM pmedium);
+ // calls OnDraw or OnDrawEx
+ virtual void OnSaveEmbedding(LPSTORAGE lpStorage);
+ virtual BOOL IsBlank() const;
+
+ // CItemDataSource implements OnRender reflections to COleServerItem
+ class CItemDataSource : public COleDataSource
+ {
+ protected:
+ // the GetData and SetData interfaces forward to m_pItem
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // HGLOBAL version will be called first, then CFile* version
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ };
+ CItemDataSource m_dataSource;
+ // data source used to implement IDataObject
+
+// Interface Maps
+// (Note: these interface maps are used just for link implementation)
+public:
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleServerItem, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(LPENUMOLEVERB*);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(LPCLSID);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleServerItem, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class CItemDataSource;
+ friend class COleServerDoc;
+ friend class COleLinkingDoc;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleLinkingDoc -
+// (enables linking to embeddings - beginnings of server fuctionality)
+
+class COleLinkingDoc : public COleDocument
+{
+ DECLARE_DYNAMIC(COleLinkingDoc)
+
+// Constructors
+public:
+ COleLinkingDoc();
+
+// Operations
+ BOOL Register(COleObjectFactory* pFactory, LPCTSTR lpszPathName);
+ // notify the running object table and connect to pServer
+ void Revoke();
+ // revoke from running object table
+
+// Overridables
+protected:
+ virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
+ // return item for the named linked item (for supporting links)
+ virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);
+ // return item for the named embedded item (for links to embeddings)
+
+// Implementation
+public:
+ COleObjectFactory* m_pFactory; // back-pointer to server
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleLinkingDoc();
+
+ // overrides for updating of monikers & running object table registration
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ virtual LPOLEITEMCONTAINER GetContainer();
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+
+ // special handling of error messages during save/load
+ virtual void ReportSaveLoadException(LPCTSTR lpszPathName,
+ CException* e, BOOL bSaving, UINT nIDPDefault);
+ void BeginDeferErrors();
+ SCODE EndDeferErrors(SCODE sc);
+
+protected:
+ BOOL m_bDeferErrors; // TRUE if in non-interactive OLE mode
+ CException* m_pLastException;
+
+ DWORD m_dwRegister; // file moniker's registration in the ROT
+ LPMONIKER m_lpMonikerROT; // file moniker that is registered
+ CString m_strMoniker; // filename used to create moniker
+ BOOL m_bVisibleLock; // TRUE if user is holding lock on document
+
+ // implementation helpers
+ virtual BOOL RegisterIfServerAttached(LPCTSTR lpszPathName, BOOL bMessage);
+ void LockExternal(BOOL bLock, BOOL bRemoveRefs);
+ void UpdateVisibleLock(BOOL bVisible, BOOL bRemoveRefs);
+ virtual void OnShowViews(BOOL bVisible);
+
+ virtual void SaveToStorage(CObject* pObject = NULL);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PersistFile, IPersistFile)
+ INIT_INTERFACE_PART(COleLinkingDoc, PersistFile)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(Load)(LPCOLESTR, DWORD);
+ STDMETHOD(Save)(LPCOLESTR, BOOL);
+ STDMETHOD(SaveCompleted)(LPCOLESTR);
+ STDMETHOD(GetCurFile)(LPOLESTR*);
+ END_INTERFACE_PART(PersistFile)
+
+ BEGIN_INTERFACE_PART(OleItemContainer, IOleItemContainer)
+ INIT_INTERFACE_PART(COleLinkingDoc, OleItemContainer)
+ STDMETHOD(ParseDisplayName)(LPBC, LPOLESTR, ULONG*, LPMONIKER*);
+ STDMETHOD(EnumObjects)(DWORD, LPENUMUNKNOWN*);
+ STDMETHOD(LockContainer)(BOOL);
+ STDMETHOD(GetObject)(LPOLESTR, DWORD, LPBINDCTX, REFIID, LPVOID*);
+ STDMETHOD(GetObjectStorage)(LPOLESTR, LPBINDCTX, REFIID, LPVOID*);
+ STDMETHOD(IsRunning)(LPOLESTR);
+ END_INTERFACE_PART(OleItemContainer)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleClientItem;
+ friend class COleClientItem::XOleClientSite;
+ friend class COleServerItem::XOleObject;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleServerDoc - registered server document containing COleServerItems
+
+class COleServerDoc : public COleLinkingDoc
+{
+ DECLARE_DYNAMIC(COleServerDoc)
+
+// Constructors and Destructors
+public:
+ COleServerDoc();
+
+// Attributes
+ BOOL IsEmbedded() const; // TRUE if document is an embedding
+ COleServerItem* GetEmbeddedItem();
+ // return embedded item for document (will allocate if necessary)
+
+ // attributes specific to in-place activation
+ BOOL IsInPlaceActive() const;
+ void GetItemPosition(LPRECT lpPosRect) const;
+ // get current position rectangle of in-place edit
+ void GetItemClipRect(LPRECT lpClipRect) const;
+ // get current clipping rectangle of in-place edit
+ BOOL GetZoomFactor(LPSIZE lpSizeNum = NULL, LPSIZE lpSizeDenom = NULL,
+ LPCRECT lpPosRect = NULL) const;
+ // returns the zoom factor in pixels
+
+// Operations
+ void NotifyChanged();
+ // call this after you change some global attribute like
+ // document dimensions
+ void UpdateAllItems(COleServerItem* pSender,
+ LPARAM lHint = 0L, CObject* pHint = NULL,
+ DVASPECT nDrawAspect = DVASPECT_CONTENT);
+
+ // changes to the entire document (automatically notifies clients)
+ void NotifyRename(LPCTSTR lpszNewName);
+ void NotifySaved();
+ void NotifyClosed(); // call this after you close document
+
+ // specific operations for embedded documents
+ void SaveEmbedding(); // call this to save embedded (before closing)
+
+ // specific to in-place activation
+ BOOL ActivateInPlace();
+ void RequestPositionChange(LPCRECT lpPosRect);
+ BOOL ScrollContainerBy(CSize sizeScroll);
+ BOOL DeactivateAndUndo();
+ BOOL DiscardUndoState();
+
+public:
+// Overridables for standard user interface (full server)
+ virtual BOOL OnUpdateDocument(); // implementation of embedded update
+
+protected:
+// Overridables you must implement for yourself
+ virtual COleServerItem* OnGetEmbeddedItem() = 0;
+ // return item representing entire (embedded) document
+
+// Overridables you do not have to implement
+ virtual void OnClose(OLECLOSE dwCloseOption);
+ virtual void OnSetHostNames(LPCTSTR lpszHost, LPCTSTR lpszHostObj);
+
+// Advanced overridables
+ virtual void OnShowDocument(BOOL bShow);
+ // show first frame for document or hide all frames for document
+
+// Advanced overridables for in-place activation
+public:
+ virtual void OnDeactivate();
+ virtual void OnDeactivateUI(BOOL bUndoable);
+
+protected:
+ virtual void OnSetItemRects(LPCRECT lpPosRect, LPCRECT lpClipRect);
+ virtual BOOL OnReactivateAndUndo();
+
+ virtual void OnFrameWindowActivate(BOOL bActivate);
+ virtual void OnDocWindowActivate(BOOL bActivate);
+ virtual void OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow);
+ virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);
+ virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);
+public:
+ virtual void OnResizeBorder(LPCRECT lpRectBorder,
+ LPOLEINPLACEUIWINDOW lpUIWindow, BOOL bFrame);
+
+// Implementation
+protected:
+ LPOLECLIENTSITE m_lpClientSite; // for embedded item
+ CString m_strHostObj; // name of document in container
+ BOOL m_bCntrVisible; // TRUE if OnShowWindow(TRUE) called
+ BOOL m_bClosing; // TRUE if shutting down
+ COleServerItem* m_pEmbeddedItem; // pointer to embedded item for document
+
+ COleIPFrameWnd* m_pInPlaceFrame; // not NULL if in-place activated
+ CWnd* m_pOrigParent; // not NULL if existing view used
+ DWORD m_dwOrigStyle; // original style of in-place view
+ DWORD m_dwOrigStyleEx; // original extended style
+
+public:
+ virtual ~COleServerDoc();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // overridables for implementation
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ virtual void DeleteContents(); // delete auto-delete server items
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+ virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
+ // return item for the named linked item (only if supporting links)
+ virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
+
+protected:
+ // overrides to handle server user-interface
+ virtual BOOL SaveModified(); // return TRUE if ok to continue
+ virtual HMENU GetDefaultMenu(); // return menu based on doc type
+ virtual HACCEL GetDefaultAccelerator(); // return accel table based on doc type
+ virtual BOOL GetFileTypeString(CString& rString);
+
+ // IPersistStorage implementation
+ virtual void OnNewEmbedding(LPSTORAGE lpStorage);
+ virtual void OnOpenEmbedding(LPSTORAGE lpStorage);
+ virtual void OnSaveEmbedding(LPSTORAGE lpStorage);
+
+ // Implementation helpers
+ void NotifyAllItems(OLE_NOTIFICATION wNotification, DWORD dwParam);
+ BOOL SaveModifiedPrompt();
+ void ConnectView(CWnd* pParentWnd, CView* pView);
+ void UpdateUsingHostObj(UINT nIDS, CCmdUI* pCmdUI);
+
+// Message Maps
+ //{{AFX_MSG(COleServerDoc)
+ afx_msg void OnFileUpdate();
+ afx_msg void OnFileSaveCopyAs();
+ afx_msg void OnUpdateFileUpdate(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateFileExit(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PersistStorage, IPersistStorage)
+ INIT_INTERFACE_PART(COleServerDoc, PersistStorage)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(InitNew)(LPSTORAGE);
+ STDMETHOD(Load)(LPSTORAGE);
+ STDMETHOD(Save)(LPSTORAGE, BOOL);
+ STDMETHOD(SaveCompleted)(LPSTORAGE);
+ STDMETHOD(HandsOffStorage)();
+ END_INTERFACE_PART(PersistStorage)
+
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(CLSID*);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleServerDoc, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ BEGIN_INTERFACE_PART(OleInPlaceObject, IOleInPlaceObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleInPlaceObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(InPlaceDeactivate)();
+ STDMETHOD(UIDeactivate)();
+ STDMETHOD(SetObjectRects)(LPCRECT, LPCRECT);
+ STDMETHOD(ReactivateAndUndo)();
+ END_INTERFACE_PART(OleInPlaceObject)
+
+ BEGIN_INTERFACE_PART(OleInPlaceActiveObject, IOleInPlaceActiveObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleInPlaceActiveObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(TranslateAccelerator)(LPMSG);
+ STDMETHOD(OnFrameWindowActivate)(BOOL);
+ STDMETHOD(OnDocWindowActivate)(BOOL);
+ STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL);
+ STDMETHOD(EnableModeless)(BOOL);
+ END_INTERFACE_PART(OleInPlaceActiveObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleServer;
+ friend class COleServerItem;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleIPFrameWnd
+
+class COleCntrFrameWnd;
+
+class COleIPFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(COleIPFrameWnd)
+
+// Constructors
+public:
+ COleIPFrameWnd();
+
+// Overridables
+public:
+ virtual BOOL OnCreateControlBars(CWnd* pWndFrame, CWnd* pWndDoc);
+ // create control bars on container windows (pWndDoc can be NULL)
+ virtual BOOL OnCreateControlBars(CFrameWnd* pWndFrame, CFrameWnd* pWndDoc);
+ // create control bars on container windows (pWndDoc can be NULL)
+
+ virtual void RepositionFrame(LPCRECT lpPosRect, LPCRECT lpClipRect);
+ // Advanced: reposition frame to wrap around new lpPosRect
+
+// Implementation
+public:
+ BOOL m_bUIActive; // TRUE if currently in uiacitve state
+
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_CHILD|WS_BORDER|WS_CLIPSIBLINGS,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ virtual ~COleIPFrameWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ // in-place state
+ OLEINPLACEFRAMEINFO m_frameInfo;
+ LPOLEINPLACEFRAME m_lpFrame;
+ LPOLEINPLACEUIWINDOW m_lpDocFrame;
+ COleCntrFrameWnd* m_pMainFrame;
+ COleCntrFrameWnd* m_pDocFrame;
+
+ HMENU m_hSharedMenu;
+ OLEMENUGROUPWIDTHS m_menuWidths;
+ HOLEMENU m_hOleMenu;
+ CRect m_rectPos; // client area rect of the item
+ CRect m_rectClip; // area to which frame should be clipped
+ BOOL m_bInsideRecalc;
+
+ // Advanced: in-place activation virtual implementation
+ virtual BOOL BuildSharedMenu();
+ virtual void DestroySharedMenu();
+ virtual HMENU GetInPlaceMenu();
+
+ // Advanced: possible override to change in-place sizing behavior
+ virtual void OnRequestPositionChange(LPCRECT lpRect);
+
+protected:
+ //{{AFX_MSG(COleIPFrameWnd)
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg LRESULT OnRecalcParent(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg LRESULT OnResizeChild(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnContextHelp();
+ afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnBarCheck(UINT nID);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class COleServerDoc;
+ friend class COleCntrFrameWnd;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleResizeBar - supports in-place resizing in server applications
+
+class COleResizeBar : public CControlBar
+{
+ DECLARE_DYNAMIC(COleResizeBar)
+
+// Constructors
+public:
+ COleResizeBar();
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE,
+ UINT nID = AFX_IDW_RESIZE_BAR);
+
+// Implementation
+public:
+ virtual ~COleResizeBar();
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+ CRectTracker m_tracker; // implemented with a tracker
+
+protected:
+ //{{AFX_MSG(COleResizeBar)
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnPaint();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnLButtonDown(UINT, CPoint point);
+ afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleStreamFile - implementation of CFile which uses an IStream
+
+class COleStreamFile : public CFile
+{
+ DECLARE_DYNAMIC(COleStreamFile)
+
+// Constructors and Destructors
+public:
+ COleStreamFile(LPSTREAM lpStream = NULL);
+
+// Operations
+ // Note: OpenStream and CreateStream can accept eith STGM_ flags or
+ // CFile::OpenFlags bits since common values are guaranteed to have
+ // the same semantics.
+ BOOL OpenStream(LPSTORAGE lpStorage, LPCTSTR lpszStreamName,
+ DWORD nOpenFlags = modeReadWrite|shareExclusive,
+ CFileException* pError = NULL);
+ BOOL CreateStream(LPSTORAGE lpStorage, LPCTSTR lpszStreamName,
+ DWORD nOpenFlags = modeReadWrite|shareExclusive|modeCreate,
+ CFileException* pError = NULL);
+
+ BOOL CreateMemoryStream(CFileException* pError = NULL);
+
+ // attach & detach can be used when Open/Create functions aren't adequate
+ void Attach(LPSTREAM lpStream);
+ LPSTREAM Detach();
+
+// Implementation
+public:
+ LPSTREAM m_lpStream;
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleStreamFile();
+
+ // attributes for implementation
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual DWORD GetPosition() const;
+
+ virtual const CString GetStorageName() const;
+
+ // overrides for implementation
+ virtual CFile* Duplicate() const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+protected:
+ CString m_strStorageName;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDropSource (advanced drop source support)
+
+class COleDropSource : public CCmdTarget
+{
+// Constructors
+public:
+ COleDropSource();
+
+// Overridables
+ virtual SCODE QueryContinueDrag(BOOL bEscapePressed, DWORD dwKeyState);
+ virtual SCODE GiveFeedback(DROPEFFECT dropEffect);
+ virtual BOOL OnBeginDrag(CWnd* pWnd);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+public:
+ BEGIN_INTERFACE_PART(DropSource, IDropSource)
+ INIT_INTERFACE_PART(COleDropSource, DropSource)
+ STDMETHOD(QueryContinueDrag)(BOOL, DWORD);
+ STDMETHOD(GiveFeedback)(DWORD);
+ END_INTERFACE_PART(DropSource)
+
+ DECLARE_INTERFACE_MAP()
+
+ CRect m_rectStartDrag; // when mouse leaves this rect, drag drop starts
+ BOOL m_bDragStarted; // has drag really started yet?
+ DWORD m_dwButtonCancel; // which button will cancel (going down)
+ DWORD m_dwButtonDrop; // which button will confirm (going up)
+
+ // metrics for drag start determination
+ static AFX_DATA UINT nDragMinDist; // min. amount mouse must move for drag
+ static AFX_DATA UINT nDragDelay; // delay before drag starts
+
+ friend class COleDataSource;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDropTarget (advanced drop target support)
+
+class COleDropTarget : public CCmdTarget
+{
+// Constructors
+public:
+ COleDropTarget();
+
+// Operations
+ BOOL Register(CWnd* pWnd);
+ virtual void Revoke(); // virtual for implementation
+
+// Overridables
+ virtual DROPEFFECT OnDragEnter(CWnd* pWnd, COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual DROPEFFECT OnDragOver(CWnd* pWnd, COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual BOOL OnDrop(CWnd* pWnd, COleDataObject* pDataObject,
+ DROPEFFECT dropEffect, CPoint point);
+ virtual DROPEFFECT OnDropEx(CWnd* pWnd, COleDataObject* pDataObject,
+ DROPEFFECT dropDefault, DROPEFFECT dropList, CPoint point);
+ virtual void OnDragLeave(CWnd* pWnd);
+ virtual DROPEFFECT OnDragScroll(CWnd* pWnd, DWORD dwKeyState,
+ CPoint point);
+
+// Implementation
+public:
+ virtual ~COleDropTarget();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ HWND m_hWnd; // HWND this IDropTarget is attached to
+ LPDATAOBJECT m_lpDataObject; // != NULL between OnDragEnter, OnDragLeave
+ UINT m_nTimerID; // != MAKEWORD(-1, -1) when in scroll area
+ DWORD m_dwLastTick; // only valid when m_nTimerID valid
+ UINT m_nScrollDelay; // time to next scroll
+
+ // metrics for drag-scrolling
+ static AFX_DATA int nScrollInset;
+ static AFX_DATA UINT nScrollDelay;
+ static AFX_DATA UINT nScrollInterval;
+
+ // implementation helpers
+ void SetupTimer(CView* pView, UINT nTimerID);
+ void CancelTimer(CWnd* pWnd);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(DropTarget, IDropTarget)
+ INIT_INTERFACE_PART(COleDropTarget, DropTarget)
+ STDMETHOD(DragEnter)(LPDATAOBJECT, DWORD, POINTL, LPDWORD);
+ STDMETHOD(DragOver)(DWORD, POINTL, LPDWORD);
+ STDMETHOD(DragLeave)();
+ STDMETHOD(Drop)(LPDATAOBJECT, DWORD, POINTL pt, LPDWORD);
+ END_INTERFACE_PART(DropTarget)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleMessageFilter (implements IMessageFilter)
+
+class COleMessageFilter : public CCmdTarget
+{
+// Constructors
+public:
+ COleMessageFilter();
+
+// Operations
+ BOOL Register();
+ void Revoke();
+
+ // for controlling the busy state of the server application (called app)
+ virtual void BeginBusyState();
+ virtual void EndBusyState();
+ void SetBusyReply(SERVERCALL nBusyReply);
+
+ // for controlling actions taken against rejected/retried calls
+ void SetRetryReply(DWORD nRetryReply = 0);
+ // only used when the "not responding" dialog is disabled
+ void SetMessagePendingDelay(DWORD nTimeout = 5000);
+ // used to determine amount of time before significant message
+ void EnableBusyDialog(BOOL bEnableBusy = TRUE);
+ void EnableNotRespondingDialog(BOOL bEnableNotResponding = TRUE);
+ // used to enable/disable the two types of busy dialogs
+
+// Overridables
+ virtual BOOL OnMessagePending(const MSG* pMsg);
+ // return TRUE to eat the message (usually only if processed)
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleMessageFilter();
+ virtual BOOL IsSignificantMessage(MSG* pMsg);
+ // determine if any significant messages are present in the queue
+ virtual int OnBusyDialog(HTASK htaskBusy);
+ virtual int OnNotRespondingDialog(HTASK htaskBusy);
+ // these functions display the busy dialog
+
+protected:
+ BOOL m_bRegistered;
+ LONG m_nBusyCount; // for BeginBusyState & EndBusyState
+ BOOL m_bEnableBusy;
+ BOOL m_bEnableNotResponding;
+ BOOL m_bUnblocking;
+ DWORD m_nRetryReply; // only used if m_bEnableNotResponding == FALSE
+ DWORD m_nBusyReply;
+ DWORD m_nTimeout;
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(MessageFilter, IMessageFilter)
+ INIT_INTERFACE_PART(COleMessageFilter, MessageFilter)
+ STDMETHOD_(DWORD, HandleInComingCall)(DWORD, HTASK, DWORD,
+ LPINTERFACEINFO);
+ STDMETHOD_(DWORD, RetryRejectedCall)(HTASK, DWORD, DWORD);
+ STDMETHOD_(DWORD, MessagePending)(HTASK, DWORD, DWORD);
+ END_INTERFACE_PART(MessageFilter)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// message map entries for OLE verbs
+
+#define ON_STDOLEVERB(iVerb, memberFxn) \
+ { 0xC002, 0, (UINT)iVerb, (UINT)iVerb, (UINT)-1, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(LPMSG, HWND, LPCRECT))memberFxn },
+
+#define ON_OLEVERB(idsVerbName, memberFxn) \
+ { 0xC002, 0, 1, 1, idsVerbName, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(LPMSG, HWND, LPCRECT))memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
+// global helpers and debugging
+
+void AFXAPI AfxOleSetEditMenu(COleClientItem* pClient, CMenu* pMenu,
+ UINT iMenuItem, UINT nIDVerbMin, UINT nIDVerbMax = 0, UINT nIDConvert = 0);
+
+#ifdef _DEBUG
+// Mapping SCODEs to readable text
+LPCTSTR AFXAPI AfxGetFullScodeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetScodeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetScodeRangeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetSeverityString(SCODE sc);
+LPCTSTR AFXAPI AfxGetFacilityString(SCODE sc);
+
+// Mapping IIDs to readable text
+LPCTSTR AFXAPI AfxGetIIDString(REFIID iid);
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXOLE_INLINE inline
+#define _AFXOLECLI_INLINE inline
+#define _AFXOLESVR_INLINE inline
+#define _AFXOLEDOBJ_INLINE inline
+#include <afxole.inl>
+#undef _AFXOLE_INLINE
+#undef _AFXOLECLI_INLINE
+#undef _AFXOLEDOBJ_INLINE
+#undef _AFXOLESVR_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXOLE_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxole.inl b/public/sdk/inc/mfc40/afxole.inl
new file mode 100644
index 000000000..622eeac5f
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxole.inl
@@ -0,0 +1,373 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXOLE.H
+
+/////////////////////////////////////////////////////////////////////////////
+// General OLE inlines (CDocItem, COleDocument)
+
+#ifdef _AFXOLE_INLINE
+
+// CDocItem
+_AFXOLE_INLINE CDocument* CDocItem::GetDocument() const
+ { return m_pDocument; }
+
+// COleDocument
+_AFXOLE_INLINE void COleDocument::EnableCompoundFile(BOOL bEnable)
+ { m_bCompoundFile = bEnable; }
+
+// COleMessageFilter
+_AFXOLE_INLINE void COleMessageFilter::SetBusyReply(SERVERCALL nBusyReply)
+ { ASSERT_VALID(this); m_nBusyReply = nBusyReply; }
+_AFXOLE_INLINE void COleMessageFilter::SetRetryReply(DWORD nRetryReply)
+ { ASSERT_VALID(this); m_nRetryReply = nRetryReply; }
+_AFXOLE_INLINE void COleMessageFilter::SetMessagePendingDelay(DWORD nTimeout)
+ { ASSERT_VALID(this); m_nTimeout = nTimeout; }
+_AFXOLE_INLINE void COleMessageFilter::EnableBusyDialog(BOOL bEnable)
+ { ASSERT_VALID(this); m_bEnableBusy = bEnable; }
+_AFXOLE_INLINE void COleMessageFilter::EnableNotRespondingDialog(BOOL bEnable)
+ { ASSERT_VALID(this); m_bEnableNotResponding = bEnable; }
+
+#endif //_AFXOLE_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE automation inlines
+
+#ifdef _AFXDISP_INLINE
+
+// COleException
+_AFXDISP_INLINE COleException::COleException()
+ { m_sc = S_OK; }
+_AFXDISP_INLINE COleException::~COleException()
+ { }
+
+// CCmdTarget
+_AFXDISP_INLINE DWORD CCmdTarget::InternalAddRef()
+ { ASSERT(GetInterfaceMap() != NULL); return InterlockedIncrement(&m_dwRef); }
+
+// CObjectFactory
+_AFXDISP_INLINE BOOL COleObjectFactory::IsRegistered() const
+ { ASSERT_VALID(this); return m_dwRegister != 0; }
+_AFXDISP_INLINE REFCLSID COleObjectFactory::GetClassID() const
+ { ASSERT_VALID(this); return m_clsid; }
+
+// COleDispatchDriver
+_AFXDISP_INLINE COleDispatchDriver::~COleDispatchDriver()
+ { ReleaseDispatch(); }
+_AFXDISP_INLINE COleDispatchDriver::operator LPDISPATCH()
+ { return m_lpDispatch; }
+
+// COleVariant
+_AFXDISP_INLINE COleVariant::COleVariant()
+ { AfxVariantInit(this); }
+_AFXDISP_INLINE COleVariant::~COleVariant()
+ { VariantClear(this); }
+_AFXDISP_INLINE COleVariant::COleVariant(LPCTSTR lpszSrc)
+ { vt = VT_EMPTY; *this = lpszSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(CString& strSrc)
+ { vt = VT_EMPTY; *this = strSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(BYTE nSrc)
+ { vt = VT_UI1; bVal = nSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(const COleCurrency& curSrc)
+ { vt = VT_CY; cyVal = curSrc.m_cur; }
+_AFXDISP_INLINE COleVariant::COleVariant(float fltSrc)
+ { vt = VT_R4; fltVal = fltSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(double dblSrc)
+ { vt = VT_R8; dblVal = dblSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(const COleDateTime& dateSrc)
+ { vt = VT_DATE; date = dateSrc.m_dt; }
+_AFXDISP_INLINE COleVariant::COleVariant(const CByteArray& arrSrc)
+ { vt = VT_EMPTY; *this = arrSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(const CLongBinary& lbSrc)
+ { vt = VT_EMPTY; *this = lbSrc; }
+_AFXDISP_INLINE BOOL COleVariant::operator==(LPCVARIANT pSrc) const
+ { return *this == *pSrc; }
+_AFXDISP_INLINE COleVariant::operator LPVARIANT()
+ { return this; }
+_AFXDISP_INLINE COleVariant::operator LPCVARIANT() const
+ { return this; }
+
+// COleCurrency
+_AFXDISP_INLINE COleCurrency::COleCurrency()
+ { m_cur.Hi = 0; m_cur.Lo = 0; SetStatus(valid); }
+_AFXDISP_INLINE COleCurrency::COleCurrency(CURRENCY cySrc)
+ { m_cur = cySrc; SetStatus(valid); }
+_AFXDISP_INLINE COleCurrency::COleCurrency(const COleCurrency& curSrc)
+ { m_cur = curSrc.m_cur; m_status = curSrc.m_status; }
+_AFXDISP_INLINE COleCurrency::COleCurrency(const VARIANT& varSrc)
+ { *this = varSrc; }
+_AFXDISP_INLINE COleCurrency::CurrencyStatus COleCurrency::GetStatus() const
+ { return m_status; }
+_AFXDISP_INLINE void COleCurrency::SetStatus(CurrencyStatus status)
+ { m_status = status; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator+=(const COleCurrency& cur)
+ { *this = *this + cur; return *this; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator-=(const COleCurrency& cur)
+ { *this = *this - cur; return *this; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator*=(long nOperand)
+ { *this = *this * nOperand; return *this; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator/=(long nOperand)
+ { *this = *this / nOperand; return *this; }
+_AFXDISP_INLINE BOOL COleCurrency::operator==(const COleCurrency& cur) const
+ { return(m_status == cur.m_status && m_cur.Hi == cur.m_cur.Hi &&
+ m_cur.Lo == cur.m_cur.Lo); }
+_AFXDISP_INLINE BOOL COleCurrency::operator!=(const COleCurrency& cur) const
+ { return(m_status != cur.m_status || m_cur.Hi != cur.m_cur.Hi ||
+ m_cur.Lo != cur.m_cur.Lo); }
+_AFXDISP_INLINE COleCurrency::operator CURRENCY() const
+ { return m_cur; }
+
+// COleDateTime
+_AFXDISP_INLINE COleDateTime::COleDateTime()
+ { m_dt = 0; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const COleDateTime& dateSrc)
+ { m_dt = dateSrc.m_dt; m_status = dateSrc.m_status; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const VARIANT& varSrc)
+ { *this = varSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(DATE dtSrc)
+ { m_dt = dtSrc; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTime::COleDateTime(time_t timeSrc)
+ { *this = timeSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const SYSTEMTIME& systimeSrc)
+ { *this = systimeSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const FILETIME& filetimeSrc)
+ { *this = filetimeSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(int nYear, int nMonth, int nDay,
+ int nHour, int nMin, int nSec)
+ { SetDateTime(nYear, nMonth, nDay, nHour, nMin, nSec); }
+_AFXDISP_INLINE COleDateTime::COleDateTime(WORD wDosDate, WORD wDosTime)
+ { m_status = DosDateTimeToVariantTime(wDosDate, wDosTime, &m_dt) ?
+ valid : invalid; }
+_AFXDISP_INLINE const COleDateTime& COleDateTime::operator=(const COleDateTime& dateSrc)
+ { m_dt = dateSrc.m_dt; m_status = dateSrc.m_status; return *this; }
+_AFXDISP_INLINE COleDateTime::DateTimeStatus COleDateTime::GetStatus() const
+ { return m_status; }
+_AFXDISP_INLINE void COleDateTime::SetStatus(DateTimeStatus status)
+ { m_status = status; }
+_AFXDISP_INLINE BOOL COleDateTime::operator==(const COleDateTime& date) const
+ { return (m_status == date.m_status && m_dt == date.m_dt); }
+_AFXDISP_INLINE BOOL COleDateTime::operator!=(const COleDateTime& date) const
+ { return (m_status != date.m_status || m_dt != date.m_dt); }
+_AFXDISP_INLINE const COleDateTime& COleDateTime::operator+=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this + dateSpan; return *this; }
+_AFXDISP_INLINE const COleDateTime& COleDateTime::operator-=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this - dateSpan; return *this; }
+_AFXDISP_INLINE COleDateTime::operator DATE() const
+ { return m_dt; }
+_AFXDISP_INLINE COleDateTime::SetDate(int nYear, int nMonth, int nDay)
+ { return SetDateTime(nYear, nMonth, nDay, 0, 0, 0); }
+_AFXDISP_INLINE COleDateTime::SetTime(int nHour, int nMin, int nSec)
+ // Set date to zero date - 12/30/1899
+ { return SetDateTime(1899, 12, 30, nHour, nMin, nSec); }
+
+// COleDateTimeSpan
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan()
+ { m_span = 0; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan(double dblSpanSrc)
+ { m_span = dblSpanSrc; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan(
+ const COleDateTimeSpan& dateSpanSrc)
+ { m_span = dateSpanSrc.m_span; m_status = dateSpanSrc.m_status; }
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan(
+ long lDays, int nHours, int nMins, int nSecs)
+ { SetDateTimeSpan(lDays, nHours, nMins, nSecs); }
+_AFXDISP_INLINE COleDateTimeSpan::DateTimeSpanStatus COleDateTimeSpan::GetStatus() const
+ { return m_status; }
+_AFXDISP_INLINE void COleDateTimeSpan::SetStatus(DateTimeSpanStatus status)
+ { m_status = status; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalDays() const
+ { ASSERT(GetStatus() == valid); return m_span; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalHours() const
+ { ASSERT(GetStatus() == valid); return m_span * 24; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalMinutes() const
+ { ASSERT(GetStatus() == valid); return m_span * 24 * 60; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalSeconds() const
+ { ASSERT(GetStatus() == valid); return m_span * 24 * 60 * 60; }
+_AFXDISP_INLINE long COleDateTimeSpan::GetDays() const
+ { ASSERT(GetStatus() == valid); return (long)m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator==(
+ const COleDateTimeSpan& dateSpan) const
+ { return (m_status == dateSpan.m_status &&
+ m_span == dateSpan.m_span); }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator!=(
+ const COleDateTimeSpan& dateSpan) const
+ { return (m_status != dateSpan.m_status ||
+ m_span != dateSpan.m_span); }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator<(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span < dateSpan.m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator>(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span > dateSpan.m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator<=(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span <= dateSpan.m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator>=(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span >= dateSpan.m_span; }
+_AFXDISP_INLINE const COleDateTimeSpan& COleDateTimeSpan::operator+=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this + dateSpan; return *this; }
+_AFXDISP_INLINE const COleDateTimeSpan& COleDateTimeSpan::operator-=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this - dateSpan; return *this; }
+_AFXDISP_INLINE COleDateTimeSpan COleDateTimeSpan::operator-() const
+ { return -this->m_span; }
+_AFXDISP_INLINE COleDateTimeSpan::operator double() const
+ { return m_span; }
+
+#endif //_AFXDISP_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Container inlines
+
+#ifdef _AFXOLECLI_INLINE
+
+// COleClientItem
+_AFXOLECLI_INLINE SCODE COleClientItem::GetLastStatus() const
+ { ASSERT_VALID(this); return m_scLast; }
+_AFXOLECLI_INLINE COleDocument* COleClientItem::GetDocument() const
+ { ASSERT_VALID(this); return (COleDocument*)m_pDocument; }
+_AFXOLECLI_INLINE OLE_OBJTYPE COleClientItem::GetType() const
+ { ASSERT_VALID(this); return m_nItemType; }
+_AFXOLECLI_INLINE DVASPECT COleClientItem::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_nDrawAspect; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsRunning() const
+ { ASSERT_VALID(this);
+ ASSERT(m_lpObject != NULL);
+ return ::OleIsRunning(m_lpObject); }
+_AFXOLECLI_INLINE UINT COleClientItem::GetItemState() const
+ { ASSERT_VALID(this); return m_nItemState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsInPlaceActive() const
+ { ASSERT_VALID(this);
+ return m_nItemState == activeState || m_nItemState == activeUIState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsOpen() const
+ { ASSERT_VALID(this); return m_nItemState == openState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsLinkUpToDate() const
+ { ASSERT_VALID(this);
+ ASSERT(m_lpObject != NULL);
+ // TRUE if result is S_OK (aka S_TRUE)
+ return m_lpObject->IsUpToDate() == NOERROR; }
+_AFXOLECLI_INLINE CView* COleClientItem::GetActiveView() const
+ { return m_pView; }
+
+// COleLinkingDoc
+_AFXOLECLI_INLINE void COleLinkingDoc::BeginDeferErrors()
+ { ASSERT(m_pLastException == NULL); ++m_bDeferErrors; }
+
+#endif //_AFXOLECLI_INLINE
+
+#ifdef _AFXOLEDOBJ_INLINE
+
+// COleDataObject
+_AFXOLEDOBJ_INLINE COleDataObject::~COleDataObject()
+ { Release(); }
+
+#endif //_AFXOLECTL_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE dialog inlines
+
+#ifdef _AFXODLGS_INLINE
+
+_AFXODLGS_INLINE UINT COleDialog::GetLastError() const
+ { return m_nLastError; }
+_AFXODLGS_INLINE CString COleInsertDialog::GetPathName() const
+ { ASSERT_VALID(this);
+ ASSERT(GetSelectionType() != createNewItem); return m_szFileName; }
+_AFXODLGS_INLINE REFCLSID COleInsertDialog::GetClassID() const
+ { ASSERT_VALID(this); return m_io.clsid; }
+_AFXODLGS_INLINE HGLOBAL COleInsertDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_io.hMetaPict; }
+_AFXODLGS_INLINE DVASPECT COleInsertDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_io.dwFlags & IOF_CHECKDISPLAYASICON ?
+ DVASPECT_ICON : DVASPECT_CONTENT; }
+_AFXODLGS_INLINE HGLOBAL COleConvertDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_cv.hMetaPict; }
+_AFXODLGS_INLINE DVASPECT COleConvertDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return (DVASPECT)m_cv.dvAspect; }
+_AFXODLGS_INLINE REFCLSID COleConvertDialog::GetClassID() const
+ { ASSERT_VALID(this); return m_cv.clsidNew; }
+_AFXODLGS_INLINE HGLOBAL COleChangeIconDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_ci.hMetaPict; }
+_AFXODLGS_INLINE int COlePasteSpecialDialog::GetPasteIndex() const
+ { ASSERT_VALID(this); return m_ps.nSelectedIndex; }
+_AFXODLGS_INLINE DVASPECT COlePasteSpecialDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_ps.dwFlags & PSF_CHECKDISPLAYASICON ?
+ DVASPECT_ICON : DVASPECT_CONTENT; }
+_AFXODLGS_INLINE HGLOBAL COlePasteSpecialDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_ps.hMetaPict; }
+_AFXODLGS_INLINE UINT COleBusyDialog::GetSelectionType() const
+ { ASSERT_VALID(this); return m_selection; }
+
+_AFXODLGS_INLINE BOOL COleChangeSourceDialog::IsValidSource()
+ { return m_cs.dwFlags & CSF_VALIDSOURCE; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetDisplayName()
+ { return m_cs.lpszDisplayName; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetFileName()
+ { return CString(m_cs.lpszDisplayName, m_cs.nFileLength); }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetItemName()
+ { return m_cs.lpszDisplayName+m_cs.nFileLength; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetFromPrefix()
+ { return m_cs.lpszFrom; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetToPrefix()
+ { return m_cs.lpszTo; }
+
+#endif //_AFXODLGS_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server inlines
+
+#ifdef _AFXOLESVR_INLINE
+
+// COleServerItem
+_AFXOLESVR_INLINE COleServerDoc* COleServerItem::GetDocument() const
+ { ASSERT_VALID(this); return (COleServerDoc*)m_pDocument; }
+_AFXOLESVR_INLINE void COleServerItem::NotifyChanged(DVASPECT nDrawAspect)
+ { ASSERT_VALID(this); NotifyClient(OLE_CHANGED, nDrawAspect); }
+_AFXOLESVR_INLINE const CString& COleServerItem::GetItemName() const
+ { ASSERT_VALID(this); return m_strItemName; }
+_AFXOLESVR_INLINE void COleServerItem::SetItemName(LPCTSTR lpszItemName)
+{
+ ASSERT_VALID(this);
+ ASSERT(lpszItemName != NULL);
+ ASSERT(AfxIsValidString(lpszItemName));
+ m_strItemName = lpszItemName;
+}
+_AFXOLESVR_INLINE BOOL COleServerItem::IsLinkedItem() const
+ { ASSERT_VALID(this); return GetDocument()->m_pEmbeddedItem != this; }
+_AFXOLESVR_INLINE COleDataSource* COleServerItem::GetDataSource()
+ { ASSERT_VALID(this); return &m_dataSource; }
+
+// COleServerDoc
+_AFXOLESVR_INLINE void COleServerDoc::NotifyChanged()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_CHANGED, DVASPECT_CONTENT); }
+_AFXOLESVR_INLINE void COleServerDoc::NotifyClosed()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_CLOSED, 0); }
+_AFXOLESVR_INLINE void COleServerDoc::NotifySaved()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_SAVED, 0); }
+_AFXOLESVR_INLINE BOOL COleServerDoc::IsEmbedded() const
+ { ASSERT_VALID(this); return m_bEmbedded; }
+_AFXOLESVR_INLINE BOOL COleServerDoc::IsInPlaceActive() const
+ { ASSERT_VALID(this); return m_pInPlaceFrame != NULL; }
+
+#endif //_AFXOLESVR_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxolecl.rc b/public/sdk/inc/mfc40/afxolecl.rc
new file mode 100644
index 000000000..70e3032a7
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Can not activate a static OLE object."
+ AFX_IDP_FAILED_TO_CONNECT "Failed to connect.\nLink may be broken."
+ AFX_IDP_SERVER_BUSY "Unable to process command, server busy."
+ AFX_IDP_BAD_VERB "Failed to perform server operation."
+ AFX_IDP_FAILED_TO_LAUNCH "Failed to launch server application."
+ AFX_IDS_UPDATING_ITEMS "Updating OLE objects"
+ AFX_IDP_FAILED_TO_CONVERT "Failed to convert OLE object."
+ AFX_IDP_ASK_TO_DISCARD "OLE objects cannot be saved while exiting Windows!\nDiscard all changes to %1?"
+ AFX_IDP_FAILED_TO_CREATE "Failed to create object. Make sure the application is entered in the system registry."
+
+ AFX_IDS_METAFILE_FORMAT "Picture (Metafile)\na picture"
+ AFX_IDS_DIB_FORMAT "Device Independent Bitmap\na device independent bitmap"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\na bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\ntext with font and paragraph formatting"
+ AFX_IDS_TEXT_FORMAT "Unformatted Text\ntext without any formatting"
+
+ AFX_IDS_INVALID_CURRENCY "Invalid Currency."
+ AFX_IDS_INVALID_DATETIME "Invalid DateTime."
+ AFX_IDS_INVALID_DATETIMESPAN "Invalid DateTimeSpan."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/afxolesv.rc b/public/sdk/inc/mfc40/afxolesv.rc
new file mode 100644
index 000000000..781dcab00
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Update %1 before proceeding?"
+ AFX_IDP_FAILED_TO_UPDATE, "Could not update client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Failed to register. OLE features may not work properly."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Failed to update the system registry.\nPlease try using REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "E&xit && Return to %1"
+ AFX_IDS_UPDATE_MENU, "&Update %1"
+ AFX_IDS_SAVEFILECOPY, "Save Copy As"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc40/afxplex_.h b/public/sdk/inc/mfc40/afxplex_.h
new file mode 100644
index 000000000..9ff94d3d6
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxplex_.h
@@ -0,0 +1,49 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPLEX_H__
+#define __AFXPLEX_H__
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifdef AFX_COLL_SEG
+#pragma code_seg(AFX_COLL_SEG)
+#endif
+
+struct CPlex // warning variable length structure
+{
+ CPlex* pNext;
+#if (_AFX_PACKING >= 8)
+ DWORD dwReserved[1]; // align on 8 byte boundary
+#endif
+ // BYTE data[maxNum*elementSize];
+
+ void* data() { return this+1; }
+
+ static CPlex* PASCAL Create(CPlex*& head, UINT nMax, UINT cbElement);
+ // like 'calloc' but no zero fill
+ // may throw memory exceptions
+
+ void FreeDataChain(); // free this one and links
+};
+
+#ifdef AFX_COLL_SEG
+#pragma code_seg()
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#endif //__AFXPLEX_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxprint.rc b/public/sdk/inc/mfc40/afxprint.rc
new file mode 100644
index 000000000..a3f534c49
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Printing",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "on the",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Cancel",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Cancel",IDCANCEL,46,45,40,15
+ CTEXT "Press Cmd-. to cancel.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Next Page",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "Pre&v Page",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Zoom &In",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Zoom &Out",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Next Page",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "Pre&v Page",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Zoom &In",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Zoom &Out",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Next",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "Pre&v",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&In",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Out",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "on %1" // for print output
+ AFX_IDS_ONEPAGE, "&One Page" // for preview button
+ AFX_IDS_TWOPAGE, "&Two Page" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Page %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Page %u\nPages %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Printer Files (*.prn)|*.prn|All Files (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Print to File" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "to %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc40/afxpriv.h b/public/sdk/inc/mfc40/afxpriv.h
new file mode 100644
index 000000000..4ac33cfe0
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxpriv.h
@@ -0,0 +1,979 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Note: This header file contains useful classes that are documented only
+// in the MFC Technical Notes. These classes may change from version to
+// version, so be prepared to change your code accordingly if you utilize
+// this header. In the future, commonly used portions of this header
+// may be moved and officially documented.
+
+#ifndef __AFXPRIV_H__
+#define __AFXPRIV_H__
+
+#ifndef __AFXADV_H__
+ #include <afxadv.h>
+#endif
+
+#ifndef _INC_MALLOC
+ #include <malloc.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXPRIV - MFC Private Classes
+
+// Implementation structures
+struct AFX_SIZEPARENTPARAMS; // Control bar implementation
+struct AFX_CMDHANDLERINFO; // Command routing implementation
+
+// Classes declared in this file
+
+ //CDC
+ class CPreviewDC; // Virtual DC for print preview
+
+ //CCmdTarget
+ //CWnd
+ //CView
+ class CPreviewView; // Print preview view
+ //CFrameWnd
+ class COleCntrFrameWnd;
+ //CMiniFrameWnd
+ class CMiniDockFrameWnd;
+
+class CDockContext; // for dragging control bars
+
+//IStream
+ class CArchiveStream;
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Global ID ranges (see Technical note TN020 for more details)
+
+// 8000 -> FFFF command IDs (used for menu items, accelerators and controls)
+#define IS_COMMAND_ID(nID) ((nID) & 0x8000)
+
+// 8000 -> DFFF : user commands
+// E000 -> EFFF : AFX commands and other things
+// F000 -> FFFF : standard windows commands and other things etc
+ // E000 -> E7FF standard commands
+ // E800 -> E8FF control bars (first 32 are special)
+ // E900 -> EEFF standard window controls/components
+ // EF00 -> EFFF SC_ menu help
+ // F000 -> FFFF standard strings
+#define ID_COMMAND_FROM_SC(sc) (((sc - 0xF000) >> 4) + AFX_IDS_SCFIRST)
+
+// 0000 -> 7FFF IDR range
+// 0000 -> 6FFF : user resources
+// 7000 -> 7FFF : AFX (and standard windows) resources
+// IDR ranges (NOTE: IDR_ values must be <32768)
+#define ASSERT_VALID_IDR(nIDR) ASSERT((nIDR) != 0 && (nIDR) < 0x8000)
+
+/////////////////////////////////////////////////////////////////////////////
+// Context sensitive help support (see Technical note TN028 for more details)
+
+// Help ID bases
+#define HID_BASE_COMMAND 0x00010000UL // ID and IDM
+#define HID_BASE_RESOURCE 0x00020000UL // IDR and IDD
+#define HID_BASE_PROMPT 0x00030000UL // IDP
+#define HID_BASE_NCAREAS 0x00040000UL
+#define HID_BASE_CONTROL 0x00050000UL // IDC
+#define HID_BASE_DISPATCH 0x00060000UL // IDispatch help codes
+
+/////////////////////////////////////////////////////////////////////////////
+// Internal AFX Windows messages (see Technical note TN024 for more details)
+// (0x0360 - 0x037F are reserved for MFC)
+
+#define WM_QUERYAFXWNDPROC 0x0360 // lResult = 1 if processed by AfxWndProc
+#define WM_SIZEPARENT 0x0361 // lParam = &AFX_SIZEPARENTPARAMS
+#define WM_SETMESSAGESTRING 0x0362 // wParam = nIDS (or 0),
+ // lParam = lpszOther (or NULL)
+#define WM_IDLEUPDATECMDUI 0x0363 // wParam == bDisableIfNoHandler
+#define WM_INITIALUPDATE 0x0364 // (params unused) - sent to children
+#define WM_COMMANDHELP 0x0365 // lResult = TRUE/FALSE,
+ // lParam = dwContext
+#define WM_HELPHITTEST 0x0366 // lResult = dwContext,
+ // lParam = MAKELONG(x,y)
+#define WM_EXITHELPMODE 0x0367 // (params unused)
+#define WM_RECALCPARENT 0x0368 // force RecalcLayout on frame window
+ // (only for inplace frame windows)
+#define WM_SIZECHILD 0x0369 // special notify from COleResizeBar
+ // wParam = ID of child window
+ // lParam = lpRectNew (new position/size)
+#define WM_KICKIDLE 0x036A // (params unused) causes idles to kick in
+#define WM_QUERYCENTERWND 0x036B // lParam = HWND to use as centering parent
+#define WM_DISABLEMODAL 0x036C // lResult = 0, disable during modal state
+ // lResult = 1, don't disable
+#define WM_FLOATSTATUS 0x036D // wParam combination of FS_* flags below
+
+// WM_ACTIVATETOPLEVEL is like WM_ACTIVATEAPP but works with hierarchies
+// of mixed processes (as is the case with OLE in-place activation)
+#define WM_ACTIVATETOPLEVEL 0x036E // wParam = nState (like WM_ACTIVATE)
+ // lParam = pointer to HWND[2]
+ // lParam[0] = hWnd getting WM_ACTIVATE
+ // lParam[1] = hWndOther
+
+#define WM_QUERY3DCONTROLS 0x036F // lResult != 0 if 3D controls wanted
+
+// Note: Messages 0x0370, 0x0371, and 0x372 were incorrectly used by
+// some versions of Windows. To remain compatible, MFC does not
+// use messages in that range.
+#define WM_RESERVED_0370 0x0370
+#define WM_RESERVED_0371 0x0371
+#define WM_RESERVED_0372 0x0372
+
+// WM_SOCKET_NOTIFY and WM_SOCKET_DEAD are used internally by MFC's
+// Windows sockets implementation. For more information, see sockcore.cpp
+#define WM_SOCKET_NOTIFY 0x0373
+#define WM_SOCKET_DEAD 0x0374
+
+// same as WM_SETMESSAGESTRING except not popped if IsTracking()
+#define WM_POPMESSAGESTRING 0x0375
+
+// Constants used in DLGINIT resources for OLE control containers
+#define WM_OCC_LOADFROMSTREAM 0x0376
+#define WM_OCC_LOADFROMSTORAGE 0x0377
+#define WM_OCC_INITNEW 0x0378
+
+// Marker used while rearranging the message queue
+#define WM_QUEUE_SENTINEL 0x0379
+
+// Note: Messages 0x037A - 0x37F reserved for future MFC use.
+#define WM_RESERVED_037A 0x037A
+#define WM_RESERVED_037B 0x037B
+#define WM_RESERVED_037C 0x037C
+#define WM_RESERVED_037D 0x037D
+#define WM_RESERVED_037E 0x037E
+#define WM_RESERVED_037F 0x037F
+
+// like ON_MESSAGE but no return value
+#define ON_MESSAGE_VOID(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))memberFxn },
+
+// special struct for WM_SIZEPARENT
+struct AFX_SIZEPARENTPARAMS
+{
+ HDWP hDWP; // handle for DeferWindowPos
+ RECT rect; // parent client rectangle (trim as appropriate)
+ SIZE sizeTotal; // total size on each side as layout proceeds
+ BOOL bStretch; // should stretch to fill all space
+};
+
+// flags for wParam in the WM_FLOATSTATUS message
+enum { FS_SHOW = 0x01, FS_HIDE = 0x02,
+ FS_ACTIVATE = 0x04, FS_DEACTIVATE = 0x08,
+ FS_ENABLE = 0x10, FS_DISABLE = 0x20,
+ FS_SYNCACTIVE = 0x40 };
+
+void AFXAPI AfxRepositionWindow(AFX_SIZEPARENTPARAMS* lpLayout,
+ HWND hWnd, LPCRECT lpRect);
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of command routing
+
+struct AFX_CMDHANDLERINFO
+{
+ CCmdTarget* pTarget;
+ void (AFX_MSG_CALL CCmdTarget::*pmf)(void);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of event sink handling
+
+#ifndef _AFX_NO_OLE_SUPPORT
+#ifdef _OBJBASE_H_
+
+struct AFX_EVENT
+{
+ enum { event, propRequest, propChanged };
+
+ AFX_EVENT(int eventKind, DISPID dispid, DISPPARAMS* pDispParams = NULL,
+ EXCEPINFO* pExcepInfo = NULL, UINT* puArgError = NULL);
+
+ int m_eventKind;
+ DISPID m_dispid;
+ DISPPARAMS* m_pDispParams;
+ EXCEPINFO* m_pExcepInfo;
+ UINT* m_puArgError;
+ BOOL m_bPropChanged;
+ HRESULT m_hResult;
+};
+
+inline AFX_EVENT::AFX_EVENT(int eventKind, DISPID dispid,
+ DISPPARAMS* pDispParams, EXCEPINFO* pExcepInfo, UINT* puArgError)
+{
+ m_eventKind = eventKind;
+ m_dispid = dispid;
+ m_pDispParams = pDispParams;
+ m_pExcepInfo = pExcepInfo;
+ m_puArgError = puArgError;
+ m_hResult = NOERROR;
+}
+
+#endif
+#endif // _AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// Robust file save support
+// opens a temp file if modeCreate specified and enough free space
+// renaming, etc occurs automatically if everything succeeds
+
+class CMirrorFile : public CFile
+{
+// Implementation
+public:
+ virtual void Abort();
+ virtual void Close();
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+
+protected:
+ CString m_strMirrorName;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of PrintPreview
+
+class CPreviewDC : public CDC
+{
+ DECLARE_DYNAMIC(CPreviewDC)
+
+public:
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+ virtual void SetOutputDC(HDC hDC);
+
+ virtual void ReleaseOutputDC();
+
+// Constructors
+ CPreviewDC();
+
+// Implementation
+public:
+ virtual ~CPreviewDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ void SetScaleRatio(int nNumerator, int nDenominator);
+ void SetTopLeftOffset(CSize TopLeft);
+ void ClipToPage();
+
+ // These conversion functions can be used without an output DC
+
+ void PrinterDPtoScreenDP(LPPOINT lpPoint) const;
+
+// Device-Context Functions
+ virtual int SaveDC();
+ virtual BOOL RestoreDC(int nSavedDC);
+
+public:
+ virtual CGdiObject* SelectStockObject(int nIndex);
+ virtual CFont* SelectObject(CFont* pFont);
+
+// Drawing-Attribute Functions
+ virtual COLORREF SetBkColor(COLORREF crColor);
+ virtual COLORREF SetTextColor(COLORREF crColor);
+
+// Mapping Functions
+ virtual int SetMapMode(int nMapMode);
+ virtual CPoint SetViewportOrg(int x, int y);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+ virtual CSize SetViewportExt(int x, int y);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+ virtual CSize SetWindowExt(int x, int y);
+ virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ virtual BOOL GrayString(CBrush* pBrush,
+ BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int),
+ LPARAM lpData, int nCount,
+ int x, int y, int nWidth, int nHeight);
+
+// Printer Escape Functions
+ virtual int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData);
+
+// Implementation
+protected:
+ void MirrorMappingMode(BOOL bCompute);
+ void MirrorViewportOrg();
+ void MirrorFont();
+ void MirrorAttributes();
+
+ CSize ComputeDeltas(int& x, LPCTSTR lpszString, UINT& nCount, BOOL bTabbed,
+ UINT nTabStops, LPINT lpnTabStops, int nTabOrigin,
+ LPTSTR lpszOutputString, int* pnDxWidths, int& nRightFixup);
+
+protected:
+ int m_nScaleNum; // Scale ratio Numerator
+ int m_nScaleDen; // Scale ratio Denominator
+ int m_nSaveDCIndex; // DC Save index when Screen DC Attached
+ int m_nSaveDCDelta; // delta between Attrib and output restore indices
+ CSize m_sizeTopLeft;// Offset for top left corner of page
+ HFONT m_hFont; // Font selected into the screen DC (NULL if none)
+ HFONT m_hPrinterFont; // Font selected into the print DC
+#ifdef _MAC
+ int m_aCharWidthsDraw[256]; // character widths for m_hDC
+ int m_aCharWidthsAttrib[256]; // character widths for m_hAttribDC
+#endif
+
+ CSize m_sizeWinExt; // cached window extents computed for screen
+ CSize m_sizeVpExt; // cached viewport extents computed for screen
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPreviewView
+
+class CDialogBar;
+
+class CPreviewView : public CScrollView
+{
+ DECLARE_DYNCREATE(CPreviewView)
+
+// Constructors
+public:
+ CPreviewView();
+ BOOL SetPrintView(CView* pPrintView);
+
+// Attributes
+protected:
+ CView* m_pOrigView;
+ CView* m_pPrintView;
+ CPreviewDC* m_pPreviewDC; // Output and attrib DCs Set, not created
+ CDC m_dcPrint; // Actual printer DC
+
+// Operations
+ void SetZoomState(UINT nNewState, UINT nPage, CPoint point);
+ void SetCurrentPage(UINT nPage, BOOL bClearRatios);
+
+ // Returns TRUE if in a page rect. Returns the page index
+ // in nPage and the point converted to 1:1 screen device coordinates
+ BOOL FindPageRect(CPoint& point, UINT& nPage);
+
+
+// Overridables
+ virtual void OnActivateView(BOOL bActivate,
+ CView* pActivateView, CView* pDeactiveView);
+
+ // Returns .cx/.cy as the numerator/denominator pair for the ratio
+ // using CSize for convenience
+ virtual CSize CalcScaleRatio(CSize windowSize, CSize actualSize);
+
+ virtual void PositionPage(UINT nPage);
+ virtual void OnDisplayPageNumber(UINT nPage, UINT nPagesDisplayed);
+
+// Implementation
+public:
+ virtual ~CPreviewView();
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif
+#ifdef _MAC
+ virtual void CalcWindowRect(LPRECT lpClientRect);
+#endif
+
+protected:
+ //{{AFX_MSG(CPreviewView)
+ afx_msg void OnPreviewClose();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnDraw(CDC* pDC);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnNumPageChange();
+ afx_msg void OnNextPage();
+ afx_msg void OnPrevPage();
+ afx_msg void OnPreviewPrint();
+ afx_msg void OnZoomIn();
+ afx_msg void OnZoomOut();
+ afx_msg void OnUpdateNumPageChange(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNextPage(CCmdUI* pCmdUI);
+ afx_msg void OnUpdatePrevPage(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateZoomIn(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateZoomOut(CCmdUI* pCmdUI);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ //}}AFX_MSG
+
+ void DoZoom(UINT nPage, CPoint point);
+ void SetScaledSize(UINT nPage);
+ CSize CalcPageDisplaySize();
+
+ CPrintPreviewState* m_pPreviewState; // State to restore
+ CDialogBar* m_pToolBar; // Toolbar for preview
+
+ struct PAGE_INFO
+ {
+ CRect rectScreen; // screen rect (screen device units)
+ CSize sizeUnscaled; // unscaled screen rect (screen device units)
+ CSize sizeScaleRatio; // scale ratio (cx/cy)
+ CSize sizeZoomOutRatio; // scale ratio when zoomed out (cx/cy)
+ };
+
+ PAGE_INFO* m_pPageInfo; // Array of page info structures
+ PAGE_INFO m_pageInfoArray[2]; // Embedded array for the default implementation
+
+ BOOL m_bPageNumDisplayed;// Flags whether or not page number has yet
+ // been displayed on status line
+ UINT m_nZoomOutPages; // number of pages when zoomed out
+ UINT m_nZoomState;
+ UINT m_nMaxPages; // for sanity checks
+ UINT m_nCurrentPage;
+ UINT m_nPages;
+ int m_nSecondPageOffset; // used to shift second page position
+
+ HCURSOR m_hMagnifyCursor;
+
+ CSize m_sizePrinterPPI; // printer pixels per inch
+ CPoint m_ptCenterPoint;
+ CPrintInfo* m_pPreviewInfo;
+
+ DECLARE_MESSAGE_MAP()
+
+ friend class CView;
+ friend BOOL CALLBACK _AfxPreviewCloseProc(CFrameWnd* pFrameWnd);
+};
+
+// Zoom States
+#define ZOOM_OUT 0
+#define ZOOM_MIDDLE 1
+#define ZOOM_IN 2
+
+/////////////////////////////////////////////////////////////////////////////
+// toolbar docking support
+
+class CDockContext
+{
+public:
+// Construction
+ CDockContext(CControlBar* pBar);
+
+// Attributes
+ CPoint m_ptLast; // last mouse position during drag
+ CRect m_rectLast;
+ CSize m_sizeLast;
+ BOOL m_bDitherLast;
+
+ // Rectangles used during dragging or resizing
+ CRect m_rectDragHorz;
+ CRect m_rectDragVert;
+ CRect m_rectFrameDragHorz;
+ CRect m_rectFrameDragVert;
+
+ CControlBar* m_pBar; // the toolbar that created this context
+ CFrameWnd* m_pDockSite; // the controlling frame of the CControlBar
+ DWORD m_dwDockStyle; // allowable dock styles for bar
+ DWORD m_dwOverDockStyle; // style of dock that rect is over
+ DWORD m_dwStyle; // style of control bar
+ BOOL m_bFlip; // if shift key is down
+ BOOL m_bForceFrame; // if ctrl key is down
+
+ CDC* m_pDC; // where to draw during drag
+ BOOL m_bDragging;
+ int m_nHitTest;
+
+ UINT m_uMRUDockID;
+ CRect m_rectMRUDockPos;
+
+ DWORD m_dwMRUFloatStyle;
+ CPoint m_ptMRUFloatPos;
+
+// Drag Operations
+ virtual void StartDrag(CPoint pt);
+ void Move(CPoint pt); // called when mouse has moved
+ void EndDrag(); // drop
+ void OnKey(int nChar, BOOL bDown);
+
+// Resize Operations
+ virtual void StartResize(int nHitTest, CPoint pt);
+ void Stretch(CPoint pt);
+ void EndResize();
+
+// Double Click Operations
+ virtual void ToggleDocking();
+
+// Operations
+ void InitLoop();
+ void CancelLoop();
+
+// Implementation
+public:
+ ~CDockContext();
+ BOOL Track();
+ void DrawFocusRect(BOOL bRemoveRect = FALSE);
+ // draws the correct outline
+ void UpdateState(BOOL* pFlag, BOOL bNewValue);
+ DWORD CanDock();
+ CDockBar* GetDockBar(DWORD dwOverDockStyle);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CControlBarInfo - used for docking serialization
+
+class CControlBarInfo
+{
+public:
+// Implementation
+ CControlBarInfo();
+
+// Attributes
+ UINT m_nBarID; // ID of this bar
+ BOOL m_bVisible; // visibility of this bar
+ BOOL m_bFloating; // whether floating or not
+ BOOL m_bHorz; // orientation of floating dockbar
+ BOOL m_bDockBar; // true if a dockbar
+ CPoint m_pointPos; // topleft point of window
+
+ UINT m_nMRUWidth; // MRUWidth for Dynamic Toolbars
+ BOOL m_bDocking; // TRUE if this bar has a DockContext
+ UINT m_uMRUDockID; // most recent docked dockbar
+ CRect m_rectMRUDockPos; // most recent docked position
+ DWORD m_dwMRUFloatStyle; // most recent floating orientation
+ CPoint m_ptMRUFloatPos; // most recent floating position
+
+ CPtrArray m_arrBarID; // bar IDs for bars contained within this one
+ CControlBar* m_pBar; // bar which this refers to (transient)
+
+ void Serialize(CArchive& ar, CDockState* pDockState);
+ BOOL LoadState(LPCTSTR lpszProfileName, int nIndex, CDockState* pDockState);
+ BOOL SaveState(LPCTSTR lpszProfileName, int nIndex);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDockBar - used for docking
+
+class CDockBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CDockBar)
+
+// Construction
+public:
+ CDockBar(BOOL bFloating = FALSE); //true if attached to CMiniDockFrameWnd
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle, UINT nID);
+
+// Attributes
+ BOOL m_bFloating;
+
+ virtual BOOL IsDockBar() const;
+ int GetDockedCount() const;
+ virtual int GetDockedVisibleCount() const;
+
+// Operations
+ void DockControlBar(CControlBar* pBar, LPCRECT lpRect = NULL);
+ void ReDockControlBar(CControlBar* pBar, LPCRECT lpRect = NULL);
+ BOOL RemoveControlBar(CControlBar*, int nPosExclude = -1);
+ void RemovePlaceHolder(CControlBar* pBar);
+
+// Implementation
+public:
+ virtual ~CDockBar();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual void DoPaint(CDC* pDC);
+
+ // public implementation helpers
+ void GetBarInfo(CControlBarInfo* pInfo);
+ void SetBarInfo(CControlBarInfo* pInfo, CFrameWnd* pFrameWnd);
+ int FindBar(CControlBar* pBar, int nPosExclude = -1);
+ void ShowAll(BOOL bShow);
+
+protected:
+ CPtrArray m_arrBars; // each element is a CControlBar
+ BOOL m_bLayoutQuery;
+ CRect m_rectLayout;
+
+ CControlBar* GetDockedControlBar(int nPos) const;
+
+ // implementation helpers
+ int Insert(CControlBar* pBar, CRect rect, CPoint ptMid);
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+ //{{AFX_MSG(CDockBar)
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg void OnNcPaint();
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg void OnPaint();
+ afx_msg LRESULT OnSizeParent(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CMiniDockFrameWnd;
+};
+
+class CMiniDockFrameWnd : public CMiniFrameWnd
+{
+ DECLARE_DYNCREATE(CMiniDockFrameWnd)
+
+public:
+// Construction
+ CMiniDockFrameWnd();
+ virtual BOOL Create(CWnd* pParent, DWORD dwBarStyle);
+
+// Operations
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+
+// Implementation
+public:
+ CDockBar m_wndDockBar;
+
+ //{{AFX_MSG(CMiniFrameWnd)
+ afx_msg void OnClose();
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+#endif
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleCntrFrameWnd
+
+class COleIPFrameWnd;
+
+class COleCntrFrameWnd : public CFrameWnd
+{
+// Constructor
+public:
+ COleCntrFrameWnd(COleIPFrameWnd* pInPlaceFrame);
+
+// Implementation
+protected:
+ COleIPFrameWnd* m_pInPlaceFrame;
+ virtual void PostNcDestroy();
+
+public:
+ virtual ~COleCntrFrameWnd();
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ void OnIdleUpdateCmdUI();
+#ifdef _DEBUG
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleControlLock
+
+#ifdef __AFXDISP_H__
+
+class COleControlLock
+{
+// Constructors
+public:
+ COleControlLock(REFCLSID clsid);
+
+// Attributes
+ CLSID m_clsid;
+ LPCLASSFACTORY m_pClassFactory;
+ COleControlLock* m_pNextLock;
+
+// Implementation
+public:
+ virtual ~COleControlLock();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CArchiveStream
+
+class CArchiveStream : public IStream
+{
+public:
+ CArchiveStream(CArchive* pArchive);
+
+// Implementation
+ CArchive* m_pArchive;
+
+ STDMETHOD_(ULONG, AddRef)();
+ STDMETHOD_(ULONG, Release)();
+ STDMETHOD(QueryInterface)(REFIID, LPVOID*);
+
+ STDMETHOD(Read)(void*, ULONG, ULONG*);
+ STDMETHOD(Write)(const void*, ULONG cb, ULONG*);
+ STDMETHOD(Seek)(LARGE_INTEGER, DWORD, ULARGE_INTEGER*);
+ STDMETHOD(SetSize)(ULARGE_INTEGER);
+ STDMETHOD(CopyTo)(LPSTREAM, ULARGE_INTEGER, ULARGE_INTEGER*,
+ ULARGE_INTEGER*);
+ STDMETHOD(Commit)(DWORD);
+ STDMETHOD(Revert)();
+ STDMETHOD(LockRegion)(ULARGE_INTEGER, ULARGE_INTEGER,DWORD);
+ STDMETHOD(UnlockRegion)(ULARGE_INTEGER, ULARGE_INTEGER, DWORD);
+ STDMETHOD(Stat)(STATSTG*, DWORD);
+ STDMETHOD(Clone)(LPSTREAM*);
+};
+
+#endif // __AFX_DISP_H__
+
+/////////////////////////////////////////////////////////////////////////////
+// CDialogTemplate
+
+#ifndef _MAC
+
+class CDialogTemplate
+{
+// Constructors
+public:
+ CDialogTemplate(const DLGTEMPLATE* pTemplate = NULL);
+ CDialogTemplate(HGLOBAL hGlobal);
+
+// Attributes
+ BOOL HasFont() const;
+ BOOL SetFont(LPCTSTR lpFaceName, WORD nFontSize);
+ BOOL SetSystemFont(WORD nFontSize = 0);
+ BOOL GetFont(CString& strFaceName, WORD& nFontSize) const;
+ void GetSizeInDialogUnits(SIZE* pSize) const;
+ void GetSizeInPixels(SIZE* pSize) const;
+
+ static BOOL AFX_CDECL GetFont(const DLGTEMPLATE* pTemplate,
+ CString& strFaceName, WORD& nFontSize);
+
+// Operations
+ BOOL Load(LPCTSTR lpDialogTemplateID);
+ HGLOBAL Detach();
+
+// Implementation
+public:
+ ~CDialogTemplate();
+
+ HGLOBAL m_hTemplate;
+ DWORD m_dwTemplateSize;
+ BOOL m_bSystemFont;
+
+protected:
+ static BYTE* AFX_CDECL GetFontSizeField(const DLGTEMPLATE* pTemplate);
+ static UINT AFX_CDECL GetTemplateSize(const DLGTEMPLATE* pTemplate);
+ BOOL SetTemplate(const DLGTEMPLATE* pTemplate, UINT cb);
+};
+
+#endif //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// WM_NOTIFY support
+
+struct AFX_NOTIFY
+{
+ LRESULT* pResult;
+ NMHDR* pNMHDR;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global implementation helpers
+
+// window creation hooking
+void AFXAPI AfxHookWindowCreate(CWnd* pWnd);
+BOOL AFXAPI AfxUnhookWindowCreate();
+void AFXAPI AfxResetMsgCache();
+
+// for backward compatibility to previous versions
+#define _AfxHookWindowCreate AfxHookWindowCreate
+#define _AfxUnhookWindowCreate AfxUnhookWindowCreate
+
+// string helpers
+void AFXAPI AfxSetWindowText(HWND hWndCtrl, LPCTSTR lpszNew);
+int AFXAPI AfxLoadString(UINT nIDS, LPTSTR lpszBuf, UINT nMaxBuf = 256);
+
+HDC AFXAPI AfxCreateDC(HGLOBAL hDevNames, HGLOBAL hDevMode);
+
+void AFXAPI AfxGetModuleShortFileName(HINSTANCE hInst, CString& strShortName);
+
+// Failure dialog helpers
+void AFXAPI AfxFailMaxChars(CDataExchange* pDX, int nChars);
+void AFXAPI AfxFailRadio(CDataExchange* pDX);
+
+// DLL load helpers
+HINSTANCE AFXAPI AfxLoadDll(HINSTANCE& hInst, LPCSTR lpszDLL);
+HINSTANCE AFXAPI AfxLoadDll(HINSTANCE& hInst, LPCSTR lpszDLL,
+ FARPROC* pProcPtrs, LPCSTR lpszProcName);
+
+/////////////////////////////////////////////////////////////////////////////
+// Global UNICODE<>ANSI translation helpers
+
+LPDEVMODEW AFXAPI AfxDevModeA2W(LPDEVMODEW lpDevModeW, LPDEVMODEA lpDevModeA);
+LPDEVMODEA AFXAPI AfxDevModeW2A(LPDEVMODEA lpDevModeA, LPDEVMODEW lpDevModeW);
+#define DEVMODEW2A(lpw)\
+ ((lpw == NULL) ? NULL : AfxDevModeW2A((LPDEVMODEA)alloca(sizeof(DEVMODEA)+lpw->dmDriverExtra), lpw))
+#define DEVMODEA2W(lpa)\
+ ((lpa == NULL) ? NULL : AfxDevModeA2W((LPDEVMODEW)alloca(sizeof(DEVMODEW)+lpa->dmDriverExtra), lpa))
+
+LPTEXTMETRICW AFXAPI AfxTextMetricA2W(LPTEXTMETRICW lptmW, LPTEXTMETRICA pltmA);
+LPTEXTMETRICA AFXAPI AfxTextMetricW2A(LPTEXTMETRICA lptmA, LPTEXTMETRICW pltmW);
+#define TEXTMETRICW2A(lptmw)\
+ ((lptmw == NULL) ? NULL : AfxTextMetricW2A((LPTEXTMETRICA)alloca(sizeof(TEXTMETRICA)), lptmw))
+#define TEXTMETRICA2W(lptma)\
+ ((lptma == NULL) ? NULL : AfxTextMetricA2W((LPTEXTMETRICW)alloca(sizeof(TEXTMETRICW)), lptma))
+
+LPWSTR AFXAPI AfxA2WHelper(LPWSTR lpw, LPCSTR lpa, int nChars);
+LPSTR AFXAPI AfxW2AHelper(LPSTR lpa, LPCWSTR lpw, int nChars);
+
+#define A2CW(lpa) (\
+ ((LPCSTR)lpa == NULL) ? NULL : (\
+ _convert = (strlen(lpa)+1),\
+ (LPCWSTR)AfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
+ )\
+)
+
+#define A2W(lpa) (\
+ ((LPCSTR)lpa == NULL) ? NULL : (\
+ _convert = (strlen(lpa)+1),\
+ AfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
+ )\
+)
+
+#define W2CA(lpw) (\
+ ((LPCWSTR)lpw == NULL) ? NULL : (\
+ _convert = (wcslen(lpw)+1)*2,\
+ (LPCSTR)AfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
+ )\
+)
+
+#define W2A(lpw) (\
+ ((LPCWSTR)lpw == NULL) ? NULL : (\
+ _convert = (wcslen(lpw)+1)*2,\
+ AfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
+ )\
+)
+
+#ifndef _DEBUG
+#define USES_CONVERSION int _convert; _convert
+#else
+#define USES_CONVERSION int _convert = 0;
+#endif
+
+#ifdef __AFXDISP_H__
+
+void AFXAPI AfxBSTR2CString(CString* pStr, BSTR bstr);
+
+#if !defined(_UNICODE) && !defined(OLE2ANSI)
+BSTR AFXAPI AfxBSTR2ABSTR(BSTR bstrW);
+LPWSTR AFXAPI AfxTaskStringA2W(LPCSTR lpa);
+LPSTR AFXAPI AfxTaskStringW2A(LPCWSTR lpw);
+#endif
+
+#define OLESTDDELIMOLE OLESTR("\\")
+
+#if defined(_UNICODE)
+// in these cases the default (TCHAR) is the same as OLECHAR
+ #define DEVMODEOLE DEVMODEW
+ #define LPDEVMODEOLE LPDEVMODEW
+ #define TEXTMETRICOLE TEXTMETRICW
+ #define LPTEXTMETRICOLE LPTEXTMETRICW
+ inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
+ inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
+ inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
+ inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
+ inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
+ inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
+ inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
+ inline LPDEVMODEW DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
+ inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODEW lp) { return lp; }
+ inline LPTEXTMETRICW TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
+ inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRICW lp) { return lp; }
+ inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr;}
+#elif defined(OLE2ANSI)
+// in these cases the default (TCHAR) is the same as OLECHAR
+ #define DEVMODEOLE DEVMODEA
+ #define LPDEVMODEOLE LPDEVMODEA
+ #define TEXTMETRICOLE TEXTMETRICA
+ #define LPTEXTMETRICOLE LPTEXTMETRICA
+ inline size_t ocslen(LPCOLESTR x) { return strlen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return strcpy(dest, src); }
+ inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
+ inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
+ inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
+ inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
+ inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
+ inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
+ inline LPDEVMODE DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
+ inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODE lp) { return lp; }
+ inline LPTEXTMETRIC TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
+ inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRIC lp) { return lp; }
+ inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr; }
+#else
+ #define DEVMODEOLE DEVMODEW
+ #define LPDEVMODEOLE LPDEVMODEW
+ #define TEXTMETRICOLE TEXTMETRICW
+ #define LPTEXTMETRICOLE LPTEXTMETRICW
+ inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
+ #define T2COLE(lpa) A2CW(lpa)
+ #define T2OLE(lpa) A2W(lpa)
+ #define OLE2CT(lpo) W2CA(lpo)
+ #define OLE2T(lpo) W2A(lpo)
+ #define TASKSTRINGT2OLE(lpa) AfxTaskStringA2W(lpa)
+ #define TASKSTRINGOLE2T(lpo) AfxTaskStringW2A(lpo)
+ #define DEVMODEOLE2T(lpo) DEVMODEW2A(lpo)
+ #define DEVMODET2OLE(lpa) DEVMODEA2W(lpa)
+ #define TEXTMETRICOLE2T(lptmw) TEXTMETRICW2A(lptmw)
+ #define TEXTMETRICT2OLE(lptma) TEXTMETRICA2W(lptma)
+ #define BSTR2TBSTR(bstr) AfxBSTR2ABSTR(bstr)
+#endif
+
+#ifdef _UNICODE
+ #define T2A W2A
+ #define A2T A2W
+ #define T2W(x) (x)
+ #define W2T(x) (x)
+#else
+ #define T2W A2W
+ #define W2T W2A
+ #define T2A(x) (x)
+ #define A2T(x) (x)
+#endif
+
+#endif //__AFXDISP_H__
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXPRIV_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxres.h b/public/sdk/inc/mfc40/afxres.h
new file mode 100644
index 000000000..461269561
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxres.h
@@ -0,0 +1,767 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_H__
+#define __AFXRES_H__
+
+#ifdef REZ // Mac resource compiler (mrc) defines REZ
+#define RC_INVOKED
+#endif
+
+#ifdef RC_INVOKED
+#ifndef _INC_WINDOWS
+#define _INC_WINDOWS
+ #include "winres.h" // extract from windows header
+#endif
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+
+#ifdef APSTUDIO_INVOKED
+#define APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// MFC resource types (see Technical note TN024 for implementation details)
+
+#ifndef RC_INVOKED
+#define RT_DLGINIT MAKEINTRESOURCE(240)
+#define RT_TOOLBAR MAKEINTRESOURCE(241)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef APSTUDIO_INVOKED
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// General style bits etc
+
+// Tab Control styles
+#ifndef TCS_MULTILINE // new in later versions of Win32
+#define TCS_MULTILINE 0x0200
+#endif
+
+// ControlBar styles
+#define CBRS_ALIGN_LEFT 0x1000L
+#define CBRS_ALIGN_TOP 0x2000L
+#define CBRS_ALIGN_RIGHT 0x4000L
+#define CBRS_ALIGN_BOTTOM 0x8000L
+#define CBRS_ALIGN_ANY 0xF000L
+
+#define CBRS_BORDER_LEFT 0x0100L
+#define CBRS_BORDER_TOP 0x0200L
+#define CBRS_BORDER_RIGHT 0x0400L
+#define CBRS_BORDER_BOTTOM 0x0800L
+#define CBRS_BORDER_ANY 0x0F00L
+
+#define CBRS_TOOLTIPS 0x0010L
+#define CBRS_FLYBY 0x0020L
+#define CBRS_FLOAT_MULTI 0x0040L
+#define CBRS_BORDER_3D 0x0080L
+#define CBRS_HIDE_INPLACE 0x0008L
+#define CBRS_SIZE_DYNAMIC 0x0004L
+#define CBRS_SIZE_FIXED 0x0002L
+#define CBRS_FLOATING 0x0001L
+
+#define CBRS_ORIENT_HORZ (CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM)
+#define CBRS_ORIENT_VERT (CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT)
+#define CBRS_ORIENT_ANY (CBRS_ORIENT_HORZ|CBRS_ORIENT_VERT)
+
+#define CBRS_ALL 0xFFFFL
+
+
+// the CBRS_ style is made up of an alignment style and a draw border style
+// the alignment styles are mutually exclusive
+// the draw border styles may be combined
+#define CBRS_NOALIGN 0x00000000L
+#define CBRS_LEFT (CBRS_ALIGN_LEFT|CBRS_BORDER_RIGHT)
+#define CBRS_TOP (CBRS_ALIGN_TOP|CBRS_BORDER_BOTTOM)
+#define CBRS_RIGHT (CBRS_ALIGN_RIGHT|CBRS_BORDER_LEFT)
+#define CBRS_BOTTOM (CBRS_ALIGN_BOTTOM|CBRS_BORDER_TOP)
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard window components
+
+// Mode indicators in status bar - these are routed like commands
+#define ID_INDICATOR_EXT 0xE700 // extended selection indicator
+#define ID_INDICATOR_CAPS 0xE701 // cap lock indicator
+#define ID_INDICATOR_NUM 0xE702 // num lock indicator
+#define ID_INDICATOR_SCRL 0xE703 // scroll lock indicator
+#define ID_INDICATOR_OVR 0xE704 // overtype mode indicator
+#define ID_INDICATOR_REC 0xE705 // record mode indicator
+#define ID_INDICATOR_KANA 0xE706 // kana lock indicator
+
+#define ID_SEPARATOR 0 // special separator value
+
+#ifndef RC_INVOKED // code only
+// Standard control bars (IDW = window ID)
+#define AFX_IDW_CONTROLBAR_FIRST 0xE800
+#define AFX_IDW_CONTROLBAR_LAST 0xE8FF
+
+#define AFX_IDW_TOOLBAR 0xE800 // main Toolbar for window
+#define AFX_IDW_STATUS_BAR 0xE801 // Status bar window
+#define AFX_IDW_PREVIEW_BAR 0xE802 // PrintPreview Dialog Bar
+#define AFX_IDW_RESIZE_BAR 0xE803 // OLE in-place resize bar
+
+// Note: If your application supports docking toolbars, you should
+// not use the following IDs for your own toolbars. The IDs chosen
+// are at the top of the first 32 such that the bars will be hidden
+// while in print preview mode, and are not likely to conflict with
+// IDs your application may have used succesfully in the past.
+
+#define AFX_IDW_DOCKBAR_TOP 0xE81B
+#define AFX_IDW_DOCKBAR_LEFT 0xE81C
+#define AFX_IDW_DOCKBAR_RIGHT 0xE81D
+#define AFX_IDW_DOCKBAR_BOTTOM 0xE81E
+#define AFX_IDW_DOCKBAR_FLOAT 0xE81F
+
+// Macro for mapping standard control bars to bitmask (limit of 32)
+#define AFX_CONTROLBAR_MASK(nIDC) (1L << (nIDC - AFX_IDW_CONTROLBAR_FIRST))
+
+// parts of Main Frame
+#define AFX_IDW_PANE_FIRST 0xE900 // first pane (256 max)
+#define AFX_IDW_PANE_LAST 0xE9ff
+#define AFX_IDW_HSCROLL_FIRST 0xEA00 // first Horz scrollbar (16 max)
+#define AFX_IDW_VSCROLL_FIRST 0xEA10 // first Vert scrollbar (16 max)
+
+#define AFX_IDW_SIZE_BOX 0xEA20 // size box for splitters
+#define AFX_IDW_PANE_SAVE 0xEA21 // to shift AFX_IDW_PANE_FIRST
+#endif //!RC_INVOKED
+
+#ifndef APSTUDIO_INVOKED
+
+// common style for form views
+#define AFX_WS_DEFAULT_VIEW (WS_CHILD | WS_VISIBLE | WS_BORDER)
+
+#endif //!APSTUDIO_INVOKED
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard app configurable strings
+
+// for application title (defaults to EXE name or name in constructor)
+#define AFX_IDS_APP_TITLE 0xE000
+// idle message bar line
+#define AFX_IDS_IDLEMESSAGE 0xE001
+// message bar line when in shift-F1 help mode
+#define AFX_IDS_HELPMODEMESSAGE 0xE002
+// document title when editing OLE embedding
+#define AFX_IDS_APP_TITLE_EMBEDDING 0xE003
+// company name
+#define AFX_IDS_COMPANY_NAME 0xE004
+// object name when server is inplace
+#define AFX_IDS_OBJ_TITLE_INPLACE 0xE005
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Commands
+
+// File commands
+#define ID_FILE_NEW 0xE100
+#define ID_FILE_OPEN 0xE101
+#define ID_FILE_CLOSE 0xE102
+#define ID_FILE_SAVE 0xE103
+#define ID_FILE_SAVE_AS 0xE104
+#define ID_FILE_PAGE_SETUP 0xE105
+#define ID_FILE_PRINT_SETUP 0xE106
+#define ID_FILE_PRINT 0xE107
+#define ID_FILE_PRINT_DIRECT 0xE108
+#define ID_FILE_PRINT_PREVIEW 0xE109
+#define ID_FILE_UPDATE 0xE10A
+#define ID_FILE_SAVE_COPY_AS 0xE10B
+#define ID_FILE_SEND_MAIL 0xE10C
+
+#define ID_FILE_MRU_FIRST 0xE110
+#define ID_FILE_MRU_FILE1 0xE110 // range - 16 max
+#define ID_FILE_MRU_FILE2 0xE111
+#define ID_FILE_MRU_FILE3 0xE112
+#define ID_FILE_MRU_FILE4 0xE113
+#define ID_FILE_MRU_FILE5 0xE114
+#define ID_FILE_MRU_FILE6 0xE115
+#define ID_FILE_MRU_FILE7 0xE116
+#define ID_FILE_MRU_FILE8 0xE117
+#define ID_FILE_MRU_FILE9 0xE118
+#define ID_FILE_MRU_FILE10 0xE119
+#define ID_FILE_MRU_FILE11 0xE11A
+#define ID_FILE_MRU_FILE12 0xE11B
+#define ID_FILE_MRU_FILE13 0xE11C
+#define ID_FILE_MRU_FILE14 0xE11D
+#define ID_FILE_MRU_FILE15 0xE11E
+#define ID_FILE_MRU_FILE16 0xE11F
+#define ID_FILE_MRU_LAST 0xE11F
+
+// Edit commands
+#define ID_EDIT_CLEAR 0xE120
+#define ID_EDIT_CLEAR_ALL 0xE121
+#define ID_EDIT_COPY 0xE122
+#define ID_EDIT_CUT 0xE123
+#define ID_EDIT_FIND 0xE124
+#define ID_EDIT_PASTE 0xE125
+#define ID_EDIT_PASTE_LINK 0xE126
+#define ID_EDIT_PASTE_SPECIAL 0xE127
+#define ID_EDIT_REPEAT 0xE128
+#define ID_EDIT_REPLACE 0xE129
+#define ID_EDIT_SELECT_ALL 0xE12A
+#define ID_EDIT_UNDO 0xE12B
+#define ID_EDIT_REDO 0xE12C
+
+// Window commands
+#define ID_WINDOW_NEW 0xE130
+#define ID_WINDOW_ARRANGE 0xE131
+#define ID_WINDOW_CASCADE 0xE132
+#define ID_WINDOW_TILE_HORZ 0xE133
+#define ID_WINDOW_TILE_VERT 0xE134
+#define ID_WINDOW_SPLIT 0xE135
+#ifndef RC_INVOKED // code only
+#define AFX_IDM_WINDOW_FIRST 0xE130
+#define AFX_IDM_WINDOW_LAST 0xE13F
+#define AFX_IDM_FIRST_MDICHILD 0xFF00 // window list starts here
+#endif //!RC_INVOKED
+
+// Help and App commands
+#define ID_APP_ABOUT 0xE140
+#define ID_APP_EXIT 0xE141
+#define ID_HELP_INDEX 0xE142
+#define ID_HELP_FINDER 0xE143
+#define ID_HELP_USING 0xE144
+#define ID_CONTEXT_HELP 0xE145 // shift-F1
+// special commands for processing help
+#define ID_HELP 0xE146 // first attempt for F1
+#define ID_DEFAULT_HELP 0xE147 // last attempt
+
+// Misc
+#define ID_NEXT_PANE 0xE150
+#define ID_PREV_PANE 0xE151
+
+// Format
+#define ID_FORMAT_FONT 0xE160
+
+// OLE commands
+#define ID_OLE_INSERT_NEW 0xE200
+#define ID_OLE_EDIT_LINKS 0xE201
+#define ID_OLE_EDIT_CONVERT 0xE202
+#define ID_OLE_EDIT_CHANGE_ICON 0xE203
+#define ID_OLE_EDIT_PROPERTIES 0xE204
+#define ID_OLE_VERB_FIRST 0xE210 // range - 16 max
+#ifndef RC_INVOKED // code only
+#define ID_OLE_VERB_LAST 0xE21F
+#endif //!RC_INVOKED
+
+// for print preview dialog bar
+#define AFX_ID_PREVIEW_CLOSE 0xE300
+#define AFX_ID_PREVIEW_NUMPAGE 0xE301 // One/Two Page button
+#define AFX_ID_PREVIEW_NEXT 0xE302
+#define AFX_ID_PREVIEW_PREV 0xE303
+#define AFX_ID_PREVIEW_PRINT 0xE304
+#define AFX_ID_PREVIEW_ZOOMIN 0xE305
+#define AFX_ID_PREVIEW_ZOOMOUT 0xE306
+
+// View commands (same number used as IDW used for control bar)
+#define ID_VIEW_TOOLBAR 0xE800
+#define ID_VIEW_STATUS_BAR 0xE801
+ // -> E8FF reserved for other control bar commands
+
+// RecordForm commands
+#define ID_RECORD_FIRST 0xE900
+#define ID_RECORD_LAST 0xE901
+#define ID_RECORD_NEXT 0xE902
+#define ID_RECORD_PREV 0xE903
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard control IDs
+
+#ifdef IDC_STATIC
+#undef IDC_STATIC
+#endif
+#define IDC_STATIC (-1) // all static controls
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard string error/warnings
+
+#ifndef RC_INVOKED // code only
+#define AFX_IDS_SCFIRST 0xEF00
+#endif //!RC_INVOKED
+
+#define AFX_IDS_SCSIZE 0xEF00
+#define AFX_IDS_SCMOVE 0xEF01
+#define AFX_IDS_SCMINIMIZE 0xEF02
+#define AFX_IDS_SCMAXIMIZE 0xEF03
+#define AFX_IDS_SCNEXTWINDOW 0xEF04
+#define AFX_IDS_SCPREVWINDOW 0xEF05
+#define AFX_IDS_SCCLOSE 0xEF06
+#define AFX_IDS_SCRESTORE 0xEF12
+#define AFX_IDS_SCTASKLIST 0xEF13
+
+#define AFX_IDS_MDICHILD 0xEF1F
+
+#define AFX_IDS_DESKACCESSORY 0xEFDA
+
+// General strings
+#define AFX_IDS_OPENFILE 0xF000
+#define AFX_IDS_SAVEFILE 0xF001
+#define AFX_IDS_ALLFILTER 0xF002
+#define AFX_IDS_UNTITLED 0xF003
+#define AFX_IDS_SAVEFILECOPY 0xF004
+#define AFX_IDS_PREVIEW_CLOSE 0xF005
+#define AFX_IDS_UNNAMED_FILE 0xF006
+#ifdef _MAC
+#define AFX_IDS_ABOUT 0xF010
+#endif
+#define AFX_IDS_HIDE 0xF011
+
+// MFC Standard Exception Error messages
+#define AFX_IDP_NO_ERROR_AVAILABLE 0xF020
+#define AFX_IDS_NOT_SUPPORTED_EXCEPTION 0xF021
+#define AFX_IDS_RESOURCE_EXCEPTION 0xF022
+#define AFX_IDS_MEMORY_EXCEPTION 0xF023
+#define AFX_IDS_USER_EXCEPTION 0xF024
+
+// Printing and print preview strings
+#define AFX_IDS_PRINTONPORT 0xF040
+#define AFX_IDS_ONEPAGE 0xF041
+#define AFX_IDS_TWOPAGE 0xF042
+#define AFX_IDS_PRINTPAGENUM 0xF043
+#define AFX_IDS_PREVIEWPAGEDESC 0xF044
+#define AFX_IDS_PRINTDEFAULTEXT 0xF045
+#define AFX_IDS_PRINTDEFAULT 0xF046
+#define AFX_IDS_PRINTFILTER 0xF047
+#define AFX_IDS_PRINTCAPTION 0xF048
+#define AFX_IDS_PRINTTOFILE 0xF049
+
+
+// OLE strings
+#define AFX_IDS_OBJECT_MENUITEM 0xF080
+#define AFX_IDS_EDIT_VERB 0xF081
+#define AFX_IDS_ACTIVATE_VERB 0xF082
+#define AFX_IDS_CHANGE_LINK 0xF083
+#define AFX_IDS_AUTO 0xF084
+#define AFX_IDS_MANUAL 0xF085
+#define AFX_IDS_FROZEN 0xF086
+#define AFX_IDS_ALL_FILES 0xF087
+// dynamically changing menu items
+#define AFX_IDS_SAVE_MENU 0xF088
+#define AFX_IDS_UPDATE_MENU 0xF089
+#define AFX_IDS_SAVE_AS_MENU 0xF08A
+#define AFX_IDS_SAVE_COPY_AS_MENU 0xF08B
+#define AFX_IDS_EXIT_MENU 0xF08C
+#define AFX_IDS_UPDATING_ITEMS 0xF08D
+// COlePasteSpecialDialog defines
+#define AFX_IDS_METAFILE_FORMAT 0xF08E
+#define AFX_IDS_DIB_FORMAT 0xF08F
+#define AFX_IDS_BITMAP_FORMAT 0xF090
+#define AFX_IDS_LINKSOURCE_FORMAT 0xF091
+#define AFX_IDS_EMBED_FORMAT 0xF092
+// other OLE utility strings
+#define AFX_IDS_PASTELINKEDTYPE 0xF094
+#define AFX_IDS_UNKNOWNTYPE 0xF095
+#define AFX_IDS_RTF_FORMAT 0xF096
+#define AFX_IDS_TEXT_FORMAT 0xF097
+// OLE datatype format error strings
+#define AFX_IDS_INVALID_CURRENCY 0xF098
+#define AFX_IDS_INVALID_DATETIME 0xF099
+#define AFX_IDS_INVALID_DATETIMESPAN 0xF09A
+
+// General error / prompt strings
+#define AFX_IDP_INVALID_FILENAME 0xF100
+#define AFX_IDP_FAILED_TO_OPEN_DOC 0xF101
+#define AFX_IDP_FAILED_TO_SAVE_DOC 0xF102
+#define AFX_IDP_ASK_TO_SAVE 0xF103
+#define AFX_IDP_FAILED_TO_CREATE_DOC 0xF104
+#define AFX_IDP_FILE_TOO_LARGE 0xF105
+#define AFX_IDP_FAILED_TO_START_PRINT 0xF106
+#define AFX_IDP_FAILED_TO_LAUNCH_HELP 0xF107
+#define AFX_IDP_INTERNAL_FAILURE 0xF108 // general failure
+#define AFX_IDP_COMMAND_FAILURE 0xF109 // command failure
+#define AFX_IDP_FAILED_MEMORY_ALLOC 0xF10A
+
+// DDV parse errors
+#define AFX_IDP_PARSE_INT 0xF110
+#define AFX_IDP_PARSE_REAL 0xF111
+#define AFX_IDP_PARSE_INT_RANGE 0xF112
+#define AFX_IDP_PARSE_REAL_RANGE 0xF113
+#define AFX_IDP_PARSE_STRING_SIZE 0xF114
+#define AFX_IDP_PARSE_RADIO_BUTTON 0xF115
+#define AFX_IDP_PARSE_BYTE 0xF116
+#define AFX_IDP_PARSE_UINT 0xF117
+#define AFX_IDP_PARSE_DATETIME 0xF118
+#define AFX_IDP_PARSE_CURRENCY 0xF119
+
+// CFile/CArchive error strings for user failure
+#define AFX_IDP_FAILED_INVALID_FORMAT 0xF120
+#define AFX_IDP_FAILED_INVALID_PATH 0xF121
+#define AFX_IDP_FAILED_DISK_FULL 0xF122
+#define AFX_IDP_FAILED_ACCESS_READ 0xF123
+#define AFX_IDP_FAILED_ACCESS_WRITE 0xF124
+#define AFX_IDP_FAILED_IO_ERROR_READ 0xF125
+#define AFX_IDP_FAILED_IO_ERROR_WRITE 0xF126
+
+// OLE errors / prompt strings
+#define AFX_IDP_STATIC_OBJECT 0xF180
+#define AFX_IDP_FAILED_TO_CONNECT 0xF181
+#define AFX_IDP_SERVER_BUSY 0xF182
+#define AFX_IDP_BAD_VERB 0xF183
+#define AFX_IDP_FAILED_TO_NOTIFY 0xF185
+#define AFX_IDP_FAILED_TO_LAUNCH 0xF186
+#define AFX_IDP_ASK_TO_UPDATE 0xF187
+#define AFX_IDP_FAILED_TO_UPDATE 0xF188
+#define AFX_IDP_FAILED_TO_REGISTER 0xF189
+#define AFX_IDP_FAILED_TO_AUTO_REGISTER 0xF18A
+#define AFX_IDP_FAILED_TO_CONVERT 0xF18B
+#define AFX_IDP_GET_NOT_SUPPORTED 0xF18C
+#define AFX_IDP_SET_NOT_SUPPORTED 0xF18D
+#define AFX_IDP_ASK_TO_DISCARD 0xF18E
+#define AFX_IDP_FAILED_TO_CREATE 0xF18F
+
+// MAPI errors / prompt strings
+#define AFX_IDP_FAILED_MAPI_LOAD 0xF190
+#define AFX_IDP_INVALID_MAPI_DLL 0xF191
+#define AFX_IDP_FAILED_MAPI_SEND 0xF192
+
+#define AFX_IDP_FILE_NONE 0xF1A0
+#define AFX_IDP_FILE_GENERIC 0xF1A1
+#define AFX_IDP_FILE_NOT_FOUND 0xF1A2
+#define AFX_IDP_FILE_BAD_PATH 0xF1A3
+#define AFX_IDP_FILE_TOO_MANY_OPEN 0xF1A4
+#define AFX_IDP_FILE_ACCESS_DENIED 0xF1A5
+#define AFX_IDP_FILE_INVALID_FILE 0xF1A6
+#define AFX_IDP_FILE_REMOVE_CURRENT 0xF1A7
+#define AFX_IDP_FILE_DIR_FULL 0xF1A8
+#define AFX_IDP_FILE_BAD_SEEK 0xF1A9
+#define AFX_IDP_FILE_HARD_IO 0xF1AA
+#define AFX_IDP_FILE_SHARING 0xF1AB
+#define AFX_IDP_FILE_LOCKING 0xF1AC
+#define AFX_IDP_FILE_DISKFULL 0xF1AD
+#define AFX_IDP_FILE_EOF 0xF1AE
+
+#define AFX_IDP_ARCH_NONE 0xF1B0
+#define AFX_IDP_ARCH_GENERIC 0xF1B1
+#define AFX_IDP_ARCH_READONLY 0xF1B2
+#define AFX_IDP_ARCH_ENDOFFILE 0xF1B3
+#define AFX_IDP_ARCH_WRITEONLY 0xF1B4
+#define AFX_IDP_ARCH_BADINDEX 0xF1B5
+#define AFX_IDP_ARCH_BADCLASS 0xF1B6
+#define AFX_IDP_ARCH_BADSCHEMA 0xF1B7
+
+#define AFX_IDS_OCC_SCALEUNITS_PIXELS 0xF1C0
+
+// 0xf200-0xf20f reserved
+
+// font names and point sizes
+#define AFX_IDS_STATUS_FONT 0xF230
+#define AFX_IDS_TOOLTIP_FONT 0xF231
+#define AFX_IDS_UNICODE_FONT 0xF232
+#define AFX_IDS_MINI_FONT 0xF233
+
+// ODBC Database errors / prompt strings
+#ifndef RC_INVOKED // code only
+#define AFX_IDP_SQL_FIRST 0xF280
+#endif //!RC_INVOKED
+#define AFX_IDP_SQL_CONNECT_FAIL 0xF281
+#define AFX_IDP_SQL_RECORDSET_FORWARD_ONLY 0xF282
+#define AFX_IDP_SQL_EMPTY_COLUMN_LIST 0xF283
+#define AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH 0xF284
+#define AFX_IDP_SQL_ILLEGAL_MODE 0xF285
+#define AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED 0xF286
+#define AFX_IDP_SQL_NO_CURRENT_RECORD 0xF287
+#define AFX_IDP_SQL_NO_ROWS_AFFECTED 0xF288
+#define AFX_IDP_SQL_RECORDSET_READONLY 0xF289
+#define AFX_IDP_SQL_SQL_NO_TOTAL 0xF28A
+#define AFX_IDP_SQL_ODBC_LOAD_FAILED 0xF28B
+#define AFX_IDP_SQL_DYNASET_NOT_SUPPORTED 0xF28C
+#define AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED 0xF28D
+#define AFX_IDP_SQL_API_CONFORMANCE 0xF28E
+#define AFX_IDP_SQL_SQL_CONFORMANCE 0xF28F
+#define AFX_IDP_SQL_NO_DATA_FOUND 0xF290
+#define AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED 0xF291
+#define AFX_IDP_SQL_ODBC_V2_REQUIRED 0xF292
+#define AFX_IDP_SQL_NO_POSITIONED_UPDATES 0xF293
+#define AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED 0xF294
+#define AFX_IDP_SQL_DATA_TRUNCATED 0xF295
+#define AFX_IDP_SQL_ROW_FETCH 0xF296
+#define AFX_IDP_SQL_INCORRECT_ODBC 0xF297
+#define AFX_IDP_SQL_UPDATE_DELETE_FAILED 0xF298
+#define AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED 0xF299
+
+// DAO Database errors / prompt strings
+#ifndef RC_INVOKED // code only
+#define AFX_IDP_DAO_FIRST 0xF2A0
+#endif //!RC_INVOKED
+#define AFX_IDP_DAO_ENGINE_INITIALIZATION 0xF2A0
+#define AFX_IDP_DAO_DFX_BIND 0xF2A1
+#define AFX_IDP_DAO_OBJECT_NOT_OPEN 0xF2A2
+
+// ICDAORecordset::GetRows Errors
+// These are not placed in DAO Errors collection
+// and must be handled directly by MFC.
+#define AFX_IDP_DAO_ROWTOOSHORT 0xF2A3
+#define AFX_IDP_DAO_BADBINDINFO 0xF2A4
+#define AFX_IDP_DAO_COLUMNUNAVAILABLE 0xF2A5
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings for ISAPI support
+
+#define AFX_IDS_HTTP_TITLE 0xF2D1
+#define AFX_IDS_HTTP_NO_TEXT 0xF2D2
+#define AFX_IDS_HTTP_BAD_REQUEST 0xF2D3
+#define AFX_IDS_HTTP_AUTH_REQUIRED 0xF2D4
+#define AFX_IDS_HTTP_FORBIDDEN 0xF2D5
+#define AFX_IDS_HTTP_NOT_FOUND 0xF2D6
+#define AFX_IDS_HTTP_SERVER_ERROR 0xF2D7
+#define AFX_IDS_HTTP_NOT_IMPLEMENTED 0xF2D8
+
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX implementation - control IDs (AFX_IDC)
+
+// Parts of dialogs
+#define AFX_IDC_LISTBOX 100
+#define AFX_IDC_CHANGE 101
+
+// for print dialog
+#define AFX_IDC_PRINT_DOCNAME 201
+#define AFX_IDC_PRINT_PRINTERNAME 202
+#define AFX_IDC_PRINT_PORTNAME 203
+#define AFX_IDC_PRINT_PAGENUM 204
+
+// Property Sheet control id's (determined with Spy++)
+#define ID_APPLY_NOW 0x3021
+#define ID_WIZBACK 0x3023
+#define ID_WIZNEXT 0x3024
+#define ID_WIZFINISH 0x3025
+#define AFX_IDC_TAB_CONTROL 0x3020
+
+/////////////////////////////////////////////////////////////////////////////
+// IDRs for standard components
+
+#ifndef RC_INVOKED // code only
+// These are really COMMDLG dialogs, so there usually isn't a resource
+// for them, but these IDs are used as help IDs.
+#define AFX_IDD_FILEOPEN 28676
+#define AFX_IDD_FILESAVE 28677
+#define AFX_IDD_FONT 28678
+#define AFX_IDD_COLOR 28679
+#define AFX_IDD_PRINT 28680
+#define AFX_IDD_PRINTSETUP 28681
+#define AFX_IDD_FIND 28682
+#define AFX_IDD_REPLACE 28683
+#endif //!RC_INVOKED
+
+// Standard dialogs app should leave alone (0x7801->)
+#define AFX_IDD_NEWTYPEDLG 30721
+#define AFX_IDD_PRINTDLG 30722
+#define AFX_IDD_PREVIEW_TOOLBAR 30723
+#ifdef _MAC
+#define AFX_IDD_PREVIEW_SHORTTOOLBAR 30731
+#endif
+
+// Dialogs defined for OLE2UI library
+#define AFX_IDD_INSERTOBJECT 30724
+#define AFX_IDD_CHANGEICON 30725
+#define AFX_IDD_CONVERT 30726
+#define AFX_IDD_PASTESPECIAL 30727
+#define AFX_IDD_EDITLINKS 30728
+#define AFX_IDD_FILEBROWSE 30729
+#define AFX_IDD_BUSY 30730
+
+#define AFX_IDD_OBJECTPROPERTIES 30732
+#define AFX_IDD_CHANGESOURCE 30733
+
+// Standard cursors (0x7901->)
+ // AFX_IDC = Cursor resources
+#define AFX_IDC_CONTEXTHELP 30977 // context sensitive help
+#define AFX_IDC_MAGNIFY 30978 // print preview zoom
+#define AFX_IDC_SMALLARROWS 30979 // splitter
+#define AFX_IDC_HSPLITBAR 30980 // splitter
+#define AFX_IDC_VSPLITBAR 30981 // splitter
+#define AFX_IDC_NODROPCRSR 30982 // No Drop Cursor
+#define AFX_IDC_TRACKNWSE 30983 // tracker
+#define AFX_IDC_TRACKNESW 30984 // tracker
+#define AFX_IDC_TRACKNS 30985 // tracker
+#define AFX_IDC_TRACKWE 30986 // tracker
+#define AFX_IDC_TRACK4WAY 30987 // tracker
+#define AFX_IDC_MOVE4WAY 30988 // resize bar (server only)
+
+// Mini frame window bitmap ID
+#define AFX_IDB_MINIFRAME_MENU 30994
+
+// CheckListBox checks bitmap ID
+#define AFX_IDB_CHECKLISTBOX_NT 30995
+#define AFX_IDB_CHECKLISTBOX_95 30996
+
+// AFX standard accelerator resources
+#define AFX_IDR_PREVIEW_ACCEL 30997
+
+// AFX standard ICON IDs (for MFC V1 apps) (0x7A01->)
+#define AFX_IDI_STD_MDIFRAME 31233
+#define AFX_IDI_STD_FRAME 31234
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX OLE control implementation - control IDs (AFX_IDC)
+
+// Font property page
+#define AFX_IDC_FONTPROP 1000
+#define AFX_IDC_FONTNAMES 1001
+#define AFX_IDC_FONTSTYLES 1002
+#define AFX_IDC_FONTSIZES 1003
+#define AFX_IDC_STRIKEOUT 1004
+#define AFX_IDC_UNDERLINE 1005
+#define AFX_IDC_SAMPLEBOX 1006
+
+// Color property page
+#define AFX_IDC_COLOR_BLACK 1100
+#define AFX_IDC_COLOR_WHITE 1101
+#define AFX_IDC_COLOR_RED 1102
+#define AFX_IDC_COLOR_GREEN 1103
+#define AFX_IDC_COLOR_BLUE 1104
+#define AFX_IDC_COLOR_YELLOW 1105
+#define AFX_IDC_COLOR_MAGENTA 1106
+#define AFX_IDC_COLOR_CYAN 1107
+#define AFX_IDC_COLOR_GRAY 1108
+#define AFX_IDC_COLOR_LIGHTGRAY 1109
+#define AFX_IDC_COLOR_DARKRED 1110
+#define AFX_IDC_COLOR_DARKGREEN 1111
+#define AFX_IDC_COLOR_DARKBLUE 1112
+#define AFX_IDC_COLOR_LIGHTBROWN 1113
+#define AFX_IDC_COLOR_DARKMAGENTA 1114
+#define AFX_IDC_COLOR_DARKCYAN 1115
+#define AFX_IDC_COLORPROP 1116
+#define AFX_IDC_SYSTEMCOLORS 1117
+
+// Picture porperty page
+#define AFX_IDC_PROPNAME 1201
+#define AFX_IDC_PICTURE 1202
+#define AFX_IDC_BROWSE 1203
+#define AFX_IDC_CLEAR 1204
+
+/////////////////////////////////////////////////////////////////////////////
+// IDRs for OLE control standard components
+
+// Standard propery page dialogs app should leave alone (0x7E01->)
+#define AFX_IDD_PROPPAGE_COLOR 32257
+#define AFX_IDD_PROPPAGE_FONT 32258
+#define AFX_IDD_PROPPAGE_PICTURE 32259
+
+#define AFX_IDB_TRUETYPE 32384
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard OLE control strings
+
+// OLE Control page strings
+#define AFX_IDS_PROPPAGE_UNKNOWN 0xFE01
+#define AFX_IDS_COLOR_DESKTOP 0xFE04
+#define AFX_IDS_COLOR_APPWORKSPACE 0xFE05
+#define AFX_IDS_COLOR_WNDBACKGND 0xFE06
+#define AFX_IDS_COLOR_WNDTEXT 0xFE07
+#define AFX_IDS_COLOR_MENUBAR 0xFE08
+#define AFX_IDS_COLOR_MENUTEXT 0xFE09
+#define AFX_IDS_COLOR_ACTIVEBAR 0xFE0A
+#define AFX_IDS_COLOR_INACTIVEBAR 0xFE0B
+#define AFX_IDS_COLOR_ACTIVETEXT 0xFE0C
+#define AFX_IDS_COLOR_INACTIVETEXT 0xFE0D
+#define AFX_IDS_COLOR_ACTIVEBORDER 0xFE0E
+#define AFX_IDS_COLOR_INACTIVEBORDER 0xFE0F
+#define AFX_IDS_COLOR_WNDFRAME 0xFE10
+#define AFX_IDS_COLOR_SCROLLBARS 0xFE11
+#define AFX_IDS_COLOR_BTNFACE 0xFE12
+#define AFX_IDS_COLOR_BTNSHADOW 0xFE13
+#define AFX_IDS_COLOR_BTNTEXT 0xFE14
+#define AFX_IDS_COLOR_BTNHIGHLIGHT 0xFE15
+#define AFX_IDS_COLOR_DISABLEDTEXT 0xFE16
+#define AFX_IDS_COLOR_HIGHLIGHT 0xFE17
+#define AFX_IDS_COLOR_HIGHLIGHTTEXT 0xFE18
+#define AFX_IDS_REGULAR 0xFE19
+#define AFX_IDS_BOLD 0xFE1A
+#define AFX_IDS_ITALIC 0xFE1B
+#define AFX_IDS_BOLDITALIC 0xFE1C
+#define AFX_IDS_SAMPLETEXT 0xFE1D
+#define AFX_IDS_DISPLAYSTRING_FONT 0xFE1E
+#define AFX_IDS_DISPLAYSTRING_COLOR 0xFE1F
+#define AFX_IDS_DISPLAYSTRING_PICTURE 0xFE20
+#define AFX_IDS_PICTUREFILTER 0xFE21
+#define AFX_IDS_PICTYPE_UNKNOWN 0xFE22
+#define AFX_IDS_PICTYPE_NONE 0xFE23
+#define AFX_IDS_PICTYPE_BITMAP 0xFE24
+#define AFX_IDS_PICTYPE_METAFILE 0xFE25
+#define AFX_IDS_PICTYPE_ICON 0xFE26
+#define AFX_IDS_COLOR_PPG 0xFE28
+#define AFX_IDS_COLOR_PPG_CAPTION 0xFE29
+#define AFX_IDS_FONT_PPG 0xFE2A
+#define AFX_IDS_FONT_PPG_CAPTION 0xFE2B
+#define AFX_IDS_PICTURE_PPG 0xFE2C
+#define AFX_IDS_PICTURE_PPG_CAPTION 0xFE2D
+#define AFX_IDS_PICTUREBROWSETITLE 0xFE30
+#define AFX_IDS_BORDERSTYLE_0 0xFE31
+#define AFX_IDS_BORDERSTYLE_1 0xFE32
+
+// OLE Control verb names
+#define AFX_IDS_VERB_EDIT 0xFE40
+#define AFX_IDS_VERB_PROPERTIES 0xFE41
+
+// OLE Control internal error messages
+#define AFX_IDP_PICTURECANTOPEN 0xFE83
+#define AFX_IDP_PICTURECANTLOAD 0xFE84
+#define AFX_IDP_PICTURETOOLARGE 0xFE85
+#define AFX_IDP_PICTUREREADFAILED 0xFE86
+
+// Standard OLE Control error strings
+#define AFX_IDP_E_ILLEGALFUNCTIONCALL 0xFEA0
+#define AFX_IDP_E_OVERFLOW 0xFEA1
+#define AFX_IDP_E_OUTOFMEMORY 0xFEA2
+#define AFX_IDP_E_DIVISIONBYZERO 0xFEA3
+#define AFX_IDP_E_OUTOFSTRINGSPACE 0xFEA4
+#define AFX_IDP_E_OUTOFSTACKSPACE 0xFEA5
+#define AFX_IDP_E_BADFILENAMEORNUMBER 0xFEA6
+#define AFX_IDP_E_FILENOTFOUND 0xFEA7
+#define AFX_IDP_E_BADFILEMODE 0xFEA8
+#define AFX_IDP_E_FILEALREADYOPEN 0xFEA9
+#define AFX_IDP_E_DEVICEIOERROR 0xFEAA
+#define AFX_IDP_E_FILEALREADYEXISTS 0xFEAB
+#define AFX_IDP_E_BADRECORDLENGTH 0xFEAC
+#define AFX_IDP_E_DISKFULL 0xFEAD
+#define AFX_IDP_E_BADRECORDNUMBER 0xFEAE
+#define AFX_IDP_E_BADFILENAME 0xFEAF
+#define AFX_IDP_E_TOOMANYFILES 0xFEB0
+#define AFX_IDP_E_DEVICEUNAVAILABLE 0xFEB1
+#define AFX_IDP_E_PERMISSIONDENIED 0xFEB2
+#define AFX_IDP_E_DISKNOTREADY 0xFEB3
+#define AFX_IDP_E_PATHFILEACCESSERROR 0xFEB4
+#define AFX_IDP_E_PATHNOTFOUND 0xFEB5
+#define AFX_IDP_E_INVALIDPATTERNSTRING 0xFEB6
+#define AFX_IDP_E_INVALIDUSEOFNULL 0xFEB7
+#define AFX_IDP_E_INVALIDFILEFORMAT 0xFEB8
+#define AFX_IDP_E_INVALIDPROPERTYVALUE 0xFEB9
+#define AFX_IDP_E_INVALIDPROPERTYARRAYINDEX 0xFEBA
+#define AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME 0xFEBB
+#define AFX_IDP_E_SETNOTSUPPORTED 0xFEBC
+#define AFX_IDP_E_NEEDPROPERTYARRAYINDEX 0xFEBD
+#define AFX_IDP_E_SETNOTPERMITTED 0xFEBE
+#define AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME 0xFEBF
+#define AFX_IDP_E_GETNOTSUPPORTED 0xFEC0
+#define AFX_IDP_E_PROPERTYNOTFOUND 0xFEC1
+#define AFX_IDP_E_INVALIDCLIPBOARDFORMAT 0xFEC2
+#define AFX_IDP_E_INVALIDPICTURE 0xFEC3
+#define AFX_IDP_E_PRINTERERROR 0xFEC4
+#define AFX_IDP_E_CANTSAVEFILETOTEMP 0xFEC5
+#define AFX_IDP_E_SEARCHTEXTNOTFOUND 0xFEC6
+#define AFX_IDP_E_REPLACEMENTSTOOLONG 0xFEC7
+
+
+
+
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+
+#endif //__AFXRES_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxres.rc b/public/sdk/inc/mfc40/afxres.rc
new file mode 100644
index 000000000..2888a4da3
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxres.rc
@@ -0,0 +1,211 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_OPENFILE, "Open"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Save As"
+ AFX_IDS_ALLFILTER, "All Files (*.*)"
+ AFX_IDS_UNTITLED, "Untitled"
+#else
+ AFX_IDS_SAVEFILE, "Save document as:"
+ AFX_IDS_ALLFILTER, "All Files"
+ AFX_IDS_UNTITLED, "untitled"
+ AFX_IDS_UNNAMED_FILE, "an unnamed file"
+ AFX_IDS_ABOUT, "About %1\205"
+#endif
+ AFX_IDS_HIDE, "&Hide"
+
+ AFX_IDS_MEMORY_EXCEPTION, "Out of memory."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"An unsupported operation was attempted."
+ AFX_IDS_RESOURCE_EXCEPTION, "A required resource was unavailable."
+ AFX_IDS_USER_EXCEPTION, "An unknown error has occurred."
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "Invalid filename."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Failed to open document."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Failed to save document."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Save changes to %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Save changes to the %1 document \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Failed to create empty document."
+ AFX_IDP_FILE_TOO_LARGE, "The file is too large to open."
+ AFX_IDP_FAILED_TO_START_PRINT, "Could not start print job."
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Failed to launch help."
+ AFX_IDP_INTERNAL_FAILURE, "Internal application error."
+ AFX_IDP_COMMAND_FAILURE, "Command failed."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Insufficient memory to perform operation."
+ AFX_IDP_GET_NOT_SUPPORTED, "Unable to read write-only property."
+ AFX_IDP_SET_NOT_SUPPORTED, "Unable to write read-only property."
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "Unexpected file format."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nCannot find this file.\nPlease verify that the correct path and file name are given."
+ AFX_IDP_FAILED_DISK_FULL "Destination disk drive is full."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Cannot find the file \042%1.\042 Please verify that the correct file name is given."
+ AFX_IDP_FAILED_DISK_FULL "Destination disk is full."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Unable to read from %1, it is opened by someone else."
+ AFX_IDP_FAILED_ACCESS_WRITE "Unable to write to %1, it is read-only or opened by someone else."
+ AFX_IDP_FAILED_IO_ERROR_READ "An unexpected error occurred while reading %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "An unexpected error occurred while writing %1."
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Please enter an integer."
+ AFX_IDP_PARSE_REAL, "Please enter a number."
+ AFX_IDP_PARSE_INT_RANGE, "Please enter an integer between %1 and %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Please enter a number between %1 and %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Please enter no more than %1 characters."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Please select a button."
+ AFX_IDP_PARSE_BYTE, "Please enter an integer between 0 and 255."
+ AFX_IDP_PARSE_UINT, "Please enter a positive integer."
+ AFX_IDP_PARSE_DATETIME, "Please enter a date and/or time."
+ AFX_IDP_PARSE_CURRENCY, "Please enter a currency."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Linked %s"
+ AFX_IDS_UNKNOWNTYPE "Unknown Type"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nUnable to register document.\nThe document may already be open."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Unable to register document \042%1.\042 The document may already be open."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "No error message is available."
+
+ AFX_IDP_FILE_NONE "No error occurred."
+ AFX_IDP_FILE_GENERIC "An unknown error occurred while accessing %1."
+ AFX_IDP_FILE_NOT_FOUND "%1 was not found."
+ AFX_IDP_FILE_BAD_PATH "%1 contains an invalid path."
+ AFX_IDP_FILE_TOO_MANY_OPEN "%1 could not be opened because there are too many open files."
+ AFX_IDP_FILE_ACCESS_DENIED "Access to %1 was denied."
+ AFX_IDP_FILE_INVALID_FILE "An invalid file handle was associated with %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "%1 could not be removed because it is the current directory."
+ AFX_IDP_FILE_DIR_FULL "%1 could not be created because the directory is full."
+ AFX_IDP_FILE_BAD_SEEK "Seek failed on %1"
+ AFX_IDP_FILE_HARD_IO "A hardware I/O error was reported while accessing %1."
+ AFX_IDP_FILE_SHARING "A sharing violation occurred while accessing %1."
+ AFX_IDP_FILE_LOCKING "A locking violation occurred while accessing %1."
+ AFX_IDP_FILE_DISKFULL "Disk full while accessing %1."
+ AFX_IDP_FILE_EOF "An attempt was made to access %1 past its end."
+
+ AFX_IDP_ARCH_NONE "No error occurred."
+ AFX_IDP_ARCH_GENERIC "An unknown error occurred while accessing %1."
+ AFX_IDP_ARCH_READONLY "An attempt was made to write to the reading %1."
+ AFX_IDP_ARCH_ENDOFFILE "An attempt was made to access %1 past its end."
+ AFX_IDP_ARCH_WRITEONLY "An attempt was made to read from the writing %1."
+ AFX_IDP_ARCH_BADINDEX "%1 has a bad format."
+ AFX_IDP_ARCH_BADCLASS "%1 contained an unexpected object."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contains an incorrect schema."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Unable to load mail system support."
+ AFX_IDP_INVALID_MAPI_DLL "Mail system DLL is invalid."
+ AFX_IDP_FAILED_MAPI_SEND "Send Mail failed to send message."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "pixels"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "New"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&New ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Cancel",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Help",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxrich.h b/public/sdk/inc/mfc40/afxrich.h
new file mode 100644
index 000000000..4ce1769a2
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxrich.h
@@ -0,0 +1,471 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRICH_H__
+#define __AFXRICH_H__
+
+#ifdef _AFX_NO_RICHEDIT_SUPPORT
+ #error Windows RichEdit classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+#ifndef _RICHEDIT_
+ #include <richedit.h>
+#endif
+#ifndef _RICHOLE_
+ #include <richole.h>
+ #define _RICHOLE_
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXRICH - MFC RichEdit classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CView
+ //CCtrlView
+ class CRichEditView;// rich text editor view
+
+ //CDocument
+ //COleDocument
+ class CRichEditDoc;
+ //CDocItem
+ //COleClientItem
+ class CRichEditCntrItem;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditView
+
+class _AFX_RICHEDIT_STATE; // private to implementation
+
+class CRichEditView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CRichEditView)
+
+// Construction
+public:
+ CRichEditView();
+
+// Attributes
+public:
+ enum WordWrapType
+ {
+ WrapNone = 0,
+ WrapToWindow = 1,
+ WrapToTargetDevice = 2
+ };
+ int m_nWordWrap;
+ int m_nBulletIndent;
+
+ void SetPaperSize(CSize sizePaper);
+ CSize GetPaperSize() const;
+ void SetMargins(const CRect& rectMargin);
+ CRect GetMargins() const;
+ int GetPrintWidth() const;
+ CRect GetPrintRect() const;
+ CRect GetPageRect() const;
+
+ //formatting
+
+ #ifdef UNICODE
+
+ CHARFORMATA& GetCharFormatSelection();
+ CHARFORMATW& GetCharFormatWSelection();
+ void SetCharFormat(CHARFORMATA cf);
+ void SetCharFormat(CHARFORMATW cf);
+
+ #else
+
+ CHARFORMAT& GetCharFormatSelection();
+ void SetCharFormat(CHARFORMAT cf);
+
+ #endif
+
+ PARAFORMAT& GetParaFormatSelection();
+ void SetParaFormat(PARAFORMAT& pf);
+ CRichEditCntrItem* GetSelectedItem() const;
+ CRichEditCntrItem* GetInPlaceActiveItem() const;
+
+ // CEdit control access
+ CRichEditCtrl& GetRichEditCtrl() const;
+ CRichEditDoc* GetDocument() const;
+
+ // other attributes
+ long GetTextLength() const;
+ static BOOL AFX_CDECL IsRichEditFormat(CLIPFORMAT cf);
+ BOOL CanPaste() const;
+
+// Operations
+public:
+ void AdjustDialogPosition(CDialog* pDlg);
+ HRESULT InsertItem(CRichEditCntrItem* pItem);
+ void InsertFileAsObject(LPCTSTR lpszFileName);
+ BOOL FindText(LPCTSTR lpszFind, BOOL bCase = TRUE, BOOL bWord = TRUE);
+ BOOL FindTextSimple(LPCTSTR lpszFind, BOOL bCase = TRUE,
+ BOOL bWord = TRUE);
+ long PrintInsideRect(CDC* pDC, RECT& rectLayout, long nIndexStart,
+ long nIndexStop, BOOL bOutput);
+ long PrintPage(CDC* pDC, long nIndexStart, long nIndexStop);
+ void DoPaste(COleDataObject& dataobj, CLIPFORMAT cf,
+ HMETAFILEPICT hMetaPict);
+
+// Helpers
+ void OnCharEffect(DWORD dwMask, DWORD dwEffect);
+ void OnUpdateCharEffect(CCmdUI* pCmdUI, DWORD dwMask, DWORD dwEffect) ;
+ void OnParaAlign(WORD wAlign);
+ void OnUpdateParaAlign(CCmdUI* pCmdUI, WORD wAlign);
+
+// Overrideables
+protected:
+ virtual BOOL IsSelected(const CObject* pDocItem) const;
+ virtual void OnInitialUpdate();
+ virtual void OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase, BOOL bWord);
+ virtual void OnReplaceSel(LPCTSTR lpszFind, BOOL bNext, BOOL bCase,
+ BOOL bWord, LPCTSTR lpszReplace);
+ virtual void OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
+ BOOL bCase, BOOL bWord);
+ virtual void OnTextNotFound(LPCTSTR lpszFind);
+ virtual void OnPrinterChanged(const CDC& dcPrinter);
+ virtual void WrapChanged();
+
+// Advanced
+ virtual BOOL OnPasteNativeObject(LPSTORAGE lpStg);
+ virtual HMENU GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE* );
+ virtual HRESULT GetClipboardData(CHARRANGE* lpchrg, DWORD dwReco,
+ LPDATAOBJECT lpRichDataObj, LPDATAOBJECT* lplpdataobj);
+ virtual HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD,
+ BOOL, HGLOBAL);
+
+// Implementation
+public:
+ LPRICHEDITOLE m_lpRichEditOle;
+ CDC m_dcTarget;
+ long m_lInitialSearchPos;
+ UINT m_nPasteType;
+ BOOL m_bFirstSearch;
+
+ void TextNotFound(LPCTSTR lpszFind);
+ BOOL FindText(_AFX_RICHEDIT_STATE* pEditState);
+ BOOL FindTextSimple(_AFX_RICHEDIT_STATE* pEditState);
+ long FindAndSelect(DWORD dwFlags, FINDTEXTEX& ft);
+ void Stream(CArchive& ar, BOOL bSelection);
+ HRESULT GetWindowContext(LPOLEINPLACEFRAME* lplpFrame,
+ LPOLEINPLACEUIWINDOW* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+ HRESULT ShowContainerUI(BOOL b);
+ static DWORD CALLBACK EditStreamCallBack(DWORD dwCookie,
+ LPBYTE pbBuff, LONG cb, LONG *pcb);
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void Serialize(CArchive& ar);
+ virtual void DeleteContents();
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
+
+ static AFX_DATA ULONG lMaxSize; // maximum number of characters supported
+
+protected:
+ CRect m_rectMargin;
+ CSize m_sizePaper;
+ CDWordArray m_aPageStart; // array of starting pages
+ PARAFORMAT m_paraformat;
+ CHARFORMATA m_charformat;
+ BOOL m_bSyncCharFormat;
+ BOOL m_bSyncParaFormat;
+
+ // construction
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ // printing support
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo = NULL);
+ BOOL PaginateTo(CDC* pDC, CPrintInfo* pInfo);
+
+ // find & replace support
+ void OnEditFindReplace(BOOL bFindOnly);
+ BOOL SameAsSelected(LPCTSTR lpszCompare, BOOL bCase, BOOL bWord);
+
+ // special overrides for implementation
+
+ //{{AFX_MSG(CRichEditView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnUpdateNeedSel(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedClip(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedText(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedFind(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
+ afx_msg void OnEditCut();
+ afx_msg void OnEditCopy();
+ afx_msg void OnEditPaste();
+ afx_msg void OnEditClear();
+ afx_msg void OnEditUndo();
+ afx_msg void OnEditSelectAll();
+ afx_msg void OnEditFind();
+ afx_msg void OnEditReplace();
+ afx_msg void OnEditRepeat();
+ afx_msg void OnDestroy();
+ afx_msg void OnEditProperties();
+ afx_msg void OnUpdateEditProperties(CCmdUI* pCmdUI);
+ afx_msg void OnInsertObject();
+ afx_msg void OnCancelEditCntr();
+ afx_msg void OnCharBold();
+ afx_msg void OnUpdateCharBold(CCmdUI* pCmdUI);
+ afx_msg void OnCharItalic();
+ afx_msg void OnUpdateCharItalic(CCmdUI* pCmdUI);
+ afx_msg void OnCharUnderline();
+ afx_msg void OnUpdateCharUnderline(CCmdUI* pCmdUI);
+ afx_msg void OnParaCenter();
+ afx_msg void OnUpdateParaCenter(CCmdUI* pCmdUI);
+ afx_msg void OnParaLeft();
+ afx_msg void OnUpdateParaLeft(CCmdUI* pCmdUI);
+ afx_msg void OnParaRight();
+ afx_msg void OnUpdateParaRight(CCmdUI* pCmdUI);
+ afx_msg void OnBullet();
+ afx_msg void OnUpdateBullet(CCmdUI* pCmdUI);
+ afx_msg void OnFormatFont();
+ afx_msg void OnColorPick(COLORREF cr);
+ afx_msg void OnColorDefault();
+ afx_msg void OnEditPasteSpecial();
+ afx_msg void OnUpdateEditPasteSpecial(CCmdUI* pCmdUI);
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
+ //}}AFX_MSG
+ afx_msg LRESULT OnFindReplaceCmd(WPARAM, LPARAM lParam);
+ afx_msg void OnSelChange(NMHDR* pNMHDR, LRESULT* pResult);
+
+ DECLARE_MESSAGE_MAP()
+
+// Interface Map
+public:
+ BEGIN_INTERFACE_PART(RichEditOleCallback, IRichEditOleCallback)
+ INIT_INTERFACE_PART(CRichEditView, RichEditOleCallback)
+ STDMETHOD(GetNewStorage) (LPSTORAGE*);
+ STDMETHOD(GetInPlaceContext) (LPOLEINPLACEFRAME*,
+ LPOLEINPLACEUIWINDOW*,
+ LPOLEINPLACEFRAMEINFO);
+ STDMETHOD(ShowContainerUI) (BOOL);
+ STDMETHOD(QueryInsertObject) (LPCLSID, LPSTORAGE, LONG);
+ STDMETHOD(DeleteObject) (LPOLEOBJECT);
+ STDMETHOD(QueryAcceptData) (LPDATAOBJECT, CLIPFORMAT*, DWORD,BOOL, HGLOBAL);
+ STDMETHOD(ContextSensitiveHelp) (BOOL);
+ STDMETHOD(GetClipboardData) (CHARRANGE*, DWORD, LPDATAOBJECT*);
+ STDMETHOD(GetDragDropEffect) (BOOL, DWORD, LPDWORD);
+ STDMETHOD(GetContextMenu) (WORD, LPOLEOBJECT, CHARRANGE*, HMENU*);
+ END_INTERFACE_PART(RichEditOleCallback)
+
+ DECLARE_INTERFACE_MAP()
+
+ #ifdef UNICODE
+
+ CHARFORMATW m_charformatw ;
+
+ #endif
+};
+
+
+#ifdef UNICODE
+
+__inline
+void CRichEditView::SetCharFormat(CHARFORMATW cf)
+{
+ CHARFORMATA a ;
+
+ a.cbSize = cf.cbSize;
+ a.dwMask = cf.dwMask;
+ a.dwEffects = cf.dwEffects;
+ a.yHeight = cf.yHeight;
+ a.yOffset = cf.yOffset;
+ a.crTextColor = cf.crTextColor;
+ a.bCharSet = cf.bCharSet;
+ a.bPitchAndFamily = cf.bPitchAndFamily;
+
+ WideCharToMultiByte(CP_OEMCP, WC_COMPOSITECHECK | WC_SEPCHARS, cf.szFaceName,
+ -1, a.szFaceName, sizeof(a.szFaceName), NULL, NULL);
+
+ CWaitCursor wait;
+ GetRichEditCtrl().SetSelectionCharFormat(a);
+ m_bSyncCharFormat = TRUE;
+}
+
+
+__inline
+CHARFORMATW& CRichEditView::GetCharFormatWSelection()
+{
+ if (m_bSyncCharFormat)
+ {
+ GetRichEditCtrl().GetSelectionCharFormat(m_charformat);
+ m_bSyncCharFormat = FALSE;
+ }
+
+ m_charformatw.cbSize = m_charformat.cbSize;
+ m_charformatw.dwMask = m_charformat.dwMask;
+ m_charformatw.dwEffects = m_charformat.dwEffects;
+ m_charformatw.yHeight = m_charformat.yHeight;
+ m_charformatw.yOffset = m_charformat.yOffset;
+ m_charformatw.crTextColor = m_charformat.crTextColor;
+ m_charformatw.bCharSet = m_charformat.bCharSet;
+ m_charformatw.bPitchAndFamily = m_charformat.bPitchAndFamily;
+
+ MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, m_charformat.szFaceName,
+ -1, m_charformatw.szFaceName, sizeof(m_charformatw.szFaceName)/sizeof(WCHAR));
+
+ return m_charformatw ;
+}
+
+#define GetCharFormatSelection GetCharFormatWSelection
+
+#endif
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditDoc
+
+class CRichEditDoc : public COleServerDoc
+{
+protected: // create from serialization only
+ CRichEditDoc();
+ DECLARE_DYNAMIC(CRichEditDoc)
+
+// Attributes
+public:
+ BOOL m_bRTF; // TRUE when formatted, FALSE when plain text
+
+ virtual CRichEditCntrItem* CreateClientItem(REOBJECT* preo = NULL) const = 0;
+
+ CRichEditView* GetView() const;
+ int GetStreamFormat() const;
+
+// Implementation
+protected:
+ virtual COleServerItem* OnGetEmbeddedItem();
+ void MarkItemsClear() const;
+ void DeleteUnmarkedItems() const;
+ void UpdateObjectCache();
+public:
+ BOOL m_bUpdateObjectCache;
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU);
+ virtual void SetTitle(LPCTSTR lpszTitle);
+ virtual COleClientItem* GetPrimarySelectedItem(CView* pView);
+ virtual void DeleteContents();
+ virtual POSITION GetStartPosition() const;
+ virtual void PreCloseFrame(CFrameWnd* pFrameWnd);
+ virtual void UpdateModifiedFlag();
+ virtual BOOL IsModified();
+ virtual void SetModifiedFlag(BOOL bModified = TRUE);
+ virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);
+ CRichEditCntrItem* LookupItem(LPOLEOBJECT lpobj) const;
+ void InvalidateObjectCache();
+ virtual void Serialize(CArchive& ar); // overridden for document i/o
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditCntrItem
+
+class CRichEditCntrItem : public COleClientItem
+{
+ DECLARE_SERIAL(CRichEditCntrItem)
+
+// Constructors
+public:
+ CRichEditCntrItem(REOBJECT* preo = NULL, CRichEditDoc* pContainer = NULL);
+ // Note: pContainer is allowed to be NULL to enable IMPLEMENT_SERIALIZE.
+ // IMPLEMENT_SERIALIZE requires the class have a constructor with
+ // zero arguments. Normally, OLE items are constructed with a
+ // non-NULL document pointer.
+
+// Operations
+ void SyncToRichEditObject(REOBJECT& reo);
+
+// Implementation
+public:
+ ~CRichEditCntrItem();
+ LPOLECLIENTSITE m_lpClientSite;
+ BOOL m_bMark;
+ BOOL m_bLock; // lock it during creation to avoid deletion
+ void Mark(BOOL b);
+ BOOL IsMarked();
+ CRichEditDoc* GetDocument();
+ CRichEditView* GetActiveView();
+ HRESULT ShowContainerUI(BOOL b);
+ HRESULT GetWindowContext(LPOLEINPLACEFRAME* lplpFrame,
+ LPOLEINPLACEUIWINDOW* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+ virtual LPOLECLIENTSITE GetClientSite();
+ virtual BOOL ConvertTo(REFCLSID clsidNew);
+ virtual BOOL ActivateAs(LPCTSTR lpszUserType, REFCLSID clsidOld,
+ REFCLSID clsidNew);
+ virtual void SetDrawAspect(DVASPECT nDrawAspect);
+ virtual void OnDeactivateUI(BOOL bUndoable);
+ virtual BOOL CanActivate();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ virtual BOOL OnChangeItemPosition(const CRect& rectPos);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXRICH_INLINE inline
+#include <afxrich.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXRICH_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxrich.inl b/public/sdk/inc/mfc40/afxrich.inl
new file mode 100644
index 000000000..6cde683f3
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxrich.inl
@@ -0,0 +1,56 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXRICH.H
+
+#ifdef _AFXRICH_INLINE
+
+// CRichEditView
+_AFXRICH_INLINE CRichEditCtrl& CRichEditView::GetRichEditCtrl() const
+ { return *(CRichEditCtrl*)this; }
+int _AFXRICH_INLINE CRichEditView::GetPrintWidth() const
+ { return m_sizePaper.cx - m_rectMargin.left - m_rectMargin.right;}
+CRect _AFXRICH_INLINE CRichEditView::GetPrintRect() const
+ { return CRect(m_rectMargin.left, m_rectMargin.top, m_sizePaper.cx - m_rectMargin.right, m_sizePaper.cy - m_rectMargin.bottom); }
+CRect _AFXRICH_INLINE CRichEditView::GetPageRect() const
+ { return CRect(CPoint(0,0), m_sizePaper); }
+void _AFXRICH_INLINE CRichEditView::SetPaperSize(CSize sizePaper)
+ { m_sizePaper = sizePaper; }
+CSize _AFXRICH_INLINE CRichEditView::GetPaperSize() const
+ { return m_sizePaper; }
+void _AFXRICH_INLINE CRichEditView::SetMargins(const CRect& rectMargin)
+ { m_rectMargin = rectMargin; }
+CRect _AFXRICH_INLINE CRichEditView::GetMargins() const
+ { return m_rectMargin; }
+
+_AFXRICH_INLINE long CRichEditView::GetTextLength() const
+ { return GetRichEditCtrl().GetTextLength(); }
+_AFXRICH_INLINE CRichEditDoc* CRichEditView::GetDocument() const
+{
+ ASSERT(m_pDocument != NULL);
+ ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRichEditDoc)));
+ return (CRichEditDoc*)m_pDocument;
+}
+_AFXRICH_INLINE int CRichEditDoc::GetStreamFormat() const
+ { return m_bRTF ? SF_RTF : SF_TEXT; }
+_AFXRICH_INLINE void CRichEditDoc::InvalidateObjectCache()
+ { m_bUpdateObjectCache = TRUE; }
+
+_AFXRICH_INLINE void CRichEditCntrItem::Mark(BOOL b)
+ { m_bMark = b; }
+_AFXRICH_INLINE BOOL CRichEditCntrItem::IsMarked()
+ { return m_bMark||m_bLock; }
+_AFXRICH_INLINE CRichEditDoc* CRichEditCntrItem::GetDocument()
+ { return (CRichEditDoc*)COleClientItem::GetDocument(); }
+_AFXRICH_INLINE CRichEditView* CRichEditCntrItem::GetActiveView()
+ { return (CRichEditView*)COleClientItem::GetActiveView(); }
+#endif //_AFXRICH_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxsock.h b/public/sdk/inc/mfc40/afxsock.h
new file mode 100644
index 000000000..e4f243911
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxsock.h
@@ -0,0 +1,355 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXSOCK_H__
+#define __AFXSOCK_H__
+
+#ifdef _AFX_NO_SOCKET_SUPPORT
+ #error Windows Sockets classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifndef _WINSOCKAPI_
+ #include <winsock.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfcn40d.lib")
+ #else
+ #pragma comment(lib, "mfcn40ud.lib")
+ #endif
+ #endif
+#endif
+
+#pragma comment(lib, "wsock32.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXSOCK - MFC support for Windows Sockets
+
+// Classes declared in this file
+
+ // CObject
+ class CAsyncSocket; // Async Socket implementation and
+ // base class for Synchronous Socket
+ class CSocket; // Synchronous Socket
+
+ // CFile
+ class CSocketFile; // Used with CSocket and CArchive for
+ // streaming objects on sockets.
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_NET_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocketWnd -- internal use only
+// Implementation for sockets notification callbacks.
+// Future versions of MFC may or may not include this exact class.
+
+class CSocketWnd : public CWnd
+{
+// Construction
+public:
+ CSocketWnd();
+
+protected:
+ //{{AFX_MSG(CSocketWnd)
+ LRESULT OnSocketNotify(WPARAM wParam, LPARAM lParam);
+ LRESULT OnSocketDead(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CAsyncSocket
+
+class CAsyncSocket : public CObject
+{
+ DECLARE_DYNAMIC(CAsyncSocket);
+private:
+ CAsyncSocket(const CAsyncSocket& rSrc); // no implementation
+ void operator=(const CAsyncSocket& rSrc); // no implementation
+
+// Construction
+public:
+ CAsyncSocket();
+ BOOL Create(UINT nSocketPort = 0, int nSocketType=SOCK_STREAM,
+ long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
+ LPCTSTR lpszSocketAddress = NULL);
+
+// Attributes
+public:
+ SOCKET m_hSocket;
+
+ operator SOCKET() const;
+ BOOL Attach(SOCKET hSocket, long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
+ SOCKET Detach();
+
+ BOOL GetPeerName(CString& rPeerAddress, UINT& rPeerPort);
+ BOOL GetPeerName(SOCKADDR* lpSockAddr, int* lpSockAddrLen);
+
+ BOOL GetSockName(CString& rSocketAddress, UINT& rSocketPort);
+ BOOL GetSockName(SOCKADDR* lpSockAddr, int* lpSockAddrLen);
+
+ BOOL SetSockOpt(int nOptionName, const void* lpOptionValue,
+ int nOptionLen, int nLevel = SOL_SOCKET);
+ BOOL GetSockOpt(int nOptionName, void* lpOptionValue,
+ int* lpOptionLen, int nLevel = SOL_SOCKET);
+
+ static CAsyncSocket* PASCAL FromHandle(SOCKET hSocket);
+ static int PASCAL GetLastError();
+
+// Operations
+public:
+
+ virtual BOOL Accept(CAsyncSocket& rConnectedSocket,
+ SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL);
+
+ BOOL Bind(UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL);
+ BOOL Bind (const SOCKADDR* lpSockAddr, int nSockAddrLen);
+
+ virtual void Close();
+
+ BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort);
+ BOOL Connect(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+
+ BOOL IOCtl(long lCommand, DWORD* lpArgument);
+
+ BOOL Listen(int nConnectionBacklog=5);
+
+ virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int ReceiveFrom(void* lpBuf, int nBufLen,
+ CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0);
+ int ReceiveFrom(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags = 0);
+
+ enum { receives = 0, sends = 1, both = 2 };
+ BOOL ShutDown(int nHow = sends);
+
+ virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int SendTo(const void* lpBuf, int nBufLen,
+ UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0);
+ int SendTo(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags = 0);
+
+ BOOL AsyncSelect(long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
+
+// Overridable callbacks
+protected:
+ virtual void OnReceive(int nErrorCode);
+ virtual void OnSend(int nErrorCode);
+ virtual void OnOutOfBandData(int nErrorCode);
+ virtual void OnAccept(int nErrorCode);
+ virtual void OnConnect(int nErrorCode);
+ virtual void OnClose(int nErrorCode);
+
+// Implementation
+public:
+ virtual ~CAsyncSocket();
+
+ static CAsyncSocket* PASCAL LookupHandle(SOCKET hSocket, BOOL bDead = FALSE);
+ static void PASCAL AttachHandle(SOCKET hSocket, CAsyncSocket* pSocket, BOOL bDead = FALSE);
+ static void PASCAL DetachHandle(SOCKET hSocket, BOOL bDead = FALSE);
+ static void PASCAL KillSocket(SOCKET hSocket, CAsyncSocket* pSocket);
+ static void PASCAL DoCallBack(WPARAM wParam, LPARAM lParam);
+
+ BOOL Socket(int nSocketType=SOCK_STREAM, long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
+ int nProtocolType = 0, int nAddressFormat = PF_INET);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ friend class CSocketWnd;
+
+ virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+ virtual int ReceiveFromHelper(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags);
+ virtual int SendToHelper(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocket
+
+class CSocket : public CAsyncSocket
+{
+ DECLARE_DYNAMIC(CSocket);
+private:
+ CSocket(const CSocket& rSrc); // no implementation
+ void operator=(const CSocket& rSrc); // no implementation
+
+// Construction
+public:
+ CSocket();
+ BOOL Create(UINT nSocketPort = 0, int nSocketType=SOCK_STREAM,
+ LPCTSTR lpszSocketAddress = NULL);
+
+// Attributes
+public:
+ BOOL IsBlocking();
+ static CSocket* PASCAL FromHandle(SOCKET hSocket);
+ BOOL Attach(SOCKET hSocket);
+
+// Operations
+public:
+ void CancelBlockingCall();
+
+// Overridable callbacks
+protected:
+ virtual BOOL OnMessagePending();
+
+// Implementation
+public:
+ int m_nTimeOut;
+
+ virtual ~CSocket();
+
+ static int PASCAL ProcessAuxQueue();
+
+ virtual BOOL Accept(CAsyncSocket& rConnectedSocket,
+ SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL);
+ virtual void Close();
+ virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
+ virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int SendChunk(const void* lpBuf, int nBufLen, int nFlags);
+
+protected:
+ BOOL* m_pbBlocking;
+ int m_nConnectError;
+
+ virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+ virtual int ReceiveFromHelper(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags);
+ virtual int SendToHelper(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags);
+
+ static void PASCAL AuxQueueAdd(UINT message, WPARAM wParam, LPARAM lParam);
+
+ virtual BOOL PumpMessages(UINT uStopFlag);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocketFile
+
+class CSocketFile : public CFile
+{
+ DECLARE_DYNAMIC(CSocketFile)
+public:
+//Constructors
+ CSocketFile(CSocket* pSocket, BOOL bArchiveCompatible = TRUE);
+
+// Implementation
+public:
+ CSocket* m_pSocket;
+ BOOL m_bArchiveCompatible;
+
+ virtual ~CSocketFile();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void Close();
+
+// Unsupported APIs
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL);
+ virtual CFile* Duplicate() const;
+ virtual DWORD GetPosition() const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+ virtual void Flush();
+ virtual void Abort();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global functions
+
+BOOL AFXAPI AfxSocketInit(WSADATA* lpwsaData = NULL);
+void AFXAPI AfxSocketTerm();
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXSOCK_INLINE inline
+#include <afxsock.inl>
+#undef _AFXSOCK_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXSOCK_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxsock.inl b/public/sdk/inc/mfc40/afxsock.inl
new file mode 100644
index 000000000..453295b4b
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxsock.inl
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXSOCK.H
+
+#ifdef _AFXSOCK_INLINE
+
+_AFXSOCK_INLINE CAsyncSocket::operator SOCKET() const
+ { return m_hSocket; }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetPeerName(SOCKADDR* lpSockAddr, int* lpSockAddrLen)
+ { return (SOCKET_ERROR != getpeername(m_hSocket, lpSockAddr, lpSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetSockName(SOCKADDR* lpSockAddr, int* lpSockAddrLen)
+ { return (SOCKET_ERROR != getsockname(m_hSocket, lpSockAddr, lpSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::SetSockOpt(int nOptionName, const void* lpOptionValue, int nOptionLen, int nLevel)
+ { return (SOCKET_ERROR != setsockopt(m_hSocket, nLevel, nOptionName, (LPCSTR)lpOptionValue, nOptionLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetSockOpt(int nOptionName, void* lpOptionValue, int* lpOptionLen, int nLevel)
+ { return (SOCKET_ERROR != getsockopt(m_hSocket, nLevel, nOptionName, (LPSTR)lpOptionValue, lpOptionLen)); }
+_AFXSOCK_INLINE CAsyncSocket* PASCAL CAsyncSocket::FromHandle(SOCKET hSocket)
+ { return CAsyncSocket::LookupHandle(hSocket, FALSE); }
+_AFXSOCK_INLINE int PASCAL CAsyncSocket::GetLastError()
+ { return WSAGetLastError(); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Bind(const SOCKADDR* lpSockAddr, int nSockAddrLen)
+ { return (SOCKET_ERROR != bind(m_hSocket, lpSockAddr, nSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Connect(const SOCKADDR* lpSockAddr, int nSockAddrLen)
+ { return ConnectHelper(lpSockAddr, nSockAddrLen); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::IOCtl(long lCommand, DWORD* lpArgument)
+ { *lpArgument = 0; return (SOCKET_ERROR != ioctlsocket(m_hSocket, lCommand, lpArgument)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Listen(int nConnectionBacklog)
+ { return (SOCKET_ERROR != listen(m_hSocket, nConnectionBacklog)); }
+_AFXSOCK_INLINE int CAsyncSocket::ReceiveFrom(void* lpBuf, int nBufLen, SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags)
+ { return ReceiveFromHelper(lpBuf, nBufLen, lpSockAddr, lpSockAddrLen, nFlags); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::ShutDown(int nHow)
+ { return (SOCKET_ERROR != shutdown(m_hSocket,nHow)); }
+_AFXSOCK_INLINE int CAsyncSocket::SendTo(const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags)
+ { return SendToHelper(lpBuf, nBufLen, lpSockAddr, nSockAddrLen, nFlags); }
+
+_AFXSOCK_INLINE BOOL CSocket::Create(UINT nSocketPort, int nSocketType, LPCTSTR lpszSocketAddress)
+ { return CAsyncSocket::Create(nSocketPort, nSocketType, FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, lpszSocketAddress); }
+_AFXSOCK_INLINE BOOL CSocket::IsBlocking()
+ { return (m_pbBlocking != NULL); }
+_AFXSOCK_INLINE CSocket* PASCAL CSocket::FromHandle(SOCKET hSocket)
+ { return (CSocket*)CAsyncSocket::LookupHandle(hSocket, FALSE); }
+_AFXSOCK_INLINE BOOL CSocket::Attach(SOCKET hSocket)
+ { return CAsyncSocket::Attach(hSocket); }
+
+#endif //_AFXSOCK_INLINE
diff --git a/public/sdk/inc/mfc40/afxstat_.h b/public/sdk/inc/mfc40/afxstat_.h
new file mode 100644
index 000000000..a31631705
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxstat_.h
@@ -0,0 +1,321 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXSTATE_H__
+#define __AFXSTATE_H__
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifndef __AFXTLS_H__
+ #include <afxtls_.h>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// _AFX_DEBUG_STATE
+
+#ifdef _DEBUG
+
+class _AFX_DEBUG_STATE : public CNoTrackObject
+{
+public:
+ _AFX_DEBUG_STATE();
+ virtual ~_AFX_DEBUG_STATE();
+};
+
+EXTERN_PROCESS_LOCAL(_AFX_DEBUG_STATE, afxDebugState)
+
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// _AFX_WIN_STATE
+
+#undef AFX_DATA
+#define AFX_DATA
+
+class _AFX_WIN_STATE : public CNoTrackObject
+{
+public:
+ _AFX_WIN_STATE();
+ virtual ~_AFX_WIN_STATE();
+
+ // gray dialog support
+ HBRUSH m_hDlgBkBrush; // dialog and message box background brush
+ COLORREF m_crDlgTextClr;
+#ifdef _MAC
+ COLORREF m_crDlgBkClr;
+#endif
+
+ // printing abort
+ BOOL m_bUserAbort;
+};
+
+EXTERN_PROCESS_LOCAL(_AFX_WIN_STATE, _afxWinState)
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_MODULE_STATE : portion of state that is pushed/popped
+
+// forward references required for AFX_MODULE_PROCESS_STATE definition
+class CWnd;
+
+#ifdef _AFXDLL
+class CDynLinkLibrary;
+#endif
+
+#ifndef _AFX_NO_OCC_SUPPORT
+class COccManager;
+class COleControlLock;
+#endif
+
+#ifndef _AFX_NO_DAO_SUPPORT
+class _AFX_DAO_STATE;
+#endif
+
+// AFX_MODULE_PROCESS_STATE (local to process *and* module)
+class AFX_MODULE_PROCESS_STATE : public CNoTrackObject
+{
+public:
+ AFX_MODULE_PROCESS_STATE();
+ virtual ~AFX_MODULE_PROCESS_STATE();
+
+#ifdef _AFX_OLD_EXCEPTIONS
+ // exceptions
+ AFX_TERM_PROC m_pfnTerminate;
+#endif
+ void (PASCAL *m_pfnFilterToolTipMessage)(MSG*, CWnd*);
+
+#ifdef _AFXDLL
+ // CDynLinkLibrary objects (for resource chain)
+ CTypedSimpleList<CDynLinkLibrary*> m_libraryList;
+
+ // special case for MFCxxLOC.DLL (localized MFC resources)
+ HINSTANCE m_appLangDLL;
+#endif
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // OLE control container manager
+ COccManager* m_pOccManager;
+ // locked OLE controls
+ CTypedSimpleList<COleControlLock*> m_lockList;
+#endif
+
+#ifndef _AFX_NO_DAO_SUPPORT
+ _AFX_DAO_STATE* m_pDaoState;
+#endif
+};
+
+// forward references required for AFX_MODULE_THREAD_STATE definition
+class CWinThread;
+class CHandleMap;
+class CFrameWnd;
+
+#ifndef _PNH_DEFINED
+typedef int (__cdecl * _PNH)( size_t );
+#define _PNH_DEFINED
+#endif
+
+// AFX_MODULE_THREAD_STATE (local to thread *and* module)
+class AFX_MODULE_THREAD_STATE : public CNoTrackObject
+{
+public:
+ AFX_MODULE_THREAD_STATE();
+ virtual ~AFX_MODULE_THREAD_STATE();
+
+ // current CWinThread pointer
+ CWinThread* m_pCurrentWinThread;
+
+ // list of CFrameWnd objects for thread
+ CTypedSimpleList<CFrameWnd*> m_frameList;
+
+ // temporary/permanent map state
+ DWORD m_nTempMapLock; // if not 0, temp maps locked
+ CHandleMap* m_pmapHWND;
+ CHandleMap* m_pmapHMENU;
+ CHandleMap* m_pmapHDC;
+ CHandleMap* m_pmapHGDIOBJ;
+ CHandleMap* m_pmapHIMAGELIST;
+
+ // thread-local MFC new handler (separate from C-runtime)
+ _PNH m_pfnNewHandler;
+
+#ifndef _AFX_NO_SOCKET_SUPPORT
+ // WinSock specific thread state
+ HWND m_hSocketWindow;
+ CMapPtrToPtr m_mapSocketHandle;
+ CMapPtrToPtr m_mapDeadSockets;
+ CPtrList m_listSocketNotifications;
+#endif
+};
+
+// forward references required for AFX_MODULE_STATE definition
+class CWinApp;
+class COleObjectFactory;
+
+// AFX_MODULE_STATE (global data for a module)
+class AFX_MODULE_STATE : public CNoTrackObject
+{
+public:
+#ifdef _AFXDLL
+ AFX_MODULE_STATE(BOOL bDLL, WNDPROC pfnAfxWndProc, DWORD dwVersion);
+ AFX_MODULE_STATE(BOOL bDLL, WNDPROC pfnAfxWndProc, DWORD dwVersion,
+ BOOL bSystem);
+#else
+ AFX_MODULE_STATE(BOOL bDLL);
+#endif
+
+ CWinApp* m_pCurrentWinApp;
+ HINSTANCE m_hCurrentInstanceHandle;
+ HINSTANCE m_hCurrentResourceHandle;
+ LPCTSTR m_lpszCurrentAppName;
+ BYTE m_bDLL; // TRUE if module is a DLL, FALSE if it is an EXE
+ BYTE m_bSystem; // TRUE if module is a "system" module, FALSE if not
+ BYTE m_bReserved[2]; // padding
+
+ short m_fRegisteredClasses; // flags for registered window classes
+
+ // runtime class data
+#ifdef _AFXDLL
+ CRuntimeClass* m_pClassInit;
+#endif
+ CTypedSimpleList<CRuntimeClass*> m_classList;
+
+ // OLE object factories
+#ifndef _AFX_NO_OLE_SUPPORT
+#ifdef _AFXDLL
+ COleObjectFactory* m_pFactoryInit;
+#endif
+ CTypedSimpleList<COleObjectFactory*> m_factoryList;
+#endif
+ // number of locked OLE objects
+ long m_nObjectCount;
+ BOOL m_bUserCtrl;
+
+ // AfxRegisterClass and AfxRegisterWndClass data
+ TCHAR m_szUnregisterList[4096];
+#ifdef _AFXDLL
+ WNDPROC m_pfnAfxWndProc;
+ DWORD m_dwVersion; // version that module linked against
+#endif
+
+ // define process local/thread local portions of module state
+ PROCESS_LOCAL(AFX_MODULE_PROCESS_STATE, m_process)
+ THREAD_LOCAL(AFX_MODULE_THREAD_STATE, m_thread)
+};
+
+AFX_MODULE_STATE* AFXAPI AfxGetAppModuleState();
+#ifdef _AFXDLL
+AFX_MODULE_STATE* AFXAPI AfxSetModuleState(AFX_MODULE_STATE* pNewState);
+#endif
+AFX_MODULE_STATE* AFXAPI AfxGetModuleState();
+AFX_MODULE_STATE* AFXAPI AfxGetStaticModuleState();
+
+AFX_MODULE_PROCESS_STATE* AFXAPI AfxGetModuleProcessState();
+AFX_MODULE_THREAD_STATE* AFXAPI AfxGetModuleThreadState();
+
+/////////////////////////////////////////////////////////////////////////////
+// macros & classes to manage pushing/popping the module state
+
+#ifdef _AFXDLL
+struct AFX_MAINTAIN_STATE
+{
+ AFX_MAINTAIN_STATE(AFX_MODULE_STATE* pModuleState);
+ ~AFX_MAINTAIN_STATE();
+
+protected:
+ AFX_MODULE_STATE* m_pPrevModuleState;
+};
+#define AFX_MANAGE_STATE(p) AFX_MAINTAIN_STATE _ctlState(p);
+#else // _AFXDLL
+#define AFX_MANAGE_STATE(p)
+#endif //!_AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Thread global state
+
+// forward references required for _AFX_THREAD_STATE definition
+class CView;
+class CToolTipCtrl;
+class CControlBar;
+
+class _AFX_THREAD_STATE : public CNoTrackObject
+{
+public:
+ _AFX_THREAD_STATE();
+ virtual ~_AFX_THREAD_STATE();
+
+ // override for m_pModuleState in _AFX_APP_STATE
+ AFX_MODULE_STATE* m_pModuleState;
+ AFX_MODULE_STATE* m_pPrevModuleState;
+
+ // memory safety pool for temp maps
+ void* m_pSafetyPoolBuffer; // current buffer
+
+ // thread local exception context
+ AFX_EXCEPTION_CONTEXT m_exceptionContext;
+
+ // CWnd create, gray dialog hook, and other hook data
+ CWnd* m_pWndInit;
+ CWnd* m_pAlternateWndInit; // special case commdlg hooking
+ DWORD m_dwPropStyle;
+ DWORD m_dwPropExStyle;
+ HWND m_hWndInit;
+ BOOL m_bDlgCreate;
+ HHOOK m_hHookOldSendMsg;
+ HHOOK m_hHookOldCbtFilter;
+ HHOOK m_hHookOldMsgFilter;
+
+ // other CWnd modal data
+ MSG m_lastSentMsg; // see CWnd::WindowProc
+ HWND m_hTrackingWindow; // see CWnd::TrackPopupMenu
+ HMENU m_hTrackingMenu;
+ TCHAR m_szTempClassName[96]; // see AfxRegisterWndClass
+ HWND m_hLockoutNotifyWindow; // see CWnd::OnCommand
+ BOOL m_bInMsgFilter;
+
+ // other framework modal data
+ CView* m_pRoutingView; // see CCmdTarget::GetRoutingView
+ CFrameWnd* m_pRoutingFrame; // see CCmdTarget::GetRoutingFrame
+
+ // MFC/DB thread-local data
+ BOOL m_bWaitForDataSource;
+
+ // common controls thread state
+ CToolTipCtrl* m_pToolTip;
+ CWnd* m_pLastHit; // last window to own tooltip
+ int m_nLastHit; // last hittest code
+ TOOLINFO m_lastInfo; // last TOOLINFO structure
+ int m_nLastStatus; // last flyby status message
+ CControlBar* m_pLastStatus; // last flyby status control bar
+
+ // OLE control thread-local data
+ CWnd* m_pWndPark; // "parking space" window
+ long m_nCtrlRef; // reference count on parking window
+};
+
+EXTERN_THREAD_LOCAL(_AFX_THREAD_STATE, _afxThreadState)
+
+_AFX_THREAD_STATE* AFXAPI AfxGetThreadState();
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXSTATE_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxtempl.h b/public/sdk/inc/mfc40/afxtempl.h
new file mode 100644
index 000000000..e4303657d
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxtempl.h
@@ -0,0 +1,1596 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXTEMPL_H__
+#define __AFXTEMPL_H__
+
+#ifndef __AFXPLEX_H__
+ #include <afxplex_.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifdef _DEBUG
+static char _szAfxTempl[] = "afxtempl.h";
+#undef THIS_FILE
+#define THIS_FILE _szAfxTempl
+#endif
+
+#ifndef ALL_WARNINGS
+#pragma warning(disable: 4114)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// global helpers (can be overridden)
+
+#ifdef new
+#undef new
+#define _REDEF_NEW
+#endif
+
+#ifndef _INC_NEW
+ #include <new.h>
+#endif
+
+template<class TYPE>
+inline void AFXAPI ConstructElements(TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // first do bit-wise zero initialization
+ memset((void*)pElements, 0, nCount * sizeof(TYPE));
+
+ // then call the constructor(s)
+ for (; nCount--; pElements++)
+ ::new((void*)pElements) TYPE;
+}
+
+template<class TYPE>
+inline void AFXAPI DestructElements(TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // call the destructor(s)
+ for (; nCount--; pElements++)
+ pElements->~TYPE();
+}
+
+template<class TYPE>
+inline void AFXAPI CopyElements(TYPE* pDest, const TYPE* pSrc, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pDest, nCount * sizeof(TYPE)));
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pSrc, nCount * sizeof(TYPE)));
+
+ // default is bit-wise copy
+ memcpy(pDest, pSrc, nCount * sizeof(TYPE));
+}
+
+template<class TYPE>
+void AFXAPI SerializeElements(CArchive& ar, TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // default is bit-wise read/write
+ if (ar.IsStoring())
+ ar.Write((void*)pElements, nCount * sizeof(TYPE));
+ else
+ ar.Read((void*)pElements, nCount * sizeof(TYPE));
+}
+
+#ifdef _DEBUG
+template<class TYPE>
+void AFXAPI DumpElements(CDumpContext& dc, const TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+ &dc; // not used
+ pElements; // not used
+ nCount; // not used
+
+ // default does nothing
+}
+#endif
+
+template<class TYPE, class ARG_TYPE>
+BOOL AFXAPI CompareElements(const TYPE* pElement1, const ARG_TYPE* pElement2)
+{
+ ASSERT(AfxIsValidAddress(pElement1, sizeof(TYPE)));
+ ASSERT(AfxIsValidAddress(pElement2, sizeof(ARG_TYPE)));
+
+ return *pElement1 == *pElement2;
+}
+
+template<class ARG_KEY>
+inline UINT AFXAPI HashKey(ARG_KEY key)
+{
+ // default identity hash - works for most primitive values
+ return ((UINT)(void*)(DWORD)key) >> 4;
+}
+
+// special versions for CString
+void AFXAPI ConstructElements(CString* pElements, int nCount);
+void AFXAPI DestructElements(CString* pElements, int nCount);
+void AFXAPI CopyElements(CString* pDest, const CString* pSrc, int nCount);
+void AFXAPI SerializeElements(CArchive& ar, CString* pElements, int nCount);
+UINT AFXAPI HashKey(LPCTSTR key);
+
+// forward declarations
+class COleVariant;
+struct tagVARIANT;
+
+// special versions for COleVariant
+void AFXAPI ConstructElements(COleVariant* pElements, int nCount);
+void AFXAPI DestructElements(COleVariant* pElements, int nCount);
+void AFXAPI CopyElements(COleVariant* pDest, const COleVariant* pSrc, int nCount);
+void AFXAPI SerializeElements(CArchive& ar, COleVariant* pElements, int nCount);
+void AFXAPI DumpElements(CDumpContext& dc, COleVariant* pElements, int nCount);
+UINT AFXAPI HashKey(const struct tagVARIANT& var);
+
+#define new DEBUG_NEW
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE>
+
+template<class TYPE, class ARG_TYPE>
+class CArray : public CObject
+{
+public:
+// Construction
+ CArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ TYPE GetAt(int nIndex) const;
+ void SetAt(int nIndex, ARG_TYPE newElement);
+ TYPE& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const TYPE* GetData() const;
+ TYPE* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, ARG_TYPE newElement);
+ int Add(ARG_TYPE newElement);
+ int Append(const CArray& src);
+ void Copy(const CArray& src);
+
+ // overloaded operator helpers
+ TYPE operator[](int nIndex) const;
+ TYPE& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, ARG_TYPE newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CArray* pNewArray);
+
+// Implementation
+protected:
+ TYPE* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CArray();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE> inline functions
+
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::GetSize() const
+ { return m_nSize; }
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::GetUpperBound() const
+ { return m_nSize-1; }
+template<class TYPE, class ARG_TYPE>
+inline void CArray<TYPE, ARG_TYPE>::RemoveAll()
+ { SetSize(0, -1); }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CArray<TYPE, ARG_TYPE>::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+template<class TYPE, class ARG_TYPE>
+inline void CArray<TYPE, ARG_TYPE>::SetAt(int nIndex, ARG_TYPE newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CArray<TYPE, ARG_TYPE>::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+template<class TYPE, class ARG_TYPE>
+inline const TYPE* CArray<TYPE, ARG_TYPE>::GetData() const
+ { return (const TYPE*)m_pData; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE* CArray<TYPE, ARG_TYPE>::GetData()
+ { return (TYPE*)m_pData; }
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::Add(ARG_TYPE newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CArray<TYPE, ARG_TYPE>::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CArray<TYPE, ARG_TYPE>::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE> out-of-line functions
+
+template<class TYPE, class ARG_TYPE>
+CArray<TYPE, ARG_TYPE>::CArray()
+{
+ m_pData = NULL;
+ m_nSize = m_nMaxSize = m_nGrowBy = 0;
+}
+
+template<class TYPE, class ARG_TYPE>
+CArray<TYPE, ARG_TYPE>::~CArray()
+{
+ ASSERT_VALID(this);
+
+ if (m_pData != NULL)
+ {
+ DestructElements(m_pData, m_nSize);
+ delete[] (BYTE*)m_pData;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::SetSize(int nNewSize, int nGrowBy)
+{
+ ASSERT_VALID(this);
+ ASSERT(nNewSize >= 0);
+
+ if (nGrowBy != -1)
+ m_nGrowBy = nGrowBy; // set new size
+
+ if (nNewSize == 0)
+ {
+ // shrink to nothing
+ if (m_pData != NULL)
+ {
+ DestructElements(m_pData, m_nSize);
+ delete[] (BYTE*)m_pData;
+ m_pData = NULL;
+ }
+ m_nSize = m_nMaxSize = 0;
+ }
+ else if (m_pData == NULL)
+ {
+ // create one with exact size
+#ifdef SIZE_T_MAX
+ ASSERT(nNewSize <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ m_pData = (TYPE*) new BYTE[nNewSize * sizeof(TYPE)];
+ ConstructElements(m_pData, nNewSize);
+ m_nSize = m_nMaxSize = nNewSize;
+ }
+ else if (nNewSize <= m_nMaxSize)
+ {
+ // it fits
+ if (nNewSize > m_nSize)
+ {
+ // initialize the new elements
+ ConstructElements(&m_pData[m_nSize], nNewSize-m_nSize);
+ }
+ else if (m_nSize > nNewSize)
+ {
+ // destroy the old elements
+ DestructElements(&m_pData[nNewSize], m_nSize-nNewSize);
+ }
+ m_nSize = nNewSize;
+ }
+ else
+ {
+ // otherwise, grow array
+ int nGrowBy = m_nGrowBy;
+ if (nGrowBy == 0)
+ {
+ // heuristically determine growth when nGrowBy == 0
+ // (this avoids heap fragmentation in many situations)
+ nGrowBy = m_nSize / 8;
+ nGrowBy = (nGrowBy < 4) ? 4 : ((nGrowBy > 1024) ? 1024 : nGrowBy);
+ }
+ int nNewMax;
+ if (nNewSize < m_nMaxSize + nGrowBy)
+ nNewMax = m_nMaxSize + nGrowBy; // granularity
+ else
+ nNewMax = nNewSize; // no slush
+
+ ASSERT(nNewMax >= m_nMaxSize); // no wrap around
+#ifdef SIZE_T_MAX
+ ASSERT(nNewMax <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ TYPE* pNewData = (TYPE*) new BYTE[nNewMax * sizeof(TYPE)];
+
+ // copy new data from old
+ memcpy(pNewData, m_pData, m_nSize * sizeof(TYPE));
+
+ // construct remaining elements
+ ASSERT(nNewSize > m_nSize);
+ ConstructElements(&pNewData[m_nSize], nNewSize-m_nSize);
+
+ // get rid of old stuff (note: no destructors called)
+ delete[] (BYTE*)m_pData;
+ m_pData = pNewData;
+ m_nSize = nNewSize;
+ m_nMaxSize = nNewMax;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+int CArray<TYPE, ARG_TYPE>::Append(const CArray& src)
+{
+ ASSERT_VALID(this);
+ ASSERT(this != &src); // cannot append to itself
+
+ int nOldSize = m_nSize;
+ SetSize(m_nSize + src.m_nSize);
+ CopyElements(m_pData + nOldSize, src.m_pData, src.m_nSize);
+ return nOldSize;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Copy(const CArray& src)
+{
+ ASSERT_VALID(this);
+ ASSERT(this != &src); // cannot append to itself
+
+ SetSize(src.m_nSize);
+ CopyElements(m_pData, src.m_pData, src.m_nSize);
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::FreeExtra()
+{
+ ASSERT_VALID(this);
+
+ if (m_nSize != m_nMaxSize)
+ {
+ // shrink to desired size
+#ifdef SIZE_T_MAX
+ ASSERT(m_nSize <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ TYPE* pNewData = NULL;
+ if (m_nSize != 0)
+ {
+ pNewData = (TYPE*) new BYTE[m_nSize * sizeof(TYPE)];
+ // copy new data from old
+ memcpy(pNewData, m_pData, m_nSize * sizeof(TYPE));
+ }
+
+ // get rid of old stuff (note: no destructors called)
+ delete[] (BYTE*)m_pData;
+ m_pData = pNewData;
+ m_nMaxSize = m_nSize;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::SetAtGrow(int nIndex, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+
+ if (nIndex >= m_nSize)
+ SetSize(nIndex+1, -1);
+ m_pData[nIndex] = newElement;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::InsertAt(int nIndex, ARG_TYPE newElement, int nCount /*=1*/)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0); // will expand to meet need
+ ASSERT(nCount > 0); // zero or negative size not allowed
+
+ if (nIndex >= m_nSize)
+ {
+ // adding after the end of the array
+ SetSize(nIndex + nCount, -1); // grow so nIndex is valid
+ }
+ else
+ {
+ // inserting in the middle of the array
+ int nOldSize = m_nSize;
+ SetSize(m_nSize + nCount, -1); // grow it to new size
+ // shift old data up to fill gap
+ memmove(&m_pData[nIndex+nCount], &m_pData[nIndex],
+ (nOldSize-nIndex) * sizeof(TYPE));
+
+ // re-init slots we copied from
+ ConstructElements(&m_pData[nIndex], nCount);
+ }
+
+ // insert new value in the gap
+ ASSERT(nIndex + nCount <= m_nSize);
+ while (nCount--)
+ m_pData[nIndex++] = newElement;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::RemoveAt(int nIndex, int nCount)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+ ASSERT(nCount >= 0);
+ ASSERT(nIndex + nCount <= m_nSize);
+
+ // just remove a range
+ int nMoveCount = m_nSize - (nIndex + nCount);
+ DestructElements(&m_pData[nIndex], nCount);
+ if (nMoveCount)
+ memcpy(&m_pData[nIndex], &m_pData[nIndex + nCount],
+ nMoveCount * sizeof(TYPE));
+ m_nSize -= nCount;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::InsertAt(int nStartIndex, CArray* pNewArray)
+{
+ ASSERT_VALID(this);
+ ASSERT(pNewArray != NULL);
+ ASSERT_VALID(pNewArray);
+ ASSERT(nStartIndex >= 0);
+
+ if (pNewArray->GetSize() > 0)
+ {
+ InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize());
+ for (int i = 0; i < pNewArray->GetSize(); i++)
+ SetAt(nStartIndex + i, pNewArray->GetAt(i));
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+ if (ar.IsStoring())
+ {
+ ar.WriteCount(m_nSize);
+ }
+ else
+ {
+ DWORD nOldSize = ar.ReadCount();
+ SetSize(nOldSize, -1);
+ }
+ SerializeElements(ar, m_pData, m_nSize);
+}
+
+#ifdef _DEBUG
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nSize << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ dc << "\n";
+ DumpElements(dc, m_pData, m_nSize);
+ }
+
+ dc << "\n";
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ if (m_pData == NULL)
+ {
+ ASSERT(m_nSize == 0);
+ ASSERT(m_nMaxSize == 0);
+ }
+ else
+ {
+ ASSERT(m_nSize >= 0);
+ ASSERT(m_nMaxSize >= 0);
+ ASSERT(m_nSize <= m_nMaxSize);
+ ASSERT(AfxIsValidAddress(m_pData, m_nMaxSize * sizeof(TYPE)));
+ }
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CList<TYPE, ARG_TYPE>
+
+template<class TYPE, class ARG_TYPE>
+class CList : public CObject
+{
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ TYPE data;
+ };
+public:
+// Construction
+ CList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ TYPE& GetHead();
+ TYPE GetHead() const;
+ TYPE& GetTail();
+ TYPE GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list !
+ TYPE RemoveHead();
+ TYPE RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(ARG_TYPE newElement);
+ POSITION AddTail(ARG_TYPE newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CList* pNewList);
+ void AddTail(CList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ TYPE& GetNext(POSITION& rPosition); // return *Position++
+ TYPE GetNext(POSITION& rPosition) const; // return *Position++
+ TYPE& GetPrev(POSITION& rPosition); // return *Position--
+ TYPE GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ TYPE& GetAt(POSITION position);
+ TYPE GetAt(POSITION position) const;
+ void SetAt(POSITION pos, ARG_TYPE newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, ARG_TYPE newElement);
+ POSITION InsertAfter(POSITION position, ARG_TYPE newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(ARG_TYPE searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD, return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CList();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CList<TYPE, ARG_TYPE> inline functions
+
+template<class TYPE, class ARG_TYPE>
+inline int CList<TYPE, ARG_TYPE>::GetCount() const
+ { return m_nCount; }
+template<class TYPE, class ARG_TYPE>
+inline BOOL CList<TYPE, ARG_TYPE>::IsEmpty() const
+ { return m_nCount == 0; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+template<class TYPE, class ARG_TYPE>
+inline POSITION CList<TYPE, ARG_TYPE>::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+template<class TYPE, class ARG_TYPE>
+inline POSITION CList<TYPE, ARG_TYPE>::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline void CList<TYPE, ARG_TYPE>::SetAt(POSITION pos, ARG_TYPE newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::CList(int nBlockSize)
+{
+ ASSERT(nBlockSize > 0);
+
+ m_nCount = 0;
+ m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL;
+ m_pBlocks = NULL;
+ m_nBlockSize = nBlockSize;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::RemoveAll()
+{
+ ASSERT_VALID(this);
+
+ // destroy elements
+ CNode* pNode;
+ for (pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
+ DestructElements(&pNode->data, 1);
+
+ m_nCount = 0;
+ m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL;
+ m_pBlocks->FreeDataChain();
+ m_pBlocks = NULL;
+}
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::~CList()
+{
+ RemoveAll();
+ ASSERT(m_nCount == 0);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// Node helpers
+//
+// Implementation note: CNode's are stored in CPlex blocks and
+// chained together. Free blocks are maintained in a singly linked list
+// using the 'pNext' member of CNode with 'm_pNodeFree' as the head.
+// Used blocks are maintained in a doubly linked list using both 'pNext'
+// and 'pPrev' as links and 'm_pNodeHead' and 'm_pNodeTail'
+// as the head/tail.
+//
+// We never free a CPlex block unless the List is destroyed or RemoveAll()
+// is used - so the total number of CPlex blocks may grow large depending
+// on the maximum past size of the list.
+//
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::CNode*
+CList<TYPE, ARG_TYPE>::NewNode(CList::CNode* pPrev, CList::CNode* pNext)
+{
+ if (m_pNodeFree == NULL)
+ {
+ // add another block
+ CPlex* pNewBlock = CPlex::Create(m_pBlocks, m_nBlockSize,
+ sizeof(CNode));
+
+ // chain them into free list
+ CNode* pNode = (CNode*) pNewBlock->data();
+ // free in reverse order to make it easier to debug
+ pNode += m_nBlockSize - 1;
+ for (int i = m_nBlockSize-1; i >= 0; i--, pNode--)
+ {
+ pNode->pNext = m_pNodeFree;
+ m_pNodeFree = pNode;
+ }
+ }
+ ASSERT(m_pNodeFree != NULL); // we must have something
+
+ CList::CNode* pNode = m_pNodeFree;
+ m_pNodeFree = m_pNodeFree->pNext;
+ pNode->pPrev = pPrev;
+ pNode->pNext = pNext;
+ m_nCount++;
+ ASSERT(m_nCount > 0); // make sure we don't overflow
+
+ ConstructElements(&pNode->data, 1);
+ return pNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::FreeNode(CList::CNode* pNode)
+{
+ DestructElements(&pNode->data, 1);
+ pNode->pNext = m_pNodeFree;
+ m_pNodeFree = pNode;
+ m_nCount--;
+ ASSERT(m_nCount >= 0); // make sure we don't underflow
+
+ // if no more elements, cleanup completely
+ if (m_nCount == 0)
+ RemoveAll();
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::AddHead(ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ CNode* pNewNode = NewNode(NULL, m_pNodeHead);
+ pNewNode->data = newElement;
+ if (m_pNodeHead != NULL)
+ m_pNodeHead->pPrev = pNewNode;
+ else
+ m_pNodeTail = pNewNode;
+ m_pNodeHead = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::AddTail(ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ CNode* pNewNode = NewNode(m_pNodeTail, NULL);
+ pNewNode->data = newElement;
+ if (m_pNodeTail != NULL)
+ m_pNodeTail->pNext = pNewNode;
+ else
+ m_pNodeHead = pNewNode;
+ m_pNodeTail = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AddHead(CList* pNewList)
+{
+ ASSERT_VALID(this);
+
+ ASSERT(pNewList != NULL);
+ ASSERT_VALID(pNewList);
+
+ // add a list of same elements to head (maintain order)
+ POSITION pos = pNewList->GetTailPosition();
+ while (pos != NULL)
+ AddHead(pNewList->GetPrev(pos));
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AddTail(CList* pNewList)
+{
+ ASSERT_VALID(this);
+ ASSERT(pNewList != NULL);
+ ASSERT_VALID(pNewList);
+
+ // add a list of same elements
+ POSITION pos = pNewList->GetHeadPosition();
+ while (pos != NULL)
+ AddTail(pNewList->GetNext(pos));
+}
+
+template<class TYPE, class ARG_TYPE>
+TYPE CList<TYPE, ARG_TYPE>::RemoveHead()
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pNodeHead != NULL); // don't call on empty list !!!
+ ASSERT(AfxIsValidAddress(m_pNodeHead, sizeof(CNode)));
+
+ CNode* pOldNode = m_pNodeHead;
+ TYPE returnValue = pOldNode->data;
+
+ m_pNodeHead = pOldNode->pNext;
+ if (m_pNodeHead != NULL)
+ m_pNodeHead->pPrev = NULL;
+ else
+ m_pNodeTail = NULL;
+ FreeNode(pOldNode);
+ return returnValue;
+}
+
+template<class TYPE, class ARG_TYPE>
+TYPE CList<TYPE, ARG_TYPE>::RemoveTail()
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pNodeTail != NULL); // don't call on empty list !!!
+ ASSERT(AfxIsValidAddress(m_pNodeTail, sizeof(CNode)));
+
+ CNode* pOldNode = m_pNodeTail;
+ TYPE returnValue = pOldNode->data;
+
+ m_pNodeTail = pOldNode->pPrev;
+ if (m_pNodeTail != NULL)
+ m_pNodeTail->pNext = NULL;
+ else
+ m_pNodeHead = NULL;
+ FreeNode(pOldNode);
+ return returnValue;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::InsertBefore(POSITION position, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ if (position == NULL)
+ return AddHead(newElement); // insert before nothing -> head of the list
+
+ // Insert it before position
+ CNode* pOldNode = (CNode*) position;
+ CNode* pNewNode = NewNode(pOldNode->pPrev, pOldNode);
+ pNewNode->data = newElement;
+
+ if (pOldNode->pPrev != NULL)
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pPrev, sizeof(CNode)));
+ pOldNode->pPrev->pNext = pNewNode;
+ }
+ else
+ {
+ ASSERT(pOldNode == m_pNodeHead);
+ m_pNodeHead = pNewNode;
+ }
+ pOldNode->pPrev = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::InsertAfter(POSITION position, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ if (position == NULL)
+ return AddTail(newElement); // insert after nothing -> tail of the list
+
+ // Insert it before position
+ CNode* pOldNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pOldNode, sizeof(CNode)));
+ CNode* pNewNode = NewNode(pOldNode, pOldNode->pNext);
+ pNewNode->data = newElement;
+
+ if (pOldNode->pNext != NULL)
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pNext, sizeof(CNode)));
+ pOldNode->pNext->pPrev = pNewNode;
+ }
+ else
+ {
+ ASSERT(pOldNode == m_pNodeTail);
+ m_pNodeTail = pNewNode;
+ }
+ pOldNode->pNext = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::RemoveAt(POSITION position)
+{
+ ASSERT_VALID(this);
+
+ CNode* pOldNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pOldNode, sizeof(CNode)));
+
+ // remove pOldNode from list
+ if (pOldNode == m_pNodeHead)
+ {
+ m_pNodeHead = pOldNode->pNext;
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pPrev, sizeof(CNode)));
+ pOldNode->pPrev->pNext = pOldNode->pNext;
+ }
+ if (pOldNode == m_pNodeTail)
+ {
+ m_pNodeTail = pOldNode->pPrev;
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pNext, sizeof(CNode)));
+ pOldNode->pNext->pPrev = pOldNode->pPrev;
+ }
+ FreeNode(pOldNode);
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::FindIndex(int nIndex) const
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+
+ if (nIndex >= m_nCount)
+ return NULL; // went too far
+
+ CNode* pNode = m_pNodeHead;
+ while (nIndex--)
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode = pNode->pNext;
+ }
+ return (POSITION) pNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::Find(ARG_TYPE searchValue, POSITION startAfter) const
+{
+ ASSERT_VALID(this);
+
+ CNode* pNode = (CNode*) startAfter;
+ if (pNode == NULL)
+ {
+ pNode = m_pNodeHead; // start at head
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode = pNode->pNext; // start after the one specified
+ }
+
+ for (; pNode != NULL; pNode = pNode->pNext)
+ if (CompareElements(&pNode->data, &searchValue))
+ return (POSITION)pNode;
+ return NULL;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+
+ if (ar.IsStoring())
+ {
+ ar.WriteCount(m_nCount);
+ for (CNode* pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ SerializeElements(ar, &pNode->data, 1);
+ }
+ }
+ else
+ {
+ DWORD nNewCount = ar.ReadCount();
+ TYPE newData;
+ while (nNewCount--)
+ {
+ SerializeElements(ar, &newData, 1);
+ AddTail(newData);
+ }
+ }
+}
+
+#ifdef _DEBUG
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nCount << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ POSITION pos = GetHeadPosition();
+ while (pos != NULL)
+ {
+ dc << "\n";
+ DumpElements(dc, &((CList*)this)->GetNext(pos), 1);
+ }
+ }
+
+ dc << "\n";
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ if (m_nCount == 0)
+ {
+ // empty list
+ ASSERT(m_pNodeHead == NULL);
+ ASSERT(m_pNodeTail == NULL);
+ }
+ else
+ {
+ // non-empty list
+ ASSERT(AfxIsValidAddress(m_pNodeHead, sizeof(CNode)));
+ ASSERT(AfxIsValidAddress(m_pNodeTail, sizeof(CNode)));
+ }
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+class CMap : public CObject
+{
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ KEY key;
+ VALUE value;
+ };
+public:
+// Construction
+ CMap(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(ARG_KEY key, VALUE& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ VALUE& operator[](ARG_KEY key);
+
+ // add a new (key, value) pair
+ void SetAt(ARG_KEY key, ARG_VALUE newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(ARG_KEY key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, KEY& rKey, VALUE& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(ARG_KEY, UINT&) const;
+
+public:
+ ~CMap();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE> inline functions
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline int CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetCount() const
+ { return m_nCount; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::IsEmpty() const
+ { return m_nCount == 0; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::SetAt(ARG_KEY key, ARG_VALUE newValue)
+ { (*this)[key] = newValue; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline POSITION CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline UINT CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE> out-of-line functions
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CMap(int nBlockSize)
+{
+ ASSERT(nBlockSize > 0);
+
+ m_pHashTable = NULL;
+ m_nHashTableSize = 17; // default size
+ m_nCount = 0;
+ m_pFreeList = NULL;
+ m_pBlocks = NULL;
+ m_nBlockSize = nBlockSize;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::InitHashTable(
+ UINT nHashSize, BOOL bAllocNow)
+//
+// Used to force allocation of a hash table or to override the default
+// hash table size of (which is fairly small)
+{
+ ASSERT_VALID(this);
+ ASSERT(m_nCount == 0);
+ ASSERT(nHashSize > 0);
+
+ if (m_pHashTable != NULL)
+ {
+ // free hash table
+ delete[] m_pHashTable;
+ m_pHashTable = NULL;
+ }
+
+ if (bAllocNow)
+ {
+ m_pHashTable = new CAssoc* [nHashSize];
+ memset(m_pHashTable, 0, sizeof(CAssoc*) * nHashSize);
+ }
+ m_nHashTableSize = nHashSize;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::RemoveAll()
+{
+ ASSERT_VALID(this);
+
+ if (m_pHashTable != NULL)
+ {
+ // destroy elements (values and keys)
+ for (UINT nHash = 0; nHash < m_nHashTableSize; nHash++)
+ {
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL;
+ pAssoc = pAssoc->pNext)
+ {
+ DestructElements(&pAssoc->value, 1);
+ DestructElements(&pAssoc->key, 1);
+ }
+ }
+ }
+
+ // free hash table
+ delete[] m_pHashTable;
+ m_pHashTable = NULL;
+
+ m_nCount = 0;
+ m_pFreeList = NULL;
+ m_pBlocks->FreeDataChain();
+ m_pBlocks = NULL;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::~CMap()
+{
+ RemoveAll();
+ ASSERT(m_nCount == 0);
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CAssoc*
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::NewAssoc()
+{
+ if (m_pFreeList == NULL)
+ {
+ // add another block
+ CPlex* newBlock = CPlex::Create(m_pBlocks, m_nBlockSize, sizeof(CMap::CAssoc));
+ // chain them into free list
+ CMap::CAssoc* pAssoc = (CMap::CAssoc*) newBlock->data();
+ // free in reverse order to make it easier to debug
+ pAssoc += m_nBlockSize - 1;
+ for (int i = m_nBlockSize-1; i >= 0; i--, pAssoc--)
+ {
+ pAssoc->pNext = m_pFreeList;
+ m_pFreeList = pAssoc;
+ }
+ }
+ ASSERT(m_pFreeList != NULL); // we must have something
+
+ CMap::CAssoc* pAssoc = m_pFreeList;
+ m_pFreeList = m_pFreeList->pNext;
+ m_nCount++;
+ ASSERT(m_nCount > 0); // make sure we don't overflow
+ ConstructElements(&pAssoc->key, 1);
+ ConstructElements(&pAssoc->value, 1); // special construct values
+ return pAssoc;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::FreeAssoc(CMap::CAssoc* pAssoc)
+{
+ DestructElements(&pAssoc->value, 1);
+ DestructElements(&pAssoc->key, 1);
+ pAssoc->pNext = m_pFreeList;
+ m_pFreeList = pAssoc;
+ m_nCount--;
+ ASSERT(m_nCount >= 0); // make sure we don't underflow
+
+ // if no more elements, cleanup completely
+ if (m_nCount == 0)
+ RemoveAll();
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CAssoc*
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetAssocAt(ARG_KEY key, UINT& nHash) const
+// find association (or return NULL)
+{
+ nHash = HashKey(key) % m_nHashTableSize;
+
+ if (m_pHashTable == NULL)
+ return NULL;
+
+ // see if it exists
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL; pAssoc = pAssoc->pNext)
+ {
+ if (CompareElements(&pAssoc->key, &key))
+ return pAssoc;
+ }
+ return NULL;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Lookup(ARG_KEY key, VALUE& rValue) const
+{
+ ASSERT_VALID(this);
+
+ UINT nHash;
+ CAssoc* pAssoc = GetAssocAt(key, nHash);
+ if (pAssoc == NULL)
+ return FALSE; // not in map
+
+ rValue = pAssoc->value;
+ return TRUE;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+VALUE& CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::operator[](ARG_KEY key)
+{
+ ASSERT_VALID(this);
+
+ UINT nHash;
+ CAssoc* pAssoc;
+ if ((pAssoc = GetAssocAt(key, nHash)) == NULL)
+ {
+ if (m_pHashTable == NULL)
+ InitHashTable(m_nHashTableSize);
+
+ // it doesn't exist, add a new Association
+ pAssoc = NewAssoc();
+ pAssoc->nHashValue = nHash;
+ pAssoc->key = key;
+ // 'pAssoc->value' is a constructed object, nothing more
+
+ // put into hash table
+ pAssoc->pNext = m_pHashTable[nHash];
+ m_pHashTable[nHash] = pAssoc;
+ }
+ return pAssoc->value; // return new reference
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::RemoveKey(ARG_KEY key)
+// remove key - return TRUE if removed
+{
+ ASSERT_VALID(this);
+
+ if (m_pHashTable == NULL)
+ return FALSE; // nothing in the table
+
+ CAssoc** ppAssocPrev;
+ ppAssocPrev = &m_pHashTable[HashKey(key) % m_nHashTableSize];
+
+ CAssoc* pAssoc;
+ for (pAssoc = *ppAssocPrev; pAssoc != NULL; pAssoc = pAssoc->pNext)
+ {
+ if (CompareElements(&pAssoc->key, &key))
+ {
+ // remove it
+ *ppAssocPrev = pAssoc->pNext; // remove from list
+ FreeAssoc(pAssoc);
+ return TRUE;
+ }
+ ppAssocPrev = &pAssoc->pNext;
+ }
+ return FALSE; // not found
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetNextAssoc(POSITION& rNextPosition,
+ KEY& rKey, VALUE& rValue) const
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pHashTable != NULL); // never call on empty map
+
+ CAssoc* pAssocRet = (CAssoc*)rNextPosition;
+ ASSERT(pAssocRet != NULL);
+
+ if (pAssocRet == (CAssoc*) BEFORE_START_POSITION)
+ {
+ // find the first association
+ for (UINT nBucket = 0; nBucket < m_nHashTableSize; nBucket++)
+ if ((pAssocRet = m_pHashTable[nBucket]) != NULL)
+ break;
+ ASSERT(pAssocRet != NULL); // must find something
+ }
+
+ // find next association
+ ASSERT(AfxIsValidAddress(pAssocRet, sizeof(CAssoc)));
+ CAssoc* pAssocNext;
+ if ((pAssocNext = pAssocRet->pNext) == NULL)
+ {
+ // go to next bucket
+ for (UINT nBucket = pAssocRet->nHashValue + 1;
+ nBucket < m_nHashTableSize; nBucket++)
+ if ((pAssocNext = m_pHashTable[nBucket]) != NULL)
+ break;
+ }
+
+ rNextPosition = (POSITION) pAssocNext;
+
+ // fill in return data
+ rKey = pAssocRet->key;
+ rValue = pAssocRet->value;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+
+ if (ar.IsStoring())
+ {
+ ar.WriteCount(m_nCount);
+ if (m_nCount == 0)
+ return; // nothing more to do
+
+ ASSERT(m_pHashTable != NULL);
+ for (UINT nHash = 0; nHash < m_nHashTableSize; nHash++)
+ {
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL;
+ pAssoc = pAssoc->pNext)
+ {
+ SerializeElements(ar, &pAssoc->key, 1);
+ SerializeElements(ar, &pAssoc->value, 1);
+ }
+ }
+ }
+ else
+ {
+ DWORD nNewCount = ar.ReadCount();
+ KEY newKey;
+ VALUE newValue;
+ while (nNewCount--)
+ {
+ SerializeElements(ar, &newKey, 1);
+ SerializeElements(ar, &newValue, 1);
+ SetAt(newKey, newValue);
+ }
+ }
+}
+
+#ifdef _DEBUG
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nCount << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ // Dump in format "[key] -> value"
+ KEY key;
+ VALUE val;
+
+ POSITION pos = GetStartPosition();
+ while (pos != NULL)
+ {
+ GetNextAssoc(pos, key, val);
+ dc << "\n\t[";
+ DumpElements(dc, &key, 1);
+ dc << "] = ";
+ DumpElements(dc, &val, 1);
+ }
+ }
+
+ dc << "\n";
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ ASSERT(m_nHashTableSize > 0);
+ ASSERT(m_nCount == 0 || m_pHashTable != NULL);
+ // non-empty map should have hash table
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrArray<BASE_CLASS, TYPE>
+
+template<class BASE_CLASS, class TYPE>
+class CTypedPtrArray : public BASE_CLASS
+{
+public:
+ // Accessing elements
+ TYPE GetAt(int nIndex) const
+ { return (TYPE)BASE_CLASS::GetAt(nIndex); }
+ TYPE& ElementAt(int nIndex)
+ { return (TYPE&)BASE_CLASS::ElementAt(nIndex); }
+
+ // overloaded operator helpers
+ TYPE operator[](int nIndex) const
+ { return (TYPE)BASE_CLASS::operator[](nIndex); }
+ TYPE& operator[](int nIndex)
+ { return (TYPE&)BASE_CLASS::operator[](nIndex); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrList<BASE_CLASS, TYPE>
+
+template<class BASE_CLASS, class TYPE>
+class CTypedPtrList : public BASE_CLASS
+{
+public:
+ // peek at head or tail
+ TYPE& GetHead()
+ { return (TYPE&)BASE_CLASS::GetHead(); }
+ TYPE GetHead() const
+ { return (TYPE)BASE_CLASS::GetHead(); }
+ TYPE& GetTail()
+ { return (TYPE&)BASE_CLASS::GetTail(); }
+ TYPE GetTail() const
+ { return (TYPE)BASE_CLASS::GetTail(); }
+
+ // get head or tail (and remove it) - don't call on empty list!
+ TYPE RemoveHead()
+ { return (TYPE)BASE_CLASS::RemoveHead(); }
+ TYPE RemoveTail()
+ { return (TYPE)BASE_CLASS::RemoveTail(); }
+
+ // iteration
+ TYPE& GetNext(POSITION& rPosition)
+ { return (TYPE&)BASE_CLASS::GetNext(rPosition); }
+ TYPE GetNext(POSITION& rPosition) const
+ { return (TYPE)BASE_CLASS::GetNext(rPosition); }
+ TYPE& GetPrev(POSITION& rPosition)
+ { return (TYPE&)BASE_CLASS::GetPrev(rPosition); }
+ TYPE GetPrev(POSITION& rPosition) const
+ { return (TYPE)BASE_CLASS::GetPrev(rPosition); }
+
+ // getting/modifying an element at a given position
+ TYPE& GetAt(POSITION position)
+ { return (TYPE&)BASE_CLASS::GetAt(position); }
+ TYPE GetAt(POSITION position) const
+ { return (TYPE)BASE_CLASS::GetAt(position); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrMap<BASE_CLASS, KEY, VALUE>
+
+template<class BASE_CLASS, class KEY, class VALUE>
+class CTypedPtrMap : public BASE_CLASS
+{
+public:
+ // Lookup
+ BOOL Lookup(BASE_CLASS::BASE_ARG_KEY key, VALUE& rValue) const
+ { return BASE_CLASS::Lookup(key, (BASE_CLASS::BASE_VALUE&)rValue); }
+
+ // Lookup and add if not there
+ VALUE& operator[](BASE_CLASS::BASE_ARG_KEY key)
+ { return (VALUE&)BASE_CLASS::operator[](key); }
+
+ // iteration
+ void GetNextAssoc(POSITION& rPosition, KEY& rKey, VALUE& rValue) const
+ { BASE_CLASS::GetNextAssoc(rPosition, (BASE_CLASS::BASE_KEY&)rKey,
+ (BASE_CLASS::BASE_VALUE&)rValue); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef THIS_FILE
+#define THIS_FILE __FILE__
+
+#undef new
+#ifdef _REDEF_NEW
+#define new DEBUG_NEW
+#undef _REDEF_NEW
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXTEMPL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxtls_.h b/public/sdk/inc/mfc40/afxtls_.h
new file mode 100644
index 000000000..db327e2cb
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxtls_.h
@@ -0,0 +1,241 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXTLS_H__
+#define __AFXTLS_H__
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+// Classes declared in this file
+
+class CSimpleList;
+class CThreadSlotData; // for manipulationg thread local storage
+class CThreadLocalObject; // for storing thread/process local data
+class CProcessLocalObject;
+class CNoTrackObject;
+// template class CTypedSimpleList<>
+// template class CThreadLocal<>
+// template class CProcessLocal<>
+
+/////////////////////////////////////////////////////////////////////////////
+// CSimpleList (simple/small subset of CList)
+
+class CSimpleList
+{
+public:
+ CSimpleList(int nNextOffset = 0);
+ void Construct(int nNextOffset);
+
+// Operations
+ BOOL IsEmpty() const;
+ void AddHead(void* p);
+ void RemoveAll();
+ void* GetHead() const;
+ void* GetNext(void* p) const;
+ BOOL Remove(void* p);
+
+// Implementation
+ void* m_pHead;
+ size_t m_nNextOffset;
+
+ void** GetNextPtr(void* p) const; // somewhat trusting...
+};
+
+inline CSimpleList::CSimpleList(int nNextOffset)
+ { m_pHead = NULL; m_nNextOffset = nNextOffset; }
+inline void CSimpleList::Construct(int nNextOffset)
+ { ASSERT(m_pHead == NULL); m_nNextOffset = nNextOffset; }
+inline BOOL CSimpleList::IsEmpty() const
+ { return m_pHead == NULL; }
+inline void** CSimpleList::GetNextPtr(void* p) const
+ { ASSERT(p != NULL); return (void**)((BYTE*)p+m_nNextOffset); }
+inline void CSimpleList::RemoveAll()
+ { m_pHead = NULL; }
+inline void* CSimpleList::GetHead() const
+ { return m_pHead; }
+inline void* CSimpleList::GetNext(void* prevElement) const
+ { return *GetNextPtr(prevElement); }
+
+template<class TYPE>
+class CTypedSimpleList : public CSimpleList
+{
+public:
+ CTypedSimpleList(int nNextOffset = 0)
+ : CSimpleList(nNextOffset) { }
+ void AddHead(TYPE p)
+ { CSimpleList::AddHead(p); }
+ TYPE GetHead()
+ { return (TYPE)CSimpleList::GetHead(); }
+ TYPE GetNext(TYPE p)
+ { return (TYPE)CSimpleList::GetNext(p); }
+ BOOL Remove(TYPE p)
+ { return CSimpleList::Remove((TYPE)p); }
+ operator TYPE()
+ { return (TYPE)CSimpleList::GetHead(); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CThreadSlotData - manages owned array of "slots" for thread local storage
+
+struct CThreadData; // private to implementation
+struct CSlotData; // private to implementation
+
+class CThreadSlotData
+{
+public:
+ CThreadSlotData(BOOL bThreadLocal);
+
+// Operations
+ int AllocSlot();
+ void FreeSlot(int nSlot);
+ void* GetValue(int nSlot);
+ void SetValue(int nSlot, void* pValue);
+ void DeleteValues(HINSTANCE hInst); // delete all values in process/thread
+ void AssignInstance(HINSTANCE hInst);
+
+// Implementation
+ DWORD m_tlsIndex; // used if bThreadLocal == TRUE
+ CThreadData* m_pData; // used if bThreadLocal == FALSE
+
+ int m_nAlloc; // number of slots allocated (in UINTs)
+ int m_nRover; // (optimization) for quick finding of free slots
+ int m_nMax; // size of slot table below (in bits)
+ CSlotData* m_pSlotData; // state of each slot (allocated or not)
+ CTypedSimpleList<CThreadData*> m_list; // list of CThreadData structures
+ CRITICAL_SECTION m_sect;
+
+ void* GetThreadValue(int nSlot); // special version for threads only!
+ void* PASCAL operator new(size_t, void* p)
+ { return p; }
+ ~CThreadSlotData();
+};
+
+class CNoTrackObject
+{
+public:
+ void* PASCAL operator new(size_t nSize);
+ void PASCAL operator delete(void*);
+
+#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
+ void* PASCAL operator new(size_t nSize, LPCSTR, int);
+#endif
+ virtual ~CNoTrackObject() { }
+};
+
+class CThreadLocalObject
+{
+public:
+// Attributes
+ CNoTrackObject* GetData(CNoTrackObject* (AFXAPI* pfnCreateObject)());
+ CNoTrackObject* GetDataNA();
+
+// Implementation
+ int m_nSlot;
+ ~CThreadLocalObject();
+};
+
+class CProcessLocalObject
+{
+public:
+// Attributes
+ CNoTrackObject* GetData(CNoTrackObject* (AFXAPI* pfnCreateObject)());
+ CNoTrackObject* GetDataNA();
+
+// Implementation
+ int m_nSlot;
+ ~CProcessLocalObject();
+};
+
+template<class TYPE>
+class CThreadLocal : public CThreadLocalObject
+{
+// Attributes
+public:
+ inline TYPE* GetData()
+ {
+ TYPE* pData = (TYPE*)CThreadLocalObject::GetData(&CreateObject);
+ ASSERT(pData != NULL);
+ return pData;
+ }
+ inline TYPE* GetDataNA()
+ {
+ TYPE* pData = (TYPE*)CThreadLocalObject::GetDataNA();
+ return pData;
+ }
+ inline operator TYPE*()
+ { return GetData(); }
+ inline TYPE* operator->()
+ { return GetData(); }
+
+// Implementation
+public:
+ static CNoTrackObject* AFXAPI CreateObject()
+ { return new TYPE; }
+};
+
+#define THREAD_LOCAL(class_name, ident_name) \
+ AFX_DATADEF CThreadLocal<class_name> ident_name;
+#define EXTERN_THREAD_LOCAL(class_name, ident_name) \
+ extern AFX_DATA THREAD_LOCAL(class_name, ident_name)
+
+template<class TYPE>
+class CProcessLocal : public CProcessLocalObject
+{
+// Attributes
+public:
+ inline TYPE* GetData()
+ {
+ TYPE* pData = (TYPE*)CProcessLocalObject::GetData(&CreateObject);
+ ASSERT(pData != NULL);
+ return pData;
+ }
+ inline TYPE* GetDataNA()
+ {
+ TYPE* pData = (TYPE*)CProcessLocalObject::GetDataNA();
+ return pData;
+ }
+ inline operator TYPE*()
+ { return GetData(); }
+ inline TYPE* operator->()
+ { return GetData(); }
+
+// Implementation
+public:
+ static CNoTrackObject* AFXAPI CreateObject()
+ { return new TYPE; }
+};
+
+#define PROCESS_LOCAL(class_name, ident_name) \
+ AFX_DATADEF CProcessLocal<class_name> ident_name;
+#define EXTERN_PROCESS_LOCAL(class_name, ident_name) \
+ extern AFX_DATA PROCESS_LOCAL(class_name, ident_name)
+
+/////////////////////////////////////////////////////////////////////////////
+
+void AFXAPI AfxInitLocalData(HINSTANCE hInstInit);
+void AFXAPI AfxTermLocalData(HINSTANCE hInstTerm);
+void AFXAPI AfxTlsAddRef();
+void AFXAPI AfxTlsRelease();
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXTLS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxv_cfg.h b/public/sdk/inc/mfc40/afxv_cfg.h
new file mode 100644
index 000000000..dca730f40
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxv_cfg.h
@@ -0,0 +1,17 @@
+// afxv_cfg.h - target configuration control for non-Microsoft compilers
+//
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// You can define _AFX_PORTABLE in order to keep the library from using
+// certain Microsoft extensions that are not commonly implemented by
+// other compilers.
+
+#define _AFX_PORTABLE
diff --git a/public/sdk/inc/mfc40/afxv_cpu.h b/public/sdk/inc/mfc40/afxv_cpu.h
new file mode 100644
index 000000000..d38001152
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxv_cpu.h
@@ -0,0 +1,63 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_cpu.h - target version/configuration control for non-Intel CPUs
+
+#if !defined(_M_MRX000) && !defined(_M_ALPHA) && !defined(_M_PPC) && !defined(_M_M68K) && !defined(_M_MPPC)
+ #error afxv_cpu.h is only for MIPS R4000, DEC AXP, Motorola M68000, and IBM PowerPC builds
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _M_M68K
+// specific overrides for M68K...
+#define AFXAPI __cdecl
+#define AFXOLEAPI __pascal
+#ifndef _AFX_NO_DEBUG_CRT
+ #define _AFX_NO_DEBUG_CRT
+#endif
+#endif //_M_M68K
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _M_MPPC
+// specific overrides for MPPC...
+#define AFXAPI __cdecl
+#endif //_M_MPPC
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _MIPS_
+// specific overrides for MIPS...
+#define _AFX_PACKING 8 // default MIPS alignment (required)
+#endif //_MIPS_
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _ALPHA_
+// specific overrides for ALPHA...
+#define _AFX_PACKING 8 // default AXP alignment (required)
+#ifdef _AFX_NO_DEBUG_CRT
+extern "C" void _BPT();
+#pragma intrinsic(_BPT)
+#define AfxDebugBreak() _BPT()
+#else
+#define AfxDebugBreak() _CrtDbgBreak()
+#endif
+#endif //_ALPHA_
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _PPC_
+// specific overrides for PPC...
+#define _AFX_PACKING 8 // default PPC alignment (required)
+#endif //_PPC_
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxv_dll.h b/public/sdk/inc/mfc40/afxv_dll.h
new file mode 100644
index 000000000..b22778a5d
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxv_dll.h
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// special header for _AFXDLL variant.
+
+// default AFX_XXX_DATA and AFX_XXX_DATADEF macros for using MFC DLLs
+
+#ifndef AFX_CORE_DATA
+ #define AFX_CORE_DATA AFX_DATA_IMPORT
+ #define AFX_CORE_DATADEF
+#endif
+
+#ifndef AFX_OLE_DATA
+ #define AFX_OLE_DATA AFX_DATA_IMPORT
+ #define AFX_OLE_DATADEF
+#endif
+
+#ifndef AFX_DB_DATA
+ #define AFX_DB_DATA AFX_DATA_IMPORT
+ #define AFX_DB_DATADEF
+#endif
+
+#ifndef AFX_NET_DATA
+ #define AFX_NET_DATA AFX_DATA_IMPORT
+ #define AFX_NET_DATADEF
+#endif
+
+// default AFX_EXT_DATA and AFX_EXT_DATADEF macros for using or
+// creating MFC extension DLLs, depending on _AFX_EXT_IMPL
+// AFX_EXT_CLASS can be used to import or export entire classes
+// in an extension DLL without the hassle of creating a .DEF file
+// with decorated names.
+
+#ifndef AFX_EXT_DATA
+ #ifdef _AFXEXT
+ #define AFX_EXT_CLASS AFX_CLASS_EXPORT
+ #define AFX_EXT_API AFX_API_EXPORT
+ #define AFX_EXT_DATA AFX_DATA_EXPORT
+ #define AFX_EXT_DATADEF
+ #else
+ #define AFX_EXT_CLASS AFX_CLASS_IMPORT
+ #define AFX_EXT_API AFX_API_IMPORT
+ #define AFX_EXT_DATA AFX_DATA_IMPORT
+ #define AFX_EXT_DATADEF
+ #endif
+#endif
diff --git a/public/sdk/inc/mfc40/afxv_mac.h b/public/sdk/inc/mfc40/afxv_mac.h
new file mode 100644
index 000000000..7a1dc5c00
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxv_mac.h
@@ -0,0 +1,51 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_mac.h - target version/configuration control for Macintosh OS
+
+#if !defined(_MAC)
+ #error afxv_mac.h is used only for Macintosh-targeted builds
+#endif
+
+#if !defined(_M_M68K) && !defined(_M_MPPC)
+ #error afxv_mac.h is used only for Motorola M68000 and Motorola PowerPC builds
+#endif
+
+#define SystemSevenOrLater 1
+
+#define _beginthreadex(p1, p2, p3, p4, p5, p6) NULL
+#define _endthreadex(p1)
+
+// wcslen is defined in wlm
+extern "C" size_t WINAPI wcslen(const wchar_t*);
+
+#ifdef _68K_
+ #define _AFX_NO_DEBUG_CRT
+#endif
+
+#define _AFX_NO_SYNC_SUPPORT
+#define _AFX_NO_DAO_SUPPORT
+#define _AFX_NO_SOCKET_SUPPORT
+#define _AFX_NO_OCX_SUPPORT
+#define _AFX_NO_OCC_SUPPORT
+
+#define OLE2ANSI
+
+#ifdef _AFX_NO_DEBUG_CRT
+#ifdef _68K_
+ pascal void _AfxDebugBreak(void) = 0xA9FF;
+ #define AfxDebugBreak() _AfxDebugBreak()
+#else
+ extern "C" pascal void Debugger(void);
+ #define AfxDebugBreak() Debugger()
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxv_w32.h b/public/sdk/inc/mfc40/afxv_w32.h
new file mode 100644
index 000000000..e97a5f210
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxv_w32.h
@@ -0,0 +1,208 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_w32.h - target version/configuration control for Win32
+
+#ifdef _WINDOWS_
+ #error WINDOWS.H already included. MFC apps must not #include <windows.h>
+#endif
+
+// STRICT is the only supported option (NOSTRICT is no longer supported)
+#ifndef STRICT
+#define STRICT 1
+#endif
+
+// certain parts of WINDOWS.H are necessary
+#undef NOKERNEL
+#undef NOGDI
+#undef NOUSER
+#undef NODRIVERS
+#undef NOLOGERROR
+#undef NOPROFILER
+#undef NOMEMMGR
+#undef NOLFILEIO
+#undef NOOPENFILE
+#undef NORESOURCE
+#undef NOATOM
+#undef NOLANGUAGE
+#undef NOLSTRING
+#undef NODBCS
+#undef NOKEYBOARDINFO
+#undef NOGDICAPMASKS
+#undef NOCOLOR
+#undef NOGDIOBJ
+#undef NODRAWTEXT
+#undef NOTEXTMETRIC
+#undef NOSCALABLEFONT
+#undef NOBITMAP
+#undef NORASTEROPS
+#undef NOMETAFILE
+#undef NOSYSMETRICS
+#undef NOSYSTEMPARAMSINFO
+#undef NOMSG
+#undef NOWINSTYLES
+#undef NOWINOFFSETS
+#undef NOSHOWWINDOW
+#undef NODEFERWINDOWPOS
+#undef NOVIRTUALKEYCODES
+#undef NOKEYSTATES
+#undef NOWH
+#undef NOMENUS
+#undef NOSCROLL
+#undef NOCLIPBOARD
+#undef NOICONS
+#undef NOMB
+#undef NOSYSCOMMANDS
+#undef NOMDI
+#undef NOCTLMGR
+#undef NOWINMESSAGES
+
+#ifndef WIN32
+#define WIN32
+#endif
+
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+
+#ifdef _UNICODE
+#ifndef UNICODE
+#define UNICODE // UNICODE is used by Windows headers
+#endif
+#endif
+
+#ifdef UNICODE
+#ifndef _UNICODE
+#define _UNICODE // _UNICODE is used by C-runtime/MFC headers
+#endif
+#endif
+
+#ifdef VC_EXTRALEAN
+#define WIN32_EXTRA_LEAN
+#define NOSERVICE
+#define NOMCX
+#define NOIME
+#define NOSOUND
+#define NOCOMM
+#define NOKANJI
+#define NORPC
+#define NOPROXYSTUB
+#define NOIMAGE
+#define NOTAPE
+
+#ifndef NO_ANSIUNI_ONLY
+#ifdef _UNICODE
+#define UNICODE_ONLY
+#else
+#define ANSI_ONLY
+#endif
+#endif //!NO_ANSIUNI_ONLY
+
+#endif //VC_EXTRALEAN
+
+#ifdef _MAC
+#define _WIN32NLS
+#define _WIN32REG
+#define _WLM_NOFORCE_LIBS
+#ifdef _AFXDLL
+#define _WLMDLL
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+
+#ifndef ALL_WARNINGS
+#pragma warning(disable: 4201) // winnt.h uses nameless structs
+#endif
+
+#include <windows.h>
+
+struct HKEY__;
+typedef struct HKEY__ *HKEY;
+
+#ifndef _INC_COMMCTRL
+ #include <commctrl.h>
+#endif
+
+#ifndef EXPORT
+#define EXPORT
+#endif
+
+#ifndef _INC_TCHAR
+ #include <tchar.h> // used for ANSI v.s. UNICODE abstraction
+#endif
+#ifdef _MBCS
+#ifndef _INC_MBCTYPE
+ #include <mbctype.h>
+#endif
+#ifndef _INC_MBSTRING
+ #include <mbstring.h>
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Now for the Windows API specific parts
+
+// WM_CTLCOLOR for 16 bit API compatability
+#define WM_CTLCOLOR 0x0019
+
+// Win32 uses macros with parameters for this, which breaks C++ code.
+#ifdef GetWindowTask
+#undef GetWindowTask
+inline HTASK GetWindowTask(HWND hWnd)
+ { return (HTASK)::GetWindowThreadProcessId(hWnd, NULL); }
+#endif
+
+// Win32 uses macros with parameters for this, which breaks C++ code.
+#ifdef GetNextWindow
+#undef GetNextWindow
+inline HWND GetNextWindow(HWND hWnd, UINT nDirection)
+ { return ::GetWindow(hWnd, nDirection); }
+#endif
+
+// Avoid Win95 mapping CToolBar::DrawState to DrawState[A/W]
+#ifdef DrawState
+#undef DrawState
+inline BOOL WINAPI DrawState(HDC hdc, HBRUSH hbr, DRAWSTATEPROC lpOutputFunc,
+ LPARAM lData, WPARAM wData, int x, int y, int cx, int cy, UINT fuFlags)
+#ifdef UNICODE
+ { return ::DrawStateW(hdc, hbr, lpOutputFunc, lData, wData, x, y, cx, cy,
+ fuFlags); }
+#else
+ { return ::DrawStateA(hdc, hbr, lpOutputFunc, lData, wData, x, y, cx, cy,
+ fuFlags); }
+#endif
+#endif
+
+// Avoid Win95 mapping CStatusBar::DrawStatusText to DrawStatusText[A/W]
+#ifdef DrawStatusText
+#undef DrawStatusText
+inline void WINAPI DrawStatusText(HDC hDC, LPRECT lprc, LPCTSTR szText,
+ UINT uFlags)
+#ifdef UNICODE
+ { ::DrawStatusTextW(hDC, lprc, szText, uFlags); }
+#else
+ { ::DrawStatusTextA(hDC, lprc, szText, uFlags); }
+#endif
+#endif
+
+#ifndef _MAC
+// FreeResource is not required except on Mac platforms
+#undef FreeResource
+inline BOOL WINAPI FreeResource(HGLOBAL) { return TRUE; }
+// UnlockResource is not required except on Mac platforms
+#undef UnlockResource
+inline int WINAPI UnlockResource(HGLOBAL) { return 0; }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxver_.h b/public/sdk/inc/mfc40/afxver_.h
new file mode 100644
index 000000000..6aed917a2
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxver_.h
@@ -0,0 +1,326 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxver_.h - target version/configuration control
+
+/////////////////////////////////////////////////////////////////////////////
+// Master version numbers
+
+#define _AFX 1 // Microsoft Application Framework Classes
+#define _MFC_VER 0x0410 // Microsoft Foundation Classes version 4.10
+
+/////////////////////////////////////////////////////////////////////////////
+// Default swap tuning for AFX library
+
+#ifndef _68K_
+ #define _TEXTSEG(name) ".text$" #name
+#else
+ #define _TEXTSEG(name) #name, "swappable"
+#endif
+
+// Most segments are tuned via function order list (DLL version)
+#ifndef _AFX_FUNCTION_ORDER
+#define AFX_CORE1_SEG _TEXTSEG(AFX_CORE1) // core functionality
+#define AFX_CORE2_SEG _TEXTSEG(AFX_CORE2) // more core functionality
+#define AFX_CORE3_SEG _TEXTSEG(AFX_CORE3) // more core functionality
+#define AFX_CORE4_SEG _TEXTSEG(AFX_CORE4) // more core functionality
+#define AFX_AUX_SEG _TEXTSEG(AFX_AUX) // auxilliary functionality
+#define AFX_COLL_SEG _TEXTSEG(AFX_COL1) // collections
+#define AFX_COLL2_SEG _TEXTSEG(AFX_COL2) // more collections
+#define AFX_OLE_SEG _TEXTSEG(AFX_OLE1) // OLE support
+#define AFX_OLE2_SEG _TEXTSEG(AFX_OLE2) // more OLE support
+#define AFX_OLE3_SEG _TEXTSEG(AFX_OLE3) // and more OLE support
+#define AFX_OLE4_SEG _TEXTSEG(AFX_OLE4) // and more OLE support
+#define AFX_OLE5_SEG _TEXTSEG(AFX_OLE5) // and even more OLE support
+#define AFX_OLERA_SEG _TEXTSEG(AFX_OLERA) // (reserved for future use)
+#define AFX_PRINT_SEG _TEXTSEG(AFX_PRNT) // Printing functionality
+#define AFX_DBG1_SEG _TEXTSEG(AFX_DBG1) // inlines go here in _DEBUG
+#define AFX_DBG2_SEG _TEXTSEG(AFX_DBG2) // inlines go here in _DEBUG
+#define AFX_VDEL_SEG _TEXTSEG(AFX_VDEL) // vector deleting destructors
+#define AFX_TERM_SEG _TEXTSEG(AFX_TERM) // cleanup routines
+#define AFX_MAPI_SEG _TEXTSEG(AFX_MAPI) // simple MAPI support
+#define AFX_SOCK_SEG _TEXTSEG(AFX_SOCK) // windows sockets support
+#else
+#define AFX_CORE1_SEG // core functionality
+#define AFX_CORE2_SEG // more core functionality
+#define AFX_CORE3_SEG // more core functionality
+#define AFX_CORE4_SEG // more core functionality
+#define AFX_AUX_SEG // auxilliary functionality
+#define AFX_COLL_SEG // collections
+#define AFX_COLL2_SEG // more collections
+#define AFX_OLE_SEG // OLE support
+#define AFX_OLE2_SEG // more OLE support
+#define AFX_OLE3_SEG // and more OLE support
+#define AFX_OLE4_SEG // and more OLE support
+#define AFX_OLE5_SEG // and even more OLE support
+#define AFX_OLERA_SEG // (reserved for future use)
+#define AFX_PRINT_SEG // Printing functionality
+#define AFX_DBG1_SEG // inlines go here in _DEBUG
+#define AFX_DBG2_SEG // inlines go here in _DEBUG
+#define AFX_VDEL_SEG // vector deleting destructors
+#define AFX_TERM_SEG // cleanup routines
+#define AFX_MAPI_SEG // simple MAPI support
+#define AFX_SOCK_SEG // windows sockets support
+#endif
+
+// AFX_INIT_SEG is hand tuned even in DLL version
+#define AFX_INIT_SEG _TEXTSEG(AFX_INIT) // initialization
+
+/////////////////////////////////////////////////////////////////////////////
+// turn off reference tracking for certain often used symbols
+
+#ifndef _AFX_PORTABLE
+#pragma component(browser, off, references, "ASSERT")
+#pragma component(browser, off, references, "AfxAssertFailedLine")
+#pragma component(browser, off, references, "AfxDebugBreak")
+#pragma component(browser, off, references, "BOOL")
+#pragma component(browser, off, references, "BYTE")
+#pragma component(browser, off, references, "DECLSPEC_IMPORT")
+#pragma component(browser, off, references, "DWORD")
+#pragma component(browser, off, references, "FALSE")
+#pragma component(browser, off, references, "FAR")
+#pragma component(browser, off, references, "LPSTR")
+#pragma component(browser, off, references, "NULL")
+#pragma component(browser, off, references, "PASCAL")
+#pragma component(browser, off, references, "THIS_FILE")
+#pragma component(browser, off, references, "TRUE")
+#pragma component(browser, off, references, "UINT")
+#pragma component(browser, off, references, "WINAPI")
+#pragma component(browser, off, references, "WORD")
+#endif //!_AFX_PORTABLE
+
+/////////////////////////////////////////////////////////////////////////////
+// For target version (one of)
+// _CUSTOM : for custom configurations (causes afxv_cfg.h to be included)
+//
+// Additional build options:
+// _DEBUG debug versions (full diagnostics)
+// _AFXDLL use shared MFC DLL
+// _AFXEXT extension DLL version, implies _AFXDLL
+// _USRDLL create regular DLL (_AFXDLL is valid too)
+//
+
+#ifndef _DEBUG
+ #define _AFX_ENABLE_INLINES
+#endif
+
+#define _AFX_NO_NESTED_DERIVATION
+
+/////////////////////////////////////////////////////////////////////////////
+// Special configurations
+
+// _AFXEXT implies _AFXDLL
+#if defined(_AFXEXT) && !defined(_AFXDLL)
+ #define _AFXDLL
+#endif
+
+#if defined(_AFXDLL) && !defined(_DLL)
+ #error Please use the /MD switch for _AFXDLL builds
+#endif
+
+#ifndef _MAC
+#if defined(_AFXDLL) && !defined(_MT)
+ #error Please use the /MD switch (multithreaded DLL C-runtime)
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// special include files
+
+#include <afxv_w32.h>
+
+// Include any non-Intel platform specific items
+#ifndef _X86_
+ #include <afxv_cpu.h>
+#endif
+
+// Include any non-Windows OS-specific items
+#ifdef _MAC
+ #include <afxv_mac.h>
+#endif
+
+#if defined(_X86_) || defined(_MAC)
+ #define _AFX_MINREBUILD
+#endif
+
+#ifdef _CUSTOM
+// Put any custom configuration items in afxv_cfg.h
+ #include <afxv_cfg.h>
+#endif
+
+// setup default packing value
+#ifndef _AFX_PACKING
+ #define _AFX_PACKING 4 // default packs structs at 4 bytes
+#endif
+
+#ifdef _AFXDLL
+ #include <afxv_dll.h>
+#else
+ #define _AFX_NO_OCX_SUPPORT
+#endif
+
+// Define this virtual key for use by status bar
+#ifndef VK_KANA
+#define VK_KANA 0x15
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Special AfxDebugBreak: used to break into debugger at critical times
+
+#ifndef AfxDebugBreak
+#ifdef _AFX_NO_DEBUG_CRT
+// by default, debug break is asm int 3, or a call to DebugBreak, or nothing
+#if defined(_M_IX86) && !defined(_AFX_PORTABLE)
+#define AfxDebugBreak() _asm { int 3 }
+#else
+#define AfxDebugBreak() DebugBreak()
+#endif
+#else
+#define AfxDebugBreak() _CrtDbgBreak()
+#endif
+#endif
+
+#ifndef _DEBUG
+#ifdef AfxDebugBreak
+#undef AfxDebugBreak
+#endif
+#define AfxDebugBreak()
+#endif // _DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard preprocessor symbols if not already defined
+/////////////////////////////////////////////////////////////////////////////
+
+// SIZE_T_MAX is used by the collection classes
+#ifndef SIZE_T_MAX
+ #define SIZE_T_MAX UINT_MAX
+#endif
+
+// PASCAL is used for static member functions
+#ifndef PASCAL
+ #define PASCAL
+#endif
+
+// CDECL and EXPORT are defined in case WINDOWS.H doesn't
+#ifndef CDECL
+ #define CDECL __cdecl
+#endif
+
+#ifndef EXPORT
+ #define EXPORT
+#endif
+
+// UNALIGNED is used for unaligned data access (in CArchive mostly)
+#ifndef UNALIGNED
+ #define UNALIGNED
+#endif
+
+// AFXAPI is used on global public functions
+#ifndef AFXAPI
+ #define AFXAPI __stdcall
+#endif
+
+// AFXOLEAPI is used for some special OLE functions
+#ifndef AFXOLEAPI
+ #define AFXOLEAPI __stdcall
+#endif
+
+// AFX_CDECL is used for rare functions taking variable arguments
+#ifndef AFX_CDECL
+ #define AFX_CDECL __cdecl
+#endif
+
+// AFX_EXPORT is used for functions which need to be exported
+#ifndef AFX_EXPORT
+ #define AFX_EXPORT EXPORT
+#endif
+
+// The following macros are used to enable export/import
+
+// for data
+#ifndef AFX_DATA_EXPORT
+ #define AFX_DATA_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_DATA_IMPORT
+ #define AFX_DATA_IMPORT __declspec(dllimport)
+#endif
+
+// for classes
+#ifndef AFX_CLASS_EXPORT
+ #define AFX_CLASS_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_CLASS_IMPORT
+ #define AFX_CLASS_IMPORT __declspec(dllimport)
+#endif
+
+// for global APIs
+#ifndef AFX_API_EXPORT
+ #define AFX_API_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_API_IMPORT
+ #define AFX_API_IMPORT __declspec(dllimport)
+#endif
+
+// The following macros are used on data declarations/definitions
+// (they are redefined for extension DLLs and the shared MFC DLL)
+#define AFX_DATA
+#define AFX_DATADEF
+
+// used when building the "core" MFC40.DLL
+#ifndef AFX_CORE_DATA
+ #define AFX_CORE_DATA
+ #define AFX_CORE_DATADEF
+#endif
+
+// used when building the MFC/OLE support MFCO40.DLL
+#ifndef AFX_OLE_DATA
+ #define AFX_OLE_DATA
+ #define AFX_OLE_DATADEF
+#endif
+
+// used when building the MFC/DB support MFCD40.DLL
+#ifndef AFX_DB_DATA
+ #define AFX_DB_DATA
+ #define AFX_DB_DATADEF
+#endif
+
+// used when building the MFC/NET support MFCN40.DLL
+#ifndef AFX_NET_DATA
+ #define AFX_NET_DATA
+ #define AFX_NET_DATADEF
+#endif
+
+// used when building extension DLLs
+#ifndef AFX_EXT_DATA
+ #define AFX_EXT_DATA
+ #define AFX_EXT_DATADEF
+ #define AFX_EXT_CLASS
+ #define AFX_EXT_API
+#endif
+
+// BASED_XXXX macros are provided for backward compatibility
+#ifndef BASED_CODE
+ #define BASED_CODE
+#endif
+
+#ifndef BASED_DEBUG
+ #define BASED_DEBUG
+#endif
+
+#ifndef BASED_STACK
+ #define BASED_STACK
+#endif
+
+// setup default code segment
+#ifdef AFX_DEF_SEG
+ #pragma code_seg(AFX_DEF_SEG)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxwin.h b/public/sdk/inc/mfc40/afxwin.h
new file mode 100644
index 000000000..ae0218ed0
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxwin.h
@@ -0,0 +1,4498 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXWIN_H__
+#ifndef RC_INVOKED
+#define __AFXWIN_H__
+
+/////////////////////////////////////////////////////////////////////////////
+// Make sure 'afx.h' is included first
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+// Note: WINDOWS.H already included from AFXV_W32.H
+
+#ifndef _INC_SHELLAPI
+ #include <shellapi.h>
+#endif
+
+#ifndef __AFXRES_H__
+ #include <afxres.h> // standard resource IDs
+#endif
+
+#ifndef __AFXCOLL_H__
+ #include <afxcoll.h> // standard collections
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _INC_WINDOWSX
+// The following names from WINDOWSX.H collide with names in this header
+#undef SubclassWindow
+#undef CopyRgn
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+class CSize;
+class CPoint;
+class CRect;
+
+//CObject
+ //CException
+ //CSimpleException
+ class CResourceException;// Win resource failure exception
+ class CUserException; // Message Box alert and stop operation
+
+ class CGdiObject; // CDC drawing tool
+ class CPen; // a pen / HPEN wrapper
+ class CBrush; // a brush / HBRUSH wrapper
+ class CFont; // a font / HFONT wrapper
+ class CBitmap; // a bitmap / HBITMAP wrapper
+ class CPalette; // a palette / HPALLETE wrapper
+ class CRgn; // a region / HRGN wrapper
+
+ class CDC; // a Display Context / HDC wrapper
+ class CClientDC; // CDC for client of window
+ class CWindowDC; // CDC for entire window
+ class CPaintDC; // embeddable BeginPaint struct helper
+
+ class CMenu; // a menu / HMENU wrapper
+
+ class CCmdTarget; // a target for user commands
+ class CWnd; // a window / HWND wrapper
+ class CDialog; // a dialog
+
+ // standard windows controls
+ class CStatic; // Static control
+ class CButton; // Button control
+ class CListBox; // ListBox control
+ class CCheckListBox;// special listbox with checks
+ class CComboBox; // ComboBox control
+ class CEdit; // Edit control
+ class CScrollBar; // ScrollBar control
+
+ // frame windows
+ class CFrameWnd; // standard SDI frame
+ class CMDIFrameWnd; // standard MDI frame
+ class CMDIChildWnd; // standard MDI child
+ class CMiniFrameWnd;// half-height caption frame wnd
+
+ // views on a document
+ class CView; // a view on a document
+ class CScrollView; // a scrolling view
+
+ class CWinThread; // thread base class
+ class CWinApp; // application base class
+
+ class CDocTemplate; // template for document creation
+ class CSingleDocTemplate;// SDI support
+ class CMultiDocTemplate; // MDI support
+
+ class CDocument; // main document abstraction
+
+
+// Helper classes
+class CCmdUI; // Menu/button enabling
+class CDataExchange; // Data exchange and validation context
+class CCommandLineInfo; // CommandLine parsing helper
+class CDocManager; // CDocTemplate manager object
+
+/////////////////////////////////////////////////////////////////////////////
+
+// Type modifier for message handlers
+#ifndef afx_msg
+#define afx_msg // intentional placeholder
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CSize - An extent, similar to Windows SIZE structure.
+
+class CSize : public tagSIZE
+{
+public:
+
+// Constructors
+ CSize();
+ CSize(int initCX, int initCY);
+ CSize(SIZE initSize);
+ CSize(POINT initPt);
+ CSize(DWORD dwSize);
+
+// Operations
+ BOOL operator==(SIZE size) const;
+ BOOL operator!=(SIZE size) const;
+ void operator+=(SIZE size);
+ void operator-=(SIZE size);
+
+// Operators returning CSize values
+ CSize operator+(SIZE size) const;
+ CSize operator-(SIZE size) const;
+ CSize operator-() const;
+
+// Operators returning CPoint values
+ CPoint operator+(POINT point) const;
+ CPoint operator-(POINT point) const;
+
+// Operators returning CRect values
+ CRect operator+(const RECT* lpRect) const;
+ CRect operator-(const RECT* lpRect) const;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPoint - A 2-D point, similar to Windows POINT structure.
+
+class CPoint : public tagPOINT
+{
+public:
+
+// Constructors
+ CPoint();
+ CPoint(int initX, int initY);
+ CPoint(POINT initPt);
+ CPoint(SIZE initSize);
+ CPoint(DWORD dwPoint);
+
+// Operations
+ void Offset(int xOffset, int yOffset);
+ void Offset(POINT point);
+ void Offset(SIZE size);
+ BOOL operator==(POINT point) const;
+ BOOL operator!=(POINT point) const;
+ void operator+=(SIZE size);
+ void operator-=(SIZE size);
+ void operator+=(POINT point);
+ void operator-=(POINT point);
+
+// Operators returning CPoint values
+ CPoint operator+(SIZE size) const;
+ CPoint operator-(SIZE size) const;
+ CPoint operator-() const;
+ CPoint operator+(POINT point) const;
+
+// Operators returning CSize values
+ CSize operator-(POINT point) const;
+
+// Operators returning CRect values
+ CRect operator+(const RECT* lpRect) const;
+ CRect operator-(const RECT* lpRect) const;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRect - A 2-D rectangle, similar to Windows RECT structure.
+
+typedef const RECT* LPCRECT; // pointer to read/only RECT
+
+class CRect : public tagRECT
+{
+public:
+
+// Constructors
+ CRect();
+ CRect(int l, int t, int r, int b);
+ CRect(const RECT& srcRect);
+ CRect(LPCRECT lpSrcRect);
+ CRect(POINT point, SIZE size);
+ CRect(POINT topLeft, POINT bottomRight);
+
+// Attributes (in addition to RECT members)
+ int Width() const;
+ int Height() const;
+ CSize Size() const;
+ CPoint& TopLeft();
+ CPoint& BottomRight();
+ const CPoint& TopLeft() const;
+ const CPoint& BottomRight() const;
+ CPoint CenterPoint() const;
+
+ // convert between CRect and LPRECT/LPCRECT (no need for &)
+ operator LPRECT();
+ operator LPCRECT() const;
+
+ BOOL IsRectEmpty() const;
+ BOOL IsRectNull() const;
+ BOOL PtInRect(POINT point) const;
+
+// Operations
+ void SetRect(int x1, int y1, int x2, int y2);
+ void SetRect(POINT topLeft, POINT bottomRight);
+ void SetRectEmpty();
+ void CopyRect(LPCRECT lpSrcRect);
+ BOOL EqualRect(LPCRECT lpRect) const;
+
+ void InflateRect(int x, int y);
+ void InflateRect(SIZE size);
+ void InflateRect(LPCRECT lpRect);
+ void InflateRect(int l, int t, int r, int b);
+ void DeflateRect(int x, int y);
+ void DeflateRect(SIZE size);
+ void DeflateRect(LPCRECT lpRect);
+ void DeflateRect(int l, int t, int r, int b);
+
+ void OffsetRect(int x, int y);
+ void OffsetRect(SIZE size);
+ void OffsetRect(POINT point);
+ void NormalizeRect();
+
+ // operations that fill '*this' with result
+ BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2);
+ BOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2);
+ BOOL SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2);
+
+// Additional Operations
+ void operator=(const RECT& srcRect);
+ BOOL operator==(const RECT& rect) const;
+ BOOL operator!=(const RECT& rect) const;
+ void operator+=(POINT point);
+ void operator+=(SIZE size);
+ void operator+=(LPCRECT lpRect);
+ void operator-=(POINT point);
+ void operator-=(SIZE size);
+ void operator-=(LPCRECT lpRect);
+ void operator&=(const RECT& rect);
+ void operator|=(const RECT& rect);
+
+// Operators returning CRect values
+ CRect operator+(POINT point) const;
+ CRect operator-(POINT point) const;
+ CRect operator+(LPCRECT lpRect) const;
+ CRect operator+(SIZE size) const;
+ CRect operator-(SIZE size) const;
+ CRect operator-(LPCRECT lpRect) const;
+ CRect operator&(const RECT& rect2) const;
+ CRect operator|(const RECT& rect2) const;
+ CRect MulDiv(int nMultiplier, int nDivisor) const;
+};
+
+#ifdef _DEBUG
+// Diagnostic Output
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, SIZE size);
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, POINT point);
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, const RECT& rect);
+#endif //_DEBUG
+
+// Serialization
+CArchive& AFXAPI operator<<(CArchive& ar, SIZE size);
+CArchive& AFXAPI operator<<(CArchive& ar, POINT point);
+CArchive& AFXAPI operator<<(CArchive& ar, const RECT& rect);
+CArchive& AFXAPI operator>>(CArchive& ar, SIZE& size);
+CArchive& AFXAPI operator>>(CArchive& ar, POINT& point);
+CArchive& AFXAPI operator>>(CArchive& ar, RECT& rect);
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard exceptions
+
+class CResourceException : public CSimpleException // resource failure
+{
+ DECLARE_DYNAMIC(CResourceException)
+public:
+ CResourceException();
+
+// Implementation
+public:
+ CResourceException(BOOL bAutoDelete);
+ CResourceException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CResourceException();
+};
+
+class CUserException : public CSimpleException // general user visible alert
+{
+ DECLARE_DYNAMIC(CUserException)
+public:
+ CUserException();
+
+// Implementation
+public:
+ CUserException(BOOL bAutoDelete);
+ CUserException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CUserException();
+};
+
+void AFXAPI AfxThrowResourceException();
+void AFXAPI AfxThrowUserException();
+
+/////////////////////////////////////////////////////////////////////////////
+// CGdiObject abstract class for CDC SelectObject
+
+class CGdiObject : public CObject
+{
+ DECLARE_DYNCREATE(CGdiObject)
+public:
+
+// Attributes
+ HGDIOBJ m_hObject; // must be first data member
+ operator HGDIOBJ() const;
+ HGDIOBJ GetSafeHandle() const;
+
+ static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HGDIOBJ hObject);
+ HGDIOBJ Detach();
+
+// Constructors
+ CGdiObject(); // must Create a derived class object
+ BOOL DeleteObject();
+
+// Operations
+ int GetObject(int nCount, LPVOID lpObject) const;
+ UINT GetObjectType() const;
+ BOOL CreateStockObject(int nIndex);
+ BOOL UnrealizeObject();
+
+// Implementation
+public:
+ virtual ~CGdiObject();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CGdiObject subclasses (drawing tools)
+
+class CPen : public CGdiObject
+{
+ DECLARE_DYNAMIC(CPen)
+
+public:
+ static CPen* PASCAL FromHandle(HPEN hPen);
+
+// Constructors
+ CPen();
+ CPen(int nPenStyle, int nWidth, COLORREF crColor);
+#ifndef _MAC
+ CPen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount = 0, const DWORD* lpStyle = NULL);
+#endif
+ BOOL CreatePen(int nPenStyle, int nWidth, COLORREF crColor);
+#ifndef _MAC
+ BOOL CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount = 0, const DWORD* lpStyle = NULL);
+#endif
+ BOOL CreatePenIndirect(LPLOGPEN lpLogPen);
+
+// Attributes
+ operator HPEN() const;
+ int GetLogPen(LOGPEN* pLogPen);
+#ifndef _MAC
+ int GetExtLogPen(EXTLOGPEN* pLogPen);
+#endif
+
+// Implementation
+public:
+ virtual ~CPen();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CBrush : public CGdiObject
+{
+ DECLARE_DYNAMIC(CBrush)
+
+public:
+ static CBrush* PASCAL FromHandle(HBRUSH hBrush);
+
+// Constructors
+ CBrush();
+ CBrush(COLORREF crColor); // CreateSolidBrush
+ CBrush(int nIndex, COLORREF crColor); // CreateHatchBrush
+ CBrush(CBitmap* pBitmap); // CreatePatternBrush
+
+ BOOL CreateSolidBrush(COLORREF crColor);
+ BOOL CreateHatchBrush(int nIndex, COLORREF crColor);
+ BOOL CreateBrushIndirect(LPLOGBRUSH lpLogBrush);
+ BOOL CreatePatternBrush(CBitmap* pBitmap);
+ BOOL CreateDIBPatternBrush(HGLOBAL hPackedDIB, UINT nUsage);
+ BOOL CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage);
+ BOOL CreateSysColorBrush(int nIndex);
+
+// Attributes
+ operator HBRUSH() const;
+ int GetLogBrush(LOGBRUSH* pLogBrush);
+
+// Implementation
+public:
+ virtual ~CBrush();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CFont : public CGdiObject
+{
+ DECLARE_DYNAMIC(CFont)
+
+public:
+ static CFont* PASCAL FromHandle(HFONT hFont);
+
+// Constructors
+ CFont();
+ BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
+ BOOL CreateFont(int nHeight, int nWidth, int nEscapement,
+ int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline,
+ BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
+ BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily,
+ LPCTSTR lpszFacename);
+ BOOL CreatePointFont(int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL);
+ BOOL CreatePointFontIndirect(const LOGFONT* lpLogFont, CDC* pDC = NULL);
+
+// Attributes
+ operator HFONT() const;
+ int GetLogFont(LOGFONT* pLogFont);
+
+// Implementation
+public:
+ virtual ~CFont();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CBitmap : public CGdiObject
+{
+ DECLARE_DYNAMIC(CBitmap)
+
+public:
+ static CBitmap* PASCAL FromHandle(HBITMAP hBitmap);
+
+// Constructors
+ CBitmap();
+
+ BOOL LoadBitmap(LPCTSTR lpszResourceName);
+ BOOL LoadBitmap(UINT nIDResource);
+#ifndef _MAC
+ BOOL LoadOEMBitmap(UINT nIDBitmap); // for OBM_/OCR_/OIC_
+#endif
+ BOOL LoadMappedBitmap(UINT nIDBitmap, UINT nFlags = 0,
+ LPCOLORMAP lpColorMap = NULL, int nMapSize = 0);
+ BOOL CreateBitmap(int nWidth, int nHeight, UINT nPlanes, UINT nBitcount,
+ const void* lpBits);
+ BOOL CreateBitmapIndirect(LPBITMAP lpBitmap);
+ BOOL CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight);
+ BOOL CreateDiscardableBitmap(CDC* pDC, int nWidth, int nHeight);
+
+// Attributes
+ operator HBITMAP() const;
+ int GetBitmap(BITMAP* pBitMap);
+
+// Operations
+ DWORD SetBitmapBits(DWORD dwCount, const void* lpBits);
+ DWORD GetBitmapBits(DWORD dwCount, LPVOID lpBits) const;
+ CSize SetBitmapDimension(int nWidth, int nHeight);
+ CSize GetBitmapDimension() const;
+
+// Implementation
+public:
+ virtual ~CBitmap();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CPalette : public CGdiObject
+{
+ DECLARE_DYNAMIC(CPalette)
+
+public:
+ static CPalette* PASCAL FromHandle(HPALETTE hPalette);
+
+// Constructors
+ CPalette();
+ BOOL CreatePalette(LPLOGPALETTE lpLogPalette);
+#ifndef _MAC
+ BOOL CreateHalftonePalette(CDC* pDC);
+#endif
+
+// Attributes
+ operator HPALETTE() const;
+ int GetEntryCount();
+ UINT GetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors) const;
+ UINT SetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors);
+
+// Operations
+#ifndef _MAC
+ void AnimatePalette(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors);
+#endif
+ UINT GetNearestPaletteIndex(COLORREF crColor) const;
+ BOOL ResizePalette(UINT nNumEntries);
+
+// Implementation
+ virtual ~CPalette();
+};
+
+class CRgn : public CGdiObject
+{
+ DECLARE_DYNAMIC(CRgn)
+
+public:
+ static CRgn* PASCAL FromHandle(HRGN hRgn);
+ operator HRGN() const;
+
+// Constructors
+ CRgn();
+ BOOL CreateRectRgn(int x1, int y1, int x2, int y2);
+ BOOL CreateRectRgnIndirect(LPCRECT lpRect);
+ BOOL CreateEllipticRgn(int x1, int y1, int x2, int y2);
+ BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);
+ BOOL CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode);
+#ifndef _MAC
+ BOOL CreatePolyPolygonRgn(LPPOINT lpPoints, LPINT lpPolyCounts,
+ int nCount, int nPolyFillMode);
+#endif
+ BOOL CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3);
+#ifndef _MAC
+ BOOL CreateFromPath(CDC* pDC);
+ BOOL CreateFromData(const XFORM* lpXForm, int nCount,
+ const RGNDATA* pRgnData);
+#endif
+
+// Operations
+ void SetRectRgn(int x1, int y1, int x2, int y2);
+ void SetRectRgn(LPCRECT lpRect);
+ int CombineRgn(CRgn* pRgn1, CRgn* pRgn2, int nCombineMode);
+ int CopyRgn(CRgn* pRgnSrc);
+ BOOL EqualRgn(CRgn* pRgn) const;
+ int OffsetRgn(int x, int y);
+ int OffsetRgn(POINT point);
+ int GetRgnBox(LPRECT lpRect) const;
+ BOOL PtInRegion(int x, int y) const;
+ BOOL PtInRegion(POINT point) const;
+ BOOL RectInRegion(LPCRECT lpRect) const;
+#ifndef _MAC
+ int GetRegionData(LPRGNDATA lpRgnData, int nCount) const;
+#endif
+
+// Implementation
+ virtual ~CRgn();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// The device context
+
+class CDC : public CObject
+{
+ DECLARE_DYNCREATE(CDC)
+public:
+
+// Attributes
+ HDC m_hDC; // The output DC (must be first data member)
+ HDC m_hAttribDC; // The Attribute DC
+ operator HDC() const;
+ HDC GetSafeHdc() const; // Always returns the Output DC
+#ifndef _MAC
+ CWnd* GetWindow() const;
+#endif
+
+ static CDC* PASCAL FromHandle(HDC hDC);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HDC hDC); // Attach/Detach affects only the Output DC
+ HDC Detach();
+
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+ virtual void SetOutputDC(HDC hDC); // Set the Output DC
+ virtual void ReleaseAttribDC(); // Release the Attribute DC
+ virtual void ReleaseOutputDC(); // Release the Output DC
+
+ BOOL IsPrinting() const; // TRUE if being used for printing
+
+ CPen* GetCurrentPen() const;
+ CBrush* GetCurrentBrush() const;
+ CPalette* GetCurrentPalette() const;
+ CFont* GetCurrentFont() const;
+ CBitmap* GetCurrentBitmap() const;
+
+// Constructors
+ CDC();
+ BOOL CreateDC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
+ LPCTSTR lpszOutput, const void* lpInitData);
+ BOOL CreateIC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
+ LPCTSTR lpszOutput, const void* lpInitData);
+ BOOL CreateCompatibleDC(CDC* pDC);
+
+ BOOL DeleteDC();
+
+// Device-Context Functions
+ virtual int SaveDC();
+ virtual BOOL RestoreDC(int nSavedDC);
+ int GetDeviceCaps(int nIndex) const;
+#ifndef _MAC
+ UINT SetBoundsRect(LPCRECT lpRectBounds, UINT flags);
+ UINT GetBoundsRect(LPRECT lpRectBounds, UINT flags);
+#endif
+ BOOL ResetDC(const DEVMODE* lpDevMode);
+
+// Drawing-Tool Functions
+ CPoint GetBrushOrg() const;
+ CPoint SetBrushOrg(int x, int y);
+ CPoint SetBrushOrg(POINT point);
+ int EnumObjects(int nObjectType,
+ int (CALLBACK* lpfn)(LPVOID, LPARAM), LPARAM lpData);
+
+// Type-safe selection helpers
+public:
+ virtual CGdiObject* SelectStockObject(int nIndex);
+ CPen* SelectObject(CPen* pPen);
+ CBrush* SelectObject(CBrush* pBrush);
+ virtual CFont* SelectObject(CFont* pFont);
+ CBitmap* SelectObject(CBitmap* pBitmap);
+ int SelectObject(CRgn* pRgn); // special return for regions
+ CGdiObject* SelectObject(CGdiObject* pObject);
+ // CGdiObject* provided so compiler doesn't use SelectObject(HGDIOBJ)
+
+// Color and Color Palette Functions
+ COLORREF GetNearestColor(COLORREF crColor) const;
+ CPalette* SelectPalette(CPalette* pPalette, BOOL bForceBackground);
+ UINT RealizePalette();
+ void UpdateColors();
+
+// Drawing-Attribute Functions
+ COLORREF GetBkColor() const;
+ int GetBkMode() const;
+ int GetPolyFillMode() const;
+ int GetROP2() const;
+ int GetStretchBltMode() const;
+ COLORREF GetTextColor() const;
+
+ virtual COLORREF SetBkColor(COLORREF crColor);
+ int SetBkMode(int nBkMode);
+ int SetPolyFillMode(int nPolyFillMode);
+ int SetROP2(int nDrawMode);
+ int SetStretchBltMode(int nStretchMode);
+ virtual COLORREF SetTextColor(COLORREF crColor);
+
+#ifndef _MAC
+ BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
+ BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
+#endif
+
+// Mapping Functions
+ int GetMapMode() const;
+ CPoint GetViewportOrg() const;
+ virtual int SetMapMode(int nMapMode);
+ // Viewport Origin
+ virtual CPoint SetViewportOrg(int x, int y);
+ CPoint SetViewportOrg(POINT point);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+
+ // Viewport Extent
+ CSize GetViewportExt() const;
+ virtual CSize SetViewportExt(int cx, int cy);
+ CSize SetViewportExt(SIZE size);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+
+ // Window Origin
+ CPoint GetWindowOrg() const;
+ CPoint SetWindowOrg(int x, int y);
+ CPoint SetWindowOrg(POINT point);
+ CPoint OffsetWindowOrg(int nWidth, int nHeight);
+
+ // Window extent
+ CSize GetWindowExt() const;
+ virtual CSize SetWindowExt(int cx, int cy);
+ CSize SetWindowExt(SIZE size);
+ virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
+
+// Coordinate Functions
+ void DPtoLP(LPPOINT lpPoints, int nCount = 1) const;
+ void DPtoLP(LPRECT lpRect) const;
+ void DPtoLP(LPSIZE lpSize) const;
+ void LPtoDP(LPPOINT lpPoints, int nCount = 1) const;
+ void LPtoDP(LPRECT lpRect) const;
+ void LPtoDP(LPSIZE lpSize) const;
+
+// Special Coordinate Functions (useful for dealing with metafiles and OLE)
+ void DPtoHIMETRIC(LPSIZE lpSize) const;
+ void LPtoHIMETRIC(LPSIZE lpSize) const;
+ void HIMETRICtoDP(LPSIZE lpSize) const;
+ void HIMETRICtoLP(LPSIZE lpSize) const;
+
+// Region Functions
+ BOOL FillRgn(CRgn* pRgn, CBrush* pBrush);
+ BOOL FrameRgn(CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight);
+ BOOL InvertRgn(CRgn* pRgn);
+ BOOL PaintRgn(CRgn* pRgn);
+
+// Clipping Functions
+ virtual int GetClipBox(LPRECT lpRect) const;
+ virtual BOOL PtVisible(int x, int y) const;
+ BOOL PtVisible(POINT point) const;
+ virtual BOOL RectVisible(LPCRECT lpRect) const;
+ int SelectClipRgn(CRgn* pRgn);
+ int ExcludeClipRect(int x1, int y1, int x2, int y2);
+ int ExcludeClipRect(LPCRECT lpRect);
+ int ExcludeUpdateRgn(CWnd* pWnd);
+ int IntersectClipRect(int x1, int y1, int x2, int y2);
+ int IntersectClipRect(LPCRECT lpRect);
+ int OffsetClipRgn(int x, int y);
+ int OffsetClipRgn(SIZE size);
+#ifndef _MAC
+ int SelectClipRgn(CRgn* pRgn, int nMode);
+#endif
+
+// Line-Output Functions
+ CPoint GetCurrentPosition() const;
+ CPoint MoveTo(int x, int y);
+ CPoint MoveTo(POINT point);
+ BOOL LineTo(int x, int y);
+ BOOL LineTo(POINT point);
+ BOOL Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ BOOL Polyline(LPPOINT lpPoints, int nCount);
+
+#ifndef _MAC
+ BOOL AngleArc(int x, int y, int nRadius, float fStartAngle, float fSweepAngle);
+ BOOL ArcTo(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ int GetArcDirection() const;
+ int SetArcDirection(int nArcDirection);
+
+ BOOL PolyDraw(const POINT* lpPoints, const BYTE* lpTypes, int nCount);
+ BOOL PolylineTo(const POINT* lpPoints, int nCount);
+ BOOL PolyPolyline(const POINT* lpPoints,
+ const DWORD* lpPolyPoints, int nCount);
+
+ BOOL PolyBezier(const POINT* lpPoints, int nCount);
+ BOOL PolyBezierTo(const POINT* lpPoints, int nCount);
+#endif
+
+// Simple Drawing Functions
+ void FillRect(LPCRECT lpRect, CBrush* pBrush);
+ void FrameRect(LPCRECT lpRect, CBrush* pBrush);
+ void InvertRect(LPCRECT lpRect);
+ BOOL DrawIcon(int x, int y, HICON hIcon);
+ BOOL DrawIcon(POINT point, HICON hIcon);
+#if (WINVER >= 0x400)
+#ifndef _MAC
+ BOOL DrawState(CPoint pt, CSize size, HBITMAP hBitmap, UINT nFlags,
+ HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, CBitmap* pBitmap, UINT nFlags,
+ CBrush* pBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags,
+ HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags,
+ CBrush* pBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags,
+ BOOL bPrefixText = TRUE, int nTextLen = 0, HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags,
+ BOOL bPrefixText = TRUE, int nTextLen = 0, CBrush* pBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc,
+ LPARAM lData, UINT nFlags, HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc,
+ LPARAM lData, UINT nFlags, CBrush* pBrush = NULL);
+#endif
+#endif
+
+// Ellipse and Polygon Functions
+#ifndef _MAC
+ BOOL Chord(int x1, int y1, int x2, int y2, int x3, int y3,
+ int x4, int y4);
+ BOOL Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+#endif
+ void DrawFocusRect(LPCRECT lpRect);
+ BOOL Ellipse(int x1, int y1, int x2, int y2);
+ BOOL Ellipse(LPCRECT lpRect);
+ BOOL Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ BOOL Polygon(LPPOINT lpPoints, int nCount);
+#ifndef _MAC
+ BOOL PolyPolygon(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount);
+#endif
+ BOOL Rectangle(int x1, int y1, int x2, int y2);
+ BOOL Rectangle(LPCRECT lpRect);
+ BOOL RoundRect(int x1, int y1, int x2, int y2, int x3, int y3);
+ BOOL RoundRect(LPCRECT lpRect, POINT point);
+
+// Bitmap Functions
+ BOOL PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop);
+ BOOL BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, DWORD dwRop);
+ BOOL StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop);
+ COLORREF GetPixel(int x, int y) const;
+ COLORREF GetPixel(POINT point) const;
+ COLORREF SetPixel(int x, int y, COLORREF crColor);
+ COLORREF SetPixel(POINT point, COLORREF crColor);
+#ifndef _MAC
+ BOOL FloodFill(int x, int y, COLORREF crColor);
+ BOOL ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType);
+ BOOL MaskBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask,
+ DWORD dwRop);
+ BOOL PlgBlt(LPPOINT lpPoint, CDC* pSrcDC, int xSrc, int ySrc,
+ int nWidth, int nHeight, CBitmap& maskBitmap, int xMask, int yMask);
+ BOOL SetPixelV(int x, int y, COLORREF crColor);
+ BOOL SetPixelV(POINT point, COLORREF crColor);
+#endif
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ BOOL TextOut(int x, int y, const CString& str);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ CSize TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ int DrawText(const CString& str, LPRECT lpRect, UINT nFormat);
+ CSize GetTextExtent(LPCTSTR lpszString, int nCount) const;
+ CSize GetTextExtent(const CString& str) const;
+ CSize GetOutputTextExtent(LPCTSTR lpszString, int nCount) const;
+ CSize GetOutputTextExtent(const CString& str) const;
+ CSize GetTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ CSize GetTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ CSize GetOutputTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ CSize GetOutputTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ virtual BOOL GrayString(CBrush* pBrush,
+ BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int), LPARAM lpData,
+ int nCount, int x, int y, int nWidth, int nHeight);
+ UINT GetTextAlign() const;
+ UINT SetTextAlign(UINT nFlags);
+ int GetTextFace(int nCount, LPTSTR lpszFacename) const;
+ int GetTextFace(CString& rString) const;
+ BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
+ BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
+#ifndef _MAC
+ int SetTextJustification(int nBreakExtra, int nBreakCount);
+#endif
+ int GetTextCharacterExtra() const;
+ int SetTextCharacterExtra(int nCharExtra);
+
+// Advanced Drawing
+#if (WINVER >= 0x400)
+#ifndef _MAC
+ BOOL DrawEdge(LPRECT lpRect, UINT nEdge, UINT nFlags);
+ BOOL DrawFrameControl(LPRECT lpRect, UINT nType, UINT nState);
+#endif
+#endif
+
+// Scrolling Functions
+ BOOL ScrollDC(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* pRgnUpdate, LPRECT lpRectUpdate);
+
+// Font Functions
+ BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
+ BOOL GetOutputCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
+ DWORD SetMapperFlags(DWORD dwFlag);
+ CSize GetAspectRatioFilter() const;
+
+ BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const;
+ DWORD GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData, DWORD cbData) const;
+#ifndef _MAC
+ int GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const;
+#endif
+ UINT GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const;
+#ifndef _MAC
+ DWORD GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm,
+ DWORD cbBuffer, LPVOID lpBuffer, const MAT2* lpmat2) const;
+#endif
+
+#ifndef _MAC
+ BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar,
+ LPABCFLOAT lpABCF) const;
+ BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar,
+ float* lpFloatBuffer) const;
+#endif
+
+// Printer/Device Escape Functions
+ virtual int Escape(int nEscape, int nCount,
+ LPCSTR lpszInData, LPVOID lpOutData);
+#ifndef _MAC
+ int Escape(int nEscape, int nInputSize, LPCSTR lpszInputData,
+ int nOutputSize, LPSTR lpszOutputData);
+ int DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData);
+#endif
+
+ // Escape helpers
+ int StartDoc(LPCTSTR lpszDocName); // old Win3.0 version
+ int StartDoc(LPDOCINFO lpDocInfo);
+ int StartPage();
+ int EndPage();
+ int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
+ int AbortDoc();
+ int EndDoc();
+
+// MetaFile Functions
+ BOOL PlayMetaFile(HMETAFILE hMF);
+#ifndef _MAC
+ BOOL PlayMetaFile(HENHMETAFILE hEnhMetaFile, LPCRECT lpBounds);
+ BOOL AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData);
+ // can be used for enhanced metafiles only
+
+// Path Functions
+ BOOL AbortPath();
+ BOOL BeginPath();
+ BOOL CloseFigure();
+ BOOL EndPath();
+ BOOL FillPath();
+ BOOL FlattenPath();
+ BOOL StrokeAndFillPath();
+ BOOL StrokePath();
+ BOOL WidenPath();
+ float GetMiterLimit() const;
+ BOOL SetMiterLimit(float fMiterLimit);
+ int GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const;
+ BOOL SelectClipPath(int nMode);
+#endif
+
+// Misc Helper Functions
+ static CBrush* PASCAL GetHalftoneBrush();
+ void DrawDragRect(LPCRECT lpRect, SIZE size,
+ LPCRECT lpRectLast, SIZE sizeLast,
+ CBrush* pBrush = NULL, CBrush* pBrushLast = NULL);
+ void FillSolidRect(LPCRECT lpRect, COLORREF clr);
+ void FillSolidRect(int x, int y, int cx, int cy, COLORREF clr);
+ void Draw3dRect(LPCRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomRight);
+ void Draw3dRect(int x, int y, int cx, int cy,
+ COLORREF clrTopLeft, COLORREF clrBottomRight);
+
+// Implementation
+public:
+ virtual ~CDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // advanced use and implementation
+ BOOL m_bPrinting;
+ HGDIOBJ SelectObject(HGDIOBJ); // do not use for regions
+
+protected:
+ // used for implementation of non-virtual SelectObject calls
+ static CGdiObject* PASCAL SelectGdiObject(HDC hDC, HGDIOBJ h);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDC Helpers
+
+class CPaintDC : public CDC
+{
+ DECLARE_DYNAMIC(CPaintDC)
+
+// Constructors
+public:
+ CPaintDC(CWnd* pWnd); // BeginPaint
+
+// Attributes
+protected:
+ HWND m_hWnd;
+public:
+ PAINTSTRUCT m_ps; // actual paint struct!
+
+// Implementation
+public:
+ virtual ~CPaintDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CClientDC : public CDC
+{
+ DECLARE_DYNAMIC(CClientDC)
+
+// Constructors
+public:
+ CClientDC(CWnd* pWnd);
+
+// Attributes
+protected:
+ HWND m_hWnd;
+
+// Implementation
+public:
+ virtual ~CClientDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CWindowDC : public CDC
+{
+ DECLARE_DYNAMIC(CWindowDC)
+
+// Constructors
+public:
+ CWindowDC(CWnd* pWnd);
+
+// Attributes
+protected:
+ HWND m_hWnd;
+
+// Implementation
+public:
+ virtual ~CWindowDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMenu
+
+class CMenu : public CObject
+{
+ DECLARE_DYNCREATE(CMenu)
+public:
+
+// Constructors
+ CMenu();
+
+ BOOL CreateMenu();
+ BOOL CreatePopupMenu();
+ BOOL LoadMenu(LPCTSTR lpszResourceName);
+ BOOL LoadMenu(UINT nIDResource);
+ BOOL LoadMenuIndirect(const void* lpMenuTemplate);
+ BOOL DestroyMenu();
+
+// Attributes
+ HMENU m_hMenu; // must be first data member
+ HMENU GetSafeHmenu() const;
+ operator HMENU() const;
+
+ static CMenu* PASCAL FromHandle(HMENU hMenu);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HMENU hMenu);
+ HMENU Detach();
+
+// CMenu Operations
+ BOOL DeleteMenu(UINT nPosition, UINT nFlags);
+ BOOL TrackPopupMenu(UINT nFlags, int x, int y,
+ CWnd* pWnd, LPCRECT lpRect = 0);
+
+// CMenuItem Operations
+ BOOL AppendMenu(UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL AppendMenu(UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp);
+ UINT CheckMenuItem(UINT nIDCheckItem, UINT nCheck);
+ UINT EnableMenuItem(UINT nIDEnableItem, UINT nEnable);
+ UINT GetMenuItemCount() const;
+ UINT GetMenuItemID(int nPos) const;
+ UINT GetMenuState(UINT nID, UINT nFlags) const;
+ int GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount,
+ UINT nFlags) const;
+ int GetMenuString(UINT nIDItem, CString& rString, UINT nFlags) const;
+ CMenu* GetSubMenu(int nPos) const;
+ BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ const CBitmap* pBmp);
+ BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ const CBitmap* pBmp);
+ BOOL RemoveMenu(UINT nPosition, UINT nFlags);
+ BOOL SetMenuItemBitmaps(UINT nPosition, UINT nFlags,
+ const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked);
+#ifndef _MAC
+ BOOL CheckMenuRadioItem(UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags);
+#endif
+
+// Context Help Functions
+#ifndef _MAC
+ BOOL SetMenuContextHelpId(DWORD dwContextHelpId);
+ DWORD GetMenuContextHelpId() const;
+#endif
+
+// Overridables (must override draw and measure for owner-draw menu items)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+
+// Implementation
+public:
+ virtual ~CMenu();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ static CMenu* PASCAL CMenu::FromHandlePermanent(HMENU hMenu);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Window message map handling
+
+struct AFX_MSGMAP_ENTRY; // declared below after CWnd
+
+struct AFX_MSGMAP
+{
+#ifdef _AFXDLL
+ const AFX_MSGMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_MSGMAP* pBaseMap;
+#endif
+ const AFX_MSGMAP_ENTRY* lpEntries;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_MESSAGE_MAP() \
+private: \
+ static const AFX_MSGMAP_ENTRY _messageEntries[]; \
+protected: \
+ static AFX_DATA const AFX_MSGMAP messageMap; \
+ static const AFX_MSGMAP* PASCAL _GetBaseMessageMap(); \
+ virtual const AFX_MSGMAP* GetMessageMap() const; \
+
+#else
+#define DECLARE_MESSAGE_MAP() \
+private: \
+ static const AFX_MSGMAP_ENTRY _messageEntries[]; \
+protected: \
+ static AFX_DATA const AFX_MSGMAP messageMap; \
+ virtual const AFX_MSGMAP* GetMessageMap() const; \
+
+#endif
+
+#ifdef _AFXDLL
+#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
+ const AFX_MSGMAP* PASCAL theClass::_GetBaseMessageMap() \
+ { return &baseClass::messageMap; } \
+ const AFX_MSGMAP* theClass::GetMessageMap() const \
+ { return &theClass::messageMap; } \
+ AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
+ { &theClass::_GetBaseMessageMap, &theClass::_messageEntries[0] }; \
+ const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
+ { \
+
+#else
+#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
+ const AFX_MSGMAP* theClass::GetMessageMap() const \
+ { return &theClass::messageMap; } \
+ AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
+ { &baseClass::messageMap, &theClass::_messageEntries[0] }; \
+ const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
+ { \
+
+#endif
+
+#define END_MESSAGE_MAP() \
+ {0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
+ }; \
+
+// Message map signature values and macros in separate header
+#include <afxmsg_.h>
+
+/////////////////////////////////////////////////////////////////////////////
+// Dialog data exchange (DDX_) and validation (DDV_)
+
+// CDataExchange - for data exchange and validation
+class CDataExchange
+{
+// Attributes
+public:
+ BOOL m_bSaveAndValidate; // TRUE => save and validate data
+ CWnd* m_pDlgWnd; // container usually a dialog
+
+// Operations (for implementors of DDX and DDV procs)
+ HWND PrepareCtrl(int nIDC); // return HWND of control
+ HWND PrepareEditCtrl(int nIDC); // return HWND of control
+ void Fail(); // will throw exception
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ CWnd* PrepareOleCtrl(int nIDC); // for OLE controls in dialog
+#endif
+
+// Implementation
+ CDataExchange(CWnd* pDlgWnd, BOOL bSaveAndValidate);
+
+ HWND m_hWndLastControl; // last control used (for validation)
+ BOOL m_bEditLastControl; // last control was an edit item
+};
+
+#include <afxdd_.h> // standard DDX_ and DDV_ routines
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE types
+
+typedef LONG HRESULT;
+
+struct IUnknown;
+typedef IUnknown* LPUNKNOWN;
+
+struct IDispatch;
+typedef IDispatch* LPDISPATCH;
+
+struct IConnectionPoint;
+typedef IConnectionPoint* LPCONNECTIONPOINT;
+
+struct IEnumOLEVERB;
+typedef IEnumOLEVERB* LPENUMOLEVERB;
+
+typedef struct _GUID GUID;
+typedef GUID IID;
+typedef GUID CLSID;
+#ifndef _REFCLSID_DEFINED
+#define REFCLSID const CLSID &
+#endif
+
+typedef long DISPID;
+typedef unsigned short VARTYPE;
+typedef long SCODE;
+
+#if defined(WIN32) && !defined(OLE2ANSI)
+typedef WCHAR OLECHAR;
+#else
+typedef char OLECHAR;
+#endif
+typedef OLECHAR* BSTR;
+
+struct tagDISPPARAMS;
+typedef tagDISPPARAMS DISPPARAMS;
+
+struct tagVARIANT;
+typedef tagVARIANT VARIANT;
+
+struct ITypeInfo;
+typedef ITypeInfo* LPTYPEINFO;
+
+struct ITypeLib;
+typedef ITypeLib* LPTYPELIB;
+
+/////////////////////////////////////////////////////////////////////////////
+// CCmdTarget
+
+// private structures
+struct AFX_CMDHANDLERINFO; // info about where the command is handled
+struct AFX_EVENT; // info about an event
+class CTypeLibCache; // cache for OLE type libraries
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE interface map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_INTERFACEMAP_ENTRY
+{
+ const void* piid; // the interface id (IID) (NULL for aggregate)
+ size_t nOffset; // offset of the interface vtable from m_unknown
+};
+
+struct AFX_INTERFACEMAP
+{
+#ifdef _AFXDLL
+ const AFX_INTERFACEMAP* (PASCAL* pfnGetBaseMap)(); // NULL is root class
+#else
+ const AFX_INTERFACEMAP* pBaseMap;
+#endif
+ const AFX_INTERFACEMAP_ENTRY* pEntry; // map for this class
+};
+
+
+#ifdef _AFXDLL
+#define DECLARE_INTERFACE_MAP() \
+private: \
+ static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
+protected: \
+ static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \
+ static const AFX_INTERFACEMAP* PASCAL _GetBaseInterfaceMap(); \
+ virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \
+
+#else
+#define DECLARE_INTERFACE_MAP() \
+private: \
+ static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
+protected: \
+ static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \
+ virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE dispatch map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_DISPMAP_ENTRY;
+
+struct AFX_DISPMAP
+{
+#ifdef _AFXDLL
+ const AFX_DISPMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_DISPMAP* pBaseMap;
+#endif
+ const AFX_DISPMAP_ENTRY* lpEntries;
+ UINT* lpEntryCount;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_DISPATCH_MAP() \
+private: \
+ static const AFX_DISPMAP_ENTRY _dispatchEntries[]; \
+ static UINT _dispatchEntryCount; \
+protected: \
+ static AFX_DATA const AFX_DISPMAP dispatchMap; \
+ static const AFX_DISPMAP* PASCAL _GetBaseDispatchMap(); \
+ virtual const AFX_DISPMAP* GetDispatchMap() const; \
+
+#else
+#define DECLARE_DISPATCH_MAP() \
+private: \
+ static const AFX_DISPMAP_ENTRY _dispatchEntries[]; \
+ static UINT _dispatchEntryCount; \
+protected: \
+ static AFX_DATA const AFX_DISPMAP dispatchMap; \
+ virtual const AFX_DISPMAP* GetDispatchMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE event sink map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OCC_SUPPORT
+
+struct AFX_EVENTSINKMAP_ENTRY;
+
+struct AFX_EVENTSINKMAP
+{
+#ifdef _AFXDLL
+ const AFX_EVENTSINKMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_EVENTSINKMAP* pBaseMap;
+#endif
+ const AFX_EVENTSINKMAP_ENTRY* lpEntries;
+ UINT* lpEntryCount;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_EVENTSINK_MAP() \
+private: \
+ static const AFX_EVENTSINKMAP_ENTRY _eventsinkEntries[]; \
+ static UINT _eventsinkEntryCount; \
+protected: \
+ static AFX_DATA const AFX_EVENTSINKMAP eventsinkMap; \
+ static const AFX_EVENTSINKMAP* PASCAL _GetBaseEventSinkMap(); \
+ virtual const AFX_EVENTSINKMAP* GetEventSinkMap() const; \
+
+#else
+#define DECLARE_EVENTSINK_MAP() \
+private: \
+ static const AFX_EVENTSINKMAP_ENTRY _eventsinkEntries[]; \
+ static UINT _eventsinkEntryCount; \
+protected: \
+ static AFX_DATA const AFX_EVENTSINKMAP eventsinkMap; \
+ virtual const AFX_EVENTSINKMAP* GetEventSinkMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OCC_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE connection map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_CONNECTIONMAP_ENTRY
+{
+ const void* piid; // the interface id (IID)
+ size_t nOffset; // offset of the interface vtable from m_unknown
+};
+
+struct AFX_CONNECTIONMAP
+{
+#ifdef _AFXDLL
+ const AFX_CONNECTIONMAP* (PASCAL* pfnGetBaseMap)(); // NULL is root class
+#else
+ const AFX_CONNECTIONMAP* pBaseMap;
+#endif
+ const AFX_CONNECTIONMAP_ENTRY* pEntry; // map for this class
+};
+
+#ifdef _AFXDLL
+#define DECLARE_CONNECTION_MAP() \
+private: \
+ static const AFX_CONNECTIONMAP_ENTRY _connectionEntries[]; \
+protected: \
+ static AFX_DATA const AFX_CONNECTIONMAP connectionMap; \
+ static const AFX_CONNECTIONMAP* PASCAL _GetBaseConnectionMap(); \
+ virtual const AFX_CONNECTIONMAP* GetConnectionMap() const; \
+
+#else
+#define DECLARE_CONNECTION_MAP() \
+private: \
+ static const AFX_CONNECTIONMAP_ENTRY _connectionEntries[]; \
+protected: \
+ static AFX_DATA const AFX_CONNECTIONMAP connectionMap; \
+ virtual const AFX_CONNECTIONMAP* GetConnectionMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// CCmdTarget proper
+
+#ifndef _AFX_NO_OCC_SUPPORT
+class COccManager; // forward reference (see ..\src\occimpl.h)
+#endif
+
+class CCmdTarget : public CObject
+{
+ DECLARE_DYNAMIC(CCmdTarget)
+protected:
+
+public:
+// Constructors
+ CCmdTarget();
+
+// Attributes
+ LPDISPATCH GetIDispatch(BOOL bAddRef);
+ // retrieve IDispatch part of CCmdTarget
+ static CCmdTarget* PASCAL FromIDispatch(LPDISPATCH lpDispatch);
+ // map LPDISPATCH back to CCmdTarget* (inverse of GetIDispatch)
+ BOOL IsResultExpected();
+ // returns TRUE if automation function should return a value
+
+// Operations
+ void EnableAutomation();
+ // call in constructor to wire up IDispatch
+ void EnableConnections();
+ // call in constructor to wire up IConnectionPointContainer
+
+ void BeginWaitCursor();
+ void EndWaitCursor();
+ void RestoreWaitCursor(); // call after messagebox
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // dispatch OLE verbs through the message map
+ BOOL EnumOleVerbs(LPENUMOLEVERB* ppenumOleVerb);
+ BOOL DoOleVerb(LONG iVerb, LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+#endif
+
+// Overridables
+ // route and dispatch standard command message types
+ // (more sophisticated than OnCommand)
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // called when last OLE reference is released
+ virtual void OnFinalRelease();
+#endif
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // called before dispatching to an automation handler function
+ virtual BOOL IsInvokeAllowed(DISPID dispid);
+#endif
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // support for OLE type libraries
+ void EnableTypeLib();
+ HRESULT GetTypeInfoOfGuid(LCID lcid, const GUID& guid,
+ LPTYPEINFO* ppTypeInfo);
+ virtual BOOL GetDispatchIID(IID* pIID);
+ virtual UINT GetTypeInfoCount();
+ virtual CTypeLibCache* GetTypeLibCache();
+ virtual HRESULT GetTypeLib(LCID lcid, LPTYPELIB* ppTypeLib);
+#endif
+
+// Implementation
+public:
+ virtual ~CCmdTarget();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+#ifndef _AFX_NO_OLE_SUPPORT
+ void GetNotSupported();
+ void SetNotSupported();
+#endif
+
+protected:
+ friend class CView;
+
+ CView* GetRoutingView();
+ CFrameWnd* GetRoutingFrame();
+ DECLARE_MESSAGE_MAP() // base class - no {{ }} macros
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ DECLARE_DISPATCH_MAP()
+ DECLARE_CONNECTION_MAP()
+ DECLARE_INTERFACE_MAP()
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ DECLARE_EVENTSINK_MAP()
+#endif // !_AFX_NO_OCC_SUPPORT
+
+ // OLE interface map implementation
+public:
+ // data used when CCmdTarget is made OLE aware
+ long m_dwRef;
+ LPUNKNOWN m_pOuterUnknown; // external controlling unknown if != NULL
+ DWORD m_xInnerUnknown; // place-holder for inner controlling unknown
+
+public:
+ // advanced operations
+ void EnableAggregation(); // call to enable aggregation
+ void ExternalDisconnect(); // forcibly disconnect
+ LPUNKNOWN GetControllingUnknown();
+ // get controlling IUnknown for aggregate creation
+
+ // these versions do not delegate to m_pOuterUnknown
+ DWORD InternalQueryInterface(const void*, LPVOID* ppvObj);
+ DWORD InternalAddRef();
+ DWORD InternalRelease();
+ // these versions delegate to m_pOuterUnknown
+ DWORD ExternalQueryInterface(const void*, LPVOID* ppvObj);
+ DWORD ExternalAddRef();
+ DWORD ExternalRelease();
+
+ // implementation helpers
+ LPUNKNOWN GetInterface(const void*);
+ LPUNKNOWN QueryAggregates(const void*);
+
+ // advanced overrideables for implementation
+ virtual BOOL OnCreateAggregates();
+ virtual LPUNKNOWN GetInterfaceHook(const void*);
+
+ // OLE automation implementation
+protected:
+ struct XDispatch
+ {
+ DWORD m_vtbl; // place-holder for IDispatch vtable
+#ifndef _AFX_NO_NESTED_DERIVATION
+ size_t m_nOffset;
+#endif
+ } m_xDispatch;
+ BOOL m_bResultExpected;
+
+ // member variable-based properties
+ void GetStandardProp(const AFX_DISPMAP_ENTRY* pEntry,
+ VARIANT* pvarResult, UINT* puArgErr);
+ SCODE SetStandardProp(const AFX_DISPMAP_ENTRY* pEntry,
+ DISPPARAMS* pDispParams, UINT* puArgErr);
+
+ // DISPID to dispatch map lookup
+ static UINT PASCAL GetEntryCount(const AFX_DISPMAP* pDispMap);
+ const AFX_DISPMAP_ENTRY* PASCAL GetDispEntry(LONG memid);
+ static LONG PASCAL MemberIDFromName(const AFX_DISPMAP* pDispMap, LPCTSTR lpszName);
+
+ // helpers for member function calling implementation
+ static UINT PASCAL GetStackSize(const BYTE* pbParams, VARTYPE vtResult);
+#if defined(_PPC_) || defined(_MPPC_)
+ SCODE PushStackArgs(BYTE* pStack, const BYTE* pbParams,
+ void* pResult, VARTYPE vtResult, DISPPARAMS* pDispParams,
+ UINT* puArgErr, VARIANT* rgTempVars, UINT nSizeArgs);
+#else
+ SCODE PushStackArgs(BYTE* pStack, const BYTE* pbParams,
+ void* pResult, VARTYPE vtResult, DISPPARAMS* pDispParams,
+ UINT* puArgErr, VARIANT* rgTempVars);
+#endif
+ SCODE CallMemberFunc(const AFX_DISPMAP_ENTRY* pEntry, WORD wFlags,
+ VARIANT* pvarResult, DISPPARAMS* pDispParams, UINT* puArgErr);
+
+ friend class COleDispatchImpl;
+
+#ifndef _AFX_NO_OCC_SUPPORT
+public:
+ // OLE event sink implementation
+ BOOL OnEvent(UINT idCtrl, AFX_EVENT* pEvent,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+protected:
+ const AFX_EVENTSINKMAP_ENTRY* PASCAL GetEventSinkEntry(UINT idCtrl,
+ AFX_EVENT* pEvent);
+#endif // !_AFX_NO_OCC_SUPPORT
+
+ // OLE connection implementation
+ struct XConnPtContainer
+ {
+ DWORD m_vtbl; // place-holder for IConnectionPointContainer vtable
+#ifndef _AFX_NO_NESTED_DERIVATION
+ size_t m_nOffset;
+#endif
+ } m_xConnPtContainer;
+
+#ifdef _AFXDLL
+ AFX_MODULE_STATE* m_pModuleState;
+ friend class CInnerUnknown;
+#endif
+
+ virtual BOOL GetExtraConnectionPoints(CPtrArray* pConnPoints);
+ virtual LPCONNECTIONPOINT GetConnectionHook(const IID& iid);
+
+ friend class COleConnPtContainer;
+
+#endif //!_AFX_NO_OLE_SUPPORT
+};
+
+class CCmdUI // simple helper class
+{
+public:
+// Attributes
+ UINT m_nID;
+ UINT m_nIndex; // menu item or other index
+
+ // if a menu item
+ CMenu* m_pMenu; // NULL if not a menu
+ CMenu* m_pSubMenu; // sub containing menu item
+ // if a popup sub menu - ID is for first in popup
+
+ // if from some other window
+ CWnd* m_pOther; // NULL if a menu or not a CWnd
+
+// Operations to do in ON_UPDATE_COMMAND_UI
+ virtual void Enable(BOOL bOn = TRUE);
+ virtual void SetCheck(int nCheck = 1); // 0, 1 or 2 (indeterminate)
+ virtual void SetRadio(BOOL bOn = TRUE);
+ virtual void SetText(LPCTSTR lpszText);
+
+// Advanced operation
+ void ContinueRouting();
+
+// Implementation
+ CCmdUI();
+ BOOL m_bEnableChanged;
+ BOOL m_bContinueRouting;
+ UINT m_nIndexMax; // last + 1 for iterating m_nIndex
+
+ CMenu* m_pParentMenu; // NULL if parent menu not easily determined
+ // (probably a secondary popup menu)
+
+ BOOL DoUpdate(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
+};
+
+// special CCmdUI derived classes are used for other UI paradigms
+// like toolbar buttons and status indicators
+
+// pointer to afx_msg member function
+#ifndef AFX_MSG_CALL
+#define AFX_MSG_CALL
+#endif
+typedef void (AFX_MSG_CALL CCmdTarget::*AFX_PMSG)(void);
+
+enum AFX_DISPMAP_FLAGS
+{
+ afxDispCustom = 0,
+ afxDispStock = 1
+};
+
+struct AFX_DISPMAP_ENTRY
+{
+ LPCTSTR lpszName; // member/property name
+ long lDispID; // DISPID (may be DISPID_UNKNOWN)
+ LPCSTR lpszParams; // member parameter description
+ WORD vt; // return value type / or type of property
+ AFX_PMSG pfn; // normal member On<membercall> or, OnGet<property>
+ AFX_PMSG pfnSet; // special member for OnSet<property>
+ size_t nPropOffset; // property offset
+ AFX_DISPMAP_FLAGS flags;// flags (e.g. stock/custom)
+};
+
+struct AFX_EVENTSINKMAP_ENTRY
+{
+ AFX_DISPMAP_ENTRY dispEntry;
+ UINT nCtrlIDFirst;
+ UINT nCtrlIDLast;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWnd implementation
+
+// structures (see afxext.h)
+struct CCreateContext; // context for creating things
+struct CPrintInfo; // print preview customization info
+
+struct AFX_MSGMAP_ENTRY
+{
+ UINT nMessage; // windows message
+ UINT nCode; // control code or WM_NOTIFY code
+ UINT nID; // control ID (or 0 for windows messages)
+ UINT nLastID; // used for entries specifying a range of control id's
+ UINT nSig; // signature type (action) or pointer to message #
+ AFX_PMSG pfn; // routine to call (or special value)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWnd - a Microsoft Windows application window
+
+class COleDropTarget; // for more information see AFXOLE.H
+class COleControlContainer;
+class COleControlSite;
+
+// CWnd::m_nFlags (generic to CWnd)
+#define WF_TOOLTIPS 0x0001 // window is enabled for tooltips
+#define WF_TEMPHIDE 0x0002 // window is temporarily hidden
+#define WF_STAYDISABLED 0x0004 // window should stay disabled
+#define WF_MODALLOOP 0x0008 // currently in modal loop
+#define WF_CONTINUEMODAL 0x0010 // modal loop should continue running
+#define WF_OLECTLCONTAINER 0x0100 // some descendant is an OLE control
+
+// CWnd::m_nFlags (specific to CFrameWnd)
+#define WF_STAYACTIVE 0x0020 // look active even though not active
+#define WF_NOPOPMSG 0x0040 // ignore WM_POPMESSAGESTRING calls
+#define WF_MODALDISABLE 0x0080 // window is disabled
+#define WF_KEEPMINIACTIVE 0x0200 // stay activate even though you are deactivated
+
+// flags for CWnd::RunModalLoop
+#define MLF_NOIDLEMSG 0x0001 // don't send WM_ENTERIDLE messages
+#define MLF_NOKICKIDLE 0x0002 // don't send WM_KICKIDLE messages
+#define MLF_SHOWONIDLE 0x0004 // show window if not visible at idle time
+
+// extra MFC defined TTF_ flags for TOOLINFO::uFlags
+#define TTF_NOTBUTTON 0x80000000L // no status help on buttondown
+#define TTF_ALWAYSTIP 0x40000000L // always show the tip even if not active
+
+class CWnd : public CCmdTarget
+{
+ DECLARE_DYNCREATE(CWnd)
+protected:
+ static const MSG* PASCAL GetCurrentMessage();
+
+// Attributes
+public:
+ HWND m_hWnd; // must be first data member
+ operator HWND() const;
+
+ HWND GetSafeHwnd() const;
+ DWORD GetStyle() const;
+ DWORD GetExStyle() const;
+ BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0);
+ BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0);
+
+ CWnd* GetOwner() const;
+ void SetOwner(CWnd* pOwnerWnd);
+
+// Constructors and other creation
+ CWnd();
+
+ static CWnd* PASCAL FromHandle(HWND hWnd);
+ static CWnd* PASCAL FromHandlePermanent(HWND hWnd);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HWND hWndNew);
+ HWND Detach();
+
+ // subclassing/unsubclassing functions
+ virtual void PreSubclassWindow();
+ BOOL SubclassWindow(HWND hWnd);
+ BOOL SubclassDlgItem(UINT nID, CWnd* pParent);
+ HWND UnsubclassWindow();
+
+ // handling of RT_DLGINIT resource (extension to RT_DIALOG)
+ BOOL ExecuteDlgInit(LPCTSTR lpszResourceName);
+ BOOL ExecuteDlgInit(LPVOID lpResource);
+
+public:
+ // for child windows, views, panes etc
+ virtual BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName, DWORD dwStyle,
+ const RECT& rect,
+ CWnd* pParentWnd, UINT nID,
+ CCreateContext* pContext = NULL);
+
+ // advanced creation (allows access to extended styles)
+ BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName, DWORD dwStyle,
+ int x, int y, int nWidth, int nHeight,
+ HWND hWndParent, HMENU nIDorHMenu, LPVOID lpParam = NULL);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // for wrapping OLE controls
+ BOOL CreateControl(REFCLSID clsid, LPCTSTR pszWindowName, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID, CFile* pPersist=NULL,
+ BOOL bStorage=FALSE, BSTR bstrLicKey=NULL);
+
+ BOOL CreateControl(LPCTSTR pszClass, LPCTSTR pszWindowName, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID, CFile* pPersist=NULL,
+ BOOL bStorage=FALSE, BSTR bstrLicKey=NULL);
+
+ LPUNKNOWN GetControlUnknown();
+#endif
+
+ virtual BOOL DestroyWindow();
+
+ // special pre-creation and window rect adjustment hooks
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ // Advanced: virtual AdjustWindowRect
+ enum AdjustType { adjustBorder = 0, adjustOutside = 1 };
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+// Window tree access
+ int GetDlgCtrlID() const;
+ int SetDlgCtrlID(int nID);
+ // get and set window ID, for child windows only
+ CWnd* GetDlgItem(int nID) const;
+ // get immediate child with given ID
+ void GetDlgItem(int nID, HWND* phWnd) const;
+ // as above, but returns HWND
+ CWnd* GetDescendantWindow(int nID, BOOL bOnlyPerm = FALSE) const;
+ // like GetDlgItem but recursive
+ void SendMessageToDescendants(UINT message, WPARAM wParam = 0,
+ LPARAM lParam = 0, BOOL bDeep = TRUE, BOOL bOnlyPerm = FALSE);
+ CFrameWnd* GetParentFrame() const;
+ CWnd* GetTopLevelParent() const;
+ CWnd* GetTopLevelOwner() const;
+ CWnd* GetParentOwner() const;
+ CFrameWnd* GetTopLevelFrame() const;
+ static CWnd* PASCAL GetSafeOwner(CWnd* pParent = NULL, HWND* pWndTop = NULL);
+
+// Message Functions
+ LRESULT SendMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
+ BOOL PostMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
+
+#ifndef _MAC
+ BOOL SendNotifyMessage(UINT message, WPARAM wParam, LPARAM lParam);
+#endif
+ BOOL SendChildNotifyLastMsg(LRESULT* pResult = NULL);
+
+// Message processing for modeless dialog-like windows
+ BOOL IsDialogMessage(LPMSG lpMsg);
+
+// Window Text Functions
+ void SetWindowText(LPCTSTR lpszString);
+ int GetWindowText(LPTSTR lpszStringBuf, int nMaxCount) const;
+ void GetWindowText(CString& rString) const;
+ int GetWindowTextLength() const;
+ void SetFont(CFont* pFont, BOOL bRedraw = TRUE);
+ CFont* GetFont() const;
+
+// CMenu Functions - non-Child windows only
+ CMenu* GetMenu() const;
+ BOOL SetMenu(CMenu* pMenu);
+ void DrawMenuBar();
+ CMenu* GetSystemMenu(BOOL bRevert) const;
+ BOOL HiliteMenuItem(CMenu* pMenu, UINT nIDHiliteItem, UINT nHilite);
+
+// Window Size and Position Functions
+ BOOL IsIconic() const;
+ BOOL IsZoomed() const;
+ void MoveWindow(int x, int y, int nWidth, int nHeight,
+ BOOL bRepaint = TRUE);
+ void MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE);
+
+ static AFX_DATA const CWnd wndTop; // SetWindowPos's pWndInsertAfter
+ static AFX_DATA const CWnd wndBottom; // SetWindowPos's pWndInsertAfter
+ static AFX_DATA const CWnd wndTopMost; // SetWindowPos pWndInsertAfter
+ static AFX_DATA const CWnd wndNoTopMost; // SetWindowPos pWndInsertAfter
+
+ BOOL SetWindowPos(const CWnd* pWndInsertAfter, int x, int y,
+ int cx, int cy, UINT nFlags);
+#ifndef _MAC
+ UINT ArrangeIconicWindows();
+#endif
+ void BringWindowToTop();
+ void GetWindowRect(LPRECT lpRect) const;
+ void GetClientRect(LPRECT lpRect) const;
+
+ BOOL GetWindowPlacement(WINDOWPLACEMENT* lpwndpl) const;
+ BOOL SetWindowPlacement(const WINDOWPLACEMENT* lpwndpl);
+
+// Coordinate Mapping Functions
+ void ClientToScreen(LPPOINT lpPoint) const;
+ void ClientToScreen(LPRECT lpRect) const;
+ void ScreenToClient(LPPOINT lpPoint) const;
+ void ScreenToClient(LPRECT lpRect) const;
+ void MapWindowPoints(CWnd* pwndTo, LPPOINT lpPoint, UINT nCount) const;
+ void MapWindowPoints(CWnd* pwndTo, LPRECT lpRect) const;
+
+// Update/Painting Functions
+ CDC* BeginPaint(LPPAINTSTRUCT lpPaint);
+ void EndPaint(LPPAINTSTRUCT lpPaint);
+ CDC* GetDC();
+ CDC* GetWindowDC();
+ int ReleaseDC(CDC* pDC);
+ void Print(CDC* pDC, DWORD dwFlags) const;
+ void PrintClient(CDC* pDC, DWORD dwFlags) const;
+
+ void UpdateWindow();
+ void SetRedraw(BOOL bRedraw = TRUE);
+ BOOL GetUpdateRect(LPRECT lpRect, BOOL bErase = FALSE);
+ int GetUpdateRgn(CRgn* pRgn, BOOL bErase = FALSE);
+ void Invalidate(BOOL bErase = TRUE);
+ void InvalidateRect(LPCRECT lpRect, BOOL bErase = TRUE);
+ void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);
+ void ValidateRect(LPCRECT lpRect);
+ void ValidateRgn(CRgn* pRgn);
+ BOOL ShowWindow(int nCmdShow);
+ BOOL IsWindowVisible() const;
+ void ShowOwnedPopups(BOOL bShow = TRUE);
+
+ CDC* GetDCEx(CRgn* prgnClip, DWORD flags);
+#ifndef _MAC
+ BOOL LockWindowUpdate(); // for backward compatibility
+ void UnlockWindowUpdate();
+#endif
+ BOOL RedrawWindow(LPCRECT lpRectUpdate = NULL,
+ CRgn* prgnUpdate = NULL,
+ UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);
+ BOOL EnableScrollBar(int nSBFlags, UINT nArrowFlags = ESB_ENABLE_BOTH);
+
+// Timer Functions
+ UINT SetTimer(UINT nIDEvent, UINT nElapse,
+ void (CALLBACK* lpfnTimer)(HWND, UINT, UINT, DWORD));
+ BOOL KillTimer(int nIDEvent);
+
+// ToolTip Functions
+ BOOL EnableToolTips(BOOL bEnable = TRUE);
+ static void PASCAL CancelToolTips(BOOL bKeys = FALSE);
+ void FilterToolTipMessage(MSG* pMsg);
+
+ // for command hit testing (used for automatic tooltips)
+ virtual int OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
+
+// Window State Functions
+ BOOL IsWindowEnabled() const;
+ BOOL EnableWindow(BOOL bEnable = TRUE);
+
+ // the active window applies only to top-level (frame windows)
+ static CWnd* PASCAL GetActiveWindow();
+ CWnd* SetActiveWindow();
+
+ // the foreground window applies only to top-level windows (frame windows)
+ BOOL SetForegroundWindow();
+ static CWnd* PASCAL GetForegroundWindow();
+
+ // capture and focus apply to all windows
+ static CWnd* PASCAL GetCapture();
+ CWnd* SetCapture();
+ static CWnd* PASCAL GetFocus();
+ CWnd* SetFocus();
+
+ static CWnd* PASCAL GetDesktopWindow();
+
+// Obsolete and non-portable APIs - not recommended for new code
+#ifndef _MAC
+ void CloseWindow();
+ BOOL OpenIcon();
+#endif
+
+// Dialog-Box Item Functions
+// (NOTE: Dialog-Box Items/Controls are not necessarily in dialog boxes!)
+ void CheckDlgButton(int nIDButton, UINT nCheck);
+ void CheckRadioButton(int nIDFirstButton, int nIDLastButton,
+ int nIDCheckButton);
+ int GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton);
+#ifndef _MAC
+ int DlgDirList(LPTSTR lpPathSpec, int nIDListBox,
+ int nIDStaticPath, UINT nFileType);
+ int DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox,
+ int nIDStaticPath, UINT nFileType);
+ BOOL DlgDirSelect(LPTSTR lpString, int nIDListBox);
+ BOOL DlgDirSelectComboBox(LPTSTR lpString, int nIDComboBox);
+#endif
+
+ UINT GetDlgItemInt(int nID, BOOL* lpTrans = NULL,
+ BOOL bSigned = TRUE) const;
+ int GetDlgItemText(int nID, LPTSTR lpStr, int nMaxCount) const;
+ int GetDlgItemText(int nID, CString& rString) const;
+ CWnd* GetNextDlgGroupItem(CWnd* pWndCtl, BOOL bPrevious = FALSE) const;
+
+ CWnd* GetNextDlgTabItem(CWnd* pWndCtl, BOOL bPrevious = FALSE) const;
+ UINT IsDlgButtonChecked(int nIDButton) const;
+ LRESULT SendDlgItemMessage(int nID, UINT message,
+ WPARAM wParam = 0, LPARAM lParam = 0);
+ void SetDlgItemInt(int nID, UINT nValue, BOOL bSigned = TRUE);
+ void SetDlgItemText(int nID, LPCTSTR lpszString);
+
+// Scrolling Functions
+ int GetScrollPos(int nBar) const;
+ void GetScrollRange(int nBar, LPINT lpMinPos, LPINT lpMaxPos) const;
+ void ScrollWindow(int xAmount, int yAmount,
+ LPCRECT lpRect = NULL,
+ LPCRECT lpClipRect = NULL);
+ int SetScrollPos(int nBar, int nPos, BOOL bRedraw = TRUE);
+ void SetScrollRange(int nBar, int nMinPos, int nMaxPos,
+ BOOL bRedraw = TRUE);
+ void ShowScrollBar(UINT nBar, BOOL bShow = TRUE);
+ void EnableScrollBarCtrl(int nBar, BOOL bEnable = TRUE);
+ virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
+ // return sibling scrollbar control (or NULL if none)
+
+ int ScrollWindowEx(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags);
+ BOOL SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo,
+ BOOL bRedraw = TRUE);
+ BOOL GetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL);
+ int GetScrollLimit(int nBar);
+
+// Window Access Functions
+ CWnd* ChildWindowFromPoint(POINT point) const;
+#ifndef _MAC
+ CWnd* ChildWindowFromPoint(POINT point, UINT nFlags) const;
+#endif
+ static CWnd* PASCAL FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName);
+ CWnd* GetNextWindow(UINT nFlag = GW_HWNDNEXT) const;
+ CWnd* GetTopWindow() const;
+
+ CWnd* GetWindow(UINT nCmd) const;
+ CWnd* GetLastActivePopup() const;
+
+ BOOL IsChild(const CWnd* pWnd) const;
+ CWnd* GetParent() const;
+ CWnd* SetParent(CWnd* pWndNewParent);
+ static CWnd* PASCAL WindowFromPoint(POINT point);
+
+// Alert Functions
+ BOOL FlashWindow(BOOL bInvert);
+ int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
+ UINT nType = MB_OK);
+
+// Clipboard Functions
+ BOOL ChangeClipboardChain(HWND hWndNext);
+ HWND SetClipboardViewer();
+ BOOL OpenClipboard();
+ static CWnd* PASCAL GetClipboardOwner();
+ static CWnd* PASCAL GetClipboardViewer();
+ static CWnd* PASCAL GetOpenClipboardWindow();
+
+// Caret Functions
+ void CreateCaret(CBitmap* pBitmap);
+ void CreateSolidCaret(int nWidth, int nHeight);
+ void CreateGrayCaret(int nWidth, int nHeight);
+ static CPoint PASCAL GetCaretPos();
+ static void PASCAL SetCaretPos(POINT point);
+ void HideCaret();
+ void ShowCaret();
+
+// Shell Interaction Functions
+ void DragAcceptFiles(BOOL bAccept = TRUE);
+
+// Icon Functions
+ HICON SetIcon(HICON hIcon, BOOL bBigIcon);
+ HICON GetIcon(BOOL bBigIcon) const;
+
+// Context Help Functions
+#ifndef _MAC
+ BOOL SetWindowContextHelpId(DWORD dwContextHelpId);
+ DWORD GetWindowContextHelpId() const;
+
+#endif
+
+// Dialog Data support
+public:
+ BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
+ // data wnd must be same type as this
+
+// Help Command Handlers
+ afx_msg void OnHelp(); // F1 (uses current context)
+ afx_msg void OnHelpIndex(); // ID_HELP_INDEX
+ afx_msg void OnHelpFinder(); // ID_HELP_FINDER, ID_DEFAULT_HELP
+ afx_msg void OnHelpUsing(); // ID_HELP_USING
+ virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
+
+// Layout and other functions
+public:
+ enum RepositionFlags
+ { reposDefault = 0, reposQuery = 1, reposExtra = 2 };
+ void RepositionBars(UINT nIDFirst, UINT nIDLast, UINT nIDLeftOver,
+ UINT nFlag = reposDefault, LPRECT lpRectParam = NULL,
+ LPCRECT lpRectClient = NULL, BOOL bStretch = TRUE);
+
+ // dialog support
+ void UpdateDialogControls(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
+ void CenterWindow(CWnd* pAlternateOwner = NULL);
+ int RunModalLoop(DWORD dwFlags = 0);
+ virtual BOOL ContinueModal();
+ virtual void EndModalLoop(int nResult);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+// OLE control wrapper functions
+ void AFX_CDECL InvokeHelper(DISPID dwDispID, WORD wFlags,
+ VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ...);
+ void AFX_CDECL SetProperty(DISPID dwDispID, VARTYPE vtProp, ...);
+ void GetProperty(DISPID dwDispID, VARTYPE vtProp, void* pvProp) const;
+#endif
+
+// Window-Management message handler member functions
+protected:
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
+ afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
+ afx_msg LRESULT OnActivateTopLevel(WPARAM, LPARAM);
+ afx_msg void OnCancelMode();
+ afx_msg void OnChildActivate();
+ afx_msg void OnClose();
+ afx_msg void OnContextMenu(CWnd* pWnd, CPoint pos);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+
+ afx_msg void OnDestroy();
+ afx_msg void OnEnable(BOOL bEnable);
+ afx_msg void OnEndSession(BOOL bEnding);
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
+ afx_msg BOOL OnHelpInfo(HELPINFO* lpHelpInfo);
+ afx_msg void OnIconEraseBkgnd(CDC* pDC);
+ afx_msg void OnKillFocus(CWnd* pNewWnd);
+ afx_msg LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg void OnMove(int x, int y);
+ afx_msg void OnPaint();
+ afx_msg void OnParentNotify(UINT message, LPARAM lParam);
+ afx_msg HCURSOR OnQueryDragIcon();
+ afx_msg BOOL OnQueryEndSession();
+ afx_msg BOOL OnQueryNewPalette();
+ afx_msg BOOL OnQueryOpen();
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnTCard(UINT idAction, DWORD dwActionData);
+ afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
+ afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
+
+// Nonclient-Area message handler member functions
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnNcDestroy();
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonUp(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcRButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcRButtonUp(UINT nHitTest, CPoint point);
+
+// System message handler member functions
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg void OnPaletteIsChanging(CWnd* pRealizeWnd);
+ afx_msg void OnSysChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnSysDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnCompacting(UINT nCpuTime);
+ afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
+ afx_msg void OnFontChange();
+ afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
+ afx_msg void OnSpoolerStatus(UINT nStatus, UINT nJobs);
+ afx_msg void OnSysColorChange();
+ afx_msg void OnTimeChange();
+ afx_msg void OnWinIniChange(LPCTSTR lpszSection);
+
+// Input message handler member functions
+ afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnTimer(UINT nIDEvent);
+
+// Initialization message handler member functions
+ afx_msg void OnInitMenu(CMenu* pMenu);
+ afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
+
+// Clipboard message handler member functions
+ afx_msg void OnAskCbFormatName(UINT nMaxCount, LPTSTR lpszString);
+ afx_msg void OnChangeCbChain(HWND hWndRemove, HWND hWndAfter);
+ afx_msg void OnDestroyClipboard();
+ afx_msg void OnDrawClipboard();
+ afx_msg void OnHScrollClipboard(CWnd* pClipAppWnd, UINT nSBCode, UINT nPos);
+ afx_msg void OnPaintClipboard(CWnd* pClipAppWnd, HGLOBAL hPaintStruct);
+ afx_msg void OnRenderAllFormats();
+ afx_msg void OnRenderFormat(UINT nFormat);
+ afx_msg void OnSizeClipboard(CWnd* pClipAppWnd, HGLOBAL hRect);
+ afx_msg void OnVScrollClipboard(CWnd* pClipAppWnd, UINT nSBCode, UINT nPos);
+
+// Control message handler member functions
+ afx_msg int OnCompareItem(int nIDCtl, LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ afx_msg void OnDeleteItem(int nIDCtl, LPDELETEITEMSTRUCT lpDeleteItemStruct);
+ afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
+ afx_msg UINT OnGetDlgCode();
+ afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ afx_msg int OnCharToItem(UINT nChar, CListBox* pListBox, UINT nIndex);
+ afx_msg int OnVKeyToItem(UINT nKey, CListBox* pListBox, UINT nIndex);
+
+// MDI message handler member functions
+ afx_msg void OnMDIActivate(BOOL bActivate,
+ CWnd* pActivateWnd, CWnd* pDeactivateWnd);
+
+// Menu loop notification messages
+ afx_msg void OnEnterMenuLoop(BOOL bIsTrackPopupMenu);
+ afx_msg void OnExitMenuLoop(BOOL bIsTrackPopupMenu);
+
+// Win4 messages
+ afx_msg void OnStyleChanged(int nStyleType, LPSTYLESTRUCT lpStyleStruct);
+ afx_msg void OnStyleChanging(int nStyleType, LPSTYLESTRUCT lpStyleStruct);
+ afx_msg void OnSizing(UINT nSide, LPRECT lpRect);
+ afx_msg void OnMoving(UINT nSide, LPRECT lpRect);
+ afx_msg void OnCaptureChanged(CWnd* pWnd);
+ afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);
+
+// Overridables and other helpers (for implementation of derived classes)
+protected:
+ // for deriving from a standard control
+ virtual WNDPROC* GetSuperWndProcAddr();
+
+ // for dialog data exchange and validation
+ virtual void DoDataExchange(CDataExchange* pDX);
+
+public:
+ // for modality
+ virtual void BeginModalState();
+ virtual void EndModalState();
+
+ // for translating Windows messages in main message pump
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // for ambient properties exposed to contained OLE controls
+ virtual BOOL OnAmbientProperty(COleControlSite* pSite, DISPID dispid,
+ VARIANT* pvar);
+#endif
+
+protected:
+ // for processing Windows messages
+ virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ // for handling default processing
+ LRESULT Default();
+ virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+
+ // for custom cleanup after WM_NCDESTROY
+ virtual void PostNcDestroy();
+
+ // for notifications from parent
+ virtual BOOL OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+ // return TRUE if parent should not process this message
+ BOOL ReflectChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+ static BOOL PASCAL ReflectLastMsg(HWND hWndChild, LRESULT* pResult = NULL);
+
+// Implementation
+public:
+ virtual ~CWnd();
+ virtual BOOL CheckAutoCenter();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ // 3D support (these APIs will be obsolete with next version of Windows)
+ BOOL SubclassCtl3d(int nControlType = -1);
+ // see CTL3D.H for list of control types
+ BOOL SubclassDlg3d(DWORD dwMask = 0xFFFF /*CTL3D_ALL*/);
+ // see CTL3D.H for list of mask values
+ static BOOL PASCAL GrayCtlColor(HDC hDC, HWND hWnd, UINT nCtlColor,
+ HBRUSH hbrGray, COLORREF clrText);
+ HBRUSH OnGrayCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+
+ // helper routines for implementation
+ BOOL HandleFloatingSysCommand(UINT nID, LPARAM lParam);
+ BOOL IsTopParentActive() const;
+ void ActivateTopParent();
+ static BOOL PASCAL WalkPreTranslateTree(HWND hWndStop, MSG* pMsg);
+ static CWnd* PASCAL GetDescendantWindow(HWND hWnd, int nID,
+ BOOL bOnlyPerm);
+ static void PASCAL SendMessageToDescendants(HWND hWnd, UINT message,
+ WPARAM wParam, LPARAM lParam, BOOL bDeep, BOOL bOnlyPerm);
+ virtual BOOL IsFrameWnd() const; // IsKindOf(RUNTIME_CLASS(CFrameWnd)))
+ virtual void OnFinalRelease();
+ BOOL PreTranslateInput(LPMSG lpMsg);
+ static BOOL PASCAL ModifyStyle(HWND hWnd, DWORD dwRemove, DWORD dwAdd,
+ UINT nFlags);
+ static BOOL PASCAL ModifyStyleEx(HWND hWnd, DWORD dwRemove, DWORD dwAdd,
+ UINT nFlags);
+ static void PASCAL _FilterToolTipMessage(MSG* pMsg, CWnd* pWnd);
+
+public:
+ HWND m_hWndOwner; // implementation of SetOwner and GetOwner
+ UINT m_nFlags; // see WF_ flags above
+
+protected:
+ WNDPROC m_pfnSuper; // for subclassing of controls
+ static const UINT m_nMsgDragList;
+ int m_nModalResult; // for return values from CWnd::RunModalLoop
+
+ COleDropTarget* m_pDropTarget; // for automatic cleanup of drop target
+ friend class COleDropTarget;
+ friend class CFrameWnd;
+
+ // for creating dialogs and dialog-like windows
+ BOOL CreateDlg(LPCTSTR lpszTemplateName, CWnd* pParentWnd);
+ BOOL CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd);
+ BOOL CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd,
+ HINSTANCE hInst);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ COleControlContainer* m_pCtrlCont; // for containing OLE controls
+ COleControlSite* m_pCtrlSite; // for wrapping an OLE control
+ friend class COccManager;
+ friend class COleControlSite;
+ friend class COleControlContainer;
+ BOOL InitControlContainer();
+ virtual BOOL SetOccDialogInfo(struct _AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ void AttachControlSite(CHandleMap* pMap);
+public:
+ void AttachControlSite(CWnd* pWndParent);
+#endif
+
+protected:
+ // implementation of message dispatch/hooking
+ friend LRESULT CALLBACK _AfxSendMsgHook(int, WPARAM, LPARAM);
+ friend void AFXAPI _AfxStandardSubclass(HWND);
+ friend LRESULT AFXAPI AfxCallWndProc(CWnd*, HWND, UINT, WPARAM, LPARAM);
+
+ // standard message implementation
+ afx_msg LRESULT OnNTCtlColor(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnQuery3dControls(WPARAM, LPARAM);
+ afx_msg LRESULT OnDisplayChange(WPARAM, LPARAM);
+#ifdef _MAC
+ afx_msg LRESULT OnMacintosh(WPARAM wParam, LPARAM lParam);
+#endif
+
+ afx_msg LRESULT OnDragList(WPARAM, LPARAM);
+
+ //{{AFX_MSG(CWnd)
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+private:
+ CWnd(HWND hWnd); // just for special initialization
+};
+
+// helpers for registering your own WNDCLASSes
+LPCTSTR AFXAPI AfxRegisterWndClass(UINT nClassStyle,
+ HCURSOR hCursor = 0, HBRUSH hbrBackground = 0, HICON hIcon = 0);
+
+BOOL AFXAPI AfxRegisterClass(WNDCLASS* lpWndClass);
+
+// Implementation
+LRESULT CALLBACK AfxWndProc(HWND, UINT, WPARAM, LPARAM);
+
+WNDPROC AFXAPI AfxGetAfxWndProc();
+#define AfxWndProc (*AfxGetAfxWndProc())
+
+typedef void (AFX_MSG_CALL CWnd::*AFX_PMSGW)(void);
+ // like 'AFX_PMSG' but for CWnd derived classes only
+
+/////////////////////////////////////////////////////////////////////////////
+// CDialog - a modal or modeless dialog
+
+class CDialog : public CWnd
+{
+ DECLARE_DYNAMIC(CDialog)
+
+ // Modeless construct
+public:
+ CDialog();
+
+ BOOL Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
+ BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
+ BOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL,
+ void* lpDialogInit = NULL);
+ BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);
+
+ // Modal construct
+public:
+ CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
+ CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
+ BOOL InitModalIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL,
+ void* lpDialogInit = NULL);
+ BOOL InitModalIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);
+
+// Attributes
+public:
+ void MapDialogRect(LPRECT lpRect) const;
+ void SetHelpID(UINT nIDR);
+
+// Operations
+public:
+ // modal processing
+ virtual int DoModal();
+
+ // support for passing on tab control - use 'PostMessage' if needed
+ void NextDlgCtrl() const;
+ void PrevDlgCtrl() const;
+ void GotoDlgCtrl(CWnd* pWndCtrl);
+
+ // default button access
+ void SetDefID(UINT nID);
+ DWORD GetDefID() const;
+
+ // termination
+ void EndDialog(int nResult);
+
+// Overridables (special message map entries)
+ virtual BOOL OnInitDialog();
+ virtual void OnSetFont(CFont* pFont);
+protected:
+ virtual void OnOK();
+ virtual void OnCancel();
+
+// Implementation
+public:
+ virtual ~CDialog();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual BOOL CheckAutoCenter();
+
+protected:
+ UINT m_nIDHelp; // Help ID (0 for none, see HID_BASE_RESOURCE)
+
+ // parameters for 'DoModal'
+ LPCTSTR m_lpszTemplateName; // name or MAKEINTRESOURCE
+ HGLOBAL m_hDialogTemplate; // indirect (m_lpDialogTemplate == NULL)
+ LPCDLGTEMPLATE m_lpDialogTemplate; // indirect if (m_lpszTemplateName == NULL)
+ void* m_lpDialogInit; // DLGINIT resource data
+ CWnd* m_pParentWnd; // parent/owner window
+ HWND m_hWndTop; // top level parent window (may be disabled)
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+#endif
+ virtual void PreInitDialog();
+
+ // implementation helpers
+ HWND PreModal();
+ void PostModal();
+
+ BOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd,
+ void* lpDialogInit, HINSTANCE hInst);
+ BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd,
+ HINSTANCE hInst);
+
+protected:
+ //{{AFX_MSG(CDialog)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+ afx_msg LRESULT HandleSetFont(WPARAM, LPARAM);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg void OnSysColorChange();
+#endif
+ DECLARE_MESSAGE_MAP()
+};
+
+// all CModalDialog functionality is now in CDialog
+#define CModalDialog CDialog
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Windows controls
+
+class CStatic : public CWnd
+{
+ DECLARE_DYNAMIC(CStatic)
+
+// Constructors
+public:
+ CStatic();
+ BOOL Create(LPCTSTR lpszText, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff);
+
+// Operations
+ HICON SetIcon(HICON hIcon);
+ HICON GetIcon() const;
+
+#if (WINVER >= 0x400)
+ HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);
+ HENHMETAFILE GetEnhMetaFile() const;
+ HBITMAP SetBitmap(HBITMAP hBitmap);
+ HBITMAP GetBitmap() const;
+ HCURSOR SetCursor(HCURSOR hCursor);
+ HCURSOR GetCursor();
+#endif
+
+// Implementation
+public:
+ virtual ~CStatic();
+};
+
+class CButton : public CWnd
+{
+ DECLARE_DYNAMIC(CButton)
+
+// Constructors
+public:
+ CButton();
+ BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ UINT GetState() const;
+ void SetState(BOOL bHighlight);
+ int GetCheck() const;
+ void SetCheck(int nCheck);
+ UINT GetButtonStyle() const;
+ void SetButtonStyle(UINT nStyle, BOOL bRedraw = TRUE);
+
+#if (WINVER >= 0x400)
+ HICON SetIcon(HICON hIcon);
+ HICON GetIcon() const;
+ HBITMAP SetBitmap(HBITMAP hBitmap);
+ HBITMAP GetBitmap() const;
+ HCURSOR SetCursor(HCURSOR hCursor);
+ HCURSOR GetCursor();
+#endif
+
+// Overridables (for owner draw only)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CButton();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CListBox : public CWnd
+{
+ DECLARE_DYNAMIC(CListBox)
+
+// Constructors
+public:
+ CListBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+
+ // for entire listbox
+ int GetCount() const;
+ int GetHorizontalExtent() const;
+ void SetHorizontalExtent(int cxExtent);
+ int GetTopIndex() const;
+ int SetTopIndex(int nIndex);
+ LCID GetLocale() const;
+ LCID SetLocale(LCID nNewLocale);
+#if (WINVER >= 0x400)
+ int InitStorage(int nItems, UINT nBytes);
+ UINT ItemFromPoint(CPoint pt, BOOL& bOutside) const;
+#endif
+ // for single-selection listboxes
+ int GetCurSel() const;
+ int SetCurSel(int nSelect);
+
+ // for multiple-selection listboxes
+ int GetSel(int nIndex) const; // also works for single-selection
+ int SetSel(int nIndex, BOOL bSelect = TRUE);
+ int GetSelCount() const;
+ int GetSelItems(int nMaxItems, LPINT rgIndex) const;
+ void SetAnchorIndex(int nIndex);
+ int GetAnchorIndex() const;
+
+ // for listbox items
+ DWORD GetItemData(int nIndex) const;
+ int SetItemData(int nIndex, DWORD dwItemData);
+ void* GetItemDataPtr(int nIndex) const;
+ int SetItemDataPtr(int nIndex, void* pData);
+ int GetItemRect(int nIndex, LPRECT lpRect) const;
+ int GetText(int nIndex, LPTSTR lpszBuffer) const;
+ void GetText(int nIndex, CString& rString) const;
+ int GetTextLen(int nIndex) const;
+
+ // Settable only attributes
+ void SetColumnWidth(int cxWidth);
+ BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
+ void SetTabStops();
+ BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
+
+ int SetItemHeight(int nIndex, UINT cyItemHeight);
+ int GetItemHeight(int nIndex) const;
+ int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const;
+ int GetCaretIndex() const;
+ int SetCaretIndex(int nIndex, BOOL bScroll = TRUE);
+
+// Operations
+ // manipulating listbox items
+ int AddString(LPCTSTR lpszItem);
+ int DeleteString(UINT nIndex);
+ int InsertString(int nIndex, LPCTSTR lpszItem);
+ void ResetContent();
+ int Dir(UINT attr, LPCTSTR lpszWildCard);
+
+ // selection helpers
+ int FindString(int nStartAfter, LPCTSTR lpszItem) const;
+ int SelectString(int nStartAfter, LPCTSTR lpszItem);
+ int SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem);
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+ virtual int VKeyToItem(UINT nKey, UINT nIndex);
+ virtual int CharToItem(UINT nKey, UINT nIndex);
+
+// Implementation
+public:
+ virtual ~CListBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CCheckListBox : public CListBox
+{
+ DECLARE_DYNAMIC(CCheckListBox)
+
+// Constructors
+public:
+ CCheckListBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetCheckStyle(UINT nStyle);
+ UINT GetCheckStyle();
+ void SetCheck(int nIndex, int nCheck);
+ int GetCheck(int nIndex);
+ void Enable(int nIndex, BOOL bEnabled = TRUE);
+ BOOL IsEnabled(int nIndex);
+
+ virtual CRect OnGetCheckPosition(CRect rectItem, CRect rectCheckBox);
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+
+// Implementation
+protected:
+ void PreDrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ void PreMeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ int PreCompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ void PreDeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+
+#ifdef _DEBUG
+ virtual void PreSubclassWindow();
+#endif
+
+ int CalcMinimumItemHeight();
+ void InvalidateCheck(int nIndex);
+ void InvalidateItem(int nIndex);
+
+ int m_cyText;
+ UINT m_nStyle;
+
+ // Message map functions
+protected:
+ //{{AFX_MSG(CCheckListBox)
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBAddString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBFindString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBFindStringExact(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBGetItemData(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBInsertString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBSelectString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBSetItemData(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBSetItemHeight(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+class CComboBox : public CWnd
+{
+ DECLARE_DYNAMIC(CComboBox)
+
+// Constructors
+public:
+ CComboBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ // for entire combo box
+ int GetCount() const;
+ int GetCurSel() const;
+ int SetCurSel(int nSelect);
+ LCID GetLocale() const;
+ LCID SetLocale(LCID nNewLocale);
+// Win4
+ int GetTopIndex() const;
+ int SetTopIndex(int nIndex);
+ int InitStorage(int nItems, UINT nBytes);
+ void SetHorizontalExtent(UINT nExtent);
+ UINT GetHorizontalExtent() const;
+ int SetDroppedWidth(UINT nWidth);
+ int GetDroppedWidth() const;
+
+ // for edit control
+ DWORD GetEditSel() const;
+ BOOL LimitText(int nMaxChars);
+ BOOL SetEditSel(int nStartChar, int nEndChar);
+
+ // for combobox item
+ DWORD GetItemData(int nIndex) const;
+ int SetItemData(int nIndex, DWORD dwItemData);
+ void* GetItemDataPtr(int nIndex) const;
+ int SetItemDataPtr(int nIndex, void* pData);
+ int GetLBText(int nIndex, LPTSTR lpszText) const;
+ void GetLBText(int nIndex, CString& rString) const;
+ int GetLBTextLen(int nIndex) const;
+
+ int SetItemHeight(int nIndex, UINT cyItemHeight);
+ int GetItemHeight(int nIndex) const;
+ int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const;
+ int SetExtendedUI(BOOL bExtended = TRUE);
+ BOOL GetExtendedUI() const;
+ void GetDroppedControlRect(LPRECT lprect) const;
+ BOOL GetDroppedState() const;
+
+// Operations
+ // for drop-down combo boxes
+ void ShowDropDown(BOOL bShowIt = TRUE);
+
+ // manipulating listbox items
+ int AddString(LPCTSTR lpszString);
+ int DeleteString(UINT nIndex);
+ int InsertString(int nIndex, LPCTSTR lpszString);
+ void ResetContent();
+ int Dir(UINT attr, LPCTSTR lpszWildCard);
+
+ // selection helpers
+ int FindString(int nStartAfter, LPCTSTR lpszString) const;
+ int SelectString(int nStartAfter, LPCTSTR lpszString);
+
+ // Clipboard operations
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+
+// Implementation
+public:
+ virtual ~CComboBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CEdit : public CWnd
+{
+ DECLARE_DYNAMIC(CEdit)
+
+// Constructors
+public:
+ CEdit();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL CanUndo() const;
+ int GetLineCount() const;
+ BOOL GetModify() const;
+ void SetModify(BOOL bModified = TRUE);
+ void GetRect(LPRECT lpRect) const;
+ DWORD GetSel() const;
+ void GetSel(int& nStartChar, int& nEndChar) const;
+ HLOCAL GetHandle() const;
+ void SetHandle(HLOCAL hBuffer);
+#if (WINVER >= 0x400)
+ void SetMargins(UINT nLeft, UINT nRight);
+ DWORD GetMargins() const;
+ void SetLimitText(UINT nMax);
+ UINT GetLimitText() const;
+ CPoint PosFromChar(UINT nChar) const;
+ int CharFromPos(CPoint pt) const;
+#endif
+
+ // NOTE: first word in lpszBuffer must contain the size of the buffer!
+ int GetLine(int nIndex, LPTSTR lpszBuffer) const;
+ int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
+
+// Operations
+ void EmptyUndoBuffer();
+ BOOL FmtLines(BOOL bAddEOL);
+
+ void LimitText(int nChars = 0);
+ int LineFromChar(int nIndex = -1) const;
+ int LineIndex(int nLine = -1) const;
+ int LineLength(int nLine = -1) const;
+ void LineScroll(int nLines, int nChars = 0);
+ void ReplaceSel(LPCTSTR lpszNewText);
+ void SetPasswordChar(TCHAR ch);
+ void SetRect(LPCRECT lpRect);
+ void SetRectNP(LPCRECT lpRect);
+ void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE);
+ void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = FALSE);
+#ifndef _MAC
+ BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
+ void SetTabStops();
+ BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
+#endif
+
+ // Clipboard operations
+ BOOL Undo();
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+ BOOL SetReadOnly(BOOL bReadOnly = TRUE);
+ int GetFirstVisibleLine() const;
+ TCHAR GetPasswordChar() const;
+
+// Implementation
+public:
+ virtual ~CEdit();
+};
+
+class CScrollBar : public CWnd
+{
+ DECLARE_DYNAMIC(CScrollBar)
+
+// Constructors
+public:
+ CScrollBar();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetScrollPos() const;
+ int SetScrollPos(int nPos, BOOL bRedraw = TRUE);
+ void GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const;
+ void SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw = TRUE);
+ void ShowScrollBar(BOOL bShow = TRUE);
+
+ BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);
+
+ BOOL SetScrollInfo(LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE);
+ BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL);
+ int GetScrollLimit();
+
+// Implementation
+public:
+ virtual ~CScrollBar();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFrameWnd - base class for SDI and other frame windows
+
+// Frame window styles
+#define FWS_ADDTOTITLE 0x00008000L // modify title based on content
+#define FWS_PREFIXTITLE 0x00004000L // show document name before app name
+#define FWS_SNAPTOBARS 0x00002000L // snap size to size of contained bars
+
+struct CPrintPreviewState; // forward reference (see afxext.h)
+class CControlBar; // forward reference (see afxext.h)
+
+class CDockBar; // forward reference (see afxpriv.h)
+class CMiniDockFrameWnd; // forward reference (see afxpriv.h)
+class CDockState; // forward reference (see afxpriv.h)
+
+class COleFrameHook; // forward reference (see ..\src\oleimpl.h)
+
+class CFrameWnd : public CWnd
+{
+ DECLARE_DYNCREATE(CFrameWnd)
+
+// Constructors
+public:
+ static AFX_DATA const CRect rectDefault;
+ CFrameWnd();
+
+ BOOL LoadAccelTable(LPCTSTR lpszResourceName);
+ BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName,
+ DWORD dwStyle = WS_OVERLAPPEDWINDOW,
+ const RECT& rect = rectDefault,
+ CWnd* pParentWnd = NULL, // != NULL for popups
+ LPCTSTR lpszMenuName = NULL,
+ DWORD dwExStyle = 0,
+ CCreateContext* pContext = NULL);
+
+ // dynamic creation - load frame and associated resources
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+
+ // special helper for view creation
+ CWnd* CreateView(CCreateContext* pContext, UINT nID = AFX_IDW_PANE_FIRST);
+
+// Attributes
+ virtual CDocument* GetActiveDocument();
+
+ // Active child view maintenance
+ CView* GetActiveView() const; // active view or NULL
+ void SetActiveView(CView* pViewNew, BOOL bNotify = TRUE);
+ // active view or NULL, bNotify == FALSE if focus should not be set
+
+ // Active frame (for frames within frames -- MDI)
+ virtual CFrameWnd* GetActiveFrame();
+
+ // For customizing the default messages on the status bar
+ virtual void GetMessageString(UINT nID, CString& rMessage) const;
+
+ BOOL m_bAutoMenuEnable;
+ // TRUE => menu items without handlers will be disabled
+
+ BOOL IsTracking() const;
+
+// Operations
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ virtual void ActivateFrame(int nCmdShow = -1);
+ void InitialUpdateFrame(CDocument* pDoc, BOOL bMakeVisible);
+
+ // to set text of standard status bar
+ void SetMessageText(LPCTSTR lpszText);
+ void SetMessageText(UINT nID);
+
+ // control bar docking
+ void EnableDocking(DWORD dwDockStyle);
+ void DockControlBar(CControlBar* pBar, UINT nDockBarID = 0,
+ LPCRECT lpRect = NULL);
+ void FloatControlBar(CControlBar* pBar, CPoint point,
+ DWORD dwStyle = CBRS_ALIGN_TOP);
+ CControlBar* GetControlBar(UINT nID);
+
+ // frame window based modality
+ virtual void BeginModalState();
+ virtual void EndModalState();
+ BOOL InModalState() const;
+ void ShowOwnedWindows(BOOL bShow);
+
+ // saving and loading control bar state
+ void LoadBarState(LPCTSTR lpszProfileName);
+ void SaveBarState(LPCTSTR lpszProfileName) const;
+ void ShowControlBar(CControlBar* pBar, BOOL bShow, BOOL bDelay);
+ void SetDockState(const CDockState& state);
+ void GetDockState(CDockState& state) const;
+
+// Overridables
+ virtual void OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState);
+ virtual CWnd* GetMessageBar();
+
+ // border space negotiation
+ enum BorderCmd
+ { borderGet = 1, borderRequest = 2, borderSet = 3 };
+ virtual BOOL NegotiateBorderSpace(UINT nBorderCmd, LPRECT lpRectBorder);
+
+protected:
+ virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+
+// Command Handlers
+public:
+ afx_msg void OnContextHelp(); // for Shift+F1 help
+ afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnBarCheck(UINT nID);
+
+// Implementation
+public:
+ virtual ~CFrameWnd();
+ int m_nWindow; // general purpose window number - display as ":n"
+ // -1 => unknown, 0 => only window viewing document
+ // 1 => first of many windows viewing document, 2=> second
+
+ HMENU m_hMenuDefault; // default menu resource for this frame
+ HACCEL m_hAccelTable; // accelerator table
+ DWORD m_dwPromptContext; // current help prompt context for message box
+ BOOL m_bHelpMode; // if TRUE, then Shift+F1 help mode is active
+ CFrameWnd* m_pNextFrameWnd; // next CFrameWnd in app global list
+ CRect m_rectBorder; // for OLE border space negotiation
+ COleFrameHook* m_pNotifyHook;
+
+ CPtrList m_listControlBars; // array of all control bars that have this
+ // window as their dock site
+ int m_nShowDelay; // SW_ command for delay show/hide
+
+ CMiniDockFrameWnd* CreateFloatingFrame(DWORD dwStyle);
+ DWORD CanDock(CRect rect, DWORD dwDockStyle,
+ CDockBar** ppDockBar = NULL); // called by CDockContext
+ void AddControlBar(CControlBar *pBar);
+ void RemoveControlBar(CControlBar *pBar);
+ void DockControlBar(CControlBar* pBar, CDockBar* pDockBar,
+ LPCRECT lpRect = NULL);
+ void ReDockControlBar(CControlBar* pBar, CDockBar* pDockBar,
+ LPCRECT lpRect = NULL);
+ void NotifyFloatingWindows(DWORD dwFlags);
+ void DestroyDockBars();
+
+protected:
+ UINT m_nIDHelp; // Help ID (0 for none, see HID_BASE_RESOURCE)
+ UINT m_nIDTracking; // tracking command ID or string IDS
+ UINT m_nIDLastMessage; // last displayed message string IDS
+ CView* m_pViewActive; // current active view
+ BOOL (CALLBACK* m_lpfnCloseProc)(CFrameWnd* pFrameWnd);
+ UINT m_cModalStack; // BeginModalState depth
+ HWND* m_phWndDisable; // windows disabled because of BeginModalState
+ HMENU m_hMenuAlt; // menu to update to (NULL means default)
+ CString m_strTitle; // default title (original)
+ BOOL m_bInRecalcLayout; // avoid recursion in RecalcLayout
+ CRuntimeClass* m_pFloatingFrameClass;
+ static const DWORD dwDockBarMap[4][2];
+
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL IsFrameWnd() const;
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
+ virtual HACCEL GetDefaultAccelerator();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+
+ // idle update of frame user interface
+ enum IdleFlags
+ { idleMenu = 1, idleTitle = 2, idleNotify = 4, idleLayout = 8 };
+ UINT m_nIdleFlags; // set of bit flags for idle processing
+ virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
+ void DelayUpdateFrameTitle();
+ void DelayRecalcLayout(BOOL bNotify = TRUE);
+
+ // for Shift+F1 help support
+ BOOL CanEnterHelpMode();
+ virtual void ExitHelpMode();
+
+protected:
+ // implementation helpers
+ LPCTSTR GetIconWndClass(DWORD dwDefaultStyle, UINT nIDResource);
+ void UpdateFrameTitleForDocument(LPCTSTR lpszDocName);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual void PostNcDestroy(); // default to delete this.
+ int OnCreateHelper(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+ void BringToTop(int nCmdShow);
+ // bring window to top for SW_ commands which affect z-order
+
+ // implementation helpers for Shift+F1 help mode
+ BOOL ProcessHelpMsg(MSG& msg, DWORD* pContext);
+ HWND SetHelpCapture(POINT point, BOOL* pbDescendant);
+
+ // CFrameWnd list management
+ void AddFrameWnd();
+ void RemoveFrameWnd();
+
+ friend class CWnd; // for access to m_bModalDisable
+
+ //{{AFX_MSG(CFrameWnd)
+ // Windows messages
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg void OnClose();
+ afx_msg void OnInitMenuPopup(CMenu*, UINT, BOOL);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg LRESULT OnPopMessageString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnSysCommand(UINT nID, LONG lParam);
+ afx_msg BOOL OnQueryEndSession();
+ afx_msg void OnEndSession(BOOL bEnding);
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnActivateTopLevel(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnEnable(BOOL bEnable);
+ afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
+ afx_msg BOOL OnQueryNewPalette();
+ // standard commands
+ afx_msg BOOL OnToolTipText(UINT nID, NMHDR* pNMHDR, LRESULT* pResult);
+ afx_msg void OnUpdateKeyIndicator(CCmdUI* pCmdUI);
+ afx_msg void OnHelp();
+ afx_msg void OnUpdateContextHelp(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+protected:
+#ifndef _MAC
+ afx_msg LRESULT OnDDEInitiate(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnDDEExecute(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnDDETerminate(WPARAM wParam, LPARAM lParam);
+#endif
+#ifdef _MAC
+ afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
+ afx_msg void OnPaint();
+#endif
+ DECLARE_MESSAGE_MAP()
+
+ friend class CWinApp;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// MDI Support
+
+class CMDIFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMDIFrameWnd)
+
+public:
+// Constructors
+ CMDIFrameWnd();
+
+// Operations
+ void MDIActivate(CWnd* pWndActivate);
+ CMDIChildWnd* MDIGetActive(BOOL* pbMaximized = NULL) const;
+ void MDIIconArrange();
+ void MDIMaximize(CWnd* pWnd);
+ void MDINext();
+ void MDIRestore(CWnd* pWnd);
+ CMenu* MDISetMenu(CMenu* pFrameMenu, CMenu* pWindowMenu);
+ void MDITile();
+ void MDICascade();
+ void MDITile(int nType);
+ void MDICascade(int nType);
+
+// Overridables
+ // MFC 1.0 backward compatible CreateClient hook (called by OnCreateClient)
+ virtual BOOL CreateClient(LPCREATESTRUCT lpCreateStruct, CMenu* pWindowMenu);
+ // customize if using an 'Window' menu with non-standard IDs
+ virtual HMENU GetWindowMenuPopup(HMENU hMenuBar);
+
+// Implementation
+public:
+ HWND m_hWndMDIClient; // MDI Client window handle
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+ virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
+ virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
+ virtual CFrameWnd* GetActiveFrame();
+
+protected:
+ virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+
+ //{{AFX_MSG(CMDIFrameWnd)
+ afx_msg void OnDestroy();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnUpdateMDIWindowCmd(CCmdUI* pCmdUI);
+ afx_msg BOOL OnMDIWindowCmd(UINT nID);
+ afx_msg void OnWindowNew();
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+class CMDIChildWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMDIChildWnd)
+
+// Constructors
+public:
+ CMDIChildWnd();
+
+ virtual BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,
+ const RECT& rect = rectDefault,
+ CMDIFrameWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+
+// Attributes
+ CMDIFrameWnd* GetMDIFrame();
+
+// Operations
+ void MDIDestroy();
+ void MDIActivate();
+ void MDIMaximize();
+ void MDIRestore();
+
+// Implementation
+protected:
+ HMENU m_hMenuShared; // menu when we are active
+
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle,
+ CWnd* pParentWnd, CCreateContext* pContext = NULL);
+ // 'pParentWnd' parameter is required for MDI Child
+ virtual BOOL DestroyWindow();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void ActivateFrame(int nCmdShow = -1);
+ virtual void OnUpdateFrameMenu(BOOL bActive, CWnd* pActivateWnd,
+ HMENU hMenuAlt);
+
+ BOOL m_bPseudoInactive; // TRUE if window is MDI active according to
+ // windows, but not according to MFC...
+
+protected:
+ virtual CWnd* GetMessageBar();
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ BOOL UpdateClientEdge(LPRECT lpRect = NULL);
+
+ //{{AFX_MSG(CMDIChildWnd)
+ afx_msg void OnMDIActivate(BOOL bActivate, CWnd*, CWnd*);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd
+
+// MiniFrame window styles
+#define MFS_SYNCACTIVE 0x00000100L // syncronize activation w/ parent
+#define MFS_4THICKFRAME 0x00000200L // thick frame all around (no tiles)
+#define MFS_THICKFRAME 0x00000400L // use instead of WS_THICKFRAME
+#define MFS_MOVEFRAME 0x00000800L // no sizing, just moving
+#define MFS_BLOCKSYSMENU 0x00001000L // block hit testing on system menu
+
+class CMiniFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMiniFrameWnd)
+
+// Constructors
+public:
+ CMiniFrameWnd();
+ BOOL Create(LPCTSTR lpClassName, LPCTSTR lpWindowName,
+ DWORD dwStyle, const RECT& rect,
+ CWnd* pParentWnd = NULL, UINT nID = 0);
+ BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName,
+ DWORD dwStyle, const RECT& rect,
+ CWnd* pParentWnd = NULL, UINT nID = 0);
+
+// Implementation
+public:
+ ~CMiniFrameWnd();
+
+ static void AFX_CDECL Initialize();
+
+ //{{AFX_MSG(CMiniFrameWnd)
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpParams);
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint pt );
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint pt );
+ afx_msg void OnMouseMove(UINT nFlags, CPoint pt );
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnGetMinMaxInfo(MINMAXINFO* pMMI);
+ afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnFloatStatus(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnQueryCenterWnd(WPARAM wParam, LPARAM lParam);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+public:
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+ static void AFX_CDECL CalcBorders(LPRECT lpClientRect,
+ DWORD dwStyle = WS_THICKFRAME | WS_CAPTION, DWORD dwExStyle = 0);
+
+protected:
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+protected:
+ BOOL m_bSysTracking;
+ BOOL m_bInSys;
+ BOOL m_bActive;
+ CString m_strCaption;
+
+ void InvertSysMenu();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CView is the client area UI for a document
+
+class CPrintDialog; // forward reference (see afxdlgs.h)
+class CPreviewView; // forward reference (see afxpriv.h)
+class CSplitterWnd; // forward reference (see afxext.h)
+class COleServerDoc; // forward reference (see afxole.h)
+
+typedef DWORD DROPEFFECT;
+class COleDataObject; // forward reference (see afxole.h)
+
+class CView : public CWnd
+{
+ DECLARE_DYNAMIC(CView)
+
+// Constructors
+protected:
+ CView();
+
+// Attributes
+public:
+ CDocument* GetDocument() const;
+
+// Operations
+public:
+ // for standard printing setup (override OnPreparePrinting)
+ BOOL DoPreparePrinting(CPrintInfo* pInfo);
+
+// Overridables
+public:
+ virtual BOOL IsSelected(const CObject* pDocItem) const; // support for OLE
+
+ // OLE scrolling support (used for drag/drop as well)
+ virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
+ virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
+
+ // OLE drag/drop support
+ virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual void OnDragLeave();
+ virtual BOOL OnDrop(COleDataObject* pDataObject,
+ DROPEFFECT dropEffect, CPoint point);
+ virtual DROPEFFECT OnDropEx(COleDataObject* pDataObject,
+ DROPEFFECT dropDefault, DROPEFFECT dropList, CPoint point);
+ virtual DROPEFFECT OnDragScroll(DWORD dwKeyState, CPoint point);
+
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+
+ virtual void OnInitialUpdate(); // called first time after construct
+
+protected:
+ // Activation
+ virtual void OnActivateView(BOOL bActivate, CView* pActivateView,
+ CView* pDeactiveView);
+ virtual void OnActivateFrame(UINT nState, CFrameWnd* pFrameWnd);
+
+ // General drawing/updating
+ virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
+ virtual void OnDraw(CDC* pDC) = 0;
+
+ // Printing support
+ virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
+ // must override to enable printing and print preview
+
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
+
+ // Advanced: end print preview mode, move to point
+ virtual void OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point,
+ CPreviewView* pView);
+
+// Implementation
+public:
+ virtual ~CView();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+ // Advanced: for implementing custom print preview
+ BOOL DoPrintPreview(UINT nIDResource, CView* pPrintView,
+ CRuntimeClass* pPreviewViewClass, CPrintPreviewState* pState);
+
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+ virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
+ static CSplitterWnd* PASCAL GetParentSplitter(
+ const CWnd* pWnd, BOOL bAnyState);
+
+protected:
+ CDocument* m_pDocument;
+
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual void PostNcDestroy();
+
+ // friend classes that call protected CView overridables
+ friend class CDocument;
+ friend class CDocTemplate;
+ friend class CPreviewView;
+ friend class CFrameWnd;
+ friend class CMDIFrameWnd;
+ friend class CMDIChildWnd;
+ friend class CSplitterWnd;
+ friend class COleServerDoc;
+
+ //{{AFX_MSG(CView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnDestroy();
+ afx_msg void OnPaint();
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ // commands
+ afx_msg void OnUpdateSplitCmd(CCmdUI* pCmdUI);
+ afx_msg BOOL OnSplitCmd(UINT nID);
+ afx_msg void OnUpdateNextPaneMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnNextPaneCmd(UINT nID);
+
+ // not mapped commands - must be mapped in derived class
+ afx_msg void OnFilePrint();
+ afx_msg void OnFilePrintPreview();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CCtrlView allows almost any control to be a view
+
+class CCtrlView : public CView
+{
+ DECLARE_DYNCREATE(CCtrlView)
+
+public:
+ CCtrlView(LPCTSTR lpszClass, DWORD dwStyle);
+
+// Attributes
+protected:
+ CString m_strClass;
+ DWORD m_dwDefaultStyle;
+
+// Overrides
+ virtual void OnDraw(CDC*);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected:
+ afx_msg void OnPaint();
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CScrollView supports simple scrolling and scaling
+
+class CScrollView : public CView
+{
+ DECLARE_DYNAMIC(CScrollView)
+
+// Constructors
+protected:
+ CScrollView();
+
+public:
+ static AFX_DATA const SIZE sizeDefault;
+ // used to specify default calculated page and line sizes
+
+ // in logical units - call one of the following Set routines
+ void SetScaleToFitSize(SIZE sizeTotal);
+ void SetScrollSizes(int nMapMode, SIZE sizeTotal,
+ const SIZE& sizePage = sizeDefault,
+ const SIZE& sizeLine = sizeDefault);
+
+// Attributes
+public:
+ CPoint GetScrollPosition() const; // upper corner of scrolling
+ CSize GetTotalSize() const; // logical size
+
+ // for device units
+ CPoint GetDeviceScrollPosition() const;
+ void GetDeviceScrollSizes(int& nMapMode, SIZE& sizeTotal,
+ SIZE& sizePage, SIZE& sizeLine) const;
+
+// Operations
+public:
+ void ScrollToPosition(POINT pt); // set upper left position
+ void FillOutsideRect(CDC* pDC, CBrush* pBrush);
+ void ResizeParentToFit(BOOL bShrinkOnly = TRUE);
+
+// Implementation
+protected:
+ int m_nMapMode;
+ CSize m_totalLog; // total size in logical units (no rounding)
+ CSize m_totalDev; // total size in device units
+ CSize m_pageDev; // per page scroll size in device units
+ CSize m_lineDev; // per line scroll size in device units
+
+ BOOL m_bCenter; // Center output if larger than total size
+ BOOL m_bInsideUpdate; // internal state for OnSize callback
+ void CenterOnPoint(CPoint ptCenter);
+ void ScrollToDevicePosition(POINT ptDev); // explicit scrolling no checking
+
+protected:
+ virtual void OnDraw(CDC* pDC) = 0; // pass on pure virtual
+
+ void UpdateBars(); // adjust scrollbars etc
+ BOOL GetTrueClientSize(CSize& size, CSize& sizeSb);
+ // size with no bars
+ void GetScrollBarSizes(CSize& sizeSb);
+ void GetScrollBarState(CSize sizeClient, CSize& needSb,
+ CSize& sizeRange, CPoint& ptMove, BOOL bInsideClient);
+
+public:
+ virtual ~CScrollView();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+
+ // scrolling implementation support for OLE
+ virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
+ virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
+
+ //{{AFX_MSG(CScrollView)
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWinThread
+
+typedef UINT (AFX_CDECL *AFX_THREADPROC)(LPVOID);
+
+class CWinThread : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CWinThread)
+
+public:
+// Constructors
+ CWinThread();
+ BOOL CreateThread(DWORD dwCreateFlags = 0, UINT nStackSize = 0,
+ LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+
+// Attributes
+ CWnd* m_pMainWnd; // main window (usually same AfxGetApp()->m_pMainWnd)
+ CWnd* m_pActiveWnd; // active main window (may not be m_pMainWnd)
+ BOOL m_bAutoDelete; // enables 'delete this' after thread termination
+
+ // only valid while running
+ HANDLE m_hThread; // this thread's HANDLE
+ operator HANDLE() const;
+ DWORD m_nThreadID; // this thread's ID
+
+ int GetThreadPriority();
+ BOOL SetThreadPriority(int nPriority);
+
+// Operations
+ DWORD SuspendThread();
+ DWORD ResumeThread();
+
+// Overridables
+ // thread initialization
+ virtual BOOL InitInstance();
+
+ // running and idle processing
+ virtual int Run();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL PumpMessage(); // low level message pump
+ virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
+ virtual BOOL IsIdleMessage(MSG* pMsg); // checks for special messages
+
+ // thread termination
+ virtual int ExitInstance(); // default will 'delete this'
+
+ // Advanced: exception handling
+ virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg);
+
+ // Advanced: handling messages sent to message filter hook
+ virtual BOOL ProcessMessageFilter(int code, LPMSG lpMsg);
+
+ // Advanced: virtual access to m_pMainWnd
+ virtual CWnd* GetMainWnd();
+
+// Implementation
+public:
+ virtual ~CWinThread();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ int m_nDisablePumpCount; // Diagnostic trap to detect illegal re-entrancy
+#endif
+ void CommonConstruct();
+ virtual void Delete();
+ // 'delete this' only if m_bAutoDelete == TRUE
+
+ // message pump for Run
+ MSG m_msgCur; // current message
+
+public:
+ // constructor used by implementation of AfxBeginThread
+ CWinThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam);
+
+ // valid after construction
+ LPVOID m_pThreadParams; // generic parameters passed to starting function
+ AFX_THREADPROC m_pfnThreadProc;
+
+protected:
+ CPoint m_ptCursorLast; // last mouse position
+ UINT m_nMsgLast; // last mouse message
+};
+
+// global helpers for threads
+
+CWinThread* AFXAPI AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam,
+ int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,
+ DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+CWinThread* AFXAPI AfxBeginThread(CRuntimeClass* pThreadClass,
+ int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,
+ DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+
+CWinThread* AFXAPI AfxGetThread();
+void AFXAPI AfxEndThread(UINT nExitCode, BOOL bDelete = TRUE);
+
+void AFXAPI AfxInitThread();
+void AFXAPI AfxTermThread();
+
+/////////////////////////////////////////////////////////////////////////////
+// Global functions for access to the one and only CWinApp
+
+#define afxCurrentWinApp AfxGetModuleState()->m_pCurrentWinApp
+#define afxCurrentInstanceHandle AfxGetModuleState()->m_hCurrentInstanceHandle
+#define afxCurrentResourceHandle AfxGetModuleState()->m_hCurrentResourceHandle
+#define afxCurrentAppName AfxGetModuleState()->m_lpszCurrentAppName
+#define afxContextIsDLL AfxGetModuleState()->m_bDLL
+#define afxRegisteredClasses AfxGetModuleState()->m_fRegisteredClasses
+
+#ifndef _AFX_NO_OCC_SUPPORT
+#define afxOccManager AfxGetModuleProcessState()->m_pOccManager
+#endif
+
+// Advanced initialization: for overriding default WinMain
+BOOL AFXAPI AfxWinInit(HINSTANCE, HINSTANCE, LPTSTR, int);
+void AFXAPI AfxWinTerm();
+
+// Global Windows state data helper functions (inlines)
+CWinApp* AFXAPI AfxGetApp();
+CWnd* AFXAPI AfxGetMainWnd();
+HINSTANCE AFXAPI AfxGetInstanceHandle();
+HINSTANCE AFXAPI AfxGetResourceHandle();
+void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource);
+LPCTSTR AFXAPI AfxGetAppName();
+
+// Use instead of PostQuitMessage in OLE server applications
+void AFXAPI AfxPostQuitMessage(int nExitCode);
+
+// Use AfxFindResourceHandle to find resource in chain of extension DLLs
+#ifndef _AFXDLL
+#define AfxFindResourceHandle(lpszResource, lpszType) AfxGetResourceHandle()
+#else
+HINSTANCE AFXAPI AfxFindResourceHandle(LPCTSTR lpszName, LPCTSTR lpszType);
+#endif
+
+class COleMessageFilter; // forward reference (see afxole.h)
+class CRecentFileList; // forward reference (see afxpriv.h)
+
+// access to message filter in CWinApp
+COleMessageFilter* AFXAPI AfxOleGetMessageFilter();
+
+/////////////////////////////////////////////////////////////////////////////
+// CCommandLineInfo
+
+class CCommandLineInfo : public CObject
+{
+public:
+ // Sets default values
+ CCommandLineInfo();
+
+ virtual void ParseParam(const char* pszParam, BOOL bFlag, BOOL bLast);
+
+ BOOL m_bShowSplash;
+ BOOL m_bRunEmbedded;
+ BOOL m_bRunAutomated;
+ enum { FileNew, FileOpen, FilePrint, FilePrintTo, FileDDE,
+ FileNothing = -1 } m_nShellCommand;
+
+ // not valid for FileNew
+ CString m_strFileName;
+
+ // valid only for FilePrintTo
+ CString m_strPrinterName;
+ CString m_strDriverName;
+ CString m_strPortName;
+
+ ~CCommandLineInfo();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDocManager
+
+class CDocManager : public CObject
+{
+ DECLARE_DYNAMIC(CDocManager)
+public:
+
+// Constructor
+ CDocManager();
+
+ //Document functions
+ virtual void AddDocTemplate(CDocTemplate* pTemplate);
+ virtual POSITION GetFirstDocTemplatePosition() const;
+ virtual CDocTemplate* GetNextDocTemplate(POSITION& pos) const;
+ virtual void RegisterShellFileTypes(BOOL bWin95);
+ virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName); // open named file
+ virtual BOOL SaveAllModified(); // save before exit
+ virtual void CloseAllDocuments(BOOL bEndSession); // close documents before exiting
+ virtual int GetOpenDocumentCount();
+
+ // helper for standard commdlg dialogs
+ virtual BOOL DoPromptFileName(CString& fileName, UINT nIDSTitle,
+ DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate);
+
+//Commands
+#ifndef _MAC
+ // Advanced: process async DDE request
+ virtual BOOL OnDDECommand(LPTSTR lpszCommand);
+#endif
+ virtual void OnFileNew();
+ virtual void OnFileOpen();
+
+// Implementation
+protected:
+ CPtrList m_templateList;
+
+public:
+ static CPtrList* pStaticList; // for static CDocTemplate objects
+ static BOOL bStaticInit; // TRUE during static initialization
+ static CDocManager* pStaticDocManager; // for static CDocTemplate objects
+
+public:
+ virtual ~CDocManager();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWinApp - the root of all Windows applications
+
+#define _AFX_MRU_COUNT 4 // default support for 4 entries in file MRU
+#define _AFX_MRU_MAX_COUNT 16 // currently allocated id range supports 16
+
+class CWinApp : public CWinThread
+{
+ DECLARE_DYNAMIC(CWinApp)
+public:
+
+// Constructor
+ CWinApp(LPCTSTR lpszAppName = NULL); // app name defaults to EXE name
+
+// Attributes
+ // Startup args (do not change)
+ HINSTANCE m_hInstance;
+ HINSTANCE m_hPrevInstance;
+ LPTSTR m_lpCmdLine;
+ int m_nCmdShow;
+
+ // Running args (can be changed in InitInstance)
+ LPCTSTR m_pszAppName; // human readable name
+ // (from constructor or AFX_IDS_APP_TITLE)
+ LPCTSTR m_pszRegistryKey; // used for registry entries
+ CDocManager* m_pDocManager;
+
+ // Support for Shift+F1 help mode.
+ BOOL m_bHelpMode; // are we in Shift+F1 mode?
+
+#ifdef _MAC
+ // Support for AppleEvent interaction levels
+ enum SaveOption
+ {
+ saveYes, // always save modified documents
+ saveNo, // never save modified documents
+ saveAsk // ask user whether to save modified documents
+ };
+ SaveOption m_nSaveOption;
+#endif
+
+public: // set in constructor to override default
+ LPCTSTR m_pszExeName; // executable name (no spaces)
+ LPCTSTR m_pszHelpFilePath; // default based on module path
+ LPCTSTR m_pszProfileName; // default based on app name
+
+// Initialization Operations - should be done in InitInstance
+protected:
+ void LoadStdProfileSettings(UINT nMaxMRU = _AFX_MRU_COUNT); // load MRU file list and last preview state
+ void EnableShellOpen();
+
+ void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192),
+ COLORREF clrCtlText = RGB(0, 0, 0));
+ // set dialog box and message box background color
+
+ void SetRegistryKey(LPCTSTR lpszRegistryKey);
+ void SetRegistryKey(UINT nIDRegistryKey);
+ // enables app settings in registry instead of INI files
+ // (registry key is usually a "company name")
+
+#ifdef _MAC
+ friend void CFrameWnd::OnSysColorChange();
+ friend void CDialog::OnSysColorChange();
+#endif
+
+ BOOL Enable3dControls(); // use CTL3D32.DLL for 3D controls in dialogs
+#ifndef _AFXDLL
+ BOOL Enable3dControlsStatic(); // statically link CTL3D.LIB instead
+#endif
+
+ void RegisterShellFileTypes(BOOL bWin95=FALSE);
+ // call after all doc templates are registered
+ void RegisterShellFileTypesCompat();
+ // for backwards compatibility
+
+// Helper Operations - usually done in InitInstance
+public:
+ // Cursors
+ HCURSOR LoadCursor(LPCTSTR lpszResourceName) const;
+ HCURSOR LoadCursor(UINT nIDResource) const;
+ HCURSOR LoadStandardCursor(LPCTSTR lpszCursorName) const; // for IDC_ values
+ HCURSOR LoadOEMCursor(UINT nIDCursor) const; // for OCR_ values
+
+ // Icons
+ HICON LoadIcon(LPCTSTR lpszResourceName) const;
+ HICON LoadIcon(UINT nIDResource) const;
+ HICON LoadStandardIcon(LPCTSTR lpszIconName) const; // for IDI_ values
+ HICON LoadOEMIcon(UINT nIDIcon) const; // for OIC_ values
+
+ // Profile settings (to the app specific .INI file, or registry)
+ UINT GetProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault);
+ BOOL WriteProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue);
+ CString GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPCTSTR lpszDefault = NULL);
+ BOOL WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPCTSTR lpszValue);
+ BOOL GetProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPBYTE* ppData, UINT* pBytes);
+ BOOL WriteProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPBYTE pData, UINT nBytes);
+
+// Running Operations - to be done on a running application
+ // Dealing with document templates
+ void AddDocTemplate(CDocTemplate* pTemplate);
+ POSITION GetFirstDocTemplatePosition() const;
+ CDocTemplate* GetNextDocTemplate(POSITION& pos) const;
+
+ // Dealing with files
+ virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName); // open named file
+ virtual void AddToRecentFileList(LPCTSTR lpszPathName); // add to MRU
+
+ // Printer DC Setup routine, 'struct tagPD' is a PRINTDLG structure
+ void SelectPrinter(HANDLE hDevNames, HANDLE hDevMode,
+ BOOL bFreeOld = TRUE);
+ BOOL CreatePrinterDC(CDC& dc);
+#ifndef _UNICODE
+ BOOL GetPrinterDeviceDefaults(struct tagPDA* pPrintDlg);
+#else
+ BOOL GetPrinterDeviceDefaults(struct tagPDW* pPrintDlg);
+#endif
+
+ // Command line parsing
+ BOOL RunEmbedded();
+ BOOL RunAutomated();
+ void ParseCommandLine(CCommandLineInfo& rCmdInfo);
+ BOOL ProcessShellCommand(CCommandLineInfo& rCmdInfo);
+
+// Overridables
+ // hooks for your initialization code
+ virtual BOOL InitApplication();
+#ifdef _MAC
+ virtual BOOL CreateInitialDocument();
+#endif
+
+ // exiting
+ virtual BOOL SaveAllModified(); // save before exit
+ void HideApplication();
+ void CloseAllDocuments(BOOL bEndSession); // close documents before exiting
+
+ // Advanced: to override message boxes and other hooks
+ virtual int DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt);
+ virtual void DoWaitCursor(int nCode); // 0 => restore, 1=> begin, -1=> end
+
+#ifndef _MAC
+ // Advanced: process async DDE request
+ virtual BOOL OnDDECommand(LPTSTR lpszCommand);
+#endif
+
+ // Advanced: Help support
+ virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
+
+
+// Command Handlers
+protected:
+ // map to the following for file new/open
+ afx_msg void OnFileNew();
+ afx_msg void OnFileOpen();
+
+ // map to the following to enable print setup
+ afx_msg void OnFilePrintSetup();
+
+ // map to the following to enable help
+ afx_msg void OnContextHelp(); // shift-F1
+ afx_msg void OnHelp(); // F1 (uses current context)
+ afx_msg void OnHelpIndex(); // ID_HELP_INDEX
+ afx_msg void OnHelpFinder(); // ID_HELP_FINDER, ID_DEFAULT_HELP
+ afx_msg void OnHelpUsing(); // ID_HELP_USING
+
+// Implementation
+protected:
+ HGLOBAL m_hDevMode; // printer Dev Mode
+ HGLOBAL m_hDevNames; // printer Device Names
+ DWORD m_dwPromptContext; // help context override for message box
+
+ int m_nWaitCursorCount; // for wait cursor (>0 => waiting)
+ HCURSOR m_hcurWaitCursorRestore; // old cursor to restore after wait cursor
+
+ CRecentFileList* m_pRecentFileList;
+
+ void UpdatePrinterSelection(BOOL bForceDefaults);
+ void SaveStdProfileSettings(); // save options to .INI file
+
+public: // public for implementation access
+ CCommandLineInfo* m_pCmdInfo;
+
+ ATOM m_atomApp, m_atomSystemTopic; // for DDE open
+ UINT m_nNumPreviewPages; // number of default printed pages
+
+ size_t m_nSafetyPoolSize; // ideal size
+
+ void (AFXAPI* m_lpfnDaoTerm)();
+ void (AFXAPI* m_lpfnOleTermOrFreeLib)(BOOL, BOOL);
+ COleMessageFilter* m_pMessageFilter;
+
+ void DevModeChange(LPTSTR lpDeviceName);
+ void SetCurrentHandles();
+ int GetOpenDocumentCount();
+
+ // helpers for standard commdlg dialogs
+ BOOL DoPromptFileName(CString& fileName, UINT nIDSTitle,
+ DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate);
+ int DoPrintDialog(CPrintDialog* pPD);
+
+ void EnableModeless(BOOL bEnable); // to disable OLE in-place dialogs
+
+ // overrides for implementation
+ virtual BOOL InitInstance();
+ virtual int ExitInstance(); // return app exit code
+ virtual int Run();
+ virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
+ virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg);
+
+public:
+ virtual ~CWinApp();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+#ifndef _MAC
+ // helpers for registration
+ HKEY GetSectionKey(LPCTSTR lpszSection);
+ HKEY GetAppRegistryKey();
+#endif
+
+protected:
+ //{{AFX_MSG(CWinApp)
+ afx_msg void OnAppExit();
+ afx_msg void OnUpdateRecentFileMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnOpenRecentFile(UINT nID);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CWaitCursor
+
+class CWaitCursor
+{
+// Construction/Destruction
+public:
+ CWaitCursor();
+ ~CWaitCursor();
+
+// Operations
+public:
+ void Restore();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CDocTemplate creates documents
+
+class CDocTemplate : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDocTemplate)
+
+// Constructors
+protected:
+ CDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+public:
+ virtual void LoadTemplate();
+
+// Attributes
+public:
+ // setup for OLE containers
+ void SetContainerInfo(UINT nIDOleInPlaceContainer);
+
+ // setup for OLE servers
+ void SetServerInfo(UINT nIDOleEmbedding, UINT nIDOleInPlaceServer = 0,
+ CRuntimeClass* pOleFrameClass = NULL, CRuntimeClass* pOleViewClass = NULL);
+
+ // iterating over open documents
+ virtual POSITION GetFirstDocPosition() const = 0;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const = 0;
+
+// Operations
+public:
+ virtual void AddDocument(CDocument* pDoc); // must override
+ virtual void RemoveDocument(CDocument* pDoc); // must override
+
+ enum DocStringIndex
+ {
+ windowTitle, // default window title
+ docName, // user visible name for default document
+ fileNewName, // user visible name for FileNew
+ // for file based documents:
+#ifndef _MAC
+ filterName, // user visible name for FileOpen
+ filterExt, // user visible extension for FileOpen
+#else
+ filterWinName, // user visible name for FileOpen
+ filterWinExt, // user visible extension for FileOpen
+#endif
+ // for file based documents with Shell open support:
+ regFileTypeId, // REGEDIT visible registered file type identifier
+ regFileTypeName, // Shell visible registered file type name
+ // for Macintosh file based documents:
+#ifdef _MAC
+ filterExt, // Macintosh file type for FileOpen
+ filterName // user visible name for Macintosh FileOpen
+#else
+ filterMacExt, // Macintosh file type for FileOpen
+ filterMacName // user visible name for Macintosh FileOpen
+#endif
+ };
+ virtual BOOL GetDocString(CString& rString,
+ enum DocStringIndex index) const; // get one of the info strings
+ CFrameWnd* CreateOleFrame(CWnd* pParentWnd, CDocument* pDoc,
+ BOOL bCreateView);
+
+// Overridables
+public:
+ enum Confidence
+ {
+ noAttempt,
+ maybeAttemptForeign,
+ maybeAttemptNative,
+ yesAttemptForeign,
+ yesAttemptNative,
+ yesAlreadyOpen
+ };
+#ifndef _MAC
+ virtual Confidence MatchDocType(LPCTSTR lpszPathName,
+ CDocument*& rpDocMatch);
+#else
+ virtual Confidence MatchDocType(LPCTSTR lpszFileName,
+ DWORD dwFileType, CDocument*& rpDocMatch);
+#endif
+ virtual CDocument* CreateNewDocument();
+ virtual CFrameWnd* CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther);
+ virtual void InitialUpdateFrame(CFrameWnd* pFrame, CDocument* pDoc,
+ BOOL bMakeVisible = TRUE);
+ virtual BOOL SaveAllModified(); // for all documents
+ virtual void CloseAllDocuments(BOOL bEndSession);
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE) = 0;
+ // open named file
+ // if lpszPathName == NULL => create new file with this type
+ virtual void SetDefaultTitle(CDocument* pDocument) = 0;
+
+// Implementation
+public:
+ BOOL m_bAutoDelete;
+ virtual ~CDocTemplate();
+
+ // back pointer to OLE or other server (NULL if none or disabled)
+ CObject* m_pAttachedFactory;
+
+ // menu & accelerator resources for in-place container
+ HMENU m_hMenuInPlace;
+ HACCEL m_hAccelInPlace;
+
+ // menu & accelerator resource for server editing embedding
+ HMENU m_hMenuEmbedding;
+ HACCEL m_hAccelEmbedding;
+
+ // menu & accelerator resource for server editing in-place
+ HMENU m_hMenuInPlaceServer;
+ HACCEL m_hAccelInPlaceServer;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif
+ virtual void OnIdle(); // for all documents
+
+protected:
+ UINT m_nIDResource; // IDR_ for frame/menu/accel as well
+ UINT m_nIDServerResource; // IDR_ for OLE inplace frame/menu/accel
+ UINT m_nIDEmbeddingResource; // IDR_ for OLE open frame/menu/accel
+ UINT m_nIDContainerResource; // IDR_ for container frame/menu/accel
+
+ CRuntimeClass* m_pDocClass; // class for creating new documents
+ CRuntimeClass* m_pFrameClass; // class for creating new frames
+ CRuntimeClass* m_pViewClass; // class for creating new views
+ CRuntimeClass* m_pOleFrameClass; // class for creating in-place frame
+ CRuntimeClass* m_pOleViewClass; // class for creating in-place view
+
+ CString m_strDocStrings; // '\n' separated names
+ // The document names sub-strings are represented as _one_ string:
+ // windowTitle\ndocName\n ... (see DocStringIndex enum)
+};
+
+// SDI support (1 document only)
+class CSingleDocTemplate : public CDocTemplate
+{
+ DECLARE_DYNAMIC(CSingleDocTemplate)
+
+// Constructors
+public:
+ CSingleDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+
+// Implementation
+public:
+ virtual ~CSingleDocTemplate();
+ virtual void AddDocument(CDocument* pDoc);
+ virtual void RemoveDocument(CDocument* pDoc);
+ virtual POSITION GetFirstDocPosition() const;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const;
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
+ virtual void SetDefaultTitle(CDocument* pDocument);
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected: // standard implementation
+ CDocument* m_pOnlyDoc;
+};
+
+// MDI support (zero or more documents)
+class CMultiDocTemplate : public CDocTemplate
+{
+ DECLARE_DYNAMIC(CMultiDocTemplate)
+
+// Constructors
+public:
+ CMultiDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+
+// Implementation
+public:
+ // Menu and accel table for MDI Child windows of this type
+ HMENU m_hMenuShared;
+ HACCEL m_hAccelTable;
+
+ virtual ~CMultiDocTemplate();
+ virtual void LoadTemplate();
+ virtual void AddDocument(CDocument* pDoc);
+ virtual void RemoveDocument(CDocument* pDoc);
+ virtual POSITION GetFirstDocPosition() const;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const;
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
+ virtual void SetDefaultTitle(CDocument* pDocument);
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected: // standard implementation
+ CPtrList m_docList; // open documents of this type
+ UINT m_nUntitledCount; // start at 0, for "Document1" title
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CDocument is the main document data abstraction
+
+class CDocument : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDocument)
+
+public:
+// Constructors
+ CDocument();
+
+// Attributes
+public:
+ const CString& GetTitle() const;
+ virtual void SetTitle(LPCTSTR lpszTitle);
+ const CString& GetPathName() const;
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE);
+
+ CDocTemplate* GetDocTemplate() const;
+ virtual BOOL IsModified();
+ virtual void SetModifiedFlag(BOOL bModified = TRUE);
+
+// Operations
+ void AddView(CView* pView);
+ void RemoveView(CView* pView);
+ virtual POSITION GetFirstViewPosition() const;
+ virtual CView* GetNextView(POSITION& rPosition) const;
+
+ // Update Views (simple update - DAG only)
+ void UpdateAllViews(CView* pSender, LPARAM lHint = 0L,
+ CObject* pHint = NULL);
+
+// Overridables
+ // Special notifications
+ virtual void OnChangedViewList(); // after Add or Remove view
+ virtual void DeleteContents(); // delete doc items etc
+
+ // File helpers
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+#ifdef _MAC
+ virtual void RecordDataFileOwner(LPCTSTR lpszPathName, LPCTSTR lpszAppName);
+#endif
+ virtual void OnCloseDocument();
+ virtual void ReportSaveLoadException(LPCTSTR lpszPathName,
+ CException* e, BOOL bSaving, UINT nIDPDefault);
+ virtual CFile* GetFile(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError);
+ virtual void ReleaseFile(CFile* pFile, BOOL bAbort);
+
+ // advanced overridables, closing down frame/doc, etc.
+ virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
+ virtual BOOL SaveModified(); // return TRUE if ok to continue
+ virtual void PreCloseFrame(CFrameWnd* pFrame);
+
+// Implementation
+protected:
+ // default implementation
+ CString m_strTitle;
+ CString m_strPathName;
+ CDocTemplate* m_pDocTemplate;
+ CPtrList m_viewList; // list of views
+ BOOL m_bModified; // changed since last saved
+
+public:
+ BOOL m_bAutoDelete; // TRUE => delete document when no more views
+ BOOL m_bEmbedded; // TRUE => document is being created by OLE
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+ virtual ~CDocument();
+
+ // implementation helpers
+ virtual BOOL DoSave(LPCTSTR lpszPathName, BOOL bReplace = TRUE);
+ virtual BOOL DoFileSave();
+ virtual void UpdateFrameCounts();
+ void DisconnectViews();
+ void SendInitialUpdate();
+
+ // overridables for implementation
+ virtual HMENU GetDefaultMenu(); // get menu depending on state
+ virtual HACCEL GetDefaultAccelerator();
+ virtual void OnIdle();
+ virtual void OnFinalRelease();
+
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ friend class CDocTemplate;
+
+protected:
+ // file menu commands
+ //{{AFX_MSG(CDocument)
+ afx_msg void OnFileClose();
+ afx_msg void OnFileSave();
+ afx_msg void OnFileSaveAs();
+ //}}AFX_MSG
+ // mail enabling
+ afx_msg void OnFileSendMail();
+ afx_msg void OnUpdateFileSendMail(CCmdUI* pCmdUI);
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Extra diagnostic tracing options
+
+#ifdef _DEBUG
+
+extern AFX_DATA UINT afxTraceFlags;
+enum AfxTraceFlags
+{
+ traceMultiApp = 1, // multi-app debugging
+ traceAppMsg = 2, // main message pump trace (includes DDE)
+ traceWinMsg = 4, // Windows message tracing
+ traceCmdRouting = 8, // Windows command routing trace (set 4+8 for control notifications)
+ traceOle = 16, // special OLE callback trace
+ traceDatabase = 32 // special database trace
+};
+
+#endif // _DEBUG
+
+//////////////////////////////////////////////////////////////////////////////
+// MessageBox helpers
+
+void AFXAPI AfxFormatString1(CString& rString, UINT nIDS, LPCTSTR lpsz1);
+void AFXAPI AfxFormatString2(CString& rString, UINT nIDS,
+ LPCTSTR lpsz1, LPCTSTR lpsz2);
+int AFXAPI AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK,
+ UINT nIDHelp = 0);
+int AFXAPI AfxMessageBox(UINT nIDPrompt, UINT nType = MB_OK,
+ UINT nIDHelp = (UINT)-1);
+
+// Implementation string helpers
+void AFXAPI AfxFormatStrings(CString& rString, UINT nIDS,
+ LPCTSTR const* rglpsz, int nString);
+void AFXAPI AfxFormatStrings(CString& rString, LPCTSTR lpszFormat,
+ LPCTSTR const* rglpsz, int nString);
+BOOL AFXAPI AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,
+ int iSubString, TCHAR chSep = '\n');
+
+/////////////////////////////////////////////////////////////////////////////
+// Special target variant APIs
+
+#ifdef _AFXDLL
+ #include <afxdll_.h>
+#endif
+
+// Windows Version compatibility (obsolete)
+#define AfxEnableWin30Compatibility()
+#define AfxEnableWin31Compatibility()
+#define AfxEnableWin40Compatibility()
+
+// Temporary map management (locks temp map on current thread)
+void AFXAPI AfxLockTempMaps();
+BOOL AFXAPI AfxUnlockTempMaps();
+
+/////////////////////////////////////////////////////////////////////////////
+// Special OLE related functions (see OLELOCK.CPP)
+
+void AFXAPI AfxOleOnReleaseAllObjects();
+BOOL AFXAPI AfxOleCanExitApp();
+void AFXAPI AfxOleLockApp();
+void AFXAPI AfxOleUnlockApp();
+
+void AFXAPI AfxOleSetUserCtrl(BOOL bUserCtrl);
+BOOL AFXAPI AfxOleGetUserCtrl();
+
+#ifndef _AFX_NO_OCC_SUPPORT
+BOOL AFXAPI AfxOleLockControl(REFCLSID clsid);
+BOOL AFXAPI AfxOleUnlockControl(REFCLSID clsid);
+BOOL AFXAPI AfxOleLockControl(LPCTSTR lpszProgID);
+BOOL AFXAPI AfxOleUnlockControl(LPCTSTR lpszProgID);
+void AFXAPI AfxOleUnlockAllControls();
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXWIN_INLINE inline
+#include <afxwin1.inl>
+#include <afxwin2.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#else //RC_INVOKED
+#include <afxres.h> // standard resource IDs
+#endif //RC_INVOKED
+
+#endif //__AFXWIN_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/afxwin1.inl b/public/sdk/inc/mfc40/afxwin1.inl
new file mode 100644
index 000000000..d8bdc8d0e
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxwin1.inl
@@ -0,0 +1,1091 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXWIN.H (part 1)
+
+#ifdef _AFXWIN_INLINE
+
+// Global helper functions
+_AFXWIN_INLINE CWinApp* AFXAPI AfxGetApp()
+ { return afxCurrentWinApp; }
+_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
+ { ASSERT(afxCurrentInstanceHandle != NULL);
+ return afxCurrentInstanceHandle; }
+_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetResourceHandle()
+ { ASSERT(afxCurrentResourceHandle != NULL);
+ return afxCurrentResourceHandle; }
+_AFXWIN_INLINE void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource)
+ { ASSERT(hInstResource != NULL); afxCurrentResourceHandle = hInstResource; }
+_AFXWIN_INLINE LPCTSTR AFXAPI AfxGetAppName()
+ { ASSERT(afxCurrentAppName != NULL); return afxCurrentAppName; }
+_AFXWIN_INLINE COleMessageFilter* AFXAPI AfxOleGetMessageFilter()
+ { ASSERT_VALID(AfxGetApp()); return AfxGetApp()->m_pMessageFilter; }
+_AFXWIN_INLINE CWnd* AFXAPI AfxGetMainWnd()
+ { return AfxGetThread() != NULL ? AfxGetThread()->GetMainWnd() : NULL; }
+
+#ifdef _AFXDLL
+// AFX_MAINTAIN_STATE functions
+_AFXWIN_INLINE AFX_MAINTAIN_STATE::AFX_MAINTAIN_STATE(AFX_MODULE_STATE* pNewState)
+ { m_pPrevModuleState = AfxSetModuleState(pNewState); }
+#endif
+
+// CSize
+_AFXWIN_INLINE CSize::CSize()
+ { /* random filled */ }
+_AFXWIN_INLINE CSize::CSize(int initCX, int initCY)
+ { cx = initCX; cy = initCY; }
+_AFXWIN_INLINE CSize::CSize(SIZE initSize)
+ { *(SIZE*)this = initSize; }
+_AFXWIN_INLINE CSize::CSize(POINT initPt)
+ { *(POINT*)this = initPt; }
+_AFXWIN_INLINE CSize::CSize(DWORD dwSize)
+ {
+ cx = (short)LOWORD(dwSize);
+ cy = (short)HIWORD(dwSize);
+ }
+_AFXWIN_INLINE BOOL CSize::operator==(SIZE size) const
+ { return (cx == size.cx && cy == size.cy); }
+_AFXWIN_INLINE BOOL CSize::operator!=(SIZE size) const
+ { return (cx != size.cx || cy != size.cy); }
+_AFXWIN_INLINE void CSize::operator+=(SIZE size)
+ { cx += size.cx; cy += size.cy; }
+_AFXWIN_INLINE void CSize::operator-=(SIZE size)
+ { cx -= size.cx; cy -= size.cy; }
+_AFXWIN_INLINE CSize CSize::operator+(SIZE size) const
+ { return CSize(cx + size.cx, cy + size.cy); }
+_AFXWIN_INLINE CSize CSize::operator-(SIZE size) const
+ { return CSize(cx - size.cx, cy - size.cy); }
+_AFXWIN_INLINE CSize CSize::operator-() const
+ { return CSize(-cx, -cy); }
+_AFXWIN_INLINE CPoint CSize::operator+(POINT point) const
+ { return CPoint(cx + point.x, cy + point.y); }
+_AFXWIN_INLINE CPoint CSize::operator-(POINT point) const
+ { return CPoint(cx - point.x, cy - point.y); }
+_AFXWIN_INLINE CRect CSize::operator+(const RECT* lpRect) const
+ { return CRect(lpRect) + *this; }
+_AFXWIN_INLINE CRect CSize::operator-(const RECT* lpRect) const
+ { return CRect(lpRect) - *this; }
+
+// CPoint
+_AFXWIN_INLINE CPoint::CPoint()
+ { /* random filled */ }
+_AFXWIN_INLINE CPoint::CPoint(int initX, int initY)
+ { x = initX; y = initY; }
+_AFXWIN_INLINE CPoint::CPoint(POINT initPt)
+ { *(POINT*)this = initPt; }
+_AFXWIN_INLINE CPoint::CPoint(SIZE initSize)
+ { *(SIZE*)this = initSize; }
+_AFXWIN_INLINE CPoint::CPoint(DWORD dwPoint)
+ {
+ x = (short)LOWORD(dwPoint);
+ y = (short)HIWORD(dwPoint);
+ }
+_AFXWIN_INLINE void CPoint::Offset(int xOffset, int yOffset)
+ { x += xOffset; y += yOffset; }
+_AFXWIN_INLINE void CPoint::Offset(POINT point)
+ { x += point.x; y += point.y; }
+_AFXWIN_INLINE void CPoint::Offset(SIZE size)
+ { x += size.cx; y += size.cy; }
+_AFXWIN_INLINE BOOL CPoint::operator==(POINT point) const
+ { return (x == point.x && y == point.y); }
+_AFXWIN_INLINE BOOL CPoint::operator!=(POINT point) const
+ { return (x != point.x || y != point.y); }
+_AFXWIN_INLINE void CPoint::operator+=(SIZE size)
+ { x += size.cx; y += size.cy; }
+_AFXWIN_INLINE void CPoint::operator-=(SIZE size)
+ { x -= size.cx; y -= size.cy; }
+_AFXWIN_INLINE void CPoint::operator+=(POINT point)
+ { x += point.x; y += point.y; }
+_AFXWIN_INLINE void CPoint::operator-=(POINT point)
+ { x -= point.x; y -= point.y; }
+_AFXWIN_INLINE CPoint CPoint::operator+(SIZE size) const
+ { return CPoint(x + size.cx, y + size.cy); }
+_AFXWIN_INLINE CPoint CPoint::operator-(SIZE size) const
+ { return CPoint(x - size.cx, y - size.cy); }
+_AFXWIN_INLINE CPoint CPoint::operator-() const
+ { return CPoint(-x, -y); }
+_AFXWIN_INLINE CPoint CPoint::operator+(POINT point) const
+ { return CPoint(x + point.x, y + point.y); }
+_AFXWIN_INLINE CSize CPoint::operator-(POINT point) const
+ { return CSize(x - point.x, y - point.y); }
+_AFXWIN_INLINE CRect CPoint::operator+(const RECT* lpRect) const
+ { return CRect(lpRect) + *this; }
+_AFXWIN_INLINE CRect CPoint::operator-(const RECT* lpRect) const
+ { return CRect(lpRect) - *this; }
+
+// CRect
+_AFXWIN_INLINE CRect::CRect()
+ { /* random filled */ }
+_AFXWIN_INLINE CRect::CRect(int l, int t, int r, int b)
+ { left = l; top = t; right = r; bottom = b; }
+_AFXWIN_INLINE CRect::CRect(const RECT& srcRect)
+ { ::CopyRect(this, &srcRect); }
+_AFXWIN_INLINE CRect::CRect(LPCRECT lpSrcRect)
+ { ::CopyRect(this, lpSrcRect); }
+_AFXWIN_INLINE CRect::CRect(POINT point, SIZE size)
+ { right = (left = point.x) + size.cx; bottom = (top = point.y) + size.cy; }
+_AFXWIN_INLINE CRect::CRect(POINT topLeft, POINT bottomRight)
+ { left = topLeft.x; top = topLeft.y;
+ right = bottomRight.x; bottom = bottomRight.y; }
+_AFXWIN_INLINE int CRect::Width() const
+ { return right - left; }
+_AFXWIN_INLINE int CRect::Height() const
+ { return bottom - top; }
+_AFXWIN_INLINE CSize CRect::Size() const
+ { return CSize(right - left, bottom - top); }
+_AFXWIN_INLINE CPoint& CRect::TopLeft()
+ { return *((CPoint*)this); }
+_AFXWIN_INLINE CPoint& CRect::BottomRight()
+ { return *((CPoint*)this+1); }
+_AFXWIN_INLINE const CPoint& CRect::TopLeft() const
+ { return *((CPoint*)this); }
+_AFXWIN_INLINE const CPoint& CRect::BottomRight() const
+ { return *((CPoint*)this+1); }
+_AFXWIN_INLINE CPoint CRect::CenterPoint() const
+ { return CPoint((left+right)/2, (top+bottom)/2); }
+_AFXWIN_INLINE CRect::operator LPRECT()
+ { return this; }
+_AFXWIN_INLINE CRect::operator LPCRECT() const
+ { return this; }
+_AFXWIN_INLINE BOOL CRect::IsRectEmpty() const
+ { return ::IsRectEmpty(this); }
+_AFXWIN_INLINE BOOL CRect::IsRectNull() const
+ { return (left == 0 && right == 0 && top == 0 && bottom == 0); }
+_AFXWIN_INLINE BOOL CRect::PtInRect(POINT point) const
+ { return ::PtInRect(this, point); }
+_AFXWIN_INLINE void CRect::SetRect(int x1, int y1, int x2, int y2)
+ { ::SetRect(this, x1, y1, x2, y2); }
+_AFXWIN_INLINE void CRect::SetRect(POINT topLeft, POINT bottomRight)
+ { ::SetRect(this, topLeft.x, topLeft.y, bottomRight.x, bottomRight.y); }
+_AFXWIN_INLINE void CRect::SetRectEmpty()
+ { ::SetRectEmpty(this); }
+_AFXWIN_INLINE void CRect::CopyRect(LPCRECT lpSrcRect)
+ { ::CopyRect(this, lpSrcRect); }
+_AFXWIN_INLINE BOOL CRect::EqualRect(LPCRECT lpRect) const
+ { return ::EqualRect(this, lpRect); }
+_AFXWIN_INLINE void CRect::InflateRect(int x, int y)
+ { ::InflateRect(this, x, y); }
+_AFXWIN_INLINE void CRect::InflateRect(SIZE size)
+ { ::InflateRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE void CRect::DeflateRect(int x, int y)
+ { ::InflateRect(this, -x, -y); }
+_AFXWIN_INLINE void CRect::DeflateRect(SIZE size)
+ { ::InflateRect(this, -size.cx, -size.cy); }
+_AFXWIN_INLINE void CRect::OffsetRect(int x, int y)
+ { ::OffsetRect(this, x, y); }
+_AFXWIN_INLINE void CRect::OffsetRect(POINT point)
+ { ::OffsetRect(this, point.x, point.y); }
+_AFXWIN_INLINE void CRect::OffsetRect(SIZE size)
+ { ::OffsetRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE BOOL CRect::IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2)
+ { return ::IntersectRect(this, lpRect1, lpRect2);}
+_AFXWIN_INLINE BOOL CRect::UnionRect(LPCRECT lpRect1, LPCRECT lpRect2)
+ { return ::UnionRect(this, lpRect1, lpRect2); }
+_AFXWIN_INLINE void CRect::operator=(const RECT& srcRect)
+ { ::CopyRect(this, &srcRect); }
+_AFXWIN_INLINE BOOL CRect::operator==(const RECT& rect) const
+ { return ::EqualRect(this, &rect); }
+_AFXWIN_INLINE BOOL CRect::operator!=(const RECT& rect) const
+ { return !::EqualRect(this, &rect); }
+_AFXWIN_INLINE void CRect::operator+=(POINT point)
+ { ::OffsetRect(this, point.x, point.y); }
+_AFXWIN_INLINE void CRect::operator+=(SIZE size)
+ { ::OffsetRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE void CRect::operator+=(LPCRECT lpRect)
+ { InflateRect(lpRect); }
+_AFXWIN_INLINE void CRect::operator-=(POINT point)
+ { ::OffsetRect(this, -point.x, -point.y); }
+_AFXWIN_INLINE void CRect::operator-=(SIZE size)
+ { ::OffsetRect(this, -size.cx, -size.cy); }
+_AFXWIN_INLINE void CRect::operator-=(LPCRECT lpRect)
+ { DeflateRect(lpRect); }
+_AFXWIN_INLINE void CRect::operator&=(const RECT& rect)
+ { ::IntersectRect(this, this, &rect); }
+_AFXWIN_INLINE void CRect::operator|=(const RECT& rect)
+ { ::UnionRect(this, this, &rect); }
+_AFXWIN_INLINE CRect CRect::operator+(POINT pt) const
+ { CRect rect(*this); ::OffsetRect(&rect, pt.x, pt.y); return rect; }
+_AFXWIN_INLINE CRect CRect::operator-(POINT pt) const
+ { CRect rect(*this); ::OffsetRect(&rect, -pt.x, -pt.y); return rect; }
+_AFXWIN_INLINE CRect CRect::operator+(SIZE size) const
+ { CRect rect(*this); ::OffsetRect(&rect, size.cx, size.cy); return rect; }
+_AFXWIN_INLINE CRect CRect::operator-(SIZE size) const
+ { CRect rect(*this); ::OffsetRect(&rect, -size.cx, -size.cy); return rect; }
+_AFXWIN_INLINE CRect CRect::operator+(LPCRECT lpRect) const
+ { CRect rect(this); rect.InflateRect(lpRect); return rect; }
+_AFXWIN_INLINE CRect CRect::operator-(LPCRECT lpRect) const
+ { CRect rect(this); rect.DeflateRect(lpRect); return rect; }
+_AFXWIN_INLINE CRect CRect::operator&(const RECT& rect2) const
+ { CRect rect; ::IntersectRect(&rect, this, &rect2);
+ return rect; }
+_AFXWIN_INLINE CRect CRect::operator|(const RECT& rect2) const
+ { CRect rect; ::UnionRect(&rect, this, &rect2);
+ return rect; }
+_AFXWIN_INLINE BOOL CRect::SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2)
+ { return ::SubtractRect(this, lpRectSrc1, lpRectSrc2); }
+
+// CArchive output helpers
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, SIZE size)
+ { ar.Write(&size, sizeof(SIZE)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, POINT point)
+ { ar.Write(&point, sizeof(POINT)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, const RECT& rect)
+ { ar.Write(&rect, sizeof(RECT)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, SIZE& size)
+ { ar.Read(&size, sizeof(SIZE)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, POINT& point)
+ { ar.Read(&point, sizeof(POINT)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, RECT& rect)
+ { ar.Read(&rect, sizeof(RECT)); return ar; }
+
+// exception support
+_AFXWIN_INLINE CResourceException::CResourceException()
+ : CSimpleException() { }
+_AFXWIN_INLINE CResourceException::CResourceException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFXWIN_INLINE CResourceException::~CResourceException()
+ { }
+_AFXWIN_INLINE CUserException::CUserException()
+ : CSimpleException() { }
+_AFXWIN_INLINE CUserException::CUserException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFXWIN_INLINE CUserException::~CUserException()
+ { }
+
+// CGdiObject
+_AFXWIN_INLINE CGdiObject::operator HGDIOBJ() const
+ { return this == NULL ? NULL : m_hObject; }
+_AFXWIN_INLINE HGDIOBJ CGdiObject::GetSafeHandle() const
+ { return this == NULL ? NULL : m_hObject; }
+_AFXWIN_INLINE CGdiObject::CGdiObject()
+ { m_hObject = NULL; }
+_AFXWIN_INLINE CGdiObject::~CGdiObject()
+ { DeleteObject(); }
+_AFXWIN_INLINE int CGdiObject::GetObject(int nCount, LPVOID lpObject) const
+ { ASSERT(m_hObject != NULL); return ::GetObject(m_hObject, nCount, lpObject); }
+_AFXWIN_INLINE BOOL CGdiObject::CreateStockObject(int nIndex)
+ { return (m_hObject = ::GetStockObject(nIndex)) != NULL; }
+_AFXWIN_INLINE BOOL CGdiObject::UnrealizeObject()
+ { ASSERT(m_hObject != NULL); return ::UnrealizeObject(m_hObject); }
+_AFXWIN_INLINE UINT CGdiObject::GetObjectType() const
+ { return (UINT)::GetObjectType(m_hObject); }
+
+// CPen
+_AFXWIN_INLINE CPen::operator HPEN() const
+ { return (HPEN)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CPen* PASCAL CPen::FromHandle(HPEN hPen)
+ { return (CPen*) CGdiObject::FromHandle(hPen); }
+_AFXWIN_INLINE CPen::CPen()
+ { }
+_AFXWIN_INLINE CPen::~CPen()
+ { }
+_AFXWIN_INLINE BOOL CPen::CreatePen(int nPenStyle, int nWidth, COLORREF crColor)
+ { return Attach(::CreatePen(nPenStyle, nWidth, crColor)); }
+_AFXWIN_INLINE BOOL CPen::CreatePenIndirect(LPLOGPEN lpLogPen)
+ { return Attach(::CreatePenIndirect(lpLogPen)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CPen::CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount, const DWORD* lpStyle)
+ { return Attach(::ExtCreatePen(nPenStyle, nWidth, pLogBrush, nStyleCount,
+ lpStyle)); }
+_AFXWIN_INLINE int CPen::GetExtLogPen(EXTLOGPEN* pLogPen)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(EXTLOGPEN), pLogPen); }
+#endif
+_AFXWIN_INLINE int CPen::GetLogPen(LOGPEN* pLogPen)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(LOGPEN), pLogPen); }
+
+// CBrush
+_AFXWIN_INLINE CBrush::operator HBRUSH() const
+ { return (HBRUSH)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CBrush* PASCAL CBrush::FromHandle(HBRUSH hBrush)
+ { return (CBrush*) CGdiObject::FromHandle(hBrush); }
+_AFXWIN_INLINE CBrush::CBrush()
+ { }
+_AFXWIN_INLINE CBrush::~CBrush()
+ { }
+_AFXWIN_INLINE BOOL CBrush::CreateSolidBrush(COLORREF crColor)
+ { return Attach(::CreateSolidBrush(crColor)); }
+_AFXWIN_INLINE BOOL CBrush::CreateHatchBrush(int nIndex, COLORREF crColor)
+ { return Attach(::CreateHatchBrush(nIndex, crColor)); }
+_AFXWIN_INLINE BOOL CBrush::CreateBrushIndirect(LPLOGBRUSH lpLogBrush)
+ { return Attach(::CreateBrushIndirect(lpLogBrush)); }
+_AFXWIN_INLINE BOOL CBrush::CreatePatternBrush(CBitmap* pBitmap)
+ { return Attach(::CreatePatternBrush((HBITMAP)pBitmap->GetSafeHandle())); }
+_AFXWIN_INLINE BOOL CBrush::CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage)
+ { return Attach(::CreateDIBPatternBrushPt(lpPackedDIB, nUsage)); }
+_AFXWIN_INLINE BOOL CBrush::CreateSysColorBrush(int nIndex)
+ { return Attach(::GetSysColorBrush(nIndex)); }
+_AFXWIN_INLINE int CBrush::GetLogBrush(LOGBRUSH* pLogBrush)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(LOGBRUSH), pLogBrush); }
+
+// CFont
+_AFXWIN_INLINE CFont::operator HFONT() const
+ { return (HFONT)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CFont* PASCAL CFont::FromHandle(HFONT hFont)
+ { return (CFont*) CGdiObject::FromHandle(hFont); }
+_AFXWIN_INLINE CFont::CFont()
+ { }
+_AFXWIN_INLINE CFont::~CFont()
+ { }
+_AFXWIN_INLINE BOOL CFont::CreateFontIndirect(const LOGFONT* lpLogFont)
+ { return Attach(::CreateFontIndirect(lpLogFont)); }
+_AFXWIN_INLINE BOOL CFont::CreateFont(int nHeight, int nWidth, int nEscapement,
+ int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline,
+ BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
+ BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily,
+ LPCTSTR lpszFacename)
+ { return Attach(::CreateFont(nHeight, nWidth, nEscapement,
+ nOrientation, nWeight, bItalic, bUnderline, cStrikeOut,
+ nCharSet, nOutPrecision, nClipPrecision, nQuality,
+ nPitchAndFamily, lpszFacename)); }
+_AFXWIN_INLINE int CFont::GetLogFont(LOGFONT* pLogFont)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(LOGFONT), pLogFont); }
+
+// CBitmap
+_AFXWIN_INLINE CBitmap::operator HBITMAP() const
+ { return (HBITMAP)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CBitmap* PASCAL CBitmap::FromHandle(HBITMAP hBitmap)
+ { return (CBitmap*) CGdiObject::FromHandle(hBitmap); }
+_AFXWIN_INLINE CBitmap::CBitmap()
+ { }
+_AFXWIN_INLINE CBitmap::~CBitmap()
+ { }
+_AFXWIN_INLINE BOOL CBitmap::CreateBitmap(int nWidth, int nHeight, UINT nPlanes,
+ UINT nBitcount, const void* lpBits)
+ { return Attach(::CreateBitmap(nWidth, nHeight, nPlanes, nBitcount, lpBits)); }
+_AFXWIN_INLINE BOOL CBitmap::CreateBitmapIndirect(LPBITMAP lpBitmap)
+ { return Attach(::CreateBitmapIndirect(lpBitmap)); }
+
+_AFXWIN_INLINE DWORD CBitmap::SetBitmapBits(DWORD dwCount, const void* lpBits)
+ { return ::SetBitmapBits((HBITMAP)m_hObject, dwCount, lpBits); }
+_AFXWIN_INLINE DWORD CBitmap::GetBitmapBits(DWORD dwCount, LPVOID lpBits) const
+ { return ::GetBitmapBits((HBITMAP)m_hObject, dwCount, lpBits); }
+_AFXWIN_INLINE BOOL CBitmap::LoadBitmap(LPCTSTR lpszResourceName)
+ { return Attach(::LoadBitmap(AfxFindResourceHandle(
+ lpszResourceName, RT_BITMAP), lpszResourceName));}
+_AFXWIN_INLINE BOOL CBitmap::LoadMappedBitmap(UINT nIDBitmap, UINT nFlags,
+ LPCOLORMAP lpColorMap, int nMapSize)
+ { return Attach(::CreateMappedBitmap(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDBitmap), RT_BITMAP), nIDBitmap, (WORD)nFlags,
+ lpColorMap, nMapSize)); }
+_AFXWIN_INLINE CSize CBitmap::SetBitmapDimension(int nWidth, int nHeight)
+ {
+ SIZE size;
+ VERIFY(::SetBitmapDimensionEx((HBITMAP)m_hObject, nWidth, nHeight, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CBitmap::GetBitmapDimension() const
+ {
+ SIZE size;
+ VERIFY(::GetBitmapDimensionEx((HBITMAP)m_hObject, &size));
+ return size;
+ }
+
+_AFXWIN_INLINE BOOL CBitmap::LoadBitmap(UINT nIDResource)
+ { return Attach(::LoadBitmap(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDResource), RT_BITMAP), MAKEINTRESOURCE(nIDResource))); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CBitmap::LoadOEMBitmap(UINT nIDBitmap)
+ { return Attach(::LoadBitmap(NULL, MAKEINTRESOURCE(nIDBitmap))); }
+#endif
+_AFXWIN_INLINE BOOL CBitmap::CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight)
+ { return Attach(::CreateCompatibleBitmap(pDC->m_hDC, nWidth, nHeight)); }
+_AFXWIN_INLINE BOOL CBitmap::CreateDiscardableBitmap(CDC* pDC, int nWidth, int nHeight)
+ { return Attach(::CreateDiscardableBitmap(pDC->m_hDC, nWidth, nHeight)); }
+_AFXWIN_INLINE int CBitmap::GetBitmap(BITMAP* pBitMap)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(BITMAP), pBitMap); }
+
+// CPalette
+_AFXWIN_INLINE CPalette::operator HPALETTE() const
+ { return (HPALETTE)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CPalette* PASCAL CPalette::FromHandle(HPALETTE hPalette)
+ { return (CPalette*) CGdiObject::FromHandle(hPalette); }
+_AFXWIN_INLINE CPalette::CPalette()
+ { }
+_AFXWIN_INLINE CPalette::~CPalette()
+ { }
+_AFXWIN_INLINE BOOL CPalette::CreatePalette(LPLOGPALETTE lpLogPalette)
+ { return Attach(::CreatePalette(lpLogPalette)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CPalette::CreateHalftonePalette(CDC* pDC)
+ { ASSERT(pDC != NULL && pDC->m_hDC != NULL); return Attach(
+ ::CreateHalftonePalette(pDC->m_hDC)); }
+#endif
+_AFXWIN_INLINE UINT CPalette::GetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors) const
+ { ASSERT(m_hObject != NULL); return ::GetPaletteEntries((HPALETTE)m_hObject, nStartIndex,
+ nNumEntries, lpPaletteColors); }
+_AFXWIN_INLINE UINT CPalette::SetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors)
+ { ASSERT(m_hObject != NULL); return ::SetPaletteEntries((HPALETTE)m_hObject, nStartIndex,
+ nNumEntries, lpPaletteColors); }
+#ifndef _MAC
+_AFXWIN_INLINE void CPalette::AnimatePalette(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors)
+ { ASSERT(m_hObject != NULL); ::AnimatePalette((HPALETTE)m_hObject, nStartIndex, nNumEntries,
+ lpPaletteColors); }
+#endif
+_AFXWIN_INLINE UINT CPalette::GetNearestPaletteIndex(COLORREF crColor) const
+ { ASSERT(m_hObject != NULL); return ::GetNearestPaletteIndex((HPALETTE)m_hObject, crColor); }
+_AFXWIN_INLINE BOOL CPalette::ResizePalette(UINT nNumEntries)
+ { ASSERT(m_hObject != NULL); return ::ResizePalette((HPALETTE)m_hObject, nNumEntries); }
+_AFXWIN_INLINE int CPalette::GetEntryCount()
+ { ASSERT(m_hObject != NULL); WORD nEntries;
+ ::GetObject(m_hObject, sizeof(WORD), &nEntries); return (int)nEntries; }
+
+// CRgn
+_AFXWIN_INLINE CRgn::operator HRGN() const
+ { return (HRGN)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CRgn* PASCAL CRgn::FromHandle(HRGN hRgn)
+ { return (CRgn*) CGdiObject::FromHandle(hRgn); }
+_AFXWIN_INLINE CRgn::CRgn()
+ { }
+_AFXWIN_INLINE CRgn::~CRgn()
+ { }
+_AFXWIN_INLINE BOOL CRgn::CreateRectRgn(int x1, int y1, int x2, int y2)
+ { return Attach(::CreateRectRgn(x1, y1, x2, y2)); }
+_AFXWIN_INLINE BOOL CRgn::CreateRectRgnIndirect(LPCRECT lpRect)
+ { return Attach(::CreateRectRgnIndirect(lpRect)); }
+_AFXWIN_INLINE BOOL CRgn::CreateEllipticRgn(int x1, int y1, int x2, int y2)
+ { return Attach(::CreateEllipticRgn(x1, y1, x2, y2)); }
+_AFXWIN_INLINE BOOL CRgn::CreateEllipticRgnIndirect(LPCRECT lpRect)
+ { return Attach(::CreateEllipticRgnIndirect(lpRect)); }
+_AFXWIN_INLINE BOOL CRgn::CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode)
+ { return Attach(::CreatePolygonRgn(lpPoints, nCount, nMode)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CRgn::CreatePolyPolygonRgn(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount, int nPolyFillMode)
+ { return Attach(::CreatePolyPolygonRgn(lpPoints, lpPolyCounts, nCount, nPolyFillMode)); }
+#endif
+_AFXWIN_INLINE BOOL CRgn::CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3)
+ { return Attach(::CreateRoundRectRgn(x1, y1, x2, y2, x3, y3)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CRgn::CreateFromPath(CDC* pDC)
+ { ASSERT(pDC != NULL); return Attach(::PathToRegion(pDC->m_hDC)); }
+_AFXWIN_INLINE BOOL CRgn::CreateFromData(const XFORM* lpXForm, int nCount, const RGNDATA* pRgnData)
+ { return Attach(::ExtCreateRegion(lpXForm, nCount, pRgnData)); }
+_AFXWIN_INLINE int CRgn::GetRegionData(LPRGNDATA lpRgnData, int nDataSize) const
+ { ASSERT(m_hObject != NULL); return (int)::GetRegionData((HRGN)m_hObject, nDataSize, lpRgnData); }
+#endif
+_AFXWIN_INLINE void CRgn::SetRectRgn(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hObject != NULL); ::SetRectRgn((HRGN)m_hObject, x1, y1, x2, y2); }
+_AFXWIN_INLINE void CRgn::SetRectRgn(LPCRECT lpRect)
+ { ASSERT(m_hObject != NULL); ::SetRectRgn((HRGN)m_hObject, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE int CRgn::CombineRgn(CRgn* pRgn1, CRgn* pRgn2, int nCombineMode)
+ { ASSERT(m_hObject != NULL); return ::CombineRgn((HRGN)m_hObject, (HRGN)pRgn1->GetSafeHandle(),
+ (HRGN)pRgn2->GetSafeHandle(), nCombineMode); }
+_AFXWIN_INLINE int CRgn::CopyRgn(CRgn* pRgnSrc)
+ { ASSERT(m_hObject != NULL); return ::CombineRgn((HRGN)m_hObject, (HRGN)pRgnSrc->GetSafeHandle(), NULL, RGN_COPY); }
+_AFXWIN_INLINE BOOL CRgn::EqualRgn(CRgn* pRgn) const
+ { ASSERT(m_hObject != NULL); return ::EqualRgn((HRGN)m_hObject, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE int CRgn::OffsetRgn(int x, int y)
+ { ASSERT(m_hObject != NULL); return ::OffsetRgn((HRGN)m_hObject, x, y); }
+_AFXWIN_INLINE int CRgn::OffsetRgn(POINT point)
+ { ASSERT(m_hObject != NULL); return ::OffsetRgn((HRGN)m_hObject, point.x, point.y); }
+_AFXWIN_INLINE int CRgn::GetRgnBox(LPRECT lpRect) const
+ { ASSERT(m_hObject != NULL); return ::GetRgnBox((HRGN)m_hObject, lpRect); }
+_AFXWIN_INLINE BOOL CRgn::PtInRegion(int x, int y) const
+ { ASSERT(m_hObject != NULL); return ::PtInRegion((HRGN)m_hObject, x, y); }
+_AFXWIN_INLINE BOOL CRgn::PtInRegion(POINT point) const
+ { ASSERT(m_hObject != NULL); return ::PtInRegion((HRGN)m_hObject, point.x, point.y); }
+_AFXWIN_INLINE BOOL CRgn::RectInRegion(LPCRECT lpRect) const
+ { ASSERT(m_hObject != NULL); return ::RectInRegion((HRGN)m_hObject, lpRect); }
+
+// CDC
+_AFXWIN_INLINE CDC::operator HDC() const
+ { return this == NULL ? NULL : m_hDC; }
+_AFXWIN_INLINE HDC CDC::GetSafeHdc() const
+ { return this == NULL ? NULL : m_hDC; }
+#ifndef _MAC
+_AFXWIN_INLINE CWnd* CDC::GetWindow() const
+ { ASSERT(m_hDC != NULL); return CWnd::FromHandle(::WindowFromDC(m_hDC)); }
+#endif
+_AFXWIN_INLINE BOOL CDC::IsPrinting() const
+ { return m_bPrinting; }
+_AFXWIN_INLINE BOOL CDC::CreateDC(LPCTSTR lpszDriverName,
+ LPCTSTR lpszDeviceName, LPCTSTR lpszOutput, const void* lpInitData)
+ { return Attach(::CreateDC(lpszDriverName,
+ lpszDeviceName, lpszOutput, (const DEVMODE*)lpInitData)); }
+_AFXWIN_INLINE BOOL CDC::CreateIC(LPCTSTR lpszDriverName,
+ LPCTSTR lpszDeviceName, LPCTSTR lpszOutput, const void* lpInitData)
+ { return Attach(::CreateIC(lpszDriverName,
+ lpszDeviceName, lpszOutput, (const DEVMODE*) lpInitData)); }
+_AFXWIN_INLINE BOOL CDC::CreateCompatibleDC(CDC* pDC)
+ { return Attach(::CreateCompatibleDC(pDC->GetSafeHdc())); }
+_AFXWIN_INLINE int CDC::ExcludeUpdateRgn(CWnd* pWnd)
+ { ASSERT(m_hDC != NULL); return ::ExcludeUpdateRgn(m_hDC, pWnd->m_hWnd); }
+_AFXWIN_INLINE int CDC::GetDeviceCaps(int nIndex) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetDeviceCaps(m_hAttribDC, nIndex); }
+_AFXWIN_INLINE CPoint CDC::GetBrushOrg() const
+ {
+ ASSERT(m_hDC != NULL);
+ POINT point;
+ VERIFY(::GetBrushOrgEx(m_hDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CPoint CDC::SetBrushOrg(int x, int y)
+ {
+ ASSERT(m_hDC != NULL);
+ POINT point;
+ VERIFY(::SetBrushOrgEx(m_hDC, x, y, &point));
+ return point;
+ }
+_AFXWIN_INLINE CPoint CDC::SetBrushOrg(POINT point)
+ {
+ ASSERT(m_hDC != NULL);
+ VERIFY(::SetBrushOrgEx(m_hDC, point.x, point.y, &point));
+ return point;
+ }
+
+_AFXWIN_INLINE int CDC::EnumObjects(int nObjectType,
+ int (CALLBACK* lpfn)(LPVOID, LPARAM), LPARAM lpData)
+ { ASSERT(m_hAttribDC != NULL); return ::EnumObjects(m_hAttribDC, nObjectType, (GOBJENUMPROC)lpfn, lpData); }
+
+_AFXWIN_INLINE CBitmap* CDC::SelectObject(CBitmap* pBitmap)
+ { ASSERT(m_hDC != NULL); return (CBitmap*) SelectGdiObject(m_hDC, pBitmap->GetSafeHandle()); }
+_AFXWIN_INLINE CGdiObject* CDC::SelectObject(CGdiObject* pObject)
+ { ASSERT(m_hDC != NULL); return SelectGdiObject(m_hDC, pObject->GetSafeHandle()); }
+_AFXWIN_INLINE HGDIOBJ CDC::SelectObject(HGDIOBJ hObject) // Safe for NULL handles
+ { ASSERT(m_hDC == m_hAttribDC); // ASSERT a simple CDC object
+ return (hObject != NULL) ? ::SelectObject(m_hDC, hObject) : NULL; }
+_AFXWIN_INLINE COLORREF CDC::GetNearestColor(COLORREF crColor) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetNearestColor(m_hAttribDC, crColor); }
+_AFXWIN_INLINE UINT CDC::RealizePalette()
+ { ASSERT(m_hDC != NULL); return ::RealizePalette(m_hDC); }
+_AFXWIN_INLINE void CDC::UpdateColors()
+ { ASSERT(m_hDC != NULL); ::UpdateColors(m_hDC); }
+_AFXWIN_INLINE COLORREF CDC::GetBkColor() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetBkColor(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetBkMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetBkMode(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetPolyFillMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetPolyFillMode(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetROP2() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetROP2(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetStretchBltMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetStretchBltMode(m_hAttribDC); }
+_AFXWIN_INLINE COLORREF CDC::GetTextColor() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextColor(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetMapMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetMapMode(m_hAttribDC); }
+
+_AFXWIN_INLINE CPoint CDC::GetViewportOrg() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetViewportOrgEx(m_hAttribDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CSize CDC::GetViewportExt() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetViewportExtEx(m_hAttribDC, &size));
+ return size;
+ }
+_AFXWIN_INLINE CPoint CDC::GetWindowOrg() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetWindowOrgEx(m_hAttribDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CSize CDC::GetWindowExt() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetWindowExtEx(m_hAttribDC, &size));
+ return size;
+ }
+
+// non-virtual helpers calling virtual mapping functions
+_AFXWIN_INLINE CPoint CDC::SetViewportOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetViewportOrg(point.x, point.y); }
+_AFXWIN_INLINE CSize CDC::SetViewportExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetViewportExt(size.cx, size.cy); }
+_AFXWIN_INLINE CPoint CDC::SetWindowOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetWindowOrg(point.x, point.y); }
+_AFXWIN_INLINE CSize CDC::SetWindowExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetWindowExt(size.cx, size.cy); }
+
+_AFXWIN_INLINE void CDC::DPtoLP(LPPOINT lpPoints, int nCount) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::DPtoLP(m_hAttribDC, lpPoints, nCount)); }
+_AFXWIN_INLINE void CDC::DPtoLP(LPRECT lpRect) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::DPtoLP(m_hAttribDC, (LPPOINT)lpRect, 2)); }
+_AFXWIN_INLINE void CDC::LPtoDP(LPPOINT lpPoints, int nCount) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::LPtoDP(m_hAttribDC, lpPoints, nCount)); }
+_AFXWIN_INLINE void CDC::LPtoDP(LPRECT lpRect) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::LPtoDP(m_hAttribDC, (LPPOINT)lpRect, 2)); }
+
+_AFXWIN_INLINE BOOL CDC::FillRgn(CRgn* pRgn, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::FillRgn(m_hDC, (HRGN)pRgn->GetSafeHandle(), (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::FrameRgn(CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight)
+ { ASSERT(m_hDC != NULL); return ::FrameRgn(m_hDC, (HRGN)pRgn->GetSafeHandle(), (HBRUSH)pBrush->GetSafeHandle(),
+ nWidth, nHeight); }
+_AFXWIN_INLINE BOOL CDC::InvertRgn(CRgn* pRgn)
+ { ASSERT(m_hDC != NULL); return ::InvertRgn(m_hDC, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::PaintRgn(CRgn* pRgn)
+ { ASSERT(m_hDC != NULL); return ::PaintRgn(m_hDC, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::PtVisible(int x, int y) const
+ { ASSERT(m_hDC != NULL); return ::PtVisible(m_hDC, x, y); }
+_AFXWIN_INLINE BOOL CDC::PtVisible(POINT point) const
+ { ASSERT(m_hDC != NULL); return PtVisible(point.x, point.y); } // call virtual
+_AFXWIN_INLINE BOOL CDC::RectVisible(LPCRECT lpRect) const
+ { ASSERT(m_hDC != NULL); return ::RectVisible(m_hDC, lpRect); }
+_AFXWIN_INLINE CPoint CDC::GetCurrentPosition() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetCurrentPositionEx(m_hAttribDC, &point));
+ return point;
+ }
+
+_AFXWIN_INLINE CPoint CDC::MoveTo(POINT point)
+ { ASSERT(m_hDC != NULL); return MoveTo(point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::LineTo(POINT point)
+ { ASSERT(m_hDC != NULL); return LineTo(point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Arc(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Arc(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE BOOL CDC::Polyline(LPPOINT lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::Polyline(m_hDC, lpPoints, nCount); }
+_AFXWIN_INLINE void CDC::FillRect(LPCRECT lpRect, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); ::FillRect(m_hDC, lpRect, (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE void CDC::FrameRect(LPCRECT lpRect, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); ::FrameRect(m_hDC, lpRect, (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE void CDC::InvertRect(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); ::InvertRect(m_hDC, lpRect); }
+_AFXWIN_INLINE BOOL CDC::DrawIcon(int x, int y, HICON hIcon)
+ { ASSERT(m_hDC != NULL); return ::DrawIcon(m_hDC, x, y, hIcon); }
+_AFXWIN_INLINE BOOL CDC::DrawIcon(POINT point, HICON hIcon)
+ { ASSERT(m_hDC != NULL); return ::DrawIcon(m_hDC, point.x, point.y, hIcon); }
+#ifndef _MAC
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, HBITMAP hBitmap, UINT nFlags, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush,
+ NULL, (LPARAM)hBitmap, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_BITMAP); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, CBitmap* pBitmap, UINT nFlags, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ NULL, (LPARAM)pBitmap->GetSafeHandle(), 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_BITMAP); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush, NULL,
+ (LPARAM)hIcon, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_ICON); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(), NULL,
+ (LPARAM)hIcon, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_ICON); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags, BOOL bPrefixText, int nTextLen, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush,
+ NULL, (LPARAM)lpszText, (WPARAM)nTextLen, pt.x, pt.y, size.cx, size.cy, nFlags|(bPrefixText ? DST_PREFIXTEXT : DST_TEXT)); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags, BOOL bPrefixText, int nTextLen, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ NULL, (LPARAM)lpszText, (WPARAM)nTextLen, pt.x, pt.y, size.cx, size.cy, nFlags|(bPrefixText ? DST_PREFIXTEXT : DST_TEXT)); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc, LPARAM lData, UINT nFlags, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush,
+ lpDrawProc, lData, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_COMPLEX); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc, LPARAM lData, UINT nFlags, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ lpDrawProc, lData, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_COMPLEX); }
+_AFXWIN_INLINE BOOL CDC::DrawEdge(LPRECT lpRect, UINT nEdge, UINT nFlags)
+ { ASSERT(m_hDC != NULL); return ::DrawEdge(m_hDC, lpRect, nEdge, nFlags); }
+_AFXWIN_INLINE BOOL CDC::DrawFrameControl(LPRECT lpRect, UINT nType, UINT nState)
+ { ASSERT(m_hDC != NULL); return ::DrawFrameControl(m_hDC, lpRect, nType, nState); }
+#endif
+
+_AFXWIN_INLINE BOOL CDC::Chord(int x1, int y1, int x2, int y2, int x3, int y3,
+ int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Chord(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Chord(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+#endif
+_AFXWIN_INLINE void CDC::DrawFocusRect(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); ::DrawFocusRect(m_hDC, lpRect); }
+_AFXWIN_INLINE BOOL CDC::Ellipse(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hDC != NULL); return ::Ellipse(m_hDC, x1, y1, x2, y2); }
+_AFXWIN_INLINE BOOL CDC::Ellipse(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); return ::Ellipse(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE BOOL CDC::Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Pie(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Pie(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE BOOL CDC::Polygon(LPPOINT lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::Polygon(m_hDC, lpPoints, nCount); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::PolyPolygon(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyPolygon(m_hDC, lpPoints, lpPolyCounts, nCount); }
+#endif
+_AFXWIN_INLINE BOOL CDC::Rectangle(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hDC != NULL); return ::Rectangle(m_hDC, x1, y1, x2, y2); }
+_AFXWIN_INLINE BOOL CDC::Rectangle(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); return ::Rectangle(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE BOOL CDC::RoundRect(int x1, int y1, int x2, int y2, int x3, int y3)
+ { ASSERT(m_hDC != NULL); return ::RoundRect(m_hDC, x1, y1, x2, y2, x3, y3); }
+_AFXWIN_INLINE BOOL CDC::RoundRect(LPCRECT lpRect, POINT point)
+ { ASSERT(m_hDC != NULL); return ::RoundRect(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::PatBlt(m_hDC, x, y, nWidth, nHeight, dwRop); }
+_AFXWIN_INLINE BOOL CDC::BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::BitBlt(m_hDC, x, y, nWidth, nHeight,
+ pSrcDC->GetSafeHdc(), xSrc, ySrc, dwRop); }
+_AFXWIN_INLINE BOOL CDC::StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::StretchBlt(m_hDC, x, y, nWidth, nHeight,
+ pSrcDC->GetSafeHdc(), xSrc, ySrc, nSrcWidth, nSrcHeight,
+ dwRop); }
+_AFXWIN_INLINE COLORREF CDC::GetPixel(int x, int y) const
+ { ASSERT(m_hDC != NULL); return ::GetPixel(m_hDC, x, y); }
+_AFXWIN_INLINE COLORREF CDC::GetPixel(POINT point) const
+ { ASSERT(m_hDC != NULL); return ::GetPixel(m_hDC, point.x, point.y); }
+_AFXWIN_INLINE COLORREF CDC::SetPixel(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixel(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE COLORREF CDC::SetPixel(POINT point, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixel(m_hDC, point.x, point.y, crColor); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::FloodFill(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::FloodFill(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE BOOL CDC::ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType)
+ { ASSERT(m_hDC != NULL); return ::ExtFloodFill(m_hDC, x, y, crColor, nFillType); }
+#endif
+_AFXWIN_INLINE BOOL CDC::TextOut(int x, int y, LPCTSTR lpszString, int nCount)
+ { ASSERT(m_hDC != NULL); return ::TextOut(m_hDC, x, y, lpszString, nCount); }
+_AFXWIN_INLINE BOOL CDC::TextOut(int x, int y, const CString& str)
+ { ASSERT(m_hDC != NULL); return TextOut(x, y, (LPCTSTR)str, str.GetLength()); } // call virtual
+_AFXWIN_INLINE BOOL CDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths)
+ { ASSERT(m_hDC != NULL); return ::ExtTextOut(m_hDC, x, y, nOptions, lpRect,
+ lpszString, nCount, lpDxWidths); }
+_AFXWIN_INLINE BOOL CDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths)
+ { ASSERT(m_hDC != NULL); return ::ExtTextOut(m_hDC, x, y, nOptions, lpRect,
+ str, str.GetLength(), lpDxWidths); }
+_AFXWIN_INLINE CSize CDC::TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin)
+ { ASSERT(m_hDC != NULL); return ::TabbedTextOut(m_hDC, x, y, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions, nTabOrigin); }
+_AFXWIN_INLINE CSize CDC::TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin)
+ { ASSERT(m_hDC != NULL); return ::TabbedTextOut(m_hDC, x, y, str, str.GetLength(),
+ nTabPositions, lpnTabStopPositions, nTabOrigin); }
+_AFXWIN_INLINE int CDC::DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat)
+ { ASSERT(m_hDC != NULL);
+ return ::DrawText(m_hDC, lpszString, nCount, lpRect, nFormat); }
+_AFXWIN_INLINE int CDC::DrawText(const CString& str, LPRECT lpRect, UINT nFormat)
+ { ASSERT(m_hDC != NULL);
+ return DrawText((LPCTSTR)str, str.GetLength(), lpRect, nFormat); }
+_AFXWIN_INLINE CSize CDC::GetTextExtent(LPCTSTR lpszString, int nCount) const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hAttribDC, lpszString, nCount, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CDC::GetTextExtent(const CString& str) const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hAttribDC, str, str.GetLength(), &size));
+ return size;
+ }
+
+_AFXWIN_INLINE CSize CDC::GetOutputTextExtent(LPCTSTR lpszString, int nCount) const
+ {
+ ASSERT(m_hDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hDC, lpszString, nCount, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CDC::GetOutputTextExtent(const CString& str) const
+ {
+ ASSERT(m_hDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hDC, str, str.GetLength(), &size));
+ return size;
+ }
+
+_AFXWIN_INLINE CSize CDC::GetTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTabbedTextExtent(m_hAttribDC, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE CSize CDC::GetTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTabbedTextExtent(m_hAttribDC,
+ str, str.GetLength(), nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE CSize CDC::GetOutputTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hDC != NULL); return ::GetTabbedTextExtent(m_hDC, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE CSize CDC::GetOutputTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hDC != NULL); return ::GetTabbedTextExtent(m_hDC,
+ str, str.GetLength(), nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE BOOL CDC::GrayString(CBrush* pBrush,
+ BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int),
+ LPARAM lpData, int nCount,
+ int x, int y, int nWidth, int nHeight)
+ { ASSERT(m_hDC != NULL); return ::GrayString(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ (GRAYSTRINGPROC)lpfnOutput, lpData, nCount, x, y, nWidth, nHeight); }
+_AFXWIN_INLINE UINT CDC::GetTextAlign() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextAlign(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetTextFace(int nCount, LPTSTR lpszFacename) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextFace(m_hAttribDC, nCount, lpszFacename); }
+_AFXWIN_INLINE int CDC::GetTextFace(CString& rString) const
+ { ASSERT(m_hAttribDC != NULL); int nResult = ::GetTextFace(m_hAttribDC,
+ 256, rString.GetBuffer(256)); rString.ReleaseBuffer();
+ return nResult; }
+_AFXWIN_INLINE BOOL CDC::GetTextMetrics(LPTEXTMETRIC lpMetrics) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextMetrics(m_hAttribDC, lpMetrics); }
+_AFXWIN_INLINE BOOL CDC::GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const
+ { ASSERT(m_hDC != NULL); return ::GetTextMetrics(m_hDC, lpMetrics); }
+_AFXWIN_INLINE int CDC::GetTextCharacterExtra() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextCharacterExtra(m_hAttribDC); }
+_AFXWIN_INLINE BOOL CDC::GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharWidth(m_hAttribDC, nFirstChar, nLastChar, lpBuffer); }
+_AFXWIN_INLINE BOOL CDC::GetOutputCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const
+ { ASSERT(m_hDC != NULL); return ::GetCharWidth(m_hDC, nFirstChar, nLastChar, lpBuffer); }
+_AFXWIN_INLINE CSize CDC::GetAspectRatioFilter() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetAspectRatioFilterEx(m_hAttribDC, &size));
+ return size;
+ }
+_AFXWIN_INLINE BOOL CDC::ScrollDC(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* pRgnUpdate, LPRECT lpRectUpdate)
+ { ASSERT(m_hDC != NULL); return ::ScrollDC(m_hDC, dx, dy, lpRectScroll,
+ lpRectClip, (HRGN)pRgnUpdate->GetSafeHandle(), lpRectUpdate); }
+
+// Printer Escape Functions
+_AFXWIN_INLINE int CDC::Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData)
+ { ASSERT(m_hDC != NULL); return ::Escape(m_hDC, nEscape, nCount, lpszInData, lpOutData);}
+
+// CDC 3.1 Specific functions
+#ifndef _MAC
+_AFXWIN_INLINE UINT CDC::SetBoundsRect(LPCRECT lpRectBounds, UINT flags)
+ { ASSERT(m_hDC != NULL); return ::SetBoundsRect(m_hDC, lpRectBounds, flags); }
+_AFXWIN_INLINE UINT CDC::GetBoundsRect(LPRECT lpRectBounds, UINT flags)
+ { ASSERT(m_hAttribDC != NULL); return ::GetBoundsRect(m_hAttribDC, lpRectBounds, flags); }
+#endif
+_AFXWIN_INLINE BOOL CDC::ResetDC(const DEVMODE* lpDevMode)
+ { ASSERT(m_hAttribDC != NULL); return ::ResetDC(m_hAttribDC, lpDevMode) != NULL; }
+_AFXWIN_INLINE UINT CDC::GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetOutlineTextMetrics(m_hAttribDC, cbData, lpotm); }
+_AFXWIN_INLINE BOOL CDC::GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharABCWidths(m_hAttribDC, nFirstChar, nLastChar, lpabc); }
+_AFXWIN_INLINE DWORD CDC::GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData,
+ DWORD cbData) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetFontData(m_hAttribDC, dwTable, dwOffset, lpData, cbData); }
+#ifndef _MAC
+_AFXWIN_INLINE int CDC::GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetKerningPairs(m_hAttribDC, nPairs, lpkrnpair); }
+_AFXWIN_INLINE DWORD CDC::GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm,
+ DWORD cbBuffer, LPVOID lpBuffer, const MAT2* lpmat2) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetGlyphOutline(m_hAttribDC, nChar, nFormat,
+ lpgm, cbBuffer, lpBuffer, lpmat2); }
+#endif
+
+// Document handling functions
+_AFXWIN_INLINE int CDC::StartDoc(LPDOCINFO lpDocInfo)
+ { ASSERT(m_hDC != NULL); return ::StartDoc(m_hDC, lpDocInfo); }
+_AFXWIN_INLINE int CDC::StartPage()
+ { ASSERT(m_hDC != NULL); return ::StartPage(m_hDC); }
+_AFXWIN_INLINE int CDC::EndPage()
+ { ASSERT(m_hDC != NULL); return ::EndPage(m_hDC); }
+_AFXWIN_INLINE int CDC::SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int))
+ { ASSERT(m_hDC != NULL); return ::SetAbortProc(m_hDC, (ABORTPROC)lpfn); }
+_AFXWIN_INLINE int CDC::AbortDoc()
+ { ASSERT(m_hDC != NULL); return ::AbortDoc(m_hDC); }
+_AFXWIN_INLINE int CDC::EndDoc()
+ { ASSERT(m_hDC != NULL); return ::EndDoc(m_hDC); }
+
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::MaskBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::MaskBlt(m_hDC, x, y, nWidth, nHeight, pSrcDC->GetSafeHdc(),
+ xSrc, ySrc, (HBITMAP)maskBitmap.m_hObject, xMask, yMask, dwRop); }
+_AFXWIN_INLINE BOOL CDC::PlgBlt(LPPOINT lpPoint, CDC* pSrcDC, int xSrc, int ySrc,
+ int nWidth, int nHeight, CBitmap& maskBitmap, int xMask, int yMask)
+ { ASSERT(m_hDC != NULL); return ::PlgBlt(m_hDC, lpPoint, pSrcDC->GetSafeHdc(), xSrc, ySrc, nWidth,
+ nHeight, (HBITMAP)maskBitmap.m_hObject, xMask, yMask); }
+_AFXWIN_INLINE BOOL CDC::SetPixelV(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixelV(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE BOOL CDC::SetPixelV(POINT point, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixelV(m_hDC, point.x, point.y, crColor); }
+_AFXWIN_INLINE BOOL CDC::AngleArc(int x, int y, int nRadius,
+ float fStartAngle, float fSweepAngle)
+ { ASSERT(m_hDC != NULL); return ::AngleArc(m_hDC, x, y, nRadius, fStartAngle, fSweepAngle); }
+_AFXWIN_INLINE BOOL CDC::ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ArcTo(lpRect->left, lpRect->top, lpRect->right,
+ lpRect->bottom, ptStart.x, ptStart.y, ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE int CDC::GetArcDirection() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetArcDirection(m_hAttribDC); }
+_AFXWIN_INLINE BOOL CDC::PolyPolyline(const POINT* lpPoints, const DWORD* lpPolyPoints,
+ int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyPolyline(m_hDC, lpPoints, lpPolyPoints, nCount); }
+_AFXWIN_INLINE BOOL CDC::GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetColorAdjustment(m_hAttribDC, lpColorAdjust); }
+_AFXWIN_INLINE CPen* CDC::GetCurrentPen() const
+ { ASSERT(m_hAttribDC != NULL); return CPen::FromHandle((HPEN)::GetCurrentObject(m_hAttribDC, OBJ_PEN)); }
+_AFXWIN_INLINE CBrush* CDC::GetCurrentBrush() const
+ { ASSERT(m_hAttribDC != NULL); return CBrush::FromHandle((HBRUSH)::GetCurrentObject(m_hAttribDC, OBJ_BRUSH)); }
+_AFXWIN_INLINE CPalette* CDC::GetCurrentPalette() const
+ { ASSERT(m_hAttribDC != NULL); return CPalette::FromHandle((HPALETTE)::GetCurrentObject(m_hAttribDC, OBJ_PAL)); }
+_AFXWIN_INLINE CFont* CDC::GetCurrentFont() const
+ { ASSERT(m_hAttribDC != NULL); return CFont::FromHandle((HFONT)::GetCurrentObject(m_hAttribDC, OBJ_FONT)); }
+_AFXWIN_INLINE CBitmap* CDC::GetCurrentBitmap() const
+ { ASSERT(m_hAttribDC != NULL); return CBitmap::FromHandle((HBITMAP)::GetCurrentObject(m_hAttribDC, OBJ_BITMAP)); }
+_AFXWIN_INLINE BOOL CDC::PolyBezier(const POINT* lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyBezier(m_hDC, lpPoints, nCount); }
+
+_AFXWIN_INLINE int CDC::DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData)
+ { ASSERT(m_hDC != NULL); return ::DrawEscape(m_hDC, nEscape, nInputSize, lpszInputData); }
+_AFXWIN_INLINE int CDC::Escape(int nEscape, int nInputSize, LPCSTR lpszInputData,
+ int nOutputSize, LPSTR lpszOutputData)
+ { ASSERT(m_hDC != NULL); return ::ExtEscape(m_hDC, nEscape, nInputSize, lpszInputData,
+ nOutputSize, lpszOutputData); }
+
+_AFXWIN_INLINE BOOL CDC::GetCharABCWidths(UINT nFirstChar, UINT nLastChar,
+ LPABCFLOAT lpABCF) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharABCWidthsFloat(m_hAttribDC, nFirstChar, nLastChar, lpABCF); }
+_AFXWIN_INLINE BOOL CDC::GetCharWidth(UINT nFirstChar, UINT nLastChar,
+ float* lpFloatBuffer) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharWidthFloat(m_hAttribDC, nFirstChar, nLastChar, lpFloatBuffer); }
+
+_AFXWIN_INLINE BOOL CDC::AbortPath()
+ { ASSERT(m_hDC != NULL); return ::AbortPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::BeginPath()
+ { ASSERT(m_hDC != NULL); return ::BeginPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::CloseFigure()
+ { ASSERT(m_hDC != NULL); return ::CloseFigure(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::EndPath()
+ { ASSERT(m_hDC != NULL); return ::EndPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::FillPath()
+ { ASSERT(m_hDC != NULL); return ::FillPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::FlattenPath()
+ { ASSERT(m_hDC != NULL); return ::FlattenPath(m_hDC); }
+_AFXWIN_INLINE float CDC::GetMiterLimit() const
+ { ASSERT(m_hDC != NULL); float fMiterLimit;
+ VERIFY(::GetMiterLimit(m_hDC, &fMiterLimit)); return fMiterLimit; }
+_AFXWIN_INLINE int CDC::GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const
+ { ASSERT(m_hDC != NULL); return ::GetPath(m_hDC, lpPoints, lpTypes, nCount); }
+_AFXWIN_INLINE BOOL CDC::SetMiterLimit(float fMiterLimit)
+ { ASSERT(m_hDC != NULL); return ::SetMiterLimit(m_hDC, fMiterLimit, NULL); }
+_AFXWIN_INLINE BOOL CDC::StrokeAndFillPath()
+ { ASSERT(m_hDC != NULL); return ::StrokeAndFillPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::StrokePath()
+ { ASSERT(m_hDC != NULL); return ::StrokePath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::WidenPath()
+ { ASSERT(m_hDC != NULL); return ::WidenPath(m_hDC); }
+
+_AFXWIN_INLINE BOOL CDC::AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData)
+ { ASSERT(m_hDC != NULL); return ::GdiComment(m_hDC, nDataSize, pCommentData); }
+_AFXWIN_INLINE BOOL CDC::PlayMetaFile(HENHMETAFILE hEnhMF, LPCRECT lpBounds)
+ { ASSERT(m_hDC != NULL); return ::PlayEnhMetaFile(m_hDC, hEnhMF, lpBounds); }
+#endif
+
+// CMenu
+_AFXWIN_INLINE CMenu::CMenu()
+ { m_hMenu = NULL; }
+_AFXWIN_INLINE CMenu::~CMenu()
+ { DestroyMenu(); }
+_AFXWIN_INLINE BOOL CMenu::CreateMenu()
+ { return Attach(::CreateMenu()); }
+_AFXWIN_INLINE BOOL CMenu::CreatePopupMenu()
+ { return Attach(::CreatePopupMenu()); }
+_AFXWIN_INLINE CMenu::operator HMENU() const
+ { ASSERT(this == NULL || m_hMenu == NULL || ::IsMenu(m_hMenu));
+ return this == NULL ? NULL : m_hMenu; }
+_AFXWIN_INLINE HMENU CMenu::GetSafeHmenu() const
+ { ASSERT(this == NULL || m_hMenu == NULL || ::IsMenu(m_hMenu));
+ return this == NULL ? NULL : m_hMenu; }
+_AFXWIN_INLINE BOOL CMenu::DeleteMenu(UINT nPosition, UINT nFlags)
+ { ASSERT(::IsMenu(m_hMenu)); return ::DeleteMenu(m_hMenu, nPosition, nFlags); }
+_AFXWIN_INLINE BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::AppendMenu(m_hMenu, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::AppendMenu(m_hMenu, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE UINT CMenu::CheckMenuItem(UINT nIDCheckItem, UINT nCheck)
+ { ASSERT(::IsMenu(m_hMenu)); return (UINT)::CheckMenuItem(m_hMenu, nIDCheckItem, nCheck); }
+_AFXWIN_INLINE UINT CMenu::EnableMenuItem(UINT nIDEnableItem, UINT nEnable)
+ { ASSERT(::IsMenu(m_hMenu)); return ::EnableMenuItem(m_hMenu, nIDEnableItem, nEnable); }
+_AFXWIN_INLINE UINT CMenu::GetMenuItemCount() const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuItemCount(m_hMenu); }
+_AFXWIN_INLINE UINT CMenu::GetMenuItemID(int nPos) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuItemID(m_hMenu, nPos); }
+_AFXWIN_INLINE UINT CMenu::GetMenuState(UINT nID, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuState(m_hMenu, nID, nFlags); }
+_AFXWIN_INLINE int CMenu::GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuString(m_hMenu, nIDItem, lpString, nMaxCount, nFlags); }
+_AFXWIN_INLINE int CMenu::GetMenuString(UINT nIDItem, CString& rString, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); int nResult = ::GetMenuString(m_hMenu, nIDItem,
+ rString.GetBuffer(256), 256, nFlags); rString.ReleaseBuffer();
+ return nResult; }
+_AFXWIN_INLINE CMenu* CMenu::GetSubMenu(int nPos) const
+ { ASSERT(::IsMenu(m_hMenu)); return CMenu::FromHandle(::GetSubMenu(m_hMenu, nPos)); }
+_AFXWIN_INLINE BOOL CMenu::InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::InsertMenu(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::InsertMenu(m_hMenu, nPosition, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::ModifyMenu(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::ModifyMenu(m_hMenu, nPosition, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::RemoveMenu(UINT nPosition, UINT nFlags)
+ { ASSERT(::IsMenu(m_hMenu)); return ::RemoveMenu(m_hMenu, nPosition, nFlags); }
+_AFXWIN_INLINE BOOL CMenu::SetMenuItemBitmaps(UINT nPosition, UINT nFlags,
+ const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked)
+ { ASSERT(::IsMenu(m_hMenu)); return ::SetMenuItemBitmaps(m_hMenu, nPosition, nFlags,
+ (HBITMAP)pBmpUnchecked->GetSafeHandle(),
+ (HBITMAP)pBmpChecked->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenu(LPCTSTR lpszResourceName)
+ { return Attach(::LoadMenu(AfxFindResourceHandle(lpszResourceName,
+ RT_MENU), lpszResourceName)); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenu(UINT nIDResource)
+ { return Attach(::LoadMenu(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDResource), RT_MENU), MAKEINTRESOURCE(nIDResource))); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenuIndirect(const void* lpMenuTemplate)
+ { return Attach(::LoadMenuIndirect(lpMenuTemplate)); }
+// Win4
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CMenu::SetMenuContextHelpId(DWORD dwContextHelpId)
+ { return ::SetMenuContextHelpId(m_hMenu, dwContextHelpId); }
+_AFXWIN_INLINE DWORD CMenu::GetMenuContextHelpId() const
+ { return ::GetMenuContextHelpId(m_hMenu); }
+_AFXWIN_INLINE BOOL CMenu::CheckMenuRadioItem(UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags)
+ { return ::CheckMenuRadioItem(m_hMenu, nIDFirst, nIDLast, nIDItem, nFlags); }
+#endif
+
+// CCmdUI
+_AFXWIN_INLINE void CCmdUI::ContinueRouting()
+ { m_bContinueRouting = TRUE; }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXWIN_INLINE
diff --git a/public/sdk/inc/mfc40/afxwin2.inl b/public/sdk/inc/mfc40/afxwin2.inl
new file mode 100644
index 000000000..c5a9e7873
--- /dev/null
+++ b/public/sdk/inc/mfc40/afxwin2.inl
@@ -0,0 +1,1041 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXWIN.H (part 2)
+
+#ifdef _AFXWIN_INLINE
+
+// CWnd
+_AFXWIN_INLINE CWnd::operator HWND() const
+ { return this == NULL ? NULL : m_hWnd; }
+_AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const
+ { return this == NULL ? NULL : m_hWnd; }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE DWORD CWnd::GetStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)GetWindowLong(m_hWnd, GWL_STYLE); }
+_AFXWIN_INLINE DWORD CWnd::GetExStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)GetWindowLong(m_hWnd, GWL_EXSTYLE); }
+_AFXWIN_INLINE BOOL CWnd::ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ModifyStyle(m_hWnd, dwRemove, dwAdd, nFlags); }
+_AFXWIN_INLINE BOOL CWnd::ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ModifyStyleEx(m_hWnd, dwRemove, dwAdd, nFlags); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::GetOwner() const
+ { return m_hWndOwner != NULL ? CWnd::FromHandle(m_hWndOwner) : GetParent(); }
+_AFXWIN_INLINE void CWnd::SetOwner(CWnd* pOwnerWnd)
+ { m_hWndOwner = pOwnerWnd != NULL ? pOwnerWnd->m_hWnd : NULL; }
+_AFXWIN_INLINE LRESULT CWnd::SendMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, message, wParam, lParam); }
+_AFXWIN_INLINE BOOL CWnd::PostMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::PostMessage(m_hWnd, message, wParam, lParam); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::SetWindowText(LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetWindowText(m_hWnd, lpszString); }
+_AFXWIN_INLINE int CWnd::GetWindowText(LPTSTR lpszString, int nMaxCount) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowText(m_hWnd, lpszString, nMaxCount); }
+_AFXWIN_INLINE int CWnd::GetWindowTextLength() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowTextLength(m_hWnd); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::SetFont(CFont* pFont, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_SETFONT, (WPARAM)pFont->GetSafeHandle(), bRedraw); }
+_AFXWIN_INLINE CFont* CWnd::GetFont() const
+ { ASSERT(::IsWindow(m_hWnd)); return CFont::FromHandle(
+ (HFONT)::SendMessage(m_hWnd, WM_GETFONT, 0, 0)); }
+_AFXWIN_INLINE CMenu* CWnd::GetMenu() const
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle(::GetMenu(m_hWnd)); }
+_AFXWIN_INLINE BOOL CWnd::SetMenu(CMenu* pMenu)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetMenu(m_hWnd, pMenu->GetSafeHmenu()); }
+_AFXWIN_INLINE void CWnd::DrawMenuBar()
+ { ASSERT(::IsWindow(m_hWnd)); ::DrawMenuBar(m_hWnd); }
+_AFXWIN_INLINE CMenu* CWnd::GetSystemMenu(BOOL bRevert) const
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle(::GetSystemMenu(m_hWnd, bRevert)); }
+_AFXWIN_INLINE BOOL CWnd::HiliteMenuItem(CMenu* pMenu, UINT nIDHiliteItem, UINT nHilite)
+ { ASSERT(::IsWindow(m_hWnd)); return ::HiliteMenuItem(m_hWnd, pMenu->m_hMenu, nIDHiliteItem, nHilite); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE int CWnd::GetDlgCtrlID() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgCtrlID(m_hWnd); }
+_AFXWIN_INLINE int CWnd::SetDlgCtrlID(int nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SetWindowLong(m_hWnd, GWL_ID, nID); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsIconic() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsIconic(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::IsZoomed() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsZoomed(m_hWnd); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint)
+ { ASSERT(::IsWindow(m_hWnd)); ::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::MoveWindow(LPCRECT lpRect, BOOL bRepaint)
+ { MoveWindow(lpRect->left, lpRect->top, lpRect->right - lpRect->left,
+ lpRect->bottom - lpRect->top, bRepaint); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetWindowPos(m_hWnd, pWndInsertAfter->GetSafeHwnd(),
+ x, y, cx, cy, nFlags); }
+#endif //_AFX_NO_OCC_SUPPORT
+#ifndef _MAC
+_AFXWIN_INLINE UINT CWnd::ArrangeIconicWindows()
+ { ASSERT(::IsWindow(m_hWnd)); return ::ArrangeIconicWindows(m_hWnd); }
+#endif
+_AFXWIN_INLINE void CWnd::BringWindowToTop()
+ { ASSERT(::IsWindow(m_hWnd)); ::BringWindowToTop(m_hWnd); }
+_AFXWIN_INLINE void CWnd::GetWindowRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetWindowRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::GetClientRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetClientRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::MapWindowPoints(CWnd* pwndTo, LPPOINT lpPoint, UINT nCount) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapWindowPoints(m_hWnd, pwndTo->GetSafeHwnd(), lpPoint, nCount); }
+_AFXWIN_INLINE void CWnd::MapWindowPoints(CWnd* pwndTo, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapWindowPoints(m_hWnd, pwndTo->GetSafeHwnd(), (LPPOINT)lpRect, 2); }
+_AFXWIN_INLINE void CWnd::ClientToScreen(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ClientToScreen(m_hWnd, lpPoint); }
+_AFXWIN_INLINE void CWnd::ClientToScreen(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ClientToScreen(m_hWnd, (LPPOINT)lpRect);
+ ::ClientToScreen(m_hWnd, ((LPPOINT)lpRect)+1); }
+_AFXWIN_INLINE void CWnd::ScreenToClient(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ScreenToClient(m_hWnd, lpPoint); }
+_AFXWIN_INLINE void CWnd::ScreenToClient(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ScreenToClient(m_hWnd, (LPPOINT)lpRect);
+ ::ScreenToClient(m_hWnd, ((LPPOINT)lpRect)+1); }
+_AFXWIN_INLINE CDC* CWnd::BeginPaint(LPPAINTSTRUCT lpPaint)
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::BeginPaint(m_hWnd, lpPaint)); }
+_AFXWIN_INLINE void CWnd::EndPaint(LPPAINTSTRUCT lpPaint)
+ { ASSERT(::IsWindow(m_hWnd)); ::EndPaint(m_hWnd, lpPaint); }
+_AFXWIN_INLINE CDC* CWnd::GetDC()
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDC(m_hWnd)); }
+_AFXWIN_INLINE CDC* CWnd::GetWindowDC()
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetWindowDC(m_hWnd)); }
+_AFXWIN_INLINE int CWnd::ReleaseDC(CDC* pDC)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ReleaseDC(m_hWnd, pDC->m_hDC); }
+_AFXWIN_INLINE void CWnd::UpdateWindow()
+ { ASSERT(::IsWindow(m_hWnd)); ::UpdateWindow(m_hWnd); }
+_AFXWIN_INLINE void CWnd::SetRedraw(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_SETREDRAW, bRedraw, 0); }
+_AFXWIN_INLINE BOOL CWnd::GetUpdateRect(LPRECT lpRect, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetUpdateRect(m_hWnd, lpRect, bErase); }
+_AFXWIN_INLINE int CWnd::GetUpdateRgn(CRgn* pRgn, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetUpdateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle(), bErase); }
+_AFXWIN_INLINE void CWnd::Invalidate(BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRect(m_hWnd, NULL, bErase); }
+_AFXWIN_INLINE void CWnd::InvalidateRect(LPCRECT lpRect, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRect(m_hWnd, lpRect, bErase); }
+_AFXWIN_INLINE void CWnd::InvalidateRgn(CRgn* pRgn, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle(), bErase); }
+_AFXWIN_INLINE void CWnd::ValidateRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::ValidateRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::ValidateRgn(CRgn* pRgn)
+ { ASSERT(::IsWindow(m_hWnd)); ::ValidateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle()); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::ShowWindow(int nCmdShow)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ShowWindow(m_hWnd, nCmdShow); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsWindowVisible() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsWindowVisible(m_hWnd); }
+_AFXWIN_INLINE void CWnd::ShowOwnedPopups(BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowOwnedPopups(m_hWnd, bShow); }
+_AFXWIN_INLINE void CWnd::SendMessageToDescendants(
+ UINT message, WPARAM wParam, LPARAM lParam, BOOL bDeep, BOOL bOnlyPerm)
+ { ASSERT(::IsWindow(m_hWnd)); CWnd::SendMessageToDescendants(m_hWnd, message, wParam, lParam, bDeep,
+ bOnlyPerm); }
+_AFXWIN_INLINE CWnd* CWnd::GetDescendantWindow(int nID, BOOL bOnlyPerm) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::GetDescendantWindow(m_hWnd, nID, bOnlyPerm); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsDialogMessage(LPMSG lpMsg)
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsDialogMessage(m_hWnd, lpMsg); }
+#endif
+
+_AFXWIN_INLINE CDC* CWnd::GetDCEx(CRgn* prgnClip, DWORD flags)
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDCEx(m_hWnd, (HRGN)prgnClip->GetSafeHandle(), flags)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::LockWindowUpdate()
+ { ASSERT(::IsWindow(m_hWnd)); return ::LockWindowUpdate(m_hWnd); }
+_AFXWIN_INLINE void CWnd::UnlockWindowUpdate()
+ { ASSERT(::IsWindow(m_hWnd)); ::LockWindowUpdate(NULL); }
+#endif
+_AFXWIN_INLINE BOOL CWnd::RedrawWindow(LPCRECT lpRectUpdate, CRgn* prgnUpdate,
+ UINT flags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::RedrawWindow(m_hWnd, lpRectUpdate, (HRGN)prgnUpdate->GetSafeHandle(), flags); }
+_AFXWIN_INLINE BOOL CWnd::EnableScrollBar(int nSBFlags, UINT nArrowFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::EnableScrollBar(m_hWnd, nSBFlags, nArrowFlags); }
+
+_AFXWIN_INLINE UINT CWnd::SetTimer(UINT nIDEvent, UINT nElapse,
+ void (CALLBACK* lpfnTimer)(HWND, UINT, UINT, DWORD))
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetTimer(m_hWnd, nIDEvent, nElapse,
+ (TIMERPROC)lpfnTimer); }
+_AFXWIN_INLINE BOOL CWnd::KillTimer(int nIDEvent)
+ { ASSERT(::IsWindow(m_hWnd)); return ::KillTimer(m_hWnd, nIDEvent); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsWindowEnabled() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsWindowEnabled(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::EnableWindow(BOOL bEnable)
+ { ASSERT(::IsWindow(m_hWnd)); return ::EnableWindow(m_hWnd, bEnable); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetActiveWindow()
+ { return CWnd::FromHandle(::GetActiveWindow()); }
+_AFXWIN_INLINE CWnd* CWnd::SetActiveWindow()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetActiveWindow(m_hWnd)); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetCapture()
+ { return CWnd::FromHandle(::GetCapture()); }
+_AFXWIN_INLINE CWnd* CWnd::SetCapture()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetCapture(m_hWnd)); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetFocus()
+ { return CWnd::FromHandle(::GetFocus()); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::SetFocus()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetFocus(m_hWnd)); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetDesktopWindow()
+ { return CWnd::FromHandle(::GetDesktopWindow()); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::CheckDlgButton(int nIDButton, UINT nCheck)
+ { ASSERT(::IsWindow(m_hWnd)); ::CheckDlgButton(m_hWnd, nIDButton, nCheck); }
+_AFXWIN_INLINE void CWnd::CheckRadioButton(int nIDFirstButton, int nIDLastButton,
+ int nIDCheckButton)
+ { ASSERT(::IsWindow(m_hWnd)); ::CheckRadioButton(m_hWnd, nIDFirstButton, nIDLastButton, nIDCheckButton); }
+#endif //_AFX_NO_OCC_SUPPORT
+#ifndef _MAC
+_AFXWIN_INLINE int CWnd::DlgDirList(LPTSTR lpPathSpec, int nIDListBox,
+ int nIDStaticPath, UINT nFileType)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirList(m_hWnd, lpPathSpec, nIDListBox,
+ nIDStaticPath, nFileType); }
+_AFXWIN_INLINE int CWnd::DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox,
+ int nIDStaticPath, UINT nFileType)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirListComboBox(m_hWnd, lpPathSpec,
+ nIDComboBox, nIDStaticPath, nFileType); }
+_AFXWIN_INLINE BOOL CWnd::DlgDirSelect(LPTSTR lpString, int nIDListBox)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirSelectEx(m_hWnd, lpString, _MAX_PATH, nIDListBox); }
+_AFXWIN_INLINE BOOL CWnd::DlgDirSelectComboBox(LPTSTR lpString, int nIDComboBox)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirSelectComboBoxEx(m_hWnd, lpString, _MAX_PATH, nIDComboBox);}
+#endif
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::GetDlgItem(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID)); }
+_AFXWIN_INLINE void CWnd::GetDlgItem(int nID, HWND* phWnd) const
+ { ASSERT(::IsWindow(m_hWnd)); ASSERT(phWnd != NULL); *phWnd = ::GetDlgItem(m_hWnd, nID); }
+_AFXWIN_INLINE UINT CWnd::GetDlgItemInt(int nID, BOOL* lpTrans,
+ BOOL bSigned) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgItemInt(m_hWnd, nID, lpTrans, bSigned);}
+_AFXWIN_INLINE int CWnd::GetDlgItemText(int nID, LPTSTR lpStr, int nMaxCount) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgItemText(m_hWnd, nID, lpStr, nMaxCount);}
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::GetNextDlgGroupItem(CWnd* pWndCtl, BOOL bPrevious) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextDlgGroupItem(m_hWnd,
+ pWndCtl->GetSafeHwnd(), bPrevious)); }
+_AFXWIN_INLINE CWnd* CWnd::GetNextDlgTabItem(CWnd* pWndCtl, BOOL bPrevious) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextDlgTabItem(m_hWnd,
+ pWndCtl->GetSafeHwnd(), bPrevious)); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE UINT CWnd::IsDlgButtonChecked(int nIDButton) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsDlgButtonChecked(m_hWnd, nIDButton); }
+_AFXWIN_INLINE LPARAM CWnd::SendDlgItemMessage(int nID, UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendDlgItemMessage(m_hWnd, nID, message, wParam, lParam); }
+_AFXWIN_INLINE void CWnd::SetDlgItemInt(int nID, UINT nValue, BOOL bSigned)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetDlgItemInt(m_hWnd, nID, nValue, bSigned); }
+_AFXWIN_INLINE void CWnd::SetDlgItemText(int nID, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetDlgItemText(m_hWnd, nID, lpszString); }
+_AFXWIN_INLINE int CWnd::ScrollWindowEx(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ScrollWindowEx(m_hWnd, dx, dy, lpRectScroll, lpRectClip,
+ (HRGN)prgnUpdate->GetSafeHandle(), lpRectUpdate, flags); }
+#endif //_AFX_NO_OCC_SUPPORT
+
+_AFXWIN_INLINE void CWnd::ShowScrollBar(UINT nBar, BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowScrollBar(m_hWnd, nBar, bShow); }
+_AFXWIN_INLINE CWnd* CWnd::ChildWindowFromPoint(POINT point) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::ChildWindowFromPoint(m_hWnd, point)); }
+#ifndef _MAC
+_AFXWIN_INLINE CWnd* CWnd::ChildWindowFromPoint(POINT point, UINT nFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::ChildWindowFromPointEx(m_hWnd, point, nFlags)); }
+#endif
+_AFXWIN_INLINE CWnd* PASCAL CWnd::FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName)
+ { return CWnd::FromHandle(::FindWindow(lpszClassName, lpszWindowName)); }
+_AFXWIN_INLINE CWnd* CWnd::GetNextWindow(UINT nFlag) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextWindow(m_hWnd, nFlag)); }
+_AFXWIN_INLINE CWnd* CWnd::GetTopWindow() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetTopWindow(m_hWnd)); }
+_AFXWIN_INLINE CWnd* CWnd::GetWindow(UINT nCmd) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetWindow(m_hWnd, nCmd)); }
+_AFXWIN_INLINE CWnd* CWnd::GetLastActivePopup() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetLastActivePopup(m_hWnd)); }
+_AFXWIN_INLINE BOOL CWnd::IsChild(const CWnd* pWnd) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsChild(m_hWnd, pWnd->GetSafeHwnd()); }
+_AFXWIN_INLINE CWnd* CWnd::GetParent() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetParent(m_hWnd)); }
+_AFXWIN_INLINE CWnd* CWnd::SetParent(CWnd* pWndNewParent)
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetParent(m_hWnd,
+ pWndNewParent->GetSafeHwnd())); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::WindowFromPoint(POINT point)
+ { return CWnd::FromHandle(::WindowFromPoint(point)); }
+_AFXWIN_INLINE BOOL CWnd::FlashWindow(BOOL bInvert)
+ { ASSERT(::IsWindow(m_hWnd)); return ::FlashWindow(m_hWnd, bInvert); }
+_AFXWIN_INLINE BOOL CWnd::ChangeClipboardChain(HWND hWndNext)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ChangeClipboardChain(m_hWnd, hWndNext); }
+_AFXWIN_INLINE HWND CWnd::SetClipboardViewer()
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetClipboardViewer(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::OpenClipboard()
+ { ASSERT(::IsWindow(m_hWnd)); return ::OpenClipboard(m_hWnd); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetOpenClipboardWindow()
+ { return CWnd::FromHandle(::GetOpenClipboardWindow()); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetClipboardOwner()
+ { return CWnd::FromHandle(::GetClipboardOwner()); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetClipboardViewer()
+ { return CWnd::FromHandle(::GetClipboardViewer()); }
+_AFXWIN_INLINE void CWnd::CreateCaret(CBitmap* pBitmap)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)pBitmap->GetSafeHandle(), 0, 0); }
+_AFXWIN_INLINE void CWnd::CreateSolidCaret(int nWidth, int nHeight)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)0, nWidth, nHeight); }
+_AFXWIN_INLINE void CWnd::CreateGrayCaret(int nWidth, int nHeight)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)1, nWidth, nHeight); }
+_AFXWIN_INLINE CPoint PASCAL CWnd::GetCaretPos()
+ { CPoint point; ::GetCaretPos((LPPOINT)&point); return point; }
+_AFXWIN_INLINE void PASCAL CWnd::SetCaretPos(POINT point)
+ { ::SetCaretPos(point.x, point.y); }
+_AFXWIN_INLINE void CWnd::HideCaret()
+ { ASSERT(::IsWindow(m_hWnd)); ::HideCaret(m_hWnd); }
+_AFXWIN_INLINE void CWnd::ShowCaret()
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowCaret(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::SetForegroundWindow()
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetForegroundWindow(m_hWnd); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetForegroundWindow()
+ { return CWnd::FromHandle(::GetForegroundWindow()); }
+
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::SendNotifyMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendNotifyMessage(m_hWnd, message, wParam, lParam); }
+#endif
+
+// Win4
+_AFXWIN_INLINE HICON CWnd::SetIcon(HICON hIcon, BOOL bBigIcon)
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, WM_SETICON, bBigIcon, (LPARAM)hIcon); }
+_AFXWIN_INLINE HICON CWnd::GetIcon(BOOL bBigIcon) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, WM_GETICON, bBigIcon, 0); }
+_AFXWIN_INLINE void CWnd::Print(CDC* pDC, DWORD dwFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PRINT, (WPARAM)pDC->GetSafeHdc(), dwFlags); }
+_AFXWIN_INLINE void CWnd::PrintClient(CDC* pDC, DWORD dwFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PRINTCLIENT, (WPARAM)pDC->GetSafeHdc(), dwFlags); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::SetWindowContextHelpId(DWORD dwContextHelpId)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetWindowContextHelpId(m_hWnd, dwContextHelpId); }
+_AFXWIN_INLINE DWORD CWnd::GetWindowContextHelpId() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowContextHelpId(m_hWnd); }
+#endif
+
+
+// Default message map implementations
+_AFXWIN_INLINE void CWnd::OnActivateApp(BOOL, HTASK)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnActivate(UINT, CWnd*, BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCancelMode()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChildActivate()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnClose()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnContextMenu(CWnd*, CPoint)
+ { Default(); }
+_AFXWIN_INLINE int CWnd::OnCreate(LPCREATESTRUCT)
+ { return (int)Default(); }
+_AFXWIN_INLINE void CWnd::OnDestroy()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEnable(BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEndSession(BOOL)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnEraseBkgnd(CDC*)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnGetMinMaxInfo(MINMAXINFO*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnIconEraseBkgnd(CDC*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKillFocus(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE LRESULT CWnd::OnMenuChar(UINT, UINT, CMenu*)
+ { return Default(); }
+_AFXWIN_INLINE void CWnd::OnMenuSelect(UINT, UINT, HMENU)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMove(int, int)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaint()
+ { Default(); }
+_AFXWIN_INLINE HCURSOR CWnd::OnQueryDragIcon()
+ { return (HCURSOR)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryEndSession()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryNewPalette()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryOpen()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnSetCursor(CWnd*, UINT, UINT)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnSetFocus(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnShowWindow(BOOL, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSize(UINT, int, int)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTCard(UINT, DWORD)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnWindowPosChanging(WINDOWPOS*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnWindowPosChanged(WINDOWPOS*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDropFiles(HDROP)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaletteIsChanging(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnNcActivate(BOOL)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnNcCreate(LPCREATESTRUCT)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE UINT CWnd::OnNcHitTest(CPoint)
+ { return (UINT)Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMouseMove(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcPaint()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysCommand(UINT, LPARAM)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysDeadChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysKeyDown(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysKeyUp(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCompacting(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnFontChange()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaletteChanged(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSpoolerStatus(UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTimeChange()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDeadChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKeyDown(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKeyUp(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE int CWnd::OnMouseActivate(CWnd*, UINT, UINT)
+ { return (int)Default(); }
+_AFXWIN_INLINE void CWnd::OnMouseMove(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTimer(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnInitMenu(CMenu*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnInitMenuPopup(CMenu*, UINT, BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnAskCbFormatName(UINT, LPTSTR)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChangeCbChain(HWND, HWND)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDestroyClipboard()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDrawClipboard()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnHScrollClipboard(CWnd*, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaintClipboard(CWnd*, HGLOBAL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRenderAllFormats()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRenderFormat(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSizeClipboard(CWnd*, HGLOBAL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnVScrollClipboard(CWnd*, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE UINT CWnd::OnGetDlgCode()
+ { return (UINT)Default(); }
+_AFXWIN_INLINE void CWnd::OnMDIActivate(BOOL, CWnd*, CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEnterMenuLoop(BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnExitMenuLoop(BOOL)
+ { Default(); }
+// Win4 support
+_AFXWIN_INLINE void CWnd::OnStyleChanged(int, LPSTYLESTRUCT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnStyleChanging(int, LPSTYLESTRUCT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSizing(UINT, LPRECT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMoving(UINT, LPRECT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCaptureChanged(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnDeviceChange(UINT, DWORD)
+ { return (BOOL)Default(); }
+
+// CWnd dialog data support
+_AFXWIN_INLINE void CWnd::DoDataExchange(CDataExchange*)
+ { } // default does nothing
+
+// CWnd modality support
+_AFXWIN_INLINE void CWnd::BeginModalState()
+ { ::EnableWindow(m_hWnd, FALSE); }
+_AFXWIN_INLINE void CWnd::EndModalState()
+ { ::EnableWindow(m_hWnd, TRUE); }
+
+// CFrameWnd
+_AFXWIN_INLINE void CFrameWnd::DelayUpdateFrameTitle()
+ { m_nIdleFlags |= idleTitle; }
+_AFXWIN_INLINE void CFrameWnd::DelayRecalcLayout(BOOL bNotify)
+ { m_nIdleFlags |= (idleLayout | (bNotify ? idleNotify : 0)); };
+_AFXWIN_INLINE BOOL CFrameWnd::InModalState() const
+ { return m_cModalStack != 0; }
+_AFXWIN_INLINE void CFrameWnd::AddControlBar(CControlBar *pBar)
+ { m_listControlBars.AddTail(pBar); }
+
+// CDialog
+_AFXWIN_INLINE BOOL CDialog::Create(UINT nIDTemplate, CWnd* pParentWnd)
+ { return Create(MAKEINTRESOURCE(nIDTemplate), pParentWnd); }
+_AFXWIN_INLINE void CDialog::MapDialogRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapDialogRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CDialog::SetHelpID(UINT nIDR)
+ { m_nIDHelp = nIDR; }
+_AFXWIN_INLINE void CDialog::NextDlgCtrl() const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, 0, 0); }
+_AFXWIN_INLINE void CDialog::PrevDlgCtrl() const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, 1, 0); }
+_AFXWIN_INLINE void CDialog::GotoDlgCtrl(CWnd* pWndCtrl)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, (WPARAM)pWndCtrl->m_hWnd, 1L); }
+_AFXWIN_INLINE void CDialog::SetDefID(UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, DM_SETDEFID, nID, 0); }
+_AFXWIN_INLINE DWORD CDialog::GetDefID() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, DM_GETDEFID, 0, 0); }
+
+// Window control functions
+_AFXWIN_INLINE CStatic::CStatic()
+ { }
+_AFXWIN_INLINE HICON CStatic::SetIcon(HICON hIcon)
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, STM_SETICON, (WPARAM)hIcon, 0L); }
+_AFXWIN_INLINE HICON CStatic::GetIcon() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, STM_GETICON, 0, 0L); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE HENHMETAFILE CStatic::SetEnhMetaFile(HENHMETAFILE hMetaFile)
+ { ASSERT(::IsWindow(m_hWnd)); return (HENHMETAFILE)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_ENHMETAFILE, (LPARAM)hMetaFile); }
+_AFXWIN_INLINE HENHMETAFILE CStatic::GetEnhMetaFile() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HENHMETAFILE)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_ENHMETAFILE, 0L); }
+_AFXWIN_INLINE HBITMAP CStatic::SetBitmap(HBITMAP hBitmap)
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); }
+_AFXWIN_INLINE HBITMAP CStatic::GetBitmap() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_BITMAP, 0L); }
+_AFXWIN_INLINE HCURSOR CStatic::SetCursor(HCURSOR hCursor)
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_CURSOR, (LPARAM)hCursor); }
+_AFXWIN_INLINE HCURSOR CStatic::GetCursor()
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_CURSOR, 0L); }
+#endif
+
+_AFXWIN_INLINE CButton::CButton()
+ { }
+_AFXWIN_INLINE UINT CButton::GetState() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, BM_GETSTATE, 0, 0); }
+_AFXWIN_INLINE void CButton::SetState(BOOL bHighlight)
+ { ::SendMessage(m_hWnd, BM_SETSTATE, bHighlight, 0); }
+_AFXWIN_INLINE int CButton::GetCheck() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, BM_GETCHECK, 0, 0); }
+_AFXWIN_INLINE void CButton::SetCheck(int nCheck)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETCHECK, nCheck, 0); }
+_AFXWIN_INLINE UINT CButton::GetButtonStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)GetWindowLong(m_hWnd, GWL_STYLE) & 0xff; }
+_AFXWIN_INLINE void CButton::SetButtonStyle(UINT nStyle, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETSTYLE, nStyle, (LPARAM)bRedraw); }
+// Win4
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE HICON CButton::SetIcon(HICON hIcon)
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon); }
+_AFXWIN_INLINE HICON CButton::GetIcon() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_ICON, 0L); }
+_AFXWIN_INLINE HBITMAP CButton::SetBitmap(HBITMAP hBitmap)
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); }
+_AFXWIN_INLINE HBITMAP CButton::GetBitmap() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_BITMAP, 0L); }
+_AFXWIN_INLINE HCURSOR CButton::SetCursor(HCURSOR hCursor)
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_CURSOR, (LPARAM)hCursor); }
+_AFXWIN_INLINE HCURSOR CButton::GetCursor()
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_CURSOR, 0L); }
+#endif
+
+_AFXWIN_INLINE CListBox::CListBox()
+ { }
+_AFXWIN_INLINE int CListBox::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0); }
+_AFXWIN_INLINE int CListBox::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0); }
+_AFXWIN_INLINE int CListBox::SetCurSel(int nSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETCURSEL, nSelect, 0); }
+_AFXWIN_INLINE int CListBox::GetHorizontalExtent() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETHORIZONTALEXTENT,
+ 0, 0); }
+_AFXWIN_INLINE void CListBox::SetHorizontalExtent(int cxExtent)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETHORIZONTALEXTENT, cxExtent, 0); }
+_AFXWIN_INLINE int CListBox::GetSelCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSELCOUNT, 0, 0); }
+_AFXWIN_INLINE int CListBox::GetSelItems(int nMaxItems, LPINT rgIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSELITEMS, nMaxItems, (LPARAM)rgIndex); }
+_AFXWIN_INLINE int CListBox::GetTopIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTOPINDEX, 0, 0); }
+_AFXWIN_INLINE int CListBox::SetTopIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETTOPINDEX, nIndex, 0);}
+_AFXWIN_INLINE DWORD CListBox::GetItemData(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetItemData(int nIndex, DWORD dwItemData)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETITEMDATA, nIndex, (LPARAM)dwItemData); }
+_AFXWIN_INLINE void* CListBox::GetItemDataPtr(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (LPVOID)::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetItemDataPtr(int nIndex, void* pData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItemData(nIndex, (DWORD)(LPVOID)pData); }
+_AFXWIN_INLINE int CListBox::GetItemRect(int nIndex, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETITEMRECT, nIndex, (LPARAM)lpRect); }
+_AFXWIN_INLINE int CListBox::GetSel(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSEL, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetSel(int nIndex, BOOL bSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETSEL, bSelect, nIndex); }
+_AFXWIN_INLINE int CListBox::GetText(int nIndex, LPTSTR lpszBuffer) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTEXT, nIndex, (LPARAM)lpszBuffer); }
+_AFXWIN_INLINE int CListBox::GetTextLen(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTEXTLEN, nIndex, 0); }
+_AFXWIN_INLINE void CListBox::SetColumnWidth(int cxWidth)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETCOLUMNWIDTH, cxWidth, 0); }
+_AFXWIN_INLINE BOOL CListBox::SetTabStops(int nTabStops, LPINT rgTabStops)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, nTabStops, (LPARAM)rgTabStops); }
+_AFXWIN_INLINE void CListBox::SetTabStops()
+ { ASSERT(::IsWindow(m_hWnd)); VERIFY(::SendMessage(m_hWnd, LB_SETTABSTOPS, 0, 0)); }
+_AFXWIN_INLINE BOOL CListBox::SetTabStops(const int& cxEachStop)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, 1, (LPARAM)(LPINT)&cxEachStop); }
+_AFXWIN_INLINE int CListBox::SetItemHeight(int nIndex, UINT cyItemHeight)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0)); }
+_AFXWIN_INLINE int CListBox::GetItemHeight(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETITEMHEIGHT, nIndex, 0L); }
+_AFXWIN_INLINE int CListBox::FindStringExact(int nIndexStart, LPCTSTR lpszFind) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind); }
+_AFXWIN_INLINE int CListBox::GetCaretIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCARETINDEX, 0, 0L); }
+_AFXWIN_INLINE int CListBox::SetCaretIndex(int nIndex, BOOL bScroll)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETCARETINDEX, nIndex, MAKELONG(bScroll, 0)); }
+_AFXWIN_INLINE int CListBox::AddString(LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_ADDSTRING, 0, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::DeleteString(UINT nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_DELETESTRING, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::InsertString(int nIndex, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_INSERTSTRING, nIndex, (LPARAM)lpszItem); }
+_AFXWIN_INLINE void CListBox::ResetContent()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_RESETCONTENT, 0, 0); }
+_AFXWIN_INLINE int CListBox::Dir(UINT attr, LPCTSTR lpszWildCard)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_DIR, attr, (LPARAM)lpszWildCard); }
+_AFXWIN_INLINE int CListBox::FindString(int nStartAfter, LPCTSTR lpszItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_FINDSTRING,
+ nStartAfter, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::SelectString(int nStartAfter, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SELECTSTRING,
+ nStartAfter, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem)
+ { ASSERT(::IsWindow(m_hWnd)); return bSelect ?
+ (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nFirstItem, nLastItem) :
+ (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nLastItem, nFirstItem); }
+_AFXWIN_INLINE void CListBox::SetAnchorIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETANCHORINDEX, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::GetAnchorIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETANCHORINDEX, 0, 0); }
+_AFXWIN_INLINE LCID CListBox::GetLocale() const
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, LB_GETLOCALE, 0, 0); }
+_AFXWIN_INLINE LCID CListBox::SetLocale(LCID nNewLocale)
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, LB_SETLOCALE, (WPARAM)nNewLocale, 0); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE int CListBox::InitStorage(int nItems, UINT nBytes)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_INITSTORAGE, (WPARAM)nItems, nBytes); }
+#endif
+
+_AFXWIN_INLINE CCheckListBox::CCheckListBox()
+ { m_cyText = 0; m_nStyle = 0; }
+_AFXWIN_INLINE UINT CCheckListBox::GetCheckStyle()
+ { return m_nStyle; }
+
+_AFXWIN_INLINE CComboBox::CComboBox()
+ { }
+_AFXWIN_INLINE int CComboBox::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETCOUNT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetCurSel(int nSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETCURSEL, nSelect, 0); }
+_AFXWIN_INLINE DWORD CComboBox::GetEditSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, CB_GETEDITSEL, 0, 0); }
+_AFXWIN_INLINE BOOL CComboBox::LimitText(int nMaxChars)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_LIMITTEXT, nMaxChars, 0); }
+_AFXWIN_INLINE BOOL CComboBox::SetEditSel(int nStartChar, int nEndChar)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_SETEDITSEL, 0, MAKELONG(nStartChar, nEndChar)); }
+_AFXWIN_INLINE DWORD CComboBox::GetItemData(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, CB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CComboBox::SetItemData(int nIndex, DWORD dwItemData)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETITEMDATA, nIndex, (LPARAM)dwItemData); }
+_AFXWIN_INLINE void* CComboBox::GetItemDataPtr(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (LPVOID)GetItemData(nIndex); }
+_AFXWIN_INLINE int CComboBox::SetItemDataPtr(int nIndex, void* pData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItemData(nIndex, (DWORD)(LPVOID)pData); }
+_AFXWIN_INLINE int CComboBox::GetLBText(int nIndex, LPTSTR lpszText) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETLBTEXT, nIndex, (LPARAM)lpszText); }
+_AFXWIN_INLINE int CComboBox::GetLBTextLen(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETLBTEXTLEN, nIndex, 0); }
+_AFXWIN_INLINE void CComboBox::ShowDropDown(BOOL bShowIt)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_SHOWDROPDOWN, bShowIt, 0); }
+_AFXWIN_INLINE int CComboBox::AddString(LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_ADDSTRING, 0, (LPARAM)lpszString); }
+_AFXWIN_INLINE int CComboBox::DeleteString(UINT nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_DELETESTRING, nIndex, 0);}
+_AFXWIN_INLINE int CComboBox::InsertString(int nIndex, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_INSERTSTRING, nIndex, (LPARAM)lpszString); }
+_AFXWIN_INLINE void CComboBox::ResetContent()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_RESETCONTENT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::Dir(UINT attr, LPCTSTR lpszWildCard)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_DIR, attr, (LPARAM)lpszWildCard); }
+_AFXWIN_INLINE int CComboBox::FindString(int nStartAfter, LPCTSTR lpszString) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_FINDSTRING, nStartAfter,
+ (LPARAM)lpszString); }
+_AFXWIN_INLINE int CComboBox::SelectString(int nStartAfter, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SELECTSTRING,
+ nStartAfter, (LPARAM)lpszString); }
+_AFXWIN_INLINE void CComboBox::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetItemHeight(int nIndex, UINT cyItemHeight)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0)); }
+_AFXWIN_INLINE int CComboBox::GetItemHeight(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETITEMHEIGHT, nIndex, 0L); }
+_AFXWIN_INLINE int CComboBox::FindStringExact(int nIndexStart, LPCTSTR lpszFind) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind); }
+_AFXWIN_INLINE int CComboBox::SetExtendedUI(BOOL bExtended )
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETEXTENDEDUI, bExtended, 0L); }
+_AFXWIN_INLINE BOOL CComboBox::GetExtendedUI() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_GETEXTENDEDUI, 0, 0L); }
+_AFXWIN_INLINE void CComboBox::GetDroppedControlRect(LPRECT lprect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_GETDROPPEDCONTROLRECT, 0, (DWORD)lprect); }
+_AFXWIN_INLINE BOOL CComboBox::GetDroppedState() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_GETDROPPEDSTATE, 0, 0L); }
+_AFXWIN_INLINE LCID CComboBox::GetLocale() const
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, CB_GETLOCALE, 0, 0); }
+_AFXWIN_INLINE LCID CComboBox::SetLocale(LCID nNewLocale)
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, CB_SETLOCALE, (WPARAM)nNewLocale, 0); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE int CComboBox::GetTopIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETTOPINDEX, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetTopIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETTOPINDEX, nIndex, 0); }
+_AFXWIN_INLINE int CComboBox::InitStorage(int nItems, UINT nBytes)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_INITSTORAGE, (WPARAM)nItems, nBytes); }
+_AFXWIN_INLINE void CComboBox::SetHorizontalExtent(UINT nExtent)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_SETHORIZONTALEXTENT, nExtent, 0); }
+_AFXWIN_INLINE UINT CComboBox::GetHorizontalExtent() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, CB_GETHORIZONTALEXTENT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetDroppedWidth(UINT nWidth)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETDROPPEDWIDTH, nWidth, 0); }
+_AFXWIN_INLINE int CComboBox::GetDroppedWidth() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETDROPPEDWIDTH, 0, 0); }
+#endif
+_AFXWIN_INLINE CEdit::CEdit()
+ { }
+_AFXWIN_INLINE BOOL CEdit::CanUndo() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0); }
+_AFXWIN_INLINE int CEdit::GetLineCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::GetModify() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetModify(BOOL bModified)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0); }
+_AFXWIN_INLINE void CEdit::GetRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::GetSel(int& nStartChar, int& nEndChar) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETSEL, (WPARAM)&nStartChar,(LPARAM)&nEndChar); }
+_AFXWIN_INLINE DWORD CEdit::GetSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, EM_GETSEL, 0, 0); }
+_AFXWIN_INLINE HLOCAL CEdit::GetHandle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HLOCAL)::SendMessage(m_hWnd, EM_GETHANDLE, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetHandle(HLOCAL hBuffer)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETHANDLE, (WPARAM)hBuffer, 0); }
+_AFXWIN_INLINE int CEdit::GetLine(int nIndex, LPTSTR lpszBuffer) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer); }
+_AFXWIN_INLINE int CEdit::GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const
+ {
+ ASSERT(::IsWindow(m_hWnd));
+ *(LPWORD)lpszBuffer = (WORD)nMaxLength;
+ return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
+ }
+_AFXWIN_INLINE void CEdit::EmptyUndoBuffer()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::FmtLines(BOOL bAddEOL)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_FMTLINES, bAddEOL, 0); }
+_AFXWIN_INLINE void CEdit::LimitText(int nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_LIMITTEXT, nChars, 0); }
+_AFXWIN_INLINE int CEdit::LineFromChar(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINEFROMCHAR, nIndex, 0); }
+_AFXWIN_INLINE int CEdit::LineIndex(int nLine) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINEINDEX, nLine, 0); }
+_AFXWIN_INLINE int CEdit::LineLength(int nLine) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINELENGTH, nLine, 0); }
+_AFXWIN_INLINE void CEdit::LineScroll(int nLines, int nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_LINESCROLL, nChars, nLines); }
+_AFXWIN_INLINE void CEdit::ReplaceSel(LPCTSTR lpszNewText)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_REPLACESEL, 0, (LPARAM)lpszNewText); }
+_AFXWIN_INLINE void CEdit::SetPasswordChar(TCHAR ch)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETPASSWORDCHAR, ch, 0); }
+_AFXWIN_INLINE void CEdit::SetRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::SetRectNP(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECTNP, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::SetSel(DWORD dwSelection, BOOL bNoScroll)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETSEL,
+ LOWORD(dwSelection), HIWORD(dwSelection));
+ if (!bNoScroll)
+ ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetSel(int nStartChar, int nEndChar, BOOL bNoScroll)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETSEL, nStartChar, nEndChar);
+ if (!bNoScroll)
+ ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CEdit::SetTabStops(int nTabStops, LPINT rgTabStops)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, nTabStops,
+ (LPARAM)rgTabStops); }
+_AFXWIN_INLINE void CEdit::SetTabStops()
+ { ASSERT(::IsWindow(m_hWnd)); VERIFY(::SendMessage(m_hWnd, EM_SETTABSTOPS, 0, 0)); }
+_AFXWIN_INLINE BOOL CEdit::SetTabStops(const int& cxEachStop)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS,
+ 1, (LPARAM)(LPINT)&cxEachStop); }
+#endif
+_AFXWIN_INLINE BOOL CEdit::Undo()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0); }
+_AFXWIN_INLINE void CEdit::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXWIN_INLINE void CEdit::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXWIN_INLINE void CEdit::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXWIN_INLINE void CEdit::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::SetReadOnly(BOOL bReadOnly )
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L); }
+_AFXWIN_INLINE int CEdit::GetFirstVisibleLine() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L); }
+_AFXWIN_INLINE TCHAR CEdit::GetPasswordChar() const
+ { ASSERT(::IsWindow(m_hWnd)); return (TCHAR)::SendMessage(m_hWnd, EM_GETPASSWORDCHAR, 0, 0L); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE void CEdit::SetMargins(UINT nLeft, UINT nRight)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN, MAKELONG(nLeft, nRight)); }
+_AFXWIN_INLINE DWORD CEdit::GetMargins() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)::SendMessage(m_hWnd, EM_GETMARGINS, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetLimitText(UINT nMax)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETLIMITTEXT, nMax, 0); }
+_AFXWIN_INLINE UINT CEdit::GetLimitText() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, EM_GETLIMITTEXT, 0, 0); }
+_AFXWIN_INLINE CPoint CEdit::PosFromChar(UINT nChar) const
+ { ASSERT(::IsWindow(m_hWnd)); return CPoint( (DWORD)::SendMessage(m_hWnd, EM_POSFROMCHAR, nChar, 0)); }
+_AFXWIN_INLINE int CEdit::CharFromPos(CPoint pt) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y)); }
+#endif
+
+_AFXWIN_INLINE CScrollBar::CScrollBar()
+ { }
+_AFXWIN_INLINE int CScrollBar::GetScrollPos() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetScrollPos(m_hWnd, SB_CTL); }
+_AFXWIN_INLINE int CScrollBar::SetScrollPos(int nPos, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetScrollPos(m_hWnd, SB_CTL, nPos, bRedraw); }
+_AFXWIN_INLINE void CScrollBar::GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetScrollRange(m_hWnd, SB_CTL, lpMinPos, lpMaxPos); }
+_AFXWIN_INLINE void CScrollBar::SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetScrollRange(m_hWnd, SB_CTL, nMinPos, nMaxPos, bRedraw); }
+_AFXWIN_INLINE void CScrollBar::ShowScrollBar(BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowScrollBar(m_hWnd, SB_CTL, bShow); }
+_AFXWIN_INLINE BOOL CScrollBar::EnableScrollBar(UINT nArrowFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::EnableScrollBar(m_hWnd, SB_CTL, nArrowFlags); }
+_AFXWIN_INLINE BOOL CScrollBar::SetScrollInfo(LPSCROLLINFO lpScrollInfo, BOOL bRedraw)
+ { return CWnd::SetScrollInfo(SB_CTL, lpScrollInfo, bRedraw); }
+_AFXWIN_INLINE BOOL CScrollBar::GetScrollInfo(LPSCROLLINFO lpScrollInfo, UINT nMask)
+ { return CWnd::GetScrollInfo(SB_CTL, lpScrollInfo, nMask); }
+_AFXWIN_INLINE int CScrollBar::GetScrollLimit()
+ { return CWnd::GetScrollLimit(SB_CTL); }
+
+
+// MDI functions
+_AFXWIN_INLINE void CMDIFrameWnd::MDIActivate(CWnd* pWndActivate)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIACTIVATE,
+ (WPARAM)pWndActivate->m_hWnd, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIIconArrange()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIICONARRANGE, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIMaximize(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIMAXIMIZE, (WPARAM)pWnd->m_hWnd, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDINext()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDINEXT, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIRestore(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIRESTORE, (WPARAM)pWnd->m_hWnd, 0); }
+_AFXWIN_INLINE CMenu* CMDIFrameWnd::MDISetMenu(CMenu* pFrameMenu, CMenu* pWindowMenu)
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle((HMENU)::SendMessage(
+ m_hWndMDIClient, WM_MDISETMENU, (WPARAM)pFrameMenu->GetSafeHmenu(),
+ (LPARAM)pWindowMenu->GetSafeHmenu())); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDITile()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDITILE, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDICascade()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDICASCADE, 0, 0); }
+
+_AFXWIN_INLINE void CMDIFrameWnd::MDICascade(int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDICASCADE, nType, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDITile(int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDITILE, nType, 0); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIDestroy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIDESTROY, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIActivate()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIACTIVATE, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIMaximize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIMAXIMIZE, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIRestore()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIRESTORE, (WPARAM)m_hWnd, 0L); }
+
+// CView
+_AFXWIN_INLINE CDocument* CView::GetDocument() const
+ { ASSERT(this != NULL); return m_pDocument; }
+_AFXWIN_INLINE CSize CScrollView::GetTotalSize() const
+ { ASSERT(this != NULL); return m_totalLog; }
+
+// CDocument
+_AFXWIN_INLINE const CString& CDocument::GetTitle() const
+ { ASSERT(this != NULL); return m_strTitle; }
+_AFXWIN_INLINE const CString& CDocument::GetPathName() const
+ { ASSERT(this != NULL); return m_strPathName; }
+_AFXWIN_INLINE CDocTemplate* CDocument::GetDocTemplate() const
+ { ASSERT(this != NULL); return m_pDocTemplate; }
+_AFXWIN_INLINE BOOL CDocument::IsModified()
+ { ASSERT(this != NULL); return m_bModified; }
+_AFXWIN_INLINE void CDocument::SetModifiedFlag(BOOL bModified)
+ { ASSERT(this != NULL); m_bModified = bModified; }
+
+// CWinThread
+_AFXWIN_INLINE CWinThread::operator HANDLE() const
+ { return this == NULL ? NULL : m_hThread; }
+_AFXWIN_INLINE BOOL CWinThread::SetThreadPriority(int nPriority)
+ { ASSERT(m_hThread != NULL); return ::SetThreadPriority(m_hThread, nPriority); }
+_AFXWIN_INLINE int CWinThread::GetThreadPriority()
+ { ASSERT(m_hThread != NULL); return ::GetThreadPriority(m_hThread); }
+_AFXWIN_INLINE DWORD CWinThread::ResumeThread()
+ { ASSERT(m_hThread != NULL); return ::ResumeThread(m_hThread); }
+_AFXWIN_INLINE DWORD CWinThread::SuspendThread()
+ { ASSERT(m_hThread != NULL); return ::SuspendThread(m_hThread); }
+
+// CWinApp
+#ifdef _MAC
+#if !defined(_USRDLL)
+_AFXWIN_INLINE BOOL CWinApp::Enable3dControls()
+ { return FALSE; }
+#ifndef _AFXDLL
+_AFXWIN_INLINE BOOL CWinApp::Enable3dControlsStatic()
+ { return FALSE; }
+#endif
+#endif
+#endif
+_AFXWIN_INLINE HCURSOR CWinApp::LoadCursor(LPCTSTR lpszResourceName) const
+ { return ::LoadCursor(AfxFindResourceHandle(lpszResourceName,
+ RT_GROUP_CURSOR), lpszResourceName); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadCursor(UINT nIDResource) const
+ { return ::LoadCursor(AfxFindResourceHandle(MAKEINTRESOURCE(nIDResource),
+ RT_GROUP_CURSOR), MAKEINTRESOURCE(nIDResource)); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadStandardCursor(LPCTSTR lpszCursorName) const
+ { return ::LoadCursor(NULL, lpszCursorName); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadOEMCursor(UINT nIDCursor) const
+ { return ::LoadCursor(NULL, MAKEINTRESOURCE(nIDCursor)); }
+_AFXWIN_INLINE HICON CWinApp::LoadIcon(LPCTSTR lpszResourceName) const
+ { return ::LoadIcon(AfxFindResourceHandle(lpszResourceName,
+ RT_GROUP_ICON), lpszResourceName); }
+_AFXWIN_INLINE HICON CWinApp::LoadIcon(UINT nIDResource) const
+ { return ::LoadIcon(AfxFindResourceHandle(MAKEINTRESOURCE(nIDResource),
+ RT_GROUP_ICON), MAKEINTRESOURCE(nIDResource)); }
+_AFXWIN_INLINE HICON CWinApp::LoadStandardIcon(LPCTSTR lpszIconName) const
+ { return ::LoadIcon(NULL, lpszIconName); }
+_AFXWIN_INLINE HICON CWinApp::LoadOEMIcon(UINT nIDIcon) const
+ { return ::LoadIcon(NULL, MAKEINTRESOURCE(nIDIcon)); }
+#ifdef _MAC
+_AFXWIN_INLINE void CWinApp::EnableShellOpen()
+ { }
+_AFXWIN_INLINE void CWinApp::RegisterShellFileTypes(BOOL)
+ { }
+_AFXWIN_INLINE void CWinApp::RegisterShellFileTypesCompat()
+ { }
+_AFXWIN_INLINE void CDocManager::RegisterShellFileTypes(BOOL)
+ { }
+#endif
+
+_AFXWIN_INLINE CWaitCursor::CWaitCursor()
+ { AfxGetApp()->BeginWaitCursor(); }
+_AFXWIN_INLINE CWaitCursor::~CWaitCursor()
+ { AfxGetApp()->EndWaitCursor(); }
+_AFXWIN_INLINE void CWaitCursor::Restore()
+ { AfxGetApp()->RestoreWaitCursor(); }
+
+/////////////////////////////////////////////////////////////////////////////
+// Obsolete and non-portable
+
+#ifndef _MAC
+_AFXWIN_INLINE void CWnd::CloseWindow()
+ { ASSERT(::IsWindow(m_hWnd)); ::CloseWindow(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::OpenIcon()
+ { ASSERT(::IsWindow(m_hWnd)); return ::OpenIcon(m_hWnd); }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXWIN_INLINE
diff --git a/public/sdk/inc/mfc40/daogetrw.h b/public/sdk/inc/mfc40/daogetrw.h
new file mode 100644
index 000000000..50f0ed369
--- /dev/null
+++ b/public/sdk/inc/mfc40/daogetrw.h
@@ -0,0 +1,143 @@
+/************************************************************************
+** D A O G E T R W . H *
+** *
+** GetRows interface *
+** *
+** Warning: The interface defined in this file is for internal use by *
+** the Microsoft Foundation Classes and the dbdao C++ classes. *
+** Future releases of DAO may not be completely compatible with this *
+** implementation. However, if you write to the MFC or dbdao *
+** classes that use this interface, those classes will continue to *
+** be compatible even if this underlying interface changes. *
+** *
+*************************************************************************
+** Copyright (C) 1995 by Microsoft Corporation *
+** All Rights Reserved *
+************************************************************************/
+
+#if !defined (_DAOGETRW_H_)
+#define _DAOGETRW_H_
+
+
+/*
+ Enumerations
+*/
+typedef enum
+ {
+ DAOCOLKIND_IND = 0,
+ DAOCOLKIND_STR,
+ DAOCOLKIND_WSTR
+ } DAOCOLKIND;
+
+typedef enum
+ {
+ DAO_I2 = 0,
+ DAO_I4,
+ DAO_R4,
+ DAO_R8,
+ DAO_CURRENCY,
+ DAO_DATE,
+ DAO_BOOL,
+ DAO_BSTR,
+ DAO_LPSTR,
+ DAO_LPWSTR,
+ DAO_BLOB,
+ DAO_BYTES,
+ DAO_CHAR,
+ DAO_WCHAR,
+ DAO_ANYVARIANT,
+ DAO_BOOKMARK,
+ DAO_BYTE,
+ DAO_GUID,
+ DAO_DATATYPEMAX
+ } DAODATATYPE;
+
+/*
+ Macros
+*/
+#define DAO_NOINDICATOR 0xffffffff
+#define DAO_NULL 0xffffffff
+#define DAO_CANTCOERCE 0xfffffffc
+#define DAO_NOMAXLENGTH 0x00000000
+
+#define DAOROWFETCH_CALLEEALLOCATES 0x00000001
+#define DAOROWFETCH_DONTADVANCE 0x00000002
+#define DAOROWFETCH_FORCEREFRESH 0x00000004
+#define DAOROWFETCH_BINDABSOLUTE 0x00000008
+
+#define DAOBINDING_DIRECT 0x00000001
+#define DAOBINDING_VARIANT 0x00000002
+#define DAOBINDING_CALLBACK 0x00000004
+
+/*
+ Structures
+*/
+typedef struct
+ {
+ DWORD dwKind;
+ union
+ {
+ LONG ind;
+ LPCSTR lpstr;
+ LPCWSTR lpwstr;
+ };
+ } DAOCOLUMNID;
+typedef DAOCOLUMNID *LPDAOCOLUMNID;
+
+// Callback for binding
+EXTERN_C typedef HRESULT (STDAPICALLTYPE *LPDAOBINDFUNC)(ULONG cb, DWORD dwUser, LPVOID *ppData);
+#define DAOBINDINGFUNC(f) STDAPI f (ULONG cb, DWORD dwUser, LPVOID *ppData)
+
+typedef struct
+ {
+ DAOCOLUMNID columnID;
+ ULONG cbDataOffset;
+ ULONG cbMaxLen;
+ ULONG cbInfoOffset;
+ DWORD dwBinding;
+ DWORD dwDataType;
+ DWORD dwUser;
+ } DAOCOLUMNBINDING;
+typedef DAOCOLUMNBINDING *LPDAOCOLUMNBINDING;
+
+typedef struct
+ {
+ ULONG cRowsRequested;
+ DWORD dwFlags;
+ LPVOID pData;
+ LPVOID pVarData;
+ ULONG cbVarData;
+ ULONG cRowsReturned;
+ } DAOFETCHROWS;
+typedef DAOFETCHROWS *LPDAOFETCHROWS;
+
+/*
+ New Errors
+
+ **NOTE: OLE standard ids to be determined.
+*/
+
+#define GETROWSUCCESS(x) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, x)
+#define GETROWERR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, x)
+
+#define S_BUFFERTOOSMALL GETROWSUCCESS(0x1000)
+#define S_ENDOFCURSOR GETROWSUCCESS(0x1001)
+#define S_SILENTCANCEL GETROWSUCCESS(0x1002)
+#define S_RECORDDELETED GETROWSUCCESS(0x1003)
+
+#define E_ROWTOOSHORT GETROWERR(0x1000)
+#define E_BADBINDINFO GETROWERR(0x1001)
+#define E_COLUMNUNAVAILABLE GETROWERR(0x1002)
+
+
+/*
+ Interfaces
+*/
+#undef INTERFACE
+#define INTERFACE ICDAORecordset
+DECLARE_INTERFACE_(ICDAORecordset, IDispatch)
+ {
+ STDMETHOD(GetRows) (THIS_ LONG cRowsToSkip, LONG cCol, LPDAOCOLUMNBINDING prgBndCol, ULONG cbRowLen, LPDAOFETCHROWS pFetchRows) PURE;
+ };
+
+#endif // _DAOGETRW_H_
diff --git a/public/sdk/inc/mfc40/dbdaoerr.h b/public/sdk/inc/mfc40/dbdaoerr.h
new file mode 100644
index 000000000..d5f4e738d
--- /dev/null
+++ b/public/sdk/inc/mfc40/dbdaoerr.h
@@ -0,0 +1,448 @@
+
+/************************************************************************
+** D B D A O E R R . H * *
+** *
+** History *
+** ------- *
+** 5-17-95 Added to DAO SDK *
+** 7-17-95 Added DBDAOERR macro, removed internal only codes *
+** *
+** The following #defines map the integer to a descriptive name
+** i.e. 3270 -> E_DAO_VtoPropNotFound *
+** *
+** *
+*************************************************************************
+** Copyright (C) 1995 by Microsoft Corporation *
+** All Rights Reserved *
+************************************************************************/
+
+#ifndef _DBDAOERR_H_
+#define _DBDAOERR_H_
+
+#define DBDAOERR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, x)
+
+#define E_DAO_InternalError DBDAOERR(3000) //Reserved error (|); there is no message for this error.
+#define E_DAO_InvalidParameter DBDAOERR(3001) //Invalid argument.
+#define E_DAO_CantBegin DBDAOERR(3002) //Couldn't start session.
+#define E_DAO_TransTooDeep DBDAOERR(3003) //Couldn't start transaction; too many transactions already nested.
+#define E_DAO_DatabaseNotFound DBDAOERR(3004) //Couldn't find database '|'.
+#define E_DAO_DatabaseInvalidName DBDAOERR(3005) //'|' isn't a valid database name.
+#define E_DAO_DatabaseLocked DBDAOERR(3006) //Database '|' is exclusively locked.
+#define E_DAO_DatabaseOpenError DBDAOERR(3007) //Can't open library database '|'.
+#define E_DAO_TableLocked DBDAOERR(3008) //Table '|' is exclusively locked.
+#define E_DAO_TableInUse DBDAOERR(3009) //Couldn't lock table '|'; currently in use.
+#define E_DAO_TableDuplicate DBDAOERR(3010) //Table '|' already exists.
+#define E_DAO_ObjectNotFound DBDAOERR(3011) //Couldn't find object '|'.
+#define E_DAO_ObjectDuplicate DBDAOERR(3012) //Object '|' already exists.
+#define E_DAO_CannotRename DBDAOERR(3013) //Couldn't rename installable ISAM file.
+#define E_DAO_TooManyOpenTables DBDAOERR(3014) //Can't open any more tables.
+#define E_DAO_IndexNotFound DBDAOERR(3015) //'|' isn't an index in this table.
+#define E_DAO_ColumnDoesNotFit DBDAOERR(3016) //Field won't fit in record.
+#define E_DAO_ColumnTooBig DBDAOERR(3017) //The size of a field is too long.
+#define E_DAO_ColumnNotFound DBDAOERR(3018) //Couldn't find field '|'.
+#define E_DAO_NoCurrentIndex DBDAOERR(3019) //Operation invalid without a current index.
+#define E_DAO_RecordNoCopy DBDAOERR(3020) //Update or CancelUpdate without AddNew or Edit.
+#define E_DAO_NoCurrentRecord DBDAOERR(3021) //No current record.
+#define E_DAO_KeyDuplicate DBDAOERR(3022) //Duplicate value in index, primary key, or relationship. Changes were unsuccessful.
+#define E_DAO_AlreadyPrepared DBDAOERR(3023) //AddNew or Edit already used.
+#define E_DAO_FileNotFound DBDAOERR(3024) //Couldn't find file '|'.
+#define E_DAO_TooManyOpenFiles DBDAOERR(3025) //Can't open any more files.
+#define E_DAO_DiskFull DBDAOERR(3026) //Not enough space on disk.
+#define E_DAO_PermissionDenied DBDAOERR(3027) //Can't update. Database or object is read-only.
+#define E_DAO_CannotOpenSystemDb DBDAOERR(3028) //Can't start your application. The system database is missing or opened exclusively by another user.
+#define E_DAO_InvalidLogon DBDAOERR(3029) //Not a valid account name or password.
+#define E_DAO_InvalidAccountName DBDAOERR(3030) //'|' isn't a valid account name.
+#define E_DAO_InvalidPassword DBDAOERR(3031) //Not a valid password.
+#define E_DAO_InvalidOperation DBDAOERR(3032) //Can't perform this operation.
+#define E_DAO_AccessDenied DBDAOERR(3033) //No permission for '|'.
+#define E_DAO_NotInTransaction DBDAOERR(3034) //Commit or Rollback without BeginTrans.
+#define E_DAO_OutOfMemory DBDAOERR(3035) //*
+#define E_DAO_CantAllocatePage DBDAOERR(3036) //Database has reached maximum size.
+#define E_DAO_NoMoreCursors DBDAOERR(3037) //Can't open any more tables or queries.
+#define E_DAO_OutOfBuffers DBDAOERR(3038) //*
+#define E_DAO_TooManyIndexes DBDAOERR(3039) //Couldn't create index; too many indexes already defined.
+#define E_DAO_ReadVerifyFailure DBDAOERR(3040) //Disk I/O error during read.
+#define E_DAO_FilesysVersion DBDAOERR(3041) //Can't open a database created with a previous version of your application.
+#define E_DAO_NoMoreFiles DBDAOERR(3042) //Out of MS-DOS file handles.
+#define E_DAO_DiskError DBDAOERR(3043) //Disk or network error.
+#define E_DAO_InvalidPath DBDAOERR(3044) //'|' isn't a valid path.
+#define E_DAO_FileShareViolation DBDAOERR(3045) //Couldn't use '|'; file already in use.
+#define E_DAO_FileLockViolation DBDAOERR(3046) //Couldn't save; currently locked by another user.
+#define E_DAO_RecordTooBig DBDAOERR(3047) //Record is too large.
+#define E_DAO_TooManyOpenDatabases DBDAOERR(3048) //Can't open any more databases.
+#define E_DAO_InvalidDatabase DBDAOERR(3049) //Can't open database '|'. It may not be a database that your application recognizes, or the file may be corrupt.
+#define E_DAO_FileLockingUnavailable DBDAOERR(3050) //Couldn't lock file.
+#define E_DAO_FileAccessDenied DBDAOERR(3051) //Couldn't open file '|'.
+#define E_DAO_SharingBufferExceeded DBDAOERR(3052) //MS-DOS file sharing lock count exceeded. You need to increase the number of locks installed with SHARE.EXE.
+#define E_DAO_TaskLimitExceeded DBDAOERR(3053) //Too many client tasks.
+#define E_DAO_TooManyLongColumns DBDAOERR(3054) //Too many Memo or OLE object fields.
+#define E_DAO_InvalidFilename DBDAOERR(3055) //Not a valid file name.
+#define E_DAO_AbortSalvage DBDAOERR(3056) //Couldn't repair this database.
+#define E_DAO_LinkNotSupported DBDAOERR(3057) //Operation not supported on attached, or linked, tables.
+#define E_DAO_NullKeyDisallowed DBDAOERR(3058) //Index or primary key can't contain a null value.
+#define E_DAO_OperationCanceled DBDAOERR(3059) //Operation canceled by user.
+#define E_DAO_QueryParmTypeMismatch DBDAOERR(3060) //Wrong data type for parameter '|'.
+#define E_DAO_QueryMissingParmsM DBDAOERR(3061) //Too few parameters. Expected |.
+#define E_DAO_QueryDuplicateAliasM DBDAOERR(3062) //Duplicate output alias '|'.
+#define E_DAO_QueryDuplicateOutputM DBDAOERR(3063) //Duplicate output destination '|'.
+#define E_DAO_QueryIsBulkOp DBDAOERR(3064) //Can't open action query '|'.
+#define E_DAO_QueryIsNotBulkOp DBDAOERR(3065) //Can't execute a non-action query.
+#define E_DAO_QueryNoOutputsM DBDAOERR(3066) //Query or table must contain at least one output field.
+#define E_DAO_QueryNoInputTablesM DBDAOERR(3067) //Query input must contain at least one table or query.
+#define E_DAO_QueryInvalidAlias DBDAOERR(3068) //Not a valid alias name.
+#define E_DAO_QueryInvalidBulkInputM DBDAOERR(3069) //The action query '|' cannot be used as a row source.
+#define E_DAO_QueryUnboundRef DBDAOERR(3070) //Can't bind name '|'.
+#define E_DAO_QueryExprEvaluation DBDAOERR(3071) //Can't evaluate expression.
+#define E_DAO_EvalEBESErr DBDAOERR(3072) //|
+#define E_DAO_QueryNotUpdatable DBDAOERR(3073) //Operation must use an updatable query.
+#define E_DAO_TableRepeatInFromList DBDAOERR(3074) //Can't repeat table name '|' in FROM clause.
+#define E_DAO_QueryExprSyntax DBDAOERR(3075) //|1 in query expression '|2'.
+#define E_DAO_QbeExprSyntax DBDAOERR(3076) //| in criteria expression.
+#define E_DAO_FindExprSyntax DBDAOERR(3077) //| in expression.
+#define E_DAO_InputTableNotFound DBDAOERR(3078) //Couldn't find input table or query '|'.
+#define E_DAO_QueryAmbigRefM DBDAOERR(3079) //Ambiguous field reference '|'.
+#define E_DAO_JoinTableNotInput DBDAOERR(3080) //Joined table '|' not listed in FROM clause.
+#define E_DAO_UnaliasedSelfJoin DBDAOERR(3081) //Can't join more than one table with the same name (|).
+#define E_DAO_ColumnNotInJoinTable DBDAOERR(3082) //JOIN operation '|' refers to a non-joined table.
+#define E_DAO_QueryIsMGB DBDAOERR(3083) //Can't use internal report query.
+#define E_DAO_QueryInsIntoBulkMGB DBDAOERR(3084) //Can't insert data with action query.
+#define E_DAO_ExprUnknownFunctionM DBDAOERR(3085) //Undefined function '|' in expression.
+#define E_DAO_QueryCannotDelete DBDAOERR(3086) //Couldn't delete from specified tables.
+#define E_DAO_QueryTooManyGroupExprs DBDAOERR(3087) //Too many expressions in GROUP BY clause.
+#define E_DAO_QueryTooManyOrderExprs DBDAOERR(3088) //Too many expressions in ORDER BY clause.
+#define E_DAO_QueryTooManyDistExprs DBDAOERR(3089) //Too many expressions in DISTINCT output.
+#define E_DAO_Column2ndSysMaint DBDAOERR(3090) //Resultant table not allowed to have more than one Counter or Autonumber field.
+#define E_DAO_HavingWOGrouping DBDAOERR(3091) //HAVING clause (|) without grouping or aggregation.
+#define E_DAO_HavingOnTransform DBDAOERR(3092) //Can't use HAVING clause in TRANSFORM statement.
+#define E_DAO_OrderVsDistinct DBDAOERR(3093) //ORDER BY clause (|) conflicts with DISTINCT.
+#define E_DAO_OrderVsGroup DBDAOERR(3094) //ORDER BY clause (|) conflicts with GROUP BY clause.
+#define E_DAO_AggregateInArgument DBDAOERR(3095) //Can't have aggregate function in expression (|).
+#define E_DAO_AggregateInWhere DBDAOERR(3096) //Can't have aggregate function in WHERE clause (|).
+#define E_DAO_AggregateInOrderBy DBDAOERR(3097) //Can't have aggregate function in ORDER BY clause (|).
+#define E_DAO_AggregateInGroupBy DBDAOERR(3098) //Can't have aggregate function in GROUP BY clause (|).
+#define E_DAO_AggregateInJoin DBDAOERR(3099) //Can't have aggregate function in JOIN operation (|).
+#define E_DAO_NullInJoinKey DBDAOERR(3100) //Can't set field '|' in join key to Null.
+#define E_DAO_ValueBreaksJoin DBDAOERR(3101) //There is no record in table '|2' with key matching field(s) '|1'.
+#define E_DAO_QueryTreeCycle DBDAOERR(3102) //Circular reference caused by '|'.
+#define E_DAO_OutputAliasCycle DBDAOERR(3103) //Circular reference caused by alias '|' in query definition's SELECT list.
+#define E_DAO_QryDuplicatedFixedSetM DBDAOERR(3104) //Can't specify Fixed Column Heading '|' in a crosstab query more than once.
+#define E_DAO_NoSelectIntoColumnName DBDAOERR(3105) //Missing destination field name in SELECT INTO statement (|).
+#define E_DAO_NoUpdateColumnName DBDAOERR(3106) //Missing destination field name in UPDATE statement (|).
+#define E_DAO_QueryNoInsertPerm DBDAOERR(3107) //Record(s) can't be added; no Insert Data permission on '|'.
+#define E_DAO_QueryNoReplacePerm DBDAOERR(3108) //Record(s) can't be edited; no Update Data permission on '|'.
+#define E_DAO_QueryNoDeletePerm DBDAOERR(3109) //Record(s) can't be deleted; no Delete Data permission on '|'.
+#define E_DAO_QueryNoReadDefPerm DBDAOERR(3110) //Couldn't read definitions; no Read Design permission for table or query '|'.
+#define E_DAO_QueryNoTblCrtPerm DBDAOERR(3111) //Couldn't create; no Create permission for table or query '|'.
+#define E_DAO_QueryNoReadPerm DBDAOERR(3112) //Record(s) can't be read; no Read Data permission on '|'.
+#define E_DAO_QueryColNotUpd DBDAOERR(3113) //Can't update '|'; field not updatable.
+#define E_DAO_QueryLVInDistinct DBDAOERR(3114) //Can't include Memo or OLE object when you select unique values (|).
+#define E_DAO_QueryLVInAggregate DBDAOERR(3115) //Can't have Memo or OLE object in aggregate argument (|).
+#define E_DAO_QueryLVInHaving DBDAOERR(3116) //Can't have Memo or OLE object in criteria (|) for aggregate function.
+#define E_DAO_QueryLVInOrderBy DBDAOERR(3117) //Can't sort on Memo or OLE object (|).
+#define E_DAO_QueryLVInJoin DBDAOERR(3118) //Can't join on Memo or OLE object (|).
+#define E_DAO_QueryLVInGroupBy DBDAOERR(3119) //Can't group on Memo or OLE object (|).
+#define E_DAO_DotStarWithGrouping DBDAOERR(3120) //Can't group on fields selected with '*' (|).
+#define E_DAO_StarWithGrouping DBDAOERR(3121) //Can't group on fields selected with '*'.
+#define E_DAO_IllegalDetailRef DBDAOERR(3122) //'|' not part of aggregate function or grouping.
+#define E_DAO_StarNotAtLevel0 DBDAOERR(3123) //Can't use '*' in crosstab query.
+#define E_DAO_QueryInvalidMGBInput DBDAOERR(3124) //Can't input from internal report query (|).
+#define E_DAO_InvalidName DBDAOERR(3125) //'|' isn't a valid name.
+#define E_DAO_QueryBadBracketing DBDAOERR(3126) //Invalid bracketing of name '|'.
+#define E_DAO_InsertIntoUnknownCol DBDAOERR(3127) //INSERT INTO statement contains unknown field name '|'.
+#define E_DAO_QueryNoDeleteTables DBDAOERR(3128) //Must specify tables to delete from.
+#define E_DAO_SQLSyntax DBDAOERR(3129) //Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.
+#define E_DAO_SQLDeleteSyntax DBDAOERR(3130) //Syntax error in DELETE statement.
+#define E_DAO_SQLFromSyntax DBDAOERR(3131) //Syntax error in FROM clause.
+#define E_DAO_SQLGroupBySyntax DBDAOERR(3132) //Syntax error in GROUP BY clause.
+#define E_DAO_SQLHavingSyntax DBDAOERR(3133) //Syntax error in HAVING clause.
+#define E_DAO_SQLInsertSyntax DBDAOERR(3134) //Syntax error in INSERT statement.
+#define E_DAO_SQLJoinSyntax DBDAOERR(3135) //Syntax error in JOIN operation.
+#define E_DAO_SQLLevelSyntax DBDAOERR(3136) //Syntax error in LEVEL clause.
+#define E_DAO_SQLMissingSemicolon DBDAOERR(3137) //Missing semicolon (;) at end of SQL statement.
+#define E_DAO_SQLOrderBySyntax DBDAOERR(3138) //Syntax error in ORDER BY clause.
+#define E_DAO_SQLParameterSyntax DBDAOERR(3139) //Syntax error in PARAMETER clause.
+#define E_DAO_SQLProcedureSyntax DBDAOERR(3140) //Syntax error in PROCEDURE clause.
+#define E_DAO_SQLSelectSyntax DBDAOERR(3141) //Syntax error in SELECT statement.
+#define E_DAO_SQLTooManyTokens DBDAOERR(3142) //Characters found after end of SQL statement.
+#define E_DAO_SQLTransformSyntax DBDAOERR(3143) //Syntax error in TRANSFORM statement.
+#define E_DAO_SQLUpdateSyntax DBDAOERR(3144) //Syntax error in UPDATE statement.
+#define E_DAO_SQLWhereSyntax DBDAOERR(3145) //Syntax error in WHERE clause.
+#define E_DAO_RmtSQLCError DBDAOERR(3146) //ODBC--call failed.
+#define E_DAO_RmtDataOverflow DBDAOERR(3147) //*
+#define E_DAO_RmtConnectFailed DBDAOERR(3148) //*
+#define E_DAO_RmtIncorrectSqlcDll DBDAOERR(3149) //*
+#define E_DAO_RmtMissingSqlcDll DBDAOERR(3150) //*
+#define E_DAO_RmtConnectFailedM DBDAOERR(3151) //ODBC--connection to '|' failed.
+#define E_DAO_RmtDrvrVer DBDAOERR(3152) //*
+#define E_DAO_RmtSrvrVer DBDAOERR(3153) //*
+#define E_DAO_RmtMissingOdbcDll DBDAOERR(3154) //ODBC--couldn't find DLL '|'.
+#define E_DAO_RmtInsertFailedM DBDAOERR(3155) //ODBC--insert failed on attached (linked) table '|'.
+#define E_DAO_RmtDeleteFailedM DBDAOERR(3156) //ODBC--delete failed on attached (linked) table '|'.
+#define E_DAO_RmtUpdateFailedM DBDAOERR(3157) //ODBC--update failed on attached (linked) table '|'.
+#define E_DAO_RecordLocked DBDAOERR(3158) //Couldn't save record; currently locked by another user.
+#define E_DAO_InvalidBookmark DBDAOERR(3159) //Not a valid bookmark.
+#define E_DAO_TableNotOpen DBDAOERR(3160) //Table isn't open.
+#define E_DAO_DecryptFail DBDAOERR(3161) //Couldn't decrypt file.
+#define E_DAO_NullInvalid DBDAOERR(3162) //Null is invalid.
+#define E_DAO_InvalidBufferSize DBDAOERR(3163) //Couldn't perform operation; data too long for field.
+#define E_DAO_ColumnNotUpdatable DBDAOERR(3164) //Field can't be updated.
+#define E_DAO_CantMakeINFFile DBDAOERR(3165) //Couldn't open .INF file.
+#define E_DAO_MissingMemoFile DBDAOERR(3166) //Missing memo file.
+#define E_DAO_RecordDeleted DBDAOERR(3167) //Record is deleted.
+#define E_DAO_INFFileError DBDAOERR(3168) //Invalid .INF file.
+#define E_DAO_ExprIllegalType DBDAOERR(3169) //Illegal type in expression.
+#define E_DAO_InstalIsamNotFound DBDAOERR(3170) //Couldn't find installable ISAM.
+#define E_DAO_NoConfigParameters DBDAOERR(3171) //Couldn't find net path or user name.
+#define E_DAO_CantAccessPdoxNetDir DBDAOERR(3172) //Couldn't open PARADOX.NET.
+#define E_DAO_NoMSysAccounts DBDAOERR(3173) //Couldn't open table 'MSysAccounts' in the system database file.
+#define E_DAO_NoMSysGroups DBDAOERR(3174) //Couldn't open table 'MSysGroups' in the system database file.
+#define E_DAO_DateOutOfRange DBDAOERR(3175) //Date is out of range or is in an invalid format.
+#define E_DAO_ImexCantOpenFile DBDAOERR(3176) //Couldn't open file '|'.
+#define E_DAO_ImexBadTableName DBDAOERR(3177) //Not a valid table name.
+#define E_DAO_ImexOutOfMemory DBDAOERR(3178) //*
+#define E_DAO_ImexEndofFile DBDAOERR(3179) //Encountered unexpected end of file.
+#define E_DAO_ImexCantWriteToFile DBDAOERR(3180) //Couldn't write to file '|'.
+#define E_DAO_ImexBadRange DBDAOERR(3181) //Invalid range.
+#define E_DAO_ImexBogusFile DBDAOERR(3182) //Invalid file format.
+#define E_DAO_TempDiskFull DBDAOERR(3183) //Not enough space on temporary disk.
+#define E_DAO_RmtLinkNotFound DBDAOERR(3184) //Couldn't execute query; couldn't find attached, or linked, table.
+#define E_DAO_RmtTooManyColumns DBDAOERR(3185) //SELECT INTO remote database tried to produce too many fields.
+#define E_DAO_ReadConflictM DBDAOERR(3186) //Couldn't save; currently locked by user '|2' on machine '|1'.
+#define E_DAO_CommitConflictM DBDAOERR(3187) //Couldn't read; currently locked by user '|2' on machine '|1'.
+#define E_DAO_SessionWriteConflict DBDAOERR(3188) //Couldn't update; currently locked by another session on this machine.
+#define E_DAO_JetSpecialTableLocked DBDAOERR(3189) //Table '|1' is exclusively locked by user '|3' on machine '|2'.
+#define E_DAO_TooManyColumns DBDAOERR(3190) //Too many fields defined.
+#define E_DAO_ColumnDuplicate DBDAOERR(3191) //Can't define field more than once.
+#define E_DAO_OutputTableNotFound DBDAOERR(3192) //Couldn't find output table '|'.
+#define E_DAO_JetNoUserName DBDAOERR(3193) //(unknown)
+#define E_DAO_JetNoMachineName DBDAOERR(3194) //(unknown)
+#define E_DAO_JetNoColumnName DBDAOERR(3195) //(expression)
+#define E_DAO_DatabaseInUse DBDAOERR(3196) //Couldn't use '|'; database already in use.
+#define E_DAO_DataHasChanged DBDAOERR(3197) //Data has changed; operation stopped.
+#define E_DAO_TooManySessions DBDAOERR(3198) //Couldn't start session. Too many sessions already active.
+#define E_DAO_ReferenceNotFound DBDAOERR(3199) //Couldn't find reference.
+#define E_DAO_IntegrityViolMasterM DBDAOERR(3200) //Can't delete or change record. Since related records exist in table '|', referential integrity rules would be violated.
+#define E_DAO_IntegrityViolSlaveM DBDAOERR(3201) //Can't add or change record. Referential integrity rules require a related record in table '|'.
+#define E_DAO_ReadConflict DBDAOERR(3202) //Couldn't save; currently locked by another user.
+#define E_DAO_AggregatingHigherLevel DBDAOERR(3203) //Can't specify subquery in expression (|).
+#define E_DAO_DatabaseDuplicate DBDAOERR(3204) //Database already exists.
+#define E_DAO_QueryTooManyXvtColumn DBDAOERR(3205) //Too many crosstab column headers (|).
+#define E_DAO_SelfReference DBDAOERR(3206) //Can't create a relationship between a field and itself.
+#define E_DAO_CantUseUnkeyedTable DBDAOERR(3207) //Operation not supported on Paradox table with no primary key.
+#define E_DAO_IllegalDeletedOption DBDAOERR(3208) //Invalid Deleted entry in the Xbase section of initialization setting.
+#define E_DAO_IllegalStatsOption DBDAOERR(3209) //Invalid Stats entry in the Xbase section of initialization setting.
+#define E_DAO_ConnStrTooLong DBDAOERR(3210) //Connection string too long.
+#define E_DAO_TableInUseQM DBDAOERR(3211) //Couldn't lock table '|'; currently in use.
+#define E_DAO_JetSpecialTableInUse DBDAOERR(3212) //Couldn't lock table '|1'; currently in use by user '|3' on machine '|2'.
+#define E_DAO_IllegalDateOption DBDAOERR(3213) //Invalid Date entry in the Xbase section of initialization setting.
+#define E_DAO_IllegalMarkOption DBDAOERR(3214) //Invalid Mark entry in the Xbase section of initialization setting.
+#define E_DAO_BtrieveTooManyTasks DBDAOERR(3215) //Too many Btrieve tasks.
+#define E_DAO_QueryParmNotTableid DBDAOERR(3216) //Parameter '|' specified where a table name is required.
+#define E_DAO_QueryParmNotDatabase DBDAOERR(3217) //Parameter '|' specified where a database name is required.
+#define E_DAO_WriteConflict DBDAOERR(3218) //Couldn't update; currently locked.
+#define E_DAO_IllegalOperation DBDAOERR(3219) //Invalid operation.
+#define E_DAO_WrongCollatingSequence DBDAOERR(3220) //Incorrect collating sequence.
+#define E_DAO_BadConfigParameters DBDAOERR(3221) //Invalid entries in the Btrieve section of initialization setting.
+#define E_DAO_QueryContainsDbParm DBDAOERR(3222) //Query can't contain a Database parameter.
+#define E_DAO_QueryInvalidParmM DBDAOERR(3223) //'|' isn't a valid parameter name.
+#define E_DAO_BtrieveDDCorrupted DBDAOERR(3224) //Can't read Btrieve data dictionary.
+#define E_DAO_BtrieveDeadlock DBDAOERR(3225) //Encountered record locking deadlock while performing Btrieve operation.
+#define E_DAO_BtrieveFailure DBDAOERR(3226) //Errors encountered while using the Btrieve DLL.
+#define E_DAO_IllegalCenturyOption DBDAOERR(3227) //Invalid Century entry in the Xbase section of initialization setting.
+#define E_DAO_IllegalCollatingSeq DBDAOERR(3228) //Invalid Collating Sequence.
+#define E_DAO_NonModifiableKey DBDAOERR(3229) //Btrieve--can't change field.
+#define E_DAO_ObsoleteLockFile DBDAOERR(3230) //Out-of-date Paradox lock file.
+#define E_DAO_RmtColDataTruncated DBDAOERR(3231) //ODBC--field would be too long; data truncated.
+#define E_DAO_RmtCreateTableFailed DBDAOERR(3232) //ODBC--couldn't create table.
+#define E_DAO_RmtOdbcVer DBDAOERR(3233) //*
+#define E_DAO_RmtQueryTimeout DBDAOERR(3234) //ODBC--remote query timeout expired.
+#define E_DAO_RmtTypeIncompat DBDAOERR(3235) //ODBC--data type not supported on server.
+#define E_DAO_RmtUnexpectedNull DBDAOERR(3236) //*
+#define E_DAO_RmtUnexpectedType DBDAOERR(3237) //*
+#define E_DAO_RmtValueOutOfRange DBDAOERR(3238) //ODBC--data out of range.
+#define E_DAO_TooManyActiveUsers DBDAOERR(3239) //Too many active users.
+#define E_DAO_CantStartBtrieve DBDAOERR(3240) //Btrieve--missing Btrieve engine.
+#define E_DAO_OutOfBVResources DBDAOERR(3241) //Btrieve--out of resources.
+#define E_DAO_QueryBadUpwardRefedM DBDAOERR(3242) //Invalid reference in SELECT statement.
+#define E_DAO_ImexNoMatchingColumns DBDAOERR(3243) //None of the import field names match fields in the appended table.
+#define E_DAO_ImexPasswordProtected DBDAOERR(3244) //Can't import password-protected spreadsheet.
+#define E_DAO_ImexUnparsableRecord DBDAOERR(3245) //Couldn't parse field names from first row of import table.
+#define E_DAO_InTransaction DBDAOERR(3246) //Operation not supported in transactions.
+#define E_DAO_RmtLinkOutOfSync DBDAOERR(3247) //ODBC--linked table definition has changed.
+#define E_DAO_IllegalNetworkOption DBDAOERR(3248) //Invalid NetworkAccess entry in initialization setting.
+#define E_DAO_IllegalTimeoutOption DBDAOERR(3249) //Invalid PageTimeout entry in initialization setting.
+#define E_DAO_CantBuildKey DBDAOERR(3250) //Couldn't build key.
+#define E_DAO_FeatureNotAvailable DBDAOERR(3251) //Operation is not supported for this type of object.
+#define E_DAO_IllegalReentrancy DBDAOERR(3252) //Can't open form whose underlying query contains a user-defined function that attempts to set or get the form's RecordsetClone property.
+#define E_DAO_UNUSED DBDAOERR(3253) //*
+#define E_DAO_RmtDenyWriteIsInvalid DBDAOERR(3254) //ODBC--Can't lock all records.
+#define E_DAO_ODBCParmsChanged DBDAOERR(3255) //*
+#define E_DAO_INFIndexNotFound DBDAOERR(3256) //Index file not found.
+#define E_DAO_SQLOwnerAccessSyntax DBDAOERR(3257) //Syntax error in WITH OWNERACCESS OPTION declaration.
+#define E_DAO_QueryAmbiguousJoins DBDAOERR(3258) //Query contains ambiguous outer joins.
+#define E_DAO_InvalidColumnType DBDAOERR(3259) //Invalid field data type.
+#define E_DAO_WriteConflictM DBDAOERR(3260) //Couldn't update; currently locked by user '|2' on machine '|1'.
+#define E_DAO_TableLockedM DBDAOERR(3261) //|
+#define E_DAO_TableInUseMUQM DBDAOERR(3262) //|
+#define E_DAO_InvalidTableId DBDAOERR(3263) //Invalid database object.
+#define E_DAO_VtoNoFields DBDAOERR(3264) //No fields defined - cannot append Tabledef or Index.
+#define E_DAO_VtoNameNotFound DBDAOERR(3265) //Item not found in this collection.
+#define E_DAO_VtoFieldInCollection DBDAOERR(3266) //Can't append. Field is part of a TableDefs collection.
+#define E_DAO_VtoNotARecordset DBDAOERR(3267) //Property can be set only when the field is part of a Recordset object's Fields collection.
+#define E_DAO_VtoNoSetObjInDb DBDAOERR(3268) //Can't set this property once the object is part of a collection.
+#define E_DAO_VtoIndexInCollection DBDAOERR(3269) //Can't append. Index is part of a TableDefs collection.
+#define E_DAO_VtoPropNotFound DBDAOERR(3270) //Property not found.
+#define E_DAO_VtoIllegalValue DBDAOERR(3271) //Invalid property value.
+#define E_DAO_VtoNotArray DBDAOERR(3272) //Object isn't a collection.
+#define E_DAO_VtoNoSuchMethod DBDAOERR(3273) //Method not applicable for this object.
+#define E_DAO_NotExternalFormat DBDAOERR(3274) //External table isn't in the expected format.
+#define E_DAO_UnexpectedEngineReturn DBDAOERR(3275) //Unexpected error from external database driver (|).
+#define E_DAO_InvalidDatabaseId DBDAOERR(3276) //Invalid database ID.
+#define E_DAO_TooManyKeys DBDAOERR(3277) //Can't have more than 10 fields in an index.
+#define E_DAO_NotInitialized DBDAOERR(3278) //Database engine hasn't been initialized.
+#define E_DAO_AlreadyInitialized DBDAOERR(3279) //Database engine has already been initialized.
+#define E_DAO_ColumnInUse DBDAOERR(3280) //Can't delete a field that is part of an index or is needed by the system.
+#define E_DAO_IndexInUse DBDAOERR(3281) //Can't delete this index. It is either the current index or is used in a relationship.
+#define E_DAO_TableNotEmpty DBDAOERR(3282) //Can't create field or index in a table that is already defined.
+#define E_DAO_IndexHasPrimary DBDAOERR(3283) //Primary key already exists.
+#define E_DAO_IndexDuplicate DBDAOERR(3284) //Index already exists.
+#define E_DAO_IndexInvalidDef DBDAOERR(3285) //Invalid index definition.
+#define E_DAO_WrongMemoFileType DBDAOERR(3286) //Format of memo file doesn't match specified external database format.
+#define E_DAO_ColumnCannotIndex DBDAOERR(3287) //Can't create index on the given field.
+#define E_DAO_IndexHasNoPrimary DBDAOERR(3288) //Paradox index is not primary.
+#define E_DAO_DDLConstraintSyntax DBDAOERR(3289) //Syntax error in CONSTRAINT clause.
+#define E_DAO_DDLCreateTableSyntax DBDAOERR(3290) //Syntax error in CREATE TABLE statement.
+#define E_DAO_DDLCreateIndexSyntax DBDAOERR(3291) //Syntax error in CREATE INDEX statement.
+#define E_DAO_DDLColumnDefSyntax DBDAOERR(3292) //Syntax error in field definition.
+#define E_DAO_DDLAlterTableSyntax DBDAOERR(3293) //Syntax error in ALTER TABLE statement.
+#define E_DAO_DDLDropIndexSyntax DBDAOERR(3294) //Syntax error in DROP INDEX statement.
+#define E_DAO_DDLDropSyntax DBDAOERR(3295) //Syntax error in DROP TABLE or DROP INDEX.
+#define E_DAO_V11NotSupported DBDAOERR(3296) //Join expression not supported.
+#define E_DAO_ImexNothingToImport DBDAOERR(3297) //Couldn't import table or query. No records found, or all records contain errors.
+#define E_DAO_RmtTableAmbiguous DBDAOERR(3298) //There are several tables with that name. Please specify owner in the format 'owner.table'.
+#define E_DAO_JetODBCConformanceError DBDAOERR(3299) //ODBC Specification Conformance Error (|). This error should be reported to the ODBC driver vendor.
+#define E_DAO_IllegalRelationship DBDAOERR(3300) //Can't create a relationship.
+#define E_DAO_DBVerFeatureNotAvailable DBDAOERR(3301) //Can't perform this operation; features in this version are not available in databases with older formats.
+#define E_DAO_RulesLoaded DBDAOERR(3302) //Can't change a rule while the rules for this table are in use.
+#define E_DAO_ColumnInRelationship DBDAOERR(3303) //Can't delete this field. It's part of one or more relationships.
+#define E_DAO_InvalidPin DBDAOERR(3304) //You must enter a personal identifier (PID) consisting of at least four and no more than 20 characters and digits.
+#define E_DAO_RmtBogusConnStr DBDAOERR(3305) //Invalid connection string in pass-through query.
+#define E_DAO_SingleColumnExpected DBDAOERR(3306) //At most one field can be returned from a subquery that doesn't use the EXISTS keyword.
+#define E_DAO_ColumnCountMismatch DBDAOERR(3307) //The number of columns in the two selected tables or queries of a union query don't match.
+#define E_DAO_InvalidTopArgumentM DBDAOERR(3308) //Invalid TOP argument in select query.
+#define E_DAO_PropertyTooLarge DBDAOERR(3309) //Property setting can't be larger than 2 KB.
+#define E_DAO_JPMInvalidForV1x DBDAOERR(3310) //This property isn't supported for external data sources or for databases created in a previous version.
+#define E_DAO_PropertyExists DBDAOERR(3311) //Property specified already exists.
+#define E_DAO_TLVNativeUserTablesOnly DBDAOERR(3312) //Validation rules and default values can't be placed on system or attached (linked) tables.
+#define E_DAO_TLVInvalidColumn DBDAOERR(3313) //Can't place this validation expression on this field.
+#define E_DAO_TLVNoNullM DBDAOERR(3314) //Field '|' can't contain a null value.
+#define E_DAO_TLVNoBlankM DBDAOERR(3315) //Field '|' can't be a zero-length string.
+#define E_DAO_TLVRuleViolationM DBDAOERR(3316) //|
+#define E_DAO_TLVRuleVioNoMessage DBDAOERR(3317) //One or more values entered is prohibited by the validation rule '|2' set for '|1'.
+#define E_DAO_QueryTopNotAllowedM DBDAOERR(3318) //Top not allowed in delete queries.
+#define E_DAO_SQLUnionSyntax DBDAOERR(3319) //Syntax error in union query.
+#define E_DAO_TLVExprSyntaxM DBDAOERR(3320) //| in table-level validation expression.
+#define E_DAO_NoDbInConnStr DBDAOERR(3321) //No database specified in connection string or IN clause.
+#define E_DAO_QueryBadValueListM DBDAOERR(3322) //Crosstab query contains one or more invalid fixed column headings.
+#define E_DAO_QueryIsNotRowReturning DBDAOERR(3323) //The query can not be used as a row source.
+#define E_DAO_QueryIsDDL DBDAOERR(3324) //This query is a DDL query and cannot be used as a row source.
+#define E_DAO_SPTReturnedNoRecords DBDAOERR(3325) //Pass-through query with ReturnsRecords property set to True did not return any records.
+#define E_DAO_QueryIsSnapshot DBDAOERR(3326) //This Recordset is not updatable.
+#define E_DAO_QueryExprOutput DBDAOERR(3327) //Field '|' is based on an expression and can't be edited.
+#define E_DAO_QueryTableRO DBDAOERR(3328) //Table '|2' is read-only.
+#define E_DAO_QueryRowDeleted DBDAOERR(3329) //Record in table '|' was deleted by another user.
+#define E_DAO_QueryRowLocked DBDAOERR(3330) //Record in table '|' is locked by another user.
+#define E_DAO_QueryFixupChanged DBDAOERR(3331) //To make changes to this field, first save the record.
+#define E_DAO_QueryCantFillIn DBDAOERR(3332) //Can't enter value into blank field on 'one' side of outer join.
+#define E_DAO_QueryWouldOrphan DBDAOERR(3333) //Records in table '|' would have no record on the 'one' side.
+#define E_DAO_V10Format DBDAOERR(3334) //Can be present only in version 1.0 format.
+#define E_DAO_InvalidDelete DBDAOERR(3335) //DeleteOnly called with non-zero cbData.
+#define E_DAO_IllegalIndexDDFOption DBDAOERR(3336) //Btrieve: Invalid IndexDDF option in initialization setting.
+#define E_DAO_IllegalDataCodePage DBDAOERR(3337) //Invalid DataCodePage option in initialization setting.
+#define E_DAO_XtrieveEnvironmentError DBDAOERR(3338) //Btrieve: Xtrieve options aren't correct in initialization setting.
+#define E_DAO_IllegalIndexNumberOption DBDAOERR(3339) //Btrieve: Invalid IndexDeleteRenumber option in initialization setting.
+#define E_DAO_QueryIsCorruptM DBDAOERR(3340) //Query '|' is corrupt.
+#define E_DAO_IncorrectJoinKeyM DBDAOERR(3341) //Current field must match join key '|' on 'one' side of outer join because it has been updated.
+#define E_DAO_QueryLVInSubqueryM DBDAOERR(3342) //Invalid Memo or OLE object in subquery '|'.
+#define E_DAO_InvalidDatabaseM DBDAOERR(3343) //Unrecognized database format '|'.
+#define E_DAO_TLVCouldNotBindRef DBDAOERR(3344) //Unknown or invalid reference '|1' in validation expression or default value in table '|2'.
+#define E_DAO_CouldNotBindRef DBDAOERR(3345) //Unknown or invalid field reference '|'.
+#define E_DAO_QueryWrongNumDestCol DBDAOERR(3346) //Number of query values and destination fields aren't the same.
+#define E_DAO_QueryPKeyNotOutput DBDAOERR(3347) //Can't add record(s); primary key for table '|' not in recordset.
+#define E_DAO_QueryJKeyNotOutput DBDAOERR(3348) //Can't add record(s); join key of table '|' not in recordset.
+#define E_DAO_NumericFieldOverflow DBDAOERR(3349) //Numeric field overflow.
+#define E_DAO_InvalidObject DBDAOERR(3350) //Object is invalid for operation.
+#define E_DAO_OrderVsUnion DBDAOERR(3351) //ORDER BY expression (|) uses non-output fields.
+#define E_DAO_NoInsertColumnNameM DBDAOERR(3352) //No destination field name in INSERT INTO statement (|).
+#define E_DAO_MissingDDFFile DBDAOERR(3353) //Btrieve: Can't find file FIELD.DDF.
+#define E_DAO_SingleRecordExpected DBDAOERR(3354) //At most one record can be returned by this subquery.
+#define E_DAO_DefaultExprSyntax DBDAOERR(3355) //Syntax error in default value.
+#define E_DAO_ExclusiveDBConflict DBDAOERR(3356) //The database is opened by user '|2' on machine '|1'.
+#define E_DAO_QueryIsNotDDL DBDAOERR(3357) //This query is not a properly formed data-definition query.
+#define E_DAO_SysDatabaseOpenError DBDAOERR(3358) //Can't open Microsoft Jet engine system database.
+#define E_DAO_SQLInvalidSPT DBDAOERR(3359) //Pass-through query must contain at least one character.
+#define E_DAO_QueryTooComplex DBDAOERR(3360) //Query is too complex.
+#define E_DAO_SetOpInvalidInSubquery DBDAOERR(3361) //Unions not allowed in a subquery.
+#define E_DAO_RmtMultiRowUpdate DBDAOERR(3362) //Single-row update/delete affected more than one row of an attached (linked) table. Unique index contains duplicate values.
+#define E_DAO_QueryNoJoinedRecord DBDAOERR(3363) //Record(s) can't be added; no corresponding record on the 'one' side.
+#define E_DAO_QueryLVInSetOp DBDAOERR(3364) //Can't use Memo or OLE object field '|' in SELECT clause of a union query.
+#define E_DAO_VtoInvalidOnRemote DBDAOERR(3365) //Property value not valid for REMOTE objects.
+#define E_DAO_VtoNoFieldsRel DBDAOERR(3366) //Can't append a relation with no fields defined.
+#define E_DAO_VtoObjectInCollection DBDAOERR(3367) //Can't append. Object already in collection.
+#define E_DAO_DDLDiffNumRelCols DBDAOERR(3368) //Relationship must be on the same number of fields with the same data types.
+#define E_DAO_DDLIndexColNotFound DBDAOERR(3369) //Can't find field in index definition.
+#define E_DAO_DDLPermissionDenied DBDAOERR(3370) //Can't modify the design of table '|'. It's in a read-only database.
+#define E_DAO_DDLObjectNotFound DBDAOERR(3371) //Can't find table or constraint.
+#define E_DAO_DDLIndexNotFound DBDAOERR(3372) //No such index '|2' on table '|1'.
+#define E_DAO_DDLNoPkeyOnRefdTable DBDAOERR(3373) //Can't create relationship. Referenced table '|' doesn't have a primary key.
+#define E_DAO_DDLColumnsNotUnique DBDAOERR(3374) //The specified fields are not uniquely indexed in table '|'.
+#define E_DAO_DDLIndexDuplicate DBDAOERR(3375) //Table '|1' already has an index named '|2'
+#define E_DAO_DDLTableNotFound DBDAOERR(3376) //Table '|' doesn't exist.
+#define E_DAO_DDLRelNotFound DBDAOERR(3377) //No such relationship '|2' on table '|1'.
+#define E_DAO_DDLRelDuplicate DBDAOERR(3378) //There is already a relationship named '|' in the current database.
+#define E_DAO_DDLIntegrityViolation DBDAOERR(3379) //Can't create relationships to enforce referential integrity. Existing data in table '|2' violates referential integrity rules with related table '|1'.
+#define E_DAO_DDLColumnDuplicate DBDAOERR(3380) //Field '|2' already exists in table '|1'.
+#define E_DAO_DDLColumnNotFound DBDAOERR(3381) //There is no field named '|2' in table '|1'.
+#define E_DAO_DDLColumnTooBig DBDAOERR(3382) //The size of field '|' is too long.
+#define E_DAO_DDLColumnInRel DBDAOERR(3383) //Can't delete field '|'. It's part of one or more relationships.
+#define E_DAO_VtoCantDeleteBuiltIn DBDAOERR(3384) //Can't delete a built-in property.
+#define E_DAO_VtoUDPsDontSupportNull DBDAOERR(3385) //User-defined properties don't support a Null value.
+#define E_DAO_VtoMissingRequiredParm DBDAOERR(3386) //Property '|' must be set before using this method.
+#define E_DAO_JetJetInitInvalidPath DBDAOERR(3387) //Can't find TEMP directory.
+#define E_DAO_TLVExprUnknownFunctionM DBDAOERR(3388) //Unknown function '|2' in validation expression or default value on '|1'.
+#define E_DAO_QueryNotSupported DBDAOERR(3389) //Query support unavailable.
+#define E_DAO_AccountDuplicate DBDAOERR(3390) //Account name already exists.
+#define E_DAO_JetwrnPropCouldNotSave DBDAOERR(3391) //An error has occurred. Properties were not saved.
+#define E_DAO_RelNoPrimaryIndexM DBDAOERR(3392) //There is no primary key in table '|'.
+#define E_DAO_QueryKeyTooBig DBDAOERR(3393) //Can't perform join, group, sort, or indexed restriction. A value being searched or sorted on is too long.
+#define E_DAO_PropMustBeDDL DBDAOERR(3394) //Can't save property; property is a schema property.
+#define E_DAO_IllegalRIConstraint DBDAOERR(3395) //Invalid referential integrity constraint.
+#define E_DAO_RIViolationMasterCM DBDAOERR(3396) //Can't perform cascading operation. Since related records exist in table '|', referential integrity rules would be violated.
+#define E_DAO_RIViolationSlaveCM DBDAOERR(3397) //Can't perform cascading operation. There must be a related record in table '|'.
+#define E_DAO_RIKeyNullDisallowedCM DBDAOERR(3398) //Can't perform cascading operation. It would result in a null key in table '|'.
+#define E_DAO_RIKeyDuplicateCM DBDAOERR(3399) //Can't perform cascading operation. It would result in a duplicate key in table '|'.
+#define E_DAO_RIUpdateTwiceCM DBDAOERR(3400) //Can't perform cascading operation. It would result in two updates on field '|2' in table '|1'.
+#define E_DAO_RITLVNoNullCM DBDAOERR(3401) //Can't perform cascading operation. It would cause field '|' to become null, which is not allowed.
+#define E_DAO_RITLVNoBlankCM DBDAOERR(3402) //Can't perform cascading operation. It would cause field '|' to become a zero-length string, which is not allowed.
+#define E_DAO_RITLVRuleViolationCM DBDAOERR(3403) //Can't perform cascading operation: '|'
+#define E_DAO_RITLVRuleVioCNoMessage DBDAOERR(3404) //Can't perform cascading operation. The value entered is prohibited by the validation rule '|2' set for '|1'.
+#define E_DAO_TLVRuleEvalEBESErr DBDAOERR(3405) //Error '|' in validation rule.
+#define E_DAO_TLVDefaultEvalEBESErr DBDAOERR(3406) //Error '|' in default value.
+#define E_DAO_BadMSysConf DBDAOERR(3407) //The server's MSysConf table exists, but is in an incorrect format. Contact your system administrator.
+#define E_DAO_TooManyFindSessions DBDAOERR(3408) //Too many FastFind Sessions were invoked.
+#define E_DAO_InvalidColumnM DBDAOERR(3409) //Invalid field name '|' in definition of index or relationship.
+#define E_DAO_REPReadOnly DBDAOERR(3410) //*
+#define E_DAO_RIInvalidBufferSizeCM DBDAOERR(3411) //Invalid entry. Can't perform cascading operation specified in table '|1' because value entered is too big for field '|2'.
+#define E_DAO_RIWriteConflictCM DBDAOERR(3412) //|
+#define E_DAO_JetSpecialRIWriteConflictCM DBDAOERR(3413) //Can't perform cascading update on table '|1' because it is currently in use by user '|3' on machine '|2'.
+#define E_DAO_RISessWriteConflictCM DBDAOERR(3414) //Can't perform cascading update on table '|' because it is currently in use.
+#define E_DAO_NoBlank DBDAOERR(3415) //Zero-length string is valid only in a text or Memo field.
+#define E_DAO_FutureError DBDAOERR(3416) //|
+#define E_DAO_QueryInvalidBulkInput DBDAOERR(3417) //An action query cannot be used as a row source.
+#define E_DAO_NetCtrlMismatch DBDAOERR(3418) //Can't open '|'. Another user has the table open using a different network control file or locking style.
+#define E_DAO_4xTableWith3xLocking DBDAOERR(3419) //Can't open this Paradox 4.x or Paradox 5.x table because ParadoxNetStyle is set to 3.x in the initialization setting.
+#define E_DAO_VtoObjectNotSet DBDAOERR(3420) //Object is invalid or not set.
+#define E_DAO_VtoDataConvError DBDAOERR(3421) //Data type conversion error.
+
+#endif // def _DBDAOERR.H_
+
diff --git a/public/sdk/inc/mfc40/dbdaoid.h b/public/sdk/inc/mfc40/dbdaoid.h
new file mode 100644
index 000000000..6e97ac95a
--- /dev/null
+++ b/public/sdk/inc/mfc40/dbdaoid.h
@@ -0,0 +1,131 @@
+/************************************************************************
+** D B D A O I D . H *
+** *
+** OLE DAO component class id definitions *
+** *
+*************************************************************************
+** Copyright (C) 1992-5 by Microsoft Corporation *
+** All Rights Reserved *
+************************************************************************/
+
+/*
+ All UNICODE IID_... names are the same as the ANSI IID_... name
+ with a "W" appended to the end.
+
+*/
+
+// Type library
+DEFINE_OLEGUID(LIBID_CDAO, 0x00025e01, 0, 0);
+
+// StdObject
+DEFINE_OLEGUID(IID_IDAOStdObject, 0x00025e02, 0, 0);
+
+// StdCollection
+DEFINE_OLEGUID(IID_IDAOStdCollection, 0x00025e03, 0, 0);
+
+// DBEngine
+DEFINE_OLEGUID(CLSID_CDAODBEngine, 0x00025e15, 0, 0);
+DEFINE_OLEGUID(IID_IDAODBEngine, 0x00025e16, 0, 0);
+DEFINE_OLEGUID(IID_IDAODBEngineW, 0x00025e17, 0, 0);
+DEFINE_OLEGUID(CLSID_CDAOPrivDBEngine, 0x00025e19, 0, 0);
+
+// Error
+DEFINE_OLEGUID(IID_IDAOError, 0x00025e1d, 0, 0);
+DEFINE_OLEGUID(IID_IDAOErrorW, 0x00025e1e, 0, 0);
+DEFINE_OLEGUID(IID_IDAOErrors, 0x00025e1f, 0, 0);
+DEFINE_OLEGUID(IID_IDAOErrorsW, 0x00025e20, 0, 0);
+
+// Property
+DEFINE_OLEGUID(IID_IDAOProperty, 0x00025e25, 0, 0);
+DEFINE_OLEGUID(IID_IDAOPropertyW, 0x00025e26, 0, 0);
+DEFINE_OLEGUID(IID_IDAOProperties, 0x00025e27, 0, 0);
+DEFINE_OLEGUID(IID_IDAOPropertiesW, 0x00025e28, 0, 0);
+
+// Recordset
+DEFINE_OLEGUID(IID_IDAORecordset, 0x00025e2d, 0, 0);
+DEFINE_OLEGUID(IID_IDAORecordsetW, 0x00025e2e, 0, 0);
+DEFINE_OLEGUID(IID_IDAORecordsets, 0x00025e2f, 0, 0);
+DEFINE_OLEGUID(IID_IDAORecordsetsW, 0x00025e30, 0, 0);
+DEFINE_OLEGUID(IID_ICDAORecordset, 0x00025e31, 0, 0);
+
+// Workspace
+DEFINE_OLEGUID(IID_IDAOWorkspace, 0x00025e3a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOWorkspaceW, 0x00025e3b, 0, 0);
+DEFINE_OLEGUID(IID_IDAOWorkspaces, 0x00025e3c, 0, 0);
+DEFINE_OLEGUID(IID_IDAOWorkspacesW, 0x00025e3d, 0, 0);
+
+// TableDef
+DEFINE_OLEGUID(CLSID_CDAOTableDef, 0x00025e43, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDef, 0x00025e44, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDefW, 0x00025e45, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDefs, 0x00025e46, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDefsW, 0x00025e47, 0, 0);
+
+// Field
+DEFINE_OLEGUID(CLSID_CDAOField, 0x00025e4c, 0, 0);
+DEFINE_OLEGUID(IID_IDAOField, 0x00025e4d, 0, 0);
+DEFINE_OLEGUID(IID_IDAOFieldW, 0x00025e4e, 0, 0);
+DEFINE_OLEGUID(IID_IDAOFields, 0x00025e4f, 0, 0);
+DEFINE_OLEGUID(IID_IDAOFieldsW, 0x00025e50, 0, 0);
+
+// Index
+DEFINE_OLEGUID(CLSID_CDAOIndex, 0x00025e55, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndex, 0x00025e56, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexW, 0x00025ed7, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexes, 0x00025e58, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexesW, 0x00025e59, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexFields, 0x00025e5a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexFieldsW, 0x00025e5b, 0, 0);
+
+// Group
+DEFINE_OLEGUID(CLSID_CDAOGroup, 0x00025e5f, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroup, 0x00025e60, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroupW, 0x00025e61, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroups, 0x00025e62, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroupsW, 0x00025e63, 0, 0);
+
+// User
+DEFINE_OLEGUID(CLSID_CDAOUser, 0x00025e68, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUser, 0x00025e69, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUserW, 0x00025e6a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUsers, 0x00025e6b, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUsersW, 0x00025e6c, 0, 0);
+
+// Database
+DEFINE_OLEGUID(IID_IDAODatabase, 0x00025e71, 0, 0);
+DEFINE_OLEGUID(IID_IDAODatabaseW, 0x00025e72, 0, 0);
+DEFINE_OLEGUID(IID_IDAODatabases, 0x00025e73, 0, 0);
+DEFINE_OLEGUID(IID_IDAODatabasesW, 0x00025e74, 0, 0);
+
+// QueryDef
+DEFINE_OLEGUID(CLSID_CDAOQueryDef, 0x00025e7a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDef, 0x00025e7b, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDefW, 0x00025e7c, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDefs, 0x00025e7d, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDefsW, 0x00025e7e, 0, 0);
+
+// Parameter
+DEFINE_OLEGUID(IID_IDAOParameter, 0x00025e83, 0, 0);
+DEFINE_OLEGUID(IID_IDAOParameterW, 0x00025e84, 0, 0);
+DEFINE_OLEGUID(IID_IDAOParameters, 0x00025e85, 0, 0);
+DEFINE_OLEGUID(IID_IDAOParametersW, 0x00025e86, 0, 0);
+
+// Relation
+DEFINE_OLEGUID(CLSID_CDAORelation, 0x00025e8b, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelation, 0x00025e8c, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelationW, 0x00025e8d, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelations, 0x00025e8e, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelationsW, 0x00025e8f, 0, 0);
+
+// Container
+DEFINE_OLEGUID(IID_IDAOContainer, 0x00025e94, 0, 0);
+DEFINE_OLEGUID(IID_IDAOContainerW, 0x00025e95, 0, 0);
+DEFINE_OLEGUID(IID_IDAOContainers, 0x00025e96, 0, 0);
+DEFINE_OLEGUID(IID_IDAOContainersW, 0x00025e97, 0, 0);
+
+// Document
+DEFINE_OLEGUID(IID_IDAODocument, 0x00025e9c, 0, 0);
+DEFINE_OLEGUID(IID_IDAODocumentW, 0x00025e9d, 0, 0);
+DEFINE_OLEGUID(IID_IDAODocuments, 0x00025e9e, 0, 0);
+DEFINE_OLEGUID(IID_IDAODocumentsW, 0x00025e9f, 0, 0);
+
diff --git a/public/sdk/inc/mfc40/dbdaoint.h b/public/sdk/inc/mfc40/dbdaoint.h
new file mode 100644
index 000000000..00d0deea7
--- /dev/null
+++ b/public/sdk/inc/mfc40/dbdaoint.h
@@ -0,0 +1,776 @@
+/*************************************************************************
+** D B D A O I N T . H *
+** *
+** OLE DAO Interface *
+** *
+** History *
+** ------- *
+** File converted from cdaotype.h for use by CDAO clients. *
+** *
+** *
+**************************************************************************
+** Copyright (C) 1995 by Microsoft Corporation *
+** All Rights Reserved *
+**************************************************************************/
+#ifndef _DBDAOINT_H_
+#define _DBDAOINT_H_
+
+#ifndef _INC_TCHAR
+#include <tchar.h>
+#endif
+
+// Forwards
+#define DAODBEngine _DAODBEngine
+interface _DAODBEngine;
+interface DAOError;
+interface DAOErrors;
+interface DAOProperty;
+interface DAOProperties;
+interface DAOWorkspace;
+interface DAOWorkspaces;
+interface DAODatabase;
+interface DAODatabases;
+#define DAOTableDef _DAOTableDef
+interface _DAOTableDef;
+interface DAOTableDefs;
+#define DAOQueryDef _DAOQueryDef
+interface _DAOQueryDef;
+interface DAOQueryDefs;
+interface DAORecordset;
+interface DAORecordsets;
+#define DAOField _DAOField
+interface _DAOField;
+interface DAOFields;
+#define DAOIndex _DAOIndex
+interface _DAOIndex;
+interface DAOIndexes;
+interface DAOParameter;
+interface DAOParameters;
+#define DAOUser _DAOUser
+interface _DAOUser;
+interface DAOUsers;
+#define DAOGroup _DAOGroup
+interface _DAOGroup;
+interface DAOGroups;
+#define DAORelation _DAORelation
+interface _DAORelation;
+interface DAORelations;
+interface DAOContainer;
+interface DAOContainers;
+interface DAODocument;
+interface DAODocuments;
+
+
+// Constants
+ const short dbOpenTable = 1;
+ const short dbOpenDynaset = 2;
+ const short dbOpenSnapshot = 4;
+ const short dbEditNone = 0;
+ const short dbEditInProgress = 1;
+ const short dbEditAdd = 2;
+ const short dbDenyWrite = 1;
+ const short dbDenyRead = 2;
+ const short dbReadOnly = 4;
+ const short dbAppendOnly = 8;
+ const short dbInconsistent = 16;
+ const short dbConsistent = 32;
+ const short dbSQLPassThrough = 64;
+ const short dbFailOnError = 128;
+ const short dbForwardOnly = 256;
+ const short dbSeeChanges = 512;
+ const short dbFixedField = 1;
+ const short dbVariableField = 2;
+ const short dbAutoIncrField = 16;
+ const short dbUpdatableField = 32;
+ const long dbSystemField = 8192;
+ const short dbDescending = 1;
+ const short dbBoolean = 1;
+ const short dbByte = 2;
+ const short dbInteger = 3;
+ const short dbLong = 4;
+ const short dbCurrency = 5;
+ const short dbSingle = 6;
+ const short dbDouble = 7;
+ const short dbDate = 8;
+ const short dbText = 10;
+ const short dbLongBinary = 11;
+ const short dbMemo = 12;
+ const short dbGUID = 15;
+ const long dbRelationUnique = 1;
+ const long dbRelationDontEnforce = 2;
+ const long dbRelationInherited = 4;
+ const long dbRelationUpdateCascade = 256;
+ const long dbRelationDeleteCascade = 4096;
+ const long dbRelationLeft = 16777216;
+ const long dbRelationRight = 33554432;
+ const long dbAttachExclusive = 65536;
+ const long dbAttachSavePWD = 131072;
+ const long dbSystemObject = -2147483646;
+ const long dbAttachedTable = 1073741824;
+ const long dbAttachedODBC = 536870912;
+ const long dbHiddenObject = 1;
+ const short dbQSelect = 0;
+ const short dbQAction = 240;
+ const short dbQCrosstab = 16;
+ const short dbQDelete = 32;
+ const short dbQUpdate = 48;
+ const short dbQAppend = 64;
+ const short dbQMakeTable = 80;
+ const short dbQDDL = 96;
+ const short dbQSQLPassThrough = 112;
+ const short dbQSetOperation = 128;
+ const short dbQSPTBulk = 144;
+ const TCHAR dbLangArabic[] = _T(";LANGID=0x0401;CP=1256;COUNTRY=0";);
+ const TCHAR dbLangCzech[] = _T(";LANGID=0x0405;CP=1250;COUNTRY=0";);
+ const TCHAR dbLangDutch[] = _T(";LANGID=0x0413;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangGeneral[] = _T(";LANGID=0x0409;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangGreek[] = _T(";LANGID=0x0408;CP=1253;COUNTRY=0";);
+ const TCHAR dbLangHebrew[] = _T(";LANGID=0x040D;CP=1255;COUNTRY=0";);
+ const TCHAR dbLangHungarian[] = _T(";LANGID=0x040E;CP=1250;COUNTRY=0";);
+ const TCHAR dbLangIcelandic[] = _T(";LANGID=0x040F;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangNordic[] = _T(";LANGID=0x041D;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangNorwDan[] = _T(";LANGID=0x0414;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangPolish[] = _T(";LANGID=0x0415;CP=1250;COUNTRY=0";);
+ const TCHAR dbLangCyrillic[] = _T(";LANGID=0x0419;CP=1251;COUNTRY=0";);
+ const TCHAR dbLangSpanish[] = _T(";LANGID=0x040A;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangSwedFin[] = _T(";LANGID=0x040B;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangTurkish[] = _T(";LANGID=0x041F;CP=1254;COUNTRY=0";);
+ const TCHAR dbLangJapanese[] = _T(";LANGID=0x0411;CP=932;COUNTRY=0";);
+ const TCHAR dbLangChineseSimplified[] = _T(";LANGID=0x0804;CP=936;COUNTRY=0";);
+ const TCHAR dbLangChineseTraditional[] = _T(";LANGID=0x0404;CP=950;COUNTRY=0";);
+ const TCHAR dbLangKorean[] = _T(";LANGID=0x040C;CP=494;COUNTRY=0";);
+ const TCHAR dbLangThai[] = _T(";LANGID=0x101E;CP=874;COUNTRY=0";);
+ const short dbVersion10 = 1;
+ const short dbEncrypt = 2;
+ const short dbDecrypt = 4;
+ const short dbVersion11 = 8;
+ const short dbVersion20 = 16;
+ const short dbVersion30 = 32;
+ const short dbSortNeutral = 1024;
+ const short dbSortArabic = 1025;
+ const short dbSortCyrillic = 1049;
+ const short dbSortCzech = 1029;
+ const short dbSortDutch = 1043;
+ const short dbSortGeneral = 1033;
+ const short dbSortGreek = 1032;
+ const short dbSortHebrew = 1037;
+ const short dbSortHungarian = 1038;
+ const short dbSortIcelandic = 1039;
+ const short dbSortNorwdan = 1030;
+ const short dbSortPDXIntl = 1033;
+ const short dbSortPDXNor = 1030;
+ const short dbSortPDXSwe = 1053;
+ const short dbSortPolish = 1045;
+ const short dbSortSpanish = 1034;
+ const short dbSortSwedFin = 1053;
+ const short dbSortTurkish = 1055;
+ const short dbSortJapanese = 1041;
+ const short dbSortChineseSimplified = 2052;
+ const short dbSortChineseTraditional = 1028;
+ const short dbSortKorean = 1036;
+ const short dbSortThai = 4126;
+ const short dbSortUndefined = -1;
+ const short dbFreeLocks = 1;
+ const long dbSecNoAccess = 0;
+ const long dbSecFullAccess = 1048575;
+ const long dbSecDelete = 65536;
+ const long dbSecReadSec = 131072;
+ const long dbSecWriteSec = 262144;
+ const long dbSecWriteOwner = 524288;
+ const long dbSecDBCreate = 1;
+ const long dbSecDBOpen = 2;
+ const long dbSecDBExclusive = 4;
+ const long dbSecDBAdmin = 8;
+ const long dbSecCreate = 1;
+ const long dbSecReadDef = 4;
+ const long dbSecWriteDef = 65548;
+ const long dbSecRetrieveData = 20;
+ const long dbSecInsertData = 32;
+ const long dbSecReplaceData = 64;
+ const long dbSecDeleteData = 128;
+ const long dbRepExportChanges = 1;
+ const long dbRepImportChanges = 2;
+ const long dbRepImpExpChanges = 4;
+ const long dbRepMakeReadOnly = 2;
+// Interface: _DAOCollection
+#undef INTERFACE
+#define INTERFACE _DAOCollection
+DECLARE_INTERFACE_(_DAOCollection, IDispatch)
+ {
+ STDMETHOD(get_Count) (THIS_ short FAR* c) PURE;
+ STDMETHOD(_NewEnum) (THIS_ IUnknown * FAR* ppunk) PURE;
+ STDMETHOD(Refresh) (THIS) PURE;
+ };
+
+// Interface: _DAODynaCollection
+#undef INTERFACE
+#define INTERFACE _DAODynaCollection
+DECLARE_INTERFACE_(_DAODynaCollection, _DAOCollection)
+ {
+ STDMETHOD(Append) (THIS_ IDispatch * Object) PURE;
+ STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
+ };
+
+// Interface: _DAO
+#undef INTERFACE
+#define INTERFACE _DAO
+DECLARE_INTERFACE_(_DAO, IDispatch)
+ {
+ STDMETHOD(get_Properties) (THIS_ DAOProperties FAR* FAR* ppprops) PURE;
+ };
+
+// Interface: _DAODBEngine
+#undef INTERFACE
+#define INTERFACE _DAODBEngine
+DECLARE_INTERFACE_(_DAODBEngine, _DAO)
+ {
+ STDMETHOD(get_Version) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_IniPath) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_IniPath) (THIS_ BSTR path) PURE;
+ STDMETHOD(put_DefaultUser) (THIS_ BSTR user) PURE;
+ STDMETHOD(put_DefaultPassword) (THIS_ BSTR pw) PURE;
+ STDMETHOD(get_LoginTimeout) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_LoginTimeout) (THIS_ short Timeout) PURE;
+ STDMETHOD(get_Workspaces) (THIS_ DAOWorkspaces FAR* FAR* ppworks) PURE;
+ STDMETHOD(get_Errors) (THIS_ DAOErrors FAR* FAR* pperrs) PURE;
+ STDMETHOD(Idle) (THIS_ VARIANT Action) PURE;
+ STDMETHOD(CompactDatabase) (THIS_ BSTR SrcName, BSTR DstName, VARIANT DstConnect, VARIANT Options, VARIANT SrcConnect) PURE;
+ STDMETHOD(RepairDatabase) (THIS_ BSTR Name) PURE;
+ STDMETHOD(RegisterDatabase) (THIS_ BSTR Dsn, BSTR Driver, VARIANT_BOOL Silent, BSTR Attributes) PURE;
+ STDMETHOD(CreateWorkspace) (THIS_ BSTR Name, BSTR UserName, BSTR Password, DAOWorkspace FAR* FAR* ppwrk) PURE;
+ STDMETHOD(OpenDatabase) (THIS_ BSTR Name, VARIANT Exclusive, VARIANT ReadOnly, VARIANT Connect, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(CreateDatabase) (THIS_ BSTR Name, BSTR Connect, VARIANT Option, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(FreeLocks) (THIS) PURE;
+ STDMETHOD(BeginTrans) (THIS) PURE;
+ STDMETHOD(CommitTrans) (THIS) PURE;
+ STDMETHOD(Rollback) (THIS) PURE;
+ STDMETHOD(SetDefaultWorkspace) (THIS_ BSTR Name, BSTR Password) PURE;
+ STDMETHOD(SetDataAccessOption) (THIS_ short Option, VARIANT Value) PURE;
+ STDMETHOD(ISAMStats) (THIS_ long StatNum, VARIANT Reset, long FAR* pl) PURE;
+ STDMETHOD(get_SystemDB) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_SystemDB) (THIS_ BSTR SystemDBPath) PURE;
+ };
+
+// Interface: DAOError
+#undef INTERFACE
+#define INTERFACE DAOError
+DECLARE_INTERFACE_(DAOError, IDispatch)
+ {
+ STDMETHOD(get_Number) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Source) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Description) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_HelpFile) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_HelpContext) (THIS_ long FAR* pl) PURE;
+ };
+
+// Interface: DAOErrors
+#undef INTERFACE
+#define INTERFACE DAOErrors
+DECLARE_INTERFACE_(DAOErrors, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOError FAR* FAR* pperr) PURE;
+ };
+
+// Interface: DAOWorkspace
+#undef INTERFACE
+#define INTERFACE DAOWorkspace
+DECLARE_INTERFACE_(DAOWorkspace, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
+ STDMETHOD(get_UserName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_UserName) (THIS_ BSTR UserName) PURE;
+ STDMETHOD(put_Password) (THIS_ BSTR Password) PURE;
+ STDMETHOD(get_IsolateODBCTrans) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_IsolateODBCTrans) (THIS_ short s) PURE;
+ STDMETHOD(get_Databases) (THIS_ DAODatabases FAR* FAR* ppdbs) PURE;
+ STDMETHOD(get_Users) (THIS_ DAOUsers FAR* FAR* ppusrs) PURE;
+ STDMETHOD(get_Groups) (THIS_ DAOGroups FAR* FAR* ppgrps) PURE;
+ STDMETHOD(BeginTrans) (THIS) PURE;
+ STDMETHOD(CommitTrans) (THIS) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(Rollback) (THIS) PURE;
+ STDMETHOD(OpenDatabase) (THIS_ BSTR Name, VARIANT Exclusive, VARIANT ReadOnly, VARIANT Connect, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(CreateDatabase) (THIS_ BSTR Name, BSTR Connect, VARIANT Option, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(CreateUser) (THIS_ VARIANT Name, VARIANT PID, VARIANT Password, DAOUser FAR* FAR* ppusr) PURE;
+ STDMETHOD(CreateGroup) (THIS_ VARIANT Name, VARIANT PID, DAOGroup FAR* FAR* ppgrp) PURE;
+ };
+
+// Interface: DAOWorkspaces
+#undef INTERFACE
+#define INTERFACE DAOWorkspaces
+DECLARE_INTERFACE_(DAOWorkspaces, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOWorkspace FAR* FAR* ppwrk) PURE;
+ };
+
+// Interface: _DAOTableDef
+#undef INTERFACE
+#define INTERFACE _DAOTableDef
+DECLARE_INTERFACE_(_DAOTableDef, _DAO)
+ {
+ STDMETHOD(get_Attributes) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Attributes) (THIS_ long Attributes) PURE;
+ STDMETHOD(get_Connect) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Connect) (THIS_ BSTR Connection) PURE;
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
+ STDMETHOD(get_SourceTableName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_SourceTableName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_ValidationText) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationText) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ValidationRule) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationRule) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_RecordCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(get_Indexes) (THIS_ DAOIndexes FAR* FAR* ppidxs) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(RefreshLink) (THIS) PURE;
+ STDMETHOD(CreateField) (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
+ STDMETHOD(CreateIndex) (THIS_ VARIANT Name, DAOIndex FAR* FAR* ppidx) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ STDMETHOD(get_ConflictTable) (THIS_ BSTR FAR* pbstr) PURE;
+ };
+
+// Interface: DAOTableDefs
+#undef INTERFACE
+#define INTERFACE DAOTableDefs
+DECLARE_INTERFACE_(DAOTableDefs, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOTableDef FAR* FAR* pptdf) PURE;
+ };
+
+// Interface: DAODatabase
+#undef INTERFACE
+#define INTERFACE DAODatabase
+DECLARE_INTERFACE_(DAODatabase, _DAO)
+ {
+ STDMETHOD(get_CollatingOrder) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Connect) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_QueryTimeout) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_QueryTimeout) (THIS_ short Timeout) PURE;
+ STDMETHOD(get_Transactions) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Version) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_RecordsAffected) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_TableDefs) (THIS_ DAOTableDefs FAR* FAR* pptdfs) PURE;
+ STDMETHOD(get_QueryDefs) (THIS_ DAOQueryDefs FAR* FAR* ppqdfs) PURE;
+ STDMETHOD(get_Relations) (THIS_ DAORelations FAR* FAR* pprls) PURE;
+ STDMETHOD(get_Containers) (THIS_ DAOContainers FAR* FAR* ppctns) PURE;
+ STDMETHOD(get_Recordsets) (THIS_ DAORecordsets FAR* FAR* pprsts) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(Execute) (THIS_ BSTR Query, VARIANT Options) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ BSTR Name, VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ STDMETHOD(CreateRelation) (THIS_ VARIANT Name, VARIANT Table, VARIANT ForeignTable, VARIANT Attributes, DAORelation FAR* FAR* pprel) PURE;
+ STDMETHOD(CreateTableDef) (THIS_ VARIANT Name, VARIANT Attributes, VARIANT SourceTablename, VARIANT Connect, DAOTableDef FAR* FAR* pptdf) PURE;
+ STDMETHOD(BeginTrans) (THIS) PURE;
+ STDMETHOD(CommitTrans) (THIS) PURE;
+ STDMETHOD(Rollback) (THIS) PURE;
+ STDMETHOD(CreateDynaset) (THIS_ BSTR Name, VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateQueryDef) (THIS_ VARIANT Name, VARIANT SQLText, DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(CreateSnapshot) (THIS_ BSTR Source, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(DeleteQueryDef) (THIS_ BSTR Name) PURE;
+ STDMETHOD(ExecuteSQL) (THIS_ BSTR SQL, long FAR* pl) PURE;
+ STDMETHOD(ListFields) (THIS_ BSTR Name, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(ListTables) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(OpenQueryDef) (THIS_ BSTR Name, DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(OpenTable) (THIS_ BSTR Name, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(get_ReplicaID) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_DesignMasterID) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_DesignMasterID) (THIS_ BSTR MasterID) PURE;
+ STDMETHOD(Synchronize) (THIS_ BSTR DbPathName, VARIANT ExchangeType) PURE;
+ STDMETHOD(MakeReplica) (THIS_ BSTR PathName, BSTR Description, VARIANT Options) PURE;
+ STDMETHOD(put_Connect) (THIS_ BSTR ODBCConnnect) PURE;
+ STDMETHOD(NewPassword) (THIS_ BSTR bstrOld, BSTR bstrNew) PURE;
+ };
+
+// Interface: DAODatabases
+#undef INTERFACE
+#define INTERFACE DAODatabases
+DECLARE_INTERFACE_(DAODatabases, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAODatabase FAR* FAR* ppdb) PURE;
+ };
+
+// Interface: _DAOQueryDef
+#undef INTERFACE
+#define INTERFACE _DAOQueryDef
+DECLARE_INTERFACE_(_DAOQueryDef, _DAO)
+ {
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ODBCTimeout) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_ODBCTimeout) (THIS_ short timeout) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* pi) PURE;
+ STDMETHOD(get_SQL) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_SQL) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Connect) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Connect) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ReturnsRecords) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_ReturnsRecords) (THIS_ VARIANT_BOOL f) PURE;
+ STDMETHOD(get_RecordsAffected) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(get_Parameters) (THIS_ DAOParameters FAR* FAR* ppprms) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(_OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(_Copy) (THIS_ DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(Execute) (THIS_ VARIANT Options) PURE;
+ STDMETHOD(Compare) (THIS_ DAOQueryDef FAR* pQdef, short FAR* lps) PURE;
+ STDMETHOD(CreateDynaset) (THIS_ VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateSnapshot) (THIS_ VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(ListParameters) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ };
+
+// Interface: DAOQueryDefs
+#undef INTERFACE
+#define INTERFACE DAOQueryDefs
+DECLARE_INTERFACE_(DAOQueryDefs, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOQueryDef FAR* FAR* ppqdef) PURE;
+ };
+
+// Interface: DAORecordset
+#undef INTERFACE
+#define INTERFACE DAORecordset
+DECLARE_INTERFACE_(DAORecordset, _DAO)
+ {
+ STDMETHOD(get_BOF) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Bookmark) (THIS_ SAFEARRAY FAR* FAR* ppsach) PURE;
+ STDMETHOD(put_Bookmark) (THIS_ SAFEARRAY FAR* FAR* psach) PURE;
+ STDMETHOD(get_Bookmarkable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_EOF) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Filter) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Filter) (THIS_ BSTR Filter) PURE;
+ STDMETHOD(get_Index) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Index) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_LastModified) (THIS_ SAFEARRAY FAR* FAR* ppsa) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LockEdits) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_LockEdits) (THIS_ VARIANT_BOOL Lock) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_NoMatch) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Sort) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Sort) (THIS_ BSTR Sort) PURE;
+ STDMETHOD(get_Transactions) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(get_RecordCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Restartable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_ValidationText) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_ValidationRule) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_CacheStart) (THIS_ SAFEARRAY FAR* FAR* ppsa) PURE;
+ STDMETHOD(put_CacheStart) (THIS_ SAFEARRAY FAR* FAR* psa) PURE;
+ STDMETHOD(get_CacheSize) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_CacheSize) (THIS_ long CacheSize) PURE;
+ STDMETHOD(get_PercentPosition) (THIS_ float FAR* pd) PURE;
+ STDMETHOD(put_PercentPosition) (THIS_ float Position) PURE;
+ STDMETHOD(get_AbsolutePosition) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_AbsolutePosition) (THIS_ long Position) PURE;
+ STDMETHOD(get_EditMode) (THIS_ short FAR* pi) PURE;
+ STDMETHOD(get_ODBCFetchCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_ODBCFetchDelay) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Parent) (THIS_ DAODatabase FAR* FAR* pdb) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(get_Indexes) (THIS_ DAOIndexes FAR* FAR* ppidxs) PURE;
+ STDMETHOD(CancelUpdate) (THIS) PURE;
+ STDMETHOD(AddNew) (THIS) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(Delete) (THIS) PURE;
+ STDMETHOD(Edit) (THIS) PURE;
+ STDMETHOD(FindFirst) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(FindLast) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(FindNext) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(FindPrevious) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(MoveFirst) (THIS) PURE;
+ STDMETHOD(MoveLast) (THIS) PURE;
+ STDMETHOD(MoveNext) (THIS) PURE;
+ STDMETHOD(MovePrevious) (THIS) PURE;
+ STDMETHOD(Seek) (THIS_ BSTR Comparison, VARIANT Key1, VARIANT Key2, VARIANT Key3, VARIANT Key4, VARIANT Key5, VARIANT Key6, VARIANT Key7, VARIANT Key8, VARIANT Key9, VARIANT Key10, VARIANT Key11, VARIANT Key12, VARIANT Key13) PURE;
+ STDMETHOD(Update) (THIS) PURE;
+ STDMETHOD(Clone) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(Requery) (THIS_ VARIANT NewQueryDef) PURE;
+ STDMETHOD(Move) (THIS_ long Rows, VARIANT StartBookmark) PURE;
+ STDMETHOD(FillCache) (THIS_ VARIANT Rows, VARIANT StartBookmark) PURE;
+ STDMETHOD(CreateDynaset) (THIS_ VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateSnapshot) (THIS_ VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CopyQueryDef) (THIS_ DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(ListFields) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(ListIndexes) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(GetRows) (THIS_ VARIANT cRows, VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_Collect) (THIS_ VARIANT index, VARIANT FAR* pvar) PURE;
+ STDMETHOD(put_Collect) (THIS_ VARIANT index, VARIANT value) PURE;
+ };
+
+// Interface: DAORecordsets
+#undef INTERFACE
+#define INTERFACE DAORecordsets
+DECLARE_INTERFACE_(DAORecordsets, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAORecordset FAR* FAR* pprst) PURE;
+ };
+
+// Interface: _DAOField
+#undef INTERFACE
+#define INTERFACE _DAOField
+DECLARE_INTERFACE_(_DAOField, _DAO)
+ {
+ STDMETHOD(get_CollatingOrder) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_Type) (THIS_ short Type) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
+ STDMETHOD(get_Size) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Size) (THIS_ long Size) PURE;
+ STDMETHOD(get_SourceField) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_SourceTable) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Value) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(put_Value) (THIS_ VARIANT Val) PURE;
+ STDMETHOD(get_Attributes) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Attributes) (THIS_ long Attr) PURE;
+ STDMETHOD(get_OrdinalPosition) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_OrdinalPosition) (THIS_ short Pos) PURE;
+ STDMETHOD(get_ValidationText) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationText) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ValidateOnSet) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_ValidateOnSet) (THIS_ VARIANT_BOOL Validate) PURE;
+ STDMETHOD(get_ValidationRule) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationRule) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_DefaultValue) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_DefaultValue) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Required) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Required) (THIS_ VARIANT_BOOL fReq) PURE;
+ STDMETHOD(get_AllowZeroLength) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_AllowZeroLength) (THIS_ VARIANT_BOOL fAllow) PURE;
+ STDMETHOD(get_DataUpdatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_ForeignName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ForeignName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(AppendChunk) (THIS_ VARIANT Val) PURE;
+ STDMETHOD(GetChunk) (THIS_ long Offset, long Bytes, VARIANT FAR* pvar) PURE;
+ STDMETHOD(FieldSize) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ STDMETHOD(get_CollectionIndex) (THIS_ short FAR* i) PURE;
+ };
+
+// Interface: DAOFields
+#undef INTERFACE
+#define INTERFACE DAOFields
+DECLARE_INTERFACE_(DAOFields, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOField FAR* FAR* ppfld) PURE;
+ };
+
+// Interface: _DAOIndex
+#undef INTERFACE
+#define INTERFACE _DAOIndex
+DECLARE_INTERFACE_(_DAOIndex, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Foreign) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Unique) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Unique) (THIS_ VARIANT_BOOL fUnique) PURE;
+ STDMETHOD(get_Clustered) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Clustered) (THIS_ VARIANT_BOOL fClustered) PURE;
+ STDMETHOD(get_Required) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Required) (THIS_ VARIANT_BOOL fRequired) PURE;
+ STDMETHOD(get_IgnoreNulls) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_IgnoreNulls) (THIS_ VARIANT_BOOL fIgnoreNulls) PURE;
+ STDMETHOD(get_Primary) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Primary) (THIS_ VARIANT_BOOL fPrimary) PURE;
+ STDMETHOD(get_DistinctCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Fields) (THIS_ VARIANT FAR* pv) PURE;
+ STDMETHOD(put_Fields) (THIS_ VARIANT v) PURE;
+ STDMETHOD(CreateField) (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ };
+
+// Interface: DAOIndexes
+#undef INTERFACE
+#define INTERFACE DAOIndexes
+DECLARE_INTERFACE_(DAOIndexes, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOIndex FAR* FAR* ppidx) PURE;
+ };
+
+// Interface: DAOIndexFields
+#undef INTERFACE
+#define INTERFACE DAOIndexFields
+DECLARE_INTERFACE_(DAOIndexFields, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, VARIANT FAR* pvar) PURE;
+ };
+
+// Interface: DAOParameter
+#undef INTERFACE
+#define INTERFACE DAOParameter
+DECLARE_INTERFACE_(DAOParameter, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Value) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(put_Value) (THIS_ VARIANT val) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ps) PURE;
+ };
+
+// Interface: DAOParameters
+#undef INTERFACE
+#define INTERFACE DAOParameters
+DECLARE_INTERFACE_(DAOParameters, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOParameter FAR* FAR* ppprm) PURE;
+ };
+
+// Interface: _DAOUser
+#undef INTERFACE
+#define INTERFACE _DAOUser
+DECLARE_INTERFACE_(_DAOUser, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(put_PID) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(put_Password) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Groups) (THIS_ DAOGroups FAR* FAR* ppgrps) PURE;
+ STDMETHOD(NewPassword) (THIS_ BSTR bstrOld, BSTR bstrNew) PURE;
+ STDMETHOD(CreateGroup) (THIS_ VARIANT Name, VARIANT PID, DAOGroup FAR* FAR* ppgrp) PURE;
+ };
+
+// Interface: DAOUsers
+#undef INTERFACE
+#define INTERFACE DAOUsers
+DECLARE_INTERFACE_(DAOUsers, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOUser FAR* FAR* ppusr) PURE;
+ };
+
+// Interface: _DAOGroup
+#undef INTERFACE
+#define INTERFACE _DAOGroup
+DECLARE_INTERFACE_(_DAOGroup, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(put_PID) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Users) (THIS_ DAOUsers FAR* FAR* ppusrs) PURE;
+ STDMETHOD(CreateUser) (THIS_ VARIANT Name, VARIANT PID, VARIANT Password, DAOUser FAR* FAR* ppusr) PURE;
+ };
+
+// Interface: DAOGroups
+#undef INTERFACE
+#define INTERFACE DAOGroups
+DECLARE_INTERFACE_(DAOGroups, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOGroup FAR* FAR* ppgrp) PURE;
+ };
+
+// Interface: _DAORelation
+#undef INTERFACE
+#define INTERFACE _DAORelation
+DECLARE_INTERFACE_(_DAORelation, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Table) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Table) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ForeignTable) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ForeignTable) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Attributes) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Attributes) (THIS_ long attr) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(CreateField) (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
+ };
+
+// Interface: DAORelations
+#undef INTERFACE
+#define INTERFACE DAORelations
+DECLARE_INTERFACE_(DAORelations, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAORelation FAR* FAR* pprel) PURE;
+ };
+
+// Interface: DAOProperty
+#undef INTERFACE
+#define INTERFACE DAOProperty
+DECLARE_INTERFACE_(DAOProperty, _DAO)
+ {
+ STDMETHOD(get_Value) (THIS_ VARIANT FAR* pval) PURE;
+ STDMETHOD(put_Value) (THIS_ VARIANT val) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ptype) PURE;
+ STDMETHOD(put_Type) (THIS_ short type) PURE;
+ STDMETHOD(get_Inherited) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ };
+
+// Interface: DAOProperties
+#undef INTERFACE
+#define INTERFACE DAOProperties
+DECLARE_INTERFACE_(DAOProperties, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOProperty FAR* FAR* ppprop) PURE;
+ };
+
+// Interface: DAOContainer
+#undef INTERFACE
+#define INTERFACE DAOContainer
+DECLARE_INTERFACE_(DAOContainer, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Owner) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Owner) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_UserName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_UserName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Permissions) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Permissions) (THIS_ long permissions) PURE;
+ STDMETHOD(get_Inherit) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Inherit) (THIS_ VARIANT_BOOL fInherit) PURE;
+ STDMETHOD(get_Documents) (THIS_ DAODocuments FAR* FAR* ppdocs) PURE;
+ STDMETHOD(get_AllPermissions) (THIS_ long FAR* pl) PURE;
+ };
+
+// Interface: DAOContainers
+#undef INTERFACE
+#define INTERFACE DAOContainers
+DECLARE_INTERFACE_(DAOContainers, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOContainer FAR* FAR* ppctn) PURE;
+ };
+
+// Interface: DAODocument
+#undef INTERFACE
+#define INTERFACE DAODocument
+DECLARE_INTERFACE_(DAODocument, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Owner) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Owner) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Container) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_UserName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_UserName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Permissions) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Permissions) (THIS_ long permissions) PURE;
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_AllPermissions) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ };
+
+// Interface: DAODocuments
+#undef INTERFACE
+#define INTERFACE DAODocuments
+DECLARE_INTERFACE_(DAODocuments, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAODocument FAR* FAR* ppdoc) PURE;
+ };
+
+#endif // _DBDAOINT_H_
diff --git a/public/sdk/inc/mfc40/l.chs/afxctl.rc b/public/sdk/inc/mfc40/l.chs/afxctl.rc
new file mode 100644
index 000000000..96e888fc0
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.chs/afxctl.rc
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌØÐÔÃû(&N)",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "×ÖÌå(&F)",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "×ÖÐÎ(&Y)",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "´óС(&S)",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Ч¹û",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "ɾ³ýÏß(&K)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "Ï»®Ïß(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "×ÖÌå·¶Àý",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌØÐÔÃû(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "ϵͳÑÕÉ«(&C)",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌØÐÔÃû(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ä¯ÀÀ(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "Çå³ý(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Ô¤ÔÄ:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(δ֪)"
+ AFX_IDS_COLOR_DESKTOP "̨ʽ"
+ AFX_IDS_COLOR_APPWORKSPACE "Ó¦ÓóÌÐò¹¤×÷Çø"
+ AFX_IDS_COLOR_WNDBACKGND "´°¿Ú±³¾°"
+ AFX_IDS_COLOR_WNDTEXT "´°¿ÚÎı¾"
+ AFX_IDS_COLOR_MENUBAR "²Ëµ¥À¸"
+ AFX_IDS_COLOR_MENUTEXT "²Ëµ¥ÎÄ×Ö"
+ AFX_IDS_COLOR_ACTIVEBAR "»î¶¯µÄ±êÌâÀ¸"
+ AFX_IDS_COLOR_INACTIVEBAR "²»»î¶¯µÄ±êÌâÀ¸"
+ AFX_IDS_COLOR_ACTIVETEXT "»î¶¯µÄ±êÌâÀ¸ÎÄ×Ö"
+ AFX_IDS_COLOR_INACTIVETEXT "²»»î¶¯µÄ±êÌâÀ¸ÎÄ×Ö"
+ AFX_IDS_COLOR_ACTIVEBORDER "»î¶¯±ß¿ò"
+ AFX_IDS_COLOR_INACTIVEBORDER "²»»î¶¯±ß¿ò"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_COLOR_WNDFRAME "´°¿Ú¿ò¼Ü"
+ AFX_IDS_COLOR_SCROLLBARS "¾í¶¯Ìõ"
+ AFX_IDS_COLOR_BTNFACE "°´Å¥±íÃæ"
+ AFX_IDS_COLOR_BTNSHADOW "°´Å¥ÒõÓ°"
+ AFX_IDS_COLOR_BTNTEXT "°´Å¥ÎÄ×Ö"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "°´Å¥Í»³ö"
+ AFX_IDS_COLOR_DISABLEDTEXT "ʧЧÎÄ×Ö"
+ AFX_IDS_COLOR_HIGHLIGHT "Í»³ö"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Í»³öµÄÎÄ×Ö"
+ AFX_IDS_REGULAR "Õý³£Ìå"
+ AFX_IDS_BOLD "ºÚÌå"
+ AFX_IDS_ITALIC "бÌå"
+ AFX_IDS_BOLDITALIC "ºÚбÌå"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+ AFX_IDS_DISPLAYSTRING_FONT "(×ÖÌå)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(ÑÕÉ«)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(ͼƬ - %s)"
+ AFX_IDS_PICTUREFILTER "ËùÓÐͼƬÀàÐÍ|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico|Metafiles (*.wmf;*.emf)|*.emf;*.wmf|ËùÓÐÎļþ(*.*)|*.*||"
+ AFX_IDS_PICTYPE_UNKNOWN "δ֪"
+ AFX_IDS_PICTYPE_NONE "ÎÞ"
+ AFX_IDS_PICTYPE_BITMAP "λͼ"
+ AFX_IDS_PICTYPE_METAFILE "ÔªÎļþ"
+ AFX_IDS_PICTYPE_ICON "ͼ±ê"
+ AFX_IDS_COLOR_PPG "ÑÕÉ«ÌØÐÔÒ³"
+ AFX_IDS_COLOR_PPG_CAPTION "ÑÕÉ«"
+ AFX_IDS_FONT_PPG "×ÖÌåÌØÐÔÒ³"
+ AFX_IDS_FONT_PPG_CAPTION "×ÖÌå"
+ AFX_IDS_PICTURE_PPG "ͼƬÌØÐÔÒ³"
+ AFX_IDS_PICTURE_PPG_CAPTION "ͼƬ"
+ AFX_IDS_BORDERSTYLE_0 "0 - ÎÞ"
+ AFX_IDS_BORDERSTYLE_1 "1 - ¹Ì¶¨µ¥¸ö"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "±à¼­(&E)"
+ AFX_IDS_VERB_PROPERTIES "ÌØÐÔ(&P)..."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "ÎÞ·¨´ò¿ªÍ¼Æ¬Îļþ %1¡£´ËÎļþ¿ÉÄܲ»´æÔÚ»ò²»¿É¶Á¡£"
+ AFX_IDP_PICTURECANTLOAD "ÎÞ·¨×°ÈëͼƬÎļþ %1¡£¸ÃÎļþ¿ÉÄܸñʽ²»ÕýÈ·¡£"
+ AFX_IDP_PICTURETOOLARGE "ÎÞ·¨×°ÈëͼƬÎļþ %1¡£¸ÃÎļþÌ«´óÄÚ´æÎÞ·¨ÈÝÄÉ¡£"
+ AFX_IDP_PICTUREREADFAILED
+ "ÎÞ·¨×°ÈëͼƬÎļþ %1¡£Î´Óè¾ßÌå˵Ã÷µÄ¶Á²Ù×÷ʧ°Ü¡£"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "ä¯ÀÀͼƬ"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "·Ç·¨º¯Êýµ÷ÓÃ"
+ AFX_IDP_E_OVERFLOW "Òç³ö"
+ AFX_IDP_E_OUTOFMEMORY "ÄÚ´æ²»×ã"
+ AFX_IDP_E_DIVISIONBYZERO "±»Áã³ý"
+ AFX_IDP_E_OUTOFSTRINGSPACE "×Ö·û´®¿Õ¼ä²»×ã"
+ AFX_IDP_E_OUTOFSTACKSPACE "¶ÑÕ»¿Õ¼ä²»×ã"
+ AFX_IDP_E_BADFILENAMEORNUMBER "ÎļþÃû»òÎļþºÅ´í"
+ AFX_IDP_E_FILENOTFOUND "ÎļþδÕÒµ½"
+ AFX_IDP_E_BADFILEMODE "Îļþģʽ´í"
+ AFX_IDP_E_FILEALREADYOPEN "ÎļþÒѾ­´ò¿ª"
+ AFX_IDP_E_DEVICEIOERROR "É豸ÊäÈë/Êä³ö³ö´í"
+ AFX_IDP_E_FILEALREADYEXISTS "ÎļþÒѾ­´æÔÚ"
+ AFX_IDP_E_BADRECORDLENGTH "¼Ç¼³¤¶È´í"
+ AFX_IDP_E_DISKFULL "´ÅÅÌÒÑÂú"
+ AFX_IDP_E_BADRECORDNUMBER "¼Ç¼ºÅÂë´í"
+ AFX_IDP_E_BADFILENAME "ÎļþÃû´í"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "ÎļþÌ«¶à"
+ AFX_IDP_E_DEVICEUNAVAILABLE "É豸²»ÊʺÏ"
+ AFX_IDP_E_PERMISSIONDENIED "δ»ñµÃÐí¿É"
+ AFX_IDP_E_DISKNOTREADY "´ÅÅÌδ׼±¸ºÃ"
+ AFX_IDP_E_PATHFILEACCESSERROR "·¾¶/Îļþ·ÃÎÊ´íÎó"
+ AFX_IDP_E_PATHNOTFOUND "ûÓÐÕÒµ½Â·¾¶"
+ AFX_IDP_E_INVALIDPATTERNSTRING "ÎÞЧµÄ×Ö·û´®ÐÍÑù"
+ AFX_IDP_E_INVALIDUSEOFNULL "¿ÕֵʹÓò»µ±"
+ AFX_IDP_E_INVALIDFILEFORMAT "ÎÞЧµÄÎļþ¸ñʽ"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "ÎÞЧµÄÌØÐÔÖµ"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "ÎÞЧµÄÊý×éϱê"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "¸ÃÌØÐÔÔÚÔËÐÐʱ¿Ì²»ÄÜÉèÖÃ"
+ AFX_IDP_E_SETNOTSUPPORTED "¸ÃÌØÐÔΪֻ¶ÁÌØÐÔ"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "ʹÓÃÌØÐÔÊý×éʱ±ØÐëÖ¸Ã÷Êý×éϱê"
+ AFX_IDP_E_SETNOTPERMITTED "²»¿ÉÔÚÕâ¸ö¿ØÖÆÉÏÉèÖÃÌØÐÔ"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "¸ÃÌØÐÔ²»¿ÉÔÚÔËÐÐʱ¿Ì¶ÁÈ¡"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "¸ÃÌØÐÔΪֻдÌØÐÔ"
+ AFX_IDP_E_PROPERTYNOTFOUND "ûÓÐÕÒµ½ÌØÐÔ"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "ÎÞЧµÄ¼ôÌù°å¸ñʽ"
+ AFX_IDP_E_INVALIDPICTURE "ÎÞЧͼƬ"
+ AFX_IDP_E_PRINTERERROR "´òÓ¡»ú³ö´í"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "ÎÞ·¨´´½¨´æÖü¹ý³ÌËùÐèÒªµÄÁÙʱÎļþ"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "ûÓÐÕÒµ½Òª²éÕÒµÄÎı¾"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "ÒªÌæ»»µÄÎı¾Ì«³¤"
+END
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.chs/afxdb.rc b/public/sdk/inc/mfc40/l.chs/afxdb.rc
new file mode 100644
index 000000000..239faf373
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.chs/afxdb.rc
@@ -0,0 +1,97 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "ÊÔͼÁ¬½ÓÊý¾ÝԴʧ°Ü"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "¼Ç¼¼¯½öÖ§³ÖÏòÇ°Òƶ¯¡£"
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "ÊÔͼ´ò¿ª±í¸ñʧ°Ü¡ªÎ´Ö¸Ã÷Òª¼ìË÷µÄÁС£"
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "²éѯ·µ»ØµÄÁÐÊý¾ÝÀàÐÍÓëÆÚÍû²»·û¡£"
+ AFX_IDP_SQL_ILLEGAL_MODE "¸üлòɾ³ýµÄÆóͼʧ°ÜÁË¡£"
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "¶àÐÐÊý¾Ý±»¸üС£"
+ AFX_IDP_SQL_NO_CURRENT_RECORD "²Ù×÷ʧ°Ü£¬ÎÞµ±Ç°¼Ç¼¡£"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "¸üлòɾ³ý²Ù×÷δÉæ¼°ÈκÎÊý¾ÝÐС£"
+ AFX_IDP_SQL_RECORDSET_READONLY "¼Ç¼¼¯ÊÇÖ»¶Á"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö Microsoft »ù´¡À೤¶þ½øÖÆÊý¾ÝÄ£ÐÍ¡£"
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "×°ÈëËùÐèµÄ ODBC32.DLL ²¿¼þµÄÆóͼʧ°Ü¡£"
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö¶¯Ì¬¼Ç¼¼¯¡£"
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ÒªÖ§³Ö¿ìÕÕ¹¦ÄÜ£¬ODBC ¾²Ì¬ÓαêÊDZØÒªµÄ¡£"
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC Çý¶¯³ÌÐòÓë Microsoft »ù´¡ÀàÊý¾Ý¿âÀ಻ƥÅä (API_CONFORMANCE >= SQL_OAC_LEVEL1 ±ØÐë³ÉÁ¢)¡£"
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC Çý¶¯³ÌÐòÓë Microsoft »ù´¡ÀàÊý¾Ý¿âÀ಻ƥÅä (API_CONFORMANCE >= SQL_OAC_MINIMUM ±ØÐë³ÉÁ¢)¡£"
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "ÊÔͼԽ¹ýÊý¾ÝµÄÓÐЧ´æÖüÇø¼ä¡£"
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö¶¯Ì¬¼Ç¼¼¯¡£"
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ÐèÒª·ûºÏ ODBC µÄ¶þ¼¶±ê×¼µÄÇý¶¯³ÌÐò¡£"
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö¶¨Î»¸üС£"
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "²»Ö§³ÖËùÒªÇóµÄËøģʽ¡£"
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Êý¾Ý±»½Ø¶Ï¡£"
+ AFX_IDP_SQL_ROW_FETCH
+ "¼ìË÷¼Ç¼³ö´í¡£"
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "ûÓÐÕÒµ½ËùÐèµÄ ODBC ½øÈëµã¡£È·±£ ODBC °²×°ÕýÈ·¡£"
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "¸üлòɾ³ý²Ù×÷ʧ°Ü¡£"
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "¡°ODBCÇý¶¯³ÌÐò²»Ö§³Ö¶¯Ì¬Ö¸Õë¡£¡±"
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "¡°ÎÞ·¨¶ÔDAO/Jet dbÒýÇæ½øÐгõʼ»¯¡£¡±"
+ AFX_IDP_DAO_DFX_BIND
+ "¡°´íµÄDFXÖµ²ÎÊý¡£¡±"
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "¡°DAO TableDef»òQueryDefûÓдò¿ª¡£¡±"
+ AFX_IDP_DAO_ROWTOOSHORT
+ "¡°GetRows ʧ°Ü¡£·ÖÅä¸øÐеÄÄÚ´æ²»¹»¡£¡±"
+ AFX_IDP_DAO_BADBINDINFO
+ "¡°GetRows ¸³Öµ´íÎ󡣿ÉÄÜÊÇÊý¾ÝÀàÐͲ»Æ¥ÅäÔì³ÉµÄ¡£¡±"
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "¡°GetRows ʧ°Ü¡£ËùÇëÇóµÄÁв»ÊǸüǼֵµÄÒ»¸ö³É·Ö¡£¡±"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc40/l.chs/afxolecl.rc b/public/sdk/inc/mfc40/l.chs/afxolecl.rc
new file mode 100644
index 000000000..30dd9b7dc
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.chs/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "ÎÞ·¨¼¤»îÒ»¸ö¾²Ì¬ OLE ¶ÔÏó¡£"
+ AFX_IDP_FAILED_TO_CONNECT "Á¬½Óʧ°Ü¡£\nÁ´½Ó¿ÉÄÜÒѾ­¶ÏÁË¡£"
+ AFX_IDP_SERVER_BUSY "ÎÞ·¨´¦ÀíÃüÁ·þÎñÆ÷³ÌÐòÕýæ¡£"
+ AFX_IDP_BAD_VERB "Ö´ÐзþÎñÆ÷³ÌÐò²Ù×÷ʧ°Ü¡£"
+ AFX_IDP_FAILED_TO_LAUNCH "Æô¶¯·þÎñÆ÷Ó¦ÓóÌÐòʧ°Ü¡£"
+ AFX_IDS_UPDATING_ITEMS "¸üРOLE ¶ÔÏó"
+ AFX_IDP_FAILED_TO_CONVERT "ת»» OLE ¶ÔÏóʧ°Ü¡£"
+ AFX_IDP_ASK_TO_DISCARD "ÔÚÍ˳ö Windows ʱÎÞ·¨±£´æ OLE ¶ÔÏó£¡\n·ÅÆúËùÓжÔ%1µÄ¸Ä¶¯£¿"
+ AFX_IDP_FAILED_TO_CREATE "Failed to create object. Make sure the application is entered in the system registry."
+
+ AFX_IDS_METAFILE_FORMAT "ͼƬ(ÔªÎļþ)\nÒ»·ùͼƬ"
+ AFX_IDS_DIB_FORMAT "É豸¶ÀÁ¢Î»Í¼\nÒ»·ùÉ豸¶ÀÁ¢Î»Í¼"
+ AFX_IDS_BITMAP_FORMAT "λͼ\nÒ»·ùλͼ"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Ç¿»¯Îı¾(RTF)\n×ÖÌåºÍ¶ÎÂä¸ñʽ»¯µÄÎı¾"
+ AFX_IDS_TEXT_FORMAT "δ¸ñʽ»¯Îı¾\nδ¾­¹ýÈκθñʽ»¯µÄÎı¾"
+
+ AFX_IDS_INVALID_CURRENCY "ÎÞЧµÄ»õ±Ò¡£"
+ AFX_IDS_INVALID_DATETIME "ÎÞЧµÄÈÕÆÚʱ¼ä¡£"
+ AFX_IDS_INVALID_DATETIMESPAN "ÎÞЧµÄÈÕÆÚʱ¼ä¿ç¶È¡£"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.chs/afxolesv.rc b/public/sdk/inc/mfc40/l.chs/afxolesv.rc
new file mode 100644
index 000000000..b7bc22506
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.chs/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "ÔÚ¼ÌÐøÔËÐÐÇ°¶Ô %1 ½øÐиüУ¿"
+ AFX_IDP_FAILED_TO_UPDATE, "²»Äܸüпͻ§¡£"
+
+ AFX_IDP_FAILED_TO_REGISTER, "×¢²áʧ°Ü¡£OLE ¹¦ÄÜ¿ÉÄܹ¤×÷²»Õý³£¡£"
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "¸üÐÂϵͳע²á¼Ç¼ʧ°Ü¡£\nÇëÊÔÓà REGEDIT¡£"
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 ÔÚ %2 ÖÐ"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "Í˳ö²¢»Øµ½ %1(&X)"
+ AFX_IDS_UPDATE_MENU, "¸üР%1(&U)"
+ AFX_IDS_SAVEFILECOPY, "±£´æ¸±±¾Îª"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc40/l.chs/afxprint.rc b/public/sdk/inc/mfc40/l.chs/afxprint.rc
new file mode 100644
index 000000000..939fe8af1
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.chs/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Sans Serif"
+BEGIN
+ CTEXT "´òÓ¡",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "ÔÚ...ÉÏ",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "È¡Ïû",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "È¡Ïû",IDCANCEL,46,45,40,15
+ CTEXT "°´ Cmd-. °´Å¥ÒÔÈ¡Ïû¡£",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "´òÓ¡(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "ÏÂÒ»Ò³(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "Ç°Ò»Ò³(&V)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "·Å´ó(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "ËõС(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "¹Ø±Õ(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "´òÓ¡(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ÏÂÒ»Ò³(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "Ç°Ò»Ò³(&V)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "·Å´ó(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "ËõС(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "¹Ø±Õ(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "´òÓ¡(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ÏÂÒ»(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "Ç°Ò»(&V)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "Èë(&I)",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "³ö(&O)",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "¹Ø±Õ(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "ÓÚ %1" // for print output
+ AFX_IDS_ONEPAGE, "Ò»Ò³(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "Á½Ò³(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "µÚ %u Ò³" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "µÚ %u Ò³ \nµÚ %u Ò³-µÚ %u Ò³ \n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "´òÓ¡»úÎļþ (*.prn)|*.prn|ËùÓÐÎļþ (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Ó¡³öµ½Îļþ" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "µ½ %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc40/l.chs/afxres.rc b/public/sdk/inc/mfc40/l.chs/afxres.rc
new file mode 100644
index 000000000..5d56e0ce0
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.chs/afxres.rc
@@ -0,0 +1,211 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_OPENFILE, "´ò¿ª"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "±£´æΪ"
+ AFX_IDS_ALLFILTER, "ËùÓÐÎļþ (*.*)"
+ AFX_IDS_UNTITLED, "ÎÞ±êÌâ"
+#else
+ AFX_IDS_SAVEFILE, "±£´æÎĵµÎª:"
+ AFX_IDS_ALLFILTER, "ËùÓÐÎļþ"
+ AFX_IDS_UNTITLED, "ÎÞ±êÌâ"
+ AFX_IDS_UNNAMED_FILE, "һδÃüÃûÎļþ"
+ AFX_IDS_ABOUT, "¡°¹ØÓÚ%1\205¡±"
+#endif
+ AFX_IDS_HIDE, "Òþ²Ø(&H)"
+
+ AFX_IDS_MEMORY_EXCEPTION, "ÄÚ´æ²»×ã¡£"
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"ÊÔͼִÐÐϵͳ²»Ö§³ÖµÄ²Ù×÷¡£"
+ AFX_IDS_RESOURCE_EXCEPTION, "±ØÐèµÄ×ÊÔ´ÎÞ·¨µÃµ½¡£"
+ AFX_IDS_USER_EXCEPTION, "³öÏÖÁËδ֪µÄ´íÎó"
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "ÎÞЧµÄÎļþÃû¡£"
+ AFX_IDP_FAILED_TO_OPEN_DOC, "´ò¿ªÎĵµÊ§°Ü¡£"
+ AFX_IDP_FAILED_TO_SAVE_DOC, "±£´æÎĵµÊ§°Ü¡£"
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "½«¸Ä¶¯±£´æµ½ %1£¿"
+#else
+ AFX_IDP_ASK_TO_SAVE, "½«¸Ä¶¯±£´æµ½ %1 Îĵµ\042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "½¨Á¢¿ÕÎĵµÊ§°Ü¡£"
+ AFX_IDP_FILE_TOO_LARGE, "¸ÃÎļþÌ«´ó£¬ÎÞ·¨´ò¿ª¡£"
+ AFX_IDP_FAILED_TO_START_PRINT, "ÎÞ·¨Æô¶¯´òÓ¡×÷Òµ¡£"
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Æô¶¯°ïÖúʧ°Ü¡£"
+ AFX_IDP_INTERNAL_FAILURE, "ÄÚ²¿Ó¦ÓóÌÐò³ö´í¡£"
+ AFX_IDP_COMMAND_FAILURE, "ÃüÁîʧ°Ü¡£"
+ AFX_IDP_FAILED_MEMORY_ALLOC "ûÓÐ×ã¹»µÄÄÚ´æÖ´ÐвÙ×÷¡£"
+ AFX_IDP_GET_NOT_SUPPORTED, "ÎÞ·¨¶ÁֻдÌØÐÔ¡£"
+ AFX_IDP_SET_NOT_SUPPORTED, "ÎÞ·¨Ð´Ö»¶ÁÌØÐÔ¡£"
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "·ÇÔ¤ÆÚµÄÎļþ¸ñʽ¡£"
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "ÎÞ·¨ÕÒµ½¸ÃÎļþ¡£\nÇëÑéÖ¤¸ø³öµÄ·¾¶ºÍÎļþÃûÊÇ·ñÕýÈ·¡£"
+ AFX_IDP_FAILED_DISK_FULL "Ä¿µÄ´ÅÅÌÇý¶¯Æ÷ÒÑÂú¡£"
+#else
+ AFX_IDP_FAILED_INVALID_PATH "ÎÞ·¨ÕÒµ½\042%1Îļþ¡£\042ÇëÑéÖ¤¸ø³öµÄÎļþÃûÊÇ·ñÕýÈ·¡£"
+ AFX_IDP_FAILED_DISK_FULL "Ä¿µÄ´ÅÅÌÒÑÂú¡£"
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "ÎÞ·¨¶Ô %1 ½øÐжÁ²Ù×÷£¬ËüÒѾ­±»ÆäËûÈË´ò¿ª¡£"
+ AFX_IDP_FAILED_ACCESS_WRITE "ÎÞ·¨¶Ô %1 ½øÐÐд²Ù×÷£¬ÒòΪËüÊÇÖ»¶ÁÎļþ»òÒѾ­±»ÆäËûÈË´ò¿ª¡£"
+ AFX_IDP_FAILED_IO_ERROR_READ "ÔÚ¶Ô %1 ½øÐжÁ²Ù×÷ʱ·¢ÉúÁËÒ»¸ö·ÇÔ¤ÆڵĴíÎó¡£"
+ AFX_IDP_FAILED_IO_ERROR_WRITE "ÔÚ¶Ô %1 ½øÐÐд²Ù×÷ʱ·¢ÉúÁËÒ»¸ö·ÇÔ¤ÆڵĴíÎó¡£"
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Çë¼üÈëÒ»¸öÕûÊý¡£"
+ AFX_IDP_PARSE_REAL, "Çë¼üÈëÒ»¸öÊý¡£"
+ AFX_IDP_PARSE_INT_RANGE, "¡°ÇëÌîÈëÒ»¸öÔÚ%1ºÍ%2Ö®¼äµÄÕûÊý¡£¡±"
+ AFX_IDP_PARSE_REAL_RANGE, "¡°ÇëÌîÈëÒ»¸öÔÚ%1ºÍ%2Ö®¼äµÄÊý×Ö¡£¡±"
+ AFX_IDP_PARSE_STRING_SIZE, "¡°ÇëÌîÈë²»¶àÓÚ%1¸öµÄ×Ö·û¡£¡±"
+ AFX_IDP_PARSE_RADIO_BUTTON, "ÇëÑ¡ÔñÒ»¸ö°´Å¥¡£"
+ AFX_IDP_PARSE_BYTE, "¡°ÇëÌîÈëÒ»¸öÔÚ0ºÍ255Ö®¼äµÄÕûÊý¡£¡±"
+ AFX_IDP_PARSE_UINT, "¡°ÇëÌîÈëÒ»¸öÕýÕûÊý¡£¡±"
+ AFX_IDP_PARSE_DATETIME, "¡°ÇëÌîÈëÒ»¸öÈÕÆÚºÍ/»òʱ¼äÖµ¡£¡±"
+ AFX_IDP_PARSE_CURRENCY, "¡°ÇëÌîÈëÒ»¸ö»õ±ÒÖµ¡£¡±"
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Á´½ÓµÄ %s"
+ AFX_IDS_UNKNOWNTYPE "δ֪ÀàÐÍ"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nÎÞ·¨×¢²áÎĵµ¡£\n´ËÎĵµ¿ÉÄÜÒѾ­±»´ò¿ª¡£"
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "ÎÞ·¨×¢²áÎĵµ\042%1¡£\42´ËÎĵµ¿ÉÄÜÒѾ­±»´ò¿ª¡£"
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "µÃ²»µ½³ö´íÐÅÏ¢¡£"
+
+ AFX_IDP_FILE_NONE "ÎÞ´íÎó·¢Éú¡£"
+ AFX_IDP_FILE_GENERIC "ÔÚ¶Ô %1 ½øÐзÃÎÊʱ·¢ÉúÁËÒ»¸ö²»Ã÷´íÎó¡£"
+ AFX_IDP_FILE_NOT_FOUND "ûÓÐÕÒµ½ %1¡£"
+ AFX_IDP_FILE_BAD_PATH "%1 Öаüº¬ÎÞЧµÄ·¾¶¡£"
+ AFX_IDP_FILE_TOO_MANY_OPEN "ÎÞ·¨´ò¿ª %1 ÒòΪ̫¶àÎļþÒѱ»´ò¿ª¡£"
+ AFX_IDP_FILE_ACCESS_DENIED "¶Ô %1 µÄ´æÈ¡±»¾Ü¾ø¡£"
+ AFX_IDP_FILE_INVALID_FILE "Ò»¸öÎÞЧµÄÎļþ±úÓë %1 Ïà¹ØÁª¡£"
+ AFX_IDP_FILE_REMOVE_CURRENT "ÎÞ·¨É¾³ý %1 ÒòΪËüÊǵ±Ç°Ä¿Â¼¡£"
+ AFX_IDP_FILE_DIR_FULL "¸ÃĿ¼ÒÑÂú£¬ÎÞ·¨´´½¨ %1¡£"
+ AFX_IDP_FILE_BAD_SEEK "¶Ô %1 ½øÐвéÕÒʧ°Ü¡£"
+ AFX_IDP_FILE_HARD_IO "ÔÚ´æÈ¡ %1 ʱһ¸öÓ²¼þÊäÈë/Êä³ö´íÎó±»±¨¸æ¡£"
+ AFX_IDP_FILE_SHARING "ÔÚ´æÈ¡ %1 ʱ·¢Éú¹²ÏíÎ¥Àý¡£"
+ AFX_IDP_FILE_LOCKING "ÔÚ´æÈ¡ %1 ʱ·¢ÉúËøÎ¥Àý¡£"
+ AFX_IDP_FILE_DISKFULL "ÔÚ´æÈ¡ %1 ʱ´ÅÅÌÒÑÂú¡£"
+ AFX_IDP_FILE_EOF "ÊÔͼԽ¹ýÆäβ¶Ë¶Ô %1 ½øÐжÁд¡£"
+
+ AFX_IDP_ARCH_NONE "ÎÞ´íÎó·¢Éú¡£"
+ AFX_IDP_ARCH_GENERIC "ÔÚ¶Ô %1 ½øÐзÃÎÊʱ·¢ÉúÁËÒ»¸ö²»Ã÷´íÎó¡£"
+ AFX_IDP_ARCH_READONLY "ÊÔͼÔÚ¶Ô %1 ½øÐжÁ²Ù×÷µÄͬʱ¶ÔÆä½øÐÐд²Ù×÷¡£"
+ AFX_IDP_ARCH_ENDOFFILE "ÊÔͼԽ¹ýÆäβ¶Ë¶Ô %1 ½øÐжÁд¡£"
+ AFX_IDP_ARCH_WRITEONLY "ÊÔͼÔÚ¶Ô %1 ½øÐÐд²Ù×÷µÄͬʱ¶ÔÆä½øÐжÁ²Ù×÷¡£"
+ AFX_IDP_ARCH_BADINDEX "%1 ¸ñʽ´í¡£"
+ AFX_IDP_ARCH_BADCLASS "%1 º¬ÓзÇÔ¤ÆڵĶÔÏó¡£"
+ AFX_IDP_ARCH_BADSCHEMA "%1 °üº¬´íÎóµÄģʽ¡£"
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "ÎÞ·¨×°ÈëÓʼþϵͳ֧Ԯ¡£"
+ AFX_IDP_INVALID_MAPI_DLL "Óʼþϵͳ DLL ÎÞЧ¡£"
+ AFX_IDP_FAILED_MAPI_SEND "´«µÝÓʼþδÄÜ´«µÝÐÅÏ¢¡£"
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "ÏóËØ"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "н¨"
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "н¨(&N)",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "È·¶¨",IDOK,137,6,40,14
+ PUSHBUTTON "È¡Ïû",IDCANCEL,137,23,40,14
+ PUSHBUTTON "°ïÖú(&H)",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/l.deu/afxctl.rc b/public/sdk/inc/mfc40/l.deu/afxctl.rc
new file mode 100644
index 000000000..246d269bf
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.deu/afxctl.rc
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "Eigenschafts&name:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Schriftart:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "Schriftst&il:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Größe:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effekte",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "&Durchgestrichen",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Unterstrichen",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Beispiel",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "Eigenschafts&name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "System&farbe:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "Eigenschafts&name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Durchsuchen...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Löschen",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Vorschau:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Unbekannt)"
+ AFX_IDS_COLOR_DESKTOP "Desktop"
+ AFX_IDS_COLOR_APPWORKSPACE "Anwendungsarbeitsbereich"
+ AFX_IDS_COLOR_WNDBACKGND "Fensterhintergrund"
+ AFX_IDS_COLOR_WNDTEXT "Fenstertext"
+ AFX_IDS_COLOR_MENUBAR "Menüleiste"
+ AFX_IDS_COLOR_MENUTEXT "Menütext"
+ AFX_IDS_COLOR_ACTIVEBAR "Aktive Titelleiste"
+ AFX_IDS_COLOR_INACTIVEBAR "Inaktive Titelleiste"
+ AFX_IDS_COLOR_ACTIVETEXT "Aktiver Titelleistentext"
+ AFX_IDS_COLOR_INACTIVETEXT "Inaktiver Titelleistentext"
+ AFX_IDS_COLOR_ACTIVEBORDER "Aktiver Rahmen"
+ AFX_IDS_COLOR_INACTIVEBORDER "Inaktiver Rahmen"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_COLOR_WNDFRAME "Fensterrahmen"
+ AFX_IDS_COLOR_SCROLLBARS "Bildlaufleisten"
+ AFX_IDS_COLOR_BTNFACE "Schaltfläche"
+ AFX_IDS_COLOR_BTNSHADOW "Schaltflächenschatten"
+ AFX_IDS_COLOR_BTNTEXT "Schaltflächentext"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Schaltflächenhervorhebung"
+ AFX_IDS_COLOR_DISABLEDTEXT "Deaktivierter Text"
+ AFX_IDS_COLOR_HIGHLIGHT "Markierung"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Markierter Text"
+ AFX_IDS_REGULAR "Normal"
+ AFX_IDS_BOLD "Fett"
+ AFX_IDS_ITALIC "Kursiv"
+ AFX_IDS_BOLDITALIC "Fett-kursiv"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+ AFX_IDS_DISPLAYSTRING_FONT "(Schriftart)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Farbe)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Bild - %s)"
+ AFX_IDS_PICTUREFILTER "Alle Bildtypen|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Symbole/Zeiger (*.ico;*.cur)|*.ico;*.cur|Metadateien (*.wmf;*.emf)|*.emf;*.wmf|Alle Dateien (*.*)|*.*||"
+ AFX_IDS_PICTYPE_UNKNOWN "Unbekannt"
+ AFX_IDS_PICTYPE_NONE "Kein"
+ AFX_IDS_PICTYPE_BITMAP "Bitmap"
+ AFX_IDS_PICTYPE_METAFILE "Metadatei"
+ AFX_IDS_PICTYPE_ICON "Symbol"
+ AFX_IDS_COLOR_PPG "Farbeigenschaften"
+ AFX_IDS_COLOR_PPG_CAPTION "Farben"
+ AFX_IDS_FONT_PPG "Schrifteigenschaften"
+ AFX_IDS_FONT_PPG_CAPTION "Schriftarten"
+ AFX_IDS_PICTURE_PPG "Bildeigenschaften"
+ AFX_IDS_PICTURE_PPG_CAPTION "Bilder"
+ AFX_IDS_BORDERSTYLE_0 "0 - Keiner"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fester einzelner"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Bearbeiten"
+ AFX_IDS_VERB_PROPERTIES "&Eigenschaften..."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Bilddatei %1 konnte nicht geöffnet werden. Die Datei existiert möglicherweise nicht oder ist nicht lesbar."
+ AFX_IDP_PICTURECANTLOAD "Bilddatei %1 konnte nicht geladen werden. Die Datei hat möglicherweise ein ungültiges Format."
+ AFX_IDP_PICTURETOOLARGE "Bilddatei %1 konnte nicht geladen werden, da sie nicht in den Speicher paßt."
+ AFX_IDP_PICTUREREADFAILED
+ "Bilddatei %1 konnte nicht geladen werden, da ein unbekannter Lesefehler auftrat."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Bilder durchsuchen"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Ungültiger Funktionsaufruf"
+ AFX_IDP_E_OVERFLOW "Überlauf"
+ AFX_IDP_E_OUTOFMEMORY "Nicht genügend Speicher"
+ AFX_IDP_E_DIVISIONBYZERO "Division durch Null"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Nicht genügend Zeichenfolgenspeicher"
+ AFX_IDP_E_OUTOFSTACKSPACE "Nicht genügend Stack-Speicher"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Ungültiger Dateiname oder -nummer"
+ AFX_IDP_E_FILENOTFOUND "Datei nicht gefunden"
+ AFX_IDP_E_BADFILEMODE "Falscher Dateimodus"
+ AFX_IDP_E_FILEALREADYOPEN "Datei bereits geöffnet"
+ AFX_IDP_E_DEVICEIOERROR "Geräte-E/A-Fehler"
+ AFX_IDP_E_FILEALREADYEXISTS "Datei besteht bereits"
+ AFX_IDP_E_BADRECORDLENGTH "Ungültige Datensatzlänge"
+ AFX_IDP_E_DISKFULL "Datenträger voll"
+ AFX_IDP_E_BADRECORDNUMBER "Ungültige Datensatznummer"
+ AFX_IDP_E_BADFILENAME "Ungültiger Dateiname"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Zu viele Dateien"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Gerät nicht verfügbar"
+ AFX_IDP_E_PERMISSIONDENIED "Zugriff verweigert"
+ AFX_IDP_E_DISKNOTREADY "Laufwerk nicht bereit"
+ AFX_IDP_E_PATHFILEACCESSERROR "Pfad-/Dateizugriffsfehler"
+ AFX_IDP_E_PATHNOTFOUND "Pfad nicht gefunden"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Ungültige Musterzeichenfolge"
+ AFX_IDP_E_INVALIDUSEOFNULL "Ungültige Verwendung von Null"
+ AFX_IDP_E_INVALIDFILEFORMAT "Ungültiges Dateiformat"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Ungültiger Eigenschaftswert"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Ungültiger Feldindex"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Eigenschaft kann nicht zur Laufzeit gesetzt werden"
+ AFX_IDP_E_SETNOTSUPPORTED "Eigenschaft ist schreibgeschützt"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Ein Feldindex muß angegeben sein, wenn ein Eigenschaftsfeld verwendet wird"
+ AFX_IDP_E_SETNOTPERMITTED "Eigenschaft kann für dieses Steuerelement nicht gesetzt werden"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "Eigenschaft kann nicht zur Laufzeit gelesen werden"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Eigenschaft ist lesegeschützt"
+ AFX_IDP_E_PROPERTYNOTFOUND "Eigenschaft nicht gefunden"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Ungültiges Zwischenablageformat"
+ AFX_IDP_E_INVALIDPICTURE "Ungültiges Bild"
+ AFX_IDP_E_PRINTERERROR "Druckerfehler"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Zum Speichern notwendige temporäre Datei kann nicht erstellt werden"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Suchtext nicht gefunden"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Ersetzungstext zu lang"
+END
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.deu/afxdb.rc b/public/sdk/inc/mfc40/l.deu/afxdb.rc
new file mode 100644
index 000000000..1acf6f4c3
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.deu/afxdb.rc
@@ -0,0 +1,97 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Der Verbindungsversuch zur Datenquelle ist gescheitert."
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Datensatzgruppe unterstützt nur Vorwärtsbewegung."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Der Versuch, eine Tabelle zu öffnen, ist fehlgeschlagen, da am angegebenen Ort keine Spalten abgerufen werden konnten."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Von einer Abfrage wurden unerwartete Spaltendatentypen zurückgegeben."
+ AFX_IDP_SQL_ILLEGAL_MODE "Versuch zu aktualisieren oder zu löschen ist fehlgeschlagen."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Es wurden mehrere Zeilen aktualisiert."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operation ist fehlgeschlagen; es gibt keinen aktuellen Datensatz."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Es waren keine Zeilen von der Aktualisierungs- oder Löschoperation betroffen."
+ AFX_IDP_SQL_RECORDSET_READONLY "Datensatzgruppe kann nur gelesen werden."
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "Der ODBC-Treiber unterstützt das MFC-LongBinary-Datenmodell nicht."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Der Versuch, die benötigte Komponente ODBC32.DLL zu laden, ist fehlgeschlagen."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Der ODBC-Treiber unterstützt keine Dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Statische ODBC-Cursor werden zur Unterstützung von Snapshots benötigt."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Der ODBC-Treiber ist inkompatibel zu den MFC-Datenbankklassen (API_CONFORMANCE >= SQL_OAC_LEVEL1 wird benötigt)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Der ODBC-Treiber ist inkompatibel zu den MFC-Datenbankklassen (SQL_CONFORMANCE >= SQL_OSC_MINIMUM wird benötigt)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Es wurde versucht, hinter das Ende oder vor den Anfang der Daten zu gelangen."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Treiber gemäß ODBC Level 2 wird benötigt."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Positionierte Aktualisierungen werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Der angeforderte Sperrmodus wird nicht unterstützt."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Daten abgeschnitten."
+ AFX_IDP_SQL_ROW_FETCH
+ "Fehler beim Abruf eines Datensatzes."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Ein benötigter ODBC-Einsprungspunkt konnte nicht gefunden werden. Überprüfen Sie, ob OBDC korrekt installiert ist."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Fehler bei der Aktualisierungs- oder Löschoperation."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Dynamische Cursor werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Initialisierung des DAO/Jet-Datenbankmoduls nicht möglich."
+ AFX_IDP_DAO_DFX_BIND
+ "Ungültiger DFX-Werteparameter."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO-TableDef oder DAO-QueryDef nicht offen."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Fehler bei GetRows-Operation. Für die Zeile ist nicht genügend Speicher reserviert."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows-Bindungsfehler. Nicht übereinstimmende Datentypen sind wahrscheinlich die Ursache."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Fehler bei GetRows-Operation. Die angeforderte Spalte ist kein Element der Datensatzgruppe."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc40/l.deu/afxolecl.rc b/public/sdk/inc/mfc40/l.deu/afxolecl.rc
new file mode 100644
index 000000000..ad4df58c8
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.deu/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Ein statisches OLE-Objekt kann nicht aktiviert werden."
+ AFX_IDP_FAILED_TO_CONNECT "Fehler beim Verbindungsversuch.\nDie Verbindung ist vielleicht unterbrochen."
+ AFX_IDP_SERVER_BUSY "Der Befehl kann nicht verarbeitet werden, weil der Server beschäftigt ist."
+ AFX_IDP_BAD_VERB "Fehler beim Ausführen der Server-Operation."
+ AFX_IDP_FAILED_TO_LAUNCH "Die Server-Anwendung konnte nicht gestartet werden."
+ AFX_IDS_UPDATING_ITEMS "Aktualisiere OLE-Objekte."
+ AFX_IDP_FAILED_TO_CONVERT "Das OLE-Objekt konnte nicht umgewandelt werden."
+ AFX_IDP_ASK_TO_DISCARD "OLE-Objekte können nicht beim Beenden von Windows gespeichert werden!\nSollen alle Änderungen an %1 verworfen werden?"
+ AFX_IDP_FAILED_TO_CREATE "Fehler beim Erzeugen des Objekts. Stellen Sie sicher, daß das Objekt in der Systemregistrierung eingetragen ist."
+
+ AFX_IDS_METAFILE_FORMAT "Bild (Metadatei)\nein Bild"
+ AFX_IDS_DIB_FORMAT "Geräteunabhängiges Bitmap\nein geräteunabhängiges Bitmap"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\nein Bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\nText mit Schrift- und Absatzformatierung"
+ AFX_IDS_TEXT_FORMAT "Unformatierter Text\nText ohne Formatierung"
+
+ AFX_IDS_INVALID_CURRENCY "Ungültige Währung."
+ AFX_IDS_INVALID_DATETIME "Ungültiges Datum oder ungültige Zeit."
+ AFX_IDS_INVALID_DATETIMESPAN "Ungültige Datums- oder Zeitspanne."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.deu/afxolesv.rc b/public/sdk/inc/mfc40/l.deu/afxolesv.rc
new file mode 100644
index 000000000..323fc96a1
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.deu/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "%1 vor dem Fortfahren aktualisieren?"
+ AFX_IDP_FAILED_TO_UPDATE, "Client konnte nicht aktualisiert werden."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Fehler bei der Registrierung. Die OLE-Funktionen arbeiten eventuell nicht richtig."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Fehler bei der Aktualisierung der Systemregistrierung.\nVersuchen Sie REGEDIT zu benutzen."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Beenden und zu %1 zurückkehren"
+ AFX_IDS_UPDATE_MENU, "&Aktualisiere %1"
+ AFX_IDS_SAVEFILECOPY, "Kopie speichern unter"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc40/l.deu/afxprint.rc b/public/sdk/inc/mfc40/l.deu/afxprint.rc
new file mode 100644
index 000000000..317839000
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.deu/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Sans Serif"
+BEGIN
+ CTEXT "Drucke",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "auf",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Abbrechen",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Abbrechen",IDCANCEL,46,45,40,15
+ CTEXT "Drücken Sie Cmd-., um abzubrechen.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Vorherige",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Ver&größern",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Ver&kleinern",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Vorherige",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ver&größern",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Ver&kleinern",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Vorh.",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Größer",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Kleiner",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "auf %1" // for print output
+ AFX_IDS_ONEPAGE, "&Eine Seite" // for preview button
+ AFX_IDS_TWOPAGE, "&Zwei Seiten" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Seite %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Seite %u\nSeiten %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Ausgabe.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Drucker-Dateien (*.prn)|*.prn|Alle Dateien (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "In Datei drucken" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "in %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc40/l.deu/afxres.rc b/public/sdk/inc/mfc40/l.deu/afxres.rc
new file mode 100644
index 000000000..eeabb495f
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.deu/afxres.rc
@@ -0,0 +1,211 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_OPENFILE, "Öffnen"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Speichern unter"
+ AFX_IDS_ALLFILTER, "Alle Dateien (*.*)"
+ AFX_IDS_UNTITLED, "Unbenannt"
+#else
+ AFX_IDS_SAVEFILE, "Dokument speichern unter:"
+ AFX_IDS_ALLFILTER, "Alle Dateien"
+ AFX_IDS_UNTITLED, "unbenannt"
+ AFX_IDS_UNNAMED_FILE, "eine unbenannte Datei"
+ AFX_IDS_ABOUT, "Info über %1\205"
+#endif
+ AFX_IDS_HIDE, "&Verbergen"
+
+ AFX_IDS_MEMORY_EXCEPTION, "Nicht genügend Speicher."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Es wurde versucht, eine nicht unterstützte Operation auszuführen."
+ AFX_IDS_RESOURCE_EXCEPTION, "Eine benötigte Ressource ist nicht verfügbar."
+ AFX_IDS_USER_EXCEPTION, "Ein unerwarteter Fehler ist aufgetreten."
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "Ungültiger Dateiname."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Fehler beim Öffnen des Dokuments."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Fehler beim Speichern des Dokuments."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Änderungen in %1 speichern?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Änderungen im %1-Dokument \042%2\042 speichern?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Fehler beim Erzeugen eines leeren Dokuments."
+ AFX_IDP_FILE_TOO_LARGE, "Die Datei ist zu groß zum Öffnen."
+ AFX_IDP_FAILED_TO_START_PRINT, "Der Druckauftrag konnte nicht gestartet werden."
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Die Hilfe konnte nicht aufgerufen werden."
+ AFX_IDP_INTERNAL_FAILURE, "Interner Anwendungsfehler."
+ AFX_IDP_COMMAND_FAILURE, "Befehl fehlgeschlagen."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Nicht genügend Speicher vorhanden, um Operation auszuführen."
+ AFX_IDP_GET_NOT_SUPPORTED, "Lesen ist wegen der Eigenschaft Nur-Schreiben nicht möglich."
+ AFX_IDP_SET_NOT_SUPPORTED, "Schreiben ist wegen der Eigenschaft Nur-Lesen nicht möglich."
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "Unerwartetes Dateiformat."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nDiese Datei konnte nicht gefunden werden.\nÜberprüfen Sie, ob der korrekte Pfad und Dateiname angegeben wurde."
+ AFX_IDP_FAILED_DISK_FULL "Das Ziellaufwerk ist voll."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Die Datei \042%1\042 konnte nicht gefunden werden. Überprüfen Sie, ob der korrekte Dateiname angegeben wurde."
+ AFX_IDP_FAILED_DISK_FULL "Das Ziel-Volume ist voll."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Lesen von %1 ist nicht möglich, da von anderem Anwender geöffnet."
+ AFX_IDP_FAILED_ACCESS_WRITE "Schreiben auf %1 ist nicht möglich, da schreibgeschützt oder von anderem Anwender geöffnet."
+ AFX_IDP_FAILED_IO_ERROR_READ "Beim Lesen von %1 ist ein unerwarteter Fehler aufgetreten."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Beim Schreiben von %1 ist ein unerwarteter Fehler aufgetreten."
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Geben Sie bitte eine ganze Zahl ein."
+ AFX_IDP_PARSE_REAL, "Geben Sie bitte eine Zahl ein."
+ AFX_IDP_PARSE_INT_RANGE, "Geben Sie bitte eine ganze Zahl zwischen %1 und %2 ein."
+ AFX_IDP_PARSE_REAL_RANGE, "Geben Sie bitte eine Zahl zwischen %1 und %2 ein."
+ AFX_IDP_PARSE_STRING_SIZE, "Geben Sie bitte nicht mehr als %1 Zeichen ein."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Wählen Sie bitte eine Schaltfläche."
+ AFX_IDP_PARSE_BYTE, "Geben Sie bitte eine ganze Zahl zwischen 0 und 255 ein."
+ AFX_IDP_PARSE_UINT, "Geben Sie bitte eine positive ganze Zahl ein."
+ AFX_IDP_PARSE_DATETIME, "Geben Sie bitte ein Datum und/oder eine Zeit ein."
+ AFX_IDP_PARSE_CURRENCY, "Geben Sie bitte eine Währung ein."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Verknüpft: %s"
+ AFX_IDS_UNKNOWNTYPE "Unbekannter Typ"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nRegistrierung des Dokuments nicht möglich.\nDas Dokument ist vielleicht schon geöffnet."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Registrierung des Dokuments \042%1\042 nicht möglich.\nDas Dokument ist vielleicht schon geöffnet."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "Keine Fehlermeldung verfügbar."
+
+ AFX_IDP_FILE_NONE "Kein Fehler aufgetreten."
+ AFX_IDP_FILE_GENERIC "Ein unbekannter Fehler ist beim Zugriff auf %1 aufgetreten."
+ AFX_IDP_FILE_NOT_FOUND "%1 wurde nicht gefunden."
+ AFX_IDP_FILE_BAD_PATH "%1 enthält eine ungültige Pfadangabe."
+ AFX_IDP_FILE_TOO_MANY_OPEN "%1 konnte nicht geöffnet werden, da zu viele Dateien geöffnet sind."
+ AFX_IDP_FILE_ACCESS_DENIED "Zugriff auf %1 wurde verwehrt."
+ AFX_IDP_FILE_INVALID_FILE "Eine ungültige Dateikennung war mit %1 verbunden."
+ AFX_IDP_FILE_REMOVE_CURRENT "Das Verzeichnis %1 konnte nicht entfernt werden, da es das aktuelle Verzeichnis ist. "
+ AFX_IDP_FILE_DIR_FULL "%1 konnte nicht erstellt werden, da das Verzeichnis voll ist."
+ AFX_IDP_FILE_BAD_SEEK "Positionierungsfehler auf %1."
+ AFX_IDP_FILE_HARD_IO "Ein Hardware-E/A-Fehler wurde während des Zugriffs auf %1 gemeldet."
+ AFX_IDP_FILE_SHARING "Eine Zugriffsverletzung ist während des Zugriffs auf %1 aufgetreten."
+ AFX_IDP_FILE_LOCKING "Eine Sperrverletzung ist während des Zugriffs auf %1 aufgetreten."
+ AFX_IDP_FILE_DISKFULL "Beim Zugriff auf %1 wurde ein voller Datenträger gemeldet."
+ AFX_IDP_FILE_EOF "Es wurde versucht, auf eine Stelle hinter dem Ende von %1 zuzugreifen."
+
+ AFX_IDP_ARCH_NONE "Kein Fehler aufgetreten."
+ AFX_IDP_ARCH_GENERIC "Ein unbekannter Fehler ist beim Zugriff auf %1 aufgetreten."
+ AFX_IDP_ARCH_READONLY "%1 ist nur lesbar. Es wurde versucht, darauf zu schreiben."
+ AFX_IDP_ARCH_ENDOFFILE "Es wurde versucht, auf eine Stelle hinter dem Ende von %1 zuzugreifen."
+ AFX_IDP_ARCH_WRITEONLY "%1 ist lesegeschützt. Es wurde versucht, davon zu lesen."
+ AFX_IDP_ARCH_BADINDEX "%1 besitzt ein falsches Format."
+ AFX_IDP_ARCH_BADCLASS "%1 enthielt ein unerwartetes Objekt."
+ AFX_IDP_ARCH_BADSCHEMA "%1 enthält ein falsches Schema."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Systemunterstützung für elektronische Post kann nicht geladen werden."
+ AFX_IDP_INVALID_MAPI_DLL "Die System-DLL für elektronische Post ist ungültig."
+ AFX_IDP_FAILED_MAPI_SEND "\042Nachricht senden\042 scheiterte beim Senden der Nachricht."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "Pixel"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Neu"
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Neu",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Abbrechen",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Hilfe",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/l.esp/afxctl.rc b/public/sdk/inc/mfc40/l.esp/afxctl.rc
new file mode 100644
index 000000000..8de05b852
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.esp/afxctl.rc
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ¡No se pueden cambiar recursos MFC estándar! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Propiedad:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Fuente:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "Estilo de &fuente:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Tamaño:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Efectos",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Ta&chado",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "S&ubrayado",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Ejemplo",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Propiedad:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Color del sistema:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Propiedad:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Examinar...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Borrar",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Presentación preliminar:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Desconocido)"
+ AFX_IDS_COLOR_DESKTOP "Escritorio"
+ AFX_IDS_COLOR_APPWORKSPACE "Area de trabajo de la aplicación"
+ AFX_IDS_COLOR_WNDBACKGND "Fondo de la ventana"
+ AFX_IDS_COLOR_WNDTEXT "Texto de la ventana"
+ AFX_IDS_COLOR_MENUBAR "Barra del menú"
+ AFX_IDS_COLOR_MENUTEXT "Texto del menú"
+ AFX_IDS_COLOR_ACTIVEBAR "Barra de títulos activa"
+ AFX_IDS_COLOR_INACTIVEBAR "Barra de títulos inactiva"
+ AFX_IDS_COLOR_ACTIVETEXT "Texto de barra de títulos activa"
+ AFX_IDS_COLOR_INACTIVETEXT "Texto de barra de títulos inactiva"
+ AFX_IDS_COLOR_ACTIVEBORDER "Borde activo"
+ AFX_IDS_COLOR_INACTIVEBORDER "Borde inactivo"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_COLOR_WNDFRAME "Marco de la ventana"
+ AFX_IDS_COLOR_SCROLLBARS "Barras de desplazamiento"
+ AFX_IDS_COLOR_BTNFACE "Aspecto del botón"
+ AFX_IDS_COLOR_BTNSHADOW "Sombra del botón"
+ AFX_IDS_COLOR_BTNTEXT "Texto del botón"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Resalte de botón"
+ AFX_IDS_COLOR_DISABLEDTEXT "Texto deshabilitado"
+ AFX_IDS_COLOR_HIGHLIGHT "Resaltar"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Texto resaltado"
+ AFX_IDS_REGULAR "Normal"
+ AFX_IDS_BOLD "Negrita"
+ AFX_IDS_ITALIC "Cursiva"
+ AFX_IDS_BOLDITALIC "Negrita cursiva"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+ AFX_IDS_DISPLAYSTRING_FONT "(Fuente)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Color)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Imagen - %s)"
+ AFX_IDS_PICTUREFILTER "Todos los tipos de imagen|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Mapas de bits (*.bmp;*.dib)|*.bmp;*.dib|Iconos/cursores (*.ico;*.cur)|*.ico|Metaarchivos (*.wmf;*.emf)|*.emf;*.wmf|Todos los archivos (*.*)|*.*||"
+ AFX_IDS_PICTYPE_UNKNOWN "Desconocido"
+ AFX_IDS_PICTYPE_NONE "Ninguno"
+ AFX_IDS_PICTYPE_BITMAP "Mapa de bits"
+ AFX_IDS_PICTYPE_METAFILE "Metaarchivo"
+ AFX_IDS_PICTYPE_ICON "Icono"
+ AFX_IDS_COLOR_PPG "Página de propiedades de colores"
+ AFX_IDS_COLOR_PPG_CAPTION "Colores"
+ AFX_IDS_FONT_PPG "Página de propiedades de fuentes"
+ AFX_IDS_FONT_PPG_CAPTION "Fuentes"
+ AFX_IDS_PICTURE_PPG "Página de propiedades de imágenes"
+ AFX_IDS_PICTURE_PPG_CAPTION "Imágenes"
+ AFX_IDS_BORDERSTYLE_0 "0 - Ninguno"
+ AFX_IDS_BORDERSTYLE_1 "1 - Simple fijo "
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Editar"
+ AFX_IDS_VERB_PROPERTIES "&Propiedades..."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Imposible abrir el archivo de imágenes %1. Puede que el archivo no exista o no se pueda leer."
+ AFX_IDP_PICTURECANTLOAD "Imposible cargar el archivo de imágenes %1. Puede que el archivo tenga un formato no válido."
+ AFX_IDP_PICTURETOOLARGE "Imposible cargar el archivo de imágenes %1. El archivo es demasiado grande para caber en la memoria."
+ AFX_IDP_PICTUREREADFAILED
+ "Imposible cargar el archivo de imágenes %1. Error de lectura desconocido."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Examinar imágenes"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Llamada no válida a función"
+ AFX_IDP_E_OVERFLOW "Desbordamiento"
+ AFX_IDP_E_OUTOFMEMORY "No hay suficiente memoria"
+ AFX_IDP_E_DIVISIONBYZERO "División por cero"
+ AFX_IDP_E_OUTOFSTRINGSPACE "No hay suficiente espacio para cadenas"
+ AFX_IDP_E_OUTOFSTACKSPACE "No hay suficiente espacio de pila"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Nombre o número de archivo incorrecto"
+ AFX_IDP_E_FILENOTFOUND "No se ha encontrado el archivo"
+ AFX_IDP_E_BADFILEMODE "Modo de archivo incorrecto"
+ AFX_IDP_E_FILEALREADYOPEN "El archivo ya está abierto"
+ AFX_IDP_E_DEVICEIOERROR "Error de E/S de dispositivo"
+ AFX_IDP_E_FILEALREADYEXISTS "El archivo ya existe"
+ AFX_IDP_E_BADRECORDLENGTH "La longitud de registro es incorrecta"
+ AFX_IDP_E_DISKFULL "El disco está lleno"
+ AFX_IDP_E_BADRECORDNUMBER "El número de registro es incorrecto"
+ AFX_IDP_E_BADFILENAME "Nombre de archivo incorrecto"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Demasiados archivos"
+ AFX_IDP_E_DEVICEUNAVAILABLE "El dispositivo no está disponible"
+ AFX_IDP_E_PERMISSIONDENIED "Permiso denegado"
+ AFX_IDP_E_DISKNOTREADY "El disco no está listo"
+ AFX_IDP_E_PATHFILEACCESSERROR "Error de acceso a la ruta o el archivo"
+ AFX_IDP_E_PATHNOTFOUND "No se ha encontrado la ruta de acceso"
+ AFX_IDP_E_INVALIDPATTERNSTRING "La cadena modelo no es válida"
+ AFX_IDP_E_INVALIDUSEOFNULL "Uso no válido de Null"
+ AFX_IDP_E_INVALIDFILEFORMAT "Formato de archivo no válido"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "El valor de la propiedad no es válido"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Índice de matriz no válido"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "No se puede establecer la propiedad en tiempo de ejecución"
+ AFX_IDP_E_SETNOTSUPPORTED "La propiedad es de sólo lectura"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Se debe especificar el índice de matriz cuando se usa una matriz de propiedades"
+ AFX_IDP_E_SETNOTPERMITTED "No se puede establecer la propiedad en este control"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "No se puede leer la propiedad en tiempo de ejecución"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "La propiedad es de sólo escritura"
+ AFX_IDP_E_PROPERTYNOTFOUND "No se ha encontrado la propiedad"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "El formato del portapapeles no es válido"
+ AFX_IDP_E_INVALIDPICTURE "La imagen no es válida"
+ AFX_IDP_E_PRINTERERROR "Error de la impresora"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "No se puede crear el archivo temporal necesario para guardar"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "No se encontró el texto de búsqueda"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "El texto de reemplazo es demasiado largo"
+END
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.esp/afxdb.rc b/public/sdk/inc/mfc40/l.esp/afxdb.rc
new file mode 100644
index 000000000..db99e2a6e
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.esp/afxdb.rc
@@ -0,0 +1,97 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar. >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Imposible conectarse al origen de datos"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Recordset sólo admite movimiento hacia adelante."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Imposible abrir tabla, no hay columnas en la posición especificada."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Se obtuvieron tipos de datos inesperados de la consulta."
+ AFX_IDP_SQL_ILLEGAL_MODE "Imposible Actualizar o Eliminar."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Filas actualizadas."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "La operación ha fallado, no hay registro actual."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "La operación de actualización o de eliminación no afectó a ninguna fila."
+ AFX_IDP_SQL_RECORDSET_READONLY "Recordset es de sólo lectura"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "El controlador ODBC no admite el modelo de datos MFC LongBinary."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Imposible cargar ODBC32.DLL."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "El controlador ODBC no admite dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Se requieren cursores estáticos ODBC para compatibilidad con snapshot."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Controlador ODBC incompatible con clases de bases de datos MFC (se requiere que API_CONFORMANCE >=SQL_OAC_LEVEL1)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Controlador ODBC incompatible con clases de bases de datos MFC (se requiere que API_CONFORMANCE >=SQL_OAC_LEVEL1)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Se intentó desplazarse más allá del fin o antes del inicio de los datos."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "El controlador ODBC no admite dynasets."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Se requiere un controlador ODBC que cumpla con el Nivel 2."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "El controlador ODBC no admite actualizaciones posicionadas."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "No se admite el modo de bloqueo solicitado."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Datos truncados."
+ AFX_IDP_SQL_ROW_FETCH
+ "Error al recuperar registro."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "No se encontró un punto de entrada ODBC requerido. Compruebe que ODBC esté instalado correctamente."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Falló actualización o eliminación."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "El controlador ODBC no admite cursores dinámicos."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Imposible inicializar motor de base de datos DAO/Jet."
+ AFX_IDP_DAO_DFX_BIND
+ "Parámetro de valor DFX incorrecto."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef o QueryDef no está abierto."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Falló GetRows. No hay suficiente memoria asignada a la fila."
+ AFX_IDP_DAO_BADBINDINFO
+ "Error de enlace de GetRows; es posible que algún tipo de datos no coincida."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Falló GetRows. La solicitud de columna no es miembro de este recordset."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc40/l.esp/afxolecl.rc b/public/sdk/inc/mfc40/l.esp/afxolecl.rc
new file mode 100644
index 000000000..78589cf24
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.esp/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Imposible cambiar recursos MFC estándar. >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Imposible activar un objeto OLE estático."
+ AFX_IDP_FAILED_TO_CONNECT "Imposible conectar.\nVínculo puede estar roto."
+ AFX_IDP_SERVER_BUSY "Imposible procesar el comando, servidor ocupado."
+ AFX_IDP_BAD_VERB "Imposible efectuar operación del servidor."
+ AFX_IDP_FAILED_TO_LAUNCH "Imposible ejecutar la aplicación del servidor."
+ AFX_IDS_UPDATING_ITEMS "Actualizando objetos OLE"
+ AFX_IDP_FAILED_TO_CONVERT "Imposible convertir objeto OLE."
+ AFX_IDP_ASK_TO_DISCARD "¡Imposible guardar objetos OLE al salir de Windows!\n¿Descartar todos los cambios a %1?"
+ AFX_IDP_FAILED_TO_CREATE "Failed to create object. Make sure the application is entered in the system registry."
+
+ AFX_IDS_METAFILE_FORMAT "Imagen (Metarchivo)\nuna imagen"
+ AFX_IDS_DIB_FORMAT "Mapa de bits independiente de dispositivos\nun mapa de bits independiente de dispositivos"
+ AFX_IDS_BITMAP_FORMAT "Mapa de bits\nun mapa de bits"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Formato de texto enriquecido (RTF)\ntexto con formato de fuentes y párrafos"
+ AFX_IDS_TEXT_FORMAT "Texto sin formato\ntexto sin ningún tipo de formato"
+
+ AFX_IDS_INVALID_CURRENCY "Moneda no válida."
+ AFX_IDS_INVALID_DATETIME "DateTime no válido."
+ AFX_IDS_INVALID_DATETIMESPAN "DateTimeSpan no válido."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.esp/afxolesv.rc b/public/sdk/inc/mfc40/l.esp/afxolesv.rc
new file mode 100644
index 000000000..cf80c0958
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.esp/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar. >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "¿Actualizar %1 antes de continuar?"
+ AFX_IDP_FAILED_TO_UPDATE, "Imposible actualizar el cliente."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Imposible registrar. Puede que las funciones OLE no funcionen debidamente."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Imposible actualizar el registro del sistema.\nIntente con REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 en %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Salir y volvera %1"
+ AFX_IDS_UPDATE_MENU, "&Actualizar %1"
+ AFX_IDS_SAVEFILECOPY, "Guardar copia como"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc40/l.esp/afxprint.rc b/public/sdk/inc/mfc40/l.esp/afxprint.rc
new file mode 100644
index 000000000..c68726b2d
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.esp/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Sans Serif"
+BEGIN
+ CTEXT "Imprimiendo",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "en la",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Cancelar",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Cancelar",IDCANCEL,46,45,40,15
+ CTEXT "Presione Cmd-. para cancelar.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "&Imprimir...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Siguiente",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Anterior",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Ac&ercar",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "A&lejar",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Cerrar",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimir...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Siguiente",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Anterior",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ac&ercar",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "A&lejar",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Cerrar",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimir...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Sig.",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Ant.",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "Ac&ercar",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "A&lejar",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Cerrar",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "en %1" // for print output
+ AFX_IDS_ONEPAGE, "&Una página" // for preview button
+ AFX_IDS_TWOPAGE, "&Dos páginas" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Página %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Página %u\nPáginas %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Archivos de impresora (*.prn)|*.prn|Todos los archivos (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Imprimir a archivo" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "a %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc40/l.esp/afxres.rc b/public/sdk/inc/mfc40/l.esp/afxres.rc
new file mode 100644
index 000000000..bbd526f50
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.esp/afxres.rc
@@ -0,0 +1,211 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar. >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_OPENFILE, "Abrir"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Guardar como"
+ AFX_IDS_ALLFILTER, "Todos los archivos (*.*)"
+ AFX_IDS_UNTITLED, "Sin título"
+#else
+ AFX_IDS_SAVEFILE, "Guardar documento como:"
+ AFX_IDS_ALLFILTER, "Todos los archivos"
+ AFX_IDS_UNTITLED, "sin título"
+ AFX_IDS_UNNAMED_FILE, "un archivo sin nombre"
+ AFX_IDS_ABOUT, "Acerca de %1\205"
+#endif
+ AFX_IDS_HIDE, "&Ocultar"
+
+ AFX_IDS_MEMORY_EXCEPTION, "No hay suficiente memoria."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Se intentó una operación no permitida."
+ AFX_IDS_RESOURCE_EXCEPTION, "Rcurso necesario no disponible."
+ AFX_IDS_USER_EXCEPTION, "Se encontr¢ un error desconocido."
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "Nombre de archivo no válido."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Imposible abrir documento."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Imposible guardar documento."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "¿Guardar cambios a %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "¿Guardar cambios al documento %1 \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Imposible crear el documento vacío."
+ AFX_IDP_FILE_TOO_LARGE, "Archivo demasiado grande."
+ AFX_IDP_FAILED_TO_START_PRINT, "Imposible iniciar impresión."
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Imposible ejecutar la ayuda."
+ AFX_IDP_INTERNAL_FAILURE, "Error interno de la aplicación."
+ AFX_IDP_COMMAND_FAILURE, "Falló el comando."
+ AFX_IDP_FAILED_MEMORY_ALLOC "No hay suficiente memoria para efectuar la operación."
+ AFX_IDP_GET_NOT_SUPPORTED, "Imposible leer una propiedad de sólo escritura."
+ AFX_IDP_SET_NOT_SUPPORTED, "Imposible escribir en una propiedad de sólo lectura."
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "Formato de archivo no esperado."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nImposible encontrar este archivo.\nCompruebe que la ruta y el nombre de archivo son correctos"
+ AFX_IDP_FAILED_DISK_FULL "La unidad de disco de destino está llena."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Imposible encontrar el archivo \042%1.\042 Compruebe que el nombre de archivo es correcto."
+ AFX_IDP_FAILED_DISK_FULL "El disco de destino está lleno."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Imposible leer de %1, alguien más lo ha abierto."
+ AFX_IDP_FAILED_ACCESS_WRITE "Imposible escribir en %1, es de sólo lectura o alguien más lo ha abierto."
+ AFX_IDP_FAILED_IO_ERROR_READ "Error inesperado al leer %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Error inesperado al escribir en %1."
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Introduzca un número entero."
+ AFX_IDP_PARSE_REAL, "Introduzca un número."
+ AFX_IDP_PARSE_INT_RANGE, "Introduzca un número entero entre %1 y %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Introduzca un número entre %1 y %2."
+ AFX_IDP_PARSE_STRING_SIZE, "No introduzca más de %1 caracteres."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Seleccione un botón."
+ AFX_IDP_PARSE_BYTE, "Introduzca un número entero entre 0 y 255."
+ AFX_IDP_PARSE_UINT, "Introduzca un número entero positivo."
+ AFX_IDP_PARSE_DATETIME, "Introduzca una fecha y/o una hora."
+ AFX_IDP_PARSE_CURRENCY, "Introduzca una moneda."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s vinculado"
+ AFX_IDS_UNKNOWNTYPE "Tipo desconocido"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nImposible registrar el documento.\nPuede que el documento ya esté abierto."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Imposible registrar el documento. \042%1.\042 Puede que el documento ya esté abierto."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "No hay ningún mensaje de error disponible."
+
+ AFX_IDP_FILE_NONE "No ha ocurrido ningún error."
+ AFX_IDP_FILE_GENERIC "Error desconocido al acceder a %1."
+ AFX_IDP_FILE_NOT_FOUND "No se encontró %1."
+ AFX_IDP_FILE_BAD_PATH "%1 contiene una ruta no válida."
+ AFX_IDP_FILE_TOO_MANY_OPEN "Imposible abrir %1, hay demasiados archivos abiertos."
+ AFX_IDP_FILE_ACCESS_DENIED "Acceso denegado a %1."
+ AFX_IDP_FILE_INVALID_FILE "Controlador no válido asociado a %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "Imposible eliminar %1 porque es el directorio actual."
+ AFX_IDP_FILE_DIR_FULL "Imposible crear %1 porque el directorio está lleno."
+ AFX_IDP_FILE_BAD_SEEK "Fin de búsqueda en %1 "
+ AFX_IDP_FILE_HARD_IO "Error de E/S de hardware al acceder a %1."
+ AFX_IDP_FILE_SHARING "Violación de acceso compartido al acceder a %1."
+ AFX_IDP_FILE_LOCKING "Violación de bloqueo al acceder %1. "
+ AFX_IDP_FILE_DISKFULL "Disco lleno al acceder a %1."
+ AFX_IDP_FILE_EOF "Se intentó acceder a %1 más allá del final."
+
+ AFX_IDP_ARCH_NONE "No ha ocurrido ningún error."
+ AFX_IDP_ARCH_GENERIC "Error desconocido al acceder a %1."
+ AFX_IDP_ARCH_READONLY "Se intentó escribir en %1 mientras se lo estaba leyendo."
+ AFX_IDP_ARCH_ENDOFFILE "Se intentó acceder a %1 más allá del final."
+ AFX_IDP_ARCH_WRITEONLY "Se intentó leer de %1 mientras estaba escribiendo."
+ AFX_IDP_ARCH_BADINDEX "%1 tiene un formato incorrecto."
+ AFX_IDP_ARCH_BADCLASS "%1 contiene un objeto inesperado."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contiene un esquema incorrecto."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Imposible cargar el soporte del sistema de correo."
+ AFX_IDP_INVALID_MAPI_DLL "La DLL del sistema de correo no es válida."
+ AFX_IDP_FAILED_MAPI_SEND "Enviar correo no envió el mensaje."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "píxeles"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Nuevo"
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Nuevo ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Aceptar",IDOK,137,6,40,14
+ PUSHBUTTON "Cancelar",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Ayuda",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/l.fra/afxctl.rc b/public/sdk/inc/mfc40/l.fra/afxctl.rc
new file mode 100644
index 000000000..f70559ac2
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.fra/afxctl.rc
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Nom de propriété:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "Po&lice:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "St&yle de police:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Taille:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effets",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "&Barré",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Souligné",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Exemple",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Nom de propriété:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Couleur système:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Nom de propriété:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "Pa&rcourir...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Effacer",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Aperçu:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Inconnu)"
+ AFX_IDS_COLOR_DESKTOP "Bureau"
+ AFX_IDS_COLOR_APPWORKSPACE "Espace de travail de l'application"
+ AFX_IDS_COLOR_WNDBACKGND "Arrière-plan de la fenêtre"
+ AFX_IDS_COLOR_WNDTEXT "Texte de la fenêtre"
+ AFX_IDS_COLOR_MENUBAR "Barre de menu"
+ AFX_IDS_COLOR_MENUTEXT "Texte de menu"
+ AFX_IDS_COLOR_ACTIVEBAR "Barre de titre active"
+ AFX_IDS_COLOR_INACTIVEBAR "Barre de titre inactive"
+ AFX_IDS_COLOR_ACTIVETEXT "Texte de la barre de titre active"
+ AFX_IDS_COLOR_INACTIVETEXT "Texte de la barre de titre inactive"
+ AFX_IDS_COLOR_ACTIVEBORDER "Bordure active"
+ AFX_IDS_COLOR_INACTIVEBORDER "Bordure inactive"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_COLOR_WNDFRAME "Cadre de la fenêtre"
+ AFX_IDS_COLOR_SCROLLBARS "Barres de défilement"
+ AFX_IDS_COLOR_BTNFACE "Face du bouton"
+ AFX_IDS_COLOR_BTNSHADOW "Ombre du bouton"
+ AFX_IDS_COLOR_BTNTEXT "Texte du bouton"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Surbrillance du bouton"
+ AFX_IDS_COLOR_DISABLEDTEXT "Texte désactivé"
+ AFX_IDS_COLOR_HIGHLIGHT "Surbrillance"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Texte en surbrillance"
+ AFX_IDS_REGULAR "Normal"
+ AFX_IDS_BOLD "Gras"
+ AFX_IDS_ITALIC "Italique"
+ AFX_IDS_BOLDITALIC "Italique gras"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+ AFX_IDS_DISPLAYSTRING_FONT "(Police)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Couleur)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Image - %s)"
+ AFX_IDS_PICTUREFILTER "Tous les type d'images|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Images en mode point (*.bmp;*.dib)|*.bmp;*.dib|Icônes/Curseurs (*.ico;*.cur)|*.ico|Métafichiers (*.wmf;*.emf)|*.emf;*.wmf|Tous les fichiers (*.*)|*.*||"
+ AFX_IDS_PICTYPE_UNKNOWN "Inconnu"
+ AFX_IDS_PICTYPE_NONE "Aucun"
+ AFX_IDS_PICTYPE_BITMAP "Image en mode point"
+ AFX_IDS_PICTYPE_METAFILE "Métafichier"
+ AFX_IDS_PICTYPE_ICON "Icône"
+ AFX_IDS_COLOR_PPG "Page de propriété de couleur"
+ AFX_IDS_COLOR_PPG_CAPTION "Couleurs"
+ AFX_IDS_FONT_PPG "Page de propriété de police"
+ AFX_IDS_FONT_PPG_CAPTION "Polices"
+ AFX_IDS_PICTURE_PPG "Page de propriété d'image"
+ AFX_IDS_PICTURE_PPG_CAPTION "Images"
+ AFX_IDS_BORDERSTYLE_0 "0 - Aucun"
+ AFX_IDS_BORDERSTYLE_1 "1 - Trait simple"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Modifier"
+ AFX_IDS_VERB_PROPERTIES "&Propriétés..."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Impossible d'ouvrir le fichier image %1. Le fichier peut ne pas exister, ou peut ne pas être lisible."
+ AFX_IDP_PICTURECANTLOAD "Impossible de charger le fichier image %1. Le fichier peut avoir un format incorrect."
+ AFX_IDP_PICTURETOOLARGE "Impossible de charger le fichier image %1. Le fichier est trop grand pour tenir en mémoire."
+ AFX_IDP_PICTUREREADFAILED
+ "Impossible de charger le fichier image %1. Echec à la lecture."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Parcourir les images"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Appel de fonction incorrect"
+ AFX_IDP_E_OVERFLOW "Dépassement de capacité"
+ AFX_IDP_E_OUTOFMEMORY "Mémoire épuisée"
+ AFX_IDP_E_DIVISIONBYZERO "Division par zéro"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Espace de chaîne insuffisant"
+ AFX_IDP_E_OUTOFSTACKSPACE "Espace pile insuffisant"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Nom ou numéro de fichier incorrect"
+ AFX_IDP_E_FILENOTFOUND "Fichier introuvable"
+ AFX_IDP_E_BADFILEMODE "Mode d'accès au fichier incorrect"
+ AFX_IDP_E_FILEALREADYOPEN "Fichier déjà ouvert"
+ AFX_IDP_E_DEVICEIOERROR "Erreur d'entrée/sortie de périphérique"
+ AFX_IDP_E_FILEALREADYEXISTS "Ce fichier existe déjà"
+ AFX_IDP_E_BADRECORDLENGTH "Longueur d'enregistrement incorrecte"
+ AFX_IDP_E_DISKFULL "Disque plein"
+ AFX_IDP_E_BADRECORDNUMBER "Numéro d'enregistrement incorrect"
+ AFX_IDP_E_BADFILENAME "Nom de fichier incorrect"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Trop de fichiers"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Périphérique non disponible"
+ AFX_IDP_E_PERMISSIONDENIED "Permission refusée"
+ AFX_IDP_E_DISKNOTREADY "Disque non prêt"
+ AFX_IDP_E_PATHFILEACCESSERROR "Erreur dans le chemin d'accès"
+ AFX_IDP_E_PATHNOTFOUND "Chemin d'accès introuvable"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Chaîne de motif incorrecte"
+ AFX_IDP_E_INVALIDUSEOFNULL "Utilisation incorrecte de NULL"
+ AFX_IDP_E_INVALIDFILEFORMAT "Format de fichier incorrect"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Valeur de propriété incorrecte"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Index de tableau incorrect"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "La propriété ne peut pas être définie au moment de l'exécution"
+ AFX_IDP_E_SETNOTSUPPORTED "Propriété en lecture seule"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Vous devez spécifier un index de tableau lorsque vous utilisez un tableau de propriété"
+ AFX_IDP_E_SETNOTPERMITTED "Cette propriété ne peut pas être définie pour ce contrôle"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "La propriété ne peut pas être lue au moment de l'exécution"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Propriété en écriture seule"
+ AFX_IDP_E_PROPERTYNOTFOUND "Propriété introuvable"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Format de Presse-papiers incorrect"
+ AFX_IDP_E_INVALIDPICTURE "Image incorrecte"
+ AFX_IDP_E_PRINTERERROR "Erreur d'imprimante"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Impossible de créer le fichier temporaire nécessaire pour l'enregistrement"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Texte recherché introuvable"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Texte de remplacement trop long"
+END
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.fra/afxdb.rc b/public/sdk/inc/mfc40/l.fra/afxdb.rc
new file mode 100644
index 000000000..74c2a8be0
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.fra/afxdb.rc
@@ -0,0 +1,97 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Tentative infructueuse de connexion à la source de données"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Le jeu d'enregistrements n'accepte que les déplacements vers l'avant."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Tentative infructueuse d'ouverture de table - colonnes à extraire introuvables à l'endroit spécifié."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "La requête a renvoyé des types de données de colonnes inattendus."
+ AFX_IDP_SQL_ILLEGAL_MODE "Tentative infructueuse de Mise à jour ou de Suppression."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Plusieurs lignes ont été mises à jour."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "L'opération a échoué, pas d'enregistrement en cours"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Aucune ligne n'a été affectée par l'opération de mise à jour ou de suppression."
+ AFX_IDP_SQL_RECORDSET_READONLY "Le jeu d'enregistrements est en lecture seule"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "Le pilote ODBC ne prend pas en charge le modèle de données LongBinary MFC."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Tentative infructueuse de chargement de l'élément ODBC32.DLL."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Le gestionnaire ODBC ne prend pas en charge les feuilles de réponses dynamiques."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Curseurs ODBC statiques requis pour la prise en charge des instantanés."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Gestionnaire ODBC incompatible avec les classes de bases de données MFC (API_CONFORMANCE >= SQL_OAC_LEVEL1 requis)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Gestionnaire ODBC incompatible avec les classes de bases de données MFC (SQL_CONFORMANCE >= SQL_OSC_MINIMUM requis)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Tentative de défilement après la fin ou avant le début des données."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Feuilles de réponses dynamiques non prises en charge par le gestionnaire ODBC."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Gestionnaire ODBC conforme Niveau 2 (Level 2) requis."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Les mises à jour programmées ne sont pas prises en charge par le gestionnaire ODBC."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Le mode de verrouillage requis n'est pas accepté."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Données tronquées."
+ AFX_IDP_SQL_ROW_FETCH
+ "Erreur de récupération de l'enregistrement."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Un point d'entrée ODBC requis est introuvable. Vérifiez qu'ODBC est correctement installé."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Echec de la mise à jour ou de la suppression."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Curseurs dynamiques non pris en charge par le pilote ODBC."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Impossible d'initialiser le moteur de base de données DAO/Jet."
+ AFX_IDP_DAO_DFX_BIND
+ "Valeur du paramètre DFX incorrecte."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef ou QueryDef non ouverts."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Echec de GetRows. Mémoire allouée insuffisante pour la ligne."
+ AFX_IDP_DAO_BADBINDINFO
+ "Erreur de liens GetRows. Ceci est probablement du à une mauvaise correspondance de types de données."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Echec de GetRows. La colonne demandée n'est pas un membre de ce jeu d'enregistrements."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc40/l.fra/afxolecl.rc b/public/sdk/inc/mfc40/l.fra/afxolecl.rc
new file mode 100644
index 000000000..99d33dac0
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.fra/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Impossible d'activer un objet OLE statique."
+ AFX_IDP_FAILED_TO_CONNECT "La connexion a échoué. \nLa liaison est peut être rompue."
+ AFX_IDP_SERVER_BUSY "Impossible d'exécuter la commande, le serveur est occupé."
+ AFX_IDP_BAD_VERB "Erreur lors de l'exécution de l'opération par l'application serveur."
+ AFX_IDP_FAILED_TO_LAUNCH "Erreur lors du démarrage d'une application serveur."
+ AFX_IDS_UPDATING_ITEMS "Mise à jour des objets OLE"
+ AFX_IDP_FAILED_TO_CONVERT "La conversion de l'objet OLE a échoué."
+ AFX_IDP_ASK_TO_DISCARD "Impossible d'enregistrer des objets OLE lorsque vous quittez Windows!\nSupprimer toutes les modifications apportées à %1?"
+ AFX_IDP_FAILED_TO_CREATE "Echec de création de l'objet. Vérifiez que l'application est entrée dans le registre du système."
+
+ AFX_IDS_METAFILE_FORMAT "Image (métafichier)\na image"
+ AFX_IDS_DIB_FORMAT "Image en mode point indépendante du périphérique\na image en mode point indépendante du périphérique"
+ AFX_IDS_BITMAP_FORMAT "Image en mode point\na image en mode point"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\ntexte avec du formatage de police et de paragraphe"
+ AFX_IDS_TEXT_FORMAT "Texte non formaté\ntexte sans aucun formatage"
+
+ AFX_IDS_INVALID_CURRENCY "Monnaie non valide."
+ AFX_IDS_INVALID_DATETIME "DateTime non valide."
+ AFX_IDS_INVALID_DATETIMESPAN "DateTimeSpan non valide."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.fra/afxolesv.rc b/public/sdk/inc/mfc40/l.fra/afxolesv.rc
new file mode 100644
index 000000000..8d29df2b7
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.fra/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Mettre à jour %1 avant de continuer?"
+ AFX_IDP_FAILED_TO_UPDATE, "Impossible de mettre à jour le client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "L'enregistrement a échoué. Il se peut que les fonctions OLE ne fonctionnent pas correctement."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "La mise à jour du registre du système a échoué. \nEssayez d'utiliser REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 dans %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Quitter et retourner à %1"
+ AFX_IDS_UPDATE_MENU, "Mise à jo&ur de %1"
+ AFX_IDS_SAVEFILECOPY, "Enregistrer la copie sous"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc40/l.fra/afxprint.rc b/public/sdk/inc/mfc40/l.fra/afxprint.rc
new file mode 100644
index 000000000..4998e7c96
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.fra/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Sans Serif"
+BEGIN
+ CTEXT "Impression",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "sur",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Annuler",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Annuler",IDCANCEL,46,45,40,15
+ CTEXT "Appuyer sur Cmd-. pour annuler l'impression.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Suivante",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Précédente",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Zoom ava&nt",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Zoom a&rrière",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Suivante",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Précédente",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Zoom ava&nt",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Zoom a&rrière",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Suivant",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Précédent",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Avant",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "A&rrière",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "sur %1" // for print output
+ AFX_IDS_ONEPAGE, "&Une page" // for preview button
+ AFX_IDS_TWOPAGE, "&Deux pages" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Page %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Page %u\nPages %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Fichiers imprimante (*.prn)|*.prn|Tous (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Imprime vers un fichier" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "vers %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc40/l.fra/afxres.rc b/public/sdk/inc/mfc40/l.fra/afxres.rc
new file mode 100644
index 000000000..88382c769
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.fra/afxres.rc
@@ -0,0 +1,211 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_OPENFILE, "Ouvrir"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Enregistrer sous"
+ AFX_IDS_ALLFILTER, "Tous les fichiers (*.*)"
+ AFX_IDS_UNTITLED, "sans nom"
+#else
+ AFX_IDS_SAVEFILE, "Enregistrer le document sous :"
+ AFX_IDS_ALLFILTER, "Tous les fichiers"
+ AFX_IDS_UNTITLED, "sans nom"
+ AFX_IDS_UNNAMED_FILE, "un fichier non nommé"
+ AFX_IDS_ABOUT, "A propos de %1\205"
+#endif
+ AFX_IDS_HIDE, "&Masquer"
+
+ AFX_IDS_MEMORY_EXCEPTION, "Mémoire insuffisante."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Une opération non prise en charge a été tentée."
+ AFX_IDS_RESOURCE_EXCEPTION, "Une ressource requise était non disponible."
+ AFX_IDS_USER_EXCEPTION, "Une erreur inconnue s'est produite."
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "Nom de fichier non valide."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "L'ouverture du document a échoué."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "L'enregistrement du document a échoué."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Enregistrer les modifications apportées à %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Enregistrer les modifications apportées au document %1 \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "La création d'un document vide a échoué."
+ AFX_IDP_FILE_TOO_LARGE, "Le fichier est trop volumineux pour être ouvert."
+ AFX_IDP_FAILED_TO_START_PRINT, "Impossible de lancer l'impression."
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Le démarrage de l'aide a échoué."
+ AFX_IDP_INTERNAL_FAILURE, "Erreur d'application interne."
+ AFX_IDP_COMMAND_FAILURE, "La commande a échoué."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Mémoire insuffisante pour exécuter l'opération."
+ AFX_IDP_GET_NOT_SUPPORTED, "Impossible de lire une propriété en écriture seule."
+ AFX_IDP_SET_NOT_SUPPORTED, "Impossible d'écrire une propriété en lecture seule."
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "Format de fichier inattendu."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nImpossible de trouver ce fichier. Vérifiez que le chemin et le nom du fichier sont corrects."
+ AFX_IDP_FAILED_DISK_FULL "Le lecteur de disque de destination est plein."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Impossible de trouver le fichier \042%1.\042. Vérifiez que le nom du fichier est correct."
+ AFX_IDP_FAILED_DISK_FULL "Le disque de destination est plein."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Impossible de lire à partir de %1, il est en cours d'utilisation."
+ AFX_IDP_FAILED_ACCESS_WRITE "Impossible d'écrire sur %1, il est en lecture seule ou en cours d'utilisation."
+ AFX_IDP_FAILED_IO_ERROR_READ "Une erreur inattendue s'est produite lors de la lecture de %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Une erreur inattendue s'est produite lors de l'écriture de %1."
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Tapez un nombre entier."
+ AFX_IDP_PARSE_REAL, "Tapez un nombre."
+ AFX_IDP_PARSE_INT_RANGE, "Tapez un nombre entier compris entre %1 et %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Tapez un nombre compris entre %1 et %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Tapez %1 caractères au maximum."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Choisissez un bouton."
+ AFX_IDP_PARSE_BYTE, "Veuillez entrer un entier compris entre 0 et 255."
+ AFX_IDP_PARSE_UINT, "Veuillez entrer un entier positif."
+ AFX_IDP_PARSE_DATETIME, "Veuillez entrer une date et/ou une heure."
+ AFX_IDP_PARSE_CURRENCY, "Veuillez entrer une monnaie."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s lié(e)"
+ AFX_IDS_UNKNOWNTYPE "Type inconnu"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nImpossible d'enregistrer le document. \nLe document est peut-être déjà ouvert."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Impossible d'enregistrer le document \042%1.\042. Le document est peut-être déjà ouvert."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "Aucun message d'erreur n'est disponible."
+
+ AFX_IDP_FILE_NONE "Aucune erreur ne s'est produite."
+ AFX_IDP_FILE_GENERIC "Une erreur inconnue s'est produite lors de l'accès à %1."
+ AFX_IDP_FILE_NOT_FOUND "Impossible de trouver %1."
+ AFX_IDP_FILE_BAD_PATH "%1 contient un chemin non valide."
+ AFX_IDP_FILE_TOO_MANY_OPEN "Impossible d'ouvrir %1 car il y a trop de fichiers ouverts."
+ AFX_IDP_FILE_ACCESS_DENIED "L'accès à %1 a été refusé."
+ AFX_IDP_FILE_INVALID_FILE "Un descripteur de fichier non valide a été associé à %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "Impossible d'enlever %1 car c'est le répertoire courant."
+ AFX_IDP_FILE_DIR_FULL "Impossible de créer %1 car le répertoire est plein."
+ AFX_IDP_FILE_BAD_SEEK "Echec de la recherche sur %1"
+ AFX_IDP_FILE_HARD_IO "Une erreur d'E/S matérielle a été reportée lors de l'accès à %1."
+ AFX_IDP_FILE_SHARING "Une violation de partage s'est produite lors de l'accès à %1."
+ AFX_IDP_FILE_LOCKING "Une violation de verrouillage s'est produite lors de l'accès à %1."
+ AFX_IDP_FILE_DISKFULL "Disque plein lors de l'accès à %1."
+ AFX_IDP_FILE_EOF "Tentative d'accès à %1 après sa fin."
+
+ AFX_IDP_ARCH_NONE "Aucune erreur ne s'est produite."
+ AFX_IDP_ARCH_GENERIC "Une erreur inconnue s'est produite lors de l'accès à %1."
+ AFX_IDP_ARCH_READONLY "Tentative d'écriture de %1 ouvert pour la lecture."
+ AFX_IDP_ARCH_ENDOFFILE "Tentative d'accès à %1 après sa fin."
+ AFX_IDP_ARCH_WRITEONLY "Tentative de lecture de %1 ouvert pour l'écriture."
+ AFX_IDP_ARCH_BADINDEX "%1 a un mauvais format."
+ AFX_IDP_ARCH_BADCLASS "%1 contient un objet inattendu."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contient un schéma incorrect."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Impossible de charger la prise en charge du système de messagerie électronique."
+ AFX_IDP_INVALID_MAPI_DLL "La DLL système de la messagerie n'est pas valide."
+ AFX_IDP_FAILED_MAPI_SEND "La messagerie électronique n'a pas pu envoyer le message."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "pixels"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Nouveau"
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Nouveau",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Annuler",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Aide",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/l.ita/afxctl.rc b/public/sdk/inc/mfc40/l.ita/afxctl.rc
new file mode 100644
index 000000000..c29ee7f36
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.ita/afxctl.rc
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Proprietà:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Tipo di carattere:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "St&ile:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Dimensione:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effetti",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Bar&rato",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Sottolineato",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Esempio",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Proprietà:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Colore di sistema:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Proprietà:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Sfoglia...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Cancella",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Anteprima:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Sconosciuto)"
+ AFX_IDS_COLOR_DESKTOP "Desktop"
+ AFX_IDS_COLOR_APPWORKSPACE "Area di lavoro dell'applicazione"
+ AFX_IDS_COLOR_WNDBACKGND "Sfondo della finestra"
+ AFX_IDS_COLOR_WNDTEXT "Testo della finestra"
+ AFX_IDS_COLOR_MENUBAR "Barra dei menu"
+ AFX_IDS_COLOR_MENUTEXT "Testo dei menu"
+ AFX_IDS_COLOR_ACTIVEBAR "Barra del titolo attiva"
+ AFX_IDS_COLOR_INACTIVEBAR "Barra del titolo inattiva"
+ AFX_IDS_COLOR_ACTIVETEXT "Testo della barra del titolo attiva"
+ AFX_IDS_COLOR_INACTIVETEXT "Testo della barra del titolo inattiva"
+ AFX_IDS_COLOR_ACTIVEBORDER "Bordo attivo"
+ AFX_IDS_COLOR_INACTIVEBORDER "Bordo inattivo"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_COLOR_WNDFRAME "Cornice della finestra"
+ AFX_IDS_COLOR_SCROLLBARS "Barre di scorrimento"
+ AFX_IDS_COLOR_BTNFACE "Aspetto pulsante"
+ AFX_IDS_COLOR_BTNSHADOW "Ombreggiatura pulsante"
+ AFX_IDS_COLOR_BTNTEXT "Testo del pulsante"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Evidenziazione del pulsante"
+ AFX_IDS_COLOR_DISABLEDTEXT "Testo disattivato"
+ AFX_IDS_COLOR_HIGHLIGHT "Evidenziazione"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Testo evidenziato"
+ AFX_IDS_REGULAR "Normale"
+ AFX_IDS_BOLD "Grassetto"
+ AFX_IDS_ITALIC "Corsivo"
+ AFX_IDS_BOLDITALIC "Grassetto corsivo"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+ AFX_IDS_DISPLAYSTRING_FONT "(Tipo di carattere)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Colore)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Immagine - %s)"
+ AFX_IDS_PICTUREFILTER "Tutte le immagini |*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmap (*.bmp;*.dib)|*.bmp;*.dib|Icone/cursori (*.ico;*.cur)|*.ico|Metafile (*.wmf;*.emf)|*.emf;*.wmf|Tutti i file (*.*)|*.*||"
+ AFX_IDS_PICTYPE_UNKNOWN "Sconosciuto"
+ AFX_IDS_PICTYPE_NONE "Nessuno"
+ AFX_IDS_PICTYPE_BITMAP "Bitmap"
+ AFX_IDS_PICTYPE_METAFILE "Metafile"
+ AFX_IDS_PICTYPE_ICON "Icona"
+ AFX_IDS_COLOR_PPG "Scheda delle proprietà del colore"
+ AFX_IDS_COLOR_PPG_CAPTION "Colori"
+ AFX_IDS_FONT_PPG "Scheda delle proprietà dei caratteri"
+ AFX_IDS_FONT_PPG_CAPTION "Caratteri"
+ AFX_IDS_PICTURE_PPG "Scheda delle proprietà delle immagini"
+ AFX_IDS_PICTURE_PPG_CAPTION "Immagini"
+ AFX_IDS_BORDERSTYLE_0 "0 - None"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fixed Single"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Modifica"
+ AFX_IDS_VERB_PROPERTIES "&Proprietà..."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Impossibile aprire il file immagine %1. Il file non esiste o è illeggibile."
+ AFX_IDP_PICTURECANTLOAD "Impossibile caricare il file immagine %1. È possibile che il formato del file non sia valido."
+ AFX_IDP_PICTURETOOLARGE "Impossibile caricare l'immagine %1. Il file è troppo grande per essere contenuto in memoria."
+ AFX_IDP_PICTUREREADFAILED
+ "Impossibile caricare l'immagine %1. Errore di lettura non definito. "
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Sfoglia immagini"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Chiamata di funzione non valida"
+ AFX_IDP_E_OVERFLOW "Overflow"
+ AFX_IDP_E_OUTOFMEMORY "Memoria esaurita"
+ AFX_IDP_E_DIVISIONBYZERO "Divisione per zero"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Spazio della stringa esaurito"
+ AFX_IDP_E_OUTOFSTACKSPACE "Spazio dello stack esaurito"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Nome o numero di file non valido"
+ AFX_IDP_E_FILENOTFOUND "Impossibile trovare il file"
+ AFX_IDP_E_BADFILEMODE "Modalità file non valida"
+ AFX_IDP_E_FILEALREADYOPEN "File già aperto"
+ AFX_IDP_E_DEVICEIOERROR "Errore di I/O sulla periferica"
+ AFX_IDP_E_FILEALREADYEXISTS "File già esistente"
+ AFX_IDP_E_BADRECORDLENGTH "Lunghezza record non valida"
+ AFX_IDP_E_DISKFULL "Disco pieno"
+ AFX_IDP_E_BADRECORDNUMBER "Numero record non valido"
+ AFX_IDP_E_BADFILENAME "Nome file non valido"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Troppi file"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Periferica non disponibile"
+ AFX_IDP_E_PERMISSIONDENIED "Permesso negato"
+ AFX_IDP_E_DISKNOTREADY "Disco non pronto"
+ AFX_IDP_E_PATHFILEACCESSERROR "Errore di accesso al percorso o al file"
+ AFX_IDP_E_PATHNOTFOUND "Impossibile trovare il percorso"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Stringa di ricerca non valida"
+ AFX_IDP_E_INVALIDUSEOFNULL "Utilizzo di Null non valido"
+ AFX_IDP_E_INVALIDFILEFORMAT "Formato file non valido"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Valore della proprietà non valido"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Indice della matrice non valido"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Impossibile impostare la proprietà in fase di esecuzione"
+ AFX_IDP_E_SETNOTSUPPORTED "La proprietà è di sola lettura"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "È necessario specificare un indice di matrice quando si utilizza una matrice di proprietà"
+ AFX_IDP_E_SETNOTPERMITTED "Impossibile impostare la proprietà per questo controllo"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "Impossibile leggere la proprietà in fase di esecuzione"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "La proprietà è di sola scrittura"
+ AFX_IDP_E_PROPERTYNOTFOUND "Impossibile trovare la proprietà"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Formato Appunti non valido"
+ AFX_IDP_E_INVALIDPICTURE "Immagine non valida"
+ AFX_IDP_E_PRINTERERROR "Errore della stampante"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Impossibile creare un file temporaneo necessario per il salvataggio"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Testo della ricerca non trovato"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Testo sostitutivo troppo lungo"
+END
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.ita/afxdb.rc b/public/sdk/inc/mfc40/l.ita/afxdb.rc
new file mode 100644
index 000000000..b713d3fcc
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.ita/afxdb.rc
@@ -0,0 +1,97 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Tentativo di connessione alla fonte dati esterna non riuscito"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Il set di record supporta solo il movimento in avanti."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Tentativo di aprire una tabella non riuscito. Non c'erano colonne da recuperare dove specificato. "
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "La ricerca ha fornito tipi di dati inattesi per le colonne."
+ AFX_IDP_SQL_ILLEGAL_MODE "Tentativo di aggiornamento o di cancellazione non riuscito."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Sono state aggiornate righe multiple."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operazione non riuscita, nessun record corrente."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Nessuna riga è stata influenzata dall'operazione di aggiornamento o di cancellazione."
+ AFX_IDP_SQL_RECORDSET_READONLY "Il set di record è di sola lettura"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "Il driver ODBC non supporta il modello dati MFC LongBinary."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Tentativo di caricare la componente richiesta ODBC32.DLL non riuscito."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Il driver ODBC non supporta i dynaset."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Puntatori statici ODBC richiesti per il supporto dell'anteprima."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Il driver ODBC è incompatibile con le classi di database MFC (utilizzare API_CONFORMANCE >= SQL_OAC_LEVEL1)"
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Il driver ODBC è incompatibile con le classi di database MFC (utilizzare SQL_CONFORMANCE >= SQL_OSC_MINIMUM)"
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Tentativo di scorrere i dati oltre la fine o prima dell'inizio."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Il driver ODBC non supporta i dynaset."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "È richiesto un driver conforme al livello 2 di ODBC."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Il driver ODBC non supporta gli aggiornamenti dipendenti dalla posizione."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "La modalità blocco richiesta non è supportata."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Dati troncati."
+ AFX_IDP_SQL_ROW_FETCH
+ "Errore nel recupero di record."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Non è stato trovato un punto di ingresso ODBC richiesto. Assicurarsi che ODBC sia installato correttamente."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Aggiornamento o cancellazione non riusciti."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Cursore dinamico non supportato dal driver ODBC."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Non è possibile inizializzare il motore del db DAO/Jet."
+ AFX_IDP_DAO_DFX_BIND
+ "Il valore del parametro DFX non è valido."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "Il DAO TableDef o QueryDef non sono aperti."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Errore GetRows. Memoria insufficiente per la fila."
+ AFX_IDP_DAO_BADBINDINFO
+ "Errore GetRows di collegamento. Probabilmente causato da un tipo di dati non corrispondente."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Errore GetRows. La colonna richiesta non fa parte di questo set di record."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc40/l.ita/afxolecl.rc b/public/sdk/inc/mfc40/l.ita/afxolecl.rc
new file mode 100644
index 000000000..3ed4cf990
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.ita/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Impossibile attivare un oggetto statico OLE."
+ AFX_IDP_FAILED_TO_CONNECT "Connessione non riuscita.\nIl collegamento potrebbe essere interrotto."
+ AFX_IDP_SERVER_BUSY "Impossibile elaborare il comando, il server è impegnato."
+ AFX_IDP_BAD_VERB "Impossibile eseguire l'operazione sul server."
+ AFX_IDP_FAILED_TO_LAUNCH "Impossibile avviare l'applicazione sul server."
+ AFX_IDS_UPDATING_ITEMS "Aggiornamento di oggetti OLE"
+ AFX_IDP_FAILED_TO_CONVERT "Impossibile convertire l'oggetto OLE."
+ AFX_IDP_ASK_TO_DISCARD "Non è possibile salvare gli oggetti OLE durante l'uscita da Windows.\nScartare tutte le modifiche a %1?"
+ AFX_IDP_FAILED_TO_CREATE "Errore nel creare l'oggetto. Assicurarsi che l'applicazione sia inclusa nel registro del sistema."
+
+ AFX_IDS_METAFILE_FORMAT "Illustrazione (Metafile)\na illustrazione "
+ AFX_IDS_DIB_FORMAT "Device Indipendent Bitmap\na bitmap indipendente dalla periferica"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\na bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Formato RTF\ntesto con formattazione di carattere e di paragrafo"
+ AFX_IDS_TEXT_FORMAT "Testo non formattato\ntesto senza alcuna formattazione"
+
+ AFX_IDS_INVALID_CURRENCY "Formato valuta non valido."
+ AFX_IDS_INVALID_DATETIME "Formato data/ora non valido."
+ AFX_IDS_INVALID_DATETIMESPAN "Periodo di tempo non valido."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.ita/afxolesv.rc b/public/sdk/inc/mfc40/l.ita/afxolesv.rc
new file mode 100644
index 000000000..975217b5f
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.ita/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Aggiornare %1 prima di procedere?"
+ AFX_IDP_FAILED_TO_UPDATE, "Impossibile aggiornare il client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Impossibile registrare. Le caratteristiche OLE potrebbero non funzionare in modo corretto."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Impossibile aggiornare il registro di sistema.\nProvare utilizzando REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Esci && ritorna a %1"
+ AFX_IDS_UPDATE_MENU, "&Aggiorna %1"
+ AFX_IDS_SAVEFILECOPY, "Salva copia con nome"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc40/l.ita/afxprint.rc b/public/sdk/inc/mfc40/l.ita/afxprint.rc
new file mode 100644
index 000000000..5854d2182
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.ita/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Sans Serif"
+BEGIN
+ CTEXT "Stampa in corso",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "sul",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Annulla",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Annulla",IDCANCEL,46,45,40,15
+ CTEXT "Premere Cmd-. per annullare.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "Stam&pa...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "Pag. &succes.",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "Pag. p&reced.",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Ingrand&isci",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Ri&duci",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Chiudi",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Stam&pa...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "Pag. &succes.",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "Pag. p&reced.",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ingrand&isci",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Ri&duci",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Chiudi",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Stam&pa...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Succes.",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "P&reced.",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Ingresso",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Uscita",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Chiudi",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "su %1" // for print output
+ AFX_IDS_ONEPAGE, "&Una pagina" // for preview button
+ AFX_IDS_TWOPAGE, "&Due pagine" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Pagina %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Pagina %u\nPagine %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "File della stampante (*.prn)|*.prn|Tutti i file (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Stampa su file" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "su %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc40/l.ita/afxres.rc b/public/sdk/inc/mfc40/l.ita/afxres.rc
new file mode 100644
index 000000000..89f44f158
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.ita/afxres.rc
@@ -0,0 +1,211 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse MFC standard >\0 "
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_OPENFILE, "Apri"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Salva con nome"
+ AFX_IDS_ALLFILTER, "Tutti i file (*.*)"
+ AFX_IDS_UNTITLED, "Senza titolo"
+#else
+ AFX_IDS_SAVEFILE, "Salva documento con nome:"
+ AFX_IDS_ALLFILTER, "Tutti i file"
+ AFX_IDS_UNTITLED, "senza titolo"
+ AFX_IDS_UNNAMED_FILE, "un file senza nome"
+ AFX_IDS_ABOUT, "Informazioni su %1\205"
+#endif
+ AFX_IDS_HIDE, "&Nascondi"
+
+ AFX_IDS_MEMORY_EXCEPTION, "Memoria insufficiente."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"È stata tentata un'operazione non supportata."
+ AFX_IDS_RESOURCE_EXCEPTION, "Una risorsa richiesta non era disponibile."
+ AFX_IDS_USER_EXCEPTION, "Si Š verificato un errore sconosciuto."
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "Nome file non valido."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Impossibile aprire il documento."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Impossibile salvare il documento."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Salvare le modifiche a %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Salvare le modifiche al documento %1 \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Impossibile creare un documento vuoto."
+ AFX_IDP_FILE_TOO_LARGE, "Il file è troppo grande per essere aperto."
+ AFX_IDP_FAILED_TO_START_PRINT, "Impossibile avviare il lavoro di stampa."
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Impossibile avviare la Guida."
+ AFX_IDP_INTERNAL_FAILURE, "Errore interno dell'applicazione."
+ AFX_IDP_COMMAND_FAILURE, "Comando non riuscito."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Memoria insufficiente per eseguire l'operazione."
+ AFX_IDP_GET_NOT_SUPPORTED, "Impossibile leggere la proprietà in sola scrittura."
+ AFX_IDP_SET_NOT_SUPPORTED, "Impossibile scrivere la proprietà in sola lettura."
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "Formato file inatteso."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nImpossibile trovare questo file.\nVerificare che siano stati forniti il percorso e il nome del file corretti."
+ AFX_IDP_FAILED_DISK_FULL "L'unità disco di destinazione è piena."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Impossibile trovare il file \042%1.\042. Verificare che il nome del file sia corretto."
+ AFX_IDP_FAILED_DISK_FULL "Il disco di destinazione è pieno."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Impossibile leggere da %1, è già aperto da un altro utente."
+ AFX_IDP_FAILED_ACCESS_WRITE "Impossibile scrivere su %1, è di sola lettura o già aperto."
+ AFX_IDP_FAILED_IO_ERROR_READ "Errore inatteso durante la lettura di %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Errore inatteso durante la scrittura di %1."
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Digitare un numero intero."
+ AFX_IDP_PARSE_REAL, "Digitare un numero."
+ AFX_IDP_PARSE_INT_RANGE, "Digitare un numero intero compreso tra %1 e %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Digitare un numero compreso tra %1 e %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Non digitare più di %1 caratteri."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Selezionare un pulsante."
+ AFX_IDP_PARSE_BYTE, "Digitare un intero compreso tra 0 e 255."
+ AFX_IDP_PARSE_UINT, "Digitare un numero intero positivo."
+ AFX_IDP_PARSE_DATETIME, "Digitare una data e/o un'ora."
+ AFX_IDP_PARSE_CURRENCY, "Digitare un tipo di valuta."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Collegato %s"
+ AFX_IDS_UNKNOWNTYPE "Tipo sconosciuto"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nImpossibile registrare il documento.\nIl documento potrebbe essere già aperto."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Impossibile registrare il documento \042%1.\042. Il documento potrebbe essere già aperto."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "Nessun messaggio di errore è disponibile."
+
+ AFX_IDP_FILE_NONE "Non si è verificato alcun errore."
+ AFX_IDP_FILE_GENERIC "Si è verificato un errore sconosciuto durante l'accesso a %1."
+ AFX_IDP_FILE_NOT_FOUND "%1 non trovato."
+ AFX_IDP_FILE_BAD_PATH "%1 contiene un percorso non valido."
+ AFX_IDP_FILE_TOO_MANY_OPEN "Non è stato possibile aprire %1 poiché vi sono troppi file aperti."
+ AFX_IDP_FILE_ACCESS_DENIED "Accesso a %1 negato."
+ AFX_IDP_FILE_INVALID_FILE "Un gestore di file non valido è stato associato a %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "Impossibile rimuovere %1 poiché è la directory corrente."
+ AFX_IDP_FILE_DIR_FULL "Impossibile creare %1 poiché la directory è piena."
+ AFX_IDP_FILE_BAD_SEEK "Ricerca fallita su %1"
+ AFX_IDP_FILE_HARD_IO "Nell'accesso a %1 è stato registrato un errore hardware di I/O. "
+ AFX_IDP_FILE_SHARING "Durante l'accesso a %1 si è verificata una violazione di condivisione."
+ AFX_IDP_FILE_LOCKING "Durante l'accesso a %1 si è verificata una violazione di blocco."
+ AFX_IDP_FILE_DISKFULL "Disco pieno durante l'accesso a %1."
+ AFX_IDP_FILE_EOF "È stato fatto un tentativo di accedere a %1 oltre la sua fine."
+
+ AFX_IDP_ARCH_NONE "Non si è verificato alcun errore."
+ AFX_IDP_ARCH_GENERIC "Si è verificato un errore sconosciuto durante l'accesso a %1."
+ AFX_IDP_ARCH_READONLY "Si è tentato di scrivere sulla lettura %1."
+ AFX_IDP_ARCH_ENDOFFILE "È stato fatto un tentativo di accedere a %1 oltre la sua fine."
+ AFX_IDP_ARCH_WRITEONLY "Si è tentato di leggere dalla scrittura di %1."
+ AFX_IDP_ARCH_BADINDEX "Formato di %1 non valido."
+ AFX_IDP_ARCH_BADCLASS "%1 conteneva un oggetto inatteso."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contiene uno schema errato."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Impossibile caricare il supporto di sistema per la posta elettronica."
+ AFX_IDP_INVALID_MAPI_DLL "La DLL del sistema di posta elettronica non è valida."
+ AFX_IDP_FAILED_MAPI_SEND "Impossibile inviare un messaggio con il comando di invio."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "pixel"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Nuovo"
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "&Nuovo",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Annulla",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&?",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/l.jpn/afxctl.rc b/public/sdk/inc/mfc40/l.jpn/afxctl.rc
new file mode 100644
index 000000000..93d678aa3
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.jpn/afxctl.rc
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌßÛÊßè–¼(&N):",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "Ì«ÝÄ–¼(&F):",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "½À²Ù(&Y):",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "»²½Þ(&S):",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "•¶Žšü‚è",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Žæ‚èÁ‚µü(&K)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "伟(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "»ÝÌßÙ",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌßÛÊßè–¼(&N):",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "¼½ÃÑ ¶×°(&C):",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌßÛÊßè–¼(&N):",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ŽQÆ(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "¸Ø±(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "ÌßÚËÞ­°:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Unknown)"
+ AFX_IDS_COLOR_DESKTOP "ÃÞ½¸Ä¯Ìß"
+ AFX_IDS_COLOR_APPWORKSPACE "ì‹Æ‚·‚é—̈æ"
+ AFX_IDS_COLOR_WNDBACKGND "³¨ÝÄÞ³‚Ì”wŒi"
+ AFX_IDS_COLOR_WNDTEXT "³¨ÝÄÞ³“à‚Ì•¶Žš"
+ AFX_IDS_COLOR_MENUBAR "ÒÆ­° ÊÞ°"
+ AFX_IDS_COLOR_MENUTEXT "ÒÆ­°‚Ì•¶Žš"
+ AFX_IDS_COLOR_ACTIVEBAR "±¸Ã¨ÌÞ À²ÄÙ ÊÞ°"
+ AFX_IDS_COLOR_INACTIVEBAR "”ñ±¸Ã¨ÌÞ À²ÄÙ ÊÞ°"
+ AFX_IDS_COLOR_ACTIVETEXT "±¸Ã¨ÌÞ À²ÄÙ ÊÞ°‚Ì•¶Žš"
+ AFX_IDS_COLOR_INACTIVETEXT "”ñ±¸Ã¨ÌÞ À²ÄÙ ÊÞ°‚Ì•¶Žš"
+ AFX_IDS_COLOR_ACTIVEBORDER "±¸Ã¨ÌÞ ³¨ÝÄÞ³‚Ì‹«ŠE"
+ AFX_IDS_COLOR_INACTIVEBORDER "”ñ±¸Ã¨ÌÞ ³¨ÝÄÞ³‚Ì‹«ŠE"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_COLOR_WNDFRAME "³¨ÝÄÞ³‚̘g"
+ AFX_IDS_COLOR_SCROLLBARS "½¸Û°Ù ÊÞ°"
+ AFX_IDS_COLOR_BTNFACE "ÎÞÀÝ‚Ì•\–Ê"
+ AFX_IDS_COLOR_BTNSHADOW "ÎÞÀ݂̉e"
+ AFX_IDS_COLOR_BTNTEXT "ÎÞÀÝ‚Ì•¶Žš"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "”½“]•\Ž¦‚ÌÎÞÀÝ"
+ AFX_IDS_COLOR_DISABLEDTEXT "’WF•\Ž¦‚Ì•¶Žš"
+ AFX_IDS_COLOR_HIGHLIGHT "”½“]•\Ž¦"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "”½“]•\Ž¦‚Ì•¶Žš"
+ AFX_IDS_REGULAR "•W€"
+ AFX_IDS_BOLD "‘¾Žš"
+ AFX_IDS_ITALIC "ŽÎ‘Ì"
+ AFX_IDS_BOLDITALIC "‘¾ŽšŽÎ‘Ì"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+ AFX_IDS_DISPLAYSTRING_FONT "(Ì«ÝÄ)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(F)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Ë߸Á¬ - %s)"
+ AFX_IDS_PICTUREFILTER "‚·‚ׂĂÌË߸Á¬Œ`Ž®|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|ËÞ¯ÄϯÌß (*.bmp;*.dib)|*.bmp;*.dib|±²ºÝ/¶°¿Ù (*.ico;*.cur)|*.ico|ÒÀ̧²Ù (*.wmf;*.emf)|*.emf;*.wmf|‚·‚ׂĂÌ̧²Ù (*.*)|*.*||"
+ AFX_IDS_PICTYPE_UNKNOWN "Unknown"
+ AFX_IDS_PICTYPE_NONE "‚È‚µ"
+ AFX_IDS_PICTYPE_BITMAP "ËÞ¯ÄϯÌß"
+ AFX_IDS_PICTYPE_METAFILE "ÒÀ̧²Ù"
+ AFX_IDS_PICTYPE_ICON "±²ºÝ"
+ AFX_IDS_COLOR_PPG "¶×° ÌßÛÊßè Íß°¼Þ"
+ AFX_IDS_COLOR_PPG_CAPTION "¶×°"
+ AFX_IDS_FONT_PPG "Ì«ÝÄ ÌßÛÊßè Íß°¼Þ"
+ AFX_IDS_FONT_PPG_CAPTION "Ì«ÝÄ"
+ AFX_IDS_PICTURE_PPG "Ë߸Á¬ ÌßÛÊßè Íß°¼Þ"
+ AFX_IDS_PICTURE_PPG_CAPTION "Ë߸Á¬"
+ AFX_IDS_BORDERSTYLE_0 "0 - ‚È‚µ"
+ AFX_IDS_BORDERSTYLE_1 "1 - ŒÅ’è(ŽÀü)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "•ÒW(&E)"
+ AFX_IDS_VERB_PROPERTIES "ÌßÛÊßè(&P)..."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB̧²Ù‚ª‘¶Ý‚µ‚È‚¢‚©A“Ç‚Ýž‚ß‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_PICTURECANTLOAD "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB ̧²ÙŒ`Ž®‚ª³‚µ‚­‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_PICTURETOOLARGE "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB ̧²Ù‚ª‘å‚«‚·‚¬‚Ü‚·B"
+ AFX_IDP_PICTUREREADFAILED
+ "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB “Ç‚Ýž‚Ý‚Å´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Ë߸Á¬ ‚ÌŽQÆ"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "ŠÖ”ŒÄ‚Ño‚µ‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_OVERFLOW "µ°ÊÞ°ÌÛ°‚µ‚Ü‚µ‚½B"
+ AFX_IDP_E_OUTOFMEMORY "ÒÓØ‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_DIVISIONBYZERO "¾ÞÛ‚ÅœŽZ‚µ‚Ü‚µ‚½B"
+ AFX_IDP_E_OUTOFSTRINGSPACE "•¶Žš—ñ—̈悪•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_OUTOFSTACKSPACE "½À¯¸—̈悪•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_BADFILENAMEORNUMBER "̧²Ù–¼‚Ü‚½‚͔Ԇ‚ª•s³‚Å‚·B"
+ AFX_IDP_E_FILENOTFOUND "̧²Ù‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_BADFILEMODE "̧²Ù Ó°ÄÞ‚ª•s³‚Å‚·B"
+ AFX_IDP_E_FILEALREADYOPEN "̧²Ù‚ÍŠù‚ÉŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_DEVICEIOERROR "ÃÞÊÞ²½ I/O ´×°‚Å‚·B"
+ AFX_IDP_E_FILEALREADYEXISTS "Šù‚É“¯–¼‚Ì̧²Ù‚ª‘¶Ý‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_BADRECORDLENGTH "Úº°ÄÞ’·‚ªˆê’v‚µ‚Ü‚¹‚ñB"
+ AFX_IDP_E_DISKFULL "ÃÞ¨½¸‚Ì‹ó‚«—e—Ê‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_BADRECORDNUMBER "Úº°ÄÞ”Ô†‚ª•s³‚Å‚·B"
+ AFX_IDP_E_BADFILENAME "̧²Ù–¼‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "̧²Ù‚ª‘½‚·‚¬‚Ü‚·B"
+ AFX_IDP_E_DEVICEUNAVAILABLE "ÃÞÊÞ²½‚ª€”õ‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_E_PERMISSIONDENIED "±¸¾½‚Í‹‘”Û‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_E_DISKNOTREADY "ÃÞ¨½¸‚ª€”õ‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_E_PATHFILEACCESSERROR "Êß½–¼‚ª–³Œø‚Å‚·B"
+ AFX_IDP_E_PATHNOTFOUND "Êß½‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_INVALIDPATTERNSTRING "ÊßÀ°Ý•¶Žš—ñ‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDUSEOFNULL "null •¶Žš‚ÌŽg‚¢•û‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDFILEFORMAT "̧²ÙŒ`Ž®‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "ÌßÛÊßè‚Ì’l‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "”z—ñ‚Ì“Y‚¦Žš‚ª•s³‚Å‚·B"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "‚±‚ÌÌßÛÊßè‚Ì’l‚ÍŽÀsŽž‚É‚ÍÝ’è‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_E_SETNOTSUPPORTED "‚±‚ÌÌßÛÊßè‚Í’l‚̎擾‚̂݉”\‚Å‚·B"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "ÌßÛÊßè”z—ñ‚ɂͲÝÃÞ¯¸½‚ðŽw’肵‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_E_SETNOTPERMITTED "‚±‚̺ÝÄÛ°Ù‚ÌÌßÛÊßè‚ÍÝ’è‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "‚±‚ÌÌßÛÊßè‚Ì’l‚ÍŽÀsŽž‚ɂ͎擾‚Å‚«‚Ü‚¹‚ñB"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "‚±‚ÌÌßÛÊßè‚ÍÝ’è‚̂݉”\‚Å‚·B"
+ AFX_IDP_E_PROPERTYNOTFOUND "ÌßÛÊß肪Œ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "¸Ø¯ÌßÎÞ°ÄÞ‚ÌÃÞ°ÀŒ`Ž®‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDPICTURE "Ë߸Á¬‚ª•s³‚Å‚·B"
+ AFX_IDP_E_PRINTERERROR "ÌßØÝÀ‚Ì´×°‚Å‚·B"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "•Û‘¶‚É•K—v‚ÈÃÝÎß×Ø Ì§²Ù‚ð쬂ł«‚Ü‚¹‚ñB"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "ŒŸõ•¶Žš—ñ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "’uŠ·•¶Žš—ñ‚ª’·‚·‚¬‚Ü‚·B"
+END
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.jpn/afxdb.rc b/public/sdk/inc/mfc40/l.jpn/afxdb.rc
new file mode 100644
index 000000000..9ae09a55d
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.jpn/afxdb.rc
@@ -0,0 +1,97 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "ÃÞ°À¿°½‚Ö‚ÌÚ‘±‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Úº°ÄÞ¾¯Ä‚ł̈ړ®‚͇•ûŒü‚Ì‚Ý»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "ŒŸõ‚·‚é—ñ‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢‚½‚ßAðÌÞÙ‚ðŠJ‚¯‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "¸´Ø°‚Å—\Šú‚¹‚Ê—ñ‚ÌÃÞ°À À²Ìß‚ª•Ô‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_ILLEGAL_MODE "XV‚Ü‚½‚Í휂Ɏ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "•¡”‚Ìs‚ªXV‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_NO_CURRENT_RECORD "¶ÚÝÄ Úº°ÄÞ‚ª‚È‚¢‚½‚ßA‘€ì‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "XV‚Ü‚½‚Í휑€ì‚ÌŒ‹‰ÊA•ÏX‚ð‚¤‚¯‚½s‚Í‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_RECORDSET_READONLY "Úº°ÄÞ¾¯Ä‚Íã‘‚«‹ÖŽ~‚Å‚·B"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC ÄÞײÊÞ‚Í MFC LongBinary ÃÞ°À ÓÃÞÙ‚ðˆµ‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "ODBC32.DLL ‚ÌÛ°ÄÞ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC ÄÞײÊÞ‚Í dynasets ‚ðˆµ‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ODBC ½À诸 ¶°¿Ù‚ɂͽůÌß¼®¯Ä‚Ì»Îß°Ä‚ª•K—v‚Å‚·B"
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC ÄÞײÊÞ‚Í MFC ÃÞ°ÀÍÞ°½ ¸×½‚ƌ݊·«‚ª‚ ‚è‚Ü‚¹‚ñ (API_CONFORMANCE >= SQL_OAC_LEVEL1 ‚ª•K—v‚Å‚·)B"
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC ÄÞײÊÞ‚Í MFC ÃÞ°ÀÍÞ°½ ¸×½‚ƌ݊·«‚ª‚ ‚è‚Ü‚¹‚ñ (SQL_CONFORMANCE >= SQL_OSC_MINIMUM ‚ª•K—v‚Å‚·)B"
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "ÃÞ°À‚ÌI’[‚Ü‚½‚Í擪‚ð’´‚¦‚Ľ¸Û°Ù‚µ‚悤‚Æ‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets ‚Í ODBC ÄÞײÊÞ‚Å»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC Level 2 ‚É€‹’‚µ‚½ÄÞײÊÞ‚ª•K—v‚Å‚·B"
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "“Á’è‚̈ʒu‚ÌXV‚Í ODBC ÄÞײÊÞ‚Å»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "—v‹‚µ‚½Û¯¸ Ó°ÄÞ‚Í»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "ÃÞ°À‚ÍØ‚èŽÌ‚Ä‚ç‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_ROW_FETCH
+ "Úº°ÄÞ‚ÌŒŸõ´×°B"
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "—v‹‚µ‚½ ODBC ´ÝÄØ° Îß²ÝÄ‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñBODBC ÄÞײÊÞ‚ª³‚µ‚­²Ý½Ä°Ù‚³‚ꂽ‚©Šm”F‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "XV–”‚Í휑€ì‚ÍŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "ÀÞ²ÅЯ¸ ¶°¿Ù‚Í ODBC ÄÞײÊÞ‚Å‚Í»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "DAO/Jet db ´Ý¼ÞÝ‚ð‰Šú‰»‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_DFX_BIND
+ "DFX ‚ÌÊß×Ò°À’l‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef ‚Ü‚½‚Í QueryDef ‚ªŠJ‚¯‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows ‚ÉŽ¸”s‚µ‚Ü‚µ‚½Bs‚ÉŠ„‚è“–‚Ä‚é\•ª‚ÈÒÓØ‚ª‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows ÊÞ²ÝÃÞ¨Ý¸Þ ´×°B datatype ‚ª‡‚Á‚Ä‚¢‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B —v‹‚³‚ꂽ—ñ‚Í‚±‚ÌÚº°ÄÞ¾¯Ä‚ÌÒÝÊÞ‚Å‚Í‚ ‚è‚Ü‚¹‚ñB"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc40/l.jpn/afxolecl.rc b/public/sdk/inc/mfc40/l.jpn/afxolecl.rc
new file mode 100644
index 000000000..893cc93f9
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.jpn/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Œx —\Šú‚µ‚È‚¢½À诸 µÌÞ¼Þª¸Ä‚Å‚·B"
+ AFX_IDP_FAILED_TO_CONNECT "Ú‘±‚ÉŽ¸”s‚µ‚Ü‚µ‚½B\nØݸ‚ª‰ó‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_SERVER_BUSY "ºÏÝÄÞ‚ðŽÀs‚Å‚«‚Ü‚¹‚ñB»°ÊÞ°‚ªËÞ¼Þ°‚Å‚·B"
+ AFX_IDP_BAD_VERB "»°ÊÞ°‚Ì‘€ì‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_FAILED_TO_LAUNCH "»°ÊÞ° ±Ìßع°¼®Ý‚ð‹N“®‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDS_UPDATING_ITEMS "OLE µÌÞ¼Þª¸Ä‚ðXV‚µ‚Ä‚¢‚Ü‚·"
+ AFX_IDP_FAILED_TO_CONVERT "OLE µÌÞ¼Þª¸Ä‚Ì•ÏŠ·‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ASK_TO_DISCARD "Windows ‚ÌI—¹Žž‚É OLE µÌÞ¼Þª¸Ä‚ð•Û‘¶‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB\n%1 ‚Ö‚Ì‚·‚ׂĂ̕ÏX‚ð”pŠü‚µ‚Ü‚·‚©H"
+ AFX_IDP_FAILED_TO_CREATE "µÌÞ¼Þª¸Ä‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B¼½ÃÑ Ú¼Þ½Ä؂ɱÌßع°¼®Ý‚ª“o˜^‚³‚ê‚Ä‚¢‚é‚©Šm”F‚µ‚Ä‚­‚¾‚³‚¢"
+
+ AFX_IDS_METAFILE_FORMAT "Ë߸Á¬ (ÒÀ̧²Ù)\nË߸Á¬"
+ AFX_IDS_DIB_FORMAT "ÃÞÊÞ²½‚Ɉˑ¶‚µ‚È‚¢ËÞ¯ÄϯÌß\nÃÞÊÞ²½”ñˆË‘¶ËÞ¯ÄϯÌß"
+ AFX_IDS_BITMAP_FORMAT "ËÞ¯ÄϯÌß\nËÞ¯ÄϯÌß"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "‘Ž®•t‚«Ã·½Ä (RTF)\nدÁ ÷½Ä"
+ AFX_IDS_TEXT_FORMAT "‘Ž®‚È‚µÃ·½Ä\n÷½Ä"
+
+ AFX_IDS_INVALID_CURRENCY "–³Œø‚Ȓʉ݌^‚Å‚·B"
+ AFX_IDS_INVALID_DATETIME "–³Œø‚È“ú•t‚ÆŽžŠÔ‚Å‚·B"
+ AFX_IDS_INVALID_DATETIMESPAN "–³Œø‚ÈŠúŠÔ‚Å‚·B"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.jpn/afxolesv.rc b/public/sdk/inc/mfc40/l.jpn/afxolesv.rc
new file mode 100644
index 000000000..5ca7083bc
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.jpn/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "æ‚É %1 ‚ðXV‚µ‚Ü‚·‚©H"
+ AFX_IDP_FAILED_TO_UPDATE, "¸×²±ÝÄ‚ðXV‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+
+ AFX_IDP_FAILED_TO_REGISTER, "“o˜^‚ÉŽ¸”s‚µ‚Ü‚µ‚½BOLE ‚Ì‹@”\‚ͳí‚É“®ì‚µ‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "¼½ÃÑ Ú¼Þ½ÄØ‚ÌXV‚ÉŽ¸”s‚µ‚Ü‚µ‚½B\nREGEDIT ‚ðŽg—p‚µ‚ÄXV‚µ‚Ä‚­‚¾‚³‚¢B"
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%2 “à‚Ì %1"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "I—¹‚µ‚Ä %1 ‚É–ß‚é(&X)"
+ AFX_IDS_UPDATE_MENU, "%1 ‚ðXV(&U)"
+ AFX_IDS_SAVEFILECOPY, "–¼‘O‚ð•t‚¯‚Ä•Û‘¶"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc40/l.jpn/afxprint.rc b/public/sdk/inc/mfc40/l.jpn/afxprint.rc
new file mode 100644
index 000000000..af501fb47
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.jpn/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Sans Serif"
+BEGIN
+ CTEXT "ˆóü’†",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "‚ð",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,46,45,40,15
+ CTEXT "<Cmd>-. ·°‚ð‰Ÿ‚·‚Æ·¬Ý¾Ù‚µ‚Ü‚·B",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "ŽŸÍß°¼Þ(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "‘OÍß°¼Þ(&V)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "½Þ°Ñ ²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "½Þ°Ñ ±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ŽŸÍß°¼Þ(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "‘OÍß°¼Þ(&V)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "½Þ°Ñ ²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "½Þ°Ñ ±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ŽŸ(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "‘O(&V)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "%1 ‚Öo—Í’†" // for print output
+ AFX_IDS_ONEPAGE, "1 Íß°¼Þ(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "2 Íß°¼Þ(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Íß°¼Þ %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Íß°¼Þ %u\nÍß°¼Þ %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "ÌßØÝÀ ̧²Ù (*.prn)|*.prn|‚·‚ׂĂÌ̧²Ù (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "̧²Ù‚Öo—Í" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "%1 ‚Ö" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc40/l.jpn/afxres.rc b/public/sdk/inc/mfc40/l.jpn/afxres.rc
new file mode 100644
index 000000000..281963434
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.jpn/afxres.rc
@@ -0,0 +1,211 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_OPENFILE, "ŠJ‚­"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "–¼‘O‚ð•t‚¯‚Ä•Û‘¶"
+ AFX_IDS_ALLFILTER, "‚·‚ׂĂÌ̧²Ù (*.*)"
+ AFX_IDS_UNTITLED, "Untitled"
+#else
+ AFX_IDS_SAVEFILE, "ÄÞ·­ÒÝÄ‚É–¼‘O‚ð•t‚¯‚Ä•Û‘¶:"
+ AFX_IDS_ALLFILTER, "‚·‚ׂĂÌ̧²Ù"
+ AFX_IDS_UNTITLED, "untitled"
+ AFX_IDS_UNNAMED_FILE, "–³‘è‚Ì̧²Ù"
+ AFX_IDS_ABOUT, "ÊÞ°¼Þ®Ýî•ñ %1\205"
+#endif
+ AFX_IDS_HIDE, "&Hide"
+
+ AFX_IDS_MEMORY_EXCEPTION, "ÒÓØ‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"»Îß°Ä‚³‚ê‚Ä‚¢‚È‚¢‘€ì‚ðŽÀs‚µ‚Ü‚µ‚½B"
+ AFX_IDS_RESOURCE_EXCEPTION, "—v‹‚³‚ꂽؿ°½‚ÍŽg—p‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDS_USER_EXCEPTION, "An unknown error has occurred."
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "–³Œø‚Ȩ̀²Ù–¼‚Å‚·B"
+ AFX_IDP_FAILED_TO_OPEN_DOC, "ÄÞ·­ÒÝĂ̵°ÌßÝ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_TO_SAVE_DOC, "ÄÞ·­ÒÝÄ‚Ì•Û‘¶‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "%1 ‚Ö‚Ì•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚©H"
+#else
+ AFX_IDP_ASK_TO_SAVE, "%1 ÄÞ·­ÒÝÄ \042%2\042 ‚Ö‚Ì•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚©H"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "‹ó‚ÌÄÞ·­ÒÝÄ‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_TOO_LARGE, "̧²Ù‚ª‘å‚«‚·‚¬‚ÄŠJ‚¯‚Ü‚¹‚ñB"
+ AFX_IDP_FAILED_TO_START_PRINT, "ˆóü‚ðŠJŽn‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "ÍÙÌß‚Ì‹N“®‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_INTERNAL_FAILURE, "±Ìßع°¼®Ý‚Ì“à•”´×°‚Å‚·B"
+ AFX_IDP_COMMAND_FAILURE, "ºÏÝÄÞ‚ÌŽÀs‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_MEMORY_ALLOC "ŽÀs‚·‚邽‚ß‚ÌÒÓØ‚ª‘«‚è‚Ü‚¹‚ñB"
+ AFX_IDP_GET_NOT_SUPPORTED, "‘‚«ž‚Ýê—p‚ÌÌßÛÊßè‚©‚ç“Ç‚Ýo‚µ‚Ís‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SET_NOT_SUPPORTED, "“Ç‚Ýo‚µê—p‚ÌÌßÛÊßè‚É‘‚«ž‚Ý‚Ís‚¦‚Ü‚¹‚ñB"
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "—\Šú‚µ‚È‚¢Ì§²ÙŒ`Ž®‚Å‚·B"
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\n‚±‚Ì̧²Ù‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB\n³‚µ‚¢ÃÞ¨Ú¸ÄØ‚Æ̧²Ù–¼‚ðŠm”F‚µ‚Ä“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_FAILED_DISK_FULL "o—Íæ‚ÌÃÞ¨½¸ ÄÞײÌÞ‚ª‚¢‚Á‚Ï‚¢‚Å‚·B"
+#else
+ AFX_IDP_FAILED_INVALID_PATH "̧²Ù \042%1.\042 ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB\n³‚µ‚¢Ì§²Ù–¼‚ðŠm”F‚µ‚Ä“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_FAILED_DISK_FULL "o—Íæ‚ÌÃÞ¨½¸‚ª‚¢‚Á‚Ï‚¢‚Å‚·B"
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "%1 ‚©‚ç“Ç‚Ýž‚ß‚Ü‚¹‚ñB‘¼‚̱Ìßع°¼®Ý‚É‚æ‚Á‚ÄŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FAILED_ACCESS_WRITE "%1 ‚Ö‘‚«ž‚ß‚Ü‚¹‚ñB‘¼‚̱Ìßع°¼®Ý‚É‚æ‚Á‚ÄŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FAILED_IO_ERROR_READ "%1 ‚Ì“Ç‚Ýž‚Ý’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_IO_ERROR_WRITE "%1 ‚Ì‘‚«ž‚Ý’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_REAL, "”’l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_INT_RANGE, "%1 ‚©‚ç %2 –˜‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_REAL_RANGE, "%1 ‚©‚ç %2 –˜‚Ì”’l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_STRING_SIZE, "%1 •¶ŽšˆÈ“à‚Å“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_RADIO_BUTTON, "ÎÞÀÝ‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_BYTE, "0 ‚©‚ç 255 ‚Ü‚Å‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_UINT, "³‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_DATETIME, "“ú•t/ŽžŠÔ‚È‚Ç‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_CURRENCY, "’ʉ݌^‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s ‚ðØݸ‚µ‚Ü‚µ‚½B"
+ AFX_IDS_UNKNOWNTYPE "•s–¾‚ÈŒ^‚Å‚·B"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nÄÞ·­ÒÝÄ‚ð“o˜^‚Å‚«‚Ü‚¹‚ñB\nÄÞ·­ÒÝÄ‚Í‚·‚Å‚ÉŠJ‚©‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "ÄÞ·­ÒÝÄ \042%1.\042 ‚ð“o˜^‚Å‚«‚Ü‚¹‚ñB\nÄÞ·­ÒÝÄ‚Í‚·‚Å‚ÉŠJ‚©‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "´×° Ò¯¾°¼Þ‚Í‚ ‚è‚Ü‚¹‚ñB"
+
+ AFX_IDP_FILE_NONE "´×°‚Í‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_FILE_GENERIC "%1 ‚ւ̱¸¾½’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_NOT_FOUND "%1 ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_FILE_BAD_PATH "%1 ‚Í–³Œø‚ÈÊß½‚Å‚·B"
+ AFX_IDP_FILE_TOO_MANY_OPEN "ŠJ‚¢‚Ä‚¢‚ȩ́²Ù‚ª‘½‚·‚¬‚邽‚ß %1 ‚ðŠJ‚¯‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_FILE_ACCESS_DENIED "%1 ‚ւ̱¸¾½‚Í‹‘”Û‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_FILE_INVALID_FILE "%1 ‚Ö–³Œø‚Ȩ̀²Ù ÊÝÄÞÙ‚ªŠÖ˜A•t‚¯‚ç‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FILE_REMOVE_CURRENT "¶ÚÝÄ ÃÞ¨Ú¸ÄØ %1 ‚Í휂ł«‚Ü‚¹‚ñB"
+ AFX_IDP_FILE_DIR_FULL "%1 ‚ð쬂ł«‚Ü‚¹‚ñB‚»‚ÌÃÞ¨Ú¸ÄØ‚Í‚¢‚Á‚Ï‚¢‚Å‚·B "
+ AFX_IDP_FILE_BAD_SEEK "%1 ‚̼°¸‚ÉŽ¸”s‚µ‚Ü‚µ‚½"
+ AFX_IDP_FILE_HARD_IO "%1 ‚ւ̱¸¾½’†‚ÉÊ°ÄÞ³ª± I/O ´×°‚ª•ñ‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_FILE_SHARING "%1 ‚ւ̱¸¾½’†‚É‹¤—Lˆá”½‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_LOCKING "%1 ‚ւ̱¸¾½’†‚ÉÛ¯·Ý¸Þˆá”½‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_DISKFULL "%1 ‚ւ̱¸¾½’†‚ÉÃÞ¨½¸‚ª‚¢‚Á‚Ï‚¢‚É‚È‚è‚Ü‚µ‚½B"
+ AFX_IDP_FILE_EOF "%1 ‚Ì̧²Ù‚ÌI‚í‚è‚Å‚·B"
+
+ AFX_IDP_ARCH_NONE "´×°‚Í‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_ARCH_GENERIC "%1 ‚ւ̱¸¾½’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ARCH_READONLY "%1 ‚ð“Ç‚Ýž‚Ý’†‚É‘‚«ž‚à‚¤‚Æ‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ARCH_ENDOFFILE "%1 ‚Ì̧²Ù‚ÌI‚í‚è‚Å‚·B"
+ AFX_IDP_ARCH_WRITEONLY "%1 ‚Ö‘‚«ž‚Ý’†‚É“Ç‚Ýž‚à‚¤‚Æ‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ARCH_BADINDEX "%1 ‚Ì̧²ÙŒ`Ž®‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_ARCH_BADCLASS "%1 ‚Í—\Šú‚µ‚È‚¢µÌÞ¼Þª¸Ä‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B"
+ AFX_IDP_ARCH_BADSCHEMA "%1 ‚Í•s³‚Ƚ·°Ï‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B"
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Ò°Ù ¼½ÃÑ‚ÌÛ°ÄÞ‚ª‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_INVALID_MAPI_DLL "Ò°Ù ¼½ÃÑ DLL‚ª•s³‚Å‚·B"
+ AFX_IDP_FAILED_MAPI_SEND "Ò°Ù‚Ì‘—M‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "Ë߸¾Ù"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "V‹K"
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "V‹K(&N) ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,137,23,40,14
+ PUSHBUTTON "ÍÙÌß(&H)",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/l.kor/afxctl.rc b/public/sdk/inc/mfc40/l.kor/afxctl.rc
new file mode 100644
index 000000000..c6ffe7708
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.kor/afxctl.rc
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "Ư¼º À̸§(&N)",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "±Û²Ã(&F)",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "±Û²Ã À¯Çü(&Y):",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Å©±â(&S):",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "È¿°ú",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Ãë¼Ò¼±(&K)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "¹ØÁÙ(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "º¸±â",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "Ư¼º À̸§(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "½Ã½ºÅÛ »ö(&C):",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "Ư¼º À̸§(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ã¾Æº¸±â(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "Áö¿ì±â(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "¹Ì¸®º¸±â:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(¹ÌÁöÀÇ)"
+ AFX_IDS_COLOR_DESKTOP "µ¥½ºÅ©Åé"
+ AFX_IDS_COLOR_APPWORKSPACE "ÀÀ¿ëÇÁ·Î±×·¥ ÀÛ¾÷°ø°£"
+ AFX_IDS_COLOR_WNDBACKGND "À©µµ¿ì ¹è°æ"
+ AFX_IDS_COLOR_WNDTEXT "À©µµ¿ì ÅؽºÆ®"
+ AFX_IDS_COLOR_MENUBAR "¸Þ´ºÇ¥½ÃÁÙ"
+ AFX_IDS_COLOR_MENUTEXT "¸Þ´º ÅؽºÆ®"
+ AFX_IDS_COLOR_ACTIVEBAR "È°¼º Á¦¸ñÁÙ"
+ AFX_IDS_COLOR_INACTIVEBAR "ºñÈ°¼º Á¦¸ñÁÙ"
+ AFX_IDS_COLOR_ACTIVETEXT "È°¼º Á¦¸ñÁÙ ÅؽºÆ®"
+ AFX_IDS_COLOR_INACTIVETEXT "ºñÈ°¼º Á¦¸ñÁÙ ÅؽºÆ®"
+ AFX_IDS_COLOR_ACTIVEBORDER "È°¼º °æ°è¼±"
+ AFX_IDS_COLOR_INACTIVEBORDER "ºñÈ°¼º °æ°è¼±"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_COLOR_WNDFRAME "À©µµ¿ì ÇÁ·¹ÀÓ"
+ AFX_IDS_COLOR_SCROLLBARS "À̵¿ÁÙ"
+ AFX_IDS_COLOR_BTNFACE "¹öÆ° Á¤¸é"
+ AFX_IDS_COLOR_BTNSHADOW "¹öÆ° ±×¸²ÀÚ"
+ AFX_IDS_COLOR_BTNTEXT "¹öÆ° ÅؽºÆ®"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "¹öÆ° ¹ÝÀüÇ¥½Ã"
+ AFX_IDS_COLOR_DISABLEDTEXT "»ç¿ë ºÒ°¡ ÅؽºÆ®"
+ AFX_IDS_COLOR_HIGHLIGHT "¹ÝÀüÇ¥½Ã"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "¹ÝÀüÇ¥½ÃµÈ ÅؽºÆ®"
+ AFX_IDS_REGULAR "º¸Åë"
+ AFX_IDS_BOLD "±½°Ô"
+ AFX_IDS_ITALIC "±â¿ïÀÓ²Ã"
+ AFX_IDS_BOLDITALIC "±½Àº ±â¿ïÀÓ²Ã"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+ AFX_IDS_DISPLAYSTRING_FONT "(±Û²Ã)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(»ö)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(±×¸² - %s)"
+ AFX_IDS_PICTUREFILTER "¸ðµç ±×¸² Á¾·ù|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|ºñÆ®¸Ê (*.bmp;*.dib)|*.bmp;*.dib|¾ÆÀÌÄÜ/Ä¿¼­ (*.ico;*.cur)|*.ico| ¸ÞŸÆÄÀÏ(*.wmf;*.emf)|*.emf;*.wmf|¸ðµç ÆÄÀÏ (*.*)|*.*||"
+ AFX_IDS_PICTYPE_UNKNOWN "¹ÌÁöÀÇ"
+ AFX_IDS_PICTYPE_NONE "¾øÀ½"
+ AFX_IDS_PICTYPE_BITMAP "ºñÆ®¸Ê"
+ AFX_IDS_PICTYPE_METAFILE "¸ÞŸÆÄÀÏ"
+ AFX_IDS_PICTYPE_ICON "¾ÆÀÌÄÜ"
+ AFX_IDS_COLOR_PPG "»ö Ư¼º ÆäÀÌÁö"
+ AFX_IDS_COLOR_PPG_CAPTION "»ö"
+ AFX_IDS_FONT_PPG "±Û²Ã Ư¼º ÆäÀÌÁö"
+ AFX_IDS_FONT_PPG_CAPTION "±Û²Ã"
+ AFX_IDS_PICTURE_PPG "±×¸² Ư¼º ÆäÀÌÁö"
+ AFX_IDS_PICTURE_PPG_CAPTION "±×¸²"
+ AFX_IDS_BORDERSTYLE_0 "0 - ¾øÀ½"
+ AFX_IDS_BORDERSTYLE_1 "1 - °íÁ¤ ´ÜÀÏ"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "ÆíÁý(&E)"
+ AFX_IDS_VERB_PROPERTIES "Ư¼º(&P)..."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "±×¸² ÆÄÀÏ %1À»(¸¦) ¿­ ¼ö ¾øÀ½. ÀÌ ÆÄÀÏÀÌ ¾ø°Å³ª ÀÐÀ» ¼ö ¾øÀ½."
+ AFX_IDP_PICTURECANTLOAD "±×¸² ÆÄÀÏ %1À»(¸¦) ÀоîµéÀÏ ¼ö ¾øÀ½. À߸øµÈ Æ÷¸ËÀ» °¡Áø ÆÄÀÏÀÓ."
+ AFX_IDP_PICTURETOOLARGE "±×¸² ÆÄÀÏ %1À»(¸¦) ÀоîµéÀÏ ¼ö ¾øÀ½. ÆÄÀÏÀÌ ³Ê¹« Ä¿¼­ ¸Þ¸ð¸®¿¡ ¼ö¿ëÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_PICTUREREADFAILED
+ "±×¸² ÆÄÀÏ %1À»(¸¦) ÀоîµéÀÏ ¼ö ¾øÀ½. ¼³¸íÀÌ ¾ø´Â Àб⠽ÇÆÐ."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "±×¸² ã¾Æº¸±â"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "À߸øµÈ ±â´É È£Ãâ"
+ AFX_IDP_E_OVERFLOW "¼ýÀÚ°¡ ³Ê¹«Å­"
+ AFX_IDP_E_OUTOFMEMORY "¸Þ¸ð¸® ºÎÁ·"
+ AFX_IDP_E_DIVISIONBYZERO "0À¸·Î ³ª´©±â"
+ AFX_IDP_E_OUTOFSTRINGSPACE "¹®ÀÚ¿­ °ø°£ ºÎÁ·"
+ AFX_IDP_E_OUTOFSTACKSPACE "½ºÅà °ø°£ ºÎÁ·"
+ AFX_IDP_E_BADFILENAMEORNUMBER "ºÒ·® ÆÄÀÏ À̸§ ¶Ç´Â ¹øÈ£"
+ AFX_IDP_E_FILENOTFOUND "ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_BADFILEMODE "ºÒ·® ÆÄÀÏ ¸ðµå"
+ AFX_IDP_E_FILEALREADYOPEN "ÆÄÀÏÀÌ ÀÌ¹Ì ¿­·Á ÀÖÀ½"
+ AFX_IDP_E_DEVICEIOERROR "ÀÔÃâ·Â ÀåÄ¡ ¿À·ù"
+ AFX_IDP_E_FILEALREADYEXISTS "ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÔ"
+ AFX_IDP_E_BADRECORDLENGTH "ºÒ·® ·¹ÄÚµå ±æÀÌ"
+ AFX_IDP_E_DISKFULL "µð½ºÅ©°¡ ²Ë Âü"
+ AFX_IDP_E_BADRECORDNUMBER "ºÒ·® ·¹ÄÚµå ¹øÈ£"
+ AFX_IDP_E_BADFILENAME "ºÒ·® ÆÄÀÏ À̸§"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "ÆÄÀÏÀÌ ³Ê¹« ¸¹À½"
+ AFX_IDP_E_DEVICEUNAVAILABLE "ÀåÄ¡¸¦ ÀÌ¿ëÇÒ ¼ö ¾øÀ½"
+ AFX_IDP_E_PERMISSIONDENIED "Çã°¡°¡ °ÅºÎµÊ"
+ AFX_IDP_E_DISKNOTREADY "µð½ºÅ©°¡ ÁغñµÇÁö ¾ÊÀ½"
+ AFX_IDP_E_PATHFILEACCESSERROR "°æ·Î/ÆÄÀÏ ¾×¼¼½º ¿À·ù"
+ AFX_IDP_E_PATHNOTFOUND "°æ·Î¸¦ ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_INVALIDPATTERNSTRING "À߸øµÈ ¹«´Ì ¹®ÀÚ¿­"
+ AFX_IDP_E_INVALIDUSEOFNULL "À߸øµÈ ³Î »ç¿ë"
+ AFX_IDP_E_INVALIDFILEFORMAT "À߸øµÈ ÆÄÀÏ Æ÷¸Ë"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "À߸øµÈ Ư¼º °ª"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "À߸øµÈ ¹è¿­ »öÀÎ"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Ư¼ºÀº ½ÇÇà ½Ã°£¿¡ ¼³Á¤µÉ ¼ö ¾øÀ½"
+ AFX_IDP_E_SETNOTSUPPORTED "Ư¼ºÀº ÀбâÀü¿ëÀÓ"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Ư¼º ¹è¿­À» »ç¿ëÇÒ ¶§¿¡´Â ¹è¿­ »öÀÎÀ» ¸í½ÃÇÏ¿©¾ß ÇÔ"
+ AFX_IDP_E_SETNOTPERMITTED "ÀÌ Á¦¾î±â¿¡¼­´Â Ư¼ºÀ» ¼³Á¤ÇÒ ¼ö ¾øÀ½"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "½ÇÇà ½Ã°£¿¡´Â Ư¼ºÀ» ÀÐÀ» ¼ö ¾øÀ½"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Ư¼ºÀº ¾²±âÀü¿ëÀÓ"
+ AFX_IDP_E_PROPERTYNOTFOUND "Ư¼ºÀ» ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "À߸øµÈ Ŭ¸³º¸µå Æ÷¸Ë"
+ AFX_IDP_E_INVALIDPICTURE "À߸øµÈ ±×¸²"
+ AFX_IDP_E_PRINTERERROR "ÇÁ¸°ÅÍ ¿À·ù"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "ÀúÀåÀ» À§ÇØ ÇÊ¿äÇÑ Àӽà ÆÄÀÏÀ» ÀÛ¼ºÇÒ ¼ö ¾øÀ½"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "°Ë»ö ÅؽºÆ®¸¦ ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "´ëü ÅؽºÆ®°¡ ³Ê¹« ±æÀ½"
+END
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.kor/afxdb.rc b/public/sdk/inc/mfc40/l.kor/afxdb.rc
new file mode 100644
index 000000000..8908f77b8
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.kor/afxdb.rc
@@ -0,0 +1,97 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "µ¥ÀÌÅÍ¿øº»¿¡ ´ëÇÑ ¿¬°á ½Ãµµ ½ÇÆÐ"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "·¹Äڵ弼Ʈ´Â ¾ÕÀ¸·Î À̵¿Çϱ⸸À» Áö¿øÇÔ."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Ç¥ ¿­±â ½Ãµµ ½ÇÆÐ - °Ë»öÇÒ Ä®·³ÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "¹®ÀǷκÎÅÍ ¿¹±âÄ¡ ¾ÊÀº Ä®·³ µ¥ÀÌÅÍ Á¾·ù°¡ µÇµ¹·Á º¸³»Á³À½."
+ AFX_IDP_SQL_ILLEGAL_MODE "»õ·Î °íħ ¶Ç´Â »èÁ¦ ½Ãµµ ½ÇÆÐ."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "¿©·¯ ÁÙÀÌ »õ·Î °íÃÄÁ³À½."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "ÀÛµ¿ ½ÇÆÐ, ÇöÀç ·¹Äڵ尡 ¾øÀ½."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "¾Æ¹« ÁÙµµ »õ·Î °íħÀ̳ª »èÁ¦ ÀÛµ¿ÀÇ ¿µÇâÀ» ¹ÞÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_SQL_RECORDSET_READONLY "·¹Äڵ弼Ʈ´Â ÀбâÀü¿ëÀÓ"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC µå¶óÀ̹ö´Â MFC ±ä 2Áø µ¥ÀÌÅÍ ¸ðµ¨À» Áö¿øÇÏÁö ¾ÊÀ½."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Çʼö ±¸¼º ¿ä¼ÒÀÎ ODBC32.DLL¸¦ ÀоîµéÀÌ·Á´Â ½Ãµµ ½ÇÆÐ."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC µå¶óÀ̹ö´Â ´ÙÀ̳ª¼¼Æ®¸¦ Áö¿øÇÏÁö ¾ÊÀ½."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "½º³À¼¦ Áö¿øÀ» À§Çؼ­´Â ODBC Á¤Àû Ä¿¼­ ÇÊ¿ä."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC µå¶óÀ̹ö°¡ MFC µ¥ÀÌÅͺ£À̽º Á¾·ù¿Í ȣȯ¼ºÀÌ ¾øÀ½ (API_CONFORMANCE >= "
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC µå¶óÀ̹ö°¡ MFC µ¥ÀÌÅͺ£À̽º Á¾·ù¿Í ȣȯ¼ºÀÌ ¾øÀ½ (SQL_CONFORMANCE >= "
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "µ¥ÀÌÅÍÀÇ ³¡À» Áö³ª°Å³ª ¸Ç óÀ½º¸´Ù ¾ÕÀ¸·Î °¡·Á´Â ½Ãµµ."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "´ÙÀ̳ª¼¼Æ®´Â ODBC µå¶óÀ̹ö¿¡ ÀÇÇØ Áö¿øµÇÁö ¾ÊÀ½."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC ·¹º§ 2 ȣȯ µå¶óÀ̹ö ÇÊ¿ä."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "ÁöÁ¤ »õ·Î °íħÀº ODBC µå¶óÀ̹ö¿¡ ÀÇÇØ Áö¿øµÇÁö ¾ÊÀ½."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "¿ä±¸ÇÑ Àá±Ý ¸ðµå´Â Áö¿øµÇÁö ¾ÊÀ½."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "µ¥ÀÌÅÍ À߸²."
+ AFX_IDP_SQL_ROW_FETCH
+ "±â·Ï Àç»ý ¿À·ù"
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "ÇÊ¿äÇÑ ODBC ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ãÀ» ¼ö ¾øÀ½. ODBC°¡ Á¤È®ÇÏ°Ô ¼³Ä¡µÇ¾ú´ÂÁö È®ÀÎÇϽʽÿÀ."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "»õ·Î °íħ ¶Ç´Â »èÁ¦ ½ÇÆÐ"
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "µ¿Àû Ä¿¼­´Â ODBC µå¶óÀ̹ö¿¡ ÀÇÇØ Áö¿øµÇÁö ¾Ê½À´Ï´Ù."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "DAO/Jet db ¿£Áø ÃʱâÈ­ ºÒ´É. "
+ AFX_IDP_DAO_DFX_BIND
+ "ºÒ·® DFX °ª ÆĶó¹ÌÅÍ."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef ¶Ç´Â QueryDef°¡ ¿­¸®Áö ¾ÊÀ½."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows ½ÇÆÐ. ÁÙ¿¡ ÇÒ´çµÈ ¸Þ¸ð¸® ºÎÁ·."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows ¹ÙÀεù ¿À·ù. µ¥ÀÌÅÍ Á¾·ù°¡ ¸ÂÁö ¾Ê±â ¶§¹®¿¡ ¹ß»ýµÈ °Í °°½À´Ï´Ù."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows ½ÇÆÐ. ¿ä±¸ÇÑ Ä®·³Àº º» µ¥ÀÌÅÍ ¼¼Æ®ÀÇ ÇÑ ¸â¹ö°¡ ¾Æ´Õ´Ï´Ù."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc40/l.kor/afxolecl.rc b/public/sdk/inc/mfc40/l.kor/afxolecl.rc
new file mode 100644
index 000000000..67923935a
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.kor/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Á¤Àû OLE °³Ã¼¸¦ È°¼ºÈ­ÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_FAILED_TO_CONNECT "Á¢¼Ó ½ÇÆÐ.\n ¿¬°áÀÌ ²÷¾îÁ³À» ¼ö ÀÖÀ½."
+ AFX_IDP_SERVER_BUSY "¸í·ÉÀ» ó¸®ÇÒ ¼ö ¾øÀ½, ¼­¹ö »ç¿ë Áß."
+ AFX_IDP_BAD_VERB "¼­¹ö ÀÛµ¿ ½ÇÇà ½ÇÆÐ."
+ AFX_IDP_FAILED_TO_LAUNCH "¼­¹ö ÀÀ¿ëÇÁ·Î±×·¥ ½ÇÆÐ."
+ AFX_IDS_UPDATING_ITEMS "OLE °³Ã¼ »õ·Î °íħ"
+ AFX_IDP_FAILED_TO_CONVERT "OLE °³Ã¼ º¯È¯ ½ÇÆÐ."
+ AFX_IDP_ASK_TO_DISCARD "À©µµ¿ì Á¾·á ½Ã¿¡´Â OLE °³Ã¼°¡ ÀúÀåµÇÁö ¾ÊÀ½!\n %1¿¡ ´ëÇÑ ¸ðµç º¯°æ »çÇ×À» ¹ö¸±±î¿ä?"
+ AFX_IDP_FAILED_TO_CREATE "°³Ã¼ ¸¸µé±â ½ÇÆÐ. ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ½Ã½ºÅÛ µî·ÏºÎ¿¡ ÀԷµǾú´ÂÁö È®ÀÎÇϽʽÿÀ."
+
+ AFX_IDS_METAFILE_FORMAT "±×¸² (¸ÞŸÆÄÀÏ)\n ±×¸²"
+ AFX_IDS_DIB_FORMAT "ÀåÄ¡ µ¶¸³ ºñÆ®¸Ê\n ÀåÄ¡ µ¶¸³ ºñÆ®¸Ê"
+ AFX_IDS_BITMAP_FORMAT "ºñÆ®¸Ê\n ºñÆ®¸Ê"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich ÅؽºÆ® (RTF)\n±Û²Ã ¹× ´Ü¶ô ¼­½ÄÀÌ ÀÖ´Â ÅؽºÆ®"
+ AFX_IDS_TEXT_FORMAT "¼­½Ä ºñ¼³Á¤ ÅؽºÆ®\n¼­½ÄÀÌ ¾ø´Â ÅؽºÆ®"
+
+ AFX_IDS_INVALID_CURRENCY "À߸øµÈ ÅëÈ­."
+ AFX_IDS_INVALID_DATETIME "À߸øµÈ ÀϽÃ."
+ AFX_IDS_INVALID_DATETIMESPAN "À߸øµÈ ÀϽà ¹üÀ§."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc40/l.kor/afxolesv.rc b/public/sdk/inc/mfc40/l.kor/afxolesv.rc
new file mode 100644
index 000000000..c8526f560
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.kor/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "ÁøÇàÇϱâ Àü¿¡ %1À»(¸¦) »õ·Î °íÄ¥±î¿ä?"
+ AFX_IDP_FAILED_TO_UPDATE, "Ŭ¶óÀ̾ðÆ®¸¦ »õ·Î °íÄ¥ ¼ö ¾øÀ½."
+
+ AFX_IDP_FAILED_TO_REGISTER, "µî·Ï ½ÇÆÐ. OLE ±â´ÉÀÌ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖÀ½."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "½Ã½ºÅÛ µî·ÏºÎ »õ·Î °íħ ½ÇÆÐ.\nREGEDIT¸¦ »ç¿ëÇØ º¸½Ê½Ã¿À."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%2 ¿¡¼­ %1"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "Á¾·á && %1·Î(À¸·Î) º¹±Í(&X)"
+ AFX_IDS_UPDATE_MENU, "%1 »õ·Î °íħ(&U)"
+ AFX_IDS_SAVEFILECOPY, "»çº» ´Ù¸¥ À̸§À¸·Î ÀúÀå"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc40/l.kor/afxprint.rc b/public/sdk/inc/mfc40/l.kor/afxprint.rc
new file mode 100644
index 000000000..b673fb9d0
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.kor/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Sans Serif"
+BEGIN
+ CTEXT "Àμâ",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "¿¡¼­",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Ãë¼Ò",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Ãë¼Ò",IDCANCEL,46,45,40,15
+ CTEXT "Ãë¼ÒÇÏ·Á¸é Cmd-.¸¦ ´©¸£½Ê½Ã¿À.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "Àμâ(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "´ÙÀ½ ÂÊ(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "ÀÌÀü ÂÊ(&V)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "È®´ë(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Ãà¼Ò(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "´Ý±â(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Àμâ(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "´ÙÀ½ ÂÊ(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "ÀÌÀü ÂÊ(&V)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "È®´ë(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Ãà¼Ò(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "´Ý±â(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Àμâ(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "´ÙÀ½(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "ÀÌÀü(&V)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&In",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Out",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "´Ý±â(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "%1¿¡" // for print output
+ AFX_IDS_ONEPAGE, "ÇÑ ÂÊ(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "µÎ ÂÊ(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "ÆäÀÌÁö %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "ÆäÀÌÁö %u\nÆäÀÌÁö %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "ÇÁ¸°ÅÍ ÆÄÀÏ (*.prn)|*.prn|¸ðµç ÆÄÀÏ (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "ÆÄÀÏ¿¡ Àμâ" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "%1 ·Î(À¸·Î)" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc40/l.kor/afxres.rc b/public/sdk/inc/mfc40/l.kor/afxres.rc
new file mode 100644
index 000000000..e17f232f9
--- /dev/null
+++ b/public/sdk/inc/mfc40/l.kor/afxres.rc
@@ -0,0 +1,211 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_OPENFILE, "¿­±â"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "´Ù¸¥ À̸§À¸·Î ÀúÀå"
+ AFX_IDS_ALLFILTER, "¸ðµç ÆÄÀÏ (*.*)"
+ AFX_IDS_UNTITLED, "Á¦¸ñ¾øÀ½"
+#else
+ AFX_IDS_SAVEFILE, "´Ù¸¥ À̸§À¸·Î ÀúÀå:"
+ AFX_IDS_ALLFILTER, "¸ðµç ÆÄÀÏ"
+ AFX_IDS_UNTITLED, "Á¦¸ñ¾øÀ½"
+ AFX_IDS_UNNAMED_FILE, "À̸§ ¾ø´Â ÆÄÀÏ"
+ AFX_IDS_ABOUT, "%1\205 Á¤º¸"
+#endif
+ AFX_IDS_HIDE, "¼û±è(&H)"
+
+ AFX_IDS_MEMORY_EXCEPTION, "¸Þ¸ð¸® ºÎÁ·."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Áö¿øµÇÁö ¾Ê´Â ÀÛµ¿ÀÌ ½ÃµµµÇ¾úÀ½."
+ AFX_IDS_RESOURCE_EXCEPTION, "ÇÊ¿äÇÑ ÀÚ¿øÀÌ ¾øÀ½."
+ AFX_IDS_USER_EXCEPTION, "¹ÌÁöÀÇ ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù."
+
+ // General error prompts
+ AFX_IDP_INVALID_FILENAME, "À߸øµÈ ÆÄÀÏ À̸§."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "¹®¼­ ¿­±â ½ÇÆÐ."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "¹®¼­ ÀúÀå ½ÇÆÐ."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "º¯°æ ³»¿ëÀ» %1¿¡ ÀúÀåÇÒ±î¿ä?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "º¯°æ ³»¿ëÀ» %1 ¹®¼­ \042%2\042¿¡ ÀúÀåÇÒ±î¿ä?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "ºó ¹®¼­ ÀÛ¼º ½ÇÆÐ."
+ AFX_IDP_FILE_TOO_LARGE, "ÆÄÀÏÀÌ ³Ê¹« Ä¿¼­ ¿­ ¼ö ¾øÀ½."
+ AFX_IDP_FAILED_TO_START_PRINT, "Àμâ ÀÛ¾÷À» ½ÃÀÛÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "µµ¿ò¸» ½ÃÀÛ ½ÇÆÐ."
+ AFX_IDP_INTERNAL_FAILURE, "³»ºÎ ÀÀ¿ëÇÁ·Î±×·¥ ¿À·ù."
+ AFX_IDP_COMMAND_FAILURE, "¸í·É ½ÇÆÐ."
+ AFX_IDP_FAILED_MEMORY_ALLOC "ÀÛµ¿À» ½ÇÇàÇϱ⿡ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÔ."
+ AFX_IDP_GET_NOT_SUPPORTED, "¾²±âÀü¿ë Ư¼ºÀ» ÀÐÀ» ¼ö ¾øÀ½."
+ AFX_IDP_SET_NOT_SUPPORTED, "ÀбâÀü¿ë Ư¼ºÀ» ¾µ ¼ö ¾øÀ½."
+
+ // CFile/CArchive error strings for user failure
+ AFX_IDP_FAILED_INVALID_FORMAT "¿¹±âÄ¡ ¾ÊÀº ÆÄÀÏ Æ÷¸Ë."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nÀÌ ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½.\n°æ·Î¿Í ÆÄÀÏ À̸§ÀÌ Á¤È®ÇÑÁö È®ÀÎÇϽʽÿÀ."
+ AFX_IDP_FAILED_DISK_FULL "´ë»ó µð½ºÅ© µå¶óÀ̺갡 ²Ë áÀ½."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "\042%1.\042 ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½. ÆÄÀÏ À̸§ÀÌ Á¤È®ÇÑÁö È®ÀÎÇϽʽÿÀ."
+ AFX_IDP_FAILED_DISK_FULL "´ë»ó µð½ºÅ©°¡ ²Ë áÀ½."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "%1·Î(À¸·Î)ºÎÅÍ ÀÐÀ» ¼ö ¾øÀ½. ´Ù¸¥ »ç¶÷ÀÌ ¿­¾úÀ½."
+ AFX_IDP_FAILED_ACCESS_WRITE "%1¿¡ ¾µ ¼ö ¾øÀ½. ÀбâÀü¿ëÀ̰ųª ´Ù¸¥ »ç¶÷ÀÌ ¿­¾úÀ½."
+ AFX_IDP_FAILED_IO_ERROR_READ "%1À»(¸¦) Àд Áß¿¡ ¿¹±âÄ¡ ¸øÇÑ ¿À·ù ¹ß»ý."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "%1À»(¸¦) ¾²´Â Áß¿¡ ¿¹±âÄ¡ ¸øÇÑ ¿À·ù ¹ß»ý."
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_REAL, "¼ýÀÚ¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_INT_RANGE, "%1¿Í(°ú) %2 »çÀÌÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_REAL_RANGE, "%1¿Í(°ú) %2 »çÀÌÀÇ ¼ýÀÚ¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_STRING_SIZE, "1% ÀÌÇÏÀÇ ¹®ÀÚ¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_RADIO_BUTTON, "¹öÆ°À» ¼±ÅÃÇϽʽÿÀ."
+ AFX_IDP_PARSE_BYTE, "0 ¿¡¼­ 255 »çÀÌÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_UINT, "¾çÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_DATETIME, "³¯Â¥ ¹×/¶Ç´Â ½Ã°£À» ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_CURRENCY, "ÅëÈ­¸¦ ÀÔ·ÂÇϽʽÿÀ."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "¿¬°áµÈ %s"
+ AFX_IDS_UNKNOWNTYPE "¹ÌÁöÀÇ Á¾·ù"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\n¹®¼­¸¦ µî·ÏÇÒ ¼ö ¾øÀ½.\n¹®¼­°¡ ÀÌ¹Ì ¿­·Á ÀÖÀ½."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "\042%1.\042 ¹®¼­¸¦ µî·ÏÇÒ ¼ö ¾øÀ½. ¹®¼­°¡ ÀÌ¹Ì ¿­·Á ÀÖÀ½."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "¿À·ù ¸Þ½ÃÁö°¡ ¾øÀ½."
+
+ AFX_IDP_FILE_NONE "¾Æ¹« ¿À·ùµµ ¹ß»ýÇÏÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_FILE_GENERIC "%1 ¾×¼¼½º Áß¿¡ ¹ÌÁöÀÇ ¿À·ù ¹ß»ý."
+ AFX_IDP_FILE_NOT_FOUND "%1 À»(¸¦) ãÀ» ¼ö ¾øÀ½."
+ AFX_IDP_FILE_BAD_PATH "%1 ¿¡ À߸øµÈ °æ·Î°¡ ÀÖÀ½."
+ AFX_IDP_FILE_TOO_MANY_OPEN "¿­¸° ÆÄÀÏÀÌ ³Ê¹« ¸¹±â ¶§¹®¿¡ %1À»(¸¦) ¿­ ¼ö ¾øÀ½."
+ AFX_IDP_FILE_ACCESS_DENIED "%1¿¡ ´ëÇÑ ¾×¼¼½º°¡ °ÅºÎµÇ¾úÀ½."
+ AFX_IDP_FILE_INVALID_FILE "À߸øµÈ ÆÄÀÏ ÇÚµéÀÌ %1¿Í(°ú) °ü·ÃµÇ¾úÀ½."
+ AFX_IDP_FILE_REMOVE_CURRENT "%1Àº(´Â) ÇöÀç µð·ºÅ丮À̱⠶§¹®¿¡ »èÁ¦ÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_FILE_DIR_FULL "µð·ºÅ丮°¡ ²Ë á±â ¶§¹®¿¡ %1À»(¸¦) ÀÛ¼ºÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_FILE_BAD_SEEK "%1¿¡¼­ Ž»ö ½ÇÆÐ"
+ AFX_IDP_FILE_HARD_IO "%1 ¾×¼¼½º Áß¿¡ Çϵå¿þ¾î ÀÔÃâ·Â ¿À·ù°¡ º¸°íµÇ¾úÀ½."
+ AFX_IDP_FILE_SHARING "%1 ¾×¼¼½º Áß¿¡ °øÀ¯ À§¹ÝÀÌ ¹ß»ýÇÏ¿´À½."
+ AFX_IDP_FILE_LOCKING "%1 ¾×¼¼½º Áß¿¡ Àá±Ý À§¹ÝÀÌ ¹ß»ýÇÏ¿´À½."
+ AFX_IDP_FILE_DISKFULL "%1 ¾×¼¼½º Áß¿¡ µð½ºÅ©°¡ ²Ë Âü."
+ AFX_IDP_FILE_EOF "%1ÀÇ ³¡À» Áö³ª¼­ ¾×¼¼½ºÇÏ·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+
+ AFX_IDP_ARCH_NONE "¾Æ¹« ¿À·ùµµ ¹ß»ýÇÏÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_ARCH_GENERIC "%1 ¾×¼¼½º Áß¿¡ ¹ÌÁöÀÇ ¿À·ù ¹ß»ý."
+ AFX_IDP_ARCH_READONLY "%1 Àб⿡ ¾²±â¸¦ ÇÏ·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDP_ARCH_ENDOFFILE "%1ÀÇ ³¡À» Áö³ª¼­ ¾×¼¼½ºÇÏ·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDP_ARCH_WRITEONLY "%1 ¾²±â·ÎºÎÅÍ ÀÐÀ¸·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDP_ARCH_BADINDEX "%1¿¡´Â ºÒ·® Æ÷¸ËÀÌ ÀÖÀ½."
+ AFX_IDP_ARCH_BADCLASS "%1¿¡´Â ¿¹±âÄ¡ ¸øÇÑ °³Ã¼°¡ ÀÖÀ½."
+ AFX_IDP_ARCH_BADSCHEMA "%1¿¡´Â ºÎÁ¤È®ÇÑ ½ºÅ°¸¶°¡ ÀÖÀ½."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "¿ìÆí ½Ã½ºÅÛ Áö¿øÀ» ÀоîµéÀÏ ¼ö ¾øÀ½."
+ AFX_IDP_INVALID_MAPI_DLL "¿ìÆí ½Ã½ºÅÛ DLLÀÌ À߸øµÇ¾úÀ½."
+ AFX_IDP_FAILED_MAPI_SEND "¿ìÆí º¸³»±â°¡ ¸Þ½ÃÁö ¼Û½Å¿¡ ½ÇÆÐÇßÀ½."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "Çȼ¿"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "»õ·Î¿î"
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "»õ·Î¿î(&N)",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "È®ÀÎ",IDOK,137,6,40,14
+ PUSHBUTTON "Ãë¼Ò",IDCANCEL,137,23,40,14
+ PUSHBUTTON "µµ¿ò¸»(&H)",ID_HELP,137,43,40,14
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc40/mfcsamps.mak b/public/sdk/inc/mfc40/mfcsamps.mak
new file mode 100644
index 000000000..9cff74c07
--- /dev/null
+++ b/public/sdk/inc/mfc40/mfcsamps.mak
@@ -0,0 +1,490 @@
+# This is a part of the Microsoft Foundation Classes C++ library.
+# Copyright (C) 1992-1995 Microsoft Corporation
+# All rights reserved.
+#
+# This source code is only intended as a supplement to the
+# Microsoft Foundation Classes Reference and related
+# electronic documentation provided with the library.
+# See these sources for detailed information regarding the
+# Microsoft Foundation Classes product.
+
+# Common include for building MFC Sample programs
+#
+# typical usage
+# PROJ=foo
+# OBJS=foo.obj bar.obj ...
+# !INCLUDE ..\..\SAMPLE_.MAK
+#
+# ROOT specifies the location of the msdev\samples\mfc directory,
+# relative to the project directory. Because the MFC tutorial samples
+# have an intermediate STEP<n> subdirectory, they use
+# ROOT=..\..\..
+# instead of the default
+# ROOT=..\..
+#
+# NOTE: do not include 'stdafx.obj' in the OBJS list - the correctly
+# built version will be included for you
+#
+# Options to NMAKE:
+# "PLATFORM=?"
+# This option chooses the appropriate tools and sources for the
+# different platforms support by Windows/NT. Currently INTEL,
+# MIPS, ALPHA, PPC, M68K, and MPPC are supported; more will be
+# added as they become available. The default is chosen based on
+# the host environment. This option must be set for MAC_ builds.
+# "DEBUG=0" use retail (default debug)
+# "CODEVIEW=1" include codeview info (even for retail builds)
+# "AFXDLL=1" to use shared DLL version of MFC
+# "USRDLL=1" to build a DLL that uses static MFC
+# "UNICODE=1" to build UNICODE enabled applications
+# (not all samples support UNICODE)
+# "NO_PCH=1" do not use precompiled headers (defaults to use pch)
+# "COFF=1" include COFF symbols
+
+!ifndef PROJ
+!ERROR You forgot to define 'PROJ' symbol!!
+!endif
+
+
+ROOT=.
+!ifndef ROOT
+!endif
+
+!ifndef OBJS
+!ERROR You forgot to define 'OBJS' symbol!!
+!endif
+
+!ifndef DEBUG
+DEBUG=1
+!endif
+
+!ifndef AFXDLL
+AFXDLL=0
+!endif
+
+!ifndef UNICODE
+UNICODE=0
+!endif
+
+!ifndef USRDLL
+USRDLL=0
+!endif
+
+!if "$(USRDLL)" != "0"
+AFXDLL=0
+!endif
+
+!ifndef PLATFORM
+!ifndef PROCESSOR_ARCHITECTURE
+PROCESSOR_ARCHITECTURE=x86
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
+PLATFORM=INTEL
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
+PLATFORM=ALPHA
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"
+PLATFORM=MIPS
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "PPC"
+PLATFORM=PPC
+!endif
+!endif
+
+!ifndef USES_OLE
+USES_OLE=0
+!endif
+
+!ifndef USES_DB
+USES_DB=0
+!endif
+
+!ifndef CONSOLE
+CONSOLE=0
+!endif
+
+!ifndef NO_PCH
+NO_PCH=0
+!endif
+
+#
+# Set BASE=W, M, or P depending on platform
+#
+BASE=W
+!if "$(PLATFORM)" == "M68K" || "$(PLATFORM)" == "MPPC"
+MACOS=1
+!undef BASE
+!if "$(PLATFORM)" == "M68K"
+BASE=M
+!else
+BASE=P
+!endif
+!endif
+
+!if "$(UNICODE)" == "0"
+!if "$(AFXDLL)" == "0"
+!if "$(USRDLL)" != "1"
+STDAFX=stdafx
+!else
+STDAFX=stdusr
+!endif
+!else
+STDAFX=stddll
+!endif
+!endif
+
+!if "$(UNICODE)" == "1"
+!if "$(AFXDLL)" == "0"
+!if "$(USRDLL)" != "1"
+STDAFX=uniafx
+!else
+STDAFX=uniusr
+!endif
+!else
+STDAFX=unidll
+!endif
+!endif
+
+!if "$(DEBUG)" == "1"
+STDAFX=$(STDAFX)d
+!if "$(COFF)" != "1"
+!ifndef CODEVIEW
+CODEVIEW=1
+!endif
+!endif
+!endif
+
+!if "$(CODEVIEW)" == "1"
+STDAFX=$(STDAFX)v
+!endif
+
+!if "$(DEBUG)" == "1"
+DEBUG_SUFFIX=d
+!endif
+
+!if "$(DEBUG)" != "0"
+DEBUGFLAGS=/Od
+MFCDEFS=$(MFCDEFS) /D_DEBUG
+
+!if "$(PLATFORM)" == "M68K"
+DEBUGFLAGS=/Q68m
+!endif
+
+!endif
+
+!if "$(DEBUG)" == "0"
+!if "$(PLATFORM)" == "INTEL"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "MIPS"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "ALPHA"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "PPC"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "M68K"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "MPPC"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!endif # DEBUG == 0
+
+!if "$(CODEVIEW)" == "1" || "$(COFF)" == "1"
+DEBUGFLAGS=$(DEBUGFLAGS) /Z7
+!endif
+
+!if "$(UNICODE)" == "1"
+DLL_SUFFIX=u
+!endif
+
+!if "$(AFXDLL)" == "1"
+MFCFLAGS=$(MFCFLAGS) /MD$(DEBUG_SUFFIX)
+MFCDEFS=$(MFCDEFS) /D_AFXDLL
+!endif # AFXDLL == 1
+
+!if "$(USRDLL)" == "1"
+MFCDEFS=$(MFCDEFS) /D_USRDLL /D_WINDLL
+!endif
+
+!if "$(AFXDLL)" == "0"
+!if "$(MACOS)" != "1"
+MFCFLAGS=$(MFCFLAGS) /MT$(DEBUG_SUFFIX)
+!elseif "$(PLATFORM)" != "M68K"
+MFCFLAGS=$(MFCFLAGS) /ML$(DEBUG_SUFFIX)
+!endif
+!endif
+
+!if "$(UNICODE)" == "1"
+MFCDEFS=$(MFCDEFS) /D_UNICODE
+!else
+MFCDEFS=$(MFCDEFS) /D_MBCS
+!endif
+
+!if "$(MACOS)" == "1"
+MFCDEFS=$(MFCDEFS) /D_MAC
+!if "$(PLATFORM)" == "M68K"
+ARCHITECTURE='m68k'
+!else
+ARCHITECTURE='pwpc'
+!endif
+!endif
+
+!if "$(PLATFORM)" == "INTEL"
+MFCDEFS=$(MFCDEFS) /D_X86_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "MIPS"
+MFCDEFS=$(MFCDEFS) /D_MIPS_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "ALPHA"
+MFCDEFS=$(MFCDEFS) /D_ALPHA_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "PPC"
+MFCDEFS=$(MFCDEFS) /D_PPC_
+!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
+CPP=mcl
+!else
+CPP=cl
+!endif
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "M68K"
+MFCDEFS=$(MFCDEFS) /D_WINDOWS /DWIN32 /D_68K_
+CPP=cl
+CFLAGS=/GX /c /W3 /AL /Gt1 /Q68s $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "MPPC"
+MFCDEFS=$(MFCDEFS) /D_WINDOWS /DWIN32 /D_MPPC_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+CPPMAIN_FLAGS=$(CFLAGS)
+
+!if "$(NO_PCH)" == "1"
+CPPFLAGS=$(CPPMAIN_FLAGS)
+!else
+PCHDIR=.
+CPPFLAGS=$(CPPMAIN_FLAGS) /Yustdafx.h /Fp$(PCHDIR)\$(STDAFX).pch
+!endif
+
+!if "$(COFF)" == "1"
+NO_PDB=1
+!if "$(CODEVIEW)" != "1"
+LINKDEBUG=/incremental:no /debug:full /debugtype:coff
+!else
+LINKDEBUG=/incremental:no /debug:full /debugtype:both
+!endif
+!endif
+
+!if "$(COFF)" != "1"
+!if "$(CODEVIEW)" == "1"
+LINKDEBUG=/incremental:no /debug:full /debugtype:cv
+!else
+LINKDEBUG=/incremental:no /debug:none
+!endif
+!endif
+
+!if "$(NO_PDB)" == "1"
+LINKDEBUG=$(LINKDEBUG) /pdb:none
+!endif
+
+!if "$(PLATFORM)" == "INTEL"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "MIPS"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "ALPHA"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "PPC"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "M68K"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "MPPC"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+# link flags - must be specified after $(LINKCMD)
+#
+# conflags : creating a character based console application
+# guiflags : creating a GUI based "Windows" application
+
+!if "$(MACOS)" != "1"
+CONFLAGS=/subsystem:console
+GUIFLAGS=/subsystem:windows
+!else
+!if defined(MACSIG)
+GUIFLAGS=/mac:type=APPL /mac:creator=$(MACSIG)
+!endif
+!endif
+
+!if "$(UNICODE)" == "1"
+CONFLAGS=$(CONFLAGS) /entry:wmainCRTStartup
+GUIFLAGS=$(GUIFLAGS) /entry:wWinMainCRTStartup
+!endif
+
+!if "$(MACOS)" != "1"
+PROJRESFILE=$(PROJ).res
+!else
+PROJRESFILE=$(PROJ).rsc $(MACSIG)mac.rsc
+!if "$(AFXDLL)" != "1"
+BASERESFILE=
+!endif
+!endif
+RESFILE=$(PROJRESFILE)
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .rcm .rc
+
+.cpp.obj:
+ $(CPP) @<<
+$(CPPFLAGS) $*.cpp
+<<
+
+.c.obj:
+ $(CPP) @<<
+$(CFLAGS) $(CVARS) $*.c
+<<
+
+!if "$(MACOS)" != "1"
+.rc.res:
+ rc /r $(MFCDEFS) $<
+!else
+.rc.rsc:
+ rc /r /m $(MFCDEFS) $<
+!endif
+
+#############################################################################
+
+!if "$(NO_PCH)" == "0"
+LINK_OBJS=$(OBJS) $(PCHDIR)\$(STDAFX).obj
+!else
+LINK_OBJS=$(OBJS)
+!endif
+
+#
+# Build CONSOLE Win32 application
+#
+!if "$(CONSOLE)" == "1"
+
+!if "$(MACOS)" == "1"
+!error Macintosh targets do not support console applications
+!endif
+
+$(PROJ).exe: $(LINK_OBJS)
+ $(LINKCMD) @<<
+$(CONFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(EXTRA_LIBS)
+<<
+
+!endif # CONSOLE=1
+
+#
+# Build Win32 application
+#
+!if "$(CONSOLE)" == "0"
+
+!if "$(MACOS)" == "1"
+copy: $(PROJ).exe
+!if defined(MACNAME)
+ mfile copy $(PROJ).exe ":$(MACNAME):$(PROJ)"
+!endif
+!endif
+
+!if "$(MACOS)" == "1"
+$(MACSIG)mac.rsc: $(MACSIG)mac.r
+ mrc $(MFCDEFS) /DARCHITECTURE=$(ARCHITECTURE) /o $(MACSIG)mac.rsc $(MACSIG)mac.r
+!endif
+
+!if "$(USRDLL)" == "1"
+$(PROJ).dll: $(LINK_OBJS) $(PROJRESFILE)
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).dll /map:$(PROJ).map
+/dll /def:$(PROJ).def
+$(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
+<<
+
+$(PROJ).res: resource.h
+$(PROJ).rsc: resource.h
+!endif
+
+!if "$(SIMPLE_APP)" != "1"
+$(PROJ).exe: $(LINK_OBJS) $(PROJRESFILE)
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
+<<
+
+$(PROJ).res: resource.h
+$(PROJ).rsc: resource.h
+!endif
+
+!if "$(SIMPLE_APP)" == "1"
+!if "$(MACOS)" == "1"
+$(PROJ).exe: $(LINK_OBJS) $(MACSIG)mac.rsc
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(MACSIG)mac.rsc $(EXTRA_LIBS)
+<<
+
+!else
+$(PROJ).exe: $(LINK_OBJS)
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(EXTRA_LIBS)
+<<
+
+!endif
+!endif
+
+!if "$(NO_PCH)" == "0"
+$(PCHDIR)\$(STDAFX).obj $(PCHDIR)\$(STDAFX).pch: stdafx.h stdafx.cpp
+ echo "BUILDING SHARED PCH and PCT files"
+ $(CPP) @<<
+$(CPPMAIN_FLAGS) /Ycstdafx.h /Fp$(PCHDIR)\$(STDAFX).pch /Fo$(PCHDIR)\$(STDAFX).obj /c $(ROOT)\stdafx.cpp
+<<
+
+$(OBJS): $(PCHDIR)\$(STDAFX).pch
+!endif
+
+!endif # CONSOLE=0
+
+clean::
+ if exist $(PROJ).exe erase $(PROJ).exe
+ if exist *.aps erase *.aps
+ if exist *.pch erase *.pch
+ if exist *.map erase *.map
+ if exist *.obj erase *.obj
+ if exist *.exp erase *.exp
+ if exist *.pdb erase *.pdb
+ if exist *.map erase *.map
+ if exist *.lib erase *.lib
+ if exist *.res erase *.res
+ if exist *.rsc erase *.rsc
+ if exist *.pef erase *.pef
+
+#############################################################################
diff --git a/public/sdk/inc/mfc40/res/3dcheck.bmp b/public/sdk/inc/mfc40/res/3dcheck.bmp
new file mode 100644
index 000000000..23d739342
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/3dcheck.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/95check.bmp b/public/sdk/inc/mfc40/res/95check.bmp
new file mode 100644
index 000000000..3fe90db3b
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/95check.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/copy4way.cur b/public/sdk/inc/mfc40/res/copy4way.cur
new file mode 100644
index 000000000..e0f41447d
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/copy4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/help.cur b/public/sdk/inc/mfc40/res/help.cur
new file mode 100644
index 000000000..217090e5b
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/help.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/help.rsc b/public/sdk/inc/mfc40/res/help.rsc
new file mode 100644
index 000000000..3e21661ee
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/help.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/magnify.cur b/public/sdk/inc/mfc40/res/magnify.cur
new file mode 100644
index 000000000..d9a7042cf
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/magnify.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/magnify.rsc b/public/sdk/inc/mfc40/res/magnify.rsc
new file mode 100644
index 000000000..5d0c3813a
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/magnify.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/minifwnd.bmp b/public/sdk/inc/mfc40/res/minifwnd.bmp
new file mode 100644
index 000000000..b5861c4f7
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/minifwnd.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/move4way.cur b/public/sdk/inc/mfc40/res/move4way.cur
new file mode 100644
index 000000000..545afa10d
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/move4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/nodrop.cur b/public/sdk/inc/mfc40/res/nodrop.cur
new file mode 100644
index 000000000..9fc75a562
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/nodrop.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/ntcheck.bmp b/public/sdk/inc/mfc40/res/ntcheck.bmp
new file mode 100644
index 000000000..5ad35e43c
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/ntcheck.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/sarrows.cur b/public/sdk/inc/mfc40/res/sarrows.cur
new file mode 100644
index 000000000..b4e601ef0
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/sarrows.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/split.rsc b/public/sdk/inc/mfc40/res/split.rsc
new file mode 100644
index 000000000..8afb35a95
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/split.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/splith.cur b/public/sdk/inc/mfc40/res/splith.cur
new file mode 100644
index 000000000..bb03d7734
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/splith.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/splitv.cur b/public/sdk/inc/mfc40/res/splitv.cur
new file mode 100644
index 000000000..1fd0d55c8
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/splitv.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/trck4way.cur b/public/sdk/inc/mfc40/res/trck4way.cur
new file mode 100644
index 000000000..974d02017
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/trck4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/trcknesw.cur b/public/sdk/inc/mfc40/res/trcknesw.cur
new file mode 100644
index 000000000..f92de6e68
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/trcknesw.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/trckns.cur b/public/sdk/inc/mfc40/res/trckns.cur
new file mode 100644
index 000000000..49e558267
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/trckns.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/trcknwse.cur b/public/sdk/inc/mfc40/res/trcknwse.cur
new file mode 100644
index 000000000..7a7d8820d
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/trcknwse.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/trckwe.cur b/public/sdk/inc/mfc40/res/trckwe.cur
new file mode 100644
index 000000000..a069140e7
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/trckwe.cur
Binary files differ
diff --git a/public/sdk/inc/mfc40/res/truetype.bmp b/public/sdk/inc/mfc40/res/truetype.bmp
new file mode 100644
index 000000000..3b22b2e03
--- /dev/null
+++ b/public/sdk/inc/mfc40/res/truetype.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc40/sql.h b/public/sdk/inc/mfc40/sql.h
new file mode 100644
index 000000000..6aa49d658
--- /dev/null
+++ b/public/sdk/inc/mfc40/sql.h
@@ -0,0 +1,1259 @@
+/*****************************************************************
+** SQL.H - This is the the main include for ODBC Core functions.
+**
+** preconditions:
+** #include "windows.h"
+**
+** (C) Copyright 1990 - 1995 By Microsoft Corp.
+**
+** Updated 5/12/93 for 2.00 specification
+** Updated 5/23/94 for 2.01 specification
+** Updated 11/10/94 for 2.10 specification
+** Updated 04/10/95 for 2.50 specification
+*********************************************************************/
+
+#ifndef __SQL
+#define __SQL
+
+/*
+* ODBCVER ODBC version number (0x0200). To exclude
+* definitions introduced in version 2.0 (or above)
+* #define ODBCVER 0x0100 before #including <sql.h>
+*/
+
+/* If ODBCVER is not defined, assume version 2.50 */
+#ifndef ODBCVER
+#define ODBCVER 0x0250
+#endif
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+/* generally useful constants */
+#if (ODBCVER >= 0x0200)
+#define SQL_SPEC_MAJOR 2 /* Major version of specification */
+#define SQL_SPEC_MINOR 50 /* Minor version of specification */
+#define SQL_SPEC_STRING "02.50" /* String constant for version */
+#endif /* ODBCVER >= 0x0200 */
+#define SQL_SQLSTATE_SIZE 5 /* size of SQLSTATE */
+#define SQL_MAX_MESSAGE_LENGTH 512 /* message buffer size */
+#define SQL_MAX_DSN_LENGTH 32 /* maximum data source name size*/
+
+/* RETCODEs */
+#define SQL_INVALID_HANDLE (-2)
+#define SQL_ERROR (-1)
+#define SQL_SUCCESS 0
+#define SQL_SUCCESS_WITH_INFO 1
+#define SQL_NO_DATA_FOUND 100
+
+/* Standard SQL datatypes, using ANSI type numbering */
+#define SQL_CHAR 1
+#define SQL_NUMERIC 2
+#define SQL_DECIMAL 3
+#define SQL_INTEGER 4
+#define SQL_SMALLINT 5
+#define SQL_FLOAT 6
+#define SQL_REAL 7
+#define SQL_DOUBLE 8
+#define SQL_VARCHAR 12
+
+#define SQL_TYPE_NULL 0
+#define SQL_TYPE_MIN SQL_BIT
+#define SQL_TYPE_MAX SQL_VARCHAR
+#define SQL_ALL_TYPES 0
+
+/* C datatype to SQL datatype mapping SQL types
+ ------------------- */
+#define SQL_C_CHAR SQL_CHAR /* CHAR, VARCHAR, DECIMAL, NUMERIC */
+#define SQL_C_LONG SQL_INTEGER /* INTEGER */
+#define SQL_C_SHORT SQL_SMALLINT /* SMALLINT */
+#define SQL_C_FLOAT SQL_REAL /* REAL */
+#define SQL_C_DOUBLE SQL_DOUBLE /* FLOAT, DOUBLE */
+#define SQL_C_DEFAULT 99
+
+/* NULL status constants. These are used in SQLColumns, SQLColAttributes,
+SQLDescribeCol, SQLDescribeParam, and SQLSpecialColumns to describe the
+nullablity of a column in a table. */
+#define SQL_NO_NULLS 0
+#define SQL_NULLABLE 1
+#define SQL_NULLABLE_UNKNOWN 2
+
+/* Special length values */
+#define SQL_NULL_DATA (-1)
+#define SQL_DATA_AT_EXEC (-2)
+#define SQL_NTS (-3)
+
+/* SQLFreeStmt defines */
+#define SQL_CLOSE 0
+#define SQL_DROP 1
+#define SQL_UNBIND 2
+#define SQL_RESET_PARAMS 3
+
+/* SQLTransact defines */
+#define SQL_COMMIT 0
+#define SQL_ROLLBACK 1
+
+/* SQLColAttributes defines */
+#define SQL_COLUMN_COUNT 0
+#define SQL_COLUMN_NAME 1
+#define SQL_COLUMN_TYPE 2
+#define SQL_COLUMN_LENGTH 3
+#define SQL_COLUMN_PRECISION 4
+#define SQL_COLUMN_SCALE 5
+#define SQL_COLUMN_DISPLAY_SIZE 6
+#define SQL_COLUMN_NULLABLE 7
+#define SQL_COLUMN_UNSIGNED 8
+#define SQL_COLUMN_MONEY 9
+#define SQL_COLUMN_UPDATABLE 10
+#define SQL_COLUMN_AUTO_INCREMENT 11
+#define SQL_COLUMN_CASE_SENSITIVE 12
+#define SQL_COLUMN_SEARCHABLE 13
+#define SQL_COLUMN_TYPE_NAME 14
+#if (ODBCVER >= 0x0200)
+#define SQL_COLUMN_TABLE_NAME 15
+#define SQL_COLUMN_OWNER_NAME 16
+#define SQL_COLUMN_QUALIFIER_NAME 17
+#define SQL_COLUMN_LABEL 18
+#define SQL_COLATT_OPT_MAX SQL_COLUMN_LABEL
+#else
+#define SQL_COLATT_OPT_MAX SQL_COLUMN_TYPE_NAME
+#endif /* ODBCVER >= 0x0200 */
+#define SQL_COLUMN_DRIVER_START 1000
+
+#define SQL_COLATT_OPT_MIN SQL_COLUMN_COUNT
+
+/* SQLColAttributes subdefines for SQL_COLUMN_UPDATABLE */
+#define SQL_ATTR_READONLY 0
+#define SQL_ATTR_WRITE 1
+#define SQL_ATTR_READWRITE_UNKNOWN 2
+
+/* SQLColAttributes subdefines for SQL_COLUMN_SEARCHABLE */
+/* These are also used by SQLGetInfo */
+#define SQL_UNSEARCHABLE 0
+#define SQL_LIKE_ONLY 1
+#define SQL_ALL_EXCEPT_LIKE 2
+#define SQL_SEARCHABLE 3
+
+/* SQLError defines */
+#define SQL_NULL_HENV 0
+#define SQL_NULL_HDBC 0
+#define SQL_NULL_HSTMT 0
+
+#include "sqltypes.h"
+
+#ifndef RC_INVOKED
+/* Core Function Prototypes */
+
+SQLRETURN SQL_API SQLAllocConnect(
+ SQLHENV henv,
+ SQLHDBC FAR *phdbc);
+
+SQLRETURN SQL_API SQLAllocEnv(
+ SQLHENV FAR *phenv);
+
+SQLRETURN SQL_API SQLAllocStmt(
+ SQLHDBC hdbc,
+ SQLHSTMT FAR *phstmt);
+
+SQLRETURN SQL_API SQLBindCol(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLSMALLINT fCType,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValueMax,
+ SQLINTEGER FAR *pcbValue);
+
+SQLRETURN SQL_API SQLCancel(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLColAttributes(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLUSMALLINT fDescType,
+ SQLPOINTER rgbDesc,
+ SQLSMALLINT cbDescMax,
+ SQLSMALLINT FAR *pcbDesc,
+ SQLINTEGER FAR *pfDesc);
+
+SQLRETURN SQL_API SQLConnect(
+ SQLHDBC hdbc,
+ SQLCHAR FAR *szDSN,
+ SQLSMALLINT cbDSN,
+ SQLCHAR FAR *szUID,
+ SQLSMALLINT cbUID,
+ SQLCHAR FAR *szAuthStr,
+ SQLSMALLINT cbAuthStr);
+
+SQLRETURN SQL_API SQLDescribeCol(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLCHAR FAR *szColName,
+ SQLSMALLINT cbColNameMax,
+ SQLSMALLINT FAR *pcbColName,
+ SQLSMALLINT FAR *pfSqlType,
+ SQLUINTEGER FAR *pcbColDef,
+ SQLSMALLINT FAR *pibScale,
+ SQLSMALLINT FAR *pfNullable);
+
+SQLRETURN SQL_API SQLDisconnect(
+ SQLHDBC hdbc);
+
+SQLRETURN SQL_API SQLError(
+ SQLHENV henv,
+ SQLHDBC hdbc,
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szSqlState,
+ SQLINTEGER FAR *pfNativeError,
+ SQLCHAR FAR *szErrorMsg,
+ SQLSMALLINT cbErrorMsgMax,
+ SQLSMALLINT FAR *pcbErrorMsg);
+
+SQLRETURN SQL_API SQLExecDirect(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szSqlStr,
+ SQLINTEGER cbSqlStr);
+
+SQLRETURN SQL_API SQLExecute(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLFetch(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLFreeConnect(
+ SQLHDBC hdbc);
+
+SQLRETURN SQL_API SQLFreeEnv(
+ SQLHENV henv);
+
+SQLRETURN SQL_API SQLFreeStmt(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fOption);
+
+SQLRETURN SQL_API SQLGetCursorName(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCursor,
+ SQLSMALLINT cbCursorMax,
+ SQLSMALLINT FAR *pcbCursor);
+
+SQLRETURN SQL_API SQLNumResultCols(
+ SQLHSTMT hstmt,
+ SQLSMALLINT FAR *pccol);
+
+SQLRETURN SQL_API SQLPrepare(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szSqlStr,
+ SQLINTEGER cbSqlStr);
+
+SQLRETURN SQL_API SQLRowCount(
+ SQLHSTMT hstmt,
+ SQLINTEGER FAR *pcrow);
+
+SQLRETURN SQL_API SQLSetCursorName(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCursor,
+ SQLSMALLINT cbCursor);
+
+SQLRETURN SQL_API SQLTransact(
+ SQLHENV henv,
+ SQLHDBC hdbc,
+ SQLUSMALLINT fType);
+
+#endif /* RC_INVOKED */
+
+/* Deprecrated functions from prior versions of ODBC */
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLSetParam( /* Use SQLBindParameter */
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT fCType,
+ SQLSMALLINT fSqlType,
+ SQLUINTEGER cbParamDef,
+ SQLSMALLINT ibScale,
+ SQLPOINTER rgbValue,
+ SQLINTEGER FAR *pcbValue);
+
+#endif /* RC_INVOKED */
+
+
+/* Defines used by both Level 1 and Level 2 functions */
+
+/* generally useful constants */
+#define SQL_MAX_OPTION_STRING_LENGTH 256
+
+/* Additional return codes */
+#define SQL_STILL_EXECUTING 2
+#define SQL_NEED_DATA 99
+
+/* SQL extended datatypes */
+#define SQL_DATE 9
+#define SQL_TIME 10
+#define SQL_TIMESTAMP 11
+#define SQL_LONGVARCHAR (-1)
+#define SQL_BINARY (-2)
+#define SQL_VARBINARY (-3)
+#define SQL_LONGVARBINARY (-4)
+#define SQL_BIGINT (-5)
+#define SQL_TINYINT (-6)
+#define SQL_BIT (-7)
+
+#define SQL_INTERVAL_YEAR (-80)
+#define SQL_INTERVAL_MONTH (-81)
+#define SQL_INTERVAL_YEAR_TO_MONTH (-82)
+#define SQL_INTERVAL_DAY (-83)
+#define SQL_INTERVAL_HOUR (-84)
+#define SQL_INTERVAL_MINUTE (-85)
+#define SQL_INTERVAL_SECOND (-86)
+#define SQL_INTERVAL_DAY_TO_HOUR (-87)
+#define SQL_INTERVAL_DAY_TO_MINUTE (-88)
+#define SQL_INTERVAL_DAY_TO_SECOND (-89)
+#define SQL_INTERVAL_HOUR_TO_MINUTE (-90)
+#define SQL_INTERVAL_HOUR_TO_SECOND (-91)
+#define SQL_INTERVAL_MINUTE_TO_SECOND (-92)
+#define SQL_UNICODE (-95)
+#define SQL_UNICODE_VARCHAR (-96)
+#define SQL_UNICODE_LONGVARCHAR (-97)
+#define SQL_UNICODE_CHAR SQL_UNICODE
+
+#define SQL_TYPE_DRIVER_START SQL_INTERVAL_YEAR
+#define SQL_TYPE_DRIVER_END SQL_UNICODE_LONGVARCHAR
+
+
+#if (ODBCVER >= 0x0200)
+#define SQL_SIGNED_OFFSET (-20)
+#define SQL_UNSIGNED_OFFSET (-22)
+#endif /* ODBCVER >= 0x0200 */
+
+/* C datatype to SQL datatype mapping */
+#define SQL_C_DATE SQL_DATE
+#define SQL_C_TIME SQL_TIME
+#define SQL_C_TIMESTAMP SQL_TIMESTAMP
+#define SQL_C_BINARY SQL_BINARY
+#define SQL_C_BIT SQL_BIT
+#define SQL_C_TINYINT SQL_TINYINT
+#if (ODBCVER >= 0x0200)
+#define SQL_C_SLONG SQL_C_LONG+SQL_SIGNED_OFFSET /* SIGNED INTEGER */
+#define SQL_C_SSHORT SQL_C_SHORT+SQL_SIGNED_OFFSET /* SIGNED SMALLINT */
+#define SQL_C_STINYINT SQL_TINYINT+SQL_SIGNED_OFFSET /* SIGNED TINYINT */
+#define SQL_C_ULONG SQL_C_LONG+SQL_UNSIGNED_OFFSET /* UNSIGNED INTEGER */
+#define SQL_C_USHORT SQL_C_SHORT+SQL_UNSIGNED_OFFSET /* UNSIGNED SMALLINT*/
+#define SQL_C_UTINYINT SQL_TINYINT+SQL_UNSIGNED_OFFSET /* UNSIGNED TINYINT */
+#define SQL_C_BOOKMARK SQL_C_ULONG /* BOOKMARK */
+#endif /* ODBCVER >= 0x0200 */
+
+
+/* Level 1 Functions */
+
+/* Special return values for SQLGetData */
+#define SQL_NO_TOTAL (-4)
+
+/* Defines for SQLGetFunctions */
+#define SQL_API_SQLALLOCCONNECT 1 /* Core Functions */
+#define SQL_API_SQLALLOCENV 2
+#define SQL_API_SQLALLOCSTMT 3
+#define SQL_API_SQLBINDCOL 4
+#define SQL_API_SQLCANCEL 5
+#define SQL_API_SQLCOLATTRIBUTES 6
+#define SQL_API_SQLCONNECT 7
+#define SQL_API_SQLDESCRIBECOL 8
+#define SQL_API_SQLDISCONNECT 9
+#define SQL_API_SQLERROR 10
+#define SQL_API_SQLEXECDIRECT 11
+#define SQL_API_SQLEXECUTE 12
+#define SQL_API_SQLFETCH 13
+#define SQL_API_SQLFREECONNECT 14
+#define SQL_API_SQLFREEENV 15
+#define SQL_API_SQLFREESTMT 16
+#define SQL_API_SQLGETCURSORNAME 17
+#define SQL_API_SQLNUMRESULTCOLS 18
+#define SQL_API_SQLPREPARE 19
+#define SQL_API_SQLROWCOUNT 20
+#define SQL_API_SQLSETCURSORNAME 21
+#define SQL_API_SQLSETPARAM 22
+#define SQL_API_SQLTRANSACT 23
+
+#define SQL_NUM_FUNCTIONS 23
+
+#define SQL_EXT_API_START 40
+
+#define SQL_API_SQLCOLUMNS 40 /* Level 1 Functions */
+#define SQL_API_SQLDRIVERCONNECT 41
+#define SQL_API_SQLGETCONNECTOPTION 42
+#define SQL_API_SQLGETDATA 43
+#define SQL_API_SQLGETFUNCTIONS 44
+#define SQL_API_SQLGETINFO 45
+#define SQL_API_SQLGETSTMTOPTION 46
+#define SQL_API_SQLGETTYPEINFO 47
+#define SQL_API_SQLPARAMDATA 48
+#define SQL_API_SQLPUTDATA 49
+#define SQL_API_SQLSETCONNECTOPTION 50
+#define SQL_API_SQLSETSTMTOPTION 51
+#define SQL_API_SQLSPECIALCOLUMNS 52
+#define SQL_API_SQLSTATISTICS 53
+#define SQL_API_SQLTABLES 54
+
+#define SQL_API_SQLBROWSECONNECT 55 /* Level 2 Functions */
+#define SQL_API_SQLCOLUMNPRIVILEGES 56
+#define SQL_API_SQLDATASOURCES 57
+#define SQL_API_SQLDESCRIBEPARAM 58
+#define SQL_API_SQLEXTENDEDFETCH 59
+#define SQL_API_SQLFOREIGNKEYS 60
+#define SQL_API_SQLMORERESULTS 61
+#define SQL_API_SQLNATIVESQL 62
+#define SQL_API_SQLNUMPARAMS 63
+#define SQL_API_SQLPARAMOPTIONS 64
+#define SQL_API_SQLPRIMARYKEYS 65
+#define SQL_API_SQLPROCEDURECOLUMNS 66
+#define SQL_API_SQLPROCEDURES 67
+#define SQL_API_SQLSETPOS 68
+#define SQL_API_SQLSETSCROLLOPTIONS 69
+#define SQL_API_SQLTABLEPRIVILEGES 70
+
+/* SDK 2.0 Additions */
+#if (ODBCVER >= 0x0200)
+#define SQL_API_SQLDRIVERS 71
+#define SQL_API_SQLBINDPARAMETER 72
+#define SQL_EXT_API_LAST SQL_API_SQLBINDPARAMETER
+#else
+#define SQL_EXT_API_LAST SQL_API_SQLTABLEPRIVILEGES
+#endif /* ODBCVER >= 0x0200 */
+
+#define SQL_API_ALL_FUNCTIONS 0
+
+#define SQL_NUM_EXTENSIONS (SQL_EXT_API_LAST-SQL_EXT_API_START+1)
+#if (ODBCVER >= 0x0200)
+#define SQL_API_LOADBYORDINAL 199
+#endif /* ODBCVER >= 0x0200 */
+
+/* Defines for SQLGetInfo */
+#define SQL_INFO_FIRST 0
+#define SQL_ACTIVE_CONNECTIONS 0
+#define SQL_ACTIVE_STATEMENTS 1
+#define SQL_DATA_SOURCE_NAME 2
+#define SQL_DRIVER_HDBC 3
+#define SQL_DRIVER_HENV 4
+#define SQL_DRIVER_HSTMT 5
+#define SQL_DRIVER_NAME 6
+#define SQL_DRIVER_VER 7
+#define SQL_FETCH_DIRECTION 8
+#define SQL_ODBC_API_CONFORMANCE 9
+#define SQL_ODBC_VER 10
+#define SQL_ROW_UPDATES 11
+#define SQL_ODBC_SAG_CLI_CONFORMANCE 12
+#define SQL_SERVER_NAME 13
+#define SQL_SEARCH_PATTERN_ESCAPE 14
+#define SQL_ODBC_SQL_CONFORMANCE 15
+
+#define SQL_DBMS_NAME 17
+#define SQL_DBMS_VER 18
+
+#define SQL_ACCESSIBLE_TABLES 19
+#define SQL_ACCESSIBLE_PROCEDURES 20
+#define SQL_PROCEDURES 21
+#define SQL_CONCAT_NULL_BEHAVIOR 22
+#define SQL_CURSOR_COMMIT_BEHAVIOR 23
+#define SQL_CURSOR_ROLLBACK_BEHAVIOR 24
+#define SQL_DATA_SOURCE_READ_ONLY 25
+#define SQL_DEFAULT_TXN_ISOLATION 26
+#define SQL_EXPRESSIONS_IN_ORDERBY 27
+#define SQL_IDENTIFIER_CASE 28
+#define SQL_IDENTIFIER_QUOTE_CHAR 29
+#define SQL_MAX_COLUMN_NAME_LEN 30
+#define SQL_MAX_CURSOR_NAME_LEN 31
+#define SQL_MAX_OWNER_NAME_LEN 32
+#define SQL_MAX_PROCEDURE_NAME_LEN 33
+#define SQL_MAX_QUALIFIER_NAME_LEN 34
+#define SQL_MAX_TABLE_NAME_LEN 35
+#define SQL_MULT_RESULT_SETS 36
+#define SQL_MULTIPLE_ACTIVE_TXN 37
+#define SQL_OUTER_JOINS 38
+#define SQL_OWNER_TERM 39
+#define SQL_PROCEDURE_TERM 40
+#define SQL_QUALIFIER_NAME_SEPARATOR 41
+#define SQL_QUALIFIER_TERM 42
+#define SQL_SCROLL_CONCURRENCY 43
+#define SQL_SCROLL_OPTIONS 44
+#define SQL_TABLE_TERM 45
+#define SQL_TXN_CAPABLE 46
+#define SQL_USER_NAME 47
+
+#define SQL_CONVERT_FUNCTIONS 48
+#define SQL_NUMERIC_FUNCTIONS 49
+#define SQL_STRING_FUNCTIONS 50
+#define SQL_SYSTEM_FUNCTIONS 51
+#define SQL_TIMEDATE_FUNCTIONS 52
+
+#define SQL_CONVERT_BIGINT 53
+#define SQL_CONVERT_BINARY 54
+#define SQL_CONVERT_BIT 55
+#define SQL_CONVERT_CHAR 56
+#define SQL_CONVERT_DATE 57
+#define SQL_CONVERT_DECIMAL 58
+#define SQL_CONVERT_DOUBLE 59
+#define SQL_CONVERT_FLOAT 60
+#define SQL_CONVERT_INTEGER 61
+#define SQL_CONVERT_LONGVARCHAR 62
+#define SQL_CONVERT_NUMERIC 63
+#define SQL_CONVERT_REAL 64
+#define SQL_CONVERT_SMALLINT 65
+#define SQL_CONVERT_TIME 66
+#define SQL_CONVERT_TIMESTAMP 67
+#define SQL_CONVERT_TINYINT 68
+#define SQL_CONVERT_VARBINARY 69
+#define SQL_CONVERT_VARCHAR 70
+#define SQL_CONVERT_LONGVARBINARY 71
+
+#define SQL_TXN_ISOLATION_OPTION 72
+#define SQL_ODBC_SQL_OPT_IEF 73
+
+/*** ODBC SDK 1.0 Additions ***/
+#define SQL_CORRELATION_NAME 74
+#define SQL_NON_NULLABLE_COLUMNS 75
+
+/*** ODBC SDK 2.0 Additions ***/
+#if (ODBCVER >= 0x0200)
+#define SQL_DRIVER_HLIB 76
+#define SQL_DRIVER_ODBC_VER 77
+#define SQL_LOCK_TYPES 78
+#define SQL_POS_OPERATIONS 79
+#define SQL_POSITIONED_STATEMENTS 80
+#define SQL_GETDATA_EXTENSIONS 81
+#define SQL_BOOKMARK_PERSISTENCE 82
+#define SQL_STATIC_SENSITIVITY 83
+#define SQL_FILE_USAGE 84
+#define SQL_NULL_COLLATION 85
+#define SQL_ALTER_TABLE 86
+#define SQL_COLUMN_ALIAS 87
+#define SQL_GROUP_BY 88
+#define SQL_KEYWORDS 89
+#define SQL_ORDER_BY_COLUMNS_IN_SELECT 90
+#define SQL_OWNER_USAGE 91
+#define SQL_QUALIFIER_USAGE 92
+#define SQL_QUOTED_IDENTIFIER_CASE 93
+#define SQL_SPECIAL_CHARACTERS 94
+#define SQL_SUBQUERIES 95
+#define SQL_UNION 96
+#define SQL_MAX_COLUMNS_IN_GROUP_BY 97
+#define SQL_MAX_COLUMNS_IN_INDEX 98
+#define SQL_MAX_COLUMNS_IN_ORDER_BY 99
+#define SQL_MAX_COLUMNS_IN_SELECT 100
+#define SQL_MAX_COLUMNS_IN_TABLE 101
+#define SQL_MAX_INDEX_SIZE 102
+#define SQL_MAX_ROW_SIZE_INCLUDES_LONG 103
+#define SQL_MAX_ROW_SIZE 104
+#define SQL_MAX_STATEMENT_LEN 105
+#define SQL_MAX_TABLES_IN_SELECT 106
+#define SQL_MAX_USER_NAME_LEN 107
+#define SQL_MAX_CHAR_LITERAL_LEN 108
+#define SQL_TIMEDATE_ADD_INTERVALS 109
+#define SQL_TIMEDATE_DIFF_INTERVALS 110
+#define SQL_NEED_LONG_DATA_LEN 111
+#define SQL_MAX_BINARY_LITERAL_LEN 112
+#define SQL_LIKE_ESCAPE_CLAUSE 113
+#define SQL_QUALIFIER_LOCATION 114
+
+#if (ODBCVER >= 0x0201)
+/*** ODBC SDK 2.01 Additions ***/
+#define SQL_OJ_CAPABILITIES 65003 /* Temp value until ODBC 3.0 */
+#endif /* ODBCVER >= 0x0201 */
+
+#define SQL_INFO_LAST SQL_QUALIFIER_LOCATION
+#else
+#define SQL_INFO_LAST SQL_NON_NULLABLE_COLUMNS
+#endif /* ODBCVER >= 0x0200 */
+
+#define SQL_INFO_DRIVER_START 1000
+
+/* SQL_CONVERT_* return value bitmasks */
+
+#define SQL_CVT_CHAR 0x00000001L
+#define SQL_CVT_NUMERIC 0x00000002L
+#define SQL_CVT_DECIMAL 0x00000004L
+#define SQL_CVT_INTEGER 0x00000008L
+#define SQL_CVT_SMALLINT 0x00000010L
+#define SQL_CVT_FLOAT 0x00000020L
+#define SQL_CVT_REAL 0x00000040L
+#define SQL_CVT_DOUBLE 0x00000080L
+#define SQL_CVT_VARCHAR 0x00000100L
+#define SQL_CVT_LONGVARCHAR 0x00000200L
+#define SQL_CVT_BINARY 0x00000400L
+#define SQL_CVT_VARBINARY 0x00000800L
+#define SQL_CVT_BIT 0x00001000L
+#define SQL_CVT_TINYINT 0x00002000L
+#define SQL_CVT_BIGINT 0x00004000L
+#define SQL_CVT_DATE 0x00008000L
+#define SQL_CVT_TIME 0x00010000L
+#define SQL_CVT_TIMESTAMP 0x00020000L
+#define SQL_CVT_LONGVARBINARY 0x00040000L
+
+/* SQL_CONVERT_FUNCTIONS functions */
+#define SQL_FN_CVT_CONVERT 0x00000001L
+
+/* SQL_STRING_FUNCTIONS functions */
+
+#define SQL_FN_STR_CONCAT 0x00000001L
+#define SQL_FN_STR_INSERT 0x00000002L
+#define SQL_FN_STR_LEFT 0x00000004L
+#define SQL_FN_STR_LTRIM 0x00000008L
+#define SQL_FN_STR_LENGTH 0x00000010L
+#define SQL_FN_STR_LOCATE 0x00000020L
+#define SQL_FN_STR_LCASE 0x00000040L
+#define SQL_FN_STR_REPEAT 0x00000080L
+#define SQL_FN_STR_REPLACE 0x00000100L
+#define SQL_FN_STR_RIGHT 0x00000200L
+#define SQL_FN_STR_RTRIM 0x00000400L
+#define SQL_FN_STR_SUBSTRING 0x00000800L
+#define SQL_FN_STR_UCASE 0x00001000L
+#define SQL_FN_STR_ASCII 0x00002000L
+#define SQL_FN_STR_CHAR 0x00004000L
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_STR_DIFFERENCE 0x00008000L
+#define SQL_FN_STR_LOCATE_2 0x00010000L
+#define SQL_FN_STR_SOUNDEX 0x00020000L
+#define SQL_FN_STR_SPACE 0x00040000L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_NUMERIC_FUNCTIONS functions */
+
+#define SQL_FN_NUM_ABS 0x00000001L
+#define SQL_FN_NUM_ACOS 0x00000002L
+#define SQL_FN_NUM_ASIN 0x00000004L
+#define SQL_FN_NUM_ATAN 0x00000008L
+#define SQL_FN_NUM_ATAN2 0x00000010L
+#define SQL_FN_NUM_CEILING 0x00000020L
+#define SQL_FN_NUM_COS 0x00000040L
+#define SQL_FN_NUM_COT 0x00000080L
+#define SQL_FN_NUM_EXP 0x00000100L
+#define SQL_FN_NUM_FLOOR 0x00000200L
+#define SQL_FN_NUM_LOG 0x00000400L
+#define SQL_FN_NUM_MOD 0x00000800L
+#define SQL_FN_NUM_SIGN 0x00001000L
+#define SQL_FN_NUM_SIN 0x00002000L
+#define SQL_FN_NUM_SQRT 0x00004000L
+#define SQL_FN_NUM_TAN 0x00008000L
+#define SQL_FN_NUM_PI 0x00010000L
+#define SQL_FN_NUM_RAND 0x00020000L
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_NUM_DEGREES 0x00040000L
+#define SQL_FN_NUM_LOG10 0x00080000L
+#define SQL_FN_NUM_POWER 0x00100000L
+#define SQL_FN_NUM_RADIANS 0x00200000L
+#define SQL_FN_NUM_ROUND 0x00400000L
+#define SQL_FN_NUM_TRUNCATE 0x00800000L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_TIMEDATE_FUNCTIONS functions */
+
+#define SQL_FN_TD_NOW 0x00000001L
+#define SQL_FN_TD_CURDATE 0x00000002L
+#define SQL_FN_TD_DAYOFMONTH 0x00000004L
+#define SQL_FN_TD_DAYOFWEEK 0x00000008L
+#define SQL_FN_TD_DAYOFYEAR 0x00000010L
+#define SQL_FN_TD_MONTH 0x00000020L
+#define SQL_FN_TD_QUARTER 0x00000040L
+#define SQL_FN_TD_WEEK 0x00000080L
+#define SQL_FN_TD_YEAR 0x00000100L
+#define SQL_FN_TD_CURTIME 0x00000200L
+#define SQL_FN_TD_HOUR 0x00000400L
+#define SQL_FN_TD_MINUTE 0x00000800L
+#define SQL_FN_TD_SECOND 0x00001000L
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_TD_TIMESTAMPADD 0x00002000L
+#define SQL_FN_TD_TIMESTAMPDIFF 0x00004000L
+#define SQL_FN_TD_DAYNAME 0x00008000L
+#define SQL_FN_TD_MONTHNAME 0x00010000L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_SYSTEM_FUNCTIONS functions */
+
+#define SQL_FN_SYS_USERNAME 0x00000001L
+#define SQL_FN_SYS_DBNAME 0x00000002L
+#define SQL_FN_SYS_IFNULL 0x00000004L
+
+/* SQL_TIMEDATE_ADD_INTERVALS and SQL_TIMEDATE_DIFF_INTERVALS functions */
+
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_TSI_FRAC_SECOND 0x00000001L
+#define SQL_FN_TSI_SECOND 0x00000002L
+#define SQL_FN_TSI_MINUTE 0x00000004L
+#define SQL_FN_TSI_HOUR 0x00000008L
+#define SQL_FN_TSI_DAY 0x00000010L
+#define SQL_FN_TSI_WEEK 0x00000020L
+#define SQL_FN_TSI_MONTH 0x00000040L
+#define SQL_FN_TSI_QUARTER 0x00000080L
+#define SQL_FN_TSI_YEAR 0x00000100L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_ODBC_API_CONFORMANCE values */
+
+#define SQL_OAC_NONE 0x0000
+#define SQL_OAC_LEVEL1 0x0001
+#define SQL_OAC_LEVEL2 0x0002
+
+/* SQL_ODBC_SAG_CLI_CONFORMANCE values */
+
+#define SQL_OSCC_NOT_COMPLIANT 0x0000
+#define SQL_OSCC_COMPLIANT 0x0001
+
+/* SQL_ODBC_SQL_CONFORMANCE values */
+
+#define SQL_OSC_MINIMUM 0x0000
+#define SQL_OSC_CORE 0x0001
+#define SQL_OSC_EXTENDED 0x0002
+
+/* SQL_CONCAT_NULL_BEHAVIOR values */
+
+#define SQL_CB_NULL 0x0000
+#define SQL_CB_NON_NULL 0x0001
+
+/* SQL_CURSOR_COMMIT_BEHAVIOR and SQL_CURSOR_ROLLBACK_BEHAVIOR values */
+
+#define SQL_CB_DELETE 0x0000
+#define SQL_CB_CLOSE 0x0001
+#define SQL_CB_PRESERVE 0x0002
+
+/* SQL_IDENTIFIER_CASE values */
+
+#define SQL_IC_UPPER 0x0001
+#define SQL_IC_LOWER 0x0002
+#define SQL_IC_SENSITIVE 0x0003
+#define SQL_IC_MIXED 0x0004
+
+/* SQL_TXN_CAPABLE values */
+
+#define SQL_TC_NONE 0x0000
+#define SQL_TC_DML 0x0001
+#define SQL_TC_ALL 0x0002
+#if (ODBCVER >= 0x0200)
+#define SQL_TC_DDL_COMMIT 0x0003
+#define SQL_TC_DDL_IGNORE 0x0004
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_SCROLL_OPTIONS masks */
+
+#define SQL_SO_FORWARD_ONLY 0x00000001L
+#define SQL_SO_KEYSET_DRIVEN 0x00000002L
+#define SQL_SO_DYNAMIC 0x00000004L
+#define SQL_SO_MIXED 0x00000008L
+#if (ODBCVER >= 0x0200)
+#define SQL_SO_STATIC 0x00000010L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_SCROLL_CONCURRENCY masks */
+
+#define SQL_SCCO_READ_ONLY 0x00000001L
+#define SQL_SCCO_LOCK 0x00000002L
+#define SQL_SCCO_OPT_ROWVER 0x00000004L
+#define SQL_SCCO_OPT_VALUES 0x00000008L
+
+/* SQL_FETCH_DIRECTION masks */
+
+#define SQL_FD_FETCH_NEXT 0x00000001L
+#define SQL_FD_FETCH_FIRST 0x00000002L
+#define SQL_FD_FETCH_LAST 0x00000004L
+#define SQL_FD_FETCH_PRIOR 0x00000008L
+#define SQL_FD_FETCH_ABSOLUTE 0x00000010L
+#define SQL_FD_FETCH_RELATIVE 0x00000020L
+#define SQL_FD_FETCH_RESUME 0x00000040L
+#if (ODBCVER >= 0x0200)
+#define SQL_FD_FETCH_BOOKMARK 0x00000080L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_TXN_ISOLATION_OPTION masks */
+
+#define SQL_TXN_READ_UNCOMMITTED 0x00000001L
+#define SQL_TXN_READ_COMMITTED 0x00000002L
+#define SQL_TXN_REPEATABLE_READ 0x00000004L
+#define SQL_TXN_SERIALIZABLE 0x00000008L
+#define SQL_TXN_VERSIONING 0x00000010L
+
+/* SQL_CORRELATION_NAME values */
+
+#define SQL_CN_NONE 0x0000
+#define SQL_CN_DIFFERENT 0x0001
+#define SQL_CN_ANY 0x0002
+
+/* SQL_NON_NULLABLE_COLUMNS values */
+
+#define SQL_NNC_NULL 0x0000
+#define SQL_NNC_NON_NULL 0x0001
+
+#if (ODBCVER >= 0x0200)
+/* SQL_NULL_COLLATION values */
+
+#define SQL_NC_HIGH 0x0000
+#define SQL_NC_LOW 0x0001
+#define SQL_NC_START 0x0002
+#define SQL_NC_END 0x0004
+
+/* SQL_FILE_USAGE values */
+
+#define SQL_FILE_NOT_SUPPORTED 0x0000
+#define SQL_FILE_TABLE 0x0001
+#define SQL_FILE_QUALIFIER 0x0002
+
+/* SQL_GETDATA_EXTENSIONS values */
+
+#define SQL_GD_ANY_COLUMN 0x00000001L
+#define SQL_GD_ANY_ORDER 0x00000002L
+#define SQL_GD_BLOCK 0x00000004L
+#define SQL_GD_BOUND 0x00000008L
+
+/* SQL_ALTER_TABLE values */
+
+#define SQL_AT_ADD_COLUMN 0x00000001L
+#define SQL_AT_DROP_COLUMN 0x00000002L
+
+/* SQL_POSITIONED_STATEMENTS masks */
+
+#define SQL_PS_POSITIONED_DELETE 0x00000001L
+#define SQL_PS_POSITIONED_UPDATE 0x00000002L
+#define SQL_PS_SELECT_FOR_UPDATE 0x00000004L
+
+/* SQL_GROUP_BY values */
+
+#define SQL_GB_NOT_SUPPORTED 0x0000
+#define SQL_GB_GROUP_BY_EQUALS_SELECT 0x0001
+#define SQL_GB_GROUP_BY_CONTAINS_SELECT 0x0002
+#define SQL_GB_NO_RELATION 0x0003
+
+/* SQL_OWNER_USAGE masks */
+
+#define SQL_OU_DML_STATEMENTS 0x00000001L
+#define SQL_OU_PROCEDURE_INVOCATION 0x00000002L
+#define SQL_OU_TABLE_DEFINITION 0x00000004L
+#define SQL_OU_INDEX_DEFINITION 0x00000008L
+#define SQL_OU_PRIVILEGE_DEFINITION 0x00000010L
+
+/* SQL_QUALIFIER_USAGE masks */
+
+#define SQL_QU_DML_STATEMENTS 0x00000001L
+#define SQL_QU_PROCEDURE_INVOCATION 0x00000002L
+#define SQL_QU_TABLE_DEFINITION 0x00000004L
+#define SQL_QU_INDEX_DEFINITION 0x00000008L
+#define SQL_QU_PRIVILEGE_DEFINITION 0x00000010L
+
+/* SQL_SUBQUERIES masks */
+
+#define SQL_SQ_COMPARISON 0x00000001L
+#define SQL_SQ_EXISTS 0x00000002L
+#define SQL_SQ_IN 0x00000004L
+#define SQL_SQ_QUANTIFIED 0x00000008L
+#define SQL_SQ_CORRELATED_SUBQUERIES 0x00000010L
+
+/* SQL_UNION masks */
+
+#define SQL_U_UNION 0x00000001L
+#define SQL_U_UNION_ALL 0x00000002L
+
+/* SQL_BOOKMARK_PERSISTENCE values */
+
+#define SQL_BP_CLOSE 0x00000001L
+#define SQL_BP_DELETE 0x00000002L
+#define SQL_BP_DROP 0x00000004L
+#define SQL_BP_TRANSACTION 0x00000008L
+#define SQL_BP_UPDATE 0x00000010L
+#define SQL_BP_OTHER_HSTMT 0x00000020L
+#define SQL_BP_SCROLL 0x00000040L
+
+/* SQL_STATIC_SENSITIVITY values */
+
+#define SQL_SS_ADDITIONS 0x00000001L
+#define SQL_SS_DELETIONS 0x00000002L
+#define SQL_SS_UPDATES 0x00000004L
+
+/* SQL_LOCK_TYPESL masks */
+
+#define SQL_LCK_NO_CHANGE 0x00000001L
+#define SQL_LCK_EXCLUSIVE 0x00000002L
+#define SQL_LCK_UNLOCK 0x00000004L
+
+/* SQL_POS_OPERATIONS masks */
+
+#define SQL_POS_POSITION 0x00000001L
+#define SQL_POS_REFRESH 0x00000002L
+#define SQL_POS_UPDATE 0x00000004L
+#define SQL_POS_DELETE 0x00000008L
+#define SQL_POS_ADD 0x00000010L
+
+/* SQL_QUALIFIER_LOCATION values */
+
+#define SQL_QL_START 0x0001L
+#define SQL_QL_END 0x0002L
+
+/* SQL_OJ_CAPABILITIES values */
+
+#if (ODBCVER >= 0x0201)
+#define SQL_OJ_LEFT 0x00000001L
+#define SQL_OJ_RIGHT 0x00000002L
+#define SQL_OJ_FULL 0x00000004L
+#define SQL_OJ_NESTED 0x00000008L
+#define SQL_OJ_NOT_ORDERED 0x00000010L
+#define SQL_OJ_INNER 0x00000020L
+#define SQL_OJ_ALL_COMPARISON_OPS 0x00000040L
+#endif /* ODBCVER >= 0x0201 */
+#endif /* ODBCVER >= 0x0200 */
+
+/* options for SQLGetStmtOption/SQLSetStmtOption */
+#define SQL_QUERY_TIMEOUT 0
+#define SQL_MAX_ROWS 1
+#define SQL_NOSCAN 2
+#define SQL_MAX_LENGTH 3
+#define SQL_ASYNC_ENABLE 4
+#define SQL_BIND_TYPE 5
+#if (ODBCVER >= 0x0200)
+#define SQL_CURSOR_TYPE 6
+#define SQL_CONCURRENCY 7
+#define SQL_KEYSET_SIZE 8
+#define SQL_ROWSET_SIZE 9
+#define SQL_SIMULATE_CURSOR 10
+#define SQL_RETRIEVE_DATA 11
+#define SQL_USE_BOOKMARKS 12
+#define SQL_GET_BOOKMARK 13 /* GetStmtOption Only */
+#define SQL_ROW_NUMBER 14 /* GetStmtOption Only */
+#define SQL_STMT_OPT_MAX SQL_ROW_NUMBER
+#else
+#define SQL_STMT_OPT_MAX SQL_BIND_TYPE
+#endif /* ODBCVER >= 0x0200 */
+
+#define SQL_STMT_OPT_MIN SQL_QUERY_TIMEOUT
+
+
+/* SQL_QUERY_TIMEOUT options */
+#define SQL_QUERY_TIMEOUT_DEFAULT 0UL
+
+/* SQL_MAX_ROWS options */
+#define SQL_MAX_ROWS_DEFAULT 0UL
+
+/* SQL_NOSCAN options */
+#define SQL_NOSCAN_OFF 0UL /* 1.0 FALSE */
+#define SQL_NOSCAN_ON 1UL /* 1.0 TRUE */
+#define SQL_NOSCAN_DEFAULT SQL_NOSCAN_OFF
+
+/* SQL_MAX_LENGTH options */
+#define SQL_MAX_LENGTH_DEFAULT 0UL
+
+/* SQL_ASYNC_ENABLE options */
+#define SQL_ASYNC_ENABLE_OFF 0UL
+#define SQL_ASYNC_ENABLE_ON 1UL
+#define SQL_ASYNC_ENABLE_DEFAULT SQL_ASYNC_ENABLE_OFF
+
+/* SQL_BIND_TYPE options */
+#define SQL_BIND_BY_COLUMN 0UL
+#define SQL_BIND_TYPE_DEFAULT SQL_BIND_BY_COLUMN /* Default value */
+
+/* SQL_CONCURRENCY options */
+#define SQL_CONCUR_READ_ONLY 1
+#define SQL_CONCUR_LOCK 2
+#define SQL_CONCUR_ROWVER 3
+#define SQL_CONCUR_VALUES 4
+#define SQL_CONCUR_DEFAULT SQL_CONCUR_READ_ONLY /* Default value
+*/
+
+#if (ODBCVER >= 0x0200)
+/* SQL_CURSOR_TYPE options */
+#define SQL_CURSOR_FORWARD_ONLY 0UL
+#define SQL_CURSOR_KEYSET_DRIVEN 1UL
+#define SQL_CURSOR_DYNAMIC 2UL
+#define SQL_CURSOR_STATIC 3UL
+#define SQL_CURSOR_TYPE_DEFAULT SQL_CURSOR_FORWARD_ONLY /* Default value */
+
+/* SQL_ROWSET_SIZE options */
+#define SQL_ROWSET_SIZE_DEFAULT 1UL
+
+/* SQL_KEYSET_SIZE options */
+#define SQL_KEYSET_SIZE_DEFAULT 0UL
+
+/* SQL_SIMULATE_CURSOR options */
+#define SQL_SC_NON_UNIQUE 0UL
+#define SQL_SC_TRY_UNIQUE 1UL
+#define SQL_SC_UNIQUE 2UL
+
+/* SQL_RETRIEVE_DATA options */
+#define SQL_RD_OFF 0UL
+#define SQL_RD_ON 1UL
+#define SQL_RD_DEFAULT SQL_RD_ON
+
+/* SQL_USE_BOOKMARKS options */
+#define SQL_UB_OFF 0UL
+#define SQL_UB_ON 1UL
+#define SQL_UB_DEFAULT SQL_UB_OFF
+
+#endif /* ODBCVER >= 0x0200 */
+
+/* options for SQLSetConnectOption/SQLGetConnectOption */
+#define SQL_ACCESS_MODE 101
+#define SQL_AUTOCOMMIT 102
+#define SQL_LOGIN_TIMEOUT 103
+#define SQL_OPT_TRACE 104
+#define SQL_OPT_TRACEFILE 105
+#define SQL_TRANSLATE_DLL 106
+#define SQL_TRANSLATE_OPTION 107
+#define SQL_TXN_ISOLATION 108
+#define SQL_CURRENT_QUALIFIER 109
+#if (ODBCVER >= 0x0200)
+#define SQL_ODBC_CURSORS 110
+#define SQL_QUIET_MODE 111
+#define SQL_PACKET_SIZE 112
+#define SQL_CONN_OPT_MAX SQL_PACKET_SIZE
+#else
+#define SQL_CONN_OPT_MAX SQL_CURRENT_QUALIFIER
+#endif /* ODBCVER >= 0x0200 */
+#define SQL_CONNECT_OPT_DRVR_START 1000
+
+#define SQL_CONN_OPT_MIN SQL_ACCESS_MODE
+
+/* SQL_ACCESS_MODE options */
+#define SQL_MODE_READ_WRITE 0UL
+#define SQL_MODE_READ_ONLY 1UL
+#define SQL_MODE_DEFAULT SQL_MODE_READ_WRITE
+
+/* SQL_AUTOCOMMIT options */
+#define SQL_AUTOCOMMIT_OFF 0UL
+#define SQL_AUTOCOMMIT_ON 1UL
+#define SQL_AUTOCOMMIT_DEFAULT SQL_AUTOCOMMIT_ON
+
+/* SQL_LOGIN_TIMEOUT options */
+#define SQL_LOGIN_TIMEOUT_DEFAULT 15UL
+
+/* SQL_OPT_TRACE options */
+#define SQL_OPT_TRACE_OFF 0UL
+#define SQL_OPT_TRACE_ON 1UL
+#define SQL_OPT_TRACE_DEFAULT SQL_OPT_TRACE_OFF
+#define SQL_OPT_TRACE_FILE_DEFAULT "\\SQL.LOG"
+
+#if (ODBCVER >= 0x0200)
+/* SQL_ODBC_CURSORS options */
+#define SQL_CUR_USE_IF_NEEDED 0UL
+#define SQL_CUR_USE_ODBC 1UL
+#define SQL_CUR_USE_DRIVER 2UL
+#define SQL_CUR_DEFAULT SQL_CUR_USE_DRIVER
+#endif /* ODBCVER >= 0x0200 */
+
+/* Column types and scopes in SQLSpecialColumns. */
+#define SQL_BEST_ROWID 1
+#define SQL_ROWVER 2
+
+#define SQL_SCOPE_CURROW 0
+#define SQL_SCOPE_TRANSACTION 1
+#define SQL_SCOPE_SESSION 2
+
+/* Defines for SQLStatistics */
+#define SQL_INDEX_UNIQUE 0
+#define SQL_INDEX_ALL 1
+
+#define SQL_QUICK 0
+#define SQL_ENSURE 1
+
+/* Defines for SQLStatistics (returned in the result set) */
+#define SQL_TABLE_STAT 0
+#define SQL_INDEX_CLUSTERED 1
+#define SQL_INDEX_HASHED 2
+#define SQL_INDEX_OTHER 3
+
+#if (ODBCVER >= 0x0200)
+/* Defines for SQLSpecialColumns (returned in the result set) */
+#define SQL_PC_UNKNOWN 0
+#define SQL_PC_NOT_PSEUDO 1
+#define SQL_PC_PSEUDO 2
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQLDataSources "fDirection" values, also used on SQLExtendedFetch() */
+#define SQL_FETCH_NEXT 1
+#define SQL_FETCH_FIRST 2
+
+#ifndef RC_INVOKED
+
+#if (ODBCVER >= 0x0200)
+/* This define is too large for RC */
+#define SQL_ODBC_KEYWORDS \
+"ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"\
+"ASC,ASSERTION,AT,AUTHORIZATION,AVG,"\
+"BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,"\
+"CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,"\
+"COBOL,COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,"\
+"CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,"\
+"CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,"\
+"DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,"\
+"DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,"\
+"DISTINCT,DOMAIN,DOUBLE,DROP,"\
+"ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,"\
+"EXISTS,EXTERNAL,EXTRACT,"\
+"FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,"\
+"GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,"\
+"IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,"\
+"INPUT,INSENSITIVE,INSERT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,"\
+"JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,"\
+"MATCH,MAX,MIN,MINUTE,MODULE,MONTH,MUMPS,"\
+"NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,"\
+"OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,"\
+"PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,"\
+"PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,"\
+"REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWS,"\
+"SCHEMA,SCROLL,SECOND,SECTION,SELECT,SEQUENCE,SESSION,SESSION_USER,SET,SIZE,"\
+"SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,"\
+"SUBSTRING,SUM,SYSTEM_USER,"\
+"TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,"\
+"TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,"\
+"UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,"\
+"VALUE,VALUES,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,YEAR"
+#endif /* ODBCVER >= 0x0200 */
+
+/* Level 1 Prototypes */
+SQLRETURN SQL_API SQLColumns(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLCHAR FAR *szColumnName,
+ SQLSMALLINT cbColumnName);
+
+SQLRETURN SQL_API SQLGetConnectOption(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fOption,
+ SQLPOINTER pvParam);
+
+SQLRETURN SQL_API SQLGetData(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLSMALLINT fCType,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValueMax,
+ SQLINTEGER FAR *pcbValue);
+
+SQLRETURN SQL_API SQLGetFunctions(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fFunction,
+ SQLUSMALLINT FAR *pfExists);
+
+SQLRETURN SQL_API SQLGetInfo(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fInfoType,
+ SQLPOINTER rgbInfoValue,
+ SQLSMALLINT cbInfoValueMax,
+ SQLSMALLINT FAR *pcbInfoValue);
+
+SQLRETURN SQL_API SQLGetStmtOption(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fOption,
+ SQLPOINTER pvParam);
+
+SQLRETURN SQL_API SQLGetTypeInfo(
+ SQLHSTMT hstmt,
+ SQLSMALLINT fSqlType);
+
+SQLRETURN SQL_API SQLParamData(
+ SQLHSTMT hstmt,
+ SQLPOINTER FAR *prgbValue);
+
+SQLRETURN SQL_API SQLPutData(
+ SQLHSTMT hstmt,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValue);
+
+SQLRETURN SQL_API SQLSetConnectOption(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fOption,
+ SQLUINTEGER vParam);
+
+SQLRETURN SQL_API SQLSetStmtOption(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fOption,
+ SQLUINTEGER vParam);
+
+SQLRETURN SQL_API SQLSpecialColumns(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fColType,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLUSMALLINT fScope,
+ SQLUSMALLINT fNullable);
+
+SQLRETURN SQL_API SQLStatistics(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLUSMALLINT fUnique,
+ SQLUSMALLINT fAccuracy);
+
+SQLRETURN SQL_API SQLTables(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLCHAR FAR *szTableType,
+ SQLSMALLINT cbTableType);
+#endif /* RC_INVOKED */
+
+
+/* Level 2 Functions */
+
+
+
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLDataSources(
+ SQLHENV henv,
+ SQLUSMALLINT fDirection,
+ SQLCHAR FAR *szDSN,
+ SQLSMALLINT cbDSNMax,
+ SQLSMALLINT FAR *pcbDSN,
+ SQLCHAR FAR *szDescription,
+ SQLSMALLINT cbDescriptionMax,
+ SQLSMALLINT FAR *pcbDescription);
+
+
+#endif /* RC_INVOKED */
+
+/* Deprecated defines from prior versions of ODBC */
+#define SQL_DATABASE_NAME 16 /* Use SQLGetConnectOption/SQL_CURRENT_QUALIFIER */
+#define SQL_FD_FETCH_PREV SQL_FD_FETCH_PRIOR
+#define SQL_FETCH_PREV SQL_FETCH_PRIOR
+#define SQL_CONCUR_TIMESTAMP SQL_CONCUR_ROWVER
+#define SQL_SCCO_OPT_TIMESTAMP SQL_SCCO_OPT_ROWVER
+#define SQL_CC_DELETE SQL_CB_DELETE
+#define SQL_CR_DELETE SQL_CB_DELETE
+#define SQL_CC_CLOSE SQL_CB_CLOSE
+#define SQL_CR_CLOSE SQL_CB_CLOSE
+#define SQL_CC_PRESERVE SQL_CB_PRESERVE
+#define SQL_CR_PRESERVE SQL_CB_PRESERVE
+#define SQL_FETCH_RESUME 7 /* Not supported by 2.0 drivers */
+#define SQL_SCROLL_FORWARD_ONLY 0L /*-SQL_CURSOR_FORWARD_ONLY */
+#define SQL_SCROLL_KEYSET_DRIVEN (-1L) /*-SQL_CURSOR_KEYSET_DRIVEN */
+#define SQL_SCROLL_DYNAMIC (-2L) /*-SQL_CURSOR_DYNAMIC */
+#if (ODBCVER >= 0x0200)
+#define SQL_SCROLL_STATIC (-3L) /*-SQL_CURSOR_STATIC */
+#define SQL_PC_NON_PSEUDO SQL_PC_NOT_PSEUDO
+#endif /* ODBCVER >= 0x0200 */
+
+/* Deprecrated functions from prior versions of ODBC */
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLSetScrollOptions( /* Use SQLSetStmtOptions */
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fConcurrency,
+ SQLINTEGER crowKeyset,
+ SQLUSMALLINT crowRowset);
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* #ifndef __SQL */
diff --git a/public/sdk/inc/mfc40/sqlext.h b/public/sdk/inc/mfc40/sqlext.h
new file mode 100644
index 000000000..ee02cafaf
--- /dev/null
+++ b/public/sdk/inc/mfc40/sqlext.h
@@ -0,0 +1,293 @@
+/*****************************************************************
+** SQLEXT.H - This is the include for applications using
+** the Microsoft SQL Extensions
+**
+** (C) Copyright 1990 - 1995 By Microsoft Corp.
+**
+** Updated 5/12/93 for 2.00 specification
+** Updated 5/23/94 for 2.01 specification
+** Updated 10/27/94 for 2.10 specification
+** Updated 04/10/95 for 2.50 specification
+*********************************************************************/
+
+#ifndef __SQLEXT
+#define __SQLEXT
+
+#ifndef __SQL
+#include "sql.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+/* SQLBindParameter extensions */
+#if (ODBCVER >= 0x0200)
+#define SQL_DEFAULT_PARAM (-5)
+#define SQL_IGNORE (-6)
+#define SQL_LEN_DATA_AT_EXEC_OFFSET (-100)
+#define SQL_LEN_DATA_AT_EXEC(length) (-length+SQL_LEN_DATA_AT_EXEC_OFFSET)
+#endif /* ODBCVER >= 0x0200 */
+
+
+/* Defines for SQLSetPos */
+#define SQL_ENTIRE_ROWSET 0
+
+/* Operations in SQLSetPos */
+#define SQL_POSITION 0 /* 1.0 FALSE */
+#define SQL_REFRESH 1 /* 1.0 TRUE */
+#if (ODBCVER >= 0x0200)
+#define SQL_UPDATE 2
+#define SQL_DELETE 3
+#define SQL_ADD 4
+#endif /* ODBCVER >= 0x0200 */
+
+/* Lock options in SQLSetPos */
+#define SQL_LOCK_NO_CHANGE 0 /* 1.0 FALSE */
+#define SQL_LOCK_EXCLUSIVE 1 /* 1.0 TRUE */
+#if (ODBCVER >= 0x0200)
+#define SQL_LOCK_UNLOCK 2
+
+/* Macros for SQLSetPos */
+#define SQL_POSITION_TO(hstmt,irow) SQLSetPos(hstmt,irow,SQL_POSITION,SQL_LOCK_NO_CHANGE)
+#define SQL_LOCK_RECORD(hstmt,irow,fLock) SQLSetPos(hstmt,irow,SQL_POSITION,fLock)
+#define SQL_REFRESH_RECORD(hstmt,irow,fLock) SQLSetPos(hstmt,irow,SQL_REFRESH,fLock)
+#define SQL_UPDATE_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_UPDATE,SQL_LOCK_NO_CHANGE)
+#define SQL_DELETE_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_DELETE,SQL_LOCK_NO_CHANGE)
+#define SQL_ADD_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_ADD,SQL_LOCK_NO_CHANGE)
+#endif /* ODBCVER >= 0x0200 */
+
+/* Level 1 Prototypes */
+
+/* Options for SQLDriverConnect */
+#define SQL_DRIVER_NOPROMPT 0
+#define SQL_DRIVER_COMPLETE 1
+#define SQL_DRIVER_PROMPT 2
+#define SQL_DRIVER_COMPLETE_REQUIRED 3
+
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLDriverConnect(
+ SQLHDBC hdbc,
+ SQLHWND hwnd,
+ SQLCHAR FAR *szConnStrIn,
+ SQLSMALLINT cbConnStrIn,
+ SQLCHAR FAR *szConnStrOut,
+ SQLSMALLINT cbConnStrOutMax,
+ SQLSMALLINT FAR *pcbConnStrOut,
+ SQLUSMALLINT fDriverCompletion);
+
+#endif /* RC_INVOKED */
+
+/* Level 2 Functions */
+
+/* SQLExtendedFetch "fFetchType" values */
+#ifndef SQL_FETCH_NEXT
+#define SQL_FETCH_NEXT 1
+#endif
+#ifndef SQL_FETCH_FIRST
+#define SQL_FETCH_FIRST 2
+#endif
+#define SQL_FETCH_LAST 3
+#define SQL_FETCH_PRIOR 4
+#define SQL_FETCH_ABSOLUTE 5
+#define SQL_FETCH_RELATIVE 6
+#if (ODBCVER >= 0x0200)
+#define SQL_FETCH_BOOKMARK 8
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQLExtendedFetch "rgfRowStatus" element values */
+#define SQL_ROW_SUCCESS 0
+#define SQL_ROW_DELETED 1
+#define SQL_ROW_UPDATED 2
+#define SQL_ROW_NOROW 3
+#if (ODBCVER >= 0x0200)
+#define SQL_ROW_ADDED 4
+#define SQL_ROW_ERROR 5
+#endif /* ODBCVER >= 0x0200 */
+
+/* Defines for SQLForeignKeys (returned in result set) */
+#define SQL_CASCADE 0
+#define SQL_RESTRICT 1
+#define SQL_SET_NULL 2
+#if (ODBCVER >= 0x0250)
+#define SQL_NO_ACTION 3
+#define SQL_SET_DEFAULT 4
+#endif
+
+/* Defines for SQLBindParameter and
+ SQLProcedureColumns (returned in the result set) */
+#define SQL_PARAM_TYPE_UNKNOWN 0
+#define SQL_PARAM_INPUT 1
+#define SQL_PARAM_INPUT_OUTPUT 2
+#define SQL_RESULT_COL 3
+#if (ODBCVER >= 0x0200)
+#define SQL_PARAM_OUTPUT 4
+#define SQL_RETURN_VALUE 5
+#endif /* ODBCVER >= 0x0200 */
+
+
+#if (ODBCVER >= 0x0200)
+/* Defines for SQLProcedures (returned in the result set) */
+#define SQL_PT_UNKNOWN 0
+#define SQL_PT_PROCEDURE 1
+#define SQL_PT_FUNCTION 2
+
+#endif /* ODBCVER >= 0x0200 */
+
+/* Defines used by Driver Manager when mapping SQLSetParam to SQLBindParameter
+*/
+#define SQL_PARAM_TYPE_DEFAULT SQL_PARAM_INPUT_OUTPUT
+#define SQL_SETPARAM_VALUE_MAX (-1L)
+
+
+#ifndef RC_INVOKED
+
+/* Level 2 Prototypes */
+SQLRETURN SQL_API SQLBrowseConnect(
+ SQLHDBC hdbc,
+ SQLCHAR FAR *szConnStrIn,
+ SQLSMALLINT cbConnStrIn,
+ SQLCHAR FAR *szConnStrOut,
+ SQLSMALLINT cbConnStrOutMax,
+ SQLSMALLINT FAR *pcbConnStrOut);
+
+SQLRETURN SQL_API SQLColumnPrivileges(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLCHAR FAR *szColumnName,
+ SQLSMALLINT cbColumnName);
+
+SQLRETURN SQL_API SQLDescribeParam(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT FAR *pfSqlType,
+ SQLUINTEGER FAR *pcbParamDef,
+ SQLSMALLINT FAR *pibScale,
+ SQLSMALLINT FAR *pfNullable);
+
+SQLRETURN SQL_API SQLExtendedFetch(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fFetchType,
+ SQLINTEGER irow,
+ SQLUINTEGER FAR *pcrow,
+ SQLUSMALLINT FAR *rgfRowStatus);
+
+SQLRETURN SQL_API SQLForeignKeys(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szPkCatalogName,
+ SQLSMALLINT cbPkCatalogName,
+ SQLCHAR FAR *szPkSchemaName,
+ SQLSMALLINT cbPkSchemaName,
+ SQLCHAR FAR *szPkTableName,
+ SQLSMALLINT cbPkTableName,
+ SQLCHAR FAR *szFkCatalogName,
+ SQLSMALLINT cbFkCatalogName,
+ SQLCHAR FAR *szFkSchemaName,
+ SQLSMALLINT cbFkSchemaName,
+ SQLCHAR FAR *szFkTableName,
+ SQLSMALLINT cbFkTableName);
+
+SQLRETURN SQL_API SQLMoreResults(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLNativeSql(
+ SQLHDBC hdbc,
+ SQLCHAR FAR *szSqlStrIn,
+ SQLINTEGER cbSqlStrIn,
+ SQLCHAR FAR *szSqlStr,
+ SQLINTEGER cbSqlStrMax,
+ SQLINTEGER FAR *pcbSqlStr);
+
+SQLRETURN SQL_API SQLNumParams(
+ SQLHSTMT hstmt,
+ SQLSMALLINT FAR *pcpar);
+
+SQLRETURN SQL_API SQLParamOptions(
+ SQLHSTMT hstmt,
+ SQLUINTEGER crow,
+ SQLUINTEGER FAR *pirow);
+
+SQLRETURN SQL_API SQLPrimaryKeys(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName);
+
+SQLRETURN SQL_API SQLProcedureColumns(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szProcName,
+ SQLSMALLINT cbProcName,
+ SQLCHAR FAR *szColumnName,
+ SQLSMALLINT cbColumnName);
+
+SQLRETURN SQL_API SQLProcedures(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szProcName,
+ SQLSMALLINT cbProcName);
+
+SQLRETURN SQL_API SQLSetPos(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT irow,
+ SQLUSMALLINT fOption,
+ SQLUSMALLINT fLock);
+
+SQLRETURN SQL_API SQLTablePrivileges(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName);
+
+/* SDK 2.0 Additions */
+
+#if (ODBCVER >= 0x0200)
+SQLRETURN SQL_API SQLDrivers(
+ SQLHENV henv,
+ SQLUSMALLINT fDirection,
+ SQLCHAR FAR *szDriverDesc,
+ SQLSMALLINT cbDriverDescMax,
+ SQLSMALLINT FAR *pcbDriverDesc,
+ SQLCHAR FAR *szDriverAttributes,
+ SQLSMALLINT cbDrvrAttrMax,
+ SQLSMALLINT FAR *pcbDrvrAttr);
+
+SQLRETURN SQL_API SQLBindParameter(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT fParamType,
+ SQLSMALLINT fCType,
+ SQLSMALLINT fSqlType,
+ SQLUINTEGER cbColDef,
+ SQLSMALLINT ibScale,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValueMax,
+ SQLINTEGER FAR *pcbValue);
+#endif /* ODBCVER >= 0x0200 */
+
+#endif /* RC_INVOKED */
+
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* __SQLEXT */
diff --git a/public/sdk/inc/mfc40/sqltypes.h b/public/sdk/inc/mfc40/sqltypes.h
new file mode 100644
index 000000000..ae9d39e2c
--- /dev/null
+++ b/public/sdk/inc/mfc40/sqltypes.h
@@ -0,0 +1,138 @@
+/*********************************************************************
+** SQLTYPES.H - This file defines the types used in ODBC
+**
+** (C) Copyright 1995 By Microsoft Corp.
+**
+** Created 4/10/95 for 2.50 specification
+*********************************************************************/
+
+#ifndef __SQLTYPES
+#define __SQLTYPES
+
+/* if ODBCVER is not defined, assume version 2.50 */
+#ifndef ODBCVER
+#define ODBCVER 0x0250
+#endif
+
+/* environment specific definitions */
+#ifndef EXPORT
+#define EXPORT _export
+#endif
+
+/* define WINDOWS */
+/* _WINDOWS_ is defined in windows.h for 32 bit */
+/* _INC_WINDOWS is defined in windows.h for 16 bit */
+#if (defined(_WINDOWS_) || defined(_INC_WINDOWS)) && !defined(WINDOWS)
+#define WINDOWS
+#endif
+
+#ifdef WIN32
+#define SQL_API __stdcall
+#elif defined(WINDOWS)
+#define SQL_API EXPORT CALLBACK
+#else
+#define SQL_API
+#endif
+
+
+#ifndef RC_INVOKED
+
+#if !defined(WINDOWS) && !defined(FAR)
+#define FAR
+#endif
+
+/* SQL portable types for C */
+typedef unsigned char UCHAR;
+typedef signed char SCHAR;
+typedef long int SDWORD;
+typedef short int SWORD;
+typedef unsigned long int UDWORD;
+typedef unsigned short int UWORD;
+
+#if (ODBCVER >= 0x0200)
+typedef signed long SLONG;
+typedef signed short SSHORT;
+typedef unsigned long ULONG;
+typedef unsigned short USHORT;
+#endif /* ODBCVER >= 0x0200 */
+typedef double SDOUBLE;
+#if defined(WIN32)
+typedef double LDOUBLE; /* long double == short double in Win32 */
+#elif defined(WINDOWS)
+typedef long double LDOUBLE;
+#else
+typedef double LDOUBLE;
+#endif
+typedef float SFLOAT;
+
+typedef void FAR * PTR;
+
+typedef void FAR * HENV;
+typedef void FAR * HDBC;
+typedef void FAR * HSTMT;
+
+typedef signed short RETCODE;
+
+typedef UCHAR SQLCHAR;
+typedef SCHAR SQLSCHAR;
+typedef SDWORD SQLINTEGER;
+typedef SWORD SQLSMALLINT;
+typedef UDWORD SQLUINTEGER;
+typedef UWORD SQLUSMALLINT;
+
+typedef void FAR * SQLPOINTER;
+
+#if defined(WINDOWS) || defined(WIN32)
+typedef HENV SQLHENV;
+typedef HDBC SQLHDBC;
+typedef HSTMT SQLHSTMT;
+#else
+typedef SQLINTEGER SQLHENV;
+typedef SQLINTEGER SQLHDBC;
+typedef SQLINTEGER SQLHSTMT;
+#endif
+
+typedef SQLSMALLINT SQLRETURN;
+
+#if defined(WINDOWS) || defined(WIN32) || defined(OS2)
+typedef HWND SQLHWND;
+#elif defined (UNIX)
+typedef Widget SQLHWND;
+#else
+/* placehold for future O/S GUI window handle definition */
+typedef SQLPOINTER SQLHWND;
+#endif
+
+/* transfer types for DATE, TIME, TIMESTAMP */
+typedef struct tagDATE_STRUCT
+{
+ SQLSMALLINT year;
+ SQLUSMALLINT month;
+ SQLUSMALLINT day;
+} DATE_STRUCT;
+
+typedef struct tagTIME_STRUCT
+{
+ SQLUSMALLINT hour;
+ SQLUSMALLINT minute;
+ SQLUSMALLINT second;
+} TIME_STRUCT;
+
+typedef struct tagTIMESTAMP_STRUCT
+{
+ SQLSMALLINT year;
+ SQLUSMALLINT month;
+ SQLUSMALLINT day;
+ SQLUSMALLINT hour;
+ SQLUSMALLINT minute;
+ SQLUSMALLINT second;
+ SQLUINTEGER fraction;
+} TIMESTAMP_STRUCT;
+
+#if (ODBCVER >= 0x0200)
+typedef unsigned long int BOOKMARK;
+#endif /* ODBCVER >= 0x0200 */
+
+#endif
+
+#endif /* #ifndef __SQLTYPES */
diff --git a/public/sdk/inc/mfc40/winres.h b/public/sdk/inc/mfc40/winres.h
new file mode 100644
index 000000000..bced02171
--- /dev/null
+++ b/public/sdk/inc/mfc40/winres.h
@@ -0,0 +1,589 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// winres.h - Windows resource definitions
+// extracted from WINUSER.H and COMMCTRL.H
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+
+#define VS_VERSION_INFO 1
+
+#ifdef APSTUDIO_INVOKED
+#define APSTUDIO_HIDDEN_SYMBOLS // Ignore following symbols
+#endif
+
+#ifndef WINVER
+#define WINVER 0x0400 // default to Windows Version 4.0
+#endif
+
+#define OBM_CLOSE 32754
+#define OBM_UPARROW 32753
+#define OBM_DNARROW 32752
+#define OBM_RGARROW 32751
+#define OBM_LFARROW 32750
+#define OBM_REDUCE 32749
+#define OBM_ZOOM 32748
+#define OBM_RESTORE 32747
+#define OBM_REDUCED 32746
+#define OBM_ZOOMD 32745
+#define OBM_RESTORED 32744
+#define OBM_UPARROWD 32743
+#define OBM_DNARROWD 32742
+#define OBM_RGARROWD 32741
+#define OBM_LFARROWD 32740
+#define OBM_MNARROW 32739
+#define OBM_COMBO 32738
+#define OBM_UPARROWI 32737
+#define OBM_DNARROWI 32736
+#define OBM_RGARROWI 32735
+#define OBM_LFARROWI 32734
+#define OBM_OLD_CLOSE 32767
+#define OBM_SIZE 32766
+#define OBM_OLD_UPARROW 32765
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_LFARROW 32762
+#define OBM_BTSIZE 32761
+#define OBM_CHECK 32760
+#define OBM_CHECKBOXES 32759
+#define OBM_BTNCORNERS 32758
+#define OBM_OLD_REDUCE 32757
+#define OBM_OLD_ZOOM 32756
+#define OBM_OLD_RESTORE 32755
+#define OCR_NORMAL 32512
+#define OCR_IBEAM 32513
+#define OCR_WAIT 32514
+#define OCR_CROSS 32515
+#define OCR_UP 32516
+#define OCR_SIZE 32640
+#define OCR_ICON 32641
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_ICOCUR 32647
+#define OCR_NO 32648
+#define OIC_SAMPLE 32512
+#define OIC_HAND 32513
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_NOTE 32516
+
+#if (WINVER >= 0x0400)
+#define OCR_APPSTARTING 32650
+#define OIC_WINLOGO 32517
+#define OIC_WARNING OIC_BANG
+#define OIC_ERROR OIC_HAND
+#define OIC_INFORMATION OIC_NOTE
+#endif
+
+#define WS_OVERLAPPED 0x00000000L
+#define WS_POPUP 0x80000000L
+#define WS_CHILD 0x40000000L
+#define WS_CLIPSIBLINGS 0x04000000L
+#define WS_CLIPCHILDREN 0x02000000L
+#define WS_VISIBLE 0x10000000L
+#define WS_DISABLED 0x08000000L
+#define WS_MINIMIZE 0x20000000L
+#define WS_MAXIMIZE 0x01000000L
+#define WS_CAPTION 0x00C00000L
+#define WS_BORDER 0x00800000L
+#define WS_DLGFRAME 0x00400000L
+#define WS_VSCROLL 0x00200000L
+#define WS_HSCROLL 0x00100000L
+#define WS_SYSMENU 0x00080000L
+#define WS_THICKFRAME 0x00040000L
+#define WS_MINIMIZEBOX 0x00020000L
+#define WS_MAXIMIZEBOX 0x00010000L
+#define WS_GROUP 0x00020000L
+#define WS_TABSTOP 0x00010000L
+
+// other aliases
+#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
+#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
+#define WS_CHILDWINDOW (WS_CHILD)
+#define WS_TILED WS_OVERLAPPED
+#define WS_ICONIC WS_MINIMIZE
+#define WS_SIZEBOX WS_THICKFRAME
+#define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
+
+#define WS_EX_DLGMODALFRAME 0x00000001L
+#define WS_EX_NOPARENTNOTIFY 0x00000004L
+#define WS_EX_TOPMOST 0x00000008L
+#define WS_EX_ACCEPTFILES 0x00000010L
+#define WS_EX_TRANSPARENT 0x00000020L
+#if (WINVER >= 0x0400)
+#define WS_EX_MDICHILD 0x00000040L
+#define WS_EX_TOOLWINDOW 0x00000080L
+#define WS_EX_WINDOWEDGE 0x00000100L
+#define WS_EX_CLIENTEDGE 0x00000200L
+#define WS_EX_CONTEXTHELP 0x00000400L
+
+#define WS_EX_RIGHT 0x00001000L
+#define WS_EX_LEFT 0x00000000L
+#define WS_EX_RTLREADING 0x00002000L
+#define WS_EX_LTRREADING 0x00000000L
+#define WS_EX_LEFTSCROLLBAR 0x00004000L
+#define WS_EX_RIGHTSCROLLBAR 0x00000000L
+
+#define WS_EX_CONTROLPARENT 0x00010000L
+#define WS_EX_STATICEDGE 0x00020000L
+#define WS_EX_APPWINDOW 0x00040000L
+
+#define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
+#define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
+#endif
+
+#define VK_LBUTTON 0x01
+#define VK_RBUTTON 0x02
+#define VK_CANCEL 0x03
+#define VK_MBUTTON 0x04
+#define VK_BACK 0x08
+#define VK_TAB 0x09
+#define VK_CLEAR 0x0C
+#define VK_RETURN 0x0D
+#define VK_SHIFT 0x10
+#define VK_CONTROL 0x11
+#define VK_MENU 0x12
+#define VK_PAUSE 0x13
+#define VK_CAPITAL 0x14
+#define VK_ESCAPE 0x1B
+#define VK_SPACE 0x20
+#define VK_PRIOR 0x21
+#define VK_NEXT 0x22
+#define VK_END 0x23
+#define VK_HOME 0x24
+#define VK_LEFT 0x25
+#define VK_UP 0x26
+#define VK_RIGHT 0x27
+#define VK_DOWN 0x28
+#define VK_SELECT 0x29
+#define VK_PRINT 0x2A
+#define VK_EXECUTE 0x2B
+#define VK_SNAPSHOT 0x2C
+#define VK_INSERT 0x2D
+#define VK_DELETE 0x2E
+#define VK_HELP 0x2F
+#define VK_NUMPAD0 0x60
+#define VK_NUMPAD1 0x61
+#define VK_NUMPAD2 0x62
+#define VK_NUMPAD3 0x63
+#define VK_NUMPAD4 0x64
+#define SQLSMALLINT FAR *pfNullable);
+
+SQLRETURN SQL_API SQLExtendedFetch(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fFetchType,
+ SQLINTEGER irow,
+ SQLUINTEGER FAR *pcrow,
+ SQLUSMALLINT FAR *rgfRowStatus);
+
+SQLRETURN SQL_API SQLForeignKeys(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szPkCatalogName,
+ SQLSMALLINT cbPkCatalogName,
+ SQLCHAR FAR *szPkSchemaName,
+ SQLSMALLINT cbPkSchemaName,
+ SQLCHAR FAR *szPkTableName,
+ SQLSMALLINT cbPkTableName,
+ SQLCHAR FAR *szFkCatalogName,
+ SQLSMALLINT cbFkCatalogName,
+ SQLCHAR FAR *szFkSchemaName,
+ SQLSMALLINT cbFkSchemaName,
+ SQLCHAR FAR *szFkTableName,
+ SQLSMALLINT cbFkTableName);
+
+SQLRETURN SQL_API SQLMoreResults(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLNativeSql(
+ SQLHDBC hdbc,
+ SQLCHAR FAR *szSqlStrIn,
+ SQLINTEGER cbSqlStrIn,
+ SQLCHAR FAR *szSqlStr,
+ SQLINTEGER cbSqlStrMax,
+ SQLINTEGER FAR *pcbSqlStr);
+
+SQLRETURN SQL_API SQLNumParams(
+ SQLHSTMT hstmt,
+ SQLSMALLINT FAR *pcpar);
+
+SQLRETURN SQL_API SQLParamOptions(
+ SQLHSTMT hstmt,
+ SQLUINTEGER crow,
+ SQLUINTEGER FAR *pirow);
+
+SQLRETURN SQL_API SQLPrimaryKeys(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName);
+
+SQLRETURN SQL_API SQLProcedureColumns(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szProcName,
+ SQLSMALLINT cbProcName,
+ SQLCHAR FAR *szColumnName,
+ SQLSMALLINT cbColumnName);
+
+SQLRETURN SQL_API SQLProcedures(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szProcName,
+ SQLSMA ¨àT 0L
+#define DS_MODALFRAME 0x80L
+#define DS_NOIDLEMSG 0x100L
+#define DS_SETFOREGROUND 0x200L
+
+#ifdef _MAC
+#define DS_WINDOWSUI 0x8000L
+#endif
+
+#if (WINVER >= 0x0400)
+#define DS_3DLOOK 0x0004L
+#define DS_FIXEDSYS 0x0008L
+#define DS_NOFAILCREATE 0x0010L
+#define DS_CONTROL 0x0400L
+#define DS_CENTER 0x0800L
+#define DS_CENTERMOUSE 0x1000L
+#define DS_CONTEXTHELP 0x2000L
+#endif
+
+#define SS_LEFT 0x00000000L
+#define SS_CENTER 0x00000001L
+#define SS_RIGHT 0x00000002L
+#define SS_ICON 0x00000003L
+#define SS_BLACKRECT 0x00000004L
+#define SS_GRAYRECT 0x00000005L
+#define SS_WHITERECT 0x00000006L
+#define SS_BLACKFRAME 0x00000007L
+#define SS_GRAYFRAME 0x00000008L
+#define SS_WHITEFRAME 0x00000009L
+#define SS_SIMPLE 0x0000000BL
+#define SS_LEFTNOWORDWRAP 0x0000000CL
+#define SS_BITMAP 0x0000000EL
+
+#if (WINVER >= 0x0400)
+#define SS_OWNERDRAW 0x0000000DL
+#define SS_ENHMETAFILE 0x0000000FL
+#define SS_ETCHEDHORZ 0x00000010L
+#define SS_ETCHEDVERT 0x00000011L
+#define SS_ETCHEDFRAME 0x00000012L
+#endif
+
+#define SS_NOPREFIX 0x00000080L
+#if (WINVER >= 0x0400)
+#define SS_NOTIFY 0x00000100L
+#endif
+#define SS_CENTERIMAGE 0x00000200L
+#if (WINVER >= 0x0400)
+#define SS_RIGHTJUST 0x00000400L
+#define SS_REALSIZEIMAGE 0x00000800L
+#define SS_SUNKEN 0x00001000L
+#endif
+
+#define BS_PUSHBUTTON 0x00000000L
+#define BS_DEFPUSHBUTTON 0x00000001L
+#define BS_CHECKBOX 0x00000002L
+#define BS_AUTOCHECKBOX 0x00000003L
+#define BS_RADIOBUTTON 0x00000004L
+#define BS_3STATE 0x00000005L
+#define BS_AUTO3STATE 0x00000006L
+#define BS_GROUPBOX 0x00000007L
+#define BS_USERBUTTON 0x00000008L
+#define BS_AUTORADIOBUTTON 0x00000009L
+#define BS_OWNERDRAW 0x0000000BL
+#define BS_LEFTTEXT 0x00000020L
+#if (WINVER >= 0x0400)
+#define BS_TEXT 0x00000000L
+#define BS_ICON 0x00000040L
+#define BS_BITMAP 0x00000080L
+#define BS_LEFT 0x00000100L
+#define BS_RIGHT 0x00000200L
+#define BS_CENTER 0x00000300L
+#define BS_TOP 0x00000400L
+#define BS_BOTTOM 0x00000800L
+#define BS_VCENTER 0x00000C00L
+#define BS_PUSHLIKE 0x00001000L
+#define BS_MULTILINE 0x00002000L
+#define BS_NOTIFY 0x00004000L
+#define BS_FLAT 0x00008000L
+#define BS_RIGHTBUTTON BS_LEFTTEXT
+#endif
+
+#define ES_LEFT 0x00000000L
+#define ES_CENTER 0x00000001L
+#define ES_RIGHT 0x00000002L
+#define ES_MULTILINE 0x00000004L
+#define ES_UPPERCASE 0x00000008L
+#define ES_LOWERCASE 0x00000010L
+#define ES_PASSWORD 0x00000020L
+#define ES_AUTOVSCROLL 0x00000040L
+#define ES_AUTOHSCROLL 0x00000080L
+#define ES_NOHIDESEL 0x00000100L
+#define ES_OEMCONVERT 0x00000400L
+#define ES_READONLY 0x00000800L
+#define ES_WANTRETURN 0x00001000L
+#if (WINVER >= 0x0400)
+#define ES_NUMBER 0x2000L
+#endif
+
+#define SBS_HORZ 0x0000L
+#define SBS_VERT 0x0001L
+#define SBS_TOPALIGN 0x0002L
+#define SBS_LEFTALIGN 0x0002L
+#define SBS_BOTTOMALIGN 0x0004L
+#define SBS_RIGHTALIGN 0x0004L
+#define SBS_SIZEBOXTOPLEFTALIGN 0x0002L
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
+#define SBS_SIZEBOX 0x0008L
+#if (WINVER >= 0x0400)
+#define SBS_SIZEGRIP 0x0010L
+#endif
+
+#define LBS_NOTIFY 0x0001L
+#define LBS_SORT 0x0002L
+#define LBS_NOREDRAW 0x0004L
+#define LBS_MULTIPLESEL 0x0008L
+#define LBS_OWNERDRAWFIXED 0x0010L
+#define LBS_OWNERDRAWVARIABLE 0x0020L
+#define LBS_HASSTRINGS 0x0040L
+#define LBS_USETABSTOPS 0x0080L
+#define LBS_NOINTEGRALHEIGHT 0x0100L
+#define LBS_MULTICOLUMN 0x0200L
+#define LBS_WANTKEYBOARDINPUT 0x0400L
+#define LBS_EXTENDEDSEL 0x0800L
+#define LBS_DISABLENOSCROLL 0x1000L
+#if (WINVER >= 0x0400)
+#define LBS_NOSEL 0x4000L
+#endif
+#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
+
+#define CBS_SIMPLE 0x0001L
+#define CBS_DROPDOWN 0x0002L
+#define CBS_DROPDOWNLIST 0x0003L
+#define CBS_OWNERDRAWFIXED 0x0010L
+#define CBS_OWNERDRAWVARIABLE 0x0020L
+#define CBS_AUTOHSCROLL 0x0040L
+#define CBS_OEMCONVERT 0x0080L
+#define CBS_SORT 0x0100L
+#define CBS_HASSTRINGS 0x0200L
+#define CBS_NOINTEGRALHEIGHT 0x0400L
+#define CBS_DISABLENOSCROLL 0x0800L
+#if (WINVER >= 0x0400)
+#define CBS_UPPERCASE 0x2000L
+#define CBS_LOWERCASE 0x4000L
+#endif
+
+// operation messages sent to DLGINIT
+#define WM_USER 0x0400
+#define LB_ADDSTRING (WM_USER+1)
+#define CB_ADDSTRING (WM_USER+3)
+
+#if (WINVER >= 0x0400)
+
+#define HDS_HORZ 0x00000000
+#define HDS_BUTTONS 0x00000002
+#define HDS_HIDDEN 0x00000008
+
+#define TTS_ALWAYSTIP 0x01
+#define TTS_NOPREFIX 0x02
+
+#define SBARS_SIZEGRIP 0x0100
+
+#define TBS_AUTOTICKS 0x0001
+#define TBS_VERT 0x0002
+#define TBS_HORZ 0x0000
+#define TBS_TOP 0x0004
+#define TBS_BOTTOM 0x0000
+#define TBS_LEFT 0x0004
+#define TBS_RIGHT 0x0000
+#define TBS_BOTH 0x0008
+#define TBS_NOTICKS 0x0010
+#define TBS_ENABLESELRANGE 0x0020
+#define TBS_FIXEDLENGTH 0x0040
+#define TBS_NOTHUMB 0x0080
+
+#define UDS_WRAP 0x0001
+#define UDS_SETBUDDYINT 0x0002
+#define UDS_ALIGNRIGHT 0x0004
+#define UDS_ALIGNLEFT 0x0008
+#define UDS_AUTOBUDDY 0x0010
+#define UDS_ARROWKEYS 0x0020
+#define UDS_HORZ 0x0040
+#define UDS_NOTHOUSANDS 0x0080
+
+#define CCS_TOP 0x00000001L
+#define CCS_NOMOVEY 0x00000002L
+#define CCS_BOTTOM 0x00000003L
+#define CCS_NORESIZE 0x00000004L
+#define CCS_NOPARENTALIGN 0x00000008L
+#define CCS_NOHILITE 0x00000010L
+#define CCS_ADJUSTABLE 0x00000020L
+#define CCS_NODIVIDER 0x00000040L
+
+#define LVS_ICON 0x0000
+#define LVS_REPORT 0x0001
+#define LVS_SMALLICON 0x0002
+#define LVS_LIST 0x0003
+#define LVS_TYPEMASK 0x0003
+#define LVS_SINGLESEL 0x0004
+#define LVS_SHOWSELALWAYS 0x0008
+#define LVS_SORTASCENDING 0x0010
+#define LVS_SORTDESCENDING 0x0020
+#define LVS_SHAREIMAGELISTS 0x0040
+#define LVS_NOLABELWRAP 0x0080
+#define LVS_AUTOARRANGE 0x0100
+#define LVS_EDITLABELS 0x0200
+#define LVS_NOSCROLL 0x2000
+
+#define LVS_ALIGNTOP 0x0000
+#define LVS_ALIGNLEFT 0x0800
+#define LVS_ALIGNMASK 0x0c00
+
+#define LVS_OWNERDRAWFIXED 0x0400
+#define LVS_NOCOLUMNHEADER 0x4000
+#define LVS_NOSORTHEADER 0x8000
+
+#define TVS_HASBUTTONS 0x0001
+#define TVS_HASLINES 0x0002
+#define TVS_LINESATROOT 0x0004
+#define TVS_EDITLABELS 0x0008
+#define TVS_DISABLEDRAGDROP 0x0010
+#define TVS_SHOWSELALWAYS 0x0020
+
+#define TCS_FORCEICONLEFT 0x0010
+#define TCS_FORCELABELLEFT 0x0020
+#define TCS_SHAREIMAGELISTS 0x0040
+#define TCS_TABS 0x0000
+#define TCS_BUTTONS 0x0100
+#define TCS_SINGLELINE 0x0000
+#define TCS_MULTILINE 0x0200
+#define TCS_RIGHTJUSTIFY 0x0000
+#define TCS_FIXEDWIDTH 0x0400
+#define TCS_RAGGEDRIGHT 0x0800
+#define TCS_FOCUSONBUTTONDOWN 0x1000
+#define TCS_OWNERDRAWFIXED 0x2000
+#define TCS_TOOLTIPS 0x4000
+#define TCS_FOCUSNEVER 0x8000
+
+#define ACS_CENTER 0x0001
+#define ACS_TRANSPARENT 0x0002
+#define ACS_AUTOPLAY 0x0004
+
+#endif // (WINVER >= 0x0400)
+
+// 32-bit language/sub-language identifiers
+
+#ifndef LANG_NEUTRAL
+// Primary language IDs.
+#define LANG_NEUTRAL 0x00
+
+#define LANG_BULGARIAN 0x02
+#define LANG_CHINESE 0x04
+#define LANG_CROATIAN 0x1a
+#define LANG_CZECH 0x05
+#define LANG_DANISH 0x06
+#define LANG_DUTCH 0x13
+#define LANG_ENGLISH 0x09
+#define LANG_FINNISH 0x0b
+#define LANG_FRENCH 0x0c
+#define LANG_GERMAN 0x07
+#define LANG_GREEK 0x08
+#define LANG_HUNGARIAN 0x0e
+#define LANG_ICELANDIC 0x0f
+#define LANG_ITALIAN 0x10
+#define LANG_JAPANESE 0x11
+#define LANG_KOREAN 0x12
+#define LANG_NORWEGIAN 0x14
+#define LANG_POLISH 0x15
+#define LANG_PORTUGUESE 0x16
+#define LANG_ROMANIAN 0x18
+#define LANG_RUSSIAN 0x19
+#define LANG_SLOVAK 0x1b
+#define LANG_SLOVENIAN 0x24
+#define LANG_SPANISH 0x0a
+#define LANG_SWEDISH 0x1d
+#define LANG_TURKISH 0x1f
+#endif //!LANG_NEUTRAL
+
+#ifndef SUBLANG_NEUTRAL
+// Sublanguage IDs.
+#define SUBLANG_NEUTRAL 0x00
+#define SUBLANG_DEFAULT 0x01
+#define SUBLANG_SYS_DEFAULT 0x02
+
+#define SUBLANG_CHINESE_TRADITIONAL 0x01
+#define SUBLANG_CHINESE_SIMPLIFIED 0x02
+#define SUBLANG_CHINESE_HONGKONG 0x03
+#define SUBLANG_CHINESE_SINGAPORE 0x04
+#define SUBLANG_DUTCH 0x01
+#define SUBLANG_DUTCH_BELGIAN 0x02
+#define SUBLANG_ENGLISH_US 0x01
+#define SUBLANG_ENGLISH_UK 0x02
+#define SUBLANG_ENGLISH_AUS 0x03
+#define SUBLANG_ENGLISH_CAN 0x04
+#define SUBLANG_ENGLISH_NZ 0x05
+#define SUBLANG_ENGLISH_EIRE 0x06
+#define SUBLANG_FRENCH 0x01
+#define SUBLANG_FRENCH_BELGIAN 0x02
+#define SUBLANG_FRENCH_CANADIAN 0x03
+#define SUBLANG_FRENCH_SWISS 0x04
+#define SUBLANG_GERMAN 0x01
+#define SUBLANG_GERMAN_SWISS 0x02
+#define SUBLANG_GERMAN_AUSTRIAN 0x03
+#define SUBLANG_ITALIAN 0x01
+#define SUBLANG_ITALIAN_SWISS 0x02
+#define SUBLANG_NORWEGIAN_BOKMAL 0x01
+#define SUBLANG_NORWEGIAN_NYNORSK 0x02
+#define SUBLANG_PORTUGUESE 0x02
+#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
+#define SUBLANG_SPANISH 0x01
+#define SUBLANG_SPANISH_MEXICAN 0x02
+#define SUBLANG_SPANISH_MODERN 0x03
+#endif //!SUBLANG_NEUTRAL
+
+#ifdef APSTUDIO_INVOKED
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+#define IDOK 1
+#define IDCANCEL 2
+#define IDABORT 3
+#define IDRETRY 4
+#define IDIGNORE 5
+#define IDYES 6
+#define IDNO 7
+#if (WINVER >= 0x0400)
+#define IDCLOSE 8
+#define IDHELP 9
+#endif
+
+#ifdef IDC_STATIC
+#undef IDC_STATIC
+#endif
+#define IDC_STATIC (-1)
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
diff --git a/public/sdk/inc/mfc42/afx.h b/public/sdk/inc/mfc42/afx.h
new file mode 100644
index 000000000..bcbf102f1
--- /dev/null
+++ b/public/sdk/inc/mfc42/afx.h
@@ -0,0 +1,1916 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFX_H__
+#define __AFX_H__
+
+#ifndef __cplusplus
+ #error MFC requires C++ compilation (use a .cpp suffix)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#include <afxver_.h> // Target version control
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifndef _AFXDLL
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "nafxcwd.lib")
+ #else
+ #pragma comment(lib, "nafxcw.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "uafxcwd.lib")
+ #else
+ #pragma comment(lib, "uafxcw.lib")
+ #endif
+ #endif
+#else
+ #ifndef _UNICODE
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfc42d.lib")
+ #pragma comment(lib, "mfcs42d.lib")
+ #else
+ #pragma comment(lib, "mfc42.lib")
+ #pragma comment(lib, "mfcs42.lib")
+ #endif
+ #else
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfc42ud.lib")
+ #pragma comment(lib, "mfcs42ud.lib")
+ #else
+ #pragma comment(lib, "mfc42u.lib")
+ #pragma comment(lib, "mfcs42u.lib")
+ #endif
+ #endif
+#endif
+
+#ifdef _DLL
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "msvcrtd.lib")
+ #else
+ #pragma comment(lib, "msvcrt.lib")
+ #endif
+#else
+#ifdef _MT
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "libcmtd.lib")
+ #else
+ #pragma comment(lib, "libcmt.lib")
+ #endif
+#else
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "libcd.lib")
+ #else
+ #pragma comment(lib, "libc.lib")
+ #endif
+#endif
+#endif
+
+#pragma comment(lib, "kernel32.lib")
+#pragma comment(lib, "user32.lib")
+#pragma comment(lib, "gdi32.lib")
+#pragma comment(lib, "comdlg32.lib")
+#pragma comment(lib, "winspool.lib")
+#pragma comment(lib, "advapi32.lib")
+#pragma comment(lib, "shell32.lib")
+#pragma comment(lib, "comctl32.lib")
+
+#else //!_MAC
+
+//////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#ifndef _AFXDLL
+ #ifdef _DEBUG
+ #ifdef _68K_
+ #pragma comment(lib, "nafxcmd.lib")
+ #else
+ #pragma comment(lib, "nafxcpd.lib")
+ #endif
+ #else
+ #ifdef _68K_
+ #pragma comment(lib, "nafxcm.lib")
+ #else
+ #pragma comment(lib, "nafxcp.lib")
+ #endif
+ #endif
+#else
+ #ifdef _DEBUG
+ #ifdef _68K_
+ #error _AFXDLL is not supported for 68K Macintosh
+ #else
+ #pragma comment(lib, "mfc42pd.lib")
+ #pragma comment(lib, "mfcs42pd.lib")
+ #endif
+ #else
+ #ifdef _68K_
+ #error _AFXDLL is not supported for 68K Macintosh
+ #else
+ #pragma comment(lib, "mfc42p.lib")
+ #pragma comment(lib, "mfcs42p.lib")
+ #endif
+ #endif
+#endif
+
+#if !defined(_AFXDLL) && !defined(_USRDLL)
+ #ifdef _DEBUG
+ #pragma comment(lib, "wlmd.lib")
+ #pragma comment(lib, "comctld.lib")
+ #else
+ #pragma comment(lib, "wlm.lib")
+ #pragma comment(lib, "comctl.lib")
+ #endif
+ #pragma comment(linker, "/macres:wlm.rsc /macres:commdlg.rsc")
+ #pragma comment(linker, "/macres:comctl.rsc")
+ #ifdef _MPPC_
+ #pragma comment(lib, "privint.lib")
+ #pragma comment(lib, "threads.lib")
+ #pragma comment(lib, "math.lib")
+ #endif
+#else
+ #ifdef _DEBUG
+ #pragma comment(lib, "msvcwlmd.lib")
+ #pragma comment(lib, "msvcctld.lib")
+ #else
+ #pragma comment(lib, "msvcwlm.lib")
+ #pragma comment(lib, "msvcctl.lib")
+ #endif
+#endif
+
+#ifdef _68K_
+ #ifdef _DEBUG
+ #pragma comment(lib, "swapd.lib")
+ #else
+ #pragma comment(lib, "swap.lib")
+ #endif
+ #pragma comment(lib, "lsanes.lib")
+ #pragma comment(lib, "llibcs.lib")
+ #pragma comment(lib, "osl.lib")
+#endif
+
+#ifdef _MPPC_
+ #ifdef _DLL
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "msvcrtd.lib")
+ #else
+ #pragma comment(lib, "msvcrt.lib")
+ #endif
+ #else
+ #if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
+ #pragma comment(lib, "libcd.lib")
+ #else
+ #pragma comment(lib, "libc.lib")
+ #endif
+ #endif
+#endif
+
+#endif //_MAC
+
+// force inclusion of NOLIB.OBJ for /disallowlib directives
+#pragma comment(linker, "/include:__afxForceEXCLUDE")
+
+// force inclusion of DLLMODUL.OBJ for _USRDLL
+#ifdef _USRDLL
+#pragma comment(linker, "/include:__afxForceUSRDLL")
+#endif
+
+// force inclusion of STDAFX.OBJ for precompiled types
+#ifdef _AFXDLL
+#pragma comment(linker, "/include:__afxForceSTDAFX")
+#endif
+
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+// in addition to standard primitive data types and various helper macros
+
+struct CRuntimeClass; // object type information
+
+class CObject; // the root of all objects classes
+
+ class CException; // the root of all exceptions
+ class CArchiveException; // archive exception
+ class CFileException; // file exception
+ class CSimpleException;
+ class CMemoryException; // out-of-memory exception
+ class CNotSupportedException; // feature not supported exception
+
+ class CFile; // raw binary file
+ class CStdioFile; // buffered stdio text/binary file
+ class CMemFile; // memory based file
+
+// Non CObject classes
+class CString; // growable string type
+class CTimeSpan; // time/date difference
+class CTime; // absolute time/date
+struct CFileStatus; // file status information
+struct CMemoryState; // diagnostic memory support
+
+class CArchive; // object persistence tool
+class CDumpContext; // object diagnostic dumping
+
+/////////////////////////////////////////////////////////////////////////////
+// Other includes from standard "C" runtimes
+
+#ifndef _INC_STRING
+ #include <string.h>
+#endif
+#ifndef _INC_STDIO
+ #include <stdio.h>
+#endif
+#ifndef _INC_STDLIB
+ #include <stdlib.h>
+#endif
+#ifndef _INC_TIME
+ #include <time.h>
+#endif
+#ifndef _INC_LIMITS
+ #include <limits.h>
+#endif
+#ifndef _INC_STDDEF
+ #include <stddef.h>
+#endif
+#ifndef _INC_STDARG
+ #include <stdarg.h>
+#endif
+
+#ifndef _AFX_NO_DEBUG_CRT
+#ifndef _INC_CRTDBG
+ #include <crtdbg.h>
+#endif
+#endif // _AFX_NO_DEBUG_CRT
+
+#ifdef _AFX_OLD_EXCEPTIONS
+// use setjmp and helper functions instead of C++ keywords
+#ifndef _INC_SETJMP
+ #pragma warning(disable: 4611)
+ #include <setjmp.h>
+#endif
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic types
+
+// abstract iteration position
+struct __POSITION { };
+typedef __POSITION* POSITION;
+
+struct _AFX_DOUBLE { BYTE doubleBits[sizeof(double)]; };
+struct _AFX_FLOAT { BYTE floatBits[sizeof(float)]; };
+
+// Standard constants
+#undef FALSE
+#undef TRUE
+#undef NULL
+
+#define FALSE 0
+#define TRUE 1
+#define NULL 0
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic support
+
+#ifdef _DEBUG
+
+BOOL AFXAPI AfxAssertFailedLine(LPCSTR lpszFileName, int nLine);
+
+void AFX_CDECL AfxTrace(LPCTSTR lpszFormat, ...);
+// Note: file names are still ANSI strings (filenames rarely need UNICODE)
+void AFXAPI AfxAssertValidObject(const CObject* pOb,
+ LPCSTR lpszFileName, int nLine);
+void AFXAPI AfxDump(const CObject* pOb); // Dump an object from CodeView
+
+#define TRACE ::AfxTrace
+#define THIS_FILE __FILE__
+#define ASSERT(f) \
+ do \
+ { \
+ if (!(f) && AfxAssertFailedLine(THIS_FILE, __LINE__)) \
+ AfxDebugBreak(); \
+ } while (0) \
+
+#define VERIFY(f) ASSERT(f)
+#define ASSERT_VALID(pOb) (::AfxAssertValidObject(pOb, THIS_FILE, __LINE__))
+#define DEBUG_ONLY(f) (f)
+
+// The following trace macros are provided for backward compatiblity
+// (they also take a fixed number of parameters which provides
+// some amount of extra error checking)
+#define TRACE0(sz) ::AfxTrace(_T("%s"), _T(sz))
+#define TRACE1(sz, p1) ::AfxTrace(_T(sz), p1)
+#define TRACE2(sz, p1, p2) ::AfxTrace(_T(sz), p1, p2)
+#define TRACE3(sz, p1, p2, p3) ::AfxTrace(_T(sz), p1, p2, p3)
+
+// These AFX_DUMP macros also provided for backward compatibility
+#define AFX_DUMP0(dc, sz) dc << _T(sz)
+#define AFX_DUMP1(dc, sz, p1) dc << _T(sz) << p1
+
+#else // _DEBUG
+
+#define ASSERT(f) ((void)0)
+#define VERIFY(f) ((void)(f))
+#define ASSERT_VALID(pOb) ((void)0)
+#define DEBUG_ONLY(f) ((void)0)
+inline void AFX_CDECL AfxTrace(LPCTSTR, ...) { }
+#define TRACE 1 ? (void)0 : ::AfxTrace
+#define TRACE0(sz)
+#define TRACE1(sz, p1)
+#define TRACE2(sz, p1, p2)
+#define TRACE3(sz, p1, p2, p3)
+
+#endif // !_DEBUG
+
+#define ASSERT_POINTER(p, type) \
+ ASSERT(((p) != NULL) && AfxIsValidAddress((p), sizeof(type), FALSE))
+
+#define ASSERT_NULL_OR_POINTER(p, type) \
+ ASSERT(((p) == NULL) || AfxIsValidAddress((p), sizeof(type), FALSE))
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+#ifndef ALL_WARNINGS
+// warnings generated with common MFC/Windows code
+#pragma warning(disable: 4127) // constant expression for TRACE/ASSERT
+#pragma warning(disable: 4134) // message map member fxn casts
+#pragma warning(disable: 4201) // nameless unions are part of C++
+#pragma warning(disable: 4511) // private copy constructors are good to have
+#pragma warning(disable: 4512) // private operator= are good to have
+#pragma warning(disable: 4514) // unreferenced inlines are common
+#pragma warning(disable: 4710) // private constructors are disallowed
+#pragma warning(disable: 4705) // statement has no effect in optimized code
+// warnings caused by normal optimizations
+#ifndef _DEBUG
+#pragma warning(disable: 4701) // local variable *may* be used without init
+#pragma warning(disable: 4702) // unreachable code caused by optimizations
+#pragma warning(disable: 4791) // loss of debugging info in release version
+#endif
+// warnings specific to _AFXDLL version
+#ifdef _AFXDLL
+#pragma warning(disable: 4204) // non-constant aggregate initializer
+#endif
+#ifdef _AFXDLL
+#pragma warning(disable: 4275) // deriving exported class from non-exported
+#pragma warning(disable: 4251) // using non-exported as public in exported
+#endif
+#endif //!ALL_WARNINGS
+
+#ifdef _DEBUG
+#define UNUSED(x)
+#else
+#define UNUSED(x) x
+#endif
+#define UNUSED_ALWAYS(x) x
+
+/////////////////////////////////////////////////////////////////////////////
+// Other implementation helpers
+
+#define BEFORE_START_POSITION ((POSITION)-1L)
+
+/////////////////////////////////////////////////////////////////////////////
+// explicit initialization for general purpose classes
+
+BOOL AFXAPI AfxInitialize(BOOL bDLL = FALSE, DWORD dwVersion = _MFC_VER);
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic object model
+
+struct CRuntimeClass
+{
+// Attributes
+ LPCSTR m_lpszClassName;
+ int m_nObjectSize;
+ UINT m_wSchema; // schema number of the loaded class
+ CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
+#ifdef _AFXDLL
+ CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
+#else
+ CRuntimeClass* m_pBaseClass;
+#endif
+
+// Operations
+ CObject* CreateObject();
+ BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;
+
+// Implementation
+ void Store(CArchive& ar) const;
+ static CRuntimeClass* PASCAL Load(CArchive& ar, UINT* pwSchemaNum);
+
+ // CRuntimeClass objects linked together in simple list
+ CRuntimeClass* m_pNextClass; // linked list of registered classes
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+#ifndef _OLEAUTO_H_
+#ifdef OLE2ANSI
+ typedef LPSTR BSTR;
+#else
+ typedef LPWSTR BSTR;// must (semantically) match typedef in oleauto.h
+#endif
+#endif
+
+struct CStringData
+{
+ long nRefs; // reference count
+ int nDataLength;
+ int nAllocLength;
+ // TCHAR data[nAllocLength]
+
+ TCHAR* data()
+ { return (TCHAR*)(this+1); }
+};
+
+class CString
+{
+public:
+// Constructors
+ CString();
+ CString(const CString& stringSrc);
+ CString(TCHAR ch, int nRepeat = 1);
+ CString(LPCSTR lpsz);
+ CString(LPCWSTR lpsz);
+ CString(LPCTSTR lpch, int nLength);
+ CString(const unsigned char* psz);
+
+// Attributes & Operations
+ // as an array of characters
+ int GetLength() const;
+ BOOL IsEmpty() const;
+ void Empty(); // free up the data
+
+ TCHAR GetAt(int nIndex) const; // 0 based
+ TCHAR operator[](int nIndex) const; // same as GetAt
+ void SetAt(int nIndex, TCHAR ch);
+ operator LPCTSTR() const; // as a C string
+
+ // overloaded assignment
+ const CString& operator=(const CString& stringSrc);
+ const CString& operator=(TCHAR ch);
+#ifdef _UNICODE
+ const CString& operator=(char ch);
+#endif
+ const CString& operator=(LPCSTR lpsz);
+ const CString& operator=(LPCWSTR lpsz);
+ const CString& operator=(const unsigned char* psz);
+
+ // string concatenation
+ const CString& operator+=(const CString& string);
+ const CString& operator+=(TCHAR ch);
+#ifdef _UNICODE
+ const CString& operator+=(char ch);
+#endif
+ const CString& operator+=(LPCTSTR lpsz);
+
+ friend CString AFXAPI operator+(const CString& string1,
+ const CString& string2);
+ friend CString AFXAPI operator+(const CString& string, TCHAR ch);
+ friend CString AFXAPI operator+(TCHAR ch, const CString& string);
+#ifdef _UNICODE
+ friend CString AFXAPI operator+(const CString& string, char ch);
+ friend CString AFXAPI operator+(char ch, const CString& string);
+#endif
+ friend CString AFXAPI operator+(const CString& string, LPCTSTR lpsz);
+ friend CString AFXAPI operator+(LPCTSTR lpsz, const CString& string);
+
+ // string comparison
+ int Compare(LPCTSTR lpsz) const; // straight character
+ int CompareNoCase(LPCTSTR lpsz) const; // ignore case
+ int Collate(LPCTSTR lpsz) const; // NLS aware
+
+ // simple sub-string extraction
+ CString Mid(int nFirst, int nCount) const;
+ CString Mid(int nFirst) const;
+ CString Left(int nCount) const;
+ CString Right(int nCount) const;
+
+ CString SpanIncluding(LPCTSTR lpszCharSet) const;
+ CString SpanExcluding(LPCTSTR lpszCharSet) const;
+
+ // upper/lower/reverse conversion
+ void MakeUpper();
+ void MakeLower();
+ void MakeReverse();
+
+ // trimming whitespace (either side)
+ void TrimRight();
+ void TrimLeft();
+
+ // searching (return starting index, or -1 if not found)
+ // look for a single character match
+ int Find(TCHAR ch) const; // like "C" strchr
+ int ReverseFind(TCHAR ch) const;
+ int FindOneOf(LPCTSTR lpszCharSet) const;
+
+ // look for a specific sub-string
+ int Find(LPCTSTR lpszSub) const; // like "C" strstr
+
+ // simple formatting
+ void AFX_CDECL Format(LPCTSTR lpszFormat, ...);
+ void AFX_CDECL Format(UINT nFormatID, ...);
+
+#ifndef _MAC
+ // formatting for localization (uses FormatMessage API)
+ void AFX_CDECL FormatMessage(LPCTSTR lpszFormat, ...);
+ void AFX_CDECL FormatMessage(UINT nFormatID, ...);
+#endif
+
+ // input and output
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc,
+ const CString& string);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, const CString& string);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CString& string);
+
+ // Windows support
+ BOOL LoadString(UINT nID); // load from string resource
+ // 255 chars max
+#ifndef _UNICODE
+ // ANSI <-> OEM support (convert string in place)
+ void AnsiToOem();
+ void OemToAnsi();
+#endif
+
+#ifndef _AFX_NO_BSTR_SUPPORT
+ // OLE BSTR support (use for OLE automation)
+ BSTR AllocSysString() const;
+ BSTR SetSysString(BSTR* pbstr) const;
+#endif
+
+ // Access to string implementation buffer as "C" character array
+ LPTSTR GetBuffer(int nMinBufLength);
+ void ReleaseBuffer(int nNewLength = -1);
+ LPTSTR GetBufferSetLength(int nNewLength);
+ void FreeExtra();
+
+ // Use LockBuffer/UnlockBuffer to turn refcounting off
+ LPTSTR LockBuffer();
+ void UnlockBuffer();
+
+// Implementation
+public:
+ ~CString();
+ int GetAllocLength() const;
+
+protected:
+ LPTSTR m_pchData; // pointer to ref counted string data
+
+ // implementation helpers
+ CStringData* GetData() const;
+ void Init();
+ void AllocCopy(CString& dest, int nCopyLen, int nCopyIndex, int nExtraLen) const;
+ void AllocBuffer(int nLen);
+ void AssignCopy(int nSrcLen, LPCTSTR lpszSrcData);
+ void ConcatCopy(int nSrc1Len, LPCTSTR lpszSrc1Data, int nSrc2Len, LPCTSTR lpszSrc2Data);
+ void ConcatInPlace(int nSrcLen, LPCTSTR lpszSrcData);
+ void FormatV(LPCTSTR lpszFormat, va_list argList);
+ void CopyBeforeWrite();
+ void AllocBeforeWrite(int nLen);
+ void Release();
+ static void PASCAL Release(CStringData* pData);
+ static int PASCAL SafeStrlen(LPCTSTR lpsz);
+};
+
+// Compare helpers
+BOOL AFXAPI operator==(const CString& s1, const CString& s2);
+BOOL AFXAPI operator==(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator==(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator!=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator!=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator!=(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator<(const CString& s1, const CString& s2);
+BOOL AFXAPI operator<(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator<(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator>(const CString& s1, const CString& s2);
+BOOL AFXAPI operator>(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator>(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator<=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator<=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator<=(LPCTSTR s1, const CString& s2);
+BOOL AFXAPI operator>=(const CString& s1, const CString& s2);
+BOOL AFXAPI operator>=(const CString& s1, LPCTSTR s2);
+BOOL AFXAPI operator>=(LPCTSTR s1, const CString& s2);
+
+// conversion helpers
+int AFX_CDECL _wcstombsz(char* mbstr, const wchar_t* wcstr, size_t count);
+int AFX_CDECL _mbstowcsz(wchar_t* wcstr, const char* mbstr, size_t count);
+
+// Globals
+extern AFX_DATA TCHAR afxChNil;
+const CString& AFXAPI AfxGetEmptyString();
+#define afxEmptyString AfxGetEmptyString()
+
+/////////////////////////////////////////////////////////////////////////////
+// class CObject is the root of all compliant objects
+
+class CObject
+{
+public:
+
+// Object model (types, destruction, allocation)
+ virtual CRuntimeClass* GetRuntimeClass() const;
+ virtual ~CObject(); // virtual destructors are necessary
+
+ // Diagnostic allocations
+ void* PASCAL operator new(size_t nSize);
+ void* PASCAL operator new(size_t, void* p);
+ void PASCAL operator delete(void* p);
+
+#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
+ // for file name/line number tracking using DEBUG_NEW
+ void* PASCAL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
+#endif
+
+ // Disable the copy constructor and assignment by default so you will get
+ // compiler errors instead of unexpected behaviour if you pass objects
+ // by value or assign objects.
+protected:
+ CObject();
+private:
+ CObject(const CObject& objectSrc); // no implementation
+ void operator=(const CObject& objectSrc); // no implementation
+
+// Attributes
+public:
+ BOOL IsSerializable() const;
+ BOOL IsKindOf(const CRuntimeClass* pClass) const;
+
+// Overridables
+ virtual void Serialize(CArchive& ar);
+
+ // Diagnostic Support
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+
+// Implementation
+public:
+ static const AFX_DATA CRuntimeClass classCObject;
+#ifdef _AFXDLL
+ static CRuntimeClass* PASCAL _GetBaseClass();
+#endif
+};
+
+// Helper macros
+#define RUNTIME_CLASS(class_name) ((CRuntimeClass*)(&class_name::class##class_name))
+#define ASSERT_KINDOF(class_name, object) \
+ ASSERT((object)->IsKindOf(RUNTIME_CLASS(class_name)))
+
+// RTTI helper macros/functions
+const CObject* AFX_CDECL AfxDynamicDownCast(CRuntimeClass* pClass, const CObject* pObject);
+CObject* AFX_CDECL AfxDynamicDownCast(CRuntimeClass* pClass, CObject* pObject);
+#define DYNAMIC_DOWNCAST(class_name, object) \
+ (class_name*)AfxDynamicDownCast(RUNTIME_CLASS(class_name), object)
+
+#ifdef _DEBUG
+const CObject* AFX_CDECL AfxStaticDownCast(CRuntimeClass* pClass, const CObject* pObject);
+CObject* AFX_CDECL AfxStaticDownCast(CRuntimeClass* pClass, CObject* pObject);
+#define STATIC_DOWNCAST(class_name, object) \
+ ((class_name*)AfxStaticDownCast(RUNTIME_CLASS(class_name), object))
+#else
+#define STATIC_DOWNCAST(class_name, object) ((class_name*)object)
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// Helper macros for declaring CRuntimeClass compatible classes
+
+#ifdef _AFXDLL
+#define DECLARE_DYNAMIC(class_name) \
+protected: \
+ static CRuntimeClass* PASCAL _GetBaseClass(); \
+public: \
+ static const AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#define _DECLARE_DYNAMIC(class_name) \
+protected: \
+ static CRuntimeClass* PASCAL _GetBaseClass(); \
+public: \
+ static AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#else
+#define DECLARE_DYNAMIC(class_name) \
+public: \
+ static const AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#define _DECLARE_DYNAMIC(class_name) \
+public: \
+ static AFX_DATA CRuntimeClass class##class_name; \
+ virtual CRuntimeClass* GetRuntimeClass() const; \
+
+#endif
+
+// not serializable, but dynamically constructable
+#define DECLARE_DYNCREATE(class_name) \
+ DECLARE_DYNAMIC(class_name) \
+ static CObject* PASCAL CreateObject();
+
+#define _DECLARE_DYNCREATE(class_name) \
+ _DECLARE_DYNAMIC(class_name) \
+ static CObject* PASCAL CreateObject();
+
+#define DECLARE_SERIAL(class_name) \
+ _DECLARE_DYNCREATE(class_name) \
+ friend CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb);
+
+// generate static object constructor for class registration
+struct AFX_CLASSINIT
+ { AFX_CLASSINIT(CRuntimeClass* pNewClass); };
+
+#ifdef _AFXDLL
+#define IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ CRuntimeClass* PASCAL class_name::_GetBaseClass() \
+ { return RUNTIME_CLASS(base_class_name); } \
+ const AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class class_name), wSchema, pfnNew, \
+ &class_name::_GetBaseClass, NULL }; \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return RUNTIME_CLASS(class_name); } \
+
+#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ CRuntimeClass* PASCAL class_name::_GetBaseClass() \
+ { return RUNTIME_CLASS(base_class_name); } \
+ AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class class_name), wSchema, pfnNew, \
+ &class_name::_GetBaseClass, NULL }; \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return RUNTIME_CLASS(class_name); } \
+
+#else
+#define IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ const AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class class_name), wSchema, pfnNew, \
+ RUNTIME_CLASS(base_class_name), NULL }; \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return RUNTIME_CLASS(class_name); } \
+
+#define _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, pfnNew) \
+ AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
+ #class_name, sizeof(class class_name), wSchema, pfnNew, \
+ RUNTIME_CLASS(base_class_name), NULL }; \
+ CRuntimeClass* class_name::GetRuntimeClass() const \
+ { return RUNTIME_CLASS(class_name); } \
+
+#endif
+
+#define IMPLEMENT_DYNAMIC(class_name, base_class_name) \
+ IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, NULL)
+
+#define IMPLEMENT_DYNCREATE(class_name, base_class_name) \
+ CObject* PASCAL class_name::CreateObject() \
+ { return new class_name; } \
+ IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, \
+ class_name::CreateObject)
+
+#define IMPLEMENT_SERIAL(class_name, base_class_name, wSchema) \
+ CObject* PASCAL class_name::CreateObject() \
+ { return new class_name; } \
+ _IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, wSchema, \
+ class_name::CreateObject) \
+ static const AFX_CLASSINIT _init_##class_name(RUNTIME_CLASS(class_name)); \
+ CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb) \
+ { pOb = (class_name*) ar.ReadObject(RUNTIME_CLASS(class_name)); \
+ return ar; } \
+
+// optional bit for schema number that enables object versioning
+#define VERSIONABLE_SCHEMA (0x80000000)
+
+/////////////////////////////////////////////////////////////////////////////
+// other helpers
+
+// zero fill everything after the vtbl pointer
+#define AFX_ZERO_INIT_OBJECT(base_class) \
+ memset(((base_class*)this)+1, 0, sizeof(*this) - sizeof(class base_class));
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Exceptions
+
+class CException : public CObject
+{
+ // abstract class for dynamic type checking
+ DECLARE_DYNAMIC(CException)
+
+public:
+// Constructors
+ CException(); // sets m_bAutoDelete = TRUE
+ CException(BOOL bAutoDelete); // sets m_bAutoDelete = bAutoDelete
+
+// Operations
+ void Delete(); // use to delete exception in 'catch' block
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+ virtual int ReportError(UINT nType = MB_OK, UINT nMessageID = 0);
+
+// Implementation (setting m_bAutoDelete to FALSE is advanced)
+public:
+ virtual ~CException();
+ BOOL m_bAutoDelete;
+#ifdef _DEBUG
+ void PASCAL operator delete(void* p);
+protected:
+ BOOL m_bReadyForDelete;
+#endif
+};
+
+class CSimpleException : public CException
+{
+ // base class for resource-critical MFC exceptions
+ // handles ownership and initialization of an error message
+
+public:
+// Constructors
+ CSimpleException();
+ CSimpleException(BOOL bAutoDelete);
+
+// Operations
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+// Implementation (setting m_bAutoDelete to FALSE is advanced)
+public:
+ virtual ~CSimpleException();
+ BOOL m_bAutoDelete;
+
+ void InitString(); // used during MFC initialization
+
+protected:
+ BOOL m_bInitialized;
+ BOOL m_bLoaded;
+ TCHAR m_szMessage[128];
+ UINT m_nResourceID;
+
+#ifdef _DEBUG
+ BOOL m_bReadyForDelete;
+#endif
+};
+
+// helper routines for non-C++ EH implementations
+#ifdef _AFX_OLD_EXCEPTIONS
+ BOOL AFXAPI AfxCatchProc(CRuntimeClass* pClass);
+ void AFXAPI AfxThrow(CException* pException);
+#else
+ // for THROW_LAST auto-delete backward compatiblity
+ void AFXAPI AfxThrowLastCleanup();
+#endif
+
+// other out-of-line helper functions
+void AFXAPI AfxTryCleanup();
+
+#ifndef _AFX_JUMPBUF
+// Use portable 'jmp_buf' defined by ANSI by default.
+#define _AFX_JUMPBUF jmp_buf
+#endif
+
+// Placed on frame for EXCEPTION linkage, or CException cleanup
+struct AFX_EXCEPTION_LINK
+{
+#ifdef _AFX_OLD_EXCEPTIONS
+ union
+ {
+ _AFX_JUMPBUF m_jumpBuf;
+ struct
+ {
+ void (PASCAL* pfnCleanup)(AFX_EXCEPTION_LINK* pLink);
+ void* pvData; // extra data follows
+ } m_callback; // callback for cleanup (nType != 0)
+ };
+ UINT m_nType; // 0 for setjmp, !=0 for user extension
+#endif //!_AFX_OLD_EXCEPTIONS
+
+ AFX_EXCEPTION_LINK* m_pLinkPrev; // previous top, next in handler chain
+ CException* m_pException; // current exception (NULL in TRY block)
+
+ AFX_EXCEPTION_LINK(); // for initialization and linking
+ ~AFX_EXCEPTION_LINK() // for cleanup and unlinking
+ { AfxTryCleanup(); };
+};
+
+// Exception global state - never access directly
+struct AFX_EXCEPTION_CONTEXT
+{
+ AFX_EXCEPTION_LINK* m_pLinkTop;
+
+ // Note: most of the exception context is now in the AFX_EXCEPTION_LINK
+};
+
+#ifndef _PNH_DEFINED
+typedef int (__cdecl * _PNH)( size_t );
+#define _PNH_DEFINED
+#endif
+
+_PNH AFXAPI AfxGetNewHandler();
+_PNH AFXAPI AfxSetNewHandler(_PNH pfnNewHandler);
+int AFX_CDECL AfxNewHandler(size_t nSize);
+
+void AFXAPI AfxAbort();
+
+#ifdef _AFX_OLD_EXCEPTIONS
+
+// Obsolete and non-portable: setting terminate handler
+// use CWinApp::ProcessWndProcException for Windows apps instead
+// can also use set_terminate which is part of C++ standard library
+// (these are provided for backward compatibility)
+void AFXAPI AfxTerminate();
+typedef void (AFXAPI* AFX_TERM_PROC)();
+AFX_TERM_PROC AFXAPI AfxSetTerminate(AFX_TERM_PROC);
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Exception macros using try, catch and throw
+// (for backward compatibility to previous versions of MFC)
+
+#ifndef _AFX_OLD_EXCEPTIONS
+
+#define TRY { AFX_EXCEPTION_LINK _afxExceptionLink; try {
+
+#define CATCH(class, e) } catch (class* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(class))); \
+ _afxExceptionLink.m_pException = e;
+
+#define AND_CATCH(class, e) } catch (class* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(class))); \
+ _afxExceptionLink.m_pException = e;
+
+#define END_CATCH } }
+
+#define THROW(e) throw e
+#define THROW_LAST() (AfxThrowLastCleanup(), throw)
+
+// Advanced macros for smaller code
+#define CATCH_ALL(e) } catch (CException* e) \
+ { { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e;
+
+#define AND_CATCH_ALL(e) } catch (CException* e) \
+ { { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e;
+
+#define END_CATCH_ALL } } }
+
+#define END_TRY } catch (CException* e) \
+ { ASSERT(e->IsKindOf(RUNTIME_CLASS(CException))); \
+ _afxExceptionLink.m_pException = e; } }
+
+#else //_AFX_OLD_EXCEPTIONS
+
+/////////////////////////////////////////////////////////////////////////////
+// Exception macros using setjmp and longjmp
+// (for portability to compilers with no support for C++ exception handling)
+
+#define TRY \
+ { AFX_EXCEPTION_LINK _afxExceptionLink; \
+ if (::setjmp(_afxExceptionLink.m_jumpBuf) == 0)
+
+#define CATCH(class, e) \
+ else if (::AfxCatchProc(RUNTIME_CLASS(class))) \
+ { class* e = (class*)_afxExceptionLink.m_pException;
+
+#define AND_CATCH(class, e) \
+ } else if (::AfxCatchProc(RUNTIME_CLASS(class))) \
+ { class* e = (class*)_afxExceptionLink.m_pException;
+
+#define END_CATCH \
+ } else { ::AfxThrow(NULL); } }
+
+#define THROW(e) AfxThrow(e)
+#define THROW_LAST() AfxThrow(NULL)
+
+// Advanced macros for smaller code
+#define CATCH_ALL(e) \
+ else { CException* e = _afxExceptionLink.m_pException;
+
+#define AND_CATCH_ALL(e) \
+ } else { CException* e = _afxExceptionLink.m_pException;
+
+#define END_CATCH_ALL } }
+
+#define END_TRY }
+
+#endif //_AFX_OLD_EXCEPTIONS
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Exception classes
+
+class CMemoryException : public CSimpleException
+{
+ DECLARE_DYNAMIC(CMemoryException)
+public:
+ CMemoryException();
+
+// Implementation
+public:
+ CMemoryException(BOOL bAutoDelete);
+ CMemoryException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CMemoryException();
+};
+
+class CNotSupportedException : public CSimpleException
+{
+ DECLARE_DYNAMIC(CNotSupportedException)
+public:
+ CNotSupportedException();
+
+// Implementation
+public:
+ CNotSupportedException(BOOL bAutoDelete);
+ CNotSupportedException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CNotSupportedException();
+};
+
+class CArchiveException : public CException
+{
+ DECLARE_DYNAMIC(CArchiveException)
+public:
+ enum {
+ none,
+ generic,
+ readOnly,
+ endOfFile,
+ writeOnly,
+ badIndex,
+ badClass,
+ badSchema
+ };
+
+// Constructor
+ CArchiveException(int cause = CArchiveException::none,
+ LPCTSTR lpszArchiveName = NULL);
+
+// Attributes
+ int m_cause;
+ CString m_strFileName;
+
+// Implementation
+public:
+ virtual ~CArchiveException();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+};
+
+class CFileException : public CException
+{
+ DECLARE_DYNAMIC(CFileException)
+
+public:
+ enum {
+ none,
+ generic,
+ fileNotFound,
+ badPath,
+ tooManyOpenFiles,
+ accessDenied,
+ invalidFile,
+ removeCurrentDir,
+ directoryFull,
+ badSeek,
+ hardIO,
+ sharingViolation,
+ lockViolation,
+ diskFull,
+ endOfFile
+ };
+
+// Constructor
+ CFileException(int cause = CFileException::none, LONG lOsError = -1,
+ LPCTSTR lpszArchiveName = NULL);
+
+// Attributes
+ int m_cause;
+ LONG m_lOsError;
+ CString m_strFileName;
+
+// Operations
+ // convert a OS dependent error code to a Cause
+ static int PASCAL OsErrorToException(LONG lOsError);
+ static int PASCAL ErrnoToException(int nErrno);
+
+ // helper functions to throw exception after converting to a Cause
+ static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
+ static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
+
+// Implementation
+public:
+ virtual ~CFileException();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+#endif
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard exception throws
+
+void AFXAPI AfxThrowMemoryException();
+void AFXAPI AfxThrowNotSupportedException();
+void AFXAPI AfxThrowArchiveException(int cause,
+ LPCTSTR lpszArchiveName = NULL);
+void AFXAPI AfxThrowFileException(int cause, LONG lOsError = -1,
+ LPCTSTR lpszFileName = NULL);
+
+/////////////////////////////////////////////////////////////////////////////
+// File - raw unbuffered disk file I/O
+
+class CFile : public CObject
+{
+ DECLARE_DYNAMIC(CFile)
+
+public:
+// Flag values
+ enum OpenFlags {
+ modeRead = 0x0000,
+ modeWrite = 0x0001,
+ modeReadWrite = 0x0002,
+ shareCompat = 0x0000,
+ shareExclusive = 0x0010,
+ shareDenyWrite = 0x0020,
+ shareDenyRead = 0x0030,
+ shareDenyNone = 0x0040,
+ modeNoInherit = 0x0080,
+ modeCreate = 0x1000,
+ modeNoTruncate = 0x2000,
+ typeText = 0x4000, // typeText and typeBinary are used in
+ typeBinary = (int)0x8000 // derived classes only
+ };
+
+ enum Attribute {
+ normal = 0x00,
+ readOnly = 0x01,
+ hidden = 0x02,
+ system = 0x04,
+ volume = 0x08,
+ directory = 0x10,
+ archive = 0x20
+ };
+
+ enum SeekPosition { begin = 0x0, current = 0x1, end = 0x2 };
+
+ enum { hFileNull = -1 };
+
+// Constructors
+ CFile();
+ CFile(int hFile);
+ CFile(LPCTSTR lpszFileName, UINT nOpenFlags);
+
+// Attributes
+ UINT m_hFile;
+ operator HFILE() const;
+
+ virtual DWORD GetPosition() const;
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual CString GetFileName() const;
+ virtual CString GetFileTitle() const;
+ virtual CString GetFilePath() const;
+ virtual void SetFilePath(LPCTSTR lpszNewName);
+
+// Operations
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+
+ static void PASCAL Rename(LPCTSTR lpszOldName,
+ LPCTSTR lpszNewName);
+ static void PASCAL Remove(LPCTSTR lpszFileName);
+ static BOOL PASCAL GetStatus(LPCTSTR lpszFileName,
+ CFileStatus& rStatus);
+ static void PASCAL SetStatus(LPCTSTR lpszFileName,
+ const CFileStatus& status);
+
+ DWORD SeekToEnd();
+ void SeekToBegin();
+
+ // backward compatible ReadHuge and WriteHuge
+ DWORD ReadHuge(void* lpBuffer, DWORD dwCount);
+ void WriteHuge(const void* lpBuffer, DWORD dwCount);
+
+// Overridables
+ virtual CFile* Duplicate() const;
+
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+// Implementation
+public:
+ virtual ~CFile();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ enum BufferCommand { bufferRead, bufferWrite, bufferCommit, bufferCheck };
+ virtual UINT GetBufferPtr(UINT nCommand, UINT nCount = 0,
+ void** ppBufStart = NULL, void** ppBufMax = NULL);
+
+protected:
+ BOOL m_bCloseOnDelete;
+ CString m_strFileName;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// STDIO file implementation
+
+class CStdioFile : public CFile
+{
+ DECLARE_DYNAMIC(CStdioFile)
+
+public:
+// Constructors
+ CStdioFile();
+ CStdioFile(FILE* pOpenStream);
+ CStdioFile(LPCTSTR lpszFileName, UINT nOpenFlags);
+
+// Attributes
+ FILE* m_pStream; // stdio FILE
+ // m_hFile from base class is _fileno(m_pStream)
+
+// Operations
+ // reading and writing strings
+ virtual void WriteString(LPCTSTR lpsz);
+ virtual LPTSTR ReadString(LPTSTR lpsz, UINT nMax);
+ virtual BOOL ReadString(CString& rString);
+
+// Implementation
+public:
+ virtual ~CStdioFile();
+#ifdef _DEBUG
+ void Dump(CDumpContext& dc) const;
+#endif
+ virtual DWORD GetPosition() const;
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+ // Unsupported APIs
+ virtual CFile* Duplicate() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+};
+
+////////////////////////////////////////////////////////////////////////////
+// Memory based file implementation
+
+class CMemFile : public CFile
+{
+ DECLARE_DYNAMIC(CMemFile)
+
+public:
+// Constructors
+ CMemFile(UINT nGrowBytes = 1024);
+ CMemFile(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+
+// Operations
+ void Attach(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+ BYTE* Detach();
+
+// Advanced Overridables
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual BYTE* Memcpy(BYTE* lpMemTarget, const BYTE* lpMemSource, UINT nBytes);
+ virtual void Free(BYTE* lpMem);
+ virtual void GrowFile(DWORD dwNewLen);
+
+// Implementation
+protected:
+ UINT m_nGrowBytes;
+ DWORD m_nPosition;
+ DWORD m_nBufferSize;
+ DWORD m_nFileSize;
+ BYTE* m_lpBuffer;
+ BOOL m_bAutoDelete;
+
+public:
+ virtual ~CMemFile();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ virtual DWORD GetPosition() const;
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+ virtual UINT GetBufferPtr(UINT nCommand, UINT nCount = 0,
+ void** ppBufStart = NULL, void** ppBufMax = NULL);
+
+ // Unsupported APIs
+ virtual CFile* Duplicate() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+};
+
+#ifndef _MAC
+
+////////////////////////////////////////////////////////////////////////////
+// Local file searches
+
+class CFileFind : public CObject
+{
+public:
+ CFileFind();
+ virtual ~CFileFind();
+
+// Attributes
+public:
+ DWORD GetLength() const;
+#if defined(_X86_) || defined(_ALPHA_)
+ __int64 GetLength64() const;
+#endif
+ virtual CString GetFileName() const;
+ virtual CString GetFilePath() const;
+ virtual CString GetFileTitle() const;
+ virtual CString GetFileURL() const;
+ virtual CString GetRoot() const;
+
+ virtual BOOL GetLastWriteTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetLastAccessTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetCreationTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetLastWriteTime(CTime& refTime) const;
+ virtual BOOL GetLastAccessTime(CTime& refTime) const;
+ virtual BOOL GetCreationTime(CTime& refTime) const;
+
+ virtual BOOL MatchesMask(DWORD dwMask) const;
+
+ virtual BOOL IsDots() const;
+ // these aren't virtual because they all use MatchesMask(), which is
+ BOOL IsReadOnly() const;
+ BOOL IsDirectory() const;
+ BOOL IsCompressed() const;
+ BOOL IsSystem() const;
+ BOOL IsHidden() const;
+ BOOL IsTemporary() const;
+ BOOL IsNormal() const;
+ BOOL IsArchived() const;
+
+// Operations
+ void Close();
+ virtual BOOL FindFile(LPCTSTR pstrName = NULL, DWORD dwUnused = 0);
+ virtual BOOL FindNextFile();
+
+protected:
+ virtual void CloseContext();
+
+// Implementation
+protected:
+ void* m_pFoundInfo;
+ void* m_pNextInfo;
+ HANDLE m_hContext;
+ BOOL m_bGotLast;
+ CString m_strRoot;
+ TCHAR m_chDirSeparator; // not '\\' for Internet classes
+
+#ifdef _DEBUG
+ void Dump(CDumpContext& dc) const;
+ void AssertValid() const;
+#endif
+
+ DECLARE_DYNAMIC(CFileFind)
+};
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CTimeSpan and CTime
+
+class CTimeSpan
+{
+public:
+
+// Constructors
+ CTimeSpan();
+ CTimeSpan(time_t time);
+ CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs);
+
+ CTimeSpan(const CTimeSpan& timeSpanSrc);
+ const CTimeSpan& operator=(const CTimeSpan& timeSpanSrc);
+
+// Attributes
+ // extract parts
+ LONG GetDays() const; // total # of days
+ LONG GetTotalHours() const;
+ int GetHours() const;
+ LONG GetTotalMinutes() const;
+ int GetMinutes() const;
+ LONG GetTotalSeconds() const;
+ int GetSeconds() const;
+
+// Operations
+ // time math
+ CTimeSpan operator-(CTimeSpan timeSpan) const;
+ CTimeSpan operator+(CTimeSpan timeSpan) const;
+ const CTimeSpan& operator+=(CTimeSpan timeSpan);
+ const CTimeSpan& operator-=(CTimeSpan timeSpan);
+ BOOL operator==(CTimeSpan timeSpan) const;
+ BOOL operator!=(CTimeSpan timeSpan) const;
+ BOOL operator<(CTimeSpan timeSpan) const;
+ BOOL operator>(CTimeSpan timeSpan) const;
+ BOOL operator<=(CTimeSpan timeSpan) const;
+ BOOL operator>=(CTimeSpan timeSpan) const;
+
+#ifdef _UNICODE
+ // for compatibility with MFC 3.x
+ CString Format(LPCSTR pFormat) const;
+#endif
+ CString Format(LPCTSTR pFormat) const;
+ CString Format(UINT nID) const;
+
+ // serialization
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc,CTimeSpan timeSpan);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, CTimeSpan timeSpan);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CTimeSpan& rtimeSpan);
+
+private:
+ time_t m_timeSpan;
+ friend class CTime;
+};
+
+class CTime
+{
+public:
+
+// Constructors
+ static CTime PASCAL GetCurrentTime();
+
+ CTime();
+ CTime(time_t time);
+ CTime(int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec,
+ int nDST = -1);
+ CTime(WORD wDosDate, WORD wDosTime, int nDST = -1);
+ CTime(const CTime& timeSrc);
+
+ CTime(const SYSTEMTIME& sysTime, int nDST = -1);
+ CTime(const FILETIME& fileTime, int nDST = -1);
+ const CTime& operator=(const CTime& timeSrc);
+ const CTime& operator=(time_t t);
+
+// Attributes
+ struct tm* GetGmtTm(struct tm* ptm = NULL) const;
+ struct tm* GetLocalTm(struct tm* ptm = NULL) const;
+
+ time_t GetTime() const;
+ int GetYear() const;
+ int GetMonth() const; // month of year (1 = Jan)
+ int GetDay() const; // day of month
+ int GetHour() const;
+ int GetMinute() const;
+ int GetSecond() const;
+ int GetDayOfWeek() const; // 1=Sun, 2=Mon, ..., 7=Sat
+
+// Operations
+ // time math
+ CTimeSpan operator-(CTime time) const;
+ CTime operator-(CTimeSpan timeSpan) const;
+ CTime operator+(CTimeSpan timeSpan) const;
+ const CTime& operator+=(CTimeSpan timeSpan);
+ const CTime& operator-=(CTimeSpan timeSpan);
+ BOOL operator==(CTime time) const;
+ BOOL operator!=(CTime time) const;
+ BOOL operator<(CTime time) const;
+ BOOL operator>(CTime time) const;
+ BOOL operator<=(CTime time) const;
+ BOOL operator>=(CTime time) const;
+
+ // formatting using "C" strftime
+ CString Format(LPCTSTR pFormat) const;
+ CString FormatGmt(LPCTSTR pFormat) const;
+ CString Format(UINT nFormatID) const;
+ CString FormatGmt(UINT nFormatID) const;
+
+#ifdef _UNICODE
+ // for compatibility with MFC 3.x
+ CString Format(LPCSTR pFormat) const;
+ CString FormatGmt(LPCSTR pFormat) const;
+#endif
+
+ // serialization
+#ifdef _DEBUG
+ friend CDumpContext& AFXAPI operator<<(CDumpContext& dc, CTime time);
+#endif
+ friend CArchive& AFXAPI operator<<(CArchive& ar, CTime time);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CTime& rtime);
+
+private:
+ time_t m_time;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// File status
+
+struct CFileStatus
+{
+ CTime m_ctime; // creation date/time of file
+ CTime m_mtime; // last modification date/time of file
+ CTime m_atime; // last access date/time of file
+ LONG m_size; // logical size of file in bytes
+ BYTE m_attribute; // logical OR of CFile::Attribute enum values
+ BYTE _m_padding; // pad the structure to a WORD
+ TCHAR m_szFullName[_MAX_PATH]; // absolute path name
+
+#ifdef _DEBUG
+ void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic memory management routines
+
+// Low level sanity checks for memory blocks
+BOOL AFXAPI AfxIsValidAddress(const void* lp,
+ UINT nBytes, BOOL bReadWrite = TRUE);
+BOOL AFXAPI AfxIsValidString(LPCWSTR lpsz, int nLength = -1);
+BOOL AFXAPI AfxIsValidString(LPCSTR lpsz, int nLength = -1);
+
+#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
+
+// Memory tracking allocation
+void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
+#define DEBUG_NEW new(THIS_FILE, __LINE__)
+
+void* AFXAPI AfxAllocMemoryDebug(size_t nSize, BOOL bIsObject,
+ LPCSTR lpszFileName, int nLine);
+void AFXAPI AfxFreeMemoryDebug(void* pbData, BOOL bIsObject);
+
+// Dump any memory leaks since program started
+BOOL AFXAPI AfxDumpMemoryLeaks();
+
+// Return TRUE if valid memory block of nBytes
+BOOL AFXAPI AfxIsMemoryBlock(const void* p, UINT nBytes,
+ LONG* plRequestNumber = NULL);
+
+// Return TRUE if memory is sane or print out what is wrong
+BOOL AFXAPI AfxCheckMemory();
+
+#define afxMemDF _crtDbgFlag
+
+enum AfxMemDF // memory debug/diagnostic flags
+{
+ allocMemDF = 0x01, // turn on debugging allocator
+ delayFreeMemDF = 0x02, // delay freeing memory
+ checkAlwaysMemDF = 0x04 // AfxCheckMemory on every alloc/free
+};
+
+#ifdef _UNICODE
+#define AfxOutputDebugString(lpsz) \
+ do \
+ { \
+ int _convert; _convert = 0; \
+ _RPT0(_CRT_WARN, W2CA(lpsz)); \
+ } while (0)
+#else
+#define AfxOutputDebugString(lpsz) _RPT0(_CRT_WARN, lpsz)
+#endif
+
+// turn on/off tracking for a short while
+BOOL AFXAPI AfxEnableMemoryTracking(BOOL bTrack);
+
+// Advanced initialization: for overriding default diagnostics
+BOOL AFXAPI AfxDiagnosticInit(void);
+
+// A failure hook returns whether to permit allocation
+typedef BOOL (AFXAPI* AFX_ALLOC_HOOK)(size_t nSize, BOOL bObject, LONG lRequestNumber);
+
+// Set new hook, return old (never NULL)
+AFX_ALLOC_HOOK AFXAPI AfxSetAllocHook(AFX_ALLOC_HOOK pfnAllocHook);
+
+// Debugger hook on specified allocation request - Obsolete
+void AFXAPI AfxSetAllocStop(LONG lRequestNumber);
+
+// Memory state for snapshots/leak detection
+struct CMemoryState
+{
+// Attributes
+ enum blockUsage
+ {
+ freeBlock, // memory not used
+ objectBlock, // contains a CObject derived class object
+ bitBlock, // contains ::operator new data
+ crtBlock,
+ ignoredBlock,
+ nBlockUseMax // total number of usages
+ };
+
+ _CrtMemState m_memState;
+ LONG m_lCounts[nBlockUseMax];
+ LONG m_lSizes[nBlockUseMax];
+ LONG m_lHighWaterCount;
+ LONG m_lTotalCount;
+
+ CMemoryState();
+
+// Operations
+ void Checkpoint(); // fill with current state
+ BOOL Difference(const CMemoryState& oldState,
+ const CMemoryState& newState); // fill with difference
+ void UpdateData();
+
+ // Output to afxDump
+ void DumpStatistics() const;
+ void DumpAllObjectsSince() const;
+};
+
+// Enumerate allocated objects or runtime classes
+void AFXAPI AfxDoForAllObjects(void (AFX_CDECL *pfn)(CObject* pObject, void* pContext),
+ void* pContext);
+void AFXAPI AfxDoForAllClasses(void (AFX_CDECL *pfn)(const CRuntimeClass* pClass,
+ void* pContext), void* pContext);
+
+#else
+
+// non-_DEBUG_ALLOC version that assume everything is OK
+#define DEBUG_NEW new
+#define AfxCheckMemory() TRUE
+#define AfxIsMemoryBlock(p, nBytes) TRUE
+#define AfxEnableMemoryTracking(bTrack) FALSE
+#define AfxOutputDebugString(lpsz) ::OutputDebugString(lpsz)
+
+// diagnostic initialization
+#ifndef _DEBUG
+#define AfxDiagnosticInit() TRUE
+#else
+BOOL AFXAPI AfxDiagnosticInit(void);
+#endif
+
+#endif // _DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// Archives for serializing CObject data
+
+// needed for implementation
+class CPtrArray;
+class CMapPtrToPtr;
+class CDocument;
+
+class CArchive
+{
+public:
+// Flag values
+ enum Mode { store = 0, load = 1, bNoFlushOnDelete = 2, bNoByteSwap = 4 };
+
+ CArchive(CFile* pFile, UINT nMode, int nBufSize = 4096, void* lpBuf = NULL);
+ ~CArchive();
+
+// Attributes
+ BOOL IsLoading() const;
+ BOOL IsStoring() const;
+ BOOL IsByteSwapping() const;
+ BOOL IsBufferEmpty() const;
+
+ CFile* GetFile() const;
+ UINT GetObjectSchema(); // only valid when reading a CObject*
+ void SetObjectSchema(UINT nSchema);
+
+ // pointer to document being serialized -- must set to serialize
+ // COleClientItems in a document!
+ CDocument* m_pDocument;
+
+// Operations
+ UINT Read(void* lpBuf, UINT nMax);
+ void Write(const void* lpBuf, UINT nMax);
+ void Flush();
+ void Close();
+ void Abort(); // close and shutdown without exceptions
+
+ // reading and writing strings
+ void WriteString(LPCTSTR lpsz);
+ LPTSTR ReadString(LPTSTR lpsz, UINT nMax);
+ BOOL ReadString(CString& rString);
+
+public:
+ // Object I/O is pointer based to avoid added construction overhead.
+ // Use the Serialize member function directly for embedded objects.
+ friend CArchive& AFXAPI operator<<(CArchive& ar, const CObject* pOb);
+
+ friend CArchive& AFXAPI operator>>(CArchive& ar, CObject*& pOb);
+ friend CArchive& AFXAPI operator>>(CArchive& ar, const CObject*& pOb);
+
+ // insertion operations
+ CArchive& operator<<(BYTE by);
+ CArchive& operator<<(WORD w);
+ CArchive& operator<<(LONG l);
+ CArchive& operator<<(DWORD dw);
+ CArchive& operator<<(float f);
+ CArchive& operator<<(double d);
+
+ CArchive& operator<<(int i);
+ CArchive& operator<<(short w);
+ CArchive& operator<<(char ch);
+ CArchive& operator<<(unsigned u);
+
+ // extraction operations
+ CArchive& operator>>(BYTE& by);
+ CArchive& operator>>(WORD& w);
+ CArchive& operator>>(DWORD& dw);
+ CArchive& operator>>(LONG& l);
+ CArchive& operator>>(float& f);
+ CArchive& operator>>(double& d);
+
+ CArchive& operator>>(int& i);
+ CArchive& operator>>(short& w);
+ CArchive& operator>>(char& ch);
+ CArchive& operator>>(unsigned& u);
+
+ // object read/write
+ CObject* ReadObject(const CRuntimeClass* pClass);
+ void WriteObject(const CObject* pOb);
+ // advanced object mapping (used for forced references)
+ void MapObject(const CObject* pOb);
+
+ // advanced versioning support
+ void WriteClass(const CRuntimeClass* pClassRef);
+ CRuntimeClass* ReadClass(const CRuntimeClass* pClassRefRequested = NULL,
+ UINT* pSchema = NULL, DWORD* pObTag = NULL);
+ void SerializeClass(const CRuntimeClass* pClassRef);
+
+ // advanced operations (used when storing/loading many objects)
+ void SetStoreParams(UINT nHashSize = 2053, UINT nBlockSize = 128);
+ void SetLoadParams(UINT nGrowBy = 1024);
+
+// Implementation
+public:
+ BOOL m_bForceFlat; // for COleClientItem implementation (default TRUE)
+ BOOL m_bDirectBuffer; // TRUE if m_pFile supports direct buffering
+ void FillBuffer(UINT nBytesNeeded);
+ void CheckCount(); // throw exception if m_nMapCount is too large
+
+ // special functions for reading and writing (16-bit compatible) counts
+ DWORD ReadCount();
+ void WriteCount(DWORD dwCount);
+
+ // public for advanced use
+ UINT m_nObjectSchema;
+ CString m_strFileName;
+
+protected:
+ // archive objects cannot be copied or assigned
+ CArchive(const CArchive& arSrc);
+ void operator=(const CArchive& arSrc);
+
+ BOOL m_nMode;
+ BOOL m_bUserBuf;
+ int m_nBufSize;
+ CFile* m_pFile;
+ BYTE* m_lpBufCur;
+ BYTE* m_lpBufMax;
+ BYTE* m_lpBufStart;
+
+ // array/map for CObject* and CRuntimeClass* load/store
+ UINT m_nMapCount;
+ union
+ {
+ CPtrArray* m_pLoadArray;
+ CMapPtrToPtr* m_pStoreMap;
+ };
+ // map to keep track of mismatched schemas
+ CMapPtrToPtr* m_pSchemaMap;
+
+ // advanced parameters (controls performance with large archives)
+ UINT m_nGrowSize;
+ UINT m_nHashSize;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Diagnostic dumping
+
+class CDumpContext
+{
+public:
+ CDumpContext(CFile* pFile = NULL);
+
+// Attributes
+ int GetDepth() const; // 0 => this object, 1 => children objects
+ void SetDepth(int nNewDepth);
+
+// Operations
+ CDumpContext& operator<<(LPCTSTR lpsz);
+#ifdef _UNICODE
+ CDumpContext& operator<<(LPCSTR lpsz); // automatically widened
+#else
+ CDumpContext& operator<<(LPCWSTR lpsz); // automatically thinned
+#endif
+ CDumpContext& operator<<(const void* lp);
+ CDumpContext& operator<<(const CObject* pOb);
+ CDumpContext& operator<<(const CObject& ob);
+ CDumpContext& operator<<(BYTE by);
+ CDumpContext& operator<<(WORD w);
+ CDumpContext& operator<<(UINT u);
+ CDumpContext& operator<<(LONG l);
+ CDumpContext& operator<<(DWORD dw);
+ CDumpContext& operator<<(float f);
+ CDumpContext& operator<<(double d);
+ CDumpContext& operator<<(int n);
+ void HexDump(LPCTSTR lpszLine, BYTE* pby, int nBytes, int nWidth);
+ void Flush();
+
+// Implementation
+protected:
+ // dump context objects cannot be copied or assigned
+ CDumpContext(const CDumpContext& dcSrc);
+ void operator=(const CDumpContext& dcSrc);
+ void OutputString(LPCTSTR lpsz);
+
+ int m_nDepth;
+
+public:
+ CFile* m_pFile;
+};
+
+#ifdef _DEBUG
+extern AFX_DATA CDumpContext afxDump;
+extern AFX_DATA BOOL afxTraceEnabled;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Special include for Win32s compatibility
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifndef __AFXCOLL_H__
+ #include <afxcoll.h>
+ #ifndef __AFXSTATE_H__
+ #include <afxstat_.h> // for _AFX_APP_STATE and _AFX_THREAD_STATE
+ #endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFX_INLINE inline
+#include <afx.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFX_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afx.inl b/public/sdk/inc/mfc42/afx.inl
new file mode 100644
index 000000000..546495c27
--- /dev/null
+++ b/public/sdk/inc/mfc42/afx.inl
@@ -0,0 +1,415 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFX.H
+
+#ifdef _AFX_INLINE
+
+// CObject
+_AFX_INLINE CObject::CObject()
+ { }
+_AFX_INLINE CObject::~CObject()
+ { }
+_AFX_INLINE void CObject::Serialize(CArchive&)
+ { /* CObject does not serialize anything by default */ }
+_AFX_INLINE void* PASCAL CObject::operator new(size_t, void* p)
+ { return p; }
+#ifndef _DEBUG
+// _DEBUG versions in memory.cpp
+_AFX_INLINE void PASCAL CObject::operator delete(void* p)
+ { ::operator delete(p); }
+_AFX_INLINE void* PASCAL CObject::operator new(size_t nSize)
+ { return ::operator new(nSize); }
+// _DEBUG versions in objcore.cpp
+_AFX_INLINE void CObject::AssertValid() const
+ { /* no asserts in release builds */ }
+_AFX_INLINE void CObject::Dump(CDumpContext&) const
+ { /* no dumping in release builds */ }
+#endif
+_AFX_INLINE const CObject* AFX_CDECL AfxDynamicDownCast(CRuntimeClass* pClass, const CObject* pObject)
+ { return (const CObject*)AfxDynamicDownCast(pClass, (CObject*)pObject); }
+#ifdef _DEBUG
+_AFX_INLINE const CObject* AFX_CDECL AfxStaticDownCast(CRuntimeClass* pClass, const CObject* pObject)
+ { return (const CObject*)AfxStaticDownCast(pClass, (CObject*)pObject); }
+#endif
+
+// exceptions
+_AFX_INLINE CException::~CException()
+ { }
+_AFX_INLINE CSimpleException::CSimpleException()
+ { m_bInitialized = FALSE; m_bLoaded = FALSE; }
+_AFX_INLINE CSimpleException::CSimpleException(BOOL bAutoDelete)
+ : CException(bAutoDelete) { m_bInitialized = FALSE; m_bLoaded = FALSE; }
+_AFX_INLINE CSimpleException::~CSimpleException()
+ { }
+
+_AFX_INLINE CMemoryException::CMemoryException()
+ : CSimpleException() { }
+_AFX_INLINE CMemoryException::CMemoryException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFX_INLINE CMemoryException::~CMemoryException()
+ { }
+_AFX_INLINE CNotSupportedException::CNotSupportedException()
+ : CSimpleException() { }
+_AFX_INLINE CNotSupportedException::CNotSupportedException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFX_INLINE CNotSupportedException::~CNotSupportedException()
+ { }
+_AFX_INLINE CArchiveException::CArchiveException(int cause,
+ LPCTSTR lpszFileName /* = NULL */)
+ { m_cause = cause; m_strFileName = lpszFileName; }
+_AFX_INLINE CArchiveException::~CArchiveException()
+ { }
+_AFX_INLINE CFileException::CFileException(int cause, LONG lOsError,
+ LPCTSTR pstrFileName /* = NULL */)
+ { m_cause = cause; m_lOsError = lOsError; m_strFileName = pstrFileName; }
+_AFX_INLINE CFileException::~CFileException()
+ { }
+
+// CFile
+_AFX_INLINE CFile::operator HFILE() const
+ { return m_hFile; }
+_AFX_INLINE DWORD CFile::ReadHuge(void* lpBuffer, DWORD dwCount)
+ { return (DWORD)Read(lpBuffer, (UINT)dwCount); }
+_AFX_INLINE void CFile::WriteHuge(const void* lpBuffer, DWORD dwCount)
+ { Write(lpBuffer, (UINT)dwCount); }
+_AFX_INLINE DWORD CFile::SeekToEnd()
+ { return Seek(0, CFile::end); }
+_AFX_INLINE void CFile::SeekToBegin()
+ { Seek(0, CFile::begin); }
+_AFX_INLINE void CFile::SetFilePath(LPCTSTR lpszNewName)
+{
+ ASSERT_VALID(this);
+ ASSERT(AfxIsValidString(lpszNewName, FALSE));
+ m_strFileName = lpszNewName;
+}
+
+#ifndef _MAC
+// CFileFind
+_AFX_INLINE BOOL CFileFind::IsReadOnly() const
+ { return MatchesMask(FILE_ATTRIBUTE_READONLY); }
+_AFX_INLINE BOOL CFileFind::IsDirectory() const
+ { return MatchesMask(FILE_ATTRIBUTE_DIRECTORY); }
+_AFX_INLINE BOOL CFileFind::IsCompressed() const
+ { return MatchesMask(FILE_ATTRIBUTE_COMPRESSED); }
+_AFX_INLINE BOOL CFileFind::IsSystem() const
+ { return MatchesMask(FILE_ATTRIBUTE_SYSTEM); }
+_AFX_INLINE BOOL CFileFind::IsHidden() const
+ { return MatchesMask(FILE_ATTRIBUTE_HIDDEN); }
+_AFX_INLINE BOOL CFileFind::IsTemporary() const
+ { return MatchesMask(FILE_ATTRIBUTE_TEMPORARY); }
+_AFX_INLINE BOOL CFileFind::IsNormal() const
+ { return MatchesMask(FILE_ATTRIBUTE_NORMAL); }
+_AFX_INLINE BOOL CFileFind::IsArchived() const
+ { return MatchesMask(FILE_ATTRIBUTE_ARCHIVE); }
+#endif //!_MAC
+
+// CString
+_AFX_INLINE CStringData* CString::GetData() const
+ { ASSERT(m_pchData != NULL); return ((CStringData*)m_pchData)-1; }
+_AFX_INLINE void CString::Init()
+ { m_pchData = afxEmptyString.m_pchData; }
+_AFX_INLINE CString::CString(const unsigned char* lpsz)
+ { Init(); *this = (LPCSTR)lpsz; }
+_AFX_INLINE const CString& CString::operator=(const unsigned char* lpsz)
+ { *this = (LPCSTR)lpsz; return *this; }
+#ifdef _UNICODE
+_AFX_INLINE const CString& CString::operator+=(char ch)
+ { *this += (TCHAR)ch; return *this; }
+_AFX_INLINE const CString& CString::operator=(char ch)
+ { *this = (TCHAR)ch; return *this; }
+_AFX_INLINE CString AFXAPI operator+(const CString& string, char ch)
+ { return string + (TCHAR)ch; }
+_AFX_INLINE CString AFXAPI operator+(char ch, const CString& string)
+ { return (TCHAR)ch + string; }
+#endif
+
+_AFX_INLINE int CString::GetLength() const
+ { return GetData()->nDataLength; }
+_AFX_INLINE int CString::GetAllocLength() const
+ { return GetData()->nAllocLength; }
+_AFX_INLINE BOOL CString::IsEmpty() const
+ { return GetData()->nDataLength == 0; }
+_AFX_INLINE CString::operator LPCTSTR() const
+ { return m_pchData; }
+_AFX_INLINE int PASCAL CString::SafeStrlen(LPCTSTR lpsz)
+ { return (lpsz == NULL) ? 0 : lstrlen(lpsz); }
+
+// CString support (windows specific)
+_AFX_INLINE int CString::Compare(LPCTSTR lpsz) const
+ { return _tcscmp(m_pchData, lpsz); } // MBCS/Unicode aware
+_AFX_INLINE int CString::CompareNoCase(LPCTSTR lpsz) const
+ { return _tcsicmp(m_pchData, lpsz); } // MBCS/Unicode aware
+// CString::Collate is often slower than Compare but is MBSC/Unicode
+// aware as well as locale-sensitive with respect to sort order.
+_AFX_INLINE int CString::Collate(LPCTSTR lpsz) const
+ { return _tcscoll(m_pchData, lpsz); } // locale sensitive
+
+_AFX_INLINE TCHAR CString::GetAt(int nIndex) const
+{
+ ASSERT(nIndex >= 0);
+ ASSERT(nIndex < GetData()->nDataLength);
+ return m_pchData[nIndex];
+}
+_AFX_INLINE TCHAR CString::operator[](int nIndex) const
+{
+ // same as GetAt
+ ASSERT(nIndex >= 0);
+ ASSERT(nIndex < GetData()->nDataLength);
+ return m_pchData[nIndex];
+}
+_AFX_INLINE BOOL AFXAPI operator==(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) == 0; }
+_AFX_INLINE BOOL AFXAPI operator==(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) == 0; }
+_AFX_INLINE BOOL AFXAPI operator==(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) == 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) != 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) != 0; }
+_AFX_INLINE BOOL AFXAPI operator!=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) != 0; }
+_AFX_INLINE BOOL AFXAPI operator<(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) > 0; }
+_AFX_INLINE BOOL AFXAPI operator>(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) < 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) <= 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) <= 0; }
+_AFX_INLINE BOOL AFXAPI operator<=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(const CString& s1, const CString& s2)
+ { return s1.Compare(s2) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(const CString& s1, LPCTSTR s2)
+ { return s1.Compare(s2) >= 0; }
+_AFX_INLINE BOOL AFXAPI operator>=(LPCTSTR s1, const CString& s2)
+ { return s2.Compare(s1) <= 0; }
+
+// CTime and CTimeSpan
+_AFX_INLINE CTimeSpan::CTimeSpan()
+ { }
+_AFX_INLINE CTimeSpan::CTimeSpan(time_t time)
+ { m_timeSpan = time; }
+_AFX_INLINE CTimeSpan::CTimeSpan(LONG lDays, int nHours, int nMins, int nSecs)
+ { m_timeSpan = nSecs + 60* (nMins + 60* (nHours + 24* lDays)); }
+_AFX_INLINE CTimeSpan::CTimeSpan(const CTimeSpan& timeSpanSrc)
+ { m_timeSpan = timeSpanSrc.m_timeSpan; }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator=(const CTimeSpan& timeSpanSrc)
+ { m_timeSpan = timeSpanSrc.m_timeSpan; return *this; }
+_AFX_INLINE LONG CTimeSpan::GetDays() const
+ { return m_timeSpan / (24*3600L); }
+_AFX_INLINE LONG CTimeSpan::GetTotalHours() const
+ { return m_timeSpan/3600; }
+_AFX_INLINE int CTimeSpan::GetHours() const
+ { return (int)(GetTotalHours() - GetDays()*24); }
+_AFX_INLINE LONG CTimeSpan::GetTotalMinutes() const
+ { return m_timeSpan/60; }
+_AFX_INLINE int CTimeSpan::GetMinutes() const
+ { return (int)(GetTotalMinutes() - GetTotalHours()*60); }
+_AFX_INLINE LONG CTimeSpan::GetTotalSeconds() const
+ { return m_timeSpan; }
+_AFX_INLINE int CTimeSpan::GetSeconds() const
+ { return (int)(GetTotalSeconds() - GetTotalMinutes()*60); }
+_AFX_INLINE CTimeSpan CTimeSpan::operator-(CTimeSpan timeSpan) const
+ { return CTimeSpan(m_timeSpan - timeSpan.m_timeSpan); }
+_AFX_INLINE CTimeSpan CTimeSpan::operator+(CTimeSpan timeSpan) const
+ { return CTimeSpan(m_timeSpan + timeSpan.m_timeSpan); }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator+=(CTimeSpan timeSpan)
+ { m_timeSpan += timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE const CTimeSpan& CTimeSpan::operator-=(CTimeSpan timeSpan)
+ { m_timeSpan -= timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE BOOL CTimeSpan::operator==(CTimeSpan timeSpan) const
+ { return m_timeSpan == timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator!=(CTimeSpan timeSpan) const
+ { return m_timeSpan != timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator<(CTimeSpan timeSpan) const
+ { return m_timeSpan < timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator>(CTimeSpan timeSpan) const
+ { return m_timeSpan > timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator<=(CTimeSpan timeSpan) const
+ { return m_timeSpan <= timeSpan.m_timeSpan; }
+_AFX_INLINE BOOL CTimeSpan::operator>=(CTimeSpan timeSpan) const
+ { return m_timeSpan >= timeSpan.m_timeSpan; }
+
+
+_AFX_INLINE CTime::CTime()
+ { }
+_AFX_INLINE CTime::CTime(time_t time)
+ { m_time = time; }
+_AFX_INLINE CTime::CTime(const CTime& timeSrc)
+ { m_time = timeSrc.m_time; }
+_AFX_INLINE const CTime& CTime::operator=(const CTime& timeSrc)
+ { m_time = timeSrc.m_time; return *this; }
+_AFX_INLINE const CTime& CTime::operator=(time_t t)
+ { m_time = t; return *this; }
+_AFX_INLINE time_t CTime::GetTime() const
+ { return m_time; }
+_AFX_INLINE int CTime::GetYear() const
+ { return (GetLocalTm(NULL)->tm_year) + 1900; }
+_AFX_INLINE int CTime::GetMonth() const
+ { return GetLocalTm(NULL)->tm_mon + 1; }
+_AFX_INLINE int CTime::GetDay() const
+ { return GetLocalTm(NULL)->tm_mday; }
+_AFX_INLINE int CTime::GetHour() const
+ { return GetLocalTm(NULL)->tm_hour; }
+_AFX_INLINE int CTime::GetMinute() const
+ { return GetLocalTm(NULL)->tm_min; }
+_AFX_INLINE int CTime::GetSecond() const
+ { return GetLocalTm(NULL)->tm_sec; }
+_AFX_INLINE int CTime::GetDayOfWeek() const
+ { return GetLocalTm(NULL)->tm_wday + 1; }
+_AFX_INLINE CTimeSpan CTime::operator-(CTime time) const
+ { return CTimeSpan(m_time - time.m_time); }
+_AFX_INLINE CTime CTime::operator-(CTimeSpan timeSpan) const
+ { return CTime(m_time - timeSpan.m_timeSpan); }
+_AFX_INLINE CTime CTime::operator+(CTimeSpan timeSpan) const
+ { return CTime(m_time + timeSpan.m_timeSpan); }
+_AFX_INLINE const CTime& CTime::operator+=(CTimeSpan timeSpan)
+ { m_time += timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE const CTime& CTime::operator-=(CTimeSpan timeSpan)
+ { m_time -= timeSpan.m_timeSpan; return *this; }
+_AFX_INLINE BOOL CTime::operator==(CTime time) const
+ { return m_time == time.m_time; }
+_AFX_INLINE BOOL CTime::operator!=(CTime time) const
+ { return m_time != time.m_time; }
+_AFX_INLINE BOOL CTime::operator<(CTime time) const
+ { return m_time < time.m_time; }
+_AFX_INLINE BOOL CTime::operator>(CTime time) const
+ { return m_time > time.m_time; }
+_AFX_INLINE BOOL CTime::operator<=(CTime time) const
+ { return m_time <= time.m_time; }
+_AFX_INLINE BOOL CTime::operator>=(CTime time) const
+ { return m_time >= time.m_time; }
+
+
+// CArchive
+_AFX_INLINE BOOL CArchive::IsLoading() const
+ { return (m_nMode & CArchive::load) != 0; }
+_AFX_INLINE BOOL CArchive::IsStoring() const
+ { return (m_nMode & CArchive::load) == 0; }
+_AFX_INLINE BOOL CArchive::IsByteSwapping() const
+ { return (m_nMode & CArchive::bNoByteSwap) == 0; }
+_AFX_INLINE BOOL CArchive::IsBufferEmpty() const
+ { return m_lpBufCur == m_lpBufMax; }
+_AFX_INLINE CFile* CArchive::GetFile() const
+ { return m_pFile; }
+_AFX_INLINE void CArchive::SetObjectSchema(UINT nSchema)
+ { m_nObjectSchema = nSchema; }
+_AFX_INLINE void CArchive::SetStoreParams(UINT nHashSize, UINT nBlockSize)
+{
+ ASSERT(IsStoring());
+ ASSERT(m_pStoreMap == NULL); // must be before first object written
+ m_nHashSize = nHashSize;
+ m_nGrowSize = nBlockSize;
+}
+_AFX_INLINE void CArchive::SetLoadParams(UINT nGrowBy)
+{
+ ASSERT(IsLoading());
+ ASSERT(m_pLoadArray == NULL); // must be before first object read
+ m_nGrowSize = nGrowBy;
+}
+_AFX_INLINE CArchive& CArchive::operator<<(int i)
+ { return CArchive::operator<<((LONG)i); }
+_AFX_INLINE CArchive& CArchive::operator<<(unsigned u)
+ { return CArchive::operator<<((LONG)u); }
+_AFX_INLINE CArchive& CArchive::operator<<(short w)
+ { return CArchive::operator<<((WORD)w); }
+_AFX_INLINE CArchive& CArchive::operator<<(char ch)
+ { return CArchive::operator<<((BYTE)ch); }
+_AFX_INLINE CArchive& CArchive::operator<<(BYTE by)
+ { if (m_lpBufCur + sizeof(BYTE) > m_lpBufMax) Flush();
+ *(UNALIGNED BYTE*)m_lpBufCur = by; m_lpBufCur += sizeof(BYTE); return *this; }
+#ifndef _MAC
+_AFX_INLINE CArchive& CArchive::operator<<(WORD w)
+ { if (m_lpBufCur + sizeof(WORD) > m_lpBufMax) Flush();
+ *(UNALIGNED WORD*)m_lpBufCur = w; m_lpBufCur += sizeof(WORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(LONG l)
+ { if (m_lpBufCur + sizeof(LONG) > m_lpBufMax) Flush();
+ *(UNALIGNED LONG*)m_lpBufCur = l; m_lpBufCur += sizeof(LONG); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(DWORD dw)
+ { if (m_lpBufCur + sizeof(DWORD) > m_lpBufMax) Flush();
+ *(UNALIGNED DWORD*)m_lpBufCur = dw; m_lpBufCur += sizeof(DWORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator<<(float f)
+ { if (m_lpBufCur + sizeof(float) > m_lpBufMax) Flush();
+ *(UNALIGNED _AFX_FLOAT*)m_lpBufCur = *(_AFX_FLOAT*)&f; m_lpBufCur += sizeof(float); return *this;
+ }
+_AFX_INLINE CArchive& CArchive::operator<<(double d)
+ { if (m_lpBufCur + sizeof(double) > m_lpBufMax) Flush();
+ *(UNALIGNED _AFX_DOUBLE*)m_lpBufCur = *(_AFX_DOUBLE*)&d; m_lpBufCur += sizeof(double); return *this; }
+#endif
+_AFX_INLINE CArchive& CArchive::operator>>(int& i)
+ { return CArchive::operator>>((LONG&)i); }
+_AFX_INLINE CArchive& CArchive::operator>>(unsigned& u)
+ { return CArchive::operator>>((LONG&)u); }
+_AFX_INLINE CArchive& CArchive::operator>>(short& w)
+ { return CArchive::operator>>((WORD&)w); }
+_AFX_INLINE CArchive& CArchive::operator>>(char& ch)
+ { return CArchive::operator>>((BYTE&)ch); }
+_AFX_INLINE CArchive& CArchive::operator>>(BYTE& by)
+ { if (m_lpBufCur + sizeof(BYTE) > m_lpBufMax)
+ FillBuffer(sizeof(BYTE) - (UINT)(m_lpBufMax - m_lpBufCur));
+ by = *(UNALIGNED BYTE*)m_lpBufCur; m_lpBufCur += sizeof(BYTE); return *this; }
+#ifndef _MAC
+_AFX_INLINE CArchive& CArchive::operator>>(WORD& w)
+ { if (m_lpBufCur + sizeof(WORD) > m_lpBufMax)
+ FillBuffer(sizeof(WORD) - (UINT)(m_lpBufMax - m_lpBufCur));
+ w = *(UNALIGNED WORD*)m_lpBufCur; m_lpBufCur += sizeof(WORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(DWORD& dw)
+ { if (m_lpBufCur + sizeof(DWORD) > m_lpBufMax)
+ FillBuffer(sizeof(DWORD) - (UINT)(m_lpBufMax - m_lpBufCur));
+ dw = *(UNALIGNED DWORD*)m_lpBufCur; m_lpBufCur += sizeof(DWORD); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(float& f)
+ { if (m_lpBufCur + sizeof(float) > m_lpBufMax)
+ FillBuffer(sizeof(float) - (UINT)(m_lpBufMax - m_lpBufCur));
+ *(_AFX_FLOAT*)&f = *(UNALIGNED _AFX_FLOAT*)m_lpBufCur; m_lpBufCur += sizeof(float); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(double& d)
+ { if (m_lpBufCur + sizeof(double) > m_lpBufMax)
+ FillBuffer(sizeof(double) - (UINT)(m_lpBufMax - m_lpBufCur));
+ *(_AFX_DOUBLE*)&d = *(UNALIGNED _AFX_DOUBLE*)m_lpBufCur; m_lpBufCur += sizeof(double); return *this; }
+_AFX_INLINE CArchive& CArchive::operator>>(LONG& l)
+ { if (m_lpBufCur + sizeof(LONG) > m_lpBufMax)
+ FillBuffer(sizeof(LONG) - (UINT)(m_lpBufMax - m_lpBufCur));
+ l = *(UNALIGNED LONG*)m_lpBufCur; m_lpBufCur += sizeof(LONG); return *this; }
+#endif
+_AFX_INLINE CArchive::CArchive(const CArchive& /* arSrc */)
+ { }
+_AFX_INLINE void CArchive::operator=(const CArchive& /* arSrc */)
+ { }
+_AFX_INLINE CArchive& AFXAPI operator<<(CArchive& ar, const CObject* pOb)
+ { ar.WriteObject(pOb); return ar; }
+_AFX_INLINE CArchive& AFXAPI operator>>(CArchive& ar, CObject*& pOb)
+ { pOb = ar.ReadObject(NULL); return ar; }
+_AFX_INLINE CArchive& AFXAPI operator>>(CArchive& ar, const CObject*& pOb)
+ { pOb = ar.ReadObject(NULL); return ar; }
+
+
+// CDumpContext
+_AFX_INLINE int CDumpContext::GetDepth() const
+ { return m_nDepth; }
+_AFX_INLINE void CDumpContext::SetDepth(int nNewDepth)
+ { m_nDepth = nNewDepth; }
+_AFX_INLINE CDumpContext::CDumpContext(const CDumpContext& /* dcSrc */)
+ { }
+_AFX_INLINE void CDumpContext::operator=(const CDumpContext& /* dcSrc */)
+ { }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFX_INLINE
diff --git a/public/sdk/inc/mfc42/afxadv.h b/public/sdk/inc/mfc42/afxadv.h
new file mode 100644
index 000000000..972416d37
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxadv.h
@@ -0,0 +1,181 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Note: This header file contains useful classes that are documented only
+// in the MFC Technical Notes. These classes may change from version to
+// version, so be prepared to change your code accordingly if you utilize
+// this header. In the future, commonly used portions of this header
+// may be moved and officially documented.
+
+#ifndef __AFXADV_H__
+#define __AFXADV_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXADV - MFC Advanced Classes
+
+// Classes declared in this file
+
+//CObject
+ //CFile
+ //CMemFile
+ class CSharedFile; // Shared memory file
+
+ class CRecentFileList; // used in CWinApp for MRU list
+ class CDockState; // state of docking toolbars
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Shared file support
+
+class CSharedFile : public CMemFile
+{
+ DECLARE_DYNAMIC(CSharedFile)
+
+public:
+// Constructors
+ CSharedFile(UINT nAllocFlags = GMEM_DDESHARE|GMEM_MOVEABLE,
+ UINT nGrowBytes = 4096);
+
+// Attributes
+ HGLOBAL Detach();
+ void SetHandle(HGLOBAL hGlobalMemory, BOOL bAllowGrow = TRUE);
+
+// Implementation
+public:
+ virtual ~CSharedFile();
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual void Free(BYTE* lpMem);
+
+ UINT m_nAllocFlags;
+ HGLOBAL m_hGlobalMemory;
+ BOOL m_bAllowGrow;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRecentFileList
+
+#define AFX_ABBREV_FILENAME_LEN 30
+
+class CRecentFileList
+{
+// Constructors
+public:
+ CRecentFileList(UINT nStart, LPCTSTR lpszSection,
+ LPCTSTR lpszEntryFormat, int nSize,
+ int nMaxDispLen = AFX_ABBREV_FILENAME_LEN);
+
+// Attributes
+ int GetSize() const;
+ CString& operator[](int nIndex);
+
+// Operations
+ virtual void Remove(int nIndex);
+ virtual void Add(LPCTSTR lpszPathName);
+ BOOL GetDisplayName(CString& strName, int nIndex,
+ LPCTSTR lpszCurDir, int nCurDir, BOOL bAtLeastName = TRUE) const;
+ virtual void UpdateMenu(CCmdUI* pCmdUI);
+ virtual void ReadList(); // reads from registry or ini file
+ virtual void WriteList(); // writes to registry or ini file
+
+// Implementation
+ virtual ~CRecentFileList();
+
+ int m_nSize; // contents of the MRU list
+ CString* m_arrNames;
+ CString m_strSectionName; // for saving
+ CString m_strEntryFormat;
+ UINT m_nStart; // for displaying
+ int m_nMaxDisplayLength;
+ CString m_strOriginal; // original menu item contents
+};
+
+inline int CRecentFileList::GetSize() const
+ { return m_nSize; }
+inline CString& CRecentFileList::operator[](int nIndex)
+ { ASSERT(nIndex < m_nSize); return m_arrNames[nIndex]; }
+
+/////////////////////////////////////////////////////////////////////////////
+// CDockState - used for docking serialization
+
+class CDockState : public CObject
+{
+ DECLARE_SERIAL(CDockState)
+ CDockState();
+
+public:
+// Attributes
+ CPtrArray m_arrBarInfo;
+
+public:
+// Operations
+ void LoadState(LPCTSTR lpszProfileName);
+ void SaveState(LPCTSTR lpszProfileName);
+ void Clear(); //deletes all the barinfo's
+ DWORD GetVersion();
+
+// Implementation
+protected:
+ BOOL m_bScaling;
+ CRect m_rectDevice;
+ CRect m_rectClip;
+ CSize m_sizeLogical;
+ DWORD m_dwVersion;
+
+public:
+ ~CDockState();
+ virtual void Serialize(CArchive& ar);
+
+ // scaling implementation
+ void ScalePoint(CPoint& pt);
+ void ScaleRectPos(CRect& rect);
+ CSize GetScreenSize();
+ void SetScreenSize(CSize& size);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXADV_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxaete.r b/public/sdk/inc/mfc42/afxaete.r
new file mode 100644
index 000000000..c3aa8d3a7
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxaete.r
@@ -0,0 +1,92 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXAETE_R__
+#define __AFXAETE_R__
+
+#include "mrc\Types.r"
+#include "mrc\SysTypes.r"
+#include "mrc\AppleEve.r"
+#include "mrc\AERegist.r"
+#include "mrc\AEUserTe.r"
+
+
+resource 'aete' (0)
+{
+ 1,
+ 0,
+ langEnglish,
+ smRoman,
+ {
+ "Required Suite",
+ "Terms that every application should support",
+ kAERequiredSuite,
+ 1,
+ 1,
+ {}, {}, {}, {},
+
+ "MFC Suite",
+ "Terms supported by MFC applications",
+ '****',
+ 1,
+ 1,
+ {
+ "quit",
+ "Quit an application program",
+ kAERequiredSuite,
+ kAEQuitApplication,
+ noReply,
+ "",
+ replyOptional,
+ singleItem,
+ notEnumerated,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved,
+ verbEvent,
+ reserved, reserved, reserved,
+ noParams,
+ "",
+ directParamOptional,
+ singleItem,
+ notEnumerated,
+ changesState,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved,
+ {
+ "saving",
+ keyAESaveOptions,
+ enumSaveOptions,
+ "specifies whether to save currently open documents",
+ optional,
+ singleItem,
+ enumerated,
+ reserved, reserved, reserved, reserved, reserved,
+ reserved, reserved, reserved, reserved,
+ prepositionParam,
+ notFeminine,
+ notMasculine,
+ singular
+ },
+ },
+ {}, {},
+ {
+ enumSaveOptions,
+ {
+ "yes", kAEYes, "Save objects now",
+ "no", kAENo, "Do not save objects",
+ "ask", kAEAsk, "Ask the user whether to save"
+ },
+ }
+ }
+};
+
+
+#endif
diff --git a/public/sdk/inc/mfc42/afxcmn.h b/public/sdk/inc/mfc42/afxcmn.h
new file mode 100644
index 000000000..57f99a2fc
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcmn.h
@@ -0,0 +1,919 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCMN_H__
+#define __AFXCMN_H__
+
+#ifdef _AFX_NO_AFXCMN_SUPPORT
+ #error Windows Common Control classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef IMAGE_BITMAP
+#define IMAGE_BITMAP 0
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+// RichEdit requires OLE
+#if !defined(_AFXDLL) && !defined(_USRDLL)
+ #ifdef _DEBUG
+ #pragma comment(lib, "wlmoled.lib")
+ #else
+ #pragma comment(lib, "wlmole.lib")
+ #endif
+#else
+ #ifdef _DEBUG
+ #pragma comment(lib, "msvcoled.lib")
+ #else
+ #pragma comment(lib, "msvcole.lib")
+ #endif
+#endif
+
+#pragma comment(lib, "uuid.lib")
+
+#ifdef _DEBUG
+ #pragma comment(lib, "ole2d.lib")
+ #pragma comment(lib, "ole2autd.lib")
+#else
+ #pragma comment(lib, "ole2.lib")
+ #pragma comment(lib, "ole2auto.lib")
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ #ifndef _RICHEDIT_
+ #include <richedit.h>
+ #endif
+ #ifdef __AFXOLE_H__ // only include richole if OLE support is included
+ #ifndef _RICHOLE_
+ #include <richole.h>
+ #define _RICHOLE_
+ #endif
+ #else
+ struct IRichEditOle;
+ struct IRichEditOleCallback;
+ #endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXCMN - MFC COMCTL32 Control Classes
+
+// Classes declared in this file
+
+//TOOLINFO
+ class CToolInfo;
+
+//CObject
+ class CImageList;
+ //CCmdTarget;
+ //CWnd
+ // class CListBox;
+ class CDragListBox;
+ class CListCtrl;
+ class CTreeCtrl;
+ class CSpinButtonCtrl;
+ class CHeaderCtrl;
+ class CSliderCtrl;
+ class CProgressCtrl;
+ class CHotKeyCtrl;
+ class CToolTipCtrl;
+ class CTabCtrl;
+ class CAnimateCtrl;
+ class CToolBarCtrl;
+ class CStatusBarCtrl;
+ class CRichEditCtrl;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolInfo
+
+#ifdef _UNICODE
+class CToolInfo : public tagTOOLINFOW
+#else
+class CToolInfo : public tagTOOLINFOA
+#endif
+{
+public:
+ TCHAR szText[256];
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDragListBox
+
+class CDragListBox : public CListBox
+{
+ DECLARE_DYNAMIC(CDragListBox)
+
+// Constructors
+public:
+ CDragListBox();
+
+// Attributes
+ int ItemFromPt(CPoint pt, BOOL bAutoScroll = TRUE) const;
+
+// Operations
+ virtual void DrawInsert(int nItem);
+
+// Overridables
+ virtual BOOL BeginDrag(CPoint pt);
+ virtual void CancelDrag(CPoint pt);
+ virtual UINT Dragging(CPoint pt);
+ virtual void Dropped(int nSrcIndex, CPoint pt);
+
+// Implementation
+public:
+ int m_nLast;
+ void DrawSingle(int nIndex);
+ virtual void PreSubclassWindow();
+ virtual ~CDragListBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CStatusBarCtrl
+
+class CStatusBarCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CStatusBarCtrl)
+
+// Constructors
+public:
+ CStatusBarCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL SetText(LPCTSTR lpszText, int nPane, int nType);
+ CString GetText(int nPane, int* pType = NULL) const;
+ int GetText(LPCTSTR lpszText, int nPane, int* pType = NULL) const;
+ int GetTextLength(int nPane, int* pType = NULL) const;
+ BOOL SetParts(int nParts, int* pWidths);
+ int GetParts(int nParts, int* pParts) const;
+ BOOL GetBorders(int* pBorders) const;
+ BOOL GetBorders(int& nHorz, int& nVert, int& nSpacing) const;
+ void SetMinHeight(int nMin);
+ BOOL SetSimple(BOOL bSimple = TRUE);
+ BOOL GetRect(int nPane, LPRECT lpRect) const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CStatusBarCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CListCtrl
+
+class CListCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CListCtrl)
+
+// Constructors
+public:
+ CListCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ COLORREF GetBkColor() const;
+ BOOL SetBkColor(COLORREF cr);
+ CImageList* GetImageList(int nImageList) const;
+ CImageList* SetImageList(CImageList* pImageList, int nImageListType);
+ int GetItemCount() const;
+ BOOL GetItem(LV_ITEM* pItem) const;
+ BOOL SetItem(const LV_ITEM* pItem);
+ BOOL SetItem(int nItem, int nSubItem, UINT nMask, LPCTSTR lpszItem,
+ int nImage, UINT nState, UINT nStateMask, LPARAM lParam);
+ UINT GetCallbackMask() const;
+ BOOL SetCallbackMask(UINT nMask);
+ int GetNextItem(int nItem, int nFlags) const;
+ BOOL GetItemRect(int nItem, LPRECT lpRect, UINT nCode) const;
+ BOOL SetItemPosition(int nItem, POINT pt);
+ BOOL GetItemPosition(int nItem, LPPOINT lpPoint) const;
+ int GetStringWidth(LPCTSTR lpsz) const;
+ CEdit* GetEditControl() const;
+ BOOL GetColumn(int nCol, LV_COLUMN* pColumn) const;
+ BOOL SetColumn(int nCol, const LV_COLUMN* pColumn);
+ int GetColumnWidth(int nCol) const;
+ BOOL SetColumnWidth(int nCol, int cx);
+ BOOL GetViewRect(LPRECT lpRect) const;
+ COLORREF GetTextColor() const;
+ BOOL SetTextColor(COLORREF cr);
+ COLORREF GetTextBkColor() const;
+ BOOL SetTextBkColor(COLORREF cr);
+ int GetTopIndex() const;
+ int GetCountPerPage() const;
+ BOOL GetOrigin(LPPOINT lpPoint) const;
+ BOOL SetItemState(int nItem, LV_ITEM* pItem);
+ BOOL SetItemState(int nItem, UINT nState, UINT nMask);
+ UINT GetItemState(int nItem, UINT nMask) const;
+ CString GetItemText(int nItem, int nSubItem) const;
+ int GetItemText(int nItem, int nSubItem, LPTSTR lpszText, int nLen) const;
+ BOOL SetItemText(int nItem, int nSubItem, LPCTSTR lpszText);
+ void SetItemCount(int nItems);
+ BOOL SetItemData(int nItem, DWORD dwData);
+ DWORD GetItemData(int nItem) const;
+ UINT GetSelectedCount() const;
+
+// Operations
+ int InsertItem(const LV_ITEM* pItem);
+ int InsertItem(int nItem, LPCTSTR lpszItem);
+ int InsertItem(int nItem, LPCTSTR lpszItem, int nImage);
+ BOOL DeleteItem(int nItem);
+ BOOL DeleteAllItems();
+ int FindItem(LV_FINDINFO* pFindInfo, int nStart = -1) const;
+ int HitTest(LV_HITTESTINFO* pHitTestInfo) const;
+ int HitTest(CPoint pt, UINT* pFlags = NULL) const;
+ BOOL EnsureVisible(int nItem, BOOL bPartialOK);
+ BOOL Scroll(CSize size);
+ BOOL RedrawItems(int nFirst, int nLast);
+ BOOL Arrange(UINT nCode);
+ CEdit* EditLabel(int nItem);
+ int InsertColumn(int nCol, const LV_COLUMN* pColumn);
+ int InsertColumn(int nCol, LPCTSTR lpszColumnHeading,
+ int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1);
+ BOOL DeleteColumn(int nCol);
+ CImageList* CreateDragImage(int nItem, LPPOINT lpPoint);
+ BOOL Update(int nItem);
+ BOOL SortItems(PFNLVCOMPARE pfnCompare, DWORD dwData);
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ int InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState,
+ UINT nStateMask, int nImage, LPARAM lParam);
+ virtual ~CListCtrl();
+protected:
+ void RemoveImageList(int nImageList);
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+protected:
+ //{{AFX_MSG(CListCtrl)
+ afx_msg void OnNcDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTreeCtrl
+
+class CTreeCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CTreeCtrl)
+
+// Constructors
+public:
+ CTreeCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL GetItemRect(HTREEITEM hItem, LPRECT lpRect, BOOL bTextOnly) const;
+ UINT GetCount() const;
+ UINT GetIndent() const;
+ void SetIndent(UINT nIndent);
+ CImageList* GetImageList(UINT nImageList) const;
+ CImageList* SetImageList(CImageList* pImageList, int nImageListType);
+ HTREEITEM GetNextItem(HTREEITEM hItem, UINT nCode) const;
+ HTREEITEM GetChildItem(HTREEITEM hItem) const;
+ HTREEITEM GetNextSiblingItem(HTREEITEM hItem) const;
+ HTREEITEM GetPrevSiblingItem(HTREEITEM hItem) const;
+ HTREEITEM GetParentItem(HTREEITEM hItem) const;
+ HTREEITEM GetFirstVisibleItem() const;
+ HTREEITEM GetNextVisibleItem(HTREEITEM hItem) const;
+ HTREEITEM GetPrevVisibleItem(HTREEITEM hItem) const;
+ HTREEITEM GetSelectedItem() const;
+ HTREEITEM GetDropHilightItem() const;
+ HTREEITEM GetRootItem() const;
+ BOOL GetItem(TV_ITEM* pItem) const;
+ CString GetItemText(HTREEITEM hItem) const;
+ BOOL GetItemImage(HTREEITEM hItem, int& nImage, int& nSelectedImage) const;
+ UINT GetItemState(HTREEITEM hItem, UINT nStateMask) const;
+ DWORD GetItemData(HTREEITEM hItem) const;
+ BOOL SetItem(TV_ITEM* pItem);
+ BOOL SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR lpszItem, int nImage,
+ int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam);
+ BOOL SetItemText(HTREEITEM hItem, LPCTSTR lpszItem);
+ BOOL SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage);
+ BOOL SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask);
+ BOOL SetItemData(HTREEITEM hItem, DWORD dwData);
+ BOOL ItemHasChildren(HTREEITEM hItem) const;
+ CEdit* GetEditControl() const;
+ UINT GetVisibleCount() const;
+
+// Operations
+ HTREEITEM InsertItem(LPTV_INSERTSTRUCT lpInsertStruct);
+ HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage,
+ int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam,
+ HTREEITEM hParent, HTREEITEM hInsertAfter);
+ HTREEITEM InsertItem(LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT,
+ HTREEITEM hInsertAfter = TVI_LAST);
+ HTREEITEM InsertItem(LPCTSTR lpszItem, int nImage, int nSelectedImage,
+ HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
+ BOOL DeleteItem(HTREEITEM hItem);
+ BOOL DeleteAllItems();
+ BOOL Expand(HTREEITEM hItem, UINT nCode);
+ BOOL Select(HTREEITEM hItem, UINT nCode);
+ BOOL SelectItem(HTREEITEM hItem);
+ BOOL SelectDropTarget(HTREEITEM hItem);
+ BOOL SelectSetFirstVisible(HTREEITEM hItem);
+ CEdit* EditLabel(HTREEITEM hItem);
+ HTREEITEM HitTest(CPoint pt, UINT* pFlags = NULL) const;
+ HTREEITEM HitTest(TV_HITTESTINFO* pHitTestInfo) const;
+ CImageList* CreateDragImage(HTREEITEM hItem);
+ BOOL SortChildren(HTREEITEM hItem);
+ BOOL EnsureVisible(HTREEITEM hItem);
+ BOOL SortChildrenCB(LPTV_SORTCB pSort);
+
+// Implementation
+protected:
+ void RemoveImageList(int nImageList);
+public:
+ virtual ~CTreeCtrl();
+ //{{AFX_MSG(CTreeCtrl)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSpinButtonCtrl
+
+class CSpinButtonCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CSpinButtonCtrl)
+
+// Constructors
+public:
+ CSpinButtonCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL SetAccel(int nAccel, UDACCEL* pAccel);
+ UINT GetAccel(int nAccel, UDACCEL* pAccel) const;
+ int SetBase(int nBase);
+ UINT GetBase() const;
+ CWnd* SetBuddy(CWnd* pWndBuddy);
+ CWnd* GetBuddy() const;
+ int SetPos(int nPos);
+ int GetPos() const;
+ void SetRange(int nLower, int nUpper);
+ DWORD GetRange() const;
+ void GetRange(int &lower, int& upper) const;
+
+// Implementation
+public:
+ virtual ~CSpinButtonCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSliderCtrl
+
+class CSliderCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CSliderCtrl)
+
+// Constructors
+public:
+ CSliderCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetLineSize() const;
+ int SetLineSize(int nSize);
+ int GetPageSize() const;
+ int SetPageSize(int nSize);
+ int GetRangeMax() const;
+ int GetRangeMin() const;
+ void GetRange(int& nMin, int& nMax) const;
+ void SetRangeMin(int nMin, BOOL bRedraw = FALSE);
+ void SetRangeMax(int nMax, BOOL bRedraw = FALSE);
+ void SetRange(int nMin, int nMax, BOOL bRedraw = FALSE);
+ void GetSelection(int& nMin, int& nMax) const;
+ void SetSelection(int nMin, int nMax);
+ void GetChannelRect(LPRECT lprc) const;
+ void GetThumbRect(LPRECT lprc) const;
+ int GetPos() const;
+ void SetPos(int nPos);
+ UINT GetNumTics() const;
+ DWORD* GetTicArray() const;
+ int GetTic(int nTic) const;
+ int GetTicPos(int nTic) const;
+ BOOL SetTic(int nTic);
+ void SetTicFreq(int nFreq);
+
+// Operations
+ void ClearSel(BOOL bRedraw = FALSE);
+ void VerifyPos();
+ void ClearTics(BOOL bRedraw = FALSE);
+
+// Implementation
+public:
+ virtual ~CSliderCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CProgressCtrl
+
+class CProgressCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CProgressCtrl)
+
+// Constructors
+public:
+ CProgressCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetRange(int nLower, int nUpper);
+ int SetPos(int nPos);
+ int OffsetPos(int nPos);
+ int SetStep(int nStep);
+
+// Operations
+ int StepIt();
+
+// Implementation
+public:
+ virtual ~CProgressCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CHeaderCtrl
+
+class CHeaderCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CHeaderCtrl)
+
+// Constructors
+public:
+ CHeaderCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetItemCount() const;
+ BOOL GetItem(int nPos, HD_ITEM* pHeaderItem) const;
+ BOOL SetItem(int nPos, HD_ITEM* pHeaderItem);
+
+// Operations
+ int InsertItem(int nPos, HD_ITEM* phdi);
+ BOOL DeleteItem(int nPos);
+ BOOL Layout(HD_LAYOUT* pHeaderLayout);
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CHeaderCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CHotKeyCtrl
+
+class CHotKeyCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CHotKeyCtrl)
+
+// Constructors
+public:
+ CHotKeyCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetHotKey(WORD wVirtualKeyCode, WORD wModifiers);
+ DWORD GetHotKey() const;
+ void GetHotKey(WORD &wVirtualKeyCode, WORD &wModifiers) const;
+
+// Operations
+ void SetRules(WORD wInvalidComb, WORD wModifiers);
+
+// Implementation
+public:
+ virtual ~CHotKeyCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolTipCtrl
+
+class CToolTipCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CToolTipCtrl)
+
+// Constructors
+public:
+ CToolTipCtrl();
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle = 0);
+
+// Attributes
+ void GetText(CString& str, CWnd* pWnd, UINT nIDTool = 0) const;
+ BOOL GetToolInfo(CToolInfo& ToolInfo, CWnd* pWnd, UINT nIDTool = 0) const;
+ void SetToolInfo(LPTOOLINFO lpToolInfo);
+ void SetToolRect(CWnd* pWnd, UINT nIDTool, LPCRECT lpRect);
+ int GetToolCount() const;
+
+// Operations
+ void Activate(BOOL bActivate);
+
+ BOOL AddTool(CWnd* pWnd, UINT nIDText, LPCRECT lpRectTool = NULL,
+ UINT nIDTool = 0);
+ BOOL AddTool(CWnd* pWnd, LPCTSTR lpszText = LPSTR_TEXTCALLBACK,
+ LPCRECT lpRectTool = NULL, UINT nIDTool = 0);
+
+ void DelTool(CWnd* pWnd, UINT nIDTool = 0);
+
+ BOOL HitTest(CWnd* pWnd, CPoint pt, LPTOOLINFO lpToolInfo) const;
+ void RelayEvent(LPMSG lpMsg);
+ void SetDelayTime(UINT nDelay);
+ void UpdateTipText(LPCTSTR lpszText, CWnd* pWnd, UINT nIDTool = 0);
+ void UpdateTipText(UINT nIDText, CWnd* pWnd, UINT nIDTool = 0);
+
+// Implementation
+public:
+ void FillInToolInfo(TOOLINFO& ti, CWnd* pWnd, UINT nIDTool) const;
+ virtual ~CToolTipCtrl();
+ BOOL DestroyToolTipCtrl();
+
+protected:
+ //{{AFX_MSG(CToolTipCtrl)
+ afx_msg LRESULT OnDisableModal(WPARAM, LPARAM);
+ afx_msg LRESULT OnWindowFromPoint(WPARAM, LPARAM);
+ afx_msg LRESULT OnAddTool(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ CMapStringToPtr m_mapString;
+
+ friend class CWnd;
+ friend class CToolBar;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTabCtrl
+
+class CTabCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CTabCtrl)
+
+// Constructors
+public:
+ CTabCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ CImageList* GetImageList() const;
+ CImageList* SetImageList(CImageList* pImageList);
+ int GetItemCount() const;
+ BOOL GetItem(int nItem, TC_ITEM* pTabCtrlItem) const;
+ BOOL SetItem(int nItem, TC_ITEM* pTabCtrlItem);
+ BOOL GetItemRect(int nItem, LPRECT lpRect) const;
+ int GetCurSel() const;
+ int SetCurSel(int nItem);
+ CSize SetItemSize(CSize size);
+ void SetPadding(CSize size);
+ int GetRowCount() const;
+ CToolTipCtrl* GetTooltips() const;
+ void SetTooltips(CToolTipCtrl* pWndTip);
+ int GetCurFocus() const;
+
+// Operations
+ BOOL InsertItem(int nItem, TC_ITEM* pTabCtrlItem);
+ BOOL DeleteItem(int nItem);
+ BOOL DeleteAllItems();
+ void AdjustRect(BOOL bLarger, LPRECT lpRect);
+ void RemoveImage(int nImage);
+ int HitTest(TC_HITTESTINFO* pHitTestInfo) const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CTabCtrl();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+ //{{AFX_MSG(CTabCtrl)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CAnimateCtrl
+
+class CAnimateCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CAnimateCtrl)
+
+// Constructors
+public:
+ CAnimateCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Operations
+ BOOL Open(LPCTSTR lpszFileName);
+ BOOL Open(UINT nID);
+ BOOL Play(UINT nFrom, UINT nTo, UINT nRep);
+ BOOL Stop();
+ BOOL Close();
+ BOOL Seek(UINT nTo);
+
+// Implementation
+public:
+ virtual ~CAnimateCtrl();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CImageList
+
+class CImageList : public CObject
+{
+ DECLARE_DYNCREATE(CImageList)
+
+// Constructors
+public:
+ CImageList();
+ BOOL Create(int cx, int cy, UINT nFlags, int nInitial, int nGrow);
+ BOOL Create(UINT nBitmapID, int cx, int nGrow, COLORREF crMask);
+ BOOL Create(LPCTSTR lpszBitmapID, int cx, int nGrow, COLORREF crMask);
+ BOOL Create(CImageList& imagelist1, int nImage1, CImageList& imagelist2,
+ int nImage2, int dx, int dy);
+
+// Attributes
+ HIMAGELIST m_hImageList; // must be first data member
+ operator HIMAGELIST() const;
+ HIMAGELIST GetSafeHandle() const;
+
+ static CImageList* PASCAL FromHandle(HIMAGELIST hImageList);
+ static CImageList* PASCAL FromHandlePermanent(HIMAGELIST hImageList);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HIMAGELIST hImageList);
+ HIMAGELIST Detach();
+
+ int GetImageCount() const;
+ COLORREF SetBkColor(COLORREF cr);
+ COLORREF GetBkColor() const;
+ BOOL GetImageInfo(int nImage, IMAGEINFO* pImageInfo) const;
+
+// Operations
+ BOOL DeleteImageList();
+
+ int Add(CBitmap* pbmImage, CBitmap* pbmMask);
+ int Add(CBitmap* pbmImage, COLORREF crMask);
+ BOOL Remove(int nImage);
+ BOOL Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask);
+ int Add(HICON hIcon);
+ int Replace(int nImage, HICON hIcon);
+ HICON ExtractIcon(int nImage);
+ BOOL Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle);
+ BOOL SetOverlayImage(int nImage, int nOverlay);
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ BOOL Read(CArchive* pArchive);
+ BOOL Write(CArchive* pArchive);
+#endif
+
+// Drag APIs
+ BOOL BeginDrag(int nImage, CPoint ptHotSpot);
+ static void PASCAL EndDrag();
+ static BOOL PASCAL DragMove(CPoint pt);
+ BOOL SetDragCursorImage(int nDrag, CPoint ptHotSpot);
+ static BOOL PASCAL DragShowNolock(BOOL bShow);
+ static CImageList* PASCAL GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot);
+ static BOOL PASCAL DragEnter(CWnd* pWndLock, CPoint point);
+ static BOOL PASCAL DragLeave(CWnd* pWndLock);
+
+// Implementation
+public:
+ virtual ~CImageList();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolBarCtrl
+
+class CToolBarCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CToolBarCtrl)
+// Construction
+public:
+ CToolBarCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+public:
+ BOOL IsButtonEnabled(int nID) const;
+ BOOL IsButtonChecked(int nID) const;
+ BOOL IsButtonPressed(int nID) const;
+ BOOL IsButtonHidden(int nID) const;
+ BOOL IsButtonIndeterminate(int nID) const;
+ BOOL SetState(int nID, UINT nState);
+ int GetState(int nID) const;
+ BOOL GetButton(int nIndex, LPTBBUTTON lpButton) const;
+ int GetButtonCount() const;
+ BOOL GetItemRect(int nIndex, LPRECT lpRect) const;
+ void SetButtonStructSize(int nSize);
+ BOOL SetButtonSize(CSize size);
+ BOOL SetBitmapSize(CSize size);
+ CToolTipCtrl* GetToolTips() const;
+ void SetToolTips(CToolTipCtrl* pTip);
+ void SetOwner(CWnd* pWnd);
+ void SetRows(int nRows, BOOL bLarger, LPRECT lpRect);
+ int GetRows() const;
+ BOOL SetCmdID(int nIndex, UINT nID);
+ UINT GetBitmapFlags() const;
+
+// Operations
+public:
+ BOOL EnableButton(int nID, BOOL bEnable = TRUE);
+ BOOL CheckButton(int nID, BOOL bCheck = TRUE);
+ BOOL PressButton(int nID, BOOL bPress = TRUE);
+ BOOL HideButton(int nID, BOOL bHide = TRUE);
+ BOOL Indeterminate(int nID, BOOL bIndeterminate = TRUE);
+ int AddBitmap(int nNumButtons, UINT nBitmapID);
+ int AddBitmap(int nNumButtons, CBitmap* pBitmap);
+ BOOL AddButtons(int nNumButtons, LPTBBUTTON lpButtons);
+ BOOL InsertButton(int nIndex, LPTBBUTTON lpButton);
+ BOOL DeleteButton(int nIndex);
+ UINT CommandToIndex(UINT nID) const;
+ void SaveState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
+ LPCTSTR lpszValueName);
+ void RestoreState(HKEY hKeyRoot, LPCTSTR lpszSubKey,
+ LPCTSTR lpszValueName);
+
+ void Customize();
+ int AddString(UINT nStringID);
+ int AddStrings(LPCTSTR lpszStrings);
+ void AutoSize();
+
+// Implementation
+public:
+ virtual ~CToolBarCtrl();
+
+protected:
+ //{{AFX_MSG(CToolBarCtrl)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditCtrl
+
+class CRichEditCtrl : public CWnd
+{
+ DECLARE_DYNAMIC(CRichEditCtrl)
+
+// Constructors
+public:
+ CRichEditCtrl();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL CanUndo() const;
+ int GetLineCount() const;
+ BOOL GetModify() const;
+ void SetModify(BOOL bModified = TRUE);
+ void GetRect(LPRECT lpRect) const;
+ CPoint GetCharPos(long lChar) const;
+ void SetOptions(WORD wOp, DWORD dwFlags);
+
+ // NOTE: first word in lpszBuffer must contain the size of the buffer!
+ int GetLine(int nIndex, LPTSTR lpszBuffer) const;
+ int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
+
+ BOOL CanPaste(UINT nFormat = 0) const;
+ void GetSel(long& nStartChar, long& nEndChar) const;
+ void GetSel(CHARRANGE &cr) const;
+ void LimitText(long nChars = 0);
+ long LineFromChar(long nIndex) const;
+ void SetSel(long nStartChar, long nEndChar);
+ void SetSel(CHARRANGE &cr);
+ DWORD GetDefaultCharFormat(CHARFORMAT &cf) const;
+ DWORD GetSelectionCharFormat(CHARFORMAT &cf) const;
+ long GetEventMask() const;
+ long GetLimitText() const;
+ DWORD GetParaFormat(PARAFORMAT &pf) const;
+ // richedit EM_GETSELTEXT is ANSI
+ long GetSelText(LPSTR lpBuf) const;
+ CString GetSelText() const;
+ WORD GetSelectionType() const;
+ COLORREF SetBackgroundColor(BOOL bSysColor, COLORREF cr);
+ BOOL SetDefaultCharFormat(CHARFORMAT &cf);
+ BOOL SetSelectionCharFormat(CHARFORMAT &cf);
+ BOOL SetWordCharFormat(CHARFORMAT &cf);
+ DWORD SetEventMask(DWORD dwEventMask);
+ BOOL SetParaFormat(PARAFORMAT &pf);
+ BOOL SetTargetDevice(HDC hDC, long lLineWidth);
+ BOOL SetTargetDevice(CDC &dc, long lLineWidth);
+ long GetTextLength() const;
+ BOOL SetReadOnly(BOOL bReadOnly = TRUE);
+ int GetFirstVisibleLine() const;
+
+// Operations
+ void EmptyUndoBuffer();
+
+ int LineIndex(int nLine = -1) const;
+ int LineLength(int nLine = -1) const;
+ void LineScroll(int nLines, int nChars = 0);
+ void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);
+ void SetRect(LPCRECT lpRect);
+
+ BOOL DisplayBand(LPRECT pDisplayRect);
+ long FindText(DWORD dwFlags, FINDTEXTEX* pFindText) const;
+ long FormatRange(FORMATRANGE* pfr, BOOL bDisplay = TRUE);
+ void HideSelection(BOOL bHide, BOOL bPerm);
+ void PasteSpecial(UINT nClipFormat, DWORD dvAspect = 0, HMETAFILE hMF = 0);
+ void RequestResize();
+ long StreamIn(int nFormat, EDITSTREAM &es);
+ long StreamOut(int nFormat, EDITSTREAM &es);
+
+ // Clipboard operations
+ BOOL Undo();
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+// OLE support
+ IRichEditOle* GetIRichEditOle() const;
+ BOOL SetOLECallback(IRichEditOleCallback* pCallback);
+
+// Implementation
+public:
+ virtual ~CRichEditCtrl();
+};
+#endif //!_AFX_NO_RICHEDIT_SUPPORT
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCMN_INLINE inline
+#include <afxcmn.inl>
+#undef _AFXCMN_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXCMN_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxcmn.inl b/public/sdk/inc/mfc42/afxcmn.inl
new file mode 100644
index 000000000..df6dc04ab
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcmn.inl
@@ -0,0 +1,643 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCMN.H
+
+#ifdef _AFXCMN_INLINE
+
+_AFXCMN_INLINE CDragListBox::CDragListBox()
+ { m_nLast = -1;}
+_AFXCMN_INLINE int CDragListBox::ItemFromPt(CPoint pt, BOOL bAutoScroll) const
+ {ASSERT(::IsWindow(m_hWnd)); return ::LBItemFromPt(m_hWnd, pt, bAutoScroll); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CToolBarCtrl::CToolBarCtrl()
+ { }
+_AFXCMN_INLINE BOOL CToolBarCtrl::EnableButton(int nID, BOOL bEnable)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ENABLEBUTTON, nID, MAKELPARAM(bEnable, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::CheckButton(int nID, BOOL bCheck)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_CHECKBUTTON, nID, MAKELPARAM(bCheck, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::PressButton(int nID, BOOL bPress)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_PRESSBUTTON, nID, MAKELPARAM(bPress, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::HideButton(int nID, BOOL bHide)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_HIDEBUTTON, nID, MAKELPARAM(bHide, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::Indeterminate(int nID, BOOL bIndeterminate)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_INDETERMINATE, nID, MAKELPARAM(bIndeterminate, 0)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonEnabled(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONENABLED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonChecked(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONCHECKED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonPressed(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONPRESSED, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonHidden(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONHIDDEN, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::IsButtonIndeterminate(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONINDETERMINATE, nID, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetState(int nID, UINT nState)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETSTATE, nID, MAKELPARAM(nState, 0)); }
+_AFXCMN_INLINE int CToolBarCtrl::GetState(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_GETSTATE, nID, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::AddButtons(int nNumButtons, LPTBBUTTON lpButtons)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_ADDBUTTONS, nNumButtons, (LPARAM)lpButtons); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::InsertButton(int nIndex, LPTBBUTTON lpButton)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_INSERTBUTTON, nIndex, (LPARAM)lpButton); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::DeleteButton(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_DELETEBUTTON, nIndex, 0); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::GetButton(int nIndex, LPTBBUTTON lpButton) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_GETBUTTON, nIndex, (LPARAM)lpButton); }
+_AFXCMN_INLINE int CToolBarCtrl::GetButtonCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_BUTTONCOUNT, 0, 0L); }
+_AFXCMN_INLINE UINT CToolBarCtrl::CommandToIndex(UINT nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TB_COMMANDTOINDEX, nID, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::Customize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_CUSTOMIZE, 0, 0L); }
+// lpszStrings are separated by zeroes, last one is marked by two zeroes
+_AFXCMN_INLINE int CToolBarCtrl::AddStrings(LPCTSTR lpszStrings)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_ADDSTRING, 0, (LPARAM)lpszStrings); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::GetItemRect(int nIndex, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_GETITEMRECT, nIndex, (LPARAM)lpRect); }
+_AFXCMN_INLINE void CToolBarCtrl::SetButtonStructSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_BUTTONSTRUCTSIZE, nSize, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetButtonSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETBUTTONSIZE, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetBitmapSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETBITMAPSIZE, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE void CToolBarCtrl::AutoSize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_AUTOSIZE, 0, 0L); }
+_AFXCMN_INLINE CToolTipCtrl* CToolBarCtrl::GetToolTips() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CToolTipCtrl*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TB_GETTOOLTIPS, 0, 0L)); }
+_AFXCMN_INLINE void CToolBarCtrl::SetToolTips(CToolTipCtrl* pTip)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETTOOLTIPS, (WPARAM)pTip->m_hWnd, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::SetOwner(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETPARENT, (WPARAM)pWnd->m_hWnd, 0L); }
+_AFXCMN_INLINE void CToolBarCtrl::SetRows(int nRows, BOOL bLarger, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TB_SETROWS, MAKELPARAM(nRows, bLarger), (LPARAM)lpRect); }
+_AFXCMN_INLINE int CToolBarCtrl::GetRows() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TB_GETROWS, 0, 0L); }
+_AFXCMN_INLINE BOOL CToolBarCtrl::SetCmdID(int nIndex, UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TB_SETCMDID, nIndex, nID); }
+_AFXCMN_INLINE UINT CToolBarCtrl::GetBitmapFlags() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TB_GETBITMAPFLAGS, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CStatusBarCtrl::CStatusBarCtrl()
+ { }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetText(LPCTSTR lpszText, int nPane, int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ASSERT(nPane < 256); return (BOOL) ::SendMessage(m_hWnd, SB_SETTEXT, (nPane|nType), (LPARAM)lpszText); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetParts(int nParts, int* pWidths)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_SETPARTS, nParts, (LPARAM)pWidths); }
+_AFXCMN_INLINE int CStatusBarCtrl::GetParts(int nParts, int* pParts) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, SB_GETPARTS, nParts, (LPARAM)pParts); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::GetBorders(int* pBorders) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_GETBORDERS, 0, (LPARAM)pBorders); }
+_AFXCMN_INLINE void CStatusBarCtrl::SetMinHeight(int nMin)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, SB_SETMINHEIGHT, nMin, 0L); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::SetSimple(BOOL bSimple)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_SIMPLE, bSimple, 0L); }
+_AFXCMN_INLINE BOOL CStatusBarCtrl::GetRect(int nPane, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, SB_GETRECT, nPane, (LPARAM)lpRect); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CListCtrl::CListCtrl()
+ { }
+_AFXCMN_INLINE COLORREF CListCtrl::GetBkColor() const
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETBKCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetBkColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETBKCOLOR, 0, cr); }
+_AFXCMN_INLINE CImageList* CListCtrl::GetImageList(int nImageListType) const
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, LVM_GETIMAGELIST, nImageListType, 0L)); }
+_AFXCMN_INLINE CImageList* CListCtrl::SetImageList(CImageList* pImageList, int nImageList)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST) ::SendMessage(m_hWnd, LVM_SETIMAGELIST, nImageList, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE int CListCtrl::GetItemCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::GetItem(LV_ITEM* pItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItem(const LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemState(int nItem, UINT nState, UINT nStateMask)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(nItem, 0, LVIF_STATE, NULL, 0, nState, nStateMask, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemText(int nItem, int nSubItem, LPCTSTR lpszText)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(nItem, nSubItem, LVIF_TEXT, lpszText, 0, 0, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemData(int nItem, DWORD dwData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(nItem, 0, LVIF_PARAM, NULL, 0, 0, 0, (LPARAM)dwData); }
+_AFXCMN_INLINE int CListCtrl::InsertItem(const LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_INSERTITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE int CListCtrl::InsertItem(int nItem, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(LVIF_TEXT, nItem, lpszItem, 0, 0, 0, 0); }
+_AFXCMN_INLINE int CListCtrl::InsertItem(int nItem, LPCTSTR lpszItem, int nImage)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(LVIF_TEXT|LVIF_IMAGE, nItem, lpszItem, 0, 0, nImage, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteItem(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETEITEM, nItem, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETEALLITEMS, 0, 0L); }
+_AFXCMN_INLINE UINT CListCtrl::GetCallbackMask() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETCALLBACKMASK, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetCallbackMask(UINT nMask)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCALLBACKMASK, nMask, 0); }
+_AFXCMN_INLINE int CListCtrl::GetNextItem(int nItem, int nFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETNEXTITEM, nItem, MAKELPARAM(nFlags, 0)); }
+_AFXCMN_INLINE int CListCtrl::FindItem(LV_FINDINFO* pFindInfo, int nStart) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_FINDITEM, nStart, (LPARAM)pFindInfo); }
+_AFXCMN_INLINE int CListCtrl::HitTest(LV_HITTESTINFO* pHitTestInfo) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_HITTEST, 0, (LPARAM)pHitTestInfo); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemPosition(int nItem, POINT pt)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMPOSITION32, nItem, (LPARAM)&pt); }
+_AFXCMN_INLINE BOOL CListCtrl::GetItemPosition(int nItem, LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETITEMPOSITION, nItem, (LPARAM)lpPoint); }
+_AFXCMN_INLINE int CListCtrl::GetStringWidth(LPCTSTR lpsz) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETSTRINGWIDTH, 0, (LPARAM)lpsz); }
+_AFXCMN_INLINE BOOL CListCtrl::EnsureVisible(int nItem, BOOL bPartialOK)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_ENSUREVISIBLE, nItem, MAKELPARAM(bPartialOK, 0)); }
+_AFXCMN_INLINE BOOL CListCtrl::Scroll(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SCROLL, size.cx, size.cy); }
+_AFXCMN_INLINE BOOL CListCtrl::RedrawItems(int nFirst, int nLast)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_REDRAWITEMS, nFirst, nLast); }
+_AFXCMN_INLINE BOOL CListCtrl::Arrange(UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_ARRANGE, nCode, 0L); }
+_AFXCMN_INLINE CEdit* CListCtrl::EditLabel(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle( (HWND)::SendMessage(m_hWnd, LVM_EDITLABEL, nItem, 0L)); }
+_AFXCMN_INLINE CEdit* CListCtrl::GetEditControl() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle( (HWND)::SendMessage(m_hWnd, LVM_GETEDITCONTROL, 0, 0L)); }
+_AFXCMN_INLINE BOOL CListCtrl::GetColumn(int nCol, LV_COLUMN* pColumn) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE BOOL CListCtrl::SetColumn(int nCol, const LV_COLUMN* pColumn)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE int CListCtrl::InsertColumn(int nCol, const LV_COLUMN* pColumn)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_INSERTCOLUMN, nCol, (LPARAM)pColumn); }
+_AFXCMN_INLINE BOOL CListCtrl::DeleteColumn(int nCol)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_DELETECOLUMN, nCol, 0); }
+_AFXCMN_INLINE int CListCtrl::GetColumnWidth(int nCol) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETCOLUMNWIDTH, nCol, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SetColumnWidth(int nCol, int cx)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETCOLUMNWIDTH, nCol, MAKELPARAM(cx, 0)); }
+_AFXCMN_INLINE BOOL CListCtrl::GetViewRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETVIEWRECT, 0, (LPARAM)lpRect); }
+_AFXCMN_INLINE COLORREF CListCtrl::GetTextColor() const
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETTEXTCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetTextColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETTEXTCOLOR, 0, cr); }
+_AFXCMN_INLINE COLORREF CListCtrl::GetTextBkColor() const
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF) ::SendMessage(m_hWnd, LVM_GETTEXTBKCOLOR, 0, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetTextBkColor(COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETTEXTBKCOLOR, 0, cr); }
+_AFXCMN_INLINE int CListCtrl::GetTopIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETTOPINDEX, 0, 0); }
+_AFXCMN_INLINE int CListCtrl::GetCountPerPage() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, LVM_GETCOUNTPERPAGE, 0, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::GetOrigin(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_GETORIGIN, 0, (LPARAM)lpPoint); }
+_AFXCMN_INLINE BOOL CListCtrl::Update(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_UPDATE, nItem, 0L); }
+_AFXCMN_INLINE BOOL CListCtrl::SetItemState(int nItem, LV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)pItem); }
+_AFXCMN_INLINE UINT CListCtrl::GetItemState(int nItem, UINT nMask) const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETITEMSTATE, nItem, nMask); }
+_AFXCMN_INLINE void CListCtrl::SetItemCount(int nItems)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LVM_SETITEMCOUNT, nItems, 0); }
+_AFXCMN_INLINE BOOL CListCtrl::SortItems(PFNLVCOMPARE pfnCompare, DWORD dwData)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, LVM_SORTITEMS, dwData, (LPARAM)pfnCompare); }
+_AFXCMN_INLINE UINT CListCtrl::GetSelectedCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, LVM_GETSELECTEDCOUNT, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CTreeCtrl::CTreeCtrl()
+ { }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::InsertItem(LPTV_INSERTSTRUCT lpInsertStruct)
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)lpInsertStruct); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::InsertItem(LPCTSTR lpszItem, int nImage,
+ int nSelectedImage, HTREEITEM hParent, HTREEITEM hInsertAfter)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE, lpszItem, nImage, nSelectedImage, 0, 0, 0, hParent, hInsertAfter); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::InsertItem(LPCTSTR lpszItem, HTREEITEM hParent, HTREEITEM hInsertAfter)
+ { ASSERT(::IsWindow(m_hWnd)); return InsertItem(TVIF_TEXT, lpszItem, 0, 0, 0, 0, 0, hParent, hInsertAfter); }
+_AFXCMN_INLINE BOOL CTreeCtrl::DeleteItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)hItem); }
+#pragma warning(disable: 4310)
+_AFXCMN_INLINE BOOL CTreeCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT); }
+#pragma warning(default: 4310)
+_AFXCMN_INLINE BOOL CTreeCtrl::Expand(HTREEITEM hItem, UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_EXPAND, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETCOUNT, 0, 0); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetIndent() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETINDENT, 0, 0); }
+_AFXCMN_INLINE void CTreeCtrl::SetIndent(UINT nIndent)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TVM_SETINDENT, nIndent, 0); }
+_AFXCMN_INLINE CImageList* CTreeCtrl::GetImageList(UINT nImageList) const
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TVM_GETIMAGELIST, (UINT)nImageList, 0)); }
+_AFXCMN_INLINE CImageList* CTreeCtrl::SetImageList(CImageList* pImageList, int nImageListType)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TVM_SETIMAGELIST, (UINT)nImageListType, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextItem(HTREEITEM hItem, UINT nCode) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetChildItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextSiblingItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetPrevSiblingItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUS, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetParentItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetFirstVisibleItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetNextVisibleItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetPrevVisibleItem(HTREEITEM hItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetSelectedItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CARET, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetDropHilightItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_DROPHILITE, 0); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::GetRootItem() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0); }
+_AFXCMN_INLINE BOOL CTreeCtrl::Select(HTREEITEM hItem, UINT nCode)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SELECTITEM, nCode, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SelectItem(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SelectDropTarget(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SelectSetFirstVisible(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_FIRSTVISIBLE, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::GetItem(TV_ITEM* pItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItem(TV_ITEM* pItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)pItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemText(HTREEITEM hItem, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_TEXT, lpszItem, 0, 0, 0, 0, NULL); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemImage(HTREEITEM hItem, int nImage, int nSelectedImage)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_IMAGE|TVIF_SELECTEDIMAGE, NULL, nImage, nSelectedImage, 0, 0, NULL); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_STATE, NULL, 0, 0, nState, nStateMask, NULL); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SetItemData(HTREEITEM hItem, DWORD dwData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItem(hItem, TVIF_PARAM, NULL, 0, 0, 0, 0, (LPARAM)dwData); }
+_AFXCMN_INLINE CEdit* CTreeCtrl::EditLabel(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TVM_EDITLABEL, 0, (LPARAM)hItem)); }
+_AFXCMN_INLINE HTREEITEM CTreeCtrl::HitTest(TV_HITTESTINFO* pHitTestInfo) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)pHitTestInfo); }
+_AFXCMN_INLINE CEdit* CTreeCtrl::GetEditControl() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CEdit*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TVM_GETEDITCONTROL, 0, 0)); }
+_AFXCMN_INLINE UINT CTreeCtrl::GetVisibleCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, TVM_GETVISIBLECOUNT, 0, 0); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SortChildren(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDREN, 0, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::EnsureVisible(HTREEITEM hItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_ENSUREVISIBLE, 0, (LPARAM)hItem); }
+_AFXCMN_INLINE BOOL CTreeCtrl::SortChildrenCB(LPTV_SORTCB pSort)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDRENCB, 0, (LPARAM)pSort); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CHotKeyCtrl::CHotKeyCtrl()
+ { }
+_AFXCMN_INLINE void CHotKeyCtrl::SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, HKM_SETHOTKEY, MAKEWORD(wVirtualKeyCode, wModifiers), 0L); }
+_AFXCMN_INLINE DWORD CHotKeyCtrl::GetHotKey() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, HKM_GETHOTKEY, 0, 0L); }
+_AFXCMN_INLINE void CHotKeyCtrl::SetRules(WORD wInvalidComb, WORD wModifiers)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, HKM_SETRULES, wInvalidComb, MAKELPARAM(wModifiers, 0)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE void CToolTipCtrl::Activate(BOOL bActivate)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_ACTIVATE, bActivate, 0L); }
+_AFXCMN_INLINE void CToolTipCtrl::SetToolInfo(LPTOOLINFO lpToolInfo)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_SETTOOLINFO, 0, (LPARAM)lpToolInfo); }
+_AFXCMN_INLINE void CToolTipCtrl::RelayEvent(LPMSG lpMsg)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_RELAYEVENT, 0, (LPARAM)lpMsg); }
+_AFXCMN_INLINE void CToolTipCtrl::SetDelayTime(UINT nDelay)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TTM_SETDELAYTIME, 0, nDelay); }
+_AFXCMN_INLINE int CToolTipCtrl::GetToolCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TTM_GETTOOLCOUNT, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CSpinButtonCtrl::CSpinButtonCtrl()
+ { }
+_AFXCMN_INLINE UINT CSpinButtonCtrl::GetAccel(int nAccel, UDACCEL* pAccel) const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) LOWORD(::SendMessage(m_hWnd, UDM_GETACCEL, nAccel, (LPARAM)pAccel)); }
+_AFXCMN_INLINE UINT CSpinButtonCtrl::GetBase() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) LOWORD(::SendMessage(m_hWnd, UDM_GETBASE, 0, 0l)); }
+_AFXCMN_INLINE CWnd* CSpinButtonCtrl::GetBuddy() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle((HWND) ::SendMessage(m_hWnd, UDM_GETBUDDY, 0, 0l)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::GetPos() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, UDM_GETPOS, 0, 0l)); }
+_AFXCMN_INLINE DWORD CSpinButtonCtrl::GetRange() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD) ::SendMessage(m_hWnd, UDM_GETRANGE, 0, 0l); }
+_AFXCMN_INLINE BOOL CSpinButtonCtrl::SetAccel(int nAccel, UDACCEL* pAccel)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL) LOWORD(::SendMessage(m_hWnd, UDM_SETACCEL, nAccel, (LPARAM)pAccel)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::SetBase(int nBase)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, UDM_SETBASE, nBase, 0L); }
+_AFXCMN_INLINE CWnd* CSpinButtonCtrl::SetBuddy(CWnd* pWndBuddy)
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle((HWND) ::SendMessage(m_hWnd, UDM_SETBUDDY, (WPARAM)pWndBuddy->m_hWnd, 0L)); }
+_AFXCMN_INLINE int CSpinButtonCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) (short) LOWORD(::SendMessage(m_hWnd, UDM_SETPOS, 0, MAKELPARAM(nPos, 0))); }
+_AFXCMN_INLINE void CSpinButtonCtrl::SetRange(int nLower, int nUpper)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, UDM_SETRANGE, 0, MAKELPARAM(nUpper, nLower)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CSliderCtrl::CSliderCtrl()
+ { }
+_AFXCMN_INLINE int CSliderCtrl::GetLineSize() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETLINESIZE, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::SetLineSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_SETLINESIZE, 0, nSize); }
+_AFXCMN_INLINE int CSliderCtrl::GetPageSize() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETPAGESIZE, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::SetPageSize(int nSize)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_SETPAGESIZE, 0, nSize); }
+_AFXCMN_INLINE int CSliderCtrl::GetRangeMax() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETRANGEMAX, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::GetRangeMin() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETRANGEMIN, 0, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::SetRangeMin(int nMin, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETRANGEMIN, bRedraw, nMin); }
+_AFXCMN_INLINE void CSliderCtrl::SetRangeMax(int nMax, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETRANGEMAX, bRedraw, nMax); }
+_AFXCMN_INLINE void CSliderCtrl::ClearSel(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_CLEARSEL, bRedraw, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::GetChannelRect(LPRECT lprc) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_GETCHANNELRECT, 0, (LPARAM)lprc); }
+_AFXCMN_INLINE void CSliderCtrl::GetThumbRect(LPRECT lprc) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_GETTHUMBRECT, 0, (LPARAM)lprc); }
+_AFXCMN_INLINE int CSliderCtrl::GetPos() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETPOS, 0, 0l); }
+_AFXCMN_INLINE void CSliderCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETPOS, TRUE, nPos); }
+_AFXCMN_INLINE void CSliderCtrl::VerifyPos()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETPOS, FALSE, 0L); }
+_AFXCMN_INLINE void CSliderCtrl::ClearTics(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_CLEARTICS, bRedraw, 0l); }
+_AFXCMN_INLINE UINT CSliderCtrl::GetNumTics() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT) ::SendMessage(m_hWnd, TBM_GETNUMTICS, 0, 0l); }
+_AFXCMN_INLINE DWORD* CSliderCtrl::GetTicArray() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD*) ::SendMessage(m_hWnd, TBM_GETPTICS, 0, 0l); }
+_AFXCMN_INLINE int CSliderCtrl::GetTic(int nTic) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETTIC, nTic, 0L); }
+_AFXCMN_INLINE int CSliderCtrl::GetTicPos(int nTic) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, TBM_GETTICPOS, nTic, 0L); }
+_AFXCMN_INLINE BOOL CSliderCtrl::SetTic(int nTic)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TBM_SETTIC, 0, nTic); }
+_AFXCMN_INLINE void CSliderCtrl::SetTicFreq(int nFreq)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TBM_SETTICFREQ, nFreq, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CProgressCtrl::CProgressCtrl()
+ { }
+_AFXCMN_INLINE void CProgressCtrl::SetRange(int nLower, int nUpper)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PBM_SETRANGE, 0, MAKELPARAM(nLower, nUpper)); }
+_AFXCMN_INLINE int CProgressCtrl::SetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_SETPOS, nPos, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::OffsetPos(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_DELTAPOS, nPos, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::SetStep(int nStep)
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_SETSTEP, nStep, 0L)); }
+_AFXCMN_INLINE int CProgressCtrl::StepIt()
+ { ASSERT(::IsWindow(m_hWnd)); return (int) LOWORD(::SendMessage(m_hWnd, PBM_STEPIT, 0, 0L)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CHeaderCtrl::CHeaderCtrl()
+ { }
+_AFXCMN_INLINE int CHeaderCtrl::GetItemCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int) ::SendMessage(m_hWnd, HDM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE int CHeaderCtrl::InsertItem(int nPos, HD_ITEM* phdi)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, HDM_INSERTITEM, nPos, (LPARAM)phdi); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::DeleteItem(int nPos)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_DELETEITEM, nPos, 0L); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::GetItem(int nPos, HD_ITEM* pHeaderItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_GETITEM, nPos, (LPARAM)pHeaderItem); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::SetItem(int nPos, HD_ITEM* pHeaderItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_SETITEM, nPos, (LPARAM)pHeaderItem); }
+_AFXCMN_INLINE BOOL CHeaderCtrl::Layout(HD_LAYOUT* pHeaderLayout)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, HDM_LAYOUT, 0, (LPARAM)pHeaderLayout); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CImageList::operator HIMAGELIST() const
+ { return m_hImageList;}
+_AFXCMN_INLINE HIMAGELIST CImageList::GetSafeHandle() const
+ { return (this == NULL) ? NULL : m_hImageList; }
+_AFXCMN_INLINE int CImageList::GetImageCount() const
+ { ASSERT(m_hImageList != NULL); return ImageList_GetImageCount(m_hImageList); }
+_AFXCMN_INLINE int CImageList::Add(CBitmap* pbmImage, CBitmap* pbmMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_Add(m_hImageList, (HBITMAP)pbmImage->GetSafeHandle(), (HBITMAP)pbmMask->GetSafeHandle()); }
+_AFXCMN_INLINE int CImageList::Add(CBitmap* pbmImage, COLORREF crMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_AddMasked(m_hImageList, (HBITMAP)pbmImage->GetSafeHandle(), crMask); }
+_AFXCMN_INLINE BOOL CImageList::Remove(int nImage)
+ { ASSERT(m_hImageList != NULL); return ImageList_Remove(m_hImageList, nImage); }
+_AFXCMN_INLINE BOOL CImageList::Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask)
+ { ASSERT(m_hImageList != NULL); return ImageList_Replace(m_hImageList, nImage, (HBITMAP)pbmImage->GetSafeHandle(), (HBITMAP)pbmMask->GetSafeHandle()); }
+_AFXCMN_INLINE int CImageList::Add(HICON hIcon)
+ { ASSERT(m_hImageList != NULL); return ImageList_AddIcon(m_hImageList, hIcon); }
+_AFXCMN_INLINE int CImageList::Replace(int nImage, HICON hIcon)
+ { ASSERT(m_hImageList != NULL); return ImageList_ReplaceIcon(m_hImageList, nImage, hIcon); }
+_AFXCMN_INLINE HICON CImageList::ExtractIcon(int nImage)
+ { ASSERT(m_hImageList != NULL); return ImageList_ExtractIcon(NULL, m_hImageList, nImage); }
+_AFXCMN_INLINE BOOL CImageList::Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle)
+ { ASSERT(m_hImageList != NULL); ASSERT(pDC != NULL); return ImageList_Draw(m_hImageList, nImage, pDC->GetSafeHdc(), pt.x, pt.y, nStyle); }
+_AFXCMN_INLINE COLORREF CImageList::SetBkColor(COLORREF cr)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetBkColor(m_hImageList, cr); }
+_AFXCMN_INLINE COLORREF CImageList::GetBkColor() const
+ { ASSERT(m_hImageList != NULL); return ImageList_GetBkColor(m_hImageList); }
+_AFXCMN_INLINE BOOL CImageList::SetOverlayImage(int nImage, int nOverlay)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetOverlayImage(m_hImageList, nImage, nOverlay); }
+_AFXCMN_INLINE BOOL CImageList::GetImageInfo(int nImage, IMAGEINFO* pImageInfo) const
+ { ASSERT(m_hImageList != NULL); return ImageList_GetImageInfo(m_hImageList, nImage, pImageInfo); }
+_AFXCMN_INLINE BOOL CImageList::BeginDrag(int nImage, CPoint ptHotSpot)
+ { ASSERT(m_hImageList != NULL); return ImageList_BeginDrag(m_hImageList, nImage, ptHotSpot.x, ptHotSpot.y); }
+_AFXCMN_INLINE void PASCAL CImageList::EndDrag()
+ { ImageList_EndDrag(); }
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragMove(CPoint pt)
+ { return ImageList_DragMove(pt.x, pt.y); }
+_AFXCMN_INLINE BOOL CImageList::SetDragCursorImage(int nDrag, CPoint ptHotSpot)
+ { ASSERT(m_hImageList != NULL); return ImageList_SetDragCursorImage(m_hImageList, nDrag, ptHotSpot.x, ptHotSpot.y); }
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragShowNolock(BOOL bShow)
+ {return ImageList_DragShowNolock(bShow);}
+_AFXCMN_INLINE CImageList* PASCAL CImageList::GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot)
+ {return CImageList::FromHandle(ImageList_GetDragImage(lpPoint, lpPointHotSpot));}
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragEnter(CWnd* pWndLock, CPoint point)
+ { return ImageList_DragEnter(pWndLock->GetSafeHwnd(), point.x, point.y); }
+_AFXCMN_INLINE BOOL PASCAL CImageList::DragLeave(CWnd* pWndLock)
+ { return ImageList_DragLeave(pWndLock->GetSafeHwnd()); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CTabCtrl::CTabCtrl()
+ { }
+_AFXCMN_INLINE CImageList* CTabCtrl::GetImageList() const
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TCM_GETIMAGELIST, 0, 0L)); }
+_AFXCMN_INLINE CImageList* CTabCtrl::SetImageList(CImageList* pImageList)
+ { ASSERT(::IsWindow(m_hWnd)); return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, TCM_SETIMAGELIST, 0, (LPARAM)pImageList->GetSafeHandle())); }
+_AFXCMN_INLINE int CTabCtrl::GetItemCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETITEMCOUNT, 0, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::GetItem(int nItem, TC_ITEM* pTabCtrlItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_GETITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::SetItem(int nItem, TC_ITEM* pTabCtrlItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_SETITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::InsertItem(int nItem, TC_ITEM* pTabCtrlItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem); }
+_AFXCMN_INLINE BOOL CTabCtrl::DeleteItem(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_DELETEITEM, nItem, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::DeleteAllItems()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_DELETEALLITEMS, 0, 0L); }
+_AFXCMN_INLINE BOOL CTabCtrl::GetItemRect(int nItem, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, TCM_GETITEMRECT, nItem, (LPARAM)lpRect); }
+_AFXCMN_INLINE int CTabCtrl::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETCURSEL, 0, 0L); }
+_AFXCMN_INLINE int CTabCtrl::SetCurSel(int nItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_SETCURSEL, nItem, 0L); }
+_AFXCMN_INLINE int CTabCtrl::HitTest(TC_HITTESTINFO* pHitTestInfo) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_HITTEST, 0, (LPARAM) pHitTestInfo); }
+_AFXCMN_INLINE void CTabCtrl::AdjustRect(BOOL bLarger, LPRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_ADJUSTRECT, bLarger, (LPARAM)lpRect); }
+_AFXCMN_INLINE CSize CTabCtrl::SetItemSize(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); return (CSize)::SendMessage(m_hWnd, TCM_SETITEMSIZE, 0, MAKELPARAM(size.cx,size.cy)); }
+_AFXCMN_INLINE void CTabCtrl::RemoveImage(int nImage)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_REMOVEIMAGE, nImage, 0L); }
+_AFXCMN_INLINE void CTabCtrl::SetPadding(CSize size)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_SETPADDING, 0, MAKELPARAM(size.cx, size.cy)); }
+_AFXCMN_INLINE int CTabCtrl::GetRowCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETROWCOUNT, 0, 0L); }
+_AFXCMN_INLINE CToolTipCtrl* CTabCtrl::GetTooltips() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CToolTipCtrl*)CWnd::FromHandle((HWND)::SendMessage(m_hWnd, TCM_GETTOOLTIPS, 0, 0L)); }
+_AFXCMN_INLINE void CTabCtrl::SetTooltips(CToolTipCtrl* pWndTip)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, TCM_SETTOOLTIPS, (WPARAM)pWndTip->m_hWnd, 0L); }
+_AFXCMN_INLINE int CTabCtrl::GetCurFocus() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, TCM_GETCURFOCUS, 0, 0L); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+_AFXCMN_INLINE CAnimateCtrl::CAnimateCtrl()
+ { }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Open(LPCTSTR lpszName)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, (LPARAM)lpszName); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Open(UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, nID); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Play(UINT nFrom, UINT nTo, UINT nRep)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, nRep, MAKELPARAM(nFrom, nTo)); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Stop()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_STOP, 0, 0L); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Close()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, 0L); }
+_AFXCMN_INLINE BOOL CAnimateCtrl::Seek(UINT nTo)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, 0, MAKELPARAM(nTo, nTo)); }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+_AFXCMN_INLINE CRichEditCtrl::CRichEditCtrl()
+ { }
+_AFXCMN_INLINE BOOL CRichEditCtrl::CanUndo() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0); }
+_AFXCMN_INLINE int CRichEditCtrl::GetLineCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::GetModify() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::SetModify(BOOL bModified /* = TRUE */)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0);}
+_AFXCMN_INLINE void CRichEditCtrl::GetRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect); }
+_AFXCMN_INLINE CPoint CRichEditCtrl::GetCharPos(long lChar) const
+ { ASSERT(::IsWindow(m_hWnd)); CPoint pt; ::SendMessage(m_hWnd, EM_POSFROMCHAR, (WPARAM)&pt, (LPARAM)lChar); return pt;}
+_AFXCMN_INLINE void CRichEditCtrl::SetOptions(WORD wOp, DWORD dwFlags)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETOPTIONS, (WPARAM)wOp, (LPARAM)dwFlags); }
+_AFXCMN_INLINE void CRichEditCtrl::EmptyUndoBuffer()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo)
+ {ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_REPLACESEL, (WPARAM) bCanUndo, (LPARAM)lpszNewText); }
+_AFXCMN_INLINE void CRichEditCtrl::SetRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::Undo()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXCMN_INLINE void CRichEditCtrl::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetReadOnly(BOOL bReadOnly /* = TRUE */ )
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L); }
+_AFXCMN_INLINE int CRichEditCtrl::GetFirstVisibleLine() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L); }
+_AFXCMN_INLINE BOOL CRichEditCtrl::DisplayBand(LPRECT pDisplayRect)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_DISPLAYBAND, 0, (LPARAM)pDisplayRect); }
+_AFXCMN_INLINE void CRichEditCtrl::GetSel(CHARRANGE &cr) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr); }
+
+_AFXCMN_INLINE void CRichEditCtrl::LimitText(long nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EXLIMITTEXT, 0, nChars); }
+
+_AFXCMN_INLINE long CRichEditCtrl::LineFromChar(long nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_EXLINEFROMCHAR, 0, nIndex); }
+
+_AFXCMN_INLINE void CRichEditCtrl::SetSel(CHARRANGE &cr)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EXSETSEL, 0, (LPARAM)&cr); }
+
+_AFXCMN_INLINE long CRichEditCtrl::FindText(DWORD dwFlags, FINDTEXTEX* pFindText) const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_FINDTEXTEX, dwFlags, (LPARAM)pFindText); }
+
+_AFXCMN_INLINE long CRichEditCtrl::FormatRange(FORMATRANGE* pfr, BOOL bDisplay)
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_FORMATRANGE, (WPARAM)bDisplay, (LPARAM)pfr); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetEventMask() const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_GETEVENTMASK, 0, 0L); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetLimitText() const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_GETLIMITTEXT, 0, 0L); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetSelText(LPSTR lpBuf) const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpBuf); }
+
+_AFXCMN_INLINE void CRichEditCtrl::HideSelection(BOOL bHide, BOOL bPerm)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_HIDESELECTION, bHide, bPerm); }
+
+_AFXCMN_INLINE void CRichEditCtrl::RequestResize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_REQUESTRESIZE, 0, 0L); }
+
+_AFXCMN_INLINE WORD CRichEditCtrl::GetSelectionType() const
+ { ASSERT(::IsWindow(m_hWnd)); return (WORD)::SendMessage(m_hWnd, EM_SELECTIONTYPE, 0, 0L); }
+
+_AFXCMN_INLINE COLORREF CRichEditCtrl::SetBackgroundColor(BOOL bSysColor, COLORREF cr)
+ { ASSERT(::IsWindow(m_hWnd)); return (COLORREF)::SendMessage(m_hWnd, EM_SETBKGNDCOLOR, bSysColor, cr); }
+
+_AFXCMN_INLINE DWORD CRichEditCtrl::SetEventMask(DWORD dwEventMask)
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)::SendMessage(m_hWnd, EM_SETEVENTMASK, 0, dwEventMask); }
+
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetOLECallback(IRichEditOleCallback* pCallback)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETOLECALLBACK, 0, (LPARAM)pCallback); }
+
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetTargetDevice(HDC hDC, long lLineWidth)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTARGETDEVICE, (WPARAM)hDC, lLineWidth); }
+
+_AFXCMN_INLINE BOOL CRichEditCtrl::SetTargetDevice(CDC &dc, long lLineWidth)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTARGETDEVICE, (WPARAM)dc.m_hDC, lLineWidth); }
+
+_AFXCMN_INLINE long CRichEditCtrl::StreamIn(int nFormat, EDITSTREAM &es)
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_STREAMIN, nFormat, (LPARAM)&es); }
+
+_AFXCMN_INLINE long CRichEditCtrl::StreamOut(int nFormat, EDITSTREAM &es)
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, EM_STREAMOUT, nFormat, (LPARAM)&es); }
+
+_AFXCMN_INLINE long CRichEditCtrl::GetTextLength() const
+ { ASSERT(::IsWindow(m_hWnd)); return (long)::SendMessage(m_hWnd, WM_GETTEXTLENGTH, NULL, NULL); }
+
+#endif //!_AFX_NO_RICHEDIT_SUPPORT
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXCMN_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxcoll.h b/public/sdk/inc/mfc42/afxcoll.h
new file mode 100644
index 000000000..042d43f06
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcoll.h
@@ -0,0 +1,1446 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCOLL_H__
+#define __AFXCOLL_H__
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+//CObject
+ // Arrays
+ class CByteArray; // array of BYTE
+ class CWordArray; // array of WORD
+ class CDWordArray; // array of DWORD
+ class CUIntArray; // array of UINT
+ class CPtrArray; // array of void*
+ class CObArray; // array of CObject*
+
+ // Lists
+ class CPtrList; // list of void*
+ class CObList; // list of CObject*
+
+ // Maps (aka Dictionaries)
+ class CMapWordToOb; // map from WORD to CObject*
+ class CMapWordToPtr; // map from WORD to void*
+ class CMapPtrToWord; // map from void* to WORD
+ class CMapPtrToPtr; // map from void* to void*
+
+ // Special String variants
+ class CStringArray; // array of CStrings
+ class CStringList; // list of CStrings
+ class CMapStringToPtr; // map from CString to void*
+ class CMapStringToOb; // map from CString to CObject*
+ class CMapStringToString; // map from CString to CString
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+////////////////////////////////////////////////////////////////////////////
+
+class CByteArray : public CObject
+{
+
+ DECLARE_SERIAL(CByteArray)
+public:
+
+// Construction
+ CByteArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ BYTE GetAt(int nIndex) const;
+ void SetAt(int nIndex, BYTE newElement);
+ BYTE& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const BYTE* GetData() const;
+ BYTE* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, BYTE newElement);
+ int Add(BYTE newElement);
+ int Append(const CByteArray& src);
+ void Copy(const CByteArray& src);
+
+ // overloaded operator helpers
+ BYTE operator[](int nIndex) const;
+ BYTE& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, BYTE newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CByteArray* pNewArray);
+
+// Implementation
+protected:
+ BYTE* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CByteArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef BYTE BASE_TYPE;
+ typedef BYTE BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CWordArray : public CObject
+{
+
+ DECLARE_SERIAL(CWordArray)
+public:
+
+// Construction
+ CWordArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ WORD GetAt(int nIndex) const;
+ void SetAt(int nIndex, WORD newElement);
+ WORD& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const WORD* GetData() const;
+ WORD* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, WORD newElement);
+ int Add(WORD newElement);
+ int Append(const CWordArray& src);
+ void Copy(const CWordArray& src);
+
+ // overloaded operator helpers
+ WORD operator[](int nIndex) const;
+ WORD& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, WORD newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CWordArray* pNewArray);
+
+// Implementation
+protected:
+ WORD* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CWordArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef WORD BASE_TYPE;
+ typedef WORD BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CDWordArray : public CObject
+{
+
+ DECLARE_SERIAL(CDWordArray)
+public:
+
+// Construction
+ CDWordArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ DWORD GetAt(int nIndex) const;
+ void SetAt(int nIndex, DWORD newElement);
+ DWORD& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const DWORD* GetData() const;
+ DWORD* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, DWORD newElement);
+ int Add(DWORD newElement);
+ int Append(const CDWordArray& src);
+ void Copy(const CDWordArray& src);
+
+ // overloaded operator helpers
+ DWORD operator[](int nIndex) const;
+ DWORD& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, DWORD newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CDWordArray* pNewArray);
+
+// Implementation
+protected:
+ DWORD* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CDWordArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef DWORD BASE_TYPE;
+ typedef DWORD BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CUIntArray : public CObject
+{
+
+ DECLARE_DYNAMIC(CUIntArray)
+public:
+
+// Construction
+ CUIntArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ UINT GetAt(int nIndex) const;
+ void SetAt(int nIndex, UINT newElement);
+ UINT& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const UINT* GetData() const;
+ UINT* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, UINT newElement);
+ int Add(UINT newElement);
+ int Append(const CUIntArray& src);
+ void Copy(const CUIntArray& src);
+
+ // overloaded operator helpers
+ UINT operator[](int nIndex) const;
+ UINT& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, UINT newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CUIntArray* pNewArray);
+
+// Implementation
+protected:
+ UINT* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CUIntArray();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef UINT BASE_TYPE;
+ typedef UINT BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CPtrArray : public CObject
+{
+
+ DECLARE_DYNAMIC(CPtrArray)
+public:
+
+// Construction
+ CPtrArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ void* GetAt(int nIndex) const;
+ void SetAt(int nIndex, void* newElement);
+ void*& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const void** GetData() const;
+ void** GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, void* newElement);
+ int Add(void* newElement);
+ int Append(const CPtrArray& src);
+ void Copy(const CPtrArray& src);
+
+ // overloaded operator helpers
+ void* operator[](int nIndex) const;
+ void*& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, void* newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CPtrArray* pNewArray);
+
+// Implementation
+protected:
+ void** m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CPtrArray();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef void* BASE_TYPE;
+ typedef void* BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CObArray : public CObject
+{
+
+ DECLARE_SERIAL(CObArray)
+public:
+
+// Construction
+ CObArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ CObject* GetAt(int nIndex) const;
+ void SetAt(int nIndex, CObject* newElement);
+ CObject*& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const CObject** GetData() const;
+ CObject** GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, CObject* newElement);
+ int Add(CObject* newElement);
+ int Append(const CObArray& src);
+ void Copy(const CObArray& src);
+
+ // overloaded operator helpers
+ CObject* operator[](int nIndex) const;
+ CObject*& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, CObject* newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CObArray* pNewArray);
+
+// Implementation
+protected:
+ CObject** m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CObArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef CObject* BASE_TYPE;
+ typedef CObject* BASE_ARG_TYPE;
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+
+class CStringArray : public CObject
+{
+
+ DECLARE_SERIAL(CStringArray)
+public:
+
+// Construction
+ CStringArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ CString GetAt(int nIndex) const;
+ void SetAt(int nIndex, LPCTSTR newElement);
+ CString& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const CString* GetData() const;
+ CString* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, LPCTSTR newElement);
+ int Add(LPCTSTR newElement);
+ int Append(const CStringArray& src);
+ void Copy(const CStringArray& src);
+
+ // overloaded operator helpers
+ CString operator[](int nIndex) const;
+ CString& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, LPCTSTR newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CStringArray* pNewArray);
+
+// Implementation
+protected:
+ CString* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CStringArray();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for class templates
+ typedef CString BASE_TYPE;
+ typedef LPCTSTR BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CPtrList : public CObject
+{
+
+ DECLARE_DYNAMIC(CPtrList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ void* data;
+ };
+public:
+
+// Construction
+ CPtrList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ void*& GetHead();
+ void* GetHead() const;
+ void*& GetTail();
+ void* GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ void* RemoveHead();
+ void* RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(void* newElement);
+ POSITION AddTail(void* newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CPtrList* pNewList);
+ void AddTail(CPtrList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ void*& GetNext(POSITION& rPosition); // return *Position++
+ void* GetNext(POSITION& rPosition) const; // return *Position++
+ void*& GetPrev(POSITION& rPosition); // return *Position--
+ void* GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ void*& GetAt(POSITION position);
+ void* GetAt(POSITION position) const;
+ void SetAt(POSITION pos, void* newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, void* newElement);
+ POSITION InsertAfter(POSITION position, void* newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(void* searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CPtrList();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef void* BASE_TYPE;
+ typedef void* BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CObList : public CObject
+{
+
+ DECLARE_SERIAL(CObList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ CObject* data;
+ };
+public:
+
+// Construction
+ CObList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ CObject*& GetHead();
+ CObject* GetHead() const;
+ CObject*& GetTail();
+ CObject* GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ CObject* RemoveHead();
+ CObject* RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(CObject* newElement);
+ POSITION AddTail(CObject* newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CObList* pNewList);
+ void AddTail(CObList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ CObject*& GetNext(POSITION& rPosition); // return *Position++
+ CObject* GetNext(POSITION& rPosition) const; // return *Position++
+ CObject*& GetPrev(POSITION& rPosition); // return *Position--
+ CObject* GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ CObject*& GetAt(POSITION position);
+ CObject* GetAt(POSITION position) const;
+ void SetAt(POSITION pos, CObject* newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, CObject* newElement);
+ POSITION InsertAfter(POSITION position, CObject* newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(CObject* searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CObList();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef CObject* BASE_TYPE;
+ typedef CObject* BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CStringList : public CObject
+{
+
+ DECLARE_SERIAL(CStringList)
+
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ CString data;
+ };
+public:
+
+// Construction
+ CStringList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ CString& GetHead();
+ CString GetHead() const;
+ CString& GetTail();
+ CString GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list!
+ CString RemoveHead();
+ CString RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(LPCTSTR newElement);
+ POSITION AddTail(LPCTSTR newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CStringList* pNewList);
+ void AddTail(CStringList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ CString& GetNext(POSITION& rPosition); // return *Position++
+ CString GetNext(POSITION& rPosition) const; // return *Position++
+ CString& GetPrev(POSITION& rPosition); // return *Position--
+ CString GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ CString& GetAt(POSITION position);
+ CString GetAt(POSITION position) const;
+ void SetAt(POSITION pos, LPCTSTR newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, LPCTSTR newElement);
+ POSITION InsertAfter(POSITION position, LPCTSTR newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(LPCTSTR searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD
+ // return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CStringList();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+ // local typedefs for class templates
+ typedef CString BASE_TYPE;
+ typedef LPCTSTR BASE_ARG_TYPE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapWordToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapWordToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+
+ WORD key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapWordToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(WORD key, void*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](WORD key);
+
+ // add a new (key, value) pair
+ void SetAt(WORD key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(WORD key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, WORD& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(WORD key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(WORD, UINT&) const;
+
+public:
+ ~CMapWordToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef WORD BASE_KEY;
+ typedef WORD BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapPtrToWord : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapPtrToWord)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+
+ void* key;
+ WORD value;
+ };
+
+public:
+
+// Construction
+ CMapPtrToWord(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(void* key, WORD& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ WORD& operator[](void* key);
+
+ // add a new (key, value) pair
+ void SetAt(void* key, WORD newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(void* key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, void*& rKey, WORD& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(void* key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(void*, UINT&) const;
+
+public:
+ ~CMapPtrToWord();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef void* BASE_KEY;
+ typedef void* BASE_ARG_KEY;
+ typedef WORD BASE_VALUE;
+ typedef WORD BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapPtrToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapPtrToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+
+ void* key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapPtrToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(void* key, void*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](void* key);
+
+ // add a new (key, value) pair
+ void SetAt(void* key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(void* key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, void*& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(void* key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(void*, UINT&) const;
+
+public:
+ ~CMapPtrToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+ void* GetValueAt(void* key) const;
+
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef void* BASE_KEY;
+ typedef void* BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapWordToOb : public CObject
+{
+
+ DECLARE_SERIAL(CMapWordToOb)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+
+ WORD key;
+ CObject* value;
+ };
+
+public:
+
+// Construction
+ CMapWordToOb(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(WORD key, CObject*& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ CObject*& operator[](WORD key);
+
+ // add a new (key, value) pair
+ void SetAt(WORD key, CObject* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(WORD key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, WORD& rKey, CObject*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(WORD key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(WORD, UINT&) const;
+
+public:
+ ~CMapWordToOb();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef WORD BASE_KEY;
+ typedef WORD BASE_ARG_KEY;
+ typedef CObject* BASE_VALUE;
+ typedef CObject* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToPtr : public CObject
+{
+
+ DECLARE_DYNAMIC(CMapStringToPtr)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ void* value;
+ };
+
+public:
+
+// Construction
+ CMapStringToPtr(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, void*& rValue) const;
+ BOOL LookupKey(LPCTSTR key, LPCTSTR& rKey) const;
+
+// Operations
+ // Lookup and add if not there
+ void*& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, void* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, void*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToPtr();
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef void* BASE_VALUE;
+ typedef void* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToOb : public CObject
+{
+
+ DECLARE_SERIAL(CMapStringToOb)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ CObject* value;
+ };
+
+public:
+
+// Construction
+ CMapStringToOb(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, CObject*& rValue) const;
+ BOOL LookupKey(LPCTSTR key, LPCTSTR& rKey) const;
+
+// Operations
+ // Lookup and add if not there
+ CObject*& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, CObject* newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, CObject*& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToOb();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef CObject* BASE_VALUE;
+ typedef CObject* BASE_ARG_VALUE;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+class CMapStringToString : public CObject
+{
+
+ DECLARE_SERIAL(CMapStringToString)
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ CString key;
+ CString value;
+ };
+
+public:
+
+// Construction
+ CMapStringToString(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(LPCTSTR key, CString& rValue) const;
+ BOOL LookupKey(LPCTSTR key, LPCTSTR& rKey) const;
+
+// Operations
+ // Lookup and add if not there
+ CString& operator[](LPCTSTR key);
+
+ // add a new (key, value) pair
+ void SetAt(LPCTSTR key, LPCTSTR newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(LPCTSTR key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, CString& rKey, CString& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Overridables: special non-virtual (see map implementation for details)
+ // Routine used to user-provided hash keys
+ UINT HashKey(LPCTSTR key) const;
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(LPCTSTR, UINT&) const;
+
+public:
+ ~CMapStringToString();
+
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+
+protected:
+ // local typedefs for CTypedPtrMap class template
+ typedef CString BASE_KEY;
+ typedef LPCTSTR BASE_ARG_KEY;
+ typedef CString BASE_VALUE;
+ typedef LPCTSTR BASE_ARG_VALUE;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Special include for Win32s compatibility
+//
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifndef __AFXSTATE_H__
+ #include <afxstat_.h> // for MFC private state structures
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCOLL_INLINE inline
+#include <afxcoll.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //!__AFXCOLL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxcoll.inl b/public/sdk/inc/mfc42/afxcoll.inl
new file mode 100644
index 000000000..171167c9a
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcoll.inl
@@ -0,0 +1,496 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCOLL.H
+
+#ifdef _AFXCOLL_INLINE
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CByteArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CByteArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CByteArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE BYTE CByteArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CByteArray::SetAt(int nIndex, BYTE newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE BYTE& CByteArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const BYTE* CByteArray::GetData() const
+ { return (const BYTE*)m_pData; }
+_AFXCOLL_INLINE BYTE* CByteArray::GetData()
+ { return (BYTE*)m_pData; }
+_AFXCOLL_INLINE int CByteArray::Add(BYTE newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE BYTE CByteArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE BYTE& CByteArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CWordArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CWordArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CWordArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE WORD CWordArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CWordArray::SetAt(int nIndex, WORD newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE WORD& CWordArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const WORD* CWordArray::GetData() const
+ { return (const WORD*)m_pData; }
+_AFXCOLL_INLINE WORD* CWordArray::GetData()
+ { return (WORD*)m_pData; }
+_AFXCOLL_INLINE int CWordArray::Add(WORD newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE WORD CWordArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE WORD& CWordArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CDWordArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CDWordArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CDWordArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE DWORD CDWordArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CDWordArray::SetAt(int nIndex, DWORD newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE DWORD& CDWordArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const DWORD* CDWordArray::GetData() const
+ { return (const DWORD*)m_pData; }
+_AFXCOLL_INLINE DWORD* CDWordArray::GetData()
+ { return (DWORD*)m_pData; }
+_AFXCOLL_INLINE int CDWordArray::Add(DWORD newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE DWORD CDWordArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE DWORD& CDWordArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CUIntArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CUIntArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CUIntArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE UINT CUIntArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CUIntArray::SetAt(int nIndex, UINT newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE UINT& CUIntArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const UINT* CUIntArray::GetData() const
+ { return (const UINT*)m_pData; }
+_AFXCOLL_INLINE UINT* CUIntArray::GetData()
+ { return (UINT*)m_pData; }
+_AFXCOLL_INLINE int CUIntArray::Add(UINT newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE UINT CUIntArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE UINT& CUIntArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CPtrArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CPtrArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CPtrArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE void* CPtrArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CPtrArray::SetAt(int nIndex, void* newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE void*& CPtrArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const void** CPtrArray::GetData() const
+ { return (const void**)m_pData; }
+_AFXCOLL_INLINE void** CPtrArray::GetData()
+ { return (void**)m_pData; }
+_AFXCOLL_INLINE int CPtrArray::Add(void* newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE void* CPtrArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE void*& CPtrArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CObArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CObArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CObArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE CObject* CObArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CObArray::SetAt(int nIndex, CObject* newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE CObject*& CObArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const CObject** CObArray::GetData() const
+ { return (const CObject**)m_pData; }
+_AFXCOLL_INLINE CObject** CObArray::GetData()
+ { return (CObject**)m_pData; }
+_AFXCOLL_INLINE int CObArray::Add(CObject* newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE CObject* CObArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE CObject*& CObArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CStringArray::GetSize() const
+ { return m_nSize; }
+_AFXCOLL_INLINE int CStringArray::GetUpperBound() const
+ { return m_nSize-1; }
+_AFXCOLL_INLINE void CStringArray::RemoveAll()
+ { SetSize(0); }
+_AFXCOLL_INLINE CString CStringArray::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE void CStringArray::SetAt(int nIndex, LPCTSTR newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+_AFXCOLL_INLINE CString& CStringArray::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+_AFXCOLL_INLINE const CString* CStringArray::GetData() const
+ { return (const CString*)m_pData; }
+_AFXCOLL_INLINE CString* CStringArray::GetData()
+ { return (CString*)m_pData; }
+_AFXCOLL_INLINE int CStringArray::Add(LPCTSTR newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+_AFXCOLL_INLINE CString CStringArray::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+_AFXCOLL_INLINE CString& CStringArray::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CPtrList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CPtrList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void*& CPtrList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE void* CPtrList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE void* CPtrList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CPtrList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CPtrList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE void*& CPtrList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE void*& CPtrList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void* CPtrList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CPtrList::SetAt(POSITION pos, void* newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CObList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CObList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE CObject*& CObList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CObject* CObList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE CObject* CObList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CObList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CObList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE CObject*& CObList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CObject*& CObList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE CObject* CObList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CObList::SetAt(POSITION pos, CObject* newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CStringList::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CStringList::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE CString& CStringList::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CString CStringList::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+_AFXCOLL_INLINE CString& CStringList::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE CString CStringList::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+_AFXCOLL_INLINE POSITION CStringList::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+_AFXCOLL_INLINE POSITION CStringList::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+_AFXCOLL_INLINE CString& CStringList::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+_AFXCOLL_INLINE CString& CStringList::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+_AFXCOLL_INLINE CString& CStringList::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE CString CStringList::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+_AFXCOLL_INLINE void CStringList::SetAt(POSITION pos, LPCTSTR newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapWordToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapWordToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapWordToPtr::SetAt(WORD key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapWordToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapWordToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapPtrToWord::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapPtrToWord::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapPtrToWord::SetAt(void* key, WORD newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapPtrToWord::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapPtrToWord::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapPtrToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapPtrToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapPtrToPtr::SetAt(void* key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapPtrToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapPtrToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+
+_AFXCOLL_INLINE int CMapWordToOb::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapWordToOb::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapWordToOb::SetAt(WORD key, CObject* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapWordToOb::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapWordToOb::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToPtr::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToPtr::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToPtr::SetAt(LPCTSTR key, void* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToPtr::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToPtr::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToOb::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToOb::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToOb::SetAt(LPCTSTR key, CObject* newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToOb::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToOb::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+
+////////////////////////////////////////////////////////////////////////////
+_AFXCOLL_INLINE int CMapStringToString::GetCount() const
+ { return m_nCount; }
+_AFXCOLL_INLINE BOOL CMapStringToString::IsEmpty() const
+ { return m_nCount == 0; }
+_AFXCOLL_INLINE void CMapStringToString::SetAt(LPCTSTR key, LPCTSTR newValue)
+ { (*this)[key] = newValue; }
+_AFXCOLL_INLINE POSITION CMapStringToString::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+_AFXCOLL_INLINE UINT CMapStringToString::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXCOLL_INLINE
diff --git a/public/sdk/inc/mfc42/afxcom_.h b/public/sdk/inc/mfc42/afxcom_.h
new file mode 100644
index 000000000..26de5fd26
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcom_.h
@@ -0,0 +1,463 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXCOM_.H
+//
+// THIS FILE IS FOR MFC IMPLEMENTATION ONLY.
+
+#ifndef __AFXCOM_H__
+#define __AFXCOM_H__
+
+#ifndef _OBJBASE_H_
+#include <objbase.h>
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _AFX_NOFORCE_LIBS
+#pragma comment(lib, "uuid.lib")
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifndef ASSERT
+#ifndef _INC_CRTDBG
+#include <crtdbg.h>
+#endif // _INC_CRTDBG
+#define ASSERT(x) _ASSERT(x)
+#endif // ASSERT
+
+/////////////////////////////////////////////////////////////////////////////
+
+template<class _Interface, const IID* _IID>
+class _CIP
+{
+public:
+ // Declare interface type so that the type may be available outside
+ // the scope of this template.
+ typedef _Interface Interface;
+
+ // When the compiler supports references in template params,
+ // _CLSID will be changed to a reference. To avoid conversion
+ // difficulties this function should be used to obtain the
+ // CLSID.
+ static const IID& GetIID()
+ { ASSERT(_IID != NULL); return *_IID; }
+
+ // Construct empty in preperation for assignment.
+ _CIP() : _pInterface(NULL) { }
+
+ // Copy the pointer and AddRef().
+ _CIP(const _CIP& cp) : _pInterface(cp._pInterface)
+ { _AddRef(); }
+
+ // Saves and AddRef()'s the interface
+ _CIP(Interface* pInterface) : _pInterface(pInterface)
+ { _AddRef(); }
+
+ // Copies the pointer. If bAddRef is TRUE, the interface will
+ // be AddRef()ed.
+ _CIP(Interface* pInterface, BOOL bAddRef)
+ : _pInterface(pInterface)
+ {
+ if (bAddRef)
+ {
+ ASSERT(pInterface != NULL);
+ _AddRef();
+ }
+ }
+
+ // Calls CoCreateClass with the provided CLSID.
+ _CIP(const CLSID& clsid, DWORD dwClsContext = CLSCTX_INPROC_SERVER)
+ : _pInterface(NULL)
+ {
+ HRESULT hr = CreateObject(clsid, dwClsContext);
+ ASSERT(SUCCEEDED(hr));
+ }
+
+ // Calls CoCreateClass with the provided CLSID retrieved from
+ // the string.
+ _CIP(LPOLESTR str, DWORD dwClsContext = CLSCTX_INPROC_SERVER)
+ : _pInterface(NULL)
+ {
+ HRESULT hr = CreateObject(str, dwClsContext);
+ ASSERT(SUCCEEDED(hr));
+ }
+
+ // Saves and AddRef()s the interface.
+ _CIP& operator=(Interface* pInterface)
+ {
+ if (_pInterface != pInterface)
+ {
+ Interface* pOldInterface = _pInterface;
+ _pInterface = pInterface;
+ _AddRef();
+ if (pOldInterface != NULL)
+ pOldInterface->Release();
+ }
+ return *this;
+ }
+
+ // Copies and AddRef()'s the interface.
+ _CIP& operator=(const _CIP& cp)
+ { return operator=(cp._pInterface); }
+
+ // Releases any current interface and loads the class with the
+ // provided CLSID.
+ _CIP& operator=(const CLSID& clsid)
+ {
+ HRESULT hr = CreateObject(clsid);
+ ASSERT(SUCCEEDED(hr));
+ return *this;
+ }
+
+ // Calls CoCreateClass with the provided CLSID retrieved from
+ // the string.
+ _CIP& operator=(LPOLESTR str)
+ {
+ HRESULT hr = CreateObject(str);
+ ASSERT(SUCCEEDED(hr));
+ return *this;
+ }
+
+ // If we still have an interface then Release() it. The interface
+ // may be NULL if Detach() has previosly been called, or if it was
+ // never set.
+ ~_CIP()
+ { _Release(); }
+
+ // Saves/sets the interface without AddRef()ing. This call
+ // will release any previously aquired interface.
+ void Attach(Interface* pInterface)
+ {
+ _Release();
+ _pInterface = pInterface;
+ }
+
+ // Saves/sets the interface only AddRef()ing if bAddRef is TRUE.
+ // This call will release any previously aquired interface.
+ void Attach(Interface* pInterface, BOOL bAddRef)
+ {
+ _Release();
+ _pInterface = pInterface;
+ if (bAddRef)
+ {
+ ASSERT(pInterface != NULL);
+ pInterface->AddRef();
+ }
+ }
+
+ // Simply NULL the interface pointer so that it isn't Released()'ed.
+ void Detach()
+ {
+ ASSERT(_pInterface);
+ _pInterface = NULL;
+ }
+
+ // Return the interface. This value may be NULL
+ operator Interface*() const
+ { return _pInterface; }
+
+ // Queries for the unknown and return it
+ operator IUnknown*()
+ { return _pInterface; }
+
+ // Provides minimal level assertion before use.
+ operator Interface&() const
+ { ASSERT(_pInterface); return *_pInterface; }
+
+ // Allows an instance of this class to act as though it were the
+ // actual interface. Also provides minimal assertion verification.
+ Interface& operator*() const
+ { ASSERT(_pInterface); return *_pInterface; }
+
+ // Returns the address of the interface pointer contained in this
+ // class. This is useful when using the COM/OLE interfaces to create
+ // this interface.
+ Interface** operator&()
+ {
+ _Release();
+ _pInterface = NULL;
+ return &_pInterface;
+ }
+
+ // Allows this class to be used as the interface itself.
+ // Also provides simple assertion verification.
+ Interface* operator->() const
+ { ASSERT(_pInterface != NULL); return _pInterface; }
+
+ // This operator is provided so that simple boolean expressions will
+ // work. For example: "if (p) ...".
+ // Returns TRUE if the pointer is not NULL.
+ operator BOOL() const
+ { return _pInterface != NULL; }
+
+ // Returns TRUE if the interface is NULL.
+ // This operator will be removed when support for type bool
+ // is added to the compiler.
+ BOOL operator!()
+ { return _pInterface == NULL; }
+
+ // Provides assertion verified, Release()ing of this interface.
+ void Release()
+ {
+ ASSERT(_pInterface != NULL);
+ _pInterface->Release();
+ _pInterface = NULL;
+ }
+
+ // Provides assertion verified AddRef()ing of this interface.
+ void AddRef()
+ { ASSERT(_pInterface != NULL); _pInterface->AddRef(); }
+
+ // Another way to get the interface pointer without casting.
+ Interface* GetInterfacePtr() const
+ { return _pInterface; }
+
+ // Loads an interface for the provided CLSID.
+ // Returns an HRESULT. Any previous interface is released.
+ HRESULT CreateObject(
+ const CLSID& clsid, DWORD dwClsContext=CLSCTX_INPROC_SERVER)
+ {
+ _Release();
+ HRESULT hr = CoCreateInstance(clsid, NULL, dwClsContext,
+ GetIID(), reinterpret_cast<void**>(&_pInterface));
+ ASSERT(SUCCEEDED(hr));
+ return hr;
+ }
+
+ // Creates the class specified by clsidString. clsidString may
+ // contain a class id, or a prog id string.
+ HRESULT CreateObject(
+ LPOLESTR clsidString, DWORD dwClsContext=CLSCTX_INPROC_SERVER)
+ {
+ ASSERT(clsidString != NULL);
+ CLSID clsid;
+ HRESULT hr;
+ if (clsidString[0] == '{')
+ hr = CLSIDFromString(clsidString, &clsid);
+ else
+ hr = CLSIDFromProgID(clsidString, &clsid);
+ ASSERT(SUCCEEDED(hr));
+ if (FAILED(hr))
+ return hr;
+ return CreateObject(clsid, dwClsContext);
+ }
+
+ // Performs a QI on pUnknown for the interface type returned
+ // for this class. The interface is stored. If pUnknown is
+ // NULL, or the QI fails, E_NOINTERFACE is returned and
+ // _pInterface is set to NULL.
+ HRESULT QueryInterface(IUnknown* pUnknown)
+ {
+ if (pUnknown == NULL) // Can't QI NULL
+ {
+ operator=(static_cast<Interface*>(NULL));
+ return E_NOINTERFACE;
+ }
+
+ // Query for this interface
+ Interface* pInterface;
+ HRESULT hr = pUnknown->QueryInterface(GetIID(),
+ reinterpret_cast<void**>(&pInterface));
+ if (FAILED(hr))
+ {
+ // If failed intialize interface to NULL and return HRESULT.
+ Attach(NULL);
+ return hr;
+ }
+
+ // Save the interface without AddRef()ing.
+ Attach(pInterface);
+ return hr;
+ }
+
+private:
+ // Releases only if the interface is not null.
+ // The interface is not set to NULL.
+ void _Release()
+ {
+ if (_pInterface != NULL)
+ _pInterface->Release();
+ }
+
+ // AddRefs only if the interface is not NULL
+ void _AddRef()
+ {
+ if (_pInterface != NULL)
+ _pInterface->AddRef();
+ }
+
+ // The Interface.
+ Interface* _pInterface;
+}; // class _CIP
+
+template<class _Interface, const IID* _IID>
+class CIP : public _CIP<_Interface, _IID>
+{
+public:
+ // Simplified name for base class and provide derived classes
+ // access to base type
+ typedef _CIP<_Interface, _IID> BC;
+
+ // Provideds derived classes access to the interface type.
+ typedef _Interface Interface;
+
+ // Construct empty in preperation for assignment.
+ CIP() { }
+
+ // Copy the pointer and AddRef().
+ CIP(const CIP& cp) : _CIP<_Interface, _IID>(cp) { }
+
+ // Saves and AddRef()s the interface.
+ CIP(Interface* pInterface) : _CIP<_Interface, _IID>(pInterface) { }
+
+ // Saves the interface and AddRef()s only if bAddRef is TRUE.
+ CIP(Interface* pInterface, BOOL bAddRef)
+ : _CIP<_Interface, _IID>(pInterface, bAddRef) { }
+
+ // Queries for this interface.
+ CIP(IUnknown* pUnknown)
+ {
+ if (pUnknown == NULL)
+ return;
+ Interface* pInterface;
+ HRESULT hr = pUnknown->QueryInterface(GetIID(),
+ reinterpret_cast<void**>(&pInterface));
+ ASSERT(SUCCEEDED(hr));
+ Attach(pInterface);
+ }
+
+ // Creates the interface from the CLSID.
+ CIP(const CLSID& clsid) : _CIP<_Interface, _IID>(clsid) { }
+
+ // Creates the interface from the CLSID.
+ CIP(LPOLESTR str) : _CIP<_Interface, _IID>(str) { }
+
+ // Copies and AddRef()'s the interface.
+ CIP& operator=(const CIP& cp)
+ { _CIP<_Interface, _IID>::operator=(cp); return *this; }
+
+ // Saves and AddRef()s the interface.
+ CIP& operator=(Interface* pInterface)
+ { _CIP<_Interface, _IID>::operator=(pInterface); return *this; }
+
+ CIP& operator=(IUnknown* pUnknown)
+ {
+ HRESULT hr = QueryInterface(pUnknown);
+ ASSERT(SUCCEEDED(hr));
+ return *this;
+ }
+
+ // Releases any current interface and loads the class with the
+ // provided CLSID.
+ CIP& operator=(const CLSID& clsid)
+ { _CIP<_Interface, _IID>::operator=(clsid); return *this; }
+
+ // Releases any current interface and loads the class with the
+ // provided CLSID.
+ CIP& operator=(LPOLESTR str)
+ { _CIP<_Interface, _IID>::operator=(str); return *this; }
+}; // class CIP
+
+class CIP<IUnknown, &IID_IUnknown> : public _CIP<IUnknown, &IID_IUnknown>
+{
+public:
+ // Simplified name for base class and provide derived classes
+ // access to base type
+ typedef _CIP<IUnknown, &IID_IUnknown> BC;
+
+ // Provideds derived classes access to the interface type.
+ typedef IUnknown Interface;
+
+ // Construct empty in preperation for assignment.
+ CIP() { }
+
+ // Copy the pointer and AddRef().
+ CIP(const CIP& cp) : _CIP<IUnknown, &IID_IUnknown>(cp) { }
+
+ // Saves and AddRef()s the interface.
+ CIP(Interface* pInterface)
+ : _CIP<IUnknown, &IID_IUnknown>(pInterface) { }
+
+ // Saves and then AddRef()s only if bAddRef is TRUE.
+ CIP(Interface* pInterface, BOOL bAddRef)
+ : _CIP<IUnknown, &IID_IUnknown>(pInterface, bAddRef) { }
+
+ // Creates the interface from the CLSID.
+ CIP(const CLSID& clsid) : _CIP<IUnknown, &IID_IUnknown>(clsid) { }
+
+ // Creates the interface from the CLSID.
+ CIP(LPOLESTR str) : _CIP<IUnknown, &IID_IUnknown>(str) { }
+
+ // Copies and AddRef()'s the interface.
+ CIP& operator=(const CIP& cp)
+ { _CIP<IUnknown, &IID_IUnknown>::operator=(cp); return *this; }
+
+ // Saves and AddRef()s the interface. The previously saved
+ // interface is released.
+ CIP& operator=(Interface* pInterface)
+ { _CIP<IUnknown, &IID_IUnknown>::operator=(pInterface); return *this; }
+
+ // Releases any current interface and loads the class with the
+ // provided CLSID.
+ CIP& operator=(const CLSID& clsid)
+ { _CIP<IUnknown, &IID_IUnknown>::operator=(clsid); return *this; }
+
+ // Releases any current interface and loads the class with the
+ // provided CLSID.
+ CIP& operator=(LPOLESTR str)
+ { _CIP<IUnknown, &IID_IUnknown>::operator=(str); return *this; }
+
+ // Queries for the unknown and return it
+ operator IUnknown*()
+ { return GetInterfacePtr(); }
+
+ // Verifies that pUnknown is not null and performs assignment.
+ HRESULT QueryInterface(IUnknown* pUnknown)
+ {
+ _CIP<IUnknown, &IID_IUnknown>::operator=(pUnknown);
+ return pUnknown != NULL ? S_OK : E_NOINTERFACE;
+ }
+}; // CIP<IUnknown, &IID_IUnknown>
+
+#define IPTR(x) CIP<x, &IID_##x>
+#define DEFINE_IPTR(x) typedef IPTR(x) x##Ptr;
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXCOM_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxconv.h b/public/sdk/inc/mfc42/afxconv.h
new file mode 100644
index 000000000..a401555d4
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxconv.h
@@ -0,0 +1,148 @@
+#ifndef __AFXCONV_H__
+#define __AFXCONV_H__
+
+#ifndef _OBJBASE_H_
+#include <objbase.h>
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Global UNICODE<>ANSI translation helpers
+
+LPWSTR AFXAPI AfxA2WHelper(LPWSTR lpw, LPCSTR lpa, int nChars);
+LPSTR AFXAPI AfxW2AHelper(LPSTR lpa, LPCWSTR lpw, int nChars);
+
+#define A2CW(lpa) (\
+ ((LPCSTR)lpa == NULL) ? NULL : (\
+ _convert = (lstrlenA(lpa)+1),\
+ (LPCWSTR)AfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
+ )\
+)
+
+#define A2W(lpa) (\
+ ((LPCSTR)lpa == NULL) ? NULL : (\
+ _convert = (lstrlenA(lpa)+1),\
+ AfxA2WHelper((LPWSTR) alloca(_convert*2), lpa, _convert)\
+ )\
+)
+
+#define W2CA(lpw) (\
+ ((LPCWSTR)lpw == NULL) ? NULL : (\
+ _convert = (wcslen(lpw)+1)*2,\
+ (LPCSTR)AfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
+ )\
+)
+
+#define W2A(lpw) (\
+ ((LPCWSTR)lpw == NULL) ? NULL : (\
+ _convert = (wcslen(lpw)+1)*2,\
+ AfxW2AHelper((LPSTR) alloca(_convert), lpw, _convert)\
+ )\
+)
+
+#ifndef _DEBUG
+#define USES_CONVERSION int _convert; _convert
+#else
+#define USES_CONVERSION int _convert = 0;
+#endif
+
+#ifdef _UNICODE
+ #define T2A W2A
+ #define T2CA W2CA
+ #define A2T A2W
+ #define A2CT A2CW
+ inline LPWSTR T2W(LPTSTR lp) { return lp; }
+ inline LPCWSTR T2CW(LPCTSTR lp) { return lp; }
+ inline LPTSTR W2T(LPWSTR lp) { return lp; }
+ inline LPCTSTR W2CT(LPCWSTR lp) { return lp; }
+#else
+ #define T2W A2W
+ #define T2CW A2CW
+ #define W2T W2A
+ #define W2CT W2CA
+ inline LPSTR T2A(LPTSTR lp) { return lp; }
+ inline LPCSTR T2CA(LPCTSTR lp) { return lp; }
+ inline LPTSTR A2T(LPSTR lp) { return lp; }
+ inline LPCTSTR A2CT(LPCSTR lp) { return lp; }
+#endif
+
+#define OLESTDDELIMOLE OLESTR("\\")
+
+#if defined(_UNICODE)
+// in these cases the default (TCHAR) is the same as OLECHAR
+ #define DEVMODEOLE DEVMODEW
+ #define LPDEVMODEOLE LPDEVMODEW
+ #define TEXTMETRICOLE TEXTMETRICW
+ #define LPTEXTMETRICOLE LPTEXTMETRICW
+ inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
+ inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
+ inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
+ inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
+ inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
+ inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
+ inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
+ inline LPDEVMODEW DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
+ inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODEW lp) { return lp; }
+ inline LPTEXTMETRICW TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
+ inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRICW lp) { return lp; }
+ inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr;}
+#elif defined(OLE2ANSI)
+// in these cases the default (TCHAR) is the same as OLECHAR
+ #define DEVMODEOLE DEVMODEA
+ #define LPDEVMODEOLE LPDEVMODEA
+ #define TEXTMETRICOLE TEXTMETRICA
+ #define LPTEXTMETRICOLE LPTEXTMETRICA
+ inline size_t ocslen(LPCOLESTR x) { return lstrlenA(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return lstrcpyA(dest, src); }
+ inline LPCOLESTR T2COLE(LPCTSTR lp) { return lp; }
+ inline LPCTSTR OLE2CT(LPCOLESTR lp) { return lp; }
+ inline LPOLESTR T2OLE(LPTSTR lp) { return lp; }
+ inline LPTSTR OLE2T(LPOLESTR lp) { return lp; }
+ inline LPOLESTR TASKSTRINGT2OLE(LPOLESTR lp) { return lp; }
+ inline LPTSTR TASKSTRINGOLE2T(LPOLESTR lp) { return lp; }
+ inline LPDEVMODE DEVMODEOLE2T(LPDEVMODEOLE lp) { return lp; }
+ inline LPDEVMODEOLE DEVMODET2OLE(LPDEVMODE lp) { return lp; }
+ inline LPTEXTMETRIC TEXTMETRICOLE2T(LPTEXTMETRICOLE lp) { return lp; }
+ inline LPTEXTMETRICOLE TEXTMETRICT2OLE(LPTEXTMETRIC lp) { return lp; }
+ inline BSTR BSTR2TBSTR(BSTR bstr) { return bstr; }
+#else
+ #define DEVMODEOLE DEVMODEW
+ #define LPDEVMODEOLE LPDEVMODEW
+ #define TEXTMETRICOLE TEXTMETRICW
+ #define LPTEXTMETRICOLE LPTEXTMETRICW
+ inline size_t ocslen(LPCOLESTR x) { return wcslen(x); }
+ inline OLECHAR* ocscpy(LPOLESTR dest, LPCOLESTR src) { return wcscpy(dest, src); }
+ #define T2COLE(lpa) A2CW(lpa)
+ #define T2OLE(lpa) A2W(lpa)
+ #define OLE2CT(lpo) W2CA(lpo)
+ #define OLE2T(lpo) W2A(lpo)
+ #define TASKSTRINGT2OLE(lpa) AfxTaskStringA2W(lpa)
+ #define TASKSTRINGOLE2T(lpo) AfxTaskStringW2A(lpo)
+ #define DEVMODEOLE2T(lpo) DEVMODEW2A(lpo)
+ #define DEVMODET2OLE(lpa) DEVMODEA2W(lpa)
+ #define TEXTMETRICOLE2T(lptmw) TEXTMETRICW2A(lptmw)
+ #define TEXTMETRICT2OLE(lptma) TEXTMETRICA2W(lptma)
+ #define BSTR2TBSTR(bstr) AfxBSTR2ABSTR(bstr)
+#endif
+
+#ifdef OLE2ANSI
+ #define W2OLE W2A
+ #define W2COLE W2CA
+ #define OLE2W A2W
+ #define OLE2CW A2CW
+ inline LPOLESTR A2OLE(LPSTR lp) { return lp; }
+ inline LPCOLESTR A2COLE(LPCSTR lp) { return lp; }
+ inline LPSTR OLE2A(LPOLESTR lp) { return lp; }
+ inline LPCSTR OLE2CA(LPCOLESTR lp) { return lp; }
+#else
+ #define A2OLE A2W
+ #define A2COLE A2CW
+ #define OLE2A W2A
+ #define OLE2CA W2CA
+ inline LPOLESTR W2OLE(LPWSTR lp) { return lp; }
+ inline LPCOLESTR W2COLE(LPCWSTR lp) { return lp; }
+ inline LPWSTR OLE2W(LPOLESTR lp) { return lp; }
+ inline LPCWSTR OLE2CW(LPCOLESTR lp) { return lp; }
+#endif
+
+#endif //__AFXCONV_H__
diff --git a/public/sdk/inc/mfc42/afxctl.h b/public/sdk/inc/mfc42/afxctl.h
new file mode 100644
index 000000000..16cc70aa0
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxctl.h
@@ -0,0 +1,1673 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXCTL.H - MFC OLE Control support
+
+#ifndef __AFXCTL_H__
+#define __AFXCTL_H__
+
+// make sure afxole.h is included first
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+
+// REVIEW: integration of INetSDK with main SDK may make this unnecessary
+#if (!defined(DISPID_READYSTATE)) || (!defined(DISPID_READYSTATECHANGE))
+ #include <idispids.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+//CWinApp
+ class COleControlModule; // Module housekeeping for an .OCX
+
+class CFontHolder; // For manipulating font objects
+class CPictureHolder; // For manipulating picture objects
+
+//CWnd
+ class COleControl; // OLE Control
+
+//CDialog
+ class COlePropertyPage; // OLE Property page
+
+class CPropExchange; // Abstract base for property exchange
+
+#ifndef _MAC
+//CAsyncMonikerFile
+ class CDataPathProperty; // Asynchronous properties for OLE Controls
+ class CCachedDataPathProperty; // Cached asynchronous properties for OLE Controls
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Set structure packing
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// MFC data definition for data exported from the runtime DLL
+
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// COleControlModule - base class for .OCX module
+// This object is statically linked into the control.
+
+class COleControlModule : public CWinApp
+{
+ DECLARE_DYNAMIC(COleControlModule)
+public:
+ virtual BOOL InitInstance();
+ virtual int ExitInstance();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Module state macro
+
+#define AfxGetControlModuleContext AfxGetStaticModuleState
+#define _afxModuleAddrThis AfxGetStaticModuleState()
+
+/////////////////////////////////////////////////////////////////////////////
+// Connection helper functions
+
+BOOL AFXAPI AfxConnectionAdvise(LPUNKNOWN pUnkSrc, REFIID iid,
+ LPUNKNOWN pUnkSink, BOOL bRefCount, DWORD* pdwCookie);
+
+BOOL AFXAPI AfxConnectionUnadvise(LPUNKNOWN pUnkSrc, REFIID iid,
+ LPUNKNOWN pUnkSink, BOOL bRefCount, DWORD dwCookie);
+
+/////////////////////////////////////////////////////////////////////////////
+// Event maps
+
+enum AFX_EVENTMAP_FLAGS
+{
+ afxEventCustom = 0,
+ afxEventStock = 1,
+};
+
+struct AFX_EVENTMAP_ENTRY
+{
+ AFX_EVENTMAP_FLAGS flags;
+ DISPID dispid;
+ LPCTSTR pszName;
+ LPCSTR lpszParams;
+};
+
+struct AFX_EVENTMAP
+{
+ const AFX_EVENTMAP* lpBaseEventMap;
+ const AFX_EVENTMAP_ENTRY* lpEntries;
+ DWORD* lpStockEventMask;
+};
+
+#define DECLARE_EVENT_MAP() \
+private: \
+ static const AFX_DATA AFX_EVENTMAP_ENTRY _eventEntries[]; \
+ static DWORD _dwStockEventMask; \
+protected: \
+ static const AFX_DATA AFX_EVENTMAP eventMap; \
+ virtual const AFX_EVENTMAP* GetEventMap() const;
+
+#define BEGIN_EVENT_MAP(theClass, baseClass) \
+ const AFX_EVENTMAP* theClass::GetEventMap() const \
+ { return &eventMap; } \
+ const AFX_DATADEF AFX_EVENTMAP theClass::eventMap = \
+ { &(baseClass::eventMap), theClass::_eventEntries, \
+ &theClass::_dwStockEventMask }; \
+ DWORD theClass::_dwStockEventMask = (DWORD)-1; \
+ const AFX_DATADEF AFX_EVENTMAP_ENTRY theClass::_eventEntries[] = \
+ {
+
+#define END_EVENT_MAP() \
+ { afxEventCustom, DISPID_UNKNOWN, NULL, NULL }, \
+ };
+
+#define EVENT_CUSTOM(pszName, pfnFire, vtsParams) \
+ { afxEventCustom, DISPID_UNKNOWN, _T(pszName), vtsParams },
+
+#define EVENT_CUSTOM_ID(pszName, dispid, pfnFire, vtsParams) \
+ { afxEventCustom, dispid, _T(pszName), vtsParams },
+
+#define EVENT_PARAM(vtsParams) (BYTE*)(vtsParams)
+
+/////////////////////////////////////////////////////////////////////////////
+// Stock events
+
+#define EVENT_STOCK_CLICK() \
+ { afxEventStock, DISPID_CLICK, _T("Click"), VTS_NONE },
+
+#define EVENT_STOCK_DBLCLICK() \
+ { afxEventStock, DISPID_DBLCLICK, _T("DblClick"), VTS_NONE },
+
+#define EVENT_STOCK_KEYDOWN() \
+ { afxEventStock, DISPID_KEYDOWN, _T("KeyDown"), VTS_PI2 VTS_I2 },
+
+#define EVENT_STOCK_KEYPRESS() \
+ { afxEventStock, DISPID_KEYPRESS, _T("KeyPress"), VTS_PI2 },
+
+#define EVENT_STOCK_KEYUP() \
+ { afxEventStock, DISPID_KEYUP, _T("KeyUp"), VTS_PI2 VTS_I2 },
+
+#define EVENT_STOCK_MOUSEDOWN() \
+ { afxEventStock, DISPID_MOUSEDOWN, _T("MouseDown"), \
+ VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS },
+
+#define EVENT_STOCK_MOUSEMOVE() \
+ { afxEventStock, DISPID_MOUSEMOVE, _T("MouseMove"), \
+ VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS },
+
+#define EVENT_STOCK_MOUSEUP() \
+ { afxEventStock, DISPID_MOUSEUP, _T("MouseUp"), \
+ VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS },
+
+#define EVENT_STOCK_ERROREVENT() \
+ { afxEventStock, DISPID_ERROREVENT, _T("Error"), \
+ VTS_I2 VTS_PBSTR VTS_SCODE VTS_BSTR VTS_BSTR VTS_I4 VTS_PBOOL },
+
+#define EVENT_STOCK_READYSTATECHANGE() \
+ { afxEventStock, DISPID_READYSTATECHANGE, _T("ReadyStateChange"), \
+ VTS_I4 },
+
+// Shift state values for mouse and keyboard events
+#define SHIFT_MASK 0x01
+#define CTRL_MASK 0x02
+#define ALT_MASK 0x04
+
+// Button values for mouse events
+#define LEFT_BUTTON 0x01
+#define RIGHT_BUTTON 0x02
+#define MIDDLE_BUTTON 0x04
+
+/////////////////////////////////////////////////////////////////////////////
+// Stock properties
+
+#define DISP_PROPERTY_STOCK(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnSet, 0, afxDispStock }, \
+
+#define DISP_STOCKPROP_APPEARANCE() \
+ DISP_PROPERTY_STOCK(COleControl, "Appearance", DISPID_APPEARANCE, \
+ COleControl::GetAppearance, COleControl::SetAppearance, VT_I2)
+
+#define DISP_STOCKPROP_BACKCOLOR() \
+ DISP_PROPERTY_STOCK(COleControl, "BackColor", DISPID_BACKCOLOR, \
+ COleControl::GetBackColor, COleControl::SetBackColor, VT_COLOR)
+
+#define DISP_STOCKPROP_BORDERSTYLE() \
+ DISP_PROPERTY_STOCK(COleControl, "BorderStyle", DISPID_BORDERSTYLE, \
+ COleControl::GetBorderStyle, COleControl::SetBorderStyle, VT_I2)
+
+#define DISP_STOCKPROP_CAPTION() \
+ DISP_PROPERTY_STOCK(COleControl, "Caption", DISPID_CAPTION, \
+ COleControl::GetText, COleControl::SetText, VT_BSTR)
+
+#define DISP_STOCKPROP_ENABLED() \
+ DISP_PROPERTY_STOCK(COleControl, "Enabled", DISPID_ENABLED, \
+ COleControl::GetEnabled, COleControl::SetEnabled, VT_BOOL)
+
+#define DISP_STOCKPROP_FONT() \
+ DISP_PROPERTY_STOCK(COleControl, "Font", DISPID_FONT, \
+ COleControl::GetFont, COleControl::SetFont, VT_FONT)
+
+#define DISP_STOCKPROP_FORECOLOR() \
+ DISP_PROPERTY_STOCK(COleControl, "ForeColor", DISPID_FORECOLOR, \
+ COleControl::GetForeColor, COleControl::SetForeColor, VT_COLOR)
+
+#define DISP_STOCKPROP_HWND() \
+ DISP_PROPERTY_STOCK(COleControl, "hWnd", DISPID_HWND, \
+ COleControl::GetHwnd, SetNotSupported, VT_HANDLE)
+
+#define DISP_STOCKPROP_TEXT() \
+ DISP_PROPERTY_STOCK(COleControl, "Text", DISPID_TEXT, \
+ COleControl::GetText, COleControl::SetText, VT_BSTR)
+
+#define DISP_STOCKPROP_READYSTATE() \
+ DISP_PROPERTY_STOCK(COleControl, "ReadyState", DISPID_READYSTATE, \
+ COleControl::GetReadyState, SetNotSupported, VT_I4)
+
+/////////////////////////////////////////////////////////////////////////////
+// Stock methods
+
+#define DISP_FUNCTION_STOCK(theClass, szExternalName, dispid, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnMember, (AFX_PMSG)0, 0, \
+ afxDispStock }, \
+
+#define DISP_STOCKFUNC_REFRESH() \
+ DISP_FUNCTION_STOCK(COleControl, "Refresh", DISPID_REFRESH, \
+ COleControl::Refresh, VT_EMPTY, VTS_NONE)
+
+#define DISP_STOCKFUNC_DOCLICK() \
+ DISP_FUNCTION_STOCK(COleControl, "DoClick", DISPID_DOCLICK, \
+ COleControl::DoClick, VT_EMPTY, VTS_NONE)
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for object factory and class ID
+
+#define BEGIN_OLEFACTORY(class_name) \
+protected: \
+ class class_name##Factory : public COleObjectFactoryEx \
+ { \
+ public: \
+ class_name##Factory(REFCLSID clsid, CRuntimeClass* pRuntimeClass, \
+ BOOL bMultiInstance, LPCTSTR lpszProgID) : \
+ COleObjectFactoryEx(clsid, pRuntimeClass, bMultiInstance, \
+ lpszProgID) {} \
+ virtual BOOL UpdateRegistry(BOOL);
+
+#define END_OLEFACTORY(class_name) \
+ }; \
+ friend class class_name##Factory; \
+ static AFX_DATA class_name##Factory factory; \
+public: \
+ static AFX_DATA const GUID guid; \
+ virtual HRESULT GetClassID(LPCLSID pclsid);
+
+#define DECLARE_OLECREATE_EX(class_name) \
+ BEGIN_OLEFACTORY(class_name) \
+ END_OLEFACTORY(class_name)
+
+#define IMPLEMENT_OLECREATE_EX(class_name, external_name, \
+ l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ static const TCHAR _szProgID_##class_name[] = _T(external_name); \
+ AFX_DATADEF class_name::class_name##Factory class_name::factory( \
+ class_name::guid, RUNTIME_CLASS(class_name), FALSE, \
+ _szProgID_##class_name); \
+ const AFX_DATADEF GUID class_name::guid = \
+ { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
+ HRESULT class_name::GetClassID(LPCLSID pclsid) \
+ { *pclsid = guid; return NOERROR; }
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for type name and misc status
+
+#define DECLARE_OLECTLTYPE(class_name) \
+ virtual UINT GetUserTypeNameID(); \
+ virtual DWORD GetMiscStatus();
+
+#define IMPLEMENT_OLECTLTYPE(class_name, idsUserTypeName, dwOleMisc) \
+ UINT class_name::GetUserTypeNameID() { return idsUserTypeName; } \
+ DWORD class_name::GetMiscStatus() { return dwOleMisc; }
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for property page IDs
+
+#define DECLARE_PROPPAGEIDS(class_name) \
+ protected: \
+ virtual LPCLSID GetPropPageIDs(ULONG& cPropPages);
+
+#define BEGIN_PROPPAGEIDS(class_name, count) \
+ static CLSID _rgPropPageIDs_##class_name[count]; \
+ static ULONG _cPropPages_##class_name = (ULONG)-1; \
+ LPCLSID class_name::GetPropPageIDs(ULONG& cPropPages) { \
+ if (_cPropPages_##class_name == (ULONG)-1) { \
+ _cPropPages_##class_name = count; \
+ LPCLSID pIDs = _rgPropPageIDs_##class_name; \
+ ULONG iPageMax = count; \
+ ULONG iPage = 0;
+
+#define PROPPAGEID(clsid) \
+ ASSERT(iPage < iPageMax); \
+ if (iPage < iPageMax) \
+ pIDs[iPage++] = clsid;
+
+#define END_PROPPAGEIDS(class_name) \
+ ASSERT(iPage == iPageMax); \
+ } \
+ cPropPages = _cPropPages_##class_name; \
+ return _rgPropPageIDs_##class_name; }
+
+/////////////////////////////////////////////////////////////////////////////
+// CFontHolder - helper class for dealing with font objects
+
+class CFontHolder
+{
+// Constructors
+public:
+ CFontHolder(LPPROPERTYNOTIFYSINK pNotify);
+
+// Attributes
+ LPFONT m_pFont;
+
+// Operations
+ void InitializeFont(
+ const FONTDESC* pFontDesc = NULL,
+ LPDISPATCH pFontDispAmbient = NULL);
+ void SetFont(LPFONT pNewFont);
+ void ReleaseFont();
+ HFONT GetFontHandle();
+ HFONT GetFontHandle(long cyLogical, long cyHimetric);
+ CFont* Select(CDC* pDC, long cyLogical, long cyHimetric);
+ BOOL GetDisplayString(CString& strValue);
+ LPFONTDISP GetFontDispatch();
+ void QueryTextMetrics(LPTEXTMETRIC lptm);
+
+// Implementation
+public:
+ ~CFontHolder();
+
+protected:
+ DWORD m_dwConnectCookie;
+ LPPROPERTYNOTIFYSINK m_pNotify;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPictureHolder - helper class for dealing with picture objects
+
+class CPictureHolder
+{
+// Constructors
+public:
+ CPictureHolder();
+
+// Attributes
+ LPPICTURE m_pPict;
+
+// Operations
+ BOOL CreateEmpty();
+
+ BOOL CreateFromBitmap(UINT idResource);
+ BOOL CreateFromBitmap(CBitmap* pBitmap, CPalette* pPal = NULL,
+ BOOL bTransferOwnership = TRUE);
+ BOOL CreateFromBitmap(HBITMAP hbm, HPALETTE hpal = NULL,
+ BOOL bTransferOwnership = FALSE);
+
+ BOOL CreateFromMetafile(HMETAFILE hmf, int xExt, int yExt,
+ BOOL bTransferOwnership = FALSE);
+
+ BOOL CreateFromIcon(UINT idResource);
+ BOOL CreateFromIcon(HICON hIcon, BOOL bTransferOwnership = FALSE);
+
+ short GetType();
+ BOOL GetDisplayString(CString& strValue);
+ LPPICTUREDISP GetPictureDispatch();
+ void SetPictureDispatch(LPPICTUREDISP pDisp);
+ void Render(CDC* pDC, const CRect& rcRender, const CRect& rcWBounds);
+
+// Implementation
+public:
+ ~CPictureHolder();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDataPathProperty - Asynchonous properties for OLE Controls
+
+#ifndef _MAC
+
+class CDataPathProperty: public CAsyncMonikerFile
+{
+ DECLARE_DYNAMIC(CDataPathProperty)
+// Constructors
+public:
+ CDataPathProperty(COleControl* pControl = NULL);
+ CDataPathProperty(LPCTSTR lpszPath, COleControl* pControl = NULL);
+ // Calls SetPath(pControl) and SetPath(lpszPath) as appropriate.
+
+// Attributes
+public:
+ void SetPath(LPCTSTR lpszPath);
+ // Sets the path to be opened by Open(COleControl*) and Open()
+ // lpszPath may be NULL.
+
+ CString GetPath() const;
+ // Returns the current path setting. Result may be empty.
+
+ COleControl* GetControl();
+ // Returns a Pointer to the control. Result may be NULL.
+
+ void SetControl(COleControl* pControl);
+ // Sets the control which will be used with Open. pControl may be NULL.
+
+// Operations
+public:
+ //REVIEW: Is this really appropriate?
+ using CAsyncMonikerFile::Open;
+ // Any of the above opens are valid.
+
+ // Overloads of Open takings some or all of: a path, a control,
+ // and a CFileException
+ // Overloads taking a COleControl call SetControl(pControl)
+ // Overloads taking an LPCTSTR cal SetPath(lpszPath)
+ virtual BOOL Open(COleControl* pControl, CFileException* pError = NULL);
+ virtual BOOL Open(LPCTSTR lpszPath, COleControl* pControl,
+ CFileException* pError = NULL);
+ virtual BOOL Open(LPCTSTR lpszPath, CFileException* pError = NULL);
+ virtual BOOL Open(CFileException* pError = NULL);
+ // Attempts to obtain an IBindHost* from the control returned by
+ // GetControl(). Calls CAsyncMonikerFile::Open with the path returned by
+ // GetPath() and, if it was obtained, the IBindHost*.
+ // Returns TRUE if successful.
+
+// Overridables
+public:
+ virtual void ResetData();
+ // Derived classes should overide this.
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+private:
+ COleControl* m_pControl;
+ CString m_strPath;
+};
+
+#endif // !_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// CCachedDataPathProperty - Cached asynchonous properties for OLE Controls
+
+#ifndef _MAC
+
+class CCachedDataPathProperty : public CDataPathProperty
+{
+ DECLARE_DYNAMIC(CCachedDataPathProperty)
+//Constructors
+public:
+ CCachedDataPathProperty(COleControl* pControl = NULL);
+ CCachedDataPathProperty(LPCTSTR lpszPath, COleControl* pControl = NULL);
+
+// Attributes
+public:
+ CMemFile m_Cache;
+
+// Implementation
+public:
+ virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);
+ virtual void Close();
+ virtual void ResetData();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// COleControl - base class for a control implemented in C++ with MFC
+
+struct _AFXCTL_ADVISE_INFO; // implementation class
+struct _AFXCTL_UIACTIVE_INFO; // implementation class
+
+class COleControl : public CWnd
+{
+ DECLARE_DYNAMIC(COleControl)
+
+// Constructors
+public:
+ COleControl();
+
+// Operations
+
+ // Initialization
+ void SetInitialSize(int cx, int cy);
+ void InitializeIIDs(const IID* piidPrimary, const IID* piidEvents);
+
+ // Invalidating
+ void InvalidateControl(LPCRECT lpRect = NULL, BOOL bErase = TRUE);
+
+ // Modified flag
+ BOOL IsModified();
+ void SetModifiedFlag(BOOL bModified = TRUE);
+
+ // Drawing operations
+ void DoSuperclassPaint(CDC* pDC, const CRect& rcBounds);
+ BOOL IsOptimizedDraw();
+
+ // Property exchange
+ BOOL ExchangeVersion(CPropExchange* pPX, DWORD dwVersionDefault,
+ BOOL bConvert = TRUE);
+ BOOL ExchangeExtent(CPropExchange* pPX);
+ void ExchangeStockProps(CPropExchange* pPX);
+ BOOL IsConvertingVBX();
+
+ DWORD SerializeVersion(CArchive& ar, DWORD dwVersionDefault,
+ BOOL bConvert = TRUE);
+ void SerializeExtent(CArchive& ar);
+ void SerializeStockProps(CArchive& ar);
+
+ void ResetVersion(DWORD dwVersionDefault);
+ void ResetStockProps();
+
+ // Stock methods
+ void Refresh();
+ void DoClick();
+
+ // Stock properties
+ short GetAppearance();
+ void SetAppearance(short);
+ OLE_COLOR GetBackColor();
+ void SetBackColor(OLE_COLOR);
+ short GetBorderStyle();
+ void SetBorderStyle(short);
+ BOOL GetEnabled();
+ void SetEnabled(BOOL);
+ CFontHolder& InternalGetFont();
+ LPFONTDISP GetFont();
+ void SetFont(LPFONTDISP);
+ OLE_COLOR GetForeColor();
+ void SetForeColor(OLE_COLOR);
+ OLE_HANDLE GetHwnd();
+ const CString& InternalGetText();
+ BSTR GetText();
+ void SetText(LPCTSTR);
+ long GetReadyState();
+ void InternalSetReadyState(long lNewReadyState);
+
+ // Using colors
+ COLORREF TranslateColor(OLE_COLOR clrColor, HPALETTE hpal = NULL);
+
+ // Using fonts
+ CFont* SelectStockFont(CDC* pDC);
+ CFont* SelectFontObject(CDC* pDC, CFontHolder& fontHolder);
+ void GetStockTextMetrics(LPTEXTMETRIC lptm);
+ void GetFontTextMetrics(LPTEXTMETRIC lptm, CFontHolder& fontHolder);
+
+ // Client site access
+ LPOLECLIENTSITE GetClientSite();
+
+ // Generic ambient property access
+ BOOL GetAmbientProperty(DISPID dispid, VARTYPE vtProp, void* pvProp);
+ BOOL WillAmbientsBeValidDuringLoad();
+
+ // Specific ambient properties
+ short AmbientAppearance();
+ OLE_COLOR AmbientBackColor();
+ CString AmbientDisplayName();
+ LPFONTDISP AmbientFont();
+ OLE_COLOR AmbientForeColor();
+ LCID AmbientLocaleID();
+ CString AmbientScaleUnits();
+ short AmbientTextAlign();
+ BOOL AmbientUserMode();
+ BOOL AmbientUIDead();
+ BOOL AmbientShowGrabHandles();
+ BOOL AmbientShowHatching();
+
+ // Firing events
+ void AFX_CDECL FireEvent(DISPID dispid, BYTE* pbParams, ...);
+
+ // Firing functions for stock events
+ void FireKeyDown(USHORT* pnChar, short nShiftState);
+ void FireKeyUp(USHORT* pnChar, short nShiftState);
+ void FireKeyPress(USHORT* pnChar);
+ void FireMouseDown(short nButton, short nShiftState,
+ OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
+ void FireMouseUp(short nButton, short nShiftState,
+ OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
+ void FireMouseMove(short nButton, short nShiftState,
+ OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y);
+ void FireClick();
+ void FireDblClick();
+ void FireError(SCODE scode, LPCTSTR lpszDescription, UINT nHelpID = 0);
+ void FireReadyStateChange();
+
+ // Changing size and/or rectangle
+ BOOL GetRectInContainer(LPRECT lpRect);
+ BOOL SetRectInContainer(LPCRECT lpRect);
+ void GetControlSize(int* pcx, int* pcy);
+ BOOL SetControlSize(int cx, int cy);
+
+ // Window management
+ void RecreateControlWindow();
+
+ // Modal dialog operations
+ void PreModalDialog(HWND hWndParent = NULL);
+ void PostModalDialog(HWND hWndParent = NULL);
+
+ // Data binding operations
+ void BoundPropertyChanged(DISPID dispid);
+ BOOL BoundPropertyRequestEdit(DISPID dispid);
+
+ // Dispatch exceptions
+ void ThrowError(SCODE sc, UINT nDescriptionID, UINT nHelpID = -1);
+ void ThrowError(SCODE sc, LPCTSTR pszDescription = NULL, UINT nHelpID = 0);
+ void GetNotSupported();
+ void SetNotSupported();
+ void SetNotPermitted();
+
+ // Communication with the control site
+ void ControlInfoChanged();
+ BOOL LockInPlaceActive(BOOL bLock);
+ LPDISPATCH GetExtendedControl();
+ void TransformCoords(POINTL* lpptlHimetric,
+ POINTF* lpptfContainer, DWORD flags);
+
+ // Simple frame
+ void EnableSimpleFrame();
+
+ // Windowless operations
+ CWnd* SetCapture();
+ BOOL ReleaseCapture();
+ CWnd* GetCapture();
+ CWnd* SetFocus();
+ CWnd* GetFocus();
+ CDC* GetDC(LPCRECT lprcRect = NULL, DWORD dwFlags = OLEDC_PAINTBKGND);
+ int ReleaseDC(CDC* pDC);
+ void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);
+ void ScrollWindow(int xAmount, int yAmount, LPCRECT lpRect = NULL,
+ LPCRECT lpClipRect = NULL);
+ BOOL ClipCaretRect(LPRECT lpRect);
+ virtual void GetClientRect(LPRECT lpRect) const;
+
+// Overridables
+ virtual void DoPropExchange(CPropExchange* pPX);
+ virtual void OnResetState();
+ virtual void OnDraw(
+ CDC* pDC, const CRect& rcBounds, const CRect& rcInvalid);
+ virtual void OnDrawMetafile(CDC* pDC, const CRect& rcBounds);
+
+ // Class ID (implemented by IMPLEMENT_OLECREATE_EX macro)
+ virtual HRESULT GetClassID(LPCLSID pclsid) = 0;
+
+ // For customizing the default messages on the status bar
+ virtual void GetMessageString(UINT nID, CString& rMessage) const;
+
+ // Display of error events to user
+ virtual void DisplayError(SCODE scode, LPCTSTR lpszDescription,
+ LPCTSTR lpszSource, LPCTSTR lpszHelpFile, UINT nHelpID);
+
+ // IOleObject notifications
+ virtual void OnSetClientSite();
+ virtual BOOL OnSetExtent(LPSIZEL lpSizeL);
+ virtual void OnClose(DWORD dwSaveOption);
+
+ // IOleInPlaceObject notifications
+ virtual BOOL OnSetObjectRects(LPCRECT lpRectPos, LPCRECT lpRectClip);
+
+ // Event connection point notifications
+ virtual void OnEventAdvise(BOOL bAdvise);
+
+ // Override to hook firing of Click event
+ virtual void OnClick(USHORT iButton);
+
+ // Override to get character after key events have been processed.
+ virtual void OnKeyDownEvent(USHORT nChar, USHORT nShiftState);
+ virtual void OnKeyUpEvent(USHORT nChar, USHORT nShiftState);
+ virtual void OnKeyPressEvent(USHORT nChar);
+
+ // Change notifications
+ virtual void OnAppearanceChanged();
+ virtual void OnBackColorChanged();
+ virtual void OnBorderStyleChanged();
+ virtual void OnEnabledChanged();
+ virtual void OnTextChanged();
+ virtual void OnFontChanged();
+ virtual void OnForeColorChanged();
+
+ // IOleControl notifications
+ virtual void OnGetControlInfo(LPCONTROLINFO pControlInfo);
+ virtual void OnMnemonic(LPMSG pMsg);
+ virtual void OnAmbientPropertyChange(DISPID dispid);
+ virtual void OnFreezeEvents(BOOL bFreeze);
+
+ // In-place activation
+ virtual HMENU OnGetInPlaceMenu();
+ virtual void OnShowToolBars();
+ virtual void OnHideToolBars();
+
+ // IViewObject
+ virtual BOOL OnGetColorSet(DVTARGETDEVICE* ptd, HDC hicTargetDev,
+ LPLOGPALETTE* ppColorSet);
+ virtual BOOL OnGetViewExtent(DWORD dwDrawAspect, LONG lindex,
+ DVTARGETDEVICE* ptd, LPSIZEL lpsizel);
+ virtual BOOL OnGetViewRect(DWORD dwAspect, LPRECTL pRect);
+ virtual DWORD OnGetViewStatus();
+ virtual BOOL OnQueryHitPoint(DWORD dwAspect, LPCRECT pRectBounds,
+ POINT ptlLoc, LONG lCloseHint, DWORD* pHitResult);
+ virtual BOOL OnQueryHitRect(DWORD dwAspect, LPCRECT pRectBounds,
+ LPCRECT prcLoc, LONG lCloseHint, DWORD* pHitResult);
+ virtual BOOL OnGetNaturalExtent(DWORD dwAspect, LONG lindex,
+ DVTARGETDEVICE* ptd, HDC hicTargetDev, DVEXTENTINFO* pExtentInfo,
+ LPSIZEL psizel);
+
+ // IDataObject - see COleDataSource for a description of these overridables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+
+ // Verbs
+ virtual BOOL OnEnumVerbs(LPENUMOLEVERB* ppenumOleVerb);
+ virtual BOOL OnDoVerb(LONG iVerb, LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+ virtual BOOL OnEdit(LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+ virtual BOOL OnProperties(LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+
+ // IPerPropertyBrowsing overrides
+ virtual BOOL OnGetDisplayString(DISPID dispid, CString& strValue);
+ virtual BOOL OnMapPropertyToPage(DISPID dispid, LPCLSID lpclsid,
+ BOOL* pbPageOptional);
+ virtual BOOL OnGetPredefinedStrings(DISPID dispid,
+ CStringArray* pStringArray, CDWordArray* pCookieArray);
+ virtual BOOL OnGetPredefinedValue(DISPID dispid, DWORD dwCookie,
+ VARIANT* lpvarOut);
+
+ // Subclassing
+ virtual BOOL IsSubclassedControl();
+
+ // Window reparenting
+ virtual void ReparentControlWindow(HWND hWndOuter, HWND hWndParent);
+
+ // Window procedure
+ virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+
+ // General-purpose flags
+ enum ControlFlags {
+ fastBeginPaint = 0x0001,
+ clipPaintDC = 0x0002,
+ pointerInactive = 0x0004,
+ noFlickerActivate = 0x0008,
+ windowlessActivate = 0x0010,
+ canOptimizeDraw = 0x0020,
+ };
+ virtual DWORD GetControlFlags();
+
+ // Inactive pointer handling
+ virtual DWORD GetActivationPolicy();
+ virtual BOOL OnInactiveSetCursor(LPCRECT lprcBounds, long x, long y,
+ DWORD dwMouseMsg, BOOL bSetAlways);
+ virtual void OnInactiveMouseMove(LPCRECT lprcBounds, long x, long y,
+ DWORD dwKeyState);
+
+ // Windowless activation handling
+ virtual BOOL OnWindowlessMessage(UINT msg, WPARAM wParam, LPARAM lParam,
+ LRESULT* plResult);
+ virtual IDropTarget* GetWindowlessDropTarget();
+
+ // Inactive/windowless helper functions
+ virtual void GetClientOffset(long* pdxOffset, long* pdyOffset) const;
+ virtual UINT ParentToClient(LPCRECT lprcBounds, LPPOINT pPoint,
+ BOOL bHitTest = FALSE) const;
+ virtual void ClientToParent(LPCRECT lprcBounds, LPPOINT pPoint) const;
+
+#ifndef _MAC
+ // Asynchronous properties
+ void Load(LPCTSTR strNewPath, CDataPathProperty& prop);
+#endif
+
+// Implementation
+public:
+ ~COleControl();
+
+#ifndef _MAC
+ void RequestAsynchronousExchange(DWORD dwVersion);
+#endif
+
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif // _DEBUG
+
+protected:
+ // Friend classes
+ friend class COleControlInnerUnknown;
+ friend class CReflectorWnd;
+ friend class CControlFrameWnd;
+
+ // Interface hook for primary automation interface
+ LPUNKNOWN GetInterfaceHook(const void* piid);
+
+ // Shutdown
+ virtual void OnFinalRelease();
+
+ // Window management
+ virtual BOOL CreateControlWindow(HWND hWndParent, const CRect& rcPos,
+ LPCRECT prcClipped = NULL);
+ void CreateWindowForSubclassedControl();
+ BOOL IgnoreWindowMessage(UINT msg, WPARAM wParam, LPARAM lParam,
+ LRESULT* plResult);
+ virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+
+ // Serialization
+ HRESULT SaveState(IStream* pStm);
+ HRESULT LoadState(IStream* pStm);
+ virtual void Serialize(CArchive& ar);
+
+ // Drawing
+ void DrawContent(CDC* pDC, CRect& rc);
+ void DrawMetafile(CDC* pDC, CRect& rc);
+ BOOL GetMetafileData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+
+ // Implementation of IDataObject
+ // CControlDataSource implements OnRender reflections to COleControl
+ class CControlDataSource : public COleDataSource
+ {
+ public:
+ CControlDataSource(COleControl* pCtrl);
+ protected:
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ COleControl* m_pCtrl;
+ };
+ friend class CControlDataSource;
+
+ // IDataObject formats
+ CControlDataSource* GetDataSource();
+ virtual void SetInitialDataFormats();
+ BOOL GetPropsetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ REFCLSID fmtid);
+ BOOL SetPropsetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ REFCLSID fmtid);
+
+ // Type library
+ BOOL GetDispatchIID(IID* pIID);
+
+ // Connection point container
+ virtual LPCONNECTIONPOINT GetConnectionHook(REFIID iid);
+ virtual BOOL GetExtraConnectionPoints(CPtrArray* pConnPoints);
+
+ // Events
+ static const AFX_DATA AFX_EVENTMAP_ENTRY _eventEntries[];
+ virtual const AFX_EVENTMAP* GetEventMap() const;
+ static const AFX_DATA AFX_EVENTMAP eventMap;
+ const AFX_EVENTMAP_ENTRY* GetEventMapEntry(LPCTSTR pszName,
+ DISPID* pDispid) const;
+ void FireEventV(DISPID dispid, BYTE* pbParams, va_list argList);
+
+ // Stock events
+ void KeyDown(USHORT* pnChar);
+ void KeyUp(USHORT* pnChar);
+ void ButtonDown(USHORT iButton, UINT nFlags, CPoint point);
+ void ButtonUp(USHORT iButton, UINT nFlags, CPoint point);
+ void ButtonDblClk(USHORT iButton, UINT nFlags, CPoint point);
+
+ // Masks to identify which stock events and properties are used
+ void InitStockEventMask();
+ void InitStockPropMask();
+ DWORD GetStockEventMask() const;
+ DWORD GetStockPropMask() const;
+
+ // Support for subclassing a Windows control
+ CWnd* GetOuterWindow() const; // m_pReflect if any, otherwise this
+ virtual void OnReflectorDestroyed();
+
+ // Aggregation of default handler
+ virtual BOOL OnCreateAggregates();
+ LPVOID QueryDefHandler(REFIID iid);
+
+ // State change notifications
+ void SendAdvise(UINT uCode);
+
+ // Non-in-place activation
+ virtual HRESULT OnOpen(BOOL bTryInPlace, LPMSG pMsg);
+ void ResizeOpenControl(int cx, int cy);
+ virtual CControlFrameWnd* CreateFrameWindow();
+ virtual void ResizeFrameWindow(int cx, int cy);
+ virtual void OnFrameClose();
+ virtual HRESULT OnHide();
+
+ // In-place activation
+ virtual HRESULT OnActivateInPlace(BOOL bUIActivate, LPMSG pMsg);
+ void ForwardActivationMsg(LPMSG pMsg);
+ virtual void AddFrameLevelUI();
+ virtual void RemoveFrameLevelUI();
+ virtual BOOL BuildSharedMenu();
+ virtual void DestroySharedMenu();
+
+ // Property sheet
+ virtual LPCLSID GetPropPageIDs(ULONG& cPropPages);
+
+ // IOleObject implementation
+ void GetUserType(LPTSTR pszUserType);
+ virtual UINT GetUserTypeNameID() = 0;
+ virtual DWORD GetMiscStatus() = 0;
+
+ // Rectangle tracker
+ void CreateTracker(BOOL bHandles, BOOL bHatching);
+ void DestroyTracker();
+
+ // Automation
+ BOOL IsInvokeAllowed(DISPID dispid);
+
+ // Ambient property interface initialization
+ COleDispatchDriver* GetAmbientDispatchDriver();
+
+ // Data members
+ const IID* m_piidPrimary; // IID for control automation
+ const IID* m_piidEvents; // IID for control events
+ DWORD m_dwVersionLoaded; // Version number of loaded state
+ COleDispatchDriver m_ambientDispDriver; // Driver for ambient properties
+ ULONG m_cEventsFrozen; // Event freeze count (>0 means frozen)
+ union
+ {
+ CControlFrameWnd* m_pWndOpenFrame; // Open frame window.
+ CRectTracker* m_pRectTracker; // Tracker for UI active control
+ };
+ CRect m_rcPos; // Control's position rectangle
+ CRect m_rcBounds; // Bounding rectangle for drawing
+ CPoint m_ptOffset; // Child window origin
+ long m_cxExtent; // Control's width in HIMETRIC units
+ long m_cyExtent; // Control's height in HIMETRIC units
+ class CReflectorWnd* m_pReflect; // Reflector window
+ UINT m_nIDTracking; // Tracking command ID or string IDS
+ UINT m_nIDLastMessage; // Last displayed message string IDS
+ unsigned m_bAutoMenuEnable : 1; // Disable menu items without handlers?
+ unsigned m_bFinalReleaseCalled : 1; // Are we handling the final Release?
+ unsigned m_bModified : 1; // "Dirty" bit.
+ unsigned m_bCountOnAmbients : 1; // Can we count on Ambients during load?
+ unsigned m_iButtonState : 3; // Which buttons are down?
+ unsigned m_iDblClkState : 3; // Which buttons involved in dbl click?
+ unsigned m_bInPlaceActive : 1; // Are we in-place active?
+ unsigned m_bUIActive : 1; // Are we UI active?
+ unsigned m_bPendingUIActivation : 1; // Are we about to become UI active?
+ unsigned m_bOpen : 1; // Are we open (non-in-place)?
+ unsigned m_bChangingExtent : 1; // Extent is currently being changed
+ unsigned m_bConvertVBX : 1; // VBX conversion in progress
+ unsigned m_bSimpleFrame : 1; // Simple frame support
+ unsigned m_bUIDead : 1; // UIDead ambient property value
+ unsigned m_bInitialized : 1; // Was IPersist*::{InitNew,Load} called?
+ unsigned m_bAutoClip : 1; // Does container automatically clip?
+ unsigned m_bMsgReflect : 1; // Does container reflect messages?
+ unsigned m_bInPlaceSiteEx : 1; // Extended in-place site?
+ unsigned m_bInPlaceSiteWndless : 1; // Windowless in-place site?
+ unsigned m_bNoRedraw : 1; // Should we skip OnPaint this time?
+ unsigned m_bOptimizedDraw : 1; // Is optimized drawing possible?
+
+ // Stock properties
+ OLE_COLOR m_clrBackColor; // BackColor
+ OLE_COLOR m_clrForeColor; // ForeColor
+ CString m_strText; // Text/Caption
+ CFontHolder m_font; // Font
+ HFONT m_hFontPrev; // Previously selected font object
+ short m_sAppearance; // Appearance
+ short m_sBorderStyle; // BorderStyle
+ BOOL m_bEnabled; // Enabled
+ long m_lReadyState; // ReadyState
+
+ // UI Active info (shared OLE menu data)
+ _AFXCTL_UIACTIVE_INFO* m_pUIActiveInfo;
+
+ // Default Handler aggregation
+ LPUNKNOWN m_pDefIUnknown;
+ _AFXCTL_ADVISE_INFO* m_pAdviseInfo;
+ LPPERSISTSTORAGE m_pDefIPersistStorage;
+ LPVIEWOBJECT m_pDefIViewObject;
+ LPOLECACHE m_pDefIOleCache;
+
+ // OLE client site interfaces
+ LPOLECLIENTSITE m_pClientSite; // Client site
+ union
+ {
+ LPOLEINPLACESITE m_pInPlaceSite; // In-place site
+ LPOLEINPLACESITEEX m_pInPlaceSiteEx;
+ LPOLEINPLACESITEWINDOWLESS m_pInPlaceSiteWndless;
+ };
+ LPOLECONTROLSITE m_pControlSite; // Control site
+ LPOLEADVISEHOLDER m_pOleAdviseHolder; // Advise holder
+ LPDATAADVISEHOLDER m_pDataAdviseHolder; // Data advise holder
+ LPSIMPLEFRAMESITE m_pSimpleFrameSite; // Simple frame site
+
+ // OLE in-place activation info
+ LPOLEINPLACEFRAME m_pInPlaceFrame;
+ OLEINPLACEFRAMEINFO m_frameInfo;
+ LPOLEINPLACEUIWINDOW m_pInPlaceDoc;
+
+ // OLE data source
+ CControlDataSource* m_pDataSource;
+
+ // OLE data path load data
+ BOOL m_bDataPathPropertiesLoaded;
+ DWORD m_dwDataPathVersionToReport;
+
+// Message Maps
+protected:
+ //{{AFX_MSG(COleControl)
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnInitMenuPopup(CMenu*, UINT, BOOL);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg void OnCancelMode();
+ afx_msg void OnPaint(CDC* pDC);
+ afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg int OnMouseActivate(CWnd *pDesktopWnd, UINT nHitTest, UINT message);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg void OnKillFocus(CWnd* pNewWnd);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg UINT OnGetDlgCode();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnMove(int x, int y);
+ afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
+ //}}AFX_MSG
+
+ afx_msg LRESULT OnOcmCtlColorBtn(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorDlg(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorEdit(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorListBox(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorMsgBox(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorScrollBar(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnOcmCtlColorStatic(WPARAM wParam, LPARAM lParam);
+
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ // IPersistStorage
+ BEGIN_INTERFACE_PART(PersistStorage, IPersistStorage)
+ INIT_INTERFACE_PART(COleControl, PersistStorage)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(InitNew)(LPSTORAGE);
+ STDMETHOD(Load)(LPSTORAGE);
+ STDMETHOD(Save)(LPSTORAGE, BOOL);
+ STDMETHOD(SaveCompleted)(LPSTORAGE);
+ STDMETHOD(HandsOffStorage)();
+ END_INTERFACE_PART(PersistStorage)
+
+ // IPersistStreamInit
+ BEGIN_INTERFACE_PART(PersistStreamInit, IPersistStreamInit)
+ INIT_INTERFACE_PART(COleControl, PersistStreamInit)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(Load)(LPSTREAM);
+ STDMETHOD(Save)(LPSTREAM, BOOL);
+ STDMETHOD(GetSizeMax)(ULARGE_INTEGER *);
+ STDMETHOD(InitNew)();
+ END_INTERFACE_PART(PersistStreamInit)
+
+ // IPersistMemory
+ BEGIN_INTERFACE_PART(PersistMemory, IPersistMemory)
+ INIT_INTERFACE_PART(COleControl, PersistMemory)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(Load)(LPVOID, ULONG);
+ STDMETHOD(Save)(LPVOID, BOOL, ULONG);
+ STDMETHOD(GetSizeMax)(ULONG*);
+ STDMETHOD(InitNew)();
+ END_INTERFACE_PART(PersistMemory)
+
+ // IPersistPropertyBag
+ BEGIN_INTERFACE_PART(PersistPropertyBag, IPersistPropertyBag)
+ INIT_INTERFACE_PART(COleControl, PersistPropertyBag)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(InitNew)();
+ STDMETHOD(Load)(LPPROPERTYBAG, LPERRORLOG);
+ STDMETHOD(Save)(LPPROPERTYBAG, BOOL, BOOL);
+ END_INTERFACE_PART(PersistPropertyBag)
+
+ // IOleObject
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleControl, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(CLSID*);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ // IViewObjectEx
+ BEGIN_INTERFACE_PART(ViewObject, IViewObjectEx)
+ INIT_INTERFACE_PART(COleControl, ViewObject)
+ STDMETHOD(Draw)(DWORD, LONG, void*, DVTARGETDEVICE*, HDC, HDC,
+ LPCRECTL, LPCRECTL, BOOL (CALLBACK*)(DWORD), DWORD);
+ STDMETHOD(GetColorSet)(DWORD, LONG, void*, DVTARGETDEVICE*,
+ HDC, LPLOGPALETTE*);
+ STDMETHOD(Freeze)(DWORD, LONG, void*, DWORD*);
+ STDMETHOD(Unfreeze)(DWORD);
+ STDMETHOD(SetAdvise)(DWORD, DWORD, LPADVISESINK);
+ STDMETHOD(GetAdvise)(DWORD*, DWORD*, LPADVISESINK*);
+ STDMETHOD(GetExtent) (DWORD, LONG, DVTARGETDEVICE*, LPSIZEL);
+ STDMETHOD(GetRect)(DWORD, LPRECTL);
+ STDMETHOD(GetViewStatus)(DWORD*);
+ STDMETHOD(QueryHitPoint)(DWORD, LPCRECT, POINT, LONG, DWORD*);
+ STDMETHOD(QueryHitRect)(DWORD, LPCRECT, LPCRECT, LONG, DWORD*);
+ STDMETHOD(GetNaturalExtent)(DWORD, LONG, DVTARGETDEVICE*, HDC,
+ DVEXTENTINFO*, LPSIZEL);
+ END_INTERFACE_PART(ViewObject)
+
+ // IDataObject
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleControl, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ // IOleInPlaceObject
+ BEGIN_INTERFACE_PART(OleInPlaceObject, IOleInPlaceObjectWindowless)
+ INIT_INTERFACE_PART(COleControl, OleInPlaceObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(InPlaceDeactivate)();
+ STDMETHOD(UIDeactivate)();
+ STDMETHOD(SetObjectRects)(LPCRECT, LPCRECT);
+ STDMETHOD(ReactivateAndUndo)();
+ STDMETHOD(OnWindowMessage)(UINT msg, WPARAM wParam, LPARAM lparam,
+ LRESULT* plResult);
+ STDMETHOD(GetDropTarget)(IDropTarget **ppDropTarget);
+
+ END_INTERFACE_PART(OleInPlaceObject)
+
+ // IOleInPlaceActiveObject
+ BEGIN_INTERFACE_PART(OleInPlaceActiveObject, IOleInPlaceActiveObject)
+ INIT_INTERFACE_PART(COleControl, OleInPlaceActiveObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(TranslateAccelerator)(LPMSG);
+ STDMETHOD(OnFrameWindowActivate)(BOOL);
+ STDMETHOD(OnDocWindowActivate)(BOOL);
+ STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL);
+ STDMETHOD(EnableModeless)(BOOL);
+ END_INTERFACE_PART(OleInPlaceActiveObject)
+
+ // IOleCache
+ BEGIN_INTERFACE_PART(OleCache, IOleCache)
+ INIT_INTERFACE_PART(COleControl, OleCache)
+ STDMETHOD(Cache)(LPFORMATETC, DWORD, LPDWORD);
+ STDMETHOD(Uncache)(DWORD);
+ STDMETHOD(EnumCache)(LPENUMSTATDATA*);
+ STDMETHOD(InitCache)(LPDATAOBJECT);
+ STDMETHOD(SetData)(LPFORMATETC, STGMEDIUM*, BOOL);
+ END_INTERFACE_PART(OleCache)
+
+ // IOleControl
+ BEGIN_INTERFACE_PART(OleControl, IOleControl)
+ INIT_INTERFACE_PART(COleControl, OleControl)
+ STDMETHOD(GetControlInfo)(LPCONTROLINFO pCI);
+ STDMETHOD(OnMnemonic)(LPMSG pMsg);
+ STDMETHOD(OnAmbientPropertyChange)(DISPID dispid);
+ STDMETHOD(FreezeEvents)(BOOL bFreeze);
+ END_INTERFACE_PART(OleControl)
+
+ // IProvideClassInfo2
+ BEGIN_INTERFACE_PART(ProvideClassInfo, IProvideClassInfo2)
+ INIT_INTERFACE_PART(COleControl, ProvideClassInfo)
+ STDMETHOD(GetClassInfo)(LPTYPEINFO* ppTypeInfo);
+ STDMETHOD(GetGUID)(DWORD dwGuidKind, GUID* pGUID);
+ END_INTERFACE_PART(ProvideClassInfo)
+
+ // ISpecifyPropertyPages
+ BEGIN_INTERFACE_PART(SpecifyPropertyPages, ISpecifyPropertyPages)
+ INIT_INTERFACE_PART(COleControl, SpecifyPropertyPages)
+ STDMETHOD(GetPages)(CAUUID*);
+ END_INTERFACE_PART(SpecifyPropertyPages)
+
+ // IPerPropertyBrowsing
+ BEGIN_INTERFACE_PART(PerPropertyBrowsing, IPerPropertyBrowsing)
+ INIT_INTERFACE_PART(COleControl, PerPropertyBrowsing)
+ STDMETHOD(GetDisplayString)(DISPID dispid, BSTR* lpbstr);
+ STDMETHOD(MapPropertyToPage)(DISPID dispid, LPCLSID lpclsid);
+ STDMETHOD(GetPredefinedStrings)(DISPID dispid,
+ CALPOLESTR* lpcaStringsOut, CADWORD* lpcaCookiesOut);
+ STDMETHOD(GetPredefinedValue)(DISPID dispid, DWORD dwCookie,
+ VARIANT* lpvarOut);
+ END_INTERFACE_PART(PerPropertyBrowsing)
+
+ // IPropertyNotifySink for font updates (not exposed via QueryInterface)
+ BEGIN_INTERFACE_PART(FontNotification, IPropertyNotifySink)
+ INIT_INTERFACE_PART(COleControl, FontNotification)
+ STDMETHOD(OnChanged)(DISPID dispid);
+ STDMETHOD(OnRequestEdit)(DISPID dispid);
+ END_INTERFACE_PART(FontNotification)
+
+ // IQuickActivate
+ BEGIN_INTERFACE_PART(QuickActivate, IQuickActivate)
+ STDMETHOD(QuickActivate)(QACONTAINER *pQAContainer, QACONTROL *pqacontrol);
+ STDMETHOD(SetContentExtent)(LPSIZEL lpsizel);
+ STDMETHOD(GetContentExtent)(LPSIZEL lpsizel);
+ END_INTERFACE_PART(QuickActivate)
+
+ // IPointerInactive
+ BEGIN_INTERFACE_PART(PointerInactive, IPointerInactive)
+ STDMETHOD(GetActivationPolicy)(DWORD* pdwPolicy);
+ STDMETHOD(OnInactiveSetCursor)(LPCRECT lprcBounds, long x, long y,
+ DWORD dwMouseMsg, BOOL bSetAlways);
+ STDMETHOD(OnInactiveMouseMove)(LPCRECT lprcBounds, long x, long y,
+ DWORD dwKeyState);
+ END_INTERFACE_PART(PointerInactive)
+
+ DECLARE_INTERFACE_MAP()
+
+// Connection maps
+protected:
+ // Connection point for events
+ BEGIN_CONNECTION_PART(COleControl, EventConnPt)
+ virtual void OnAdvise(BOOL bAdvise);
+ virtual REFIID GetIID();
+ virtual LPUNKNOWN QuerySinkInterface(LPUNKNOWN pUnkSink);
+ END_CONNECTION_PART(EventConnPt)
+
+ // Connection point for property notifications
+ BEGIN_CONNECTION_PART(COleControl, PropConnPt)
+ CONNECTION_IID(IID_IPropertyNotifySink)
+ END_CONNECTION_PART(PropConnPt)
+
+ DECLARE_CONNECTION_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Registry functions
+
+enum AFX_REG_FLAGS
+{
+ afxRegDefault = 0x0000,
+ afxRegInsertable = 0x0001,
+ afxRegApartmentThreading = 0x0002,
+};
+
+BOOL AFXAPI AfxOleRegisterTypeLib(HINSTANCE hInstance, REFGUID tlid,
+ LPCTSTR pszFileName = NULL, LPCTSTR pszHelpDir = NULL);
+
+BOOL AFXAPI AfxOleUnregisterTypeLib(REFGUID tlid, WORD wVerMajor = 0,
+ WORD wVerMinor = 0, LCID lcid = 0);
+
+BOOL AFXAPI AfxOleRegisterControlClass(HINSTANCE hInstance, REFCLSID clsid,
+ LPCTSTR pszProgID, UINT idTypeName, UINT idBitmap, int nRegFlags,
+ DWORD dwMiscStatus, REFGUID tlid, WORD wVerMajor, WORD wVerMinor);
+
+BOOL AFXAPI AfxOleUnregisterClass(REFCLSID clsid, LPCTSTR pszProgID);
+
+BOOL AFXAPI AfxOleRegisterPropertyPageClass(HINSTANCE hInstance,
+ REFCLSID clsid, UINT idTypeName);
+
+BOOL AFXAPI AfxOleRegisterPropertyPageClass(HINSTANCE hInstance,
+ REFCLSID clsid, UINT idTypeName, int nRegFlags);
+
+/////////////////////////////////////////////////////////////////////////////
+// Licensing functions
+
+BOOL AFXAPI AfxVerifyLicFile(HINSTANCE hInstance, LPCTSTR pszLicFileName,
+ LPCOLESTR pszLicFileContents, UINT cch=-1);
+
+/////////////////////////////////////////////////////////////////////////////
+// CPropExchange - Abstract base class for property exchange
+
+class CPropExchange
+{
+// Operations
+public:
+ BOOL IsLoading();
+ DWORD GetVersion();
+
+ BOOL IsAsynchronous();
+ // FALSE -> Do Sync stuff, and start async stuff if possible
+ // TRUE -> Do not do Sync stuff. Always start Async stuff
+
+ virtual BOOL ExchangeVersion(DWORD& dwVersionLoaded, DWORD dwVersionDefault,
+ BOOL bConvert);
+
+ virtual BOOL ExchangeProp(LPCTSTR pszPropName, VARTYPE vtProp,
+ void* pvProp, const void* pvDefault = NULL) = 0;
+ virtual BOOL ExchangeBlobProp(LPCTSTR pszPropName, HGLOBAL* phBlob,
+ HGLOBAL hBlobDefault = NULL) = 0;
+ virtual BOOL ExchangeFontProp(LPCTSTR pszPropName, CFontHolder& font,
+ const FONTDESC* pFontDesc,
+ LPFONTDISP pFontDispAmbient) = 0;
+ virtual BOOL ExchangePersistentProp(LPCTSTR pszPropName,
+ LPUNKNOWN* ppUnk, REFIID iid, LPUNKNOWN pUnkDefault) = 0;
+
+// Implementation
+protected:
+ CPropExchange();
+ BOOL m_bLoading;
+ BOOL m_bAsync;
+ DWORD m_dwVersion;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Property-exchange (PX_) helper functions
+
+BOOL AFX_CDECL PX_Short(CPropExchange* pPX, LPCTSTR pszPropName, short& sValue);
+
+BOOL AFX_CDECL PX_Short(CPropExchange* pPX, LPCTSTR pszPropName, short& sValue,
+ short sDefault);
+
+BOOL AFX_CDECL PX_UShort(CPropExchange* pPX, LPCTSTR pszPropName, USHORT& usValue);
+
+BOOL AFX_CDECL PX_UShort(CPropExchange* pPX, LPCTSTR pszPropName, USHORT& usValue,
+ USHORT usDefault);
+
+BOOL AFX_CDECL PX_Long(CPropExchange* pPX, LPCTSTR pszPropName, long& lValue);
+
+BOOL AFX_CDECL PX_Long(CPropExchange* pPX, LPCTSTR pszPropName, long& lValue,
+ long lDefault);
+
+BOOL AFX_CDECL PX_ULong(CPropExchange* pPX, LPCTSTR pszPropName, ULONG& ulValue);
+
+BOOL AFX_CDECL PX_ULong(CPropExchange* pPX, LPCTSTR pszPropName, ULONG& ulValue,
+ ULONG ulDefault);
+
+BOOL AFX_CDECL PX_Color(CPropExchange* pPX, LPCTSTR pszPropName, OLE_COLOR& clrValue);
+
+BOOL AFX_CDECL PX_Color(CPropExchange* pPX, LPCTSTR pszPropName, OLE_COLOR& clrValue,
+ OLE_COLOR clrDefault);
+
+BOOL AFX_CDECL PX_Bool(CPropExchange* pPX, LPCTSTR pszPropName, BOOL& bValue);
+
+BOOL AFX_CDECL PX_Bool(CPropExchange* pPX, LPCTSTR pszPropName, BOOL& bValue,
+ BOOL bDefault);
+
+BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue);
+
+BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue,
+ const CString& strDefault);
+BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue,
+ LPCTSTR lpszDefault);
+
+BOOL AFX_CDECL PX_Currency(CPropExchange* pPX, LPCTSTR pszPropName, CY& cyValue);
+
+BOOL AFX_CDECL PX_Currency(CPropExchange* pPX, LPCTSTR pszPropName, CY& cyValue,
+ CY cyDefault);
+
+BOOL AFX_CDECL PX_Float(CPropExchange* pPX, LPCTSTR pszPropName, float& floatValue);
+
+BOOL AFX_CDECL PX_Float(CPropExchange* pPX, LPCTSTR pszPropName, float& floatValue,
+ float floatDefault);
+
+BOOL AFX_CDECL PX_Double(CPropExchange* pPX, LPCTSTR pszPropName, double& doubleValue);
+
+BOOL AFX_CDECL PX_Double(CPropExchange* pPX, LPCTSTR pszPropName, double& doubleValue,
+ double doubleDefault);
+
+BOOL AFX_CDECL PX_Blob(CPropExchange* pPX, LPCTSTR pszPropName, HGLOBAL& hBlob,
+ HGLOBAL hBlobDefault = NULL);
+
+BOOL AFX_CDECL PX_Font(CPropExchange* pPX, LPCTSTR pszPropName, CFontHolder& font,
+ const FONTDESC* pFontDesc = NULL,
+ LPFONTDISP pFontDispAmbient = NULL);
+
+BOOL AFX_CDECL PX_Picture(CPropExchange* pPX, LPCTSTR pszPropName,
+ CPictureHolder& pict);
+
+BOOL AFX_CDECL PX_Picture(CPropExchange* pPX, LPCTSTR pszPropName,
+ CPictureHolder& pict, CPictureHolder& pictDefault);
+
+BOOL AFX_CDECL PX_IUnknown(CPropExchange* pPX, LPCTSTR pszPropName, LPUNKNOWN& pUnk,
+ REFIID iid, LPUNKNOWN pUnkDefault = NULL);
+
+BOOL AFX_CDECL PX_VBXFontConvert(CPropExchange* pPX, CFontHolder& font);
+
+#ifndef _MAC
+BOOL AFX_CDECL PX_DataPath(CPropExchange* pPX, LPCTSTR pszPropName,
+ CDataPathProperty& dataPathProp, LPCTSTR pszDefault = NULL);
+
+BOOL AFX_CDECL PX_DataPath(CPropExchange* pPX, LPCTSTR pszPropName,
+ CDataPathProperty& dataPathProp, const CString& strDefault);
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Structures used by COlePropertyPage
+
+typedef struct tagAFX_PPFIELDSTATUS
+{
+ UINT nID;
+ BOOL bDirty;
+
+} AFX_PPFIELDSTATUS;
+
+/////////////////////////////////////////////////////////////////////////////
+// Property Page Dialog Class
+
+class COlePropertyPage : public CDialog
+{
+ DECLARE_DYNAMIC(COlePropertyPage)
+
+// Constructors
+public:
+ COlePropertyPage(UINT idDlg, UINT idCaption);
+
+// Operations
+ LPDISPATCH* GetObjectArray(ULONG* pnObjects);
+ void SetModifiedFlag(BOOL bModified = TRUE);
+ BOOL IsModified();
+ LPPROPERTYPAGESITE GetPageSite();
+ void SetDialogResource(HGLOBAL hDialog);
+ void SetPageName(LPCTSTR lpszPageName);
+ void SetHelpInfo(LPCTSTR lpszDocString, LPCTSTR lpszHelpFile = NULL,
+ DWORD dwHelpContext = 0);
+
+ BOOL GetControlStatus(UINT nID);
+ BOOL SetControlStatus(UINT nID, BOOL bDirty);
+ void IgnoreApply(UINT nID);
+
+ int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
+ UINT nType = MB_OK);
+ // note that this is a non-virtual override of CWnd::MessageBox()
+
+// Overridables
+ virtual void OnSetPageSite();
+ virtual void OnObjectsChanged();
+ virtual BOOL OnHelp(LPCTSTR lpszHelpDir);
+ virtual BOOL OnInitDialog();
+ virtual BOOL OnEditProperty(DISPID dispid);
+
+// Implementation
+
+ // DDP_ property get/set helper routines
+ BOOL SetPropText(LPCTSTR pszPropName, BYTE &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, BYTE* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, short &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, short* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, int &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, int* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, UINT &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, UINT* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, long &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, long* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, DWORD &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, DWORD* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, CString &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, CString* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, float &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, float* pValue);
+ BOOL SetPropText(LPCTSTR pszPropName, double &Value);
+ BOOL GetPropText(LPCTSTR pszPropName, double* pValue);
+ BOOL SetPropCheck(LPCTSTR pszPropName, int Value);
+ BOOL GetPropCheck(LPCTSTR pszPropName, int* pValue);
+ BOOL SetPropRadio(LPCTSTR pszPropName, int Value);
+ BOOL GetPropRadio(LPCTSTR pszPropName, int* pValue);
+ BOOL SetPropIndex(LPCTSTR pszPropName, int Value);
+ BOOL GetPropIndex(LPCTSTR pszPropName, int* pValue);
+ CPtrArray m_arrayDDP; // pending DDP data
+
+ // Destructors
+ ~COlePropertyPage();
+
+protected:
+ LRESULT WindowProc(UINT msg, WPARAM wParam, LPARAM lParam);
+ BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ BOOL PreTranslateMessage(LPMSG lpMsg);
+ virtual void OnFinalRelease();
+ void CleanupObjectArray();
+ static BOOL CALLBACK EnumChildProc(HWND hWnd, LPARAM lParam);
+ static BOOL CALLBACK EnumControls(HWND hWnd, LPARAM lParam);
+
+private:
+ BOOL m_bDirty;
+ UINT m_idDlg;
+ UINT m_idCaption;
+ CString m_strPageName;
+ SIZE m_sizePage;
+ CString m_strDocString;
+ CString m_strHelpFile;
+ DWORD m_dwHelpContext;
+ LPPROPERTYPAGESITE m_pPageSite;
+
+ LPDISPATCH* m_ppDisp; // Array of IDispatch pointers, used to
+ // access the properties of each control
+
+ LPDWORD m_pAdvisors; // Array of connection tokens used by
+ // IConnecitonPoint::Advise/UnAdvise.
+
+ BOOL m_bPropsChanged; // IPropertyNotifySink::OnChanged has been
+ // called, but not acted upon yet.
+
+ ULONG m_nObjects; // Objects in m_ppDisp, m_ppDataObj, m_pAdvisors
+
+ BOOL m_bInitializing; // TRUE if the contents of the fields of
+ // the dialog box are being initialized
+
+ int m_nControls; // Number of fields on this property page
+
+ AFX_PPFIELDSTATUS* m_pStatus; // Array containing information on
+ // which fields are dirty
+
+ CDWordArray m_IDArray; // Array containing information on which
+ // controls to ignore when deciding if
+ // the apply button is to be enabled
+
+ HGLOBAL m_hDialog; // Handle of the dialog resource
+
+#ifdef _DEBUG
+ BOOL m_bNonStandardSize;
+#endif
+
+protected:
+ // Generated message map functions
+ //{{AFX_MSG(COlePropertyPage)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PropertyPage, IPropertyPage2)
+ INIT_INTERFACE_PART(COlePropertyPage, PropertyPage)
+ STDMETHOD(SetPageSite)(LPPROPERTYPAGESITE);
+ STDMETHOD(Activate)(HWND, LPCRECT, BOOL);
+ STDMETHOD(Deactivate)();
+ STDMETHOD(GetPageInfo)(LPPROPPAGEINFO);
+ STDMETHOD(SetObjects)(ULONG, LPUNKNOWN*);
+ STDMETHOD(Show)(UINT);
+ STDMETHOD(Move)(LPCRECT);
+ STDMETHOD(IsPageDirty)();
+ STDMETHOD(Apply)();
+ STDMETHOD(Help)(LPCOLESTR);
+ STDMETHOD(TranslateAccelerator)(LPMSG);
+ STDMETHOD(EditProperty)(DISPID);
+ END_INTERFACE_PART(PropertyPage)
+
+ BEGIN_INTERFACE_PART(PropNotifySink, IPropertyNotifySink)
+ INIT_INTERFACE_PART(COlePropertyPage, PropNotifySink)
+ STDMETHOD(OnRequestEdit)(DISPID);
+ STDMETHOD(OnChanged)(DISPID);
+ END_INTERFACE_PART(PropNotifySink)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Property Page Dialog Data Exchange routines
+
+// simple text operations
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, BYTE& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, short& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, UINT& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, long& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, DWORD& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, float& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, double& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Text(CDataExchange*pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Check(CDataExchange*pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_Radio(CDataExchange*pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_LBString(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_LBStringExact(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_LBIndex(CDataExchange* pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_CBString(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_CBStringExact(CDataExchange* pDX, int id, CString& member, LPCTSTR pszPropName);
+void AFXAPI DDP_CBIndex(CDataExchange* pDX, int id, int& member, LPCTSTR pszPropName);
+void AFXAPI DDP_PostProcessing(CDataExchange *pDX);
+
+////////////////////////////////////////////////////////////////////////////
+// AfxOleTypeMatchGuid - Tests whether a given TYPEDESC matches a type with a
+// given GUID, when all aliases have been expanded.
+
+BOOL AFXAPI AfxOleTypeMatchGuid(LPTYPEINFO pTypeInfo,
+ TYPEDESC* pTypeDesc, REFGUID guidType, ULONG cIndirectionLevels);
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCTL_INLINE inline
+#include <afxctl.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXCTL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxctl.inl b/public/sdk/inc/mfc42/afxctl.inl
new file mode 100644
index 000000000..85927c3d5
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxctl.inl
@@ -0,0 +1,117 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCTL.H
+
+#ifdef _AFXCTL_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+
+// COleControl inlines
+_AFXCTL_INLINE BOOL COleControl::IsOptimizedDraw()
+ { return m_bOptimizedDraw; }
+_AFXCTL_INLINE BOOL COleControl::IsConvertingVBX()
+ { return m_bConvertVBX; }
+_AFXCTL_INLINE void COleControl::FireKeyDown(USHORT* pnChar, short nShiftState)
+ { FireEvent(DISPID_KEYDOWN, EVENT_PARAM(VTS_PI2 VTS_I2), pnChar,
+ nShiftState); }
+_AFXCTL_INLINE void COleControl::FireKeyUp(USHORT* pnChar, short nShiftState)
+ { FireEvent(DISPID_KEYUP, EVENT_PARAM(VTS_PI2 VTS_I2), pnChar,
+ nShiftState); }
+_AFXCTL_INLINE void COleControl::FireKeyPress(USHORT* pnChar)
+ { FireEvent(DISPID_KEYPRESS, EVENT_PARAM(VTS_PI2), pnChar); }
+_AFXCTL_INLINE void COleControl::FireMouseDown(short nButton,
+ short nShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
+ { FireEvent(DISPID_MOUSEDOWN,
+ EVENT_PARAM(VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS),
+ nButton, nShiftState, x, y); }
+_AFXCTL_INLINE void COleControl::FireMouseUp(short nButton,
+ short nShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
+ { FireEvent(DISPID_MOUSEUP,
+ EVENT_PARAM(VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS),
+ nButton, nShiftState, x, y); }
+_AFXCTL_INLINE void COleControl::FireMouseMove(short nButton,
+ short nShiftState, OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
+ { FireEvent(DISPID_MOUSEMOVE,
+ EVENT_PARAM(VTS_I2 VTS_I2 VTS_XPOS_PIXELS VTS_YPOS_PIXELS),
+ nButton, nShiftState, x, y); }
+_AFXCTL_INLINE void COleControl::FireClick()
+ { FireEvent(DISPID_CLICK, EVENT_PARAM(VTS_NONE)); }
+_AFXCTL_INLINE void COleControl::FireDblClick()
+ { FireEvent(DISPID_DBLCLICK, EVENT_PARAM(VTS_NONE)); }
+_AFXCTL_INLINE void COleControl::FireReadyStateChange()
+ { FireEvent(DISPID_READYSTATECHANGE, EVENT_PARAM(VTS_I4), m_lReadyState); }
+_AFXCTL_INLINE void COleControl::InternalSetReadyState(long lNewReadyState)
+ { ASSERT((lNewReadyState >=0) && (lNewReadyState <= READYSTATE_COMPLETE));
+ if (m_lReadyState != lNewReadyState)
+ {m_lReadyState = lNewReadyState; FireReadyStateChange(); } }
+_AFXCTL_INLINE BOOL COleControl::ExchangeVersion(
+ CPropExchange* pPX, DWORD dwVersionDefault, BOOL bConvert)
+ { return pPX->ExchangeVersion(m_dwVersionLoaded, dwVersionDefault, bConvert); }
+_AFXCTL_INLINE DWORD COleControl::GetStockEventMask() const
+ { return *GetEventMap()->lpStockEventMask; }
+_AFXCTL_INLINE DWORD COleControl::GetStockPropMask() const
+ { return *GetDispatchMap()->lpStockPropMask; }
+_AFXCTL_INLINE void COleControl::RequestAsynchronousExchange(DWORD dwVersion)
+ { m_bDataPathPropertiesLoaded = FALSE; m_dwDataPathVersionToReport = dwVersion; }
+
+// CPropExchange inlines
+_AFXCTL_INLINE CPropExchange::CPropExchange() : m_dwVersion(0), m_bAsync(FALSE)
+ { }
+_AFXCTL_INLINE BOOL CPropExchange::IsLoading()
+ { return m_bLoading; }
+_AFXCTL_INLINE DWORD CPropExchange::GetVersion()
+ { return m_dwVersion; }
+_AFXCTL_INLINE BOOL CPropExchange::IsAsynchronous()
+ { return m_bAsync; }
+
+#ifndef _MAC
+// CDataPathProperty inlines
+_AFXCTL_INLINE CDataPathProperty::CDataPathProperty(COleControl* pControl)
+ : m_pControl(pControl) {}
+_AFXCTL_INLINE CDataPathProperty::CDataPathProperty(LPCTSTR lpszPath, COleControl* pControl)
+ : m_pControl(pControl), m_strPath(lpszPath) {}
+_AFXCTL_INLINE void CDataPathProperty::SetPath(LPCTSTR lpszPath)
+ { ASSERT_VALID(this); m_strPath = lpszPath; }
+_AFXCTL_INLINE CString CDataPathProperty::GetPath() const
+ { ASSERT_VALID(this); return m_strPath; }
+_AFXCTL_INLINE COleControl* CDataPathProperty::GetControl()
+ { ASSERT_VALID(this); return m_pControl; }
+_AFXCTL_INLINE void CDataPathProperty::SetControl(COleControl* pControl)
+ { ASSERT_VALID(this); m_pControl=pControl; }
+
+// CCachedDataPathProperty inlines
+_AFXCTL_INLINE CCachedDataPathProperty::CCachedDataPathProperty(COleControl* pControl)
+ : CDataPathProperty(pControl) {}
+_AFXCTL_INLINE CCachedDataPathProperty::CCachedDataPathProperty(LPCTSTR lpszPath, COleControl* pControl)
+ : CDataPathProperty(lpszPath, pControl) {}
+#endif // !_MAC
+
+// inline DDP_ routines
+_AFXCTL_INLINE void AFXAPI DDP_LBString(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_LBStringExact(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_LBIndex(CDataExchange* pDX, int id,
+ int& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_CBString(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_CBStringExact(CDataExchange* pDX, int id,
+ CString& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+_AFXCTL_INLINE void AFXAPI DDP_CBIndex(CDataExchange* pDX, int id,
+ int& member, LPCTSTR pszPropName)
+ { DDP_Text(pDX, id, member, pszPropName); }
+
+#endif //_AFXCTL_INLINE
diff --git a/public/sdk/inc/mfc42/afxctl.rc b/public/sdk/inc/mfc42/afxctl.rc
new file mode 100644
index 000000000..0173b2420
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Property &Name:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Font:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "Font St&yle:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Size:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effects",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Stri&keout",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Underline",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Sample",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Property &Name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "System &Color:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Property &Name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Browse...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Clear",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Preview:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Unknown)"
+ AFX_IDS_COLOR_DESKTOP "Desktop"
+ AFX_IDS_COLOR_APPWORKSPACE "Application Workspace"
+ AFX_IDS_COLOR_WNDBACKGND "Window Background"
+ AFX_IDS_COLOR_WNDTEXT "Window Text"
+ AFX_IDS_COLOR_MENUBAR "Menu Bar"
+ AFX_IDS_COLOR_MENUTEXT "Menu Text"
+ AFX_IDS_COLOR_ACTIVEBAR "Active Title Bar"
+ AFX_IDS_COLOR_INACTIVEBAR "Inactive Title Bar"
+ AFX_IDS_COLOR_ACTIVETEXT "Active Title Bar Text"
+ AFX_IDS_COLOR_INACTIVETEXT "Inactive Title Bar Text"
+ AFX_IDS_COLOR_ACTIVEBORDER "Active Border"
+ AFX_IDS_COLOR_INACTIVEBORDER "Inactive Border"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "Window Frame"
+ AFX_IDS_COLOR_SCROLLBARS "Scroll Bars"
+ AFX_IDS_COLOR_BTNFACE "Button Face"
+ AFX_IDS_COLOR_BTNSHADOW "Button Shadow"
+ AFX_IDS_COLOR_BTNTEXT "Button Text"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Button Highlight"
+ AFX_IDS_COLOR_DISABLEDTEXT "Disabled Text"
+ AFX_IDS_COLOR_HIGHLIGHT "Highlight"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Highlighted Text"
+ AFX_IDS_REGULAR "Regular"
+ AFX_IDS_BOLD "Bold"
+ AFX_IDS_ITALIC "Italic"
+ AFX_IDS_BOLDITALIC "Bold Italic"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Font)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Color)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Picture - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Unknown"
+ AFX_IDS_PICTYPE_NONE "None"
+ AFX_IDS_PICTYPE_BITMAP "Bitmap"
+ AFX_IDS_PICTYPE_METAFILE "Metafile"
+ AFX_IDS_PICTYPE_ICON "Icon"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "Color Property Page"
+ AFX_IDS_COLOR_PPG_CAPTION "Colors"
+ AFX_IDS_FONT_PPG "Font Property Page"
+ AFX_IDS_FONT_PPG_CAPTION "Fonts"
+ AFX_IDS_PICTURE_PPG "Picture Property Page"
+ AFX_IDS_PICTURE_PPG_CAPTION "Pictures"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - None"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fixed Single"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Edit"
+ AFX_IDS_VERB_PROPERTIES "&Properties..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Unable to open the picture file %1. The file may not exist, or may not be readable."
+ AFX_IDP_PICTURECANTLOAD "Unable to load the picture file %1. The file may have an invalid format."
+ AFX_IDP_PICTURETOOLARGE "Unable to load the picture file %1. The file is too large to fit in memory."
+ AFX_IDP_PICTUREREADFAILED
+ "Unable to load the picture file %1. Unexplained read failure."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Browse Pictures"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Illegal function call"
+ AFX_IDP_E_OVERFLOW "Overflow"
+ AFX_IDP_E_OUTOFMEMORY "Out of memory"
+ AFX_IDP_E_DIVISIONBYZERO "Division by zero"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Out of string space"
+ AFX_IDP_E_OUTOFSTACKSPACE "Out of stack space"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Bad file name or number"
+ AFX_IDP_E_FILENOTFOUND "File not found"
+ AFX_IDP_E_BADFILEMODE "Bad file mode"
+ AFX_IDP_E_FILEALREADYOPEN "File already open"
+ AFX_IDP_E_DEVICEIOERROR "Device I/O error"
+ AFX_IDP_E_FILEALREADYEXISTS "File already exists"
+ AFX_IDP_E_BADRECORDLENGTH "Bad record length"
+ AFX_IDP_E_DISKFULL "Disk full"
+ AFX_IDP_E_BADRECORDNUMBER "Bad record number"
+ AFX_IDP_E_BADFILENAME "Bad file name"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Too many files"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Device unavailable"
+ AFX_IDP_E_PERMISSIONDENIED "Permission denied"
+ AFX_IDP_E_DISKNOTREADY "Disk not ready"
+ AFX_IDP_E_PATHFILEACCESSERROR "Path/File access error"
+ AFX_IDP_E_PATHNOTFOUND "Path not found"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Invalid pattern string"
+ AFX_IDP_E_INVALIDUSEOFNULL "Invalid use of null"
+ AFX_IDP_E_INVALIDFILEFORMAT "Invalid file format"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Invalid property value"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Invalid array index"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Property cannot be set at run time"
+ AFX_IDP_E_SETNOTSUPPORTED "Property is read-only"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Must specify array index when using property array"
+ AFX_IDP_E_SETNOTPERMITTED "Property cannot be set on this control"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "Property cannot be read at run time"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Property is write-only"
+ AFX_IDP_E_PROPERTYNOTFOUND "Property not found"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Invalid clipboard format"
+ AFX_IDP_E_INVALIDPICTURE "Invalid picture"
+ AFX_IDP_E_PRINTERERROR "Printer error"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Cannot create temporary file necessary to save"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Search text not found"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Replacement text too long"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/afxcview.h b/public/sdk/inc/mfc42/afxcview.h
new file mode 100644
index 000000000..a53a580b1
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcview.h
@@ -0,0 +1,135 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCVIEW_H__
+#define __AFXCVIEW_H__
+
+#ifdef _AFX_NO_AFXCMN_SUPPORT
+ #error Windows common control classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifndef __AFXCMN_H__
+ #include <afxcmn.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXRICH - MFC RichEdit classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CView
+ //CCtrlView
+ class CListView;// list control view
+ class CTreeView;// tree control view
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CListView
+
+class CListView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CListView)
+
+// Construction
+public:
+ CListView();
+
+// Attributes
+public:
+ CListCtrl& GetListCtrl() const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+protected:
+ void RemoveImageList(int nImageList);
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+
+public:
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ //{{AFX_MSG(CListView)
+ afx_msg void OnNcDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTreeView
+
+class CTreeView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CTreeView)
+
+// Construction
+public:
+ CTreeView();
+
+// Attributes
+public:
+ CTreeCtrl& GetTreeCtrl() const;
+
+protected:
+ void RemoveImageList(int nImageList);
+
+public:
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ //{{AFX_MSG(CTreeView)
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXCVIEW_INLINE inline
+#include <afxcview.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXCVIEW_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxcview.inl b/public/sdk/inc/mfc42/afxcview.inl
new file mode 100644
index 000000000..40274d4c0
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxcview.inl
@@ -0,0 +1,29 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXCVIEW.H
+
+#ifdef _AFXCVIEW_INLINE
+
+// CListView
+_AFXCVIEW_INLINE CListView::CListView() : CCtrlView(WC_LISTVIEW,
+ AFX_WS_DEFAULT_VIEW)
+ { }
+_AFXCVIEW_INLINE CListCtrl& CListView::GetListCtrl() const
+ { return *(CListCtrl*)this; }
+_AFXCVIEW_INLINE CTreeView::CTreeView() : CCtrlView(WC_TREEVIEW,
+ AFX_WS_DEFAULT_VIEW)
+ { }
+_AFXCVIEW_INLINE CTreeCtrl& CTreeView::GetTreeCtrl() const
+ { return *(CTreeCtrl*)this; }
+
+#endif //_AFXCVIEW_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdao.h b/public/sdk/inc/mfc42/afxdao.h
new file mode 100644
index 000000000..7475c9f13
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdao.h
@@ -0,0 +1,1325 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDAO_H
+#define __AFXDAO_H
+
+#ifdef _AFX_NO_DAO_SUPPORT
+ #error DAO Database classes not supported in this library variant.
+#endif
+
+#ifndef __AFXDISP_H__
+ #include <afxdisp.h> // Must include this before dao headers
+#endif
+#ifndef _DBDAOINT_H_
+ #include <dbdaoint.h>
+#endif
+#ifndef _DAOGETRW_H_
+ #include <daogetrw.h>
+#endif
+#ifndef _DBDAOID_H_
+ #include <dbdaoid.h>
+#endif
+#ifndef _DBDAOERR_H_
+ #include <dbdaoerr.h>
+#endif
+
+#ifndef __AFXDB__H__
+ #include <afxdb_.h> // shared header with ODBC database classes
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h> // for CFormView
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfco42d.lib")
+ #pragma comment(lib, "mfcd42d.lib")
+ #else
+ #pragma comment(lib, "mfco42ud.lib")
+ #pragma comment(lib, "mfcd42ud.lib")
+ #endif
+ #endif
+
+#endif
+
+#pragma comment(lib, "daouuid.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+////////////////////////////////////////////////////////////////////////
+// AFXDAO - MFC Database support using DAO
+
+// Classes declared in this file
+
+ // CException
+ class CDaoException; // DAO error/exception handling
+
+ // CObject
+ class CDaoRecordView;
+ class CDaoWorkspace; // DAO engine/transaction/security manager
+ class CDaoDatabase; // DAO database manager
+ class CDaoRecordset; // DAO result set manager
+ class CDaoTableDef; // DAO base table manager
+ class CDaoQueryDef; // DAO query manager
+
+ // Non-CObject classes
+ class CDaoFieldExchange;
+ struct CDaoFieldCache;
+ struct CDaoErrorInfo;
+ struct CDaoWorkspaceInfo;
+ struct CDaoDatabaseInfo;
+ struct CDaoTableDefInfo;
+ struct CDaoFieldInfo;
+ struct CDaoIndexInfo;
+ struct CDaoRelationInfo;
+ struct CDaoQueryDefInfo;
+ struct CDaoParameterInfo;
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLL support
+
+#undef AFX_DATA
+#define AFX_DATA AFX_DB_DATA
+
+////////////////////////////////////////////////////////////////////////
+// Data caching structures
+struct CDaoFieldCache
+{
+ void* m_pvData; // Pointer to cached data of any supported type.
+ BYTE m_nStatus; // (NULL) status cache.
+ BYTE m_nDataType; // Type of data cached.
+};
+
+////////////////////////////////////////////////////////////////////////
+// Info structures
+
+struct CDaoErrorInfo
+{
+// Attributes
+ long m_lErrorCode;
+ CString m_strSource;
+ CString m_strDescription;
+ CString m_strHelpFile;
+ long m_lHelpContext;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoWorkspaceInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ CString m_strUserName; // Secondary
+ BOOL m_bIsolateODBCTrans; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoDatabaseInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bUpdatable; // Primary
+ BOOL m_bTransactions; // Primary
+ CString m_strVersion; // Secondary
+ long m_lCollatingOrder; // Secondary
+ short m_nQueryTimeout; // Secondary
+ CString m_strConnect; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoTableDefInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bUpdatable; // Primary
+ long m_lAttributes; // Primary
+ COleDateTime m_dateCreated; // Secondary
+ COleDateTime m_dateLastUpdated; // Secondary
+ CString m_strSrcTableName; // Secondary
+ CString m_strConnect; // Secondary
+ CString m_strValidationRule; // All
+ CString m_strValidationText; // All
+ long m_lRecordCount; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ long m_lSize; // Primary
+ long m_lAttributes; // Primary
+ short m_nOrdinalPosition; // Secondary
+ BOOL m_bRequired; // Secondary
+ BOOL m_bAllowZeroLength; // Secondary
+ long m_lCollatingOrder; // Secondary
+ CString m_strForeignName; // Secondary
+ CString m_strSourceField; // Secondary
+ CString m_strSourceTable; // Secondary
+ CString m_strValidationRule; // All
+ CString m_strValidationText; // All
+ CString m_strDefaultValue; // All
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoIndexFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ BOOL m_bDescending; // Primary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoIndexInfo
+{
+// Constructors
+ CDaoIndexInfo();
+
+// Attributes
+ CString m_strName; // Primary
+ CDaoIndexFieldInfo* m_pFieldInfos; // Primary
+ short m_nFields; // Primary
+ BOOL m_bPrimary; // Secondary
+ BOOL m_bUnique; // Secondary
+ BOOL m_bClustered; // Secondary
+ BOOL m_bIgnoreNulls; // Secondary
+ BOOL m_bRequired; // Secondary
+ BOOL m_bForeign; // Secondary
+ long m_lDistinctCount; // All
+
+// Implementation
+ virtual ~CDaoIndexInfo();
+ BOOL m_bCleanupFieldInfo;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoRelationFieldInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ CString m_strForeignName; // Primary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoRelationInfo
+{
+// Constructor
+ CDaoRelationInfo();
+
+// Attributes
+ CString m_strName; // Primary
+ CString m_strTable; // Primary
+ CString m_strForeignTable; // Primary
+ long m_lAttributes; // Secondary
+ CDaoRelationFieldInfo* m_pFieldInfos; // Secondary
+ short m_nFields; // Secondary
+
+// Implementation
+ virtual ~CDaoRelationInfo();
+ BOOL m_bCleanupFieldInfo;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoQueryDefInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ COleDateTime m_dateCreated; // Secondary
+ COleDateTime m_dateLastUpdated; // Secondary
+ BOOL m_bUpdatable; // Secondary
+ BOOL m_bReturnsRecords; // Secondary
+ CString m_strSQL; // All
+ CString m_strConnect; // All
+ short m_nODBCTimeout; // See readme
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+struct CDaoParameterInfo
+{
+// Attributes
+ CString m_strName; // Primary
+ short m_nType; // Primary
+ COleVariant m_varValue; // Secondary
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+////////////////////////////////////////////////////////////////////////
+// DAO Helpers
+//
+
+// Flags for getting and/or setting object properties
+#define AFX_DAO_PRIMARY_INFO 0x00000001 // Get only primary
+#define AFX_DAO_SECONDARY_INFO 0x00000002 // Get primary & secondary
+#define AFX_DAO_ALL_INFO 0x00000004 // Get All info
+
+// Jet engine TRUE/FALSE definitions
+#define AFX_DAO_TRUE (-1L)
+#define AFX_DAO_FALSE 0
+
+// Set CDaoRecordset::Open option to use m_nDefaultType
+#define AFX_DAO_USE_DEFAULT_TYPE (-1L)
+
+// Flags used for Move/Find
+#define AFX_DAO_NEXT (+1L)
+#define AFX_DAO_PREV (-1L)
+#define AFX_DAO_FIRST LONG_MIN
+#define AFX_DAO_LAST LONG_MAX
+
+// Default sizes for DFX function PreAlloc sizes
+#define AFX_DAO_TEXT_DEFAULT_SIZE 255
+#define AFX_DAO_BINARY_DEFAULT_SIZE 2048
+#define AFX_DAO_LONGBINARY_DEFAULT_SIZE 32768
+
+// Flag used for DFX functions dwBindOptions bitmask
+#define AFX_DAO_ENABLE_FIELD_CACHE 0x01
+#define AFX_DAO_DISABLE_FIELD_CACHE 0
+#define AFX_DAO_CACHE_BY_VALUE 0x80 // MFC Internal
+
+// Field Flags, used to indicate status of fields
+#define AFX_DAO_FIELD_FLAG_DIRTY 0x01
+#define AFX_DAO_FIELD_FLAG_NULL 0x02
+#define AFX_DAO_FIELD_FLAG_NULLABLE_KNOWN 0x04
+#define AFX_DAO_FIELD_FLAG_NULLABLE 0x08
+
+// Extended error codes
+#define NO_AFX_DAO_ERROR 0
+#define AFX_DAO_ERROR_MIN 2000
+#define AFX_DAO_ERROR_ENGINE_INITIALIZATION AFX_DAO_ERROR_MIN + 0
+#define AFX_DAO_ERROR_DFX_BIND AFX_DAO_ERROR_MIN + 1
+#define AFX_DAO_ERROR_OBJECT_NOT_OPEN AFX_DAO_ERROR_MIN + 2
+#define AFX_DAO_ERROR_MAX AFX_DAO_ERROR_MIN + 2
+
+// Object status flags
+#define AFX_DAO_IMPLICIT_WS 0x01
+#define AFX_DAO_IMPLICIT_DB 0x02
+#define AFX_DAO_IMPLICIT_QD 0x04
+#define AFX_DAO_IMPLICIT_TD 0x08
+#define AFX_DAO_IMPLICIT_CLOSE 0x40
+#define AFX_DAO_DEFAULT_WS 0x80
+
+// CDaoRecordView status flags
+#define AFX_DAOVIEW_SCROLL_NEXT 0x01
+#define AFX_DAOVIEW_SCROLL_LAST 0x02
+#define AFX_DAOVIEW_SCROLL_BACKWARD 0x04
+
+// Logging helpers
+void AFXAPI AfxDaoCheck(SCODE scode, LPCSTR lpszDaoCall,
+ LPCSTR lpszFile, int nLine, int nError = NO_AFX_DAO_ERROR,
+ BOOL bMemOnly = FALSE);
+
+#ifdef _DEBUG
+void AFXAPI AfxDaoTrace(SCODE scode, LPCSTR lpszDaoCall,
+ LPCSTR lpszFile, int nLine);
+#endif
+
+#ifdef _DEBUG
+#define DAO_CHECK(f) AfxDaoCheck(f, #f, THIS_FILE, __LINE__)
+#define DAO_CHECK_ERROR(f, err) AfxDaoCheck(f, #f, THIS_FILE, __LINE__, err)
+#define DAO_CHECK_MEM(f) AfxDaoCheck(f, #f, THIS_FILE, __LINE__, \
+ NO_AFX_DAO_ERROR, TRUE)
+#define DAO_TRACE(f) AfxDaoTrace(f, #f, THIS_FILE, __LINE__)
+#else
+#define DAO_CHECK(f) AfxDaoCheck(f, NULL, NULL, 0)
+#define DAO_CHECK_ERROR(f, err) AfxDaoCheck(f, NULL, NULL, 0, err)
+#define DAO_CHECK_MEM(f) AfxDaoCheck(f, NULL, NULL, 0, \
+ NO_AFX_DAO_ERROR, TRUE)
+#define DAO_TRACE(f) f
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CDaoFieldExchange - for field exchange
+class CDaoFieldExchange
+{
+// Attributes
+public:
+ enum DFX_Operation
+ {
+ AddToParameterList, // builds PARAMETERS clause
+ AddToSelectList, // builds SELECT clause
+ BindField, // sets up binding structure
+ BindParam, // sets parameter values
+ Fixup, // sets NULL status
+ AllocCache, // allocates cache used for dirty check
+ StoreField, // saves current record to cache
+ LoadField, // restores cached data to member vars
+ FreeCache, // frees cache
+ SetFieldNull, // sets field status & value to NULL
+ MarkForAddNew, // marks fields dirty if not PSEUDO NULL
+ MarkForEdit, // marks fields dirty if don't match cache
+ SetDirtyField, // sets field values marked as dirty
+#ifdef _DEBUG
+ DumpField,
+#endif
+ MaxDFXOperation, // dummy operation type for input checking
+ };
+
+ UINT m_nOperation; // type of exchange operation
+ CDaoRecordset* m_prs; // recordset handle
+
+// Operations
+public:
+ enum FieldType
+ {
+ none,
+ outputColumn,
+ param,
+ };
+
+ void SetFieldType(UINT nFieldType);
+ BOOL IsValidOperation();
+
+// Implementation
+public:
+ CDaoFieldExchange(UINT nOperation, CDaoRecordset* prs,
+ void* pvField = NULL);
+
+ void Default(LPCTSTR lpszName, void* pv, DWORD dwFieldType,
+ DWORD dwBindOptions = 0);
+
+ static void PASCAL AppendParamType(CString& strParamList, DWORD dwParamType);
+ static CDaoFieldCache* PASCAL GetCacheValue(CDaoRecordset* prs, void* pv);
+ static void PASCAL SetNullValue(void* pv, DWORD dwDataType);
+ static BOOL PASCAL IsNullValue(void* pv, DWORD dwDataType);
+ static void PASCAL AllocCacheValue(CDaoFieldCache*& pCache, DWORD dwDataType);
+ static void PASCAL DeleteCacheValue(CDaoFieldCache* pCache, DWORD dwDataType);
+ static void PASCAL CopyValue(void* pvSrc, void* pvDest, DWORD dwDataType);
+ static BOOL PASCAL CompareValue(void* pvSrc, void* pvDest, DWORD dwDataType);
+ static void PASCAL FillVariant(void* pvValue, DWORD dwDataType, COleVariant** ppVar);
+
+ // Current type of field
+ UINT m_nFieldType;
+ void* m_pvField;
+ UINT m_nField;
+ UINT m_nParam;
+ UINT m_nFieldFound;
+
+#ifdef _DEBUG
+ CDumpContext* m_pdcDump;
+#endif //_DEBUG
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard RecordSet Field Exchange routines
+
+// variable length data
+void AFXAPI DFX_Text(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CString& value, int nPreAllocSize = AFX_DAO_TEXT_DEFAULT_SIZE,
+ DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Binary(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CByteArray& value, int nPreAllocSize = AFX_DAO_BINARY_DEFAULT_SIZE,
+ DWORD dwBindOptions = 0);
+void AFXAPI DFX_LongBinary(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ CLongBinary& value, DWORD dwPreAllocSize = AFX_DAO_LONGBINARY_DEFAULT_SIZE,
+ DWORD dwBndOptions = 0);
+
+//fixed length data
+void AFXAPI DFX_Bool(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ BOOL& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Byte(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ BYTE& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Short(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ short& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Long(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ long& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Currency(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ COleCurrency& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Single(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ float& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_Double(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ double& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+void AFXAPI DFX_DateTime(CDaoFieldExchange* pFX, LPCTSTR lpszName,
+ COleDateTime& value, DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
+
+//////////////////////////////////////////////////////////////////////////
+// Database Dialog Data Exchange cover routines
+// Cover routines provide database semantics on top of DDX routines
+
+// simple text operations
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BOOL& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BYTE& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, short& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, long& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, COleCurrency& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, DWORD& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, float& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, double& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, COleDateTime& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+
+// special control types
+void AFXAPI DDX_FieldCheck(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldRadio(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBString(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBString(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC,
+ CString& value, CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBIndex(CDataExchange* pDX, int nIDC, int& index,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBIndex(CDataExchange* pDX, int nIDC, int& index,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC, CString& value,
+ CDaoRecordset* pRecordset);
+void AFXAPI DDX_FieldScroll(CDataExchange* pDX, int nIDC, int& value,
+ CDaoRecordset* pRecordset);
+
+////////////////////////////////////////////////////////////////////////
+// CDaoWorkspace - a DAO Workspace
+
+class CDaoWorkspace : public CObject
+{
+ DECLARE_DYNAMIC(CDaoWorkspace)
+
+// Constructors
+public:
+ CDaoWorkspace();
+
+ virtual void Create(LPCTSTR lpszName, LPCTSTR lpszUserName,
+ LPCTSTR lpszPassword);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName = NULL);
+ virtual void Close();
+
+// Attributes
+public:
+ DAOWorkspace* m_pDAOWorkspace;
+
+ static CString PASCAL GetVersion();
+ static CString PASCAL GetIniPath();
+ static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);
+ static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);
+ static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);
+ static short PASCAL GetLoginTimeout();
+ static void PASCAL SetLoginTimeout(short nSeconds);
+
+ CString GetName();
+ CString GetUserName();
+ void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);
+ BOOL GetIsolateODBCTrans();
+
+ BOOL IsOpen() const;
+
+// Operations
+public:
+ void BeginTrans();
+ void CommitTrans();
+ void Rollback();
+
+ static void PASCAL CompactDatabase(LPCTSTR lpszSrcName,
+ LPCTSTR lpszDestName, LPCTSTR lpszLocale = dbLangGeneral,
+ int nOptions = 0);
+ // Password parameter added late in dev cycle, new interface req'd
+ static void PASCAL CompactDatabase(LPCTSTR lpszSrcName,
+ LPCTSTR lpszDestName, LPCTSTR lpszLocale, int nOptions,
+ LPCTSTR lpszPassword);
+ static void PASCAL RepairDatabase(LPCTSTR lpszName);
+
+ static void PASCAL Idle(int nAction = dbFreeLocks);
+
+ short GetWorkspaceCount();
+ void GetWorkspaceInfo(int nIndex, CDaoWorkspaceInfo& wkspcinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetWorkspaceInfo(LPCTSTR lpszName, CDaoWorkspaceInfo& wkspcinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetDatabaseCount();
+ void GetDatabaseInfo(int nIndex, CDaoDatabaseInfo& dbinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetDatabaseInfo(LPCTSTR lpszName, CDaoDatabaseInfo& dbinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ virtual ~CDaoWorkspace();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOWorkspaces* m_pDAOWorkspaces;
+ DAODatabases* m_pDAODatabases;
+ int m_nStatus;
+
+ CMapPtrToPtr m_mapDatabases; // Map of all Open CDaoDatabases
+ BOOL IsNew() const;
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ static void AFX_CDECL InitializeEngine();
+
+ void InitWorkspacesCollection();
+ void FillWorkspaceInfo(DAOWorkspace* pDAOWorkspace,
+ CDaoWorkspaceInfo& wsinfo, DWORD dwOptions);
+
+ void InitDatabasesCollection();
+ void FillDatabaseInfo(DAODatabase* pDAODatabase,
+ CDaoDatabaseInfo& dbinfo, DWORD dwOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+////////////////////////////////////////////////////////////////////////
+// CDaoException - DAO error trapping mechanism
+class CDaoException : public CException
+{
+ DECLARE_DYNAMIC(CDaoException)
+
+// Constructors
+public:
+ CDaoException();
+
+// Attributes
+public:
+ CDaoErrorInfo* m_pErrorInfo;
+
+ SCODE m_scode;
+ int m_nAfxDaoError; // DAO class extended error code
+
+// Operations
+public:
+ short GetErrorCount();
+ void GetErrorInfo(int nIndex);
+
+// Implementation
+public:
+ virtual ~CDaoException();
+
+ DAOError* m_pDAOError;
+ DAOErrors* m_pDAOErrors;
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+protected:
+ void InitErrorsCollection();
+ void FillErrorInfo();
+};
+
+void AFXAPI AfxThrowDaoException(int nAfxDaoError = NO_AFX_DAO_ERROR,
+ SCODE scode = S_OK);
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoDatabase - a DAO Database
+
+class CDaoDatabase : public CObject
+{
+ DECLARE_DYNAMIC(CDaoDatabase)
+
+// Constructors
+public:
+ CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);
+
+ virtual void Create(LPCTSTR lpszName,
+ LPCTSTR lpszLocale = dbLangGeneral, int dwOptions = 0);
+
+ virtual void Open(LPCTSTR lpszName, BOOL bExclusive = FALSE,
+ BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = _T(""));
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoWorkspace* m_pWorkspace;
+ DAODatabase* m_pDAODatabase;
+
+ BOOL IsOpen() const;
+
+ BOOL CanUpdate();
+ BOOL CanTransact();
+
+ CString GetName();
+ CString GetConnect();
+
+ CString GetVersion();
+ short GetQueryTimeout();
+ void SetQueryTimeout(short nSeconds);
+ long GetRecordsAffected();
+
+// Operations
+public:
+ void Execute(LPCTSTR lpszSQL, int nOptions = dbFailOnError);
+
+ void DeleteTableDef(LPCTSTR lpszName);
+ void DeleteQueryDef(LPCTSTR lpszName);
+
+ void CreateRelation(LPCTSTR lpszName, LPCTSTR lpszTable,
+ LPCTSTR lpszForeignTable, long lAttributes,
+ LPCTSTR lpszField, LPCTSTR lpszForeignField);
+ void CreateRelation(CDaoRelationInfo& relinfo);
+ void DeleteRelation(LPCTSTR lpszName);
+
+ short GetTableDefCount();
+ void GetTableDefInfo(int nIndex, CDaoTableDefInfo& tabledefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetTableDefInfo(LPCTSTR lpszName, CDaoTableDefInfo& tabledefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetRelationCount();
+ void GetRelationInfo(int nIndex, CDaoRelationInfo& relinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetRelationInfo(LPCTSTR lpszName, CDaoRelationInfo& relinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetQueryDefCount();
+ void GetQueryDefInfo(int nIndex, CDaoQueryDefInfo& querydefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetQueryDefInfo(LPCTSTR lpszName, CDaoQueryDefInfo& querydefinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ virtual ~CDaoDatabase();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOTableDefs* m_pDAOTableDefs;
+ DAORelations* m_pDAORelations;
+ DAOQueryDefs* m_pDAOQueryDefs;
+ DAORecordsets* m_pDAORecordsets;
+ int m_nStatus;
+
+ CMapPtrToPtr m_mapTableDefs; // Map of all Open CDaoTableDefs
+ CMapPtrToPtr m_mapQueryDefs; // Map of all Open CDaoQueryDefs
+ CMapPtrToPtr m_mapRecordsets; // Map of all Open CDaoRecordsets
+
+protected:
+ BOOL m_bOpen;
+
+ void InitWorkspace();
+ void InitTableDefsCollection();
+ void FillTableDefInfo(DAOTableDef* pDAOTableDef,
+ CDaoTableDefInfo& tabledefinfo, DWORD dwOptions);
+ void InitRelationsCollection();
+ void FillRelationInfo(DAORelation* pDAORelation,
+ CDaoRelationInfo& relinfo, DWORD dwOptions);
+ void InitQueryDefsCollection();
+ void FillQueryDefInfo(DAOQueryDef* pDAOQueryDef,
+ CDaoQueryDefInfo& querydefinfo, DWORD dwOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoTableDef - a DAO TableDef
+
+class CDaoTableDef : public CObject
+{
+ DECLARE_DYNAMIC(CDaoTableDef)
+
+// Constructors
+public:
+ CDaoTableDef(CDaoDatabase* pDatabase);
+
+ virtual void Create(LPCTSTR lpszName, long lAttributes = 0,
+ LPCTSTR lpszSrcTable = NULL, LPCTSTR lpszConnect = NULL);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase;
+ DAOTableDef* m_pDAOTableDef;
+
+ BOOL IsOpen() const;
+ BOOL CanUpdate();
+
+ void SetName(LPCTSTR lpszName);
+ CString GetName();
+ void SetSourceTableName(LPCTSTR lpszSrcTableName);
+ CString GetSourceTableName();
+ void SetConnect(LPCTSTR lpszConnect);
+ CString GetConnect();
+ void SetAttributes(long lAttributes);
+ long GetAttributes();
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ void SetValidationRule(LPCTSTR lpszValidationRule);
+ CString GetValidationRule();
+ void SetValidationText(LPCTSTR lpszValidationText);
+ CString GetValidationText();
+ long GetRecordCount();
+
+// Overridables
+public:
+
+// Operations
+public:
+ void CreateField(LPCTSTR lpszName, short nType, long lSize,
+ long lAttributes = 0);
+ void CreateField(CDaoFieldInfo& fieldinfo);
+ void DeleteField(LPCTSTR lpszName);
+ void DeleteField(int nIndex);
+
+ void CreateIndex(CDaoIndexInfo& indexinfo);
+ void DeleteIndex(LPCTSTR lpszName);
+ void DeleteIndex(int nIndex);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetIndexCount();
+ void GetIndexInfo(int nIndex, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetIndexInfo(LPCTSTR lpszName, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ void RefreshLink();
+
+// Implementation
+public:
+ ~CDaoTableDef();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOFields* m_pDAOFields;
+ DAOIndexes* m_pDAOIndexes;
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ void InitFieldsCollection();
+ void InitIndexesCollection();
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoQueryDef - a DAO QueryDef
+
+class CDaoQueryDef : public CObject
+{
+ DECLARE_DYNAMIC(CDaoQueryDef)
+
+// Constructors
+public:
+ CDaoQueryDef(CDaoDatabase* pDatabase);
+
+ virtual void Create(LPCTSTR lpszName = NULL,
+ LPCTSTR lpszSQL = NULL);
+ virtual void Append();
+
+ virtual void Open(LPCTSTR lpszName = NULL);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase;
+ DAOQueryDef* m_pDAOQueryDef;
+
+ BOOL CanUpdate();
+
+ CString GetName();
+ void SetName(LPCTSTR lpszName);
+ CString GetSQL();
+ void SetSQL(LPCTSTR lpszSQL);
+ short GetType();
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ CString GetConnect();
+ void SetConnect(LPCTSTR lpszConnect);
+ short GetODBCTimeout();
+ void SetODBCTimeout(short nODBCTimeout);
+ BOOL GetReturnsRecords();
+ void SetReturnsRecords(BOOL bReturnsRecords);
+ long GetRecordsAffected();
+
+ BOOL IsOpen() const;
+
+// Operations
+public:
+ virtual void Execute(int nOptions = dbFailOnError);
+
+ virtual COleVariant GetParamValue(LPCTSTR lpszName);
+ virtual COleVariant GetParamValue(int nIndex);
+ virtual void SetParamValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetParamValue(int nIndex,
+ const COleVariant& varValue);
+ void SetParamValueNull(LPCTSTR lpszName);
+ void SetParamValueNull(int nIndex);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetParameterCount();
+ void GetParameterInfo(int nIndex, CDaoParameterInfo& paraminfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetParameterInfo(LPCTSTR lpszName,
+ CDaoParameterInfo& paraminfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+
+// Implementation
+public:
+ ~CDaoQueryDef();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ DAOFields* m_pDAOFields;
+ DAOParameters* m_pDAOParameters;
+
+protected:
+ BOOL m_bOpen;
+ BOOL m_bNew;
+
+ void InitFieldsCollection();
+ void InitParametersCollection();
+ void FillParameterInfo(DAOParameter* pDAOParameter,
+ CDaoParameterInfo& paraminfo, DWORD dwInfoOptions);
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+};
+
+
+////////////////////////////////////////////////////////////////////////
+// CDaoRecordset - the result of a query or base table browse
+
+class CDaoRecordset : public CObject
+{
+ DECLARE_DYNAMIC(CDaoRecordset)
+
+// Constructor
+public:
+ CDaoRecordset(CDaoDatabase* pDatabase = NULL);
+
+ virtual void Open(int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
+ LPCTSTR lpszSQL = NULL, int nOptions = 0);
+ virtual void Open(CDaoQueryDef* pQueryDef,
+ int nOpenType = dbOpenDynaset, int nOptions = 0);
+ virtual void Open(CDaoTableDef* pTableDef,
+ int nOpenType = dbOpenTable, int nOptions = 0);
+ virtual void Close();
+
+// Attributes
+public:
+ CDaoDatabase* m_pDatabase; // Source database for this result set
+ DAORecordset* m_pDAORecordset;
+
+ CString m_strFilter; // Filter string used when constructing SQL
+ CString m_strSort; // Sort string used when constructing SQL
+
+ int m_nFields;
+ int m_nParams;
+
+ BOOL m_bCheckCacheForDirtyFields; // Switch for dirty field checking.
+
+ BOOL CanUpdate() const;
+ BOOL CanAppend() const;
+ BOOL CanScroll() const;
+ BOOL CanRestart();
+ BOOL CanTransact();
+ BOOL CanBookmark();
+
+ BOOL IsOpen() const;
+ BOOL IsBOF();
+ BOOL IsEOF();
+ BOOL IsDeleted() const;
+
+ BOOL IsFieldDirty(void* pv);
+ BOOL IsFieldNull(void* pv);
+ BOOL IsFieldNullable(void* pv);
+
+ CString GetName();
+ short GetType();
+ short GetEditMode();
+ CString GetSQL() const;
+
+ COleDateTime GetDateCreated();
+ COleDateTime GetDateLastUpdated();
+ COleVariant GetLastModifiedBookmark();
+ CString GetValidationRule();
+ CString GetValidationText();
+ CString GetCurrentIndex();
+ void SetCurrentIndex(LPCTSTR lpszIndex);
+
+ long GetRecordCount();
+
+// Operations
+public:
+ // Cursor operations
+ void MoveNext();
+ void MovePrev();
+ void MoveFirst();
+ void MoveLast();
+ virtual void Move(long lRows);
+
+ BOOL FindNext(LPCTSTR lpszFilter);
+ BOOL FindPrev(LPCTSTR lpszFilter);
+ BOOL FindFirst(LPCTSTR lpszFilter);
+ BOOL FindLast(LPCTSTR lpszFilter);
+ virtual BOOL Find(long lFindType, LPCTSTR lpszFilter);
+
+ COleVariant GetBookmark();
+ void SetBookmark(COleVariant varBookmark);
+ long GetAbsolutePosition();
+ void SetAbsolutePosition(long lPosition);
+ float GetPercentPosition();
+ void SetPercentPosition(float fPosition);
+
+ // seek allowed on recordset opened as tables (max keys = 13)
+ BOOL Seek(LPCTSTR lpszComparison, COleVariant* pKey1,
+ COleVariant* pKey2 = NULL, COleVariant* pKey3 = NULL);
+ BOOL Seek(LPCTSTR lpszComparison, COleVariant* pKeyArray, WORD nKeys);
+
+ // edit buffer operations
+ virtual void AddNew();
+ virtual void Edit();
+ virtual void Update();
+ virtual void Delete();
+ virtual void CancelUpdate();
+
+ // field operations
+ virtual void GetFieldValue(LPCTSTR lpszName, COleVariant& varValue);
+ virtual void GetFieldValue(int nIndex, COleVariant& varValue);
+ virtual void SetFieldValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetFieldValue(int nIndex,
+ const COleVariant& varValue);
+ void SetFieldValue(int nIndex, LPCTSTR lpszValue);
+ void SetFieldValue(LPCTSTR lpszName, LPCTSTR lpszValue);
+ void SetFieldValueNull(LPCTSTR lpszName);
+ void SetFieldValueNull(int nIndex);
+
+ virtual COleVariant GetParamValue(LPCTSTR lpszName);
+ virtual COleVariant GetParamValue(int nIndex);
+ virtual void SetParamValue(LPCTSTR lpszName,
+ const COleVariant& varValue);
+ virtual void SetParamValue(int nIndex,
+ const COleVariant& varValue);
+ void SetParamValueNull(LPCTSTR lpszName);
+ void SetParamValueNull(int nIndex);
+
+ void SetFieldDirty(void* pv, BOOL bDirty = TRUE);
+ void SetFieldNull(void* pv, BOOL bNull = TRUE);
+
+ void SetLockingMode(BOOL bPessimistic);
+ BOOL GetLockingMode();
+
+ // Recordset operations
+ virtual void Requery();
+
+ // Jet's remote data caching operations
+ void SetCacheStart(COleVariant varBookmark);
+ COleVariant GetCacheStart();
+ void SetCacheSize(long lSize);
+ long GetCacheSize();
+ void FillCache(long* pSize = NULL, COleVariant* pBookmark = NULL);
+
+ short GetFieldCount();
+ void GetFieldInfo(int nIndex, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetFieldInfo(LPCTSTR lpszName, CDaoFieldInfo& fieldinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+ short GetIndexCount();
+ void GetIndexInfo(int nIndex, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+ void GetIndexInfo(LPCTSTR lpszName, CDaoIndexInfo& indexinfo,
+ DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
+
+// Overridables
+public:
+ virtual CString GetDefaultDBName();
+ virtual CString GetDefaultSQL();
+
+ // for recordset field exchange
+ virtual void DoFieldExchange(CDaoFieldExchange* pFX);
+
+// Implementation
+public:
+ virtual ~CDaoRecordset();
+
+ // Out-of-date functions kept for backward compatability
+ virtual COleVariant GetFieldValue(LPCTSTR lpszName);
+ virtual COleVariant GetFieldValue(int nIndex);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ CString m_strSQL;
+
+ CDaoQueryDef* m_pQueryDef; // Source query for this result set
+ CDaoTableDef* m_pTableDef;
+ ICDAORecordset* m_pICDAORecordsetGetRows;
+ DAOFields* m_pDAOFields;
+ DAOIndexes* m_pDAOIndexes;
+
+ void SetCursorAttributes();
+ void GetDataAndFixupNulls();
+ DWORD GetFieldLength(int nFieldIndex);
+
+ BOOL IsFieldStatusDirty(UINT nField);
+ void SetDirtyFieldStatus(UINT nField);
+ void ClearDirtyFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNull(UINT nField);
+ void SetNullFieldStatus(UINT nField);
+ void ClearNullFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNullable(UINT nField);
+ void SetNullableFieldStatus(UINT nField);
+
+ BOOL IsFieldStatusNullableKnown(UINT nField);
+ void SetNullableKnownFieldStatus(UINT nField);
+
+ void ClearFieldStatusFlags();
+ BOOL IsMatch();
+
+ DWORD m_cbFixedLengthFields;
+ DAOCOLUMNBINDING* m_prgDaoColBindInfo;
+ DWORD* m_pulColumnLengths;
+ DAOFETCHROWS m_DaoFetchRows;
+ BYTE* m_pbFieldFlags;
+ BYTE* m_pbParamFlags;
+
+ CMapPtrToPtr* m_pMapFieldCache;
+ CMapPtrToPtr* m_pMapFieldIndex;
+
+ static void AFX_CDECL StripBrackets(LPCTSTR lpszSrc, LPTSTR lpszDest);
+
+protected:
+ BOOL m_bOpen;
+ int m_nStatus;
+
+ BOOL m_bAppendable;
+ BOOL m_bScrollable;
+ BOOL m_bDeleted;
+
+ int m_nOpenType;
+ int m_nDefaultType;
+ int m_nOptions;
+
+ CString m_strRequerySQL;
+ CString m_strRequeryFilter;
+ CString m_strRequerySort;
+
+ void BuildSQL();
+ void AllocDatabase();
+
+ // RFX Operation Cover Functions
+ void BuildSelectList();
+ void BuildParameterList();
+ void BindFields();
+ void BindParameters();
+ void Fixup();
+ void AllocCache();
+ void StoreFields();
+ void LoadFields();
+ void FreeCache();
+ void MarkForEdit();
+ void MarkForAddNew();
+ int GetFieldIndex(void* pv);
+ virtual void SetDirtyFields();
+
+ void InitFieldsCollection();
+ void InitIndexesCollection();
+
+ virtual void ThrowDaoException(int nError = NO_AFX_DAO_ERROR);
+
+ friend class CDaoFieldExchange;
+ friend class CDaoRecordView;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDaoRecordView - form for viewing data records
+
+class CDaoRecordView : public CFormView
+{
+ DECLARE_DYNAMIC(CDaoRecordView)
+
+// Construction
+protected: // must derive your own class
+ CDaoRecordView(LPCTSTR lpszTemplateName);
+ CDaoRecordView(UINT nIDTemplate);
+
+// Attributes
+public:
+ virtual CDaoRecordset* OnGetRecordset() = 0;
+
+ BOOL IsOnLastRecord();
+ BOOL IsOnFirstRecord();
+
+// Operations
+public:
+ virtual BOOL OnMove(UINT nIDMoveCommand);
+
+// Implementation
+public:
+ virtual ~CDaoRecordView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ int m_nStatus;
+ COleVariant m_varBookmarkCurrent;
+ COleVariant m_varBookmarkFirst;
+ COleVariant m_varBookmarkLast;
+
+ //{{AFX_MSG(CDaoRecordView)
+ afx_msg void OnUpdateRecordFirst(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordPrev(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordNext(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordLast(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ afx_msg void OnMove(int cx, int cy);
+
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// DAODBEngine helpers - implementation specific and undocumented
+void AFXAPI AfxDaoInit();
+DAODBEngine* AFXAPI AfxDaoGetEngine();
+void AFXAPI AfxDaoTerm();
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDAOCORE_INLINE inline
+#define _AFXDAODFX_INLINE inline
+#define _AFXDAOVIEW_INLINE inline
+#include <afxdao.inl>
+#undef _AFXDAOCORE_INLINE
+#undef _AFXDAODFX_INLINE
+#undef _AFXDAOVIEW_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDAO_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdao.inl b/public/sdk/inc/mfc42/afxdao.inl
new file mode 100644
index 000000000..07eddacf2
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdao.inl
@@ -0,0 +1,77 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDAO.H
+
+/////////////////////////////////////////////////////////////////////////////
+// General database inlines
+
+#ifdef _AFXDAOCORE_INLINE
+
+// CDaoWorkspace inlines
+_AFXDAOCORE_INLINE BOOL CDaoWorkspace::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+_AFXDAOCORE_INLINE BOOL CDaoWorkspace::IsNew() const
+ { ASSERT_VALID(this); return m_bNew; }
+
+// CDaoDatabase inlines
+_AFXDAOCORE_INLINE BOOL CDaoDatabase::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+// CDaoTableDef inlines
+_AFXDAOCORE_INLINE BOOL CDaoTableDef::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+// CDaoQueryDef inlines
+_AFXDAOCORE_INLINE BOOL CDaoQueryDef::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+// CDaoRecordset inlines
+_AFXDAOCORE_INLINE BOOL CDaoRecordset::IsOpen() const
+ { ASSERT_VALID(this); return m_bOpen; }
+
+#endif // _AFXDAOCORE_INLINE
+
+
+#ifdef _AFXDAODFX_INLINE
+
+// CDaoFieldExchange
+_AFXDAODFX_INLINE void CDaoFieldExchange::SetFieldType(UINT nFieldType)
+{ ASSERT(nFieldType == outputColumn || nFieldType == param);
+ m_nFieldType = nFieldType; }
+
+#endif // _AFXDAODFX_INLINE
+
+
+#ifdef _AFXDAOVIEW_INLINE
+
+// CDaoRecordView inlines
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordFirst(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_BACKWARD); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordNext(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_NEXT); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordPrev(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_BACKWARD); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnUpdateRecordLast(CCmdUI* pCmdUI)
+ { ASSERT_VALID(this);
+ pCmdUI->Enable(m_nStatus & AFX_DAOVIEW_SCROLL_LAST); }
+
+_AFXDAOVIEW_INLINE void CDaoRecordView::OnMove(int cx, int cy)
+ { CFormView::OnMove(cx, cy); }
+
+#endif // _AFXDAOVIEW_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdb.h b/public/sdk/inc/mfc42/afxdb.h
new file mode 100644
index 000000000..dd8f6abb2
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdb.h
@@ -0,0 +1,1042 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_H__
+#define __AFXDB_H__
+
+#ifdef _AFX_NO_DB_SUPPORT
+ #error Database classes not supported in this library variant.
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h>
+#endif
+
+#ifndef __AFXDB__H__
+ #include <afxdb_.h> // shared header DAO database classes
+#endif
+
+// include standard SQL/ODBC "C" APIs
+#ifndef __SQL
+ #include <sql.h> // core
+#endif
+#ifndef __SQLEXT
+ #include <sqlext.h> // extensions
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfcd42d.lib")
+ #else
+ #pragma comment(lib, "mfcd42ud.lib")
+ #endif
+ #endif
+#endif
+
+#pragma comment(lib, "odbc32.lib")
+#pragma comment(lib, "odbccp32.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Macintosh libraries
+
+#ifdef _AFXDLL
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfcd42pd.lib")
+ #else
+ #pragma comment(lib, "mfcd42p.lib")
+ #endif
+#endif
+
+#ifdef _MPPC_
+#pragma comment(lib, "odbccfgp.lib")
+#pragma comment(lib, "odbcdrvp.lib")
+#else
+#pragma comment(lib, "odbccfgm.lib")
+#pragma comment(lib, "odbcdrvm.lib")
+#ifdef _DEBUG
+#pragma comment (lib, "aslmd.lib")
+#else
+#pragma comment (lib, "aslm.lib")
+#endif
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDB - MFC SQL/ODBC/Database support
+
+// Classes declared in this file
+
+ //CException
+ class CDBException; // abnormal return value
+
+ //CFieldExchange
+ class CFieldExchange; // Recordset Field Exchange
+
+ //CObject
+ class CDatabase; // Connecting to databases
+ class CRecordset; // Data result sets
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CView
+ //CScrollView
+ //CFormView
+ class CRecordView; // view records with a form
+
+// Non CObject classes
+class CDBVariant;
+struct CRecordsetStatus;
+struct CFieldInfo;
+struct CODBCFieldInfo;
+struct CODBCParamInfo;
+
+/////////////////////////////////////////////////////////////////////////////
+
+// ODBC helpers
+// return code left in 'nRetCode'
+
+// This MACRO is now out-of-date (kept for backward compatibility)
+#define AFX_ODBC_CALL(SQLFunc) \
+ do \
+ { \
+ } while ((nRetCode = (SQLFunc)) == SQL_STILL_EXECUTING)
+
+// Not really required, but kept for compatibilty
+#define AFX_SQL_SYNC(SQLFunc) \
+ do \
+ { \
+ nRetCode = SQLFunc; \
+ } while (0)
+
+// Now out-of-date (prs not used) but kept for compatibility
+#define AFX_SQL_ASYNC(prs, SQLFunc) AFX_ODBC_CALL(SQLFunc)
+
+// Max display length in chars of timestamp (date & time) value
+#define TIMESTAMP_PRECISION 23
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_DB_DATA
+
+// Miscellaneous sizing info
+#define MAX_CURRENCY 30 // Max size of Currency($) string
+#define MAX_TNAME_LEN 64 // Max size of table names
+#define MAX_FNAME_LEN 64 // Max size of field names
+#define MAX_DBNAME_LEN 32 // Max size of a database name
+#define MAX_DNAME_LEN 256 // Max size of Recordset names
+#define MAX_CONNECT_LEN 512 // Max size of Connect string
+#define MAX_CURSOR_NAME 18 // Max size of a cursor name
+#define DEFAULT_FIELD_TYPE SQL_TYPE_NULL // pick "C" data type to match SQL data type
+
+// Timeout and net wait defaults
+#define DEFAULT_LOGIN_TIMEOUT 15 // seconds to before fail on connect
+#define DEFAULT_QUERY_TIMEOUT 15 // seconds to before fail waiting for results
+
+// Field Flags, used to indicate status of fields
+#define AFX_SQL_FIELD_FLAG_DIRTY 0x1
+#define AFX_SQL_FIELD_FLAG_NULL 0x2
+
+// Update options flags
+#define AFX_SQL_SETPOSUPDATES 0x0001
+#define AFX_SQL_POSITIONEDSQL 0x0002
+#define AFX_SQL_GDBOUND 0x0004
+
+/////////////////////////////////////////////////////////////////////////////
+// CDBException - something gone wrong
+
+// Dbkit extended error codes
+#define AFX_SQL_ERROR 1000
+#define AFX_SQL_ERROR_CONNECT_FAIL AFX_SQL_ERROR+1
+#define AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY AFX_SQL_ERROR+2
+#define AFX_SQL_ERROR_EMPTY_COLUMN_LIST AFX_SQL_ERROR+3
+#define AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH AFX_SQL_ERROR+4
+#define AFX_SQL_ERROR_ILLEGAL_MODE AFX_SQL_ERROR+5
+#define AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED AFX_SQL_ERROR+6
+#define AFX_SQL_ERROR_NO_CURRENT_RECORD AFX_SQL_ERROR+7
+#define AFX_SQL_ERROR_NO_ROWS_AFFECTED AFX_SQL_ERROR+8
+#define AFX_SQL_ERROR_RECORDSET_READONLY AFX_SQL_ERROR+9
+#define AFX_SQL_ERROR_SQL_NO_TOTAL AFX_SQL_ERROR+10
+#define AFX_SQL_ERROR_ODBC_LOAD_FAILED AFX_SQL_ERROR+11
+#define AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED AFX_SQL_ERROR+12
+#define AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED AFX_SQL_ERROR+13
+#define AFX_SQL_ERROR_API_CONFORMANCE AFX_SQL_ERROR+14
+#define AFX_SQL_ERROR_SQL_CONFORMANCE AFX_SQL_ERROR+15
+#define AFX_SQL_ERROR_NO_DATA_FOUND AFX_SQL_ERROR+16
+#define AFX_SQL_ERROR_ROW_UPDATE_NOT_SUPPORTED AFX_SQL_ERROR+17
+#define AFX_SQL_ERROR_ODBC_V2_REQUIRED AFX_SQL_ERROR+18
+#define AFX_SQL_ERROR_NO_POSITIONED_UPDATES AFX_SQL_ERROR+19
+#define AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED AFX_SQL_ERROR+20
+#define AFX_SQL_ERROR_DATA_TRUNCATED AFX_SQL_ERROR+21
+#define AFX_SQL_ERROR_ROW_FETCH AFX_SQL_ERROR+22
+#define AFX_SQL_ERROR_INCORRECT_ODBC AFX_SQL_ERROR+23
+#define AFX_SQL_ERROR_UPDATE_DELETE_FAILED AFX_SQL_ERROR+24
+#define AFX_SQL_ERROR_DYNAMIC_CURSOR_NOT_SUPPORTED AFX_SQL_ERROR+25
+#define AFX_SQL_ERROR_FIELD_NOT_FOUND AFX_SQL_ERROR+26
+#define AFX_SQL_ERROR_BOOKMARKS_NOT_SUPPORTED AFX_SQL_ERROR+27
+#define AFX_SQL_ERROR_BOOKMARKS_NOT_ENABLED AFX_SQL_ERROR+28
+#define AFX_SQL_ERROR_MAX AFX_SQL_ERROR+29
+
+class CDBException : public CException
+{
+ DECLARE_DYNAMIC(CDBException)
+
+// Attributes
+public:
+ RETCODE m_nRetCode;
+ CString m_strError;
+ CString m_strStateNativeOrigin;
+
+// Implementation (use AfxThrowDBException to create)
+public:
+ CDBException(RETCODE nRetCode = SQL_SUCCESS);
+
+ virtual void BuildErrorString(CDatabase* pdb, HSTMT hstmt,
+ BOOL bTrace = TRUE);
+ void Empty();
+ virtual ~CDBException();
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+#ifdef _DEBUG
+ void TraceErrorMessage(LPCTSTR szTrace) const;
+#endif // DEBUG
+
+};
+
+void AFXAPI AfxThrowDBException(RETCODE nRetCode, CDatabase* pdb, HSTMT hstmt);
+
+//////////////////////////////////////////////////////////////////////////////
+// CDatabase - a SQL Database
+
+class CDatabase : public CObject
+{
+ DECLARE_DYNAMIC(CDatabase)
+
+// Constructors
+public:
+ CDatabase();
+
+ enum DbOpenOptions
+ {
+ openExclusive = 0x0001, // Not implemented
+ openReadOnly = 0x0002, // Open database read only
+ useCursorLib = 0x0004, // Use ODBC cursor lib
+ noOdbcDialog = 0x0008, // Don't display ODBC Connect dialog
+ forceOdbcDialog = 0x0010, // Always display ODBC connect dialog
+ };
+
+ virtual BOOL Open(LPCTSTR lpszDSN, BOOL bExclusive = FALSE,
+ BOOL bReadonly = FALSE, LPCTSTR lpszConnect = _T("ODBC;"),
+ BOOL bUseCursorLib = TRUE);
+ virtual BOOL OpenEx(LPCTSTR lpszConnectString, DWORD dwOptions = 0);
+ virtual void Close();
+
+// Attributes
+public:
+ HDBC m_hdbc;
+
+ BOOL IsOpen() const; // Database successfully opened?
+ BOOL CanUpdate() const;
+ BOOL CanTransact() const; // Are Transactions supported?
+
+ CString GetDatabaseName() const;
+ const CString& GetConnect() const;
+
+ DWORD GetBookmarkPersistence() const;
+ int GetCursorCommitBehavior() const;
+ int GetCursorRollbackBehavior() const;
+
+// Operations
+public:
+ void SetLoginTimeout(DWORD dwSeconds);
+ void SetQueryTimeout(DWORD dwSeconds);
+
+ // transaction control
+ BOOL BeginTrans();
+ BOOL CommitTrans();
+ BOOL Rollback();
+
+ void ExecuteSQL(LPCTSTR lpszSQL);
+
+ // Cancel asynchronous operation
+ void Cancel();
+
+// Overridables
+public:
+ // set special options
+ virtual void OnSetOptions(HSTMT hstmt);
+
+// Implementation
+public:
+ virtual ~CDatabase();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+
+ BOOL m_bTransactionPending;
+#endif //_DEBUG
+
+ // general error check
+ virtual BOOL Check(RETCODE nRetCode) const;
+
+ virtual void BindParameters(HSTMT hstmt);
+
+ void ReplaceBrackets(LPTSTR lpchSQL);
+ BOOL m_bStripTrailingSpaces;
+ BOOL m_bIncRecordCountOnAdd;
+ BOOL m_bAddForUpdate;
+ char m_chIDQuoteChar;
+ char m_reserved1[3]; // pad to even 4 bytes
+
+ void SetSynchronousMode(BOOL bSynchronous); // Obsolete, doe nothing
+
+protected:
+ CString m_strConnect;
+
+ CPtrList m_listRecordsets; // maintain list to ensure CRecordsets all closed
+
+ int nRefCount;
+ BOOL m_bUpdatable;
+
+ BOOL m_bTransactions;
+ SWORD m_nTransactionCapable;
+ SWORD m_nCursorCommitBehavior;
+ SWORD m_nCursorRollbackBehavior;
+ DWORD m_dwUpdateOptions;
+ DWORD m_dwBookmarkAttributes; // cache driver bookmark persistence
+
+ DWORD m_dwLoginTimeout;
+ HSTMT m_hstmt;
+
+ DWORD m_dwQueryTimeout;
+
+ virtual void ThrowDBException(RETCODE nRetCode);
+ void AllocConnect(DWORD dwOptions);
+ BOOL Connect(DWORD dwOptions);
+ void VerifyConnect();
+ void GetConnectInfo();
+ void Free();
+
+ // friend classes that call protected CDatabase overridables
+ friend class CRecordset;
+ friend class CFieldExchange;
+ friend class CDBException;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// CFieldExchange - for field exchange
+class CFieldExchange
+{
+// Attributes
+public:
+ enum RFX_Operation
+ {
+ BindParam, // register users parameters with ODBC SQLBindParameter
+ RebindParam, // migrate param values to proxy array before Requery
+ BindFieldToColumn, // register users fields with ODBC SQLBindCol
+ BindFieldForUpdate, // temporarily bind columns before update (via SQLSetPos)
+ UnbindFieldForUpdate, // unbind columns after update (via SQLSetPos)
+ Fixup, // Set string lengths, clear status bits
+ MarkForAddNew, // Prepare fields and flags for addnew operation
+ MarkForUpdate, // Prepare fields and flags for update operation
+ Name, // append dirty field name
+ NameValue, // append dirty name=value
+ Value, // append dirty value or parameter marker
+ SetFieldNull, // Set status bit for null value
+ StoreField, // archive values of current record
+ LoadField, // reload archived values into current record
+ AllocCache, // allocate cache used for dirty field check
+ AllocMultiRowBuffer, // allocate buffer holding multi rows of data
+ DeleteMultiRowBuffer, // delete buffer holding multi rows of data
+#ifdef _DEBUG
+ DumpField, // dump bound field name and value
+#endif
+ };
+ UINT m_nOperation; // Type of exchange operation
+ CRecordset* m_prs; // recordset handle
+
+// Operations
+ enum FieldType
+ {
+ noFieldType = -1,
+ outputColumn = 0,
+ param = SQL_PARAM_INPUT,
+ inputParam = param,
+ outputParam = SQL_PARAM_OUTPUT,
+ inoutParam = SQL_PARAM_INPUT_OUTPUT,
+ };
+
+// Operations (for implementors of RFX procs)
+ BOOL IsFieldType(UINT* pnField);
+
+ // Indicate purpose of subsequent RFX calls
+ void SetFieldType(UINT nFieldType);
+
+// Implementation
+ CFieldExchange(UINT nOperation, CRecordset* prs, void* pvField = NULL);
+
+ void Default(LPCTSTR szName,
+ void* pv, LONG* plLength, int nCType, UINT cbValue, UINT cbPrecision);
+
+ // long binary helpers
+ long GetLongBinarySize(int nField);
+ void GetLongBinaryData(int nField, CLongBinary& lb, long* plSize);
+ BYTE* ReallocLongBinary(CLongBinary& lb, long lSizeRequired,
+ long lReallocSize);
+
+ // Current type of field
+ UINT m_nFieldType;
+
+ UINT m_nFieldFound;
+
+ CString* m_pstr; // Field name or destination for building various SQL clauses
+ BOOL m_bField; // Value to set for SetField operation
+ void* m_pvField; // For indicating an operation on a specific field
+ LPCTSTR m_lpszSeparator; // append after field names
+ UINT m_nFields; // count of fields for various operations
+ UINT m_nParams; // count of fields for various operations
+ UINT m_nParamFields; // count of fields for various operations
+ HSTMT m_hstmt; // For SQLBindParameter on update statement
+ long m_lDefaultLBFetchSize; // For fetching CLongBinary data of unknown len
+ long m_lDefaultLBReallocSize; // For fetching CLongBinary data of unknown len
+
+#ifdef _DEBUG
+ CDumpContext* m_pdcDump;
+#endif //_DEBUG
+
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Recordset Field Exchange helpers
+void AFXAPI AfxStoreField(CRecordset& rs, UINT nField, void* pvField);
+void AFXAPI AfxLoadField(CRecordset& rs, UINT nField,
+ void* pvField, long* plLength);
+BOOL AFXAPI AfxCompareValueByRef(void* pvData, void* pvCache, int nDataType);
+void AFXAPI AfxCopyValueByRef(void* pvCache, void* pvData,
+ long* plLength, int nDataType);
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Recordset Field Exchange routines
+
+// text data
+void AFXAPI RFX_Text(CFieldExchange* pFX, LPCTSTR szName, CString& value,
+ // Default max length for char and varchar, default datasource type
+ int nMaxLength = 255, int nColumnType = SQL_VARCHAR, short nScale = 0);
+
+// boolean data
+void AFXAPI RFX_Bool(CFieldExchange* pFX, LPCTSTR szName, BOOL& value);
+
+// integer data
+void AFXAPI RFX_Long(CFieldExchange* pFX, LPCTSTR szName, long& value);
+void AFXAPI RFX_Int(CFieldExchange* pFX, LPCTSTR szName, int& value);
+void AFXAPI RFX_Single(CFieldExchange* pFX, LPCTSTR szName, float& value);
+void AFXAPI RFX_Double(CFieldExchange* pFX, LPCTSTR szName, double& value);
+
+// date and time
+void AFXAPI RFX_Date(CFieldExchange* pFX, LPCTSTR szName, CTime& value);
+void AFXAPI RFX_Date(CFieldExchange* pFX, LPCTSTR szName, TIMESTAMP_STRUCT& value);
+
+// Binary data
+void AFXAPI RFX_Binary(CFieldExchange* pFX, LPCTSTR szName, CByteArray& value,
+ // Default max length is for binary and varbinary
+ int nMaxLength = 255);
+void AFXAPI RFX_Byte(CFieldExchange* pFX, LPCTSTR szName, BYTE& value);
+void AFXAPI RFX_LongBinary(CFieldExchange* pFX, LPCTSTR szName, CLongBinary& value);
+
+/////////////////////////////////////////////////////////////////////////////
+// Bulk Recordset Field Exchange helpers
+void AFXAPI AfxRFXBulkDefault(CFieldExchange* pFX, LPCTSTR szName,
+ void* pv, long* rgLengths, int nCType, UINT cbValue);
+
+/////////////////////////////////////////////////////////////////////////////
+// Bulk Recordset Field Exchange routines
+
+void AFXAPI RFX_Text_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ LPSTR* prgStrVals, long** prgLengths, int nMaxLength);
+
+void AFXAPI RFX_Bool_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ BOOL** prgBoolVals, long** prgLengths);
+void AFXAPI RFX_Int_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ int** prgIntVals, long** prgLengths);
+void AFXAPI RFX_Long_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ long** prgLongVals, long** prgLengths);
+
+void AFXAPI RFX_Single_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ float** prgFltVals, long** prgLengths);
+void AFXAPI RFX_Double_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ double** prgDblVals, long** prgLengths);
+
+void AFXAPI RFX_Date_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ TIMESTAMP_STRUCT** prgTSVals, long** prgLengths);
+
+void AFXAPI RFX_Byte_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ BYTE** prgByteVals, long** prgLengths);
+void AFXAPI RFX_Binary_Bulk(CFieldExchange* pFX, LPCTSTR szName,
+ BYTE** prgByteVals, long** prgLengths, int nMaxLength);
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Dialog Data Exchange cover routines
+// Cover routines provide database semantics on top of DDX routines
+
+// simple text operations
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, BYTE& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, UINT& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, long& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, DWORD& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, double& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldText(CDataExchange* pDX, int nIDC, float& value, CRecordset* pRecordset);
+
+// special control types
+void AFXAPI DDX_FieldCheck(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldRadio(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBString(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBString(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBIndex(CDataExchange* pDX, int nIDC, int& index, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBIndex(CDataExchange* pDX, int nIDC, int& index, CRecordset* pRecordset);
+void AFXAPI DDX_FieldLBStringExact(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldCBStringExact(CDataExchange* pDX, int nIDC, CString& value, CRecordset* pRecordset);
+void AFXAPI DDX_FieldScroll(CDataExchange* pDX, int nIDC, int& value, CRecordset* pRecordset);
+
+//////////////////////////////////////////////////////////////////////////////
+// CRecordset - the result of a SQL Statement
+
+#define AFX_DB_USE_DEFAULT_TYPE (0xFFFFFFFF)
+
+// Most Move constants out of date
+// #define AFX_MOVE_FIRST 0x80000000L
+// #define AFX_MOVE_PREVIOUS (-1L)
+#define AFX_MOVE_REFRESH 0L
+// #define AFX_MOVE_NEXT (+1L)
+// #define AFX_MOVE_LAST 0x7fffffffL
+
+#define AFX_RECORDSET_STATUS_OPEN (+1L)
+#define AFX_RECORDSET_STATUS_CLOSED 0L
+#define AFX_RECORDSET_STATUS_UNKNOWN (-1L)
+
+class CRecordset : public CObject
+{
+ DECLARE_DYNAMIC(CRecordset)
+
+// Constructor
+public:
+ CRecordset(CDatabase* pDatabase = NULL);
+
+public:
+ virtual ~CRecordset();
+
+ enum OpenType
+ {
+ dynaset, // uses SQLExtendedFetch, keyset driven cursor
+ snapshot, // uses SQLExtendedFetch, static cursor
+ forwardOnly, // uses SQLFetch
+ dynamic // uses SQLExtendedFetch, dynamic cursor
+ };
+
+ enum OpenOptions
+ {
+ none = 0x0,
+ readOnly = 0x0004,
+ appendOnly = 0x0008,
+ skipDeletedRecords = 0x0010, // turn on skipping of deleted records, Will slow Move(n).
+ noDirtyFieldCheck = 0x0020, // disable automatic dirty field checking
+ useBookmarks = 0x0100, // turn on bookmark support
+ useMultiRowFetch = 0x0200, // turn on multi-row fetch model
+ userAllocMultiRowBuffers = 0x0400, // if multi-row fetch on, user will alloc memory for buffers
+ useExtendedFetch = 0x0800, // use SQLExtendedFetch with forwardOnly type recordsets
+ executeDirect = 0x2000, // Directly execute SQL rather than prepared execute
+ optimizeBulkAdd = 0x4000, // Use prepared HSTMT for multiple AddNews, dirty fields must not change.
+ firstBulkAdd = 0x8000, // INTERNAL to MFC, don't specify on Open.
+ };
+ virtual BOOL Open(UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE,
+ LPCTSTR lpszSQL = NULL, DWORD dwOptions = none);
+ virtual void Close();
+
+// Attributes
+public:
+ HSTMT m_hstmt; // Source statement for this resultset
+ CDatabase* m_pDatabase; // Source database for this resultset
+
+ CString m_strFilter; // Where clause
+ CString m_strSort; // Order By Clause
+
+ BOOL CanAppend() const; // Can AddNew be called?
+ BOOL CanRestart() const; // Can Requery be called to restart a query?
+ BOOL CanScroll() const; // Can MovePrev and MoveFirst be called?
+ BOOL CanTransact() const; // Are Transactions supported?
+ BOOL CanUpdate() const; // Can Edit/AddNew/Delete be called?
+ BOOL CanBookmark() const; // Can Get/SetBookmark be called?
+
+ const CString& GetSQL() const; // SQL executed for this recordset
+ const CString& GetTableName() const; // Table name
+
+ BOOL IsOpen() const; // Recordset successfully opened?
+ BOOL IsBOF() const; // Beginning Of File
+ BOOL IsEOF() const; // End Of File
+ BOOL IsDeleted() const; // On a deleted record
+
+ BOOL IsFieldDirty(void *pv); // has field been updated?
+ BOOL IsFieldNull(void *pv); // is field NULL valued?
+ BOOL IsFieldNullable(void *pv); // can field be set to a NULL value
+
+ long GetRecordCount() const; // Records seen so far or -1 if unknown
+ void GetStatus(CRecordsetStatus& rStatus) const;
+
+// Operations
+public:
+ // cursor operations
+ void MoveNext();
+ void MovePrev();
+ void MoveFirst();
+ void MoveLast();
+ virtual void Move(long nRows, WORD wFetchType = SQL_FETCH_RELATIVE);
+
+ void SetAbsolutePosition(long nRows);
+
+ void GetBookmark(CDBVariant& varBookmark);
+ void SetBookmark(const CDBVariant& varBookmark);
+
+ virtual void SetRowsetSize(DWORD dwNewRowsetSize);
+ DWORD GetRowsetSize() const;
+ DWORD GetRowsFetched() const;
+ virtual void CheckRowsetError(RETCODE nRetCode);
+ void RefreshRowset(WORD wRow, WORD wLockType = SQL_LOCK_NO_CHANGE);
+ void SetRowsetCursorPosition(WORD wRow, WORD wLockType = SQL_LOCK_NO_CHANGE);
+ WORD GetRowStatus(WORD wRow) const;
+
+ // edit buffer operations
+ virtual void AddNew(); // add new record at the end
+ virtual void Edit(); // start editing
+ virtual BOOL Update(); // update it
+ virtual void Delete(); // delete the current record
+ void CancelUpdate(); // cancel pending Edit/AddNew
+
+ BOOL FlushResultSet() const;
+
+ // field operations
+ short GetODBCFieldCount() const;
+ void GetODBCFieldInfo(short nIndex, CODBCFieldInfo& fieldinfo);
+ void GetODBCFieldInfo(LPCTSTR lpszName, CODBCFieldInfo& fieldinfo);
+ void GetFieldValue(LPCTSTR lpszName, CDBVariant& varValue,
+ short nFieldType = DEFAULT_FIELD_TYPE);
+ void GetFieldValue(short nIndex, CDBVariant& varValue,
+ short nFieldType = DEFAULT_FIELD_TYPE);
+ void GetFieldValue(LPCTSTR lpszName, CString& strValue);
+ void GetFieldValue(short nIndex, CString& strValue);
+
+ void SetFieldDirty(void *pv, BOOL bDirty = TRUE);
+ void SetFieldNull(void *pv, BOOL bNull = TRUE);
+
+ // locking control during Edit
+ enum LockMode
+ {
+ optimistic,
+ pessimistic,
+ };
+ void SetLockingMode(UINT nMode);
+
+ // Recordset operations
+ virtual BOOL Requery(); // Re-execute query based on new params
+
+ // Cancel asynchronous operation
+ void Cancel();
+
+// Overridables
+public:
+ // Get default connect string
+ virtual CString GetDefaultConnect();
+
+ // Get SQL to execute
+ virtual CString GetDefaultSQL();
+
+ // set special options
+ virtual void OnSetOptions(HSTMT hstmt);
+
+ // for recordset field exchange
+ virtual void DoFieldExchange(CFieldExchange* pFX);
+ virtual void DoBulkFieldExchange(CFieldExchange* pFX);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+
+ virtual BOOL Check(RETCODE nRetCode) const; // general error check
+
+ void InitRecord();
+ void ResetCursor();
+ void CheckRowsetCurrencyStatus(UWORD wFetchType, long nRows);
+ RETCODE FetchData(UWORD wFetchType, SDWORD nRow,
+ DWORD* pdwRowsFetched);
+ void SkipDeletedRecords(UWORD wFetchType, long nRows,
+ DWORD* pdwRowsFetched, RETCODE* pnRetCode);
+ virtual void SetRowsetCurrencyStatus(RETCODE nRetCode,
+ UWORD wFetchType, long nRows, DWORD dwRowsFetched);
+
+ virtual void PreBindFields(); // called before data fields are bound
+ UINT m_nFields; // number of RFX fields
+ UINT m_nParams; // number of RFX params
+ BOOL m_bCheckCacheForDirtyFields; // switch for dirty field checking
+ BOOL m_bRebindParams; // date or UNICODE text parameter existence flag
+ BOOL m_bLongBinaryColumns; // long binary column existence flag
+ BOOL m_bUseUpdateSQL; // uses SQL-based updates
+ DWORD m_dwOptions; // archive dwOptions on Open
+ SWORD m_nResultCols; // number of columns in result set
+ BOOL m_bUseODBCCursorLib; // uses ODBC cursor lib if m_pDatabase not Open
+ CODBCFieldInfo* m_rgODBCFieldInfos; // Array of field info structs with ODBC meta-data
+ CFieldInfo* m_rgFieldInfos; // Array of field info structs with MFC specific field data
+ CMapPtrToPtr m_mapFieldIndex; // Map of member address to field index
+ CMapPtrToPtr m_mapParamIndex; // Map of member address to field index
+
+ BOOL IsSQLUpdatable(LPCTSTR lpszSQL);
+ BOOL IsSelectQueryUpdatable(LPCTSTR lpszSQL);
+ static BOOL PASCAL IsJoin(LPCTSTR lpszJoinClause);
+ static LPCTSTR PASCAL FindSQLToken(LPCTSTR lpszSQL, LPCTSTR lpszSQLToken);
+
+ // RFX Operations on fields of CRecordset
+ UINT BindParams(HSTMT hstmt);
+ void RebindParams(HSTMT hstmt);
+ UINT BindFieldsToColumns();
+ void BindFieldsForUpdate();
+ void UnbindFieldsForUpdate();
+ void Fixups();
+ UINT AppendNames(CString* pstr, LPCTSTR szSeparator);
+ UINT AppendValues(HSTMT hstmt, CString* pstr, LPCTSTR szSeparator);
+ UINT AppendNamesValues(HSTMT hstmt, CString* pstr, LPCTSTR szSeparator);
+ void StoreFields();
+ void LoadFields();
+ void MarkForAddNew();
+ void MarkForUpdate();
+ void AllocDataCache();
+ void FreeDataCache();
+#ifdef _DEBUG
+ void DumpFields(CDumpContext& dc) const;
+#endif //_DEBUG
+
+ // RFX operation helper functions
+ virtual void ThrowDBException(RETCODE nRetCode, HSTMT hstmt = SQL_NULL_HSTMT);
+
+ int GetBoundFieldIndex(void* pv);
+ int GetBoundParamIndex(void* pv);
+ short GetFieldIndexByName(LPCTSTR lpszFieldName);
+
+ void AllocStatusArrays();
+ long* GetFieldLengthBuffer(DWORD nField, int nFieldType); // for fields & params
+
+ BYTE GetFieldStatus(DWORD nField);
+ void SetFieldStatus(DWORD nField, BYTE bFlags);
+ void ClearFieldStatus();
+
+ BOOL IsFieldStatusDirty(DWORD nField) const;
+ void SetDirtyFieldStatus(DWORD nField);
+ void ClearDirtyFieldStatus(DWORD nField);
+
+ BOOL IsFieldStatusNull(DWORD nField) const;
+ void SetNullFieldStatus(DWORD nField);
+ void ClearNullFieldStatus(DWORD nField);
+
+ BOOL IsParamStatusNull(DWORD nField) const;
+ void SetNullParamStatus(DWORD nField);
+ void ClearNullParamStatus(DWORD nField);
+
+ BOOL IsFieldNullable(DWORD nField) const;
+
+ void** m_pvFieldProxy;
+ void** m_pvParamProxy;
+ UINT m_nProxyFields;
+ UINT m_nProxyParams;
+
+ // GetFieldValue helpers
+ static short PASCAL GetDefaultFieldType(short nSQLType);
+ static void* PASCAL GetDataBuffer(CDBVariant& varValue, short nFieldType,
+ int* pnLen, short nSQLType, UDWORD nPrecision);
+ static int PASCAL GetTextLen(short nSQLType, UDWORD nPrecision);
+ static long PASCAL GetData(CDatabase* pdb, HSTMT hstmt, short nFieldIndex,
+ short nFieldType, LPVOID pvData, int nLen, short nSQLType);
+ static void PASCAL GetLongBinaryDataAndCleanup(CDatabase* pdb, HSTMT hstmt,
+ short nFieldIndex, long nActualSize, LPVOID* ppvData, int nLen,
+ CDBVariant& varValue, short nSQLType);
+ static void PASCAL GetLongCharDataAndCleanup(CDatabase* pdb, HSTMT hstmt,
+ short nFieldIndex, long nActualSize, LPVOID* ppvData, int nLen,
+ CString& strValue, short nSQLType);
+
+protected:
+ UINT m_nOpenType;
+ UINT m_nDefaultType;
+ enum EditMode
+ {
+ noMode,
+ edit,
+ addnew
+ };
+ long m_lOpen;
+ UINT m_nEditMode;
+ BOOL m_bEOFSeen;
+ long m_lRecordCount;
+ long m_lCurrentRecord;
+ CString m_strCursorName;
+ // Perform operation based on m_nEditMode
+ BOOL UpdateInsertDelete();
+ BOOL m_nLockMode; // Control concurrency for Edit()
+ UDWORD m_dwDriverConcurrency; // driver supported concurrency types
+ UDWORD m_dwConcurrency; // requested concurrency type
+ UWORD* m_rgRowStatus; // row status used by SQLExtendedFetch and SQLSetPos
+ DWORD m_dwRowsFetched; // number of rows fetched by SQLExtendedFetch
+ HSTMT m_hstmtUpdate;
+ BOOL m_bRecordsetDb;
+ BOOL m_bBOF;
+ BOOL m_bEOF;
+ BOOL m_bUpdatable; // Is recordset updatable?
+ BOOL m_bAppendable;
+ CString m_strSQL; // SQL statement for recordset
+ CString m_strUpdateSQL; // SQL statement for updates
+ CString m_strTableName; // source table of recordset
+ BOOL m_bScrollable; // supports MovePrev
+ BOOL m_bDeleted;
+ int m_nFieldsBound;
+ BYTE* m_pbFieldFlags;
+ BYTE* m_pbParamFlags;
+ LONG* m_plParamLength;
+ DWORD m_dwInitialGetDataLen; // Initial GetFieldValue alloc size for long data
+ DWORD m_dwRowsetSize;
+ DWORD m_dwAllocatedRowsetSize;
+
+protected:
+ CString m_strRequerySQL; // archive SQL string for use in Requery()
+ CString m_strRequeryFilter; // archive filter string for use in Requery()
+ CString m_strRequerySort; // archive sort string for use in Requery()
+
+ void SetState(int nOpenType, LPCTSTR lpszSQL, DWORD dwOptions);
+ BOOL AllocHstmt();
+ void BuildSQL(LPCTSTR lpszSQL);
+ void PrepareAndExecute();
+
+ void BuildSelectSQL();
+ void AppendFilterAndSortSQL();
+ BOOL IsRecordsetUpdatable();
+
+ void VerifyDriverBehavior();
+ DWORD VerifyCursorSupport();
+ void EnableBookmarks();
+ void SetUpdateMethod();
+ void SetConcurrencyAndCursorType(HSTMT hstmt, DWORD dwScrollOptions);
+ void AllocAndCacheFieldInfo();
+ void AllocRowset();
+ void FreeRowset();
+
+ void ExecuteSetPosUpdate();
+ void PrepareUpdateHstmt();
+ void BuildUpdateSQL();
+ void ExecuteUpdateSQL();
+ void SendLongBinaryData(HSTMT hstmt);
+ virtual long GetLBFetchSize(long lOldSize); // CLongBinary fetch chunking
+ virtual long GetLBReallocSize(long lOldSize); // CLongBinary realloc chunking
+
+ friend class CFieldExchange;
+ friend class CRecordView;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Info helper definitions
+#define AFX_CURRENT_RECORD_UNDEFINED (-2)
+#define AFX_CURRENT_RECORD_BOF (-1)
+
+// For returning status for a recordset
+struct CRecordsetStatus
+{
+ long m_lCurrentRecord; // -2=Unknown,-1=BOF,0=1st record. . .
+ BOOL m_bRecordCountFinal;// Have we counted all records?
+};
+
+// Must maintian data binding info
+struct CFieldInfo
+{
+ // MFC specific info
+ void* m_pvDataCache;
+ long m_nLength;
+ int m_nDataType;
+ BYTE m_bStatus;
+#ifdef _DEBUG
+ void* m_pvBindAddress;
+#endif
+};
+
+struct CODBCFieldInfo
+{
+ // meta data from ODBC
+ CString m_strName;
+ SWORD m_nSQLType;
+ UDWORD m_nPrecision;
+ SWORD m_nScale;
+ SWORD m_nNullability;
+};
+
+struct CODBCParamInfo
+{
+ // meta data from ODBC
+ SWORD m_nSQLType;
+ UDWORD m_nPrecision;
+ SWORD m_nScale;
+ SWORD m_nNullability;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CDBVariant
+
+#define DBVT_NULL 0
+#define DBVT_BOOL 1
+#define DBVT_UCHAR 2
+#define DBVT_SHORT 3
+#define DBVT_LONG 4
+#define DBVT_SINGLE 5
+#define DBVT_DOUBLE 6
+#define DBVT_DATE 7
+#define DBVT_STRING 8
+#define DBVT_BINARY 9
+
+class CDBVariant
+{
+// Constructor
+public:
+ CDBVariant();
+
+// Attributes
+public:
+ DWORD m_dwType;
+
+ union
+ {
+ BOOL m_boolVal;
+ unsigned char m_chVal;
+ short m_iVal;
+ long m_lVal;
+ float m_fltVal;
+ double m_dblVal;
+ TIMESTAMP_STRUCT* m_pdate;
+ CString* m_pstring;
+ CLongBinary* m_pbinary;
+ };
+
+// Operations
+ void Clear();
+
+// Implementation
+public:
+ virtual ~CDBVariant();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRecordView - form for viewing data records
+
+class CRecordView : public CFormView
+{
+ DECLARE_DYNAMIC(CRecordView)
+
+// Construction
+protected: // must derive your own class
+ CRecordView(LPCTSTR lpszTemplateName);
+ CRecordView(UINT nIDTemplate);
+
+// Attributes
+public:
+ virtual CRecordset* OnGetRecordset() = 0;
+
+ BOOL IsOnLastRecord();
+ BOOL IsOnFirstRecord();
+
+// Operations
+public:
+ virtual BOOL OnMove(UINT nIDMoveCommand);
+
+// Implementation
+public:
+ virtual ~CRecordView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ BOOL m_bOnFirstRecord;
+ BOOL m_bOnLastRecord;
+
+ //{{AFX_MSG(CRecordView)
+ afx_msg void OnUpdateRecordFirst(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordPrev(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordNext(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateRecordLast(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ afx_msg void OnMove(int cx, int cy);
+
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDBCORE_INLINE inline
+#define _AFXDBRFX_INLINE inline
+#define _AFXDBVIEW_INLINE inline
+#include <afxdb.inl>
+#undef _AFXDBVIEW_INLINE
+#undef _AFXDBCORE_INLINE
+#undef _AFXDBRFX_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDB_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdb.inl b/public/sdk/inc/mfc42/afxdb.inl
new file mode 100644
index 000000000..cec6cd123
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdb.inl
@@ -0,0 +1,113 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDB.H
+
+/////////////////////////////////////////////////////////////////////////////
+// General database inlines
+
+#ifdef _AFXDBCORE_INLINE
+
+// CDatabase inlines
+_AFXDBCORE_INLINE BOOL CDatabase::IsOpen() const
+ { ASSERT_VALID(this); return m_hdbc != SQL_NULL_HDBC; }
+_AFXDBCORE_INLINE BOOL CDatabase::CanUpdate() const
+ { ASSERT(IsOpen()); return m_bUpdatable; }
+_AFXDBCORE_INLINE BOOL CDatabase::CanTransact() const
+ { ASSERT(IsOpen()); return m_bTransactions; }
+_AFXDBCORE_INLINE void CDatabase::SetLoginTimeout(DWORD dwSeconds)
+ { ASSERT_VALID(this); m_dwLoginTimeout = dwSeconds; }
+_AFXDBCORE_INLINE void CDatabase::SetQueryTimeout(DWORD dwSeconds)
+ { ASSERT_VALID(this); m_dwQueryTimeout = dwSeconds; }
+_AFXDBCORE_INLINE const CString& CDatabase::GetConnect() const
+ { ASSERT_VALID(this); return m_strConnect; }
+_AFXDBCORE_INLINE DWORD CDatabase::GetBookmarkPersistence() const
+ { ASSERT_VALID(this); return m_dwBookmarkAttributes; }
+_AFXDBCORE_INLINE int CDatabase::GetCursorCommitBehavior() const
+ { ASSERT_VALID(this); return m_nCursorCommitBehavior; }
+_AFXDBCORE_INLINE int CDatabase::GetCursorRollbackBehavior() const
+ { ASSERT_VALID(this); return m_nCursorRollbackBehavior; }
+_AFXDBCORE_INLINE void CDatabase::ThrowDBException(RETCODE nRetCode)
+ { ASSERT_VALID(this); AfxThrowDBException(nRetCode, this, m_hstmt); }
+_AFXDBCORE_INLINE void CDatabase::SetSynchronousMode(BOOL /* bSynchronous */ )
+ { ASSERT_VALID(this); TRACE0("Error: SetSynchronousMode is obsolete and has not effect.\n"); }
+
+// CRecordset inlines
+_AFXDBCORE_INLINE const CString& CRecordset::GetSQL() const
+ { ASSERT(IsOpen()); return m_strSQL; }
+_AFXDBCORE_INLINE const CString& CRecordset::GetTableName() const
+ { ASSERT(IsOpen()); return m_strTableName; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsBOF() const
+ { ASSERT(IsOpen()); return m_bBOF; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsEOF() const
+ { ASSERT(IsOpen()); return m_bEOF; }
+_AFXDBCORE_INLINE BOOL CRecordset::IsDeleted() const
+ { ASSERT(IsOpen()); return m_bDeleted; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanUpdate() const
+ { ASSERT(IsOpen()); return m_bUpdatable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanScroll() const
+ { ASSERT(IsOpen()); return m_bScrollable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanAppend() const
+ { ASSERT(IsOpen()); return m_bAppendable; }
+_AFXDBCORE_INLINE BOOL CRecordset::CanRestart() const
+ { ASSERT(IsOpen()); return !(m_dwOptions & executeDirect); }
+_AFXDBCORE_INLINE BOOL CRecordset::CanTransact() const
+ { ASSERT(m_pDatabase->IsOpen());
+ return m_pDatabase->m_bTransactions; }
+_AFXDBCORE_INLINE short CRecordset::GetODBCFieldCount() const
+ { ASSERT(IsOpen()); return m_nResultCols; }
+_AFXDBCORE_INLINE DWORD CRecordset::GetRowsetSize() const
+ { ASSERT(IsOpen()); return m_dwRowsetSize; }
+_AFXDBCORE_INLINE DWORD CRecordset::GetRowsFetched() const
+ { ASSERT(IsOpen()); return m_dwRowsFetched; }
+_AFXDBCORE_INLINE WORD CRecordset::GetRowStatus(WORD wRow) const
+ { ASSERT(IsOpen()); ASSERT(wRow > 0); return m_rgRowStatus[wRow-1]; }
+_AFXDBCORE_INLINE long CRecordset::GetRecordCount() const
+ { ASSERT(IsOpen()); return m_lRecordCount; }
+_AFXDBCORE_INLINE void CRecordset::GetStatus(CRecordsetStatus& rStatus) const
+ { ASSERT(IsOpen());
+ rStatus.m_lCurrentRecord = m_lCurrentRecord;
+ rStatus.m_bRecordCountFinal = m_bEOFSeen; }
+_AFXDBCORE_INLINE void CRecordset::ThrowDBException(RETCODE nRetCode, HSTMT hstmt)
+ { ASSERT_VALID(this); AfxThrowDBException(nRetCode, m_pDatabase,
+ (hstmt == SQL_NULL_HSTMT)? m_hstmt : hstmt); }
+_AFXDBCORE_INLINE void CRecordset::MoveNext()
+ { ASSERT(IsOpen()); Move(1, SQL_FETCH_NEXT); }
+_AFXDBCORE_INLINE void CRecordset::MovePrev()
+ { ASSERT(IsOpen()); Move(1, SQL_FETCH_PRIOR); }
+_AFXDBCORE_INLINE void CRecordset::MoveFirst()
+ { ASSERT(IsOpen()); Move(1, SQL_FETCH_FIRST); }
+_AFXDBCORE_INLINE void CRecordset::MoveLast()
+ { ASSERT(IsOpen()); Move(1, SQL_FETCH_LAST); }
+_AFXDBCORE_INLINE void CRecordset::SetAbsolutePosition(long nRows)
+ { ASSERT(IsOpen()); Move(nRows, SQL_FETCH_ABSOLUTE); }
+
+#endif //_AFXDBCORE_INLINE
+
+#ifdef _AFXDBRFX_INLINE
+
+_AFXDBRFX_INLINE void CFieldExchange::SetFieldType(UINT nFieldType)
+ { ASSERT(nFieldType == outputColumn ||
+ nFieldType == inputParam ||
+ nFieldType == outputParam ||
+ nFieldType == inoutParam);
+ m_nFieldType = nFieldType; }
+
+#endif //_AFXDBRFX_INLINE
+
+#ifdef _AFXDBVIEW_INLINE
+
+// CRecordView inlines
+_AFXDBVIEW_INLINE void CRecordView::OnMove(int cx, int cy)
+ { CFormView::OnMove(cx, cy); }
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdb.rc b/public/sdk/inc/mfc42/afxdb.rc
new file mode 100644
index 000000000..ae92138d7
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Attempt to connect to datasource failed"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Recordset supports forward movement only."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Attempt to open a table failed - there were no columns to retrieve were specified."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Unexpected column data types were returned from query."
+ AFX_IDP_SQL_ILLEGAL_MODE "Attempt to Update or Delete failed."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Multiple rows were updated."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operation failed, no current record."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "No rows were affected by the update or delete operation."
+ AFX_IDP_SQL_RECORDSET_READONLY "Recordset is read-only"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC driver doesn't support MFC LongBinary data model."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Attempt to load required component ODBC32.DLL failed."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC driver does not support dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ODBC static cursors required for snapshot support."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC driver incompatible with MFC database classes (API_CONFORMANCE >= SQL_OAC_LEVEL1 required)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC driver incompatible with MFC database classes (SQL_CONFORMANCE >= SQL_OSC_MINIMUM required)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Attempt to scroll past end or before beginning of data."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets not supported by ODBC driver."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC Level 2 compliant driver required."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Positioned updates not supported by ODBC driver."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Requested lock mode is not supported."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Data truncated."
+ AFX_IDP_SQL_ROW_FETCH
+ "Error retrieving record."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "A required ODBC entry point was not found. Make sure ODBC is installed correctly."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Update or Delete failed."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Dynamic cursors not supported by ODBC driver."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Unable to initialize DAO/Jet db engine."
+ AFX_IDP_DAO_DFX_BIND
+ "Bad DFX value parameter."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef or QueryDef not Open."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows failed. Not enough memory allocated for row."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows binding error. Probably caused by datatype mismatch."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows failed. The requested column is not a member of this recordset."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/afxdb_.h b/public/sdk/inc/mfc42/afxdb_.h
new file mode 100644
index 000000000..b9201a989
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdb_.h
@@ -0,0 +1,72 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXDB.H & AFXDAO.H)
+
+#ifndef __AFXDB__H__
+#define __AFXDB__H__
+
+//////////////////////////////////////////////////////////////////////////////
+// Recordset Field exchange for ODBC & DAO classes (RFX_ and DFX_)
+
+#define AFX_RFX_SHORT_PSEUDO_NULL (0x7EE4)
+#define AFX_RFX_INT_PSEUDO_NULL (0x7EE4)
+#define AFX_RFX_LONG_PSEUDO_NULL (0x4a4d4120L)
+#define AFX_RFX_BYTE_PSEUDO_NULL 255
+#define AFX_RFX_SINGLE_PSEUDO_NULL (-9.123e19f)
+#define AFX_RFX_DOUBLE_PSEUDO_NULL (-9.123e19)
+#define AFX_RFX_BOOL_PSEUDO_NULL 2
+#define AFX_RFX_DATE_PSEUDO_NULL CTime(0)
+#define AFX_RFX_TIMESTAMP_PSEUDO_NULL 99
+
+#define AFX_RFX_NO_TYPE 0
+#define AFX_RFX_BOOL 1
+#define AFX_RFX_BYTE 2
+#define AFX_RFX_INT 3
+#define AFX_RFX_LONG 4
+#define AFX_RFX_SINGLE 6
+#define AFX_RFX_DOUBLE 7
+#define AFX_RFX_DATE 8
+#define AFX_RFX_BINARY 9
+#define AFX_RFX_TEXT 10
+#define AFX_RFX_LONGBINARY 11
+#define AFX_RFX_SHORT 12
+#define AFX_RFX_CURRENCY 13
+#define AFX_RFX_OLEDATETIME 14
+#define AFX_RFX_TIMESTAMP 15
+
+//////////////////////////////////////////////////////////////////////////////
+// CLongBinary - a Long (generally > 32k in length) Binary object
+
+class CLongBinary : public CObject
+{
+ DECLARE_DYNAMIC(CLongBinary)
+
+// Constructors
+public:
+ CLongBinary();
+
+// Attributes
+ HGLOBAL m_hData;
+ DWORD m_dwDataLength;
+
+// Implementation
+public:
+ virtual ~CLongBinary();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // __AFXDB__H__
diff --git a/public/sdk/inc/mfc42/afxdd_.h b/public/sdk/inc/mfc42/afxdd_.h
new file mode 100644
index 000000000..43ea703a6
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdd_.h
@@ -0,0 +1,64 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXWIN.H)
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialog Data Exchange routines
+
+class COleCurrency; // forward reference (see afxdisp.h)
+class COleDateTime; // forward reference (see afxdisp.h)
+
+// simple text operations
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, BYTE& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, short& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, UINT& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, long& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, DWORD& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, float& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, double& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, COleCurrency& value);
+void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, COleDateTime& value);
+
+// special control types
+void AFXAPI DDX_Check(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_Radio(CDataExchange* pDX, int nIDC, int& value);
+void AFXAPI DDX_LBString(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_CBString(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_LBIndex(CDataExchange* pDX, int nIDC, int& index);
+void AFXAPI DDX_CBIndex(CDataExchange* pDX, int nIDC, int& index);
+void AFXAPI DDX_LBStringExact(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_CBStringExact(CDataExchange* pDX, int nIDC, CString& value);
+void AFXAPI DDX_Scroll(CDataExchange* pDX, int nIDC, int& value);
+
+// for getting access to the actual controls
+void AFXAPI DDX_Control(CDataExchange* pDX, int nIDC, CWnd& rControl);
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialog Data Validation routines
+
+// range - value must be >= minVal and <= maxVal
+// NOTE: you will require casts for 'minVal' and 'maxVal' to use the
+// UINT, DWORD or float types
+void AFXAPI DDV_MinMaxByte(CDataExchange* pDX, BYTE value, BYTE minVal, BYTE maxVal);
+void AFXAPI DDV_MinMaxShort(CDataExchange* pDX, short value, short minVal, short maxVal);
+void AFXAPI DDV_MinMaxInt(CDataExchange* pDX, int value, int minVal, int maxVal);
+void AFXAPI DDV_MinMaxLong(CDataExchange* pDX, long value, long minVal, long maxVal);
+void AFXAPI DDV_MinMaxUInt(CDataExchange* pDX, UINT value, UINT minVal, UINT maxVal);
+void AFXAPI DDV_MinMaxDWord(CDataExchange* pDX, DWORD value, DWORD minVal, DWORD maxVal);
+void AFXAPI DDV_MinMaxFloat(CDataExchange* pDX, float const& value, float minVal, float maxVal);
+void AFXAPI DDV_MinMaxDouble(CDataExchange* pDX, double const& value, double minVal, double maxVal);
+
+// number of characters
+void AFXAPI DDV_MaxChars(CDataExchange* pDX, CString const& value, int nChars);
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdisp.h b/public/sdk/inc/mfc42/afxdisp.h
new file mode 100644
index 000000000..afed8c8d0
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdisp.h
@@ -0,0 +1,1413 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDISP_H__
+#define __AFXDISP_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+// include necessary OLE headers
+#ifndef _OBJBASE_H_
+ #include <objbase.h>
+#endif
+#ifndef _OLEAUTO_H_
+ #include <oleauto.h>
+#endif
+#ifndef _OLECTL_H_
+ #include <olectl.h>
+#endif
+//REVIEW: This header has no symbol to prevent repeated includes
+#include <olectlid.h>
+#ifndef __ocidl_h__
+ #include <ocidl.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfco42d.lib")
+ #else
+ #pragma comment(lib, "mfco42ud.lib")
+ #endif
+ #endif
+#endif
+
+#pragma comment(lib, "oledlg.lib")
+#pragma comment(lib, "ole32.lib")
+#pragma comment(lib, "olepro32.lib")
+#pragma comment(lib, "oleaut32.lib")
+#pragma comment(lib, "uuid.lib")
+#pragma comment(lib, "urlmon.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#ifdef _AFXDLL
+ #ifdef _DEBUG
+ #pragma comment(lib, "mfco42pd.lib")
+ #else
+ #pragma comment(lib, "mfco42p.lib")
+ #endif
+#endif
+
+#if !defined(_AFXDLL) && !defined(_USRDLL)
+ #ifdef _DEBUG
+ #pragma comment(lib, "wlmoled.lib")
+ #pragma comment(lib, "ole2uid.lib")
+ #else
+ #pragma comment(lib, "wlmole.lib")
+ #pragma comment(lib, "ole2ui.lib")
+ #endif
+ #pragma comment(linker, "/macres:ole2ui.rsc")
+#else
+ #ifdef _DEBUG
+ #pragma comment(lib, "oledlgd.lib")
+ #pragma comment(lib, "msvcoled.lib")
+ #else
+ #pragma comment(lib, "oledlg.lib")
+ #pragma comment(lib, "msvcole.lib")
+ #endif
+#endif
+
+#pragma comment(lib, "uuid.lib")
+
+#ifdef _DEBUG
+ #pragma comment(lib, "ole2d.lib")
+ #pragma comment(lib, "ole2autd.lib")
+#else
+ #pragma comment(lib, "ole2.lib")
+ #pragma comment(lib, "ole2auto.lib")
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDISP - MFC IDispatch & ClassFactory support
+
+// Classes declared in this file
+
+//CException
+ class COleException; // caught by client or server
+ class COleDispatchException; // special exception for IDispatch calls
+
+//CCmdTarget
+ class COleObjectFactory; // glue for IClassFactory -> runtime class
+ class COleTemplateServer; // server documents using CDocTemplate
+
+class COleDispatchDriver; // helper class to call IDispatch
+
+class COleVariant; // OLE VARIANT wrapper
+class COleCurrency; // Based on OLE CY
+class COleDateTime; // Based on OLE DATE
+class COleDateTimeSpan; // Based on a double
+class COleSafeArray; // Based on OLE VARIANT
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE COM (Component Object Model) implementation infrastructure
+// - data driven QueryInterface
+// - standard implementation of aggregate AddRef and Release
+// (see CCmdTarget in AFXWIN.H for more information)
+
+#define METHOD_PROLOGUE(theClass, localClass) \
+ theClass* pThis = \
+ ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
+ AFX_MANAGE_STATE(pThis->m_pModuleState) \
+
+#define METHOD_PROLOGUE_(theClass, localClass) \
+ theClass* pThis = \
+ ((theClass*)((BYTE*)this - offsetof(theClass, m_x##localClass))); \
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define METHOD_PROLOGUE_EX(theClass, localClass) \
+ theClass* pThis = ((theClass*)((BYTE*)this - m_nOffset)); \
+ AFX_MANAGE_STATE(pThis->m_pModuleState) \
+
+#define METHOD_PROLOGUE_EX_(theClass, localClass) \
+ theClass* pThis = ((theClass*)((BYTE*)this - m_nOffset)); \
+
+#else
+#define METHOD_PROLOGUE_EX(theClass, localClass) \
+ METHOD_PROLOGUE(theClass, localClass) \
+
+#define METHOD_PROLOGUE_EX_(theClass, localClass) \
+ METHOD_PROLOGUE_(theClass, localClass) \
+
+#endif
+
+// Provided only for compatibility with CDK 1.x
+#define METHOD_MANAGE_STATE(theClass, localClass) \
+ METHOD_PROLOGUE_EX(theClass, localClass) \
+
+#define BEGIN_INTERFACE_PART(localClass, baseClass) \
+ class X##localClass : public baseClass \
+ { \
+ public: \
+ STDMETHOD_(ULONG, AddRef)(); \
+ STDMETHOD_(ULONG, Release)(); \
+ STDMETHOD(QueryInterface)(REFIID iid, LPVOID* ppvObj); \
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define BEGIN_INTERFACE_PART_DERIVE(localClass, baseClass) \
+ class X##localClass : public baseClass \
+ { \
+ public: \
+
+#else
+#define BEGIN_INTERFACE_PART_DERIVE(localClass, baseClass) \
+ BEGIN_INTERFACE_PART(localClass, baseClass) \
+
+#endif
+
+#ifndef _AFX_NO_NESTED_DERIVATION
+#define INIT_INTERFACE_PART(theClass, localClass) \
+ size_t m_nOffset; \
+ INIT_INTERFACE_PART_DERIVE(theClass, localClass) \
+
+#define INIT_INTERFACE_PART_DERIVE(theClass, localClass) \
+ X##localClass() \
+ { m_nOffset = offsetof(theClass, m_x##localClass); } \
+
+#else
+#define INIT_INTERFACE_PART(theClass, localClass)
+#define INIT_INTERFACE_PART_DERIVE(theClass, localClass)
+
+#endif
+
+// Note: Inserts the rest of OLE functionality between these two macros,
+// depending upon the interface that is being implemented. It is not
+// necessary to include AddRef, Release, and QueryInterface since those
+// member functions are declared by the macro.
+
+#define END_INTERFACE_PART(localClass) \
+ } m_x##localClass; \
+ friend class X##localClass; \
+
+#ifdef _AFXDLL
+#define BEGIN_INTERFACE_MAP(theClass, theBase) \
+ const AFX_INTERFACEMAP* PASCAL theClass::_GetBaseInterfaceMap() \
+ { return &theBase::interfaceMap; } \
+ const AFX_INTERFACEMAP* theClass::GetInterfaceMap() const \
+ { return &theClass::interfaceMap; } \
+ const AFX_DATADEF AFX_INTERFACEMAP theClass::interfaceMap = \
+ { &theClass::_GetBaseInterfaceMap, &theClass::_interfaceEntries[0], }; \
+ const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass::_interfaceEntries[] = \
+ { \
+
+#else
+#define BEGIN_INTERFACE_MAP(theClass, theBase) \
+ const AFX_INTERFACEMAP* theClass::GetInterfaceMap() const \
+ { return &theClass::interfaceMap; } \
+ const AFX_DATADEF AFX_INTERFACEMAP theClass::interfaceMap = \
+ { &theBase::interfaceMap, &theClass::_interfaceEntries[0], }; \
+ const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass::_interfaceEntries[] = \
+ { \
+
+#endif
+
+#define INTERFACE_PART(theClass, iid, localClass) \
+ { &iid, offsetof(theClass, m_x##localClass) }, \
+
+#define INTERFACE_AGGREGATE(theClass, theAggr) \
+ { NULL, offsetof(theClass, theAggr) }, \
+
+#define END_INTERFACE_MAP() \
+ { NULL, (size_t)-1 } \
+ }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// COleException - unexpected or rare OLE error returned
+
+class COleException : public CException
+{
+ DECLARE_DYNAMIC(COleException)
+
+public:
+ SCODE m_sc;
+ static SCODE PASCAL Process(const CException* pAnyException);
+
+// Implementation (use AfxThrowOleException to create)
+public:
+ COleException();
+ virtual ~COleException();
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+};
+
+void AFXAPI AfxThrowOleException(SCODE sc);
+
+/////////////////////////////////////////////////////////////////////////////
+// IDispatch specific exception
+
+class COleDispatchException : public CException
+{
+ DECLARE_DYNAMIC(COleDispatchException)
+
+public:
+// Attributes
+ WORD m_wCode; // error code (specific to IDispatch implementation)
+ CString m_strDescription; // human readable description of the error
+ DWORD m_dwHelpContext; // help context for error
+
+ // usually empty in application which creates it (eg. servers)
+ CString m_strHelpFile; // help file to use with m_dwHelpContext
+ CString m_strSource; // source of the error (name of server)
+
+// Implementation
+public:
+ COleDispatchException(LPCTSTR lpszDescription, UINT nHelpID, WORD wCode);
+ virtual ~COleDispatchException();
+ static void PASCAL Process(
+ EXCEPINFO* pInfo, const CException* pAnyException);
+
+ virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+
+ SCODE m_scError; // SCODE describing the error
+};
+
+void AFXAPI AfxThrowOleDispatchException(WORD wCode, LPCTSTR lpszDescription,
+ UINT nHelpID = 0);
+void AFXAPI AfxThrowOleDispatchException(WORD wCode, UINT nDescriptionID,
+ UINT nHelpID = (UINT)-1);
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for CCmdTarget IDispatchable classes
+
+#ifdef _AFXDLL
+#define BEGIN_DISPATCH_MAP(theClass, baseClass) \
+ const AFX_DISPMAP* PASCAL theClass::_GetBaseDispatchMap() \
+ { return &baseClass::dispatchMap; } \
+ const AFX_DISPMAP* theClass::GetDispatchMap() const \
+ { return &theClass::dispatchMap; } \
+ const AFX_DISPMAP theClass::dispatchMap = \
+ { &theClass::_GetBaseDispatchMap, &theClass::_dispatchEntries[0], \
+ &theClass::_dispatchEntryCount, &theClass::_dwStockPropMask }; \
+ UINT theClass::_dispatchEntryCount = (UINT)-1; \
+ DWORD theClass::_dwStockPropMask = (DWORD)-1; \
+ const AFX_DISPMAP_ENTRY theClass::_dispatchEntries[] = \
+ { \
+
+#else
+#define BEGIN_DISPATCH_MAP(theClass, baseClass) \
+ const AFX_DISPMAP* theClass::GetDispatchMap() const \
+ { return &theClass::dispatchMap; } \
+ const AFX_DISPMAP theClass::dispatchMap = \
+ { &baseClass::dispatchMap, &theClass::_dispatchEntries[0], \
+ &theClass::_dispatchEntryCount, &theClass::_dwStockPropMask }; \
+ UINT theClass::_dispatchEntryCount = (UINT)-1; \
+ DWORD theClass::_dwStockPropMask = (DWORD)-1; \
+ const AFX_DISPMAP_ENTRY theClass::_dispatchEntries[] = \
+ { \
+
+#endif
+
+#define END_DISPATCH_MAP() \
+ { VTS_NONE, DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)NULL, (AFX_PMSG)NULL, (size_t)-1, afxDispCustom } }; \
+
+// parameter types: by value VTs
+#define VTS_I2 "\x02" // a 'short'
+#define VTS_I4 "\x03" // a 'long'
+#define VTS_R4 "\x04" // a 'float'
+#define VTS_R8 "\x05" // a 'double'
+#define VTS_CY "\x06" // a 'CY' or 'CY*'
+#define VTS_DATE "\x07" // a 'DATE'
+#define VTS_WBSTR "\x08" // an 'LPCOLESTR'
+#define VTS_DISPATCH "\x09" // an 'IDispatch*'
+#define VTS_SCODE "\x0A" // an 'SCODE'
+#define VTS_BOOL "\x0B" // a 'BOOL'
+#define VTS_VARIANT "\x0C" // a 'const VARIANT&' or 'VARIANT*'
+#define VTS_UNKNOWN "\x0D" // an 'IUnknown*'
+#if defined(_UNICODE) || defined(OLE2ANSI)
+ #define VTS_BSTR VTS_WBSTR// an 'LPCOLESTR'
+ #define VT_BSTRT VT_BSTR
+#else
+ #define VTS_BSTR "\x0E" // an 'LPCSTR'
+ #define VT_BSTRA 14
+ #define VT_BSTRT VT_BSTRA
+#endif
+
+// parameter types: by reference VTs
+#define VTS_PI2 "\x42" // a 'short*'
+#define VTS_PI4 "\x43" // a 'long*'
+#define VTS_PR4 "\x44" // a 'float*'
+#define VTS_PR8 "\x45" // a 'double*'
+#define VTS_PCY "\x46" // a 'CY*'
+#define VTS_PDATE "\x47" // a 'DATE*'
+#define VTS_PBSTR "\x48" // a 'BSTR*'
+#define VTS_PDISPATCH "\x49" // an 'IDispatch**'
+#define VTS_PSCODE "\x4A" // an 'SCODE*'
+#define VTS_PBOOL "\x4B" // a 'VARIANT_BOOL*'
+#define VTS_PVARIANT "\x4C" // a 'VARIANT*'
+#define VTS_PUNKNOWN "\x4D" // an 'IUnknown**'
+
+// special VT_ and VTS_ values
+#define VTS_NONE NULL // used for members with 0 params
+#define VT_MFCVALUE 0xFFF // special value for DISPID_VALUE
+#define VT_MFCBYREF 0x40 // indicates VT_BYREF type
+#define VT_MFCMARKER 0xFF // delimits named parameters (INTERNAL USE)
+
+// variant handling (use V_BSTRT when you have ANSI BSTRs, as in DAO)
+#ifndef _UNICODE
+ #define V_BSTRT(b) (LPSTR)V_BSTR(b)
+#else
+ #define V_BSTRT(b) V_BSTR(b)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE control parameter types
+
+#define VTS_COLOR VTS_I4 // OLE_COLOR
+#define VTS_XPOS_PIXELS VTS_I4 // OLE_XPOS_PIXELS
+#define VTS_YPOS_PIXELS VTS_I4 // OLE_YPOS_PIXELS
+#define VTS_XSIZE_PIXELS VTS_I4 // OLE_XSIZE_PIXELS
+#define VTS_YSIZE_PIXELS VTS_I4 // OLE_YSIZE_PIXELS
+#define VTS_XPOS_HIMETRIC VTS_I4 // OLE_XPOS_HIMETRIC
+#define VTS_YPOS_HIMETRIC VTS_I4 // OLE_YPOS_HIMETRIC
+#define VTS_XSIZE_HIMETRIC VTS_I4 // OLE_XSIZE_HIMETRIC
+#define VTS_YSIZE_HIMETRIC VTS_I4 // OLE_YSIZE_HIMETRIC
+#define VTS_TRISTATE VTS_I2 // OLE_TRISTATE
+#define VTS_OPTEXCLUSIVE VTS_BOOL // OLE_OPTEXCLUSIVE
+
+#define VTS_PCOLOR VTS_PI4 // OLE_COLOR*
+#define VTS_PXPOS_PIXELS VTS_PI4 // OLE_XPOS_PIXELS*
+#define VTS_PYPOS_PIXELS VTS_PI4 // OLE_YPOS_PIXELS*
+#define VTS_PXSIZE_PIXELS VTS_PI4 // OLE_XSIZE_PIXELS*
+#define VTS_PYSIZE_PIXELS VTS_PI4 // OLE_YSIZE_PIXELS*
+#define VTS_PXPOS_HIMETRIC VTS_PI4 // OLE_XPOS_HIMETRIC*
+#define VTS_PYPOS_HIMETRIC VTS_PI4 // OLE_YPOS_HIMETRIC*
+#define VTS_PXSIZE_HIMETRIC VTS_PI4 // OLE_XSIZE_HIMETRIC*
+#define VTS_PYSIZE_HIMETRIC VTS_PI4 // OLE_YSIZE_HIMETRIC*
+#define VTS_PTRISTATE VTS_PI2 // OLE_TRISTATE*
+#define VTS_POPTEXCLUSIVE VTS_PBOOL // OLE_OPTEXCLUSIVE*
+
+#define VTS_FONT VTS_DISPATCH // IFontDispatch*
+#define VTS_PICTURE VTS_DISPATCH // IPictureDispatch*
+
+#define VTS_HANDLE VTS_I4 // OLE_HANDLE
+#define VTS_PHANDLE VTS_PI4 // OLE_HANDLE*
+
+// these DISP_ macros cause the framework to generate the DISPID
+#define DISP_FUNCTION(theClass, szExternalName, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), DISPID_UNKNOWN, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnMember, (AFX_PMSG)0, 0, \
+ afxDispCustom }, \
+
+#define DISP_PROPERTY(theClass, szExternalName, memberName, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, (AFX_PMSG)0, (AFX_PMSG)0, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_NOTIFY(theClass, szExternalName, memberName, pfnAfterSet, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, (AFX_PMSG)0, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnAfterSet, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_EX(theClass, szExternalName, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnSet, 0, afxDispCustom }, \
+
+#define DISP_PROPERTY_PARAM(theClass, szExternalName, pfnGet, pfnSet, vtPropType, vtsParams) \
+ { _T(szExternalName), DISPID_UNKNOWN, vtsParams, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnSet, 0, afxDispCustom }, \
+
+// these DISP_ macros allow the app to determine the DISPID
+#define DISP_FUNCTION_ID(theClass, szExternalName, dispid, pfnMember, vtRetVal, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtRetVal, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnMember, (AFX_PMSG)0, 0, \
+ afxDispCustom }, \
+
+#define DISP_PROPERTY_ID(theClass, szExternalName, dispid, memberName, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, (AFX_PMSG)0, (AFX_PMSG)0, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_NOTIFY_ID(theClass, szExternalName, dispid, memberName, pfnAfterSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, (AFX_PMSG)0, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnAfterSet, \
+ offsetof(theClass, memberName), afxDispCustom }, \
+
+#define DISP_PROPERTY_EX_ID(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType) \
+ { _T(szExternalName), dispid, NULL, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnSet, 0, afxDispCustom }, \
+
+#define DISP_PROPERTY_PARAM_ID(theClass, szExternalName, dispid, pfnGet, pfnSet, vtPropType, vtsParams) \
+ { _T(szExternalName), dispid, vtsParams, vtPropType, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnGet, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnSet, 0, afxDispCustom }, \
+
+// the DISP_DEFVALUE is a special case macro that creates an alias for DISPID_VALUE
+#define DISP_DEFVALUE(theClass, szExternalName) \
+ { _T(szExternalName), DISPID_UNKNOWN, NULL, VT_MFCVALUE, \
+ (AFX_PMSG)0, (AFX_PMSG)0, 0, afxDispCustom }, \
+
+#define DISP_DEFVALUE_ID(theClass, dispid) \
+ { NULL, dispid, NULL, VT_MFCVALUE, (AFX_PMSG)0, (AFX_PMSG)0, 0, \
+ afxDispCustom }, \
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for creating "creatable" automation classes.
+
+#define DECLARE_OLECREATE(class_name) \
+public: \
+ static AFX_DATA COleObjectFactory factory; \
+ static AFX_DATA const GUID guid; \
+
+#define IMPLEMENT_OLECREATE(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ AFX_DATADEF COleObjectFactory class_name::factory(class_name::guid, \
+ RUNTIME_CLASS(class_name), FALSE, _T(external_name)); \
+ const AFX_DATADEF GUID class_name::guid = \
+ { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// Helper class for driving IDispatch
+
+class COleDispatchDriver
+{
+// Constructors
+public:
+ COleDispatchDriver();
+ COleDispatchDriver(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE);
+ COleDispatchDriver(const COleDispatchDriver& dispatchSrc);
+
+// Attributes
+ LPDISPATCH m_lpDispatch;
+ BOOL m_bAutoRelease;
+
+// Operations
+ BOOL CreateDispatch(REFCLSID clsid, COleException* pError = NULL);
+ BOOL CreateDispatch(LPCTSTR lpszProgID, COleException* pError = NULL);
+
+ void AttachDispatch(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE);
+ LPDISPATCH DetachDispatch();
+ // detach and get ownership of m_lpDispatch
+ void ReleaseDispatch();
+
+ // helpers for IDispatch::Invoke
+ void AFX_CDECL InvokeHelper(DISPID dwDispID, WORD wFlags,
+ VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ...);
+ void AFX_CDECL SetProperty(DISPID dwDispID, VARTYPE vtProp, ...);
+ void GetProperty(DISPID dwDispID, VARTYPE vtProp, void* pvProp) const;
+
+ // special operators
+ operator LPDISPATCH();
+ const COleDispatchDriver& operator=(const COleDispatchDriver& dispatchSrc);
+
+// Implementation
+public:
+ ~COleDispatchDriver();
+ void InvokeHelperV(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
+ void* pvRet, const BYTE* pbParamInfo, va_list argList);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Class Factory implementation (binds OLE class factory -> runtime class)
+// (all specific class factories derive from this class factory)
+
+class COleObjectFactory : public CCmdTarget
+{
+ DECLARE_DYNAMIC(COleObjectFactory)
+
+// Construction
+public:
+ COleObjectFactory(REFCLSID clsid, CRuntimeClass* pRuntimeClass,
+ BOOL bMultiInstance, LPCTSTR lpszProgID);
+
+// Attributes
+ virtual BOOL IsRegistered() const;
+ REFCLSID GetClassID() const;
+
+// Operations
+ virtual BOOL Register();
+ void Revoke();
+ void UpdateRegistry(LPCTSTR lpszProgID = NULL);
+ // default uses m_lpszProgID if not NULL
+ BOOL IsLicenseValid();
+
+ static BOOL PASCAL RegisterAll();
+ static void PASCAL RevokeAll();
+ static BOOL PASCAL UpdateRegistryAll(BOOL bRegister = TRUE);
+
+// Overridables
+protected:
+ virtual CCmdTarget* OnCreateObject();
+ virtual BOOL UpdateRegistry(BOOL bRegister);
+ virtual BOOL VerifyUserLicense();
+ virtual BOOL GetLicenseKey(DWORD dwReserved, BSTR* pbstrKey);
+ virtual BOOL VerifyLicenseKey(BSTR bstrKey);
+
+// Implementation
+public:
+ virtual ~COleObjectFactory();
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif
+
+public:
+ COleObjectFactory* m_pNextFactory; // list of factories maintained
+
+protected:
+ DWORD m_dwRegister; // registry identifier
+ CLSID m_clsid; // registered class ID
+ CRuntimeClass* m_pRuntimeClass; // runtime class of CCmdTarget derivative
+ BOOL m_bMultiInstance; // multiple instance?
+ LPCTSTR m_lpszProgID; // human readable class ID
+ BYTE m_bLicenseChecked;
+ BYTE m_bLicenseValid;
+ BYTE m_bRegistered; // is currently registered w/ system
+ BYTE m_bReserved; // reserved for future use
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(ClassFactory, IClassFactory2)
+ INIT_INTERFACE_PART(COleObjectFactory, ClassFactory)
+ STDMETHOD(CreateInstance)(LPUNKNOWN, REFIID, LPVOID*);
+ STDMETHOD(LockServer)(BOOL);
+ STDMETHOD(GetLicInfo)(LPLICINFO);
+ STDMETHOD(RequestLicKey)(DWORD, BSTR*);
+ STDMETHOD(CreateInstanceLic)(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR,
+ LPVOID*);
+ END_INTERFACE_PART(ClassFactory)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend SCODE AFXAPI AfxDllGetClassObject(REFCLSID, REFIID, LPVOID*);
+ friend SCODE STDAPICALLTYPE DllGetClassObject(REFCLSID, REFIID, LPVOID*);
+};
+
+// Define COleObjectFactoryEx for compatibility with old CDK
+#define COleObjectFactoryEx COleObjectFactory
+
+//////////////////////////////////////////////////////////////////////////////
+// COleTemplateServer - COleObjectFactory using CDocTemplates
+
+// This enumeration is used in AfxOleRegisterServerClass to pick the
+// correct registration entries given the application type.
+enum OLE_APPTYPE
+{
+ OAT_INPLACE_SERVER = 0, // server has full server user-interface
+ OAT_SERVER = 1, // server supports only embedding
+ OAT_CONTAINER = 2, // container supports links to embeddings
+ OAT_DISPATCH_OBJECT = 3, // IDispatch capable object
+ OAT_DOC_OBJECT_SERVER = 4, // sever supports DocObject embedding
+ OAT_DOC_OBJECT_CONTAINER =5,// container supports DocObject clients
+};
+
+class COleTemplateServer : public COleObjectFactory
+{
+// Constructors
+public:
+ COleTemplateServer();
+
+// Operations
+ void ConnectTemplate(REFCLSID clsid, CDocTemplate* pDocTemplate,
+ BOOL bMultiInstance);
+ // set doc template after creating it in InitInstance
+ void UpdateRegistry(OLE_APPTYPE nAppType = OAT_INPLACE_SERVER,
+ LPCTSTR* rglpszRegister = NULL, LPCTSTR* rglpszOverwrite = NULL);
+ // may want to UpdateRegistry if not run with /Embedded
+ BOOL Register();
+
+// Implementation
+protected:
+ virtual CCmdTarget* OnCreateObject();
+ CDocTemplate* m_pDocTemplate;
+
+private:
+ void UpdateRegistry(LPCTSTR lpszProgID);
+ // hide base class version of UpdateRegistry
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// System registry helpers
+
+// Helper to register server in case of no .REG file loaded
+BOOL AFXAPI AfxOleRegisterServerClass(
+ REFCLSID clsid, LPCTSTR lpszClassName,
+ LPCTSTR lpszShortTypeName, LPCTSTR lpszLongTypeName,
+ OLE_APPTYPE nAppType = OAT_SERVER,
+ LPCTSTR* rglpszRegister = NULL, LPCTSTR* rglpszOverwrite = NULL,
+ int nIconIndex = 0, LPCTSTR lpszLocalFilterName = NULL);
+
+// AfxOleRegisterHelper is a worker function used by AfxOleRegisterServerClass
+// (available for advanced registry work)
+BOOL AFXAPI AfxOleRegisterHelper(LPCTSTR const* rglpszRegister,
+ LPCTSTR const* rglpszSymbols, int nSymbols, BOOL bReplace,
+ HKEY hKeyRoot = ((HKEY)0x80000000)); // HKEY_CLASSES_ROOT
+
+/////////////////////////////////////////////////////////////////////////////
+// Connection maps
+
+#define BEGIN_CONNECTION_PART(theClass, localClass) \
+ class X##localClass : public CConnectionPoint \
+ { \
+ public: \
+ X##localClass() \
+ { m_nOffset = offsetof(theClass, m_x##localClass); }
+
+#define CONNECTION_IID(iid) \
+ REFIID GetIID() { return iid; }
+
+#define END_CONNECTION_PART(localClass) \
+ } m_x##localClass; \
+ friend class X##localClass;
+
+#ifdef _AFXDLL
+#define BEGIN_CONNECTION_MAP(theClass, theBase) \
+ const AFX_CONNECTIONMAP* PASCAL theClass::_GetBaseConnectionMap() \
+ { return &theBase::connectionMap; } \
+ const AFX_CONNECTIONMAP* theClass::GetConnectionMap() const \
+ { return &theClass::connectionMap; } \
+ const AFX_DATADEF AFX_CONNECTIONMAP theClass::connectionMap = \
+ { &theClass::_GetBaseConnectionMap, &theClass::_connectionEntries[0], }; \
+ const AFX_DATADEF AFX_CONNECTIONMAP_ENTRY theClass::_connectionEntries[] = \
+ { \
+
+#else
+#define BEGIN_CONNECTION_MAP(theClass, theBase) \
+ const AFX_CONNECTIONMAP* theClass::GetConnectionMap() const \
+ { return &theClass::connectionMap; } \
+ const AFX_DATADEF AFX_CONNECTIONMAP theClass::connectionMap = \
+ { &(theBase::connectionMap), &theClass::_connectionEntries[0], }; \
+ const AFX_DATADEF AFX_CONNECTIONMAP_ENTRY theClass::_connectionEntries[] = \
+ { \
+
+#endif
+
+#define CONNECTION_PART(theClass, iid, localClass) \
+ { &iid, offsetof(theClass, m_x##localClass) }, \
+
+#define END_CONNECTION_MAP() \
+ { NULL, (size_t)-1 } \
+ }; \
+
+/////////////////////////////////////////////////////////////////////////////
+// CConnectionPoint
+
+class CConnectionPoint : public CCmdTarget
+{
+// Constructors
+public:
+ CConnectionPoint();
+
+// Operations
+ POSITION GetStartPosition() const;
+ LPUNKNOWN GetNextConnection(POSITION& pos) const;
+ const CPtrArray* GetConnections(); // obsolete
+
+// Overridables
+ virtual LPCONNECTIONPOINTCONTAINER GetContainer();
+ virtual REFIID GetIID() = 0;
+ virtual void OnAdvise(BOOL bAdvise);
+ virtual int GetMaxConnections();
+ virtual LPUNKNOWN QuerySinkInterface(LPUNKNOWN pUnkSink);
+
+// Implementation
+ ~CConnectionPoint();
+ void CreateConnectionArray();
+ int GetConnectionCount();
+
+protected:
+ size_t m_nOffset;
+ LPUNKNOWN m_pUnkFirstConnection;
+ CPtrArray* m_pConnections;
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(ConnPt, IConnectionPoint)
+ INIT_INTERFACE_PART(CConnectionPoint, ConnPt)
+ STDMETHOD(GetConnectionInterface)(IID* pIID);
+ STDMETHOD(GetConnectionPointContainer)(
+ IConnectionPointContainer** ppCPC);
+ STDMETHOD(Advise)(LPUNKNOWN pUnkSink, DWORD* pdwCookie);
+ STDMETHOD(Unadvise)(DWORD dwCookie);
+ STDMETHOD(EnumConnections)(LPENUMCONNECTIONS* ppEnum);
+ END_INTERFACE_PART(ConnPt)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// EventSink Maps
+
+#ifndef _AFX_NO_OCC_SUPPORT
+
+#ifdef _AFXDLL
+#define BEGIN_EVENTSINK_MAP(theClass, baseClass) \
+ const AFX_EVENTSINKMAP* PASCAL theClass::_GetBaseEventSinkMap() \
+ { return &baseClass::eventsinkMap; } \
+ const AFX_EVENTSINKMAP* theClass::GetEventSinkMap() const \
+ { return &theClass::eventsinkMap; } \
+ const AFX_EVENTSINKMAP theClass::eventsinkMap = \
+ { &theClass::_GetBaseEventSinkMap, &theClass::_eventsinkEntries[0], \
+ &theClass::_eventsinkEntryCount }; \
+ UINT theClass::_eventsinkEntryCount = (UINT)-1; \
+ const AFX_EVENTSINKMAP_ENTRY theClass::_eventsinkEntries[] = \
+ { \
+
+#else
+#define BEGIN_EVENTSINK_MAP(theClass, baseClass) \
+ const AFX_EVENTSINKMAP* theClass::GetEventSinkMap() const \
+ { return &theClass::eventsinkMap; } \
+ const AFX_EVENTSINKMAP theClass::eventsinkMap = \
+ { &baseClass::eventsinkMap, &theClass::_eventsinkEntries[0], \
+ &theClass::_eventsinkEntryCount }; \
+ UINT theClass::_eventsinkEntryCount = (UINT)-1; \
+ const AFX_EVENTSINKMAP_ENTRY theClass::_eventsinkEntries[] = \
+ { \
+
+#endif
+
+#define END_EVENTSINK_MAP() \
+ { VTS_NONE, DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)NULL, (AFX_PMSG)NULL, (size_t)-1, afxDispCustom, \
+ (UINT)-1, 0 } }; \
+
+#define ON_EVENT(theClass, id, dispid, pfnHandler, vtsParams) \
+ { _T(""), dispid, vtsParams, VT_BOOL, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnHandler, (AFX_PMSG)0, 0, \
+ afxDispCustom, id, (UINT)-1 }, \
+
+#define ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler, vtsParams) \
+ { _T(""), dispid, vtsParams, VT_BOOL, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnHandler, (AFX_PMSG)0, 0, \
+ afxDispCustom, idFirst, idLast }, \
+
+#define ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged) \
+ { _T(""), dispid, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(BOOL*))&pfnRequest, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(void))&pfnChanged, \
+ 1, afxDispCustom, id, (UINT)-1 }, \
+
+#define ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged) \
+ { _T(""), dispid, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(UINT, BOOL*))&pfnRequest, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(UINT))&pfnChanged, \
+ 1, afxDispCustom, idFirst, idLast }, \
+
+#define ON_DSCNOTIFY(theClass, id, pfnNotify) \
+ { _T(""), DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(DSCSTATE, DSCREASON, BOOL*))&pfnNotify, (AFX_PMSG)0, \
+ 1, afxDispCustom, id, (UINT)-1 }, \
+
+#define ON_DSCNOTIFY_RANGE(theClass, idFirst, idLast, pfnNotify) \
+ { _T(""), DISPID_UNKNOWN, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(UINT, DSCSTATE, DSCREASON, BOOL*))&pfnNotify, (AFX_PMSG)0, \
+ 1, afxDispCustom, idFirst, idLast }, \
+
+#define ON_EVENT_REFLECT(theClass, dispid, pfnHandler, vtsParams) \
+ { _T(""), dispid, vtsParams, VT_BOOL, \
+ (AFX_PMSG)(void (theClass::*)(void))&pfnHandler, (AFX_PMSG)0, 0, \
+ afxDispCustom, (UINT)-1, (UINT)-1 }, \
+
+#define ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged) \
+ { _T(""), dispid, VTS_NONE, VT_VOID, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(BOOL*))&pfnRequest, \
+ (AFX_PMSG)(BOOL (CCmdTarget::*)(void))&pfnChanged, \
+ 1, afxDispCustom, (UINT)-1, (UINT)-1 }, \
+
+#endif // !_AFX_NO_OCC_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// Macros for type library information
+
+CTypeLibCache* AFXAPI AfxGetTypeLibCache(const GUID* pTypeLibID);
+
+#define DECLARE_OLETYPELIB(class_name) \
+ protected: \
+ virtual UINT GetTypeInfoCount(); \
+ virtual HRESULT GetTypeLib(LCID, LPTYPELIB*); \
+ virtual CTypeLibCache* GetTypeLibCache(); \
+
+#define IMPLEMENT_OLETYPELIB(class_name, tlid, wVerMajor, wVerMinor) \
+ UINT class_name::GetTypeInfoCount() \
+ { return 1; } \
+ HRESULT class_name::GetTypeLib(LCID lcid, LPTYPELIB* ppTypeLib) \
+ { return ::LoadRegTypeLib(tlid, wVerMajor, wVerMinor, lcid, ppTypeLib); } \
+ CTypeLibCache* class_name::GetTypeLibCache() \
+ { AFX_MANAGE_STATE(m_pModuleState); return AfxGetTypeLibCache(&tlid); } \
+
+/////////////////////////////////////////////////////////////////////////////
+// Init & Term helpers
+
+BOOL AFXAPI AfxOleInit();
+void AFXAPI AfxOleTerm(BOOL bJustRevoke = FALSE);
+void AFXAPI AfxOleTermOrFreeLib(BOOL bTerm = TRUE, BOOL bJustRevoke = FALSE);
+
+/////////////////////////////////////////////////////////////////////////////
+// Memory management helpers (for OLE task allocator memory)
+
+#define AfxAllocTaskMem(nSize) CoTaskMemAlloc(nSize)
+#define AfxFreeTaskMem(p) CoTaskMemFree(p)
+
+LPWSTR AFXAPI AfxAllocTaskWideString(LPCWSTR lpszString);
+LPWSTR AFXAPI AfxAllocTaskWideString(LPCSTR lpszString);
+LPSTR AFXAPI AfxAllocTaskAnsiString(LPCWSTR lpszString);
+LPSTR AFXAPI AfxAllocTaskAnsiString(LPCSTR lpszString);
+
+#ifdef _UNICODE
+ #define AfxAllocTaskString(x) AfxAllocTaskWideString(x)
+#else
+ #define AfxAllocTaskString(x) AfxAllocTaskAnsiString(x)
+#endif
+
+#ifdef OLE2ANSI
+ #define AfxAllocTaskOleString(x) AfxAllocTaskAnsiString(x)
+#else
+ #define AfxAllocTaskOleString(x) AfxAllocTaskWideString(x)
+#endif
+
+HRESULT AFXAPI AfxGetClassIDFromString(LPCTSTR lpsz, LPCLSID lpClsID);
+
+/////////////////////////////////////////////////////////////////////////////
+// Special in-proc server APIs
+
+SCODE AFXAPI AfxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
+SCODE AFXAPI AfxDllCanUnloadNow(void);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleVariant class helpers
+
+#define AFX_OLE_TRUE (-1)
+#define AFX_OLE_FALSE 0
+
+class CLongBinary; // forward reference (see afxdb_.h)
+
+/////////////////////////////////////////////////////////////////////////////
+// COleVariant class - wraps VARIANT types
+
+typedef const VARIANT* LPCVARIANT;
+
+class COleVariant : public tagVARIANT
+{
+// Constructors
+public:
+ COleVariant();
+
+ COleVariant(const VARIANT& varSrc);
+ COleVariant(LPCVARIANT pSrc);
+ COleVariant(const COleVariant& varSrc);
+
+ COleVariant(LPCTSTR lpszSrc);
+ COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set to ANSI string
+ COleVariant(CString& strSrc);
+
+ COleVariant(BYTE nSrc);
+ COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);
+ COleVariant(long lSrc, VARTYPE vtSrc = VT_I4);
+ COleVariant(const COleCurrency& curSrc);
+
+ COleVariant(float fltSrc);
+ COleVariant(double dblSrc);
+ COleVariant(const COleDateTime& timeSrc);
+
+ COleVariant(const CByteArray& arrSrc);
+ COleVariant(const CLongBinary& lbSrc);
+
+// Operations
+public:
+ void Clear();
+ void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);
+ void Attach(VARIANT& varSrc);
+ VARIANT Detach();
+
+ BOOL operator==(const VARIANT& varSrc) const;
+ BOOL operator==(LPCVARIANT pSrc) const;
+
+ const COleVariant& operator=(const VARIANT& varSrc);
+ const COleVariant& operator=(LPCVARIANT pSrc);
+ const COleVariant& operator=(const COleVariant& varSrc);
+
+ const COleVariant& operator=(const LPCTSTR lpszSrc);
+ const COleVariant& operator=(const CString& strSrc);
+
+ const COleVariant& operator=(BYTE nSrc);
+ const COleVariant& operator=(short nSrc);
+ const COleVariant& operator=(long lSrc);
+ const COleVariant& operator=(const COleCurrency& curSrc);
+
+ const COleVariant& operator=(float fltSrc);
+ const COleVariant& operator=(double dblSrc);
+ const COleVariant& operator=(const COleDateTime& dateSrc);
+
+ const COleVariant& operator=(const CByteArray& arrSrc);
+ const COleVariant& operator=(const CLongBinary& lbSrc);
+
+ void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc); // used to set ANSI string
+
+ operator LPVARIANT();
+ operator LPCVARIANT() const;
+
+// Implementation
+public:
+ ~COleVariant();
+};
+
+// COleVariant diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleVariant varSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleVariant varSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleVariant& varSrc);
+
+// Helper for initializing VARIANT structures
+void AFXAPI AfxVariantInit(LPVARIANT pVar);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleCurrency class
+
+class COleCurrency
+{
+// Constructors
+public:
+ COleCurrency();
+
+ COleCurrency(CURRENCY cySrc);
+ COleCurrency(const COleCurrency& curSrc);
+ COleCurrency(const VARIANT& varSrc);
+ COleCurrency(long nUnits, long nFractionalUnits);
+
+// Attributes
+public:
+ enum CurrencyStatus
+ {
+ valid = 0,
+ invalid = 1, // Invalid currency (overflow, div 0, etc.)
+ null = 2, // Literally has no value
+ };
+
+ CURRENCY m_cur;
+ CurrencyStatus m_status;
+
+ void SetStatus(CurrencyStatus status);
+ CurrencyStatus GetStatus() const;
+
+// Operations
+public:
+ const COleCurrency& operator=(CURRENCY cySrc);
+ const COleCurrency& operator=(const COleCurrency& curSrc);
+ const COleCurrency& operator=(const VARIANT& varSrc);
+
+ BOOL operator==(const COleCurrency& cur) const;
+ BOOL operator!=(const COleCurrency& cur) const;
+ BOOL operator<(const COleCurrency& cur) const;
+ BOOL operator>(const COleCurrency& cur) const;
+ BOOL operator<=(const COleCurrency& cur) const;
+ BOOL operator>=(const COleCurrency& cur) const;
+
+ // Currency math
+ COleCurrency operator+(const COleCurrency& cur) const;
+ COleCurrency operator-(const COleCurrency& cur) const;
+ const COleCurrency& operator+=(const COleCurrency& cur);
+ const COleCurrency& operator-=(const COleCurrency& cur);
+ COleCurrency operator-() const;
+
+ COleCurrency operator*(long nOperand) const;
+ COleCurrency operator/(long nOperand) const;
+ const COleCurrency& operator*=(long nOperand);
+ const COleCurrency& operator/=(long nOperand);
+
+ operator CURRENCY() const;
+
+ // Currency definition
+ void SetCurrency(long nUnits, long nFractionalUnits);
+ BOOL ParseCurrency(LPCTSTR lpszCurrency, DWORD dwFlags = 0,
+ LCID = LANG_USER_DEFAULT);
+
+ // formatting
+ CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
+};
+
+// COleCurrency diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleCurrency curSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleCurrency curSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleCurrency& curSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDateTime class helpers
+
+#define AFX_OLE_DATETIME_ERROR (-1)
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDateTime class
+
+class COleDateTime
+{
+// Constructors
+public:
+ static COleDateTime PASCAL GetCurrentTime();
+
+ COleDateTime();
+
+ COleDateTime(const COleDateTime& dateSrc);
+ COleDateTime(const VARIANT& varSrc);
+ COleDateTime(DATE dtSrc);
+
+ COleDateTime(time_t timeSrc);
+ COleDateTime(const SYSTEMTIME& systimeSrc);
+ COleDateTime(const FILETIME& filetimeSrc);
+
+ COleDateTime(int nYear, int nMonth, int nDay,
+ int nHour, int nMin, int nSec);
+ COleDateTime(WORD wDosDate, WORD wDosTime);
+
+// Attributes
+public:
+ enum DateTimeStatus
+ {
+ valid = 0,
+ invalid = 1, // Invalid date (out of range, etc.)
+ null = 2, // Literally has no value
+ };
+
+ DATE m_dt;
+ DateTimeStatus m_status;
+
+ void SetStatus(DateTimeStatus status);
+ DateTimeStatus GetStatus() const;
+
+ int GetYear() const;
+ int GetMonth() const; // month of year (1 = Jan)
+ int GetDay() const; // day of month (0-31)
+ int GetHour() const; // hour in day (0-23)
+ int GetMinute() const; // minute in hour (0-59)
+ int GetSecond() const; // second in minute (0-59)
+ int GetDayOfWeek() const; // 1=Sun, 2=Mon, ..., 7=Sat
+ int GetDayOfYear() const; // days since start of year, Jan 1 = 1
+
+// Operations
+public:
+ const COleDateTime& operator=(const COleDateTime& dateSrc);
+ const COleDateTime& operator=(const VARIANT& varSrc);
+ const COleDateTime& operator=(DATE dtSrc);
+
+ const COleDateTime& operator=(const time_t& timeSrc);
+ const COleDateTime& operator=(const SYSTEMTIME& systimeSrc);
+ const COleDateTime& operator=(const FILETIME& filetimeSrc);
+
+ BOOL operator==(const COleDateTime& date) const;
+ BOOL operator!=(const COleDateTime& date) const;
+ BOOL operator<(const COleDateTime& date) const;
+ BOOL operator>(const COleDateTime& date) const;
+ BOOL operator<=(const COleDateTime& date) const;
+ BOOL operator>=(const COleDateTime& date) const;
+
+ // DateTime math
+ COleDateTime operator+(const COleDateTimeSpan& dateSpan) const;
+ COleDateTime operator-(const COleDateTimeSpan& dateSpan) const;
+ const COleDateTime& operator+=(const COleDateTimeSpan dateSpan);
+ const COleDateTime& operator-=(const COleDateTimeSpan dateSpan);
+
+ // DateTimeSpan math
+ COleDateTimeSpan operator-(const COleDateTime& date) const;
+
+ operator DATE() const;
+
+ BOOL SetDateTime(int nYear, int nMonth, int nDay,
+ int nHour, int nMin, int nSec);
+ BOOL SetDate(int nYear, int nMonth, int nDay);
+ BOOL SetTime(int nHour, int nMin, int nSec);
+ BOOL ParseDateTime(LPCTSTR lpszDate, DWORD dwFlags = 0,
+ LCID lcid = LANG_USER_DEFAULT);
+
+ // formatting
+ CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
+ CString Format(LPCTSTR lpszFormat) const;
+ CString Format(UINT nFormatID) const;
+
+// Implementation
+protected:
+ void CheckRange();
+ friend COleDateTimeSpan;
+};
+
+// COleDateTime diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleDateTime dateSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleDateTime dateSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleDateTime& dateSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDateTimeSpan class
+class COleDateTimeSpan
+{
+// Constructors
+public:
+ COleDateTimeSpan();
+
+ COleDateTimeSpan(double dblSpanSrc);
+ COleDateTimeSpan(const COleDateTimeSpan& dateSpanSrc);
+ COleDateTimeSpan(long lDays, int nHours, int nMins, int nSecs);
+
+// Attributes
+public:
+ enum DateTimeSpanStatus
+ {
+ valid = 0,
+ invalid = 1, // Invalid span (out of range, etc.)
+ null = 2, // Literally has no value
+ };
+
+ double m_span;
+ DateTimeSpanStatus m_status;
+
+ void SetStatus(DateTimeSpanStatus status);
+ DateTimeSpanStatus GetStatus() const;
+
+ double GetTotalDays() const; // span in days (about -3.65e6 to 3.65e6)
+ double GetTotalHours() const; // span in hours (about -8.77e7 to 8.77e6)
+ double GetTotalMinutes() const; // span in minutes (about -5.26e9 to 5.26e9)
+ double GetTotalSeconds() const; // span in seconds (about -3.16e11 to 3.16e11)
+
+ long GetDays() const; // component days in span
+ long GetHours() const; // component hours in span (-23 to 23)
+ long GetMinutes() const; // component minutes in span (-59 to 59)
+ long GetSeconds() const; // component seconds in span (-59 to 59)
+
+// Operations
+public:
+ const COleDateTimeSpan& operator=(double dblSpanSrc);
+ const COleDateTimeSpan& operator=(const COleDateTimeSpan& dateSpanSrc);
+
+ BOOL operator==(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator!=(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator<(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator>(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator<=(const COleDateTimeSpan& dateSpan) const;
+ BOOL operator>=(const COleDateTimeSpan& dateSpan) const;
+
+ // DateTimeSpan math
+ COleDateTimeSpan operator+(const COleDateTimeSpan& dateSpan) const;
+ COleDateTimeSpan operator-(const COleDateTimeSpan& dateSpan) const;
+ const COleDateTimeSpan& operator+=(const COleDateTimeSpan dateSpan);
+ const COleDateTimeSpan& operator-=(const COleDateTimeSpan dateSpan);
+ COleDateTimeSpan operator-() const;
+
+ operator double() const;
+
+ void SetDateTimeSpan(long lDays, int nHours, int nMins, int nSecs);
+
+ // formatting
+ CString Format(LPCTSTR pFormat) const;
+ CString Format(UINT nID) const;
+
+// Implementation
+public:
+ void CheckRange();
+ friend COleDateTime;
+};
+
+// COleDateTimeSpan diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc,COleDateTimeSpan dateSpanSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleDateTimeSpan dateSpanSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleDateTimeSpan& dateSpanSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// Helper for initializing COleSafeArray
+void AFXAPI AfxSafeArrayInit(COleSafeArray* psa);
+
+/////////////////////////////////////////////////////////////////////////////
+// CSafeArray class
+
+typedef const SAFEARRAY* LPCSAFEARRAY;
+
+class COleSafeArray : public tagVARIANT
+{
+//Constructors
+public:
+ COleSafeArray();
+ COleSafeArray(const SAFEARRAY& saSrc, VARTYPE vtSrc);
+ COleSafeArray(LPCSAFEARRAY pSrc, VARTYPE vtSrc);
+ COleSafeArray(const COleSafeArray& saSrc);
+ COleSafeArray(const VARIANT& varSrc);
+ COleSafeArray(LPCVARIANT pSrc);
+ COleSafeArray(const COleVariant& varSrc);
+
+// Operations
+public:
+ void Clear();
+ void Attach(VARIANT& varSrc);
+ VARIANT Detach();
+
+ COleSafeArray& operator=(const COleSafeArray& saSrc);
+ COleSafeArray& operator=(const VARIANT& varSrc);
+ COleSafeArray& operator=(LPCVARIANT pSrc);
+ COleSafeArray& operator=(const COleVariant& varSrc);
+
+ BOOL operator==(const SAFEARRAY& saSrc) const;
+ BOOL operator==(LPCSAFEARRAY pSrc) const;
+ BOOL operator==(const COleSafeArray& saSrc) const;
+ BOOL operator==(const VARIANT& varSrc) const;
+ BOOL operator==(LPCVARIANT pSrc) const;
+ BOOL operator==(const COleVariant& varSrc) const;
+
+ operator LPVARIANT();
+ operator LPCVARIANT() const;
+
+ // One dim array helpers
+ void CreateOneDim(VARTYPE vtSrc, DWORD dwElements,
+ void* pvSrcData = NULL, long nLBound = 0);
+ DWORD GetOneDimSize();
+ void ResizeOneDim(DWORD dwElements);
+
+ // Multi dim array helpers
+ void Create(VARTYPE vtSrc, DWORD dwDims, DWORD* rgElements);
+
+ // SafeArray wrapper classes
+ void Create(VARTYPE vtSrc, DWORD dwDims, SAFEARRAYBOUND* rgsabounds);
+ void AccessData(void** ppvData);
+ void UnaccessData();
+ void AllocData();
+ void AllocDescriptor(DWORD dwDims);
+ void Copy(LPSAFEARRAY* ppsa);
+ void GetLBound(DWORD dwDim, long* pLBound);
+ void GetUBound(DWORD dwDim, long* pUBound);
+ void GetElement(long* rgIndices, void* pvData);
+ void PtrOfIndex(long* rgIndices, void** ppvData);
+ void PutElement(long* rgIndices, void* pvData);
+ void Redim(SAFEARRAYBOUND* psaboundNew);
+ void Lock();
+ void Unlock();
+ DWORD GetDim();
+ DWORD GetElemSize();
+ void Destroy();
+ void DestroyData();
+ void DestroyDescriptor();
+
+//Implementation
+public:
+ ~COleSafeArray();
+
+ // Cache info to make element access (operator []) faster
+ DWORD m_dwElementSize;
+ DWORD m_dwDims;
+};
+
+// COleSafeArray diagnostics and serialization
+#ifdef _DEBUG
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, COleSafeArray saSrc);
+#endif
+CArchive& AFXAPI operator<<(CArchive& ar, COleSafeArray saSrc);
+CArchive& AFXAPI operator>>(CArchive& ar, COleSafeArray& saSrc);
+
+/////////////////////////////////////////////////////////////////////////////
+// DDX_ functions for OLE controls on dialogs
+
+#ifndef _AFX_NO_OCC_SUPPORT
+
+void AFXAPI DDX_OCText(CDataExchange* pDX, int nIDC, DISPID dispid,
+ CString& value);
+void AFXAPI DDX_OCTextRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ CString& value);
+void AFXAPI DDX_OCBool(CDataExchange* pDX, int nIDC, DISPID dispid,
+ BOOL& value);
+void AFXAPI DDX_OCBoolRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ BOOL& value);
+void AFXAPI DDX_OCInt(CDataExchange* pDX, int nIDC, DISPID dispid,
+ int &value);
+void AFXAPI DDX_OCIntRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ int &value);
+void AFXAPI DDX_OCInt(CDataExchange* pDX, int nIDC, DISPID dispid,
+ long &value);
+void AFXAPI DDX_OCIntRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ long &value);
+void AFXAPI DDX_OCShort(CDataExchange* pDX, int nIDC, DISPID dispid,
+ short& value);
+void AFXAPI DDX_OCShortRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ short& value);
+void AFXAPI DDX_OCColor(CDataExchange* pDX, int nIDC, DISPID dispid,
+ OLE_COLOR& value);
+void AFXAPI DDX_OCColorRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ OLE_COLOR& value);
+void AFXAPI DDX_OCFloat(CDataExchange* pDX, int nIDC, DISPID dispid,
+ float& value);
+void AFXAPI DDX_OCFloatRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ float& value);
+void AFXAPI DDX_OCFloat(CDataExchange* pDX, int nIDC, DISPID dispid,
+ double& value);
+void AFXAPI DDX_OCFloatRO(CDataExchange* pDX, int nIDC, DISPID dispid,
+ double& value);
+
+#endif // !_AFX_NO_OCC_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// Function to enable containment of OLE controls
+
+#ifndef _AFX_NO_OCC_SUPPORT
+void AFX_CDECL AfxEnableControlContainer(COccManager* pOccManager=NULL);
+#else
+#define AfxEnableControlContainer()
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDISP_INLINE inline
+#include <afxole.inl>
+#undef _AFXDISP_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDISP_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdlgs.h b/public/sdk/inc/mfc42/afxdlgs.h
new file mode 100644
index 000000000..af0bfeab2
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdlgs.h
@@ -0,0 +1,650 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDLGS_H__
+#define __AFXDLGS_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifndef _INC_COMMDLG
+ #include <commdlg.h> // common dialog APIs
+#endif
+
+// Avoid mapping GetFileTitle to GetFileTitle[A/W]
+#ifdef GetFileTitle
+#undef GetFileTitle
+inline short APIENTRY GetFileTitle(LPCTSTR lpszFile, LPTSTR lpszTitle, WORD cbBuf)
+#ifdef UNICODE
+ { return ::GetFileTitleW(lpszFile, lpszTitle, cbBuf); }
+#else
+ { return ::GetFileTitleA(lpszFile, lpszTitle, cbBuf); }
+#endif
+#endif
+
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ #ifndef _RICHEDIT_
+ #include <richedit.h>
+ #endif
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLGS - MFC Standard dialogs
+
+// Classes declared in this file
+
+ // CDialog
+ class CCommonDialog; // implementation base class
+
+ // modeless dialogs
+ class CFindReplaceDialog; // Find/FindReplace dialog
+
+ // modal dialogs
+ class CFileDialog; // FileOpen/FileSaveAs dialogs
+ class CColorDialog; // Color picker dialog
+ class CFontDialog; // Font chooser dialog
+ class CPrintDialog; // Print/PrintSetup dialogs
+ class CPageSetupDialog; // Page Setup dialog
+
+ // CWnd
+ class CPropertySheet; // implements tabbed dialogs
+
+ // CDialog
+ class CPropertyPage; // Used with CPropertySheet for tabbed dialogs
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CCommonDialog - base class for all common dialogs
+
+class CCommonDialog : public CDialog
+{
+public:
+ CCommonDialog(CWnd* pParentWnd);
+
+// Implementation
+protected:
+ virtual void OnOK();
+ virtual void OnCancel();
+
+ //{{AFX_MSG(CCommonDialog)
+ afx_msg BOOL OnHelpInfo(HELPINFO*);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFileDialog - used for FileOpen... or FileSaveAs...
+
+class CFileDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFileDialog)
+
+public:
+// Attributes
+ OPENFILENAME m_ofn; // open file parameter block
+
+// Constructors
+ CFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
+ LPCTSTR lpszDefExt = NULL,
+ LPCTSTR lpszFileName = NULL,
+ DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
+ LPCTSTR lpszFilter = NULL,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // Helpers for parsing file name after successful return
+ // or during Overridable callbacks if OFN_EXPLORER is set
+ CString GetPathName() const; // return full path and filename
+ CString GetFileName() const; // return only filename
+ CString GetFileExt() const; // return only ext
+ CString GetFileTitle() const; // return file title
+ BOOL GetReadOnlyPref() const; // return TRUE if readonly checked
+
+ // Enumerating multiple file selections
+ POSITION GetStartPosition() const;
+ CString GetNextPathName(POSITION& pos) const;
+
+ // Helpers for custom templates
+ void SetTemplate(UINT nWin3ID, UINT nWin4ID);
+ void SetTemplate(LPCTSTR lpWin3ID, LPCTSTR lpWin4ID);
+
+#ifndef _MAC
+ // Other operations available while the dialog is visible
+ CString GetFolderPath() const; // return full path
+ void SetControlText(int nID, LPCSTR lpsz);
+ void HideControl(int nID);
+ void SetDefExt(LPCSTR lpsz);
+#endif
+
+// Overridable callbacks
+protected:
+ friend UINT CALLBACK _AfxCommDlgProc(HWND, UINT, WPARAM, LPARAM);
+ virtual UINT OnShareViolation(LPCTSTR lpszPathName);
+ virtual BOOL OnFileNameOK();
+ virtual void OnLBSelChangedNotify(UINT nIDBox, UINT iCurSel, UINT nCode);
+
+ // only called back if OFN_EXPLORER is set
+ virtual void OnInitDone();
+ virtual void OnFileNameChange();
+ virtual void OnFolderChange();
+ virtual void OnTypeChange();
+
+// Implementation
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ BOOL m_bOpenFileDialog; // TRUE for file open, FALSE for file save
+ CString m_strFilter; // filter string
+ // separate fields with '|', terminate with '||\0'
+ TCHAR m_szFileTitle[64]; // contains file title after return
+ TCHAR m_szFileName[_MAX_PATH]; // contains full path name after return
+
+ OPENFILENAME* m_pofnTemp;
+
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFontDialog - used to select a font
+
+class CFontDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFontDialog)
+
+public:
+// Attributes
+ // font choosing parameter block
+ CHOOSEFONT m_cf;
+
+// Constructors
+ CFontDialog(LPLOGFONT lplfInitial = NULL,
+ DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS,
+ CDC* pdcPrinter = NULL,
+ CWnd* pParentWnd = NULL);
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ CFontDialog(const CHARFORMAT& charformat,
+ DWORD dwFlags = CF_SCREENFONTS,
+ CDC* pdcPrinter = NULL,
+ CWnd* pParentWnd = NULL);
+#endif
+// Operations
+ virtual int DoModal();
+
+ // Get the selected font (works during DoModal displayed or after)
+ void GetCurrentFont(LPLOGFONT lplf);
+
+ // Helpers for parsing information after successful return
+ CString GetFaceName() const; // return the face name of the font
+ CString GetStyleName() const; // return the style name of the font
+ int GetSize() const; // return the pt size of the font
+ COLORREF GetColor() const; // return the color of the font
+ int GetWeight() const; // return the chosen font weight
+ BOOL IsStrikeOut() const; // return TRUE if strikeout
+ BOOL IsUnderline() const; // return TRUE if underline
+ BOOL IsBold() const; // return TRUE if bold font
+ BOOL IsItalic() const; // return TRUE if italic font
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ void GetCharFormat(CHARFORMAT& cf) const;
+#endif
+
+// Implementation
+ LOGFONT m_lf; // default LOGFONT to store the info
+#ifndef _AFX_NO_RICHEDIT_SUPPORT
+ DWORD FillInLogFont(const CHARFORMAT& cf);
+#endif
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szStyleName[64]; // contains style name after return
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CColorDialog - used to select a color
+
+class CColorDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CColorDialog)
+
+public:
+// Attributes
+ // color chooser parameter block
+ CHOOSECOLOR m_cc;
+
+// Constructors
+ CColorDialog(COLORREF clrInit = 0, DWORD dwFlags = 0,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // Set the current color while dialog is displayed
+ void SetCurrentColor(COLORREF clr);
+
+ // Helpers for parsing information after successful return
+ COLORREF GetColor() const;
+ static COLORREF* PASCAL GetSavedCustomColors();
+
+// Overridable callbacks
+protected:
+ friend UINT CALLBACK _AfxCommDlgProc(HWND, UINT, WPARAM, LPARAM);
+ virtual BOOL OnColorOK(); // validate color
+
+// Implementation
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ //{{AFX_MSG(CColorDialog)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// for backward compatibility clrSavedCustom is defined as GetSavedCustomColors
+#define clrSavedCustom GetSavedCustomColors()
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+// Page Setup dialog
+
+class CPageSetupDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CPageSetupDialog)
+
+public:
+// Attributes
+ PAGESETUPDLG m_psd;
+
+// Constructors
+ CPageSetupDialog(DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
+ CWnd* pParentWnd = NULL);
+
+// Attributes
+ LPDEVMODE GetDevMode() const; // return DEVMODE
+ CString GetDriverName() const; // return driver name
+ CString GetDeviceName() const; // return device name
+ CString GetPortName() const; // return output port name
+ HDC CreatePrinterDC();
+ CSize GetPaperSize() const;
+ void GetMargins(LPRECT lpRectMargins, LPRECT lpRectMinMargins) const;
+
+// Operations
+ virtual int DoModal();
+
+// Overridables
+ virtual UINT PreDrawPage(WORD wPaper, WORD wFlags, LPPAGESETUPDLG pPSD);
+ virtual UINT OnDrawPage(CDC* pDC, UINT nMessage, LPRECT lpRect);
+
+// Implementation
+protected:
+ static UINT CALLBACK PaintHookProc(HWND hWnd, UINT message, WPARAM wParam,
+ LPARAM lParam);
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+#endif //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// CPrintDialog - used for Print... and PrintSetup...
+
+class CPrintDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CPrintDialog)
+
+public:
+// Attributes
+ // print dialog parameter block (note this is a reference)
+ PRINTDLG& m_pd;
+
+// Constructors
+ CPrintDialog(BOOL bPrintSetupOnly,
+ // TRUE for Print Setup, FALSE for Print Dialog
+ DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS
+ | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ // GetDefaults will not display a dialog but will get
+ // device defaults
+ BOOL GetDefaults();
+
+ // Helpers for parsing information after successful return
+ int GetCopies() const; // num. copies requested
+ BOOL PrintCollate() const; // TRUE if collate checked
+ BOOL PrintSelection() const; // TRUE if printing selection
+ BOOL PrintAll() const; // TRUE if printing all pages
+ BOOL PrintRange() const; // TRUE if printing page range
+ int GetFromPage() const; // starting page if valid
+ int GetToPage() const; // starting page if valid
+ LPDEVMODE GetDevMode() const; // return DEVMODE
+ CString GetDriverName() const; // return driver name
+ CString GetDeviceName() const; // return device name
+ CString GetPortName() const; // return output port name
+ HDC GetPrinterDC() const; // return HDC (caller must delete)
+
+ // This helper creates a DC based on the DEVNAMES and DEVMODE structures.
+ // This DC is returned, but also stored in m_pd.hDC as though it had been
+ // returned by CommDlg. It is assumed that any previously obtained DC
+ // has been/will be deleted by the user. This may be
+ // used without ever invoking the print/print setup dialogs.
+
+ HDC CreatePrinterDC();
+
+// Implementation
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+private:
+ PRINTDLG m_pdActual; // the Print/Print Setup need to share this
+protected:
+ // The following handle the case of print setup... from the print dialog
+ CPrintDialog(PRINTDLG& pdInit);
+ virtual CPrintDialog* AttachOnSetup();
+
+ //{{AFX_MSG(CPrintDialog)
+ afx_msg void OnPrintSetup();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Find/FindReplace modeless dialogs
+
+class CFindReplaceDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(CFindReplaceDialog)
+
+public:
+// Attributes
+ FINDREPLACE m_fr;
+
+// Constructors
+ CFindReplaceDialog();
+ // Note: you must allocate these on the heap.
+ // If you do not, you must derive and override PostNcDestroy()
+
+ BOOL Create(BOOL bFindDialogOnly, // TRUE for Find, FALSE for FindReplace
+ LPCTSTR lpszFindWhat,
+ LPCTSTR lpszReplaceWith = NULL,
+ DWORD dwFlags = FR_DOWN,
+ CWnd* pParentWnd = NULL);
+
+ // find/replace parameter block
+ static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);
+
+// Operations
+ // Helpers for parsing information after successful return
+ CString GetReplaceString() const;// get replacement string
+ CString GetFindString() const; // get find string
+ BOOL SearchDown() const; // TRUE if search down, FALSE is up
+ BOOL FindNext() const; // TRUE if command is find next
+ BOOL MatchCase() const; // TRUE if matching case
+ BOOL MatchWholeWord() const; // TRUE if matching whole words only
+ BOOL ReplaceCurrent() const; // TRUE if replacing current string
+ BOOL ReplaceAll() const; // TRUE if replacing all occurrences
+ BOOL IsTerminating() const; // TRUE if terminating dialog
+
+// Implementation
+protected:
+ virtual void PostNcDestroy();
+
+#ifdef _DEBUG
+public:
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szFindWhat[128];
+ TCHAR m_szReplaceWith[128];
+};
+
+////////////////////////////////////////////////////////////////////////////
+// CPropertyPage -- one page of a tabbed dialog
+
+class CPropertyPage : public CDialog
+{
+ DECLARE_DYNAMIC(CPropertyPage)
+
+// Construction
+public:
+ CPropertyPage(UINT nIDTemplate, UINT nIDCaption = 0);
+ CPropertyPage(LPCTSTR lpszTemplateName, UINT nIDCaption = 0);
+ CPropertyPage();
+ void Construct(UINT nIDTemplate, UINT nIDCaption = 0);
+ void Construct(LPCTSTR lpszTemplateName, UINT nIDCaption = 0);
+
+// Attributes
+ PROPSHEETPAGE m_psp;
+
+// Operations
+ void CancelToClose();
+ void SetModified(BOOL bChanged = TRUE);
+ LRESULT QuerySiblings(WPARAM wParam, LPARAM lParam);
+
+// Overridables
+public:
+ virtual BOOL OnApply();
+ virtual void OnReset();
+ virtual void OnOK();
+ virtual void OnCancel();
+ virtual BOOL OnSetActive();
+ virtual BOOL OnKillActive();
+ virtual BOOL OnQueryCancel();
+
+ virtual LRESULT OnWizardBack();
+ virtual LRESULT OnWizardNext();
+ virtual BOOL OnWizardFinish();
+
+// Implementation
+public:
+ virtual ~CPropertyPage();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ void EndDialog(int nEndID); // incorrect to call and will assert
+#endif
+
+protected:
+ // private implementation data
+ CString m_strCaption;
+ BOOL m_bFirstSetActive;
+
+ // implementation helpers
+ void CommonConstruct(LPCTSTR lpszTemplateName, UINT nIDCaption);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+ virtual BOOL PreTranslateMessage(MSG*);
+ LRESULT MapWizardResult(LRESULT lToMap);
+
+
+ void PreProcessPageTemplate(PROPSHEETPAGE& psp, BOOL bWizard);
+#ifndef _AFX_NO_OCC_SUPPORT
+ void Cleanup();
+ const DLGTEMPLATE* InitDialogInfo(const DLGTEMPLATE* pTemplate);
+#endif
+
+ // Generated message map functions
+ //{{AFX_MSG(CPropertyPage)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CPropertySheet;
+};
+
+////////////////////////////////////////////////////////////////////////////
+// CPropertySheet -- a tabbed "dialog" (really a popup-window)
+
+class CTabCtrl; // forward reference (see afxcmn.h)
+
+class CPropertySheet : public CWnd
+{
+ DECLARE_DYNAMIC(CPropertySheet)
+
+// Construction
+public:
+ CPropertySheet();
+ CPropertySheet(UINT nIDCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+ CPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+ void Construct(UINT nIDCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+ void Construct(LPCTSTR pszCaption, CWnd* pParentWnd = NULL,
+ UINT iSelectPage = 0);
+
+ // for modeless creation
+ BOOL Create(CWnd* pParentWnd = NULL, DWORD dwStyle = (DWORD)-1,
+ DWORD dwExStyle = 0);
+ // the default style, expressed by passing -1 as dwStyle, is actually:
+ // WS_SYSMENU | WS_POPUP | WS_CAPTION | DS_MODALFRAME | DS_CONTEXT_HELP | WS_VISIBLE
+
+// Attributes
+public:
+ PROPSHEETHEADER m_psh;
+
+ int GetPageCount() const;
+ CPropertyPage* GetActivePage() const;
+ int GetActiveIndex() const;
+ CPropertyPage* GetPage(int nPage) const;
+ int GetPageIndex(CPropertyPage* pPage);
+ BOOL SetActivePage(int nPage);
+ BOOL SetActivePage(CPropertyPage* pPage);
+ void SetTitle(LPCTSTR lpszText, UINT nStyle = 0);
+ CTabCtrl* GetTabControl() const;
+
+ void SetWizardMode();
+ void SetFinishText(LPCTSTR lpszText);
+ void SetWizardButtons(DWORD dwFlags);
+
+// Operations
+public:
+ virtual int DoModal();
+ void AddPage(CPropertyPage* pPage);
+ void RemovePage(CPropertyPage* pPage);
+ void RemovePage(int nPage);
+ void EndDialog(int nEndID); // used to terminate a modal dialog
+ BOOL PressButton(int nButton);
+
+// Implementation
+public:
+ virtual ~CPropertySheet();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ void CommonConstruct(CWnd* pParentWnd, UINT iSelectPage);
+ void EnableStackedTabs(BOOL bStacked);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void BuildPropPageArray();
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnInitDialog();
+ virtual BOOL ContinueModal();
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+
+protected:
+ CPtrArray m_pages; // array of CPropertyPage pointers
+ CString m_strCaption; // caption of the pseudo-dialog
+ CWnd* m_pParentWnd; // parent window of property sheet
+ BOOL m_bStacked; // EnableStackedTabs sets this
+ BOOL m_bModeless; // TRUE when Create called instead of DoModal
+
+ // Generated message map functions
+ //{{AFX_MSG(CPropertySheet)
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg LRESULT OnCommandHelp(WPARAM, LPARAM);
+ afx_msg void OnClose();
+ afx_msg void OnSysCommand(UINT nID, LPARAM);
+ afx_msg LRESULT OnSetDefID(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CPropertyPage;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXDLGS_INLINE inline
+#include <afxdlgs.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDLGS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdlgs.inl b/public/sdk/inc/mfc42/afxdlgs.inl
new file mode 100644
index 000000000..e390f474a
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdlgs.inl
@@ -0,0 +1,100 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXDLGS.H
+
+#ifdef _AFXDLGS_INLINE
+
+_AFXDLGS_INLINE CCommonDialog::CCommonDialog(CWnd* pParentWnd)
+ : CDialog((UINT)0, pParentWnd) { }
+
+_AFXDLGS_INLINE BOOL CFileDialog::GetReadOnlyPref() const
+ { return m_ofn.Flags & OFN_READONLY ? TRUE : FALSE; }
+_AFXDLGS_INLINE void CFileDialog::SetTemplate(UINT nWin3ID, UINT nWin4ID)
+ { SetTemplate(MAKEINTRESOURCE(nWin3ID), MAKEINTRESOURCE(nWin4ID)); }
+_AFXDLGS_INLINE POSITION CFileDialog::GetStartPosition() const
+ { return (POSITION)m_ofn.lpstrFile; }
+_AFXDLGS_INLINE CString CFontDialog::GetFaceName() const
+ { return (LPCTSTR)m_cf.lpLogFont->lfFaceName; }
+_AFXDLGS_INLINE CString CFontDialog::GetStyleName() const
+ { return m_cf.lpszStyle; }
+_AFXDLGS_INLINE int CFontDialog::GetSize() const
+ { return m_cf.iPointSize; }
+_AFXDLGS_INLINE int CFontDialog::GetWeight() const
+ { return (int)m_cf.lpLogFont->lfWeight; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsItalic() const
+ { return m_cf.lpLogFont->lfItalic ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsStrikeOut() const
+ { return m_cf.lpLogFont->lfStrikeOut ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsBold() const
+ { return m_cf.lpLogFont->lfWeight == FW_BOLD ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFontDialog::IsUnderline() const
+ { return m_cf.lpLogFont->lfUnderline ? TRUE : FALSE; }
+_AFXDLGS_INLINE COLORREF CFontDialog::GetColor() const
+ { return m_cf.rgbColors; }
+_AFXDLGS_INLINE COLORREF CColorDialog::GetColor() const
+ { return m_cc.rgbResult; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintSelection() const
+ { return m_pd.Flags & PD_SELECTION ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintRange() const
+ { return m_pd.Flags & PD_PAGENUMS ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintAll() const
+ { return !PrintRange() && !PrintSelection() ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CPrintDialog::PrintCollate() const
+ { return m_pd.Flags & PD_COLLATE ? TRUE : FALSE; }
+_AFXDLGS_INLINE int CPrintDialog::GetFromPage() const
+ { return (PrintRange() ? m_pd.nFromPage :-1); }
+_AFXDLGS_INLINE int CPrintDialog::GetToPage() const
+ { return (PrintRange() ? m_pd.nToPage :-1); }
+_AFXDLGS_INLINE HDC CPrintDialog::GetPrinterDC() const
+ { ASSERT_VALID(this);
+ ASSERT(m_pd.Flags & PD_RETURNDC);
+ return m_pd.hDC; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::IsTerminating() const
+ { return m_fr.Flags & FR_DIALOGTERM ? TRUE : FALSE ; }
+_AFXDLGS_INLINE CString CFindReplaceDialog::GetReplaceString() const
+ { return m_fr.lpstrReplaceWith; }
+_AFXDLGS_INLINE CString CFindReplaceDialog::GetFindString() const
+ { return m_fr.lpstrFindWhat; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::SearchDown() const
+ { return m_fr.Flags & FR_DOWN ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::FindNext() const
+ { return m_fr.Flags & FR_FINDNEXT ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::MatchCase() const
+ { return m_fr.Flags & FR_MATCHCASE ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::MatchWholeWord() const
+ { return m_fr.Flags & FR_WHOLEWORD ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::ReplaceCurrent() const
+ { return m_fr. Flags & FR_REPLACE ? TRUE : FALSE; }
+_AFXDLGS_INLINE BOOL CFindReplaceDialog::ReplaceAll() const
+ { return m_fr.Flags & FR_REPLACEALL ? TRUE : FALSE; }
+
+_AFXDLGS_INLINE CPropertyPage* CPropertySheet::GetPage(int nPage) const
+ { return STATIC_DOWNCAST(CPropertyPage, (CObject*)m_pages[nPage]); }
+_AFXDLGS_INLINE void CPropertySheet::SetWizardMode()
+ { m_psh.dwFlags |= PSH_WIZARD; }
+_AFXDLGS_INLINE void CPropertySheet::SetFinishText(LPCTSTR lpszText)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PSM_SETFINISHTEXT, 0, (LPARAM)lpszText); }
+_AFXDLGS_INLINE void CPropertySheet::SetWizardButtons(DWORD dwFlags)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PSM_SETWIZBUTTONS, 0, dwFlags); }
+_AFXDLGS_INLINE CTabCtrl* CPropertySheet::GetTabControl() const
+ { ASSERT(::IsWindow(m_hWnd)); return (CTabCtrl*)CWnd::FromHandle(
+ (HWND)::SendMessage(m_hWnd, PSM_GETTABCONTROL, 0, 0)); }
+_AFXDLGS_INLINE BOOL CPropertySheet::PressButton(int nButton)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, PSM_PRESSBUTTON, nButton, 0); }
+
+#ifndef _MAC
+_AFXDLGS_INLINE CSize CPageSetupDialog::GetPaperSize() const
+ { return CSize(m_psd.ptPaperSize.x, m_psd.ptPaperSize.y); }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXDLGS_INLINE
diff --git a/public/sdk/inc/mfc42/afxdll_.h b/public/sdk/inc/mfc42/afxdll_.h
new file mode 100644
index 000000000..53292bc40
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdll_.h
@@ -0,0 +1,105 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxdll_.h - extensions to AFXWIN.H used for the 'AFXDLL' version
+// This file contains MFC library implementation details as well
+// as APIs for writing MFC Extension DLLs.
+// Please refer to Technical Note 033 (TN033) for more details.
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _AFXDLL
+ #error file must be compiled with _AFXDLL
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFX_EXTENSION_MODULE - special struct used during DLL initialization
+
+struct AFX_EXTENSION_MODULE
+{
+ BOOL bInitialized;
+ HMODULE hModule;
+ HMODULE hResource;
+ CRuntimeClass* pFirstSharedClass;
+ COleObjectFactory* pFirstSharedFactory;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDynLinkLibrary - for implementation of MFC Extension DLLs
+
+class COleObjectFactory;
+
+class CDynLinkLibrary : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDynLinkLibrary)
+public:
+
+// Constructor
+ CDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem = FALSE);
+
+// Attributes
+ HMODULE m_hModule;
+ HMODULE m_hResource; // for shared resources
+ CTypedSimpleList<CRuntimeClass*> m_classList;
+#ifndef _AFX_NO_OLE_SUPPORT
+ CTypedSimpleList<COleObjectFactory*> m_factoryList;
+#endif
+ BOOL m_bSystem; // TRUE only for MFC DLLs
+
+// Implementation
+public:
+ CDynLinkLibrary* m_pNextDLL; // simple singly linked list
+ virtual ~CDynLinkLibrary();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif //_DEBUG
+};
+
+// call in every DLL_PROCESS_ATTACH
+BOOL AFXAPI AfxInitExtensionModule(AFX_EXTENSION_MODULE&, HMODULE hMod);
+// call on every DLL_PROCESS_DETACH
+void AFXAPI AfxTermExtensionModule(AFX_EXTENSION_MODULE&, BOOL bAll = FALSE);
+
+// special function(s) for stand-alone DLLs (and controls)
+void AFXAPI AfxCoreInitModule();
+#if (defined(_DEBUG) || defined(_MAC)) && !defined(_AFX_MONOLITHIC)
+void AFXAPI AfxOleInitModule();
+void AFXAPI AfxNetInitModule();
+void AFXAPI AfxDbInitModule();
+#else
+#define AfxOleInitModule()
+#define AfxNetInitModule()
+#define AfxDbInitModule()
+#endif
+
+// special functions for loading and freeing MFC extension DLLs
+// (necessary if your app is multithreaded and loads extension
+// DLLs dynamically)
+HINSTANCE AFXAPI AfxLoadLibrary(LPCTSTR lpszModuleName);
+BOOL AFXAPI AfxFreeLibrary(HINSTANCE hInstLib);
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdllx.h b/public/sdk/inc/mfc42/afxdllx.h
new file mode 100644
index 000000000..01eeba454
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdllx.h
@@ -0,0 +1,68 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDLLX.H: Extra header for building an MFC Extension DLL
+//
+// This file is really a source file that you should include in the
+// main source file of your DLL. It must only be included once, and
+// not multiple times (you will get linker errors if it is included
+// multiple times). If you do not use _AFXEXT, it is not required
+// but you may want the feature it provides.
+//
+// Previous versions of 32-bit MFC did not require this file. This version
+// requires this file to support dynamic loading of extension DLLs. In
+// other words, if your application does LoadLibrary on any extension
+// DLL (instead of binding to the DLL at link time), this file is
+// required.
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+// The following symbol used to force inclusion of this module for _AFXEXT
+#if defined(_X86_) || defined(_MAC)
+extern "C" { int _afxForceEXTDLL; }
+#else
+extern "C" { int __afxForceEXTDLL; }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// RawDllMain that saves current app class list and factory list
+
+extern "C" BOOL WINAPI ExtRawDllMain(HINSTANCE, DWORD dwReason, LPVOID);
+extern "C" BOOL (WINAPI* _pRawDllMain)(HINSTANCE, DWORD, LPVOID) = &ExtRawDllMain;
+
+extern "C"
+BOOL WINAPI ExtRawDllMain(HINSTANCE, DWORD dwReason, LPVOID)
+{
+ if (dwReason == DLL_PROCESS_ATTACH)
+ {
+ // save critical data pointers before running the constructors
+ AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
+ pModuleState->m_pClassInit = pModuleState->m_classList;
+ pModuleState->m_pFactoryInit = pModuleState->m_factoryList;
+ pModuleState->m_classList.m_pHead = NULL;
+ pModuleState->m_factoryList.m_pHead = NULL;
+ }
+ return TRUE; // ok
+}
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxdocob.h b/public/sdk/inc/mfc42/afxdocob.h
new file mode 100644
index 000000000..d0ba95726
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxdocob.h
@@ -0,0 +1,391 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1996 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDOCOB_H__
+#define __AFXDOCOB_H__
+
+//WINBUG: these error codes are needed by MFC's IPrint implementation
+// but aren't available in the SDK headers. Someday, these #define's
+// can be removed.
+
+#ifndef PRINT_E_CANCELLED
+#define PRINT_E_CANCELLED 0x80040160L
+#endif
+#ifndef PRINT_E_NOSUCHPAGE
+#define PRINT_E_NOSUCHPAGE 0x80040161L
+#endif
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+
+#ifndef __docobj_h__
+ #include <docobj.h> // defines Document Object interfaces
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXDOCOB.H - MFC OLE Document Object support
+
+//CCmdUI
+class COleCmdUI;
+
+//CCmdTarg
+class CDocObjectServer;
+
+//COleIPFrameWnd
+class COleDocIPFrameWnd;
+
+
+/////////////////////////////////////////////////////////////////////////////
+// COleCmdUI
+
+class COleCmdUI : public CCmdUI
+{
+public:
+ COleCmdUI(OLECMD* rgCmds, ULONG cCmds, const GUID* m_pGroup);
+ virtual void Enable(BOOL bOn);
+ virtual void SetCheck(int nCheck);
+ virtual void SetText(LPCTSTR lpszText);
+ virtual BOOL DoUpdate(CCmdTarget* pTarget, BOOL bDisableIfNoHandler);
+ DWORD m_nCmdTextFlag;
+
+protected:
+ OLECMD* m_rgCmds;
+ const GUID* m_pguidCmdGroup;
+public:
+ CString m_strText;
+
+ friend class CCmdTarget;
+};
+
+
+#define ON_OLECMD(pguid, olecmdid, id) \
+ { pguid, (ULONG)olecmdid, (UINT)id },
+
+#define ON_OLECMD_OPEN() \
+ ON_OLECMD(NULL, OLECMDID_OPEN, ID_FILE_OPEN)
+
+#define ON_OLECMD_NEW() \
+ ON_OLECMD(NULL, OLECMDID_NEW, ID_FILE_NEW)
+
+#define ON_OLECMD_SAVE() \
+ ON_OLECMD(NULL, OLECMDID_SAVE, ID_FILE_SAVE)
+
+#define ON_OLECMD_SAVE_AS() \
+ ON_OLECMD(NULL, OLECMDID_SAVEAS, ID_FILE_SAVE_AS)
+
+#define ON_OLECMD_SAVE_COPY_AS() \
+ ON_OLECMD(NULL, OLECMDID_SAVECOPYAS, ID_FILE_SAVE_COPY_AS)
+
+#define ON_OLECMD_PRINT() \
+ ON_OLECMD(NULL, OLECMDID_PRINT, ID_FILE_PRINT)
+
+#define ON_OLECMD_PRINTPREVIEW() \
+ ON_OLECMD(NULL, OLECMDID_PRINTPREVIEW, ID_FILE_PRINT_PREVIEW)
+
+#define ON_OLECMD_PAGESETUP() \
+ ON_OLECMD(NULL, OLECMDID_PAGESETUP, ID_FILE_PAGE_SETUP)
+
+#define ON_OLECMD_CUT() \
+ ON_OLECMD(NULL, OLECMDID_CUT, ID_EDIT_CUT)
+
+#define ON_OLECMD_COPY() \
+ ON_OLECMD(NULL, OLECMDID_COPY, ID_EDIT_COPY)
+
+#define ON_OLECMD_PASTE() \
+ ON_OLECMD(NULL, OLECMDID_PASTE, ID_EDIT_PASTE)
+
+#define ON_OLECMD_PASTESPECIAL() \
+ ON_OLECMD(NULL, OLECMDID_PASTESPECIAL, ID_EDIT_PASTE_SPECIAL)
+
+#define ON_OLECMD_UNDO() \
+ ON_OLECMD(NULL, OLECMDID_UNDO, ID_EDIT_UNDO)
+
+#define ON_OLECMD_REDO() \
+ ON_OLECMD(NULL, OLECMDID_REDO, ID_EDIT_REDO)
+
+#define ON_OLECMD_SELECTALL() \
+ ON_OLECMD(NULL, OLECMDID_SELECTALL, ID_EDIT_SELECT_ALL)
+
+#define ON_OLECMD_CLEARSELECTION() \
+ ON_OLECMD(NULL, OLECMDID_CLEARSELECTION, ID_EDIT_CLEAR)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CDocObjectServer class
+
+class CDocObjectServer : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDocObjectServer)
+
+// Constructors
+public:
+ CDocObjectServer(COleServerDoc* pOwner,
+ LPOLEDOCUMENTSITE pDocSite = NULL);
+
+// Attributes
+public:
+
+// Operations
+public:
+ void ActivateDocObject();
+
+// Overridables
+protected:
+ // Document Overridables
+
+ // View Overridables
+ virtual void OnApplyViewState(CArchive& ar);
+ virtual void OnSaveViewState(CArchive& ar);
+ virtual HRESULT OnActivateView();
+
+// Implementation
+public:
+ virtual ~CDocObjectServer();
+ void ReleaseDocSite();
+ void SetDocSite(LPOLEDOCUMENTSITE pNewSite);
+ COleDocIPFrameWnd* GetControllingFrame() const;
+protected:
+ STDMETHODIMP OnExecOleCmd(const GUID* pguidCmdGroup,
+ DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG* pvarargIn,
+ VARIANTARG* pvarargOut);
+ BOOL DoPreparePrinting(CView* pView, CPrintInfo* printInfo);
+ void DoPrepareDC(CView* pView, CDC* pdcPrint, CPrintInfo* pprintInfo);
+ void DoPrint(CView* pView, CDC* pdcPrint, CPrintInfo* pprintInfo);
+ void DoBeginPrinting(CView* pView, CDC* pDC, CPrintInfo* pprintInfo);
+ void DoEndPrinting(CView* pView, CDC* pDC, CPrintInfo* pprintInfo);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // Overrides
+protected:
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CDocObjectServer)
+ public:
+ virtual void OnCloseDocument();
+ //}}AFX_VIRTUAL
+
+ // Implementation Data
+protected:
+ // Document Data
+ LPOLEDOCUMENTSITE m_pDocSite;
+ COleServerDoc* m_pOwner;
+
+ // Print Data
+ LONG m_nFirstPage;
+ LPCONTINUECALLBACK m_pContinueCallback;
+
+ // View Data
+ LPOLEINPLACESITE m_pViewSite;
+
+ // Implementation Helpers
+protected:
+ void OnSetItemRects(LPRECT lprcPosRect, LPRECT lprcClipRect);
+// LPUNKNOWN GetInterfaceHook(const void* iid);
+
+ // Generated message map functions
+protected:
+ //{{AFX_MSG(CDocObjectServer)
+ // NOTE - the ClassWizard will add and remove member functions here.
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(CDocObjServerDoc, DocOleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(CLSID*);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ BEGIN_INTERFACE_PART(OleDocument, IOleDocument)
+ INIT_INTERFACE_PART(CDocObjectServer, OleDocument)
+ STDMETHOD(CreateView)(LPOLEINPLACESITE, LPSTREAM, DWORD, LPOLEDOCUMENTVIEW*);
+ STDMETHOD(GetDocMiscStatus)(LPDWORD);
+ STDMETHOD(EnumViews)(LPENUMOLEDOCUMENTVIEWS*, LPOLEDOCUMENTVIEW*);
+ END_INTERFACE_PART(OleDocument)
+
+ BEGIN_INTERFACE_PART(OleDocumentView, IOleDocumentView)
+ INIT_INTERFACE_PART(CDocObjectServer, OleDocumentView)
+ STDMETHOD(SetInPlaceSite)(LPOLEINPLACESITE);
+ STDMETHOD(GetInPlaceSite)(LPOLEINPLACESITE*);
+ STDMETHOD(GetDocument)(LPUNKNOWN*);
+ STDMETHOD(SetRect)(LPRECT);
+ STDMETHOD(GetRect)(LPRECT);
+ STDMETHOD(SetRectComplex)(LPRECT, LPRECT, LPRECT, LPRECT);
+ STDMETHOD(Show)(BOOL);
+ STDMETHOD(UIActivate)(BOOL);
+ STDMETHOD(Open)();
+ STDMETHOD(CloseView)(DWORD);
+ STDMETHOD(SaveViewState)(LPSTREAM);
+ STDMETHOD(ApplyViewState)(LPSTREAM);
+ STDMETHOD(Clone)(LPOLEINPLACESITE, LPOLEDOCUMENTVIEW*);
+ END_INTERFACE_PART(OleDocumentView)
+
+ BEGIN_INTERFACE_PART(OleCommandTarget, IOleCommandTarget)
+ INIT_INTERFACE_PART(CDocObjectServer, OleCommandTarget)
+ STDMETHOD(QueryStatus)(const GUID*, ULONG, OLECMD[], OLECMDTEXT*);
+ STDMETHOD(Exec)(const GUID*, DWORD, DWORD, VARIANTARG*, VARIANTARG*);
+ END_INTERFACE_PART(OleCommandTarget)
+
+ BEGIN_INTERFACE_PART(Print, IPrint)
+ INIT_INTERFACE_PART(COleServerDoc, Print)
+ STDMETHOD(SetInitialPageNum)(LONG);
+ STDMETHOD(GetPageInfo)(LPLONG, LPLONG);
+ STDMETHOD(Print)(DWORD, DVTARGETDEVICE**, PAGESET**, LPSTGMEDIUM,
+ LPCONTINUECALLBACK, LONG, LPLONG, LPLONG);
+ END_INTERFACE_PART(Print)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDocIPFrameWnd class
+
+class COleDocIPFrameWnd : public COleIPFrameWnd
+{
+ DECLARE_DYNCREATE(COleDocIPFrameWnd)
+
+// Constructors
+public:
+ COleDocIPFrameWnd();
+
+// Attributes
+public:
+
+// Operations
+public:
+
+// Overridables
+protected:
+
+// Implementation
+public:
+ virtual ~COleDocIPFrameWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // Overrides
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(COleDocIPFrameWnd)
+ //}}AFX_VIRTUAL
+protected:
+ virtual void OnRequestPositionChange(LPCRECT lpRect);
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+
+ // Menu Merging support
+ HMENU m_hMenuHelpPopup;
+ virtual BOOL BuildSharedMenu();
+ virtual void DestroySharedMenu();
+
+ // Generated message map functions
+ //{{AFX_MSG(COleDocIPFrameWnd)
+ // NOTE - the ClassWizard will add and remove member functions here.
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+
+class CDocObjectServerItem : public COleServerItem
+{
+ DECLARE_DYNAMIC(CDocObjectServerItem)
+
+// Constructors
+protected:
+ CDocObjectServerItem(COleServerDoc* pServerDoc, BOOL bAutoDelete);
+
+// Attributes
+public:
+ COleServerDoc* GetDocument() const
+ { return (COleServerDoc*) COleServerItem::GetDocument(); }
+
+// Overridables
+public:
+
+// Implementation
+public:
+ virtual ~CDocObjectServerItem();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // Overrides
+protected:
+ virtual void OnDoVerb(LONG iVerb);
+ virtual void OnHide();
+ virtual void OnOpen();
+ virtual void OnShow();
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CDocObjectServerItem)
+ //}}AFX_VIRTUAL
+
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXDOCOB_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxext.h b/public/sdk/inc/mfc42/afxext.h
new file mode 100644
index 000000000..11f7472ce
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxext.h
@@ -0,0 +1,1048 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXEXT_H__
+#define __AFXEXT_H__
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXEXT - MFC Advanced Extensions and Advanced Customizable classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CButton
+ class CBitmapButton; // Bitmap button (self-draw)
+
+ class CControlBar; // control bar
+ class CStatusBar; // status bar
+ class CToolBar; // toolbar
+ class CDialogBar; // dialog as control bar
+
+ class CSplitterWnd; // splitter manager
+
+ //CView
+ //CScrollView
+ class CFormView; // view with a dialog template
+ class CEditView; // simple text editor view
+
+ //CDC
+ class CMetaFileDC; // a metafile with proxy
+
+class CRectTracker; // tracker for rectangle objects
+
+// information structures
+struct CPrintInfo; // Printing context
+struct CPrintPreviewState; // Print Preview context/state
+struct CCreateContext; // Creation context
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Simple bitmap button
+
+// CBitmapButton - push-button with 1->4 bitmap images
+class CBitmapButton : public CButton
+{
+ DECLARE_DYNAMIC(CBitmapButton)
+public:
+// Construction
+ CBitmapButton();
+
+ BOOL LoadBitmaps(LPCTSTR lpszBitmapResource,
+ LPCTSTR lpszBitmapResourceSel = NULL,
+ LPCTSTR lpszBitmapResourceFocus = NULL,
+ LPCTSTR lpszBitmapResourceDisabled = NULL);
+ BOOL LoadBitmaps(UINT nIDBitmapResource,
+ UINT nIDBitmapResourceSel = 0,
+ UINT nIDBitmapResourceFocus = 0,
+ UINT nIDBitmapResourceDisabled = 0);
+ BOOL AutoLoad(UINT nID, CWnd* pParent);
+
+// Operations
+ void SizeToContent();
+
+// Implementation:
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+protected:
+ // all bitmaps must be the same size
+ CBitmap m_bitmap; // normal image (REQUIRED)
+ CBitmap m_bitmapSel; // selected image (OPTIONAL)
+ CBitmap m_bitmapFocus; // focused but not selected (OPTIONAL)
+ CBitmap m_bitmapDisabled; // disabled bitmap (OPTIONAL)
+
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Control Bars
+
+// forward declarations (private to implementation)
+class CDockBar;
+class CDockContext;
+class CControlBarInfo;
+struct AFX_SIZEPARENTPARAMS;
+
+// Layout Modes for CalcDynamicLayout
+#define LM_STRETCH 0x01 // same meaning as bStretch in CalcFixedLayout. If set, ignores nLength
+ // and returns dimensions based on LM_HORZ state, otherwise LM_HORZ is used
+ // to determine if nLength is the desired horizontal or vertical length
+ // and dimensions are returned based on nLength
+#define LM_HORZ 0x02 // same as bHorz in CalcFixedLayout
+#define LM_MRUWIDTH 0x04 // Most Recently Used Dynamic Width
+#define LM_HORZDOCK 0x08 // Horizontal Docked Dimensions
+#define LM_VERTDOCK 0x10 // Vertical Docked Dimensions
+#define LM_LENGTHY 0x20 // Set if nLength is a Height instead of a Width
+#define LM_COMMIT 0x40 // Remember MRUWidth
+
+class CControlBar : public CWnd
+{
+ DECLARE_DYNAMIC(CControlBar)
+// Construction
+protected:
+ CControlBar();
+
+// Attributes
+public:
+ int GetCount() const;
+
+ // for styles specific to CControlBar
+ DWORD GetBarStyle();
+ void SetBarStyle(DWORD dwStyle);
+
+ BOOL m_bAutoDelete;
+
+ CFrameWnd* GetDockingFrame() const;
+ BOOL IsFloating() const;
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual CSize CalcDynamicLayout(int nLength, DWORD nMode);
+
+// Operations
+ void EnableDocking(DWORD dwDockStyle);
+
+// Overridables
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) = 0;
+
+// Implementation
+public:
+ virtual ~CControlBar();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void DelayShow(BOOL bShow);
+ virtual BOOL IsVisible() const;
+ virtual DWORD RecalcDelayShow(AFX_SIZEPARENTPARAMS* lpLayout);
+
+ virtual BOOL IsDockBar() const;
+ virtual BOOL DestroyWindow();
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+ // info about bar (for status bar and toolbar)
+ int m_cxLeftBorder, m_cxRightBorder;
+ int m_cyTopBorder, m_cyBottomBorder;
+ int m_cxDefaultGap; // default gap value
+ UINT m_nMRUWidth; // For dynamic resizing.
+#ifdef _MAC
+ BOOL m_bMonochrome; // whether to draw in monochrome or color
+#endif
+
+ // array of elements
+ int m_nCount;
+ void* m_pData; // m_nCount elements - type depends on derived class
+
+ // support for delayed hide/show
+ enum StateFlags
+ { delayHide = 1, delayShow = 2, tempHide = 4, statusSet = 8 };
+ UINT m_nStateFlags;
+
+ // support for docking
+ DWORD m_dwStyle; // creation style (used for layout)
+ DWORD m_dwDockStyle;// indicates how bar can be docked
+ CFrameWnd* m_pDockSite; // current dock site, if dockable
+ CDockBar* m_pDockBar; // current dock bar, if dockable
+ CDockContext* m_pDockContext; // used during dragging
+
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual void PostNcDestroy();
+
+ virtual void DoPaint(CDC* pDC);
+ void DrawBorders(CDC* pDC, CRect& rect);
+
+ // implementation helpers
+ virtual LRESULT WindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ void CalcInsideRect(CRect& rect, BOOL bHorz) const; // adjusts borders etc
+ BOOL AllocElements(int nElements, int cbElement);
+ virtual BOOL SetStatusText(int nHit);
+ void ResetTimer(UINT nEvent, UINT nTime);
+ void EraseNonClient();
+
+#ifdef _MAC
+ void OnReposition();
+ virtual BOOL CheckMonochrome();
+#endif
+ void GetBarInfo(CControlBarInfo* pInfo);
+ void SetBarInfo(CControlBarInfo* pInfo, CFrameWnd* pFrameWnd);
+
+ //{{AFX_MSG(CControlBar)
+ afx_msg void OnTimer(UINT nIDEvent);
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnDestroy();
+ afx_msg void OnPaint();
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnInitialUpdate();
+ afx_msg LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint pt );
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT nMsg);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg LRESULT OnMacintosh(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnSysColorChange();
+ afx_msg void OnMove(int x, int y);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+#endif
+ DECLARE_MESSAGE_MAP()
+
+ friend class CFrameWnd;
+ friend class CDockBar;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CStatusBar control
+
+class CStatusBarCtrl; // forward reference (see afxcmn.h for definition)
+struct AFX_STATUSPANE; // private to implementation
+
+class CStatusBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CStatusBar)
+
+// Construction
+public:
+ CStatusBar();
+ BOOL Create(CWnd* pParentWnd,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
+ UINT nID = AFX_IDW_STATUS_BAR);
+ BOOL SetIndicators(const UINT* lpIDArray, int nIDCount);
+
+// Attributes
+public:
+ // standard control bar things
+ int CommandToIndex(UINT nIDFind) const;
+ UINT GetItemID(int nIndex) const;
+ void GetItemRect(int nIndex, LPRECT lpRect) const;
+
+ // specific to CStatusBar
+ void GetPaneText(int nIndex, CString& rString) const;
+ CString GetPaneText(int nIndex) const;
+ BOOL SetPaneText(int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE);
+ void GetPaneInfo(int nIndex, UINT& nID, UINT& nStyle, int& cxWidth) const;
+ void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth);
+ UINT GetPaneStyle(int nIndex) const;
+ void SetPaneStyle(int nIndex, UINT nStyle);
+
+ // for direct access to the underlying common control
+ CStatusBarCtrl& GetStatusBarCtrl() const;
+
+// Overridables
+ virtual void DrawItem(LPDRAWITEMSTRUCT);
+
+// Implementation
+public:
+ virtual ~CStatusBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ BOOL PreCreateWindow(CREATESTRUCT& cs);
+ BOOL AllocElements(int nElements, int cbElement);
+ void CalcInsideRect(CRect& rect, BOOL bHorz) const;
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ void EnableDocking(DWORD dwDockStyle);
+#endif
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+ int m_nMinHeight;
+
+ AFX_STATUSPANE* _GetPanePtr(int nIndex) const;
+ void UpdateAllPanes(BOOL bUpdateRects, BOOL bUpdateText);
+ virtual BOOL OnChildNotify(UINT message, WPARAM, LPARAM, LRESULT*);
+
+ //{{AFX_MSG(CStatusBar)
+ afx_msg UINT OnNcHitTest(CPoint);
+ afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*);
+ afx_msg void OnNcPaint();
+ afx_msg void OnPaint();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetMinHeight(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// Styles for status bar panes
+#define SBPS_NORMAL 0x0000
+#define SBPS_NOBORDERS SBT_NOBORDERS
+#define SBPS_POPOUT SBT_POPOUT
+#define SBPS_OWNERDRAW SBT_OWNERDRAW
+#define SBPS_DISABLED 0x04000000
+#define SBPS_STRETCH 0x08000000 // stretch to fill status bar
+
+/////////////////////////////////////////////////////////////////////////////
+// CToolBar control
+
+HBITMAP AFXAPI AfxLoadSysColorBitmap(HINSTANCE hInst, HRSRC hRsrc, BOOL bMono = FALSE);
+
+class CToolBarCtrl; // forward reference (see afxcmn.h for definition)
+
+class CToolBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CToolBar)
+
+// Construction
+public:
+ CToolBar();
+ BOOL Create(CWnd* pParentWnd,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP,
+ UINT nID = AFX_IDW_TOOLBAR);
+
+ void SetSizes(SIZE sizeButton, SIZE sizeImage);
+ // button size should be bigger than image
+ void SetHeight(int cyHeight);
+ // call after SetSizes, height overrides bitmap size
+ BOOL LoadToolBar(LPCTSTR lpszResourceName);
+ BOOL LoadToolBar(UINT nIDResource);
+ BOOL LoadBitmap(LPCTSTR lpszResourceName);
+ BOOL LoadBitmap(UINT nIDResource);
+ BOOL SetBitmap(HBITMAP hbmImageWell);
+ BOOL SetButtons(const UINT* lpIDArray, int nIDCount);
+ // lpIDArray can be NULL to allocate empty buttons
+
+// Attributes
+public:
+ // standard control bar things
+ int CommandToIndex(UINT nIDFind) const;
+ UINT GetItemID(int nIndex) const;
+ virtual void GetItemRect(int nIndex, LPRECT lpRect) const;
+ UINT GetButtonStyle(int nIndex) const;
+ void SetButtonStyle(int nIndex, UINT nStyle);
+
+ // for changing button info
+ void GetButtonInfo(int nIndex, UINT& nID, UINT& nStyle, int& iImage) const;
+ void SetButtonInfo(int nIndex, UINT nID, UINT nStyle, int iImage);
+ BOOL SetButtonText(int nIndex, LPCTSTR lpszText);
+ CString GetButtonText(int nIndex) const;
+ void GetButtonText(int nIndex, CString& rString) const;
+
+ // for direct access to the underlying common control
+ CToolBarCtrl& GetToolBarCtrl() const;
+
+// Implementation
+public:
+ virtual ~CToolBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual CSize CalcDynamicLayout(int nLength, DWORD nMode);
+ virtual int OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+ void SetOwner(CWnd* pOwnerWnd);
+ BOOL AddReplaceBitmap(HBITMAP hbmImageWell);
+ virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
+
+#ifdef _MAC
+ virtual BOOL CheckMonochrome();
+#endif
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ HRSRC m_hRsrcImageWell; // handle to loaded resource for image well
+ HINSTANCE m_hInstImageWell; // instance handle to load image well from
+ HBITMAP m_hbmImageWell; // contains color mapped button images
+ BOOL m_bDelayedButtonLayout; // used to manage when button layout should be done
+
+ CSize m_sizeImage; // current image size
+ CSize m_sizeButton; // current button size
+
+ CMapStringToPtr* m_pStringMap; // used as CMapStringToUInt
+
+ // implementation helpers
+ void _GetButton(int nIndex, TBBUTTON* pButton) const;
+ void _SetButton(int nIndex, TBBUTTON* pButton);
+ CSize CalcLayout(DWORD nMode, int nLength = -1);
+ CSize CalcSize(TBBUTTON* pData, int nCount);
+ int WrapToolBar(TBBUTTON* pData, int nCount, int nWidth);
+ void SizeToolBar(TBBUTTON* pData, int nCount, int nLength, BOOL bVert = FALSE);
+
+ //{{AFX_MSG(CToolBar)
+ afx_msg UINT OnNcHitTest(CPoint);
+ afx_msg void OnNcPaint();
+ afx_msg void OnPaint();
+ afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS);
+ afx_msg void OnSysColorChange();
+ afx_msg LRESULT OnSetButtonSize(WPARAM, LPARAM);
+ afx_msg LRESULT OnSetBitmapSize(WPARAM, LPARAM);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+// Styles for toolbar buttons
+#define TBBS_BUTTON MAKELONG(TBSTYLE_BUTTON, 0) // this entry is button
+#define TBBS_SEPARATOR MAKELONG(TBSTYLE_SEP, 0) // this entry is a separator
+#define TBBS_CHECKBOX MAKELONG(TBSTYLE_CHECK, 0) // this is an auto check button
+#define TBBS_GROUP MAKELONG(TBSTYLE_GROUP, 0) // marks the start of a group
+#define TBBS_CHECKGROUP (TBBS_GROUP|TBBS_CHECKBOX) // normal use of TBBS_GROUP
+
+// styles for display states
+#define TBBS_CHECKED MAKELONG(0, TBSTATE_CHECKED) // button is checked/down
+#define TBBS_PRESSED MAKELONG(0, TBSTATE_PRESSED) // button is being depressed
+#define TBBS_DISABLED MAKELONG(0, TBSTATE_ENABLED) // button is disabled
+#define TBBS_INDETERMINATE MAKELONG(0, TBSTATE_INDETERMINATE) // third state
+#define TBBS_HIDDEN MAKELONG(0, TBSTATE_HIDDEN) // button is hidden
+#define TBBS_WRAPPED MAKELONG(0, TBSTATE_WRAP) // button is wrapped at this point
+
+////////////////////////////////////////////
+// CDialogBar control
+// This is a control bar built from a dialog template. It is a modeless
+// dialog that delegates all control notifications to the parent window
+// of the control bar [the grandparent of the control]
+
+class CDialogBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CDialogBar)
+
+// Construction
+public:
+ CDialogBar();
+ BOOL Create(CWnd* pParentWnd, LPCTSTR lpszTemplateName,
+ UINT nStyle, UINT nID);
+ BOOL Create(CWnd* pParentWnd, UINT nIDTemplate,
+ UINT nStyle, UINT nID);
+
+// Implementation
+public:
+ virtual ~CDialogBar();
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ CSize m_sizeDefault;
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+#ifndef _AFX_NO_OCC_SUPPORT
+ // data and functions necessary for OLE control containment
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ LPCTSTR m_lpszTemplateName;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+ DECLARE_MESSAGE_MAP()
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Splitter Window
+
+#define SPLS_DYNAMIC_SPLIT 0x0001
+#define SPLS_INVERT_TRACKER 0x0002 // obsolete (now ignored)
+
+class CSplitterWnd : public CWnd
+{
+ DECLARE_DYNAMIC(CSplitterWnd)
+
+// Construction
+public:
+ CSplitterWnd();
+ // Create a single view type splitter with multiple splits
+ BOOL Create(CWnd* pParentWnd,
+ int nMaxRows, int nMaxCols, SIZE sizeMin,
+ CCreateContext* pContext,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE |
+ WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
+ UINT nID = AFX_IDW_PANE_FIRST);
+
+ // Create a multiple view type splitter with static layout
+ BOOL CreateStatic(CWnd* pParentWnd,
+ int nRows, int nCols,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE,
+ UINT nID = AFX_IDW_PANE_FIRST);
+
+ virtual BOOL CreateView(int row, int col, CRuntimeClass* pViewClass,
+ SIZE sizeInit, CCreateContext* pContext);
+
+// Attributes
+public:
+ int GetRowCount() const;
+ int GetColumnCount() const;
+
+ // information about a specific row or column
+ void GetRowInfo(int row, int& cyCur, int& cyMin) const;
+ void SetRowInfo(int row, int cyIdeal, int cyMin);
+ void GetColumnInfo(int col, int& cxCur, int& cxMin) const;
+ void SetColumnInfo(int col, int cxIdeal, int cxMin);
+
+ // for setting and getting shared scroll bar style
+ DWORD GetScrollStyle() const;
+ void SetScrollStyle(DWORD dwStyle);
+
+ // views inside the splitter
+ CWnd* GetPane(int row, int col) const;
+ BOOL IsChildPane(CWnd* pWnd, int* pRow, int* pCol);
+ BOOL IsChildPane(CWnd* pWnd, int& row, int& col); // obsolete
+ int IdFromRowCol(int row, int col) const;
+
+ BOOL IsTracking(); // TRUE during split operation
+
+// Operations
+public:
+ virtual void RecalcLayout(); // call after changing sizes
+
+// Overridables
+protected:
+ // to customize the drawing
+ enum ESplitType { splitBox, splitBar, splitIntersection, splitBorder };
+ virtual void OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rect);
+ virtual void OnInvertTracker(const CRect& rect);
+
+public:
+ // for customizing scrollbar regions
+ virtual BOOL CreateScrollBarCtrl(DWORD dwStyle, UINT nID);
+
+ // for customizing DYNAMIC_SPLIT behavior
+ virtual void DeleteView(int row, int col);
+ virtual BOOL SplitRow(int cyBefore);
+ virtual BOOL SplitColumn(int cxBefore);
+ virtual void DeleteRow(int rowDelete);
+ virtual void DeleteColumn(int colDelete);
+
+ // determining active pane from focus or active view in frame
+ virtual CWnd* GetActivePane(int* pRow = NULL, int* pCol = NULL);
+ virtual void SetActivePane(int row, int col, CWnd* pWnd = NULL);
+protected:
+ CWnd* GetActivePane(int& row, int& col); // obsolete
+
+public:
+ // high level command operations - called by default view implementation
+ virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
+ virtual void ActivateNext(BOOL bPrev = FALSE);
+ virtual BOOL DoKeyboardSplit();
+
+ // synchronized scrolling
+ virtual BOOL DoScroll(CView* pViewFrom, UINT nScrollCode,
+ BOOL bDoScroll = TRUE);
+ virtual BOOL DoScrollBy(CView* pViewFrom, CSize sizeScroll,
+ BOOL bDoScroll = TRUE);
+
+// Implementation
+public:
+ virtual ~CSplitterWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // implementation structure
+ struct CRowColInfo
+ {
+ int nMinSize; // below that try not to show
+ int nIdealSize; // user set size
+ // variable depending on the available size layout
+ int nCurSize; // 0 => invisible, -1 => nonexistant
+ };
+
+protected:
+ // customizable implementation attributes (set by constructor or Create)
+ CRuntimeClass* m_pDynamicViewClass;
+ int m_nMaxRows, m_nMaxCols;
+
+ // implementation attributes which control layout of the splitter
+ int m_cxSplitter, m_cySplitter; // size of splitter bar
+ int m_cxBorderShare, m_cyBorderShare; // space on either side of splitter
+ int m_cxSplitterGap, m_cySplitterGap; // amount of space between panes
+ int m_cxBorder, m_cyBorder; // borders in client area
+
+ // current state information
+ int m_nRows, m_nCols;
+ BOOL m_bHasHScroll, m_bHasVScroll;
+ CRowColInfo* m_pColInfo;
+ CRowColInfo* m_pRowInfo;
+
+ // Tracking info - only valid when 'm_bTracking' is set
+ BOOL m_bTracking, m_bTracking2;
+ CPoint m_ptTrackOffset;
+ CRect m_rectLimit;
+ CRect m_rectTracker, m_rectTracker2;
+ int m_htTrack;
+
+ // implementation routines
+ BOOL CreateCommon(CWnd* pParentWnd, SIZE sizeMin, DWORD dwStyle, UINT nID);
+ virtual int HitTest(CPoint pt) const;
+ virtual void GetInsideRect(CRect& rect) const;
+ virtual void GetHitRect(int ht, CRect& rect);
+ virtual void TrackRowSize(int y, int row);
+ virtual void TrackColumnSize(int x, int col);
+ virtual void DrawAllSplitBars(CDC* pDC, int cxInside, int cyInside);
+ virtual void SetSplitCursor(int ht);
+ CWnd* GetSizingParent();
+
+ // starting and stopping tracking
+ virtual void StartTracking(int ht);
+ virtual void StopTracking(BOOL bAccept);
+
+ // special command routing to frame
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ //{{AFX_MSG(CSplitterWnd)
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint pt);
+ afx_msg void OnPaint();
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint pt);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint pt);
+ afx_msg void OnCancelMode();
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnDisplayChange();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFormView - generic view constructed from a dialog template
+
+class CFormView : public CScrollView
+{
+ DECLARE_DYNAMIC(CFormView)
+
+// Construction
+protected: // must derive your own class
+ CFormView(LPCTSTR lpszTemplateName);
+ CFormView(UINT nIDTemplate);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void OnInitialUpdate();
+
+protected:
+ LPCTSTR m_lpszTemplateName;
+ CCreateContext* m_pCreateContext;
+ HWND m_hWndFocus; // last window to have focus
+
+ virtual void OnDraw(CDC* pDC); // default does nothing
+ // special case override of child window creation
+ virtual BOOL Create(LPCTSTR, LPCTSTR, DWORD,
+ const RECT&, CWnd*, UINT, CCreateContext*);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void OnActivateView(BOOL, CView*, CView*);
+ virtual void OnActivateFrame(UINT, CFrameWnd*);
+ BOOL SaveFocusControl(); // updates m_hWndFocus
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // data and functions necessary for OLE control containment
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+#endif
+
+ //{{AFX_MSG(CFormView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CEditView - simple text editor view
+
+class CEditView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CEditView)
+
+// Construction
+public:
+ CEditView();
+
+// Attributes
+public:
+ static AFX_DATA const DWORD dwStyleDefault;
+ // CEdit control access
+ CEdit& GetEditCtrl() const;
+
+ // presentation attributes
+ CFont* GetPrinterFont() const;
+ void SetPrinterFont(CFont* pFont);
+#ifndef _MAC
+ void SetTabStops(int nTabStops);
+#endif
+
+ // other attributes
+ void GetSelectedText(CString& strResult) const;
+
+ // buffer access
+ LPCTSTR LockBuffer() const;
+ void UnlockBuffer() const;
+ UINT GetBufferLength() const;
+
+// Operations
+public:
+ BOOL FindText(LPCTSTR lpszFind, BOOL bNext = TRUE, BOOL bCase = TRUE);
+ void SerializeRaw(CArchive& ar);
+ UINT PrintInsideRect(CDC* pDC, RECT& rectLayout, UINT nIndexStart,
+ UINT nIndexStop);
+
+// Overrideables
+protected:
+ virtual void OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase);
+ virtual void OnReplaceSel(LPCTSTR lpszFind, BOOL bNext, BOOL bCase,
+ LPCTSTR lpszReplace);
+ virtual void OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
+ BOOL bCase);
+ virtual void OnTextNotFound(LPCTSTR lpszFind);
+
+// Implementation
+public:
+ virtual ~CEditView();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void Serialize(CArchive& ar);
+ virtual void DeleteContents();
+ void ReadFromArchive(CArchive& ar, UINT nLen);
+ void WriteToArchive(CArchive& ar);
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
+
+ static AFX_DATA const UINT nMaxSize;
+ // maximum number of characters supported
+
+protected:
+#ifndef _MAC
+ int m_nTabStops; // tab stops in dialog units
+#endif
+ LPTSTR m_pShadowBuffer; // special shadow buffer only used in Win32s
+ UINT m_nShadowSize;
+
+ CUIntArray m_aPageStart; // array of starting pages
+ HFONT m_hPrinterFont; // if NULL, mirror display font
+ HFONT m_hMirrorFont; // font object used when mirroring
+
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ // printing support
+ virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo = NULL);
+ BOOL PaginateTo(CDC* pDC, CPrintInfo* pInfo);
+
+ // find & replace support
+ void OnEditFindReplace(BOOL bFindOnly);
+ BOOL InitializeReplace();
+ BOOL SameAsSelected(LPCTSTR lpszCompare, BOOL bCase);
+
+ // special overrides for implementation
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+ //{{AFX_MSG(CEditView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnUpdateNeedSel(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedClip(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedText(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedFind(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
+ afx_msg BOOL OnEditChange();
+ afx_msg void OnEditCut();
+ afx_msg void OnEditCopy();
+ afx_msg void OnEditPaste();
+ afx_msg void OnEditClear();
+ afx_msg void OnEditUndo();
+ afx_msg void OnEditSelectAll();
+ afx_msg void OnEditFind();
+ afx_msg void OnEditReplace();
+ afx_msg void OnEditRepeat();
+ afx_msg LRESULT OnFindReplaceCmd(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMetaFileDC
+
+class CMetaFileDC : public CDC
+{
+ DECLARE_DYNAMIC(CMetaFileDC)
+
+// Constructors
+public:
+ CMetaFileDC();
+ BOOL Create(LPCTSTR lpszFilename = NULL);
+#ifndef _MAC
+ BOOL CreateEnhanced(CDC* pDCRef, LPCTSTR lpszFileName,
+ LPCRECT lpBounds, LPCTSTR lpszDescription);
+#endif
+
+// Operations
+ HMETAFILE Close();
+#ifndef _MAC
+ HENHMETAFILE CloseEnhanced();
+#endif
+
+// Implementation
+public:
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+
+protected:
+ virtual void SetOutputDC(HDC hDC); // Set the Output DC -- Not allowed
+ virtual void ReleaseOutputDC(); // Release the Output DC -- Not allowed
+
+public:
+ virtual ~CMetaFileDC();
+
+// Clipping Functions (use the Attribute DC's clip region)
+ virtual int GetClipBox(LPRECT lpRect) const;
+ virtual BOOL PtVisible(int x, int y) const;
+ BOOL PtVisible(POINT point) const;
+ virtual BOOL RectVisible(LPCRECT lpRect) const;
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ BOOL TextOut(int x, int y, const CString& str);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ CSize TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ int DrawText(const CString& str, LPRECT lpRect, UINT nFormat);
+
+// Printer Escape Functions
+ virtual int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData);
+
+// Viewport Functions
+ virtual CPoint SetViewportOrg(int x, int y);
+ CPoint SetViewportOrg(POINT point);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+ virtual CSize SetViewportExt(int x, int y);
+ CSize SetViewportExt(SIZE size);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+
+protected:
+ void AdjustCP(int cx);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRectTracker - simple rectangular tracking rectangle w/resize handles
+
+class CRectTracker
+{
+public:
+// Constructors
+ CRectTracker();
+ CRectTracker(LPCRECT lpSrcRect, UINT nStyle);
+
+// Style Flags
+ enum StyleFlags
+ {
+ solidLine = 1, dottedLine = 2, hatchedBorder = 4,
+ resizeInside = 8, resizeOutside = 16, hatchInside = 32,
+ };
+
+// Hit-Test codes
+ enum TrackerHit
+ {
+ hitNothing = -1,
+ hitTopLeft = 0, hitTopRight = 1, hitBottomRight = 2, hitBottomLeft = 3,
+ hitTop = 4, hitRight = 5, hitBottom = 6, hitLeft = 7, hitMiddle = 8
+ };
+
+// Attributes
+ UINT m_nStyle; // current state
+ CRect m_rect; // current position (always in pixels)
+ CSize m_sizeMin; // minimum X and Y size during track operation
+ int m_nHandleSize; // size of resize handles (default from WIN.INI)
+
+// Operations
+ void Draw(CDC* pDC) const;
+ void GetTrueRect(LPRECT lpTrueRect) const;
+ BOOL SetCursor(CWnd* pWnd, UINT nHitTest) const;
+ BOOL Track(CWnd* pWnd, CPoint point, BOOL bAllowInvert = FALSE,
+ CWnd* pWndClipTo = NULL);
+ BOOL TrackRubberBand(CWnd* pWnd, CPoint point, BOOL bAllowInvert = TRUE);
+ int HitTest(CPoint point) const;
+ int NormalizeHit(int nHandle) const;
+
+// Overridables
+ virtual void DrawTrackerRect(LPCRECT lpRect, CWnd* pWndClipTo,
+ CDC* pDC, CWnd* pWnd);
+ virtual void AdjustRect(int nHandle, LPRECT lpRect);
+ virtual void OnChangedRect(const CRect& rectOld);
+ virtual UINT GetHandleMask() const;
+
+// Implementation
+public:
+ virtual ~CRectTracker();
+
+protected:
+ BOOL m_bAllowInvert; // flag passed to Track or TrackRubberBand
+ CRect m_rectLast;
+ CSize m_sizeLast;
+ BOOL m_bErase; // TRUE if DrawTrackerRect is called for erasing
+ BOOL m_bFinalErase; // TRUE if DragTrackerRect called for final erase
+
+ // implementation helpers
+ int HitTestHandles(CPoint point) const;
+ void GetHandleRect(int nHandle, CRect* pHandleRect) const;
+ void GetModifyPointers(int nHandle, int**ppx, int**ppy, int* px, int*py);
+ virtual int GetHandleSize(LPCRECT lpRect = NULL) const;
+ BOOL TrackHandle(int nHandle, CWnd* pWnd, CPoint point, CWnd* pWndClipTo);
+ void Construct();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Informational data structures
+
+struct CPrintInfo // Printing information structure
+{
+ CPrintInfo();
+ ~CPrintInfo();
+
+ CPrintDialog* m_pPD; // pointer to print dialog
+
+ BOOL m_bDocObject; // TRUE if printing by IPrint interface
+ BOOL m_bPreview; // TRUE if in preview mode
+ BOOL m_bDirect; // TRUE if bypassing Print Dialog
+ BOOL m_bContinuePrinting;// set to FALSE to prematurely end printing
+ UINT m_nCurPage; // Current page
+ UINT m_nNumPreviewPages; // Desired number of preview pages
+ CString m_strPageDesc; // Format string for page number display
+ LPVOID m_lpUserData; // pointer to user created struct
+ CRect m_rectDraw; // rectangle defining current usable page area
+
+ // these only valid if m_bDocObject
+ UINT m_nOffsetPage; // offset of first page in combined IPrint job
+ DWORD m_dwFlags; // flags passed to IPrint::Print
+
+ void SetMinPage(UINT nMinPage);
+ void SetMaxPage(UINT nMaxPage);
+ UINT GetMinPage() const;
+ UINT GetMaxPage() const;
+ UINT GetFromPage() const;
+ UINT GetToPage() const;
+ UINT GetOffsetPage() const;
+};
+
+struct CPrintPreviewState // Print Preview context/state
+{
+ UINT nIDMainPane; // main pane ID to hide
+ HMENU hMenu; // saved hMenu
+ DWORD dwStates; // Control Bar Visible states (bit map)
+ CView* pViewActiveOld; // save old active view during preview
+ BOOL (CALLBACK* lpfnCloseProc)(CFrameWnd* pFrameWnd);
+ HACCEL hAccelTable; // saved accelerator table
+
+// Implementation
+ CPrintPreviewState();
+};
+
+struct CCreateContext // Creation information structure
+ // All fields are optional and may be NULL
+{
+ // for creating new views
+ CRuntimeClass* m_pNewViewClass; // runtime class of view to create or NULL
+ CDocument* m_pCurrentDoc;
+
+ // for creating MDI children (CMDIChildWnd::LoadFrame)
+ CDocTemplate* m_pNewDocTemplate;
+
+ // for sharing view/frame state from the original view/frame
+ CView* m_pLastView;
+ CFrameWnd* m_pCurrentFrame;
+
+// Implementation
+ CCreateContext();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXEXT_INLINE inline
+#include <afxext.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXEXT_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxext.inl b/public/sdk/inc/mfc42/afxext.inl
new file mode 100644
index 000000000..559f1f37c
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxext.inl
@@ -0,0 +1,121 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXEXT.H
+
+#ifdef _AFXEXT_INLINE
+
+// CCreateContext
+_AFXEXT_INLINE CCreateContext::CCreateContext()
+ { memset(this, 0, sizeof(*this)); }
+
+// CMetaFileDC
+_AFXEXT_INLINE BOOL CMetaFileDC::Create(LPCTSTR lpszFilename)
+ { return Attach(::CreateMetaFile(lpszFilename)); }
+_AFXEXT_INLINE HMETAFILE CMetaFileDC::Close()
+ { return ::CloseMetaFile(Detach()); }
+#ifndef _MAC
+_AFXEXT_INLINE BOOL CMetaFileDC::CreateEnhanced(CDC* pDCRef,
+ LPCTSTR lpszFileName, LPCRECT lpBounds, LPCTSTR lpszDescription)
+ { return Attach(::CreateEnhMetaFile(pDCRef->GetSafeHdc(),
+ lpszFileName, lpBounds, lpszDescription)); }
+_AFXEXT_INLINE HENHMETAFILE CMetaFileDC::CloseEnhanced()
+ { return ::CloseEnhMetaFile(Detach()); }
+_AFXEXT_INLINE CPoint CMetaFileDC::SetViewportOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetViewportOrg(point.x, point.y); }
+_AFXEXT_INLINE CSize CMetaFileDC::SetViewportExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetViewportExt(size.cx, size.cy); }
+_AFXEXT_INLINE BOOL CMetaFileDC::TextOut(int x, int y, const CString& str)
+ { ASSERT(m_hDC != NULL); return TextOut(x, y, (LPCTSTR)str, str.GetLength()); }
+_AFXEXT_INLINE BOOL CMetaFileDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths)
+ { ASSERT(m_hDC != NULL); return ::ExtTextOut(m_hDC, x, y, nOptions, lpRect,
+ str, str.GetLength(), lpDxWidths); }
+_AFXEXT_INLINE CSize CMetaFileDC::TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin)
+ { ASSERT(m_hDC != NULL); return ::TabbedTextOut(m_hDC, x, y, str, str.GetLength(),
+ nTabPositions, lpnTabStopPositions, nTabOrigin); }
+_AFXEXT_INLINE int CMetaFileDC::DrawText(const CString& str, LPRECT lpRect, UINT nFormat)
+ { ASSERT(m_hDC != NULL);
+ return DrawText((LPCTSTR)str, str.GetLength(), lpRect, nFormat); }
+_AFXEXT_INLINE BOOL CMetaFileDC::PtVisible(POINT point) const
+ { ASSERT(m_hDC != NULL); return PtVisible(point.x, point.y); }
+#endif
+
+// CSplitterWnd
+_AFXEXT_INLINE int CSplitterWnd::GetRowCount() const
+ { return m_nRows; }
+_AFXEXT_INLINE int CSplitterWnd::GetColumnCount() const
+ { return m_nCols; }
+// obsolete functions
+_AFXEXT_INLINE BOOL CSplitterWnd::IsChildPane(CWnd* pWnd, int& row, int& col)
+ { return IsChildPane(pWnd, &row, &col); }
+_AFXEXT_INLINE CWnd* CSplitterWnd::GetActivePane(int& row, int& col)
+ { return GetActivePane(&row, &col); }
+_AFXEXT_INLINE BOOL CSplitterWnd::IsTracking()
+ { return m_bTracking; }
+
+// control bars
+_AFXEXT_INLINE int CControlBar::GetCount() const
+ { return m_nCount; }
+_AFXEXT_INLINE DWORD CControlBar::GetBarStyle()
+ { return m_dwStyle; }
+_AFXEXT_INLINE BOOL CToolBar::LoadToolBar(UINT nIDResource)
+ { return LoadToolBar(MAKEINTRESOURCE(nIDResource)); }
+_AFXEXT_INLINE BOOL CToolBar::LoadBitmap(UINT nIDResource)
+ { return LoadBitmap(MAKEINTRESOURCE(nIDResource)); }
+_AFXEXT_INLINE CToolBarCtrl& CToolBar::GetToolBarCtrl() const
+ { return *(CToolBarCtrl*)this; }
+_AFXEXT_INLINE BOOL CDialogBar::Create(CWnd* pParentWnd, UINT nIDTemplate,
+ UINT nStyle, UINT nID)
+ { return Create(pParentWnd, MAKEINTRESOURCE(nIDTemplate), nStyle, nID); }
+_AFXEXT_INLINE CStatusBarCtrl& CStatusBar::GetStatusBarCtrl() const
+ { return *(CStatusBarCtrl*)this; }
+#ifdef _DEBUG
+// status bars do not support docking
+_AFXEXT_INLINE void CStatusBar::EnableDocking(DWORD)
+ { ASSERT(FALSE); }
+#endif
+
+// CRectTracker
+_AFXEXT_INLINE CRectTracker::CRectTracker()
+ { Construct(); }
+
+// CBitmapButton
+_AFXEXT_INLINE CBitmapButton::CBitmapButton()
+ { }
+_AFXEXT_INLINE BOOL CBitmapButton::LoadBitmaps(UINT nIDBitmapResource,
+ UINT nIDBitmapResourceSel, UINT nIDBitmapResourceFocus,
+ UINT nIDBitmapResourceDisabled)
+ { return LoadBitmaps(MAKEINTRESOURCE(nIDBitmapResource),
+ MAKEINTRESOURCE(nIDBitmapResourceSel),
+ MAKEINTRESOURCE(nIDBitmapResourceFocus),
+ MAKEINTRESOURCE(nIDBitmapResourceDisabled)); }
+
+// CPrintInfo
+_AFXEXT_INLINE void CPrintInfo::SetMinPage(UINT nMinPage)
+ { m_pPD->m_pd.nMinPage = (WORD)nMinPage; }
+_AFXEXT_INLINE void CPrintInfo::SetMaxPage(UINT nMaxPage)
+ { m_pPD->m_pd.nMaxPage = (WORD)nMaxPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetMinPage() const
+ { return m_pPD->m_pd.nMinPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetMaxPage() const
+ { return m_pPD->m_pd.nMaxPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetFromPage() const
+ { return m_pPD->m_pd.nFromPage; }
+_AFXEXT_INLINE UINT CPrintInfo::GetToPage() const
+ { return m_pPD->m_pd.nToPage; }
+// CEditView
+_AFXEXT_INLINE CEdit& CEditView::GetEditCtrl() const
+ { return *(CEdit*)this; }
+
+#endif //_AFXEXT_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxhelp.hm b/public/sdk/inc/mfc42/afxhelp.hm
new file mode 100644
index 000000000..b511e5e30
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxhelp.hm
@@ -0,0 +1,272 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Non-Client HitTest help IDs
+HID_HT_NOWHERE 0x40000
+HID_HT_CAPTION 0x40002
+HID_HT_SIZE 0x40004
+HID_HT_HSCROLL 0x40006
+HID_HT_VSCROLL 0x40007
+HID_HT_MINBUTTON 0x40008
+HID_HT_MAXBUTTON 0x40009
+HID_HT_SIZE 0x4000A // alias: ID_HT_LEFT
+HID_HT_SIZE 0x4000B // alias: ID_HT_RIGHT
+HID_HT_SIZE 0x4000C // alias: ID_HT_TOP
+HID_HT_SIZE 0x4000D // alias: ID_HT_TOPLEFT
+HID_HT_SIZE 0x4000E // alias: ID_HT_TOPRIGHT
+HID_HT_SIZE 0x4000F // alias: ID_HT_BOTTOM
+HID_HT_SIZE 0x40010 // alias: ID_HT_BOTTOMLEFT
+HID_HT_SIZE 0x40011 // alias: ID_HT_BOTTOMRIGHT
+HID_HT_SIZE 0x40012 // alias: ID_HT_BORDER
+
+// WM_SYSCOMMAND help IDs
+HID_SC_SIZE 0x1EF00
+HID_SC_MOVE 0x1EF01
+HID_SC_MINIMIZE 0x1EF02
+HID_SC_MAXIMIZE 0x1EF03
+HID_SC_NEXTWINDOW 0x1EF04
+HID_SC_PREVWINDOW 0x1EF05
+HID_SC_CLOSE 0x1EF06
+HID_SC_RESTORE 0x1EF12
+HID_SC_TASKLIST 0x1EF13
+
+// File MRU and aliases
+HID_FILE_MRU_FILE1 0x1E110
+HID_FILE_MRU_FILE1 0x1E111 // aliases: MRU_2 - MRU_16
+HID_FILE_MRU_FILE1 0x1E112
+HID_FILE_MRU_FILE1 0x1E113
+HID_FILE_MRU_FILE1 0x1E114
+HID_FILE_MRU_FILE1 0x1E115
+HID_FILE_MRU_FILE1 0x1E116
+HID_FILE_MRU_FILE1 0x1E117
+HID_FILE_MRU_FILE1 0x1E118
+HID_FILE_MRU_FILE1 0x1E119
+HID_FILE_MRU_FILE1 0x1E11A
+HID_FILE_MRU_FILE1 0x1E11B
+HID_FILE_MRU_FILE1 0x1E11C
+HID_FILE_MRU_FILE1 0x1E11D
+HID_FILE_MRU_FILE1 0x1E11E
+HID_FILE_MRU_FILE1 0x1E11F
+
+// Window menu list
+HID_WINDOW_ALL 0x1EF1F
+
+// OLE menu and aliases
+HID_OLE_VERB_1 0x1E210
+HID_OLE_VERB_1 0x1E211 // aliases: VERB_2 -> VERB_16
+HID_OLE_VERB_1 0x1E212
+HID_OLE_VERB_1 0x1E213
+HID_OLE_VERB_1 0x1E214
+HID_OLE_VERB_1 0x1E215
+HID_OLE_VERB_1 0x1E216
+HID_OLE_VERB_1 0x1E217
+HID_OLE_VERB_1 0x1E218
+HID_OLE_VERB_1 0x1E219
+HID_OLE_VERB_1 0x1E21A
+HID_OLE_VERB_1 0x1E21B
+HID_OLE_VERB_1 0x1E21C
+HID_OLE_VERB_1 0x1E21D
+HID_OLE_VERB_1 0x1E21E
+HID_OLE_VERB_1 0x1E21F
+
+// Commands (HID_*)
+HID_FILE_NEW 0x1E100
+HID_FILE_OPEN 0x1E101
+HID_FILE_CLOSE 0x1E102
+HID_FILE_SAVE 0x1E103
+HID_FILE_SAVE_AS 0x1E104
+HID_FILE_PAGE_SETUP 0x1E105
+HID_FILE_PRINT_SETUP 0x1E106
+HID_FILE_PRINT 0x1E107
+HID_FILE_PRINT_DIRECT 0x1E108
+HID_FILE_PRINT_PREVIEW 0x1E109
+HID_FILE_UPDATE 0x1E10A
+HID_FILE_SAVE_COPY_AS 0x1E10B
+HID_FILE_SEND_MAIL 0x1E10C
+HID_EDIT_CLEAR 0x1E120
+HID_EDIT_CLEAR_ALL 0x1E121
+HID_EDIT_COPY 0x1E122
+HID_EDIT_CUT 0x1E123
+HID_EDIT_FIND 0x1E124
+HID_EDIT_PASTE 0x1E125
+HID_EDIT_PASTE_LINK 0x1E126
+HID_EDIT_PASTE_SPECIAL 0x1E127
+HID_EDIT_REPEAT 0x1E128
+HID_EDIT_REPLACE 0x1E129
+HID_EDIT_SELECT_ALL 0x1E12A
+HID_EDIT_UNDO 0x1E12B
+HID_EDIT_REDO 0x1E12C
+HID_WINDOW_NEW 0x1E130
+HID_WINDOW_ARRANGE 0x1E131
+HID_WINDOW_CASCADE 0x1E132
+HID_WINDOW_TILE_HORZ 0x1E133
+HID_WINDOW_TILE_VERT 0x1E134
+HID_WINDOW_SPLIT 0x1E135
+HID_APP_ABOUT 0x1E140
+HID_APP_EXIT 0x1E141
+HID_HELP_INDEX 0x1E142
+HID_HELP_FINDER 0x1E143
+HID_HELP_USING 0x1E144
+HID_CONTEXT_HELP 0x1E145
+HID_NEXT_PANE 0x1E150
+HID_PREV_PANE 0x1E151
+HID_FORMAT_FONT 0x1E160
+HID_OLE_INSERT_NEW 0x1E200
+HID_OLE_EDIT_LINKS 0x1E201
+HID_OLE_EDIT_CONVERT 0x1E202
+HID_OLE_EDIT_CHANGE_ICON 0x1E203
+HID_OLE_EDIT_PROPERTIES 0x1E204
+HID_VIEW_TOOLBAR 0x1E800
+HID_VIEW_STATUS_BAR 0x1E801
+HID_RECORD_FIRST 0x1E900
+HID_RECORD_LAST 0x1E901
+HID_RECORD_NEXT 0x1E902
+HID_RECORD_PREV 0x1E903
+HID_WIZBACK 0x13023
+HID_WIZNEXT 0x13024
+HID_WIZFINISH 0x13025
+
+// Dialogs (AFX_HIDD_*)
+AFX_HIDD_FILEOPEN 0x27004
+AFX_HIDD_FILESAVE 0x27005
+AFX_HIDD_FONT 0x27006
+AFX_HIDD_COLOR 0x27007
+AFX_HIDD_PRINT 0x27008
+AFX_HIDD_PRINTSETUP 0x27009
+AFX_HIDD_FIND 0x2700A
+AFX_HIDD_REPLACE 0x2700B
+AFX_HIDD_NEWTYPEDLG 0x27801
+AFX_HIDD_PRINTDLG 0x27802
+AFX_HIDD_PREVIEW_TOOLBAR 0x27803
+AFX_HIDD_PREVIEW_SHORTTOOLBAR 0x2780B
+AFX_HIDD_INSERTOBJECT 0x27804
+AFX_HIDD_CHANGEICON 0x27805
+AFX_HIDD_CONVERT 0x27806
+AFX_HIDD_PASTESPECIAL 0x27807
+AFX_HIDD_EDITLINKS 0x27808
+AFX_HIDD_FILEBROWSE 0x27809
+AFX_HIDD_BUSY 0x2780A
+AFX_HIDD_OBJECTPROPERTIES 0x2780C
+AFX_HIDD_CHANGESOURCE 0x2780D
+
+// Prompts/Errors (AFX_HIDP_*)
+AFX_HIDP_NO_ERROR_AVAILABLE 0x3F020
+AFX_HIDP_INVALID_FILENAME 0x3F100
+AFX_HIDP_FAILED_TO_OPEN_DOC 0x3F101
+AFX_HIDP_FAILED_TO_SAVE_DOC 0x3F102
+AFX_HIDP_ASK_TO_SAVE 0x3F103
+AFX_HIDP_FAILED_TO_CREATE_DOC 0x3F104
+AFX_HIDP_FILE_TOO_LARGE 0x3F105
+AFX_HIDP_FAILED_TO_START_PRINT 0x3F106
+AFX_HIDP_FAILED_TO_LAUNCH_HELP 0x3F107
+AFX_HIDP_INTERNAL_FAILURE 0x3F108
+AFX_HIDP_COMMAND_FAILURE 0x3F109
+AFX_HIDP_FAILED_MEMORY_ALLOC 0x3F10A
+AFX_HIDP_PARSE_INT 0x3F110
+AFX_HIDP_PARSE_REAL 0x3F111
+AFX_HIDP_PARSE_INT_RANGE 0x3F112
+AFX_HIDP_PARSE_REAL_RANGE 0x3F113
+AFX_HIDP_PARSE_STRING_SIZE 0x3F114
+AFX_HIDP_PARSE_RADIO_BUTTON 0x3F115
+AFX_HIDP_PARSE_BYTE 0x3F116
+AFX_HIDP_PARSE_UINT 0x3F117
+AFX_HIDP_PARSE_DATETIME 0x3F118
+AFX_HIDP_PARSE_CURRENCY 0x3F119
+AFX_HIDP_FAILED_INVALID_FORMAT 0x3F120
+AFX_HIDP_FAILED_INVALID_PATH 0x3F121
+AFX_HIDP_FAILED_DISK_FULL 0x3F122
+AFX_HIDP_FAILED_ACCESS_READ 0x3F123
+AFX_HIDP_FAILED_ACCESS_WRITE 0x3F124
+AFX_HIDP_FAILED_IO_ERROR_READ 0x3F125
+AFX_HIDP_FAILED_IO_ERROR_WRITE 0x3F126
+AFX_HIDP_STATIC_OBJECT 0x3F180
+AFX_HIDP_FAILED_TO_CONNECT 0x3F181
+AFX_HIDP_SERVER_BUSY 0x3F182
+AFX_HIDP_BAD_VERB 0x3F183
+AFX_HIDP_FAILED_TO_NOTIFY 0x3F185
+AFX_HIDP_FAILED_TO_LAUNCH 0x3F186
+AFX_HIDP_ASK_TO_UPDATE 0x3F187
+AFX_HIDP_FAILED_TO_UPDATE 0x3F188
+AFX_HIDP_FAILED_TO_REGISTER 0x3F189
+AFX_HIDP_FAILED_TO_AUTO_REGISTER 0x3F18A
+AFX_HIDP_FAILED_TO_CONVERT 0x3F18B
+AFX_HIDP_GET_NOT_SUPPORTED 0x3F18C
+AFX_HIDP_SET_NOT_SUPPORTED 0x3F18D
+AFX_HIDP_ASK_TO_DISCARD 0x3F18E
+AFX_HIDP_FAILED_TO_CREATE 0x3F18F
+AFX_HIDP_FAILED_MAPI_LOAD 0x3F190
+AFX_HIDP_INVALID_MAPI_DLL 0x3F191
+AFX_HIDP_FAILED_MAPI_SEND 0x3F192
+AFX_HIDP_FILE_NONE 0x3F1A0
+AFX_HIDP_FILE_GENERIC 0x3F1A1
+AFX_HIDP_FILE_NOT_FOUND 0x3F1A2
+AFX_HIDP_FILE_BAD_PATH 0x3F1A3
+AFX_HIDP_FILE_TOO_MANY_OPEN 0x3F1A4
+AFX_HIDP_FILE_ACCESS_DENIED 0x3F1A5
+AFX_HIDP_FILE_INVALID_FILE 0x3F1A6
+AFX_HIDP_FILE_REMOVE_CURRENT 0x3F1A7
+AFX_HIDP_FILE_DIR_FULL 0x3F1A8
+AFX_HIDP_FILE_BAD_SEEK 0x3F1A9
+AFX_HIDP_FILE_HARD_IO 0x3F1AA
+AFX_HIDP_FILE_SHARING 0x3F1AB
+AFX_HIDP_FILE_LOCKING 0x3F1AC
+AFX_HIDP_FILE_DISKFULL 0x3F1AD
+AFX_HIDP_FILE_EOF 0x3F1AE
+AFX_HIDP_ARCH_NONE 0x3F1B0
+AFX_HIDP_ARCH_GENERIC 0x3F1B1
+AFX_HIDP_ARCH_READONLY 0x3F1B2
+AFX_HIDP_ARCH_ENDOFFILE 0x3F1B3
+AFX_HIDP_ARCH_WRITEONLY 0x3F1B4
+AFX_HIDP_ARCH_BADINDEX 0x3F1B5
+AFX_HIDP_ARCH_BADCLASS 0x3F1B6
+AFX_HIDP_ARCH_BADSCHEMA 0x3F1B7
+AFX_HIDP_SQL_CONNECT_FAIL 0x3F281
+AFX_HIDP_SQL_RECORDSET_FORWARD_ONLY 0x3F282
+AFX_HIDP_SQL_EMPTY_COLUMN_LIST 0x3F283
+AFX_HIDP_SQL_FIELD_SCHEMA_MISMATCH 0x3F284
+AFX_HIDP_SQL_ILLEGAL_MODE 0x3F285
+AFX_HIDP_SQL_MULTIPLE_ROWS_AFFECTED 0x3F286
+AFX_HIDP_SQL_NO_CURRENT_RECORD 0x3F287
+AFX_HIDP_SQL_NO_ROWS_AFFECTED 0x3F288
+AFX_HIDP_SQL_RECORDSET_READONLY 0x3F289
+AFX_HIDP_SQL_SQL_NO_TOTAL 0x3F28A
+AFX_HIDP_SQL_ODBC_LOAD_FAILED 0x3F28B
+AFX_HIDP_SQL_DYNASET_NOT_SUPPORTED 0x3F28C
+AFX_HIDP_SQL_SNAPSHOT_NOT_SUPPORTED 0x3F28D
+AFX_HIDP_SQL_API_CONFORMANCE 0x3F28E
+AFX_HIDP_SQL_SQL_CONFORMANCE 0x3F28F
+AFX_HIDP_SQL_NO_DATA_FOUND 0x3F290
+AFX_HIDP_SQL_ROW_UPDATE_NOT_SUPPORTED 0x3F291
+AFX_HIDP_SQL_ODBC_V2_REQUIRED 0x3F292
+AFX_HIDP_SQL_NO_POSITIONED_UPDATES 0x3F293
+AFX_HIDP_SQL_LOCK_MODE_NOT_SUPPORTED 0x3F294
+AFX_HIDP_SQL_DATA_TRUNCATED 0x3F295
+AFX_HIDP_SQL_ROW_FETCH 0x3F296
+AFX_HIDP_SQL_INCORRECT_ODBC 0x3F297
+AFX_HIDP_SQL_UPDATE_DELETE_FAILED 0x3F298
+AFX_HIDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED 0x3F299
+AFX_HIDP_DAO_ENGINE_INITIALIZATION 0x3F2A0
+AFX_HIDP_DAO_DFX_BIND 0x3F2A1
+AFX_HIDP_DAO_OBJECT_NOT_OPEN 0x3F2A2
+AFX_HIDP_DAO_ROWTOOSHORT 0x3F2A3
+AFX_HIDP_DAO_BADBINDINFO 0x3F2A4
+AFX_HIDP_DAO_COLUMNUNAVAILABLE 0x3F2A5
+
+// Frame Controls (AFX_HIDW_*)
+AFX_HIDW_TOOLBAR 0x5E800
+AFX_HIDW_STATUS_BAR 0x5E801
+AFX_HIDW_PREVIEW_BAR 0x5E802
+AFX_HIDW_RESIZE_BAR 0x5E803
+AFX_HIDW_DOCKBAR_TOP 0x5E81B
+AFX_HIDW_DOCKBAR_LEFT 0x5E81C
+AFX_HIDW_DOCKBAR_RIGHT 0x5E81D
+AFX_HIDW_DOCKBAR_BOTTOM 0x5E81E
+AFX_HIDW_DOCKBAR_FLOAT 0x5E81F
+
diff --git a/public/sdk/inc/mfc42/afxinet.h b/public/sdk/inc/mfc42/afxinet.h
new file mode 100644
index 000000000..25b6e623c
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxinet.h
@@ -0,0 +1,671 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1996 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef _MAC
+
+#ifndef __AFXINET_H_
+#define __AFXINET_H_
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifndef _WININET_
+#include <wininet.h>
+#endif
+
+#ifndef _AFXDLL
+#pragma comment(lib, "WININET.LIB")
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// classes that are declared in this file
+
+class CInternetSession; // from CObject
+
+class CGopherLocator; // from CObject
+
+class CInternetFile; // from CStdioFile (FILETXT.CPP)
+ class CHttpFile;
+ class CGopherFile;
+
+class CInternetConnection;
+ class CFtpConnection;
+ class CGopherConnection;
+ class CHttpConnection;
+
+class CFtpFileFind; // from CFileFind (FILEFIND.CPP)
+class CGopherFileFind;
+
+class CInternetException;
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Global Functions
+
+BOOL AFXAPI AfxParseURL(LPCTSTR pstrURL, DWORD& dwServiceType,
+ CString& strServer, CString& strObject, INTERNET_PORT& nPort);
+
+DWORD AFXAPI AfxGetInternetHandleType(HINTERNET hQuery);
+
+// see CInternetException at the bottom of this file
+
+void AFXAPI AfxThrowInternetException(DWORD dwContext, DWORD dwError = 0);
+
+// these are defined by WININET.H
+
+#define AFX_INET_SERVICE_FTP INTERNET_SERVICE_FTP
+#define AFX_INET_SERVICE_HTTP INTERNET_SERVICE_HTTP
+#define AFX_INET_SERVICE_GOPHER INTERNET_SERVICE_GOPHER
+
+// these are types that MFC parsing functions understand
+
+#define AFX_INET_SERVICE_UNK 0x1000
+#define AFX_INET_SERVICE_FILE (AFX_INET_SERVICE_UNK+1)
+#define AFX_INET_SERVICE_MAILTO (AFX_INET_SERVICE_UNK+2)
+#define AFX_INET_SERVICE_MID (AFX_INET_SERVICE_UNK+3)
+#define AFX_INET_SERVICE_CID (AFX_INET_SERVICE_UNK+4)
+#define AFX_INET_SERVICE_NEWS (AFX_INET_SERVICE_UNK+5)
+#define AFX_INET_SERVICE_NNTP (AFX_INET_SERVICE_UNK+6)
+#define AFX_INET_SERVICE_PROSPERO (AFX_INET_SERVICE_UNK+7)
+#define AFX_INET_SERVICE_TELNET (AFX_INET_SERVICE_UNK+8)
+#define AFX_INET_SERVICE_WAIS (AFX_INET_SERVICE_UNK+9)
+#define AFX_INET_SERVICE_AFS (AFX_INET_SERVICE_UNK+10)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// classes that are declared in this file
+
+class CInternetSession : public CObject
+{
+public:
+ CInternetSession(LPCTSTR pstrAgent = NULL,
+ DWORD dwContext = 1,
+ DWORD dwAccessType = PRE_CONFIG_INTERNET_ACCESS,
+ LPCTSTR pstrProxyName = NULL,
+ LPCTSTR pstrProxyBypass = NULL,
+ DWORD dwFlags = 0);
+
+ BOOL QueryOption(DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufLen) const;
+ BOOL QueryOption(DWORD dwOption, DWORD& dwValue) const;
+ BOOL QueryOption(DWORD dwOption, CString& refString) const;
+
+ BOOL SetOption(DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength,
+ DWORD dwFlags = 0);
+ BOOL SetOption(DWORD dwOption, DWORD dwValue, DWORD dwFlags = 0);
+
+ CStdioFile* OpenURL(LPCTSTR pstrURL,
+ DWORD dwContext = 1, DWORD dwFlags = 0,
+ LPCTSTR pstrHeaders = NULL, DWORD dwHeadersLength = 0);
+
+ CFtpConnection* GetFtpConnection(LPCTSTR pstrServer,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
+ BOOL bPassive = FALSE);
+
+ CHttpConnection* GetHttpConnection(LPCTSTR pstrServer,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL);
+
+ CGopherConnection* GetGopherConnection(LPCTSTR pstrServer,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER);
+
+ BOOL EnableStatusCallback(BOOL bEnable = TRUE);
+
+ DWORD ServiceTypeFromHandle(HINTERNET hQuery);
+
+// operations
+
+ DWORD GetContext() const;
+ operator HINTERNET() const;
+ virtual void Close();
+
+// overridables
+ virtual void OnStatusCallback(DWORD dwContext, DWORD dwInternetStatus,
+ LPVOID lpvStatusInformation, DWORD dwStatusInformationLength);
+
+// implementation
+ DECLARE_DYNAMIC(CInternetSession)
+ ~CInternetSession();
+
+protected:
+ DWORD m_dwContext;
+ HINTERNET m_hSession;
+ INTERNET_STATUS_CALLBACK m_pOldCallback;
+ BOOL m_bCallbackEnabled;
+
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+
+////////////////////////////////////////////////////////////////////////////
+// Internet File Access Wrapper
+
+class CInternetFile : public CStdioFile
+{
+// Constructors
+protected:
+ CInternetFile(HINTERNET hFile, LPCTSTR pstrFileName,
+ CInternetConnection* pConnection, BOOL bReadMode);
+ CInternetFile(HINTERNET hFile, HINTERNET hSession,
+ LPCTSTR pstrFileName, LPCTSTR pstrServer, DWORD dwContext,
+ BOOL bReadMode);
+
+// Attributes
+protected:
+ HINTERNET m_hFile;
+public:
+ operator HINTERNET() const;
+ DWORD GetContext() const;
+
+// Operations
+ BOOL SetWriteBufferSize(UINT nWriteSize);
+ BOOL SetReadBufferSize(UINT nReadSize);
+
+ BOOL QueryOption(DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufLen) const;
+ BOOL QueryOption(DWORD dwOption, DWORD& dwValue) const;
+ BOOL QueryOption(DWORD dwOption, CString& refString) const;
+
+ BOOL SetOption(DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength,
+ DWORD dwFlags = 0);
+ BOOL SetOption(DWORD dwOption, DWORD dwValue, DWORD dwFlags = 0);
+
+// Overridables
+ virtual LONG Seek(LONG lOffset, UINT nFrom);
+
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+
+ virtual void Abort();
+ virtual void Flush();
+
+ virtual void Close();
+ virtual DWORD GetLength() const;
+
+ virtual BOOL ReadString(CString& rString);
+ virtual LPTSTR ReadString(LPTSTR pstr, UINT nMax);
+ virtual void WriteString(LPCTSTR pstr);
+
+ // Not supported by CInternetFile
+ void LockRange(DWORD dwPos, DWORD dwCount);
+ void UnlockRange(DWORD dwPos, DWORD dwCount);
+ CFile* Duplicate() const;
+ virtual void SetLength(DWORD dwNewLen);
+
+// Implementation
+public:
+ virtual ~CInternetFile();
+
+protected:
+ BOOL m_bReadMode;
+ DWORD m_dwContext;
+ HINTERNET m_hConnection;
+
+ CString m_strServerName;
+
+ UINT m_nWriteBufferSize;
+ UINT m_nWriteBufferPos;
+ LPBYTE m_pbWriteBuffer;
+
+ UINT m_nReadBufferSize;
+ UINT m_nReadBufferPos;
+ LPBYTE m_pbReadBuffer;
+ UINT m_nReadBufferBytes;
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ friend class CInternetSession;
+ friend class CFtpConnection;
+ friend class CHttpConnection;
+ friend class CGopherConnection;
+ DECLARE_DYNAMIC(CInternetFile)
+};
+
+
+class CHttpFile : public CInternetFile
+{
+// Constructors
+protected:
+ CHttpFile(HINTERNET hFile, HINTERNET hSession, LPCTSTR pstrObject,
+ LPCTSTR pstrServer, LPCTSTR pstrVerb, DWORD dwContext);
+ CHttpFile(HINTERNET hFile, LPCTSTR pstrVerb, LPCTSTR pstrObject,
+ CHttpConnection* pConnection);
+
+// Operations
+public:
+ BOOL AddRequestHeaders(LPCTSTR pstrHeaders,
+ DWORD dwFlags = HTTP_ADDREQ_FLAG_ADD_IF_NEW, int dwHeadersLen = -1);
+ BOOL AddRequestHeaders(CString& str,
+ DWORD dwFlags = HTTP_ADDREQ_FLAG_ADD_IF_NEW);
+
+ BOOL SendRequest(LPCTSTR pstrHeaders = NULL, DWORD dwHeadersLen = 0,
+ LPVOID lpOptional = NULL, DWORD dwOptionalLen = 0);
+ BOOL SendRequest(CString& strHeaders,
+ LPVOID lpOptional = NULL, DWORD dwOptionalLen = 0);
+ BOOL QueryInfo(DWORD dwInfoLevel, LPVOID lpvBuffer,
+ LPDWORD lpdwBufferLength, LPDWORD lpdwIndex = NULL) const;
+ BOOL QueryInfo(DWORD dwInfoLevel, CString& str,
+ LPDWORD dwIndex = NULL) const;
+ BOOL QueryInfo(DWORD dwInfoLevel, SYSTEMTIME* pSysTime,
+ LPDWORD dwIndex = NULL) const;
+ BOOL QueryInfoStatusCode(DWORD& dwStatusCode) const;
+
+ DWORD ErrorDlg(CWnd* pParent = NULL, DWORD dwError = ERROR_INTERNET_INCORRECT_PASSWORD,
+ DWORD dwFlags = FLAGS_ERROR_UI_FLAGS_GENERATE_DATA | FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS,
+ LPVOID* lppvData = NULL);
+
+// Attributes
+public:
+ CString GetVerb() const;
+ CString GetObject() const;
+ virtual CString GetFileURL() const;
+ virtual void Close();
+
+// Implementation
+public:
+ virtual ~CHttpFile();
+protected:
+ CString m_strObject;
+ CString m_strVerb;
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ friend class CHttpConnection;
+ friend class CInternetSession;
+ DECLARE_DYNAMIC(CHttpFile)
+};
+
+// class CGopherFile is declared after CGopherLocator, below
+
+
+////////////////////////////////////////////////////////////////////////////
+// Connection types
+
+class CInternetConnection : public CObject
+{
+public:
+ CInternetConnection(CInternetSession* pSession, LPCTSTR pstrServer,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
+ DWORD dwContext = 1);
+
+// Operations
+ operator HINTERNET() const;
+ DWORD GetContext() const;
+ CInternetSession* GetSession() const;
+
+ CString GetServerName() const;
+
+ BOOL QueryOption(DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufLen) const;
+ BOOL QueryOption(DWORD dwOption, DWORD& dwValue) const;
+ BOOL QueryOption(DWORD dwOption, CString& refString) const;
+
+ BOOL SetOption(DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength,
+ DWORD dwFlags = 0);
+ BOOL SetOption(DWORD dwOption, DWORD dwValue, DWORD dwFlags = 0);
+
+// Implementation
+protected:
+ HINTERNET m_hConnection;
+ DWORD m_dwContext;
+ CInternetSession* m_pSession;
+ virtual void Close();
+
+ CString m_strServerName;
+ INTERNET_PORT m_nPort;
+
+public:
+ ~CInternetConnection();
+ DECLARE_DYNAMIC(CInternetConnection)
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ void AssertValid() const;
+#endif
+};
+
+class CFtpConnection : public CInternetConnection
+{
+public:
+ CFtpConnection(CInternetSession* pSession, HINTERNET hConnected,
+ LPCTSTR pstrServer, DWORD dwContext);
+ CFtpConnection(CInternetSession* pSession, LPCTSTR pstrServer,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
+ DWORD dwContext = 0,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
+ BOOL bPassive = FALSE);
+
+ BOOL SetCurrentDirectory(LPCTSTR pstrDirName);
+
+ BOOL GetCurrentDirectory(CString& strDirName) const;
+ BOOL GetCurrentDirectory(LPTSTR pstrDirName, LPDWORD lpdwLen) const;
+ BOOL GetCurrentDirectoryAsURL(LPTSTR pstrName, LPDWORD lpdwLen) const;
+ BOOL GetCurrentDirectoryAsURL(CString& strDirName) const;
+
+ BOOL RemoveDirectory(LPCTSTR pstrDirName);
+ BOOL CreateDirectory(LPCTSTR pstrDirName);
+ BOOL Rename(LPCTSTR pstrExisting, LPCTSTR pstrNew);
+ BOOL Remove(LPCTSTR pstrFileName);
+
+ BOOL PutFile(LPCTSTR pstrLocalFile, LPCTSTR pstrRemoteFile,
+ DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD dwContext = 1);
+
+ BOOL GetFile(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile,
+ BOOL bFailIfExists = TRUE,
+ DWORD dwAttributes = FILE_ATTRIBUTE_NORMAL,
+ DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD dwContext = 1);
+
+ CInternetFile* OpenFile(LPCTSTR pstrFileName,
+ DWORD dwAccess = GENERIC_READ,
+ DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD dwContext = 1);
+
+ virtual void Close();
+
+// implementation
+ ~CFtpConnection();
+
+protected:
+ CString m_strServerName;
+
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+
+ DECLARE_DYNAMIC(CFtpConnection)
+};
+
+class CHttpConnection : public CInternetConnection
+{
+public:
+ enum {
+ _HTTP_VERB_MIN = 0,
+ HTTP_VERB_POST = 0,
+ HTTP_VERB_GET = 1,
+ HTTP_VERB_HEAD = 2,
+ HTTP_VERB_PUT = 3,
+ HTTP_VERB_LINK = 4,
+ HTTP_VERB_DELETE = 5,
+ HTTP_VERB_UNLINK = 6,
+ _HTTP_VERB_MAX = 6,
+ };
+
+public:
+ CHttpConnection(CInternetSession* pSession, HINTERNET hConnected,
+ LPCTSTR pstrServer, DWORD dwContext);
+ CHttpConnection(CInternetSession* pSession, LPCTSTR pstrServer,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
+ DWORD dwContext = 1);
+
+ CHttpFile* OpenRequest(LPCTSTR pstrVerb, LPCTSTR pstrObjectName,
+ LPCTSTR pstrReferer = NULL,DWORD dwContext = 1,
+ LPCTSTR* ppstrAcceptTypes = NULL, LPCTSTR pstrVersion = NULL,
+ DWORD dwFlags = INTERNET_FLAG_EXISTING_CONNECT);
+
+ CHttpFile* OpenRequest(int nVerb, LPCTSTR pstrObjectName,
+ LPCTSTR pstrReferer = NULL, DWORD dwContext = 1,
+ LPCTSTR* ppstrAcceptTypes = NULL, LPCTSTR pstrVersion = NULL,
+ DWORD dwFlags = INTERNET_FLAG_EXISTING_CONNECT);
+
+// implementation
+ ~CHttpConnection();
+ virtual void Close();
+
+protected:
+ CString m_strServerName;
+ static const LPCTSTR szHtmlVerbs[];
+
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+
+ friend class CInternetSession; // just to access szHtmlVerbs
+ DECLARE_DYNAMIC(CHttpConnection)
+};
+
+class CGopherConnection : public CInternetConnection
+{
+public:
+ CGopherConnection(CInternetSession* pSession,
+ HINTERNET hConnected, LPCTSTR pstrServer, DWORD dwContext);
+
+ CGopherConnection(CInternetSession* pSession, LPCTSTR pstrServer,
+ LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL,
+ DWORD dwContext = 0,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER);
+
+ CGopherFile* OpenFile(CGopherLocator& refLocator, DWORD dwFlags = 0,
+ LPCTSTR pstrView = NULL, DWORD dwContext = 1);
+
+ CGopherLocator CreateLocator(LPCTSTR pstrDisplayString,
+ LPCTSTR pstrSelectorString, DWORD dwGopherType);
+
+ BOOL CGopherConnection::GetAttribute(CGopherLocator& refLocator,
+ CString strRequestedAttributes, CString& strResult);
+
+ static CGopherLocator CreateLocator(LPCTSTR pstrLocator);
+ static CGopherLocator CreateLocator(LPCTSTR pstrServerName,
+ LPCTSTR pstrDisplayString,
+ LPCTSTR pstrSelectorString, DWORD dwGopherType,
+ INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER);
+
+// implementation
+ ~CGopherConnection();
+ virtual void Close();
+
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ DECLARE_DYNAMIC(CGopherConnection)
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CFtpFileFind
+
+class CFtpFileFind : public CFileFind
+{
+public:
+ CFtpFileFind(CFtpConnection* pConnection, DWORD dwContext = 1);
+ virtual ~CFtpFileFind();
+
+ virtual BOOL FindFile(LPCTSTR pstrName = NULL,
+ DWORD dwFlags = INTERNET_FLAG_RELOAD);
+ virtual BOOL FindNextFile();
+ CString GetFileURL() const;
+
+// implementation
+protected:
+ virtual void CloseContext();
+ CFtpConnection* m_pConnection;
+ DWORD m_dwContext;
+
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+
+ DECLARE_DYNAMIC(CFtpFileFind)
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CGopherLocator
+
+class CGopherLocator : public CObject
+{
+public:
+ ~CGopherLocator();
+ operator LPCTSTR() const;
+ CGopherLocator(const CGopherLocator& ref);
+ BOOL GetLocatorType(DWORD& dwRef) const;
+
+private:
+ // this only created by CGopherConnection::CreateLocator or by serialization
+ CGopherLocator(LPCTSTR pstrLocator, DWORD dwLocLen);
+
+ CString m_Locator; // _not_ a zero-terminated string!
+ DWORD m_dwBufferLength;
+
+ friend class CGopherConnection;
+ friend class CGopherFile;
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CGopherFile
+
+class CGopherFile : public CInternetFile
+{
+// Constructors
+protected:
+ CGopherFile(HINTERNET hFile, CGopherLocator& refLocator,
+ CGopherConnection* pConnection);
+ CGopherFile(HINTERNET hFile, HINTERNET hSession,
+ LPCTSTR pstrLocator, DWORD dwLocLen, DWORD dwContext);
+
+// Operations
+public:
+ virtual void Close();
+ virtual void Write(const void* lpBuf, UINT nCount);
+ void WriteString(LPCTSTR pstr);
+
+// Implementation
+protected:
+ CGopherLocator m_Locator;
+public:
+ virtual ~CGopherFile();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ friend class CInternetSession;
+ friend class CGopherConnection;
+ DECLARE_DYNAMIC(CGopherFile)
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CGopherFileFind
+
+class CGopherFileFind : public CFileFind
+{
+public:
+ CGopherFileFind(CGopherConnection* pConnection, DWORD dwContext = 1);
+ virtual ~CGopherFileFind();
+
+ virtual BOOL FindFile(CGopherLocator& refLocator, LPCTSTR pstrString,
+ DWORD dwFlags = INTERNET_FLAG_RELOAD);
+ virtual BOOL FindFile(LPCTSTR pstrString,
+ DWORD dwFlags = INTERNET_FLAG_RELOAD);
+ virtual BOOL FindNextFile();
+
+ virtual BOOL IsDots() const;
+
+ virtual BOOL GetLastWriteTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetLastAccessTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetCreationTime(FILETIME* pTimeStamp) const;
+ virtual BOOL GetLastWriteTime(CTime& refTime) const;
+ virtual BOOL GetLastAccessTime(CTime& refTime) const;
+ virtual BOOL GetCreationTime(CTime& refTime) const;
+
+ CGopherLocator GetLocator() const;
+ CString GetScreenName() const;
+
+ virtual DWORD GetLength() const;
+#if defined(_X86_) || defined(_ALPHA_)
+ virtual __int64 GetLength64() const;
+#endif
+
+protected:
+ virtual void CloseContext();
+ CGopherConnection* m_pConnection;
+ DWORD m_dwContext;
+
+// implementation
+public:
+ // Unsupported APIs
+ CString GetFileName() const;
+ CString GetFilePath() const;
+ CString GetFileTitle() const;
+ CString GetFileURL() const;
+ CString GetRoot() const;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ DECLARE_DYNAMIC(CGopherFileFind)
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// CInternetException
+
+class CInternetException : public CException
+{
+public:
+// Constructor
+ CInternetException(DWORD dwError);
+
+// Attributes
+ DWORD m_dwError;
+ DWORD m_dwContext;
+
+// Implementation
+public:
+ ~CInternetException();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL GetErrorMessage(LPTSTR lpstrError, UINT nMaxError,
+ PUINT pnHelpContext = NULL);
+ DECLARE_DYNAMIC(CInternetException)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXINET_INLINE inline
+#include <afxinet.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXINET_H__
+
+#endif // _MAC
diff --git a/public/sdk/inc/mfc42/afxinet.inl b/public/sdk/inc/mfc42/afxinet.inl
new file mode 100644
index 000000000..69f4fda8d
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxinet.inl
@@ -0,0 +1,69 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1996 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXINET.H
+
+/////////////////////////////////////////////////////////////////////////////
+//
+
+#ifdef _AFXINET_INLINE
+
+_AFXINET_INLINE DWORD CInternetSession::GetContext() const
+ { return m_dwContext; }
+
+_AFXINET_INLINE CString CInternetConnection::GetServerName() const
+ { return m_strServerName; }
+
+_AFXINET_INLINE CInternetSession* CInternetConnection::GetSession() const
+ { return m_pSession; }
+
+_AFXINET_INLINE CInternetSession::operator HINTERNET() const
+ { return m_hSession; }
+
+_AFXINET_INLINE BOOL CInternetSession::SetOption(DWORD dwOption, DWORD dwValue,
+ DWORD dwFlags /* = 0 */)
+ { return SetOption(dwOption, &dwValue, sizeof(dwValue), dwFlags); }
+
+
+_AFXINET_INLINE CGopherLocator::operator LPCTSTR() const
+ { return (LPCTSTR) m_Locator; }
+
+_AFXINET_INLINE BOOL CGopherLocator::GetLocatorType(DWORD& dwRef) const
+ { return GopherGetLocatorType((LPCTSTR) m_Locator, &dwRef); }
+
+_AFXINET_INLINE CGopherLocator::CGopherLocator(const CGopherLocator& ref)
+ { m_Locator = ref.m_Locator; m_dwBufferLength = ref.m_dwBufferLength; }
+
+
+_AFXINET_INLINE CInternetConnection::operator HINTERNET() const
+ { return m_hConnection; }
+
+_AFXINET_INLINE DWORD CInternetConnection::GetContext() const
+ { return m_dwContext; }
+
+_AFXINET_INLINE BOOL CInternetConnection::SetOption(DWORD dwOption,
+ DWORD dwValue, DWORD dwFlags /* = 0 */)
+ { return SetOption(dwOption, &dwValue, sizeof(dwValue), dwFlags); }
+
+
+_AFXINET_INLINE DWORD CInternetFile::GetContext() const
+ { return m_dwContext; }
+
+_AFXINET_INLINE CInternetFile::operator HINTERNET() const
+ { return m_hFile; }
+
+_AFXINET_INLINE BOOL CInternetFile::SetOption(DWORD dwOption, DWORD dwValue,
+ DWORD dwFlags /* = 0 */)
+ { return SetOption(dwOption, &dwValue, sizeof(dwValue), dwFlags); }
+
+
+#endif //_AFXINET_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxisapi.h b/public/sdk/inc/mfc42/afxisapi.h
new file mode 100644
index 000000000..e743682c9
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxisapi.h
@@ -0,0 +1,561 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXISAPI_H_
+#define __AFXISAPI_H_
+
+#ifdef _UNICODE
+#error ERROR: ISAPI does not yet support Unicode.
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+#ifndef ALL_WARNINGS
+// warnings generated with common MFC/Windows code
+#pragma warning(disable: 4127) // constant expression for TRACE/ASSERT
+#pragma warning(disable: 4134) // message map member fxn casts
+#pragma warning(disable: 4201) // nameless unions are part of C++
+#pragma warning(disable: 4511) // private copy constructors are good to have
+#pragma warning(disable: 4512) // private operator= are good to have
+#pragma warning(disable: 4514) // unreferenced inlines are common
+#pragma warning(disable: 4710) // private constructors are disallowed
+#pragma warning(disable: 4705) // statement has no effect in optimized code
+// warnings caused by normal optimizations
+#ifndef _DEBUG
+#pragma warning(disable: 4701) // local variable *may* be used without init
+#pragma warning(disable: 4702) // unreachable code caused by optimizations
+#pragma warning(disable: 4791) // loss of debugging info in retail version
+#endif
+// warnings specific to _AFXDLL version
+#ifdef _AFXDLL
+#pragma warning(disable: 4204) // non-constant aggregate initializer
+#endif
+#ifdef _AFXDLL
+#pragma warning(disable: 4275) // deriving exported class from non-exported
+#pragma warning(disable: 4251) // using non-exported as public in exported
+#endif
+#endif //!ALL_WARNINGS
+
+#define STRICT 1
+
+#ifndef _DEBUG
+#ifndef _AFX_ENABLE_INLINES
+#define _AFX_EANBLE_INLINES
+#endif
+#endif
+
+#include <httpext.h>
+#include <httpfilt.h>
+
+#ifndef _INC_STDLIB
+ #include <stdlib.h>
+#endif
+#ifndef _INC_TCHAR
+ #include <tchar.h>
+#endif
+
+#ifndef UNUSED
+#ifdef _DEBUG
+#define UNUSED(x)
+#else
+#define UNUSED(x) x
+#endif
+#endif
+
+#define AFXISAPI __stdcall
+#define AFXIS_DATADEF
+
+/////////////////////////////////////////////////////////////////////////////
+// Internet Server API Library
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+#ifdef _AFXDLL
+#ifdef _DEBUG
+ #ifdef _UNICODE
+ #pragma comment(lib, "MFCISUD.lib")
+ #else
+ #pragma comment(lib, "EAFXISD.lib")
+ #endif
+#else
+ #ifdef _UNICODE
+ #pragma comment(lib, "MFCISU.lib")
+ #else
+ #pragma comment(lib, "EAFXIS.lib")
+ #endif // _UNICODE
+#endif // _DEBUG
+#else
+#ifdef _DEBUG
+ #ifdef _UNICODE
+ #pragma comment(lib, "UAFXISD.lib")
+ #else
+ #pragma comment(lib, "NAFXISD.lib")
+ #endif
+#else
+ #ifdef _UNICODE
+ #pragma comment(lib, "UAFXIS.lib")
+ #else
+ #pragma comment(lib, "NAFXIS.lib")
+ #endif // _UNICODE
+#endif // _DEBUG
+#endif // _AFXDLL
+
+#pragma comment(lib, "kernel32.lib")
+#pragma comment(lib, "user32.lib")
+#pragma comment(lib, "winspool.lib")
+#pragma comment(lib, "advapi32.lib")
+
+#endif // _MAC
+#endif // _AFX_NOFORCE_LIBS
+
+extern HINSTANCE AFXISAPI AfxGetResourceHandle();
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXIASPI - MFC Internet Server API support
+
+// Classes declared in this file
+
+class CHtmlStream;
+class CHttpServerContext;
+class CHttpServer;
+class CHttpFilterContext;
+class CHttpFilter;
+
+
+///////////////////////////////////////////////////////////////////////
+// CHtmlStream -- manages in-memory HTML
+
+class CHtmlStream
+{
+public:
+// Constructors
+ CHtmlStream(UINT nGrowBytes = 4096);
+ CHtmlStream(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+
+// Operations
+ void Attach(BYTE* lpBuffer, UINT nBufferSize, UINT nGrowBytes = 0);
+ BYTE* Detach();
+ DWORD GetStreamSize() const;
+
+ virtual void Abort();
+ virtual void Close();
+ virtual void InitStream();
+ virtual void Reset();
+
+ CHtmlStream& operator<<(LPCTSTR psz);
+ CHtmlStream& operator<<(short int w);
+ CHtmlStream& operator<<(long int dw);
+ CHtmlStream& operator<<(CHtmlStream& stream);
+ CHtmlStream& operator<<(double d);
+ CHtmlStream& operator<<(float f);
+
+// Advanced Overridables
+protected:
+ virtual BYTE* Alloc(DWORD nBytes);
+ virtual BYTE* Realloc(BYTE* lpMem, DWORD nBytes);
+ virtual BYTE* Memcpy(BYTE* lpMemTarget, const BYTE* lpMemSource, UINT nBytes);
+ virtual void GrowStream(DWORD dwNewLen);
+ virtual void Write(const void* lpBuf, UINT nCount);
+
+ DWORD m_nStreamSize;
+
+public:
+ virtual void Free(BYTE* lpMem);
+
+// Implementation
+protected:
+ UINT m_nGrowBytes;
+ DWORD m_nPosition;
+ DWORD m_nBufferSize;
+ BYTE* m_lpBuffer;
+ BOOL m_bAutoDelete;
+
+public:
+ virtual ~CHtmlStream();
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// Status codes for HTTP transactions
+
+#ifndef _WININET_ // these symbols may come from WININET.H
+
+#define HTTP_STATUS_OK 200 // OK
+#define HTTP_STATUS_CREATED 201 // created
+#define HTTP_STATUS_ACCEPTED 202 // accepted
+#define HTTP_STATUS_NO_CONTENT 204 // no content
+#define HTTP_STATUS_REDIRECT 301 // moved permanently
+#define HTTP_STATUS_TEMP_REDIRECT 302 // moved temporarily
+#define HTTP_STATUS_NOT_MODIFIED 304 // not modified
+#define HTTP_STATUS_BAD_REQUEST 400 // bad request
+#define HTTP_STATUS_AUTH_REQUIRED 401 // unauthorized
+#define HTTP_STATUS_FORBIDDEN 403 // forbidden
+#define HTTP_STATUS_NOT_FOUND 404 // not found
+#define HTTP_STATUS_SERVER_ERROR 500 // internal server error
+#define HTTP_STATUS_NOT_IMPLEMENTED 501 // not implemented
+#define HTTP_STATUS_BAD_GATEWAY 502 // bad gateway
+#define HTTP_STATUS_SERVICE_NA 503 // service unavailable
+
+#endif
+
+///////////////////////////////////////////////////////////////////////
+// Parse Map macros
+
+#ifndef AFX_PARSE_CALL
+#define AFX_PARSE_CALL
+#endif
+
+typedef void (AFX_PARSE_CALL CHttpServer::*AFX_PISAPICMD)(CHttpServerContext* pCtxt);
+
+struct AFX_PARSEMAP_ENTRY; // declared after CHttpServer, below
+
+struct AFX_PARSEMAP
+{
+ UINT (PASCAL* pfnGetNumMapEntries)();
+#ifdef _AFXDLL
+ const AFX_PARSEMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_PARSEMAP* pBaseMap;
+#endif
+ const AFX_PARSEMAP_ENTRY* lpEntries;
+ ~AFX_PARSEMAP();
+};
+
+struct AFX_PARSEMAP_ENTRY_PARAMS
+{
+ int nParams; // number of parameters
+ int nRequired; // number of parameters without defaults
+ // all of these are arrays!
+ LPTSTR* ppszInfo; // pointers to name[2n], pointer to default[2n+1]
+ BYTE* ppszDefaults; // pointers to coerced default values
+ BYTE* ppszValues; // pointers to coerced actual values
+ ~AFX_PARSEMAP_ENTRY_PARAMS();
+};
+
+#ifdef _AFXDLL
+#define DECLARE_PARSE_MAP() \
+private: \
+ static AFX_PARSEMAP_ENTRY _parseEntries[]; \
+public: \
+ static const AFX_PARSEMAP parseMap; \
+ static const AFX_PARSEMAP* PASCAL _GetBaseParseMap(); \
+ static UINT PASCAL GetNumMapEntries(); \
+ virtual const AFX_PARSEMAP* GetParseMap() const; \
+
+#else
+#define DECLARE_PARSE_MAP() \
+private: \
+ static AFX_PARSEMAP_ENTRY _parseEntries[]; \
+public: \
+ static const AFX_PARSEMAP parseMap; \
+ static UINT PASCAL GetNumMapEntries(); \
+ virtual const AFX_PARSEMAP* GetParseMap() const; \
+
+#endif // _AFXDLL
+
+#ifdef _AFXDLL
+#define BEGIN_PARSE_MAP(theClass, baseClass) \
+ const AFX_PARSEMAP* PASCAL theClass::_GetBaseParseMap() \
+ { return &baseClass::parseMap; } \
+ typedef void (AFX_PARSE_CALL theClass::*theClass##CALL)(CHttpServerContext*); \
+ const AFX_PARSEMAP* theClass::GetParseMap() const \
+ { return &theClass::parseMap; } \
+ AFXIS_DATADEF const AFX_PARSEMAP theClass::parseMap = \
+ { &theClass::GetNumMapEntries, &theClass::_GetBaseParseMap, &theClass::_parseEntries[0] }; \
+ AFX_PARSEMAP_ENTRY theClass::_parseEntries[] = \
+ { \
+
+#else
+#define BEGIN_PARSE_MAP(theClass, baseClass) \
+ typedef void (AFX_PARSE_CALL theClass::*theClass##CALL)(CHttpServerContext*); \
+ const AFX_PARSEMAP* theClass::GetParseMap() const \
+ { return &theClass::parseMap; } \
+ AFXIS_DATADEF const AFX_PARSEMAP theClass::parseMap = \
+ { &theClass::GetNumMapEntries, &baseClass::parseMap, &theClass::_parseEntries[0] }; \
+ AFX_PARSEMAP_ENTRY theClass::_parseEntries[] = \
+ { \
+
+#endif
+
+#define ON_PARSE_COMMAND(FnName, mapClass, Args) \
+ { _T(#FnName), (AFX_PISAPICMD) (mapClass##CALL)mapClass::FnName, Args },
+
+#define ON_PARSE_COMMAND_PARAMS(Params) \
+ { NULL, (AFX_PISAPICMD) NULL, Params },
+
+#define DEFAULT_PARSE_COMMAND(FnName, mapClass) \
+ { _T(#FnName), (AFX_PISAPICMD) (mapClass##CALL)mapClass::FnName, NULL },
+
+#define END_PARSE_MAP(theClass) \
+ }; \
+ UINT PASCAL theClass::GetNumMapEntries() { \
+ return sizeof(theClass::_parseEntries) /\
+ sizeof(AFX_PARSEMAP_ENTRY); } \
+
+
+///////////////////////////////////////////////////////////////////////
+//
+
+class CHttpServerContext
+{
+public:
+ CHttpServerContext(EXTENSION_CONTROL_BLOCK* pECB);
+ virtual ~CHttpServerContext();
+
+// Operations
+ BOOL GetServerVariable(LPTSTR lpszVariableName,
+ LPVOID lpvBuffer, LPDWORD lpdwSize);
+ BOOL WriteClient(LPVOID lpvBuffer, LPDWORD lpdwBytes, DWORD dwReserved = 0);
+ BOOL ReadClient(LPVOID lpvBuffer, LPDWORD lpdwSize);
+ BOOL ServerSupportFunction(DWORD dwHSERRequest,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType);
+
+ CHttpServerContext& operator<<(LPCTSTR psz);
+ CHttpServerContext& operator<<(long int dw);
+ CHttpServerContext& operator<<(short int w);
+ CHttpServerContext& operator<<(CHtmlStream& stream);
+ CHttpServerContext& operator<<(double d);
+ CHttpServerContext& operator<<(float f);
+
+ void Reset();
+
+// Attributes
+ EXTENSION_CONTROL_BLOCK* const m_pECB;
+ CHtmlStream* m_pStream;
+ DWORD m_dwEndOfHeaders;
+#ifdef _DEBUG
+ DWORD m_dwOldEndOfHeaders;
+#endif
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// Internet Information Server Extension Support
+
+class CHttpServer
+{
+public:
+ CHttpServer(TCHAR cDelimiter = '&');
+ virtual ~CHttpServer();
+
+ enum errors {
+ callOK = 0, // everything is fine
+ callParamRequired, // a required parameter was missing
+ callBadParamCount, // there were too many or too few parameters
+ callBadCommand, // the command name was not found
+ callNoStackSpace, // no stack space was available
+ callNoStream, // no CHtmlStream was available
+ callMissingQuote, // a parameter had a bad format
+ callMissingParams, // no parameters were available
+ callBadParam, // a paremeter had a bad format (ie, only one quote)
+ };
+
+// overridables
+ virtual int CallFunction(CHttpServerContext* pCtxt,
+ LPTSTR pszQuery, LPTSTR pszCommand);
+ virtual BOOL OnParseError(CHttpServerContext* pCtxt, int nCause);
+
+// operations
+ virtual void EndContent(CHttpServerContext* pCtxt) const;
+ virtual void StartContent(CHttpServerContext* pCtxt) const;
+ virtual void WriteTitle(CHttpServerContext* pCtxt) const;
+ virtual LPCTSTR GetTitle() const;
+ void AddHeader(CHttpServerContext* pCtxt, LPCTSTR pszString) const;
+
+ virtual DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB);
+ virtual BOOL GetExtensionVersion(HSE_VERSION_INFO *pVer);
+ virtual CHtmlStream* ConstructStream();
+
+ virtual BOOL InitInstance(CHttpServerContext* pCtxt);
+
+// implementation
+
+protected:
+ UINT PASCAL GetStackSize(const BYTE* pbParams);
+ int CallMemberFunc(CHttpServerContext* pCtxt,
+ const AFX_PARSEMAP_ENTRY* pEntry,
+ AFX_PARSEMAP_ENTRY* pParams, LPTSTR szParams);
+ LPTSTR GetQuery(CHttpServerContext* pCtxt,
+ LPTSTR lpszQuery, DWORD cbQuery);
+ const AFX_PARSEMAP_ENTRY* LookUp(LPCTSTR szMethod,
+ const AFX_PARSEMAP*& pMap, AFX_PARSEMAP_ENTRY*& pParams,
+ AFX_PISAPICMD pCmdDefault = NULL);
+ int CountParams(LPCTSTR pszCommandLine, int& nCount);
+ int ParseDefaultParams(AFX_PARSEMAP_ENTRY* pParams,
+ int nParams, AFX_PARSEMAP_ENTRY_PARAMS*& pBlock,
+ const BYTE* pbTypes);
+ LPVOID PreprocessString(LPTSTR psz);
+ void BuildStatusCode(LPTSTR szResponse, DWORD dwCode);
+
+#if defined(_PPC_) || defined(_MPPC_)
+ int PushDefaultStackArgs(BYTE* pStack,
+ CHttpServerContext* pCtxt, const BYTE* pbParams,
+ LPTSTR lpszParams, AFX_PARSEMAP_ENTRY_PARAMS* pDefParams,
+ int nSizeArgs);
+ int PushStackArgs(BYTE* pStack, CHttpServerContext* pCtxt,
+ const BYTE* pbParams, LPTSTR lpszParams, UINT nSizeArgs);
+ BYTE* StoreStackParameter(BYTE* pStack, BYTE nType,
+ LPTSTR pszCurParam, UINT nSizeArgs, BOOL bDoShadow);
+ BYTE* StoreRawStackParameter(BYTE* pStack, BYTE nType,
+ BYTE* pRawParam, int nSizeArgs);
+#else
+ int PushDefaultStackArgs(BYTE* pStack,
+ CHttpServerContext* pCtxt, const BYTE* pbParams,
+ LPTSTR lpszParams, AFX_PARSEMAP_ENTRY_PARAMS* pDefParams);
+ int PushStackArgs(BYTE* pStack, CHttpServerContext* pCtxt,
+ const BYTE* pbParams, LPTSTR lpszParams);
+ BYTE* StoreStackParameter(BYTE* pStack, BYTE nType, LPTSTR pszParam);
+ BYTE* StoreRawStackParameter(BYTE* pStack, BYTE nType, BYTE* pRawParam);
+#endif
+
+ LPCRITICAL_SECTION m_pCritSec;
+ const TCHAR m_cTokenDelimiter; // can't EVER change
+
+ DECLARE_PARSE_MAP()
+};
+
+extern "C" BOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO *pVer);
+extern "C" DWORD WINAPI HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB);
+
+struct AFX_PARSEMAP_ENTRY
+{
+ LPTSTR pszFnName; // if default param entry, ptr to AFX_PARSEMAP_ENTRY_PARAMS
+ AFX_PISAPICMD pfn; // NULL if default param entry
+ LPSTR pszArgs; // NULL if default function entry
+};
+
+///////////////////////////////////////////////////////////////////////
+// Constants to describe parameter types
+
+#define ITS_EMPTY "\x06" // no parameters
+#define ITS_I2 "\x01" // a 'short'
+#define ITS_I4 "\x02" // a 'long'
+#define ITS_R4 "\x03" // a 'float'
+#define ITS_R8 "\x04" // a 'double'
+#define ITS_PSTR "\x05" // a 'LPCTSTR'
+
+enum INETVARENUM
+{
+ IT_I2 = 1,
+ IT_I4 = 2,
+ IT_R4 = 3,
+ IT_R8 = 4,
+ IT_PSTR = 5,
+ IT_EMPTY = 6,
+};
+
+
+///////////////////////////////////////////////////////////////////////
+// Internet Information Server Entry Points
+
+extern "C" DWORD WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc,
+ DWORD dwNotificationType, LPVOID pvNotification);
+
+extern "C" BOOL WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer);
+
+
+///////////////////////////////////////////////////////////////////////
+// Internet Information Server Filter Support
+
+class CHttpFilterContext
+{
+public:
+ CHttpFilterContext(PHTTP_FILTER_CONTEXT pfc);
+ ~CHttpFilterContext() { }
+
+ BOOL GetServerVariable(LPTSTR lpszVariableName, LPVOID lpvBuffer,
+ LPDWORD lpdwSize);
+ BOOL AddResponseHeaders(LPTSTR lpszHeaders, DWORD dwReserved = 0);
+ BOOL WriteClient(LPVOID lpvBuffer, LPDWORD lpdwBytes,
+ DWORD dwReserved = 0);
+ LPVOID AllocMem(DWORD cbSize, DWORD dwReserved = 0);
+ BOOL ServerSupportFunction(enum SF_REQ_TYPE sfReq,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType);
+
+ PHTTP_FILTER_CONTEXT const m_pFC;
+};
+
+
+///////////////////////////////////////////////////////////////////////
+//
+
+class CHttpFilter
+{
+public:
+ CHttpFilter();
+ ~CHttpFilter();
+
+protected:
+
+public:
+ virtual DWORD HttpFilterProc(PHTTP_FILTER_CONTEXT pfc,
+ DWORD dwNotificationType, LPVOID pvNotification);
+ virtual BOOL GetFilterVersion(PHTTP_FILTER_VERSION pVer);
+
+ virtual DWORD OnReadRawData(CHttpFilterContext* pfc, PHTTP_FILTER_RAW_DATA pRawData);
+ virtual DWORD OnPreprocHeaders(CHttpFilterContext* pfc, PHTTP_FILTER_PREPROC_HEADERS pHeaders);
+ virtual DWORD OnAuthentication(CHttpFilterContext* pfc, PHTTP_FILTER_AUTHENT pAuthent);
+ virtual DWORD OnUrlMap(CHttpFilterContext* pfc, PHTTP_FILTER_URL_MAP pUrlMap);
+ virtual DWORD OnSendRawData(CHttpFilterContext* pfc, PHTTP_FILTER_RAW_DATA pRawData);
+ virtual DWORD OnLog(CHttpFilterContext* pfc, PHTTP_FILTER_LOG pLog);
+ virtual DWORD OnEndOfNetSession(CHttpFilterContext* pfc);
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Alternate debugging suppot
+
+#include <crtdbg.h>
+
+#ifdef _AFX
+#define ISAPIASSERT(expr) ASSERT(expr)
+#define ISAPITRACE(str) TRACE(str)
+#define ISAPITRACE0(str) TRACE0(str)
+#define ISAPITRACE1(str, arg1) TRACE1(str, arg1)
+#define ISAPITRACE2(str, arg1, arg2) TRACE2(str, arg1, arg2)
+#define ISAPITRACE3(str, arg1, arg2, arg3) TRACE3(str, arg1, arg2, arg3)
+#define ISAPIVERIFY(f) ASSERT(f)
+#else
+#define ISAPIASSERT(expr) _ASSERTE(expr)
+#define ISAPITRACE(str) _RPT0(_CRT_WARN, str)
+#define ISAPITRACE0(str) _RPT0(_CRT_WARN, str)
+#define ISAPITRACE1(str, arg1) _RPT1(_CRT_WARN, str, arg1)
+#define ISAPITRACE2(str, arg1, arg2) _RPT2(_CRT_WARN, str, arg1, arg2)
+#define ISAPITRACE3(str, arg1, arg2, arg3) _RPT3(_CRT_WARN, arg1, arg2, arg3)
+#ifdef _DEBUG
+#define ISAPIVERIFY(expr) _ASSERTE(expr)
+#else
+#define ISAPIVERIFY(expr) ((void)(expr))
+#endif
+#endif
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXISAPI_INLINE inline
+#include <afxisapi.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // the whole file
diff --git a/public/sdk/inc/mfc42/afxisapi.inl b/public/sdk/inc/mfc42/afxisapi.inl
new file mode 100644
index 000000000..fabf1e370
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxisapi.inl
@@ -0,0 +1,121 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXISAPI.H
+
+#ifdef _AFXISAPI_INLINE
+
+_AFXISAPI_INLINE CHttpServerContext::CHttpServerContext(EXTENSION_CONTROL_BLOCK* pECB)
+#ifdef _DEBUG
+ : m_pECB(pECB), m_pStream(NULL), m_dwEndOfHeaders(0), m_dwOldEndOfHeaders(0)
+#else
+ : m_pECB(pECB), m_pStream(NULL), m_dwEndOfHeaders(0)
+#endif
+ { }
+
+_AFXISAPI_INLINE CHttpServerContext::~CHttpServerContext()
+ { if (m_pStream != NULL) delete m_pStream; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(double d)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << d;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(float f)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << f;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(long int dw)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << dw;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(short int w)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << w;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(CHtmlStream& stream)
+ { ISAPIASSERT(m_pStream != NULL);
+ if (m_pStream != NULL) *m_pStream << stream;
+ return *this; }
+
+_AFXISAPI_INLINE CHttpServerContext& CHttpServerContext::operator<<(LPCTSTR psz)
+ { ISAPIASSERT(m_pStream != NULL && psz != NULL);
+ if (m_pStream != NULL && psz != NULL) *m_pStream << psz;
+ return *this; }
+
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::GetServerVariable(LPTSTR lpszVariableName,
+ LPVOID lpvBuffer, LPDWORD lpdwSize)
+ {
+ return m_pECB->GetServerVariable(m_pECB->ConnID,
+ lpszVariableName, lpvBuffer, lpdwSize);
+ }
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::WriteClient(LPVOID pBuffer, LPDWORD lpdwBytes,
+ DWORD dwReserved /* = 0 */)
+ {
+ return m_pECB->WriteClient(m_pECB->ConnID, pBuffer,
+ lpdwBytes, dwReserved);
+ }
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::ReadClient(LPVOID lpvBuffer, LPDWORD lpdwSize)
+ {
+ return m_pECB->ReadClient(m_pECB->ConnID, lpvBuffer, lpdwSize);
+ }
+
+_AFXISAPI_INLINE BOOL CHttpServerContext::ServerSupportFunction(DWORD dwHSERRequest,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType)
+ {
+ return m_pECB->ServerSupportFunction(m_pECB->ConnID, dwHSERRequest,
+ lpvBuffer, lpdwSize, lpdwDataType);
+ }
+
+
+_AFXISAPI_INLINE DWORD CHtmlStream::GetStreamSize() const
+ { return m_nStreamSize; }
+
+
+_AFXISAPI_INLINE CHttpFilterContext::CHttpFilterContext(PHTTP_FILTER_CONTEXT pCtx)
+ : m_pFC(pCtx)
+ { }
+
+_AFXISAPI_INLINE BOOL CHttpFilterContext::GetServerVariable(LPTSTR lpszVariableName,
+ LPVOID lpvBuffer, LPDWORD lpdwSize)
+ {
+ return m_pFC->GetServerVariable(m_pFC, lpszVariableName, lpvBuffer, lpdwSize);
+ }
+_AFXISAPI_INLINE BOOL CHttpFilterContext::AddResponseHeaders(LPTSTR lpszHeaders,
+ DWORD dwReserved /* = 0 */)
+ {
+ return m_pFC->AddResponseHeaders(m_pFC, lpszHeaders, dwReserved);
+ }
+_AFXISAPI_INLINE BOOL CHttpFilterContext::WriteClient(LPVOID lpvBuffer,
+ LPDWORD lpdwBytes, DWORD dwReserved /* = 0 */)
+ {
+ return m_pFC->WriteClient(m_pFC, lpvBuffer, lpdwBytes, dwReserved);
+ }
+_AFXISAPI_INLINE LPVOID CHttpFilterContext::AllocMem(DWORD cbSize,
+ DWORD dwReserved /* = 0 */)
+ {
+ return m_pFC->AllocMem(m_pFC, cbSize, dwReserved);
+ }
+_AFXISAPI_INLINE BOOL CHttpFilterContext::ServerSupportFunction(enum SF_REQ_TYPE sfReq,
+ LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType)
+ {
+//WINBUG: HTTPFLT.H has the last two params as type DWORD
+ return m_pFC->ServerSupportFunction(m_pFC, sfReq, lpvBuffer,
+ (DWORD) lpdwSize, (DWORD) lpdwDataType);
+ }
+
+
+#endif // _AFXISAPI_INLINE
diff --git a/public/sdk/inc/mfc42/afxisapi.rc b/public/sdk/inc/mfc42/afxisapi.rc
new file mode 100644
index 000000000..8eeefce07
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxisapi.rc
@@ -0,0 +1,45 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXISAPI_RC__
+#define __AFXISAPI_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// ISAPI HTML Text for HTTP error conditions
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_HTTP_TITLE "<HEAD><TITLE>HTTP Error %d</TITLE></HEAD>"
+ AFX_IDS_HTTP_NO_TEXT "<BODY><H1>HTTP Error %d: No message available</H1></BODY>\r\n"
+ AFX_IDS_HTTP_BAD_REQUEST "<BODY><H1>BAD REQUEST</H1><P>Your client sent a request that this server didn't understand.<br>Request: %s\r\n"
+ AFX_IDS_HTTP_AUTH_REQUIRED "<BODY><H1>AUTH REQUIRED</H1><P>Browser not authentication-capable or authentication failed.</BODY>\r\n"
+ AFX_IDS_HTTP_FORBIDDEN "<BODY><H1>FORBIDDEN</H1><P>Your client does not have permission to get this URL from the server.</BODY>\r\n"
+ AFX_IDS_HTTP_NOT_FOUND "<BODY><H1>NOT FOUND</H1><P>The requested URL was not found on this server.</BODY>\r\n"
+ AFX_IDS_HTTP_SERVER_ERROR "<BODY><H1>SERVER ERROR</H1>The server encountered an internal error or misconfiguration and was unable to complete your request.</BODY>\r\n"
+ AFX_IDS_HTTP_NOT_IMPLEMENTED "<BODY><H1>NOT IMPLEMENTED</H1>The server is unable to perform the method <b>%s</b> at this time.</BODY>\r\n"
+END
+
+
+#endif //!_AFXDLL
+#endif //!__AFXISAPI_RC__
diff --git a/public/sdk/inc/mfc42/afxmsg_.h b/public/sdk/inc/mfc42/afxmsg_.h
new file mode 100644
index 000000000..73feb1f05
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxmsg_.h
@@ -0,0 +1,695 @@
+
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Do not include this file directly (included by AFXWIN.H)
+
+/////////////////////////////////////////////////////////////////////////////
+
+// Entries in a message map (a 'AFX_MSGMAP_ENTRY') table can be of 9 formats
+//
+// 1) control notification message (i.e. in response to WM_COMMAND)
+// WM_COMMAND, nNotifyCode, nControlID, nControlID, signature type, parameterless member function
+// (eg: WM_COMMAND, LBN_SELCHANGE, IDC_LISTBOX, AfxSig_vv, ... )
+// 2) control notification message range (i.e. in response to WM_COMMAND)
+// WM_COMMAND, nNotifyCode, nControlIDFirst, nControlIDLast, signature type, parameterless member function
+// (eg: WM_COMMAND, LBN_SELCHANGE, IDC_LISTBOX1, IDC_LISTBOX5, AfxSig_vw, ... )
+// 3) WM_NOTIFY notification
+// WM_NOTIFY, nNotifyCode, nControlID, nControlID, signature type, ...)
+// 3) Update Command UI
+// -1, 0, nControlID, 0, signature Unknown, parameterless member function
+// 4) Update Command UI Range
+// -1, 0, nControlIDFirst, nControlIDLast, signature Unknown, parameterless member function
+// 5) menu/accelerator notification message (i.e. special case of first format)
+// WM_COMMAND, 0, nID, 0, signature type, parameterless member function
+// (eg: WM_COMMAND, 0, IDM_FILESAVE, 0, AfxSig_vv, ... )
+// 6) menu/accelerator notification message range
+// WM_COMMAND, 0, nIDFirst, nIDLast, signature type, parameterless member function
+// (eg: WM_COMMAND, 0, IDM_FILE_MRU1, IDM_FILE_MRU4, AfxSig_vw, ... )
+// 7) constant windows message
+// nMessage, 0, 0, 0, signature type, member function
+// (eg: WM_PAINT, 0, ...)
+// 8) variable windows message (using RegisterWindowMessage)
+// 0xC000, 0, 0, 0, &nMessage, special member function
+//
+// The end of the message map is marked with a special value
+// 0, 0, AfxSig_end, 0
+/////////////////////////////////////////////////////////////////////////////
+
+enum AfxSig
+{
+ AfxSig_end = 0, // [marks end of message map]
+
+ AfxSig_bD, // BOOL (CDC*)
+ AfxSig_bb, // BOOL (BOOL)
+ AfxSig_bWww, // BOOL (CWnd*, UINT, UINT)
+ AfxSig_hDWw, // HBRUSH (CDC*, CWnd*, UINT)
+ AfxSig_hDw, // HBRUSH (CDC*, UINT)
+ AfxSig_iwWw, // int (UINT, CWnd*, UINT)
+ AfxSig_iww, // int (UINT, UINT)
+ AfxSig_iWww, // int (CWnd*, UINT, UINT)
+ AfxSig_is, // int (LPTSTR)
+ AfxSig_lwl, // LRESULT (WPARAM, LPARAM)
+ AfxSig_lwwM, // LRESULT (UINT, UINT, CMenu*)
+ AfxSig_vv, // void (void)
+
+ AfxSig_vw, // void (UINT)
+ AfxSig_vww, // void (UINT, UINT)
+ AfxSig_vvii, // void (int, int) // wParam is ignored
+ AfxSig_vwww, // void (UINT, UINT, UINT)
+ AfxSig_vwii, // void (UINT, int, int)
+ AfxSig_vwl, // void (UINT, LPARAM)
+ AfxSig_vbWW, // void (BOOL, CWnd*, CWnd*)
+ AfxSig_vD, // void (CDC*)
+ AfxSig_vM, // void (CMenu*)
+ AfxSig_vMwb, // void (CMenu*, UINT, BOOL)
+
+ AfxSig_vW, // void (CWnd*)
+ AfxSig_vWww, // void (CWnd*, UINT, UINT)
+ AfxSig_vWp, // void (CWnd*, CPoint)
+ AfxSig_vWh, // void (CWnd*, HANDLE)
+ AfxSig_vwW, // void (UINT, CWnd*)
+ AfxSig_vwWb, // void (UINT, CWnd*, BOOL)
+ AfxSig_vwwW, // void (UINT, UINT, CWnd*)
+ AfxSig_vwwx, // void (UINT, UINT)
+ AfxSig_vs, // void (LPTSTR)
+ AfxSig_vOWNER, // void (int, LPTSTR), force return TRUE
+ AfxSig_iis, // int (int, LPTSTR)
+ AfxSig_wp, // UINT (CPoint)
+ AfxSig_wv, // UINT (void)
+ AfxSig_vPOS, // void (WINDOWPOS*)
+ AfxSig_vCALC, // void (BOOL, NCCALCSIZE_PARAMS*)
+ AfxSig_vNMHDRpl, // void (NMHDR*, LRESULT*)
+ AfxSig_bNMHDRpl, // BOOL (NMHDR*, LRESULT*)
+ AfxSig_vwNMHDRpl, // void (UINT, NMHDR*, LRESULT*)
+ AfxSig_bwNMHDRpl, // BOOL (UINT, NMHDR*, LRESULT*)
+ AfxSig_bHELPINFO, // BOOL (HELPINFO*)
+ AfxSig_vwSIZING, // void (UINT, LPRECT) -- return TRUE
+
+ // signatures specific to CCmdTarget
+ AfxSig_cmdui, // void (CCmdUI*)
+ AfxSig_cmduiw, // void (CCmdUI*, UINT)
+ AfxSig_vpv, // void (void*)
+ AfxSig_bpv, // BOOL (void*)
+
+ // Other aliases (based on implementation)
+ AfxSig_vwwh, // void (UINT, UINT, HANDLE)
+ AfxSig_vwp, // void (UINT, CPoint)
+ AfxSig_bw = AfxSig_bb, // BOOL (UINT)
+ AfxSig_bh = AfxSig_bb, // BOOL (HANDLE)
+ AfxSig_iw = AfxSig_bb, // int (UINT)
+ AfxSig_ww = AfxSig_bb, // UINT (UINT)
+ AfxSig_bv = AfxSig_wv, // BOOL (void)
+ AfxSig_hv = AfxSig_wv, // HANDLE (void)
+ AfxSig_vb = AfxSig_vw, // void (BOOL)
+ AfxSig_vbh = AfxSig_vww, // void (BOOL, HANDLE)
+ AfxSig_vbw = AfxSig_vww, // void (BOOL, UINT)
+ AfxSig_vhh = AfxSig_vww, // void (HANDLE, HANDLE)
+ AfxSig_vh = AfxSig_vw, // void (HANDLE)
+ AfxSig_viSS = AfxSig_vwl, // void (int, STYLESTRUCT*)
+ AfxSig_bwl = AfxSig_lwl,
+ AfxSig_vwMOVING = AfxSig_vwSIZING, // void (UINT, LPRECT) -- return TRUE
+
+ AfxSig_vW2, // void (CWnd*) (CWnd* comes from lParam)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Command notifications for CCmdTarget notifications
+
+#define CN_COMMAND 0 // void ()
+#define CN_UPDATE_COMMAND_UI ((UINT)(-1)) // void (CCmdUI*)
+#define CN_EVENT ((UINT)(-2)) // OLE event
+#define CN_OLECOMMAND ((UINT)(-3)) // OLE document command
+// > 0 are control notifications
+
+#define ON_COMMAND(id, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, (AFX_PMSG)&memberFxn },
+ // ON_COMMAND(id, OnFoo) is the same as
+ // ON_CONTROL(0, id, OnFoo) or ON_BN_CLICKED(0, id, OnFoo)
+
+#define ON_COMMAND_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_vw, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
+ // ON_COMMAND_RANGE(id, idLast, OnFoo) is the same as
+ // ON_CONTROL_RANGE(0, id, idLast, OnFoo)
+
+#define ON_COMMAND_EX(id, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_bw, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
+
+#define ON_COMMAND_EX_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_bw, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
+
+// update ui's are listed as WM_COMMAND's so they get routed like commands
+#define ON_UPDATE_COMMAND_UI(id, memberFxn) \
+ { WM_COMMAND, CN_UPDATE_COMMAND_UI, (WORD)id, (WORD)id, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))&memberFxn },
+
+#define ON_UPDATE_COMMAND_UI_RANGE(id, idLast, memberFxn) \
+ { WM_COMMAND, CN_UPDATE_COMMAND_UI, (WORD)id, (WORD)idLast, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))&memberFxn },
+
+#define ON_NOTIFY(wNotifyCode, id, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_vNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))&memberFxn },
+
+#define ON_NOTIFY_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_vwNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },
+
+#define ON_NOTIFY_EX(wNotifyCode, id, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_bwNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },
+
+#define ON_NOTIFY_EX_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_bwNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },
+
+// for general controls
+#define ON_CONTROL(wNotifyCode, id, memberFxn) \
+ { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)id, AfxSig_vv, \
+ (AFX_PMSG)&memberFxn },
+
+#define ON_CONTROL_RANGE(wNotifyCode, id, idLast, memberFxn) \
+ { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_vw, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
+
+#define WM_REFLECT_BASE 0xBC00
+
+// for control notification reflection
+#define ON_CONTROL_REFLECT(wNotifyCode, memberFxn) \
+ { WM_COMMAND+WM_REFLECT_BASE, (WORD)wNotifyCode, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)&memberFxn },
+
+#define ON_CONTROL_REFLECT_EX(wNotifyCode, memberFxn) \
+ { WM_COMMAND+WM_REFLECT_BASE, (WORD)wNotifyCode, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)())&memberFxn },
+
+#define ON_NOTIFY_REFLECT(wNotifyCode, memberFxn) \
+ { WM_NOTIFY+WM_REFLECT_BASE, (WORD)(int)wNotifyCode, 0, 0, AfxSig_vNMHDRpl, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))&memberFxn },
+
+#define ON_NOTIFY_REFLECT_EX(wNotifyCode, memberFxn) \
+ { WM_NOTIFY+WM_REFLECT_BASE, (WORD)(int)wNotifyCode, 0, 0, AfxSig_bNMHDRpl, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))&memberFxn },
+
+#define ON_UPDATE_COMMAND_UI_REFLECT(memberFxn) \
+ { WM_COMMAND+WM_REFLECT_BASE, CN_UPDATE_COMMAND_UI, 0, 0, AfxSig_cmdui, \
+ (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))&memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
+// Message map tables for Windows messages
+
+#define ON_WM_CREATE() \
+ { WM_CREATE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))&OnCreate },
+#define ON_WM_DESTROY() \
+ { WM_DESTROY, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnDestroy },
+#define ON_WM_MOVE() \
+ { WM_MOVE, 0, 0, 0, AfxSig_vvii, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, int))&OnMove },
+#define ON_WM_SIZE() \
+ { WM_SIZE, 0, 0, 0, AfxSig_vwii, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, int, int))&OnSize },
+#define ON_WM_ACTIVATE() \
+ { WM_ACTIVATE, 0, 0, 0, AfxSig_vwWb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CWnd*, BOOL))&OnActivate },
+#define ON_WM_SETFOCUS() \
+ { WM_SETFOCUS, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnSetFocus },
+#define ON_WM_KILLFOCUS() \
+ { WM_KILLFOCUS, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnKillFocus },
+#define ON_WM_ENABLE() \
+ { WM_ENABLE, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnEnable },
+#define ON_WM_HELPINFO() \
+ { WM_HELP, 0, 0, 0, AfxSig_bHELPINFO, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(HELPINFO*))&OnHelpInfo },
+#define ON_WM_PAINT() \
+ { WM_PAINT, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnPaint },
+#define ON_WM_CLOSE() \
+ { WM_CLOSE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnClose },
+#define ON_WM_QUERYENDSESSION() \
+ { WM_QUERYENDSESSION, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))&OnQueryEndSession },
+#define ON_WM_QUERYOPEN() \
+ { WM_QUERYOPEN, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))&OnQueryOpen },
+#define ON_WM_ERASEBKGND() \
+ { WM_ERASEBKGND, 0, 0, 0, AfxSig_bD, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CDC*))&OnEraseBkgnd },
+#define ON_WM_SYSCOLORCHANGE() \
+ { WM_SYSCOLORCHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnSysColorChange },
+#define ON_WM_ENDSESSION() \
+ { WM_ENDSESSION, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnEndSession },
+#define ON_WM_SHOWWINDOW() \
+ { WM_SHOWWINDOW, 0, 0, 0, AfxSig_vbw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, UINT))&OnShowWindow },
+#define ON_WM_CTLCOLOR() \
+ { WM_CTLCOLOR, 0, 0, 0, AfxSig_hDWw, \
+ (AFX_PMSG)(AFX_PMSGW)(HBRUSH (AFX_MSG_CALL CWnd::*)(CDC*, CWnd*, UINT))&OnCtlColor },
+#define ON_WM_CTLCOLOR_REFLECT() \
+ { WM_CTLCOLOR+WM_REFLECT_BASE, 0, 0, 0, AfxSig_hDw, \
+ (AFX_PMSG)(AFX_PMSGW)(HBRUSH (AFX_MSG_CALL CWnd::*)(CDC*, UINT))CtlColor },
+#define ON_WM_WININICHANGE() \
+ { WM_WININICHANGE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPCTSTR))&OnWinIniChange },
+#define ON_WM_DEVMODECHANGE() \
+ { WM_DEVMODECHANGE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPTSTR))&OnDevModeChange },
+#define ON_WM_ACTIVATEAPP() \
+ { WM_ACTIVATEAPP, 0, 0, 0, AfxSig_vbh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, HTASK))&OnActivateApp },
+#define ON_WM_FONTCHANGE() \
+ { WM_FONTCHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnFontChange },
+#define ON_WM_TIMECHANGE() \
+ { WM_TIMECHANGE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnTimeChange },
+#define ON_WM_CANCELMODE() \
+ { WM_CANCELMODE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnCancelMode },
+#define ON_WM_SETCURSOR() \
+ { WM_SETCURSOR, 0, 0, 0, AfxSig_bWww, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnSetCursor },
+#define ON_WM_MOUSEACTIVATE() \
+ { WM_MOUSEACTIVATE, 0, 0, 0, AfxSig_iWww, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnMouseActivate },
+#define ON_WM_CHILDACTIVATE() \
+ { WM_CHILDACTIVATE, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnChildActivate },
+#define ON_WM_GETMINMAXINFO() \
+ { WM_GETMINMAXINFO, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(MINMAXINFO*))&OnGetMinMaxInfo },
+#define ON_WM_ICONERASEBKGND() \
+ { WM_ICONERASEBKGND, 0, 0, 0, AfxSig_vD, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CDC*))&OnIconEraseBkgnd },
+#define ON_WM_SPOOLERSTATUS() \
+ { WM_SPOOLERSTATUS, 0, 0, 0, AfxSig_vww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))&OnSpoolerStatus },
+#define ON_WM_DRAWITEM() \
+ { WM_DRAWITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPDRAWITEMSTRUCT))&OnDrawItem },
+#define ON_WM_DRAWITEM_REFLECT() \
+ { WM_DRAWITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPDRAWITEMSTRUCT))DrawItem },
+#define ON_WM_MEASUREITEM() \
+ { WM_MEASUREITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPMEASUREITEMSTRUCT))&OnMeasureItem },
+#define ON_WM_MEASUREITEM_REFLECT() \
+ { WM_MEASUREITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPMEASUREITEMSTRUCT))MeasureItem },
+#define ON_WM_DELETEITEM() \
+ { WM_DELETEITEM, 0, 0, 0, AfxSig_vOWNER, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPDELETEITEMSTRUCT))&OnDeleteItem },
+#define ON_WM_DELETEITEM_REFLECT() \
+ { WM_DELETEITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPDELETEITEMSTRUCT))DeleteItem },
+#define ON_WM_CHARTOITEM() \
+ { WM_CHARTOITEM, 0, 0, 0, AfxSig_iwWw, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, CListBox*, UINT))&OnCharToItem },
+#define ON_WM_CHARTOITEM_REFLECT() \
+ { WM_CHARTOITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_iww, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, UINT))CharToItem },
+#define ON_WM_VKEYTOITEM() \
+ { WM_VKEYTOITEM, 0, 0, 0, AfxSig_iwWw, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, CListBox*, UINT))&OnVKeyToItem },
+#define ON_WM_VKEYTOITEM_REFLECT() \
+ { WM_VKEYTOITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_iww, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, UINT))VKeyToItem },
+#define ON_WM_QUERYDRAGICON() \
+ { WM_QUERYDRAGICON, 0, 0, 0, AfxSig_hv, \
+ (AFX_PMSG)(AFX_PMSGW)(HCURSOR (AFX_MSG_CALL CWnd::*)())&OnQueryDragIcon },
+#define ON_WM_COMPAREITEM() \
+ { WM_COMPAREITEM, 0, 0, 0, AfxSig_iis, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(int, LPCOMPAREITEMSTRUCT))&OnCompareItem },
+#define ON_WM_COMPAREITEM_REFLECT() \
+ { WM_COMPAREITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCOMPAREITEMSTRUCT))CompareItem },
+#define ON_WM_COMPACTING() \
+ { WM_COMPACTING, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))&OnCompacting },
+#define ON_WM_NCCREATE() \
+ { WM_NCCREATE, 0, 0, 0, AfxSig_is, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))&OnNcCreate },
+#define ON_WM_NCDESTROY() \
+ { WM_NCDESTROY, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnNcDestroy },
+#define ON_WM_NCCALCSIZE() \
+ { WM_NCCALCSIZE, 0, 0, 0, AfxSig_vCALC, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, NCCALCSIZE_PARAMS*))&OnNcCalcSize },
+#define ON_WM_NCHITTEST() \
+ { WM_NCHITTEST, 0, 0, 0, AfxSig_wp, \
+ (AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(CPoint))&OnNcHitTest },
+#define ON_WM_NCPAINT() \
+ { WM_NCPAINT, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnNcPaint },
+#define ON_WM_NCACTIVATE() \
+ { WM_NCACTIVATE, 0, 0, 0, AfxSig_bb, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(BOOL))&OnNcActivate },
+#define ON_WM_GETDLGCODE() \
+ { WM_GETDLGCODE, 0, 0, 0, AfxSig_wv, \
+ (AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(void))&OnGetDlgCode },
+#define ON_WM_NCMOUSEMOVE() \
+ { WM_NCMOUSEMOVE, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMouseMove },
+#define ON_WM_NCLBUTTONDOWN() \
+ { WM_NCLBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcLButtonDown },
+#define ON_WM_NCLBUTTONUP() \
+ { WM_NCLBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcLButtonUp },
+#define ON_WM_NCLBUTTONDBLCLK() \
+ { WM_NCLBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcLButtonDblClk },
+#define ON_WM_NCRBUTTONDOWN() \
+ { WM_NCRBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcRButtonDown },
+#define ON_WM_NCRBUTTONUP() \
+ { WM_NCRBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcRButtonUp },
+#define ON_WM_NCRBUTTONDBLCLK() \
+ { WM_NCRBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcRButtonDblClk },
+#define ON_WM_NCMBUTTONDOWN() \
+ { WM_NCMBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMButtonDown },
+#define ON_WM_NCMBUTTONUP() \
+ { WM_NCMBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMButtonUp },
+#define ON_WM_NCMBUTTONDBLCLK() \
+ { WM_NCMBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMButtonDblClk },
+#define ON_WM_KEYDOWN() \
+ { WM_KEYDOWN, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnKeyDown },
+#define ON_WM_KEYUP() \
+ { WM_KEYUP, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnKeyUp },
+#define ON_WM_CHAR() \
+ { WM_CHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnChar },
+#define ON_WM_DEADCHAR() \
+ { WM_DEADCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnDeadChar },
+#define ON_WM_SYSKEYDOWN() \
+ { WM_SYSKEYDOWN, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysKeyDown },
+#define ON_WM_SYSKEYUP() \
+ { WM_SYSKEYUP, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysKeyUp },
+#define ON_WM_SYSCHAR() \
+ { WM_SYSCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysChar },
+#define ON_WM_SYSDEADCHAR() \
+ { WM_SYSDEADCHAR, 0, 0, 0, AfxSig_vwww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysDeadChar },
+#define ON_WM_SYSCOMMAND() \
+ { WM_SYSCOMMAND, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))&OnSysCommand },
+#define ON_WM_TCARD() \
+ { WM_TCARD, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, DWORD))&OnTCard },
+#define ON_WM_TIMER() \
+ { WM_TIMER, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))&OnTimer },
+#define ON_WM_HSCROLL() \
+ { WM_HSCROLL, 0, 0, 0, AfxSig_vwwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, CScrollBar*))&OnHScroll },
+#define ON_WM_HSCROLL_REFLECT() \
+ { WM_HSCROLL+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwwx, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))HScroll },
+#define ON_WM_VSCROLL() \
+ { WM_VSCROLL, 0, 0, 0, AfxSig_vwwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, CScrollBar*))&OnVScroll },
+#define ON_WM_VSCROLL_REFLECT() \
+ { WM_VSCROLL+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwwx, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))VScroll },
+#define ON_WM_INITMENU() \
+ { WM_INITMENU, 0, 0, 0, AfxSig_vM, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CMenu*))&OnInitMenu },
+#define ON_WM_INITMENUPOPUP() \
+ { WM_INITMENUPOPUP, 0, 0, 0, AfxSig_vMwb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CMenu*, UINT, BOOL))&OnInitMenuPopup },
+#define ON_WM_MENUSELECT() \
+ { WM_MENUSELECT, 0, 0, 0, AfxSig_vwwh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, HMENU))&OnMenuSelect },
+#define ON_WM_MENUCHAR() \
+ { WM_MENUCHAR, 0, 0, 0, AfxSig_lwwM, \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(UINT, UINT, CMenu*))&OnMenuChar },
+#define ON_WM_ENTERIDLE() \
+ { WM_ENTERIDLE, 0, 0, 0, AfxSig_vwW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CWnd*))&OnEnterIdle },
+#define ON_WM_MOUSEMOVE() \
+ { WM_MOUSEMOVE, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMouseMove },
+#define ON_WM_LBUTTONDOWN() \
+ { WM_LBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonDown },
+#define ON_WM_LBUTTONUP() \
+ { WM_LBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonUp },
+#define ON_WM_LBUTTONDBLCLK() \
+ { WM_LBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonDblClk },
+#define ON_WM_RBUTTONDOWN() \
+ { WM_RBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnRButtonDown },
+#define ON_WM_RBUTTONUP() \
+ { WM_RBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnRButtonUp },
+#define ON_WM_RBUTTONDBLCLK() \
+ { WM_RBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnRButtonDblClk },
+#define ON_WM_MBUTTONDOWN() \
+ { WM_MBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMButtonDown },
+#define ON_WM_MBUTTONUP() \
+ { WM_MBUTTONUP, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMButtonUp },
+#define ON_WM_MBUTTONDBLCLK() \
+ { WM_MBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMButtonDblClk },
+#define ON_WM_PARENTNOTIFY() \
+ { WM_PARENTNOTIFY, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))&OnParentNotify },
+#define ON_WM_PARENTNOTIFY_REFLECT() \
+ { WM_PARENTNOTIFY+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))ParentNotify },
+#define ON_WM_MDIACTIVATE() \
+ { WM_MDIACTIVATE, 0, 0, 0, AfxSig_vbWW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, CWnd*, CWnd*))&OnMDIActivate },
+#define ON_WM_RENDERFORMAT() \
+ { WM_RENDERFORMAT, 0, 0, 0, AfxSig_vw, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))&OnRenderFormat },
+#define ON_WM_RENDERALLFORMATS() \
+ { WM_RENDERALLFORMATS, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnRenderAllFormats },
+#define ON_WM_DESTROYCLIPBOARD() \
+ { WM_DESTROYCLIPBOARD, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnDestroyClipboard },
+#define ON_WM_DRAWCLIPBOARD() \
+ { WM_DRAWCLIPBOARD, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnDrawClipboard },
+#define ON_WM_PAINTCLIPBOARD() \
+ { WM_PAINTCLIPBOARD, 0, 0, 0, AfxSig_vWh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, HGLOBAL))&OnPaintClipboard },
+#define ON_WM_VSCROLLCLIPBOARD() \
+ { WM_VSCROLLCLIPBOARD, 0, 0, 0, AfxSig_vWww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnVScrollClipboard },
+#define ON_WM_CONTEXTMENU() \
+ { WM_CONTEXTMENU, 0, 0, 0, AfxSig_vWp, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, CPoint))&OnContextMenu },
+#define ON_WM_SIZECLIPBOARD() \
+ { WM_SIZECLIPBOARD, 0, 0, 0, AfxSig_vWh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, HGLOBAL))&OnSizeClipboard },
+#define ON_WM_ASKCBFORMATNAME() \
+ { WM_ASKCBFORMATNAME, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPTSTR))&OnAskCbFormatName },
+#define ON_WM_CHANGECBCHAIN() \
+ { WM_CHANGECBCHAIN, 0, 0, 0, AfxSig_vhh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(HWND, HWND))&OnChangeCbChain },
+#define ON_WM_HSCROLLCLIPBOARD() \
+ { WM_HSCROLLCLIPBOARD, 0, 0, 0, AfxSig_vWww, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnHScrollClipboard },
+#define ON_WM_QUERYNEWPALETTE() \
+ { WM_QUERYNEWPALETTE, 0, 0, 0, AfxSig_bv, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))&OnQueryNewPalette },
+#define ON_WM_PALETTECHANGED() \
+ { WM_PALETTECHANGED, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnPaletteChanged },
+
+#define ON_WM_PALETTEISCHANGING() \
+ { WM_PALETTEISCHANGING, 0, 0, 0, AfxSig_vW, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnPaletteIsChanging },
+#define ON_WM_DROPFILES() \
+ { WM_DROPFILES, 0, 0, 0, AfxSig_vh, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(HDROP))&OnDropFiles },
+#define ON_WM_WINDOWPOSCHANGING() \
+ { WM_WINDOWPOSCHANGING, 0, 0, 0, AfxSig_vPOS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WINDOWPOS*))&OnWindowPosChanging },
+#define ON_WM_WINDOWPOSCHANGED() \
+ { WM_WINDOWPOSCHANGED, 0, 0, 0, AfxSig_vPOS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WINDOWPOS*))&OnWindowPosChanged },
+
+#define ON_WM_EXITMENULOOP() \
+ { WM_EXITMENULOOP, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnExitMenuLoop },
+#define ON_WM_ENTERMENULOOP() \
+ { WM_ENTERMENULOOP, 0, 0, 0, AfxSig_vb, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnEnterMenuLoop },
+
+#define ON_WM_STYLECHANGED() \
+ { WM_STYLECHANGED, 0, 0, 0, AfxSig_viSS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPSTYLESTRUCT))&OnStyleChanged },
+#define ON_WM_STYLECHANGING() \
+ { WM_STYLECHANGING, 0, 0, 0, AfxSig_viSS, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPSTYLESTRUCT))&OnStyleChanging },
+#define ON_WM_SIZING() \
+ { WM_SIZING, 0, 0, 0, AfxSig_vwSIZING, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPRECT))&OnSizing },
+#define ON_WM_MOVING() \
+ { WM_MOVING, 0, 0, 0, AfxSig_vwMOVING, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPRECT))&OnMoving },
+#define ON_WM_CAPTURECHANGED() \
+ { WM_CAPTURECHANGED, 0, 0, 0, AfxSig_vW2, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnCaptureChanged },
+#define ON_WM_DEVICECHANGE() \
+ { WM_DEVICECHANGE, 0, 0, 0, AfxSig_bwl, \
+ (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(UINT, DWORD))&OnDeviceChange },
+
+/////////////////////////////////////////////////////////////////////////////
+// Message map tables for Control Notification messages
+
+// Static control notification codes
+#define ON_STN_CLICKED(id, memberFxn) \
+ ON_CONTROL(STN_CLICKED, id, memberFxn)
+#define ON_STN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(STN_DBLCLK, id, memberFxn)
+#define ON_STN_ENABLE(id, memberFxn) \
+ ON_CONTROL(STN_ENABLE, id, memberFxn)
+#define ON_STN_DISABLE(id, memberFxn) \
+ ON_CONTROL(STN_DISABLE, id, memberFxn)
+
+
+// Edit Control Notification Codes
+#define ON_EN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(EN_SETFOCUS, id, memberFxn)
+#define ON_EN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(EN_KILLFOCUS, id, memberFxn)
+#define ON_EN_CHANGE(id, memberFxn) \
+ ON_CONTROL(EN_CHANGE, id, memberFxn)
+#define ON_EN_UPDATE(id, memberFxn) \
+ ON_CONTROL(EN_UPDATE, id, memberFxn)
+#define ON_EN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(EN_ERRSPACE, id, memberFxn)
+#define ON_EN_MAXTEXT(id, memberFxn) \
+ ON_CONTROL(EN_MAXTEXT, id, memberFxn)
+#define ON_EN_HSCROLL(id, memberFxn) \
+ ON_CONTROL(EN_HSCROLL, id, memberFxn)
+#define ON_EN_VSCROLL(id, memberFxn) \
+ ON_CONTROL(EN_VSCROLL, id, memberFxn)
+
+// User Button Notification Codes
+#define ON_BN_CLICKED(id, memberFxn) \
+ ON_CONTROL(BN_CLICKED, id, memberFxn)
+#define ON_BN_DOUBLECLICKED(id, memberFxn) \
+ ON_CONTROL(BN_DOUBLECLICKED, id, memberFxn)
+#define ON_BN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(BN_SETFOCUS, id, memberFxn)
+#define ON_BN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(BN_KILLFOCUS, id, memberFxn)
+
+// old BS_USERBUTTON button notifications - obsolete in Win31
+#define ON_BN_PAINT(id, memberFxn) \
+ ON_CONTROL(BN_PAINT, id, memberFxn)
+#define ON_BN_HILITE(id, memberFxn) \
+ ON_CONTROL(BN_HILITE, id, memberFxn)
+#define ON_BN_UNHILITE(id, memberFxn) \
+ ON_CONTROL(BN_UNHILITE, id, memberFxn)
+#define ON_BN_DISABLE(id, memberFxn) \
+ ON_CONTROL(BN_DISABLE, id, memberFxn)
+
+// Listbox Notification Codes
+#define ON_LBN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(LBN_ERRSPACE, id, memberFxn)
+#define ON_LBN_SELCHANGE(id, memberFxn) \
+ ON_CONTROL(LBN_SELCHANGE, id, memberFxn)
+#define ON_LBN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(LBN_DBLCLK, id, memberFxn)
+#define ON_LBN_SELCANCEL(id, memberFxn) \
+ ON_CONTROL(LBN_SELCANCEL, id, memberFxn)
+#define ON_LBN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(LBN_SETFOCUS, id, memberFxn)
+#define ON_LBN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(LBN_KILLFOCUS, id, memberFxn)
+
+// Check Listbox Notification codes
+#define CLBN_CHKCHANGE (40)
+#define ON_CLBN_CHKCHANGE(id, memberFxn) \
+ ON_CONTROL(CLBN_CHKCHANGE, id, memberFxn)
+
+// Combo Box Notification Codes
+#define ON_CBN_ERRSPACE(id, memberFxn) \
+ ON_CONTROL(CBN_ERRSPACE, id, memberFxn)
+#define ON_CBN_SELCHANGE(id, memberFxn) \
+ ON_CONTROL(CBN_SELCHANGE, id, memberFxn)
+#define ON_CBN_DBLCLK(id, memberFxn) \
+ ON_CONTROL(CBN_DBLCLK, id, memberFxn)
+#define ON_CBN_SETFOCUS(id, memberFxn) \
+ ON_CONTROL(CBN_SETFOCUS, id, memberFxn)
+#define ON_CBN_KILLFOCUS(id, memberFxn) \
+ ON_CONTROL(CBN_KILLFOCUS, id, memberFxn)
+#define ON_CBN_EDITCHANGE(id, memberFxn) \
+ ON_CONTROL(CBN_EDITCHANGE, id, memberFxn)
+#define ON_CBN_EDITUPDATE(id, memberFxn) \
+ ON_CONTROL(CBN_EDITUPDATE, id, memberFxn)
+#define ON_CBN_DROPDOWN(id, memberFxn) \
+ ON_CONTROL(CBN_DROPDOWN, id, memberFxn)
+#define ON_CBN_CLOSEUP(id, memberFxn) \
+ ON_CONTROL(CBN_CLOSEUP, id, memberFxn)
+#define ON_CBN_SELENDOK(id, memberFxn) \
+ ON_CONTROL(CBN_SELENDOK, id, memberFxn)
+#define ON_CBN_SELENDCANCEL(id, memberFxn) \
+ ON_CONTROL(CBN_SELENDCANCEL, id, memberFxn)
+
+/////////////////////////////////////////////////////////////////////////////
+// User extensions for message map entries
+
+// for Windows messages
+#define ON_MESSAGE(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_lwl, \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))&memberFxn },
+
+// for Registered Windows messages
+#define ON_REGISTERED_MESSAGE(nMessageVariable, memberFxn) \
+ { 0xC000, 0, 0, 0, (UINT)(UINT*)(&nMessageVariable), \
+ /*implied 'AfxSig_lwl'*/ \
+ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))&memberFxn },
+
+// for Thread messages
+#define ON_THREAD_MESSAGE(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_vwl, \
+ (AFX_PMSG)(AFX_PMSGT)(void (AFX_MSG_CALL CWinThread::*)(WPARAM, LPARAM))&memberFxn },
+
+// for Registered Windows messages
+#define ON_REGISTERED_THREAD_MESSAGE(nMessageVariable, memberFxn) \
+ { 0xC000, 0, 0, 0, (UINT)(UINT*)(&nMessageVariable), \
+ /*implied 'AfxSig_vwl'*/ \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))&memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxmt.h b/public/sdk/inc/mfc42/afxmt.h
new file mode 100644
index 000000000..d12d79aba
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxmt.h
@@ -0,0 +1,255 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXMT_H__
+#define __AFXMT_H__
+
+#ifdef _MAC
+ #error Multithreaded classes not supported in this library variant.
+#endif
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXMT - MFC Multithreaded Extensions (Syncronization Objects)
+
+// Classes declared in this file
+
+//CObject
+ class CSyncObject;
+ class CSemaphore;
+ class CMutex;
+ class CEvent;
+ class CCriticalSection;
+
+class CSingleLock;
+class CMultiLock;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Basic synchronization object
+
+class CSyncObject : public CObject
+{
+ DECLARE_DYNAMIC(CSyncObject)
+
+// Constructor
+public:
+ CSyncObject(LPCTSTR pstrName);
+
+// Attributes
+public:
+ operator HANDLE() const;
+ HANDLE m_hObject;
+
+// Operations
+ virtual BOOL Lock(DWORD dwTimeout = INFINITE);
+ virtual BOOL Unlock() = 0;
+ virtual BOOL Unlock(LONG /* lCount */, LPLONG /* lpPrevCount=NULL */)
+ { return TRUE; }
+
+// Implementation
+public:
+ virtual ~CSyncObject();
+#ifdef _DEBUG
+ CString m_strName;
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ friend class CSingleLock;
+ friend class CMultiLock;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSemaphore
+
+class CSemaphore : public CSyncObject
+{
+ DECLARE_DYNAMIC(CSemaphore)
+
+// Constructor
+public:
+ CSemaphore(LONG lInitialCount = 1, LONG lMaxCount = 1,
+ LPCTSTR pstrName=NULL, LPSECURITY_ATTRIBUTES lpsaAttributes = NULL);
+
+// Implementation
+public:
+ virtual ~CSemaphore();
+ virtual BOOL Unlock();
+ virtual BOOL Unlock(LONG lCount, LPLONG lprevCount = NULL);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMutex
+
+class CMutex : public CSyncObject
+{
+ DECLARE_DYNAMIC(CMutex)
+
+// Constructor
+public:
+ CMutex(BOOL bInitiallyOwn = FALSE, LPCTSTR lpszName = NULL,
+ LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
+
+// Implementation
+public:
+ virtual ~CMutex();
+ BOOL Unlock();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CEvent
+
+class CEvent : public CSyncObject
+{
+ DECLARE_DYNAMIC(CEvent)
+
+// Constructor
+public:
+ CEvent(BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE,
+ LPCTSTR lpszNAme = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
+
+// Operations
+public:
+ BOOL SetEvent();
+ BOOL PulseEvent();
+ BOOL ResetEvent();
+ BOOL Unlock();
+
+// Implementation
+public:
+ virtual ~CEvent();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CCriticalSection
+
+class CCriticalSection : public CSyncObject
+{
+ DECLARE_DYNAMIC(CCriticalSection)
+
+// Constructor
+public:
+ CCriticalSection();
+
+// Attributes
+public:
+ operator CRITICAL_SECTION*();
+ CRITICAL_SECTION m_sect;
+
+// Operations
+public:
+ BOOL Unlock();
+ BOOL Lock();
+ BOOL Lock(DWORD dwTimeout);
+
+// Implementation
+public:
+ virtual ~CCriticalSection();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSingleLock
+
+class CSingleLock
+{
+// Constructors
+public:
+ CSingleLock(CSyncObject* pObject, BOOL bInitialLock = FALSE);
+
+// Operations
+public:
+ BOOL Lock(DWORD dwTimeOut = INFINITE);
+ BOOL Unlock();
+ BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
+ BOOL IsLocked();
+
+// Implementation
+public:
+ ~CSingleLock();
+
+protected:
+ CSyncObject* m_pObject;
+ HANDLE m_hObject;
+ BOOL m_bAcquired;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMultiLock
+
+class CMultiLock
+{
+// Constructor
+public:
+ CMultiLock(CSyncObject* ppObjects[], DWORD dwCount, BOOL bInitialLock = FALSE);
+
+// Operations
+public:
+ DWORD Lock(DWORD dwTimeOut = INFINITE, BOOL bWaitForAll = TRUE,
+ DWORD dwWakeMask = 0);
+ BOOL Unlock();
+ BOOL Unlock(LONG lCount, LPLONG lPrevCount = NULL);
+ BOOL IsLocked(DWORD dwItem);
+
+// Implementation
+public:
+ ~CMultiLock();
+
+protected:
+ HANDLE m_hPreallocated[8];
+ BOOL m_bPreallocated[8];
+
+ CSyncObject* const * m_ppObjectArray;
+ HANDLE* m_pHandleArray;
+ BOOL* m_bLockedArray;
+ DWORD m_dwCount;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXMT_INLINE inline
+#include <afxmt.inl>
+#undef _AFXMT_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXMT_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxmt.inl b/public/sdk/inc/mfc42/afxmt.inl
new file mode 100644
index 000000000..036c5c2a4
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxmt.inl
@@ -0,0 +1,50 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXMT.H
+
+#ifdef _AFXMT_INLINE
+
+_AFXMT_INLINE CSyncObject::operator HANDLE() const
+ { return m_hObject;}
+
+_AFXMT_INLINE BOOL CSemaphore::Unlock()
+ { return Unlock(1, NULL); }
+
+_AFXMT_INLINE BOOL CEvent::SetEvent()
+ { ASSERT(m_hObject != NULL); return ::SetEvent(m_hObject); }
+_AFXMT_INLINE BOOL CEvent::PulseEvent()
+ { ASSERT(m_hObject != NULL); return ::PulseEvent(m_hObject); }
+_AFXMT_INLINE BOOL CEvent::ResetEvent()
+ { ASSERT(m_hObject != NULL); return ::ResetEvent(m_hObject); }
+
+_AFXMT_INLINE CSingleLock::~CSingleLock()
+ { Unlock(); }
+_AFXMT_INLINE BOOL CSingleLock::IsLocked()
+ { return m_bAcquired; }
+
+_AFXMT_INLINE BOOL CMultiLock::IsLocked(DWORD dwObject)
+ { ASSERT(dwObject >= 0 && dwObject < m_dwCount);
+ return m_bLockedArray[dwObject]; }
+
+_AFXMT_INLINE CCriticalSection::CCriticalSection() : CSyncObject(NULL)
+ { ::InitializeCriticalSection(&m_sect); }
+_AFXMT_INLINE CCriticalSection::operator CRITICAL_SECTION*()
+ { return (CRITICAL_SECTION*) &m_sect; }
+_AFXMT_INLINE CCriticalSection::~CCriticalSection()
+ { ::DeleteCriticalSection(&m_sect); }
+_AFXMT_INLINE BOOL CCriticalSection::Lock()
+ { ::EnterCriticalSection(&m_sect); return TRUE; }
+_AFXMT_INLINE BOOL CCriticalSection::Lock(DWORD /* dwTimeout */)
+ { return Lock(); }
+_AFXMT_INLINE BOOL CCriticalSection::Unlock()
+ { ::LeaveCriticalSection(&m_sect); return TRUE; }
+
+#endif //_AFXMT_INLINE
diff --git a/public/sdk/inc/mfc42/afxodlgs.h b/public/sdk/inc/mfc42/afxodlgs.h
new file mode 100644
index 000000000..dd887df4c
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxodlgs.h
@@ -0,0 +1,502 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXODLGS_H__
+#define __AFXODLGS_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+
+#ifdef _MAC
+ // include OLE dialog/helper APIs
+ #include <ole2ui.h>
+#else
+ // include OLE dialog/helper APIs
+ #ifndef _OLEDLG_H_
+ #include <oledlg.h>
+ #endif
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXODLGS.H - MFC OLE dialogs
+
+// Classes declared in this file
+
+//CCommonDialog
+ class COleDialog; // base class for OLE dialog wrappers
+ class COleInsertDialog; // insert object dialog
+ class COleConvertDialog; // convert dialog
+ class COleChangeIconDialog; // change icon dialog
+ class COlePasteSpecialDialog; // paste special dialog
+ class COleLinksDialog; // edit links dialog
+ class COleUpdateDialog; // update links/embeddings dialog
+ class COleBusyDialog; // used for
+ class COlePropertiesDialog;
+ class COleChangeSourceDialog;
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// COleUILinkInfo -- used internally to implement
+// IOleUILinkInfo and IOleUILinkContainer
+// used by COleLinksDialog and COleChangeSourceDialog
+
+class COleUILinkInfo : public IOleUILinkInfo
+{
+public:
+ COleUILinkInfo(COleDocument* pDocument);
+
+// Implementation
+ COleDocument* m_pDocument; // document being manipulated
+ COleClientItem* m_pSelectedItem; // primary selected item in m_pDocument
+ POSITION m_pos; // used during link enumeration
+ BOOL m_bUpdateLinks; // update links?
+ BOOL m_bUpdateEmbeddings; // update embeddings?
+
+ STDMETHOD_(ULONG, AddRef)();
+ STDMETHOD_(ULONG, Release)();
+ STDMETHOD(QueryInterface)(REFIID, LPVOID*);
+
+ // IOleUILinkContainer
+ STDMETHOD_(DWORD,GetNextLink)(DWORD);
+ STDMETHOD(SetLinkUpdateOptions)(DWORD, DWORD);
+ STDMETHOD(GetLinkUpdateOptions)(DWORD, LPDWORD);
+ STDMETHOD(SetLinkSource)(DWORD, LPTSTR, ULONG, ULONG*, BOOL);
+ STDMETHOD(GetLinkSource)(DWORD, LPTSTR*, ULONG*, LPTSTR*, LPTSTR*, BOOL*,
+ BOOL*);
+ STDMETHOD(OpenLinkSource)(DWORD);
+ STDMETHOD(UpdateLink)(DWORD, BOOL, BOOL);
+ STDMETHOD(CancelLink)(DWORD);
+ // IOleUILinkInfo
+ STDMETHOD(GetLastUpdate)(DWORD dwLink, FILETIME* lpLastUpdate);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Wrappers for OLE UI dialogs
+
+class COleDialog : public CCommonDialog
+{
+ DECLARE_DYNAMIC(COleDialog)
+
+// Attributes
+public:
+ UINT GetLastError() const;
+
+// Implementation
+public:
+ int MapResult(UINT nResult);
+ COleDialog(CWnd* pParentWnd);
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ UINT m_nLastError;
+
+protected:
+ friend UINT CALLBACK _AfxOleHookProc(HWND, UINT, WPARAM, LPARAM);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleInsertDialog
+
+class COleInsertDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleInsertDialog)
+
+// Attributes
+public:
+ OLEUIINSERTOBJECT m_io; // structure for OleUIInsertObject
+
+// Constructors
+ COleInsertDialog(DWORD dwFlags = IOF_SELECTCREATENEW,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ BOOL CreateItem(COleClientItem* pItem);
+ // call after DoModal to create item based on dialog data
+
+// Attributes (after DoModal returns IDOK)
+ enum Selection { createNewItem, insertFromFile, linkToFile };
+ UINT GetSelectionType() const;
+ // return type of selection made
+
+ CString GetPathName() const; // return full path name
+ REFCLSID GetClassID() const; // get class ID of new item
+
+ DVASPECT GetDrawAspect() const;
+ // DVASPECT_CONTENT or DVASPECT_ICON
+ HGLOBAL GetIconicMetafile() const;
+ // returns HGLOBAL to METAFILEPICT struct with iconic data
+
+// Implementation
+public:
+ virtual ~COleInsertDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ TCHAR m_szFileName[_MAX_PATH];
+ // contains full path name after return
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleConvertDialog
+
+class COleConvertDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleConvertDialog)
+
+// Attributes
+public:
+ OLEUICONVERT m_cv; // structure for OleUIConvert
+
+// Constructors
+ COleConvertDialog(COleClientItem* pItem,
+ DWORD dwFlags = CF_SELECTCONVERTTO, CLSID* pClassID = NULL,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ // just display the dialog and collect convert info
+ BOOL DoConvert(COleClientItem* pItem);
+ // do the conversion on pItem (after DoModal == IDOK)
+
+// Attributes (after DoModal returns IDOK)
+ enum Selection { noConversion, convertItem, activateAs };
+ UINT GetSelectionType() const;
+
+ HGLOBAL GetIconicMetafile() const; // will return NULL if same as before
+ REFCLSID GetClassID() const; // get class ID to convert or activate as
+ DVASPECT GetDrawAspect() const; // get new draw aspect
+
+// Implementation
+public:
+ virtual ~COleConvertDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleChangeIconDialog
+
+class COleChangeIconDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleChangeIconDialog)
+
+// Attributes
+public:
+ OLEUICHANGEICON m_ci; // structure for OleUIChangeIcon
+
+// Constructors
+ COleChangeIconDialog(COleClientItem* pItem,
+ DWORD dwFlags = CIF_SELECTCURRENT,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+ BOOL DoChangeIcon(COleClientItem* pItem);
+
+// Attributes
+ HGLOBAL GetIconicMetafile() const;
+
+// Implementation
+public:
+ virtual ~COleChangeIconDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COlePasteSpecialDialog
+
+class COlePasteSpecialDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COlePasteSpecialDialog)
+
+// Attributes
+public:
+ OLEUIPASTESPECIAL m_ps; // structure for OleUIPasteSpecial
+
+// Constructors
+ COlePasteSpecialDialog(DWORD dwFlags = PSF_SELECTPASTE,
+ COleDataObject* pDataObject = NULL, CWnd *pParentWnd = NULL);
+
+// Operations
+ OLEUIPASTEFLAG AddLinkEntry(UINT cf);
+ void AddFormat(const FORMATETC& formatEtc, LPTSTR lpszFormat,
+ LPTSTR lpszResult, DWORD flags);
+ void AddFormat(UINT cf, DWORD tymed, UINT nFormatID, BOOL bEnableIcon,
+ BOOL bLink);
+ void AddStandardFormats(BOOL bEnableLink = TRUE);
+
+ virtual int DoModal();
+ BOOL CreateItem(COleClientItem *pNewItem);
+ // creates a standard OLE item from selection data
+
+// Attributes (after DoModal returns IDOK)
+ int GetPasteIndex() const; // resulting index to use for paste
+
+ enum Selection { pasteLink = 1, pasteNormal = 2, pasteStatic = 3, pasteOther = 4};
+ UINT GetSelectionType() const;
+ // get selection type (pasteLink, pasteNormal, pasteStatic)
+
+ DVASPECT GetDrawAspect() const;
+ // DVASPECT_CONTENT or DVASPECT_ICON
+ HGLOBAL GetIconicMetafile() const;
+ // returns HGLOBAL to METAFILEPICT struct with iconic data
+
+// Implementation
+public:
+ virtual ~COlePasteSpecialDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ unsigned int m_arrLinkTypes[8];
+ // size limit imposed by MFCUIx32.DLL library
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleLinksDialog
+
+class COleLinksDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleLinksDialog)
+
+// Attributes
+public:
+ OLEUIEDITLINKS m_el; // structure for OleUIEditLinks
+
+// Constructors
+ COleLinksDialog(COleDocument* pDoc, CView* pView, DWORD dwFlags = 0,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal(); // display the dialog and edit links
+
+// Implementation
+public:
+ virtual ~COleLinksDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+
+public:
+ COleUILinkInfo m_xLinkInfo; // implements IOleUILinkContainer
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleUpdateDialog
+
+class COleUpdateDialog : public COleLinksDialog
+{
+ DECLARE_DYNAMIC(COleUpdateDialog)
+
+// Constructors
+public:
+ COleUpdateDialog(COleDocument* pDoc,
+ BOOL bUpdateLinks = TRUE, BOOL bUpdateEmbeddings = FALSE,
+ CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+// Implementation
+public:
+ virtual ~COleUpdateDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ CString m_strCaption; // caption for the dialog
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleBusyDialog - useful in managing concurrency
+
+class COleBusyDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleBusyDialog)
+
+// Attributes
+public:
+ OLEUIBUSY m_bz;
+
+// Constructors
+ COleBusyDialog(HTASK htaskBusy, BOOL bNotResponding = FALSE,
+ DWORD dwFlags = 0, CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+ enum Selection { switchTo = 1, retry = 2, callUnblocked = 3 };
+ UINT GetSelectionType() const;
+
+// Implementation
+public:
+ ~COleBusyDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ Selection m_selection; // selection after DoModal returns IDOK
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleEditProperties
+
+class COlePropertiesDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COlePropertiesDialog)
+
+// Attributes
+public:
+ OLEUIOBJECTPROPS m_op; // structure for OleUIObjectProperties
+ OLEUIGNRLPROPS m_gp; // specific to "General" page
+ OLEUIVIEWPROPS m_vp; // specific to "View" page
+ OLEUILINKPROPS m_lp; // specific to "Link" page
+ PROPSHEETHEADER m_psh; // PROPSHEETHEADER for customization
+
+// Constructors
+public:
+ COlePropertiesDialog(COleClientItem* pItem,
+ UINT nScaleMin = 10, UINT nScaleMax = 500, CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+// Overridables
+ virtual BOOL OnApplyScale(
+ COleClientItem* pItem, int nCurrentScale, BOOL bRelativeToOrig);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ virtual BOOL OnInitDialog();
+
+ BEGIN_INTERFACE_PART(OleUIObjInfo, IOleUIObjInfo)
+ INIT_INTERFACE_PART(COlePropertiesDialog, OleUIObjInfo)
+ STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
+ DWORD* lpdwObjSize, LPTSTR* lplpszLabel,
+ LPTSTR* lplpszType, LPTSTR* lplpszShortType,
+ LPTSTR* lplpszLocation);
+ STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
+ CLSID* lpClassID, WORD* lpwFormat,
+ CLSID* lpConvertDefaultClassID,
+ LPCLSID* lplpClsidExclude, UINT* lpcClsidExclude);
+ STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew);
+ STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale);
+ STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL hMetaPict, DWORD dvAspect,
+ int nCurrentScale, BOOL bRelativeToOrig);
+ END_INTERFACE_PART(OleUIObjInfo)
+ COleUILinkInfo m_xLinkInfo; // implements IOleUILinkContainer
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleChangeSourceDialog
+
+class COleChangeSourceDialog : public COleDialog
+{
+ DECLARE_DYNAMIC(COleChangeSourceDialog)
+
+// Attributes
+public:
+ OLEUICHANGESOURCE m_cs; // structure for OleUIChangeSource
+
+// Constructors
+public:
+ COleChangeSourceDialog(COleClientItem* pItem, CWnd* pParentWnd = NULL);
+
+// Operations
+ virtual int DoModal();
+
+// Attributes (after DoModal returns IDOK)
+ BOOL IsValidSource();
+ CString GetDisplayName();
+ CString GetFileName();
+ CString GetItemName();
+ CString GetFromPrefix();
+ CString GetToPrefix();
+
+// Implementation
+public:
+ COleUILinkInfo m_xLinkInfo;
+
+ virtual ~COleChangeSourceDialog();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+ virtual void PreInitDialog();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXODLGS_INLINE inline
+#include <afxole.inl>
+#undef _AFXODLGS_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXODLGS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxole.h b/public/sdk/inc/mfc42/afxole.h
new file mode 100644
index 000000000..9133184b9
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxole.h
@@ -0,0 +1,1907 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLE_H__
+#define __AFXOLE_H__
+
+#ifdef _AFX_NO_OLE_SUPPORT
+ #error OLE classes not supported in this library variant.
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h>
+#endif
+
+#ifndef __AFXDISP_H__
+ #include <afxdisp.h>
+#endif
+
+// include OLE Compound Document headers
+#ifndef _OLE2_H_
+ #include <ole2.h>
+#endif
+
+#ifndef __docobj_h__
+ #include <docobj.h>
+#endif
+
+#ifndef __datapath_h__
+ #include <datapath.h>
+#endif
+
+#ifndef __AFXCOM_H__
+#include <afxcom_.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+
+#ifndef _AFX_NOFORCE_LIBS
+
+#ifndef _MAC
+ #pragma comment(lib, "urlmon.lib")
+#endif // !_MAC
+
+#endif // !_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXOLE.H - MFC OLE support
+
+// Classes declared in this file
+
+//CDocument
+ class COleDocument; // OLE container document
+ class COleLinkingDoc; // supports links to embeddings
+ class COleServerDoc; // OLE server document
+ class CDocObjectServer; // might be owned by a COleServerDoc
+
+//CCmdTarget
+ class CDocItem; // part of a document
+ class COleClientItem; // embedded ole object from outside
+ class COleServerItem; // ole object to export
+ class COleDataSource; // clipboard data source mechanism
+ class COleDropSource; // drag/drop source
+ class COleDropTarget; // drag/drop target
+ class COleMessageFilter; // concurrency management
+
+//CFrameWnd
+ class COleIPFrameWnd; // frame window for in-place servers
+
+//CControlBar
+#ifndef _MAC
+ class COleResizeBar; // implements in-place resizing
+#endif
+
+//CFile
+ class COleStreamFile; // CFile wrapper for IStream interface
+ class CMonikerFile; // bound to via IMoniker
+#ifndef _MAC
+ class CAsyncMonikerFile;// asynchronous IMoniker
+#endif
+
+class COleDataObject; // wrapper for IDataObject interface
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// backward compatibility
+
+// COleClientDoc is now obsolete -- use COleDocument instead
+#define COleClientDoc COleDocument
+
+// COleServer has been replaced by the more general COleObjectFactory
+#define COleServer COleObjectFactory
+
+/////////////////////////////////////////////////////////////////////////////
+// Useful OLE specific types (some from OLE 1.0 headers)
+
+// Codes for CallBack events
+enum OLE_NOTIFICATION
+{
+ OLE_CHANGED, // representation of a draw aspect has changed
+ OLE_SAVED, // the item has committed its storage
+ OLE_CLOSED, // the item has closed
+ OLE_RENAMED, // the item has changed its moniker
+ OLE_CHANGED_STATE, // the item state (open, active, etc.) has changed
+ OLE_CHANGED_ASPECT, // the item draw aspect has changed
+};
+
+// Object types
+enum OLE_OBJTYPE
+{
+ OT_UNKNOWN = 0,
+
+ // These are OLE 1.0 types and OLE 2.0 types as returned from GetType().
+ OT_LINK = 1,
+ OT_EMBEDDED = 2,
+ OT_STATIC = 3,
+
+ // All OLE2 objects are written with this tag when serialized. This
+ // differentiates them from OLE 1.0 objects written with MFC 2.0.
+ // This value will never be returned from GetType().
+ OT_OLE2 = 256,
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDataObject -- simple wrapper for IDataObject
+
+class COleDataObject
+{
+// Constructors
+public:
+ COleDataObject();
+
+// Operations
+ void Attach(LPDATAOBJECT lpDataObject, BOOL bAutoRelease = TRUE);
+ LPDATAOBJECT Detach(); // detach and get ownership of m_lpDataObject
+ void Release(); // detach and Release ownership of m_lpDataObject
+ BOOL AttachClipboard(); // attach to current clipboard object
+
+// Attributes
+ void BeginEnumFormats();
+ BOOL GetNextFormat(LPFORMATETC lpFormatEtc);
+ CFile* GetFileData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+ HGLOBAL GetGlobalData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+ BOOL GetData(CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium,
+ LPFORMATETC lpFormatEtc = NULL);
+ BOOL IsDataAvailable(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+// Implementation
+public:
+ LPDATAOBJECT m_lpDataObject;
+ LPENUMFORMATETC m_lpEnumerator;
+ ~COleDataObject();
+
+ // advanced use and implementation
+ LPDATAOBJECT GetIDataObject(BOOL bAddRef);
+ void EnsureClipboardObject();
+ BOOL m_bClipboard; // TRUE if represents the Win32 clipboard
+
+protected:
+ BOOL m_bAutoRelease; // TRUE if destructor should call Release
+
+private:
+ // Disable the copy constructor and assignment by default so you will get
+ // compiler errors instead of unexpected behaviour if you pass objects
+ // by value or assign objects.
+ COleDataObject(const COleDataObject&); // no implementation
+ void operator=(const COleDataObject&); // no implementation
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDataSource -- wrapper for implementing IDataObject
+// (works similar to how data is provided on the clipboard)
+
+struct AFX_DATACACHE_ENTRY;
+class COleDropSource;
+
+class COleDataSource : public CCmdTarget
+{
+// Constructors
+public:
+ COleDataSource();
+
+// Operations
+ void Empty(); // empty cache (similar to ::EmptyClipboard)
+
+ // CacheData & DelayRenderData operations similar to ::SetClipboardData
+ void CacheGlobalData(CLIPFORMAT cfFormat, HGLOBAL hGlobal,
+ LPFORMATETC lpFormatEtc = NULL); // for HGLOBAL based data
+ void DelayRenderFileData(CLIPFORMAT cfFormat,
+ LPFORMATETC lpFormatEtc = NULL); // for CFile* based delayed render
+
+ // Clipboard and Drag/Drop access
+ DROPEFFECT DoDragDrop(
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE|DROPEFFECT_LINK,
+ LPCRECT lpRectStartDrag = NULL,
+ COleDropSource* pDropSource = NULL);
+ void SetClipboard();
+ static void PASCAL FlushClipboard();
+ static COleDataSource* PASCAL GetClipboardOwner();
+
+ // Advanced: STGMEDIUM based cached data
+ void CacheData(CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium,
+ LPFORMATETC lpFormatEtc = NULL); // for LPSTGMEDIUM based data
+ // Advanced: STGMEDIUM or HGLOBAL based delayed render
+ void DelayRenderData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+ // Advanced: support for SetData in COleServerItem
+ // (not generally useful for clipboard or drag/drop operations)
+ void DelaySetData(CLIPFORMAT cfFormat, LPFORMATETC lpFormatEtc = NULL);
+
+// Overidables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // OnRenderFileData and OnRenderGlobalData are called by
+ // the default implementation of OnRenderData.
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ // used only in COleServerItem implementation
+
+// Implementation
+public:
+ virtual ~COleDataSource();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ AFX_DATACACHE_ENTRY* m_pDataCache; // data cache itself
+ UINT m_nMaxSize; // current allocated size
+ UINT m_nSize; // current size of the cache
+ UINT m_nGrowBy; // number of cache elements to grow by for new allocs
+
+ AFX_DATACACHE_ENTRY* Lookup(
+ LPFORMATETC lpFormatEtc, DATADIR nDataDir) const;
+ AFX_DATACACHE_ENTRY* GetCacheEntry(
+ LPFORMATETC lpFormatEtc, DATADIR nDataDir);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleDataSource, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleServerItem;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// DocItem support
+
+class CDocItem : public CCmdTarget
+{
+ DECLARE_SERIAL(CDocItem)
+
+// Constructors
+protected: // abstract class
+ CDocItem();
+
+// Attributes
+public:
+ CDocument* GetDocument() const; // return container document
+
+// Overridables
+public:
+ // Raw data access (native format)
+ virtual BOOL IsBlank() const;
+
+// Implementation
+protected:
+ COleDocument* m_pDocument;
+
+public:
+ virtual void Serialize(CArchive& ar); // for Native data
+ virtual ~CDocItem();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ friend class COleDocument; // for access to back pointer
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleDocument - common OLE container behavior (enables server functionality)
+
+class COleDocument : public CDocument
+{
+ DECLARE_DYNAMIC(COleDocument)
+
+// Constructors
+public:
+ COleDocument();
+
+// Attributes
+ BOOL HasBlankItems() const; // check for BLANK items
+ virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);
+ // return in-place active item for this view or NULL if none
+
+// Operations
+ // iterating over existing items
+ virtual POSITION GetStartPosition() const;
+ virtual CDocItem* GetNextItem(POSITION& pos) const;
+
+ // iterator helpers (helpers use virtual GetNextItem above)
+ COleClientItem* GetNextClientItem(POSITION& pos) const;
+ COleServerItem* GetNextServerItem(POSITION& pos) const;
+
+ // adding new items - called from item constructors
+ virtual void AddItem(CDocItem* pItem);
+ virtual void RemoveItem(CDocItem* pItem);
+
+ void EnableCompoundFile(BOOL bEnable = TRUE);
+ // enable compound file support (only call during constructor)
+ virtual void UpdateModifiedFlag();
+ // scan for modified items -- mark document modified
+
+ // printer-device caching/control
+ BOOL ApplyPrintDevice(const DVTARGETDEVICE* ptd);
+ BOOL ApplyPrintDevice(const PRINTDLG* ppd);
+ // these apply the target device to all COleClientItem objects
+
+// Overridables
+ virtual COleClientItem* GetPrimarySelectedItem(CView* pView);
+ // return primary selected item or NULL if none
+ virtual void OnShowViews(BOOL bVisible);
+ // called during app-idle when visibility of a document has changed
+
+// Implementation
+public:
+ CObList m_docItemList; // not owned items
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ CFrameWnd* GetFirstFrame();
+
+ // document handling overrides
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE);
+ virtual ~COleDocument();
+ virtual void DeleteContents(); // delete client items in list
+ virtual void Serialize(CArchive& ar); // serialize items to file
+ virtual void PreCloseFrame(CFrameWnd* pFrame);
+ virtual BOOL SaveModified();
+ virtual void OnIdle();
+
+ // compound file implementation
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ void CommitItems(BOOL bSuccess); // called during File.Save & File.Save As
+
+ // minimal linking protocol
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+ virtual LPOLEITEMCONTAINER GetContainer();
+
+protected:
+ // document state implementation
+ UINT m_dwNextItemNumber;// serial number for next item in this document
+ BOOL m_bLastVisible; // TRUE if one or more views was last visible
+
+ // 'docfile' support
+ BOOL m_bCompoundFile; // TRUE if use compound files
+ LPSTORAGE m_lpRootStg; // root storage for the document
+ BOOL m_bSameAsLoad; // TRUE = file-save, FALSE = Save [Copy] As
+ BOOL m_bRemember; // if FALSE, indicates Save Copy As
+
+ DVTARGETDEVICE* m_ptd; // current document target device
+
+ // implementation helpers
+ virtual void LoadFromStorage();
+ virtual void SaveToStorage(CObject* pObject = NULL);
+ CDocItem* GetNextItemOfKind(POSITION& pos, CRuntimeClass* pClass) const;
+
+ // command handling
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+
+ afx_msg void OnUpdatePasteMenu(CCmdUI* pCmdUI);
+ afx_msg void OnUpdatePasteLinkMenu(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditLinksMenu(CCmdUI* pCmdUI);
+ afx_msg void OnEditLinks();
+ afx_msg void OnEditConvert();
+ afx_msg void OnUpdateEditChangeIcon(CCmdUI* pCmdUI);
+ afx_msg void OnEditChangeIcon();
+ afx_msg void OnUpdateObjectVerbMenu(CCmdUI* pCmdUI);
+ afx_msg void OnFileSendMail();
+
+ friend class COleClientItem;
+ friend class COleServerItem;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleClientItem - Supports OLE2 non-inplace editing.
+// implements IOleClientSite, IAdviseSink, and IOleInPlaceSite
+
+class COleFrameHook; // forward reference (see ..\src\oleimpl.h)
+
+class COleClientItem : public CDocItem
+{
+ DECLARE_DYNAMIC(COleClientItem)
+
+// Constructors
+public:
+ COleClientItem(COleDocument* pContainerDoc = NULL);
+
+ // create from the clipboard
+ BOOL CreateFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateStaticFromClipboard(OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from a class ID (Insert New Object dialog)
+ BOOL CreateNewItem(REFCLSID clsid, OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from COleDataObject
+ BOOL CreateFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateStaticFromData(COleDataObject* pDataObject,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create from file (package support)
+ BOOL CreateFromFile(LPCTSTR lpszFileName, REFCLSID clsid = CLSID_NULL,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+ BOOL CreateLinkFromFile(LPCTSTR lpszFileName,
+ OLERENDER render = OLERENDER_DRAW,
+ CLIPFORMAT cfFormat = 0, LPFORMATETC lpFormatEtc = NULL);
+
+ // create a copy
+ BOOL CreateCloneFrom(const COleClientItem* pSrcItem);
+
+// General Attributes
+public:
+ SCODE GetLastStatus() const;
+ OLE_OBJTYPE GetType() const; // OT_LINK, OT_EMBEDDED, OT_STATIC
+ void GetClassID(CLSID* pClassID) const;
+ void GetUserType(USERCLASSTYPE nUserClassType, CString& rString);
+ BOOL GetExtent(LPSIZE lpSize, DVASPECT nDrawAspect = (DVASPECT)-1);
+ // will return FALSE if item is BLANK
+ BOOL GetCachedExtent(LPSIZE lpSize, DVASPECT nDrawAspect = (DVASPECT)-1);
+
+ // getting/setting iconic cache
+ HGLOBAL GetIconicMetafile();
+ BOOL SetIconicMetafile(HGLOBAL hMetaPict);
+
+ // setting/getting default display aspect
+ DVASPECT GetDrawAspect() const;
+ virtual void SetDrawAspect(DVASPECT nDrawAspect);
+
+ // for printer presentation cache
+ BOOL SetPrintDevice(const DVTARGETDEVICE* ptd);
+ BOOL SetPrintDevice(const PRINTDLG* ppd);
+
+ // Item state
+ enum ItemState
+ { emptyState, loadedState, openState, activeState, activeUIState };
+ UINT GetItemState() const;
+
+ BOOL IsModified() const;
+ BOOL IsRunning() const;
+ BOOL IsInPlaceActive() const;
+ BOOL IsOpen() const;
+ CView* GetActiveView() const;
+
+ // Data access
+ void AttachDataObject(COleDataObject& rDataObject) const;
+
+ // other rare access information
+ COleDocument* GetDocument() const; // return container
+
+ // helpers for checking clipboard data availability
+ static BOOL PASCAL CanPaste();
+ static BOOL PASCAL CanPasteLink();
+
+ // helpers for checking COleDataObject, useful in drag drop
+ static BOOL PASCAL CanCreateFromData(const COleDataObject* pDataObject);
+ static BOOL PASCAL CanCreateLinkFromData(const COleDataObject* pDataObject);
+
+// General Operations
+ virtual void Release(OLECLOSE dwCloseOption = OLECLOSE_NOSAVE);
+ // cleanup, detach (close if needed)
+ void Close(OLECLOSE dwCloseOption = OLECLOSE_SAVEIFDIRTY);
+ // close without releasing the item
+ void Delete(BOOL bAutoDelete = TRUE);
+ // logically delete from file -- not part of the document anymore
+ void Run(); // insure item is in running state
+
+ // Drawing
+ BOOL Draw(CDC* pDC, LPCRECT lpBounds,
+ DVASPECT nDrawAspect = (DVASPECT)-1); // defaults to m_nDrawAspect
+
+ // Activation
+ virtual BOOL DoVerb(LONG nVerb, CView* pView, LPMSG lpMsg = NULL);
+ void Activate(LONG nVerb, CView* pView, LPMSG lpMsg = NULL);
+
+ // In-place Activation
+ void Deactivate(); // completely deactivate
+ void DeactivateUI(); // deactivate the user interface
+ BOOL ReactivateAndUndo(); // reactivate then perform undo command
+ BOOL SetItemRects(LPCRECT lpPosRect = NULL, LPCRECT lpClipRect = NULL);
+ CWnd* GetInPlaceWindow();
+
+ // Clipboard operations
+ void CopyToClipboard(BOOL bIncludeLink = FALSE);
+ DROPEFFECT DoDragDrop(LPCRECT lpItemRect, CPoint ptOffset,
+ BOOL bIncludeLink = FALSE,
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE,
+ LPCRECT lpRectStartDrag = NULL);
+ void GetClipboardData(COleDataSource* pDataSource,
+ BOOL bIncludeLink = FALSE, LPPOINT lpOffset = NULL,
+ LPSIZE lpSize = NULL);
+
+ // called for creating a COleDataSource by CopyToClipboard and DoDragDrop
+ virtual COleDataSource* OnGetClipboardData(BOOL bIncludeLink,
+ LPPOINT lpOffset, LPSIZE lpSize);
+
+ // Operations that apply to embedded items only
+ void SetHostNames(LPCTSTR lpszHost, LPCTSTR lpszHostObj);
+ void SetExtent(const CSize& size, DVASPECT nDrawAspect = DVASPECT_CONTENT);
+
+ // Operations that apply to linked items only
+ // (link options are rarely changed, except through Links dialog)
+ OLEUPDATE GetLinkUpdateOptions();
+ void SetLinkUpdateOptions(OLEUPDATE dwUpdateOpt);
+
+ // Link-source update status (also useful for embeddings that contain links)
+ BOOL UpdateLink(); // make up-to-date
+ BOOL IsLinkUpToDate() const; // is link up-to-date
+
+ // object conversion
+ virtual BOOL ConvertTo(REFCLSID clsidNew);
+ virtual BOOL ActivateAs(LPCTSTR lpszUserType, REFCLSID clsidOld, REFCLSID clsidNew);
+ BOOL Reload(); // for lazy reload after ActivateAs
+
+// Overridables (notifications of IAdviseSink, IOleClientSite and IOleInPlaceSite)
+ // Callbacks/notifications from the server you must/should implement
+ virtual void OnChange(OLE_NOTIFICATION nCode, DWORD dwParam);
+ // implement OnChange to invalidate when item changes
+
+protected:
+ virtual void OnGetItemPosition(CRect& rPosition);
+ // implement OnGetItemPosition if you support in-place activation
+
+ // Common overrides for in-place activation
+ virtual BOOL OnScrollBy(CSize sizeExtent);
+
+ // Common overrides for applications supporting undo
+ virtual void OnDiscardUndoState();
+ virtual void OnDeactivateAndUndo();
+
+public:
+ virtual void OnDeactivateUI(BOOL bUndoable);
+
+protected:
+ // Common overrides for applications supporting links to embeddings
+ virtual void OnShowItem();
+
+ // Advanced overrides for in-place activation
+ virtual void OnGetClipRect(CRect& rClipRect);
+ virtual BOOL CanActivate();
+
+public:
+ virtual void OnActivate();
+ virtual void OnActivateUI();
+ virtual void OnDeactivate();
+
+protected:
+ virtual BOOL OnGetWindowContext(CFrameWnd** ppMainFrame,
+ CFrameWnd** ppDocFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+ virtual BOOL OnChangeItemPosition(const CRect& rectPos);
+ // default calls SetItemRects and caches the pos rect
+
+public:
+ // Advanced overrides for menu/title handling (rarely overridden)
+ virtual void OnInsertMenus(CMenu* pMenuShared,
+ LPOLEMENUGROUPWIDTHS lpMenuWidths);
+ virtual void OnSetMenu(CMenu* pMenuShared, HOLEMENU holemenu,
+ HWND hwndActiveObject);
+ virtual void OnRemoveMenus(CMenu* pMenuShared);
+ virtual BOOL OnUpdateFrameTitle();
+
+ // Advanced override for control bar handling
+ virtual BOOL OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow);
+
+// Implementation
+public:
+ // data to support non-inplace activated items
+ LPOLEOBJECT m_lpObject; // in case you want direct access to the OLE object
+ LPVIEWOBJECT2 m_lpViewObject;// IViewObject for IOleObject above
+ DWORD m_dwItemNumber; // serial number for this item in this document
+ DVASPECT m_nDrawAspect; // current default display aspect
+ SCODE m_scLast; // last error code encountered
+ LPSTORAGE m_lpStorage; // provides storage for m_lpObject
+ LPLOCKBYTES m_lpLockBytes; // part of implementation of m_lpStorage
+ DWORD m_dwConnection; // advise connection to the m_lpObject
+ BYTE m_bLinkUnavail; // TRUE if link is currently unavailable
+ BYTE m_bMoniker; // TRUE if moniker is assigned
+ BYTE m_bLocked; // TRUE if object has external lock
+ BYTE m_bNeedCommit; // TRUE if need CommitItem
+ BYTE m_bClosing; // TRUE if currently doing COleClientItem::Close
+ BYTE m_bReserved[3]; // (reserved for future use)
+
+ // for compound file support
+ LPSTORAGE m_lpNewStorage; // used during Save As situations
+
+ // item state & item type
+ ItemState m_nItemState; // item state (see ItemState enumeration)
+ OLE_OBJTYPE m_nItemType; // item type (depends on how created)
+
+ // data valid when in-place activated
+ CView* m_pView; // view when object is in-place activated
+ DWORD m_dwContainerStyle; // style of the container wnd before activation
+ COleFrameHook* m_pInPlaceFrame;// frame window when in-place active
+ COleFrameHook* m_pInPlaceDoc; // doc window when in-place (may be NULL)
+ HWND m_hWndServer; // HWND of in-place server window
+
+public:
+ virtual ~COleClientItem();
+ virtual void Serialize(CArchive& ar);
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+// Implementation
+public:
+ virtual BOOL ReportError(SCODE sc) const;
+ virtual BOOL FreezeLink(); // converts to static: for edit links dialog
+
+ DWORD GetNewItemNumber(); // generates new item number
+ void GetItemName(LPTSTR lpszItemName) const; // gets readable item name
+
+ void UpdateItemType(); // update m_nItemType
+
+protected:
+ // clipboard helpers
+ void GetEmbeddedItemData(LPSTGMEDIUM lpStgMedium);
+ void AddCachedData(COleDataSource* pDataSource);
+ BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);
+ void GetObjectDescriptorData(LPPOINT lpOffset, LPSIZE lpSize,
+ LPSTGMEDIUM lpStgMedium);
+
+ // interface helpers
+ virtual LPOLECLIENTSITE GetClientSite();
+
+ // helpers for printer-cached representation
+ BOOL GetPrintDeviceInfo(LPOLECACHE* plpOleCache,
+ DVTARGETDEVICE** pptd, DWORD* pdwConnection);
+
+// Advanced Overridables for implementation
+protected:
+ virtual BOOL FinishCreate(SCODE sc);
+ virtual void CheckGeneral(SCODE sc);
+
+ virtual void OnDataChange(LPFORMATETC lpFormatEtc,
+ LPSTGMEDIUM lpStgMedium);
+
+public:
+ // for storage hookability (override to use 'docfiles')
+ virtual void GetItemStorage(); // allocate storage for new item
+ virtual void ReadItem(CArchive& ar); // read item from archive
+ virtual void WriteItem(CArchive& ar); // write item to archive
+ virtual void CommitItem(BOOL bSuccess); // commit item's storage
+
+ // compound & flat file implementations of above
+ void GetItemStorageFlat();
+ void ReadItemFlat(CArchive& ar);
+ void WriteItemFlat(CArchive& ar);
+ void GetItemStorageCompound();
+ void ReadItemCompound(CArchive& ar);
+ void WriteItemCompound(CArchive& ar);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(OleClientSite, IOleClientSite)
+ INIT_INTERFACE_PART(COleClientItem, OleClientSite)
+ STDMETHOD(SaveObject)();
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(GetContainer)(LPOLECONTAINER*);
+ STDMETHOD(ShowObject)();
+ STDMETHOD(OnShowWindow)(BOOL);
+ STDMETHOD(RequestNewObjectLayout)();
+ END_INTERFACE_PART(OleClientSite)
+
+ BEGIN_INTERFACE_PART(AdviseSink, IAdviseSink)
+ INIT_INTERFACE_PART(COleClientItem, AdviseSink)
+ STDMETHOD_(void,OnDataChange)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD_(void,OnViewChange)(DWORD, LONG);
+ STDMETHOD_(void,OnRename)(LPMONIKER);
+ STDMETHOD_(void,OnSave)();
+ STDMETHOD_(void,OnClose)();
+ END_INTERFACE_PART(AdviseSink)
+
+ BEGIN_INTERFACE_PART(OleIPSite, IOleInPlaceSite)
+ INIT_INTERFACE_PART(COleClientItem, OleIPSite)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(CanInPlaceActivate)();
+ STDMETHOD(OnInPlaceActivate)();
+ STDMETHOD(OnUIActivate)();
+ STDMETHOD(GetWindowContext)(LPOLEINPLACEFRAME*,
+ LPOLEINPLACEUIWINDOW*, LPRECT, LPRECT, LPOLEINPLACEFRAMEINFO);
+ STDMETHOD(Scroll)(SIZE);
+ STDMETHOD(OnUIDeactivate)(BOOL);
+ STDMETHOD(OnInPlaceDeactivate)();
+ STDMETHOD(DiscardUndoState)();
+ STDMETHOD(DeactivateAndUndo)();
+ STDMETHOD(OnPosRectChange)(LPCRECT);
+ END_INTERFACE_PART(OleIPSite)
+
+ DECLARE_INTERFACE_MAP()
+
+// Friendship declarations (to avoid many public members)
+ friend class COleUIWindow;
+ friend class COleFrameWindow;
+ friend class COleLinkingDoc;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleServerItem - IOleObject & IDataObject OLE component
+
+class COleServerItem : public CDocItem
+{
+ DECLARE_DYNAMIC(COleServerItem)
+protected:
+ // NOTE: many members in this class are protected - since everything
+ // in this class is designed for implementing an OLE server.
+ // Requests will come from OLE containers through non-C++ mechanisms,
+ // which will result in virtual functions in this class being called.
+
+// Constructors
+ COleServerItem(COleServerDoc* pServerDoc, BOOL bAutoDelete);
+ // If your COleServerItem is an integral part of your data,
+ // bAutoDelete should be FALSE. If your COleServerItem can be
+ // deleted when a link is released, it can be TRUE.
+
+ COleDataSource* GetDataSource();
+ // Use this data source to add conversion formats that your
+ // server should support. Usually such formats are
+ // added in the item's constructor.
+
+// Public Attributes
+public:
+ COleServerDoc* GetDocument() const; // return server document
+
+ // naming (for links only)
+ const CString& GetItemName() const; // get name of linked item
+ void SetItemName(LPCTSTR lpszItemName); // set name of linked item
+
+ // link state
+ BOOL IsConnected() const; // returns TRUE if item has a client
+ BOOL IsLinkedItem() const; // returns TRUE if item is not embedded item
+
+ // extents
+ CSize m_sizeExtent;
+ // HIMETRIC size -- the default implementation of OnSetExtent
+ // updates this member variable. This member tells the server how
+ // much of the object is visible in the container document.
+
+// Operations
+public:
+ void NotifyChanged(DVASPECT nDrawAspect = DVASPECT_CONTENT);
+ // call this after you change item
+ void CopyToClipboard(BOOL bIncludeLink = FALSE);
+ // helper for implementing server 'copy to clipboard'
+ DROPEFFECT DoDragDrop(LPCRECT lpRectItem, CPoint ptOffset,
+ BOOL bIncludeLink = FALSE,
+ DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE,
+ LPCRECT lpRectStartDrag = NULL);
+ void GetClipboardData(COleDataSource* pDataSource,
+ BOOL bIncludeLink = FALSE, LPPOINT lpOffset = NULL,
+ LPSIZE lpSize = NULL);
+
+// Overridables
+ // overridables you must implement for yourself
+ virtual BOOL OnDraw(CDC* pDC, CSize& rSize) = 0;
+ // drawing for metafile format (return FALSE if not supported or error)
+ // (called for DVASPECT_CONTENT only)
+
+ // overridables you may want to implement yourself
+ virtual void OnUpdate(COleServerItem* pSender,
+ LPARAM lHint, CObject* pHint, DVASPECT nDrawAspect);
+ // the default implementation always calls NotifyChanged
+
+ virtual BOOL OnDrawEx(CDC* pDC, DVASPECT nDrawAspect, CSize& rSize);
+ // advanced drawing -- called for DVASPECT other than DVASPECT_CONTENT
+ virtual BOOL OnSetExtent(DVASPECT nDrawAspect, const CSize& size);
+ virtual BOOL OnGetExtent(DVASPECT nDrawAspect, CSize& rSize);
+ // default implementation uses m_sizeExtent
+
+ // overridables you do not have to implement
+ virtual void OnDoVerb(LONG iVerb);
+ // default routes to OnShow &/or OnOpen
+ virtual BOOL OnSetColorScheme(const LOGPALETTE* lpLogPalette);
+ // default does nothing
+ virtual COleDataSource* OnGetClipboardData(BOOL bIncludeLink,
+ LPPOINT lpOffset, LPSIZE lpSize);
+ // called for access to clipboard data
+ virtual BOOL OnQueryUpdateItems();
+ // called to determine if there are any contained out-of-date links
+ virtual void OnUpdateItems();
+ // called to update any out-of-date links
+
+protected:
+ virtual void OnShow();
+ // show item in the user interface (may edit in-place)
+ virtual void OnOpen();
+ // show item in the user interface (must open fully)
+ virtual void OnHide();
+ // hide document (and sometimes application)
+
+ // very advanced overridables
+public:
+ virtual BOOL OnInitFromData(COleDataObject* pDataObject, BOOL bCreation);
+ // initialize object from IDataObject
+
+ // see COleDataSource for a description of these overridables
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // HGLOBAL version will be called first, then CFile* version
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ // Rare -- only if you support SetData (programmatic paste)
+
+ // advanced helpers for CopyToClipboard
+ void GetEmbedSourceData(LPSTGMEDIUM lpStgMedium);
+ void AddOtherClipboardData(COleDataSource* pDataSource);
+ BOOL GetLinkSourceData(LPSTGMEDIUM lpStgMedium);
+ void GetObjectDescriptorData(LPPOINT lpOffset, LPSIZE lpSize,
+ LPSTGMEDIUM lpStgMedium);
+
+// Implementation
+public:
+ BOOL m_bNeedUnlock; // if TRUE need to pDoc->LockExternal(FALSE)
+ BOOL m_bAutoDelete; // if TRUE will OnRelease will 'delete this'
+
+ // special version of OnFinalRelease to implement document locking
+ virtual void OnFinalRelease();
+
+protected:
+ CString m_strItemName; // simple item name
+
+public:
+ LPOLEADVISEHOLDER m_lpOleAdviseHolder; // may be NULL
+ LPDATAADVISEHOLDER m_lpDataAdviseHolder; // may be NULL
+
+ virtual ~COleServerItem();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // implementation helpers
+ void NotifyClient(OLE_NOTIFICATION wNotification, DWORD dwParam);
+ LPDATAOBJECT GetDataObject();
+ LPOLEOBJECT GetOleObject();
+ LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+
+protected:
+ virtual BOOL GetMetafileData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM pmedium);
+ // calls OnDraw or OnDrawEx
+ virtual void OnSaveEmbedding(LPSTORAGE lpStorage);
+ virtual BOOL IsBlank() const;
+
+ // CItemDataSource implements OnRender reflections to COleServerItem
+ class CItemDataSource : public COleDataSource
+ {
+ protected:
+ // the GetData and SetData interfaces forward to m_pItem
+ virtual BOOL OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlobal);
+ virtual BOOL OnRenderFileData(LPFORMATETC lpFormatEtc, CFile* pFile);
+ virtual BOOL OnRenderData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium);
+ // HGLOBAL version will be called first, then CFile* version
+
+ virtual BOOL OnSetData(LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium,
+ BOOL bRelease);
+ };
+ CItemDataSource m_dataSource;
+ // data source used to implement IDataObject
+
+// Interface Maps
+// (Note: these interface maps are used just for link implementation)
+public:
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleServerItem, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(LPENUMOLEVERB*);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(LPCLSID);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleServerItem, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class CItemDataSource;
+ friend class COleServerDoc;
+ friend class COleLinkingDoc;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleLinkingDoc -
+// (enables linking to embeddings - beginnings of server fuctionality)
+
+class COleLinkingDoc : public COleDocument
+{
+ DECLARE_DYNAMIC(COleLinkingDoc)
+
+// Constructors
+public:
+ COleLinkingDoc();
+
+// Operations
+ BOOL Register(COleObjectFactory* pFactory, LPCTSTR lpszPathName);
+ // notify the running object table and connect to pServer
+ void Revoke();
+ // revoke from running object table
+
+// Overridables
+protected:
+ virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
+ // return item for the named linked item (for supporting links)
+ virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);
+ // return item for the named embedded item (for links to embeddings)
+
+// Implementation
+public:
+ COleObjectFactory* m_pFactory; // back-pointer to server
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleLinkingDoc();
+
+ // overrides for updating of monikers & running object table registration
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ virtual LPOLEITEMCONTAINER GetContainer();
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+
+ // special handling of error messages during save/load
+ virtual void ReportSaveLoadException(LPCTSTR lpszPathName,
+ CException* e, BOOL bSaving, UINT nIDPDefault);
+ void BeginDeferErrors();
+ SCODE EndDeferErrors(SCODE sc);
+
+protected:
+ BOOL m_bDeferErrors; // TRUE if in non-interactive OLE mode
+ CException* m_pLastException;
+
+ DWORD m_dwRegister; // file moniker's registration in the ROT
+ LPMONIKER m_lpMonikerROT; // file moniker that is registered
+ CString m_strMoniker; // filename used to create moniker
+ BOOL m_bVisibleLock; // TRUE if user is holding lock on document
+
+ // implementation helpers
+ virtual BOOL RegisterIfServerAttached(LPCTSTR lpszPathName, BOOL bMessage);
+ void LockExternal(BOOL bLock, BOOL bRemoveRefs);
+ void UpdateVisibleLock(BOOL bVisible, BOOL bRemoveRefs);
+ virtual void OnShowViews(BOOL bVisible);
+
+ virtual void SaveToStorage(CObject* pObject = NULL);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PersistFile, IPersistFile)
+ INIT_INTERFACE_PART(COleLinkingDoc, PersistFile)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(Load)(LPCOLESTR, DWORD);
+ STDMETHOD(Save)(LPCOLESTR, BOOL);
+ STDMETHOD(SaveCompleted)(LPCOLESTR);
+ STDMETHOD(GetCurFile)(LPOLESTR*);
+ END_INTERFACE_PART(PersistFile)
+
+ BEGIN_INTERFACE_PART(OleItemContainer, IOleItemContainer)
+ INIT_INTERFACE_PART(COleLinkingDoc, OleItemContainer)
+ STDMETHOD(ParseDisplayName)(LPBC, LPOLESTR, ULONG*, LPMONIKER*);
+ STDMETHOD(EnumObjects)(DWORD, LPENUMUNKNOWN*);
+ STDMETHOD(LockContainer)(BOOL);
+ STDMETHOD(GetObject)(LPOLESTR, DWORD, LPBINDCTX, REFIID, LPVOID*);
+ STDMETHOD(GetObjectStorage)(LPOLESTR, LPBINDCTX, REFIID, LPVOID*);
+ STDMETHOD(IsRunning)(LPOLESTR);
+ END_INTERFACE_PART(OleItemContainer)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleClientItem;
+ friend class COleClientItem::XOleClientSite;
+ friend class COleServerItem::XOleObject;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleServerDoc - registered server document containing COleServerItems
+
+class COleServerDoc : public COleLinkingDoc
+{
+ DECLARE_DYNAMIC(COleServerDoc)
+
+// Constructors and Destructors
+public:
+ COleServerDoc();
+
+// Attributes
+ BOOL IsEmbedded() const; // TRUE if document is an embedding
+ BOOL IsDocObject() const; // TRUE if document is a DocObject
+ COleServerItem* GetEmbeddedItem();
+ // return embedded item for document (will allocate if necessary)
+
+ // attributes specific to in-place activation
+ BOOL IsInPlaceActive() const;
+ void GetItemPosition(LPRECT lpPosRect) const;
+ // get current position rectangle of in-place edit
+ void GetItemClipRect(LPRECT lpClipRect) const;
+ // get current clipping rectangle of in-place edit
+ BOOL GetZoomFactor(LPSIZE lpSizeNum = NULL, LPSIZE lpSizeDenom = NULL,
+ LPCRECT lpPosRect = NULL) const;
+ // returns the zoom factor in pixels
+
+// Operations
+ void NotifyChanged();
+ // call this after you change some global attribute like
+ // document dimensions
+ void UpdateAllItems(COleServerItem* pSender,
+ LPARAM lHint = 0L, CObject* pHint = NULL,
+ DVASPECT nDrawAspect = DVASPECT_CONTENT);
+
+ // changes to the entire document (automatically notifies clients)
+ void NotifyRename(LPCTSTR lpszNewName);
+ void NotifySaved();
+ void NotifyClosed(); // call this after you close document
+
+ // specific operations for embedded documents
+ void SaveEmbedding(); // call this to save embedded (before closing)
+
+ // specific to in-place activation
+ BOOL ActivateInPlace();
+ void ActivateDocObject();
+ void RequestPositionChange(LPCRECT lpPosRect);
+ BOOL ScrollContainerBy(CSize sizeScroll);
+ BOOL DeactivateAndUndo();
+ BOOL DiscardUndoState();
+
+public:
+// Overridables for standard user interface (full server)
+ virtual BOOL OnUpdateDocument(); // implementation of embedded update
+
+protected:
+// Overridables you must implement for yourself
+ virtual COleServerItem* OnGetEmbeddedItem() = 0;
+ // return item representing entire (embedded) document
+
+// Overridables you do not have to implement
+ virtual void OnClose(OLECLOSE dwCloseOption);
+ virtual void OnSetHostNames(LPCTSTR lpszHost, LPCTSTR lpszHostObj);
+#ifndef _MAC
+ virtual HRESULT OnExecOleCmd(const GUID* pguidCmdGroup, DWORD nCmdID,
+ DWORD nCmdExecOpt, VARIANTARG* pvarargIn, VARIANTARG* pvarargOut);
+ virtual CDocObjectServer* GetDocObjectServer(LPOLEDOCUMENTSITE pDocSite);
+#endif
+
+// Advanced overridables
+ LPUNKNOWN GetInterfaceHook(const void* piid);
+ virtual void OnShowDocument(BOOL bShow);
+ // show first frame for document or hide all frames for document
+
+// Advanced overridables for in-place activation
+public:
+ virtual void OnDeactivate();
+ virtual void OnDeactivateUI(BOOL bUndoable);
+
+protected:
+ virtual void OnSetItemRects(LPCRECT lpPosRect, LPCRECT lpClipRect);
+ virtual BOOL OnReactivateAndUndo();
+
+ virtual void OnFrameWindowActivate(BOOL bActivate);
+ virtual void OnDocWindowActivate(BOOL bActivate);
+ virtual void OnShowControlBars(CFrameWnd* pFrameWnd, BOOL bShow);
+ virtual COleIPFrameWnd* CreateInPlaceFrame(CWnd* pParentWnd);
+ virtual void DestroyInPlaceFrame(COleIPFrameWnd* pFrameWnd);
+public:
+ virtual void OnResizeBorder(LPCRECT lpRectBorder,
+ LPOLEINPLACEUIWINDOW lpUIWindow, BOOL bFrame);
+
+// Implementation
+protected:
+ LPOLECLIENTSITE m_lpClientSite; // for embedded item
+ CString m_strHostObj; // name of document in container
+ BOOL m_bCntrVisible; // TRUE if OnShowWindow(TRUE) called
+ BOOL m_bClosing; // TRUE if shutting down
+#ifdef _MAC
+ BOOL m_bDeactivating; // TRUE if in-place deactivating
+#endif
+ COleServerItem* m_pEmbeddedItem; // pointer to embedded item for document
+
+ COleIPFrameWnd* m_pInPlaceFrame; // not NULL if in-place activated
+ CWnd* m_pOrigParent; // not NULL if existing view used
+ DWORD m_dwOrigStyle; // original style of in-place view
+ DWORD m_dwOrigStyleEx; // original extended style
+
+ CDocObjectServer* m_pDocObjectServer; // if DocObject, ptr to doc site
+
+public:
+ virtual ~COleServerDoc();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // overridables for implementation
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+ virtual void OnCloseDocument();
+ virtual void DeleteContents(); // delete auto-delete server items
+ virtual LPMONIKER GetMoniker(OLEGETMONIKER nAssign);
+ virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
+ // return item for the named linked item (only if supporting links)
+ virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
+
+protected:
+ // overrides to handle server user-interface
+ virtual BOOL SaveModified(); // return TRUE if ok to continue
+ virtual HMENU GetDefaultMenu(); // return menu based on doc type
+ virtual HACCEL GetDefaultAccelerator(); // return accel table based on doc type
+ virtual BOOL GetFileTypeString(CString& rString);
+
+ // IPersistStorage implementation
+ virtual void OnNewEmbedding(LPSTORAGE lpStorage);
+ virtual void OnOpenEmbedding(LPSTORAGE lpStorage);
+ virtual void OnSaveEmbedding(LPSTORAGE lpStorage);
+
+ // Implementation helpers
+ void NotifyAllItems(OLE_NOTIFICATION wNotification, DWORD dwParam);
+ BOOL SaveModifiedPrompt();
+ void ConnectView(CWnd* pParentWnd, CView* pView);
+ void UpdateUsingHostObj(UINT nIDS, CCmdUI* pCmdUI);
+
+// Message Maps
+ //{{AFX_MSG(COleServerDoc)
+ afx_msg void OnFileUpdate();
+ afx_msg void OnFileSaveCopyAs();
+ afx_msg void OnUpdateFileUpdate(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateFileExit(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(PersistStorage, IPersistStorage)
+ INIT_INTERFACE_PART(COleServerDoc, PersistStorage)
+ STDMETHOD(GetClassID)(LPCLSID);
+ STDMETHOD(IsDirty)();
+ STDMETHOD(InitNew)(LPSTORAGE);
+ STDMETHOD(Load)(LPSTORAGE);
+ STDMETHOD(Save)(LPSTORAGE, BOOL);
+ STDMETHOD(SaveCompleted)(LPSTORAGE);
+ STDMETHOD(HandsOffStorage)();
+ END_INTERFACE_PART(PersistStorage)
+
+ BEGIN_INTERFACE_PART(OleObject, IOleObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleObject)
+ STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
+ STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
+ STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
+ STDMETHOD(Close)(DWORD);
+ STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
+ STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
+ STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
+ STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
+ STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
+ STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
+ STDMETHOD(Update)();
+ STDMETHOD(IsUpToDate)();
+ STDMETHOD(GetUserClassID)(CLSID*);
+ STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
+ STDMETHOD(SetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(GetExtent)(DWORD, LPSIZEL);
+ STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
+ STDMETHOD(Unadvise)(DWORD);
+ STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
+ STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
+ STDMETHOD(SetColorScheme)(LPLOGPALETTE);
+ END_INTERFACE_PART(OleObject)
+
+ BEGIN_INTERFACE_PART(DataObject, IDataObject)
+ INIT_INTERFACE_PART(COleServerDoc, DataObject)
+ STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
+ STDMETHOD(QueryGetData)(LPFORMATETC);
+ STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
+ STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
+ STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
+ STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
+ STDMETHOD(DUnadvise)(DWORD);
+ STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
+ END_INTERFACE_PART(DataObject)
+
+ BEGIN_INTERFACE_PART(OleInPlaceObject, IOleInPlaceObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleInPlaceObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(InPlaceDeactivate)();
+ STDMETHOD(UIDeactivate)();
+ STDMETHOD(SetObjectRects)(LPCRECT, LPCRECT);
+ STDMETHOD(ReactivateAndUndo)();
+ END_INTERFACE_PART(OleInPlaceObject)
+
+ BEGIN_INTERFACE_PART(OleInPlaceActiveObject, IOleInPlaceActiveObject)
+ INIT_INTERFACE_PART(COleServerDoc, OleInPlaceActiveObject)
+ STDMETHOD(GetWindow)(HWND*);
+ STDMETHOD(ContextSensitiveHelp)(BOOL);
+ STDMETHOD(TranslateAccelerator)(LPMSG);
+ STDMETHOD(OnFrameWindowActivate)(BOOL);
+ STDMETHOD(OnDocWindowActivate)(BOOL);
+ STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL);
+ STDMETHOD(EnableModeless)(BOOL);
+ END_INTERFACE_PART(OleInPlaceActiveObject)
+
+ DECLARE_INTERFACE_MAP()
+
+ friend class COleServer;
+ friend class COleServerItem;
+ friend class CDocObjectServer;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// COleIPFrameWnd
+
+class COleCntrFrameWnd;
+
+class COleIPFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(COleIPFrameWnd)
+
+// Constructors
+public:
+ COleIPFrameWnd();
+
+// Overridables
+public:
+ virtual BOOL OnCreateControlBars(CWnd* pWndFrame, CWnd* pWndDoc);
+ // create control bars on container windows (pWndDoc can be NULL)
+ virtual BOOL OnCreateControlBars(CFrameWnd* pWndFrame, CFrameWnd* pWndDoc);
+ // create control bars on container windows (pWndDoc can be NULL)
+
+ virtual void RepositionFrame(LPCRECT lpPosRect, LPCRECT lpClipRect);
+ // Advanced: reposition frame to wrap around new lpPosRect
+
+// Implementation
+public:
+ BOOL m_bUIActive; // TRUE if currently in uiacitve state
+
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_CHILD|WS_BORDER|WS_CLIPSIBLINGS,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ virtual ~COleIPFrameWnd();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ // in-place state
+ OLEINPLACEFRAMEINFO m_frameInfo;
+ LPOLEINPLACEFRAME m_lpFrame;
+ LPOLEINPLACEUIWINDOW m_lpDocFrame;
+ COleCntrFrameWnd* m_pMainFrame;
+ COleCntrFrameWnd* m_pDocFrame;
+
+ HMENU m_hSharedMenu;
+ OLEMENUGROUPWIDTHS m_menuWidths;
+ HOLEMENU m_hOleMenu;
+ CRect m_rectPos; // client area rect of the item
+ CRect m_rectClip; // area to which frame should be clipped
+ BOOL m_bInsideRecalc;
+
+ HMENU m_hMenuHelpPopup; // shared Help menu for DocObjects
+
+ // Advanced: in-place activation virtual implementation
+ virtual BOOL BuildSharedMenu();
+ virtual void DestroySharedMenu();
+ virtual HMENU GetInPlaceMenu();
+
+ // Advanced: possible override to change in-place sizing behavior
+ virtual void OnRequestPositionChange(LPCRECT lpRect);
+
+protected:
+ //{{AFX_MSG(COleIPFrameWnd)
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg LRESULT OnRecalcParent(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg LRESULT OnResizeChild(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnContextHelp();
+ afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnBarCheck(UINT nID);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+#ifdef _MAC
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+#endif
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class COleServerDoc;
+ friend class COleCntrFrameWnd;
+ friend class CDocObjectServer;
+};
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+// COleResizeBar - supports in-place resizing in server applications
+
+class COleResizeBar : public CControlBar
+{
+ DECLARE_DYNAMIC(COleResizeBar)
+
+// Constructors
+public:
+ COleResizeBar();
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE,
+ UINT nID = AFX_IDW_RESIZE_BAR);
+
+// Implementation
+public:
+ virtual ~COleResizeBar();
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+protected:
+ CRectTracker m_tracker; // implemented with a tracker
+
+protected:
+ //{{AFX_MSG(COleResizeBar)
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnPaint();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnLButtonDown(UINT, CPoint point);
+ afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// COleStreamFile - implementation of CFile which uses an IStream
+
+class COleStreamFile : public CFile
+{
+ DECLARE_DYNAMIC(COleStreamFile)
+
+// Constructors and Destructors
+public:
+ COleStreamFile(LPSTREAM lpStream = NULL);
+
+// Operations
+ // Note: OpenStream and CreateStream can accept eith STGM_ flags or
+ // CFile::OpenFlags bits since common values are guaranteed to have
+ // the same semantics.
+ BOOL OpenStream(LPSTORAGE lpStorage, LPCTSTR lpszStreamName,
+ DWORD nOpenFlags = modeReadWrite|shareExclusive,
+ CFileException* pError = NULL);
+ BOOL CreateStream(LPSTORAGE lpStorage, LPCTSTR lpszStreamName,
+ DWORD nOpenFlags = modeReadWrite|shareExclusive|modeCreate,
+ CFileException* pError = NULL);
+
+ BOOL CreateMemoryStream(CFileException* pError = NULL);
+
+ // attach & detach can be used when Open/Create functions aren't adequate
+ void Attach(LPSTREAM lpStream);
+ LPSTREAM Detach();
+
+ IStream* GetStream() const;
+ // Returns the current stream
+
+// Implementation
+public:
+ LPSTREAM m_lpStream;
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleStreamFile();
+
+ // attributes for implementation
+ BOOL GetStatus(CFileStatus& rStatus) const;
+ virtual DWORD GetPosition() const;
+
+ virtual const CString GetStorageName() const;
+
+ // overrides for implementation
+ virtual CFile* Duplicate() const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+ virtual void Abort();
+ virtual void Flush();
+ virtual void Close();
+
+protected:
+ CString m_strStorageName;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMonikerFile - implementation of COleStreamFile that uses an IMoniker to
+// get the IStream
+
+class CMonikerFile: public COleStreamFile
+{
+ DECLARE_DYNAMIC(CMonikerFile)
+
+public:
+ CMonikerFile();
+
+#ifndef _MAC
+ virtual BOOL Open(LPCTSTR lpszURL, CFileException* pError=NULL);
+ // Uses synchronous URLMonikers to create a moniker.
+ // Opens the URL specified.
+ // If provided, pError will be set in case of error.
+ // Return value: TRUE if successful, FALSE otherwise.
+#endif //!_MAC
+
+ virtual BOOL Open(IMoniker* pMoniker, CFileException* pError=NULL);
+ // Binds to the provided moniker to obtain a stream.
+ // If provided, pError will be set in case of error.
+ // Return value: TRUE if successful, FALSE otherwise.
+
+ virtual void Close();
+ // Detaches the stream, Release()s it, and the moniker. Close may be
+ // called on unopened, or already closed streams.
+
+ BOOL Detach(CFileException* pError = NULL);
+ // Closes the stream. If there is an error when closing, then the
+ // error code will be placed in pError and the function will return FALSE.
+
+ IMoniker* GetMoniker() const;
+ // Returns the current moniker. The moniker returned is not AddRef()'ed.
+
+protected:
+// Overidables
+ IBindCtx* CreateBindContext(CFileException* pError);
+ // A hook so users can provide a particular IBindCtx, potentially one
+ // on which the user has registered one or more objects.
+
+// Implementation
+protected:
+#ifndef _MAC
+ virtual BOOL Open(LPCTSTR lpszUrl, IBindHost* pBindHost,
+ IBindStatusCallback* pBSC, IBindCtx* pBindCtx, CFileException* pError);
+ BOOL Attach(LPCTSTR lpszUrl, IBindHost* pBindHost,
+ IBindStatusCallback* pBSC, IBindCtx* pBindCtx, CFileException* pError);
+#endif
+ virtual BOOL Open(IMoniker* pMoniker, IBindHost* pBindHost,
+ IBindStatusCallback* pBSC, IBindCtx* pBindCtx, CFileException* pError);
+
+ BOOL Attach(IMoniker* pMoniker, IBindHost* pBindHost,
+ IBindStatusCallback* pBSC, IBindCtx* pBindCtx, CFileException* pError);
+
+ virtual BOOL PostBindToStream(CFileException* pError);
+
+ static IBindHost* CreateBindHost();
+public:
+ virtual ~CMonikerFile();
+ // Closes the stream, and releases the moniker if needed.
+
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ // Calls COleStreamFile::Dump(), and prints out moniker value.
+#endif
+
+private:
+ IPTR(IMoniker) m_Moniker;
+ // The moniker provided or created to which this class is bound.
+
+ CMonikerFile(const CMonikerFile&);
+ // Prevents copying.
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CAsyncMonikerFile - implementation of COleStreamFile that uses an
+// asynchronous IMoniker to get the IStream
+
+#ifndef _MAC
+
+class _AfxBindStatusCallback; // Forward declaration
+
+class CAsyncMonikerFile: public CMonikerFile
+{
+ DECLARE_DYNAMIC(CAsyncMonikerFile)
+
+public:
+ CAsyncMonikerFile();
+ // Creates the IBindStatusCallback used internally to provide asynchronous
+ // operation.
+
+ //All Open overloads call one of these two.
+ virtual BOOL Open(LPCTSTR lpszURL, IBindHost* pBindHost,
+ CFileException* pError=NULL);
+ virtual BOOL Open(IMoniker* pMoniker, IBindHost* pBindHost,
+ CFileException* pError=NULL);
+
+ //Open overloads that take monikers
+ virtual BOOL Open(IMoniker* pMoniker, CFileException* pError=NULL);
+ virtual BOOL Open(IMoniker* pMoniker, IServiceProvider* pServiceProvider,
+ CFileException* pError=NULL);
+ virtual BOOL Open(IMoniker* pMoniker, IUnknown* pUnknown,
+ CFileException* pError=NULL);
+
+ //Open overloads that take strings
+ virtual BOOL Open(LPCTSTR lpszURL, CFileException* pError=NULL);
+ virtual BOOL Open(LPCTSTR lpszURL, IServiceProvider* pServiceProvider,
+ CFileException* pError=NULL);
+ virtual BOOL Open(LPCTSTR lpszURL, IUnknown* pUnknown,
+ CFileException* pError=NULL);
+
+ virtual void Close();
+
+ IBinding* GetBinding() const;
+ // Returns the binding provided when the asychronous transfer begins.
+ // With the IBinding*, the user may abort, or pause the transfer.
+ // NULL may be returned if for any reason the transfer could not be
+ // made asynchronous, or if the IBinding* has not yet been provided by
+ // the system.
+
+ FORMATETC* GetFormatEtc() const;
+ // Returns the FORMATETC for the currently opened stream. NULL will be
+ // returned if this is called from outside the context of OnDataAvailable.
+ // If you want to keep the FORMATETC beyond this call, make a copy of it.
+ // The FORMATETC indicates the format of the data in the stream.
+
+protected:
+// Overidables
+ virtual DWORD GetBindInfo() const;
+ // Returns the settings returned by IBindStatusCallback::GetBindInfo.
+ // The default values returned should work for most cases and should not
+ // be changed lightly.
+
+ virtual LONG GetPriority() const;
+ // Returns the priority at which the asynchronous transfer will take
+ // place. The value is one of the standard thread priority flags.
+ // By default THREAD_PRIORITY_NORMAL is returned.
+
+ virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);
+ // Called when there is data available to be read. dwSize indicates
+ // the cumulative number of bytes which can be read. The bscfFlag may be used
+ // to identify first, last, and intermediate blocks of data.
+
+ virtual void OnLowResource();
+ // This is called when resources are low.
+
+ virtual void OnStartBinding();
+ // Called when the binding is starting up.
+
+ virtual void OnProgress(ULONG ulProgress, ULONG ulProgressMax,
+ ULONG ulStatusCode, LPCTSTR szStatusText);
+
+ virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);
+ // Called when the transfer is stopped. This function releases the
+ // IBinding and should nearly always be call when overidden.
+
+// Implementation
+public:
+ virtual ~CAsyncMonikerFile();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ // Calls CMonikerFile::Dump(), and prints out IBinding,
+ // IBindStatusCallback, and m_pFormatEtc values.
+#endif
+
+private:
+ friend class _AfxBindStatusCallback;
+
+ IPTR(IBinding) m_Binding;
+ _AfxBindStatusCallback* m_BSC;
+ FORMATETC* m_pFormatEtc;
+
+ void SetBinding(IBinding* pBinding);
+ // Sets and AddRefs m_Binding
+
+ void SetFormatEtc(FORMATETC* pFormatEtc);
+ // Sets the FORMATETC for the current stream.
+
+protected:
+ virtual BOOL PostBindToStream(CFileException* pError);
+};
+
+#endif // !_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDropSource (advanced drop source support)
+
+class COleDropSource : public CCmdTarget
+{
+// Constructors
+public:
+ COleDropSource();
+
+// Overridables
+ virtual SCODE QueryContinueDrag(BOOL bEscapePressed, DWORD dwKeyState);
+ virtual SCODE GiveFeedback(DROPEFFECT dropEffect);
+ virtual BOOL OnBeginDrag(CWnd* pWnd);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+public:
+ BEGIN_INTERFACE_PART(DropSource, IDropSource)
+ INIT_INTERFACE_PART(COleDropSource, DropSource)
+ STDMETHOD(QueryContinueDrag)(BOOL, DWORD);
+ STDMETHOD(GiveFeedback)(DWORD);
+ END_INTERFACE_PART(DropSource)
+
+ DECLARE_INTERFACE_MAP()
+
+ CRect m_rectStartDrag; // when mouse leaves this rect, drag drop starts
+ BOOL m_bDragStarted; // has drag really started yet?
+ DWORD m_dwButtonCancel; // which button will cancel (going down)
+ DWORD m_dwButtonDrop; // which button will confirm (going up)
+
+ // metrics for drag start determination
+ static AFX_DATA UINT nDragMinDist; // min. amount mouse must move for drag
+ static AFX_DATA UINT nDragDelay; // delay before drag starts
+
+ friend class COleDataSource;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleDropTarget (advanced drop target support)
+
+class COleDropTarget : public CCmdTarget
+{
+// Constructors
+public:
+ COleDropTarget();
+
+// Operations
+ BOOL Register(CWnd* pWnd);
+ virtual void Revoke(); // virtual for implementation
+
+// Overridables
+ virtual DROPEFFECT OnDragEnter(CWnd* pWnd, COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual DROPEFFECT OnDragOver(CWnd* pWnd, COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual BOOL OnDrop(CWnd* pWnd, COleDataObject* pDataObject,
+ DROPEFFECT dropEffect, CPoint point);
+ virtual DROPEFFECT OnDropEx(CWnd* pWnd, COleDataObject* pDataObject,
+ DROPEFFECT dropDefault, DROPEFFECT dropList, CPoint point);
+ virtual void OnDragLeave(CWnd* pWnd);
+ virtual DROPEFFECT OnDragScroll(CWnd* pWnd, DWORD dwKeyState,
+ CPoint point);
+
+// Implementation
+public:
+ virtual ~COleDropTarget();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ HWND m_hWnd; // HWND this IDropTarget is attached to
+ LPDATAOBJECT m_lpDataObject; // != NULL between OnDragEnter, OnDragLeave
+ UINT m_nTimerID; // != MAKEWORD(-1, -1) when in scroll area
+ DWORD m_dwLastTick; // only valid when m_nTimerID valid
+ UINT m_nScrollDelay; // time to next scroll
+
+ // metrics for drag-scrolling
+ static AFX_DATA int nScrollInset;
+ static AFX_DATA UINT nScrollDelay;
+ static AFX_DATA UINT nScrollInterval;
+
+ // implementation helpers
+ void SetupTimer(CView* pView, UINT nTimerID);
+ void CancelTimer(CWnd* pWnd);
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(DropTarget, IDropTarget)
+ INIT_INTERFACE_PART(COleDropTarget, DropTarget)
+ STDMETHOD(DragEnter)(LPDATAOBJECT, DWORD, POINTL, LPDWORD);
+ STDMETHOD(DragOver)(DWORD, POINTL, LPDWORD);
+ STDMETHOD(DragLeave)();
+ STDMETHOD(Drop)(LPDATAOBJECT, DWORD, POINTL pt, LPDWORD);
+ END_INTERFACE_PART(DropTarget)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleMessageFilter (implements IMessageFilter)
+
+class COleMessageFilter : public CCmdTarget
+{
+// Constructors
+public:
+ COleMessageFilter();
+
+// Operations
+ BOOL Register();
+ void Revoke();
+
+ // for controlling the busy state of the server application (called app)
+ virtual void BeginBusyState();
+ virtual void EndBusyState();
+ void SetBusyReply(SERVERCALL nBusyReply);
+
+ // for controlling actions taken against rejected/retried calls
+ void SetRetryReply(DWORD nRetryReply = 0);
+ // only used when the "not responding" dialog is disabled
+ void SetMessagePendingDelay(DWORD nTimeout = 5000);
+ // used to determine amount of time before significant message
+ void EnableBusyDialog(BOOL bEnableBusy = TRUE);
+ void EnableNotRespondingDialog(BOOL bEnableNotResponding = TRUE);
+ // used to enable/disable the two types of busy dialogs
+
+// Overridables
+ virtual BOOL OnMessagePending(const MSG* pMsg);
+ // return TRUE to eat the message (usually only if processed)
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual ~COleMessageFilter();
+ virtual BOOL IsSignificantMessage(MSG* pMsg);
+ // determine if any significant messages are present in the queue
+ virtual int OnBusyDialog(HTASK htaskBusy);
+ virtual int OnNotRespondingDialog(HTASK htaskBusy);
+ // these functions display the busy dialog
+
+protected:
+ BOOL m_bRegistered;
+ LONG m_nBusyCount; // for BeginBusyState & EndBusyState
+ BOOL m_bEnableBusy;
+ BOOL m_bEnableNotResponding;
+ BOOL m_bUnblocking;
+ DWORD m_nRetryReply; // only used if m_bEnableNotResponding == FALSE
+ DWORD m_nBusyReply;
+ DWORD m_nTimeout;
+
+// Interface Maps
+public:
+ BEGIN_INTERFACE_PART(MessageFilter, IMessageFilter)
+ INIT_INTERFACE_PART(COleMessageFilter, MessageFilter)
+ STDMETHOD_(DWORD, HandleInComingCall)(DWORD, HTASK, DWORD,
+ LPINTERFACEINFO);
+ STDMETHOD_(DWORD, RetryRejectedCall)(HTASK, DWORD, DWORD);
+ STDMETHOD_(DWORD, MessagePending)(HTASK, DWORD, DWORD);
+ END_INTERFACE_PART(MessageFilter)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// message map entries for OLE verbs
+
+#define ON_STDOLEVERB(iVerb, memberFxn) \
+ { 0xC002, 0, (UINT)iVerb, (UINT)iVerb, (UINT)-1, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(LPMSG, HWND, LPCRECT))&memberFxn },
+
+#define ON_OLEVERB(idsVerbName, memberFxn) \
+ { 0xC002, 0, 1, 1, idsVerbName, \
+ (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(LPMSG, HWND, LPCRECT))&memberFxn },
+
+/////////////////////////////////////////////////////////////////////////////
+// global helpers and debugging
+
+void AFXAPI AfxOleSetEditMenu(COleClientItem* pClient, CMenu* pMenu,
+ UINT iMenuItem, UINT nIDVerbMin, UINT nIDVerbMax = 0, UINT nIDConvert = 0);
+
+#ifdef _DEBUG
+// Mapping SCODEs to readable text
+LPCTSTR AFXAPI AfxGetFullScodeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetScodeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetScodeRangeString(SCODE sc);
+LPCTSTR AFXAPI AfxGetSeverityString(SCODE sc);
+LPCTSTR AFXAPI AfxGetFacilityString(SCODE sc);
+
+// Mapping IIDs to readable text
+LPCTSTR AFXAPI AfxGetIIDString(REFIID iid);
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXOLE_INLINE inline
+#define _AFXOLECLI_INLINE inline
+#define _AFXOLESVR_INLINE inline
+#define _AFXOLEDOBJ_INLINE inline
+#include <afxole.inl>
+#undef _AFXOLE_INLINE
+#undef _AFXOLECLI_INLINE
+#undef _AFXOLESVR_INLINE
+#undef _AFXOLEDOBJ_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXOLE_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxole.inl b/public/sdk/inc/mfc42/afxole.inl
new file mode 100644
index 000000000..6a970c553
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxole.inl
@@ -0,0 +1,408 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXOLE.H
+
+/////////////////////////////////////////////////////////////////////////////
+// General OLE inlines (CDocItem, COleDocument)
+
+#ifdef _AFXOLE_INLINE
+
+// CDocItem
+_AFXOLE_INLINE CDocument* CDocItem::GetDocument() const
+ { return m_pDocument; }
+
+// COleDocument
+_AFXOLE_INLINE void COleDocument::EnableCompoundFile(BOOL bEnable)
+ { m_bCompoundFile = bEnable; }
+
+// COleMessageFilter
+_AFXOLE_INLINE void COleMessageFilter::SetBusyReply(SERVERCALL nBusyReply)
+ { ASSERT_VALID(this); m_nBusyReply = nBusyReply; }
+_AFXOLE_INLINE void COleMessageFilter::SetRetryReply(DWORD nRetryReply)
+ { ASSERT_VALID(this); m_nRetryReply = nRetryReply; }
+_AFXOLE_INLINE void COleMessageFilter::SetMessagePendingDelay(DWORD nTimeout)
+ { ASSERT_VALID(this); m_nTimeout = nTimeout; }
+_AFXOLE_INLINE void COleMessageFilter::EnableBusyDialog(BOOL bEnable)
+ { ASSERT_VALID(this); m_bEnableBusy = bEnable; }
+_AFXOLE_INLINE void COleMessageFilter::EnableNotRespondingDialog(BOOL bEnable)
+ { ASSERT_VALID(this); m_bEnableNotResponding = bEnable; }
+
+// CMonikerFile
+_AFXOLE_INLINE CMonikerFile::CMonikerFile() { }
+_AFXOLE_INLINE IMoniker* CMonikerFile::GetMoniker() const
+ { ASSERT_VALID(this); return m_Moniker; }
+
+#ifndef _MAC
+// CAsyncMonikerFile
+_AFXOLE_INLINE IBinding* CAsyncMonikerFile::GetBinding() const
+ { ASSERT_VALID(this); return m_Binding; }
+_AFXOLE_INLINE void CAsyncMonikerFile::SetBinding(IBinding* pBinding)
+ { ASSERT_VALID(this); m_Binding=pBinding; }
+_AFXOLE_INLINE void CAsyncMonikerFile::SetFormatEtc(FORMATETC* pFormatEtc)
+ { ASSERT_VALID(this); m_pFormatEtc=pFormatEtc; }
+_AFXOLE_INLINE FORMATETC* CAsyncMonikerFile::GetFormatEtc() const
+ { ASSERT_VALID(this); return m_pFormatEtc; }
+#endif // !_MAC
+
+#endif //_AFXOLE_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE automation inlines
+
+#ifdef _AFXDISP_INLINE
+
+// COleException
+_AFXDISP_INLINE COleException::COleException()
+ { m_sc = S_OK; }
+_AFXDISP_INLINE COleException::~COleException()
+ { }
+
+// CCmdTarget
+_AFXDISP_INLINE DWORD CCmdTarget::InternalAddRef()
+ { ASSERT(GetInterfaceMap() != NULL); return InterlockedIncrement(&m_dwRef); }
+
+// CObjectFactory
+_AFXDISP_INLINE BOOL COleObjectFactory::IsRegistered() const
+ { ASSERT_VALID(this); return m_dwRegister != 0; }
+_AFXDISP_INLINE REFCLSID COleObjectFactory::GetClassID() const
+ { ASSERT_VALID(this); return m_clsid; }
+
+// COleDispatchDriver
+_AFXDISP_INLINE COleDispatchDriver::~COleDispatchDriver()
+ { ReleaseDispatch(); }
+_AFXDISP_INLINE COleDispatchDriver::operator LPDISPATCH()
+ { return m_lpDispatch; }
+
+// COleVariant
+_AFXDISP_INLINE COleVariant::COleVariant()
+ { AfxVariantInit(this); }
+_AFXDISP_INLINE COleVariant::~COleVariant()
+ { ::VariantClear(this); }
+_AFXDISP_INLINE COleVariant::COleVariant(LPCTSTR lpszSrc)
+ { vt = VT_EMPTY; *this = lpszSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(CString& strSrc)
+ { vt = VT_EMPTY; *this = strSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(BYTE nSrc)
+ { vt = VT_UI1; bVal = nSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(const COleCurrency& curSrc)
+ { vt = VT_CY; cyVal = curSrc.m_cur; }
+_AFXDISP_INLINE COleVariant::COleVariant(float fltSrc)
+ { vt = VT_R4; fltVal = fltSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(double dblSrc)
+ { vt = VT_R8; dblVal = dblSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(const COleDateTime& dateSrc)
+ { vt = VT_DATE; date = dateSrc.m_dt; }
+_AFXDISP_INLINE COleVariant::COleVariant(const CByteArray& arrSrc)
+ { vt = VT_EMPTY; *this = arrSrc; }
+_AFXDISP_INLINE COleVariant::COleVariant(const CLongBinary& lbSrc)
+ { vt = VT_EMPTY; *this = lbSrc; }
+_AFXDISP_INLINE BOOL COleVariant::operator==(LPCVARIANT pSrc) const
+ { return *this == *pSrc; }
+_AFXDISP_INLINE COleVariant::operator LPVARIANT()
+ { return this; }
+_AFXDISP_INLINE COleVariant::operator LPCVARIANT() const
+ { return this; }
+
+// COleCurrency
+_AFXDISP_INLINE COleCurrency::COleCurrency()
+ { m_cur.Hi = 0; m_cur.Lo = 0; SetStatus(valid); }
+_AFXDISP_INLINE COleCurrency::COleCurrency(CURRENCY cySrc)
+ { m_cur = cySrc; SetStatus(valid); }
+_AFXDISP_INLINE COleCurrency::COleCurrency(const COleCurrency& curSrc)
+ { m_cur = curSrc.m_cur; m_status = curSrc.m_status; }
+_AFXDISP_INLINE COleCurrency::COleCurrency(const VARIANT& varSrc)
+ { *this = varSrc; }
+_AFXDISP_INLINE COleCurrency::CurrencyStatus COleCurrency::GetStatus() const
+ { return m_status; }
+_AFXDISP_INLINE void COleCurrency::SetStatus(CurrencyStatus status)
+ { m_status = status; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator+=(const COleCurrency& cur)
+ { *this = *this + cur; return *this; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator-=(const COleCurrency& cur)
+ { *this = *this - cur; return *this; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator*=(long nOperand)
+ { *this = *this * nOperand; return *this; }
+_AFXDISP_INLINE const COleCurrency& COleCurrency::operator/=(long nOperand)
+ { *this = *this / nOperand; return *this; }
+_AFXDISP_INLINE BOOL COleCurrency::operator==(const COleCurrency& cur) const
+ { return(m_status == cur.m_status && m_cur.Hi == cur.m_cur.Hi &&
+ m_cur.Lo == cur.m_cur.Lo); }
+_AFXDISP_INLINE BOOL COleCurrency::operator!=(const COleCurrency& cur) const
+ { return(m_status != cur.m_status || m_cur.Hi != cur.m_cur.Hi ||
+ m_cur.Lo != cur.m_cur.Lo); }
+_AFXDISP_INLINE COleCurrency::operator CURRENCY() const
+ { return m_cur; }
+
+// COleDateTime
+_AFXDISP_INLINE COleDateTime::COleDateTime()
+ { m_dt = 0; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const COleDateTime& dateSrc)
+ { m_dt = dateSrc.m_dt; m_status = dateSrc.m_status; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const VARIANT& varSrc)
+ { *this = varSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(DATE dtSrc)
+ { m_dt = dtSrc; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTime::COleDateTime(time_t timeSrc)
+ { *this = timeSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const SYSTEMTIME& systimeSrc)
+ { *this = systimeSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(const FILETIME& filetimeSrc)
+ { *this = filetimeSrc; }
+_AFXDISP_INLINE COleDateTime::COleDateTime(int nYear, int nMonth, int nDay,
+ int nHour, int nMin, int nSec)
+ { SetDateTime(nYear, nMonth, nDay, nHour, nMin, nSec); }
+_AFXDISP_INLINE COleDateTime::COleDateTime(WORD wDosDate, WORD wDosTime)
+ { m_status = DosDateTimeToVariantTime(wDosDate, wDosTime, &m_dt) ?
+ valid : invalid; }
+_AFXDISP_INLINE const COleDateTime& COleDateTime::operator=(const COleDateTime& dateSrc)
+ { m_dt = dateSrc.m_dt; m_status = dateSrc.m_status; return *this; }
+_AFXDISP_INLINE COleDateTime::DateTimeStatus COleDateTime::GetStatus() const
+ { return m_status; }
+_AFXDISP_INLINE void COleDateTime::SetStatus(DateTimeStatus status)
+ { m_status = status; }
+_AFXDISP_INLINE BOOL COleDateTime::operator==(const COleDateTime& date) const
+ { return (m_status == date.m_status && m_dt == date.m_dt); }
+_AFXDISP_INLINE BOOL COleDateTime::operator!=(const COleDateTime& date) const
+ { return (m_status != date.m_status || m_dt != date.m_dt); }
+_AFXDISP_INLINE const COleDateTime& COleDateTime::operator+=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this + dateSpan; return *this; }
+_AFXDISP_INLINE const COleDateTime& COleDateTime::operator-=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this - dateSpan; return *this; }
+_AFXDISP_INLINE COleDateTime::operator DATE() const
+ { return m_dt; }
+_AFXDISP_INLINE COleDateTime::SetDate(int nYear, int nMonth, int nDay)
+ { return SetDateTime(nYear, nMonth, nDay, 0, 0, 0); }
+_AFXDISP_INLINE COleDateTime::SetTime(int nHour, int nMin, int nSec)
+ // Set date to zero date - 12/30/1899
+ { return SetDateTime(1899, 12, 30, nHour, nMin, nSec); }
+
+// COleDateTimeSpan
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan()
+ { m_span = 0; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan(double dblSpanSrc)
+ { m_span = dblSpanSrc; SetStatus(valid); }
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan(
+ const COleDateTimeSpan& dateSpanSrc)
+ { m_span = dateSpanSrc.m_span; m_status = dateSpanSrc.m_status; }
+_AFXDISP_INLINE COleDateTimeSpan::COleDateTimeSpan(
+ long lDays, int nHours, int nMins, int nSecs)
+ { SetDateTimeSpan(lDays, nHours, nMins, nSecs); }
+_AFXDISP_INLINE COleDateTimeSpan::DateTimeSpanStatus COleDateTimeSpan::GetStatus() const
+ { return m_status; }
+_AFXDISP_INLINE void COleDateTimeSpan::SetStatus(DateTimeSpanStatus status)
+ { m_status = status; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalDays() const
+ { ASSERT(GetStatus() == valid); return m_span; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalHours() const
+ { ASSERT(GetStatus() == valid); return m_span * 24; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalMinutes() const
+ { ASSERT(GetStatus() == valid); return m_span * 24 * 60; }
+_AFXDISP_INLINE double COleDateTimeSpan::GetTotalSeconds() const
+ { ASSERT(GetStatus() == valid); return m_span * 24 * 60 * 60; }
+_AFXDISP_INLINE long COleDateTimeSpan::GetDays() const
+ { ASSERT(GetStatus() == valid); return (long)m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator==(
+ const COleDateTimeSpan& dateSpan) const
+ { return (m_status == dateSpan.m_status &&
+ m_span == dateSpan.m_span); }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator!=(
+ const COleDateTimeSpan& dateSpan) const
+ { return (m_status != dateSpan.m_status ||
+ m_span != dateSpan.m_span); }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator<(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span < dateSpan.m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator>(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span > dateSpan.m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator<=(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span <= dateSpan.m_span; }
+_AFXDISP_INLINE BOOL COleDateTimeSpan::operator>=(
+ const COleDateTimeSpan& dateSpan) const
+ { ASSERT(GetStatus() == valid);
+ ASSERT(dateSpan.GetStatus() == valid);
+ return m_span >= dateSpan.m_span; }
+_AFXDISP_INLINE const COleDateTimeSpan& COleDateTimeSpan::operator+=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this + dateSpan; return *this; }
+_AFXDISP_INLINE const COleDateTimeSpan& COleDateTimeSpan::operator-=(
+ const COleDateTimeSpan dateSpan)
+ { *this = *this - dateSpan; return *this; }
+_AFXDISP_INLINE COleDateTimeSpan COleDateTimeSpan::operator-() const
+ { return -this->m_span; }
+_AFXDISP_INLINE COleDateTimeSpan::operator double() const
+ { return m_span; }
+
+// COleSafeArray
+_AFXDISP_INLINE COleSafeArray::COleSafeArray()
+ { AfxSafeArrayInit(this);
+ vt = VT_EMPTY; }
+_AFXDISP_INLINE COleSafeArray::~COleSafeArray()
+ { Clear(); }
+_AFXDISP_INLINE void COleSafeArray::Clear()
+ { VERIFY(::VariantClear(this) == NOERROR); }
+_AFXDISP_INLINE COleSafeArray::operator LPVARIANT()
+ { return this; }
+_AFXDISP_INLINE COleSafeArray::operator LPCVARIANT() const
+ { return this; }
+_AFXDISP_INLINE DWORD COleSafeArray::GetDim()
+ { return ::SafeArrayGetDim(parray); }
+_AFXDISP_INLINE DWORD COleSafeArray::GetElemSize()
+ { return ::SafeArrayGetElemsize(parray); }
+
+#endif //_AFXDISP_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Container inlines
+
+#ifdef _AFXOLECLI_INLINE
+
+// COleClientItem
+_AFXOLECLI_INLINE SCODE COleClientItem::GetLastStatus() const
+ { ASSERT_VALID(this); return m_scLast; }
+_AFXOLECLI_INLINE COleDocument* COleClientItem::GetDocument() const
+ { ASSERT_VALID(this); return (COleDocument*)m_pDocument; }
+_AFXOLECLI_INLINE OLE_OBJTYPE COleClientItem::GetType() const
+ { ASSERT_VALID(this); return m_nItemType; }
+_AFXOLECLI_INLINE DVASPECT COleClientItem::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_nDrawAspect; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsRunning() const
+ { ASSERT_VALID(this);
+ ASSERT(m_lpObject != NULL);
+ return ::OleIsRunning(m_lpObject); }
+_AFXOLECLI_INLINE UINT COleClientItem::GetItemState() const
+ { ASSERT_VALID(this); return m_nItemState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsInPlaceActive() const
+ { ASSERT_VALID(this);
+ return m_nItemState == activeState || m_nItemState == activeUIState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsOpen() const
+ { ASSERT_VALID(this); return m_nItemState == openState; }
+_AFXOLECLI_INLINE BOOL COleClientItem::IsLinkUpToDate() const
+ { ASSERT_VALID(this);
+ ASSERT(m_lpObject != NULL);
+ // TRUE if result is S_OK (aka S_TRUE)
+ return m_lpObject->IsUpToDate() == NOERROR; }
+_AFXOLECLI_INLINE CView* COleClientItem::GetActiveView() const
+ { return m_pView; }
+
+// COleLinkingDoc
+_AFXOLECLI_INLINE void COleLinkingDoc::BeginDeferErrors()
+ { ASSERT(m_pLastException == NULL); ++m_bDeferErrors; }
+
+#endif //_AFXOLECLI_INLINE
+
+#ifdef _AFXOLEDOBJ_INLINE
+
+// COleDataObject
+_AFXOLEDOBJ_INLINE COleDataObject::~COleDataObject()
+ { Release(); }
+
+#endif //_AFXOLECTL_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE dialog inlines
+
+#ifdef _AFXODLGS_INLINE
+
+_AFXODLGS_INLINE UINT COleDialog::GetLastError() const
+ { return m_nLastError; }
+_AFXODLGS_INLINE CString COleInsertDialog::GetPathName() const
+ { ASSERT_VALID(this);
+ ASSERT(GetSelectionType() != createNewItem); return m_szFileName; }
+_AFXODLGS_INLINE REFCLSID COleInsertDialog::GetClassID() const
+ { ASSERT_VALID(this); return m_io.clsid; }
+_AFXODLGS_INLINE HGLOBAL COleInsertDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_io.hMetaPict; }
+_AFXODLGS_INLINE DVASPECT COleInsertDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_io.dwFlags & IOF_CHECKDISPLAYASICON ?
+ DVASPECT_ICON : DVASPECT_CONTENT; }
+_AFXODLGS_INLINE HGLOBAL COleConvertDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_cv.hMetaPict; }
+_AFXODLGS_INLINE DVASPECT COleConvertDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return (DVASPECT)m_cv.dvAspect; }
+_AFXODLGS_INLINE REFCLSID COleConvertDialog::GetClassID() const
+ { ASSERT_VALID(this); return m_cv.clsidNew; }
+_AFXODLGS_INLINE HGLOBAL COleChangeIconDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_ci.hMetaPict; }
+_AFXODLGS_INLINE int COlePasteSpecialDialog::GetPasteIndex() const
+ { ASSERT_VALID(this); return m_ps.nSelectedIndex; }
+_AFXODLGS_INLINE DVASPECT COlePasteSpecialDialog::GetDrawAspect() const
+ { ASSERT_VALID(this); return m_ps.dwFlags & PSF_CHECKDISPLAYASICON ?
+ DVASPECT_ICON : DVASPECT_CONTENT; }
+_AFXODLGS_INLINE HGLOBAL COlePasteSpecialDialog::GetIconicMetafile() const
+ { ASSERT_VALID(this); return m_ps.hMetaPict; }
+_AFXODLGS_INLINE UINT COleBusyDialog::GetSelectionType() const
+ { ASSERT_VALID(this); return m_selection; }
+
+_AFXODLGS_INLINE BOOL COleChangeSourceDialog::IsValidSource()
+ { return m_cs.dwFlags & CSF_VALIDSOURCE; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetDisplayName()
+ { return m_cs.lpszDisplayName; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetFileName()
+ { return CString(m_cs.lpszDisplayName, m_cs.nFileLength); }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetItemName()
+ { return m_cs.lpszDisplayName+m_cs.nFileLength; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetFromPrefix()
+ { return m_cs.lpszFrom; }
+_AFXODLGS_INLINE CString COleChangeSourceDialog::GetToPrefix()
+ { return m_cs.lpszTo; }
+
+#endif //_AFXODLGS_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server inlines
+
+#ifdef _AFXOLESVR_INLINE
+
+// COleServerItem
+_AFXOLESVR_INLINE COleServerDoc* COleServerItem::GetDocument() const
+ { ASSERT_VALID(this); return (COleServerDoc*)m_pDocument; }
+_AFXOLESVR_INLINE void COleServerItem::NotifyChanged(DVASPECT nDrawAspect)
+ { ASSERT_VALID(this); NotifyClient(OLE_CHANGED, nDrawAspect); }
+_AFXOLESVR_INLINE const CString& COleServerItem::GetItemName() const
+ { ASSERT_VALID(this); return m_strItemName; }
+_AFXOLESVR_INLINE void COleServerItem::SetItemName(LPCTSTR lpszItemName)
+{
+ ASSERT_VALID(this);
+ ASSERT(lpszItemName != NULL);
+ ASSERT(AfxIsValidString(lpszItemName));
+ m_strItemName = lpszItemName;
+}
+_AFXOLESVR_INLINE BOOL COleServerItem::IsLinkedItem() const
+ { ASSERT_VALID(this); return GetDocument()->m_pEmbeddedItem != this; }
+_AFXOLESVR_INLINE COleDataSource* COleServerItem::GetDataSource()
+ { ASSERT_VALID(this); return &m_dataSource; }
+
+// COleServerDoc
+_AFXOLESVR_INLINE void COleServerDoc::NotifyChanged()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_CHANGED, DVASPECT_CONTENT); }
+_AFXOLESVR_INLINE void COleServerDoc::NotifyClosed()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_CLOSED, 0); }
+_AFXOLESVR_INLINE void COleServerDoc::NotifySaved()
+ { ASSERT_VALID(this); NotifyAllItems(OLE_SAVED, 0); }
+_AFXOLESVR_INLINE BOOL COleServerDoc::IsEmbedded() const
+ { ASSERT_VALID(this); return m_bEmbedded; }
+_AFXOLESVR_INLINE BOOL COleServerDoc::IsDocObject() const
+ { ASSERT_VALID(this); return (m_pDocObjectServer != NULL) ? TRUE : FALSE; }
+_AFXOLESVR_INLINE BOOL COleServerDoc::IsInPlaceActive() const
+ { ASSERT_VALID(this); return m_pInPlaceFrame != NULL; }
+#endif //_AFXOLESVR_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxolecl.rc b/public/sdk/inc/mfc42/afxolecl.rc
new file mode 100644
index 000000000..70e3032a7
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Can not activate a static OLE object."
+ AFX_IDP_FAILED_TO_CONNECT "Failed to connect.\nLink may be broken."
+ AFX_IDP_SERVER_BUSY "Unable to process command, server busy."
+ AFX_IDP_BAD_VERB "Failed to perform server operation."
+ AFX_IDP_FAILED_TO_LAUNCH "Failed to launch server application."
+ AFX_IDS_UPDATING_ITEMS "Updating OLE objects"
+ AFX_IDP_FAILED_TO_CONVERT "Failed to convert OLE object."
+ AFX_IDP_ASK_TO_DISCARD "OLE objects cannot be saved while exiting Windows!\nDiscard all changes to %1?"
+ AFX_IDP_FAILED_TO_CREATE "Failed to create object. Make sure the application is entered in the system registry."
+
+ AFX_IDS_METAFILE_FORMAT "Picture (Metafile)\na picture"
+ AFX_IDS_DIB_FORMAT "Device Independent Bitmap\na device independent bitmap"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\na bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\ntext with font and paragraph formatting"
+ AFX_IDS_TEXT_FORMAT "Unformatted Text\ntext without any formatting"
+
+ AFX_IDS_INVALID_CURRENCY "Invalid Currency."
+ AFX_IDS_INVALID_DATETIME "Invalid DateTime."
+ AFX_IDS_INVALID_DATETIMESPAN "Invalid DateTimeSpan."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/afxolesv.rc b/public/sdk/inc/mfc42/afxolesv.rc
new file mode 100644
index 000000000..781dcab00
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Update %1 before proceeding?"
+ AFX_IDP_FAILED_TO_UPDATE, "Could not update client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Failed to register. OLE features may not work properly."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Failed to update the system registry.\nPlease try using REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "E&xit && Return to %1"
+ AFX_IDS_UPDATE_MENU, "&Update %1"
+ AFX_IDS_SAVEFILECOPY, "Save Copy As"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/afxplex_.h b/public/sdk/inc/mfc42/afxplex_.h
new file mode 100644
index 000000000..9f9a5e1cd
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxplex_.h
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPLEX_H__
+#define __AFXPLEX_H__
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifdef AFX_COLL_SEG
+#pragma code_seg(AFX_COLL_SEG)
+#endif
+
+struct CPlex // warning variable length structure
+{
+ CPlex* pNext;
+#if (_AFX_PACKING >= 8)
+ DWORD dwReserved[1]; // align on 8 byte boundary
+#endif
+ // BYTE data[maxNum*elementSize];
+
+ void* data() { return this+1; }
+
+ static CPlex* PASCAL Create(CPlex*& head, UINT nMax, UINT cbElement);
+ // like 'calloc' but no zero fill
+ // may throw memory exceptions
+
+ void FreeDataChain(); // free this one and links
+};
+
+#ifdef AFX_COLL_SEG
+#pragma code_seg()
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#endif //__AFXPLEX_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxprint.rc b/public/sdk/inc/mfc42/afxprint.rc
new file mode 100644
index 000000000..a3f534c49
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Printing",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "on the",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Cancel",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Cancel",IDCANCEL,46,45,40,15
+ CTEXT "Press Cmd-. to cancel.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Next Page",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "Pre&v Page",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Zoom &In",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Zoom &Out",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Next Page",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "Pre&v Page",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Zoom &In",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Zoom &Out",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Print...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Next",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "Pre&v",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&In",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Out",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Close",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "on %1" // for print output
+ AFX_IDS_ONEPAGE, "&One Page" // for preview button
+ AFX_IDS_TWOPAGE, "&Two Page" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Page %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Page %u\nPages %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Printer Files (*.prn)|*.prn|All Files (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Print to File" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "to %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/afxpriv.h b/public/sdk/inc/mfc42/afxpriv.h
new file mode 100644
index 000000000..330154123
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxpriv.h
@@ -0,0 +1,789 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Note: This header file contains useful classes that are documented only
+// in the MFC Technical Notes. These classes may change from version to
+// version, so be prepared to change your code accordingly if you utilize
+// this header. In the future, commonly used portions of this header
+// may be moved and officially documented.
+
+#ifndef __AFXPRIV_H__
+#define __AFXPRIV_H__
+
+#ifndef __AFXADV_H__
+ #include <afxadv.h>
+#endif
+
+#ifndef _INC_MALLOC
+ #include <malloc.h>
+#endif
+
+#ifndef __AFXEXT_H__
+ #include <afxext.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXPRIV - MFC Private Classes
+
+// Implementation structures
+struct AFX_SIZEPARENTPARAMS; // Control bar implementation
+struct AFX_CMDHANDLERINFO; // Command routing implementation
+
+// Classes declared in this file
+
+ //CDC
+ class CPreviewDC; // Virtual DC for print preview
+
+ //CCmdTarget
+ //CWnd
+ //CView
+ class CPreviewView; // Print preview view
+ //CFrameWnd
+ class COleCntrFrameWnd;
+ //CMiniFrameWnd
+ class CMiniDockFrameWnd;
+
+class CDockContext; // for dragging control bars
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// Global ID ranges (see Technical note TN020 for more details)
+
+// 8000 -> FFFF command IDs (used for menu items, accelerators and controls)
+#define IS_COMMAND_ID(nID) ((nID) & 0x8000)
+
+// 8000 -> DFFF : user commands
+// E000 -> EFFF : AFX commands and other things
+// F000 -> FFFF : standard windows commands and other things etc
+ // E000 -> E7FF standard commands
+ // E800 -> E8FF control bars (first 32 are special)
+ // E900 -> EEFF standard window controls/components
+ // EF00 -> EFFF SC_ menu help
+ // F000 -> FFFF standard strings
+#define ID_COMMAND_FROM_SC(sc) (((sc - 0xF000) >> 4) + AFX_IDS_SCFIRST)
+
+// 0000 -> 7FFF IDR range
+// 0000 -> 6FFF : user resources
+// 7000 -> 7FFF : AFX (and standard windows) resources
+// IDR ranges (NOTE: IDR_ values must be <32768)
+#define ASSERT_VALID_IDR(nIDR) ASSERT((nIDR) != 0 && (nIDR) < 0x8000)
+
+/////////////////////////////////////////////////////////////////////////////
+// Context sensitive help support (see Technical note TN028 for more details)
+
+// Help ID bases
+#define HID_BASE_COMMAND 0x00010000UL // ID and IDM
+#define HID_BASE_RESOURCE 0x00020000UL // IDR and IDD
+#define HID_BASE_PROMPT 0x00030000UL // IDP
+#define HID_BASE_NCAREAS 0x00040000UL
+#define HID_BASE_CONTROL 0x00050000UL // IDC
+#define HID_BASE_DISPATCH 0x00060000UL // IDispatch help codes
+
+/////////////////////////////////////////////////////////////////////////////
+// Internal AFX Windows messages (see Technical note TN024 for more details)
+// (0x0360 - 0x037F are reserved for MFC)
+
+#define WM_QUERYAFXWNDPROC 0x0360 // lResult = 1 if processed by AfxWndProc
+#define WM_SIZEPARENT 0x0361 // lParam = &AFX_SIZEPARENTPARAMS
+#define WM_SETMESSAGESTRING 0x0362 // wParam = nIDS (or 0),
+ // lParam = lpszOther (or NULL)
+#define WM_IDLEUPDATECMDUI 0x0363 // wParam == bDisableIfNoHandler
+#define WM_INITIALUPDATE 0x0364 // (params unused) - sent to children
+#define WM_COMMANDHELP 0x0365 // lResult = TRUE/FALSE,
+ // lParam = dwContext
+#define WM_HELPHITTEST 0x0366 // lResult = dwContext,
+ // lParam = MAKELONG(x,y)
+#define WM_EXITHELPMODE 0x0367 // (params unused)
+#define WM_RECALCPARENT 0x0368 // force RecalcLayout on frame window
+ // (only for inplace frame windows)
+#define WM_SIZECHILD 0x0369 // special notify from COleResizeBar
+ // wParam = ID of child window
+ // lParam = lpRectNew (new position/size)
+#define WM_KICKIDLE 0x036A // (params unused) causes idles to kick in
+#define WM_QUERYCENTERWND 0x036B // lParam = HWND to use as centering parent
+#define WM_DISABLEMODAL 0x036C // lResult = 0, disable during modal state
+ // lResult = 1, don't disable
+#define WM_FLOATSTATUS 0x036D // wParam combination of FS_* flags below
+
+// WM_ACTIVATETOPLEVEL is like WM_ACTIVATEAPP but works with hierarchies
+// of mixed processes (as is the case with OLE in-place activation)
+#define WM_ACTIVATETOPLEVEL 0x036E // wParam = nState (like WM_ACTIVATE)
+ // lParam = pointer to HWND[2]
+ // lParam[0] = hWnd getting WM_ACTIVATE
+ // lParam[1] = hWndOther
+
+#define WM_QUERY3DCONTROLS 0x036F // lResult != 0 if 3D controls wanted
+
+// Note: Messages 0x0370, 0x0371, and 0x372 were incorrectly used by
+// some versions of Windows. To remain compatible, MFC does not
+// use messages in that range.
+#define WM_RESERVED_0370 0x0370
+#define WM_RESERVED_0371 0x0371
+#define WM_RESERVED_0372 0x0372
+
+// WM_SOCKET_NOTIFY and WM_SOCKET_DEAD are used internally by MFC's
+// Windows sockets implementation. For more information, see sockcore.cpp
+#define WM_SOCKET_NOTIFY 0x0373
+#define WM_SOCKET_DEAD 0x0374
+
+// same as WM_SETMESSAGESTRING except not popped if IsTracking()
+#define WM_POPMESSAGESTRING 0x0375
+
+// Constants used in DLGINIT resources for OLE control containers
+// NOTE: These are NOT real Windows messages they are simply tags
+// used in the control resource and are never used as 'messages'
+#define WM_OCC_LOADFROMSTREAM 0x0376
+#define WM_OCC_LOADFROMSTORAGE 0x0377
+#define WM_OCC_INITNEW 0x0378
+#define WM_OCC_LOADFROMSTREAM_EX 0x037A
+#define WM_OCC_LOADFROMSTORAGE_EX 0x037B
+
+// Marker used while rearranging the message queue
+#define WM_QUEUE_SENTINEL 0x0379
+
+// Note: Messages 0x037C - 0x37F reserved for future MFC use.
+#define WM_RESERVED_037C 0x037C
+#define WM_RESERVED_037D 0x037D
+#define WM_RESERVED_037E 0x037E
+#define WM_RESERVED_037F 0x037F
+
+// like ON_MESSAGE but no return value
+#define ON_MESSAGE_VOID(message, memberFxn) \
+ { message, 0, 0, 0, AfxSig_vv, \
+ (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&memberFxn },
+
+// special struct for WM_SIZEPARENT
+struct AFX_SIZEPARENTPARAMS
+{
+ HDWP hDWP; // handle for DeferWindowPos
+ RECT rect; // parent client rectangle (trim as appropriate)
+ SIZE sizeTotal; // total size on each side as layout proceeds
+ BOOL bStretch; // should stretch to fill all space
+};
+
+// flags for wParam in the WM_FLOATSTATUS message
+enum { FS_SHOW = 0x01, FS_HIDE = 0x02,
+ FS_ACTIVATE = 0x04, FS_DEACTIVATE = 0x08,
+ FS_ENABLE = 0x10, FS_DISABLE = 0x20,
+ FS_SYNCACTIVE = 0x40 };
+
+void AFXAPI AfxRepositionWindow(AFX_SIZEPARENTPARAMS* lpLayout,
+ HWND hWnd, LPCRECT lpRect);
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of command routing
+
+struct AFX_CMDHANDLERINFO
+{
+ CCmdTarget* pTarget;
+ void (AFX_MSG_CALL CCmdTarget::*pmf)(void);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Robust file save support
+// opens a temp file if modeCreate specified and enough free space
+// renaming, etc occurs automatically if everything succeeds
+
+class CMirrorFile : public CFile
+{
+// Implementation
+public:
+ virtual void Abort();
+ virtual void Close();
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError = NULL);
+
+protected:
+ CString m_strMirrorName;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of PrintPreview
+
+class CPreviewDC : public CDC
+{
+ DECLARE_DYNAMIC(CPreviewDC)
+
+public:
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+ virtual void SetOutputDC(HDC hDC);
+
+ virtual void ReleaseOutputDC();
+
+// Constructors
+ CPreviewDC();
+
+// Implementation
+public:
+ virtual ~CPreviewDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ void SetScaleRatio(int nNumerator, int nDenominator);
+ void SetTopLeftOffset(CSize TopLeft);
+ void ClipToPage();
+
+ // These conversion functions can be used without an output DC
+
+ void PrinterDPtoScreenDP(LPPOINT lpPoint) const;
+
+// Device-Context Functions
+ virtual int SaveDC();
+ virtual BOOL RestoreDC(int nSavedDC);
+
+public:
+ virtual CGdiObject* SelectStockObject(int nIndex);
+ virtual CFont* SelectObject(CFont* pFont);
+
+// Drawing-Attribute Functions
+ virtual COLORREF SetBkColor(COLORREF crColor);
+ virtual COLORREF SetTextColor(COLORREF crColor);
+
+// Mapping Functions
+ virtual int SetMapMode(int nMapMode);
+ virtual CPoint SetViewportOrg(int x, int y);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+ virtual CSize SetViewportExt(int x, int y);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+ virtual CSize SetWindowExt(int x, int y);
+ virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ virtual BOOL GrayString(CBrush* pBrush,
+ BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int),
+ LPARAM lpData, int nCount,
+ int x, int y, int nWidth, int nHeight);
+
+// Printer Escape Functions
+ virtual int Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData);
+
+// Implementation
+protected:
+ void MirrorMappingMode(BOOL bCompute);
+ void MirrorViewportOrg();
+ void MirrorFont();
+ void MirrorAttributes();
+
+ CSize ComputeDeltas(int& x, LPCTSTR lpszString, UINT& nCount, BOOL bTabbed,
+ UINT nTabStops, LPINT lpnTabStops, int nTabOrigin,
+ LPTSTR lpszOutputString, int* pnDxWidths, int& nRightFixup);
+
+protected:
+ int m_nScaleNum; // Scale ratio Numerator
+ int m_nScaleDen; // Scale ratio Denominator
+ int m_nSaveDCIndex; // DC Save index when Screen DC Attached
+ int m_nSaveDCDelta; // delta between Attrib and output restore indices
+ CSize m_sizeTopLeft;// Offset for top left corner of page
+ HFONT m_hFont; // Font selected into the screen DC (NULL if none)
+ HFONT m_hPrinterFont; // Font selected into the print DC
+#ifdef _MAC
+ int m_aCharWidthsDraw[256]; // character widths for m_hDC
+ int m_aCharWidthsAttrib[256]; // character widths for m_hAttribDC
+#endif
+
+ CSize m_sizeWinExt; // cached window extents computed for screen
+ CSize m_sizeVpExt; // cached viewport extents computed for screen
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPreviewView
+
+class CDialogBar;
+
+class CPreviewView : public CScrollView
+{
+ DECLARE_DYNCREATE(CPreviewView)
+
+// Constructors
+public:
+ CPreviewView();
+ BOOL SetPrintView(CView* pPrintView);
+
+// Attributes
+protected:
+ CView* m_pOrigView;
+ CView* m_pPrintView;
+ CPreviewDC* m_pPreviewDC; // Output and attrib DCs Set, not created
+ CDC m_dcPrint; // Actual printer DC
+
+// Operations
+ void SetZoomState(UINT nNewState, UINT nPage, CPoint point);
+ void SetCurrentPage(UINT nPage, BOOL bClearRatios);
+
+ // Returns TRUE if in a page rect. Returns the page index
+ // in nPage and the point converted to 1:1 screen device coordinates
+ BOOL FindPageRect(CPoint& point, UINT& nPage);
+
+
+// Overridables
+ virtual void OnActivateView(BOOL bActivate,
+ CView* pActivateView, CView* pDeactiveView);
+
+ // Returns .cx/.cy as the numerator/denominator pair for the ratio
+ // using CSize for convenience
+ virtual CSize CalcScaleRatio(CSize windowSize, CSize actualSize);
+
+ virtual void PositionPage(UINT nPage);
+ virtual void OnDisplayPageNumber(UINT nPage, UINT nPagesDisplayed);
+
+// Implementation
+public:
+ virtual ~CPreviewView();
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+#ifdef _DEBUG
+ void AssertValid() const;
+ void Dump(CDumpContext& dc) const;
+#endif
+#ifdef _MAC
+ virtual void CalcWindowRect(LPRECT lpClientRect);
+#endif
+
+protected:
+ //{{AFX_MSG(CPreviewView)
+ afx_msg void OnPreviewClose();
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnDraw(CDC* pDC);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnNumPageChange();
+ afx_msg void OnNextPage();
+ afx_msg void OnPrevPage();
+ afx_msg void OnPreviewPrint();
+ afx_msg void OnZoomIn();
+ afx_msg void OnZoomOut();
+ afx_msg void OnUpdateNumPageChange(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNextPage(CCmdUI* pCmdUI);
+ afx_msg void OnUpdatePrevPage(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateZoomIn(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateZoomOut(CCmdUI* pCmdUI);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ //}}AFX_MSG
+
+ void DoZoom(UINT nPage, CPoint point);
+ void SetScaledSize(UINT nPage);
+ CSize CalcPageDisplaySize();
+
+ CPrintPreviewState* m_pPreviewState; // State to restore
+ CDialogBar* m_pToolBar; // Toolbar for preview
+
+ struct PAGE_INFO
+ {
+ CRect rectScreen; // screen rect (screen device units)
+ CSize sizeUnscaled; // unscaled screen rect (screen device units)
+ CSize sizeScaleRatio; // scale ratio (cx/cy)
+ CSize sizeZoomOutRatio; // scale ratio when zoomed out (cx/cy)
+ };
+
+ PAGE_INFO* m_pPageInfo; // Array of page info structures
+ PAGE_INFO m_pageInfoArray[2]; // Embedded array for the default implementation
+
+ BOOL m_bPageNumDisplayed;// Flags whether or not page number has yet
+ // been displayed on status line
+ UINT m_nZoomOutPages; // number of pages when zoomed out
+ UINT m_nZoomState;
+ UINT m_nMaxPages; // for sanity checks
+ UINT m_nCurrentPage;
+ UINT m_nPages;
+ int m_nSecondPageOffset; // used to shift second page position
+
+ HCURSOR m_hMagnifyCursor;
+
+ CSize m_sizePrinterPPI; // printer pixels per inch
+ CPoint m_ptCenterPoint;
+ CPrintInfo* m_pPreviewInfo;
+
+ DECLARE_MESSAGE_MAP()
+
+ friend class CView;
+ friend BOOL CALLBACK _AfxPreviewCloseProc(CFrameWnd* pFrameWnd);
+};
+
+// Zoom States
+#define ZOOM_OUT 0
+#define ZOOM_MIDDLE 1
+#define ZOOM_IN 2
+
+/////////////////////////////////////////////////////////////////////////////
+// toolbar docking support
+
+class CDockContext
+{
+public:
+// Construction
+ CDockContext(CControlBar* pBar);
+
+// Attributes
+ CPoint m_ptLast; // last mouse position during drag
+ CRect m_rectLast;
+ CSize m_sizeLast;
+ BOOL m_bDitherLast;
+
+ // Rectangles used during dragging or resizing
+ CRect m_rectDragHorz;
+ CRect m_rectDragVert;
+ CRect m_rectFrameDragHorz;
+ CRect m_rectFrameDragVert;
+
+ CControlBar* m_pBar; // the toolbar that created this context
+ CFrameWnd* m_pDockSite; // the controlling frame of the CControlBar
+ DWORD m_dwDockStyle; // allowable dock styles for bar
+ DWORD m_dwOverDockStyle; // style of dock that rect is over
+ DWORD m_dwStyle; // style of control bar
+ BOOL m_bFlip; // if shift key is down
+ BOOL m_bForceFrame; // if ctrl key is down
+
+ CDC* m_pDC; // where to draw during drag
+ BOOL m_bDragging;
+ int m_nHitTest;
+
+ UINT m_uMRUDockID;
+ CRect m_rectMRUDockPos;
+
+ DWORD m_dwMRUFloatStyle;
+ CPoint m_ptMRUFloatPos;
+
+// Drag Operations
+ virtual void StartDrag(CPoint pt);
+ void Move(CPoint pt); // called when mouse has moved
+ void EndDrag(); // drop
+ void OnKey(int nChar, BOOL bDown);
+
+// Resize Operations
+ virtual void StartResize(int nHitTest, CPoint pt);
+ void Stretch(CPoint pt);
+ void EndResize();
+
+// Double Click Operations
+ virtual void ToggleDocking();
+
+// Operations
+ void InitLoop();
+ void CancelLoop();
+
+// Implementation
+public:
+ ~CDockContext();
+ BOOL Track();
+ void DrawFocusRect(BOOL bRemoveRect = FALSE);
+ // draws the correct outline
+ void UpdateState(BOOL* pFlag, BOOL bNewValue);
+ DWORD CanDock();
+ CDockBar* GetDockBar(DWORD dwOverDockStyle);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CControlBarInfo - used for docking serialization
+
+class CControlBarInfo
+{
+public:
+// Implementation
+ CControlBarInfo();
+
+// Attributes
+ UINT m_nBarID; // ID of this bar
+ BOOL m_bVisible; // visibility of this bar
+ BOOL m_bFloating; // whether floating or not
+ BOOL m_bHorz; // orientation of floating dockbar
+ BOOL m_bDockBar; // TRUE if a dockbar
+ CPoint m_pointPos; // topleft point of window
+
+ UINT m_nMRUWidth; // MRUWidth for Dynamic Toolbars
+ BOOL m_bDocking; // TRUE if this bar has a DockContext
+ UINT m_uMRUDockID; // most recent docked dockbar
+ CRect m_rectMRUDockPos; // most recent docked position
+ DWORD m_dwMRUFloatStyle; // most recent floating orientation
+ CPoint m_ptMRUFloatPos; // most recent floating position
+
+ CPtrArray m_arrBarID; // bar IDs for bars contained within this one
+ CControlBar* m_pBar; // bar which this refers to (transient)
+
+ void Serialize(CArchive& ar, CDockState* pDockState);
+ BOOL LoadState(LPCTSTR lpszProfileName, int nIndex, CDockState* pDockState);
+ BOOL SaveState(LPCTSTR lpszProfileName, int nIndex);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDockBar - used for docking
+
+class CDockBar : public CControlBar
+{
+ DECLARE_DYNAMIC(CDockBar)
+
+// Construction
+public:
+ CDockBar(BOOL bFloating = FALSE); // TRUE if attached to CMiniDockFrameWnd
+ BOOL Create(CWnd* pParentWnd, DWORD dwStyle, UINT nID);
+
+// Attributes
+ BOOL m_bFloating;
+
+ virtual BOOL IsDockBar() const;
+ int GetDockedCount() const;
+ virtual int GetDockedVisibleCount() const;
+
+// Operations
+ void DockControlBar(CControlBar* pBar, LPCRECT lpRect = NULL);
+ void ReDockControlBar(CControlBar* pBar, LPCRECT lpRect = NULL);
+ BOOL RemoveControlBar(CControlBar*, int nPosExclude = -1, BOOL bAddPlaceHolder = FALSE);
+ void RemovePlaceHolder(CControlBar* pBar);
+
+// Implementation
+public:
+ virtual ~CDockBar();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+ virtual void DoPaint(CDC* pDC);
+#ifdef _MAC
+ virtual BOOL CheckMonochrome();
+#endif
+
+ // public implementation helpers
+ void GetBarInfo(CControlBarInfo* pInfo);
+ void SetBarInfo(CControlBarInfo* pInfo, CFrameWnd* pFrameWnd);
+ int FindBar(CControlBar* pBar, int nPosExclude = -1);
+ void ShowAll(BOOL bShow);
+
+protected:
+ CPtrArray m_arrBars; // each element is a CControlBar
+ BOOL m_bLayoutQuery;
+ CRect m_rectLayout;
+
+ CControlBar* GetDockedControlBar(int nPos) const;
+
+ // implementation helpers
+ int Insert(CControlBar* pBar, CRect rect, CPoint ptMid);
+ virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+#ifdef _MAC
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+#endif
+
+ //{{AFX_MSG(CDockBar)
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg void OnNcPaint();
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg void OnPaint();
+ afx_msg LRESULT OnSizeParent(WPARAM, LPARAM);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+ friend class CMiniDockFrameWnd;
+};
+
+class CMiniDockFrameWnd : public CMiniFrameWnd
+{
+ DECLARE_DYNCREATE(CMiniDockFrameWnd)
+
+public:
+// Construction
+ CMiniDockFrameWnd();
+ virtual BOOL Create(CWnd* pParent, DWORD dwBarStyle);
+
+// Operations
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+
+// Implementation
+public:
+ CDockBar m_wndDockBar;
+
+ //{{AFX_MSG(CMiniFrameWnd)
+ afx_msg void OnClose();
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+#endif
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// COleCntrFrameWnd
+
+class COleIPFrameWnd;
+
+class COleCntrFrameWnd : public CFrameWnd
+{
+// Constructor
+public:
+ COleCntrFrameWnd(COleIPFrameWnd* pInPlaceFrame);
+
+// Implementation
+protected:
+ COleIPFrameWnd* m_pInPlaceFrame;
+ virtual void PostNcDestroy();
+
+public:
+ virtual ~COleCntrFrameWnd();
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ void OnIdleUpdateCmdUI();
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+#ifdef _DEBUG
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDialogTemplate
+
+#ifndef _MAC
+
+class CDialogTemplate
+{
+// Constructors
+public:
+ CDialogTemplate(const DLGTEMPLATE* pTemplate = NULL);
+ CDialogTemplate(HGLOBAL hGlobal);
+
+// Attributes
+ BOOL HasFont() const;
+ BOOL SetFont(LPCTSTR lpFaceName, WORD nFontSize);
+ BOOL SetSystemFont(WORD nFontSize = 0);
+ BOOL GetFont(CString& strFaceName, WORD& nFontSize) const;
+ void GetSizeInDialogUnits(SIZE* pSize) const;
+ void GetSizeInPixels(SIZE* pSize) const;
+
+ static BOOL AFX_CDECL GetFont(const DLGTEMPLATE* pTemplate,
+ CString& strFaceName, WORD& nFontSize);
+
+// Operations
+ BOOL Load(LPCTSTR lpDialogTemplateID);
+ HGLOBAL Detach();
+
+// Implementation
+public:
+ ~CDialogTemplate();
+
+ HGLOBAL m_hTemplate;
+ DWORD m_dwTemplateSize;
+ BOOL m_bSystemFont;
+
+protected:
+ static BYTE* AFX_CDECL GetFontSizeField(const DLGTEMPLATE* pTemplate);
+ static UINT AFX_CDECL GetTemplateSize(const DLGTEMPLATE* pTemplate);
+ BOOL SetTemplate(const DLGTEMPLATE* pTemplate, UINT cb);
+};
+
+#endif //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// WM_NOTIFY support
+
+struct AFX_NOTIFY
+{
+ LRESULT* pResult;
+ NMHDR* pNMHDR;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global implementation helpers
+
+// window creation hooking
+void AFXAPI AfxHookWindowCreate(CWnd* pWnd);
+BOOL AFXAPI AfxUnhookWindowCreate();
+void AFXAPI AfxResetMsgCache();
+
+// for backward compatibility to previous versions
+#define _AfxHookWindowCreate AfxHookWindowCreate
+#define _AfxUnhookWindowCreate AfxUnhookWindowCreate
+
+// string helpers
+void AFXAPI AfxSetWindowText(HWND hWndCtrl, LPCTSTR lpszNew);
+int AFXAPI AfxLoadString(UINT nIDS, LPTSTR lpszBuf, UINT nMaxBuf = 256);
+
+HDC AFXAPI AfxCreateDC(HGLOBAL hDevNames, HGLOBAL hDevMode);
+
+void AFXAPI AfxGetModuleShortFileName(HINSTANCE hInst, CString& strShortName);
+
+// Failure dialog helpers
+void AFXAPI AfxFailMaxChars(CDataExchange* pDX, int nChars);
+void AFXAPI AfxFailRadio(CDataExchange* pDX);
+
+// DLL load helpers
+HINSTANCE AFXAPI AfxLoadDll(HINSTANCE* volatile hInst, LPCSTR lpszDLL);
+HINSTANCE AFXAPI AfxLoadDll(HINSTANCE* volatile hInst, LPCSTR lpszDLL,
+ FARPROC* pProcPtrs, LPCSTR lpszProcName);
+
+/////////////////////////////////////////////////////////////////////////////
+// Global UNICODE<>ANSI translation helpers
+
+LPDEVMODEW AFXAPI AfxDevModeA2W(LPDEVMODEW lpDevModeW, LPDEVMODEA lpDevModeA);
+LPDEVMODEA AFXAPI AfxDevModeW2A(LPDEVMODEA lpDevModeA, LPDEVMODEW lpDevModeW);
+#define DEVMODEW2A(lpw)\
+ ((lpw == NULL) ? NULL : AfxDevModeW2A((LPDEVMODEA)alloca(sizeof(DEVMODEA)+lpw->dmDriverExtra), lpw))
+#define DEVMODEA2W(lpa)\
+ ((lpa == NULL) ? NULL : AfxDevModeA2W((LPDEVMODEW)alloca(sizeof(DEVMODEW)+lpa->dmDriverExtra), lpa))
+
+LPTEXTMETRICW AFXAPI AfxTextMetricA2W(LPTEXTMETRICW lptmW, LPTEXTMETRICA pltmA);
+LPTEXTMETRICA AFXAPI AfxTextMetricW2A(LPTEXTMETRICA lptmA, LPTEXTMETRICW pltmW);
+#define TEXTMETRICW2A(lptmw)\
+ ((lptmw == NULL) ? NULL : AfxTextMetricW2A((LPTEXTMETRICA)alloca(sizeof(TEXTMETRICA)), lptmw))
+#define TEXTMETRICA2W(lptma)\
+ ((lptma == NULL) ? NULL : AfxTextMetricA2W((LPTEXTMETRICW)alloca(sizeof(TEXTMETRICW)), lptma))
+
+#ifndef __AFXCONV_H__
+#include <afxconv.h>
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXPRIV_H__
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef __AFXPRIV2_H__
+#include <afxpriv2.h>
+#endif
diff --git a/public/sdk/inc/mfc42/afxpriv2.h b/public/sdk/inc/mfc42/afxpriv2.h
new file mode 100644
index 000000000..e1a0e287f
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxpriv2.h
@@ -0,0 +1,225 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Note: This header file contains useful classes that are documented only
+// in the MFC Technical Notes. These classes may change from version to
+// version, so be prepared to change your code accordingly if you utilize
+// this header. In the future, commonly used portions of this header
+// may be moved and officially documented.
+
+#ifndef __AFXPRIV2_H__
+// Do not define __AFXPRIV2_H__ here. It is defined at the bottom.
+
+#ifndef __AFXPRIV_H__
+ #include <afxpriv.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXPRIV2 - MFC Private Classes
+
+// General OLE features
+
+#if (!defined _AFX_NO_OLE_SUPPORT) && (defined _OBJBASE_H_)
+
+// Implementation structures
+struct AFX_EVENT; // Event sink implementation
+
+// Classes declared in this file
+class COleControlLock;
+
+#endif
+
+// OLE Automation features
+
+#ifdef __AFXDISP_H__
+// Classes declared in this file
+
+//IStream
+ class CArchiveStream;
+
+// Functions declared in this file
+
+// AfxBSTR2ABTSR
+// AfxTaskStringA2W
+// AfxTaskStringW2A
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// General OLE features
+
+#if (!defined _AFX_NO_OLE_SUPPORT) && (defined _OBJBASE_H_)
+#ifndef __AFXPRIV2_H__OLE__
+#define __AFXPRIV2_H__OLE__
+
+/////////////////////////////////////////////////////////////////////////////
+// Implementation of event sink handling
+
+struct AFX_EVENT
+{
+ enum
+ {
+ event,
+ propRequest, propChanged,
+ propDSCNotify
+ };
+
+ AFX_EVENT(int eventKind);
+
+ AFX_EVENT(int eventKind, DISPID dispid, DISPPARAMS* pDispParams = NULL,
+ EXCEPINFO* pExcepInfo = NULL, UINT* puArgError = NULL);
+
+ int m_eventKind;
+ DISPID m_dispid;
+ DISPPARAMS* m_pDispParams;
+ EXCEPINFO* m_pExcepInfo;
+ UINT* m_puArgError;
+ BOOL m_bPropChanged;
+ HRESULT m_hResult;
+ DSCSTATE m_nDSCState;
+ DSCREASON m_nDSCReason;
+};
+
+inline AFX_EVENT::AFX_EVENT(int eventKind)
+{
+ m_eventKind = eventKind;
+ m_dispid = DISPID_UNKNOWN;
+ m_pDispParams = NULL;
+ m_pExcepInfo = NULL;
+ m_puArgError = NULL;
+ m_hResult = NOERROR;
+ m_nDSCState = dscNoState;
+ m_nDSCReason = dscNoReason;
+}
+
+inline AFX_EVENT::AFX_EVENT(int eventKind, DISPID dispid,
+ DISPPARAMS* pDispParams, EXCEPINFO* pExcepInfo, UINT* puArgError)
+{
+ m_eventKind = eventKind;
+ m_dispid = dispid;
+ m_pDispParams = pDispParams;
+ m_pExcepInfo = pExcepInfo;
+ m_puArgError = puArgError;
+ m_hResult = NOERROR;
+ m_nDSCState = dscNoState;
+ m_nDSCReason = dscNoReason;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// COleControlLock
+
+class COleControlLock
+{
+// Constructors
+public:
+ COleControlLock(REFCLSID clsid);
+
+// Attributes
+ CLSID m_clsid;
+ LPCLASSFACTORY m_pClassFactory;
+ COleControlLock* m_pNextLock;
+
+// Implementation
+public:
+ virtual ~COleControlLock();
+};
+
+#endif // __AFXPRIV2_H__OLE__
+#endif //(!defined _AFX_NO_OLE_SUPPORT) && (defined _OBJBASE_H_)
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Automation features
+
+#ifdef __AFXDISP_H__
+#ifndef __AFXPRIV2_H__DISP__
+#define __AFXPRIV2_H__DISP__
+
+/////////////////////////////////////////////////////////////////////////////
+// CArchiveStream
+
+class CArchiveStream : public IStream
+{
+public:
+ CArchiveStream(CArchive* pArchive);
+
+// Implementation
+ CArchive* m_pArchive;
+
+ STDMETHOD_(ULONG, AddRef)();
+ STDMETHOD_(ULONG, Release)();
+ STDMETHOD(QueryInterface)(REFIID, LPVOID*);
+
+ STDMETHOD(Read)(void*, ULONG, ULONG*);
+ STDMETHOD(Write)(const void*, ULONG cb, ULONG*);
+ STDMETHOD(Seek)(LARGE_INTEGER, DWORD, ULARGE_INTEGER*);
+ STDMETHOD(SetSize)(ULARGE_INTEGER);
+ STDMETHOD(CopyTo)(LPSTREAM, ULARGE_INTEGER, ULARGE_INTEGER*,
+ ULARGE_INTEGER*);
+ STDMETHOD(Commit)(DWORD);
+ STDMETHOD(Revert)();
+ STDMETHOD(LockRegion)(ULARGE_INTEGER, ULARGE_INTEGER,DWORD);
+ STDMETHOD(UnlockRegion)(ULARGE_INTEGER, ULARGE_INTEGER, DWORD);
+ STDMETHOD(Stat)(STATSTG*, DWORD);
+ STDMETHOD(Clone)(LPSTREAM*);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global UNICODE<>ANSI translation helpers
+
+void AFXAPI AfxBSTR2CString(CString* pStr, BSTR bstr);
+
+#if !defined(_UNICODE) && !defined(OLE2ANSI)
+BSTR AFXAPI AfxBSTR2ABSTR(BSTR bstrW);
+LPWSTR AFXAPI AfxTaskStringA2W(LPCSTR lpa);
+LPSTR AFXAPI AfxTaskStringW2A(LPCWSTR lpw);
+#endif
+
+#endif // __AFXPRIV2_H__DISP__
+#endif // __AFXDISP_H__
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#if (defined __AFXPRIV2_H__OLE__) && (defined __AFXPRIV2_H__DISP__)
+#define __AFXPRIV2_H__
+#endif
+
+#endif // __AFXPRIV2_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxres.h b/public/sdk/inc/mfc42/afxres.h
new file mode 100644
index 000000000..bd26ee934
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxres.h
@@ -0,0 +1,772 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_H__
+#define __AFXRES_H__
+
+#ifdef REZ // Mac resource compiler (mrc) defines REZ
+#define RC_INVOKED
+#endif
+
+#ifdef RC_INVOKED
+#ifndef _INC_WINDOWS
+#define _INC_WINDOWS
+ #include "winres.h" // extract from windows header
+#endif
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+
+#ifdef APSTUDIO_INVOKED
+#define APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// MFC resource types (see Technical note TN024 for implementation details)
+
+#ifndef RC_INVOKED
+#define RT_DLGINIT MAKEINTRESOURCE(240)
+#define RT_TOOLBAR MAKEINTRESOURCE(241)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef APSTUDIO_INVOKED
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// General style bits etc
+
+// Tab Control styles
+#ifndef TCS_MULTILINE // new in later versions of Win32
+#define TCS_MULTILINE 0x0200
+#endif
+
+// ControlBar styles
+#define CBRS_ALIGN_LEFT 0x1000L
+#define CBRS_ALIGN_TOP 0x2000L
+#define CBRS_ALIGN_RIGHT 0x4000L
+#define CBRS_ALIGN_BOTTOM 0x8000L
+#define CBRS_ALIGN_ANY 0xF000L
+
+#define CBRS_BORDER_LEFT 0x0100L
+#define CBRS_BORDER_TOP 0x0200L
+#define CBRS_BORDER_RIGHT 0x0400L
+#define CBRS_BORDER_BOTTOM 0x0800L
+#define CBRS_BORDER_ANY 0x0F00L
+
+#define CBRS_TOOLTIPS 0x0010L
+#define CBRS_FLYBY 0x0020L
+#define CBRS_FLOAT_MULTI 0x0040L
+#define CBRS_BORDER_3D 0x0080L
+#define CBRS_HIDE_INPLACE 0x0008L
+#define CBRS_SIZE_DYNAMIC 0x0004L
+#define CBRS_SIZE_FIXED 0x0002L
+#define CBRS_FLOATING 0x0001L
+
+#define CBRS_ORIENT_HORZ (CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM)
+#define CBRS_ORIENT_VERT (CBRS_ALIGN_LEFT|CBRS_ALIGN_RIGHT)
+#define CBRS_ORIENT_ANY (CBRS_ORIENT_HORZ|CBRS_ORIENT_VERT)
+
+#define CBRS_ALL 0xFFFFL
+
+
+// the CBRS_ style is made up of an alignment style and a draw border style
+// the alignment styles are mutually exclusive
+// the draw border styles may be combined
+#define CBRS_NOALIGN 0x00000000L
+#define CBRS_LEFT (CBRS_ALIGN_LEFT|CBRS_BORDER_RIGHT)
+#define CBRS_TOP (CBRS_ALIGN_TOP|CBRS_BORDER_BOTTOM)
+#define CBRS_RIGHT (CBRS_ALIGN_RIGHT|CBRS_BORDER_LEFT)
+#define CBRS_BOTTOM (CBRS_ALIGN_BOTTOM|CBRS_BORDER_TOP)
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard window components
+
+// Mode indicators in status bar - these are routed like commands
+#define ID_INDICATOR_EXT 0xE700 // extended selection indicator
+#define ID_INDICATOR_CAPS 0xE701 // cap lock indicator
+#define ID_INDICATOR_NUM 0xE702 // num lock indicator
+#define ID_INDICATOR_SCRL 0xE703 // scroll lock indicator
+#define ID_INDICATOR_OVR 0xE704 // overtype mode indicator
+#define ID_INDICATOR_REC 0xE705 // record mode indicator
+#define ID_INDICATOR_KANA 0xE706 // kana lock indicator
+
+#define ID_SEPARATOR 0 // special separator value
+
+#ifndef RC_INVOKED // code only
+// Standard control bars (IDW = window ID)
+#define AFX_IDW_CONTROLBAR_FIRST 0xE800
+#define AFX_IDW_CONTROLBAR_LAST 0xE8FF
+
+#define AFX_IDW_TOOLBAR 0xE800 // main Toolbar for window
+#define AFX_IDW_STATUS_BAR 0xE801 // Status bar window
+#define AFX_IDW_PREVIEW_BAR 0xE802 // PrintPreview Dialog Bar
+#define AFX_IDW_RESIZE_BAR 0xE803 // OLE in-place resize bar
+
+// Note: If your application supports docking toolbars, you should
+// not use the following IDs for your own toolbars. The IDs chosen
+// are at the top of the first 32 such that the bars will be hidden
+// while in print preview mode, and are not likely to conflict with
+// IDs your application may have used succesfully in the past.
+
+#define AFX_IDW_DOCKBAR_TOP 0xE81B
+#define AFX_IDW_DOCKBAR_LEFT 0xE81C
+#define AFX_IDW_DOCKBAR_RIGHT 0xE81D
+#define AFX_IDW_DOCKBAR_BOTTOM 0xE81E
+#define AFX_IDW_DOCKBAR_FLOAT 0xE81F
+
+// Macro for mapping standard control bars to bitmask (limit of 32)
+#define AFX_CONTROLBAR_MASK(nIDC) (1L << (nIDC - AFX_IDW_CONTROLBAR_FIRST))
+
+// parts of Main Frame
+#define AFX_IDW_PANE_FIRST 0xE900 // first pane (256 max)
+#define AFX_IDW_PANE_LAST 0xE9ff
+#define AFX_IDW_HSCROLL_FIRST 0xEA00 // first Horz scrollbar (16 max)
+#define AFX_IDW_VSCROLL_FIRST 0xEA10 // first Vert scrollbar (16 max)
+
+#define AFX_IDW_SIZE_BOX 0xEA20 // size box for splitters
+#define AFX_IDW_PANE_SAVE 0xEA21 // to shift AFX_IDW_PANE_FIRST
+#endif //!RC_INVOKED
+
+#ifndef APSTUDIO_INVOKED
+
+// common style for form views
+#define AFX_WS_DEFAULT_VIEW (WS_CHILD | WS_VISIBLE | WS_BORDER)
+
+#endif //!APSTUDIO_INVOKED
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard app configurable strings
+
+// for application title (defaults to EXE name or name in constructor)
+#define AFX_IDS_APP_TITLE 0xE000
+// idle message bar line
+#define AFX_IDS_IDLEMESSAGE 0xE001
+// message bar line when in shift-F1 help mode
+#define AFX_IDS_HELPMODEMESSAGE 0xE002
+// document title when editing OLE embedding
+#define AFX_IDS_APP_TITLE_EMBEDDING 0xE003
+// company name
+#define AFX_IDS_COMPANY_NAME 0xE004
+// object name when server is inplace
+#define AFX_IDS_OBJ_TITLE_INPLACE 0xE005
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Commands
+
+// File commands
+#define ID_FILE_NEW 0xE100
+#define ID_FILE_OPEN 0xE101
+#define ID_FILE_CLOSE 0xE102
+#define ID_FILE_SAVE 0xE103
+#define ID_FILE_SAVE_AS 0xE104
+#define ID_FILE_PAGE_SETUP 0xE105
+#define ID_FILE_PRINT_SETUP 0xE106
+#define ID_FILE_PRINT 0xE107
+#define ID_FILE_PRINT_DIRECT 0xE108
+#define ID_FILE_PRINT_PREVIEW 0xE109
+#define ID_FILE_UPDATE 0xE10A
+#define ID_FILE_SAVE_COPY_AS 0xE10B
+#define ID_FILE_SEND_MAIL 0xE10C
+
+#define ID_FILE_MRU_FIRST 0xE110
+#define ID_FILE_MRU_FILE1 0xE110 // range - 16 max
+#define ID_FILE_MRU_FILE2 0xE111
+#define ID_FILE_MRU_FILE3 0xE112
+#define ID_FILE_MRU_FILE4 0xE113
+#define ID_FILE_MRU_FILE5 0xE114
+#define ID_FILE_MRU_FILE6 0xE115
+#define ID_FILE_MRU_FILE7 0xE116
+#define ID_FILE_MRU_FILE8 0xE117
+#define ID_FILE_MRU_FILE9 0xE118
+#define ID_FILE_MRU_FILE10 0xE119
+#define ID_FILE_MRU_FILE11 0xE11A
+#define ID_FILE_MRU_FILE12 0xE11B
+#define ID_FILE_MRU_FILE13 0xE11C
+#define ID_FILE_MRU_FILE14 0xE11D
+#define ID_FILE_MRU_FILE15 0xE11E
+#define ID_FILE_MRU_FILE16 0xE11F
+#define ID_FILE_MRU_LAST 0xE11F
+
+// Edit commands
+#define ID_EDIT_CLEAR 0xE120
+#define ID_EDIT_CLEAR_ALL 0xE121
+#define ID_EDIT_COPY 0xE122
+#define ID_EDIT_CUT 0xE123
+#define ID_EDIT_FIND 0xE124
+#define ID_EDIT_PASTE 0xE125
+#define ID_EDIT_PASTE_LINK 0xE126
+#define ID_EDIT_PASTE_SPECIAL 0xE127
+#define ID_EDIT_REPEAT 0xE128
+#define ID_EDIT_REPLACE 0xE129
+#define ID_EDIT_SELECT_ALL 0xE12A
+#define ID_EDIT_UNDO 0xE12B
+#define ID_EDIT_REDO 0xE12C
+
+// Window commands
+#define ID_WINDOW_NEW 0xE130
+#define ID_WINDOW_ARRANGE 0xE131
+#define ID_WINDOW_CASCADE 0xE132
+#define ID_WINDOW_TILE_HORZ 0xE133
+#define ID_WINDOW_TILE_VERT 0xE134
+#define ID_WINDOW_SPLIT 0xE135
+#ifndef RC_INVOKED // code only
+#define AFX_IDM_WINDOW_FIRST 0xE130
+#define AFX_IDM_WINDOW_LAST 0xE13F
+#define AFX_IDM_FIRST_MDICHILD 0xFF00 // window list starts here
+#endif //!RC_INVOKED
+
+// Help and App commands
+#define ID_APP_ABOUT 0xE140
+#define ID_APP_EXIT 0xE141
+#define ID_HELP_INDEX 0xE142
+#define ID_HELP_FINDER 0xE143
+#define ID_HELP_USING 0xE144
+#define ID_CONTEXT_HELP 0xE145 // shift-F1
+// special commands for processing help
+#define ID_HELP 0xE146 // first attempt for F1
+#define ID_DEFAULT_HELP 0xE147 // last attempt
+
+// Misc
+#define ID_NEXT_PANE 0xE150
+#define ID_PREV_PANE 0xE151
+
+// Format
+#define ID_FORMAT_FONT 0xE160
+
+// OLE commands
+#define ID_OLE_INSERT_NEW 0xE200
+#define ID_OLE_EDIT_LINKS 0xE201
+#define ID_OLE_EDIT_CONVERT 0xE202
+#define ID_OLE_EDIT_CHANGE_ICON 0xE203
+#define ID_OLE_EDIT_PROPERTIES 0xE204
+#define ID_OLE_VERB_FIRST 0xE210 // range - 16 max
+#ifndef RC_INVOKED // code only
+#define ID_OLE_VERB_LAST 0xE21F
+#endif //!RC_INVOKED
+
+// for print preview dialog bar
+#define AFX_ID_PREVIEW_CLOSE 0xE300
+#define AFX_ID_PREVIEW_NUMPAGE 0xE301 // One/Two Page button
+#define AFX_ID_PREVIEW_NEXT 0xE302
+#define AFX_ID_PREVIEW_PREV 0xE303
+#define AFX_ID_PREVIEW_PRINT 0xE304
+#define AFX_ID_PREVIEW_ZOOMIN 0xE305
+#define AFX_ID_PREVIEW_ZOOMOUT 0xE306
+
+// View commands (same number used as IDW used for control bar)
+#define ID_VIEW_TOOLBAR 0xE800
+#define ID_VIEW_STATUS_BAR 0xE801
+ // -> E8FF reserved for other control bar commands
+
+// RecordForm commands
+#define ID_RECORD_FIRST 0xE900
+#define ID_RECORD_LAST 0xE901
+#define ID_RECORD_NEXT 0xE902
+#define ID_RECORD_PREV 0xE903
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard control IDs
+
+#ifdef IDC_STATIC
+#undef IDC_STATIC
+#endif
+#define IDC_STATIC (-1) // all static controls
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard string error/warnings
+
+#ifndef RC_INVOKED // code only
+#define AFX_IDS_SCFIRST 0xEF00
+#endif //!RC_INVOKED
+
+#define AFX_IDS_SCSIZE 0xEF00
+#define AFX_IDS_SCMOVE 0xEF01
+#define AFX_IDS_SCMINIMIZE 0xEF02
+#define AFX_IDS_SCMAXIMIZE 0xEF03
+#define AFX_IDS_SCNEXTWINDOW 0xEF04
+#define AFX_IDS_SCPREVWINDOW 0xEF05
+#define AFX_IDS_SCCLOSE 0xEF06
+#define AFX_IDS_SCRESTORE 0xEF12
+#define AFX_IDS_SCTASKLIST 0xEF13
+
+#define AFX_IDS_MDICHILD 0xEF1F
+
+#define AFX_IDS_DESKACCESSORY 0xEFDA
+
+// General strings
+#define AFX_IDS_OPENFILE 0xF000
+#define AFX_IDS_SAVEFILE 0xF001
+#define AFX_IDS_ALLFILTER 0xF002
+#define AFX_IDS_UNTITLED 0xF003
+#define AFX_IDS_SAVEFILECOPY 0xF004
+#define AFX_IDS_PREVIEW_CLOSE 0xF005
+#define AFX_IDS_UNNAMED_FILE 0xF006
+#ifdef _MAC
+#define AFX_IDS_ABOUT 0xF010
+#endif
+#define AFX_IDS_HIDE 0xF011
+
+// MFC Standard Exception Error messages
+#define AFX_IDP_NO_ERROR_AVAILABLE 0xF020
+#define AFX_IDS_NOT_SUPPORTED_EXCEPTION 0xF021
+#define AFX_IDS_RESOURCE_EXCEPTION 0xF022
+#define AFX_IDS_MEMORY_EXCEPTION 0xF023
+#define AFX_IDS_USER_EXCEPTION 0xF024
+
+// Printing and print preview strings
+#define AFX_IDS_PRINTONPORT 0xF040
+#define AFX_IDS_ONEPAGE 0xF041
+#define AFX_IDS_TWOPAGE 0xF042
+#define AFX_IDS_PRINTPAGENUM 0xF043
+#define AFX_IDS_PREVIEWPAGEDESC 0xF044
+#define AFX_IDS_PRINTDEFAULTEXT 0xF045
+#define AFX_IDS_PRINTDEFAULT 0xF046
+#define AFX_IDS_PRINTFILTER 0xF047
+#define AFX_IDS_PRINTCAPTION 0xF048
+#define AFX_IDS_PRINTTOFILE 0xF049
+
+
+// OLE strings
+#define AFX_IDS_OBJECT_MENUITEM 0xF080
+#define AFX_IDS_EDIT_VERB 0xF081
+#define AFX_IDS_ACTIVATE_VERB 0xF082
+#define AFX_IDS_CHANGE_LINK 0xF083
+#define AFX_IDS_AUTO 0xF084
+#define AFX_IDS_MANUAL 0xF085
+#define AFX_IDS_FROZEN 0xF086
+#define AFX_IDS_ALL_FILES 0xF087
+// dynamically changing menu items
+#define AFX_IDS_SAVE_MENU 0xF088
+#define AFX_IDS_UPDATE_MENU 0xF089
+#define AFX_IDS_SAVE_AS_MENU 0xF08A
+#define AFX_IDS_SAVE_COPY_AS_MENU 0xF08B
+#define AFX_IDS_EXIT_MENU 0xF08C
+#define AFX_IDS_UPDATING_ITEMS 0xF08D
+// COlePasteSpecialDialog defines
+#define AFX_IDS_METAFILE_FORMAT 0xF08E
+#define AFX_IDS_DIB_FORMAT 0xF08F
+#define AFX_IDS_BITMAP_FORMAT 0xF090
+#define AFX_IDS_LINKSOURCE_FORMAT 0xF091
+#define AFX_IDS_EMBED_FORMAT 0xF092
+// other OLE utility strings
+#define AFX_IDS_PASTELINKEDTYPE 0xF094
+#define AFX_IDS_UNKNOWNTYPE 0xF095
+#define AFX_IDS_RTF_FORMAT 0xF096
+#define AFX_IDS_TEXT_FORMAT 0xF097
+// OLE datatype format error strings
+#define AFX_IDS_INVALID_CURRENCY 0xF098
+#define AFX_IDS_INVALID_DATETIME 0xF099
+#define AFX_IDS_INVALID_DATETIMESPAN 0xF09A
+
+// General error / prompt strings
+#define AFX_IDP_INVALID_FILENAME 0xF100
+#define AFX_IDP_FAILED_TO_OPEN_DOC 0xF101
+#define AFX_IDP_FAILED_TO_SAVE_DOC 0xF102
+#define AFX_IDP_ASK_TO_SAVE 0xF103
+#define AFX_IDP_FAILED_TO_CREATE_DOC 0xF104
+#define AFX_IDP_FILE_TOO_LARGE 0xF105
+#define AFX_IDP_FAILED_TO_START_PRINT 0xF106
+#define AFX_IDP_FAILED_TO_LAUNCH_HELP 0xF107
+#define AFX_IDP_INTERNAL_FAILURE 0xF108 // general failure
+#define AFX_IDP_COMMAND_FAILURE 0xF109 // command failure
+#define AFX_IDP_FAILED_MEMORY_ALLOC 0xF10A
+#define AFX_IDP_UNREG_DONE 0xF10B
+#define AFX_IDP_UNREG_FAILURE 0xF10C
+
+// DDV parse errors
+#define AFX_IDP_PARSE_INT 0xF110
+#define AFX_IDP_PARSE_REAL 0xF111
+#define AFX_IDP_PARSE_INT_RANGE 0xF112
+#define AFX_IDP_PARSE_REAL_RANGE 0xF113
+#define AFX_IDP_PARSE_STRING_SIZE 0xF114
+#define AFX_IDP_PARSE_RADIO_BUTTON 0xF115
+#define AFX_IDP_PARSE_BYTE 0xF116
+#define AFX_IDP_PARSE_UINT 0xF117
+#define AFX_IDP_PARSE_DATETIME 0xF118
+#define AFX_IDP_PARSE_CURRENCY 0xF119
+
+// CFile/CArchive error strings for user failure
+#define AFX_IDP_FAILED_INVALID_FORMAT 0xF120
+#define AFX_IDP_FAILED_INVALID_PATH 0xF121
+#define AFX_IDP_FAILED_DISK_FULL 0xF122
+#define AFX_IDP_FAILED_ACCESS_READ 0xF123
+#define AFX_IDP_FAILED_ACCESS_WRITE 0xF124
+#define AFX_IDP_FAILED_IO_ERROR_READ 0xF125
+#define AFX_IDP_FAILED_IO_ERROR_WRITE 0xF126
+
+// OLE errors / prompt strings
+#define AFX_IDP_STATIC_OBJECT 0xF180
+#define AFX_IDP_FAILED_TO_CONNECT 0xF181
+#define AFX_IDP_SERVER_BUSY 0xF182
+#define AFX_IDP_BAD_VERB 0xF183
+#define AFX_IDP_FAILED_TO_NOTIFY 0xF185
+#define AFX_IDP_FAILED_TO_LAUNCH 0xF186
+#define AFX_IDP_ASK_TO_UPDATE 0xF187
+#define AFX_IDP_FAILED_TO_UPDATE 0xF188
+#define AFX_IDP_FAILED_TO_REGISTER 0xF189
+#define AFX_IDP_FAILED_TO_AUTO_REGISTER 0xF18A
+#define AFX_IDP_FAILED_TO_CONVERT 0xF18B
+#define AFX_IDP_GET_NOT_SUPPORTED 0xF18C
+#define AFX_IDP_SET_NOT_SUPPORTED 0xF18D
+#define AFX_IDP_ASK_TO_DISCARD 0xF18E
+#define AFX_IDP_FAILED_TO_CREATE 0xF18F
+
+// MAPI errors / prompt strings
+#define AFX_IDP_FAILED_MAPI_LOAD 0xF190
+#define AFX_IDP_INVALID_MAPI_DLL 0xF191
+#define AFX_IDP_FAILED_MAPI_SEND 0xF192
+
+#define AFX_IDP_FILE_NONE 0xF1A0
+#define AFX_IDP_FILE_GENERIC 0xF1A1
+#define AFX_IDP_FILE_NOT_FOUND 0xF1A2
+#define AFX_IDP_FILE_BAD_PATH 0xF1A3
+#define AFX_IDP_FILE_TOO_MANY_OPEN 0xF1A4
+#define AFX_IDP_FILE_ACCESS_DENIED 0xF1A5
+#define AFX_IDP_FILE_INVALID_FILE 0xF1A6
+#define AFX_IDP_FILE_REMOVE_CURRENT 0xF1A7
+#define AFX_IDP_FILE_DIR_FULL 0xF1A8
+#define AFX_IDP_FILE_BAD_SEEK 0xF1A9
+#define AFX_IDP_FILE_HARD_IO 0xF1AA
+#define AFX_IDP_FILE_SHARING 0xF1AB
+#define AFX_IDP_FILE_LOCKING 0xF1AC
+#define AFX_IDP_FILE_DISKFULL 0xF1AD
+#define AFX_IDP_FILE_EOF 0xF1AE
+
+#define AFX_IDP_ARCH_NONE 0xF1B0
+#define AFX_IDP_ARCH_GENERIC 0xF1B1
+#define AFX_IDP_ARCH_READONLY 0xF1B2
+#define AFX_IDP_ARCH_ENDOFFILE 0xF1B3
+#define AFX_IDP_ARCH_WRITEONLY 0xF1B4
+#define AFX_IDP_ARCH_BADINDEX 0xF1B5
+#define AFX_IDP_ARCH_BADCLASS 0xF1B6
+#define AFX_IDP_ARCH_BADSCHEMA 0xF1B7
+
+#define AFX_IDS_OCC_SCALEUNITS_PIXELS 0xF1C0
+
+// 0xf200-0xf20f reserved
+
+// font names and point sizes
+#define AFX_IDS_STATUS_FONT 0xF230
+#define AFX_IDS_TOOLTIP_FONT 0xF231
+#define AFX_IDS_UNICODE_FONT 0xF232
+#define AFX_IDS_MINI_FONT 0xF233
+
+// ODBC Database errors / prompt strings
+#ifndef RC_INVOKED // code only
+#define AFX_IDP_SQL_FIRST 0xF280
+#endif //!RC_INVOKED
+#define AFX_IDP_SQL_CONNECT_FAIL 0xF281
+#define AFX_IDP_SQL_RECORDSET_FORWARD_ONLY 0xF282
+#define AFX_IDP_SQL_EMPTY_COLUMN_LIST 0xF283
+#define AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH 0xF284
+#define AFX_IDP_SQL_ILLEGAL_MODE 0xF285
+#define AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED 0xF286
+#define AFX_IDP_SQL_NO_CURRENT_RECORD 0xF287
+#define AFX_IDP_SQL_NO_ROWS_AFFECTED 0xF288
+#define AFX_IDP_SQL_RECORDSET_READONLY 0xF289
+#define AFX_IDP_SQL_SQL_NO_TOTAL 0xF28A
+#define AFX_IDP_SQL_ODBC_LOAD_FAILED 0xF28B
+#define AFX_IDP_SQL_DYNASET_NOT_SUPPORTED 0xF28C
+#define AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED 0xF28D
+#define AFX_IDP_SQL_API_CONFORMANCE 0xF28E
+#define AFX_IDP_SQL_SQL_CONFORMANCE 0xF28F
+#define AFX_IDP_SQL_NO_DATA_FOUND 0xF290
+#define AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED 0xF291
+#define AFX_IDP_SQL_ODBC_V2_REQUIRED 0xF292
+#define AFX_IDP_SQL_NO_POSITIONED_UPDATES 0xF293
+#define AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED 0xF294
+#define AFX_IDP_SQL_DATA_TRUNCATED 0xF295
+#define AFX_IDP_SQL_ROW_FETCH 0xF296
+#define AFX_IDP_SQL_INCORRECT_ODBC 0xF297
+#define AFX_IDP_SQL_UPDATE_DELETE_FAILED 0xF298
+#define AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED 0xF299
+#define AFX_IDP_SQL_FIELD_NOT_FOUND 0xF29A
+#define AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED 0xF29B
+#define AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED 0xF29C
+
+// DAO Database errors / prompt strings
+#ifndef RC_INVOKED // code only
+#define AFX_IDP_DAO_FIRST 0xF2B0
+#endif //!RC_INVOKED
+#define AFX_IDP_DAO_ENGINE_INITIALIZATION 0xF2B0
+#define AFX_IDP_DAO_DFX_BIND 0xF2B1
+#define AFX_IDP_DAO_OBJECT_NOT_OPEN 0xF2B2
+
+// ICDAORecordset::GetRows Errors
+// These are not placed in DAO Errors collection
+// and must be handled directly by MFC.
+#define AFX_IDP_DAO_ROWTOOSHORT 0xF2B3
+#define AFX_IDP_DAO_BADBINDINFO 0xF2B4
+#define AFX_IDP_DAO_COLUMNUNAVAILABLE 0xF2B5
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings for ISAPI support
+
+#define AFX_IDS_HTTP_TITLE 0xF2D1
+#define AFX_IDS_HTTP_NO_TEXT 0xF2D2
+#define AFX_IDS_HTTP_BAD_REQUEST 0xF2D3
+#define AFX_IDS_HTTP_AUTH_REQUIRED 0xF2D4
+#define AFX_IDS_HTTP_FORBIDDEN 0xF2D5
+#define AFX_IDS_HTTP_NOT_FOUND 0xF2D6
+#define AFX_IDS_HTTP_SERVER_ERROR 0xF2D7
+#define AFX_IDS_HTTP_NOT_IMPLEMENTED 0xF2D8
+
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX implementation - control IDs (AFX_IDC)
+
+// Parts of dialogs
+#define AFX_IDC_LISTBOX 100
+#define AFX_IDC_CHANGE 101
+
+// for print dialog
+#define AFX_IDC_PRINT_DOCNAME 201
+#define AFX_IDC_PRINT_PRINTERNAME 202
+#define AFX_IDC_PRINT_PORTNAME 203
+#define AFX_IDC_PRINT_PAGENUM 204
+
+// Property Sheet control id's (determined with Spy++)
+#define ID_APPLY_NOW 0x3021
+#define ID_WIZBACK 0x3023
+#define ID_WIZNEXT 0x3024
+#define ID_WIZFINISH 0x3025
+#define AFX_IDC_TAB_CONTROL 0x3020
+
+/////////////////////////////////////////////////////////////////////////////
+// IDRs for standard components
+
+#ifndef RC_INVOKED // code only
+// These are really COMMDLG dialogs, so there usually isn't a resource
+// for them, but these IDs are used as help IDs.
+#define AFX_IDD_FILEOPEN 28676
+#define AFX_IDD_FILESAVE 28677
+#define AFX_IDD_FONT 28678
+#define AFX_IDD_COLOR 28679
+#define AFX_IDD_PRINT 28680
+#define AFX_IDD_PRINTSETUP 28681
+#define AFX_IDD_FIND 28682
+#define AFX_IDD_REPLACE 28683
+#endif //!RC_INVOKED
+
+// Standard dialogs app should leave alone (0x7801->)
+#define AFX_IDD_NEWTYPEDLG 30721
+#define AFX_IDD_PRINTDLG 30722
+#define AFX_IDD_PREVIEW_TOOLBAR 30723
+#ifdef _MAC
+#define AFX_IDD_PREVIEW_SHORTTOOLBAR 30731
+#endif
+
+// Dialogs defined for OLE2UI library
+#define AFX_IDD_INSERTOBJECT 30724
+#define AFX_IDD_CHANGEICON 30725
+#define AFX_IDD_CONVERT 30726
+#define AFX_IDD_PASTESPECIAL 30727
+#define AFX_IDD_EDITLINKS 30728
+#define AFX_IDD_FILEBROWSE 30729
+#define AFX_IDD_BUSY 30730
+
+#define AFX_IDD_OBJECTPROPERTIES 30732
+#define AFX_IDD_CHANGESOURCE 30733
+
+// Standard cursors (0x7901->)
+ // AFX_IDC = Cursor resources
+#define AFX_IDC_CONTEXTHELP 30977 // context sensitive help
+#define AFX_IDC_MAGNIFY 30978 // print preview zoom
+#define AFX_IDC_SMALLARROWS 30979 // splitter
+#define AFX_IDC_HSPLITBAR 30980 // splitter
+#define AFX_IDC_VSPLITBAR 30981 // splitter
+#define AFX_IDC_NODROPCRSR 30982 // No Drop Cursor
+#define AFX_IDC_TRACKNWSE 30983 // tracker
+#define AFX_IDC_TRACKNESW 30984 // tracker
+#define AFX_IDC_TRACKNS 30985 // tracker
+#define AFX_IDC_TRACKWE 30986 // tracker
+#define AFX_IDC_TRACK4WAY 30987 // tracker
+#define AFX_IDC_MOVE4WAY 30988 // resize bar (server only)
+
+// Mini frame window bitmap ID
+#define AFX_IDB_MINIFRAME_MENU 30994
+
+// CheckListBox checks bitmap ID
+#define AFX_IDB_CHECKLISTBOX_NT 30995
+#define AFX_IDB_CHECKLISTBOX_95 30996
+
+// AFX standard accelerator resources
+#define AFX_IDR_PREVIEW_ACCEL 30997
+
+// AFX standard ICON IDs (for MFC V1 apps) (0x7A01->)
+#define AFX_IDI_STD_MDIFRAME 31233
+#define AFX_IDI_STD_FRAME 31234
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX OLE control implementation - control IDs (AFX_IDC)
+
+// Font property page
+#define AFX_IDC_FONTPROP 1000
+#define AFX_IDC_FONTNAMES 1001
+#define AFX_IDC_FONTSTYLES 1002
+#define AFX_IDC_FONTSIZES 1003
+#define AFX_IDC_STRIKEOUT 1004
+#define AFX_IDC_UNDERLINE 1005
+#define AFX_IDC_SAMPLEBOX 1006
+
+// Color property page
+#define AFX_IDC_COLOR_BLACK 1100
+#define AFX_IDC_COLOR_WHITE 1101
+#define AFX_IDC_COLOR_RED 1102
+#define AFX_IDC_COLOR_GREEN 1103
+#define AFX_IDC_COLOR_BLUE 1104
+#define AFX_IDC_COLOR_YELLOW 1105
+#define AFX_IDC_COLOR_MAGENTA 1106
+#define AFX_IDC_COLOR_CYAN 1107
+#define AFX_IDC_COLOR_GRAY 1108
+#define AFX_IDC_COLOR_LIGHTGRAY 1109
+#define AFX_IDC_COLOR_DARKRED 1110
+#define AFX_IDC_COLOR_DARKGREEN 1111
+#define AFX_IDC_COLOR_DARKBLUE 1112
+#define AFX_IDC_COLOR_LIGHTBROWN 1113
+#define AFX_IDC_COLOR_DARKMAGENTA 1114
+#define AFX_IDC_COLOR_DARKCYAN 1115
+#define AFX_IDC_COLORPROP 1116
+#define AFX_IDC_SYSTEMCOLORS 1117
+
+// Picture porperty page
+#define AFX_IDC_PROPNAME 1201
+#define AFX_IDC_PICTURE 1202
+#define AFX_IDC_BROWSE 1203
+#define AFX_IDC_CLEAR 1204
+
+/////////////////////////////////////////////////////////////////////////////
+// IDRs for OLE control standard components
+
+// Standard propery page dialogs app should leave alone (0x7E01->)
+#define AFX_IDD_PROPPAGE_COLOR 32257
+#define AFX_IDD_PROPPAGE_FONT 32258
+#define AFX_IDD_PROPPAGE_PICTURE 32259
+
+#define AFX_IDB_TRUETYPE 32384
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard OLE control strings
+
+// OLE Control page strings
+#define AFX_IDS_PROPPAGE_UNKNOWN 0xFE01
+#define AFX_IDS_COLOR_DESKTOP 0xFE04
+#define AFX_IDS_COLOR_APPWORKSPACE 0xFE05
+#define AFX_IDS_COLOR_WNDBACKGND 0xFE06
+#define AFX_IDS_COLOR_WNDTEXT 0xFE07
+#define AFX_IDS_COLOR_MENUBAR 0xFE08
+#define AFX_IDS_COLOR_MENUTEXT 0xFE09
+#define AFX_IDS_COLOR_ACTIVEBAR 0xFE0A
+#define AFX_IDS_COLOR_INACTIVEBAR 0xFE0B
+#define AFX_IDS_COLOR_ACTIVETEXT 0xFE0C
+#define AFX_IDS_COLOR_INACTIVETEXT 0xFE0D
+#define AFX_IDS_COLOR_ACTIVEBORDER 0xFE0E
+#define AFX_IDS_COLOR_INACTIVEBORDER 0xFE0F
+#define AFX_IDS_COLOR_WNDFRAME 0xFE10
+#define AFX_IDS_COLOR_SCROLLBARS 0xFE11
+#define AFX_IDS_COLOR_BTNFACE 0xFE12
+#define AFX_IDS_COLOR_BTNSHADOW 0xFE13
+#define AFX_IDS_COLOR_BTNTEXT 0xFE14
+#define AFX_IDS_COLOR_BTNHIGHLIGHT 0xFE15
+#define AFX_IDS_COLOR_DISABLEDTEXT 0xFE16
+#define AFX_IDS_COLOR_HIGHLIGHT 0xFE17
+#define AFX_IDS_COLOR_HIGHLIGHTTEXT 0xFE18
+#define AFX_IDS_REGULAR 0xFE19
+#define AFX_IDS_BOLD 0xFE1A
+#define AFX_IDS_ITALIC 0xFE1B
+#define AFX_IDS_BOLDITALIC 0xFE1C
+#define AFX_IDS_SAMPLETEXT 0xFE1D
+#define AFX_IDS_DISPLAYSTRING_FONT 0xFE1E
+#define AFX_IDS_DISPLAYSTRING_COLOR 0xFE1F
+#define AFX_IDS_DISPLAYSTRING_PICTURE 0xFE20
+#define AFX_IDS_PICTUREFILTER 0xFE21
+#define AFX_IDS_PICTYPE_UNKNOWN 0xFE22
+#define AFX_IDS_PICTYPE_NONE 0xFE23
+#define AFX_IDS_PICTYPE_BITMAP 0xFE24
+#define AFX_IDS_PICTYPE_METAFILE 0xFE25
+#define AFX_IDS_PICTYPE_ICON 0xFE26
+#define AFX_IDS_COLOR_PPG 0xFE28
+#define AFX_IDS_COLOR_PPG_CAPTION 0xFE29
+#define AFX_IDS_FONT_PPG 0xFE2A
+#define AFX_IDS_FONT_PPG_CAPTION 0xFE2B
+#define AFX_IDS_PICTURE_PPG 0xFE2C
+#define AFX_IDS_PICTURE_PPG_CAPTION 0xFE2D
+#define AFX_IDS_PICTUREBROWSETITLE 0xFE30
+#define AFX_IDS_BORDERSTYLE_0 0xFE31
+#define AFX_IDS_BORDERSTYLE_1 0xFE32
+
+// OLE Control verb names
+#define AFX_IDS_VERB_EDIT 0xFE40
+#define AFX_IDS_VERB_PROPERTIES 0xFE41
+
+// OLE Control internal error messages
+#define AFX_IDP_PICTURECANTOPEN 0xFE83
+#define AFX_IDP_PICTURECANTLOAD 0xFE84
+#define AFX_IDP_PICTURETOOLARGE 0xFE85
+#define AFX_IDP_PICTUREREADFAILED 0xFE86
+
+// Standard OLE Control error strings
+#define AFX_IDP_E_ILLEGALFUNCTIONCALL 0xFEA0
+#define AFX_IDP_E_OVERFLOW 0xFEA1
+#define AFX_IDP_E_OUTOFMEMORY 0xFEA2
+#define AFX_IDP_E_DIVISIONBYZERO 0xFEA3
+#define AFX_IDP_E_OUTOFSTRINGSPACE 0xFEA4
+#define AFX_IDP_E_OUTOFSTACKSPACE 0xFEA5
+#define AFX_IDP_E_BADFILENAMEORNUMBER 0xFEA6
+#define AFX_IDP_E_FILENOTFOUND 0xFEA7
+#define AFX_IDP_E_BADFILEMODE 0xFEA8
+#define AFX_IDP_E_FILEALREADYOPEN 0xFEA9
+#define AFX_IDP_E_DEVICEIOERROR 0xFEAA
+#define AFX_IDP_E_FILEALREADYEXISTS 0xFEAB
+#define AFX_IDP_E_BADRECORDLENGTH 0xFEAC
+#define AFX_IDP_E_DISKFULL 0xFEAD
+#define AFX_IDP_E_BADRECORDNUMBER 0xFEAE
+#define AFX_IDP_E_BADFILENAME 0xFEAF
+#define AFX_IDP_E_TOOMANYFILES 0xFEB0
+#define AFX_IDP_E_DEVICEUNAVAILABLE 0xFEB1
+#define AFX_IDP_E_PERMISSIONDENIED 0xFEB2
+#define AFX_IDP_E_DISKNOTREADY 0xFEB3
+#define AFX_IDP_E_PATHFILEACCESSERROR 0xFEB4
+#define AFX_IDP_E_PATHNOTFOUND 0xFEB5
+#define AFX_IDP_E_INVALIDPATTERNSTRING 0xFEB6
+#define AFX_IDP_E_INVALIDUSEOFNULL 0xFEB7
+#define AFX_IDP_E_INVALIDFILEFORMAT 0xFEB8
+#define AFX_IDP_E_INVALIDPROPERTYVALUE 0xFEB9
+#define AFX_IDP_E_INVALIDPROPERTYARRAYINDEX 0xFEBA
+#define AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME 0xFEBB
+#define AFX_IDP_E_SETNOTSUPPORTED 0xFEBC
+#define AFX_IDP_E_NEEDPROPERTYARRAYINDEX 0xFEBD
+#define AFX_IDP_E_SETNOTPERMITTED 0xFEBE
+#define AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME 0xFEBF
+#define AFX_IDP_E_GETNOTSUPPORTED 0xFEC0
+#define AFX_IDP_E_PROPERTYNOTFOUND 0xFEC1
+#define AFX_IDP_E_INVALIDCLIPBOARDFORMAT 0xFEC2
+#define AFX_IDP_E_INVALIDPICTURE 0xFEC3
+#define AFX_IDP_E_PRINTERERROR 0xFEC4
+#define AFX_IDP_E_CANTSAVEFILETOTEMP 0xFEC5
+#define AFX_IDP_E_SEARCHTEXTNOTFOUND 0xFEC6
+#define AFX_IDP_E_REPLACEMENTSTOOLONG 0xFEC7
+
+
+
+
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+
+#endif //__AFXRES_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxres.rc b/public/sdk/inc/mfc42/afxres.rc
new file mode 100644
index 000000000..53c6f97d4
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "Open"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Save As"
+ AFX_IDS_ALLFILTER, "All Files (*.*)"
+ AFX_IDS_UNTITLED, "Untitled"
+#else
+ AFX_IDS_SAVEFILE, "Save document as:"
+ AFX_IDS_ALLFILTER, "All Files"
+ AFX_IDS_UNTITLED, "untitled"
+ AFX_IDS_ABOUT, "About %1\205"
+#endif
+ AFX_IDS_HIDE, "&Hide"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "Out of memory."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"An unsupported operation was attempted."
+ AFX_IDS_RESOURCE_EXCEPTION, "A required resource was unavailable."
+ AFX_IDS_USER_EXCEPTION, "An unknown error has occurred."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "Invalid filename."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Failed to open document."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Failed to save document."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Save changes to %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Save changes to the %1 document \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Failed to create empty document."
+ AFX_IDP_FILE_TOO_LARGE, "The file is too large to open."
+ AFX_IDP_FAILED_TO_START_PRINT, "Could not start print job."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Failed to launch help."
+ AFX_IDP_INTERNAL_FAILURE, "Internal application error."
+ AFX_IDP_COMMAND_FAILURE, "Command failed."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Insufficient memory to perform operation."
+ AFX_IDP_GET_NOT_SUPPORTED, "Unable to read write-only property."
+ AFX_IDP_SET_NOT_SUPPORTED, "Unable to write read-only property."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Unexpected file format."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nCannot find this file.\nPlease verify that the correct path and file name are given."
+ AFX_IDP_FAILED_DISK_FULL "Destination disk drive is full."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Cannot find the file \042%1.\042 Please verify that the correct file name is given."
+ AFX_IDP_FAILED_DISK_FULL "Destination disk is full."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Unable to read from %1, it is opened by someone else."
+ AFX_IDP_FAILED_ACCESS_WRITE "Unable to write to %1, it is read-only or opened by someone else."
+ AFX_IDP_FAILED_IO_ERROR_READ "An unexpected error occurred while reading %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "An unexpected error occurred while writing %1."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Please enter an integer."
+ AFX_IDP_PARSE_REAL, "Please enter a number."
+ AFX_IDP_PARSE_INT_RANGE, "Please enter an integer between %1 and %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Please enter a number between %1 and %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Please enter no more than %1 characters."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Please select a button."
+ AFX_IDP_PARSE_BYTE, "Please enter an integer between 0 and 255."
+ AFX_IDP_PARSE_UINT, "Please enter a positive integer."
+ AFX_IDP_PARSE_DATETIME, "Please enter a date and/or time."
+ AFX_IDP_PARSE_CURRENCY, "Please enter a currency."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Linked %s"
+ AFX_IDS_UNKNOWNTYPE "Unknown Type"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nUnable to register document.\nThe document may already be open."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Unable to register document \042%1.\042 The document may already be open."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "No error message is available."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "No error occurred."
+ AFX_IDP_FILE_GENERIC "An unknown error occurred while accessing %1."
+ AFX_IDP_FILE_NOT_FOUND "%1 was not found."
+ AFX_IDP_FILE_BAD_PATH "%1 contains an invalid path."
+ AFX_IDP_FILE_TOO_MANY_OPEN "%1 could not be opened because there are too many open files."
+ AFX_IDP_FILE_ACCESS_DENIED "Access to %1 was denied."
+ AFX_IDP_FILE_INVALID_FILE "An invalid file handle was associated with %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "%1 could not be removed because it is the current directory."
+ AFX_IDP_FILE_DIR_FULL "%1 could not be created because the directory is full."
+ AFX_IDP_FILE_BAD_SEEK "Seek failed on %1"
+ AFX_IDP_FILE_HARD_IO "A hardware I/O error was reported while accessing %1."
+ AFX_IDP_FILE_SHARING "A sharing violation occurred while accessing %1."
+ AFX_IDP_FILE_LOCKING "A locking violation occurred while accessing %1."
+ AFX_IDP_FILE_DISKFULL "Disk full while accessing %1."
+ AFX_IDP_FILE_EOF "An attempt was made to access %1 past its end."
+ AFX_IDS_UNNAMED_FILE "an unnamed file"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "No error occurred."
+ AFX_IDP_ARCH_GENERIC "An unknown error occurred while accessing %1."
+ AFX_IDP_ARCH_READONLY "An attempt was made to write to the reading %1."
+ AFX_IDP_ARCH_ENDOFFILE "An attempt was made to access %1 past its end."
+ AFX_IDP_ARCH_WRITEONLY "An attempt was made to read from the writing %1."
+ AFX_IDP_ARCH_BADINDEX "%1 has a bad format."
+ AFX_IDP_ARCH_BADCLASS "%1 contained an unexpected object."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contains an incorrect schema."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Unable to load mail system support."
+ AFX_IDP_INVALID_MAPI_DLL "Mail system DLL is invalid."
+ AFX_IDP_FAILED_MAPI_SEND "Send Mail failed to send message."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "pixels"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "New"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&New ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Cancel",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Help",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxrich.h b/public/sdk/inc/mfc42/afxrich.h
new file mode 100644
index 000000000..3a4c28445
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxrich.h
@@ -0,0 +1,399 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRICH_H__
+#define __AFXRICH_H__
+
+#ifdef _AFX_NO_RICHEDIT_SUPPORT
+ #error Windows RichEdit classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+#ifndef __AFXDLGS_H__
+ #include <afxdlgs.h>
+#endif
+#ifndef __AFXOLE_H__
+ #include <afxole.h>
+#endif
+#ifndef _RICHEDIT_
+ #include <richedit.h>
+#endif
+#ifndef _RICHOLE_
+ #include <richole.h>
+ #define _RICHOLE_
+#endif
+#ifndef __AFXCMN_H__
+ #include <afxcmn.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXRICH - MFC RichEdit classes
+
+// Classes declared in this file
+
+//CObject
+ //CCmdTarget;
+ //CWnd
+ //CView
+ //CCtrlView
+ class CRichEditView;// rich text editor view
+
+ //CDocument
+ //COleDocument
+ class CRichEditDoc;
+ //CDocItem
+ //COleClientItem
+ class CRichEditCntrItem;
+
+#undef AFX_DATA
+#define AFX_DATA AFX_OLE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditView
+
+class _AFX_RICHEDIT_STATE; // private to implementation
+
+class CRichEditView : public CCtrlView
+{
+ DECLARE_DYNCREATE(CRichEditView)
+
+// Construction
+public:
+ CRichEditView();
+
+// Attributes
+public:
+ enum WordWrapType
+ {
+ WrapNone = 0,
+ WrapToWindow = 1,
+ WrapToTargetDevice = 2
+ };
+ int m_nWordWrap;
+ int m_nBulletIndent;
+
+ void SetPaperSize(CSize sizePaper);
+ CSize GetPaperSize() const;
+ void SetMargins(const CRect& rectMargin);
+ CRect GetMargins() const;
+ int GetPrintWidth() const;
+ CRect GetPrintRect() const;
+ CRect GetPageRect() const;
+
+ //formatting
+ CHARFORMAT& GetCharFormatSelection();
+ PARAFORMAT& GetParaFormatSelection();
+ void SetCharFormat(CHARFORMAT cf);
+ void SetParaFormat(PARAFORMAT& pf);
+ CRichEditCntrItem* GetSelectedItem() const;
+ CRichEditCntrItem* GetInPlaceActiveItem() const;
+
+ // CEdit control access
+ CRichEditCtrl& GetRichEditCtrl() const;
+ CRichEditDoc* GetDocument() const;
+
+ // other attributes
+ long GetTextLength() const;
+ static BOOL AFX_CDECL IsRichEditFormat(CLIPFORMAT cf);
+ BOOL CanPaste() const;
+
+// Operations
+public:
+ void AdjustDialogPosition(CDialog* pDlg);
+ HRESULT InsertItem(CRichEditCntrItem* pItem);
+ void InsertFileAsObject(LPCTSTR lpszFileName);
+ BOOL FindText(LPCTSTR lpszFind, BOOL bCase = TRUE, BOOL bWord = TRUE);
+ BOOL FindTextSimple(LPCTSTR lpszFind, BOOL bCase = TRUE,
+ BOOL bWord = TRUE);
+ long PrintInsideRect(CDC* pDC, RECT& rectLayout, long nIndexStart,
+ long nIndexStop, BOOL bOutput);
+ long PrintPage(CDC* pDC, long nIndexStart, long nIndexStop);
+ void DoPaste(COleDataObject& dataobj, CLIPFORMAT cf,
+ HMETAFILEPICT hMetaPict);
+
+// Helpers
+ void OnCharEffect(DWORD dwMask, DWORD dwEffect);
+ void OnUpdateCharEffect(CCmdUI* pCmdUI, DWORD dwMask, DWORD dwEffect) ;
+ void OnParaAlign(WORD wAlign);
+ void OnUpdateParaAlign(CCmdUI* pCmdUI, WORD wAlign);
+
+// Overrideables
+protected:
+ virtual BOOL IsSelected(const CObject* pDocItem) const;
+ virtual void OnInitialUpdate();
+ virtual void OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase, BOOL bWord);
+ virtual void OnReplaceSel(LPCTSTR lpszFind, BOOL bNext, BOOL bCase,
+ BOOL bWord, LPCTSTR lpszReplace);
+ virtual void OnReplaceAll(LPCTSTR lpszFind, LPCTSTR lpszReplace,
+ BOOL bCase, BOOL bWord);
+ virtual void OnTextNotFound(LPCTSTR lpszFind);
+ virtual void OnPrinterChanged(const CDC& dcPrinter);
+ virtual void WrapChanged();
+
+// Advanced
+ virtual BOOL OnPasteNativeObject(LPSTORAGE lpStg);
+ virtual HMENU GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE* );
+ virtual HRESULT GetClipboardData(CHARRANGE* lpchrg, DWORD dwReco,
+ LPDATAOBJECT lpRichDataObj, LPDATAOBJECT* lplpdataobj);
+ virtual HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD,
+ BOOL, HGLOBAL);
+
+// Implementation
+public:
+ LPRICHEDITOLE m_lpRichEditOle;
+ CDC m_dcTarget;
+ long m_lInitialSearchPos;
+ UINT m_nPasteType;
+ BOOL m_bFirstSearch;
+
+ void TextNotFound(LPCTSTR lpszFind);
+ BOOL FindText(_AFX_RICHEDIT_STATE* pEditState);
+ BOOL FindTextSimple(_AFX_RICHEDIT_STATE* pEditState);
+ long FindAndSelect(DWORD dwFlags, FINDTEXTEX& ft);
+ void Stream(CArchive& ar, BOOL bSelection);
+ HRESULT GetWindowContext(LPOLEINPLACEFRAME* lplpFrame,
+ LPOLEINPLACEUIWINDOW* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+ HRESULT ShowContainerUI(BOOL b);
+ static DWORD CALLBACK EditStreamCallBack(DWORD dwCookie,
+ LPBYTE pbBuff, LONG cb, LONG *pcb);
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual void Serialize(CArchive& ar);
+ virtual void DeleteContents();
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
+
+ static AFX_DATA ULONG lMaxSize; // maximum number of characters supported
+
+protected:
+ CRect m_rectMargin;
+ CSize m_sizePaper;
+ CDWordArray m_aPageStart; // array of starting pages
+ PARAFORMAT m_paraformat;
+ CHARFORMAT m_charformat;
+ BOOL m_bSyncCharFormat;
+ BOOL m_bSyncParaFormat;
+
+ // construction
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ // printing support
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo = NULL);
+ BOOL PaginateTo(CDC* pDC, CPrintInfo* pInfo);
+
+ // find & replace support
+ void OnEditFindReplace(BOOL bFindOnly);
+ BOOL SameAsSelected(LPCTSTR lpszCompare, BOOL bCase, BOOL bWord);
+
+ // special overrides for implementation
+
+ //{{AFX_MSG(CRichEditView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnUpdateNeedSel(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedClip(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedText(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateNeedFind(CCmdUI* pCmdUI);
+ afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
+ afx_msg void OnEditCut();
+ afx_msg void OnEditCopy();
+ afx_msg void OnEditPaste();
+ afx_msg void OnEditClear();
+ afx_msg void OnEditUndo();
+ afx_msg void OnEditSelectAll();
+ afx_msg void OnEditFind();
+ afx_msg void OnEditReplace();
+ afx_msg void OnEditRepeat();
+ afx_msg void OnDestroy();
+ afx_msg void OnEditProperties();
+ afx_msg void OnUpdateEditProperties(CCmdUI* pCmdUI);
+ afx_msg void OnInsertObject();
+ afx_msg void OnCancelEditCntr();
+ afx_msg void OnCharBold();
+ afx_msg void OnUpdateCharBold(CCmdUI* pCmdUI);
+ afx_msg void OnCharItalic();
+ afx_msg void OnUpdateCharItalic(CCmdUI* pCmdUI);
+ afx_msg void OnCharUnderline();
+ afx_msg void OnUpdateCharUnderline(CCmdUI* pCmdUI);
+ afx_msg void OnParaCenter();
+ afx_msg void OnUpdateParaCenter(CCmdUI* pCmdUI);
+ afx_msg void OnParaLeft();
+ afx_msg void OnUpdateParaLeft(CCmdUI* pCmdUI);
+ afx_msg void OnParaRight();
+ afx_msg void OnUpdateParaRight(CCmdUI* pCmdUI);
+ afx_msg void OnBullet();
+ afx_msg void OnUpdateBullet(CCmdUI* pCmdUI);
+ afx_msg void OnFormatFont();
+ afx_msg void OnColorPick(COLORREF cr);
+ afx_msg void OnColorDefault();
+ afx_msg void OnEditPasteSpecial();
+ afx_msg void OnUpdateEditPasteSpecial(CCmdUI* pCmdUI);
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
+ //}}AFX_MSG
+ afx_msg LRESULT OnFindReplaceCmd(WPARAM, LPARAM lParam);
+ afx_msg void OnSelChange(NMHDR* pNMHDR, LRESULT* pResult);
+
+ DECLARE_MESSAGE_MAP()
+
+// Interface Map
+public:
+ BEGIN_INTERFACE_PART(RichEditOleCallback, IRichEditOleCallback)
+ INIT_INTERFACE_PART(CRichEditView, RichEditOleCallback)
+ STDMETHOD(GetNewStorage) (LPSTORAGE*);
+ STDMETHOD(GetInPlaceContext) (LPOLEINPLACEFRAME*,
+ LPOLEINPLACEUIWINDOW*,
+ LPOLEINPLACEFRAMEINFO);
+ STDMETHOD(ShowContainerUI) (BOOL);
+ STDMETHOD(QueryInsertObject) (LPCLSID, LPSTORAGE, LONG);
+ STDMETHOD(DeleteObject) (LPOLEOBJECT);
+ STDMETHOD(QueryAcceptData) (LPDATAOBJECT, CLIPFORMAT*, DWORD,BOOL, HGLOBAL);
+ STDMETHOD(ContextSensitiveHelp) (BOOL);
+ STDMETHOD(GetClipboardData) (CHARRANGE*, DWORD, LPDATAOBJECT*);
+ STDMETHOD(GetDragDropEffect) (BOOL, DWORD, LPDWORD);
+ STDMETHOD(GetContextMenu) (WORD, LPOLEOBJECT, CHARRANGE*, HMENU*);
+ END_INTERFACE_PART(RichEditOleCallback)
+
+ DECLARE_INTERFACE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditDoc
+
+class CRichEditDoc : public COleServerDoc
+{
+protected: // create from serialization only
+ CRichEditDoc();
+ DECLARE_DYNAMIC(CRichEditDoc)
+
+// Attributes
+public:
+ BOOL m_bRTF; // TRUE when formatted, FALSE when plain text
+
+ virtual CRichEditCntrItem* CreateClientItem(REOBJECT* preo = NULL) const = 0;
+
+ virtual CRichEditView* GetView() const;
+ int GetStreamFormat() const;
+
+// Implementation
+protected:
+ virtual COleServerItem* OnGetEmbeddedItem();
+ void MarkItemsClear() const;
+ void DeleteUnmarkedItems() const;
+ void UpdateObjectCache();
+public:
+ BOOL m_bUpdateObjectCache;
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU);
+ virtual void SetTitle(LPCTSTR lpszTitle);
+ virtual COleClientItem* GetPrimarySelectedItem(CView* pView);
+ virtual void DeleteContents();
+ virtual POSITION GetStartPosition() const;
+ virtual void PreCloseFrame(CFrameWnd* pFrameWnd);
+ virtual void UpdateModifiedFlag();
+ virtual BOOL IsModified();
+ virtual void SetModifiedFlag(BOOL bModified = TRUE);
+ virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);
+ CRichEditCntrItem* LookupItem(LPOLEOBJECT lpobj) const;
+ void InvalidateObjectCache();
+ virtual void Serialize(CArchive& ar); // overridden for document i/o
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRichEditCntrItem
+
+class CRichEditCntrItem : public COleClientItem
+{
+ DECLARE_SERIAL(CRichEditCntrItem)
+
+// Constructors
+public:
+ CRichEditCntrItem(REOBJECT* preo = NULL, CRichEditDoc* pContainer = NULL);
+ // Note: pContainer is allowed to be NULL to enable IMPLEMENT_SERIALIZE.
+ // IMPLEMENT_SERIALIZE requires the class have a constructor with
+ // zero arguments. Normally, OLE items are constructed with a
+ // non-NULL document pointer.
+
+// Operations
+ void SyncToRichEditObject(REOBJECT& reo);
+
+// Implementation
+public:
+ ~CRichEditCntrItem();
+ LPOLECLIENTSITE m_lpClientSite;
+ BOOL m_bMark;
+ BOOL m_bLock; // lock it during creation to avoid deletion
+ void Mark(BOOL b);
+ BOOL IsMarked();
+ CRichEditDoc* GetDocument();
+ CRichEditView* GetActiveView();
+ HRESULT ShowContainerUI(BOOL b);
+ HRESULT GetWindowContext(LPOLEINPLACEFRAME* lplpFrame,
+ LPOLEINPLACEUIWINDOW* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
+ virtual LPOLECLIENTSITE GetClientSite();
+ virtual BOOL ConvertTo(REFCLSID clsidNew);
+ virtual BOOL ActivateAs(LPCTSTR lpszUserType, REFCLSID clsidOld,
+ REFCLSID clsidNew);
+ virtual void SetDrawAspect(DVASPECT nDrawAspect);
+ virtual void OnDeactivateUI(BOOL bUndoable);
+ virtual BOOL CanActivate();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ virtual BOOL OnChangeItemPosition(const CRect& rectPos);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXRICH_INLINE inline
+#include <afxrich.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXRICH_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxrich.inl b/public/sdk/inc/mfc42/afxrich.inl
new file mode 100644
index 000000000..6cde683f3
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxrich.inl
@@ -0,0 +1,56 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXRICH.H
+
+#ifdef _AFXRICH_INLINE
+
+// CRichEditView
+_AFXRICH_INLINE CRichEditCtrl& CRichEditView::GetRichEditCtrl() const
+ { return *(CRichEditCtrl*)this; }
+int _AFXRICH_INLINE CRichEditView::GetPrintWidth() const
+ { return m_sizePaper.cx - m_rectMargin.left - m_rectMargin.right;}
+CRect _AFXRICH_INLINE CRichEditView::GetPrintRect() const
+ { return CRect(m_rectMargin.left, m_rectMargin.top, m_sizePaper.cx - m_rectMargin.right, m_sizePaper.cy - m_rectMargin.bottom); }
+CRect _AFXRICH_INLINE CRichEditView::GetPageRect() const
+ { return CRect(CPoint(0,0), m_sizePaper); }
+void _AFXRICH_INLINE CRichEditView::SetPaperSize(CSize sizePaper)
+ { m_sizePaper = sizePaper; }
+CSize _AFXRICH_INLINE CRichEditView::GetPaperSize() const
+ { return m_sizePaper; }
+void _AFXRICH_INLINE CRichEditView::SetMargins(const CRect& rectMargin)
+ { m_rectMargin = rectMargin; }
+CRect _AFXRICH_INLINE CRichEditView::GetMargins() const
+ { return m_rectMargin; }
+
+_AFXRICH_INLINE long CRichEditView::GetTextLength() const
+ { return GetRichEditCtrl().GetTextLength(); }
+_AFXRICH_INLINE CRichEditDoc* CRichEditView::GetDocument() const
+{
+ ASSERT(m_pDocument != NULL);
+ ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRichEditDoc)));
+ return (CRichEditDoc*)m_pDocument;
+}
+_AFXRICH_INLINE int CRichEditDoc::GetStreamFormat() const
+ { return m_bRTF ? SF_RTF : SF_TEXT; }
+_AFXRICH_INLINE void CRichEditDoc::InvalidateObjectCache()
+ { m_bUpdateObjectCache = TRUE; }
+
+_AFXRICH_INLINE void CRichEditCntrItem::Mark(BOOL b)
+ { m_bMark = b; }
+_AFXRICH_INLINE BOOL CRichEditCntrItem::IsMarked()
+ { return m_bMark||m_bLock; }
+_AFXRICH_INLINE CRichEditDoc* CRichEditCntrItem::GetDocument()
+ { return (CRichEditDoc*)COleClientItem::GetDocument(); }
+_AFXRICH_INLINE CRichEditView* CRichEditCntrItem::GetActiveView()
+ { return (CRichEditView*)COleClientItem::GetActiveView(); }
+#endif //_AFXRICH_INLINE
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxsock.h b/public/sdk/inc/mfc42/afxsock.h
new file mode 100644
index 000000000..ced4fb851
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxsock.h
@@ -0,0 +1,365 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXSOCK_H__
+#define __AFXSOCK_H__
+
+#ifdef _AFX_NO_SOCKET_SUPPORT
+ #error Windows Sockets classes not supported in this library variant.
+#endif
+
+#ifndef __AFXWIN_H__
+ #include <afxwin.h>
+#endif
+
+#ifndef _WINSOCKAPI_
+ #include <winsock.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#ifndef _MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Win32 libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC)
+ #ifndef _UNICODE
+ #pragma comment(lib, "mfcn42d.lib")
+ #else
+ #pragma comment(lib, "mfcn42ud.lib")
+ #endif
+ #endif
+#endif
+
+#pragma comment(lib, "wsock32.lib")
+
+#else //!_MAC
+
+/////////////////////////////////////////////////////////////////////////////
+// Mac libraries
+
+#ifdef _AFXDLL
+ #if defined(_DEBUG)
+ #pragma comment(lib, "mfcn42pd.lib")
+ #pragma comment(lib, "wslmd.lib")
+ #else
+ #pragma comment(lib, "mfcn42p.lib")
+ #pragma comment(lib, "wslm.lib")
+ #endif
+#endif
+
+#endif //_MAC
+#endif //!_AFX_NOFORCE_LIBS
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// AFXSOCK - MFC support for Windows Sockets
+
+// Classes declared in this file
+
+ // CObject
+ class CAsyncSocket; // Async Socket implementation and
+ // base class for Synchronous Socket
+ class CSocket; // Synchronous Socket
+
+ // CFile
+ class CSocketFile; // Used with CSocket and CArchive for
+ // streaming objects on sockets.
+
+/////////////////////////////////////////////////////////////////////////////
+
+// AFXDLL support
+#undef AFX_DATA
+#define AFX_DATA AFX_NET_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocketWnd -- internal use only
+// Implementation for sockets notification callbacks.
+// Future versions of MFC may or may not include this exact class.
+
+class CSocketWnd : public CWnd
+{
+// Construction
+public:
+ CSocketWnd();
+
+protected:
+ //{{AFX_MSG(CSocketWnd)
+ LRESULT OnSocketNotify(WPARAM wParam, LPARAM lParam);
+ LRESULT OnSocketDead(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CAsyncSocket
+
+class CAsyncSocket : public CObject
+{
+ DECLARE_DYNAMIC(CAsyncSocket);
+private:
+ CAsyncSocket(const CAsyncSocket& rSrc); // no implementation
+ void operator=(const CAsyncSocket& rSrc); // no implementation
+
+// Construction
+public:
+ CAsyncSocket();
+ BOOL Create(UINT nSocketPort = 0, int nSocketType=SOCK_STREAM,
+ long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
+ LPCTSTR lpszSocketAddress = NULL);
+
+// Attributes
+public:
+ SOCKET m_hSocket;
+
+ operator SOCKET() const;
+ BOOL Attach(SOCKET hSocket, long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
+ SOCKET Detach();
+
+ BOOL GetPeerName(CString& rPeerAddress, UINT& rPeerPort);
+ BOOL GetPeerName(SOCKADDR* lpSockAddr, int* lpSockAddrLen);
+
+ BOOL GetSockName(CString& rSocketAddress, UINT& rSocketPort);
+ BOOL GetSockName(SOCKADDR* lpSockAddr, int* lpSockAddrLen);
+
+ BOOL SetSockOpt(int nOptionName, const void* lpOptionValue,
+ int nOptionLen, int nLevel = SOL_SOCKET);
+ BOOL GetSockOpt(int nOptionName, void* lpOptionValue,
+ int* lpOptionLen, int nLevel = SOL_SOCKET);
+
+ static CAsyncSocket* PASCAL FromHandle(SOCKET hSocket);
+ static int PASCAL GetLastError();
+
+// Operations
+public:
+
+ virtual BOOL Accept(CAsyncSocket& rConnectedSocket,
+ SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL);
+
+ BOOL Bind(UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL);
+ BOOL Bind (const SOCKADDR* lpSockAddr, int nSockAddrLen);
+
+ virtual void Close();
+
+ BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort);
+ BOOL Connect(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+
+ BOOL IOCtl(long lCommand, DWORD* lpArgument);
+
+ BOOL Listen(int nConnectionBacklog=5);
+
+ virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int ReceiveFrom(void* lpBuf, int nBufLen,
+ CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0);
+ int ReceiveFrom(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags = 0);
+
+ enum { receives = 0, sends = 1, both = 2 };
+ BOOL ShutDown(int nHow = sends);
+
+ virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int SendTo(const void* lpBuf, int nBufLen,
+ UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0);
+ int SendTo(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags = 0);
+
+ BOOL AsyncSelect(long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE);
+
+// Overridable callbacks
+protected:
+ virtual void OnReceive(int nErrorCode);
+ virtual void OnSend(int nErrorCode);
+ virtual void OnOutOfBandData(int nErrorCode);
+ virtual void OnAccept(int nErrorCode);
+ virtual void OnConnect(int nErrorCode);
+ virtual void OnClose(int nErrorCode);
+
+// Implementation
+public:
+ virtual ~CAsyncSocket();
+
+ static CAsyncSocket* PASCAL LookupHandle(SOCKET hSocket, BOOL bDead = FALSE);
+ static void PASCAL AttachHandle(SOCKET hSocket, CAsyncSocket* pSocket, BOOL bDead = FALSE);
+ static void PASCAL DetachHandle(SOCKET hSocket, BOOL bDead = FALSE);
+ static void PASCAL KillSocket(SOCKET hSocket, CAsyncSocket* pSocket);
+ static void PASCAL DoCallBack(WPARAM wParam, LPARAM lParam);
+
+ BOOL Socket(int nSocketType=SOCK_STREAM, long lEvent =
+ FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
+ int nProtocolType = 0, int nAddressFormat = PF_INET);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+ friend class CSocketWnd;
+
+ virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+ virtual int ReceiveFromHelper(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags);
+ virtual int SendToHelper(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocket
+
+class CSocket : public CAsyncSocket
+{
+ DECLARE_DYNAMIC(CSocket);
+private:
+ CSocket(const CSocket& rSrc); // no implementation
+ void operator=(const CSocket& rSrc); // no implementation
+
+// Construction
+public:
+ CSocket();
+ BOOL Create(UINT nSocketPort = 0, int nSocketType=SOCK_STREAM,
+ LPCTSTR lpszSocketAddress = NULL);
+
+// Attributes
+public:
+ BOOL IsBlocking();
+ static CSocket* PASCAL FromHandle(SOCKET hSocket);
+ BOOL Attach(SOCKET hSocket);
+
+// Operations
+public:
+ void CancelBlockingCall();
+
+// Overridable callbacks
+protected:
+ virtual BOOL OnMessagePending();
+
+// Implementation
+public:
+ int m_nTimeOut;
+
+ virtual ~CSocket();
+
+ static int PASCAL ProcessAuxQueue();
+
+ virtual BOOL Accept(CAsyncSocket& rConnectedSocket,
+ SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL);
+ virtual void Close();
+ virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0);
+ virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0);
+
+ int SendChunk(const void* lpBuf, int nBufLen, int nFlags);
+
+protected:
+ BOOL* m_pbBlocking;
+ int m_nConnectError;
+
+ virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen);
+ virtual int ReceiveFromHelper(void* lpBuf, int nBufLen,
+ SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags);
+ virtual int SendToHelper(const void* lpBuf, int nBufLen,
+ const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags);
+
+ static void PASCAL AuxQueueAdd(UINT message, WPARAM wParam, LPARAM lParam);
+
+ virtual BOOL PumpMessages(UINT uStopFlag);
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CSocketFile
+
+class CSocketFile : public CFile
+{
+ DECLARE_DYNAMIC(CSocketFile)
+public:
+//Constructors
+ CSocketFile(CSocket* pSocket, BOOL bArchiveCompatible = TRUE);
+
+// Implementation
+public:
+ CSocket* m_pSocket;
+ BOOL m_bArchiveCompatible;
+
+ virtual ~CSocketFile();
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual UINT Read(void* lpBuf, UINT nCount);
+ virtual void Write(const void* lpBuf, UINT nCount);
+ virtual void Close();
+
+// Unsupported APIs
+ virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL);
+ virtual CFile* Duplicate() const;
+ virtual DWORD GetPosition() const;
+ virtual LONG Seek(LONG lOff, UINT nFrom);
+ virtual void SetLength(DWORD dwNewLen);
+ virtual DWORD GetLength() const;
+ virtual void LockRange(DWORD dwPos, DWORD dwCount);
+ virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
+ virtual void Flush();
+ virtual void Abort();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Global functions
+
+BOOL AFXAPI AfxSocketInit(WSADATA* lpwsaData = NULL);
+void AFXAPI AfxSocketTerm();
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXSOCK_INLINE inline
+#include <afxsock.inl>
+#undef _AFXSOCK_INLINE
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif // __AFXSOCK_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxsock.inl b/public/sdk/inc/mfc42/afxsock.inl
new file mode 100644
index 000000000..c668904f0
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxsock.inl
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXSOCK.H
+
+#ifdef _AFXSOCK_INLINE
+
+_AFXSOCK_INLINE CAsyncSocket::operator SOCKET() const
+ { return m_hSocket; }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetPeerName(SOCKADDR* lpSockAddr, int* lpSockAddrLen)
+ { return (SOCKET_ERROR != getpeername(m_hSocket, lpSockAddr, lpSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetSockName(SOCKADDR* lpSockAddr, int* lpSockAddrLen)
+ { return (SOCKET_ERROR != getsockname(m_hSocket, lpSockAddr, lpSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::SetSockOpt(int nOptionName, const void* lpOptionValue, int nOptionLen, int nLevel)
+ { return (SOCKET_ERROR != setsockopt(m_hSocket, nLevel, nOptionName, (LPCSTR)lpOptionValue, nOptionLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::GetSockOpt(int nOptionName, void* lpOptionValue, int* lpOptionLen, int nLevel)
+ { return (SOCKET_ERROR != getsockopt(m_hSocket, nLevel, nOptionName, (LPSTR)lpOptionValue, lpOptionLen)); }
+_AFXSOCK_INLINE CAsyncSocket* PASCAL CAsyncSocket::FromHandle(SOCKET hSocket)
+ { return CAsyncSocket::LookupHandle(hSocket, FALSE); }
+_AFXSOCK_INLINE int PASCAL CAsyncSocket::GetLastError()
+ { return WSAGetLastError(); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Bind(const SOCKADDR* lpSockAddr, int nSockAddrLen)
+ { return (SOCKET_ERROR != bind(m_hSocket, lpSockAddr, nSockAddrLen)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Connect(const SOCKADDR* lpSockAddr, int nSockAddrLen)
+ { return ConnectHelper(lpSockAddr, nSockAddrLen); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::IOCtl(long lCommand, DWORD* lpArgument)
+ { return (SOCKET_ERROR != ioctlsocket(m_hSocket, lCommand, lpArgument)); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::Listen(int nConnectionBacklog)
+ { return (SOCKET_ERROR != listen(m_hSocket, nConnectionBacklog)); }
+_AFXSOCK_INLINE int CAsyncSocket::ReceiveFrom(void* lpBuf, int nBufLen, SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags)
+ { return ReceiveFromHelper(lpBuf, nBufLen, lpSockAddr, lpSockAddrLen, nFlags); }
+_AFXSOCK_INLINE BOOL CAsyncSocket::ShutDown(int nHow)
+ { return (SOCKET_ERROR != shutdown(m_hSocket,nHow)); }
+_AFXSOCK_INLINE int CAsyncSocket::SendTo(const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags)
+ { return SendToHelper(lpBuf, nBufLen, lpSockAddr, nSockAddrLen, nFlags); }
+
+_AFXSOCK_INLINE BOOL CSocket::Create(UINT nSocketPort, int nSocketType, LPCTSTR lpszSocketAddress)
+ { return CAsyncSocket::Create(nSocketPort, nSocketType, FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, lpszSocketAddress); }
+_AFXSOCK_INLINE BOOL CSocket::IsBlocking()
+ { return (m_pbBlocking != NULL); }
+_AFXSOCK_INLINE CSocket* PASCAL CSocket::FromHandle(SOCKET hSocket)
+ { return (CSocket*)CAsyncSocket::LookupHandle(hSocket, FALSE); }
+_AFXSOCK_INLINE BOOL CSocket::Attach(SOCKET hSocket)
+ { return CAsyncSocket::Attach(hSocket); }
+
+#endif //_AFXSOCK_INLINE
diff --git a/public/sdk/inc/mfc42/afxstat_.h b/public/sdk/inc/mfc42/afxstat_.h
new file mode 100644
index 000000000..1b0dc5ab0
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxstat_.h
@@ -0,0 +1,363 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXSTATE_H__
+#define __AFXSTATE_H__
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifndef __AFXTLS_H__
+ #include <afxtls_.h>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// _AFX_DEBUG_STATE
+
+#ifdef _DEBUG
+
+class _AFX_DEBUG_STATE : public CNoTrackObject
+{
+public:
+ _AFX_DEBUG_STATE();
+ virtual ~_AFX_DEBUG_STATE();
+};
+
+EXTERN_PROCESS_LOCAL(_AFX_DEBUG_STATE, afxDebugState)
+
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// _AFX_WIN_STATE
+
+#undef AFX_DATA
+#define AFX_DATA
+
+class _AFX_WIN_STATE : public CNoTrackObject
+{
+public:
+ _AFX_WIN_STATE();
+ virtual ~_AFX_WIN_STATE();
+
+ // gray dialog support
+ HBRUSH m_hDlgBkBrush; // dialog and message box background brush
+ COLORREF m_crDlgTextClr;
+#ifdef _MAC
+ COLORREF m_crDlgBkClr;
+#endif
+
+ // printing abort
+ BOOL m_bUserAbort;
+};
+
+EXTERN_PROCESS_LOCAL(_AFX_WIN_STATE, _afxWinState)
+
+/////////////////////////////////////////////////////////////////////////////
+// Type library cache - AFX_INTERNAL
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct ITypeInfo;
+typedef ITypeInfo* LPTYPEINFO;
+
+struct ITypeLib;
+typedef ITypeLib* LPTYPELIB;
+
+typedef struct _GUID GUID;
+#ifndef _REFCLSID_DEFINED
+#define REFGUID const GUID &
+#endif
+
+class CTypeLibCache
+{
+public:
+ CTypeLibCache() : m_cRef(0), m_lcid((LCID)-1), m_ptlib(NULL), m_ptinfo(NULL) {}
+ void Lock();
+ void Unlock();
+ BOOL Lookup(LCID lcid, LPTYPELIB* pptlib);
+ void Cache(LCID lcid, LPTYPELIB ptlib);
+ BOOL LookupTypeInfo(LCID lcid, REFGUID guid, LPTYPEINFO* pptinfo);
+ void CacheTypeInfo(LCID lcid, REFGUID guid, LPTYPEINFO ptinfo);
+ const GUID* m_pTypeLibID;
+
+protected:
+ LCID m_lcid;
+ LPTYPELIB m_ptlib;
+ GUID m_guidInfo;
+ LPTYPEINFO m_ptinfo;
+ long m_cRef;
+};
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// AFX_MODULE_STATE : portion of state that is pushed/popped
+
+// forward references required for AFX_MODULE_THREAD_STATE definition
+class CWinThread;
+class CHandleMap;
+class CFrameWnd;
+
+#ifndef _PNH_DEFINED
+typedef int (__cdecl * _PNH)( size_t );
+#define _PNH_DEFINED
+#endif
+
+// AFX_MODULE_THREAD_STATE (local to thread *and* module)
+class AFX_MODULE_THREAD_STATE : public CNoTrackObject
+{
+public:
+ AFX_MODULE_THREAD_STATE();
+ virtual ~AFX_MODULE_THREAD_STATE();
+
+ // current CWinThread pointer
+ CWinThread* m_pCurrentWinThread;
+
+ // list of CFrameWnd objects for thread
+ CTypedSimpleList<CFrameWnd*> m_frameList;
+
+ // temporary/permanent map state
+ DWORD m_nTempMapLock; // if not 0, temp maps locked
+ CHandleMap* m_pmapHWND;
+ CHandleMap* m_pmapHMENU;
+ CHandleMap* m_pmapHDC;
+ CHandleMap* m_pmapHGDIOBJ;
+ CHandleMap* m_pmapHIMAGELIST;
+
+ // thread-local MFC new handler (separate from C-runtime)
+ _PNH m_pfnNewHandler;
+
+#ifndef _AFX_NO_SOCKET_SUPPORT
+ // WinSock specific thread state
+ HWND m_hSocketWindow;
+ CMapPtrToPtr m_mapSocketHandle;
+ CMapPtrToPtr m_mapDeadSockets;
+ CPtrList m_listSocketNotifications;
+#endif
+};
+
+// forward references required for AFX_MODULE_STATE definition
+class CWinApp;
+class COleObjectFactory;
+
+class CWnd;
+
+#ifdef _AFXDLL
+class CDynLinkLibrary;
+#endif
+
+#ifndef _AFX_NO_OCC_SUPPORT
+class COccManager;
+class COleControlLock;
+#endif
+
+#ifndef _AFX_NO_DAO_SUPPORT
+class _AFX_DAO_STATE;
+#endif
+
+// AFX_MODULE_STATE (global data for a module)
+class AFX_MODULE_STATE : public CNoTrackObject
+{
+public:
+#ifdef _AFXDLL
+ AFX_MODULE_STATE(BOOL bDLL, WNDPROC pfnAfxWndProc, DWORD dwVersion);
+ AFX_MODULE_STATE(BOOL bDLL, WNDPROC pfnAfxWndProc, DWORD dwVersion,
+ BOOL bSystem);
+#else
+ AFX_MODULE_STATE(BOOL bDLL);
+#endif
+ ~AFX_MODULE_STATE();
+
+ CWinApp* m_pCurrentWinApp;
+ HINSTANCE m_hCurrentInstanceHandle;
+ HINSTANCE m_hCurrentResourceHandle;
+ LPCTSTR m_lpszCurrentAppName;
+ BYTE m_bDLL; // TRUE if module is a DLL, FALSE if it is an EXE
+ BYTE m_bSystem; // TRUE if module is a "system" module, FALSE if not
+ BYTE m_bReserved[2]; // padding
+
+ short m_fRegisteredClasses; // flags for registered window classes
+
+ // runtime class data
+#ifdef _AFXDLL
+ CRuntimeClass* m_pClassInit;
+#endif
+ CTypedSimpleList<CRuntimeClass*> m_classList;
+
+ // OLE object factories
+#ifndef _AFX_NO_OLE_SUPPORT
+#ifdef _AFXDLL
+ COleObjectFactory* m_pFactoryInit;
+#endif
+ CTypedSimpleList<COleObjectFactory*> m_factoryList;
+#endif
+ // number of locked OLE objects
+ long m_nObjectCount;
+ BOOL m_bUserCtrl;
+
+ // AfxRegisterClass and AfxRegisterWndClass data
+ TCHAR m_szUnregisterList[4096];
+#ifdef _AFXDLL
+ WNDPROC m_pfnAfxWndProc;
+ DWORD m_dwVersion; // version that module linked against
+#endif
+
+ // variables related to a given process in a module
+ // (used to be AFX_MODULE_PROCESS_STATE)
+#ifdef _AFX_OLD_EXCEPTIONS
+ // exceptions
+ AFX_TERM_PROC m_pfnTerminate;
+#endif
+ void (PASCAL *m_pfnFilterToolTipMessage)(MSG*, CWnd*);
+
+#ifdef _AFXDLL
+ // CDynLinkLibrary objects (for resource chain)
+ CTypedSimpleList<CDynLinkLibrary*> m_libraryList;
+
+ // special case for MFCxxLOC.DLL (localized MFC resources)
+ HINSTANCE m_appLangDLL;
+#endif
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // OLE control container manager
+ COccManager* m_pOccManager;
+ // locked OLE controls
+ CTypedSimpleList<COleControlLock*> m_lockList;
+#endif
+
+#ifndef _AFX_NO_DAO_SUPPORT
+ _AFX_DAO_STATE* m_pDaoState;
+#endif
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // Type library caches
+ CTypeLibCache m_typeLibCache;
+ CMapPtrToPtr* m_pTypeLibCacheMap;
+#endif
+
+ // define thread local portions of module state
+ THREAD_LOCAL(AFX_MODULE_THREAD_STATE, m_thread)
+};
+
+AFX_MODULE_STATE* AFXAPI AfxGetAppModuleState();
+#ifdef _AFXDLL
+AFX_MODULE_STATE* AFXAPI AfxSetModuleState(AFX_MODULE_STATE* pNewState);
+#endif
+AFX_MODULE_STATE* AFXAPI AfxGetModuleState();
+AFX_MODULE_STATE* AFXAPI AfxGetStaticModuleState();
+
+AFX_MODULE_THREAD_STATE* AFXAPI AfxGetModuleThreadState();
+
+#ifdef _AFXDLL
+#define _AFX_CMDTARGET_GETSTATE() (m_pModuleState)
+#else
+#define _AFX_CMDTARGET_GETSTATE() (AfxGetModuleState())
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// macros & classes to manage pushing/popping the module state
+
+#ifdef _AFXDLL
+struct AFX_MAINTAIN_STATE
+{
+ AFX_MAINTAIN_STATE(AFX_MODULE_STATE* pModuleState);
+ ~AFX_MAINTAIN_STATE();
+
+protected:
+ AFX_MODULE_STATE* m_pPrevModuleState;
+};
+#define AFX_MANAGE_STATE(p) AFX_MAINTAIN_STATE _ctlState(p);
+#else // _AFXDLL
+#define AFX_MANAGE_STATE(p)
+#endif //!_AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Thread global state
+
+// forward references required for _AFX_THREAD_STATE definition
+class CView;
+class CToolTipCtrl;
+class CControlBar;
+
+class _AFX_THREAD_STATE : public CNoTrackObject
+{
+public:
+ _AFX_THREAD_STATE();
+ virtual ~_AFX_THREAD_STATE();
+
+ // override for m_pModuleState in _AFX_APP_STATE
+ AFX_MODULE_STATE* m_pModuleState;
+ AFX_MODULE_STATE* m_pPrevModuleState;
+
+ // memory safety pool for temp maps
+ void* m_pSafetyPoolBuffer; // current buffer
+
+ // thread local exception context
+ AFX_EXCEPTION_CONTEXT m_exceptionContext;
+
+ // CWnd create, gray dialog hook, and other hook data
+ CWnd* m_pWndInit;
+ CWnd* m_pAlternateWndInit; // special case commdlg hooking
+ DWORD m_dwPropStyle;
+ DWORD m_dwPropExStyle;
+ HWND m_hWndInit;
+ BOOL m_bDlgCreate;
+ HHOOK m_hHookOldCbtFilter;
+ HHOOK m_hHookOldMsgFilter;
+
+ // other CWnd modal data
+ MSG m_lastSentMsg; // see CWnd::WindowProc
+ HWND m_hTrackingWindow; // see CWnd::TrackPopupMenu
+ HMENU m_hTrackingMenu;
+ TCHAR m_szTempClassName[96]; // see AfxRegisterWndClass
+ HWND m_hLockoutNotifyWindow; // see CWnd::OnCommand
+ BOOL m_bInMsgFilter;
+
+ // other framework modal data
+ CView* m_pRoutingView; // see CCmdTarget::GetRoutingView
+ CFrameWnd* m_pRoutingFrame; // see CCmdTarget::GetRoutingFrame
+
+ // MFC/DB thread-local data
+ BOOL m_bWaitForDataSource;
+
+ // common controls thread state
+ CToolTipCtrl* m_pToolTip;
+ CWnd* m_pLastHit; // last window to own tooltip
+ int m_nLastHit; // last hittest code
+ TOOLINFO m_lastInfo; // last TOOLINFO structure
+ int m_nLastStatus; // last flyby status message
+ CControlBar* m_pLastStatus; // last flyby status control bar
+
+ // OLE control thread-local data
+ CWnd* m_pWndPark; // "parking space" window
+ long m_nCtrlRef; // reference count on parking window
+ BOOL m_bNeedTerm; // TRUE if OleUninitialize needs to be called
+};
+
+EXTERN_THREAD_LOCAL(_AFX_THREAD_STATE, _afxThreadState)
+
+_AFX_THREAD_STATE* AFXAPI AfxGetThreadState();
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXSTATE_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxtempl.h b/public/sdk/inc/mfc42/afxtempl.h
new file mode 100644
index 000000000..cb8469d0a
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxtempl.h
@@ -0,0 +1,1648 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXTEMPL_H__
+#define __AFXTEMPL_H__
+
+#ifndef __AFXPLEX_H__
+ #include <afxplex_.h>
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#ifdef _DEBUG
+static char _szAfxTempl[] = "afxtempl.h";
+#undef THIS_FILE
+#define THIS_FILE _szAfxTempl
+#endif
+
+#ifndef ALL_WARNINGS
+#pragma warning(disable: 4114)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// global helpers (can be overridden)
+
+#ifdef new
+#undef new
+#define _REDEF_NEW
+#endif
+
+#ifndef _INC_NEW
+ #include <new.h>
+#endif
+
+template<class TYPE>
+inline void AFXAPI ConstructElements(TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // first do bit-wise zero initialization
+ memset((void*)pElements, 0, nCount * sizeof(TYPE));
+
+ // then call the constructor(s)
+ for (; nCount--; pElements++)
+ ::new((void*)pElements) TYPE;
+}
+
+template<class TYPE>
+inline void AFXAPI DestructElements(TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // call the destructor(s)
+ for (; nCount--; pElements++)
+ pElements->~TYPE();
+}
+
+template<class TYPE>
+inline void AFXAPI CopyElements(TYPE* pDest, const TYPE* pSrc, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pDest, nCount * sizeof(TYPE)));
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pSrc, nCount * sizeof(TYPE)));
+
+ // default is element-copy using assignment
+ while (nCount--)
+ *pDest++ = *pSrc;
+}
+
+template<class TYPE>
+void AFXAPI SerializeElements(CArchive& ar, TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+
+ // default is bit-wise read/write
+ if (ar.IsStoring())
+ ar.Write((void*)pElements, nCount * sizeof(TYPE));
+ else
+ ar.Read((void*)pElements, nCount * sizeof(TYPE));
+}
+
+#ifdef _DEBUG
+template<class TYPE>
+void AFXAPI DumpElements(CDumpContext& dc, const TYPE* pElements, int nCount)
+{
+ ASSERT(nCount == 0 ||
+ AfxIsValidAddress(pElements, nCount * sizeof(TYPE)));
+ &dc; // not used
+ pElements; // not used
+ nCount; // not used
+
+ // default does nothing
+}
+#endif
+
+template<class TYPE, class ARG_TYPE>
+BOOL AFXAPI CompareElements(const TYPE* pElement1, const ARG_TYPE* pElement2)
+{
+ ASSERT(AfxIsValidAddress(pElement1, sizeof(TYPE)));
+ ASSERT(AfxIsValidAddress(pElement2, sizeof(ARG_TYPE)));
+
+ return *pElement1 == *pElement2;
+}
+
+template<class ARG_KEY>
+inline UINT AFXAPI HashKey(ARG_KEY key)
+{
+ // default identity hash - works for most primitive values
+ return ((UINT)(void*)(DWORD)key) >> 4;
+}
+
+// special versions for CString
+void AFXAPI ConstructElements(CString* pElements, int nCount);
+void AFXAPI DestructElements(CString* pElements, int nCount);
+void AFXAPI CopyElements(CString* pDest, const CString* pSrc, int nCount);
+void AFXAPI SerializeElements(CArchive& ar, CString* pElements, int nCount);
+UINT AFXAPI HashKey(LPCTSTR key);
+
+// forward declarations
+class COleVariant;
+struct tagVARIANT;
+
+// special versions for COleVariant
+void AFXAPI ConstructElements(COleVariant* pElements, int nCount);
+void AFXAPI DestructElements(COleVariant* pElements, int nCount);
+void AFXAPI CopyElements(COleVariant* pDest, const COleVariant* pSrc, int nCount);
+void AFXAPI SerializeElements(CArchive& ar, COleVariant* pElements, int nCount);
+void AFXAPI DumpElements(CDumpContext& dc, COleVariant* pElements, int nCount);
+UINT AFXAPI HashKey(const struct tagVARIANT& var);
+
+#define new DEBUG_NEW
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE>
+
+template<class TYPE, class ARG_TYPE>
+class CArray : public CObject
+{
+public:
+// Construction
+ CArray();
+
+// Attributes
+ int GetSize() const;
+ int GetUpperBound() const;
+ void SetSize(int nNewSize, int nGrowBy = -1);
+
+// Operations
+ // Clean up
+ void FreeExtra();
+ void RemoveAll();
+
+ // Accessing elements
+ TYPE GetAt(int nIndex) const;
+ void SetAt(int nIndex, ARG_TYPE newElement);
+ TYPE& ElementAt(int nIndex);
+
+ // Direct Access to the element data (may return NULL)
+ const TYPE* GetData() const;
+ TYPE* GetData();
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, ARG_TYPE newElement);
+ int Add(ARG_TYPE newElement);
+ int Append(const CArray& src);
+ void Copy(const CArray& src);
+
+ // overloaded operator helpers
+ TYPE operator[](int nIndex) const;
+ TYPE& operator[](int nIndex);
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, ARG_TYPE newElement, int nCount = 1);
+ void RemoveAt(int nIndex, int nCount = 1);
+ void InsertAt(int nStartIndex, CArray* pNewArray);
+
+// Implementation
+protected:
+ TYPE* m_pData; // the actual array of data
+ int m_nSize; // # of elements (upperBound - 1)
+ int m_nMaxSize; // max allocated
+ int m_nGrowBy; // grow amount
+
+public:
+ ~CArray();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE> inline functions
+
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::GetSize() const
+ { return m_nSize; }
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::GetUpperBound() const
+ { return m_nSize-1; }
+template<class TYPE, class ARG_TYPE>
+inline void CArray<TYPE, ARG_TYPE>::RemoveAll()
+ { SetSize(0, -1); }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CArray<TYPE, ARG_TYPE>::GetAt(int nIndex) const
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+template<class TYPE, class ARG_TYPE>
+inline void CArray<TYPE, ARG_TYPE>::SetAt(int nIndex, ARG_TYPE newElement)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ m_pData[nIndex] = newElement; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CArray<TYPE, ARG_TYPE>::ElementAt(int nIndex)
+ { ASSERT(nIndex >= 0 && nIndex < m_nSize);
+ return m_pData[nIndex]; }
+template<class TYPE, class ARG_TYPE>
+inline const TYPE* CArray<TYPE, ARG_TYPE>::GetData() const
+ { return (const TYPE*)m_pData; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE* CArray<TYPE, ARG_TYPE>::GetData()
+ { return (TYPE*)m_pData; }
+template<class TYPE, class ARG_TYPE>
+inline int CArray<TYPE, ARG_TYPE>::Add(ARG_TYPE newElement)
+ { int nIndex = m_nSize;
+ SetAtGrow(nIndex, newElement);
+ return nIndex; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CArray<TYPE, ARG_TYPE>::operator[](int nIndex) const
+ { return GetAt(nIndex); }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CArray<TYPE, ARG_TYPE>::operator[](int nIndex)
+ { return ElementAt(nIndex); }
+
+/////////////////////////////////////////////////////////////////////////////
+// CArray<TYPE, ARG_TYPE> out-of-line functions
+
+template<class TYPE, class ARG_TYPE>
+CArray<TYPE, ARG_TYPE>::CArray()
+{
+ m_pData = NULL;
+ m_nSize = m_nMaxSize = m_nGrowBy = 0;
+}
+
+template<class TYPE, class ARG_TYPE>
+CArray<TYPE, ARG_TYPE>::~CArray()
+{
+ ASSERT_VALID(this);
+
+ if (m_pData != NULL)
+ {
+ DestructElements(m_pData, m_nSize);
+ delete[] (BYTE*)m_pData;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::SetSize(int nNewSize, int nGrowBy)
+{
+ ASSERT_VALID(this);
+ ASSERT(nNewSize >= 0);
+
+ if (nGrowBy != -1)
+ m_nGrowBy = nGrowBy; // set new size
+
+ if (nNewSize == 0)
+ {
+ // shrink to nothing
+ if (m_pData != NULL)
+ {
+ DestructElements(m_pData, m_nSize);
+ delete[] (BYTE*)m_pData;
+ m_pData = NULL;
+ }
+ m_nSize = m_nMaxSize = 0;
+ }
+ else if (m_pData == NULL)
+ {
+ // create one with exact size
+#ifdef SIZE_T_MAX
+ ASSERT(nNewSize <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ m_pData = (TYPE*) new BYTE[nNewSize * sizeof(TYPE)];
+ ConstructElements(m_pData, nNewSize);
+ m_nSize = m_nMaxSize = nNewSize;
+ }
+ else if (nNewSize <= m_nMaxSize)
+ {
+ // it fits
+ if (nNewSize > m_nSize)
+ {
+ // initialize the new elements
+ ConstructElements(&m_pData[m_nSize], nNewSize-m_nSize);
+ }
+ else if (m_nSize > nNewSize)
+ {
+ // destroy the old elements
+ DestructElements(&m_pData[nNewSize], m_nSize-nNewSize);
+ }
+ m_nSize = nNewSize;
+ }
+ else
+ {
+ // otherwise, grow array
+ int nGrowBy = m_nGrowBy;
+ if (nGrowBy == 0)
+ {
+ // heuristically determine growth when nGrowBy == 0
+ // (this avoids heap fragmentation in many situations)
+ nGrowBy = m_nSize / 8;
+ nGrowBy = (nGrowBy < 4) ? 4 : ((nGrowBy > 1024) ? 1024 : nGrowBy);
+ }
+ int nNewMax;
+ if (nNewSize < m_nMaxSize + nGrowBy)
+ nNewMax = m_nMaxSize + nGrowBy; // granularity
+ else
+ nNewMax = nNewSize; // no slush
+
+ ASSERT(nNewMax >= m_nMaxSize); // no wrap around
+#ifdef SIZE_T_MAX
+ ASSERT(nNewMax <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ TYPE* pNewData = (TYPE*) new BYTE[nNewMax * sizeof(TYPE)];
+
+ // copy new data from old
+ memcpy(pNewData, m_pData, m_nSize * sizeof(TYPE));
+
+ // construct remaining elements
+ ASSERT(nNewSize > m_nSize);
+ ConstructElements(&pNewData[m_nSize], nNewSize-m_nSize);
+
+ // get rid of old stuff (note: no destructors called)
+ delete[] (BYTE*)m_pData;
+ m_pData = pNewData;
+ m_nSize = nNewSize;
+ m_nMaxSize = nNewMax;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+int CArray<TYPE, ARG_TYPE>::Append(const CArray& src)
+{
+ ASSERT_VALID(this);
+ ASSERT(this != &src); // cannot append to itself
+
+ int nOldSize = m_nSize;
+ SetSize(m_nSize + src.m_nSize);
+ CopyElements(m_pData + nOldSize, src.m_pData, src.m_nSize);
+ return nOldSize;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Copy(const CArray& src)
+{
+ ASSERT_VALID(this);
+ ASSERT(this != &src); // cannot append to itself
+
+ SetSize(src.m_nSize);
+ CopyElements(m_pData, src.m_pData, src.m_nSize);
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::FreeExtra()
+{
+ ASSERT_VALID(this);
+
+ if (m_nSize != m_nMaxSize)
+ {
+ // shrink to desired size
+#ifdef SIZE_T_MAX
+ ASSERT(m_nSize <= SIZE_T_MAX/sizeof(TYPE)); // no overflow
+#endif
+ TYPE* pNewData = NULL;
+ if (m_nSize != 0)
+ {
+ pNewData = (TYPE*) new BYTE[m_nSize * sizeof(TYPE)];
+ // copy new data from old
+ memcpy(pNewData, m_pData, m_nSize * sizeof(TYPE));
+ }
+
+ // get rid of old stuff (note: no destructors called)
+ delete[] (BYTE*)m_pData;
+ m_pData = pNewData;
+ m_nMaxSize = m_nSize;
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::SetAtGrow(int nIndex, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+
+ if (nIndex >= m_nSize)
+ SetSize(nIndex+1, -1);
+ m_pData[nIndex] = newElement;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::InsertAt(int nIndex, ARG_TYPE newElement, int nCount /*=1*/)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0); // will expand to meet need
+ ASSERT(nCount > 0); // zero or negative size not allowed
+
+ if (nIndex >= m_nSize)
+ {
+ // adding after the end of the array
+ SetSize(nIndex + nCount, -1); // grow so nIndex is valid
+ }
+ else
+ {
+ // inserting in the middle of the array
+ int nOldSize = m_nSize;
+ SetSize(m_nSize + nCount, -1); // grow it to new size
+ // destroy intial data before copying over it
+ DestructElements(&m_pData[nOldSize], nCount);
+ // shift old data up to fill gap
+ memmove(&m_pData[nIndex+nCount], &m_pData[nIndex],
+ (nOldSize-nIndex) * sizeof(TYPE));
+
+ // re-init slots we copied from
+ ConstructElements(&m_pData[nIndex], nCount);
+ }
+
+ // insert new value in the gap
+ ASSERT(nIndex + nCount <= m_nSize);
+ while (nCount--)
+ m_pData[nIndex++] = newElement;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::RemoveAt(int nIndex, int nCount)
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+ ASSERT(nCount >= 0);
+ ASSERT(nIndex + nCount <= m_nSize);
+
+ // just remove a range
+ int nMoveCount = m_nSize - (nIndex + nCount);
+ DestructElements(&m_pData[nIndex], nCount);
+ if (nMoveCount)
+ memcpy(&m_pData[nIndex], &m_pData[nIndex + nCount],
+ nMoveCount * sizeof(TYPE));
+ m_nSize -= nCount;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::InsertAt(int nStartIndex, CArray* pNewArray)
+{
+ ASSERT_VALID(this);
+ ASSERT(pNewArray != NULL);
+ ASSERT_VALID(pNewArray);
+ ASSERT(nStartIndex >= 0);
+
+ if (pNewArray->GetSize() > 0)
+ {
+ InsertAt(nStartIndex, pNewArray->GetAt(0), pNewArray->GetSize());
+ for (int i = 0; i < pNewArray->GetSize(); i++)
+ SetAt(nStartIndex + i, pNewArray->GetAt(i));
+ }
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+ if (ar.IsStoring())
+ {
+ ar.WriteCount(m_nSize);
+ }
+ else
+ {
+ DWORD nOldSize = ar.ReadCount();
+ SetSize(nOldSize, -1);
+ }
+ SerializeElements(ar, m_pData, m_nSize);
+}
+
+#ifdef _DEBUG
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nSize << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ dc << "\n";
+ DumpElements(dc, m_pData, m_nSize);
+ }
+
+ dc << "\n";
+}
+
+template<class TYPE, class ARG_TYPE>
+void CArray<TYPE, ARG_TYPE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ if (m_pData == NULL)
+ {
+ ASSERT(m_nSize == 0);
+ ASSERT(m_nMaxSize == 0);
+ }
+ else
+ {
+ ASSERT(m_nSize >= 0);
+ ASSERT(m_nMaxSize >= 0);
+ ASSERT(m_nSize <= m_nMaxSize);
+ ASSERT(AfxIsValidAddress(m_pData, m_nMaxSize * sizeof(TYPE)));
+ }
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CList<TYPE, ARG_TYPE>
+
+template<class TYPE, class ARG_TYPE>
+class CList : public CObject
+{
+protected:
+ struct CNode
+ {
+ CNode* pNext;
+ CNode* pPrev;
+ TYPE data;
+ };
+public:
+// Construction
+ CList(int nBlockSize = 10);
+
+// Attributes (head and tail)
+ // count of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // peek at head or tail
+ TYPE& GetHead();
+ TYPE GetHead() const;
+ TYPE& GetTail();
+ TYPE GetTail() const;
+
+// Operations
+ // get head or tail (and remove it) - don't call on empty list !
+ TYPE RemoveHead();
+ TYPE RemoveTail();
+
+ // add before head or after tail
+ POSITION AddHead(ARG_TYPE newElement);
+ POSITION AddTail(ARG_TYPE newElement);
+
+ // add another list of elements before head or after tail
+ void AddHead(CList* pNewList);
+ void AddTail(CList* pNewList);
+
+ // remove all elements
+ void RemoveAll();
+
+ // iteration
+ POSITION GetHeadPosition() const;
+ POSITION GetTailPosition() const;
+ TYPE& GetNext(POSITION& rPosition); // return *Position++
+ TYPE GetNext(POSITION& rPosition) const; // return *Position++
+ TYPE& GetPrev(POSITION& rPosition); // return *Position--
+ TYPE GetPrev(POSITION& rPosition) const; // return *Position--
+
+ // getting/modifying an element at a given position
+ TYPE& GetAt(POSITION position);
+ TYPE GetAt(POSITION position) const;
+ void SetAt(POSITION pos, ARG_TYPE newElement);
+ void RemoveAt(POSITION position);
+
+ // inserting before or after a given position
+ POSITION InsertBefore(POSITION position, ARG_TYPE newElement);
+ POSITION InsertAfter(POSITION position, ARG_TYPE newElement);
+
+ // helper functions (note: O(n) speed)
+ POSITION Find(ARG_TYPE searchValue, POSITION startAfter = NULL) const;
+ // defaults to starting at the HEAD, return NULL if not found
+ POSITION FindIndex(int nIndex) const;
+ // get the 'nIndex'th element (may return NULL)
+
+// Implementation
+protected:
+ CNode* m_pNodeHead;
+ CNode* m_pNodeTail;
+ int m_nCount;
+ CNode* m_pNodeFree;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CNode* NewNode(CNode*, CNode*);
+ void FreeNode(CNode*);
+
+public:
+ ~CList();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CList<TYPE, ARG_TYPE> inline functions
+
+template<class TYPE, class ARG_TYPE>
+inline int CList<TYPE, ARG_TYPE>::GetCount() const
+ { return m_nCount; }
+template<class TYPE, class ARG_TYPE>
+inline BOOL CList<TYPE, ARG_TYPE>::IsEmpty() const
+ { return m_nCount == 0; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetHead()
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetHead() const
+ { ASSERT(m_pNodeHead != NULL);
+ return m_pNodeHead->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetTail()
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetTail() const
+ { ASSERT(m_pNodeTail != NULL);
+ return m_pNodeTail->data; }
+template<class TYPE, class ARG_TYPE>
+inline POSITION CList<TYPE, ARG_TYPE>::GetHeadPosition() const
+ { return (POSITION) m_pNodeHead; }
+template<class TYPE, class ARG_TYPE>
+inline POSITION CList<TYPE, ARG_TYPE>::GetTailPosition() const
+ { return (POSITION) m_pNodeTail; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetNext(POSITION& rPosition) // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetNext(POSITION& rPosition) const // return *Position++
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pNext;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetPrev(POSITION& rPosition) // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetPrev(POSITION& rPosition) const // return *Position--
+ { CNode* pNode = (CNode*) rPosition;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ rPosition = (POSITION) pNode->pPrev;
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE& CList<TYPE, ARG_TYPE>::GetAt(POSITION position)
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline TYPE CList<TYPE, ARG_TYPE>::GetAt(POSITION position) const
+ { CNode* pNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ return pNode->data; }
+template<class TYPE, class ARG_TYPE>
+inline void CList<TYPE, ARG_TYPE>::SetAt(POSITION pos, ARG_TYPE newElement)
+ { CNode* pNode = (CNode*) pos;
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode->data = newElement; }
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::CList(int nBlockSize)
+{
+ ASSERT(nBlockSize > 0);
+
+ m_nCount = 0;
+ m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL;
+ m_pBlocks = NULL;
+ m_nBlockSize = nBlockSize;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::RemoveAll()
+{
+ ASSERT_VALID(this);
+
+ // destroy elements
+ CNode* pNode;
+ for (pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
+ DestructElements(&pNode->data, 1);
+
+ m_nCount = 0;
+ m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL;
+ m_pBlocks->FreeDataChain();
+ m_pBlocks = NULL;
+}
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::~CList()
+{
+ RemoveAll();
+ ASSERT(m_nCount == 0);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// Node helpers
+//
+// Implementation note: CNode's are stored in CPlex blocks and
+// chained together. Free blocks are maintained in a singly linked list
+// using the 'pNext' member of CNode with 'm_pNodeFree' as the head.
+// Used blocks are maintained in a doubly linked list using both 'pNext'
+// and 'pPrev' as links and 'm_pNodeHead' and 'm_pNodeTail'
+// as the head/tail.
+//
+// We never free a CPlex block unless the List is destroyed or RemoveAll()
+// is used - so the total number of CPlex blocks may grow large depending
+// on the maximum past size of the list.
+//
+
+template<class TYPE, class ARG_TYPE>
+CList<TYPE, ARG_TYPE>::CNode*
+CList<TYPE, ARG_TYPE>::NewNode(CList::CNode* pPrev, CList::CNode* pNext)
+{
+ if (m_pNodeFree == NULL)
+ {
+ // add another block
+ CPlex* pNewBlock = CPlex::Create(m_pBlocks, m_nBlockSize,
+ sizeof(CNode));
+
+ // chain them into free list
+ CNode* pNode = (CNode*) pNewBlock->data();
+ // free in reverse order to make it easier to debug
+ pNode += m_nBlockSize - 1;
+ for (int i = m_nBlockSize-1; i >= 0; i--, pNode--)
+ {
+ pNode->pNext = m_pNodeFree;
+ m_pNodeFree = pNode;
+ }
+ }
+ ASSERT(m_pNodeFree != NULL); // we must have something
+
+ CList::CNode* pNode = m_pNodeFree;
+ m_pNodeFree = m_pNodeFree->pNext;
+ pNode->pPrev = pPrev;
+ pNode->pNext = pNext;
+ m_nCount++;
+ ASSERT(m_nCount > 0); // make sure we don't overflow
+
+ ConstructElements(&pNode->data, 1);
+ return pNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::FreeNode(CList::CNode* pNode)
+{
+ DestructElements(&pNode->data, 1);
+ pNode->pNext = m_pNodeFree;
+ m_pNodeFree = pNode;
+ m_nCount--;
+ ASSERT(m_nCount >= 0); // make sure we don't underflow
+
+ // if no more elements, cleanup completely
+ if (m_nCount == 0)
+ RemoveAll();
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::AddHead(ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ CNode* pNewNode = NewNode(NULL, m_pNodeHead);
+ pNewNode->data = newElement;
+ if (m_pNodeHead != NULL)
+ m_pNodeHead->pPrev = pNewNode;
+ else
+ m_pNodeTail = pNewNode;
+ m_pNodeHead = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::AddTail(ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ CNode* pNewNode = NewNode(m_pNodeTail, NULL);
+ pNewNode->data = newElement;
+ if (m_pNodeTail != NULL)
+ m_pNodeTail->pNext = pNewNode;
+ else
+ m_pNodeHead = pNewNode;
+ m_pNodeTail = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AddHead(CList* pNewList)
+{
+ ASSERT_VALID(this);
+
+ ASSERT(pNewList != NULL);
+ ASSERT_VALID(pNewList);
+
+ // add a list of same elements to head (maintain order)
+ POSITION pos = pNewList->GetTailPosition();
+ while (pos != NULL)
+ AddHead(pNewList->GetPrev(pos));
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AddTail(CList* pNewList)
+{
+ ASSERT_VALID(this);
+ ASSERT(pNewList != NULL);
+ ASSERT_VALID(pNewList);
+
+ // add a list of same elements
+ POSITION pos = pNewList->GetHeadPosition();
+ while (pos != NULL)
+ AddTail(pNewList->GetNext(pos));
+}
+
+template<class TYPE, class ARG_TYPE>
+TYPE CList<TYPE, ARG_TYPE>::RemoveHead()
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pNodeHead != NULL); // don't call on empty list !!!
+ ASSERT(AfxIsValidAddress(m_pNodeHead, sizeof(CNode)));
+
+ CNode* pOldNode = m_pNodeHead;
+ TYPE returnValue = pOldNode->data;
+
+ m_pNodeHead = pOldNode->pNext;
+ if (m_pNodeHead != NULL)
+ m_pNodeHead->pPrev = NULL;
+ else
+ m_pNodeTail = NULL;
+ FreeNode(pOldNode);
+ return returnValue;
+}
+
+template<class TYPE, class ARG_TYPE>
+TYPE CList<TYPE, ARG_TYPE>::RemoveTail()
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pNodeTail != NULL); // don't call on empty list !!!
+ ASSERT(AfxIsValidAddress(m_pNodeTail, sizeof(CNode)));
+
+ CNode* pOldNode = m_pNodeTail;
+ TYPE returnValue = pOldNode->data;
+
+ m_pNodeTail = pOldNode->pPrev;
+ if (m_pNodeTail != NULL)
+ m_pNodeTail->pNext = NULL;
+ else
+ m_pNodeHead = NULL;
+ FreeNode(pOldNode);
+ return returnValue;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::InsertBefore(POSITION position, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ if (position == NULL)
+ return AddHead(newElement); // insert before nothing -> head of the list
+
+ // Insert it before position
+ CNode* pOldNode = (CNode*) position;
+ CNode* pNewNode = NewNode(pOldNode->pPrev, pOldNode);
+ pNewNode->data = newElement;
+
+ if (pOldNode->pPrev != NULL)
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pPrev, sizeof(CNode)));
+ pOldNode->pPrev->pNext = pNewNode;
+ }
+ else
+ {
+ ASSERT(pOldNode == m_pNodeHead);
+ m_pNodeHead = pNewNode;
+ }
+ pOldNode->pPrev = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::InsertAfter(POSITION position, ARG_TYPE newElement)
+{
+ ASSERT_VALID(this);
+
+ if (position == NULL)
+ return AddTail(newElement); // insert after nothing -> tail of the list
+
+ // Insert it before position
+ CNode* pOldNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pOldNode, sizeof(CNode)));
+ CNode* pNewNode = NewNode(pOldNode, pOldNode->pNext);
+ pNewNode->data = newElement;
+
+ if (pOldNode->pNext != NULL)
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pNext, sizeof(CNode)));
+ pOldNode->pNext->pPrev = pNewNode;
+ }
+ else
+ {
+ ASSERT(pOldNode == m_pNodeTail);
+ m_pNodeTail = pNewNode;
+ }
+ pOldNode->pNext = pNewNode;
+ return (POSITION) pNewNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::RemoveAt(POSITION position)
+{
+ ASSERT_VALID(this);
+
+ CNode* pOldNode = (CNode*) position;
+ ASSERT(AfxIsValidAddress(pOldNode, sizeof(CNode)));
+
+ // remove pOldNode from list
+ if (pOldNode == m_pNodeHead)
+ {
+ m_pNodeHead = pOldNode->pNext;
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pPrev, sizeof(CNode)));
+ pOldNode->pPrev->pNext = pOldNode->pNext;
+ }
+ if (pOldNode == m_pNodeTail)
+ {
+ m_pNodeTail = pOldNode->pPrev;
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pOldNode->pNext, sizeof(CNode)));
+ pOldNode->pNext->pPrev = pOldNode->pPrev;
+ }
+ FreeNode(pOldNode);
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::FindIndex(int nIndex) const
+{
+ ASSERT_VALID(this);
+ ASSERT(nIndex >= 0);
+
+ if (nIndex >= m_nCount)
+ return NULL; // went too far
+
+ CNode* pNode = m_pNodeHead;
+ while (nIndex--)
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode = pNode->pNext;
+ }
+ return (POSITION) pNode;
+}
+
+template<class TYPE, class ARG_TYPE>
+POSITION CList<TYPE, ARG_TYPE>::Find(ARG_TYPE searchValue, POSITION startAfter) const
+{
+ ASSERT_VALID(this);
+
+ CNode* pNode = (CNode*) startAfter;
+ if (pNode == NULL)
+ {
+ pNode = m_pNodeHead; // start at head
+ }
+ else
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ pNode = pNode->pNext; // start after the one specified
+ }
+
+ for (; pNode != NULL; pNode = pNode->pNext)
+ if (CompareElements(&pNode->data, &searchValue))
+ return (POSITION)pNode;
+ return NULL;
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+
+ if (ar.IsStoring())
+ {
+ ar.WriteCount(m_nCount);
+ for (CNode* pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
+ {
+ ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
+ SerializeElements(ar, &pNode->data, 1);
+ }
+ }
+ else
+ {
+ DWORD nNewCount = ar.ReadCount();
+ TYPE newData;
+ while (nNewCount--)
+ {
+ SerializeElements(ar, &newData, 1);
+ AddTail(newData);
+ }
+ }
+}
+
+#ifdef _DEBUG
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nCount << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ POSITION pos = GetHeadPosition();
+ while (pos != NULL)
+ {
+ dc << "\n";
+ DumpElements(dc, &((CList*)this)->GetNext(pos), 1);
+ }
+ }
+
+ dc << "\n";
+}
+
+template<class TYPE, class ARG_TYPE>
+void CList<TYPE, ARG_TYPE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ if (m_nCount == 0)
+ {
+ // empty list
+ ASSERT(m_pNodeHead == NULL);
+ ASSERT(m_pNodeTail == NULL);
+ }
+ else
+ {
+ // non-empty list
+ ASSERT(AfxIsValidAddress(m_pNodeHead, sizeof(CNode)));
+ ASSERT(AfxIsValidAddress(m_pNodeTail, sizeof(CNode)));
+ }
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+class CMap : public CObject
+{
+protected:
+ // Association
+ struct CAssoc
+ {
+ CAssoc* pNext;
+ UINT nHashValue; // needed for efficient iteration
+ KEY key;
+ VALUE value;
+ };
+public:
+// Construction
+ CMap(int nBlockSize = 10);
+
+// Attributes
+ // number of elements
+ int GetCount() const;
+ BOOL IsEmpty() const;
+
+ // Lookup
+ BOOL Lookup(ARG_KEY key, VALUE& rValue) const;
+
+// Operations
+ // Lookup and add if not there
+ VALUE& operator[](ARG_KEY key);
+
+ // add a new (key, value) pair
+ void SetAt(ARG_KEY key, ARG_VALUE newValue);
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(ARG_KEY key);
+ void RemoveAll();
+
+ // iterating all (key, value) pairs
+ POSITION GetStartPosition() const;
+ void GetNextAssoc(POSITION& rNextPosition, KEY& rKey, VALUE& rValue) const;
+
+ // advanced features for derived classes
+ UINT GetHashTableSize() const;
+ void InitHashTable(UINT hashSize, BOOL bAllocNow = TRUE);
+
+// Implementation
+protected:
+ CAssoc** m_pHashTable;
+ UINT m_nHashTableSize;
+ int m_nCount;
+ CAssoc* m_pFreeList;
+ struct CPlex* m_pBlocks;
+ int m_nBlockSize;
+
+ CAssoc* NewAssoc();
+ void FreeAssoc(CAssoc*);
+ CAssoc* GetAssocAt(ARG_KEY, UINT&) const;
+
+public:
+ ~CMap();
+ void Serialize(CArchive&);
+#ifdef _DEBUG
+ void Dump(CDumpContext&) const;
+ void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE> inline functions
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline int CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetCount() const
+ { return m_nCount; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::IsEmpty() const
+ { return m_nCount == 0; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::SetAt(ARG_KEY key, ARG_VALUE newValue)
+ { (*this)[key] = newValue; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline POSITION CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetStartPosition() const
+ { return (m_nCount == 0) ? NULL : BEFORE_START_POSITION; }
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+inline UINT CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetHashTableSize() const
+ { return m_nHashTableSize; }
+
+/////////////////////////////////////////////////////////////////////////////
+// CMap<KEY, ARG_KEY, VALUE, ARG_VALUE> out-of-line functions
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CMap(int nBlockSize)
+{
+ ASSERT(nBlockSize > 0);
+
+ m_pHashTable = NULL;
+ m_nHashTableSize = 17; // default size
+ m_nCount = 0;
+ m_pFreeList = NULL;
+ m_pBlocks = NULL;
+ m_nBlockSize = nBlockSize;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::InitHashTable(
+ UINT nHashSize, BOOL bAllocNow)
+//
+// Used to force allocation of a hash table or to override the default
+// hash table size of (which is fairly small)
+{
+ ASSERT_VALID(this);
+ ASSERT(m_nCount == 0);
+ ASSERT(nHashSize > 0);
+
+ if (m_pHashTable != NULL)
+ {
+ // free hash table
+ delete[] m_pHashTable;
+ m_pHashTable = NULL;
+ }
+
+ if (bAllocNow)
+ {
+ m_pHashTable = new CAssoc* [nHashSize];
+ memset(m_pHashTable, 0, sizeof(CAssoc*) * nHashSize);
+ }
+ m_nHashTableSize = nHashSize;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::RemoveAll()
+{
+ ASSERT_VALID(this);
+
+ if (m_pHashTable != NULL)
+ {
+ // destroy elements (values and keys)
+ for (UINT nHash = 0; nHash < m_nHashTableSize; nHash++)
+ {
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL;
+ pAssoc = pAssoc->pNext)
+ {
+ DestructElements(&pAssoc->value, 1);
+ DestructElements(&pAssoc->key, 1);
+ }
+ }
+ }
+
+ // free hash table
+ delete[] m_pHashTable;
+ m_pHashTable = NULL;
+
+ m_nCount = 0;
+ m_pFreeList = NULL;
+ m_pBlocks->FreeDataChain();
+ m_pBlocks = NULL;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::~CMap()
+{
+ RemoveAll();
+ ASSERT(m_nCount == 0);
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CAssoc*
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::NewAssoc()
+{
+ if (m_pFreeList == NULL)
+ {
+ // add another block
+ CPlex* newBlock = CPlex::Create(m_pBlocks, m_nBlockSize, sizeof(CMap::CAssoc));
+ // chain them into free list
+ CMap::CAssoc* pAssoc = (CMap::CAssoc*) newBlock->data();
+ // free in reverse order to make it easier to debug
+ pAssoc += m_nBlockSize - 1;
+ for (int i = m_nBlockSize-1; i >= 0; i--, pAssoc--)
+ {
+ pAssoc->pNext = m_pFreeList;
+ m_pFreeList = pAssoc;
+ }
+ }
+ ASSERT(m_pFreeList != NULL); // we must have something
+
+ CMap::CAssoc* pAssoc = m_pFreeList;
+ m_pFreeList = m_pFreeList->pNext;
+ m_nCount++;
+ ASSERT(m_nCount > 0); // make sure we don't overflow
+ ConstructElements(&pAssoc->key, 1);
+ ConstructElements(&pAssoc->value, 1); // special construct values
+ return pAssoc;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::FreeAssoc(CMap::CAssoc* pAssoc)
+{
+ DestructElements(&pAssoc->value, 1);
+ DestructElements(&pAssoc->key, 1);
+ pAssoc->pNext = m_pFreeList;
+ m_pFreeList = pAssoc;
+ m_nCount--;
+ ASSERT(m_nCount >= 0); // make sure we don't underflow
+
+ // if no more elements, cleanup completely
+ if (m_nCount == 0)
+ RemoveAll();
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::CAssoc*
+CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetAssocAt(ARG_KEY key, UINT& nHash) const
+// find association (or return NULL)
+{
+ nHash = HashKey(key) % m_nHashTableSize;
+
+ if (m_pHashTable == NULL)
+ return NULL;
+
+ // see if it exists
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL; pAssoc = pAssoc->pNext)
+ {
+ if (CompareElements(&pAssoc->key, &key))
+ return pAssoc;
+ }
+ return NULL;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Lookup(ARG_KEY key, VALUE& rValue) const
+{
+ ASSERT_VALID(this);
+
+ UINT nHash;
+ CAssoc* pAssoc = GetAssocAt(key, nHash);
+ if (pAssoc == NULL)
+ return FALSE; // not in map
+
+ rValue = pAssoc->value;
+ return TRUE;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+VALUE& CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::operator[](ARG_KEY key)
+{
+ ASSERT_VALID(this);
+
+ UINT nHash;
+ CAssoc* pAssoc;
+ if ((pAssoc = GetAssocAt(key, nHash)) == NULL)
+ {
+ if (m_pHashTable == NULL)
+ InitHashTable(m_nHashTableSize);
+
+ // it doesn't exist, add a new Association
+ pAssoc = NewAssoc();
+ pAssoc->nHashValue = nHash;
+ pAssoc->key = key;
+ // 'pAssoc->value' is a constructed object, nothing more
+
+ // put into hash table
+ pAssoc->pNext = m_pHashTable[nHash];
+ m_pHashTable[nHash] = pAssoc;
+ }
+ return pAssoc->value; // return new reference
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+BOOL CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::RemoveKey(ARG_KEY key)
+// remove key - return TRUE if removed
+{
+ ASSERT_VALID(this);
+
+ if (m_pHashTable == NULL)
+ return FALSE; // nothing in the table
+
+ CAssoc** ppAssocPrev;
+ ppAssocPrev = &m_pHashTable[HashKey(key) % m_nHashTableSize];
+
+ CAssoc* pAssoc;
+ for (pAssoc = *ppAssocPrev; pAssoc != NULL; pAssoc = pAssoc->pNext)
+ {
+ if (CompareElements(&pAssoc->key, &key))
+ {
+ // remove it
+ *ppAssocPrev = pAssoc->pNext; // remove from list
+ FreeAssoc(pAssoc);
+ return TRUE;
+ }
+ ppAssocPrev = &pAssoc->pNext;
+ }
+ return FALSE; // not found
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::GetNextAssoc(POSITION& rNextPosition,
+ KEY& rKey, VALUE& rValue) const
+{
+ ASSERT_VALID(this);
+ ASSERT(m_pHashTable != NULL); // never call on empty map
+
+ CAssoc* pAssocRet = (CAssoc*)rNextPosition;
+ ASSERT(pAssocRet != NULL);
+
+ if (pAssocRet == (CAssoc*) BEFORE_START_POSITION)
+ {
+ // find the first association
+ for (UINT nBucket = 0; nBucket < m_nHashTableSize; nBucket++)
+ if ((pAssocRet = m_pHashTable[nBucket]) != NULL)
+ break;
+ ASSERT(pAssocRet != NULL); // must find something
+ }
+
+ // find next association
+ ASSERT(AfxIsValidAddress(pAssocRet, sizeof(CAssoc)));
+ CAssoc* pAssocNext;
+ if ((pAssocNext = pAssocRet->pNext) == NULL)
+ {
+ // go to next bucket
+ for (UINT nBucket = pAssocRet->nHashValue + 1;
+ nBucket < m_nHashTableSize; nBucket++)
+ if ((pAssocNext = m_pHashTable[nBucket]) != NULL)
+ break;
+ }
+
+ rNextPosition = (POSITION) pAssocNext;
+
+ // fill in return data
+ rKey = pAssocRet->key;
+ rValue = pAssocRet->value;
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Serialize(CArchive& ar)
+{
+ ASSERT_VALID(this);
+
+ CObject::Serialize(ar);
+
+ if (ar.IsStoring())
+ {
+ ar.WriteCount(m_nCount);
+ if (m_nCount == 0)
+ return; // nothing more to do
+
+ ASSERT(m_pHashTable != NULL);
+ for (UINT nHash = 0; nHash < m_nHashTableSize; nHash++)
+ {
+ CAssoc* pAssoc;
+ for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL;
+ pAssoc = pAssoc->pNext)
+ {
+ SerializeElements(ar, &pAssoc->key, 1);
+ SerializeElements(ar, &pAssoc->value, 1);
+ }
+ }
+ }
+ else
+ {
+ DWORD nNewCount = ar.ReadCount();
+ KEY newKey;
+ VALUE newValue;
+ while (nNewCount--)
+ {
+ SerializeElements(ar, &newKey, 1);
+ SerializeElements(ar, &newValue, 1);
+ SetAt(newKey, newValue);
+ }
+ }
+}
+
+#ifdef _DEBUG
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::Dump(CDumpContext& dc) const
+{
+ CObject::Dump(dc);
+
+ dc << "with " << m_nCount << " elements";
+ if (dc.GetDepth() > 0)
+ {
+ // Dump in format "[key] -> value"
+ KEY key;
+ VALUE val;
+
+ POSITION pos = GetStartPosition();
+ while (pos != NULL)
+ {
+ GetNextAssoc(pos, key, val);
+ dc << "\n\t[";
+ DumpElements(dc, &key, 1);
+ dc << "] = ";
+ DumpElements(dc, &val, 1);
+ }
+ }
+
+ dc << "\n";
+}
+
+template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
+void CMap<KEY, ARG_KEY, VALUE, ARG_VALUE>::AssertValid() const
+{
+ CObject::AssertValid();
+
+ ASSERT(m_nHashTableSize > 0);
+ ASSERT(m_nCount == 0 || m_pHashTable != NULL);
+ // non-empty map should have hash table
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrArray<BASE_CLASS, TYPE>
+
+template<class BASE_CLASS, class TYPE>
+class CTypedPtrArray : public BASE_CLASS
+{
+public:
+ // Accessing elements
+ TYPE GetAt(int nIndex) const
+ { return (TYPE)BASE_CLASS::GetAt(nIndex); }
+ TYPE& ElementAt(int nIndex)
+ { return (TYPE&)BASE_CLASS::ElementAt(nIndex); }
+ void SetAt(int nIndex, TYPE ptr)
+ { BASE_CLASS::SetAt(nIndex, ptr); }
+
+ // Potentially growing the array
+ void SetAtGrow(int nIndex, TYPE newElement)
+ { BASE_CLASS::SetAtGrow(nIndex, newElement); }
+ int Add(TYPE newElement)
+ { return BASE_CLASS::Add(newElement); }
+ int Append(const CTypedPtrArray<BASE_CLASS, TYPE>& src)
+ { return BASE_CLASS::Append(src); }
+ void Copy(const CTypedPtrArray<BASE_CLASS, TYPE>& src)
+ { BASE_CLASS::Copy(src); }
+
+ // Operations that move elements around
+ void InsertAt(int nIndex, TYPE newElement, int nCount = 1)
+ { BASE_CLASS::InsertAt(nIndex, newElement, nCount); }
+ void InsertAt(int nStartIndex, CTypedPtrArray<BASE_CLASS, TYPE>* pNewArray)
+ { BASE_CLASS::InsertAt(nStartIndex, pNewArray); }
+
+ // overloaded operator helpers
+ TYPE operator[](int nIndex) const
+ { return (TYPE)BASE_CLASS::operator[](nIndex); }
+ TYPE& operator[](int nIndex)
+ { return (TYPE&)BASE_CLASS::operator[](nIndex); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrList<BASE_CLASS, TYPE>
+
+template<class BASE_CLASS, class TYPE>
+class CTypedPtrList : public BASE_CLASS
+{
+public:
+// Construction
+ CTypedPtrList(int nBlockSize = 10)
+ : BASE_CLASS(nBlockSize) { }
+
+ // peek at head or tail
+ TYPE& GetHead()
+ { return (TYPE&)BASE_CLASS::GetHead(); }
+ TYPE GetHead() const
+ { return (TYPE)BASE_CLASS::GetHead(); }
+ TYPE& GetTail()
+ { return (TYPE&)BASE_CLASS::GetTail(); }
+ TYPE GetTail() const
+ { return (TYPE)BASE_CLASS::GetTail(); }
+
+ // get head or tail (and remove it) - don't call on empty list!
+ TYPE RemoveHead()
+ { return (TYPE)BASE_CLASS::RemoveHead(); }
+ TYPE RemoveTail()
+ { return (TYPE)BASE_CLASS::RemoveTail(); }
+
+ // add before head or after tail
+ POSITION AddHead(TYPE newElement)
+ { return BASE_CLASS::AddHead(newElement); }
+ POSITION AddTail(TYPE newElement)
+ { return BASE_CLASS::AddTail(newElement); }
+
+ // add another list of elements before head or after tail
+ void AddHead(CTypedPtrList<BASE_CLASS, TYPE>* pNewList)
+ { BASE_CLASS::AddHead(pNewList); }
+ void AddTail(CTypedPtrList<BASE_CLASS, TYPE>* pNewList)
+ { BASE_CLASS::AddTail(pNewList); }
+
+ // iteration
+ TYPE& GetNext(POSITION& rPosition)
+ { return (TYPE&)BASE_CLASS::GetNext(rPosition); }
+ TYPE GetNext(POSITION& rPosition) const
+ { return (TYPE)BASE_CLASS::GetNext(rPosition); }
+ TYPE& GetPrev(POSITION& rPosition)
+ { return (TYPE&)BASE_CLASS::GetPrev(rPosition); }
+ TYPE GetPrev(POSITION& rPosition) const
+ { return (TYPE)BASE_CLASS::GetPrev(rPosition); }
+
+ // getting/modifying an element at a given position
+ TYPE& GetAt(POSITION position)
+ { return (TYPE&)BASE_CLASS::GetAt(position); }
+ TYPE GetAt(POSITION position) const
+ { return (TYPE)BASE_CLASS::GetAt(position); }
+ void SetAt(POSITION pos, TYPE newElement)
+ { BASE_CLASS::SetAt(pos, newElement); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CTypedPtrMap<BASE_CLASS, KEY, VALUE>
+
+template<class BASE_CLASS, class KEY, class VALUE>
+class CTypedPtrMap : public BASE_CLASS
+{
+public:
+
+// Construction
+ CTypedPtrMap(int nBlockSize = 10)
+ : BASE_CLASS(nBlockSize) { }
+
+ // Lookup
+ BOOL Lookup(BASE_CLASS::BASE_ARG_KEY key, VALUE& rValue) const
+ { return BASE_CLASS::Lookup(key, (BASE_CLASS::BASE_VALUE&)rValue); }
+
+ // Lookup and add if not there
+ VALUE& operator[](BASE_CLASS::BASE_ARG_KEY key)
+ { return (VALUE&)BASE_CLASS::operator[](key); }
+
+ // add a new key (key, value) pair
+ void SetAt(KEY key, VALUE newValue)
+ { BASE_CLASS::SetAt(key, newValue); }
+
+ // removing existing (key, ?) pair
+ BOOL RemoveKey(KEY key)
+ { return BASE_CLASS::RemoveKey(key); }
+
+ // iteration
+ void GetNextAssoc(POSITION& rPosition, KEY& rKey, VALUE& rValue) const
+ { BASE_CLASS::GetNextAssoc(rPosition, (BASE_CLASS::BASE_KEY&)rKey,
+ (BASE_CLASS::BASE_VALUE&)rValue); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+#undef THIS_FILE
+#define THIS_FILE __FILE__
+
+#undef new
+#ifdef _REDEF_NEW
+#define new DEBUG_NEW
+#undef _REDEF_NEW
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+#endif //__AFXTEMPL_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxtls_.h b/public/sdk/inc/mfc42/afxtls_.h
new file mode 100644
index 000000000..a60b9e23d
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxtls_.h
@@ -0,0 +1,240 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXTLS_H__
+#define __AFXTLS_H__
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+// Classes declared in this file
+
+class CSimpleList;
+class CThreadSlotData; // for manipulationg thread local storage
+class CThreadLocalObject; // for storing thread local data
+class CProcessLocalObject; // for storing thread local data
+class CNoTrackObject;
+
+// template class CTypedSimpleList<>
+// template class CThreadLocal<>
+// template class CProcessLocal<>
+
+/////////////////////////////////////////////////////////////////////////////
+// CSimpleList (simple/small subset of CList)
+
+class CSimpleList
+{
+public:
+ CSimpleList(int nNextOffset = 0);
+ void Construct(int nNextOffset);
+
+// Operations
+ BOOL IsEmpty() const;
+ void AddHead(void* p);
+ void RemoveAll();
+ void* GetHead() const;
+ void* GetNext(void* p) const;
+ BOOL Remove(void* p);
+
+// Implementation
+ void* m_pHead;
+ size_t m_nNextOffset;
+
+ void** GetNextPtr(void* p) const; // somewhat trusting...
+};
+
+inline CSimpleList::CSimpleList(int nNextOffset)
+ { m_pHead = NULL; m_nNextOffset = nNextOffset; }
+inline void CSimpleList::Construct(int nNextOffset)
+ { ASSERT(m_pHead == NULL); m_nNextOffset = nNextOffset; }
+inline BOOL CSimpleList::IsEmpty() const
+ { return m_pHead == NULL; }
+inline void** CSimpleList::GetNextPtr(void* p) const
+ { ASSERT(p != NULL); return (void**)((BYTE*)p+m_nNextOffset); }
+inline void CSimpleList::RemoveAll()
+ { m_pHead = NULL; }
+inline void* CSimpleList::GetHead() const
+ { return m_pHead; }
+inline void* CSimpleList::GetNext(void* prevElement) const
+ { return *GetNextPtr(prevElement); }
+
+template<class TYPE>
+class CTypedSimpleList : public CSimpleList
+{
+public:
+ CTypedSimpleList(int nNextOffset = 0)
+ : CSimpleList(nNextOffset) { }
+ void AddHead(TYPE p)
+ { CSimpleList::AddHead(p); }
+ TYPE GetHead()
+ { return (TYPE)CSimpleList::GetHead(); }
+ TYPE GetNext(TYPE p)
+ { return (TYPE)CSimpleList::GetNext(p); }
+ BOOL Remove(TYPE p)
+ { return CSimpleList::Remove((TYPE)p); }
+ operator TYPE()
+ { return (TYPE)CSimpleList::GetHead(); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CThreadSlotData - manages owned array of "slots" for thread local storage
+
+struct CThreadData; // private to implementation
+struct CSlotData; // private to implementation
+
+class CThreadSlotData
+{
+public:
+ CThreadSlotData();
+
+// Operations
+ int AllocSlot();
+ void FreeSlot(int nSlot);
+ void* GetValue(int nSlot);
+ void SetValue(int nSlot, void* pValue);
+ // delete all values in process/thread
+ void DeleteValues(HINSTANCE hInst, BOOL bAll = FALSE);
+ // assign instance handle to just constructed slots
+ void AssignInstance(HINSTANCE hInst);
+
+// Implementation
+ DWORD m_tlsIndex; // used to access system thread-local storage
+
+ int m_nAlloc; // number of slots allocated (in UINTs)
+ int m_nRover; // (optimization) for quick finding of free slots
+ int m_nMax; // size of slot table below (in bits)
+ CSlotData* m_pSlotData; // state of each slot (allocated or not)
+ CTypedSimpleList<CThreadData*> m_list; // list of CThreadData structures
+ CRITICAL_SECTION m_sect;
+
+ void* GetThreadValue(int nSlot); // special version for threads only!
+ void* PASCAL operator new(size_t, void* p)
+ { return p; }
+ void DeleteValues(CThreadData* pData, HINSTANCE hInst);
+ ~CThreadSlotData();
+};
+
+class CNoTrackObject
+{
+public:
+ void* PASCAL operator new(size_t nSize);
+ void PASCAL operator delete(void*);
+
+#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
+ void* PASCAL operator new(size_t nSize, LPCSTR, int);
+#endif
+ virtual ~CNoTrackObject() { }
+};
+
+class CThreadLocalObject
+{
+public:
+// Attributes
+ CNoTrackObject* GetData(CNoTrackObject* (AFXAPI* pfnCreateObject)());
+ CNoTrackObject* GetDataNA();
+
+// Implementation
+ int m_nSlot;
+ ~CThreadLocalObject();
+};
+
+class CProcessLocalObject
+{
+public:
+// Attributes
+ CNoTrackObject* GetData(CNoTrackObject* (AFXAPI* pfnCreateObject)());
+
+// Implementation
+ CNoTrackObject* volatile m_pObject;
+ ~CProcessLocalObject();
+};
+
+template<class TYPE>
+class CThreadLocal : public CThreadLocalObject
+{
+// Attributes
+public:
+ inline TYPE* GetData()
+ {
+ TYPE* pData = (TYPE*)CThreadLocalObject::GetData(&CreateObject);
+ ASSERT(pData != NULL);
+ return pData;
+ }
+ inline TYPE* GetDataNA()
+ {
+ TYPE* pData = (TYPE*)CThreadLocalObject::GetDataNA();
+ return pData;
+ }
+ inline operator TYPE*()
+ { return GetData(); }
+ inline TYPE* operator->()
+ { return GetData(); }
+
+// Implementation
+public:
+ static CNoTrackObject* AFXAPI CreateObject()
+ { return new TYPE; }
+};
+
+#define THREAD_LOCAL(class_name, ident_name) \
+ AFX_DATADEF CThreadLocal<class_name> ident_name;
+#define EXTERN_THREAD_LOCAL(class_name, ident_name) \
+ extern AFX_DATA THREAD_LOCAL(class_name, ident_name)
+
+template<class TYPE>
+class CProcessLocal : public CProcessLocalObject
+{
+// Attributes
+public:
+ inline TYPE* GetData()
+ {
+ TYPE* pData = (TYPE*)CProcessLocalObject::GetData(&CreateObject);
+ ASSERT(pData != NULL);
+ return pData;
+ }
+ inline TYPE* GetDataNA()
+ { return (TYPE*)m_pObject; }
+ inline operator TYPE*()
+ { return GetData(); }
+ inline TYPE* operator->()
+ { return GetData(); }
+
+// Implementation
+public:
+ static CNoTrackObject* AFXAPI CreateObject()
+ { return new TYPE; }
+};
+
+#define PROCESS_LOCAL(class_name, ident_name) \
+ AFX_DATADEF CProcessLocal<class_name> ident_name;
+#define EXTERN_PROCESS_LOCAL(class_name, ident_name) \
+ extern AFX_DATA PROCESS_LOCAL(class_name, ident_name)
+
+/////////////////////////////////////////////////////////////////////////////
+
+void AFXAPI AfxInitLocalData(HINSTANCE hInstInit);
+void AFXAPI AfxTermLocalData(HINSTANCE hInstTerm, BOOL bAll = FALSE);
+void AFXAPI AfxTlsAddRef();
+void AFXAPI AfxTlsRelease();
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#endif //__AFXTLS_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxv_cfg.h b/public/sdk/inc/mfc42/afxv_cfg.h
new file mode 100644
index 000000000..dca730f40
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxv_cfg.h
@@ -0,0 +1,17 @@
+// afxv_cfg.h - target configuration control for non-Microsoft compilers
+//
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// You can define _AFX_PORTABLE in order to keep the library from using
+// certain Microsoft extensions that are not commonly implemented by
+// other compilers.
+
+#define _AFX_PORTABLE
diff --git a/public/sdk/inc/mfc42/afxv_cpu.h b/public/sdk/inc/mfc42/afxv_cpu.h
new file mode 100644
index 000000000..d38001152
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxv_cpu.h
@@ -0,0 +1,63 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_cpu.h - target version/configuration control for non-Intel CPUs
+
+#if !defined(_M_MRX000) && !defined(_M_ALPHA) && !defined(_M_PPC) && !defined(_M_M68K) && !defined(_M_MPPC)
+ #error afxv_cpu.h is only for MIPS R4000, DEC AXP, Motorola M68000, and IBM PowerPC builds
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _M_M68K
+// specific overrides for M68K...
+#define AFXAPI __cdecl
+#define AFXOLEAPI __pascal
+#ifndef _AFX_NO_DEBUG_CRT
+ #define _AFX_NO_DEBUG_CRT
+#endif
+#endif //_M_M68K
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _M_MPPC
+// specific overrides for MPPC...
+#define AFXAPI __cdecl
+#endif //_M_MPPC
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _MIPS_
+// specific overrides for MIPS...
+#define _AFX_PACKING 8 // default MIPS alignment (required)
+#endif //_MIPS_
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _ALPHA_
+// specific overrides for ALPHA...
+#define _AFX_PACKING 8 // default AXP alignment (required)
+#ifdef _AFX_NO_DEBUG_CRT
+extern "C" void _BPT();
+#pragma intrinsic(_BPT)
+#define AfxDebugBreak() _BPT()
+#else
+#define AfxDebugBreak() _CrtDbgBreak()
+#endif
+#endif //_ALPHA_
+
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef _PPC_
+// specific overrides for PPC...
+#define _AFX_PACKING 8 // default PPC alignment (required)
+#endif //_PPC_
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxv_dll.h b/public/sdk/inc/mfc42/afxv_dll.h
new file mode 100644
index 000000000..b22778a5d
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxv_dll.h
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// special header for _AFXDLL variant.
+
+// default AFX_XXX_DATA and AFX_XXX_DATADEF macros for using MFC DLLs
+
+#ifndef AFX_CORE_DATA
+ #define AFX_CORE_DATA AFX_DATA_IMPORT
+ #define AFX_CORE_DATADEF
+#endif
+
+#ifndef AFX_OLE_DATA
+ #define AFX_OLE_DATA AFX_DATA_IMPORT
+ #define AFX_OLE_DATADEF
+#endif
+
+#ifndef AFX_DB_DATA
+ #define AFX_DB_DATA AFX_DATA_IMPORT
+ #define AFX_DB_DATADEF
+#endif
+
+#ifndef AFX_NET_DATA
+ #define AFX_NET_DATA AFX_DATA_IMPORT
+ #define AFX_NET_DATADEF
+#endif
+
+// default AFX_EXT_DATA and AFX_EXT_DATADEF macros for using or
+// creating MFC extension DLLs, depending on _AFX_EXT_IMPL
+// AFX_EXT_CLASS can be used to import or export entire classes
+// in an extension DLL without the hassle of creating a .DEF file
+// with decorated names.
+
+#ifndef AFX_EXT_DATA
+ #ifdef _AFXEXT
+ #define AFX_EXT_CLASS AFX_CLASS_EXPORT
+ #define AFX_EXT_API AFX_API_EXPORT
+ #define AFX_EXT_DATA AFX_DATA_EXPORT
+ #define AFX_EXT_DATADEF
+ #else
+ #define AFX_EXT_CLASS AFX_CLASS_IMPORT
+ #define AFX_EXT_API AFX_API_IMPORT
+ #define AFX_EXT_DATA AFX_DATA_IMPORT
+ #define AFX_EXT_DATADEF
+ #endif
+#endif
diff --git a/public/sdk/inc/mfc42/afxv_mac.h b/public/sdk/inc/mfc42/afxv_mac.h
new file mode 100644
index 000000000..099e55c23
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxv_mac.h
@@ -0,0 +1,52 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_mac.h - target version/configuration control for Macintosh OS
+
+#if !defined(_MAC)
+ #error afxv_mac.h is used only for Macintosh-targeted builds
+#endif
+
+#if !defined(_M_M68K) && !defined(_M_MPPC)
+ #error afxv_mac.h is used only for Motorola M68000 and Motorola PowerPC builds
+#endif
+
+#define SystemSevenOrLater 1
+
+#define _beginthreadex(p1, p2, p3, p4, p5, p6) NULL
+#define _endthreadex(p1)
+
+// wcslen is defined in wlm
+extern "C" size_t WINAPI wcslen(const wchar_t*);
+
+#ifdef _68K_
+ #define _AFX_NO_DEBUG_CRT
+ #define _AFX_NO_SOCKET_SUPPORT
+#endif
+
+#define _AFX_NO_SYNC_SUPPORT
+#define _AFX_NO_DAO_SUPPORT
+#define _AFX_NO_OCX_SUPPORT
+#define _AFX_NO_OCC_SUPPORT
+#define _AFX_NO_DOCOBJECT_SUPPORT
+#define _AFX_NO_ATLSERVER_SUPPORT
+#define OLE2ANSI
+
+#ifdef _AFX_NO_DEBUG_CRT
+#ifdef _68K_
+ pascal void _AfxDebugBreak(void) = 0xA9FF;
+ #define AfxDebugBreak() _AfxDebugBreak()
+#else
+ extern "C" pascal void Debugger(void);
+ #define AfxDebugBreak() Debugger()
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxv_w32.h b/public/sdk/inc/mfc42/afxv_w32.h
new file mode 100644
index 000000000..e97a5f210
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxv_w32.h
@@ -0,0 +1,208 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxv_w32.h - target version/configuration control for Win32
+
+#ifdef _WINDOWS_
+ #error WINDOWS.H already included. MFC apps must not #include <windows.h>
+#endif
+
+// STRICT is the only supported option (NOSTRICT is no longer supported)
+#ifndef STRICT
+#define STRICT 1
+#endif
+
+// certain parts of WINDOWS.H are necessary
+#undef NOKERNEL
+#undef NOGDI
+#undef NOUSER
+#undef NODRIVERS
+#undef NOLOGERROR
+#undef NOPROFILER
+#undef NOMEMMGR
+#undef NOLFILEIO
+#undef NOOPENFILE
+#undef NORESOURCE
+#undef NOATOM
+#undef NOLANGUAGE
+#undef NOLSTRING
+#undef NODBCS
+#undef NOKEYBOARDINFO
+#undef NOGDICAPMASKS
+#undef NOCOLOR
+#undef NOGDIOBJ
+#undef NODRAWTEXT
+#undef NOTEXTMETRIC
+#undef NOSCALABLEFONT
+#undef NOBITMAP
+#undef NORASTEROPS
+#undef NOMETAFILE
+#undef NOSYSMETRICS
+#undef NOSYSTEMPARAMSINFO
+#undef NOMSG
+#undef NOWINSTYLES
+#undef NOWINOFFSETS
+#undef NOSHOWWINDOW
+#undef NODEFERWINDOWPOS
+#undef NOVIRTUALKEYCODES
+#undef NOKEYSTATES
+#undef NOWH
+#undef NOMENUS
+#undef NOSCROLL
+#undef NOCLIPBOARD
+#undef NOICONS
+#undef NOMB
+#undef NOSYSCOMMANDS
+#undef NOMDI
+#undef NOCTLMGR
+#undef NOWINMESSAGES
+
+#ifndef WIN32
+#define WIN32
+#endif
+
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+
+#ifdef _UNICODE
+#ifndef UNICODE
+#define UNICODE // UNICODE is used by Windows headers
+#endif
+#endif
+
+#ifdef UNICODE
+#ifndef _UNICODE
+#define _UNICODE // _UNICODE is used by C-runtime/MFC headers
+#endif
+#endif
+
+#ifdef VC_EXTRALEAN
+#define WIN32_EXTRA_LEAN
+#define NOSERVICE
+#define NOMCX
+#define NOIME
+#define NOSOUND
+#define NOCOMM
+#define NOKANJI
+#define NORPC
+#define NOPROXYSTUB
+#define NOIMAGE
+#define NOTAPE
+
+#ifndef NO_ANSIUNI_ONLY
+#ifdef _UNICODE
+#define UNICODE_ONLY
+#else
+#define ANSI_ONLY
+#endif
+#endif //!NO_ANSIUNI_ONLY
+
+#endif //VC_EXTRALEAN
+
+#ifdef _MAC
+#define _WIN32NLS
+#define _WIN32REG
+#define _WLM_NOFORCE_LIBS
+#ifdef _AFXDLL
+#define _WLMDLL
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Turn off warnings for /W4
+// To resume any of these warning: #pragma warning(default: 4xxx)
+// which should be placed after the AFX include files
+
+#ifndef ALL_WARNINGS
+#pragma warning(disable: 4201) // winnt.h uses nameless structs
+#endif
+
+#include <windows.h>
+
+struct HKEY__;
+typedef struct HKEY__ *HKEY;
+
+#ifndef _INC_COMMCTRL
+ #include <commctrl.h>
+#endif
+
+#ifndef EXPORT
+#define EXPORT
+#endif
+
+#ifndef _INC_TCHAR
+ #include <tchar.h> // used for ANSI v.s. UNICODE abstraction
+#endif
+#ifdef _MBCS
+#ifndef _INC_MBCTYPE
+ #include <mbctype.h>
+#endif
+#ifndef _INC_MBSTRING
+ #include <mbstring.h>
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Now for the Windows API specific parts
+
+// WM_CTLCOLOR for 16 bit API compatability
+#define WM_CTLCOLOR 0x0019
+
+// Win32 uses macros with parameters for this, which breaks C++ code.
+#ifdef GetWindowTask
+#undef GetWindowTask
+inline HTASK GetWindowTask(HWND hWnd)
+ { return (HTASK)::GetWindowThreadProcessId(hWnd, NULL); }
+#endif
+
+// Win32 uses macros with parameters for this, which breaks C++ code.
+#ifdef GetNextWindow
+#undef GetNextWindow
+inline HWND GetNextWindow(HWND hWnd, UINT nDirection)
+ { return ::GetWindow(hWnd, nDirection); }
+#endif
+
+// Avoid Win95 mapping CToolBar::DrawState to DrawState[A/W]
+#ifdef DrawState
+#undef DrawState
+inline BOOL WINAPI DrawState(HDC hdc, HBRUSH hbr, DRAWSTATEPROC lpOutputFunc,
+ LPARAM lData, WPARAM wData, int x, int y, int cx, int cy, UINT fuFlags)
+#ifdef UNICODE
+ { return ::DrawStateW(hdc, hbr, lpOutputFunc, lData, wData, x, y, cx, cy,
+ fuFlags); }
+#else
+ { return ::DrawStateA(hdc, hbr, lpOutputFunc, lData, wData, x, y, cx, cy,
+ fuFlags); }
+#endif
+#endif
+
+// Avoid Win95 mapping CStatusBar::DrawStatusText to DrawStatusText[A/W]
+#ifdef DrawStatusText
+#undef DrawStatusText
+inline void WINAPI DrawStatusText(HDC hDC, LPRECT lprc, LPCTSTR szText,
+ UINT uFlags)
+#ifdef UNICODE
+ { ::DrawStatusTextW(hDC, lprc, szText, uFlags); }
+#else
+ { ::DrawStatusTextA(hDC, lprc, szText, uFlags); }
+#endif
+#endif
+
+#ifndef _MAC
+// FreeResource is not required except on Mac platforms
+#undef FreeResource
+inline BOOL WINAPI FreeResource(HGLOBAL) { return TRUE; }
+// UnlockResource is not required except on Mac platforms
+#undef UnlockResource
+inline int WINAPI UnlockResource(HGLOBAL) { return 0; }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxver_.h b/public/sdk/inc/mfc42/afxver_.h
new file mode 100644
index 000000000..7fb911948
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxver_.h
@@ -0,0 +1,327 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// afxver_.h - target version/configuration control
+
+/////////////////////////////////////////////////////////////////////////////
+// Master version numbers
+
+#define _AFX 1 // Microsoft Application Framework Classes
+#define _MFC_VER 0x0420 // Microsoft Foundation Classes version 4.20
+
+/////////////////////////////////////////////////////////////////////////////
+// Default swap tuning for AFX library
+
+#ifndef _68K_
+ #define _TEXTSEG(name) ".text$" #name
+#else
+ #define _TEXTSEG(name) #name, "swappable"
+#endif
+
+// Most segments are tuned via function order list (DLL version)
+#ifndef _AFX_FUNCTION_ORDER
+#define AFX_CORE1_SEG _TEXTSEG(AFX_CORE1) // core functionality
+#define AFX_CORE2_SEG _TEXTSEG(AFX_CORE2) // more core functionality
+#define AFX_CORE3_SEG _TEXTSEG(AFX_CORE3) // more core functionality
+#define AFX_CORE4_SEG _TEXTSEG(AFX_CORE4) // more core functionality
+#define AFX_AUX_SEG _TEXTSEG(AFX_AUX) // auxilliary functionality
+#define AFX_COLL_SEG _TEXTSEG(AFX_COL1) // collections
+#define AFX_COLL2_SEG _TEXTSEG(AFX_COL2) // more collections
+#define AFX_OLE_SEG _TEXTSEG(AFX_OLE1) // OLE support
+#define AFX_OLE2_SEG _TEXTSEG(AFX_OLE2) // more OLE support
+#define AFX_OLE3_SEG _TEXTSEG(AFX_OLE3) // and more OLE support
+#define AFX_OLE4_SEG _TEXTSEG(AFX_OLE4) // and more OLE support
+#define AFX_OLE5_SEG _TEXTSEG(AFX_OLE5) // and even more OLE support
+#define AFX_OLERA_SEG _TEXTSEG(AFX_OLERA) // (reserved for future use)
+#define AFX_PRINT_SEG _TEXTSEG(AFX_PRNT) // Printing functionality
+#define AFX_DBG1_SEG _TEXTSEG(AFX_DBG1) // inlines go here in _DEBUG
+#define AFX_DBG2_SEG _TEXTSEG(AFX_DBG2) // inlines go here in _DEBUG
+#define AFX_VDEL_SEG _TEXTSEG(AFX_VDEL) // vector deleting destructors
+#define AFX_TERM_SEG _TEXTSEG(AFX_TERM) // cleanup routines
+#define AFX_MAPI_SEG _TEXTSEG(AFX_MAPI) // simple MAPI support
+#define AFX_SOCK_SEG _TEXTSEG(AFX_SOCK) // windows sockets support
+#else
+#define AFX_CORE1_SEG // core functionality
+#define AFX_CORE2_SEG // more core functionality
+#define AFX_CORE3_SEG // more core functionality
+#define AFX_CORE4_SEG // more core functionality
+#define AFX_AUX_SEG // auxilliary functionality
+#define AFX_COLL_SEG // collections
+#define AFX_COLL2_SEG // more collections
+#define AFX_OLE_SEG // OLE support
+#define AFX_OLE2_SEG // more OLE support
+#define AFX_OLE3_SEG // and more OLE support
+#define AFX_OLE4_SEG // and more OLE support
+#define AFX_OLE5_SEG // and even more OLE support
+#define AFX_OLERA_SEG // (reserved for future use)
+#define AFX_PRINT_SEG // Printing functionality
+#define AFX_DBG1_SEG // inlines go here in _DEBUG
+#define AFX_DBG2_SEG // inlines go here in _DEBUG
+#define AFX_VDEL_SEG // vector deleting destructors
+#define AFX_TERM_SEG // cleanup routines
+#define AFX_MAPI_SEG // simple MAPI support
+#define AFX_SOCK_SEG // windows sockets support
+#endif
+
+// AFX_INIT_SEG is hand tuned even in DLL version
+#define AFX_INIT_SEG _TEXTSEG(AFX_INIT) // initialization
+
+/////////////////////////////////////////////////////////////////////////////
+// turn off reference tracking for certain often used symbols
+
+#ifndef _AFX_PORTABLE
+#pragma component(browser, off, references, "ASSERT")
+#pragma component(browser, off, references, "AfxAssertFailedLine")
+#pragma component(browser, off, references, "AfxDebugBreak")
+#pragma component(browser, off, references, "BOOL")
+#pragma component(browser, off, references, "BYTE")
+#pragma component(browser, off, references, "DECLSPEC_IMPORT")
+#pragma component(browser, off, references, "DWORD")
+#pragma component(browser, off, references, "FALSE")
+#pragma component(browser, off, references, "FAR")
+#pragma component(browser, off, references, "LPSTR")
+#pragma component(browser, off, references, "LPTSTR")
+#pragma component(browser, off, references, "LPCSTR")
+#pragma component(browser, off, references, "LPCTSTR")
+#pragma component(browser, off, references, "NULL")
+#pragma component(browser, off, references, "PASCAL")
+#pragma component(browser, off, references, "THIS_FILE")
+#pragma component(browser, off, references, "TRUE")
+#pragma component(browser, off, references, "UINT")
+#pragma component(browser, off, references, "WINAPI")
+#pragma component(browser, off, references, "WORD")
+#endif //!_AFX_PORTABLE
+
+/////////////////////////////////////////////////////////////////////////////
+// For target version (one of)
+// _CUSTOM : for custom configurations (causes afxv_cfg.h to be included)
+//
+// Additional build options:
+// _DEBUG debug versions (full diagnostics)
+// _AFXDLL use shared MFC DLL
+// _AFXEXT extension DLL version, implies _AFXDLL
+// _USRDLL create regular DLL (_AFXDLL is valid too)
+//
+
+#ifndef _DEBUG
+ #define _AFX_ENABLE_INLINES
+#endif
+
+#define _AFX_NO_NESTED_DERIVATION
+
+/////////////////////////////////////////////////////////////////////////////
+// Special configurations
+
+// _AFXEXT implies _AFXDLL
+#if defined(_AFXEXT) && !defined(_AFXDLL)
+ #define _AFXDLL
+#endif
+
+#if defined(_AFXDLL) && !defined(_DLL)
+ #error Please use the /MD switch for _AFXDLL builds
+#endif
+
+#ifndef _MAC
+#if defined(_AFXDLL) && !defined(_MT)
+ #error Please use the /MD switch (multithreaded DLL C-runtime)
+#endif
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// special include files
+
+#include <afxv_w32.h>
+
+// Include any non-Intel platform specific items
+#ifndef _X86_
+ #include <afxv_cpu.h>
+#endif
+
+// Include any non-Windows OS-specific items
+#ifdef _MAC
+ #include <afxv_mac.h>
+#endif
+
+#if defined(_X86_) || defined(_MAC)
+ #define _AFX_MINREBUILD
+#endif
+
+#ifdef _CUSTOM
+// Put any custom configuration items in afxv_cfg.h
+ #include <afxv_cfg.h>
+#endif
+
+// setup default packing value
+#ifndef _AFX_PACKING
+ #define _AFX_PACKING 4 // default packs structs at 4 bytes
+#endif
+
+#ifdef _AFXDLL
+ #include <afxv_dll.h>
+#endif
+
+// Define this virtual key for use by status bar
+#ifndef VK_KANA
+#define VK_KANA 0x15
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Special AfxDebugBreak: used to break into debugger at critical times
+
+#ifndef AfxDebugBreak
+#ifdef _AFX_NO_DEBUG_CRT
+// by default, debug break is asm int 3, or a call to DebugBreak, or nothing
+#if defined(_M_IX86) && !defined(_AFX_PORTABLE)
+#define AfxDebugBreak() _asm { int 3 }
+#else
+#define AfxDebugBreak() DebugBreak()
+#endif
+#else
+#define AfxDebugBreak() _CrtDbgBreak()
+#endif
+#endif
+
+#ifndef _DEBUG
+#ifdef AfxDebugBreak
+#undef AfxDebugBreak
+#endif
+#define AfxDebugBreak()
+#endif // _DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard preprocessor symbols if not already defined
+/////////////////////////////////////////////////////////////////////////////
+
+// SIZE_T_MAX is used by the collection classes
+#ifndef SIZE_T_MAX
+ #define SIZE_T_MAX UINT_MAX
+#endif
+
+// PASCAL is used for static member functions
+#ifndef PASCAL
+ #define PASCAL
+#endif
+
+// CDECL and EXPORT are defined in case WINDOWS.H doesn't
+#ifndef CDECL
+ #define CDECL __cdecl
+#endif
+
+#ifndef EXPORT
+ #define EXPORT
+#endif
+
+// UNALIGNED is used for unaligned data access (in CArchive mostly)
+#ifndef UNALIGNED
+ #define UNALIGNED
+#endif
+
+// AFXAPI is used on global public functions
+#ifndef AFXAPI
+ #define AFXAPI __stdcall
+#endif
+
+// AFXOLEAPI is used for some special OLE functions
+#ifndef AFXOLEAPI
+ #define AFXOLEAPI __stdcall
+#endif
+
+// AFX_CDECL is used for rare functions taking variable arguments
+#ifndef AFX_CDECL
+ #define AFX_CDECL __cdecl
+#endif
+
+// AFX_EXPORT is used for functions which need to be exported
+#ifndef AFX_EXPORT
+ #define AFX_EXPORT EXPORT
+#endif
+
+// The following macros are used to enable export/import
+
+// for data
+#ifndef AFX_DATA_EXPORT
+ #define AFX_DATA_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_DATA_IMPORT
+ #define AFX_DATA_IMPORT __declspec(dllimport)
+#endif
+
+// for classes
+#ifndef AFX_CLASS_EXPORT
+ #define AFX_CLASS_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_CLASS_IMPORT
+ #define AFX_CLASS_IMPORT __declspec(dllimport)
+#endif
+
+// for global APIs
+#ifndef AFX_API_EXPORT
+ #define AFX_API_EXPORT __declspec(dllexport)
+#endif
+#ifndef AFX_API_IMPORT
+ #define AFX_API_IMPORT __declspec(dllimport)
+#endif
+
+// The following macros are used on data declarations/definitions
+// (they are redefined for extension DLLs and the shared MFC DLL)
+#define AFX_DATA
+#define AFX_DATADEF
+
+// used when building the "core" MFC42.DLL
+#ifndef AFX_CORE_DATA
+ #define AFX_CORE_DATA
+ #define AFX_CORE_DATADEF
+#endif
+
+// used when building the MFC/OLE support MFCO42.DLL
+#ifndef AFX_OLE_DATA
+ #define AFX_OLE_DATA
+ #define AFX_OLE_DATADEF
+#endif
+
+// used when building the MFC/DB support MFCD42.DLL
+#ifndef AFX_DB_DATA
+ #define AFX_DB_DATA
+ #define AFX_DB_DATADEF
+#endif
+
+// used when building the MFC/NET support MFCN42.DLL
+#ifndef AFX_NET_DATA
+ #define AFX_NET_DATA
+ #define AFX_NET_DATADEF
+#endif
+
+// used when building extension DLLs
+#ifndef AFX_EXT_DATA
+ #define AFX_EXT_DATA
+ #define AFX_EXT_DATADEF
+ #define AFX_EXT_CLASS
+ #define AFX_EXT_API
+#endif
+
+// BASED_XXXX macros are provided for backward compatibility
+#ifndef BASED_CODE
+ #define BASED_CODE
+#endif
+
+#ifndef BASED_DEBUG
+ #define BASED_DEBUG
+#endif
+
+#ifndef BASED_STACK
+ #define BASED_STACK
+#endif
+
+// setup default code segment
+#ifdef AFX_DEF_SEG
+ #pragma code_seg(AFX_DEF_SEG)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxwin.h b/public/sdk/inc/mfc42/afxwin.h
new file mode 100644
index 000000000..9a173da99
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxwin.h
@@ -0,0 +1,4645 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXWIN_H__
+#ifndef RC_INVOKED
+#define __AFXWIN_H__
+
+/////////////////////////////////////////////////////////////////////////////
+// Make sure 'afx.h' is included first
+
+#ifndef __AFX_H__
+ #include <afx.h>
+#endif
+
+// Note: WINDOWS.H already included from AFXV_W32.H
+
+#ifndef _INC_SHELLAPI
+ #include <shellapi.h>
+#endif
+
+#ifndef __AFXRES_H__
+ #include <afxres.h> // standard resource IDs
+#endif
+
+#ifndef __AFXCOLL_H__
+ #include <afxcoll.h> // standard collections
+#endif
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, on)
+#endif
+
+#ifndef _AFX_NOFORCE_LIBS
+#pragma comment(lib, "uuid.lib")
+#endif
+
+#ifdef _INC_WINDOWSX
+// The following names from WINDOWSX.H collide with names in this header
+#undef SubclassWindow
+#undef CopyRgn
+#endif
+
+#ifdef _AFX_PACKING
+#pragma pack(push, _AFX_PACKING)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Classes declared in this file
+
+class CSize;
+class CPoint;
+class CRect;
+
+//CObject
+ //CException
+ //CSimpleException
+ class CResourceException;// Win resource failure exception
+ class CUserException; // Message Box alert and stop operation
+
+ class CGdiObject; // CDC drawing tool
+ class CPen; // a pen / HPEN wrapper
+ class CBrush; // a brush / HBRUSH wrapper
+ class CFont; // a font / HFONT wrapper
+ class CBitmap; // a bitmap / HBITMAP wrapper
+ class CPalette; // a palette / HPALLETE wrapper
+ class CRgn; // a region / HRGN wrapper
+
+ class CDC; // a Display Context / HDC wrapper
+ class CClientDC; // CDC for client of window
+ class CWindowDC; // CDC for entire window
+ class CPaintDC; // embeddable BeginPaint struct helper
+
+ class CMenu; // a menu / HMENU wrapper
+
+ class CCmdTarget; // a target for user commands
+ class CWnd; // a window / HWND wrapper
+ class CDialog; // a dialog
+
+ // standard windows controls
+ class CStatic; // Static control
+ class CButton; // Button control
+ class CListBox; // ListBox control
+ class CCheckListBox;// special listbox with checks
+ class CComboBox; // ComboBox control
+ class CEdit; // Edit control
+ class CScrollBar; // ScrollBar control
+
+ // frame windows
+ class CFrameWnd; // standard SDI frame
+ class CMDIFrameWnd; // standard MDI frame
+ class CMDIChildWnd; // standard MDI child
+ class CMiniFrameWnd;// half-height caption frame wnd
+
+ // views on a document
+ class CView; // a view on a document
+ class CScrollView; // a scrolling view
+
+ class CWinThread; // thread base class
+ class CWinApp; // application base class
+
+ class CDocTemplate; // template for document creation
+ class CSingleDocTemplate;// SDI support
+ class CMultiDocTemplate; // MDI support
+
+ class CDocument; // main document abstraction
+
+
+// Helper classes
+class CCmdUI; // Menu/button enabling
+class CDataExchange; // Data exchange and validation context
+class CCommandLineInfo; // CommandLine parsing helper
+class CDocManager; // CDocTemplate manager object
+
+/////////////////////////////////////////////////////////////////////////////
+
+// Type modifier for message handlers
+#ifndef afx_msg
+#define afx_msg // intentional placeholder
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA AFX_CORE_DATA
+
+/////////////////////////////////////////////////////////////////////////////
+// CSize - An extent, similar to Windows SIZE structure.
+
+class CSize : public tagSIZE
+{
+public:
+
+// Constructors
+ CSize();
+ CSize(int initCX, int initCY);
+ CSize(SIZE initSize);
+ CSize(POINT initPt);
+ CSize(DWORD dwSize);
+
+// Operations
+ BOOL operator==(SIZE size) const;
+ BOOL operator!=(SIZE size) const;
+ void operator+=(SIZE size);
+ void operator-=(SIZE size);
+
+// Operators returning CSize values
+ CSize operator+(SIZE size) const;
+ CSize operator-(SIZE size) const;
+ CSize operator-() const;
+
+// Operators returning CPoint values
+ CPoint operator+(POINT point) const;
+ CPoint operator-(POINT point) const;
+
+// Operators returning CRect values
+ CRect operator+(const RECT* lpRect) const;
+ CRect operator-(const RECT* lpRect) const;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CPoint - A 2-D point, similar to Windows POINT structure.
+
+class CPoint : public tagPOINT
+{
+public:
+
+// Constructors
+ CPoint();
+ CPoint(int initX, int initY);
+ CPoint(POINT initPt);
+ CPoint(SIZE initSize);
+ CPoint(DWORD dwPoint);
+
+// Operations
+ void Offset(int xOffset, int yOffset);
+ void Offset(POINT point);
+ void Offset(SIZE size);
+ BOOL operator==(POINT point) const;
+ BOOL operator!=(POINT point) const;
+ void operator+=(SIZE size);
+ void operator-=(SIZE size);
+ void operator+=(POINT point);
+ void operator-=(POINT point);
+
+// Operators returning CPoint values
+ CPoint operator+(SIZE size) const;
+ CPoint operator-(SIZE size) const;
+ CPoint operator-() const;
+ CPoint operator+(POINT point) const;
+
+// Operators returning CSize values
+ CSize operator-(POINT point) const;
+
+// Operators returning CRect values
+ CRect operator+(const RECT* lpRect) const;
+ CRect operator-(const RECT* lpRect) const;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CRect - A 2-D rectangle, similar to Windows RECT structure.
+
+typedef const RECT* LPCRECT; // pointer to read/only RECT
+
+class CRect : public tagRECT
+{
+public:
+
+// Constructors
+ CRect();
+ CRect(int l, int t, int r, int b);
+ CRect(const RECT& srcRect);
+ CRect(LPCRECT lpSrcRect);
+ CRect(POINT point, SIZE size);
+ CRect(POINT topLeft, POINT bottomRight);
+
+// Attributes (in addition to RECT members)
+ int Width() const;
+ int Height() const;
+ CSize Size() const;
+ CPoint& TopLeft();
+ CPoint& BottomRight();
+ const CPoint& TopLeft() const;
+ const CPoint& BottomRight() const;
+ CPoint CenterPoint() const;
+
+ // convert between CRect and LPRECT/LPCRECT (no need for &)
+ operator LPRECT();
+ operator LPCRECT() const;
+
+ BOOL IsRectEmpty() const;
+ BOOL IsRectNull() const;
+ BOOL PtInRect(POINT point) const;
+
+// Operations
+ void SetRect(int x1, int y1, int x2, int y2);
+ void SetRect(POINT topLeft, POINT bottomRight);
+ void SetRectEmpty();
+ void CopyRect(LPCRECT lpSrcRect);
+ BOOL EqualRect(LPCRECT lpRect) const;
+
+ void InflateRect(int x, int y);
+ void InflateRect(SIZE size);
+ void InflateRect(LPCRECT lpRect);
+ void InflateRect(int l, int t, int r, int b);
+ void DeflateRect(int x, int y);
+ void DeflateRect(SIZE size);
+ void DeflateRect(LPCRECT lpRect);
+ void DeflateRect(int l, int t, int r, int b);
+
+ void OffsetRect(int x, int y);
+ void OffsetRect(SIZE size);
+ void OffsetRect(POINT point);
+ void NormalizeRect();
+
+ // operations that fill '*this' with result
+ BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2);
+ BOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2);
+ BOOL SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2);
+
+// Additional Operations
+ void operator=(const RECT& srcRect);
+ BOOL operator==(const RECT& rect) const;
+ BOOL operator!=(const RECT& rect) const;
+ void operator+=(POINT point);
+ void operator+=(SIZE size);
+ void operator+=(LPCRECT lpRect);
+ void operator-=(POINT point);
+ void operator-=(SIZE size);
+ void operator-=(LPCRECT lpRect);
+ void operator&=(const RECT& rect);
+ void operator|=(const RECT& rect);
+
+// Operators returning CRect values
+ CRect operator+(POINT point) const;
+ CRect operator-(POINT point) const;
+ CRect operator+(LPCRECT lpRect) const;
+ CRect operator+(SIZE size) const;
+ CRect operator-(SIZE size) const;
+ CRect operator-(LPCRECT lpRect) const;
+ CRect operator&(const RECT& rect2) const;
+ CRect operator|(const RECT& rect2) const;
+ CRect MulDiv(int nMultiplier, int nDivisor) const;
+};
+
+#ifdef _DEBUG
+// Diagnostic Output
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, SIZE size);
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, POINT point);
+CDumpContext& AFXAPI operator<<(CDumpContext& dc, const RECT& rect);
+#endif //_DEBUG
+
+// Serialization
+CArchive& AFXAPI operator<<(CArchive& ar, SIZE size);
+CArchive& AFXAPI operator<<(CArchive& ar, POINT point);
+CArchive& AFXAPI operator<<(CArchive& ar, const RECT& rect);
+CArchive& AFXAPI operator>>(CArchive& ar, SIZE& size);
+CArchive& AFXAPI operator>>(CArchive& ar, POINT& point);
+CArchive& AFXAPI operator>>(CArchive& ar, RECT& rect);
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard exceptions
+
+class CResourceException : public CSimpleException // resource failure
+{
+ DECLARE_DYNAMIC(CResourceException)
+public:
+ CResourceException();
+
+// Implementation
+public:
+ CResourceException(BOOL bAutoDelete);
+ CResourceException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CResourceException();
+};
+
+class CUserException : public CSimpleException // general user visible alert
+{
+ DECLARE_DYNAMIC(CUserException)
+public:
+ CUserException();
+
+// Implementation
+public:
+ CUserException(BOOL bAutoDelete);
+ CUserException(BOOL bAutoDelete, UINT nResourceID);
+ virtual ~CUserException();
+};
+
+void AFXAPI AfxThrowResourceException();
+void AFXAPI AfxThrowUserException();
+
+/////////////////////////////////////////////////////////////////////////////
+// CGdiObject abstract class for CDC SelectObject
+
+class CGdiObject : public CObject
+{
+ DECLARE_DYNCREATE(CGdiObject)
+public:
+
+// Attributes
+ HGDIOBJ m_hObject; // must be first data member
+ operator HGDIOBJ() const;
+ HGDIOBJ GetSafeHandle() const;
+
+ static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HGDIOBJ hObject);
+ HGDIOBJ Detach();
+
+// Constructors
+ CGdiObject(); // must Create a derived class object
+ BOOL DeleteObject();
+
+// Operations
+ int GetObject(int nCount, LPVOID lpObject) const;
+ UINT GetObjectType() const;
+ BOOL CreateStockObject(int nIndex);
+ BOOL UnrealizeObject();
+
+// Implementation
+public:
+ virtual ~CGdiObject();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CGdiObject subclasses (drawing tools)
+
+class CPen : public CGdiObject
+{
+ DECLARE_DYNAMIC(CPen)
+
+public:
+ static CPen* PASCAL FromHandle(HPEN hPen);
+
+// Constructors
+ CPen();
+ CPen(int nPenStyle, int nWidth, COLORREF crColor);
+#ifndef _MAC
+ CPen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount = 0, const DWORD* lpStyle = NULL);
+#endif
+ BOOL CreatePen(int nPenStyle, int nWidth, COLORREF crColor);
+#ifndef _MAC
+ BOOL CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount = 0, const DWORD* lpStyle = NULL);
+#endif
+ BOOL CreatePenIndirect(LPLOGPEN lpLogPen);
+
+// Attributes
+ operator HPEN() const;
+ int GetLogPen(LOGPEN* pLogPen);
+#ifndef _MAC
+ int GetExtLogPen(EXTLOGPEN* pLogPen);
+#endif
+
+// Implementation
+public:
+ virtual ~CPen();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CBrush : public CGdiObject
+{
+ DECLARE_DYNAMIC(CBrush)
+
+public:
+ static CBrush* PASCAL FromHandle(HBRUSH hBrush);
+
+// Constructors
+ CBrush();
+ CBrush(COLORREF crColor); // CreateSolidBrush
+ CBrush(int nIndex, COLORREF crColor); // CreateHatchBrush
+ CBrush(CBitmap* pBitmap); // CreatePatternBrush
+
+ BOOL CreateSolidBrush(COLORREF crColor);
+ BOOL CreateHatchBrush(int nIndex, COLORREF crColor);
+ BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);
+ BOOL CreatePatternBrush(CBitmap* pBitmap);
+ BOOL CreateDIBPatternBrush(HGLOBAL hPackedDIB, UINT nUsage);
+ BOOL CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage);
+ BOOL CreateSysColorBrush(int nIndex);
+
+// Attributes
+ operator HBRUSH() const;
+ int GetLogBrush(LOGBRUSH* pLogBrush);
+
+// Implementation
+public:
+ virtual ~CBrush();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CFont : public CGdiObject
+{
+ DECLARE_DYNAMIC(CFont)
+
+public:
+ static CFont* PASCAL FromHandle(HFONT hFont);
+
+// Constructors
+ CFont();
+ BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
+ BOOL CreateFont(int nHeight, int nWidth, int nEscapement,
+ int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline,
+ BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
+ BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily,
+ LPCTSTR lpszFacename);
+ BOOL CreatePointFont(int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL);
+ BOOL CreatePointFontIndirect(const LOGFONT* lpLogFont, CDC* pDC = NULL);
+
+// Attributes
+ operator HFONT() const;
+ int GetLogFont(LOGFONT* pLogFont);
+
+// Implementation
+public:
+ virtual ~CFont();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CBitmap : public CGdiObject
+{
+ DECLARE_DYNAMIC(CBitmap)
+
+public:
+ static CBitmap* PASCAL FromHandle(HBITMAP hBitmap);
+
+// Constructors
+ CBitmap();
+
+ BOOL LoadBitmap(LPCTSTR lpszResourceName);
+ BOOL LoadBitmap(UINT nIDResource);
+#ifndef _MAC
+ BOOL LoadOEMBitmap(UINT nIDBitmap); // for OBM_/OCR_/OIC_
+#endif
+ BOOL LoadMappedBitmap(UINT nIDBitmap, UINT nFlags = 0,
+ LPCOLORMAP lpColorMap = NULL, int nMapSize = 0);
+ BOOL CreateBitmap(int nWidth, int nHeight, UINT nPlanes, UINT nBitcount,
+ const void* lpBits);
+ BOOL CreateBitmapIndirect(LPBITMAP lpBitmap);
+ BOOL CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight);
+ BOOL CreateDiscardableBitmap(CDC* pDC, int nWidth, int nHeight);
+
+// Attributes
+ operator HBITMAP() const;
+ int GetBitmap(BITMAP* pBitMap);
+
+// Operations
+ DWORD SetBitmapBits(DWORD dwCount, const void* lpBits);
+ DWORD GetBitmapBits(DWORD dwCount, LPVOID lpBits) const;
+ CSize SetBitmapDimension(int nWidth, int nHeight);
+ CSize GetBitmapDimension() const;
+
+// Implementation
+public:
+ virtual ~CBitmap();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CPalette : public CGdiObject
+{
+ DECLARE_DYNAMIC(CPalette)
+
+public:
+ static CPalette* PASCAL FromHandle(HPALETTE hPalette);
+
+// Constructors
+ CPalette();
+ BOOL CreatePalette(LPLOGPALETTE lpLogPalette);
+#ifndef _MAC
+ BOOL CreateHalftonePalette(CDC* pDC);
+#endif
+
+// Attributes
+ operator HPALETTE() const;
+ int GetEntryCount();
+ UINT GetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors) const;
+ UINT SetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors);
+
+// Operations
+#ifndef _MAC
+ void AnimatePalette(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors);
+#endif
+ UINT GetNearestPaletteIndex(COLORREF crColor) const;
+ BOOL ResizePalette(UINT nNumEntries);
+
+// Implementation
+ virtual ~CPalette();
+};
+
+class CRgn : public CGdiObject
+{
+ DECLARE_DYNAMIC(CRgn)
+
+public:
+ static CRgn* PASCAL FromHandle(HRGN hRgn);
+ operator HRGN() const;
+
+// Constructors
+ CRgn();
+ BOOL CreateRectRgn(int x1, int y1, int x2, int y2);
+ BOOL CreateRectRgnIndirect(LPCRECT lpRect);
+ BOOL CreateEllipticRgn(int x1, int y1, int x2, int y2);
+ BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);
+ BOOL CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode);
+#ifndef _MAC
+ BOOL CreatePolyPolygonRgn(LPPOINT lpPoints, LPINT lpPolyCounts,
+ int nCount, int nPolyFillMode);
+#endif
+ BOOL CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3);
+#ifndef _MAC
+ BOOL CreateFromPath(CDC* pDC);
+ BOOL CreateFromData(const XFORM* lpXForm, int nCount,
+ const RGNDATA* pRgnData);
+#endif
+
+// Operations
+ void SetRectRgn(int x1, int y1, int x2, int y2);
+ void SetRectRgn(LPCRECT lpRect);
+ int CombineRgn(CRgn* pRgn1, CRgn* pRgn2, int nCombineMode);
+ int CopyRgn(CRgn* pRgnSrc);
+ BOOL EqualRgn(CRgn* pRgn) const;
+ int OffsetRgn(int x, int y);
+ int OffsetRgn(POINT point);
+ int GetRgnBox(LPRECT lpRect) const;
+ BOOL PtInRegion(int x, int y) const;
+ BOOL PtInRegion(POINT point) const;
+ BOOL RectInRegion(LPCRECT lpRect) const;
+#ifndef _MAC
+ int GetRegionData(LPRGNDATA lpRgnData, int nCount) const;
+#endif
+
+// Implementation
+ virtual ~CRgn();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// The device context
+
+class CDC : public CObject
+{
+ DECLARE_DYNCREATE(CDC)
+public:
+
+// Attributes
+ HDC m_hDC; // The output DC (must be first data member)
+ HDC m_hAttribDC; // The Attribute DC
+ operator HDC() const;
+ HDC GetSafeHdc() const; // Always returns the Output DC
+#ifndef _MAC
+ CWnd* GetWindow() const;
+#endif
+
+ static CDC* PASCAL FromHandle(HDC hDC);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HDC hDC); // Attach/Detach affects only the Output DC
+ HDC Detach();
+
+ virtual void SetAttribDC(HDC hDC); // Set the Attribute DC
+ virtual void SetOutputDC(HDC hDC); // Set the Output DC
+ virtual void ReleaseAttribDC(); // Release the Attribute DC
+ virtual void ReleaseOutputDC(); // Release the Output DC
+
+ BOOL IsPrinting() const; // TRUE if being used for printing
+
+ CPen* GetCurrentPen() const;
+ CBrush* GetCurrentBrush() const;
+ CPalette* GetCurrentPalette() const;
+ CFont* GetCurrentFont() const;
+ CBitmap* GetCurrentBitmap() const;
+
+// Constructors
+ CDC();
+ BOOL CreateDC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
+ LPCTSTR lpszOutput, const void* lpInitData);
+ BOOL CreateIC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
+ LPCTSTR lpszOutput, const void* lpInitData);
+ BOOL CreateCompatibleDC(CDC* pDC);
+
+ BOOL DeleteDC();
+
+// Device-Context Functions
+ virtual int SaveDC();
+ virtual BOOL RestoreDC(int nSavedDC);
+ int GetDeviceCaps(int nIndex) const;
+#ifndef _MAC
+ UINT SetBoundsRect(LPCRECT lpRectBounds, UINT flags);
+ UINT GetBoundsRect(LPRECT lpRectBounds, UINT flags);
+#endif
+ BOOL ResetDC(const DEVMODE* lpDevMode);
+
+// Drawing-Tool Functions
+ CPoint GetBrushOrg() const;
+ CPoint SetBrushOrg(int x, int y);
+ CPoint SetBrushOrg(POINT point);
+ int EnumObjects(int nObjectType,
+ int (CALLBACK* lpfn)(LPVOID, LPARAM), LPARAM lpData);
+
+// Type-safe selection helpers
+public:
+ virtual CGdiObject* SelectStockObject(int nIndex);
+ CPen* SelectObject(CPen* pPen);
+ CBrush* SelectObject(CBrush* pBrush);
+ virtual CFont* SelectObject(CFont* pFont);
+ CBitmap* SelectObject(CBitmap* pBitmap);
+ int SelectObject(CRgn* pRgn); // special return for regions
+ CGdiObject* SelectObject(CGdiObject* pObject);
+ // CGdiObject* provided so compiler doesn't use SelectObject(HGDIOBJ)
+
+// Color and Color Palette Functions
+ COLORREF GetNearestColor(COLORREF crColor) const;
+ CPalette* SelectPalette(CPalette* pPalette, BOOL bForceBackground);
+ UINT RealizePalette();
+ void UpdateColors();
+
+// Drawing-Attribute Functions
+ COLORREF GetBkColor() const;
+ int GetBkMode() const;
+ int GetPolyFillMode() const;
+ int GetROP2() const;
+ int GetStretchBltMode() const;
+ COLORREF GetTextColor() const;
+
+ virtual COLORREF SetBkColor(COLORREF crColor);
+ int SetBkMode(int nBkMode);
+ int SetPolyFillMode(int nPolyFillMode);
+ int SetROP2(int nDrawMode);
+ int SetStretchBltMode(int nStretchMode);
+ virtual COLORREF SetTextColor(COLORREF crColor);
+
+#ifndef _MAC
+ BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
+ BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
+#endif
+
+// Mapping Functions
+ int GetMapMode() const;
+ CPoint GetViewportOrg() const;
+ virtual int SetMapMode(int nMapMode);
+ // Viewport Origin
+ virtual CPoint SetViewportOrg(int x, int y);
+ CPoint SetViewportOrg(POINT point);
+ virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
+
+ // Viewport Extent
+ CSize GetViewportExt() const;
+ virtual CSize SetViewportExt(int cx, int cy);
+ CSize SetViewportExt(SIZE size);
+ virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
+
+ // Window Origin
+ CPoint GetWindowOrg() const;
+ CPoint SetWindowOrg(int x, int y);
+ CPoint SetWindowOrg(POINT point);
+ CPoint OffsetWindowOrg(int nWidth, int nHeight);
+
+ // Window extent
+ CSize GetWindowExt() const;
+ virtual CSize SetWindowExt(int cx, int cy);
+ CSize SetWindowExt(SIZE size);
+ virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
+
+// Coordinate Functions
+ void DPtoLP(LPPOINT lpPoints, int nCount = 1) const;
+ void DPtoLP(LPRECT lpRect) const;
+ void DPtoLP(LPSIZE lpSize) const;
+ void LPtoDP(LPPOINT lpPoints, int nCount = 1) const;
+ void LPtoDP(LPRECT lpRect) const;
+ void LPtoDP(LPSIZE lpSize) const;
+
+// Special Coordinate Functions (useful for dealing with metafiles and OLE)
+ void DPtoHIMETRIC(LPSIZE lpSize) const;
+ void LPtoHIMETRIC(LPSIZE lpSize) const;
+ void HIMETRICtoDP(LPSIZE lpSize) const;
+ void HIMETRICtoLP(LPSIZE lpSize) const;
+
+// Region Functions
+ BOOL FillRgn(CRgn* pRgn, CBrush* pBrush);
+ BOOL FrameRgn(CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight);
+ BOOL InvertRgn(CRgn* pRgn);
+ BOOL PaintRgn(CRgn* pRgn);
+
+// Clipping Functions
+ virtual int GetClipBox(LPRECT lpRect) const;
+ virtual BOOL PtVisible(int x, int y) const;
+ BOOL PtVisible(POINT point) const;
+ virtual BOOL RectVisible(LPCRECT lpRect) const;
+ int SelectClipRgn(CRgn* pRgn);
+ int ExcludeClipRect(int x1, int y1, int x2, int y2);
+ int ExcludeClipRect(LPCRECT lpRect);
+ int ExcludeUpdateRgn(CWnd* pWnd);
+ int IntersectClipRect(int x1, int y1, int x2, int y2);
+ int IntersectClipRect(LPCRECT lpRect);
+ int OffsetClipRgn(int x, int y);
+ int OffsetClipRgn(SIZE size);
+#ifndef _MAC
+ int SelectClipRgn(CRgn* pRgn, int nMode);
+#endif
+
+// Line-Output Functions
+ CPoint GetCurrentPosition() const;
+ CPoint MoveTo(int x, int y);
+ CPoint MoveTo(POINT point);
+ BOOL LineTo(int x, int y);
+ BOOL LineTo(POINT point);
+ BOOL Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ BOOL Polyline(LPPOINT lpPoints, int nCount);
+
+#ifndef _MAC
+ BOOL AngleArc(int x, int y, int nRadius, float fStartAngle, float fSweepAngle);
+ BOOL ArcTo(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ int GetArcDirection() const;
+ int SetArcDirection(int nArcDirection);
+
+ BOOL PolyDraw(const POINT* lpPoints, const BYTE* lpTypes, int nCount);
+ BOOL PolylineTo(const POINT* lpPoints, int nCount);
+ BOOL PolyPolyline(const POINT* lpPoints,
+ const DWORD* lpPolyPoints, int nCount);
+
+ BOOL PolyBezier(const POINT* lpPoints, int nCount);
+ BOOL PolyBezierTo(const POINT* lpPoints, int nCount);
+#endif
+
+// Simple Drawing Functions
+ void FillRect(LPCRECT lpRect, CBrush* pBrush);
+ void FrameRect(LPCRECT lpRect, CBrush* pBrush);
+ void InvertRect(LPCRECT lpRect);
+ BOOL DrawIcon(int x, int y, HICON hIcon);
+ BOOL DrawIcon(POINT point, HICON hIcon);
+#if (WINVER >= 0x400)
+#ifndef _MAC
+ BOOL DrawState(CPoint pt, CSize size, HBITMAP hBitmap, UINT nFlags,
+ HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, CBitmap* pBitmap, UINT nFlags,
+ CBrush* pBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags,
+ HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags,
+ CBrush* pBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags,
+ BOOL bPrefixText = TRUE, int nTextLen = 0, HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags,
+ BOOL bPrefixText = TRUE, int nTextLen = 0, CBrush* pBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc,
+ LPARAM lData, UINT nFlags, HBRUSH hBrush = NULL);
+ BOOL DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc,
+ LPARAM lData, UINT nFlags, CBrush* pBrush = NULL);
+#endif
+#endif
+
+// Ellipse and Polygon Functions
+#ifndef _MAC
+ BOOL Chord(int x1, int y1, int x2, int y2, int x3, int y3,
+ int x4, int y4);
+ BOOL Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+#endif
+ void DrawFocusRect(LPCRECT lpRect);
+ BOOL Ellipse(int x1, int y1, int x2, int y2);
+ BOOL Ellipse(LPCRECT lpRect);
+ BOOL Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+ BOOL Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
+ BOOL Polygon(LPPOINT lpPoints, int nCount);
+#ifndef _MAC
+ BOOL PolyPolygon(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount);
+#endif
+ BOOL Rectangle(int x1, int y1, int x2, int y2);
+ BOOL Rectangle(LPCRECT lpRect);
+ BOOL RoundRect(int x1, int y1, int x2, int y2, int x3, int y3);
+ BOOL RoundRect(LPCRECT lpRect, POINT point);
+
+// Bitmap Functions
+ BOOL PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop);
+ BOOL BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, DWORD dwRop);
+ BOOL StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop);
+ COLORREF GetPixel(int x, int y) const;
+ COLORREF GetPixel(POINT point) const;
+ COLORREF SetPixel(int x, int y, COLORREF crColor);
+ COLORREF SetPixel(POINT point, COLORREF crColor);
+#ifndef _MAC
+ BOOL FloodFill(int x, int y, COLORREF crColor);
+ BOOL ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType);
+ BOOL MaskBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask,
+ DWORD dwRop);
+ BOOL PlgBlt(LPPOINT lpPoint, CDC* pSrcDC, int xSrc, int ySrc,
+ int nWidth, int nHeight, CBitmap& maskBitmap, int xMask, int yMask);
+ BOOL SetPixelV(int x, int y, COLORREF crColor);
+ BOOL SetPixelV(POINT point, COLORREF crColor);
+#endif
+
+// Text Functions
+ virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
+ BOOL TextOut(int x, int y, const CString& str);
+ virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
+ BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths);
+ virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ CSize TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
+ virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat);
+ int DrawText(const CString& str, LPRECT lpRect, UINT nFormat);
+ CSize GetTextExtent(LPCTSTR lpszString, int nCount) const;
+ CSize GetTextExtent(const CString& str) const;
+ CSize GetOutputTextExtent(LPCTSTR lpszString, int nCount) const;
+ CSize GetOutputTextExtent(const CString& str) const;
+ CSize GetTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ CSize GetTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ CSize GetOutputTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ CSize GetOutputTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const;
+ virtual BOOL GrayString(CBrush* pBrush,
+ BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int), LPARAM lpData,
+ int nCount, int x, int y, int nWidth, int nHeight);
+ UINT GetTextAlign() const;
+ UINT SetTextAlign(UINT nFlags);
+ int GetTextFace(int nCount, LPTSTR lpszFacename) const;
+ int GetTextFace(CString& rString) const;
+ BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
+ BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
+#ifndef _MAC
+ int SetTextJustification(int nBreakExtra, int nBreakCount);
+#endif
+ int GetTextCharacterExtra() const;
+ int SetTextCharacterExtra(int nCharExtra);
+
+// Advanced Drawing
+#if (WINVER >= 0x400)
+#ifndef _MAC
+ BOOL DrawEdge(LPRECT lpRect, UINT nEdge, UINT nFlags);
+ BOOL DrawFrameControl(LPRECT lpRect, UINT nType, UINT nState);
+#endif
+#endif
+
+// Scrolling Functions
+ BOOL ScrollDC(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* pRgnUpdate, LPRECT lpRectUpdate);
+
+// Font Functions
+ BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
+ BOOL GetOutputCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
+ DWORD SetMapperFlags(DWORD dwFlag);
+ CSize GetAspectRatioFilter() const;
+
+ BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const;
+ DWORD GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData, DWORD cbData) const;
+#ifndef _MAC
+ int GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const;
+#endif
+ UINT GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const;
+#ifndef _MAC
+ DWORD GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm,
+ DWORD cbBuffer, LPVOID lpBuffer, const MAT2* lpmat2) const;
+#endif
+
+#ifndef _MAC
+ BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar,
+ LPABCFLOAT lpABCF) const;
+ BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar,
+ float* lpFloatBuffer) const;
+#endif
+
+// Printer/Device Escape Functions
+ virtual int Escape(int nEscape, int nCount,
+ LPCSTR lpszInData, LPVOID lpOutData);
+#ifndef _MAC
+ int Escape(int nEscape, int nInputSize, LPCSTR lpszInputData,
+ int nOutputSize, LPSTR lpszOutputData);
+ int DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData);
+#endif
+
+ // Escape helpers
+ int StartDoc(LPCTSTR lpszDocName); // old Win3.0 version
+ int StartDoc(LPDOCINFO lpDocInfo);
+ int StartPage();
+ int EndPage();
+ int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
+ int AbortDoc();
+ int EndDoc();
+
+// MetaFile Functions
+ BOOL PlayMetaFile(HMETAFILE hMF);
+#ifndef _MAC
+ BOOL PlayMetaFile(HENHMETAFILE hEnhMetaFile, LPCRECT lpBounds);
+ BOOL AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData);
+ // can be used for enhanced metafiles only
+
+// Path Functions
+ BOOL AbortPath();
+ BOOL BeginPath();
+ BOOL CloseFigure();
+ BOOL EndPath();
+ BOOL FillPath();
+ BOOL FlattenPath();
+ BOOL StrokeAndFillPath();
+ BOOL StrokePath();
+ BOOL WidenPath();
+ float GetMiterLimit() const;
+ BOOL SetMiterLimit(float fMiterLimit);
+ int GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const;
+ BOOL SelectClipPath(int nMode);
+#endif
+
+// Misc Helper Functions
+ static CBrush* PASCAL GetHalftoneBrush();
+ void DrawDragRect(LPCRECT lpRect, SIZE size,
+ LPCRECT lpRectLast, SIZE sizeLast,
+ CBrush* pBrush = NULL, CBrush* pBrushLast = NULL);
+ void FillSolidRect(LPCRECT lpRect, COLORREF clr);
+ void FillSolidRect(int x, int y, int cx, int cy, COLORREF clr);
+ void Draw3dRect(LPCRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomRight);
+ void Draw3dRect(int x, int y, int cx, int cy,
+ COLORREF clrTopLeft, COLORREF clrBottomRight);
+
+// Implementation
+public:
+ virtual ~CDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ // advanced use and implementation
+ BOOL m_bPrinting;
+ HGDIOBJ SelectObject(HGDIOBJ); // do not use for regions
+
+protected:
+ // used for implementation of non-virtual SelectObject calls
+ static CGdiObject* PASCAL SelectGdiObject(HDC hDC, HGDIOBJ h);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDC Helpers
+
+class CPaintDC : public CDC
+{
+ DECLARE_DYNAMIC(CPaintDC)
+
+// Constructors
+public:
+ CPaintDC(CWnd* pWnd); // BeginPaint
+
+// Attributes
+protected:
+ HWND m_hWnd;
+public:
+ PAINTSTRUCT m_ps; // actual paint struct!
+
+// Implementation
+public:
+ virtual ~CPaintDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CClientDC : public CDC
+{
+ DECLARE_DYNAMIC(CClientDC)
+
+// Constructors
+public:
+ CClientDC(CWnd* pWnd);
+
+// Attributes
+protected:
+ HWND m_hWnd;
+
+// Implementation
+public:
+ virtual ~CClientDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+class CWindowDC : public CDC
+{
+ DECLARE_DYNAMIC(CWindowDC)
+
+// Constructors
+public:
+ CWindowDC(CWnd* pWnd);
+
+// Attributes
+protected:
+ HWND m_hWnd;
+
+// Implementation
+public:
+ virtual ~CWindowDC();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMenu
+
+class CMenu : public CObject
+{
+ DECLARE_DYNCREATE(CMenu)
+public:
+
+// Constructors
+ CMenu();
+
+ BOOL CreateMenu();
+ BOOL CreatePopupMenu();
+ BOOL LoadMenu(LPCTSTR lpszResourceName);
+ BOOL LoadMenu(UINT nIDResource);
+ BOOL LoadMenuIndirect(const void* lpMenuTemplate);
+ BOOL DestroyMenu();
+
+// Attributes
+ HMENU m_hMenu; // must be first data member
+ HMENU GetSafeHmenu() const;
+ operator HMENU() const;
+
+ static CMenu* PASCAL FromHandle(HMENU hMenu);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HMENU hMenu);
+ HMENU Detach();
+
+// CMenu Operations
+ BOOL DeleteMenu(UINT nPosition, UINT nFlags);
+ BOOL TrackPopupMenu(UINT nFlags, int x, int y,
+ CWnd* pWnd, LPCRECT lpRect = 0);
+
+// CMenuItem Operations
+ BOOL AppendMenu(UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL AppendMenu(UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp);
+ UINT CheckMenuItem(UINT nIDCheckItem, UINT nCheck);
+ UINT EnableMenuItem(UINT nIDEnableItem, UINT nEnable);
+ UINT GetMenuItemCount() const;
+ UINT GetMenuItemID(int nPos) const;
+ UINT GetMenuState(UINT nID, UINT nFlags) const;
+ int GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount,
+ UINT nFlags) const;
+ int GetMenuString(UINT nIDItem, CString& rString, UINT nFlags) const;
+ CMenu* GetSubMenu(int nPos) const;
+ BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ const CBitmap* pBmp);
+ BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem = 0,
+ LPCTSTR lpszNewItem = NULL);
+ BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ const CBitmap* pBmp);
+ BOOL RemoveMenu(UINT nPosition, UINT nFlags);
+ BOOL SetMenuItemBitmaps(UINT nPosition, UINT nFlags,
+ const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked);
+#ifndef _MAC
+ BOOL CheckMenuRadioItem(UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags);
+#endif
+
+// Context Help Functions
+#ifndef _MAC
+ BOOL SetMenuContextHelpId(DWORD dwContextHelpId);
+ DWORD GetMenuContextHelpId() const;
+#endif
+
+// Overridables (must override draw and measure for owner-draw menu items)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+
+// Implementation
+public:
+ virtual ~CMenu();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ static CMenu* PASCAL CMenu::FromHandlePermanent(HMENU hMenu);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Window message map handling
+
+struct AFX_MSGMAP_ENTRY; // declared below after CWnd
+
+struct AFX_MSGMAP
+{
+#ifdef _AFXDLL
+ const AFX_MSGMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_MSGMAP* pBaseMap;
+#endif
+ const AFX_MSGMAP_ENTRY* lpEntries;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_MESSAGE_MAP() \
+private: \
+ static const AFX_MSGMAP_ENTRY _messageEntries[]; \
+protected: \
+ static AFX_DATA const AFX_MSGMAP messageMap; \
+ static const AFX_MSGMAP* PASCAL _GetBaseMessageMap(); \
+ virtual const AFX_MSGMAP* GetMessageMap() const; \
+
+#else
+#define DECLARE_MESSAGE_MAP() \
+private: \
+ static const AFX_MSGMAP_ENTRY _messageEntries[]; \
+protected: \
+ static AFX_DATA const AFX_MSGMAP messageMap; \
+ virtual const AFX_MSGMAP* GetMessageMap() const; \
+
+#endif
+
+#ifdef _AFXDLL
+#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
+ const AFX_MSGMAP* PASCAL theClass::_GetBaseMessageMap() \
+ { return &baseClass::messageMap; } \
+ const AFX_MSGMAP* theClass::GetMessageMap() const \
+ { return &theClass::messageMap; } \
+ AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
+ { &theClass::_GetBaseMessageMap, &theClass::_messageEntries[0] }; \
+ const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
+ { \
+
+#else
+#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
+ const AFX_MSGMAP* theClass::GetMessageMap() const \
+ { return &theClass::messageMap; } \
+ AFX_DATADEF const AFX_MSGMAP theClass::messageMap = \
+ { &baseClass::messageMap, &theClass::_messageEntries[0] }; \
+ const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
+ { \
+
+#endif
+
+#define END_MESSAGE_MAP() \
+ {0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
+ }; \
+
+// Message map signature values and macros in separate header
+#include <afxmsg_.h>
+
+/////////////////////////////////////////////////////////////////////////////
+// Dialog data exchange (DDX_) and validation (DDV_)
+
+// CDataExchange - for data exchange and validation
+class CDataExchange
+{
+// Attributes
+public:
+ BOOL m_bSaveAndValidate; // TRUE => save and validate data
+ CWnd* m_pDlgWnd; // container usually a dialog
+
+// Operations (for implementors of DDX and DDV procs)
+ HWND PrepareCtrl(int nIDC); // return HWND of control
+ HWND PrepareEditCtrl(int nIDC); // return HWND of control
+ void Fail(); // will throw exception
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ CWnd* PrepareOleCtrl(int nIDC); // for OLE controls in dialog
+#endif
+
+// Implementation
+ CDataExchange(CWnd* pDlgWnd, BOOL bSaveAndValidate);
+
+ HWND m_hWndLastControl; // last control used (for validation)
+ BOOL m_bEditLastControl; // last control was an edit item
+};
+
+#include <afxdd_.h> // standard DDX_ and DDV_ routines
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE types
+
+typedef LONG HRESULT;
+
+struct IUnknown;
+typedef IUnknown* LPUNKNOWN;
+
+struct IDispatch;
+typedef IDispatch* LPDISPATCH;
+
+struct IConnectionPoint;
+typedef IConnectionPoint* LPCONNECTIONPOINT;
+
+struct IEnumOLEVERB;
+typedef IEnumOLEVERB* LPENUMOLEVERB;
+
+typedef struct _GUID GUID;
+typedef GUID IID;
+typedef GUID CLSID;
+#ifndef _REFCLSID_DEFINED
+#define REFCLSID const CLSID &
+#endif
+
+typedef long DISPID;
+typedef unsigned short VARTYPE;
+typedef long SCODE;
+
+#if defined(WIN32) && !defined(OLE2ANSI)
+typedef WCHAR OLECHAR;
+#else
+typedef char OLECHAR;
+#endif
+typedef OLECHAR* BSTR;
+
+struct tagDISPPARAMS;
+typedef tagDISPPARAMS DISPPARAMS;
+
+struct tagVARIANT;
+typedef tagVARIANT VARIANT;
+
+struct ITypeInfo;
+typedef ITypeInfo* LPTYPEINFO;
+
+struct ITypeLib;
+typedef ITypeLib* LPTYPELIB;
+
+/////////////////////////////////////////////////////////////////////////////
+// CCmdTarget
+
+// private structures
+struct AFX_CMDHANDLERINFO; // info about where the command is handled
+struct AFX_EVENT; // info about an event
+class CTypeLibCache; // cache for OLE type libraries
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE interface map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_INTERFACEMAP_ENTRY
+{
+ const void* piid; // the interface id (IID) (NULL for aggregate)
+ size_t nOffset; // offset of the interface vtable from m_unknown
+};
+
+struct AFX_INTERFACEMAP
+{
+#ifdef _AFXDLL
+ const AFX_INTERFACEMAP* (PASCAL* pfnGetBaseMap)(); // NULL is root class
+#else
+ const AFX_INTERFACEMAP* pBaseMap;
+#endif
+ const AFX_INTERFACEMAP_ENTRY* pEntry; // map for this class
+};
+
+
+#ifdef _AFXDLL
+#define DECLARE_INTERFACE_MAP() \
+private: \
+ static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
+protected: \
+ static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \
+ static const AFX_INTERFACEMAP* PASCAL _GetBaseInterfaceMap(); \
+ virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \
+
+#else
+#define DECLARE_INTERFACE_MAP() \
+private: \
+ static const AFX_INTERFACEMAP_ENTRY _interfaceEntries[]; \
+protected: \
+ static AFX_DATA const AFX_INTERFACEMAP interfaceMap; \
+ virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE dispatch map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_DISPMAP_ENTRY;
+
+struct AFX_DISPMAP
+{
+#ifdef _AFXDLL
+ const AFX_DISPMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_DISPMAP* pBaseMap;
+#endif
+ const AFX_DISPMAP_ENTRY* lpEntries;
+ UINT* lpEntryCount;
+ DWORD* lpStockPropMask;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_DISPATCH_MAP() \
+private: \
+ static const AFX_DISPMAP_ENTRY _dispatchEntries[]; \
+ static UINT _dispatchEntryCount; \
+ static DWORD _dwStockPropMask; \
+protected: \
+ static AFX_DATA const AFX_DISPMAP dispatchMap; \
+ static const AFX_DISPMAP* PASCAL _GetBaseDispatchMap(); \
+ virtual const AFX_DISPMAP* GetDispatchMap() const; \
+
+#else
+#define DECLARE_DISPATCH_MAP() \
+private: \
+ static const AFX_DISPMAP_ENTRY _dispatchEntries[]; \
+ static UINT _dispatchEntryCount; \
+ static DWORD _dwStockPropMask; \
+protected: \
+ static AFX_DATA const AFX_DISPMAP dispatchMap; \
+ virtual const AFX_DISPMAP* GetDispatchMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Document Object command target handling
+
+#ifndef _AFX_NO_DOCOBJECT_SUPPORT
+
+struct AFX_OLECMDMAP_ENTRY
+{
+ const GUID* pguid; // id of the command group
+ ULONG cmdID; // OLECMD ID
+ UINT nID; // corresponding WM_COMMAND message ID
+};
+
+struct AFX_OLECMDMAP
+{
+#ifdef _AFXDLL
+ const AFX_OLECMDMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_OLECMDMAP* pBaseMap;
+#endif
+ const AFX_OLECMDMAP_ENTRY* lpEntries;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_OLECMD_MAP() \
+private: \
+ static const AFX_OLECMDMAP_ENTRY _commandEntries[]; \
+protected: \
+ static AFX_DATA const AFX_OLECMDMAP commandMap; \
+ static const AFX_OLECMDMAP* PASCAL _GetBaseCommandMap(); \
+ virtual const AFX_OLECMDMAP* GetCommandMap() const; \
+
+#else
+#define DECLARE_OLECMD_MAP() \
+private: \
+ static const AFX_OLECMDMAP_ENTRY _commandEntries[]; \
+protected: \
+ static AFX_DATA const AFX_OLECMDMAP commandMap; \
+ virtual const AFX_OLECMDMAP* GetCommandMap() const; \
+
+#endif
+
+#ifdef _AFXDLL
+#define BEGIN_OLECMD_MAP(theClass, baseClass) \
+ const AFX_OLECMDMAP* PASCAL theClass::_GetBaseCommandMap() \
+ { return &baseClass::commandMap; } \
+ const AFX_OLECMDMAP* theClass::GetCommandMap() const \
+ { return &theClass::commandMap; } \
+ AFX_DATADEF const AFX_OLECMDMAP theClass::commandMap = \
+ { &theClass::_GetBaseCommandMap, &theClass::_commandEntries[0] }; \
+ const AFX_OLECMDMAP_ENTRY theClass::_commandEntries[] = \
+ { \
+
+#else
+#define BEGIN_OLECMD_MAP(theClass, baseClass) \
+ const AFX_OLECMDMAP* theClass::GetCommandMap() const \
+ { return &theClass::commandMap; } \
+ AFX_DATADEF const AFX_OLECMDMAP theClass::commandMap = \
+ { &baseClass::commandMap, &theClass::_commandEntries[0] }; \
+ const AFX_OLECMDMAP_ENTRY theClass::_commandEntries[] = \
+ { \
+
+#endif
+
+#define END_OLECMD_MAP() \
+ {NULL, 0, 0} \
+ }; \
+
+class COleCmdUI;
+
+#endif //!_AFX_NO_DOCOBJECT_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE event sink map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OCC_SUPPORT
+
+struct AFX_EVENTSINKMAP_ENTRY;
+
+struct AFX_EVENTSINKMAP
+{
+#ifdef _AFXDLL
+ const AFX_EVENTSINKMAP* (PASCAL* pfnGetBaseMap)();
+#else
+ const AFX_EVENTSINKMAP* pBaseMap;
+#endif
+ const AFX_EVENTSINKMAP_ENTRY* lpEntries;
+ UINT* lpEntryCount;
+};
+
+#ifdef _AFXDLL
+#define DECLARE_EVENTSINK_MAP() \
+private: \
+ static const AFX_EVENTSINKMAP_ENTRY _eventsinkEntries[]; \
+ static UINT _eventsinkEntryCount; \
+protected: \
+ static AFX_DATA const AFX_EVENTSINKMAP eventsinkMap; \
+ static const AFX_EVENTSINKMAP* PASCAL _GetBaseEventSinkMap(); \
+ virtual const AFX_EVENTSINKMAP* GetEventSinkMap() const; \
+
+#else
+#define DECLARE_EVENTSINK_MAP() \
+private: \
+ static const AFX_EVENTSINKMAP_ENTRY _eventsinkEntries[]; \
+ static UINT _eventsinkEntryCount; \
+protected: \
+ static AFX_DATA const AFX_EVENTSINKMAP eventsinkMap; \
+ virtual const AFX_EVENTSINKMAP* GetEventSinkMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OCC_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE connection map handling (more in AFXDISP.H)
+
+#ifndef _AFX_NO_OLE_SUPPORT
+
+struct AFX_CONNECTIONMAP_ENTRY
+{
+ const void* piid; // the interface id (IID)
+ size_t nOffset; // offset of the interface vtable from m_unknown
+};
+
+struct AFX_CONNECTIONMAP
+{
+#ifdef _AFXDLL
+ const AFX_CONNECTIONMAP* (PASCAL* pfnGetBaseMap)(); // NULL is root class
+#else
+ const AFX_CONNECTIONMAP* pBaseMap;
+#endif
+ const AFX_CONNECTIONMAP_ENTRY* pEntry; // map for this class
+};
+
+#ifdef _AFXDLL
+#define DECLARE_CONNECTION_MAP() \
+private: \
+ static const AFX_CONNECTIONMAP_ENTRY _connectionEntries[]; \
+protected: \
+ static AFX_DATA const AFX_CONNECTIONMAP connectionMap; \
+ static const AFX_CONNECTIONMAP* PASCAL _GetBaseConnectionMap(); \
+ virtual const AFX_CONNECTIONMAP* GetConnectionMap() const; \
+
+#else
+#define DECLARE_CONNECTION_MAP() \
+private: \
+ static const AFX_CONNECTIONMAP_ENTRY _connectionEntries[]; \
+protected: \
+ static AFX_DATA const AFX_CONNECTIONMAP connectionMap; \
+ virtual const AFX_CONNECTIONMAP* GetConnectionMap() const; \
+
+#endif
+
+#endif //!_AFX_NO_OLE_SUPPORT
+
+/////////////////////////////////////////////////////////////////////////////
+// CCmdTarget proper
+
+#ifndef _AFX_NO_OCC_SUPPORT
+class COccManager; // forward reference (see ..\src\occimpl.h)
+#endif
+
+class CCmdTarget : public CObject
+{
+ DECLARE_DYNAMIC(CCmdTarget)
+protected:
+
+public:
+// Constructors
+ CCmdTarget();
+
+// Attributes
+ LPDISPATCH GetIDispatch(BOOL bAddRef);
+ // retrieve IDispatch part of CCmdTarget
+ static CCmdTarget* PASCAL FromIDispatch(LPDISPATCH lpDispatch);
+ // map LPDISPATCH back to CCmdTarget* (inverse of GetIDispatch)
+ BOOL IsResultExpected();
+ // returns TRUE if automation function should return a value
+
+// Operations
+ void EnableAutomation();
+ // call in constructor to wire up IDispatch
+ void EnableConnections();
+ // call in constructor to wire up IConnectionPointContainer
+
+ void BeginWaitCursor();
+ void EndWaitCursor();
+ void RestoreWaitCursor(); // call after messagebox
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // dispatch OLE verbs through the message map
+ BOOL EnumOleVerbs(LPENUMOLEVERB* ppenumOleVerb);
+ BOOL DoOleVerb(LONG iVerb, LPMSG lpMsg, HWND hWndParent, LPCRECT lpRect);
+#endif
+
+// Overridables
+ // route and dispatch standard command message types
+ // (more sophisticated than OnCommand)
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // called when last OLE reference is released
+ virtual void OnFinalRelease();
+#endif
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // called before dispatching to an automation handler function
+ virtual BOOL IsInvokeAllowed(DISPID dispid);
+#endif
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ // support for OLE type libraries
+ void EnableTypeLib();
+ HRESULT GetTypeInfoOfGuid(LCID lcid, const GUID& guid,
+ LPTYPEINFO* ppTypeInfo);
+ virtual BOOL GetDispatchIID(IID* pIID);
+ virtual UINT GetTypeInfoCount();
+ virtual CTypeLibCache* GetTypeLibCache();
+ virtual HRESULT GetTypeLib(LCID lcid, LPTYPELIB* ppTypeLib);
+#endif
+
+// Implementation
+public:
+ virtual ~CCmdTarget();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext& dc) const;
+ virtual void AssertValid() const;
+#endif
+#ifndef _AFX_NO_OLE_SUPPORT
+ void GetNotSupported();
+ void SetNotSupported();
+#endif
+
+protected:
+ friend class CView;
+
+ CView* GetRoutingView();
+ CFrameWnd* GetRoutingFrame();
+ DECLARE_MESSAGE_MAP() // base class - no {{ }} macros
+
+#ifndef _AFX_NO_DOCOBJECT_SUPPORT
+ DECLARE_OLECMD_MAP()
+ friend class COleCmdUI;
+#endif
+
+#ifndef _AFX_NO_OLE_SUPPORT
+ DECLARE_DISPATCH_MAP()
+ DECLARE_CONNECTION_MAP()
+ DECLARE_INTERFACE_MAP()
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ DECLARE_EVENTSINK_MAP()
+#endif // !_AFX_NO_OCC_SUPPORT
+
+ // OLE interface map implementation
+public:
+ // data used when CCmdTarget is made OLE aware
+ long m_dwRef;
+ LPUNKNOWN m_pOuterUnknown; // external controlling unknown if != NULL
+ DWORD m_xInnerUnknown; // place-holder for inner controlling unknown
+
+public:
+ // advanced operations
+ void EnableAggregation(); // call to enable aggregation
+ void ExternalDisconnect(); // forcibly disconnect
+ LPUNKNOWN GetControllingUnknown();
+ // get controlling IUnknown for aggregate creation
+
+ // these versions do not delegate to m_pOuterUnknown
+ DWORD InternalQueryInterface(const void*, LPVOID* ppvObj);
+ DWORD InternalAddRef();
+ DWORD InternalRelease();
+ // these versions delegate to m_pOuterUnknown
+ DWORD ExternalQueryInterface(const void*, LPVOID* ppvObj);
+ DWORD ExternalAddRef();
+ DWORD ExternalRelease();
+
+ // implementation helpers
+ LPUNKNOWN GetInterface(const void*);
+ LPUNKNOWN QueryAggregates(const void*);
+
+ // advanced overrideables for implementation
+ virtual BOOL OnCreateAggregates();
+ virtual LPUNKNOWN GetInterfaceHook(const void*);
+
+ // OLE automation implementation
+protected:
+ struct XDispatch
+ {
+ DWORD m_vtbl; // place-holder for IDispatch vtable
+#ifndef _AFX_NO_NESTED_DERIVATION
+ size_t m_nOffset;
+#endif
+ } m_xDispatch;
+ BOOL m_bResultExpected;
+
+ // member variable-based properties
+ void GetStandardProp(const AFX_DISPMAP_ENTRY* pEntry,
+ VARIANT* pvarResult, UINT* puArgErr);
+ SCODE SetStandardProp(const AFX_DISPMAP_ENTRY* pEntry,
+ DISPPARAMS* pDispParams, UINT* puArgErr);
+
+ // DISPID to dispatch map lookup
+ static UINT PASCAL GetEntryCount(const AFX_DISPMAP* pDispMap);
+ const AFX_DISPMAP_ENTRY* PASCAL GetDispEntry(LONG memid);
+ static LONG PASCAL MemberIDFromName(const AFX_DISPMAP* pDispMap, LPCTSTR lpszName);
+
+ // helpers for member function calling implementation
+ static UINT PASCAL GetStackSize(const BYTE* pbParams, VARTYPE vtResult);
+#if defined(_PPC_) || defined(_MPPC_)
+ SCODE PushStackArgs(BYTE* pStack, const BYTE* pbParams,
+ void* pResult, VARTYPE vtResult, DISPPARAMS* pDispParams,
+ UINT* puArgErr, VARIANT* rgTempVars, UINT nSizeArgs);
+#else
+ SCODE PushStackArgs(BYTE* pStack, const BYTE* pbParams,
+ void* pResult, VARTYPE vtResult, DISPPARAMS* pDispParams,
+ UINT* puArgErr, VARIANT* rgTempVars);
+#endif
+ SCODE CallMemberFunc(const AFX_DISPMAP_ENTRY* pEntry, WORD wFlags,
+ VARIANT* pvarResult, DISPPARAMS* pDispParams, UINT* puArgErr);
+
+ friend class COleDispatchImpl;
+
+#ifndef _AFX_NO_OCC_SUPPORT
+public:
+ // OLE event sink implementation
+ BOOL OnEvent(UINT idCtrl, AFX_EVENT* pEvent,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+protected:
+ const AFX_EVENTSINKMAP_ENTRY* PASCAL GetEventSinkEntry(UINT idCtrl,
+ AFX_EVENT* pEvent);
+#endif // !_AFX_NO_OCC_SUPPORT
+
+ // OLE connection implementation
+ struct XConnPtContainer
+ {
+ DWORD m_vtbl; // place-holder for IConnectionPointContainer vtable
+#ifndef _AFX_NO_NESTED_DERIVATION
+ size_t m_nOffset;
+#endif
+ } m_xConnPtContainer;
+
+#ifdef _AFXDLL
+ AFX_MODULE_STATE* m_pModuleState;
+ friend class CInnerUnknown;
+ friend UINT APIENTRY _AfxThreadEntry(void* pParam);
+#endif
+
+ virtual BOOL GetExtraConnectionPoints(CPtrArray* pConnPoints);
+ virtual LPCONNECTIONPOINT GetConnectionHook(const IID& iid);
+
+ friend class COleConnPtContainer;
+
+#endif //!_AFX_NO_OLE_SUPPORT
+};
+
+class CCmdUI // simple helper class
+{
+public:
+// Attributes
+ UINT m_nID;
+ UINT m_nIndex; // menu item or other index
+
+ // if a menu item
+ CMenu* m_pMenu; // NULL if not a menu
+ CMenu* m_pSubMenu; // sub containing menu item
+ // if a popup sub menu - ID is for first in popup
+
+ // if from some other window
+ CWnd* m_pOther; // NULL if a menu or not a CWnd
+
+// Operations to do in ON_UPDATE_COMMAND_UI
+ virtual void Enable(BOOL bOn = TRUE);
+ virtual void SetCheck(int nCheck = 1); // 0, 1 or 2 (indeterminate)
+ virtual void SetRadio(BOOL bOn = TRUE);
+ virtual void SetText(LPCTSTR lpszText);
+
+// Advanced operation
+ void ContinueRouting();
+
+// Implementation
+ CCmdUI();
+ BOOL m_bEnableChanged;
+ BOOL m_bContinueRouting;
+ UINT m_nIndexMax; // last + 1 for iterating m_nIndex
+
+ CMenu* m_pParentMenu; // NULL if parent menu not easily determined
+ // (probably a secondary popup menu)
+
+ BOOL DoUpdate(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
+};
+
+// special CCmdUI derived classes are used for other UI paradigms
+// like toolbar buttons and status indicators
+
+// pointer to afx_msg member function
+#ifndef AFX_MSG_CALL
+#define AFX_MSG_CALL
+#endif
+typedef void (AFX_MSG_CALL CCmdTarget::*AFX_PMSG)(void);
+
+enum AFX_DISPMAP_FLAGS
+{
+ afxDispCustom = 0,
+ afxDispStock = 1
+};
+
+struct AFX_DISPMAP_ENTRY
+{
+ LPCTSTR lpszName; // member/property name
+ long lDispID; // DISPID (may be DISPID_UNKNOWN)
+ LPCSTR lpszParams; // member parameter description
+ WORD vt; // return value type / or type of property
+ AFX_PMSG pfn; // normal member On<membercall> or, OnGet<property>
+ AFX_PMSG pfnSet; // special member for OnSet<property>
+ size_t nPropOffset; // property offset
+ AFX_DISPMAP_FLAGS flags;// flags (e.g. stock/custom)
+};
+
+struct AFX_EVENTSINKMAP_ENTRY
+{
+ AFX_DISPMAP_ENTRY dispEntry;
+ UINT nCtrlIDFirst;
+ UINT nCtrlIDLast;
+};
+
+// DSC Sink state/reason codes passed to MFC user event handlers
+enum DSCSTATE
+{
+ dscNoState = 0,
+ dscOKToDo,
+ dscCancelled,
+ dscSyncBefore,
+ dscAboutToDo,
+ dscFailedToDo,
+ dscSyncAfter,
+ dscDidEvent
+};
+
+enum DSCREASON
+{
+ dscNoReason = 0,
+ dscClose,
+ dscCommit,
+ dscDelete,
+ dscEdit,
+ dscInsert,
+ dscModify,
+ dscMove
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWnd implementation
+
+// structures (see afxext.h)
+struct CCreateContext; // context for creating things
+struct CPrintInfo; // print preview customization info
+
+struct AFX_MSGMAP_ENTRY
+{
+ UINT nMessage; // windows message
+ UINT nCode; // control code or WM_NOTIFY code
+ UINT nID; // control ID (or 0 for windows messages)
+ UINT nLastID; // used for entries specifying a range of control id's
+ UINT nSig; // signature type (action) or pointer to message #
+ AFX_PMSG pfn; // routine to call (or special value)
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWnd - a Microsoft Windows application window
+
+class COleDropTarget; // for more information see AFXOLE.H
+class COleControlContainer;
+class COleControlSite;
+
+// CWnd::m_nFlags (generic to CWnd)
+#define WF_TOOLTIPS 0x0001 // window is enabled for tooltips
+#define WF_TEMPHIDE 0x0002 // window is temporarily hidden
+#define WF_STAYDISABLED 0x0004 // window should stay disabled
+#define WF_MODALLOOP 0x0008 // currently in modal loop
+#define WF_CONTINUEMODAL 0x0010 // modal loop should continue running
+#define WF_OLECTLCONTAINER 0x0100 // some descendant is an OLE control
+
+// CWnd::m_nFlags (specific to CFrameWnd)
+#define WF_STAYACTIVE 0x0020 // look active even though not active
+#define WF_NOPOPMSG 0x0040 // ignore WM_POPMESSAGESTRING calls
+#define WF_MODALDISABLE 0x0080 // window is disabled
+#define WF_KEEPMINIACTIVE 0x0200 // stay activate even though you are deactivated
+
+// flags for CWnd::RunModalLoop
+#define MLF_NOIDLEMSG 0x0001 // don't send WM_ENTERIDLE messages
+#define MLF_NOKICKIDLE 0x0002 // don't send WM_KICKIDLE messages
+#define MLF_SHOWONIDLE 0x0004 // show window if not visible at idle time
+
+// extra MFC defined TTF_ flags for TOOLINFO::uFlags
+#define TTF_NOTBUTTON 0x80000000L // no status help on buttondown
+#define TTF_ALWAYSTIP 0x40000000L // always show the tip even if not active
+
+class CWnd : public CCmdTarget
+{
+ DECLARE_DYNCREATE(CWnd)
+protected:
+ static const MSG* PASCAL GetCurrentMessage();
+
+// Attributes
+public:
+ HWND m_hWnd; // must be first data member
+ operator HWND() const;
+
+ HWND GetSafeHwnd() const;
+ DWORD GetStyle() const;
+ DWORD GetExStyle() const;
+ BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0);
+ BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0);
+
+ CWnd* GetOwner() const;
+ void SetOwner(CWnd* pOwnerWnd);
+
+// Constructors and other creation
+ CWnd();
+
+ static CWnd* PASCAL FromHandle(HWND hWnd);
+ static CWnd* PASCAL FromHandlePermanent(HWND hWnd);
+ static void PASCAL DeleteTempMap();
+ BOOL Attach(HWND hWndNew);
+ HWND Detach();
+
+ // subclassing/unsubclassing functions
+ virtual void PreSubclassWindow();
+ BOOL SubclassWindow(HWND hWnd);
+ BOOL SubclassDlgItem(UINT nID, CWnd* pParent);
+ HWND UnsubclassWindow();
+
+ // handling of RT_DLGINIT resource (extension to RT_DIALOG)
+ BOOL ExecuteDlgInit(LPCTSTR lpszResourceName);
+ BOOL ExecuteDlgInit(LPVOID lpResource);
+
+public:
+ // for child windows, views, panes etc
+ virtual BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName, DWORD dwStyle,
+ const RECT& rect,
+ CWnd* pParentWnd, UINT nID,
+ CCreateContext* pContext = NULL);
+
+ // advanced creation (allows access to extended styles)
+ BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName, DWORD dwStyle,
+ int x, int y, int nWidth, int nHeight,
+ HWND hWndParent, HMENU nIDorHMenu, LPVOID lpParam = NULL);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // for wrapping OLE controls
+ BOOL CreateControl(REFCLSID clsid, LPCTSTR pszWindowName, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID, CFile* pPersist=NULL,
+ BOOL bStorage=FALSE, BSTR bstrLicKey=NULL);
+
+ BOOL CreateControl(LPCTSTR pszClass, LPCTSTR pszWindowName, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID, CFile* pPersist=NULL,
+ BOOL bStorage=FALSE, BSTR bstrLicKey=NULL);
+
+ LPUNKNOWN GetControlUnknown();
+#endif
+
+ virtual BOOL DestroyWindow();
+
+ // special pre-creation and window rect adjustment hooks
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+ // Advanced: virtual AdjustWindowRect
+ enum AdjustType { adjustBorder = 0, adjustOutside = 1 };
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+// Window tree access
+ int GetDlgCtrlID() const;
+ int SetDlgCtrlID(int nID);
+ // get and set window ID, for child windows only
+ CWnd* GetDlgItem(int nID) const;
+ // get immediate child with given ID
+ void GetDlgItem(int nID, HWND* phWnd) const;
+ // as above, but returns HWND
+ CWnd* GetDescendantWindow(int nID, BOOL bOnlyPerm = FALSE) const;
+ // like GetDlgItem but recursive
+ void SendMessageToDescendants(UINT message, WPARAM wParam = 0,
+ LPARAM lParam = 0, BOOL bDeep = TRUE, BOOL bOnlyPerm = FALSE);
+ CFrameWnd* GetParentFrame() const;
+ CWnd* GetTopLevelParent() const;
+ CWnd* GetTopLevelOwner() const;
+ CWnd* GetParentOwner() const;
+ CFrameWnd* GetTopLevelFrame() const;
+ static CWnd* PASCAL GetSafeOwner(CWnd* pParent = NULL, HWND* pWndTop = NULL);
+
+// Message Functions
+ LRESULT SendMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
+ BOOL PostMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
+
+#ifndef _MAC
+ BOOL SendNotifyMessage(UINT message, WPARAM wParam, LPARAM lParam);
+#endif
+ BOOL SendChildNotifyLastMsg(LRESULT* pResult = NULL);
+
+// Message processing for modeless dialog-like windows
+ BOOL IsDialogMessage(LPMSG lpMsg);
+
+// Window Text Functions
+ void SetWindowText(LPCTSTR lpszString);
+ int GetWindowText(LPTSTR lpszStringBuf, int nMaxCount) const;
+ void GetWindowText(CString& rString) const;
+ int GetWindowTextLength() const;
+ void SetFont(CFont* pFont, BOOL bRedraw = TRUE);
+ CFont* GetFont() const;
+
+// CMenu Functions - non-Child windows only
+ CMenu* GetMenu() const;
+ BOOL SetMenu(CMenu* pMenu);
+ void DrawMenuBar();
+ CMenu* GetSystemMenu(BOOL bRevert) const;
+ BOOL HiliteMenuItem(CMenu* pMenu, UINT nIDHiliteItem, UINT nHilite);
+
+// Window Size and Position Functions
+ BOOL IsIconic() const;
+ BOOL IsZoomed() const;
+ void MoveWindow(int x, int y, int nWidth, int nHeight,
+ BOOL bRepaint = TRUE);
+ void MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE);
+
+ static AFX_DATA const CWnd wndTop; // SetWindowPos's pWndInsertAfter
+ static AFX_DATA const CWnd wndBottom; // SetWindowPos's pWndInsertAfter
+ static AFX_DATA const CWnd wndTopMost; // SetWindowPos pWndInsertAfter
+ static AFX_DATA const CWnd wndNoTopMost; // SetWindowPos pWndInsertAfter
+
+ BOOL SetWindowPos(const CWnd* pWndInsertAfter, int x, int y,
+ int cx, int cy, UINT nFlags);
+#ifndef _MAC
+ UINT ArrangeIconicWindows();
+#endif
+ void BringWindowToTop();
+ void GetWindowRect(LPRECT lpRect) const;
+ void GetClientRect(LPRECT lpRect) const;
+
+ BOOL GetWindowPlacement(WINDOWPLACEMENT* lpwndpl) const;
+ BOOL SetWindowPlacement(const WINDOWPLACEMENT* lpwndpl);
+
+// Coordinate Mapping Functions
+ void ClientToScreen(LPPOINT lpPoint) const;
+ void ClientToScreen(LPRECT lpRect) const;
+ void ScreenToClient(LPPOINT lpPoint) const;
+ void ScreenToClient(LPRECT lpRect) const;
+ void MapWindowPoints(CWnd* pwndTo, LPPOINT lpPoint, UINT nCount) const;
+ void MapWindowPoints(CWnd* pwndTo, LPRECT lpRect) const;
+
+// Update/Painting Functions
+ CDC* BeginPaint(LPPAINTSTRUCT lpPaint);
+ void EndPaint(LPPAINTSTRUCT lpPaint);
+ CDC* GetDC();
+ CDC* GetWindowDC();
+ int ReleaseDC(CDC* pDC);
+ void Print(CDC* pDC, DWORD dwFlags) const;
+ void PrintClient(CDC* pDC, DWORD dwFlags) const;
+
+ void UpdateWindow();
+ void SetRedraw(BOOL bRedraw = TRUE);
+ BOOL GetUpdateRect(LPRECT lpRect, BOOL bErase = FALSE);
+ int GetUpdateRgn(CRgn* pRgn, BOOL bErase = FALSE);
+ void Invalidate(BOOL bErase = TRUE);
+ void InvalidateRect(LPCRECT lpRect, BOOL bErase = TRUE);
+ void InvalidateRgn(CRgn* pRgn, BOOL bErase = TRUE);
+ void ValidateRect(LPCRECT lpRect);
+ void ValidateRgn(CRgn* pRgn);
+ BOOL ShowWindow(int nCmdShow);
+ BOOL IsWindowVisible() const;
+ void ShowOwnedPopups(BOOL bShow = TRUE);
+
+ CDC* GetDCEx(CRgn* prgnClip, DWORD flags);
+#ifndef _MAC
+ BOOL LockWindowUpdate(); // for backward compatibility
+ void UnlockWindowUpdate();
+#endif
+ BOOL RedrawWindow(LPCRECT lpRectUpdate = NULL,
+ CRgn* prgnUpdate = NULL,
+ UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);
+ BOOL EnableScrollBar(int nSBFlags, UINT nArrowFlags = ESB_ENABLE_BOTH);
+
+// Timer Functions
+ UINT SetTimer(UINT nIDEvent, UINT nElapse,
+ void (CALLBACK* lpfnTimer)(HWND, UINT, UINT, DWORD));
+ BOOL KillTimer(int nIDEvent);
+
+// ToolTip Functions
+ BOOL EnableToolTips(BOOL bEnable = TRUE);
+ static void PASCAL CancelToolTips(BOOL bKeys = FALSE);
+ void FilterToolTipMessage(MSG* pMsg);
+
+ // for command hit testing (used for automatic tooltips)
+ virtual int OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
+
+// Window State Functions
+ BOOL IsWindowEnabled() const;
+ BOOL EnableWindow(BOOL bEnable = TRUE);
+
+ // the active window applies only to top-level (frame windows)
+ static CWnd* PASCAL GetActiveWindow();
+ CWnd* SetActiveWindow();
+
+ // the foreground window applies only to top-level windows (frame windows)
+ BOOL SetForegroundWindow();
+ static CWnd* PASCAL GetForegroundWindow();
+
+ // capture and focus apply to all windows
+ static CWnd* PASCAL GetCapture();
+ CWnd* SetCapture();
+ static CWnd* PASCAL GetFocus();
+ CWnd* SetFocus();
+
+ static CWnd* PASCAL GetDesktopWindow();
+
+// Obsolete and non-portable APIs - not recommended for new code
+#ifndef _MAC
+ void CloseWindow();
+ BOOL OpenIcon();
+#endif
+
+// Dialog-Box Item Functions
+// (NOTE: Dialog-Box Items/Controls are not necessarily in dialog boxes!)
+ void CheckDlgButton(int nIDButton, UINT nCheck);
+ void CheckRadioButton(int nIDFirstButton, int nIDLastButton,
+ int nIDCheckButton);
+ int GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton);
+#ifndef _MAC
+ int DlgDirList(LPTSTR lpPathSpec, int nIDListBox,
+ int nIDStaticPath, UINT nFileType);
+ int DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox,
+ int nIDStaticPath, UINT nFileType);
+ BOOL DlgDirSelect(LPTSTR lpString, int nIDListBox);
+ BOOL DlgDirSelectComboBox(LPTSTR lpString, int nIDComboBox);
+#endif
+
+ UINT GetDlgItemInt(int nID, BOOL* lpTrans = NULL,
+ BOOL bSigned = TRUE) const;
+ int GetDlgItemText(int nID, LPTSTR lpStr, int nMaxCount) const;
+ int GetDlgItemText(int nID, CString& rString) const;
+ CWnd* GetNextDlgGroupItem(CWnd* pWndCtl, BOOL bPrevious = FALSE) const;
+
+ CWnd* GetNextDlgTabItem(CWnd* pWndCtl, BOOL bPrevious = FALSE) const;
+ UINT IsDlgButtonChecked(int nIDButton) const;
+ LRESULT SendDlgItemMessage(int nID, UINT message,
+ WPARAM wParam = 0, LPARAM lParam = 0);
+ void SetDlgItemInt(int nID, UINT nValue, BOOL bSigned = TRUE);
+ void SetDlgItemText(int nID, LPCTSTR lpszString);
+
+// Scrolling Functions
+ int GetScrollPos(int nBar) const;
+ void GetScrollRange(int nBar, LPINT lpMinPos, LPINT lpMaxPos) const;
+ void ScrollWindow(int xAmount, int yAmount,
+ LPCRECT lpRect = NULL,
+ LPCRECT lpClipRect = NULL);
+ int SetScrollPos(int nBar, int nPos, BOOL bRedraw = TRUE);
+ void SetScrollRange(int nBar, int nMinPos, int nMaxPos,
+ BOOL bRedraw = TRUE);
+ void ShowScrollBar(UINT nBar, BOOL bShow = TRUE);
+ void EnableScrollBarCtrl(int nBar, BOOL bEnable = TRUE);
+ virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
+ // return sibling scrollbar control (or NULL if none)
+
+ int ScrollWindowEx(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags);
+ BOOL SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo,
+ BOOL bRedraw = TRUE);
+ BOOL GetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL);
+ int GetScrollLimit(int nBar);
+
+// Window Access Functions
+ CWnd* ChildWindowFromPoint(POINT point) const;
+#ifndef _MAC
+ CWnd* ChildWindowFromPoint(POINT point, UINT nFlags) const;
+#endif
+ static CWnd* PASCAL FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName);
+ CWnd* GetNextWindow(UINT nFlag = GW_HWNDNEXT) const;
+ CWnd* GetTopWindow() const;
+
+ CWnd* GetWindow(UINT nCmd) const;
+ CWnd* GetLastActivePopup() const;
+
+ BOOL IsChild(const CWnd* pWnd) const;
+ CWnd* GetParent() const;
+ CWnd* SetParent(CWnd* pWndNewParent);
+ static CWnd* PASCAL WindowFromPoint(POINT point);
+
+// Alert Functions
+ BOOL FlashWindow(BOOL bInvert);
+ int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
+ UINT nType = MB_OK);
+
+// Clipboard Functions
+ BOOL ChangeClipboardChain(HWND hWndNext);
+ HWND SetClipboardViewer();
+ BOOL OpenClipboard();
+ static CWnd* PASCAL GetClipboardOwner();
+ static CWnd* PASCAL GetClipboardViewer();
+ static CWnd* PASCAL GetOpenClipboardWindow();
+
+// Caret Functions
+ void CreateCaret(CBitmap* pBitmap);
+ void CreateSolidCaret(int nWidth, int nHeight);
+ void CreateGrayCaret(int nWidth, int nHeight);
+ static CPoint PASCAL GetCaretPos();
+ static void PASCAL SetCaretPos(POINT point);
+ void HideCaret();
+ void ShowCaret();
+
+// Shell Interaction Functions
+ void DragAcceptFiles(BOOL bAccept = TRUE);
+
+// Icon Functions
+ HICON SetIcon(HICON hIcon, BOOL bBigIcon);
+ HICON GetIcon(BOOL bBigIcon) const;
+
+// Context Help Functions
+#ifndef _MAC
+ BOOL SetWindowContextHelpId(DWORD dwContextHelpId);
+ DWORD GetWindowContextHelpId() const;
+
+#endif
+
+// Dialog Data support
+public:
+ BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
+ // data wnd must be same type as this
+
+// Help Command Handlers
+ afx_msg void OnHelp(); // F1 (uses current context)
+ afx_msg void OnHelpIndex(); // ID_HELP_INDEX
+ afx_msg void OnHelpFinder(); // ID_HELP_FINDER, ID_DEFAULT_HELP
+ afx_msg void OnHelpUsing(); // ID_HELP_USING
+ virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
+
+// Layout and other functions
+public:
+ enum RepositionFlags
+ { reposDefault = 0, reposQuery = 1, reposExtra = 2 };
+ void RepositionBars(UINT nIDFirst, UINT nIDLast, UINT nIDLeftOver,
+ UINT nFlag = reposDefault, LPRECT lpRectParam = NULL,
+ LPCRECT lpRectClient = NULL, BOOL bStretch = TRUE);
+
+ // dialog support
+ void UpdateDialogControls(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
+ void CenterWindow(CWnd* pAlternateOwner = NULL);
+ int RunModalLoop(DWORD dwFlags = 0);
+ virtual BOOL ContinueModal();
+ virtual void EndModalLoop(int nResult);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+// OLE control wrapper functions
+ void AFX_CDECL InvokeHelper(DISPID dwDispID, WORD wFlags,
+ VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ...);
+ void AFX_CDECL SetProperty(DISPID dwDispID, VARTYPE vtProp, ...);
+ void GetProperty(DISPID dwDispID, VARTYPE vtProp, void* pvProp) const;
+ IUnknown* GetDSCCursor();
+ void BindDefaultProperty(DISPID dwDispID, VARTYPE vtProp, LPCTSTR szFieldName, CWnd* pDSCWnd);
+ void BindProperty(DISPID dwDispId, CWnd* pWndDSC);
+#endif
+
+// Window-Management message handler member functions
+protected:
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
+ afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
+ afx_msg LRESULT OnActivateTopLevel(WPARAM, LPARAM);
+ afx_msg void OnCancelMode();
+ afx_msg void OnChildActivate();
+ afx_msg void OnClose();
+ afx_msg void OnContextMenu(CWnd* pWnd, CPoint pos);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+
+ afx_msg void OnDestroy();
+ afx_msg void OnEnable(BOOL bEnable);
+ afx_msg void OnEndSession(BOOL bEnding);
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
+ afx_msg BOOL OnHelpInfo(HELPINFO* lpHelpInfo);
+ afx_msg void OnIconEraseBkgnd(CDC* pDC);
+ afx_msg void OnKillFocus(CWnd* pNewWnd);
+ afx_msg LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu* pMenu);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg void OnMove(int x, int y);
+ afx_msg void OnPaint();
+ afx_msg void OnParentNotify(UINT message, LPARAM lParam);
+ afx_msg HCURSOR OnQueryDragIcon();
+ afx_msg BOOL OnQueryEndSession();
+ afx_msg BOOL OnQueryNewPalette();
+ afx_msg BOOL OnQueryOpen();
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnTCard(UINT idAction, DWORD dwActionData);
+ afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
+ afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
+
+// Nonclient-Area message handler member functions
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnNcDestroy();
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMButtonUp(UINT nHitTest, CPoint point);
+ afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcRButtonDblClk(UINT nHitTest, CPoint point);
+ afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);
+ afx_msg void OnNcRButtonUp(UINT nHitTest, CPoint point);
+
+// System message handler member functions
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg void OnPaletteIsChanging(CWnd* pRealizeWnd);
+ afx_msg void OnSysChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnSysDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnCompacting(UINT nCpuTime);
+ afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
+ afx_msg void OnFontChange();
+ afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
+ afx_msg void OnSpoolerStatus(UINT nStatus, UINT nJobs);
+ afx_msg void OnSysColorChange();
+ afx_msg void OnTimeChange();
+ afx_msg void OnWinIniChange(LPCTSTR lpszSection);
+
+// Input message handler member functions
+ afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ afx_msg void OnMouseMove(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg void OnTimer(UINT nIDEvent);
+
+// Initialization message handler member functions
+ afx_msg void OnInitMenu(CMenu* pMenu);
+ afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
+
+// Clipboard message handler member functions
+ afx_msg void OnAskCbFormatName(UINT nMaxCount, LPTSTR lpszString);
+ afx_msg void OnChangeCbChain(HWND hWndRemove, HWND hWndAfter);
+ afx_msg void OnDestroyClipboard();
+ afx_msg void OnDrawClipboard();
+ afx_msg void OnHScrollClipboard(CWnd* pClipAppWnd, UINT nSBCode, UINT nPos);
+ afx_msg void OnPaintClipboard(CWnd* pClipAppWnd, HGLOBAL hPaintStruct);
+ afx_msg void OnRenderAllFormats();
+ afx_msg void OnRenderFormat(UINT nFormat);
+ afx_msg void OnSizeClipboard(CWnd* pClipAppWnd, HGLOBAL hRect);
+ afx_msg void OnVScrollClipboard(CWnd* pClipAppWnd, UINT nSBCode, UINT nPos);
+
+// Control message handler member functions
+ afx_msg int OnCompareItem(int nIDCtl, LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ afx_msg void OnDeleteItem(int nIDCtl, LPDELETEITEMSTRUCT lpDeleteItemStruct);
+ afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
+ afx_msg UINT OnGetDlgCode();
+ afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ afx_msg int OnCharToItem(UINT nChar, CListBox* pListBox, UINT nIndex);
+ afx_msg int OnVKeyToItem(UINT nKey, CListBox* pListBox, UINT nIndex);
+
+// MDI message handler member functions
+ afx_msg void OnMDIActivate(BOOL bActivate,
+ CWnd* pActivateWnd, CWnd* pDeactivateWnd);
+
+// Menu loop notification messages
+ afx_msg void OnEnterMenuLoop(BOOL bIsTrackPopupMenu);
+ afx_msg void OnExitMenuLoop(BOOL bIsTrackPopupMenu);
+
+// Win4 messages
+ afx_msg void OnStyleChanged(int nStyleType, LPSTYLESTRUCT lpStyleStruct);
+ afx_msg void OnStyleChanging(int nStyleType, LPSTYLESTRUCT lpStyleStruct);
+ afx_msg void OnSizing(UINT nSide, LPRECT lpRect);
+ afx_msg void OnMoving(UINT nSide, LPRECT lpRect);
+ afx_msg void OnCaptureChanged(CWnd* pWnd);
+ afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);
+
+// Overridables and other helpers (for implementation of derived classes)
+protected:
+ // for deriving from a standard control
+ virtual WNDPROC* GetSuperWndProcAddr();
+
+ // for dialog data exchange and validation
+ virtual void DoDataExchange(CDataExchange* pDX);
+
+public:
+ // for modality
+ virtual void BeginModalState();
+ virtual void EndModalState();
+
+ // for translating Windows messages in main message pump
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ // for ambient properties exposed to contained OLE controls
+ virtual BOOL OnAmbientProperty(COleControlSite* pSite, DISPID dispid,
+ VARIANT* pvar);
+#endif
+
+protected:
+ // for processing Windows messages
+ virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ // for handling default processing
+ LRESULT Default();
+ virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+
+ // for custom cleanup after WM_NCDESTROY
+ virtual void PostNcDestroy();
+
+ // for notifications from parent
+ virtual BOOL OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+ // return TRUE if parent should not process this message
+ BOOL ReflectChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+ static BOOL PASCAL ReflectLastMsg(HWND hWndChild, LRESULT* pResult = NULL);
+
+// Implementation
+public:
+ virtual ~CWnd();
+ virtual BOOL CheckAutoCenter();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ // 3D support (these APIs will be obsolete with next version of Windows)
+ BOOL SubclassCtl3d(int nControlType = -1);
+ // see CTL3D.H for list of control types
+ BOOL SubclassDlg3d(DWORD dwMask = 0xFFFF /*CTL3D_ALL*/);
+ // see CTL3D.H for list of mask values
+ static BOOL PASCAL GrayCtlColor(HDC hDC, HWND hWnd, UINT nCtlColor,
+ HBRUSH hbrGray, COLORREF clrText);
+ HBRUSH OnGrayCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+
+ // helper routines for implementation
+ BOOL HandleFloatingSysCommand(UINT nID, LPARAM lParam);
+ BOOL IsTopParentActive() const;
+ void ActivateTopParent();
+ static BOOL PASCAL WalkPreTranslateTree(HWND hWndStop, MSG* pMsg);
+ static CWnd* PASCAL GetDescendantWindow(HWND hWnd, int nID,
+ BOOL bOnlyPerm);
+ static void PASCAL SendMessageToDescendants(HWND hWnd, UINT message,
+ WPARAM wParam, LPARAM lParam, BOOL bDeep, BOOL bOnlyPerm);
+ virtual BOOL IsFrameWnd() const; // IsKindOf(RUNTIME_CLASS(CFrameWnd)))
+ virtual void OnFinalRelease();
+ BOOL PreTranslateInput(LPMSG lpMsg);
+ static BOOL PASCAL ModifyStyle(HWND hWnd, DWORD dwRemove, DWORD dwAdd,
+ UINT nFlags);
+ static BOOL PASCAL ModifyStyleEx(HWND hWnd, DWORD dwRemove, DWORD dwAdd,
+ UINT nFlags);
+ static void PASCAL _FilterToolTipMessage(MSG* pMsg, CWnd* pWnd);
+
+public:
+ HWND m_hWndOwner; // implementation of SetOwner and GetOwner
+ UINT m_nFlags; // see WF_ flags above
+
+protected:
+ WNDPROC m_pfnSuper; // for subclassing of controls
+ static const UINT m_nMsgDragList;
+ int m_nModalResult; // for return values from CWnd::RunModalLoop
+
+ COleDropTarget* m_pDropTarget; // for automatic cleanup of drop target
+ friend class COleDropTarget;
+ friend class CFrameWnd;
+
+ // for creating dialogs and dialog-like windows
+ BOOL CreateDlg(LPCTSTR lpszTemplateName, CWnd* pParentWnd);
+ BOOL CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd);
+ BOOL CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd,
+ HINSTANCE hInst);
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ COleControlContainer* m_pCtrlCont; // for containing OLE controls
+ COleControlSite* m_pCtrlSite; // for wrapping an OLE control
+ friend class COccManager;
+ friend class COleControlSite;
+ friend class COleControlContainer;
+ BOOL InitControlContainer();
+ virtual BOOL SetOccDialogInfo(struct _AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+ void AttachControlSite(CHandleMap* pMap);
+public:
+ void AttachControlSite(CWnd* pWndParent);
+#endif
+
+protected:
+ // implementation of message dispatch/hooking
+ friend LRESULT CALLBACK _AfxSendMsgHook(int, WPARAM, LPARAM);
+ friend void AFXAPI _AfxStandardSubclass(HWND);
+ friend LRESULT CALLBACK _AfxCbtFilterHook(int, WPARAM, LPARAM);
+ friend LRESULT AFXAPI AfxCallWndProc(CWnd*, HWND, UINT, WPARAM, LPARAM);
+
+ // standard message implementation
+ afx_msg LRESULT OnNTCtlColor(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnQuery3dControls(WPARAM, LPARAM);
+ afx_msg LRESULT OnDisplayChange(WPARAM, LPARAM);
+#ifdef _MAC
+ afx_msg LRESULT OnMacintosh(WPARAM wParam, LPARAM lParam);
+#endif
+
+ afx_msg LRESULT OnDragList(WPARAM, LPARAM);
+
+ //{{AFX_MSG(CWnd)
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+private:
+ CWnd(HWND hWnd); // just for special initialization
+};
+
+// helpers for registering your own WNDCLASSes
+LPCTSTR AFXAPI AfxRegisterWndClass(UINT nClassStyle,
+ HCURSOR hCursor = 0, HBRUSH hbrBackground = 0, HICON hIcon = 0);
+
+BOOL AFXAPI AfxRegisterClass(WNDCLASS* lpWndClass);
+
+// Implementation
+LRESULT CALLBACK AfxWndProc(HWND, UINT, WPARAM, LPARAM);
+
+WNDPROC AFXAPI AfxGetAfxWndProc();
+#define AfxWndProc (*AfxGetAfxWndProc())
+
+typedef void (AFX_MSG_CALL CWnd::*AFX_PMSGW)(void);
+ // like 'AFX_PMSG' but for CWnd derived classes only
+
+typedef void (AFX_MSG_CALL CWinThread::*AFX_PMSGT)(void);
+ // like 'AFX_PMSG' but for CWinThread-derived classes only
+
+/////////////////////////////////////////////////////////////////////////////
+// CDialog - a modal or modeless dialog
+
+class CDialog : public CWnd
+{
+ DECLARE_DYNAMIC(CDialog)
+
+ // Modeless construct
+public:
+ CDialog();
+
+ BOOL Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
+ BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
+ BOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL,
+ void* lpDialogInit = NULL);
+ BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);
+
+ // Modal construct
+public:
+ CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
+ CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
+ BOOL InitModalIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL,
+ void* lpDialogInit = NULL);
+ BOOL InitModalIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);
+
+// Attributes
+public:
+ void MapDialogRect(LPRECT lpRect) const;
+ void SetHelpID(UINT nIDR);
+
+// Operations
+public:
+ // modal processing
+ virtual int DoModal();
+
+ // support for passing on tab control - use 'PostMessage' if needed
+ void NextDlgCtrl() const;
+ void PrevDlgCtrl() const;
+ void GotoDlgCtrl(CWnd* pWndCtrl);
+
+ // default button access
+ void SetDefID(UINT nID);
+ DWORD GetDefID() const;
+
+ // termination
+ void EndDialog(int nResult);
+
+// Overridables (special message map entries)
+ virtual BOOL OnInitDialog();
+ virtual void OnSetFont(CFont* pFont);
+protected:
+ virtual void OnOK();
+ virtual void OnCancel();
+
+// Implementation
+public:
+ virtual ~CDialog();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual BOOL CheckAutoCenter();
+
+protected:
+ UINT m_nIDHelp; // Help ID (0 for none, see HID_BASE_RESOURCE)
+
+ // parameters for 'DoModal'
+ LPCTSTR m_lpszTemplateName; // name or MAKEINTRESOURCE
+ HGLOBAL m_hDialogTemplate; // indirect (m_lpDialogTemplate == NULL)
+ LPCDLGTEMPLATE m_lpDialogTemplate; // indirect if (m_lpszTemplateName == NULL)
+ void* m_lpDialogInit; // DLGINIT resource data
+ CWnd* m_pParentWnd; // parent/owner window
+ HWND m_hWndTop; // top level parent window (may be disabled)
+
+#ifndef _AFX_NO_OCC_SUPPORT
+ _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
+ virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
+#endif
+ virtual void PreInitDialog();
+
+ // implementation helpers
+ HWND PreModal();
+ void PostModal();
+
+ BOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd,
+ void* lpDialogInit, HINSTANCE hInst);
+ BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd,
+ HINSTANCE hInst);
+
+protected:
+ //{{AFX_MSG(CDialog)
+ afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
+ afx_msg LRESULT HandleSetFont(WPARAM, LPARAM);
+ //}}AFX_MSG
+#ifdef _MAC
+ afx_msg void OnSysColorChange();
+#endif
+ DECLARE_MESSAGE_MAP()
+};
+
+// all CModalDialog functionality is now in CDialog
+#define CModalDialog CDialog
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Windows controls
+
+class CStatic : public CWnd
+{
+ DECLARE_DYNAMIC(CStatic)
+
+// Constructors
+public:
+ CStatic();
+ BOOL Create(LPCTSTR lpszText, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff);
+
+// Operations
+ HICON SetIcon(HICON hIcon);
+ HICON GetIcon() const;
+
+#if (WINVER >= 0x400)
+ HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);
+ HENHMETAFILE GetEnhMetaFile() const;
+ HBITMAP SetBitmap(HBITMAP hBitmap);
+ HBITMAP GetBitmap() const;
+ HCURSOR SetCursor(HCURSOR hCursor);
+ HCURSOR GetCursor();
+#endif
+
+// Implementation
+public:
+ virtual ~CStatic();
+};
+
+class CButton : public CWnd
+{
+ DECLARE_DYNAMIC(CButton)
+
+// Constructors
+public:
+ CButton();
+ BOOL Create(LPCTSTR lpszCaption, DWORD dwStyle,
+ const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ UINT GetState() const;
+ void SetState(BOOL bHighlight);
+ int GetCheck() const;
+ void SetCheck(int nCheck);
+ UINT GetButtonStyle() const;
+ void SetButtonStyle(UINT nStyle, BOOL bRedraw = TRUE);
+
+#if (WINVER >= 0x400)
+ HICON SetIcon(HICON hIcon);
+ HICON GetIcon() const;
+ HBITMAP SetBitmap(HBITMAP hBitmap);
+ HBITMAP GetBitmap() const;
+ HCURSOR SetCursor(HCURSOR hCursor);
+ HCURSOR GetCursor();
+#endif
+
+// Overridables (for owner draw only)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+
+// Implementation
+public:
+ virtual ~CButton();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CListBox : public CWnd
+{
+ DECLARE_DYNAMIC(CListBox)
+
+// Constructors
+public:
+ CListBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+
+ // for entire listbox
+ int GetCount() const;
+ int GetHorizontalExtent() const;
+ void SetHorizontalExtent(int cxExtent);
+ int GetTopIndex() const;
+ int SetTopIndex(int nIndex);
+ LCID GetLocale() const;
+ LCID SetLocale(LCID nNewLocale);
+#if (WINVER >= 0x400)
+ int InitStorage(int nItems, UINT nBytes);
+ UINT ItemFromPoint(CPoint pt, BOOL& bOutside) const;
+#endif
+ // for single-selection listboxes
+ int GetCurSel() const;
+ int SetCurSel(int nSelect);
+
+ // for multiple-selection listboxes
+ int GetSel(int nIndex) const; // also works for single-selection
+ int SetSel(int nIndex, BOOL bSelect = TRUE);
+ int GetSelCount() const;
+ int GetSelItems(int nMaxItems, LPINT rgIndex) const;
+ void SetAnchorIndex(int nIndex);
+ int GetAnchorIndex() const;
+
+ // for listbox items
+ DWORD GetItemData(int nIndex) const;
+ int SetItemData(int nIndex, DWORD dwItemData);
+ void* GetItemDataPtr(int nIndex) const;
+ int SetItemDataPtr(int nIndex, void* pData);
+ int GetItemRect(int nIndex, LPRECT lpRect) const;
+ int GetText(int nIndex, LPTSTR lpszBuffer) const;
+ void GetText(int nIndex, CString& rString) const;
+ int GetTextLen(int nIndex) const;
+
+ // Settable only attributes
+ void SetColumnWidth(int cxWidth);
+ BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
+ void SetTabStops();
+ BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
+
+ int SetItemHeight(int nIndex, UINT cyItemHeight);
+ int GetItemHeight(int nIndex) const;
+ int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const;
+ int GetCaretIndex() const;
+ int SetCaretIndex(int nIndex, BOOL bScroll = TRUE);
+
+// Operations
+ // manipulating listbox items
+ int AddString(LPCTSTR lpszItem);
+ int DeleteString(UINT nIndex);
+ int InsertString(int nIndex, LPCTSTR lpszItem);
+ void ResetContent();
+ int Dir(UINT attr, LPCTSTR lpszWildCard);
+
+ // selection helpers
+ int FindString(int nStartAfter, LPCTSTR lpszItem) const;
+ int SelectString(int nStartAfter, LPCTSTR lpszItem);
+ int SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem);
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+ virtual int VKeyToItem(UINT nKey, UINT nIndex);
+ virtual int CharToItem(UINT nKey, UINT nIndex);
+
+// Implementation
+public:
+ virtual ~CListBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CCheckListBox : public CListBox
+{
+ DECLARE_DYNAMIC(CCheckListBox)
+
+// Constructors
+public:
+ CCheckListBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ void SetCheckStyle(UINT nStyle);
+ UINT GetCheckStyle();
+ void SetCheck(int nIndex, int nCheck);
+ int GetCheck(int nIndex);
+ void Enable(int nIndex, BOOL bEnabled = TRUE);
+ BOOL IsEnabled(int nIndex);
+
+ virtual CRect OnGetCheckPosition(CRect rectItem, CRect rectCheckBox);
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+
+// Implementation
+protected:
+ void PreDrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ void PreMeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ int PreCompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ void PreDeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+
+#ifdef _DEBUG
+ virtual void PreSubclassWindow();
+#endif
+
+ int CalcMinimumItemHeight();
+ void InvalidateCheck(int nIndex);
+ void InvalidateItem(int nIndex);
+ int CheckFromPoint(CPoint point, BOOL& bInCheck);
+
+ int m_cyText;
+ UINT m_nStyle;
+
+ // Message map functions
+protected:
+ //{{AFX_MSG(CCheckListBox)
+ afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+ afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+ afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBAddString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBFindString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBFindStringExact(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBGetItemData(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBInsertString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBSelectString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBSetItemData(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnLBSetItemHeight(WPARAM wParam, LPARAM lParam);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+class CComboBox : public CWnd
+{
+ DECLARE_DYNAMIC(CComboBox)
+
+// Constructors
+public:
+ CComboBox();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ // for entire combo box
+ int GetCount() const;
+ int GetCurSel() const;
+ int SetCurSel(int nSelect);
+ LCID GetLocale() const;
+ LCID SetLocale(LCID nNewLocale);
+// Win4
+ int GetTopIndex() const;
+ int SetTopIndex(int nIndex);
+ int InitStorage(int nItems, UINT nBytes);
+ void SetHorizontalExtent(UINT nExtent);
+ UINT GetHorizontalExtent() const;
+ int SetDroppedWidth(UINT nWidth);
+ int GetDroppedWidth() const;
+
+ // for edit control
+ DWORD GetEditSel() const;
+ BOOL LimitText(int nMaxChars);
+ BOOL SetEditSel(int nStartChar, int nEndChar);
+
+ // for combobox item
+ DWORD GetItemData(int nIndex) const;
+ int SetItemData(int nIndex, DWORD dwItemData);
+ void* GetItemDataPtr(int nIndex) const;
+ int SetItemDataPtr(int nIndex, void* pData);
+ int GetLBText(int nIndex, LPTSTR lpszText) const;
+ void GetLBText(int nIndex, CString& rString) const;
+ int GetLBTextLen(int nIndex) const;
+
+ int SetItemHeight(int nIndex, UINT cyItemHeight);
+ int GetItemHeight(int nIndex) const;
+ int FindStringExact(int nIndexStart, LPCTSTR lpszFind) const;
+ int SetExtendedUI(BOOL bExtended = TRUE);
+ BOOL GetExtendedUI() const;
+ void GetDroppedControlRect(LPRECT lprect) const;
+ BOOL GetDroppedState() const;
+
+// Operations
+ // for drop-down combo boxes
+ void ShowDropDown(BOOL bShowIt = TRUE);
+
+ // manipulating listbox items
+ int AddString(LPCTSTR lpszString);
+ int DeleteString(UINT nIndex);
+ int InsertString(int nIndex, LPCTSTR lpszString);
+ void ResetContent();
+ int Dir(UINT attr, LPCTSTR lpszWildCard);
+
+ // selection helpers
+ int FindString(int nStartAfter, LPCTSTR lpszString) const;
+ int SelectString(int nStartAfter, LPCTSTR lpszString);
+
+ // Clipboard operations
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+// Overridables (must override draw, measure and compare for owner draw)
+ virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
+ virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
+ virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);
+ virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);
+
+// Implementation
+public:
+ virtual ~CComboBox();
+protected:
+ virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
+};
+
+class CEdit : public CWnd
+{
+ DECLARE_DYNAMIC(CEdit)
+
+// Constructors
+public:
+ CEdit();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ BOOL CanUndo() const;
+ int GetLineCount() const;
+ BOOL GetModify() const;
+ void SetModify(BOOL bModified = TRUE);
+ void GetRect(LPRECT lpRect) const;
+ DWORD GetSel() const;
+ void GetSel(int& nStartChar, int& nEndChar) const;
+ HLOCAL GetHandle() const;
+ void SetHandle(HLOCAL hBuffer);
+#if (WINVER >= 0x400)
+ void SetMargins(UINT nLeft, UINT nRight);
+ DWORD GetMargins() const;
+ void SetLimitText(UINT nMax);
+ UINT GetLimitText() const;
+ CPoint PosFromChar(UINT nChar) const;
+ int CharFromPos(CPoint pt) const;
+#endif
+
+ // NOTE: first word in lpszBuffer must contain the size of the buffer!
+ int GetLine(int nIndex, LPTSTR lpszBuffer) const;
+ int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
+
+// Operations
+ void EmptyUndoBuffer();
+ BOOL FmtLines(BOOL bAddEOL);
+
+ void LimitText(int nChars = 0);
+ int LineFromChar(int nIndex = -1) const;
+ int LineIndex(int nLine = -1) const;
+ int LineLength(int nLine = -1) const;
+ void LineScroll(int nLines, int nChars = 0);
+ void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);
+ void SetPasswordChar(TCHAR ch);
+ void SetRect(LPCRECT lpRect);
+ void SetRectNP(LPCRECT lpRect);
+ void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE);
+ void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = FALSE);
+#ifndef _MAC
+ BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
+ void SetTabStops();
+ BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
+#endif
+
+ // Clipboard operations
+ BOOL Undo();
+ void Clear();
+ void Copy();
+ void Cut();
+ void Paste();
+
+ BOOL SetReadOnly(BOOL bReadOnly = TRUE);
+ int GetFirstVisibleLine() const;
+ TCHAR GetPasswordChar() const;
+
+// Implementation
+public:
+ virtual ~CEdit();
+};
+
+class CScrollBar : public CWnd
+{
+ DECLARE_DYNAMIC(CScrollBar)
+
+// Constructors
+public:
+ CScrollBar();
+ BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
+
+// Attributes
+ int GetScrollPos() const;
+ int SetScrollPos(int nPos, BOOL bRedraw = TRUE);
+ void GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const;
+ void SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw = TRUE);
+ void ShowScrollBar(BOOL bShow = TRUE);
+
+ BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);
+
+ BOOL SetScrollInfo(LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE);
+ BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL);
+ int GetScrollLimit();
+
+// Implementation
+public:
+ virtual ~CScrollBar();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CFrameWnd - base class for SDI and other frame windows
+
+// Frame window styles
+#define FWS_ADDTOTITLE 0x00008000L // modify title based on content
+#define FWS_PREFIXTITLE 0x00004000L // show document name before app name
+#define FWS_SNAPTOBARS 0x00002000L // snap size to size of contained bars
+
+struct CPrintPreviewState; // forward reference (see afxext.h)
+class CControlBar; // forward reference (see afxext.h)
+
+class CDockBar; // forward reference (see afxpriv.h)
+class CMiniDockFrameWnd; // forward reference (see afxpriv.h)
+class CDockState; // forward reference (see afxpriv.h)
+
+class COleFrameHook; // forward reference (see ..\src\oleimpl.h)
+
+class CFrameWnd : public CWnd
+{
+ DECLARE_DYNCREATE(CFrameWnd)
+
+// Constructors
+public:
+ static AFX_DATA const CRect rectDefault;
+ CFrameWnd();
+
+ BOOL LoadAccelTable(LPCTSTR lpszResourceName);
+ BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName,
+ DWORD dwStyle = WS_OVERLAPPEDWINDOW,
+ const RECT& rect = rectDefault,
+ CWnd* pParentWnd = NULL, // != NULL for popups
+ LPCTSTR lpszMenuName = NULL,
+ DWORD dwExStyle = 0,
+ CCreateContext* pContext = NULL);
+
+ // dynamic creation - load frame and associated resources
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+
+ // special helper for view creation
+ CWnd* CreateView(CCreateContext* pContext, UINT nID = AFX_IDW_PANE_FIRST);
+
+// Attributes
+ virtual CDocument* GetActiveDocument();
+
+ // Active child view maintenance
+ CView* GetActiveView() const; // active view or NULL
+ void SetActiveView(CView* pViewNew, BOOL bNotify = TRUE);
+ // active view or NULL, bNotify == FALSE if focus should not be set
+
+ // Active frame (for frames within frames -- MDI)
+ virtual CFrameWnd* GetActiveFrame();
+
+ // For customizing the default messages on the status bar
+ virtual void GetMessageString(UINT nID, CString& rMessage) const;
+
+ BOOL m_bAutoMenuEnable;
+ // TRUE => menu items without handlers will be disabled
+
+ BOOL IsTracking() const;
+
+// Operations
+ virtual void RecalcLayout(BOOL bNotify = TRUE);
+ virtual void ActivateFrame(int nCmdShow = -1);
+ void InitialUpdateFrame(CDocument* pDoc, BOOL bMakeVisible);
+
+ // to set text of standard status bar
+ void SetMessageText(LPCTSTR lpszText);
+ void SetMessageText(UINT nID);
+
+ // control bar docking
+ void EnableDocking(DWORD dwDockStyle);
+ void DockControlBar(CControlBar* pBar, UINT nDockBarID = 0,
+ LPCRECT lpRect = NULL);
+ void FloatControlBar(CControlBar* pBar, CPoint point,
+ DWORD dwStyle = CBRS_ALIGN_TOP);
+ CControlBar* GetControlBar(UINT nID);
+
+ // frame window based modality
+ virtual void BeginModalState();
+ virtual void EndModalState();
+ BOOL InModalState() const;
+ void ShowOwnedWindows(BOOL bShow);
+
+ // saving and loading control bar state
+ void LoadBarState(LPCTSTR lpszProfileName);
+ void SaveBarState(LPCTSTR lpszProfileName) const;
+ void ShowControlBar(CControlBar* pBar, BOOL bShow, BOOL bDelay);
+ void SetDockState(const CDockState& state);
+ void GetDockState(CDockState& state) const;
+
+// Overridables
+ virtual void OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState);
+ virtual CWnd* GetMessageBar();
+
+ // border space negotiation
+ enum BorderCmd
+ { borderGet = 1, borderRequest = 2, borderSet = 3 };
+ virtual BOOL NegotiateBorderSpace(UINT nBorderCmd, LPRECT lpRectBorder);
+
+protected:
+ virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+
+// Command Handlers
+public:
+ afx_msg void OnContextHelp(); // for Shift+F1 help
+ afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnBarCheck(UINT nID);
+
+// Implementation
+public:
+ virtual ~CFrameWnd();
+ int m_nWindow; // general purpose window number - display as ":n"
+ // -1 => unknown, 0 => only window viewing document
+ // 1 => first of many windows viewing document, 2=> second
+
+ HMENU m_hMenuDefault; // default menu resource for this frame
+ HACCEL m_hAccelTable; // accelerator table
+ DWORD m_dwPromptContext; // current help prompt context for message box
+ BOOL m_bHelpMode; // if TRUE, then Shift+F1 help mode is active
+ CFrameWnd* m_pNextFrameWnd; // next CFrameWnd in app global list
+ CRect m_rectBorder; // for OLE border space negotiation
+ COleFrameHook* m_pNotifyHook;
+
+ CPtrList m_listControlBars; // array of all control bars that have this
+ // window as their dock site
+ int m_nShowDelay; // SW_ command for delay show/hide
+
+ CMiniDockFrameWnd* CreateFloatingFrame(DWORD dwStyle);
+ DWORD CanDock(CRect rect, DWORD dwDockStyle,
+ CDockBar** ppDockBar = NULL); // called by CDockContext
+ void AddControlBar(CControlBar *pBar);
+ void RemoveControlBar(CControlBar *pBar);
+ void DockControlBar(CControlBar* pBar, CDockBar* pDockBar,
+ LPCRECT lpRect = NULL);
+ void ReDockControlBar(CControlBar* pBar, CDockBar* pDockBar,
+ LPCRECT lpRect = NULL);
+ void NotifyFloatingWindows(DWORD dwFlags);
+ void DestroyDockBars();
+
+protected:
+ UINT m_nIDHelp; // Help ID (0 for none, see HID_BASE_RESOURCE)
+ UINT m_nIDTracking; // tracking command ID or string IDS
+ UINT m_nIDLastMessage; // last displayed message string IDS
+ CView* m_pViewActive; // current active view
+ BOOL (CALLBACK* m_lpfnCloseProc)(CFrameWnd* pFrameWnd);
+ UINT m_cModalStack; // BeginModalState depth
+ HWND* m_phWndDisable; // windows disabled because of BeginModalState
+ HMENU m_hMenuAlt; // menu to update to (NULL means default)
+ CString m_strTitle; // default title (original)
+ BOOL m_bInRecalcLayout; // avoid recursion in RecalcLayout
+ CRuntimeClass* m_pFloatingFrameClass;
+ static const DWORD dwDockBarMap[4][2];
+
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL IsFrameWnd() const;
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
+ virtual HACCEL GetDefaultAccelerator();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+
+ // idle update of frame user interface
+ enum IdleFlags
+ { idleMenu = 1, idleTitle = 2, idleNotify = 4, idleLayout = 8 };
+ UINT m_nIdleFlags; // set of bit flags for idle processing
+ virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
+ void DelayUpdateFrameTitle();
+ void DelayRecalcLayout(BOOL bNotify = TRUE);
+
+ // for Shift+F1 help support
+ BOOL CanEnterHelpMode();
+ virtual void ExitHelpMode();
+
+protected:
+ // implementation helpers
+ LPCTSTR GetIconWndClass(DWORD dwDefaultStyle, UINT nIDResource);
+ void UpdateFrameTitleForDocument(LPCTSTR lpszDocName);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+ virtual void PostNcDestroy(); // default to delete this.
+ int OnCreateHelper(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+ void BringToTop(int nCmdShow);
+ // bring window to top for SW_ commands which affect z-order
+
+ // implementation helpers for Shift+F1 help mode
+ BOOL ProcessHelpMsg(MSG& msg, DWORD* pContext);
+ HWND SetHelpCapture(POINT point, BOOL* pbDescendant);
+
+ // CFrameWnd list management
+ void AddFrameWnd();
+ void RemoveFrameWnd();
+
+ friend class CWnd; // for access to m_bModalDisable
+
+ //{{AFX_MSG(CFrameWnd)
+ // Windows messages
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnDestroy();
+ afx_msg void OnClose();
+ afx_msg void OnInitMenuPopup(CMenu*, UINT, BOOL);
+ afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
+ afx_msg LRESULT OnPopMessageString(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho);
+ afx_msg void OnSetFocus(CWnd* pOldWnd);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+ afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnSysCommand(UINT nID, LONG lParam);
+ afx_msg BOOL OnQueryEndSession();
+ afx_msg void OnEndSession(BOOL bEnding);
+ afx_msg void OnDropFiles(HDROP hDropInfo);
+ afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnActivateTopLevel(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnEnable(BOOL bEnable);
+ afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
+ afx_msg BOOL OnQueryNewPalette();
+ // standard commands
+ afx_msg BOOL OnToolTipText(UINT nID, NMHDR* pNMHDR, LRESULT* pResult);
+ afx_msg void OnUpdateKeyIndicator(CCmdUI* pCmdUI);
+ afx_msg void OnHelp();
+ afx_msg void OnUpdateContextHelp(CCmdUI* pCmdUI);
+ //}}AFX_MSG
+protected:
+#ifndef _MAC
+ afx_msg LRESULT OnDDEInitiate(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnDDEExecute(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnDDETerminate(WPARAM wParam, LPARAM lParam);
+#endif
+#ifdef _MAC
+ afx_msg void OnActivateApp(BOOL bActive, HTASK hTask);
+ afx_msg void OnPaint();
+#endif
+ DECLARE_MESSAGE_MAP()
+
+ friend class CWinApp;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// MDI Support
+
+class CMDIFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMDIFrameWnd)
+
+public:
+// Constructors
+ CMDIFrameWnd();
+
+// Operations
+ void MDIActivate(CWnd* pWndActivate);
+ CMDIChildWnd* MDIGetActive(BOOL* pbMaximized = NULL) const;
+ void MDIIconArrange();
+ void MDIMaximize(CWnd* pWnd);
+ void MDINext();
+ void MDIRestore(CWnd* pWnd);
+ CMenu* MDISetMenu(CMenu* pFrameMenu, CMenu* pWindowMenu);
+ void MDITile();
+ void MDICascade();
+ void MDITile(int nType);
+ void MDICascade(int nType);
+
+// Overridables
+ // MFC 1.0 backward compatible CreateClient hook (called by OnCreateClient)
+ virtual BOOL CreateClient(LPCREATESTRUCT lpCreateStruct, CMenu* pWindowMenu);
+ // customize if using an 'Window' menu with non-standard IDs
+ virtual HMENU GetWindowMenuPopup(HMENU hMenuBar);
+
+// Implementation
+public:
+ HWND m_hWndMDIClient; // MDI Client window handle
+
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL LoadFrame(UINT nIDResource,
+ DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
+ CWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+ virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual void OnUpdateFrameMenu(HMENU hMenuAlt);
+ virtual void DelayUpdateFrameMenu(HMENU hMenuAlt);
+ virtual CFrameWnd* GetActiveFrame();
+
+protected:
+ virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+
+ //{{AFX_MSG(CMDIFrameWnd)
+ afx_msg void OnDestroy();
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnUpdateMDIWindowCmd(CCmdUI* pCmdUI);
+ afx_msg BOOL OnMDIWindowCmd(UINT nID);
+ afx_msg void OnWindowNew();
+ afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
+ afx_msg void OnIdleUpdateCmdUI();
+ afx_msg LRESULT OnMenuChar(UINT nChar, UINT, CMenu*);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+class CMDIChildWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMDIChildWnd)
+
+// Constructors
+public:
+ CMDIChildWnd();
+
+ virtual BOOL Create(LPCTSTR lpszClassName,
+ LPCTSTR lpszWindowName,
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,
+ const RECT& rect = rectDefault,
+ CMDIFrameWnd* pParentWnd = NULL,
+ CCreateContext* pContext = NULL);
+
+// Attributes
+ CMDIFrameWnd* GetMDIFrame();
+
+// Operations
+ void MDIDestroy();
+ void MDIActivate();
+ void MDIMaximize();
+ void MDIRestore();
+
+// Implementation
+protected:
+ HMENU m_hMenuShared; // menu when we are active
+
+public:
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle,
+ CWnd* pParentWnd, CCreateContext* pContext = NULL);
+ // 'pParentWnd' parameter is required for MDI Child
+ virtual BOOL DestroyWindow();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual void ActivateFrame(int nCmdShow = -1);
+ virtual void OnUpdateFrameMenu(BOOL bActive, CWnd* pActivateWnd,
+ HMENU hMenuAlt);
+
+ BOOL m_bPseudoInactive; // TRUE if window is MDI active according to
+ // windows, but not according to MFC...
+
+protected:
+ virtual CWnd* GetMessageBar();
+ virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
+ virtual LRESULT DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam);
+ BOOL UpdateClientEdge(LPRECT lpRect = NULL);
+
+ //{{AFX_MSG(CMDIChildWnd)
+ afx_msg void OnMDIActivate(BOOL bActivate, CWnd*, CWnd*);
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnDestroy();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd
+
+// MiniFrame window styles
+#define MFS_SYNCACTIVE 0x00000100L // syncronize activation w/ parent
+#define MFS_4THICKFRAME 0x00000200L // thick frame all around (no tiles)
+#define MFS_THICKFRAME 0x00000400L // use instead of WS_THICKFRAME
+#define MFS_MOVEFRAME 0x00000800L // no sizing, just moving
+#define MFS_BLOCKSYSMENU 0x00001000L // block hit testing on system menu
+
+class CMiniFrameWnd : public CFrameWnd
+{
+ DECLARE_DYNCREATE(CMiniFrameWnd)
+
+// Constructors
+public:
+ CMiniFrameWnd();
+ BOOL Create(LPCTSTR lpClassName, LPCTSTR lpWindowName,
+ DWORD dwStyle, const RECT& rect,
+ CWnd* pParentWnd = NULL, UINT nID = 0);
+ BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName,
+ DWORD dwStyle, const RECT& rect,
+ CWnd* pParentWnd = NULL, UINT nID = 0);
+
+// Implementation
+public:
+ ~CMiniFrameWnd();
+
+ static void AFX_CDECL Initialize();
+
+ //{{AFX_MSG(CMiniFrameWnd)
+ afx_msg BOOL OnNcActivate(BOOL bActive);
+ afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpParams);
+ afx_msg UINT OnNcHitTest(CPoint point);
+ afx_msg void OnNcPaint();
+ afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint pt );
+ afx_msg void OnLButtonUp(UINT nFlags, CPoint pt );
+ afx_msg void OnMouseMove(UINT nFlags, CPoint pt );
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnGetMinMaxInfo(MINMAXINFO* pMMI);
+ afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnFloatStatus(WPARAM wParam, LPARAM lParam);
+ afx_msg LRESULT OnQueryCenterWnd(WPARAM wParam, LPARAM lParam);
+ afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+public:
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+
+ static void PASCAL CalcBorders(LPRECT lpClientRect,
+ DWORD dwStyle = WS_THICKFRAME | WS_CAPTION, DWORD dwExStyle = 0);
+
+protected:
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+protected:
+ BOOL m_bSysTracking;
+ BOOL m_bInSys;
+ BOOL m_bActive;
+ CString m_strCaption;
+
+ void InvertSysMenu();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CView is the client area UI for a document
+
+class CPrintDialog; // forward reference (see afxdlgs.h)
+class CPreviewView; // forward reference (see afxpriv.h)
+class CSplitterWnd; // forward reference (see afxext.h)
+class COleServerDoc; // forward reference (see afxole.h)
+
+typedef DWORD DROPEFFECT;
+class COleDataObject; // forward reference (see afxole.h)
+
+class CView : public CWnd
+{
+ DECLARE_DYNAMIC(CView)
+
+// Constructors
+protected:
+ CView();
+
+// Attributes
+public:
+ CDocument* GetDocument() const;
+
+// Operations
+public:
+ // for standard printing setup (override OnPreparePrinting)
+ BOOL DoPreparePrinting(CPrintInfo* pInfo);
+
+// Overridables
+public:
+ virtual BOOL IsSelected(const CObject* pDocItem) const; // support for OLE
+
+ // OLE scrolling support (used for drag/drop as well)
+ virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
+ virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
+
+ // OLE drag/drop support
+ virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject,
+ DWORD dwKeyState, CPoint point);
+ virtual void OnDragLeave();
+ virtual BOOL OnDrop(COleDataObject* pDataObject,
+ DROPEFFECT dropEffect, CPoint point);
+ virtual DROPEFFECT OnDropEx(COleDataObject* pDataObject,
+ DROPEFFECT dropDefault, DROPEFFECT dropList, CPoint point);
+ virtual DROPEFFECT OnDragScroll(DWORD dwKeyState, CPoint point);
+
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+
+ virtual void OnInitialUpdate(); // called first time after construct
+
+protected:
+ // Activation
+ virtual void OnActivateView(BOOL bActivate, CView* pActivateView,
+ CView* pDeactiveView);
+ virtual void OnActivateFrame(UINT nState, CFrameWnd* pFrameWnd);
+
+ // General drawing/updating
+ virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
+ virtual void OnDraw(CDC* pDC) = 0;
+
+ // Printing support
+ virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
+ // must override to enable printing and print preview
+
+ virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
+ virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
+
+ // Advanced: end print preview mode, move to point
+ virtual void OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point,
+ CPreviewView* pView);
+
+// Implementation
+public:
+ virtual ~CView();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+ // Advanced: for implementing custom print preview
+ BOOL DoPrintPreview(UINT nIDResource, CView* pPrintView,
+ CRuntimeClass* pPreviewViewClass, CPrintPreviewState* pState);
+
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+ virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
+ static CSplitterWnd* PASCAL GetParentSplitter(
+ const CWnd* pWnd, BOOL bAnyState);
+
+protected:
+ CDocument* m_pDocument;
+
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+ virtual void PostNcDestroy();
+
+ // friend classes that call protected CView overridables
+ friend class CDocument;
+ friend class CDocTemplate;
+ friend class CPreviewView;
+ friend class CFrameWnd;
+ friend class CMDIFrameWnd;
+ friend class CMDIChildWnd;
+ friend class CSplitterWnd;
+ friend class COleServerDoc;
+ friend class CDocObjectServer;
+
+ //{{AFX_MSG(CView)
+ afx_msg int OnCreate(LPCREATESTRUCT lpcs);
+ afx_msg void OnDestroy();
+ afx_msg void OnPaint();
+ afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
+ // commands
+ afx_msg void OnUpdateSplitCmd(CCmdUI* pCmdUI);
+ afx_msg BOOL OnSplitCmd(UINT nID);
+ afx_msg void OnUpdateNextPaneMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnNextPaneCmd(UINT nID);
+
+ // not mapped commands - must be mapped in derived class
+ afx_msg void OnFilePrint();
+ afx_msg void OnFilePrintPreview();
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CCtrlView allows almost any control to be a view
+
+class CCtrlView : public CView
+{
+ DECLARE_DYNCREATE(CCtrlView)
+
+public:
+ CCtrlView(LPCTSTR lpszClass, DWORD dwStyle);
+
+// Attributes
+protected:
+ CString m_strClass;
+ DWORD m_dwDefaultStyle;
+
+// Overrides
+ virtual void OnDraw(CDC*);
+ virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+
+// Implementation
+public:
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected:
+ afx_msg void OnPaint();
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CScrollView supports simple scrolling and scaling
+
+class CScrollView : public CView
+{
+ DECLARE_DYNAMIC(CScrollView)
+
+// Constructors
+protected:
+ CScrollView();
+
+public:
+ static AFX_DATA const SIZE sizeDefault;
+ // used to specify default calculated page and line sizes
+
+ // in logical units - call one of the following Set routines
+ void SetScaleToFitSize(SIZE sizeTotal);
+ void SetScrollSizes(int nMapMode, SIZE sizeTotal,
+ const SIZE& sizePage = sizeDefault,
+ const SIZE& sizeLine = sizeDefault);
+
+// Attributes
+public:
+ CPoint GetScrollPosition() const; // upper corner of scrolling
+ CSize GetTotalSize() const; // logical size
+
+ // for device units
+ CPoint GetDeviceScrollPosition() const;
+ void GetDeviceScrollSizes(int& nMapMode, SIZE& sizeTotal,
+ SIZE& sizePage, SIZE& sizeLine) const;
+
+// Operations
+public:
+ void ScrollToPosition(POINT pt); // set upper left position
+ void FillOutsideRect(CDC* pDC, CBrush* pBrush);
+ void ResizeParentToFit(BOOL bShrinkOnly = TRUE);
+
+// Implementation
+protected:
+ int m_nMapMode;
+ CSize m_totalLog; // total size in logical units (no rounding)
+ CSize m_totalDev; // total size in device units
+ CSize m_pageDev; // per page scroll size in device units
+ CSize m_lineDev; // per line scroll size in device units
+
+ BOOL m_bCenter; // Center output if larger than total size
+ BOOL m_bInsideUpdate; // internal state for OnSize callback
+ void CenterOnPoint(CPoint ptCenter);
+ void ScrollToDevicePosition(POINT ptDev); // explicit scrolling no checking
+
+protected:
+ virtual void OnDraw(CDC* pDC) = 0; // pass on pure virtual
+
+ void UpdateBars(); // adjust scrollbars etc
+ BOOL GetTrueClientSize(CSize& size, CSize& sizeSb);
+ // size with no bars
+ void GetScrollBarSizes(CSize& sizeSb);
+ void GetScrollBarState(CSize sizeClient, CSize& needSb,
+ CSize& sizeRange, CPoint& ptMove, BOOL bInsideClient);
+
+public:
+ virtual ~CScrollView();
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+ virtual void CalcWindowRect(LPRECT lpClientRect,
+ UINT nAdjustType = adjustBorder);
+ virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
+
+ // scrolling implementation support for OLE
+ virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
+ virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);
+
+ //{{AFX_MSG(CScrollView)
+ afx_msg void OnSize(UINT nType, int cx, int cy);
+ afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWinThread
+
+typedef UINT (AFX_CDECL *AFX_THREADPROC)(LPVOID);
+
+class COleMessageFilter; // forward reference (see afxole.h)
+
+class CWinThread : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CWinThread)
+
+public:
+// Constructors
+ CWinThread();
+ BOOL CreateThread(DWORD dwCreateFlags = 0, UINT nStackSize = 0,
+ LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+
+// Attributes
+ CWnd* m_pMainWnd; // main window (usually same AfxGetApp()->m_pMainWnd)
+ CWnd* m_pActiveWnd; // active main window (may not be m_pMainWnd)
+ BOOL m_bAutoDelete; // enables 'delete this' after thread termination
+
+ // only valid while running
+ HANDLE m_hThread; // this thread's HANDLE
+ operator HANDLE() const;
+ DWORD m_nThreadID; // this thread's ID
+
+ int GetThreadPriority();
+ BOOL SetThreadPriority(int nPriority);
+
+// Operations
+ DWORD SuspendThread();
+ DWORD ResumeThread();
+ BOOL PostThreadMessage(UINT message, WPARAM wParam, LPARAM lParam);
+
+// Overridables
+ // thread initialization
+ virtual BOOL InitInstance();
+
+ // running and idle processing
+ virtual int Run();
+ virtual BOOL PreTranslateMessage(MSG* pMsg);
+ virtual BOOL PumpMessage(); // low level message pump
+ virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
+ virtual BOOL IsIdleMessage(MSG* pMsg); // checks for special messages
+
+ // thread termination
+ virtual int ExitInstance(); // default will 'delete this'
+
+ // Advanced: exception handling
+ virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg);
+
+ // Advanced: handling messages sent to message filter hook
+ virtual BOOL ProcessMessageFilter(int code, LPMSG lpMsg);
+
+ // Advanced: virtual access to m_pMainWnd
+ virtual CWnd* GetMainWnd();
+
+// Implementation
+public:
+ virtual ~CWinThread();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+ int m_nDisablePumpCount; // Diagnostic trap to detect illegal re-entrancy
+#endif
+ void CommonConstruct();
+ virtual void Delete();
+ // 'delete this' only if m_bAutoDelete == TRUE
+
+ // message pump for Run
+ MSG m_msgCur; // current message
+
+public:
+ // constructor used by implementation of AfxBeginThread
+ CWinThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam);
+
+ // valid after construction
+ LPVOID m_pThreadParams; // generic parameters passed to starting function
+ AFX_THREADPROC m_pfnThreadProc;
+
+ // set after OLE is initialized
+ void (AFXAPI* m_lpfnOleTermOrFreeLib)(BOOL, BOOL);
+ COleMessageFilter* m_pMessageFilter;
+
+protected:
+ CPoint m_ptCursorLast; // last mouse position
+ UINT m_nMsgLast; // last mouse message
+ void DispatchThreadMessage(MSG* msg); // helper
+};
+
+// global helpers for threads
+
+CWinThread* AFXAPI AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam,
+ int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,
+ DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+CWinThread* AFXAPI AfxBeginThread(CRuntimeClass* pThreadClass,
+ int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,
+ DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
+
+CWinThread* AFXAPI AfxGetThread();
+void AFXAPI AfxEndThread(UINT nExitCode, BOOL bDelete = TRUE);
+
+void AFXAPI AfxInitThread();
+void AFXAPI AfxTermThread(HINSTANCE hInstTerm = NULL);
+
+/////////////////////////////////////////////////////////////////////////////
+// Global functions for access to the one and only CWinApp
+
+#define afxCurrentWinApp AfxGetModuleState()->m_pCurrentWinApp
+#define afxCurrentInstanceHandle AfxGetModuleState()->m_hCurrentInstanceHandle
+#define afxCurrentResourceHandle AfxGetModuleState()->m_hCurrentResourceHandle
+#define afxCurrentAppName AfxGetModuleState()->m_lpszCurrentAppName
+#define afxContextIsDLL AfxGetModuleState()->m_bDLL
+#define afxRegisteredClasses AfxGetModuleState()->m_fRegisteredClasses
+
+#ifndef _AFX_NO_OCC_SUPPORT
+#define afxOccManager AfxGetModuleState()->m_pOccManager
+#endif
+
+// Advanced initialization: for overriding default WinMain
+BOOL AFXAPI AfxWinInit(HINSTANCE, HINSTANCE, LPTSTR, int);
+void AFXAPI AfxWinTerm();
+
+// Global Windows state data helper functions (inlines)
+CWinApp* AFXAPI AfxGetApp();
+CWnd* AFXAPI AfxGetMainWnd();
+HINSTANCE AFXAPI AfxGetInstanceHandle();
+HINSTANCE AFXAPI AfxGetResourceHandle();
+void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource);
+LPCTSTR AFXAPI AfxGetAppName();
+
+// Use instead of PostQuitMessage in OLE server applications
+void AFXAPI AfxPostQuitMessage(int nExitCode);
+
+// Use AfxFindResourceHandle to find resource in chain of extension DLLs
+#ifndef _AFXDLL
+#define AfxFindResourceHandle(lpszResource, lpszType) AfxGetResourceHandle()
+#else
+HINSTANCE AFXAPI AfxFindResourceHandle(LPCTSTR lpszName, LPCTSTR lpszType);
+#endif
+
+class CRecentFileList; // forward reference (see afxpriv.h)
+
+// access to message filter in CWinApp
+COleMessageFilter* AFXAPI AfxOleGetMessageFilter();
+
+/////////////////////////////////////////////////////////////////////////////
+// CCommandLineInfo
+
+class CCommandLineInfo : public CObject
+{
+public:
+ // Sets default values
+ CCommandLineInfo();
+
+ //REVIEW: Keep char* version on UNICODE for source-code backwards
+ //compatibility
+ virtual void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast);
+#ifdef UNICODE
+ virtual void ParseParam(const char* pszParam, BOOL bFlag, BOOL bLast);
+#endif
+
+ BOOL m_bShowSplash;
+ BOOL m_bRunEmbedded;
+ BOOL m_bRunAutomated;
+ enum { FileNew, FileOpen, FilePrint, FilePrintTo, FileDDE,
+ AppUnregister, FileNothing = -1 } m_nShellCommand;
+
+ // not valid for FileNew
+ CString m_strFileName;
+
+ // valid only for FilePrintTo
+ CString m_strPrinterName;
+ CString m_strDriverName;
+ CString m_strPortName;
+
+ ~CCommandLineInfo();
+// Implementation
+protected:
+ void ParseParamFlag(const char* pszParam);
+ void ParseParamNotFlag(const TCHAR* pszParam);
+#ifdef UNICODE
+ void ParseParamNotFlag(const char* pszParam);
+#endif
+ void ParseLast(BOOL bLast);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CDocManager
+
+class CDocManager : public CObject
+{
+ DECLARE_DYNAMIC(CDocManager)
+public:
+
+// Constructor
+ CDocManager();
+
+ //Document functions
+ virtual void AddDocTemplate(CDocTemplate* pTemplate);
+ virtual POSITION GetFirstDocTemplatePosition() const;
+ virtual CDocTemplate* GetNextDocTemplate(POSITION& pos) const;
+ virtual void RegisterShellFileTypes(BOOL bCompat);
+ virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName); // open named file
+ virtual BOOL SaveAllModified(); // save before exit
+ virtual void CloseAllDocuments(BOOL bEndSession); // close documents before exiting
+ virtual int GetOpenDocumentCount();
+
+ // helper for standard commdlg dialogs
+ virtual BOOL DoPromptFileName(CString& fileName, UINT nIDSTitle,
+ DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate);
+
+//Commands
+#ifndef _MAC
+ // Advanced: process async DDE request
+ virtual BOOL OnDDECommand(LPTSTR lpszCommand);
+#endif
+ virtual void OnFileNew();
+ virtual void OnFileOpen();
+
+// Implementation
+protected:
+ CPtrList m_templateList;
+
+public:
+ static CPtrList* pStaticList; // for static CDocTemplate objects
+ static BOOL bStaticInit; // TRUE during static initialization
+ static CDocManager* pStaticDocManager; // for static CDocTemplate objects
+
+public:
+ virtual ~CDocManager();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CWinApp - the root of all Windows applications
+
+#define _AFX_MRU_COUNT 4 // default support for 4 entries in file MRU
+#define _AFX_MRU_MAX_COUNT 16 // currently allocated id range supports 16
+
+class CWinApp : public CWinThread
+{
+ DECLARE_DYNAMIC(CWinApp)
+public:
+
+// Constructor
+ CWinApp(LPCTSTR lpszAppName = NULL); // app name defaults to EXE name
+
+// Attributes
+ // Startup args (do not change)
+ HINSTANCE m_hInstance;
+ HINSTANCE m_hPrevInstance;
+ LPTSTR m_lpCmdLine;
+ int m_nCmdShow;
+
+ // Running args (can be changed in InitInstance)
+ LPCTSTR m_pszAppName; // human readable name
+ // (from constructor or AFX_IDS_APP_TITLE)
+ LPCTSTR m_pszRegistryKey; // used for registry entries
+ CDocManager* m_pDocManager;
+
+ // Support for Shift+F1 help mode.
+ BOOL m_bHelpMode; // are we in Shift+F1 mode?
+
+#ifdef _MAC
+ // Support for AppleEvent interaction levels
+ enum SaveOption
+ {
+ saveYes, // always save modified documents
+ saveNo, // never save modified documents
+ saveAsk // ask user whether to save modified documents
+ };
+ SaveOption m_nSaveOption;
+#endif
+
+public: // set in constructor to override default
+ LPCTSTR m_pszExeName; // executable name (no spaces)
+ LPCTSTR m_pszHelpFilePath; // default based on module path
+ LPCTSTR m_pszProfileName; // default based on app name
+
+// Initialization Operations - should be done in InitInstance
+protected:
+ void LoadStdProfileSettings(UINT nMaxMRU = _AFX_MRU_COUNT); // load MRU file list and last preview state
+ void EnableShellOpen();
+
+ void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192, 192),
+ COLORREF clrCtlText = RGB(0, 0, 0));
+ // set dialog box and message box background color
+
+ void SetRegistryKey(LPCTSTR lpszRegistryKey);
+ void SetRegistryKey(UINT nIDRegistryKey);
+ // enables app settings in registry instead of INI files
+ // (registry key is usually a "company name")
+
+#ifdef _MAC
+ friend void CFrameWnd::OnSysColorChange();
+ friend void CDialog::OnSysColorChange();
+#endif
+
+ BOOL Enable3dControls(); // use CTL3D32.DLL for 3D controls in dialogs
+#ifndef _AFXDLL
+ BOOL Enable3dControlsStatic(); // statically link CTL3D.LIB instead
+#endif
+
+ void RegisterShellFileTypes(BOOL bCompat=FALSE);
+ // call after all doc templates are registered
+ void RegisterShellFileTypesCompat();
+ // for backwards compatibility
+
+// Helper Operations - usually done in InitInstance
+public:
+ // Cursors
+ HCURSOR LoadCursor(LPCTSTR lpszResourceName) const;
+ HCURSOR LoadCursor(UINT nIDResource) const;
+ HCURSOR LoadStandardCursor(LPCTSTR lpszCursorName) const; // for IDC_ values
+ HCURSOR LoadOEMCursor(UINT nIDCursor) const; // for OCR_ values
+
+ // Icons
+ HICON LoadIcon(LPCTSTR lpszResourceName) const;
+ HICON LoadIcon(UINT nIDResource) const;
+ HICON LoadStandardIcon(LPCTSTR lpszIconName) const; // for IDI_ values
+ HICON LoadOEMIcon(UINT nIDIcon) const; // for OIC_ values
+
+ // Profile settings (to the app specific .INI file, or registry)
+ UINT GetProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault);
+ BOOL WriteProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue);
+ CString GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPCTSTR lpszDefault = NULL);
+ BOOL WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPCTSTR lpszValue);
+ BOOL GetProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPBYTE* ppData, UINT* pBytes);
+ BOOL WriteProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry,
+ LPBYTE pData, UINT nBytes);
+
+#ifndef _MAC
+ BOOL Unregister();
+ LONG DelRegTree(HKEY hParentKey, const CString& strKeyName);
+#endif
+
+// Running Operations - to be done on a running application
+ // Dealing with document templates
+ void AddDocTemplate(CDocTemplate* pTemplate);
+ POSITION GetFirstDocTemplatePosition() const;
+ CDocTemplate* GetNextDocTemplate(POSITION& pos) const;
+
+ // Dealing with files
+ virtual CDocument* OpenDocumentFile(LPCTSTR lpszFileName); // open named file
+ virtual void AddToRecentFileList(LPCTSTR lpszPathName); // add to MRU
+
+ // Printer DC Setup routine, 'struct tagPD' is a PRINTDLG structure
+ void SelectPrinter(HANDLE hDevNames, HANDLE hDevMode,
+ BOOL bFreeOld = TRUE);
+ BOOL CreatePrinterDC(CDC& dc);
+#ifndef _UNICODE
+ BOOL GetPrinterDeviceDefaults(struct tagPDA* pPrintDlg);
+#else
+ BOOL GetPrinterDeviceDefaults(struct tagPDW* pPrintDlg);
+#endif
+
+ // Command line parsing
+ BOOL RunEmbedded();
+ BOOL RunAutomated();
+ void ParseCommandLine(CCommandLineInfo& rCmdInfo);
+ BOOL ProcessShellCommand(CCommandLineInfo& rCmdInfo);
+
+// Overridables
+ // hooks for your initialization code
+ virtual BOOL InitApplication();
+#ifdef _MAC
+ virtual BOOL CreateInitialDocument();
+#endif
+
+ // exiting
+ virtual BOOL SaveAllModified(); // save before exit
+ void HideApplication();
+ void CloseAllDocuments(BOOL bEndSession); // close documents before exiting
+
+ // Advanced: to override message boxes and other hooks
+ virtual int DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt);
+ virtual void DoWaitCursor(int nCode); // 0 => restore, 1=> begin, -1=> end
+
+#ifndef _MAC
+ // Advanced: process async DDE request
+ virtual BOOL OnDDECommand(LPTSTR lpszCommand);
+#endif
+
+ // Advanced: Help support
+ virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
+
+// Command Handlers
+protected:
+ // map to the following for file new/open
+ afx_msg void OnFileNew();
+ afx_msg void OnFileOpen();
+
+ // map to the following to enable print setup
+ afx_msg void OnFilePrintSetup();
+
+ // map to the following to enable help
+ afx_msg void OnContextHelp(); // shift-F1
+ afx_msg void OnHelp(); // F1 (uses current context)
+ afx_msg void OnHelpIndex(); // ID_HELP_INDEX
+ afx_msg void OnHelpFinder(); // ID_HELP_FINDER, ID_DEFAULT_HELP
+ afx_msg void OnHelpUsing(); // ID_HELP_USING
+
+// Implementation
+protected:
+ HGLOBAL m_hDevMode; // printer Dev Mode
+ HGLOBAL m_hDevNames; // printer Device Names
+ DWORD m_dwPromptContext; // help context override for message box
+
+ int m_nWaitCursorCount; // for wait cursor (>0 => waiting)
+ HCURSOR m_hcurWaitCursorRestore; // old cursor to restore after wait cursor
+
+ CRecentFileList* m_pRecentFileList;
+
+ void UpdatePrinterSelection(BOOL bForceDefaults);
+ void SaveStdProfileSettings(); // save options to .INI file
+
+public: // public for implementation access
+ CCommandLineInfo* m_pCmdInfo;
+
+ ATOM m_atomApp, m_atomSystemTopic; // for DDE open
+ UINT m_nNumPreviewPages; // number of default printed pages
+
+ size_t m_nSafetyPoolSize; // ideal size
+
+ void (AFXAPI* m_lpfnDaoTerm)();
+
+ void DevModeChange(LPTSTR lpDeviceName);
+ void SetCurrentHandles();
+ int GetOpenDocumentCount();
+
+ // helpers for standard commdlg dialogs
+ BOOL DoPromptFileName(CString& fileName, UINT nIDSTitle,
+ DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate);
+ int DoPrintDialog(CPrintDialog* pPD);
+
+ void EnableModeless(BOOL bEnable); // to disable OLE in-place dialogs
+
+ // overrides for implementation
+ virtual BOOL InitInstance();
+ virtual int ExitInstance(); // return app exit code
+ virtual int Run();
+ virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
+ virtual LRESULT ProcessWndProcException(CException* e, const MSG* pMsg);
+
+public:
+ virtual ~CWinApp();
+#ifdef _DEBUG
+ virtual void AssertValid() const;
+ virtual void Dump(CDumpContext& dc) const;
+#endif
+
+#ifndef _MAC
+ // helpers for registration
+ HKEY GetSectionKey(LPCTSTR lpszSection);
+ HKEY GetAppRegistryKey();
+#endif
+
+protected:
+ //{{AFX_MSG(CWinApp)
+ afx_msg void OnAppExit();
+ afx_msg void OnUpdateRecentFileMenu(CCmdUI* pCmdUI);
+ afx_msg BOOL OnOpenRecentFile(UINT nID);
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CWaitCursor
+
+class CWaitCursor
+{
+// Construction/Destruction
+public:
+ CWaitCursor();
+ ~CWaitCursor();
+
+// Operations
+public:
+ void Restore();
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CDocTemplate creates documents
+
+class CDocTemplate : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDocTemplate)
+
+// Constructors
+protected:
+ CDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+public:
+ virtual void LoadTemplate();
+
+// Attributes
+public:
+ // setup for OLE containers
+ void SetContainerInfo(UINT nIDOleInPlaceContainer);
+
+ // setup for OLE servers
+ void SetServerInfo(UINT nIDOleEmbedding, UINT nIDOleInPlaceServer = 0,
+ CRuntimeClass* pOleFrameClass = NULL, CRuntimeClass* pOleViewClass = NULL);
+
+ // iterating over open documents
+ virtual POSITION GetFirstDocPosition() const = 0;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const = 0;
+
+// Operations
+public:
+ virtual void AddDocument(CDocument* pDoc); // must override
+ virtual void RemoveDocument(CDocument* pDoc); // must override
+
+ enum DocStringIndex
+ {
+ windowTitle, // default window title
+ docName, // user visible name for default document
+ fileNewName, // user visible name for FileNew
+ // for file based documents:
+#ifndef _MAC
+ filterName, // user visible name for FileOpen
+ filterExt, // user visible extension for FileOpen
+#else
+ filterWinName, // user visible name for FileOpen
+ filterWinExt, // user visible extension for FileOpen
+#endif
+ // for file based documents with Shell open support:
+ regFileTypeId, // REGEDIT visible registered file type identifier
+ regFileTypeName, // Shell visible registered file type name
+ // for Macintosh file based documents:
+#ifdef _MAC
+ filterExt, // Macintosh file type for FileOpen
+ filterName // user visible name for Macintosh FileOpen
+#else
+ filterMacExt, // Macintosh file type for FileOpen
+ filterMacName // user visible name for Macintosh FileOpen
+#endif
+ };
+ virtual BOOL GetDocString(CString& rString,
+ enum DocStringIndex index) const; // get one of the info strings
+ CFrameWnd* CreateOleFrame(CWnd* pParentWnd, CDocument* pDoc,
+ BOOL bCreateView);
+
+// Overridables
+public:
+ enum Confidence
+ {
+ noAttempt,
+ maybeAttemptForeign,
+ maybeAttemptNative,
+ yesAttemptForeign,
+ yesAttemptNative,
+ yesAlreadyOpen
+ };
+#ifndef _MAC
+ virtual Confidence MatchDocType(LPCTSTR lpszPathName,
+ CDocument*& rpDocMatch);
+#else
+ virtual Confidence MatchDocType(LPCTSTR lpszFileName,
+ DWORD dwFileType, CDocument*& rpDocMatch);
+#endif
+ virtual CDocument* CreateNewDocument();
+ virtual CFrameWnd* CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther);
+ virtual void InitialUpdateFrame(CFrameWnd* pFrame, CDocument* pDoc,
+ BOOL bMakeVisible = TRUE);
+ virtual BOOL SaveAllModified(); // for all documents
+ virtual void CloseAllDocuments(BOOL bEndSession);
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE) = 0;
+ // open named file
+ // if lpszPathName == NULL => create new file with this type
+ virtual void SetDefaultTitle(CDocument* pDocument) = 0;
+
+// Implementation
+public:
+ BOOL m_bAutoDelete;
+ virtual ~CDocTemplate();
+
+ // back pointer to OLE or other server (NULL if none or disabled)
+ CObject* m_pAttachedFactory;
+
+ // menu & accelerator resources for in-place container
+ HMENU m_hMenuInPlace;
+ HACCEL m_hAccelInPlace;
+
+ // menu & accelerator resource for server editing embedding
+ HMENU m_hMenuEmbedding;
+ HACCEL m_hAccelEmbedding;
+
+ // menu & accelerator resource for server editing in-place
+ HMENU m_hMenuInPlaceServer;
+ HACCEL m_hAccelInPlaceServer;
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif
+ virtual void OnIdle(); // for all documents
+
+protected:
+ UINT m_nIDResource; // IDR_ for frame/menu/accel as well
+ UINT m_nIDServerResource; // IDR_ for OLE inplace frame/menu/accel
+ UINT m_nIDEmbeddingResource; // IDR_ for OLE open frame/menu/accel
+ UINT m_nIDContainerResource; // IDR_ for container frame/menu/accel
+
+ CRuntimeClass* m_pDocClass; // class for creating new documents
+ CRuntimeClass* m_pFrameClass; // class for creating new frames
+ CRuntimeClass* m_pViewClass; // class for creating new views
+ CRuntimeClass* m_pOleFrameClass; // class for creating in-place frame
+ CRuntimeClass* m_pOleViewClass; // class for creating in-place view
+
+ CString m_strDocStrings; // '\n' separated names
+ // The document names sub-strings are represented as _one_ string:
+ // windowTitle\ndocName\n ... (see DocStringIndex enum)
+};
+
+// SDI support (1 document only)
+class CSingleDocTemplate : public CDocTemplate
+{
+ DECLARE_DYNAMIC(CSingleDocTemplate)
+
+// Constructors
+public:
+ CSingleDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+
+// Implementation
+public:
+ virtual ~CSingleDocTemplate();
+ virtual void AddDocument(CDocument* pDoc);
+ virtual void RemoveDocument(CDocument* pDoc);
+ virtual POSITION GetFirstDocPosition() const;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const;
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
+ virtual void SetDefaultTitle(CDocument* pDocument);
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected: // standard implementation
+ CDocument* m_pOnlyDoc;
+};
+
+// MDI support (zero or more documents)
+class CMultiDocTemplate : public CDocTemplate
+{
+ DECLARE_DYNAMIC(CMultiDocTemplate)
+
+// Constructors
+public:
+ CMultiDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
+ CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
+
+// Implementation
+public:
+ // Menu and accel table for MDI Child windows of this type
+ HMENU m_hMenuShared;
+ HACCEL m_hAccelTable;
+
+ virtual ~CMultiDocTemplate();
+ virtual void LoadTemplate();
+ virtual void AddDocument(CDocument* pDoc);
+ virtual void RemoveDocument(CDocument* pDoc);
+ virtual POSITION GetFirstDocPosition() const;
+ virtual CDocument* GetNextDoc(POSITION& rPos) const;
+ virtual CDocument* OpenDocumentFile(
+ LPCTSTR lpszPathName, BOOL bMakeVisible = TRUE);
+ virtual void SetDefaultTitle(CDocument* pDocument);
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+
+protected: // standard implementation
+ CPtrList m_docList; // open documents of this type
+ UINT m_nUntitledCount; // start at 0, for "Document1" title
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// class CDocument is the main document data abstraction
+
+class CDocument : public CCmdTarget
+{
+ DECLARE_DYNAMIC(CDocument)
+
+public:
+// Constructors
+ CDocument();
+
+// Attributes
+public:
+ const CString& GetTitle() const;
+ virtual void SetTitle(LPCTSTR lpszTitle);
+ const CString& GetPathName() const;
+ virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE);
+
+ CDocTemplate* GetDocTemplate() const;
+ virtual BOOL IsModified();
+ virtual void SetModifiedFlag(BOOL bModified = TRUE);
+
+// Operations
+ void AddView(CView* pView);
+ void RemoveView(CView* pView);
+ virtual POSITION GetFirstViewPosition() const;
+ virtual CView* GetNextView(POSITION& rPosition) const;
+
+ // Update Views (simple update - DAG only)
+ void UpdateAllViews(CView* pSender, LPARAM lHint = 0L,
+ CObject* pHint = NULL);
+
+// Overridables
+ // Special notifications
+ virtual void OnChangedViewList(); // after Add or Remove view
+ virtual void DeleteContents(); // delete doc items etc
+
+ // File helpers
+ virtual BOOL OnNewDocument();
+ virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
+ virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
+#ifdef _MAC
+ virtual void RecordDataFileOwner(LPCTSTR lpszPathName, LPCTSTR lpszAppName);
+#endif
+ virtual void OnCloseDocument();
+ virtual void ReportSaveLoadException(LPCTSTR lpszPathName,
+ CException* e, BOOL bSaving, UINT nIDPDefault);
+ virtual CFile* GetFile(LPCTSTR lpszFileName, UINT nOpenFlags,
+ CFileException* pError);
+ virtual void ReleaseFile(CFile* pFile, BOOL bAbort);
+
+ // advanced overridables, closing down frame/doc, etc.
+ virtual BOOL CanCloseFrame(CFrameWnd* pFrame);
+ virtual BOOL SaveModified(); // return TRUE if ok to continue
+ virtual void PreCloseFrame(CFrameWnd* pFrame);
+
+// Implementation
+protected:
+ // default implementation
+ CString m_strTitle;
+ CString m_strPathName;
+ CDocTemplate* m_pDocTemplate;
+ CPtrList m_viewList; // list of views
+ BOOL m_bModified; // changed since last saved
+
+public:
+ BOOL m_bAutoDelete; // TRUE => delete document when no more views
+ BOOL m_bEmbedded; // TRUE => document is being created by OLE
+
+#ifdef _DEBUG
+ virtual void Dump(CDumpContext&) const;
+ virtual void AssertValid() const;
+#endif //_DEBUG
+ virtual ~CDocument();
+
+ // implementation helpers
+ virtual BOOL DoSave(LPCTSTR lpszPathName, BOOL bReplace = TRUE);
+ virtual BOOL DoFileSave();
+ virtual void UpdateFrameCounts();
+ void DisconnectViews();
+ void SendInitialUpdate();
+
+ // overridables for implementation
+ virtual HMENU GetDefaultMenu(); // get menu depending on state
+ virtual HACCEL GetDefaultAccelerator();
+ virtual void OnIdle();
+ virtual void OnFinalRelease();
+
+ virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
+ AFX_CMDHANDLERINFO* pHandlerInfo);
+ friend class CDocTemplate;
+
+protected:
+ // file menu commands
+ //{{AFX_MSG(CDocument)
+ afx_msg void OnFileClose();
+ afx_msg void OnFileSave();
+ afx_msg void OnFileSaveAs();
+ //}}AFX_MSG
+ // mail enabling
+ afx_msg void OnFileSendMail();
+ afx_msg void OnUpdateFileSendMail(CCmdUI* pCmdUI);
+ DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Extra diagnostic tracing options
+
+#ifdef _DEBUG
+
+extern AFX_DATA UINT afxTraceFlags;
+enum AfxTraceFlags
+{
+ traceMultiApp = 1, // multi-app debugging
+ traceAppMsg = 2, // main message pump trace (includes DDE)
+ traceWinMsg = 4, // Windows message tracing
+ traceCmdRouting = 8, // Windows command routing trace (set 4+8 for control notifications)
+ traceOle = 16, // special OLE callback trace
+ traceDatabase = 32, // special database trace
+ traceInternet = 64 // special Internet client trace
+};
+
+#endif // _DEBUG
+
+//////////////////////////////////////////////////////////////////////////////
+// MessageBox helpers
+
+void AFXAPI AfxFormatString1(CString& rString, UINT nIDS, LPCTSTR lpsz1);
+void AFXAPI AfxFormatString2(CString& rString, UINT nIDS,
+ LPCTSTR lpsz1, LPCTSTR lpsz2);
+int AFXAPI AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK,
+ UINT nIDHelp = 0);
+int AFXAPI AfxMessageBox(UINT nIDPrompt, UINT nType = MB_OK,
+ UINT nIDHelp = (UINT)-1);
+
+// Implementation string helpers
+void AFXAPI AfxFormatStrings(CString& rString, UINT nIDS,
+ LPCTSTR const* rglpsz, int nString);
+void AFXAPI AfxFormatStrings(CString& rString, LPCTSTR lpszFormat,
+ LPCTSTR const* rglpsz, int nString);
+BOOL AFXAPI AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,
+ int iSubString, TCHAR chSep = '\n');
+
+/////////////////////////////////////////////////////////////////////////////
+// Special target variant APIs
+
+#ifdef _AFXDLL
+ #include <afxdll_.h>
+#endif
+
+// Windows Version compatibility (obsolete)
+#define AfxEnableWin30Compatibility()
+#define AfxEnableWin31Compatibility()
+#define AfxEnableWin40Compatibility()
+
+// Temporary map management (locks temp map on current thread)
+void AFXAPI AfxLockTempMaps();
+BOOL AFXAPI AfxUnlockTempMaps(BOOL bDeleteTemps = TRUE);
+
+/////////////////////////////////////////////////////////////////////////////
+// Special OLE related functions (see OLELOCK.CPP)
+
+void AFXAPI AfxOleOnReleaseAllObjects();
+BOOL AFXAPI AfxOleCanExitApp();
+void AFXAPI AfxOleLockApp();
+void AFXAPI AfxOleUnlockApp();
+
+void AFXAPI AfxOleSetUserCtrl(BOOL bUserCtrl);
+BOOL AFXAPI AfxOleGetUserCtrl();
+
+#ifndef _AFX_NO_OCC_SUPPORT
+BOOL AFXAPI AfxOleLockControl(REFCLSID clsid);
+BOOL AFXAPI AfxOleUnlockControl(REFCLSID clsid);
+BOOL AFXAPI AfxOleLockControl(LPCTSTR lpszProgID);
+BOOL AFXAPI AfxOleUnlockControl(LPCTSTR lpszProgID);
+void AFXAPI AfxOleUnlockAllControls();
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Use version 1.0 of the RichEdit control
+
+#define _RICHEDIT_VER 0x0100
+
+/////////////////////////////////////////////////////////////////////////////
+// Inline function declarations
+
+#ifdef _AFX_PACKING
+#pragma pack(pop)
+#endif
+
+#ifdef _AFX_ENABLE_INLINES
+#define _AFXWIN_INLINE inline
+#include <afxwin1.inl>
+#include <afxwin2.inl>
+#endif
+
+#undef AFX_DATA
+#define AFX_DATA
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
+#ifndef _AFX_FULLTYPEINFO
+#pragma component(mintypeinfo, off)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#else //RC_INVOKED
+#include <afxres.h> // standard resource IDs
+#endif //RC_INVOKED
+
+#endif //__AFXWIN_H__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/afxwin1.inl b/public/sdk/inc/mfc42/afxwin1.inl
new file mode 100644
index 000000000..f6f3cd87d
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxwin1.inl
@@ -0,0 +1,1091 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXWIN.H (part 1)
+
+#ifdef _AFXWIN_INLINE
+
+// Global helper functions
+_AFXWIN_INLINE CWinApp* AFXAPI AfxGetApp()
+ { return afxCurrentWinApp; }
+_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
+ { ASSERT(afxCurrentInstanceHandle != NULL);
+ return afxCurrentInstanceHandle; }
+_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetResourceHandle()
+ { ASSERT(afxCurrentResourceHandle != NULL);
+ return afxCurrentResourceHandle; }
+_AFXWIN_INLINE void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource)
+ { ASSERT(hInstResource != NULL); afxCurrentResourceHandle = hInstResource; }
+_AFXWIN_INLINE LPCTSTR AFXAPI AfxGetAppName()
+ { ASSERT(afxCurrentAppName != NULL); return afxCurrentAppName; }
+_AFXWIN_INLINE COleMessageFilter* AFXAPI AfxOleGetMessageFilter()
+ { ASSERT_VALID(AfxGetThread()); return AfxGetThread()->m_pMessageFilter; }
+_AFXWIN_INLINE CWnd* AFXAPI AfxGetMainWnd()
+ { return AfxGetThread() != NULL ? AfxGetThread()->GetMainWnd() : NULL; }
+
+#ifdef _AFXDLL
+// AFX_MAINTAIN_STATE functions
+_AFXWIN_INLINE AFX_MAINTAIN_STATE::AFX_MAINTAIN_STATE(AFX_MODULE_STATE* pNewState)
+ { m_pPrevModuleState = AfxSetModuleState(pNewState); }
+#endif
+
+// CSize
+_AFXWIN_INLINE CSize::CSize()
+ { /* random filled */ }
+_AFXWIN_INLINE CSize::CSize(int initCX, int initCY)
+ { cx = initCX; cy = initCY; }
+_AFXWIN_INLINE CSize::CSize(SIZE initSize)
+ { *(SIZE*)this = initSize; }
+_AFXWIN_INLINE CSize::CSize(POINT initPt)
+ { *(POINT*)this = initPt; }
+_AFXWIN_INLINE CSize::CSize(DWORD dwSize)
+ {
+ cx = (short)LOWORD(dwSize);
+ cy = (short)HIWORD(dwSize);
+ }
+_AFXWIN_INLINE BOOL CSize::operator==(SIZE size) const
+ { return (cx == size.cx && cy == size.cy); }
+_AFXWIN_INLINE BOOL CSize::operator!=(SIZE size) const
+ { return (cx != size.cx || cy != size.cy); }
+_AFXWIN_INLINE void CSize::operator+=(SIZE size)
+ { cx += size.cx; cy += size.cy; }
+_AFXWIN_INLINE void CSize::operator-=(SIZE size)
+ { cx -= size.cx; cy -= size.cy; }
+_AFXWIN_INLINE CSize CSize::operator+(SIZE size) const
+ { return CSize(cx + size.cx, cy + size.cy); }
+_AFXWIN_INLINE CSize CSize::operator-(SIZE size) const
+ { return CSize(cx - size.cx, cy - size.cy); }
+_AFXWIN_INLINE CSize CSize::operator-() const
+ { return CSize(-cx, -cy); }
+_AFXWIN_INLINE CPoint CSize::operator+(POINT point) const
+ { return CPoint(cx + point.x, cy + point.y); }
+_AFXWIN_INLINE CPoint CSize::operator-(POINT point) const
+ { return CPoint(cx - point.x, cy - point.y); }
+_AFXWIN_INLINE CRect CSize::operator+(const RECT* lpRect) const
+ { return CRect(lpRect) + *this; }
+_AFXWIN_INLINE CRect CSize::operator-(const RECT* lpRect) const
+ { return CRect(lpRect) - *this; }
+
+// CPoint
+_AFXWIN_INLINE CPoint::CPoint()
+ { /* random filled */ }
+_AFXWIN_INLINE CPoint::CPoint(int initX, int initY)
+ { x = initX; y = initY; }
+_AFXWIN_INLINE CPoint::CPoint(POINT initPt)
+ { *(POINT*)this = initPt; }
+_AFXWIN_INLINE CPoint::CPoint(SIZE initSize)
+ { *(SIZE*)this = initSize; }
+_AFXWIN_INLINE CPoint::CPoint(DWORD dwPoint)
+ {
+ x = (short)LOWORD(dwPoint);
+ y = (short)HIWORD(dwPoint);
+ }
+_AFXWIN_INLINE void CPoint::Offset(int xOffset, int yOffset)
+ { x += xOffset; y += yOffset; }
+_AFXWIN_INLINE void CPoint::Offset(POINT point)
+ { x += point.x; y += point.y; }
+_AFXWIN_INLINE void CPoint::Offset(SIZE size)
+ { x += size.cx; y += size.cy; }
+_AFXWIN_INLINE BOOL CPoint::operator==(POINT point) const
+ { return (x == point.x && y == point.y); }
+_AFXWIN_INLINE BOOL CPoint::operator!=(POINT point) const
+ { return (x != point.x || y != point.y); }
+_AFXWIN_INLINE void CPoint::operator+=(SIZE size)
+ { x += size.cx; y += size.cy; }
+_AFXWIN_INLINE void CPoint::operator-=(SIZE size)
+ { x -= size.cx; y -= size.cy; }
+_AFXWIN_INLINE void CPoint::operator+=(POINT point)
+ { x += point.x; y += point.y; }
+_AFXWIN_INLINE void CPoint::operator-=(POINT point)
+ { x -= point.x; y -= point.y; }
+_AFXWIN_INLINE CPoint CPoint::operator+(SIZE size) const
+ { return CPoint(x + size.cx, y + size.cy); }
+_AFXWIN_INLINE CPoint CPoint::operator-(SIZE size) const
+ { return CPoint(x - size.cx, y - size.cy); }
+_AFXWIN_INLINE CPoint CPoint::operator-() const
+ { return CPoint(-x, -y); }
+_AFXWIN_INLINE CPoint CPoint::operator+(POINT point) const
+ { return CPoint(x + point.x, y + point.y); }
+_AFXWIN_INLINE CSize CPoint::operator-(POINT point) const
+ { return CSize(x - point.x, y - point.y); }
+_AFXWIN_INLINE CRect CPoint::operator+(const RECT* lpRect) const
+ { return CRect(lpRect) + *this; }
+_AFXWIN_INLINE CRect CPoint::operator-(const RECT* lpRect) const
+ { return CRect(lpRect) - *this; }
+
+// CRect
+_AFXWIN_INLINE CRect::CRect()
+ { /* random filled */ }
+_AFXWIN_INLINE CRect::CRect(int l, int t, int r, int b)
+ { left = l; top = t; right = r; bottom = b; }
+_AFXWIN_INLINE CRect::CRect(const RECT& srcRect)
+ { ::CopyRect(this, &srcRect); }
+_AFXWIN_INLINE CRect::CRect(LPCRECT lpSrcRect)
+ { ::CopyRect(this, lpSrcRect); }
+_AFXWIN_INLINE CRect::CRect(POINT point, SIZE size)
+ { right = (left = point.x) + size.cx; bottom = (top = point.y) + size.cy; }
+_AFXWIN_INLINE CRect::CRect(POINT topLeft, POINT bottomRight)
+ { left = topLeft.x; top = topLeft.y;
+ right = bottomRight.x; bottom = bottomRight.y; }
+_AFXWIN_INLINE int CRect::Width() const
+ { return right - left; }
+_AFXWIN_INLINE int CRect::Height() const
+ { return bottom - top; }
+_AFXWIN_INLINE CSize CRect::Size() const
+ { return CSize(right - left, bottom - top); }
+_AFXWIN_INLINE CPoint& CRect::TopLeft()
+ { return *((CPoint*)this); }
+_AFXWIN_INLINE CPoint& CRect::BottomRight()
+ { return *((CPoint*)this+1); }
+_AFXWIN_INLINE const CPoint& CRect::TopLeft() const
+ { return *((CPoint*)this); }
+_AFXWIN_INLINE const CPoint& CRect::BottomRight() const
+ { return *((CPoint*)this+1); }
+_AFXWIN_INLINE CPoint CRect::CenterPoint() const
+ { return CPoint((left+right)/2, (top+bottom)/2); }
+_AFXWIN_INLINE CRect::operator LPRECT()
+ { return this; }
+_AFXWIN_INLINE CRect::operator LPCRECT() const
+ { return this; }
+_AFXWIN_INLINE BOOL CRect::IsRectEmpty() const
+ { return ::IsRectEmpty(this); }
+_AFXWIN_INLINE BOOL CRect::IsRectNull() const
+ { return (left == 0 && right == 0 && top == 0 && bottom == 0); }
+_AFXWIN_INLINE BOOL CRect::PtInRect(POINT point) const
+ { return ::PtInRect(this, point); }
+_AFXWIN_INLINE void CRect::SetRect(int x1, int y1, int x2, int y2)
+ { ::SetRect(this, x1, y1, x2, y2); }
+_AFXWIN_INLINE void CRect::SetRect(POINT topLeft, POINT bottomRight)
+ { ::SetRect(this, topLeft.x, topLeft.y, bottomRight.x, bottomRight.y); }
+_AFXWIN_INLINE void CRect::SetRectEmpty()
+ { ::SetRectEmpty(this); }
+_AFXWIN_INLINE void CRect::CopyRect(LPCRECT lpSrcRect)
+ { ::CopyRect(this, lpSrcRect); }
+_AFXWIN_INLINE BOOL CRect::EqualRect(LPCRECT lpRect) const
+ { return ::EqualRect(this, lpRect); }
+_AFXWIN_INLINE void CRect::InflateRect(int x, int y)
+ { ::InflateRect(this, x, y); }
+_AFXWIN_INLINE void CRect::InflateRect(SIZE size)
+ { ::InflateRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE void CRect::DeflateRect(int x, int y)
+ { ::InflateRect(this, -x, -y); }
+_AFXWIN_INLINE void CRect::DeflateRect(SIZE size)
+ { ::InflateRect(this, -size.cx, -size.cy); }
+_AFXWIN_INLINE void CRect::OffsetRect(int x, int y)
+ { ::OffsetRect(this, x, y); }
+_AFXWIN_INLINE void CRect::OffsetRect(POINT point)
+ { ::OffsetRect(this, point.x, point.y); }
+_AFXWIN_INLINE void CRect::OffsetRect(SIZE size)
+ { ::OffsetRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE BOOL CRect::IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2)
+ { return ::IntersectRect(this, lpRect1, lpRect2);}
+_AFXWIN_INLINE BOOL CRect::UnionRect(LPCRECT lpRect1, LPCRECT lpRect2)
+ { return ::UnionRect(this, lpRect1, lpRect2); }
+_AFXWIN_INLINE void CRect::operator=(const RECT& srcRect)
+ { ::CopyRect(this, &srcRect); }
+_AFXWIN_INLINE BOOL CRect::operator==(const RECT& rect) const
+ { return ::EqualRect(this, &rect); }
+_AFXWIN_INLINE BOOL CRect::operator!=(const RECT& rect) const
+ { return !::EqualRect(this, &rect); }
+_AFXWIN_INLINE void CRect::operator+=(POINT point)
+ { ::OffsetRect(this, point.x, point.y); }
+_AFXWIN_INLINE void CRect::operator+=(SIZE size)
+ { ::OffsetRect(this, size.cx, size.cy); }
+_AFXWIN_INLINE void CRect::operator+=(LPCRECT lpRect)
+ { InflateRect(lpRect); }
+_AFXWIN_INLINE void CRect::operator-=(POINT point)
+ { ::OffsetRect(this, -point.x, -point.y); }
+_AFXWIN_INLINE void CRect::operator-=(SIZE size)
+ { ::OffsetRect(this, -size.cx, -size.cy); }
+_AFXWIN_INLINE void CRect::operator-=(LPCRECT lpRect)
+ { DeflateRect(lpRect); }
+_AFXWIN_INLINE void CRect::operator&=(const RECT& rect)
+ { ::IntersectRect(this, this, &rect); }
+_AFXWIN_INLINE void CRect::operator|=(const RECT& rect)
+ { ::UnionRect(this, this, &rect); }
+_AFXWIN_INLINE CRect CRect::operator+(POINT pt) const
+ { CRect rect(*this); ::OffsetRect(&rect, pt.x, pt.y); return rect; }
+_AFXWIN_INLINE CRect CRect::operator-(POINT pt) const
+ { CRect rect(*this); ::OffsetRect(&rect, -pt.x, -pt.y); return rect; }
+_AFXWIN_INLINE CRect CRect::operator+(SIZE size) const
+ { CRect rect(*this); ::OffsetRect(&rect, size.cx, size.cy); return rect; }
+_AFXWIN_INLINE CRect CRect::operator-(SIZE size) const
+ { CRect rect(*this); ::OffsetRect(&rect, -size.cx, -size.cy); return rect; }
+_AFXWIN_INLINE CRect CRect::operator+(LPCRECT lpRect) const
+ { CRect rect(this); rect.InflateRect(lpRect); return rect; }
+_AFXWIN_INLINE CRect CRect::operator-(LPCRECT lpRect) const
+ { CRect rect(this); rect.DeflateRect(lpRect); return rect; }
+_AFXWIN_INLINE CRect CRect::operator&(const RECT& rect2) const
+ { CRect rect; ::IntersectRect(&rect, this, &rect2);
+ return rect; }
+_AFXWIN_INLINE CRect CRect::operator|(const RECT& rect2) const
+ { CRect rect; ::UnionRect(&rect, this, &rect2);
+ return rect; }
+_AFXWIN_INLINE BOOL CRect::SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2)
+ { return ::SubtractRect(this, lpRectSrc1, lpRectSrc2); }
+
+// CArchive output helpers
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, SIZE size)
+ { ar.Write(&size, sizeof(SIZE)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, POINT point)
+ { ar.Write(&point, sizeof(POINT)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator<<(CArchive& ar, const RECT& rect)
+ { ar.Write(&rect, sizeof(RECT)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, SIZE& size)
+ { ar.Read(&size, sizeof(SIZE)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, POINT& point)
+ { ar.Read(&point, sizeof(POINT)); return ar; }
+_AFXWIN_INLINE CArchive& AFXAPI operator>>(CArchive& ar, RECT& rect)
+ { ar.Read(&rect, sizeof(RECT)); return ar; }
+
+// exception support
+_AFXWIN_INLINE CResourceException::CResourceException()
+ : CSimpleException() { }
+_AFXWIN_INLINE CResourceException::CResourceException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFXWIN_INLINE CResourceException::~CResourceException()
+ { }
+_AFXWIN_INLINE CUserException::CUserException()
+ : CSimpleException() { }
+_AFXWIN_INLINE CUserException::CUserException(BOOL bAutoDelete, UINT nResourceID)
+ : CSimpleException(bAutoDelete) { m_nResourceID = nResourceID; }
+_AFXWIN_INLINE CUserException::~CUserException()
+ { }
+
+// CGdiObject
+_AFXWIN_INLINE CGdiObject::operator HGDIOBJ() const
+ { return this == NULL ? NULL : m_hObject; }
+_AFXWIN_INLINE HGDIOBJ CGdiObject::GetSafeHandle() const
+ { return this == NULL ? NULL : m_hObject; }
+_AFXWIN_INLINE CGdiObject::CGdiObject()
+ { m_hObject = NULL; }
+_AFXWIN_INLINE CGdiObject::~CGdiObject()
+ { DeleteObject(); }
+_AFXWIN_INLINE int CGdiObject::GetObject(int nCount, LPVOID lpObject) const
+ { ASSERT(m_hObject != NULL); return ::GetObject(m_hObject, nCount, lpObject); }
+_AFXWIN_INLINE BOOL CGdiObject::CreateStockObject(int nIndex)
+ { return (m_hObject = ::GetStockObject(nIndex)) != NULL; }
+_AFXWIN_INLINE BOOL CGdiObject::UnrealizeObject()
+ { ASSERT(m_hObject != NULL); return ::UnrealizeObject(m_hObject); }
+_AFXWIN_INLINE UINT CGdiObject::GetObjectType() const
+ { return (UINT)::GetObjectType(m_hObject); }
+
+// CPen
+_AFXWIN_INLINE CPen::operator HPEN() const
+ { return (HPEN)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CPen* PASCAL CPen::FromHandle(HPEN hPen)
+ { return (CPen*) CGdiObject::FromHandle(hPen); }
+_AFXWIN_INLINE CPen::CPen()
+ { }
+_AFXWIN_INLINE CPen::~CPen()
+ { }
+_AFXWIN_INLINE BOOL CPen::CreatePen(int nPenStyle, int nWidth, COLORREF crColor)
+ { return Attach(::CreatePen(nPenStyle, nWidth, crColor)); }
+_AFXWIN_INLINE BOOL CPen::CreatePenIndirect(LPLOGPEN lpLogPen)
+ { return Attach(::CreatePenIndirect(lpLogPen)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CPen::CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush,
+ int nStyleCount, const DWORD* lpStyle)
+ { return Attach(::ExtCreatePen(nPenStyle, nWidth, pLogBrush, nStyleCount,
+ lpStyle)); }
+_AFXWIN_INLINE int CPen::GetExtLogPen(EXTLOGPEN* pLogPen)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(EXTLOGPEN), pLogPen); }
+#endif
+_AFXWIN_INLINE int CPen::GetLogPen(LOGPEN* pLogPen)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(LOGPEN), pLogPen); }
+
+// CBrush
+_AFXWIN_INLINE CBrush::operator HBRUSH() const
+ { return (HBRUSH)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CBrush* PASCAL CBrush::FromHandle(HBRUSH hBrush)
+ { return (CBrush*) CGdiObject::FromHandle(hBrush); }
+_AFXWIN_INLINE CBrush::CBrush()
+ { }
+_AFXWIN_INLINE CBrush::~CBrush()
+ { }
+_AFXWIN_INLINE BOOL CBrush::CreateSolidBrush(COLORREF crColor)
+ { return Attach(::CreateSolidBrush(crColor)); }
+_AFXWIN_INLINE BOOL CBrush::CreateHatchBrush(int nIndex, COLORREF crColor)
+ { return Attach(::CreateHatchBrush(nIndex, crColor)); }
+_AFXWIN_INLINE BOOL CBrush::CreateBrushIndirect(const LOGBRUSH* lpLogBrush)
+ { return Attach(::CreateBrushIndirect(lpLogBrush)); }
+_AFXWIN_INLINE BOOL CBrush::CreatePatternBrush(CBitmap* pBitmap)
+ { return Attach(::CreatePatternBrush((HBITMAP)pBitmap->GetSafeHandle())); }
+_AFXWIN_INLINE BOOL CBrush::CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage)
+ { return Attach(::CreateDIBPatternBrushPt(lpPackedDIB, nUsage)); }
+_AFXWIN_INLINE BOOL CBrush::CreateSysColorBrush(int nIndex)
+ { return Attach(::GetSysColorBrush(nIndex)); }
+_AFXWIN_INLINE int CBrush::GetLogBrush(LOGBRUSH* pLogBrush)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(LOGBRUSH), pLogBrush); }
+
+// CFont
+_AFXWIN_INLINE CFont::operator HFONT() const
+ { return (HFONT)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CFont* PASCAL CFont::FromHandle(HFONT hFont)
+ { return (CFont*) CGdiObject::FromHandle(hFont); }
+_AFXWIN_INLINE CFont::CFont()
+ { }
+_AFXWIN_INLINE CFont::~CFont()
+ { }
+_AFXWIN_INLINE BOOL CFont::CreateFontIndirect(const LOGFONT* lpLogFont)
+ { return Attach(::CreateFontIndirect(lpLogFont)); }
+_AFXWIN_INLINE BOOL CFont::CreateFont(int nHeight, int nWidth, int nEscapement,
+ int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline,
+ BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
+ BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily,
+ LPCTSTR lpszFacename)
+ { return Attach(::CreateFont(nHeight, nWidth, nEscapement,
+ nOrientation, nWeight, bItalic, bUnderline, cStrikeOut,
+ nCharSet, nOutPrecision, nClipPrecision, nQuality,
+ nPitchAndFamily, lpszFacename)); }
+_AFXWIN_INLINE int CFont::GetLogFont(LOGFONT* pLogFont)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(LOGFONT), pLogFont); }
+
+// CBitmap
+_AFXWIN_INLINE CBitmap::operator HBITMAP() const
+ { return (HBITMAP)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CBitmap* PASCAL CBitmap::FromHandle(HBITMAP hBitmap)
+ { return (CBitmap*) CGdiObject::FromHandle(hBitmap); }
+_AFXWIN_INLINE CBitmap::CBitmap()
+ { }
+_AFXWIN_INLINE CBitmap::~CBitmap()
+ { }
+_AFXWIN_INLINE BOOL CBitmap::CreateBitmap(int nWidth, int nHeight, UINT nPlanes,
+ UINT nBitcount, const void* lpBits)
+ { return Attach(::CreateBitmap(nWidth, nHeight, nPlanes, nBitcount, lpBits)); }
+_AFXWIN_INLINE BOOL CBitmap::CreateBitmapIndirect(LPBITMAP lpBitmap)
+ { return Attach(::CreateBitmapIndirect(lpBitmap)); }
+
+_AFXWIN_INLINE DWORD CBitmap::SetBitmapBits(DWORD dwCount, const void* lpBits)
+ { return ::SetBitmapBits((HBITMAP)m_hObject, dwCount, lpBits); }
+_AFXWIN_INLINE DWORD CBitmap::GetBitmapBits(DWORD dwCount, LPVOID lpBits) const
+ { return ::GetBitmapBits((HBITMAP)m_hObject, dwCount, lpBits); }
+_AFXWIN_INLINE BOOL CBitmap::LoadBitmap(LPCTSTR lpszResourceName)
+ { return Attach(::LoadBitmap(AfxFindResourceHandle(
+ lpszResourceName, RT_BITMAP), lpszResourceName));}
+_AFXWIN_INLINE BOOL CBitmap::LoadMappedBitmap(UINT nIDBitmap, UINT nFlags,
+ LPCOLORMAP lpColorMap, int nMapSize)
+ { return Attach(::CreateMappedBitmap(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDBitmap), RT_BITMAP), nIDBitmap, (WORD)nFlags,
+ lpColorMap, nMapSize)); }
+_AFXWIN_INLINE CSize CBitmap::SetBitmapDimension(int nWidth, int nHeight)
+ {
+ SIZE size;
+ VERIFY(::SetBitmapDimensionEx((HBITMAP)m_hObject, nWidth, nHeight, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CBitmap::GetBitmapDimension() const
+ {
+ SIZE size;
+ VERIFY(::GetBitmapDimensionEx((HBITMAP)m_hObject, &size));
+ return size;
+ }
+
+_AFXWIN_INLINE BOOL CBitmap::LoadBitmap(UINT nIDResource)
+ { return Attach(::LoadBitmap(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDResource), RT_BITMAP), MAKEINTRESOURCE(nIDResource))); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CBitmap::LoadOEMBitmap(UINT nIDBitmap)
+ { return Attach(::LoadBitmap(NULL, MAKEINTRESOURCE(nIDBitmap))); }
+#endif
+_AFXWIN_INLINE BOOL CBitmap::CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight)
+ { return Attach(::CreateCompatibleBitmap(pDC->m_hDC, nWidth, nHeight)); }
+_AFXWIN_INLINE BOOL CBitmap::CreateDiscardableBitmap(CDC* pDC, int nWidth, int nHeight)
+ { return Attach(::CreateDiscardableBitmap(pDC->m_hDC, nWidth, nHeight)); }
+_AFXWIN_INLINE int CBitmap::GetBitmap(BITMAP* pBitMap)
+ { ASSERT(m_hObject != NULL);
+ return ::GetObject(m_hObject, sizeof(BITMAP), pBitMap); }
+
+// CPalette
+_AFXWIN_INLINE CPalette::operator HPALETTE() const
+ { return (HPALETTE)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CPalette* PASCAL CPalette::FromHandle(HPALETTE hPalette)
+ { return (CPalette*) CGdiObject::FromHandle(hPalette); }
+_AFXWIN_INLINE CPalette::CPalette()
+ { }
+_AFXWIN_INLINE CPalette::~CPalette()
+ { }
+_AFXWIN_INLINE BOOL CPalette::CreatePalette(LPLOGPALETTE lpLogPalette)
+ { return Attach(::CreatePalette(lpLogPalette)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CPalette::CreateHalftonePalette(CDC* pDC)
+ { ASSERT(pDC != NULL && pDC->m_hDC != NULL); return Attach(
+ ::CreateHalftonePalette(pDC->m_hDC)); }
+#endif
+_AFXWIN_INLINE UINT CPalette::GetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors) const
+ { ASSERT(m_hObject != NULL); return ::GetPaletteEntries((HPALETTE)m_hObject, nStartIndex,
+ nNumEntries, lpPaletteColors); }
+_AFXWIN_INLINE UINT CPalette::SetPaletteEntries(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors)
+ { ASSERT(m_hObject != NULL); return ::SetPaletteEntries((HPALETTE)m_hObject, nStartIndex,
+ nNumEntries, lpPaletteColors); }
+#ifndef _MAC
+_AFXWIN_INLINE void CPalette::AnimatePalette(UINT nStartIndex, UINT nNumEntries,
+ LPPALETTEENTRY lpPaletteColors)
+ { ASSERT(m_hObject != NULL); ::AnimatePalette((HPALETTE)m_hObject, nStartIndex, nNumEntries,
+ lpPaletteColors); }
+#endif
+_AFXWIN_INLINE UINT CPalette::GetNearestPaletteIndex(COLORREF crColor) const
+ { ASSERT(m_hObject != NULL); return ::GetNearestPaletteIndex((HPALETTE)m_hObject, crColor); }
+_AFXWIN_INLINE BOOL CPalette::ResizePalette(UINT nNumEntries)
+ { ASSERT(m_hObject != NULL); return ::ResizePalette((HPALETTE)m_hObject, nNumEntries); }
+_AFXWIN_INLINE int CPalette::GetEntryCount()
+ { ASSERT(m_hObject != NULL); WORD nEntries;
+ ::GetObject(m_hObject, sizeof(WORD), &nEntries); return (int)nEntries; }
+
+// CRgn
+_AFXWIN_INLINE CRgn::operator HRGN() const
+ { return (HRGN)(this == NULL ? NULL : m_hObject); }
+_AFXWIN_INLINE CRgn* PASCAL CRgn::FromHandle(HRGN hRgn)
+ { return (CRgn*) CGdiObject::FromHandle(hRgn); }
+_AFXWIN_INLINE CRgn::CRgn()
+ { }
+_AFXWIN_INLINE CRgn::~CRgn()
+ { }
+_AFXWIN_INLINE BOOL CRgn::CreateRectRgn(int x1, int y1, int x2, int y2)
+ { return Attach(::CreateRectRgn(x1, y1, x2, y2)); }
+_AFXWIN_INLINE BOOL CRgn::CreateRectRgnIndirect(LPCRECT lpRect)
+ { return Attach(::CreateRectRgnIndirect(lpRect)); }
+_AFXWIN_INLINE BOOL CRgn::CreateEllipticRgn(int x1, int y1, int x2, int y2)
+ { return Attach(::CreateEllipticRgn(x1, y1, x2, y2)); }
+_AFXWIN_INLINE BOOL CRgn::CreateEllipticRgnIndirect(LPCRECT lpRect)
+ { return Attach(::CreateEllipticRgnIndirect(lpRect)); }
+_AFXWIN_INLINE BOOL CRgn::CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode)
+ { return Attach(::CreatePolygonRgn(lpPoints, nCount, nMode)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CRgn::CreatePolyPolygonRgn(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount, int nPolyFillMode)
+ { return Attach(::CreatePolyPolygonRgn(lpPoints, lpPolyCounts, nCount, nPolyFillMode)); }
+#endif
+_AFXWIN_INLINE BOOL CRgn::CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3)
+ { return Attach(::CreateRoundRectRgn(x1, y1, x2, y2, x3, y3)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CRgn::CreateFromPath(CDC* pDC)
+ { ASSERT(pDC != NULL); return Attach(::PathToRegion(pDC->m_hDC)); }
+_AFXWIN_INLINE BOOL CRgn::CreateFromData(const XFORM* lpXForm, int nCount, const RGNDATA* pRgnData)
+ { return Attach(::ExtCreateRegion(lpXForm, nCount, pRgnData)); }
+_AFXWIN_INLINE int CRgn::GetRegionData(LPRGNDATA lpRgnData, int nDataSize) const
+ { ASSERT(m_hObject != NULL); return (int)::GetRegionData((HRGN)m_hObject, nDataSize, lpRgnData); }
+#endif
+_AFXWIN_INLINE void CRgn::SetRectRgn(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hObject != NULL); ::SetRectRgn((HRGN)m_hObject, x1, y1, x2, y2); }
+_AFXWIN_INLINE void CRgn::SetRectRgn(LPCRECT lpRect)
+ { ASSERT(m_hObject != NULL); ::SetRectRgn((HRGN)m_hObject, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE int CRgn::CombineRgn(CRgn* pRgn1, CRgn* pRgn2, int nCombineMode)
+ { ASSERT(m_hObject != NULL); return ::CombineRgn((HRGN)m_hObject, (HRGN)pRgn1->GetSafeHandle(),
+ (HRGN)pRgn2->GetSafeHandle(), nCombineMode); }
+_AFXWIN_INLINE int CRgn::CopyRgn(CRgn* pRgnSrc)
+ { ASSERT(m_hObject != NULL); return ::CombineRgn((HRGN)m_hObject, (HRGN)pRgnSrc->GetSafeHandle(), NULL, RGN_COPY); }
+_AFXWIN_INLINE BOOL CRgn::EqualRgn(CRgn* pRgn) const
+ { ASSERT(m_hObject != NULL); return ::EqualRgn((HRGN)m_hObject, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE int CRgn::OffsetRgn(int x, int y)
+ { ASSERT(m_hObject != NULL); return ::OffsetRgn((HRGN)m_hObject, x, y); }
+_AFXWIN_INLINE int CRgn::OffsetRgn(POINT point)
+ { ASSERT(m_hObject != NULL); return ::OffsetRgn((HRGN)m_hObject, point.x, point.y); }
+_AFXWIN_INLINE int CRgn::GetRgnBox(LPRECT lpRect) const
+ { ASSERT(m_hObject != NULL); return ::GetRgnBox((HRGN)m_hObject, lpRect); }
+_AFXWIN_INLINE BOOL CRgn::PtInRegion(int x, int y) const
+ { ASSERT(m_hObject != NULL); return ::PtInRegion((HRGN)m_hObject, x, y); }
+_AFXWIN_INLINE BOOL CRgn::PtInRegion(POINT point) const
+ { ASSERT(m_hObject != NULL); return ::PtInRegion((HRGN)m_hObject, point.x, point.y); }
+_AFXWIN_INLINE BOOL CRgn::RectInRegion(LPCRECT lpRect) const
+ { ASSERT(m_hObject != NULL); return ::RectInRegion((HRGN)m_hObject, lpRect); }
+
+// CDC
+_AFXWIN_INLINE CDC::operator HDC() const
+ { return this == NULL ? NULL : m_hDC; }
+_AFXWIN_INLINE HDC CDC::GetSafeHdc() const
+ { return this == NULL ? NULL : m_hDC; }
+#ifndef _MAC
+_AFXWIN_INLINE CWnd* CDC::GetWindow() const
+ { ASSERT(m_hDC != NULL); return CWnd::FromHandle(::WindowFromDC(m_hDC)); }
+#endif
+_AFXWIN_INLINE BOOL CDC::IsPrinting() const
+ { return m_bPrinting; }
+_AFXWIN_INLINE BOOL CDC::CreateDC(LPCTSTR lpszDriverName,
+ LPCTSTR lpszDeviceName, LPCTSTR lpszOutput, const void* lpInitData)
+ { return Attach(::CreateDC(lpszDriverName,
+ lpszDeviceName, lpszOutput, (const DEVMODE*)lpInitData)); }
+_AFXWIN_INLINE BOOL CDC::CreateIC(LPCTSTR lpszDriverName,
+ LPCTSTR lpszDeviceName, LPCTSTR lpszOutput, const void* lpInitData)
+ { return Attach(::CreateIC(lpszDriverName,
+ lpszDeviceName, lpszOutput, (const DEVMODE*) lpInitData)); }
+_AFXWIN_INLINE BOOL CDC::CreateCompatibleDC(CDC* pDC)
+ { return Attach(::CreateCompatibleDC(pDC->GetSafeHdc())); }
+_AFXWIN_INLINE int CDC::ExcludeUpdateRgn(CWnd* pWnd)
+ { ASSERT(m_hDC != NULL); return ::ExcludeUpdateRgn(m_hDC, pWnd->m_hWnd); }
+_AFXWIN_INLINE int CDC::GetDeviceCaps(int nIndex) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetDeviceCaps(m_hAttribDC, nIndex); }
+_AFXWIN_INLINE CPoint CDC::GetBrushOrg() const
+ {
+ ASSERT(m_hDC != NULL);
+ POINT point;
+ VERIFY(::GetBrushOrgEx(m_hDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CPoint CDC::SetBrushOrg(int x, int y)
+ {
+ ASSERT(m_hDC != NULL);
+ POINT point;
+ VERIFY(::SetBrushOrgEx(m_hDC, x, y, &point));
+ return point;
+ }
+_AFXWIN_INLINE CPoint CDC::SetBrushOrg(POINT point)
+ {
+ ASSERT(m_hDC != NULL);
+ VERIFY(::SetBrushOrgEx(m_hDC, point.x, point.y, &point));
+ return point;
+ }
+
+_AFXWIN_INLINE int CDC::EnumObjects(int nObjectType,
+ int (CALLBACK* lpfn)(LPVOID, LPARAM), LPARAM lpData)
+ { ASSERT(m_hAttribDC != NULL); return ::EnumObjects(m_hAttribDC, nObjectType, (GOBJENUMPROC)lpfn, lpData); }
+
+_AFXWIN_INLINE CBitmap* CDC::SelectObject(CBitmap* pBitmap)
+ { ASSERT(m_hDC != NULL); return (CBitmap*) SelectGdiObject(m_hDC, pBitmap->GetSafeHandle()); }
+_AFXWIN_INLINE CGdiObject* CDC::SelectObject(CGdiObject* pObject)
+ { ASSERT(m_hDC != NULL); return SelectGdiObject(m_hDC, pObject->GetSafeHandle()); }
+_AFXWIN_INLINE HGDIOBJ CDC::SelectObject(HGDIOBJ hObject) // Safe for NULL handles
+ { ASSERT(m_hDC == m_hAttribDC); // ASSERT a simple CDC object
+ return (hObject != NULL) ? ::SelectObject(m_hDC, hObject) : NULL; }
+_AFXWIN_INLINE COLORREF CDC::GetNearestColor(COLORREF crColor) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetNearestColor(m_hAttribDC, crColor); }
+_AFXWIN_INLINE UINT CDC::RealizePalette()
+ { ASSERT(m_hDC != NULL); return ::RealizePalette(m_hDC); }
+_AFXWIN_INLINE void CDC::UpdateColors()
+ { ASSERT(m_hDC != NULL); ::UpdateColors(m_hDC); }
+_AFXWIN_INLINE COLORREF CDC::GetBkColor() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetBkColor(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetBkMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetBkMode(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetPolyFillMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetPolyFillMode(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetROP2() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetROP2(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetStretchBltMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetStretchBltMode(m_hAttribDC); }
+_AFXWIN_INLINE COLORREF CDC::GetTextColor() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextColor(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetMapMode() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetMapMode(m_hAttribDC); }
+
+_AFXWIN_INLINE CPoint CDC::GetViewportOrg() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetViewportOrgEx(m_hAttribDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CSize CDC::GetViewportExt() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetViewportExtEx(m_hAttribDC, &size));
+ return size;
+ }
+_AFXWIN_INLINE CPoint CDC::GetWindowOrg() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetWindowOrgEx(m_hAttribDC, &point));
+ return point;
+ }
+_AFXWIN_INLINE CSize CDC::GetWindowExt() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetWindowExtEx(m_hAttribDC, &size));
+ return size;
+ }
+
+// non-virtual helpers calling virtual mapping functions
+_AFXWIN_INLINE CPoint CDC::SetViewportOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetViewportOrg(point.x, point.y); }
+_AFXWIN_INLINE CSize CDC::SetViewportExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetViewportExt(size.cx, size.cy); }
+_AFXWIN_INLINE CPoint CDC::SetWindowOrg(POINT point)
+ { ASSERT(m_hDC != NULL); return SetWindowOrg(point.x, point.y); }
+_AFXWIN_INLINE CSize CDC::SetWindowExt(SIZE size)
+ { ASSERT(m_hDC != NULL); return SetWindowExt(size.cx, size.cy); }
+
+_AFXWIN_INLINE void CDC::DPtoLP(LPPOINT lpPoints, int nCount) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::DPtoLP(m_hAttribDC, lpPoints, nCount)); }
+_AFXWIN_INLINE void CDC::DPtoLP(LPRECT lpRect) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::DPtoLP(m_hAttribDC, (LPPOINT)lpRect, 2)); }
+_AFXWIN_INLINE void CDC::LPtoDP(LPPOINT lpPoints, int nCount) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::LPtoDP(m_hAttribDC, lpPoints, nCount)); }
+_AFXWIN_INLINE void CDC::LPtoDP(LPRECT lpRect) const
+ { ASSERT(m_hAttribDC != NULL); VERIFY(::LPtoDP(m_hAttribDC, (LPPOINT)lpRect, 2)); }
+
+_AFXWIN_INLINE BOOL CDC::FillRgn(CRgn* pRgn, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::FillRgn(m_hDC, (HRGN)pRgn->GetSafeHandle(), (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::FrameRgn(CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight)
+ { ASSERT(m_hDC != NULL); return ::FrameRgn(m_hDC, (HRGN)pRgn->GetSafeHandle(), (HBRUSH)pBrush->GetSafeHandle(),
+ nWidth, nHeight); }
+_AFXWIN_INLINE BOOL CDC::InvertRgn(CRgn* pRgn)
+ { ASSERT(m_hDC != NULL); return ::InvertRgn(m_hDC, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::PaintRgn(CRgn* pRgn)
+ { ASSERT(m_hDC != NULL); return ::PaintRgn(m_hDC, (HRGN)pRgn->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CDC::PtVisible(int x, int y) const
+ { ASSERT(m_hDC != NULL); return ::PtVisible(m_hDC, x, y); }
+_AFXWIN_INLINE BOOL CDC::PtVisible(POINT point) const
+ { ASSERT(m_hDC != NULL); return PtVisible(point.x, point.y); } // call virtual
+_AFXWIN_INLINE BOOL CDC::RectVisible(LPCRECT lpRect) const
+ { ASSERT(m_hDC != NULL); return ::RectVisible(m_hDC, lpRect); }
+_AFXWIN_INLINE CPoint CDC::GetCurrentPosition() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ POINT point;
+ VERIFY(::GetCurrentPositionEx(m_hAttribDC, &point));
+ return point;
+ }
+
+_AFXWIN_INLINE CPoint CDC::MoveTo(POINT point)
+ { ASSERT(m_hDC != NULL); return MoveTo(point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::LineTo(POINT point)
+ { ASSERT(m_hDC != NULL); return LineTo(point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Arc(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Arc(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE BOOL CDC::Polyline(LPPOINT lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::Polyline(m_hDC, lpPoints, nCount); }
+_AFXWIN_INLINE void CDC::FillRect(LPCRECT lpRect, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); ::FillRect(m_hDC, lpRect, (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE void CDC::FrameRect(LPCRECT lpRect, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); ::FrameRect(m_hDC, lpRect, (HBRUSH)pBrush->GetSafeHandle()); }
+_AFXWIN_INLINE void CDC::InvertRect(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); ::InvertRect(m_hDC, lpRect); }
+_AFXWIN_INLINE BOOL CDC::DrawIcon(int x, int y, HICON hIcon)
+ { ASSERT(m_hDC != NULL); return ::DrawIcon(m_hDC, x, y, hIcon); }
+_AFXWIN_INLINE BOOL CDC::DrawIcon(POINT point, HICON hIcon)
+ { ASSERT(m_hDC != NULL); return ::DrawIcon(m_hDC, point.x, point.y, hIcon); }
+#ifndef _MAC
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, HBITMAP hBitmap, UINT nFlags, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush,
+ NULL, (LPARAM)hBitmap, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_BITMAP); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, CBitmap* pBitmap, UINT nFlags, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ NULL, (LPARAM)pBitmap->GetSafeHandle(), 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_BITMAP); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush, NULL,
+ (LPARAM)hIcon, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_ICON); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(), NULL,
+ (LPARAM)hIcon, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_ICON); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags, BOOL bPrefixText, int nTextLen, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush,
+ NULL, (LPARAM)lpszText, (WPARAM)nTextLen, pt.x, pt.y, size.cx, size.cy, nFlags|(bPrefixText ? DST_PREFIXTEXT : DST_TEXT)); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags, BOOL bPrefixText, int nTextLen, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ NULL, (LPARAM)lpszText, (WPARAM)nTextLen, pt.x, pt.y, size.cx, size.cy, nFlags|(bPrefixText ? DST_PREFIXTEXT : DST_TEXT)); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc, LPARAM lData, UINT nFlags, HBRUSH hBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, hBrush,
+ lpDrawProc, lData, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_COMPLEX); }
+_AFXWIN_INLINE BOOL CDC::DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc, LPARAM lData, UINT nFlags, CBrush* pBrush)
+ { ASSERT(m_hDC != NULL); return ::DrawState(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ lpDrawProc, lData, 0, pt.x, pt.y, size.cx, size.cy, nFlags|DST_COMPLEX); }
+_AFXWIN_INLINE BOOL CDC::DrawEdge(LPRECT lpRect, UINT nEdge, UINT nFlags)
+ { ASSERT(m_hDC != NULL); return ::DrawEdge(m_hDC, lpRect, nEdge, nFlags); }
+_AFXWIN_INLINE BOOL CDC::DrawFrameControl(LPRECT lpRect, UINT nType, UINT nState)
+ { ASSERT(m_hDC != NULL); return ::DrawFrameControl(m_hDC, lpRect, nType, nState); }
+#endif
+
+_AFXWIN_INLINE BOOL CDC::Chord(int x1, int y1, int x2, int y2, int x3, int y3,
+ int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Chord(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Chord(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+#endif
+_AFXWIN_INLINE void CDC::DrawFocusRect(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); ::DrawFocusRect(m_hDC, lpRect); }
+_AFXWIN_INLINE BOOL CDC::Ellipse(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hDC != NULL); return ::Ellipse(m_hDC, x1, y1, x2, y2); }
+_AFXWIN_INLINE BOOL CDC::Ellipse(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); return ::Ellipse(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE BOOL CDC::Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
+ { ASSERT(m_hDC != NULL); return ::Pie(m_hDC, x1, y1, x2, y2, x3, y3, x4, y4); }
+_AFXWIN_INLINE BOOL CDC::Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ::Pie(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, ptStart.x, ptStart.y,
+ ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE BOOL CDC::Polygon(LPPOINT lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::Polygon(m_hDC, lpPoints, nCount); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::PolyPolygon(LPPOINT lpPoints, LPINT lpPolyCounts, int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyPolygon(m_hDC, lpPoints, lpPolyCounts, nCount); }
+#endif
+_AFXWIN_INLINE BOOL CDC::Rectangle(int x1, int y1, int x2, int y2)
+ { ASSERT(m_hDC != NULL); return ::Rectangle(m_hDC, x1, y1, x2, y2); }
+_AFXWIN_INLINE BOOL CDC::Rectangle(LPCRECT lpRect)
+ { ASSERT(m_hDC != NULL); return ::Rectangle(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom); }
+_AFXWIN_INLINE BOOL CDC::RoundRect(int x1, int y1, int x2, int y2, int x3, int y3)
+ { ASSERT(m_hDC != NULL); return ::RoundRect(m_hDC, x1, y1, x2, y2, x3, y3); }
+_AFXWIN_INLINE BOOL CDC::RoundRect(LPCRECT lpRect, POINT point)
+ { ASSERT(m_hDC != NULL); return ::RoundRect(m_hDC, lpRect->left, lpRect->top,
+ lpRect->right, lpRect->bottom, point.x, point.y); }
+_AFXWIN_INLINE BOOL CDC::PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::PatBlt(m_hDC, x, y, nWidth, nHeight, dwRop); }
+_AFXWIN_INLINE BOOL CDC::BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::BitBlt(m_hDC, x, y, nWidth, nHeight,
+ pSrcDC->GetSafeHdc(), xSrc, ySrc, dwRop); }
+_AFXWIN_INLINE BOOL CDC::StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::StretchBlt(m_hDC, x, y, nWidth, nHeight,
+ pSrcDC->GetSafeHdc(), xSrc, ySrc, nSrcWidth, nSrcHeight,
+ dwRop); }
+_AFXWIN_INLINE COLORREF CDC::GetPixel(int x, int y) const
+ { ASSERT(m_hDC != NULL); return ::GetPixel(m_hDC, x, y); }
+_AFXWIN_INLINE COLORREF CDC::GetPixel(POINT point) const
+ { ASSERT(m_hDC != NULL); return ::GetPixel(m_hDC, point.x, point.y); }
+_AFXWIN_INLINE COLORREF CDC::SetPixel(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixel(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE COLORREF CDC::SetPixel(POINT point, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixel(m_hDC, point.x, point.y, crColor); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::FloodFill(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::FloodFill(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE BOOL CDC::ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType)
+ { ASSERT(m_hDC != NULL); return ::ExtFloodFill(m_hDC, x, y, crColor, nFillType); }
+#endif
+_AFXWIN_INLINE BOOL CDC::TextOut(int x, int y, LPCTSTR lpszString, int nCount)
+ { ASSERT(m_hDC != NULL); return ::TextOut(m_hDC, x, y, lpszString, nCount); }
+_AFXWIN_INLINE BOOL CDC::TextOut(int x, int y, const CString& str)
+ { ASSERT(m_hDC != NULL); return TextOut(x, y, (LPCTSTR)str, str.GetLength()); } // call virtual
+_AFXWIN_INLINE BOOL CDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths)
+ { ASSERT(m_hDC != NULL); return ::ExtTextOut(m_hDC, x, y, nOptions, lpRect,
+ lpszString, nCount, lpDxWidths); }
+_AFXWIN_INLINE BOOL CDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
+ const CString& str, LPINT lpDxWidths)
+ { ASSERT(m_hDC != NULL); return ::ExtTextOut(m_hDC, x, y, nOptions, lpRect,
+ str, str.GetLength(), lpDxWidths); }
+_AFXWIN_INLINE CSize CDC::TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin)
+ { ASSERT(m_hDC != NULL); return ::TabbedTextOut(m_hDC, x, y, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions, nTabOrigin); }
+_AFXWIN_INLINE CSize CDC::TabbedTextOut(int x, int y, const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin)
+ { ASSERT(m_hDC != NULL); return ::TabbedTextOut(m_hDC, x, y, str, str.GetLength(),
+ nTabPositions, lpnTabStopPositions, nTabOrigin); }
+_AFXWIN_INLINE int CDC::DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
+ UINT nFormat)
+ { ASSERT(m_hDC != NULL);
+ return ::DrawText(m_hDC, lpszString, nCount, lpRect, nFormat); }
+_AFXWIN_INLINE int CDC::DrawText(const CString& str, LPRECT lpRect, UINT nFormat)
+ { ASSERT(m_hDC != NULL);
+ return DrawText((LPCTSTR)str, str.GetLength(), lpRect, nFormat); }
+_AFXWIN_INLINE CSize CDC::GetTextExtent(LPCTSTR lpszString, int nCount) const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hAttribDC, lpszString, nCount, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CDC::GetTextExtent(const CString& str) const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hAttribDC, str, str.GetLength(), &size));
+ return size;
+ }
+
+_AFXWIN_INLINE CSize CDC::GetOutputTextExtent(LPCTSTR lpszString, int nCount) const
+ {
+ ASSERT(m_hDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hDC, lpszString, nCount, &size));
+ return size;
+ }
+_AFXWIN_INLINE CSize CDC::GetOutputTextExtent(const CString& str) const
+ {
+ ASSERT(m_hDC != NULL);
+ SIZE size;
+ VERIFY(::GetTextExtentPoint(m_hDC, str, str.GetLength(), &size));
+ return size;
+ }
+
+_AFXWIN_INLINE CSize CDC::GetTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTabbedTextExtent(m_hAttribDC, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE CSize CDC::GetTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTabbedTextExtent(m_hAttribDC,
+ str, str.GetLength(), nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE CSize CDC::GetOutputTabbedTextExtent(LPCTSTR lpszString, int nCount,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hDC != NULL); return ::GetTabbedTextExtent(m_hDC, lpszString, nCount,
+ nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE CSize CDC::GetOutputTabbedTextExtent(const CString& str,
+ int nTabPositions, LPINT lpnTabStopPositions) const
+ { ASSERT(m_hDC != NULL); return ::GetTabbedTextExtent(m_hDC,
+ str, str.GetLength(), nTabPositions, lpnTabStopPositions); }
+_AFXWIN_INLINE BOOL CDC::GrayString(CBrush* pBrush,
+ BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int),
+ LPARAM lpData, int nCount,
+ int x, int y, int nWidth, int nHeight)
+ { ASSERT(m_hDC != NULL); return ::GrayString(m_hDC, (HBRUSH)pBrush->GetSafeHandle(),
+ (GRAYSTRINGPROC)lpfnOutput, lpData, nCount, x, y, nWidth, nHeight); }
+_AFXWIN_INLINE UINT CDC::GetTextAlign() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextAlign(m_hAttribDC); }
+_AFXWIN_INLINE int CDC::GetTextFace(int nCount, LPTSTR lpszFacename) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextFace(m_hAttribDC, nCount, lpszFacename); }
+_AFXWIN_INLINE int CDC::GetTextFace(CString& rString) const
+ { ASSERT(m_hAttribDC != NULL); int nResult = ::GetTextFace(m_hAttribDC,
+ 256, rString.GetBuffer(256)); rString.ReleaseBuffer();
+ return nResult; }
+_AFXWIN_INLINE BOOL CDC::GetTextMetrics(LPTEXTMETRIC lpMetrics) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextMetrics(m_hAttribDC, lpMetrics); }
+_AFXWIN_INLINE BOOL CDC::GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const
+ { ASSERT(m_hDC != NULL); return ::GetTextMetrics(m_hDC, lpMetrics); }
+_AFXWIN_INLINE int CDC::GetTextCharacterExtra() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetTextCharacterExtra(m_hAttribDC); }
+_AFXWIN_INLINE BOOL CDC::GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharWidth(m_hAttribDC, nFirstChar, nLastChar, lpBuffer); }
+_AFXWIN_INLINE BOOL CDC::GetOutputCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const
+ { ASSERT(m_hDC != NULL); return ::GetCharWidth(m_hDC, nFirstChar, nLastChar, lpBuffer); }
+_AFXWIN_INLINE CSize CDC::GetAspectRatioFilter() const
+ {
+ ASSERT(m_hAttribDC != NULL);
+ SIZE size;
+ VERIFY(::GetAspectRatioFilterEx(m_hAttribDC, &size));
+ return size;
+ }
+_AFXWIN_INLINE BOOL CDC::ScrollDC(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* pRgnUpdate, LPRECT lpRectUpdate)
+ { ASSERT(m_hDC != NULL); return ::ScrollDC(m_hDC, dx, dy, lpRectScroll,
+ lpRectClip, (HRGN)pRgnUpdate->GetSafeHandle(), lpRectUpdate); }
+
+// Printer Escape Functions
+_AFXWIN_INLINE int CDC::Escape(int nEscape, int nCount, LPCSTR lpszInData, LPVOID lpOutData)
+ { ASSERT(m_hDC != NULL); return ::Escape(m_hDC, nEscape, nCount, lpszInData, lpOutData);}
+
+// CDC 3.1 Specific functions
+#ifndef _MAC
+_AFXWIN_INLINE UINT CDC::SetBoundsRect(LPCRECT lpRectBounds, UINT flags)
+ { ASSERT(m_hDC != NULL); return ::SetBoundsRect(m_hDC, lpRectBounds, flags); }
+_AFXWIN_INLINE UINT CDC::GetBoundsRect(LPRECT lpRectBounds, UINT flags)
+ { ASSERT(m_hAttribDC != NULL); return ::GetBoundsRect(m_hAttribDC, lpRectBounds, flags); }
+#endif
+_AFXWIN_INLINE BOOL CDC::ResetDC(const DEVMODE* lpDevMode)
+ { ASSERT(m_hAttribDC != NULL); return ::ResetDC(m_hAttribDC, lpDevMode) != NULL; }
+_AFXWIN_INLINE UINT CDC::GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetOutlineTextMetrics(m_hAttribDC, cbData, lpotm); }
+_AFXWIN_INLINE BOOL CDC::GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharABCWidths(m_hAttribDC, nFirstChar, nLastChar, lpabc); }
+_AFXWIN_INLINE DWORD CDC::GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData,
+ DWORD cbData) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetFontData(m_hAttribDC, dwTable, dwOffset, lpData, cbData); }
+#ifndef _MAC
+_AFXWIN_INLINE int CDC::GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetKerningPairs(m_hAttribDC, nPairs, lpkrnpair); }
+_AFXWIN_INLINE DWORD CDC::GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm,
+ DWORD cbBuffer, LPVOID lpBuffer, const MAT2* lpmat2) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetGlyphOutline(m_hAttribDC, nChar, nFormat,
+ lpgm, cbBuffer, lpBuffer, lpmat2); }
+#endif
+
+// Document handling functions
+_AFXWIN_INLINE int CDC::StartDoc(LPDOCINFO lpDocInfo)
+ { ASSERT(m_hDC != NULL); return ::StartDoc(m_hDC, lpDocInfo); }
+_AFXWIN_INLINE int CDC::StartPage()
+ { ASSERT(m_hDC != NULL); return ::StartPage(m_hDC); }
+_AFXWIN_INLINE int CDC::EndPage()
+ { ASSERT(m_hDC != NULL); return ::EndPage(m_hDC); }
+_AFXWIN_INLINE int CDC::SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int))
+ { ASSERT(m_hDC != NULL); return ::SetAbortProc(m_hDC, (ABORTPROC)lpfn); }
+_AFXWIN_INLINE int CDC::AbortDoc()
+ { ASSERT(m_hDC != NULL); return ::AbortDoc(m_hDC); }
+_AFXWIN_INLINE int CDC::EndDoc()
+ { ASSERT(m_hDC != NULL); return ::EndDoc(m_hDC); }
+
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CDC::MaskBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
+ int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask, DWORD dwRop)
+ { ASSERT(m_hDC != NULL); return ::MaskBlt(m_hDC, x, y, nWidth, nHeight, pSrcDC->GetSafeHdc(),
+ xSrc, ySrc, (HBITMAP)maskBitmap.m_hObject, xMask, yMask, dwRop); }
+_AFXWIN_INLINE BOOL CDC::PlgBlt(LPPOINT lpPoint, CDC* pSrcDC, int xSrc, int ySrc,
+ int nWidth, int nHeight, CBitmap& maskBitmap, int xMask, int yMask)
+ { ASSERT(m_hDC != NULL); return ::PlgBlt(m_hDC, lpPoint, pSrcDC->GetSafeHdc(), xSrc, ySrc, nWidth,
+ nHeight, (HBITMAP)maskBitmap.m_hObject, xMask, yMask); }
+_AFXWIN_INLINE BOOL CDC::SetPixelV(int x, int y, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixelV(m_hDC, x, y, crColor); }
+_AFXWIN_INLINE BOOL CDC::SetPixelV(POINT point, COLORREF crColor)
+ { ASSERT(m_hDC != NULL); return ::SetPixelV(m_hDC, point.x, point.y, crColor); }
+_AFXWIN_INLINE BOOL CDC::AngleArc(int x, int y, int nRadius,
+ float fStartAngle, float fSweepAngle)
+ { ASSERT(m_hDC != NULL); return ::AngleArc(m_hDC, x, y, nRadius, fStartAngle, fSweepAngle); }
+_AFXWIN_INLINE BOOL CDC::ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd)
+ { ASSERT(m_hDC != NULL); return ArcTo(lpRect->left, lpRect->top, lpRect->right,
+ lpRect->bottom, ptStart.x, ptStart.y, ptEnd.x, ptEnd.y); }
+_AFXWIN_INLINE int CDC::GetArcDirection() const
+ { ASSERT(m_hAttribDC != NULL); return ::GetArcDirection(m_hAttribDC); }
+_AFXWIN_INLINE BOOL CDC::PolyPolyline(const POINT* lpPoints, const DWORD* lpPolyPoints,
+ int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyPolyline(m_hDC, lpPoints, lpPolyPoints, nCount); }
+_AFXWIN_INLINE BOOL CDC::GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetColorAdjustment(m_hAttribDC, lpColorAdjust); }
+_AFXWIN_INLINE CPen* CDC::GetCurrentPen() const
+ { ASSERT(m_hAttribDC != NULL); return CPen::FromHandle((HPEN)::GetCurrentObject(m_hAttribDC, OBJ_PEN)); }
+_AFXWIN_INLINE CBrush* CDC::GetCurrentBrush() const
+ { ASSERT(m_hAttribDC != NULL); return CBrush::FromHandle((HBRUSH)::GetCurrentObject(m_hAttribDC, OBJ_BRUSH)); }
+_AFXWIN_INLINE CPalette* CDC::GetCurrentPalette() const
+ { ASSERT(m_hAttribDC != NULL); return CPalette::FromHandle((HPALETTE)::GetCurrentObject(m_hAttribDC, OBJ_PAL)); }
+_AFXWIN_INLINE CFont* CDC::GetCurrentFont() const
+ { ASSERT(m_hAttribDC != NULL); return CFont::FromHandle((HFONT)::GetCurrentObject(m_hAttribDC, OBJ_FONT)); }
+_AFXWIN_INLINE CBitmap* CDC::GetCurrentBitmap() const
+ { ASSERT(m_hAttribDC != NULL); return CBitmap::FromHandle((HBITMAP)::GetCurrentObject(m_hAttribDC, OBJ_BITMAP)); }
+_AFXWIN_INLINE BOOL CDC::PolyBezier(const POINT* lpPoints, int nCount)
+ { ASSERT(m_hDC != NULL); return ::PolyBezier(m_hDC, lpPoints, nCount); }
+
+_AFXWIN_INLINE int CDC::DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData)
+ { ASSERT(m_hDC != NULL); return ::DrawEscape(m_hDC, nEscape, nInputSize, lpszInputData); }
+_AFXWIN_INLINE int CDC::Escape(int nEscape, int nInputSize, LPCSTR lpszInputData,
+ int nOutputSize, LPSTR lpszOutputData)
+ { ASSERT(m_hDC != NULL); return ::ExtEscape(m_hDC, nEscape, nInputSize, lpszInputData,
+ nOutputSize, lpszOutputData); }
+
+_AFXWIN_INLINE BOOL CDC::GetCharABCWidths(UINT nFirstChar, UINT nLastChar,
+ LPABCFLOAT lpABCF) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharABCWidthsFloat(m_hAttribDC, nFirstChar, nLastChar, lpABCF); }
+_AFXWIN_INLINE BOOL CDC::GetCharWidth(UINT nFirstChar, UINT nLastChar,
+ float* lpFloatBuffer) const
+ { ASSERT(m_hAttribDC != NULL); return ::GetCharWidthFloat(m_hAttribDC, nFirstChar, nLastChar, lpFloatBuffer); }
+
+_AFXWIN_INLINE BOOL CDC::AbortPath()
+ { ASSERT(m_hDC != NULL); return ::AbortPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::BeginPath()
+ { ASSERT(m_hDC != NULL); return ::BeginPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::CloseFigure()
+ { ASSERT(m_hDC != NULL); return ::CloseFigure(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::EndPath()
+ { ASSERT(m_hDC != NULL); return ::EndPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::FillPath()
+ { ASSERT(m_hDC != NULL); return ::FillPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::FlattenPath()
+ { ASSERT(m_hDC != NULL); return ::FlattenPath(m_hDC); }
+_AFXWIN_INLINE float CDC::GetMiterLimit() const
+ { ASSERT(m_hDC != NULL); float fMiterLimit;
+ VERIFY(::GetMiterLimit(m_hDC, &fMiterLimit)); return fMiterLimit; }
+_AFXWIN_INLINE int CDC::GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const
+ { ASSERT(m_hDC != NULL); return ::GetPath(m_hDC, lpPoints, lpTypes, nCount); }
+_AFXWIN_INLINE BOOL CDC::SetMiterLimit(float fMiterLimit)
+ { ASSERT(m_hDC != NULL); return ::SetMiterLimit(m_hDC, fMiterLimit, NULL); }
+_AFXWIN_INLINE BOOL CDC::StrokeAndFillPath()
+ { ASSERT(m_hDC != NULL); return ::StrokeAndFillPath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::StrokePath()
+ { ASSERT(m_hDC != NULL); return ::StrokePath(m_hDC); }
+_AFXWIN_INLINE BOOL CDC::WidenPath()
+ { ASSERT(m_hDC != NULL); return ::WidenPath(m_hDC); }
+
+_AFXWIN_INLINE BOOL CDC::AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData)
+ { ASSERT(m_hDC != NULL); return ::GdiComment(m_hDC, nDataSize, pCommentData); }
+_AFXWIN_INLINE BOOL CDC::PlayMetaFile(HENHMETAFILE hEnhMF, LPCRECT lpBounds)
+ { ASSERT(m_hDC != NULL); return ::PlayEnhMetaFile(m_hDC, hEnhMF, lpBounds); }
+#endif
+
+// CMenu
+_AFXWIN_INLINE CMenu::CMenu()
+ { m_hMenu = NULL; }
+_AFXWIN_INLINE CMenu::~CMenu()
+ { DestroyMenu(); }
+_AFXWIN_INLINE BOOL CMenu::CreateMenu()
+ { return Attach(::CreateMenu()); }
+_AFXWIN_INLINE BOOL CMenu::CreatePopupMenu()
+ { return Attach(::CreatePopupMenu()); }
+_AFXWIN_INLINE CMenu::operator HMENU() const
+ { ASSERT(this == NULL || m_hMenu == NULL || ::IsMenu(m_hMenu));
+ return this == NULL ? NULL : m_hMenu; }
+_AFXWIN_INLINE HMENU CMenu::GetSafeHmenu() const
+ { ASSERT(this == NULL || m_hMenu == NULL || ::IsMenu(m_hMenu));
+ return this == NULL ? NULL : m_hMenu; }
+_AFXWIN_INLINE BOOL CMenu::DeleteMenu(UINT nPosition, UINT nFlags)
+ { ASSERT(::IsMenu(m_hMenu)); return ::DeleteMenu(m_hMenu, nPosition, nFlags); }
+_AFXWIN_INLINE BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::AppendMenu(m_hMenu, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::AppendMenu(m_hMenu, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE UINT CMenu::CheckMenuItem(UINT nIDCheckItem, UINT nCheck)
+ { ASSERT(::IsMenu(m_hMenu)); return (UINT)::CheckMenuItem(m_hMenu, nIDCheckItem, nCheck); }
+_AFXWIN_INLINE UINT CMenu::EnableMenuItem(UINT nIDEnableItem, UINT nEnable)
+ { ASSERT(::IsMenu(m_hMenu)); return ::EnableMenuItem(m_hMenu, nIDEnableItem, nEnable); }
+_AFXWIN_INLINE UINT CMenu::GetMenuItemCount() const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuItemCount(m_hMenu); }
+_AFXWIN_INLINE UINT CMenu::GetMenuItemID(int nPos) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuItemID(m_hMenu, nPos); }
+_AFXWIN_INLINE UINT CMenu::GetMenuState(UINT nID, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuState(m_hMenu, nID, nFlags); }
+_AFXWIN_INLINE int CMenu::GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); return ::GetMenuString(m_hMenu, nIDItem, lpString, nMaxCount, nFlags); }
+_AFXWIN_INLINE int CMenu::GetMenuString(UINT nIDItem, CString& rString, UINT nFlags) const
+ { ASSERT(::IsMenu(m_hMenu)); int nResult = ::GetMenuString(m_hMenu, nIDItem,
+ rString.GetBuffer(256), 256, nFlags); rString.ReleaseBuffer();
+ return nResult; }
+_AFXWIN_INLINE CMenu* CMenu::GetSubMenu(int nPos) const
+ { ASSERT(::IsMenu(m_hMenu)); return CMenu::FromHandle(::GetSubMenu(m_hMenu, nPos)); }
+_AFXWIN_INLINE BOOL CMenu::InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem,
+ LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::InsertMenu(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::InsertMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::InsertMenu(m_hMenu, nPosition, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem)
+ { ASSERT(::IsMenu(m_hMenu)); return ::ModifyMenu(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem); }
+_AFXWIN_INLINE BOOL CMenu::ModifyMenu(UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp)
+ { ASSERT(::IsMenu(m_hMenu)); return ::ModifyMenu(m_hMenu, nPosition, nFlags | MF_BITMAP, nIDNewItem,
+ (LPCTSTR)pBmp->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::RemoveMenu(UINT nPosition, UINT nFlags)
+ { ASSERT(::IsMenu(m_hMenu)); return ::RemoveMenu(m_hMenu, nPosition, nFlags); }
+_AFXWIN_INLINE BOOL CMenu::SetMenuItemBitmaps(UINT nPosition, UINT nFlags,
+ const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked)
+ { ASSERT(::IsMenu(m_hMenu)); return ::SetMenuItemBitmaps(m_hMenu, nPosition, nFlags,
+ (HBITMAP)pBmpUnchecked->GetSafeHandle(),
+ (HBITMAP)pBmpChecked->GetSafeHandle()); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenu(LPCTSTR lpszResourceName)
+ { return Attach(::LoadMenu(AfxFindResourceHandle(lpszResourceName,
+ RT_MENU), lpszResourceName)); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenu(UINT nIDResource)
+ { return Attach(::LoadMenu(AfxFindResourceHandle(
+ MAKEINTRESOURCE(nIDResource), RT_MENU), MAKEINTRESOURCE(nIDResource))); }
+_AFXWIN_INLINE BOOL CMenu::LoadMenuIndirect(const void* lpMenuTemplate)
+ { return Attach(::LoadMenuIndirect(lpMenuTemplate)); }
+// Win4
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CMenu::SetMenuContextHelpId(DWORD dwContextHelpId)
+ { return ::SetMenuContextHelpId(m_hMenu, dwContextHelpId); }
+_AFXWIN_INLINE DWORD CMenu::GetMenuContextHelpId() const
+ { return ::GetMenuContextHelpId(m_hMenu); }
+_AFXWIN_INLINE BOOL CMenu::CheckMenuRadioItem(UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags)
+ { return ::CheckMenuRadioItem(m_hMenu, nIDFirst, nIDLast, nIDItem, nFlags); }
+#endif
+
+// CCmdUI
+_AFXWIN_INLINE void CCmdUI::ContinueRouting()
+ { m_bContinueRouting = TRUE; }
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXWIN_INLINE
diff --git a/public/sdk/inc/mfc42/afxwin2.inl b/public/sdk/inc/mfc42/afxwin2.inl
new file mode 100644
index 000000000..c84797b7b
--- /dev/null
+++ b/public/sdk/inc/mfc42/afxwin2.inl
@@ -0,0 +1,1043 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// Inlines for AFXWIN.H (part 2)
+
+#ifdef _AFXWIN_INLINE
+
+// CWnd
+_AFXWIN_INLINE CWnd::operator HWND() const
+ { return this == NULL ? NULL : m_hWnd; }
+_AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const
+ { return this == NULL ? NULL : m_hWnd; }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE DWORD CWnd::GetStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)GetWindowLong(m_hWnd, GWL_STYLE); }
+_AFXWIN_INLINE DWORD CWnd::GetExStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)GetWindowLong(m_hWnd, GWL_EXSTYLE); }
+_AFXWIN_INLINE BOOL CWnd::ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ModifyStyle(m_hWnd, dwRemove, dwAdd, nFlags); }
+_AFXWIN_INLINE BOOL CWnd::ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ModifyStyleEx(m_hWnd, dwRemove, dwAdd, nFlags); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::GetOwner() const
+ { return m_hWndOwner != NULL ? CWnd::FromHandle(m_hWndOwner) : GetParent(); }
+_AFXWIN_INLINE void CWnd::SetOwner(CWnd* pOwnerWnd)
+ { m_hWndOwner = pOwnerWnd != NULL ? pOwnerWnd->m_hWnd : NULL; }
+_AFXWIN_INLINE LRESULT CWnd::SendMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, message, wParam, lParam); }
+_AFXWIN_INLINE BOOL CWnd::PostMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::PostMessage(m_hWnd, message, wParam, lParam); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::SetWindowText(LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetWindowText(m_hWnd, lpszString); }
+_AFXWIN_INLINE int CWnd::GetWindowText(LPTSTR lpszString, int nMaxCount) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowText(m_hWnd, lpszString, nMaxCount); }
+_AFXWIN_INLINE int CWnd::GetWindowTextLength() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowTextLength(m_hWnd); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::SetFont(CFont* pFont, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_SETFONT, (WPARAM)pFont->GetSafeHandle(), bRedraw); }
+_AFXWIN_INLINE CFont* CWnd::GetFont() const
+ { ASSERT(::IsWindow(m_hWnd)); return CFont::FromHandle(
+ (HFONT)::SendMessage(m_hWnd, WM_GETFONT, 0, 0)); }
+_AFXWIN_INLINE CMenu* CWnd::GetMenu() const
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle(::GetMenu(m_hWnd)); }
+_AFXWIN_INLINE BOOL CWnd::SetMenu(CMenu* pMenu)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetMenu(m_hWnd, pMenu->GetSafeHmenu()); }
+_AFXWIN_INLINE void CWnd::DrawMenuBar()
+ { ASSERT(::IsWindow(m_hWnd)); ::DrawMenuBar(m_hWnd); }
+_AFXWIN_INLINE CMenu* CWnd::GetSystemMenu(BOOL bRevert) const
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle(::GetSystemMenu(m_hWnd, bRevert)); }
+_AFXWIN_INLINE BOOL CWnd::HiliteMenuItem(CMenu* pMenu, UINT nIDHiliteItem, UINT nHilite)
+ { ASSERT(::IsWindow(m_hWnd)); return ::HiliteMenuItem(m_hWnd, pMenu->m_hMenu, nIDHiliteItem, nHilite); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE int CWnd::GetDlgCtrlID() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgCtrlID(m_hWnd); }
+_AFXWIN_INLINE int CWnd::SetDlgCtrlID(int nID)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SetWindowLong(m_hWnd, GWL_ID, nID); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsIconic() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsIconic(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::IsZoomed() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsZoomed(m_hWnd); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint)
+ { ASSERT(::IsWindow(m_hWnd)); ::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::MoveWindow(LPCRECT lpRect, BOOL bRepaint)
+ { MoveWindow(lpRect->left, lpRect->top, lpRect->right - lpRect->left,
+ lpRect->bottom - lpRect->top, bRepaint); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetWindowPos(m_hWnd, pWndInsertAfter->GetSafeHwnd(),
+ x, y, cx, cy, nFlags); }
+#endif //_AFX_NO_OCC_SUPPORT
+#ifndef _MAC
+_AFXWIN_INLINE UINT CWnd::ArrangeIconicWindows()
+ { ASSERT(::IsWindow(m_hWnd)); return ::ArrangeIconicWindows(m_hWnd); }
+#endif
+_AFXWIN_INLINE void CWnd::BringWindowToTop()
+ { ASSERT(::IsWindow(m_hWnd)); ::BringWindowToTop(m_hWnd); }
+_AFXWIN_INLINE void CWnd::GetWindowRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetWindowRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::GetClientRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetClientRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::MapWindowPoints(CWnd* pwndTo, LPPOINT lpPoint, UINT nCount) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapWindowPoints(m_hWnd, pwndTo->GetSafeHwnd(), lpPoint, nCount); }
+_AFXWIN_INLINE void CWnd::MapWindowPoints(CWnd* pwndTo, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapWindowPoints(m_hWnd, pwndTo->GetSafeHwnd(), (LPPOINT)lpRect, 2); }
+_AFXWIN_INLINE void CWnd::ClientToScreen(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ClientToScreen(m_hWnd, lpPoint); }
+_AFXWIN_INLINE void CWnd::ClientToScreen(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ClientToScreen(m_hWnd, (LPPOINT)lpRect);
+ ::ClientToScreen(m_hWnd, ((LPPOINT)lpRect)+1); }
+_AFXWIN_INLINE void CWnd::ScreenToClient(LPPOINT lpPoint) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ScreenToClient(m_hWnd, lpPoint); }
+_AFXWIN_INLINE void CWnd::ScreenToClient(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::ScreenToClient(m_hWnd, (LPPOINT)lpRect);
+ ::ScreenToClient(m_hWnd, ((LPPOINT)lpRect)+1); }
+_AFXWIN_INLINE CDC* CWnd::BeginPaint(LPPAINTSTRUCT lpPaint)
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::BeginPaint(m_hWnd, lpPaint)); }
+_AFXWIN_INLINE void CWnd::EndPaint(LPPAINTSTRUCT lpPaint)
+ { ASSERT(::IsWindow(m_hWnd)); ::EndPaint(m_hWnd, lpPaint); }
+_AFXWIN_INLINE CDC* CWnd::GetDC()
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDC(m_hWnd)); }
+_AFXWIN_INLINE CDC* CWnd::GetWindowDC()
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetWindowDC(m_hWnd)); }
+_AFXWIN_INLINE int CWnd::ReleaseDC(CDC* pDC)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ReleaseDC(m_hWnd, pDC->m_hDC); }
+_AFXWIN_INLINE void CWnd::UpdateWindow()
+ { ASSERT(::IsWindow(m_hWnd)); ::UpdateWindow(m_hWnd); }
+_AFXWIN_INLINE void CWnd::SetRedraw(BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_SETREDRAW, bRedraw, 0); }
+_AFXWIN_INLINE BOOL CWnd::GetUpdateRect(LPRECT lpRect, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetUpdateRect(m_hWnd, lpRect, bErase); }
+_AFXWIN_INLINE int CWnd::GetUpdateRgn(CRgn* pRgn, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetUpdateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle(), bErase); }
+_AFXWIN_INLINE void CWnd::Invalidate(BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRect(m_hWnd, NULL, bErase); }
+_AFXWIN_INLINE void CWnd::InvalidateRect(LPCRECT lpRect, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRect(m_hWnd, lpRect, bErase); }
+_AFXWIN_INLINE void CWnd::InvalidateRgn(CRgn* pRgn, BOOL bErase)
+ { ASSERT(::IsWindow(m_hWnd)); ::InvalidateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle(), bErase); }
+_AFXWIN_INLINE void CWnd::ValidateRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::ValidateRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CWnd::ValidateRgn(CRgn* pRgn)
+ { ASSERT(::IsWindow(m_hWnd)); ::ValidateRgn(m_hWnd, (HRGN)pRgn->GetSafeHandle()); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::ShowWindow(int nCmdShow)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ShowWindow(m_hWnd, nCmdShow); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsWindowVisible() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsWindowVisible(m_hWnd); }
+_AFXWIN_INLINE void CWnd::ShowOwnedPopups(BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowOwnedPopups(m_hWnd, bShow); }
+_AFXWIN_INLINE void CWnd::SendMessageToDescendants(
+ UINT message, WPARAM wParam, LPARAM lParam, BOOL bDeep, BOOL bOnlyPerm)
+ { ASSERT(::IsWindow(m_hWnd)); CWnd::SendMessageToDescendants(m_hWnd, message, wParam, lParam, bDeep,
+ bOnlyPerm); }
+_AFXWIN_INLINE CWnd* CWnd::GetDescendantWindow(int nID, BOOL bOnlyPerm) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::GetDescendantWindow(m_hWnd, nID, bOnlyPerm); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsDialogMessage(LPMSG lpMsg)
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsDialogMessage(m_hWnd, lpMsg); }
+#endif
+
+_AFXWIN_INLINE CDC* CWnd::GetDCEx(CRgn* prgnClip, DWORD flags)
+ { ASSERT(::IsWindow(m_hWnd)); return CDC::FromHandle(::GetDCEx(m_hWnd, (HRGN)prgnClip->GetSafeHandle(), flags)); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::LockWindowUpdate()
+ { ASSERT(::IsWindow(m_hWnd)); return ::LockWindowUpdate(m_hWnd); }
+_AFXWIN_INLINE void CWnd::UnlockWindowUpdate()
+ { ASSERT(::IsWindow(m_hWnd)); ::LockWindowUpdate(NULL); }
+#endif
+_AFXWIN_INLINE BOOL CWnd::RedrawWindow(LPCRECT lpRectUpdate, CRgn* prgnUpdate,
+ UINT flags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::RedrawWindow(m_hWnd, lpRectUpdate, (HRGN)prgnUpdate->GetSafeHandle(), flags); }
+_AFXWIN_INLINE BOOL CWnd::EnableScrollBar(int nSBFlags, UINT nArrowFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::EnableScrollBar(m_hWnd, nSBFlags, nArrowFlags); }
+
+_AFXWIN_INLINE UINT CWnd::SetTimer(UINT nIDEvent, UINT nElapse,
+ void (CALLBACK* lpfnTimer)(HWND, UINT, UINT, DWORD))
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetTimer(m_hWnd, nIDEvent, nElapse,
+ (TIMERPROC)lpfnTimer); }
+_AFXWIN_INLINE BOOL CWnd::KillTimer(int nIDEvent)
+ { ASSERT(::IsWindow(m_hWnd)); return ::KillTimer(m_hWnd, nIDEvent); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE BOOL CWnd::IsWindowEnabled() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsWindowEnabled(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::EnableWindow(BOOL bEnable)
+ { ASSERT(::IsWindow(m_hWnd)); return ::EnableWindow(m_hWnd, bEnable); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetActiveWindow()
+ { return CWnd::FromHandle(::GetActiveWindow()); }
+_AFXWIN_INLINE CWnd* CWnd::SetActiveWindow()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetActiveWindow(m_hWnd)); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetCapture()
+ { return CWnd::FromHandle(::GetCapture()); }
+_AFXWIN_INLINE CWnd* CWnd::SetCapture()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetCapture(m_hWnd)); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetFocus()
+ { return CWnd::FromHandle(::GetFocus()); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::SetFocus()
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetFocus(m_hWnd)); }
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetDesktopWindow()
+ { return CWnd::FromHandle(::GetDesktopWindow()); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE void CWnd::CheckDlgButton(int nIDButton, UINT nCheck)
+ { ASSERT(::IsWindow(m_hWnd)); ::CheckDlgButton(m_hWnd, nIDButton, nCheck); }
+_AFXWIN_INLINE void CWnd::CheckRadioButton(int nIDFirstButton, int nIDLastButton,
+ int nIDCheckButton)
+ { ASSERT(::IsWindow(m_hWnd)); ::CheckRadioButton(m_hWnd, nIDFirstButton, nIDLastButton, nIDCheckButton); }
+#endif //_AFX_NO_OCC_SUPPORT
+#ifndef _MAC
+_AFXWIN_INLINE int CWnd::DlgDirList(LPTSTR lpPathSpec, int nIDListBox,
+ int nIDStaticPath, UINT nFileType)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirList(m_hWnd, lpPathSpec, nIDListBox,
+ nIDStaticPath, nFileType); }
+_AFXWIN_INLINE int CWnd::DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox,
+ int nIDStaticPath, UINT nFileType)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirListComboBox(m_hWnd, lpPathSpec,
+ nIDComboBox, nIDStaticPath, nFileType); }
+_AFXWIN_INLINE BOOL CWnd::DlgDirSelect(LPTSTR lpString, int nIDListBox)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirSelectEx(m_hWnd, lpString, _MAX_PATH, nIDListBox); }
+_AFXWIN_INLINE BOOL CWnd::DlgDirSelectComboBox(LPTSTR lpString, int nIDComboBox)
+ { ASSERT(::IsWindow(m_hWnd)); return ::DlgDirSelectComboBoxEx(m_hWnd, lpString, _MAX_PATH, nIDComboBox);}
+#endif
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::GetDlgItem(int nID) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID)); }
+_AFXWIN_INLINE void CWnd::GetDlgItem(int nID, HWND* phWnd) const
+ { ASSERT(::IsWindow(m_hWnd)); ASSERT(phWnd != NULL); *phWnd = ::GetDlgItem(m_hWnd, nID); }
+_AFXWIN_INLINE UINT CWnd::GetDlgItemInt(int nID, BOOL* lpTrans,
+ BOOL bSigned) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgItemInt(m_hWnd, nID, lpTrans, bSigned);}
+_AFXWIN_INLINE int CWnd::GetDlgItemText(int nID, LPTSTR lpStr, int nMaxCount) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetDlgItemText(m_hWnd, nID, lpStr, nMaxCount);}
+#endif //_AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE CWnd* CWnd::GetNextDlgGroupItem(CWnd* pWndCtl, BOOL bPrevious) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextDlgGroupItem(m_hWnd,
+ pWndCtl->GetSafeHwnd(), bPrevious)); }
+_AFXWIN_INLINE CWnd* CWnd::GetNextDlgTabItem(CWnd* pWndCtl, BOOL bPrevious) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextDlgTabItem(m_hWnd,
+ pWndCtl->GetSafeHwnd(), bPrevious)); }
+#ifdef _AFX_NO_OCC_SUPPORT
+_AFXWIN_INLINE UINT CWnd::IsDlgButtonChecked(int nIDButton) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsDlgButtonChecked(m_hWnd, nIDButton); }
+_AFXWIN_INLINE LPARAM CWnd::SendDlgItemMessage(int nID, UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendDlgItemMessage(m_hWnd, nID, message, wParam, lParam); }
+_AFXWIN_INLINE void CWnd::SetDlgItemInt(int nID, UINT nValue, BOOL bSigned)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetDlgItemInt(m_hWnd, nID, nValue, bSigned); }
+_AFXWIN_INLINE void CWnd::SetDlgItemText(int nID, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetDlgItemText(m_hWnd, nID, lpszString); }
+_AFXWIN_INLINE int CWnd::ScrollWindowEx(int dx, int dy,
+ LPCRECT lpRectScroll, LPCRECT lpRectClip,
+ CRgn* prgnUpdate, LPRECT lpRectUpdate, UINT flags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ScrollWindowEx(m_hWnd, dx, dy, lpRectScroll, lpRectClip,
+ (HRGN)prgnUpdate->GetSafeHandle(), lpRectUpdate, flags); }
+#endif //_AFX_NO_OCC_SUPPORT
+
+_AFXWIN_INLINE void CWnd::ShowScrollBar(UINT nBar, BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowScrollBar(m_hWnd, nBar, bShow); }
+_AFXWIN_INLINE CWnd* CWnd::ChildWindowFromPoint(POINT point) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::ChildWindowFromPoint(m_hWnd, point)); }
+#ifndef _MAC
+_AFXWIN_INLINE CWnd* CWnd::ChildWindowFromPoint(POINT point, UINT nFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::ChildWindowFromPointEx(m_hWnd, point, nFlags)); }
+#endif
+_AFXWIN_INLINE CWnd* PASCAL CWnd::FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName)
+ { return CWnd::FromHandle(::FindWindow(lpszClassName, lpszWindowName)); }
+_AFXWIN_INLINE CWnd* CWnd::GetNextWindow(UINT nFlag) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetNextWindow(m_hWnd, nFlag)); }
+_AFXWIN_INLINE CWnd* CWnd::GetTopWindow() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetTopWindow(m_hWnd)); }
+_AFXWIN_INLINE CWnd* CWnd::GetWindow(UINT nCmd) const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetWindow(m_hWnd, nCmd)); }
+_AFXWIN_INLINE CWnd* CWnd::GetLastActivePopup() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetLastActivePopup(m_hWnd)); }
+_AFXWIN_INLINE BOOL CWnd::IsChild(const CWnd* pWnd) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::IsChild(m_hWnd, pWnd->GetSafeHwnd()); }
+_AFXWIN_INLINE CWnd* CWnd::GetParent() const
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetParent(m_hWnd)); }
+_AFXWIN_INLINE CWnd* CWnd::SetParent(CWnd* pWndNewParent)
+ { ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::SetParent(m_hWnd,
+ pWndNewParent->GetSafeHwnd())); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::WindowFromPoint(POINT point)
+ { return CWnd::FromHandle(::WindowFromPoint(point)); }
+_AFXWIN_INLINE BOOL CWnd::FlashWindow(BOOL bInvert)
+ { ASSERT(::IsWindow(m_hWnd)); return ::FlashWindow(m_hWnd, bInvert); }
+_AFXWIN_INLINE BOOL CWnd::ChangeClipboardChain(HWND hWndNext)
+ { ASSERT(::IsWindow(m_hWnd)); return ::ChangeClipboardChain(m_hWnd, hWndNext); }
+_AFXWIN_INLINE HWND CWnd::SetClipboardViewer()
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetClipboardViewer(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::OpenClipboard()
+ { ASSERT(::IsWindow(m_hWnd)); return ::OpenClipboard(m_hWnd); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetOpenClipboardWindow()
+ { return CWnd::FromHandle(::GetOpenClipboardWindow()); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetClipboardOwner()
+ { return CWnd::FromHandle(::GetClipboardOwner()); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetClipboardViewer()
+ { return CWnd::FromHandle(::GetClipboardViewer()); }
+_AFXWIN_INLINE void CWnd::CreateCaret(CBitmap* pBitmap)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)pBitmap->GetSafeHandle(), 0, 0); }
+_AFXWIN_INLINE void CWnd::CreateSolidCaret(int nWidth, int nHeight)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)0, nWidth, nHeight); }
+_AFXWIN_INLINE void CWnd::CreateGrayCaret(int nWidth, int nHeight)
+ { ASSERT(::IsWindow(m_hWnd)); ::CreateCaret(m_hWnd, (HBITMAP)1, nWidth, nHeight); }
+_AFXWIN_INLINE CPoint PASCAL CWnd::GetCaretPos()
+ { CPoint point; ::GetCaretPos((LPPOINT)&point); return point; }
+_AFXWIN_INLINE void PASCAL CWnd::SetCaretPos(POINT point)
+ { ::SetCaretPos(point.x, point.y); }
+_AFXWIN_INLINE void CWnd::HideCaret()
+ { ASSERT(::IsWindow(m_hWnd)); ::HideCaret(m_hWnd); }
+_AFXWIN_INLINE void CWnd::ShowCaret()
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowCaret(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::SetForegroundWindow()
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetForegroundWindow(m_hWnd); }
+_AFXWIN_INLINE CWnd* PASCAL CWnd::GetForegroundWindow()
+ { return CWnd::FromHandle(::GetForegroundWindow()); }
+
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::SendNotifyMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendNotifyMessage(m_hWnd, message, wParam, lParam); }
+#endif
+
+// Win4
+_AFXWIN_INLINE HICON CWnd::SetIcon(HICON hIcon, BOOL bBigIcon)
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, WM_SETICON, bBigIcon, (LPARAM)hIcon); }
+_AFXWIN_INLINE HICON CWnd::GetIcon(BOOL bBigIcon) const
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, WM_GETICON, bBigIcon, 0); }
+_AFXWIN_INLINE void CWnd::Print(CDC* pDC, DWORD dwFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PRINT, (WPARAM)pDC->GetSafeHdc(), dwFlags); }
+_AFXWIN_INLINE void CWnd::PrintClient(CDC* pDC, DWORD dwFlags) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PRINTCLIENT, (WPARAM)pDC->GetSafeHdc(), dwFlags); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CWnd::SetWindowContextHelpId(DWORD dwContextHelpId)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetWindowContextHelpId(m_hWnd, dwContextHelpId); }
+_AFXWIN_INLINE DWORD CWnd::GetWindowContextHelpId() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetWindowContextHelpId(m_hWnd); }
+#endif
+
+
+// Default message map implementations
+_AFXWIN_INLINE void CWnd::OnActivateApp(BOOL, HTASK)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnActivate(UINT, CWnd*, BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCancelMode()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChildActivate()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnClose()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnContextMenu(CWnd*, CPoint)
+ { Default(); }
+_AFXWIN_INLINE int CWnd::OnCreate(LPCREATESTRUCT)
+ { return (int)Default(); }
+_AFXWIN_INLINE void CWnd::OnDestroy()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEnable(BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEndSession(BOOL)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnEraseBkgnd(CDC*)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnGetMinMaxInfo(MINMAXINFO*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnIconEraseBkgnd(CDC*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKillFocus(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE LRESULT CWnd::OnMenuChar(UINT, UINT, CMenu*)
+ { return Default(); }
+_AFXWIN_INLINE void CWnd::OnMenuSelect(UINT, UINT, HMENU)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMove(int, int)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaint()
+ { Default(); }
+_AFXWIN_INLINE HCURSOR CWnd::OnQueryDragIcon()
+ { return (HCURSOR)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryEndSession()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryNewPalette()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnQueryOpen()
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnSetCursor(CWnd*, UINT, UINT)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnSetFocus(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnShowWindow(BOOL, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSize(UINT, int, int)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTCard(UINT, DWORD)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnWindowPosChanging(WINDOWPOS*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnWindowPosChanged(WINDOWPOS*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDropFiles(HDROP)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaletteIsChanging(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnNcActivate(BOOL)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE void CWnd::OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnNcCreate(LPCREATESTRUCT)
+ { return (BOOL)Default(); }
+_AFXWIN_INLINE UINT CWnd::OnNcHitTest(CPoint)
+ { return (UINT)Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcLButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcMouseMove(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcPaint()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnNcRButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysCommand(UINT, LPARAM)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysDeadChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysKeyDown(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSysKeyUp(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCompacting(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnFontChange()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaletteChanged(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSpoolerStatus(UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTimeChange()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDeadChar(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKeyDown(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnKeyUp(UINT, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnLButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE int CWnd::OnMouseActivate(CWnd*, UINT, UINT)
+ { return (int)Default(); }
+_AFXWIN_INLINE void CWnd::OnMouseMove(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonDblClk(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonDown(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRButtonUp(UINT, CPoint)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnTimer(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnInitMenu(CMenu*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnInitMenuPopup(CMenu*, UINT, BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnAskCbFormatName(UINT, LPTSTR)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnChangeCbChain(HWND, HWND)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDestroyClipboard()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnDrawClipboard()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnHScrollClipboard(CWnd*, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnPaintClipboard(CWnd*, HGLOBAL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRenderAllFormats()
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnRenderFormat(UINT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSizeClipboard(CWnd*, HGLOBAL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnVScrollClipboard(CWnd*, UINT, UINT)
+ { Default(); }
+_AFXWIN_INLINE UINT CWnd::OnGetDlgCode()
+ { return (UINT)Default(); }
+_AFXWIN_INLINE void CWnd::OnMDIActivate(BOOL, CWnd*, CWnd*)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnEnterMenuLoop(BOOL)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnExitMenuLoop(BOOL)
+ { Default(); }
+// Win4 support
+_AFXWIN_INLINE void CWnd::OnStyleChanged(int, LPSTYLESTRUCT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnStyleChanging(int, LPSTYLESTRUCT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnSizing(UINT, LPRECT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnMoving(UINT, LPRECT)
+ { Default(); }
+_AFXWIN_INLINE void CWnd::OnCaptureChanged(CWnd*)
+ { Default(); }
+_AFXWIN_INLINE BOOL CWnd::OnDeviceChange(UINT, DWORD)
+ { return (BOOL)Default(); }
+
+// CWnd dialog data support
+_AFXWIN_INLINE void CWnd::DoDataExchange(CDataExchange*)
+ { } // default does nothing
+
+// CWnd modality support
+_AFXWIN_INLINE void CWnd::BeginModalState()
+ { ::EnableWindow(m_hWnd, FALSE); }
+_AFXWIN_INLINE void CWnd::EndModalState()
+ { ::EnableWindow(m_hWnd, TRUE); }
+
+// CFrameWnd
+_AFXWIN_INLINE void CFrameWnd::DelayUpdateFrameTitle()
+ { m_nIdleFlags |= idleTitle; }
+_AFXWIN_INLINE void CFrameWnd::DelayRecalcLayout(BOOL bNotify)
+ { m_nIdleFlags |= (idleLayout | (bNotify ? idleNotify : 0)); };
+_AFXWIN_INLINE BOOL CFrameWnd::InModalState() const
+ { return m_cModalStack != 0; }
+_AFXWIN_INLINE void CFrameWnd::AddControlBar(CControlBar *pBar)
+ { m_listControlBars.AddTail(pBar); }
+
+// CDialog
+_AFXWIN_INLINE BOOL CDialog::Create(UINT nIDTemplate, CWnd* pParentWnd)
+ { return Create(MAKEINTRESOURCE(nIDTemplate), pParentWnd); }
+_AFXWIN_INLINE void CDialog::MapDialogRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::MapDialogRect(m_hWnd, lpRect); }
+_AFXWIN_INLINE void CDialog::SetHelpID(UINT nIDR)
+ { m_nIDHelp = nIDR; }
+_AFXWIN_INLINE void CDialog::NextDlgCtrl() const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, 0, 0); }
+_AFXWIN_INLINE void CDialog::PrevDlgCtrl() const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, 1, 0); }
+_AFXWIN_INLINE void CDialog::GotoDlgCtrl(CWnd* pWndCtrl)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_NEXTDLGCTL, (WPARAM)pWndCtrl->m_hWnd, 1L); }
+_AFXWIN_INLINE void CDialog::SetDefID(UINT nID)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, DM_SETDEFID, nID, 0); }
+_AFXWIN_INLINE DWORD CDialog::GetDefID() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, DM_GETDEFID, 0, 0); }
+
+// Window control functions
+_AFXWIN_INLINE CStatic::CStatic()
+ { }
+_AFXWIN_INLINE HICON CStatic::SetIcon(HICON hIcon)
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, STM_SETICON, (WPARAM)hIcon, 0L); }
+_AFXWIN_INLINE HICON CStatic::GetIcon() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, STM_GETICON, 0, 0L); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE HENHMETAFILE CStatic::SetEnhMetaFile(HENHMETAFILE hMetaFile)
+ { ASSERT(::IsWindow(m_hWnd)); return (HENHMETAFILE)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_ENHMETAFILE, (LPARAM)hMetaFile); }
+_AFXWIN_INLINE HENHMETAFILE CStatic::GetEnhMetaFile() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HENHMETAFILE)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_ENHMETAFILE, 0L); }
+_AFXWIN_INLINE HBITMAP CStatic::SetBitmap(HBITMAP hBitmap)
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); }
+_AFXWIN_INLINE HBITMAP CStatic::GetBitmap() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_BITMAP, 0L); }
+_AFXWIN_INLINE HCURSOR CStatic::SetCursor(HCURSOR hCursor)
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_CURSOR, (LPARAM)hCursor); }
+_AFXWIN_INLINE HCURSOR CStatic::GetCursor()
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_CURSOR, 0L); }
+#endif
+
+_AFXWIN_INLINE CButton::CButton()
+ { }
+_AFXWIN_INLINE UINT CButton::GetState() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, BM_GETSTATE, 0, 0); }
+_AFXWIN_INLINE void CButton::SetState(BOOL bHighlight)
+ { ::SendMessage(m_hWnd, BM_SETSTATE, bHighlight, 0); }
+_AFXWIN_INLINE int CButton::GetCheck() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, BM_GETCHECK, 0, 0); }
+_AFXWIN_INLINE void CButton::SetCheck(int nCheck)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETCHECK, nCheck, 0); }
+_AFXWIN_INLINE UINT CButton::GetButtonStyle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)GetWindowLong(m_hWnd, GWL_STYLE) & 0xff; }
+_AFXWIN_INLINE void CButton::SetButtonStyle(UINT nStyle, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETSTYLE, nStyle, (LPARAM)bRedraw); }
+// Win4
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE HICON CButton::SetIcon(HICON hIcon)
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon); }
+_AFXWIN_INLINE HICON CButton::GetIcon() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_ICON, 0L); }
+_AFXWIN_INLINE HBITMAP CButton::SetBitmap(HBITMAP hBitmap)
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); }
+_AFXWIN_INLINE HBITMAP CButton::GetBitmap() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_BITMAP, 0L); }
+_AFXWIN_INLINE HCURSOR CButton::SetCursor(HCURSOR hCursor)
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_CURSOR, (LPARAM)hCursor); }
+_AFXWIN_INLINE HCURSOR CButton::GetCursor()
+ { ASSERT(::IsWindow(m_hWnd)); return (HCURSOR)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_CURSOR, 0L); }
+#endif
+
+_AFXWIN_INLINE CListBox::CListBox()
+ { }
+_AFXWIN_INLINE int CListBox::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0); }
+_AFXWIN_INLINE int CListBox::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0); }
+_AFXWIN_INLINE int CListBox::SetCurSel(int nSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETCURSEL, nSelect, 0); }
+_AFXWIN_INLINE int CListBox::GetHorizontalExtent() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETHORIZONTALEXTENT,
+ 0, 0); }
+_AFXWIN_INLINE void CListBox::SetHorizontalExtent(int cxExtent)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETHORIZONTALEXTENT, cxExtent, 0); }
+_AFXWIN_INLINE int CListBox::GetSelCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSELCOUNT, 0, 0); }
+_AFXWIN_INLINE int CListBox::GetSelItems(int nMaxItems, LPINT rgIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSELITEMS, nMaxItems, (LPARAM)rgIndex); }
+_AFXWIN_INLINE int CListBox::GetTopIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTOPINDEX, 0, 0); }
+_AFXWIN_INLINE int CListBox::SetTopIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETTOPINDEX, nIndex, 0);}
+_AFXWIN_INLINE DWORD CListBox::GetItemData(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetItemData(int nIndex, DWORD dwItemData)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETITEMDATA, nIndex, (LPARAM)dwItemData); }
+_AFXWIN_INLINE void* CListBox::GetItemDataPtr(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (LPVOID)::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetItemDataPtr(int nIndex, void* pData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItemData(nIndex, (DWORD)(LPVOID)pData); }
+_AFXWIN_INLINE int CListBox::GetItemRect(int nIndex, LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETITEMRECT, nIndex, (LPARAM)lpRect); }
+_AFXWIN_INLINE int CListBox::GetSel(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETSEL, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::SetSel(int nIndex, BOOL bSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETSEL, bSelect, nIndex); }
+_AFXWIN_INLINE int CListBox::GetText(int nIndex, LPTSTR lpszBuffer) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTEXT, nIndex, (LPARAM)lpszBuffer); }
+_AFXWIN_INLINE int CListBox::GetTextLen(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETTEXTLEN, nIndex, 0); }
+_AFXWIN_INLINE void CListBox::SetColumnWidth(int cxWidth)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETCOLUMNWIDTH, cxWidth, 0); }
+_AFXWIN_INLINE BOOL CListBox::SetTabStops(int nTabStops, LPINT rgTabStops)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, nTabStops, (LPARAM)rgTabStops); }
+_AFXWIN_INLINE void CListBox::SetTabStops()
+ { ASSERT(::IsWindow(m_hWnd)); VERIFY(::SendMessage(m_hWnd, LB_SETTABSTOPS, 0, 0)); }
+_AFXWIN_INLINE BOOL CListBox::SetTabStops(const int& cxEachStop)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, 1, (LPARAM)(LPINT)&cxEachStop); }
+_AFXWIN_INLINE int CListBox::SetItemHeight(int nIndex, UINT cyItemHeight)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0)); }
+_AFXWIN_INLINE int CListBox::GetItemHeight(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETITEMHEIGHT, nIndex, 0L); }
+_AFXWIN_INLINE int CListBox::FindStringExact(int nIndexStart, LPCTSTR lpszFind) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind); }
+_AFXWIN_INLINE int CListBox::GetCaretIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETCARETINDEX, 0, 0L); }
+_AFXWIN_INLINE int CListBox::SetCaretIndex(int nIndex, BOOL bScroll)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SETCARETINDEX, nIndex, MAKELONG(bScroll, 0)); }
+_AFXWIN_INLINE int CListBox::AddString(LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_ADDSTRING, 0, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::DeleteString(UINT nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_DELETESTRING, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::InsertString(int nIndex, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_INSERTSTRING, nIndex, (LPARAM)lpszItem); }
+_AFXWIN_INLINE void CListBox::ResetContent()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_RESETCONTENT, 0, 0); }
+_AFXWIN_INLINE int CListBox::Dir(UINT attr, LPCTSTR lpszWildCard)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_DIR, attr, (LPARAM)lpszWildCard); }
+_AFXWIN_INLINE int CListBox::FindString(int nStartAfter, LPCTSTR lpszItem) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_FINDSTRING,
+ nStartAfter, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::SelectString(int nStartAfter, LPCTSTR lpszItem)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_SELECTSTRING,
+ nStartAfter, (LPARAM)lpszItem); }
+_AFXWIN_INLINE int CListBox::SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem)
+ { ASSERT(::IsWindow(m_hWnd)); return bSelect ?
+ (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nFirstItem, nLastItem) :
+ (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nLastItem, nFirstItem); }
+_AFXWIN_INLINE void CListBox::SetAnchorIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, LB_SETANCHORINDEX, nIndex, 0); }
+_AFXWIN_INLINE int CListBox::GetAnchorIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_GETANCHORINDEX, 0, 0); }
+_AFXWIN_INLINE LCID CListBox::GetLocale() const
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, LB_GETLOCALE, 0, 0); }
+_AFXWIN_INLINE LCID CListBox::SetLocale(LCID nNewLocale)
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, LB_SETLOCALE, (WPARAM)nNewLocale, 0); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE int CListBox::InitStorage(int nItems, UINT nBytes)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_INITSTORAGE, (WPARAM)nItems, nBytes); }
+#endif
+
+_AFXWIN_INLINE CCheckListBox::CCheckListBox()
+ { m_cyText = 0; m_nStyle = 0; }
+_AFXWIN_INLINE UINT CCheckListBox::GetCheckStyle()
+ { return m_nStyle; }
+
+_AFXWIN_INLINE CComboBox::CComboBox()
+ { }
+_AFXWIN_INLINE int CComboBox::GetCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETCOUNT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::GetCurSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetCurSel(int nSelect)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETCURSEL, nSelect, 0); }
+_AFXWIN_INLINE DWORD CComboBox::GetEditSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, CB_GETEDITSEL, 0, 0); }
+_AFXWIN_INLINE BOOL CComboBox::LimitText(int nMaxChars)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_LIMITTEXT, nMaxChars, 0); }
+_AFXWIN_INLINE BOOL CComboBox::SetEditSel(int nStartChar, int nEndChar)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_SETEDITSEL, 0, MAKELONG(nStartChar, nEndChar)); }
+_AFXWIN_INLINE DWORD CComboBox::GetItemData(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, CB_GETITEMDATA, nIndex, 0); }
+_AFXWIN_INLINE int CComboBox::SetItemData(int nIndex, DWORD dwItemData)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETITEMDATA, nIndex, (LPARAM)dwItemData); }
+_AFXWIN_INLINE void* CComboBox::GetItemDataPtr(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (LPVOID)GetItemData(nIndex); }
+_AFXWIN_INLINE int CComboBox::SetItemDataPtr(int nIndex, void* pData)
+ { ASSERT(::IsWindow(m_hWnd)); return SetItemData(nIndex, (DWORD)(LPVOID)pData); }
+_AFXWIN_INLINE int CComboBox::GetLBText(int nIndex, LPTSTR lpszText) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETLBTEXT, nIndex, (LPARAM)lpszText); }
+_AFXWIN_INLINE int CComboBox::GetLBTextLen(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETLBTEXTLEN, nIndex, 0); }
+_AFXWIN_INLINE void CComboBox::ShowDropDown(BOOL bShowIt)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_SHOWDROPDOWN, bShowIt, 0); }
+_AFXWIN_INLINE int CComboBox::AddString(LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_ADDSTRING, 0, (LPARAM)lpszString); }
+_AFXWIN_INLINE int CComboBox::DeleteString(UINT nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_DELETESTRING, nIndex, 0);}
+_AFXWIN_INLINE int CComboBox::InsertString(int nIndex, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_INSERTSTRING, nIndex, (LPARAM)lpszString); }
+_AFXWIN_INLINE void CComboBox::ResetContent()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_RESETCONTENT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::Dir(UINT attr, LPCTSTR lpszWildCard)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_DIR, attr, (LPARAM)lpszWildCard); }
+_AFXWIN_INLINE int CComboBox::FindString(int nStartAfter, LPCTSTR lpszString) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_FINDSTRING, nStartAfter,
+ (LPARAM)lpszString); }
+_AFXWIN_INLINE int CComboBox::SelectString(int nStartAfter, LPCTSTR lpszString)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SELECTSTRING,
+ nStartAfter, (LPARAM)lpszString); }
+_AFXWIN_INLINE void CComboBox::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXWIN_INLINE void CComboBox::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetItemHeight(int nIndex, UINT cyItemHeight)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0)); }
+_AFXWIN_INLINE int CComboBox::GetItemHeight(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETITEMHEIGHT, nIndex, 0L); }
+_AFXWIN_INLINE int CComboBox::FindStringExact(int nIndexStart, LPCTSTR lpszFind) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind); }
+_AFXWIN_INLINE int CComboBox::SetExtendedUI(BOOL bExtended )
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETEXTENDEDUI, bExtended, 0L); }
+_AFXWIN_INLINE BOOL CComboBox::GetExtendedUI() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_GETEXTENDEDUI, 0, 0L); }
+_AFXWIN_INLINE void CComboBox::GetDroppedControlRect(LPRECT lprect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_GETDROPPEDCONTROLRECT, 0, (DWORD)lprect); }
+_AFXWIN_INLINE BOOL CComboBox::GetDroppedState() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, CB_GETDROPPEDSTATE, 0, 0L); }
+_AFXWIN_INLINE LCID CComboBox::GetLocale() const
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, CB_GETLOCALE, 0, 0); }
+_AFXWIN_INLINE LCID CComboBox::SetLocale(LCID nNewLocale)
+ { ASSERT(::IsWindow(m_hWnd)); return (LCID)::SendMessage(m_hWnd, CB_SETLOCALE, (WPARAM)nNewLocale, 0); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE int CComboBox::GetTopIndex() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETTOPINDEX, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetTopIndex(int nIndex)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETTOPINDEX, nIndex, 0); }
+_AFXWIN_INLINE int CComboBox::InitStorage(int nItems, UINT nBytes)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_INITSTORAGE, (WPARAM)nItems, nBytes); }
+_AFXWIN_INLINE void CComboBox::SetHorizontalExtent(UINT nExtent)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_SETHORIZONTALEXTENT, nExtent, 0); }
+_AFXWIN_INLINE UINT CComboBox::GetHorizontalExtent() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, CB_GETHORIZONTALEXTENT, 0, 0); }
+_AFXWIN_INLINE int CComboBox::SetDroppedWidth(UINT nWidth)
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETDROPPEDWIDTH, nWidth, 0); }
+_AFXWIN_INLINE int CComboBox::GetDroppedWidth() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_GETDROPPEDWIDTH, 0, 0); }
+#endif
+_AFXWIN_INLINE CEdit::CEdit()
+ { }
+_AFXWIN_INLINE BOOL CEdit::CanUndo() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0); }
+_AFXWIN_INLINE int CEdit::GetLineCount() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::GetModify() const
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetModify(BOOL bModified)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0); }
+_AFXWIN_INLINE void CEdit::GetRect(LPRECT lpRect) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::GetSel(int& nStartChar, int& nEndChar) const
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_GETSEL, (WPARAM)&nStartChar,(LPARAM)&nEndChar); }
+_AFXWIN_INLINE DWORD CEdit::GetSel() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, EM_GETSEL, 0, 0); }
+_AFXWIN_INLINE HLOCAL CEdit::GetHandle() const
+ { ASSERT(::IsWindow(m_hWnd)); return (HLOCAL)::SendMessage(m_hWnd, EM_GETHANDLE, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetHandle(HLOCAL hBuffer)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETHANDLE, (WPARAM)hBuffer, 0); }
+_AFXWIN_INLINE int CEdit::GetLine(int nIndex, LPTSTR lpszBuffer) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer); }
+_AFXWIN_INLINE int CEdit::GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const
+ {
+ ASSERT(::IsWindow(m_hWnd));
+ *(LPWORD)lpszBuffer = (WORD)nMaxLength;
+ return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
+ }
+_AFXWIN_INLINE void CEdit::EmptyUndoBuffer()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::FmtLines(BOOL bAddEOL)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_FMTLINES, bAddEOL, 0); }
+_AFXWIN_INLINE void CEdit::LimitText(int nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_LIMITTEXT, nChars, 0); }
+_AFXWIN_INLINE int CEdit::LineFromChar(int nIndex) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINEFROMCHAR, nIndex, 0); }
+_AFXWIN_INLINE int CEdit::LineIndex(int nLine) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINEINDEX, nLine, 0); }
+_AFXWIN_INLINE int CEdit::LineLength(int nLine) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_LINELENGTH, nLine, 0); }
+_AFXWIN_INLINE void CEdit::LineScroll(int nLines, int nChars)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_LINESCROLL, nChars, nLines); }
+_AFXWIN_INLINE void CEdit::ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_REPLACESEL, (WPARAM) bCanUndo, (LPARAM)lpszNewText); }
+_AFXWIN_INLINE void CEdit::SetPasswordChar(TCHAR ch)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETPASSWORDCHAR, ch, 0); }
+_AFXWIN_INLINE void CEdit::SetRect(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::SetRectNP(LPCRECT lpRect)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETRECTNP, 0, (LPARAM)lpRect); }
+_AFXWIN_INLINE void CEdit::SetSel(DWORD dwSelection, BOOL bNoScroll)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETSEL,
+ LOWORD(dwSelection), HIWORD(dwSelection));
+ if (!bNoScroll)
+ ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetSel(int nStartChar, int nEndChar, BOOL bNoScroll)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETSEL, nStartChar, nEndChar);
+ if (!bNoScroll)
+ ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0); }
+#ifndef _MAC
+_AFXWIN_INLINE BOOL CEdit::SetTabStops(int nTabStops, LPINT rgTabStops)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, nTabStops,
+ (LPARAM)rgTabStops); }
+_AFXWIN_INLINE void CEdit::SetTabStops()
+ { ASSERT(::IsWindow(m_hWnd)); VERIFY(::SendMessage(m_hWnd, EM_SETTABSTOPS, 0, 0)); }
+_AFXWIN_INLINE BOOL CEdit::SetTabStops(const int& cxEachStop)
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS,
+ 1, (LPARAM)(LPINT)&cxEachStop); }
+#endif
+_AFXWIN_INLINE BOOL CEdit::Undo()
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0); }
+_AFXWIN_INLINE void CEdit::Clear()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CLEAR, 0, 0); }
+_AFXWIN_INLINE void CEdit::Copy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_COPY, 0, 0); }
+_AFXWIN_INLINE void CEdit::Cut()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_CUT, 0, 0); }
+_AFXWIN_INLINE void CEdit::Paste()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, WM_PASTE, 0, 0); }
+_AFXWIN_INLINE BOOL CEdit::SetReadOnly(BOOL bReadOnly )
+ { ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L); }
+_AFXWIN_INLINE int CEdit::GetFirstVisibleLine() const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L); }
+_AFXWIN_INLINE TCHAR CEdit::GetPasswordChar() const
+ { ASSERT(::IsWindow(m_hWnd)); return (TCHAR)::SendMessage(m_hWnd, EM_GETPASSWORDCHAR, 0, 0L); }
+#if (WINVER >= 0x400)
+_AFXWIN_INLINE void CEdit::SetMargins(UINT nLeft, UINT nRight)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN, MAKELONG(nLeft, nRight)); }
+_AFXWIN_INLINE DWORD CEdit::GetMargins() const
+ { ASSERT(::IsWindow(m_hWnd)); return (DWORD)::SendMessage(m_hWnd, EM_GETMARGINS, 0, 0); }
+_AFXWIN_INLINE void CEdit::SetLimitText(UINT nMax)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, EM_SETLIMITTEXT, nMax, 0); }
+_AFXWIN_INLINE UINT CEdit::GetLimitText() const
+ { ASSERT(::IsWindow(m_hWnd)); return (UINT)::SendMessage(m_hWnd, EM_GETLIMITTEXT, 0, 0); }
+_AFXWIN_INLINE CPoint CEdit::PosFromChar(UINT nChar) const
+ { ASSERT(::IsWindow(m_hWnd)); return CPoint( (DWORD)::SendMessage(m_hWnd, EM_POSFROMCHAR, nChar, 0)); }
+_AFXWIN_INLINE int CEdit::CharFromPos(CPoint pt) const
+ { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y)); }
+#endif
+
+_AFXWIN_INLINE CScrollBar::CScrollBar()
+ { }
+_AFXWIN_INLINE int CScrollBar::GetScrollPos() const
+ { ASSERT(::IsWindow(m_hWnd)); return ::GetScrollPos(m_hWnd, SB_CTL); }
+_AFXWIN_INLINE int CScrollBar::SetScrollPos(int nPos, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); return ::SetScrollPos(m_hWnd, SB_CTL, nPos, bRedraw); }
+_AFXWIN_INLINE void CScrollBar::GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const
+ { ASSERT(::IsWindow(m_hWnd)); ::GetScrollRange(m_hWnd, SB_CTL, lpMinPos, lpMaxPos); }
+_AFXWIN_INLINE void CScrollBar::SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw)
+ { ASSERT(::IsWindow(m_hWnd)); ::SetScrollRange(m_hWnd, SB_CTL, nMinPos, nMaxPos, bRedraw); }
+_AFXWIN_INLINE void CScrollBar::ShowScrollBar(BOOL bShow)
+ { ASSERT(::IsWindow(m_hWnd)); ::ShowScrollBar(m_hWnd, SB_CTL, bShow); }
+_AFXWIN_INLINE BOOL CScrollBar::EnableScrollBar(UINT nArrowFlags)
+ { ASSERT(::IsWindow(m_hWnd)); return ::EnableScrollBar(m_hWnd, SB_CTL, nArrowFlags); }
+_AFXWIN_INLINE BOOL CScrollBar::SetScrollInfo(LPSCROLLINFO lpScrollInfo, BOOL bRedraw)
+ { return CWnd::SetScrollInfo(SB_CTL, lpScrollInfo, bRedraw); }
+_AFXWIN_INLINE BOOL CScrollBar::GetScrollInfo(LPSCROLLINFO lpScrollInfo, UINT nMask)
+ { return CWnd::GetScrollInfo(SB_CTL, lpScrollInfo, nMask); }
+_AFXWIN_INLINE int CScrollBar::GetScrollLimit()
+ { return CWnd::GetScrollLimit(SB_CTL); }
+
+
+// MDI functions
+_AFXWIN_INLINE void CMDIFrameWnd::MDIActivate(CWnd* pWndActivate)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIACTIVATE,
+ (WPARAM)pWndActivate->m_hWnd, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIIconArrange()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIICONARRANGE, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIMaximize(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIMAXIMIZE, (WPARAM)pWnd->m_hWnd, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDINext()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDINEXT, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDIRestore(CWnd* pWnd)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDIRESTORE, (WPARAM)pWnd->m_hWnd, 0); }
+_AFXWIN_INLINE CMenu* CMDIFrameWnd::MDISetMenu(CMenu* pFrameMenu, CMenu* pWindowMenu)
+ { ASSERT(::IsWindow(m_hWnd)); return CMenu::FromHandle((HMENU)::SendMessage(
+ m_hWndMDIClient, WM_MDISETMENU, (WPARAM)pFrameMenu->GetSafeHmenu(),
+ (LPARAM)pWindowMenu->GetSafeHmenu())); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDITile()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDITILE, 0, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDICascade()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDICASCADE, 0, 0); }
+
+_AFXWIN_INLINE void CMDIFrameWnd::MDICascade(int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDICASCADE, nType, 0); }
+_AFXWIN_INLINE void CMDIFrameWnd::MDITile(int nType)
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWndMDIClient, WM_MDITILE, nType, 0); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIDestroy()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIDESTROY, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIActivate()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIACTIVATE, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIMaximize()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIMAXIMIZE, (WPARAM)m_hWnd, 0L); }
+_AFXWIN_INLINE void CMDIChildWnd::MDIRestore()
+ { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(GetParent()->m_hWnd, WM_MDIRESTORE, (WPARAM)m_hWnd, 0L); }
+
+// CView
+_AFXWIN_INLINE CDocument* CView::GetDocument() const
+ { ASSERT(this != NULL); return m_pDocument; }
+_AFXWIN_INLINE CSize CScrollView::GetTotalSize() const
+ { ASSERT(this != NULL); return m_totalLog; }
+
+// CDocument
+_AFXWIN_INLINE const CString& CDocument::GetTitle() const
+ { ASSERT(this != NULL); return m_strTitle; }
+_AFXWIN_INLINE const CString& CDocument::GetPathName() const
+ { ASSERT(this != NULL); return m_strPathName; }
+_AFXWIN_INLINE CDocTemplate* CDocument::GetDocTemplate() const
+ { ASSERT(this != NULL); return m_pDocTemplate; }
+_AFXWIN_INLINE BOOL CDocument::IsModified()
+ { ASSERT(this != NULL); return m_bModified; }
+_AFXWIN_INLINE void CDocument::SetModifiedFlag(BOOL bModified)
+ { ASSERT(this != NULL); m_bModified = bModified; }
+
+// CWinThread
+_AFXWIN_INLINE CWinThread::operator HANDLE() const
+ { return this == NULL ? NULL : m_hThread; }
+_AFXWIN_INLINE BOOL CWinThread::SetThreadPriority(int nPriority)
+ { ASSERT(m_hThread != NULL); return ::SetThreadPriority(m_hThread, nPriority); }
+_AFXWIN_INLINE int CWinThread::GetThreadPriority()
+ { ASSERT(m_hThread != NULL); return ::GetThreadPriority(m_hThread); }
+_AFXWIN_INLINE DWORD CWinThread::ResumeThread()
+ { ASSERT(m_hThread != NULL); return ::ResumeThread(m_hThread); }
+_AFXWIN_INLINE DWORD CWinThread::SuspendThread()
+ { ASSERT(m_hThread != NULL); return ::SuspendThread(m_hThread); }
+_AFXWIN_INLINE BOOL CWinThread::PostThreadMessage(UINT message, WPARAM wParam, LPARAM lParam)
+ { ASSERT(m_hThread != NULL); return ::PostThreadMessage(m_nThreadID, message, wParam, lParam); }
+
+// CWinApp
+#ifdef _MAC
+#if !defined(_USRDLL)
+_AFXWIN_INLINE BOOL CWinApp::Enable3dControls()
+ { return FALSE; }
+#ifndef _AFXDLL
+_AFXWIN_INLINE BOOL CWinApp::Enable3dControlsStatic()
+ { return FALSE; }
+#endif
+#endif
+#endif
+_AFXWIN_INLINE HCURSOR CWinApp::LoadCursor(LPCTSTR lpszResourceName) const
+ { return ::LoadCursor(AfxFindResourceHandle(lpszResourceName,
+ RT_GROUP_CURSOR), lpszResourceName); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadCursor(UINT nIDResource) const
+ { return ::LoadCursor(AfxFindResourceHandle(MAKEINTRESOURCE(nIDResource),
+ RT_GROUP_CURSOR), MAKEINTRESOURCE(nIDResource)); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadStandardCursor(LPCTSTR lpszCursorName) const
+ { return ::LoadCursor(NULL, lpszCursorName); }
+_AFXWIN_INLINE HCURSOR CWinApp::LoadOEMCursor(UINT nIDCursor) const
+ { return ::LoadCursor(NULL, MAKEINTRESOURCE(nIDCursor)); }
+_AFXWIN_INLINE HICON CWinApp::LoadIcon(LPCTSTR lpszResourceName) const
+ { return ::LoadIcon(AfxFindResourceHandle(lpszResourceName,
+ RT_GROUP_ICON), lpszResourceName); }
+_AFXWIN_INLINE HICON CWinApp::LoadIcon(UINT nIDResource) const
+ { return ::LoadIcon(AfxFindResourceHandle(MAKEINTRESOURCE(nIDResource),
+ RT_GROUP_ICON), MAKEINTRESOURCE(nIDResource)); }
+_AFXWIN_INLINE HICON CWinApp::LoadStandardIcon(LPCTSTR lpszIconName) const
+ { return ::LoadIcon(NULL, lpszIconName); }
+_AFXWIN_INLINE HICON CWinApp::LoadOEMIcon(UINT nIDIcon) const
+ { return ::LoadIcon(NULL, MAKEINTRESOURCE(nIDIcon)); }
+#ifdef _MAC
+_AFXWIN_INLINE void CWinApp::EnableShellOpen()
+ { }
+_AFXWIN_INLINE void CWinApp::RegisterShellFileTypes(BOOL)
+ { }
+_AFXWIN_INLINE void CWinApp::RegisterShellFileTypesCompat()
+ { }
+_AFXWIN_INLINE void CDocManager::RegisterShellFileTypes(BOOL)
+ { }
+#endif
+
+_AFXWIN_INLINE CWaitCursor::CWaitCursor()
+ { AfxGetApp()->BeginWaitCursor(); }
+_AFXWIN_INLINE CWaitCursor::~CWaitCursor()
+ { AfxGetApp()->EndWaitCursor(); }
+_AFXWIN_INLINE void CWaitCursor::Restore()
+ { AfxGetApp()->RestoreWaitCursor(); }
+
+/////////////////////////////////////////////////////////////////////////////
+// Obsolete and non-portable
+
+#ifndef _MAC
+_AFXWIN_INLINE void CWnd::CloseWindow()
+ { ASSERT(::IsWindow(m_hWnd)); ::CloseWindow(m_hWnd); }
+_AFXWIN_INLINE BOOL CWnd::OpenIcon()
+ { ASSERT(::IsWindow(m_hWnd)); return ::OpenIcon(m_hWnd); }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //_AFXWIN_INLINE
diff --git a/public/sdk/inc/mfc42/daogetrw.h b/public/sdk/inc/mfc42/daogetrw.h
new file mode 100644
index 000000000..50f0ed369
--- /dev/null
+++ b/public/sdk/inc/mfc42/daogetrw.h
@@ -0,0 +1,143 @@
+/************************************************************************
+** D A O G E T R W . H *
+** *
+** GetRows interface *
+** *
+** Warning: The interface defined in this file is for internal use by *
+** the Microsoft Foundation Classes and the dbdao C++ classes. *
+** Future releases of DAO may not be completely compatible with this *
+** implementation. However, if you write to the MFC or dbdao *
+** classes that use this interface, those classes will continue to *
+** be compatible even if this underlying interface changes. *
+** *
+*************************************************************************
+** Copyright (C) 1995 by Microsoft Corporation *
+** All Rights Reserved *
+************************************************************************/
+
+#if !defined (_DAOGETRW_H_)
+#define _DAOGETRW_H_
+
+
+/*
+ Enumerations
+*/
+typedef enum
+ {
+ DAOCOLKIND_IND = 0,
+ DAOCOLKIND_STR,
+ DAOCOLKIND_WSTR
+ } DAOCOLKIND;
+
+typedef enum
+ {
+ DAO_I2 = 0,
+ DAO_I4,
+ DAO_R4,
+ DAO_R8,
+ DAO_CURRENCY,
+ DAO_DATE,
+ DAO_BOOL,
+ DAO_BSTR,
+ DAO_LPSTR,
+ DAO_LPWSTR,
+ DAO_BLOB,
+ DAO_BYTES,
+ DAO_CHAR,
+ DAO_WCHAR,
+ DAO_ANYVARIANT,
+ DAO_BOOKMARK,
+ DAO_BYTE,
+ DAO_GUID,
+ DAO_DATATYPEMAX
+ } DAODATATYPE;
+
+/*
+ Macros
+*/
+#define DAO_NOINDICATOR 0xffffffff
+#define DAO_NULL 0xffffffff
+#define DAO_CANTCOERCE 0xfffffffc
+#define DAO_NOMAXLENGTH 0x00000000
+
+#define DAOROWFETCH_CALLEEALLOCATES 0x00000001
+#define DAOROWFETCH_DONTADVANCE 0x00000002
+#define DAOROWFETCH_FORCEREFRESH 0x00000004
+#define DAOROWFETCH_BINDABSOLUTE 0x00000008
+
+#define DAOBINDING_DIRECT 0x00000001
+#define DAOBINDING_VARIANT 0x00000002
+#define DAOBINDING_CALLBACK 0x00000004
+
+/*
+ Structures
+*/
+typedef struct
+ {
+ DWORD dwKind;
+ union
+ {
+ LONG ind;
+ LPCSTR lpstr;
+ LPCWSTR lpwstr;
+ };
+ } DAOCOLUMNID;
+typedef DAOCOLUMNID *LPDAOCOLUMNID;
+
+// Callback for binding
+EXTERN_C typedef HRESULT (STDAPICALLTYPE *LPDAOBINDFUNC)(ULONG cb, DWORD dwUser, LPVOID *ppData);
+#define DAOBINDINGFUNC(f) STDAPI f (ULONG cb, DWORD dwUser, LPVOID *ppData)
+
+typedef struct
+ {
+ DAOCOLUMNID columnID;
+ ULONG cbDataOffset;
+ ULONG cbMaxLen;
+ ULONG cbInfoOffset;
+ DWORD dwBinding;
+ DWORD dwDataType;
+ DWORD dwUser;
+ } DAOCOLUMNBINDING;
+typedef DAOCOLUMNBINDING *LPDAOCOLUMNBINDING;
+
+typedef struct
+ {
+ ULONG cRowsRequested;
+ DWORD dwFlags;
+ LPVOID pData;
+ LPVOID pVarData;
+ ULONG cbVarData;
+ ULONG cRowsReturned;
+ } DAOFETCHROWS;
+typedef DAOFETCHROWS *LPDAOFETCHROWS;
+
+/*
+ New Errors
+
+ **NOTE: OLE standard ids to be determined.
+*/
+
+#define GETROWSUCCESS(x) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, x)
+#define GETROWERR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, x)
+
+#define S_BUFFERTOOSMALL GETROWSUCCESS(0x1000)
+#define S_ENDOFCURSOR GETROWSUCCESS(0x1001)
+#define S_SILENTCANCEL GETROWSUCCESS(0x1002)
+#define S_RECORDDELETED GETROWSUCCESS(0x1003)
+
+#define E_ROWTOOSHORT GETROWERR(0x1000)
+#define E_BADBINDINFO GETROWERR(0x1001)
+#define E_COLUMNUNAVAILABLE GETROWERR(0x1002)
+
+
+/*
+ Interfaces
+*/
+#undef INTERFACE
+#define INTERFACE ICDAORecordset
+DECLARE_INTERFACE_(ICDAORecordset, IDispatch)
+ {
+ STDMETHOD(GetRows) (THIS_ LONG cRowsToSkip, LONG cCol, LPDAOCOLUMNBINDING prgBndCol, ULONG cbRowLen, LPDAOFETCHROWS pFetchRows) PURE;
+ };
+
+#endif // _DAOGETRW_H_
diff --git a/public/sdk/inc/mfc42/datapath.h b/public/sdk/inc/mfc42/datapath.h
new file mode 100644
index 000000000..40c60737c
--- /dev/null
+++ b/public/sdk/inc/mfc42/datapath.h
@@ -0,0 +1,601 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.15 */
+/* at Thu Jun 13 20:25:13 1996
+ */
+/* Compiler settings for datapath.idl:
+ Oi, W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __datapath_h__
+#define __datapath_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IObjectWithSite_FWD_DEFINED__
+#define __IObjectWithSite_FWD_DEFINED__
+typedef interface IObjectWithSite IObjectWithSite;
+#endif /* __IObjectWithSite_FWD_DEFINED__ */
+
+
+#ifndef __IDataPathBrowser_FWD_DEFINED__
+#define __IDataPathBrowser_FWD_DEFINED__
+typedef interface IDataPathBrowser IDataPathBrowser;
+#endif /* __IDataPathBrowser_FWD_DEFINED__ */
+
+
+#ifndef __IProvideClassInfo3_FWD_DEFINED__
+#define __IProvideClassInfo3_FWD_DEFINED__
+typedef interface IProvideClassInfo3 IProvideClassInfo3;
+#endif /* __IProvideClassInfo3_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+#include "oleidl.h"
+#include "oaidl.h"
+#include "olectl.h"
+#include "urlmon.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright 1995 - 1996 Microsoft Corporation. All Rights Reserved.
+//
+// File: datapath.h
+
+#pragma comment(lib,"uuid3.lib")
+//
+//--------------------------------------------------------------------------
+
+
+#include "idispids.h"
+typedef BSTR OLE_DATAPATH;
+#define SID_SDataPathBrowser IID_IDataPathBrowser
+
+////////////////////////////////////////////////////////////////////////////
+// State values for the DISPID_READYSTATE property
+
+enum __MIDL___MIDL__intf_0000_0001
+ { READYSTATE_UNINITIALIZED = 1,
+ READYSTATE_LOADING = 0,
+ READYSTATE_LOADED = 2,
+ READYSTATE_INTERACTIVE = 3,
+ READYSTATE_COMPLETE = 4
+ };
+
+////////////////////////////////////////////////////////////////////////////
+// DataPath GUIDs (link to uuid3.lib)
+EXTERN_C const GUID OLE_DATAPATH_BMP;
+EXTERN_C const GUID OLE_DATAPATH_DIB;
+EXTERN_C const GUID OLE_DATAPATH_WMF;
+EXTERN_C const GUID OLE_DATAPATH_ENHMF;
+EXTERN_C const GUID OLE_DATAPATH_GIF;
+EXTERN_C const GUID OLE_DATAPATH_JPEG;
+EXTERN_C const GUID OLE_DATAPATH_TIFF;
+EXTERN_C const GUID OLE_DATAPATH_XBM;
+EXTERN_C const GUID OLE_DATAPATH_PCX;
+EXTERN_C const GUID OLE_DATAPATH_PICT;
+EXTERN_C const GUID OLE_DATAPATH_CGM;
+EXTERN_C const GUID OLE_DATAPATH_EPS;
+EXTERN_C const GUID OLE_DATAPATH_COMMONIMAGE;
+EXTERN_C const GUID OLE_DATAPATH_ALLIMAGE;
+EXTERN_C const GUID OLE_DATAPATH_AVI;
+EXTERN_C const GUID OLE_DATAPATH_MPEG;
+EXTERN_C const GUID OLE_DATAPATH_QUICKTIME;
+EXTERN_C const GUID OLE_DATAPATH_BASICAUDIO;
+EXTERN_C const GUID OLE_DATAPATH_MIDI;
+EXTERN_C const GUID OLE_DATAPATH_WAV;
+EXTERN_C const GUID OLE_DATAPATH_RIFF;
+EXTERN_C const GUID OLE_DATAPATH_SOUND;
+EXTERN_C const GUID OLE_DATAPATH_VIDEO;
+EXTERN_C const GUID OLE_DATAPATH_ALLMM;
+EXTERN_C const GUID OLE_DATAPATH_ANSITEXT;
+EXTERN_C const GUID OLE_DATAPATH_UNICODE;
+EXTERN_C const GUID OLE_DATAPATH_RTF;
+EXTERN_C const GUID OLE_DATAPATH_HTML;
+EXTERN_C const GUID OLE_DATAPATH_POSTSCRIPT;
+EXTERN_C const GUID OLE_DATAPATH_ALLTEXT;
+EXTERN_C const GUID OLE_DATAPATH_DIF;
+EXTERN_C const GUID OLE_DATAPATH_SYLK;
+EXTERN_C const GUID OLE_DATAPATH_BIFF;
+EXTERN_C const GUID OLE_DATAPATH_PALETTE;
+EXTERN_C const GUID OLE_DATAPATH_PENDATA;
+////////////////////////////////////////////////////////////////////////////
+
+EXTERN_C const GUID FLAGID_Internet;
+EXTERN_C const GUID GUID_PathProperty;
+EXTERN_C const GUID GUID_HasPathProperties;
+
+////////////////////////////////////////////////////////////////////////////
+// ARRAYID GUIDs (link to uuid3.lib)
+EXTERN_C const GUID ARRAYID_PathProperties;
+
+////////////////////////////////////////////////////////////////////////////
+// Interface Definitions
+#ifndef _LPOBJECTWITHSITE_DEFINED
+#define _LPOBJECTWITHSITE_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IObjectWithSite_INTERFACE_DEFINED__
+#define __IObjectWithSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IObjectWithSite
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][object][uuid] */
+
+
+typedef /* [unique] */ IObjectWithSite __RPC_FAR *LPOBJECTWITHSITE;
+
+
+EXTERN_C const IID IID_IObjectWithSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IObjectWithSite : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetSite(
+ /* [in] */ IUnknown __RPC_FAR *pUnkSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSite(
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvSite) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IObjectWithSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IObjectWithSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IObjectWithSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSite )(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSite )(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvSite);
+
+ END_INTERFACE
+ } IObjectWithSiteVtbl;
+
+ interface IObjectWithSite
+ {
+ CONST_VTBL struct IObjectWithSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IObjectWithSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IObjectWithSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IObjectWithSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IObjectWithSite_SetSite(This,pUnkSite) \
+ (This)->lpVtbl -> SetSite(This,pUnkSite)
+
+#define IObjectWithSite_GetSite(This,riid,ppvSite) \
+ (This)->lpVtbl -> GetSite(This,riid,ppvSite)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IObjectWithSite_SetSite_Proxy(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkSite);
+
+
+void __RPC_STUB IObjectWithSite_SetSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IObjectWithSite_GetSite_Proxy(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvSite);
+
+
+void __RPC_STUB IObjectWithSite_GetSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IObjectWithSite_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0119
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPDATAPATHBROWSER_DEFINED
+#define _LPDATAPATHBROWSER_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0119_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0119_v0_0_s_ifspec;
+
+#ifndef __IDataPathBrowser_INTERFACE_DEFINED__
+#define __IDataPathBrowser_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDataPathBrowser
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][object][local][uuid] */
+
+
+
+EXTERN_C const IID IID_IDataPathBrowser;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDataPathBrowser : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE BrowseType(
+ /* [in] */ REFGUID rguidPathType,
+ /* [in] */ LPOLESTR pszDefaultPath,
+ /* [in] */ ULONG cchPath,
+ /* [size_is][out] */ LPOLESTR pszPath,
+ /* [in] */ HWND hWnd) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDataPathBrowserVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDataPathBrowser __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDataPathBrowser __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDataPathBrowser __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BrowseType )(
+ IDataPathBrowser __RPC_FAR * This,
+ /* [in] */ REFGUID rguidPathType,
+ /* [in] */ LPOLESTR pszDefaultPath,
+ /* [in] */ ULONG cchPath,
+ /* [size_is][out] */ LPOLESTR pszPath,
+ /* [in] */ HWND hWnd);
+
+ END_INTERFACE
+ } IDataPathBrowserVtbl;
+
+ interface IDataPathBrowser
+ {
+ CONST_VTBL struct IDataPathBrowserVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDataPathBrowser_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDataPathBrowser_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDataPathBrowser_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDataPathBrowser_BrowseType(This,rguidPathType,pszDefaultPath,cchPath,pszPath,hWnd) \
+ (This)->lpVtbl -> BrowseType(This,rguidPathType,pszDefaultPath,cchPath,pszPath,hWnd)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDataPathBrowser_BrowseType_Proxy(
+ IDataPathBrowser __RPC_FAR * This,
+ /* [in] */ REFGUID rguidPathType,
+ /* [in] */ LPOLESTR pszDefaultPath,
+ /* [in] */ ULONG cchPath,
+ /* [size_is][out] */ LPOLESTR pszPath,
+ /* [in] */ HWND hWnd);
+
+
+void __RPC_STUB IDataPathBrowser_BrowseType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDataPathBrowser_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0120
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPPROVIDECLASSINFO3_DEFINED
+#define _LPPROVIDECLASSINFO3_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0120_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0120_v0_0_s_ifspec;
+
+#ifndef __IProvideClassInfo3_INTERFACE_DEFINED__
+#define __IProvideClassInfo3_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IProvideClassInfo3
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IProvideClassInfo3 __RPC_FAR *LPPROVIDECLASSINFO3;
+
+
+enum __MIDL_IProvideClassInfo3_0001
+ { INTERNETFLAG_USESDATAPATHS = 0x1
+ };
+
+EXTERN_C const IID IID_IProvideClassInfo3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IProvideClassInfo3 : public IProvideClassInfo2
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetGUIDDwordArrays(
+ /* [in] */ REFGUID rguidArray,
+ /* [out][in] */ CAUUID __RPC_FAR *pcaUUID,
+ /* [out][in] */ CADWORD __RPC_FAR *pcadw) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetClassInfoLocale(
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppITypeInfo,
+ /* [in] */ LCID lcid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFlags(
+ /* [in] */ REFGUID guidGroup,
+ /* [out] */ DWORD __RPC_FAR *pdwFlags) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IProvideClassInfo3Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IProvideClassInfo3 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IProvideClassInfo3 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassInfo )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTI);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetGUID )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ DWORD dwGuidKind,
+ /* [out] */ GUID __RPC_FAR *pGUID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetGUIDDwordArrays )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ REFGUID rguidArray,
+ /* [out][in] */ CAUUID __RPC_FAR *pcaUUID,
+ /* [out][in] */ CADWORD __RPC_FAR *pcadw);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassInfoLocale )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppITypeInfo,
+ /* [in] */ LCID lcid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFlags )(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ REFGUID guidGroup,
+ /* [out] */ DWORD __RPC_FAR *pdwFlags);
+
+ END_INTERFACE
+ } IProvideClassInfo3Vtbl;
+
+ interface IProvideClassInfo3
+ {
+ CONST_VTBL struct IProvideClassInfo3Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IProvideClassInfo3_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IProvideClassInfo3_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IProvideClassInfo3_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IProvideClassInfo3_GetClassInfo(This,ppTI) \
+ (This)->lpVtbl -> GetClassInfo(This,ppTI)
+
+
+#define IProvideClassInfo3_GetGUID(This,dwGuidKind,pGUID) \
+ (This)->lpVtbl -> GetGUID(This,dwGuidKind,pGUID)
+
+
+#define IProvideClassInfo3_GetGUIDDwordArrays(This,rguidArray,pcaUUID,pcadw) \
+ (This)->lpVtbl -> GetGUIDDwordArrays(This,rguidArray,pcaUUID,pcadw)
+
+#define IProvideClassInfo3_GetClassInfoLocale(This,ppITypeInfo,lcid) \
+ (This)->lpVtbl -> GetClassInfoLocale(This,ppITypeInfo,lcid)
+
+#define IProvideClassInfo3_GetFlags(This,guidGroup,pdwFlags) \
+ (This)->lpVtbl -> GetFlags(This,guidGroup,pdwFlags)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IProvideClassInfo3_GetGUIDDwordArrays_Proxy(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ REFGUID rguidArray,
+ /* [out][in] */ CAUUID __RPC_FAR *pcaUUID,
+ /* [out][in] */ CADWORD __RPC_FAR *pcadw);
+
+
+void __RPC_STUB IProvideClassInfo3_GetGUIDDwordArrays_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IProvideClassInfo3_GetClassInfoLocale_Proxy(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppITypeInfo,
+ /* [in] */ LCID lcid);
+
+
+void __RPC_STUB IProvideClassInfo3_GetClassInfoLocale_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IProvideClassInfo3_GetFlags_Proxy(
+ IProvideClassInfo3 __RPC_FAR * This,
+ /* [in] */ REFGUID guidGroup,
+ /* [out] */ DWORD __RPC_FAR *pdwFlags);
+
+
+void __RPC_STUB IProvideClassInfo3_GetFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IProvideClassInfo3_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0121
+ * at Thu Jun 13 20:25:13 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0121_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0121_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/mfc42/dbdaoerr.h b/public/sdk/inc/mfc42/dbdaoerr.h
new file mode 100644
index 000000000..d5f4e738d
--- /dev/null
+++ b/public/sdk/inc/mfc42/dbdaoerr.h
@@ -0,0 +1,448 @@
+
+/************************************************************************
+** D B D A O E R R . H * *
+** *
+** History *
+** ------- *
+** 5-17-95 Added to DAO SDK *
+** 7-17-95 Added DBDAOERR macro, removed internal only codes *
+** *
+** The following #defines map the integer to a descriptive name
+** i.e. 3270 -> E_DAO_VtoPropNotFound *
+** *
+** *
+*************************************************************************
+** Copyright (C) 1995 by Microsoft Corporation *
+** All Rights Reserved *
+************************************************************************/
+
+#ifndef _DBDAOERR_H_
+#define _DBDAOERR_H_
+
+#define DBDAOERR(x) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, x)
+
+#define E_DAO_InternalError DBDAOERR(3000) //Reserved error (|); there is no message for this error.
+#define E_DAO_InvalidParameter DBDAOERR(3001) //Invalid argument.
+#define E_DAO_CantBegin DBDAOERR(3002) //Couldn't start session.
+#define E_DAO_TransTooDeep DBDAOERR(3003) //Couldn't start transaction; too many transactions already nested.
+#define E_DAO_DatabaseNotFound DBDAOERR(3004) //Couldn't find database '|'.
+#define E_DAO_DatabaseInvalidName DBDAOERR(3005) //'|' isn't a valid database name.
+#define E_DAO_DatabaseLocked DBDAOERR(3006) //Database '|' is exclusively locked.
+#define E_DAO_DatabaseOpenError DBDAOERR(3007) //Can't open library database '|'.
+#define E_DAO_TableLocked DBDAOERR(3008) //Table '|' is exclusively locked.
+#define E_DAO_TableInUse DBDAOERR(3009) //Couldn't lock table '|'; currently in use.
+#define E_DAO_TableDuplicate DBDAOERR(3010) //Table '|' already exists.
+#define E_DAO_ObjectNotFound DBDAOERR(3011) //Couldn't find object '|'.
+#define E_DAO_ObjectDuplicate DBDAOERR(3012) //Object '|' already exists.
+#define E_DAO_CannotRename DBDAOERR(3013) //Couldn't rename installable ISAM file.
+#define E_DAO_TooManyOpenTables DBDAOERR(3014) //Can't open any more tables.
+#define E_DAO_IndexNotFound DBDAOERR(3015) //'|' isn't an index in this table.
+#define E_DAO_ColumnDoesNotFit DBDAOERR(3016) //Field won't fit in record.
+#define E_DAO_ColumnTooBig DBDAOERR(3017) //The size of a field is too long.
+#define E_DAO_ColumnNotFound DBDAOERR(3018) //Couldn't find field '|'.
+#define E_DAO_NoCurrentIndex DBDAOERR(3019) //Operation invalid without a current index.
+#define E_DAO_RecordNoCopy DBDAOERR(3020) //Update or CancelUpdate without AddNew or Edit.
+#define E_DAO_NoCurrentRecord DBDAOERR(3021) //No current record.
+#define E_DAO_KeyDuplicate DBDAOERR(3022) //Duplicate value in index, primary key, or relationship. Changes were unsuccessful.
+#define E_DAO_AlreadyPrepared DBDAOERR(3023) //AddNew or Edit already used.
+#define E_DAO_FileNotFound DBDAOERR(3024) //Couldn't find file '|'.
+#define E_DAO_TooManyOpenFiles DBDAOERR(3025) //Can't open any more files.
+#define E_DAO_DiskFull DBDAOERR(3026) //Not enough space on disk.
+#define E_DAO_PermissionDenied DBDAOERR(3027) //Can't update. Database or object is read-only.
+#define E_DAO_CannotOpenSystemDb DBDAOERR(3028) //Can't start your application. The system database is missing or opened exclusively by another user.
+#define E_DAO_InvalidLogon DBDAOERR(3029) //Not a valid account name or password.
+#define E_DAO_InvalidAccountName DBDAOERR(3030) //'|' isn't a valid account name.
+#define E_DAO_InvalidPassword DBDAOERR(3031) //Not a valid password.
+#define E_DAO_InvalidOperation DBDAOERR(3032) //Can't perform this operation.
+#define E_DAO_AccessDenied DBDAOERR(3033) //No permission for '|'.
+#define E_DAO_NotInTransaction DBDAOERR(3034) //Commit or Rollback without BeginTrans.
+#define E_DAO_OutOfMemory DBDAOERR(3035) //*
+#define E_DAO_CantAllocatePage DBDAOERR(3036) //Database has reached maximum size.
+#define E_DAO_NoMoreCursors DBDAOERR(3037) //Can't open any more tables or queries.
+#define E_DAO_OutOfBuffers DBDAOERR(3038) //*
+#define E_DAO_TooManyIndexes DBDAOERR(3039) //Couldn't create index; too many indexes already defined.
+#define E_DAO_ReadVerifyFailure DBDAOERR(3040) //Disk I/O error during read.
+#define E_DAO_FilesysVersion DBDAOERR(3041) //Can't open a database created with a previous version of your application.
+#define E_DAO_NoMoreFiles DBDAOERR(3042) //Out of MS-DOS file handles.
+#define E_DAO_DiskError DBDAOERR(3043) //Disk or network error.
+#define E_DAO_InvalidPath DBDAOERR(3044) //'|' isn't a valid path.
+#define E_DAO_FileShareViolation DBDAOERR(3045) //Couldn't use '|'; file already in use.
+#define E_DAO_FileLockViolation DBDAOERR(3046) //Couldn't save; currently locked by another user.
+#define E_DAO_RecordTooBig DBDAOERR(3047) //Record is too large.
+#define E_DAO_TooManyOpenDatabases DBDAOERR(3048) //Can't open any more databases.
+#define E_DAO_InvalidDatabase DBDAOERR(3049) //Can't open database '|'. It may not be a database that your application recognizes, or the file may be corrupt.
+#define E_DAO_FileLockingUnavailable DBDAOERR(3050) //Couldn't lock file.
+#define E_DAO_FileAccessDenied DBDAOERR(3051) //Couldn't open file '|'.
+#define E_DAO_SharingBufferExceeded DBDAOERR(3052) //MS-DOS file sharing lock count exceeded. You need to increase the number of locks installed with SHARE.EXE.
+#define E_DAO_TaskLimitExceeded DBDAOERR(3053) //Too many client tasks.
+#define E_DAO_TooManyLongColumns DBDAOERR(3054) //Too many Memo or OLE object fields.
+#define E_DAO_InvalidFilename DBDAOERR(3055) //Not a valid file name.
+#define E_DAO_AbortSalvage DBDAOERR(3056) //Couldn't repair this database.
+#define E_DAO_LinkNotSupported DBDAOERR(3057) //Operation not supported on attached, or linked, tables.
+#define E_DAO_NullKeyDisallowed DBDAOERR(3058) //Index or primary key can't contain a null value.
+#define E_DAO_OperationCanceled DBDAOERR(3059) //Operation canceled by user.
+#define E_DAO_QueryParmTypeMismatch DBDAOERR(3060) //Wrong data type for parameter '|'.
+#define E_DAO_QueryMissingParmsM DBDAOERR(3061) //Too few parameters. Expected |.
+#define E_DAO_QueryDuplicateAliasM DBDAOERR(3062) //Duplicate output alias '|'.
+#define E_DAO_QueryDuplicateOutputM DBDAOERR(3063) //Duplicate output destination '|'.
+#define E_DAO_QueryIsBulkOp DBDAOERR(3064) //Can't open action query '|'.
+#define E_DAO_QueryIsNotBulkOp DBDAOERR(3065) //Can't execute a non-action query.
+#define E_DAO_QueryNoOutputsM DBDAOERR(3066) //Query or table must contain at least one output field.
+#define E_DAO_QueryNoInputTablesM DBDAOERR(3067) //Query input must contain at least one table or query.
+#define E_DAO_QueryInvalidAlias DBDAOERR(3068) //Not a valid alias name.
+#define E_DAO_QueryInvalidBulkInputM DBDAOERR(3069) //The action query '|' cannot be used as a row source.
+#define E_DAO_QueryUnboundRef DBDAOERR(3070) //Can't bind name '|'.
+#define E_DAO_QueryExprEvaluation DBDAOERR(3071) //Can't evaluate expression.
+#define E_DAO_EvalEBESErr DBDAOERR(3072) //|
+#define E_DAO_QueryNotUpdatable DBDAOERR(3073) //Operation must use an updatable query.
+#define E_DAO_TableRepeatInFromList DBDAOERR(3074) //Can't repeat table name '|' in FROM clause.
+#define E_DAO_QueryExprSyntax DBDAOERR(3075) //|1 in query expression '|2'.
+#define E_DAO_QbeExprSyntax DBDAOERR(3076) //| in criteria expression.
+#define E_DAO_FindExprSyntax DBDAOERR(3077) //| in expression.
+#define E_DAO_InputTableNotFound DBDAOERR(3078) //Couldn't find input table or query '|'.
+#define E_DAO_QueryAmbigRefM DBDAOERR(3079) //Ambiguous field reference '|'.
+#define E_DAO_JoinTableNotInput DBDAOERR(3080) //Joined table '|' not listed in FROM clause.
+#define E_DAO_UnaliasedSelfJoin DBDAOERR(3081) //Can't join more than one table with the same name (|).
+#define E_DAO_ColumnNotInJoinTable DBDAOERR(3082) //JOIN operation '|' refers to a non-joined table.
+#define E_DAO_QueryIsMGB DBDAOERR(3083) //Can't use internal report query.
+#define E_DAO_QueryInsIntoBulkMGB DBDAOERR(3084) //Can't insert data with action query.
+#define E_DAO_ExprUnknownFunctionM DBDAOERR(3085) //Undefined function '|' in expression.
+#define E_DAO_QueryCannotDelete DBDAOERR(3086) //Couldn't delete from specified tables.
+#define E_DAO_QueryTooManyGroupExprs DBDAOERR(3087) //Too many expressions in GROUP BY clause.
+#define E_DAO_QueryTooManyOrderExprs DBDAOERR(3088) //Too many expressions in ORDER BY clause.
+#define E_DAO_QueryTooManyDistExprs DBDAOERR(3089) //Too many expressions in DISTINCT output.
+#define E_DAO_Column2ndSysMaint DBDAOERR(3090) //Resultant table not allowed to have more than one Counter or Autonumber field.
+#define E_DAO_HavingWOGrouping DBDAOERR(3091) //HAVING clause (|) without grouping or aggregation.
+#define E_DAO_HavingOnTransform DBDAOERR(3092) //Can't use HAVING clause in TRANSFORM statement.
+#define E_DAO_OrderVsDistinct DBDAOERR(3093) //ORDER BY clause (|) conflicts with DISTINCT.
+#define E_DAO_OrderVsGroup DBDAOERR(3094) //ORDER BY clause (|) conflicts with GROUP BY clause.
+#define E_DAO_AggregateInArgument DBDAOERR(3095) //Can't have aggregate function in expression (|).
+#define E_DAO_AggregateInWhere DBDAOERR(3096) //Can't have aggregate function in WHERE clause (|).
+#define E_DAO_AggregateInOrderBy DBDAOERR(3097) //Can't have aggregate function in ORDER BY clause (|).
+#define E_DAO_AggregateInGroupBy DBDAOERR(3098) //Can't have aggregate function in GROUP BY clause (|).
+#define E_DAO_AggregateInJoin DBDAOERR(3099) //Can't have aggregate function in JOIN operation (|).
+#define E_DAO_NullInJoinKey DBDAOERR(3100) //Can't set field '|' in join key to Null.
+#define E_DAO_ValueBreaksJoin DBDAOERR(3101) //There is no record in table '|2' with key matching field(s) '|1'.
+#define E_DAO_QueryTreeCycle DBDAOERR(3102) //Circular reference caused by '|'.
+#define E_DAO_OutputAliasCycle DBDAOERR(3103) //Circular reference caused by alias '|' in query definition's SELECT list.
+#define E_DAO_QryDuplicatedFixedSetM DBDAOERR(3104) //Can't specify Fixed Column Heading '|' in a crosstab query more than once.
+#define E_DAO_NoSelectIntoColumnName DBDAOERR(3105) //Missing destination field name in SELECT INTO statement (|).
+#define E_DAO_NoUpdateColumnName DBDAOERR(3106) //Missing destination field name in UPDATE statement (|).
+#define E_DAO_QueryNoInsertPerm DBDAOERR(3107) //Record(s) can't be added; no Insert Data permission on '|'.
+#define E_DAO_QueryNoReplacePerm DBDAOERR(3108) //Record(s) can't be edited; no Update Data permission on '|'.
+#define E_DAO_QueryNoDeletePerm DBDAOERR(3109) //Record(s) can't be deleted; no Delete Data permission on '|'.
+#define E_DAO_QueryNoReadDefPerm DBDAOERR(3110) //Couldn't read definitions; no Read Design permission for table or query '|'.
+#define E_DAO_QueryNoTblCrtPerm DBDAOERR(3111) //Couldn't create; no Create permission for table or query '|'.
+#define E_DAO_QueryNoReadPerm DBDAOERR(3112) //Record(s) can't be read; no Read Data permission on '|'.
+#define E_DAO_QueryColNotUpd DBDAOERR(3113) //Can't update '|'; field not updatable.
+#define E_DAO_QueryLVInDistinct DBDAOERR(3114) //Can't include Memo or OLE object when you select unique values (|).
+#define E_DAO_QueryLVInAggregate DBDAOERR(3115) //Can't have Memo or OLE object in aggregate argument (|).
+#define E_DAO_QueryLVInHaving DBDAOERR(3116) //Can't have Memo or OLE object in criteria (|) for aggregate function.
+#define E_DAO_QueryLVInOrderBy DBDAOERR(3117) //Can't sort on Memo or OLE object (|).
+#define E_DAO_QueryLVInJoin DBDAOERR(3118) //Can't join on Memo or OLE object (|).
+#define E_DAO_QueryLVInGroupBy DBDAOERR(3119) //Can't group on Memo or OLE object (|).
+#define E_DAO_DotStarWithGrouping DBDAOERR(3120) //Can't group on fields selected with '*' (|).
+#define E_DAO_StarWithGrouping DBDAOERR(3121) //Can't group on fields selected with '*'.
+#define E_DAO_IllegalDetailRef DBDAOERR(3122) //'|' not part of aggregate function or grouping.
+#define E_DAO_StarNotAtLevel0 DBDAOERR(3123) //Can't use '*' in crosstab query.
+#define E_DAO_QueryInvalidMGBInput DBDAOERR(3124) //Can't input from internal report query (|).
+#define E_DAO_InvalidName DBDAOERR(3125) //'|' isn't a valid name.
+#define E_DAO_QueryBadBracketing DBDAOERR(3126) //Invalid bracketing of name '|'.
+#define E_DAO_InsertIntoUnknownCol DBDAOERR(3127) //INSERT INTO statement contains unknown field name '|'.
+#define E_DAO_QueryNoDeleteTables DBDAOERR(3128) //Must specify tables to delete from.
+#define E_DAO_SQLSyntax DBDAOERR(3129) //Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.
+#define E_DAO_SQLDeleteSyntax DBDAOERR(3130) //Syntax error in DELETE statement.
+#define E_DAO_SQLFromSyntax DBDAOERR(3131) //Syntax error in FROM clause.
+#define E_DAO_SQLGroupBySyntax DBDAOERR(3132) //Syntax error in GROUP BY clause.
+#define E_DAO_SQLHavingSyntax DBDAOERR(3133) //Syntax error in HAVING clause.
+#define E_DAO_SQLInsertSyntax DBDAOERR(3134) //Syntax error in INSERT statement.
+#define E_DAO_SQLJoinSyntax DBDAOERR(3135) //Syntax error in JOIN operation.
+#define E_DAO_SQLLevelSyntax DBDAOERR(3136) //Syntax error in LEVEL clause.
+#define E_DAO_SQLMissingSemicolon DBDAOERR(3137) //Missing semicolon (;) at end of SQL statement.
+#define E_DAO_SQLOrderBySyntax DBDAOERR(3138) //Syntax error in ORDER BY clause.
+#define E_DAO_SQLParameterSyntax DBDAOERR(3139) //Syntax error in PARAMETER clause.
+#define E_DAO_SQLProcedureSyntax DBDAOERR(3140) //Syntax error in PROCEDURE clause.
+#define E_DAO_SQLSelectSyntax DBDAOERR(3141) //Syntax error in SELECT statement.
+#define E_DAO_SQLTooManyTokens DBDAOERR(3142) //Characters found after end of SQL statement.
+#define E_DAO_SQLTransformSyntax DBDAOERR(3143) //Syntax error in TRANSFORM statement.
+#define E_DAO_SQLUpdateSyntax DBDAOERR(3144) //Syntax error in UPDATE statement.
+#define E_DAO_SQLWhereSyntax DBDAOERR(3145) //Syntax error in WHERE clause.
+#define E_DAO_RmtSQLCError DBDAOERR(3146) //ODBC--call failed.
+#define E_DAO_RmtDataOverflow DBDAOERR(3147) //*
+#define E_DAO_RmtConnectFailed DBDAOERR(3148) //*
+#define E_DAO_RmtIncorrectSqlcDll DBDAOERR(3149) //*
+#define E_DAO_RmtMissingSqlcDll DBDAOERR(3150) //*
+#define E_DAO_RmtConnectFailedM DBDAOERR(3151) //ODBC--connection to '|' failed.
+#define E_DAO_RmtDrvrVer DBDAOERR(3152) //*
+#define E_DAO_RmtSrvrVer DBDAOERR(3153) //*
+#define E_DAO_RmtMissingOdbcDll DBDAOERR(3154) //ODBC--couldn't find DLL '|'.
+#define E_DAO_RmtInsertFailedM DBDAOERR(3155) //ODBC--insert failed on attached (linked) table '|'.
+#define E_DAO_RmtDeleteFailedM DBDAOERR(3156) //ODBC--delete failed on attached (linked) table '|'.
+#define E_DAO_RmtUpdateFailedM DBDAOERR(3157) //ODBC--update failed on attached (linked) table '|'.
+#define E_DAO_RecordLocked DBDAOERR(3158) //Couldn't save record; currently locked by another user.
+#define E_DAO_InvalidBookmark DBDAOERR(3159) //Not a valid bookmark.
+#define E_DAO_TableNotOpen DBDAOERR(3160) //Table isn't open.
+#define E_DAO_DecryptFail DBDAOERR(3161) //Couldn't decrypt file.
+#define E_DAO_NullInvalid DBDAOERR(3162) //Null is invalid.
+#define E_DAO_InvalidBufferSize DBDAOERR(3163) //Couldn't perform operation; data too long for field.
+#define E_DAO_ColumnNotUpdatable DBDAOERR(3164) //Field can't be updated.
+#define E_DAO_CantMakeINFFile DBDAOERR(3165) //Couldn't open .INF file.
+#define E_DAO_MissingMemoFile DBDAOERR(3166) //Missing memo file.
+#define E_DAO_RecordDeleted DBDAOERR(3167) //Record is deleted.
+#define E_DAO_INFFileError DBDAOERR(3168) //Invalid .INF file.
+#define E_DAO_ExprIllegalType DBDAOERR(3169) //Illegal type in expression.
+#define E_DAO_InstalIsamNotFound DBDAOERR(3170) //Couldn't find installable ISAM.
+#define E_DAO_NoConfigParameters DBDAOERR(3171) //Couldn't find net path or user name.
+#define E_DAO_CantAccessPdoxNetDir DBDAOERR(3172) //Couldn't open PARADOX.NET.
+#define E_DAO_NoMSysAccounts DBDAOERR(3173) //Couldn't open table 'MSysAccounts' in the system database file.
+#define E_DAO_NoMSysGroups DBDAOERR(3174) //Couldn't open table 'MSysGroups' in the system database file.
+#define E_DAO_DateOutOfRange DBDAOERR(3175) //Date is out of range or is in an invalid format.
+#define E_DAO_ImexCantOpenFile DBDAOERR(3176) //Couldn't open file '|'.
+#define E_DAO_ImexBadTableName DBDAOERR(3177) //Not a valid table name.
+#define E_DAO_ImexOutOfMemory DBDAOERR(3178) //*
+#define E_DAO_ImexEndofFile DBDAOERR(3179) //Encountered unexpected end of file.
+#define E_DAO_ImexCantWriteToFile DBDAOERR(3180) //Couldn't write to file '|'.
+#define E_DAO_ImexBadRange DBDAOERR(3181) //Invalid range.
+#define E_DAO_ImexBogusFile DBDAOERR(3182) //Invalid file format.
+#define E_DAO_TempDiskFull DBDAOERR(3183) //Not enough space on temporary disk.
+#define E_DAO_RmtLinkNotFound DBDAOERR(3184) //Couldn't execute query; couldn't find attached, or linked, table.
+#define E_DAO_RmtTooManyColumns DBDAOERR(3185) //SELECT INTO remote database tried to produce too many fields.
+#define E_DAO_ReadConflictM DBDAOERR(3186) //Couldn't save; currently locked by user '|2' on machine '|1'.
+#define E_DAO_CommitConflictM DBDAOERR(3187) //Couldn't read; currently locked by user '|2' on machine '|1'.
+#define E_DAO_SessionWriteConflict DBDAOERR(3188) //Couldn't update; currently locked by another session on this machine.
+#define E_DAO_JetSpecialTableLocked DBDAOERR(3189) //Table '|1' is exclusively locked by user '|3' on machine '|2'.
+#define E_DAO_TooManyColumns DBDAOERR(3190) //Too many fields defined.
+#define E_DAO_ColumnDuplicate DBDAOERR(3191) //Can't define field more than once.
+#define E_DAO_OutputTableNotFound DBDAOERR(3192) //Couldn't find output table '|'.
+#define E_DAO_JetNoUserName DBDAOERR(3193) //(unknown)
+#define E_DAO_JetNoMachineName DBDAOERR(3194) //(unknown)
+#define E_DAO_JetNoColumnName DBDAOERR(3195) //(expression)
+#define E_DAO_DatabaseInUse DBDAOERR(3196) //Couldn't use '|'; database already in use.
+#define E_DAO_DataHasChanged DBDAOERR(3197) //Data has changed; operation stopped.
+#define E_DAO_TooManySessions DBDAOERR(3198) //Couldn't start session. Too many sessions already active.
+#define E_DAO_ReferenceNotFound DBDAOERR(3199) //Couldn't find reference.
+#define E_DAO_IntegrityViolMasterM DBDAOERR(3200) //Can't delete or change record. Since related records exist in table '|', referential integrity rules would be violated.
+#define E_DAO_IntegrityViolSlaveM DBDAOERR(3201) //Can't add or change record. Referential integrity rules require a related record in table '|'.
+#define E_DAO_ReadConflict DBDAOERR(3202) //Couldn't save; currently locked by another user.
+#define E_DAO_AggregatingHigherLevel DBDAOERR(3203) //Can't specify subquery in expression (|).
+#define E_DAO_DatabaseDuplicate DBDAOERR(3204) //Database already exists.
+#define E_DAO_QueryTooManyXvtColumn DBDAOERR(3205) //Too many crosstab column headers (|).
+#define E_DAO_SelfReference DBDAOERR(3206) //Can't create a relationship between a field and itself.
+#define E_DAO_CantUseUnkeyedTable DBDAOERR(3207) //Operation not supported on Paradox table with no primary key.
+#define E_DAO_IllegalDeletedOption DBDAOERR(3208) //Invalid Deleted entry in the Xbase section of initialization setting.
+#define E_DAO_IllegalStatsOption DBDAOERR(3209) //Invalid Stats entry in the Xbase section of initialization setting.
+#define E_DAO_ConnStrTooLong DBDAOERR(3210) //Connection string too long.
+#define E_DAO_TableInUseQM DBDAOERR(3211) //Couldn't lock table '|'; currently in use.
+#define E_DAO_JetSpecialTableInUse DBDAOERR(3212) //Couldn't lock table '|1'; currently in use by user '|3' on machine '|2'.
+#define E_DAO_IllegalDateOption DBDAOERR(3213) //Invalid Date entry in the Xbase section of initialization setting.
+#define E_DAO_IllegalMarkOption DBDAOERR(3214) //Invalid Mark entry in the Xbase section of initialization setting.
+#define E_DAO_BtrieveTooManyTasks DBDAOERR(3215) //Too many Btrieve tasks.
+#define E_DAO_QueryParmNotTableid DBDAOERR(3216) //Parameter '|' specified where a table name is required.
+#define E_DAO_QueryParmNotDatabase DBDAOERR(3217) //Parameter '|' specified where a database name is required.
+#define E_DAO_WriteConflict DBDAOERR(3218) //Couldn't update; currently locked.
+#define E_DAO_IllegalOperation DBDAOERR(3219) //Invalid operation.
+#define E_DAO_WrongCollatingSequence DBDAOERR(3220) //Incorrect collating sequence.
+#define E_DAO_BadConfigParameters DBDAOERR(3221) //Invalid entries in the Btrieve section of initialization setting.
+#define E_DAO_QueryContainsDbParm DBDAOERR(3222) //Query can't contain a Database parameter.
+#define E_DAO_QueryInvalidParmM DBDAOERR(3223) //'|' isn't a valid parameter name.
+#define E_DAO_BtrieveDDCorrupted DBDAOERR(3224) //Can't read Btrieve data dictionary.
+#define E_DAO_BtrieveDeadlock DBDAOERR(3225) //Encountered record locking deadlock while performing Btrieve operation.
+#define E_DAO_BtrieveFailure DBDAOERR(3226) //Errors encountered while using the Btrieve DLL.
+#define E_DAO_IllegalCenturyOption DBDAOERR(3227) //Invalid Century entry in the Xbase section of initialization setting.
+#define E_DAO_IllegalCollatingSeq DBDAOERR(3228) //Invalid Collating Sequence.
+#define E_DAO_NonModifiableKey DBDAOERR(3229) //Btrieve--can't change field.
+#define E_DAO_ObsoleteLockFile DBDAOERR(3230) //Out-of-date Paradox lock file.
+#define E_DAO_RmtColDataTruncated DBDAOERR(3231) //ODBC--field would be too long; data truncated.
+#define E_DAO_RmtCreateTableFailed DBDAOERR(3232) //ODBC--couldn't create table.
+#define E_DAO_RmtOdbcVer DBDAOERR(3233) //*
+#define E_DAO_RmtQueryTimeout DBDAOERR(3234) //ODBC--remote query timeout expired.
+#define E_DAO_RmtTypeIncompat DBDAOERR(3235) //ODBC--data type not supported on server.
+#define E_DAO_RmtUnexpectedNull DBDAOERR(3236) //*
+#define E_DAO_RmtUnexpectedType DBDAOERR(3237) //*
+#define E_DAO_RmtValueOutOfRange DBDAOERR(3238) //ODBC--data out of range.
+#define E_DAO_TooManyActiveUsers DBDAOERR(3239) //Too many active users.
+#define E_DAO_CantStartBtrieve DBDAOERR(3240) //Btrieve--missing Btrieve engine.
+#define E_DAO_OutOfBVResources DBDAOERR(3241) //Btrieve--out of resources.
+#define E_DAO_QueryBadUpwardRefedM DBDAOERR(3242) //Invalid reference in SELECT statement.
+#define E_DAO_ImexNoMatchingColumns DBDAOERR(3243) //None of the import field names match fields in the appended table.
+#define E_DAO_ImexPasswordProtected DBDAOERR(3244) //Can't import password-protected spreadsheet.
+#define E_DAO_ImexUnparsableRecord DBDAOERR(3245) //Couldn't parse field names from first row of import table.
+#define E_DAO_InTransaction DBDAOERR(3246) //Operation not supported in transactions.
+#define E_DAO_RmtLinkOutOfSync DBDAOERR(3247) //ODBC--linked table definition has changed.
+#define E_DAO_IllegalNetworkOption DBDAOERR(3248) //Invalid NetworkAccess entry in initialization setting.
+#define E_DAO_IllegalTimeoutOption DBDAOERR(3249) //Invalid PageTimeout entry in initialization setting.
+#define E_DAO_CantBuildKey DBDAOERR(3250) //Couldn't build key.
+#define E_DAO_FeatureNotAvailable DBDAOERR(3251) //Operation is not supported for this type of object.
+#define E_DAO_IllegalReentrancy DBDAOERR(3252) //Can't open form whose underlying query contains a user-defined function that attempts to set or get the form's RecordsetClone property.
+#define E_DAO_UNUSED DBDAOERR(3253) //*
+#define E_DAO_RmtDenyWriteIsInvalid DBDAOERR(3254) //ODBC--Can't lock all records.
+#define E_DAO_ODBCParmsChanged DBDAOERR(3255) //*
+#define E_DAO_INFIndexNotFound DBDAOERR(3256) //Index file not found.
+#define E_DAO_SQLOwnerAccessSyntax DBDAOERR(3257) //Syntax error in WITH OWNERACCESS OPTION declaration.
+#define E_DAO_QueryAmbiguousJoins DBDAOERR(3258) //Query contains ambiguous outer joins.
+#define E_DAO_InvalidColumnType DBDAOERR(3259) //Invalid field data type.
+#define E_DAO_WriteConflictM DBDAOERR(3260) //Couldn't update; currently locked by user '|2' on machine '|1'.
+#define E_DAO_TableLockedM DBDAOERR(3261) //|
+#define E_DAO_TableInUseMUQM DBDAOERR(3262) //|
+#define E_DAO_InvalidTableId DBDAOERR(3263) //Invalid database object.
+#define E_DAO_VtoNoFields DBDAOERR(3264) //No fields defined - cannot append Tabledef or Index.
+#define E_DAO_VtoNameNotFound DBDAOERR(3265) //Item not found in this collection.
+#define E_DAO_VtoFieldInCollection DBDAOERR(3266) //Can't append. Field is part of a TableDefs collection.
+#define E_DAO_VtoNotARecordset DBDAOERR(3267) //Property can be set only when the field is part of a Recordset object's Fields collection.
+#define E_DAO_VtoNoSetObjInDb DBDAOERR(3268) //Can't set this property once the object is part of a collection.
+#define E_DAO_VtoIndexInCollection DBDAOERR(3269) //Can't append. Index is part of a TableDefs collection.
+#define E_DAO_VtoPropNotFound DBDAOERR(3270) //Property not found.
+#define E_DAO_VtoIllegalValue DBDAOERR(3271) //Invalid property value.
+#define E_DAO_VtoNotArray DBDAOERR(3272) //Object isn't a collection.
+#define E_DAO_VtoNoSuchMethod DBDAOERR(3273) //Method not applicable for this object.
+#define E_DAO_NotExternalFormat DBDAOERR(3274) //External table isn't in the expected format.
+#define E_DAO_UnexpectedEngineReturn DBDAOERR(3275) //Unexpected error from external database driver (|).
+#define E_DAO_InvalidDatabaseId DBDAOERR(3276) //Invalid database ID.
+#define E_DAO_TooManyKeys DBDAOERR(3277) //Can't have more than 10 fields in an index.
+#define E_DAO_NotInitialized DBDAOERR(3278) //Database engine hasn't been initialized.
+#define E_DAO_AlreadyInitialized DBDAOERR(3279) //Database engine has already been initialized.
+#define E_DAO_ColumnInUse DBDAOERR(3280) //Can't delete a field that is part of an index or is needed by the system.
+#define E_DAO_IndexInUse DBDAOERR(3281) //Can't delete this index. It is either the current index or is used in a relationship.
+#define E_DAO_TableNotEmpty DBDAOERR(3282) //Can't create field or index in a table that is already defined.
+#define E_DAO_IndexHasPrimary DBDAOERR(3283) //Primary key already exists.
+#define E_DAO_IndexDuplicate DBDAOERR(3284) //Index already exists.
+#define E_DAO_IndexInvalidDef DBDAOERR(3285) //Invalid index definition.
+#define E_DAO_WrongMemoFileType DBDAOERR(3286) //Format of memo file doesn't match specified external database format.
+#define E_DAO_ColumnCannotIndex DBDAOERR(3287) //Can't create index on the given field.
+#define E_DAO_IndexHasNoPrimary DBDAOERR(3288) //Paradox index is not primary.
+#define E_DAO_DDLConstraintSyntax DBDAOERR(3289) //Syntax error in CONSTRAINT clause.
+#define E_DAO_DDLCreateTableSyntax DBDAOERR(3290) //Syntax error in CREATE TABLE statement.
+#define E_DAO_DDLCreateIndexSyntax DBDAOERR(3291) //Syntax error in CREATE INDEX statement.
+#define E_DAO_DDLColumnDefSyntax DBDAOERR(3292) //Syntax error in field definition.
+#define E_DAO_DDLAlterTableSyntax DBDAOERR(3293) //Syntax error in ALTER TABLE statement.
+#define E_DAO_DDLDropIndexSyntax DBDAOERR(3294) //Syntax error in DROP INDEX statement.
+#define E_DAO_DDLDropSyntax DBDAOERR(3295) //Syntax error in DROP TABLE or DROP INDEX.
+#define E_DAO_V11NotSupported DBDAOERR(3296) //Join expression not supported.
+#define E_DAO_ImexNothingToImport DBDAOERR(3297) //Couldn't import table or query. No records found, or all records contain errors.
+#define E_DAO_RmtTableAmbiguous DBDAOERR(3298) //There are several tables with that name. Please specify owner in the format 'owner.table'.
+#define E_DAO_JetODBCConformanceError DBDAOERR(3299) //ODBC Specification Conformance Error (|). This error should be reported to the ODBC driver vendor.
+#define E_DAO_IllegalRelationship DBDAOERR(3300) //Can't create a relationship.
+#define E_DAO_DBVerFeatureNotAvailable DBDAOERR(3301) //Can't perform this operation; features in this version are not available in databases with older formats.
+#define E_DAO_RulesLoaded DBDAOERR(3302) //Can't change a rule while the rules for this table are in use.
+#define E_DAO_ColumnInRelationship DBDAOERR(3303) //Can't delete this field. It's part of one or more relationships.
+#define E_DAO_InvalidPin DBDAOERR(3304) //You must enter a personal identifier (PID) consisting of at least four and no more than 20 characters and digits.
+#define E_DAO_RmtBogusConnStr DBDAOERR(3305) //Invalid connection string in pass-through query.
+#define E_DAO_SingleColumnExpected DBDAOERR(3306) //At most one field can be returned from a subquery that doesn't use the EXISTS keyword.
+#define E_DAO_ColumnCountMismatch DBDAOERR(3307) //The number of columns in the two selected tables or queries of a union query don't match.
+#define E_DAO_InvalidTopArgumentM DBDAOERR(3308) //Invalid TOP argument in select query.
+#define E_DAO_PropertyTooLarge DBDAOERR(3309) //Property setting can't be larger than 2 KB.
+#define E_DAO_JPMInvalidForV1x DBDAOERR(3310) //This property isn't supported for external data sources or for databases created in a previous version.
+#define E_DAO_PropertyExists DBDAOERR(3311) //Property specified already exists.
+#define E_DAO_TLVNativeUserTablesOnly DBDAOERR(3312) //Validation rules and default values can't be placed on system or attached (linked) tables.
+#define E_DAO_TLVInvalidColumn DBDAOERR(3313) //Can't place this validation expression on this field.
+#define E_DAO_TLVNoNullM DBDAOERR(3314) //Field '|' can't contain a null value.
+#define E_DAO_TLVNoBlankM DBDAOERR(3315) //Field '|' can't be a zero-length string.
+#define E_DAO_TLVRuleViolationM DBDAOERR(3316) //|
+#define E_DAO_TLVRuleVioNoMessage DBDAOERR(3317) //One or more values entered is prohibited by the validation rule '|2' set for '|1'.
+#define E_DAO_QueryTopNotAllowedM DBDAOERR(3318) //Top not allowed in delete queries.
+#define E_DAO_SQLUnionSyntax DBDAOERR(3319) //Syntax error in union query.
+#define E_DAO_TLVExprSyntaxM DBDAOERR(3320) //| in table-level validation expression.
+#define E_DAO_NoDbInConnStr DBDAOERR(3321) //No database specified in connection string or IN clause.
+#define E_DAO_QueryBadValueListM DBDAOERR(3322) //Crosstab query contains one or more invalid fixed column headings.
+#define E_DAO_QueryIsNotRowReturning DBDAOERR(3323) //The query can not be used as a row source.
+#define E_DAO_QueryIsDDL DBDAOERR(3324) //This query is a DDL query and cannot be used as a row source.
+#define E_DAO_SPTReturnedNoRecords DBDAOERR(3325) //Pass-through query with ReturnsRecords property set to True did not return any records.
+#define E_DAO_QueryIsSnapshot DBDAOERR(3326) //This Recordset is not updatable.
+#define E_DAO_QueryExprOutput DBDAOERR(3327) //Field '|' is based on an expression and can't be edited.
+#define E_DAO_QueryTableRO DBDAOERR(3328) //Table '|2' is read-only.
+#define E_DAO_QueryRowDeleted DBDAOERR(3329) //Record in table '|' was deleted by another user.
+#define E_DAO_QueryRowLocked DBDAOERR(3330) //Record in table '|' is locked by another user.
+#define E_DAO_QueryFixupChanged DBDAOERR(3331) //To make changes to this field, first save the record.
+#define E_DAO_QueryCantFillIn DBDAOERR(3332) //Can't enter value into blank field on 'one' side of outer join.
+#define E_DAO_QueryWouldOrphan DBDAOERR(3333) //Records in table '|' would have no record on the 'one' side.
+#define E_DAO_V10Format DBDAOERR(3334) //Can be present only in version 1.0 format.
+#define E_DAO_InvalidDelete DBDAOERR(3335) //DeleteOnly called with non-zero cbData.
+#define E_DAO_IllegalIndexDDFOption DBDAOERR(3336) //Btrieve: Invalid IndexDDF option in initialization setting.
+#define E_DAO_IllegalDataCodePage DBDAOERR(3337) //Invalid DataCodePage option in initialization setting.
+#define E_DAO_XtrieveEnvironmentError DBDAOERR(3338) //Btrieve: Xtrieve options aren't correct in initialization setting.
+#define E_DAO_IllegalIndexNumberOption DBDAOERR(3339) //Btrieve: Invalid IndexDeleteRenumber option in initialization setting.
+#define E_DAO_QueryIsCorruptM DBDAOERR(3340) //Query '|' is corrupt.
+#define E_DAO_IncorrectJoinKeyM DBDAOERR(3341) //Current field must match join key '|' on 'one' side of outer join because it has been updated.
+#define E_DAO_QueryLVInSubqueryM DBDAOERR(3342) //Invalid Memo or OLE object in subquery '|'.
+#define E_DAO_InvalidDatabaseM DBDAOERR(3343) //Unrecognized database format '|'.
+#define E_DAO_TLVCouldNotBindRef DBDAOERR(3344) //Unknown or invalid reference '|1' in validation expression or default value in table '|2'.
+#define E_DAO_CouldNotBindRef DBDAOERR(3345) //Unknown or invalid field reference '|'.
+#define E_DAO_QueryWrongNumDestCol DBDAOERR(3346) //Number of query values and destination fields aren't the same.
+#define E_DAO_QueryPKeyNotOutput DBDAOERR(3347) //Can't add record(s); primary key for table '|' not in recordset.
+#define E_DAO_QueryJKeyNotOutput DBDAOERR(3348) //Can't add record(s); join key of table '|' not in recordset.
+#define E_DAO_NumericFieldOverflow DBDAOERR(3349) //Numeric field overflow.
+#define E_DAO_InvalidObject DBDAOERR(3350) //Object is invalid for operation.
+#define E_DAO_OrderVsUnion DBDAOERR(3351) //ORDER BY expression (|) uses non-output fields.
+#define E_DAO_NoInsertColumnNameM DBDAOERR(3352) //No destination field name in INSERT INTO statement (|).
+#define E_DAO_MissingDDFFile DBDAOERR(3353) //Btrieve: Can't find file FIELD.DDF.
+#define E_DAO_SingleRecordExpected DBDAOERR(3354) //At most one record can be returned by this subquery.
+#define E_DAO_DefaultExprSyntax DBDAOERR(3355) //Syntax error in default value.
+#define E_DAO_ExclusiveDBConflict DBDAOERR(3356) //The database is opened by user '|2' on machine '|1'.
+#define E_DAO_QueryIsNotDDL DBDAOERR(3357) //This query is not a properly formed data-definition query.
+#define E_DAO_SysDatabaseOpenError DBDAOERR(3358) //Can't open Microsoft Jet engine system database.
+#define E_DAO_SQLInvalidSPT DBDAOERR(3359) //Pass-through query must contain at least one character.
+#define E_DAO_QueryTooComplex DBDAOERR(3360) //Query is too complex.
+#define E_DAO_SetOpInvalidInSubquery DBDAOERR(3361) //Unions not allowed in a subquery.
+#define E_DAO_RmtMultiRowUpdate DBDAOERR(3362) //Single-row update/delete affected more than one row of an attached (linked) table. Unique index contains duplicate values.
+#define E_DAO_QueryNoJoinedRecord DBDAOERR(3363) //Record(s) can't be added; no corresponding record on the 'one' side.
+#define E_DAO_QueryLVInSetOp DBDAOERR(3364) //Can't use Memo or OLE object field '|' in SELECT clause of a union query.
+#define E_DAO_VtoInvalidOnRemote DBDAOERR(3365) //Property value not valid for REMOTE objects.
+#define E_DAO_VtoNoFieldsRel DBDAOERR(3366) //Can't append a relation with no fields defined.
+#define E_DAO_VtoObjectInCollection DBDAOERR(3367) //Can't append. Object already in collection.
+#define E_DAO_DDLDiffNumRelCols DBDAOERR(3368) //Relationship must be on the same number of fields with the same data types.
+#define E_DAO_DDLIndexColNotFound DBDAOERR(3369) //Can't find field in index definition.
+#define E_DAO_DDLPermissionDenied DBDAOERR(3370) //Can't modify the design of table '|'. It's in a read-only database.
+#define E_DAO_DDLObjectNotFound DBDAOERR(3371) //Can't find table or constraint.
+#define E_DAO_DDLIndexNotFound DBDAOERR(3372) //No such index '|2' on table '|1'.
+#define E_DAO_DDLNoPkeyOnRefdTable DBDAOERR(3373) //Can't create relationship. Referenced table '|' doesn't have a primary key.
+#define E_DAO_DDLColumnsNotUnique DBDAOERR(3374) //The specified fields are not uniquely indexed in table '|'.
+#define E_DAO_DDLIndexDuplicate DBDAOERR(3375) //Table '|1' already has an index named '|2'
+#define E_DAO_DDLTableNotFound DBDAOERR(3376) //Table '|' doesn't exist.
+#define E_DAO_DDLRelNotFound DBDAOERR(3377) //No such relationship '|2' on table '|1'.
+#define E_DAO_DDLRelDuplicate DBDAOERR(3378) //There is already a relationship named '|' in the current database.
+#define E_DAO_DDLIntegrityViolation DBDAOERR(3379) //Can't create relationships to enforce referential integrity. Existing data in table '|2' violates referential integrity rules with related table '|1'.
+#define E_DAO_DDLColumnDuplicate DBDAOERR(3380) //Field '|2' already exists in table '|1'.
+#define E_DAO_DDLColumnNotFound DBDAOERR(3381) //There is no field named '|2' in table '|1'.
+#define E_DAO_DDLColumnTooBig DBDAOERR(3382) //The size of field '|' is too long.
+#define E_DAO_DDLColumnInRel DBDAOERR(3383) //Can't delete field '|'. It's part of one or more relationships.
+#define E_DAO_VtoCantDeleteBuiltIn DBDAOERR(3384) //Can't delete a built-in property.
+#define E_DAO_VtoUDPsDontSupportNull DBDAOERR(3385) //User-defined properties don't support a Null value.
+#define E_DAO_VtoMissingRequiredParm DBDAOERR(3386) //Property '|' must be set before using this method.
+#define E_DAO_JetJetInitInvalidPath DBDAOERR(3387) //Can't find TEMP directory.
+#define E_DAO_TLVExprUnknownFunctionM DBDAOERR(3388) //Unknown function '|2' in validation expression or default value on '|1'.
+#define E_DAO_QueryNotSupported DBDAOERR(3389) //Query support unavailable.
+#define E_DAO_AccountDuplicate DBDAOERR(3390) //Account name already exists.
+#define E_DAO_JetwrnPropCouldNotSave DBDAOERR(3391) //An error has occurred. Properties were not saved.
+#define E_DAO_RelNoPrimaryIndexM DBDAOERR(3392) //There is no primary key in table '|'.
+#define E_DAO_QueryKeyTooBig DBDAOERR(3393) //Can't perform join, group, sort, or indexed restriction. A value being searched or sorted on is too long.
+#define E_DAO_PropMustBeDDL DBDAOERR(3394) //Can't save property; property is a schema property.
+#define E_DAO_IllegalRIConstraint DBDAOERR(3395) //Invalid referential integrity constraint.
+#define E_DAO_RIViolationMasterCM DBDAOERR(3396) //Can't perform cascading operation. Since related records exist in table '|', referential integrity rules would be violated.
+#define E_DAO_RIViolationSlaveCM DBDAOERR(3397) //Can't perform cascading operation. There must be a related record in table '|'.
+#define E_DAO_RIKeyNullDisallowedCM DBDAOERR(3398) //Can't perform cascading operation. It would result in a null key in table '|'.
+#define E_DAO_RIKeyDuplicateCM DBDAOERR(3399) //Can't perform cascading operation. It would result in a duplicate key in table '|'.
+#define E_DAO_RIUpdateTwiceCM DBDAOERR(3400) //Can't perform cascading operation. It would result in two updates on field '|2' in table '|1'.
+#define E_DAO_RITLVNoNullCM DBDAOERR(3401) //Can't perform cascading operation. It would cause field '|' to become null, which is not allowed.
+#define E_DAO_RITLVNoBlankCM DBDAOERR(3402) //Can't perform cascading operation. It would cause field '|' to become a zero-length string, which is not allowed.
+#define E_DAO_RITLVRuleViolationCM DBDAOERR(3403) //Can't perform cascading operation: '|'
+#define E_DAO_RITLVRuleVioCNoMessage DBDAOERR(3404) //Can't perform cascading operation. The value entered is prohibited by the validation rule '|2' set for '|1'.
+#define E_DAO_TLVRuleEvalEBESErr DBDAOERR(3405) //Error '|' in validation rule.
+#define E_DAO_TLVDefaultEvalEBESErr DBDAOERR(3406) //Error '|' in default value.
+#define E_DAO_BadMSysConf DBDAOERR(3407) //The server's MSysConf table exists, but is in an incorrect format. Contact your system administrator.
+#define E_DAO_TooManyFindSessions DBDAOERR(3408) //Too many FastFind Sessions were invoked.
+#define E_DAO_InvalidColumnM DBDAOERR(3409) //Invalid field name '|' in definition of index or relationship.
+#define E_DAO_REPReadOnly DBDAOERR(3410) //*
+#define E_DAO_RIInvalidBufferSizeCM DBDAOERR(3411) //Invalid entry. Can't perform cascading operation specified in table '|1' because value entered is too big for field '|2'.
+#define E_DAO_RIWriteConflictCM DBDAOERR(3412) //|
+#define E_DAO_JetSpecialRIWriteConflictCM DBDAOERR(3413) //Can't perform cascading update on table '|1' because it is currently in use by user '|3' on machine '|2'.
+#define E_DAO_RISessWriteConflictCM DBDAOERR(3414) //Can't perform cascading update on table '|' because it is currently in use.
+#define E_DAO_NoBlank DBDAOERR(3415) //Zero-length string is valid only in a text or Memo field.
+#define E_DAO_FutureError DBDAOERR(3416) //|
+#define E_DAO_QueryInvalidBulkInput DBDAOERR(3417) //An action query cannot be used as a row source.
+#define E_DAO_NetCtrlMismatch DBDAOERR(3418) //Can't open '|'. Another user has the table open using a different network control file or locking style.
+#define E_DAO_4xTableWith3xLocking DBDAOERR(3419) //Can't open this Paradox 4.x or Paradox 5.x table because ParadoxNetStyle is set to 3.x in the initialization setting.
+#define E_DAO_VtoObjectNotSet DBDAOERR(3420) //Object is invalid or not set.
+#define E_DAO_VtoDataConvError DBDAOERR(3421) //Data type conversion error.
+
+#endif // def _DBDAOERR.H_
+
diff --git a/public/sdk/inc/mfc42/dbdaoid.h b/public/sdk/inc/mfc42/dbdaoid.h
new file mode 100644
index 000000000..6e97ac95a
--- /dev/null
+++ b/public/sdk/inc/mfc42/dbdaoid.h
@@ -0,0 +1,131 @@
+/************************************************************************
+** D B D A O I D . H *
+** *
+** OLE DAO component class id definitions *
+** *
+*************************************************************************
+** Copyright (C) 1992-5 by Microsoft Corporation *
+** All Rights Reserved *
+************************************************************************/
+
+/*
+ All UNICODE IID_... names are the same as the ANSI IID_... name
+ with a "W" appended to the end.
+
+*/
+
+// Type library
+DEFINE_OLEGUID(LIBID_CDAO, 0x00025e01, 0, 0);
+
+// StdObject
+DEFINE_OLEGUID(IID_IDAOStdObject, 0x00025e02, 0, 0);
+
+// StdCollection
+DEFINE_OLEGUID(IID_IDAOStdCollection, 0x00025e03, 0, 0);
+
+// DBEngine
+DEFINE_OLEGUID(CLSID_CDAODBEngine, 0x00025e15, 0, 0);
+DEFINE_OLEGUID(IID_IDAODBEngine, 0x00025e16, 0, 0);
+DEFINE_OLEGUID(IID_IDAODBEngineW, 0x00025e17, 0, 0);
+DEFINE_OLEGUID(CLSID_CDAOPrivDBEngine, 0x00025e19, 0, 0);
+
+// Error
+DEFINE_OLEGUID(IID_IDAOError, 0x00025e1d, 0, 0);
+DEFINE_OLEGUID(IID_IDAOErrorW, 0x00025e1e, 0, 0);
+DEFINE_OLEGUID(IID_IDAOErrors, 0x00025e1f, 0, 0);
+DEFINE_OLEGUID(IID_IDAOErrorsW, 0x00025e20, 0, 0);
+
+// Property
+DEFINE_OLEGUID(IID_IDAOProperty, 0x00025e25, 0, 0);
+DEFINE_OLEGUID(IID_IDAOPropertyW, 0x00025e26, 0, 0);
+DEFINE_OLEGUID(IID_IDAOProperties, 0x00025e27, 0, 0);
+DEFINE_OLEGUID(IID_IDAOPropertiesW, 0x00025e28, 0, 0);
+
+// Recordset
+DEFINE_OLEGUID(IID_IDAORecordset, 0x00025e2d, 0, 0);
+DEFINE_OLEGUID(IID_IDAORecordsetW, 0x00025e2e, 0, 0);
+DEFINE_OLEGUID(IID_IDAORecordsets, 0x00025e2f, 0, 0);
+DEFINE_OLEGUID(IID_IDAORecordsetsW, 0x00025e30, 0, 0);
+DEFINE_OLEGUID(IID_ICDAORecordset, 0x00025e31, 0, 0);
+
+// Workspace
+DEFINE_OLEGUID(IID_IDAOWorkspace, 0x00025e3a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOWorkspaceW, 0x00025e3b, 0, 0);
+DEFINE_OLEGUID(IID_IDAOWorkspaces, 0x00025e3c, 0, 0);
+DEFINE_OLEGUID(IID_IDAOWorkspacesW, 0x00025e3d, 0, 0);
+
+// TableDef
+DEFINE_OLEGUID(CLSID_CDAOTableDef, 0x00025e43, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDef, 0x00025e44, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDefW, 0x00025e45, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDefs, 0x00025e46, 0, 0);
+DEFINE_OLEGUID(IID_IDAOTableDefsW, 0x00025e47, 0, 0);
+
+// Field
+DEFINE_OLEGUID(CLSID_CDAOField, 0x00025e4c, 0, 0);
+DEFINE_OLEGUID(IID_IDAOField, 0x00025e4d, 0, 0);
+DEFINE_OLEGUID(IID_IDAOFieldW, 0x00025e4e, 0, 0);
+DEFINE_OLEGUID(IID_IDAOFields, 0x00025e4f, 0, 0);
+DEFINE_OLEGUID(IID_IDAOFieldsW, 0x00025e50, 0, 0);
+
+// Index
+DEFINE_OLEGUID(CLSID_CDAOIndex, 0x00025e55, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndex, 0x00025e56, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexW, 0x00025ed7, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexes, 0x00025e58, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexesW, 0x00025e59, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexFields, 0x00025e5a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOIndexFieldsW, 0x00025e5b, 0, 0);
+
+// Group
+DEFINE_OLEGUID(CLSID_CDAOGroup, 0x00025e5f, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroup, 0x00025e60, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroupW, 0x00025e61, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroups, 0x00025e62, 0, 0);
+DEFINE_OLEGUID(IID_IDAOGroupsW, 0x00025e63, 0, 0);
+
+// User
+DEFINE_OLEGUID(CLSID_CDAOUser, 0x00025e68, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUser, 0x00025e69, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUserW, 0x00025e6a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUsers, 0x00025e6b, 0, 0);
+DEFINE_OLEGUID(IID_IDAOUsersW, 0x00025e6c, 0, 0);
+
+// Database
+DEFINE_OLEGUID(IID_IDAODatabase, 0x00025e71, 0, 0);
+DEFINE_OLEGUID(IID_IDAODatabaseW, 0x00025e72, 0, 0);
+DEFINE_OLEGUID(IID_IDAODatabases, 0x00025e73, 0, 0);
+DEFINE_OLEGUID(IID_IDAODatabasesW, 0x00025e74, 0, 0);
+
+// QueryDef
+DEFINE_OLEGUID(CLSID_CDAOQueryDef, 0x00025e7a, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDef, 0x00025e7b, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDefW, 0x00025e7c, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDefs, 0x00025e7d, 0, 0);
+DEFINE_OLEGUID(IID_IDAOQueryDefsW, 0x00025e7e, 0, 0);
+
+// Parameter
+DEFINE_OLEGUID(IID_IDAOParameter, 0x00025e83, 0, 0);
+DEFINE_OLEGUID(IID_IDAOParameterW, 0x00025e84, 0, 0);
+DEFINE_OLEGUID(IID_IDAOParameters, 0x00025e85, 0, 0);
+DEFINE_OLEGUID(IID_IDAOParametersW, 0x00025e86, 0, 0);
+
+// Relation
+DEFINE_OLEGUID(CLSID_CDAORelation, 0x00025e8b, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelation, 0x00025e8c, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelationW, 0x00025e8d, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelations, 0x00025e8e, 0, 0);
+DEFINE_OLEGUID(IID_IDAORelationsW, 0x00025e8f, 0, 0);
+
+// Container
+DEFINE_OLEGUID(IID_IDAOContainer, 0x00025e94, 0, 0);
+DEFINE_OLEGUID(IID_IDAOContainerW, 0x00025e95, 0, 0);
+DEFINE_OLEGUID(IID_IDAOContainers, 0x00025e96, 0, 0);
+DEFINE_OLEGUID(IID_IDAOContainersW, 0x00025e97, 0, 0);
+
+// Document
+DEFINE_OLEGUID(IID_IDAODocument, 0x00025e9c, 0, 0);
+DEFINE_OLEGUID(IID_IDAODocumentW, 0x00025e9d, 0, 0);
+DEFINE_OLEGUID(IID_IDAODocuments, 0x00025e9e, 0, 0);
+DEFINE_OLEGUID(IID_IDAODocumentsW, 0x00025e9f, 0, 0);
+
diff --git a/public/sdk/inc/mfc42/dbdaoint.h b/public/sdk/inc/mfc42/dbdaoint.h
new file mode 100644
index 000000000..00d0deea7
--- /dev/null
+++ b/public/sdk/inc/mfc42/dbdaoint.h
@@ -0,0 +1,776 @@
+/*************************************************************************
+** D B D A O I N T . H *
+** *
+** OLE DAO Interface *
+** *
+** History *
+** ------- *
+** File converted from cdaotype.h for use by CDAO clients. *
+** *
+** *
+**************************************************************************
+** Copyright (C) 1995 by Microsoft Corporation *
+** All Rights Reserved *
+**************************************************************************/
+#ifndef _DBDAOINT_H_
+#define _DBDAOINT_H_
+
+#ifndef _INC_TCHAR
+#include <tchar.h>
+#endif
+
+// Forwards
+#define DAODBEngine _DAODBEngine
+interface _DAODBEngine;
+interface DAOError;
+interface DAOErrors;
+interface DAOProperty;
+interface DAOProperties;
+interface DAOWorkspace;
+interface DAOWorkspaces;
+interface DAODatabase;
+interface DAODatabases;
+#define DAOTableDef _DAOTableDef
+interface _DAOTableDef;
+interface DAOTableDefs;
+#define DAOQueryDef _DAOQueryDef
+interface _DAOQueryDef;
+interface DAOQueryDefs;
+interface DAORecordset;
+interface DAORecordsets;
+#define DAOField _DAOField
+interface _DAOField;
+interface DAOFields;
+#define DAOIndex _DAOIndex
+interface _DAOIndex;
+interface DAOIndexes;
+interface DAOParameter;
+interface DAOParameters;
+#define DAOUser _DAOUser
+interface _DAOUser;
+interface DAOUsers;
+#define DAOGroup _DAOGroup
+interface _DAOGroup;
+interface DAOGroups;
+#define DAORelation _DAORelation
+interface _DAORelation;
+interface DAORelations;
+interface DAOContainer;
+interface DAOContainers;
+interface DAODocument;
+interface DAODocuments;
+
+
+// Constants
+ const short dbOpenTable = 1;
+ const short dbOpenDynaset = 2;
+ const short dbOpenSnapshot = 4;
+ const short dbEditNone = 0;
+ const short dbEditInProgress = 1;
+ const short dbEditAdd = 2;
+ const short dbDenyWrite = 1;
+ const short dbDenyRead = 2;
+ const short dbReadOnly = 4;
+ const short dbAppendOnly = 8;
+ const short dbInconsistent = 16;
+ const short dbConsistent = 32;
+ const short dbSQLPassThrough = 64;
+ const short dbFailOnError = 128;
+ const short dbForwardOnly = 256;
+ const short dbSeeChanges = 512;
+ const short dbFixedField = 1;
+ const short dbVariableField = 2;
+ const short dbAutoIncrField = 16;
+ const short dbUpdatableField = 32;
+ const long dbSystemField = 8192;
+ const short dbDescending = 1;
+ const short dbBoolean = 1;
+ const short dbByte = 2;
+ const short dbInteger = 3;
+ const short dbLong = 4;
+ const short dbCurrency = 5;
+ const short dbSingle = 6;
+ const short dbDouble = 7;
+ const short dbDate = 8;
+ const short dbText = 10;
+ const short dbLongBinary = 11;
+ const short dbMemo = 12;
+ const short dbGUID = 15;
+ const long dbRelationUnique = 1;
+ const long dbRelationDontEnforce = 2;
+ const long dbRelationInherited = 4;
+ const long dbRelationUpdateCascade = 256;
+ const long dbRelationDeleteCascade = 4096;
+ const long dbRelationLeft = 16777216;
+ const long dbRelationRight = 33554432;
+ const long dbAttachExclusive = 65536;
+ const long dbAttachSavePWD = 131072;
+ const long dbSystemObject = -2147483646;
+ const long dbAttachedTable = 1073741824;
+ const long dbAttachedODBC = 536870912;
+ const long dbHiddenObject = 1;
+ const short dbQSelect = 0;
+ const short dbQAction = 240;
+ const short dbQCrosstab = 16;
+ const short dbQDelete = 32;
+ const short dbQUpdate = 48;
+ const short dbQAppend = 64;
+ const short dbQMakeTable = 80;
+ const short dbQDDL = 96;
+ const short dbQSQLPassThrough = 112;
+ const short dbQSetOperation = 128;
+ const short dbQSPTBulk = 144;
+ const TCHAR dbLangArabic[] = _T(";LANGID=0x0401;CP=1256;COUNTRY=0";);
+ const TCHAR dbLangCzech[] = _T(";LANGID=0x0405;CP=1250;COUNTRY=0";);
+ const TCHAR dbLangDutch[] = _T(";LANGID=0x0413;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangGeneral[] = _T(";LANGID=0x0409;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangGreek[] = _T(";LANGID=0x0408;CP=1253;COUNTRY=0";);
+ const TCHAR dbLangHebrew[] = _T(";LANGID=0x040D;CP=1255;COUNTRY=0";);
+ const TCHAR dbLangHungarian[] = _T(";LANGID=0x040E;CP=1250;COUNTRY=0";);
+ const TCHAR dbLangIcelandic[] = _T(";LANGID=0x040F;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangNordic[] = _T(";LANGID=0x041D;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangNorwDan[] = _T(";LANGID=0x0414;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangPolish[] = _T(";LANGID=0x0415;CP=1250;COUNTRY=0";);
+ const TCHAR dbLangCyrillic[] = _T(";LANGID=0x0419;CP=1251;COUNTRY=0";);
+ const TCHAR dbLangSpanish[] = _T(";LANGID=0x040A;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangSwedFin[] = _T(";LANGID=0x040B;CP=1252;COUNTRY=0";);
+ const TCHAR dbLangTurkish[] = _T(";LANGID=0x041F;CP=1254;COUNTRY=0";);
+ const TCHAR dbLangJapanese[] = _T(";LANGID=0x0411;CP=932;COUNTRY=0";);
+ const TCHAR dbLangChineseSimplified[] = _T(";LANGID=0x0804;CP=936;COUNTRY=0";);
+ const TCHAR dbLangChineseTraditional[] = _T(";LANGID=0x0404;CP=950;COUNTRY=0";);
+ const TCHAR dbLangKorean[] = _T(";LANGID=0x040C;CP=494;COUNTRY=0";);
+ const TCHAR dbLangThai[] = _T(";LANGID=0x101E;CP=874;COUNTRY=0";);
+ const short dbVersion10 = 1;
+ const short dbEncrypt = 2;
+ const short dbDecrypt = 4;
+ const short dbVersion11 = 8;
+ const short dbVersion20 = 16;
+ const short dbVersion30 = 32;
+ const short dbSortNeutral = 1024;
+ const short dbSortArabic = 1025;
+ const short dbSortCyrillic = 1049;
+ const short dbSortCzech = 1029;
+ const short dbSortDutch = 1043;
+ const short dbSortGeneral = 1033;
+ const short dbSortGreek = 1032;
+ const short dbSortHebrew = 1037;
+ const short dbSortHungarian = 1038;
+ const short dbSortIcelandic = 1039;
+ const short dbSortNorwdan = 1030;
+ const short dbSortPDXIntl = 1033;
+ const short dbSortPDXNor = 1030;
+ const short dbSortPDXSwe = 1053;
+ const short dbSortPolish = 1045;
+ const short dbSortSpanish = 1034;
+ const short dbSortSwedFin = 1053;
+ const short dbSortTurkish = 1055;
+ const short dbSortJapanese = 1041;
+ const short dbSortChineseSimplified = 2052;
+ const short dbSortChineseTraditional = 1028;
+ const short dbSortKorean = 1036;
+ const short dbSortThai = 4126;
+ const short dbSortUndefined = -1;
+ const short dbFreeLocks = 1;
+ const long dbSecNoAccess = 0;
+ const long dbSecFullAccess = 1048575;
+ const long dbSecDelete = 65536;
+ const long dbSecReadSec = 131072;
+ const long dbSecWriteSec = 262144;
+ const long dbSecWriteOwner = 524288;
+ const long dbSecDBCreate = 1;
+ const long dbSecDBOpen = 2;
+ const long dbSecDBExclusive = 4;
+ const long dbSecDBAdmin = 8;
+ const long dbSecCreate = 1;
+ const long dbSecReadDef = 4;
+ const long dbSecWriteDef = 65548;
+ const long dbSecRetrieveData = 20;
+ const long dbSecInsertData = 32;
+ const long dbSecReplaceData = 64;
+ const long dbSecDeleteData = 128;
+ const long dbRepExportChanges = 1;
+ const long dbRepImportChanges = 2;
+ const long dbRepImpExpChanges = 4;
+ const long dbRepMakeReadOnly = 2;
+// Interface: _DAOCollection
+#undef INTERFACE
+#define INTERFACE _DAOCollection
+DECLARE_INTERFACE_(_DAOCollection, IDispatch)
+ {
+ STDMETHOD(get_Count) (THIS_ short FAR* c) PURE;
+ STDMETHOD(_NewEnum) (THIS_ IUnknown * FAR* ppunk) PURE;
+ STDMETHOD(Refresh) (THIS) PURE;
+ };
+
+// Interface: _DAODynaCollection
+#undef INTERFACE
+#define INTERFACE _DAODynaCollection
+DECLARE_INTERFACE_(_DAODynaCollection, _DAOCollection)
+ {
+ STDMETHOD(Append) (THIS_ IDispatch * Object) PURE;
+ STDMETHOD(Delete) (THIS_ BSTR Name) PURE;
+ };
+
+// Interface: _DAO
+#undef INTERFACE
+#define INTERFACE _DAO
+DECLARE_INTERFACE_(_DAO, IDispatch)
+ {
+ STDMETHOD(get_Properties) (THIS_ DAOProperties FAR* FAR* ppprops) PURE;
+ };
+
+// Interface: _DAODBEngine
+#undef INTERFACE
+#define INTERFACE _DAODBEngine
+DECLARE_INTERFACE_(_DAODBEngine, _DAO)
+ {
+ STDMETHOD(get_Version) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_IniPath) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_IniPath) (THIS_ BSTR path) PURE;
+ STDMETHOD(put_DefaultUser) (THIS_ BSTR user) PURE;
+ STDMETHOD(put_DefaultPassword) (THIS_ BSTR pw) PURE;
+ STDMETHOD(get_LoginTimeout) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_LoginTimeout) (THIS_ short Timeout) PURE;
+ STDMETHOD(get_Workspaces) (THIS_ DAOWorkspaces FAR* FAR* ppworks) PURE;
+ STDMETHOD(get_Errors) (THIS_ DAOErrors FAR* FAR* pperrs) PURE;
+ STDMETHOD(Idle) (THIS_ VARIANT Action) PURE;
+ STDMETHOD(CompactDatabase) (THIS_ BSTR SrcName, BSTR DstName, VARIANT DstConnect, VARIANT Options, VARIANT SrcConnect) PURE;
+ STDMETHOD(RepairDatabase) (THIS_ BSTR Name) PURE;
+ STDMETHOD(RegisterDatabase) (THIS_ BSTR Dsn, BSTR Driver, VARIANT_BOOL Silent, BSTR Attributes) PURE;
+ STDMETHOD(CreateWorkspace) (THIS_ BSTR Name, BSTR UserName, BSTR Password, DAOWorkspace FAR* FAR* ppwrk) PURE;
+ STDMETHOD(OpenDatabase) (THIS_ BSTR Name, VARIANT Exclusive, VARIANT ReadOnly, VARIANT Connect, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(CreateDatabase) (THIS_ BSTR Name, BSTR Connect, VARIANT Option, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(FreeLocks) (THIS) PURE;
+ STDMETHOD(BeginTrans) (THIS) PURE;
+ STDMETHOD(CommitTrans) (THIS) PURE;
+ STDMETHOD(Rollback) (THIS) PURE;
+ STDMETHOD(SetDefaultWorkspace) (THIS_ BSTR Name, BSTR Password) PURE;
+ STDMETHOD(SetDataAccessOption) (THIS_ short Option, VARIANT Value) PURE;
+ STDMETHOD(ISAMStats) (THIS_ long StatNum, VARIANT Reset, long FAR* pl) PURE;
+ STDMETHOD(get_SystemDB) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_SystemDB) (THIS_ BSTR SystemDBPath) PURE;
+ };
+
+// Interface: DAOError
+#undef INTERFACE
+#define INTERFACE DAOError
+DECLARE_INTERFACE_(DAOError, IDispatch)
+ {
+ STDMETHOD(get_Number) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Source) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Description) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_HelpFile) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_HelpContext) (THIS_ long FAR* pl) PURE;
+ };
+
+// Interface: DAOErrors
+#undef INTERFACE
+#define INTERFACE DAOErrors
+DECLARE_INTERFACE_(DAOErrors, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOError FAR* FAR* pperr) PURE;
+ };
+
+// Interface: DAOWorkspace
+#undef INTERFACE
+#define INTERFACE DAOWorkspace
+DECLARE_INTERFACE_(DAOWorkspace, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
+ STDMETHOD(get_UserName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_UserName) (THIS_ BSTR UserName) PURE;
+ STDMETHOD(put_Password) (THIS_ BSTR Password) PURE;
+ STDMETHOD(get_IsolateODBCTrans) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_IsolateODBCTrans) (THIS_ short s) PURE;
+ STDMETHOD(get_Databases) (THIS_ DAODatabases FAR* FAR* ppdbs) PURE;
+ STDMETHOD(get_Users) (THIS_ DAOUsers FAR* FAR* ppusrs) PURE;
+ STDMETHOD(get_Groups) (THIS_ DAOGroups FAR* FAR* ppgrps) PURE;
+ STDMETHOD(BeginTrans) (THIS) PURE;
+ STDMETHOD(CommitTrans) (THIS) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(Rollback) (THIS) PURE;
+ STDMETHOD(OpenDatabase) (THIS_ BSTR Name, VARIANT Exclusive, VARIANT ReadOnly, VARIANT Connect, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(CreateDatabase) (THIS_ BSTR Name, BSTR Connect, VARIANT Option, DAODatabase FAR* FAR* ppdb) PURE;
+ STDMETHOD(CreateUser) (THIS_ VARIANT Name, VARIANT PID, VARIANT Password, DAOUser FAR* FAR* ppusr) PURE;
+ STDMETHOD(CreateGroup) (THIS_ VARIANT Name, VARIANT PID, DAOGroup FAR* FAR* ppgrp) PURE;
+ };
+
+// Interface: DAOWorkspaces
+#undef INTERFACE
+#define INTERFACE DAOWorkspaces
+DECLARE_INTERFACE_(DAOWorkspaces, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOWorkspace FAR* FAR* ppwrk) PURE;
+ };
+
+// Interface: _DAOTableDef
+#undef INTERFACE
+#define INTERFACE _DAOTableDef
+DECLARE_INTERFACE_(_DAOTableDef, _DAO)
+ {
+ STDMETHOD(get_Attributes) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Attributes) (THIS_ long Attributes) PURE;
+ STDMETHOD(get_Connect) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Connect) (THIS_ BSTR Connection) PURE;
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
+ STDMETHOD(get_SourceTableName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_SourceTableName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_ValidationText) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationText) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ValidationRule) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationRule) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_RecordCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(get_Indexes) (THIS_ DAOIndexes FAR* FAR* ppidxs) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(RefreshLink) (THIS) PURE;
+ STDMETHOD(CreateField) (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
+ STDMETHOD(CreateIndex) (THIS_ VARIANT Name, DAOIndex FAR* FAR* ppidx) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ STDMETHOD(get_ConflictTable) (THIS_ BSTR FAR* pbstr) PURE;
+ };
+
+// Interface: DAOTableDefs
+#undef INTERFACE
+#define INTERFACE DAOTableDefs
+DECLARE_INTERFACE_(DAOTableDefs, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOTableDef FAR* FAR* pptdf) PURE;
+ };
+
+// Interface: DAODatabase
+#undef INTERFACE
+#define INTERFACE DAODatabase
+DECLARE_INTERFACE_(DAODatabase, _DAO)
+ {
+ STDMETHOD(get_CollatingOrder) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Connect) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_QueryTimeout) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_QueryTimeout) (THIS_ short Timeout) PURE;
+ STDMETHOD(get_Transactions) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Version) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_RecordsAffected) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_TableDefs) (THIS_ DAOTableDefs FAR* FAR* pptdfs) PURE;
+ STDMETHOD(get_QueryDefs) (THIS_ DAOQueryDefs FAR* FAR* ppqdfs) PURE;
+ STDMETHOD(get_Relations) (THIS_ DAORelations FAR* FAR* pprls) PURE;
+ STDMETHOD(get_Containers) (THIS_ DAOContainers FAR* FAR* ppctns) PURE;
+ STDMETHOD(get_Recordsets) (THIS_ DAORecordsets FAR* FAR* pprsts) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(Execute) (THIS_ BSTR Query, VARIANT Options) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ BSTR Name, VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ STDMETHOD(CreateRelation) (THIS_ VARIANT Name, VARIANT Table, VARIANT ForeignTable, VARIANT Attributes, DAORelation FAR* FAR* pprel) PURE;
+ STDMETHOD(CreateTableDef) (THIS_ VARIANT Name, VARIANT Attributes, VARIANT SourceTablename, VARIANT Connect, DAOTableDef FAR* FAR* pptdf) PURE;
+ STDMETHOD(BeginTrans) (THIS) PURE;
+ STDMETHOD(CommitTrans) (THIS) PURE;
+ STDMETHOD(Rollback) (THIS) PURE;
+ STDMETHOD(CreateDynaset) (THIS_ BSTR Name, VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateQueryDef) (THIS_ VARIANT Name, VARIANT SQLText, DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(CreateSnapshot) (THIS_ BSTR Source, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(DeleteQueryDef) (THIS_ BSTR Name) PURE;
+ STDMETHOD(ExecuteSQL) (THIS_ BSTR SQL, long FAR* pl) PURE;
+ STDMETHOD(ListFields) (THIS_ BSTR Name, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(ListTables) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(OpenQueryDef) (THIS_ BSTR Name, DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(OpenTable) (THIS_ BSTR Name, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(get_ReplicaID) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_DesignMasterID) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_DesignMasterID) (THIS_ BSTR MasterID) PURE;
+ STDMETHOD(Synchronize) (THIS_ BSTR DbPathName, VARIANT ExchangeType) PURE;
+ STDMETHOD(MakeReplica) (THIS_ BSTR PathName, BSTR Description, VARIANT Options) PURE;
+ STDMETHOD(put_Connect) (THIS_ BSTR ODBCConnnect) PURE;
+ STDMETHOD(NewPassword) (THIS_ BSTR bstrOld, BSTR bstrNew) PURE;
+ };
+
+// Interface: DAODatabases
+#undef INTERFACE
+#define INTERFACE DAODatabases
+DECLARE_INTERFACE_(DAODatabases, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAODatabase FAR* FAR* ppdb) PURE;
+ };
+
+// Interface: _DAOQueryDef
+#undef INTERFACE
+#define INTERFACE _DAOQueryDef
+DECLARE_INTERFACE_(_DAOQueryDef, _DAO)
+ {
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ODBCTimeout) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_ODBCTimeout) (THIS_ short timeout) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* pi) PURE;
+ STDMETHOD(get_SQL) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_SQL) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Connect) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Connect) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ReturnsRecords) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_ReturnsRecords) (THIS_ VARIANT_BOOL f) PURE;
+ STDMETHOD(get_RecordsAffected) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(get_Parameters) (THIS_ DAOParameters FAR* FAR* ppprms) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(_OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(_Copy) (THIS_ DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(Execute) (THIS_ VARIANT Options) PURE;
+ STDMETHOD(Compare) (THIS_ DAOQueryDef FAR* pQdef, short FAR* lps) PURE;
+ STDMETHOD(CreateDynaset) (THIS_ VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateSnapshot) (THIS_ VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(ListParameters) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ };
+
+// Interface: DAOQueryDefs
+#undef INTERFACE
+#define INTERFACE DAOQueryDefs
+DECLARE_INTERFACE_(DAOQueryDefs, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOQueryDef FAR* FAR* ppqdef) PURE;
+ };
+
+// Interface: DAORecordset
+#undef INTERFACE
+#define INTERFACE DAORecordset
+DECLARE_INTERFACE_(DAORecordset, _DAO)
+ {
+ STDMETHOD(get_BOF) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Bookmark) (THIS_ SAFEARRAY FAR* FAR* ppsach) PURE;
+ STDMETHOD(put_Bookmark) (THIS_ SAFEARRAY FAR* FAR* psach) PURE;
+ STDMETHOD(get_Bookmarkable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_EOF) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Filter) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Filter) (THIS_ BSTR Filter) PURE;
+ STDMETHOD(get_Index) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Index) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_LastModified) (THIS_ SAFEARRAY FAR* FAR* ppsa) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LockEdits) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_LockEdits) (THIS_ VARIANT_BOOL Lock) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_NoMatch) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Sort) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Sort) (THIS_ BSTR Sort) PURE;
+ STDMETHOD(get_Transactions) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(get_RecordCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Updatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Restartable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_ValidationText) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_ValidationRule) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_CacheStart) (THIS_ SAFEARRAY FAR* FAR* ppsa) PURE;
+ STDMETHOD(put_CacheStart) (THIS_ SAFEARRAY FAR* FAR* psa) PURE;
+ STDMETHOD(get_CacheSize) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_CacheSize) (THIS_ long CacheSize) PURE;
+ STDMETHOD(get_PercentPosition) (THIS_ float FAR* pd) PURE;
+ STDMETHOD(put_PercentPosition) (THIS_ float Position) PURE;
+ STDMETHOD(get_AbsolutePosition) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_AbsolutePosition) (THIS_ long Position) PURE;
+ STDMETHOD(get_EditMode) (THIS_ short FAR* pi) PURE;
+ STDMETHOD(get_ODBCFetchCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_ODBCFetchDelay) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Parent) (THIS_ DAODatabase FAR* FAR* pdb) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(get_Indexes) (THIS_ DAOIndexes FAR* FAR* ppidxs) PURE;
+ STDMETHOD(CancelUpdate) (THIS) PURE;
+ STDMETHOD(AddNew) (THIS) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(OpenRecordset) (THIS_ VARIANT Type, VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(Delete) (THIS) PURE;
+ STDMETHOD(Edit) (THIS) PURE;
+ STDMETHOD(FindFirst) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(FindLast) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(FindNext) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(FindPrevious) (THIS_ BSTR Criteria) PURE;
+ STDMETHOD(MoveFirst) (THIS) PURE;
+ STDMETHOD(MoveLast) (THIS) PURE;
+ STDMETHOD(MoveNext) (THIS) PURE;
+ STDMETHOD(MovePrevious) (THIS) PURE;
+ STDMETHOD(Seek) (THIS_ BSTR Comparison, VARIANT Key1, VARIANT Key2, VARIANT Key3, VARIANT Key4, VARIANT Key5, VARIANT Key6, VARIANT Key7, VARIANT Key8, VARIANT Key9, VARIANT Key10, VARIANT Key11, VARIANT Key12, VARIANT Key13) PURE;
+ STDMETHOD(Update) (THIS) PURE;
+ STDMETHOD(Clone) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(Requery) (THIS_ VARIANT NewQueryDef) PURE;
+ STDMETHOD(Move) (THIS_ long Rows, VARIANT StartBookmark) PURE;
+ STDMETHOD(FillCache) (THIS_ VARIANT Rows, VARIANT StartBookmark) PURE;
+ STDMETHOD(CreateDynaset) (THIS_ VARIANT Options, VARIANT Inconsistent, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CreateSnapshot) (THIS_ VARIANT Options, DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(CopyQueryDef) (THIS_ DAOQueryDef FAR* FAR* ppqdf) PURE;
+ STDMETHOD(ListFields) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(ListIndexes) (THIS_ DAORecordset FAR* FAR* pprst) PURE;
+ STDMETHOD(GetRows) (THIS_ VARIANT cRows, VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_Collect) (THIS_ VARIANT index, VARIANT FAR* pvar) PURE;
+ STDMETHOD(put_Collect) (THIS_ VARIANT index, VARIANT value) PURE;
+ };
+
+// Interface: DAORecordsets
+#undef INTERFACE
+#define INTERFACE DAORecordsets
+DECLARE_INTERFACE_(DAORecordsets, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAORecordset FAR* FAR* pprst) PURE;
+ };
+
+// Interface: _DAOField
+#undef INTERFACE
+#define INTERFACE _DAOField
+DECLARE_INTERFACE_(_DAOField, _DAO)
+ {
+ STDMETHOD(get_CollatingOrder) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_Type) (THIS_ short Type) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR Name) PURE;
+ STDMETHOD(get_Size) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Size) (THIS_ long Size) PURE;
+ STDMETHOD(get_SourceField) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_SourceTable) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Value) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(put_Value) (THIS_ VARIANT Val) PURE;
+ STDMETHOD(get_Attributes) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Attributes) (THIS_ long Attr) PURE;
+ STDMETHOD(get_OrdinalPosition) (THIS_ short FAR* ps) PURE;
+ STDMETHOD(put_OrdinalPosition) (THIS_ short Pos) PURE;
+ STDMETHOD(get_ValidationText) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationText) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ValidateOnSet) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_ValidateOnSet) (THIS_ VARIANT_BOOL Validate) PURE;
+ STDMETHOD(get_ValidationRule) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ValidationRule) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_DefaultValue) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_DefaultValue) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Required) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Required) (THIS_ VARIANT_BOOL fReq) PURE;
+ STDMETHOD(get_AllowZeroLength) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_AllowZeroLength) (THIS_ VARIANT_BOOL fAllow) PURE;
+ STDMETHOD(get_DataUpdatable) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_ForeignName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ForeignName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(AppendChunk) (THIS_ VARIANT Val) PURE;
+ STDMETHOD(GetChunk) (THIS_ long Offset, long Bytes, VARIANT FAR* pvar) PURE;
+ STDMETHOD(FieldSize) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ STDMETHOD(get_CollectionIndex) (THIS_ short FAR* i) PURE;
+ };
+
+// Interface: DAOFields
+#undef INTERFACE
+#define INTERFACE DAOFields
+DECLARE_INTERFACE_(DAOFields, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOField FAR* FAR* ppfld) PURE;
+ };
+
+// Interface: _DAOIndex
+#undef INTERFACE
+#define INTERFACE _DAOIndex
+DECLARE_INTERFACE_(_DAOIndex, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Foreign) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(get_Unique) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Unique) (THIS_ VARIANT_BOOL fUnique) PURE;
+ STDMETHOD(get_Clustered) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Clustered) (THIS_ VARIANT_BOOL fClustered) PURE;
+ STDMETHOD(get_Required) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Required) (THIS_ VARIANT_BOOL fRequired) PURE;
+ STDMETHOD(get_IgnoreNulls) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_IgnoreNulls) (THIS_ VARIANT_BOOL fIgnoreNulls) PURE;
+ STDMETHOD(get_Primary) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Primary) (THIS_ VARIANT_BOOL fPrimary) PURE;
+ STDMETHOD(get_DistinctCount) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(get_Fields) (THIS_ VARIANT FAR* pv) PURE;
+ STDMETHOD(put_Fields) (THIS_ VARIANT v) PURE;
+ STDMETHOD(CreateField) (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ };
+
+// Interface: DAOIndexes
+#undef INTERFACE
+#define INTERFACE DAOIndexes
+DECLARE_INTERFACE_(DAOIndexes, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOIndex FAR* FAR* ppidx) PURE;
+ };
+
+// Interface: DAOIndexFields
+#undef INTERFACE
+#define INTERFACE DAOIndexFields
+DECLARE_INTERFACE_(DAOIndexFields, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, VARIANT FAR* pvar) PURE;
+ };
+
+// Interface: DAOParameter
+#undef INTERFACE
+#define INTERFACE DAOParameter
+DECLARE_INTERFACE_(DAOParameter, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Value) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(put_Value) (THIS_ VARIANT val) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ps) PURE;
+ };
+
+// Interface: DAOParameters
+#undef INTERFACE
+#define INTERFACE DAOParameters
+DECLARE_INTERFACE_(DAOParameters, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOParameter FAR* FAR* ppprm) PURE;
+ };
+
+// Interface: _DAOUser
+#undef INTERFACE
+#define INTERFACE _DAOUser
+DECLARE_INTERFACE_(_DAOUser, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(put_PID) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(put_Password) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Groups) (THIS_ DAOGroups FAR* FAR* ppgrps) PURE;
+ STDMETHOD(NewPassword) (THIS_ BSTR bstrOld, BSTR bstrNew) PURE;
+ STDMETHOD(CreateGroup) (THIS_ VARIANT Name, VARIANT PID, DAOGroup FAR* FAR* ppgrp) PURE;
+ };
+
+// Interface: DAOUsers
+#undef INTERFACE
+#define INTERFACE DAOUsers
+DECLARE_INTERFACE_(DAOUsers, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOUser FAR* FAR* ppusr) PURE;
+ };
+
+// Interface: _DAOGroup
+#undef INTERFACE
+#define INTERFACE _DAOGroup
+DECLARE_INTERFACE_(_DAOGroup, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(put_PID) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Users) (THIS_ DAOUsers FAR* FAR* ppusrs) PURE;
+ STDMETHOD(CreateUser) (THIS_ VARIANT Name, VARIANT PID, VARIANT Password, DAOUser FAR* FAR* ppusr) PURE;
+ };
+
+// Interface: DAOGroups
+#undef INTERFACE
+#define INTERFACE DAOGroups
+DECLARE_INTERFACE_(DAOGroups, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOGroup FAR* FAR* ppgrp) PURE;
+ };
+
+// Interface: _DAORelation
+#undef INTERFACE
+#define INTERFACE _DAORelation
+DECLARE_INTERFACE_(_DAORelation, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Table) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Table) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_ForeignTable) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_ForeignTable) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Attributes) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Attributes) (THIS_ long attr) PURE;
+ STDMETHOD(get_Fields) (THIS_ DAOFields FAR* FAR* ppflds) PURE;
+ STDMETHOD(CreateField) (THIS_ VARIANT Name, VARIANT Type, VARIANT Size, DAOField FAR* FAR* ppfld) PURE;
+ };
+
+// Interface: DAORelations
+#undef INTERFACE
+#define INTERFACE DAORelations
+DECLARE_INTERFACE_(DAORelations, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAORelation FAR* FAR* pprel) PURE;
+ };
+
+// Interface: DAOProperty
+#undef INTERFACE
+#define INTERFACE DAOProperty
+DECLARE_INTERFACE_(DAOProperty, _DAO)
+ {
+ STDMETHOD(get_Value) (THIS_ VARIANT FAR* pval) PURE;
+ STDMETHOD(put_Value) (THIS_ VARIANT val) PURE;
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Name) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Type) (THIS_ short FAR* ptype) PURE;
+ STDMETHOD(put_Type) (THIS_ short type) PURE;
+ STDMETHOD(get_Inherited) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ };
+
+// Interface: DAOProperties
+#undef INTERFACE
+#define INTERFACE DAOProperties
+DECLARE_INTERFACE_(DAOProperties, _DAODynaCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOProperty FAR* FAR* ppprop) PURE;
+ };
+
+// Interface: DAOContainer
+#undef INTERFACE
+#define INTERFACE DAOContainer
+DECLARE_INTERFACE_(DAOContainer, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Owner) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Owner) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_UserName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_UserName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Permissions) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Permissions) (THIS_ long permissions) PURE;
+ STDMETHOD(get_Inherit) (THIS_ VARIANT_BOOL FAR* pb) PURE;
+ STDMETHOD(put_Inherit) (THIS_ VARIANT_BOOL fInherit) PURE;
+ STDMETHOD(get_Documents) (THIS_ DAODocuments FAR* FAR* ppdocs) PURE;
+ STDMETHOD(get_AllPermissions) (THIS_ long FAR* pl) PURE;
+ };
+
+// Interface: DAOContainers
+#undef INTERFACE
+#define INTERFACE DAOContainers
+DECLARE_INTERFACE_(DAOContainers, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAOContainer FAR* FAR* ppctn) PURE;
+ };
+
+// Interface: DAODocument
+#undef INTERFACE
+#define INTERFACE DAODocument
+DECLARE_INTERFACE_(DAODocument, _DAO)
+ {
+ STDMETHOD(get_Name) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_Owner) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_Owner) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Container) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(get_UserName) (THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(put_UserName) (THIS_ BSTR bstr) PURE;
+ STDMETHOD(get_Permissions) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(put_Permissions) (THIS_ long permissions) PURE;
+ STDMETHOD(get_DateCreated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_LastUpdated) (THIS_ VARIANT FAR* pvar) PURE;
+ STDMETHOD(get_AllPermissions) (THIS_ long FAR* pl) PURE;
+ STDMETHOD(CreateProperty) (THIS_ VARIANT Name, VARIANT Type, VARIANT Value, VARIANT DDL, DAOProperty FAR* FAR* pprp) PURE;
+ };
+
+// Interface: DAODocuments
+#undef INTERFACE
+#define INTERFACE DAODocuments
+DECLARE_INTERFACE_(DAODocuments, _DAOCollection)
+ {
+ STDMETHOD(get_Item) (THIS_ VARIANT index, DAODocument FAR* FAR* ppdoc) PURE;
+ };
+
+#endif // _DBDAOINT_H_
diff --git a/public/sdk/inc/mfc42/docobj.h b/public/sdk/inc/mfc42/docobj.h
new file mode 100644
index 000000000..acda9e712
--- /dev/null
+++ b/public/sdk/inc/mfc42/docobj.h
@@ -0,0 +1,1654 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.15 */
+/* at Thu Jun 13 20:25:19 1996
+ */
+/* Compiler settings for docobj.idl:
+ Oi, W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __docobj_h__
+#define __docobj_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IOleDocument_FWD_DEFINED__
+#define __IOleDocument_FWD_DEFINED__
+typedef interface IOleDocument IOleDocument;
+#endif /* __IOleDocument_FWD_DEFINED__ */
+
+
+#ifndef __IOleDocumentSite_FWD_DEFINED__
+#define __IOleDocumentSite_FWD_DEFINED__
+typedef interface IOleDocumentSite IOleDocumentSite;
+#endif /* __IOleDocumentSite_FWD_DEFINED__ */
+
+
+#ifndef __IOleDocumentView_FWD_DEFINED__
+#define __IOleDocumentView_FWD_DEFINED__
+typedef interface IOleDocumentView IOleDocumentView;
+#endif /* __IOleDocumentView_FWD_DEFINED__ */
+
+
+#ifndef __IEnumOleDocumentViews_FWD_DEFINED__
+#define __IEnumOleDocumentViews_FWD_DEFINED__
+typedef interface IEnumOleDocumentViews IEnumOleDocumentViews;
+#endif /* __IEnumOleDocumentViews_FWD_DEFINED__ */
+
+
+#ifndef __IContinueCallback_FWD_DEFINED__
+#define __IContinueCallback_FWD_DEFINED__
+typedef interface IContinueCallback IContinueCallback;
+#endif /* __IContinueCallback_FWD_DEFINED__ */
+
+
+#ifndef __IPrint_FWD_DEFINED__
+#define __IPrint_FWD_DEFINED__
+typedef interface IPrint IPrint;
+#endif /* __IPrint_FWD_DEFINED__ */
+
+
+#ifndef __IOleCommandTarget_FWD_DEFINED__
+#define __IOleCommandTarget_FWD_DEFINED__
+typedef interface IOleCommandTarget IOleCommandTarget;
+#endif /* __IOleCommandTarget_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+#include "oleidl.h"
+#include "oaidl.h"
+#include "servprov.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright 1995-1996 Microsoft Corporation. All Rights Reserved.
+//
+// File: docobj.h
+
+#pragma comment(lib,"uuid3.lib")
+//
+//--------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////////
+// Interface Definitions
+#ifndef _LPOLEDOCUMENT_DEFINED
+#define _LPOLEDOCUMENT_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IOleDocument_INTERFACE_DEFINED__
+#define __IOleDocument_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleDocument
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleDocument __RPC_FAR *LPOLEDOCUMENT;
+
+typedef /* [public] */
+enum __MIDL_IOleDocument_0001
+ { DOCMISC_CANCREATEMULTIPLEVIEWS = 1,
+ DOCMISC_SUPPORTCOMPLEXRECTANGLES = 2,
+ DOCMISC_CANTOPENEDIT = 4,
+ DOCMISC_NOFILESUPPORT = 8
+ } DOCMISC;
+
+
+EXTERN_C const IID IID_IOleDocument;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleDocument : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateView(
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDocMiscStatus(
+ /* [out] */ DWORD __RPC_FAR *pdwStatus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumViews(
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleDocumentVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleDocument __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleDocument __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleDocument __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateView )(
+ IOleDocument __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocMiscStatus )(
+ IOleDocument __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumViews )(
+ IOleDocument __RPC_FAR * This,
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView);
+
+ END_INTERFACE
+ } IOleDocumentVtbl;
+
+ interface IOleDocument
+ {
+ CONST_VTBL struct IOleDocumentVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleDocument_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleDocument_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleDocument_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleDocument_CreateView(This,pIPSite,pstm,dwReserved,ppView) \
+ (This)->lpVtbl -> CreateView(This,pIPSite,pstm,dwReserved,ppView)
+
+#define IOleDocument_GetDocMiscStatus(This,pdwStatus) \
+ (This)->lpVtbl -> GetDocMiscStatus(This,pdwStatus)
+
+#define IOleDocument_EnumViews(This,ppEnum,ppView) \
+ (This)->lpVtbl -> EnumViews(This,ppEnum,ppView)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleDocument_CreateView_Proxy(
+ IOleDocument __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView);
+
+
+void __RPC_STUB IOleDocument_CreateView_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocument_GetDocMiscStatus_Proxy(
+ IOleDocument __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+
+void __RPC_STUB IOleDocument_GetDocMiscStatus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocument_EnumViews_Proxy(
+ IOleDocument __RPC_FAR * This,
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppView);
+
+
+void __RPC_STUB IOleDocument_EnumViews_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleDocument_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0099
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPOLEDOCUMENTSITE_DEFINED
+#define _LPOLEDOCUMENTSITE_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0099_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0099_v0_0_s_ifspec;
+
+#ifndef __IOleDocumentSite_INTERFACE_DEFINED__
+#define __IOleDocumentSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleDocumentSite
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleDocumentSite __RPC_FAR *LPOLEDOCUMENTSITE;
+
+
+EXTERN_C const IID IID_IOleDocumentSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleDocumentSite : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ActivateMe(
+ /* [in] */ IOleDocumentView __RPC_FAR *pViewToActivate) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleDocumentSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleDocumentSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleDocumentSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleDocumentSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ActivateMe )(
+ IOleDocumentSite __RPC_FAR * This,
+ /* [in] */ IOleDocumentView __RPC_FAR *pViewToActivate);
+
+ END_INTERFACE
+ } IOleDocumentSiteVtbl;
+
+ interface IOleDocumentSite
+ {
+ CONST_VTBL struct IOleDocumentSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleDocumentSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleDocumentSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleDocumentSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleDocumentSite_ActivateMe(This,pViewToActivate) \
+ (This)->lpVtbl -> ActivateMe(This,pViewToActivate)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentSite_ActivateMe_Proxy(
+ IOleDocumentSite __RPC_FAR * This,
+ /* [in] */ IOleDocumentView __RPC_FAR *pViewToActivate);
+
+
+void __RPC_STUB IOleDocumentSite_ActivateMe_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleDocumentSite_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0100
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPOLEDOCUMENTVIEW_DEFINED
+#define _LPOLEDOCUMENTVIEW_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0100_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0100_v0_0_s_ifspec;
+
+#ifndef __IOleDocumentView_INTERFACE_DEFINED__
+#define __IOleDocumentView_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleDocumentView
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleDocumentView __RPC_FAR *LPOLEDOCUMENTVIEW;
+
+
+EXTERN_C const IID IID_IOleDocumentView;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleDocumentView : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetInPlaceSite(
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetInPlaceSite(
+ /* [out] */ IOleInPlaceSite __RPC_FAR *__RPC_FAR *ppIPSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDocument(
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetRect(
+ /* [in] */ LPRECT prcView) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRect(
+ /* [out] */ LPRECT prcView) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetRectComplex(
+ /* [unique][in] */ LPRECT prcView,
+ /* [unique][in] */ LPRECT prcHScroll,
+ /* [unique][in] */ LPRECT prcVScroll,
+ /* [unique][in] */ LPRECT prcSizeBox) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Show(
+ /* [in] */ BOOL fShow) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UIActivate(
+ /* [in] */ BOOL fUIActivate) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Open( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CloseView(
+ DWORD dwReserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveViewState(
+ /* [in] */ LPSTREAM pstm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ApplyViewState(
+ /* [in] */ LPSTREAM pstm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [in] */ IOleInPlaceSite __RPC_FAR *pIPSiteNew,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppViewNew) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleDocumentViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleDocumentView __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleDocumentView __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetInPlaceSite )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetInPlaceSite )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ IOleInPlaceSite __RPC_FAR *__RPC_FAR *ppIPSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocument )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetRect )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPRECT prcView);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRect )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ LPRECT prcView);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetRectComplex )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [unique][in] */ LPRECT prcView,
+ /* [unique][in] */ LPRECT prcHScroll,
+ /* [unique][in] */ LPRECT prcVScroll,
+ /* [unique][in] */ LPRECT prcSizeBox);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Show )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ BOOL fShow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UIActivate )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ BOOL fUIActivate);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Open )(
+ IOleDocumentView __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CloseView )(
+ IOleDocumentView __RPC_FAR * This,
+ DWORD dwReserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveViewState )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPSTREAM pstm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ApplyViewState )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPSTREAM pstm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ IOleInPlaceSite __RPC_FAR *pIPSiteNew,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppViewNew);
+
+ END_INTERFACE
+ } IOleDocumentViewVtbl;
+
+ interface IOleDocumentView
+ {
+ CONST_VTBL struct IOleDocumentViewVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleDocumentView_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleDocumentView_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleDocumentView_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleDocumentView_SetInPlaceSite(This,pIPSite) \
+ (This)->lpVtbl -> SetInPlaceSite(This,pIPSite)
+
+#define IOleDocumentView_GetInPlaceSite(This,ppIPSite) \
+ (This)->lpVtbl -> GetInPlaceSite(This,ppIPSite)
+
+#define IOleDocumentView_GetDocument(This,ppunk) \
+ (This)->lpVtbl -> GetDocument(This,ppunk)
+
+#define IOleDocumentView_SetRect(This,prcView) \
+ (This)->lpVtbl -> SetRect(This,prcView)
+
+#define IOleDocumentView_GetRect(This,prcView) \
+ (This)->lpVtbl -> GetRect(This,prcView)
+
+#define IOleDocumentView_SetRectComplex(This,prcView,prcHScroll,prcVScroll,prcSizeBox) \
+ (This)->lpVtbl -> SetRectComplex(This,prcView,prcHScroll,prcVScroll,prcSizeBox)
+
+#define IOleDocumentView_Show(This,fShow) \
+ (This)->lpVtbl -> Show(This,fShow)
+
+#define IOleDocumentView_UIActivate(This,fUIActivate) \
+ (This)->lpVtbl -> UIActivate(This,fUIActivate)
+
+#define IOleDocumentView_Open(This) \
+ (This)->lpVtbl -> Open(This)
+
+#define IOleDocumentView_CloseView(This,dwReserved) \
+ (This)->lpVtbl -> CloseView(This,dwReserved)
+
+#define IOleDocumentView_SaveViewState(This,pstm) \
+ (This)->lpVtbl -> SaveViewState(This,pstm)
+
+#define IOleDocumentView_ApplyViewState(This,pstm) \
+ (This)->lpVtbl -> ApplyViewState(This,pstm)
+
+#define IOleDocumentView_Clone(This,pIPSiteNew,ppViewNew) \
+ (This)->lpVtbl -> Clone(This,pIPSiteNew,ppViewNew)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_SetInPlaceSite_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceSite __RPC_FAR *pIPSite);
+
+
+void __RPC_STUB IOleDocumentView_SetInPlaceSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_GetInPlaceSite_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ IOleInPlaceSite __RPC_FAR *__RPC_FAR *ppIPSite);
+
+
+void __RPC_STUB IOleDocumentView_GetInPlaceSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_GetDocument_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+
+void __RPC_STUB IOleDocumentView_GetDocument_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleDocumentView_SetRect_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPRECT prcView);
+
+
+void __RPC_STUB IOleDocumentView_SetRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_GetRect_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [out] */ LPRECT prcView);
+
+
+void __RPC_STUB IOleDocumentView_GetRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleDocumentView_SetRectComplex_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [unique][in] */ LPRECT prcView,
+ /* [unique][in] */ LPRECT prcHScroll,
+ /* [unique][in] */ LPRECT prcVScroll,
+ /* [unique][in] */ LPRECT prcSizeBox);
+
+
+void __RPC_STUB IOleDocumentView_SetRectComplex_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_Show_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ BOOL fShow);
+
+
+void __RPC_STUB IOleDocumentView_Show_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_UIActivate_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ BOOL fUIActivate);
+
+
+void __RPC_STUB IOleDocumentView_UIActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_Open_Proxy(
+ IOleDocumentView __RPC_FAR * This);
+
+
+void __RPC_STUB IOleDocumentView_Open_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_CloseView_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ DWORD dwReserved);
+
+
+void __RPC_STUB IOleDocumentView_CloseView_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_SaveViewState_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPSTREAM pstm);
+
+
+void __RPC_STUB IOleDocumentView_SaveViewState_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_ApplyViewState_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ LPSTREAM pstm);
+
+
+void __RPC_STUB IOleDocumentView_ApplyViewState_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleDocumentView_Clone_Proxy(
+ IOleDocumentView __RPC_FAR * This,
+ /* [in] */ IOleInPlaceSite __RPC_FAR *pIPSiteNew,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *ppViewNew);
+
+
+void __RPC_STUB IOleDocumentView_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleDocumentView_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0101
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPENUMOLEDOCUMENTVIEWS_DEFINED
+#define _LPENUMOLEDOCUMENTVIEWS_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0101_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0101_v0_0_s_ifspec;
+
+#ifndef __IEnumOleDocumentViews_INTERFACE_DEFINED__
+#define __IEnumOleDocumentViews_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumOleDocumentViews
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumOleDocumentViews __RPC_FAR *LPENUMOLEDOCUMENTVIEWS;
+
+
+EXTERN_C const IID IID_IEnumOleDocumentViews;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumOleDocumentViews : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT __stdcall Next(
+ /* [in] */ ULONG cViews,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *rgpView,
+ /* [out] */ ULONG __RPC_FAR *pcFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG cViews) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumOleDocumentViewsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumOleDocumentViews __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumOleDocumentViews __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *Next )(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *rgpView,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumOleDocumentViews __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum);
+
+ END_INTERFACE
+ } IEnumOleDocumentViewsVtbl;
+
+ interface IEnumOleDocumentViews
+ {
+ CONST_VTBL struct IEnumOleDocumentViewsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumOleDocumentViews_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumOleDocumentViews_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumOleDocumentViews_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumOleDocumentViews_Next(This,cViews,rgpView,pcFetched) \
+ (This)->lpVtbl -> Next(This,cViews,rgpView,pcFetched)
+
+#define IEnumOleDocumentViews_Skip(This,cViews) \
+ (This)->lpVtbl -> Skip(This,cViews)
+
+#define IEnumOleDocumentViews_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumOleDocumentViews_Clone(This,ppEnum) \
+ (This)->lpVtbl -> Clone(This,ppEnum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT __stdcall IEnumOleDocumentViews_RemoteNext_Proxy(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews,
+ /* [length_is][size_is][out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *rgpView,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+
+void __RPC_STUB IEnumOleDocumentViews_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOleDocumentViews_Skip_Proxy(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews);
+
+
+void __RPC_STUB IEnumOleDocumentViews_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOleDocumentViews_Reset_Proxy(
+ IEnumOleDocumentViews __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumOleDocumentViews_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOleDocumentViews_Clone_Proxy(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [out] */ IEnumOleDocumentViews __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IEnumOleDocumentViews_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumOleDocumentViews_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0102
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPCONTINUECALLBACK_DEFINED
+#define _LPCONTINUECALLBACK_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0102_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0102_v0_0_s_ifspec;
+
+#ifndef __IContinueCallback_INTERFACE_DEFINED__
+#define __IContinueCallback_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IContinueCallback
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IContinueCallback __RPC_FAR *LPCONTINUECALLBACK;
+
+
+EXTERN_C const IID IID_IContinueCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IContinueCallback : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE FContinue( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FContinuePrinting(
+ /* [in] */ LONG nCntPrinted,
+ /* [in] */ LONG nCurPage,
+ /* [unique][in] */ wchar_t __RPC_FAR *pwszPrintStatus) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IContinueCallbackVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IContinueCallback __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IContinueCallback __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IContinueCallback __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FContinue )(
+ IContinueCallback __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FContinuePrinting )(
+ IContinueCallback __RPC_FAR * This,
+ /* [in] */ LONG nCntPrinted,
+ /* [in] */ LONG nCurPage,
+ /* [unique][in] */ wchar_t __RPC_FAR *pwszPrintStatus);
+
+ END_INTERFACE
+ } IContinueCallbackVtbl;
+
+ interface IContinueCallback
+ {
+ CONST_VTBL struct IContinueCallbackVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IContinueCallback_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IContinueCallback_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IContinueCallback_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IContinueCallback_FContinue(This) \
+ (This)->lpVtbl -> FContinue(This)
+
+#define IContinueCallback_FContinuePrinting(This,nCntPrinted,nCurPage,pwszPrintStatus) \
+ (This)->lpVtbl -> FContinuePrinting(This,nCntPrinted,nCurPage,pwszPrintStatus)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IContinueCallback_FContinue_Proxy(
+ IContinueCallback __RPC_FAR * This);
+
+
+void __RPC_STUB IContinueCallback_FContinue_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IContinueCallback_FContinuePrinting_Proxy(
+ IContinueCallback __RPC_FAR * This,
+ /* [in] */ LONG nCntPrinted,
+ /* [in] */ LONG nCurPage,
+ /* [unique][in] */ wchar_t __RPC_FAR *pwszPrintStatus);
+
+
+void __RPC_STUB IContinueCallback_FContinuePrinting_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IContinueCallback_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0103
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPPRINT_DEFINED
+#define _LPPRINT_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0103_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0103_v0_0_s_ifspec;
+
+#ifndef __IPrint_INTERFACE_DEFINED__
+#define __IPrint_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPrint
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPrint __RPC_FAR *LPPRINT;
+
+typedef /* [public] */
+enum __MIDL_IPrint_0001
+ { PRINTFLAG_MAYBOTHERUSER = 1,
+ PRINTFLAG_PROMPTUSER = 2,
+ PRINTFLAG_USERMAYCHANGEPRINTER = 4,
+ PRINTFLAG_RECOMPOSETODEVICE = 8,
+ PRINTFLAG_DONTACTUALLYPRINT = 16,
+ PRINTFLAG_FORCEPROPERTIES = 32,
+ PRINTFLAG_PRINTTOFILE = 64
+ } PRINTFLAG;
+
+typedef struct tagPAGERANGE
+ {
+ LONG nFromPage;
+ LONG nToPage;
+ } PAGERANGE;
+
+typedef struct tagPAGESET
+ {
+ ULONG cbStruct;
+ BOOL fOddPages;
+ BOOL fEvenPages;
+ ULONG cPageRange;
+ /* [size_is] */ PAGERANGE rgPages[ 1 ];
+ } PAGESET;
+
+#define PAGESET_TOLASTPAGE ((WORD)(-1L))
+
+EXTERN_C const IID IID_IPrint;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPrint : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetInitialPageNum(
+ /* [in] */ LONG nFirstPage) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPageInfo(
+ /* [out] */ LONG __RPC_FAR *pnFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPages) = 0;
+
+ virtual /* [local] */ HRESULT __stdcall Print(
+ /* [in] */ DWORD grfFlags,
+ /* [out][in] */ DVTARGETDEVICE __RPC_FAR *__RPC_FAR *pptd,
+ /* [out][in] */ PAGESET __RPC_FAR *__RPC_FAR *ppPageSet,
+ /* [unique][out][in] */ STGMEDIUM __RPC_FAR *pstgmOptions,
+ /* [in] */ IContinueCallback __RPC_FAR *pcallback,
+ /* [in] */ LONG nFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPagesPrinted,
+ /* [out] */ LONG __RPC_FAR *pnLastPage) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPrintVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPrint __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPrint __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPrint __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetInitialPageNum )(
+ IPrint __RPC_FAR * This,
+ /* [in] */ LONG nFirstPage);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPageInfo )(
+ IPrint __RPC_FAR * This,
+ /* [out] */ LONG __RPC_FAR *pnFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPages);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *Print )(
+ IPrint __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out][in] */ DVTARGETDEVICE __RPC_FAR *__RPC_FAR *pptd,
+ /* [out][in] */ PAGESET __RPC_FAR *__RPC_FAR *ppPageSet,
+ /* [unique][out][in] */ STGMEDIUM __RPC_FAR *pstgmOptions,
+ /* [in] */ IContinueCallback __RPC_FAR *pcallback,
+ /* [in] */ LONG nFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPagesPrinted,
+ /* [out] */ LONG __RPC_FAR *pnLastPage);
+
+ END_INTERFACE
+ } IPrintVtbl;
+
+ interface IPrint
+ {
+ CONST_VTBL struct IPrintVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPrint_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPrint_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPrint_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPrint_SetInitialPageNum(This,nFirstPage) \
+ (This)->lpVtbl -> SetInitialPageNum(This,nFirstPage)
+
+#define IPrint_GetPageInfo(This,pnFirstPage,pcPages) \
+ (This)->lpVtbl -> GetPageInfo(This,pnFirstPage,pcPages)
+
+#define IPrint_Print(This,grfFlags,pptd,ppPageSet,pstgmOptions,pcallback,nFirstPage,pcPagesPrinted,pnLastPage) \
+ (This)->lpVtbl -> Print(This,grfFlags,pptd,ppPageSet,pstgmOptions,pcallback,nFirstPage,pcPagesPrinted,pnLastPage)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPrint_SetInitialPageNum_Proxy(
+ IPrint __RPC_FAR * This,
+ /* [in] */ LONG nFirstPage);
+
+
+void __RPC_STUB IPrint_SetInitialPageNum_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPrint_GetPageInfo_Proxy(
+ IPrint __RPC_FAR * This,
+ /* [out] */ LONG __RPC_FAR *pnFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPages);
+
+
+void __RPC_STUB IPrint_GetPageInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT __stdcall IPrint_RemotePrint_Proxy(
+ IPrint __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out][in] */ DVTARGETDEVICE __RPC_FAR *__RPC_FAR *pptd,
+ /* [out][in] */ PAGESET __RPC_FAR *__RPC_FAR *pppageset,
+ /* [unique][out][in] */ RemSTGMEDIUM __RPC_FAR *pstgmOptions,
+ /* [in] */ IContinueCallback __RPC_FAR *pcallback,
+ /* [in] */ LONG nFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPagesPrinted,
+ /* [out] */ LONG __RPC_FAR *pnLastPage);
+
+
+void __RPC_STUB IPrint_RemotePrint_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPrint_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0104
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPOLECOMMANDTARGET_DEFINED
+#define _LPOLECOMMANDTARGET_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0104_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0104_v0_0_s_ifspec;
+
+#ifndef __IOleCommandTarget_INTERFACE_DEFINED__
+#define __IOleCommandTarget_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleCommandTarget
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleCommandTarget __RPC_FAR *LPOLECOMMANDTARGET;
+
+typedef /* [public] */
+enum __MIDL_IOleCommandTarget_0001
+ { OLECMDF_SUPPORTED = 0x1,
+ OLECMDF_ENABLED = 0x2,
+ OLECMDF_LATCHED = 0x4,
+ OLECMDF_NINCHED = 0x8
+ } OLECMDF;
+
+typedef struct _tagOLECMD
+ {
+ ULONG cmdID;
+ DWORD cmdf;
+ } OLECMD;
+
+typedef struct _tagOLECMDTEXT
+ {
+ DWORD cmdtextf;
+ ULONG cwActual;
+ ULONG cwBuf;
+ /* [size_is] */ wchar_t rgwz[ 1 ];
+ } OLECMDTEXT;
+
+typedef /* [public] */
+enum __MIDL_IOleCommandTarget_0002
+ { OLECMDTEXTF_NONE = 0,
+ OLECMDTEXTF_NAME = 1,
+ OLECMDTEXTF_STATUS = 2
+ } OLECMDTEXTF;
+
+typedef /* [public] */
+enum __MIDL_IOleCommandTarget_0003
+ { OLECMDEXECOPT_DODEFAULT = 0,
+ OLECMDEXECOPT_PROMPTUSER = 1,
+ OLECMDEXECOPT_DONTPROMPTUSER = 2,
+ OLECMDEXECOPT_SHOWHELP = 3
+ } OLECMDEXECOPT;
+
+typedef /* [public] */
+enum __MIDL_IOleCommandTarget_0004
+ { OLECMDID_OPEN = 1,
+ OLECMDID_NEW = 2,
+ OLECMDID_SAVE = 3,
+ OLECMDID_SAVEAS = 4,
+ OLECMDID_SAVECOPYAS = 5,
+ OLECMDID_PRINT = 6,
+ OLECMDID_PRINTPREVIEW = 7,
+ OLECMDID_PAGESETUP = 8,
+ OLECMDID_SPELL = 9,
+ OLECMDID_PROPERTIES = 10,
+ OLECMDID_CUT = 11,
+ OLECMDID_COPY = 12,
+ OLECMDID_PASTE = 13,
+ OLECMDID_PASTESPECIAL = 14,
+ OLECMDID_UNDO = 15,
+ OLECMDID_REDO = 16,
+ OLECMDID_SELECTALL = 17,
+ OLECMDID_CLEARSELECTION = 18,
+ OLECMDID_ZOOM = 19,
+ OLECMDID_GETZOOMRANGE = 20,
+ OLECMDID_UPDATECOMMANDS = 21,
+ OLECMDID_REFRESH = 22,
+ OLECMDID_STOP = 23,
+ OLECMDID_HIDETOOLBARS = 24,
+ OLECMDID_SETPROGRESSMAX = 25,
+ OLECMDID_SETPROGRESSPOS = 26,
+ OLECMDID_SETPROGRESSTEXT = 27,
+ OLECMDID_SETTITLE = 28,
+ OLECMDID_SETDOWNLOADSTATE = 29
+ } OLECMDID;
+
+#define OLECMDERR_E_FIRST (OLE_E_LAST+1)
+#define OLECMDERR_E_NOTSUPPORTED (OLECMDERR_E_FIRST)
+#define OLECMDERR_E_DISABLED (OLECMDERR_E_FIRST+1)
+#define OLECMDERR_E_NOHELP (OLECMDERR_E_FIRST+2)
+#define OLECMDERR_E_CANCELED (OLECMDERR_E_FIRST+3)
+#define OLECMDERR_E_UNKNOWNGROUP (OLECMDERR_E_FIRST+4)
+#define MSOCMDERR_E_FIRST OLECMDERR_E_FIRST
+#define MSOCMDERR_E_NOTSUPPORTED OLECMDERR_E_NOTSUPPORTED
+#define MSOCMDERR_E_DISABLED OLECMDERR_E_DISABLED
+#define MSOCMDERR_E_NOHELP OLECMDERR_E_NOHELP
+#define MSOCMDERR_E_CANCELED OLECMDERR_E_CANCELED
+#define MSOCMDERR_E_UNKNOWNGROUP OLECMDERR_E_UNKNOWNGROUP
+
+EXTERN_C const IID IID_IOleCommandTarget;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleCommandTarget : public IUnknown
+ {
+ public:
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE QueryStatus(
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ ULONG cCmds,
+ /* [out][in][size_is] */ OLECMD __RPC_FAR prgCmds[ ],
+ /* [unique][out][in] */ OLECMDTEXT __RPC_FAR *pCmdText) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Exec(
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ DWORD nCmdID,
+ /* [in] */ DWORD nCmdexecopt,
+ /* [unique][in] */ VARIANTARG __RPC_FAR *pvaIn,
+ /* [unique][out][in] */ VARIANTARG __RPC_FAR *pvaOut) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleCommandTargetVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleCommandTarget __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleCommandTarget __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleCommandTarget __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryStatus )(
+ IOleCommandTarget __RPC_FAR * This,
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ ULONG cCmds,
+ /* [out][in][size_is] */ OLECMD __RPC_FAR prgCmds[ ],
+ /* [unique][out][in] */ OLECMDTEXT __RPC_FAR *pCmdText);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Exec )(
+ IOleCommandTarget __RPC_FAR * This,
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ DWORD nCmdID,
+ /* [in] */ DWORD nCmdexecopt,
+ /* [unique][in] */ VARIANTARG __RPC_FAR *pvaIn,
+ /* [unique][out][in] */ VARIANTARG __RPC_FAR *pvaOut);
+
+ END_INTERFACE
+ } IOleCommandTargetVtbl;
+
+ interface IOleCommandTarget
+ {
+ CONST_VTBL struct IOleCommandTargetVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleCommandTarget_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleCommandTarget_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleCommandTarget_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleCommandTarget_QueryStatus(This,pguidCmdGroup,cCmds,prgCmds,pCmdText) \
+ (This)->lpVtbl -> QueryStatus(This,pguidCmdGroup,cCmds,prgCmds,pCmdText)
+
+#define IOleCommandTarget_Exec(This,pguidCmdGroup,nCmdID,nCmdexecopt,pvaIn,pvaOut) \
+ (This)->lpVtbl -> Exec(This,pguidCmdGroup,nCmdID,nCmdexecopt,pvaIn,pvaOut)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleCommandTarget_QueryStatus_Proxy(
+ IOleCommandTarget __RPC_FAR * This,
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ ULONG cCmds,
+ /* [out][in][size_is] */ OLECMD __RPC_FAR prgCmds[ ],
+ /* [unique][out][in] */ OLECMDTEXT __RPC_FAR *pCmdText);
+
+
+void __RPC_STUB IOleCommandTarget_QueryStatus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCommandTarget_Exec_Proxy(
+ IOleCommandTarget __RPC_FAR * This,
+ /* [unique][in] */ const GUID __RPC_FAR *pguidCmdGroup,
+ /* [in] */ DWORD nCmdID,
+ /* [in] */ DWORD nCmdexecopt,
+ /* [unique][in] */ VARIANTARG __RPC_FAR *pvaIn,
+ /* [unique][out][in] */ VARIANTARG __RPC_FAR *pvaOut);
+
+
+void __RPC_STUB IOleCommandTarget_Exec_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleCommandTarget_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0105
+ * at Thu Jun 13 20:25:19 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+
+////////////////////////////////////////////////////////////////////////////
+// Aliases to original office-compatible names
+#define IMsoDocument IOleDocument
+#define IMsoDocumentSite IOleDocumentSite
+#define IMsoView IOleDocumentView
+#define IEnumMsoView IEnumOleDocumentViews
+#define IMsoCommandTarget IOleCommandTarget
+#define LPMSODOCUMENT LPOLEDOCUMENT
+#define LPMSODOCUMENTSITE LPOLEDOCUMENTSITE
+#define LPMSOVIEW LPOLEDOCUMENTVIEW
+#define LPENUMMSOVIEW LPENUMOLEDOCUMENTVIEWS
+#define LPMSOCOMMANDTARGET LPOLECOMMANDTARGET
+#define MSOCMD OLECMD
+#define MSOCMDTEXT OLECMDTEXT
+#define IID_IMsoDocument IID_IOleDocument
+#define IID_IMsoDocumentSite IID_IOleDocumentSite
+#define IID_IMsoView IID_IOleDocumentView
+#define IID_IEnumMsoView IID_IEnumOleDocumentViews
+#define IID_IMsoCommandTarget IID_IOleCommandTarget
+#define MSOCMDF_SUPPORTED OLECMDF_SUPPORTED
+#define MSOCMDF_ENABLED OLECMDF_ENABLED
+#define MSOCMDF_LATCHED OLECMDF_LATCHED
+#define MSOCMDF_NINCHED OLECMDF_NINCHED
+#define MSOCMDTEXTF_NONE OLECMDTEXTF_NONE
+#define MSOCMDTEXTF_NAME OLECMDTEXTF_NAME
+#define MSOCMDTEXTF_STATUS OLECMDTEXTF_STATUS
+#define MSOCMDEXECOPT_DODEFAULT OLECMDEXECOPT_DODEFAULT
+#define MSOCMDEXECOPT_PROMPTUSER OLECMDEXECOPT_PROMPTUSER
+#define MSOCMDEXECOPT_DONTPROMPTUSER OLECMDEXECOPT_DONTPROMPTUSER
+#define MSOCMDEXECOPT_SHOWHELP OLECMDEXECOPT_SHOWHELP
+#define MSOCMDID_OPEN OLECMDID_OPEN
+#define MSOCMDID_NEW OLECMDID_NEW
+#define MSOCMDID_SAVE OLECMDID_SAVE
+#define MSOCMDID_SAVEAS OLECMDID_SAVEAS
+#define MSOCMDID_SAVECOPYAS OLECMDID_SAVECOPYAS
+#define MSOCMDID_PRINT OLECMDID_PRINT
+#define MSOCMDID_PRINTPREVIEW OLECMDID_PRINTPREVIEW
+#define MSOCMDID_PAGESETUP OLECMDID_PAGESETUP
+#define MSOCMDID_SPELL OLECMDID_SPELL
+#define MSOCMDID_PROPERTIES OLECMDID_PROPERTIES
+#define MSOCMDID_CUT OLECMDID_CUT
+#define MSOCMDID_COPY OLECMDID_COPY
+#define MSOCMDID_PASTE OLECMDID_PASTE
+#define MSOCMDID_PASTESPECIAL OLECMDID_PASTESPECIAL
+#define MSOCMDID_UNDO OLECMDID_UNDO
+#define MSOCMDID_REDO OLECMDID_REDO
+#define MSOCMDID_SELECTALL OLECMDID_SELECTALL
+#define MSOCMDID_CLEARSELECTION OLECMDID_CLEARSELECTION
+#define MSOCMDID_ZOOM OLECMDID_ZOOM
+#define MSOCMDID_GETZOOMRANGE OLECMDID_GETZOOMRANGE
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0105_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0105_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * );
+
+unsigned long __RPC_USER VARIANT_UserSize( unsigned long __RPC_FAR *, unsigned long , VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+void __RPC_USER VARIANT_UserFree( unsigned long __RPC_FAR *, VARIANT __RPC_FAR * );
+
+/* [local] */ HRESULT __stdcall IEnumOleDocumentViews_Next_Proxy(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews,
+ /* [out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *rgpView,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+
+/* [call_as] */ HRESULT __stdcall IEnumOleDocumentViews_Next_Stub(
+ IEnumOleDocumentViews __RPC_FAR * This,
+ /* [in] */ ULONG cViews,
+ /* [length_is][size_is][out] */ IOleDocumentView __RPC_FAR *__RPC_FAR *rgpView,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+/* [local] */ HRESULT __stdcall IPrint_Print_Proxy(
+ IPrint __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out][in] */ DVTARGETDEVICE __RPC_FAR *__RPC_FAR *pptd,
+ /* [out][in] */ PAGESET __RPC_FAR *__RPC_FAR *ppPageSet,
+ /* [unique][out][in] */ STGMEDIUM __RPC_FAR *pstgmOptions,
+ /* [in] */ IContinueCallback __RPC_FAR *pcallback,
+ /* [in] */ LONG nFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPagesPrinted,
+ /* [out] */ LONG __RPC_FAR *pnLastPage);
+
+
+/* [call_as] */ HRESULT __stdcall IPrint_Print_Stub(
+ IPrint __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out][in] */ DVTARGETDEVICE __RPC_FAR *__RPC_FAR *pptd,
+ /* [out][in] */ PAGESET __RPC_FAR *__RPC_FAR *pppageset,
+ /* [unique][out][in] */ RemSTGMEDIUM __RPC_FAR *pstgmOptions,
+ /* [in] */ IContinueCallback __RPC_FAR *pcallback,
+ /* [in] */ LONG nFirstPage,
+ /* [out] */ LONG __RPC_FAR *pcPagesPrinted,
+ /* [out] */ LONG __RPC_FAR *pnLastPage);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/mfc42/idispids.h b/public/sdk/inc/mfc42/idispids.h
new file mode 100644
index 000000000..0d6637c1c
--- /dev/null
+++ b/public/sdk/inc/mfc42/idispids.h
@@ -0,0 +1,12 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright 1995 - 1996 Microsoft Corporation. All Rights Reserved.
+//
+// File: idispids.h
+//
+//--------------------------------------------------------------------------
+
+#define DISPID_READYSTATE (-525)
+#define DISPID_READYSTATECHANGE (-609)
+#define DISPID_AMBIENT_TRANSFERPRIORITY (-728)
diff --git a/public/sdk/inc/mfc42/l.chs/afxctl.rc b/public/sdk/inc/mfc42/l.chs/afxctl.rc
new file mode 100644
index 000000000..69ab2c204
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌØÐÔÃû(&N)",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "×ÖÌå(&F)",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "×ÖÐÎ(&Y)",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "´óС(&S)",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Ч¹û",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "ɾ³ýÏß(&K)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "Ï»®Ïß(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "×ÖÌå·¶Àý",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌØÐÔÃû(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "ϵͳÑÕÉ«(&C)",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "ÌØÐÔÃû(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ä¯ÀÀ(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "Çå³ý(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Ô¤ÔÄ:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(δ֪)"
+ AFX_IDS_COLOR_DESKTOP "̨ʽ"
+ AFX_IDS_COLOR_APPWORKSPACE "Ó¦ÓóÌÐò¹¤×÷Çø"
+ AFX_IDS_COLOR_WNDBACKGND "´°¿Ú±³¾°"
+ AFX_IDS_COLOR_WNDTEXT "´°¿ÚÎı¾"
+ AFX_IDS_COLOR_MENUBAR "²Ëµ¥À¸"
+ AFX_IDS_COLOR_MENUTEXT "²Ëµ¥ÎÄ×Ö"
+ AFX_IDS_COLOR_ACTIVEBAR "»î¶¯µÄ±êÌâÀ¸"
+ AFX_IDS_COLOR_INACTIVEBAR "²»»î¶¯µÄ±êÌâÀ¸"
+ AFX_IDS_COLOR_ACTIVETEXT "»î¶¯µÄ±êÌâÀ¸ÎÄ×Ö"
+ AFX_IDS_COLOR_INACTIVETEXT "²»»î¶¯µÄ±êÌâÀ¸ÎÄ×Ö"
+ AFX_IDS_COLOR_ACTIVEBORDER "»î¶¯±ß¿ò"
+ AFX_IDS_COLOR_INACTIVEBORDER "²»»î¶¯±ß¿ò"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "´°¿Ú¿ò¼Ü"
+ AFX_IDS_COLOR_SCROLLBARS "¾í¶¯Ìõ"
+ AFX_IDS_COLOR_BTNFACE "°´Å¥±íÃæ"
+ AFX_IDS_COLOR_BTNSHADOW "°´Å¥ÒõÓ°"
+ AFX_IDS_COLOR_BTNTEXT "°´Å¥ÎÄ×Ö"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "°´Å¥Í»³ö"
+ AFX_IDS_COLOR_DISABLEDTEXT "ʧЧÎÄ×Ö"
+ AFX_IDS_COLOR_HIGHLIGHT "Í»³ö"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Í»³öµÄÎÄ×Ö"
+ AFX_IDS_REGULAR "Õý³£Ìå"
+ AFX_IDS_BOLD "ºÚÌå"
+ AFX_IDS_ITALIC "бÌå"
+ AFX_IDS_BOLDITALIC "ºÚбÌå"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(×ÖÌå)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(ÑÕÉ«)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(ͼƬ - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "δ֪"
+ AFX_IDS_PICTYPE_NONE "ÎÞ"
+ AFX_IDS_PICTYPE_BITMAP "λͼ"
+ AFX_IDS_PICTYPE_METAFILE "ÔªÎļþ"
+ AFX_IDS_PICTYPE_ICON "ͼ±ê"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "ÑÕÉ«ÌØÐÔÒ³"
+ AFX_IDS_COLOR_PPG_CAPTION "ÑÕÉ«"
+ AFX_IDS_FONT_PPG "×ÖÌåÌØÐÔÒ³"
+ AFX_IDS_FONT_PPG_CAPTION "×ÖÌå"
+ AFX_IDS_PICTURE_PPG "ͼƬÌØÐÔÒ³"
+ AFX_IDS_PICTURE_PPG_CAPTION "ͼƬ"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - ÎÞ"
+ AFX_IDS_BORDERSTYLE_1 "1 - ¹Ì¶¨µ¥¸ö"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "±à¼­(&E)"
+ AFX_IDS_VERB_PROPERTIES "ÌØÐÔ(&P)..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "ÎÞ·¨´ò¿ªÍ¼Æ¬Îļþ %1¡£´ËÎļþ¿ÉÄܲ»´æÔÚ»ò²»¿É¶Á¡£"
+ AFX_IDP_PICTURECANTLOAD "ÎÞ·¨×°ÈëͼƬÎļþ %1¡£¸ÃÎļþ¿ÉÄܸñʽ²»ÕýÈ·¡£"
+ AFX_IDP_PICTURETOOLARGE "ÎÞ·¨×°ÈëͼƬÎļþ %1¡£¸ÃÎļþÌ«´óÄÚ´æÎÞ·¨ÈÝÄÉ¡£"
+ AFX_IDP_PICTUREREADFAILED
+ "ÎÞ·¨×°ÈëͼƬÎļþ %1¡£Î´Óè¾ßÌå˵Ã÷µÄ¶Á²Ù×÷ʧ°Ü¡£"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "ä¯ÀÀͼƬ"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "·Ç·¨º¯Êýµ÷ÓÃ"
+ AFX_IDP_E_OVERFLOW "Òç³ö"
+ AFX_IDP_E_OUTOFMEMORY "ÄÚ´æ²»×ã"
+ AFX_IDP_E_DIVISIONBYZERO "±»Áã³ý"
+ AFX_IDP_E_OUTOFSTRINGSPACE "×Ö·û´®¿Õ¼ä²»×ã"
+ AFX_IDP_E_OUTOFSTACKSPACE "¶ÑÕ»¿Õ¼ä²»×ã"
+ AFX_IDP_E_BADFILENAMEORNUMBER "ÎļþÃû»òÎļþºÅ´í"
+ AFX_IDP_E_FILENOTFOUND "ÎļþδÕÒµ½"
+ AFX_IDP_E_BADFILEMODE "Îļþģʽ´í"
+ AFX_IDP_E_FILEALREADYOPEN "ÎļþÒѾ­´ò¿ª"
+ AFX_IDP_E_DEVICEIOERROR "É豸ÊäÈë/Êä³ö³ö´í"
+ AFX_IDP_E_FILEALREADYEXISTS "ÎļþÒѾ­´æÔÚ"
+ AFX_IDP_E_BADRECORDLENGTH "¼Ç¼³¤¶È´í"
+ AFX_IDP_E_DISKFULL "´ÅÅÌÒÑÂú"
+ AFX_IDP_E_BADRECORDNUMBER "¼Ç¼ºÅÂë´í"
+ AFX_IDP_E_BADFILENAME "ÎļþÃû´í"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "ÎļþÌ«¶à"
+ AFX_IDP_E_DEVICEUNAVAILABLE "É豸²»ÊʺÏ"
+ AFX_IDP_E_PERMISSIONDENIED "δ»ñµÃÐí¿É"
+ AFX_IDP_E_DISKNOTREADY "´ÅÅÌδ׼±¸ºÃ"
+ AFX_IDP_E_PATHFILEACCESSERROR "·¾¶/Îļþ·ÃÎÊ´íÎó"
+ AFX_IDP_E_PATHNOTFOUND "ûÓÐÕÒµ½Â·¾¶"
+ AFX_IDP_E_INVALIDPATTERNSTRING "ÎÞЧµÄ×Ö·û´®ÐÍÑù"
+ AFX_IDP_E_INVALIDUSEOFNULL "¿ÕֵʹÓò»µ±"
+ AFX_IDP_E_INVALIDFILEFORMAT "ÎÞЧµÄÎļþ¸ñʽ"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "ÎÞЧµÄÌØÐÔÖµ"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "ÎÞЧµÄÊý×éϱê"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "¸ÃÌØÐÔÔÚÔËÐÐʱ¿Ì²»ÄÜÉèÖÃ"
+ AFX_IDP_E_SETNOTSUPPORTED "¸ÃÌØÐÔΪֻ¶ÁÌØÐÔ"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "ʹÓÃÌØÐÔÊý×éʱ±ØÐëÖ¸Ã÷Êý×éϱê"
+ AFX_IDP_E_SETNOTPERMITTED "²»¿ÉÔÚÕâ¸ö¿ØÖÆÉÏÉèÖÃÌØÐÔ"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "¸ÃÌØÐÔ²»¿ÉÔÚÔËÐÐʱ¿Ì¶ÁÈ¡"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "¸ÃÌØÐÔΪֻдÌØÐÔ"
+ AFX_IDP_E_PROPERTYNOTFOUND "ûÓÐÕÒµ½ÌØÐÔ"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "ÎÞЧµÄ¼ôÌù°å¸ñʽ"
+ AFX_IDP_E_INVALIDPICTURE "ÎÞЧͼƬ"
+ AFX_IDP_E_PRINTERERROR "´òÓ¡»ú³ö´í"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "ÎÞ·¨´´½¨´æÖü¹ý³ÌËùÐèÒªµÄÁÙʱÎļþ"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "ûÓÐÕÒµ½Òª²éÕÒµÄÎı¾"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "ÒªÌæ»»µÄÎı¾Ì«³¤"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.chs/afxdb.rc b/public/sdk/inc/mfc42/l.chs/afxdb.rc
new file mode 100644
index 000000000..e01f3517b
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "ÊÔͼÁ¬½ÓÊý¾ÝԴʧ°Ü"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "¼Ç¼¼¯½öÖ§³ÖÏòÇ°Òƶ¯¡£"
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "ÊÔͼ´ò¿ª±í¸ñʧ°Ü¡ªÎ´Ö¸Ã÷Òª¼ìË÷µÄÁС£"
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "²éѯ·µ»ØµÄÁÐÊý¾ÝÀàÐÍÓëÆÚÍû²»·û¡£"
+ AFX_IDP_SQL_ILLEGAL_MODE "¸üлòɾ³ýµÄÆóͼʧ°ÜÁË¡£"
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "¶àÐÐÊý¾Ý±»¸üС£"
+ AFX_IDP_SQL_NO_CURRENT_RECORD "²Ù×÷ʧ°Ü£¬ÎÞµ±Ç°¼Ç¼¡£"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "¸üлòɾ³ý²Ù×÷δÉæ¼°ÈκÎÊý¾ÝÐС£"
+ AFX_IDP_SQL_RECORDSET_READONLY "¼Ç¼¼¯ÊÇÖ»¶Á"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö Microsoft »ù´¡À೤¶þ½øÖÆÊý¾ÝÄ£ÐÍ¡£"
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "×°ÈëËùÐèµÄ ODBC32.DLL ²¿¼þµÄÆóͼʧ°Ü¡£"
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö¶¯Ì¬¼Ç¼¼¯¡£"
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ÒªÖ§³Ö¿ìÕÕ¹¦ÄÜ£¬ODBC ¾²Ì¬ÓαêÊDZØÒªµÄ¡£"
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC Çý¶¯³ÌÐòÓë Microsoft »ù´¡ÀàÊý¾Ý¿âÀ಻ƥÅä (API_CONFORMANCE >= SQL_OAC_LEVEL1 ±ØÐë³ÉÁ¢)¡£"
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC Çý¶¯³ÌÐòÓë Microsoft »ù´¡ÀàÊý¾Ý¿âÀ಻ƥÅä (API_CONFORMANCE >= SQL_OAC_MINIMUM ±ØÐë³ÉÁ¢)¡£"
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "ÊÔͼԽ¹ýÊý¾ÝµÄÓÐЧ´æÖüÇø¼ä¡£"
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö¶¯Ì¬¼Ç¼¼¯¡£"
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ÐèÒª·ûºÏ ODBC µÄ¶þ¼¶±ê×¼µÄÇý¶¯³ÌÐò¡£"
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "ODBC Çý¶¯³ÌÐò²»Ö§³Ö¶¨Î»¸üС£"
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "²»Ö§³ÖËùÒªÇóµÄËøģʽ¡£"
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Êý¾Ý±»½Ø¶Ï¡£"
+ AFX_IDP_SQL_ROW_FETCH
+ "¼ìË÷¼Ç¼³ö´í¡£"
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "ûÓÐÕÒµ½ËùÐèµÄ ODBC ½øÈëµã¡£È·±£ ODBC °²×°ÕýÈ·¡£"
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "¸üлòɾ³ý²Ù×÷ʧ°Ü¡£"
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "¡°ODBCÇý¶¯³ÌÐò²»Ö§³Ö¶¯Ì¬Ö¸Õë¡£¡±"
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "¡°ÎÞ·¨¶ÔDAO/Jet dbÒýÇæ½øÐгõʼ»¯¡£¡±"
+ AFX_IDP_DAO_DFX_BIND
+ "¡°´íµÄDFXÖµ²ÎÊý¡£¡±"
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "¡°DAO TableDef»òQueryDefûÓдò¿ª¡£¡±"
+ AFX_IDP_DAO_ROWTOOSHORT
+ "¡°GetRows ʧ°Ü¡£·ÖÅä¸øÐеÄÄÚ´æ²»¹»¡£¡±"
+ AFX_IDP_DAO_BADBINDINFO
+ "¡°GetRows ¸³Öµ´íÎ󡣿ÉÄÜÊÇÊý¾ÝÀàÐͲ»Æ¥ÅäÔì³ÉµÄ¡£¡±"
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "¡°GetRows ʧ°Ü¡£ËùÇëÇóµÄÁв»ÊǸüǼֵµÄÒ»¸ö³É·Ö¡£¡±"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.chs/afxolecl.rc b/public/sdk/inc/mfc42/l.chs/afxolecl.rc
new file mode 100644
index 000000000..30dd9b7dc
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "ÎÞ·¨¼¤»îÒ»¸ö¾²Ì¬ OLE ¶ÔÏó¡£"
+ AFX_IDP_FAILED_TO_CONNECT "Á¬½Óʧ°Ü¡£\nÁ´½Ó¿ÉÄÜÒѾ­¶ÏÁË¡£"
+ AFX_IDP_SERVER_BUSY "ÎÞ·¨´¦ÀíÃüÁ·þÎñÆ÷³ÌÐòÕýæ¡£"
+ AFX_IDP_BAD_VERB "Ö´ÐзþÎñÆ÷³ÌÐò²Ù×÷ʧ°Ü¡£"
+ AFX_IDP_FAILED_TO_LAUNCH "Æô¶¯·þÎñÆ÷Ó¦ÓóÌÐòʧ°Ü¡£"
+ AFX_IDS_UPDATING_ITEMS "¸üРOLE ¶ÔÏó"
+ AFX_IDP_FAILED_TO_CONVERT "ת»» OLE ¶ÔÏóʧ°Ü¡£"
+ AFX_IDP_ASK_TO_DISCARD "ÔÚÍ˳ö Windows ʱÎÞ·¨±£´æ OLE ¶ÔÏó£¡\n·ÅÆúËùÓжÔ%1µÄ¸Ä¶¯£¿"
+ AFX_IDP_FAILED_TO_CREATE "Failed to create object. Make sure the application is entered in the system registry."
+
+ AFX_IDS_METAFILE_FORMAT "ͼƬ(ÔªÎļþ)\nÒ»·ùͼƬ"
+ AFX_IDS_DIB_FORMAT "É豸¶ÀÁ¢Î»Í¼\nÒ»·ùÉ豸¶ÀÁ¢Î»Í¼"
+ AFX_IDS_BITMAP_FORMAT "λͼ\nÒ»·ùλͼ"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Ç¿»¯Îı¾(RTF)\n×ÖÌåºÍ¶ÎÂä¸ñʽ»¯µÄÎı¾"
+ AFX_IDS_TEXT_FORMAT "δ¸ñʽ»¯Îı¾\nδ¾­¹ýÈκθñʽ»¯µÄÎı¾"
+
+ AFX_IDS_INVALID_CURRENCY "ÎÞЧµÄ»õ±Ò¡£"
+ AFX_IDS_INVALID_DATETIME "ÎÞЧµÄÈÕÆÚʱ¼ä¡£"
+ AFX_IDS_INVALID_DATETIMESPAN "ÎÞЧµÄÈÕÆÚʱ¼ä¿ç¶È¡£"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.chs/afxolesv.rc b/public/sdk/inc/mfc42/l.chs/afxolesv.rc
new file mode 100644
index 000000000..b7bc22506
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "ÔÚ¼ÌÐøÔËÐÐÇ°¶Ô %1 ½øÐиüУ¿"
+ AFX_IDP_FAILED_TO_UPDATE, "²»Äܸüпͻ§¡£"
+
+ AFX_IDP_FAILED_TO_REGISTER, "×¢²áʧ°Ü¡£OLE ¹¦ÄÜ¿ÉÄܹ¤×÷²»Õý³£¡£"
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "¸üÐÂϵͳע²á¼Ç¼ʧ°Ü¡£\nÇëÊÔÓà REGEDIT¡£"
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 ÔÚ %2 ÖÐ"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "Í˳ö²¢»Øµ½ %1(&X)"
+ AFX_IDS_UPDATE_MENU, "¸üР%1(&U)"
+ AFX_IDS_SAVEFILECOPY, "±£´æ¸±±¾Îª"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.chs/afxprint.rc b/public/sdk/inc/mfc42/l.chs/afxprint.rc
new file mode 100644
index 000000000..939fe8af1
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Sans Serif"
+BEGIN
+ CTEXT "´òÓ¡",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "ÔÚ...ÉÏ",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "È¡Ïû",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "È¡Ïû",IDCANCEL,46,45,40,15
+ CTEXT "°´ Cmd-. °´Å¥ÒÔÈ¡Ïû¡£",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "´òÓ¡(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "ÏÂÒ»Ò³(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "Ç°Ò»Ò³(&V)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "·Å´ó(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "ËõС(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "¹Ø±Õ(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "´òÓ¡(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ÏÂÒ»Ò³(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "Ç°Ò»Ò³(&V)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "·Å´ó(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "ËõС(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "¹Ø±Õ(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "´òÓ¡(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ÏÂÒ»(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "Ç°Ò»(&V)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "Èë(&I)",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "³ö(&O)",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "¹Ø±Õ(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "ÓÚ %1" // for print output
+ AFX_IDS_ONEPAGE, "Ò»Ò³(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "Á½Ò³(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "µÚ %u Ò³" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "µÚ %u Ò³ \nµÚ %u Ò³-µÚ %u Ò³ \n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "´òÓ¡»úÎļþ (*.prn)|*.prn|ËùÓÐÎļþ (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Ó¡³öµ½Îļþ" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "µ½ %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.chs/afxres.rc b/public/sdk/inc/mfc42/l.chs/afxres.rc
new file mode 100644
index 000000000..aecc232bd
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.chs/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ²»Äܸü¸Ä±ê×¼ MFC ×ÊÔ´! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "´ò¿ª"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "±£´æΪ"
+ AFX_IDS_ALLFILTER, "ËùÓÐÎļþ (*.*)"
+ AFX_IDS_UNTITLED, "ÎÞ±êÌâ"
+#else
+ AFX_IDS_SAVEFILE, "±£´æÎĵµÎª:"
+ AFX_IDS_ALLFILTER, "ËùÓÐÎļþ"
+ AFX_IDS_UNTITLED, "ÎÞ±êÌâ"
+ AFX_IDS_ABOUT, "¡°¹ØÓÚ%1\205¡±"
+#endif
+ AFX_IDS_HIDE, "Òþ²Ø(&H)"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "ÄÚ´æ²»×ã¡£"
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"ÊÔͼִÐÐϵͳ²»Ö§³ÖµÄ²Ù×÷¡£"
+ AFX_IDS_RESOURCE_EXCEPTION, "±ØÐèµÄ×ÊÔ´ÎÞ·¨µÃµ½¡£"
+ AFX_IDS_USER_EXCEPTION, "³öÏÖÁËδ֪µÄ´íÎó"
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "ÎÞЧµÄÎļþÃû¡£"
+ AFX_IDP_FAILED_TO_OPEN_DOC, "´ò¿ªÎĵµÊ§°Ü¡£"
+ AFX_IDP_FAILED_TO_SAVE_DOC, "±£´æÎĵµÊ§°Ü¡£"
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "½«¸Ä¶¯±£´æµ½ %1£¿"
+#else
+ AFX_IDP_ASK_TO_SAVE, "½«¸Ä¶¯±£´æµ½ %1 Îĵµ\042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "½¨Á¢¿ÕÎĵµÊ§°Ü¡£"
+ AFX_IDP_FILE_TOO_LARGE, "¸ÃÎļþÌ«´ó£¬ÎÞ·¨´ò¿ª¡£"
+ AFX_IDP_FAILED_TO_START_PRINT, "ÎÞ·¨Æô¶¯´òÓ¡×÷Òµ¡£"
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Æô¶¯°ïÖúʧ°Ü¡£"
+ AFX_IDP_INTERNAL_FAILURE, "ÄÚ²¿Ó¦ÓóÌÐò³ö´í¡£"
+ AFX_IDP_COMMAND_FAILURE, "ÃüÁîʧ°Ü¡£"
+ AFX_IDP_FAILED_MEMORY_ALLOC "ûÓÐ×ã¹»µÄÄÚ´æÖ´ÐвÙ×÷¡£"
+ AFX_IDP_GET_NOT_SUPPORTED, "ÎÞ·¨¶ÁֻдÌØÐÔ¡£"
+ AFX_IDP_SET_NOT_SUPPORTED, "ÎÞ·¨Ð´Ö»¶ÁÌØÐÔ¡£"
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "·ÇÔ¤ÆÚµÄÎļþ¸ñʽ¡£"
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "ÎÞ·¨ÕÒµ½¸ÃÎļþ¡£\nÇëÑéÖ¤¸ø³öµÄ·¾¶ºÍÎļþÃûÊÇ·ñÕýÈ·¡£"
+ AFX_IDP_FAILED_DISK_FULL "Ä¿µÄ´ÅÅÌÇý¶¯Æ÷ÒÑÂú¡£"
+#else
+ AFX_IDP_FAILED_INVALID_PATH "ÎÞ·¨ÕÒµ½\042%1Îļþ¡£\042ÇëÑéÖ¤¸ø³öµÄÎļþÃûÊÇ·ñÕýÈ·¡£"
+ AFX_IDP_FAILED_DISK_FULL "Ä¿µÄ´ÅÅÌÒÑÂú¡£"
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "ÎÞ·¨¶Ô %1 ½øÐжÁ²Ù×÷£¬ËüÒѾ­±»ÆäËûÈË´ò¿ª¡£"
+ AFX_IDP_FAILED_ACCESS_WRITE "ÎÞ·¨¶Ô %1 ½øÐÐд²Ù×÷£¬ÒòΪËüÊÇÖ»¶ÁÎļþ»òÒѾ­±»ÆäËûÈË´ò¿ª¡£"
+ AFX_IDP_FAILED_IO_ERROR_READ "ÔÚ¶Ô %1 ½øÐжÁ²Ù×÷ʱ·¢ÉúÁËÒ»¸ö·ÇÔ¤ÆڵĴíÎó¡£"
+ AFX_IDP_FAILED_IO_ERROR_WRITE "ÔÚ¶Ô %1 ½øÐÐд²Ù×÷ʱ·¢ÉúÁËÒ»¸ö·ÇÔ¤ÆڵĴíÎó¡£"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Çë¼üÈëÒ»¸öÕûÊý¡£"
+ AFX_IDP_PARSE_REAL, "Çë¼üÈëÒ»¸öÊý¡£"
+ AFX_IDP_PARSE_INT_RANGE, "¡°ÇëÌîÈëÒ»¸öÔÚ%1ºÍ%2Ö®¼äµÄÕûÊý¡£¡±"
+ AFX_IDP_PARSE_REAL_RANGE, "¡°ÇëÌîÈëÒ»¸öÔÚ%1ºÍ%2Ö®¼äµÄÊý×Ö¡£¡±"
+ AFX_IDP_PARSE_STRING_SIZE, "¡°ÇëÌîÈë²»¶àÓÚ%1¸öµÄ×Ö·û¡£¡±"
+ AFX_IDP_PARSE_RADIO_BUTTON, "ÇëÑ¡ÔñÒ»¸ö°´Å¥¡£"
+ AFX_IDP_PARSE_BYTE, "¡°ÇëÌîÈëÒ»¸öÔÚ0ºÍ255Ö®¼äµÄÕûÊý¡£¡±"
+ AFX_IDP_PARSE_UINT, "¡°ÇëÌîÈëÒ»¸öÕýÕûÊý¡£¡±"
+ AFX_IDP_PARSE_DATETIME, "¡°ÇëÌîÈëÒ»¸öÈÕÆÚºÍ/»òʱ¼äÖµ¡£¡±"
+ AFX_IDP_PARSE_CURRENCY, "¡°ÇëÌîÈëÒ»¸ö»õ±ÒÖµ¡£¡±"
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Á´½ÓµÄ %s"
+ AFX_IDS_UNKNOWNTYPE "δ֪ÀàÐÍ"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nÎÞ·¨×¢²áÎĵµ¡£\n´ËÎĵµ¿ÉÄÜÒѾ­±»´ò¿ª¡£"
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "ÎÞ·¨×¢²áÎĵµ\042%1¡£\42´ËÎĵµ¿ÉÄÜÒѾ­±»´ò¿ª¡£"
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "µÃ²»µ½³ö´íÐÅÏ¢¡£"
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "ÎÞ´íÎó·¢Éú¡£"
+ AFX_IDP_FILE_GENERIC "ÔÚ¶Ô %1 ½øÐзÃÎÊʱ·¢ÉúÁËÒ»¸ö²»Ã÷´íÎó¡£"
+ AFX_IDP_FILE_NOT_FOUND "ûÓÐÕÒµ½ %1¡£"
+ AFX_IDP_FILE_BAD_PATH "%1 Öаüº¬ÎÞЧµÄ·¾¶¡£"
+ AFX_IDP_FILE_TOO_MANY_OPEN "ÎÞ·¨´ò¿ª %1 ÒòΪ̫¶àÎļþÒѱ»´ò¿ª¡£"
+ AFX_IDP_FILE_ACCESS_DENIED "¶Ô %1 µÄ´æÈ¡±»¾Ü¾ø¡£"
+ AFX_IDP_FILE_INVALID_FILE "Ò»¸öÎÞЧµÄÎļþ±úÓë %1 Ïà¹ØÁª¡£"
+ AFX_IDP_FILE_REMOVE_CURRENT "ÎÞ·¨É¾³ý %1 ÒòΪËüÊǵ±Ç°Ä¿Â¼¡£"
+ AFX_IDP_FILE_DIR_FULL "¸ÃĿ¼ÒÑÂú£¬ÎÞ·¨´´½¨ %1¡£"
+ AFX_IDP_FILE_BAD_SEEK "¶Ô %1 ½øÐвéÕÒʧ°Ü¡£"
+ AFX_IDP_FILE_HARD_IO "ÔÚ´æÈ¡ %1 ʱһ¸öÓ²¼þÊäÈë/Êä³ö´íÎó±»±¨¸æ¡£"
+ AFX_IDP_FILE_SHARING "ÔÚ´æÈ¡ %1 ʱ·¢Éú¹²ÏíÎ¥Àý¡£"
+ AFX_IDP_FILE_LOCKING "ÔÚ´æÈ¡ %1 ʱ·¢ÉúËøÎ¥Àý¡£"
+ AFX_IDP_FILE_DISKFULL "ÔÚ´æÈ¡ %1 ʱ´ÅÅÌÒÑÂú¡£"
+ AFX_IDP_FILE_EOF "ÊÔͼԽ¹ýÆäβ¶Ë¶Ô %1 ½øÐжÁд¡£"
+ AFX_IDS_UNNAMED_FILE "һδÃüÃûÎļþ"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "ÎÞ´íÎó·¢Éú¡£"
+ AFX_IDP_ARCH_GENERIC "ÔÚ¶Ô %1 ½øÐзÃÎÊʱ·¢ÉúÁËÒ»¸ö²»Ã÷´íÎó¡£"
+ AFX_IDP_ARCH_READONLY "ÊÔͼÔÚ¶Ô %1 ½øÐжÁ²Ù×÷µÄͬʱ¶ÔÆä½øÐÐд²Ù×÷¡£"
+ AFX_IDP_ARCH_ENDOFFILE "ÊÔͼԽ¹ýÆäβ¶Ë¶Ô %1 ½øÐжÁд¡£"
+ AFX_IDP_ARCH_WRITEONLY "ÊÔͼÔÚ¶Ô %1 ½øÐÐд²Ù×÷µÄͬʱ¶ÔÆä½øÐжÁ²Ù×÷¡£"
+ AFX_IDP_ARCH_BADINDEX "%1 ¸ñʽ´í¡£"
+ AFX_IDP_ARCH_BADCLASS "%1 º¬ÓзÇÔ¤ÆڵĶÔÏó¡£"
+ AFX_IDP_ARCH_BADSCHEMA "%1 °üº¬´íÎóµÄģʽ¡£"
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "ÎÞ·¨×°ÈëÓʼþϵͳ֧Ԯ¡£"
+ AFX_IDP_INVALID_MAPI_DLL "Óʼþϵͳ DLL ÎÞЧ¡£"
+ AFX_IDP_FAILED_MAPI_SEND "´«µÝÓʼþδÄÜ´«µÝÐÅÏ¢¡£"
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "ÏóËØ"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "н¨"
+FONT 8, "MS Sans Serif"
+BEGIN
+ LTEXT "н¨(&N)",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "È·¶¨",IDOK,137,6,40,14
+ PUSHBUTTON "È¡Ïû",IDCANCEL,137,23,40,14
+ PUSHBUTTON "°ïÖú(&H)",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.cht/afxctl.rc b/public/sdk/inc/mfc42/l.cht/afxctl.rc
new file mode 100644
index 000000000..ea73dab14
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ LTEXT "ÄݩʦWºÙ(&N):",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "¦r«¬(&F):",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "¦r«¬¼Ë¦¡(&y):",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "¤j¤p(&S):",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "®ÄªG",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "¨ú®ø½u(&k)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "©³½u(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "½d¨Ò",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ LTEXT "ÄݩʦWºÙ(&N):",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "¨t²ÎÃC¦â(&C):",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ LTEXT "ÄݩʦWºÙ(&N):",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ÂsÄý(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "²M°£(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "¹wÄý:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(¥¼ª¾)"
+ AFX_IDS_COLOR_DESKTOP "®à­±"
+ AFX_IDS_COLOR_APPWORKSPACE "À³¥Îµ{¦¡¤u§@°Ï"
+ AFX_IDS_COLOR_WNDBACKGND "µøµ¡­I´º"
+ AFX_IDS_COLOR_WNDTEXT "µøµ¡¤å¦r"
+ AFX_IDS_COLOR_MENUBAR "¥\¯àªí¦C"
+ AFX_IDS_COLOR_MENUTEXT "¥\¯àªí¤å¦r"
+ AFX_IDS_COLOR_ACTIVEBAR "²{¥Î¼ÐÃD¦C"
+ AFX_IDS_COLOR_INACTIVEBAR "«D²{¥Î¼ÐÃD¦C"
+ AFX_IDS_COLOR_ACTIVETEXT "²{¥Î¼ÐÃD¦C¤å¦r"
+ AFX_IDS_COLOR_INACTIVETEXT "²{¥Î¼ÐÃD¦C¤å¦r"
+ AFX_IDS_COLOR_ACTIVEBORDER "²{¥ÎÃä¬É"
+ AFX_IDS_COLOR_INACTIVEBORDER "«D²{¥ÎÃä¬É"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "µøµ¡Ãä®Ø"
+ AFX_IDS_COLOR_SCROLLBARS "±²¶b"
+ AFX_IDS_COLOR_BTNFACE "«ö¶sªí­±"
+ AFX_IDS_COLOR_BTNSHADOW "«ö¶s³±¼v"
+ AFX_IDS_COLOR_BTNTEXT "«ö¶s¤å¦r"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "«ö¶s±j½Õ"
+ AFX_IDS_COLOR_DISABLEDTEXT "¥¢®Ä¤å¦r"
+ AFX_IDS_COLOR_HIGHLIGHT "±j½Õ"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "±j½Õ¤å¦r"
+ AFX_IDS_REGULAR "¤@¯ë"
+ AFX_IDS_BOLD "²ÊÅé"
+ AFX_IDS_ITALIC "±×Åé"
+ AFX_IDS_BOLDITALIC "²Ê±×Åé"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(¦r«¬)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(ÃC¦â)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(¹Ï¤ù - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "¥¼ª¾"
+ AFX_IDS_PICTYPE_NONE "None"
+ AFX_IDS_PICTYPE_BITMAP "ÂI°}¹Ï§Î"
+ AFX_IDS_PICTYPE_METAFILE "Metafile"
+ AFX_IDS_PICTYPE_ICON "¹Ï¥Ü"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "±m¦âÄÝ©Ê­¶"
+ AFX_IDS_COLOR_PPG_CAPTION "±m¦â"
+ AFX_IDS_FONT_PPG "¦r«¬ÄÝ©Ê­¶"
+ AFX_IDS_FONT_PPG_CAPTION "¦r«¬"
+ AFX_IDS_PICTURE_PPG "¹Ï¤ùÄÝ©Ê­¶"
+ AFX_IDS_PICTURE_PPG_CAPTION "¹Ï¤ù"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - None"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fixed Single"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "½s¿è(&E)"
+ AFX_IDS_VERB_PROPERTIES "ÄÝ©Ê(&P)..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "µLªk¸ü¤J¹Ï¤ùÀÉ®× %1. Àɮפ]³\©Î¤£¦s¦b, ©ÎµLªkŪ¨ú."
+ AFX_IDP_PICTURECANTLOAD "µLªk¸ü¤J¹Ï¤ùÀÉ®× %1. Àɮ׮榡¿ù»~."
+ AFX_IDP_PICTURETOOLARGE "µLªk¸ü¤J¹Ï¤ùÀÉ®× %1. ÀɮפӤj°O¾ÐÅ餣°÷."
+ AFX_IDP_PICTUREREADFAILED
+ "µLªk¸ü¤J¹Ï¤ùÀÉ®× %1. µLªk¸ÑÄÀªºÅª¨ú¥¢±Ñ."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "ÂsÄý¹Ï¤ù"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "¤£¦Xªk¤§¥\¯à©I¥s"
+ AFX_IDP_E_OVERFLOW "·¸¥X(Overflow)"
+ AFX_IDP_E_OUTOFMEMORY "°O¾ÐÅé¥Î§¹"
+ AFX_IDP_E_DIVISIONBYZERO "°£¹s"
+ AFX_IDP_E_OUTOFSTRINGSPACE "¦r¦êªÅ¶¡¤wº¡"
+ AFX_IDP_E_OUTOFSTACKSPACE "°ïÅ|¤wº¡"
+ AFX_IDP_E_BADFILENAMEORNUMBER "ÃaªºÀɮצWºÙ©Î½s¸¹"
+ AFX_IDP_E_FILENOTFOUND "§ä¤£¨ìÀÉ®×"
+ AFX_IDP_E_BADFILEMODE "ÃaªºÀÉ®×¼ÒºA"
+ AFX_IDP_E_FILEALREADYOPEN "Àɮפw¶}±Ò"
+ AFX_IDP_E_DEVICEIOERROR "³]³Æ¿é¥X¤J¿ù»~"
+ AFX_IDP_E_FILEALREADYEXISTS "Àɮפw¦s¦b"
+ AFX_IDP_E_BADRECORDLENGTH "Ãaªº¬ö¿ýªø«×"
+ AFX_IDP_E_DISKFULL "ºÏºÐªÅ¶¡¤wº¡"
+ AFX_IDP_E_BADRECORDNUMBER "Ãaªº¬ö¿ý½s¸¹"
+ AFX_IDP_E_BADFILENAME "ÃaªºÀɮצWºÙ"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "¤Ó¦hÀÉ®×"
+ AFX_IDP_E_DEVICEUNAVAILABLE "³]³ÆµLªk¨Ï¥Î"
+ AFX_IDP_E_PERMISSIONDENIED "¤¹³\©Úµ´"
+ AFX_IDP_E_DISKNOTREADY "ºÏºÐ¾÷¥¼³Æ§´"
+ AFX_IDP_E_PATHFILEACCESSERROR "¸ô®|/Àɮצs¨ú¿ù»~"
+ AFX_IDP_E_PATHNOTFOUND "§ä¤£¨ì¸ô®|"
+ AFX_IDP_E_INVALIDPATTERNSTRING "¤£¦Xªkªº¼Ë¦¡¦r¦ê"
+ AFX_IDP_E_INVALIDUSEOFNULL "¤£¦Xªk¨Ï¥ÎªÅ­È(null)"
+ AFX_IDP_E_INVALIDFILEFORMAT "¤£¦XªkªºÀɮ׮榡"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "¤£¦XªkªºÄÝ©Ê­È"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "¤£¦Xªkªº¯Á¤Þ"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "µLªk¦b°õ¦æ®É³]©wÄÝ©Ê"
+ AFX_IDP_E_SETNOTSUPPORTED "°ßŪÄÝ©Ê"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "·í¨Ï¥ÎÄÝ©Ê°}¦C®É¥²¶·»¡©ú°}¦C¯Á¤Þ"
+ AFX_IDP_E_SETNOTPERMITTED "³o­Ó±±¨î¶µ¤§ÄݩʵLªk³]©w"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "µLªk¦b°õ¦æ®ÉŪ¨úÄÝ©Ê"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "°ß¼gÄÝ©Ê"
+ AFX_IDP_E_PROPERTYNOTFOUND "§ä¤£¨ìÄÝ©Ê"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "¤£¦Xªk¤§°Å¶Kï®æ¦¡"
+ AFX_IDP_E_INVALIDPICTURE "¤£¦Xªk¹Ï¤ù"
+ AFX_IDP_E_PRINTERERROR "¦Lªí¾÷¿ù»~"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "µLªk²£¥Í¥²¶·Àx¦s¤§¼È®ÉÀÉ®×"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "µLªk§ä¨ì·Q·j´M¤§¤å¦r"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "¨ú¥N¤å¦r¹Lªø"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.cht/afxdb.rc b/public/sdk/inc/mfc42/l.cht/afxdb.rc
new file mode 100644
index 000000000..efff95274
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "¹Á¸Õ³sµ²¸ê®Æ¨Ó·½¥¢±Ñ"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "¸ê®Æ¶°¥u¤ä´©¦V«e²¾°Ê."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "¹Á¸Õ¶}±Òªí®æ¥¢±Ñ - µL¥ô¦ó¦s¨ú¸ê®ÆÄ满©ú."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "¬d¸ß¶Ç¦^«D¹w´Á¸ê®ÆÄ櫬ºA."
+ AFX_IDP_SQL_ILLEGAL_MODE "­×§ï©Î§R°£¹Á¸Õ¥¢±Ñ."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "¦h­Ó¸ê®Æ¦C³Q­×§ï."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "§@·~¥¢±Ñ, µL²{¦æ¸ê®Æ¬ö¿ý."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "µL¥ô¦ó¸ê®Æ¦C¨ü­×§ï©Î§R°£§@·~¼vÅT."
+ AFX_IDP_SQL_RECORDSET_READONLY "¸ê®Æ¶°¬O°ßŪ"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBCÅX°Êµ{¦¡¤£¤ä´©MFCªø¤G¶i¦ì(LongBinary)¸ê®Æ¼Ò¦¡."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "¹Á¸Õ¸ü¤J¥²­n¤¸¥ó ODBC32.DLL ¥¢±Ñ."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBCÅX°Êµ{¦¡¤£¤ä´© Dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ODBCÀRºA´å¼Ð»Ý­nsnapshot¤ä´©."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBCÅX°Êµ{¦¡»PMFC ¸ê®Æ®wÃþ§O¤£¬Û®e(API_CONFORMANCE >= SQL_OAC_LEVEL1 required)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBCÅX°Êµ{¦¡»PMFC¸ê®Æ®wÃþ§O¤£¬Û®e (SQL_CONFORMANCE >= SQL_OSC_MINIMUM required)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "¹Á¸Õ¨Ï¥Î±²¶b±²°Ê¸ê®Æ¦C¶W¹L²Ä¤@µ§¸ê®Æ."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "ODBCÅX°Êµ{¦¡¤£¤ä´© Dynasets."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "¶·­nODBC¼h¦¸2¶¶À³ÅX°Êµ{¦¡(Level 2 compliant driver)."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "ODBCÅX°Êµ{¦¡¤£¤ä´©©w¦ì­×§ï(Positioned updates)."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "¤£¤ä´©½Ð¨DÂê©w¼ÒºA(Requested lock mode)."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "¸ê®ÆºI¨ú."
+ AFX_IDP_SQL_ROW_FETCH
+ "¿ù»~¦^´_¸ê®Æ¿ý."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "¤@­Ó¥²¶·ªºODBC¶i¤JÂI¨S§ä¨ì. ½T©wODBC³Q¥¿½Tªº¦w¸Ë."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "­×§ï©Î§R°£¥¢±Ñ."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "ODBCÅX°Êµ{¦¡¨S¦³¤ä´©°ÊºA´å¼Ð."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "µLªk¶i¦æDAO/Jet¸ê®Æ®w¤ÞÀº(db engin)ªì©l¤Æ."
+ AFX_IDP_DAO_DFX_BIND
+ "ÃaªºDFX°Ñ¼Æ­È."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAOªºTableDefª«¥ó©ÎQueryDefª«¥ó¥¼¶}±Ò."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows¥¢±Ñ. ¨S¦³¨¬°÷°O¾ÐÅé°t¸mµ¹¸ê®Æ¦C."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows³sµ²¥¢±Ñ. ¤]³\¬O¦]¸ê®Æ«¬ºA¤£¦X©Ò­P."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows¥¢±Ñ. ©Ò­n¨Dªº¸ê®ÆÄ椣¦b¸ê®Æ¶°(Recordset)¤¤."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.cht/afxolecl.rc b/public/sdk/inc/mfc42/l.cht/afxolecl.rc
new file mode 100644
index 000000000..995480e98
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "µLªk¨ÏÀRºAOLEª«¥ó¦¨¬°²{¥Îª«¥ó."
+ AFX_IDP_FAILED_TO_CONNECT "³sµ²¥¢±Ñ.\n³sµ²¥i¯à³Q¯}Ãa."
+ AFX_IDP_SERVER_BUSY "µLªk³B²z«ü¥O, ¦øªA¾¹¦£¸L¤¤."
+ AFX_IDP_BAD_VERB "¦øªA¾¹§@·~°õ¦æ¥¢±Ñ."
+ AFX_IDP_FAILED_TO_LAUNCH "µLªk±Ò°Ê¦øªA¾¹À³¥Îµ{¦¡."
+ AFX_IDS_UPDATING_ITEMS "­×§ïOLEª«¥ó"
+ AFX_IDP_FAILED_TO_CONVERT "OLEª«¥óÂà´«¥¢±Ñ."
+ AFX_IDP_ASK_TO_DISCARD "·íÂ÷¶}µøµ¡®ÉµLªkÀx¦sOLEª«¥ó!\n©ñ±ó¹ï1%ªº©Ò¦³­×§ï?"
+ AFX_IDP_FAILED_TO_CREATE "²£¥Íª«¥ó¥¢±Ñ. ½T©wÀ³¥Îµ{¦¡¤wµn¿ý¦b¨t²Îµn¿ý¾¹¤¤(system registry)."
+
+ AFX_IDS_METAFILE_FORMAT "¹Ï¤ù(Metafile)\na ¹Ï¤ù"
+ AFX_IDS_DIB_FORMAT "³]³Æ¿W¥ßÂI°}¹Ï(Device Independent Bitmap)\na ³]³Æ¿W¥ßÂI°}¹Ï(device independent bitmap)"
+ AFX_IDS_BITMAP_FORMAT "ÂI°}¹Ï\na ÂI°}¹Ï"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\nµL¦r«¬©M¬q¸¨®æ¦¡ªº¤å¦r"
+ AFX_IDS_TEXT_FORMAT "¥¼®æ¦¡¤Æ¤å¦r\n¤å¦r¨S¦³¥ô¦ó®æ¦¡"
+
+ AFX_IDS_INVALID_CURRENCY "¤£¦Xªkªº³f¹ô­È(Currency)."
+ AFX_IDS_INVALID_DATETIME "¤£¦Xªkªº¤é´Á®É¶¡(DateTime)."
+ AFX_IDS_INVALID_DATETIMESPAN "¤£¦XªkªºDateTimeSpan."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.cht/afxolesv.rc b/public/sdk/inc/mfc42/l.cht/afxolesv.rc
new file mode 100644
index 000000000..481249b10
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "¦b¶i¦æ«e­×§ï %1?"
+ AFX_IDP_FAILED_TO_UPDATE, "µLªk­×§ï«È¤á(client)."
+
+ AFX_IDP_FAILED_TO_REGISTER, "µn¿ý¥¢±Ñ. OLE¥\¯à¥i¯àµLªk¥¿±`¤u§@."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "­×§ï¨t²Îµn¿ý¾¹(system registry)¥¢±Ñ.\n½Ð¹Á¸Õ¨Ï¥ÎREGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "Â÷¶}(&x) && ¸õ¦^¨ì%1"
+ AFX_IDS_UPDATE_MENU, "­×§ï(&U)%1"
+ AFX_IDS_SAVEFILECOPY, "¥t¦s½Æ»s"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.cht/afxprint.rc b/public/sdk/inc/mfc42/l.cht/afxprint.rc
new file mode 100644
index 000000000..87356548d
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"<µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ CTEXT "¦C¦L",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "¥¿¦b",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "¨ú®ø",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "¨ú®ø",IDCANCEL,46,45,40,15
+ CTEXT "«ö¤U Cmd-. ¨ú®ø.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ PUSHBUTTON "¦C¦L(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "¤U¤@­¶(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "«e¤@­¶(&v)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "©Ôªñ(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "©Ô»·(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "Ãö³¬(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "¦C¦L(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "¤U¤@­¶(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "«e¤@­¶(&v)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "©Ôªñ(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "©Ô»·(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "Ãö³¬(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "¦C¦L(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "¤U¤@­Ó(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "«e¤@­Ó(&v)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "ªñ(&I)",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "»·(&O)",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "Ãö³¬(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "¦b %1" // for print output
+ AFX_IDS_ONEPAGE, "¤@­¶(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "¨â­¶(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "­¶ %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "­¶ %u\n­¶ %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "¦Lªí¾÷ÀÉ®×(*.prn)|*.prn|All Files (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "¦C¦L¨ìÀÉ®×" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "¨ì %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.cht/afxres.rc b/public/sdk/inc/mfc42/l.cht/afxres.rc
new file mode 100644
index 000000000..a03837b43
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.cht/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< µLªk§ïÅܼзÇMFC¸ê·½! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "¶}±ÒÂÂÀÉ"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "¥t¦s·sÀÉ"
+ AFX_IDS_ALLFILTER, "©Ò¦³¤å¥ó (*.*)"
+ AFX_IDS_UNTITLED, "¥¼©R¦W¼ÐÃD"
+#else
+ AFX_IDS_SAVEFILE, "¥t¦s¤å¥ó:"
+ AFX_IDS_ALLFILTER, "©Ò¦³¤å¥ó"
+ AFX_IDS_UNTITLED, "¥¼©R¦W¼ÐÃD"
+ AFX_IDS_ABOUT, "Ãö©ó %1\205"
+#endif
+ AFX_IDS_HIDE, "ÁôÂÃ(&H)"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "°O¾ÐÅ餣¨¬."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"¸Õ¹Ï°õ¦æ¥¼¤ä´©ªº§@·~."
+ AFX_IDS_RESOURCE_EXCEPTION, "¦³¤@¶µ¥²­nªº¸ê·½µLªk¨Ï¥Î."
+ AFX_IDS_USER_EXCEPTION, "²£¥Í¤@¥¼ª¾ªº¿ù»~."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "¤£¦Xªk¤§ÀɮצWºÙ."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "¶}±Ò¤å¥ó¥¢±Ñ."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Àx¦s¤å¥ó¥¢±Ñ."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Àx¦s­×§ï¨ì %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Àx¦s­×§ï¨ì %1 ¤å¥ó \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "²£¥ÍªÅ¥Õ¤å¥ó¥¢±Ñ."
+ AFX_IDP_FILE_TOO_LARGE, "ÀɮפӤjµLªk¶}±Ò."
+ AFX_IDP_FAILED_TO_START_PRINT, "¦C¦L¤u§@µLªk±Ò©l."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "»¡©ú¶}±Ò¥¢±Ñ."
+ AFX_IDP_INTERNAL_FAILURE, "¤º³¡À³¥Îµ{¦¡¿ù»~."
+ AFX_IDP_COMMAND_FAILURE, "©R¥O¥¢±Ñ."
+ AFX_IDP_FAILED_MEMORY_ALLOC "°O¾ÐÅ餣°÷µLªk°õ¦æ§@·~."
+ AFX_IDP_GET_NOT_SUPPORTED, "µLªkŪ¨ú°ß¼gÄÝ©Ê."
+ AFX_IDP_SET_NOT_SUPPORTED, "µLªk¼g¤J°ßŪÄÝ©Ê."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Àɮ׮榡¿ù»~."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\n¨S¦³§ä¨ì³o­ÓÀÉ®×.\n½Ð½T»{¥¿½Tªº¸ô®|©MÀɮצWºÙ."
+ AFX_IDP_FAILED_DISK_FULL "¥Ø¼ÐºÏºÐ¾÷ªÅ¶¡¤wº¡."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "µLªk§ä¨ìÀÉ®× \042%1.\042 ½Ð½T»{¥¿½TªºÀɮצWºÙ."
+ AFX_IDP_FAILED_DISK_FULL "¥Ø¼ÐºÏºÐ¾÷ªÅ¶¡¤wº¡."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "µLªkŪ¨ú %1, ¥¦¤w¸g³Q¬Y¤H¶}±Ò."
+ AFX_IDP_FAILED_ACCESS_WRITE "µLªk¼g¤J %1, ¥¦¬O°ßŪÀɩγQ¬Y¤H¶}±Ò."
+ AFX_IDP_FAILED_IO_ERROR_READ "·íŪ¨ú 1% ®É²£¥Í«D¹w´Á¿ù»~."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "·í¼g¤J 1% ²£¥Í«D¹w´Á¿ù»~."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "½Ð¿é¤J¤@¾ã¼Æ."
+ AFX_IDP_PARSE_REAL, "½Ð¿é¤J¤@¼Æ­È."
+ AFX_IDP_PARSE_INT_RANGE, "½Ð¿é¤J¤@­Ó¦b 1% ¨ì 2% ¤§¶¡ªº¾ã¼Æ."
+ AFX_IDP_PARSE_REAL_RANGE, "½Ð¿é¤J¤@­Ó¦b 1% ¨ì 2% ¤§¶¡ªº¼Æ­È."
+ AFX_IDP_PARSE_STRING_SIZE, "½Ð¿é¤J¤Ö©ó %1­Ó¤å¦r."
+ AFX_IDP_PARSE_RADIO_BUTTON, "½Ð¿ï¾Ü¤@«ö¶s."
+ AFX_IDP_PARSE_BYTE, "½Ð¿é¤J¤@­Ó¦b 0 ¨ì 225 ¤§¶¡ªº¾ã¼Æ."
+ AFX_IDP_PARSE_UINT, "½Ð¿é¤J¤@¥¿¾ã¼Æ."
+ AFX_IDP_PARSE_DATETIME, "½Ð¿é¤J¤@¤é´Á ©M/©Î ®É¶¡."
+ AFX_IDP_PARSE_CURRENCY, "½Ð¿é¤J¤@³f¹ô­È."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "³sµ² %s"
+ AFX_IDS_UNKNOWNTYPE "¥¼ª¾«¬ºA"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nµLªkµn¿ý¤å¥ó.\n³o­Ó¤å¥ó¤w³Q¶}±Ò."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "µLªkµn¿ý¤å¥ó \042%1.\042 T³o­Ó¤å¥ó¤w³Q¶}±Ò."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "µL¥i¥Îªº¿ù»~°T®§."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "µL¿ù»~²£¥Í."
+ AFX_IDP_FILE_GENERIC "·í¦s¨ú %1 ®Éµo¥Í¤£¥iª¾ªº¿ù»~."
+ AFX_IDP_FILE_NOT_FOUND "¨S¦³§ä¨ì %1 ."
+ AFX_IDP_FILE_BAD_PATH "%1 ¥]§t«D¦Xªk¸ô®|."
+ AFX_IDP_FILE_TOO_MANY_OPEN "%1 µLªk¶}±Ò,¦]¬°¤w¶}±Ò¤Ó¦hÀÉ®×."
+ AFX_IDP_FILE_ACCESS_DENIED "¦s¨ú %1 ¾D¨ü©Úµ´."
+ AFX_IDP_FILE_INVALID_FILE "¤@¤£¦XªkÀÉ®×¥N½X»P %1 ¦³ÃöÁp."
+ AFX_IDP_FILE_REMOVE_CURRENT "%1 µLªk³Q²¾°£¦]¬°¥¦¬O¨Ï¥Î¤¤¥Ø¿ý."
+ AFX_IDP_FILE_DIR_FULL "%1 µLªk²£¥Í¦]¬°¥Ø¿ýªÅ¶¡¤wº¡."
+ AFX_IDP_FILE_BAD_SEEK " 1% ·j´M¥¢±Ñ"
+ AFX_IDP_FILE_HARD_IO "·í¦s¨ú 1% ®É²£¥ÍµwÅé¿é¥X¤J¿ù»~."
+ AFX_IDP_FILE_SHARING "·í¦s¨ú 1% ®Éµo¥Í¤À¨É¹H¤Ï(Sharing Violation)."
+ AFX_IDP_FILE_LOCKING "·í¦s¨ú 1% ®É¦³²£¥ÍÂê©w¹H¤Ï(Locking Violation)."
+ AFX_IDP_FILE_DISKFULL "·í¦s¨ú 1% ®ÉºÏºÐªÅ¶¡¤wº¡."
+ AFX_IDP_FILE_EOF "¸Õ¹Ï¦s¨ú¶W¹L %1 ¤§ÀɧÀ."
+ AFX_IDS_UNNAMED_FILE "¥¼©R¦WÀÉ®×"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "µL¿ù»~²£¥Í."
+ AFX_IDP_ARCH_GENERIC "·í¦s¨ú %1 ®Éµo¥Í¤£¥iª¾ªº¿ù»~."
+ AFX_IDP_ARCH_READONLY "¸Õ¹Ï¼g¤J¥¿¦bŪ¨ú¤¤ªº %1."
+ AFX_IDP_ARCH_ENDOFFILE "¸Õ¹Ï¦s¨ú¶W¹L %1 ¤§ÀɧÀ."
+ AFX_IDP_ARCH_WRITEONLY "¸Õ¹ÏŪ¨ú¥¿¦b¼g¤J¤¤ªº %1."
+ AFX_IDP_ARCH_BADINDEX "%1 ¦³¤@Ãaªº®æ¦¡."
+ AFX_IDP_ARCH_BADCLASS "%1 ¥]§t¤@«D´Á±æª«¥ó."
+ AFX_IDP_ARCH_BADSCHEMA "%1 ¥]§t¤@¤£¥¿½TªºÆ[ÂI."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "µLªk¸ü¤J¹q¤l¶l¥ó¤ä´©."
+ AFX_IDP_INVALID_MAPI_DLL "¹q¤l¶l¥ó¨t²Î¤§DLL¬OµL®Äªº."
+ AFX_IDP_FAILED_MAPI_SEND "¹q¤l¶l¥ó¶Ç°eµLªk¶Ç°e°T®§."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "¹³¯À"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "¶}±Ò·sÀÉ"
+FONT 8, "·s²Ó©úÅé"
+BEGIN
+ LTEXT "¶}±Ò·sÀÉ(&N) ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "½T©w",IDOK,137,6,40,14
+ PUSHBUTTON "¨ú®ø",IDCANCEL,137,23,40,14
+ PUSHBUTTON "»¡©ú(&H)",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.deu/afxctl.rc b/public/sdk/inc/mfc42/l.deu/afxctl.rc
new file mode 100644
index 000000000..fd262ed33
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Eigenschafts&name:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Schriftart:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "Schriftst&il:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Größe:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effekte",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "&Durchgestrichen",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Unterstrichen",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Beispiel",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Eigenschafts&name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "System&farbe:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Eigenschafts&name:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Durchsuchen...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Löschen",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Vorschau:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Unbekannt)"
+ AFX_IDS_COLOR_DESKTOP "Desktop"
+ AFX_IDS_COLOR_APPWORKSPACE "Anwendungsarbeitsbereich"
+ AFX_IDS_COLOR_WNDBACKGND "Fensterhintergrund"
+ AFX_IDS_COLOR_WNDTEXT "Fenstertext"
+ AFX_IDS_COLOR_MENUBAR "Menüleiste"
+ AFX_IDS_COLOR_MENUTEXT "Menütext"
+ AFX_IDS_COLOR_ACTIVEBAR "Aktive Titelleiste"
+ AFX_IDS_COLOR_INACTIVEBAR "Inaktive Titelleiste"
+ AFX_IDS_COLOR_ACTIVETEXT "Aktiver Titelleistentext"
+ AFX_IDS_COLOR_INACTIVETEXT "Inaktiver Titelleistentext"
+ AFX_IDS_COLOR_ACTIVEBORDER "Aktiver Rahmen"
+ AFX_IDS_COLOR_INACTIVEBORDER "Inaktiver Rahmen"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "Fensterrahmen"
+ AFX_IDS_COLOR_SCROLLBARS "Bildlaufleisten"
+ AFX_IDS_COLOR_BTNFACE "Schaltfläche"
+ AFX_IDS_COLOR_BTNSHADOW "Schaltflächenschatten"
+ AFX_IDS_COLOR_BTNTEXT "Schaltflächentext"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Schaltflächenhervorhebung"
+ AFX_IDS_COLOR_DISABLEDTEXT "Deaktivierter Text"
+ AFX_IDS_COLOR_HIGHLIGHT "Markierung"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Markierter Text"
+ AFX_IDS_REGULAR "Normal"
+ AFX_IDS_BOLD "Fett"
+ AFX_IDS_ITALIC "Kursiv"
+ AFX_IDS_BOLDITALIC "Fett-kursiv"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Schriftart)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Farbe)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Bild - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Unbekannt"
+ AFX_IDS_PICTYPE_NONE "Kein"
+ AFX_IDS_PICTYPE_BITMAP "Bitmap"
+ AFX_IDS_PICTYPE_METAFILE "Metadatei"
+ AFX_IDS_PICTYPE_ICON "Symbol"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "Farbeigenschaften"
+ AFX_IDS_COLOR_PPG_CAPTION "Farben"
+ AFX_IDS_FONT_PPG "Schrifteigenschaften"
+ AFX_IDS_FONT_PPG_CAPTION "Schriftarten"
+ AFX_IDS_PICTURE_PPG "Bildeigenschaften"
+ AFX_IDS_PICTURE_PPG_CAPTION "Bilder"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - Keiner"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fester einzelner"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Bearbeiten"
+ AFX_IDS_VERB_PROPERTIES "&Eigenschaften..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Bilddatei %1 konnte nicht geöffnet werden. Die Datei existiert möglicherweise nicht oder ist nicht lesbar."
+ AFX_IDP_PICTURECANTLOAD "Bilddatei %1 konnte nicht geladen werden. Die Datei hat möglicherweise ein ungültiges Format."
+ AFX_IDP_PICTURETOOLARGE "Bilddatei %1 konnte nicht geladen werden, da sie nicht in den Speicher paßt."
+ AFX_IDP_PICTUREREADFAILED
+ "Bilddatei %1 konnte nicht geladen werden, da ein unbekannter Lesefehler auftrat."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Bilder durchsuchen"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Ungültiger Funktionsaufruf"
+ AFX_IDP_E_OVERFLOW "Überlauf"
+ AFX_IDP_E_OUTOFMEMORY "Nicht genügend Speicher"
+ AFX_IDP_E_DIVISIONBYZERO "Division durch Null"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Nicht genügend Zeichenfolgenspeicher"
+ AFX_IDP_E_OUTOFSTACKSPACE "Nicht genügend Stack-Speicher"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Ungültiger Dateiname oder -nummer"
+ AFX_IDP_E_FILENOTFOUND "Datei nicht gefunden"
+ AFX_IDP_E_BADFILEMODE "Falscher Dateimodus"
+ AFX_IDP_E_FILEALREADYOPEN "Datei bereits geöffnet"
+ AFX_IDP_E_DEVICEIOERROR "Geräte-E/A-Fehler"
+ AFX_IDP_E_FILEALREADYEXISTS "Datei besteht bereits"
+ AFX_IDP_E_BADRECORDLENGTH "Ungültige Datensatzlänge"
+ AFX_IDP_E_DISKFULL "Datenträger voll"
+ AFX_IDP_E_BADRECORDNUMBER "Ungültige Datensatznummer"
+ AFX_IDP_E_BADFILENAME "Ungültiger Dateiname"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Zu viele Dateien"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Gerät nicht verfügbar"
+ AFX_IDP_E_PERMISSIONDENIED "Zugriff verweigert"
+ AFX_IDP_E_DISKNOTREADY "Laufwerk nicht bereit"
+ AFX_IDP_E_PATHFILEACCESSERROR "Pfad-/Dateizugriffsfehler"
+ AFX_IDP_E_PATHNOTFOUND "Pfad nicht gefunden"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Ungültige Musterzeichenfolge"
+ AFX_IDP_E_INVALIDUSEOFNULL "Ungültige Verwendung von Null"
+ AFX_IDP_E_INVALIDFILEFORMAT "Ungültiges Dateiformat"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Ungültiger Eigenschaftswert"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Ungültiger Feldindex"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Eigenschaft kann nicht zur Laufzeit gesetzt werden"
+ AFX_IDP_E_SETNOTSUPPORTED "Eigenschaft ist schreibgeschützt"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Ein Feldindex muß angegeben sein, wenn ein Eigenschaftsfeld verwendet wird"
+ AFX_IDP_E_SETNOTPERMITTED "Eigenschaft kann für dieses Steuerelement nicht gesetzt werden"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "Eigenschaft kann nicht zur Laufzeit gelesen werden"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Eigenschaft ist lesegeschützt"
+ AFX_IDP_E_PROPERTYNOTFOUND "Eigenschaft nicht gefunden"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Ungültiges Zwischenablageformat"
+ AFX_IDP_E_INVALIDPICTURE "Ungültiges Bild"
+ AFX_IDP_E_PRINTERERROR "Druckerfehler"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Zum Speichern notwendige temporäre Datei kann nicht erstellt werden"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Suchtext nicht gefunden"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Ersetzungstext zu lang"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.deu/afxdb.rc b/public/sdk/inc/mfc42/l.deu/afxdb.rc
new file mode 100644
index 000000000..f3d555795
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Der Verbindungsversuch zur Datenquelle ist gescheitert."
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Datensatzgruppe unterstützt nur Vorwärtsbewegung."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Der Versuch, eine Tabelle zu öffnen, ist fehlgeschlagen, da am angegebenen Ort keine Spalten abgerufen werden konnten."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Von einer Abfrage wurden unerwartete Spaltendatentypen zurückgegeben."
+ AFX_IDP_SQL_ILLEGAL_MODE "Versuch zu aktualisieren oder zu löschen ist fehlgeschlagen."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Es wurden mehrere Zeilen aktualisiert."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operation ist fehlgeschlagen; es gibt keinen aktuellen Datensatz."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Es waren keine Zeilen von der Aktualisierungs- oder Löschoperation betroffen."
+ AFX_IDP_SQL_RECORDSET_READONLY "Datensatzgruppe kann nur gelesen werden."
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "Der ODBC-Treiber unterstützt das MFC-LongBinary-Datenmodell nicht."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Der Versuch, die benötigte Komponente ODBC32.DLL zu laden, ist fehlgeschlagen."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Der ODBC-Treiber unterstützt keine Dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Statische ODBC-Cursor werden zur Unterstützung von Snapshots benötigt."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Der ODBC-Treiber ist inkompatibel zu den MFC-Datenbankklassen (API_CONFORMANCE >= SQL_OAC_LEVEL1 wird benötigt)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Der ODBC-Treiber ist inkompatibel zu den MFC-Datenbankklassen (SQL_CONFORMANCE >= SQL_OSC_MINIMUM wird benötigt)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Es wurde versucht, hinter das Ende oder vor den Anfang der Daten zu gelangen."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Treiber gemäß ODBC Level 2 wird benötigt."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Positionierte Aktualisierungen werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Der angeforderte Sperrmodus wird nicht unterstützt."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Daten abgeschnitten."
+ AFX_IDP_SQL_ROW_FETCH
+ "Fehler beim Abruf eines Datensatzes."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Ein benötigter ODBC-Einsprungspunkt konnte nicht gefunden werden. Überprüfen Sie, ob OBDC korrekt installiert ist."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Fehler bei der Aktualisierungs- oder Löschoperation."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Dynamische Cursor werden vom ODBC-Treiber nicht unterstützt."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Initialisierung des DAO/Jet-Datenbankmoduls nicht möglich."
+ AFX_IDP_DAO_DFX_BIND
+ "Ungültiger DFX-Werteparameter."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO-TableDef oder DAO-QueryDef nicht offen."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Fehler bei GetRows-Operation. Für die Zeile ist nicht genügend Speicher reserviert."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows-Bindungsfehler. Nicht übereinstimmende Datentypen sind wahrscheinlich die Ursache."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Fehler bei GetRows-Operation. Die angeforderte Spalte ist kein Element der Datensatzgruppe."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.deu/afxolecl.rc b/public/sdk/inc/mfc42/l.deu/afxolecl.rc
new file mode 100644
index 000000000..ad4df58c8
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Ein statisches OLE-Objekt kann nicht aktiviert werden."
+ AFX_IDP_FAILED_TO_CONNECT "Fehler beim Verbindungsversuch.\nDie Verbindung ist vielleicht unterbrochen."
+ AFX_IDP_SERVER_BUSY "Der Befehl kann nicht verarbeitet werden, weil der Server beschäftigt ist."
+ AFX_IDP_BAD_VERB "Fehler beim Ausführen der Server-Operation."
+ AFX_IDP_FAILED_TO_LAUNCH "Die Server-Anwendung konnte nicht gestartet werden."
+ AFX_IDS_UPDATING_ITEMS "Aktualisiere OLE-Objekte."
+ AFX_IDP_FAILED_TO_CONVERT "Das OLE-Objekt konnte nicht umgewandelt werden."
+ AFX_IDP_ASK_TO_DISCARD "OLE-Objekte können nicht beim Beenden von Windows gespeichert werden!\nSollen alle Änderungen an %1 verworfen werden?"
+ AFX_IDP_FAILED_TO_CREATE "Fehler beim Erzeugen des Objekts. Stellen Sie sicher, daß das Objekt in der Systemregistrierung eingetragen ist."
+
+ AFX_IDS_METAFILE_FORMAT "Bild (Metadatei)\nein Bild"
+ AFX_IDS_DIB_FORMAT "Geräteunabhängiges Bitmap\nein geräteunabhängiges Bitmap"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\nein Bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\nText mit Schrift- und Absatzformatierung"
+ AFX_IDS_TEXT_FORMAT "Unformatierter Text\nText ohne Formatierung"
+
+ AFX_IDS_INVALID_CURRENCY "Ungültige Währung."
+ AFX_IDS_INVALID_DATETIME "Ungültiges Datum oder ungültige Zeit."
+ AFX_IDS_INVALID_DATETIMESPAN "Ungültige Datums- oder Zeitspanne."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.deu/afxolesv.rc b/public/sdk/inc/mfc42/l.deu/afxolesv.rc
new file mode 100644
index 000000000..323fc96a1
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "%1 vor dem Fortfahren aktualisieren?"
+ AFX_IDP_FAILED_TO_UPDATE, "Client konnte nicht aktualisiert werden."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Fehler bei der Registrierung. Die OLE-Funktionen arbeiten eventuell nicht richtig."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Fehler bei der Aktualisierung der Systemregistrierung.\nVersuchen Sie REGEDIT zu benutzen."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Beenden und zu %1 zurückkehren"
+ AFX_IDS_UPDATE_MENU, "&Aktualisiere %1"
+ AFX_IDS_SAVEFILECOPY, "Kopie speichern unter"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.deu/afxprint.rc b/public/sdk/inc/mfc42/l.deu/afxprint.rc
new file mode 100644
index 000000000..a3cc74f3f
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Drucke",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "auf",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Abbrechen",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Abbrechen",IDCANCEL,46,45,40,15
+ CTEXT "Drücken Sie Cmd-., um abzubrechen.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Vorherige",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Ver&größern",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Ver&kleinern",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Vorherige",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ver&größern",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Ver&kleinern",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Drucken...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Nächste",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Vorh.",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Größer",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Kleiner",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Schließen",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "auf %1" // for print output
+ AFX_IDS_ONEPAGE, "&Eine Seite" // for preview button
+ AFX_IDS_TWOPAGE, "&Zwei Seiten" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Seite %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Seite %u\nSeiten %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Ausgabe.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Drucker-Dateien (*.prn)|*.prn|Alle Dateien (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "In Datei drucken" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "in %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.deu/afxres.rc b/public/sdk/inc/mfc42/l.deu/afxres.rc
new file mode 100644
index 000000000..d01a25668
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.deu/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "Öffnen"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Speichern unter"
+ AFX_IDS_ALLFILTER, "Alle Dateien (*.*)"
+ AFX_IDS_UNTITLED, "Unbenannt"
+#else
+ AFX_IDS_SAVEFILE, "Dokument speichern unter:"
+ AFX_IDS_ALLFILTER, "Alle Dateien"
+ AFX_IDS_UNTITLED, "unbenannt"
+ AFX_IDS_ABOUT, "Info über %1\205"
+#endif
+ AFX_IDS_HIDE, "&Verbergen"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "Nicht genügend Speicher."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Es wurde versucht, eine nicht unterstützte Operation auszuführen."
+ AFX_IDS_RESOURCE_EXCEPTION, "Eine benötigte Ressource ist nicht verfügbar."
+ AFX_IDS_USER_EXCEPTION, "Ein unerwarteter Fehler ist aufgetreten."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "Ungültiger Dateiname."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Fehler beim Öffnen des Dokuments."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Fehler beim Speichern des Dokuments."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Änderungen in %1 speichern?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Änderungen im %1-Dokument \042%2\042 speichern?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Fehler beim Erzeugen eines leeren Dokuments."
+ AFX_IDP_FILE_TOO_LARGE, "Die Datei ist zu groß zum Öffnen."
+ AFX_IDP_FAILED_TO_START_PRINT, "Der Druckauftrag konnte nicht gestartet werden."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Die Hilfe konnte nicht aufgerufen werden."
+ AFX_IDP_INTERNAL_FAILURE, "Interner Anwendungsfehler."
+ AFX_IDP_COMMAND_FAILURE, "Befehl fehlgeschlagen."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Nicht genügend Speicher vorhanden, um Operation auszuführen."
+ AFX_IDP_GET_NOT_SUPPORTED, "Lesen ist wegen der Eigenschaft Nur-Schreiben nicht möglich."
+ AFX_IDP_SET_NOT_SUPPORTED, "Schreiben ist wegen der Eigenschaft Nur-Lesen nicht möglich."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Unerwartetes Dateiformat."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nDiese Datei konnte nicht gefunden werden.\nÜberprüfen Sie, ob der korrekte Pfad und Dateiname angegeben wurde."
+ AFX_IDP_FAILED_DISK_FULL "Das Ziellaufwerk ist voll."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Die Datei \042%1\042 konnte nicht gefunden werden. Überprüfen Sie, ob der korrekte Dateiname angegeben wurde."
+ AFX_IDP_FAILED_DISK_FULL "Das Ziel-Volume ist voll."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Lesen von %1 ist nicht möglich, da von anderem Anwender geöffnet."
+ AFX_IDP_FAILED_ACCESS_WRITE "Schreiben auf %1 ist nicht möglich, da schreibgeschützt oder von anderem Anwender geöffnet."
+ AFX_IDP_FAILED_IO_ERROR_READ "Beim Lesen von %1 ist ein unerwarteter Fehler aufgetreten."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Beim Schreiben von %1 ist ein unerwarteter Fehler aufgetreten."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Geben Sie bitte eine ganze Zahl ein."
+ AFX_IDP_PARSE_REAL, "Geben Sie bitte eine Zahl ein."
+ AFX_IDP_PARSE_INT_RANGE, "Geben Sie bitte eine ganze Zahl zwischen %1 und %2 ein."
+ AFX_IDP_PARSE_REAL_RANGE, "Geben Sie bitte eine Zahl zwischen %1 und %2 ein."
+ AFX_IDP_PARSE_STRING_SIZE, "Geben Sie bitte nicht mehr als %1 Zeichen ein."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Wählen Sie bitte eine Schaltfläche."
+ AFX_IDP_PARSE_BYTE, "Geben Sie bitte eine ganze Zahl zwischen 0 und 255 ein."
+ AFX_IDP_PARSE_UINT, "Geben Sie bitte eine positive ganze Zahl ein."
+ AFX_IDP_PARSE_DATETIME, "Geben Sie bitte ein Datum und/oder eine Zeit ein."
+ AFX_IDP_PARSE_CURRENCY, "Geben Sie bitte eine Währung ein."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Verknüpft: %s"
+ AFX_IDS_UNKNOWNTYPE "Unbekannter Typ"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nRegistrierung des Dokuments nicht möglich.\nDas Dokument ist vielleicht schon geöffnet."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Registrierung des Dokuments \042%1\042 nicht möglich.\nDas Dokument ist vielleicht schon geöffnet."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "Keine Fehlermeldung verfügbar."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "Kein Fehler aufgetreten."
+ AFX_IDP_FILE_GENERIC "Ein unbekannter Fehler ist beim Zugriff auf %1 aufgetreten."
+ AFX_IDP_FILE_NOT_FOUND "%1 wurde nicht gefunden."
+ AFX_IDP_FILE_BAD_PATH "%1 enthält eine ungültige Pfadangabe."
+ AFX_IDP_FILE_TOO_MANY_OPEN "%1 konnte nicht geöffnet werden, da zu viele Dateien geöffnet sind."
+ AFX_IDP_FILE_ACCESS_DENIED "Zugriff auf %1 wurde verwehrt."
+ AFX_IDP_FILE_INVALID_FILE "Eine ungültige Dateikennung war mit %1 verbunden."
+ AFX_IDP_FILE_REMOVE_CURRENT "Das Verzeichnis %1 konnte nicht entfernt werden, da es das aktuelle Verzeichnis ist. "
+ AFX_IDP_FILE_DIR_FULL "%1 konnte nicht erstellt werden, da das Verzeichnis voll ist."
+ AFX_IDP_FILE_BAD_SEEK "Positionierungsfehler auf %1."
+ AFX_IDP_FILE_HARD_IO "Ein Hardware-E/A-Fehler wurde während des Zugriffs auf %1 gemeldet."
+ AFX_IDP_FILE_SHARING "Eine Zugriffsverletzung ist während des Zugriffs auf %1 aufgetreten."
+ AFX_IDP_FILE_LOCKING "Eine Sperrverletzung ist während des Zugriffs auf %1 aufgetreten."
+ AFX_IDP_FILE_DISKFULL "Beim Zugriff auf %1 wurde ein voller Datenträger gemeldet."
+ AFX_IDP_FILE_EOF "Es wurde versucht, auf eine Stelle hinter dem Ende von %1 zuzugreifen."
+ AFX_IDS_UNNAMED_FILE "eine unbenannte Datei"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "Kein Fehler aufgetreten."
+ AFX_IDP_ARCH_GENERIC "Ein unbekannter Fehler ist beim Zugriff auf %1 aufgetreten."
+ AFX_IDP_ARCH_READONLY "%1 ist nur lesbar. Es wurde versucht, darauf zu schreiben."
+ AFX_IDP_ARCH_ENDOFFILE "Es wurde versucht, auf eine Stelle hinter dem Ende von %1 zuzugreifen."
+ AFX_IDP_ARCH_WRITEONLY "%1 ist lesegeschützt. Es wurde versucht, davon zu lesen."
+ AFX_IDP_ARCH_BADINDEX "%1 besitzt ein falsches Format."
+ AFX_IDP_ARCH_BADCLASS "%1 enthielt ein unerwartetes Objekt."
+ AFX_IDP_ARCH_BADSCHEMA "%1 enthält ein falsches Schema."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Systemunterstützung für elektronische Post kann nicht geladen werden."
+ AFX_IDP_INVALID_MAPI_DLL "Die System-DLL für elektronische Post ist ungültig."
+ AFX_IDP_FAILED_MAPI_SEND "\042Nachricht senden\042 scheiterte beim Senden der Nachricht."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "Pixel"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Neu"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Neu",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Abbrechen",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Hilfe",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.esp/afxctl.rc b/public/sdk/inc/mfc42/l.esp/afxctl.rc
new file mode 100644
index 000000000..2992e8e96
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< ¡No se pueden cambiar recursos MFC estándar! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Propiedad:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Fuente:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "Estilo de &fuente:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Tamaño:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Efectos",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Ta&chado",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "S&ubrayado",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Ejemplo",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Propiedad:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Color del sistema:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Propiedad:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Examinar...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Borrar",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Presentación preliminar:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Desconocido)"
+ AFX_IDS_COLOR_DESKTOP "Escritorio"
+ AFX_IDS_COLOR_APPWORKSPACE "Area de trabajo de la aplicación"
+ AFX_IDS_COLOR_WNDBACKGND "Fondo de la ventana"
+ AFX_IDS_COLOR_WNDTEXT "Texto de la ventana"
+ AFX_IDS_COLOR_MENUBAR "Barra del menú"
+ AFX_IDS_COLOR_MENUTEXT "Texto del menú"
+ AFX_IDS_COLOR_ACTIVEBAR "Barra de títulos activa"
+ AFX_IDS_COLOR_INACTIVEBAR "Barra de títulos inactiva"
+ AFX_IDS_COLOR_ACTIVETEXT "Texto de barra de títulos activa"
+ AFX_IDS_COLOR_INACTIVETEXT "Texto de barra de títulos inactiva"
+ AFX_IDS_COLOR_ACTIVEBORDER "Borde activo"
+ AFX_IDS_COLOR_INACTIVEBORDER "Borde inactivo"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "Marco de la ventana"
+ AFX_IDS_COLOR_SCROLLBARS "Barras de desplazamiento"
+ AFX_IDS_COLOR_BTNFACE "Aspecto del botón"
+ AFX_IDS_COLOR_BTNSHADOW "Sombra del botón"
+ AFX_IDS_COLOR_BTNTEXT "Texto del botón"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Resalte de botón"
+ AFX_IDS_COLOR_DISABLEDTEXT "Texto deshabilitado"
+ AFX_IDS_COLOR_HIGHLIGHT "Resaltar"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Texto resaltado"
+ AFX_IDS_REGULAR "Normal"
+ AFX_IDS_BOLD "Negrita"
+ AFX_IDS_ITALIC "Cursiva"
+ AFX_IDS_BOLDITALIC "Negrita cursiva"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Fuente)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Color)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Imagen - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Desconocido"
+ AFX_IDS_PICTYPE_NONE "Ninguno"
+ AFX_IDS_PICTYPE_BITMAP "Mapa de bits"
+ AFX_IDS_PICTYPE_METAFILE "Metaarchivo"
+ AFX_IDS_PICTYPE_ICON "Icono"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "Página de propiedades de colores"
+ AFX_IDS_COLOR_PPG_CAPTION "Colores"
+ AFX_IDS_FONT_PPG "Página de propiedades de fuentes"
+ AFX_IDS_FONT_PPG_CAPTION "Fuentes"
+ AFX_IDS_PICTURE_PPG "Página de propiedades de imágenes"
+ AFX_IDS_PICTURE_PPG_CAPTION "Imágenes"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - Ninguno"
+ AFX_IDS_BORDERSTYLE_1 "1 - Simple fijo "
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Editar"
+ AFX_IDS_VERB_PROPERTIES "&Propiedades..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Imposible abrir el archivo de imágenes %1. Puede que el archivo no exista o no se pueda leer."
+ AFX_IDP_PICTURECANTLOAD "Imposible cargar el archivo de imágenes %1. Puede que el archivo tenga un formato no válido."
+ AFX_IDP_PICTURETOOLARGE "Imposible cargar el archivo de imágenes %1. El archivo es demasiado grande para caber en la memoria."
+ AFX_IDP_PICTUREREADFAILED
+ "Imposible cargar el archivo de imágenes %1. Error de lectura desconocido."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Examinar imágenes"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Llamada no válida a función"
+ AFX_IDP_E_OVERFLOW "Desbordamiento"
+ AFX_IDP_E_OUTOFMEMORY "No hay suficiente memoria"
+ AFX_IDP_E_DIVISIONBYZERO "División por cero"
+ AFX_IDP_E_OUTOFSTRINGSPACE "No hay suficiente espacio para cadenas"
+ AFX_IDP_E_OUTOFSTACKSPACE "No hay suficiente espacio de pila"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Nombre o número de archivo incorrecto"
+ AFX_IDP_E_FILENOTFOUND "No se ha encontrado el archivo"
+ AFX_IDP_E_BADFILEMODE "Modo de archivo incorrecto"
+ AFX_IDP_E_FILEALREADYOPEN "El archivo ya está abierto"
+ AFX_IDP_E_DEVICEIOERROR "Error de E/S de dispositivo"
+ AFX_IDP_E_FILEALREADYEXISTS "El archivo ya existe"
+ AFX_IDP_E_BADRECORDLENGTH "La longitud de registro es incorrecta"
+ AFX_IDP_E_DISKFULL "El disco está lleno"
+ AFX_IDP_E_BADRECORDNUMBER "El número de registro es incorrecto"
+ AFX_IDP_E_BADFILENAME "Nombre de archivo incorrecto"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Demasiados archivos"
+ AFX_IDP_E_DEVICEUNAVAILABLE "El dispositivo no está disponible"
+ AFX_IDP_E_PERMISSIONDENIED "Permiso denegado"
+ AFX_IDP_E_DISKNOTREADY "El disco no está listo"
+ AFX_IDP_E_PATHFILEACCESSERROR "Error de acceso a la ruta o el archivo"
+ AFX_IDP_E_PATHNOTFOUND "No se ha encontrado la ruta de acceso"
+ AFX_IDP_E_INVALIDPATTERNSTRING "La cadena modelo no es válida"
+ AFX_IDP_E_INVALIDUSEOFNULL "Uso no válido de Null"
+ AFX_IDP_E_INVALIDFILEFORMAT "Formato de archivo no válido"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "El valor de la propiedad no es válido"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Índice de matriz no válido"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "No se puede establecer la propiedad en tiempo de ejecución"
+ AFX_IDP_E_SETNOTSUPPORTED "La propiedad es de sólo lectura"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Se debe especificar el índice de matriz cuando se usa una matriz de propiedades"
+ AFX_IDP_E_SETNOTPERMITTED "No se puede establecer la propiedad en este control"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "No se puede leer la propiedad en tiempo de ejecución"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "La propiedad es de sólo escritura"
+ AFX_IDP_E_PROPERTYNOTFOUND "No se ha encontrado la propiedad"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "El formato del portapapeles no es válido"
+ AFX_IDP_E_INVALIDPICTURE "La imagen no es válida"
+ AFX_IDP_E_PRINTERERROR "Error de la impresora"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "No se puede crear el archivo temporal necesario para guardar"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "No se encontró el texto de búsqueda"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "El texto de reemplazo es demasiado largo"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.esp/afxdb.rc b/public/sdk/inc/mfc42/l.esp/afxdb.rc
new file mode 100644
index 000000000..833c375eb
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar. >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Imposible conectarse al origen de datos"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Recordset sólo admite movimiento hacia adelante."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Imposible abrir tabla, no hay columnas en la posición especificada."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "Se obtuvieron tipos de datos inesperados de la consulta."
+ AFX_IDP_SQL_ILLEGAL_MODE "Imposible Actualizar o Eliminar."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Filas actualizadas."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "La operación ha fallado, no hay registro actual."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "La operación de actualización o de eliminación no afectó a ninguna fila."
+ AFX_IDP_SQL_RECORDSET_READONLY "Recordset es de sólo lectura"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "El controlador ODBC no admite el modelo de datos MFC LongBinary."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Imposible cargar ODBC32.DLL."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "El controlador ODBC no admite dynasets."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Se requieren cursores estáticos ODBC para compatibilidad con snapshot."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Controlador ODBC incompatible con clases de bases de datos MFC (se requiere que API_CONFORMANCE >=SQL_OAC_LEVEL1)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Controlador ODBC incompatible con clases de bases de datos MFC (se requiere que API_CONFORMANCE >=SQL_OAC_LEVEL1)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Se intentó desplazarse más allá del fin o antes del inicio de los datos."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "El controlador ODBC no admite dynasets."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Se requiere un controlador ODBC que cumpla con el Nivel 2."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "El controlador ODBC no admite actualizaciones posicionadas."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "No se admite el modo de bloqueo solicitado."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Datos truncados."
+ AFX_IDP_SQL_ROW_FETCH
+ "Error al recuperar registro."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "No se encontró un punto de entrada ODBC requerido. Compruebe que ODBC esté instalado correctamente."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Falló actualización o eliminación."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "El controlador ODBC no admite cursores dinámicos."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Imposible inicializar motor de base de datos DAO/Jet."
+ AFX_IDP_DAO_DFX_BIND
+ "Parámetro de valor DFX incorrecto."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef o QueryDef no está abierto."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Falló GetRows. No hay suficiente memoria asignada a la fila."
+ AFX_IDP_DAO_BADBINDINFO
+ "Error de enlace de GetRows; es posible que algún tipo de datos no coincida."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Falló GetRows. La solicitud de columna no es miembro de este recordset."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.esp/afxolecl.rc b/public/sdk/inc/mfc42/l.esp/afxolecl.rc
new file mode 100644
index 000000000..78589cf24
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Imposible cambiar recursos MFC estándar. >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Imposible activar un objeto OLE estático."
+ AFX_IDP_FAILED_TO_CONNECT "Imposible conectar.\nVínculo puede estar roto."
+ AFX_IDP_SERVER_BUSY "Imposible procesar el comando, servidor ocupado."
+ AFX_IDP_BAD_VERB "Imposible efectuar operación del servidor."
+ AFX_IDP_FAILED_TO_LAUNCH "Imposible ejecutar la aplicación del servidor."
+ AFX_IDS_UPDATING_ITEMS "Actualizando objetos OLE"
+ AFX_IDP_FAILED_TO_CONVERT "Imposible convertir objeto OLE."
+ AFX_IDP_ASK_TO_DISCARD "¡Imposible guardar objetos OLE al salir de Windows!\n¿Descartar todos los cambios a %1?"
+ AFX_IDP_FAILED_TO_CREATE "Failed to create object. Make sure the application is entered in the system registry."
+
+ AFX_IDS_METAFILE_FORMAT "Imagen (Metarchivo)\nuna imagen"
+ AFX_IDS_DIB_FORMAT "Mapa de bits independiente de dispositivos\nun mapa de bits independiente de dispositivos"
+ AFX_IDS_BITMAP_FORMAT "Mapa de bits\nun mapa de bits"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Formato de texto enriquecido (RTF)\ntexto con formato de fuentes y párrafos"
+ AFX_IDS_TEXT_FORMAT "Texto sin formato\ntexto sin ningún tipo de formato"
+
+ AFX_IDS_INVALID_CURRENCY "Moneda no válida."
+ AFX_IDS_INVALID_DATETIME "DateTime no válido."
+ AFX_IDS_INVALID_DATETIMESPAN "DateTimeSpan no válido."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.esp/afxolesv.rc b/public/sdk/inc/mfc42/l.esp/afxolesv.rc
new file mode 100644
index 000000000..cf80c0958
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar. >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "¿Actualizar %1 antes de continuar?"
+ AFX_IDP_FAILED_TO_UPDATE, "Imposible actualizar el cliente."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Imposible registrar. Puede que las funciones OLE no funcionen debidamente."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Imposible actualizar el registro del sistema.\nIntente con REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 en %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Salir y volvera %1"
+ AFX_IDS_UPDATE_MENU, "&Actualizar %1"
+ AFX_IDS_SAVEFILECOPY, "Guardar copia como"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.esp/afxprint.rc b/public/sdk/inc/mfc42/l.esp/afxprint.rc
new file mode 100644
index 000000000..52d914857
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Imprimiendo",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "en la",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Cancelar",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Cancelar",IDCANCEL,46,45,40,15
+ CTEXT "Presione Cmd-. para cancelar.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Imprimir...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Siguiente",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Anterior",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Ac&ercar",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "A&lejar",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Cerrar",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimir...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Siguiente",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Anterior",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ac&ercar",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "A&lejar",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Cerrar",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimir...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Sig.",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Ant.",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "Ac&ercar",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "A&lejar",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Cerrar",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "en %1" // for print output
+ AFX_IDS_ONEPAGE, "&Una página" // for preview button
+ AFX_IDS_TWOPAGE, "&Dos páginas" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Página %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Página %u\nPáginas %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Archivos de impresora (*.prn)|*.prn|Todos los archivos (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Imprimir a archivo" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "a %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.esp/afxres.rc b/public/sdk/inc/mfc42/l.esp/afxres.rc
new file mode 100644
index 000000000..613c833ed
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.esp/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< No se pueden cambiar recursos MFC estándar. >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "Abrir"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Guardar como"
+ AFX_IDS_ALLFILTER, "Todos los archivos (*.*)"
+ AFX_IDS_UNTITLED, "Sin título"
+#else
+ AFX_IDS_SAVEFILE, "Guardar documento como:"
+ AFX_IDS_ALLFILTER, "Todos los archivos"
+ AFX_IDS_UNTITLED, "sin título"
+ AFX_IDS_ABOUT, "Acerca de %1\205"
+#endif
+ AFX_IDS_HIDE, "&Ocultar"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "No hay suficiente memoria."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Se intentó una operación no permitida."
+ AFX_IDS_RESOURCE_EXCEPTION, "Rcurso necesario no disponible."
+ AFX_IDS_USER_EXCEPTION, "Se encontr¢ un error desconocido."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "Nombre de archivo no válido."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Imposible abrir documento."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Imposible guardar documento."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "¿Guardar cambios a %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "¿Guardar cambios al documento %1 \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Imposible crear el documento vacío."
+ AFX_IDP_FILE_TOO_LARGE, "Archivo demasiado grande."
+ AFX_IDP_FAILED_TO_START_PRINT, "Imposible iniciar impresión."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Imposible ejecutar la ayuda."
+ AFX_IDP_INTERNAL_FAILURE, "Error interno de la aplicación."
+ AFX_IDP_COMMAND_FAILURE, "Falló el comando."
+ AFX_IDP_FAILED_MEMORY_ALLOC "No hay suficiente memoria para efectuar la operación."
+ AFX_IDP_GET_NOT_SUPPORTED, "Imposible leer una propiedad de sólo escritura."
+ AFX_IDP_SET_NOT_SUPPORTED, "Imposible escribir en una propiedad de sólo lectura."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Formato de archivo no esperado."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nImposible encontrar este archivo.\nCompruebe que la ruta y el nombre de archivo son correctos"
+ AFX_IDP_FAILED_DISK_FULL "La unidad de disco de destino está llena."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Imposible encontrar el archivo \042%1.\042 Compruebe que el nombre de archivo es correcto."
+ AFX_IDP_FAILED_DISK_FULL "El disco de destino está lleno."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Imposible leer de %1, alguien más lo ha abierto."
+ AFX_IDP_FAILED_ACCESS_WRITE "Imposible escribir en %1, es de sólo lectura o alguien más lo ha abierto."
+ AFX_IDP_FAILED_IO_ERROR_READ "Error inesperado al leer %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Error inesperado al escribir en %1."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Introduzca un número entero."
+ AFX_IDP_PARSE_REAL, "Introduzca un número."
+ AFX_IDP_PARSE_INT_RANGE, "Introduzca un número entero entre %1 y %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Introduzca un número entre %1 y %2."
+ AFX_IDP_PARSE_STRING_SIZE, "No introduzca más de %1 caracteres."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Seleccione un botón."
+ AFX_IDP_PARSE_BYTE, "Introduzca un número entero entre 0 y 255."
+ AFX_IDP_PARSE_UINT, "Introduzca un número entero positivo."
+ AFX_IDP_PARSE_DATETIME, "Introduzca una fecha y/o una hora."
+ AFX_IDP_PARSE_CURRENCY, "Introduzca una moneda."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s vinculado"
+ AFX_IDS_UNKNOWNTYPE "Tipo desconocido"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nImposible registrar el documento.\nPuede que el documento ya esté abierto."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Imposible registrar el documento. \042%1.\042 Puede que el documento ya esté abierto."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "No hay ningún mensaje de error disponible."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "No ha ocurrido ningún error."
+ AFX_IDP_FILE_GENERIC "Error desconocido al acceder a %1."
+ AFX_IDP_FILE_NOT_FOUND "No se encontró %1."
+ AFX_IDP_FILE_BAD_PATH "%1 contiene una ruta no válida."
+ AFX_IDP_FILE_TOO_MANY_OPEN "Imposible abrir %1, hay demasiados archivos abiertos."
+ AFX_IDP_FILE_ACCESS_DENIED "Acceso denegado a %1."
+ AFX_IDP_FILE_INVALID_FILE "Controlador no válido asociado a %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "Imposible eliminar %1 porque es el directorio actual."
+ AFX_IDP_FILE_DIR_FULL "Imposible crear %1 porque el directorio está lleno."
+ AFX_IDP_FILE_BAD_SEEK "Fin de búsqueda en %1 "
+ AFX_IDP_FILE_HARD_IO "Error de E/S de hardware al acceder a %1."
+ AFX_IDP_FILE_SHARING "Violación de acceso compartido al acceder a %1."
+ AFX_IDP_FILE_LOCKING "Violación de bloqueo al acceder %1. "
+ AFX_IDP_FILE_DISKFULL "Disco lleno al acceder a %1."
+ AFX_IDP_FILE_EOF "Se intentó acceder a %1 más allá del final."
+ AFX_IDS_UNNAMED_FILE "un archivo sin nombre"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "No ha ocurrido ningún error."
+ AFX_IDP_ARCH_GENERIC "Error desconocido al acceder a %1."
+ AFX_IDP_ARCH_READONLY "Se intentó escribir en %1 mientras se lo estaba leyendo."
+ AFX_IDP_ARCH_ENDOFFILE "Se intentó acceder a %1 más allá del final."
+ AFX_IDP_ARCH_WRITEONLY "Se intentó leer de %1 mientras estaba escribiendo."
+ AFX_IDP_ARCH_BADINDEX "%1 tiene un formato incorrecto."
+ AFX_IDP_ARCH_BADCLASS "%1 contiene un objeto inesperado."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contiene un esquema incorrecto."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Imposible cargar el soporte del sistema de correo."
+ AFX_IDP_INVALID_MAPI_DLL "La DLL del sistema de correo no es válida."
+ AFX_IDP_FAILED_MAPI_SEND "Enviar correo no envió el mensaje."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "píxeles"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Nuevo"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nuevo ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Aceptar",IDOK,137,6,40,14
+ PUSHBUTTON "Cancelar",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Ayuda",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.fra/afxctl.rc b/public/sdk/inc/mfc42/l.fra/afxctl.rc
new file mode 100644
index 000000000..8d7cc8996
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nom de propriété:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "Po&lice:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "St&yle de police:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Taille:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effets",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "&Barré",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Souligné",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Exemple",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nom de propriété:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Couleur système:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nom de propriété:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "Pa&rcourir...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Effacer",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Aperçu:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Inconnu)"
+ AFX_IDS_COLOR_DESKTOP "Bureau"
+ AFX_IDS_COLOR_APPWORKSPACE "Espace de travail de l'application"
+ AFX_IDS_COLOR_WNDBACKGND "Arrière-plan de la fenêtre"
+ AFX_IDS_COLOR_WNDTEXT "Texte de la fenêtre"
+ AFX_IDS_COLOR_MENUBAR "Barre de menu"
+ AFX_IDS_COLOR_MENUTEXT "Texte de menu"
+ AFX_IDS_COLOR_ACTIVEBAR "Barre de titre active"
+ AFX_IDS_COLOR_INACTIVEBAR "Barre de titre inactive"
+ AFX_IDS_COLOR_ACTIVETEXT "Texte de la barre de titre active"
+ AFX_IDS_COLOR_INACTIVETEXT "Texte de la barre de titre inactive"
+ AFX_IDS_COLOR_ACTIVEBORDER "Bordure active"
+ AFX_IDS_COLOR_INACTIVEBORDER "Bordure inactive"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "Cadre de la fenêtre"
+ AFX_IDS_COLOR_SCROLLBARS "Barres de défilement"
+ AFX_IDS_COLOR_BTNFACE "Face du bouton"
+ AFX_IDS_COLOR_BTNSHADOW "Ombre du bouton"
+ AFX_IDS_COLOR_BTNTEXT "Texte du bouton"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Surbrillance du bouton"
+ AFX_IDS_COLOR_DISABLEDTEXT "Texte désactivé"
+ AFX_IDS_COLOR_HIGHLIGHT "Surbrillance"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Texte en surbrillance"
+ AFX_IDS_REGULAR "Normal"
+ AFX_IDS_BOLD "Gras"
+ AFX_IDS_ITALIC "Italique"
+ AFX_IDS_BOLDITALIC "Italique gras"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Police)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Couleur)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Image - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Inconnu"
+ AFX_IDS_PICTYPE_NONE "Aucun"
+ AFX_IDS_PICTYPE_BITMAP "Image en mode point"
+ AFX_IDS_PICTYPE_METAFILE "Métafichier"
+ AFX_IDS_PICTYPE_ICON "Icône"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "Page de propriété de couleur"
+ AFX_IDS_COLOR_PPG_CAPTION "Couleurs"
+ AFX_IDS_FONT_PPG "Page de propriété de police"
+ AFX_IDS_FONT_PPG_CAPTION "Polices"
+ AFX_IDS_PICTURE_PPG "Page de propriété d'image"
+ AFX_IDS_PICTURE_PPG_CAPTION "Images"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - Aucun"
+ AFX_IDS_BORDERSTYLE_1 "1 - Trait simple"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Modifier"
+ AFX_IDS_VERB_PROPERTIES "&Propriétés..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Impossible d'ouvrir le fichier image %1. Le fichier peut ne pas exister, ou peut ne pas être lisible."
+ AFX_IDP_PICTURECANTLOAD "Impossible de charger le fichier image %1. Le fichier peut avoir un format incorrect."
+ AFX_IDP_PICTURETOOLARGE "Impossible de charger le fichier image %1. Le fichier est trop grand pour tenir en mémoire."
+ AFX_IDP_PICTUREREADFAILED
+ "Impossible de charger le fichier image %1. Echec à la lecture."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Parcourir les images"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Appel de fonction incorrect"
+ AFX_IDP_E_OVERFLOW "Dépassement de capacité"
+ AFX_IDP_E_OUTOFMEMORY "Mémoire épuisée"
+ AFX_IDP_E_DIVISIONBYZERO "Division par zéro"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Espace de chaîne insuffisant"
+ AFX_IDP_E_OUTOFSTACKSPACE "Espace pile insuffisant"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Nom ou numéro de fichier incorrect"
+ AFX_IDP_E_FILENOTFOUND "Fichier introuvable"
+ AFX_IDP_E_BADFILEMODE "Mode d'accès au fichier incorrect"
+ AFX_IDP_E_FILEALREADYOPEN "Fichier déjà ouvert"
+ AFX_IDP_E_DEVICEIOERROR "Erreur d'entrée/sortie de périphérique"
+ AFX_IDP_E_FILEALREADYEXISTS "Ce fichier existe déjà"
+ AFX_IDP_E_BADRECORDLENGTH "Longueur d'enregistrement incorrecte"
+ AFX_IDP_E_DISKFULL "Disque plein"
+ AFX_IDP_E_BADRECORDNUMBER "Numéro d'enregistrement incorrect"
+ AFX_IDP_E_BADFILENAME "Nom de fichier incorrect"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Trop de fichiers"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Périphérique non disponible"
+ AFX_IDP_E_PERMISSIONDENIED "Permission refusée"
+ AFX_IDP_E_DISKNOTREADY "Disque non prêt"
+ AFX_IDP_E_PATHFILEACCESSERROR "Erreur dans le chemin d'accès"
+ AFX_IDP_E_PATHNOTFOUND "Chemin d'accès introuvable"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Chaîne de motif incorrecte"
+ AFX_IDP_E_INVALIDUSEOFNULL "Utilisation incorrecte de NULL"
+ AFX_IDP_E_INVALIDFILEFORMAT "Format de fichier incorrect"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Valeur de propriété incorrecte"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Index de tableau incorrect"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "La propriété ne peut pas être définie au moment de l'exécution"
+ AFX_IDP_E_SETNOTSUPPORTED "Propriété en lecture seule"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Vous devez spécifier un index de tableau lorsque vous utilisez un tableau de propriété"
+ AFX_IDP_E_SETNOTPERMITTED "Cette propriété ne peut pas être définie pour ce contrôle"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "La propriété ne peut pas être lue au moment de l'exécution"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Propriété en écriture seule"
+ AFX_IDP_E_PROPERTYNOTFOUND "Propriété introuvable"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Format de Presse-papiers incorrect"
+ AFX_IDP_E_INVALIDPICTURE "Image incorrecte"
+ AFX_IDP_E_PRINTERERROR "Erreur d'imprimante"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Impossible de créer le fichier temporaire nécessaire pour l'enregistrement"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Texte recherché introuvable"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Texte de remplacement trop long"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.fra/afxdb.rc b/public/sdk/inc/mfc42/l.fra/afxdb.rc
new file mode 100644
index 000000000..ac937e9a5
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Tentative infructueuse de connexion à la source de données"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Le jeu d'enregistrements n'accepte que les déplacements vers l'avant."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Tentative infructueuse d'ouverture de table - colonnes à extraire introuvables à l'endroit spécifié."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "La requête a renvoyé des types de données de colonnes inattendus."
+ AFX_IDP_SQL_ILLEGAL_MODE "Tentative infructueuse de Mise à jour ou de Suppression."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Plusieurs lignes ont été mises à jour."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "L'opération a échoué, pas d'enregistrement en cours"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Aucune ligne n'a été affectée par l'opération de mise à jour ou de suppression."
+ AFX_IDP_SQL_RECORDSET_READONLY "Le jeu d'enregistrements est en lecture seule"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "Le pilote ODBC ne prend pas en charge le modèle de données LongBinary MFC."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Tentative infructueuse de chargement de l'élément ODBC32.DLL."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Le gestionnaire ODBC ne prend pas en charge les feuilles de réponses dynamiques."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Curseurs ODBC statiques requis pour la prise en charge des instantanés."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Gestionnaire ODBC incompatible avec les classes de bases de données MFC (API_CONFORMANCE >= SQL_OAC_LEVEL1 requis)."
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Gestionnaire ODBC incompatible avec les classes de bases de données MFC (SQL_CONFORMANCE >= SQL_OSC_MINIMUM requis)."
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Tentative de défilement après la fin ou avant le début des données."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Feuilles de réponses dynamiques non prises en charge par le gestionnaire ODBC."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "Gestionnaire ODBC conforme Niveau 2 (Level 2) requis."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Les mises à jour programmées ne sont pas prises en charge par le gestionnaire ODBC."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "Le mode de verrouillage requis n'est pas accepté."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Données tronquées."
+ AFX_IDP_SQL_ROW_FETCH
+ "Erreur de récupération de l'enregistrement."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Un point d'entrée ODBC requis est introuvable. Vérifiez qu'ODBC est correctement installé."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Echec de la mise à jour ou de la suppression."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Curseurs dynamiques non pris en charge par le pilote ODBC."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Impossible d'initialiser le moteur de base de données DAO/Jet."
+ AFX_IDP_DAO_DFX_BIND
+ "Valeur du paramètre DFX incorrecte."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef ou QueryDef non ouverts."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Echec de GetRows. Mémoire allouée insuffisante pour la ligne."
+ AFX_IDP_DAO_BADBINDINFO
+ "Erreur de liens GetRows. Ceci est probablement du à une mauvaise correspondance de types de données."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Echec de GetRows. La colonne demandée n'est pas un membre de ce jeu d'enregistrements."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.fra/afxolecl.rc b/public/sdk/inc/mfc42/l.fra/afxolecl.rc
new file mode 100644
index 000000000..99d33dac0
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Impossible d'activer un objet OLE statique."
+ AFX_IDP_FAILED_TO_CONNECT "La connexion a échoué. \nLa liaison est peut être rompue."
+ AFX_IDP_SERVER_BUSY "Impossible d'exécuter la commande, le serveur est occupé."
+ AFX_IDP_BAD_VERB "Erreur lors de l'exécution de l'opération par l'application serveur."
+ AFX_IDP_FAILED_TO_LAUNCH "Erreur lors du démarrage d'une application serveur."
+ AFX_IDS_UPDATING_ITEMS "Mise à jour des objets OLE"
+ AFX_IDP_FAILED_TO_CONVERT "La conversion de l'objet OLE a échoué."
+ AFX_IDP_ASK_TO_DISCARD "Impossible d'enregistrer des objets OLE lorsque vous quittez Windows!\nSupprimer toutes les modifications apportées à %1?"
+ AFX_IDP_FAILED_TO_CREATE "Echec de création de l'objet. Vérifiez que l'application est entrée dans le registre du système."
+
+ AFX_IDS_METAFILE_FORMAT "Image (métafichier)\na image"
+ AFX_IDS_DIB_FORMAT "Image en mode point indépendante du périphérique\na image en mode point indépendante du périphérique"
+ AFX_IDS_BITMAP_FORMAT "Image en mode point\na image en mode point"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich Text (RTF)\ntexte avec du formatage de police et de paragraphe"
+ AFX_IDS_TEXT_FORMAT "Texte non formaté\ntexte sans aucun formatage"
+
+ AFX_IDS_INVALID_CURRENCY "Monnaie non valide."
+ AFX_IDS_INVALID_DATETIME "DateTime non valide."
+ AFX_IDS_INVALID_DATETIMESPAN "DateTimeSpan non valide."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.fra/afxolesv.rc b/public/sdk/inc/mfc42/l.fra/afxolesv.rc
new file mode 100644
index 000000000..8d29df2b7
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Mettre à jour %1 avant de continuer?"
+ AFX_IDP_FAILED_TO_UPDATE, "Impossible de mettre à jour le client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "L'enregistrement a échoué. Il se peut que les fonctions OLE ne fonctionnent pas correctement."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "La mise à jour du registre du système a échoué. \nEssayez d'utiliser REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 dans %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Quitter et retourner à %1"
+ AFX_IDS_UPDATE_MENU, "Mise à jo&ur de %1"
+ AFX_IDS_SAVEFILECOPY, "Enregistrer la copie sous"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.fra/afxprint.rc b/public/sdk/inc/mfc42/l.fra/afxprint.rc
new file mode 100644
index 000000000..d8572b05c
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Impression",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "sur",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Annuler",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Annuler",IDCANCEL,46,45,40,15
+ CTEXT "Appuyer sur Cmd-. pour annuler l'impression.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "&Suivante",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "&Précédente",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Zoom ava&nt",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Zoom a&rrière",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Suivante",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "&Précédente",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Zoom ava&nt",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Zoom a&rrière",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "&Imprimer...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Suivant",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "&Précédent",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Avant",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "A&rrière",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Fermer",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "sur %1" // for print output
+ AFX_IDS_ONEPAGE, "&Une page" // for preview button
+ AFX_IDS_TWOPAGE, "&Deux pages" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Page %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Page %u\nPages %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "Fichiers imprimante (*.prn)|*.prn|Tous (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Imprime vers un fichier" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "vers %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.fra/afxres.rc b/public/sdk/inc/mfc42/l.fra/afxres.rc
new file mode 100644
index 000000000..46400816b
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.fra/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Cannot change standard MFC resources! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "Ouvrir"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Enregistrer sous"
+ AFX_IDS_ALLFILTER, "Tous les fichiers (*.*)"
+ AFX_IDS_UNTITLED, "sans nom"
+#else
+ AFX_IDS_SAVEFILE, "Enregistrer le document sous :"
+ AFX_IDS_ALLFILTER, "Tous les fichiers"
+ AFX_IDS_UNTITLED, "sans nom"
+ AFX_IDS_ABOUT, "A propos de %1\205"
+#endif
+ AFX_IDS_HIDE, "&Masquer"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "Mémoire insuffisante."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Une opération non prise en charge a été tentée."
+ AFX_IDS_RESOURCE_EXCEPTION, "Une ressource requise était non disponible."
+ AFX_IDS_USER_EXCEPTION, "Une erreur inconnue s'est produite."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "Nom de fichier non valide."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "L'ouverture du document a échoué."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "L'enregistrement du document a échoué."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Enregistrer les modifications apportées à %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Enregistrer les modifications apportées au document %1 \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "La création d'un document vide a échoué."
+ AFX_IDP_FILE_TOO_LARGE, "Le fichier est trop volumineux pour être ouvert."
+ AFX_IDP_FAILED_TO_START_PRINT, "Impossible de lancer l'impression."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Le démarrage de l'aide a échoué."
+ AFX_IDP_INTERNAL_FAILURE, "Erreur d'application interne."
+ AFX_IDP_COMMAND_FAILURE, "La commande a échoué."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Mémoire insuffisante pour exécuter l'opération."
+ AFX_IDP_GET_NOT_SUPPORTED, "Impossible de lire une propriété en écriture seule."
+ AFX_IDP_SET_NOT_SUPPORTED, "Impossible d'écrire une propriété en lecture seule."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Format de fichier inattendu."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nImpossible de trouver ce fichier. Vérifiez que le chemin et le nom du fichier sont corrects."
+ AFX_IDP_FAILED_DISK_FULL "Le lecteur de disque de destination est plein."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Impossible de trouver le fichier \042%1.\042. Vérifiez que le nom du fichier est correct."
+ AFX_IDP_FAILED_DISK_FULL "Le disque de destination est plein."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Impossible de lire à partir de %1, il est en cours d'utilisation."
+ AFX_IDP_FAILED_ACCESS_WRITE "Impossible d'écrire sur %1, il est en lecture seule ou en cours d'utilisation."
+ AFX_IDP_FAILED_IO_ERROR_READ "Une erreur inattendue s'est produite lors de la lecture de %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Une erreur inattendue s'est produite lors de l'écriture de %1."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Tapez un nombre entier."
+ AFX_IDP_PARSE_REAL, "Tapez un nombre."
+ AFX_IDP_PARSE_INT_RANGE, "Tapez un nombre entier compris entre %1 et %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Tapez un nombre compris entre %1 et %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Tapez %1 caractères au maximum."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Choisissez un bouton."
+ AFX_IDP_PARSE_BYTE, "Veuillez entrer un entier compris entre 0 et 255."
+ AFX_IDP_PARSE_UINT, "Veuillez entrer un entier positif."
+ AFX_IDP_PARSE_DATETIME, "Veuillez entrer une date et/ou une heure."
+ AFX_IDP_PARSE_CURRENCY, "Veuillez entrer une monnaie."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s lié(e)"
+ AFX_IDS_UNKNOWNTYPE "Type inconnu"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nImpossible d'enregistrer le document. \nLe document est peut-être déjà ouvert."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Impossible d'enregistrer le document \042%1.\042. Le document est peut-être déjà ouvert."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "Aucun message d'erreur n'est disponible."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "Aucune erreur ne s'est produite."
+ AFX_IDP_FILE_GENERIC "Une erreur inconnue s'est produite lors de l'accès à %1."
+ AFX_IDP_FILE_NOT_FOUND "Impossible de trouver %1."
+ AFX_IDP_FILE_BAD_PATH "%1 contient un chemin non valide."
+ AFX_IDP_FILE_TOO_MANY_OPEN "Impossible d'ouvrir %1 car il y a trop de fichiers ouverts."
+ AFX_IDP_FILE_ACCESS_DENIED "L'accès à %1 a été refusé."
+ AFX_IDP_FILE_INVALID_FILE "Un descripteur de fichier non valide a été associé à %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "Impossible d'enlever %1 car c'est le répertoire courant."
+ AFX_IDP_FILE_DIR_FULL "Impossible de créer %1 car le répertoire est plein."
+ AFX_IDP_FILE_BAD_SEEK "Echec de la recherche sur %1"
+ AFX_IDP_FILE_HARD_IO "Une erreur d'E/S matérielle a été reportée lors de l'accès à %1."
+ AFX_IDP_FILE_SHARING "Une violation de partage s'est produite lors de l'accès à %1."
+ AFX_IDP_FILE_LOCKING "Une violation de verrouillage s'est produite lors de l'accès à %1."
+ AFX_IDP_FILE_DISKFULL "Disque plein lors de l'accès à %1."
+ AFX_IDP_FILE_EOF "Tentative d'accès à %1 après sa fin."
+ AFX_IDS_UNNAMED_FILE "un fichier non nommé"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "Aucune erreur ne s'est produite."
+ AFX_IDP_ARCH_GENERIC "Une erreur inconnue s'est produite lors de l'accès à %1."
+ AFX_IDP_ARCH_READONLY "Tentative d'écriture de %1 ouvert pour la lecture."
+ AFX_IDP_ARCH_ENDOFFILE "Tentative d'accès à %1 après sa fin."
+ AFX_IDP_ARCH_WRITEONLY "Tentative de lecture de %1 ouvert pour l'écriture."
+ AFX_IDP_ARCH_BADINDEX "%1 a un mauvais format."
+ AFX_IDP_ARCH_BADCLASS "%1 contient un objet inattendu."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contient un schéma incorrect."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Impossible de charger la prise en charge du système de messagerie électronique."
+ AFX_IDP_INVALID_MAPI_DLL "La DLL système de la messagerie n'est pas valide."
+ AFX_IDP_FAILED_MAPI_SEND "La messagerie électronique n'a pas pu envoyer le message."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "pixels"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Nouveau"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nouveau",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Annuler",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&Aide",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.ita/afxctl.rc b/public/sdk/inc/mfc42/l.ita/afxctl.rc
new file mode 100644
index 000000000..4d3dd63ef
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Proprietà:",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Tipo di carattere:",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "St&ile:",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Dimensione:",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Effetti",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Bar&rato",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "&Sottolineato",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "Esempio",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Proprietà:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "&Colore di sistema:",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Proprietà:",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "&Sfoglia...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "&Cancella",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "Anteprima:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Sconosciuto)"
+ AFX_IDS_COLOR_DESKTOP "Desktop"
+ AFX_IDS_COLOR_APPWORKSPACE "Area di lavoro dell'applicazione"
+ AFX_IDS_COLOR_WNDBACKGND "Sfondo della finestra"
+ AFX_IDS_COLOR_WNDTEXT "Testo della finestra"
+ AFX_IDS_COLOR_MENUBAR "Barra dei menu"
+ AFX_IDS_COLOR_MENUTEXT "Testo dei menu"
+ AFX_IDS_COLOR_ACTIVEBAR "Barra del titolo attiva"
+ AFX_IDS_COLOR_INACTIVEBAR "Barra del titolo inattiva"
+ AFX_IDS_COLOR_ACTIVETEXT "Testo della barra del titolo attiva"
+ AFX_IDS_COLOR_INACTIVETEXT "Testo della barra del titolo inattiva"
+ AFX_IDS_COLOR_ACTIVEBORDER "Bordo attivo"
+ AFX_IDS_COLOR_INACTIVEBORDER "Bordo inattivo"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "Cornice della finestra"
+ AFX_IDS_COLOR_SCROLLBARS "Barre di scorrimento"
+ AFX_IDS_COLOR_BTNFACE "Aspetto pulsante"
+ AFX_IDS_COLOR_BTNSHADOW "Ombreggiatura pulsante"
+ AFX_IDS_COLOR_BTNTEXT "Testo del pulsante"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "Evidenziazione del pulsante"
+ AFX_IDS_COLOR_DISABLEDTEXT "Testo disattivato"
+ AFX_IDS_COLOR_HIGHLIGHT "Evidenziazione"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "Testo evidenziato"
+ AFX_IDS_REGULAR "Normale"
+ AFX_IDS_BOLD "Grassetto"
+ AFX_IDS_ITALIC "Corsivo"
+ AFX_IDS_BOLDITALIC "Grassetto corsivo"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Tipo di carattere)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(Colore)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Immagine - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Sconosciuto"
+ AFX_IDS_PICTYPE_NONE "Nessuno"
+ AFX_IDS_PICTYPE_BITMAP "Bitmap"
+ AFX_IDS_PICTYPE_METAFILE "Metafile"
+ AFX_IDS_PICTYPE_ICON "Icona"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "Scheda delle proprietà del colore"
+ AFX_IDS_COLOR_PPG_CAPTION "Colori"
+ AFX_IDS_FONT_PPG "Scheda delle proprietà dei caratteri"
+ AFX_IDS_FONT_PPG_CAPTION "Caratteri"
+ AFX_IDS_PICTURE_PPG "Scheda delle proprietà delle immagini"
+ AFX_IDS_PICTURE_PPG_CAPTION "Immagini"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - None"
+ AFX_IDS_BORDERSTYLE_1 "1 - Fixed Single"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "&Modifica"
+ AFX_IDS_VERB_PROPERTIES "&Proprietà..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Impossibile aprire il file immagine %1. Il file non esiste o è illeggibile."
+ AFX_IDP_PICTURECANTLOAD "Impossibile caricare il file immagine %1. È possibile che il formato del file non sia valido."
+ AFX_IDP_PICTURETOOLARGE "Impossibile caricare l'immagine %1. Il file è troppo grande per essere contenuto in memoria."
+ AFX_IDP_PICTUREREADFAILED
+ "Impossibile caricare l'immagine %1. Errore di lettura non definito. "
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Sfoglia immagini"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "Chiamata di funzione non valida"
+ AFX_IDP_E_OVERFLOW "Overflow"
+ AFX_IDP_E_OUTOFMEMORY "Memoria esaurita"
+ AFX_IDP_E_DIVISIONBYZERO "Divisione per zero"
+ AFX_IDP_E_OUTOFSTRINGSPACE "Spazio della stringa esaurito"
+ AFX_IDP_E_OUTOFSTACKSPACE "Spazio dello stack esaurito"
+ AFX_IDP_E_BADFILENAMEORNUMBER "Nome o numero di file non valido"
+ AFX_IDP_E_FILENOTFOUND "Impossibile trovare il file"
+ AFX_IDP_E_BADFILEMODE "Modalità file non valida"
+ AFX_IDP_E_FILEALREADYOPEN "File già aperto"
+ AFX_IDP_E_DEVICEIOERROR "Errore di I/O sulla periferica"
+ AFX_IDP_E_FILEALREADYEXISTS "File già esistente"
+ AFX_IDP_E_BADRECORDLENGTH "Lunghezza record non valida"
+ AFX_IDP_E_DISKFULL "Disco pieno"
+ AFX_IDP_E_BADRECORDNUMBER "Numero record non valido"
+ AFX_IDP_E_BADFILENAME "Nome file non valido"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "Troppi file"
+ AFX_IDP_E_DEVICEUNAVAILABLE "Periferica non disponibile"
+ AFX_IDP_E_PERMISSIONDENIED "Permesso negato"
+ AFX_IDP_E_DISKNOTREADY "Disco non pronto"
+ AFX_IDP_E_PATHFILEACCESSERROR "Errore di accesso al percorso o al file"
+ AFX_IDP_E_PATHNOTFOUND "Impossibile trovare il percorso"
+ AFX_IDP_E_INVALIDPATTERNSTRING "Stringa di ricerca non valida"
+ AFX_IDP_E_INVALIDUSEOFNULL "Utilizzo di Null non valido"
+ AFX_IDP_E_INVALIDFILEFORMAT "Formato file non valido"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "Valore della proprietà non valido"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "Indice della matrice non valido"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Impossibile impostare la proprietà in fase di esecuzione"
+ AFX_IDP_E_SETNOTSUPPORTED "La proprietà è di sola lettura"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "È necessario specificare un indice di matrice quando si utilizza una matrice di proprietà"
+ AFX_IDP_E_SETNOTPERMITTED "Impossibile impostare la proprietà per questo controllo"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "Impossibile leggere la proprietà in fase di esecuzione"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "La proprietà è di sola scrittura"
+ AFX_IDP_E_PROPERTYNOTFOUND "Impossibile trovare la proprietà"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "Formato Appunti non valido"
+ AFX_IDP_E_INVALIDPICTURE "Immagine non valida"
+ AFX_IDP_E_PRINTERERROR "Errore della stampante"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "Impossibile creare un file temporaneo necessario per il salvataggio"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "Testo della ricerca non trovato"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "Testo sostitutivo troppo lungo"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.ita/afxdb.rc b/public/sdk/inc/mfc42/l.ita/afxdb.rc
new file mode 100644
index 000000000..c0689bbed
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "Tentativo di connessione alla fonte dati esterna non riuscito"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Il set di record supporta solo il movimento in avanti."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Tentativo di aprire una tabella non riuscito. Non c'erano colonne da recuperare dove specificato. "
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "La ricerca ha fornito tipi di dati inattesi per le colonne."
+ AFX_IDP_SQL_ILLEGAL_MODE "Tentativo di aggiornamento o di cancellazione non riuscito."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "Sono state aggiornate righe multiple."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "Operazione non riuscita, nessun record corrente."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "Nessuna riga è stata influenzata dall'operazione di aggiornamento o di cancellazione."
+ AFX_IDP_SQL_RECORDSET_READONLY "Il set di record è di sola lettura"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "Il driver ODBC non supporta il modello dati MFC LongBinary."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Tentativo di caricare la componente richiesta ODBC32.DLL non riuscito."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "Il driver ODBC non supporta i dynaset."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "Puntatori statici ODBC richiesti per il supporto dell'anteprima."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "Il driver ODBC è incompatibile con le classi di database MFC (utilizzare API_CONFORMANCE >= SQL_OAC_LEVEL1)"
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "Il driver ODBC è incompatibile con le classi di database MFC (utilizzare SQL_CONFORMANCE >= SQL_OSC_MINIMUM)"
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "Tentativo di scorrere i dati oltre la fine o prima dell'inizio."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Il driver ODBC non supporta i dynaset."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "È richiesto un driver conforme al livello 2 di ODBC."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "Il driver ODBC non supporta gli aggiornamenti dipendenti dalla posizione."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "La modalità blocco richiesta non è supportata."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "Dati troncati."
+ AFX_IDP_SQL_ROW_FETCH
+ "Errore nel recupero di record."
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "Non è stato trovato un punto di ingresso ODBC richiesto. Assicurarsi che ODBC sia installato correttamente."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "Aggiornamento o cancellazione non riusciti."
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "Cursore dinamico non supportato dal driver ODBC."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "Non è possibile inizializzare il motore del db DAO/Jet."
+ AFX_IDP_DAO_DFX_BIND
+ "Il valore del parametro DFX non è valido."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "Il DAO TableDef o QueryDef non sono aperti."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "Errore GetRows. Memoria insufficiente per la fila."
+ AFX_IDP_DAO_BADBINDINFO
+ "Errore GetRows di collegamento. Probabilmente causato da un tipo di dati non corrispondente."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "Errore GetRows. La colonna richiesta non fa parte di questo set di record."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.ita/afxolecl.rc b/public/sdk/inc/mfc42/l.ita/afxolecl.rc
new file mode 100644
index 000000000..3ed4cf990
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Impossibile attivare un oggetto statico OLE."
+ AFX_IDP_FAILED_TO_CONNECT "Connessione non riuscita.\nIl collegamento potrebbe essere interrotto."
+ AFX_IDP_SERVER_BUSY "Impossibile elaborare il comando, il server è impegnato."
+ AFX_IDP_BAD_VERB "Impossibile eseguire l'operazione sul server."
+ AFX_IDP_FAILED_TO_LAUNCH "Impossibile avviare l'applicazione sul server."
+ AFX_IDS_UPDATING_ITEMS "Aggiornamento di oggetti OLE"
+ AFX_IDP_FAILED_TO_CONVERT "Impossibile convertire l'oggetto OLE."
+ AFX_IDP_ASK_TO_DISCARD "Non è possibile salvare gli oggetti OLE durante l'uscita da Windows.\nScartare tutte le modifiche a %1?"
+ AFX_IDP_FAILED_TO_CREATE "Errore nel creare l'oggetto. Assicurarsi che l'applicazione sia inclusa nel registro del sistema."
+
+ AFX_IDS_METAFILE_FORMAT "Illustrazione (Metafile)\na illustrazione "
+ AFX_IDS_DIB_FORMAT "Device Indipendent Bitmap\na bitmap indipendente dalla periferica"
+ AFX_IDS_BITMAP_FORMAT "Bitmap\na bitmap"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Formato RTF\ntesto con formattazione di carattere e di paragrafo"
+ AFX_IDS_TEXT_FORMAT "Testo non formattato\ntesto senza alcuna formattazione"
+
+ AFX_IDS_INVALID_CURRENCY "Formato valuta non valido."
+ AFX_IDS_INVALID_DATETIME "Formato data/ora non valido."
+ AFX_IDS_INVALID_DATETIMESPAN "Periodo di tempo non valido."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.ita/afxolesv.rc b/public/sdk/inc/mfc42/l.ita/afxolesv.rc
new file mode 100644
index 000000000..975217b5f
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "Aggiornare %1 prima di procedere?"
+ AFX_IDP_FAILED_TO_UPDATE, "Impossibile aggiornare il client."
+
+ AFX_IDP_FAILED_TO_REGISTER, "Impossibile registrare. Le caratteristiche OLE potrebbero non funzionare in modo corretto."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "Impossibile aggiornare il registro di sistema.\nProvare utilizzando REGEDIT."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%1 in %2"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "&Esci && ritorna a %1"
+ AFX_IDS_UPDATE_MENU, "&Aggiorna %1"
+ AFX_IDS_SAVEFILECOPY, "Salva copia con nome"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.ita/afxprint.rc b/public/sdk/inc/mfc42/l.ita/afxprint.rc
new file mode 100644
index 000000000..9c5ff8173
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse standard MFC >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Stampa in corso",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "sul",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Annulla",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Annulla",IDCANCEL,46,45,40,15
+ CTEXT "Premere Cmd-. per annullare.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "Stam&pa...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "Pag. &succes.",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "Pag. p&reced.",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "Ingrand&isci",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Ri&duci",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "&Chiudi",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Stam&pa...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "Pag. &succes.",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "Pag. p&reced.",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "Ingrand&isci",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Ri&duci",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "&Chiudi",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Stam&pa...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "&Succes.",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "P&reced.",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&Ingresso",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Uscita",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "&Chiudi",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "su %1" // for print output
+ AFX_IDS_ONEPAGE, "&Una pagina" // for preview button
+ AFX_IDS_TWOPAGE, "&Due pagine" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Pagina %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Pagina %u\nPagine %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "File della stampante (*.prn)|*.prn|Tutti i file (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "Stampa su file" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "su %1" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.ita/afxres.rc b/public/sdk/inc/mfc42/l.ita/afxres.rc
new file mode 100644
index 000000000..58ab45d2a
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.ita/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Impossibile modificare le risorse MFC standard >\0 "
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "Apri"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "Salva con nome"
+ AFX_IDS_ALLFILTER, "Tutti i file (*.*)"
+ AFX_IDS_UNTITLED, "Senza titolo"
+#else
+ AFX_IDS_SAVEFILE, "Salva documento con nome:"
+ AFX_IDS_ALLFILTER, "Tutti i file"
+ AFX_IDS_UNTITLED, "senza titolo"
+ AFX_IDS_ABOUT, "Informazioni su %1\205"
+#endif
+ AFX_IDS_HIDE, "&Nascondi"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "Memoria insufficiente."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"È stata tentata un'operazione non supportata."
+ AFX_IDS_RESOURCE_EXCEPTION, "Una risorsa richiesta non era disponibile."
+ AFX_IDS_USER_EXCEPTION, "Si Š verificato un errore sconosciuto."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "Nome file non valido."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "Impossibile aprire il documento."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "Impossibile salvare il documento."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "Salvare le modifiche a %1?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "Salvare le modifiche al documento %1 \042%2\042?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "Impossibile creare un documento vuoto."
+ AFX_IDP_FILE_TOO_LARGE, "Il file è troppo grande per essere aperto."
+ AFX_IDP_FAILED_TO_START_PRINT, "Impossibile avviare il lavoro di stampa."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "Impossibile avviare la Guida."
+ AFX_IDP_INTERNAL_FAILURE, "Errore interno dell'applicazione."
+ AFX_IDP_COMMAND_FAILURE, "Comando non riuscito."
+ AFX_IDP_FAILED_MEMORY_ALLOC "Memoria insufficiente per eseguire l'operazione."
+ AFX_IDP_GET_NOT_SUPPORTED, "Impossibile leggere la proprietà in sola scrittura."
+ AFX_IDP_SET_NOT_SUPPORTED, "Impossibile scrivere la proprietà in sola lettura."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "Formato file inatteso."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nImpossibile trovare questo file.\nVerificare che siano stati forniti il percorso e il nome del file corretti."
+ AFX_IDP_FAILED_DISK_FULL "L'unità disco di destinazione è piena."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "Impossibile trovare il file \042%1.\042. Verificare che il nome del file sia corretto."
+ AFX_IDP_FAILED_DISK_FULL "Il disco di destinazione è pieno."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "Impossibile leggere da %1, è già aperto da un altro utente."
+ AFX_IDP_FAILED_ACCESS_WRITE "Impossibile scrivere su %1, è di sola lettura o già aperto."
+ AFX_IDP_FAILED_IO_ERROR_READ "Errore inatteso durante la lettura di %1."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "Errore inatteso durante la scrittura di %1."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Digitare un numero intero."
+ AFX_IDP_PARSE_REAL, "Digitare un numero."
+ AFX_IDP_PARSE_INT_RANGE, "Digitare un numero intero compreso tra %1 e %2."
+ AFX_IDP_PARSE_REAL_RANGE, "Digitare un numero compreso tra %1 e %2."
+ AFX_IDP_PARSE_STRING_SIZE, "Non digitare più di %1 caratteri."
+ AFX_IDP_PARSE_RADIO_BUTTON, "Selezionare un pulsante."
+ AFX_IDP_PARSE_BYTE, "Digitare un intero compreso tra 0 e 255."
+ AFX_IDP_PARSE_UINT, "Digitare un numero intero positivo."
+ AFX_IDP_PARSE_DATETIME, "Digitare una data e/o un'ora."
+ AFX_IDP_PARSE_CURRENCY, "Digitare un tipo di valuta."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "Collegato %s"
+ AFX_IDS_UNKNOWNTYPE "Tipo sconosciuto"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nImpossibile registrare il documento.\nIl documento potrebbe essere già aperto."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "Impossibile registrare il documento \042%1.\042. Il documento potrebbe essere già aperto."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "Nessun messaggio di errore è disponibile."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "Non si è verificato alcun errore."
+ AFX_IDP_FILE_GENERIC "Si è verificato un errore sconosciuto durante l'accesso a %1."
+ AFX_IDP_FILE_NOT_FOUND "%1 non trovato."
+ AFX_IDP_FILE_BAD_PATH "%1 contiene un percorso non valido."
+ AFX_IDP_FILE_TOO_MANY_OPEN "Non è stato possibile aprire %1 poiché vi sono troppi file aperti."
+ AFX_IDP_FILE_ACCESS_DENIED "Accesso a %1 negato."
+ AFX_IDP_FILE_INVALID_FILE "Un gestore di file non valido è stato associato a %1."
+ AFX_IDP_FILE_REMOVE_CURRENT "Impossibile rimuovere %1 poiché è la directory corrente."
+ AFX_IDP_FILE_DIR_FULL "Impossibile creare %1 poiché la directory è piena."
+ AFX_IDP_FILE_BAD_SEEK "Ricerca fallita su %1"
+ AFX_IDP_FILE_HARD_IO "Nell'accesso a %1 è stato registrato un errore hardware di I/O. "
+ AFX_IDP_FILE_SHARING "Durante l'accesso a %1 si è verificata una violazione di condivisione."
+ AFX_IDP_FILE_LOCKING "Durante l'accesso a %1 si è verificata una violazione di blocco."
+ AFX_IDP_FILE_DISKFULL "Disco pieno durante l'accesso a %1."
+ AFX_IDP_FILE_EOF "È stato fatto un tentativo di accedere a %1 oltre la sua fine."
+ AFX_IDS_UNNAMED_FILE "un file senza nome"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "Non si è verificato alcun errore."
+ AFX_IDP_ARCH_GENERIC "Si è verificato un errore sconosciuto durante l'accesso a %1."
+ AFX_IDP_ARCH_READONLY "Si è tentato di scrivere sulla lettura %1."
+ AFX_IDP_ARCH_ENDOFFILE "È stato fatto un tentativo di accedere a %1 oltre la sua fine."
+ AFX_IDP_ARCH_WRITEONLY "Si è tentato di leggere dalla scrittura di %1."
+ AFX_IDP_ARCH_BADINDEX "Formato di %1 non valido."
+ AFX_IDP_ARCH_BADCLASS "%1 conteneva un oggetto inatteso."
+ AFX_IDP_ARCH_BADSCHEMA "%1 contiene uno schema errato."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Impossibile caricare il supporto di sistema per la posta elettronica."
+ AFX_IDP_INVALID_MAPI_DLL "La DLL del sistema di posta elettronica non è valida."
+ AFX_IDP_FAILED_MAPI_SEND "Impossibile inviare un messaggio con il comando di invio."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "pixel"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "Nuovo"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Nuovo",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "Annulla",IDCANCEL,137,23,40,14
+ PUSHBUTTON "&?",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.jpn/afxctl.rc b/public/sdk/inc/mfc42/l.jpn/afxctl.rc
new file mode 100644
index 000000000..083d5852f
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "ÌßÛÊßè–¼(&N):",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "Ì«ÝÄ–¼(&F):",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "½À²Ù(&Y):",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "»²½Þ(&S):",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "•¶Žšü‚è",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Žæ‚èÁ‚µü(&K)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "伟(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "»ÝÌßÙ",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "ÌßÛÊßè–¼(&N):",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "¼½ÃÑ ¶×°(&C):",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "ÌßÛÊßè–¼(&N):",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ŽQÆ(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "¸Ø±(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "ÌßÚËÞ­°:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(Unknown)"
+ AFX_IDS_COLOR_DESKTOP "ÃÞ½¸Ä¯Ìß"
+ AFX_IDS_COLOR_APPWORKSPACE "ì‹Æ‚·‚é—̈æ"
+ AFX_IDS_COLOR_WNDBACKGND "³¨ÝÄÞ³‚Ì”wŒi"
+ AFX_IDS_COLOR_WNDTEXT "³¨ÝÄÞ³“à‚Ì•¶Žš"
+ AFX_IDS_COLOR_MENUBAR "ÒÆ­° ÊÞ°"
+ AFX_IDS_COLOR_MENUTEXT "ÒÆ­°‚Ì•¶Žš"
+ AFX_IDS_COLOR_ACTIVEBAR "±¸Ã¨ÌÞ À²ÄÙ ÊÞ°"
+ AFX_IDS_COLOR_INACTIVEBAR "”ñ±¸Ã¨ÌÞ À²ÄÙ ÊÞ°"
+ AFX_IDS_COLOR_ACTIVETEXT "±¸Ã¨ÌÞ À²ÄÙ ÊÞ°‚Ì•¶Žš"
+ AFX_IDS_COLOR_INACTIVETEXT "”ñ±¸Ã¨ÌÞ À²ÄÙ ÊÞ°‚Ì•¶Žš"
+ AFX_IDS_COLOR_ACTIVEBORDER "±¸Ã¨ÌÞ ³¨ÝÄÞ³‚Ì‹«ŠE"
+ AFX_IDS_COLOR_INACTIVEBORDER "”ñ±¸Ã¨ÌÞ ³¨ÝÄÞ³‚Ì‹«ŠE"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "³¨ÝÄÞ³‚̘g"
+ AFX_IDS_COLOR_SCROLLBARS "½¸Û°Ù ÊÞ°"
+ AFX_IDS_COLOR_BTNFACE "ÎÞÀÝ‚Ì•\–Ê"
+ AFX_IDS_COLOR_BTNSHADOW "ÎÞÀ݂̉e"
+ AFX_IDS_COLOR_BTNTEXT "ÎÞÀÝ‚Ì•¶Žš"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "”½“]•\Ž¦‚ÌÎÞÀÝ"
+ AFX_IDS_COLOR_DISABLEDTEXT "’WF•\Ž¦‚Ì•¶Žš"
+ AFX_IDS_COLOR_HIGHLIGHT "”½“]•\Ž¦"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "”½“]•\Ž¦‚Ì•¶Žš"
+ AFX_IDS_REGULAR "•W€"
+ AFX_IDS_BOLD "‘¾Žš"
+ AFX_IDS_ITALIC "ŽÎ‘Ì"
+ AFX_IDS_BOLDITALIC "‘¾ŽšŽÎ‘Ì"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(Ì«ÝÄ)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(F)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(Ë߸Á¬ - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "Unknown"
+ AFX_IDS_PICTYPE_NONE "‚È‚µ"
+ AFX_IDS_PICTYPE_BITMAP "ËÞ¯ÄϯÌß"
+ AFX_IDS_PICTYPE_METAFILE "ÒÀ̧²Ù"
+ AFX_IDS_PICTYPE_ICON "±²ºÝ"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "¶×° ÌßÛÊßè Íß°¼Þ"
+ AFX_IDS_COLOR_PPG_CAPTION "¶×°"
+ AFX_IDS_FONT_PPG "Ì«ÝÄ ÌßÛÊßè Íß°¼Þ"
+ AFX_IDS_FONT_PPG_CAPTION "Ì«ÝÄ"
+ AFX_IDS_PICTURE_PPG "Ë߸Á¬ ÌßÛÊßè Íß°¼Þ"
+ AFX_IDS_PICTURE_PPG_CAPTION "Ë߸Á¬"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - ‚È‚µ"
+ AFX_IDS_BORDERSTYLE_1 "1 - ŒÅ’è(ŽÀü)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "•ÒW(&E)"
+ AFX_IDS_VERB_PROPERTIES "ÌßÛÊßè(&P)..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB̧²Ù‚ª‘¶Ý‚µ‚È‚¢‚©A“Ç‚Ýž‚ß‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_PICTURECANTLOAD "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB ̧²ÙŒ`Ž®‚ª³‚µ‚­‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_PICTURETOOLARGE "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB ̧²Ù‚ª‘å‚«‚·‚¬‚Ü‚·B"
+ AFX_IDP_PICTUREREADFAILED
+ "Ë߸Á¬ ̧²Ù %1 ‚ðÛ°ÄÞ‚Å‚«‚Ü‚¹‚ñB “Ç‚Ýž‚Ý‚Å´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "Ë߸Á¬ ‚ÌŽQÆ"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "ŠÖ”ŒÄ‚Ño‚µ‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_OVERFLOW "µ°ÊÞ°ÌÛ°‚µ‚Ü‚µ‚½B"
+ AFX_IDP_E_OUTOFMEMORY "ÒÓØ‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_DIVISIONBYZERO "¾ÞÛ‚ÅœŽZ‚µ‚Ü‚µ‚½B"
+ AFX_IDP_E_OUTOFSTRINGSPACE "•¶Žš—ñ—̈悪•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_OUTOFSTACKSPACE "½À¯¸—̈悪•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_BADFILENAMEORNUMBER "̧²Ù–¼‚Ü‚½‚͔Ԇ‚ª•s³‚Å‚·B"
+ AFX_IDP_E_FILENOTFOUND "̧²Ù‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_BADFILEMODE "̧²Ù Ó°ÄÞ‚ª•s³‚Å‚·B"
+ AFX_IDP_E_FILEALREADYOPEN "̧²Ù‚ÍŠù‚ÉŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_DEVICEIOERROR "ÃÞÊÞ²½ I/O ´×°‚Å‚·B"
+ AFX_IDP_E_FILEALREADYEXISTS "Šù‚É“¯–¼‚Ì̧²Ù‚ª‘¶Ý‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_BADRECORDLENGTH "Úº°ÄÞ’·‚ªˆê’v‚µ‚Ü‚¹‚ñB"
+ AFX_IDP_E_DISKFULL "ÃÞ¨½¸‚Ì‹ó‚«—e—Ê‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_E_BADRECORDNUMBER "Úº°ÄÞ”Ô†‚ª•s³‚Å‚·B"
+ AFX_IDP_E_BADFILENAME "̧²Ù–¼‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "̧²Ù‚ª‘½‚·‚¬‚Ü‚·B"
+ AFX_IDP_E_DEVICEUNAVAILABLE "ÃÞÊÞ²½‚ª€”õ‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_E_PERMISSIONDENIED "±¸¾½‚Í‹‘”Û‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_E_DISKNOTREADY "ÃÞ¨½¸‚ª€”õ‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_E_PATHFILEACCESSERROR "Êß½–¼‚ª–³Œø‚Å‚·B"
+ AFX_IDP_E_PATHNOTFOUND "Êß½‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_INVALIDPATTERNSTRING "ÊßÀ°Ý•¶Žš—ñ‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDUSEOFNULL "null •¶Žš‚ÌŽg‚¢•û‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDFILEFORMAT "̧²ÙŒ`Ž®‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "ÌßÛÊßè‚Ì’l‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "”z—ñ‚Ì“Y‚¦Žš‚ª•s³‚Å‚·B"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "‚±‚ÌÌßÛÊßè‚Ì’l‚ÍŽÀsŽž‚É‚ÍÝ’è‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_E_SETNOTSUPPORTED "‚±‚ÌÌßÛÊßè‚Í’l‚̎擾‚̂݉”\‚Å‚·B"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "ÌßÛÊßè”z—ñ‚ɂͲÝÃÞ¯¸½‚ðŽw’肵‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_E_SETNOTPERMITTED "‚±‚̺ÝÄÛ°Ù‚ÌÌßÛÊßè‚ÍÝ’è‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "‚±‚ÌÌßÛÊßè‚Ì’l‚ÍŽÀsŽž‚ɂ͎擾‚Å‚«‚Ü‚¹‚ñB"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "‚±‚ÌÌßÛÊßè‚ÍÝ’è‚̂݉”\‚Å‚·B"
+ AFX_IDP_E_PROPERTYNOTFOUND "ÌßÛÊß肪Œ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "¸Ø¯ÌßÎÞ°ÄÞ‚ÌÃÞ°ÀŒ`Ž®‚ª•s³‚Å‚·B"
+ AFX_IDP_E_INVALIDPICTURE "Ë߸Á¬‚ª•s³‚Å‚·B"
+ AFX_IDP_E_PRINTERERROR "ÌßØÝÀ‚Ì´×°‚Å‚·B"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "•Û‘¶‚É•K—v‚ÈÃÝÎß×Ø Ì§²Ù‚ð쬂ł«‚Ü‚¹‚ñB"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "ŒŸõ•¶Žš—ñ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "’uŠ·•¶Žš—ñ‚ª’·‚·‚¬‚Ü‚·B"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.jpn/afxdb.rc b/public/sdk/inc/mfc42/l.jpn/afxdb.rc
new file mode 100644
index 000000000..b8e350c34
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "ÃÞ°À¿°½‚Ö‚ÌÚ‘±‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "Úº°ÄÞ¾¯Ä‚ł̈ړ®‚͇•ûŒü‚Ì‚Ý»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "ŒŸõ‚·‚é—ñ‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢‚½‚ßAðÌÞÙ‚ðŠJ‚¯‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "¸´Ø°‚Å—\Šú‚¹‚Ê—ñ‚ÌÃÞ°À À²Ìß‚ª•Ô‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_ILLEGAL_MODE "XV‚Ü‚½‚Í휂Ɏ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "•¡”‚Ìs‚ªXV‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_NO_CURRENT_RECORD "¶ÚÝÄ Úº°ÄÞ‚ª‚È‚¢‚½‚ßA‘€ì‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "XV‚Ü‚½‚Í휑€ì‚ÌŒ‹‰ÊA•ÏX‚ð‚¤‚¯‚½s‚Í‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_RECORDSET_READONLY "Úº°ÄÞ¾¯Ä‚Íã‘‚«‹ÖŽ~‚Å‚·B"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC ÄÞײÊÞ‚Í MFC LongBinary ÃÞ°À ÓÃÞÙ‚ðˆµ‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "ODBC32.DLL ‚ÌÛ°ÄÞ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC ÄÞײÊÞ‚Í dynasets ‚ðˆµ‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "ODBC ½À诸 ¶°¿Ù‚ɂͽůÌß¼®¯Ä‚Ì»Îß°Ä‚ª•K—v‚Å‚·B"
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC ÄÞײÊÞ‚Í MFC ÃÞ°ÀÍÞ°½ ¸×½‚ƌ݊·«‚ª‚ ‚è‚Ü‚¹‚ñ (API_CONFORMANCE >= SQL_OAC_LEVEL1 ‚ª•K—v‚Å‚·)B"
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC ÄÞײÊÞ‚Í MFC ÃÞ°ÀÍÞ°½ ¸×½‚ƌ݊·«‚ª‚ ‚è‚Ü‚¹‚ñ (SQL_CONFORMANCE >= SQL_OSC_MINIMUM ‚ª•K—v‚Å‚·)B"
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "ÃÞ°À‚ÌI’[‚Ü‚½‚Í擪‚ð’´‚¦‚Ľ¸Û°Ù‚µ‚悤‚Æ‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "Dynasets ‚Í ODBC ÄÞײÊÞ‚Å»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC Level 2 ‚É€‹’‚µ‚½ÄÞײÊÞ‚ª•K—v‚Å‚·B"
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "“Á’è‚̈ʒu‚ÌXV‚Í ODBC ÄÞײÊÞ‚Å»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "—v‹‚µ‚½Û¯¸ Ó°ÄÞ‚Í»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "ÃÞ°À‚ÍØ‚èŽÌ‚Ä‚ç‚ê‚Ü‚µ‚½B"
+ AFX_IDP_SQL_ROW_FETCH
+ "Úº°ÄÞ‚ÌŒŸõ´×°B"
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "—v‹‚µ‚½ ODBC ´ÝÄØ° Îß²ÝÄ‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñBODBC ÄÞײÊÞ‚ª³‚µ‚­²Ý½Ä°Ù‚³‚ꂽ‚©Šm”F‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "XV–”‚Í휑€ì‚ÍŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "ÀÞ²ÅЯ¸ ¶°¿Ù‚Í ODBC ÄÞײÊÞ‚Å‚Í»Îß°Ä‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB"
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "DAO/Jet db ´Ý¼ÞÝ‚ð‰Šú‰»‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_DFX_BIND
+ "DFX ‚ÌÊß×Ò°À’l‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef ‚Ü‚½‚Í QueryDef ‚ªŠJ‚¯‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows ‚ÉŽ¸”s‚µ‚Ü‚µ‚½Bs‚ÉŠ„‚è“–‚Ä‚é\•ª‚ÈÒÓØ‚ª‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows ÊÞ²ÝÃÞ¨Ý¸Þ ´×°B datatype ‚ª‡‚Á‚Ä‚¢‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB"
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B —v‹‚³‚ꂽ—ñ‚Í‚±‚ÌÚº°ÄÞ¾¯Ä‚ÌÒÝÊÞ‚Å‚Í‚ ‚è‚Ü‚¹‚ñB"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.jpn/afxolecl.rc b/public/sdk/inc/mfc42/l.jpn/afxolecl.rc
new file mode 100644
index 000000000..893cc93f9
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Œx —\Šú‚µ‚È‚¢½À诸 µÌÞ¼Þª¸Ä‚Å‚·B"
+ AFX_IDP_FAILED_TO_CONNECT "Ú‘±‚ÉŽ¸”s‚µ‚Ü‚µ‚½B\nØݸ‚ª‰ó‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_SERVER_BUSY "ºÏÝÄÞ‚ðŽÀs‚Å‚«‚Ü‚¹‚ñB»°ÊÞ°‚ªËÞ¼Þ°‚Å‚·B"
+ AFX_IDP_BAD_VERB "»°ÊÞ°‚Ì‘€ì‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_FAILED_TO_LAUNCH "»°ÊÞ° ±Ìßع°¼®Ý‚ð‹N“®‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDS_UPDATING_ITEMS "OLE µÌÞ¼Þª¸Ä‚ðXV‚µ‚Ä‚¢‚Ü‚·"
+ AFX_IDP_FAILED_TO_CONVERT "OLE µÌÞ¼Þª¸Ä‚Ì•ÏŠ·‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ASK_TO_DISCARD "Windows ‚ÌI—¹Žž‚É OLE µÌÞ¼Þª¸Ä‚ð•Û‘¶‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB\n%1 ‚Ö‚Ì‚·‚ׂĂ̕ÏX‚ð”pŠü‚µ‚Ü‚·‚©H"
+ AFX_IDP_FAILED_TO_CREATE "µÌÞ¼Þª¸Ä‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B¼½ÃÑ Ú¼Þ½Ä؂ɱÌßع°¼®Ý‚ª“o˜^‚³‚ê‚Ä‚¢‚é‚©Šm”F‚µ‚Ä‚­‚¾‚³‚¢"
+
+ AFX_IDS_METAFILE_FORMAT "Ë߸Á¬ (ÒÀ̧²Ù)\nË߸Á¬"
+ AFX_IDS_DIB_FORMAT "ÃÞÊÞ²½‚Ɉˑ¶‚µ‚È‚¢ËÞ¯ÄϯÌß\nÃÞÊÞ²½”ñˆË‘¶ËÞ¯ÄϯÌß"
+ AFX_IDS_BITMAP_FORMAT "ËÞ¯ÄϯÌß\nËÞ¯ÄϯÌß"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "‘Ž®•t‚«Ã·½Ä (RTF)\nدÁ ÷½Ä"
+ AFX_IDS_TEXT_FORMAT "‘Ž®‚È‚µÃ·½Ä\n÷½Ä"
+
+ AFX_IDS_INVALID_CURRENCY "–³Œø‚Ȓʉ݌^‚Å‚·B"
+ AFX_IDS_INVALID_DATETIME "–³Œø‚È“ú•t‚ÆŽžŠÔ‚Å‚·B"
+ AFX_IDS_INVALID_DATETIMESPAN "–³Œø‚ÈŠúŠÔ‚Å‚·B"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.jpn/afxolesv.rc b/public/sdk/inc/mfc42/l.jpn/afxolesv.rc
new file mode 100644
index 000000000..5ca7083bc
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "æ‚É %1 ‚ðXV‚µ‚Ü‚·‚©H"
+ AFX_IDP_FAILED_TO_UPDATE, "¸×²±ÝÄ‚ðXV‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+
+ AFX_IDP_FAILED_TO_REGISTER, "“o˜^‚ÉŽ¸”s‚µ‚Ü‚µ‚½BOLE ‚Ì‹@”\‚ͳí‚É“®ì‚µ‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "¼½ÃÑ Ú¼Þ½ÄØ‚ÌXV‚ÉŽ¸”s‚µ‚Ü‚µ‚½B\nREGEDIT ‚ðŽg—p‚µ‚ÄXV‚µ‚Ä‚­‚¾‚³‚¢B"
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%2 “à‚Ì %1"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "I—¹‚µ‚Ä %1 ‚É–ß‚é(&X)"
+ AFX_IDS_UPDATE_MENU, "%1 ‚ðXV(&U)"
+ AFX_IDS_SAVEFILECOPY, "–¼‘O‚ð•t‚¯‚Ä•Û‘¶"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.jpn/afxprint.rc b/public/sdk/inc/mfc42/l.jpn/afxprint.rc
new file mode 100644
index 000000000..e1864d2ef
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "ˆóü’†",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "‚ð",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,46,45,40,15
+ CTEXT "<Cmd>-. ·°‚ð‰Ÿ‚·‚Æ·¬Ý¾Ù‚µ‚Ü‚·B",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "ŽŸÍß°¼Þ(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "‘OÍß°¼Þ(&V)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "½Þ°Ñ ²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "½Þ°Ñ ±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ŽŸÍß°¼Þ(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "‘OÍß°¼Þ(&V)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "½Þ°Ñ ²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "½Þ°Ñ ±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "ˆóü(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "ŽŸ(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "‘O(&V)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "²Ý(&I)",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "±³Ä(&O)",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "•Â‚¶‚é(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "%1 ‚Öo—Í’†" // for print output
+ AFX_IDS_ONEPAGE, "1 Íß°¼Þ(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "2 Íß°¼Þ(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "Íß°¼Þ %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "Íß°¼Þ %u\nÍß°¼Þ %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "ÌßØÝÀ ̧²Ù (*.prn)|*.prn|‚·‚ׂĂÌ̧²Ù (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "̧²Ù‚Öo—Í" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "%1 ‚Ö" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.jpn/afxres.rc b/public/sdk/inc/mfc42/l.jpn/afxres.rc
new file mode 100644
index 000000000..b30d86d38
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.jpn/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< •W€ MFC Ø¿°½‚Ì•ÏX‚Í‚Å‚«‚Ü‚¹‚ñ! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "ŠJ‚­"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "–¼‘O‚ð•t‚¯‚Ä•Û‘¶"
+ AFX_IDS_ALLFILTER, "‚·‚ׂĂÌ̧²Ù (*.*)"
+ AFX_IDS_UNTITLED, "Untitled"
+#else
+ AFX_IDS_SAVEFILE, "ÄÞ·­ÒÝÄ‚É–¼‘O‚ð•t‚¯‚Ä•Û‘¶:"
+ AFX_IDS_ALLFILTER, "‚·‚ׂĂÌ̧²Ù"
+ AFX_IDS_UNTITLED, "untitled"
+ AFX_IDS_ABOUT, "ÊÞ°¼Þ®Ýî•ñ %1\205"
+#endif
+ AFX_IDS_HIDE, "&Hide"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "ÒÓØ‚ª•s‘«‚µ‚Ä‚¢‚Ü‚·B"
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"»Îß°Ä‚³‚ê‚Ä‚¢‚È‚¢‘€ì‚ðŽÀs‚µ‚Ü‚µ‚½B"
+ AFX_IDS_RESOURCE_EXCEPTION, "—v‹‚³‚ꂽؿ°½‚ÍŽg—p‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDS_USER_EXCEPTION, "An unknown error has occurred."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "–³Œø‚Ȩ̀²Ù–¼‚Å‚·B"
+ AFX_IDP_FAILED_TO_OPEN_DOC, "ÄÞ·­ÒÝĂ̵°ÌßÝ‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_TO_SAVE_DOC, "ÄÞ·­ÒÝÄ‚Ì•Û‘¶‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "%1 ‚Ö‚Ì•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚©H"
+#else
+ AFX_IDP_ASK_TO_SAVE, "%1 ÄÞ·­ÒÝÄ \042%2\042 ‚Ö‚Ì•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚©H"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "‹ó‚ÌÄÞ·­ÒÝÄ‚Ì쬂Ɏ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_TOO_LARGE, "̧²Ù‚ª‘å‚«‚·‚¬‚ÄŠJ‚¯‚Ü‚¹‚ñB"
+ AFX_IDP_FAILED_TO_START_PRINT, "ˆóü‚ðŠJŽn‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B"
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "ÍÙÌß‚Ì‹N“®‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_INTERNAL_FAILURE, "±Ìßع°¼®Ý‚Ì“à•”´×°‚Å‚·B"
+ AFX_IDP_COMMAND_FAILURE, "ºÏÝÄÞ‚ÌŽÀs‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_MEMORY_ALLOC "ŽÀs‚·‚邽‚ß‚ÌÒÓØ‚ª‘«‚è‚Ü‚¹‚ñB"
+ AFX_IDP_GET_NOT_SUPPORTED, "‘‚«ž‚Ýê—p‚ÌÌßÛÊßè‚©‚ç“Ç‚Ýo‚µ‚Ís‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_SET_NOT_SUPPORTED, "“Ç‚Ýo‚µê—p‚ÌÌßÛÊßè‚É‘‚«ž‚Ý‚Ís‚¦‚Ü‚¹‚ñB"
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "—\Šú‚µ‚È‚¢Ì§²ÙŒ`Ž®‚Å‚·B"
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\n‚±‚Ì̧²Ù‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB\n³‚µ‚¢ÃÞ¨Ú¸ÄØ‚Æ̧²Ù–¼‚ðŠm”F‚µ‚Ä“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_FAILED_DISK_FULL "o—Íæ‚ÌÃÞ¨½¸ ÄÞײÌÞ‚ª‚¢‚Á‚Ï‚¢‚Å‚·B"
+#else
+ AFX_IDP_FAILED_INVALID_PATH "̧²Ù \042%1.\042 ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB\n³‚µ‚¢Ì§²Ù–¼‚ðŠm”F‚µ‚Ä“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_FAILED_DISK_FULL "o—Íæ‚ÌÃÞ¨½¸‚ª‚¢‚Á‚Ï‚¢‚Å‚·B"
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "%1 ‚©‚ç“Ç‚Ýž‚ß‚Ü‚¹‚ñB‘¼‚̱Ìßع°¼®Ý‚É‚æ‚Á‚ÄŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FAILED_ACCESS_WRITE "%1 ‚Ö‘‚«ž‚ß‚Ü‚¹‚ñB‘¼‚̱Ìßع°¼®Ý‚É‚æ‚Á‚ÄŠJ‚©‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FAILED_IO_ERROR_READ "%1 ‚Ì“Ç‚Ýž‚Ý’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FAILED_IO_ERROR_WRITE "%1 ‚Ì‘‚«ž‚Ý’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_REAL, "”’l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_INT_RANGE, "%1 ‚©‚ç %2 –˜‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_REAL_RANGE, "%1 ‚©‚ç %2 –˜‚Ì”’l‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_STRING_SIZE, "%1 •¶ŽšˆÈ“à‚Å“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_RADIO_BUTTON, "ÎÞÀÝ‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_BYTE, "0 ‚©‚ç 255 ‚Ü‚Å‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_UINT, "³‚Ì®”‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_DATETIME, "“ú•t/ŽžŠÔ‚È‚Ç‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+ AFX_IDP_PARSE_CURRENCY, "’ʉ݌^‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B"
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "%s ‚ðØݸ‚µ‚Ü‚µ‚½B"
+ AFX_IDS_UNKNOWNTYPE "•s–¾‚ÈŒ^‚Å‚·B"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\nÄÞ·­ÒÝÄ‚ð“o˜^‚Å‚«‚Ü‚¹‚ñB\nÄÞ·­ÒÝÄ‚Í‚·‚Å‚ÉŠJ‚©‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "ÄÞ·­ÒÝÄ \042%1.\042 ‚ð“o˜^‚Å‚«‚Ü‚¹‚ñB\nÄÞ·­ÒÝÄ‚Í‚·‚Å‚ÉŠJ‚©‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B"
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "´×° Ò¯¾°¼Þ‚Í‚ ‚è‚Ü‚¹‚ñB"
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "´×°‚Í‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_FILE_GENERIC "%1 ‚ւ̱¸¾½’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_NOT_FOUND "%1 ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñB"
+ AFX_IDP_FILE_BAD_PATH "%1 ‚Í–³Œø‚ÈÊß½‚Å‚·B"
+ AFX_IDP_FILE_TOO_MANY_OPEN "ŠJ‚¢‚Ä‚¢‚ȩ́²Ù‚ª‘½‚·‚¬‚邽‚ß %1 ‚ðŠJ‚¯‚Ü‚¹‚ñ‚Å‚µ‚½B"
+ AFX_IDP_FILE_ACCESS_DENIED "%1 ‚ւ̱¸¾½‚Í‹‘”Û‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_FILE_INVALID_FILE "%1 ‚Ö–³Œø‚Ȩ̀²Ù ÊÝÄÞÙ‚ªŠÖ˜A•t‚¯‚ç‚ê‚Ä‚¢‚Ü‚·B"
+ AFX_IDP_FILE_REMOVE_CURRENT "¶ÚÝÄ ÃÞ¨Ú¸ÄØ %1 ‚Í휂ł«‚Ü‚¹‚ñB"
+ AFX_IDP_FILE_DIR_FULL "%1 ‚ð쬂ł«‚Ü‚¹‚ñB‚»‚ÌÃÞ¨Ú¸ÄØ‚Í‚¢‚Á‚Ï‚¢‚Å‚·B "
+ AFX_IDP_FILE_BAD_SEEK "%1 ‚̼°¸‚ÉŽ¸”s‚µ‚Ü‚µ‚½"
+ AFX_IDP_FILE_HARD_IO "%1 ‚ւ̱¸¾½’†‚ÉÊ°ÄÞ³ª± I/O ´×°‚ª•ñ‚³‚ê‚Ü‚µ‚½B"
+ AFX_IDP_FILE_SHARING "%1 ‚ւ̱¸¾½’†‚É‹¤—Lˆá”½‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_LOCKING "%1 ‚ւ̱¸¾½’†‚ÉÛ¯·Ý¸Þˆá”½‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_FILE_DISKFULL "%1 ‚ւ̱¸¾½’†‚ÉÃÞ¨½¸‚ª‚¢‚Á‚Ï‚¢‚É‚È‚è‚Ü‚µ‚½B"
+ AFX_IDP_FILE_EOF "%1 ‚Ì̧²Ù‚ÌI‚í‚è‚Å‚·B"
+ AFX_IDS_UNNAMED_FILE "–³‘è‚Ì̧²Ù"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "´×°‚Í‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_ARCH_GENERIC "%1 ‚ւ̱¸¾½’†‚É—\Šú‚µ‚È‚¢´×°‚ª”­¶‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ARCH_READONLY "%1 ‚ð“Ç‚Ýž‚Ý’†‚É‘‚«ž‚à‚¤‚Æ‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ARCH_ENDOFFILE "%1 ‚Ì̧²Ù‚ÌI‚í‚è‚Å‚·B"
+ AFX_IDP_ARCH_WRITEONLY "%1 ‚Ö‘‚«ž‚Ý’†‚É“Ç‚Ýž‚à‚¤‚Æ‚µ‚Ü‚µ‚½B"
+ AFX_IDP_ARCH_BADINDEX "%1 ‚Ì̧²ÙŒ`Ž®‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB"
+ AFX_IDP_ARCH_BADCLASS "%1 ‚Í—\Šú‚µ‚È‚¢µÌÞ¼Þª¸Ä‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B"
+ AFX_IDP_ARCH_BADSCHEMA "%1 ‚Í•s³‚Ƚ·°Ï‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B"
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "Ò°Ù ¼½ÃÑ‚ÌÛ°ÄÞ‚ª‚Å‚«‚Ü‚¹‚ñB"
+ AFX_IDP_INVALID_MAPI_DLL "Ò°Ù ¼½ÃÑ DLL‚ª•s³‚Å‚·B"
+ AFX_IDP_FAILED_MAPI_SEND "Ò°Ù‚Ì‘—M‚ÉŽ¸”s‚µ‚Ü‚µ‚½B"
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "Ë߸¾Ù"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "V‹K"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "V‹K(&N) ",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,137,6,40,14
+ PUSHBUTTON "·¬Ý¾Ù",IDCANCEL,137,23,40,14
+ PUSHBUTTON "ÍÙÌß(&H)",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/l.kor/afxctl.rc b/public/sdk/inc/mfc42/l.kor/afxctl.rc
new file mode 100644
index 000000000..8c2466d7b
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxctl.rc
@@ -0,0 +1,284 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXCTL_RC__
+#define __AFXCTL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Control Resources
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+AFX_IDB_TRUETYPE BITMAP DISCARDABLE "RES\\TRUETYPE.BMP"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+AFX_IDD_PROPPAGE_FONT DIALOG DISCARDABLE 13, 54, 250, 110
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Ư¼º À̸§(&N)",IDC_STATIC,3,5,61,8
+ COMBOBOX AFX_IDC_FONTPROP,65,3,100,71,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "±Û²Ã(&F)",IDC_STATIC,3,19,91,8
+ COMBOBOX AFX_IDC_FONTNAMES,3,29,91,77,CBS_SIMPLE |
+ CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT |
+ CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "±Û²Ã À¯Çü(&Y):",IDC_STATIC,102,19,53,8
+ COMBOBOX AFX_IDC_FONTSTYLES,104,29,53,53,CBS_DROPDOWNLIST |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Å©±â(&S):",IDC_STATIC,167,19,40,8
+ COMBOBOX AFX_IDC_FONTSIZES,167,29,36,53,CBS_DROPDOWN | CBS_SORT |
+ CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "È¿°ú",IDC_STATIC,104,44,142,24,WS_GROUP
+ CONTROL "Ãë¼Ò¼±(&K)",AFX_IDC_STRIKEOUT,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,109,55,65,10
+ CONTROL "¹ØÁÙ(&U)",AFX_IDC_UNDERLINE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,175,55,65,10
+ GROUPBOX "º¸±â",IDC_STATIC,104,71,142,36,WS_GROUP
+ CTEXT "AaBbYyZz",AFX_IDC_SAMPLEBOX,110,80,130,22,SS_NOPREFIX |
+ NOT WS_VISIBLE
+END
+
+AFX_IDD_PROPPAGE_COLOR DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Ư¼º À̸§(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_COLORPROP,3,13,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ LTEXT "½Ã½ºÅÛ »ö(&C):",IDC_STATIC,3,29,100,8
+ COMBOBOX AFX_IDC_SYSTEMCOLORS,3,39,100,54,CBS_DROPDOWNLIST |
+ CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ CONTROL "",AFX_IDC_COLOR_BLACK,"Button",BS_OWNERDRAW | WS_GROUP |
+ WS_TABSTOP,118,4,15,11
+ CONTROL "",AFX_IDC_COLOR_BLUE,"Button",BS_OWNERDRAW,138,4,15,11
+ CONTROL "",AFX_IDC_COLOR_CYAN,"Button",BS_OWNERDRAW,158,4,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKBLUE,"Button",BS_OWNERDRAW,178,4,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_DARKCYAN,"Button",BS_OWNERDRAW,118,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKGREEN,"Button",BS_OWNERDRAW,138,18,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_DARKMAGENTA,"Button",BS_OWNERDRAW,158,
+ 18,15,11
+ CONTROL "",AFX_IDC_COLOR_GRAY,"Button",BS_OWNERDRAW,178,18,15,11
+ CONTROL "",AFX_IDC_COLOR_DARKRED,"Button",BS_OWNERDRAW,118,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_GREEN,"Button",BS_OWNERDRAW,138,32,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_LIGHTBROWN,"Button",BS_OWNERDRAW,158,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_LIGHTGRAY,"Button",BS_OWNERDRAW,178,32,
+ 15,11
+ CONTROL "",AFX_IDC_COLOR_MAGENTA,"Button",BS_OWNERDRAW,118,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_RED,"Button",BS_OWNERDRAW,138,46,15,11
+ CONTROL "",AFX_IDC_COLOR_WHITE,"Button",BS_OWNERDRAW,158,46,15,
+ 11
+ CONTROL "",AFX_IDC_COLOR_YELLOW,"Button",BS_OWNERDRAW,178,46,15,
+ 11
+END
+
+AFX_IDD_PROPPAGE_PICTURE DIALOG DISCARDABLE 0, 0, 250, 62
+STYLE WS_CHILD | 0x4
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Ư¼º À̸§(&N)",IDC_STATIC,3,3,100,8
+ COMBOBOX AFX_IDC_PROPNAME,3,13,100,30,CBS_DROPDOWNLIST | CBS_SORT |
+ WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "ã¾Æº¸±â(&B)...",AFX_IDC_BROWSE,3,35,54,14
+ PUSHBUTTON "Áö¿ì±â(&C)",AFX_IDC_CLEAR,61,35,54,14
+ RTEXT "¹Ì¸®º¸±â:",IDC_STATIC,107,3,42,16
+ CONTROL "",AFX_IDC_PICTURE,"Static",SS_BLACKFRAME,151,4,93,54
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog Info
+//
+
+AFX_IDD_PROPPAGE_FONT DLGINIT
+BEGIN
+ 1002, 0x403, 12, 0
+0x6f42, 0x646c, 0x4920, 0x6174, 0x696c, 0x0063,
+ 0
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PROPPAGE_UNKNOWN "(¹ÌÁöÀÇ)"
+ AFX_IDS_COLOR_DESKTOP "µ¥½ºÅ©Åé"
+ AFX_IDS_COLOR_APPWORKSPACE "ÀÀ¿ëÇÁ·Î±×·¥ ÀÛ¾÷°ø°£"
+ AFX_IDS_COLOR_WNDBACKGND "À©µµ¿ì ¹è°æ"
+ AFX_IDS_COLOR_WNDTEXT "À©µµ¿ì ÅؽºÆ®"
+ AFX_IDS_COLOR_MENUBAR "¸Þ´ºÇ¥½ÃÁÙ"
+ AFX_IDS_COLOR_MENUTEXT "¸Þ´º ÅؽºÆ®"
+ AFX_IDS_COLOR_ACTIVEBAR "È°¼º Á¦¸ñÁÙ"
+ AFX_IDS_COLOR_INACTIVEBAR "ºñÈ°¼º Á¦¸ñÁÙ"
+ AFX_IDS_COLOR_ACTIVETEXT "È°¼º Á¦¸ñÁÙ ÅؽºÆ®"
+ AFX_IDS_COLOR_INACTIVETEXT "ºñÈ°¼º Á¦¸ñÁÙ ÅؽºÆ®"
+ AFX_IDS_COLOR_ACTIVEBORDER "È°¼º °æ°è¼±"
+ AFX_IDS_COLOR_INACTIVEBORDER "ºñÈ°¼º °æ°è¼±"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_WNDFRAME "À©µµ¿ì ÇÁ·¹ÀÓ"
+ AFX_IDS_COLOR_SCROLLBARS "À̵¿ÁÙ"
+ AFX_IDS_COLOR_BTNFACE "¹öÆ° Á¤¸é"
+ AFX_IDS_COLOR_BTNSHADOW "¹öÆ° ±×¸²ÀÚ"
+ AFX_IDS_COLOR_BTNTEXT "¹öÆ° ÅؽºÆ®"
+ AFX_IDS_COLOR_BTNHIGHLIGHT "¹öÆ° ¹ÝÀüÇ¥½Ã"
+ AFX_IDS_COLOR_DISABLEDTEXT "»ç¿ë ºÒ°¡ ÅؽºÆ®"
+ AFX_IDS_COLOR_HIGHLIGHT "¹ÝÀüÇ¥½Ã"
+ AFX_IDS_COLOR_HIGHLIGHTTEXT "¹ÝÀüÇ¥½ÃµÈ ÅؽºÆ®"
+ AFX_IDS_REGULAR "º¸Åë"
+ AFX_IDS_BOLD "±½°Ô"
+ AFX_IDS_ITALIC "±â¿ïÀÓ²Ã"
+ AFX_IDS_BOLDITALIC "±½Àº ±â¿ïÀÓ²Ã"
+ AFX_IDS_SAMPLETEXT "AaBbYyZz"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_DISPLAYSTRING_FONT "(±Û²Ã)"
+ AFX_IDS_DISPLAYSTRING_COLOR "(»ö)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_DISPLAYSTRING_PICTURE "(±×¸² - %s)"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTUREFILTER "All Picture Types|*.bmp;*.cur;*.dib;*.emf;*.ico;*.wmf|Bitmaps (*.bmp;*.dib)|*.bmp;*.dib|Icons/Cursors (*.ico;*.cur)|*.ico;*.cur|Metafiles (*.wmf;*.emf)|*.wmf;*.emf|All files (*.*)|*.*||"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_PICTYPE_UNKNOWN "¹ÌÁöÀÇ"
+ AFX_IDS_PICTYPE_NONE "¾øÀ½"
+ AFX_IDS_PICTYPE_BITMAP "ºñÆ®¸Ê"
+ AFX_IDS_PICTYPE_METAFILE "¸ÞŸÆÄÀÏ"
+ AFX_IDS_PICTYPE_ICON "¾ÆÀÌÄÜ"
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_COLOR_PPG "»ö Ư¼º ÆäÀÌÁö"
+ AFX_IDS_COLOR_PPG_CAPTION "»ö"
+ AFX_IDS_FONT_PPG "±Û²Ã Ư¼º ÆäÀÌÁö"
+ AFX_IDS_FONT_PPG_CAPTION "±Û²Ã"
+ AFX_IDS_PICTURE_PPG "±×¸² Ư¼º ÆäÀÌÁö"
+ AFX_IDS_PICTURE_PPG_CAPTION "±×¸²"
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+ AFX_IDS_BORDERSTYLE_0 "0 - ¾øÀ½"
+ AFX_IDS_BORDERSTYLE_1 "1 - °íÁ¤ ´ÜÀÏ"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_VERB_EDIT "ÆíÁý(&E)"
+ AFX_IDS_VERB_PROPERTIES "Ư¼º(&P)..."
+END
+
+#ifndef _AFX_NO_STOCKPPG_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_PICTURECANTOPEN "±×¸² ÆÄÀÏ %1À»(¸¦) ¿­ ¼ö ¾øÀ½. ÀÌ ÆÄÀÏÀÌ ¾ø°Å³ª ÀÐÀ» ¼ö ¾øÀ½."
+ AFX_IDP_PICTURECANTLOAD "±×¸² ÆÄÀÏ %1À»(¸¦) ÀоîµéÀÏ ¼ö ¾øÀ½. À߸øµÈ Æ÷¸ËÀ» °¡Áø ÆÄÀÏÀÓ."
+ AFX_IDP_PICTURETOOLARGE "±×¸² ÆÄÀÏ %1À»(¸¦) ÀоîµéÀÏ ¼ö ¾øÀ½. ÆÄÀÏÀÌ ³Ê¹« Ä¿¼­ ¸Þ¸ð¸®¿¡ ¼ö¿ëÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_PICTUREREADFAILED
+ "±×¸² ÆÄÀÏ %1À»(¸¦) ÀоîµéÀÏ ¼ö ¾øÀ½. ¼³¸íÀÌ ¾ø´Â Àб⠽ÇÆÐ."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDS_PICTUREBROWSETITLE "±×¸² ã¾Æº¸±â"
+END
+#endif // !_AFX_NO_STOCKPPG_RESOURCES
+
+#ifndef _AFX_NO_CTLERROR_RESOURCES
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_ILLEGALFUNCTIONCALL "À߸øµÈ ±â´É È£Ãâ"
+ AFX_IDP_E_OVERFLOW "¼ýÀÚ°¡ ³Ê¹«Å­"
+ AFX_IDP_E_OUTOFMEMORY "¸Þ¸ð¸® ºÎÁ·"
+ AFX_IDP_E_DIVISIONBYZERO "0À¸·Î ³ª´©±â"
+ AFX_IDP_E_OUTOFSTRINGSPACE "¹®ÀÚ¿­ °ø°£ ºÎÁ·"
+ AFX_IDP_E_OUTOFSTACKSPACE "½ºÅà °ø°£ ºÎÁ·"
+ AFX_IDP_E_BADFILENAMEORNUMBER "ºÒ·® ÆÄÀÏ À̸§ ¶Ç´Â ¹øÈ£"
+ AFX_IDP_E_FILENOTFOUND "ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_BADFILEMODE "ºÒ·® ÆÄÀÏ ¸ðµå"
+ AFX_IDP_E_FILEALREADYOPEN "ÆÄÀÏÀÌ ÀÌ¹Ì ¿­·Á ÀÖÀ½"
+ AFX_IDP_E_DEVICEIOERROR "ÀÔÃâ·Â ÀåÄ¡ ¿À·ù"
+ AFX_IDP_E_FILEALREADYEXISTS "ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÔ"
+ AFX_IDP_E_BADRECORDLENGTH "ºÒ·® ·¹ÄÚµå ±æÀÌ"
+ AFX_IDP_E_DISKFULL "µð½ºÅ©°¡ ²Ë Âü"
+ AFX_IDP_E_BADRECORDNUMBER "ºÒ·® ·¹ÄÚµå ¹øÈ£"
+ AFX_IDP_E_BADFILENAME "ºÒ·® ÆÄÀÏ À̸§"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_TOOMANYFILES "ÆÄÀÏÀÌ ³Ê¹« ¸¹À½"
+ AFX_IDP_E_DEVICEUNAVAILABLE "ÀåÄ¡¸¦ ÀÌ¿ëÇÒ ¼ö ¾øÀ½"
+ AFX_IDP_E_PERMISSIONDENIED "Çã°¡°¡ °ÅºÎµÊ"
+ AFX_IDP_E_DISKNOTREADY "µð½ºÅ©°¡ ÁغñµÇÁö ¾ÊÀ½"
+ AFX_IDP_E_PATHFILEACCESSERROR "°æ·Î/ÆÄÀÏ ¾×¼¼½º ¿À·ù"
+ AFX_IDP_E_PATHNOTFOUND "°æ·Î¸¦ ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_INVALIDPATTERNSTRING "À߸øµÈ ¹«´Ì ¹®ÀÚ¿­"
+ AFX_IDP_E_INVALIDUSEOFNULL "À߸øµÈ ³Î »ç¿ë"
+ AFX_IDP_E_INVALIDFILEFORMAT "À߸øµÈ ÆÄÀÏ Æ÷¸Ë"
+ AFX_IDP_E_INVALIDPROPERTYVALUE "À߸øµÈ Ư¼º °ª"
+ AFX_IDP_E_INVALIDPROPERTYARRAYINDEX "À߸øµÈ ¹è¿­ »öÀÎ"
+ AFX_IDP_E_SETNOTSUPPORTEDATRUNTIME "Ư¼ºÀº ½ÇÇà ½Ã°£¿¡ ¼³Á¤µÉ ¼ö ¾øÀ½"
+ AFX_IDP_E_SETNOTSUPPORTED "Ư¼ºÀº ÀбâÀü¿ëÀÓ"
+ AFX_IDP_E_NEEDPROPERTYARRAYINDEX
+ "Ư¼º ¹è¿­À» »ç¿ëÇÒ ¶§¿¡´Â ¹è¿­ »öÀÎÀ» ¸í½ÃÇÏ¿©¾ß ÇÔ"
+ AFX_IDP_E_SETNOTPERMITTED "ÀÌ Á¦¾î±â¿¡¼­´Â Ư¼ºÀ» ¼³Á¤ÇÒ ¼ö ¾øÀ½"
+ AFX_IDP_E_GETNOTSUPPORTEDATRUNTIME "½ÇÇà ½Ã°£¿¡´Â Ư¼ºÀ» ÀÐÀ» ¼ö ¾øÀ½"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_E_GETNOTSUPPORTED "Ư¼ºÀº ¾²±âÀü¿ëÀÓ"
+ AFX_IDP_E_PROPERTYNOTFOUND "Ư¼ºÀ» ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_INVALIDCLIPBOARDFORMAT "À߸øµÈ Ŭ¸³º¸µå Æ÷¸Ë"
+ AFX_IDP_E_INVALIDPICTURE "À߸øµÈ ±×¸²"
+ AFX_IDP_E_PRINTERERROR "ÇÁ¸°ÅÍ ¿À·ù"
+ AFX_IDP_E_CANTSAVEFILETOTEMP
+ "ÀúÀåÀ» À§ÇØ ÇÊ¿äÇÑ Àӽà ÆÄÀÏÀ» ÀÛ¼ºÇÒ ¼ö ¾øÀ½"
+ AFX_IDP_E_SEARCHTEXTNOTFOUND "°Ë»ö ÅؽºÆ®¸¦ ãÀ» ¼ö ¾øÀ½"
+ AFX_IDP_E_REPLACEMENTSTOOLONG "´ëü ÅؽºÆ®°¡ ³Ê¹« ±æÀ½"
+END
+#endif //!_AFX_NO_CTLERROR_RESOURCES
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.kor/afxdb.rc b/public/sdk/inc/mfc42/l.kor/afxdb.rc
new file mode 100644
index 000000000..c1b67c868
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxdb.rc
@@ -0,0 +1,103 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXDB_RC__
+#define __AFXDB_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Database Resources
+
+// Database strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_SQL_CONNECT_FAIL
+ "µ¥ÀÌÅÍ¿øº»¿¡ ´ëÇÑ ¿¬°á ½Ãµµ ½ÇÆÐ"
+ AFX_IDP_SQL_RECORDSET_FORWARD_ONLY
+ "·¹Äڵ弼Ʈ´Â ¾ÕÀ¸·Î À̵¿Çϱ⸸À» Áö¿øÇÔ."
+ AFX_IDP_SQL_EMPTY_COLUMN_LIST
+ "Ç¥ ¿­±â ½Ãµµ ½ÇÆÐ - °Ë»öÇÒ Ä®·³ÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_SQL_FIELD_SCHEMA_MISMATCH
+ "¹®ÀǷκÎÅÍ ¿¹±âÄ¡ ¾ÊÀº Ä®·³ µ¥ÀÌÅÍ Á¾·ù°¡ µÇµ¹·Á º¸³»Á³À½."
+ AFX_IDP_SQL_ILLEGAL_MODE "»õ·Î °íħ ¶Ç´Â »èÁ¦ ½Ãµµ ½ÇÆÐ."
+ AFX_IDP_SQL_MULTIPLE_ROWS_AFFECTED "¿©·¯ ÁÙÀÌ »õ·Î °íÃÄÁ³À½."
+ AFX_IDP_SQL_NO_CURRENT_RECORD "ÀÛµ¿ ½ÇÆÐ, ÇöÀç ·¹Äڵ尡 ¾øÀ½."
+ AFX_IDP_SQL_NO_ROWS_AFFECTED
+ "¾Æ¹« ÁÙµµ »õ·Î °íħÀ̳ª »èÁ¦ ÀÛµ¿ÀÇ ¿µÇâÀ» ¹ÞÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_SQL_RECORDSET_READONLY "·¹Äڵ弼Ʈ´Â ÀбâÀü¿ëÀÓ"
+ AFX_IDP_SQL_SQL_NO_TOTAL
+ "ODBC µå¶óÀ̹ö´Â MFC ±ä 2Áø µ¥ÀÌÅÍ ¸ðµ¨À» Áö¿øÇÏÁö ¾ÊÀ½."
+ AFX_IDP_SQL_ODBC_LOAD_FAILED
+ "Çʼö ±¸¼º ¿ä¼ÒÀÎ ODBC32.DLL¸¦ ÀоîµéÀÌ·Á´Â ½Ãµµ ½ÇÆÐ."
+ AFX_IDP_SQL_DYNASET_NOT_SUPPORTED
+ "ODBC µå¶óÀ̹ö´Â ´ÙÀ̳ª¼¼Æ®¸¦ Áö¿øÇÏÁö ¾ÊÀ½."
+ AFX_IDP_SQL_SNAPSHOT_NOT_SUPPORTED
+ "½º³À¼¦ Áö¿øÀ» À§Çؼ­´Â ODBC Á¤Àû Ä¿¼­ ÇÊ¿ä."
+ AFX_IDP_SQL_API_CONFORMANCE
+ "ODBC µå¶óÀ̹ö°¡ MFC µ¥ÀÌÅͺ£À̽º Á¾·ù¿Í ȣȯ¼ºÀÌ ¾øÀ½ (API_CONFORMANCE >= "
+ AFX_IDP_SQL_SQL_CONFORMANCE
+ "ODBC µå¶óÀ̹ö°¡ MFC µ¥ÀÌÅͺ£À̽º Á¾·ù¿Í ȣȯ¼ºÀÌ ¾øÀ½ (SQL_CONFORMANCE >= "
+ AFX_IDP_SQL_NO_DATA_FOUND
+ "µ¥ÀÌÅÍÀÇ ³¡À» Áö³ª°Å³ª ¸Ç óÀ½º¸´Ù ¾ÕÀ¸·Î °¡·Á´Â ½Ãµµ."
+ AFX_IDP_SQL_ROW_UPDATE_NOT_SUPPORTED
+ "´ÙÀ̳ª¼¼Æ®´Â ODBC µå¶óÀ̹ö¿¡ ÀÇÇØ Áö¿øµÇÁö ¾ÊÀ½."
+ AFX_IDP_SQL_ODBC_V2_REQUIRED
+ "ODBC ·¹º§ 2 ȣȯ µå¶óÀ̹ö ÇÊ¿ä."
+ AFX_IDP_SQL_NO_POSITIONED_UPDATES
+ "ÁöÁ¤ »õ·Î °íħÀº ODBC µå¶óÀ̹ö¿¡ ÀÇÇØ Áö¿øµÇÁö ¾ÊÀ½."
+ AFX_IDP_SQL_LOCK_MODE_NOT_SUPPORTED
+ "¿ä±¸ÇÑ Àá±Ý ¸ðµå´Â Áö¿øµÇÁö ¾ÊÀ½."
+ AFX_IDP_SQL_DATA_TRUNCATED
+ "µ¥ÀÌÅÍ À߸²."
+ AFX_IDP_SQL_ROW_FETCH
+ "±â·Ï Àç»ý ¿À·ù"
+ AFX_IDP_SQL_INCORRECT_ODBC
+ "ÇÊ¿äÇÑ ODBC ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ãÀ» ¼ö ¾øÀ½. ODBC°¡ Á¤È®ÇÏ°Ô ¼³Ä¡µÇ¾ú´ÂÁö È®ÀÎÇϽʽÿÀ."
+ AFX_IDP_SQL_UPDATE_DELETE_FAILED
+ "»õ·Î °íħ ¶Ç´Â »èÁ¦ ½ÇÆÐ"
+ AFX_IDP_SQL_DYNAMIC_CURSOR_NOT_SUPPORTED
+ "µ¿Àû Ä¿¼­´Â ODBC µå¶óÀ̹ö¿¡ ÀÇÇØ Áö¿øµÇÁö ¾Ê½À´Ï´Ù."
+ AFX_IDP_SQL_FIELD_NOT_FOUND
+ "Invalid field name or field index."
+ AFX_IDP_SQL_BOOKMARKS_NOT_SUPPORTED
+ "Bookmarks not supported for ODBC driver."
+ AFX_IDP_SQL_BOOKMARKS_NOT_ENABLED
+ "Bookmarks not enabled on recordset."
+ AFX_IDP_DAO_ENGINE_INITIALIZATION
+ "DAO/Jet db ¿£Áø ÃʱâÈ­ ºÒ´É. "
+ AFX_IDP_DAO_DFX_BIND
+ "ºÒ·® DFX °ª ÆĶó¹ÌÅÍ."
+ AFX_IDP_DAO_OBJECT_NOT_OPEN
+ "DAO TableDef ¶Ç´Â QueryDef°¡ ¿­¸®Áö ¾ÊÀ½."
+ AFX_IDP_DAO_ROWTOOSHORT
+ "GetRows ½ÇÆÐ. ÁÙ¿¡ ÇÒ´çµÈ ¸Þ¸ð¸® ºÎÁ·."
+ AFX_IDP_DAO_BADBINDINFO
+ "GetRows ¹ÙÀεù ¿À·ù. µ¥ÀÌÅÍ Á¾·ù°¡ ¸ÂÁö ¾Ê±â ¶§¹®¿¡ ¹ß»ýµÈ °Í °°½À´Ï´Ù."
+ AFX_IDP_DAO_COLUMNUNAVAILABLE
+ "GetRows ½ÇÆÐ. ¿ä±¸ÇÑ Ä®·³Àº º» µ¥ÀÌÅÍ ¼¼Æ®ÀÇ ÇÑ ¸â¹ö°¡ ¾Æ´Õ´Ï´Ù."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXDB_RC__
diff --git a/public/sdk/inc/mfc42/l.kor/afxolecl.rc b/public/sdk/inc/mfc42/l.kor/afxolecl.rc
new file mode 100644
index 000000000..67923935a
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxolecl.rc
@@ -0,0 +1,66 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLECL_RC__
+#define __AFXOLECL_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifndef _INC_DLGS
+ #include <dlgs.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Client Resources
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_STATIC_OBJECT "Á¤Àû OLE °³Ã¼¸¦ È°¼ºÈ­ÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_FAILED_TO_CONNECT "Á¢¼Ó ½ÇÆÐ.\n ¿¬°áÀÌ ²÷¾îÁ³À» ¼ö ÀÖÀ½."
+ AFX_IDP_SERVER_BUSY "¸í·ÉÀ» ó¸®ÇÒ ¼ö ¾øÀ½, ¼­¹ö »ç¿ë Áß."
+ AFX_IDP_BAD_VERB "¼­¹ö ÀÛµ¿ ½ÇÇà ½ÇÆÐ."
+ AFX_IDP_FAILED_TO_LAUNCH "¼­¹ö ÀÀ¿ëÇÁ·Î±×·¥ ½ÇÆÐ."
+ AFX_IDS_UPDATING_ITEMS "OLE °³Ã¼ »õ·Î °íħ"
+ AFX_IDP_FAILED_TO_CONVERT "OLE °³Ã¼ º¯È¯ ½ÇÆÐ."
+ AFX_IDP_ASK_TO_DISCARD "À©µµ¿ì Á¾·á ½Ã¿¡´Â OLE °³Ã¼°¡ ÀúÀåµÇÁö ¾ÊÀ½!\n %1¿¡ ´ëÇÑ ¸ðµç º¯°æ »çÇ×À» ¹ö¸±±î¿ä?"
+ AFX_IDP_FAILED_TO_CREATE "°³Ã¼ ¸¸µé±â ½ÇÆÐ. ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ½Ã½ºÅÛ µî·ÏºÎ¿¡ ÀԷµǾú´ÂÁö È®ÀÎÇϽʽÿÀ."
+
+ AFX_IDS_METAFILE_FORMAT "±×¸² (¸ÞŸÆÄÀÏ)\n ±×¸²"
+ AFX_IDS_DIB_FORMAT "ÀåÄ¡ µ¶¸³ ºñÆ®¸Ê\n ÀåÄ¡ µ¶¸³ ºñÆ®¸Ê"
+ AFX_IDS_BITMAP_FORMAT "ºñÆ®¸Ê\n ºñÆ®¸Ê"
+ AFX_IDS_LINKSOURCE_FORMAT "%s\n%s"
+ AFX_IDS_EMBED_FORMAT "%s\n%s"
+ AFX_IDS_RTF_FORMAT "Rich ÅؽºÆ® (RTF)\n±Û²Ã ¹× ´Ü¶ô ¼­½ÄÀÌ ÀÖ´Â ÅؽºÆ®"
+ AFX_IDS_TEXT_FORMAT "¼­½Ä ºñ¼³Á¤ ÅؽºÆ®\n¼­½ÄÀÌ ¾ø´Â ÅؽºÆ®"
+
+ AFX_IDS_INVALID_CURRENCY "À߸øµÈ ÅëÈ­."
+ AFX_IDS_INVALID_DATETIME "À߸øµÈ ÀϽÃ."
+ AFX_IDS_INVALID_DATETIMESPAN "À߸øµÈ ÀϽà ¹üÀ§."
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLECL_RC__
diff --git a/public/sdk/inc/mfc42/l.kor/afxolesv.rc b/public/sdk/inc/mfc42/l.kor/afxolesv.rc
new file mode 100644
index 000000000..c8526f560
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxolesv.rc
@@ -0,0 +1,53 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXOLESV_RC__
+#define __AFXOLESV_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// OLE Server Resources
+
+// OLE strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ AFX_IDP_ASK_TO_UPDATE, "ÁøÇàÇϱâ Àü¿¡ %1À»(¸¦) »õ·Î °íÄ¥±î¿ä?"
+ AFX_IDP_FAILED_TO_UPDATE, "Ŭ¶óÀ̾ðÆ®¸¦ »õ·Î °íÄ¥ ¼ö ¾øÀ½."
+
+ AFX_IDP_FAILED_TO_REGISTER, "µî·Ï ½ÇÆÐ. OLE ±â´ÉÀÌ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖÀ½."
+ AFX_IDP_FAILED_TO_AUTO_REGISTER, "½Ã½ºÅÛ µî·ÏºÎ »õ·Î °íħ ½ÇÆÐ.\nREGEDIT¸¦ »ç¿ëÇØ º¸½Ê½Ã¿À."
+END
+
+STRINGTABLE PRELOAD
+BEGIN
+ AFX_IDS_APP_TITLE_EMBEDDING, "%2 ¿¡¼­ %1"
+ AFX_IDS_OBJ_TITLE_INPLACE, "%1 - %2"
+ AFX_IDS_EXIT_MENU, "Á¾·á && %1·Î(À¸·Î) º¹±Í(&X)"
+ AFX_IDS_UPDATE_MENU, "%1 »õ·Î °íħ(&U)"
+ AFX_IDS_SAVEFILECOPY, "»çº» ´Ù¸¥ À̸§À¸·Î ÀúÀå"
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXOLESV_RC__
diff --git a/public/sdk/inc/mfc42/l.kor/afxprint.rc b/public/sdk/inc/mfc42/l.kor/afxprint.rc
new file mode 100644
index 000000000..c95b289e3
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxprint.rc
@@ -0,0 +1,130 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXPRINT_RC__
+#define __AFXPRINT_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif // APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Printing Resources
+
+AFX_IDC_MAGNIFY CURSOR DISCARDABLE "res\\magnify.cur"
+
+#ifndef _MAC
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | 0x04
+#else
+AFX_IDD_PRINTDLG DIALOG DISCARDABLE 6, 18, 133, 84
+STYLE DS_MODALFRAME | WS_POPUP
+#endif
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CTEXT "Àμâ",IDC_STATIC,0,9,133,8
+ CTEXT "",AFX_IDC_PRINT_DOCNAME,0,19,133,8
+#ifndef _MAC
+ CTEXT "¿¡¼­",IDC_STATIC,0,29,133,8
+ CTEXT "",AFX_IDC_PRINT_PRINTERNAME,0,39,133,8
+ CTEXT "",AFX_IDC_PRINT_PORTNAME,0,49,133,8
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,59,133,8
+ PUSHBUTTON "Ãë¼Ò",IDCANCEL,46,74,40,14
+#else
+ CTEXT "",AFX_IDC_PRINT_PAGENUM,0,30,133,8
+ PUSHBUTTON "Ãë¼Ò",IDCANCEL,46,45,40,15
+ CTEXT "Ãë¼ÒÇÏ·Á¸é Cmd-.¸¦ ´©¸£½Ê½Ã¿À.",IDC_STATIC,0,63,133,16
+#endif
+END
+
+// Preview Toolbar Dialog
+#ifndef _MAC
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 330, 16
+STYLE WS_CHILD | 0x04
+FONT 8, "MS Shell Dlg"
+BEGIN
+ PUSHBUTTON "Àμâ(&P)...",AFX_ID_PREVIEW_PRINT,2,2,44,12
+ PUSHBUTTON "´ÙÀ½ ÂÊ(&N)",AFX_ID_PREVIEW_NEXT,48,2,44,12
+ PUSHBUTTON "ÀÌÀü ÂÊ(&V)",AFX_ID_PREVIEW_PREV,94,2,44,12
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,140,2,44,12
+ PUSHBUTTON "È®´ë(&I)",AFX_ID_PREVIEW_ZOOMIN,186,2,44,12
+ PUSHBUTTON "Ãà¼Ò(&O)",AFX_ID_PREVIEW_ZOOMOUT,232,2,44,12
+ PUSHBUTTON "´Ý±â(&C)",AFX_ID_PREVIEW_CLOSE,278,2,44,12
+END
+#else
+// standard toolbar for 14 inch and larger screens
+// width *must* be 320 or less so that this is used on 640x480 screens
+AFX_IDD_PREVIEW_TOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 320, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Àμâ(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "´ÙÀ½ ÂÊ(&N)",AFX_ID_PREVIEW_NEXT,46,2,44,15
+ PUSHBUTTON "ÀÌÀü ÂÊ(&V)",AFX_ID_PREVIEW_PREV,91,2,44,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,136,2,44,15
+ PUSHBUTTON "È®´ë(&I)",AFX_ID_PREVIEW_ZOOMIN,181,2,44,15
+ PUSHBUTTON "Ãà¼Ò(&O)",AFX_ID_PREVIEW_ZOOMOUT,226,2,44,15
+ PUSHBUTTON "´Ý±â(&C)",AFX_ID_PREVIEW_CLOSE,271,2,44,15
+END
+
+// short toolbar for 9 inch and 12 inch screens
+AFX_IDD_PREVIEW_SHORTTOOLBAR DIALOG PRELOAD DISCARDABLE 0, 0, 270, 19
+STYLE WS_CHILD | CBRS_TOP
+BEGIN
+ PUSHBUTTON "Àμâ(&P)...",AFX_ID_PREVIEW_PRINT,1,2,44,15
+ PUSHBUTTON "´ÙÀ½(&N)",AFX_ID_PREVIEW_NEXT,46,2,29,15
+ PUSHBUTTON "ÀÌÀü(&V)",AFX_ID_PREVIEW_PREV,76,2,29,15
+ PUSHBUTTON "",AFX_ID_PREVIEW_NUMPAGE,106,2,44,15
+ PUSHBUTTON "&In",AFX_ID_PREVIEW_ZOOMIN,151,2,29,15
+ PUSHBUTTON "&Out",AFX_ID_PREVIEW_ZOOMOUT,181,2,29,15
+ PUSHBUTTON "´Ý±â(&C)",AFX_ID_PREVIEW_CLOSE,211,2,44,15
+END
+#endif
+
+// Printing strings
+STRINGTABLE DISCARDABLE
+BEGIN
+ // print progress dialog strings
+ AFX_IDS_PRINTONPORT, "%1¿¡" // for print output
+ AFX_IDS_ONEPAGE, "ÇÑ ÂÊ(&O)" // for preview button
+ AFX_IDS_TWOPAGE, "µÎ ÂÊ(&T)" // for preview button
+ AFX_IDS_PRINTPAGENUM, "ÆäÀÌÁö %u" // for print output
+ AFX_IDS_PREVIEWPAGEDESC, "ÆäÀÌÁö %u\nÆäÀÌÁö %u-%u\n"
+
+ // print to file dialog strings
+ AFX_IDS_PRINTDEFAULTEXT, "prn" // default extension
+ AFX_IDS_PRINTDEFAULT, "Output.prn" // default file
+ AFX_IDS_PRINTFILTER,
+ "ÇÁ¸°ÅÍ ÆÄÀÏ (*.prn)|*.prn|¸ðµç ÆÄÀÏ (*.*)|*.*||"
+ AFX_IDS_PRINTCAPTION, "ÆÄÀÏ¿¡ Àμâ" // caption for browse dlg
+ AFX_IDS_PRINTTOFILE, "%1 ·Î(À¸·Î)" // to file
+END
+
+// Print Preview Accelerator Table
+AFX_IDR_PREVIEW_ACCEL ACCELERATORS LOADONCALL MOVEABLE
+BEGIN
+ VK_NEXT, AFX_ID_PREVIEW_NEXT, VIRTKEY, NOINVERT
+ VK_PRIOR, AFX_ID_PREVIEW_PREV, VIRTKEY, NOINVERT
+ VK_ESCAPE, AFX_ID_PREVIEW_CLOSE, VIRTKEY, NOINVERT
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //__AFXPRINT_RC__
diff --git a/public/sdk/inc/mfc42/l.kor/afxres.rc b/public/sdk/inc/mfc42/l.kor/afxres.rc
new file mode 100644
index 000000000..9062fce77
--- /dev/null
+++ b/public/sdk/inc/mfc42/l.kor/afxres.rc
@@ -0,0 +1,223 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+#ifndef __AFXRES_RC__
+#define __AFXRES_RC__
+
+#ifndef __AFXRES_H__
+ #include <afxres.h>
+#endif
+
+#ifdef APSTUDIO_INVOKED
+// This will prevent the VC++ Resource Editor user from saving this file
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"< Ç¥ÁØ MFC ¿øº»Àº º¯°æÇÒ ¼ö ¾øÀ½! >\0"
+END
+#endif //APSTUDIO_INVOKED
+
+#ifndef _AFXDLL
+
+/////////////////////////////////////////////////////////////////////////////
+// Default resource description for MFC applications
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// Strings
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifndef _AFX_NO_APPMENU_RESOURCES
+ AFX_IDS_OPENFILE, "¿­±â"
+#ifndef _MAC
+ AFX_IDS_SAVEFILE, "´Ù¸¥ À̸§À¸·Î ÀúÀå"
+ AFX_IDS_ALLFILTER, "¸ðµç ÆÄÀÏ (*.*)"
+ AFX_IDS_UNTITLED, "Á¦¸ñ¾øÀ½"
+#else
+ AFX_IDS_SAVEFILE, "´Ù¸¥ À̸§À¸·Î ÀúÀå:"
+ AFX_IDS_ALLFILTER, "¸ðµç ÆÄÀÏ"
+ AFX_IDS_UNTITLED, "Á¦¸ñ¾øÀ½"
+ AFX_IDS_ABOUT, "%1\205 Á¤º¸"
+#endif
+ AFX_IDS_HIDE, "¼û±è(&H)"
+#endif // !_AFX_NO_APPMENUSTRING_RESOURCES
+
+ AFX_IDS_MEMORY_EXCEPTION, "¸Þ¸ð¸® ºÎÁ·."
+ AFX_IDS_NOT_SUPPORTED_EXCEPTION,"Áö¿øµÇÁö ¾Ê´Â ÀÛµ¿ÀÌ ½ÃµµµÇ¾úÀ½."
+ AFX_IDS_RESOURCE_EXCEPTION, "ÇÊ¿äÇÑ ÀÚ¿øÀÌ ¾øÀ½."
+ AFX_IDS_USER_EXCEPTION, "¹ÌÁöÀÇ ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù."
+
+ // General error prompts
+#ifndef _AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_INVALID_FILENAME, "À߸øµÈ ÆÄÀÏ À̸§."
+ AFX_IDP_FAILED_TO_OPEN_DOC, "¹®¼­ ¿­±â ½ÇÆÐ."
+ AFX_IDP_FAILED_TO_SAVE_DOC, "¹®¼­ ÀúÀå ½ÇÆÐ."
+#ifndef _MAC
+ AFX_IDP_ASK_TO_SAVE, "º¯°æ ³»¿ëÀ» %1¿¡ ÀúÀåÇÒ±î¿ä?"
+#else
+ AFX_IDP_ASK_TO_SAVE, "º¯°æ ³»¿ëÀ» %1 ¹®¼­ \042%2\042¿¡ ÀúÀåÇÒ±î¿ä?"
+#endif
+ AFX_IDP_FAILED_TO_CREATE_DOC, "ºó ¹®¼­ ÀÛ¼º ½ÇÆÐ."
+ AFX_IDP_FILE_TOO_LARGE, "ÆÄÀÏÀÌ ³Ê¹« Ä¿¼­ ¿­ ¼ö ¾øÀ½."
+ AFX_IDP_FAILED_TO_START_PRINT, "Àμâ ÀÛ¾÷À» ½ÃÀÛÇÒ ¼ö ¾øÀ½."
+#endif // !_AFX_NO_FILECMD_RESOURCES
+ AFX_IDP_FAILED_TO_LAUNCH_HELP, "µµ¿ò¸» ½ÃÀÛ ½ÇÆÐ."
+ AFX_IDP_INTERNAL_FAILURE, "³»ºÎ ÀÀ¿ëÇÁ·Î±×·¥ ¿À·ù."
+ AFX_IDP_COMMAND_FAILURE, "¸í·É ½ÇÆÐ."
+ AFX_IDP_FAILED_MEMORY_ALLOC "ÀÛµ¿À» ½ÇÇàÇϱ⿡ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÔ."
+ AFX_IDP_GET_NOT_SUPPORTED, "¾²±âÀü¿ë Ư¼ºÀ» ÀÐÀ» ¼ö ¾øÀ½."
+ AFX_IDP_SET_NOT_SUPPORTED, "ÀбâÀü¿ë Ư¼ºÀ» ¾µ ¼ö ¾øÀ½."
+ AFX_IDP_UNREG_DONE, "System registry entries have been removed and the INI file (if any) was deleted."
+ AFX_IDP_UNREG_FAILURE, "Not all of the system registry entries (or INI file) were removed."
+
+ // CFile/CArchive error strings for user failure
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FAILED_INVALID_FORMAT "¿¹±âÄ¡ ¾ÊÀº ÆÄÀÏ Æ÷¸Ë."
+#ifndef _MAC
+ AFX_IDP_FAILED_INVALID_PATH "%1\nÀÌ ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½.\n°æ·Î¿Í ÆÄÀÏ À̸§ÀÌ Á¤È®ÇÑÁö È®ÀÎÇϽʽÿÀ."
+ AFX_IDP_FAILED_DISK_FULL "´ë»ó µð½ºÅ© µå¶óÀ̺갡 ²Ë áÀ½."
+#else
+ AFX_IDP_FAILED_INVALID_PATH "\042%1.\042 ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½. ÆÄÀÏ À̸§ÀÌ Á¤È®ÇÑÁö È®ÀÎÇϽʽÿÀ."
+ AFX_IDP_FAILED_DISK_FULL "´ë»ó µð½ºÅ©°¡ ²Ë áÀ½."
+#endif
+ AFX_IDP_FAILED_ACCESS_READ "%1·Î(À¸·Î)ºÎÅÍ ÀÐÀ» ¼ö ¾øÀ½. ´Ù¸¥ »ç¶÷ÀÌ ¿­¾úÀ½."
+ AFX_IDP_FAILED_ACCESS_WRITE "%1¿¡ ¾µ ¼ö ¾øÀ½. ÀбâÀü¿ëÀ̰ųª ´Ù¸¥ »ç¶÷ÀÌ ¿­¾úÀ½."
+ AFX_IDP_FAILED_IO_ERROR_READ "%1À»(¸¦) Àд Áß¿¡ ¿¹±âÄ¡ ¸øÇÑ ¿À·ù ¹ß»ý."
+ AFX_IDP_FAILED_IO_ERROR_WRITE "%1À»(¸¦) ¾²´Â Áß¿¡ ¿¹±âÄ¡ ¸øÇÑ ¿À·ù ¹ß»ý."
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ // Parsing error prompts
+ AFX_IDP_PARSE_INT, "Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_REAL, "¼ýÀÚ¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_INT_RANGE, "%1¿Í(°ú) %2 »çÀÌÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_REAL_RANGE, "%1¿Í(°ú) %2 »çÀÌÀÇ ¼ýÀÚ¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_STRING_SIZE, "1% ÀÌÇÏÀÇ ¹®ÀÚ¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_RADIO_BUTTON, "¹öÆ°À» ¼±ÅÃÇϽʽÿÀ."
+ AFX_IDP_PARSE_BYTE, "0 ¿¡¼­ 255 »çÀÌÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_UINT, "¾çÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_DATETIME, "³¯Â¥ ¹×/¶Ç´Â ½Ã°£À» ÀÔ·ÂÇϽʽÿÀ."
+ AFX_IDP_PARSE_CURRENCY, "ÅëÈ­¸¦ ÀÔ·ÂÇϽʽÿÀ."
+
+#ifndef _AFX_NO_OLE_RESOURCES
+ // OLE strings required for both servers and containers
+ AFX_IDS_PASTELINKEDTYPE "¿¬°áµÈ %s"
+ AFX_IDS_UNKNOWNTYPE "¹ÌÁöÀÇ Á¾·ù"
+#ifndef _MAC
+ AFX_IDP_FAILED_TO_NOTIFY "%1\n¹®¼­¸¦ µî·ÏÇÒ ¼ö ¾øÀ½.\n¹®¼­°¡ ÀÌ¹Ì ¿­·Á ÀÖÀ½."
+#else
+ AFX_IDP_FAILED_TO_NOTIFY "\042%1.\042 ¹®¼­¸¦ µî·ÏÇÒ ¼ö ¾øÀ½. ¹®¼­°¡ ÀÌ¹Ì ¿­·Á ÀÖÀ½."
+#endif
+#endif //!_AFX_NO_OLE_RESOURCES
+
+ AFX_IDP_NO_ERROR_AVAILABLE "¿À·ù ¸Þ½ÃÁö°¡ ¾øÀ½."
+
+#ifndef _AFX_NO_CFILE_RESOURCES
+ AFX_IDP_FILE_NONE "¾Æ¹« ¿À·ùµµ ¹ß»ýÇÏÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_FILE_GENERIC "%1 ¾×¼¼½º Áß¿¡ ¹ÌÁöÀÇ ¿À·ù ¹ß»ý."
+ AFX_IDP_FILE_NOT_FOUND "%1 À»(¸¦) ãÀ» ¼ö ¾øÀ½."
+ AFX_IDP_FILE_BAD_PATH "%1 ¿¡ À߸øµÈ °æ·Î°¡ ÀÖÀ½."
+ AFX_IDP_FILE_TOO_MANY_OPEN "¿­¸° ÆÄÀÏÀÌ ³Ê¹« ¸¹±â ¶§¹®¿¡ %1À»(¸¦) ¿­ ¼ö ¾øÀ½."
+ AFX_IDP_FILE_ACCESS_DENIED "%1¿¡ ´ëÇÑ ¾×¼¼½º°¡ °ÅºÎµÇ¾úÀ½."
+ AFX_IDP_FILE_INVALID_FILE "À߸øµÈ ÆÄÀÏ ÇÚµéÀÌ %1¿Í(°ú) °ü·ÃµÇ¾úÀ½."
+ AFX_IDP_FILE_REMOVE_CURRENT "%1Àº(´Â) ÇöÀç µð·ºÅ丮À̱⠶§¹®¿¡ »èÁ¦ÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_FILE_DIR_FULL "µð·ºÅ丮°¡ ²Ë á±â ¶§¹®¿¡ %1À»(¸¦) ÀÛ¼ºÇÒ ¼ö ¾øÀ½."
+ AFX_IDP_FILE_BAD_SEEK "%1¿¡¼­ Ž»ö ½ÇÆÐ"
+ AFX_IDP_FILE_HARD_IO "%1 ¾×¼¼½º Áß¿¡ Çϵå¿þ¾î ÀÔÃâ·Â ¿À·ù°¡ º¸°íµÇ¾úÀ½."
+ AFX_IDP_FILE_SHARING "%1 ¾×¼¼½º Áß¿¡ °øÀ¯ À§¹ÝÀÌ ¹ß»ýÇÏ¿´À½."
+ AFX_IDP_FILE_LOCKING "%1 ¾×¼¼½º Áß¿¡ Àá±Ý À§¹ÝÀÌ ¹ß»ýÇÏ¿´À½."
+ AFX_IDP_FILE_DISKFULL "%1 ¾×¼¼½º Áß¿¡ µð½ºÅ©°¡ ²Ë Âü."
+ AFX_IDP_FILE_EOF "%1ÀÇ ³¡À» Áö³ª¼­ ¾×¼¼½ºÇÏ·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDS_UNNAMED_FILE "À̸§ ¾ø´Â ÆÄÀÏ"
+#endif // !_AFX_NO_CFILE_RESOURCES
+
+ AFX_IDP_ARCH_NONE "¾Æ¹« ¿À·ùµµ ¹ß»ýÇÏÁö ¾Ê¾ÒÀ½."
+ AFX_IDP_ARCH_GENERIC "%1 ¾×¼¼½º Áß¿¡ ¹ÌÁöÀÇ ¿À·ù ¹ß»ý."
+ AFX_IDP_ARCH_READONLY "%1 Àб⿡ ¾²±â¸¦ ÇÏ·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDP_ARCH_ENDOFFILE "%1ÀÇ ³¡À» Áö³ª¼­ ¾×¼¼½ºÇÏ·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDP_ARCH_WRITEONLY "%1 ¾²±â·ÎºÎÅÍ ÀÐÀ¸·Á´Â ½Ãµµ°¡ ÀÖ¾úÀ½."
+ AFX_IDP_ARCH_BADINDEX "%1¿¡´Â ºÒ·® Æ÷¸ËÀÌ ÀÖÀ½."
+ AFX_IDP_ARCH_BADCLASS "%1¿¡´Â ¿¹±âÄ¡ ¸øÇÑ °³Ã¼°¡ ÀÖÀ½."
+ AFX_IDP_ARCH_BADSCHEMA "%1¿¡´Â ºÎÁ¤È®ÇÑ ½ºÅ°¸¶°¡ ÀÖÀ½."
+
+#ifndef _AFX_NO_MAPI_RESOURCES
+ // MAPI strings / error messages
+ AFX_IDP_FAILED_MAPI_LOAD "¿ìÆí ½Ã½ºÅÛ Áö¿øÀ» ÀоîµéÀÏ ¼ö ¾øÀ½."
+ AFX_IDP_INVALID_MAPI_DLL "¿ìÆí ½Ã½ºÅÛ DLLÀÌ À߸øµÇ¾úÀ½."
+ AFX_IDP_FAILED_MAPI_SEND "¿ìÆí º¸³»±â°¡ ¸Þ½ÃÁö ¼Û½Å¿¡ ½ÇÆÐÇßÀ½."
+#endif //!_AFX_NO_MAPI_RESOURCES
+
+#ifndef _AFX_NO_OCC_RESOURCES
+ AFX_IDS_OCC_SCALEUNITS_PIXELS "Çȼ¿"
+#endif //!_AFX_NO_OCC_RESOURCES
+END
+
+/////////////////////////////////////////////////////////////////////////////
+// Cursors
+
+AFX_IDC_CONTEXTHELP CURSOR DISCARDABLE "res\\help.cur"
+
+#ifndef _AFX_NO_SPLITTER_RESOURCES
+AFX_IDC_SMALLARROWS CURSOR DISCARDABLE "res\\sarrows.cur"
+AFX_IDC_HSPLITBAR CURSOR DISCARDABLE "res\\splith.cur"
+AFX_IDC_VSPLITBAR CURSOR DISCARDABLE "res\\splitv.cur"
+AFX_IDC_NODROPCRSR CURSOR DISCARDABLE "res\\nodrop.cur"
+#endif //!_AFX_NO_SPLITTER_RESOURCES
+
+#ifndef _AFX_NO_TRACKER_RESOURCES
+AFX_IDC_TRACKNWSE CURSOR DISCARDABLE "res\\trcknwse.cur"
+AFX_IDC_TRACKNESW CURSOR DISCARDABLE "res\\trcknesw.cur"
+AFX_IDC_TRACKNS CURSOR DISCARDABLE "res\\trckns.cur"
+AFX_IDC_TRACKWE CURSOR DISCARDABLE "res\\trckwe.cur"
+AFX_IDC_TRACK4WAY CURSOR DISCARDABLE "res\\trck4way.cur"
+AFX_IDC_MOVE4WAY CURSOR DISCARDABLE "res\\move4way.cur"
+#endif //!_AFX_NO_TRACKER_RESOURCES
+
+#ifndef _AFX_NO_CTL3D_RESOURCES
+26567 BITMAP "res\\3dcheck.bmp" // Note: 26567 comes from CTL3D.H
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard Dialogs
+
+#ifndef _AFX_NO_NEWTYPEDLG_RESOURCES
+AFX_IDD_NEWTYPEDLG DIALOG DISCARDABLE 9, 26, 183, 70
+#ifndef _MAC
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 0x04
+#else
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
+#endif
+CAPTION "»õ·Î¿î"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "»õ·Î¿î(&N)",IDC_STATIC,6,5,123,8,NOT WS_GROUP
+ LISTBOX AFX_IDC_LISTBOX,6,15,125,49,WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "È®ÀÎ",IDOK,137,6,40,14
+ PUSHBUTTON "Ãë¼Ò",IDCANCEL,137,23,40,14
+ PUSHBUTTON "µµ¿ò¸»(&H)",ID_HELP,137,43,40,14
+END
+#endif // !_AFX_NO_NEWTYPEDLG_RESOURCES
+
+/////////////////////////////////////////////////////////////////////////////
+// CMiniFrameWnd Bitmap
+
+AFX_IDB_MINIFRAME_MENU BITMAP DISCARDABLE "res\\minifwnd.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+// CCheckListBox Bitmaps
+
+AFX_IDB_CHECKLISTBOX_NT BITMAP DISCARDABLE "res\\ntcheck.bmp"
+AFX_IDB_CHECKLISTBOX_95 BITMAP DISCARDABLE "res\\95check.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+
+#endif //!_AFXDLL
+#endif //!__AFXRES_RC__
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/mfc42/mfcsamps.mak b/public/sdk/inc/mfc42/mfcsamps.mak
new file mode 100644
index 000000000..18e946cd5
--- /dev/null
+++ b/public/sdk/inc/mfc42/mfcsamps.mak
@@ -0,0 +1,490 @@
+# This is a part of the Microsoft Foundation Classes C++ library.
+# Copyright (C) 1992-1995 Microsoft Corporation
+# All rights reserved.
+#
+# This source code is only intended as a supplement to the
+# Microsoft Foundation Classes Reference and related
+# electronic documentation provided with the library.
+# See these sources for detailed information regarding the
+# Microsoft Foundation Classes product.
+
+# Common include for building MFC Sample programs
+#
+# typical usage
+# PROJ=foo
+# OBJS=foo.obj bar.obj ...
+# !INCLUDE ..\..\SAMPLE_.MAK
+#
+# ROOT specifies the location of the msdev\samples\mfc directory,
+# relative to the project directory. Because the MFC tutorial samples
+# have an intermediate STEP<n> subdirectory, they use
+# ROOT=..\..\..
+# instead of the default
+# ROOT=..\..
+#
+# NOTE: do not include 'stdafx.obj' in the OBJS list - the correctly
+# built version will be included for you
+#
+# Options to NMAKE:
+# "PLATFORM=?"
+# This option chooses the appropriate tools and sources for the
+# different platforms support by Windows/NT. Currently INTEL,
+# MIPS, ALPHA, PPC, M68K, and MPPC are supported; more will be
+# added as they become available. The default is chosen based on
+# the host environment. This option must be set for MAC_ builds.
+# "DEBUG=0" use release (default debug)
+# "CODEVIEW=1" include codeview info (even for release builds)
+# "AFXDLL=1" to use shared DLL version of MFC
+# "USRDLL=1" to build a DLL that uses static MFC
+# "UNICODE=1" to build UNICODE enabled applications
+# (not all samples support UNICODE)
+# "NO_PCH=1" do not use precompiled headers (defaults to use pch)
+# "COFF=1" include COFF symbols
+
+!ifndef PROJ
+!ERROR You forgot to define 'PROJ' symbol!!
+!endif
+
+
+ROOT=.
+!ifndef ROOT
+!endif
+
+!ifndef OBJS
+!ERROR You forgot to define 'OBJS' symbol!!
+!endif
+
+!ifndef DEBUG
+DEBUG=1
+!endif
+
+!ifndef AFXDLL
+AFXDLL=0
+!endif
+
+!ifndef UNICODE
+UNICODE=0
+!endif
+
+!ifndef USRDLL
+USRDLL=0
+!endif
+
+!if "$(USRDLL)" != "0"
+AFXDLL=0
+!endif
+
+!ifndef PLATFORM
+!ifndef PROCESSOR_ARCHITECTURE
+PROCESSOR_ARCHITECTURE=x86
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
+PLATFORM=INTEL
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
+PLATFORM=ALPHA
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"
+PLATFORM=MIPS
+!endif
+!if "$(PROCESSOR_ARCHITECTURE)" == "PPC"
+PLATFORM=PPC
+!endif
+!endif
+
+!ifndef USES_OLE
+USES_OLE=0
+!endif
+
+!ifndef USES_DB
+USES_DB=0
+!endif
+
+!ifndef CONSOLE
+CONSOLE=0
+!endif
+
+!ifndef NO_PCH
+NO_PCH=0
+!endif
+
+#
+# Set BASE=W, M, or P depending on platform
+#
+BASE=W
+!if "$(PLATFORM)" == "M68K" || "$(PLATFORM)" == "MPPC"
+MACOS=1
+!undef BASE
+!if "$(PLATFORM)" == "M68K"
+BASE=M
+!else
+BASE=P
+!endif
+!endif
+
+!if "$(UNICODE)" == "0"
+!if "$(AFXDLL)" == "0"
+!if "$(USRDLL)" != "1"
+STDAFX=stdafx
+!else
+STDAFX=stdusr
+!endif
+!else
+STDAFX=stddll
+!endif
+!endif
+
+!if "$(UNICODE)" == "1"
+!if "$(AFXDLL)" == "0"
+!if "$(USRDLL)" != "1"
+STDAFX=uniafx
+!else
+STDAFX=uniusr
+!endif
+!else
+STDAFX=unidll
+!endif
+!endif
+
+!if "$(DEBUG)" == "1"
+STDAFX=$(STDAFX)d
+!if "$(COFF)" != "1"
+!ifndef CODEVIEW
+CODEVIEW=1
+!endif
+!endif
+!endif
+
+!if "$(CODEVIEW)" == "1"
+STDAFX=$(STDAFX)v
+!endif
+
+!if "$(DEBUG)" == "1"
+DEBUG_SUFFIX=d
+!endif
+
+!if "$(DEBUG)" != "0"
+DEBUGFLAGS=/Od
+MFCDEFS=$(MFCDEFS) /D_DEBUG
+
+!if "$(PLATFORM)" == "M68K"
+DEBUGFLAGS=/Q68m
+!endif
+
+!endif
+
+!if "$(DEBUG)" == "0"
+!if "$(PLATFORM)" == "INTEL"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "MIPS"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "ALPHA"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "PPC"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "M68K"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!if "$(PLATFORM)" == "MPPC"
+DEBUGFLAGS=/O1 /Gy
+!endif
+!endif # DEBUG == 0
+
+!if "$(CODEVIEW)" == "1" || "$(COFF)" == "1"
+DEBUGFLAGS=$(DEBUGFLAGS) /Z7
+!endif
+
+!if "$(UNICODE)" == "1"
+DLL_SUFFIX=u
+!endif
+
+!if "$(AFXDLL)" == "1"
+MFCFLAGS=$(MFCFLAGS) /MD$(DEBUG_SUFFIX)
+MFCDEFS=$(MFCDEFS) /D_AFXDLL
+!endif # AFXDLL == 1
+
+!if "$(USRDLL)" == "1"
+MFCDEFS=$(MFCDEFS) /D_USRDLL /D_WINDLL
+!endif
+
+!if "$(AFXDLL)" == "0"
+!if "$(MACOS)" != "1"
+MFCFLAGS=$(MFCFLAGS) /MT$(DEBUG_SUFFIX)
+!elseif "$(PLATFORM)" != "M68K"
+MFCFLAGS=$(MFCFLAGS) /ML$(DEBUG_SUFFIX)
+!endif
+!endif
+
+!if "$(UNICODE)" == "1"
+MFCDEFS=$(MFCDEFS) /D_UNICODE
+!else
+MFCDEFS=$(MFCDEFS) /D_MBCS
+!endif
+
+!if "$(MACOS)" == "1"
+MFCDEFS=$(MFCDEFS) /D_MAC
+!if "$(PLATFORM)" == "M68K"
+ARCHITECTURE='m68k'
+!else
+ARCHITECTURE='pwpc'
+!endif
+!endif
+
+!if "$(PLATFORM)" == "INTEL"
+MFCDEFS=$(MFCDEFS) /D_X86_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "MIPS"
+MFCDEFS=$(MFCDEFS) /D_MIPS_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "ALPHA"
+MFCDEFS=$(MFCDEFS) /D_ALPHA_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "PPC"
+MFCDEFS=$(MFCDEFS) /D_PPC_
+!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
+CPP=mcl
+!else
+CPP=cl
+!endif
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "M68K"
+MFCDEFS=$(MFCDEFS) /D_WINDOWS /DWIN32 /D_68K_
+CPP=cl
+CFLAGS=/GX /c /W3 /AL /Gt1 /Q68s $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+!if "$(PLATFORM)" == "MPPC"
+MFCDEFS=$(MFCDEFS) /D_WINDOWS /DWIN32 /D_MPPC_
+CPP=cl
+CFLAGS=/GX /c /W3 $(DEBUGFLAGS) $(MFCFLAGS) $(MFCDEFS)
+!endif
+
+CPPMAIN_FLAGS=$(CFLAGS)
+
+!if "$(NO_PCH)" == "1"
+CPPFLAGS=$(CPPMAIN_FLAGS)
+!else
+PCHDIR=.
+CPPFLAGS=$(CPPMAIN_FLAGS) /Yustdafx.h /Fp$(PCHDIR)\$(STDAFX).pch
+!endif
+
+!if "$(COFF)" == "1"
+NO_PDB=1
+!if "$(CODEVIEW)" != "1"
+LINKDEBUG=/incremental:no /debug:full /debugtype:coff
+!else
+LINKDEBUG=/incremental:no /debug:full /debugtype:both
+!endif
+!endif
+
+!if "$(COFF)" != "1"
+!if "$(CODEVIEW)" == "1"
+LINKDEBUG=/incremental:no /debug:full /debugtype:cv
+!else
+LINKDEBUG=/incremental:no /debug:none
+!endif
+!endif
+
+!if "$(NO_PDB)" == "1"
+LINKDEBUG=$(LINKDEBUG) /pdb:none
+!endif
+
+!if "$(PLATFORM)" == "INTEL"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "MIPS"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "ALPHA"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "PPC"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "M68K"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+!if "$(PLATFORM)" == "MPPC"
+LINKCMD=link $(LINKDEBUG)
+!endif
+
+# link flags - must be specified after $(LINKCMD)
+#
+# conflags : creating a character based console application
+# guiflags : creating a GUI based "Windows" application
+
+!if "$(MACOS)" != "1"
+CONFLAGS=/subsystem:console
+GUIFLAGS=/subsystem:windows
+!else
+!if defined(MACSIG)
+GUIFLAGS=/mac:type=APPL /mac:creator=$(MACSIG)
+!endif
+!endif
+
+!if "$(UNICODE)" == "1"
+CONFLAGS=$(CONFLAGS) /entry:wmainCRTStartup
+GUIFLAGS=$(GUIFLAGS) /entry:wWinMainCRTStartup
+!endif
+
+!if "$(MACOS)" != "1"
+PROJRESFILE=$(PROJ).res
+!else
+PROJRESFILE=$(PROJ).rsc $(MACSIG)mac.rsc
+!if "$(AFXDLL)" != "1"
+BASERESFILE=
+!endif
+!endif
+RESFILE=$(PROJRESFILE)
+
+.SUFFIXES:
+.SUFFIXES: .c .cpp .rcm .rc
+
+.cpp.obj:
+ $(CPP) @<<
+$(CPPFLAGS) $*.cpp
+<<
+
+.c.obj:
+ $(CPP) @<<
+$(CFLAGS) $(CVARS) $*.c
+<<
+
+!if "$(MACOS)" != "1"
+.rc.res:
+ rc /r $(MFCDEFS) $<
+!else
+.rc.rsc:
+ rc /r /m $(MFCDEFS) $<
+!endif
+
+#############################################################################
+
+!if "$(NO_PCH)" == "0"
+LINK_OBJS=$(OBJS) $(PCHDIR)\$(STDAFX).obj
+!else
+LINK_OBJS=$(OBJS)
+!endif
+
+#
+# Build CONSOLE Win32 application
+#
+!if "$(CONSOLE)" == "1"
+
+!if "$(MACOS)" == "1"
+!error Macintosh targets do not support console applications
+!endif
+
+$(PROJ).exe: $(LINK_OBJS)
+ $(LINKCMD) @<<
+$(CONFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(EXTRA_LIBS)
+<<
+
+!endif # CONSOLE=1
+
+#
+# Build Win32 application
+#
+!if "$(CONSOLE)" == "0"
+
+!if "$(MACOS)" == "1"
+copy: $(PROJ).exe
+!if defined(MACNAME)
+ mfile copy $(PROJ).exe ":$(MACNAME):$(PROJ)"
+!endif
+!endif
+
+!if "$(MACOS)" == "1"
+$(MACSIG)mac.rsc: $(MACSIG)mac.r
+ mrc $(MFCDEFS) /DARCHITECTURE=$(ARCHITECTURE) /o $(MACSIG)mac.rsc $(MACSIG)mac.r
+!endif
+
+!if "$(USRDLL)" == "1"
+$(PROJ).dll: $(LINK_OBJS) $(PROJRESFILE)
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).dll /map:$(PROJ).map
+/dll /def:$(PROJ).def
+$(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
+<<
+
+$(PROJ).res: resource.h
+$(PROJ).rsc: resource.h
+!endif
+
+!if "$(SIMPLE_APP)" != "1"
+$(PROJ).exe: $(LINK_OBJS) $(PROJRESFILE)
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(RESFILE) $(EXTRA_LIBS)
+<<
+
+$(PROJ).res: resource.h
+$(PROJ).rsc: resource.h
+!endif
+
+!if "$(SIMPLE_APP)" == "1"
+!if "$(MACOS)" == "1"
+$(PROJ).exe: $(LINK_OBJS) $(MACSIG)mac.rsc
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(MACSIG)mac.rsc $(EXTRA_LIBS)
+<<
+
+!else
+$(PROJ).exe: $(LINK_OBJS)
+ $(LINKCMD) @<<
+$(GUIFLAGS) /out:$(PROJ).exe /map:$(PROJ).map
+$(LINK_OBJS) $(EXTRA_LIBS)
+<<
+
+!endif
+!endif
+
+!if "$(NO_PCH)" == "0"
+$(PCHDIR)\$(STDAFX).obj $(PCHDIR)\$(STDAFX).pch: stdafx.h stdafx.cpp
+ echo "BUILDING SHARED PCH and PCT files"
+ $(CPP) @<<
+$(CPPMAIN_FLAGS) /Ycstdafx.h /Fp$(PCHDIR)\$(STDAFX).pch /Fo$(PCHDIR)\$(STDAFX).obj /c $(ROOT)\stdafx.cpp
+<<
+
+$(OBJS): $(PCHDIR)\$(STDAFX).pch
+!endif
+
+!endif # CONSOLE=0
+
+clean::
+ if exist $(PROJ).exe erase $(PROJ).exe
+ if exist *.aps erase *.aps
+ if exist *.pch erase *.pch
+ if exist *.map erase *.map
+ if exist *.obj erase *.obj
+ if exist *.exp erase *.exp
+ if exist *.pdb erase *.pdb
+ if exist *.map erase *.map
+ if exist *.lib erase *.lib
+ if exist *.res erase *.res
+ if exist *.rsc erase *.rsc
+ if exist *.pef erase *.pef
+
+#############################################################################
diff --git a/public/sdk/inc/mfc42/mssccprj.scc b/public/sdk/inc/mfc42/mssccprj.scc
new file mode 100644
index 000000000..b03b9d539
--- /dev/null
+++ b/public/sdk/inc/mfc42/mssccprj.scc
@@ -0,0 +1,4 @@
+SCC = This is a Source Code Control file
+
+[mfcsamps.mak]
+SCC_Project_Name = "$/Sources - MFC/MFC 4.2/include", QDAAAAAA
diff --git a/public/sdk/inc/mfc42/res/3dcheck.bmp b/public/sdk/inc/mfc42/res/3dcheck.bmp
new file mode 100644
index 000000000..23d739342
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/3dcheck.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/95check.bmp b/public/sdk/inc/mfc42/res/95check.bmp
new file mode 100644
index 000000000..3fe90db3b
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/95check.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/copy4way.cur b/public/sdk/inc/mfc42/res/copy4way.cur
new file mode 100644
index 000000000..e0f41447d
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/copy4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/help.cur b/public/sdk/inc/mfc42/res/help.cur
new file mode 100644
index 000000000..217090e5b
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/help.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/help.rsc b/public/sdk/inc/mfc42/res/help.rsc
new file mode 100644
index 000000000..3e21661ee
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/help.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/magnify.cur b/public/sdk/inc/mfc42/res/magnify.cur
new file mode 100644
index 000000000..d9a7042cf
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/magnify.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/magnify.rsc b/public/sdk/inc/mfc42/res/magnify.rsc
new file mode 100644
index 000000000..5d0c3813a
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/magnify.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/minifwnd.bmp b/public/sdk/inc/mfc42/res/minifwnd.bmp
new file mode 100644
index 000000000..b5861c4f7
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/minifwnd.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/move4way.cur b/public/sdk/inc/mfc42/res/move4way.cur
new file mode 100644
index 000000000..545afa10d
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/move4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/nodrop.cur b/public/sdk/inc/mfc42/res/nodrop.cur
new file mode 100644
index 000000000..9fc75a562
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/nodrop.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/ntcheck.bmp b/public/sdk/inc/mfc42/res/ntcheck.bmp
new file mode 100644
index 000000000..5ad35e43c
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/ntcheck.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/sarrows.cur b/public/sdk/inc/mfc42/res/sarrows.cur
new file mode 100644
index 000000000..b4e601ef0
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/sarrows.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/split.rsc b/public/sdk/inc/mfc42/res/split.rsc
new file mode 100644
index 000000000..8afb35a95
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/split.rsc
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/splith.cur b/public/sdk/inc/mfc42/res/splith.cur
new file mode 100644
index 000000000..bb03d7734
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/splith.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/splitv.cur b/public/sdk/inc/mfc42/res/splitv.cur
new file mode 100644
index 000000000..1fd0d55c8
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/splitv.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/trck4way.cur b/public/sdk/inc/mfc42/res/trck4way.cur
new file mode 100644
index 000000000..974d02017
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/trck4way.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/trcknesw.cur b/public/sdk/inc/mfc42/res/trcknesw.cur
new file mode 100644
index 000000000..f92de6e68
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/trcknesw.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/trckns.cur b/public/sdk/inc/mfc42/res/trckns.cur
new file mode 100644
index 000000000..49e558267
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/trckns.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/trcknwse.cur b/public/sdk/inc/mfc42/res/trcknwse.cur
new file mode 100644
index 000000000..7a7d8820d
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/trcknwse.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/trckwe.cur b/public/sdk/inc/mfc42/res/trckwe.cur
new file mode 100644
index 000000000..a069140e7
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/trckwe.cur
Binary files differ
diff --git a/public/sdk/inc/mfc42/res/truetype.bmp b/public/sdk/inc/mfc42/res/truetype.bmp
new file mode 100644
index 000000000..3b22b2e03
--- /dev/null
+++ b/public/sdk/inc/mfc42/res/truetype.bmp
Binary files differ
diff --git a/public/sdk/inc/mfc42/servprov.h b/public/sdk/inc/mfc42/servprov.h
new file mode 100644
index 000000000..cd50c5bcc
--- /dev/null
+++ b/public/sdk/inc/mfc42/servprov.h
@@ -0,0 +1,191 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.15 */
+/* at Fri Jun 14 20:22:17 1996
+ */
+/* Compiler settings for servprov.idl:
+ Oi, W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __servprov_h__
+#define __servprov_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IServiceProvider_FWD_DEFINED__
+#define __IServiceProvider_FWD_DEFINED__
+typedef interface IServiceProvider IServiceProvider;
+#endif /* __IServiceProvider_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+#include "oleidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Jun 14 20:22:17 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright 1995 - 1996 Microsoft Corporation. All Rights Reserved.
+//
+// File: servprov.h
+//
+//--------------------------------------------------------------------------
+
+#pragma comment(lib,"uuid3.lib")
+
+#ifndef _LPSERVICEPROVIDER_DEFINED
+#define _LPSERVICEPROVIDER_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IServiceProvider_INTERFACE_DEFINED__
+#define __IServiceProvider_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IServiceProvider
+ * at Fri Jun 14 20:22:17 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][local][object] */
+
+
+typedef /* [unique] */ IServiceProvider __RPC_FAR *LPSERVICEPROVIDER;
+
+
+EXTERN_C const IID IID_IServiceProvider;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IServiceProvider : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryService(
+ /* [in] */ REFGUID rsid,
+ /* [in] */ REFIID iid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IServiceProviderVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IServiceProvider __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IServiceProvider __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IServiceProvider __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryService )(
+ IServiceProvider __RPC_FAR * This,
+ /* [in] */ REFGUID rsid,
+ /* [in] */ REFIID iid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+ END_INTERFACE
+ } IServiceProviderVtbl;
+
+ interface IServiceProvider
+ {
+ CONST_VTBL struct IServiceProviderVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IServiceProvider_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IServiceProvider_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IServiceProvider_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IServiceProvider_QueryService(This,rsid,iid,ppvObj) \
+ (This)->lpVtbl -> QueryService(This,rsid,iid,ppvObj)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IServiceProvider_QueryService_Proxy(
+ IServiceProvider __RPC_FAR * This,
+ /* [in] */ REFGUID rsid,
+ /* [in] */ REFIID iid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+void __RPC_STUB IServiceProvider_QueryService_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IServiceProvider_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0082
+ * at Fri Jun 14 20:22:17 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0082_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0082_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/mfc42/sql.h b/public/sdk/inc/mfc42/sql.h
new file mode 100644
index 000000000..6aa49d658
--- /dev/null
+++ b/public/sdk/inc/mfc42/sql.h
@@ -0,0 +1,1259 @@
+/*****************************************************************
+** SQL.H - This is the the main include for ODBC Core functions.
+**
+** preconditions:
+** #include "windows.h"
+**
+** (C) Copyright 1990 - 1995 By Microsoft Corp.
+**
+** Updated 5/12/93 for 2.00 specification
+** Updated 5/23/94 for 2.01 specification
+** Updated 11/10/94 for 2.10 specification
+** Updated 04/10/95 for 2.50 specification
+*********************************************************************/
+
+#ifndef __SQL
+#define __SQL
+
+/*
+* ODBCVER ODBC version number (0x0200). To exclude
+* definitions introduced in version 2.0 (or above)
+* #define ODBCVER 0x0100 before #including <sql.h>
+*/
+
+/* If ODBCVER is not defined, assume version 2.50 */
+#ifndef ODBCVER
+#define ODBCVER 0x0250
+#endif
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+/* generally useful constants */
+#if (ODBCVER >= 0x0200)
+#define SQL_SPEC_MAJOR 2 /* Major version of specification */
+#define SQL_SPEC_MINOR 50 /* Minor version of specification */
+#define SQL_SPEC_STRING "02.50" /* String constant for version */
+#endif /* ODBCVER >= 0x0200 */
+#define SQL_SQLSTATE_SIZE 5 /* size of SQLSTATE */
+#define SQL_MAX_MESSAGE_LENGTH 512 /* message buffer size */
+#define SQL_MAX_DSN_LENGTH 32 /* maximum data source name size*/
+
+/* RETCODEs */
+#define SQL_INVALID_HANDLE (-2)
+#define SQL_ERROR (-1)
+#define SQL_SUCCESS 0
+#define SQL_SUCCESS_WITH_INFO 1
+#define SQL_NO_DATA_FOUND 100
+
+/* Standard SQL datatypes, using ANSI type numbering */
+#define SQL_CHAR 1
+#define SQL_NUMERIC 2
+#define SQL_DECIMAL 3
+#define SQL_INTEGER 4
+#define SQL_SMALLINT 5
+#define SQL_FLOAT 6
+#define SQL_REAL 7
+#define SQL_DOUBLE 8
+#define SQL_VARCHAR 12
+
+#define SQL_TYPE_NULL 0
+#define SQL_TYPE_MIN SQL_BIT
+#define SQL_TYPE_MAX SQL_VARCHAR
+#define SQL_ALL_TYPES 0
+
+/* C datatype to SQL datatype mapping SQL types
+ ------------------- */
+#define SQL_C_CHAR SQL_CHAR /* CHAR, VARCHAR, DECIMAL, NUMERIC */
+#define SQL_C_LONG SQL_INTEGER /* INTEGER */
+#define SQL_C_SHORT SQL_SMALLINT /* SMALLINT */
+#define SQL_C_FLOAT SQL_REAL /* REAL */
+#define SQL_C_DOUBLE SQL_DOUBLE /* FLOAT, DOUBLE */
+#define SQL_C_DEFAULT 99
+
+/* NULL status constants. These are used in SQLColumns, SQLColAttributes,
+SQLDescribeCol, SQLDescribeParam, and SQLSpecialColumns to describe the
+nullablity of a column in a table. */
+#define SQL_NO_NULLS 0
+#define SQL_NULLABLE 1
+#define SQL_NULLABLE_UNKNOWN 2
+
+/* Special length values */
+#define SQL_NULL_DATA (-1)
+#define SQL_DATA_AT_EXEC (-2)
+#define SQL_NTS (-3)
+
+/* SQLFreeStmt defines */
+#define SQL_CLOSE 0
+#define SQL_DROP 1
+#define SQL_UNBIND 2
+#define SQL_RESET_PARAMS 3
+
+/* SQLTransact defines */
+#define SQL_COMMIT 0
+#define SQL_ROLLBACK 1
+
+/* SQLColAttributes defines */
+#define SQL_COLUMN_COUNT 0
+#define SQL_COLUMN_NAME 1
+#define SQL_COLUMN_TYPE 2
+#define SQL_COLUMN_LENGTH 3
+#define SQL_COLUMN_PRECISION 4
+#define SQL_COLUMN_SCALE 5
+#define SQL_COLUMN_DISPLAY_SIZE 6
+#define SQL_COLUMN_NULLABLE 7
+#define SQL_COLUMN_UNSIGNED 8
+#define SQL_COLUMN_MONEY 9
+#define SQL_COLUMN_UPDATABLE 10
+#define SQL_COLUMN_AUTO_INCREMENT 11
+#define SQL_COLUMN_CASE_SENSITIVE 12
+#define SQL_COLUMN_SEARCHABLE 13
+#define SQL_COLUMN_TYPE_NAME 14
+#if (ODBCVER >= 0x0200)
+#define SQL_COLUMN_TABLE_NAME 15
+#define SQL_COLUMN_OWNER_NAME 16
+#define SQL_COLUMN_QUALIFIER_NAME 17
+#define SQL_COLUMN_LABEL 18
+#define SQL_COLATT_OPT_MAX SQL_COLUMN_LABEL
+#else
+#define SQL_COLATT_OPT_MAX SQL_COLUMN_TYPE_NAME
+#endif /* ODBCVER >= 0x0200 */
+#define SQL_COLUMN_DRIVER_START 1000
+
+#define SQL_COLATT_OPT_MIN SQL_COLUMN_COUNT
+
+/* SQLColAttributes subdefines for SQL_COLUMN_UPDATABLE */
+#define SQL_ATTR_READONLY 0
+#define SQL_ATTR_WRITE 1
+#define SQL_ATTR_READWRITE_UNKNOWN 2
+
+/* SQLColAttributes subdefines for SQL_COLUMN_SEARCHABLE */
+/* These are also used by SQLGetInfo */
+#define SQL_UNSEARCHABLE 0
+#define SQL_LIKE_ONLY 1
+#define SQL_ALL_EXCEPT_LIKE 2
+#define SQL_SEARCHABLE 3
+
+/* SQLError defines */
+#define SQL_NULL_HENV 0
+#define SQL_NULL_HDBC 0
+#define SQL_NULL_HSTMT 0
+
+#include "sqltypes.h"
+
+#ifndef RC_INVOKED
+/* Core Function Prototypes */
+
+SQLRETURN SQL_API SQLAllocConnect(
+ SQLHENV henv,
+ SQLHDBC FAR *phdbc);
+
+SQLRETURN SQL_API SQLAllocEnv(
+ SQLHENV FAR *phenv);
+
+SQLRETURN SQL_API SQLAllocStmt(
+ SQLHDBC hdbc,
+ SQLHSTMT FAR *phstmt);
+
+SQLRETURN SQL_API SQLBindCol(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLSMALLINT fCType,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValueMax,
+ SQLINTEGER FAR *pcbValue);
+
+SQLRETURN SQL_API SQLCancel(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLColAttributes(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLUSMALLINT fDescType,
+ SQLPOINTER rgbDesc,
+ SQLSMALLINT cbDescMax,
+ SQLSMALLINT FAR *pcbDesc,
+ SQLINTEGER FAR *pfDesc);
+
+SQLRETURN SQL_API SQLConnect(
+ SQLHDBC hdbc,
+ SQLCHAR FAR *szDSN,
+ SQLSMALLINT cbDSN,
+ SQLCHAR FAR *szUID,
+ SQLSMALLINT cbUID,
+ SQLCHAR FAR *szAuthStr,
+ SQLSMALLINT cbAuthStr);
+
+SQLRETURN SQL_API SQLDescribeCol(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLCHAR FAR *szColName,
+ SQLSMALLINT cbColNameMax,
+ SQLSMALLINT FAR *pcbColName,
+ SQLSMALLINT FAR *pfSqlType,
+ SQLUINTEGER FAR *pcbColDef,
+ SQLSMALLINT FAR *pibScale,
+ SQLSMALLINT FAR *pfNullable);
+
+SQLRETURN SQL_API SQLDisconnect(
+ SQLHDBC hdbc);
+
+SQLRETURN SQL_API SQLError(
+ SQLHENV henv,
+ SQLHDBC hdbc,
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szSqlState,
+ SQLINTEGER FAR *pfNativeError,
+ SQLCHAR FAR *szErrorMsg,
+ SQLSMALLINT cbErrorMsgMax,
+ SQLSMALLINT FAR *pcbErrorMsg);
+
+SQLRETURN SQL_API SQLExecDirect(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szSqlStr,
+ SQLINTEGER cbSqlStr);
+
+SQLRETURN SQL_API SQLExecute(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLFetch(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLFreeConnect(
+ SQLHDBC hdbc);
+
+SQLRETURN SQL_API SQLFreeEnv(
+ SQLHENV henv);
+
+SQLRETURN SQL_API SQLFreeStmt(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fOption);
+
+SQLRETURN SQL_API SQLGetCursorName(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCursor,
+ SQLSMALLINT cbCursorMax,
+ SQLSMALLINT FAR *pcbCursor);
+
+SQLRETURN SQL_API SQLNumResultCols(
+ SQLHSTMT hstmt,
+ SQLSMALLINT FAR *pccol);
+
+SQLRETURN SQL_API SQLPrepare(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szSqlStr,
+ SQLINTEGER cbSqlStr);
+
+SQLRETURN SQL_API SQLRowCount(
+ SQLHSTMT hstmt,
+ SQLINTEGER FAR *pcrow);
+
+SQLRETURN SQL_API SQLSetCursorName(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCursor,
+ SQLSMALLINT cbCursor);
+
+SQLRETURN SQL_API SQLTransact(
+ SQLHENV henv,
+ SQLHDBC hdbc,
+ SQLUSMALLINT fType);
+
+#endif /* RC_INVOKED */
+
+/* Deprecrated functions from prior versions of ODBC */
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLSetParam( /* Use SQLBindParameter */
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT fCType,
+ SQLSMALLINT fSqlType,
+ SQLUINTEGER cbParamDef,
+ SQLSMALLINT ibScale,
+ SQLPOINTER rgbValue,
+ SQLINTEGER FAR *pcbValue);
+
+#endif /* RC_INVOKED */
+
+
+/* Defines used by both Level 1 and Level 2 functions */
+
+/* generally useful constants */
+#define SQL_MAX_OPTION_STRING_LENGTH 256
+
+/* Additional return codes */
+#define SQL_STILL_EXECUTING 2
+#define SQL_NEED_DATA 99
+
+/* SQL extended datatypes */
+#define SQL_DATE 9
+#define SQL_TIME 10
+#define SQL_TIMESTAMP 11
+#define SQL_LONGVARCHAR (-1)
+#define SQL_BINARY (-2)
+#define SQL_VARBINARY (-3)
+#define SQL_LONGVARBINARY (-4)
+#define SQL_BIGINT (-5)
+#define SQL_TINYINT (-6)
+#define SQL_BIT (-7)
+
+#define SQL_INTERVAL_YEAR (-80)
+#define SQL_INTERVAL_MONTH (-81)
+#define SQL_INTERVAL_YEAR_TO_MONTH (-82)
+#define SQL_INTERVAL_DAY (-83)
+#define SQL_INTERVAL_HOUR (-84)
+#define SQL_INTERVAL_MINUTE (-85)
+#define SQL_INTERVAL_SECOND (-86)
+#define SQL_INTERVAL_DAY_TO_HOUR (-87)
+#define SQL_INTERVAL_DAY_TO_MINUTE (-88)
+#define SQL_INTERVAL_DAY_TO_SECOND (-89)
+#define SQL_INTERVAL_HOUR_TO_MINUTE (-90)
+#define SQL_INTERVAL_HOUR_TO_SECOND (-91)
+#define SQL_INTERVAL_MINUTE_TO_SECOND (-92)
+#define SQL_UNICODE (-95)
+#define SQL_UNICODE_VARCHAR (-96)
+#define SQL_UNICODE_LONGVARCHAR (-97)
+#define SQL_UNICODE_CHAR SQL_UNICODE
+
+#define SQL_TYPE_DRIVER_START SQL_INTERVAL_YEAR
+#define SQL_TYPE_DRIVER_END SQL_UNICODE_LONGVARCHAR
+
+
+#if (ODBCVER >= 0x0200)
+#define SQL_SIGNED_OFFSET (-20)
+#define SQL_UNSIGNED_OFFSET (-22)
+#endif /* ODBCVER >= 0x0200 */
+
+/* C datatype to SQL datatype mapping */
+#define SQL_C_DATE SQL_DATE
+#define SQL_C_TIME SQL_TIME
+#define SQL_C_TIMESTAMP SQL_TIMESTAMP
+#define SQL_C_BINARY SQL_BINARY
+#define SQL_C_BIT SQL_BIT
+#define SQL_C_TINYINT SQL_TINYINT
+#if (ODBCVER >= 0x0200)
+#define SQL_C_SLONG SQL_C_LONG+SQL_SIGNED_OFFSET /* SIGNED INTEGER */
+#define SQL_C_SSHORT SQL_C_SHORT+SQL_SIGNED_OFFSET /* SIGNED SMALLINT */
+#define SQL_C_STINYINT SQL_TINYINT+SQL_SIGNED_OFFSET /* SIGNED TINYINT */
+#define SQL_C_ULONG SQL_C_LONG+SQL_UNSIGNED_OFFSET /* UNSIGNED INTEGER */
+#define SQL_C_USHORT SQL_C_SHORT+SQL_UNSIGNED_OFFSET /* UNSIGNED SMALLINT*/
+#define SQL_C_UTINYINT SQL_TINYINT+SQL_UNSIGNED_OFFSET /* UNSIGNED TINYINT */
+#define SQL_C_BOOKMARK SQL_C_ULONG /* BOOKMARK */
+#endif /* ODBCVER >= 0x0200 */
+
+
+/* Level 1 Functions */
+
+/* Special return values for SQLGetData */
+#define SQL_NO_TOTAL (-4)
+
+/* Defines for SQLGetFunctions */
+#define SQL_API_SQLALLOCCONNECT 1 /* Core Functions */
+#define SQL_API_SQLALLOCENV 2
+#define SQL_API_SQLALLOCSTMT 3
+#define SQL_API_SQLBINDCOL 4
+#define SQL_API_SQLCANCEL 5
+#define SQL_API_SQLCOLATTRIBUTES 6
+#define SQL_API_SQLCONNECT 7
+#define SQL_API_SQLDESCRIBECOL 8
+#define SQL_API_SQLDISCONNECT 9
+#define SQL_API_SQLERROR 10
+#define SQL_API_SQLEXECDIRECT 11
+#define SQL_API_SQLEXECUTE 12
+#define SQL_API_SQLFETCH 13
+#define SQL_API_SQLFREECONNECT 14
+#define SQL_API_SQLFREEENV 15
+#define SQL_API_SQLFREESTMT 16
+#define SQL_API_SQLGETCURSORNAME 17
+#define SQL_API_SQLNUMRESULTCOLS 18
+#define SQL_API_SQLPREPARE 19
+#define SQL_API_SQLROWCOUNT 20
+#define SQL_API_SQLSETCURSORNAME 21
+#define SQL_API_SQLSETPARAM 22
+#define SQL_API_SQLTRANSACT 23
+
+#define SQL_NUM_FUNCTIONS 23
+
+#define SQL_EXT_API_START 40
+
+#define SQL_API_SQLCOLUMNS 40 /* Level 1 Functions */
+#define SQL_API_SQLDRIVERCONNECT 41
+#define SQL_API_SQLGETCONNECTOPTION 42
+#define SQL_API_SQLGETDATA 43
+#define SQL_API_SQLGETFUNCTIONS 44
+#define SQL_API_SQLGETINFO 45
+#define SQL_API_SQLGETSTMTOPTION 46
+#define SQL_API_SQLGETTYPEINFO 47
+#define SQL_API_SQLPARAMDATA 48
+#define SQL_API_SQLPUTDATA 49
+#define SQL_API_SQLSETCONNECTOPTION 50
+#define SQL_API_SQLSETSTMTOPTION 51
+#define SQL_API_SQLSPECIALCOLUMNS 52
+#define SQL_API_SQLSTATISTICS 53
+#define SQL_API_SQLTABLES 54
+
+#define SQL_API_SQLBROWSECONNECT 55 /* Level 2 Functions */
+#define SQL_API_SQLCOLUMNPRIVILEGES 56
+#define SQL_API_SQLDATASOURCES 57
+#define SQL_API_SQLDESCRIBEPARAM 58
+#define SQL_API_SQLEXTENDEDFETCH 59
+#define SQL_API_SQLFOREIGNKEYS 60
+#define SQL_API_SQLMORERESULTS 61
+#define SQL_API_SQLNATIVESQL 62
+#define SQL_API_SQLNUMPARAMS 63
+#define SQL_API_SQLPARAMOPTIONS 64
+#define SQL_API_SQLPRIMARYKEYS 65
+#define SQL_API_SQLPROCEDURECOLUMNS 66
+#define SQL_API_SQLPROCEDURES 67
+#define SQL_API_SQLSETPOS 68
+#define SQL_API_SQLSETSCROLLOPTIONS 69
+#define SQL_API_SQLTABLEPRIVILEGES 70
+
+/* SDK 2.0 Additions */
+#if (ODBCVER >= 0x0200)
+#define SQL_API_SQLDRIVERS 71
+#define SQL_API_SQLBINDPARAMETER 72
+#define SQL_EXT_API_LAST SQL_API_SQLBINDPARAMETER
+#else
+#define SQL_EXT_API_LAST SQL_API_SQLTABLEPRIVILEGES
+#endif /* ODBCVER >= 0x0200 */
+
+#define SQL_API_ALL_FUNCTIONS 0
+
+#define SQL_NUM_EXTENSIONS (SQL_EXT_API_LAST-SQL_EXT_API_START+1)
+#if (ODBCVER >= 0x0200)
+#define SQL_API_LOADBYORDINAL 199
+#endif /* ODBCVER >= 0x0200 */
+
+/* Defines for SQLGetInfo */
+#define SQL_INFO_FIRST 0
+#define SQL_ACTIVE_CONNECTIONS 0
+#define SQL_ACTIVE_STATEMENTS 1
+#define SQL_DATA_SOURCE_NAME 2
+#define SQL_DRIVER_HDBC 3
+#define SQL_DRIVER_HENV 4
+#define SQL_DRIVER_HSTMT 5
+#define SQL_DRIVER_NAME 6
+#define SQL_DRIVER_VER 7
+#define SQL_FETCH_DIRECTION 8
+#define SQL_ODBC_API_CONFORMANCE 9
+#define SQL_ODBC_VER 10
+#define SQL_ROW_UPDATES 11
+#define SQL_ODBC_SAG_CLI_CONFORMANCE 12
+#define SQL_SERVER_NAME 13
+#define SQL_SEARCH_PATTERN_ESCAPE 14
+#define SQL_ODBC_SQL_CONFORMANCE 15
+
+#define SQL_DBMS_NAME 17
+#define SQL_DBMS_VER 18
+
+#define SQL_ACCESSIBLE_TABLES 19
+#define SQL_ACCESSIBLE_PROCEDURES 20
+#define SQL_PROCEDURES 21
+#define SQL_CONCAT_NULL_BEHAVIOR 22
+#define SQL_CURSOR_COMMIT_BEHAVIOR 23
+#define SQL_CURSOR_ROLLBACK_BEHAVIOR 24
+#define SQL_DATA_SOURCE_READ_ONLY 25
+#define SQL_DEFAULT_TXN_ISOLATION 26
+#define SQL_EXPRESSIONS_IN_ORDERBY 27
+#define SQL_IDENTIFIER_CASE 28
+#define SQL_IDENTIFIER_QUOTE_CHAR 29
+#define SQL_MAX_COLUMN_NAME_LEN 30
+#define SQL_MAX_CURSOR_NAME_LEN 31
+#define SQL_MAX_OWNER_NAME_LEN 32
+#define SQL_MAX_PROCEDURE_NAME_LEN 33
+#define SQL_MAX_QUALIFIER_NAME_LEN 34
+#define SQL_MAX_TABLE_NAME_LEN 35
+#define SQL_MULT_RESULT_SETS 36
+#define SQL_MULTIPLE_ACTIVE_TXN 37
+#define SQL_OUTER_JOINS 38
+#define SQL_OWNER_TERM 39
+#define SQL_PROCEDURE_TERM 40
+#define SQL_QUALIFIER_NAME_SEPARATOR 41
+#define SQL_QUALIFIER_TERM 42
+#define SQL_SCROLL_CONCURRENCY 43
+#define SQL_SCROLL_OPTIONS 44
+#define SQL_TABLE_TERM 45
+#define SQL_TXN_CAPABLE 46
+#define SQL_USER_NAME 47
+
+#define SQL_CONVERT_FUNCTIONS 48
+#define SQL_NUMERIC_FUNCTIONS 49
+#define SQL_STRING_FUNCTIONS 50
+#define SQL_SYSTEM_FUNCTIONS 51
+#define SQL_TIMEDATE_FUNCTIONS 52
+
+#define SQL_CONVERT_BIGINT 53
+#define SQL_CONVERT_BINARY 54
+#define SQL_CONVERT_BIT 55
+#define SQL_CONVERT_CHAR 56
+#define SQL_CONVERT_DATE 57
+#define SQL_CONVERT_DECIMAL 58
+#define SQL_CONVERT_DOUBLE 59
+#define SQL_CONVERT_FLOAT 60
+#define SQL_CONVERT_INTEGER 61
+#define SQL_CONVERT_LONGVARCHAR 62
+#define SQL_CONVERT_NUMERIC 63
+#define SQL_CONVERT_REAL 64
+#define SQL_CONVERT_SMALLINT 65
+#define SQL_CONVERT_TIME 66
+#define SQL_CONVERT_TIMESTAMP 67
+#define SQL_CONVERT_TINYINT 68
+#define SQL_CONVERT_VARBINARY 69
+#define SQL_CONVERT_VARCHAR 70
+#define SQL_CONVERT_LONGVARBINARY 71
+
+#define SQL_TXN_ISOLATION_OPTION 72
+#define SQL_ODBC_SQL_OPT_IEF 73
+
+/*** ODBC SDK 1.0 Additions ***/
+#define SQL_CORRELATION_NAME 74
+#define SQL_NON_NULLABLE_COLUMNS 75
+
+/*** ODBC SDK 2.0 Additions ***/
+#if (ODBCVER >= 0x0200)
+#define SQL_DRIVER_HLIB 76
+#define SQL_DRIVER_ODBC_VER 77
+#define SQL_LOCK_TYPES 78
+#define SQL_POS_OPERATIONS 79
+#define SQL_POSITIONED_STATEMENTS 80
+#define SQL_GETDATA_EXTENSIONS 81
+#define SQL_BOOKMARK_PERSISTENCE 82
+#define SQL_STATIC_SENSITIVITY 83
+#define SQL_FILE_USAGE 84
+#define SQL_NULL_COLLATION 85
+#define SQL_ALTER_TABLE 86
+#define SQL_COLUMN_ALIAS 87
+#define SQL_GROUP_BY 88
+#define SQL_KEYWORDS 89
+#define SQL_ORDER_BY_COLUMNS_IN_SELECT 90
+#define SQL_OWNER_USAGE 91
+#define SQL_QUALIFIER_USAGE 92
+#define SQL_QUOTED_IDENTIFIER_CASE 93
+#define SQL_SPECIAL_CHARACTERS 94
+#define SQL_SUBQUERIES 95
+#define SQL_UNION 96
+#define SQL_MAX_COLUMNS_IN_GROUP_BY 97
+#define SQL_MAX_COLUMNS_IN_INDEX 98
+#define SQL_MAX_COLUMNS_IN_ORDER_BY 99
+#define SQL_MAX_COLUMNS_IN_SELECT 100
+#define SQL_MAX_COLUMNS_IN_TABLE 101
+#define SQL_MAX_INDEX_SIZE 102
+#define SQL_MAX_ROW_SIZE_INCLUDES_LONG 103
+#define SQL_MAX_ROW_SIZE 104
+#define SQL_MAX_STATEMENT_LEN 105
+#define SQL_MAX_TABLES_IN_SELECT 106
+#define SQL_MAX_USER_NAME_LEN 107
+#define SQL_MAX_CHAR_LITERAL_LEN 108
+#define SQL_TIMEDATE_ADD_INTERVALS 109
+#define SQL_TIMEDATE_DIFF_INTERVALS 110
+#define SQL_NEED_LONG_DATA_LEN 111
+#define SQL_MAX_BINARY_LITERAL_LEN 112
+#define SQL_LIKE_ESCAPE_CLAUSE 113
+#define SQL_QUALIFIER_LOCATION 114
+
+#if (ODBCVER >= 0x0201)
+/*** ODBC SDK 2.01 Additions ***/
+#define SQL_OJ_CAPABILITIES 65003 /* Temp value until ODBC 3.0 */
+#endif /* ODBCVER >= 0x0201 */
+
+#define SQL_INFO_LAST SQL_QUALIFIER_LOCATION
+#else
+#define SQL_INFO_LAST SQL_NON_NULLABLE_COLUMNS
+#endif /* ODBCVER >= 0x0200 */
+
+#define SQL_INFO_DRIVER_START 1000
+
+/* SQL_CONVERT_* return value bitmasks */
+
+#define SQL_CVT_CHAR 0x00000001L
+#define SQL_CVT_NUMERIC 0x00000002L
+#define SQL_CVT_DECIMAL 0x00000004L
+#define SQL_CVT_INTEGER 0x00000008L
+#define SQL_CVT_SMALLINT 0x00000010L
+#define SQL_CVT_FLOAT 0x00000020L
+#define SQL_CVT_REAL 0x00000040L
+#define SQL_CVT_DOUBLE 0x00000080L
+#define SQL_CVT_VARCHAR 0x00000100L
+#define SQL_CVT_LONGVARCHAR 0x00000200L
+#define SQL_CVT_BINARY 0x00000400L
+#define SQL_CVT_VARBINARY 0x00000800L
+#define SQL_CVT_BIT 0x00001000L
+#define SQL_CVT_TINYINT 0x00002000L
+#define SQL_CVT_BIGINT 0x00004000L
+#define SQL_CVT_DATE 0x00008000L
+#define SQL_CVT_TIME 0x00010000L
+#define SQL_CVT_TIMESTAMP 0x00020000L
+#define SQL_CVT_LONGVARBINARY 0x00040000L
+
+/* SQL_CONVERT_FUNCTIONS functions */
+#define SQL_FN_CVT_CONVERT 0x00000001L
+
+/* SQL_STRING_FUNCTIONS functions */
+
+#define SQL_FN_STR_CONCAT 0x00000001L
+#define SQL_FN_STR_INSERT 0x00000002L
+#define SQL_FN_STR_LEFT 0x00000004L
+#define SQL_FN_STR_LTRIM 0x00000008L
+#define SQL_FN_STR_LENGTH 0x00000010L
+#define SQL_FN_STR_LOCATE 0x00000020L
+#define SQL_FN_STR_LCASE 0x00000040L
+#define SQL_FN_STR_REPEAT 0x00000080L
+#define SQL_FN_STR_REPLACE 0x00000100L
+#define SQL_FN_STR_RIGHT 0x00000200L
+#define SQL_FN_STR_RTRIM 0x00000400L
+#define SQL_FN_STR_SUBSTRING 0x00000800L
+#define SQL_FN_STR_UCASE 0x00001000L
+#define SQL_FN_STR_ASCII 0x00002000L
+#define SQL_FN_STR_CHAR 0x00004000L
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_STR_DIFFERENCE 0x00008000L
+#define SQL_FN_STR_LOCATE_2 0x00010000L
+#define SQL_FN_STR_SOUNDEX 0x00020000L
+#define SQL_FN_STR_SPACE 0x00040000L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_NUMERIC_FUNCTIONS functions */
+
+#define SQL_FN_NUM_ABS 0x00000001L
+#define SQL_FN_NUM_ACOS 0x00000002L
+#define SQL_FN_NUM_ASIN 0x00000004L
+#define SQL_FN_NUM_ATAN 0x00000008L
+#define SQL_FN_NUM_ATAN2 0x00000010L
+#define SQL_FN_NUM_CEILING 0x00000020L
+#define SQL_FN_NUM_COS 0x00000040L
+#define SQL_FN_NUM_COT 0x00000080L
+#define SQL_FN_NUM_EXP 0x00000100L
+#define SQL_FN_NUM_FLOOR 0x00000200L
+#define SQL_FN_NUM_LOG 0x00000400L
+#define SQL_FN_NUM_MOD 0x00000800L
+#define SQL_FN_NUM_SIGN 0x00001000L
+#define SQL_FN_NUM_SIN 0x00002000L
+#define SQL_FN_NUM_SQRT 0x00004000L
+#define SQL_FN_NUM_TAN 0x00008000L
+#define SQL_FN_NUM_PI 0x00010000L
+#define SQL_FN_NUM_RAND 0x00020000L
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_NUM_DEGREES 0x00040000L
+#define SQL_FN_NUM_LOG10 0x00080000L
+#define SQL_FN_NUM_POWER 0x00100000L
+#define SQL_FN_NUM_RADIANS 0x00200000L
+#define SQL_FN_NUM_ROUND 0x00400000L
+#define SQL_FN_NUM_TRUNCATE 0x00800000L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_TIMEDATE_FUNCTIONS functions */
+
+#define SQL_FN_TD_NOW 0x00000001L
+#define SQL_FN_TD_CURDATE 0x00000002L
+#define SQL_FN_TD_DAYOFMONTH 0x00000004L
+#define SQL_FN_TD_DAYOFWEEK 0x00000008L
+#define SQL_FN_TD_DAYOFYEAR 0x00000010L
+#define SQL_FN_TD_MONTH 0x00000020L
+#define SQL_FN_TD_QUARTER 0x00000040L
+#define SQL_FN_TD_WEEK 0x00000080L
+#define SQL_FN_TD_YEAR 0x00000100L
+#define SQL_FN_TD_CURTIME 0x00000200L
+#define SQL_FN_TD_HOUR 0x00000400L
+#define SQL_FN_TD_MINUTE 0x00000800L
+#define SQL_FN_TD_SECOND 0x00001000L
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_TD_TIMESTAMPADD 0x00002000L
+#define SQL_FN_TD_TIMESTAMPDIFF 0x00004000L
+#define SQL_FN_TD_DAYNAME 0x00008000L
+#define SQL_FN_TD_MONTHNAME 0x00010000L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_SYSTEM_FUNCTIONS functions */
+
+#define SQL_FN_SYS_USERNAME 0x00000001L
+#define SQL_FN_SYS_DBNAME 0x00000002L
+#define SQL_FN_SYS_IFNULL 0x00000004L
+
+/* SQL_TIMEDATE_ADD_INTERVALS and SQL_TIMEDATE_DIFF_INTERVALS functions */
+
+#if (ODBCVER >= 0x0200)
+#define SQL_FN_TSI_FRAC_SECOND 0x00000001L
+#define SQL_FN_TSI_SECOND 0x00000002L
+#define SQL_FN_TSI_MINUTE 0x00000004L
+#define SQL_FN_TSI_HOUR 0x00000008L
+#define SQL_FN_TSI_DAY 0x00000010L
+#define SQL_FN_TSI_WEEK 0x00000020L
+#define SQL_FN_TSI_MONTH 0x00000040L
+#define SQL_FN_TSI_QUARTER 0x00000080L
+#define SQL_FN_TSI_YEAR 0x00000100L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_ODBC_API_CONFORMANCE values */
+
+#define SQL_OAC_NONE 0x0000
+#define SQL_OAC_LEVEL1 0x0001
+#define SQL_OAC_LEVEL2 0x0002
+
+/* SQL_ODBC_SAG_CLI_CONFORMANCE values */
+
+#define SQL_OSCC_NOT_COMPLIANT 0x0000
+#define SQL_OSCC_COMPLIANT 0x0001
+
+/* SQL_ODBC_SQL_CONFORMANCE values */
+
+#define SQL_OSC_MINIMUM 0x0000
+#define SQL_OSC_CORE 0x0001
+#define SQL_OSC_EXTENDED 0x0002
+
+/* SQL_CONCAT_NULL_BEHAVIOR values */
+
+#define SQL_CB_NULL 0x0000
+#define SQL_CB_NON_NULL 0x0001
+
+/* SQL_CURSOR_COMMIT_BEHAVIOR and SQL_CURSOR_ROLLBACK_BEHAVIOR values */
+
+#define SQL_CB_DELETE 0x0000
+#define SQL_CB_CLOSE 0x0001
+#define SQL_CB_PRESERVE 0x0002
+
+/* SQL_IDENTIFIER_CASE values */
+
+#define SQL_IC_UPPER 0x0001
+#define SQL_IC_LOWER 0x0002
+#define SQL_IC_SENSITIVE 0x0003
+#define SQL_IC_MIXED 0x0004
+
+/* SQL_TXN_CAPABLE values */
+
+#define SQL_TC_NONE 0x0000
+#define SQL_TC_DML 0x0001
+#define SQL_TC_ALL 0x0002
+#if (ODBCVER >= 0x0200)
+#define SQL_TC_DDL_COMMIT 0x0003
+#define SQL_TC_DDL_IGNORE 0x0004
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_SCROLL_OPTIONS masks */
+
+#define SQL_SO_FORWARD_ONLY 0x00000001L
+#define SQL_SO_KEYSET_DRIVEN 0x00000002L
+#define SQL_SO_DYNAMIC 0x00000004L
+#define SQL_SO_MIXED 0x00000008L
+#if (ODBCVER >= 0x0200)
+#define SQL_SO_STATIC 0x00000010L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_SCROLL_CONCURRENCY masks */
+
+#define SQL_SCCO_READ_ONLY 0x00000001L
+#define SQL_SCCO_LOCK 0x00000002L
+#define SQL_SCCO_OPT_ROWVER 0x00000004L
+#define SQL_SCCO_OPT_VALUES 0x00000008L
+
+/* SQL_FETCH_DIRECTION masks */
+
+#define SQL_FD_FETCH_NEXT 0x00000001L
+#define SQL_FD_FETCH_FIRST 0x00000002L
+#define SQL_FD_FETCH_LAST 0x00000004L
+#define SQL_FD_FETCH_PRIOR 0x00000008L
+#define SQL_FD_FETCH_ABSOLUTE 0x00000010L
+#define SQL_FD_FETCH_RELATIVE 0x00000020L
+#define SQL_FD_FETCH_RESUME 0x00000040L
+#if (ODBCVER >= 0x0200)
+#define SQL_FD_FETCH_BOOKMARK 0x00000080L
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQL_TXN_ISOLATION_OPTION masks */
+
+#define SQL_TXN_READ_UNCOMMITTED 0x00000001L
+#define SQL_TXN_READ_COMMITTED 0x00000002L
+#define SQL_TXN_REPEATABLE_READ 0x00000004L
+#define SQL_TXN_SERIALIZABLE 0x00000008L
+#define SQL_TXN_VERSIONING 0x00000010L
+
+/* SQL_CORRELATION_NAME values */
+
+#define SQL_CN_NONE 0x0000
+#define SQL_CN_DIFFERENT 0x0001
+#define SQL_CN_ANY 0x0002
+
+/* SQL_NON_NULLABLE_COLUMNS values */
+
+#define SQL_NNC_NULL 0x0000
+#define SQL_NNC_NON_NULL 0x0001
+
+#if (ODBCVER >= 0x0200)
+/* SQL_NULL_COLLATION values */
+
+#define SQL_NC_HIGH 0x0000
+#define SQL_NC_LOW 0x0001
+#define SQL_NC_START 0x0002
+#define SQL_NC_END 0x0004
+
+/* SQL_FILE_USAGE values */
+
+#define SQL_FILE_NOT_SUPPORTED 0x0000
+#define SQL_FILE_TABLE 0x0001
+#define SQL_FILE_QUALIFIER 0x0002
+
+/* SQL_GETDATA_EXTENSIONS values */
+
+#define SQL_GD_ANY_COLUMN 0x00000001L
+#define SQL_GD_ANY_ORDER 0x00000002L
+#define SQL_GD_BLOCK 0x00000004L
+#define SQL_GD_BOUND 0x00000008L
+
+/* SQL_ALTER_TABLE values */
+
+#define SQL_AT_ADD_COLUMN 0x00000001L
+#define SQL_AT_DROP_COLUMN 0x00000002L
+
+/* SQL_POSITIONED_STATEMENTS masks */
+
+#define SQL_PS_POSITIONED_DELETE 0x00000001L
+#define SQL_PS_POSITIONED_UPDATE 0x00000002L
+#define SQL_PS_SELECT_FOR_UPDATE 0x00000004L
+
+/* SQL_GROUP_BY values */
+
+#define SQL_GB_NOT_SUPPORTED 0x0000
+#define SQL_GB_GROUP_BY_EQUALS_SELECT 0x0001
+#define SQL_GB_GROUP_BY_CONTAINS_SELECT 0x0002
+#define SQL_GB_NO_RELATION 0x0003
+
+/* SQL_OWNER_USAGE masks */
+
+#define SQL_OU_DML_STATEMENTS 0x00000001L
+#define SQL_OU_PROCEDURE_INVOCATION 0x00000002L
+#define SQL_OU_TABLE_DEFINITION 0x00000004L
+#define SQL_OU_INDEX_DEFINITION 0x00000008L
+#define SQL_OU_PRIVILEGE_DEFINITION 0x00000010L
+
+/* SQL_QUALIFIER_USAGE masks */
+
+#define SQL_QU_DML_STATEMENTS 0x00000001L
+#define SQL_QU_PROCEDURE_INVOCATION 0x00000002L
+#define SQL_QU_TABLE_DEFINITION 0x00000004L
+#define SQL_QU_INDEX_DEFINITION 0x00000008L
+#define SQL_QU_PRIVILEGE_DEFINITION 0x00000010L
+
+/* SQL_SUBQUERIES masks */
+
+#define SQL_SQ_COMPARISON 0x00000001L
+#define SQL_SQ_EXISTS 0x00000002L
+#define SQL_SQ_IN 0x00000004L
+#define SQL_SQ_QUANTIFIED 0x00000008L
+#define SQL_SQ_CORRELATED_SUBQUERIES 0x00000010L
+
+/* SQL_UNION masks */
+
+#define SQL_U_UNION 0x00000001L
+#define SQL_U_UNION_ALL 0x00000002L
+
+/* SQL_BOOKMARK_PERSISTENCE values */
+
+#define SQL_BP_CLOSE 0x00000001L
+#define SQL_BP_DELETE 0x00000002L
+#define SQL_BP_DROP 0x00000004L
+#define SQL_BP_TRANSACTION 0x00000008L
+#define SQL_BP_UPDATE 0x00000010L
+#define SQL_BP_OTHER_HSTMT 0x00000020L
+#define SQL_BP_SCROLL 0x00000040L
+
+/* SQL_STATIC_SENSITIVITY values */
+
+#define SQL_SS_ADDITIONS 0x00000001L
+#define SQL_SS_DELETIONS 0x00000002L
+#define SQL_SS_UPDATES 0x00000004L
+
+/* SQL_LOCK_TYPESL masks */
+
+#define SQL_LCK_NO_CHANGE 0x00000001L
+#define SQL_LCK_EXCLUSIVE 0x00000002L
+#define SQL_LCK_UNLOCK 0x00000004L
+
+/* SQL_POS_OPERATIONS masks */
+
+#define SQL_POS_POSITION 0x00000001L
+#define SQL_POS_REFRESH 0x00000002L
+#define SQL_POS_UPDATE 0x00000004L
+#define SQL_POS_DELETE 0x00000008L
+#define SQL_POS_ADD 0x00000010L
+
+/* SQL_QUALIFIER_LOCATION values */
+
+#define SQL_QL_START 0x0001L
+#define SQL_QL_END 0x0002L
+
+/* SQL_OJ_CAPABILITIES values */
+
+#if (ODBCVER >= 0x0201)
+#define SQL_OJ_LEFT 0x00000001L
+#define SQL_OJ_RIGHT 0x00000002L
+#define SQL_OJ_FULL 0x00000004L
+#define SQL_OJ_NESTED 0x00000008L
+#define SQL_OJ_NOT_ORDERED 0x00000010L
+#define SQL_OJ_INNER 0x00000020L
+#define SQL_OJ_ALL_COMPARISON_OPS 0x00000040L
+#endif /* ODBCVER >= 0x0201 */
+#endif /* ODBCVER >= 0x0200 */
+
+/* options for SQLGetStmtOption/SQLSetStmtOption */
+#define SQL_QUERY_TIMEOUT 0
+#define SQL_MAX_ROWS 1
+#define SQL_NOSCAN 2
+#define SQL_MAX_LENGTH 3
+#define SQL_ASYNC_ENABLE 4
+#define SQL_BIND_TYPE 5
+#if (ODBCVER >= 0x0200)
+#define SQL_CURSOR_TYPE 6
+#define SQL_CONCURRENCY 7
+#define SQL_KEYSET_SIZE 8
+#define SQL_ROWSET_SIZE 9
+#define SQL_SIMULATE_CURSOR 10
+#define SQL_RETRIEVE_DATA 11
+#define SQL_USE_BOOKMARKS 12
+#define SQL_GET_BOOKMARK 13 /* GetStmtOption Only */
+#define SQL_ROW_NUMBER 14 /* GetStmtOption Only */
+#define SQL_STMT_OPT_MAX SQL_ROW_NUMBER
+#else
+#define SQL_STMT_OPT_MAX SQL_BIND_TYPE
+#endif /* ODBCVER >= 0x0200 */
+
+#define SQL_STMT_OPT_MIN SQL_QUERY_TIMEOUT
+
+
+/* SQL_QUERY_TIMEOUT options */
+#define SQL_QUERY_TIMEOUT_DEFAULT 0UL
+
+/* SQL_MAX_ROWS options */
+#define SQL_MAX_ROWS_DEFAULT 0UL
+
+/* SQL_NOSCAN options */
+#define SQL_NOSCAN_OFF 0UL /* 1.0 FALSE */
+#define SQL_NOSCAN_ON 1UL /* 1.0 TRUE */
+#define SQL_NOSCAN_DEFAULT SQL_NOSCAN_OFF
+
+/* SQL_MAX_LENGTH options */
+#define SQL_MAX_LENGTH_DEFAULT 0UL
+
+/* SQL_ASYNC_ENABLE options */
+#define SQL_ASYNC_ENABLE_OFF 0UL
+#define SQL_ASYNC_ENABLE_ON 1UL
+#define SQL_ASYNC_ENABLE_DEFAULT SQL_ASYNC_ENABLE_OFF
+
+/* SQL_BIND_TYPE options */
+#define SQL_BIND_BY_COLUMN 0UL
+#define SQL_BIND_TYPE_DEFAULT SQL_BIND_BY_COLUMN /* Default value */
+
+/* SQL_CONCURRENCY options */
+#define SQL_CONCUR_READ_ONLY 1
+#define SQL_CONCUR_LOCK 2
+#define SQL_CONCUR_ROWVER 3
+#define SQL_CONCUR_VALUES 4
+#define SQL_CONCUR_DEFAULT SQL_CONCUR_READ_ONLY /* Default value
+*/
+
+#if (ODBCVER >= 0x0200)
+/* SQL_CURSOR_TYPE options */
+#define SQL_CURSOR_FORWARD_ONLY 0UL
+#define SQL_CURSOR_KEYSET_DRIVEN 1UL
+#define SQL_CURSOR_DYNAMIC 2UL
+#define SQL_CURSOR_STATIC 3UL
+#define SQL_CURSOR_TYPE_DEFAULT SQL_CURSOR_FORWARD_ONLY /* Default value */
+
+/* SQL_ROWSET_SIZE options */
+#define SQL_ROWSET_SIZE_DEFAULT 1UL
+
+/* SQL_KEYSET_SIZE options */
+#define SQL_KEYSET_SIZE_DEFAULT 0UL
+
+/* SQL_SIMULATE_CURSOR options */
+#define SQL_SC_NON_UNIQUE 0UL
+#define SQL_SC_TRY_UNIQUE 1UL
+#define SQL_SC_UNIQUE 2UL
+
+/* SQL_RETRIEVE_DATA options */
+#define SQL_RD_OFF 0UL
+#define SQL_RD_ON 1UL
+#define SQL_RD_DEFAULT SQL_RD_ON
+
+/* SQL_USE_BOOKMARKS options */
+#define SQL_UB_OFF 0UL
+#define SQL_UB_ON 1UL
+#define SQL_UB_DEFAULT SQL_UB_OFF
+
+#endif /* ODBCVER >= 0x0200 */
+
+/* options for SQLSetConnectOption/SQLGetConnectOption */
+#define SQL_ACCESS_MODE 101
+#define SQL_AUTOCOMMIT 102
+#define SQL_LOGIN_TIMEOUT 103
+#define SQL_OPT_TRACE 104
+#define SQL_OPT_TRACEFILE 105
+#define SQL_TRANSLATE_DLL 106
+#define SQL_TRANSLATE_OPTION 107
+#define SQL_TXN_ISOLATION 108
+#define SQL_CURRENT_QUALIFIER 109
+#if (ODBCVER >= 0x0200)
+#define SQL_ODBC_CURSORS 110
+#define SQL_QUIET_MODE 111
+#define SQL_PACKET_SIZE 112
+#define SQL_CONN_OPT_MAX SQL_PACKET_SIZE
+#else
+#define SQL_CONN_OPT_MAX SQL_CURRENT_QUALIFIER
+#endif /* ODBCVER >= 0x0200 */
+#define SQL_CONNECT_OPT_DRVR_START 1000
+
+#define SQL_CONN_OPT_MIN SQL_ACCESS_MODE
+
+/* SQL_ACCESS_MODE options */
+#define SQL_MODE_READ_WRITE 0UL
+#define SQL_MODE_READ_ONLY 1UL
+#define SQL_MODE_DEFAULT SQL_MODE_READ_WRITE
+
+/* SQL_AUTOCOMMIT options */
+#define SQL_AUTOCOMMIT_OFF 0UL
+#define SQL_AUTOCOMMIT_ON 1UL
+#define SQL_AUTOCOMMIT_DEFAULT SQL_AUTOCOMMIT_ON
+
+/* SQL_LOGIN_TIMEOUT options */
+#define SQL_LOGIN_TIMEOUT_DEFAULT 15UL
+
+/* SQL_OPT_TRACE options */
+#define SQL_OPT_TRACE_OFF 0UL
+#define SQL_OPT_TRACE_ON 1UL
+#define SQL_OPT_TRACE_DEFAULT SQL_OPT_TRACE_OFF
+#define SQL_OPT_TRACE_FILE_DEFAULT "\\SQL.LOG"
+
+#if (ODBCVER >= 0x0200)
+/* SQL_ODBC_CURSORS options */
+#define SQL_CUR_USE_IF_NEEDED 0UL
+#define SQL_CUR_USE_ODBC 1UL
+#define SQL_CUR_USE_DRIVER 2UL
+#define SQL_CUR_DEFAULT SQL_CUR_USE_DRIVER
+#endif /* ODBCVER >= 0x0200 */
+
+/* Column types and scopes in SQLSpecialColumns. */
+#define SQL_BEST_ROWID 1
+#define SQL_ROWVER 2
+
+#define SQL_SCOPE_CURROW 0
+#define SQL_SCOPE_TRANSACTION 1
+#define SQL_SCOPE_SESSION 2
+
+/* Defines for SQLStatistics */
+#define SQL_INDEX_UNIQUE 0
+#define SQL_INDEX_ALL 1
+
+#define SQL_QUICK 0
+#define SQL_ENSURE 1
+
+/* Defines for SQLStatistics (returned in the result set) */
+#define SQL_TABLE_STAT 0
+#define SQL_INDEX_CLUSTERED 1
+#define SQL_INDEX_HASHED 2
+#define SQL_INDEX_OTHER 3
+
+#if (ODBCVER >= 0x0200)
+/* Defines for SQLSpecialColumns (returned in the result set) */
+#define SQL_PC_UNKNOWN 0
+#define SQL_PC_NOT_PSEUDO 1
+#define SQL_PC_PSEUDO 2
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQLDataSources "fDirection" values, also used on SQLExtendedFetch() */
+#define SQL_FETCH_NEXT 1
+#define SQL_FETCH_FIRST 2
+
+#ifndef RC_INVOKED
+
+#if (ODBCVER >= 0x0200)
+/* This define is too large for RC */
+#define SQL_ODBC_KEYWORDS \
+"ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"\
+"ASC,ASSERTION,AT,AUTHORIZATION,AVG,"\
+"BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,"\
+"CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,"\
+"COBOL,COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,"\
+"CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,"\
+"CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,"\
+"DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,"\
+"DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,"\
+"DISTINCT,DOMAIN,DOUBLE,DROP,"\
+"ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,"\
+"EXISTS,EXTERNAL,EXTRACT,"\
+"FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,"\
+"GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,"\
+"IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,"\
+"INPUT,INSENSITIVE,INSERT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,"\
+"JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,"\
+"MATCH,MAX,MIN,MINUTE,MODULE,MONTH,MUMPS,"\
+"NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,"\
+"OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,"\
+"PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,"\
+"PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,"\
+"REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWS,"\
+"SCHEMA,SCROLL,SECOND,SECTION,SELECT,SEQUENCE,SESSION,SESSION_USER,SET,SIZE,"\
+"SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,"\
+"SUBSTRING,SUM,SYSTEM_USER,"\
+"TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,"\
+"TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,"\
+"UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,"\
+"VALUE,VALUES,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,YEAR"
+#endif /* ODBCVER >= 0x0200 */
+
+/* Level 1 Prototypes */
+SQLRETURN SQL_API SQLColumns(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLCHAR FAR *szColumnName,
+ SQLSMALLINT cbColumnName);
+
+SQLRETURN SQL_API SQLGetConnectOption(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fOption,
+ SQLPOINTER pvParam);
+
+SQLRETURN SQL_API SQLGetData(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT icol,
+ SQLSMALLINT fCType,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValueMax,
+ SQLINTEGER FAR *pcbValue);
+
+SQLRETURN SQL_API SQLGetFunctions(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fFunction,
+ SQLUSMALLINT FAR *pfExists);
+
+SQLRETURN SQL_API SQLGetInfo(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fInfoType,
+ SQLPOINTER rgbInfoValue,
+ SQLSMALLINT cbInfoValueMax,
+ SQLSMALLINT FAR *pcbInfoValue);
+
+SQLRETURN SQL_API SQLGetStmtOption(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fOption,
+ SQLPOINTER pvParam);
+
+SQLRETURN SQL_API SQLGetTypeInfo(
+ SQLHSTMT hstmt,
+ SQLSMALLINT fSqlType);
+
+SQLRETURN SQL_API SQLParamData(
+ SQLHSTMT hstmt,
+ SQLPOINTER FAR *prgbValue);
+
+SQLRETURN SQL_API SQLPutData(
+ SQLHSTMT hstmt,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValue);
+
+SQLRETURN SQL_API SQLSetConnectOption(
+ SQLHDBC hdbc,
+ SQLUSMALLINT fOption,
+ SQLUINTEGER vParam);
+
+SQLRETURN SQL_API SQLSetStmtOption(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fOption,
+ SQLUINTEGER vParam);
+
+SQLRETURN SQL_API SQLSpecialColumns(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fColType,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLUSMALLINT fScope,
+ SQLUSMALLINT fNullable);
+
+SQLRETURN SQL_API SQLStatistics(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLUSMALLINT fUnique,
+ SQLUSMALLINT fAccuracy);
+
+SQLRETURN SQL_API SQLTables(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLCHAR FAR *szTableType,
+ SQLSMALLINT cbTableType);
+#endif /* RC_INVOKED */
+
+
+/* Level 2 Functions */
+
+
+
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLDataSources(
+ SQLHENV henv,
+ SQLUSMALLINT fDirection,
+ SQLCHAR FAR *szDSN,
+ SQLSMALLINT cbDSNMax,
+ SQLSMALLINT FAR *pcbDSN,
+ SQLCHAR FAR *szDescription,
+ SQLSMALLINT cbDescriptionMax,
+ SQLSMALLINT FAR *pcbDescription);
+
+
+#endif /* RC_INVOKED */
+
+/* Deprecated defines from prior versions of ODBC */
+#define SQL_DATABASE_NAME 16 /* Use SQLGetConnectOption/SQL_CURRENT_QUALIFIER */
+#define SQL_FD_FETCH_PREV SQL_FD_FETCH_PRIOR
+#define SQL_FETCH_PREV SQL_FETCH_PRIOR
+#define SQL_CONCUR_TIMESTAMP SQL_CONCUR_ROWVER
+#define SQL_SCCO_OPT_TIMESTAMP SQL_SCCO_OPT_ROWVER
+#define SQL_CC_DELETE SQL_CB_DELETE
+#define SQL_CR_DELETE SQL_CB_DELETE
+#define SQL_CC_CLOSE SQL_CB_CLOSE
+#define SQL_CR_CLOSE SQL_CB_CLOSE
+#define SQL_CC_PRESERVE SQL_CB_PRESERVE
+#define SQL_CR_PRESERVE SQL_CB_PRESERVE
+#define SQL_FETCH_RESUME 7 /* Not supported by 2.0 drivers */
+#define SQL_SCROLL_FORWARD_ONLY 0L /*-SQL_CURSOR_FORWARD_ONLY */
+#define SQL_SCROLL_KEYSET_DRIVEN (-1L) /*-SQL_CURSOR_KEYSET_DRIVEN */
+#define SQL_SCROLL_DYNAMIC (-2L) /*-SQL_CURSOR_DYNAMIC */
+#if (ODBCVER >= 0x0200)
+#define SQL_SCROLL_STATIC (-3L) /*-SQL_CURSOR_STATIC */
+#define SQL_PC_NON_PSEUDO SQL_PC_NOT_PSEUDO
+#endif /* ODBCVER >= 0x0200 */
+
+/* Deprecrated functions from prior versions of ODBC */
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLSetScrollOptions( /* Use SQLSetStmtOptions */
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fConcurrency,
+ SQLINTEGER crowKeyset,
+ SQLUSMALLINT crowRowset);
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* #ifndef __SQL */
diff --git a/public/sdk/inc/mfc42/sqlext.h b/public/sdk/inc/mfc42/sqlext.h
new file mode 100644
index 000000000..ee02cafaf
--- /dev/null
+++ b/public/sdk/inc/mfc42/sqlext.h
@@ -0,0 +1,293 @@
+/*****************************************************************
+** SQLEXT.H - This is the include for applications using
+** the Microsoft SQL Extensions
+**
+** (C) Copyright 1990 - 1995 By Microsoft Corp.
+**
+** Updated 5/12/93 for 2.00 specification
+** Updated 5/23/94 for 2.01 specification
+** Updated 10/27/94 for 2.10 specification
+** Updated 04/10/95 for 2.50 specification
+*********************************************************************/
+
+#ifndef __SQLEXT
+#define __SQLEXT
+
+#ifndef __SQL
+#include "sql.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+/* SQLBindParameter extensions */
+#if (ODBCVER >= 0x0200)
+#define SQL_DEFAULT_PARAM (-5)
+#define SQL_IGNORE (-6)
+#define SQL_LEN_DATA_AT_EXEC_OFFSET (-100)
+#define SQL_LEN_DATA_AT_EXEC(length) (-length+SQL_LEN_DATA_AT_EXEC_OFFSET)
+#endif /* ODBCVER >= 0x0200 */
+
+
+/* Defines for SQLSetPos */
+#define SQL_ENTIRE_ROWSET 0
+
+/* Operations in SQLSetPos */
+#define SQL_POSITION 0 /* 1.0 FALSE */
+#define SQL_REFRESH 1 /* 1.0 TRUE */
+#if (ODBCVER >= 0x0200)
+#define SQL_UPDATE 2
+#define SQL_DELETE 3
+#define SQL_ADD 4
+#endif /* ODBCVER >= 0x0200 */
+
+/* Lock options in SQLSetPos */
+#define SQL_LOCK_NO_CHANGE 0 /* 1.0 FALSE */
+#define SQL_LOCK_EXCLUSIVE 1 /* 1.0 TRUE */
+#if (ODBCVER >= 0x0200)
+#define SQL_LOCK_UNLOCK 2
+
+/* Macros for SQLSetPos */
+#define SQL_POSITION_TO(hstmt,irow) SQLSetPos(hstmt,irow,SQL_POSITION,SQL_LOCK_NO_CHANGE)
+#define SQL_LOCK_RECORD(hstmt,irow,fLock) SQLSetPos(hstmt,irow,SQL_POSITION,fLock)
+#define SQL_REFRESH_RECORD(hstmt,irow,fLock) SQLSetPos(hstmt,irow,SQL_REFRESH,fLock)
+#define SQL_UPDATE_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_UPDATE,SQL_LOCK_NO_CHANGE)
+#define SQL_DELETE_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_DELETE,SQL_LOCK_NO_CHANGE)
+#define SQL_ADD_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_ADD,SQL_LOCK_NO_CHANGE)
+#endif /* ODBCVER >= 0x0200 */
+
+/* Level 1 Prototypes */
+
+/* Options for SQLDriverConnect */
+#define SQL_DRIVER_NOPROMPT 0
+#define SQL_DRIVER_COMPLETE 1
+#define SQL_DRIVER_PROMPT 2
+#define SQL_DRIVER_COMPLETE_REQUIRED 3
+
+#ifndef RC_INVOKED
+
+SQLRETURN SQL_API SQLDriverConnect(
+ SQLHDBC hdbc,
+ SQLHWND hwnd,
+ SQLCHAR FAR *szConnStrIn,
+ SQLSMALLINT cbConnStrIn,
+ SQLCHAR FAR *szConnStrOut,
+ SQLSMALLINT cbConnStrOutMax,
+ SQLSMALLINT FAR *pcbConnStrOut,
+ SQLUSMALLINT fDriverCompletion);
+
+#endif /* RC_INVOKED */
+
+/* Level 2 Functions */
+
+/* SQLExtendedFetch "fFetchType" values */
+#ifndef SQL_FETCH_NEXT
+#define SQL_FETCH_NEXT 1
+#endif
+#ifndef SQL_FETCH_FIRST
+#define SQL_FETCH_FIRST 2
+#endif
+#define SQL_FETCH_LAST 3
+#define SQL_FETCH_PRIOR 4
+#define SQL_FETCH_ABSOLUTE 5
+#define SQL_FETCH_RELATIVE 6
+#if (ODBCVER >= 0x0200)
+#define SQL_FETCH_BOOKMARK 8
+#endif /* ODBCVER >= 0x0200 */
+
+/* SQLExtendedFetch "rgfRowStatus" element values */
+#define SQL_ROW_SUCCESS 0
+#define SQL_ROW_DELETED 1
+#define SQL_ROW_UPDATED 2
+#define SQL_ROW_NOROW 3
+#if (ODBCVER >= 0x0200)
+#define SQL_ROW_ADDED 4
+#define SQL_ROW_ERROR 5
+#endif /* ODBCVER >= 0x0200 */
+
+/* Defines for SQLForeignKeys (returned in result set) */
+#define SQL_CASCADE 0
+#define SQL_RESTRICT 1
+#define SQL_SET_NULL 2
+#if (ODBCVER >= 0x0250)
+#define SQL_NO_ACTION 3
+#define SQL_SET_DEFAULT 4
+#endif
+
+/* Defines for SQLBindParameter and
+ SQLProcedureColumns (returned in the result set) */
+#define SQL_PARAM_TYPE_UNKNOWN 0
+#define SQL_PARAM_INPUT 1
+#define SQL_PARAM_INPUT_OUTPUT 2
+#define SQL_RESULT_COL 3
+#if (ODBCVER >= 0x0200)
+#define SQL_PARAM_OUTPUT 4
+#define SQL_RETURN_VALUE 5
+#endif /* ODBCVER >= 0x0200 */
+
+
+#if (ODBCVER >= 0x0200)
+/* Defines for SQLProcedures (returned in the result set) */
+#define SQL_PT_UNKNOWN 0
+#define SQL_PT_PROCEDURE 1
+#define SQL_PT_FUNCTION 2
+
+#endif /* ODBCVER >= 0x0200 */
+
+/* Defines used by Driver Manager when mapping SQLSetParam to SQLBindParameter
+*/
+#define SQL_PARAM_TYPE_DEFAULT SQL_PARAM_INPUT_OUTPUT
+#define SQL_SETPARAM_VALUE_MAX (-1L)
+
+
+#ifndef RC_INVOKED
+
+/* Level 2 Prototypes */
+SQLRETURN SQL_API SQLBrowseConnect(
+ SQLHDBC hdbc,
+ SQLCHAR FAR *szConnStrIn,
+ SQLSMALLINT cbConnStrIn,
+ SQLCHAR FAR *szConnStrOut,
+ SQLSMALLINT cbConnStrOutMax,
+ SQLSMALLINT FAR *pcbConnStrOut);
+
+SQLRETURN SQL_API SQLColumnPrivileges(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName,
+ SQLCHAR FAR *szColumnName,
+ SQLSMALLINT cbColumnName);
+
+SQLRETURN SQL_API SQLDescribeParam(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT FAR *pfSqlType,
+ SQLUINTEGER FAR *pcbParamDef,
+ SQLSMALLINT FAR *pibScale,
+ SQLSMALLINT FAR *pfNullable);
+
+SQLRETURN SQL_API SQLExtendedFetch(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT fFetchType,
+ SQLINTEGER irow,
+ SQLUINTEGER FAR *pcrow,
+ SQLUSMALLINT FAR *rgfRowStatus);
+
+SQLRETURN SQL_API SQLForeignKeys(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szPkCatalogName,
+ SQLSMALLINT cbPkCatalogName,
+ SQLCHAR FAR *szPkSchemaName,
+ SQLSMALLINT cbPkSchemaName,
+ SQLCHAR FAR *szPkTableName,
+ SQLSMALLINT cbPkTableName,
+ SQLCHAR FAR *szFkCatalogName,
+ SQLSMALLINT cbFkCatalogName,
+ SQLCHAR FAR *szFkSchemaName,
+ SQLSMALLINT cbFkSchemaName,
+ SQLCHAR FAR *szFkTableName,
+ SQLSMALLINT cbFkTableName);
+
+SQLRETURN SQL_API SQLMoreResults(
+ SQLHSTMT hstmt);
+
+SQLRETURN SQL_API SQLNativeSql(
+ SQLHDBC hdbc,
+ SQLCHAR FAR *szSqlStrIn,
+ SQLINTEGER cbSqlStrIn,
+ SQLCHAR FAR *szSqlStr,
+ SQLINTEGER cbSqlStrMax,
+ SQLINTEGER FAR *pcbSqlStr);
+
+SQLRETURN SQL_API SQLNumParams(
+ SQLHSTMT hstmt,
+ SQLSMALLINT FAR *pcpar);
+
+SQLRETURN SQL_API SQLParamOptions(
+ SQLHSTMT hstmt,
+ SQLUINTEGER crow,
+ SQLUINTEGER FAR *pirow);
+
+SQLRETURN SQL_API SQLPrimaryKeys(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName);
+
+SQLRETURN SQL_API SQLProcedureColumns(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szProcName,
+ SQLSMALLINT cbProcName,
+ SQLCHAR FAR *szColumnName,
+ SQLSMALLINT cbColumnName);
+
+SQLRETURN SQL_API SQLProcedures(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szProcName,
+ SQLSMALLINT cbProcName);
+
+SQLRETURN SQL_API SQLSetPos(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT irow,
+ SQLUSMALLINT fOption,
+ SQLUSMALLINT fLock);
+
+SQLRETURN SQL_API SQLTablePrivileges(
+ SQLHSTMT hstmt,
+ SQLCHAR FAR *szCatalogName,
+ SQLSMALLINT cbCatalogName,
+ SQLCHAR FAR *szSchemaName,
+ SQLSMALLINT cbSchemaName,
+ SQLCHAR FAR *szTableName,
+ SQLSMALLINT cbTableName);
+
+/* SDK 2.0 Additions */
+
+#if (ODBCVER >= 0x0200)
+SQLRETURN SQL_API SQLDrivers(
+ SQLHENV henv,
+ SQLUSMALLINT fDirection,
+ SQLCHAR FAR *szDriverDesc,
+ SQLSMALLINT cbDriverDescMax,
+ SQLSMALLINT FAR *pcbDriverDesc,
+ SQLCHAR FAR *szDriverAttributes,
+ SQLSMALLINT cbDrvrAttrMax,
+ SQLSMALLINT FAR *pcbDrvrAttr);
+
+SQLRETURN SQL_API SQLBindParameter(
+ SQLHSTMT hstmt,
+ SQLUSMALLINT ipar,
+ SQLSMALLINT fParamType,
+ SQLSMALLINT fCType,
+ SQLSMALLINT fSqlType,
+ SQLUINTEGER cbColDef,
+ SQLSMALLINT ibScale,
+ SQLPOINTER rgbValue,
+ SQLINTEGER cbValueMax,
+ SQLINTEGER FAR *pcbValue);
+#endif /* ODBCVER >= 0x0200 */
+
+#endif /* RC_INVOKED */
+
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* __SQLEXT */
diff --git a/public/sdk/inc/mfc42/sqltypes.h b/public/sdk/inc/mfc42/sqltypes.h
new file mode 100644
index 000000000..ae9d39e2c
--- /dev/null
+++ b/public/sdk/inc/mfc42/sqltypes.h
@@ -0,0 +1,138 @@
+/*********************************************************************
+** SQLTYPES.H - This file defines the types used in ODBC
+**
+** (C) Copyright 1995 By Microsoft Corp.
+**
+** Created 4/10/95 for 2.50 specification
+*********************************************************************/
+
+#ifndef __SQLTYPES
+#define __SQLTYPES
+
+/* if ODBCVER is not defined, assume version 2.50 */
+#ifndef ODBCVER
+#define ODBCVER 0x0250
+#endif
+
+/* environment specific definitions */
+#ifndef EXPORT
+#define EXPORT _export
+#endif
+
+/* define WINDOWS */
+/* _WINDOWS_ is defined in windows.h for 32 bit */
+/* _INC_WINDOWS is defined in windows.h for 16 bit */
+#if (defined(_WINDOWS_) || defined(_INC_WINDOWS)) && !defined(WINDOWS)
+#define WINDOWS
+#endif
+
+#ifdef WIN32
+#define SQL_API __stdcall
+#elif defined(WINDOWS)
+#define SQL_API EXPORT CALLBACK
+#else
+#define SQL_API
+#endif
+
+
+#ifndef RC_INVOKED
+
+#if !defined(WINDOWS) && !defined(FAR)
+#define FAR
+#endif
+
+/* SQL portable types for C */
+typedef unsigned char UCHAR;
+typedef signed char SCHAR;
+typedef long int SDWORD;
+typedef short int SWORD;
+typedef unsigned long int UDWORD;
+typedef unsigned short int UWORD;
+
+#if (ODBCVER >= 0x0200)
+typedef signed long SLONG;
+typedef signed short SSHORT;
+typedef unsigned long ULONG;
+typedef unsigned short USHORT;
+#endif /* ODBCVER >= 0x0200 */
+typedef double SDOUBLE;
+#if defined(WIN32)
+typedef double LDOUBLE; /* long double == short double in Win32 */
+#elif defined(WINDOWS)
+typedef long double LDOUBLE;
+#else
+typedef double LDOUBLE;
+#endif
+typedef float SFLOAT;
+
+typedef void FAR * PTR;
+
+typedef void FAR * HENV;
+typedef void FAR * HDBC;
+typedef void FAR * HSTMT;
+
+typedef signed short RETCODE;
+
+typedef UCHAR SQLCHAR;
+typedef SCHAR SQLSCHAR;
+typedef SDWORD SQLINTEGER;
+typedef SWORD SQLSMALLINT;
+typedef UDWORD SQLUINTEGER;
+typedef UWORD SQLUSMALLINT;
+
+typedef void FAR * SQLPOINTER;
+
+#if defined(WINDOWS) || defined(WIN32)
+typedef HENV SQLHENV;
+typedef HDBC SQLHDBC;
+typedef HSTMT SQLHSTMT;
+#else
+typedef SQLINTEGER SQLHENV;
+typedef SQLINTEGER SQLHDBC;
+typedef SQLINTEGER SQLHSTMT;
+#endif
+
+typedef SQLSMALLINT SQLRETURN;
+
+#if defined(WINDOWS) || defined(WIN32) || defined(OS2)
+typedef HWND SQLHWND;
+#elif defined (UNIX)
+typedef Widget SQLHWND;
+#else
+/* placehold for future O/S GUI window handle definition */
+typedef SQLPOINTER SQLHWND;
+#endif
+
+/* transfer types for DATE, TIME, TIMESTAMP */
+typedef struct tagDATE_STRUCT
+{
+ SQLSMALLINT year;
+ SQLUSMALLINT month;
+ SQLUSMALLINT day;
+} DATE_STRUCT;
+
+typedef struct tagTIME_STRUCT
+{
+ SQLUSMALLINT hour;
+ SQLUSMALLINT minute;
+ SQLUSMALLINT second;
+} TIME_STRUCT;
+
+typedef struct tagTIMESTAMP_STRUCT
+{
+ SQLSMALLINT year;
+ SQLUSMALLINT month;
+ SQLUSMALLINT day;
+ SQLUSMALLINT hour;
+ SQLUSMALLINT minute;
+ SQLUSMALLINT second;
+ SQLUINTEGER fraction;
+} TIMESTAMP_STRUCT;
+
+#if (ODBCVER >= 0x0200)
+typedef unsigned long int BOOKMARK;
+#endif /* ODBCVER >= 0x0200 */
+
+#endif
+
+#endif /* #ifndef __SQLTYPES */
diff --git a/public/sdk/inc/mfc42/winres.h b/public/sdk/inc/mfc42/winres.h
new file mode 100644
index 000000000..910df28a9
--- /dev/null
+++ b/public/sdk/inc/mfc42/winres.h
@@ -0,0 +1,597 @@
+// This is a part of the Microsoft Foundation Classes C++ library.
+// Copyright (C) 1992-1995 Microsoft Corporation
+// All rights reserved.
+//
+// This source code is only intended as a supplement to the
+// Microsoft Foundation Classes Reference and related
+// electronic documentation provided with the library.
+// See these sources for detailed information regarding the
+// Microsoft Foundation Classes product.
+
+// winres.h - Windows resource definitions
+// extracted from WINUSER.H and COMMCTRL.H
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, off)
+#endif
+
+#define VS_VERSION_INFO 1
+
+#ifdef APSTUDIO_INVOKED
+#define APSTUDIO_HIDDEN_SYMBOLS // Ignore following symbols
+#endif
+
+#ifndef WINVER
+#define WINVER 0x0400 // default to Windows Version 4.0
+#endif
+
+#define OBM_CLOSE 32754
+#define OBM_UPARROW 32753
+#define OBM_DNARROW 32752
+#define OBM_RGARROW 32751
+#define OBM_LFARROW 32750
+#define OBM_REDUCE 32749
+#define OBM_ZOOM 32748
+#define OBM_RESTORE 32747
+#define OBM_REDUCED 32746
+#define OBM_ZOOMD 32745
+#define OBM_RESTORED 32744
+#define OBM_UPARROWD 32743
+#define OBM_DNARROWD 32742
+#define OBM_RGARROWD 32741
+#define OBM_LFARROWD 32740
+#define OBM_MNARROW 32739
+#define OBM_COMBO 32738
+#define OBM_UPARROWI 32737
+#define OBM_DNARROWI 32736
+#define OBM_RGARROWI 32735
+#define OBM_LFARROWI 32734
+#define OBM_OLD_CLOSE 32767
+#define OBM_SIZE 32766
+#define OBM_OLD_UPARROW 32765
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_LFARROW 32762
+#define OBM_BTSIZE 32761
+#define OBM_CHECK 32760
+#define OBM_CHECKBOXES 32759
+#define OBM_BTNCORNERS 32758
+#define OBM_OLD_REDUCE 32757
+#define OBM_OLD_ZOOM 32756
+#define OBM_OLD_RESTORE 32755
+#define OCR_NORMAL 32512
+#define OCR_IBEAM 32513
+#define OCR_WAIT 32514
+#define OCR_CROSS 32515
+#define OCR_UP 32516
+#define OCR_SIZE 32640
+#define OCR_ICON 32641
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_ICOCUR 32647
+#define OCR_NO 32648
+#define OIC_SAMPLE 32512
+#define OIC_HAND 32513
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_NOTE 32516
+
+#if (WINVER >= 0x0400)
+#define OCR_APPSTARTING 32650
+#define OIC_WINLOGO 32517
+#define OIC_WARNING OIC_BANG
+#define OIC_ERROR OIC_HAND
+#define OIC_INFORMATION OIC_NOTE
+#endif
+
+#define WS_OVERLAPPED 0x00000000L
+#define WS_POPUP 0x80000000L
+#define WS_CHILD 0x40000000L
+#define WS_CLIPSIBLINGS 0x04000000L
+#define WS_CLIPCHILDREN 0x02000000L
+#define WS_VISIBLE 0x10000000L
+#define WS_DISABLED 0x08000000L
+#define WS_MINIMIZE 0x20000000L
+#define WS_MAXIMIZE 0x01000000L
+#define WS_CAPTION 0x00C00000L
+#define WS_BORDER 0x00800000L
+#define WS_DLGFRAME 0x00400000L
+#define WS_VSCROLL 0x00200000L
+#define WS_HSCROLL 0x00100000L
+#define WS_SYSMENU 0x00080000L
+#define WS_THICKFRAME 0x00040000L
+#define WS_MINIMIZEBOX 0x00020000L
+#define WS_MAXIMIZEBOX 0x00010000L
+#define WS_GROUP 0x00020000L
+#define WS_TABSTOP 0x00010000L
+
+// other aliases
+#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
+#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
+#define WS_CHILDWINDOW (WS_CHILD)
+#define WS_TILED WS_OVERLAPPED
+#define WS_ICONIC WS_MINIMIZE
+#define WS_SIZEBOX WS_THICKFRAME
+#define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
+
+#define WS_EX_DLGMODALFRAME 0x00000001L
+#define WS_EX_NOPARENTNOTIFY 0x00000004L
+#define WS_EX_TOPMOST 0x00000008L
+#define WS_EX_ACCEPTFILES 0x00000010L
+#define WS_EX_TRANSPARENT 0x00000020L
+#if (WINVER >= 0x0400)
+#define WS_EX_MDICHILD 0x00000040L
+#define WS_EX_TOOLWINDOW 0x00000080L
+#define WS_EX_WINDOWEDGE 0x00000100L
+#define WS_EX_CLIENTEDGE 0x00000200L
+#define WS_EX_CONTEXTHELP 0x00000400L
+
+#define WS_EX_RIGHT 0x00001000L
+#define WS_EX_LEFT 0x00000000L
+#define WS_EX_RTLREADING 0x00002000L
+#define WS_EX_LTRREADING 0x00000000L
+#define WS_EX_LEFTSCROLLBAR 0x00004000L
+#define WS_EX_RIGHTSCROLLBAR 0x00000000L
+
+#define WS_EX_CONTROLPARENT 0x00010000L
+#define WS_EX_STATICEDGE 0x00020000L
+#define WS_EX_APPWINDOW 0x00040000L
+
+#define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
+#define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
+#endif
+
+#define VK_LBUTTON 0x01
+#define VK_RBUTTON 0x02
+#define VK_CANCEL 0x03
+#define VK_MBUTTON 0x04
+#define VK_BACK 0x08
+#define VK_TAB 0x09
+#define VK_CLEAR 0x0C
+#define VK_RETURN 0x0D
+#define VK_SHIFT 0x10
+#define VK_CONTROL 0x11
+#define VK_MENU 0x12
+#define VK_PAUSE 0x13
+#define VK_CAPITAL 0x14
+#define VK_ESCAPE 0x1B
+#define VK_SPACE 0x20
+#define VK_PRIOR 0x21
+#define VK_NEXT 0x22
+#define VK_END 0x23
+#define VK_HOME 0x24
+#define VK_LEFT 0x25
+#define VK_UP 0x26
+#define VK_RIGHT 0x27
+#define VK_DOWN 0x28
+#define VK_SELECT 0x29
+#define VK_PRINT 0x2A
+#define VK_EXECUTE 0x2B
+#define VK_SNAPSHOT 0x2C
+#define VK_INSERT 0x2D
+#define VK_DELETE 0x2E
+#define VK_HELP 0x2F
+#define VK_NUMPAD0 0x60
+#define VK_NUMPAD1 0x61
+#define VK_NUMPAD2 0x62
+#define VK_NUMPAD3 0x63
+#define VK_NUMPAD4 0x64
+#define VK_NUMPAD5 0x65
+#define VK_NUMPAD6 0x66
+#define VK_NUMPAD7 0x67
+#define VK_NUMPAD8 0x68
+#define VK_NUMPAD9 0x69
+#define VK_MULTIPLY 0x6A
+#define VK_ADD 0x6B
+#define VK_SEPARATOR 0x6C
+#define VK_SUBTRACT 0x6D
+#define VK_DECIMAL 0x6E
+#define VK_DIVIDE 0x6F
+#define VK_F1 0x70
+#define VK_F2 0x71
+#define VK_F3 0x72
+#define VK_F4 0x73
+#define VK_F5 0x74
+#define VK_F6 0x75
+#define VK_F7 0x76
+#define VK_F8 0x77
+#define VK_F9 0x78
+#define VK_F10 0x79
+#define VK_F11 0x7A
+#define VK_F12 0x7B
+#define VK_F13 0x7C
+#define VK_F14 0x7D
+#define VK_F15 0x7E
+#define VK_F16 0x7F
+#define VK_F17 0x80
+#define VK_F18 0x81
+#define VK_F19 0x82
+#define VK_F20 0x83
+#define VK_F21 0x84
+#define VK_F22 0x85
+#define VK_F23 0x86
+#define VK_F24 0x87
+#define VK_NUMLOCK 0x90
+#define VK_SCROLL 0x91
+
+#define VK_LSHIFT 0xA0
+#define VK_RSHIFT 0xA1
+#define VK_LCONTROL 0xA2
+#define VK_RCONTROL 0xA3
+#define VK_LMENU 0xA4
+#define VK_RMENU 0xA5
+
+#if (WINVER >= 0x0400)
+#define VK_PROCESSKEY 0xE5
+#endif /* WINVER >= 0x0400 */
+
+#define VK_ATTN 0xF6
+#define VK_CRSEL 0xF7
+#define VK_EXSEL 0xF8
+#define VK_EREOF 0xF9
+#define VK_PLAY 0xFA
+#define VK_ZOOM 0xFB
+#define VK_NONAME 0xFC
+#define VK_PA1 0xFD
+#define VK_OEM_CLEAR 0xFE
+
+#define SC_SIZE 0xF000
+#define SC_MOVE 0xF010
+#define SC_MINIMIZE 0xF020
+#define SC_MAXIMIZE 0xF030
+#define SC_NEXTWINDOW 0xF040
+#define SC_PREVWINDOW 0xF050
+#define SC_CLOSE 0xF060
+#define SC_VSCROLL 0xF070
+#define SC_HSCROLL 0xF080
+#define SC_MOUSEMENU 0xF090
+#define SC_KEYMENU 0xF100
+#define SC_ARRANGE 0xF110
+#define SC_RESTORE 0xF120
+#define SC_TASKLIST 0xF130
+#define SC_SCREENSAVE 0xF140
+#define SC_HOTKEY 0xF150
+
+#define DS_ABSALIGN 0x01L
+#define DS_SYSMODAL 0x02L
+#define DS_LOCALEDIT 0x20L
+#define DS_SETFONT 0x40L
+#define DS_MODALFRAME 0x80L
+#define DS_NOIDLEMSG 0x100L
+#define DS_SETFOREGROUND 0x200L
+
+#ifdef _MAC
+#define DS_WINDOWSUI 0x8000L
+#endif
+
+#if (WINVER >= 0x0400)
+#define DS_3DLOOK 0x0004L
+#define DS_FIXEDSYS 0x0008L
+#define DS_NOFAILCREATE 0x0010L
+#define DS_CONTROL 0x0400L
+#define DS_CENTER 0x0800L
+#define DS_CENTERMOUSE 0x1000L
+#define DS_CONTEXTHELP 0x2000L
+#endif
+
+#define SS_LEFT 0x00000000L
+#define SS_CENTER 0x00000001L
+#define SS_RIGHT 0x00000002L
+#define SS_ICON 0x00000003L
+#define SS_BLACKRECT 0x00000004L
+#define SS_GRAYRECT 0x00000005L
+#define SS_WHITERECT 0x00000006L
+#define SS_BLACKFRAME 0x00000007L
+#define SS_GRAYFRAME 0x00000008L
+#define SS_WHITEFRAME 0x00000009L
+#define SS_SIMPLE 0x0000000BL
+#define SS_LEFTNOWORDWRAP 0x0000000CL
+#define SS_BITMAP 0x0000000EL
+
+#if (WINVER >= 0x0400)
+#define SS_OWNERDRAW 0x0000000DL
+#define SS_ENHMETAFILE 0x0000000FL
+#define SS_ETCHEDHORZ 0x00000010L
+#define SS_ETCHEDVERT 0x00000011L
+#define SS_ETCHEDFRAME 0x00000012L
+#endif
+
+#define SS_NOPREFIX 0x00000080L
+#if (WINVER >= 0x0400)
+#define SS_NOTIFY 0x00000100L
+#endif
+#define SS_CENTERIMAGE 0x00000200L
+#if (WINVER >= 0x0400)
+#define SS_RIGHTJUST 0x00000400L
+#define SS_REALSIZEIMAGE 0x00000800L
+#define SS_SUNKEN 0x00001000L
+#endif
+
+#define BS_PUSHBUTTON 0x00000000L
+#define BS_DEFPUSHBUTTON 0x00000001L
+#define BS_CHECKBOX 0x00000002L
+#define BS_AUTOCHECKBOX 0x00000003L
+#define BS_RADIOBUTTON 0x00000004L
+#define BS_3STATE 0x00000005L
+#define BS_AUTO3STATE 0x00000006L
+#define BS_GROUPBOX 0x00000007L
+#define BS_USERBUTTON 0x00000008L
+#define BS_AUTORADIOBUTTON 0x00000009L
+#define BS_OWNERDRAW 0x0000000BL
+#define BS_LEFTTEXT 0x00000020L
+#if (WINVER >= 0x0400)
+#define BS_TEXT 0x00000000L
+#define BS_ICON 0x00000040L
+#define BS_BITMAP 0x00000080L
+#define BS_LEFT 0x00000100L
+#define BS_RIGHT 0x00000200L
+#define BS_CENTER 0x00000300L
+#define BS_TOP 0x00000400L
+#define BS_BOTTOM 0x00000800L
+#define BS_VCENTER 0x00000C00L
+#define BS_PUSHLIKE 0x00001000L
+#define BS_MULTILINE 0x00002000L
+#define BS_NOTIFY 0x00004000L
+#define BS_FLAT 0x00008000L
+#define BS_RIGHTBUTTON BS_LEFTTEXT
+#endif
+
+#define ES_LEFT 0x00000000L
+#define ES_CENTER 0x00000001L
+#define ES_RIGHT 0x00000002L
+#define ES_MULTILINE 0x00000004L
+#define ES_UPPERCASE 0x00000008L
+#define ES_LOWERCASE 0x00000010L
+#define ES_PASSWORD 0x00000020L
+#define ES_AUTOVSCROLL 0x00000040L
+#define ES_AUTOHSCROLL 0x00000080L
+#define ES_NOHIDESEL 0x00000100L
+#define ES_OEMCONVERT 0x00000400L
+#define ES_READONLY 0x00000800L
+#define ES_WANTRETURN 0x00001000L
+#if (WINVER >= 0x0400)
+#define ES_NUMBER 0x2000L
+#endif
+
+#define SBS_HORZ 0x0000L
+#define SBS_VERT 0x0001L
+#define SBS_TOPALIGN 0x0002L
+#define SBS_LEFTALIGN 0x0002L
+#define SBS_BOTTOMALIGN 0x0004L
+#define SBS_RIGHTALIGN 0x0004L
+#define SBS_SIZEBOXTOPLEFTALIGN 0x0002L
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
+#define SBS_SIZEBOX 0x0008L
+#if (WINVER >= 0x0400)
+#define SBS_SIZEGRIP 0x0010L
+#endif
+
+#define LBS_NOTIFY 0x0001L
+#define LBS_SORT 0x0002L
+#define LBS_NOREDRAW 0x0004L
+#define LBS_MULTIPLESEL 0x0008L
+#define LBS_OWNERDRAWFIXED 0x0010L
+#define LBS_OWNERDRAWVARIABLE 0x0020L
+#define LBS_HASSTRINGS 0x0040L
+#define LBS_USETABSTOPS 0x0080L
+#define LBS_NOINTEGRALHEIGHT 0x0100L
+#define LBS_MULTICOLUMN 0x0200L
+#define LBS_WANTKEYBOARDINPUT 0x0400L
+#define LBS_EXTENDEDSEL 0x0800L
+#define LBS_DISABLENOSCROLL 0x1000L
+#if (WINVER >= 0x0400)
+#define LBS_NOSEL 0x4000L
+#endif
+#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
+
+#define CBS_SIMPLE 0x0001L
+#define CBS_DROPDOWN 0x0002L
+#define CBS_DROPDOWNLIST 0x0003L
+#define CBS_OWNERDRAWFIXED 0x0010L
+#define CBS_OWNERDRAWVARIABLE 0x0020L
+#define CBS_AUTOHSCROLL 0x0040L
+#define CBS_OEMCONVERT 0x0080L
+#define CBS_SORT 0x0100L
+#define CBS_HASSTRINGS 0x0200L
+#define CBS_NOINTEGRALHEIGHT 0x0400L
+#define CBS_DISABLENOSCROLL 0x0800L
+#if (WINVER >= 0x0400)
+#define CBS_UPPERCASE 0x2000L
+#define CBS_LOWERCASE 0x4000L
+#endif
+
+// operation messages sent to DLGINIT
+#define WM_USER 0x0400
+#define LB_ADDSTRING (WM_USER+1)
+#define CB_ADDSTRING (WM_USER+3)
+
+#if (WINVER >= 0x0400)
+
+#define HDS_HORZ 0x00000000
+#define HDS_BUTTONS 0x00000002
+#define HDS_HIDDEN 0x00000008
+
+#define TTS_ALWAYSTIP 0x01
+#define TTS_NOPREFIX 0x02
+
+#define SBARS_SIZEGRIP 0x0100
+
+#define TBS_AUTOTICKS 0x0001
+#define TBS_VERT 0x0002
+#define TBS_HORZ 0x0000
+#define TBS_TOP 0x0004
+#define TBS_BOTTOM 0x0000
+#define TBS_LEFT 0x0004
+#define TBS_RIGHT 0x0000
+#define TBS_BOTH 0x0008
+#define TBS_NOTICKS 0x0010
+#define TBS_ENABLESELRANGE 0x0020
+#define TBS_FIXEDLENGTH 0x0040
+#define TBS_NOTHUMB 0x0080
+
+#define UDS_WRAP 0x0001
+#define UDS_SETBUDDYINT 0x0002
+#define UDS_ALIGNRIGHT 0x0004
+#define UDS_ALIGNLEFT 0x0008
+#define UDS_AUTOBUDDY 0x0010
+#define UDS_ARROWKEYS 0x0020
+#define UDS_HORZ 0x0040
+#define UDS_NOTHOUSANDS 0x0080
+
+#define CCS_TOP 0x00000001L
+#define CCS_NOMOVEY 0x00000002L
+#define CCS_BOTTOM 0x00000003L
+#define CCS_NORESIZE 0x00000004L
+#define CCS_NOPARENTALIGN 0x00000008L
+#define CCS_NOHILITE 0x00000010L
+#define CCS_ADJUSTABLE 0x00000020L
+#define CCS_NODIVIDER 0x00000040L
+
+#define LVS_ICON 0x0000
+#define LVS_REPORT 0x0001
+#define LVS_SMALLICON 0x0002
+#define LVS_LIST 0x0003
+#define LVS_TYPEMASK 0x0003
+#define LVS_SINGLESEL 0x0004
+#define LVS_SHOWSELALWAYS 0x0008
+#define LVS_SORTASCENDING 0x0010
+#define LVS_SORTDESCENDING 0x0020
+#define LVS_SHAREIMAGELISTS 0x0040
+#define LVS_NOLABELWRAP 0x0080
+#define LVS_AUTOARRANGE 0x0100
+#define LVS_EDITLABELS 0x0200
+#define LVS_NOSCROLL 0x2000
+
+#define LVS_ALIGNTOP 0x0000
+#define LVS_ALIGNLEFT 0x0800
+#define LVS_ALIGNMASK 0x0c00
+
+#define LVS_OWNERDRAWFIXED 0x0400
+#define LVS_NOCOLUMNHEADER 0x4000
+#define LVS_NOSORTHEADER 0x8000
+
+#define TVS_HASBUTTONS 0x0001
+#define TVS_HASLINES 0x0002
+#define TVS_LINESATROOT 0x0004
+#define TVS_EDITLABELS 0x0008
+#define TVS_DISABLEDRAGDROP 0x0010
+#define TVS_SHOWSELALWAYS 0x0020
+
+#define TCS_FORCEICONLEFT 0x0010
+#define TCS_FORCELABELLEFT 0x0020
+#define TCS_SHAREIMAGELISTS 0x0040
+#define TCS_TABS 0x0000
+#define TCS_BUTTONS 0x0100
+#define TCS_SINGLELINE 0x0000
+#define TCS_MULTILINE 0x0200
+#define TCS_RIGHTJUSTIFY 0x0000
+#define TCS_FIXEDWIDTH 0x0400
+#define TCS_RAGGEDRIGHT 0x0800
+#define TCS_FOCUSONBUTTONDOWN 0x1000
+#define TCS_OWNERDRAWFIXED 0x2000
+#define TCS_TOOLTIPS 0x4000
+#define TCS_FOCUSNEVER 0x8000
+
+#define ACS_CENTER 0x0001
+#define ACS_TRANSPARENT 0x0002
+#define ACS_AUTOPLAY 0x0004
+
+#endif // (WINVER >= 0x0400)
+
+// 32-bit language/sub-language identifiers
+
+#ifndef LANG_NEUTRAL
+// Primary language IDs.
+#define LANG_NEUTRAL 0x00
+
+#define LANG_BULGARIAN 0x02
+#define LANG_CHINESE 0x04
+#define LANG_CROATIAN 0x1a
+#define LANG_CZECH 0x05
+#define LANG_DANISH 0x06
+#define LANG_DUTCH 0x13
+#define LANG_ENGLISH 0x09
+#define LANG_FINNISH 0x0b
+#define LANG_FRENCH 0x0c
+#define LANG_GERMAN 0x07
+#define LANG_GREEK 0x08
+#define LANG_HUNGARIAN 0x0e
+#define LANG_ICELANDIC 0x0f
+#define LANG_ITALIAN 0x10
+#define LANG_JAPANESE 0x11
+#define LANG_KOREAN 0x12
+#define LANG_NORWEGIAN 0x14
+#define LANG_POLISH 0x15
+#define LANG_PORTUGUESE 0x16
+#define LANG_ROMANIAN 0x18
+#define LANG_RUSSIAN 0x19
+#define LANG_SLOVAK 0x1b
+#define LANG_SLOVENIAN 0x24
+#define LANG_SPANISH 0x0a
+#define LANG_SWEDISH 0x1d
+#define LANG_TURKISH 0x1f
+#endif //!LANG_NEUTRAL
+
+#ifndef SUBLANG_NEUTRAL
+// Sublanguage IDs.
+#define SUBLANG_NEUTRAL 0x00
+#define SUBLANG_DEFAULT 0x01
+#define SUBLANG_SYS_DEFAULT 0x02
+
+#define SUBLANG_CHINESE_TRADITIONAL 0x01
+#define SUBLANG_CHINESE_SIMPLIFIED 0x02
+#define SUBLANG_CHINESE_HONGKONG 0x03
+#define SUBLANG_CHINESE_SINGAPORE 0x04
+#define SUBLANG_DUTCH 0x01
+#define SUBLANG_DUTCH_BELGIAN 0x02
+#define SUBLANG_ENGLISH_US 0x01
+#define SUBLANG_ENGLISH_UK 0x02
+#define SUBLANG_ENGLISH_AUS 0x03
+#define SUBLANG_ENGLISH_CAN 0x04
+#define SUBLANG_ENGLISH_NZ 0x05
+#define SUBLANG_ENGLISH_EIRE 0x06
+#define SUBLANG_FRENCH 0x01
+#define SUBLANG_FRENCH_BELGIAN 0x02
+#define SUBLANG_FRENCH_CANADIAN 0x03
+#define SUBLANG_FRENCH_SWISS 0x04
+#define SUBLANG_GERMAN 0x01
+#define SUBLANG_GERMAN_SWISS 0x02
+#define SUBLANG_GERMAN_AUSTRIAN 0x03
+#define SUBLANG_ITALIAN 0x01
+#define SUBLANG_ITALIAN_SWISS 0x02
+#define SUBLANG_NORWEGIAN_BOKMAL 0x01
+#define SUBLANG_NORWEGIAN_NYNORSK 0x02
+#define SUBLANG_PORTUGUESE 0x02
+#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
+#define SUBLANG_SPANISH 0x01
+#define SUBLANG_SPANISH_MEXICAN 0x02
+#define SUBLANG_SPANISH_MODERN 0x03
+#endif //!SUBLANG_NEUTRAL
+
+#ifdef APSTUDIO_INVOKED
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#endif
+
+#define IDOK 1
+#define IDCANCEL 2
+#define IDABORT 3
+#define IDRETRY 4
+#define IDIGNORE 5
+#define IDYES 6
+#define IDNO 7
+#if (WINVER >= 0x0400)
+#define IDCLOSE 8
+#define IDHELP 9
+#endif
+
+#ifdef IDC_STATIC
+#undef IDC_STATIC
+#endif
+#define IDC_STATIC (-1)
+
+#ifdef _AFX_MINREBUILD
+#pragma component(minrebuild, on)
+#endif
diff --git a/public/sdk/inc/mgmtapi.h b/public/sdk/inc/mgmtapi.h
new file mode 100644
index 000000000..37e2fccd0
--- /dev/null
+++ b/public/sdk/inc/mgmtapi.h
@@ -0,0 +1,131 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ mgmtapi.h
+
+Abstract:
+
+ Definitions for SNMP Management API Development.
+
+--*/
+
+#ifndef _INC_MGMTAPI
+#define _INC_MGMTAPI
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Additional header files //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#include <snmp.h>
+#include <winsock.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// MGMT API error code definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMP_MGMTAPI_TIMEOUT 40
+#define SNMP_MGMTAPI_SELECT_FDERRORS 41
+#define SNMP_MGMTAPI_TRAP_ERRORS 42
+#define SNMP_MGMTAPI_TRAP_DUPINIT 43
+#define SNMP_MGMTAPI_NOTRAPS 44
+#define SNMP_MGMTAPI_AGAIN 45
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// MGMT API type definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+typedef PVOID LPSNMP_MGR_SESSION;
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// MGMT API prototypes //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+LPSNMP_MGR_SESSION
+SNMP_FUNC_TYPE
+SnmpMgrOpen(
+ IN LPSTR lpAgentAddress, // Name/address of target agent
+ IN LPSTR lpAgentCommunity, // Community for target agent
+ IN INT nTimeOut, // Comm time-out in milliseconds
+ IN INT nRetries // Comm time-out/retry count
+ );
+
+BOOL
+SNMP_FUNC_TYPE
+SnmpMgrClose(
+ IN LPSNMP_MGR_SESSION session // SNMP session pointer
+ );
+
+SNMPAPI
+SNMP_FUNC_TYPE
+SnmpMgrRequest(
+ IN LPSNMP_MGR_SESSION session, // SNMP session pointer
+ IN BYTE requestType, // Get, GetNext, or Set
+ IN OUT RFC1157VarBindList *variableBindings, // Varible bindings
+ OUT AsnInteger *errorStatus, // Result error status
+ OUT AsnInteger *errorIndex // Result error index
+ );
+
+BOOL
+SNMP_FUNC_TYPE
+SnmpMgrStrToOid(
+ IN LPSTR string, // OID string to be converted
+ OUT AsnObjectIdentifier *oid // OID internal representation
+ );
+
+BOOL
+SNMP_FUNC_TYPE
+SnmpMgrOidToStr(
+ IN AsnObjectIdentifier *oid, // OID to be converted
+ OUT LPSTR *string // OID string representation
+ );
+
+BOOL
+SNMP_FUNC_TYPE
+SnmpMgrTrapListen(
+ OUT HANDLE *phTrapAvailable // Event indicating trap available
+ );
+
+BOOL
+SNMP_FUNC_TYPE
+SnmpMgrGetTrap(
+ OUT AsnObjectIdentifier *enterprise, // Generating enterprise
+ OUT AsnNetworkAddress *IPAddress, // Generating IP address
+ OUT AsnInteger *genericTrap, // Generic trap type
+ OUT AsnInteger *specificTrap, // Enterprise specific type
+ OUT AsnTimeticks *timeStamp, // Time stamp
+ OUT RFC1157VarBindList *variableBindings // Variable bindings
+ );
+
+BOOL
+SNMP_FUNC_TYPE
+SnmpMgrGetTrapEx(
+ OUT AsnObjectIdentifier *enterprise, // Generating enterprise
+ OUT AsnNetworkAddress *agentAddress, // Generating agent addr
+ OUT AsnNetworkAddress *sourceAddress, // Generating network addr
+ OUT AsnInteger *genericTrap, // Generic trap type
+ OUT AsnInteger *specificTrap, // Enterprise specific type
+ OUT AsnOctetString *community, // Generating community
+ OUT AsnTimeticks *timeStamp, // Time stamp
+ OUT RFC1157VarBindList *variableBindings // Variable bindings
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _INC_MGMTAPI
diff --git a/public/sdk/inc/midles.h b/public/sdk/inc/midles.h
new file mode 100644
index 000000000..b64e4fe61
--- /dev/null
+++ b/public/sdk/inc/midles.h
@@ -0,0 +1,218 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ midles.h
+
+Abstract:
+
+ This module contains definitions needed for encoding/decoding
+ support (serializing/deserializing a.k.a. pickling).
+
+--*/
+
+#ifndef __MIDLES_H__
+#define __MIDLES_H__
+
+#include <rpcndr.h>
+
+//
+// Set the packing level for RPC structures for Dos and Windows.
+//
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack(2)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pickling support
+ */
+typedef enum
+{
+ MES_ENCODE,
+ MES_DECODE,
+} MIDL_ES_CODE;
+
+typedef enum
+{
+ MES_INCREMENTAL_HANDLE,
+ MES_FIXED_BUFFER_HANDLE,
+ MES_DYNAMIC_BUFFER_HANDLE
+} MIDL_ES_HANDLE_STYLE;
+
+
+typedef void (__RPC_USER * MIDL_ES_ALLOC )
+ ( IN OUT void __RPC_FAR * state,
+ OUT char __RPC_FAR * __RPC_FAR * pbuffer,
+ IN OUT unsigned int __RPC_FAR * psize );
+
+typedef void (__RPC_USER * MIDL_ES_WRITE)
+ ( IN OUT void __RPC_FAR * state,
+ IN char __RPC_FAR * buffer,
+ IN unsigned int size );
+
+typedef void (__RPC_USER * MIDL_ES_READ)
+ ( IN OUT void __RPC_FAR * state,
+ OUT char __RPC_FAR * __RPC_FAR * pbuffer,
+ IN OUT unsigned int __RPC_FAR * psize );
+
+typedef struct _MIDL_ES_MESSAGE
+{
+ MIDL_STUB_MESSAGE StubMsg;
+ MIDL_ES_CODE Operation;
+ void __RPC_FAR * UserState;
+ unsigned long MesVersion:8;
+ unsigned long HandleStyle:8;
+ unsigned long HandleFlags:8;
+ unsigned long Reserve:8;
+ MIDL_ES_ALLOC Alloc;
+ MIDL_ES_WRITE Write;
+ MIDL_ES_READ Read;
+ unsigned char __RPC_FAR * Buffer;
+ unsigned long BufferSize;
+ unsigned char __RPC_FAR * __RPC_FAR * pDynBuffer;
+ unsigned long __RPC_FAR * pEncodedSize;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ unsigned long ProcNumber;
+ unsigned long AlienDataRep;
+ unsigned long IncrDataSize;
+ unsigned long ByteCount;
+} MIDL_ES_MESSAGE, __RPC_FAR * PMIDL_ES_MESSAGE;
+
+typedef PMIDL_ES_MESSAGE MIDL_ES_HANDLE;
+
+RPC_STATUS RPC_ENTRY
+MesEncodeIncrementalHandleCreate(
+ void __RPC_FAR * UserState,
+ MIDL_ES_ALLOC AllocFn,
+ MIDL_ES_WRITE WriteFn,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesDecodeIncrementalHandleCreate(
+ void __RPC_FAR * UserState,
+ MIDL_ES_READ ReadFn,
+ handle_t __RPC_FAR * pHandle );
+
+
+RPC_STATUS RPC_ENTRY
+MesIncrementalHandleReset(
+ handle_t Handle,
+ void __RPC_FAR * UserState,
+ MIDL_ES_ALLOC AllocFn,
+ MIDL_ES_WRITE WriteFn,
+ MIDL_ES_READ ReadFn,
+ MIDL_ES_CODE Operation );
+
+
+RPC_STATUS RPC_ENTRY
+MesEncodeFixedBufferHandleCreate(
+ char __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ unsigned long __RPC_FAR * pEncodedSize,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesEncodeDynBufferHandleCreate(
+ char __RPC_FAR * __RPC_FAR * pBuffer,
+ unsigned long __RPC_FAR * pEncodedSize,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesDecodeBufferHandleCreate(
+ char __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ handle_t __RPC_FAR * pHandle );
+
+
+RPC_STATUS RPC_ENTRY
+MesBufferHandleReset(
+ handle_t Handle,
+ unsigned long HandleStyle,
+ MIDL_ES_CODE Operation,
+ char __RPC_FAR * __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ unsigned long __RPC_FAR * pEncodedSize );
+
+
+RPC_STATUS RPC_ENTRY
+MesHandleFree( handle_t Handle );
+
+RPC_STATUS RPC_ENTRY
+MesInqProcEncodingId(
+ handle_t Handle,
+ PRPC_SYNTAX_IDENTIFIER pInterfaceId,
+ unsigned long __RPC_FAR * pProcNum );
+
+
+#if defined(_MIPS_) || defined(_ALPHA_) || defined(_PPC_)
+#define __RPC_UNALIGNED __unaligned
+#else
+#define __RPC_UNALIGNED
+#endif
+
+void RPC_ENTRY I_NdrMesMessageInit( PMIDL_STUB_MESSAGE );
+
+size_t RPC_ENTRY
+NdrMesSimpleTypeAlignSize ( handle_t );
+
+void RPC_ENTRY
+NdrMesSimpleTypeDecode(
+ handle_t Handle,
+ void __RPC_FAR * pObject,
+ short Size );
+
+void RPC_ENTRY
+NdrMesSimpleTypeEncode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ void __RPC_FAR * pObject,
+ short Size );
+
+
+size_t RPC_ENTRY
+NdrMesTypeAlignSize(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_ENTRY
+NdrMesTypeEncode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_ENTRY
+NdrMesTypeDecode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_VAR_ENTRY
+NdrMesProcEncodeDecode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ ... );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for DOS and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack()
+#endif
+
+#endif /* __MIDLES_H__ */
diff --git a/public/sdk/inc/minfo.h b/public/sdk/inc/minfo.h
new file mode 100644
index 000000000..ce91c358b
--- /dev/null
+++ b/public/sdk/inc/minfo.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: minfo.h
+//
+// Contents: Replacement for minfo.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/mipsalgn.tab b/public/sdk/inc/mipsalgn.tab
new file mode 100644
index 000000000..458ed8c88
--- /dev/null
+++ b/public/sdk/inc/mipsalgn.tab
@@ -0,0 +1,13 @@
+bit 8 32
+word 4 4
+char 1 1
+short 2 2
+int 4 4 2147483647
+long 4 4
+llong 8 8
+float 4 4
+double 8 8
+bptr 4 4
+wptr 4 4
+struct 1 1
+struct2 1 1
diff --git a/public/sdk/inc/mipsinst.h b/public/sdk/inc/mipsinst.h
new file mode 100644
index 000000000..000beb30d
--- /dev/null
+++ b/public/sdk/inc/mipsinst.h
@@ -0,0 +1,324 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1993 Microsoft Corporation
+
+Module Name:
+
+ mipsinst.h
+
+Abstract:
+
+ Mips instruction and floating constant definitions.
+
+Author:
+
+ David N. Cutler (davec) 8-May-1992
+
+Revision History:
+
+--*/
+
+#ifndef _MIPSINST_
+#define _MIPSINST_
+
+//
+// Define MIPS instruction format structures.
+//
+
+typedef union _MIPS_INSTRUCTION {
+ ULONG Long;
+ UCHAR Byte[4];
+
+ struct {
+ ULONG Target : 26;
+ ULONG Opcode : 6;
+ } j_format;
+
+ struct {
+ LONG Simmediate : 16;
+ ULONG Rt : 5;
+ ULONG Rs : 5;
+ ULONG Opcode : 6;
+ } i_format;
+
+ struct {
+ ULONG Uimmediate : 16;
+ ULONG Rt : 5;
+ ULONG Rs : 5;
+ ULONG Opcode : 6;
+ } u_format;
+
+ struct {
+ ULONG Function : 6;
+ ULONG Re : 5;
+ ULONG Rd : 5;
+ ULONG Rt : 5;
+ ULONG Rs : 5;
+ ULONG Opcode : 6;
+ } r_format;
+
+ struct {
+ ULONG Function : 6;
+ ULONG Re : 5;
+ ULONG Rd : 5;
+ ULONG Rt : 5;
+ ULONG Format : 4;
+ ULONG Fill1 : 1;
+ ULONG Opcode : 6;
+ } f_format;
+
+ struct {
+ ULONG Function : 6;
+ ULONG Fd : 5;
+ ULONG Fs : 5;
+ ULONG Ft : 5;
+ ULONG Format : 4;
+ ULONG Fill1 : 1;
+ ULONG Opcode : 6;
+ } c_format;
+
+} MIPS_INSTRUCTION, *PMIPS_INSTRUCTION;
+
+//
+// Define MIPS instruction opcode values.
+//
+
+#define SPEC_OP 0x0 // special opcode - use function field
+#define BCOND_OP 0x1 // condition branch
+#define J_OP 0x2 // unconditional jump
+#define JAL_OP 0x3 // jump and link
+
+#define BEQ_OP 0x4 // branch equal
+#define BNE_OP 0x5 // branch not equal
+#define BLEZ_OP 0x6 // branch less than or equal
+#define BGTZ_OP 0x7 // branch greater than
+
+#define ADDI_OP 0x8 // add immediate signed integer
+#define ADDIU_OP 0x9 // add immediate unsigned integer
+#define SLTI_OP 0xa // set less than signed integer
+#define SLTIU_OP 0xb // set less than unsigned integer
+
+#define ANDI_OP 0xc // and unsigned immediate integer
+#define ORI_OP 0xd // or unsigned immediate integer
+#define XORI_OP 0xe // exclusive or unsigned immediate
+#define LUI_OP 0xf // load upper immediate integer
+
+#define COP0_OP 0x10 // coprocessor 0 operation
+#define COP1_OP 0x11 // coprocessor 1 operation
+
+#define BEQL_OP 0x14 // branch equal likely
+#define BNEL_OP 0x15 // branch not equal likely
+#define BLEZL_OP 0x16 // branch less than or equal likely
+#define BGTZL_OP 0x17 // branch greater than likely
+
+#define LDL_OP 0x1a // load double left integer
+#define LDR_OP 0x1b // load double right integer
+
+#define LB_OP 0x20 // load byte signed integer
+#define LH_OP 0x21 // load halfword signed integer
+#define LWL_OP 0x22 // load word left integer
+#define LW_OP 0x23 // load word integer
+
+#define LBU_OP 0x24 // load byte unsigned integer
+#define LHU_OP 0x25 // load halfword unsigned integer
+#define LWR_OP 0x26 // load word right integer
+#define LWU_OP 0x27 // load word unsigned integer
+
+#define SB_OP 0x28 // store byte integer
+#define SH_OP 0x29 // store halfword integer
+#define SWL_OP 0x2a // store word left integer
+#define SW_OP 0x2b // store word integer register
+
+#define SDL_OP 0x2c // store double left integer
+#define SDR_OP 0x2d // store double right integer
+#define SWR_OP 0x2e // store word right integer
+#define CACHE_OP 0x2f // cache operation
+
+#define LL_OP 0x30 // load linked integer register
+#define LWC1_OP 0x31 // load word floating
+#define LWC2_OP 0x32 // load word coprocessor 2
+
+#define LLD_OP 0x34 // load locked double integer
+#define LDC1_OP 0x35 // load word double floating
+#define LDC2_OP 0x36 // load double coprocessor 2
+#define LD_OP 0x37 // load double integer
+
+#define SC_OP 0x38 // store conditional word integer
+#define SWC1_OP 0x39 // store word floating
+#define SWC2_OP 0x3a // store double coprocessor 2
+
+#define SDC_OP 0x3c // store conditional double integer
+#define SDC1_OP 0x3d // store double floating
+#define SDC2_OP 0x3e // store double copreocessor 2
+#define SD_OP 0x3f // store double integer register
+
+//
+// Define special function subopcodes.
+//
+
+#define SLL_OP 0x0 // shift left logical integer
+#define SRL_OP 0x2 // shift right logical integer
+#define SRA_OP 0x3 // shift right arithmetic integer
+
+#define SLLV_OP 0x4 // shift left logical variable integer
+#define SRLV_OP 0x6 // shift right logical variable integer
+#define SRAV_OP 0x7 // shift right arithmetic variable integer
+
+#define JR_OP 0x8 // jump register
+#define JALR_OP 0x9 // jump and link register
+
+#define SYSCALL_OP 0xc // system call trap
+#define BREAK_OP 0xd // breakpoint trap
+
+#define MFHI_OP 0x10 // more from high integer
+#define MTHI_OP 0x11 // move to high integer
+#define MFLO_OP 0x12 // move from low integer
+#define MTLO_OP 0x13 // move to low integer
+
+#define MULT_OP 0x18 // multiply signed integer
+#define MULTU_OP 0x19 // multiply unsigned integer
+#define DIV_OP 0x1a // divide signed integer
+#define DIVU_OP 0x1b // divide unsigned integer
+
+#define ADD_OP 0x20 // add signed integer
+#define ADDU_OP 0x21 // add unsigned integer
+#define SUP_OP 0x22 // subtract signed integer
+#define SUBU_OP 0x23 // subtract unsigned integer
+
+#define AND_OP 0x24 // and integer
+#define OR_OP 0x25 // or integer
+#define XOR_OP 0x26 // exclusive or integer
+#define NOR_OP 0x27 // nor integer
+
+#define SLT_OP 0x2a // set less signed integer
+#define SLTU_OP 0x2b // set less unsigned integer
+
+//
+// Define branch conditional subopcodes.
+//
+
+#define BLTZ_OP 0x0 // branch less that zero integer
+#define BGEZ_OP 0x1 // branch greater than or equal zero integer
+#define BLTZL_OP 0x2 // branch less that zero integer liekly
+#define BGEZL_OP 0x3 // branch greater than or equal zero integer likely
+
+#define BLTZAL_OP 0x10 // branch less than zero integer and link
+#define BGEZAL_OP 0x11 // branch greater than or equal zero integer and link
+#define BLTZALL_OP 0x12 // branch less than zero integer and link likely
+#define BGEZALL_OP 0x13 // branch greater than or equal zero integer and link likely
+
+//
+// Coprocessor branch true and false subfunctions and mask values.
+//
+
+#define COPz_BC_MASK 0x3e10000 // coprocessor z branch condition mask
+#define COPz_BF 0x1000000 // coprocessor z branch false subfunction
+#define COPz_BT 0x1010000 // coprocessor z branch true subfunction
+
+//
+// Define floating coprocessor 1 opcodes.
+//
+
+#define FLOAT_ADD 0 // floating add
+#define FLOAT_SUBTRACT 1 // floating subtract
+#define FLOAT_MULTIPLY 2 // floating multiply
+#define FLOAT_DIVIDE 3 // floating divide
+#define FLOAT_SQUARE_ROOT 4 // floating square root
+#define FLOAT_ABSOLUTE 5 // floating absolute value
+#define FLOAT_MOVE 6 // floating move
+#define FLOAT_NEGATE 7 // floating negate
+
+#define FLOAT_ROUND_QUADWORD 8 // floating round to longword
+#define FLOAT_TRUNC_QUADWORD 9 // floating truncate to longword
+#define FLOAT_CEIL_QUADWORD 10 // floating ceiling
+#define FLOAT_FLOOR_QUADWORD 11 // floating floor
+
+#define FLOAT_ROUND_LONGWORD 12 // floating round to longword
+#define FLOAT_TRUNC_LONGWORD 13 // floating truncate to longword
+#define FLOAT_CEIL_LONGWORD 14 // floating ceiling
+#define FLOAT_FLOOR_LONGWORD 15 // floating floor
+
+#define FLOAT_ILLEGAL 16 // illegal floating opcode
+
+#define FLOAT_COMPARE_SINGLE 17 // floating compare single
+#define FLOAT_COMPARE_DOUBLE 18 // floating compare double
+
+#define FLOAT_CONVERT_SINGLE 32 // floating convert to single
+#define FLOAT_CONVERT_DOUBLE 33 // floating convert to double
+
+#define FLOAT_CONVERT_LONGWORD 36 // floating convert to longword integer
+#define FLOAT_CONVERT_QUADWORD 37 // floating convert to quadword integer
+
+#define FLOAT_COMPARE 48 // starting floating compare code
+
+//
+// Define floating format values.
+//
+
+#define FORMAT_SINGLE 0 // single floating format
+#define FORMAT_DOUBLE 1 // double floating format
+#define FORMAT_LONGWORD 4 // longword integer format
+#define FORMAT_QUADWORD 5 // quadword integer format
+
+//
+// Define jump indirect return address register.
+//
+
+#define JUMP_RA 0x3e00008 // jump indirect return address
+
+//
+// Define maximum and minimum single and double exponent values.
+//
+
+#define DOUBLE_MAXIMUM_EXPONENT 2047
+#define DOUBLE_MINIMUM_EXPONENT 0
+#define SINGLE_MAXIMUM_EXPONENT 255
+#define SINGLE_MINIMUM_EXPONENT 0
+
+//
+// Define single and double exponent bias values.
+//
+
+#define SINGLE_EXPONENT_BIAS 127
+#define DOUBLE_EXPONENT_BIAS 1023
+
+//
+// Define the largest single and double values;
+//
+
+#define DOUBLE_MAXIMUM_VALUE 0x7fefffffffffffff
+#define DOUBLE_MAXIMUM_VALUE_LOW 0xffffffff
+#define DOUBLE_MAXIMUM_VALUE_HIGH 0x7fefffff
+#define SINGLE_MAXIMUM_VALUE 0x7f7fffff
+
+//
+// Define single and double quite and signaling Nan values.
+//
+
+#define DOUBLE_NAN_LOW 0xffffffff
+#define DOUBLE_QUIET_NAN 0x7ff7ffff
+#define DOUBLE_SIGNAL_NAN 0x7fffffff
+#define SINGLE_QUIET_NAN 0x7fbfffff
+#define SINGLE_SIGNAL_NAN 0x7fffffff
+#define DOUBLE_INTEGER_NAN 0x7fffffffffffffff
+#define SINGLE_INTEGER_NAN 0x7fffffff
+
+//
+// Define positive single and double infinity values.
+//
+
+#define DOUBLE_INFINITY_VALUE 0x7ff0000000000000
+#define DOUBLE_INFINITY_VALUE_LOW 0x0
+#define DOUBLE_INFINITY_VALUE_HIGH 0x7ff00000
+#define SINGLE_INFINITY_VALUE 0x7f800000
+
+//
+// Define rounding modes.
+//
+
+#define ROUND_TO_NEAREST 0 // round to nearest representable value
+#define ROUND_TO_ZERO 1 // round toward zero
+#define ROUND_TO_PLUS_INFINITY 2 // round toward plus infinity
+#define ROUND_TO_MINUS_INFINITY 3 // round toward minus infinity
+
+#endif // MIPSINST
diff --git a/public/sdk/inc/mipsxcpt.tab b/public/sdk/inc/mipsxcpt.tab
new file mode 100644
index 000000000..b947eef53
--- /dev/null
+++ b/public/sdk/inc/mipsxcpt.tab
@@ -0,0 +1,2 @@
+__C_specific_handler
+__jump_unwind
diff --git a/public/sdk/inc/mmddk.h b/public/sdk/inc/mmddk.h
new file mode 100644
index 000000000..545bb00e2
--- /dev/null
+++ b/public/sdk/inc/mmddk.h
@@ -0,0 +1,692 @@
+/****************************************************************************/
+/* */
+/* MMDDK.H - Include file for Multimedia Device Development Kit */
+/* */
+/* Note: You must include the WINDOWS.H and MMSYSTEM.H header files */
+/* before including this file. */
+/* */
+/* Copyright (c) 1990-1991, Microsoft Corp. All rights reserved. */
+/* */
+/****************************************************************************/
+
+#ifndef _INC_MMDDK
+#define _INC_MMDDK
+
+#include "pshpack1.h" // Assume byte packing throughout
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* If defined, the following flags inhibit inclusion
+ * of the indicated items:
+ *
+ * MMNOMIDIDEV - MIDI support
+ * MMNOWAVEDEV - Waveform support
+ * MMNOAUXDEV - Auxiliary output support
+ * MMNOMIXERDEV - Mixer support
+ * MMNOTIMERDEV - Timer support
+ * MMNOJOYDEV - Joystick support
+ * MMNOMCIDEV - MCI support
+ * MMNOTASKDEV - Task support
+ */
+#ifdef MMNOTIMER
+ #define MMNOTIMERDEV
+#endif
+#ifdef MMNOWAVE
+ #define MMNOWAVEDEV
+#endif
+#ifdef MMNOMIDI
+ #define MMNOMIDIDEV
+#endif
+#ifdef MMNOAUX
+ #define MMNOAUXDEV
+#endif
+#ifdef MMNOJOY
+ #define MMNOJOYDEV
+#endif
+#ifdef MMNOMMIO
+ #define MMNOMMIODEV
+#endif
+#ifdef MMNOMCI
+ #define MMNOMCIDEV
+#endif
+
+
+/***************************************************************************
+
+ Helper functions for drivers
+
+***************************************************************************/
+
+#ifndef NODRIVERS
+#define DRV_LOAD 0x0001
+#define DRV_ENABLE 0x0002
+#define DRV_OPEN 0x0003
+#define DRV_CLOSE 0x0004
+#define DRV_DISABLE 0x0005
+#define DRV_FREE 0x0006
+#define DRV_CONFIGURE 0x0007
+#define DRV_QUERYCONFIGURE 0x0008
+#define DRV_INSTALL 0x0009
+#define DRV_REMOVE 0x000A
+
+#define DRV_RESERVED 0x0800
+#define DRV_USER 0x4000
+
+#define DRIVERS_SECTION TEXT("DRIVERS32") // Section name for installed drivers
+#define MCI_SECTION TEXT("MCI32") // Section name for installed MCI drivers
+
+#endif /* !NODRIVERS */
+
+#define DCB_NOSWITCH 0x0008 // don't switch stacks for callback
+#define DCB_TYPEMASK 0x0007 // callback type mask
+#define DCB_NULL 0x0000 // unknown callback type
+
+// flags for wFlags parameter of DriverCallback()
+#define DCB_WINDOW 0x0001 // dwCallback is a HWND
+#define DCB_TASK 0x0002 // dwCallback is a HTASK
+#define DCB_FUNCTION 0x0003 // dwCallback is a FARPROC
+#define DCB_EVENT 0x0005 // dwCallback is an EVENT
+
+BOOL APIENTRY DriverCallback(DWORD dwCallback, DWORD dwFlags,
+ HDRVR hDevice, DWORD dwMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
+
+// generic prototype for audio device driver entry-point functions
+// midMessage(), modMessage(), widMessage(), wodMessage(), auxMessage()
+//typedef DWORD (SOUNDDEVMSGPROC)(WORD, WORD, DWORD, DWORD, DWORD);
+//typedef SOUNDDEVMSGPROC FAR *LPSOUNDDEVMSGPROC;
+
+#define DRVM_INIT 100
+
+// message base for driver specific messages.
+//
+#define DRVM_MAPPER 0x2000
+#define DRVM_USER 0x4000
+#define DRVM_MAPPER_STATUS (DRVM_MAPPER+0)
+#define DRVM_MAPPER_RECONFIGURE (DRVM_MAPPER+1)
+
+#define DRV_QUERYDRVENTRY (DRV_RESERVED + 1) /* ;Internal*/
+#define DRV_QUERYDEVNODE (DRV_RESERVED + 2) /* ;Internal*/
+#define DRV_QUERYNAME (DRV_RESERVED + 3) /* ;Internal*/
+#define DRV_QUERYDRIVERIDS (DRV_RESERVED + 4) /* ;Internal*/
+#define DRV_QUERYMAPPABLE (DRV_RESERVED + 5) /* ;Internal*/
+#define DRV_QUERYMAPID (DRV_RESERVED + 6) /* ;Internal*/
+#define DRV_QUERYNUMPORTS (DRV_RESERVED + 8) /* ;Internal*/
+#define DRV_QUERYMODULE (DRV_RESERVED + 9)
+#define DRV_QUERYFILENAME (DRV_RESERVED + 10) /* ;Internal*/
+#define DRV_PNPINSTALL (DRV_RESERVED + 11)
+
+
+
+//
+// messages that have IOCTL format
+// dw1 = NULL or handle
+// dw2 = NULL or ptr to DRVM_IOCTL_DATA
+// return is MMRESULT
+//
+#define DRVM_IOCTL 0x100
+#define DRVM_ADD_THRU (DRVM_IOCTL+1)
+#define DRVM_REMOVE_THRU (DRVM_IOCTL+2)
+#define DRVM_IOCTL_LAST (DRVM_IOCTL+5)
+
+typedef struct {
+ DWORD dwSize; // size of this structure (inclusive)
+ DWORD dwCmd; // IOCTL command code, 0x80000000 and above reserved for system
+ } DRVM_IOCTL_DATA, FAR * LPDRVM_IOCTL_DATA;
+
+// command code ranges for dwCmd field of DRVM_IOCTL message
+// codes from 0 to 0x7FFFFFFF are user defined
+// codes from 0x80000000 to 0xFFFFFFFF are reserved for future
+// definition by microsoft
+//
+#define DRVM_IOCTL_CMD_USER 0x00000000L
+#define DRVM_IOCTL_CMD_SYSTEM 0x80000000L
+
+// device ID for 386 AUTODMA VxD
+#define VADMAD_Device_ID 0X0444
+
+#ifndef MMNOWAVEDEV
+/****************************************************************************
+
+ Waveform device driver support
+
+****************************************************************************/
+
+// maximum number of wave device drivers loaded
+#ifndef NOWIN31
+#define MAXWAVEDRIVERS 10
+#else
+#define MAXWAVEDRIVERS 4
+#endif
+
+
+// waveform input and output device open information structure
+typedef struct waveopendesc_tag {
+ HWAVE hWave; // handle
+ LPWAVEFORMAT lpFormat; // format of wave data
+ DWORD dwCallback; // callback
+ DWORD dwInstance; // app's private instance information
+ UINT uMappedDeviceID; // device to map to if WAVE_MAPPED set
+} WAVEOPENDESC;
+typedef WAVEOPENDESC FAR *LPWAVEOPENDESC;
+
+// messages sent to wodMessage() entry-point function
+#define WODM_GETNUMDEVS 3
+#define WODM_GETDEVCAPS 4
+#define WODM_OPEN 5
+#define WODM_CLOSE 6
+#define WODM_PREPARE 7
+#define WODM_UNPREPARE 8
+#define WODM_WRITE 9
+#define WODM_PAUSE 10
+#define WODM_RESTART 11
+#define WODM_RESET 12
+#define WODM_GETPOS 13
+#define WODM_GETPITCH 14
+#define WODM_SETPITCH 15
+#define WODM_GETVOLUME 16
+#define WODM_SETVOLUME 17
+#define WODM_GETPLAYBACKRATE 18
+#define WODM_SETPLAYBACKRATE 19
+#define WODM_BREAKLOOP 20
+// #if (WINVER >= 0x030B)
+#define WODM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
+#define WAVEOUT_MAPPER_STATUS_DEVICE 0
+#define WAVEOUT_MAPPER_STATUS_MAPPED 1
+#define WAVEOUT_MAPPER_STATUS_FORMAT 2
+// #endif /* WINVER >= 0x030B */
+#define WODM_BUSY 21
+
+// messages sent to widMessage() entry-point function
+#define WIDM_GETNUMDEVS 50
+#define WIDM_GETDEVCAPS 51
+#define WIDM_OPEN 52
+#define WIDM_CLOSE 53
+#define WIDM_PREPARE 54
+#define WIDM_UNPREPARE 55
+#define WIDM_ADDBUFFER 56
+#define WIDM_START 57
+#define WIDM_STOP 58
+#define WIDM_RESET 59
+#define WIDM_GETPOS 60
+// #if (WINVER >= 0x030B)
+#define WIDM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
+#define WAVEIN_MAPPER_STATUS_DEVICE 0
+#define WAVEIN_MAPPER_STATUS_MAPPED 1
+#define WAVEIN_MAPPER_STATUS_FORMAT 2
+// #endif /* WINVER >= 0x30B */
+
+#endif // ifndef MMNOWAVEDEV
+
+
+#ifndef MMNOMIDIDEV
+/****************************************************************************
+
+ MIDI device driver support
+
+****************************************************************************/
+
+// maximum number of MIDI device drivers loaded
+#ifndef NOWIN31
+#define MAXMIDIDRIVERS 10
+#else
+#define MAXMIDIDRIVERS 4
+#endif
+
+#define MODM_USER DRVM_USER
+#define MIDM_USER DRVM_USER
+#define MODM_MAPPER DRVM_MAPPER
+#define MIDM_MAPPER DRVM_MAPPER
+
+#define MODM_INIT DRVM_INIT
+#define MIDM_INIT DRVM_INIT
+
+#ifndef MMNOMIDI // This protects the definition of HMIDI in WINMM.H
+ // Win 3.1 works the same way
+typedef struct midiopenstrmid_tag {
+ DWORD dwStreamID;
+ UINT uDeviceID;
+} MIDIOPENSTRMID;
+// MIDI input and output device open information structure
+typedef struct midiopendesc_tag {
+ HMIDI hMidi; // handle
+ DWORD dwCallback; // callback
+ DWORD dwInstance; // app's private instance information
+ DWORD cIds; // If stream open, # stream ids
+ MIDIOPENSTRMID rgIds[1]; // Array of device ID's (actually [cIds])
+} MIDIOPENDESC;
+typedef MIDIOPENDESC FAR *LPMIDIOPENDESC;
+#endif // MMNOMIDI
+
+
+/* Flags for MODM_OPEN */
+#define MIDI_IO_PACKED 0x00000000L /* Compatibility mode */
+#define MIDI_IO_COOKED 0x00000002L
+
+// messages sent to modMessage() entry-point function
+#define MODM_GETNUMDEVS 1
+#define MODM_GETDEVCAPS 2
+#define MODM_OPEN 3
+#define MODM_CLOSE 4
+#define MODM_PREPARE 5
+#define MODM_UNPREPARE 6
+#define MODM_DATA 7
+#define MODM_LONGDATA 8
+#define MODM_RESET 9
+#define MODM_GETVOLUME 10
+#define MODM_SETVOLUME 11
+#define MODM_CACHEPATCHES 12
+#define MODM_CACHEDRUMPATCHES 13
+
+#if (WINVER >= 0x400)
+#define MODM_STRMDATA 14
+#define MODM_GETPOS 17
+#define MODM_PAUSE 18
+#define MODM_RESTART 19
+#define MODM_STOP 20
+#define MODM_PROPERTIES 21
+#define MODM_RECONFIGURE (MODM_USER+0x0768)
+#endif
+
+
+// messages sent to midMessage() entry-point function
+#define MIDM_GETNUMDEVS 53
+#define MIDM_GETDEVCAPS 54
+#define MIDM_OPEN 55
+#define MIDM_CLOSE 56
+#define MIDM_PREPARE 57
+#define MIDM_UNPREPARE 58
+#define MIDM_ADDBUFFER 59
+#define MIDM_START 60
+#define MIDM_STOP 61
+#define MIDM_RESET 62
+
+#endif // ifndef MMNOMIDIDEV
+
+
+#ifndef MMNOAUXDEV
+/****************************************************************************
+
+ Auxiliary audio device driver support
+
+****************************************************************************/
+
+// maximum number of auxiliary device drivers loaded
+#ifndef NOWIN31
+#define MAXAUXDRIVERS 10
+#else
+#define MAXAUXDRIVERS 4
+#endif
+
+// messages sent to auxMessage() entry-point function
+#define AUXDM_GETNUMDEVS 3
+#define AUXDM_GETDEVCAPS 4
+#define AUXDM_GETVOLUME 5
+#define AUXDM_SETVOLUME 6
+
+#endif // ifndef MMNOAUXDEV
+
+// #if (WINVER >= 0x030B)
+#ifndef MMNOMIXERDEV
+
+#ifndef MAXMIXERDRIVERS
+
+//
+// maximum number of mixer drivers that can be loaded by MSMIXMGR.DLL
+//
+#define MAXMIXERDRIVERS 10
+
+
+//
+// mixer device open information structure
+//
+//
+typedef struct tMIXEROPENDESC
+{
+ HMIXER hmx; // handle that will be used
+ LPVOID pReserved0; // reserved--driver should ignore
+ DWORD dwCallback; // callback
+ DWORD dwInstance; // app's private instance information
+
+} MIXEROPENDESC, *PMIXEROPENDESC, FAR *LPMIXEROPENDESC;
+
+
+
+//
+//
+//
+//
+#define MXDM_INIT 100
+#define MXDM_USER DRV_USER
+
+#define MXDM_BASE (1)
+#define MXDM_GETNUMDEVS (MXDM_BASE + 0)
+#define MXDM_GETDEVCAPS (MXDM_BASE + 1)
+#define MXDM_OPEN (MXDM_BASE + 2)
+#define MXDM_CLOSE (MXDM_BASE + 3)
+#define MXDM_GETLINEINFO (MXDM_BASE + 4)
+#define MXDM_GETLINECONTROLS (MXDM_BASE + 5)
+#define MXDM_GETCONTROLDETAILS (MXDM_BASE + 6)
+#define MXDM_SETCONTROLDETAILS (MXDM_BASE + 7)
+
+#endif // MAXMIXERDRIVERS
+
+#endif // MMNOMIXERDEV
+// #endif /* ifdef WINVER >= 0x030B */
+
+#if !defined(MMNOTIMERDEV)
+/****************************************************************************
+
+ Timer device driver support
+
+****************************************************************************/
+
+typedef struct timerevent_tag {
+ WORD wDelay; // delay required
+ WORD wResolution; // resolution required
+ LPTIMECALLBACK lpFunction; // ptr to callback function
+ DWORD dwUser; // user DWORD
+ WORD wFlags; // defines how to program event
+ WORD wReserved1; // structure packing
+} TIMEREVENT;
+typedef TIMEREVENT FAR *LPTIMEREVENT;
+
+// messages sent to tddMessage() function
+#define TDD_KILLTIMEREVENT (DRV_RESERVED+0) // indices into a table of
+#define TDD_SETTIMEREVENT (DRV_RESERVED+4) // functions; thus offset by
+#define TDD_GETSYSTEMTIME (DRV_RESERVED+8) // four each time...
+#define TDD_GETDEVCAPS (DRV_RESERVED+12) // room for future expansion
+#define TDD_BEGINMINPERIOD (DRV_RESERVED+16) // room for future expansion
+#define TDD_ENDMINPERIOD (DRV_RESERVED+20) // room for future expansion
+
+#endif // ifndef MMNOTIMERDEV
+
+
+#ifndef MMNOJOYDEV
+/****************************************************************************
+
+ Joystick device driver support
+
+****************************************************************************/
+
+/* RegisterWindowMessage with this to get msg id of config changes */
+#define JOY_CONFIGCHANGED_MSGSTRING "MSJSTICK_VJOYD_MSGSTR"
+
+/* pre-defined joystick types */
+#define JOY_HW_NONE 0
+#define JOY_HW_CUSTOM 1
+#define JOY_HW_2A_2B_GENERIC 2
+#define JOY_HW_2A_4B_GENERIC 3
+#define JOY_HW_2B_GAMEPAD 4
+#define JOY_HW_2B_FLIGHTYOKE 5
+#define JOY_HW_2B_FLIGHTYOKETHROTTLE 6
+#define JOY_HW_3A_2B_GENERIC 7
+#define JOY_HW_3A_4B_GENERIC 8
+#define JOY_HW_4B_GAMEPAD 9
+#define JOY_HW_4B_FLIGHTYOKE 10
+#define JOY_HW_4B_FLIGHTYOKETHROTTLE 11
+#define JOY_HW_LASTENTRY 12
+
+/* calibration flags */
+#define JOY_ISCAL_XY 0x00000001l /* XY are calibrated */
+#define JOY_ISCAL_Z 0x00000002l /* Z is calibrated */
+#define JOY_ISCAL_R 0x00000004l /* R is calibrated */
+#define JOY_ISCAL_U 0x00000008l /* U is calibrated */
+#define JOY_ISCAL_V 0x00000010l /* V is calibrated */
+#define JOY_ISCAL_POV 0x00000020l /* POV is calibrated */
+
+/* point of view constants */
+#define JOY_POV_NUMDIRS 4
+#define JOY_POVVAL_FORWARD 0
+#define JOY_POVVAL_BACKWARD 1
+#define JOY_POVVAL_LEFT 2
+#define JOY_POVVAL_RIGHT 3
+
+/* Specific settings for joystick hardware */
+#define JOY_HWS_HASZ 0x00000001l /* has Z info? */
+#define JOY_HWS_HASPOV 0x00000002l /* point of view hat present */
+#define JOY_HWS_POVISBUTTONCOMBOS 0x00000004l /* pov done through combo of buttons */
+#define JOY_HWS_POVISPOLL 0x00000008l /* pov done through polling */
+#define JOY_HWS_ISYOKE 0x00000010l /* joystick is a flight yoke */
+#define JOY_HWS_ISGAMEPAD 0x00000020l /* joystick is a game pad */
+#define JOY_HWS_ISCARCTRL 0x00000040l /* joystick is a car controller */
+/* X defaults to J1 X axis */
+#define JOY_HWS_XISJ1Y 0x00000080l /* X is on J1 Y axis */
+#define JOY_HWS_XISJ2X 0x00000100l /* X is on J2 X axis */
+#define JOY_HWS_XISJ2Y 0x00000200l /* X is on J2 Y axis */
+/* Y defaults to J1 Y axis */
+#define JOY_HWS_YISJ1X 0x00000400l /* Y is on J1 X axis */
+#define JOY_HWS_YISJ2X 0x00000800l /* Y is on J2 X axis */
+#define JOY_HWS_YISJ2Y 0x00001000l /* Y is on J2 Y axis */
+/* Z defaults to J2 Y axis */
+#define JOY_HWS_ZISJ1X 0x00002000l /* Z is on J1 X axis */
+#define JOY_HWS_ZISJ1Y 0x00004000l /* Z is on J1 Y axis */
+#define JOY_HWS_ZISJ2X 0x00008000l /* Z is on J2 X axis */
+/* POV defaults to J2 Y axis, if it is not button based */
+#define JOY_HWS_POVISJ1X 0x00010000l /* pov done through J1 X axis */
+#define JOY_HWS_POVISJ1Y 0x00020000l /* pov done through J1 Y axis */
+#define JOY_HWS_POVISJ2X 0x00040000l /* pov done through J2 X axis */
+/* R defaults to J2 X axis */
+#define JOY_HWS_HASR 0x00080000l /* has R (4th axis) info */
+#define JOY_HWS_RISJ1X 0x00100000l /* R done through J1 X axis */
+#define JOY_HWS_RISJ1Y 0x00200000l /* R done through J1 Y axis */
+#define JOY_HWS_RISJ2Y 0x00400000l /* R done through J2 X axis */
+/* U & V for future hardware */
+#define JOY_HWS_HASU 0x00800000l /* has U (5th axis) info */
+#define JOY_HWS_HASV 0x01000000l /* has V (6th axis) info */
+
+/* Usage settings */
+#define JOY_US_HASRUDDER 0x00000001l /* joystick configured with rudder */
+#define JOY_US_PRESENT 0x00000002l /* is joystick actually present? */
+#define JOY_US_ISOEM 0x00000004l /* joystick is an OEM defined type */
+
+/* struct for storing x,y, z, and rudder values */
+typedef struct joypos_tag {
+ DWORD dwX;
+ DWORD dwY;
+ DWORD dwZ;
+ DWORD dwR;
+ DWORD dwU;
+ DWORD dwV;
+} JOYPOS, FAR *LPJOYPOS;
+
+/* struct for storing ranges */
+typedef struct joyrange_tag {
+ JOYPOS jpMin;
+ JOYPOS jpMax;
+ JOYPOS jpCenter;
+} JOYRANGE,FAR *LPJOYRANGE;
+
+typedef struct joyreguservalues_tag {
+ DWORD dwTimeOut; /* value at which to timeout joystick polling */
+ JOYRANGE jrvRanges; /* range of values app wants returned for axes */
+ JOYPOS jpDeadZone; /* area around center to be considered
+ as "dead". specified as a percentage
+ (0-100). Only X & Y handled by system driver */
+} JOYREGUSERVALUES, FAR *LPJOYREGUSERVALUES;
+
+typedef struct joyreghwsettings_tag {
+ DWORD dwFlags;
+ DWORD dwNumButtons; /* number of buttons */
+} JOYREGHWSETTINGS, FAR *LPJOYHWSETTINGS;
+
+/* range of values returned by the hardware (filled in by calibration) */
+typedef struct joyreghwvalues_tag {
+ JOYRANGE jrvHardware; /* values returned by hardware */
+ DWORD dwPOVValues[JOY_POV_NUMDIRS];/* POV values returned by hardware */
+ DWORD dwCalFlags; /* what has been calibrated */
+} JOYREGHWVALUES, FAR *LPJOYREGHWVALUES;
+
+/* hardware configuration */
+typedef struct joyreghwconfig_tag {
+ JOYREGHWSETTINGS hws; /* hardware settings */
+ DWORD dwUsageSettings;/* usage settings */
+ JOYREGHWVALUES hwv; /* values returned by hardware */
+ DWORD dwType; /* type of joystick */
+ DWORD dwReserved; /* reserved for OEM drivers */
+} JOYREGHWCONFIG, FAR *LPJOYREGHWCONFIG;
+
+// joystick calibration info structure
+typedef struct joycalibrate_tag {
+ WORD wXbase;
+ WORD wXdelta;
+ WORD wYbase;
+ WORD wYdelta;
+ WORD wZbase;
+ WORD wZdelta;
+} JOYCALIBRATE;
+typedef JOYCALIBRATE FAR *LPJOYCALIBRATE;
+
+// prototype for joystick message function
+typedef DWORD (JOYDEVMSGPROC)(DWORD, UINT, LONG, LONG);
+typedef JOYDEVMSGPROC FAR *LPJOYDEVMSGPROC;
+
+// messages sent to joystick driver's DriverProc() function
+#define JDD_GETNUMDEVS (DRV_RESERVED + 0x0001)
+#define JDD_GETDEVCAPS (DRV_RESERVED + 0x0002)
+#define JDD_GETPOS (DRV_RESERVED + 0x0101)
+#define JDD_SETCALIBRATION (DRV_RESERVED + 0x0102)
+#define JDD_CONFIGCHANGED (DRV_RESERVED + 0x0103)
+#define JDD_GETPOSEX (DRV_RESERVED + 0x0104)
+
+#endif // ifndef MMNOJOYDEV
+
+#ifndef MAKELRESULT
+#define MAKELRESULT(low, high) ((LRESULT)MAKELONG(low, high))
+#endif//MAKELRESULT
+
+
+#ifndef MMNOMCIDEV
+/****************************************************************************
+
+ MCI device driver support
+
+****************************************************************************/
+
+
+// internal MCI messages
+#define MCI_OPEN_DRIVER 0x0801
+#define MCI_CLOSE_DRIVER 0x0802
+
+#define MAKEMCIRESOURCE(wRet, wRes) MAKELRESULT((wRet), (wRes))
+
+// string return values only used with MAKEMCIRESOURCE
+#define MCI_FALSE (MCI_STRING_OFFSET + 19)
+#define MCI_TRUE (MCI_STRING_OFFSET + 20)
+
+// resource string return values
+#define MCI_FORMAT_RETURN_BASE MCI_FORMAT_MILLISECONDS_S
+#define MCI_FORMAT_MILLISECONDS_S (MCI_STRING_OFFSET + 21)
+#define MCI_FORMAT_HMS_S (MCI_STRING_OFFSET + 22)
+#define MCI_FORMAT_MSF_S (MCI_STRING_OFFSET + 23)
+#define MCI_FORMAT_FRAMES_S (MCI_STRING_OFFSET + 24)
+#define MCI_FORMAT_SMPTE_24_S (MCI_STRING_OFFSET + 25)
+#define MCI_FORMAT_SMPTE_25_S (MCI_STRING_OFFSET + 26)
+#define MCI_FORMAT_SMPTE_30_S (MCI_STRING_OFFSET + 27)
+#define MCI_FORMAT_SMPTE_30DROP_S (MCI_STRING_OFFSET + 28)
+#define MCI_FORMAT_BYTES_S (MCI_STRING_OFFSET + 29)
+#define MCI_FORMAT_SAMPLES_S (MCI_STRING_OFFSET + 30)
+#define MCI_FORMAT_TMSF_S (MCI_STRING_OFFSET + 31)
+
+#define MCI_VD_FORMAT_TRACK_S (MCI_VD_OFFSET + 5)
+
+#define WAVE_FORMAT_PCM_S (MCI_WAVE_OFFSET + 0)
+#define WAVE_MAPPER_S (MCI_WAVE_OFFSET + 1)
+
+#define MCI_SEQ_MAPPER_S (MCI_SEQ_OFFSET + 5)
+#define MCI_SEQ_FILE_S (MCI_SEQ_OFFSET + 6)
+#define MCI_SEQ_MIDI_S (MCI_SEQ_OFFSET + 7)
+#define MCI_SEQ_SMPTE_S (MCI_SEQ_OFFSET + 8)
+#define MCI_SEQ_FORMAT_SONGPTR_S (MCI_SEQ_OFFSET + 9)
+#define MCI_SEQ_NONE_S (MCI_SEQ_OFFSET + 10)
+#define MIDIMAPPER_S (MCI_SEQ_OFFSET + 11)
+
+#define MCI_TABLE_NOT_PRESENT ((UINT)-1)
+// parameters for internal version of MCI_OPEN message sent from
+// mciOpenDevice() to the driver
+typedef struct {
+ MCIDEVICEID wDeviceID; // device ID
+ LPCWSTR lpstrParams; // parameter string for entry in SYSTEM.INI
+ UINT wCustomCommandTable; // custom command table ((-1) if none)
+ // filled in by the driver
+ UINT wType; // driver type
+ // filled in by the driver
+} MCI_OPEN_DRIVER_PARMS;
+typedef MCI_OPEN_DRIVER_PARMS FAR * LPMCI_OPEN_DRIVER_PARMS;
+
+// maximum length of an MCI device type
+#define MCI_MAX_DEVICE_TYPE_LENGTH 80
+
+// flags for mciSendCommandInternal() which direct mciSendString() how to
+// interpret the return value
+#define MCI_RESOURCE_RETURNED 0x00010000 // resource ID
+#define MCI_COLONIZED3_RETURN 0x00020000 // colonized ID, 3 bytes data
+#define MCI_COLONIZED4_RETURN 0x00040000 // colonized ID, 4 bytes data
+#define MCI_INTEGER_RETURNED 0x00080000 // integer conversion needed
+#define MCI_RESOURCE_DRIVER 0x00100000 // driver owns returned resource
+
+// invalid command table ID
+#define MCI_NO_COMMAND_TABLE ((UINT)(-1))
+
+// command table information type tags
+#define MCI_COMMAND_HEAD 0
+#define MCI_STRING 1
+#define MCI_INTEGER 2
+#define MCI_END_COMMAND 3
+#define MCI_RETURN 4
+#define MCI_FLAG 5
+#define MCI_END_COMMAND_LIST 6
+#define MCI_RECT 7
+#define MCI_CONSTANT 8
+#define MCI_END_CONSTANT 9
+#define MCI_HWND 10
+#define MCI_HPAL 11
+#define MCI_HDC 12
+
+// function prototypes for MCI driver functions
+DWORD APIENTRY mciGetDriverData(MCIDEVICEID wDeviceID);
+BOOL APIENTRY mciSetDriverData(MCIDEVICEID wDeviceID, DWORD dwData);
+UINT APIENTRY mciDriverYield (MCIDEVICEID wDeviceID);
+BOOL APIENTRY mciDriverNotify (HANDLE hwndCallback, MCIDEVICEID wDeviceID,
+ UINT uStatus);
+UINT APIENTRY mciLoadCommandResource(HANDLE hInstance,
+ LPCWSTR lpResName, UINT wType);
+BOOL APIENTRY mciFreeCommandResource(UINT wTable);
+
+#endif // ifndef MMNOMCIDEV
+
+
+#ifndef MMNOTASKDEV
+/*****************************************************************************
+
+ Task support
+
+*****************************************************************************/
+
+// error return values
+#define TASKERR_NOTASKSUPPORT 1
+#define TASKERR_OUTOFMEMORY 2
+
+// task support function prototypes
+typedef VOID (TASKCALLBACK) (DWORD dwInst);
+
+typedef TASKCALLBACK FAR *LPTASKCALLBACK;
+
+UINT APIENTRY mmTaskCreate(LPTASKCALLBACK lpfn, HANDLE FAR * lph, DWORD dwInst);
+VOID APIENTRY mmTaskBlock(DWORD h);
+BOOL APIENTRY mmTaskSignal(DWORD h);
+VOID APIENTRY mmTaskYield(VOID);
+DWORD APIENTRY mmGetCurrentTask(VOID);
+
+#endif // endif MMNOTASKDEV
+
+#define MMDDKINC
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#include "poppack.h" /* Revert to default packing */
+
+#endif /* _INC_MMDDK */
diff --git a/public/sdk/inc/mmreg.h b/public/sdk/inc/mmreg.h
new file mode 100644
index 000000000..26a63be3a
--- /dev/null
+++ b/public/sdk/inc/mmreg.h
@@ -0,0 +1,1638 @@
+/****************************************************************************
+ *
+ * mmreg.h - Registered Multimedia Information Public Header File
+ *
+ * Copyright (c) 1991-1995 Microsoft Corporation. All Rights Reserved.
+ *
+ * Multimedia Registration
+ *
+ * Place this system include file in your INCLUDE path with the Windows SDK
+ * include files.
+ *
+ * Obtain the Multimedia Developer Registration Kit from Compuserve in WINMM mrdk.zip.
+ * Please send applications and corrections to
+ *
+ * Heidi Breslauer
+ * Microsoft Corporation
+ * Multimedia Technology Group
+ * One Microsoft Way
+ * Redmond, WA 98052-6399
+ *
+ * Developer Services:
+ * 800-227-4679 x11771
+ *
+ * Last Update: 04/05/94 *
+ ***************************************************************************/
+
+// Define the following to skip definitions
+//
+// NOMMIDS Multimedia IDs are not defined
+// NONEWWAVE No new waveform types are defined except WAVEFORMATEX
+// NONEWRIFF No new RIFF forms are defined
+// NOJPEGDIB No JPEG DIB definitions
+// NONEWIC No new Image Compressor types are defined
+// NOBITMAP No extended bitmap info header definition
+
+#ifndef _INC_MMREG
+/* use version number to verify compatibility */
+#define _INC_MMREG 144 // version * 100 + revision
+
+#ifndef RC_INVOKED
+//current chicago line#pragma pack(1) /* Assume byte packing throughout */
+#include "pshpack1.h" /* Assume byte packing throughout */
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+#ifndef NOMMIDS
+
+/* manufacturer IDs */
+#ifndef MM_MICROSOFT
+#define MM_MICROSOFT 1 /* Microsoft Corporation */
+#endif
+
+#define MM_CREATIVE 2 /* Creative Labs, Inc */
+#define MM_MEDIAVISION 3 /* Media Vision, Inc. */
+#define MM_FUJITSU 4 /* Fujitsu Corp. */
+#define MM_ARTISOFT 20 /* Artisoft, Inc. */
+#define MM_TURTLE_BEACH 21 /* Turtle Beach, Inc. */
+#define MM_IBM 22 /* IBM Corporation */
+#define MM_VOCALTEC 23 /* Vocaltec LTD. */
+#define MM_ROLAND 24 /* Roland */
+#define MM_DSP_SOLUTIONS 25 /* DSP Solutions, Inc. */
+#define MM_NEC 26 /* NEC */
+#define MM_ATI 27 /* ATI */
+#define MM_WANGLABS 28 /* Wang Laboratories, Inc */
+#define MM_TANDY 29 /* Tandy Corporation */
+#define MM_VOYETRA 30 /* Voyetra */
+#define MM_ANTEX 31 /* Antex Electronics Corporation */
+#define MM_ICL_PS 32 /* ICL Personal Systems */
+#define MM_INTEL 33 /* Intel Corporation */
+#define MM_GRAVIS 34 /* Advanced Gravis */
+#define MM_VAL 35 /* Video Associates Labs, Inc. */
+#define MM_INTERACTIVE 36 /* InterActive Inc */
+#define MM_YAMAHA 37 /* Yamaha Corporation of America */
+#define MM_EVEREX 38 /* Everex Systems, Inc */
+#define MM_ECHO 39 /* Echo Speech Corporation */
+#define MM_SIERRA 40 /* Sierra Semiconductor Corp */
+#define MM_CAT 41 /* Computer Aided Technologies */
+#define MM_APPS 42 /* APPS Software International */
+#define MM_DSP_GROUP 43 /* DSP Group, Inc */
+#define MM_MELABS 44 /* microEngineering Labs */
+#define MM_COMPUTER_FRIENDS 45 /* Computer Friends, Inc. */
+#define MM_ESS 46 /* ESS Technology */
+#define MM_AUDIOFILE 47 /* Audio, Inc. */
+#define MM_MOTOROLA 48 /* Motorola, Inc. */
+#define MM_CANOPUS 49 /* Canopus, co., Ltd. */
+#define MM_EPSON 50 /* Seiko Epson Corporation */
+#define MM_TRUEVISION 51 /* Truevision */
+#define MM_AZTECH 52 /* Aztech Labs, Inc. */
+#define MM_VIDEOLOGIC 53 /* Videologic */
+#define MM_SCALACS 54 /* SCALACS */
+#define MM_KORG 55 /* Toshihiko Okuhura, Korg Inc. */
+#define MM_APT 56 /* Audio Processing Technology */
+#define MM_ICS 57 /* Integrated Circuit Systems, Inc. */
+#define MM_ITERATEDSYS 58 /* Iterated Systems, Inc. */
+#define MM_METHEUS 59 /* Metheus */
+#define MM_LOGITECH 60 /* Logitech, Inc. */
+#define MM_WINNOV 61 /* Winnov, Inc. */
+#define MM_NCR 62 /* NCR Corporation */
+#define MM_EXAN 63 /* EXAN */
+#define MM_AST 64 /* AST Research Inc. */
+#define MM_WILLOWPOND 65 /* Willow Pond Corporation */
+#define MM_SONICFOUNDRY 66 /* Sonic Foundry */
+#define MM_VITEC 67 /* Vitec Multimedia */
+#define MM_MOSCOM 68 /* MOSCOM Corporation */
+#define MM_SILICONSOFT 69 /* Silicon Soft, Inc. */
+#define MM_SUPERMAC 73 /* Supermac */
+#define MM_AUDIOPT 74 /* Audio Processing Technology */
+#define MM_SPEECHCOMP 76 /* Speech Compression */
+#define MM_DOLBY 78 /* Dolby Laboratories */
+#define MM_OKI 79 /* OKI */
+#define MM_AURAVISION 80 /* AuraVision Corporation */
+#define MM_OLIVETTI 81 /* Olivetti */
+#define MM_IOMAGIC 82 /* I/O Magic Corporation */
+#define MM_MATSUSHITA 83 /* Matsushita Electric Industrial Co., LTD. */
+#define MM_CONTROLRES 84 /* Control Resources Limited */
+#define MM_XEBEC 85 /* Xebec Multimedia Solutions Limited */
+#define MM_NEWMEDIA 86 /* New Media Corporation */
+#define MM_NMS 87 /* Natural MicroSystems */
+#define MM_LYRRUS 88 /* Lyrrus Inc. */
+#define MM_COMPUSIC 89 /* Compusic */
+#define MM_OPTI 90 /* OPTi Computers Inc. */
+#define MM_DIALOGIC 93 /* Dialogic Corporation */
+
+/* MM_MICROSOFT product IDs */
+
+#ifndef MM_MIDI_MAPPER
+
+#define MM_MIDI_MAPPER 1 /* Midi Mapper */
+#define MM_WAVE_MAPPER 2 /* Wave Mapper */
+#define MM_SNDBLST_MIDIOUT 3 /* Sound Blaster MIDI output port */
+#define MM_SNDBLST_MIDIIN 4 /* Sound Blaster MIDI input port */
+#define MM_SNDBLST_SYNTH 5 /* Sound Blaster internal synth */
+#define MM_SNDBLST_WAVEOUT 6 /* Sound Blaster waveform output */
+#define MM_SNDBLST_WAVEIN 7 /* Sound Blaster waveform input */
+#define MM_ADLIB 9 /* Ad Lib Compatible synth */
+#define MM_MPU401_MIDIOUT 10 /* MPU 401 compatible MIDI output port */
+#define MM_MPU401_MIDIIN 11 /* MPU 401 compatible MIDI input port */
+#define MM_PC_JOYSTICK 12 /* Joystick adapter */
+
+#endif
+
+#define MM_PCSPEAKER_WAVEOUT 13 /* PC speaker waveform output */
+#define MM_MSFT_WSS_WAVEIN 14 /* MS Audio Board waveform input */
+#define MM_MSFT_WSS_WAVEOUT 15 /* MS Audio Board waveform output */
+#define MM_MSFT_WSS_FMSYNTH_STEREO 16 /* MS Audio Board Stereo FM synth */
+#define MM_MSFT_WSS_MIXER 17 /* MS Audio Board Mixer Driver */
+#define MM_MSFT_WSS_OEM_WAVEIN 18 /* MS OEM Audio Board waveform input */
+#define MM_MSFT_WSS_OEM_WAVEOUT 19 /* MS OEM Audio Board waveform output */
+#define MM_MSFT_WSS_OEM_FMSYNTH_STEREO 20 /* MS OEM Audio Board Stereo FM Synth */
+#define MM_MSFT_WSS_AUX 21 /* MS Audio Board Aux. Port */
+#define MM_MSFT_WSS_OEM_AUX 22 /* MS OEM Audio Aux Port */
+#define MM_MSFT_GENERIC_WAVEIN 23 /* MS Vanilla driver waveform input */
+#define MM_MSFT_GENERIC_WAVEOUT 24 /* MS Vanilla driver wavefrom output */
+#define MM_MSFT_GENERIC_MIDIIN 25 /* MS Vanilla driver MIDI in */
+#define MM_MSFT_GENERIC_MIDIOUT 26 /* MS Vanilla driver MIDI external out */
+#define MM_MSFT_GENERIC_MIDISYNTH 27 /* MS Vanilla driver MIDI synthesizer */
+#define MM_MSFT_GENERIC_AUX_LINE 28 /* MS Vanilla driver aux (line in) */
+#define MM_MSFT_GENERIC_AUX_MIC 29 /* MS Vanilla driver aux (mic) */
+#define MM_MSFT_GENERIC_AUX_CD 30 /* MS Vanilla driver aux (CD) */
+#define MM_MSFT_WSS_OEM_MIXER 31 /* MS OEM Audio Board Mixer Driver */
+#define MM_MSFT_MSACM 32 /* MS Audio Compression Manager */
+#define MM_MSFT_ACM_MSADPCM 33 /* MS ADPCM Codec */
+#define MM_MSFT_ACM_IMAADPCM 34 /* IMA ADPCM Codec */
+#define MM_MSFT_ACM_MSFILTER 35 /* MS Filter */
+#define MM_MSFT_ACM_GSM610 36 /* GSM 610 codec */
+#define MM_MSFT_ACM_G711 37 /* G.711 codec */
+#define MM_MSFT_ACM_PCM 38 /* PCM converter */
+
+ // Microsoft Windows Sound System drivers
+
+#define MM_WSS_SB16_WAVEIN 39 /* Sound Blaster 16 waveform input */
+#define MM_WSS_SB16_WAVEOUT 40 /* Sound Blaster 16 waveform output */
+#define MM_WSS_SB16_MIDIIN 41 /* Sound Blaster 16 midi-in */
+#define MM_WSS_SB16_MIDIOUT 42 /* Sound Blaster 16 midi out */
+#define MM_WSS_SB16_SYNTH 43 /* Sound Blaster 16 FM Synthesis */
+#define MM_WSS_SB16_AUX_LINE 44 /* Sound Blaster 16 aux (line in) */
+#define MM_WSS_SB16_AUX_CD 45 /* Sound Blaster 16 aux (CD) */
+#define MM_WSS_SB16_MIXER 46 /* Sound Blaster 16 mixer device */
+#define MM_WSS_SBPRO_WAVEIN 47 /* Sound Blaster Pro waveform input */
+#define MM_WSS_SBPRO_WAVEOUT 48 /* Sound Blaster Pro waveform output */
+#define MM_WSS_SBPRO_MIDIIN 49 /* Sound Blaster Pro midi in */
+#define MM_WSS_SBPRO_MIDIOUT 50 /* Sound Blaster Pro midi out */
+#define MM_WSS_SBPRO_SYNTH 51 /* Sound Blaster Pro FM synthesis */
+#define MM_WSS_SBPRO_AUX_LINE 52 /* Sound Blaster Pro aux (line in ) */
+#define MM_WSS_SBPRO_AUX_CD 53 /* Sound Blaster Pro aux (CD) */
+#define MM_WSS_SBPRO_MIXER 54 /* Sound Blaster Pro mixer */
+
+#define MM_MSFT_WSS_NT_WAVEIN 55 /* WSS NT wave in */
+#define MM_MSFT_WSS_NT_WAVEOUT 56 /* WSS NT wave out */
+#define MM_MSFT_WSS_NT_FMSYNTH_STEREO 57 /* WSS NT FM synth */
+#define MM_MSFT_WSS_NT_MIXER 58 /* WSS NT mixer */
+#define MM_MSFT_WSS_NT_AUX 59 /* WSS NT aux */
+
+#define MM_MSFT_SB16_WAVEIN 60 /* Sound Blaster 16 waveform input */
+#define MM_MSFT_SB16_WAVEOUT 61 /* Sound Blaster 16 waveform output */
+#define MM_MSFT_SB16_MIDIIN 62 /* Sound Blaster 16 midi-in */
+#define MM_MSFT_SB16_MIDIOUT 63 /* Sound Blaster 16 midi out */
+#define MM_MSFT_SB16_SYNTH 64 /* Sound Blaster 16 FM Synthesis */
+#define MM_MSFT_SB16_AUX_LINE 65 /* Sound Blaster 16 aux (line in) */
+#define MM_MSFT_SB16_AUX_CD 66 /* Sound Blaster 16 aux (CD) */
+#define MM_MSFT_SB16_MIXER 67 /* Sound Blaster 16 mixer device */
+#define MM_MSFT_SBPRO_WAVEIN 68 /* Sound Blaster Pro waveform input */
+#define MM_MSFT_SBPRO_WAVEOUT 69 /* Sound Blaster Pro waveform output */
+#define MM_MSFT_SBPRO_MIDIIN 70 /* Sound Blaster Pro midi in */
+#define MM_MSFT_SBPRO_MIDIOUT 71 /* Sound Blaster Pro midi out */
+#define MM_MSFT_SBPRO_SYNTH 72 /* Sound Blaster Pro FM synthesis */
+#define MM_MSFT_SBPRO_AUX_LINE 73 /* Sound Blaster Pro aux (line in ) */
+#define MM_MSFT_SBPRO_AUX_CD 74 /* Sound Blaster Pro aux (CD) */
+#define MM_MSFT_SBPRO_MIXER 75 /* Sound Blaster Pro mixer */
+
+#define MM_MSFT_MSOPL_SYNTH 76 /* Yamaha OPL2/OPL3 compatible FM synthesis */
+
+/* MM_CREATIVE product IDs */
+#define MM_CREATIVE_SB15_WAVEIN 1 /* SB (r) 1.5 waveform input */
+#define MM_CREATIVE_SB20_WAVEIN 2
+#define MM_CREATIVE_SBPRO_WAVEIN 3
+#define MM_CREATIVE_SBP16_WAVEIN 4
+#define MM_CREATIVE_SB15_WAVEOUT 101
+#define MM_CREATIVE_SB20_WAVEOUT 102
+#define MM_CREATIVE_SBPRO_WAVEOUT 103
+#define MM_CREATIVE_SBP16_WAVEOUT 104
+#define MM_CREATIVE_MIDIOUT 201 /* SB (r) */
+#define MM_CREATIVE_MIDIIN 202 /* SB (r) */
+#define MM_CREATIVE_FMSYNTH_MONO 301 /* SB (r) */
+#define MM_CREATIVE_FMSYNTH_STEREO 302 /* SB Pro (r) stereo synthesizer */
+#define MM_CREATIVE_AUX_CD 401 /* SB Pro (r) aux (CD) */
+#define MM_CREATIVE_AUX_LINE 402 /* SB Pro (r) aux (Line in ) */
+#define MM_CREATIVE_AUX_MIC 403 /* SB Pro (r) aux (mic) */
+#define MM_CREATIVE_AUX_MASTER 404
+#define MM_CREATIVE_AUX_PCSPK 405
+#define MM_CREATIVE_AUX_WAVE 406
+#define MM_CREATIVE_AUX_MIDI 407
+#define MM_CREATIVE_SBPRO_MIXER 408
+#define MM_CREATIVE_SB16_MIXER 409
+
+/* MM_MEDIAVISION product IDs */
+
+// Pro Audio Spectrum
+#define MM_MEDIAVISION_PROAUDIO 0x10
+#define MM_PROAUD_MIDIOUT (MM_MEDIAVISION_PROAUDIO+1)
+#define MM_PROAUD_MIDIIN (MM_MEDIAVISION_PROAUDIO+2)
+#define MM_PROAUD_SYNTH (MM_MEDIAVISION_PROAUDIO+3)
+#define MM_PROAUD_WAVEOUT (MM_MEDIAVISION_PROAUDIO+4)
+#define MM_PROAUD_WAVEIN (MM_MEDIAVISION_PROAUDIO+5)
+#define MM_PROAUD_MIXER (MM_MEDIAVISION_PROAUDIO+6)
+#define MM_PROAUD_AUX (MM_MEDIAVISION_PROAUDIO+7)
+
+// Thunder Board
+#define MM_MEDIAVISION_THUNDER 0x20
+#define MM_THUNDER_SYNTH (MM_MEDIAVISION_THUNDER+3)
+#define MM_THUNDER_WAVEOUT (MM_MEDIAVISION_THUNDER+4)
+#define MM_THUNDER_WAVEIN (MM_MEDIAVISION_THUNDER+5)
+#define MM_THUNDER_AUX (MM_MEDIAVISION_THUNDER+7)
+
+// Audio Port
+#define MM_MEDIAVISION_TPORT 0x40
+#define MM_TPORT_WAVEOUT (MM_MEDIAVISION_TPORT+1)
+#define MM_TPORT_WAVEIN (MM_MEDIAVISION_TPORT+2)
+#define MM_TPORT_SYNTH (MM_MEDIAVISION_TPORT+3)
+
+// Pro Audio Spectrum Plus
+#define MM_MEDIAVISION_PROAUDIO_PLUS 0x50
+#define MM_PROAUD_PLUS_MIDIOUT (MM_MEDIAVISION_PROAUDIO_PLUS+1)
+#define MM_PROAUD_PLUS_MIDIIN (MM_MEDIAVISION_PROAUDIO_PLUS+2)
+#define MM_PROAUD_PLUS_SYNTH (MM_MEDIAVISION_PROAUDIO_PLUS+3)
+#define MM_PROAUD_PLUS_WAVEOUT (MM_MEDIAVISION_PROAUDIO_PLUS+4)
+#define MM_PROAUD_PLUS_WAVEIN (MM_MEDIAVISION_PROAUDIO_PLUS+5)
+#define MM_PROAUD_PLUS_MIXER (MM_MEDIAVISION_PROAUDIO_PLUS+6)
+#define MM_PROAUD_PLUS_AUX (MM_MEDIAVISION_PROAUDIO_PLUS+7)
+
+// Pro Audio Spectrum 16
+#define MM_MEDIAVISION_PROAUDIO_16 0x60
+#define MM_PROAUD_16_MIDIOUT (MM_MEDIAVISION_PROAUDIO_16+1)
+#define MM_PROAUD_16_MIDIIN (MM_MEDIAVISION_PROAUDIO_16+2)
+#define MM_PROAUD_16_SYNTH (MM_MEDIAVISION_PROAUDIO_16+3)
+#define MM_PROAUD_16_WAVEOUT (MM_MEDIAVISION_PROAUDIO_16+4)
+#define MM_PROAUD_16_WAVEIN (MM_MEDIAVISION_PROAUDIO_16+5)
+#define MM_PROAUD_16_MIXER (MM_MEDIAVISION_PROAUDIO_16+6)
+#define MM_PROAUD_16_AUX (MM_MEDIAVISION_PROAUDIO_16+7)
+
+// Pro Audio Studio 16
+#define MM_MEDIAVISION_PROSTUDIO_16 0x60
+#define MM_STUDIO_16_MIDIOUT (MM_MEDIAVISION_PROSTUDIO_16+1)
+#define MM_STUDIO_16_MIDIIN (MM_MEDIAVISION_PROSTUDIO_16+2)
+#define MM_STUDIO_16_SYNTH (MM_MEDIAVISION_PROSTUDIO_16+3)
+#define MM_STUDIO_16_WAVEOUT (MM_MEDIAVISION_PROSTUDIO_16+4)
+#define MM_STUDIO_16_WAVEIN (MM_MEDIAVISION_PROSTUDIO_16+5)
+#define MM_STUDIO_16_MIXER (MM_MEDIAVISION_PROSTUDIO_16+6)
+#define MM_STUDIO_16_AUX (MM_MEDIAVISION_PROSTUDIO_16+7)
+
+// CDPC
+#define MM_MEDIAVISION_CDPC 0x70
+#define MM_CDPC_MIDIOUT (MM_MEDIAVISION_CDPC+1)
+#define MM_CDPC_MIDIIN (MM_MEDIAVISION_CDPC+2)
+#define MM_CDPC_SYNTH (MM_MEDIAVISION_CDPC+3)
+#define MM_CDPC_WAVEOUT (MM_MEDIAVISION_CDPC+4)
+#define MM_CDPC_WAVEIN (MM_MEDIAVISION_CDPC+5)
+#define MM_CDPC_MIXER (MM_MEDIAVISION_CDPC+6)
+#define MM_CDPC_AUX (MM_MEDIAVISION_CDPC+7)
+
+// Opus MV 1208 Chipsent
+#define MM_MEDIAVISION_OPUS1208 0x80
+#define MM_OPUS401_MIDIOUT (MM_MEDIAVISION_OPUS1208+1)
+#define MM_OPUS401_MIDIIN (MM_MEDIAVISION_OPUS1208+2)
+#define MM_OPUS1208_SYNTH (MM_MEDIAVISION_OPUS1208+3)
+#define MM_OPUS1208_WAVEOUT (MM_MEDIAVISION_OPUS1208+4)
+#define MM_OPUS1208_WAVEIN (MM_MEDIAVISION_OPUS1208+5)
+#define MM_OPUS1208_MIXER (MM_MEDIAVISION_OPUS1208+6)
+#define MM_OPUS1208_AUX (MM_MEDIAVISION_OPUS1208+7)
+
+// Opus MV 1216 chipset
+#define MM_MEDIAVISION_OPUS1216 0x90
+#define MM_OPUS1216_MIDIOUT (MM_MEDIAVISION_OPUS1216+1)
+#define MM_OPUS1216_MIDIIN (MM_MEDIAVISION_OPUS1216+2)
+#define MM_OPUS1216_SYNTH (MM_MEDIAVISION_OPUS1216+3)
+#define MM_OPUS1216_WAVEOUT (MM_MEDIAVISION_OPUS1216+4)
+#define MM_OPUS1216_WAVEIN (MM_MEDIAVISION_OPUS1216+5)
+#define MM_OPUS1216_MIXER (MM_MEDIAVISION_OPUS1216+6)
+#define MM_OPUS1216_AUX (MM_MEDIAVISION_OPUS1216+7)
+
+/* MM_ARTISOFT product IDs */
+#define MM_ARTISOFT_SBWAVEIN 1 /* Artisoft sounding Board waveform input */
+#define MM_ARTISOFT_SBWAVEOUT 2 /* Artisoft sounding Board waveform output */
+
+/* MM_IBM product IDs */
+#define MM_MMOTION_WAVEAUX 1 /* IBM M-Motion Auxiliary Device */
+#define MM_MMOTION_WAVEOUT 2 /* IBM M-Motion Waveform output */
+#define MM_MMOTION_WAVEIN 3 /* IBM M-Motion Waveform Input */
+#define MM_IBM_PCMCIA_WAVEIN 11 /* IBM waveform input */
+#define MM_IBM_PCMCIA_WAVEOUT 12 /* IBM Waveform output */
+#define MM_IBM_PCMCIA_SYNTH 13 /* IBM Midi Synthesis */
+#define MM_IBM_PCMCIA_MIDIIN 14 /* IBM external MIDI in */
+#define MM_IBM_PCMCIA_MIDIOUT 15 /* IBM external MIDI out */
+#define MM_IBM_PCMCIA_AUX 16 /* IBM auxiliary control */
+
+/* MM_VOCALTEC product IDs */
+#define MM_VOCALTEC_WAVEOUT 1
+#define MM_VOCALTEC_WAVEIN 2
+
+/* MM_ROLAND product IDs */
+#define MM_ROLAND_MPU401_MIDIOUT 15
+#define MM_ROLAND_MPU401_MIDIIN 16
+#define MM_ROLAND_SMPU_MIDIOUTA 17
+#define MM_ROLAND_SMPU_MIDIOUTB 18
+#define MM_ROLAND_SMPU_MIDIINA 19
+#define MM_ROLAND_SMPU_MIDIINB 20
+#define MM_ROLAND_SC7_MIDIOUT 21
+#define MM_ROLAND_SC7_MIDIIN 22
+#define MM_ROLAND_SERIAL_MIDIOUT 23
+#define MM_ROLAND_SERIAL_MIDIIN 24
+
+/* MM_DSP_SOLUTIONS product IDs */
+#define MM_DSP_SOLUTIONS_WAVEOUT 1
+#define MM_DSP_SOLUTIONS_WAVEIN 2
+#define MM_DSP_SOLUTIONS_SYNTH 3
+#define MM_DSP_SOLUTIONS_AUX 4
+
+/* MM_WANGLABS product IDs */
+#define MM_WANGLABS_WAVEIN1 1 /* Input audio wave on CPU board models: Exec 4010, 4030, 3450; PC 251/25c, pc 461/25s , pc 461/33c */
+#define MM_WANGLABS_WAVEOUT1 2
+
+/* MM_TANDY product IDs */
+#define MM_TANDY_VISWAVEIN 1
+#define MM_TANDY_VISWAVEOUT 2
+#define MM_TANDY_VISBIOSSYNTH 3
+#define MM_TANDY_SENS_MMAWAVEIN 4
+#define MM_TANDY_SENS_MMAWAVEOUT 5
+#define MM_TANDY_SENS_MMAMIDIIN 6
+#define MM_TANDY_SENS_MMAMIDIOUT 7
+#define MM_TANDY_SENS_VISWAVEOUT 8
+#define MM_TANDY_PSSJWAVEIN 9
+#define MM_TANDY_PSSJWAVEOUT 10
+
+/* product IDs */
+#define MM_INTELOPD_WAVEIN 1 /* HID2 WaveAudio Driver */
+#define MM_INTELOPD_WAVEOUT 101 /* HID2 */
+#define MM_INTELOPD_AUX 401 /* HID2 for mixing */
+
+/* MM_INTERACTIVE product IDs */
+#define MM_INTERACTIVE_WAVEIN 0x45
+#define MM_INTERACTIVE_WAVEOUT 0x45
+
+/* MM_YAMAHA product IDs */
+#define MM_YAMAHA_GSS_SYNTH 0x01
+#define MM_YAMAHA_GSS_WAVEOUT 0x02
+#define MM_YAMAHA_GSS_WAVEIN 0x03
+#define MM_YAMAHA_GSS_MIDIOUT 0x04
+#define MM_YAMAHA_GSS_MIDIIN 0x05
+#define MM_YAMAHA_GSS_AUX 0x06
+
+/* MM_EVEREX product IDs */
+#define MM_EVEREX_CARRIER 0x01
+
+/* MM_ECHO product IDs */
+#define MM_ECHO_SYNTH 0x01
+#define MM_ECHO_WAVEOUT 0x02
+#define MM_ECHO_WAVEIN 0x03
+#define MM_ECHO_MIDIOUT 0x04
+#define MM_ECHO_MIDIIN 0x05
+#define MM_ECHO_AUX 0x06
+
+/* MM_SIERRA product IDs */
+#define MM_SIERRA_ARIA_MIDIOUT 0x14
+#define MM_SIERRA_ARIA_MIDIIN 0x15
+#define MM_SIERRA_ARIA_SYNTH 0x16
+#define MM_SIERRA_ARIA_WAVEOUT 0x17
+#define MM_SIERRA_ARIA_WAVEIN 0x18
+#define MM_SIERRA_ARIA_AUX 0x19
+#define MM_SIERRA_ARIA_AUX2 0x20
+
+/* MM_CAT product IDs */
+#define MM_CAT_WAVEOUT 1
+
+/* MM_DSP_GROUP product IDs */
+#define MM_DSP_GROUP_TRUESPEECH 0x01
+
+/* MM_MELABS product IDs */
+#define MM_MELABS_MIDI2GO 0x01
+
+/* MM_ESS product IDs */
+#define MM_ESS_AMWAVEOUT 0x01
+#define MM_ESS_AMWAVEIN 0x02
+#define MM_ESS_AMAUX 0x03
+#define MM_ESS_AMSYNTH 0x04
+#define MM_ESS_AMMIDIOUT 0x05
+#define MM_ESS_AMMIDIIN 0x06
+
+/* product IDs */
+#define MM_EPS_FMSND 1
+
+/* MM_TRUEVISION product IDs */
+#define MM_TRUEVISION_WAVEIN1 1
+#define MM_TRUEVISION_WAVEOUT1 2
+
+/* MM_AZTECH product IDs */
+#define MM_AZTECH_MIDIOUT 3
+#define MM_AZTECH_MIDIIN 4
+#define MM_AZTECH_WAVEIN 17
+#define MM_AZTECH_WAVEOUT 18
+#define MM_AZTECH_FMSYNTH 20
+#define MM_AZTECH_PRO16_WAVEIN 33
+#define MM_AZTECH_PRO16_WAVEOUT 34
+#define MM_AZTECH_PRO16_FMSYNTH 38
+#define MM_AZTECH_DSP16_WAVEIN 65
+#define MM_AZTECH_DSP16_WAVEOUT 66
+#define MM_AZTECH_DSP16_FMSYNTH 68
+#define MM_AZTECH_DSP16_WAVESYNTH 70
+#define MM_AZTECH_AUX_CD 401
+#define MM_AZTECH_AUX_LINE 402
+#define MM_AZTECH_AUX_MIC 403
+
+/* MM_VIDEOLOGIC product IDs */
+#define MM_VIDEOLOGIC_MSWAVEIN 1
+#define MM_VIDEOLOGIC_MSWAVEOUT 2
+
+/* MM_KORG product IDs */
+#define MM_KORG_PCIF_MIDIOUT 1
+#define MM_KORG_PCIF_MIDIIN 2
+
+/* MM_APT product IDs */
+#define MM_APT_ACE100CD 1
+
+/* MM_ICS product IDs */
+#define MM_ICS_WAVEDECK_WAVEOUT 1 /* MS WSS compatible card and driver */
+#define MM_ICS_WAVEDECK_WAVEIN 2
+#define MM_ICS_WAVEDECK_MIXER 3
+#define MM_ICS_WAVEDECK_AUX 4
+#define MM_ICS_WAVEDECK_SYNTH 5
+
+/* MM_ITERATEDSYS product IDs */
+#define MM_ITERATEDSYS_FUFCODEC 1
+
+/* MM_METHEUS product IDs */
+#define MM_METHEUS_ZIPPER 1
+
+/* MM_WINNOV product IDs */
+#define MM_WINNOV_CAVIAR_WAVEIN 1
+#define MM_WINNOV_CAVIAR_WAVEOUT 2
+#define MM_WINNOV_CAVIAR_VIDC 3
+#define MM_WINNOV_CAVIAR_CHAMPAGNE 4 /* Fourcc is CHAM */
+#define MM_WINNOV_CAVIAR_YUV8 5 /* Fourcc is YUV8 */
+
+/* MM_NCR product IDs */
+#define MM_NCR_BA_WAVEIN 1
+#define MM_NCR_BA_WAVEOUT 2
+#define MM_NCR_BA_SYNTH 3
+#define MM_NCR_BA_AUX 4
+#define MM_NCR_BA_MIXER 5
+
+/* MM_VITEC product IDs */
+#define MM_VITEC_VMAKER 1
+#define MM_VITEC_VMPRO 2
+
+/* MM_MOSCOM product IDs */
+#define MM_MOSCOM_VPC2400 1 /* Four Port Voice Processing / Voice Recognition Board */
+
+/* MM_SILICONSOFT product IDs */
+#define MM_SILICONSOFT_SC1_WAVEIN 1 /* Waveform in , high sample rate */
+#define MM_SILICONSOFT_SC1_WAVEOUT 2 /* Waveform out , high sample rate */
+#define MM_SILICONSOFT_SC2_WAVEIN 3 /* Waveform in 2 channels, high sample rate */
+#define MM_SILICONSOFT_SC2_WAVEOUT 4 /* Waveform out 2 channels, high sample rate */
+#define MM_SILICONSOFT_SOUNDJR2_WAVEOUT 5 /* Waveform out, self powered, efficient */
+#define MM_SILICONSOFT_SOUNDJR2PR_WAVEIN 6 /* Waveform in, self powered, efficient */
+#define MM_SILICONSOFT_SOUNDJR2PR_WAVEOUT 7 /* Waveform out 2 channels, self powered, efficient */
+#define MM_SILICONSOFT_SOUNDJR3_WAVEOUT 8 /* Waveform in 2 channels, self powered, efficient */
+
+/* MM_OLIVETTI product IDs */
+#define MM_OLIVETTI_WAVEIN 1
+#define MM_OLIVETTI_WAVEOUT 2
+#define MM_OLIVETTI_MIXER 3
+#define MM_OLIVETTI_AUX 4
+#define MM_OLIVETTI_MIDIIN 5
+#define MM_OLIVETTI_MIDIOUT 6
+#define MM_OLIVETTI_SYNTH 7
+#define MM_OLIVETTI_JOYSTICK 8
+#define MM_OLIVETTI_ACM_GSM 9
+#define MM_OLIVETTI_ACM_ADPCM 10
+#define MM_OLIVETTI_ACM_CELP 11
+#define MM_OLIVETTI_ACM_SBC 12
+#define MM_OLIVETTI_ACM_OPR 13
+
+/* MM_IOMAGIC product IDs */
+
+/* The I/O Magic Tempo is a PCMCIA Type 2 audio card featuring wave audio
+ record and playback, FM synthesizer, and MIDI output. The I/O Magic
+ Tempo WaveOut device supports mono and stereo PCM playback at rates
+ of 7350, 11025, 22050, and 44100 samples */
+
+#define MM_IOMAGIC_TEMPO_WAVEOUT 1
+#define MM_IOMAGIC_TEMPO_WAVEIN 2
+#define MM_IOMAGIC_TEMPO_SYNTH 3
+#define MM_IOMAGIC_TEMPO_MIDIOUT 4
+#define MM_IOMAGIC_TEMPO_MXDOUT 5
+#define MM_IOMAGIC_TEMPO_AUXOUT 6
+
+/* MM_MATSUSHITA product IDs */
+#define MM_MATSUSHITA_WAVEIN 1
+#define MM_MATSUSHITA_WAVEOUT 2
+#define MM_MATSUSHITA_FMSYNTH_STEREO 3
+#define MM_MATSUSHITA_MIXER 4
+#define MM_MATSUSHITA_AUX 5
+
+/* MM_NEWMEDIA product IDs */
+#define MM_NEWMEDIA_WAVJAMMER 1 /* WSS Compatible sound card. */
+
+/* MM_LYRRUS product IDs */
+
+/* Bridge is a MIDI driver that allows the the Lyrrus G-VOX hardware to
+ communicate with Windows base transcription and sequencer applications.
+ The driver also provides a mechanism for the user to configure the system
+ to their personal playing style. */
+
+#define MM_LYRRUS_BRIDGE_GUITAR 1
+
+/* MM_OPTI product IDs */
+#define MM_OPTI_M16_FMSYNTH_STEREO 0x0001
+#define MM_OPTI_M16_MIDIIN 0x0002
+#define MM_OPTI_M16_MIDIOUT 0x0003
+#define MM_OPTI_M16_WAVEIN 0x0004
+#define MM_OPTI_M16_WAVEOUT 0x0005
+#define MM_OPTI_M16_MIXER 0x0006
+#define MM_OPTI_M16_AUX 0x0007
+#define MM_OPTI_P16_FMSYNTH_STEREO 0x0010
+#define MM_OPTI_P16_MIDIIN 0x0011
+#define MM_OPTI_P16_MIDIOUT 0x0012
+#define MM_OPTI_P16_WAVEIN 0x0013
+#define MM_OPTI_P16_WAVEOUT 0x0014
+#define MM_OPTI_P16_MIXER 0x0015
+#define MM_OPTI_P16_AUX 0x0016
+#define MM_OPTI_M32_WAVEIN 0x0020
+#define MM_OPTI_M32_WAVEOUT 0x0021
+#define MM_OPTI_M32_MIDIIN 0x0022
+#define MM_OPTI_M32_MIDIOUT 0x0023
+#define MM_OPTI_M32_SYNTH_STEREO 0x0024
+#define MM_OPTI_M32_MIXER 0x0025
+#define MM_OPTI_M32_AUX 0x0026
+
+#endif // !NOMMIDS
+
+
+/*////////////////////////////////////////////////////////////////////////// */
+
+/* INFO LIST CHUNKS (from the Multimedia Programmer's Reference
+ plus new ones)
+*/
+#define RIFFINFO_IARL mmioFOURCC ('I', 'A', 'R', 'L') /*Archival location */
+#define RIFFINFO_IART mmioFOURCC ('I', 'A', 'R', 'T') /*Artist */
+#define RIFFINFO_ICMS mmioFOURCC ('I', 'C', 'M', 'S') /*Commissioned */
+#define RIFFINFO_ICMT mmioFOURCC ('I', 'C', 'M', 'T') /*Comments */
+#define RIFFINFO_ICOP mmioFOURCC ('I', 'C', 'O', 'P') /*Copyright */
+#define RIFFINFO_ICRD mmioFOURCC ('I', 'C', 'R', 'D') /*Creation date of subject */
+#define RIFFINFO_ICRP mmioFOURCC ('I', 'C', 'R', 'P') /*Cropped */
+#define RIFFINFO_IDIM mmioFOURCC ('I', 'D', 'I', 'M') /*Dimensions */
+#define RIFFINFO_IDPI mmioFOURCC ('I', 'D', 'P', 'I') /*Dots per inch */
+#define RIFFINFO_IENG mmioFOURCC ('I', 'E', 'N', 'G') /*Engineer */
+#define RIFFINFO_IGNR mmioFOURCC ('I', 'G', 'N', 'R') /*Genre */
+#define RIFFINFO_IKEY mmioFOURCC ('I', 'K', 'E', 'Y') /*Keywords */
+#define RIFFINFO_ILGT mmioFOURCC ('I', 'L', 'G', 'T') /*Lightness settings */
+#define RIFFINFO_IMED mmioFOURCC ('I', 'M', 'E', 'D') /*Medium */
+#define RIFFINFO_INAM mmioFOURCC ('I', 'N', 'A', 'M') /*Name of subject */
+#define RIFFINFO_IPLT mmioFOURCC ('I', 'P', 'L', 'T') /*Palette Settings. No. of colors requested. */
+#define RIFFINFO_IPRD mmioFOURCC ('I', 'P', 'R', 'D') /*Product */
+#define RIFFINFO_ISBJ mmioFOURCC ('I', 'S', 'B', 'J') /*Subject description */
+#define RIFFINFO_ISFT mmioFOURCC ('I', 'S', 'F', 'T') /*Software. Name of package used to create file. */
+#define RIFFINFO_ISHP mmioFOURCC ('I', 'S', 'H', 'P') /*Sharpness. */
+#define RIFFINFO_ISRC mmioFOURCC ('I', 'S', 'R', 'C') /*Source. */
+#define RIFFINFO_ISRF mmioFOURCC ('I', 'S', 'R', 'F') /*Source Form. ie slide, paper */
+#define RIFFINFO_ITCH mmioFOURCC ('I', 'T', 'C', 'H') /*Technician who digitized the subject. */
+
+/* New INFO Chunks as of August 30, 1993: */
+#define RIFFINFO_ISMP mmioFOURCC ('I', 'S', 'M', 'P') /*SMPTE time code */
+/* ISMP: SMPTE time code of digitization start point expressed as a NULL terminated
+ text string "HH:MM:SS:FF". If performing MCI capture in AVICAP, this
+ chunk will be automatically set based on the MCI start time.
+*/
+#define RIFFINFO_IDIT mmioFOURCC ('I', 'D', 'I', 'T') /*Digitization Time */
+/* IDIT: "Digitization Time" Specifies the time and date that the digitization commenced.
+ The digitization time is contained in an ASCII string which
+ contains exactly 26 characters and is in the format
+ "Wed Jan 02 02:03:55 1990\n\0".
+ The ctime(), asctime(), functions can be used to create strings
+ in this format. This chunk is automatically added to the capture
+ file based on the current system time at the moment capture is initiated.
+*/
+
+/*Template line for new additions*/
+/*#define RIFFINFO_I mmioFOURCC ('I', '', '', '') */
+
+
+/*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
+
+#ifndef NONEWWAVE
+
+/* WAVE form wFormatTag IDs */
+#define WAVE_FORMAT_UNKNOWN 0x0000 /* Microsoft Corporation */
+#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */
+#define WAVE_FORMAT_IBM_CVSD 0x0005 /* IBM Corporation */
+#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */
+#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */
+#define WAVE_FORMAT_OKI_ADPCM 0x0010 /* OKI */
+#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */
+#define WAVE_FORMAT_IMA_ADPCM (WAVE_FORMAT_DVI_ADPCM) /* Intel Corporation */
+#define WAVE_FORMAT_MEDIASPACE_ADPCM 0x0012 /* Videologic */
+#define WAVE_FORMAT_SIERRA_ADPCM 0x0013 /* Sierra Semiconductor Corp */
+#define WAVE_FORMAT_G723_ADPCM 0x0014 /* Antex Electronics Corporation */
+#define WAVE_FORMAT_DIGISTD 0x0015 /* DSP Solutions, Inc. */
+#define WAVE_FORMAT_DIGIFIX 0x0016 /* DSP Solutions, Inc. */
+#define WAVE_FORMAT_DIALOGIC_OKI_ADPCM 0x0017 /* Dialogic Corporation */
+#define WAVE_FORMAT_YAMAHA_ADPCM 0x0020 /* Yamaha Corporation of America */
+#define WAVE_FORMAT_SONARC 0x0021 /* Speech Compression */
+#define WAVE_FORMAT_DSPGROUP_TRUESPEECH 0x0022 /* DSP Group, Inc */
+#define WAVE_FORMAT_ECHOSC1 0x0023 /* Echo Speech Corporation */
+#define WAVE_FORMAT_AUDIOFILE_AF36 0x0024 /* */
+#define WAVE_FORMAT_APTX 0x0025 /* Audio Processing Technology */
+#define WAVE_FORMAT_AUDIOFILE_AF10 0x0026 /* */
+#define WAVE_FORMAT_DOLBY_AC2 0x0030 /* Dolby Laboratories */
+#define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */
+#define WAVE_FORMAT_ANTEX_ADPCME 0x0033 /* Antex Electronics Corporation */
+#define WAVE_FORMAT_CONTROL_RES_VQLPC 0x0034 /* Control Resources Limited */
+#define WAVE_FORMAT_DIGIREAL 0x0035 /* DSP Solutions, Inc. */
+#define WAVE_FORMAT_DIGIADPCM 0x0036 /* DSP Solutions, Inc. */
+#define WAVE_FORMAT_CONTROL_RES_CR10 0x0037 /* Control Resources Limited */
+#define WAVE_FORMAT_NMS_VBXADPCM 0x0038 /* Natural MicroSystems */
+#define WAVE_FORMAT_G721_ADPCM 0x0040 /* Antex Electronics Corporation */
+#define WAVE_FORMAT_MPEG 0x0050 /* Microsoft Corporation */
+#define WAVE_FORMAT_CREATIVE_ADPCM 0x0200 /* Creative Labs, Inc */
+#define WAVE_FORMAT_CREATIVE_FASTSPEECH8 0x0202 /* Creative Labs, Inc */
+#define WAVE_FORMAT_CREATIVE_FASTSPEECH10 0x0203 /* Creative Labs, Inc */
+#define WAVE_FORMAT_FM_TOWNS_SND 0x0300 /* Fujitsu Corp. */
+#define WAVE_FORMAT_OLIGSM 0x1000 /* Ing C. Olivetti & C., S.p.A. */
+#define WAVE_FORMAT_OLIADPCM 0x1001 /* Ing C. Olivetti & C., S.p.A. */
+#define WAVE_FORMAT_OLICELP 0x1002 /* Ing C. Olivetti & C., S.p.A. */
+#define WAVE_FORMAT_OLISBC 0x1003 /* Ing C. Olivetti & C., S.p.A. */
+#define WAVE_FORMAT_OLIOPR 0x1004 /* Ing C. Olivetti & C., S.p.A. */
+
+//
+// the WAVE_FORMAT_DEVELOPMENT format tag can be used during the
+// development phase of a new wave format. Before shipping, you MUST
+// acquire an official format tag from Microsoft.
+//
+#define WAVE_FORMAT_DEVELOPMENT (0xFFFF)
+
+#endif /* NONEWWAVE */
+
+
+#ifndef WAVE_FORMAT_PCM
+
+/* general waveform format structure (information common to all formats) */
+typedef struct waveformat_tag {
+ WORD wFormatTag; /* format type */
+ WORD nChannels; /* number of channels (i.e. mono, stereo...) */
+ DWORD nSamplesPerSec; /* sample rate */
+ DWORD nAvgBytesPerSec; /* for buffer estimation */
+ WORD nBlockAlign; /* block size of data */
+} WAVEFORMAT;
+typedef WAVEFORMAT *PWAVEFORMAT;
+typedef WAVEFORMAT NEAR *NPWAVEFORMAT;
+typedef WAVEFORMAT FAR *LPWAVEFORMAT;
+
+/* flags for wFormatTag field of WAVEFORMAT */
+#define WAVE_FORMAT_PCM 1
+
+/* specific waveform format structure for PCM data */
+typedef struct pcmwaveformat_tag {
+ WAVEFORMAT wf;
+ WORD wBitsPerSample;
+} PCMWAVEFORMAT;
+typedef PCMWAVEFORMAT *PPCMWAVEFORMAT;
+typedef PCMWAVEFORMAT NEAR *NPPCMWAVEFORMAT;
+typedef PCMWAVEFORMAT FAR *LPPCMWAVEFORMAT;
+
+
+#endif /* WAVE_FORMAT_PCM */
+
+
+
+/* general extended waveform format structure
+ Use this for all NON PCM formats
+ (information common to all formats)
+*/
+#ifndef _WAVEFORMATEX_
+#define _WAVEFORMATEX_
+typedef struct tWAVEFORMATEX
+{
+ WORD wFormatTag; /* format type */
+ WORD nChannels; /* number of channels (i.e. mono, stereo...) */
+ DWORD nSamplesPerSec; /* sample rate */
+ DWORD nAvgBytesPerSec; /* for buffer estimation */
+ WORD nBlockAlign; /* block size of data */
+ WORD wBitsPerSample; /* Number of bits per sample of mono data */
+ WORD cbSize; /* The count in bytes of the size of
+ extra information (after cbSize) */
+
+} WAVEFORMATEX;
+typedef WAVEFORMATEX *PWAVEFORMATEX;
+typedef WAVEFORMATEX NEAR *NPWAVEFORMATEX;
+typedef WAVEFORMATEX FAR *LPWAVEFORMATEX;
+#endif /* _WAVEFORMATEX_ */
+
+
+#ifndef NONEWWAVE
+
+/* Define data for MS ADPCM */
+
+typedef struct adpcmcoef_tag {
+ short iCoef1;
+ short iCoef2;
+} ADPCMCOEFSET;
+typedef ADPCMCOEFSET *PADPCMCOEFSET;
+typedef ADPCMCOEFSET NEAR *NPADPCMCOEFSET;
+typedef ADPCMCOEFSET FAR *LPADPCMCOEFSET;
+
+
+/*
+ * this pragma disables the warning issued by the Microsoft C compiler
+ * when using a zero size array as place holder when compiling for
+ * C++ or with -W4.
+ *
+ */
+#ifdef _MSC_VER
+#pragma warning(disable:4200)
+#endif
+
+typedef struct adpcmwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wSamplesPerBlock;
+ WORD wNumCoef;
+ ADPCMCOEFSET aCoef[];
+} ADPCMWAVEFORMAT;
+typedef ADPCMWAVEFORMAT *PADPCMWAVEFORMAT;
+typedef ADPCMWAVEFORMAT NEAR *NPADPCMWAVEFORMAT;
+typedef ADPCMWAVEFORMAT FAR *LPADPCMWAVEFORMAT;
+
+#ifdef _MSC_VER
+#pragma warning(default:4200)
+#endif
+
+//
+// Intel's DVI ADPCM structure definitions
+//
+// for WAVE_FORMAT_DVI_ADPCM (0x0011)
+//
+//
+
+typedef struct dvi_adpcmwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wSamplesPerBlock;
+} DVIADPCMWAVEFORMAT;
+typedef DVIADPCMWAVEFORMAT *PDVIADPCMWAVEFORMAT;
+typedef DVIADPCMWAVEFORMAT NEAR *NPDVIADPCMWAVEFORMAT;
+typedef DVIADPCMWAVEFORMAT FAR *LPDVIADPCMWAVEFORMAT;
+
+
+//
+// IMA endorsed ADPCM structure definitions--note that this is exactly
+// the same format as Intel's DVI ADPCM.
+//
+// for WAVE_FORMAT_IMA_ADPCM (0x0011)
+//
+//
+
+typedef struct ima_adpcmwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wSamplesPerBlock;
+} IMAADPCMWAVEFORMAT;
+typedef IMAADPCMWAVEFORMAT *PIMAADPCMWAVEFORMAT;
+typedef IMAADPCMWAVEFORMAT NEAR *NPIMAADPCMWAVEFORMAT;
+typedef IMAADPCMWAVEFORMAT FAR *LPIMAADPCMWAVEFORMAT;
+
+/*
+//VideoLogic's Media Space ADPCM Structure definitions
+// for WAVE_FORMAT_MEDIASPACE_ADPCM (0x0012)
+//
+//
+*/
+typedef struct mediaspace_adpcmwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wRevision;
+} MEDIASPACEADPCMWAVEFORMAT;
+typedef MEDIASPACEADPCMWAVEFORMAT *PMEDIASPACEADPCMWAVEFORMAT;
+typedef MEDIASPACEADPCMWAVEFORMAT NEAR *NPMEDIASPACEADPCMWAVEFORMAT;
+typedef MEDIASPACEADPCMWAVEFORMAT FAR *LPMEDIASPACEADPCMWAVEFORMAT;
+
+//
+// Sierra Semiconductor
+//
+// for WAVE_FORMAT_SIERRA_ADPCM (0x0013)
+//
+//
+
+typedef struct sierra_adpcmwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wRevision;
+} SIERRAADPCMWAVEFORMAT;
+typedef SIERRAADPCMWAVEFORMAT *PSIERRAADPCMWAVEFORMAT;
+typedef SIERRAADPCMWAVEFORMAT NEAR *NPSIERRAADPCMWAVEFORMAT;
+typedef SIERRAADPCMWAVEFORMAT FAR *LPSIERRAADPCMWAVEFORMAT;
+
+
+
+//
+// Antex Electronics structure definitions
+//
+// for WAVE_FORMAT_G723_ADPCM (0x0014)
+//
+//
+
+typedef struct g723_adpcmwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD cbExtraSize;
+ WORD nAuxBlockSize;
+} G723_ADPCMWAVEFORMAT;
+typedef G723_ADPCMWAVEFORMAT *PG723_ADPCMWAVEFORMAT;
+typedef G723_ADPCMWAVEFORMAT NEAR *NPG723_ADPCMWAVEFORMAT;
+typedef G723_ADPCMWAVEFORMAT FAR *LPG723_ADPCMWAVEFORMAT;
+
+//
+// DSP Solutions (formerly DIGISPEECH) structure definitions
+//
+// for WAVE_FORMAT_DIGISTD (0x0015)
+//
+//
+
+typedef struct digistdwaveformat_tag {
+ WAVEFORMATEX wfx;
+} DIGISTDWAVEFORMAT;
+typedef DIGISTDWAVEFORMAT *PDIGISTDWAVEFORMAT;
+typedef DIGISTDWAVEFORMAT NEAR *NPDIGISTDWAVEFORMAT;
+typedef DIGISTDWAVEFORMAT FAR *LPDIGISTDWAVEFORMAT;
+
+//
+// DSP Solutions (formerly DIGISPEECH) structure definitions
+//
+// for WAVE_FORMAT_DIGIFIX (0x0016)
+//
+//
+
+typedef struct digifixwaveformat_tag {
+ WAVEFORMATEX wfx;
+} DIGIFIXWAVEFORMAT;
+typedef DIGIFIXWAVEFORMAT *PDIGIFIXWAVEFORMAT;
+typedef DIGIFIXWAVEFORMAT NEAR *NPDIGIFIXWAVEFORMAT;
+typedef DIGIFIXWAVEFORMAT FAR *LPDIGIFIXWAVEFORMAT;
+
+//
+// Dialogic Corporation
+// WAVEFORMAT_DIALOGIC_OKI_ADPCM (0x0017)
+//
+typedef struct creative_fastspeechformat_tag{
+ WAVEFORMATEX ewf;
+}DIALOGICOKIADPCMWAVEFORMAT;
+typedef DIALOGICOKIADPCMWAVEFORMAT *PDIALOGICOKIADPCMWAVEFORMAT;
+typedef DIALOGICOKIADPCMWAVEFORMAT NEAR *NPDIALOGICOKIADPCMWAVEFORMAT;
+typedef DIALOGICOKIADPCMWAVEFORMAT FAR *LPDIALOGICOKIADPCMWAVEFORMAT;
+
+
+//
+// Yamaha Compression's ADPCM structure definitions
+//
+// for WAVE_FORMAT_YAMAHA_ADPCM (0x0020)
+//
+//
+
+typedef struct yamaha_adpmcwaveformat_tag {
+ WAVEFORMATEX wfx;
+
+} YAMAHA_ADPCMWAVEFORMAT;
+typedef YAMAHA_ADPCMWAVEFORMAT *PYAMAHA_ADPCMWAVEFORMAT;
+typedef YAMAHA_ADPCMWAVEFORMAT NEAR *NPYAMAHA_ADPCMWAVEFORMAT;
+typedef YAMAHA_ADPCMWAVEFORMAT FAR *LPYAMAHA_ADPCMWAVEFORMAT;
+
+//
+// Speech Compression's Sonarc structure definitions
+//
+// for WAVE_FORMAT_SONARC (0x0021)
+//
+//
+
+typedef struct sonarcwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wCompType;
+} SONARCWAVEFORMAT;
+typedef SONARCWAVEFORMAT *PSONARCWAVEFORMAT;
+typedef SONARCWAVEFORMAT NEAR *NPSONARCWAVEFORMAT;
+typedef SONARCWAVEFORMAT FAR *LPSONARCWAVEFORMAT;
+
+//
+// DSP Groups's TRUESPEECH structure definitions
+//
+// for WAVE_FORMAT_DSPGROUP_TRUESPEECH (0x0022)
+//
+//
+
+typedef struct truespeechwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wRevision;
+ WORD nSamplesPerBlock;
+ BYTE abReserved[28];
+} TRUESPEECHWAVEFORMAT;
+typedef TRUESPEECHWAVEFORMAT *PTRUESPEECHWAVEFORMAT;
+typedef TRUESPEECHWAVEFORMAT NEAR *NPTRUESPEECHWAVEFORMAT;
+typedef TRUESPEECHWAVEFORMAT FAR *LPTRUESPEECHWAVEFORMAT;
+
+//
+// Echo Speech Corp structure definitions
+//
+// for WAVE_FORMAT_ECHOSC1 (0x0023)
+//
+//
+
+typedef struct echosc1waveformat_tag {
+ WAVEFORMATEX wfx;
+} ECHOSC1WAVEFORMAT;
+typedef ECHOSC1WAVEFORMAT *PECHOSC1WAVEFORMAT;
+typedef ECHOSC1WAVEFORMAT NEAR *NPECHOSC1WAVEFORMAT;
+typedef ECHOSC1WAVEFORMAT FAR *LPECHOSC1WAVEFORMAT;
+
+//
+// Audiofile Inc.structure definitions
+//
+// for WAVE_FORMAT_AUDIOFILE_AF36 (0x0024)
+//
+//
+
+typedef struct audiofile_af36waveformat_tag {
+ WAVEFORMATEX wfx;
+} AUDIOFILE_AF36WAVEFORMAT;
+typedef AUDIOFILE_AF36WAVEFORMAT *PAUDIOFILE_AF36WAVEFORMAT;
+typedef AUDIOFILE_AF36WAVEFORMAT NEAR *NPAUDIOFILE_AF36WAVEFORMAT;
+typedef AUDIOFILE_AF36WAVEFORMAT FAR *LPAUDIOFILE_AF36WAVEFORMAT;
+
+//
+// Audio Processing Technology structure definitions
+//
+// for WAVE_FORMAT_APTX (0x0025)
+//
+//
+typedef struct aptxwaveformat_tag {
+ WAVEFORMATEX wfx;
+} APTXWAVEFORMAT;
+typedef APTXWAVEFORMAT *PAPTXWAVEFORMAT;
+typedef APTXWAVEFORMAT NEAR *NPAPTXWAVEFORMAT;
+typedef APTXWAVEFORMAT FAR *LPAPTXWAVEFORMAT;
+
+//
+// Audiofile Inc.structure definitions
+//
+// for WAVE_FORMAT_AUDIOFILE_AF10 (0x0026)
+//
+//
+
+typedef struct audiofile_af10waveformat_tag {
+ WAVEFORMATEX wfx;
+} AUDIOFILE_AF10WAVEFORMAT;
+typedef AUDIOFILE_AF10WAVEFORMAT *PAUDIOFILE_AF10WAVEFORMAT;
+typedef AUDIOFILE_AF10WAVEFORMAT NEAR *NPAUDIOFILE_AF10WAVEFORMAT;
+typedef AUDIOFILE_AF10WAVEFORMAT FAR *LPAUDIOFILE_AF10WAVEFORMAT;
+
+//
+/* Dolby's AC-2 wave format structure definition
+ WAVE_FORMAT_DOLBY_AC2 (0x0030)*/
+//
+typedef struct dolbyac2waveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD nAuxBitsCode;
+} DOLBYAC2WAVEFORMAT;
+
+/*Microsoft's */
+// WAVE_FORMAT_GSM 610 0x0031
+//
+typedef struct gsm610waveformat_tag {
+WAVEFORMATEX wfx;
+WORD wSamplesPerBlock;
+} GSM610WAVEFORMAT;
+typedef GSM610WAVEFORMAT *PGSM610WAVEFORMAT;
+typedef GSM610WAVEFORMAT NEAR *NPGSM610WAVEFORMAT;
+typedef GSM610WAVEFORMAT FAR *LPGSM610WAVEFORMAT;
+
+//
+// Antex Electronics Corp
+//
+// for WAVE_FORMAT_ADPCME (0x0033)
+//
+//
+
+typedef struct adpcmewaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wSamplesPerBlock;
+} ADPCMEWAVEFORMAT;
+typedef ADPCMEWAVEFORMAT *PADPCMEWAVEFORMAT;
+typedef ADPCMEWAVEFORMAT NEAR *NPADPCMEWAVEFORMAT;
+typedef ADPCMEWAVEFORMAT FAR *LPADPCMEWAVEFORMAT;
+
+/* Control Resources Limited */
+// WAVE_FORMAT_CONTROL_RES_VQLPC 0x0034
+//
+typedef struct contres_vqlpcwaveformat_tag {
+WAVEFORMATEX wfx;
+WORD wSamplesPerBlock;
+} CONTRESVQLPCWAVEFORMAT;
+typedef CONTRESVQLPCWAVEFORMAT *PCONTRESVQLPCWAVEFORMAT;
+typedef CONTRESVQLPCWAVEFORMAT NEAR *NPCONTRESVQLPCWAVEFORMAT;
+typedef CONTRESVQLPCWAVEFORMAT FAR *LPCONTRESVQLPCWAVEFORMAT;
+
+//
+//
+//
+// for WAVE_FORMAT_DIGIREAL (0x0035)
+//
+//
+
+typedef struct digirealwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wSamplesPerBlock;
+} DIGIREALWAVEFORMAT;
+typedef DIGIREALWAVEFORMAT *PDIGIREALWAVEFORMAT;
+typedef DIGIREALWAVEFORMAT NEAR *NPDIGIREALWAVEFORMAT;
+typedef DIGIREALWAVEFORMAT FAR *LPDIGIREALWAVEFORMAT;
+
+//
+// DSP Solutions
+//
+// for WAVE_FORMAT_DIGIADPCM (0x0036)
+//
+//
+
+typedef struct digiadpcmmwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wSamplesPerBlock;
+} DIGIADPCMWAVEFORMAT;
+typedef DIGIADPCMWAVEFORMAT *PDIGIADPCMWAVEFORMAT;
+typedef DIGIADPCMWAVEFORMAT NEAR *NPDIGIADPCMWAVEFORMAT;
+typedef DIGIADPCMWAVEFORMAT FAR *LPDIGIADPCMWAVEFORMAT;
+
+
+/* Control Resources Limited */
+// WAVE_FORMAT_CONTROL_RES_CR10 0x0037
+//
+typedef struct contres_cr10waveformat_tag {
+WAVEFORMATEX wfx;
+WORD wSamplesPerBlock;
+} CONTRESCR10WAVEFORMAT;
+typedef CONTRESCR10WAVEFORMAT *PCONTRESCR10WAVEFORMAT;
+typedef CONTRESCR10WAVEFORMAT NEAR *NPCONTRESCR10WAVEFORMAT;
+typedef CONTRESCR10WAVEFORMAT FAR *LPCONTRESCR10WAVEFORMAT;
+
+
+
+//
+// Natural Microsystems
+//
+// for WAVE_FORMAT_NMS_VBXADPCM (0x0038)
+//
+//
+
+typedef struct nms_vbxadpcmmwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wSamplesPerBlock;
+} NMS_VBXADPCMWAVEFORMAT;
+typedef NMS_VBXADPCMWAVEFORMAT *PNMS_VBXADPCMWAVEFORMAT;
+typedef NMS_VBXADPCMWAVEFORMAT NEAR *NPNMS_VBXADPCMWAVEFORMAT;
+typedef NMS_VBXADPCMWAVEFORMAT FAR *LPNMS_VBXADPCMWAVEFORMAT;
+
+
+//
+// Antex Electronics structure definitions
+//
+// for WAVE_FORMAT_G721_ADPCM (0x0040)
+//
+//
+
+typedef struct g721_adpcmwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD nAuxBlockSize;
+} G721_ADPCMWAVEFORMAT;
+typedef G721_ADPCMWAVEFORMAT *PG721_ADPCMWAVEFORMAT;
+typedef G721_ADPCMWAVEFORMAT NEAR *NPG721_ADPCMWAVEFORMAT;
+typedef G721_ADPCMWAVEFORMAT FAR *LPG721_ADPCMWAVEFORMAT;
+
+//
+//
+// Microsoft MPEG audio WAV definition
+//
+/* MPEG-1 audio wave format (audio layer only). (0x0050) */
+typedef struct mpeg1waveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD fwHeadLayer;
+ DWORD dwHeadBitrate;
+ WORD fwHeadMode;
+ WORD fwHeadModeExt;
+ WORD wHeadEmphasis;
+ WORD fwHeadFlags;
+ DWORD dwPTSLow;
+ DWORD dwPTSHigh;
+} MPEG1WAVEFORMAT;
+typedef MPEG1WAVEFORMAT *PMPEG1WAVEFORMAT;
+typedef MPEG1WAVEFORMAT NEAR *NPMPEG1WAVEFORMAT;
+typedef MPEG1WAVEFORMAT FAR *LPMPEG1WAVEFORMAT;
+
+#define ACM_MPEG_LAYER1 (0x0001)
+#define ACM_MPEG_LAYER2 (0x0002)
+#define ACM_MPEG_LAYER3 (0x0004)
+#define ACM_MPEG_STEREO (0x0001)
+#define ACM_MPEG_JOINTSTEREO (0x0002)
+#define ACM_MPEG_DUALCHANNEL (0x0004)
+#define ACM_MPEG_SINGLECHANNEL (0x0008)
+#define ACM_MPEG_PRIVATEBIT (0x0001)
+#define ACM_MPEG_COPYRIGHT (0x0002)
+#define ACM_MPEG_ORIGINALHOME (0x0004)
+#define ACM_MPEG_PROTECTIONBIT (0x0008)
+#define ACM_MPEG_ID_MPEG1 (0x0010)
+
+
+//
+// Creative's ADPCM structure definitions
+//
+// for WAVE_FORMAT_CREATIVE_ADPCM (0x0200)
+//
+//
+
+typedef struct creative_adpcmwaveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wRevision;
+} CREATIVEADPCMWAVEFORMAT;
+typedef CREATIVEADPCMWAVEFORMAT *PCREATIVEADPCMWAVEFORMAT;
+typedef CREATIVEADPCMWAVEFORMAT NEAR *NPCREATIVEADPCMWAVEFORMAT;
+typedef CREATIVEADPCMWAVEFORMAT FAR *LPCREATIVEADPCMWAVEFORMAT;
+
+//
+// Creative FASTSPEECH
+// WAVEFORMAT_CREATIVE_FASTSPEECH8 (0x0202)
+//
+typedef struct creative_fastspeech8format_tag {
+ WAVEFORMATEX wfx;
+ WORD wRevision;
+} CREATIVEFASTSPEECH8WAVEFORMAT;
+typedef CREATIVEFASTSPEECH8WAVEFORMAT *PCREATIVEFASTSPEECH8WAVEFORMAT;
+typedef CREATIVEFASTSPEECH8WAVEFORMAT NEAR *NPCREATIVEFASTSPEECH8WAVEFORMAT;
+typedef CREATIVEFASTSPEECH8WAVEFORMAT FAR *LPCREATIVEFASTSPEECH8WAVEFORMAT;
+//
+// Creative FASTSPEECH
+// WAVEFORMAT_CREATIVE_FASTSPEECH10 (0x0203)
+//
+typedef struct creative_fastspeech10format_tag {
+ WAVEFORMATEX wfx;
+ WORD wRevision;
+} CREATIVEFASTSPEECH10WAVEFORMAT;
+typedef CREATIVEFASTSPEECH10WAVEFORMAT *PCREATIVEFASTSPEECH10WAVEFORMAT;
+typedef CREATIVEFASTSPEECH10WAVEFORMAT NEAR *NPCREATIVEFASTSPEECH10WAVEFORMAT;
+typedef CREATIVEFASTSPEECH10WAVEFORMAT FAR *LPCREATIVEFASTSPEECH10WAVEFORMAT;
+
+
+//
+// Fujitsu FM Towns 'SND' structure
+//
+// for WAVE_FORMAT_FMMTOWNS_SND (0x0300)
+//
+//
+
+typedef struct fmtowns_snd_waveformat_tag {
+ WAVEFORMATEX wfx;
+ WORD wRevision;
+} FMTOWNS_SND_WAVEFORMAT;
+typedef FMTOWNS_SND_WAVEFORMAT *PFMTOWNS_SND_WAVEFORMAT;
+typedef FMTOWNS_SND_WAVEFORMAT NEAR *NPFMTOWNS_SND_WAVEFORMAT;
+typedef FMTOWNS_SND_WAVEFORMAT FAR *LPFMTOWNS_SND_WAVEFORMAT;
+
+//
+// Olivetti structure
+//
+// for WAVE_FORMAT_OLIGSM (0x1000)
+//
+//
+
+typedef struct oligsmwaveformat_tag {
+ WAVEFORMATEX wfx;
+} OLIGSMWAVEFORMAT;
+typedef OLIGSMWAVEFORMAT *POLIGSMWAVEFORMAT;
+typedef OLIGSMWAVEFORMAT NEAR *NPOLIGSMWAVEFORMAT;
+typedef OLIGSMWAVEFORMAT FAR *LPOLIGSMWAVEFORMAT;
+
+
+//
+// Olivetti structure
+//
+// for WAVE_FORMAT_OLIADPCM (0x1001)
+//
+//
+
+typedef struct oliadpcmwaveformat_tag {
+ WAVEFORMATEX wfx;
+} OLIADPCMWAVEFORMAT;
+typedef OLIADPCMWAVEFORMAT *POLIADPCMWAVEFORMAT;
+typedef OLIADPCMWAVEFORMAT NEAR *NPOLIADPCMWAVEFORMAT ;
+typedef OLIADPCMWAVEFORMAT FAR *LPOLIADPCMWAVEFORMAT;
+
+
+
+
+//
+// Olivetti structure
+//
+// for WAVE_FORMAT_OLICELP (0x1002)
+//
+//
+
+typedef struct olicelpwaveformat_tag {
+ WAVEFORMATEX wfx;
+} OLICELPWAVEFORMAT;
+typedef OLICELPWAVEFORMAT *POLICELPWAVEFORMAT;
+typedef OLICELPWAVEFORMAT NEAR *NPOLICELPWAVEFORMAT ;
+typedef OLICELPWAVEFORMAT FAR *LPOLICELPWAVEFORMAT;
+
+
+
+
+//
+// Olivetti structure
+//
+// for WAVE_FORMAT_OLISBC (0x1003)
+//
+//
+
+typedef struct olisbcwaveformat_tag {
+ WAVEFORMATEX wfx;
+} OLISBCWAVEFORMAT;
+typedef OLISBCWAVEFORMAT *POLISBCWAVEFORMAT;
+typedef OLISBCWAVEFORMAT NEAR *NPOLISBCWAVEFORMAT ;
+typedef OLISBCWAVEFORMAT FAR *LPOLISBCWAVEFORMAT;
+
+
+
+
+//
+// Olivetti structure
+//
+// for WAVE_FORMAT_OLIOPR (0x1004)
+//
+//
+
+typedef struct olioprwaveformat_tag {
+ WAVEFORMATEX wfx;
+} OLIOPRWAVEFORMAT;
+typedef OLIOPRWAVEFORMAT *POLIOPRWAVEFORMAT;
+typedef OLIOPRWAVEFORMAT NEAR *NPOLIOPRWAVEFORMAT ;
+typedef OLIOPRWAVEFORMAT FAR *LPOLIOPRWAVEFORMAT;
+
+
+
+
+
+
+
+//==========================================================================;
+//
+// ACM Wave Filters
+//
+//
+//==========================================================================;
+
+#ifndef _ACM_WAVEFILTER
+#define _ACM_WAVEFILTER
+
+#define WAVE_FILTER_UNKNOWN 0x0000
+#define WAVE_FILTER_DEVELOPMENT (0xFFFF)
+
+typedef struct wavefilter_tag {
+ DWORD cbStruct; /* Size of the filter in bytes */
+ DWORD dwFilterTag; /* filter type */
+ DWORD fdwFilter; /* Flags for the filter (Universal Dfns) */
+ DWORD dwReserved[5]; /* Reserved for system use */
+} WAVEFILTER;
+typedef WAVEFILTER *PWAVEFILTER;
+typedef WAVEFILTER NEAR *NPWAVEFILTER;
+typedef WAVEFILTER FAR *LPWAVEFILTER;
+
+#endif /* _ACM_WAVEFILTER */
+
+
+#ifndef WAVE_FILTER_VOLUME
+#define WAVE_FILTER_VOLUME 0x0001
+
+
+typedef struct wavefilter_volume_tag {
+ WAVEFILTER wfltr;
+ DWORD dwVolume;
+} VOLUMEWAVEFILTER;
+typedef VOLUMEWAVEFILTER *PVOLUMEWAVEFILTER;
+typedef VOLUMEWAVEFILTER NEAR *NPVOLUMEWAVEFILTER;
+typedef VOLUMEWAVEFILTER FAR *LPVOLUMEWAVEFILTER;
+
+#endif /* WAVE_FILTER_VOLUME */
+
+#ifndef WAVE_FILTER_ECHO
+#define WAVE_FILTER_ECHO 0x0002
+
+
+typedef struct wavefilter_echo_tag {
+ WAVEFILTER wfltr;
+ DWORD dwVolume;
+ DWORD dwDelay;
+} ECHOWAVEFILTER;
+typedef ECHOWAVEFILTER *PECHOWAVEFILTER;
+typedef ECHOWAVEFILTER NEAR *NPECHOWAVEFILTER;
+typedef ECHOWAVEFILTER FAR *LPECHOWAVEFILTER;
+
+#endif /* WAVEFILTER_ECHO */
+
+
+
+
+/*//////////////////////////////////////////////////////////////////////////
+//
+// New RIFF WAVE Chunks
+//
+*/
+
+#define RIFFWAVE_inst mmioFOURCC('i','n','s','t')
+
+struct tag_s_RIFFWAVE_inst {
+ BYTE bUnshiftedNote;
+ char chFineTune;
+ char chGain;
+ BYTE bLowNote;
+ BYTE bHighNote;
+ BYTE bLowVelocity;
+ BYTE bHighVelocity;
+};
+
+typedef struct tag_s_RIFFWAVE_inst s_RIFFWAVE_inst;
+
+#endif
+
+/*//////////////////////////////////////////////////////////////////////////
+//
+// New RIFF Forms
+//
+*/
+
+#ifndef NONEWRIFF
+
+/* RIFF AVI */
+
+//
+// AVI file format is specified in a seperate file (AVIFMT.H),
+// which is available in the VfW and Chicago SDK
+//
+
+/* RIFF CPPO */
+
+#define RIFFCPPO mmioFOURCC('C','P','P','O')
+
+#define RIFFCPPO_objr mmioFOURCC('o','b','j','r')
+#define RIFFCPPO_obji mmioFOURCC('o','b','j','i')
+
+#define RIFFCPPO_clsr mmioFOURCC('c','l','s','r')
+#define RIFFCPPO_clsi mmioFOURCC('c','l','s','i')
+
+#define RIFFCPPO_mbr mmioFOURCC('m','b','r',' ')
+
+#define RIFFCPPO_char mmioFOURCC('c','h','a','r')
+
+
+#define RIFFCPPO_byte mmioFOURCC('b','y','t','e')
+#define RIFFCPPO_int mmioFOURCC('i','n','t',' ')
+#define RIFFCPPO_word mmioFOURCC('w','o','r','d')
+#define RIFFCPPO_long mmioFOURCC('l','o','n','g')
+#define RIFFCPPO_dwrd mmioFOURCC('d','w','r','d')
+#define RIFFCPPO_flt mmioFOURCC('f','l','t',' ')
+#define RIFFCPPO_dbl mmioFOURCC('d','b','l',' ')
+#define RIFFCPPO_str mmioFOURCC('s','t','r',' ')
+
+
+#endif
+
+/*
+//////////////////////////////////////////////////////////////////////////
+//
+// DIB Compression Defines
+//
+*/
+
+#ifndef BI_BITFIELDS
+#define BI_BITFIELDS 3
+#endif
+
+#ifndef QUERYDIBSUPPORT
+
+#define QUERYDIBSUPPORT 3073
+#define QDI_SETDIBITS 0x0001
+#define QDI_GETDIBITS 0x0002
+#define QDI_DIBTOSCREEN 0x0004
+#define QDI_STRETCHDIB 0x0008
+
+
+#endif
+
+#ifndef NOBITMAP
+/* Structure definitions */
+
+typedef struct tagEXBMINFOHEADER {
+ BITMAPINFOHEADER bmi;
+ /* extended BITMAPINFOHEADER fields */
+ DWORD biExtDataOffset;
+
+ /* Other stuff will go here */
+
+ /* ... */
+
+ /* Format-specific information */
+ /* biExtDataOffset points here */
+
+} EXBMINFOHEADER;
+
+#endif //NOBITMAP
+
+/* New DIB Compression Defines */
+
+#define BICOMP_IBMULTIMOTION mmioFOURCC('U', 'L', 'T', 'I')
+#define BICOMP_IBMPHOTOMOTION mmioFOURCC('P', 'H', 'M', 'O')
+#define BICOMP_CREATIVEYUV mmioFOURCC('c', 'y', 'u', 'v')
+
+#ifndef NOJPEGDIB
+
+/* New DIB Compression Defines */
+#define JPEG_DIB mmioFOURCC('J','P','E','G') /* Still image JPEG DIB biCompression */
+#define MJPG_DIB mmioFOURCC('M','J','P','G') /* Motion JPEG DIB biCompression */
+
+/* JPEGProcess Definitions */
+#define JPEG_PROCESS_BASELINE 0 /* Baseline DCT */
+
+/* AVI File format extensions */
+#define AVIIF_CONTROLFRAME 0x00000200L /* This is a control frame */
+
+ /* JIF Marker byte pairs in JPEG Interchange Format sequence */
+#define JIFMK_SOF0 0xFFC0 /* SOF Huff - Baseline DCT*/
+#define JIFMK_SOF1 0xFFC1 /* SOF Huff - Extended sequential DCT*/
+#define JIFMK_SOF2 0xFFC2 /* SOF Huff - Progressive DCT*/
+#define JIFMK_SOF3 0xFFC3 /* SOF Huff - Spatial (sequential) lossless*/
+#define JIFMK_SOF5 0xFFC5 /* SOF Huff - Differential sequential DCT*/
+#define JIFMK_SOF6 0xFFC6 /* SOF Huff - Differential progressive DCT*/
+#define JIFMK_SOF7 0xFFC7 /* SOF Huff - Differential spatial*/
+#define JIFMK_JPG 0xFFC8 /* SOF Arith - Reserved for JPEG extensions*/
+#define JIFMK_SOF9 0xFFC9 /* SOF Arith - Extended sequential DCT*/
+#define JIFMK_SOF10 0xFFCA /* SOF Arith - Progressive DCT*/
+#define JIFMK_SOF11 0xFFCB /* SOF Arith - Spatial (sequential) lossless*/
+#define JIFMK_SOF13 0xFFCD /* SOF Arith - Differential sequential DCT*/
+#define JIFMK_SOF14 0xFFCE /* SOF Arith - Differential progressive DCT*/
+#define JIFMK_SOF15 0xFFCF /* SOF Arith - Differential spatial*/
+#define JIFMK_DHT 0xFFC4 /* Define Huffman Table(s) */
+#define JIFMK_DAC 0xFFCC /* Define Arithmetic coding conditioning(s) */
+#define JIFMK_RST0 0xFFD0 /* Restart with modulo 8 count 0 */
+#define JIFMK_RST1 0xFFD1 /* Restart with modulo 8 count 1 */
+#define JIFMK_RST2 0xFFD2 /* Restart with modulo 8 count 2 */
+#define JIFMK_RST3 0xFFD3 /* Restart with modulo 8 count 3 */
+#define JIFMK_RST4 0xFFD4 /* Restart with modulo 8 count 4 */
+#define JIFMK_RST5 0xFFD5 /* Restart with modulo 8 count 5 */
+#define JIFMK_RST6 0xFFD6 /* Restart with modulo 8 count 6 */
+#define JIFMK_RST7 0xFFD7 /* Restart with modulo 8 count 7 */
+#define JIFMK_SOI 0xFFD8 /* Start of Image */
+#define JIFMK_EOI 0xFFD9 /* End of Image */
+#define JIFMK_SOS 0xFFDA /* Start of Scan */
+#define JIFMK_DQT 0xFFDB /* Define quantization Table(s) */
+#define JIFMK_DNL 0xFFDC /* Define Number of Lines */
+#define JIFMK_DRI 0xFFDD /* Define Restart Interval */
+#define JIFMK_DHP 0xFFDE /* Define Hierarchical progression */
+#define JIFMK_EXP 0xFFDF /* Expand Reference Component(s) */
+#define JIFMK_APP0 0xFFE0 /* Application Field 0*/
+#define JIFMK_APP1 0xFFE1 /* Application Field 1*/
+#define JIFMK_APP2 0xFFE2 /* Application Field 2*/
+#define JIFMK_APP3 0xFFE3 /* Application Field 3*/
+#define JIFMK_APP4 0xFFE4 /* Application Field 4*/
+#define JIFMK_APP5 0xFFE5 /* Application Field 5*/
+#define JIFMK_APP6 0xFFE6 /* Application Field 6*/
+#define JIFMK_APP7 0xFFE7 /* Application Field 7*/
+#define JIFMK_JPG0 0xFFF0 /* Reserved for JPEG extensions */
+#define JIFMK_JPG1 0xFFF1 /* Reserved for JPEG extensions */
+#define JIFMK_JPG2 0xFFF2 /* Reserved for JPEG extensions */
+#define JIFMK_JPG3 0xFFF3 /* Reserved for JPEG extensions */
+#define JIFMK_JPG4 0xFFF4 /* Reserved for JPEG extensions */
+#define JIFMK_JPG5 0xFFF5 /* Reserved for JPEG extensions */
+#define JIFMK_JPG6 0xFFF6 /* Reserved for JPEG extensions */
+#define JIFMK_JPG7 0xFFF7 /* Reserved for JPEG extensions */
+#define JIFMK_JPG8 0xFFF8 /* Reserved for JPEG extensions */
+#define JIFMK_JPG9 0xFFF9 /* Reserved for JPEG extensions */
+#define JIFMK_JPG10 0xFFFA /* Reserved for JPEG extensions */
+#define JIFMK_JPG11 0xFFFB /* Reserved for JPEG extensions */
+#define JIFMK_JPG12 0xFFFC /* Reserved for JPEG extensions */
+#define JIFMK_JPG13 0xFFFD /* Reserved for JPEG extensions */
+#define JIFMK_COM 0xFFFE /* Comment */
+#define JIFMK_TEM 0xFF01 /* for temp private use arith code */
+#define JIFMK_RES 0xFF02 /* Reserved */
+#define JIFMK_00 0xFF00 /* Zero stuffed byte - entropy data */
+#define JIFMK_FF 0xFFFF /* Fill byte */
+
+
+/* JPEGColorSpaceID Definitions */
+#define JPEG_Y 1 /* Y only component of YCbCr */
+#define JPEG_YCbCr 2 /* YCbCr as define by CCIR 601 */
+#define JPEG_RGB 3 /* 3 component RGB */
+
+/* Structure definitions */
+
+typedef struct tagJPEGINFOHEADER {
+ /* compression-specific fields */
+ /* these fields are defined for 'JPEG' and 'MJPG' */
+ DWORD JPEGSize;
+ DWORD JPEGProcess;
+
+ /* Process specific fields */
+ DWORD JPEGColorSpaceID;
+ DWORD JPEGBitsPerSample;
+ DWORD JPEGHSubSampling;
+ DWORD JPEGVSubSampling;
+} JPEGINFOHEADER;
+
+
+#ifdef MJPGDHTSEG_STORAGE
+
+/* Default DHT Segment */
+
+MJPGHDTSEG_STORAGE BYTE MJPGDHTSeg[0x1A4] = {
+ /* JPEG DHT Segment for YCrCb omitted from MJPG data */
+0xFF,0xC4,0x01,0xA2,
+0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x01,0x00,0x03,0x01,0x01,0x01,0x01,
+0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
+0x08,0x09,0x0A,0x0B,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,
+0x00,0x01,0x7D,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
+0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xA1,0x08,0x23,0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,
+0x33,0x62,0x72,0x82,0x09,0x0A,0x16,0x17,0x18,0x19,0x1A,0x25,0x26,0x27,0x28,0x29,0x2A,0x34,
+0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,
+0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,
+0x79,0x7A,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,
+0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,
+0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,
+0xDA,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,
+0xF8,0xF9,0xFA,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,
+0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,
+0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xA1,0xB1,0xC1,0x09,0x23,0x33,0x52,0xF0,0x15,0x62,
+0x72,0xD1,0x0A,0x16,0x24,0x34,0xE1,0x25,0xF1,0x17,0x18,0x19,0x1A,0x26,0x27,0x28,0x29,0x2A,
+0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,
+0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,
+0x79,0x7A,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
+0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,
+0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,
+0xD9,0xDA,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,
+0xF9,0xFA
+};
+
+/* End DHT default */
+#endif
+
+/* End JPEG */
+#endif
+
+/*//////////////////////////////////////////////////////////////////////////
+//
+// Defined IC types
+*/
+
+#ifndef NONEWIC
+
+#ifndef ICTYPE_VIDEO
+#define ICTYPE_VIDEO mmioFOURCC('v', 'i', 'd', 'c')
+#define ICTYPE_AUDIO mmioFOURCC('a', 'u', 'd', 'c')
+#endif
+
+#endif
+/*
+// Misc. FOURCC registration
+*/
+
+/* Sierra Semiconductor: RDSP- Confidential RIFF file format
+// for the storage and downloading of DSP
+// code for Audio and communications devices.
+*/
+#define FOURCC_RDSP mmioFOURCC('R', 'D', 'S', 'P')
+
+#ifndef MMNOMIXER
+#define MIXERCONTROL_CONTROLTYPE_SRS_MTS (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 6)
+#define MIXERCONTROL_CONTROLTYPE_SRS_ONOFF (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 7)
+#define MIXERCONTROL_CONTROLTYPE_SRS_SYNTHSELECT (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 8)
+#endif
+
+#ifndef RC_INVOKED
+//current chicago line#pragma pack() /* Revert to default packing */
+#include "poppack.h" /* Revert to default packing */
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* _INC_MMREG */
diff --git a/public/sdk/inc/mmsystem.h b/public/sdk/inc/mmsystem.h
new file mode 100644
index 000000000..a9d352e28
--- /dev/null
+++ b/public/sdk/inc/mmsystem.h
@@ -0,0 +1,3798 @@
+/*==========================================================================
+ *
+ * mmsystem.h -- Include file for Multimedia API's
+ *
+ * Version 4.00
+ *
+ * Copyright (C) 1992-1996 Microsoft Corporation. All Rights Reserved.
+ *
+ *--------------------------------------------------------------------------
+ *
+ * Define: Prevent inclusion of:
+ * -------------- --------------------------------------------------------
+ * MMNODRV Installable driver support
+ * MMNOSOUND Sound support
+ * MMNOWAVE Waveform support
+ * MMNOMIDI MIDI support
+ * MMNOAUX Auxiliary audio support
+ * MMNOMIXER Mixer support
+ * MMNOTIMER Timer support
+ * MMNOJOY Joystick support
+ * MMNOMCI MCI support
+ * MMNOMMIO Multimedia file I/O support
+ * MMNOMMSYSTEM General MMSYSTEM functions
+ *
+ *==========================================================================
+ */
+
+#ifndef _INC_MMSYSTEM
+#define _INC_MMSYSTEM /* #defined if mmsystem.h has been included */
+
+
+
+#ifdef _WIN32
+#include <pshpack1.h>
+#else
+#ifndef RC_INVOKED
+#pragma pack(1)
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+#ifdef _WIN32
+#ifndef _WINMM_
+#define WINMMAPI DECLSPEC_IMPORT
+#else
+#define WINMMAPI
+#endif
+#define _loadds
+#define _huge
+#else
+#define WINMMAPI
+#endif
+
+
+/****************************************************************************
+
+ General constants and data types
+
+****************************************************************************/
+
+
+/* general constants */
+#define MAXPNAMELEN 32 /* max product name length (including NULL) */
+#define MAXERRORLENGTH 256 /* max error text length (including NULL) */
+#define MAX_JOYSTICKOEMVXDNAME 260 /* max oem vxd name length (including NULL) */
+
+
+/*
+ * Microsoft Manufacturer and Product ID's (these have been moved to
+ * MMREG.H for Windows 4.00 and above).
+ */
+#if (WINVER <= 0x0400) // BUGBUG changed to 0x400 from 0x030A for NT
+#ifndef MM_MICROSOFT
+#define MM_MICROSOFT 1 /* Microsoft Corporation */
+#endif
+
+#ifndef MM_MIDI_MAPPER
+#define MM_MIDI_MAPPER 1 /* MIDI Mapper */
+#define MM_WAVE_MAPPER 2 /* Wave Mapper */
+#define MM_SNDBLST_MIDIOUT 3 /* Sound Blaster MIDI output port */
+#define MM_SNDBLST_MIDIIN 4 /* Sound Blaster MIDI input port */
+#define MM_SNDBLST_SYNTH 5 /* Sound Blaster internal synthesizer */
+#define MM_SNDBLST_WAVEOUT 6 /* Sound Blaster waveform output */
+#define MM_SNDBLST_WAVEIN 7 /* Sound Blaster waveform input */
+#define MM_ADLIB 9 /* Ad Lib-compatible synthesizer */
+#define MM_MPU401_MIDIOUT 10 /* MPU401-compatible MIDI output port */
+#define MM_MPU401_MIDIIN 11 /* MPU401-compatible MIDI input port */
+#define MM_PC_JOYSTICK 12 /* Joystick adapter */
+#endif
+#endif
+
+
+
+/* general data types */
+
+#ifdef _WIN32
+typedef UINT MMVERSION; /* major (high byte), minor (low byte) */
+#else
+typedef UINT VERSION; /* major (high byte), minor (low byte) */
+#endif
+typedef UINT MMRESULT; /* error return code, 0 means no error */
+ /* call as if(err=xxxx(...)) Error(err); else */
+#define _MMRESULT_
+
+typedef UINT FAR *LPUINT;
+
+
+
+/* MMTIME data structure */
+typedef struct mmtime_tag
+{
+ UINT wType; /* indicates the contents of the union */
+ union
+ {
+ DWORD ms; /* milliseconds */
+ DWORD sample; /* samples */
+ DWORD cb; /* byte count */
+ DWORD ticks; /* ticks in MIDI stream */
+
+ /* SMPTE */
+ struct
+ {
+ BYTE hour; /* hours */
+ BYTE min; /* minutes */
+ BYTE sec; /* seconds */
+ BYTE frame; /* frames */
+ BYTE fps; /* frames per second */
+ BYTE dummy; /* pad */
+#ifdef _WIN32
+ BYTE pad[2];
+#endif
+ } smpte;
+
+ /* MIDI */
+ struct
+ {
+ DWORD songptrpos; /* song pointer position */
+ } midi;
+ } u;
+} MMTIME, *PMMTIME, NEAR *NPMMTIME, FAR *LPMMTIME;
+
+/* types for wType field in MMTIME struct */
+#define TIME_MS 0x0001 /* time in milliseconds */
+#define TIME_SAMPLES 0x0002 /* number of wave samples */
+#define TIME_BYTES 0x0004 /* current byte offset */
+#define TIME_SMPTE 0x0008 /* SMPTE time */
+#define TIME_MIDI 0x0010 /* MIDI time */
+#define TIME_TICKS 0x0020 /* Ticks within MIDI stream */
+
+
+/*
+ *
+ *
+ */
+#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
+ ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
+ ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+
+
+
+/****************************************************************************
+
+ Multimedia Extensions Window Messages
+
+****************************************************************************/
+
+#define MM_JOY1MOVE 0x3A0 /* joystick */
+#define MM_JOY2MOVE 0x3A1
+#define MM_JOY1ZMOVE 0x3A2
+#define MM_JOY2ZMOVE 0x3A3
+#define MM_JOY1BUTTONDOWN 0x3B5
+#define MM_JOY2BUTTONDOWN 0x3B6
+#define MM_JOY1BUTTONUP 0x3B7
+#define MM_JOY2BUTTONUP 0x3B8
+
+#define MM_MCINOTIFY 0x3B9 /* MCI */
+
+#define MM_WOM_OPEN 0x3BB /* waveform output */
+#define MM_WOM_CLOSE 0x3BC
+#define MM_WOM_DONE 0x3BD
+
+#define MM_WIM_OPEN 0x3BE /* waveform input */
+#define MM_WIM_CLOSE 0x3BF
+#define MM_WIM_DATA 0x3C0
+
+#define MM_MIM_OPEN 0x3C1 /* MIDI input */
+#define MM_MIM_CLOSE 0x3C2
+#define MM_MIM_DATA 0x3C3
+#define MM_MIM_LONGDATA 0x3C4
+#define MM_MIM_ERROR 0x3C5
+#define MM_MIM_LONGERROR 0x3C6
+
+#define MM_MOM_OPEN 0x3C7 /* MIDI output */
+#define MM_MOM_CLOSE 0x3C8
+#define MM_MOM_DONE 0x3C9
+
+/* these are also in msvideo.h */
+#ifndef MM_DRVM_OPEN
+ #define MM_DRVM_OPEN 0x3D0 /* installable drivers */
+ #define MM_DRVM_CLOSE 0x3D1
+ #define MM_DRVM_DATA 0x3D2
+ #define MM_DRVM_ERROR 0x3D3
+#endif
+
+/* these are used by msacm.h */
+#define MM_STREAM_OPEN 0x3D4
+#define MM_STREAM_CLOSE 0x3D5
+#define MM_STREAM_DONE 0x3D6
+#define MM_STREAM_ERROR 0x3D7
+
+#if(WINVER >= 0x0400)
+#define MM_MOM_POSITIONCB 0x3CA /* Callback for MEVT_POSITIONCB */
+
+#ifndef MM_MCISIGNAL
+ #define MM_MCISIGNAL 0x3CB
+#endif
+
+#define MM_MIM_MOREDATA 0x3CC /* MIM_DONE w/ pending events */
+
+
+#endif /* WINVER >= 0x0400 */
+#define MM_MIXM_LINE_CHANGE 0x3D0 /* mixer line change notify */
+#define MM_MIXM_CONTROL_CHANGE 0x3D1 /* mixer control change notify */
+
+
+/****************************************************************************
+
+ String resource number bases (internal use)
+
+****************************************************************************/
+
+#define MMSYSERR_BASE 0
+#define WAVERR_BASE 32
+#define MIDIERR_BASE 64
+#define TIMERR_BASE 96
+#define JOYERR_BASE 160
+#define MCIERR_BASE 256
+#define MIXERR_BASE 1024
+
+#define MCI_STRING_OFFSET 512
+#define MCI_VD_OFFSET 1024
+#define MCI_CD_OFFSET 1088
+#define MCI_WAVE_OFFSET 1152
+#define MCI_SEQ_OFFSET 1216
+
+/****************************************************************************
+
+ General error return values
+
+****************************************************************************/
+
+/* general error return values */
+#define MMSYSERR_NOERROR 0 /* no error */
+#define MMSYSERR_ERROR (MMSYSERR_BASE + 1) /* unspecified error */
+#define MMSYSERR_BADDEVICEID (MMSYSERR_BASE + 2) /* device ID out of range */
+#define MMSYSERR_NOTENABLED (MMSYSERR_BASE + 3) /* driver failed enable */
+#define MMSYSERR_ALLOCATED (MMSYSERR_BASE + 4) /* device already allocated */
+#define MMSYSERR_INVALHANDLE (MMSYSERR_BASE + 5) /* device handle is invalid */
+#define MMSYSERR_NODRIVER (MMSYSERR_BASE + 6) /* no device driver present */
+#define MMSYSERR_NOMEM (MMSYSERR_BASE + 7) /* memory allocation error */
+#define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8) /* function isn't supported */
+#define MMSYSERR_BADERRNUM (MMSYSERR_BASE + 9) /* error value out of range */
+#define MMSYSERR_INVALFLAG (MMSYSERR_BASE + 10) /* invalid flag passed */
+#define MMSYSERR_INVALPARAM (MMSYSERR_BASE + 11) /* invalid parameter passed */
+#define MMSYSERR_HANDLEBUSY (MMSYSERR_BASE + 12) /* handle being used */
+ /* simultaneously on another */
+ /* thread (eg callback) */
+#define MMSYSERR_INVALIDALIAS (MMSYSERR_BASE + 13) /* specified alias not found */
+#define MMSYSERR_BADDB (MMSYSERR_BASE + 14) /* bad registry database */
+#define MMSYSERR_KEYNOTFOUND (MMSYSERR_BASE + 15) /* registry key not found */
+#define MMSYSERR_READERROR (MMSYSERR_BASE + 16) /* registry read error */
+#define MMSYSERR_WRITEERROR (MMSYSERR_BASE + 17) /* registry write error */
+#define MMSYSERR_DELETEERROR (MMSYSERR_BASE + 18) /* registry delete error */
+#define MMSYSERR_VALNOTFOUND (MMSYSERR_BASE + 19) /* registry value not found */
+#define MMSYSERR_NODRIVERCB (MMSYSERR_BASE + 20) /* driver does not call DriverCallback */
+#define MMSYSERR_LASTERROR (MMSYSERR_BASE + 20) /* last error in range */
+
+#if (WINVER < 0x030a) || defined(_WIN32)
+DECLARE_HANDLE(HDRVR);
+#endif /* ifdef WINVER < 0x030a */
+
+#ifndef MMNODRV
+
+
+/****************************************************************************
+
+ Installable driver support
+
+****************************************************************************/
+
+#ifdef _WIN32
+typedef struct DRVCONFIGINFOEX {
+ DWORD dwDCISize;
+ LPCWSTR lpszDCISectionName;
+ LPCWSTR lpszDCIAliasName;
+ DWORD dnDevNode;
+} DRVCONFIGINFOEX, *PDRVCONFIGINFOEX, NEAR *NPDRVCONFIGINFOEX, FAR *LPDRVCONFIGINFOEX;
+
+#else
+typedef struct DRVCONFIGINFOEX {
+ DWORD dwDCISize;
+ LPCSTR lpszDCISectionName;
+ LPCSTR lpszDCIAliasName;
+ DWORD dnDevNode;
+} DRVCONFIGINFOEX, *PDRVCONFIGINFOEX, NEAR *NPDRVCONFIGINFOEX, FAR *LPDRVCONFIGINFOEX;
+#endif
+
+#if (WINVER < 0x030a) || defined(_WIN32)
+
+#ifndef DRV_LOAD
+
+/* Driver messages */
+#define DRV_LOAD 0x0001
+#define DRV_ENABLE 0x0002
+#define DRV_OPEN 0x0003
+#define DRV_CLOSE 0x0004
+#define DRV_DISABLE 0x0005
+#define DRV_FREE 0x0006
+#define DRV_CONFIGURE 0x0007
+#define DRV_QUERYCONFIGURE 0x0008
+#define DRV_INSTALL 0x0009
+#define DRV_REMOVE 0x000A
+#define DRV_EXITSESSION 0x000B
+#define DRV_POWER 0x000F
+#define DRV_RESERVED 0x0800
+#define DRV_USER 0x4000
+
+/* LPARAM of DRV_CONFIGURE message */
+#ifdef _WIN32
+typedef struct tagDRVCONFIGINFO {
+ DWORD dwDCISize;
+ LPCWSTR lpszDCISectionName;
+ LPCWSTR lpszDCIAliasName;
+} DRVCONFIGINFO, *PDRVCONFIGINFO, NEAR *NPDRVCONFIGINFO, FAR *LPDRVCONFIGINFO;
+#else
+typedef struct tagDRVCONFIGINFO {
+ DWORD dwDCISize;
+ LPCSTR lpszDCISectionName;
+ LPCSTR lpszDCIAliasName;
+} DRVCONFIGINFO, *PDRVCONFIGINFO, NEAR *NPDRVCONFIGINFO, FAR *LPDRVCONFIGINFO;
+#endif
+
+/* Supported return values for DRV_CONFIGURE message */
+#define DRVCNF_CANCEL 0x0000
+#define DRVCNF_OK 0x0001
+#define DRVCNF_RESTART 0x0002
+
+/* installable driver function prototypes */
+#ifdef _WIN32
+
+typedef LRESULT (CALLBACK* DRIVERPROC)(DWORD, HDRVR, UINT, LPARAM, LPARAM);
+
+WINMMAPI LRESULT WINAPI CloseDriver(HDRVR hDriver, LONG lParam1, LONG lParam2);
+WINMMAPI HDRVR WINAPI OpenDriver(LPCWSTR szDriverName, LPCWSTR szSectionName, LONG lParam2);
+WINMMAPI LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT message, LONG lParam1, LONG lParam2);
+WINMMAPI HMODULE WINAPI DrvGetModuleHandle(HDRVR hDriver);
+WINMMAPI HMODULE WINAPI GetDriverModuleHandle(HDRVR hDriver);
+WINMMAPI LRESULT WINAPI DefDriverProc(DWORD dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
+#else
+LRESULT WINAPI DrvClose(HDRVR hdrvr, LPARAM lParam1, LPARAM lParam2);
+HDRVR WINAPI DrvOpen(LPCSTR szDriverName, LPCSTR szSectionName, LPARAM lParam2);
+LRESULT WINAPI DrvSendMessage(HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
+HINSTANCE WINAPI DrvGetModuleHandle(HDRVR hdrvr);
+LRESULT WINAPI DrvDefDriverProc(DWORD dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
+#define DefDriverProc DrvDefDriverProc
+#endif /* ifdef _WIN32 */
+#endif /* DRV_LOAD */
+#endif /* ifdef (WINVER < 0x030a) || defined(_WIN32) */
+
+#if (WINVER >= 0x030a)
+/* return values from DriverProc() function */
+#define DRV_CANCEL DRVCNF_CANCEL
+#define DRV_OK DRVCNF_OK
+#define DRV_RESTART DRVCNF_RESTART
+
+#endif /* ifdef WINVER >= 0x030a */
+
+#define DRV_MCI_FIRST DRV_RESERVED
+#define DRV_MCI_LAST (DRV_RESERVED + 0xFFF)
+
+#endif /* ifndef MMNODRV */
+
+
+/****************************************************************************
+
+ Driver callback support
+
+****************************************************************************/
+
+/* flags used with waveOutOpen(), waveInOpen(), midiInOpen(), and */
+/* midiOutOpen() to specify the type of the dwCallback parameter. */
+
+#define CALLBACK_TYPEMASK 0x00070000l /* callback type mask */
+#define CALLBACK_NULL 0x00000000l /* no callback */
+#define CALLBACK_WINDOW 0x00010000l /* dwCallback is a HWND */
+#define CALLBACK_TASK 0x00020000l /* dwCallback is a HTASK */
+#define CALLBACK_FUNCTION 0x00030000l /* dwCallback is a FARPROC */
+#ifdef _WIN32
+#define CALLBACK_THREAD (CALLBACK_TASK)/* thread ID replaces 16 bit task */
+#define CALLBACK_EVENT 0x00050000l /* dwCallback is an EVENT Handle */
+#endif
+
+
+typedef void (CALLBACK DRVCALLBACK)(HDRVR hdrvr, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
+
+typedef DRVCALLBACK FAR *LPDRVCALLBACK;
+#ifdef _WIN32
+typedef DRVCALLBACK *PDRVCALLBACK;
+#endif
+
+#ifndef MMNOMMSYSTEM
+/****************************************************************************
+
+ General MMSYSTEM support
+
+****************************************************************************/
+
+#if (WINVER <= 0x030A)
+WINMMAPI UINT WINAPI mmsystemGetVersion(void);
+#endif
+#ifdef _WIN32
+#define OutputDebugStr OutputDebugString
+#else
+void WINAPI OutputDebugStr(LPCSTR);
+#endif
+
+#endif /* ifndef MMNOMMSYSTEM */
+
+
+#ifndef MMNOSOUND
+/****************************************************************************
+
+ Sound support
+
+****************************************************************************/
+
+#ifdef _WIN32
+
+WINMMAPI BOOL WINAPI sndPlaySoundA(LPCSTR pszSound, UINT fuSound);
+WINMMAPI BOOL WINAPI sndPlaySoundW(LPCWSTR pszSound, UINT fuSound);
+#ifdef UNICODE
+#define sndPlaySound sndPlaySoundW
+#else
+#define sndPlaySound sndPlaySoundA
+#endif // !UNICODE
+
+#else
+BOOL WINAPI sndPlaySound(LPCSTR pszSound, UINT fuSound);
+#endif
+
+/*
+ * flag values for fuSound and fdwSound arguments on [snd]PlaySound
+ */
+#define SND_SYNC 0x0000 /* play synchronously (default) */
+#define SND_ASYNC 0x0001 /* play asynchronously */
+#define SND_NODEFAULT 0x0002 /* silence (!default) if sound not found */
+#define SND_MEMORY 0x0004 /* pszSound points to a memory file */
+#define SND_LOOP 0x0008 /* loop the sound until next sndPlaySound */
+#define SND_NOSTOP 0x0010 /* don't stop any currently playing sound */
+
+#define SND_NOWAIT 0x00002000L /* don't wait if the driver is busy */
+#define SND_ALIAS 0x00010000L /* name is a registry alias */
+#define SND_ALIAS_ID 0x00110000L /* alias is a predefined ID */
+#define SND_FILENAME 0x00020000L /* name is file name */
+#define SND_RESOURCE 0x00040004L /* name is resource name or atom */
+#if(WINVER >= 0x0400)
+#define SND_PURGE 0x0040 /* purge non-static events for task */
+#define SND_APPLICATION 0x0080 /* look for application specific association */
+#endif /* WINVER >= 0x0400 */
+
+#define SND_ALIAS_START 0 /* alias base */
+
+#ifdef _WIN32
+#define sndAlias(ch0, ch1) (SND_ALIAS_START + (DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8))
+
+#define SND_ALIAS_SYSTEMASTERISK sndAlias('S', '*')
+#define SND_ALIAS_SYSTEMQUESTION sndAlias('S', '?')
+#define SND_ALIAS_SYSTEMHAND sndAlias('S', 'H')
+#define SND_ALIAS_SYSTEMEXIT sndAlias('S', 'E')
+#define SND_ALIAS_SYSTEMSTART sndAlias('S', 'S')
+#define SND_ALIAS_SYSTEMWELCOME sndAlias('S', 'W')
+#define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S', '!')
+#define SND_ALIAS_SYSTEMDEFAULT sndAlias('S', 'D')
+
+
+WINMMAPI BOOL WINAPI PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
+WINMMAPI BOOL WINAPI PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound);
+#ifdef UNICODE
+#define PlaySound PlaySoundW
+#else
+#define PlaySound PlaySoundA
+#endif // !UNICODE
+
+#else
+BOOL WINAPI PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
+#endif
+
+#endif /* ifndef MMNOSOUND */
+
+#ifndef MMNOWAVE
+/****************************************************************************
+
+ Waveform audio support
+
+****************************************************************************/
+
+/* waveform audio error return values */
+#define WAVERR_BADFORMAT (WAVERR_BASE + 0) /* unsupported wave format */
+#define WAVERR_STILLPLAYING (WAVERR_BASE + 1) /* still something playing */
+#define WAVERR_UNPREPARED (WAVERR_BASE + 2) /* header not prepared */
+#define WAVERR_SYNC (WAVERR_BASE + 3) /* device is synchronous */
+#define WAVERR_LASTERROR (WAVERR_BASE + 3) /* last error in range */
+
+/* waveform audio data types */
+DECLARE_HANDLE(HWAVE);
+DECLARE_HANDLE(HWAVEIN);
+DECLARE_HANDLE(HWAVEOUT);
+typedef HWAVEIN FAR *LPHWAVEIN;
+typedef HWAVEOUT FAR *LPHWAVEOUT;
+typedef DRVCALLBACK WAVECALLBACK;
+typedef WAVECALLBACK FAR *LPWAVECALLBACK;
+
+/* wave callback messages */
+#define WOM_OPEN MM_WOM_OPEN
+#define WOM_CLOSE MM_WOM_CLOSE
+#define WOM_DONE MM_WOM_DONE
+#define WIM_OPEN MM_WIM_OPEN
+#define WIM_CLOSE MM_WIM_CLOSE
+#define WIM_DATA MM_WIM_DATA
+
+/* device ID for wave device mapper */
+#define WAVE_MAPPER ((UINT)-1)
+
+/* flags for dwFlags parameter in waveOutOpen() and waveInOpen() */
+#define WAVE_FORMAT_QUERY 0x0001
+#define WAVE_ALLOWSYNC 0x0002
+#if(WINVER >= 0x0400)
+#define WAVE_MAPPED 0x0004
+#define WAVE_FORMAT_DIRECT 0x0008
+#define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
+#endif /* WINVER >= 0x0400 */
+
+
+/* wave data block header */
+typedef struct wavehdr_tag {
+ LPSTR lpData; /* pointer to locked data buffer */
+ DWORD dwBufferLength; /* length of data buffer */
+ DWORD dwBytesRecorded; /* used for input only */
+ DWORD dwUser; /* for client's use */
+ DWORD dwFlags; /* assorted flags (see defines) */
+ DWORD dwLoops; /* loop control counter */
+ struct wavehdr_tag FAR *lpNext; /* reserved for driver */
+ DWORD reserved; /* reserved for driver */
+} WAVEHDR, *PWAVEHDR, NEAR *NPWAVEHDR, FAR *LPWAVEHDR;
+
+/* flags for dwFlags field of WAVEHDR */
+#define WHDR_DONE 0x00000001 /* done bit */
+#define WHDR_PREPARED 0x00000002 /* set if this header has been prepared */
+#define WHDR_BEGINLOOP 0x00000004 /* loop start block */
+#define WHDR_ENDLOOP 0x00000008 /* loop end block */
+#define WHDR_INQUEUE 0x00000010 /* reserved for driver */
+
+
+/* waveform output device capabilities structure */
+#ifdef _WIN32
+
+typedef struct tagWAVEOUTCAPSA {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ MMVERSION vDriverVersion; /* version of the driver */
+ CHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ DWORD dwFormats; /* formats supported */
+ WORD wChannels; /* number of sources supported */
+ WORD wReserved1; /* packing */
+ DWORD dwSupport; /* functionality supported by driver */
+} WAVEOUTCAPSA, *PWAVEOUTCAPSA, *NPWAVEOUTCAPSA, *LPWAVEOUTCAPSA;
+typedef struct tagWAVEOUTCAPSW {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ MMVERSION vDriverVersion; /* version of the driver */
+ WCHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ DWORD dwFormats; /* formats supported */
+ WORD wChannels; /* number of sources supported */
+ WORD wReserved1; /* packing */
+ DWORD dwSupport; /* functionality supported by driver */
+} WAVEOUTCAPSW, *PWAVEOUTCAPSW, *NPWAVEOUTCAPSW, *LPWAVEOUTCAPSW;
+#ifdef UNICODE
+typedef WAVEOUTCAPSW WAVEOUTCAPS;
+typedef PWAVEOUTCAPSW PWAVEOUTCAPS;
+typedef NPWAVEOUTCAPSW NPWAVEOUTCAPS;
+typedef LPWAVEOUTCAPSW LPWAVEOUTCAPS;
+#else
+typedef WAVEOUTCAPSA WAVEOUTCAPS;
+typedef PWAVEOUTCAPSA PWAVEOUTCAPS;
+typedef NPWAVEOUTCAPSA NPWAVEOUTCAPS;
+typedef LPWAVEOUTCAPSA LPWAVEOUTCAPS;
+#endif // UNICODE
+
+#else
+typedef struct waveoutcaps_tag {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ VERSION vDriverVersion; /* version of the driver */
+ char szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ DWORD dwFormats; /* formats supported */
+ WORD wChannels; /* number of sources supported */
+ DWORD dwSupport; /* functionality supported by driver */
+} WAVEOUTCAPS, *PWAVEOUTCAPS, NEAR *NPWAVEOUTCAPS, FAR *LPWAVEOUTCAPS;
+#endif
+
+/* flags for dwSupport field of WAVEOUTCAPS */
+#define WAVECAPS_PITCH 0x0001 /* supports pitch control */
+#define WAVECAPS_PLAYBACKRATE 0x0002 /* supports playback rate control */
+#define WAVECAPS_VOLUME 0x0004 /* supports volume control */
+#define WAVECAPS_LRVOLUME 0x0008 /* separate left-right volume control */
+#define WAVECAPS_SYNC 0x0010
+#define WAVECAPS_SAMPLEACCURATE 0x0020
+
+
+/* waveform input device capabilities structure */
+#ifdef _WIN32
+
+typedef struct tagWAVEINCAPSA {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ MMVERSION vDriverVersion; /* version of the driver */
+ CHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ DWORD dwFormats; /* formats supported */
+ WORD wChannels; /* number of channels supported */
+ WORD wReserved1; /* structure packing */
+} WAVEINCAPSA, *PWAVEINCAPSA, *NPWAVEINCAPSA, *LPWAVEINCAPSA;
+typedef struct tagWAVEINCAPSW {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ MMVERSION vDriverVersion; /* version of the driver */
+ WCHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ DWORD dwFormats; /* formats supported */
+ WORD wChannels; /* number of channels supported */
+ WORD wReserved1; /* structure packing */
+} WAVEINCAPSW, *PWAVEINCAPSW, *NPWAVEINCAPSW, *LPWAVEINCAPSW;
+#ifdef UNICODE
+typedef WAVEINCAPSW WAVEINCAPS;
+typedef PWAVEINCAPSW PWAVEINCAPS;
+typedef NPWAVEINCAPSW NPWAVEINCAPS;
+typedef LPWAVEINCAPSW LPWAVEINCAPS;
+#else
+typedef WAVEINCAPSA WAVEINCAPS;
+typedef PWAVEINCAPSA PWAVEINCAPS;
+typedef NPWAVEINCAPSA NPWAVEINCAPS;
+typedef LPWAVEINCAPSA LPWAVEINCAPS;
+#endif // UNICODE
+
+#else
+typedef struct waveincaps_tag {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ VERSION vDriverVersion; /* version of the driver */
+ char szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ DWORD dwFormats; /* formats supported */
+ WORD wChannels; /* number of channels supported */
+} WAVEINCAPS, *PWAVEINCAPS, NEAR *NPWAVEINCAPS, FAR *LPWAVEINCAPS;
+#endif
+
+/* defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS */
+#define WAVE_INVALIDFORMAT 0x00000000 /* invalid format */
+#define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */
+#define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */
+#define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */
+#define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */
+#define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */
+#define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */
+#define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */
+#define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */
+#define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */
+#define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */
+#define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */
+#define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */
+
+
+/* OLD general waveform format structure (information common to all formats) */
+typedef struct waveformat_tag {
+ WORD wFormatTag; /* format type */
+ WORD nChannels; /* number of channels (i.e. mono, stereo, etc.) */
+ DWORD nSamplesPerSec; /* sample rate */
+ DWORD nAvgBytesPerSec; /* for buffer estimation */
+ WORD nBlockAlign; /* block size of data */
+} WAVEFORMAT, *PWAVEFORMAT, NEAR *NPWAVEFORMAT, FAR *LPWAVEFORMAT;
+
+/* flags for wFormatTag field of WAVEFORMAT */
+#define WAVE_FORMAT_PCM 1
+
+
+/* specific waveform format structure for PCM data */
+typedef struct pcmwaveformat_tag {
+ WAVEFORMAT wf;
+ WORD wBitsPerSample;
+} PCMWAVEFORMAT, *PPCMWAVEFORMAT, NEAR *NPPCMWAVEFORMAT, FAR *LPPCMWAVEFORMAT;
+
+#ifndef _WAVEFORMATEX_
+#define _WAVEFORMATEX_
+
+/*
+ * extended waveform format structure used for all non-PCM formats. this
+ * structure is common to all non-PCM formats.
+ */
+typedef struct tWAVEFORMATEX
+{
+ WORD wFormatTag; /* format type */
+ WORD nChannels; /* number of channels (i.e. mono, stereo...) */
+ DWORD nSamplesPerSec; /* sample rate */
+ DWORD nAvgBytesPerSec; /* for buffer estimation */
+ WORD nBlockAlign; /* block size of data */
+ WORD wBitsPerSample; /* number of bits per sample of mono data */
+ WORD cbSize; /* the count in bytes of the size of */
+ /* extra information (after cbSize) */
+} WAVEFORMATEX, *PWAVEFORMATEX, NEAR *NPWAVEFORMATEX, FAR *LPWAVEFORMATEX;
+typedef const WAVEFORMATEX FAR *LPCWAVEFORMATEX;
+
+#endif /* _WAVEFORMATEX_ */
+
+/* waveform audio function prototypes */
+WINMMAPI UINT WINAPI waveOutGetNumDevs(void);
+
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI waveOutGetDevCapsA(UINT uDeviceID, LPWAVEOUTCAPSA pwoc, UINT cbwoc);
+WINMMAPI MMRESULT WINAPI waveOutGetDevCapsW(UINT uDeviceID, LPWAVEOUTCAPSW pwoc, UINT cbwoc);
+#ifdef UNICODE
+#define waveOutGetDevCaps waveOutGetDevCapsW
+#else
+#define waveOutGetDevCaps waveOutGetDevCapsA
+#endif // !UNICODE
+
+#else
+WINMMAPI MMRESULT WINAPI waveOutGetDevCaps(UINT uDeviceID, LPWAVEOUTCAPS pwoc, UINT cbwoc);
+#endif
+
+#if (WINVER >= 0x0400)
+WINMMAPI MMRESULT WINAPI waveOutGetVolume(HWAVEOUT hwo, LPDWORD pdwVolume);
+WINMMAPI MMRESULT WINAPI waveOutSetVolume(HWAVEOUT hwo, DWORD dwVolume);
+#else
+WINMMAPI MMRESULT WINAPI waveOutGetVolume(UINT uId, LPDWORD pdwVolume);
+WINMMAPI MMRESULT WINAPI waveOutSetVolume(UINT uId, DWORD dwVolume);
+#endif
+
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI waveOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText);
+WINMMAPI MMRESULT WINAPI waveOutGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
+#ifdef UNICODE
+#define waveOutGetErrorText waveOutGetErrorTextW
+#else
+#define waveOutGetErrorText waveOutGetErrorTextA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI waveOutGetErrorText(MMRESULT mmrError, LPSTR pszText, UINT cchText);
+#endif
+
+WINMMAPI MMRESULT WINAPI waveOutOpen(LPHWAVEOUT phwo, UINT uDeviceID,
+ LPCWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
+
+WINMMAPI MMRESULT WINAPI waveOutClose(HWAVEOUT hwo);
+WINMMAPI MMRESULT WINAPI waveOutPrepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
+WINMMAPI MMRESULT WINAPI waveOutUnprepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
+WINMMAPI MMRESULT WINAPI waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
+WINMMAPI MMRESULT WINAPI waveOutPause(HWAVEOUT hwo);
+WINMMAPI MMRESULT WINAPI waveOutRestart(HWAVEOUT hwo);
+WINMMAPI MMRESULT WINAPI waveOutReset(HWAVEOUT hwo);
+WINMMAPI MMRESULT WINAPI waveOutBreakLoop(HWAVEOUT hwo);
+WINMMAPI MMRESULT WINAPI waveOutGetPosition(HWAVEOUT hwo, LPMMTIME pmmt, UINT cbmmt);
+WINMMAPI MMRESULT WINAPI waveOutGetPitch(HWAVEOUT hwo, LPDWORD pdwPitch);
+WINMMAPI MMRESULT WINAPI waveOutSetPitch(HWAVEOUT hwo, DWORD dwPitch);
+WINMMAPI MMRESULT WINAPI waveOutGetPlaybackRate(HWAVEOUT hwo, LPDWORD pdwRate);
+WINMMAPI MMRESULT WINAPI waveOutSetPlaybackRate(HWAVEOUT hwo, DWORD dwRate);
+WINMMAPI MMRESULT WINAPI waveOutGetID(HWAVEOUT hwo, LPUINT puDeviceID);
+
+#if (WINVER >= 0x030a)
+#ifdef _WIN32
+WINMMAPI MMRESULT WINAPI waveOutMessage(HWAVEOUT hwo, UINT uMsg, DWORD dw1, DWORD dw2);
+#else
+DWORD WINAPI waveOutMessage(HWAVEOUT hwo, UINT uMsg, DWORD dw1, DWORD dw2);
+#endif
+#endif /* ifdef WINVER >= 0x030a */
+
+WINMMAPI UINT WINAPI waveInGetNumDevs(void);
+
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI waveInGetDevCapsA(UINT uDeviceID, LPWAVEINCAPSA pwic, UINT cbwic);
+WINMMAPI MMRESULT WINAPI waveInGetDevCapsW(UINT uDeviceID, LPWAVEINCAPSW pwic, UINT cbwic);
+#ifdef UNICODE
+#define waveInGetDevCaps waveInGetDevCapsW
+#else
+#define waveInGetDevCaps waveInGetDevCapsA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI waveInGetDevCaps(UINT uDeviceID, LPWAVEINCAPS pwic, UINT cbwic);
+#endif
+
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI waveInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText);
+WINMMAPI MMRESULT WINAPI waveInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
+#ifdef UNICODE
+#define waveInGetErrorText waveInGetErrorTextW
+#else
+#define waveInGetErrorText waveInGetErrorTextA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI waveInGetErrorText(MMRESULT mmrError, LPSTR pszText, UINT cchText);
+#endif
+
+WINMMAPI MMRESULT WINAPI waveInOpen(LPHWAVEIN phwi, UINT uDeviceID,
+ LPCWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
+
+WINMMAPI MMRESULT WINAPI waveInClose(HWAVEIN hwi);
+WINMMAPI MMRESULT WINAPI waveInPrepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
+WINMMAPI MMRESULT WINAPI waveInUnprepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
+WINMMAPI MMRESULT WINAPI waveInAddBuffer(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
+WINMMAPI MMRESULT WINAPI waveInStart(HWAVEIN hwi);
+WINMMAPI MMRESULT WINAPI waveInStop(HWAVEIN hwi);
+WINMMAPI MMRESULT WINAPI waveInReset(HWAVEIN hwi);
+WINMMAPI MMRESULT WINAPI waveInGetPosition(HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt);
+WINMMAPI MMRESULT WINAPI waveInGetID(HWAVEIN hwi, LPUINT puDeviceID);
+
+#if (WINVER >= 0x030a)
+#ifdef _WIN32
+WINMMAPI MMRESULT WINAPI waveInMessage(HWAVEIN hwi, UINT uMsg, DWORD dw1, DWORD dw2);
+#else
+DWORD WINAPI waveInMessage(HWAVEIN hwi, UINT uMsg, DWORD dw1, DWORD dw2);
+#endif
+#endif /* ifdef WINVER >= 0x030a */
+
+#endif /* ifndef MMNOWAVE */
+
+
+#ifndef MMNOMIDI
+/****************************************************************************
+
+ MIDI audio support
+
+****************************************************************************/
+
+/* MIDI error return values */
+#define MIDIERR_UNPREPARED (MIDIERR_BASE + 0) /* header not prepared */
+#define MIDIERR_STILLPLAYING (MIDIERR_BASE + 1) /* still something playing */
+#define MIDIERR_NOMAP (MIDIERR_BASE + 2) /* no configured instruments */
+#define MIDIERR_NOTREADY (MIDIERR_BASE + 3) /* hardware is still busy */
+#define MIDIERR_NODEVICE (MIDIERR_BASE + 4) /* port no longer connected */
+#define MIDIERR_INVALIDSETUP (MIDIERR_BASE + 5) /* invalid MIF */
+#define MIDIERR_BADOPENMODE (MIDIERR_BASE + 6) /* operation unsupported w/ open mode */
+#define MIDIERR_DONT_CONTINUE (MIDIERR_BASE + 7) /* thru device 'eating' a message */
+#define MIDIERR_LASTERROR (MIDIERR_BASE + 7) /* last error in range */
+
+/* MIDI audio data types */
+DECLARE_HANDLE(HMIDI);
+DECLARE_HANDLE(HMIDIIN);
+DECLARE_HANDLE(HMIDIOUT);
+DECLARE_HANDLE(HMIDISTRM);
+typedef HMIDI FAR *LPHMIDI;
+typedef HMIDIIN FAR *LPHMIDIIN;
+typedef HMIDIOUT FAR *LPHMIDIOUT;
+typedef HMIDISTRM FAR *LPHMIDISTRM;
+typedef DRVCALLBACK MIDICALLBACK;
+typedef MIDICALLBACK FAR *LPMIDICALLBACK;
+#define MIDIPATCHSIZE 128
+typedef WORD PATCHARRAY[MIDIPATCHSIZE];
+typedef WORD FAR *LPPATCHARRAY;
+typedef WORD KEYARRAY[MIDIPATCHSIZE];
+typedef WORD FAR *LPKEYARRAY;
+
+/* MIDI callback messages */
+#define MIM_OPEN MM_MIM_OPEN
+#define MIM_CLOSE MM_MIM_CLOSE
+#define MIM_DATA MM_MIM_DATA
+#define MIM_LONGDATA MM_MIM_LONGDATA
+#define MIM_ERROR MM_MIM_ERROR
+#define MIM_LONGERROR MM_MIM_LONGERROR
+#define MOM_OPEN MM_MOM_OPEN
+#define MOM_CLOSE MM_MOM_CLOSE
+#define MOM_DONE MM_MOM_DONE
+
+#if(WINVER >= 0x0400)
+#define MIM_MOREDATA MM_MIM_MOREDATA
+#define MOM_POSITIONCB MM_MOM_POSITIONCB
+#endif /* WINVER >= 0x0400 */
+
+/* device ID for MIDI mapper */
+#define MIDIMAPPER ((UINT)-1)
+#define MIDI_MAPPER ((UINT)-1)
+
+#if(WINVER >= 0x0400)
+/* flags for dwFlags parm of midiInOpen() */
+#define MIDI_IO_STATUS 0x00000020L
+#endif /* WINVER >= 0x0400 */
+
+/* flags for wFlags parm of midiOutCachePatches(), midiOutCacheDrumPatches() */
+#define MIDI_CACHE_ALL 1
+#define MIDI_CACHE_BESTFIT 2
+#define MIDI_CACHE_QUERY 3
+#define MIDI_UNCACHE 4
+
+
+/* MIDI output device capabilities structure */
+#ifdef _WIN32
+
+typedef struct tagMIDIOUTCAPSA {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ MMVERSION vDriverVersion; /* version of the driver */
+ CHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ WORD wTechnology; /* type of device */
+ WORD wVoices; /* # of voices (internal synth only) */
+ WORD wNotes; /* max # of notes (internal synth only) */
+ WORD wChannelMask; /* channels used (internal synth only) */
+ DWORD dwSupport; /* functionality supported by driver */
+} MIDIOUTCAPSA, *PMIDIOUTCAPSA, *NPMIDIOUTCAPSA, *LPMIDIOUTCAPSA;
+typedef struct tagMIDIOUTCAPSW {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ MMVERSION vDriverVersion; /* version of the driver */
+ WCHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ WORD wTechnology; /* type of device */
+ WORD wVoices; /* # of voices (internal synth only) */
+ WORD wNotes; /* max # of notes (internal synth only) */
+ WORD wChannelMask; /* channels used (internal synth only) */
+ DWORD dwSupport; /* functionality supported by driver */
+} MIDIOUTCAPSW, *PMIDIOUTCAPSW, *NPMIDIOUTCAPSW, *LPMIDIOUTCAPSW;
+#ifdef UNICODE
+typedef MIDIOUTCAPSW MIDIOUTCAPS;
+typedef PMIDIOUTCAPSW PMIDIOUTCAPS;
+typedef NPMIDIOUTCAPSW NPMIDIOUTCAPS;
+typedef LPMIDIOUTCAPSW LPMIDIOUTCAPS;
+#else
+typedef MIDIOUTCAPSA MIDIOUTCAPS;
+typedef PMIDIOUTCAPSA PMIDIOUTCAPS;
+typedef NPMIDIOUTCAPSA NPMIDIOUTCAPS;
+typedef LPMIDIOUTCAPSA LPMIDIOUTCAPS;
+#endif // UNICODE
+
+#else
+typedef struct midioutcaps_tag {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ VERSION vDriverVersion; /* version of the driver */
+ char szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ WORD wTechnology; /* type of device */
+ WORD wVoices; /* # of voices (internal synth only) */
+ WORD wNotes; /* max # of notes (internal synth only) */
+ WORD wChannelMask; /* channels used (internal synth only) */
+ DWORD dwSupport; /* functionality supported by driver */
+} MIDIOUTCAPS, *PMIDIOUTCAPS, NEAR *NPMIDIOUTCAPS, FAR *LPMIDIOUTCAPS;
+#endif
+
+/* flags for wTechnology field of MIDIOUTCAPS structure */
+#define MOD_MIDIPORT 1 /* output port */
+#define MOD_SYNTH 2 /* generic internal synth */
+#define MOD_SQSYNTH 3 /* square wave internal synth */
+#define MOD_FMSYNTH 4 /* FM internal synth */
+#define MOD_MAPPER 5 /* MIDI mapper */
+
+/* flags for dwSupport field of MIDIOUTCAPS structure */
+#define MIDICAPS_VOLUME 0x0001 /* supports volume control */
+#define MIDICAPS_LRVOLUME 0x0002 /* separate left-right volume control */
+#define MIDICAPS_CACHE 0x0004
+#if(WINVER >= 0x0400)
+#define MIDICAPS_STREAM 0x0008 /* driver supports midiStreamOut directly */
+#endif /* WINVER >= 0x0400 */
+
+
+/* MIDI input device capabilities structure */
+#ifdef _WIN32
+
+typedef struct tagMIDIINCAPSA {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ MMVERSION vDriverVersion; /* version of the driver */
+ CHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+#if (WINVER >= 0x0400)
+ DWORD dwSupport; /* functionality supported by driver */
+#endif
+} MIDIINCAPSA, *PMIDIINCAPSA, *NPMIDIINCAPSA, *LPMIDIINCAPSA;
+typedef struct tagMIDIINCAPSW {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ MMVERSION vDriverVersion; /* version of the driver */
+ WCHAR szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+#if (WINVER >= 0x0400)
+ DWORD dwSupport; /* functionality supported by driver */
+#endif
+} MIDIINCAPSW, *PMIDIINCAPSW, *NPMIDIINCAPSW, *LPMIDIINCAPSW;
+#ifdef UNICODE
+typedef MIDIINCAPSW MIDIINCAPS;
+typedef PMIDIINCAPSW PMIDIINCAPS;
+typedef NPMIDIINCAPSW NPMIDIINCAPS;
+typedef LPMIDIINCAPSW LPMIDIINCAPS;
+#else
+typedef MIDIINCAPSA MIDIINCAPS;
+typedef PMIDIINCAPSA PMIDIINCAPS;
+typedef NPMIDIINCAPSA NPMIDIINCAPS;
+typedef LPMIDIINCAPSA LPMIDIINCAPS;
+#endif // UNICODE
+
+#else
+typedef struct midiincaps_tag {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ VERSION vDriverVersion; /* version of the driver */
+ char szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+#if (WINVER >= 0x0400)
+ DWORD dwSupport; /* functionality supported by driver */
+#endif
+} MIDIINCAPS, *PMIDIINCAPS, NEAR *NPMIDIINCAPS, FAR *LPMIDIINCAPS;
+#endif
+
+
+/* MIDI data block header */
+typedef struct midihdr_tag {
+ LPSTR lpData; /* pointer to locked data block */
+ DWORD dwBufferLength; /* length of data in data block */
+ DWORD dwBytesRecorded; /* used for input only */
+ DWORD dwUser; /* for client's use */
+ DWORD dwFlags; /* assorted flags (see defines) */
+ struct midihdr_tag far *lpNext; /* reserved for driver */
+ DWORD reserved; /* reserved for driver */
+#if (WINVER >= 0x0400)
+ DWORD dwOffset; /* Callback offset into buffer */
+ DWORD dwReserved[8]; /* Reserved for MMSYSTEM */
+#endif
+} MIDIHDR, *PMIDIHDR, NEAR *NPMIDIHDR, FAR *LPMIDIHDR;
+
+
+#if(WINVER >= 0x0400)
+typedef struct midievent_tag
+{
+ DWORD dwDeltaTime; /* Ticks since last event */
+ DWORD dwStreamID; /* Reserved; must be zero */
+ DWORD dwEvent; /* Event type and parameters */
+ DWORD dwParms[1]; /* Parameters if this is a long event */
+} MIDIEVENT;
+
+typedef struct midistrmbuffver_tag
+{
+ DWORD dwVersion; /* Stream buffer format version */
+ DWORD dwMid; /* Manufacturer ID as defined in MMREG.H */
+ DWORD dwOEMVersion; /* Manufacturer version for custom ext */
+} MIDISTRMBUFFVER;
+#endif /* WINVER >= 0x0400 */
+
+/* flags for dwFlags field of MIDIHDR structure */
+#define MHDR_DONE 0x00000001 /* done bit */
+#define MHDR_PREPARED 0x00000002 /* set if header prepared */
+#define MHDR_INQUEUE 0x00000004 /* reserved for driver */
+#define MHDR_ISSTRM 0x00000008 /* Buffer is stream buffer */
+
+#if(WINVER >= 0x0400)
+/* */
+/* Type codes which go in the high byte of the event DWORD of a stream buffer */
+/* */
+/* Type codes 00-7F contain parameters within the low 24 bits */
+/* Type codes 80-FF contain a length of their parameter in the low 24 */
+/* bits, followed by their parameter data in the buffer. The event */
+/* DWORD contains the exact byte length; the parm data itself must be */
+/* padded to be an even multiple of 4 bytes long. */
+/* */
+
+#define MEVT_F_SHORT 0x00000000L
+#define MEVT_F_LONG 0x80000000L
+#define MEVT_F_CALLBACK 0x40000000L
+
+#define MEVT_EVENTTYPE(x) ((BYTE)(((x)>>24)&0xFF))
+#define MEVT_EVENTPARM(x) ((DWORD)((x)&0x00FFFFFFL))
+
+#define MEVT_SHORTMSG ((BYTE)0x00) /* parm = shortmsg for midiOutShortMsg */
+#define MEVT_TEMPO ((BYTE)0x01) /* parm = new tempo in microsec/qn */
+#define MEVT_NOP ((BYTE)0x02) /* parm = unused; does nothing */
+
+/* 0x04-0x7F reserved */
+
+#define MEVT_LONGMSG ((BYTE)0x80) /* parm = bytes to send verbatim */
+#define MEVT_COMMENT ((BYTE)0x82) /* parm = comment data */
+#define MEVT_VERSION ((BYTE)0x84) /* parm = MIDISTRMBUFFVER struct */
+
+/* 0x81-0xFF reserved */
+
+#define MIDISTRM_ERROR (-2)
+
+/* */
+/* Structures and defines for midiStreamProperty */
+/* */
+#define MIDIPROP_SET 0x80000000L
+#define MIDIPROP_GET 0x40000000L
+
+/* These are intentionally both non-zero so the app cannot accidentally */
+/* leave the operation off and happen to appear to work due to default */
+/* action. */
+
+#define MIDIPROP_TIMEDIV 0x00000001L
+#define MIDIPROP_TEMPO 0x00000002L
+
+typedef struct midiproptimediv_tag
+{
+ DWORD cbStruct;
+ DWORD dwTimeDiv;
+} MIDIPROPTIMEDIV, FAR *LPMIDIPROPTIMEDIV;
+
+typedef struct midiproptempo_tag
+{
+ DWORD cbStruct;
+ DWORD dwTempo;
+} MIDIPROPTEMPO, FAR *LPMIDIPROPTEMPO;
+
+#endif /* WINVER >= 0x0400 */
+
+/* MIDI function prototypes */
+WINMMAPI UINT WINAPI midiOutGetNumDevs(void);
+#if(WINVER >= 0x0400)
+WINMMAPI MMRESULT WINAPI midiStreamOpen(LPHMIDISTRM phms, LPUINT puDeviceID, DWORD cMidi, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
+WINMMAPI MMRESULT WINAPI midiStreamClose(HMIDISTRM hms);
+
+WINMMAPI MMRESULT WINAPI midiStreamProperty(HMIDISTRM hms, LPBYTE lppropdata, DWORD dwProperty);
+WINMMAPI MMRESULT WINAPI midiStreamPosition(HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt);
+
+WINMMAPI MMRESULT WINAPI midiStreamOut(HMIDISTRM hms, LPMIDIHDR pmh, UINT cbmh);
+WINMMAPI MMRESULT WINAPI midiStreamPause(HMIDISTRM hms);
+WINMMAPI MMRESULT WINAPI midiStreamRestart(HMIDISTRM hms);
+WINMMAPI MMRESULT WINAPI midiStreamStop(HMIDISTRM hms);
+
+#ifdef _WIN32
+WINMMAPI MMRESULT WINAPI midiConnect(HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved);
+WINMMAPI MMRESULT WINAPI midiDisconnect(HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved);
+#endif
+#endif /* WINVER >= 0x0400 */
+
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI midiOutGetDevCapsA(UINT uDeviceID, LPMIDIOUTCAPSA pmoc, UINT cbmoc);
+WINMMAPI MMRESULT WINAPI midiOutGetDevCapsW(UINT uDeviceID, LPMIDIOUTCAPSW pmoc, UINT cbmoc);
+#ifdef UNICODE
+#define midiOutGetDevCaps midiOutGetDevCapsW
+#else
+#define midiOutGetDevCaps midiOutGetDevCapsA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI midiOutGetDevCaps(UINT uDeviceID, LPMIDIOUTCAPS pmoc, UINT cbmoc);
+#endif
+
+#if (WINVER >= 0x0400)
+WINMMAPI MMRESULT WINAPI midiOutGetVolume(HMIDIOUT hmo, LPDWORD pdwVolume);
+WINMMAPI MMRESULT WINAPI midiOutSetVolume(HMIDIOUT hmo, DWORD dwVolume);
+#else
+WINMMAPI MMRESULT WINAPI midiOutGetVolume(UINT uId, LPDWORD pdwVolume);
+WINMMAPI MMRESULT WINAPI midiOutSetVolume(UINT uId, DWORD dwVolume);
+#endif
+
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI midiOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText);
+WINMMAPI MMRESULT WINAPI midiOutGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
+#ifdef UNICODE
+#define midiOutGetErrorText midiOutGetErrorTextW
+#else
+#define midiOutGetErrorText midiOutGetErrorTextA
+#endif // !UNICODE
+
+#else
+WINMMAPI MMRESULT WINAPI midiOutGetErrorText(MMRESULT mmrError, LPSTR pszText, UINT cchText);
+#endif
+
+WINMMAPI MMRESULT WINAPI midiOutOpen(LPHMIDIOUT phmo, UINT uDeviceID,
+ DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
+WINMMAPI MMRESULT WINAPI midiOutClose(HMIDIOUT hmo);
+WINMMAPI MMRESULT WINAPI midiOutPrepareHeader(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh);
+WINMMAPI MMRESULT WINAPI midiOutUnprepareHeader(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh);
+WINMMAPI MMRESULT WINAPI midiOutShortMsg(HMIDIOUT hmo, DWORD dwMsg);
+WINMMAPI MMRESULT WINAPI midiOutLongMsg(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh);
+WINMMAPI MMRESULT WINAPI midiOutReset(HMIDIOUT hmo);
+WINMMAPI MMRESULT WINAPI midiOutCachePatches(HMIDIOUT hmo, UINT uBank, LPWORD pwpa, UINT fuCache);
+WINMMAPI MMRESULT WINAPI midiOutCacheDrumPatches(HMIDIOUT hmo, UINT uPatch, LPWORD pwkya, UINT fuCache);
+WINMMAPI MMRESULT WINAPI midiOutGetID(HMIDIOUT hmo, LPUINT puDeviceID);
+
+#if (WINVER >= 0x030a)
+#ifdef _WIN32
+WINMMAPI MMRESULT WINAPI midiOutMessage(HMIDIOUT hmo, UINT uMsg, DWORD dw1, DWORD dw2);
+#else
+DWORD WINAPI midiOutMessage(HMIDIOUT hmo, UINT uMsg, DWORD dw1, DWORD dw2);
+#endif
+#endif /* ifdef WINVER >= 0x030a */
+
+WINMMAPI UINT WINAPI midiInGetNumDevs(void);
+
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI midiInGetDevCapsA(UINT uDeviceID, LPMIDIINCAPSA pmic, UINT cbmic);
+WINMMAPI MMRESULT WINAPI midiInGetDevCapsW(UINT uDeviceID, LPMIDIINCAPSW pmic, UINT cbmic);
+#ifdef UNICODE
+#define midiInGetDevCaps midiInGetDevCapsW
+#else
+#define midiInGetDevCaps midiInGetDevCapsA
+#endif // !UNICODE
+WINMMAPI MMRESULT WINAPI midiInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText);
+WINMMAPI MMRESULT WINAPI midiInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
+#ifdef UNICODE
+#define midiInGetErrorText midiInGetErrorTextW
+#else
+#define midiInGetErrorText midiInGetErrorTextA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI midiInGetDevCaps(UINT uDeviceID, LPMIDIINCAPS pmic, UINT cbmic);
+WINMMAPI MMRESULT WINAPI midiInGetErrorText(MMRESULT mmrError, LPSTR pszText, UINT cchText);
+#endif
+
+WINMMAPI MMRESULT WINAPI midiInOpen(LPHMIDIIN phmi, UINT uDeviceID,
+ DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
+WINMMAPI MMRESULT WINAPI midiInClose(HMIDIIN hmi);
+WINMMAPI MMRESULT WINAPI midiInPrepareHeader(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh);
+WINMMAPI MMRESULT WINAPI midiInUnprepareHeader(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh);
+WINMMAPI MMRESULT WINAPI midiInAddBuffer(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh);
+WINMMAPI MMRESULT WINAPI midiInStart(HMIDIIN hmi);
+WINMMAPI MMRESULT WINAPI midiInStop(HMIDIIN hmi);
+WINMMAPI MMRESULT WINAPI midiInReset(HMIDIIN hmi);
+WINMMAPI MMRESULT WINAPI midiInGetID(HMIDIIN hmi, LPUINT puDeviceID);
+
+#if (WINVER >= 0x030a)
+#ifdef _WIN32
+WINMMAPI MMRESULT WINAPI midiInMessage(HMIDIIN hmi, UINT uMsg, DWORD dw1, DWORD dw2);
+#else
+DWORD WINAPI midiInMessage(HMIDIIN hmi, UINT uMsg, DWORD dw1, DWORD dw2);
+#endif
+#endif /* ifdef WINVER >= 0x030a */
+
+
+#endif /* ifndef MMNOMIDI */
+
+
+#ifndef MMNOAUX
+/****************************************************************************
+
+ Auxiliary audio support
+
+****************************************************************************/
+
+/* device ID for aux device mapper */
+#define AUX_MAPPER ((UINT)-1)
+
+
+/* Auxiliary audio device capabilities structure */
+#ifdef _WIN32
+
+typedef struct tagAUXCAPSA {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ MMVERSION vDriverVersion; /* version of the driver */
+ CHAR szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
+ WORD wTechnology; /* type of device */
+ WORD wReserved1; /* padding */
+ DWORD dwSupport; /* functionality supported by driver */
+} AUXCAPSA, *PAUXCAPSA, *NPAUXCAPSA, *LPAUXCAPSA;
+typedef struct tagAUXCAPSW {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ MMVERSION vDriverVersion; /* version of the driver */
+ WCHAR szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
+ WORD wTechnology; /* type of device */
+ WORD wReserved1; /* padding */
+ DWORD dwSupport; /* functionality supported by driver */
+} AUXCAPSW, *PAUXCAPSW, *NPAUXCAPSW, *LPAUXCAPSW;
+#ifdef UNICODE
+typedef AUXCAPSW AUXCAPS;
+typedef PAUXCAPSW PAUXCAPS;
+typedef NPAUXCAPSW NPAUXCAPS;
+typedef LPAUXCAPSW LPAUXCAPS;
+#else
+typedef AUXCAPSA AUXCAPS;
+typedef PAUXCAPSA PAUXCAPS;
+typedef NPAUXCAPSA NPAUXCAPS;
+typedef LPAUXCAPSA LPAUXCAPS;
+#endif // UNICODE
+
+#else
+typedef struct auxcaps_tag {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ VERSION vDriverVersion; /* version of the driver */
+ char szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ WORD wTechnology; /* type of device */
+ DWORD dwSupport; /* functionality supported by driver */
+} AUXCAPS, *PAUXCAPS, NEAR *NPAUXCAPS, FAR *LPAUXCAPS;
+#endif
+
+/* flags for wTechnology field in AUXCAPS structure */
+#define AUXCAPS_CDAUDIO 1 /* audio from internal CD-ROM drive */
+#define AUXCAPS_AUXIN 2 /* audio from auxiliary input jacks */
+
+/* flags for dwSupport field in AUXCAPS structure */
+#define AUXCAPS_VOLUME 0x0001 /* supports volume control */
+#define AUXCAPS_LRVOLUME 0x0002 /* separate left-right volume control */
+
+/* auxiliary audio function prototypes */
+WINMMAPI UINT WINAPI auxGetNumDevs(void);
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI auxGetDevCapsA(UINT uDeviceID, LPAUXCAPSA pac, UINT cbac);
+WINMMAPI MMRESULT WINAPI auxGetDevCapsW(UINT uDeviceID, LPAUXCAPSW pac, UINT cbac);
+#ifdef UNICODE
+#define auxGetDevCaps auxGetDevCapsW
+#else
+#define auxGetDevCaps auxGetDevCapsA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI auxGetDevCaps(UINT uDeviceID, LPAUXCAPS pac, UINT cbac);
+#endif
+WINMMAPI MMRESULT WINAPI auxSetVolume(UINT uDeviceID, DWORD dwVolume);
+WINMMAPI MMRESULT WINAPI auxGetVolume(UINT uDeviceID, LPDWORD pdwVolume);
+
+#if (WINVER >= 0x030a)
+#ifdef _WIN32
+WINMMAPI MMRESULT WINAPI auxOutMessage(UINT uDeviceID, UINT uMsg, DWORD dw1, DWORD dw2);
+#else
+DWORD WINAPI auxOutMessage(UINT uDeviceID, UINT uMsg, DWORD dw1, DWORD dw2);
+#endif
+#endif /* ifdef WINVER >= 0x030a */
+
+#endif /* ifndef MMNOAUX */
+
+
+
+#ifndef MMNOMIXER
+/****************************************************************************
+
+ Mixer Support
+
+****************************************************************************/
+
+DECLARE_HANDLE(HMIXEROBJ);
+typedef HMIXEROBJ FAR *LPHMIXEROBJ;
+
+DECLARE_HANDLE(HMIXER);
+typedef HMIXER FAR *LPHMIXER;
+
+#define MIXER_SHORT_NAME_CHARS 16
+#define MIXER_LONG_NAME_CHARS 64
+
+/* */
+/* MMRESULT error return values specific to the mixer API */
+/* */
+/* */
+#define MIXERR_INVALLINE (MIXERR_BASE + 0)
+#define MIXERR_INVALCONTROL (MIXERR_BASE + 1)
+#define MIXERR_INVALVALUE (MIXERR_BASE + 2)
+#define MIXERR_LASTERROR (MIXERR_BASE + 2)
+
+
+#define MIXER_OBJECTF_HANDLE 0x80000000L
+#define MIXER_OBJECTF_MIXER 0x00000000L
+#define MIXER_OBJECTF_HMIXER (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
+#define MIXER_OBJECTF_WAVEOUT 0x10000000L
+#define MIXER_OBJECTF_HWAVEOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
+#define MIXER_OBJECTF_WAVEIN 0x20000000L
+#define MIXER_OBJECTF_HWAVEIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
+#define MIXER_OBJECTF_MIDIOUT 0x30000000L
+#define MIXER_OBJECTF_HMIDIOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
+#define MIXER_OBJECTF_MIDIIN 0x40000000L
+#define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
+#define MIXER_OBJECTF_AUX 0x50000000L
+
+
+WINMMAPI UINT WINAPI mixerGetNumDevs(void);
+
+#ifdef _WIN32
+
+typedef struct tagMIXERCAPSA {
+ WORD wMid; /* manufacturer id */
+ WORD wPid; /* product id */
+ MMVERSION vDriverVersion; /* version of the driver */
+ CHAR szPname[MAXPNAMELEN]; /* product name */
+ DWORD fdwSupport; /* misc. support bits */
+ DWORD cDestinations; /* count of destinations */
+} MIXERCAPSA, *PMIXERCAPSA, *LPMIXERCAPSA;
+typedef struct tagMIXERCAPSW {
+ WORD wMid; /* manufacturer id */
+ WORD wPid; /* product id */
+ MMVERSION vDriverVersion; /* version of the driver */
+ WCHAR szPname[MAXPNAMELEN]; /* product name */
+ DWORD fdwSupport; /* misc. support bits */
+ DWORD cDestinations; /* count of destinations */
+} MIXERCAPSW, *PMIXERCAPSW, *LPMIXERCAPSW;
+#ifdef UNICODE
+typedef MIXERCAPSW MIXERCAPS;
+typedef PMIXERCAPSW PMIXERCAPS;
+typedef LPMIXERCAPSW LPMIXERCAPS;
+#else
+typedef MIXERCAPSA MIXERCAPS;
+typedef PMIXERCAPSA PMIXERCAPS;
+typedef LPMIXERCAPSA LPMIXERCAPS;
+#endif // UNICODE
+
+#else
+typedef struct tMIXERCAPS {
+ WORD wMid; /* manufacturer id */
+ WORD wPid; /* product id */
+ VERSION vDriverVersion; /* version of the driver */
+ char szPname[MAXPNAMELEN]; /* product name */
+ DWORD fdwSupport; /* misc. support bits */
+ DWORD cDestinations; /* count of destinations */
+} MIXERCAPS, *PMIXERCAPS, FAR *LPMIXERCAPS;
+#endif
+
+
+
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI mixerGetDevCapsA(UINT uMxId, LPMIXERCAPSA pmxcaps, UINT cbmxcaps);
+WINMMAPI MMRESULT WINAPI mixerGetDevCapsW(UINT uMxId, LPMIXERCAPSW pmxcaps, UINT cbmxcaps);
+#ifdef UNICODE
+#define mixerGetDevCaps mixerGetDevCapsW
+#else
+#define mixerGetDevCaps mixerGetDevCapsA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI mixerGetDevCaps(UINT uMxId, LPMIXERCAPS pmxcaps, UINT cbmxcaps);
+#endif
+
+WINMMAPI MMRESULT WINAPI mixerOpen(LPHMIXER phmx, UINT uMxId, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
+
+
+WINMMAPI MMRESULT WINAPI mixerClose(HMIXER hmx);
+
+WINMMAPI DWORD WINAPI mixerMessage(HMIXER hmx, UINT uMsg, DWORD dwParam1, DWORD dwParam2);
+
+#ifdef _WIN32
+
+typedef struct tagMIXERLINEA {
+ DWORD cbStruct; /* size of MIXERLINE structure */
+ DWORD dwDestination; /* zero based destination index */
+ DWORD dwSource; /* zero based source index (if source) */
+ DWORD dwLineID; /* unique line id for mixer device */
+ DWORD fdwLine; /* state/information about line */
+ DWORD dwUser; /* driver specific information */
+ DWORD dwComponentType; /* component type line connects to */
+ DWORD cChannels; /* number of channels line supports */
+ DWORD cConnections; /* number of connections [possible] */
+ DWORD cControls; /* number of controls at this line */
+ CHAR szShortName[MIXER_SHORT_NAME_CHARS];
+ CHAR szName[MIXER_LONG_NAME_CHARS];
+ struct {
+ DWORD dwType; /* MIXERLINE_TARGETTYPE_xxxx */
+ DWORD dwDeviceID; /* target device ID of device type */
+ WORD wMid; /* of target device */
+ WORD wPid; /* " */
+ MMVERSION vDriverVersion; /* " */
+ CHAR szPname[MAXPNAMELEN]; /* " */
+ } Target;
+} MIXERLINEA, *PMIXERLINEA, *LPMIXERLINEA;
+typedef struct tagMIXERLINEW {
+ DWORD cbStruct; /* size of MIXERLINE structure */
+ DWORD dwDestination; /* zero based destination index */
+ DWORD dwSource; /* zero based source index (if source) */
+ DWORD dwLineID; /* unique line id for mixer device */
+ DWORD fdwLine; /* state/information about line */
+ DWORD dwUser; /* driver specific information */
+ DWORD dwComponentType; /* component type line connects to */
+ DWORD cChannels; /* number of channels line supports */
+ DWORD cConnections; /* number of connections [possible] */
+ DWORD cControls; /* number of controls at this line */
+ WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
+ WCHAR szName[MIXER_LONG_NAME_CHARS];
+ struct {
+ DWORD dwType; /* MIXERLINE_TARGETTYPE_xxxx */
+ DWORD dwDeviceID; /* target device ID of device type */
+ WORD wMid; /* of target device */
+ WORD wPid; /* " */
+ MMVERSION vDriverVersion; /* " */
+ WCHAR szPname[MAXPNAMELEN]; /* " */
+ } Target;
+} MIXERLINEW, *PMIXERLINEW, *LPMIXERLINEW;
+#ifdef UNICODE
+typedef MIXERLINEW MIXERLINE;
+typedef PMIXERLINEW PMIXERLINE;
+typedef LPMIXERLINEW LPMIXERLINE;
+#else
+typedef MIXERLINEA MIXERLINE;
+typedef PMIXERLINEA PMIXERLINE;
+typedef LPMIXERLINEA LPMIXERLINE;
+#endif // UNICODE
+
+#else
+typedef struct tMIXERLINE {
+ DWORD cbStruct; /* size of MIXERLINE structure */
+ DWORD dwDestination; /* zero based destination index */
+ DWORD dwSource; /* zero based source index (if source) */
+ DWORD dwLineID; /* unique line id for mixer device */
+ DWORD fdwLine; /* state/information about line */
+ DWORD dwUser; /* driver specific information */
+ DWORD dwComponentType; /* component type line connects to */
+ DWORD cChannels; /* number of channels line supports */
+ DWORD cConnections; /* number of connections [possible] */
+ DWORD cControls; /* number of controls at this line */
+ char szShortName[MIXER_SHORT_NAME_CHARS];
+ char szName[MIXER_LONG_NAME_CHARS];
+ struct {
+ DWORD dwType; /* MIXERLINE_TARGETTYPE_xxxx */
+ DWORD dwDeviceID; /* target device ID of device type */
+ WORD wMid; /* of target device */
+ WORD wPid; /* " */
+ VERSION vDriverVersion; /* " */
+ char szPname[MAXPNAMELEN]; /* " */
+ } Target;
+} MIXERLINE, *PMIXERLINE, FAR *LPMIXERLINE;
+#endif
+
+/* */
+/* MIXERLINE.fdwLine */
+/* */
+/* */
+#define MIXERLINE_LINEF_ACTIVE 0x00000001L
+#define MIXERLINE_LINEF_DISCONNECTED 0x00008000L
+#define MIXERLINE_LINEF_SOURCE 0x80000000L
+
+
+/* */
+/* MIXERLINE.dwComponentType */
+/* */
+/* component types for destinations and sources */
+/* */
+/* */
+#define MIXERLINE_COMPONENTTYPE_DST_FIRST 0x00000000L
+#define MIXERLINE_COMPONENTTYPE_DST_UNDEFINED (MIXERLINE_COMPONENTTYPE_DST_FIRST + 0)
+#define MIXERLINE_COMPONENTTYPE_DST_DIGITAL (MIXERLINE_COMPONENTTYPE_DST_FIRST + 1)
+#define MIXERLINE_COMPONENTTYPE_DST_LINE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 2)
+#define MIXERLINE_COMPONENTTYPE_DST_MONITOR (MIXERLINE_COMPONENTTYPE_DST_FIRST + 3)
+#define MIXERLINE_COMPONENTTYPE_DST_SPEAKERS (MIXERLINE_COMPONENTTYPE_DST_FIRST + 4)
+#define MIXERLINE_COMPONENTTYPE_DST_HEADPHONES (MIXERLINE_COMPONENTTYPE_DST_FIRST + 5)
+#define MIXERLINE_COMPONENTTYPE_DST_TELEPHONE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 6)
+#define MIXERLINE_COMPONENTTYPE_DST_WAVEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 7)
+#define MIXERLINE_COMPONENTTYPE_DST_VOICEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
+#define MIXERLINE_COMPONENTTYPE_DST_LAST (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
+
+#define MIXERLINE_COMPONENTTYPE_SRC_FIRST 0x00001000L
+#define MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0)
+#define MIXERLINE_COMPONENTTYPE_SRC_DIGITAL (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1)
+#define MIXERLINE_COMPONENTTYPE_SRC_LINE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2)
+#define MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3)
+#define MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4)
+#define MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5)
+#define MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6)
+#define MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7)
+#define MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8)
+#define MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9)
+#define MIXERLINE_COMPONENTTYPE_SRC_ANALOG (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
+#define MIXERLINE_COMPONENTTYPE_SRC_LAST (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
+
+
+/* */
+/* MIXERLINE.Target.dwType */
+/* */
+/* */
+#define MIXERLINE_TARGETTYPE_UNDEFINED 0
+#define MIXERLINE_TARGETTYPE_WAVEOUT 1
+#define MIXERLINE_TARGETTYPE_WAVEIN 2
+#define MIXERLINE_TARGETTYPE_MIDIOUT 3
+#define MIXERLINE_TARGETTYPE_MIDIIN 4
+#define MIXERLINE_TARGETTYPE_AUX 5
+
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI mixerGetLineInfoA(HMIXEROBJ hmxobj, LPMIXERLINEA pmxl, DWORD fdwInfo);
+WINMMAPI MMRESULT WINAPI mixerGetLineInfoW(HMIXEROBJ hmxobj, LPMIXERLINEW pmxl, DWORD fdwInfo);
+#ifdef UNICODE
+#define mixerGetLineInfo mixerGetLineInfoW
+#else
+#define mixerGetLineInfo mixerGetLineInfoA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI mixerGetLineInfo(HMIXEROBJ hmxobj, LPMIXERLINE pmxl, DWORD fdwInfo);
+#endif
+
+#define MIXER_GETLINEINFOF_DESTINATION 0x00000000L
+#define MIXER_GETLINEINFOF_SOURCE 0x00000001L
+#define MIXER_GETLINEINFOF_LINEID 0x00000002L
+#define MIXER_GETLINEINFOF_COMPONENTTYPE 0x00000003L
+#define MIXER_GETLINEINFOF_TARGETTYPE 0x00000004L
+
+#define MIXER_GETLINEINFOF_QUERYMASK 0x0000000FL
+
+
+
+WINMMAPI MMRESULT WINAPI mixerGetID(HMIXEROBJ hmxobj, UINT FAR *puMxId, DWORD fdwId);
+
+
+
+/* */
+/* MIXERCONTROL */
+/* */
+/* */
+#ifdef _WIN32
+
+typedef struct tagMIXERCONTROLA {
+ DWORD cbStruct; /* size in bytes of MIXERCONTROL */
+ DWORD dwControlID; /* unique control id for mixer device */
+ DWORD dwControlType; /* MIXERCONTROL_CONTROLTYPE_xxx */
+ DWORD fdwControl; /* MIXERCONTROL_CONTROLF_xxx */
+ DWORD cMultipleItems; /* if MIXERCONTROL_CONTROLF_MULTIPLE set */
+ CHAR szShortName[MIXER_SHORT_NAME_CHARS];
+ CHAR szName[MIXER_LONG_NAME_CHARS];
+ union {
+ struct {
+ LONG lMinimum; /* signed minimum for this control */
+ LONG lMaximum; /* signed maximum for this control */
+ };
+ struct {
+ DWORD dwMinimum; /* unsigned minimum for this control */
+ DWORD dwMaximum; /* unsigned maximum for this control */
+ };
+ DWORD dwReserved[6];
+ } Bounds;
+ union {
+ DWORD cSteps; /* # of steps between min & max */
+ DWORD cbCustomData; /* size in bytes of custom data */
+ DWORD dwReserved[6]; /* !!! needed? we have cbStruct.... */
+ } Metrics;
+} MIXERCONTROLA, *PMIXERCONTROLA, *LPMIXERCONTROLA;
+typedef struct tagMIXERCONTROLW {
+ DWORD cbStruct; /* size in bytes of MIXERCONTROL */
+ DWORD dwControlID; /* unique control id for mixer device */
+ DWORD dwControlType; /* MIXERCONTROL_CONTROLTYPE_xxx */
+ DWORD fdwControl; /* MIXERCONTROL_CONTROLF_xxx */
+ DWORD cMultipleItems; /* if MIXERCONTROL_CONTROLF_MULTIPLE set */
+ WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
+ WCHAR szName[MIXER_LONG_NAME_CHARS];
+ union {
+ struct {
+ LONG lMinimum; /* signed minimum for this control */
+ LONG lMaximum; /* signed maximum for this control */
+ };
+ struct {
+ DWORD dwMinimum; /* unsigned minimum for this control */
+ DWORD dwMaximum; /* unsigned maximum for this control */
+ };
+ DWORD dwReserved[6];
+ } Bounds;
+ union {
+ DWORD cSteps; /* # of steps between min & max */
+ DWORD cbCustomData; /* size in bytes of custom data */
+ DWORD dwReserved[6]; /* !!! needed? we have cbStruct.... */
+ } Metrics;
+} MIXERCONTROLW, *PMIXERCONTROLW, *LPMIXERCONTROLW;
+#ifdef UNICODE
+typedef MIXERCONTROLW MIXERCONTROL;
+typedef PMIXERCONTROLW PMIXERCONTROL;
+typedef LPMIXERCONTROLW LPMIXERCONTROL;
+#else
+typedef MIXERCONTROLA MIXERCONTROL;
+typedef PMIXERCONTROLA PMIXERCONTROL;
+typedef LPMIXERCONTROLA LPMIXERCONTROL;
+#endif // UNICODE
+
+#else
+typedef struct tMIXERCONTROL {
+ DWORD cbStruct; /* size in bytes of MIXERCONTROL */
+ DWORD dwControlID; /* unique control id for mixer device */
+ DWORD dwControlType; /* MIXERCONTROL_CONTROLTYPE_xxx */
+ DWORD fdwControl; /* MIXERCONTROL_CONTROLF_xxx */
+ DWORD cMultipleItems; /* if MIXERCONTROL_CONTROLF_MULTIPLE set */
+ char szShortName[MIXER_SHORT_NAME_CHARS];
+ char szName[MIXER_LONG_NAME_CHARS];
+ union {
+ struct {
+ LONG lMinimum; /* signed minimum for this control */
+ LONG lMaximum; /* signed maximum for this control */
+ };
+ struct {
+ DWORD dwMinimum; /* unsigned minimum for this control */
+ DWORD dwMaximum; /* unsigned maximum for this control */
+ };
+ DWORD dwReserved[6];
+ } Bounds;
+ union {
+ DWORD cSteps; /* # of steps between min & max */
+ DWORD cbCustomData; /* size in bytes of custom data */
+ DWORD dwReserved[6]; /* !!! needed? we have cbStruct.... */
+ } Metrics;
+} MIXERCONTROL, *PMIXERCONTROL, FAR *LPMIXERCONTROL;
+#endif
+
+/* */
+/* MIXERCONTROL.fdwControl */
+/* */
+/* */
+#define MIXERCONTROL_CONTROLF_UNIFORM 0x00000001L
+#define MIXERCONTROL_CONTROLF_MULTIPLE 0x00000002L
+#define MIXERCONTROL_CONTROLF_DISABLED 0x80000000L
+
+
+
+
+/* */
+/* MIXERCONTROL_CONTROLTYPE_xxx building block defines */
+/* */
+/* */
+#define MIXERCONTROL_CT_CLASS_MASK 0xF0000000L
+#define MIXERCONTROL_CT_CLASS_CUSTOM 0x00000000L
+#define MIXERCONTROL_CT_CLASS_METER 0x10000000L
+#define MIXERCONTROL_CT_CLASS_SWITCH 0x20000000L
+#define MIXERCONTROL_CT_CLASS_NUMBER 0x30000000L
+#define MIXERCONTROL_CT_CLASS_SLIDER 0x40000000L
+#define MIXERCONTROL_CT_CLASS_FADER 0x50000000L
+#define MIXERCONTROL_CT_CLASS_TIME 0x60000000L
+#define MIXERCONTROL_CT_CLASS_LIST 0x70000000L
+
+
+#define MIXERCONTROL_CT_SUBCLASS_MASK 0x0F000000L
+
+#define MIXERCONTROL_CT_SC_SWITCH_BOOLEAN 0x00000000L
+#define MIXERCONTROL_CT_SC_SWITCH_BUTTON 0x01000000L
+
+#define MIXERCONTROL_CT_SC_METER_POLLED 0x00000000L
+
+#define MIXERCONTROL_CT_SC_TIME_MICROSECS 0x00000000L
+#define MIXERCONTROL_CT_SC_TIME_MILLISECS 0x01000000L
+
+#define MIXERCONTROL_CT_SC_LIST_SINGLE 0x00000000L
+#define MIXERCONTROL_CT_SC_LIST_MULTIPLE 0x01000000L
+
+
+#define MIXERCONTROL_CT_UNITS_MASK 0x00FF0000L
+#define MIXERCONTROL_CT_UNITS_CUSTOM 0x00000000L
+#define MIXERCONTROL_CT_UNITS_BOOLEAN 0x00010000L
+#define MIXERCONTROL_CT_UNITS_SIGNED 0x00020000L
+#define MIXERCONTROL_CT_UNITS_UNSIGNED 0x00030000L
+#define MIXERCONTROL_CT_UNITS_DECIBELS 0x00040000L /* in 10ths */
+#define MIXERCONTROL_CT_UNITS_PERCENT 0x00050000L /* in 10ths */
+
+
+/* */
+/* Commonly used control types for specifying MIXERCONTROL.dwControlType */
+/* */
+
+#define MIXERCONTROL_CONTROLTYPE_CUSTOM (MIXERCONTROL_CT_CLASS_CUSTOM | MIXERCONTROL_CT_UNITS_CUSTOM)
+#define MIXERCONTROL_CONTROLTYPE_BOOLEANMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_SIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_SIGNED)
+#define MIXERCONTROL_CONTROLTYPE_PEAKMETER (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1)
+#define MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_BOOLEAN (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_ONOFF (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1)
+#define MIXERCONTROL_CONTROLTYPE_MUTE (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2)
+#define MIXERCONTROL_CONTROLTYPE_MONO (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3)
+#define MIXERCONTROL_CONTROLTYPE_LOUDNESS (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4)
+#define MIXERCONTROL_CONTROLTYPE_STEREOENH (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5)
+#define MIXERCONTROL_CONTROLTYPE_BUTTON (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BUTTON | MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_DECIBELS (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_DECIBELS)
+#define MIXERCONTROL_CONTROLTYPE_SIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_SIGNED)
+#define MIXERCONTROL_CONTROLTYPE_UNSIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_PERCENT (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_PERCENT)
+#define MIXERCONTROL_CONTROLTYPE_SLIDER (MIXERCONTROL_CT_CLASS_SLIDER | MIXERCONTROL_CT_UNITS_SIGNED)
+#define MIXERCONTROL_CONTROLTYPE_PAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 1)
+#define MIXERCONTROL_CONTROLTYPE_QSOUNDPAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 2)
+#define MIXERCONTROL_CONTROLTYPE_FADER (MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_VOLUME (MIXERCONTROL_CONTROLTYPE_FADER + 1)
+#define MIXERCONTROL_CONTROLTYPE_BASS (MIXERCONTROL_CONTROLTYPE_FADER + 2)
+#define MIXERCONTROL_CONTROLTYPE_TREBLE (MIXERCONTROL_CONTROLTYPE_FADER + 3)
+#define MIXERCONTROL_CONTROLTYPE_EQUALIZER (MIXERCONTROL_CONTROLTYPE_FADER + 4)
+#define MIXERCONTROL_CONTROLTYPE_SINGLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_SINGLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_MUX (MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1)
+#define MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_MULTIPLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_MIXER (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1)
+#define MIXERCONTROL_CONTROLTYPE_MICROTIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_MILLITIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
+
+/* */
+/* MIXERLINECONTROLS */
+/* */
+#ifdef _WIN32
+
+typedef struct tagMIXERLINECONTROLSA {
+ DWORD cbStruct; /* size in bytes of MIXERLINECONTROLS */
+ DWORD dwLineID; /* line id (from MIXERLINE.dwLineID) */
+ union {
+ DWORD dwControlID; /* MIXER_GETLINECONTROLSF_ONEBYID */
+ DWORD dwControlType; /* MIXER_GETLINECONTROLSF_ONEBYTYPE */
+ };
+ DWORD cControls; /* count of controls pmxctrl points to */
+ DWORD cbmxctrl; /* size in bytes of _one_ MIXERCONTROL */
+ LPMIXERCONTROLA pamxctrl; /* pointer to first MIXERCONTROL array */
+} MIXERLINECONTROLSA, *PMIXERLINECONTROLSA, *LPMIXERLINECONTROLSA;
+typedef struct tagMIXERLINECONTROLSW {
+ DWORD cbStruct; /* size in bytes of MIXERLINECONTROLS */
+ DWORD dwLineID; /* line id (from MIXERLINE.dwLineID) */
+ union {
+ DWORD dwControlID; /* MIXER_GETLINECONTROLSF_ONEBYID */
+ DWORD dwControlType; /* MIXER_GETLINECONTROLSF_ONEBYTYPE */
+ };
+ DWORD cControls; /* count of controls pmxctrl points to */
+ DWORD cbmxctrl; /* size in bytes of _one_ MIXERCONTROL */
+ LPMIXERCONTROLW pamxctrl; /* pointer to first MIXERCONTROL array */
+} MIXERLINECONTROLSW, *PMIXERLINECONTROLSW, *LPMIXERLINECONTROLSW;
+#ifdef UNICODE
+typedef MIXERLINECONTROLSW MIXERLINECONTROLS;
+typedef PMIXERLINECONTROLSW PMIXERLINECONTROLS;
+typedef LPMIXERLINECONTROLSW LPMIXERLINECONTROLS;
+#else
+typedef MIXERLINECONTROLSA MIXERLINECONTROLS;
+typedef PMIXERLINECONTROLSA PMIXERLINECONTROLS;
+typedef LPMIXERLINECONTROLSA LPMIXERLINECONTROLS;
+#endif // UNICODE
+
+#else
+typedef struct tMIXERLINECONTROLS {
+ DWORD cbStruct; /* size in bytes of MIXERLINECONTROLS */
+ DWORD dwLineID; /* line id (from MIXERLINE.dwLineID) */
+ union {
+ DWORD dwControlID; /* MIXER_GETLINECONTROLSF_ONEBYID */
+ DWORD dwControlType; /* MIXER_GETLINECONTROLSF_ONEBYTYPE */
+ };
+ DWORD cControls; /* count of controls pmxctrl points to */
+ DWORD cbmxctrl; /* size in bytes of _one_ MIXERCONTROL */
+ LPMIXERCONTROL pamxctrl; /* pointer to first MIXERCONTROL array */
+} MIXERLINECONTROLS, *PMIXERLINECONTROLS, FAR *LPMIXERLINECONTROLS;
+#endif
+
+
+/* */
+/* */
+/* */
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI mixerGetLineControlsA(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSA pmxlc, DWORD fdwControls);
+WINMMAPI MMRESULT WINAPI mixerGetLineControlsW(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxlc, DWORD fdwControls);
+#ifdef UNICODE
+#define mixerGetLineControls mixerGetLineControlsW
+#else
+#define mixerGetLineControls mixerGetLineControlsA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI mixerGetLineControls(HMIXEROBJ hmxobj, LPMIXERLINECONTROLS pmxlc, DWORD fdwControls);
+#endif
+
+#define MIXER_GETLINECONTROLSF_ALL 0x00000000L
+#define MIXER_GETLINECONTROLSF_ONEBYID 0x00000001L
+#define MIXER_GETLINECONTROLSF_ONEBYTYPE 0x00000002L
+
+#define MIXER_GETLINECONTROLSF_QUERYMASK 0x0000000FL
+
+
+
+typedef struct tMIXERCONTROLDETAILS {
+ DWORD cbStruct; /* size in bytes of MIXERCONTROLDETAILS */
+ DWORD dwControlID; /* control id to get/set details on */
+ DWORD cChannels; /* number of channels in paDetails array */
+ union {
+ HWND hwndOwner; /* for MIXER_SETCONTROLDETAILSF_CUSTOM */
+ DWORD cMultipleItems; /* if _MULTIPLE, the number of items per channel */
+ };
+ DWORD cbDetails; /* size of _one_ details_XX struct */
+ LPVOID paDetails; /* pointer to array of details_XX structs */
+} MIXERCONTROLDETAILS, *PMIXERCONTROLDETAILS, FAR *LPMIXERCONTROLDETAILS;
+
+
+/* */
+/* MIXER_GETCONTROLDETAILSF_LISTTEXT */
+/* */
+/* */
+#ifdef _WIN32
+
+typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA {
+ DWORD dwParam1;
+ DWORD dwParam2;
+ CHAR szName[MIXER_LONG_NAME_CHARS];
+} MIXERCONTROLDETAILS_LISTTEXTA, *PMIXERCONTROLDETAILS_LISTTEXTA, *LPMIXERCONTROLDETAILS_LISTTEXTA;
+typedef struct tagMIXERCONTROLDETAILS_LISTTEXTW {
+ DWORD dwParam1;
+ DWORD dwParam2;
+ WCHAR szName[MIXER_LONG_NAME_CHARS];
+} MIXERCONTROLDETAILS_LISTTEXTW, *PMIXERCONTROLDETAILS_LISTTEXTW, *LPMIXERCONTROLDETAILS_LISTTEXTW;
+#ifdef UNICODE
+typedef MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT;
+typedef PMIXERCONTROLDETAILS_LISTTEXTW PMIXERCONTROLDETAILS_LISTTEXT;
+typedef LPMIXERCONTROLDETAILS_LISTTEXTW LPMIXERCONTROLDETAILS_LISTTEXT;
+#else
+typedef MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT;
+typedef PMIXERCONTROLDETAILS_LISTTEXTA PMIXERCONTROLDETAILS_LISTTEXT;
+typedef LPMIXERCONTROLDETAILS_LISTTEXTA LPMIXERCONTROLDETAILS_LISTTEXT;
+#endif // UNICODE
+
+#else
+typedef struct tMIXERCONTROLDETAILS_LISTTEXT {
+ DWORD dwParam1;
+ DWORD dwParam2;
+ char szName[MIXER_LONG_NAME_CHARS];
+} MIXERCONTROLDETAILS_LISTTEXT, *PMIXERCONTROLDETAILS_LISTTEXT, FAR *LPMIXERCONTROLDETAILS_LISTTEXT;
+#endif
+
+/* */
+/* MIXER_GETCONTROLDETAILSF_VALUE */
+/* */
+/* */
+typedef struct tMIXERCONTROLDETAILS_BOOLEAN {
+ LONG fValue;
+} MIXERCONTROLDETAILS_BOOLEAN,
+ *PMIXERCONTROLDETAILS_BOOLEAN,
+ FAR *LPMIXERCONTROLDETAILS_BOOLEAN;
+
+typedef struct tMIXERCONTROLDETAILS_SIGNED {
+ LONG lValue;
+} MIXERCONTROLDETAILS_SIGNED,
+ *PMIXERCONTROLDETAILS_SIGNED,
+ FAR *LPMIXERCONTROLDETAILS_SIGNED;
+
+
+typedef struct tMIXERCONTROLDETAILS_UNSIGNED {
+ DWORD dwValue;
+} MIXERCONTROLDETAILS_UNSIGNED,
+ *PMIXERCONTROLDETAILS_UNSIGNED,
+ FAR *LPMIXERCONTROLDETAILS_UNSIGNED;
+
+
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI mixerGetControlDetailsA(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
+WINMMAPI MMRESULT WINAPI mixerGetControlDetailsW(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
+#ifdef UNICODE
+#define mixerGetControlDetails mixerGetControlDetailsW
+#else
+#define mixerGetControlDetails mixerGetControlDetailsA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI mixerGetControlDetails(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
+#endif
+
+#define MIXER_GETCONTROLDETAILSF_VALUE 0x00000000L
+#define MIXER_GETCONTROLDETAILSF_LISTTEXT 0x00000001L
+
+#define MIXER_GETCONTROLDETAILSF_QUERYMASK 0x0000000FL
+
+
+
+WINMMAPI MMRESULT WINAPI mixerSetControlDetails(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
+
+#define MIXER_SETCONTROLDETAILSF_VALUE 0x00000000L
+#define MIXER_SETCONTROLDETAILSF_CUSTOM 0x00000001L
+
+#define MIXER_SETCONTROLDETAILSF_QUERYMASK 0x0000000FL
+
+
+#endif /* ifndef MMNOMIXER */
+
+
+#ifndef MMNOTIMER
+/****************************************************************************
+
+ Timer support
+
+****************************************************************************/
+
+/* timer error return values */
+#define TIMERR_NOERROR (0) /* no error */
+#define TIMERR_NOCANDO (TIMERR_BASE+1) /* request not completed */
+#define TIMERR_STRUCT (TIMERR_BASE+33) /* time struct size */
+
+/* timer data types */
+typedef void (CALLBACK TIMECALLBACK)(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
+
+typedef TIMECALLBACK FAR *LPTIMECALLBACK;
+
+/* flags for fuEvent parameter of timeSetEvent() function */
+#define TIME_ONESHOT 0x0000 /* program timer for single event */
+#define TIME_PERIODIC 0x0001 /* program for continuous periodic event */
+
+#ifdef _WIN32
+#define TIME_CALLBACK_FUNCTION 0x0000 /* callback is function */
+#define TIME_CALLBACK_EVENT_SET 0x0010 /* callback is event - use SetEvent */
+#define TIME_CALLBACK_EVENT_PULSE 0x0020 /* callback is event - use PulseEvent */
+#endif
+
+
+/* timer device capabilities data structure */
+typedef struct timecaps_tag {
+ UINT wPeriodMin; /* minimum period supported */
+ UINT wPeriodMax; /* maximum period supported */
+} TIMECAPS, *PTIMECAPS, NEAR *NPTIMECAPS, FAR *LPTIMECAPS;
+
+/* timer function prototypes */
+WINMMAPI MMRESULT WINAPI timeGetSystemTime(LPMMTIME pmmt, UINT cbmmt);
+WINMMAPI DWORD WINAPI timeGetTime(void);
+WINMMAPI MMRESULT WINAPI timeSetEvent(UINT uDelay, UINT uResolution,
+ LPTIMECALLBACK fptc, DWORD dwUser, UINT fuEvent);
+WINMMAPI MMRESULT WINAPI timeKillEvent(UINT uTimerID);
+WINMMAPI MMRESULT WINAPI timeGetDevCaps(LPTIMECAPS ptc, UINT cbtc);
+WINMMAPI MMRESULT WINAPI timeBeginPeriod(UINT uPeriod);
+WINMMAPI MMRESULT WINAPI timeEndPeriod(UINT uPeriod);
+
+#endif /* ifndef MMNOTIMER */
+
+
+#ifndef MMNOJOY
+/****************************************************************************
+
+ Joystick support
+
+****************************************************************************/
+
+/* joystick error return values */
+#define JOYERR_NOERROR (0) /* no error */
+#define JOYERR_PARMS (JOYERR_BASE+5) /* bad parameters */
+#define JOYERR_NOCANDO (JOYERR_BASE+6) /* request not completed */
+#define JOYERR_UNPLUGGED (JOYERR_BASE+7) /* joystick is unplugged */
+
+/* constants used with JOYINFO and JOYINFOEX structures and MM_JOY* messages */
+#define JOY_BUTTON1 0x0001
+#define JOY_BUTTON2 0x0002
+#define JOY_BUTTON3 0x0004
+#define JOY_BUTTON4 0x0008
+#define JOY_BUTTON1CHG 0x0100
+#define JOY_BUTTON2CHG 0x0200
+#define JOY_BUTTON3CHG 0x0400
+#define JOY_BUTTON4CHG 0x0800
+
+/* constants used with JOYINFOEX */
+#define JOY_BUTTON5 0x00000010l
+#define JOY_BUTTON6 0x00000020l
+#define JOY_BUTTON7 0x00000040l
+#define JOY_BUTTON8 0x00000080l
+#define JOY_BUTTON9 0x00000100l
+#define JOY_BUTTON10 0x00000200l
+#define JOY_BUTTON11 0x00000400l
+#define JOY_BUTTON12 0x00000800l
+#define JOY_BUTTON13 0x00001000l
+#define JOY_BUTTON14 0x00002000l
+#define JOY_BUTTON15 0x00004000l
+#define JOY_BUTTON16 0x00008000l
+#define JOY_BUTTON17 0x00010000l
+#define JOY_BUTTON18 0x00020000l
+#define JOY_BUTTON19 0x00040000l
+#define JOY_BUTTON20 0x00080000l
+#define JOY_BUTTON21 0x00100000l
+#define JOY_BUTTON22 0x00200000l
+#define JOY_BUTTON23 0x00400000l
+#define JOY_BUTTON24 0x00800000l
+#define JOY_BUTTON25 0x01000000l
+#define JOY_BUTTON26 0x02000000l
+#define JOY_BUTTON27 0x04000000l
+#define JOY_BUTTON28 0x08000000l
+#define JOY_BUTTON29 0x10000000l
+#define JOY_BUTTON30 0x20000000l
+#define JOY_BUTTON31 0x40000000l
+#define JOY_BUTTON32 0x80000000l
+
+/* constants used with JOYINFOEX structure */
+#define JOY_POVCENTERED (WORD) -1
+#define JOY_POVFORWARD 0
+#define JOY_POVRIGHT 9000
+#define JOY_POVBACKWARD 18000
+#define JOY_POVLEFT 27000
+
+#define JOY_RETURNX 0x00000001l
+#define JOY_RETURNY 0x00000002l
+#define JOY_RETURNZ 0x00000004l
+#define JOY_RETURNR 0x00000008l
+#define JOY_RETURNU 0x00000010l /* axis 5 */
+#define JOY_RETURNV 0x00000020l /* axis 6 */
+#define JOY_RETURNPOV 0x00000040l
+#define JOY_RETURNBUTTONS 0x00000080l
+#define JOY_RETURNRAWDATA 0x00000100l
+#define JOY_RETURNPOVCTS 0x00000200l
+#define JOY_RETURNCENTERED 0x00000400l
+#define JOY_USEDEADZONE 0x00000800l
+#define JOY_RETURNALL (JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | \
+ JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | \
+ JOY_RETURNPOV | JOY_RETURNBUTTONS)
+#define JOY_CAL_READALWAYS 0x00010000l
+#define JOY_CAL_READXYONLY 0x00020000l
+#define JOY_CAL_READ3 0x00040000l
+#define JOY_CAL_READ4 0x00080000l
+#define JOY_CAL_READXONLY 0x00100000l
+#define JOY_CAL_READYONLY 0x00200000l
+#define JOY_CAL_READ5 0x00400000l
+#define JOY_CAL_READ6 0x00800000l
+#define JOY_CAL_READZONLY 0x01000000l
+#define JOY_CAL_READRONLY 0x02000000l
+#define JOY_CAL_READUONLY 0x04000000l
+#define JOY_CAL_READVONLY 0x08000000l
+
+/* joystick ID constants */
+#define JOYSTICKID1 0
+#define JOYSTICKID2 1
+
+/* joystick driver capabilites */
+#define JOYCAPS_HASZ 0x0001
+#define JOYCAPS_HASR 0x0002
+#define JOYCAPS_HASU 0x0004
+#define JOYCAPS_HASV 0x0008
+#define JOYCAPS_HASPOV 0x0010
+#define JOYCAPS_POV4DIR 0x0020
+#define JOYCAPS_POVCTS 0x0040
+
+
+
+/* joystick device capabilities data structure */
+#ifdef _WIN32
+
+typedef struct tagJOYCAPSA {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ CHAR szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
+ UINT wXmin; /* minimum x position value */
+ UINT wXmax; /* maximum x position value */
+ UINT wYmin; /* minimum y position value */
+ UINT wYmax; /* maximum y position value */
+ UINT wZmin; /* minimum z position value */
+ UINT wZmax; /* maximum z position value */
+ UINT wNumButtons; /* number of buttons */
+ UINT wPeriodMin; /* minimum message period when captured */
+ UINT wPeriodMax; /* maximum message period when captured */
+#if (WINVER >= 0x0400)
+ UINT wRmin; /* minimum r position value */
+ UINT wRmax; /* maximum r position value */
+ UINT wUmin; /* minimum u (5th axis) position value */
+ UINT wUmax; /* maximum u (5th axis) position value */
+ UINT wVmin; /* minimum v (6th axis) position value */
+ UINT wVmax; /* maximum v (6th axis) position value */
+ UINT wCaps; /* joystick capabilites */
+ UINT wMaxAxes; /* maximum number of axes supported */
+ UINT wNumAxes; /* number of axes in use */
+ UINT wMaxButtons; /* maximum number of buttons supported */
+ CHAR szRegKey[MAXPNAMELEN];/* registry key */
+ CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME]; /* OEM VxD in use */
+#endif
+} JOYCAPSA, *PJOYCAPSA, *NPJOYCAPSA, *LPJOYCAPSA;
+typedef struct tagJOYCAPSW {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ WCHAR szPname[MAXPNAMELEN];/* product name (NULL terminated string) */
+ UINT wXmin; /* minimum x position value */
+ UINT wXmax; /* maximum x position value */
+ UINT wYmin; /* minimum y position value */
+ UINT wYmax; /* maximum y position value */
+ UINT wZmin; /* minimum z position value */
+ UINT wZmax; /* maximum z position value */
+ UINT wNumButtons; /* number of buttons */
+ UINT wPeriodMin; /* minimum message period when captured */
+ UINT wPeriodMax; /* maximum message period when captured */
+#if (WINVER >= 0x0400)
+ UINT wRmin; /* minimum r position value */
+ UINT wRmax; /* maximum r position value */
+ UINT wUmin; /* minimum u (5th axis) position value */
+ UINT wUmax; /* maximum u (5th axis) position value */
+ UINT wVmin; /* minimum v (6th axis) position value */
+ UINT wVmax; /* maximum v (6th axis) position value */
+ UINT wCaps; /* joystick capabilites */
+ UINT wMaxAxes; /* maximum number of axes supported */
+ UINT wNumAxes; /* number of axes in use */
+ UINT wMaxButtons; /* maximum number of buttons supported */
+ WCHAR szRegKey[MAXPNAMELEN];/* registry key */
+ WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME]; /* OEM VxD in use */
+#endif
+} JOYCAPSW, *PJOYCAPSW, *NPJOYCAPSW, *LPJOYCAPSW;
+#ifdef UNICODE
+typedef JOYCAPSW JOYCAPS;
+typedef PJOYCAPSW PJOYCAPS;
+typedef NPJOYCAPSW NPJOYCAPS;
+typedef LPJOYCAPSW LPJOYCAPS;
+#else
+typedef JOYCAPSA JOYCAPS;
+typedef PJOYCAPSA PJOYCAPS;
+typedef NPJOYCAPSA NPJOYCAPS;
+typedef LPJOYCAPSA LPJOYCAPS;
+#endif // UNICODE
+
+#else
+typedef struct joycaps_tag {
+ WORD wMid; /* manufacturer ID */
+ WORD wPid; /* product ID */
+ char szPname[MAXPNAMELEN]; /* product name (NULL terminated string) */
+ UINT wXmin; /* minimum x position value */
+ UINT wXmax; /* maximum x position value */
+ UINT wYmin; /* minimum y position value */
+ UINT wYmax; /* maximum y position value */
+ UINT wZmin; /* minimum z position value */
+ UINT wZmax; /* maximum z position value */
+ UINT wNumButtons; /* number of buttons */
+ UINT wPeriodMin; /* minimum message period when captured */
+ UINT wPeriodMax; /* maximum message period when captured */
+#if (WINVER >= 0x0400)
+ UINT wRmin; /* minimum r position value */
+ UINT wRmax; /* maximum r position value */
+ UINT wUmin; /* minimum u (5th axis) position value */
+ UINT wUmax; /* maximum u (5th axis) position value */
+ UINT wVmin; /* minimum v (6th axis) position value */
+ UINT wVmax; /* maximum v (6th axis) position value */
+ UINT wCaps; /* joystick capabilites */
+ UINT wMaxAxes; /* maximum number of axes supported */
+ UINT wNumAxes; /* number of axes in use */
+ UINT wMaxButtons; /* maximum number of buttons supported */
+ char szRegKey[MAXPNAMELEN]; /* registry key */
+ char szOEMVxD[MAX_JOYSTICKOEMVXDNAME]; /* OEM VxD in use */
+#endif
+} JOYCAPS, *PJOYCAPS, NEAR *NPJOYCAPS, FAR *LPJOYCAPS;
+#endif
+
+
+/* joystick information data structure */
+typedef struct joyinfo_tag {
+ UINT wXpos; /* x position */
+ UINT wYpos; /* y position */
+ UINT wZpos; /* z position */
+ UINT wButtons; /* button states */
+} JOYINFO, *PJOYINFO, NEAR *NPJOYINFO, FAR *LPJOYINFO;
+
+#if(WINVER >= 0x0400)
+typedef struct joyinfoex_tag {
+ DWORD dwSize; /* size of structure */
+ DWORD dwFlags; /* flags to indicate what to return */
+ DWORD dwXpos; /* x position */
+ DWORD dwYpos; /* y position */
+ DWORD dwZpos; /* z position */
+ DWORD dwRpos; /* rudder/4th axis position */
+ DWORD dwUpos; /* 5th axis position */
+ DWORD dwVpos; /* 6th axis position */
+ DWORD dwButtons; /* button states */
+ DWORD dwButtonNumber; /* current button number pressed */
+ DWORD dwPOV; /* point of view state */
+ DWORD dwReserved1; /* reserved for communication between winmm & driver */
+ DWORD dwReserved2; /* reserved for future expansion */
+} JOYINFOEX, *PJOYINFOEX, NEAR *NPJOYINFOEX, FAR *LPJOYINFOEX;
+#endif /* WINVER >= 0x0400 */
+
+/* joystick function prototypes */
+WINMMAPI UINT WINAPI joyGetNumDevs(void);
+#ifdef _WIN32
+
+WINMMAPI MMRESULT WINAPI joyGetDevCapsA(UINT uJoyID, LPJOYCAPSA pjc, UINT cbjc);
+WINMMAPI MMRESULT WINAPI joyGetDevCapsW(UINT uJoyID, LPJOYCAPSW pjc, UINT cbjc);
+#ifdef UNICODE
+#define joyGetDevCaps joyGetDevCapsW
+#else
+#define joyGetDevCaps joyGetDevCapsA
+#endif // !UNICODE
+
+#else
+MMRESULT WINAPI joyGetDevCaps(UINT uJoyID, LPJOYCAPS pjc, UINT cbjc);
+#endif
+WINMMAPI MMRESULT WINAPI joyGetPos(UINT uJoyID, LPJOYINFO pji);
+
+#if(WINVER >= 0x0400)
+WINMMAPI MMRESULT WINAPI joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji);
+#endif /* WINVER >= 0x0400 */
+
+WINMMAPI MMRESULT WINAPI joyGetThreshold(UINT uJoyID, LPUINT puThreshold);
+WINMMAPI MMRESULT WINAPI joyReleaseCapture(UINT uJoyID);
+WINMMAPI MMRESULT WINAPI joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod,
+ BOOL fChanged);
+WINMMAPI MMRESULT WINAPI joySetThreshold(UINT uJoyID, UINT uThreshold);
+
+
+#endif /* ifndef MMNOJOY */
+
+
+#ifndef MMNOMMIO
+/****************************************************************************
+
+ Multimedia File I/O support
+
+****************************************************************************/
+
+/* MMIO error return values */
+#define MMIOERR_BASE 256
+#define MMIOERR_FILENOTFOUND (MMIOERR_BASE + 1) /* file not found */
+#define MMIOERR_OUTOFMEMORY (MMIOERR_BASE + 2) /* out of memory */
+#define MMIOERR_CANNOTOPEN (MMIOERR_BASE + 3) /* cannot open */
+#define MMIOERR_CANNOTCLOSE (MMIOERR_BASE + 4) /* cannot close */
+#define MMIOERR_CANNOTREAD (MMIOERR_BASE + 5) /* cannot read */
+#define MMIOERR_CANNOTWRITE (MMIOERR_BASE + 6) /* cannot write */
+#define MMIOERR_CANNOTSEEK (MMIOERR_BASE + 7) /* cannot seek */
+#define MMIOERR_CANNOTEXPAND (MMIOERR_BASE + 8) /* cannot expand file */
+#define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE + 9) /* chunk not found */
+#define MMIOERR_UNBUFFERED (MMIOERR_BASE + 10) /* */
+#define MMIOERR_PATHNOTFOUND (MMIOERR_BASE + 11) /* path incorrect */
+#define MMIOERR_ACCESSDENIED (MMIOERR_BASE + 12) /* file was protected */
+#define MMIOERR_SHARINGVIOLATION (MMIOERR_BASE + 13) /* file in use */
+#define MMIOERR_NETWORKERROR (MMIOERR_BASE + 14) /* network not responding */
+#define MMIOERR_TOOMANYOPENFILES (MMIOERR_BASE + 15) /* no more file handles */
+#define MMIOERR_INVALIDFILE (MMIOERR_BASE + 16) /* default error file error */
+
+/* MMIO constants */
+#define CFSEPCHAR '+' /* compound file name separator char. */
+
+/* MMIO data types */
+typedef DWORD FOURCC; /* a four character code */
+typedef char _huge * HPSTR; /* a huge version of LPSTR */
+DECLARE_HANDLE(HMMIO); /* a handle to an open file */
+typedef LRESULT (CALLBACK MMIOPROC)(LPSTR lpmmioinfo, UINT uMsg,
+ LPARAM lParam1, LPARAM lParam2);
+typedef MMIOPROC FAR *LPMMIOPROC;
+
+
+/* general MMIO information data structure */
+typedef struct _MMIOINFO
+{
+ /* general fields */
+ DWORD dwFlags; /* general status flags */
+ FOURCC fccIOProc; /* pointer to I/O procedure */
+ LPMMIOPROC pIOProc; /* pointer to I/O procedure */
+ UINT wErrorRet; /* place for error to be returned */
+ HTASK htask; /* alternate local task */
+
+ /* fields maintained by MMIO functions during buffered I/O */
+ LONG cchBuffer; /* size of I/O buffer (or 0L) */
+ HPSTR pchBuffer; /* start of I/O buffer (or NULL) */
+ HPSTR pchNext; /* pointer to next byte to read/write */
+ HPSTR pchEndRead; /* pointer to last valid byte to read */
+ HPSTR pchEndWrite; /* pointer to last byte to write */
+ LONG lBufOffset; /* disk offset of start of buffer */
+
+ /* fields maintained by I/O procedure */
+ LONG lDiskOffset; /* disk offset of next read or write */
+ DWORD adwInfo[3]; /* data specific to type of MMIOPROC */
+
+ /* other fields maintained by MMIO */
+ DWORD dwReserved1; /* reserved for MMIO use */
+ DWORD dwReserved2; /* reserved for MMIO use */
+ HMMIO hmmio; /* handle to open file */
+} MMIOINFO, *PMMIOINFO, NEAR *NPMMIOINFO, FAR *LPMMIOINFO;
+typedef const MMIOINFO FAR *LPCMMIOINFO;
+
+/* RIFF chunk information data structure */
+typedef struct _MMCKINFO
+{
+ FOURCC ckid; /* chunk ID */
+ DWORD cksize; /* chunk size */
+ FOURCC fccType; /* form type or list type */
+ DWORD dwDataOffset; /* offset of data portion of chunk */
+ DWORD dwFlags; /* flags used by MMIO functions */
+} MMCKINFO, *PMMCKINFO, NEAR *NPMMCKINFO, FAR *LPMMCKINFO;
+typedef const MMCKINFO *LPCMMCKINFO;
+
+/* bit field masks */
+#define MMIO_RWMODE 0x00000003 /* open file for reading/writing/both */
+#define MMIO_SHAREMODE 0x00000070 /* file sharing mode number */
+
+/* constants for dwFlags field of MMIOINFO */
+#define MMIO_CREATE 0x00001000 /* create new file (or truncate file) */
+#define MMIO_PARSE 0x00000100 /* parse new file returning path */
+#define MMIO_DELETE 0x00000200 /* create new file (or truncate file) */
+#define MMIO_EXIST 0x00004000 /* checks for existence of file */
+#define MMIO_ALLOCBUF 0x00010000 /* mmioOpen() should allocate a buffer */
+#define MMIO_GETTEMP 0x00020000 /* mmioOpen() should retrieve temp name */
+
+#define MMIO_DIRTY 0x10000000 /* I/O buffer is dirty */
+
+
+
+/* read/write mode numbers (bit field MMIO_RWMODE) */
+#define MMIO_READ 0x00000000 /* open file for reading only */
+#define MMIO_WRITE 0x00000001 /* open file for writing only */
+#define MMIO_READWRITE 0x00000002 /* open file for reading and writing */
+
+/* share mode numbers (bit field MMIO_SHAREMODE) */
+#define MMIO_COMPAT 0x00000000 /* compatibility mode */
+#define MMIO_EXCLUSIVE 0x00000010 /* exclusive-access mode */
+#define MMIO_DENYWRITE 0x00000020 /* deny writing to other processes */
+#define MMIO_DENYREAD 0x00000030 /* deny reading to other processes */
+#define MMIO_DENYNONE 0x00000040 /* deny nothing to other processes */
+
+/* various MMIO flags */
+#define MMIO_FHOPEN 0x0010 /* mmioClose: keep file handle open */
+#define MMIO_EMPTYBUF 0x0010 /* mmioFlush: empty the I/O buffer */
+#define MMIO_TOUPPER 0x0010 /* mmioStringToFOURCC: to u-case */
+#define MMIO_INSTALLPROC 0x00010000 /* mmioInstallIOProc: install MMIOProc */
+#define MMIO_GLOBALPROC 0x10000000 /* mmioInstallIOProc: install globally */
+#define MMIO_REMOVEPROC 0x00020000 /* mmioInstallIOProc: remove MMIOProc */
+#define MMIO_UNICODEPROC 0x01000000 /* mmioInstallIOProc: Unicode MMIOProc */
+#define MMIO_FINDPROC 0x00040000 /* mmioInstallIOProc: find an MMIOProc */
+#define MMIO_FINDCHUNK 0x0010 /* mmioDescend: find a chunk by ID */
+#define MMIO_FINDRIFF 0x0020 /* mmioDescend: find a LIST chunk */
+#define MMIO_FINDLIST 0x0040 /* mmioDescend: find a RIFF chunk */
+#define MMIO_CREATERIFF 0x0020 /* mmioCreateChunk: make a LIST chunk */
+#define MMIO_CREATELIST 0x0040 /* mmioCreateChunk: make a RIFF chunk */
+
+
+/* message numbers for MMIOPROC I/O procedure functions */
+#define MMIOM_READ MMIO_READ /* read */
+#define MMIOM_WRITE MMIO_WRITE /* write */
+#define MMIOM_SEEK 2 /* seek to a new position in file */
+#define MMIOM_OPEN 3 /* open file */
+#define MMIOM_CLOSE 4 /* close file */
+#define MMIOM_WRITEFLUSH 5 /* write and flush */
+
+#if (WINVER >= 0x030a)
+#define MMIOM_RENAME 6 /* rename specified file */
+#endif /* ifdef WINVER >= 0x030a */
+
+#define MMIOM_USER 0x8000 /* beginning of user-defined messages */
+
+/* standard four character codes */
+#define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F')
+#define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T')
+
+/* four character codes used to identify standard built-in I/O procedures */
+#define FOURCC_DOS mmioFOURCC('D', 'O', 'S', ' ')
+#define FOURCC_MEM mmioFOURCC('M', 'E', 'M', ' ')
+
+/* flags for mmioSeek() */
+#ifndef SEEK_SET
+#define SEEK_SET 0 /* seek to an absolute position */
+#define SEEK_CUR 1 /* seek relative to current position */
+#define SEEK_END 2 /* seek relative to end of file */
+#endif /* ifndef SEEK_SET */
+
+/* other constants */
+#define MMIO_DEFAULTBUFFER 8192 /* default buffer size */
+
+/* MMIO macros */
+#define mmioFOURCC(ch0, ch1, ch2, ch3) MAKEFOURCC(ch0, ch1, ch2, ch3)
+
+/* MMIO function prototypes */
+#ifdef _WIN32
+
+WINMMAPI FOURCC WINAPI mmioStringToFOURCCA(LPCSTR sz, UINT uFlags);
+WINMMAPI FOURCC WINAPI mmioStringToFOURCCW(LPCWSTR sz, UINT uFlags);
+#ifdef UNICODE
+#define mmioStringToFOURCC mmioStringToFOURCCW
+#else
+#define mmioStringToFOURCC mmioStringToFOURCCA
+#endif // !UNICODE
+WINMMAPI LPMMIOPROC WINAPI mmioInstallIOProcA(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags);
+WINMMAPI LPMMIOPROC WINAPI mmioInstallIOProcW(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags);
+#ifdef UNICODE
+#define mmioInstallIOProc mmioInstallIOProcW
+#else
+#define mmioInstallIOProc mmioInstallIOProcA
+#endif // !UNICODE
+WINMMAPI HMMIO WINAPI mmioOpenA(LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen);
+WINMMAPI HMMIO WINAPI mmioOpenW(LPWSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen);
+#ifdef UNICODE
+#define mmioOpen mmioOpenW
+#else
+#define mmioOpen mmioOpenA
+#endif // !UNICODE
+WINMMAPI MMRESULT WINAPI mmioRenameA(LPCSTR pszFileName, LPCSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename);
+WINMMAPI MMRESULT WINAPI mmioRenameW(LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename);
+#ifdef UNICODE
+#define mmioRename mmioRenameW
+#else
+#define mmioRename mmioRenameA
+#endif // !UNICODE
+#else
+FOURCC WINAPI mmioStringToFOURCC(LPCSTR sz, UINT uFlags);
+LPMMIOPROC WINAPI mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags);
+HMMIO WINAPI mmioOpen(LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen);
+#if (WINVER >= 0x030a)
+MMRESULT WINAPI mmioRename(LPCSTR pszFileName, LPCSTR pszNewFileName, const MMIOINFO FAR* pmmioinfo, DWORD fdwRename);
+#endif /* ifdef WINVER >= 0x030a */
+#endif
+
+WINMMAPI MMRESULT WINAPI mmioClose(HMMIO hmmio, UINT fuClose);
+WINMMAPI LONG WINAPI mmioRead(HMMIO hmmio, HPSTR pch, LONG cch);
+WINMMAPI LONG WINAPI mmioWrite(HMMIO hmmio, const char _huge* pch, LONG cch);
+WINMMAPI LONG WINAPI mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin);
+WINMMAPI MMRESULT WINAPI mmioGetInfo(HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuInfo);
+WINMMAPI MMRESULT WINAPI mmioSetInfo(HMMIO hmmio, LPCMMIOINFO pmmioinfo, UINT fuInfo);
+WINMMAPI MMRESULT WINAPI mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer,
+ UINT fuBuffer);
+WINMMAPI MMRESULT WINAPI mmioFlush(HMMIO hmmio, UINT fuFlush);
+WINMMAPI MMRESULT WINAPI mmioAdvance(HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuAdvance);
+WINMMAPI LRESULT WINAPI mmioSendMessage(HMMIO hmmio, UINT uMsg,
+ LPARAM lParam1, LPARAM lParam2);
+WINMMAPI MMRESULT WINAPI mmioDescend(HMMIO hmmio, LPMMCKINFO pmmcki,
+ const MMCKINFO FAR* pmmckiParent, UINT fuDescend);
+WINMMAPI MMRESULT WINAPI mmioAscend(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend);
+WINMMAPI MMRESULT WINAPI mmioCreateChunk(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate);
+
+#endif /* ifndef MMNOMMIO */
+
+
+#ifndef MMNOMCI
+/****************************************************************************
+
+ MCI support
+
+****************************************************************************/
+
+#ifndef _MCIERROR_ /* MCIERROR is defined in some post 3.1 apps */
+#define _MCIERROR_
+typedef DWORD MCIERROR; /* error return code, 0 means no error */
+#endif
+
+#ifndef _MCIDEVICEID_ /* Same with MCIDEVICEID */
+#define _MCIDEVICEID_
+typedef UINT MCIDEVICEID; /* MCI device ID type */
+#endif
+
+
+typedef UINT (CALLBACK *YIELDPROC)(MCIDEVICEID mciId, DWORD dwYieldData);
+
+/* MCI function prototypes */
+#ifdef _WIN32
+
+WINMMAPI MCIERROR WINAPI mciSendCommandA(MCIDEVICEID mciId, UINT uMsg, DWORD dwParam1, DWORD dwParam2);
+WINMMAPI MCIERROR WINAPI mciSendCommandW(MCIDEVICEID mciId, UINT uMsg, DWORD dwParam1, DWORD dwParam2);
+#ifdef UNICODE
+#define mciSendCommand mciSendCommandW
+#else
+#define mciSendCommand mciSendCommandA
+#endif // !UNICODE
+WINMMAPI MCIERROR WINAPI mciSendStringA(LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback);
+WINMMAPI MCIERROR WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback);
+#ifdef UNICODE
+#define mciSendString mciSendStringW
+#else
+#define mciSendString mciSendStringA
+#endif // !UNICODE
+WINMMAPI MCIDEVICEID WINAPI mciGetDeviceIDA(LPCSTR pszDevice);
+WINMMAPI MCIDEVICEID WINAPI mciGetDeviceIDW(LPCWSTR pszDevice);
+#ifdef UNICODE
+#define mciGetDeviceID mciGetDeviceIDW
+#else
+#define mciGetDeviceID mciGetDeviceIDA
+#endif // !UNICODE
+WINMMAPI MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDA(DWORD dwElementID, LPCSTR lpstrType );
+WINMMAPI MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDW(DWORD dwElementID, LPCWSTR lpstrType );
+#ifdef UNICODE
+#define mciGetDeviceIDFromElementID mciGetDeviceIDFromElementIDW
+#else
+#define mciGetDeviceIDFromElementID mciGetDeviceIDFromElementIDA
+#endif // !UNICODE
+WINMMAPI BOOL WINAPI mciGetErrorStringA(MCIERROR mcierr, LPSTR pszText, UINT cchText);
+WINMMAPI BOOL WINAPI mciGetErrorStringW(MCIERROR mcierr, LPWSTR pszText, UINT cchText);
+#ifdef UNICODE
+#define mciGetErrorString mciGetErrorStringW
+#else
+#define mciGetErrorString mciGetErrorStringA
+#endif // !UNICODE
+
+#else
+MCIERROR WINAPI mciSendCommand(MCIDEVICEID mciId, UINT uMsg, DWORD dwParam1, DWORD dwParam2);
+MCIERROR WINAPI mciSendString(LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback);
+MCIDEVICEID WINAPI mciGetDeviceID(LPCSTR pszDevice);
+BOOL WINAPI mciGetErrorString(MCIERROR mcierr, LPSTR pszText, UINT cchText);
+#endif
+
+WINMMAPI BOOL WINAPI mciSetYieldProc(MCIDEVICEID mciId, YIELDPROC fpYieldProc,
+ DWORD dwYieldData);
+
+#if (WINVER >= 0x030a)
+WINMMAPI HTASK WINAPI mciGetCreatorTask(MCIDEVICEID mciId);
+WINMMAPI YIELDPROC WINAPI mciGetYieldProc(MCIDEVICEID mciId, LPDWORD pdwYieldData);
+#endif /* ifdef WINVER >= 0x030a */
+
+#if (WINVER < 0x030a)
+WINMMAPI BOOL WINAPI mciExecute(LPCSTR pszCommand);
+#endif /* ifdef WINVER < 0x030a */
+
+/* MCI error return values */
+#define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1)
+#define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3)
+#define MCIERR_UNRECOGNIZED_COMMAND (MCIERR_BASE + 5)
+#define MCIERR_HARDWARE (MCIERR_BASE + 6)
+#define MCIERR_INVALID_DEVICE_NAME (MCIERR_BASE + 7)
+#define MCIERR_OUT_OF_MEMORY (MCIERR_BASE + 8)
+#define MCIERR_DEVICE_OPEN (MCIERR_BASE + 9)
+#define MCIERR_CANNOT_LOAD_DRIVER (MCIERR_BASE + 10)
+#define MCIERR_MISSING_COMMAND_STRING (MCIERR_BASE + 11)
+#define MCIERR_PARAM_OVERFLOW (MCIERR_BASE + 12)
+#define MCIERR_MISSING_STRING_ARGUMENT (MCIERR_BASE + 13)
+#define MCIERR_BAD_INTEGER (MCIERR_BASE + 14)
+#define MCIERR_PARSER_INTERNAL (MCIERR_BASE + 15)
+#define MCIERR_DRIVER_INTERNAL (MCIERR_BASE + 16)
+#define MCIERR_MISSING_PARAMETER (MCIERR_BASE + 17)
+#define MCIERR_UNSUPPORTED_FUNCTION (MCIERR_BASE + 18)
+#define MCIERR_FILE_NOT_FOUND (MCIERR_BASE + 19)
+#define MCIERR_DEVICE_NOT_READY (MCIERR_BASE + 20)
+#define MCIERR_INTERNAL (MCIERR_BASE + 21)
+#define MCIERR_DRIVER (MCIERR_BASE + 22)
+#define MCIERR_CANNOT_USE_ALL (MCIERR_BASE + 23)
+#define MCIERR_MULTIPLE (MCIERR_BASE + 24)
+#define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE + 25)
+#define MCIERR_OUTOFRANGE (MCIERR_BASE + 26)
+#define MCIERR_FLAGS_NOT_COMPATIBLE (MCIERR_BASE + 28)
+#define MCIERR_FILE_NOT_SAVED (MCIERR_BASE + 30)
+#define MCIERR_DEVICE_TYPE_REQUIRED (MCIERR_BASE + 31)
+#define MCIERR_DEVICE_LOCKED (MCIERR_BASE + 32)
+#define MCIERR_DUPLICATE_ALIAS (MCIERR_BASE + 33)
+#define MCIERR_BAD_CONSTANT (MCIERR_BASE + 34)
+#define MCIERR_MUST_USE_SHAREABLE (MCIERR_BASE + 35)
+#define MCIERR_MISSING_DEVICE_NAME (MCIERR_BASE + 36)
+#define MCIERR_BAD_TIME_FORMAT (MCIERR_BASE + 37)
+#define MCIERR_NO_CLOSING_QUOTE (MCIERR_BASE + 38)
+#define MCIERR_DUPLICATE_FLAGS (MCIERR_BASE + 39)
+#define MCIERR_INVALID_FILE (MCIERR_BASE + 40)
+#define MCIERR_NULL_PARAMETER_BLOCK (MCIERR_BASE + 41)
+#define MCIERR_UNNAMED_RESOURCE (MCIERR_BASE + 42)
+#define MCIERR_NEW_REQUIRES_ALIAS (MCIERR_BASE + 43)
+#define MCIERR_NOTIFY_ON_AUTO_OPEN (MCIERR_BASE + 44)
+#define MCIERR_NO_ELEMENT_ALLOWED (MCIERR_BASE + 45)
+#define MCIERR_NONAPPLICABLE_FUNCTION (MCIERR_BASE + 46)
+#define MCIERR_ILLEGAL_FOR_AUTO_OPEN (MCIERR_BASE + 47)
+#define MCIERR_FILENAME_REQUIRED (MCIERR_BASE + 48)
+#define MCIERR_EXTRA_CHARACTERS (MCIERR_BASE + 49)
+#define MCIERR_DEVICE_NOT_INSTALLED (MCIERR_BASE + 50)
+#define MCIERR_GET_CD (MCIERR_BASE + 51)
+#define MCIERR_SET_CD (MCIERR_BASE + 52)
+#define MCIERR_SET_DRIVE (MCIERR_BASE + 53)
+#define MCIERR_DEVICE_LENGTH (MCIERR_BASE + 54)
+#define MCIERR_DEVICE_ORD_LENGTH (MCIERR_BASE + 55)
+#define MCIERR_NO_INTEGER (MCIERR_BASE + 56)
+
+#define MCIERR_WAVE_OUTPUTSINUSE (MCIERR_BASE + 64)
+#define MCIERR_WAVE_SETOUTPUTINUSE (MCIERR_BASE + 65)
+#define MCIERR_WAVE_INPUTSINUSE (MCIERR_BASE + 66)
+#define MCIERR_WAVE_SETINPUTINUSE (MCIERR_BASE + 67)
+#define MCIERR_WAVE_OUTPUTUNSPECIFIED (MCIERR_BASE + 68)
+#define MCIERR_WAVE_INPUTUNSPECIFIED (MCIERR_BASE + 69)
+#define MCIERR_WAVE_OUTPUTSUNSUITABLE (MCIERR_BASE + 70)
+#define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE + 71)
+#define MCIERR_WAVE_INPUTSUNSUITABLE (MCIERR_BASE + 72)
+#define MCIERR_WAVE_SETINPUTUNSUITABLE (MCIERR_BASE + 73)
+
+#define MCIERR_SEQ_DIV_INCOMPATIBLE (MCIERR_BASE + 80)
+#define MCIERR_SEQ_PORT_INUSE (MCIERR_BASE + 81)
+#define MCIERR_SEQ_PORT_NONEXISTENT (MCIERR_BASE + 82)
+#define MCIERR_SEQ_PORT_MAPNODEVICE (MCIERR_BASE + 83)
+#define MCIERR_SEQ_PORT_MISCERROR (MCIERR_BASE + 84)
+#define MCIERR_SEQ_TIMER (MCIERR_BASE + 85)
+#define MCIERR_SEQ_PORTUNSPECIFIED (MCIERR_BASE + 86)
+#define MCIERR_SEQ_NOMIDIPRESENT (MCIERR_BASE + 87)
+
+#define MCIERR_NO_WINDOW (MCIERR_BASE + 90)
+#define MCIERR_CREATEWINDOW (MCIERR_BASE + 91)
+#define MCIERR_FILE_READ (MCIERR_BASE + 92)
+#define MCIERR_FILE_WRITE (MCIERR_BASE + 93)
+
+#define MCIERR_NO_IDENTITY (MCIERR_BASE + 94)
+
+/* all custom device driver errors must be >= than this value */
+#define MCIERR_CUSTOM_DRIVER_BASE (MCIERR_BASE + 256)
+
+#define MCI_FIRST DRV_MCI_FIRST /* 0x0800 */
+/* MCI command message identifiers */
+#define MCI_OPEN 0x0803
+#define MCI_CLOSE 0x0804
+#define MCI_ESCAPE 0x0805
+#define MCI_PLAY 0x0806
+#define MCI_SEEK 0x0807
+#define MCI_STOP 0x0808
+#define MCI_PAUSE 0x0809
+#define MCI_INFO 0x080A
+#define MCI_GETDEVCAPS 0x080B
+#define MCI_SPIN 0x080C
+#define MCI_SET 0x080D
+#define MCI_STEP 0x080E
+#define MCI_RECORD 0x080F
+#define MCI_SYSINFO 0x0810
+#define MCI_BREAK 0x0811
+#define MCI_SAVE 0x0813
+#define MCI_STATUS 0x0814
+#define MCI_CUE 0x0830
+#define MCI_REALIZE 0x0840
+#define MCI_WINDOW 0x0841
+#define MCI_PUT 0x0842
+#define MCI_WHERE 0x0843
+#define MCI_FREEZE 0x0844
+#define MCI_UNFREEZE 0x0845
+#define MCI_LOAD 0x0850
+#define MCI_CUT 0x0851
+#define MCI_COPY 0x0852
+#define MCI_PASTE 0x0853
+#define MCI_UPDATE 0x0854
+#define MCI_RESUME 0x0855
+#define MCI_DELETE 0x0856
+
+/* all custom MCI command messages must be >= than this value */
+#define MCI_USER_MESSAGES (DRV_MCI_FIRST + 0x400)
+#define MCI_LAST 0x0FFF
+
+
+/* device ID for "all devices" */
+#define MCI_ALL_DEVICE_ID ((MCIDEVICEID)-1)
+
+/* constants for predefined MCI device types */
+#define MCI_DEVTYPE_VCR 513 /* (MCI_STRING_OFFSET + 1) */
+#define MCI_DEVTYPE_VIDEODISC 514 /* (MCI_STRING_OFFSET + 2) */
+#define MCI_DEVTYPE_OVERLAY 515 /* (MCI_STRING_OFFSET + 3) */
+#define MCI_DEVTYPE_CD_AUDIO 516 /* (MCI_STRING_OFFSET + 4) */
+#define MCI_DEVTYPE_DAT 517 /* (MCI_STRING_OFFSET + 5) */
+#define MCI_DEVTYPE_SCANNER 518 /* (MCI_STRING_OFFSET + 6) */
+#define MCI_DEVTYPE_ANIMATION 519 /* (MCI_STRING_OFFSET + 7) */
+#define MCI_DEVTYPE_DIGITAL_VIDEO 520 /* (MCI_STRING_OFFSET + 8) */
+#define MCI_DEVTYPE_OTHER 521 /* (MCI_STRING_OFFSET + 9) */
+#define MCI_DEVTYPE_WAVEFORM_AUDIO 522 /* (MCI_STRING_OFFSET + 10) */
+#define MCI_DEVTYPE_SEQUENCER 523 /* (MCI_STRING_OFFSET + 11) */
+
+#define MCI_DEVTYPE_FIRST MCI_DEVTYPE_VCR
+#define MCI_DEVTYPE_LAST MCI_DEVTYPE_SEQUENCER
+
+#define MCI_DEVTYPE_FIRST_USER 0x1000
+/* return values for 'status mode' command */
+#define MCI_MODE_NOT_READY (MCI_STRING_OFFSET + 12)
+#define MCI_MODE_STOP (MCI_STRING_OFFSET + 13)
+#define MCI_MODE_PLAY (MCI_STRING_OFFSET + 14)
+#define MCI_MODE_RECORD (MCI_STRING_OFFSET + 15)
+#define MCI_MODE_SEEK (MCI_STRING_OFFSET + 16)
+#define MCI_MODE_PAUSE (MCI_STRING_OFFSET + 17)
+#define MCI_MODE_OPEN (MCI_STRING_OFFSET + 18)
+
+/* constants used in 'set time format' and 'status time format' commands */
+#define MCI_FORMAT_MILLISECONDS 0
+#define MCI_FORMAT_HMS 1
+#define MCI_FORMAT_MSF 2
+#define MCI_FORMAT_FRAMES 3
+#define MCI_FORMAT_SMPTE_24 4
+#define MCI_FORMAT_SMPTE_25 5
+#define MCI_FORMAT_SMPTE_30 6
+#define MCI_FORMAT_SMPTE_30DROP 7
+#define MCI_FORMAT_BYTES 8
+#define MCI_FORMAT_SAMPLES 9
+#define MCI_FORMAT_TMSF 10
+
+/* MCI time format conversion macros */
+#define MCI_MSF_MINUTE(msf) ((BYTE)(msf))
+#define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8))
+#define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16))
+
+#define MCI_MAKE_MSF(m, s, f) ((DWORD)(((BYTE)(m) | \
+ ((WORD)(s)<<8)) | \
+ (((DWORD)(BYTE)(f))<<16)))
+
+#define MCI_TMSF_TRACK(tmsf) ((BYTE)(tmsf))
+#define MCI_TMSF_MINUTE(tmsf) ((BYTE)(((WORD)(tmsf)) >> 8))
+#define MCI_TMSF_SECOND(tmsf) ((BYTE)((tmsf)>>16))
+#define MCI_TMSF_FRAME(tmsf) ((BYTE)((tmsf)>>24))
+
+#define MCI_MAKE_TMSF(t, m, s, f) ((DWORD)(((BYTE)(t) | \
+ ((WORD)(m)<<8)) | \
+ (((DWORD)(BYTE)(s) | \
+ ((WORD)(f)<<8))<<16)))
+
+#define MCI_HMS_HOUR(hms) ((BYTE)(hms))
+#define MCI_HMS_MINUTE(hms) ((BYTE)(((WORD)(hms)) >> 8))
+#define MCI_HMS_SECOND(hms) ((BYTE)((hms)>>16))
+
+#define MCI_MAKE_HMS(h, m, s) ((DWORD)(((BYTE)(h) | \
+ ((WORD)(m)<<8)) | \
+ (((DWORD)(BYTE)(s))<<16)))
+
+
+/* flags for wParam of MM_MCINOTIFY message */
+#define MCI_NOTIFY_SUCCESSFUL 0x0001
+#define MCI_NOTIFY_SUPERSEDED 0x0002
+#define MCI_NOTIFY_ABORTED 0x0004
+#define MCI_NOTIFY_FAILURE 0x0008
+
+
+/* common flags for dwFlags parameter of MCI command messages */
+#define MCI_NOTIFY 0x00000001L
+#define MCI_WAIT 0x00000002L
+#define MCI_FROM 0x00000004L
+#define MCI_TO 0x00000008L
+#define MCI_TRACK 0x00000010L
+
+/* flags for dwFlags parameter of MCI_OPEN command message */
+#define MCI_OPEN_SHAREABLE 0x00000100L
+#define MCI_OPEN_ELEMENT 0x00000200L
+#define MCI_OPEN_ALIAS 0x00000400L
+#define MCI_OPEN_ELEMENT_ID 0x00000800L
+#define MCI_OPEN_TYPE_ID 0x00001000L
+#define MCI_OPEN_TYPE 0x00002000L
+
+/* flags for dwFlags parameter of MCI_SEEK command message */
+#define MCI_SEEK_TO_START 0x00000100L
+#define MCI_SEEK_TO_END 0x00000200L
+
+/* flags for dwFlags parameter of MCI_STATUS command message */
+#define MCI_STATUS_ITEM 0x00000100L
+#define MCI_STATUS_START 0x00000200L
+
+/* flags for dwItem field of the MCI_STATUS_PARMS parameter block */
+#define MCI_STATUS_LENGTH 0x00000001L
+#define MCI_STATUS_POSITION 0x00000002L
+#define MCI_STATUS_NUMBER_OF_TRACKS 0x00000003L
+#define MCI_STATUS_MODE 0x00000004L
+#define MCI_STATUS_MEDIA_PRESENT 0x00000005L
+#define MCI_STATUS_TIME_FORMAT 0x00000006L
+#define MCI_STATUS_READY 0x00000007L
+#define MCI_STATUS_CURRENT_TRACK 0x00000008L
+
+/* flags for dwFlags parameter of MCI_INFO command message */
+#define MCI_INFO_PRODUCT 0x00000100L
+#define MCI_INFO_FILE 0x00000200L
+#define MCI_INFO_MEDIA_UPC 0x00000400L
+#define MCI_INFO_MEDIA_IDENTITY 0x00000800L
+#define MCI_INFO_NAME 0x00001000L
+#define MCI_INFO_COPYRIGHT 0x00002000L
+
+/* flags for dwFlags parameter of MCI_GETDEVCAPS command message */
+#define MCI_GETDEVCAPS_ITEM 0x00000100L
+
+/* flags for dwItem field of the MCI_GETDEVCAPS_PARMS parameter block */
+#define MCI_GETDEVCAPS_CAN_RECORD 0x00000001L
+#define MCI_GETDEVCAPS_HAS_AUDIO 0x00000002L
+#define MCI_GETDEVCAPS_HAS_VIDEO 0x00000003L
+#define MCI_GETDEVCAPS_DEVICE_TYPE 0x00000004L
+#define MCI_GETDEVCAPS_USES_FILES 0x00000005L
+#define MCI_GETDEVCAPS_COMPOUND_DEVICE 0x00000006L
+#define MCI_GETDEVCAPS_CAN_EJECT 0x00000007L
+#define MCI_GETDEVCAPS_CAN_PLAY 0x00000008L
+#define MCI_GETDEVCAPS_CAN_SAVE 0x00000009L
+
+/* flags for dwFlags parameter of MCI_SYSINFO command message */
+#define MCI_SYSINFO_QUANTITY 0x00000100L
+#define MCI_SYSINFO_OPEN 0x00000200L
+#define MCI_SYSINFO_NAME 0x00000400L
+#define MCI_SYSINFO_INSTALLNAME 0x00000800L
+
+/* flags for dwFlags parameter of MCI_SET command message */
+#define MCI_SET_DOOR_OPEN 0x00000100L
+#define MCI_SET_DOOR_CLOSED 0x00000200L
+#define MCI_SET_TIME_FORMAT 0x00000400L
+#define MCI_SET_AUDIO 0x00000800L
+#define MCI_SET_VIDEO 0x00001000L
+#define MCI_SET_ON 0x00002000L
+#define MCI_SET_OFF 0x00004000L
+
+/* flags for dwAudio field of MCI_SET_PARMS or MCI_SEQ_SET_PARMS */
+#define MCI_SET_AUDIO_ALL 0x00000000L
+#define MCI_SET_AUDIO_LEFT 0x00000001L
+#define MCI_SET_AUDIO_RIGHT 0x00000002L
+
+/* flags for dwFlags parameter of MCI_BREAK command message */
+#define MCI_BREAK_KEY 0x00000100L
+#define MCI_BREAK_HWND 0x00000200L
+#define MCI_BREAK_OFF 0x00000400L
+
+/* flags for dwFlags parameter of MCI_RECORD command message */
+#define MCI_RECORD_INSERT 0x00000100L
+#define MCI_RECORD_OVERWRITE 0x00000200L
+
+/* flags for dwFlags parameter of MCI_SAVE command message */
+#define MCI_SAVE_FILE 0x00000100L
+
+/* flags for dwFlags parameter of MCI_LOAD command message */
+#define MCI_LOAD_FILE 0x00000100L
+
+
+/* generic parameter block for MCI command messages with no special parameters */
+typedef struct tagMCI_GENERIC_PARMS {
+ DWORD dwCallback;
+} MCI_GENERIC_PARMS, *PMCI_GENERIC_PARMS, FAR *LPMCI_GENERIC_PARMS;
+
+
+/* parameter block for MCI_OPEN command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_OPEN_PARMSA {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+} MCI_OPEN_PARMSA, *PMCI_OPEN_PARMSA, *LPMCI_OPEN_PARMSA;
+typedef struct tagMCI_OPEN_PARMSW {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCWSTR lpstrDeviceType;
+ LPCWSTR lpstrElementName;
+ LPCWSTR lpstrAlias;
+} MCI_OPEN_PARMSW, *PMCI_OPEN_PARMSW, *LPMCI_OPEN_PARMSW;
+#ifdef UNICODE
+typedef MCI_OPEN_PARMSW MCI_OPEN_PARMS;
+typedef PMCI_OPEN_PARMSW PMCI_OPEN_PARMS;
+typedef LPMCI_OPEN_PARMSW LPMCI_OPEN_PARMS;
+#else
+typedef MCI_OPEN_PARMSA MCI_OPEN_PARMS;
+typedef PMCI_OPEN_PARMSA PMCI_OPEN_PARMS;
+typedef LPMCI_OPEN_PARMSA LPMCI_OPEN_PARMS;
+#endif // UNICODE
+
+#else
+typedef struct tagMCI_OPEN_PARMS {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ WORD wReserved0;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+} MCI_OPEN_PARMS, FAR *LPMCI_OPEN_PARMS;
+#endif
+
+
+/* parameter block for MCI_PLAY command message */
+typedef struct tagMCI_PLAY_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+} MCI_PLAY_PARMS, *PMCI_PLAY_PARMS, FAR *LPMCI_PLAY_PARMS;
+
+
+/* parameter block for MCI_SEEK command message */
+typedef struct tagMCI_SEEK_PARMS {
+ DWORD dwCallback;
+ DWORD dwTo;
+} MCI_SEEK_PARMS, *PMCI_SEEK_PARMS, FAR *LPMCI_SEEK_PARMS;
+
+
+/* parameter block for MCI_STATUS command message */
+typedef struct tagMCI_STATUS_PARMS {
+ DWORD dwCallback;
+ DWORD dwReturn;
+ DWORD dwItem;
+ DWORD dwTrack;
+} MCI_STATUS_PARMS, *PMCI_STATUS_PARMS, FAR * LPMCI_STATUS_PARMS;
+
+
+/* parameter block for MCI_INFO command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_INFO_PARMSA {
+ DWORD dwCallback;
+ LPSTR lpstrReturn;
+ DWORD dwRetSize;
+} MCI_INFO_PARMSA, * LPMCI_INFO_PARMSA;
+typedef struct tagMCI_INFO_PARMSW {
+ DWORD dwCallback;
+ LPWSTR lpstrReturn;
+ DWORD dwRetSize;
+} MCI_INFO_PARMSW, * LPMCI_INFO_PARMSW;
+#ifdef UNICODE
+typedef MCI_INFO_PARMSW MCI_INFO_PARMS;
+typedef LPMCI_INFO_PARMSW LPMCI_INFO_PARMS;
+#else
+typedef MCI_INFO_PARMSA MCI_INFO_PARMS;
+typedef LPMCI_INFO_PARMSA LPMCI_INFO_PARMS;
+#endif // UNICODE
+
+#else
+typedef struct tagMCI_INFO_PARMS {
+ DWORD dwCallback;
+ LPSTR lpstrReturn;
+ DWORD dwRetSize;
+} MCI_INFO_PARMS, FAR * LPMCI_INFO_PARMS;
+#endif
+
+
+/* parameter block for MCI_GETDEVCAPS command message */
+typedef struct tagMCI_GETDEVCAPS_PARMS {
+ DWORD dwCallback;
+ DWORD dwReturn;
+ DWORD dwItem;
+} MCI_GETDEVCAPS_PARMS, *PMCI_GETDEVCAPS_PARMS, FAR * LPMCI_GETDEVCAPS_PARMS;
+
+
+/* parameter block for MCI_SYSINFO command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_SYSINFO_PARMSA {
+ DWORD dwCallback;
+ LPSTR lpstrReturn;
+ DWORD dwRetSize;
+ DWORD dwNumber;
+ UINT wDeviceType;
+} MCI_SYSINFO_PARMSA, *PMCI_SYSINFO_PARMSA, * LPMCI_SYSINFO_PARMSA;
+typedef struct tagMCI_SYSINFO_PARMSW {
+ DWORD dwCallback;
+ LPWSTR lpstrReturn;
+ DWORD dwRetSize;
+ DWORD dwNumber;
+ UINT wDeviceType;
+} MCI_SYSINFO_PARMSW, *PMCI_SYSINFO_PARMSW, * LPMCI_SYSINFO_PARMSW;
+#ifdef UNICODE
+typedef MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS;
+typedef PMCI_SYSINFO_PARMSW PMCI_SYSINFO_PARMS;
+typedef LPMCI_SYSINFO_PARMSW LPMCI_SYSINFO_PARMS;
+#else
+typedef MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS;
+typedef PMCI_SYSINFO_PARMSA PMCI_SYSINFO_PARMS;
+typedef LPMCI_SYSINFO_PARMSA LPMCI_SYSINFO_PARMS;
+#endif // UNICODE
+#else
+typedef struct tagMCI_SYSINFO_PARMS {
+ DWORD dwCallback;
+ LPSTR lpstrReturn;
+ DWORD dwRetSize;
+ DWORD dwNumber;
+ WORD wDeviceType;
+ WORD wReserved0;
+} MCI_SYSINFO_PARMS, FAR * LPMCI_SYSINFO_PARMS;
+#endif
+
+
+/* parameter block for MCI_SET command message */
+typedef struct tagMCI_SET_PARMS {
+ DWORD dwCallback;
+ DWORD dwTimeFormat;
+ DWORD dwAudio;
+} MCI_SET_PARMS, *PMCI_SET_PARMS, FAR *LPMCI_SET_PARMS;
+
+
+/* parameter block for MCI_BREAK command message */
+typedef struct tagMCI_BREAK_PARMS {
+ DWORD dwCallback;
+#ifdef _WIN32
+ int nVirtKey;
+ HWND hwndBreak;
+#else
+ short nVirtKey;
+ WORD wReserved0; /* padding for Win 16 */
+ HWND hwndBreak;
+ WORD wReserved1; /* padding for Win 16 */
+#endif
+} MCI_BREAK_PARMS, *PMCI_BREAK_PARMS, FAR * LPMCI_BREAK_PARMS;
+
+
+
+/* parameter block for MCI_SAVE command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_SAVE_PARMSA {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+} MCI_SAVE_PARMSA, *PMCI_SAVE_PARMSA, * LPMCI_SAVE_PARMSA;
+typedef struct tagMCI_SAVE_PARMSW {
+ DWORD dwCallback;
+ LPCWSTR lpfilename;
+} MCI_SAVE_PARMSW, *PMCI_SAVE_PARMSW, * LPMCI_SAVE_PARMSW;
+#ifdef UNICODE
+typedef MCI_SAVE_PARMSW MCI_SAVE_PARMS;
+typedef PMCI_SAVE_PARMSW PMCI_SAVE_PARMS;
+typedef LPMCI_SAVE_PARMSW LPMCI_SAVE_PARMS;
+#else
+typedef MCI_SAVE_PARMSA MCI_SAVE_PARMS;
+typedef PMCI_SAVE_PARMSA PMCI_SAVE_PARMS;
+typedef LPMCI_SAVE_PARMSA LPMCI_SAVE_PARMS;
+#endif // UNICODE
+
+#else
+typedef struct tagMCI_SAVE_PARMS {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+} MCI_SAVE_PARMS, FAR * LPMCI_SAVE_PARMS;
+#endif
+
+
+/* parameter block for MCI_LOAD command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_LOAD_PARMSA {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+} MCI_LOAD_PARMSA, *PMCI_LOAD_PARMSA, * LPMCI_LOAD_PARMSA;
+typedef struct tagMCI_LOAD_PARMSW {
+ DWORD dwCallback;
+ LPCWSTR lpfilename;
+} MCI_LOAD_PARMSW, *PMCI_LOAD_PARMSW, * LPMCI_LOAD_PARMSW;
+#ifdef UNICODE
+typedef MCI_LOAD_PARMSW MCI_LOAD_PARMS;
+typedef PMCI_LOAD_PARMSW PMCI_LOAD_PARMS;
+typedef LPMCI_LOAD_PARMSW LPMCI_LOAD_PARMS;
+#else
+typedef MCI_LOAD_PARMSA MCI_LOAD_PARMS;
+typedef PMCI_LOAD_PARMSA PMCI_LOAD_PARMS;
+typedef LPMCI_LOAD_PARMSA LPMCI_LOAD_PARMS;
+#endif // UNICODE
+
+#else
+typedef struct tagMCI_LOAD_PARMS {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+} MCI_LOAD_PARMS, FAR * LPMCI_LOAD_PARMS;
+#endif
+
+
+/* parameter block for MCI_RECORD command message */
+typedef struct tagMCI_RECORD_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+} MCI_RECORD_PARMS, FAR *LPMCI_RECORD_PARMS;
+
+
+/* MCI extensions for videodisc devices */
+
+/* flag for dwReturn field of MCI_STATUS_PARMS */
+/* MCI_STATUS command, (dwItem == MCI_STATUS_MODE) */
+#define MCI_VD_MODE_PARK (MCI_VD_OFFSET + 1)
+
+/* flag for dwReturn field of MCI_STATUS_PARMS */
+/* MCI_STATUS command, (dwItem == MCI_VD_STATUS_MEDIA_TYPE) */
+#define MCI_VD_MEDIA_CLV (MCI_VD_OFFSET + 2)
+#define MCI_VD_MEDIA_CAV (MCI_VD_OFFSET + 3)
+#define MCI_VD_MEDIA_OTHER (MCI_VD_OFFSET + 4)
+
+#define MCI_VD_FORMAT_TRACK 0x4001
+
+/* flags for dwFlags parameter of MCI_PLAY command message */
+#define MCI_VD_PLAY_REVERSE 0x00010000L
+#define MCI_VD_PLAY_FAST 0x00020000L
+#define MCI_VD_PLAY_SPEED 0x00040000L
+#define MCI_VD_PLAY_SCAN 0x00080000L
+#define MCI_VD_PLAY_SLOW 0x00100000L
+
+/* flag for dwFlags parameter of MCI_SEEK command message */
+#define MCI_VD_SEEK_REVERSE 0x00010000L
+
+/* flags for dwItem field of MCI_STATUS_PARMS parameter block */
+#define MCI_VD_STATUS_SPEED 0x00004002L
+#define MCI_VD_STATUS_FORWARD 0x00004003L
+#define MCI_VD_STATUS_MEDIA_TYPE 0x00004004L
+#define MCI_VD_STATUS_SIDE 0x00004005L
+#define MCI_VD_STATUS_DISC_SIZE 0x00004006L
+
+/* flags for dwFlags parameter of MCI_GETDEVCAPS command message */
+#define MCI_VD_GETDEVCAPS_CLV 0x00010000L
+#define MCI_VD_GETDEVCAPS_CAV 0x00020000L
+
+#define MCI_VD_SPIN_UP 0x00010000L
+#define MCI_VD_SPIN_DOWN 0x00020000L
+
+/* flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block */
+#define MCI_VD_GETDEVCAPS_CAN_REVERSE 0x00004002L
+#define MCI_VD_GETDEVCAPS_FAST_RATE 0x00004003L
+#define MCI_VD_GETDEVCAPS_SLOW_RATE 0x00004004L
+#define MCI_VD_GETDEVCAPS_NORMAL_RATE 0x00004005L
+
+/* flags for the dwFlags parameter of MCI_STEP command message */
+#define MCI_VD_STEP_FRAMES 0x00010000L
+#define MCI_VD_STEP_REVERSE 0x00020000L
+
+/* flag for the MCI_ESCAPE command message */
+#define MCI_VD_ESCAPE_STRING 0x00000100L
+
+
+/* parameter block for MCI_PLAY command message */
+typedef struct tagMCI_VD_PLAY_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+ DWORD dwSpeed;
+} MCI_VD_PLAY_PARMS, *PMCI_VD_PLAY_PARMS, FAR *LPMCI_VD_PLAY_PARMS;
+
+
+/* parameter block for MCI_STEP command message */
+typedef struct tagMCI_VD_STEP_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrames;
+} MCI_VD_STEP_PARMS, *PMCI_VD_STEP_PARMS, FAR *LPMCI_VD_STEP_PARMS;
+
+
+/* parameter block for MCI_ESCAPE command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_VD_ESCAPE_PARMSA {
+ DWORD dwCallback;
+ LPCSTR lpstrCommand;
+} MCI_VD_ESCAPE_PARMSA, *PMCI_VD_ESCAPE_PARMSA, *LPMCI_VD_ESCAPE_PARMSA;
+typedef struct tagMCI_VD_ESCAPE_PARMSW {
+ DWORD dwCallback;
+ LPCWSTR lpstrCommand;
+} MCI_VD_ESCAPE_PARMSW, *PMCI_VD_ESCAPE_PARMSW, *LPMCI_VD_ESCAPE_PARMSW;
+#ifdef UNICODE
+typedef MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS;
+typedef PMCI_VD_ESCAPE_PARMSW PMCI_VD_ESCAPE_PARMS;
+typedef LPMCI_VD_ESCAPE_PARMSW LPMCI_VD_ESCAPE_PARMS;
+#else
+typedef MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS;
+typedef PMCI_VD_ESCAPE_PARMSA PMCI_VD_ESCAPE_PARMS;
+typedef LPMCI_VD_ESCAPE_PARMSA LPMCI_VD_ESCAPE_PARMS;
+#endif // UNICODE
+
+#else
+typedef struct tagMCI_VD_ESCAPE_PARMS {
+ DWORD dwCallback;
+ LPCSTR lpstrCommand;
+} MCI_VD_ESCAPE_PARMS, FAR *LPMCI_VD_ESCAPE_PARMS;
+#endif
+
+/* MCI extensions for CD audio devices */
+
+/* flags for the dwItem field of the MCI_STATUS_PARMS parameter block */
+#define MCI_CDA_STATUS_TYPE_TRACK 0x00004001L
+
+/* flags for the dwReturn field of MCI_STATUS_PARMS parameter block */
+/* MCI_STATUS command, (dwItem == MCI_CDA_STATUS_TYPE_TRACK) */
+#define MCI_CDA_TRACK_AUDIO (MCI_CD_OFFSET + 0)
+#define MCI_CDA_TRACK_OTHER (MCI_CD_OFFSET + 1)
+
+/* MCI extensions for waveform audio devices */
+
+#define MCI_WAVE_PCM (MCI_WAVE_OFFSET + 0)
+#define MCI_WAVE_MAPPER (MCI_WAVE_OFFSET + 1)
+
+/* flags for the dwFlags parameter of MCI_OPEN command message */
+#define MCI_WAVE_OPEN_BUFFER 0x00010000L
+
+/* flags for the dwFlags parameter of MCI_SET command message */
+#define MCI_WAVE_SET_FORMATTAG 0x00010000L
+#define MCI_WAVE_SET_CHANNELS 0x00020000L
+#define MCI_WAVE_SET_SAMPLESPERSEC 0x00040000L
+#define MCI_WAVE_SET_AVGBYTESPERSEC 0x00080000L
+#define MCI_WAVE_SET_BLOCKALIGN 0x00100000L
+#define MCI_WAVE_SET_BITSPERSAMPLE 0x00200000L
+
+/* flags for the dwFlags parameter of MCI_STATUS, MCI_SET command messages */
+#define MCI_WAVE_INPUT 0x00400000L
+#define MCI_WAVE_OUTPUT 0x00800000L
+
+/* flags for the dwItem field of MCI_STATUS_PARMS parameter block */
+#define MCI_WAVE_STATUS_FORMATTAG 0x00004001L
+#define MCI_WAVE_STATUS_CHANNELS 0x00004002L
+#define MCI_WAVE_STATUS_SAMPLESPERSEC 0x00004003L
+#define MCI_WAVE_STATUS_AVGBYTESPERSEC 0x00004004L
+#define MCI_WAVE_STATUS_BLOCKALIGN 0x00004005L
+#define MCI_WAVE_STATUS_BITSPERSAMPLE 0x00004006L
+#define MCI_WAVE_STATUS_LEVEL 0x00004007L
+
+/* flags for the dwFlags parameter of MCI_SET command message */
+#define MCI_WAVE_SET_ANYINPUT 0x04000000L
+#define MCI_WAVE_SET_ANYOUTPUT 0x08000000L
+
+/* flags for the dwFlags parameter of MCI_GETDEVCAPS command message */
+#define MCI_WAVE_GETDEVCAPS_INPUTS 0x00004001L
+#define MCI_WAVE_GETDEVCAPS_OUTPUTS 0x00004002L
+
+
+/* parameter block for MCI_OPEN command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_WAVE_OPEN_PARMSA {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+ DWORD dwBufferSeconds;
+} MCI_WAVE_OPEN_PARMSA, *PMCI_WAVE_OPEN_PARMSA, *LPMCI_WAVE_OPEN_PARMSA;
+typedef struct tagMCI_WAVE_OPEN_PARMSW {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCWSTR lpstrDeviceType;
+ LPCWSTR lpstrElementName;
+ LPCWSTR lpstrAlias;
+ DWORD dwBufferSeconds;
+} MCI_WAVE_OPEN_PARMSW, *PMCI_WAVE_OPEN_PARMSW, *LPMCI_WAVE_OPEN_PARMSW;
+#ifdef UNICODE
+typedef MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS;
+typedef PMCI_WAVE_OPEN_PARMSW PMCI_WAVE_OPEN_PARMS;
+typedef LPMCI_WAVE_OPEN_PARMSW LPMCI_WAVE_OPEN_PARMS;
+#else
+typedef MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS;
+typedef PMCI_WAVE_OPEN_PARMSA PMCI_WAVE_OPEN_PARMS;
+typedef LPMCI_WAVE_OPEN_PARMSA LPMCI_WAVE_OPEN_PARMS;
+#endif // UNICODE
+
+#else
+typedef struct tagMCI_WAVE_OPEN_PARMS {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ WORD wReserved0;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+ DWORD dwBufferSeconds;
+} MCI_WAVE_OPEN_PARMS, FAR *LPMCI_WAVE_OPEN_PARMS;
+#endif
+
+
+/* parameter block for MCI_DELETE command message */
+typedef struct tagMCI_WAVE_DELETE_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+} MCI_WAVE_DELETE_PARMS, *PMCI_WAVE_DELETE_PARMS, FAR *LPMCI_WAVE_DELETE_PARMS;
+
+
+/* parameter block for MCI_SET command message */
+typedef struct tagMCI_WAVE_SET_PARMS {
+ DWORD dwCallback;
+ DWORD dwTimeFormat;
+ DWORD dwAudio;
+#ifdef _WIN32
+ UINT wInput;
+ UINT wOutput;
+#else
+ WORD wInput;
+ WORD wReserved0;
+ WORD wOutput;
+ WORD wReserved1;
+#endif
+ WORD wFormatTag;
+ WORD wReserved2;
+ WORD nChannels;
+ WORD wReserved3;
+ DWORD nSamplesPerSec;
+ DWORD nAvgBytesPerSec;
+ WORD nBlockAlign;
+ WORD wReserved4;
+ WORD wBitsPerSample;
+ WORD wReserved5;
+} MCI_WAVE_SET_PARMS, *PMCI_WAVE_SET_PARMS, FAR * LPMCI_WAVE_SET_PARMS;
+
+
+/* MCI extensions for MIDI sequencer devices */
+
+/* flags for the dwReturn field of MCI_STATUS_PARMS parameter block */
+/* MCI_STATUS command, (dwItem == MCI_SEQ_STATUS_DIVTYPE) */
+#define MCI_SEQ_DIV_PPQN (0 + MCI_SEQ_OFFSET)
+#define MCI_SEQ_DIV_SMPTE_24 (1 + MCI_SEQ_OFFSET)
+#define MCI_SEQ_DIV_SMPTE_25 (2 + MCI_SEQ_OFFSET)
+#define MCI_SEQ_DIV_SMPTE_30DROP (3 + MCI_SEQ_OFFSET)
+#define MCI_SEQ_DIV_SMPTE_30 (4 + MCI_SEQ_OFFSET)
+
+/* flags for the dwMaster field of MCI_SEQ_SET_PARMS parameter block */
+/* MCI_SET command, (dwFlags == MCI_SEQ_SET_MASTER) */
+#define MCI_SEQ_FORMAT_SONGPTR 0x4001
+#define MCI_SEQ_FILE 0x4002
+#define MCI_SEQ_MIDI 0x4003
+#define MCI_SEQ_SMPTE 0x4004
+#define MCI_SEQ_NONE 65533
+#define MCI_SEQ_MAPPER 65535
+
+/* flags for the dwItem field of MCI_STATUS_PARMS parameter block */
+#define MCI_SEQ_STATUS_TEMPO 0x00004002L
+#define MCI_SEQ_STATUS_PORT 0x00004003L
+#define MCI_SEQ_STATUS_SLAVE 0x00004007L
+#define MCI_SEQ_STATUS_MASTER 0x00004008L
+#define MCI_SEQ_STATUS_OFFSET 0x00004009L
+#define MCI_SEQ_STATUS_DIVTYPE 0x0000400AL
+#define MCI_SEQ_STATUS_NAME 0x0000400BL
+#define MCI_SEQ_STATUS_COPYRIGHT 0x0000400CL
+
+/* flags for the dwFlags parameter of MCI_SET command message */
+#define MCI_SEQ_SET_TEMPO 0x00010000L
+#define MCI_SEQ_SET_PORT 0x00020000L
+#define MCI_SEQ_SET_SLAVE 0x00040000L
+#define MCI_SEQ_SET_MASTER 0x00080000L
+#define MCI_SEQ_SET_OFFSET 0x01000000L
+
+
+/* parameter block for MCI_SET command message */
+typedef struct tagMCI_SEQ_SET_PARMS {
+ DWORD dwCallback;
+ DWORD dwTimeFormat;
+ DWORD dwAudio;
+ DWORD dwTempo;
+ DWORD dwPort;
+ DWORD dwSlave;
+ DWORD dwMaster;
+ DWORD dwOffset;
+} MCI_SEQ_SET_PARMS, *PMCI_SEQ_SET_PARMS, FAR * LPMCI_SEQ_SET_PARMS;
+
+
+/* MCI extensions for animation devices */
+
+/* flags for dwFlags parameter of MCI_OPEN command message */
+#define MCI_ANIM_OPEN_WS 0x00010000L
+#define MCI_ANIM_OPEN_PARENT 0x00020000L
+#define MCI_ANIM_OPEN_NOSTATIC 0x00040000L
+
+/* flags for dwFlags parameter of MCI_PLAY command message */
+#define MCI_ANIM_PLAY_SPEED 0x00010000L
+#define MCI_ANIM_PLAY_REVERSE 0x00020000L
+#define MCI_ANIM_PLAY_FAST 0x00040000L
+#define MCI_ANIM_PLAY_SLOW 0x00080000L
+#define MCI_ANIM_PLAY_SCAN 0x00100000L
+
+/* flags for dwFlags parameter of MCI_STEP command message */
+#define MCI_ANIM_STEP_REVERSE 0x00010000L
+#define MCI_ANIM_STEP_FRAMES 0x00020000L
+
+/* flags for dwItem field of MCI_STATUS_PARMS parameter block */
+#define MCI_ANIM_STATUS_SPEED 0x00004001L
+#define MCI_ANIM_STATUS_FORWARD 0x00004002L
+#define MCI_ANIM_STATUS_HWND 0x00004003L
+#define MCI_ANIM_STATUS_HPAL 0x00004004L
+#define MCI_ANIM_STATUS_STRETCH 0x00004005L
+
+/* flags for the dwFlags parameter of MCI_INFO command message */
+#define MCI_ANIM_INFO_TEXT 0x00010000L
+
+/* flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block */
+#define MCI_ANIM_GETDEVCAPS_CAN_REVERSE 0x00004001L
+#define MCI_ANIM_GETDEVCAPS_FAST_RATE 0x00004002L
+#define MCI_ANIM_GETDEVCAPS_SLOW_RATE 0x00004003L
+#define MCI_ANIM_GETDEVCAPS_NORMAL_RATE 0x00004004L
+#define MCI_ANIM_GETDEVCAPS_PALETTES 0x00004006L
+#define MCI_ANIM_GETDEVCAPS_CAN_STRETCH 0x00004007L
+#define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS 0x00004008L
+
+/* flags for the MCI_REALIZE command message */
+#define MCI_ANIM_REALIZE_NORM 0x00010000L
+#define MCI_ANIM_REALIZE_BKGD 0x00020000L
+
+/* flags for dwFlags parameter of MCI_WINDOW command message */
+#define MCI_ANIM_WINDOW_HWND 0x00010000L
+#define MCI_ANIM_WINDOW_STATE 0x00040000L
+#define MCI_ANIM_WINDOW_TEXT 0x00080000L
+#define MCI_ANIM_WINDOW_ENABLE_STRETCH 0x00100000L
+#define MCI_ANIM_WINDOW_DISABLE_STRETCH 0x00200000L
+
+/* flags for hWnd field of MCI_ANIM_WINDOW_PARMS parameter block */
+/* MCI_WINDOW command message, (dwFlags == MCI_ANIM_WINDOW_HWND) */
+#define MCI_ANIM_WINDOW_DEFAULT 0x00000000L
+
+/* flags for dwFlags parameter of MCI_PUT command message */
+#define MCI_ANIM_RECT 0x00010000L
+#define MCI_ANIM_PUT_SOURCE 0x00020000L
+#define MCI_ANIM_PUT_DESTINATION 0x00040000L
+
+/* flags for dwFlags parameter of MCI_WHERE command message */
+#define MCI_ANIM_WHERE_SOURCE 0x00020000L
+#define MCI_ANIM_WHERE_DESTINATION 0x00040000L
+
+/* flags for dwFlags parameter of MCI_UPDATE command message */
+#define MCI_ANIM_UPDATE_HDC 0x00020000L
+
+
+/* parameter block for MCI_OPEN command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_ANIM_OPEN_PARMSA {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+} MCI_ANIM_OPEN_PARMSA, *PMCI_ANIM_OPEN_PARMSA, *LPMCI_ANIM_OPEN_PARMSA;
+typedef struct tagMCI_ANIM_OPEN_PARMSW {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCWSTR lpstrDeviceType;
+ LPCWSTR lpstrElementName;
+ LPCWSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+} MCI_ANIM_OPEN_PARMSW, *PMCI_ANIM_OPEN_PARMSW, *LPMCI_ANIM_OPEN_PARMSW;
+#ifdef UNICODE
+typedef MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS;
+typedef PMCI_ANIM_OPEN_PARMSW PMCI_ANIM_OPEN_PARMS;
+typedef LPMCI_ANIM_OPEN_PARMSW LPMCI_ANIM_OPEN_PARMS;
+#else
+typedef MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS;
+typedef PMCI_ANIM_OPEN_PARMSA PMCI_ANIM_OPEN_PARMS;
+typedef LPMCI_ANIM_OPEN_PARMSA LPMCI_ANIM_OPEN_PARMS;
+#endif // UNICODE
+
+#else
+typedef struct tagMCI_ANIM_OPEN_PARMS {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ WORD wReserved0;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+ WORD wReserved1;
+} MCI_ANIM_OPEN_PARMS, FAR *LPMCI_ANIM_OPEN_PARMS;
+#endif
+
+
+/* parameter block for MCI_PLAY command message */
+typedef struct tagMCI_ANIM_PLAY_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+ DWORD dwSpeed;
+} MCI_ANIM_PLAY_PARMS, *PMCI_ANIM_PLAY_PARMS, FAR *LPMCI_ANIM_PLAY_PARMS;
+
+
+/* parameter block for MCI_STEP command message */
+typedef struct tagMCI_ANIM_STEP_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrames;
+} MCI_ANIM_STEP_PARMS, *PMCI_ANIM_STEP_PARMS, FAR *LPMCI_ANIM_STEP_PARMS;
+
+
+/* parameter block for MCI_WINDOW command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_ANIM_WINDOW_PARMSA {
+ DWORD dwCallback;
+ HWND hWnd;
+ UINT nCmdShow;
+ LPCSTR lpstrText;
+} MCI_ANIM_WINDOW_PARMSA, *PMCI_ANIM_WINDOW_PARMSA, * LPMCI_ANIM_WINDOW_PARMSA;
+typedef struct tagMCI_ANIM_WINDOW_PARMSW {
+ DWORD dwCallback;
+ HWND hWnd;
+ UINT nCmdShow;
+ LPCWSTR lpstrText;
+} MCI_ANIM_WINDOW_PARMSW, *PMCI_ANIM_WINDOW_PARMSW, * LPMCI_ANIM_WINDOW_PARMSW;
+#ifdef UNICODE
+typedef MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS;
+typedef PMCI_ANIM_WINDOW_PARMSW PMCI_ANIM_WINDOW_PARMS;
+typedef LPMCI_ANIM_WINDOW_PARMSW LPMCI_ANIM_WINDOW_PARMS;
+#else
+typedef MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS;
+typedef PMCI_ANIM_WINDOW_PARMSA PMCI_ANIM_WINDOW_PARMS;
+typedef LPMCI_ANIM_WINDOW_PARMSA LPMCI_ANIM_WINDOW_PARMS;
+#endif // UNICODE
+
+#else
+typedef struct tagMCI_ANIM_WINDOW_PARMS {
+ DWORD dwCallback;
+ HWND hWnd;
+ WORD wReserved1;
+ WORD nCmdShow;
+ WORD wReserved2;
+ LPCSTR lpstrText;
+} MCI_ANIM_WINDOW_PARMS, FAR * LPMCI_ANIM_WINDOW_PARMS;
+#endif
+
+
+/* parameter block for MCI_PUT, MCI_UPDATE, MCI_WHERE command messages */
+typedef struct tagMCI_ANIM_RECT_PARMS {
+ DWORD dwCallback;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else /* ifdef MCI_USE_OFFEXT */
+ RECT rc;
+#endif /* ifdef MCI_USE_OFFEXT */
+} MCI_ANIM_RECT_PARMS;
+typedef MCI_ANIM_RECT_PARMS * PMCI_ANIM_RECT_PARMS;
+typedef MCI_ANIM_RECT_PARMS FAR * LPMCI_ANIM_RECT_PARMS;
+
+
+/* parameter block for MCI_UPDATE PARMS */
+typedef struct tagMCI_ANIM_UPDATE_PARMS {
+ DWORD dwCallback;
+ RECT rc;
+ HDC hDC;
+} MCI_ANIM_UPDATE_PARMS, *PMCI_ANIM_UPDATE_PARMS, FAR * LPMCI_ANIM_UPDATE_PARMS;
+
+
+/* MCI extensions for video overlay devices */
+
+/* flags for dwFlags parameter of MCI_OPEN command message */
+#define MCI_OVLY_OPEN_WS 0x00010000L
+#define MCI_OVLY_OPEN_PARENT 0x00020000L
+
+/* flags for dwFlags parameter of MCI_STATUS command message */
+#define MCI_OVLY_STATUS_HWND 0x00004001L
+#define MCI_OVLY_STATUS_STRETCH 0x00004002L
+
+/* flags for dwFlags parameter of MCI_INFO command message */
+#define MCI_OVLY_INFO_TEXT 0x00010000L
+
+/* flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block */
+#define MCI_OVLY_GETDEVCAPS_CAN_STRETCH 0x00004001L
+#define MCI_OVLY_GETDEVCAPS_CAN_FREEZE 0x00004002L
+#define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS 0x00004003L
+
+/* flags for dwFlags parameter of MCI_WINDOW command message */
+#define MCI_OVLY_WINDOW_HWND 0x00010000L
+#define MCI_OVLY_WINDOW_STATE 0x00040000L
+#define MCI_OVLY_WINDOW_TEXT 0x00080000L
+#define MCI_OVLY_WINDOW_ENABLE_STRETCH 0x00100000L
+#define MCI_OVLY_WINDOW_DISABLE_STRETCH 0x00200000L
+
+/* flags for hWnd parameter of MCI_OVLY_WINDOW_PARMS parameter block */
+#define MCI_OVLY_WINDOW_DEFAULT 0x00000000L
+
+/* flags for dwFlags parameter of MCI_PUT command message */
+#define MCI_OVLY_RECT 0x00010000L
+#define MCI_OVLY_PUT_SOURCE 0x00020000L
+#define MCI_OVLY_PUT_DESTINATION 0x00040000L
+#define MCI_OVLY_PUT_FRAME 0x00080000L
+#define MCI_OVLY_PUT_VIDEO 0x00100000L
+
+/* flags for dwFlags parameter of MCI_WHERE command message */
+#define MCI_OVLY_WHERE_SOURCE 0x00020000L
+#define MCI_OVLY_WHERE_DESTINATION 0x00040000L
+#define MCI_OVLY_WHERE_FRAME 0x00080000L
+#define MCI_OVLY_WHERE_VIDEO 0x00100000L
+
+
+/* parameter block for MCI_OPEN command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_OVLY_OPEN_PARMSA {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+} MCI_OVLY_OPEN_PARMSA, *PMCI_OVLY_OPEN_PARMSA, *LPMCI_OVLY_OPEN_PARMSA;
+typedef struct tagMCI_OVLY_OPEN_PARMSW {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCWSTR lpstrDeviceType;
+ LPCWSTR lpstrElementName;
+ LPCWSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+} MCI_OVLY_OPEN_PARMSW, *PMCI_OVLY_OPEN_PARMSW, *LPMCI_OVLY_OPEN_PARMSW;
+#ifdef UNICODE
+typedef MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS;
+typedef PMCI_OVLY_OPEN_PARMSW PMCI_OVLY_OPEN_PARMS;
+typedef LPMCI_OVLY_OPEN_PARMSW LPMCI_OVLY_OPEN_PARMS;
+#else
+typedef MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS;
+typedef PMCI_OVLY_OPEN_PARMSA PMCI_OVLY_OPEN_PARMS;
+typedef LPMCI_OVLY_OPEN_PARMSA LPMCI_OVLY_OPEN_PARMS;
+#endif // UNICODE
+
+#else
+typedef struct tagMCI_OVLY_OPEN_PARMS {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ WORD wReserved0;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+ WORD wReserved1;
+} MCI_OVLY_OPEN_PARMS, FAR *LPMCI_OVLY_OPEN_PARMS;
+#endif
+
+
+/* parameter block for MCI_WINDOW command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_OVLY_WINDOW_PARMSA {
+ DWORD dwCallback;
+ HWND hWnd;
+ UINT nCmdShow;
+ LPCSTR lpstrText;
+} MCI_OVLY_WINDOW_PARMSA, *PMCI_OVLY_WINDOW_PARMSA, * LPMCI_OVLY_WINDOW_PARMSA;
+typedef struct tagMCI_OVLY_WINDOW_PARMSW {
+ DWORD dwCallback;
+ HWND hWnd;
+ UINT nCmdShow;
+ LPCWSTR lpstrText;
+} MCI_OVLY_WINDOW_PARMSW, *PMCI_OVLY_WINDOW_PARMSW, * LPMCI_OVLY_WINDOW_PARMSW;
+#ifdef UNICODE
+typedef MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS;
+typedef PMCI_OVLY_WINDOW_PARMSW PMCI_OVLY_WINDOW_PARMS;
+typedef LPMCI_OVLY_WINDOW_PARMSW LPMCI_OVLY_WINDOW_PARMS;
+#else
+typedef MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS;
+typedef PMCI_OVLY_WINDOW_PARMSA PMCI_OVLY_WINDOW_PARMS;
+typedef LPMCI_OVLY_WINDOW_PARMSA LPMCI_OVLY_WINDOW_PARMS;
+#endif // UNICODE
+#else
+typedef struct tagMCI_OVLY_WINDOW_PARMS {
+ DWORD dwCallback;
+ HWND hWnd;
+ WORD wReserved1;
+ UINT nCmdShow;
+ WORD wReserved2;
+ LPCSTR lpstrText;
+} MCI_OVLY_WINDOW_PARMS, FAR * LPMCI_OVLY_WINDOW_PARMS;
+#endif
+
+
+/* parameter block for MCI_PUT, MCI_UPDATE, and MCI_WHERE command messages */
+typedef struct tagMCI_OVLY_RECT_PARMS {
+ DWORD dwCallback;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else /* ifdef MCI_USE_OFFEXT */
+ RECT rc;
+#endif /* ifdef MCI_USE_OFFEXT */
+} MCI_OVLY_RECT_PARMS, *PMCI_OVLY_RECT_PARMS, FAR * LPMCI_OVLY_RECT_PARMS;
+
+
+/* parameter block for MCI_SAVE command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_OVLY_SAVE_PARMSA {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+ RECT rc;
+} MCI_OVLY_SAVE_PARMSA, *PMCI_OVLY_SAVE_PARMSA, * LPMCI_OVLY_SAVE_PARMSA;
+typedef struct tagMCI_OVLY_SAVE_PARMSW {
+ DWORD dwCallback;
+ LPCWSTR lpfilename;
+ RECT rc;
+} MCI_OVLY_SAVE_PARMSW, *PMCI_OVLY_SAVE_PARMSW, * LPMCI_OVLY_SAVE_PARMSW;
+#ifdef UNICODE
+typedef MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS;
+typedef PMCI_OVLY_SAVE_PARMSW PMCI_OVLY_SAVE_PARMS;
+typedef LPMCI_OVLY_SAVE_PARMSW LPMCI_OVLY_SAVE_PARMS;
+#else
+typedef MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS;
+typedef PMCI_OVLY_SAVE_PARMSA PMCI_OVLY_SAVE_PARMS;
+typedef LPMCI_OVLY_SAVE_PARMSA LPMCI_OVLY_SAVE_PARMS;
+#endif // UNICODE
+#else
+typedef struct tagMCI_OVLY_SAVE_PARMS {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+ RECT rc;
+} MCI_OVLY_SAVE_PARMS, FAR * LPMCI_OVLY_SAVE_PARMS;
+#endif
+
+
+/* parameter block for MCI_LOAD command message */
+#ifdef _WIN32
+
+typedef struct tagMCI_OVLY_LOAD_PARMSA {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+ RECT rc;
+} MCI_OVLY_LOAD_PARMSA, *PMCI_OVLY_LOAD_PARMSA, * LPMCI_OVLY_LOAD_PARMSA;
+typedef struct tagMCI_OVLY_LOAD_PARMSW {
+ DWORD dwCallback;
+ LPCWSTR lpfilename;
+ RECT rc;
+} MCI_OVLY_LOAD_PARMSW, *PMCI_OVLY_LOAD_PARMSW, * LPMCI_OVLY_LOAD_PARMSW;
+#ifdef UNICODE
+typedef MCI_OVLY_LOAD_PARMSW MCI_OVLY_LOAD_PARMS;
+typedef PMCI_OVLY_LOAD_PARMSW PMCI_OVLY_LOAD_PARMS;
+typedef LPMCI_OVLY_LOAD_PARMSW LPMCI_OVLY_LOAD_PARMS;
+#else
+typedef MCI_OVLY_LOAD_PARMSA MCI_OVLY_LOAD_PARMS;
+typedef PMCI_OVLY_LOAD_PARMSA PMCI_OVLY_LOAD_PARMS;
+typedef LPMCI_OVLY_LOAD_PARMSA LPMCI_OVLY_LOAD_PARMS;
+#endif // UNICODE
+#else
+typedef struct tagMCI_OVLY_LOAD_PARMS {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+ RECT rc;
+} MCI_OVLY_LOAD_PARMS, FAR * LPMCI_OVLY_LOAD_PARMS;
+#endif
+
+#endif /* ifndef MMNOMCI */
+
+/****************************************************************************
+
+ DISPLAY Driver extensions
+
+****************************************************************************/
+
+#ifndef NEWTRANSPARENT
+ #define NEWTRANSPARENT 3 /* use with SetBkMode() */
+
+ #define QUERYROPSUPPORT 40 /* use to determine ROP support */
+#endif /* ifndef NEWTRANSPARENT */
+
+/****************************************************************************
+
+ DIB Driver extensions
+
+****************************************************************************/
+
+#define SELECTDIB 41 /* DIB.DRV select dib escape */
+#define DIBINDEX(n) MAKELONG((n),0x10FF)
+
+
+/****************************************************************************
+
+ ScreenSaver support
+
+ The current application will receive a syscommand of SC_SCREENSAVE just
+ before the screen saver is invoked. If the app wishes to prevent a
+ screen save, return non-zero value, otherwise call DefWindowProc().
+
+****************************************************************************/
+
+#ifndef SC_SCREENSAVE
+
+ #define SC_SCREENSAVE 0xF140
+
+#endif /* ifndef SC_SCREENSAVE */
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#ifdef _WIN32
+#include <poppack.h>
+#else
+#ifndef RC_INVOKED
+#pragma pack()
+#endif
+#endif
+
+#endif /* _INC_MMSYSTEM */
diff --git a/public/sdk/inc/moniker.h b/public/sdk/inc/moniker.h
new file mode 100644
index 000000000..e77c6adc7
--- /dev/null
+++ b/public/sdk/inc/moniker.h
@@ -0,0 +1,15 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: moniker.h
+//
+//----------------------------------------------------------------------------
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: your code should #include objbase.h instead of moniker.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/monikr.h b/public/sdk/inc/monikr.h
new file mode 100644
index 000000000..baa3381ac
--- /dev/null
+++ b/public/sdk/inc/monikr.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: monikr.h
+//
+// Contents: Replacement for monikr.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/msacm.h b/public/sdk/inc/msacm.h
new file mode 100644
index 000000000..56da0eeaf
--- /dev/null
+++ b/public/sdk/inc/msacm.h
@@ -0,0 +1,1963 @@
+//==========================================================================;
+//
+// msacm.h
+//
+// Copyright (c) 1992-1993 Microsoft Corporation. All Rights Reserved.
+//
+// Description:
+// Audio Compression Manager Public Header File
+//
+// History:
+//
+//==========================================================================;
+
+#ifndef _INC_ACM
+#define _INC_ACM /* #defined if msacm.h has been included */
+
+#if !defined(_INC_MMREG) || (_INC_MMREG < 142)
+#ifndef RC_INVOKED
+#error MMREG.H version 142 or greater to be included first
+#endif
+#endif
+
+#if defined(WIN32) && !defined(_WIN32)
+#ifndef RC_INVOKED
+#pragma message("MSACM.H: defining _WIN32 because application defined WIN32")
+#endif
+#define _WIN32
+#endif
+
+#if defined(UNICODE) && !defined(_UNICODE)
+#ifndef RC_INVOKED
+#pragma message("MSACM.H: defining _UNICODE because application defined UNICODE")
+#endif
+#define _UNICODE
+#endif
+
+#include "pshpack1.h" /* Assume byte packing throughout */
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+//
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#ifndef DRV_MAPPER_PREFERRED_INPUT_GET
+#define DRV_MAPPER_PREFERRED_INPUT_GET (DRV_USER + 0)
+#endif
+
+#ifndef DRV_MAPPER_PREFERRED_OUTPUT_GET
+#define DRV_MAPPER_PREFERRED_OUTPUT_GET (DRV_USER + 2)
+#endif
+
+
+#ifndef DRVM_MAPPER_STATUS
+#define DRVM_MAPPER_STATUS (0x2000)
+#endif
+
+#ifndef WIDM_MAPPER_STATUS
+#define WIDM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
+#define WAVEIN_MAPPER_STATUS_DEVICE 0
+#define WAVEIN_MAPPER_STATUS_MAPPED 1
+#define WAVEIN_MAPPER_STATUS_FORMAT 2
+#endif
+
+#ifndef WODM_MAPPER_STATUS
+#define WODM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
+#define WAVEOUT_MAPPER_STATUS_DEVICE 0
+#define WAVEOUT_MAPPER_STATUS_MAPPED 1
+#define WAVEOUT_MAPPER_STATUS_FORMAT 2
+#endif
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#ifdef _WIN32
+ #define ACMAPI WINAPI
+#else
+#ifdef _WINDLL
+ #define ACMAPI _far _pascal _loadds
+#else
+ #define ACMAPI _far _pascal
+#endif
+#endif
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM General API's and Defines
+//
+//
+//
+//
+//--------------------------------------------------------------------------;
+
+//
+// there are four types of 'handles' used by the ACM. the first three
+// are unique types that define specific objects:
+//
+// HACMDRIVERID: used to _identify_ an ACM driver. this identifier can be
+// used to _open_ the driver for querying details, etc about the driver.
+//
+// HACMDRIVER: used to manage a driver (codec, filter, etc). this handle
+// is much like a handle to other media drivers--you use it to send
+// messages to the converter, query for capabilities, etc.
+//
+// HACMSTREAM: used to manage a 'stream' (conversion channel) with the
+// ACM. you use a stream handle to convert data from one format/type
+// to another--much like dealing with a file handle.
+//
+//
+// the fourth handle type is a generic type used on ACM functions that
+// can accept two or more of the above handle types (for example the
+// acmMetrics and acmDriverID functions).
+//
+// HACMOBJ: used to identify ACM objects. this handle is used on functions
+// that can accept two or more ACM handle types.
+//
+DECLARE_HANDLE(HACMDRIVERID);
+typedef HACMDRIVERID *PHACMDRIVERID;
+typedef HACMDRIVERID FAR *LPHACMDRIVERID;
+
+DECLARE_HANDLE(HACMDRIVER);
+typedef HACMDRIVER *PHACMDRIVER;
+typedef HACMDRIVER FAR *LPHACMDRIVER;
+
+DECLARE_HANDLE(HACMSTREAM);
+typedef HACMSTREAM *PHACMSTREAM;
+typedef HACMSTREAM FAR *LPHACMSTREAM;
+
+DECLARE_HANDLE(HACMOBJ);
+typedef HACMOBJ *PHACMOBJ;
+typedef HACMOBJ FAR *LPHACMOBJ;
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// ACM Error Codes
+//
+// Note that these error codes are specific errors that apply to the ACM
+// directly--general errors are defined as MMSYSERR_*.
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#ifndef _MMRESULT_
+#define _MMRESULT_
+typedef UINT MMRESULT;
+#endif
+
+#define ACMERR_BASE (512)
+#define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
+#define ACMERR_BUSY (ACMERR_BASE + 1)
+#define ACMERR_UNPREPARED (ACMERR_BASE + 2)
+#define ACMERR_CANCELED (ACMERR_BASE + 3)
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmGetVersion()
+//
+// the ACM version is a 32 bit number that is broken into three parts as
+// follows:
+//
+// bits 24 - 31: 8 bit _major_ version number
+// bits 16 - 23: 8 bit _minor_ version number
+// bits 0 - 15: 16 bit build number
+//
+// this is then displayed as follows:
+//
+// bMajor = (BYTE)(dwVersion >> 24)
+// bMinor = (BYTE)(dwVersion >> 16) &
+// wBuild = LOWORD(dwVersion)
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+DWORD ACMAPI acmGetVersion
+(
+ void
+);
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmMetrics()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmMetrics
+(
+ HACMOBJ hao,
+ UINT uMetric,
+ LPVOID pMetric
+);
+
+#define ACM_METRIC_COUNT_DRIVERS 1
+#define ACM_METRIC_COUNT_CODECS 2
+#define ACM_METRIC_COUNT_CONVERTERS 3
+#define ACM_METRIC_COUNT_FILTERS 4
+#define ACM_METRIC_COUNT_DISABLED 5
+#define ACM_METRIC_COUNT_HARDWARE 6
+#define ACM_METRIC_COUNT_LOCAL_DRIVERS 20
+#define ACM_METRIC_COUNT_LOCAL_CODECS 21
+#define ACM_METRIC_COUNT_LOCAL_CONVERTERS 22
+#define ACM_METRIC_COUNT_LOCAL_FILTERS 23
+#define ACM_METRIC_COUNT_LOCAL_DISABLED 24
+#define ACM_METRIC_HARDWARE_WAVE_INPUT 30
+#define ACM_METRIC_HARDWARE_WAVE_OUTPUT 31
+#define ACM_METRIC_MAX_SIZE_FORMAT 50
+#define ACM_METRIC_MAX_SIZE_FILTER 51
+#define ACM_METRIC_DRIVER_SUPPORT 100
+#define ACM_METRIC_DRIVER_PRIORITY 101
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Drivers
+//
+//
+//
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverEnum()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+typedef BOOL (CALLBACK *ACMDRIVERENUMCB)
+(
+ HACMDRIVERID hadid,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmDriverEnum
+(
+ ACMDRIVERENUMCB fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+
+#define ACM_DRIVERENUMF_NOLOCAL 0x40000000L
+#define ACM_DRIVERENUMF_DISABLED 0x80000000L
+
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverID()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmDriverID
+(
+ HACMOBJ hao,
+ LPHACMDRIVERID phadid,
+ DWORD fdwDriverID
+);
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverAdd()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#ifdef _WIN32
+MMRESULT ACMAPI acmDriverAddA
+(
+ LPHACMDRIVERID phadid,
+ HINSTANCE hinstModule,
+ LPARAM lParam,
+ DWORD dwPriority,
+ DWORD fdwAdd
+);
+
+MMRESULT ACMAPI acmDriverAddW
+(
+ LPHACMDRIVERID phadid,
+ HINSTANCE hinstModule,
+ LPARAM lParam,
+ DWORD dwPriority,
+ DWORD fdwAdd
+);
+
+#ifdef _UNICODE
+#define acmDriverAdd acmDriverAddW
+#else
+#define acmDriverAdd acmDriverAddA
+#endif
+#else
+MMRESULT ACMAPI acmDriverAdd
+(
+ LPHACMDRIVERID phadid,
+ HINSTANCE hinstModule,
+ LPARAM lParam,
+ DWORD dwPriority,
+ DWORD fdwAdd
+);
+#endif
+
+#define ACM_DRIVERADDF_FUNCTION 0x00000003L // lParam is a procedure
+#define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L // lParam is notify hwnd
+#define ACM_DRIVERADDF_TYPEMASK 0x00000007L // driver type mask
+#define ACM_DRIVERADDF_LOCAL 0x00000000L // is local to current task
+#define ACM_DRIVERADDF_GLOBAL 0x00000008L // is global
+
+
+
+//
+// prototype for ACM driver procedures that are installed as _functions_
+// or _notifations_ instead of as a standalone installable driver.
+//
+typedef LRESULT (CALLBACK *ACMDRIVERPROC)(DWORD, HACMDRIVERID, UINT, LPARAM, LPARAM);
+typedef ACMDRIVERPROC FAR *LPACMDRIVERPROC;
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverRemove()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmDriverRemove
+(
+ HACMDRIVERID hadid,
+ DWORD fdwRemove
+);
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverOpen()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmDriverOpen
+(
+ LPHACMDRIVER phad,
+ HACMDRIVERID hadid,
+ DWORD fdwOpen
+);
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverClose()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmDriverClose
+(
+ HACMDRIVER had,
+ DWORD fdwClose
+);
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverMessage()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+LRESULT ACMAPI acmDriverMessage
+(
+ HACMDRIVER had,
+ UINT uMsg,
+ LPARAM lParam1,
+ LPARAM lParam2
+);
+
+
+//
+//
+//
+//
+#define ACMDM_USER (DRV_USER + 0x0000)
+#define ACMDM_RESERVED_LOW (DRV_USER + 0x2000)
+#define ACMDM_RESERVED_HIGH (DRV_USER + 0x2FFF)
+
+#define ACMDM_BASE ACMDM_RESERVED_LOW
+
+#define ACMDM_DRIVER_ABOUT (ACMDM_BASE + 11)
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverPriority
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmDriverPriority
+(
+ HACMDRIVERID hadid,
+ DWORD dwPriority,
+ DWORD fdwPriority
+);
+
+
+#define ACM_DRIVERPRIORITYF_ENABLE 0x00000001L
+#define ACM_DRIVERPRIORITYF_DISABLE 0x00000002L
+#define ACM_DRIVERPRIORITYF_ABLEMASK 0x00000003L
+#define ACM_DRIVERPRIORITYF_BEGIN 0x00010000L
+#define ACM_DRIVERPRIORITYF_END 0x00020000L
+#define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
+
+
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverDetails()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+//
+// ACMDRIVERDETAILS
+//
+// the ACMDRIVERDETAILS structure is used to get various capabilities from
+// an ACM driver (codec, converter, filter).
+//
+#define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
+#define ACMDRIVERDETAILS_LONGNAME_CHARS 128
+#define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
+#define ACMDRIVERDETAILS_LICENSING_CHARS 128
+#define ACMDRIVERDETAILS_FEATURES_CHARS 512
+
+#ifdef _WIN32
+typedef struct tACMDRIVERDETAILSA
+{
+ DWORD cbStruct; // number of valid bytes in structure
+
+ FOURCC fccType; // compressor type 'audc'
+ FOURCC fccComp; // sub-type (not used; reserved)
+
+ WORD wMid; // manufacturer id
+ WORD wPid; // product id
+
+ DWORD vdwACM; // version of the ACM *compiled* for
+ DWORD vdwDriver; // version of the driver
+
+ DWORD fdwSupport; // misc. support flags
+ DWORD cFormatTags; // total unique format tags supported
+ DWORD cFilterTags; // total unique filter tags supported
+
+ HICON hicon; // handle to custom icon
+
+ char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+ char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+ char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+ char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+ char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+
+} ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, FAR *LPACMDRIVERDETAILSA;
+
+typedef struct tACMDRIVERDETAILSW
+{
+ DWORD cbStruct; // number of valid bytes in structure
+
+ FOURCC fccType; // compressor type 'audc'
+ FOURCC fccComp; // sub-type (not used; reserved)
+
+ WORD wMid; // manufacturer id
+ WORD wPid; // product id
+
+ DWORD vdwACM; // version of the ACM *compiled* for
+ DWORD vdwDriver; // version of the driver
+
+ DWORD fdwSupport; // misc. support flags
+ DWORD cFormatTags; // total unique format tags supported
+ DWORD cFilterTags; // total unique filter tags supported
+
+ HICON hicon; // handle to custom icon
+
+ WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+ WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+ WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+ WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+ WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+
+} ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, FAR *LPACMDRIVERDETAILSW;
+
+#ifdef _UNICODE
+#define ACMDRIVERDETAILS ACMDRIVERDETAILSW
+#define PACMDRIVERDETAILS PACMDRIVERDETAILSW
+#define LPACMDRIVERDETAILS LPACMDRIVERDETAILSW
+#else
+#define ACMDRIVERDETAILS ACMDRIVERDETAILSA
+#define PACMDRIVERDETAILS PACMDRIVERDETAILSA
+#define LPACMDRIVERDETAILS LPACMDRIVERDETAILSA
+#endif
+#else
+typedef struct tACMDRIVERDETAILS
+{
+ DWORD cbStruct; // number of valid bytes in structure
+
+ FOURCC fccType; // compressor type 'audc'
+ FOURCC fccComp; // sub-type (not used; reserved)
+
+ WORD wMid; // manufacturer id
+ WORD wPid; // product id
+
+ DWORD vdwACM; // version of the ACM *compiled* for
+ DWORD vdwDriver; // version of the driver
+
+ DWORD fdwSupport; // misc. support flags
+ DWORD cFormatTags; // total unique format tags supported
+ DWORD cFilterTags; // total unique filter tags supported
+
+ HICON hicon; // handle to custom icon
+
+ char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
+ char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
+ char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
+ char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
+ char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
+
+} ACMDRIVERDETAILS, *PACMDRIVERDETAILS, FAR *LPACMDRIVERDETAILS;
+#endif
+
+//
+// ACMDRIVERDETAILS.fccType
+//
+// ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC: the FOURCC used in the fccType
+// field of the ACMDRIVERDETAILS structure to specify that this is an ACM
+// codec designed for audio.
+//
+//
+// ACMDRIVERDETAILS.fccComp
+//
+// ACMDRIVERDETAILS_FCCCOMP_UNDEFINED: the FOURCC used in the fccComp
+// field of the ACMDRIVERDETAILS structure. this is currently an unused
+// field.
+//
+#define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
+#define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED mmioFOURCC('\0', '\0', '\0', '\0')
+
+
+//
+// the following flags are used to specify the type of conversion(s) that
+// the converter/codec/filter supports. these are placed in the fdwSupport
+// field of the ACMDRIVERDETAILS structure. note that a converter can
+// support one or more of these flags in any combination.
+//
+// ACMDRIVERDETAILS_SUPPORTF_CODEC: this flag is set if the driver supports
+// conversions from one format tag to another format tag. for example, if a
+// converter compresses WAVE_FORMAT_PCM to WAVE_FORMAT_ADPCM, then this bit
+// should be set.
+//
+// ACMDRIVERDETAILS_SUPPORTF_CONVERTER: this flags is set if the driver
+// supports conversions on the same format tag. as an example, the PCM
+// converter that is built into the ACM sets this bit (and only this bit)
+// because it converts only PCM formats (bits, sample rate).
+//
+// ACMDRIVERDETAILS_SUPPORTF_FILTER: this flag is set if the driver supports
+// transformations on a single format. for example, a converter that changed
+// the 'volume' of PCM data would set this bit. 'echo' and 'reverb' are
+// also filter types.
+//
+// ACMDRIVERDETAILS_SUPPORTF_HARDWARE: this flag is set if the driver supports
+// hardware input and/or output through a waveform device.
+//
+// ACMDRIVERDETAILS_SUPPORTF_ASYNC: this flag is set if the driver supports
+// async conversions.
+//
+//
+// ACMDRIVERDETAILS_SUPPORTF_LOCAL: this flag is set _by the ACM_ if a
+// driver has been installed local to the current task. this flag is also
+// set in the fdwSupport argument to the enumeration callback function
+// for drivers.
+//
+// ACMDRIVERDETAILS_SUPPORTF_DISABLED: this flag is set _by the ACM_ if a
+// driver has been disabled. this flag is also passed set in the fdwSupport
+// argument to the enumeration callback function for drivers.
+//
+#define ACMDRIVERDETAILS_SUPPORTF_CODEC 0x00000001L
+#define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
+#define ACMDRIVERDETAILS_SUPPORTF_FILTER 0x00000004L
+#define ACMDRIVERDETAILS_SUPPORTF_HARDWARE 0x00000008L
+#define ACMDRIVERDETAILS_SUPPORTF_ASYNC 0x00000010L
+#define ACMDRIVERDETAILS_SUPPORTF_LOCAL 0x40000000L
+#define ACMDRIVERDETAILS_SUPPORTF_DISABLED 0x80000000L
+
+
+#ifdef _WIN32
+MMRESULT ACMAPI acmDriverDetailsA
+(
+ HACMDRIVERID hadid,
+ LPACMDRIVERDETAILSA padd,
+ DWORD fdwDetails
+);
+
+MMRESULT ACMAPI acmDriverDetailsW
+(
+ HACMDRIVERID hadid,
+ LPACMDRIVERDETAILSW padd,
+ DWORD fdwDetails
+);
+
+#ifdef _UNICODE
+#define acmDriverDetails acmDriverDetailsW
+#else
+#define acmDriverDetails acmDriverDetailsA
+#endif
+#else
+MMRESULT ACMAPI acmDriverDetails
+(
+ HACMDRIVERID hadid,
+ LPACMDRIVERDETAILS padd,
+ DWORD fdwDetails
+);
+#endif
+
+
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Format Tags
+//
+//
+//
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatTagDetails()
+//
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
+
+#ifdef _WIN32
+typedef struct tACMFORMATTAGDETAILSA
+{
+ DWORD cbStruct;
+ DWORD dwFormatTagIndex;
+ DWORD dwFormatTag;
+ DWORD cbFormatSize;
+ DWORD fdwSupport;
+ DWORD cStandardFormats;
+ char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+
+} ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA, FAR *LPACMFORMATTAGDETAILSA;
+
+typedef struct tACMFORMATTAGDETAILSW
+{
+ DWORD cbStruct;
+ DWORD dwFormatTagIndex;
+ DWORD dwFormatTag;
+ DWORD cbFormatSize;
+ DWORD fdwSupport;
+ DWORD cStandardFormats;
+ WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+
+} ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW, FAR *LPACMFORMATTAGDETAILSW;
+
+#ifdef _UNICODE
+#define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSW
+#define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSW
+#define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSW
+#else
+#define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSA
+#define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSA
+#define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSA
+#endif
+#else
+typedef struct tACMFORMATTAGDETAILS
+{
+ DWORD cbStruct;
+ DWORD dwFormatTagIndex;
+ DWORD dwFormatTag;
+ DWORD cbFormatSize;
+ DWORD fdwSupport;
+ DWORD cStandardFormats;
+ char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+
+} ACMFORMATTAGDETAILS, *PACMFORMATTAGDETAILS, FAR *LPACMFORMATTAGDETAILS;
+#endif
+
+#ifdef _WIN32
+MMRESULT ACMAPI acmFormatTagDetailsA
+(
+ HACMDRIVER had,
+ LPACMFORMATTAGDETAILSA paftd,
+ DWORD fdwDetails
+);
+
+MMRESULT ACMAPI acmFormatTagDetailsW
+(
+ HACMDRIVER had,
+ LPACMFORMATTAGDETAILSW paftd,
+ DWORD fdwDetails
+);
+
+#ifdef _UNICODE
+#define acmFormatTagDetails acmFormatTagDetailsW
+#else
+#define acmFormatTagDetails acmFormatTagDetailsA
+#endif
+#else
+MMRESULT ACMAPI acmFormatTagDetails
+(
+ HACMDRIVER had,
+ LPACMFORMATTAGDETAILS paftd,
+ DWORD fdwDetails
+);
+#endif
+
+#define ACM_FORMATTAGDETAILSF_INDEX 0x00000000L
+#define ACM_FORMATTAGDETAILSF_FORMATTAG 0x00000001L
+#define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
+#define ACM_FORMATTAGDETAILSF_QUERYMASK 0x0000000FL
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatTagEnum()
+//
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#ifdef _WIN32
+typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)
+(
+ HACMDRIVERID hadid,
+ LPACMFORMATTAGDETAILSA paftd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFormatTagEnumA
+(
+ HACMDRIVER had,
+ LPACMFORMATTAGDETAILSA paftd,
+ ACMFORMATTAGENUMCBA fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)
+(
+ HACMDRIVERID hadid,
+ LPACMFORMATTAGDETAILSW paftd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFormatTagEnumW
+(
+ HACMDRIVER had,
+ LPACMFORMATTAGDETAILSW paftd,
+ ACMFORMATTAGENUMCBW fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+
+#ifdef _UNICODE
+#define ACMFORMATTAGENUMCB ACMFORMATTAGENUMCBW
+#define acmFormatTagEnum acmFormatTagEnumW
+#else
+#define ACMFORMATTAGENUMCB ACMFORMATTAGENUMCBA
+#define acmFormatTagEnum acmFormatTagEnumA
+#endif
+#else
+typedef BOOL (CALLBACK *ACMFORMATTAGENUMCB)
+(
+ HACMDRIVERID hadid,
+ LPACMFORMATTAGDETAILS paftd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFormatTagEnum
+(
+ HACMDRIVER had,
+ LPACMFORMATTAGDETAILS paftd,
+ ACMFORMATTAGENUMCB fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+#endif
+
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Formats
+//
+//
+//
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatDetails()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#define ACMFORMATDETAILS_FORMAT_CHARS 128
+
+#ifdef _WIN32
+typedef struct tACMFORMATDETAILSA
+{
+ DWORD cbStruct;
+ DWORD dwFormatIndex;
+ DWORD dwFormatTag;
+ DWORD fdwSupport;
+ LPWAVEFORMATEX pwfx;
+ DWORD cbwfx;
+ char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+
+} ACMFORMATDETAILSA, *PACMFORMATDETAILSA, FAR *LPACMFORMATDETAILSA;
+
+typedef struct tACMFORMATDETAILSW
+{
+ DWORD cbStruct;
+ DWORD dwFormatIndex;
+ DWORD dwFormatTag;
+ DWORD fdwSupport;
+ LPWAVEFORMATEX pwfx;
+ DWORD cbwfx;
+ WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+
+} ACMFORMATDETAILSW, *PACMFORMATDETAILSW, FAR *LPACMFORMATDETAILSW;
+
+#ifdef _UNICODE
+#define ACMFORMATDETAILS ACMFORMATDETAILSW
+#define PACMFORMATDETAILS PACMFORMATDETAILSW
+#define LPACMFORMATDETAILS LPACMFORMATDETAILSW
+#else
+#define ACMFORMATDETAILS ACMFORMATDETAILSA
+#define PACMFORMATDETAILS PACMFORMATDETAILSA
+#define LPACMFORMATDETAILS LPACMFORMATDETAILSA
+#endif
+#else
+typedef struct tACMFORMATDETAILS
+{
+ DWORD cbStruct;
+ DWORD dwFormatIndex;
+ DWORD dwFormatTag;
+ DWORD fdwSupport;
+ LPWAVEFORMATEX pwfx;
+ DWORD cbwfx;
+ char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+
+} ACMFORMATDETAILS, *PACMFORMATDETAILS, FAR *LPACMFORMATDETAILS;
+#endif
+
+
+#ifdef _WIN32
+MMRESULT ACMAPI acmFormatDetailsA
+(
+ HACMDRIVER had,
+ LPACMFORMATDETAILSA pafd,
+ DWORD fdwDetails
+);
+
+MMRESULT ACMAPI acmFormatDetailsW
+(
+ HACMDRIVER had,
+ LPACMFORMATDETAILSW pafd,
+ DWORD fdwDetails
+);
+
+#ifdef _UNICODE
+#define acmFormatDetails acmFormatDetailsW
+#else
+#define acmFormatDetails acmFormatDetailsA
+#endif
+#else
+MMRESULT ACMAPI acmFormatDetails
+(
+ HACMDRIVER had,
+ LPACMFORMATDETAILS pafd,
+ DWORD fdwDetails
+);
+#endif
+
+#define ACM_FORMATDETAILSF_INDEX 0x00000000L
+#define ACM_FORMATDETAILSF_FORMAT 0x00000001L
+#define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatEnum()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#ifdef _WIN32
+typedef BOOL (CALLBACK *ACMFORMATENUMCBA)
+(
+ HACMDRIVERID hadid,
+ LPACMFORMATDETAILSA pafd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFormatEnumA
+(
+ HACMDRIVER had,
+ LPACMFORMATDETAILSA pafd,
+ ACMFORMATENUMCBA fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+
+typedef BOOL (CALLBACK *ACMFORMATENUMCBW)
+(
+ HACMDRIVERID hadid,
+ LPACMFORMATDETAILSW pafd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFormatEnumW
+(
+ HACMDRIVER had,
+ LPACMFORMATDETAILSW pafd,
+ ACMFORMATENUMCBW fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+
+#ifdef _UNICODE
+#define ACMFORMATENUMCB ACMFORMATENUMCBW
+#define acmFormatEnum acmFormatEnumW
+#else
+#define ACMFORMATENUMCB ACMFORMATENUMCBA
+#define acmFormatEnum acmFormatEnumA
+#endif
+#else
+typedef BOOL (CALLBACK *ACMFORMATENUMCB)
+(
+ HACMDRIVERID hadid,
+ LPACMFORMATDETAILS pafd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFormatEnum
+(
+ HACMDRIVER had,
+ LPACMFORMATDETAILS pafd,
+ ACMFORMATENUMCB fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+#endif
+
+#define ACM_FORMATENUMF_WFORMATTAG 0x00010000L
+#define ACM_FORMATENUMF_NCHANNELS 0x00020000L
+#define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
+#define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
+#define ACM_FORMATENUMF_CONVERT 0x00100000L
+#define ACM_FORMATENUMF_SUGGEST 0x00200000L
+#define ACM_FORMATENUMF_HARDWARE 0x00400000L
+#define ACM_FORMATENUMF_INPUT 0x00800000L
+#define ACM_FORMATENUMF_OUTPUT 0x01000000L
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatSuggest()
+//
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmFormatSuggest
+(
+ HACMDRIVER had,
+ LPWAVEFORMATEX pwfxSrc,
+ LPWAVEFORMATEX pwfxDst,
+ DWORD cbwfxDst,
+ DWORD fdwSuggest
+);
+
+#define ACM_FORMATSUGGESTF_WFORMATTAG 0x00010000L
+#define ACM_FORMATSUGGESTF_NCHANNELS 0x00020000L
+#define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
+#define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
+
+#define ACM_FORMATSUGGESTF_TYPEMASK 0x00FF0000L
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatChoose()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#ifdef _WIN32
+#define ACMHELPMSGSTRINGA "acmchoose_help"
+#define ACMHELPMSGSTRINGW L"acmchoose_help"
+#ifdef _UNICODE
+#define ACMHELPMSGSTRING ACMHELPMSGSTRINGW
+#else
+#define ACMHELPMSGSTRING ACMHELPMSGSTRINGA
+#endif
+#else
+#define ACMHELPMSGSTRING "acmchoose_help"
+#endif
+
+//
+// MM_ACM_FORMATCHOOSE is sent to hook callbacks by the Format Chooser
+// Dialog...
+//
+#define MM_ACM_FORMATCHOOSE (0x8000)
+
+#define FORMATCHOOSE_MESSAGE 0
+#define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
+#define FORMATCHOOSE_FORMAT_VERIFY (FORMATCHOOSE_MESSAGE+1)
+#define FORMATCHOOSE_CUSTOM_VERIFY (FORMATCHOOSE_MESSAGE+2)
+
+
+#ifdef _WIN32
+typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)
+(
+ HWND hwnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam
+);
+
+typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)
+(
+ HWND hwnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam
+);
+
+#ifdef _UNICODE
+#define ACMFORMATCHOOSEHOOKPROC ACMFORMATCHOOSEHOOKPROCW
+#else
+#define ACMFORMATCHOOSEHOOKPROC ACMFORMATCHOOSEHOOKPROCA
+#endif
+#else
+typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROC)
+(
+ HWND hwnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam
+);
+#endif
+
+//
+//
+//
+//
+#ifdef _WIN32
+typedef struct tACMFORMATCHOOSEA
+{
+ DWORD cbStruct; // sizeof(ACMFORMATCHOOSE)
+ DWORD fdwStyle; // chooser style flags
+
+ HWND hwndOwner; // caller's window handle
+
+ LPWAVEFORMATEX pwfx; // ptr to wfx buf to receive choice
+ DWORD cbwfx; // size of mem buf for pwfx
+ LPCSTR pszTitle; // dialog box title bar
+
+ char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+ char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+
+ LPSTR pszName; // custom name selection
+ DWORD cchName; // size in chars of mem buf for pszName
+
+ DWORD fdwEnum; // format enumeration restrictions
+ LPWAVEFORMATEX pwfxEnum; // format describing restrictions
+
+ //
+ // the following members are used for custom templates only--which
+ // are enabled by specifying ACMFORMATCHOOSE_STYLEF_ENABLEHOOK in the
+ // fdwStyle member.
+ //
+ // these members are IGNORED if ACMFORMATCHOOSE_STYLEF_ENABLEHOOK is
+ // not specified.
+ //
+ HINSTANCE hInstance; // .EXE containing cust. dlg. template
+ LPCSTR pszTemplateName; // custom template name
+ LPARAM lCustData; // data passed to hook fn.
+ ACMFORMATCHOOSEHOOKPROCA pfnHook; // ptr to hook function
+
+} ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, FAR *LPACMFORMATCHOOSEA;
+
+typedef struct tACMFORMATCHOOSEW
+{
+ DWORD cbStruct; // sizeof(ACMFORMATCHOOSE)
+ DWORD fdwStyle; // chooser style flags
+
+ HWND hwndOwner; // caller's window handle
+
+ LPWAVEFORMATEX pwfx; // ptr to wfx buf to receive choice
+ DWORD cbwfx; // size of mem buf for pwfx
+ LPCWSTR pszTitle; // dialog box title bar
+
+ WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+ WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+
+ LPWSTR pszName; // custom name selection
+ DWORD cchName; // size in chars of mem buf for pszName
+
+ DWORD fdwEnum; // format enumeration restrictions
+ LPWAVEFORMATEX pwfxEnum; // format describing restrictions
+
+ //
+ // the following members are used for custom templates only--which
+ // are enabled by specifying ACMFORMATCHOOSE_STYLEF_ENABLEHOOK in the
+ // fdwStyle member.
+ //
+ // these members are IGNORED if ACMFORMATCHOOSE_STYLEF_ENABLEHOOK is
+ // not specified.
+ //
+ HINSTANCE hInstance; // .EXE containing cust. dlg. template
+ LPCWSTR pszTemplateName; // custom template name
+ LPARAM lCustData; // data passed to hook fn.
+ ACMFORMATCHOOSEHOOKPROCW pfnHook; // ptr to hook function
+
+} ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW, FAR *LPACMFORMATCHOOSEW;
+
+#ifdef _UNICODE
+#define ACMFORMATCHOOSE ACMFORMATCHOOSEW
+#define PACMFORMATCHOOSE PACMFORMATCHOOSEW
+#define LPACMFORMATCHOOSE LPACMFORMATCHOOSEW
+#else
+#define ACMFORMATCHOOSE ACMFORMATCHOOSEA
+#define PACMFORMATCHOOSE PACMFORMATCHOOSEA
+#define LPACMFORMATCHOOSE LPACMFORMATCHOOSEA
+#endif
+#else
+typedef struct tACMFORMATCHOOSE
+{
+ DWORD cbStruct; // sizeof(ACMFORMATCHOOSE)
+ DWORD fdwStyle; // chooser style flags
+
+ HWND hwndOwner; // caller's window handle
+
+ LPWAVEFORMATEX pwfx; // ptr to wfx buf to receive choice
+ DWORD cbwfx; // size of mem buf for pwfx
+ LPCSTR pszTitle; // dialog box title bar
+
+ char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
+ char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
+
+ LPSTR pszName; // custom name selection
+ DWORD cchName; // size in chars of mem buf for pszName
+
+ DWORD fdwEnum; // format enumeration restrictions
+ LPWAVEFORMATEX pwfxEnum; // format describing restrictions
+
+ //
+ // the following members are used for custom templates only--which
+ // are enabled by specifying ACMFORMATCHOOSE_STYLEF_ENABLEHOOK in the
+ // fdwStyle member.
+ //
+ // these members are IGNORED if ACMFORMATCHOOSE_STYLEF_ENABLEHOOK is
+ // not specified.
+ //
+ HINSTANCE hInstance; // .EXE containing cust. dlg. template
+ LPCSTR pszTemplateName; // custom template name
+ LPARAM lCustData; // data passed to hook fn.
+ ACMFORMATCHOOSEHOOKPROC pfnHook; // ptr to hook function
+
+} ACMFORMATCHOOSE, *PACMFORMATCHOOSE, FAR *LPACMFORMATCHOOSE;
+#endif
+
+//
+// ACMFORMATCHOOSE.fdwStyle
+//
+//
+//
+#define ACMFORMATCHOOSE_STYLEF_SHOWHELP 0x00000004L
+#define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
+#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
+#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
+#define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT 0x00000040L
+
+#ifdef _WIN32
+MMRESULT ACMAPI acmFormatChooseA
+(
+ LPACMFORMATCHOOSEA pafmtc
+);
+
+MMRESULT ACMAPI acmFormatChooseW
+(
+ LPACMFORMATCHOOSEW pafmtc
+);
+
+#ifdef _UNICODE
+#define acmFormatChoose acmFormatChooseW
+#else
+#define acmFormatChoose acmFormatChooseA
+#endif
+#else
+MMRESULT ACMAPI acmFormatChoose
+(
+ LPACMFORMATCHOOSE pafmtc
+);
+#endif
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Filter Tags
+//
+//
+//
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFilterTagDetails()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
+
+#ifdef _WIN32
+typedef struct tACMFILTERTAGDETAILSA
+{
+ DWORD cbStruct;
+ DWORD dwFilterTagIndex;
+ DWORD dwFilterTag;
+ DWORD cbFilterSize;
+ DWORD fdwSupport;
+ DWORD cStandardFilters;
+ char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+
+} ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA, FAR *LPACMFILTERTAGDETAILSA;
+
+typedef struct tACMFILTERTAGDETAILSW
+{
+ DWORD cbStruct;
+ DWORD dwFilterTagIndex;
+ DWORD dwFilterTag;
+ DWORD cbFilterSize;
+ DWORD fdwSupport;
+ DWORD cStandardFilters;
+ WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+
+} ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW, FAR *LPACMFILTERTAGDETAILSW;
+
+#ifdef _UNICODE
+#define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSW
+#define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSW
+#define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSW
+#else
+#define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSA
+#define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSA
+#define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSA
+#endif
+#else
+typedef struct tACMFILTERTAGDETAILS
+{
+ DWORD cbStruct;
+ DWORD dwFilterTagIndex;
+ DWORD dwFilterTag;
+ DWORD cbFilterSize;
+ DWORD fdwSupport;
+ DWORD cStandardFilters;
+ char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+
+} ACMFILTERTAGDETAILS, *PACMFILTERTAGDETAILS, FAR *LPACMFILTERTAGDETAILS;
+#endif
+
+#ifdef _WIN32
+MMRESULT ACMAPI acmFilterTagDetailsA
+(
+ HACMDRIVER had,
+ LPACMFILTERTAGDETAILSA paftd,
+ DWORD fdwDetails
+);
+
+MMRESULT ACMAPI acmFilterTagDetailsW
+(
+ HACMDRIVER had,
+ LPACMFILTERTAGDETAILSW paftd,
+ DWORD fdwDetails
+);
+
+#ifdef _UNICODE
+#define acmFilterTagDetails acmFilterTagDetailsW
+#else
+#define acmFilterTagDetails acmFilterTagDetailsA
+#endif
+#else
+MMRESULT ACMAPI acmFilterTagDetails
+(
+ HACMDRIVER had,
+ LPACMFILTERTAGDETAILS paftd,
+ DWORD fdwDetails
+);
+#endif
+
+#define ACM_FILTERTAGDETAILSF_INDEX 0x00000000L
+#define ACM_FILTERTAGDETAILSF_FILTERTAG 0x00000001L
+#define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
+#define ACM_FILTERTAGDETAILSF_QUERYMASK 0x0000000FL
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFilterTagEnum()
+//
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#ifdef _WIN32
+typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)
+(
+ HACMDRIVERID hadid,
+ LPACMFILTERTAGDETAILSA paftd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFilterTagEnumA
+(
+ HACMDRIVER had,
+ LPACMFILTERTAGDETAILSA paftd,
+ ACMFILTERTAGENUMCBA fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+
+typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)
+(
+ HACMDRIVERID hadid,
+ LPACMFILTERTAGDETAILSW paftd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFilterTagEnumW
+(
+ HACMDRIVER had,
+ LPACMFILTERTAGDETAILSW paftd,
+ ACMFILTERTAGENUMCBW fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+
+#ifdef _UNICODE
+#define ACMFILTERTAGENUMCB ACMFILTERTAGENUMCBW
+#define acmFilterTagEnum acmFilterTagEnumW
+#else
+#define ACMFILTERTAGENUMCB ACMFILTERTAGENUMCBA
+#define acmFilterTagEnum acmFilterTagEnumA
+#endif
+#else
+typedef BOOL (CALLBACK *ACMFILTERTAGENUMCB)
+(
+ HACMDRIVERID hadid,
+ LPACMFILTERTAGDETAILS paftd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFilterTagEnum
+(
+ HACMDRIVER had,
+ LPACMFILTERTAGDETAILS paftd,
+ ACMFILTERTAGENUMCB fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+#endif
+
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Filters
+//
+//
+//
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFilterDetails()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#define ACMFILTERDETAILS_FILTER_CHARS 128
+
+#ifdef _WIN32
+typedef struct tACMFILTERDETAILSA
+{
+ DWORD cbStruct;
+ DWORD dwFilterIndex;
+ DWORD dwFilterTag;
+ DWORD fdwSupport;
+ LPWAVEFILTER pwfltr;
+ DWORD cbwfltr;
+ char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+
+} ACMFILTERDETAILSA, *PACMFILTERDETAILSA, FAR *LPACMFILTERDETAILSA;
+
+typedef struct tACMFILTERDETAILSW
+{
+ DWORD cbStruct;
+ DWORD dwFilterIndex;
+ DWORD dwFilterTag;
+ DWORD fdwSupport;
+ LPWAVEFILTER pwfltr;
+ DWORD cbwfltr;
+ WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+
+} ACMFILTERDETAILSW, *PACMFILTERDETAILSW, FAR *LPACMFILTERDETAILSW;
+
+#ifdef _UNICODE
+#define ACMFILTERDETAILS ACMFILTERDETAILSW
+#define PACMFILTERDETAILS PACMFILTERDETAILSW
+#define LPACMFILTERDETAILS LPACMFILTERDETAILSW
+#else
+#define ACMFILTERDETAILS ACMFILTERDETAILSA
+#define PACMFILTERDETAILS PACMFILTERDETAILSA
+#define LPACMFILTERDETAILS LPACMFILTERDETAILSA
+#endif
+#else
+typedef struct tACMFILTERDETAILS
+{
+ DWORD cbStruct;
+ DWORD dwFilterIndex;
+ DWORD dwFilterTag;
+ DWORD fdwSupport;
+ LPWAVEFILTER pwfltr;
+ DWORD cbwfltr;
+ char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+
+} ACMFILTERDETAILS, *PACMFILTERDETAILS, FAR *LPACMFILTERDETAILS;
+#endif
+
+#ifdef _WIN32
+MMRESULT ACMAPI acmFilterDetailsA
+(
+ HACMDRIVER had,
+ LPACMFILTERDETAILSA pafd,
+ DWORD fdwDetails
+);
+
+MMRESULT ACMAPI acmFilterDetailsW
+(
+ HACMDRIVER had,
+ LPACMFILTERDETAILSW pafd,
+ DWORD fdwDetails
+);
+#ifdef _UNICODE
+#define acmFilterDetails acmFilterDetailsW
+#else
+#define acmFilterDetails acmFilterDetailsA
+#endif
+#else
+MMRESULT ACMAPI acmFilterDetails
+(
+ HACMDRIVER had,
+ LPACMFILTERDETAILS pafd,
+ DWORD fdwDetails
+);
+#endif
+
+#define ACM_FILTERDETAILSF_INDEX 0x00000000L
+#define ACM_FILTERDETAILSF_FILTER 0x00000001L
+#define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFilterEnum()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#ifdef _WIN32
+typedef BOOL (CALLBACK *ACMFILTERENUMCBA)
+(
+ HACMDRIVERID hadid,
+ LPACMFILTERDETAILSA pafd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFilterEnumA
+(
+ HACMDRIVER had,
+ LPACMFILTERDETAILSA pafd,
+ ACMFILTERENUMCBA fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+
+typedef BOOL (CALLBACK *ACMFILTERENUMCBW)
+(
+ HACMDRIVERID hadid,
+ LPACMFILTERDETAILSW pafd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFilterEnumW
+(
+ HACMDRIVER had,
+ LPACMFILTERDETAILSW pafd,
+ ACMFILTERENUMCBW fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+
+#ifdef _UNICODE
+#define ACMFILTERENUMCB ACMFILTERENUMCBW
+#define acmFilterEnum acmFilterEnumW
+#else
+#define ACMFILTERENUMCB ACMFILTERENUMCBA
+#define acmFilterEnum acmFilterEnumA
+#endif
+#else
+typedef BOOL (CALLBACK *ACMFILTERENUMCB)
+(
+ HACMDRIVERID hadid,
+ LPACMFILTERDETAILS pafd,
+ DWORD dwInstance,
+ DWORD fdwSupport
+);
+
+MMRESULT ACMAPI acmFilterEnum
+(
+ HACMDRIVER had,
+ LPACMFILTERDETAILS pafd,
+ ACMFILTERENUMCB fnCallback,
+ DWORD dwInstance,
+ DWORD fdwEnum
+);
+#endif
+
+#define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
+
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFilterChoose()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+//
+// MM_ACM_FILTERCHOOSE is sent to hook callbacks by the Filter Chooser
+// Dialog...
+//
+#define MM_ACM_FILTERCHOOSE (0x8000)
+
+#define FILTERCHOOSE_MESSAGE 0
+#define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
+#define FILTERCHOOSE_FILTER_VERIFY (FILTERCHOOSE_MESSAGE+1)
+#define FILTERCHOOSE_CUSTOM_VERIFY (FILTERCHOOSE_MESSAGE+2)
+
+
+#ifdef _WIN32
+typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)
+(
+ HWND hwnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam
+);
+
+typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)
+(
+ HWND hwnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam
+);
+
+#ifdef _UNICODE
+#define ACMFILTERCHOOSEHOOKPROC ACMFILTERCHOOSEHOOKPROCW
+#else
+#define ACMFILTERCHOOSEHOOKPROC ACMFILTERCHOOSEHOOKPROCA
+#endif
+#else
+typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROC)
+(
+ HWND hwnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam
+);
+#endif
+
+//
+// ACMFILTERCHOOSE
+//
+//
+#ifdef _WIN32
+typedef struct tACMFILTERCHOOSEA
+{
+ DWORD cbStruct; // sizeof(ACMFILTERCHOOSE)
+ DWORD fdwStyle; // chooser style flags
+
+ HWND hwndOwner; // caller's window handle
+
+ LPWAVEFILTER pwfltr; // ptr to wfltr buf to receive choice
+ DWORD cbwfltr; // size of mem buf for pwfltr
+
+ LPCSTR pszTitle;
+
+ char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+ char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+ LPSTR pszName; // custom name selection
+ DWORD cchName; // size in chars of mem buf for pszName
+
+ DWORD fdwEnum; // filter enumeration restrictions
+ LPWAVEFILTER pwfltrEnum; // filter describing restrictions
+
+ //
+ // the following members are used for custom templates only--which
+ // are enabled by specifying ACMFILTERCHOOSE_STYLEF_ENABLEHOOK in the
+ // fdwStyle member.
+ //
+ // these members are IGNORED if ACMFILTERCHOOSE_STYLEF_ENABLEHOOK is not
+ // specified.
+ //
+ HINSTANCE hInstance; // .EXE containing cust. dlg. template
+ LPCSTR pszTemplateName; // custom template name
+ LPARAM lCustData; // data passed to hook fn.
+ ACMFILTERCHOOSEHOOKPROCA pfnHook; // ptr to hook function
+
+} ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA, FAR *LPACMFILTERCHOOSEA;
+
+typedef struct tACMFILTERCHOOSEW
+{
+ DWORD cbStruct; // sizeof(ACMFILTERCHOOSE)
+ DWORD fdwStyle; // chooser style flags
+
+ HWND hwndOwner; // caller's window handle
+
+ LPWAVEFILTER pwfltr; // ptr to wfltr buf to receive choice
+ DWORD cbwfltr; // size of mem buf for pwfltr
+
+ LPCWSTR pszTitle;
+
+ WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+ WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+ LPWSTR pszName; // custom name selection
+ DWORD cchName; // size in chars of mem buf for pszName
+
+ DWORD fdwEnum; // filter enumeration restrictions
+ LPWAVEFILTER pwfltrEnum; // filter describing restrictions
+
+ //
+ // the following members are used for custom templates only--which
+ // are enabled by specifying ACMFILTERCHOOSE_STYLEF_ENABLEHOOK in the
+ // fdwStyle member.
+ //
+ // these members are IGNORED if ACMFILTERCHOOSE_STYLEF_ENABLEHOOK is not
+ // specified.
+ //
+ HINSTANCE hInstance; // .EXE containing cust. dlg. template
+ LPCWSTR pszTemplateName; // custom template name
+ LPARAM lCustData; // data passed to hook fn.
+ ACMFILTERCHOOSEHOOKPROCW pfnHook; // ptr to hook function
+
+} ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW, FAR *LPACMFILTERCHOOSEW;
+
+#ifdef _UNICODE
+#define ACMFILTERCHOOSE ACMFILTERCHOOSEW
+#define PACMFILTERCHOOSE PACMFILTERCHOOSEW
+#define LPACMFILTERCHOOSE LPACMFILTERCHOOSEW
+#else
+#define ACMFILTERCHOOSE ACMFILTERCHOOSEA
+#define PACMFILTERCHOOSE PACMFILTERCHOOSEA
+#define LPACMFILTERCHOOSE LPACMFILTERCHOOSEA
+#endif
+#else
+typedef struct tACMFILTERCHOOSE
+{
+ DWORD cbStruct; // sizeof(ACMFILTERCHOOSE)
+ DWORD fdwStyle; // chooser style flags
+
+ HWND hwndOwner; // caller's window handle
+
+ LPWAVEFILTER pwfltr; // ptr to wfltr buf to receive choice
+ DWORD cbwfltr; // size of mem buf for pwfltr
+
+ LPCSTR pszTitle;
+
+ char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
+ char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
+ LPSTR pszName; // custom name selection
+ DWORD cchName; // size in chars of mem buf for pszName
+
+ DWORD fdwEnum; // filter enumeration restrictions
+ LPWAVEFILTER pwfltrEnum; // filter describing restrictions
+
+ //
+ // the following members are used for custom templates only--which
+ // are enabled by specifying ACMFILTERCHOOSE_STYLEF_ENABLEHOOK in the
+ // fdwStyle member.
+ //
+ // these members are IGNORED if ACMFILTERCHOOSE_STYLEF_ENABLEHOOK is not
+ // specified.
+ //
+ HINSTANCE hInstance; // .EXE containing cust. dlg. template
+ LPCSTR pszTemplateName; // custom template name
+ LPARAM lCustData; // data passed to hook fn.
+ ACMFILTERCHOOSEHOOKPROC pfnHook; // ptr to hook function
+
+} ACMFILTERCHOOSE, *PACMFILTERCHOOSE, FAR *LPACMFILTERCHOOSE;
+#endif
+
+//
+// ACMFILTERCHOOSE.fdwStyle
+//
+//
+#define ACMFILTERCHOOSE_STYLEF_SHOWHELP 0x00000004L
+#define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
+#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
+#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
+#define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT 0x00000040L
+
+#ifdef _WIN32
+MMRESULT ACMAPI acmFilterChooseA
+(
+ LPACMFILTERCHOOSEA pafltrc
+);
+
+MMRESULT ACMAPI acmFilterChooseW
+(
+ LPACMFILTERCHOOSEW pafltrc
+);
+
+#ifdef _UNICODE
+#define acmFilterChoose acmFilterChooseW
+#else
+#define acmFilterChoose acmFilterChooseA
+#endif
+#else
+MMRESULT ACMAPI acmFilterChoose
+(
+ LPACMFILTERCHOOSE pafltrc
+);
+#endif
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Stream API's
+//
+//
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamOpen()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+typedef struct tACMSTREAMHEADER
+{
+ DWORD cbStruct; // sizeof(ACMSTREAMHEADER)
+ DWORD fdwStatus; // ACMSTREAMHEADER_STATUSF_*
+ DWORD dwUser; // user instance data for hdr
+ LPBYTE pbSrc;
+ DWORD cbSrcLength;
+ DWORD cbSrcLengthUsed;
+ DWORD dwSrcUser; // user instance data for src
+ LPBYTE pbDst;
+ DWORD cbDstLength;
+ DWORD cbDstLengthUsed;
+ DWORD dwDstUser; // user instance data for dst
+ DWORD dwReservedDriver[10]; // driver reserved work space
+
+} ACMSTREAMHEADER, *PACMSTREAMHEADER, FAR *LPACMSTREAMHEADER;
+
+//
+// ACMSTREAMHEADER.fdwStatus
+//
+// ACMSTREAMHEADER_STATUSF_DONE: done bit for async conversions.
+//
+#define ACMSTREAMHEADER_STATUSF_DONE 0x00010000L
+#define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
+#define ACMSTREAMHEADER_STATUSF_INQUEUE 0x00100000L
+
+
+
+MMRESULT ACMAPI acmStreamOpen
+(
+ LPHACMSTREAM phas, // pointer to stream handle
+ HACMDRIVER had, // optional driver handle
+ LPWAVEFORMATEX pwfxSrc, // source format to convert
+ LPWAVEFORMATEX pwfxDst, // required destination format
+ LPWAVEFILTER pwfltr, // optional filter
+ DWORD dwCallback, // callback
+ DWORD dwInstance, // callback instance data
+ DWORD fdwOpen // ACM_STREAMOPENF_* and CALLBACK_*
+);
+
+#define ACM_STREAMOPENF_QUERY 0x00000001
+#define ACM_STREAMOPENF_ASYNC 0x00000002
+#define ACM_STREAMOPENF_NONREALTIME 0x00000004
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamClose()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmStreamClose
+(
+ HACMSTREAM has,
+ DWORD fdwClose
+);
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamSize()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmStreamSize
+(
+ HACMSTREAM has,
+ DWORD cbInput,
+ LPDWORD pdwOutputBytes,
+ DWORD fdwSize
+);
+
+#define ACM_STREAMSIZEF_SOURCE 0x00000000L
+#define ACM_STREAMSIZEF_DESTINATION 0x00000001L
+#define ACM_STREAMSIZEF_QUERYMASK 0x0000000FL
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamReset()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmStreamReset
+(
+ HACMSTREAM has,
+ DWORD fdwReset
+);
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamConvert()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmStreamConvert
+(
+ HACMSTREAM has,
+ LPACMSTREAMHEADER pash,
+ DWORD fdwConvert
+);
+
+#define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
+#define ACM_STREAMCONVERTF_START 0x00000010
+#define ACM_STREAMCONVERTF_END 0x00000020
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamPrepareHeader()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmStreamPrepareHeader
+(
+ HACMSTREAM has,
+ LPACMSTREAMHEADER pash,
+ DWORD fdwPrepare
+);
+
+
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamUnprepareHeader()
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+MMRESULT ACMAPI acmStreamUnprepareHeader
+(
+ HACMSTREAM has,
+ LPACMSTREAMHEADER pash,
+ DWORD fdwUnprepare
+);
+
+
+
+#include "poppack.h" /* Revert to default packing */
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* _INC_ACM */
diff --git a/public/sdk/inc/msacmdlg.dlg b/public/sdk/inc/msacmdlg.dlg
new file mode 100644
index 000000000..467ebce65
--- /dev/null
+++ b/public/sdk/inc/msacmdlg.dlg
@@ -0,0 +1,80 @@
+/***************************************************************************
+ *
+ * msacmdlg.dlg
+ *
+ * Copyright (c) 1992-1996 Microsoft Corporation. All Rights Reserved.
+ *
+ * Description:
+ * Audio Compression Manager Common Dialogs
+ *
+ ***************************************************************************/
+
+/*
+ * Selection Dialog for Formats
+ */
+DLG_ACMFORMATCHOOSE_ID DIALOG DISCARDABLE 10, 20, 225, 100
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Sound Selection"
+FONT 8, "MS Shell Dlg"
+BEGIN
+
+ LTEXT "&Name:", -1, 5, 5, 115, 8, NOT WS_GROUP
+
+ COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+
+ PUSHBUTTON "&Save As...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
+ PUSHBUTTON "&Remove", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
+
+ LTEXT "&Format:", -1, 5, 41, 44, 8, NOT WS_GROUP
+
+ COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+
+ LTEXT "&Attributes:", -1, 5, 59, 44, 8, NOT WS_GROUP
+
+ COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
+ CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP |
+ CBS_OWNERDRAWFIXED | CBS_HASSTRINGS
+
+ DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
+ PUSHBUTTON "Cancel", IDCANCEL, 92, 80, 40, 14
+ PUSHBUTTON "&Help", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
+
+END
+
+/*
+ * Selection Dialog for Filters
+ */
+
+DLG_ACMFILTERCHOOSE_ID DIALOG DISCARDABLE 10, 20, 225, 100
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Filter Selection"
+FONT 8, "MS Shell Dlg"
+BEGIN
+
+ LTEXT "&Name:", -1, 5, 5, 115, 8, NOT WS_GROUP
+
+ COMBOBOX IDD_ACMFILTERCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+
+ PUSHBUTTON "&Save As...", IDD_ACMFILTERCHOOSE_BTN_SETNAME, 125, 14, 45, 14
+ PUSHBUTTON "&Remove", IDD_ACMFILTERCHOOSE_BTN_DELNAME, 175, 14, 45, 14
+
+ LTEXT "&Filter:", -1, 5, 41, 44, 8, NOT WS_GROUP
+
+ COMBOBOX IDD_ACMFILTERCHOOSE_CMB_FILTERTAG, 50, 39, 170, 60,
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+
+ LTEXT "&Attributes:", -1, 5, 59, 44, 8, NOT WS_GROUP
+
+ COMBOBOX IDD_ACMFILTERCHOOSE_CMB_FILTER, 50, 57, 170, 60,
+ CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP |
+ CBS_OWNERDRAWFIXED | CBS_HASSTRINGS
+
+ DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
+ PUSHBUTTON "Cancel", IDCANCEL, 92, 80, 40, 14
+ PUSHBUTTON "&Help", IDD_ACMFILTERCHOOSE_BTN_HELP, 136, 80, 40, 14
+
+END
+
diff --git a/public/sdk/inc/msacmdlg.h b/public/sdk/inc/msacmdlg.h
new file mode 100644
index 000000000..b636ddac3
--- /dev/null
+++ b/public/sdk/inc/msacmdlg.h
@@ -0,0 +1,32 @@
+/***************************************************************************
+ *
+ * msacmdlg.h
+ *
+ * Copyright (c) 1991-1995 Microsoft Corporation. All Rights Reserved.
+ *
+ * Description:
+ * Audio Compression Manager Common Dialogs Identifiers
+ *
+ ***************************************************************************/
+
+
+#define DLG_ACMFORMATCHOOSE_ID 70
+#define IDD_ACMFORMATCHOOSE_BTN_HELP 9
+#define IDD_ACMFORMATCHOOSE_CMB_CUSTOM 100
+#define IDD_ACMFORMATCHOOSE_CMB_FORMATTAG 101
+#define IDD_ACMFORMATCHOOSE_CMB_FORMAT 102
+#define IDD_ACMFORMATCHOOSE_BTN_SETNAME 103
+#define IDD_ACMFORMATCHOOSE_BTN_DELNAME 104
+
+
+#define DLG_ACMFILTERCHOOSE_ID 71
+#define IDD_ACMFILTERCHOOSE_BTN_HELP 9
+#define IDD_ACMFILTERCHOOSE_CMB_CUSTOM 100
+#define IDD_ACMFILTERCHOOSE_CMB_FILTERTAG 101
+#define IDD_ACMFILTERCHOOSE_CMB_FILTER 102
+#define IDD_ACMFILTERCHOOSE_BTN_SETNAME 103
+#define IDD_ACMFILTERCHOOSE_BTN_DELNAME 104
+
+
+
+
diff --git a/public/sdk/inc/msacmdrv.h b/public/sdk/inc/msacmdrv.h
new file mode 100644
index 000000000..8c1460bf1
--- /dev/null
+++ b/public/sdk/inc/msacmdrv.h
@@ -0,0 +1,320 @@
+//==========================================================================;
+//
+// msacmdrv.h
+//
+// Copyright (c) 1992-1994 Microsoft Corporation. All Rights Reserved.
+//
+// Description:
+// Audio Compression Manager Public Header File for Drivers
+//
+// History:
+//
+//==========================================================================;
+
+#ifndef _INC_ACMDRV
+#define _INC_ACMDRV /* #defined if msacmdrv.h has been included */
+
+#if !defined(_INC_ACM)
+#ifndef RC_INVOKED
+#error MSACM.H to be included first
+#endif
+#endif
+
+#include "pshpack1.h" /* Assume byte packing throughout */
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// ACM Driver Version:
+//
+// the version is a 32 bit number that is broken into three parts as
+// follows:
+//
+// bits 24 - 31: 8 bit _major_ version number
+// bits 16 - 23: 8 bit _minor_ version number
+// bits 0 - 15: 16 bit build number
+//
+// this is then displayed as follows:
+//
+// bMajor = (BYTE)(dwVersion >> 24)
+// bMinor = (BYTE)(dwVersion >> 16) &
+// wBuild = LOWORD(dwVersion)
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#define MAKE_ACM_VERSION(mjr, mnr, bld) (((long)(mjr)<<24)| \
+ ((long)(mnr)<<16)| \
+ ((long)bld))
+
+
+#ifdef WIN32
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// under WIN32 all drivers use unicode structures. these have already
+// been #defined in MSACM.H. however, regardless of whether UNICODE is
+// defined, we will define these structures as unicode structures for use
+// in 32-bit drivers.
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#undef ACMDRIVERDETAILS
+#undef PACMDRIVERDETAILS
+#undef LPACMDRIVERDETAILS
+
+#undef ACMFORMATTAGDETAILS
+#undef PACMFORMATTAGDETAILS
+#undef LPACMFORMATTAGDETAILS
+
+#undef ACMFORMATDETAILS
+#undef PACMFORMATDETAILS
+#undef LPACMFORMATDETAILS
+
+#undef ACMFORMATCHOOSE
+#undef PACMFORMATCHOOSE
+#undef LPACMFORMATCHOOSE
+
+#undef ACMFILTERTAGDETAILS
+#undef PACMFILTERTAGDETAILS
+#undef LPACMFILTERTAGDETAILS
+
+#undef ACMFILTERDETAILS
+#undef PACMFILTERDETAILS
+#undef LPACMFILTERDETAILS
+
+#undef ACMFILTERCHOOSE
+#undef PACMFILTERCHOOSE
+#undef LPACMFILTERCHOOSE
+
+#define ACMDRIVERDETAILS ACMDRIVERDETAILSW
+#define PACMDRIVERDETAILS PACMDRIVERDETAILSW
+#define LPACMDRIVERDETAILS LPACMDRIVERDETAILSW
+
+#define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSW
+#define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSW
+#define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSW
+
+#define ACMFORMATDETAILS ACMFORMATDETAILSW
+#define PACMFORMATDETAILS PACMFORMATDETAILSW
+#define LPACMFORMATDETAILS LPACMFORMATDETAILSW
+
+#define ACMFORMATCHOOSE ACMFORMATCHOOSEW
+#define PACMFORMATCHOOSE PACMFORMATCHOOSEW
+#define LPACMFORMATCHOOSE LPACMFORMATCHOOSEW
+
+#define ACMFILTERTAGDETAILS ACMFILTERTAGDETAILSW
+#define PACMFILTERTAGDETAILS PACMFILTERTAGDETAILSW
+#define LPACMFILTERTAGDETAILS LPACMFILTERTAGDETAILSW
+
+#define ACMFILTERDETAILS ACMFILTERDETAILSW
+#define PACMFILTERDETAILS PACMFILTERDETAILSW
+#define LPACMFILTERDETAILS LPACMFILTERDETAILSW
+
+#define ACMFILTERCHOOSE ACMFILTERCHOOSEW
+#define PACMFILTERCHOOSE PACMFILTERCHOOSEW
+#define LPACMFILTERCHOOSE LPACMFILTERCHOOSEW
+
+#endif
+
+//
+//
+//
+//
+//
+#define ACMDRVOPENDESC_SECTIONNAME_CHARS
+
+#ifdef _WIN32
+typedef struct tACMDRVOPENDESCA
+{
+ DWORD cbStruct; // sizeof(ACMDRVOPENDESC)
+ FOURCC fccType; // 'audc'
+ FOURCC fccComp; // sub-type (not used--must be 0)
+ DWORD dwVersion; // current version of ACM opening you
+ DWORD dwFlags; //
+ DWORD dwError; // result from DRV_OPEN request
+ LPCSTR pszSectionName; // see DRVCONFIGINFO.lpszDCISectionName
+ LPCSTR pszAliasName; // see DRVCONFIGINFO.lpszDCIAliasName
+
+} ACMDRVOPENDESCA, *PACMDRVOPENDESCA, FAR *LPACMDRVOPENDESCA;
+
+typedef struct tACMDRVOPENDESCW
+{
+ DWORD cbStruct; // sizeof(ACMDRVOPENDESC)
+ FOURCC fccType; // 'audc'
+ FOURCC fccComp; // sub-type (not used--must be 0)
+ DWORD dwVersion; // current version of ACM opening you
+ DWORD dwFlags; //
+ DWORD dwError; // result from DRV_OPEN request
+ LPCWSTR pszSectionName; // see DRVCONFIGINFO.lpszDCISectionName
+ LPCWSTR pszAliasName; // see DRVCONFIGINFO.lpszDCIAliasName
+
+} ACMDRVOPENDESCW, *PACMDRVOPENDESCW, FAR *LPACMDRVOPENDESCW;
+
+#define ACMDRVOPENDESC ACMDRVOPENDESCW
+#define PACMDRVOPENDESC PACMDRVOPENDESCW
+#define LPACMDRVOPENDESC LPACMDRVOPENDESCW
+#else
+typedef struct tACMDRVOPENDESC
+{
+ DWORD cbStruct; // sizeof(ACMDRVOPENDESC)
+ FOURCC fccType; // 'audc'
+ FOURCC fccComp; // sub-type (not used--must be 0)
+ DWORD dwVersion; // current version of ACM opening you
+ DWORD dwFlags; //
+ DWORD dwError; // result from DRV_OPEN request
+ LPCSTR pszSectionName; // see DRVCONFIGINFO.lpszDCISectionName
+ LPCSTR pszAliasName; // see DRVCONFIGINFO.lpszDCIAliasName
+
+} ACMDRVOPENDESC, *PACMDRVOPENDESC, FAR *LPACMDRVOPENDESC;
+#endif
+
+
+//
+//
+//
+//
+//
+typedef struct tACMDRVSTREAMINSTANCE
+{
+ DWORD cbStruct;
+ LPWAVEFORMATEX pwfxSrc;
+ LPWAVEFORMATEX pwfxDst;
+ LPWAVEFILTER pwfltr;
+ DWORD dwCallback;
+ DWORD dwInstance;
+ DWORD fdwOpen;
+ DWORD fdwDriver;
+ DWORD dwDriver;
+ HACMSTREAM has;
+
+} ACMDRVSTREAMINSTANCE, *PACMDRVSTREAMINSTANCE, FAR *LPACMDRVSTREAMINSTANCE;
+
+
+//
+// NOTE! this structure must match the ACMSTREAMHEADER in msacm.h but
+// defines more information for the driver writing convenience
+//
+typedef struct tACMDRVSTREAMHEADER FAR *LPACMDRVSTREAMHEADER;
+typedef struct tACMDRVSTREAMHEADER
+{
+ DWORD cbStruct;
+ DWORD fdwStatus;
+ DWORD dwUser;
+ LPBYTE pbSrc;
+ DWORD cbSrcLength;
+ DWORD cbSrcLengthUsed;
+ DWORD dwSrcUser;
+ LPBYTE pbDst;
+ DWORD cbDstLength;
+ DWORD cbDstLengthUsed;
+ DWORD dwDstUser;
+
+ DWORD fdwConvert; // flags passed from convert func
+ LPACMDRVSTREAMHEADER padshNext; // for async driver queueing
+ DWORD fdwDriver; // driver instance flags
+ DWORD dwDriver; // driver instance data
+
+ //
+ // all remaining fields are used by the ACM for bookkeeping purposes.
+ // an ACM driver should never use these fields (though than can be
+ // helpful for debugging)--note that the meaning of these fields
+ // may change, so do NOT rely on them in shipping code.
+ //
+ DWORD fdwPrepared;
+ DWORD dwPrepared;
+ LPBYTE pbPreparedSrc;
+ DWORD cbPreparedSrcLength;
+ LPBYTE pbPreparedDst;
+ DWORD cbPreparedDstLength;
+
+} ACMDRVSTREAMHEADER, *PACMDRVSTREAMHEADER;
+
+
+//
+// structure for ACMDM_STREAM_SIZE message
+//
+//
+typedef struct tACMDRVSTREAMSIZE
+{
+ DWORD cbStruct;
+ DWORD fdwSize;
+ DWORD cbSrcLength;
+ DWORD cbDstLength;
+
+} ACMDRVSTREAMSIZE, *PACMDRVSTREAMSIZE, FAR *LPACMDRVSTREAMSIZE;
+
+
+
+//
+// structure containing the information for the ACMDM_FORMAT_SUGGEST message
+//
+//
+typedef struct tACMDRVFORMATSUGGEST
+{
+ DWORD cbStruct; // sizeof(ACMDRVFORMATSUGGEST)
+ DWORD fdwSuggest; // Suggest flags
+ LPWAVEFORMATEX pwfxSrc; // Source Format
+ DWORD cbwfxSrc; // Source Size
+ LPWAVEFORMATEX pwfxDst; // Dest format
+ DWORD cbwfxDst; // Dest Size
+
+} ACMDRVFORMATSUGGEST, *PACMDRVFORMATSUGGEST, FAR *LPACMDRVFORMATSUGGEST;
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+//
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+//
+//
+//
+#ifndef WIN32
+ LRESULT ACMAPI acmApplicationExit(HTASK htask, LPARAM lParam);
+ BOOL ACMAPI acmHugePageLock(LPBYTE pbArea, DWORD cbBuffer);
+ void ACMAPI acmHugePageUnlock(LPBYTE pbArea, DWORD cbBuffer);
+#endif
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// ACM Driver Messages
+//
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+#define ACMDM_DRIVER_NOTIFY (ACMDM_BASE + 1)
+#define ACMDM_DRIVER_DETAILS (ACMDM_BASE + 10)
+
+#define ACMDM_HARDWARE_WAVE_CAPS_INPUT (ACMDM_BASE + 20)
+#define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT (ACMDM_BASE + 21)
+
+#define ACMDM_FORMATTAG_DETAILS (ACMDM_BASE + 25)
+#define ACMDM_FORMAT_DETAILS (ACMDM_BASE + 26)
+#define ACMDM_FORMAT_SUGGEST (ACMDM_BASE + 27)
+
+#define ACMDM_FILTERTAG_DETAILS (ACMDM_BASE + 50)
+#define ACMDM_FILTER_DETAILS (ACMDM_BASE + 51)
+
+#define ACMDM_STREAM_OPEN (ACMDM_BASE + 76)
+#define ACMDM_STREAM_CLOSE (ACMDM_BASE + 77)
+#define ACMDM_STREAM_SIZE (ACMDM_BASE + 78)
+#define ACMDM_STREAM_CONVERT (ACMDM_BASE + 79)
+#define ACMDM_STREAM_RESET (ACMDM_BASE + 80)
+#define ACMDM_STREAM_PREPARE (ACMDM_BASE + 81)
+#define ACMDM_STREAM_UNPREPARE (ACMDM_BASE + 82)
+
+
+#include "poppack.h" /* Revert to default packing */
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* _INC_ACMDRV */
diff --git a/public/sdk/inc/msaudite.h b/public/sdk/inc/msaudite.h
new file mode 100644
index 000000000..89613d6a1
--- /dev/null
+++ b/public/sdk/inc/msaudite.h
@@ -0,0 +1,2418 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991 Microsoft Corporation
+
+Module Name:
+
+ msaudite.mc
+
+Abstract:
+
+ Constant definitions for the NT Audit Event Messages.
+
+Author:
+
+ Jim Kelly (JimK) 30-Mar-1992
+
+Revision History:
+
+Notes:
+
+ The .h and .res forms of this file are generated from the .mc
+ form of the file (private\ntos\seaudit\msaudite\msaudite.mc).
+ Please make all changes to the .mc form of the file.
+
+
+
+--*/
+
+#ifndef _MSAUDITE_
+#define _MSAUDITE_
+
+/*lint -e767 */ // Don't complain about different definitions // winnt
+//
+// 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 the severity codes
+//
+
+
+//
+// MessageId: 0x00000000L (No symbolic name defined)
+//
+// MessageText:
+//
+// Unused message ID
+//
+
+
+// Message ID 0 is unused - just used to flush out the diagram
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+// //
+// WARNING - WARNING - WARNING - WARNING - WARNING //
+// //
+// //
+// Everything above this is currently in use in the running system. //
+// //
+// Everything below this is currently under development and is //
+// slated to replace everything above. //
+// //
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Audit Message ID Space: //
+// //
+// 0x0000 - 0x00FF : Reserved for future use. //
+// //
+// 0x0100 - 0x01FF : Categories //
+// //
+// 0x0200 - 0x05FF : Events //
+// //
+// 0x0600 - 0x063F : Standard access types and names for //
+// specific accesses when no specific names //
+// can be found. //
+// //
+// 0x0640 - 0x06FF : Well known privilege names (as we would //
+// like them displayed in the event viewer). //
+// //
+// 0x0700 - 0x0FFE : Reserved for future use. //
+// //
+// 0X0FFF : SE_ADT_LAST_SYSTEM_MESSAGE (the highest //
+// value audit message used by the system) //
+// //
+// //
+// 0x1000 and above: For use by Parameter Message Files //
+// //
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+//
+// MessageId: SE_ADT_LAST_SYSTEM_MESSAGE
+//
+// MessageText:
+//
+// Highest System-Defined Audit Message Value.
+//
+#define SE_ADT_LAST_SYSTEM_MESSAGE ((ULONG)0x00000FFFL)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// CATEGORIES //
+// //
+// Categories take up the range 0x1 - 0x400 //
+// //
+// Category IDs: //
+// //
+// SE_CATEGID_SYSTEM //
+// SE_CATEGID_LOGON //
+// SE_CATEGID_OBJECT_ACCESS //
+// SE_CATEGID_PRIVILEGE_USE //
+// SE_CATEGID_DETAILED_TRACKING //
+// SE_CATEGID_POLICY_CHANGE //
+// SE_CATEGID_ACCOUNT_MANAGEMENT //
+// //
+// //
+/////////////////////////////////////////////////////////////////////////////
+//
+// MessageId: SE_CATEGID_SYSTEM
+//
+// MessageText:
+//
+// System Event
+//
+#define SE_CATEGID_SYSTEM ((ULONG)0x00000001L)
+
+//
+// MessageId: SE_CATEGID_LOGON
+//
+// MessageText:
+//
+// Logon/Logoff
+//
+#define SE_CATEGID_LOGON ((ULONG)0x00000002L)
+
+//
+// MessageId: SE_CATEGID_OBJECT_ACCESS
+//
+// MessageText:
+//
+// Object Access
+//
+#define SE_CATEGID_OBJECT_ACCESS ((ULONG)0x00000003L)
+
+//
+// MessageId: SE_CATEGID_PRIVILEGE_USE
+//
+// MessageText:
+//
+// Privilege Use
+//
+#define SE_CATEGID_PRIVILEGE_USE ((ULONG)0x00000004L)
+
+//
+// MessageId: SE_CATEGID_DETAILED_TRACKING
+//
+// MessageText:
+//
+// Detailed Tracking
+//
+#define SE_CATEGID_DETAILED_TRACKING ((ULONG)0x00000005L)
+
+//
+// MessageId: SE_CATEGID_POLICY_CHANGE
+//
+// MessageText:
+//
+// Policy Change
+//
+#define SE_CATEGID_POLICY_CHANGE ((ULONG)0x00000006L)
+
+//
+// MessageId: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// MessageText:
+//
+// Account Management
+//
+#define SE_CATEGID_ACCOUNT_MANAGEMENT ((ULONG)0x00000007L)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Messages for Category: SE_CATEGID_SYSTEM //
+// //
+// Event IDs: //
+// SE_AUDITID_SYSTEM_RESTART //
+// SE_AUDITID_SYSTEM_SHUTDOWN //
+// SE_AUDITID_AUTH_PACKAGE_LOAD //
+// SE_AUDITID_LOGON_PROC_REGISTER //
+// SE_AUDITID_AUDITS_DISCARDED //
+// SE_AUDITID_NOTIFY_PACKAGE_LOAD //
+// //
+/////////////////////////////////////////////////////////////////////////////
+//
+//
+// SE_AUDITID_SYSTEM_RESTART
+//
+// Category: SE_CATEGID_SYSTEM
+//
+// Parameter Strings - None
+//
+//
+//
+//
+// MessageId: SE_AUDITID_SYSTEM_RESTART
+//
+// MessageText:
+//
+// Windows NT is starting up.
+//
+#define SE_AUDITID_SYSTEM_RESTART ((ULONG)0x00000200L)
+
+//
+//
+// SE_AUDITID_SYSTEM_SHUTDOWN
+//
+// Category: SE_CATEGID_SYSTEM
+//
+// Parameter Strings - None
+//
+//
+//
+//
+// MessageId: SE_AUDITID_SYSTEM_SHUTDOWN
+//
+// MessageText:
+//
+// Windows NT is shutting down.
+// All logon sessions will be terminated by this shutdown.
+//
+#define SE_AUDITID_SYSTEM_SHUTDOWN ((ULONG)0x00000201L)
+
+//
+//
+// SE_AUDITID_SYSTEM_AUTH_PACKAGE_LOAD
+//
+// Category: SE_CATEGID_SYSTEM
+//
+// Parameter Strings -
+//
+// 1 - Authentication Package Name
+//
+//
+//
+//
+// MessageId: SE_AUDITID_AUTH_PACKAGE_LOAD
+//
+// MessageText:
+//
+// An authentication package has been loaded by the Local Security Authority.
+// This authentication package will be used to authenticate logon attempts.
+// %n
+// Authentication Package Name:%t%1
+//
+#define SE_AUDITID_AUTH_PACKAGE_LOAD ((ULONG)0x00000202L)
+
+//
+//
+// SE_AUDITID_SYSTEM_LOGON_PROC_REGISTER
+//
+// Category: SE_CATEGID_SYSTEM
+//
+// Parameter Strings -
+//
+// 1 - Logon Process Name
+//
+//
+//
+//
+// MessageId: SE_AUDITID_SYSTEM_LOGON_PROC_REGISTER
+//
+// MessageText:
+//
+// A trusted logon process has registered with the Local Security Authority.
+// This logon process will be trusted to submit logon requests.
+// %n
+// %n
+// Logon Process Name:%t%1
+//
+#define SE_AUDITID_SYSTEM_LOGON_PROC_REGISTER ((ULONG)0x00000203L)
+
+//
+//
+// SE_AUDITID_AUDITS_DISCARDED
+//
+// Category: SE_CATEGID_SYSTEM
+//
+// Parameter Strings -
+//
+// 1 - Number of audits discarded
+//
+//
+//
+//
+// MessageId: SE_AUDITID_AUDITS_DISCARDED
+//
+// MessageText:
+//
+// Internal resources allocated for the queuing of audit messages have been exhausted,
+// leading to the loss of some audits.
+// %n
+// %tNumber of audit messages discarded:%t%1
+//
+#define SE_AUDITID_AUDITS_DISCARDED ((ULONG)0x00000204L)
+
+//
+//
+// SE_AUDITID_AUDIT_LOG_CLEARED
+//
+// Category: SE_CATEGID_SYSTEM
+//
+// Parameter Strings -
+//
+// 1 - Primary user account name
+//
+// 2 - Primary authenticating domain name
+//
+// 3 - Primary logon ID string
+//
+// 4 - Client user account name ("-" if no client)
+//
+// 5 - Client authenticating domain name ("-" if no client)
+//
+// 6 - Client logon ID string ("-" if no client)
+//
+//
+//
+//
+// MessageId: SE_AUDITID_AUDIT_LOG_CLEARED
+//
+// MessageText:
+//
+// The audit log was cleared
+// %n
+// %tPrimary User Name:%t%1%n
+// %tPrimary Domain:%t%2%n
+// %tPrimary Logon ID:%t%3%n
+// %tClient User Name:%t%4%n
+// %tClient Domain:%t%5%n
+// %tClient Logon ID:%t%6%n
+//
+#define SE_AUDITID_AUDIT_LOG_CLEARED ((ULONG)0x00000205L)
+
+//
+//
+// SE_AUDITID_SYSTEM_NOTIFY_PACKAGE_LOAD
+//
+// Category: SE_CATEGID_SYSTEM
+//
+// Parameter Strings -
+//
+// 1 - Notification Package Name
+//
+//
+//
+//
+// MessageId: SE_AUDITID_NOTIFY_PACKAGE_LOAD
+//
+// MessageText:
+//
+// An notification package has been loaded by the Security Account Manager.
+// This package will be notified of any account or password changes.
+// %n
+// Notification Package Name:%t%1
+//
+#define SE_AUDITID_NOTIFY_PACKAGE_LOAD ((ULONG)0x00000206L)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Messages for Category: SE_CATEGID_LOGON //
+// //
+// Event IDs: //
+// SE_AUDITID_SUCCESSFUL_LOGON //
+// SE_AUDITID_UNKNOWN_USER_OR_PWD //
+// SE_AUDITID_ACCOUNT_TIME_RESTR //
+// SE_AUDITID_ACCOUNT_DISABLED //
+// SE_AUDITID_ACCOUNT_EXPIRED //
+// SE_AUDITID_WORKSTATION_RESTR //
+// SE_AUDITID_LOGON_TYPE_RESTR //
+// SE_AUDITID_PASSWORD_EXPIRED //
+// SE_AUDITID_NO_AUTHOR_RESPONSE //
+// SE_AUDITID_NETLOGON_NOT_STARTED //
+// SE_AUDITID_UNSUCCESSFUL_LOGON //
+// SE_AUDITID_LOGOFF //
+// SE_AUDITID_ACCOUNT_LOCKED //
+// //
+// //
+// //
+/////////////////////////////////////////////////////////////////////////////
+//
+//
+// SE_AUDITID_SUCCESSFUL_LOGON
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon ID string
+//
+// 4 - Logon Type string
+//
+// 5 - Logon process name
+//
+// 6 - Authentication package name
+//
+//
+//
+//
+// MessageId: SE_AUDITID_SUCCESSFUL_LOGON
+//
+// MessageText:
+//
+// Successful Logon:%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%t%2%n
+// %tLogon ID:%t%t%3%n
+// %tLogon Type:%t%4%n
+// %tLogon Process:%t%5%n
+// %tAuthentication Package:%t%6%n
+// %tWorkstation Name:%t%7
+//
+#define SE_AUDITID_SUCCESSFUL_LOGON ((ULONG)0x00000210L)
+
+//
+//
+// SE_AUDITID_UNKNOWN_USER_OR_PWD
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon Type string
+//
+// 4 - Logon process name
+//
+// 5 - Authentication package name
+//
+//
+//
+// MessageId: SE_AUDITID_UNKNOWN_USER_OR_PWD
+//
+// MessageText:
+//
+// Logon Failure:%n
+// %tReason:%t%tUnknown user name or bad password%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%t%2%n
+// %tLogon Type:%t%3%n
+// %tLogon Process:%t%4%n
+// %tAuthentication Package:%t%5%n
+// %tWorkstation Name:%t%6
+//
+#define SE_AUDITID_UNKNOWN_USER_OR_PWD ((ULONG)0x00000211L)
+
+//
+//
+// SE_AUDITID_ACCOUNT_TIME_RESTR
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon Type string
+//
+// 4 - Logon process name
+//
+// 5 - Authentication package name
+//
+//
+//
+// MessageId: SE_AUDITID_ACCOUNT_TIME_RESTR
+//
+// MessageText:
+//
+// Logon Failure:%n
+// %tReason:%t%tAccount logon time restriction violation%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%2%n
+// %tLogon Type:%t%3%n
+// %tLogon Process:%t%4%n
+// %tAuthentication Package:%t%5%n
+// %tWorkstation Name:%t%6
+//
+#define SE_AUDITID_ACCOUNT_TIME_RESTR ((ULONG)0x00000212L)
+
+//
+//
+// SE_AUDITID_ACCOUNT_DISABLED
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon Type string
+//
+// 4 - Logon process name
+//
+// 5 - Authentication package name
+//
+//
+//
+// MessageId: SE_AUDITID_ACCOUNT_DISABLED
+//
+// MessageText:
+//
+// Logon Failure:%n
+// %tReason:%t%tAccount currently disabled%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%t%2%n
+// %tLogon Type:%t%3%n
+// %tLogon Process:%t%4%n
+// %tAuthentication Package:%t%5%n
+// %tWorkstation Name:%t%6
+//
+#define SE_AUDITID_ACCOUNT_DISABLED ((ULONG)0x00000213L)
+
+//
+//
+// SE_AUDITID_ACCOUNT_EXPIRED
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon Type string
+//
+// 4 - Logon process name
+//
+// 5 - Authentication package name
+//
+//
+//
+// MessageId: SE_AUDITID_ACCOUNT_EXPIRED
+//
+// MessageText:
+//
+// Logon Failure:%n
+// %tReason:%t%tThe specified user account has expired%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%t%2%n
+// %tLogon Type:%t%3%n
+// %tLogon Process:%t%4%n
+// %tAuthentication Package:%t%5%n
+// %tWorkstation Name:%t%6
+//
+#define SE_AUDITID_ACCOUNT_EXPIRED ((ULONG)0x00000214L)
+
+//
+//
+// SE_AUDITID_WORKSTATION_RESTR
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon Type string
+//
+// 4 - Logon process name
+//
+// 5 - Authentication package name
+//
+//
+//
+// MessageId: SE_AUDITID_WORKSTATION_RESTR
+//
+// MessageText:
+//
+// Logon Failure:%n
+// %tReason:%t%tUser not allowed to logon at this computer%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%2%n
+// %tLogon Type:%t%3%n
+// %tLogon Process:%t%4%n
+// %tAuthentication Package:%t%5%n
+// %tWorkstation Name:%t%6
+//
+#define SE_AUDITID_WORKSTATION_RESTR ((ULONG)0x00000215L)
+
+//
+//
+// SE_AUDITID_LOGON_TYPE_RESTR
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon Type string
+//
+// 4 - Logon process name
+//
+// 5 - Authentication package name
+//
+//
+//
+// MessageId: SE_AUDITID_LOGON_TYPE_RESTR
+//
+// MessageText:
+//
+// Logon Failure:%n
+// %tReason:%tThe user has not be granted the requested%n
+// %t%tlogon type at this machine%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%t%2%n
+// %tLogon Type:%t%3%n
+// %tLogon Process:%t%4%n
+// %tAuthentication Package:%t%5%n
+// %tWorkstation Name:%t%6
+//
+#define SE_AUDITID_LOGON_TYPE_RESTR ((ULONG)0x00000216L)
+
+//
+//
+// SE_AUDITID_PASSWORD_EXPIRED
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon Type string
+//
+// 4 - Logon process name
+//
+// 5 - Authentication package name
+//
+//
+//
+// MessageId: SE_AUDITID_PASSWORD_EXPIRED
+//
+// MessageText:
+//
+// Logon Failure:%n
+// %tReason:%t%tThe specified account's password has expired%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%t%2%n
+// %tLogon Type:%t%3%n
+// %tLogon Process:%t%4%n
+// %tAuthentication Package:%t%5%n
+// %tWorkstation Name:%t%6
+//
+#define SE_AUDITID_PASSWORD_EXPIRED ((ULONG)0x00000217L)
+
+//
+//
+// SE_AUDITID_NETLOGON_NOT_STARTED
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon Type string
+//
+// 4 - Logon process name
+//
+// 5 - Authentication package name
+//
+//
+//
+// MessageId: SE_AUDITID_NETLOGON_NOT_STARTED
+//
+// MessageText:
+//
+// Logon Failure:%n
+// %tReason:%t%tThe NetLogon component is not active%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%t%2%n
+// %tLogon Type:%t%3%n
+// %tLogon Process:%t%4%n
+// %tAuthentication Package:%t%5%n
+// %tWorkstation Name:%t%6
+//
+#define SE_AUDITID_NETLOGON_NOT_STARTED ((ULONG)0x00000218L)
+
+//
+//
+// SE_AUDITID_UNSUCCESSFUL_LOGON
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon Type string
+//
+// 4 - Logon process name
+//
+// 5 - Authentication package name
+//
+//
+//
+// MessageId: SE_AUDITID_UNSUCCESSFUL_LOGON
+//
+// MessageText:
+//
+// Logon Failure:%n
+// %tReason:%t%tAn unexpected error occured during logon%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%t%2%n
+// %tLogon Type:%t%3%n
+// %tLogon Process:%t%4%n
+// %tAuthentication Package:%t%5%n
+// %tWorkstation Name:%t%6
+//
+#define SE_AUDITID_UNSUCCESSFUL_LOGON ((ULONG)0x00000219L)
+
+//
+//
+// SE_AUDITID_LOGOFF
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon ID string
+//
+// 3 - Logon Type string
+//
+//
+//
+//
+// MessageId: SE_AUDITID_LOGOFF
+//
+// MessageText:
+//
+// User Logoff:%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%t%2%n
+// %tLogon ID:%t%t%3%n
+// %tLogon Type:%t%4%n
+//
+#define SE_AUDITID_LOGOFF ((ULONG)0x0000021AL)
+
+//
+//
+// SE_AUDITID_ACCOUNT_LOCKED
+//
+// Category: SE_CATEGID_LOGON
+//
+// Parameter Strings -
+//
+// 1 - User account name
+//
+// 2 - Authenticating domain name
+//
+// 3 - Logon Type string
+//
+// 4 - Logon process name
+//
+// 5 - Authentication package name
+//
+//
+//
+// MessageId: SE_AUDITID_ACCOUNT_LOCKED
+//
+// MessageText:
+//
+// Logon Failure:%n
+// %tReason:%t%tAccount locked out%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%2%n
+// %tLogon Type:%t%3%n
+// %tLogon Process:%t%4%n
+// %tAuthentication Package:%t%5%n
+// %tWorkstation Name:%t%6
+//
+#define SE_AUDITID_ACCOUNT_LOCKED ((ULONG)0x0000021BL)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Messages for Category: SE_CATEGID_OBJECT_ACCESS //
+// //
+// Event IDs: //
+// SE_AUDITID_OPEN_HANDLE //
+// SE_AUDITID_CLOSE_HANDLE //
+// SE_AUDITID_OPEN_OBJECT_FOR_DELETE //
+// SE_AUDITID_DELETE_OBJECT //
+// //
+// //
+// //
+/////////////////////////////////////////////////////////////////////////////
+//
+//
+// SE_AUDITID_OPEN_HANDLE
+//
+// Category: SE_CATEGID_OBJECT_ACCESS
+//
+// Parameter Strings -
+//
+// 1 - Object Type string
+//
+// 2 - Object name
+//
+// 3 - New handle ID string
+//
+// 4 - Object server name
+//
+// 5 - Process ID string
+//
+// 6 - Primary user account name
+//
+// 7 - Primary authenticating domain name
+//
+// 8 - Primary logon ID string
+//
+// 9 - Client user account name ("-" if no client)
+//
+// 10 - Client authenticating domain name ("-" if no client)
+//
+// 11 - Client logon ID string ("-" if no client)
+//
+// 12 - Access names
+//
+//
+//
+//
+//
+// MessageId: SE_AUDITID_OPEN_HANDLE
+//
+// MessageText:
+//
+// Object Open:%n
+// %tObject Server:%t%1%n
+// %tObject Type:%t%2%n
+// %tObject Name:%t%3%n
+// %tNew Handle ID:%t%4%n
+// %tOperation ID:%t{%5,%6}%n
+// %tProcess ID:%t%7%n
+// %tPrimary User Name:%t%8%n
+// %tPrimary Domain:%t%9%n
+// %tPrimary Logon ID:%t%10%n
+// %tClient User Name:%t%11%n
+// %tClient Domain:%t%12%n
+// %tClient Logon ID:%t%13%n
+// %tAccesses%t%t%14%n
+// %tPrivileges%t%t%15%n
+//
+#define SE_AUDITID_OPEN_HANDLE ((ULONG)0x00000230L)
+
+//
+//
+// SE_AUDITID_CREATE_HANDLE
+//
+// Category: SE_CATEGID_OBJECT_ACCESS
+//
+// Parameter Strings -
+//
+// 1 - Handle ID string
+//
+// 2,3 - Operation ID
+//
+// 4 - Process ID string
+//
+//
+//
+//
+//
+// MessageId: SE_AUDITID_CREATE_HANDLE
+//
+// MessageText:
+//
+// Handle Allocated:%n
+// %tHandle ID:%t%1%n
+// %tOperation ID:%t{%2,%3}%n
+// %tProcess ID:%t%4%n
+//
+#define SE_AUDITID_CREATE_HANDLE ((ULONG)0x00000231L)
+
+//
+//
+// SE_AUDITID_CLOSE_HANDLE
+//
+// Category: SE_CATEGID_OBJECT_ACCESS
+//
+// Parameter Strings -
+//
+// 1 - Object server name
+//
+// 2 - Handle ID string
+//
+// 3 - Process ID string
+//
+//
+//
+//
+//
+// MessageId: SE_AUDITID_CLOSE_HANDLE
+//
+// MessageText:
+//
+// Handle Closed:%n
+// %tObject Server:%t%1%n
+// %tHandle ID:%t%2%n
+// %tProcess ID:%t%3%n
+//
+#define SE_AUDITID_CLOSE_HANDLE ((ULONG)0x00000232L)
+
+//
+//
+// SE_AUDITID_OPEN_OBJECT_FOR_DELETE
+//
+// Category: SE_CATEGID_OBJECT_ACCESS
+//
+// Parameter Strings -
+//
+// 1 - Object Type string
+//
+// 2 - Object name
+//
+// 3 - New handle ID string
+//
+// 4 - Object server name
+//
+// 5 - Process ID string
+//
+// 6 - Primary user account name
+//
+// 7 - Primary authenticating domain name
+//
+// 8 - Primary logon ID string
+//
+// 9 - Client user account name ("-" if no client)
+//
+// 10 - Client authenticating domain name ("-" if no client)
+//
+// 11 - Client logon ID string ("-" if no client)
+//
+// 12 - Access names
+//
+//
+//
+//
+//
+// MessageId: SE_AUDITID_OPEN_OBJECT_FOR_DELETE
+//
+// MessageText:
+//
+// Object Open for Delete:%n
+// %tObject Server:%t%1%n
+// %tObject Type:%t%2%n
+// %tObject Name:%t%3%n
+// %tNew Handle ID:%t%4%n
+// %tOperation ID:%t{%5,%6}%n
+// %tProcess ID:%t%7%n
+// %tPrimary User Name:%t%8%n
+// %tPrimary Domain:%t%9%n
+// %tPrimary Logon ID:%t%10%n
+// %tClient User Name:%t%11%n
+// %tClient Domain:%t%12%n
+// %tClient Logon ID:%t%13%n
+// %tAccesses%t%t%14%n
+// %tPrivileges%t%t%15%n
+//
+#define SE_AUDITID_OPEN_OBJECT_FOR_DELETE ((ULONG)0x00000233L)
+
+//
+//
+// SE_AUDITID_DELETE_OBJECT
+//
+// Category: SE_CATEGID_OBJECT_ACCESS
+//
+// Parameter Strings -
+//
+// 1 - Object server name
+//
+// 2 - Handle ID string
+//
+// 3 - Process ID string
+//
+//
+//
+//
+//
+// MessageId: SE_AUDITID_DELETE_OBJECT
+//
+// MessageText:
+//
+// Object Deleted:%n
+// %tObject Server:%t%1%n
+// %tHandle ID:%t%2%n
+// %tProcess ID:%t%3%n
+//
+#define SE_AUDITID_DELETE_OBJECT ((ULONG)0x00000234L)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Messages for Category: SE_CATEGID_PRIVILEGE_USE //
+// //
+// Event IDs: //
+// SE_AUDITID_ASSIGN_SPECIAL_PRIV //
+// SE_AUDITID_PRIVILEGED_SERVICE //
+// SE_AUDITID_PRIVILEGED_OBJECT //
+// //
+// //
+// //
+/////////////////////////////////////////////////////////////////////////////
+//
+//
+// SE_AUDITID_ASSIGN_SPECIAL_PRIV
+//
+// Category: SE_CATEGID_PRIVILEGE_USE
+//
+// Parameter Strings -
+//
+// 1 - User name
+//
+// 2 - domain name
+//
+// 3 - Logon ID string
+//
+// 4 - Privilege names (as 1 string, with formatting)
+//
+//
+//
+//
+//
+// MessageId: SE_AUDITID_ASSIGN_SPECIAL_PRIV
+//
+// MessageText:
+//
+// Special privileges assigned to new logon:%n
+// %tUser Name:%t%1%n
+// %tDomain:%t%t%2%n
+// %tLogon ID:%t%t%3%n
+// %tAssigned:%t%t%4
+//
+#define SE_AUDITID_ASSIGN_SPECIAL_PRIV ((ULONG)0x00000240L)
+
+//
+//
+// SE_AUDITID_PRIVILEGED_SERVICE
+//
+// Category: SE_CATEGID_PRIVILEGE_USE
+//
+// Parameter Strings -
+//
+// 1 - server name
+//
+// 2 - service name
+//
+// 3 - Primary User name
+//
+// 4 - Primary domain name
+//
+// 5 - Primary Logon ID string
+//
+// 6 - Client User name (or "-" if not impersonating)
+//
+// 7 - Client domain name (or "-" if not impersonating)
+//
+// 8 - Client Logon ID string (or "-" if not impersonating)
+//
+// 9 - Privilege names (as 1 string, with formatting)
+//
+//
+//
+//
+//
+// MessageId: SE_AUDITID_PRIVILEGED_SERVICE
+//
+// MessageText:
+//
+// Privileged Service Called:%n
+// %tServer:%t%t%1%n
+// %tService:%t%t%2%n
+// %tPrimary User Name:%t%3%n
+// %tPrimary Domain:%t%4%n
+// %tPrimary Logon ID:%t%5%n
+// %tClient User Name:%t%6%n
+// %tClient Domain:%t%7%n
+// %tClient Logon ID:%t%8%n
+// %tPrivileges:%t%9
+//
+#define SE_AUDITID_PRIVILEGED_SERVICE ((ULONG)0x00000241L)
+
+//
+//
+// SE_AUDITID_PRIVILEGED_OBJECT
+//
+// Category: SE_CATEGID_PRIVILEGE_USE
+//
+// Parameter Strings -
+//
+// 1 - Object type
+//
+// 2 - object name (if available)
+//
+// 3 - server name
+//
+// 4 - process ID string
+//
+// 5 - Primary User name
+//
+// 6 - Primary domain name
+//
+// 7 - Primary Logon ID string
+//
+// 8 - Client User name (or "-" if not impersonating)
+//
+// 9 - Client domain name (or "-" if not impersonating)
+//
+// 10 - Client Logon ID string (or "-" if not impersonating)
+//
+// 11 - Privilege names (as 1 string, with formatting)
+//
+//
+//
+//
+//
+// Jimk Original
+//
+//MessageId=0x0242
+// SymbolicName=SE_AUDITID_PRIVILEGED_OBJECT
+// Language=English
+//%tPrivileged object operation:%n
+//%t%tObject Type:%t%1%n
+//%t%tObject Name:%t%2%n
+//%t%tObject Server:%t%3%n
+//%t%tProcess ID:%t%4%n
+//%t%tPrimary User Name:%t%5%n
+//%t%tPrimary Domain:%t%6%n
+//%t%tPrimary Logon ID:%t%7%n
+//%t%tClient User Name:%t%8%n
+//%t%tClient Domain:%t%9%n
+//%t%tClient Logon ID:%t%10%n
+//%t%tPrivileges:%t%11
+//.
+//
+// MessageId: SE_AUDITID_PRIVILEGED_OBJECT
+//
+// MessageText:
+//
+// Privileged object operation:%n
+// %tObject Server:%t%1%n
+// %tObject Handle:%t%2%n
+// %tProcess ID:%t%3%n
+// %tPrimary User Name:%t%4%n
+// %tPrimary Domain:%t%5%n
+// %tPrimary Logon ID:%t%6%n
+// %tClient User Name:%t%7%n
+// %tClient Domain:%t%8%n
+// %tClient Logon ID:%t%9%n
+// %tPrivileges:%t%10
+//
+#define SE_AUDITID_PRIVILEGED_OBJECT ((ULONG)0x00000242L)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Messages for Category: SE_CATEGID_DETAILED_TRACKING //
+// //
+// Event IDs: //
+// SE_AUDITID_PROCESS_CREATED //
+// SE_AUDITID_PROCESS_EXIT //
+// SE_AUDITID_DUPLICATE_HANDLE //
+// SE_AUDITID_INDIRECT_REFERENCE //
+// //
+// //
+// //
+/////////////////////////////////////////////////////////////////////////////
+//
+//
+// SE_AUDITID_PROCESS_CREATED
+//
+// Category: SE_CATEGID_DETAILED_TRACKING
+//
+// Parameter Strings -
+//
+// 1 - process ID string
+//
+// 2 - Image file name (if available - otherwise "-")
+//
+// 3 - Creating process's ID
+//
+// 4 - User name (of new process)
+//
+// 5 - domain name (of new process)
+//
+// 6 - Logon ID string (of new process)
+//
+//
+// MessageId: SE_AUDITID_PROCESS_CREATED
+//
+// MessageText:
+//
+// A new process has been created:%n
+// %tNew Process ID:%t%1%n
+// %tImage File Name:%t%2%n
+// %tCreator Process ID:%t%3%n
+// %tUser Name:%t%4%n
+// %tDomain:%t%t%5%n
+// %tLogon ID:%t%t%6%n
+//
+#define SE_AUDITID_PROCESS_CREATED ((ULONG)0x00000250L)
+
+//
+//
+// SE_AUDITID_PROCESS_EXIT
+//
+// Category: SE_CATEGID_DETAILED_TRACKING
+//
+// Parameter Strings -
+//
+// 1 - process ID string
+//
+// 2 - User name
+//
+// 3 - domain name
+//
+// 4 - Logon ID string
+//
+//
+//
+//
+//
+// MessageId: SE_AUDITID_PROCESS_EXIT
+//
+// MessageText:
+//
+// A process has exited:%n
+// %tProcess ID:%t%1%n
+// %tUser Name:%t%2%n
+// %tDomain:%t%t%3%n
+// %tLogon ID:%t%t%4%n
+//
+#define SE_AUDITID_PROCESS_EXIT ((ULONG)0x00000251L)
+
+//
+//
+// SE_AUDITID_DUPLICATE_HANDLE
+//
+// Category: SE_CATEGID_DETAILED_TRACKING
+//
+// Parameter Strings -
+//
+// 1 - Origin (source) handle ID string
+//
+// 2 - Origin (source) process ID string
+//
+// 3 - New (Target) handle ID string
+//
+// 4 - Target process ID string
+//
+//
+//
+//
+// MessageId: SE_AUDITID_DUPLICATE_HANDLE
+//
+// MessageText:
+//
+// A handle to an object has been duplicated:%n
+// %tSource Handle ID:%t%1%n
+// %tSource Process ID:%t%2%n
+// %tTarget Handle ID:%t%3%n
+// %tTarget Process ID:%t%4%n
+//
+#define SE_AUDITID_DUPLICATE_HANDLE ((ULONG)0x00000252L)
+
+//
+//
+// SE_AUDITID_INDIRECT_REFERENCE
+//
+// Category: SE_CATEGID_DETAILED_TRACKING
+//
+// Parameter Strings -
+//
+// 1 - Object type
+//
+// 2 - object name (if available - otherwise "-")
+//
+// 3 - ID string of handle used to gain access
+//
+// 3 - server name
+//
+// 4 - process ID string
+//
+// 5 - primary User name
+//
+// 6 - primary domain name
+//
+// 7 - primary logon ID
+//
+// 8 - client User name
+//
+// 9 - client domain name
+//
+// 10 - client logon ID
+//
+// 11 - granted access names (with formatting)
+//
+//
+//
+// MessageId: SE_AUDITID_INDIRECT_REFERENCE
+//
+// MessageText:
+//
+// Indirect access to an object has been obtained:%n
+// %tObject Type:%t%1%n
+// %tObject Name:%t%2%n
+// %tProcess ID:%t%3%n
+// %tPrimary User Name:%t%4%n
+// %tPrimary Domain:%t%5%n
+// %tPrimary Logon ID:%t%6%n
+// %tClient User Name:%t%7%n
+// %tClient Domain:%t%8%n
+// %tClient Logon ID:%t%9%n
+// %tAccesses:%t%10%n
+//
+#define SE_AUDITID_INDIRECT_REFERENCE ((ULONG)0x00000253L)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Messages for Category: SE_CATEGID_POLICY_CHANGE //
+// //
+// Event IDs: //
+// SE_AUDITID_USER_RIGHT_ASSIGNED //
+// SE_AUDITID_USER_RIGHT_REMOVED //
+// SE_AUDITID_TRUSTED_DOMAIN_ADD //
+// SE_AUDITID_TRUSTED_DOMAIN_REM //
+// SE_AUDITID_POLICY_CHANGE //
+// //
+// //
+// //
+/////////////////////////////////////////////////////////////////////////////
+//
+//
+// SE_AUDITID_USER_RIGHT_ASSIGNED
+//
+// Category: SE_CATEGID_POLICY_CHANGE
+//
+// Parameter Strings -
+//
+// 1 - User right name
+//
+// 2 - SID string of account assigned the user right
+//
+// 3 - User name of subject assigning the right
+//
+// 4 - Domain name of subject assigning the right
+//
+// 5 - Logon ID string of subject assigning the right
+//
+//
+//
+//
+// MessageId: SE_AUDITID_USER_RIGHT_ASSIGNED
+//
+// MessageText:
+//
+// User Right Assigned:%n
+// %tUser Right:%t%1%n
+// %tAssigned To:%t%2%n
+// %tAssigned By:%n
+// %tUser Name:%t%3%n
+// %tDomain:%t%t%4%n
+// %tLogon ID:%t%t%5%n
+//
+#define SE_AUDITID_USER_RIGHT_ASSIGNED ((ULONG)0x00000260L)
+
+//
+//
+// SE_AUDITID_USER_RIGHT_REMOVED
+//
+// Category: SE_CATEGID_POLICY_CHANGE
+//
+// Parameter Strings -
+//
+// 1 - User right name
+//
+// 2 - SID string of account from which the user
+// right was removed
+//
+// 3 - User name of subject removing the right
+//
+// 4 - Domain name of subject removing the right
+//
+// 5 - Logon ID string of subject removing the right
+//
+//
+//
+// MessageId: SE_AUDITID_USER_RIGHT_REMOVED
+//
+// MessageText:
+//
+// User Right Removed:%n
+// %tUser Right:%t%1%n
+// %tRemoved From:%t%2%n
+// %tRemoved By:%n
+// %tUser Name:%t%3%n
+// %tDomain:%t%t%4%n
+// %tLogon ID:%t%t%5%n
+//
+#define SE_AUDITID_USER_RIGHT_REMOVED ((ULONG)0x00000261L)
+
+//
+//
+// SE_AUDITID_TRUSTED_DOMAIN_ADD
+//
+// Category: SE_CATEGID_POLICY_CHANGE
+//
+// Parameter Strings -
+//
+// 1 - Name of new trusted domain
+//
+// 2 - SID string of new trusted domain
+//
+// 3 - User name of subject adding the trusted domain
+//
+// 4 - Domain name of subject adding the trusted domain
+//
+// 5 - Logon ID string of subject adding the trusted domain
+//
+//
+// MessageId: SE_AUDITID_TRUSTED_DOMAIN_ADD
+//
+// MessageText:
+//
+// New Trusted Domain:%n
+// %tDomain Name:%t%1%n
+// %tDomain ID:%t%2%n
+// %tEstablished By:%n
+// %tUser Name:%t%3%n
+// %tDomain:%t%t%4%n
+// %tLogon ID:%t%t%5%n
+//
+#define SE_AUDITID_TRUSTED_DOMAIN_ADD ((ULONG)0x00000262L)
+
+//
+//
+// SE_AUDITID_TRUSTED_DOMAIN_REM
+//
+// Category: SE_CATEGID_POLICY_CHANGE
+//
+// Parameter Strings -
+//
+// 1 - Name of domain no longer trusted
+//
+// 2 - SID string of domain no longer trusted
+//
+// 3 - User name of subject removing the trusted domain
+//
+// 4 - Domain name of subject removing the trusted domain
+//
+// 5 - Logon ID string of subject removing the trusted domain
+//
+//
+//
+//
+// MessageId: SE_AUDITID_TRUSTED_DOMAIN_REM
+//
+// MessageText:
+//
+// Removing Trusted Domain:%n
+// %tDomain Name:%t%1%n
+// %tDomain ID:%t%2%n
+// %tRemoved By:%n
+// %tUser Name:%t%3%n
+// %tDomain:%t%t%4%n
+// %tLogon ID:%t%t%5%n
+//
+#define SE_AUDITID_TRUSTED_DOMAIN_REM ((ULONG)0x00000263L)
+
+//
+//
+// SE_AUDITID_POLICY_CHANGE
+//
+// Category: SE_CATEGID_POLICY_CHANGE
+//
+// Parameter Strings -
+//
+// 1 - System success audit status ("+" or "-")
+// 2 - System failure audit status ("+" or "-")
+//
+// 3 - Logon/Logoff success audit status ("+" or "-")
+// 4 - Logon/Logoff failure audit status ("+" or "-")
+//
+// 5 - Object Access success audit status ("+" or "-")
+// 6 - Object Access failure audit status ("+" or "-")
+//
+// 7 - Detailed Tracking success audit status ("+" or "-")
+// 8 - Detailed Tracking failure audit status ("+" or "-")
+//
+// 9 - Privilege Use success audit status ("+" or "-")
+// 10 - Privilege Use failure audit status ("+" or "-")
+//
+// 11 - Policy Change success audit status ("+" or "-")
+// 12 - Policy Change failure audit status ("+" or "-")
+//
+// 13 - Account Management success audit status ("+" or "-")
+// 14 - Account Management failure audit status ("+" or "-")
+//
+// 15 - Account Name of user that changed the policy
+//
+// 16 - Domain of user that changed the policy
+//
+// 17 - Logon ID of user that changed the policy
+//
+//
+//
+// MessageId: SE_AUDITID_POLICY_CHANGE
+//
+// MessageText:
+//
+// Audit Policy Change:%n
+// New Policy:%n
+// %tSuccess%tFailure%n
+// %t %1%t %2%tSystem%n
+// %t %3%t %4%tLogon/Logoff%n
+// %t %5%t %6%tObject Access%n
+// %t %7%t %8%tPrivilege Use%n
+// %t %9%t %10%tDetailed Tracking%n
+// %t %11%t %12%tPolicy Change%n
+// %t %13%t %14%tAccount Management%n%n
+// Changed By:%n
+// %tUser Name:%t%15%n
+// %tDomain Name:%t%16%n
+// %tLogon ID:%t%t%17
+//
+#define SE_AUDITID_POLICY_CHANGE ((ULONG)0x00000264L)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Messages for Category: SE_CATEGID_ACCOUNT_MANAGEMENT //
+// //
+// Event IDs: //
+// SE_AUDITID_USER_CREATED //
+// SE_AUDITID_USER_CHANGE //
+// SE_AUDITID_ACCOUNT_TYPE_CHANGE //
+// SE_AUDITID_USER_ENABLED //
+// SE_AUDITID_USER_PWD_CHANGED //
+// SE_AUDITID_USER_PWD_SET //
+// SE_AUDITID_USER_DISABLED //
+// SE_AUDITID_USER_DELETED //
+// SE_AUDITID_GLOBAL_GROUP_CREATED //
+// SE_AUDITID_GLOBAL_GROUP_ADD //
+// SE_AUDITID_GLOBAL_GROUP_REM //
+// SE_AUDITID_GLOBAL_GROUP_DELETED //
+// SE_AUDITID_LOCAL_GROUP_CREATED //
+// SE_AUDITID_LOCAL_GROUP_ADD //
+// SE_AUDITID_LOCAL_GROUP_REM //
+// SE_AUDITID_LOCAL_GROUP_DELETED //
+// SE_AUDITID_OTHER_ACCT_CHANGE //
+// SE_AUDITID_DOMAIN_POLICY_CHANGE //
+// //
+// //
+/////////////////////////////////////////////////////////////////////////////
+//
+//
+// SE_AUDITID_USER_CREATED
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of new user account
+//
+// 2 - domain of new user account
+//
+// 3 - SID string of new user account
+//
+// 4 - User name of subject creating the user account
+//
+// 5 - Domain name of subject creating the user account
+//
+// 6 - Logon ID string of subject creating the user account
+//
+// 7 - Privileges used to create the user account
+//
+//
+//
+// MessageId: SE_AUDITID_USER_CREATED
+//
+// MessageText:
+//
+// User Account Created:%n
+// %tNew Account Name:%t%1%n
+// %tNew Domain:%t%2%n
+// %tNew Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+// %tPrivileges%t%t%7%n
+//
+#define SE_AUDITID_USER_CREATED ((ULONG)0x00000270L)
+
+//
+//
+// SE_AUDITID_ACCOUNT_TYPE_CHANGE
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target user account
+//
+// 2 - domain of target user account
+//
+// 3 - SID string of target user account
+//
+// 4 - new account type string
+// (sigh, this isn't going to be locallizable)
+//
+// 5 - User name of subject changing the user account
+//
+// 6 - Domain name of subject changing the user account
+//
+// 7 - Logon ID string of subject changing the user account
+//
+//
+//
+// MessageId: SE_AUDITID_ACCOUNT_TYPE_CHANGE
+//
+// MessageText:
+//
+// User Account Type Change:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tNew Type:%t%4%n
+// %tCaller User Name:%t%5%n
+// %tCaller Domain:%t%6%n
+// %tCaller Logon ID:%t%7%n
+//
+#define SE_AUDITID_ACCOUNT_TYPE_CHANGE ((ULONG)0x00000271L)
+
+//
+//
+// SE_AUDITID_USER_ENABLED
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target user account
+//
+// 2 - domain of target user account
+//
+// 3 - SID string of target user account
+//
+// 4 - User name of subject changing the user account
+//
+// 5 - Domain name of subject changing the user account
+//
+// 6 - Logon ID string of subject changing the user account
+//
+//
+//
+// MessageId: SE_AUDITID_USER_ENABLED
+//
+// MessageText:
+//
+// User Account Enabled:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+//
+#define SE_AUDITID_USER_ENABLED ((ULONG)0x00000272L)
+
+//
+//
+// SE_AUDITID_USER_PWD_CHANGED
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target user account
+//
+// 2 - domain of target user account
+//
+// 3 - SID string of target user account
+//
+// 4 - User name of subject changing the user account
+//
+// 5 - Domain name of subject changing the user account
+//
+// 6 - Logon ID string of subject changing the user account
+//
+//
+//
+// MessageId: SE_AUDITID_USER_PWD_CHANGED
+//
+// MessageText:
+//
+// Change Password Attempt:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+// %tPrivileges:%t%7%n
+//
+#define SE_AUDITID_USER_PWD_CHANGED ((ULONG)0x00000273L)
+
+//
+//
+// SE_AUDITID_USER_PWD_SET
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target user account
+//
+// 2 - domain of target user account
+//
+// 3 - SID string of target user account
+//
+// 4 - User name of subject changing the user account
+//
+// 5 - Domain name of subject changing the user account
+//
+// 6 - Logon ID string of subject changing the user account
+//
+//
+//
+// MessageId: SE_AUDITID_USER_PWD_SET
+//
+// MessageText:
+//
+// User Account password set:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+//
+#define SE_AUDITID_USER_PWD_SET ((ULONG)0x00000274L)
+
+//
+//
+// SE_AUDITID_USER_DISABLED
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target user account
+//
+// 2 - domain of target user account
+//
+// 3 - SID string of target user account
+//
+// 4 - User name of subject changing the user account
+//
+// 5 - Domain name of subject changing the user account
+//
+// 6 - Logon ID string of subject changing the user account
+//
+//
+//
+// MessageId: SE_AUDITID_USER_DISABLED
+//
+// MessageText:
+//
+// User Account Disabled:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+//
+#define SE_AUDITID_USER_DISABLED ((ULONG)0x00000275L)
+
+//
+//
+// SE_AUDITID_USER_DELETED
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target account
+//
+// 2 - domain of target account
+//
+// 3 - SID string of target account
+//
+// 4 - User name of subject changing the account
+//
+// 5 - Domain name of subject changing the account
+//
+// 6 - Logon ID string of subject changing the account
+//
+//
+//
+// MessageId: SE_AUDITID_USER_DELETED
+//
+// MessageText:
+//
+// User Account Deleted:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+// %tPrivileges:%t%7%n
+//
+#define SE_AUDITID_USER_DELETED ((ULONG)0x00000276L)
+
+//
+//
+// SE_AUDITID_GLOBAL_GROUP_CREATED
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of new group account
+//
+// 2 - domain of new group account
+//
+// 3 - SID string of new group account
+//
+// 4 - User name of subject creating the account
+//
+// 5 - Domain name of subject creating the account
+//
+// 6 - Logon ID string of subject creating the account
+//
+//
+//
+// MessageId: SE_AUDITID_GLOBAL_GROUP_CREATED
+//
+// MessageText:
+//
+// Global Group Created:%n
+// %tNew Account Name:%t%1%n
+// %tNew Domain:%t%2%n
+// %tNew Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+// %tPrivileges:%t%7%n
+//
+#define SE_AUDITID_GLOBAL_GROUP_CREATED ((ULONG)0x00000277L)
+
+//
+//
+// SE_AUDITID_GLOBAL_GROUP_ADD
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - SID string of new member
+//
+// 2 - name of target account
+//
+// 3 - domain of target account
+//
+// 4 - SID string of target account
+//
+// 5 - User name of subject changing the account
+//
+// 6 - Domain name of subject changing the account
+//
+// 7 - Logon ID string of subject changing the account
+//
+//
+//
+// MessageId: SE_AUDITID_GLOBAL_GROUP_ADD
+//
+// MessageText:
+//
+// Global Group Member Added:%n
+// %tMember:%t%1%n
+// %tTarget Account Name:%t%2%n
+// %tTarget Domain:%t%3%n
+// %tTarget Account ID:%t%4%n
+// %tCaller User Name:%t%5%n
+// %tCaller Domain:%t%6%n
+// %tCaller Logon ID:%t%7%n
+// %tPrivileges:%t%8%n
+//
+#define SE_AUDITID_GLOBAL_GROUP_ADD ((ULONG)0x00000278L)
+
+//
+//
+// SE_AUDITID_GLOBAL_GROUP_REM
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - SID string of member being removed
+//
+// 2 - name of target account
+//
+// 3 - domain of target account
+//
+// 4 - SID string of target account
+//
+// 5 - User name of subject changing the account
+//
+// 6 - Domain name of subject changing the account
+//
+// 7 - Logon ID string of subject changing the account
+//
+//
+//
+// MessageId: SE_AUDITID_GLOBAL_GROUP_REM
+//
+// MessageText:
+//
+// Global Group Member Removed:%n
+// %tMember:%t%1%n
+// %tTarget Account Name:%t%2%n
+// %tTarget Domain:%t%3%n
+// %tTarget Account ID:%t%4%n
+// %tCaller User Name:%t%5%n
+// %tCaller Domain:%t%6%n
+// %tCaller Logon ID:%t%7%n
+// %tPrivileges:%t%8%n
+//
+#define SE_AUDITID_GLOBAL_GROUP_REM ((ULONG)0x00000279L)
+
+//
+//
+// SE_AUDITID_GLOBAL_GROUP_DELETED
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target account
+//
+// 2 - domain of target account
+//
+// 3 - SID string of target account
+//
+// 4 - User name of subject changing the account
+//
+// 5 - Domain name of subject changing the account
+//
+// 6 - Logon ID string of subject changing the account
+//
+//
+//
+// MessageId: SE_AUDITID_GLOBAL_GROUP_DELETED
+//
+// MessageText:
+//
+// Global Group Deleted:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+// %tPrivileges:%t%7%n
+//
+#define SE_AUDITID_GLOBAL_GROUP_DELETED ((ULONG)0x0000027AL)
+
+//
+//
+// SE_AUDITID_LOCAL_GROUP_CREATED
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of new group account
+//
+// 2 - domain of new group account
+//
+// 3 - SID string of new group account
+//
+// 4 - User name of subject creating the account
+//
+// 5 - Domain name of subject creating the account
+//
+// 6 - Logon ID string of subject creating the account
+//
+//
+//
+// MessageId: SE_AUDITID_LOCAL_GROUP_CREATED
+//
+// MessageText:
+//
+// Local Group Created:%n
+// %tNew Account Name:%t%1%n
+// %tNew Domain:%t%2%n
+// %tNew Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+// %tPrivileges:%t%7%n
+//
+#define SE_AUDITID_LOCAL_GROUP_CREATED ((ULONG)0x0000027BL)
+
+//
+//
+// SE_AUDITID_LOCAL_GROUP_ADD
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - SID string of new member
+//
+// 2 - name of target account
+//
+// 3 - domain of target account
+//
+// 4 - SID string of target account
+//
+// 5 - User name of subject changing the account
+//
+// 6 - Domain name of subject changing the account
+//
+// 7 - Logon ID string of subject changing the account
+//
+//
+//
+// MessageId: SE_AUDITID_LOCAL_GROUP_ADD
+//
+// MessageText:
+//
+// Local Group Member Added:%n
+// %tMember:%t%1%n
+// %tTarget Account Name:%t%2%n
+// %tTarget Domain:%t%t%3%n
+// %tTarget Account ID:%t%t%4%n
+// %tCaller User Name:%t%t%5%n
+// %tCaller Domain:%t%t%6%n
+// %tCaller Logon ID:%t%t%7%n
+// %tPrivileges:%t%8%n
+//
+#define SE_AUDITID_LOCAL_GROUP_ADD ((ULONG)0x0000027CL)
+
+//
+//
+// SE_AUDITID_LOCAL_GROUP_REM
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - SID string of member being removed
+//
+// 2 - name of target account
+//
+// 3 - domain of target account
+//
+// 4 - SID string of target account
+//
+// 5 - User name of subject changing the account
+//
+// 6 - Domain name of subject changing the account
+//
+// 7 - Logon ID string of subject changing the account
+//
+//
+//
+// MessageId: SE_AUDITID_LOCAL_GROUP_REM
+//
+// MessageText:
+//
+// Local Group Member Removed:%n
+// %tMember:%t%1%n
+// %tTarget Account Name:%t%2%n
+// %tTarget Domain:%t%t%3%n
+// %tTarget Account ID:%t%t%4%n
+// %tCaller User Name:%t%t%5%n
+// %tCaller Domain:%t%t%6%n
+// %tCaller Logon ID:%t%t%7%n
+// %tPrivileges:%t%t%8%n
+//
+#define SE_AUDITID_LOCAL_GROUP_REM ((ULONG)0x0000027DL)
+
+//
+//
+// SE_AUDITID_LOCAL_GROUP_DELETED
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target account
+//
+// 2 - domain of target account
+//
+// 3 - SID string of target account
+//
+// 4 - User name of subject changing the account
+//
+// 5 - Domain name of subject changing the account
+//
+// 6 - Logon ID string of subject changing the account
+//
+//
+//
+// MessageId: SE_AUDITID_LOCAL_GROUP_DELETED
+//
+// MessageText:
+//
+// Local Group Deleted:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+// %tPrivileges:%t%7%n
+//
+#define SE_AUDITID_LOCAL_GROUP_DELETED ((ULONG)0x0000027EL)
+
+//
+//
+// SE_AUDITID_LOCAL_GROUP_CHANGE
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target account
+//
+// 2 - domain of target account
+//
+// 3 - SID string of target account
+//
+// 4 - User name of subject changing the account
+//
+// 5 - Domain name of subject changing the account
+//
+// 6 - Logon ID string of subject changing the account
+//
+//
+//
+// MessageId: SE_AUDITID_LOCAL_GROUP_CHANGE
+//
+// MessageText:
+//
+// Local Group Changed:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+// %tPrivileges:%t%7%n
+//
+#define SE_AUDITID_LOCAL_GROUP_CHANGE ((ULONG)0x0000027FL)
+
+//
+//
+// SE_AUDITID_OTHER_ACCOUNT_CHANGE
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - Type of change (sigh, this isn't localizable)
+//
+// 2 - Type of changed object
+//
+// 3 - SID string (of changed object)
+//
+// 4 - User name of subject changing the account
+//
+// 5 - Domain name of subject changing the account
+//
+// 6 - Logon ID string of subject changing the account
+//
+//
+//
+// MessageId: SE_AUDITID_OTHER_ACCOUNT_CHANGE
+//
+// MessageText:
+//
+// General Account Database Change:%n
+// %tType of change:%t%1%n
+// %tObject Type:%t%2%n
+// %tObject Name:%t%3%n
+// %tObject ID:%t%4%n
+// %tCaller User Name:%t%5%n
+// %tCaller Domain:%t%6%n
+// %tCaller Logon ID:%t%7%n
+//
+#define SE_AUDITID_OTHER_ACCOUNT_CHANGE ((ULONG)0x00000280L)
+
+//
+//
+// SE_AUDITID_GLOBAL_GROUP_CHANGE
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target account
+//
+// 2 - domain of target account
+//
+// 3 - SID string of target account
+//
+// 4 - User name of subject changing the account
+//
+// 5 - Domain name of subject changing the account
+//
+// 6 - Logon ID string of subject changing the account
+//
+//
+//
+// MessageId: SE_AUDITID_GLOBAL_GROUP_CHANGE
+//
+// MessageText:
+//
+// Global Group Changed:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+// %tPrivileges:%t%7%n
+//
+#define SE_AUDITID_GLOBAL_GROUP_CHANGE ((ULONG)0x00000281L)
+
+//
+//
+// SE_AUDITID_USER_CHANGE
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - name of target user account
+//
+// 2 - domain of target user account
+//
+// 3 - SID string of target user account
+//
+// 4 - User name of subject changing the user account
+//
+// 5 - Domain name of subject changing the user account
+//
+// 6 - Logon ID string of subject changing the user account
+//
+//
+//
+// MessageId: SE_AUDITID_USER_CHANGE
+//
+// MessageText:
+//
+// User Account Changed:%n
+// %tTarget Account Name:%t%1%n
+// %tTarget Domain:%t%2%n
+// %tTarget Account ID:%t%3%n
+// %tCaller User Name:%t%4%n
+// %tCaller Domain:%t%5%n
+// %tCaller Logon ID:%t%6%n
+// %tPrivileges:%t%7%n
+//
+#define SE_AUDITID_USER_CHANGE ((ULONG)0x00000282L)
+
+//
+//
+// SE_AUDITID_DOMAIN_POLICY_CHANGE
+//
+// Category: SE_CATEGID_ACCOUNT_MANAGEMENT
+//
+// Parameter Strings -
+//
+// 1 - (unused)
+//
+// 2 - domain of target user account
+//
+// 3 - SID string of target user account
+//
+// 4 - User name of subject changing the user account
+//
+// 5 - Domain name of subject changing the user account
+//
+// 6 - Logon ID string of subject changing the user account
+//
+//
+//
+// MessageId: SE_AUDITID_DOMAIN_POLICY_CHANGE
+//
+// MessageText:
+//
+// Domain Policy Changed:%n
+// %tDomain:%t%t%1%n
+// %tDomain ID:%t%2%n
+// %tCaller User Name:%t%3%n
+// %tCaller Domain:%t%4%n
+// %tCaller Logon ID:%t%5%n
+// %tPrivileges:%t%6%n
+//
+#define SE_AUDITID_DOMAIN_POLICY_CHANGE ((ULONG)0x00000283L)
+
+/*lint +e767 */ // Resume checking for different macro definitions // winnt
+
+
+#endif // _MSAUDITE_
diff --git a/public/sdk/inc/msgflt.h b/public/sdk/inc/msgflt.h
new file mode 100644
index 000000000..4949737ef
--- /dev/null
+++ b/public/sdk/inc/msgflt.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: msgflt.h
+//
+// Contents: Replacement for msgflt.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/msobjs.h b/public/sdk/inc/msobjs.h
new file mode 100644
index 000000000..4585ff112
--- /dev/null
+++ b/public/sdk/inc/msobjs.h
@@ -0,0 +1,2580 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991 Microsoft Corporation
+
+Module Name:
+
+ msobjs.mc
+
+Abstract:
+
+ Constant definitions for the NT system-defined object access
+ types as we want them displayed in the event viewer for Auditing.
+
+
+
+ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
+ ! !
+ ! Note that this is a PARAMETER MESSAGE FILE from the event viewer's !
+ ! perspective, and so no messages with an ID lower than 0x1000 should !
+ ! be defined here. !
+ ! !
+ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
+
+
+ Please add new object-specific types at the end of this file...
+
+
+Author:
+
+ Jim Kelly (JimK) 14-Oct-1992
+
+Revision History:
+
+Notes:
+
+ The .h and .res forms of this file are generated from the .mc
+ form of the file (private\ntos\seaudit\msobjs\msobjs.mc). Please make
+ all changes to the .mc form of the file.
+
+
+
+--*/
+
+#ifndef _MSOBJS_
+#define _MSOBJS_
+
+/*lint -e767 */ // Don't complain about different definitions // winnt
+//
+// 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 the severity codes
+//
+
+
+//
+// MessageId: 0x00000600L (No symbolic name defined)
+//
+// MessageText:
+//
+// Unused message ID
+//
+
+
+// Message ID 600 is unused - just used to flush out the diagram
+
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// WELL KNOWN ACCESS TYPE NAMES //
+// //
+// Must be below 0x1000 //
+// //
+// //
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////
+//
+// Access Type = DELETE
+//
+//
+// MessageId: SE_ACCESS_NAME_DELETE
+//
+// MessageText:
+//
+// DELETE
+//
+#define SE_ACCESS_NAME_DELETE ((ULONG)0x00000601L)
+
+////////////////////////////////////////////////
+//
+// Access Type = READ_CONTROL
+//
+//
+// MessageId: SE_ACCESS_NAME_READ_CONTROL
+//
+// MessageText:
+//
+// READ_CONTROL
+//
+#define SE_ACCESS_NAME_READ_CONTROL ((ULONG)0x00000602L)
+
+////////////////////////////////////////////////
+//
+// Access Type = WRITE_DAC
+//
+//
+// MessageId: SE_ACCESS_NAME_WRITE_DAC
+//
+// MessageText:
+//
+// WRITE_DAC
+//
+#define SE_ACCESS_NAME_WRITE_DAC ((ULONG)0x00000603L)
+
+////////////////////////////////////////////////
+//
+// Access Type = WRITE_OWNER
+//
+//
+// MessageId: SE_ACCESS_NAME_WRITE_OWNER
+//
+// MessageText:
+//
+// WRITE_OWNER
+//
+#define SE_ACCESS_NAME_WRITE_OWNER ((ULONG)0x00000604L)
+
+////////////////////////////////////////////////
+//
+// Access Type = SYNCHRONIZE
+//
+//
+// MessageId: SE_ACCESS_NAME_SYNCHRONIZE
+//
+// MessageText:
+//
+// SYNCHRONIZE
+//
+#define SE_ACCESS_NAME_SYNCHRONIZE ((ULONG)0x00000605L)
+
+////////////////////////////////////////////////
+//
+// Access Type = ACCESS_SYSTEM_SECURITY
+//
+//
+// MessageId: SE_ACCESS_NAME_ACCESS_SYS_SEC
+//
+// MessageText:
+//
+// ACCESS_SYS_SEC
+//
+#define SE_ACCESS_NAME_ACCESS_SYS_SEC ((ULONG)0x00000606L)
+
+////////////////////////////////////////////////
+//
+// Access Type = MAXIMUM_ALLOWED
+//
+//
+// MessageId: SE_ACCESS_NAME_MAXIMUM_ALLOWED
+//
+// MessageText:
+//
+// MAX_ALLOWED
+//
+#define SE_ACCESS_NAME_MAXIMUM_ALLOWED ((ULONG)0x00000607L)
+
+
+//////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Names to use when specific access //
+// names can not be located //
+// //
+// Must be below 0x1000 //
+// //
+// //
+//////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////
+//
+// Access Type = Specific access, bits 0 - 15
+//
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_0
+//
+// MessageText:
+//
+// Unknown specific access (bit 0)
+//
+#define SE_ACCESS_NAME_SPECIFIC_0 ((ULONG)0x00000610L)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_1
+//
+// MessageText:
+//
+// Unknown specific access (bit 1)
+//
+#define SE_ACCESS_NAME_SPECIFIC_1 ((ULONG)0x00000611L)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_2
+//
+// MessageText:
+//
+// Unknown specific access (bit 2)
+//
+#define SE_ACCESS_NAME_SPECIFIC_2 ((ULONG)0x00000612L)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_3
+//
+// MessageText:
+//
+// Unknown specific access (bit 3)
+//
+#define SE_ACCESS_NAME_SPECIFIC_3 ((ULONG)0x00000613L)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_4
+//
+// MessageText:
+//
+// Unknown specific access (bit 4)
+//
+#define SE_ACCESS_NAME_SPECIFIC_4 ((ULONG)0x00000614L)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_5
+//
+// MessageText:
+//
+// Unknown specific access (bit 5)
+//
+#define SE_ACCESS_NAME_SPECIFIC_5 ((ULONG)0x00000615L)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_6
+//
+// MessageText:
+//
+// Unknown specific access (bit 6)
+//
+#define SE_ACCESS_NAME_SPECIFIC_6 ((ULONG)0x00000616L)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_7
+//
+// MessageText:
+//
+// Unknown specific access (bit 7)
+//
+#define SE_ACCESS_NAME_SPECIFIC_7 ((ULONG)0x00000617L)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_8
+//
+// MessageText:
+//
+// Unknown specific access (bit 8)
+//
+#define SE_ACCESS_NAME_SPECIFIC_8 ((ULONG)0x00000618L)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_9
+//
+// MessageText:
+//
+// Unknown specific access (bit 9)
+//
+#define SE_ACCESS_NAME_SPECIFIC_9 ((ULONG)0x00000619L)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_10
+//
+// MessageText:
+//
+// Unknown specific access (bit 10)
+//
+#define SE_ACCESS_NAME_SPECIFIC_10 ((ULONG)0x0000061AL)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_11
+//
+// MessageText:
+//
+// Unknown specific access (bit 11)
+//
+#define SE_ACCESS_NAME_SPECIFIC_11 ((ULONG)0x0000061BL)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_12
+//
+// MessageText:
+//
+// Unknown specific access (bit 12)
+//
+#define SE_ACCESS_NAME_SPECIFIC_12 ((ULONG)0x0000061CL)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_13
+//
+// MessageText:
+//
+// Unknown specific access (bit 13)
+//
+#define SE_ACCESS_NAME_SPECIFIC_13 ((ULONG)0x0000061DL)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_14
+//
+// MessageText:
+//
+// Unknown specific access (bit 14)
+//
+#define SE_ACCESS_NAME_SPECIFIC_14 ((ULONG)0x0000061EL)
+
+//
+// MessageId: SE_ACCESS_NAME_SPECIFIC_15
+//
+// MessageText:
+//
+// Unknown specific access (bit 15)
+//
+#define SE_ACCESS_NAME_SPECIFIC_15 ((ULONG)0x0000061FL)
+
+
+//////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Privilege names as we would like //
+// them displayed for auditing //
+// //
+// //
+// //
+// NOTE: Eventually we will need a way to extend this mechanism to allow //
+// for ISV and end-user defined privileges. One way would be to //
+// stick a mapping from source/privilege name to parameter message //
+// file offset in the registry. This is ugly and I don't like it, //
+// but it works. Something else would be prefereable. //
+// //
+// THIS IS A BIT OF A HACK RIGHT NOW. IT IS BASED UPON THE //
+// ASSUMPTION THAT ALL THE PRIVILEGES ARE WELL-KNOWN AND THAT //
+// THEIR VALUE ARE ALL CONTIGUOUS. //
+// //
+// //
+// //
+// //
+// //
+//////////////////////////////////////////////////////////////////////////////
+//
+// MessageId: SE_ADT_PRIV_BASE
+//
+// MessageText:
+//
+// Not used
+//
+#define SE_ADT_PRIV_BASE ((ULONG)0x00000641L)
+
+//
+// MessageId: SE_ADT_PRIV_3
+//
+// MessageText:
+//
+// Assign Primary Token Privilege
+//
+#define SE_ADT_PRIV_3 ((ULONG)0x00000643L)
+
+//
+// MessageId: SE_ADT_PRIV_4
+//
+// MessageText:
+//
+// Lock Memory Privilege
+//
+#define SE_ADT_PRIV_4 ((ULONG)0x00000644L)
+
+//
+// MessageId: SE_ADT_PRIV_5
+//
+// MessageText:
+//
+// Increase Memory Quota Privilege
+//
+#define SE_ADT_PRIV_5 ((ULONG)0x00000645L)
+
+//
+// MessageId: SE_ADT_PRIV_6
+//
+// MessageText:
+//
+// Unsolicited Input Privilege
+//
+#define SE_ADT_PRIV_6 ((ULONG)0x00000646L)
+
+//
+// MessageId: SE_ADT_PRIV_7
+//
+// MessageText:
+//
+// Trusted Computer Base Privilege
+//
+#define SE_ADT_PRIV_7 ((ULONG)0x00000647L)
+
+//
+// MessageId: SE_ADT_PRIV_8
+//
+// MessageText:
+//
+// Security Privilege
+//
+#define SE_ADT_PRIV_8 ((ULONG)0x00000648L)
+
+//
+// MessageId: SE_ADT_PRIV_9
+//
+// MessageText:
+//
+// Take Ownership Privilege
+//
+#define SE_ADT_PRIV_9 ((ULONG)0x00000649L)
+
+//
+// MessageId: SE_ADT_PRIV_10
+//
+// MessageText:
+//
+// Load/Unload Driver Privilege
+//
+#define SE_ADT_PRIV_10 ((ULONG)0x0000064AL)
+
+//
+// MessageId: SE_ADT_PRIV_11
+//
+// MessageText:
+//
+// Profile System Privilege
+//
+#define SE_ADT_PRIV_11 ((ULONG)0x0000064BL)
+
+//
+// MessageId: SE_ADT_PRIV_12
+//
+// MessageText:
+//
+// Set System Time Privilege
+//
+#define SE_ADT_PRIV_12 ((ULONG)0x0000064CL)
+
+//
+// MessageId: SE_ADT_PRIV_13
+//
+// MessageText:
+//
+// Profile Single Process Privilege
+//
+#define SE_ADT_PRIV_13 ((ULONG)0x0000064DL)
+
+//
+// MessageId: SE_ADT_PRIV_14
+//
+// MessageText:
+//
+// Increment Base Priority Privilege
+//
+#define SE_ADT_PRIV_14 ((ULONG)0x0000064EL)
+
+//
+// MessageId: SE_ADT_PRIV_15
+//
+// MessageText:
+//
+// Create Pagefile Privilege
+//
+#define SE_ADT_PRIV_15 ((ULONG)0x0000064FL)
+
+//
+// MessageId: SE_ADT_PRIV_16
+//
+// MessageText:
+//
+// Create Permanent Object Privilege
+//
+#define SE_ADT_PRIV_16 ((ULONG)0x00000650L)
+
+//
+// MessageId: SE_ADT_PRIV_17
+//
+// MessageText:
+//
+// Backup Privilege
+//
+#define SE_ADT_PRIV_17 ((ULONG)0x00000651L)
+
+//
+// MessageId: SE_ADT_PRIV_18
+//
+// MessageText:
+//
+// Restore From Backup Privilege
+//
+#define SE_ADT_PRIV_18 ((ULONG)0x00000652L)
+
+//
+// MessageId: SE_ADT_PRIV_19
+//
+// MessageText:
+//
+// Shutdown System Privilege
+//
+#define SE_ADT_PRIV_19 ((ULONG)0x00000653L)
+
+//
+// MessageId: SE_ADT_PRIV_20
+//
+// MessageText:
+//
+// Debug Privilege
+//
+#define SE_ADT_PRIV_20 ((ULONG)0x00000654L)
+
+//
+// MessageId: SE_ADT_PRIV_21
+//
+// MessageText:
+//
+// View or Change Audit Log Privilege
+//
+#define SE_ADT_PRIV_21 ((ULONG)0x00000655L)
+
+//
+// MessageId: SE_ADT_PRIV_22
+//
+// MessageText:
+//
+// Change Hardware Environment Privilege
+//
+#define SE_ADT_PRIV_22 ((ULONG)0x00000656L)
+
+//
+// MessageId: SE_ADT_PRIV_23
+//
+// MessageText:
+//
+// Change Notify (and Traverse) Privilege
+//
+#define SE_ADT_PRIV_23 ((ULONG)0x00000657L)
+
+//
+// MessageId: SE_ADT_PRIV_24
+//
+// MessageText:
+//
+// Remotely Shut System Down Privilege
+//
+#define SE_ADT_PRIV_24 ((ULONG)0x00000658L)
+
+
+//////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Executive object access types as //
+// we would like them displayed //
+// for auditing //
+// //
+// Executive objects are: //
+// //
+// Channel //
+// Device //
+// Directory //
+// Event //
+// EventPair //
+// File //
+// IoCompletion //
+// Key //
+// Mutant //
+// Port //
+// Process //
+// Profile //
+// Section //
+// Semaphore //
+// SymbolicLink //
+// Thread //
+// Timer //
+// Token //
+// Type //
+// //
+// //
+// Note that there are other kernel objects, but they //
+// are not visible outside of the executive and are so //
+// not subject to auditing. These objects include //
+// //
+// Adaptor //
+// Controller //
+// Driver //
+// //
+// //
+// //
+//////////////////////////////////////////////////////////////////////////////
+//
+// DEVICE object-specific access types
+//
+//
+// MessageId: MS_DEVICE_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Device Access Bit0
+//
+#define MS_DEVICE_ACCESS_BIT_0 ((ULONG)0x00001100L)
+
+//
+// MessageId: MS_DEVICE_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Device Access Bit 1
+//
+#define MS_DEVICE_ACCESS_BIT_1 ((ULONG)0x00001101L)
+
+//
+// MessageId: MS_DEVICE_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Device Access Bit 2
+//
+#define MS_DEVICE_ACCESS_BIT_2 ((ULONG)0x00001102L)
+
+//
+// MessageId: MS_DEVICE_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Device Access Bit 3
+//
+#define MS_DEVICE_ACCESS_BIT_3 ((ULONG)0x00001103L)
+
+//
+// MessageId: MS_DEVICE_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Device Access Bit 4
+//
+#define MS_DEVICE_ACCESS_BIT_4 ((ULONG)0x00001104L)
+
+//
+// MessageId: MS_DEVICE_ACCESS_BIT_5
+//
+// MessageText:
+//
+// Device Access Bit 5
+//
+#define MS_DEVICE_ACCESS_BIT_5 ((ULONG)0x00001105L)
+
+//
+// MessageId: MS_DEVICE_ACCESS_BIT_6
+//
+// MessageText:
+//
+// Device Access Bit 6
+//
+#define MS_DEVICE_ACCESS_BIT_6 ((ULONG)0x00001106L)
+
+//
+// MessageId: MS_DEVICE_ACCESS_BIT_7
+//
+// MessageText:
+//
+// Device Access Bit 7
+//
+#define MS_DEVICE_ACCESS_BIT_7 ((ULONG)0x00001107L)
+
+//
+// MessageId: MS_DEVICE_ACCESS_BIT_8
+//
+// MessageText:
+//
+// Device Access Bit 8
+//
+#define MS_DEVICE_ACCESS_BIT_8 ((ULONG)0x00001108L)
+
+//
+// object DIRECTORY object-specific access types
+//
+//
+// MessageId: MS_OBJECT_DIR_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query directory
+//
+#define MS_OBJECT_DIR_ACCESS_BIT_0 ((ULONG)0x00001110L)
+
+//
+// MessageId: MS_OBJECT_DIR_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Traverse
+//
+#define MS_OBJECT_DIR_ACCESS_BIT_1 ((ULONG)0x00001111L)
+
+//
+// MessageId: MS_OBJECT_DIR_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Create object in directory
+//
+#define MS_OBJECT_DIR_ACCESS_BIT_2 ((ULONG)0x00001112L)
+
+//
+// MessageId: MS_OBJECT_DIR_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Create sub-directory
+//
+#define MS_OBJECT_DIR_ACCESS_BIT_3 ((ULONG)0x00001113L)
+
+//
+// EVENT object-specific access types
+//
+//
+// MessageId: MS_EVENT_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query event state
+//
+#define MS_EVENT_ACCESS_BIT_0 ((ULONG)0x00001120L)
+
+//
+// MessageId: MS_EVENT_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Modify event state
+//
+#define MS_EVENT_ACCESS_BIT_1 ((ULONG)0x00001121L)
+
+//
+// EVENT-PAIR object-specific access types
+//
+//
+// Event pairs have no object-type-specific access bits.
+// they use synchronize.
+//
+// reserve 0x1130 for future use and continuity
+//
+//
+// File-specific access types
+// (these are funny because they sorta hafta take directories
+// and named pipes into account as well).
+//
+//
+// MessageId: MS_FILE_ACCESS_BIT_0
+//
+// MessageText:
+//
+// ReadData (or ListDirectory)
+//
+#define MS_FILE_ACCESS_BIT_0 ((ULONG)0x00001140L)
+
+//
+// MessageId: MS_FILE_ACCESS_BIT_1
+//
+// MessageText:
+//
+// WriteData (or AddFile)
+//
+#define MS_FILE_ACCESS_BIT_1 ((ULONG)0x00001141L)
+
+//
+// MessageId: MS_FILE_ACCESS_BIT_2
+//
+// MessageText:
+//
+// AppendData (or AddSubdirectory or CreatePipeInstance)
+//
+#define MS_FILE_ACCESS_BIT_2 ((ULONG)0x00001142L)
+
+//
+// MessageId: MS_FILE_ACCESS_BIT_3
+//
+// MessageText:
+//
+// ReadEA
+//
+#define MS_FILE_ACCESS_BIT_3 ((ULONG)0x00001143L)
+
+//
+// MessageId: MS_FILE_ACCESS_BIT_4
+//
+// MessageText:
+//
+// WriteEA
+//
+#define MS_FILE_ACCESS_BIT_4 ((ULONG)0x00001144L)
+
+//
+// MessageId: MS_FILE_ACCESS_BIT_5
+//
+// MessageText:
+//
+// Execute/Traverse
+//
+#define MS_FILE_ACCESS_BIT_5 ((ULONG)0x00001145L)
+
+//
+// MessageId: MS_FILE_ACCESS_BIT_6
+//
+// MessageText:
+//
+// DeleteChild
+//
+#define MS_FILE_ACCESS_BIT_6 ((ULONG)0x00001146L)
+
+//
+// MessageId: MS_FILE_ACCESS_BIT_7
+//
+// MessageText:
+//
+// ReadAttributes
+//
+#define MS_FILE_ACCESS_BIT_7 ((ULONG)0x00001147L)
+
+//
+// MessageId: MS_FILE_ACCESS_BIT_8
+//
+// MessageText:
+//
+// WriteAttributes
+//
+#define MS_FILE_ACCESS_BIT_8 ((ULONG)0x00001148L)
+
+//
+// KEY object-specific access types
+//
+//
+// MessageId: MS_KEY_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query key value
+//
+#define MS_KEY_ACCESS_BIT_0 ((ULONG)0x00001150L)
+
+//
+// MessageId: MS_KEY_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Set key value
+//
+#define MS_KEY_ACCESS_BIT_1 ((ULONG)0x00001151L)
+
+//
+// MessageId: MS_KEY_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Create sub-key
+//
+#define MS_KEY_ACCESS_BIT_2 ((ULONG)0x00001152L)
+
+//
+// MessageId: MS_KEY_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Enumerate sub-keys
+//
+#define MS_KEY_ACCESS_BIT_3 ((ULONG)0x00001153L)
+
+//
+// MessageId: MS_KEY_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Notify about changes to keys
+//
+#define MS_KEY_ACCESS_BIT_4 ((ULONG)0x00001154L)
+
+//
+// MessageId: MS_KEY_ACCESS_BIT_5
+//
+// MessageText:
+//
+// Create Link
+//
+#define MS_KEY_ACCESS_BIT_5 ((ULONG)0x00001155L)
+
+//
+// MUTANT object-specific access types
+//
+//
+// MessageId: MS_MUTANT_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query mutant state
+//
+#define MS_MUTANT_ACCESS_BIT_0 ((ULONG)0x00001160L)
+
+//
+// lpc PORT object-specific access types
+//
+//
+// MessageId: MS_LPC_PORT_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Communicate using port
+//
+#define MS_LPC_PORT_ACCESS_BIT_0 ((ULONG)0x00001170L)
+
+//
+// Process object-specific access types
+//
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Force process termination
+//
+#define MS_PROCESS_ACCESS_BIT_0 ((ULONG)0x00001180L)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Create new thread in process
+//
+#define MS_PROCESS_ACCESS_BIT_1 ((ULONG)0x00001181L)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Unused access bit
+//
+#define MS_PROCESS_ACCESS_BIT_2 ((ULONG)0x00001182L)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Perform virtual memory operation
+//
+#define MS_PROCESS_ACCESS_BIT_3 ((ULONG)0x00001183L)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Read from process memory
+//
+#define MS_PROCESS_ACCESS_BIT_4 ((ULONG)0x00001184L)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_5
+//
+// MessageText:
+//
+// Write to process memory
+//
+#define MS_PROCESS_ACCESS_BIT_5 ((ULONG)0x00001185L)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_6
+//
+// MessageText:
+//
+// Duplicate handle into or out of process
+//
+#define MS_PROCESS_ACCESS_BIT_6 ((ULONG)0x00001186L)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_7
+//
+// MessageText:
+//
+// Create a subprocess of process
+//
+#define MS_PROCESS_ACCESS_BIT_7 ((ULONG)0x00001187L)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_8
+//
+// MessageText:
+//
+// Set process quotas
+//
+#define MS_PROCESS_ACCESS_BIT_8 ((ULONG)0x00001188L)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_9
+//
+// MessageText:
+//
+// Set process information
+//
+#define MS_PROCESS_ACCESS_BIT_9 ((ULONG)0x00001189L)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_A
+//
+// MessageText:
+//
+// Query process information
+//
+#define MS_PROCESS_ACCESS_BIT_A ((ULONG)0x0000118AL)
+
+//
+// MessageId: MS_PROCESS_ACCESS_BIT_B
+//
+// MessageText:
+//
+// Set process termination port
+//
+#define MS_PROCESS_ACCESS_BIT_B ((ULONG)0x0000118BL)
+
+//
+// PROFILE object-specific access types
+//
+//
+// MessageId: MS_PROFILE_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Control profile
+//
+#define MS_PROFILE_ACCESS_BIT_0 ((ULONG)0x00001190L)
+
+//
+// SECTION object-specific access types
+//
+//
+// MessageId: MS_SECTION_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query section state
+//
+#define MS_SECTION_ACCESS_BIT_0 ((ULONG)0x000011A0L)
+
+//
+// MessageId: MS_SECTION_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Map section for write
+//
+#define MS_SECTION_ACCESS_BIT_1 ((ULONG)0x000011A1L)
+
+//
+// MessageId: MS_SECTION_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Map section for read
+//
+#define MS_SECTION_ACCESS_BIT_2 ((ULONG)0x000011A2L)
+
+//
+// MessageId: MS_SECTION_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Map section for execute
+//
+#define MS_SECTION_ACCESS_BIT_3 ((ULONG)0x000011A3L)
+
+//
+// MessageId: MS_SECTION_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Extend size
+//
+#define MS_SECTION_ACCESS_BIT_4 ((ULONG)0x000011A4L)
+
+//
+// SEMAPHORE object-specific access types
+//
+//
+// MessageId: MS_SEMAPHORE_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query semaphore state
+//
+#define MS_SEMAPHORE_ACCESS_BIT_0 ((ULONG)0x000011B0L)
+
+//
+// MessageId: MS_SEMAPHORE_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Modify semaphore state
+//
+#define MS_SEMAPHORE_ACCESS_BIT_1 ((ULONG)0x000011B1L)
+
+//
+// SymbolicLink object-specific access types
+//
+//
+// MessageId: MS_SYMB_LINK_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Use symbolic link
+//
+#define MS_SYMB_LINK_ACCESS_BIT_0 ((ULONG)0x000011C0L)
+
+//
+// Thread object-specific access types
+//
+//
+// MessageId: MS_THREAD_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Force thread termination
+//
+#define MS_THREAD_ACCESS_BIT_0 ((ULONG)0x000011D0L)
+
+//
+// MessageId: MS_THREAD_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Suspend or resume thread
+//
+#define MS_THREAD_ACCESS_BIT_1 ((ULONG)0x000011D1L)
+
+//
+// MessageId: MS_THREAD_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Send an alert to thread
+//
+#define MS_THREAD_ACCESS_BIT_2 ((ULONG)0x000011D2L)
+
+//
+// MessageId: MS_THREAD_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Get thread context
+//
+#define MS_THREAD_ACCESS_BIT_3 ((ULONG)0x000011D3L)
+
+//
+// MessageId: MS_THREAD_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Set thread context
+//
+#define MS_THREAD_ACCESS_BIT_4 ((ULONG)0x000011D4L)
+
+//
+// MessageId: MS_THREAD_ACCESS_BIT_5
+//
+// MessageText:
+//
+// Set thread information
+//
+#define MS_THREAD_ACCESS_BIT_5 ((ULONG)0x000011D5L)
+
+//
+// MessageId: MS_THREAD_ACCESS_BIT_6
+//
+// MessageText:
+//
+// Query thread information
+//
+#define MS_THREAD_ACCESS_BIT_6 ((ULONG)0x000011D6L)
+
+//
+// MessageId: MS_THREAD_ACCESS_BIT_7
+//
+// MessageText:
+//
+// Assign a token to the thread
+//
+#define MS_THREAD_ACCESS_BIT_7 ((ULONG)0x000011D7L)
+
+//
+// MessageId: MS_THREAD_ACCESS_BIT_8
+//
+// MessageText:
+//
+// Cause thread to directly impersonate another thread
+//
+#define MS_THREAD_ACCESS_BIT_8 ((ULONG)0x000011D8L)
+
+//
+// MessageId: MS_THREAD_ACCESS_BIT_9
+//
+// MessageText:
+//
+// Directly impersonate this thread
+//
+#define MS_THREAD_ACCESS_BIT_9 ((ULONG)0x000011D9L)
+
+//
+// TIMER object-specific access types
+//
+//
+// MessageId: MS_TIMER_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query timer state
+//
+#define MS_TIMER_ACCESS_BIT_0 ((ULONG)0x000011E0L)
+
+//
+// MessageId: MS_TIMER_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Modify timer state
+//
+#define MS_TIMER_ACCESS_BIT_1 ((ULONG)0x000011E1L)
+
+//
+// Token-specific access types
+//
+//
+// MessageId: MS_TOKEN_ACCESS_BIT_0
+//
+// MessageText:
+//
+// AssignAsPrimary
+//
+#define MS_TOKEN_ACCESS_BIT_0 ((ULONG)0x000011F0L)
+
+//
+// MessageId: MS_TOKEN_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Duplicate
+//
+#define MS_TOKEN_ACCESS_BIT_1 ((ULONG)0x000011F1L)
+
+//
+// MessageId: MS_TOKEN_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Impersonate
+//
+#define MS_TOKEN_ACCESS_BIT_2 ((ULONG)0x000011F2L)
+
+//
+// MessageId: MS_TOKEN_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Query
+//
+#define MS_TOKEN_ACCESS_BIT_3 ((ULONG)0x000011F3L)
+
+//
+// MessageId: MS_TOKEN_ACCESS_BIT_4
+//
+// MessageText:
+//
+// QuerySource
+//
+#define MS_TOKEN_ACCESS_BIT_4 ((ULONG)0x000011F4L)
+
+//
+// MessageId: MS_TOKEN_ACCESS_BIT_5
+//
+// MessageText:
+//
+// AdjustPrivileges
+//
+#define MS_TOKEN_ACCESS_BIT_5 ((ULONG)0x000011F5L)
+
+//
+// MessageId: MS_TOKEN_ACCESS_BIT_6
+//
+// MessageText:
+//
+// AdjustGroups
+//
+#define MS_TOKEN_ACCESS_BIT_6 ((ULONG)0x000011F6L)
+
+//
+// MessageId: MS_TOKEN_ACCESS_BIT_7
+//
+// MessageText:
+//
+// AdjustDefaultDacl
+//
+#define MS_TOKEN_ACCESS_BIT_7 ((ULONG)0x000011F7L)
+
+//
+// OBJECT_TYPE object-specific access types
+//
+//
+// MessageId: MS_OBJECT_TYPE_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Create instance of object type
+//
+#define MS_OBJECT_TYPE_ACCESS_BIT_0 ((ULONG)0x00001200L)
+
+//
+// IoCompletion object-specific access types
+//
+//
+// MessageId: MS_IO_COMPLETION_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query State
+//
+#define MS_IO_COMPLETION_ACCESS_BIT_0 ((ULONG)0x00001300L)
+
+//
+// MessageId: MS_IO_COMPLETION_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Modify State
+//
+#define MS_IO_COMPLETION_ACCESS_BIT_1 ((ULONG)0x00001301L)
+
+//
+// CHANNEL object-specific access types
+//
+//
+// MessageId: MS_CHANNEL_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Channel read message
+//
+#define MS_CHANNEL_ACCESS_BIT_0 ((ULONG)0x00001400L)
+
+//
+// MessageId: MS_CHANNEL_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Channel write message
+//
+#define MS_CHANNEL_ACCESS_BIT_1 ((ULONG)0x00001401L)
+
+//
+// MessageId: MS_CHANNEL_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Channel query information
+//
+#define MS_CHANNEL_ACCESS_BIT_2 ((ULONG)0x00001402L)
+
+//
+// MessageId: MS_CHANNEL_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Channel set information
+//
+#define MS_CHANNEL_ACCESS_BIT_3 ((ULONG)0x00001403L)
+
+
+//////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Security Acount Manager Object Access //
+// names as we would like them //
+// displayed for auditing //
+// //
+// SAM objects are: //
+// //
+// SAM_SERVER //
+// SAM_DOMAIN //
+// SAM_GROUP //
+// SAM_ALIAS //
+// SAM_USER //
+// //
+// //
+// //
+//////////////////////////////////////////////////////////////////////////////
+//
+// SAM_SERVER object-specific access types
+//
+//
+// MessageId: MS_SAM_SERVER_ACCESS_BIT_0
+//
+// MessageText:
+//
+// ConnectToServer
+//
+#define MS_SAM_SERVER_ACCESS_BIT_0 ((ULONG)0x00001500L)
+
+//
+// MessageId: MS_SAM_SERVER_ACCESS_BIT_1
+//
+// MessageText:
+//
+// ShutdownServer
+//
+#define MS_SAM_SERVER_ACCESS_BIT_1 ((ULONG)0x00001501L)
+
+//
+// MessageId: MS_SAM_SERVER_ACCESS_BIT_2
+//
+// MessageText:
+//
+// InitializeServer
+//
+#define MS_SAM_SERVER_ACCESS_BIT_2 ((ULONG)0x00001502L)
+
+//
+// MessageId: MS_SAM_SERVER_ACCESS_BIT_3
+//
+// MessageText:
+//
+// CreateDomain
+//
+#define MS_SAM_SERVER_ACCESS_BIT_3 ((ULONG)0x00001503L)
+
+//
+// MessageId: MS_SAM_SERVER_ACCESS_BIT_4
+//
+// MessageText:
+//
+// EnumerateDomains
+//
+#define MS_SAM_SERVER_ACCESS_BIT_4 ((ULONG)0x00001504L)
+
+//
+// MessageId: MS_SAM_SERVER_ACCESS_BIT_5
+//
+// MessageText:
+//
+// LookupDomain
+//
+#define MS_SAM_SERVER_ACCESS_BIT_5 ((ULONG)0x00001505L)
+
+//
+// SAM_DOMAIN object-specific access types
+//
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_0
+//
+// MessageText:
+//
+// ReadPasswordParameters
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_0 ((ULONG)0x00001510L)
+
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_1
+//
+// MessageText:
+//
+// WritePasswordParameters
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_1 ((ULONG)0x00001511L)
+
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_2
+//
+// MessageText:
+//
+// ReadOtherParameters
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_2 ((ULONG)0x00001512L)
+
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_3
+//
+// MessageText:
+//
+// WriteOtherParameters
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_3 ((ULONG)0x00001513L)
+
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_4
+//
+// MessageText:
+//
+// CreateUser
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_4 ((ULONG)0x00001514L)
+
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_5
+//
+// MessageText:
+//
+// CreateGlobalGroup
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_5 ((ULONG)0x00001515L)
+
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_6
+//
+// MessageText:
+//
+// CreateLocalGroup
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_6 ((ULONG)0x00001516L)
+
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_7
+//
+// MessageText:
+//
+// GetLocalGroupMembership
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_7 ((ULONG)0x00001517L)
+
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_8
+//
+// MessageText:
+//
+// ListAccounts
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_8 ((ULONG)0x00001518L)
+
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_9
+//
+// MessageText:
+//
+// LookupIDs
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_9 ((ULONG)0x00001519L)
+
+//
+// MessageId: MS_SAM_DOMAIN_ACCESS_BIT_A
+//
+// MessageText:
+//
+// AdministerServer
+//
+#define MS_SAM_DOMAIN_ACCESS_BIT_A ((ULONG)0x0000151AL)
+
+//
+// SAM_GROUP (global) object-specific access types
+//
+//
+// MessageId: MS_SAM_GLOBAL_GRP_ACCESS_BIT_0
+//
+// MessageText:
+//
+// ReadInformation
+//
+#define MS_SAM_GLOBAL_GRP_ACCESS_BIT_0 ((ULONG)0x00001520L)
+
+//
+// MessageId: MS_SAM_GLOBAL_GRP_ACCESS_BIT_1
+//
+// MessageText:
+//
+// WriteAccount
+//
+#define MS_SAM_GLOBAL_GRP_ACCESS_BIT_1 ((ULONG)0x00001521L)
+
+//
+// MessageId: MS_SAM_GLOBAL_GRP_ACCESS_BIT_2
+//
+// MessageText:
+//
+// AddMember
+//
+#define MS_SAM_GLOBAL_GRP_ACCESS_BIT_2 ((ULONG)0x00001522L)
+
+//
+// MessageId: MS_SAM_GLOBAL_GRP_ACCESS_BIT_3
+//
+// MessageText:
+//
+// RemoveMember
+//
+#define MS_SAM_GLOBAL_GRP_ACCESS_BIT_3 ((ULONG)0x00001523L)
+
+//
+// MessageId: MS_SAM_GLOBAL_GRP_ACCESS_BIT_4
+//
+// MessageText:
+//
+// ListMembers
+//
+#define MS_SAM_GLOBAL_GRP_ACCESS_BIT_4 ((ULONG)0x00001524L)
+
+//
+// SAM_ALIAS (local group) object-specific access types
+//
+//
+// MessageId: MS_SAM_LOCAL_GRP_ACCESS_BIT_0
+//
+// MessageText:
+//
+// AddMember
+//
+#define MS_SAM_LOCAL_GRP_ACCESS_BIT_0 ((ULONG)0x00001530L)
+
+//
+// MessageId: MS_SAM_LOCAL_GRP_ACCESS_BIT_1
+//
+// MessageText:
+//
+// RemoveMember
+//
+#define MS_SAM_LOCAL_GRP_ACCESS_BIT_1 ((ULONG)0x00001531L)
+
+//
+// MessageId: MS_SAM_LOCAL_GRP_ACCESS_BIT_2
+//
+// MessageText:
+//
+// ListMembers
+//
+#define MS_SAM_LOCAL_GRP_ACCESS_BIT_2 ((ULONG)0x00001532L)
+
+//
+// MessageId: MS_SAM_LOCAL_GRP_ACCESS_BIT_3
+//
+// MessageText:
+//
+// ReadInformation
+//
+#define MS_SAM_LOCAL_GRP_ACCESS_BIT_3 ((ULONG)0x00001533L)
+
+//
+// MessageId: MS_SAM_LOCAL_GRP_ACCESS_BIT_4
+//
+// MessageText:
+//
+// WriteAccount
+//
+#define MS_SAM_LOCAL_GRP_ACCESS_BIT_4 ((ULONG)0x00001534L)
+
+//
+// SAM_USER object-specific access types
+//
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_0
+//
+// MessageText:
+//
+// ReadGeneralInformation
+//
+#define MS_SAM_USER_ACCESS_BIT_0 ((ULONG)0x00001540L)
+
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_1
+//
+// MessageText:
+//
+// ReadPreferences
+//
+#define MS_SAM_USER_ACCESS_BIT_1 ((ULONG)0x00001541L)
+
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_2
+//
+// MessageText:
+//
+// WritePreferences
+//
+#define MS_SAM_USER_ACCESS_BIT_2 ((ULONG)0x00001542L)
+
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_3
+//
+// MessageText:
+//
+// ReadLogon
+//
+#define MS_SAM_USER_ACCESS_BIT_3 ((ULONG)0x00001543L)
+
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_4
+//
+// MessageText:
+//
+// ReadAccount
+//
+#define MS_SAM_USER_ACCESS_BIT_4 ((ULONG)0x00001544L)
+
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_5
+//
+// MessageText:
+//
+// WriteAccount
+//
+#define MS_SAM_USER_ACCESS_BIT_5 ((ULONG)0x00001545L)
+
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_6
+//
+// MessageText:
+//
+// ChangePassword (with knowledge of old password)
+//
+#define MS_SAM_USER_ACCESS_BIT_6 ((ULONG)0x00001546L)
+
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_7
+//
+// MessageText:
+//
+// SetPassword (without knowledge of old password)
+//
+#define MS_SAM_USER_ACCESS_BIT_7 ((ULONG)0x00001547L)
+
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_8
+//
+// MessageText:
+//
+// ListGroups
+//
+#define MS_SAM_USER_ACCESS_BIT_8 ((ULONG)0x00001548L)
+
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_9
+//
+// MessageText:
+//
+// ReadGroupMembership
+//
+#define MS_SAM_USER_ACCESS_BIT_9 ((ULONG)0x00001549L)
+
+//
+// MessageId: MS_SAM_USER_ACCESS_BIT_A
+//
+// MessageText:
+//
+// ChangeGroupMembership
+//
+#define MS_SAM_USER_ACCESS_BIT_A ((ULONG)0x0000154AL)
+
+
+//////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Local Security Authority Object Access //
+// names as we would like them //
+// displayed for auditing //
+// //
+// LSA objects are: //
+// //
+// PolicyObject //
+// SecretObject //
+// TrustedDomainObject //
+// UserAccountObject //
+// //
+// //
+// //
+//////////////////////////////////////////////////////////////////////////////
+//
+// lsa POLICY object-specific access types
+//
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_0
+//
+// MessageText:
+//
+// View non-sensitive policy information
+//
+#define MS_LSA_POLICY_ACCESS_BIT_0 ((ULONG)0x00001600L)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_1
+//
+// MessageText:
+//
+// View system audit requirements
+//
+#define MS_LSA_POLICY_ACCESS_BIT_1 ((ULONG)0x00001601L)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Get sensitive policy information
+//
+#define MS_LSA_POLICY_ACCESS_BIT_2 ((ULONG)0x00001602L)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Modify domain trust relationships
+//
+#define MS_LSA_POLICY_ACCESS_BIT_3 ((ULONG)0x00001603L)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Create special accounts (for assignment of user rights)
+//
+#define MS_LSA_POLICY_ACCESS_BIT_4 ((ULONG)0x00001604L)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_5
+//
+// MessageText:
+//
+// Create a secret object
+//
+#define MS_LSA_POLICY_ACCESS_BIT_5 ((ULONG)0x00001605L)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_6
+//
+// MessageText:
+//
+// Create a privilege
+//
+#define MS_LSA_POLICY_ACCESS_BIT_6 ((ULONG)0x00001606L)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_7
+//
+// MessageText:
+//
+// Set default quota limits
+//
+#define MS_LSA_POLICY_ACCESS_BIT_7 ((ULONG)0x00001607L)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_8
+//
+// MessageText:
+//
+// Change system audit requirements
+//
+#define MS_LSA_POLICY_ACCESS_BIT_8 ((ULONG)0x00001608L)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_9
+//
+// MessageText:
+//
+// Administer audit log attributes
+//
+#define MS_LSA_POLICY_ACCESS_BIT_9 ((ULONG)0x00001609L)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_A
+//
+// MessageText:
+//
+// Enable/Disable LSA
+//
+#define MS_LSA_POLICY_ACCESS_BIT_A ((ULONG)0x0000160AL)
+
+//
+// MessageId: MS_LSA_POLICY_ACCESS_BIT_B
+//
+// MessageText:
+//
+// Lookup Names/SIDs
+//
+#define MS_LSA_POLICY_ACCESS_BIT_B ((ULONG)0x0000160BL)
+
+//
+// lsa SecretObject object-specific access types
+//
+//
+// MessageId: MS_LSA_SECRET_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Change secret value
+//
+#define MS_LSA_SECRET_ACCESS_BIT_0 ((ULONG)0x00001610L)
+
+//
+// MessageId: MS_LSA_SECRET_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Query secret value
+//
+#define MS_LSA_SECRET_ACCESS_BIT_1 ((ULONG)0x00001611L)
+
+//
+// lsa TrustedDomainObject object-specific access types
+//
+//
+// MessageId: MS_LSA_TRUST_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query trusted domain name/SID
+//
+#define MS_LSA_TRUST_ACCESS_BIT_0 ((ULONG)0x00001620L)
+
+//
+// MessageId: MS_LSA_TRUST_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Retrieve the controllers in the trusted domain
+//
+#define MS_LSA_TRUST_ACCESS_BIT_1 ((ULONG)0x00001621L)
+
+//
+// MessageId: MS_LSA_TRUST_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Change the controllers in the trusted domain
+//
+#define MS_LSA_TRUST_ACCESS_BIT_2 ((ULONG)0x00001622L)
+
+//
+// MessageId: MS_LSA_TRUST_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Query the Posix ID offset assigned to the trusted domain
+//
+#define MS_LSA_TRUST_ACCESS_BIT_3 ((ULONG)0x00001623L)
+
+//
+// MessageId: MS_LSA_TRUST_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Change the Posix ID offset assigned to the trusted domain
+//
+#define MS_LSA_TRUST_ACCESS_BIT_4 ((ULONG)0x00001624L)
+
+//
+// lsa UserAccount (privileged account) object-specific access types
+//
+//
+// MessageId: MS_LSA_ACCOUNT_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query account information
+//
+#define MS_LSA_ACCOUNT_ACCESS_BIT_0 ((ULONG)0x00001630L)
+
+//
+// MessageId: MS_LSA_ACCOUNT_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Change privileges assigned to account
+//
+#define MS_LSA_ACCOUNT_ACCESS_BIT_1 ((ULONG)0x00001631L)
+
+//
+// MessageId: MS_LSA_ACCOUNT_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Change quotas assigned to account
+//
+#define MS_LSA_ACCOUNT_ACCESS_BIT_2 ((ULONG)0x00001632L)
+
+//
+// MessageId: MS_LSA_ACCOUNT_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Change logon capabilities assigned to account
+//
+#define MS_LSA_ACCOUNT_ACCESS_BIT_3 ((ULONG)0x00001633L)
+
+
+//////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Window Station Object Access //
+// names as we would like them //
+// displayed for auditing //
+// //
+// Window Station objects are: //
+// //
+// WindowStation //
+// Desktop //
+// //
+// //
+// //
+//////////////////////////////////////////////////////////////////////////////
+//
+// WINDOW_STATION object-specific access types
+//
+//
+// MessageId: MS_WIN_STA_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Enumerate desktops
+//
+#define MS_WIN_STA_ACCESS_BIT_0 ((ULONG)0x00001A00L)
+
+//
+// MessageId: MS_WIN_STA_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Read attributes
+//
+#define MS_WIN_STA_ACCESS_BIT_1 ((ULONG)0x00001A01L)
+
+//
+// MessageId: MS_WIN_STA_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Access Clipboard
+//
+#define MS_WIN_STA_ACCESS_BIT_2 ((ULONG)0x00001A02L)
+
+//
+// MessageId: MS_WIN_STA_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Create desktop
+//
+#define MS_WIN_STA_ACCESS_BIT_3 ((ULONG)0x00001A03L)
+
+//
+// MessageId: MS_WIN_STA_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Write attributes
+//
+#define MS_WIN_STA_ACCESS_BIT_4 ((ULONG)0x00001A04L)
+
+//
+// MessageId: MS_WIN_STA_ACCESS_BIT_5
+//
+// MessageText:
+//
+// Access global atoms
+//
+#define MS_WIN_STA_ACCESS_BIT_5 ((ULONG)0x00001A05L)
+
+//
+// MessageId: MS_WIN_STA_ACCESS_BIT_6
+//
+// MessageText:
+//
+// Exit windows
+//
+#define MS_WIN_STA_ACCESS_BIT_6 ((ULONG)0x00001A06L)
+
+//
+// MessageId: MS_WIN_STA_ACCESS_BIT_7
+//
+// MessageText:
+//
+// Unused Access Flag
+//
+#define MS_WIN_STA_ACCESS_BIT_7 ((ULONG)0x00001A07L)
+
+//
+// MessageId: MS_WIN_STA_ACCESS_BIT_8
+//
+// MessageText:
+//
+// Include this windowstation in enumerations
+//
+#define MS_WIN_STA_ACCESS_BIT_8 ((ULONG)0x00001A08L)
+
+//
+// MessageId: MS_WIN_STA_ACCESS_BIT_9
+//
+// MessageText:
+//
+// Read screen
+//
+#define MS_WIN_STA_ACCESS_BIT_9 ((ULONG)0x00001A09L)
+
+//
+// DESKTOP object-specific access types
+//
+//
+// MessageId: MS_DESKTOP_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Read Objects
+//
+#define MS_DESKTOP_ACCESS_BIT_0 ((ULONG)0x00001A10L)
+
+//
+// MessageId: MS_DESKTOP_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Create window
+//
+#define MS_DESKTOP_ACCESS_BIT_1 ((ULONG)0x00001A11L)
+
+//
+// MessageId: MS_DESKTOP_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Create menu
+//
+#define MS_DESKTOP_ACCESS_BIT_2 ((ULONG)0x00001A12L)
+
+//
+// MessageId: MS_DESKTOP_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Hook control
+//
+#define MS_DESKTOP_ACCESS_BIT_3 ((ULONG)0x00001A13L)
+
+//
+// MessageId: MS_DESKTOP_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Journal (record)
+//
+#define MS_DESKTOP_ACCESS_BIT_4 ((ULONG)0x00001A14L)
+
+//
+// MessageId: MS_DESKTOP_ACCESS_BIT_5
+//
+// MessageText:
+//
+// Journal (playback)
+//
+#define MS_DESKTOP_ACCESS_BIT_5 ((ULONG)0x00001A15L)
+
+//
+// MessageId: MS_DESKTOP_ACCESS_BIT_6
+//
+// MessageText:
+//
+// Include this desktop in enumerations
+//
+#define MS_DESKTOP_ACCESS_BIT_6 ((ULONG)0x00001A16L)
+
+//
+// MessageId: MS_DESKTOP_ACCESS_BIT_7
+//
+// MessageText:
+//
+// Write objects
+//
+#define MS_DESKTOP_ACCESS_BIT_7 ((ULONG)0x00001A17L)
+
+//
+// MessageId: MS_DESKTOP_ACCESS_BIT_8
+//
+// MessageText:
+//
+// Switch to this desktop
+//
+#define MS_DESKTOP_ACCESS_BIT_8 ((ULONG)0x00001A18L)
+
+
+//////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Print Server Object Access //
+// names as we would like them //
+// displayed for auditing //
+// //
+// Print Server objects are: //
+// //
+// Server //
+// Printer //
+// Document //
+// //
+// //
+//////////////////////////////////////////////////////////////////////////////
+//
+// print-server SERVER object-specific access types
+//
+//
+// MessageId: MS_PRINT_SERVER_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Administer print server
+//
+#define MS_PRINT_SERVER_ACCESS_BIT_0 ((ULONG)0x00001B00L)
+
+//
+// MessageId: MS_PRINT_SERVER_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Enumerate printers
+//
+#define MS_PRINT_SERVER_ACCESS_BIT_1 ((ULONG)0x00001B01L)
+
+//
+// print-server PRINTER object-specific access types
+//
+// Note that these are based at 0x1B10, but the first
+// two bits aren't defined.
+//
+//
+// MessageId: MS_PRINTER_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Full Control
+//
+#define MS_PRINTER_ACCESS_BIT_0 ((ULONG)0x00001B12L)
+
+//
+// MessageId: MS_PRINTER_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Print
+//
+#define MS_PRINTER_ACCESS_BIT_1 ((ULONG)0x00001B13L)
+
+//
+// print-server DOCUMENT object-specific access types
+//
+// Note that these are based at 0x1B20, but the first
+// four bits aren't defined.
+//
+// MessageId: MS_PRINTER_DOC_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Administer Document
+//
+#define MS_PRINTER_DOC_ACCESS_BIT_0 ((ULONG)0x00001B14L)
+
+
+//////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// Service Controller Object Access //
+// names as we would like them //
+// displayed for auditing //
+// //
+// Service Controller objects are: //
+// //
+// SC_MANAGER Object //
+// SERVICE Object //
+// //
+// //
+//////////////////////////////////////////////////////////////////////////////
+//
+// SERVICE CONTROLLER "SC_MANAGER Object" object-specific access types
+//
+//
+// MessageId: MS_SC_MANAGER_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Connect to service controller
+//
+#define MS_SC_MANAGER_ACCESS_BIT_0 ((ULONG)0x00001C00L)
+
+//
+// MessageId: MS_SC_MANAGER_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Create a new service
+//
+#define MS_SC_MANAGER_ACCESS_BIT_1 ((ULONG)0x00001C01L)
+
+//
+// MessageId: MS_SC_MANAGER_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Enumerate services
+//
+#define MS_SC_MANAGER_ACCESS_BIT_2 ((ULONG)0x00001C02L)
+
+//
+// MessageId: MS_SC_MANAGER_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Lock service database for exclusive access
+//
+#define MS_SC_MANAGER_ACCESS_BIT_3 ((ULONG)0x00001C03L)
+
+//
+// MessageId: MS_SC_MANAGER_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Query service database lock state
+//
+#define MS_SC_MANAGER_ACCESS_BIT_4 ((ULONG)0x00001C04L)
+
+//
+// MessageId: MS_SC_MANAGER_ACCESS_BIT_5
+//
+// MessageText:
+//
+// Set last-known-good state of service database
+//
+#define MS_SC_MANAGER_ACCESS_BIT_5 ((ULONG)0x00001C05L)
+
+//
+// SERVICE CONTROLLER "SERVICE Object" object-specific access types
+//
+//
+// MessageId: MS_SC_SERVICE_ACCESS_BIT_0
+//
+// MessageText:
+//
+// Query service configuration information
+//
+#define MS_SC_SERVICE_ACCESS_BIT_0 ((ULONG)0x00001C10L)
+
+//
+// MessageId: MS_SC_SERVICE_ACCESS_BIT_1
+//
+// MessageText:
+//
+// Set service configuration information
+//
+#define MS_SC_SERVICE_ACCESS_BIT_1 ((ULONG)0x00001C11L)
+
+//
+// MessageId: MS_SC_SERVICE_ACCESS_BIT_2
+//
+// MessageText:
+//
+// Query status of service
+//
+#define MS_SC_SERVICE_ACCESS_BIT_2 ((ULONG)0x00001C12L)
+
+//
+// MessageId: MS_SC_SERVICE_ACCESS_BIT_3
+//
+// MessageText:
+//
+// Enumerate dependencies of service
+//
+#define MS_SC_SERVICE_ACCESS_BIT_3 ((ULONG)0x00001C13L)
+
+//
+// MessageId: MS_SC_SERVICE_ACCESS_BIT_4
+//
+// MessageText:
+//
+// Start the service
+//
+#define MS_SC_SERVICE_ACCESS_BIT_4 ((ULONG)0x00001C14L)
+
+//
+// MessageId: MS_SC_SERVICE_ACCESS_BIT_5
+//
+// MessageText:
+//
+// Stop the service
+//
+#define MS_SC_SERVICE_ACCESS_BIT_5 ((ULONG)0x00001C15L)
+
+//
+// MessageId: MS_SC_SERVICE_ACCESS_BIT_6
+//
+// MessageText:
+//
+// Pause or continue the service
+//
+#define MS_SC_SERVICE_ACCESS_BIT_6 ((ULONG)0x00001C16L)
+
+//
+// MessageId: MS_SC_SERVICE_ACCESS_BIT_7
+//
+// MessageText:
+//
+// Query information from service
+//
+#define MS_SC_SERVICE_ACCESS_BIT_7 ((ULONG)0x00001C17L)
+
+//
+// MessageId: MS_SC_SERVICE_ACCESS_BIT_8
+//
+// MessageText:
+//
+// Issue service-specific control commands
+//
+#define MS_SC_SERVICE_ACCESS_BIT_8 ((ULONG)0x00001C18L)
+
+
+//////////////////////////////////////////////////////////////////////////////
+// //
+// //
+// NetDDE Object Access //
+// names as we would like them //
+// displayed for auditing //
+// //
+// NetDDE objects are: //
+// //
+// DDE Share //
+// //
+// //
+//////////////////////////////////////////////////////////////////////////////
+//
+// Net DDE object-specific access types
+//
+//
+// DDE Share object-specific access types
+//
+//
+// MessageId: MS_DDE_SHARE_ACCESS_BIT_0
+//
+// MessageText:
+//
+// DDE Share Read
+//
+#define MS_DDE_SHARE_ACCESS_BIT_0 ((ULONG)0x00001D00L)
+
+//
+// MessageId: MS_DDE_SHARE_ACCESS_BIT_1
+//
+// MessageText:
+//
+// DDE Share Write
+//
+#define MS_DDE_SHARE_ACCESS_BIT_1 ((ULONG)0x00001D01L)
+
+//
+// MessageId: MS_DDE_SHARE_ACCESS_BIT_2
+//
+// MessageText:
+//
+// DDE Share Initiate Static
+//
+#define MS_DDE_SHARE_ACCESS_BIT_2 ((ULONG)0x00001D02L)
+
+//
+// MessageId: MS_DDE_SHARE_ACCESS_BIT_3
+//
+// MessageText:
+//
+// DDE Share Initiate Link
+//
+#define MS_DDE_SHARE_ACCESS_BIT_3 ((ULONG)0x00001D03L)
+
+//
+// MessageId: MS_DDE_SHARE_ACCESS_BIT_4
+//
+// MessageText:
+//
+// DDE Share Request
+//
+#define MS_DDE_SHARE_ACCESS_BIT_4 ((ULONG)0x00001D04L)
+
+//
+// MessageId: MS_DDE_SHARE_ACCESS_BIT_5
+//
+// MessageText:
+//
+// DDE Share Advise
+//
+#define MS_DDE_SHARE_ACCESS_BIT_5 ((ULONG)0x00001D05L)
+
+//
+// MessageId: MS_DDE_SHARE_ACCESS_BIT_6
+//
+// MessageText:
+//
+// DDE Share Poke
+//
+#define MS_DDE_SHARE_ACCESS_BIT_6 ((ULONG)0x00001D06L)
+
+//
+// MessageId: MS_DDE_SHARE_ACCESS_BIT_7
+//
+// MessageText:
+//
+// DDE Share Execute
+//
+#define MS_DDE_SHARE_ACCESS_BIT_7 ((ULONG)0x00001D07L)
+
+//
+// MessageId: MS_DDE_SHARE_ACCESS_BIT_8
+//
+// MessageText:
+//
+// DDE Share Add Items
+//
+#define MS_DDE_SHARE_ACCESS_BIT_8 ((ULONG)0x00001D08L)
+
+//
+// MessageId: MS_DDE_SHARE_ACCESS_BIT_9
+//
+// MessageText:
+//
+// DDE Share List Items
+//
+#define MS_DDE_SHARE_ACCESS_BIT_9 ((ULONG)0x00001D09L)
+
+/*lint +e767 */ // Resume checking for different macro definitions // winnt
+
+
+#endif // _MSOBJS_
diff --git a/public/sdk/inc/mspab.h b/public/sdk/inc/mspab.h
new file mode 100644
index 000000000..45fefa024
--- /dev/null
+++ b/public/sdk/inc/mspab.h
@@ -0,0 +1,69 @@
+/*
+ * M S P A B . H
+ *
+ * Public definitions for the Microsoft Personal Address Book
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+/*
+ * Microsoft Personal Address Book Provider ID
+ * -------------------------------------------
+ */
+
+#define PAB_PROVIDER_ID \
+{ \
+ 0xB5, 0x3b, 0xc2, 0xc0, \
+ 0x2c, 0x77, 0x10, 0x1a, \
+ 0xa1, 0xbc, 0x08, 0x00, \
+ 0x2b, 0x2a, 0x56, 0xc2 \
+}
+
+
+/*
+ * Messaging Service Properties
+ * ----------------------------
+ *
+ * The following properties are required to completely configure
+ * the Microsoft Personal Address Book messaging service with
+ * IMsgServiceAdmin::ConfigureMsgService() if UI is not requested
+ * by passing the UI_SERVICE flag.
+ */
+
+/*
+ * Fully qualified pathname of .PAB file to use
+ */
+#define PR_PAB_PATH PROP_TAG( PT_TSTRING, 0x6600 )
+#define PR_PAB_PATH_W PROP_TAG( PT_UNICODE, 0x6600 )
+#define PR_PAB_PATH_A PROP_TAG( PT_STRING8, 0x6600 )
+
+/*
+ * The following additional properties may also be passed to
+ * customize the configuration.
+ */
+
+/*
+ * PR_DISPLAY_NAME
+ * The display name to be used for the PAB in the address
+ * book hierarchy.
+ *
+ * PR_COMMENT
+ * A comment to be associated with the PAB.
+ *
+ * PR_PAB_DET_DIR_VIEW_BY
+ * Determines how names of entries in the PAB with separate first
+ * and last names are displayed.
+ *
+ * Possible values are:
+ *
+ * PAB_DIR_VIEW_FIRST_THEN_LAST First name followed by last name
+ * (default) (e.g. "Dave Olsen").
+ *
+ * PAB_DIR_VIEW_LAST_THEN_FIRST Last name followed by separator
+ * followed by first name
+ * (e.g. "Olsen, Dave").
+ */
+#define PR_PAB_DET_DIR_VIEW_BY PROP_TAG( PT_LONG, 0x6601 )
+
+#define PAB_DIR_VIEW_FIRST_THEN_LAST 0
+#define PAB_DIR_VIEW_LAST_THEN_FIRST 1
diff --git a/public/sdk/inc/mspst.h b/public/sdk/inc/mspst.h
new file mode 100644
index 000000000..f33be396d
--- /dev/null
+++ b/public/sdk/inc/mspst.h
@@ -0,0 +1,96 @@
+/*
+ * M S P S T . H
+ *
+ * This file lists internal properties of the Microsoft Personal
+ * Information Store
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef _MSPST_H_
+#define _MSPST_H_
+
+
+/* The following is a list of properties that may be passed in
+ as the properties in the array of SPropValue structure on the
+ MsgServiceConfigure function.
+
+ Creating a PST profile section through CreateMsgService.
+ The creation of the actual PST file is a two step process. First the
+ client should call CreateMsgService to setup the profile section and then
+ ConfigureMsgService to create the PST file.
+ The CreateMsgService call will setup the PR_DISPLAY_NAME property in the
+ profile section to be used on the PST when it is created.
+
+ Configuring an PST file through ConfigureMsgService.
+ The configuration of an PST can take two forms, either configuring an
+ existing PST or creating a new PST. The Microsoft Personal Information
+ Store provider will try to find the necessary properties by first looking
+ in the array of SPropValue structures provided by the client and then in the
+ profile section, except for PR_PST_PW_SZ_OLD for which it will only look
+ in the array of properties.
+
+ The Microsoft PST provider will try to open the file specified by the
+ PR_PST_PATH property, using the password given in the PR_PST_PW_SZ_OLD
+ property. If it finds a file and it recognizes it as a PST
+ file, it will start the configuration routine. Otherwise it will start the
+ creation routine.
+
+ The configuration routine will look for the PR_DISPLAY_NAME_A and
+ PR_COMMENT_A properties and set them in the message store object. Then it
+ will look for the PR_PST_REMEMBER_PW property to decide if it should
+ remember the password in the profile. (If not found then it will defaut to
+ the current status of the profile password.) Then if it is supposed to
+ use UI, it will display the configuration property sheet to the user. After
+ all has succeeded, it will update the profile.
+
+ The creation routine will follow one of two paths to get the PR_PST_PATH
+ property. If it is supposed to use UI it will always display the file open
+ dialog to confirm the path passed in or allow the user to change it. If
+ the user chooses an existing file and it recognizes it as an PST it will
+ drop back to the configuration routine. If the user chooses an existing
+ file and it is not recognized as an PST file, the user will be given the
+ option of choosing another file or creating a new PST in its place, in
+ which case is will continue with the create routine. If the user chooses
+ a new file it will continue with the create routine. If the routine is not
+ allowed to use UI, then the routine will create a file at the given path
+ even if another file exists there.
+
+ Once it decides to continue with the creation process it will get the
+ PR_DISPLAY_NAME, PR_COMMENT, PR_PST_ENCRYPTION, and PR_PST_SZ_PW_NEW
+ properties. If it is supposed to use UI, it will use these to initialize
+ the creation dialog and get any changes the user want. Then it will create
+ a new file and update the profile.
+
+ PR_DISPLAY_NAME_A display name for the PST service
+ PR_COMMENT_A comment to the place on the PST store object
+ PR_PST_PATH location the store to create or configure
+ PR_PST_REMEMBER_PW whether or not the remember the password in the profile
+ PR_PST_ENCRYPTION encryption level at which to create the file
+ PR_PST_PW_SZ_OLD password of the PST being configured
+ PR_PST_PW_SZ_NEW password to use for future access to the PST
+*/
+
+#define PST_EXTERN_PROPID_BASE (0x6700)
+#define PR_PST_PATH PROP_TAG(PT_STRING8, PST_EXTERN_PROPID_BASE + 0)
+#define PR_PST_REMEMBER_PW PROP_TAG(PT_BOOLEAN, PST_EXTERN_PROPID_BASE + 1)
+#define PR_PST_ENCRYPTION PROP_TAG(PT_LONG, PST_EXTERN_PROPID_BASE + 2)
+#define PR_PST_PW_SZ_OLD PROP_TAG(PT_STRING8, PST_EXTERN_PROPID_BASE + 3)
+#define PR_PST_PW_SZ_NEW PROP_TAG(PT_STRING8, PST_EXTERN_PROPID_BASE + 4)
+
+#define PSTF_NO_ENCRYPTION ((DWORD)0x80000000)
+#define PSTF_COMPRESSABLE_ENCRYPTION ((DWORD)0x40000000)
+#define PSTF_BEST_ENCRYPTION ((DWORD)0x20000000)
+
+/*
+ * PR_MDB_PROVIDER is the GUID that represent the Microsoft Personal
+ * Information Store. This guid is available as a property in the stores
+ * table and on the message store and status objects.
+ */
+#define MSPST_UID_PROVIDER { 0x4e, 0x49, 0x54, 0x41, \
+ 0xf9, 0xbf, 0xb8, 0x01, \
+ 0x00, 0xaa, 0x00, 0x37, \
+ 0xd9, 0x6e, 0x00, 0x00 }
+
+#endif /* _MSPST_H_ */
+
diff --git a/public/sdk/inc/mstest.inc b/public/sdk/inc/mstest.inc
new file mode 100644
index 000000000..d5d8e0a69
--- /dev/null
+++ b/public/sdk/inc/mstest.inc
@@ -0,0 +1,1250 @@
+'--------------------------------------------------------------------------
+'
+' MSTEST.INC Version 2.00
+' API Declarations for TEST Tools
+'
+' NOTE: All API are ALIAS'd to themselves to support NT
+' API Not yet supported under NT are IFDEF'd out using the
+' predefine symbol of NT.
+'
+' To include the various portions of this file, any combination of the
+' following $DEFINE's must be used in your script prior to $INCLUDEing
+' MSTEST.INC:
+'
+' i.e. IN YOUR SCRIPT add a line such as the following to DEFINE one of
+' the SYMBOLS below, so you only include what you need.
+'
+' REM$ DEFINE MSTest - to get everything in this include file
+' REM$ DEFINE TestCtrl - to get ALL the TESTCTRL declarations etc.
+' REM$ DEFINE TestScrn - to get ALL the TESTSCRN declarations etc.
+' REM$ DEFINE TestDlgs - to get ALL the TESTDLGS declarations etc.
+' REM$ DEFINE TestEvnt - to get ALL the TESTEVNT declarations etc.
+' REM$ DEFINE TestUI - to get ALL the TESTUI declarations etc.
+'
+' OR USE ANY OF THE FOLLOWING SYMBOLS TO GET PARTIAL
+'
+' MSTEST: includes all of MSTEST.INC
+'
+' TESTCTRL: includes all of TESTCTRL
+' W_MISC TESTCTRL Miscellaneous routines
+' W_WINDOW TESTCTRL Window routines
+' W_MENU TESTCTRL Menu routines
+' W_ERROR: TESTCTRL error routines
+' W_CONTROL: includes all of the control declares & routines
+' W_BUTTON: includes all of the BUTTON declares etc.
+' W_CHECK: " CHECKBOX
+' W_OPTION " OPTION BUTTON
+' W_EDIT " EDIT CONTROL
+' W_LIST " LIST BOX
+' W_COMBO " COMBO BOX
+'
+' TESTSCRN: includes all of TESTSCRN, Declares & Error codes
+' TESTSCRN_DECL: includes all SCR Declares
+' TESTSCRN_ERRS: includes all SCR Error codes
+'
+' TESTDLGS: includes all of TESTDLGS, Declares & Error codes
+' TESTDLGS_DECL: includes all DLGS Declares
+' TESTDLGS_ERRS: includes all DLGS Error codes
+'
+' TESTEVNT: includes all TESTEVNT Declares
+'
+' W_ERROR_TRAP: Just like W_ERROR, but includes a generic
+' WErrorTrap to display WError and ErrorText
+' NOTE: This is not included from any other define.
+'
+' NOTE: Including MSTEST.INC without out using any of the above $DEFINE's
+' will include only TESTDRVR.EXE trappable and untrappable error
+' codes, and declares for CRLF, TRUE (-1), FALSE(0), Key values for
+' DoKeys() from TESTEVNT and few routines from TESTCtrl.
+'
+'---------------------------------------------------------------------------
+'
+' Copyright (C) 1991-1992 Microsoft Corporation
+'
+' You have a royalty-free right to use, modify, reproduce and distribute
+' this file (and/or any modified version) in any way you find useful,
+' provided that you agree that Microsoft has no warranty, obligation or
+' liability for its contents. Refer to the Microsoft Windows Programmer's
+' Reference for further information.
+'
+' This file is not garanteed by Microsoft to be error free. Every effort
+' has been made to ensure proper data-types and declarations etc., but no
+' testing has been performed using this include file. Additionally, some
+' API's, though listed, may not be compatible with the TESTDrvr language.
+'
+'----------------------------------------------------------------------------
+
+' *********************
+'$IFNDEF MSTEST_INCLUDED
+'$DEFINE MSTEST_INCLUDED
+' *********************
+
+'----------------------------------------------------------------------------
+' Generic Global Variables
+'----------------------------------------------------------------------------
+Global CRLF As String ' UNDONE: Change to Const X = Chr$()
+CRLF = Chr$(13) + Chr$(10) ' once supported
+
+Const TRUE = -1
+Const FALSE = 0
+
+
+'----------------------------------------------------------------------------
+' Unrecoverable TESTDRVR error codes
+'----------------------------------------------------------------------------
+Const ERR_STACK_OVERFLOW = 0
+Const ERR_STACK_UNDERFLOW = 1
+Const ERR_OUT_OF_STRING_SPACE = 2
+Const ERR_CANT_LOAD_TESTVIEW_DLL = 3
+Const ERR_OUT_OF_MEMORY = 4
+
+
+'----------------------------------------------------------------------------
+' Recoverable TESTDRVR error codes
+'----------------------------------------------------------------------------
+Const ERR_GOSUB_STACK_OVERFLOW = 5
+Const ERR_RETURN_WITHOUT_GOSUB = 6
+Const ERR_BAD_FILE_NUMBER = 7
+Const ERR_FILE_IO = 8
+Const ERR_RUN_CMD_TOO_LONG = 9
+Const ERR_SHELL_CMD_TOO_LONG = 10
+Const ERR_SETFILE = 11
+Const ERR_FILE_NUMBER_IN_USE = 12
+Const ERR_CANT_OPEN_FILE = 13
+Const ERR_ILLEGAL_FUNCTION_CALL = 14
+Const ERR_INVALID_PATH = 15
+Const ERR_INVALID_DRIVE = 16
+Const ERR_NO_CURRENT_WORKING_DIR = 17
+Const ERR_BAD_RUN_CMD = 18
+Const ERR_DIVISION_BY_ZERO = 19
+Const ERR_CANT_LOAD_DLL = 20
+Const ERR_PROC_NOT_FOUND_IN_DLL = 21
+Const ERR_CANNOT_RESUME = 22
+Const ERR_MEM_ALLOC = 23
+Const ERR_INVALID_POINTER = 24
+Const ERR_INVALID_ALLOC_SIZE = 25
+Const ERR_NULL_PIONTER_REF = 26
+Const ERR_SUBSCRIPT_RANGE = 27
+Const ERR_INPUT_PAST_EOF = 28
+Const ERR_FILELIST_PROC = 29
+Const ERR_INVALID_ATTRIBUTE = 30
+
+'$ifdef WINUSER_SHOW_COMMANDS AND NOT NT
+
+'----------------------------------------------------------------------------
+' RUN statement Show commands: RUN "command"[, [NOWAIT][, ShowCommand]]
+' NOTE: These are the same as the SW_ constants in Windows.h
+'----------------------------------------------------------------------------
+Const SW_HIDE = 0
+Const SW_SHOWNORMAL = 1
+Const SW_NORMAL = 1
+Const SW_SHOWMINIMIZED = 2
+Const SW_SHOWMAXIMIZED = 3
+Const SW_MAXIMIZE = 3
+Const SW_SHOWNOACTIVATE = 4
+Const SW_SHOW = 5
+Const SW_MINIMIZE = 6
+Const SW_SHOWMINNOACTIVE = 7
+Const SW_SHOWNA = 8
+Const SW_RESTORE = 9
+
+'$endif WINUSER_SHOW_COMMANDS AND NOT NT
+
+'----------------------------------------------------------------------------
+' Key contants used with WKey, PlayKeys, & PlayKeyshWnd
+'----------------------------------------------------------------------------
+Const K_ENTER = "{ENTER}"
+Const K_ESC = "{ESC}"
+Const K_UP = "{UP}"
+Const K_DOWN = "{DOWN}"
+Const K_LEFT = "{LEFT}"
+Const K_RIGHT = "{RIGHT}"
+Const K_END = "{END}"
+Const K_PGUP = "{PGUP}"
+Const K_PGDN = "{PGDN}"
+Const K_INSERT = "{INSERT}"
+Const K_INS = "{INSERT}"
+Const K_DELETE = "{DELETE}"
+Const K_DEL = "{DELETE}"
+Const K_HOME = "{HOME}"
+Const K_TAB = "{TAB}"
+Const K_BS = "{BS}"
+Const K_F1 = "{F1}"
+Const K_F2 = "{F2}"
+Const K_F3 = "{F3}"
+Const K_F4 = "{F4}"
+Const K_F5 = "{F5}"
+Const K_F6 = "{F6}"
+Const K_F7 = "{F7}"
+Const K_F8 = "{F8}"
+Const K_F9 = "{F9}"
+Const K_F10 = "{F10}"
+Const K_F11 = "{F11}"
+Const K_F12 = "{F12}"
+Const K_F13 = "{F13}"
+Const K_F14 = "{F14}"
+Const K_F15 = "{F15}"
+Const K_F16 = "{F16}"
+Const K_SHIFT = "+"
+Const K_CTRL = "^"
+Const K_ALT = "%"
+
+' TESTCtrl API & Constants that are always declared.
+'
+' WGetFocus() simply preforms the exact function as the windows
+' GetFocus() API. Is contained in TESTCtrl since it is such a
+' commonly used API in scripts, and it makes it much easier to
+' use since it is defined simply by including MSTEST.INC. It is
+' renamed to prevent duplicate definitions due to scripts that
+' do define GetFocus() and include MSTEST.INC.
+'---------------------------------------------------------------
+Declare Function WGetFocus Lib "TESTCtrl.dll" Alias "WGetFocus" () As Integer
+Declare Sub WSetActWnd Lib "TESTCtrl.dll" Alias "WSetActWnd" (hWnd%)
+Declare Function WGetActWnd Lib "TESTCtrl.dll" Alias "WGetActWnd" (hWnd%) As Integer
+Declare Function WFndWnd Lib "TESTCtrl.dll" Alias "WFndWnd" (lpszCaption$, wFlags%) As Integer
+Declare Function WFndWndC Lib "TESTCtrl.dll" Alias "WFndWndC" (lpszText$, lpszClass$, wFlags%) As Integer
+Declare Function WFndWndWait Lib "TESTCtrl.dll" Alias "WFndWndWait" (lpszCaption$, wFlags%, wSeconds%) As Integer
+Declare Function WFndWndWaitC Lib "TESTCtrl.dll" Alias "WFndWndWaitC" (lpszText$, lpszClass$, wFlags%, wSeconds%) As Integer
+
+Const FW_DEFAULT = &h0000 'Default
+Const FW_RESTOREICON = &h0081 '&h0080 Or FW_FOCUS
+Const FW_NOEXIST = &h0040
+Const FW_EXIST = &h0000 'Default
+Const FW_CHILDNOTOK = &h0020
+Const FW_CHILDOK = &h0000 'Default
+Const FW_HIDDENOK = &h0010
+Const FW_HIDDENNOTOK = &h0000 'Default
+Const FW_ACTIVE = &h0008
+Const FW_ALL = &h0000 'Default
+Const FW_CASE = &h0004
+Const FW_NOCASE = &h0000 'Default
+Const FW_PART = &h0002
+Const FW_FULL = &h0000 'Default
+Const FW_FOCUS = &h0001
+Const FW_NOFOCUS = &h0000 'Default
+
+' TESTEvnt API that are always defined.
+'--------------------------------------
+Declare Sub DoKeys Lib "TESTEvnt.Dll" Alias "DoKeys" (lpStr$)
+Declare Sub DoKeysHwnd Lib "TESTEvnt.Dll" Alias "DoKeyshWnd" (hWnd%, lpStr$)
+
+' Useful function when working with the Windows API,
+' to extract the HI/LO wordt from a Long Integer.
+'---------------------------------------------------
+Declare Function HIWORD(LongVar&) As Integer
+Function HIWORD (LongVar&) Static As Integer
+ HIWORD = LongVar& / 65536
+End Function
+
+Declare Function LOWORD(LongVar&) As Integer
+Function LOWORD (LongVar&) Static As Integer
+ LOWORD = LongVar& And &H0000FFFF
+End Function
+
+' Useful function when working with the Windows API,
+' to extract the HI/LO byte from am Integer.
+'---------------------------------------------------
+Declare Function HIBYTE(IntVar%) As Integer
+Function HIBYTE (IntVar%) Static As Integer
+ HIBYTE = IntVar% / 256
+End Function
+
+Declare Function LOBYTE(IntVar%) As Integer
+Function LOBYTE (IntVar%) Static As Integer
+ LOBYTE = IntVar% And &H00FF
+End Function
+
+' *********************
+'$ENDIF MSTEST_INCLUDED
+' *********************
+
+'----------------------------------------------------------------------------
+' DEFINE's that control the inclusion of the remainder of MSTEST.INC
+'----------------------------------------------------------------------------
+'$IFDEF MSTEST
+ '$DEFINE TESTCTRL
+ '$DEFINE TESTSCRN
+ '$DEFINE TESTDLGS
+ '$DEFINE TESTEVNT
+ '$DEFINE TESTUI
+'$ENDIF
+
+'$IFDEF TESTCTRL
+ '$DEFINE W_MISC
+ '$DEFINE W_WINDOW
+ '$DEFINE W_MENU
+ '$DEFINE W_ERROR
+ '$DEFINE W_CONTROL
+'$ENDIF
+
+'$IFDEF W_ERROR_TRAP
+ '$DEFINE W_ERROR
+'$ENDIF
+
+'$IFDEF W_CONTROL
+ '$DEFINE W_BUTTON
+ '$DEFINE W_CHECK
+ '$DEFINE W_OPTION
+ '$DEFINE W_EDIT
+ '$DEFINE W_LIST
+ '$DEFINE W_COMBO
+'$ENDIF
+
+'$IFDEF TESTSCRN
+ '$DEFINE TESTSCRN_DECL
+ '$DEFINE TESTSCRN_ERRS
+'$ENDIF
+
+'$IFDEF TESTDLGS
+ '$DEFINE TESTDLGS_DECL
+ '$DEFINE TESTDLGS_ERRS
+'$ENDIF
+
+'$IFDEF W_BUTTON OR W_CHECK OR W_OPTION OR W_EDIT OR W_LIST OR W_COMBO
+ '$DEFINE W_A_CONTROL
+'$ENDIF
+
+' *********************
+'$IFDEF TESTUI AND NOT TESTUI_INCLUDED AND NOT NT
+' *********************
+'----------------------------------------------------------------------------
+' TESTUI.dll:
+' Function declarations for use with TESTUI
+'----------------------------------------------------------------------------
+Declare Function DlgBox Lib "TESTUI.dll" Alias "DlgBox" (DlgId%, hwndOwner%, proc As CallBack, ResFile$) As Integer
+Declare Function DlgBox3D Lib "TESTUI.dll" Alias "DlgBox3D" (DlgId%, hwndOwner%, proc As CallBack, ResFile$) As Integer
+Declare Function SetScriptMenu Lib "TESTUI.dll" Alias "SetScriptMenu" (MenuId%, hwnd%, ResFile$) As Integer
+Declare Function SetIconBar Lib "TESTUI.dll" Alias "SetIconBar" (IconBarId%, proc As Callback, AppName$, ResFile$, fAlwaysOnTop%) As Integer
+Declare Function SetSysMenu Lib "TESTUI.dll" Alias "SetSysMenu" (MenuId%, proc As Callback, AppName$, ResFile$) As Integer
+Declare Function SetSysMenu3D Lib "TESTUI.dll" Alias "SetSysMenu3D" (MenuId%, proc As Callback, AppName$, ResFile$) As Integer
+Declare Function MSTLoadIcon Lib "TESTUI.dll" Alias "MSTLoadIcon" (IconId%, ResFile$) As Integer
+Declare Sub MSTDestroyIcon Lib "TESTUI.dll" Alias "MSTDestroyIcon" (hIcon%)
+
+' *********************
+'$DEFINE TESTUI_INCLUDED
+'$ENDIF
+'$IFDEF W_MISC AND NOT W_MISC_INCLUDED
+' *********************
+
+
+'----------------------------------------------------------------------------
+' W_MISC: Miscellanious Routines, types and Constants.
+'----------------------------------------------------------------------------
+Const MAX_CAPTION = 128
+
+Type INFO
+ hWnd As Integer
+ hWndParent As Integer
+ szClass As String * MAX_CAPTION
+ szCaption As String * MAX_CAPTION
+ szParentClass As String * MAX_CAPTION
+ szParentCaption As String * MAX_CAPTION
+ szModuleName As String * MAX_CAPTION
+ lStyle As Long
+ fChild As Integer
+ wID As Integer
+ wLeft As Integer
+ wTop As Integer
+ wRight As Integer
+ wBottom As Integer
+ wWidth As Integer
+ wHeight As Integer
+End Type
+
+' The 4 WMessage[W|L] API are slight variations on the windows
+' SendMessage() API. Two things are provided:
+'
+' Validation of hWnd%: - If invalid an error value that
+' is trappable by WErrorTrap is
+' - If hWnd is NULL, the message goes
+' to the ActiveWindow.
+' Only need paramaters: Pass in only the paramaters that are needed:
+' WMessage: Wp and Lp are set to zero
+' WMessageW: Lp is set to zero
+' WMessageL: Wp is set to zero
+' WMessageWL: just like SendMessage() but with hWnd validation
+'---------------------------------------------------------------------
+Declare Function WMessage Lib "TESTCtrl.dll" Alias "WMessage" (hWnd%, wMsg%)
+Declare Function WMessageW Lib "TESTCtrl.dll" Alias "WMessageW" (hWnd%, wMsg%, wp%)
+Declare Function WMessageL Lib "TESTCtrl.dll" Alias "WMessageL" (hWnd%, wMsg%, lp As Any)
+Declare Function WMessageWL Lib "TESTCtrl.dll" Alias "WMessageWL" (hWnd%, wMsg%, wp%, lp As Any)
+Declare Function WIsVisible Lib "TESTCtrl.dll" Alias "WIsVisible" (hWnd%) As Integer
+Declare Function WTextLen Lib "TESTCtrl.dll" Alias "WTextLen" (hWnd%) As Long
+Declare Sub WGetText Lib "TESTCtrl.dll" Alias "WGetText" (hWnd%, lpszBuffer$)
+Declare Sub WSetText Lib "TESTCtrl.dll" Alias "WSetText" (hWnd%, lpszText$)
+Declare Function WNumAltKeys Lib "TESTCtrl.dll" Alias "WNumAltKeys" () As Integer
+Declare Sub WGetAltKeys Lib "TESTCtrl.dll" Alias "WGetAltKeys" (lpszBuff$)
+Declare Function WNumDupAltKeys Lib "TESTCtrl.dll" Alias "WNumDupAltKeys" () As Integer
+Declare Sub WGetDupAltKeys Lib "TESTCtrl.dll" Alias "WGetDupAltKeys" (lpszBuff$)
+Declare Sub WDisplayInfo Lib "TESTCtrl.dll" Alias "WDisplayInfo" (hWnd%, wDisplay%)
+Declare Sub WGetInfo Lib "TESTCtrl.dll" Alias "WGetInfo" (hWnd%, lpInfo As INFO)
+
+' Layered routines to simulate string functions for the coresponding
+' TESTCtrl API
+'----------------------------------------------------------------------------
+Declare Function GetText (hWnd%) As String
+Declare Function GetAltKeys () As String
+Declare Function GetDupAltKeys () As String
+
+Const DI_DIALOG = 1
+Const DI_DEBUG = 2
+Const DI_BOTH = 3
+
+'----------------------------------------------------------------------------
+' GetText: Layered routine for WGetText()
+'----------------------------------------------------------------------------
+Function GetText(hWnd%) Static As String
+Dim lpszBuffer As String
+Dim textLength As Long
+ GetText = ""
+ textLength = WTextLen(hWnd%)
+ If textLength > 0 Then
+ lpszBuffer = String$(textLength+1, " ")
+ WGetText hWnd%, lpszBuffer
+ GetText = lpszBuffer
+ End If
+ lpszBuffer = ""
+End Function
+
+'----------------------------------------------------------------------------
+' GetAltKeys: Layered routine for WGetAltKeys()
+'----------------------------------------------------------------------------
+Function GetAltKeys() Static As String
+Dim lpszBuffer As String
+ lpszBuffer = String$(WNumAltKeys()+1, " ")
+ WGetAltKeys lpszBuffer
+ GetAltKeys = lpszBuffer
+ lpszBuffer = ""
+End Function
+
+'----------------------------------------------------------------------------
+' GetDupAltKeys: Layered routine for WGetDupAltKeys()
+'----------------------------------------------------------------------------
+Function GetDupAltKeys() Static As String
+Dim lpszBuffer As String
+ lpszBuffer = String$(WNumDupAltKeys()+1, " ")
+ WGetDupAltKeys lpszBuffer
+ GetDupAltKeys = lpszBuffer
+ lpszBuffer = ""
+End Function
+
+' *********************
+'$DEFINE W_MISC_INCLUDED
+'$ENDIF
+'$IFDEF TESTEVNT AND NOT TESTEVNT_INCLUDED
+' *********************
+
+'----------------------------------------------------------------------------
+' TESTEvnt.Dll:
+' Function declarations for use with TESTEvnt
+'----------------------------------------------------------------------------
+'$IFNDEF NT
+
+TYPE MEMORYINFO
+ LargestAvail AS LONG ' Largest available free block in bytes
+ MaxPagesUnlock AS LONG ' Maximum unlocked page allocation in pages
+ MaxPagesLocked AS LONG ' Maximum locked page allocation in pages
+ TotalLinBytes AS LONG ' Linear address space size in bytes
+ TotalUnlockBytes AS LONG ' Total number of unlocked bytes
+ TotalFreePhysBytes AS LONG ' Total number of free physical bytes
+ TotalPhysBytes AS LONG ' Total number of physical bytes
+ FreeLinBytes AS LONG ' Free linear address space in bytes
+ SwapFileSize AS LONG ' Size of paging file/partition in bytes
+ Reserved1 AS LONG ' reserved for future expansion, all bits set
+ Reserved2 AS LONG ' reserved for future expansion, all bits set
+ Reserved3 AS LONG ' reserved for future expansion, all bits set
+ Reserved4 AS LONG ' reserved for future expansion, all bits set
+ NumSelectors AS INTEGER ' Total number of selectors on current LDT
+ NumFreeSelectors AS INTEGER ' Number of free selectors on current LDT
+ GlobalHeapFree AS LONG ' Number of free Global bytes
+ USERHeapFree AS LONG ' Number of free bytes in USER.EXE's heap
+ GDIHeapFree AS LONG ' Number of free bytes in GDI.EXE's heap
+ SysResFree AS INTEGER ' *PERCENTAGE* of free system resources
+END TYPE
+
+Declare Sub WaitUntilIdle Lib "TESTEVNT.DLL" Alias "WaitUntilIdle" ()
+Declare Function GetMemoryInfo Lib "TESTEvnt.Dll" Alias "GetMemoryInfo" (lpMemInfo As MEMORYINFO) As Integer
+Declare Function VMGetScreenCols Lib "TESTEvnt.Dll" Alias "VMGetScreenCols" (HWND%) As Integer
+Declare Function VMGetCursPos Lib "TESTEvnt.Dll" Alias "VMGetCursPos" (HWND%) As Integer
+Declare Function VMGetScreen Lib "TESTEvnt.Dll" Alias "VMGetScreen" (HWND%, UINT%, UINT%, UINT%, UINT%, LPSTR$) As Integer
+Declare Function VMGetScreenClip Lib "TESTEvnt.Dll" Alias "VMGetScreenClip" (HWND%, UINT%, UINT%, UINT%, UINT%) As Integer
+Declare Sub VMSetBackground Lib "TESTEvnt.Dll" Alias "VMSetBackground" (HWND%, BOOL%)
+Declare Function VMPipeOpen Lib "TESTEvnt.Dll" Alias "VMPipeOpen" (HWND%, SCRIPTSUB As Callback ) As Integer
+Declare Function VMPipeClose Lib "TESTEvnt.Dll" Alias "VMPipeClose" (HWND%) As Integer
+Declare Function VMPipeGetText Lib "TESTEvnt.Dll" Alias "VMPipeGetText" (HWND%, LPSTR$ ) As Integer
+
+CONST PIPESTRINGSIZE = 129 ' 128 chars + NULL
+
+' ** VMPipeGetText() Return values... **
+'----------------------------------------
+CONST PGT_FAILED = &H0000
+CONST PGT_COMPLETE = &H0001
+CONST PGT_MOREREADY = &H0002
+
+'$ENDIF NT 'for TESTEvnt VM Stuff
+
+Declare Sub QueKeys Lib "TESTEvnt.Dll" Alias "QueKeys" (lpStr$)
+Declare Sub QueKeyDn Lib "TESTEvnt.Dll" Alias "QueKeyDn" (lpStr$)
+Declare Sub QueKeyUp Lib "TESTEvnt.Dll" Alias "QueKeyUp" (lpStr$)
+Declare Sub QueSetSpeed Lib "TESTEvnt.Dll" Alias "QueSetSpeed" (ms%)
+Declare Sub QuePause Lib "TESTEvnt.Dll" Alias "QuePause" (ms&)
+Declare Sub QueFlush Lib "TESTEvnt.Dll" Alias "QueFlush" (fRestoreKeyState%)
+Declare Sub QueEmpty Lib "TESTEvnt.Dll" Alias "QueEmpty" ()
+Declare Sub QueMouseMove Lib "TESTEvnt.Dll" Alias "QueMouseMove" (x%, y%)
+Declare Sub QueMouseDn Lib "TESTEvnt.Dll" Alias "QueMouseDn" (iBtn%, x%, y%)
+Declare Sub QueMouseUp Lib "TESTEvnt.Dll" Alias "QueMouseUp" (iBtn%, x%, y%)
+Declare Sub QueMouseClick Lib "TESTEvnt.Dll" Alias "QueMouseClick" (iBtn%, x%, y%)
+Declare Sub QueMouseDblClk Lib "TESTEvnt.Dll" Alias "QueMouseDblClk" (iBtn%, x%, y%)
+Declare Sub QueMouseDblDn Lib "TESTEvnt.Dll" Alias "QueMouseDblDn" (iBtn%, x%, y%)
+Declare Sub QueSetFocus Lib "TESTEvnt.Dll" Alias "QueSetFocus" (hwnd%)
+Declare Sub QueSetRelativeWindow Lib "TESTEvnt.Dll" Alias "QueSetRelativeWindow" (hwnd%)
+
+'$ifndef VK_WINAPI
+Const VK_LBUTTON = 1
+Const VK_RBUTTON = 2
+Const VK_MBUTTON = 4
+'$define VK_WINAPI
+'$endif
+
+' *********************
+'$DEFINE TESTEVNT_INCLUDED
+'$ENDIF
+'$IFDEF TESTSCRN_DECL AND NOT TESTSCRN_DECL_INCLUDED
+' *********************
+
+
+'----------------------------------------------------------------------------
+' TESTScrn.DLL:
+' Type, Const, and Function declarations for use with TESTScrn
+'----------------------------------------------------------------------------
+Type wRect
+ x1 As Integer
+ y1 As Integer
+ x2 As Integer
+ y2 As Integer
+End Type
+
+Const SCRNAPPEND = 0
+Const SCRNREPLACE = 1
+Const SCRNINSERT = 2
+
+'*** TESTSCRN.DLL Routines
+'
+Declare Function fCompFiles Lib "TESTScrn.DLL" Alias "fCompFiles" (lpszFileName1$, Scr1%, lpszFileName2$, Scr2%, CompareType%) As Integer
+Declare Function fCompScreenActivate Lib "TESTScrn.DLL" Alias "fCompScreenActivate" (lpszFileName$, OpenKeys$, CloseKeys$, lpRect As wRect, Scr1%, Hide%, Flag%) As Integer
+Declare Function fCompScreen Lib "TESTScrn.DLL" Alias "fCompScreen" (lpszFileName$, lpRect As wRect, Scr1%, Hide%, Flag%) As Integer
+Declare Function fCompWindowActivate Lib "TESTScrn.DLL" Alias "fCompWindowActivate" (lpszFileName$, OpenKeys$, CloseKeys$, Scr1%, Hide%, Flag%) As Integer
+Declare Function fCompWindow Lib "TESTScrn.DLL" Alias "fCompWindow" (lpszFileName$, hWnd%, Scr1%, Hide%, Flag%) As Integer
+Declare Function fDelScreen Lib "TESTScrn.DLL" Alias "fDelScreen" (lpszFileName$, Scr%) As Integer
+Declare Function fDumpFileToClip Lib "TESTScrn.DLL" Alias "fDumpFileToClip" (lpszFileName$, Scr%) As Integer
+Declare Function fDumpScreenActivate Lib "TESTScrn.DLL" Alias "fDumpScreenActivate" (lpszFileName$, OpenKeys$, CloseKeys$, lpRect As wRect, Action%, Scr1%, Flag%) As Integer
+Declare Function fDumpScreen Lib "TESTScrn.DLL" Alias "fDumpScreen" (lpszFileName$, lpRect As wRect, Action%, Scr1%, Flag%) As Integer
+Declare Function fDumpSrnToClipActivate Lib "TESTScrn.DLL" Alias "fDumpSrnToClipActivate" (OpenKeys$, CloseKeys$, lpRect As wRect, Hide%) As Integer
+Declare Function fDumpSrnToClip Lib "TESTScrn.DLL" Alias "fDumpSrnToClip" (lpRect As wRect, Hide%) As Integer
+Declare Function fDumpWindowActivate Lib "TESTScrn.DLL" Alias "fDumpWindowActivate" (lpszFileName$, OpenKeys$, CloseKeys$, Action%, Scr1%, Flag%) As Integer
+Declare Function fDumpWindow Lib "TESTScrn.DLL" Alias "fDumpWindow" (lpszFileName$, wHnd%, Action%, Scr1%, Flag%) As Integer
+Declare Function fDumpWndToClipActivate Lib "TESTScrn.DLL" Alias "fDumpWndToClipActivate" (OpenKeys$, CloseKeys$, Hide%) As Integer
+Declare Function fDumpWndToClip Lib "TESTScrn.DLL" Alias "fDumpWndToClip" (hWnd%, Hide%) As Integer
+Declare Function fFileInfo Lib "TESTScrn.DLL" Alias "fFileInfo" (lpszName$, lpRect AS wRect, VideoMode AS POINTER TO INTEGER, Count AS POINTER TO INTEGER) As Integer
+Declare Function fGetDLLVersion Lib "TESTScrn.DLL" Alias "fGetDLLVersion" (lpszFileName$) As Integer
+Declare Function fGetMaxScreen Lib "TESTScrn.DLL" Alias "fGetMaxScreen" (lpszFileName$) As Integer
+Declare Function fGetOS Lib "TESTScrn.DLL" Alias "fGetOS" (lpszFileName$) As Integer
+Declare Function fSaveFileToDIB Lib "TESTScrn.DLL" Alias "fSaveFileToDIB" (lpszFileName1$, Scr%, lpszFileName2$) As Integer
+Declare Function fSaveSrnToDIBActivate Lib "TESTScrn.DLL" Alias "fSaveSrnToDIBActivate" (lpszFileName$, OpenKeys$, CloseKeys$, lpRect As wRect, Hide%) As Integer
+Declare Function fSaveSrnToDIB Lib "TESTScrn.DLL" Alias "fSaveSrnToDIB" (lpszFileName$, lpRect As wRect, Hide%) As Integer
+Declare Function fSaveWndToDIBActivate Lib "TESTScrn.DLL" Alias "fSaveWndToDIBActivate" (lpszFileName$, OpenKeys$, CloseKeys$, Hide%) As Integer
+Declare Function fSaveWndToDIB Lib "TESTScrn.DLL" Alias "fSaveWndToDIB" (lpszFileName$, hWnd%, Hide%) As Integer
+Declare Function fViewScreen Lib "TESTScrn.DLL" Alias "fViewScreen" (lpszFileName$, hWnd%, Scr1%, Action%) As Integer
+
+
+' *********************
+'$DEFINE TESTSCRN_DECL_INCLUDED
+'$ENDIF
+'$IFDEF TESTSCRN_ERRS AND NOT TESTSCRN_ERRS_INCLUDED
+' *********************
+
+
+'*** TESTScrn.DLL Error Codes
+'
+Const ERR_SCR_NOERROR = 0
+Const ERR_SCR_FILEACCESS = 301
+Const ERR_SCR_INVALIDFIL = 302
+Const ERR_SCR_INVALSRNID = 303
+Const ERR_SCR_INVALSRNMD = 304
+Const ERR_SCR_OUTOMEMORY = 305
+Const ERR_SCR_READSRNFIL = 306
+Const ERR_SCR_RELMEMORY = 307
+Const ERR_SCR_CREATEDDB = 308
+Const ERR_SCR_RWSRNTABLE = 309
+Const ERR_SCR_RWCOLTABLE = 310
+Const ERR_SCR_WSRNIMAGE = 311
+Const ERR_SCR_WFILEHEAD = 312
+Const ERR_SCR_CREATEDIB = 313
+Const ERR_SCR_SCREENSIZE = 314
+Const ERR_SCR_DISPSCREEN = 315
+Const ERR_SCR_INVALIDACT = 316
+Const ERR_SCR_IMAGEDIFF = 317
+Const ERR_SCR_SRNSIZEDIF = 318
+Const ERR_SCR_FILEEXIST = 319
+Const ERR_SCR_CTEMPFILE = 320
+Const ERR_SCR_HIDEWIN = 321
+Const ERR_SCR_INVALWHAND = 322
+Const ERR_SCR_OFILEFORM = 323
+Const ERR_SCR_SRNFILEFUL = 324
+Const ERR_SCR_INVALSCALE = 325
+Const ERR_SCR_OPENCB = 326
+Const ERR_SCR_EMPTYCB = 327
+Const ERR_SCR_COPYTOCB = 328
+Const ERR_SCR_CLOSECB = 329
+Const ERR_SCR_CREATEPAL = 330
+Const ERR_SCR_LIBLOADERR = 331
+
+
+' *********************
+'$DEFINE TESTSCRN_ERRS_INCLUDED
+'$ENDIF
+'$IFNDEF NT
+'$IFDEF TESTDLGS_DECL AND NOT TESTDLGS_DECL_INCLUDED
+' *********************
+
+
+'----------------------------------------------------------------------------
+' TESTDlgs.DLL:
+' Type, Const, and Function declarations for use with TESTDlgs
+'----------------------------------------------------------------------------
+Const cchCLASSMAC = 32
+Const cchTEXTMAC = 256
+Const wVEREB = 1
+
+Type DCR
+ xLeft As Integer
+ yMin As Integer
+ xRight As Integer
+ yLast As Integer
+End Type
+
+Declare Function AwaitSaveCompletion Lib "TESTDlgs.DLL" Alias "AwaitSaveCompletion" () As Integer
+Declare Function ComparisonResults Lib "TESTDlgs.DLL" Alias "ComparisonResults" () As Integer
+Declare Function CmpWindow Lib "TESTDlgs.DLL" Alias "CmpWindow" (hWnd%, nDialog%, fIncludeParent%) As Integer
+Declare Function CmpWindowActivate Lib "TESTDlgs.DLL" Alias "CmpWindowActivate" (lpszOpenKeys$, lpszCloseKey$, nDialog%, fIncludeParent%) As Integer
+Declare Function CmpWindowCaption Lib "TESTDlgs.DLL" Alias "CmpWindowCaption" (lpszCap$, nDialog%, fIncludeParent%) As Integer
+Declare Function CmpWindowDelayed Lib "TESTDlgs.DLL" Alias "CmpWindowDelayed" (nDelay%, nDialog%, fIncludeParent%, lpszCloseKeys$) As Integer
+Declare Function FindWindowCaption Lib "TESTDlgs.DLL" Alias "FindWindowCaption" (lpszCap$, hWndStart%) As Integer
+Declare Function SaveMenu Lib "TESTDlgs.DLL" Alias "SaveMenu" (hWnd%, nDialog%, lpszDesc$, fReplace%) As Integer
+Declare Function SaveMenuActivate Lib "TESTDlgs.DLL" Alias "SaveMenuActivate" (lpszOpenKeys$, lpszCloseKeys$, nDialog%, lpszDesc$, fReplace%) As Integer
+Declare Function SaveMenuCaption Lib "TESTDlgs.DLL" Alias "SaveMenuCaption" (lpszCap$, nDialog%, lpszDesc$, fReplace%) As Integer
+Declare Function SaveMenuDelayed Lib "TESTDlgs.DLL" Alias "SaveMenuDelayed" (nDelay%, nDialog%, lpszDesc$, fReplace%, CloseKeys$) As Integer
+Declare Function SaveWindow Lib "TESTDlgs.DLL" Alias "SaveWindow" (hWnd%, nDialog%, lpszDesc$, fReplace%, fIncludeParent%) As Integer
+Declare Function SaveWindowActivate Lib "TESTDlgs.DLL" Alias "SaveWindowActivate" (lpszOpenKeys$, lpszCloseKeys$, nDialog%, lpszDesc$, fReplace%, fIncludeParent%) As Integer
+Declare Function SaveWindowCaption Lib "TESTDlgs.DLL" Alias "SaveWindowCaption" (lpszCap$, nDialog%, lpszDesc$, fReplace%, fIncludeParent%) As Integer
+Declare Function SaveWindowDelayed Lib "TESTDlgs.DLL" Alias "SaveWindowDelayed" (nDelay%, nDialog%, lpszDesc$, fReplace%, fIncludeParent%, lpszCloseKeys$) As Integer
+Declare Function SetDialogFile Lib "TESTDlgs.DLL" Alias "SetDialogFile" (lpszDialogName$) As Integer
+Declare Function SetLogFile Lib "TESTDlgs.DLL" Alias "SetLogFile" (lpszLogName$) As Integer
+
+
+' *********************
+'$DEFINE TESTDLGS_DECL_INCLUDED
+'$ENDIF
+'$IFDEF TESTDLGS_ERRS AND NOT TESTDLGS_ERRS_INCLUDED
+' *********************
+
+
+'*** Function return codes
+'
+Const ERR_DLGS_NOERR = 0
+Const ERR_DLGS_FUZZY = -1
+Const ERR_DLGS_EXCESS = -2
+Const ERR_DLGS_CTLNOTFOUND = -3
+Const ERR_DLGS_NODLGFILE = -10
+Const ERR_DLGS_FILENOTFOUND = -11
+Const ERR_DLGS_BADWDLFILE = -12
+Const ERR_DLGS_LIBLOADERR = -13
+Const ERR_DLGS_SAVEERR = -14
+Const ERR_DLGS_DLGFILEERR = -15
+Const ERR_DLGS_TMPFILEERR = -16
+Const ERR_DLGS_VERSIONERR = -17
+Const ERR_DLGS_DLGFILEFULL = -18
+Const ERR_DLGS_OUTOFMEMORY = -20
+Const ERR_DLGS_BUFFERERR = -21
+Const ERR_DLGS_NOTIMER = -22
+Const ERR_DLGS_NODYNDIALOG = -30
+Const ERR_DLGS_INVALIDHWND = -31
+Const ERR_DLGS_BADCAPTION = -32
+Const ERR_DLGS_BADDLGNUM = -33
+Const ERR_DLGS_BADCTLINDEX = -34
+Const ERR_DLGS_BADCTLTYPE = -35
+Const ERR_DLGS_BADSAVEACTION = -36
+Const ERR_DLGS_APPSPECIFIC = -37
+
+
+' *********************
+'$DEFINE TESTDLGS_ERRS_INCLUDED
+'$ENDIF
+'$ENDIF NT for TESTDLGS
+'$IFDEF W_WINDOW AND NOT W_WINDOW_INCLUDED
+' *********************
+
+
+'----------------------------------------------------------------------------
+' TESTCtrl.dll routines, types, & constants
+'----------------------------------------------------------------------------
+
+'*** Window size and position types
+'
+Type WNDPOS
+ wLeft As Integer
+ wTop As Integer
+End Type
+
+Type WNDSIZ
+ wWidth As Integer
+ wHeight As Integer
+End Type
+
+Type WNDPOSSIZ
+ wLeft As Integer
+ wTop As Integer
+ wWidth As Integer
+ wHeight As Integer
+End Type
+
+'*** Window Positioning and Sizing routines & contants
+'
+Declare Sub WMinWnd Lib "TESTCtrl.dll" Alias "WMinWnd" (hWnd%)
+Declare Sub WMaxWnd Lib "TESTCtrl.dll" Alias "WMaxWnd" (hWnd%)
+Declare Sub WResWnd Lib "TESTCtrl.dll" Alias "WResWnd" (hWnd%)
+Declare Sub WSetWndPos Lib "TESTCtrl.dll" Alias "WSetWndPos" (hWnd%, wLeft%, wTop%)
+Declare Sub WSetWndSiz Lib "TESTCtrl.dll" Alias "WSetWndSiz" (hWnd%, wWidth%, wHeight%)
+Declare Sub WSetWndPosSiz Lib "TESTCtrl.dll" Alias "WSetWndPosSiz" (hWnd%, wLeft%, wTop%, wWidth%, wHeight%)
+Declare Sub WAdjWndPos Lib "TESTCtrl.dll" Alias "WAdjWndPos" (hWnd%, deltaLeft%, deltaTop%)
+Declare Sub WAdjWndSiz Lib "TESTCtrl.dll" Alias "WAdjWndSiz" (hWnd%, deltaWidth%, deltaHeight%)
+Declare Sub WAdjWndPosSiz Lib "TESTCtrl.dll" Alias "WAdjWndPosSiz" (hWnd%, deltaLeft%, deltaTop%, deltaWidth%, deltaHeight%)
+Declare Sub WGetWndPos Lib "TESTCtrl.dll" Alias "WGetWndPos" (hWnd%, lpWndPos As WNDPOS, fRelative%)
+Declare Sub WGetWndSiz Lib "TESTCtrl.dll" Alias "WGetWndSiz" (hWnd%, lpWndSiz As WNDSIZ)
+Declare Sub WGetWndPosSiz Lib "TESTCtrl.dll" Alias "WGetWndPosSiz" (hWnd%, lpWndPosSiz As WNDPOSSIZ, fRelative%)
+Declare Function WIsMaximized Lib "TESTCtrl.dll" Alias "WIsMaximized" (hWnd%) As Integer
+Declare Function WIsMinimized Lib "TESTCtrl.dll" Alias "WIsMinimized" (hWnd%) As Integer
+
+
+Const W_RELATIVE = TRUE
+Const W_ABSOLUTE = FALSE
+
+
+' *********************
+'$DEFINE W_WINDOW_INCLUDED
+'$ENDIF
+'$IFDEF W_MENU AND NOT W_MENU_INCLUDED
+' *********************
+
+
+'*** Menu routines & constants
+'
+Declare Sub WSysMenu Lib "TESTCtrl.dll" Alias "WSysMenu" (hWnd%)
+Declare Function WSysMenuExists Lib "TESTCtrl.dll" Alias "WSysMenuExists" (hWnd%) As Integer
+Declare Sub WMenu Lib "TESTCtrl.dll" Alias "WMenu" (lpszName$)
+Declare Sub WMenuEx CDECL Lib "TESTCtrl.dll" Alias "WMenuEx" (lpszName$, ...)
+Declare Function WMenuExists Lib "TESTCtrl.dll" Alias "WMenuExists" (lpszName$) As Integer
+Declare Function WMenuGrayed Lib "TESTCtrl.dll" Alias "WMenuGrayed" (lpszName$) As Integer
+Declare Function WMenuChecked Lib "TESTCtrl.dll" Alias "WMenuChecked" (lpszName$) As Integer
+Declare Function WMenuEnabled Lib "TESTCtrl.dll" Alias "WMenuEnabled" (lpszName$) As Integer
+Declare Function WMenuCount Lib "TESTCtrl.dll" Alias "WMenuCount" () As Integer
+Declare Sub WMenuText Lib "TESTCtrl.dll" Alias "WMenuText" (lpszName$, lpszBuffer$)
+Declare Function WMenuLen Lib "TESTCtrl.dll" Alias "WMenuLen" (lpszName$) As Integer
+Declare Sub WMenuFullText Lib "TESTCtrl.dll" Alias "WMenuFullText" (lpszName$, lpszBuffer$)
+Declare Function WMenuFullLen Lib "TESTCtrl.dll" Alias "WMenuFullLen" (lpszName$) As Integer
+Declare Sub WMenuEnd Lib "TESTCtrl.dll" Alias "WMenuEnd" ()
+Declare Function WMenuNumAltKeys Lib "TESTCtrl.dll" Alias "WMenuNumAltKeys" () As Integer
+Declare Sub WMenuGetAltKeys Lib "TESTCtrl.dll" Alias "WMenuGetAltKeys" (lpszBuff$)
+Declare Function WMenuNumDupAltKeys Lib "TESTCtrl.dll" Alias "WMenuNumDupAltKeys" () As Integer
+Declare Sub WMenuGetDupAltKeys Lib "TESTCtrl.dll" Alias "WMenuGetDupAltKeys" (lpszBuff$)
+
+' Layered routines to simulate string functions for the coresponding
+' TESTCtrl API
+'----------------------------------------------------------------------------
+Declare Function MenuText (lpszName$) As String
+Declare Function MenuFullText (lpszName$) As String
+Declare Function MenuGetAltKeys () As String
+Declare Function MenuGetDupAltKeys () As String
+
+' Unlike the rest of the menu routines, WMenuSeparator() does not ignore
+' menu separators when specifing indexes. The first menu item is item #1
+' the second #2, and so on including all separators.
+'------------------------------------------------------------------------
+Declare Function WMenuSeparator Lib "TESTCtrl.dll" Alias "WMenuSeparator" (sIndex%) As Integer
+
+' Obsolete Menu API
+'------------------
+Declare Sub WMenuX Lib "TESTCtrl.dll" Alias "WMenuX" (iIndex%)
+Declare Function WMenuGrayedX Lib "TESTCtrl.dll" Alias "WMenuGrayedX" (iIndex%) As Integer
+Declare Function WMenuCheckedX Lib "TESTCtrl.dll" Alias "WMenuCheckedX" (iIndex%) As Integer
+Declare Function WMenuEnabledX Lib "TESTCtrl.dll" Alias "WMenuEnabledX" (iIndex%) As Integer
+
+
+'----------------------------------------------------------------------------
+' MenuText: Layered routine for WMenuText()
+'----------------------------------------------------------------------------
+Function MenuText(lpszName$) Static As String
+Dim lpszBuffer As String
+Dim menuLength As Integer
+ MenuText = ""
+ menuLength = WMenuLen(lpszName$)
+ If menuLength >= 0 Then
+ lpszBuffer = String$(menuLength+1, " ")
+ WMenuText lpszName$, lpszBuffer
+ MenuText = lpszBuffer
+ End if
+ lpszBuffer = ""
+End Function
+
+'----------------------------------------------------------------------------
+' MenuFullText: Layered routine for WMenuFullText()
+'----------------------------------------------------------------------------
+Function MenuFullText(lpszName$) Static As String
+Dim lpszBuffer As String
+Dim menuLength As Integer
+ MenuFullText = ""
+ menuLength = WMenuFullLen(lpszName$)
+ If menuLength >= 0 Then
+ lpszBuffer = String$(menuLength+1, " ")
+ WMenuFullText lpszName$, lpszBuffer
+ MenuFullText = lpszBuffer
+ End If
+ lpszBuffer = ""
+End Function
+
+'----------------------------------------------------------------------------
+' MenuGetAltKeys: Layered routine for WMenuGetAltKeys()
+'----------------------------------------------------------------------------
+Function MenuGetAltKeys() Static As String
+Dim lpszBuffer As String
+ lpszBuffer = String$(WMenuNumAltKeys()+1, " ")
+ WMenuGetAltKeys lpszBuffer
+ MenuGetAltKeys = lpszBuffer
+ lpszBuffer = ""
+End Function
+
+'----------------------------------------------------------------------------
+' MenuGetDupAltKeys: Layered routine for WMenuGetDupAltKeys()
+'----------------------------------------------------------------------------
+Function MenuGetDupAltKeys() Static As String
+Dim lpszBuffer As String
+ lpszBuffer = String$(WMenuNumDupAltKeys()+1, " ")
+ WMenuGetDupAltKeys lpszBuffer
+ MenuGetDupAltKeys = lpszBuffer
+ lpszBuffer = ""
+End Function
+
+' *********************
+'$DEFINE W_MENU_INCLUDED
+'$ENDIF
+'$IFDEF W_A_CONTROL AND NOT W_A_CONTROL_INCLUDED
+' *********************
+
+
+'*** Global routine & constants used by all controls
+'
+Declare Sub WStaticSetClass Lib "TESTCtrl.dll" Alias "WStaticSetClass" (lpszClassName$)
+Declare Sub WResetClasses Lib "TESTCtrl.dll" Alias "WResetClasses" ()
+
+
+' *********************
+'$DEFINE W_A_CONTROL_INCLUDED
+'$ENDIF
+'$IFDEF W_BUTTON AND NOT W_BUTTON_INCLUDED
+' *********************
+
+
+'*** Button routines
+'
+Declare Sub WButtonSetClass Lib "TESTCtrl.dll" Alias "WButtonSetClass" (lpszClassName$)
+Declare Function WButtonExists Lib "TESTCtrl.dll" Alias "WButtonExists" (lpszName$) As Integer
+Declare Function WButtonEnabled Lib "TESTCtrl.dll" Alias "WButtonEnabled" (lpszName$) As Integer
+Declare Function WButtonFocus Lib "TESTCtrl.dll" Alias "WButtonFocus" (lpszName$) As Integer
+Declare Sub WButtonClick Lib "TESTCtrl.dll" Alias "WButtonClick" (lpszName$)
+Declare Sub WButtonHide Lib "TESTCtrl.dll" Alias "WButtonHide" (lpszName$)
+Declare Sub WButtonShow Lib "TESTCtrl.dll" Alias "WButtonShow" (lpszName$)
+Declare Sub WButtonEnable Lib "TESTCtrl.dll" Alias "WButtonEnable" (lpszName$)
+Declare Sub WButtonDisable Lib "TESTCtrl.dll" Alias "WButtonDisable" (lpszName$)
+Declare Function WButtonDefault Lib "TESTCtrl.dll" Alias "WButtonDefault" (lpszName$) As Integer
+Declare Function WButtonDefaults Lib "TESTCtrl.dll" Alias "WButtonDefaults" () As Integer
+Declare Sub WButtonSetFocus Lib "TESTCtrl.dll" Alias "WButtonSetFocus" (lpszName$)
+
+' *********************
+'$DEFINE W_BUTTON_INCLUDED
+'$ENDIF
+'$IFDEF W_CHECK AND NOT W_CHECK_INCLUDED
+' *********************
+
+
+' CheckBox routines
+'
+Declare Sub WCheckSetClass Lib "TESTCtrl.dll" Alias "WCheckSetClass" (lpszClassName$)
+Declare Function WCheckExists Lib "TESTCtrl.dll" Alias "WCheckExists" (lpszName$) As Integer
+Declare Function WCheckEnabled Lib "TESTCtrl.dll" Alias "WCheckEnabled" (lpszName$) As Integer
+Declare Function WCheckFocus Lib "TESTCtrl.dll" Alias "WCheckFocus" (lpszName$) As Integer
+Declare Function WCheckState Lib "TESTCtrl.dll" Alias "WCheckState" (lpszName$) As Integer
+Declare Sub WCheckClick Lib "TESTCtrl.dll" Alias "WCheckClick" (lpszName$)
+Declare Sub WCheckHide Lib "TESTCtrl.dll" Alias "WCheckHide" (lpszName$)
+Declare Sub WCheckShow Lib "TESTCtrl.dll" Alias "WCheckShow" (lpszName$)
+Declare Sub WCheckEnable Lib "TESTCtrl.dll" Alias "WCheckEnable" (lpszName$)
+Declare Sub WCheckDisable Lib "TESTCtrl.dll" Alias "WCheckDisable" (lpszName$)
+Declare Sub WCheckCheck Lib "TESTCtrl.dll" Alias "WCheckCheck" (lpszName$)
+Declare Sub WCheckUnCheck Lib "TESTCtrl.dll" Alias "WCheckUnCheck" (lpszName$)
+Declare Sub WCheckSetFocus Lib "TESTCtrl.dll" Alias "WCheckSetFocus" (lpszName$)
+
+Const UNCHECKED = 0
+Const CHECKED = 1
+Const GRAYED = 2
+
+
+' *********************
+'$DEFINE W_CHECK_INCLUDED
+'$ENDIF
+'$IFDEF W_OPTION AND NOT W_OPTION_INCLUDED
+' *********************
+
+
+'*** Option Button routines
+'
+Declare Sub WOptionSetClass Lib "TESTCtrl.dll" Alias "WOptionSetClass" (lpszClassName$)
+Declare Function WOptionExists Lib "TESTCtrl.dll" Alias "WOptionExists" (lpszName$) As Integer
+Declare Function WOptionEnabled Lib "TESTCtrl.dll" Alias "WOptionEnabled" (lpszName$) As Integer
+Declare Function WOptionFocus Lib "TESTCtrl.dll" Alias "WOptionFocus" (lpszName$) As Integer
+Declare Function WOptionState Lib "TESTCtrl.dll" Alias "WOptionState" (lpszName$) As Integer
+Declare Sub WOptionClick Lib "TESTCtrl.dll" Alias "WOptionClick" (lpszName$)
+Declare Sub WOptionHide Lib "TESTCtrl.dll" Alias "WOptionHide" (lpszName$)
+Declare Sub WOptionShow Lib "TESTCtrl.dll" Alias "WOptionShow" (lpszName$)
+Declare Sub WOptionEnable Lib "TESTCtrl.dll" Alias "WOptionEnable" (lpszName$)
+Declare Sub WOptionDisable Lib "TESTCtrl.dll" Alias "WOptionDisable" (lpszName$)
+Declare Sub WOptionSelect Lib "TESTCtrl.dll" Alias "WOptionSelect" (lpszName$)
+Declare Sub WOptionSetFocus Lib "TESTCtrl.dll" Alias "WOptionSetFocus" (lpszName$)
+
+' *********************
+'$DEFINE W_OPTION_INCLUDED
+'$ENDIF
+'$IFDEF W_LIST AND NOT W_LIST_INCLUDED
+' *********************
+
+
+'*** Listbox routines
+'
+Declare Sub WListSetClass Lib "TESTCtrl.dll" Alias "WListSetClass" (lpszClass$)
+Declare Function WListExists Lib "TESTCtrl.dll" Alias "WListExists" (lpszName$) As Integer
+Declare Function WListCount Lib "TESTCtrl.dll" Alias "WListCount" (lpszName$) As Integer
+Declare Sub WListText Lib "TESTCtrl.dll" Alias "WListText" (lpszName$, lpszBuffer$)
+Declare Function WListLen Lib "TESTCtrl.dll" Alias "WListLen" (lpszName$) As Integer
+Declare Function WListIndex Lib "TESTCtrl.dll" Alias "WListIndex" (lpszName$) As Integer
+Declare Function WListTopIndex Lib "TESTCtrl.dll" Alias "WListTopIndex" (lpszName$) As Integer
+Declare Sub WListItemText Lib "TESTCtrl.dll" Alias "WListItemText" (lpszName$, iItem%, lpszBuffer$)
+Declare Function WListItemLen Lib "TESTCtrl.dll" Alias "WListItemLen" (lpszName$, iItem%) As Integer
+Declare Function WListItemExists Lib "TESTCtrl.dll" Alias "WListItemExists" (lpszName$, lpszItem$) As Integer
+Declare Sub WListItemClk Lib "TESTCtrl.dll" Alias "WListItemClk" (lpszName$, iItem%)
+Declare Sub WListItemCtrlClk Lib "TESTCtrl.dll" Alias "WListItemCtrlClk" (lpszName$, iItem%)
+Declare Sub WListItemShftClk Lib "TESTCtrl.dll" Alias "WListItemShftClk" (lpszName$, iItem%)
+Declare Sub WListItemDblClk Lib "TESTCtrl.dll" Alias "WListItemDblClk" (lpszName$, iItem%)
+Declare Sub WListItemClkT Lib "TESTCtrl.dll" Alias "WListItemClkT" (lpszName$, lpszItem$)
+Declare Sub WListItemCtrlClkT Lib "TESTCtrl.dll" Alias "WListItemCtrlClkT" (lpszName$, lpszItem$)
+Declare Sub WListItemShftClkT Lib "TESTCtrl.dll" Alias "WListItemShftClkT" (lpszName$, lpszItem$)
+Declare Sub WListItemDblClkT Lib "TESTCtrl.dll" Alias "WListItemDblClkT" (lpszName$, lpszItem$)
+Declare Function WListSelCount Lib "TESTCtrl.dll" Alias "WListSelCount" (lpszName$) As Integer
+Declare Sub WListSelItems Lib "TESTCtrl.dll" Alias "WListSelItems" (lpszName$, lpIntArray As Pointer To Integer)
+Declare Sub WListClear Lib "TESTCtrl.dll" Alias "WListClear" (lpszName$)
+Declare Sub WListAddItem Lib "TESTCtrl.dll" Alias "WListAddItem" (lpszName$, lpszItem$)
+Declare Sub WListDelItem Lib "TESTCtrl.dll" Alias "WListDelItem" (lpszName$, iItem%)
+Declare Sub WListDelItemT Lib "TESTCtrl.dll" Alias "WListDelItemT" (lpszName$, lpszItem$)
+Declare Function WListEnabled Lib "TESTCtrl.dll" Alias "WListEnabled" (lpszName$) As Integer
+Declare Sub WListSetFocus Lib "TESTCtrl.dll" Alias "WListSetFocus" (lpszName$)
+
+' Layered routines to simulate string functions for the coresponding
+' TESTCtrl API
+'----------------------------------------------------------------------------
+Declare Function ListText (lpszName$) As String
+Declare Function ListItemText (lpszName$, iItem%) As String
+
+'----------------------------------------------------------------------------
+' ListText: Layered routine for WListText()
+'----------------------------------------------------------------------------
+Function ListText(lpszName$) Static As String
+Dim lpszBuffer As String
+Dim itemLength As Integer
+ ListText = ""
+ itemLength = WListLen(lpszName)
+ If itemLength >= 0 Then
+ lpszBuffer = String$(itemLength+1, " ")
+ WListText lpszName, lpszBuffer
+ ListText = lpszBuffer
+ End If
+ lpszBuffer = ""
+End Function
+
+'----------------------------------------------------------------------------
+' ListItemText: Layered routine for WListItemText()
+'----------------------------------------------------------------------------
+Function ListItemText(lpszName$, sItem%) Static As String
+Dim lpszBuffer As String
+Dim itemLength As Integer
+ ListItemText = ""
+ itemLength = WListItemLen(lpszName, sItem)
+ If itemLength >= 0 Then
+ lpszBuffer = String$(itemLength+1, " ")
+ WListItemText lpszName, sItem, lpszBuffer
+ ListItemText = lpszBuffer
+ End If
+ lpszBuffer = ""
+End Function
+
+
+' *********************
+'$DEFINE W_LIST_INCLUDED
+'$ENDIF
+'$IFDEF W_COMBO AND NOT W_COMBO_INCLUDED
+' *********************
+
+
+'*** Combobox routines
+'
+Declare Sub WComboSetClass Lib "TESTCtrl.dll" Alias "WComboSetClass" (lpszClass$)
+Declare Sub WComboSetLBClass Lib "TESTCtrl.dll" Alias "WComboSetLBClass" (lpszClass$)
+Declare Function WComboExists Lib "TESTCtrl.dll" Alias "WComboExists" (lpszName$) As Integer
+Declare Function WComboCount Lib "TESTCtrl.dll" Alias "WComboCount" (lpszName$) As Integer
+Declare Sub WComboSetText Lib "TESTCtrl.dll" Alias "WComboSetText" (lpszName$, lpszText$)
+Declare Sub WComboText Lib "TESTCtrl.dll" Alias "WComboText" (lpszName$, lpszBuffer$)
+Declare Function WComboLen Lib "TESTCtrl.dll" Alias "WComboLen" (lpszName$) As Integer
+Declare Sub WComboSelText Lib "TESTCtrl.dll" Alias "WComboSelText" (lpszName$, lpszBuffer$)
+Declare Function WComboSelLen Lib "TESTCtrl.dll" Alias "WComboSelLen" (lpszName$) As Integer
+Declare Function WComboIndex Lib "TESTCtrl.dll" Alias "WComboIndex" (lpszName$) As Integer
+Declare Sub WComboItemText Lib "TESTCtrl.dll" Alias "WComboItemText" (lpszName$, iItem%, lpszBuffer$)
+Declare Function WComboItemLen Lib "TESTCtrl.dll" Alias "WComboItemLen" (lpszName$, iItem%) As Integer
+Declare Function WComboItemExists Lib "TESTCtrl.dll" Alias "WComboItemExists" (lpszName$, lpszItem$) As Integer
+Declare Sub WComboItemClk Lib "TESTCtrl.dll" Alias "WComboItemClk" (lpszName$, iItem%)
+Declare Sub WComboItemDblClk Lib "TESTCtrl.dll" Alias "WComboItemDblClk" (lpszName$, iItem%)
+Declare Sub WComboItemClkT Lib "TESTCtrl.dll" Alias "WComboItemClkT" (lpszName$, lpszItem$)
+Declare Sub WComboItemDblClkT Lib "TESTCtrl.dll" Alias "WComboItemDblClkT" (lpszName$, lpszItem$)
+Declare Sub WComboClear Lib "TESTCtrl.dll" Alias "WComboClear" (lpszName$)
+Declare Sub WComboAddItem Lib "TESTCtrl.dll" Alias "WComboAddItem" (lpszName$, lpszItem$)
+Declare Sub WComboDelItem Lib "TESTCtrl.dll" Alias "WComboDelItem" (lpszName$, iItem%)
+Declare Sub WComboDelItemT Lib "TESTCtrl.dll" Alias "WComboDelItemT" (lpszName$, lpszItem$)
+Declare Function WComboEnabled Lib "TESTCtrl.dll" Alias "WComboEnabled" (lpszName$) As Integer
+Declare Sub WComboSetFocus Lib "TESTCtrl.dll" Alias "WComboSetFocus" (lpszName$)
+
+' Layered routines to simulate string functions for the coresponding
+' TESTCtrl API
+'----------------------------------------------------------------------------
+Declare Function ComboText (lpszName$) As String
+Declare Function ComboSelText (lpszName$) As String
+Declare Function ComboItemText (lpszName$, iItem%) As String
+
+'----------------------------------------------------------------------------
+' ComboText: Layered routine for WComboText()
+'----------------------------------------------------------------------------
+Function ComboText(lpszName$) Static As String
+Dim lpszBuffer As String
+Dim itemLength As Integer
+ ComboText = ""
+ itemLength = WComboLen(lpszName$)
+ If itemLength >= 0 Then
+ lpszBuffer = String$(itemLength+1, " ")
+ WComboText lpszName, lpszBuffer
+ ComboText = lpszBuffer
+ End If
+ lpszBuffer = ""
+End Function
+
+'----------------------------------------------------------------------------
+' ComboSelText: Layered routine for WComboSelText()
+'----------------------------------------------------------------------------
+Function ComboSelText(lpszName$) Static As String
+Dim lpszBuffer As String
+Dim itemLength As Integer
+ ComboSelText = ""
+ itemLength = WComboSelLen(lpszName$)
+ If itemLength >= 0 Then
+ lpszBuffer = String$(itemLength+1, " ")
+ WComboSelText lpszName, lpszBuffer
+ ComboSelText = lpszBuffer
+ End If
+ lpszBuffer = ""
+End Function
+
+'----------------------------------------------------------------------------
+' ComboItemText: Layered routine for WComboItemText()
+'----------------------------------------------------------------------------
+Function ComboItemText(lpszName$, sItem%) Static As String
+Dim lpszBuffer As String
+Dim itemLength As Integer
+ ComboItemText = ""
+ itemLength = WComboItemLen(lpszName, sItem)
+ If itemLength >= 0 Then
+ lpszBuffer = String$(itemLength+1, " ")
+ WComboItemText lpszName, sItem, lpszBuffer
+ ComboItemText = lpszBuffer
+ End If
+ lpszBuffer = ""
+End Function
+
+
+' *********************
+'$DEFINE W_COMBO_INCLUDED
+'$ENDIF
+'$IFDEF W_EDIT AND NOT W_EDIT_INCLUDED
+' *********************
+
+
+'*** Edit box routines
+'
+Declare Sub WEditSetClass Lib "TESTCtrl.dll" Alias "WEditSetClass" (lpszClass$)
+Declare Function WEditExists Lib "TESTCtrl.dll" Alias "WEditExists" (lpszName$) As Integer
+Declare Function WEditLen Lib "TESTCtrl.dll" Alias "WEditLen" (lpszName$) As Long
+Declare Sub WEditText Lib "TESTCtrl.dll" Alias "WEditText" (lpszName$, lpszBuffer$)
+Declare Sub WEditSetText Lib "TESTCtrl.dll" Alias "WEditSetText" (lpszName$, lpszBuffer$)
+Declare Sub WEditSelText Lib "TESTCtrl.dll" Alias "WEditSelText" (lpszName$, lpszBuffer$)
+Declare Function WEditSelLen Lib "TESTCtrl.dll" Alias "WEditSelLen" (lpszName$) As Long
+Declare Sub WEditLineText Lib "TESTCtrl.dll" Alias "WEditLineText" (lpszName$, lIndex&, lpszBuffer$)
+Declare Function WEditLineLen Lib "TESTCtrl.dll" Alias "WEditLineLen" (lpszName$, lIndex&) As Long
+Declare Function WEditPos Lib "TESTCtrl.dll" Alias "WEditPos" (lpszName$) As Long
+Declare Function WEditLine Lib "TESTCtrl.dll" Alias "WEditLine" (lpszName$) As Long
+Declare Function WEditChar Lib "TESTCtrl.dll" Alias "WEditChar" (lpszName$) As Long
+Declare Function WEditFirst Lib "TESTCtrl.dll" Alias "WEditFirst" (lpszName$) As Long
+Declare Function WEditLines Lib "TESTCtrl.dll" Alias "WEditLines" (lpszName$) As Long
+Declare Sub WEditClick Lib "TESTCtrl.dll" Alias "WEditClick" (lpszName$)
+Declare Function WEditEnabled Lib "TESTCtrl.dll" Alias "WEditEnabled" (lpszName$) As Integer
+Declare Sub WEditSetFocus Lib "TESTCtrl.dll" Alias "WEditSetFocus" (lpszName$)
+
+' Layered routines to simulate string functions for the coresponding
+' TESTCtrl API
+'----------------------------------------------------------------------------
+Declare Function EditText (lpszName$) As String
+Declare Function EditSelText (lpszName$) As String
+Declare Function EditLineText (lpszName$, lIndex&) As String
+
+'----------------------------------------------------------------------------
+' EditText: Layered routine for WEditText()
+'----------------------------------------------------------------------------
+Function EditText(lpszName$) Static As String
+Dim textLength As Long
+Dim lpszBuffer As String
+ EditText = ""
+ textLength = WEditLen(lpszName)
+ If textLength >= 0 Then
+ lpszBuffer = String$(textLength+1, " ")
+ WEditText lpszName, lpszBuffer
+ EditText = lpszBuffer
+ End If
+ lpszBuffer = ""
+End Function
+
+'----------------------------------------------------------------------------
+' EditSelText: Layered routine for WEditSelText()
+'----------------------------------------------------------------------------
+Function EditSelText(lpszName$) Static As String
+Dim selLength As Long
+Dim lpszBuffer As String
+ EditSelText = ""
+ selLength = WEditSelLen(lpszName)
+ If selLength >= 0 Then
+ lpszBuffer = String$(selLength+1, " ")
+ WEditSelText lpszName, lpszBuffer
+ EditSelText = lpszBuffer
+ End If
+ lpszBuffer = ""
+End Function
+
+'----------------------------------------------------------------------------
+' EditLineText: Layered routine for WEditLineText()
+'----------------------------------------------------------------------------
+Function EditLineText(lpszName$, lIndex&) Static As String
+Dim lineLength As Long
+Dim lpszBuffer As String
+ EditLineText = ""
+ lineLength = WEditLineLen(lpszName, lIndex)
+ If lineLength >= 0 Then
+ lpszBuffer = String$(lineLength+1, " ")
+ WEditLineText lpszName, lIndex&, lpszBuffer
+ EditLineText = lpszBuffer
+ End if
+ lpszBuffer = ""
+End Function
+
+
+' *********************
+'$DEFINE W_EDIT_INCLUDED
+'$ENDIF
+'$IFDEF W_ERROR AND NOT W_ERROR_INCLUDED
+' *********************
+
+
+Declare Function WError Lib "TESTCtrl.dll" Alias "WError" () As Integer
+Declare Sub WErrorSet Lib "TESTCtrl.dll" Alias "WErrorSet" (iErrorNum%)
+Declare Sub WErrorText Lib "TESTCtrl.dll" Alias "WErrorText" (lpszBuffer$)
+Declare Function WErrorLen Lib "TESTCtrl.dll" Alias "WErrorLen" () As Integer
+
+' Layered routines to simulate string functions for the coresponding
+' TESTCtrl API
+'----------------------------------------------------------------------------
+Declare Function ErrorText () As String
+
+Const NO_ERROR = 0
+Const ERR_MENU_NOT_FOUND = 1
+Const ERR_MENU_ITEM_NOT_FOUND = 2
+Const ERR_NOT_A_LISTBOX = 3
+Const ERR_LISTBOX_NOT_FOUND = 4
+Const ERR_ITEM_NOT_IN_LISTBOX = 5
+Const ERR_INVALID_LISTBOX_INDEX = 6
+Const ERR_LISTBOX_HAS_NO_STRINGS = 7
+Const ERR_LISTBOX_IS_NOT_MULTISELECT = 8
+Const ERR_NOT_A_COMBOBOX = 9
+Const ERR_COMBOBOX_NOT_FOUND = 10
+Const ERR_ITEM_NOT_IN_COMBOBOX = 11
+Const ERR_INVALID_COMBOBOX_INDEX = 12
+Const ERR_COMBOBOX_HAS_NO_EDITBOX = 13
+Const ERR_COMBOBOX_HAS_NO_STRINGS = 14
+Const ERR_NOT_AN_EDITBOX = 15
+Const ERR_EDITBOX_NOT_FOUND = 16
+Const ERR_BUTTON_NOT_FOUND = 17
+Const ERR_OPTION_BUTTON_NOT_FOUND = 18
+Const ERR_CHECKBOX_NOT_FOUND = 19
+Const ERR_INVALID_WINDOW_HANDLE = 20
+Const ERR_NO_SYSTEM_MENU = 21
+Const ERR_INVALID_MENU_INDEX = 22
+Const MAX_ERROR = 23
+
+'----------------------------------------------------------------------------
+' ErrorText: Layered routine for WErrorText() of TESTCtrl.DLL.
+' Simulates a DLL String Function.
+'----------------------------------------------------------------------------
+Function ErrorText() Static As String
+Dim lpszBuffer As String
+Dim errorLength As Integer
+ errorLength= WErrorLen()
+ lpszBuffer = String$(errorLength+1, " ")
+ WErrorText lpszBuffer
+ ErrorText = lpszBuffer
+ lpszBuffer = ""
+End Function
+
+
+' *********************
+'$DEFINE W_ERROR_INCLUDED
+'$ENDIF
+'$IFDEF W_ERROR_TRAP AND NOT W_ERROR_TRAP_INCLUDED
+' *********************
+
+
+'----------------------------------------------------------------------------
+' WErrorTrap: This trap is in TESTCTRL.DLL.
+'
+' This trap is here in MSTEST.INC just so it is easy to quickly add a
+' trap that will display any TESTCTRL error messages. It is only included if
+' W_ERROR_TRAP is defined, so if WErrorTrap() is to be used for more than
+' just to display the TESTCTRL error messages, W_ERROR_TRAP should no be
+' defined. and a custom WErrorTrap() should be added to your script.
+'----------------------------------------------------------------------------
+Trap WErrorTrap From "TESTCTRL.DLL"
+ Print WError;" ";ErrorText
+End Trap
+
+
+' *********************
+'$DEFINE W_ERROR_TRAP_INCLUDED
+'$ENDIF
+' *********************
diff --git a/public/sdk/inc/mswsock.h b/public/sdk/inc/mswsock.h
new file mode 100644
index 000000000..78cc99eb5
--- /dev/null
+++ b/public/sdk/inc/mswsock.h
@@ -0,0 +1,181 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ mswsock.h
+
+Abstract:
+
+ This module contains the Microsoft-specific extensions to the Windows
+ Sockets API.
+
+Author:
+
+ Keith Moore (keithmo) 06-Oct-1995 (Separated from WINSOCK.H).
+
+Revision History:
+
+--*/
+
+#ifndef _MSWSOCK_
+#define _MSWSOCK_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Options for connect and disconnect data and options. Used only by
+ * non-TCP/IP transports such as DECNet, OSI TP4, etc.
+ */
+#define SO_CONNDATA 0x7000
+#define SO_CONNOPT 0x7001
+#define SO_DISCDATA 0x7002
+#define SO_DISCOPT 0x7003
+#define SO_CONNDATALEN 0x7004
+#define SO_CONNOPTLEN 0x7005
+#define SO_DISCDATALEN 0x7006
+#define SO_DISCOPTLEN 0x7007
+
+/*
+ * Option for opening sockets for synchronous access.
+ */
+#define SO_OPENTYPE 0x7008
+
+#define SO_SYNCHRONOUS_ALERT 0x10
+#define SO_SYNCHRONOUS_NONALERT 0x20
+
+/*
+ * Other NT-specific options.
+ */
+#define SO_MAXDG 0x7009
+#define SO_MAXPATHDG 0x700A
+#define SO_UPDATE_ACCEPT_CONTEXT 0x700B
+#define SO_CONNECT_TIME 0x700C
+
+/*
+ * TCP options.
+ */
+#define TCP_BSDURGENT 0x7000
+
+/*
+ * Microsoft extended APIs.
+ */
+int
+PASCAL FAR
+WSARecvEx (
+ SOCKET s,
+ char FAR *buf,
+ int len,
+ int FAR *flags
+ );
+
+typedef struct _TRANSMIT_FILE_BUFFERS {
+ LPVOID Head;
+ DWORD HeadLength;
+ LPVOID Tail;
+ DWORD TailLength;
+} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, FAR *LPTRANSMIT_FILE_BUFFERS;
+
+#define TF_DISCONNECT 0x01
+#define TF_REUSE_SOCKET 0x02
+#define TF_WRITE_BEHIND 0x04
+
+BOOL
+PASCAL FAR
+TransmitFile (
+ IN SOCKET hSocket,
+ IN HANDLE hFile,
+ IN DWORD nNumberOfBytesToWrite,
+ IN DWORD nNumberOfBytesPerSend,
+ IN LPOVERLAPPED lpOverlapped,
+ IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
+ IN DWORD dwReserved
+ );
+
+BOOL
+PASCAL FAR
+AcceptEx (
+ IN SOCKET sListenSocket,
+ IN SOCKET sAcceptSocket,
+ IN PVOID lpOutputBuffer,
+ IN DWORD dwReceiveDataLength,
+ IN DWORD dwLocalAddressLength,
+ IN DWORD dwRemoteAddressLength,
+ OUT LPDWORD lpdwBytesReceived,
+ IN LPOVERLAPPED lpOverlapped
+ );
+
+VOID
+PASCAL FAR
+GetAcceptExSockaddrs (
+ IN PVOID lpOutputBuffer,
+ IN DWORD dwReceiveDataLength,
+ IN DWORD dwLocalAddressLength,
+ IN DWORD dwRemoteAddressLength,
+ OUT struct sockaddr **LocalSockaddr,
+ OUT LPINT LocalSockaddrLength,
+ OUT struct sockaddr **RemoteSockaddr,
+ OUT LPINT RemoteSockaddrLength
+ );
+
+/*
+ * "QueryInterface" versions of the above APIs.
+ */
+
+typedef
+BOOL
+(PASCAL FAR * LPFN_TRANSMITFILE)(
+ IN SOCKET hSocket,
+ IN HANDLE hFile,
+ IN DWORD nNumberOfBytesToWrite,
+ IN DWORD nNumberOfBytesPerSend,
+ IN LPOVERLAPPED lpOverlapped,
+ IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
+ IN DWORD dwReserved
+ );
+
+#define WSAID_TRANSMITFILE \
+ {0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
+
+typedef
+BOOL
+(PASCAL FAR * LPFN_ACCEPTEX)(
+ IN SOCKET sListenSocket,
+ IN SOCKET sAcceptSocket,
+ IN PVOID lpOutputBuffer,
+ IN DWORD dwReceiveDataLength,
+ IN DWORD dwLocalAddressLength,
+ IN DWORD dwRemoteAddressLength,
+ OUT LPDWORD lpdwBytesReceived,
+ IN LPOVERLAPPED lpOverlapped
+ );
+
+#define WSAID_ACCEPTEX \
+ {0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
+
+typedef
+VOID
+(PASCAL FAR * LPFN_GETACCEPTEXSOCKADDRS)(
+ IN PVOID lpOutputBuffer,
+ IN DWORD dwReceiveDataLength,
+ IN DWORD dwLocalAddressLength,
+ IN DWORD dwRemoteAddressLength,
+ OUT struct sockaddr **LocalSockaddr,
+ OUT LPINT LocalSockaddrLength,
+ OUT struct sockaddr **RemoteSockaddr,
+ OUT LPINT RemoteSockaddrLength
+ );
+
+#define WSAID_GETACCEPTEXSOCKADDRS \
+ {0xb5367df2,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MSWSOCK_ */
+
diff --git a/public/sdk/inc/nb30.h b/public/sdk/inc/nb30.h
new file mode 100644
index 000000000..1a51629ba
--- /dev/null
+++ b/public/sdk/inc/nb30.h
@@ -0,0 +1,308 @@
+//*++
+//
+// Copyright (c) 1991-1996 Microsoft Corporation
+//
+// Module Name:
+//
+// nb30.h
+//
+// Abstract:
+//
+// This module contains the definitions for portable NetBIOS 3.0
+// support.
+//
+//--*/
+
+#ifndef NCB_INCLUDED
+#define NCB_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************
+ * *
+ * Data structure templates *
+ * *
+ ****************************************************************/
+
+#define NCBNAMSZ 16 /* absolute length of a net name */
+#define MAX_LANA 254 /* lana's in range 0 to MAX_LANA inclusive */
+
+/*
+ * Network Control Block
+ */
+
+typedef struct _NCB {
+ UCHAR ncb_command; /* command code */
+ UCHAR ncb_retcode; /* return code */
+ UCHAR ncb_lsn; /* local session number */
+ UCHAR ncb_num; /* number of our network name */
+ PUCHAR ncb_buffer; /* address of message buffer */
+ WORD ncb_length; /* size of message buffer */
+ UCHAR ncb_callname[NCBNAMSZ]; /* blank-padded name of remote */
+ UCHAR ncb_name[NCBNAMSZ]; /* our blank-padded netname */
+ UCHAR ncb_rto; /* rcv timeout/retry count */
+ UCHAR ncb_sto; /* send timeout/sys timeout */
+ void (CALLBACK *ncb_post)( struct _NCB * ); /* POST routine address */
+ UCHAR ncb_lana_num; /* lana (adapter) number */
+ UCHAR ncb_cmd_cplt; /* 0xff => commmand pending */
+ UCHAR ncb_reserve[10]; /* reserved, used by BIOS */
+ HANDLE ncb_event; /* HANDLE to Win32 event which */
+ /* will be set to the signalled */
+ /* state when an ASYNCH command */
+ /* completes */
+} NCB, *PNCB;
+
+/*
+ * Structure returned to the NCB command NCBASTAT is ADAPTER_STATUS followed
+ * by an array of NAME_BUFFER structures.
+ */
+
+typedef struct _ADAPTER_STATUS {
+ UCHAR adapter_address[6];
+ UCHAR rev_major;
+ UCHAR reserved0;
+ UCHAR adapter_type;
+ UCHAR rev_minor;
+ WORD duration;
+ WORD frmr_recv;
+ WORD frmr_xmit;
+
+ WORD iframe_recv_err;
+
+ WORD xmit_aborts;
+ DWORD xmit_success;
+ DWORD recv_success;
+
+ WORD iframe_xmit_err;
+
+ WORD recv_buff_unavail;
+ WORD t1_timeouts;
+ WORD ti_timeouts;
+ DWORD reserved1;
+ WORD free_ncbs;
+ WORD max_cfg_ncbs;
+ WORD max_ncbs;
+ WORD xmit_buf_unavail;
+ WORD max_dgram_size;
+ WORD pending_sess;
+ WORD max_cfg_sess;
+ WORD max_sess;
+ WORD max_sess_pkt_size;
+ WORD name_count;
+} ADAPTER_STATUS, *PADAPTER_STATUS;
+
+typedef struct _NAME_BUFFER {
+ UCHAR name[NCBNAMSZ];
+ UCHAR name_num;
+ UCHAR name_flags;
+} NAME_BUFFER, *PNAME_BUFFER;
+
+// values for name_flags bits.
+
+#define NAME_FLAGS_MASK 0x87
+
+#define GROUP_NAME 0x80
+#define UNIQUE_NAME 0x00
+
+#define REGISTERING 0x00
+#define REGISTERED 0x04
+#define DEREGISTERED 0x05
+#define DUPLICATE 0x06
+#define DUPLICATE_DEREG 0x07
+
+/*
+ * Structure returned to the NCB command NCBSSTAT is SESSION_HEADER followed
+ * by an array of SESSION_BUFFER structures. If the NCB_NAME starts with an
+ * asterisk then an array of these structures is returned containing the
+ * status for all names.
+ */
+
+typedef struct _SESSION_HEADER {
+ UCHAR sess_name;
+ UCHAR num_sess;
+ UCHAR rcv_dg_outstanding;
+ UCHAR rcv_any_outstanding;
+} SESSION_HEADER, *PSESSION_HEADER;
+
+typedef struct _SESSION_BUFFER {
+ UCHAR lsn;
+ UCHAR state;
+ UCHAR local_name[NCBNAMSZ];
+ UCHAR remote_name[NCBNAMSZ];
+ UCHAR rcvs_outstanding;
+ UCHAR sends_outstanding;
+} SESSION_BUFFER, *PSESSION_BUFFER;
+
+// Values for state
+
+#define LISTEN_OUTSTANDING 0x01
+#define CALL_PENDING 0x02
+#define SESSION_ESTABLISHED 0x03
+#define HANGUP_PENDING 0x04
+#define HANGUP_COMPLETE 0x05
+#define SESSION_ABORTED 0x06
+
+/*
+ * Structure returned to the NCB command NCBENUM.
+ *
+ * On a system containing lana's 0, 2 and 3, a structure with
+ * length =3, lana[0]=0, lana[1]=2 and lana[2]=3 will be returned.
+ */
+
+typedef struct _LANA_ENUM {
+ UCHAR length; // Number of valid entries in lana[]
+ UCHAR lana[MAX_LANA+1];
+} LANA_ENUM, *PLANA_ENUM;
+
+/*
+ * Structure returned to the NCB command NCBFINDNAME is FIND_NAME_HEADER followed
+ * by an array of FIND_NAME_BUFFER structures.
+ */
+
+typedef struct _FIND_NAME_HEADER {
+ WORD node_count;
+ UCHAR reserved;
+ UCHAR unique_group;
+} FIND_NAME_HEADER, *PFIND_NAME_HEADER;
+
+typedef struct _FIND_NAME_BUFFER {
+ UCHAR length;
+ UCHAR access_control;
+ UCHAR frame_control;
+ UCHAR destination_addr[6];
+ UCHAR source_addr[6];
+ UCHAR routing_info[18];
+} FIND_NAME_BUFFER, *PFIND_NAME_BUFFER;
+
+/*
+ * Structure provided with NCBACTION. The purpose of NCBACTION is to provide
+ * transport specific extensions to netbios.
+ */
+
+typedef struct _ACTION_HEADER {
+ ULONG transport_id;
+ USHORT action_code;
+ USHORT reserved;
+} ACTION_HEADER, *PACTION_HEADER;
+
+// Values for transport_id
+
+#define ALL_TRANSPORTS "M\0\0\0"
+#define MS_NBF "MNBF"
+
+
+/****************************************************************
+ * *
+ * Special values and constants *
+ * *
+ ****************************************************************/
+
+/*
+ * NCB Command codes
+ */
+
+#define NCBCALL 0x10 /* NCB CALL */
+#define NCBLISTEN 0x11 /* NCB LISTEN */
+#define NCBHANGUP 0x12 /* NCB HANG UP */
+#define NCBSEND 0x14 /* NCB SEND */
+#define NCBRECV 0x15 /* NCB RECEIVE */
+#define NCBRECVANY 0x16 /* NCB RECEIVE ANY */
+#define NCBCHAINSEND 0x17 /* NCB CHAIN SEND */
+#define NCBDGSEND 0x20 /* NCB SEND DATAGRAM */
+#define NCBDGRECV 0x21 /* NCB RECEIVE DATAGRAM */
+#define NCBDGSENDBC 0x22 /* NCB SEND BROADCAST DATAGRAM */
+#define NCBDGRECVBC 0x23 /* NCB RECEIVE BROADCAST DATAGRAM */
+#define NCBADDNAME 0x30 /* NCB ADD NAME */
+#define NCBDELNAME 0x31 /* NCB DELETE NAME */
+#define NCBRESET 0x32 /* NCB RESET */
+#define NCBASTAT 0x33 /* NCB ADAPTER STATUS */
+#define NCBSSTAT 0x34 /* NCB SESSION STATUS */
+#define NCBCANCEL 0x35 /* NCB CANCEL */
+#define NCBADDGRNAME 0x36 /* NCB ADD GROUP NAME */
+#define NCBENUM 0x37 /* NCB ENUMERATE LANA NUMBERS */
+#define NCBUNLINK 0x70 /* NCB UNLINK */
+#define NCBSENDNA 0x71 /* NCB SEND NO ACK */
+#define NCBCHAINSENDNA 0x72 /* NCB CHAIN SEND NO ACK */
+#define NCBLANSTALERT 0x73 /* NCB LAN STATUS ALERT */
+#define NCBACTION 0x77 /* NCB ACTION */
+#define NCBFINDNAME 0x78 /* NCB FIND NAME */
+#define NCBTRACE 0x79 /* NCB TRACE */
+
+
+#define ASYNCH 0x80 /* high bit set == asynchronous */
+
+/*
+ * NCB Return codes
+ */
+
+#define NRC_GOODRET 0x00 /* good return */
+ /* also returned when ASYNCH request accepted */
+#define NRC_BUFLEN 0x01 /* illegal buffer length */
+#define NRC_ILLCMD 0x03 /* illegal command */
+#define NRC_CMDTMO 0x05 /* command timed out */
+#define NRC_INCOMP 0x06 /* message incomplete, issue another command */
+#define NRC_BADDR 0x07 /* illegal buffer address */
+#define NRC_SNUMOUT 0x08 /* session number out of range */
+#define NRC_NORES 0x09 /* no resource available */
+#define NRC_SCLOSED 0x0a /* session closed */
+#define NRC_CMDCAN 0x0b /* command cancelled */
+#define NRC_DUPNAME 0x0d /* duplicate name */
+#define NRC_NAMTFUL 0x0e /* name table full */
+#define NRC_ACTSES 0x0f /* no deletions, name has active sessions */
+#define NRC_LOCTFUL 0x11 /* local session table full */
+#define NRC_REMTFUL 0x12 /* remote session table full */
+#define NRC_ILLNN 0x13 /* illegal name number */
+#define NRC_NOCALL 0x14 /* no callname */
+#define NRC_NOWILD 0x15 /* cannot put * in NCB_NAME */
+#define NRC_INUSE 0x16 /* name in use on remote adapter */
+#define NRC_NAMERR 0x17 /* name deleted */
+#define NRC_SABORT 0x18 /* session ended abnormally */
+#define NRC_NAMCONF 0x19 /* name conflict detected */
+#define NRC_IFBUSY 0x21 /* interface busy, IRET before retrying */
+#define NRC_TOOMANY 0x22 /* too many commands outstanding, retry later */
+#define NRC_BRIDGE 0x23 /* ncb_lana_num field invalid */
+#define NRC_CANOCCR 0x24 /* command completed while cancel occurring */
+#define NRC_CANCEL 0x26 /* command not valid to cancel */
+#define NRC_DUPENV 0x30 /* name defined by anther local process */
+#define NRC_ENVNOTDEF 0x34 /* environment undefined. RESET required */
+#define NRC_OSRESNOTAV 0x35 /* required OS resources exhausted */
+#define NRC_MAXAPPS 0x36 /* max number of applications exceeded */
+#define NRC_NOSAPS 0x37 /* no saps available for netbios */
+#define NRC_NORESOURCES 0x38 /* requested resources are not available */
+#define NRC_INVADDRESS 0x39 /* invalid ncb address or length > segment */
+#define NRC_INVDDID 0x3B /* invalid NCB DDID */
+#define NRC_LOCKFAIL 0x3C /* lock of user area failed */
+#define NRC_OPENERR 0x3f /* NETBIOS not loaded */
+#define NRC_SYSTEM 0x40 /* system error */
+
+#define NRC_PENDING 0xff /* asynchronous command is not yet finished */
+
+/****************************************************************
+ * *
+ * main user entry point for NetBIOS 3.0 *
+ * *
+ * Usage: result = Netbios( pncb ); *
+ ****************************************************************/
+
+UCHAR
+APIENTRY
+Netbios(
+ PNCB pncb
+ );
+
+/****************************************************************
+ * *
+ * Prefix for callback routines *
+ * *
+ * Usage in a declaration: NCB_POST MyPostRoutine( PNCB pncb ); *
+ ****************************************************************/
+
+#define NCB_POST void CALLBACK
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NCB_INCLUDED */
diff --git a/public/sdk/inc/nddeapi.h b/public/sdk/inc/nddeapi.h
new file mode 100644
index 000000000..cce14719b
--- /dev/null
+++ b/public/sdk/inc/nddeapi.h
@@ -0,0 +1,400 @@
+/************************************************************************
+* Copyright (c) Wonderware Software Development Corp. 1991-1993. *
+* All Rights Reserved. *
+* Copyright (c) Microsoft Inc. 1995-1996 *
+* All Rights Reserved. *
+************************************************************************/
+
+#ifndef _INC_NDDEAPI
+#define _INC_NDDEAPI
+
+#include <pshpack1.h> /* Assume byte packing throughout */
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+#ifndef CNLEN /* If not included with netapi header */
+#define CNLEN 15 /* Computer name length */
+#define UNCLEN (CNLEN+2) /* UNC computer name length */
+#endif /* CNLEN */
+
+// the choice of this char affects legal share,topic, etc. names
+#define SEP_CHAR ','
+#define BAR_CHAR "|"
+#define SEP_WCHAR L','
+#define BAR_WCHAR L"|"
+
+/* API error codes */
+#define NDDE_NO_ERROR 0
+#define NDDE_ACCESS_DENIED 1
+#define NDDE_BUF_TOO_SMALL 2
+#define NDDE_ERROR_MORE_DATA 3
+#define NDDE_INVALID_SERVER 4
+#define NDDE_INVALID_SHARE 5
+#define NDDE_INVALID_PARAMETER 6
+#define NDDE_INVALID_LEVEL 7
+#define NDDE_INVALID_PASSWORD 8
+#define NDDE_INVALID_ITEMNAME 9
+#define NDDE_INVALID_TOPIC 10
+#define NDDE_INTERNAL_ERROR 11
+#define NDDE_OUT_OF_MEMORY 12
+#define NDDE_INVALID_APPNAME 13
+#define NDDE_NOT_IMPLEMENTED 14
+#define NDDE_SHARE_ALREADY_EXIST 15
+#define NDDE_SHARE_NOT_EXIST 16
+#define NDDE_INVALID_FILENAME 17
+#define NDDE_NOT_RUNNING 18
+#define NDDE_INVALID_WINDOW 19
+#define NDDE_INVALID_SESSION 20
+#define NDDE_INVALID_ITEM_LIST 21
+#define NDDE_SHARE_DATA_CORRUPTED 22
+#define NDDE_REGISTRY_ERROR 23
+#define NDDE_CANT_ACCESS_SERVER 24
+#define NDDE_INVALID_SPECIAL_COMMAND 25
+#define NDDE_INVALID_SECURITY_DESC 26
+#define NDDE_TRUST_SHARE_FAIL 27
+
+/* string size constants */
+#define MAX_NDDESHARENAME 256
+#define MAX_DOMAINNAME 15
+#define MAX_USERNAME 15
+#define MAX_APPNAME 255
+#define MAX_TOPICNAME 255
+#define MAX_ITEMNAME 255
+
+/* connectFlags bits for ndde service affix */
+#define NDDEF_NOPASSWORDPROMPT 0x0001
+#define NDDEF_NOCACHELOOKUP 0x0002
+#define NDDEF_STRIP_NDDE 0x0004
+
+
+/* NDDESHAREINFO - contains information about a NDDE share */
+
+struct NDdeShareInfo_tag {
+ LONG lRevision;
+ LPTSTR lpszShareName;
+ LONG lShareType;
+ LPTSTR lpszAppTopicList;
+ LONG fSharedFlag;
+ LONG fService;
+ LONG fStartAppFlag;
+ LONG nCmdShow;
+ LONG qModifyId[2];
+ LONG cNumItems;
+ LPTSTR lpszItemList;
+};
+typedef struct NDdeShareInfo_tag NDDESHAREINFO;
+typedef struct NDdeShareInfo_tag * PNDDESHAREINFO;
+
+/* Share Types */
+#define SHARE_TYPE_OLD 0x01 // Excel|sheet1.xls
+#define SHARE_TYPE_NEW 0x02 // ExcelWorksheet|sheet1.xls
+#define SHARE_TYPE_STATIC 0x04 // ClipSrv|SalesData
+
+/*
+ Add new share
+*/
+UINT WINAPI
+NDdeShareAddA (
+ LPSTR lpszServer, // server to execute on ( must be NULL )
+ UINT nLevel, // info level must be 2
+ PSECURITY_DESCRIPTOR pSD, // initial security descriptor (optional)
+ LPBYTE lpBuffer, // contains (NDDESHAREINFO) + data
+ DWORD cBufSize // sizeof supplied buffer
+);
+
+UINT WINAPI
+NDdeShareAddW (
+ LPWSTR lpszServer, // server to execute on ( must be NULL )
+ UINT nLevel, // info level must be 2
+ PSECURITY_DESCRIPTOR pSD, // initial security descriptor (optional)
+ LPBYTE lpBuffer, // contains (NDDESHAREINFO) + data
+ DWORD cBufSize // sizeof supplied buffer
+);
+
+/*
+ Delete a share
+*/
+UINT WINAPI
+NDdeShareDelA (
+ LPSTR lpszServer, // server to execute on ( must be NULL )
+ LPSTR lpszShareName, // name of share to delete
+ UINT wReserved // reserved for force level (?) 0 for now
+);
+
+UINT WINAPI
+NDdeShareDelW (
+ LPWSTR lpszServer, // server to execute on ( must be NULL )
+ LPWSTR lpszShareName, // name of share to delete
+ UINT wReserved // reserved for force level (?) 0 for now
+);
+
+/*
+ Get Share Security Descriptor
+*/
+
+UINT WINAPI
+NDdeGetShareSecurityA(
+ LPSTR lpszServer, // server to execute on ( must be NULL )
+ LPSTR lpszShareName, // name of share to delete
+ SECURITY_INFORMATION si, // requested information
+ PSECURITY_DESCRIPTOR pSD, // address of security descriptor
+ DWORD cbSD, // size of buffer for security descriptor
+ LPDWORD lpcbsdRequired // address of required size of buffer
+);
+
+UINT WINAPI
+NDdeGetShareSecurityW(
+ LPWSTR lpszServer, // server to execute on ( must be NULL )
+ LPWSTR lpszShareName, // name of share to delete
+ SECURITY_INFORMATION si, // requested information
+ PSECURITY_DESCRIPTOR pSD, // address of security descriptor
+ DWORD cbSD, // size of buffer for security descriptor
+ LPDWORD lpcbsdRequired // address of required size of buffer
+);
+
+/*
+ Set Share Security Descriptor
+*/
+
+UINT WINAPI
+NDdeSetShareSecurityA(
+ LPSTR lpszServer, // server to execute on ( must be NULL )
+ LPSTR lpszShareName, // name of share to delete
+ SECURITY_INFORMATION si, // type of information to set
+ PSECURITY_DESCRIPTOR pSD // address of security descriptor
+);
+
+UINT WINAPI
+NDdeSetShareSecurityW(
+ LPWSTR lpszServer, // server to execute on ( must be NULL )
+ LPWSTR lpszShareName, // name of share to delete
+ SECURITY_INFORMATION si, // type of information to set
+ PSECURITY_DESCRIPTOR pSD // address of security descriptor
+);
+
+/*
+ Enumerate shares
+*/
+UINT WINAPI
+NDdeShareEnumA (
+ LPSTR lpszServer, // server to execute on ( NULL for local )
+ UINT nLevel, // 0 for null separated 00 terminated list
+ LPBYTE lpBuffer, // pointer to buffer
+ DWORD cBufSize, // size of buffer
+ LPDWORD lpnEntriesRead, // number of names returned
+ LPDWORD lpcbTotalAvailable // number of bytes available
+);
+
+UINT WINAPI
+NDdeShareEnumW (
+ LPWSTR lpszServer, // server to execute on ( NULL for local )
+ UINT nLevel, // 0 for null separated 00 terminated list
+ LPBYTE lpBuffer, // pointer to buffer
+ DWORD cBufSize, // size of buffer
+ LPDWORD lpnEntriesRead, // number of names returned
+ LPDWORD lpcbTotalAvailable // number of bytes available
+);
+
+/*
+ Get information on a share
+*/
+UINT WINAPI
+NDdeShareGetInfoA (
+ LPSTR lpszServer, // server to execute on ( must be NULL )
+ LPSTR lpszShareName, // name of share
+ UINT nLevel, // info level must be 2
+ LPBYTE lpBuffer, // gets struct containing (NDDESHAREINFO) + data
+ DWORD cBufSize, // sizeof buffer
+ LPDWORD lpnTotalAvailable, // number of bytes available
+ LPWORD lpnItems // item mask for partial getinfo (must be 0)
+);
+
+UINT WINAPI
+NDdeShareGetInfoW (
+ LPWSTR lpszServer, // server to execute on ( must be NULL )
+ LPWSTR lpszShareName, // name of share
+ UINT nLevel, // info level must be 2
+ LPBYTE lpBuffer, // gets struct containing (NDDESHAREINFO) + data
+ DWORD cBufSize, // sizeof buffer
+ LPDWORD lpnTotalAvailable, // number of bytes available
+ LPWORD lpnItems // item mask for partial getinfo (must be 0)
+);
+
+/*
+ Modify DDE share data
+*/
+UINT WINAPI
+NDdeShareSetInfoA (
+ LPSTR lpszServer, // server to execute on ( must be NULL )
+ LPSTR lpszShareName, // name of share
+ UINT nLevel, // info level must be 2
+ LPBYTE lpBuffer, // points to struct with (NDDESHAREINFO) + data
+ DWORD cBufSize, // sizeof buffer
+ WORD sParmNum // Parameter index ( must be 0 - entire )
+);
+
+UINT WINAPI
+NDdeShareSetInfoW (
+ LPWSTR lpszServer, // server to execute on ( must be NULL )
+ LPWSTR lpszShareName, // name of share
+ UINT nLevel, // info level must be 2
+ LPBYTE lpBuffer, // points to struct with (NDDESHAREINFO) + data
+ DWORD cBufSize, // sizeof buffer
+ WORD sParmNum // Parameter index ( must be 0 - entire )
+);
+
+/*
+ Set/Create a trusted share
+*/
+
+UINT WINAPI
+NDdeSetTrustedShareA (
+ LPSTR lpszServer, // server to execute on ( must be NULL )
+ LPSTR lpszShareName, // name of share to delete
+ DWORD dwTrustOptions // trust options to apply
+);
+
+UINT WINAPI
+NDdeSetTrustedShareW (
+ LPWSTR lpszServer, // server to execute on ( must be NULL )
+ LPWSTR lpszShareName, // name of share to delete
+ DWORD dwTrustOptions // trust options to apply
+);
+
+ /* Trusted share options */
+#define NDDE_TRUST_SHARE_START 0x80000000L // Start App Allowed
+#define NDDE_TRUST_SHARE_INIT 0x40000000L // Init Conv Allowed
+#define NDDE_TRUST_SHARE_DEL 0x20000000L // Delete Trusted Share (on set)
+#define NDDE_TRUST_CMD_SHOW 0x10000000L // Use supplied cmd show
+#define NDDE_CMD_SHOW_MASK 0x0000FFFFL // Command Show mask
+
+/*
+ Get a trusted share options
+*/
+
+UINT WINAPI
+NDdeGetTrustedShareA (
+ LPSTR lpszServer, // server to execute on ( must be NULL )
+ LPSTR lpszShareName, // name of share to query
+ LPDWORD lpdwTrustOptions, // trust options in effect
+ LPDWORD lpdwShareModId0, // first word of share mod id
+ LPDWORD lpdwShareModId1 // second word of share mod id
+);
+
+UINT WINAPI
+NDdeGetTrustedShareW (
+ LPWSTR lpszServer, // server to execute on ( must be NULL )
+ LPWSTR lpszShareName, // name of share to query
+ LPDWORD lpdwTrustOptions, // trust options in effect
+ LPDWORD lpdwShareModId0, // first word of share mod id
+ LPDWORD lpdwShareModId1 // second word of share mod id
+);
+
+
+/*
+ Enumerate trusted shares
+*/
+UINT WINAPI
+NDdeTrustedShareEnumA (
+ LPSTR lpszServer, // server to execute on ( NULL for local )
+ UINT nLevel, // 0 for null separated 00 terminated list
+ LPBYTE lpBuffer, // pointer to buffer
+ DWORD cBufSize, // size of buffer
+ LPDWORD lpnEntriesRead, // number of names returned
+ LPDWORD lpcbTotalAvailable // number of bytes available
+);
+
+UINT WINAPI
+NDdeTrustedShareEnumW (
+ LPWSTR lpszServer, // server to execute on ( NULL for local )
+ UINT nLevel, // 0 for null separated 00 terminated list
+ LPBYTE lpBuffer, // pointer to buffer
+ DWORD cBufSize, // size of buffer
+ LPDWORD lpnEntriesRead, // number of names returned
+ LPDWORD lpcbTotalAvailable // number of bytes available
+);
+
+/*
+ Convert error code to string value
+*/
+UINT WINAPI
+NDdeGetErrorStringA (
+ UINT uErrorCode, // Error code to get string for
+ LPSTR lpszErrorString, // buffer to hold error string
+ DWORD cBufSize // sizeof buffer
+);
+
+UINT WINAPI
+NDdeGetErrorStringW (
+ UINT uErrorCode, // Error code to get string for
+ LPWSTR lpszErrorString, // buffer to hold error string
+ DWORD cBufSize // sizeof buffer
+);
+
+/*
+ Validate share name format
+*/
+BOOL WINAPI
+NDdeIsValidShareNameA (
+ LPSTR shareName
+);
+
+BOOL WINAPI
+NDdeIsValidShareNameW (
+ LPWSTR shareName
+);
+
+/*
+ Validate application/topic list format
+*/
+BOOL WINAPI
+NDdeIsValidAppTopicListA (
+ LPSTR targetTopic
+);
+
+BOOL WINAPI
+NDdeIsValidAppTopicListW (
+ LPWSTR targetTopic
+);
+
+#ifdef UNICODE
+#define NDdeShareAdd NDdeShareAddW
+#define NDdeShareDel NDdeShareDelW
+#define NDdeSetShareSecurity NDdeSetShareSecurityW
+#define NDdeGetShareSecurity NDdeGetShareSecurityW
+#define NDdeShareEnum NDdeShareEnumW
+#define NDdeShareGetInfo NDdeShareGetInfoW
+#define NDdeShareSetInfo NDdeShareSetInfoW
+#define NDdeGetErrorString NDdeGetErrorStringW
+#define NDdeIsValidShareName NDdeIsValidShareNameW
+#define NDdeIsValidAppTopicList NDdeIsValidAppTopicListW
+#define NDdeSetTrustedShare NDdeSetTrustedShareW
+#define NDdeGetTrustedShare NDdeGetTrustedShareW
+#define NDdeTrustedShareEnum NDdeTrustedShareEnumW
+#else
+#define NDdeShareAdd NDdeShareAddA
+#define NDdeShareDel NDdeShareDelA
+#define NDdeSetShareSecurity NDdeSetShareSecurityA
+#define NDdeGetShareSecurity NDdeGetShareSecurityA
+#define NDdeShareEnum NDdeShareEnumA
+#define NDdeShareGetInfo NDdeShareGetInfoA
+#define NDdeShareSetInfo NDdeShareSetInfoA
+#define NDdeGetErrorString NDdeGetErrorStringA
+#define NDdeIsValidShareName NDdeIsValidShareNameA
+#define NDdeIsValidAppTopicList NDdeIsValidAppTopicListA
+#define NDdeSetTrustedShare NDdeSetTrustedShareA
+#define NDdeGetTrustedShare NDdeGetTrustedShareA
+#define NDdeTrustedShareEnum NDdeTrustedShareEnumA
+#endif
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#include <poppack.h>
+
+#endif /* _INC_NDDEAPI */
+
+
diff --git a/public/sdk/inc/nddesec.h b/public/sdk/inc/nddesec.h
new file mode 100644
index 000000000..17ca28e15
--- /dev/null
+++ b/public/sdk/inc/nddesec.h
@@ -0,0 +1,104 @@
+//
+// NDDESEC.H
+// Copyright (c) 1994-1996, Microsoft Corp. All rights reserved.
+//
+
+#ifndef _INC_NDDESEC
+#define _INC_NDDESEC
+
+#define NDDE_SHAREDB_ADD (0x00000001)
+#define NDDE_SHAREDB_DELETE (0x00000002)
+#define NDDE_SHAREDB_LIST (0x00000004)
+
+#define NDDE_SHAREDB_ADMIN (NDDE_SHAREDB_ADD | \
+ NDDE_SHAREDB_DELETE | \
+ NDDE_SHAREDB_LIST | \
+ READ_CONTROL | \
+ WRITE_DAC | \
+ WRITE_OWNER)
+
+#define NDDE_SHAREDB_OPER (NDDE_SHAREDB_ADD | \
+ NDDE_SHAREDB_DELETE | \
+ NDDE_SHAREDB_LIST)
+
+#define NDDE_SHAREDB_POWER (NDDE_SHAREDB_ADD | \
+ NDDE_SHAREDB_DELETE | \
+ NDDE_SHAREDB_LIST)
+
+#define NDDE_SHAREDB_USER (NDDE_SHAREDB_ADD | \
+ NDDE_SHAREDB_DELETE | \
+ NDDE_SHAREDB_LIST)
+
+#define NDDE_SHAREDB_EVERYONE (NDDE_SHAREDB_LIST)
+
+#define NDDE_SHARE_READ (0x00000001)
+#define NDDE_SHARE_WRITE (0x00000002)
+#define NDDE_SHARE_INITIATE_STATIC (0x00000004)
+#define NDDE_SHARE_INITIATE_LINK (0x00000008)
+#define NDDE_SHARE_REQUEST (0x00000010)
+#define NDDE_SHARE_ADVISE (0x00000020)
+#define NDDE_SHARE_POKE (0x00000040)
+#define NDDE_SHARE_EXECUTE (0x00000080)
+#define NDDE_SHARE_ADD_ITEMS (0x00000100)
+#define NDDE_SHARE_LIST_ITEMS (0x00000200)
+
+#define NDDE_SHARE_GENERIC_READ (NDDE_SHARE_READ | \
+ NDDE_SHARE_INITIATE_STATIC | \
+ NDDE_SHARE_REQUEST | \
+ NDDE_SHARE_ADVISE | \
+ NDDE_SHARE_LIST_ITEMS)
+
+#define NDDE_SHARE_GENERIC_WRITE (NDDE_SHARE_INITIATE_STATIC | \
+ NDDE_SHARE_INITIATE_LINK | \
+ NDDE_SHARE_POKE | \
+ DELETE)
+
+#define NDDE_SHARE_GENERIC_EXECUTE (NDDE_SHARE_INITIATE_STATIC | \
+ NDDE_SHARE_INITIATE_LINK | \
+ NDDE_SHARE_EXECUTE)
+
+#define NDDE_SHARE_GENERIC_ALL (NDDE_SHARE_READ | \
+ NDDE_SHARE_WRITE | \
+ NDDE_SHARE_INITIATE_STATIC | \
+ NDDE_SHARE_INITIATE_LINK | \
+ NDDE_SHARE_REQUEST | \
+ NDDE_SHARE_ADVISE | \
+ NDDE_SHARE_POKE | \
+ NDDE_SHARE_EXECUTE | \
+ NDDE_SHARE_ADD_ITEMS | \
+ NDDE_SHARE_LIST_ITEMS | \
+ DELETE | \
+ READ_CONTROL | \
+ WRITE_DAC | \
+ WRITE_OWNER)
+
+
+#define NDDE_ITEM_REQUEST (0x00000001)
+#define NDDE_ITEM_ADVISE (0x00000002)
+#define NDDE_ITEM_POKE (0x00000004)
+
+#define NDDE_ITEM_GENERIC_READ (NDDE_ITEM_REQUEST | NDDE_ITEM_ADVISE)
+#define NDDE_ITEM_GENERIC_WRITE (NDDE_ITEM_POKE)
+#define NDDE_ITEM_GENERIC_EXECUTE (0)
+#define NDDE_ITEM_GENERIC_ALL (NDDE_ITEM_REQUEST | \
+ NDDE_ITEM_ADVISE | \
+ NDDE_ITEM_POKE | \
+ DELETE | \
+ READ_CONTROL | \
+ WRITE_DAC | \
+ WRITE_OWNER)
+
+#define NDDE_GUI_NONE (0)
+
+#define NDDE_GUI_READ (NDDE_SHARE_GENERIC_READ)
+
+#define NDDE_GUI_READ_LINK (NDDE_SHARE_GENERIC_READ | \
+ NDDE_SHARE_INITIATE_LINK)
+
+#define NDDE_GUI_CHANGE (NDDE_SHARE_GENERIC_READ | \
+ NDDE_SHARE_GENERIC_WRITE | \
+ NDDE_SHARE_GENERIC_EXECUTE)
+
+#define NDDE_GUI_FULL_CONTROL (NDDE_SHARE_GENERIC_ALL)
+
+#endif
diff --git a/public/sdk/inc/netevent.dbg b/public/sdk/inc/netevent.dbg
new file mode 100644
index 000000000..4715ff20f
--- /dev/null
+++ b/public/sdk/inc/netevent.dbg
@@ -0,0 +1,290 @@
+//
+// This file maps message Id values in to a text string that contains
+// the symbolic name used for the message Id. Useful for debugging
+// output.
+//
+
+struct {
+ DWORD MessageId;
+ char *SymbolicName;
+} neteventSymbolicNames[] = {
+ (DWORD) EVENT_SRV_SERVICE_FAILED, "EVENT_SRV_SERVICE_FAILED",
+ (DWORD) EVENT_SRV_RESOURCE_SHORTAGE, "EVENT_SRV_RESOURCE_SHORTAGE",
+ (DWORD) EVENT_SRV_CANT_CREATE_DEVICE, "EVENT_SRV_CANT_CREATE_DEVICE",
+ (DWORD) EVENT_SRV_CANT_CREATE_PROCESS, "EVENT_SRV_CANT_CREATE_PROCESS",
+ (DWORD) EVENT_SRV_CANT_CREATE_THREAD, "EVENT_SRV_CANT_CREATE_THREAD",
+ (DWORD) EVENT_SRV_UNEXPECTED_DISC, "EVENT_SRV_UNEXPECTED_DISC",
+ (DWORD) EVENT_SRV_INVALID_REQUEST, "EVENT_SRV_INVALID_REQUEST",
+ (DWORD) EVENT_SRV_CANT_OPEN_NPFS, "EVENT_SRV_CANT_OPEN_NPFS",
+ (DWORD) EVENT_SRV_CANT_GROW_TABLE, "EVENT_SRV_CANT_GROW_TABLE",
+ (DWORD) EVENT_SRV_CANT_START_SCAVENGER, "EVENT_SRV_CANT_START_SCAVENGER",
+ (DWORD) EVENT_SRV_IRP_STACK_SIZE, "EVENT_SRV_IRP_STACK_SIZE",
+ (DWORD) EVENT_SRV_NETWORK_ERROR, "EVENT_SRV_NETWORK_ERROR",
+ (DWORD) EVENT_SRV_DISK_FULL, "EVENT_SRV_DISK_FULL",
+ (DWORD) EVENT_SRV_NO_VIRTUAL_MEMORY, "EVENT_SRV_NO_VIRTUAL_MEMORY",
+ (DWORD) EVENT_SRV_NONPAGED_POOL_LIMIT, "EVENT_SRV_NONPAGED_POOL_LIMIT",
+ (DWORD) EVENT_SRV_PAGED_POOL_LIMIT, "EVENT_SRV_PAGED_POOL_LIMIT",
+ (DWORD) EVENT_SRV_NO_NONPAGED_POOL, "EVENT_SRV_NO_NONPAGED_POOL",
+ (DWORD) EVENT_SRV_NO_PAGED_POOL, "EVENT_SRV_NO_PAGED_POOL",
+ (DWORD) EVENT_SRV_NO_WORK_ITEM, "EVENT_SRV_NO_WORK_ITEM",
+ (DWORD) EVENT_SRV_NO_FREE_CONNECTIONS, "EVENT_SRV_NO_FREE_CONNECTIONS",
+ (DWORD) EVENT_SRV_NO_FREE_RAW_WORK_ITEM, "EVENT_SRV_NO_FREE_RAW_WORK_ITEM",
+ (DWORD) EVENT_SRV_NO_BLOCKING_IO, "EVENT_SRV_NO_BLOCKING_IO",
+ (DWORD) EVENT_SRV_KEY_NOT_FOUND, "EVENT_SRV_KEY_NOT_FOUND",
+ (DWORD) EVENT_SRV_KEY_NOT_CREATED, "EVENT_SRV_KEY_NOT_CREATED",
+ (DWORD) EVENT_SRV_NO_TRANSPORTS_BOUND, "EVENT_SRV_NO_TRANSPORTS_BOUND",
+ (DWORD) EVENT_SRV_CANT_BIND_TO_TRANSPORT, "EVENT_SRV_CANT_BIND_TO_TRANSPORT",
+ (DWORD) EVENT_SRV_CANT_BIND_DUP_NAME, "EVENT_SRV_CANT_BIND_DUP_NAME",
+ (DWORD) EVENT_SRV_INVALID_REGISTRY_VALUE, "EVENT_SRV_INVALID_REGISTRY_VALUE",
+ (DWORD) EVENT_SRV_INVALID_SD, "EVENT_SRV_INVALID_SD",
+ (DWORD) EVENT_SRV_CANT_LOAD_DRIVER, "EVENT_SRV_CANT_LOAD_DRIVER",
+ (DWORD) EVENT_SRV_CANT_UNLOAD_DRIVER, "EVENT_SRV_CANT_UNLOAD_DRIVER",
+ (DWORD) EVENT_SRV_CANT_MAP_ERROR, "EVENT_SRV_CANT_MAP_ERROR",
+ (DWORD) EVENT_SRV_CANT_RECREATE_SHARE, "EVENT_SRV_CANT_RECREATE_SHARE",
+ (DWORD) EVENT_RDR_RESOURCE_SHORTAGE, "EVENT_RDR_RESOURCE_SHORTAGE",
+ (DWORD) EVENT_RDR_CANT_CREATE_DEVICE, "EVENT_RDR_CANT_CREATE_DEVICE",
+ (DWORD) EVENT_RDR_CANT_CREATE_THREAD, "EVENT_RDR_CANT_CREATE_THREAD",
+ (DWORD) EVENT_RDR_CANT_SET_THREAD, "EVENT_RDR_CANT_SET_THREAD",
+ (DWORD) EVENT_RDR_INVALID_REPLY, "EVENT_RDR_INVALID_REPLY",
+ (DWORD) EVENT_RDR_INVALID_SMB, "EVENT_RDR_INVALID_SMB",
+ (DWORD) EVENT_RDR_INVALID_LOCK_REPLY, "EVENT_RDR_INVALID_LOCK_REPLY",
+ (DWORD) EVENT_RDR_FAILED_UNLOCK, "EVENT_RDR_FAILED_UNLOCK",
+ (DWORD) EVENT_RDR_CLOSE_BEHIND, "EVENT_RDR_CLOSE_BEHIND",
+ (DWORD) EVENT_RDR_UNEXPECTED_ERROR, "EVENT_RDR_UNEXPECTED_ERROR",
+ (DWORD) EVENT_RDR_TIMEOUT, "EVENT_RDR_TIMEOUT",
+ (DWORD) EVENT_RDR_INVALID_OPLOCK, "EVENT_RDR_INVALID_OPLOCK",
+ (DWORD) EVENT_RDR_CONNECTION_REFERENCE, "EVENT_RDR_CONNECTION_REFERENCE",
+ (DWORD) EVENT_RDR_SERVER_REFERENCE, "EVENT_RDR_SERVER_REFERENCE",
+ (DWORD) EVENT_RDR_SMB_REFERENCE, "EVENT_RDR_SMB_REFERENCE",
+ (DWORD) EVENT_RDR_ENCRYPT, "EVENT_RDR_ENCRYPT",
+ (DWORD) EVENT_RDR_CONNECTION, "EVENT_RDR_CONNECTION",
+ (DWORD) EVENT_RDR_MAXCMDS, "EVENT_RDR_MAXCMDS",
+ (DWORD) EVENT_RDR_OPLOCK_SMB, "EVENT_RDR_OPLOCK_SMB",
+ (DWORD) EVENT_RDR_DISPOSITION, "EVENT_RDR_DISPOSITION",
+ (DWORD) EVENT_RDR_CONTEXTS, "EVENT_RDR_CONTEXTS",
+ (DWORD) EVENT_RDR_WRITE_BEHIND_FLUSH_FAILED, "EVENT_RDR_WRITE_BEHIND_FLUSH_FAILED",
+ (DWORD) EVENT_RDR_AT_THREAD_MAX, "EVENT_RDR_AT_THREAD_MAX",
+ (DWORD) EVENT_RDR_CANT_READ_REGISTRY, "EVENT_RDR_CANT_READ_REGISTRY",
+ (DWORD) EVENT_RDR_TIMEZONE_BIAS_TOO_LARGE, "EVENT_RDR_TIMEZONE_BIAS_TOO_LARGE",
+ (DWORD) EVENT_RDR_PRIMARY_TRANSPORT_CONNECT_FAILED, "EVENT_RDR_PRIMARY_TRANSPORT_CONNECT_FAILED",
+ (DWORD) EVENT_RDR_DELAYED_SET_ATTRIBUTES_FAILED, "EVENT_RDR_DELAYED_SET_ATTRIBUTES_FAILED",
+ (DWORD) EVENT_RDR_DELETEONCLOSE_FAILED, "EVENT_RDR_DELETEONCLOSE_FAILED",
+ (DWORD) EVENT_STREAMS_STRLOG, "EVENT_STREAMS_STRLOG",
+ (DWORD) EVENT_STREAMS_ALLOCB_FAILURE, "EVENT_STREAMS_ALLOCB_FAILURE",
+ (DWORD) EVENT_STREAMS_ALLOCB_FAILURE_CNT, "EVENT_STREAMS_ALLOCB_FAILURE_CNT",
+ (DWORD) EVENT_STREAMS_ESBALLOC_FAILURE, "EVENT_STREAMS_ESBALLOC_FAILURE",
+ (DWORD) EVENT_STREAMS_ESBALLOC_FAILURE_CNT, "EVENT_STREAMS_ESBALLOC_FAILURE_CNT",
+ (DWORD) EVENT_TCPIP_CREATE_DEVICE_FAILED, "EVENT_TCPIP_CREATE_DEVICE_FAILED",
+ (DWORD) EVENT_TCPIP_NO_RESOURCES_FOR_INIT, "EVENT_TCPIP_NO_RESOURCES_FOR_INIT",
+ (DWORD) EVENT_TCPIP_TOO_MANY_NETS, "EVENT_TCPIP_TOO_MANY_NETS",
+ (DWORD) EVENT_TCPIP_NO_MASK, "EVENT_TCPIP_NO_MASK",
+ (DWORD) EVENT_TCPIP_INVALID_ADDRESS, "EVENT_TCPIP_INVALID_ADDRESS",
+ (DWORD) EVENT_TCPIP_INVALID_MASK, "EVENT_TCPIP_INVALID_MASK",
+ (DWORD) EVENT_TCPIP_NO_ADAPTER_RESOURCES, "EVENT_TCPIP_NO_ADAPTER_RESOURCES",
+ (DWORD) EVENT_TCPIP_DHCP_INIT_FAILED, "EVENT_TCPIP_DHCP_INIT_FAILED",
+ (DWORD) EVENT_TCPIP_ADAPTER_REG_FAILURE, "EVENT_TCPIP_ADAPTER_REG_FAILURE",
+ (DWORD) EVENT_TCPIP_INVALID_DEFAULT_GATEWAY, "EVENT_TCPIP_INVALID_DEFAULT_GATEWAY",
+ (DWORD) EVENT_TCPIP_NO_ADDRESS_LIST, "EVENT_TCPIP_NO_ADDRESS_LIST",
+ (DWORD) EVENT_TCPIP_NO_MASK_LIST, "EVENT_TCPIP_NO_MASK_LIST",
+ (DWORD) EVENT_TCPIP_NO_BINDINGS, "EVENT_TCPIP_NO_BINDINGS",
+ (DWORD) EVENT_TCPIP_IP_INIT_FAILED, "EVENT_TCPIP_IP_INIT_FAILED",
+ (DWORD) EVENT_TCPIP_TOO_MANY_GATEWAYS, "EVENT_TCPIP_TOO_MANY_GATEWAYS",
+ (DWORD) EVENT_TCPIP_ADDRESS_CONFLICT1, "EVENT_TCPIP_ADDRESS_CONFLICT1",
+ (DWORD) EVENT_TCPIP_ADDRESS_CONFLICT2, "EVENT_TCPIP_ADDRESS_CONFLICT2",
+ (DWORD) EVENT_TCPIP_TCP_INIT_FAILED, "EVENT_TCPIP_TCP_INIT_FAILED",
+ (DWORD) EVENT_NBT_CREATE_DRIVER, "EVENT_NBT_CREATE_DRIVER",
+ (DWORD) EVENT_NBT_OPEN_REG_PARAMS, "EVENT_NBT_OPEN_REG_PARAMS",
+ (DWORD) EVENT_NBT_NO_BACKUP_WINS, "EVENT_NBT_NO_BACKUP_WINS",
+ (DWORD) EVENT_NBT_NO_WINS, "EVENT_NBT_NO_WINS",
+ (DWORD) EVENT_NBT_BAD_BACKUP_WINS_ADDR, "EVENT_NBT_BAD_BACKUP_WINS_ADDR",
+ (DWORD) EVENT_NBT_BAD_PRIMARY_WINS_ADDR, "EVENT_NBT_BAD_PRIMARY_WINS_ADDR",
+ (DWORD) EVENT_NBT_NAME_SERVER_ADDRS, "EVENT_NBT_NAME_SERVER_ADDRS",
+ (DWORD) EVENT_NBT_CREATE_ADDRESS, "EVENT_NBT_CREATE_ADDRESS",
+ (DWORD) EVENT_NBT_CREATE_CONNECTION, "EVENT_NBT_CREATE_CONNECTION",
+ (DWORD) EVENT_NBT_NON_OS_INIT, "EVENT_NBT_NON_OS_INIT",
+ (DWORD) EVENT_NBT_TIMERS, "EVENT_NBT_TIMERS",
+ (DWORD) EVENT_NBT_CREATE_DEVICE, "EVENT_NBT_CREATE_DEVICE",
+ (DWORD) EVENT_NBT_NO_DEVICES, "EVENT_NBT_NO_DEVICES",
+ (DWORD) EVENT_NBT_OPEN_REG_LINKAGE, "EVENT_NBT_OPEN_REG_LINKAGE",
+ (DWORD) EVENT_NBT_READ_BIND, "EVENT_NBT_READ_BIND",
+ (DWORD) EVENT_NBT_READ_EXPORT, "EVENT_NBT_READ_EXPORT",
+ (DWORD) EVENT_NBT_OPEN_REG_NAMESERVER, "EVENT_NBT_OPEN_REG_NAMESERVER",
+ (DWORD) EVENT_SCOPE_LABEL_TOO_LONG, "EVENT_SCOPE_LABEL_TOO_LONG",
+ (DWORD) EVENT_SCOPE_TOO_LONG, "EVENT_SCOPE_TOO_LONG",
+ (DWORD) EVENT_NBT_DUPLICATE_NAME, "EVENT_NBT_DUPLICATE_NAME",
+ (DWORD) EVENT_NBT_NAME_RELEASE, "EVENT_NBT_NAME_RELEASE",
+ (DWORD) EVENT_NDIS_RESOURCE_CONFLICT, "EVENT_NDIS_RESOURCE_CONFLICT",
+ (DWORD) EVENT_NDIS_OUT_OF_RESOURCE, "EVENT_NDIS_OUT_OF_RESOURCE",
+ (DWORD) EVENT_NDIS_HARDWARE_FAILURE, "EVENT_NDIS_HARDWARE_FAILURE",
+ (DWORD) EVENT_NDIS_ADAPTER_NOT_FOUND, "EVENT_NDIS_ADAPTER_NOT_FOUND",
+ (DWORD) EVENT_NDIS_INTERRUPT_CONNECT, "EVENT_NDIS_INTERRUPT_CONNECT",
+ (DWORD) EVENT_NDIS_DRIVER_FAILURE, "EVENT_NDIS_DRIVER_FAILURE",
+ (DWORD) EVENT_NDIS_BAD_VERSION, "EVENT_NDIS_BAD_VERSION",
+ (DWORD) EVENT_NDIS_TIMEOUT, "EVENT_NDIS_TIMEOUT",
+ (DWORD) EVENT_NDIS_NETWORK_ADDRESS, "EVENT_NDIS_NETWORK_ADDRESS",
+ (DWORD) EVENT_NDIS_UNSUPPORTED_CONFIGURATION, "EVENT_NDIS_UNSUPPORTED_CONFIGURATION",
+ (DWORD) EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER, "EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER",
+ (DWORD) EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER, "EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER",
+ (DWORD) EVENT_NDIS_BAD_IO_BASE_ADDRESS, "EVENT_NDIS_BAD_IO_BASE_ADDRESS",
+ (DWORD) EVENT_NDIS_RECEIVE_SPACE_SMALL, "EVENT_NDIS_RECEIVE_SPACE_SMALL",
+ (DWORD) EVENT_NDIS_ADAPTER_DISABLED, "EVENT_NDIS_ADAPTER_DISABLED",
+ (DWORD) EVENT_NDIS_IO_PORT_CONFLICT, "EVENT_NDIS_IO_PORT_CONFLICT",
+ (DWORD) EVENT_NDIS_PORT_OR_DMA_CONFLICT, "EVENT_NDIS_PORT_OR_DMA_CONFLICT",
+ (DWORD) EVENT_NDIS_MEMORY_CONFLICT, "EVENT_NDIS_MEMORY_CONFLICT",
+ (DWORD) EVENT_NDIS_INTERRUPT_CONFLICT, "EVENT_NDIS_INTERRUPT_CONFLICT",
+ (DWORD) EVENT_NDIS_DMA_CONFLICT, "EVENT_NDIS_DMA_CONFLICT",
+ (DWORD) EVENT_NDIS_INVALID_DOWNLOAD_FILE_ERROR, "EVENT_NDIS_INVALID_DOWNLOAD_FILE_ERROR",
+ (DWORD) EVENT_NDIS_MAXRECEIVES_ERROR, "EVENT_NDIS_MAXRECEIVES_ERROR",
+ (DWORD) EVENT_NDIS_MAXTRANSMITS_ERROR, "EVENT_NDIS_MAXTRANSMITS_ERROR",
+ (DWORD) EVENT_NDIS_MAXFRAMESIZE_ERROR, "EVENT_NDIS_MAXFRAMESIZE_ERROR",
+ (DWORD) EVENT_NDIS_MAXINTERNALBUFS_ERROR, "EVENT_NDIS_MAXINTERNALBUFS_ERROR",
+ (DWORD) EVENT_NDIS_MAXMULTICAST_ERROR, "EVENT_NDIS_MAXMULTICAST_ERROR",
+ (DWORD) EVENT_NDIS_PRODUCTID_ERROR, "EVENT_NDIS_PRODUCTID_ERROR",
+ (DWORD) EVENT_NDIS_LOBE_FAILUE_ERROR, "EVENT_NDIS_LOBE_FAILUE_ERROR",
+ (DWORD) EVENT_NDIS_SIGNAL_LOSS_ERROR, "EVENT_NDIS_SIGNAL_LOSS_ERROR",
+ (DWORD) EVENT_NDIS_REMOVE_RECEIVED_ERROR, "EVENT_NDIS_REMOVE_RECEIVED_ERROR",
+ (DWORD) EVENT_NDIS_TOKEN_RING_CORRECTION, "EVENT_NDIS_TOKEN_RING_CORRECTION",
+ (DWORD) EVENT_NDIS_ADAPTER_CHECK_ERROR, "EVENT_NDIS_ADAPTER_CHECK_ERROR",
+ (DWORD) EVENT_NDIS_RESET_FAILURE_ERROR, "EVENT_NDIS_RESET_FAILURE_ERROR",
+ (DWORD) EVENT_NDIS_CABLE_DISCONNECTED_ERROR, "EVENT_NDIS_CABLE_DISCONNECTED_ERROR",
+ (DWORD) EVENT_NDIS_RESET_FAILURE_CORRECTION, "EVENT_NDIS_RESET_FAILURE_CORRECTION",
+ (DWORD) EVENT_LOG_FULL, "EVENT_LOG_FULL",
+ (DWORD) EVENT_LogFileNotOpened, "EVENT_LogFileNotOpened",
+ (DWORD) EVENT_LogFileCorrupt, "EVENT_LogFileCorrupt",
+ (DWORD) EVENT_DefaultLogCorrupt, "EVENT_DefaultLogCorrupt",
+ (DWORD) EVENT_BadDriverPacket, "EVENT_BadDriverPacket",
+ (DWORD) EVENT_EventlogStarted, "EVENT_EventlogStarted",
+ (DWORD) EVENT_EventlogStopped, "EVENT_EventlogStopped",
+ (DWORD) TITLE_EventlogMessageBox, "TITLE_EventlogMessageBox",
+ (DWORD) EVENT_UP_DRIVER_ON_MP, "EVENT_UP_DRIVER_ON_MP",
+ (DWORD) EVENT_SERVICE_START_FAILED, "EVENT_SERVICE_START_FAILED",
+ (DWORD) EVENT_SERVICE_START_FAILED_II, "EVENT_SERVICE_START_FAILED_II",
+ (DWORD) EVENT_SERVICE_START_FAILED_GROUP, "EVENT_SERVICE_START_FAILED_GROUP",
+ (DWORD) EVENT_SERVICE_START_FAILED_NONE, "EVENT_SERVICE_START_FAILED_NONE",
+ (DWORD) EVENT_CALL_TO_FUNCTION_FAILED, "EVENT_CALL_TO_FUNCTION_FAILED",
+ (DWORD) EVENT_CALL_TO_FUNCTION_FAILED_II, "EVENT_CALL_TO_FUNCTION_FAILED_II",
+ (DWORD) EVENT_REVERTED_TO_LASTKNOWNGOOD, "EVENT_REVERTED_TO_LASTKNOWNGOOD",
+ (DWORD) EVENT_BAD_ACCOUNT_NAME, "EVENT_BAD_ACCOUNT_NAME",
+ (DWORD) EVENT_CONNECTION_TIMEOUT, "EVENT_CONNECTION_TIMEOUT",
+ (DWORD) EVENT_READFILE_TIMEOUT, "EVENT_READFILE_TIMEOUT",
+ (DWORD) EVENT_TRANSACT_TIMEOUT, "EVENT_TRANSACT_TIMEOUT",
+ (DWORD) EVENT_TRANSACT_INVALID, "EVENT_TRANSACT_INVALID",
+ (DWORD) EVENT_FIRST_LOGON_FAILED, "EVENT_FIRST_LOGON_FAILED",
+ (DWORD) EVENT_SECOND_LOGON_FAILED, "EVENT_SECOND_LOGON_FAILED",
+ (DWORD) EVENT_INVALID_DRIVER_DEPENDENCY, "EVENT_INVALID_DRIVER_DEPENDENCY",
+ (DWORD) EVENT_BAD_SERVICE_STATE, "EVENT_BAD_SERVICE_STATE",
+ (DWORD) EVENT_CIRCULAR_DEPENDENCY_DEMAND, "EVENT_CIRCULAR_DEPENDENCY_DEMAND",
+ (DWORD) EVENT_CIRCULAR_DEPENDENCY_AUTO, "EVENT_CIRCULAR_DEPENDENCY_AUTO",
+ (DWORD) EVENT_DEPEND_ON_LATER_SERVICE, "EVENT_DEPEND_ON_LATER_SERVICE",
+ (DWORD) EVENT_DEPEND_ON_LATER_GROUP, "EVENT_DEPEND_ON_LATER_GROUP",
+ (DWORD) EVENT_SEVERE_SERVICE_FAILED, "EVENT_SEVERE_SERVICE_FAILED",
+ (DWORD) EVENT_SERVICE_START_HUNG, "EVENT_SERVICE_START_HUNG",
+ (DWORD) EVENT_SERVICE_EXIT_FAILED, "EVENT_SERVICE_EXIT_FAILED",
+ (DWORD) EVENT_SERVICE_EXIT_FAILED_SPECIFIC, "EVENT_SERVICE_EXIT_FAILED_SPECIFIC",
+ (DWORD) EVENT_SERVICE_START_AT_BOOT_FAILED, "EVENT_SERVICE_START_AT_BOOT_FAILED",
+ (DWORD) EVENT_BOOT_SYSTEM_DRIVERS_FAILED, "EVENT_BOOT_SYSTEM_DRIVERS_FAILED",
+ (DWORD) EVENT_RUNNING_LASTKNOWNGOOD, "EVENT_RUNNING_LASTKNOWNGOOD",
+ (DWORD) EVENT_TAKE_OWNERSHIP, "EVENT_TAKE_OWNERSHIP",
+ (DWORD) TITLE_SC_MESSAGE_BOX, "TITLE_SC_MESSAGE_BOX",
+ (DWORD) EVENT_SERVICE_NOT_INTERACTIVE, "EVENT_SERVICE_NOT_INTERACTIVE",
+ (DWORD) EVENT_COMMAND_NOT_INTERACTIVE, "EVENT_COMMAND_NOT_INTERACTIVE",
+ (DWORD) EVENT_COMMAND_START_FAILED, "EVENT_COMMAND_START_FAILED",
+ (DWORD) EVENT_BOWSER_OTHER_MASTER_ON_NET, "EVENT_BOWSER_OTHER_MASTER_ON_NET",
+ (DWORD) EVENT_BOWSER_PROMOTED_WHILE_ALREADY_MASTER, "EVENT_BOWSER_PROMOTED_WHILE_ALREADY_MASTER",
+ (DWORD) EVENT_BOWSER_NON_MASTER_MASTER_ANNOUNCE, "EVENT_BOWSER_NON_MASTER_MASTER_ANNOUNCE",
+ (DWORD) EVENT_BOWSER_ILLEGAL_DATAGRAM, "EVENT_BOWSER_ILLEGAL_DATAGRAM",
+ (DWORD) EVENT_BROWSER_STATUS_BITS_UPDATE_FAILED, "EVENT_BROWSER_STATUS_BITS_UPDATE_FAILED",
+ (DWORD) EVENT_BROWSER_ROLE_CHANGE_FAILED, "EVENT_BROWSER_ROLE_CHANGE_FAILED",
+ (DWORD) EVENT_BROWSER_MASTER_PROMOTION_FAILED, "EVENT_BROWSER_MASTER_PROMOTION_FAILED",
+ (DWORD) EVENT_BOWSER_NAME_CONVERSION_FAILED, "EVENT_BOWSER_NAME_CONVERSION_FAILED",
+ (DWORD) EVENT_BROWSER_OTHERDOMAIN_ADD_FAILED, "EVENT_BROWSER_OTHERDOMAIN_ADD_FAILED",
+ (DWORD) EVENT_BOWSER_ELECTION_RECEIVED, "EVENT_BOWSER_ELECTION_RECEIVED",
+ (DWORD) EVENT_BOWSER_ELECTION_SENT_GETBLIST_FAILED, "EVENT_BOWSER_ELECTION_SENT_GETBLIST_FAILED",
+ (DWORD) EVENT_BOWSER_ELECTION_SENT_FIND_MASTER_FAILED, "EVENT_BOWSER_ELECTION_SENT_FIND_MASTER_FAILED",
+ (DWORD) EVENT_BROWSER_ELECTION_SENT_LANMAN_NT_STARTED, "EVENT_BROWSER_ELECTION_SENT_LANMAN_NT_STARTED",
+ (DWORD) EVENT_BOWSER_ILLEGAL_DATAGRAM_THRESHOLD, "EVENT_BOWSER_ILLEGAL_DATAGRAM_THRESHOLD",
+ (DWORD) EVENT_BROWSER_DEPENDANT_SERVICE_FAILED, "EVENT_BROWSER_DEPENDANT_SERVICE_FAILED",
+ (DWORD) EVENT_BROWSER_MASTER_PROMOTION_FAILED_STOPPING, "EVENT_BROWSER_MASTER_PROMOTION_FAILED_STOPPING",
+ (DWORD) EVENT_BROWSER_MASTER_PROMOTION_FAILED_NO_MASTER, "EVENT_BROWSER_MASTER_PROMOTION_FAILED_NO_MASTER",
+ (DWORD) EVENT_BROWSER_SERVER_LIST_FAILED, "EVENT_BROWSER_SERVER_LIST_FAILED",
+ (DWORD) EVENT_BROWSER_DOMAIN_LIST_FAILED, "EVENT_BROWSER_DOMAIN_LIST_FAILED",
+ (DWORD) EVENT_BROWSER_ILLEGAL_CONFIG, "EVENT_BROWSER_ILLEGAL_CONFIG",
+ (DWORD) EVENT_BOWSER_OLD_BACKUP_FOUND, "EVENT_BOWSER_OLD_BACKUP_FOUND",
+ (DWORD) EVENT_BROWSER_SERVER_LIST_RETRIEVED, "EVENT_BROWSER_SERVER_LIST_RETRIEVED",
+ (DWORD) EVENT_BROWSER_DOMAIN_LIST_RETRIEVED, "EVENT_BROWSER_DOMAIN_LIST_RETRIEVED",
+ (DWORD) EVENT_BOWSER_PDC_LOST_ELECTION, "EVENT_BOWSER_PDC_LOST_ELECTION",
+ (DWORD) EVENT_BOWSER_NON_PDC_WON_ELECTION, "EVENT_BOWSER_NON_PDC_WON_ELECTION",
+ (DWORD) EVENT_BOWSER_CANT_READ_REGISTRY, "EVENT_BOWSER_CANT_READ_REGISTRY",
+ (DWORD) EVENT_BOWSER_MAILSLOT_DATAGRAM_THRESHOLD_EXCEEDED, "EVENT_BOWSER_MAILSLOT_DATAGRAM_THRESHOLD_EXCEEDED",
+ (DWORD) EVENT_BOWSER_GETBROWSERLIST_THRESHOLD_EXCEEDED, "EVENT_BOWSER_GETBROWSERLIST_THRESHOLD_EXCEEDED",
+ (DWORD) EVENT_BROWSER_BACKUP_STOPPED, "EVENT_BROWSER_BACKUP_STOPPED",
+ (DWORD) EVENT_BROWSER_ELECTION_SENT_LANMAN_NT_STOPPED, "EVENT_BROWSER_ELECTION_SENT_LANMAN_NT_STOPPED",
+ (DWORD) EVENT_BROWSER_GETBLIST_RECEIVED_NOT_MASTER, "EVENT_BROWSER_GETBLIST_RECEIVED_NOT_MASTER",
+ (DWORD) EVENT_BROWSER_ELECTION_SENT_ROLE_CHANGED, "EVENT_BROWSER_ELECTION_SENT_ROLE_CHANGED",
+ (DWORD) EVENT_BROWSER_NOT_STARTED_IPX_CONFIG_MISMATCH, "EVENT_BROWSER_NOT_STARTED_IPX_CONFIG_MISMATCH",
+ (DWORD) NWSAP_EVENT_KEY_NOT_FOUND, "NWSAP_EVENT_KEY_NOT_FOUND",
+ (DWORD) NWSAP_EVENT_WSASTARTUP_FAILED, "NWSAP_EVENT_WSASTARTUP_FAILED",
+ (DWORD) NWSAP_EVENT_SOCKET_FAILED, "NWSAP_EVENT_SOCKET_FAILED",
+ (DWORD) NWSAP_EVENT_SETOPTBCAST_FAILED, "NWSAP_EVENT_SETOPTBCAST_FAILED",
+ (DWORD) NWSAP_EVENT_BIND_FAILED, "NWSAP_EVENT_BIND_FAILED",
+ (DWORD) NWSAP_EVENT_GETSOCKNAME_FAILED, "NWSAP_EVENT_GETSOCKNAME_FAILED",
+ (DWORD) NWSAP_EVENT_OPTEXTENDEDADDR_FAILED, "NWSAP_EVENT_OPTEXTENDEDADDR_FAILED",
+ (DWORD) NWSAP_EVENT_OPTBCASTINADDR_FAILED, "NWSAP_EVENT_OPTBCASTINADDR_FAILED",
+ (DWORD) NWSAP_EVENT_CARDMALLOC_FAILED, "NWSAP_EVENT_CARDMALLOC_FAILED",
+ (DWORD) NWSAP_EVENT_NOCARDS, "NWSAP_EVENT_NOCARDS",
+ (DWORD) NWSAP_EVENT_THREADEVENT_FAIL, "NWSAP_EVENT_THREADEVENT_FAIL",
+ (DWORD) NWSAP_EVENT_RECVSEM_FAIL, "NWSAP_EVENT_RECVSEM_FAIL",
+ (DWORD) NWSAP_EVENT_SENDEVENT_FAIL, "NWSAP_EVENT_SENDEVENT_FAIL",
+ (DWORD) NWSAP_EVENT_STARTRECEIVE_ERROR, "NWSAP_EVENT_STARTRECEIVE_ERROR",
+ (DWORD) NWSAP_EVENT_STARTWORKER_ERROR, "NWSAP_EVENT_STARTWORKER_ERROR",
+ (DWORD) NWSAP_EVENT_TABLE_MALLOC_FAILED, "NWSAP_EVENT_TABLE_MALLOC_FAILED",
+ (DWORD) NWSAP_EVENT_HASHTABLE_MALLOC_FAILED, "NWSAP_EVENT_HASHTABLE_MALLOC_FAILED",
+ (DWORD) NWSAP_EVENT_STARTLPCWORKER_ERROR, "NWSAP_EVENT_STARTLPCWORKER_ERROR",
+ (DWORD) NWSAP_EVENT_CREATELPCPORT_ERROR, "NWSAP_EVENT_CREATELPCPORT_ERROR",
+ (DWORD) NWSAP_EVENT_CREATELPCEVENT_ERROR, "NWSAP_EVENT_CREATELPCEVENT_ERROR",
+ (DWORD) NWSAP_EVENT_LPCLISTENMEMORY_ERROR, "NWSAP_EVENT_LPCLISTENMEMORY_ERROR",
+ (DWORD) NWSAP_EVENT_LPCHANDLEMEMORY_ERROR, "NWSAP_EVENT_LPCHANDLEMEMORY_ERROR",
+ (DWORD) NWSAP_EVENT_BADWANFILTER_VALUE, "NWSAP_EVENT_BADWANFILTER_VALUE",
+ (DWORD) NWSAP_EVENT_CARDLISTEVENT_FAIL, "NWSAP_EVENT_CARDLISTEVENT_FAIL",
+ (DWORD) NWSAP_EVENT_SDMDEVENT_FAIL, "NWSAP_EVENT_SDMDEVENT_FAIL",
+ (DWORD) NWSAP_EVENT_INVALID_FILTERNAME, "NWSAP_EVENT_INVALID_FILTERNAME",
+ (DWORD) NWSAP_EVENT_WANSEM_FAIL, "NWSAP_EVENT_WANSEM_FAIL",
+ (DWORD) NWSAP_EVENT_WANSOCKET_FAILED, "NWSAP_EVENT_WANSOCKET_FAILED",
+ (DWORD) NWSAP_EVENT_WANBIND_FAILED, "NWSAP_EVENT_WANBIND_FAILED",
+ (DWORD) NWSAP_EVENT_STARTWANWORKER_ERROR, "NWSAP_EVENT_STARTWANWORKER_ERROR",
+ (DWORD) NWSAP_EVENT_STARTWANCHECK_ERROR, "NWSAP_EVENT_STARTWANCHECK_ERROR",
+ (DWORD) NWSAP_EVENT_OPTMAXADAPTERNUM_ERROR, "NWSAP_EVENT_OPTMAXADAPTERNUM_ERROR",
+ (DWORD) NWSAP_EVENT_WANHANDLEMEMORY_ERROR, "NWSAP_EVENT_WANHANDLEMEMORY_ERROR",
+ (DWORD) NWSAP_EVENT_WANEVENT_ERROR, "NWSAP_EVENT_WANEVENT_ERROR",
+ (DWORD) EVENT_TRANSPORT_RESOURCE_POOL, "EVENT_TRANSPORT_RESOURCE_POOL",
+ (DWORD) EVENT_TRANSPORT_RESOURCE_LIMIT, "EVENT_TRANSPORT_RESOURCE_LIMIT",
+ (DWORD) EVENT_TRANSPORT_RESOURCE_SPECIFIC, "EVENT_TRANSPORT_RESOURCE_SPECIFIC",
+ (DWORD) EVENT_TRANSPORT_REGISTER_FAILED, "EVENT_TRANSPORT_REGISTER_FAILED",
+ (DWORD) EVENT_TRANSPORT_BINDING_FAILED, "EVENT_TRANSPORT_BINDING_FAILED",
+ (DWORD) EVENT_TRANSPORT_ADAPTER_NOT_FOUND, "EVENT_TRANSPORT_ADAPTER_NOT_FOUND",
+ (DWORD) EVENT_TRANSPORT_SET_OID_FAILED, "EVENT_TRANSPORT_SET_OID_FAILED",
+ (DWORD) EVENT_TRANSPORT_QUERY_OID_FAILED, "EVENT_TRANSPORT_QUERY_OID_FAILED",
+ (DWORD) EVENT_TRANSPORT_TRANSFER_DATA, "EVENT_TRANSPORT_TRANSFER_DATA",
+ (DWORD) EVENT_TRANSPORT_TOO_MANY_LINKS, "EVENT_TRANSPORT_TOO_MANY_LINKS",
+ (DWORD) EVENT_TRANSPORT_BAD_PROTOCOL, "EVENT_TRANSPORT_BAD_PROTOCOL",
+ (DWORD) EVENT_IPX_NEW_DEFAULT_TYPE, "EVENT_IPX_NEW_DEFAULT_TYPE",
+ (DWORD) EVENT_IPX_SAP_ANNOUNCE, "EVENT_IPX_SAP_ANNOUNCE",
+ (DWORD) EVENT_IPX_ILLEGAL_CONFIG, "EVENT_IPX_ILLEGAL_CONFIG",
+ (DWORD) EVENT_IPX_INTERNAL_NET_INVALID, "EVENT_IPX_INTERNAL_NET_INVALID",
+ (DWORD) EVENT_IPX_NO_FRAME_TYPES, "EVENT_IPX_NO_FRAME_TYPES",
+ (DWORD) EVENT_IPX_CREATE_DEVICE, "EVENT_IPX_CREATE_DEVICE",
+ (DWORD) EVENT_IPX_NO_ADAPTERS, "EVENT_IPX_NO_ADAPTERS",
+ (DWORD) EVENT_RPCSS_CREATEPROCESS_FAILURE, "EVENT_RPCSS_CREATEPROCESS_FAILURE",
+ (DWORD) EVENT_RPCSS_RUNAS_CREATEPROCESS_FAILURE, "EVENT_RPCSS_RUNAS_CREATEPROCESS_FAILURE",
+ (DWORD) EVENT_RPCSS_LAUNCH_ACCESS_DENIED, "EVENT_RPCSS_LAUNCH_ACCESS_DENIED",
+ (DWORD) EVENT_RPCSS_DEFAULT_LAUNCH_ACCESS_DENIED, "EVENT_RPCSS_DEFAULT_LAUNCH_ACCESS_DENIED",
+ (DWORD) EVENT_RPCSS_RUNAS_CANT_LOGIN, "EVENT_RPCSS_RUNAS_CANT_LOGIN",
+ (DWORD) EVENT_RPCSS_START_SERVICE_FAILURE, "EVENT_RPCSS_START_SERVICE_FAILURE",
+ (DWORD) EVENT_RPCSS_REMOTE_SIDE_ERROR, "EVENT_RPCSS_REMOTE_SIDE_ERROR",
+ (DWORD) EVENT_RPCSS_ACTIVATION_ERROR, "EVENT_RPCSS_ACTIVATION_ERROR",
+ (DWORD) EVENT_RPCSS_REMOTE_SIDE_ERROR_WITH_FILE, "EVENT_RPCSS_REMOTE_SIDE_ERROR_WITH_FILE",
+ (DWORD) EVENT_RPCSS_REMOTE_SIDE_UNAVAILABLE, "EVENT_RPCSS_REMOTE_SIDE_UNAVAILABLE",
+ (DWORD) EVENT_RPCSS_SERVER_START_TIMEOUT, "EVENT_RPCSS_SERVER_START_TIMEOUT",
+ (DWORD) EVENT_RPCSS_SERVER_NOT_RESPONDING, "EVENT_RPCSS_SERVER_NOT_RESPONDING",
+ (DWORD) 0xFFFFFFFF, NULL
+};
diff --git a/public/sdk/inc/netevent.h b/public/sdk/inc/netevent.h
new file mode 100644
index 000000000..e87a3f7b7
--- /dev/null
+++ b/public/sdk/inc/netevent.h
@@ -0,0 +1,2846 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ netevent.h
+
+Abstract:
+
+ Definitions for network events.
+
+Author:
+
+ Portable Systems Group 6-May-1992
+
+Revision History:
+
+Notes:
+
+ This file is generated by the MC tool from the netevent.mc file.
+
+--*/
+
+#ifndef _NETEVENT_
+#define _NETEVENT_
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// Lanman Server Events (2000 - 2999)
+// 2000-2499 are generated by the server driver (kernel mode)
+// 2500-2999 are generated by the server service (user mode)
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+// Server driver events, issued from kernel mode. Don't use %1 for
+// server-supplied insertion strings -- the I/O system provides the
+// first string.
+
+//
+// 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 the severity codes
+//
+#define STATUS_SEVERITY_WARNING 0x2
+#define STATUS_SEVERITY_SUCCESS 0x0
+#define STATUS_SEVERITY_INFORMATIONAL 0x1
+#define STATUS_SEVERITY_ERROR 0x3
+
+
+//
+// MessageId: EVENT_SRV_SERVICE_FAILED
+//
+// MessageText:
+//
+// The server's call to a system service failed unexpectedly.
+//
+#define EVENT_SRV_SERVICE_FAILED 0xC00007D0L
+
+//
+// MessageId: EVENT_SRV_RESOURCE_SHORTAGE
+//
+// MessageText:
+//
+// The server was unable to perform an operation due to a shortage of available resources.
+//
+#define EVENT_SRV_RESOURCE_SHORTAGE 0xC00007D1L
+
+//
+// MessageId: EVENT_SRV_CANT_CREATE_DEVICE
+//
+// MessageText:
+//
+// The server could not create its device. The server could not be started.
+//
+#define EVENT_SRV_CANT_CREATE_DEVICE 0xC00007D2L
+
+//
+// MessageId: EVENT_SRV_CANT_CREATE_PROCESS
+//
+// MessageText:
+//
+// The server could not create a process. The server could not be started.
+//
+#define EVENT_SRV_CANT_CREATE_PROCESS 0xC00007D3L
+
+//
+// MessageId: EVENT_SRV_CANT_CREATE_THREAD
+//
+// MessageText:
+//
+// The server could not create a startup thread. The server could not be started.
+//
+#define EVENT_SRV_CANT_CREATE_THREAD 0xC00007D4L
+
+//
+// MessageId: EVENT_SRV_UNEXPECTED_DISC
+//
+// MessageText:
+//
+// The server received an unexpected disconnection from a client.
+//
+#define EVENT_SRV_UNEXPECTED_DISC 0xC00007D5L
+
+//
+// MessageId: EVENT_SRV_INVALID_REQUEST
+//
+// MessageText:
+//
+// The server received an incorrectly formatted request from %2.
+//
+#define EVENT_SRV_INVALID_REQUEST 0xC00007D6L
+
+//
+// MessageId: EVENT_SRV_CANT_OPEN_NPFS
+//
+// MessageText:
+//
+// The server could not open the named pipe file system. Remote named pipes are disabled.
+//
+#define EVENT_SRV_CANT_OPEN_NPFS 0xC00007D7L
+
+//
+// MessageId: EVENT_SRV_CANT_GROW_TABLE
+//
+// MessageText:
+//
+// The server could not expand a table because the table reached the maximum size.
+//
+#define EVENT_SRV_CANT_GROW_TABLE 0xC00007D9L
+
+//
+// MessageId: EVENT_SRV_CANT_START_SCAVENGER
+//
+// MessageText:
+//
+// The server could not start the scavenger thread. The server could not be started.
+//
+#define EVENT_SRV_CANT_START_SCAVENGER 0xC00007DAL
+
+//
+// MessageId: EVENT_SRV_IRP_STACK_SIZE
+//
+// MessageText:
+//
+// The server's configuration parameter "irpstacksize" is too small for the server to use a local device. Please increase the value of this parameter.
+//
+#define EVENT_SRV_IRP_STACK_SIZE 0xC00007DBL
+
+//
+// MessageId: EVENT_SRV_NETWORK_ERROR
+//
+// MessageText:
+//
+// The server has encountered a network error.
+//
+#define EVENT_SRV_NETWORK_ERROR 0xC00007DCL
+
+//
+// MessageId: EVENT_SRV_DISK_FULL
+//
+// MessageText:
+//
+// The %2 disk is at or near capacity. You may need to delete some files.
+//
+#define EVENT_SRV_DISK_FULL 0x800007DDL
+
+//
+// MessageId: EVENT_SRV_NO_VIRTUAL_MEMORY
+//
+// MessageText:
+//
+// The server was unable to allocate virtual memory.
+//
+#define EVENT_SRV_NO_VIRTUAL_MEMORY 0xC00007E0L
+
+//
+// MessageId: EVENT_SRV_NONPAGED_POOL_LIMIT
+//
+// MessageText:
+//
+// The server was unable to allocate from the system nonpaged pool because the server reached the configured limit for nonpaged pool allocations.
+//
+#define EVENT_SRV_NONPAGED_POOL_LIMIT 0xC00007E1L
+
+//
+// MessageId: EVENT_SRV_PAGED_POOL_LIMIT
+//
+// MessageText:
+//
+// The server was unable to allocate from the system paged pool because the server reached the configured limit for paged pool allocations.
+//
+#define EVENT_SRV_PAGED_POOL_LIMIT 0xC00007E2L
+
+//
+// MessageId: EVENT_SRV_NO_NONPAGED_POOL
+//
+// MessageText:
+//
+// The server was unable to allocate from the system nonpaged pool because the pool was empty.
+//
+#define EVENT_SRV_NO_NONPAGED_POOL 0xC00007E3L
+
+//
+// MessageId: EVENT_SRV_NO_PAGED_POOL
+//
+// MessageText:
+//
+// The server was unable to allocate from the system paged pool because the pool was empty.
+//
+#define EVENT_SRV_NO_PAGED_POOL 0xC00007E4L
+
+//
+// MessageId: EVENT_SRV_NO_WORK_ITEM
+//
+// MessageText:
+//
+// The server was unable to allocate a work item %2 times in the last %3 seconds.
+//
+#define EVENT_SRV_NO_WORK_ITEM 0x800007E5L
+
+//
+// MessageId: EVENT_SRV_NO_FREE_CONNECTIONS
+//
+// MessageText:
+//
+// The server was unable to find a free connection %2 times in the last %3 seconds.
+//
+#define EVENT_SRV_NO_FREE_CONNECTIONS 0x800007E6L
+
+//
+// MessageId: EVENT_SRV_NO_FREE_RAW_WORK_ITEM
+//
+// MessageText:
+//
+// The server was unable to find a free raw work item %2 times in the last %3 seconds.
+//
+#define EVENT_SRV_NO_FREE_RAW_WORK_ITEM 0x800007E7L
+
+//
+// MessageId: EVENT_SRV_NO_BLOCKING_IO
+//
+// MessageText:
+//
+// The server was unable to allocate resources for blocking I/O %2 times in the last %3 seconds.
+//
+#define EVENT_SRV_NO_BLOCKING_IO 0x800007E8L
+
+
+// Server service events, issued from user mode. %1 is the first
+// service-supplied insertion string.
+
+//
+// MessageId: EVENT_SRV_KEY_NOT_FOUND
+//
+// MessageText:
+//
+// The server's Registry key %1 was not present. The server could not start.
+//
+#define EVENT_SRV_KEY_NOT_FOUND 0xC00009C5L
+
+//
+// MessageId: EVENT_SRV_KEY_NOT_CREATED
+//
+// MessageText:
+//
+// The server's Registry key %1 was not present and could not be created. The server could not start.
+//
+#define EVENT_SRV_KEY_NOT_CREATED 0xC00009C6L
+
+//
+// MessageId: EVENT_SRV_NO_TRANSPORTS_BOUND
+//
+// MessageText:
+//
+// The server did not bind to any transports. The server could not start.
+//
+#define EVENT_SRV_NO_TRANSPORTS_BOUND 0xC00009C7L
+
+//
+// MessageId: EVENT_SRV_CANT_BIND_TO_TRANSPORT
+//
+// MessageText:
+//
+// The server could not bind to the transport %1.
+//
+#define EVENT_SRV_CANT_BIND_TO_TRANSPORT 0x800009C8L
+
+//
+// MessageId: EVENT_SRV_CANT_BIND_DUP_NAME
+//
+// MessageText:
+//
+// The server could not bind to the transport %1 because another computer on the network has the same name. The server could not start.
+//
+#define EVENT_SRV_CANT_BIND_DUP_NAME 0xC00009C9L
+
+//
+// MessageId: EVENT_SRV_INVALID_REGISTRY_VALUE
+//
+// MessageText:
+//
+// The value named %1 in the server's Registry key %2 was invalid. The value was ignored, and processing continued.
+//
+#define EVENT_SRV_INVALID_REGISTRY_VALUE 0x800009CAL
+
+//
+// MessageId: EVENT_SRV_INVALID_SD
+//
+// MessageText:
+//
+// The security descriptor stored in the Registry for the share %1 was invalid. The share was not automatically recreated.
+//
+#define EVENT_SRV_INVALID_SD 0x800009CBL
+
+//
+// MessageId: EVENT_SRV_CANT_LOAD_DRIVER
+//
+// MessageText:
+//
+// The server service was unable to load the server driver.
+//
+#define EVENT_SRV_CANT_LOAD_DRIVER 0x800009CCL
+
+//
+// MessageId: EVENT_SRV_CANT_UNLOAD_DRIVER
+//
+// MessageText:
+//
+// The server service was unable to unload the server driver.
+//
+#define EVENT_SRV_CANT_UNLOAD_DRIVER 0x800009CDL
+
+//
+// MessageId: EVENT_SRV_CANT_MAP_ERROR
+//
+// MessageText:
+//
+// The server service was unable to map error code %1.
+//
+#define EVENT_SRV_CANT_MAP_ERROR 0x800009CEL
+
+//
+// MessageId: EVENT_SRV_CANT_RECREATE_SHARE
+//
+// MessageText:
+//
+// The server service was unable to recreate the share %1 because the directory %2 no longer exists.
+//
+#define EVENT_SRV_CANT_RECREATE_SHARE 0x800009CFL
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// Lanman Redirector Events
+//
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// MessageId: EVENT_RDR_RESOURCE_SHORTAGE
+//
+// MessageText:
+//
+// The redirector was unable to allocate memory.
+//
+#define EVENT_RDR_RESOURCE_SHORTAGE 0x80000BB9L
+
+//
+// MessageId: EVENT_RDR_CANT_CREATE_DEVICE
+//
+// MessageText:
+//
+// The redirector could not create its device. The redirector could not be started.
+//
+#define EVENT_RDR_CANT_CREATE_DEVICE 0x80000BBAL
+
+//
+// MessageId: EVENT_RDR_CANT_CREATE_THREAD
+//
+// MessageText:
+//
+// The redirector could not create a system thread.
+//
+#define EVENT_RDR_CANT_CREATE_THREAD 0x80000BBBL
+
+//
+// MessageId: EVENT_RDR_CANT_SET_THREAD
+//
+// MessageText:
+//
+// The redirector could not set the priority for a system thread.
+//
+#define EVENT_RDR_CANT_SET_THREAD 0x80000BBCL
+
+//
+// MessageId: EVENT_RDR_INVALID_REPLY
+//
+// MessageText:
+//
+// The redirector received an incorrectly formatted response from %2.
+//
+#define EVENT_RDR_INVALID_REPLY 0x80000BBDL
+
+//
+// MessageId: EVENT_RDR_INVALID_SMB
+//
+// MessageText:
+//
+// The redirector received an SMB that was too short.
+//
+#define EVENT_RDR_INVALID_SMB 0x80000BBEL
+
+//
+// MessageId: EVENT_RDR_INVALID_LOCK_REPLY
+//
+// MessageText:
+//
+// The redirector received an incorrect response from %2 to a lock request.
+//
+#define EVENT_RDR_INVALID_LOCK_REPLY 0x80000BBFL
+
+//
+// MessageId: EVENT_RDR_FAILED_UNLOCK
+//
+// MessageText:
+//
+// The redirector failed to unlock part of a file on server %2.
+//
+#define EVENT_RDR_FAILED_UNLOCK 0x80000BC1L
+
+//
+// MessageId: EVENT_RDR_CLOSE_BEHIND
+//
+// MessageText:
+//
+// The redirector failed to write data to server %2 after the file was closed.
+//
+#define EVENT_RDR_CLOSE_BEHIND 0x80000BC3L
+
+//
+// MessageId: EVENT_RDR_UNEXPECTED_ERROR
+//
+// MessageText:
+//
+// An unexpected network error has occurred on the virtual circuit to %2.
+//
+#define EVENT_RDR_UNEXPECTED_ERROR 0x80000BC4L
+
+//
+// MessageId: EVENT_RDR_TIMEOUT
+//
+// MessageText:
+//
+// The redirector has timed out a request to %2.
+//
+#define EVENT_RDR_TIMEOUT 0x80000BC5L
+
+//
+// MessageId: EVENT_RDR_INVALID_OPLOCK
+//
+// MessageText:
+//
+// The redirector received an invalid oplock level from %2.
+//
+#define EVENT_RDR_INVALID_OPLOCK 0x80000BC6L
+
+//
+// MessageId: EVENT_RDR_CONNECTION_REFERENCE
+//
+// MessageText:
+//
+// The redirector dereferenced a connection through zero.
+//
+#define EVENT_RDR_CONNECTION_REFERENCE 0x80000BC7L
+
+//
+// MessageId: EVENT_RDR_SERVER_REFERENCE
+//
+// MessageText:
+//
+// The redirector dereferenced a server through zero.
+//
+#define EVENT_RDR_SERVER_REFERENCE 0x80000BC8L
+
+//
+// MessageId: EVENT_RDR_SMB_REFERENCE
+//
+// MessageText:
+//
+// The redirector dereferenced the allocated SMB count through zero.
+//
+#define EVENT_RDR_SMB_REFERENCE 0x80000BC9L
+
+//
+// MessageId: EVENT_RDR_ENCRYPT
+//
+// MessageText:
+//
+// The redirector accessed a share-level server that indicates it encrypts passwords.
+// This combination is not supported.
+//
+#define EVENT_RDR_ENCRYPT 0x80000BCAL
+
+//
+// MessageId: EVENT_RDR_CONNECTION
+//
+// MessageText:
+//
+// The redirector failed to determine the connection type.
+//
+#define EVENT_RDR_CONNECTION 0x80000BCBL
+
+//
+// MessageId: EVENT_RDR_MAXCMDS
+//
+// MessageText:
+//
+// The redirector failed to allocate a multiplex table entry. This indicates that
+// the MAXCMDS parameter to the redirector is insufficient for the users needs.
+//
+#define EVENT_RDR_MAXCMDS 0x80000BCDL
+
+//
+// MessageId: EVENT_RDR_OPLOCK_SMB
+//
+// MessageText:
+//
+// The redirector failed to allocate a buffer for an oplock break.
+//
+#define EVENT_RDR_OPLOCK_SMB 0x80000BCEL
+
+//
+// MessageId: EVENT_RDR_DISPOSITION
+//
+// MessageText:
+//
+// The redirector failed to map the requested file disposition (for NtCreateFile).
+//
+#define EVENT_RDR_DISPOSITION 0x80000BCFL
+
+//
+// MessageId: EVENT_RDR_CONTEXTS
+//
+// MessageText:
+//
+// The redirector is allocating additional resources for input/output request packet contexts. This is
+// probably caused by a resource leak in the redirector.
+//
+#define EVENT_RDR_CONTEXTS 0x80000BD0L
+
+//
+// MessageId: EVENT_RDR_WRITE_BEHIND_FLUSH_FAILED
+//
+// MessageText:
+//
+// A write-behind operation has failed to the remote server %2. The data contains the amount requested to write and the amount actually written.
+//
+#define EVENT_RDR_WRITE_BEHIND_FLUSH_FAILED 0x80000BD1L
+
+//
+// MessageId: EVENT_RDR_AT_THREAD_MAX
+//
+// MessageText:
+//
+// The redirector was unable to create a worker thread because it has already created the maximum number of configured work threads.
+//
+#define EVENT_RDR_AT_THREAD_MAX 0x80000BD2L
+
+//
+// MessageId: EVENT_RDR_CANT_READ_REGISTRY
+//
+// MessageText:
+//
+// The redirector was unable to initialize variables from the Registry.
+//
+#define EVENT_RDR_CANT_READ_REGISTRY 0x80000BD3L
+
+//
+// MessageId: EVENT_RDR_TIMEZONE_BIAS_TOO_LARGE
+//
+// MessageText:
+//
+// The time zone bias calculated between %2 and the current workstation is too
+// large. The data specifies the number of 100ns units between the workstation
+// and server. Make sure that the time of day on the workstation and server are
+// correct.
+//
+#define EVENT_RDR_TIMEZONE_BIAS_TOO_LARGE 0x80000BD4L
+
+//
+// MessageId: EVENT_RDR_PRIMARY_TRANSPORT_CONNECT_FAILED
+//
+// MessageText:
+//
+// The redirector has failed to connect to the server %2 on the primary transport. The data contains the error.
+//
+#define EVENT_RDR_PRIMARY_TRANSPORT_CONNECT_FAILED 0x80000BD5L
+
+//
+// MessageId: EVENT_RDR_DELAYED_SET_ATTRIBUTES_FAILED
+//
+// MessageText:
+//
+// The redirector was unable to update the file attributes on a file located on server %2.
+// The data contains the name of the file.
+//
+#define EVENT_RDR_DELAYED_SET_ATTRIBUTES_FAILED 0x80000BD6L
+
+//
+// MessageId: EVENT_RDR_DELETEONCLOSE_FAILED
+//
+// MessageText:
+//
+// The redirector was unable to delete the file specified on server %2 when it was closed by the application.
+// The data contains the name of the file.
+//
+#define EVENT_RDR_DELETEONCLOSE_FAILED 0x80000BD7L
+
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// STREAMS Environment Events
+//
+// Codes 4000 - 4099
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// MessageId: EVENT_STREAMS_STRLOG
+//
+// MessageText:
+//
+// %2.
+//
+#define EVENT_STREAMS_STRLOG 0xC0000FA0L
+
+//
+// MessageId: EVENT_STREAMS_ALLOCB_FAILURE
+//
+// MessageText:
+//
+// Unable to allocate a %2 byte message.
+//
+#define EVENT_STREAMS_ALLOCB_FAILURE 0x80000FA1L
+
+//
+// MessageId: EVENT_STREAMS_ALLOCB_FAILURE_CNT
+//
+// MessageText:
+//
+// %2 message allocations have failed since initialization.
+//
+#define EVENT_STREAMS_ALLOCB_FAILURE_CNT 0x80000FA2L
+
+//
+// MessageId: EVENT_STREAMS_ESBALLOC_FAILURE
+//
+// MessageText:
+//
+// Unable to allocate a %2 byte external message.
+//
+#define EVENT_STREAMS_ESBALLOC_FAILURE 0x80000FA3L
+
+//
+// MessageId: EVENT_STREAMS_ESBALLOC_FAILURE_CNT
+//
+// MessageText:
+//
+// %2 external message allocations have failed since initialization.
+//
+#define EVENT_STREAMS_ESBALLOC_FAILURE_CNT 0x80000FA4L
+
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// TCP/IP Events
+//
+// Codes 4100 - 4299
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// Common TCP/IP messages
+//
+// Codes 4100 - 4149
+//
+//
+
+//
+// MessageId: EVENT_TCPIP_CREATE_DEVICE_FAILED
+//
+// MessageText:
+//
+// Unable to create device object %2. Initialization failed.
+//
+#define EVENT_TCPIP_CREATE_DEVICE_FAILED 0xC0001004L
+
+//
+// MessageId: EVENT_TCPIP_NO_RESOURCES_FOR_INIT
+//
+// MessageText:
+//
+// Unable to allocate required resources. Initialization failed.
+//
+#define EVENT_TCPIP_NO_RESOURCES_FOR_INIT 0xC0001005L
+
+
+//
+// ARP messages
+//
+// Codes 4150-4174
+
+
+//
+// IP Loopback messages
+//
+// Codes 4175-4184
+//
+
+
+//
+// IP/ICMP messages
+//
+// Codes 4185 - 4224
+
+//
+// MessageId: EVENT_TCPIP_TOO_MANY_NETS
+//
+// MessageText:
+//
+// IP has been bound to more than the maximum number of supported interfaces.
+// Some interfaces on adapter %2 will not be initialized.
+//
+#define EVENT_TCPIP_TOO_MANY_NETS 0xC0001059L
+
+//
+// MessageId: EVENT_TCPIP_NO_MASK
+//
+// MessageText:
+//
+// No subnet mask was specified for interface %2. This interface and
+// all subsequent interfaces on adapter %3 cannot be initialized.
+//
+#define EVENT_TCPIP_NO_MASK 0xC000105AL
+
+//
+// MessageId: EVENT_TCPIP_INVALID_ADDRESS
+//
+// MessageText:
+//
+// Invalid address %2 was specified for adapter %3. This interface
+// cannot be initialized.
+//
+#define EVENT_TCPIP_INVALID_ADDRESS 0xC000105BL
+
+//
+// MessageId: EVENT_TCPIP_INVALID_MASK
+//
+// MessageText:
+//
+// Invalid subnet mask %2 was specified for address %3 on adapter %4.
+// This interface cannot be initialized.
+//
+#define EVENT_TCPIP_INVALID_MASK 0xC000105CL
+
+//
+// MessageId: EVENT_TCPIP_NO_ADAPTER_RESOURCES
+//
+// MessageText:
+//
+// IP could not allocate some resources required to configure adapter %2.
+// Some interfaces on this adapter will not be initialized.
+//
+#define EVENT_TCPIP_NO_ADAPTER_RESOURCES 0xC000105DL
+
+//
+// MessageId: EVENT_TCPIP_DHCP_INIT_FAILED
+//
+// MessageText:
+//
+// IP was unable to initialize adapter %2 for configuration by DHCP.
+// If DHCP is enabled on this adapter, the primary interface may not be
+// configured properly. Interfaces on this adapter not configured by
+// DHCP will be unaffected.
+//
+#define EVENT_TCPIP_DHCP_INIT_FAILED 0x8000105EL
+
+//
+// MessageId: EVENT_TCPIP_ADAPTER_REG_FAILURE
+//
+// MessageText:
+//
+// IP could not open the registry key for adapter %2.
+// Interfaces on this adapter will not be initialized.
+//
+#define EVENT_TCPIP_ADAPTER_REG_FAILURE 0xC000105FL
+
+//
+// MessageId: EVENT_TCPIP_INVALID_DEFAULT_GATEWAY
+//
+// MessageText:
+//
+// Invalid default gateway address %2 was specified for adapter %3.
+// Some remote networks may not be reachable as a result.
+//
+#define EVENT_TCPIP_INVALID_DEFAULT_GATEWAY 0x80001060L
+
+//
+// MessageId: EVENT_TCPIP_NO_ADDRESS_LIST
+//
+// MessageText:
+//
+// Unable to read the configured IP addresses for adapter %2.
+// IP interfaces will not be initialized on this adapter.
+//
+#define EVENT_TCPIP_NO_ADDRESS_LIST 0xC0001061L
+
+//
+// MessageId: EVENT_TCPIP_NO_MASK_LIST
+//
+// MessageText:
+//
+// Unable to read the configured subnet masks for adapter %2.
+// IP interfaces will not be initialized on this adapter.
+//
+#define EVENT_TCPIP_NO_MASK_LIST 0xC0001062L
+
+//
+// MessageId: EVENT_TCPIP_NO_BINDINGS
+//
+// MessageText:
+//
+// IP was unable to read its bindings from the registry. No network interfaces
+// were configured.
+//
+#define EVENT_TCPIP_NO_BINDINGS 0xC0001063L
+
+//
+// MessageId: EVENT_TCPIP_IP_INIT_FAILED
+//
+// MessageText:
+//
+// Initialization of IP failed.
+//
+#define EVENT_TCPIP_IP_INIT_FAILED 0xC0001064L
+
+//
+// MessageId: EVENT_TCPIP_TOO_MANY_GATEWAYS
+//
+// MessageText:
+//
+// More than the maximum number of default gateways were specified for
+// adapter %2. Some remote networks may not be reachable as a result.
+//
+#define EVENT_TCPIP_TOO_MANY_GATEWAYS 0x80001065L
+
+//
+// MessageId: EVENT_TCPIP_ADDRESS_CONFLICT1
+//
+// MessageText:
+//
+// The system detected an address conflict for IP address %2 with the system
+// having network hardware address %3. The local interface has been disabled.
+//
+#define EVENT_TCPIP_ADDRESS_CONFLICT1 0xC0001066L
+
+//
+// MessageId: EVENT_TCPIP_ADDRESS_CONFLICT2
+//
+// MessageText:
+//
+// The system detected an address conflict for IP address %2 with the system
+// having network hardware address %3. Network operations on this system may
+// be disrupted as a result.
+//
+#define EVENT_TCPIP_ADDRESS_CONFLICT2 0xC0001067L
+
+
+//
+// TCP messages
+//
+// Codes 4225 - 4264
+//
+
+//
+// MessageId: EVENT_TCPIP_TCP_INIT_FAILED
+//
+// MessageText:
+//
+// Initialization of TCP/UDP failed.
+//
+#define EVENT_TCPIP_TCP_INIT_FAILED 0xC0001081L
+
+
+//
+// UDP messages
+//
+// Codes 4265 - 4299
+//
+
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// NBT Events
+//
+// Codes 4300 - 4399
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+
+// Don't use %1 for driver supplied insertion strings. The IO subsystem
+// supplies the first string!!
+
+//
+// MessageId: EVENT_NBT_CREATE_DRIVER
+//
+// MessageText:
+//
+// The driver could not be created.
+//
+#define EVENT_NBT_CREATE_DRIVER 0xC00010CCL
+
+//
+// MessageId: EVENT_NBT_OPEN_REG_PARAMS
+//
+// MessageText:
+//
+// Unable to open the Registry Parameters to read configuration information.
+//
+#define EVENT_NBT_OPEN_REG_PARAMS 0xC00010CDL
+
+//
+// MessageId: EVENT_NBT_NO_BACKUP_WINS
+//
+// MessageText:
+//
+// The backup WINS server address is not configured in the registry.
+//
+#define EVENT_NBT_NO_BACKUP_WINS 0x800010CEL
+
+//
+// MessageId: EVENT_NBT_NO_WINS
+//
+// MessageText:
+//
+// The primary WINS server address is not configured in the registry.
+//
+#define EVENT_NBT_NO_WINS 0x800010CFL
+
+//
+// MessageId: EVENT_NBT_BAD_BACKUP_WINS_ADDR
+//
+// MessageText:
+//
+// The backup WINS server address is not formated correctly in the registry.
+//
+#define EVENT_NBT_BAD_BACKUP_WINS_ADDR 0x800010D0L
+
+//
+// MessageId: EVENT_NBT_BAD_PRIMARY_WINS_ADDR
+//
+// MessageText:
+//
+// The primary WINS server address is not formated correctly in the registry.
+//
+#define EVENT_NBT_BAD_PRIMARY_WINS_ADDR 0x800010D1L
+
+//
+// MessageId: EVENT_NBT_NAME_SERVER_ADDRS
+//
+// MessageText:
+//
+// Unable to configure the addresses of the WINS servers.
+//
+#define EVENT_NBT_NAME_SERVER_ADDRS 0xC00010D2L
+
+//
+// MessageId: EVENT_NBT_CREATE_ADDRESS
+//
+// MessageText:
+//
+// Initialization failed because the transport refused to open initial Addresses.
+//
+#define EVENT_NBT_CREATE_ADDRESS 0xC00010D3L
+
+//
+// MessageId: EVENT_NBT_CREATE_CONNECTION
+//
+// MessageText:
+//
+// Initialization failed because the transport refused to open initial Connections.
+//
+#define EVENT_NBT_CREATE_CONNECTION 0xC00010D4L
+
+//
+// MessageId: EVENT_NBT_NON_OS_INIT
+//
+// MessageText:
+//
+// Data structure initialization failed.
+//
+#define EVENT_NBT_NON_OS_INIT 0xC00010D5L
+
+//
+// MessageId: EVENT_NBT_TIMERS
+//
+// MessageText:
+//
+// Initialization failed because the timers could not be started.
+//
+#define EVENT_NBT_TIMERS 0xC00010D6L
+
+//
+// MessageId: EVENT_NBT_CREATE_DEVICE
+//
+// MessageText:
+//
+// Initialization failed because the driver device could not be created.
+//
+#define EVENT_NBT_CREATE_DEVICE 0xC00010D7L
+
+//
+// MessageId: EVENT_NBT_NO_DEVICES
+//
+// MessageText:
+//
+// There are no adapters configured for this protocol stack.
+//
+#define EVENT_NBT_NO_DEVICES 0x800010D8L
+
+//
+// MessageId: EVENT_NBT_OPEN_REG_LINKAGE
+//
+// MessageText:
+//
+// Unable to open the Registry Linkage to read configuration information.
+//
+#define EVENT_NBT_OPEN_REG_LINKAGE 0xC00010D9L
+
+//
+// MessageId: EVENT_NBT_READ_BIND
+//
+// MessageText:
+//
+// Unable to read the driver's bindings to the transport from the registry.
+//
+#define EVENT_NBT_READ_BIND 0xC00010DAL
+
+//
+// MessageId: EVENT_NBT_READ_EXPORT
+//
+// MessageText:
+//
+// Unable to read the driver's exported linkage configuration information.
+//
+#define EVENT_NBT_READ_EXPORT 0xC00010DBL
+
+//
+// MessageId: EVENT_NBT_OPEN_REG_NAMESERVER
+//
+// MessageText:
+//
+// Unable to open the Registry to read the WINS server addresses.
+//
+#define EVENT_NBT_OPEN_REG_NAMESERVER 0x800010DCL
+
+//
+// MessageId: EVENT_SCOPE_LABEL_TOO_LONG
+//
+// MessageText:
+//
+// The Netbios Name Scope has a component longer than 63 characters. Each label
+// in the Scope cannot be longer than 63 bytes. Use the Control Panel, Network
+// applet to change the scope.
+//
+#define EVENT_SCOPE_LABEL_TOO_LONG 0x800010DDL
+
+//
+// MessageId: EVENT_SCOPE_TOO_LONG
+//
+// MessageText:
+//
+// The Netbios Name Scope is too long. The scope cannot be longer than
+// 255 bytes. Use the Control Panel, Network applet to change the scope.
+//
+#define EVENT_SCOPE_TOO_LONG 0x800010DEL
+
+//
+// MessageId: EVENT_NBT_DUPLICATE_NAME
+//
+// MessageText:
+//
+// A duplicate name has been detected on the TCP network. The IP address of
+// the machine that sent the message is in the data. Use nbtstat -n in a
+// command window to see which name is in the Conflict state.
+//
+#define EVENT_NBT_DUPLICATE_NAME 0xC00010DFL
+
+//
+// MessageId: EVENT_NBT_NAME_RELEASE
+//
+// MessageText:
+//
+// Another machine has sent a name release message to this machine probably
+// because a duplicate name has been detected on the TCP network. The IP address
+// of the node that sent the message is in the data. Use nbtstat -n in a
+// command window to see which name is in the Conflict state.
+//
+#define EVENT_NBT_NAME_RELEASE 0xC00010E0L
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// NDIS Environment Events
+//
+// Codes 5000 - 5099
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// MessageId: EVENT_NDIS_RESOURCE_CONFLICT
+//
+// MessageText:
+//
+// %2 : Has encountered a conflict in resources and could not load.
+//
+#define EVENT_NDIS_RESOURCE_CONFLICT 0xC0001388L
+
+//
+// MessageId: EVENT_NDIS_OUT_OF_RESOURCE
+//
+// MessageText:
+//
+// %2 : Could not allocate the resources necessary for operation.
+//
+#define EVENT_NDIS_OUT_OF_RESOURCE 0xC0001389L
+
+//
+// MessageId: EVENT_NDIS_HARDWARE_FAILURE
+//
+// MessageText:
+//
+// %2 : Has determined that the adapter is not functioning properly.
+//
+#define EVENT_NDIS_HARDWARE_FAILURE 0xC000138AL
+
+//
+// MessageId: EVENT_NDIS_ADAPTER_NOT_FOUND
+//
+// MessageText:
+//
+// %2 : Could not find an adapter.
+//
+#define EVENT_NDIS_ADAPTER_NOT_FOUND 0xC000138BL
+
+//
+// MessageId: EVENT_NDIS_INTERRUPT_CONNECT
+//
+// MessageText:
+//
+// %2 : Could not connect to the interrupt number supplied.
+//
+#define EVENT_NDIS_INTERRUPT_CONNECT 0xC000138CL
+
+//
+// MessageId: EVENT_NDIS_DRIVER_FAILURE
+//
+// MessageText:
+//
+// %2 : Has encountered an internal error and has failed.
+//
+#define EVENT_NDIS_DRIVER_FAILURE 0xC000138DL
+
+//
+// MessageId: EVENT_NDIS_BAD_VERSION
+//
+// MessageText:
+//
+// %2 : The version number is incorrect for this driver.
+//
+#define EVENT_NDIS_BAD_VERSION 0xC000138EL
+
+//
+// MessageId: EVENT_NDIS_TIMEOUT
+//
+// MessageText:
+//
+// %2 : Timed out during an operation.
+//
+#define EVENT_NDIS_TIMEOUT 0x8000138FL
+
+//
+// MessageId: EVENT_NDIS_NETWORK_ADDRESS
+//
+// MessageText:
+//
+// %2 : Has encountered an invalid network address.
+//
+#define EVENT_NDIS_NETWORK_ADDRESS 0xC0001390L
+
+//
+// MessageId: EVENT_NDIS_UNSUPPORTED_CONFIGURATION
+//
+// MessageText:
+//
+// %2 : Does not support the configuration supplied.
+//
+#define EVENT_NDIS_UNSUPPORTED_CONFIGURATION 0xC0001391L
+
+//
+// MessageId: EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER
+//
+// MessageText:
+//
+// %2 : The adapter has returned an invalid value to the driver.
+//
+#define EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER 0xC0001392L
+
+//
+// MessageId: EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER
+//
+// MessageText:
+//
+// %2 : A required parameter is missing from the Registry.
+//
+#define EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER 0xC0001393L
+
+//
+// MessageId: EVENT_NDIS_BAD_IO_BASE_ADDRESS
+//
+// MessageText:
+//
+// %2 : The I/O base address supplied does not match the jumpers on the adapter.
+//
+#define EVENT_NDIS_BAD_IO_BASE_ADDRESS 0xC0001394L
+
+//
+// MessageId: EVENT_NDIS_RECEIVE_SPACE_SMALL
+//
+// MessageText:
+//
+// %2 : The adapter is configured such that the receive space is smaller than
+// the maximum packet size. Some packets may be lost.
+//
+#define EVENT_NDIS_RECEIVE_SPACE_SMALL 0x40001395L
+
+//
+// MessageId: EVENT_NDIS_ADAPTER_DISABLED
+//
+// MessageText:
+//
+// %2 : The adapter is disabled. The driver cannot open the adapter.
+//
+#define EVENT_NDIS_ADAPTER_DISABLED 0x80001396L
+
+//
+// MessageId: EVENT_NDIS_IO_PORT_CONFLICT
+//
+// MessageText:
+//
+// %2 : There is an I/O port conflict.
+//
+#define EVENT_NDIS_IO_PORT_CONFLICT 0x80001397L
+
+//
+// MessageId: EVENT_NDIS_PORT_OR_DMA_CONFLICT
+//
+// MessageText:
+//
+// %2 : There is an I/O port or DMA channel conflict.
+//
+#define EVENT_NDIS_PORT_OR_DMA_CONFLICT 0x80001398L
+
+//
+// MessageId: EVENT_NDIS_MEMORY_CONFLICT
+//
+// MessageText:
+//
+// %2 : There is a memory conflict at address 0x%3.
+//
+#define EVENT_NDIS_MEMORY_CONFLICT 0x80001399L
+
+//
+// MessageId: EVENT_NDIS_INTERRUPT_CONFLICT
+//
+// MessageText:
+//
+// %2 : There is a interrupt conflict at interrupt number %3.
+//
+#define EVENT_NDIS_INTERRUPT_CONFLICT 0x8000139AL
+
+//
+// MessageId: EVENT_NDIS_DMA_CONFLICT
+//
+// MessageText:
+//
+// %2 : There is a resource conflict at DMA channel %3.
+//
+#define EVENT_NDIS_DMA_CONFLICT 0x8000139BL
+
+//
+// MessageId: EVENT_NDIS_INVALID_DOWNLOAD_FILE_ERROR
+//
+// MessageText:
+//
+// %2 : The download file is invalid. The driver is unable to load.
+//
+#define EVENT_NDIS_INVALID_DOWNLOAD_FILE_ERROR 0xC000139CL
+
+//
+// MessageId: EVENT_NDIS_MAXRECEIVES_ERROR
+//
+// MessageText:
+//
+// %2 : The specified Registry entry MaxReceives is out of range. Using
+// default value.
+//
+#define EVENT_NDIS_MAXRECEIVES_ERROR 0x8000139DL
+
+//
+// MessageId: EVENT_NDIS_MAXTRANSMITS_ERROR
+//
+// MessageText:
+//
+// %2 : The specified Registry entry MaxTransmits is out of range. Using
+// default value.
+//
+#define EVENT_NDIS_MAXTRANSMITS_ERROR 0x8000139EL
+
+//
+// MessageId: EVENT_NDIS_MAXFRAMESIZE_ERROR
+//
+// MessageText:
+//
+// %2 : The specified Registry entry MaxFrameSize is out of range. Using
+// default value.
+//
+#define EVENT_NDIS_MAXFRAMESIZE_ERROR 0x8000139FL
+
+//
+// MessageId: EVENT_NDIS_MAXINTERNALBUFS_ERROR
+//
+// MessageText:
+//
+// %2 : The specified Registry entry MaxInternalBufs is out of range. Using
+// default value.
+//
+#define EVENT_NDIS_MAXINTERNALBUFS_ERROR 0x800013A0L
+
+//
+// MessageId: EVENT_NDIS_MAXMULTICAST_ERROR
+//
+// MessageText:
+//
+// %2 : The specified Registry entry MaxMulticast is out of range. Using
+// default value.
+//
+#define EVENT_NDIS_MAXMULTICAST_ERROR 0x800013A1L
+
+//
+// MessageId: EVENT_NDIS_PRODUCTID_ERROR
+//
+// MessageText:
+//
+// %2 : The specified Registry entry ProductId is out of range. Using
+// default value.
+//
+#define EVENT_NDIS_PRODUCTID_ERROR 0x800013A2L
+
+//
+// MessageId: EVENT_NDIS_LOBE_FAILUE_ERROR
+//
+// MessageText:
+//
+// %2 : A Token Ring Lobe Wire Fault has occurred. Verify cable
+// connections. The adapter will continue to try to reinsert back
+// into the ring.
+//
+#define EVENT_NDIS_LOBE_FAILUE_ERROR 0x800013A3L
+
+//
+// MessageId: EVENT_NDIS_SIGNAL_LOSS_ERROR
+//
+// MessageText:
+//
+// %2 : The adapter had detected a loss of signal on the ring. The adapter
+// will continue to try to reinsert back into the ring.
+//
+#define EVENT_NDIS_SIGNAL_LOSS_ERROR 0x800013A4L
+
+//
+// MessageId: EVENT_NDIS_REMOVE_RECEIVED_ERROR
+//
+// MessageText:
+//
+// %2 : The adapter has received a request to deinsert from the
+// ring. The adapter will continue to try to reinsert back into the ring.
+//
+#define EVENT_NDIS_REMOVE_RECEIVED_ERROR 0x800013A5L
+
+//
+// MessageId: EVENT_NDIS_TOKEN_RING_CORRECTION
+//
+// MessageText:
+//
+// %2 : The adapter has successfully reinserted back into the ring.
+//
+#define EVENT_NDIS_TOKEN_RING_CORRECTION 0x400013A6L
+
+//
+// MessageId: EVENT_NDIS_ADAPTER_CHECK_ERROR
+//
+// MessageText:
+//
+// %2 : The adapter has detected an Adapter Check as a result of some
+// unrecoverable hardware of software error. Please contact your service provider.
+//
+#define EVENT_NDIS_ADAPTER_CHECK_ERROR 0xC00013A7L
+
+//
+// MessageId: EVENT_NDIS_RESET_FAILURE_ERROR
+//
+// MessageText:
+//
+// %2 : The adapter failed to reset within a specified time. The adapter will
+// continue to try to reset. This could be the result of a hardware failure.
+//
+#define EVENT_NDIS_RESET_FAILURE_ERROR 0x800013A8L
+
+//
+// MessageId: EVENT_NDIS_CABLE_DISCONNECTED_ERROR
+//
+// MessageText:
+//
+// %2 : The adapter has detected that the Token Ring cable is disconnected from
+// the adapter. Please reconnect the Token Ring cable. The adapter will continue
+// to try to reset until the connection is repaired.
+//
+#define EVENT_NDIS_CABLE_DISCONNECTED_ERROR 0x800013A9L
+
+//
+// MessageId: EVENT_NDIS_RESET_FAILURE_CORRECTION
+//
+// MessageText:
+//
+// %2 : The adapter has successfully completed a previously failed reset.
+//
+#define EVENT_NDIS_RESET_FAILURE_CORRECTION 0x800013AAL
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// General NT System Events
+//
+/////////////////////////////////////////////////////////////////////////
+
+//
+// Eventlog Events 6000 - 6099
+//
+//
+// MessageId: EVENT_LOG_FULL
+//
+// MessageText:
+//
+// The %1 log file is full.
+//
+#define EVENT_LOG_FULL 0x80001770L
+
+//
+// MessageId: EVENT_LogFileNotOpened
+//
+// MessageText:
+//
+// The %1 log file cannot be opened.
+//
+#define EVENT_LogFileNotOpened 0x80001771L
+
+//
+// MessageId: EVENT_LogFileCorrupt
+//
+// MessageText:
+//
+// The %1 log file is corrupted and will be cleared.
+//
+#define EVENT_LogFileCorrupt 0x80001772L
+
+//
+// MessageId: EVENT_DefaultLogCorrupt
+//
+// MessageText:
+//
+// The Application log file could not be opened. %1 will be used as the default
+// log file.
+//
+#define EVENT_DefaultLogCorrupt 0x80001773L
+
+//
+// MessageId: EVENT_BadDriverPacket
+//
+// MessageText:
+//
+// A driver packet received from the I/O subsystem was invalid. The data is the
+// packet.
+//
+#define EVENT_BadDriverPacket 0x80001774L
+
+//
+// MessageId: EVENT_EventlogStarted
+//
+// MessageText:
+//
+// The Event log service was started.
+//
+#define EVENT_EventlogStarted 0x80001775L
+
+//
+// MessageId: EVENT_EventlogStopped
+//
+// MessageText:
+//
+// The Event log service was stopped.
+//
+#define EVENT_EventlogStopped 0x80001776L
+
+//
+// MessageId: TITLE_EventlogMessageBox
+//
+// MessageText:
+//
+// Eventlog Service %0
+//
+#define TITLE_EventlogMessageBox 0x80001777L
+
+//
+// System Events 6100 - 6199
+//
+//
+// MessageId: EVENT_UP_DRIVER_ON_MP
+//
+// MessageText:
+//
+// A uniprocessor-specific driver was loaded on a multiprocessor system. The driver could not load.
+//
+#define EVENT_UP_DRIVER_ON_MP 0x800017D4L
+
+//
+// Service Controller Events 7000 - 7899
+//
+//
+// MessageId: EVENT_SERVICE_START_FAILED
+//
+// MessageText:
+//
+// The %1 service failed to start due to the following error: %n%2
+//
+#define EVENT_SERVICE_START_FAILED 0x80001B58L
+
+//
+// MessageId: EVENT_SERVICE_START_FAILED_II
+//
+// MessageText:
+//
+// The %1 service depends on the %2 service which failed to start because of the following error: %n%3
+//
+#define EVENT_SERVICE_START_FAILED_II 0x80001B59L
+
+//
+// MessageId: EVENT_SERVICE_START_FAILED_GROUP
+//
+// MessageText:
+//
+// The %1 service depends on the %2 group and no member of this group started.
+//
+#define EVENT_SERVICE_START_FAILED_GROUP 0x80001B5AL
+
+//
+// MessageId: EVENT_SERVICE_START_FAILED_NONE
+//
+// MessageText:
+//
+// The %1 service depends on the following nonexistent service: %2
+//
+#define EVENT_SERVICE_START_FAILED_NONE 0x80001B5BL
+
+//
+// MessageId: EVENT_CALL_TO_FUNCTION_FAILED
+//
+// MessageText:
+//
+// The %1 call failed with the following error: %n%2
+//
+#define EVENT_CALL_TO_FUNCTION_FAILED 0x80001B5DL
+
+//
+// MessageId: EVENT_CALL_TO_FUNCTION_FAILED_II
+//
+// MessageText:
+//
+// The %1 call failed for %2 with the following error: %n%3
+//
+#define EVENT_CALL_TO_FUNCTION_FAILED_II 0x80001B5EL
+
+//
+// MessageId: EVENT_REVERTED_TO_LASTKNOWNGOOD
+//
+// MessageText:
+//
+// The system reverted to its last known good configuration. The system is restarting....
+//
+#define EVENT_REVERTED_TO_LASTKNOWNGOOD 0x80001B5FL
+
+//
+// MessageId: EVENT_BAD_ACCOUNT_NAME
+//
+// MessageText:
+//
+// No backslash is in the account name.
+//
+#define EVENT_BAD_ACCOUNT_NAME 0x80001B60L
+
+//
+// MessageId: EVENT_CONNECTION_TIMEOUT
+//
+// MessageText:
+//
+// Timeout (%1 milliseconds) waiting for service to connect.
+//
+#define EVENT_CONNECTION_TIMEOUT 0x80001B61L
+
+//
+// MessageId: EVENT_READFILE_TIMEOUT
+//
+// MessageText:
+//
+// Timeout (%1 milliseconds) waiting for ReadFile.
+//
+#define EVENT_READFILE_TIMEOUT 0x80001B62L
+
+//
+// MessageId: EVENT_TRANSACT_TIMEOUT
+//
+// MessageText:
+//
+// Timeout (%1 milliseconds) waiting for transaction response.
+//
+#define EVENT_TRANSACT_TIMEOUT 0x80001B63L
+
+//
+// MessageId: EVENT_TRANSACT_INVALID
+//
+// MessageText:
+//
+// Message returned in transaction has incorrect size.
+//
+#define EVENT_TRANSACT_INVALID 0x80001B64L
+
+//
+// MessageId: EVENT_FIRST_LOGON_FAILED
+//
+// MessageText:
+//
+// Logon attempt with current password failed with the following error: %n%1
+//
+#define EVENT_FIRST_LOGON_FAILED 0x80001B65L
+
+//
+// MessageId: EVENT_SECOND_LOGON_FAILED
+//
+// MessageText:
+//
+// Second logon attempt with old password also failed with the following error: %n%1
+//
+#define EVENT_SECOND_LOGON_FAILED 0x80001B66L
+
+//
+// MessageId: EVENT_INVALID_DRIVER_DEPENDENCY
+//
+// MessageText:
+//
+// Boot-start or system-start driver (%1) must not depend on a service.
+//
+#define EVENT_INVALID_DRIVER_DEPENDENCY 0x80001B67L
+
+//
+// MessageId: EVENT_BAD_SERVICE_STATE
+//
+// MessageText:
+//
+// The %1 service has reported an invalid current state %2.
+//
+#define EVENT_BAD_SERVICE_STATE 0x80001B68L
+
+//
+// MessageId: EVENT_CIRCULAR_DEPENDENCY_DEMAND
+//
+// MessageText:
+//
+// Detected circular dependencies demand starting %1.
+//
+#define EVENT_CIRCULAR_DEPENDENCY_DEMAND 0x80001B69L
+
+//
+// MessageId: EVENT_CIRCULAR_DEPENDENCY_AUTO
+//
+// MessageText:
+//
+// Detected circular dependencies auto-starting services.
+//
+#define EVENT_CIRCULAR_DEPENDENCY_AUTO 0x80001B6AL
+
+//
+// MessageId: EVENT_DEPEND_ON_LATER_SERVICE
+//
+// MessageText:
+//
+// Circular dependency: The %1 service depends on a service in a group which starts later.
+//
+#define EVENT_DEPEND_ON_LATER_SERVICE 0x80001B6BL
+
+//
+// MessageId: EVENT_DEPEND_ON_LATER_GROUP
+//
+// MessageText:
+//
+// Circular dependency: The %1 service depends on a group which starts later.
+//
+#define EVENT_DEPEND_ON_LATER_GROUP 0x80001B6CL
+
+//
+// MessageId: EVENT_SEVERE_SERVICE_FAILED
+//
+// MessageText:
+//
+// About to revert to the last known good configuration because the %1 service failed to start.
+//
+#define EVENT_SEVERE_SERVICE_FAILED 0x80001B6DL
+
+//
+// MessageId: EVENT_SERVICE_START_HUNG
+//
+// MessageText:
+//
+// The %1 service hung on starting.
+//
+#define EVENT_SERVICE_START_HUNG 0x80001B6EL
+
+//
+// MessageId: EVENT_SERVICE_EXIT_FAILED
+//
+// MessageText:
+//
+// The %1 service terminated with the following error: %n%2
+//
+#define EVENT_SERVICE_EXIT_FAILED 0x80001B6FL
+
+//
+// MessageId: EVENT_SERVICE_EXIT_FAILED_SPECIFIC
+//
+// MessageText:
+//
+// The %1 service terminated with service-specific error %2.
+//
+#define EVENT_SERVICE_EXIT_FAILED_SPECIFIC 0x80001B70L
+
+//
+// MessageId: EVENT_SERVICE_START_AT_BOOT_FAILED
+//
+// MessageText:
+//
+// At least one service or driver failed during system startup. Use Event Viewer to examine the event log for details.
+//
+#define EVENT_SERVICE_START_AT_BOOT_FAILED 0x80001B71L
+
+//
+// MessageId: EVENT_BOOT_SYSTEM_DRIVERS_FAILED
+//
+// MessageText:
+//
+// The following boot-start or system-start driver(s) failed to load: %1
+//
+#define EVENT_BOOT_SYSTEM_DRIVERS_FAILED 0x80001B72L
+
+//
+// MessageId: EVENT_RUNNING_LASTKNOWNGOOD
+//
+// MessageText:
+//
+// Windows NT could not be started as configured. A previous working configuration was used instead.
+//
+#define EVENT_RUNNING_LASTKNOWNGOOD 0x80001B73L
+
+//
+// MessageId: EVENT_TAKE_OWNERSHIP
+//
+// MessageText:
+//
+// The %1 Registry key denied access to SYSTEM account programs so the Service Control Manager took ownership of the Registry key.
+//
+#define EVENT_TAKE_OWNERSHIP 0x80001B74L
+
+//
+// This Text is used as a title for the message box used to display
+// MessageId 7027. It is not an event or error message.
+//
+//
+// MessageId: TITLE_SC_MESSAGE_BOX
+//
+// MessageText:
+//
+// Service Control Manager %0
+//
+#define TITLE_SC_MESSAGE_BOX 0x80001B75L
+
+//
+// MessageId: EVENT_SERVICE_NOT_INTERACTIVE
+//
+// MessageText:
+//
+// The %1 service is marked as an interactive service. However, the system is configured to not allow interactive services. This service may not function properly.
+//
+#define EVENT_SERVICE_NOT_INTERACTIVE 0x80001B76L
+
+//
+// Schedule (AT command) Service Events 7900 - 7999
+//
+//
+// MessageId: EVENT_COMMAND_NOT_INTERACTIVE
+//
+// MessageText:
+//
+// The %1 command is marked as an interactive command. However, the system is
+// configured to not allow interactive command execution. This command may not
+// function properly.
+//
+#define EVENT_COMMAND_NOT_INTERACTIVE 0x80001EDCL
+
+//
+// MessageId: EVENT_COMMAND_START_FAILED
+//
+// MessageText:
+//
+// The %1 command failed to start due to the following error: %n%2
+//
+#define EVENT_COMMAND_START_FAILED 0x80001EDDL
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// Lanman Bowser/Browser Events (8000-8499)
+//
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// MessageId: EVENT_BOWSER_OTHER_MASTER_ON_NET
+//
+// MessageText:
+//
+// The master browser has received a server announcement from the computer %2
+// that believes that it is the master browser for the domain on transport %3.
+// The master browser is stopping or an election is being forced.
+//
+#define EVENT_BOWSER_OTHER_MASTER_ON_NET 0xC0001F43L
+
+//
+// MessageId: EVENT_BOWSER_PROMOTED_WHILE_ALREADY_MASTER
+//
+// MessageText:
+//
+// A request has been submitted to promote the computer to backup when it is already a
+// master browser.
+//
+#define EVENT_BOWSER_PROMOTED_WHILE_ALREADY_MASTER 0x80001F44L
+
+//
+// MessageId: EVENT_BOWSER_NON_MASTER_MASTER_ANNOUNCE
+//
+// MessageText:
+//
+// The browser has received a server announcement indicating that the computer %2
+// is a master browser, but this computer is not a master browser.
+//
+#define EVENT_BOWSER_NON_MASTER_MASTER_ANNOUNCE 0x80001F45L
+
+//
+// MessageId: EVENT_BOWSER_ILLEGAL_DATAGRAM
+//
+// MessageText:
+//
+// The browser has received an illegal datagram from the remote computer %2 to name %3 on transport %4. The data is the datagram.
+//
+#define EVENT_BOWSER_ILLEGAL_DATAGRAM 0x80001F46L
+
+//
+// MessageId: EVENT_BROWSER_STATUS_BITS_UPDATE_FAILED
+//
+// MessageText:
+//
+// The browser was unable to update the service status bits. The data is the error.
+//
+#define EVENT_BROWSER_STATUS_BITS_UPDATE_FAILED 0xC0001F47L
+
+//
+// MessageId: EVENT_BROWSER_ROLE_CHANGE_FAILED
+//
+// MessageText:
+//
+// The browser was unable to update its role. The data is the error.
+//
+#define EVENT_BROWSER_ROLE_CHANGE_FAILED 0xC0001F48L
+
+//
+// MessageId: EVENT_BROWSER_MASTER_PROMOTION_FAILED
+//
+// MessageText:
+//
+// The browser was unable to promote itself to master browser. The computer that currently
+// believes it is the master browser is %1.
+//
+#define EVENT_BROWSER_MASTER_PROMOTION_FAILED 0xC0001F49L
+
+//
+// MessageId: EVENT_BOWSER_NAME_CONVERSION_FAILED
+//
+// MessageText:
+//
+// The browser driver was unable to convert a character string to a unicode string.
+//
+#define EVENT_BOWSER_NAME_CONVERSION_FAILED 0xC0001F4AL
+
+//
+// MessageId: EVENT_BROWSER_OTHERDOMAIN_ADD_FAILED
+//
+// MessageText:
+//
+// The browser was unable to add the configuration parameter %1.
+//
+#define EVENT_BROWSER_OTHERDOMAIN_ADD_FAILED 0xC0001F4BL
+
+//
+// MessageId: EVENT_BOWSER_ELECTION_RECEIVED
+//
+// MessageText:
+//
+// The browser driver has received an election packet from computer %2 on network %3. The data is the packet received.
+//
+#define EVENT_BOWSER_ELECTION_RECEIVED 0x00001F4CL
+
+//
+// MessageId: EVENT_BOWSER_ELECTION_SENT_GETBLIST_FAILED
+//
+// MessageText:
+//
+// The browser driver has forced an election on network %2 because it was unable to find a master browser to retrieve a backup list on that network.
+//
+#define EVENT_BOWSER_ELECTION_SENT_GETBLIST_FAILED 0x40001F4DL
+
+//
+// MessageId: EVENT_BOWSER_ELECTION_SENT_FIND_MASTER_FAILED
+//
+// MessageText:
+//
+// The browser driver has forced an election on network %2 because it was unable to find a master browser for that network.
+//
+#define EVENT_BOWSER_ELECTION_SENT_FIND_MASTER_FAILED 0x40001F4EL
+
+//
+// MessageId: EVENT_BROWSER_ELECTION_SENT_LANMAN_NT_STARTED
+//
+// MessageText:
+//
+// The browser has forced an election on network %1 because a Windows NT Server (or domain master) browser is started.
+//
+#define EVENT_BROWSER_ELECTION_SENT_LANMAN_NT_STARTED 0x40001F4FL
+
+//
+// MessageId: EVENT_BOWSER_ILLEGAL_DATAGRAM_THRESHOLD
+//
+// MessageText:
+//
+// The browser driver has received too many illegal datagrams from the remote computer %2 to name %3 on transport %4. The data is the datagram.
+// No more events will be generated until the reset frequency has expired.
+//
+#define EVENT_BOWSER_ILLEGAL_DATAGRAM_THRESHOLD 0xC0001F50L
+
+//
+// MessageId: EVENT_BROWSER_DEPENDANT_SERVICE_FAILED
+//
+// MessageText:
+//
+// The browser has failed to start because the dependent service %1 had invalid service status %2.
+// Status Meaning
+// 1 Service Stopped%n
+// 2 Start Pending%n
+// 3 Stop Pending%n
+// 4 Running%n
+// 5 Continue Pending%n
+// 6 Pause Pending%n
+// 7 Paused%n
+//
+#define EVENT_BROWSER_DEPENDANT_SERVICE_FAILED 0xC0001F51L
+
+//
+// MessageId: EVENT_BROWSER_MASTER_PROMOTION_FAILED_STOPPING
+//
+// MessageText:
+//
+// The browser was unable to promote itself to master browser. The browser will continue
+// to attempt to promote itself to the master browser, but will no longer log any events in the event log in Event Viewer.
+//
+#define EVENT_BROWSER_MASTER_PROMOTION_FAILED_STOPPING 0xC0001F53L
+
+//
+// MessageId: EVENT_BROWSER_MASTER_PROMOTION_FAILED_NO_MASTER
+//
+// MessageText:
+//
+// The browser was unable to promote itself to master browser. The computer that currently
+// believes it is the master browser is unknown.
+//
+#define EVENT_BROWSER_MASTER_PROMOTION_FAILED_NO_MASTER 0xC0001F54L
+
+//
+// MessageId: EVENT_BROWSER_SERVER_LIST_FAILED
+//
+// MessageText:
+//
+// The browser was unable to retrieve a list of servers from the browser master %1 on the network %2.
+// The data is the error code.
+//
+#define EVENT_BROWSER_SERVER_LIST_FAILED 0x80001F55L
+
+//
+// MessageId: EVENT_BROWSER_DOMAIN_LIST_FAILED
+//
+// MessageText:
+//
+// The browser was unable to retrieve a list of domains from the browser master %1 on the network %2.
+// The data is the error code.
+//
+#define EVENT_BROWSER_DOMAIN_LIST_FAILED 0x80001F56L
+
+//
+// MessageId: EVENT_BROWSER_ILLEGAL_CONFIG
+//
+// MessageText:
+//
+// The value for the parameter %1 to the browser service was illegal.
+//
+#define EVENT_BROWSER_ILLEGAL_CONFIG 0x80001F57L
+
+//
+// MessageId: EVENT_BOWSER_OLD_BACKUP_FOUND
+//
+// MessageText:
+//
+// The backup browser server %2 is out-of-date. Consider upgrading this computer.
+//
+#define EVENT_BOWSER_OLD_BACKUP_FOUND 0x40001F58L
+
+//
+// MessageId: EVENT_BROWSER_SERVER_LIST_RETRIEVED
+//
+// MessageText:
+//
+// The browser has retrieved a list of servers from remote computer %1 on transport %2.%n
+// There were %3 entries read, and %4 total entries.
+//
+#define EVENT_BROWSER_SERVER_LIST_RETRIEVED 0x00001F59L
+
+//
+// MessageId: EVENT_BROWSER_DOMAIN_LIST_RETRIEVED
+//
+// MessageText:
+//
+// The browser has retrieved a list of domains from remote computer %1 on transport %2.%n
+// There were %3 entries read, and %4 total entries.
+//
+#define EVENT_BROWSER_DOMAIN_LIST_RETRIEVED 0x00001F5AL
+
+//
+// MessageId: EVENT_BOWSER_PDC_LOST_ELECTION
+//
+// MessageText:
+//
+// The browser running on the Domain Controller has lost an election. The computer that won the election is %2, on the transport %3.%n
+// The data contains the election version, election criteria, and remote computer time up, and the same information for
+// the current computer.
+//
+#define EVENT_BOWSER_PDC_LOST_ELECTION 0x40001F5BL
+
+//
+// MessageId: EVENT_BOWSER_NON_PDC_WON_ELECTION
+//
+// MessageText:
+//
+// The browser running on this computer has won a browser election on network %2.
+// This computer is a member of a domain, so the Domain Controller should become the master
+// browser.
+//
+#define EVENT_BOWSER_NON_PDC_WON_ELECTION 0x40001F5CL
+
+//
+// MessageId: EVENT_BOWSER_CANT_READ_REGISTRY
+//
+// MessageText:
+//
+// The browser driver was unable to initialize variables from the Registry.
+//
+#define EVENT_BOWSER_CANT_READ_REGISTRY 0x40001F5DL
+
+//
+// MessageId: EVENT_BOWSER_MAILSLOT_DATAGRAM_THRESHOLD_EXCEEDED
+//
+// MessageText:
+//
+// The browser driver has discarded too many mailslot messages.
+//
+#define EVENT_BOWSER_MAILSLOT_DATAGRAM_THRESHOLD_EXCEEDED 0x40001F5EL
+
+//
+// MessageId: EVENT_BOWSER_GETBROWSERLIST_THRESHOLD_EXCEEDED
+//
+// MessageText:
+//
+// The browser driver has discarded too many GetBrowserServerList requests.
+//
+#define EVENT_BOWSER_GETBROWSERLIST_THRESHOLD_EXCEEDED 0x40001F5FL
+
+//
+// MessageId: EVENT_BROWSER_BACKUP_STOPPED
+//
+// MessageText:
+//
+// The browser service has failed to retrieve the backup list too many times on transport %1.
+// The backup browser is stopping.
+//
+#define EVENT_BROWSER_BACKUP_STOPPED 0xC0001F60L
+
+//
+// MessageId: EVENT_BROWSER_ELECTION_SENT_LANMAN_NT_STOPPED
+//
+// MessageText:
+//
+// The browser has forced an election on network %1 because a master browser was stopped.
+//
+#define EVENT_BROWSER_ELECTION_SENT_LANMAN_NT_STOPPED 0x40001F61L
+
+//
+// MessageId: EVENT_BROWSER_GETBLIST_RECEIVED_NOT_MASTER
+//
+// MessageText:
+//
+// The browser has received a GetBrowserServerList request when it is not the master browser.
+//
+#define EVENT_BROWSER_GETBLIST_RECEIVED_NOT_MASTER 0xC0001F62L
+
+//
+// MessageId: EVENT_BROWSER_ELECTION_SENT_ROLE_CHANGED
+//
+// MessageText:
+//
+// The browser has forced an election on network %1 because the Domain Controller (or Server) has changed its role
+//
+#define EVENT_BROWSER_ELECTION_SENT_ROLE_CHANGED 0x40001F63L
+
+//
+// MessageId: EVENT_BROWSER_NOT_STARTED_IPX_CONFIG_MISMATCH
+//
+// MessageText:
+//
+// The browser has failed to start because of an error in the DirectHostBinding parameter to the browser.
+//
+#define EVENT_BROWSER_NOT_STARTED_IPX_CONFIG_MISMATCH 0xC0001F64L
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// Sap Agent Events (8500-8999)
+//
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// MessageId: NWSAP_EVENT_KEY_NOT_FOUND
+//
+// MessageText:
+//
+// The Registry Key %1 was not present. The Sap Agent could not start.
+//
+#define NWSAP_EVENT_KEY_NOT_FOUND 0xC0002134L
+
+//
+// MessageId: NWSAP_EVENT_WSASTARTUP_FAILED
+//
+// MessageText:
+//
+// Winsock startup routine failed. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_WSASTARTUP_FAILED 0xC0002135L
+
+//
+// MessageId: NWSAP_EVENT_SOCKET_FAILED
+//
+// MessageText:
+//
+// Socket create call failed for main socket. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_SOCKET_FAILED 0xC0002136L
+
+//
+// MessageId: NWSAP_EVENT_SETOPTBCAST_FAILED
+//
+// MessageText:
+//
+// Setting broadcast option on socket failed. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_SETOPTBCAST_FAILED 0xC0002137L
+
+//
+// MessageId: NWSAP_EVENT_BIND_FAILED
+//
+// MessageText:
+//
+// Binding to SAP Socket failed. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_BIND_FAILED 0xC0002138L
+
+//
+// MessageId: NWSAP_EVENT_GETSOCKNAME_FAILED
+//
+// MessageText:
+//
+// Getting bound address of socket failed. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_GETSOCKNAME_FAILED 0xC0002139L
+
+//
+// MessageId: NWSAP_EVENT_OPTEXTENDEDADDR_FAILED
+//
+// MessageText:
+//
+// Setting option EXTENDED_ADDRESS failed. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_OPTEXTENDEDADDR_FAILED 0xC000213AL
+
+//
+// MessageId: NWSAP_EVENT_OPTBCASTINADDR_FAILED
+//
+// MessageText:
+//
+// Setting NWLink option BCASTINTADDR failed. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_OPTBCASTINADDR_FAILED 0xC000213BL
+
+//
+// MessageId: NWSAP_EVENT_CARDMALLOC_FAILED
+//
+// MessageText:
+//
+// Error allocating memory to hold a card structure. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_CARDMALLOC_FAILED 0xC000213CL
+
+//
+// MessageId: NWSAP_EVENT_NOCARDS
+//
+// MessageText:
+//
+// Enumeration of cards returned 0 cards.
+//
+#define NWSAP_EVENT_NOCARDS 0xC000213DL
+
+//
+// MessageId: NWSAP_EVENT_THREADEVENT_FAIL
+//
+// MessageText:
+//
+// Error creating thread counting event. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_THREADEVENT_FAIL 0xC000213EL
+
+//
+// MessageId: NWSAP_EVENT_RECVSEM_FAIL
+//
+// MessageText:
+//
+// Error creating receive semaphore. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_RECVSEM_FAIL 0xC000213FL
+
+//
+// MessageId: NWSAP_EVENT_SENDEVENT_FAIL
+//
+// MessageText:
+//
+// Error creating send event. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_SENDEVENT_FAIL 0xC0002140L
+
+//
+// MessageId: NWSAP_EVENT_STARTRECEIVE_ERROR
+//
+// MessageText:
+//
+// Error starting receive thread. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_STARTRECEIVE_ERROR 0xC0002141L
+
+//
+// MessageId: NWSAP_EVENT_STARTWORKER_ERROR
+//
+// MessageText:
+//
+// Error starting worker thread. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_STARTWORKER_ERROR 0xC0002142L
+
+//
+// MessageId: NWSAP_EVENT_TABLE_MALLOC_FAILED
+//
+// MessageText:
+//
+// Error allocating database array. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_TABLE_MALLOC_FAILED 0xC0002143L
+
+//
+// MessageId: NWSAP_EVENT_HASHTABLE_MALLOC_FAILED
+//
+// MessageText:
+//
+// Error allocating hash table. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_HASHTABLE_MALLOC_FAILED 0xC0002144L
+
+//
+// MessageId: NWSAP_EVENT_STARTLPCWORKER_ERROR
+//
+// MessageText:
+//
+// Error starting LPC worker thread. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_STARTLPCWORKER_ERROR 0xC0002145L
+
+//
+// MessageId: NWSAP_EVENT_CREATELPCPORT_ERROR
+//
+// MessageText:
+//
+// Error creating the LPC port. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_CREATELPCPORT_ERROR 0xC0002146L
+
+//
+// MessageId: NWSAP_EVENT_CREATELPCEVENT_ERROR
+//
+// MessageText:
+//
+// Error creating the LPC thread event. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_CREATELPCEVENT_ERROR 0xC0002147L
+
+//
+// MessageId: NWSAP_EVENT_LPCLISTENMEMORY_ERROR
+//
+// MessageText:
+//
+// Error allocating memory for an LPC Client structure. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_LPCLISTENMEMORY_ERROR 0xC0002148L
+
+//
+// MessageId: NWSAP_EVENT_LPCHANDLEMEMORY_ERROR
+//
+// MessageText:
+//
+// Error allocating buffer to hold LPC worker thread handles. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_LPCHANDLEMEMORY_ERROR 0xC0002149L
+
+//
+// MessageId: NWSAP_EVENT_BADWANFILTER_VALUE
+//
+// MessageText:
+//
+// The value for WANFilter in the registry must be 0-2. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_BADWANFILTER_VALUE 0xC000214AL
+
+//
+// MessageId: NWSAP_EVENT_CARDLISTEVENT_FAIL
+//
+// MessageText:
+//
+// Error creating event for card list access synchronization. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_CARDLISTEVENT_FAIL 0xC000214BL
+
+//
+// MessageId: NWSAP_EVENT_SDMDEVENT_FAIL
+//
+// MessageText:
+//
+// Error creating event for database access synchronization. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_SDMDEVENT_FAIL 0xC000214CL
+
+//
+// MessageId: NWSAP_EVENT_INVALID_FILTERNAME
+//
+// MessageText:
+//
+// Name too long in key %1: Name = %s. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_INVALID_FILTERNAME 0x8000214DL
+
+//
+// MessageId: NWSAP_EVENT_WANSEM_FAIL
+//
+// MessageText:
+//
+// Error creating WAN control semaphore. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_WANSEM_FAIL 0xC000214EL
+
+//
+// MessageId: NWSAP_EVENT_WANSOCKET_FAILED
+//
+// MessageText:
+//
+// Socket create call failed for WAN socket. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_WANSOCKET_FAILED 0xC000214FL
+
+//
+// MessageId: NWSAP_EVENT_WANBIND_FAILED
+//
+// MessageText:
+//
+// Binding to WAN socket failed. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_WANBIND_FAILED 0xC0002150L
+
+//
+// MessageId: NWSAP_EVENT_STARTWANWORKER_ERROR
+//
+// MessageText:
+//
+// Error starting WAN worker thread. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_STARTWANWORKER_ERROR 0xC0002151L
+
+//
+// MessageId: NWSAP_EVENT_STARTWANCHECK_ERROR
+//
+// MessageText:
+//
+// Error starting WAN check thread. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_STARTWANCHECK_ERROR 0xC0002152L
+
+//
+// MessageId: NWSAP_EVENT_OPTMAXADAPTERNUM_ERROR
+//
+// MessageText:
+//
+// Error on getsockopt IPX_MAX_ADAPTER_NUM. Data is the error code. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_OPTMAXADAPTERNUM_ERROR 0xC0002153L
+
+//
+// MessageId: NWSAP_EVENT_WANHANDLEMEMORY_ERROR
+//
+// MessageText:
+//
+// Error allocating buffer to hold WAN notify thread handles. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_WANHANDLEMEMORY_ERROR 0xC0002154L
+
+//
+// MessageId: NWSAP_EVENT_WANEVENT_ERROR
+//
+// MessageText:
+//
+// Error creating the WAN thread event. The Sap Agent cannot continue.
+//
+#define NWSAP_EVENT_WANEVENT_ERROR 0xC0002155L
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// Transport Events (9000-9499)
+//
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// MessageId: EVENT_TRANSPORT_RESOURCE_POOL
+//
+// MessageText:
+//
+// %2 could not allocate a resource of type %3 due to system resource problems.
+//
+#define EVENT_TRANSPORT_RESOURCE_POOL 0x80002329L
+
+//
+// MessageId: EVENT_TRANSPORT_RESOURCE_LIMIT
+//
+// MessageText:
+//
+// %2 could not allocate a resource of type %3 due to its configured size of %4.
+//
+#define EVENT_TRANSPORT_RESOURCE_LIMIT 0x8000232AL
+
+//
+// MessageId: EVENT_TRANSPORT_RESOURCE_SPECIFIC
+//
+// MessageText:
+//
+// %2 could not allocate a resource of type %3 due to a specifically configured limit of %4.
+//
+#define EVENT_TRANSPORT_RESOURCE_SPECIFIC 0x8000232BL
+
+//
+// MessageId: EVENT_TRANSPORT_REGISTER_FAILED
+//
+// MessageText:
+//
+// %2 failed to register itself with the NDIS wrapper.
+//
+#define EVENT_TRANSPORT_REGISTER_FAILED 0xC000232CL
+
+//
+// MessageId: EVENT_TRANSPORT_BINDING_FAILED
+//
+// MessageText:
+//
+// %2 failed to bind to adapter %3.
+//
+#define EVENT_TRANSPORT_BINDING_FAILED 0xC000232DL
+
+//
+// MessageId: EVENT_TRANSPORT_ADAPTER_NOT_FOUND
+//
+// MessageText:
+//
+// %2 could not find adapter %3.
+//
+#define EVENT_TRANSPORT_ADAPTER_NOT_FOUND 0xC000232EL
+
+//
+// MessageId: EVENT_TRANSPORT_SET_OID_FAILED
+//
+// MessageText:
+//
+// %2 failed while setting OID %3 on adapter %4.
+//
+#define EVENT_TRANSPORT_SET_OID_FAILED 0xC000232FL
+
+//
+// MessageId: EVENT_TRANSPORT_QUERY_OID_FAILED
+//
+// MessageText:
+//
+// %2 failed while querying OID %3 on adapter %4.
+//
+#define EVENT_TRANSPORT_QUERY_OID_FAILED 0xC0002330L
+
+//
+// MessageId: EVENT_TRANSPORT_TRANSFER_DATA
+//
+// MessageText:
+//
+// %2 could not transfer a packet from the adapter. The packet was dropped.
+//
+#define EVENT_TRANSPORT_TRANSFER_DATA 0x40002331L
+
+//
+// MessageId: EVENT_TRANSPORT_TOO_MANY_LINKS
+//
+// MessageText:
+//
+// %2 could not create a link to a remote computer. Your computer has exceeded the number of connections it can make to that remote computer.
+//
+#define EVENT_TRANSPORT_TOO_MANY_LINKS 0x40002332L
+
+//
+// MessageId: EVENT_TRANSPORT_BAD_PROTOCOL
+//
+// MessageText:
+//
+// %2 received an unexpected %3 packet from a remote computer.
+//
+#define EVENT_TRANSPORT_BAD_PROTOCOL 0x40002333L
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// IPX/SPX Events (9500-9999)
+//
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// MessageId: EVENT_IPX_NEW_DEFAULT_TYPE
+//
+// MessageText:
+//
+// The default frame type for auto-detection on %2 was changed to %3.
+// This type is now the default if no frame type can be detected.
+//
+#define EVENT_IPX_NEW_DEFAULT_TYPE 0x4000251DL
+
+//
+// MessageId: EVENT_IPX_SAP_ANNOUNCE
+//
+// MessageText:
+//
+// A SAP announcement was sent over %2 which is configured for multiple
+// networks, but no internal network is configured. This may prevent
+// machines on some networks from locating the advertised service.
+//
+#define EVENT_IPX_SAP_ANNOUNCE 0x8000251EL
+
+//
+// MessageId: EVENT_IPX_ILLEGAL_CONFIG
+//
+// MessageText:
+//
+// The value for the %2 parameter %3 was illegal.
+//
+#define EVENT_IPX_ILLEGAL_CONFIG 0x8000251FL
+
+//
+// MessageId: EVENT_IPX_INTERNAL_NET_INVALID
+//
+// MessageText:
+//
+// %2 was configured with an internal network number of %3. This network
+// number conflicts with one of the attached networks. The configured
+// internal network number will be ignored.
+//
+#define EVENT_IPX_INTERNAL_NET_INVALID 0xC0002520L
+
+//
+// MessageId: EVENT_IPX_NO_FRAME_TYPES
+//
+// MessageText:
+//
+// %2 had no frame types configured for the binding to adapter %3.
+//
+#define EVENT_IPX_NO_FRAME_TYPES 0xC0002521L
+
+//
+// MessageId: EVENT_IPX_CREATE_DEVICE
+//
+// MessageText:
+//
+// %2 failed to initialize because the driver device could not be created.
+//
+#define EVENT_IPX_CREATE_DEVICE 0xC0002522L
+
+//
+// MessageId: EVENT_IPX_NO_ADAPTERS
+//
+// MessageText:
+//
+// %2 could not bind to any adapters. The transport could not start.
+//
+#define EVENT_IPX_NO_ADAPTERS 0xC0002523L
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// DCOM Events (10000-10999)
+//
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// MessageId: EVENT_RPCSS_CREATEPROCESS_FAILURE
+//
+// MessageText:
+//
+// Unable to start a DCOM Server: %3.
+// The error:%n"%%%2"%nHappened while starting this command:%n%1
+//
+#define EVENT_RPCSS_CREATEPROCESS_FAILURE 0xC0002710L
+
+//
+// MessageId: EVENT_RPCSS_RUNAS_CREATEPROCESS_FAILURE
+//
+// MessageText:
+//
+// Unable to start a DCOM Server: %3 as %4/%5.
+// The error:%n"%%%2"%nHappened while starting this command:%n%1
+//
+#define EVENT_RPCSS_RUNAS_CREATEPROCESS_FAILURE 0xC0002711L
+
+//
+// MessageId: EVENT_RPCSS_LAUNCH_ACCESS_DENIED
+//
+// MessageText:
+//
+// Access denied attempting to launch a DCOM Server.
+// The server is:%n%1
+//
+#define EVENT_RPCSS_LAUNCH_ACCESS_DENIED 0xC0002712L
+
+//
+// MessageId: EVENT_RPCSS_DEFAULT_LAUNCH_ACCESS_DENIED
+//
+// MessageText:
+//
+// Access denied attempting to launch a DCOM Server using DefaultLaunchPermssion.
+// The server is:%n%1
+//
+#define EVENT_RPCSS_DEFAULT_LAUNCH_ACCESS_DENIED 0xC0002713L
+
+//
+// MessageId: EVENT_RPCSS_RUNAS_CANT_LOGIN
+//
+// MessageText:
+//
+// DCOM got error "%%%1" and was unable to logon %2\%3
+// in order to run the server:%n%4
+//
+#define EVENT_RPCSS_RUNAS_CANT_LOGIN 0xC0002714L
+
+//
+// MessageId: EVENT_RPCSS_START_SERVICE_FAILURE
+//
+// MessageText:
+//
+// DCOM got error "%%%1" attempting to start the service %2 with arguments "%3"
+// in order to run the server:%n%4
+//
+#define EVENT_RPCSS_START_SERVICE_FAILURE 0xC0002715L
+
+//
+// MessageId: EVENT_RPCSS_REMOTE_SIDE_ERROR
+//
+// MessageText:
+//
+// DCOM got error "%%%1" from the computer %2 when attempting to
+// activate the server:%n%3
+//
+#define EVENT_RPCSS_REMOTE_SIDE_ERROR 0xC0002716L
+
+//
+// MessageId: EVENT_RPCSS_ACTIVATION_ERROR
+//
+// MessageText:
+//
+// DCOM got error "%%%1" when attempting to
+// activate the server:%n%2
+//
+#define EVENT_RPCSS_ACTIVATION_ERROR 0xC0002717L
+
+//
+// MessageId: EVENT_RPCSS_REMOTE_SIDE_ERROR_WITH_FILE
+//
+// MessageText:
+//
+// DCOM got error "%%%1" from the computer %2 when attempting to
+// the server:%n%3 with file %4.
+//
+#define EVENT_RPCSS_REMOTE_SIDE_ERROR_WITH_FILE 0xC0002718L
+
+//
+// MessageId: EVENT_RPCSS_REMOTE_SIDE_UNAVAILABLE
+//
+// MessageText:
+//
+// DCOM was unable to communicate with the computer %1 using any of the configured
+// protocols.
+//
+#define EVENT_RPCSS_REMOTE_SIDE_UNAVAILABLE 0xC0002719L
+
+//
+// MessageId: EVENT_RPCSS_SERVER_START_TIMEOUT
+//
+// MessageText:
+//
+// The server %1 did not register with DCOM within the required timeout.
+//
+#define EVENT_RPCSS_SERVER_START_TIMEOUT 0xC000271AL
+
+//
+// MessageId: EVENT_RPCSS_SERVER_NOT_RESPONDING
+//
+// MessageText:
+//
+// The server %1 could not be contacted to establish the connection to the client
+//
+#define EVENT_RPCSS_SERVER_NOT_RESPONDING 0xC000271BL
+
+
+#endif // _NETEVENT
+
diff --git a/public/sdk/inc/newat.h b/public/sdk/inc/newat.h
new file mode 100644
index 000000000..5a399f6fe
--- /dev/null
+++ b/public/sdk/inc/newat.h
@@ -0,0 +1,103 @@
+/*++ BUILD Version: 0006 // Increment this if a change has global effects
+
+Copyright (c) 1992 Microsoft Corporation
+
+Module Name:
+
+ newat.h
+
+Abstract:
+
+ This file contains structures, function prototypes, and definitions
+ for the new (cairo) schedule service API-s.
+
+Author:
+
+ jim harriger (jimharr) 04 - february - 1994
+
+Environment:
+
+ User Mode - Win32
+ Portable to any flat, 32-bit environment. (Uses Win32 typedefs.)
+ Requires ANSI C extensions: slash-slash comments, long external names.
+
+Notes:
+
+ You must include NETCONS.H and LMAT.h before this file, since this
+ file depends on values defined in NETCONS.H.
+
+Revision History:
+
+ Jim Harriger (jimharr) 13 may 93
+ -- added NetSchedule(foo)Ex Routines, for Cairo
+ Jim Harriger (jimharr) 12 jul 94
+ -- modified API structures for new multi-trigger functionality.
+--*/
+
+#ifndef _NEWAT_
+#define _NEWAT_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+// structures for new ..Ex API's
+
+typedef struct _AT_TRIGGER_POINT {
+ LARGE_INTEGER MinuteMask;
+ DWORD HourMask;
+ DWORD DaysOfMonth;
+ USHORT DaysOfWeek;
+} AT_TRIGGER_POINT, *PAT_TRIGGER_POINT, *LPAT_TRIGGER_POINT;
+
+typedef struct _AT_INFO_EX {
+ GUID UserProxy;
+ LPWSTR Command;
+ USHORT Flags;
+ USHORT cTriggerPoints;
+ AT_TRIGGER_POINT *atpTriggerPoints;
+} AT_INFO_EX, *PAT_INFO_EX, *LPAT_INFO_EX;
+
+typedef struct _AT_ENUM_EX {
+ GUID UserProxy;
+ LPWSTR Command;
+ DWORD JobId;
+ USHORT Flags;
+ USHORT cTriggerPoints;
+ AT_TRIGGER_POINT *atpTriggerPoints;
+} AT_ENUM_EX, *PAT_ENUM_EX, *LPAT_ENUM_EX;
+
+//
+// new API functions
+//
+
+NET_API_STATUS NET_API_FUNCTION
+NetScheduleJobAddEx(
+ IN LPWSTR Servername OPTIONAL,
+ IN LPBYTE Buffer,
+ OUT LPDWORD JobId
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetScheduleJobEnumEx(
+ IN LPWSTR Servername OPTIONAL,
+ OUT LPBYTE * PointerToBuffer,
+ IN DWORD PrefferedMaximumLength,
+ OUT LPDWORD EntriesRead,
+ OUT LPDWORD TotalEntries,
+ IN OUT LPDWORD ResumeHandle
+ );
+
+NET_API_STATUS NET_API_FUNCTION
+NetScheduleJobGetInfoEx(
+ IN LPWSTR Servername OPTIONAL,
+ IN DWORD JobId,
+ OUT LPBYTE * PointerToBuffer
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _NEWAT_
diff --git a/public/sdk/inc/nminsert.h b/public/sdk/inc/nminsert.h
new file mode 100644
index 000000000..1c0d16b30
--- /dev/null
+++ b/public/sdk/inc/nminsert.h
@@ -0,0 +1,124 @@
+/*++
+
+Copyright (c) 1996 Microsoft Corporation
+
+Module Name:
+
+ NMInsert.h
+
+Abstract:
+
+ This header file defines constants types and functions for inserting
+ frames into a running Netmon capture.
+
+Author:
+
+ a-flexd 07-09-96 Created.
+
+Revision History:
+
+
+Mini-DOC:
+
+Netmon allows a programming interface to insert frames into a running capture.
+There are two different ways to do this. You can either used the defined
+interfaces in the NMExt API suite to start the capture, define the filter etc,
+or you can use the "raw" interface. Using this interface will insert a frame
+into EVERY running capture. For example, if you your two different Netmons
+running, one on ethernet and one on FDDI, you will get the inserted frame
+into both captures.
+Calling TransmitSpecialFrame if Netmon is not running is just fine. Nothing
+will happen, the data will just be dropped.
+
+The entry point defined below (TransmitSpecialFrame) is contained in NAL.DLL.
+NT4.0 is the first version of NT that contains the entry point, specifically
+build 346.
+
+NOTE NOTE NOTE: You should NOT link to the NAL.LIB to acquire this
+functionality. NAL.DLL is not gaurenteed to be installed on a standard NT
+machine. Instead use Loadlibrary to acquire the entry point.
+
+When a frame is inserted, a fake media header and parent protocol is created
+for your data. We create a "TRAIL" protocol header that hands off to your
+data. The parsing of your data depends on the FRAME_TYPE_ that you specify.
+If you specify a known frame type, we will parse it for you. For example, the
+FRAME_TYPE_MESSAGE uses a data structure that looks something like this:
+
+ typedef struct _MessageFRAME
+ {
+ DWORD dwValue1;
+ DWORD dwValue2;
+ CHAR szMessage[];
+ } MessageFRAME;
+
+Just fill out one of these and point to it when you call TransmitSpecialFrame
+with the FRAME_TYPE_MESSAGE.
+FRAME_TYPE_COMMENT is just an array of printable chars. If you want to make
+your own data structure, pick a number above 1000 and use that number as the
+FrameType parameter. Note that you must add your number and parser name to
+the TRAIL.INI file in the Netmon parsers directory.
+
+Example:
+
+setup:
+ TRANSMITSPECIALFRAME_FN lpfnTransmitSpecialFrame = NULL;
+
+ hInst = LoadLibrary ("NAL.DLL" );
+ if (hInst)
+ lpfnTransmitSpecialFrame = (TRANSMITSPECIALFRAME_FN)GetProcAddress ( hInst, "TransmitSpecialFrame" );
+
+ if (( hInst==NULL ) || ( lpfnTransmitSpecialFrame==NULL) )
+ {
+ ...
+ }
+
+usage:
+ lpfnTransmitSpecialFrame( FRAME_TYPE_COMMENT, 0, (unsigned char *)pStr, strlen(pStr)+1 );
+
+
+Contacts:
+
+ Flex Dolphynn (a-FlexD)
+ Steve Hiskey (SteveHi)
+ Arthur Brooking (ArthurB)
+
+--*/
+
+#ifndef _INSERTFRAME_
+#define _INSERTFRAME_
+
+// VALUES BELOW 100 ARE FOR FUTURE NETMON USE
+// VALUES 100 - 1000 ARE FOR INTERNAL MICROSOFT USE
+// VALUES ABOVE 1000 ARE FOR USER-DEFINED TYPES
+
+#define FRAME_TYPE_GENERIC 101
+#define FRAME_TYPE_BOOKMARK 102
+#define FRAME_TYPE_STATISTICS 103
+#define FRAME_TYPE_ODBC 104
+#define FRAME_TYPE_MESSAGE 105
+#define FRAME_TYPE_COMMENT 106
+
+// FLAGS FOR INSERTSPECIALFRAME
+// THIS FLAG WILL CAUSE THE FRAME IT IS APPLIED TO TO BE SKIPPED AS AN ENDPOINT
+// FOR THE GENERATED STATISTICS
+#define SPECIALFLAG_SKIPSTAT 0x0001
+// THIS FLAG WILL CAUSE THE GENERATED STATISTICS TO ONLY TAKE
+// INTO CONSIDERATION THSE FRAMES WHICH PASS THE CURRENT FILTER
+#define SPECIALFLAG_FILTERSTAT 0x0002
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+VOID WINAPI TransmitSpecialFrame( DWORD FrameType, DWORD Flags, LPBYTE pUserData, DWORD UserDataLength);
+
+// FUNCTION POINTER DEFINITION FOR GETPROCADDRESS
+typedef VOID (_stdcall * TRANSMITSPECIALFRAME_FN)(DWORD, DWORD, LPBYTE, DWORD);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+#endif
diff --git a/public/sdk/inc/npapi.h b/public/sdk/inc/npapi.h
new file mode 100644
index 000000000..dbe92803f
--- /dev/null
+++ b/public/sdk/inc/npapi.h
@@ -0,0 +1,605 @@
+/*++
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ npapi.h
+
+Abstract:
+
+ Network Provider API prototypes and manifests. A network provider
+ is a client of the Win32 Winnet driver. See the "NT/Win32 Network
+ Provider API Specification" document for further details.
+
+Author:
+
+ John Ludeman (JohnL) 06-Dec-1991
+
+Environment:
+
+ User Mode -Win32
+
+Notes:
+
+ This file currently contains the function typedefs that will be needed
+ by the winnet driver to support multiple providers using LoadLibrary.
+
+Revision History:
+
+ 06-Dec-1991 Johnl
+ Created from Spec.
+
+ 25-Aug-1992 Johnl
+ Changed all LPTSTR to LPWSTR since providers are Unicode only
+
+ 23-Dec-1992 YiHsinS
+ Added NPFormatNetworkName
+
+ 07-Jan-1993 Danl
+ Added Credential Management API functions.
+
+ 23-Feb-1993 YiHsinS
+ Fix type LPNETRESOURCE->LPNETRESOURCEW, LPTSTR->LPWSTR
+
+--*/
+
+#ifndef _NPAPI_INCLUDED
+#define _NPAPI_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// CONNECTIONS
+//
+
+DWORD APIENTRY
+NPAddConnection (
+ LPNETRESOURCEW lpNetResource,
+ LPWSTR lpPassword,
+ LPWSTR lpUserName
+ );
+
+typedef DWORD (*PF_NPAddConnection) (
+ LPNETRESOURCEW lpNetResource,
+ LPWSTR lpPassword,
+ LPWSTR lpUserName
+ );
+
+
+DWORD APIENTRY
+NPAddConnection3 (
+ HWND hwndOwner,
+ LPNETRESOURCEW lpNetResource,
+ LPWSTR lpPassword,
+ LPWSTR lpUserName,
+ DWORD dwFlags
+ );
+
+typedef DWORD (*PF_NPAddConnection3) (
+ HWND hwndOwner,
+ LPNETRESOURCEW lpNetResource,
+ LPWSTR lpPassword,
+ LPWSTR lpUserName,
+ DWORD dwFlags
+ );
+
+
+DWORD APIENTRY
+NPCancelConnection (
+ LPWSTR lpName,
+ BOOL fForce
+ );
+typedef DWORD (*PF_NPCancelConnection) (
+ LPWSTR lpName,
+ BOOL fForce
+ );
+
+
+DWORD APIENTRY
+NPGetConnection (
+ LPWSTR lpLocalName,
+ LPWSTR lpRemoteName,
+ LPDWORD lpnBufferLen
+ );
+typedef DWORD (*PF_NPGetConnection) (
+ LPWSTR lpLocalName,
+ LPWSTR lpRemoteName,
+ LPDWORD lpnBufferLen
+ );
+
+
+#define WNGETCON_CONNECTED 0x00000000
+#define WNGETCON_DISCONNECTED 0x00000001
+
+DWORD APIENTRY
+NPGetConnection3 (
+ LPCWSTR lpLocalName,
+ DWORD dwLevel,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+typedef DWORD (*PF_NPGetConnection3) (
+ LPCWSTR lpLocalName,
+ DWORD dwLevel,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+
+
+DWORD APIENTRY
+NPGetUniversalName (
+ LPCWSTR lpLocalPath,
+ DWORD dwInfoLevel,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+typedef DWORD (*PF_NPGetUniversalName) (
+ LPCWSTR lpLocalPath,
+ DWORD dwInfoLevel,
+ LPVOID lpBuffer,
+ LPDWORD lpnBufferSize
+ );
+
+DWORD APIENTRY
+NPGetConnectionPerformance (
+ LPCWSTR lpRemoteName,
+ LPNETCONNECTINFOSTRUCT lpNetConnectInfo
+ );
+typedef DWORD (*PF_NPGetConnectionPerformance) (
+ LPCWSTR lpRemoteName,
+ LPNETCONNECTINFOSTRUCT lpNetConnectInfo
+ );
+
+
+DWORD APIENTRY
+NPOpenEnum (
+ DWORD dwScope,
+ DWORD dwType,
+ DWORD dwUsage,
+ LPNETRESOURCEW lpNetResource,
+ LPHANDLE lphEnum
+ );
+typedef DWORD (*PF_NPOpenEnum) (
+ DWORD dwScope,
+ DWORD dwType,
+ DWORD dwUsage,
+ LPNETRESOURCEW lpNetResource,
+ LPHANDLE lphEnum
+ );
+
+DWORD APIENTRY
+NPEnumResource (
+ HANDLE hEnum,
+ LPDWORD lpcCount,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+typedef DWORD (*PF_NPEnumResource) (
+ HANDLE hEnum,
+ LPDWORD lpcCount,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+
+DWORD APIENTRY
+NPCloseEnum (
+ HANDLE hEnum
+ );
+typedef DWORD (*PF_NPCloseEnum) (
+ HANDLE hEnum
+ );
+
+
+//
+// CAPABILITIES
+//
+
+#define WNNC_SPEC_VERSION 0x00000001
+#define WNNC_SPEC_VERSION51 0x00050001
+
+#define WNNC_NET_TYPE 0x00000002
+#define WNNC_NET_NONE 0x00000000
+
+#define WNNC_DRIVER_VERSION 0x00000003
+
+#define WNNC_USER 0x00000004
+#define WNNC_USR_GETUSER 0x00000001
+
+#define WNNC_CONNECTION 0x00000006
+#define WNNC_CON_ADDCONNECTION 0x00000001
+#define WNNC_CON_CANCELCONNECTION 0x00000002
+#define WNNC_CON_GETCONNECTIONS 0x00000004
+#define WNNC_CON_ADDCONNECTION3 0x00000008
+#define WNNC_CON_GETPERFORMANCE 0x00000040
+#define WNNC_CON_DEFER 0x00000080
+
+#define WNNC_DIALOG 0x00000008
+#define WNNC_DLG_DEVICEMODE 0x00000001
+#define WNNC_DLG_PROPERTYDIALOG 0x00000020
+#define WNNC_DLG_SEARCHDIALOG 0x00000040
+#define WNNC_DLG_FORMATNETWORKNAME 0x00000080
+#define WNNC_DLG_PERMISSIONEDITOR 0x00000100
+#define WNNC_DLG_GETRESOURCEPARENT 0x00000200
+#define WNNC_DLG_GETRESOURCEINFORMATION 0x00000800
+
+#define WNNC_ADMIN 0x00000009
+#define WNNC_ADM_GETDIRECTORYTYPE 0x00000001
+#define WNNC_ADM_DIRECTORYNOTIFY 0x00000002
+
+#define WNNC_ENUMERATION 0x0000000B
+#define WNNC_ENUM_GLOBAL 0x00000001
+#define WNNC_ENUM_LOCAL 0x00000002
+#define WNNC_ENUM_CONTEXT 0x00000004
+
+#define WNNC_START 0x0000000C
+#define WNNC_WAIT_FOR_START 0x00000001
+
+
+
+DWORD APIENTRY
+NPGetCaps (
+ DWORD ndex
+ );
+typedef DWORD (*PF_NPGetCaps) (
+ DWORD ndex
+ );
+
+//
+// OTHER
+//
+
+DWORD APIENTRY
+NPGetUser (
+ LPWSTR lpName,
+ LPWSTR lpUserName,
+ LPDWORD lpnBufferLen
+ );
+typedef DWORD (*PF_NPGetUser) (
+ LPWSTR lpName,
+ LPWSTR lpUserName,
+ LPDWORD lpnBufferLen
+ );
+
+#define WNTYPE_DRIVE 1
+#define WNTYPE_FILE 2
+#define WNTYPE_PRINTER 3
+#define WNTYPE_COMM 4
+
+#define WNPS_FILE 0
+#define WNPS_DIR 1
+#define WNPS_MULT 2
+
+DWORD APIENTRY
+NPDeviceMode(
+ HWND hParent
+ );
+typedef DWORD (*PF_NPDeviceMode) (
+ HWND hParent
+ );
+
+// flag for search dialog
+#define WNSRCH_REFRESH_FIRST_LEVEL 0x00000001
+
+DWORD APIENTRY
+NPSearchDialog(
+ HWND hwndParent,
+ LPNETRESOURCEW lpNetResource,
+ LPVOID lpBuffer,
+ DWORD cbBuffer,
+ LPDWORD lpnFlags
+ );
+typedef DWORD (*PF_NPSearchDialog) (
+ HWND hwndParent,
+ LPNETRESOURCEW lpNetResource,
+ LPVOID lpBuffer,
+ DWORD cbBuffer,
+ LPDWORD lpnFlags
+ );
+
+DWORD APIENTRY
+NPGetResourceParent(
+ LPNETRESOURCEW lpNetResource,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+typedef DWORD (*PF_NPGetResourceParent) (
+ LPNETRESOURCEW lpNetResource,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+
+DWORD APIENTRY NPGetResourceInformation(
+ LPNETRESOURCEW lpNetResource,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize,
+ LPWSTR *lplpSystem
+ );
+typedef DWORD (*PF_NPGetResourceInformation) (
+ LPNETRESOURCEW lpNetResource,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize,
+ LPWSTR *lplpSystem
+ );
+
+DWORD APIENTRY
+NPFormatNetworkName(
+ LPWSTR lpRemoteName,
+ LPWSTR lpFormattedName,
+ LPDWORD lpnLength,
+ DWORD dwFlags,
+ DWORD dwAveCharPerLine
+ );
+typedef DWORD (*PF_NPFormatNetworkName) (
+ LPWSTR lpRemoteName,
+ LPWSTR lpFormattedName,
+ LPDWORD lpnLength,
+ DWORD dwFlags,
+ DWORD dwAveCharPerLine
+ );
+
+DWORD APIENTRY
+NPGetPropertyText(
+ DWORD iButton,
+ DWORD nPropSel,
+ LPWSTR lpName,
+ LPWSTR lpButtonName,
+ DWORD nButtonNameLen,
+ DWORD nType
+ );
+typedef DWORD (*PF_NPGetPropertyText) (
+ DWORD iButton,
+ DWORD nPropSel,
+ LPWSTR lpName,
+ LPWSTR lpButtonName,
+ DWORD nButtonNameLen,
+ DWORD nType
+ );
+
+DWORD APIENTRY
+NPPropertyDialog(
+ HWND hwndParent,
+ DWORD iButtonDlg,
+ DWORD nPropSel,
+ LPWSTR lpFileName,
+ DWORD nType
+ );
+typedef DWORD (*PF_NPPropertyDialog) (
+ HWND hwndParent,
+ DWORD iButtonDlg,
+ DWORD nPropSel,
+ LPWSTR lpFileName,
+ DWORD nType
+ );
+
+
+//
+// ADMIN
+//
+
+#define WNDT_NORMAL 0
+#define WNDT_NETWORK 1
+
+#define WNDN_MKDIR 1
+#define WNDN_RMDIR 2
+#define WNDN_MVDIR 3
+
+DWORD APIENTRY
+NPGetDirectoryType (
+ LPWSTR lpName,
+ LPINT lpType,
+ BOOL bFlushCache
+ );
+typedef DWORD (*PF_NPGetDirectoryType) (
+ LPWSTR lpName,
+ LPINT lpType,
+ BOOL bFlushCache
+ );
+
+DWORD APIENTRY
+NPDirectoryNotify (
+ HWND hwnd,
+ LPWSTR lpDir,
+ DWORD dwOper
+ );
+typedef DWORD (*PF_NPDirectoryNotify) (
+ HWND hwnd,
+ LPWSTR lpDir,
+ DWORD dwOper
+ );
+
+VOID
+WNetSetLastErrorA(
+ DWORD err,
+ LPSTR lpError,
+ LPSTR lpProviders
+ );
+
+VOID
+WNetSetLastErrorW(
+ DWORD err,
+ LPWSTR lpError,
+ LPWSTR lpProviders
+ );
+
+#ifdef UNICODE
+#define WNetSetLastError WNetSetLastErrorW
+#else
+#define WNetSetLastError WNetSetLastErrorA
+#endif // UNICODE
+
+//
+// CREDENTIAL MANAGEMENT and other classes of providers
+//
+
+
+// Define the Net/Authentication and othr Provider Classes
+#define WN_NETWORK_CLASS 0x00000001
+#define WN_CREDENTIAL_CLASS 0x00000002
+#define WN_PRIMARY_AUTHENT_CLASS 0x00000004
+#define WN_SERVICE_CLASS 0x00000008
+
+#define WN_VALID_LOGON_ACCOUNT 0x00000001
+#define WN_NT_PASSWORD_CHANGED 0x00000002
+
+DWORD APIENTRY
+NPLogonNotify (
+ PLUID lpLogonId,
+ LPCWSTR lpAuthentInfoType,
+ LPVOID lpAuthentInfo,
+ LPCWSTR lpPreviousAuthentInfoType,
+ LPVOID lpPreviousAuthentInfo,
+ LPWSTR lpStationName,
+ LPVOID StationHandle,
+ LPWSTR *lpLogonScript
+ );
+typedef DWORD (*PF_NPLogonNotify) (
+ PLUID lpLogonId,
+ LPCWSTR lpAuthentInfoType,
+ LPVOID lpAuthentInfo,
+ LPCWSTR lpPreviousAuthentInfoType,
+ LPVOID lpPreviousAuthentInfo,
+ LPWSTR lpStationName,
+ LPVOID StationHandle,
+ LPWSTR *lpLogonScript
+ );
+
+DWORD APIENTRY
+NPPasswordChangeNotify (
+ LPCWSTR lpAuthentInfoType,
+ LPVOID lpAuthentInfo,
+ LPCWSTR lpPreviousAuthentInfoType,
+ LPVOID lpPreviousAuthentInfo,
+ LPWSTR lpStationName,
+ LPVOID StationHandle,
+ DWORD dwChangeInfo
+ );
+
+typedef DWORD (*PF_NPPasswordChangeNotify) (
+ LPCWSTR lpAuthentInfoType,
+ LPVOID lpAuthentInfo,
+ LPCWSTR lpPreviousAuthentInfoType,
+ LPVOID lpPreviousAuthentInfo,
+ LPWSTR lpStationName,
+ LPVOID StationHandle,
+ DWORD dwChangeInfo
+ );
+
+//
+// CONNECTION NOTIFICATION
+//
+
+//
+// NotifyStatus
+//
+#define NOTIFY_PRE 0x00000001
+#define NOTIFY_POST 0x00000002
+
+typedef struct _NOTIFYINFO {
+ DWORD dwNotifyStatus;
+ DWORD dwOperationStatus;
+ LPVOID lpContext;
+} NOTIFYINFO, *LPNOTIFYINFO;
+
+typedef struct _NOTIFYADD {
+ HWND hwndOwner;
+ NETRESOURCE NetResource;
+ DWORD dwAddFlags;
+} NOTIFYADD, *LPNOTIFYADD;
+
+typedef struct _NOTIFYCANCEL {
+ LPWSTR lpName;
+ LPWSTR lpProvider;
+ DWORD dwFlags;
+ BOOL fForce;
+} NOTIFYCANCEL, *LPNOTIFYCANCEL;
+
+
+DWORD APIENTRY
+AddConnectNotify (
+ LPNOTIFYINFO lpNotifyInfo,
+ LPNOTIFYADD lpAddInfo
+ );
+
+typedef DWORD (*PF_AddConnectNotify) (
+ LPNOTIFYINFO lpNotifyInfo,
+ LPNOTIFYADD lpAddInfo
+ );
+
+DWORD APIENTRY
+CancelConnectNotify (
+ LPNOTIFYINFO lpNotifyInfo,
+ LPNOTIFYCANCEL lpCancelInfo
+ );
+
+typedef DWORD (*PF_CancelConnectNotify) (
+ LPNOTIFYINFO lpNotifyInfo,
+ LPNOTIFYCANCEL lpCancelInfo
+ );
+
+//
+// Permission editor dialogs
+//
+
+//
+// Capabilities bits of permission editor dialogs
+//
+#define WNPERMC_PERM 0x00000001
+#define WNPERMC_AUDIT 0x00000002
+#define WNPERMC_OWNER 0x00000004
+
+DWORD APIENTRY
+NPFMXGetPermCaps (
+ LPWSTR lpDriveName
+ );
+
+typedef DWORD (*PF_NPFMXGetPermCaps) (
+ LPWSTR lpDriveName
+ );
+
+//
+// Type of security dialog
+//
+#define WNPERM_DLG_PERM 0
+#define WNPERM_DLG_AUDIT 1
+#define WNPERM_DLG_OWNER 2
+
+DWORD APIENTRY
+NPFMXEditPerm (
+ LPWSTR lpDriveName,
+ HWND hwndFMX,
+ DWORD nDialogType
+ );
+
+typedef DWORD (*PF_NPFMXEditPerm) (
+ LPWSTR lpDriveName,
+ HWND hwndFMX,
+ DWORD nDialogType
+ );
+
+DWORD APIENTRY
+NPFMXGetPermHelp (
+ LPWSTR lpDriveName,
+ DWORD nDialogType,
+ BOOL fDirectory,
+ LPVOID lpFileNameBuffer,
+ LPDWORD lpBufferSize,
+ LPDWORD lpnHelpContext
+ );
+
+typedef DWORD (*PF_NPFMXGetPermHelp) (
+ LPWSTR lpDriveName,
+ DWORD nDialogType,
+ BOOL fDirectory,
+ LPVOID lpFileNameBuffer,
+ LPDWORD lpBufferSize,
+ LPDWORD lpnHelpContext
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _NPAPI_INCLUDED
diff --git a/public/sdk/inc/nspapi.h b/public/sdk/inc/nspapi.h
new file mode 100644
index 000000000..05adcf54c
--- /dev/null
+++ b/public/sdk/inc/nspapi.h
@@ -0,0 +1,690 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ nspapi.h
+
+Abstract:
+
+ Name Space Provider API prototypes and manifests. See the
+ "Windows NT NameSpace Provider Specification" document for
+ details.
+
+
+Environment:
+
+ User Mode -Win32
+
+Notes:
+
+ You must include "basetyps.h" first. Some types should
+ use definitions from base files rather than redefine here.
+ Unfortunately, so such base file exists.
+
+--*/
+
+#ifndef _NSPAPI_INCLUDED
+#define _NSPAPI_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#ifndef _tagBLOB_DEFINED
+#define _tagBLOB_DEFINED
+#define _BLOB_DEFINED
+#define _LPBLOB_DEFINED
+typedef struct _BLOB {
+ ULONG cbSize ;
+#ifdef MIDL_PASS
+ [size_is(cbSize)] BYTE *pBlobData;
+#else // MIDL_PASS
+ BYTE *pBlobData ;
+#endif // MIDL_PASS
+} BLOB, *LPBLOB ;
+#endif
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#ifndef __LPGUID_DEFINED__
+#define __LPGUID_DEFINED__
+typedef GUID *LPGUID;
+#endif
+
+
+//
+// Service categories
+//
+#define SERVICE_RESOURCE (0x00000001)
+#define SERVICE_SERVICE (0x00000002)
+#define SERVICE_LOCAL (0x00000004)
+
+//
+// Operation used when calling SetService()
+//
+#define SERVICE_REGISTER (0x00000001)
+#define SERVICE_DEREGISTER (0x00000002)
+#define SERVICE_FLUSH (0x00000003)
+#define SERVICE_ADD_TYPE (0x00000004)
+#define SERVICE_DELETE_TYPE (0x00000005)
+
+//
+// Flags that affect the operations above
+//
+#define SERVICE_FLAG_DEFER (0x00000001)
+#define SERVICE_FLAG_HARD (0x00000002)
+
+//
+// Used as input to GetService() for setting the dwProps parameter
+//
+#define PROP_COMMENT (0x00000001)
+#define PROP_LOCALE (0x00000002)
+#define PROP_DISPLAY_HINT (0x00000004)
+#define PROP_VERSION (0x00000008)
+#define PROP_START_TIME (0x00000010)
+#define PROP_MACHINE (0x00000020)
+#define PROP_ADDRESSES (0x00000100)
+#define PROP_SD (0x00000200)
+#define PROP_ALL (0x80000000)
+
+//
+// Flags that describe attributes of Service Addresses
+//
+
+#define SERVICE_ADDRESS_FLAG_RPC_CN (0x00000001)
+#define SERVICE_ADDRESS_FLAG_RPC_DG (0x00000002)
+#define SERVICE_ADDRESS_FLAG_RPC_NB (0x00000004)
+
+//
+// Name Spaces
+//
+
+#define NS_DEFAULT (0)
+
+#define NS_SAP (1)
+#define NS_NDS (2)
+#define NS_PEER_BROWSE (3)
+
+#define NS_TCPIP_LOCAL (10)
+#define NS_TCPIP_HOSTS (11)
+#define NS_DNS (12)
+#define NS_NETBT (13)
+#define NS_WINS (14)
+
+#define NS_NBP (20)
+
+#define NS_MS (30)
+#define NS_STDA (31)
+#define NS_CAIRO (32)
+
+#define NS_X500 (40)
+#define NS_NIS (41)
+
+#define NS_VNS (50)
+
+//
+// Name space attributes.
+//
+#define NSTYPE_HIERARCHICAL (0x00000001)
+#define NSTYPE_DYNAMIC (0x00000002)
+#define NSTYPE_ENUMERABLE (0x00000004)
+#define NSTYPE_WORKGROUP (0x00000008)
+
+//
+// Transport attributes.
+//
+#define XP_CONNECTIONLESS (0x00000001)
+#define XP_GUARANTEED_DELIVERY (0x00000002)
+#define XP_GUARANTEED_ORDER (0x00000004)
+#define XP_MESSAGE_ORIENTED (0x00000008)
+#define XP_PSEUDO_STREAM (0x00000010)
+#define XP_GRACEFUL_CLOSE (0x00000020)
+#define XP_EXPEDITED_DATA (0x00000040)
+#define XP_CONNECT_DATA (0x00000080)
+#define XP_DISCONNECT_DATA (0x00000100)
+#define XP_SUPPORTS_BROADCAST (0x00000200)
+#define XP_SUPPORTS_MULTICAST (0x00000400)
+#define XP_BANDWIDTH_ALLOCATION (0x00000800)
+#define XP_FRAGMENTATION (0x00001000)
+#define XP_ENCRYPTS (0x00002000)
+
+//
+// Resolution flags for GetAddressByName().
+//
+#define RES_SOFT_SEARCH (0x00000001)
+#define RES_FIND_MULTIPLE (0x00000002)
+#define RES_SERVICE (0x00000004)
+
+//
+// Well known value names for Service Types
+//
+
+#define SERVICE_TYPE_VALUE_SAPIDA "SapId"
+#define SERVICE_TYPE_VALUE_SAPIDW L"SapId"
+
+#define SERVICE_TYPE_VALUE_CONNA "ConnectionOriented"
+#define SERVICE_TYPE_VALUE_CONNW L"ConnectionOriented"
+
+#define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
+#define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
+
+#define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
+#define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
+
+#ifdef UNICODE
+
+#define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDW
+#define SERVICE_TYPE_VALUE_CONN SERVICE_TYPE_VALUE_CONNW
+#define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTW
+#define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTW
+
+#else // not UNICODE
+
+#define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDA
+#define SERVICE_TYPE_VALUE_CONN SERVICE_TYPE_VALUE_CONNA
+#define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTA
+#define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTA
+
+#endif
+
+
+//
+// status flags returned by SetService
+//
+#define SET_SERVICE_PARTIAL_SUCCESS (0x00000001)
+
+//
+// Name Space Information
+//
+typedef struct _NS_INFOA {
+ DWORD dwNameSpace ;
+ DWORD dwNameSpaceFlags ;
+ LPSTR lpNameSpace ;
+} NS_INFOA, * PNS_INFOA, FAR * LPNS_INFOA;
+//
+// Name Space Information
+//
+typedef struct _NS_INFOW {
+ DWORD dwNameSpace ;
+ DWORD dwNameSpaceFlags ;
+ LPWSTR lpNameSpace ;
+} NS_INFOW, * PNS_INFOW, FAR * LPNS_INFOW;
+#ifdef UNICODE
+typedef NS_INFOW NS_INFO;
+typedef PNS_INFOW PNS_INFO;
+typedef LPNS_INFOW LPNS_INFO;
+#else
+typedef NS_INFOA NS_INFO;
+typedef PNS_INFOA PNS_INFO;
+typedef LPNS_INFOA LPNS_INFO;
+#endif // UNICODE
+
+//
+// Service Type Values. The structures are used to define named Service
+// Type specific values. This structure is self relative and has no pointers.
+//
+typedef struct _SERVICE_TYPE_VALUE {
+ DWORD dwNameSpace ;
+ DWORD dwValueType ;
+ DWORD dwValueSize ;
+ DWORD dwValueNameOffset ;
+ DWORD dwValueOffset ;
+} SERVICE_TYPE_VALUE, *PSERVICE_TYPE_VALUE, FAR *LPSERVICE_TYPE_VALUE ;
+
+//
+// An absolute version of above. This structure does contain pointers.
+//
+typedef struct _SERVICE_TYPE_VALUE_ABSA {
+ DWORD dwNameSpace ;
+ DWORD dwValueType ;
+ DWORD dwValueSize ;
+ LPSTR lpValueName ;
+ PVOID lpValue ;
+} SERVICE_TYPE_VALUE_ABSA,
+ *PSERVICE_TYPE_VALUE_ABSA,
+ FAR *LPSERVICE_TYPE_VALUE_ABSA;
+//
+// An absolute version of above. This structure does contain pointers.
+//
+typedef struct _SERVICE_TYPE_VALUE_ABSW {
+ DWORD dwNameSpace ;
+ DWORD dwValueType ;
+ DWORD dwValueSize ;
+ LPWSTR lpValueName ;
+ PVOID lpValue ;
+} SERVICE_TYPE_VALUE_ABSW,
+ *PSERVICE_TYPE_VALUE_ABSW,
+ FAR *LPSERVICE_TYPE_VALUE_ABSW;
+#ifdef UNICODE
+typedef SERVICE_TYPE_VALUE_ABSW SERVICE_TYPE_VALUE_ABS;
+typedef PSERVICE_TYPE_VALUE_ABSW PSERVICE_TYPE_VALUE_ABS;
+typedef LPSERVICE_TYPE_VALUE_ABSW LPSERVICE_TYPE_VALUE_ABS;
+#else
+typedef SERVICE_TYPE_VALUE_ABSA SERVICE_TYPE_VALUE_ABS;
+typedef PSERVICE_TYPE_VALUE_ABSA PSERVICE_TYPE_VALUE_ABS;
+typedef LPSERVICE_TYPE_VALUE_ABSA LPSERVICE_TYPE_VALUE_ABS;
+#endif // UNICODE
+
+//
+// Service Type Information. Contains the name of the Service Type and
+// and an array of SERVICE_NS_TYPE_VALUE structures. This structure is self
+// relative and has no pointers in it.
+//
+typedef struct _SERVICE_TYPE_INFO {
+ DWORD dwTypeNameOffset ;
+ DWORD dwValueCount ;
+ SERVICE_TYPE_VALUE Values[1] ;
+} SERVICE_TYPE_INFO, *PSERVICE_TYPE_INFO, FAR *LPSERVICE_TYPE_INFO ;
+
+typedef struct _SERVICE_TYPE_INFO_ABSA {
+ LPSTR lpTypeName ;
+ DWORD dwValueCount ;
+ SERVICE_TYPE_VALUE_ABSA Values[1] ;
+} SERVICE_TYPE_INFO_ABSA,
+ *PSERVICE_TYPE_INFO_ABSA,
+ FAR *LPSERVICE_TYPE_INFO_ABSA ;
+typedef struct _SERVICE_TYPE_INFO_ABSW {
+ LPWSTR lpTypeName ;
+ DWORD dwValueCount ;
+ SERVICE_TYPE_VALUE_ABSW Values[1] ;
+} SERVICE_TYPE_INFO_ABSW,
+ *PSERVICE_TYPE_INFO_ABSW,
+ FAR *LPSERVICE_TYPE_INFO_ABSW ;
+#ifdef UNICODE
+typedef SERVICE_TYPE_INFO_ABSW SERVICE_TYPE_INFO_ABS;
+typedef PSERVICE_TYPE_INFO_ABSW PSERVICE_TYPE_INFO_ABS;
+typedef LPSERVICE_TYPE_INFO_ABSW LPSERVICE_TYPE_INFO_ABS;
+#else
+typedef SERVICE_TYPE_INFO_ABSA SERVICE_TYPE_INFO_ABS;
+typedef PSERVICE_TYPE_INFO_ABSA PSERVICE_TYPE_INFO_ABS;
+typedef LPSERVICE_TYPE_INFO_ABSA LPSERVICE_TYPE_INFO_ABS;
+#endif // UNICODE
+
+
+//
+// A Single Address definition.
+//
+typedef struct _SERVICE_ADDRESS {
+ DWORD dwAddressType ;
+ DWORD dwAddressFlags ;
+ DWORD dwAddressLength ;
+ DWORD dwPrincipalLength ;
+#ifdef MIDL_PASS
+ [size_is(dwAddressLength)] BYTE *lpAddress;
+#else // MIDL_PASS
+ BYTE *lpAddress ;
+#endif // MIDL_PASS
+#ifdef MIDL_PASS
+ [size_is(dwPrincipalLength)] BYTE *lpPrincipal;
+#else // MIDL_PASS
+ BYTE *lpPrincipal ;
+#endif // MIDL_PASS
+} SERVICE_ADDRESS, *PSERVICE_ADDRESS, *LPSERVICE_ADDRESS;
+
+//
+// Addresses used by the service. Contains array of SERVICE_ADDRESS.
+//
+typedef struct _SERVICE_ADDRESSES {
+ DWORD dwAddressCount ;
+#ifdef MIDL_PASS
+ [size_is(dwAddressCount)] SERVICE_ADDRESS Addressses[*];
+#else // MIDL_PASS
+ SERVICE_ADDRESS Addresses[1] ;
+#endif // MIDL_PASS
+} SERVICE_ADDRESSES, *PSERVICE_ADDRESSES, *LPSERVICE_ADDRESSES;
+
+
+//
+// Service Information.
+//
+typedef struct _SERVICE_INFOA {
+ LPGUID lpServiceType ;
+ LPSTR lpServiceName ;
+ LPSTR lpComment ;
+ LPSTR lpLocale ;
+ DWORD dwDisplayHint ;
+ DWORD dwVersion ;
+ DWORD dwTime ;
+ LPSTR lpMachineName ;
+ LPSERVICE_ADDRESSES lpServiceAddress ;
+ BLOB ServiceSpecificInfo ;
+} SERVICE_INFOA, *PSERVICE_INFOA, FAR * LPSERVICE_INFOA ;
+//
+// Service Information.
+//
+typedef struct _SERVICE_INFOW {
+ LPGUID lpServiceType ;
+ LPWSTR lpServiceName ;
+ LPWSTR lpComment ;
+ LPWSTR lpLocale ;
+ DWORD dwDisplayHint ;
+ DWORD dwVersion ;
+ DWORD dwTime ;
+ LPWSTR lpMachineName ;
+ LPSERVICE_ADDRESSES lpServiceAddress ;
+ BLOB ServiceSpecificInfo ;
+} SERVICE_INFOW, *PSERVICE_INFOW, FAR * LPSERVICE_INFOW ;
+#ifdef UNICODE
+typedef SERVICE_INFOW SERVICE_INFO;
+typedef PSERVICE_INFOW PSERVICE_INFO;
+typedef LPSERVICE_INFOW LPSERVICE_INFO;
+#else
+typedef SERVICE_INFOA SERVICE_INFO;
+typedef PSERVICE_INFOA PSERVICE_INFO;
+typedef LPSERVICE_INFOA LPSERVICE_INFO;
+#endif // UNICODE
+
+
+//
+// Name Space & Service Information
+//
+typedef struct _NS_SERVICE_INFOA {
+ DWORD dwNameSpace ;
+ SERVICE_INFOA ServiceInfo ;
+} NS_SERVICE_INFOA, *PNS_SERVICE_INFOA, FAR * LPNS_SERVICE_INFOA ;
+//
+// Name Space & Service Information
+//
+typedef struct _NS_SERVICE_INFOW {
+ DWORD dwNameSpace ;
+ SERVICE_INFOW ServiceInfo ;
+} NS_SERVICE_INFOW, *PNS_SERVICE_INFOW, FAR * LPNS_SERVICE_INFOW ;
+#ifdef UNICODE
+typedef NS_SERVICE_INFOW NS_SERVICE_INFO;
+typedef PNS_SERVICE_INFOW PNS_SERVICE_INFO;
+typedef LPNS_SERVICE_INFOW LPNS_SERVICE_INFO;
+#else
+typedef NS_SERVICE_INFOA NS_SERVICE_INFO;
+typedef PNS_SERVICE_INFOA PNS_SERVICE_INFO;
+typedef LPNS_SERVICE_INFOA LPNS_SERVICE_INFO;
+#endif // UNICODE
+
+#ifndef __CSADDR_DEFINED__
+#define __CSADDR_DEFINED__
+
+//
+// SockAddr Information
+//
+typedef struct _SOCKET_ADDRESS {
+ LPSOCKADDR lpSockaddr ;
+ INT iSockaddrLength ;
+} SOCKET_ADDRESS, *PSOCKET_ADDRESS, FAR * LPSOCKET_ADDRESS ;
+
+//
+// CSAddr Information
+//
+typedef struct _CSADDR_INFO {
+ SOCKET_ADDRESS LocalAddr ;
+ SOCKET_ADDRESS RemoteAddr ;
+ INT iSocketType ;
+ INT iProtocol ;
+} CSADDR_INFO, *PCSADDR_INFO, FAR * LPCSADDR_INFO ;
+
+#endif
+
+//
+// Protocol Information
+//
+typedef struct _PROTOCOL_INFOA {
+ DWORD dwServiceFlags ;
+ INT iAddressFamily ;
+ INT iMaxSockAddr ;
+ INT iMinSockAddr ;
+ INT iSocketType ;
+ INT iProtocol ;
+ DWORD dwMessageSize ;
+ LPSTR lpProtocol ;
+} PROTOCOL_INFOA, *PPROTOCOL_INFOA, FAR * LPPROTOCOL_INFOA ;
+//
+// Protocol Information
+//
+typedef struct _PROTOCOL_INFOW {
+ DWORD dwServiceFlags ;
+ INT iAddressFamily ;
+ INT iMaxSockAddr ;
+ INT iMinSockAddr ;
+ INT iSocketType ;
+ INT iProtocol ;
+ DWORD dwMessageSize ;
+ LPWSTR lpProtocol ;
+} PROTOCOL_INFOW, *PPROTOCOL_INFOW, FAR * LPPROTOCOL_INFOW ;
+#ifdef UNICODE
+typedef PROTOCOL_INFOW PROTOCOL_INFO;
+typedef PPROTOCOL_INFOW PPROTOCOL_INFO;
+typedef LPPROTOCOL_INFOW LPPROTOCOL_INFO;
+#else
+typedef PROTOCOL_INFOA PROTOCOL_INFO;
+typedef PPROTOCOL_INFOA PPROTOCOL_INFO;
+typedef LPPROTOCOL_INFOA LPPROTOCOL_INFO;
+#endif // UNICODE
+
+//
+// NETRESOURCE2 Structure
+//
+typedef struct _NETRESOURCE2A {
+ DWORD dwScope ;
+ DWORD dwType ;
+ DWORD dwUsage ;
+ DWORD dwDisplayType ;
+ LPSTR lpLocalName ;
+ LPSTR lpRemoteName ;
+ LPSTR lpComment ;
+ NS_INFO ns_info ;
+ GUID ServiceType ;
+ DWORD dwProtocols ;
+ LPINT lpiProtocols ;
+} NETRESOURCE2A, *PNETRESOURCE2A, FAR * LPNETRESOURCE2A ;
+//
+// NETRESOURCE2 Structure
+//
+typedef struct _NETRESOURCE2W {
+ DWORD dwScope ;
+ DWORD dwType ;
+ DWORD dwUsage ;
+ DWORD dwDisplayType ;
+ LPWSTR lpLocalName ;
+ LPWSTR lpRemoteName ;
+ LPWSTR lpComment ;
+ NS_INFO ns_info ;
+ GUID ServiceType ;
+ DWORD dwProtocols ;
+ LPINT lpiProtocols ;
+} NETRESOURCE2W, *PNETRESOURCE2W, FAR * LPNETRESOURCE2W ;
+#ifdef UNICODE
+typedef NETRESOURCE2W NETRESOURCE2;
+typedef PNETRESOURCE2W PNETRESOURCE2;
+typedef LPNETRESOURCE2W LPNETRESOURCE2;
+#else
+typedef NETRESOURCE2A NETRESOURCE2;
+typedef PNETRESOURCE2A PNETRESOURCE2;
+typedef LPNETRESOURCE2A LPNETRESOURCE2;
+#endif // UNICODE
+
+typedef DWORD (* LPFN_NSPAPI) (VOID ) ;
+
+//
+// Structures for using the service routines asynchronously.
+//
+typedef
+VOID
+(*LPSERVICE_CALLBACK_PROC) (
+ IN LPARAM lParam,
+ IN HANDLE hAsyncTaskHandle
+ );
+
+typedef struct _SERVICE_ASYNC_INFO {
+ LPSERVICE_CALLBACK_PROC lpServiceCallbackProc;
+ LPARAM lParam;
+ HANDLE hAsyncTaskHandle;
+} SERVICE_ASYNC_INFO, *PSERVICE_ASYNC_INFO, FAR * LPSERVICE_ASYNC_INFO;
+
+//
+// Public NSP API prototypes.
+//
+INT
+APIENTRY
+EnumProtocolsA (
+ IN LPINT lpiProtocols,
+ IN OUT LPVOID lpProtocolBuffer,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+//
+// Public NSP API prototypes.
+//
+INT
+APIENTRY
+EnumProtocolsW (
+ IN LPINT lpiProtocols,
+ IN OUT LPVOID lpProtocolBuffer,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+#ifdef UNICODE
+#define EnumProtocols EnumProtocolsW
+#else
+#define EnumProtocols EnumProtocolsA
+#endif // !UNICODE
+
+INT
+APIENTRY
+GetAddressByNameA (
+ IN DWORD dwNameSpace,
+ IN LPGUID lpServiceType,
+ IN LPSTR lpServiceName OPTIONAL,
+ IN LPINT lpiProtocols OPTIONAL,
+ IN DWORD dwResolution,
+ IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo OPTIONAL,
+ IN OUT LPVOID lpCsaddrBuffer,
+ IN OUT LPDWORD lpdwBufferLength,
+ IN OUT LPSTR lpAliasBuffer OPTIONAL,
+ IN OUT LPDWORD lpdwAliasBufferLength OPTIONAL
+ );
+INT
+APIENTRY
+GetAddressByNameW (
+ IN DWORD dwNameSpace,
+ IN LPGUID lpServiceType,
+ IN LPWSTR lpServiceName OPTIONAL,
+ IN LPINT lpiProtocols OPTIONAL,
+ IN DWORD dwResolution,
+ IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo OPTIONAL,
+ IN OUT LPVOID lpCsaddrBuffer,
+ IN OUT LPDWORD lpdwBufferLength,
+ IN OUT LPWSTR lpAliasBuffer OPTIONAL,
+ IN OUT LPDWORD lpdwAliasBufferLength OPTIONAL
+ );
+#ifdef UNICODE
+#define GetAddressByName GetAddressByNameW
+#else
+#define GetAddressByName GetAddressByNameA
+#endif // !UNICODE
+
+INT
+APIENTRY
+GetTypeByNameA (
+ IN LPSTR lpServiceName,
+ IN OUT LPGUID lpServiceType
+ );
+INT
+APIENTRY
+GetTypeByNameW (
+ IN LPWSTR lpServiceName,
+ IN OUT LPGUID lpServiceType
+ );
+#ifdef UNICODE
+#define GetTypeByName GetTypeByNameW
+#else
+#define GetTypeByName GetTypeByNameA
+#endif // !UNICODE
+
+INT
+APIENTRY
+GetNameByTypeA (
+ IN LPGUID lpServiceType,
+ IN OUT LPSTR lpServiceName,
+ IN DWORD dwNameLength
+ );
+INT
+APIENTRY
+GetNameByTypeW (
+ IN LPGUID lpServiceType,
+ IN OUT LPWSTR lpServiceName,
+ IN DWORD dwNameLength
+ );
+#ifdef UNICODE
+#define GetNameByType GetNameByTypeW
+#else
+#define GetNameByType GetNameByTypeA
+#endif // !UNICODE
+
+INT
+APIENTRY
+SetServiceA (
+ IN DWORD dwNameSpace,
+ IN DWORD dwOperation,
+ IN DWORD dwFlags,
+ IN LPSERVICE_INFOA lpServiceInfo,
+ IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
+ IN OUT LPDWORD lpdwStatusFlags
+ );
+INT
+APIENTRY
+SetServiceW (
+ IN DWORD dwNameSpace,
+ IN DWORD dwOperation,
+ IN DWORD dwFlags,
+ IN LPSERVICE_INFOW lpServiceInfo,
+ IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
+ IN OUT LPDWORD lpdwStatusFlags
+ );
+#ifdef UNICODE
+#define SetService SetServiceW
+#else
+#define SetService SetServiceA
+#endif // !UNICODE
+
+INT
+APIENTRY
+GetServiceA (
+ IN DWORD dwNameSpace,
+ IN LPGUID lpGuid,
+ IN LPSTR lpServiceName,
+ IN DWORD dwProperties,
+ IN OUT LPVOID lpBuffer,
+ IN OUT LPDWORD lpdwBufferSize,
+ IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
+ );
+INT
+APIENTRY
+GetServiceW (
+ IN DWORD dwNameSpace,
+ IN LPGUID lpGuid,
+ IN LPWSTR lpServiceName,
+ IN DWORD dwProperties,
+ IN OUT LPVOID lpBuffer,
+ IN OUT LPDWORD lpdwBufferSize,
+ IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
+ );
+#ifdef UNICODE
+#define GetService GetServiceW
+#else
+#define GetService GetServiceA
+#endif // !UNICODE
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif // _NSPAPI_INCLUDED
+
+
diff --git a/public/sdk/inc/nspapip.h b/public/sdk/inc/nspapip.h
new file mode 100644
index 000000000..f6a450178
--- /dev/null
+++ b/public/sdk/inc/nspapip.h
@@ -0,0 +1,149 @@
+/*++
+
+Copyright (c) 1991-1994 Microsoft Corporation
+
+Module Name:
+
+ nspapip.h
+
+Abstract:
+
+ Internel Name Space Provider API prototypes and manifests. This
+ header file should only be included by name space providers. NSPAPI
+ users should include only nspapi.h See the "Windows NT NameSpace
+ Provider Specification" document for details.
+
+
+Author:
+
+ David Treadwell (davidtr) 28-Apr-1994
+
+Environment:
+
+ User Mode -Win32
+
+Notes:
+
+Revision History:
+
+ 28-Apr-1994 DavidTr Created first cut.
+
+--*/
+
+#ifndef _NSPAPIP_INCLUDED
+#define _NSPAPIP_INCLUDED
+
+//
+// Standard priority values for the dwPriority field of NS_ROUTINE.
+//
+#define NS_STANDARD_FAST_PRIORITY (500)
+#define NS_MAX_FAST_PRIORITY (999)
+#define NS_STANDARD_PRIORITY (2000)
+
+//
+// Indices for the alpfnFunctions array field of NS_ROUTINE.
+//
+#define NSPAPI_GET_ADDRESS_BY_NAME (0x00000000)
+#define NSPAPI_GET_SERVICE (0x00000001)
+#define NSPAPI_SET_SERVICE (0x00000002)
+
+//
+// Structures used by the provider interface.
+//
+
+typedef
+INT
+(APIENTRY *LPGET_ADDR_BY_NAME_PROC) (
+ IN LPGUID lpServiceType,
+ IN LPWSTR lpServiceName,
+ IN LPDWORD lpdwProtocols,
+ IN DWORD dwResolution,
+ IN OUT LPVOID lpCsaddrBuffer,
+ IN OUT LPDWORD lpdwBufferLength,
+ IN OUT LPWSTR lpAliasBuffer,
+ IN OUT LPDWORD lpdwAliasBufferLength,
+ IN HANDLE hCancellationEvent
+ );
+
+typedef struct _NS_ROUTINE {
+ DWORD dwFunctionCount;
+ LPFN_NSPAPI *alpfnFunctions;
+ DWORD dwNameSpace;
+ DWORD dwPriority;
+} NS_ROUTINE, *PNS_ROUTINE, * FAR LPNS_ROUTINE;
+
+typedef
+DWORD
+
+(APIENTRY *LPLOAD_NAME_SPACE_PROC) (
+ IN OUT LPDWORD lpdwVersion,
+ IN OUT LPNS_ROUTINE nsrBuffer,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+
+typedef
+INT
+(APIENTRY *LPGET_SERVICE_PROC) (
+ IN LPGUID lpServiceType,
+ IN LPWSTR lpServiceName,
+ IN DWORD dwProperties,
+ IN BOOL fUnicodeBlob,
+ OUT LPSERVICE_INFO lpServiceInfo,
+ IN OUT LPDWORD lpdwBufferLen
+ );
+
+typedef
+DWORD
+(APIENTRY *LPSET_SERVICE_PROC) (
+ IN DWORD dwOperation,
+ IN DWORD dwFlags,
+ IN BOOL fUnicodeBlob,
+ IN LPSERVICE_INFO lpServiceInfo
+ );
+
+//
+// Internal Functions
+//
+DWORD
+APIENTRY
+NPGetService (
+ IN LPGUID lpServiceType,
+ IN LPWSTR lpServiceName,
+ IN DWORD dwProperties,
+ IN BOOL fUnicodeBlob,
+ OUT LPSERVICE_INFO lpServiceInfo,
+ IN OUT LPDWORD lpdwBufferLen
+ );
+
+DWORD
+APIENTRY
+NPSetService (
+ IN DWORD dwOperation,
+ IN DWORD dwFlags,
+ IN BOOL fUnicodeBlob,
+ IN LPSERVICE_INFO lpServiceInfo
+ );
+
+INT
+APIENTRY
+NPGetAddressByName (
+ IN LPGUID lpServiceType,
+ IN LPWSTR lpServiceName,
+ IN LPDWORD lpdwProtocols,
+ IN DWORD dwResolution,
+ IN OUT LPVOID lpCsaddrBuffer,
+ IN OUT LPDWORD lpdwBufferLength,
+ IN OUT LPWSTR lpAliasBuffer,
+ IN OUT LPDWORD lpdwAliasBufferLength,
+ IN HANDLE hCancellationEvent
+ );
+
+INT
+APIENTRY
+NPLoadNameSpaces (
+ IN OUT LPDWORD lpdwVersion,
+ IN OUT LPNS_ROUTINE nsrBuffer,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+
+#endif // _NSPAPIP_INCLUDED
diff --git a/public/sdk/inc/nt.h b/public/sdk/inc/nt.h
new file mode 100644
index 000000000..b6f12a567
--- /dev/null
+++ b/public/sdk/inc/nt.h
@@ -0,0 +1,83 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ nt.h
+
+Abstract:
+
+ Top level include file for applications and subsystems written to
+ the NT API. Including this file defines all the public types
+ and system calls that an application program can use.
+
+ Initial clients of this include file are the NT Shell, along with
+ the Windows, OS2 and POSIX subsystems.
+
+
+Author:
+
+ Steve Wood [stevewo] 23-Feb-1989
+
+Revision History:
+
+--*/
+
+#ifndef NT_INCLUDED
+#define NT_INCLUDED
+
+//
+// Common definitions
+//
+
+#define _CTYPE_DISABLE_MACROS
+
+#include <excpt.h>
+#include <stdarg.h>
+#include <ntdef.h>
+
+#include <ntstatus.h>
+#include <ntkeapi.h>
+
+#ifdef _X86_
+#include "nti386.h"
+#endif // i386
+
+#ifdef _MIPS_
+#include "ntmips.h"
+#endif // MIPS
+
+#ifdef _ALPHA_
+#include "ntalpha.h"
+#endif // _ALPHA_
+
+#ifdef _PPC_
+#include "ntppc.h"
+#endif // _PPC_
+
+//
+// Each NT Component that exports system call APIs to user programs
+// should have its own include file included here.
+//
+
+#include <ntseapi.h>
+#include <ntobapi.h>
+#include <ntimage.h>
+#include <ntldr.h>
+#include <ntpsapi.h>
+#include <ntxcapi.h>
+#include <ntlpcapi.h>
+#include <ntioapi.h>
+#include <ntiolog.h>
+#include <ntpoapi.h>
+#include <ntexapi.h>
+#include <ntkxapi.h>
+#include <ntmmapi.h>
+#include <ntregapi.h>
+#include <ntelfapi.h>
+#include <ntconfig.h>
+#include <ntnls.h>
+#include <ntpnpapi.h>
+
+#endif // NT_INCLUDED
diff --git a/public/sdk/inc/nt_vdd.h b/public/sdk/inc/nt_vdd.h
new file mode 100644
index 000000000..b521e6e12
--- /dev/null
+++ b/public/sdk/inc/nt_vdd.h
@@ -0,0 +1,215 @@
+/*
+ * nt_vdd.h
+ *
+ * VDD services exports and defines
+ *
+ */
+
+#ifndef _NT_VDD
+
+#define _NT_VDD
+
+
+/**
+ * IO port service prototypes and data structure definitions
+ **/
+
+/** Basic typedefs of VDD IO hooks **/
+
+typedef VOID (*PFNVDD_INB) (WORD iport,BYTE * data);
+typedef VOID (*PFNVDD_INW) (WORD iport,WORD * data);
+typedef VOID (*PFNVDD_INSB) (WORD iport,BYTE * data,WORD count);
+typedef VOID (*PFNVDD_INSW) (WORD iport,WORD * data,WORD count);
+typedef VOID (*PFNVDD_OUTB) (WORD iport,BYTE data);
+typedef VOID (*PFNVDD_OUTW) (WORD iport,WORD data);
+typedef VOID (*PFNVDD_OUTSB) (WORD iport,BYTE * data,WORD count);
+typedef VOID (*PFNVDD_OUTSW) (WORD iport,WORD * data,WORD count);
+
+/** Array of handlers for VDD IO hooks. **/
+
+typedef struct _VDD_IO_HANDLERS {
+ PFNVDD_INB inb_handler;
+ PFNVDD_INW inw_handler;
+ PFNVDD_INSB insb_handler;
+ PFNVDD_INSW insw_handler;
+ PFNVDD_OUTB outb_handler;
+ PFNVDD_OUTW outw_handler;
+ PFNVDD_OUTSB outsb_handler;
+ PFNVDD_OUTSW outsw_handler;
+} VDD_IO_HANDLERS, *PVDD_IO_HANDLERS;
+
+/** Port Range structure **/
+
+typedef struct _VDD_IO_PORTRANGE {
+ WORD First;
+ WORD Last;
+} VDD_IO_PORTRANGE, *PVDD_IO_PORTRANGE;
+
+
+BOOL VDDInstallIOHook (
+ HANDLE hVDD,
+ WORD cPortRange,
+ PVDD_IO_PORTRANGE pPortRange,
+ PVDD_IO_HANDLERS IOhandler
+);
+
+
+VOID VDDDeInstallIOHook (
+ HANDLE hVdd,
+ WORD cPortRange,
+ PVDD_IO_PORTRANGE pPortRange
+);
+
+
+WORD VDDReserveIrqLine (
+ HANDLE hVdd,
+ WORD IrqLine
+ );
+
+BOOL VDDReleaseIrqLine (
+ HANDLE hVdd,
+ WORD IrqLine
+ );
+
+/**
+ * DMA service prototypes and data structure definitions
+ **/
+
+
+/** Buffer definition for returning DMA information **/
+
+typedef struct _VDD_DMA_INFO {
+ WORD addr;
+ WORD count;
+ WORD page;
+ BYTE status;
+ BYTE mode;
+ BYTE mask;
+} VDD_DMA_INFO, *PVDD_DMA_INFO;
+
+/** bits for querying the DMA information **/
+
+#define VDD_DMA_ADDR 0x01
+#define VDD_DMA_COUNT 0x02
+#define VDD_DMA_PAGE 0x04
+#define VDD_DMA_STATUS 0x08
+#define VDD_DMA_ALL VDD_DMA_ADDR | VDD_DMA_COUNT | VDD_DMA_PAGE | VDD_DMA_STATUS
+
+
+DWORD VDDRequestDMA (
+ HANDLE hVDD,
+ WORD iChannel,
+ PVOID Buffer,
+ DWORD length
+);
+
+
+BOOL VDDSetDMA (
+ HANDLE hVDD,
+ WORD iChannel,
+ WORD fDMA,
+ PVDD_DMA_INFO Buffer
+);
+
+
+BOOL VDDQueryDMA (
+ HANDLE hVDD,
+ WORD iChannel,
+ PVDD_DMA_INFO pDmaInfo
+);
+
+
+/**
+ * Memory mapped I/O service prototypes and data structure definitions
+ **/
+
+typedef VOID (*PVDD_MEMORY_HANDLER) (PVOID FaultAddress, ULONG RWMode);
+
+BOOL VDDInstallMemoryHook (
+ HANDLE hVDD,
+ PVOID pStart,
+ DWORD count,
+ PVDD_MEMORY_HANDLER MemoryHandler
+);
+
+BOOL VDDDeInstallMemoryHook (
+ HANDLE hVDD,
+ PVOID pStart,
+ DWORD count
+);
+
+BOOL VDDAllocMem(
+ HANDLE hVDD,
+ PVOID Address,
+ DWORD Size
+);
+
+
+BOOL VDDFreeMem(
+ HANDLE hVDD,
+ PVOID Address,
+ DWORD Size
+);
+
+/**
+ * Misc. service prototypes and data structure definitions
+ **/
+
+
+BOOL VDDIncludeMem(
+ HANDLE hVDD,
+ PVOID Address,
+ DWORD Size
+);
+
+
+VOID VDDTerminateVDM();
+
+/** Basic typedefs of VDD User hooks **/
+
+typedef VOID (*PFNVDD_UCREATE) (USHORT DosPDB);
+typedef VOID (*PFNVDD_UTERMINATE) (USHORT DosPDB);
+typedef VOID (*PFNVDD_UBLOCK) (VOID);
+typedef VOID (*PFNVDD_URESUME) (VOID);
+
+/** Array of handlers for VDD User hooks. **/
+
+typedef struct _VDD_USER_HANDLERS {
+ HANDLE hvdd;
+ PFNVDD_UCREATE ucr_handler;
+ PFNVDD_UTERMINATE uterm_handler;
+ PFNVDD_UBLOCK ublock_handler;
+ PFNVDD_URESUME uresume_handler;
+ struct _VDD_USER_HANDLERS *next;
+} VDD_USER_HANDLERS, *PVDD_USER_HANDLERS;
+
+/** Function prototypes **/
+
+BOOL VDDInstallUserHook (
+ HANDLE hVDD,
+ PFNVDD_UCREATE Ucr_Handler,
+ PFNVDD_UTERMINATE Uterm_Handler,
+ PFNVDD_UBLOCK Ublock_handler,
+ PFNVDD_URESUME Uresume_handler
+);
+
+
+BOOL VDDDeInstallUserHook (
+ HANDLE hVdd
+);
+
+VOID VDDTerminateUserHook(USHORT DosPDB);
+VOID VDDCreateUserHook(USHORT DosPDB);
+VOID VDDBlockUserHook(VOID);
+VOID VDDResumeUserHook(VOID);
+
+VOID VDDSimulate16(VOID);
+
+
+SHORT VDDAllocateDosHandle(ULONG pPDB, PVOID* ppSFT, PVOID* ppJFT);
+VOID VDDAssociateNtHandle(PVOID pSFT, HANDLE h32File, WORD wAccess);
+BOOL VDDReleaseDosHandle (ULONG pPDB, SHORT hFile);
+HANDLE VDDRetrieveNtHandle (ULONG pPDB, SHORT hFile, PVOID* ppSFT, PVOID* ppJFT);
+
+
+#endif // ifndef _NT_VDD
diff --git a/public/sdk/inc/ntalpha.h b/public/sdk/inc/ntalpha.h
new file mode 100644
index 000000000..7472500cb
--- /dev/null
+++ b/public/sdk/inc/ntalpha.h
@@ -0,0 +1,888 @@
+/*++ BUILD Version: 0011 // Increment this if a change has global effects
+
+Copyright (c) 1992 Digital Equipment Corporation
+
+Module Name:
+
+ ntalpha.h
+
+Abstract:
+
+ User-mode visible Alpha specific structures and constants
+
+Author:
+
+ Joe Notarangelo 27-March-1992 (based on ntmips.h by Dave Cutler)
+
+Revision History:
+
+ Miche Baker-Harvey 28-Jan-1993 Add 32-bit API for context structure
+
+ Jeff McLeman 22-Jul-1992 Add SystemTime struct
+
+ Jeff McLeman 10-July-1992 Add Stall entries in the PCR
+
+ Steve Jenness 08-July-1992 Add NtCurrentTeb definition.
+
+ John DeRosa 30-June-1992
+
+ Added volatile qualifier to the address arguments of the I/O
+ space function prototypes.
+
+ Put back in sections of the PCR, and a typedef, that were deleted.
+
+ Rod Gamache 15-May-1992 Add EISA access routines prototypes
+
+ Thomas Van Baak (tvb) 9-Jul-1992
+
+ Created proper Alpha CONTEXT structure definitions.
+
+--*/
+
+#ifndef _NTALPHA_
+#define _NTALPHA_
+
+// begin_ntddk begin_nthal
+
+#if defined(_ALPHA_)
+
+//
+// Define system time structure.
+//
+
+typedef ULONGLONG KSYSTEM_TIME;
+typedef KSYSTEM_TIME *PKSYSTEM_TIME;
+
+#endif
+
+// end_ntddk end_nthal
+
+#ifdef _ALPHA_ // ntddk nthal
+
+//
+// Cfront doesn't support the volatile attribute and complains about
+// it loudly. This disables volatile when compiling C++ code, but it
+// isn't clear the semantics are correct. It all comes down to the fact
+// that cfront is bogus.
+//
+
+#ifdef _CFRONT
+#define VOLATILE
+#else
+#define VOLATILE volatile
+#endif
+
+// begin_windbgkd
+#ifdef _ALPHA_
+
+//
+// Define Alpha specific kernel debugger information.
+//
+// The following structure contains machine specific data passed to
+// the host system kernel debugger in a wait state change message.
+//
+
+#define DBGKD_MAXSTREAM 16
+
+typedef struct _DBGKD_CONTROL_REPORT {
+ ULONG InstructionCount;
+ UCHAR InstructionStream[DBGKD_MAXSTREAM];
+} DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+
+//
+// The following structure contains information that the host system
+// kernel debugger wants to set on every continue operation and avoids
+// the need to send extra packets of information.
+//
+
+typedef ULONG DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
+
+#endif // _ALPHA_
+// end_windbgkd
+
+//
+// Define breakpoint codes.
+//
+
+#define USER_BREAKPOINT 0 // user breakpoint
+#define KERNEL_BREAKPOINT 1 // kernel breakpoint
+
+#define DEBUG_PRINT_BREAKPOINT 20 // debug print breakpoint
+#define DEBUG_PROMPT_BREAKPOINT 21 // debug prompt breakpoint
+#define DEBUG_STOP_BREAKPOINT 22 // debug stop breakpoint
+#define DEBUG_LOAD_SYMBOLS_BREAKPOINT 23 // load symbols breakpoint
+#define DEBUG_UNLOAD_SYMBOLS_BREAKPOINT 24 // unload symbols breakpoint
+#define BREAKIN_BREAKPOINT 25 // breakin breakpoint
+
+//
+// Define Alpha specific read control space commands for the
+// Kernel Debugger. These definitions are for values that must be
+// accessed via defined interfaces (PAL on MP systems).
+//
+
+#define DEBUG_CONTROL_SPACE_PCR 1
+#define DEBUG_CONTROL_SPACE_THREAD 2
+#define DEBUG_CONTROL_SPACE_PRCB 3
+#define DEBUG_CONTROL_SPACE_PSR 4
+#define DEBUG_CONTROL_SPACE_DPCACTIVE 5
+#define DEBUG_CONTROL_SPACE_TEB 6
+#define DEBUG_CONTROL_SPACE_IPRSTATE 7
+#define DEBUG_CONTROL_SPACE_COUNTERS 8
+
+//
+// Define Alpha GENTRAP codes.
+//
+
+#define GENTRAP_INTEGER_OVERFLOW (-1)
+#define GENTRAP_INTEGER_DIVIDE_BY_ZERO (-2)
+#define GENTRAP_FLOATING_OVERFLOW (-3)
+#define GENTRAP_FLOATING_DIVIDE_BY_ZERO (-4)
+#define GENTRAP_FLOATING_UNDERFLOW (-5)
+#define GENTRAP_FLOATING_INVALID_OPERAND (-6)
+#define GENTRAP_FLOATING_INEXACT_RESULT (-7)
+
+//
+// Define special fast path even pair client/server system service codes.
+//
+// N.B. These codes are VERY special. The high bit signifies a fast path
+// event pair service and the low bit signifies what type.
+//
+
+#define SET_LOW_WAIT_HIGH -2 // fast path event pair service
+#define SET_HIGH_WAIT_LOW -1 // fast path event pair service
+
+// begin_ntddk begin_nthal
+//
+// Define size of kernel mode stack.
+//
+
+#define KERNEL_STACK_SIZE 0x4000
+
+//
+// Define size of large kernel mode stack for callbacks.
+//
+
+#define KERNEL_LARGE_STACK_SIZE 65536
+
+//
+// Define number of pages to initialize in a large kernel stack.
+//
+
+#define KERNEL_LARGE_STACK_COMMIT 16384
+
+// end_ntddk end_nthal
+
+//
+// Define address of data shared between user and kernel mode.
+//
+
+#define MM_SHARED_USER_DATA_VA 0x7FFE0000
+
+#define USER_SHARED_DATA ((KUSER_SHARED_DATA * const)MM_SHARED_USER_DATA_VA)
+
+// begin_winnt
+
+#ifdef _ALPHA_ // winnt
+void *_rdteb(void); // winnt
+#if defined(_M_ALPHA) // winnt
+#pragma intrinsic(_rdteb) // winnt
+#endif // winnt
+#endif // winnt
+
+#if defined(_M_ALPHA)
+#define NtCurrentTeb() ((struct _TEB *)_rdteb())
+#else
+struct _TEB *
+NtCurrentTeb(void);
+#endif
+
+//
+// Define function to return the current Thread Environment Block
+//
+
+#ifdef _ALPHA_
+
+
+
+//
+// Define functions to get the address of the current fiber and the
+// current fiber data.
+//
+
+#define GetCurrentFiber() (((PNT_TIB)NtCurrentTeb())->FiberData)
+#define GetFiberData() (*(PVOID *)(GetCurrentFiber()))
+
+// begin_ntddk begin_nthal
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+
+#if !defined(RC_INVOKED)
+
+#define CONTEXT_PORTABLE_32BIT 0x00100000
+#define CONTEXT_ALPHA 0x00020000
+
+#define CONTEXT_CONTROL (CONTEXT_ALPHA | 0x00000001L)
+#define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA | 0x00000002L)
+#define CONTEXT_INTEGER (CONTEXT_ALPHA | 0x00000004L)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+#endif
+
+#ifndef _PORTABLE_32BIT_CONTEXT
+
+//
+// Context Frame
+//
+// This frame has a several purposes: 1) it is used as an argument to
+// NtContinue, 2) it is used to construct a call frame for APC delivery,
+// 3) it is used to construct a call frame for exception dispatching
+// in user mode, 4) it is used in the user level thread creation
+// routines, and 5) it is used to to pass thread state to debuggers.
+//
+// N.B. Because this record is used as a call frame, it must be EXACTLY
+// a multiple of 16 bytes in length.
+//
+// There are two variations of the context structure. This is the real one.
+//
+
+typedef struct _CONTEXT {
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+
+ ULONGLONG FltF0;
+ ULONGLONG FltF1;
+ ULONGLONG FltF2;
+ ULONGLONG FltF3;
+ ULONGLONG FltF4;
+ ULONGLONG FltF5;
+ ULONGLONG FltF6;
+ ULONGLONG FltF7;
+ ULONGLONG FltF8;
+ ULONGLONG FltF9;
+ ULONGLONG FltF10;
+ ULONGLONG FltF11;
+ ULONGLONG FltF12;
+ ULONGLONG FltF13;
+ ULONGLONG FltF14;
+ ULONGLONG FltF15;
+ ULONGLONG FltF16;
+ ULONGLONG FltF17;
+ ULONGLONG FltF18;
+ ULONGLONG FltF19;
+ ULONGLONG FltF20;
+ ULONGLONG FltF21;
+ ULONGLONG FltF22;
+ ULONGLONG FltF23;
+ ULONGLONG FltF24;
+ ULONGLONG FltF25;
+ ULONGLONG FltF26;
+ ULONGLONG FltF27;
+ ULONGLONG FltF28;
+ ULONGLONG FltF29;
+ ULONGLONG FltF30;
+ ULONGLONG FltF31;
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_INTEGER.
+ //
+ // N.B. The registers gp, sp, and ra are defined in this section, but are
+ // considered part of the control context rather than part of the integer
+ // context.
+ //
+
+ ULONGLONG IntV0; // $0: return value register, v0
+ ULONGLONG IntT0; // $1: temporary registers, t0 - t7
+ ULONGLONG IntT1; // $2:
+ ULONGLONG IntT2; // $3:
+ ULONGLONG IntT3; // $4:
+ ULONGLONG IntT4; // $5:
+ ULONGLONG IntT5; // $6:
+ ULONGLONG IntT6; // $7:
+ ULONGLONG IntT7; // $8:
+ ULONGLONG IntS0; // $9: nonvolatile registers, s0 - s5
+ ULONGLONG IntS1; // $10:
+ ULONGLONG IntS2; // $11:
+ ULONGLONG IntS3; // $12:
+ ULONGLONG IntS4; // $13:
+ ULONGLONG IntS5; // $14:
+ ULONGLONG IntFp; // $15: frame pointer register, fp/s6
+ ULONGLONG IntA0; // $16: argument registers, a0 - a5
+ ULONGLONG IntA1; // $17:
+ ULONGLONG IntA2; // $18:
+ ULONGLONG IntA3; // $19:
+ ULONGLONG IntA4; // $20:
+ ULONGLONG IntA5; // $21:
+ ULONGLONG IntT8; // $22: temporary registers, t8 - t11
+ ULONGLONG IntT9; // $23:
+ ULONGLONG IntT10; // $24:
+ ULONGLONG IntT11; // $25:
+ ULONGLONG IntRa; // $26: return address register, ra
+ ULONGLONG IntT12; // $27: temporary register, t12
+ ULONGLONG IntAt; // $28: assembler temp register, at
+ ULONGLONG IntGp; // $29: global pointer register, gp
+ ULONGLONG IntSp; // $30: stack pointer register, sp
+ ULONGLONG IntZero; // $31: zero register, zero
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+
+ ULONGLONG Fpcr; // floating point control register
+ ULONGLONG SoftFpcr; // software extension to FPCR
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_CONTROL.
+ //
+ // N.B. The registers gp, sp, and ra are defined in the integer section,
+ // but are considered part of the control context rather than part of
+ // the integer context.
+ //
+
+ ULONGLONG Fir; // (fault instruction) continuation address
+ ULONG Psr; // processor status
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a thread's context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+
+ ULONG ContextFlags;
+ ULONG Fill[4]; // padding for 16-byte stack frame alignment
+
+} CONTEXT, *PCONTEXT;
+
+#else
+
+//
+// 32-bit Context Frame
+//
+// This alternate version of the Alpha context structure parallels that
+// of MIPS and IX86 in style for the first 64 entries: 32-bit machines
+// can operate on the fields, and a value declared as a pointer to an
+// array of int's can be used to index into the fields. This makes life
+// with windbg and ntsd vastly easier.
+//
+// There are two parts: the first contains the lower 32-bits of each
+// element in the 64-bit definition above. The second part contains
+// the upper 32-bits of each 64-bit element above.
+//
+// The names in the first part are identical to the 64-bit names.
+// The second part names are prefixed with "High".
+//
+// 1st half: at 32 bits each, (containing the low parts of 64-bit values)
+// 32 floats, 32 ints, fpcrs, fir, psr, contextflags
+// 2nd half: at 32 bits each
+// 32 floats, 32 ints, fpcrs, fir, fill
+//
+// There is no external support for the 32-bit version of the context
+// structure. It is only used internally by windbg and ntsd.
+//
+// This structure must be the same size as the 64-bit version above.
+//
+
+typedef struct _CONTEXT {
+
+ ULONG FltF0;
+ ULONG FltF1;
+ ULONG FltF2;
+ ULONG FltF3;
+ ULONG FltF4;
+ ULONG FltF5;
+ ULONG FltF6;
+ ULONG FltF7;
+ ULONG FltF8;
+ ULONG FltF9;
+ ULONG FltF10;
+ ULONG FltF11;
+ ULONG FltF12;
+ ULONG FltF13;
+ ULONG FltF14;
+ ULONG FltF15;
+ ULONG FltF16;
+ ULONG FltF17;
+ ULONG FltF18;
+ ULONG FltF19;
+ ULONG FltF20;
+ ULONG FltF21;
+ ULONG FltF22;
+ ULONG FltF23;
+ ULONG FltF24;
+ ULONG FltF25;
+ ULONG FltF26;
+ ULONG FltF27;
+ ULONG FltF28;
+ ULONG FltF29;
+ ULONG FltF30;
+ ULONG FltF31;
+
+ ULONG IntV0; // $0: return value register, v0
+ ULONG IntT0; // $1: temporary registers, t0 - t7
+ ULONG IntT1; // $2:
+ ULONG IntT2; // $3:
+ ULONG IntT3; // $4:
+ ULONG IntT4; // $5:
+ ULONG IntT5; // $6:
+ ULONG IntT6; // $7:
+ ULONG IntT7; // $8:
+ ULONG IntS0; // $9: nonvolatile registers, s0 - s5
+ ULONG IntS1; // $10:
+ ULONG IntS2; // $11:
+ ULONG IntS3; // $12:
+ ULONG IntS4; // $13:
+ ULONG IntS5; // $14:
+ ULONG IntFp; // $15: frame pointer register, fp/s6
+ ULONG IntA0; // $16: argument registers, a0 - a5
+ ULONG IntA1; // $17:
+ ULONG IntA2; // $18:
+ ULONG IntA3; // $19:
+ ULONG IntA4; // $20:
+ ULONG IntA5; // $21:
+ ULONG IntT8; // $22: temporary registers, t8 - t11
+ ULONG IntT9; // $23:
+ ULONG IntT10; // $24:
+ ULONG IntT11; // $25:
+ ULONG IntRa; // $26: return address register, ra
+ ULONG IntT12; // $27: temporary register, t12
+ ULONG IntAt; // $28: assembler temp register, at
+ ULONG IntGp; // $29: global pointer register, gp
+ ULONG IntSp; // $30: stack pointer register, sp
+ ULONG IntZero; // $31: zero register, zero
+
+ ULONG Fpcr; // floating point control register
+ ULONG SoftFpcr; // software extension to FPCR
+
+ ULONG Fir; // (fault instruction) continuation address
+
+ ULONG Psr; // processor status
+ ULONG ContextFlags;
+
+ //
+ // Beginning of the "second half".
+ // The name "High" parallels the HighPart of a LargeInteger.
+ //
+
+ ULONG HighFltF0;
+ ULONG HighFltF1;
+ ULONG HighFltF2;
+ ULONG HighFltF3;
+ ULONG HighFltF4;
+ ULONG HighFltF5;
+ ULONG HighFltF6;
+ ULONG HighFltF7;
+ ULONG HighFltF8;
+ ULONG HighFltF9;
+ ULONG HighFltF10;
+ ULONG HighFltF11;
+ ULONG HighFltF12;
+ ULONG HighFltF13;
+ ULONG HighFltF14;
+ ULONG HighFltF15;
+ ULONG HighFltF16;
+ ULONG HighFltF17;
+ ULONG HighFltF18;
+ ULONG HighFltF19;
+ ULONG HighFltF20;
+ ULONG HighFltF21;
+ ULONG HighFltF22;
+ ULONG HighFltF23;
+ ULONG HighFltF24;
+ ULONG HighFltF25;
+ ULONG HighFltF26;
+ ULONG HighFltF27;
+ ULONG HighFltF28;
+ ULONG HighFltF29;
+ ULONG HighFltF30;
+ ULONG HighFltF31;
+
+ ULONG HighIntV0; // $0: return value register, v0
+ ULONG HighIntT0; // $1: temporary registers, t0 - t7
+ ULONG HighIntT1; // $2:
+ ULONG HighIntT2; // $3:
+ ULONG HighIntT3; // $4:
+ ULONG HighIntT4; // $5:
+ ULONG HighIntT5; // $6:
+ ULONG HighIntT6; // $7:
+ ULONG HighIntT7; // $8:
+ ULONG HighIntS0; // $9: nonvolatile registers, s0 - s5
+ ULONG HighIntS1; // $10:
+ ULONG HighIntS2; // $11:
+ ULONG HighIntS3; // $12:
+ ULONG HighIntS4; // $13:
+ ULONG HighIntS5; // $14:
+ ULONG HighIntFp; // $15: frame pointer register, fp/s6
+ ULONG HighIntA0; // $16: argument registers, a0 - a5
+ ULONG HighIntA1; // $17:
+ ULONG HighIntA2; // $18:
+ ULONG HighIntA3; // $19:
+ ULONG HighIntA4; // $20:
+ ULONG HighIntA5; // $21:
+ ULONG HighIntT8; // $22: temporary registers, t8 - t11
+ ULONG HighIntT9; // $23:
+ ULONG HighIntT10; // $24:
+ ULONG HighIntT11; // $25:
+ ULONG HighIntRa; // $26: return address register, ra
+ ULONG HighIntT12; // $27: temporary register, t12
+ ULONG HighIntAt; // $28: assembler temp register, at
+ ULONG HighIntGp; // $29: global pointer register, gp
+ ULONG HighIntSp; // $30: stack pointer register, sp
+ ULONG HighIntZero; // $31: zero register, zero
+
+ ULONG HighFpcr; // floating point control register
+ ULONG HighSoftFpcr; // software extension to FPCR
+ ULONG HighFir; // processor status
+
+ double DoNotUseThisField; // to force quadword structure alignment
+ ULONG HighFill[2]; // padding for 16-byte stack frame alignment
+
+} CONTEXT, *PCONTEXT;
+
+//
+// These should name the fields in the _PORTABLE_32BIT structure
+// that overlay the Psr and ContextFlags in the normal structure.
+//
+
+#define _QUAD_PSR_OFFSET HighSoftFpcr
+#define _QUAD_FLAGS_OFFSET HighFir
+
+#endif // _PORTABLE_32BIT_CONTEXT
+
+// end_ntddk end_nthal
+
+#endif // _ALPHA_
+
+// end_winnt
+
+#define CONTEXT_TO_PROGRAM_COUNTER(Context) ((Context)->Fir)
+
+#define CONTEXT_LENGTH (sizeof(CONTEXT))
+#define CONTEXT_ALIGN (sizeof(ULONG))
+#define CONTEXT_ROUND (CONTEXT_ALIGN - 1)
+
+//
+// Nonvolatile context pointer record.
+//
+
+typedef struct _KNONVOLATILE_CONTEXT_POINTERS {
+
+ PULONGLONG FloatingContext[1];
+ PULONGLONG FltF1;
+ // Nonvolatile floating point registers start here.
+ PULONGLONG FltF2;
+ PULONGLONG FltF3;
+ PULONGLONG FltF4;
+ PULONGLONG FltF5;
+ PULONGLONG FltF6;
+ PULONGLONG FltF7;
+ PULONGLONG FltF8;
+ PULONGLONG FltF9;
+ PULONGLONG FltF10;
+ PULONGLONG FltF11;
+ PULONGLONG FltF12;
+ PULONGLONG FltF13;
+ PULONGLONG FltF14;
+ PULONGLONG FltF15;
+ PULONGLONG FltF16;
+ PULONGLONG FltF17;
+ PULONGLONG FltF18;
+ PULONGLONG FltF19;
+ PULONGLONG FltF20;
+ PULONGLONG FltF21;
+ PULONGLONG FltF22;
+ PULONGLONG FltF23;
+ PULONGLONG FltF24;
+ PULONGLONG FltF25;
+ PULONGLONG FltF26;
+ PULONGLONG FltF27;
+ PULONGLONG FltF28;
+ PULONGLONG FltF29;
+ PULONGLONG FltF30;
+ PULONGLONG FltF31;
+
+ PULONGLONG IntegerContext[1];
+ PULONGLONG IntT0;
+ PULONGLONG IntT1;
+ PULONGLONG IntT2;
+ PULONGLONG IntT3;
+ PULONGLONG IntT4;
+ PULONGLONG IntT5;
+ PULONGLONG IntT6;
+ PULONGLONG IntT7;
+ // Nonvolatile integer registers start here.
+ PULONGLONG IntS0;
+ PULONGLONG IntS1;
+ PULONGLONG IntS2;
+ PULONGLONG IntS3;
+ PULONGLONG IntS4;
+ PULONGLONG IntS5;
+ PULONGLONG IntFp;
+ PULONGLONG IntA0;
+ PULONGLONG IntA1;
+ PULONGLONG IntA2;
+ PULONGLONG IntA3;
+ PULONGLONG IntA4;
+ PULONGLONG IntA5;
+ PULONGLONG IntT8;
+ PULONGLONG IntT9;
+ PULONGLONG IntT10;
+ PULONGLONG IntT11;
+ PULONGLONG IntRa;
+ PULONGLONG IntT12;
+ PULONGLONG IntAt;
+ PULONGLONG IntGp;
+ PULONGLONG IntSp;
+ PULONGLONG IntZero;
+
+} KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS;
+
+//
+// Define Exception Summary Register for arithmetic exceptions.
+//
+
+typedef struct _EXC_SUM {
+
+ ULONG SoftwareCompletion : 1;
+ ULONG InvalidOperation : 1;
+ ULONG DivisionByZero : 1;
+ ULONG Overflow : 1;
+ ULONG Underflow : 1;
+ ULONG InexactResult : 1;
+ ULONG IntegerOverflow : 1;
+ ULONG Fill : 25;
+
+} EXC_SUM, *PEXC_SUM;
+
+//
+// Define hardware Floating Point Control Register.
+//
+
+typedef struct _FPCR {
+
+ ULONG LowPart;
+ ULONG Fill : 17;
+ ULONG DisableInvalid : 1;
+ ULONG DisableDivisionByZero : 1;
+ ULONG DisableOverflow : 1;
+ ULONG InvalidOperation : 1;
+ ULONG DivisionByZero : 1;
+ ULONG Overflow : 1;
+ ULONG Underflow : 1;
+ ULONG InexactResult : 1;
+ ULONG IntegerOverflow : 1;
+ ULONG DynamicRoundingMode : 2;
+ ULONG UnderflowToZeroEnable : 1;
+ ULONG DisableUnderflow : 1;
+ ULONG DisableInexact : 1;
+ ULONG SummaryBit : 1;
+
+} FPCR, *PFPCR;
+
+//
+// Define software Floating Point Control and Status Register.
+//
+// N.B. The five IEEE trap enable bits are in the same position as the bits
+// in the exception summary register. The five IEEE status bits are in
+// the same order and 16 bits left of the IEEE enable bits.
+//
+// N.B. The ArithmeticTrapIgnore bit will supress all arithmetic traps (and
+// leave unpredictable results in the destination register of floating
+// point instructions that trap) when the /S qualifier is not used.
+//
+// The Software FPCR defaults to zero.
+//
+
+typedef struct _SW_FPCR {
+
+ ULONG ArithmeticTrapIgnore : 1;
+
+ ULONG EnableInvalid : 1;
+ ULONG EnableDivisionByZero : 1;
+ ULONG EnableOverflow : 1;
+ ULONG EnableUnderflow : 1;
+ ULONG EnableInexact : 1;
+ ULONG FillA : 6;
+
+ ULONG DenormalResultEnable : 1;
+ ULONG NoSoftwareEmulation : 1; // tvb debug
+ ULONG UnderflowToZeroEnable : 1; // bit 14 not used
+ ULONG ThreadInheritEnable : 1; // bit 15 not used
+
+ ULONG EmulationOccurred : 1;
+
+ ULONG StatusInvalid : 1;
+ ULONG StatusDivisionByZero : 1;
+ ULONG StatusOverflow : 1;
+ ULONG StatusUnderflow : 1;
+ ULONG StatusInexact : 1;
+ ULONG FillB : 10;
+
+} SW_FPCR, *PSW_FPCR;
+
+// begin_nthal
+//
+// Define address space layout as defined by Alpha 32-bit super-page
+// memory management.
+//
+
+#define KUSEG_BASE 0x0 // base of user segment
+#define KSEG0_BASE 0x80000000 // base of cached kernel physical
+#define KSEG2_BASE 0xc0000000 // base of cached kernel virtual
+// end_nthal
+
+//
+// Define Alpha exception handling structures and function prototypes.
+//
+
+//
+// Function table entry structure definition.
+//
+
+typedef struct _RUNTIME_FUNCTION {
+ ULONG BeginAddress;
+ ULONG EndAddress;
+ PEXCEPTION_ROUTINE ExceptionHandler;
+ PVOID HandlerData;
+ ULONG PrologEndAddress;
+} RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
+
+//
+// Scope table structure definition - for acc.
+//
+// One table entry is created by the acc C compiler for each try-except or
+// try-finally scope. Nested scopes are ordered from inner to outer scope.
+// Current scope is passively maintained by PC-mapping (function tables).
+//
+
+typedef struct _SCOPE_TABLE {
+ ULONG Count;
+ struct
+ {
+ ULONG BeginAddress;
+ ULONG EndAddress;
+ ULONG HandlerAddress;
+ ULONG JumpTarget;
+ } ScopeRecord[1];
+} SCOPE_TABLE, *PSCOPE_TABLE;
+
+//
+// Scope structure definition - for GEM.
+//
+// One descriptor is created by the GEM C compiler for each try-except or
+// try-finally scope. Nested scopes are linked from inner to outer scope.
+// Current scope is actively maintained by a dynamic scope context structure.
+//
+
+typedef struct _SEH_BLOCK {
+ ULONG HandlerAddress;
+ ULONG JumpTarget;
+ struct _SEH_BLOCK *ParentSeb;
+} SEH_BLOCK, *PSEH_BLOCK;
+
+//
+// Dynamic SEH context definition for GEM.
+//
+// For GEM generated C code, dynamic SEH scope for a procedure is maintained
+// with a pointer to the current SEB (or NULL when not in any SEH scope). The
+// SEB pointer, as well as except handler linkage variables, is contained in
+// a structure located at a known offset within the stack frame.
+//
+
+typedef struct _SEH_CONTEXT {
+ PSEH_BLOCK CurrentSeb;
+ ULONG ExceptionCode;
+ ULONG RealFramePointer;
+} SEH_CONTEXT, *PSEH_CONTEXT;
+
+//
+// Runtime Library function prototypes.
+//
+
+VOID
+RtlCaptureContext (
+ OUT PCONTEXT ContextRecord
+ );
+
+PRUNTIME_FUNCTION
+RtlLookupFunctionEntry (
+ IN ULONG ControlPc
+ );
+
+typedef struct _FRAME_POINTERS {
+ ULONG VirtualFramePointer;
+ ULONG RealFramePointer;
+} FRAME_POINTERS, *PFRAME_POINTERS;
+
+ULONG
+RtlVirtualUnwind (
+ IN ULONG ControlPc,
+ IN PRUNTIME_FUNCTION FunctionEntry,
+ IN OUT PCONTEXT ContextRecord,
+ OUT PBOOLEAN InFunction,
+ OUT PFRAME_POINTERS EstablisherFrame,
+ IN OUT PKNONVOLATILE_CONTEXT_POINTERS ContextPointers OPTIONAL
+ );
+
+//
+// Define C structured exception handing function prototypes.
+//
+
+typedef struct _DISPATCHER_CONTEXT {
+ ULONG ControlPc;
+ PRUNTIME_FUNCTION FunctionEntry;
+ ULONG EstablisherFrame;
+ PCONTEXT ContextRecord;
+} DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT;
+
+struct _EXCEPTION_POINTERS;
+
+typedef
+LONG
+(*EXCEPTION_FILTER) (
+ struct _EXCEPTION_POINTERS *ExceptionPointers
+ );
+
+typedef
+VOID
+(*TERMINATION_HANDLER) (
+ BOOLEAN is_abnormal
+ );
+
+// begin_winnt
+
+#ifdef _ALPHA_
+
+VOID
+__jump_unwind (
+ PVOID VirtualFramePointer,
+ PVOID TargetPc
+ );
+
+#endif // _ALPHA_
+
+// end_winnt
+
+
+
+#endif // _ALPHA_ // ntddk nthal
+
+#endif // _NTALPHA_
diff --git a/public/sdk/inc/ntconfig.h b/public/sdk/inc/ntconfig.h
new file mode 100644
index 000000000..7583cb956
--- /dev/null
+++ b/public/sdk/inc/ntconfig.h
@@ -0,0 +1,842 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1992-1993 Microsoft Corporation
+
+Module Name:
+
+ ntconfig.h
+
+Abstract:
+
+ This module contains the definitions associated with the conventions
+ used to access the configuration registry.
+
+Author:
+
+ Andre Vachon (andreva) 17-Apr-1992
+
+Revision History:
+
+ 28-Apr-1992 JohnRo
+ Made changes to be consistent with win32 service controller APIs.
+--*/
+
+#ifndef _NTCONFIG_
+#define _NTCONFIG_
+
+// begin_ntddk begin_nthal
+// begin_winnt
+//
+// Predefined Value Types.
+//
+
+#define REG_NONE ( 0 ) // No value type
+#define REG_SZ ( 1 ) // Unicode nul terminated string
+#define REG_EXPAND_SZ ( 2 ) // Unicode nul terminated string
+ // (with environment variable references)
+#define REG_BINARY ( 3 ) // Free form binary
+#define REG_DWORD ( 4 ) // 32-bit number
+#define REG_DWORD_LITTLE_ENDIAN ( 4 ) // 32-bit number (same as REG_DWORD)
+#define REG_DWORD_BIG_ENDIAN ( 5 ) // 32-bit number
+#define REG_LINK ( 6 ) // Symbolic Link (unicode)
+#define REG_MULTI_SZ ( 7 ) // Multiple Unicode strings
+#define REG_RESOURCE_LIST ( 8 ) // Resource list in the resource map
+#define REG_FULL_RESOURCE_DESCRIPTOR ( 9 ) // Resource list in the hardware description
+#define REG_RESOURCE_REQUIREMENTS_LIST ( 10 )
+
+// end_ntddk end_nthal
+
+// begin_ntddk begin_nthal
+//
+// Service Types (Bit Mask)
+//
+#define SERVICE_KERNEL_DRIVER 0x00000001
+#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
+#define SERVICE_ADAPTER 0x00000004
+#define SERVICE_RECOGNIZER_DRIVER 0x00000008
+
+#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | \
+ SERVICE_FILE_SYSTEM_DRIVER | \
+ SERVICE_RECOGNIZER_DRIVER)
+
+#define SERVICE_WIN32_OWN_PROCESS 0x00000010
+#define SERVICE_WIN32_SHARE_PROCESS 0x00000020
+#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | \
+ SERVICE_WIN32_SHARE_PROCESS)
+
+#define SERVICE_INTERACTIVE_PROCESS 0x00000100
+
+#define SERVICE_TYPE_ALL (SERVICE_WIN32 | \
+ SERVICE_ADAPTER | \
+ SERVICE_DRIVER | \
+ SERVICE_INTERACTIVE_PROCESS)
+
+//
+// Start Type
+//
+
+#define SERVICE_BOOT_START 0x00000000
+#define SERVICE_SYSTEM_START 0x00000001
+#define SERVICE_AUTO_START 0x00000002
+#define SERVICE_DEMAND_START 0x00000003
+#define SERVICE_DISABLED 0x00000004
+
+//
+// Error control type
+//
+#define SERVICE_ERROR_IGNORE 0x00000000
+#define SERVICE_ERROR_NORMAL 0x00000001
+#define SERVICE_ERROR_SEVERE 0x00000002
+#define SERVICE_ERROR_CRITICAL 0x00000003
+
+//
+//
+// Define the registry driver node enumerations
+//
+
+typedef enum _CM_SERVICE_NODE_TYPE {
+ DriverType = SERVICE_KERNEL_DRIVER,
+ FileSystemType = SERVICE_FILE_SYSTEM_DRIVER,
+ Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS,
+ Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,
+ AdapterType = SERVICE_ADAPTER,
+ RecognizerType = SERVICE_RECOGNIZER_DRIVER
+} SERVICE_NODE_TYPE;
+
+typedef enum _CM_SERVICE_LOAD_TYPE {
+ BootLoad = SERVICE_BOOT_START,
+ SystemLoad = SERVICE_SYSTEM_START,
+ AutoLoad = SERVICE_AUTO_START,
+ DemandLoad = SERVICE_DEMAND_START,
+ DisableLoad = SERVICE_DISABLED
+} SERVICE_LOAD_TYPE;
+
+typedef enum _CM_ERROR_CONTROL_TYPE {
+ IgnoreError = SERVICE_ERROR_IGNORE,
+ NormalError = SERVICE_ERROR_NORMAL,
+ SevereError = SERVICE_ERROR_SEVERE,
+ CriticalError = SERVICE_ERROR_CRITICAL
+} SERVICE_ERROR_TYPE;
+
+// end_winnt
+// end_ntddk end_nthal
+
+// begin_ntddk begin_nthal
+
+//
+// Resource List definitions
+//
+
+// begin_ntminiport begin_ntndis
+
+//
+// Defines the Type in the RESOURCE_DESCRIPTOR
+//
+
+typedef enum _CM_RESOURCE_TYPE {
+ CmResourceTypeNull = 0, // Reserved
+ CmResourceTypePort,
+ CmResourceTypeInterrupt,
+ CmResourceTypeMemory,
+ CmResourceTypeDma,
+ CmResourceTypeDeviceSpecific,
+ CmResourceTypeMaximum
+} CM_RESOURCE_TYPE;
+
+//
+// Defines the ShareDisposition in the RESOURCE_DESCRIPTOR
+//
+
+typedef enum _CM_SHARE_DISPOSITION {
+ CmResourceShareUndetermined = 0, // Reserved
+ CmResourceShareDeviceExclusive,
+ CmResourceShareDriverExclusive,
+ CmResourceShareShared
+} CM_SHARE_DISPOSITION;
+
+//
+// Define the bit masks for Flags when type is CmResourceTypeInterrupt
+//
+
+#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE 0
+#define CM_RESOURCE_INTERRUPT_LATCHED 1
+
+//
+// Define the bit masks for Flags when type is CmResourceTypeMemory
+//
+
+#define CM_RESOURCE_MEMORY_READ_WRITE 0x0000
+#define CM_RESOURCE_MEMORY_READ_ONLY 0x0001
+#define CM_RESOURCE_MEMORY_WRITE_ONLY 0x0002
+#define CM_RESOURCE_MEMORY_PREFETCHABLE 0x0004
+
+#define CM_RESOURCE_MEMORY_COMBINEDWRITE 0x0008
+#define CM_RESOURCE_MEMORY_24 0x0010
+
+//
+// Define the bit masks for Flags when type is CmResourceTypePort
+//
+
+#define CM_RESOURCE_PORT_MEMORY 0
+#define CM_RESOURCE_PORT_IO 1
+
+//
+// Define the bit masks for Flags when type is CmResourceTypeDma
+//
+
+#define CM_RESOURCE_DMA_8 0x0000
+#define CM_RESOURCE_DMA_16 0x0001
+#define CM_RESOURCE_DMA_32 0x0002
+
+// end_ntminiport end_ntndis
+
+//
+// This structure defines one type of resource used by a driver.
+//
+// There can only be *1* DeviceSpecificData block. It must be located at
+// the end of all resource descriptors in a full descriptor block.
+//
+
+//
+// BUGBUG Make sure alignment is made properly by compiler; otherwise move
+// flags back to the top of the structure (common to all members of the
+// union).
+//
+// begin_ntndis
+
+#include "pshpack4.h"
+typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
+ UCHAR Type;
+ UCHAR ShareDisposition;
+ USHORT Flags;
+ union {
+
+ //
+ // Range of port numbers, inclusive. These are physical, bus
+ // relative. The value should be the same as the one passed to
+ // HalTranslateBusAddress().
+ //
+
+ struct {
+ PHYSICAL_ADDRESS Start;
+ ULONG Length;
+ } Port;
+
+ //
+ // IRQL and vector. Should be same values as were passed to
+ // HalGetInterruptVector().
+ //
+
+ struct {
+ ULONG Level;
+ ULONG Vector;
+ ULONG Affinity;
+ } Interrupt;
+
+ //
+ // Range of memory addresses, inclusive. These are physical, bus
+ // relative. The value should be the same as the one passed to
+ // HalTranslateBusAddress().
+ //
+
+ struct {
+ PHYSICAL_ADDRESS Start; // 64 bit physical addresses.
+ ULONG Length;
+ } Memory;
+
+ //
+ // Physical DMA channel.
+ //
+
+ struct {
+ ULONG Channel;
+ ULONG Port;
+ ULONG Reserved1;
+ } Dma;
+
+ //
+ // Device Specific information defined by the driver.
+ // The DataSize field indicates the size of the data in bytes. The
+ // data is located immediately after the DeviceSpecificData field in
+ // the structure.
+ //
+
+ struct {
+ ULONG DataSize;
+ ULONG Reserved1;
+ ULONG Reserved2;
+ } DeviceSpecificData;
+ } u;
+} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
+#include "poppack.h"
+
+//
+// A Partial Resource List is what can be found in the ARC firmware
+// or will be generated by ntdetect.com.
+// The configuration manager will transform this structure into a Full
+// resource descriptor when it is about to store it in the regsitry.
+//
+// Note: There must a be a convention to the order of fields of same type,
+// (defined on a device by device basis) so that the fields can make sense
+// to a driver (i.e. when multiple memory ranges are necessary).
+//
+
+typedef struct _CM_PARTIAL_RESOURCE_LIST {
+ USHORT Version;
+ USHORT Revision;
+ ULONG Count;
+ CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
+} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
+
+//
+// A Full Resource Descriptor is what can be found in the registry.
+// This is what will be returned to a driver when it queries the registry
+// to get device information; it will be stored under a key in the hardware
+// description tree.
+//
+// Note: The BusNumber and Type are redundant information, but we will keep
+// it since it allows the driver _not_ to append it when it is creating
+// a resource list which could possibly span multiple buses.
+//
+// Note2: There must a be a convention to the order of fields of same type,
+// (defined on a device by device basis) so that the fields can make sense
+// to a driver (i.e. when multiple memory ranges are necessary).
+//
+
+typedef struct _CM_FULL_RESOURCE_DESCRIPTOR {
+ INTERFACE_TYPE InterfaceType;
+ ULONG BusNumber;
+ CM_PARTIAL_RESOURCE_LIST PartialResourceList;
+} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
+
+//
+// The Resource list is what will be stored by the drivers into the
+// resource map via the IO API.
+//
+
+typedef struct _CM_RESOURCE_LIST {
+ ULONG Count;
+ CM_FULL_RESOURCE_DESCRIPTOR List[1];
+} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
+
+// end_ntndis
+//
+// Define the structures used to interpret configuration data of
+// \\Registry\machine\hardware\description tree.
+// Basically, these structures are used to interpret component
+// sepcific data.
+//
+
+//
+// Define DEVICE_FLAGS
+//
+
+typedef struct _DEVICE_FLAGS {
+ ULONG Failed : 1;
+ ULONG ReadOnly : 1;
+ ULONG Removable : 1;
+ ULONG ConsoleIn : 1;
+ ULONG ConsoleOut : 1;
+ ULONG Input : 1;
+ ULONG Output : 1;
+} DEVICE_FLAGS, *PDEVICE_FLAGS;
+
+//
+// Define Component Information structure
+//
+
+typedef struct _CM_COMPONENT_INFORMATION {
+ DEVICE_FLAGS Flags;
+ ULONG Version;
+ ULONG Key;
+ ULONG AffinityMask;
+} CM_COMPONENT_INFORMATION, *PCM_COMPONENT_INFORMATION;
+
+// end_ntddk end_nthal
+
+// begin_ntddk begin_nthal
+//
+// The following structures are used to interpret x86
+// DeviceSpecificData of CM_PARTIAL_RESOURCE_DESCRIPTOR.
+// (Most of the structures are defined by BIOS. They are
+// not aligned on word (or dword) boundary.
+//
+
+//
+// Define the Rom Block structure
+//
+
+typedef struct _CM_ROM_BLOCK {
+ ULONG Address;
+ ULONG Size;
+} CM_ROM_BLOCK, *PCM_ROM_BLOCK;
+
+// begin_ntminiport begin_ntndis
+
+#include "pshpack1.h"
+
+// end_ntminiport end_ntndis
+
+//
+// Define INT13 driver parameter block
+//
+
+typedef struct _CM_INT13_DRIVE_PARAMETER {
+ USHORT DriveSelect;
+ ULONG MaxCylinders;
+ USHORT SectorsPerTrack;
+ USHORT MaxHeads;
+ USHORT NumberDrives;
+} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
+
+// begin_ntminiport begin_ntndis
+
+//
+// Define Mca POS data block for slot
+//
+
+typedef struct _CM_MCA_POS_DATA {
+ USHORT AdapterId;
+ UCHAR PosData1;
+ UCHAR PosData2;
+ UCHAR PosData3;
+ UCHAR PosData4;
+} CM_MCA_POS_DATA, *PCM_MCA_POS_DATA;
+
+//
+// Memory configuration of eisa data block structure
+//
+
+typedef struct _EISA_MEMORY_TYPE {
+ UCHAR ReadWrite: 1;
+ UCHAR Cached : 1;
+ UCHAR Reserved0 :1;
+ UCHAR Type:2;
+ UCHAR Shared:1;
+ UCHAR Reserved1 :1;
+ UCHAR MoreEntries : 1;
+} EISA_MEMORY_TYPE, *PEISA_MEMORY_TYPE;
+
+typedef struct _EISA_MEMORY_CONFIGURATION {
+ EISA_MEMORY_TYPE ConfigurationByte;
+ UCHAR DataSize;
+ USHORT AddressLowWord;
+ UCHAR AddressHighByte;
+ USHORT MemorySize;
+} EISA_MEMORY_CONFIGURATION, *PEISA_MEMORY_CONFIGURATION;
+
+
+//
+// Interrupt configurationn of eisa data block structure
+//
+
+typedef struct _EISA_IRQ_DESCRIPTOR {
+ UCHAR Interrupt : 4;
+ UCHAR Reserved :1;
+ UCHAR LevelTriggered :1;
+ UCHAR Shared : 1;
+ UCHAR MoreEntries : 1;
+} EISA_IRQ_DESCRIPTOR, *PEISA_IRQ_DESCRIPTOR;
+
+typedef struct _EISA_IRQ_CONFIGURATION {
+ EISA_IRQ_DESCRIPTOR ConfigurationByte;
+ UCHAR Reserved;
+} EISA_IRQ_CONFIGURATION, *PEISA_IRQ_CONFIGURATION;
+
+
+//
+// DMA description of eisa data block structure
+//
+
+typedef struct _DMA_CONFIGURATION_BYTE0 {
+ UCHAR Channel : 3;
+ UCHAR Reserved : 3;
+ UCHAR Shared :1;
+ UCHAR MoreEntries :1;
+} DMA_CONFIGURATION_BYTE0;
+
+typedef struct _DMA_CONFIGURATION_BYTE1 {
+ UCHAR Reserved0 : 2;
+ UCHAR TransferSize : 2;
+ UCHAR Timing : 2;
+ UCHAR Reserved1 : 2;
+} DMA_CONFIGURATION_BYTE1;
+
+typedef struct _EISA_DMA_CONFIGURATION {
+ DMA_CONFIGURATION_BYTE0 ConfigurationByte0;
+ DMA_CONFIGURATION_BYTE1 ConfigurationByte1;
+} EISA_DMA_CONFIGURATION, *PEISA_DMA_CONFIGURATION;
+
+
+//
+// Port description of eisa data block structure
+//
+
+typedef struct _EISA_PORT_DESCRIPTOR {
+ UCHAR NumberPorts : 5;
+ UCHAR Reserved :1;
+ UCHAR Shared :1;
+ UCHAR MoreEntries : 1;
+} EISA_PORT_DESCRIPTOR, *PEISA_PORT_DESCRIPTOR;
+
+typedef struct _EISA_PORT_CONFIGURATION {
+ EISA_PORT_DESCRIPTOR Configuration;
+ USHORT PortAddress;
+} EISA_PORT_CONFIGURATION, *PEISA_PORT_CONFIGURATION;
+
+
+//
+// Eisa slot information definition
+// N.B. This structure is different from the one defined
+// in ARC eisa addendum.
+//
+
+typedef struct _CM_EISA_SLOT_INFORMATION {
+ UCHAR ReturnCode;
+ UCHAR ReturnFlags;
+ UCHAR MajorRevision;
+ UCHAR MinorRevision;
+ USHORT Checksum;
+ UCHAR NumberFunctions;
+ UCHAR FunctionInformation;
+ ULONG CompressedId;
+} CM_EISA_SLOT_INFORMATION, *PCM_EISA_SLOT_INFORMATION;
+
+
+//
+// Eisa function information definition
+//
+
+typedef struct _CM_EISA_FUNCTION_INFORMATION {
+ ULONG CompressedId;
+ UCHAR IdSlotFlags1;
+ UCHAR IdSlotFlags2;
+ UCHAR MinorRevision;
+ UCHAR MajorRevision;
+ UCHAR Selections[26];
+ UCHAR FunctionFlags;
+ UCHAR TypeString[80];
+ EISA_MEMORY_CONFIGURATION EisaMemory[9];
+ EISA_IRQ_CONFIGURATION EisaIrq[7];
+ EISA_DMA_CONFIGURATION EisaDma[4];
+ EISA_PORT_CONFIGURATION EisaPort[20];
+ UCHAR InitializationData[60];
+} CM_EISA_FUNCTION_INFORMATION, *PCM_EISA_FUNCTION_INFORMATION;
+
+//
+// The followings define the way pnp bios information is stored in
+// the registry \\HKEY_LOCAL_MACHINE\HARDWARE\Description\System\
+// MultifunctionAdapter\x key, where x is an integer number indicating
+// adapter instance. The "Identifier" of the key must equal to "PNP BIOS"
+// and the "ConfigurationData" is organized as follow:
+//
+// CM_PNP_BIOS_INSTALLATION_CHECK +
+// CM_PNP_BIOS_DEVICE_NODE for device 1 +
+// CM_PNP_BIOS_DEVICE_NODE for device 2 +
+// ...
+// CM_PNP_BIOS_DEVICE_NODE for device n
+//
+
+//
+// Pnp BIOS device node structure
+//
+
+typedef struct _CM_PNP_BIOS_DEVICE_NODE {
+ USHORT Size;
+ UCHAR Node;
+ ULONG ProductId;
+ UCHAR DeviceType[3];
+ USHORT DeviceAttributes;
+ // followed by AllocatedResourceBlock, PossibleResourceBlock
+ // and CompatibleDeviceId
+} CM_PNP_BIOS_DEVICE_NODE,*PCM_PNP_BIOS_DEVICE_NODE;
+
+//
+// Pnp BIOS Installation check
+//
+
+typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK {
+ UCHAR Signature[4]; // $PnP (ascii)
+ UCHAR Revision;
+ UCHAR Length;
+ USHORT ControlField;
+ UCHAR Checksum;
+ ULONG EventFlagAddress; // Physical address
+ USHORT RealModeEntryOffset;
+ USHORT RealModeEntrySegment;
+ USHORT ProtectedModeEntryOffset;
+ ULONG ProtectedModeCodeBaseAddress;
+ ULONG OemDeviceId;
+ USHORT RealModeDataBaseAddress;
+ ULONG ProtectedModeDataBaseAddress;
+} CM_PNP_BIOS_INSTALLATION_CHECK, *PCM_PNP_BIOS_INSTALLATION_CHECK;
+
+#include "poppack.h"
+
+//
+// Masks for EISA function information
+//
+
+#define EISA_FUNCTION_ENABLED 0x80
+#define EISA_FREE_FORM_DATA 0x40
+#define EISA_HAS_PORT_INIT_ENTRY 0x20
+#define EISA_HAS_PORT_RANGE 0x10
+#define EISA_HAS_DMA_ENTRY 0x08
+#define EISA_HAS_IRQ_ENTRY 0x04
+#define EISA_HAS_MEMORY_ENTRY 0x02
+#define EISA_HAS_TYPE_ENTRY 0x01
+#define EISA_HAS_INFORMATION EISA_HAS_PORT_RANGE + \
+ EISA_HAS_DMA_ENTRY + \
+ EISA_HAS_IRQ_ENTRY + \
+ EISA_HAS_MEMORY_ENTRY + \
+ EISA_HAS_TYPE_ENTRY
+
+//
+// Masks for EISA memory configuration
+//
+
+#define EISA_MORE_ENTRIES 0x80
+#define EISA_SYSTEM_MEMORY 0x00
+#define EISA_MEMORY_TYPE_RAM 0x01
+
+//
+// Returned error code for EISA bios call
+//
+
+#define EISA_INVALID_SLOT 0x80
+#define EISA_INVALID_FUNCTION 0x81
+#define EISA_INVALID_CONFIGURATION 0x82
+#define EISA_EMPTY_SLOT 0x83
+#define EISA_INVALID_BIOS_CALL 0x86
+
+// end_ntminiport end_ntndis
+
+//
+// The following structures are used to interpret mips
+// DeviceSpecificData of CM_PARTIAL_RESOURCE_DESCRIPTOR.
+//
+
+//
+// Device data records for adapters.
+//
+
+//
+// The device data record for the Emulex SCSI controller.
+//
+
+typedef struct _CM_SCSI_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ UCHAR HostIdentifier;
+} CM_SCSI_DEVICE_DATA, *PCM_SCSI_DEVICE_DATA;
+
+//
+// Device data records for controllers.
+//
+
+//
+// The device data record for the Video controller.
+//
+
+typedef struct _CM_VIDEO_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ ULONG VideoClock;
+} CM_VIDEO_DEVICE_DATA, *PCM_VIDEO_DEVICE_DATA;
+
+//
+// The device data record for the SONIC network controller.
+//
+
+typedef struct _CM_SONIC_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ USHORT DataConfigurationRegister;
+ UCHAR EthernetAddress[8];
+} CM_SONIC_DEVICE_DATA, *PCM_SONIC_DEVICE_DATA;
+
+//
+// The device data record for the serial controller.
+//
+
+typedef struct _CM_SERIAL_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ ULONG BaudClock;
+} CM_SERIAL_DEVICE_DATA, *PCM_SERIAL_DEVICE_DATA;
+
+//
+// Device data records for peripherals.
+//
+
+//
+// The device data record for the Monitor peripheral.
+//
+
+typedef struct _CM_MONITOR_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ USHORT HorizontalScreenSize;
+ USHORT VerticalScreenSize;
+ USHORT HorizontalResolution;
+ USHORT VerticalResolution;
+ USHORT HorizontalDisplayTimeLow;
+ USHORT HorizontalDisplayTime;
+ USHORT HorizontalDisplayTimeHigh;
+ USHORT HorizontalBackPorchLow;
+ USHORT HorizontalBackPorch;
+ USHORT HorizontalBackPorchHigh;
+ USHORT HorizontalFrontPorchLow;
+ USHORT HorizontalFrontPorch;
+ USHORT HorizontalFrontPorchHigh;
+ USHORT HorizontalSyncLow;
+ USHORT HorizontalSync;
+ USHORT HorizontalSyncHigh;
+ USHORT VerticalBackPorchLow;
+ USHORT VerticalBackPorch;
+ USHORT VerticalBackPorchHigh;
+ USHORT VerticalFrontPorchLow;
+ USHORT VerticalFrontPorch;
+ USHORT VerticalFrontPorchHigh;
+ USHORT VerticalSyncLow;
+ USHORT VerticalSync;
+ USHORT VerticalSyncHigh;
+} CM_MONITOR_DEVICE_DATA, *PCM_MONITOR_DEVICE_DATA;
+
+//
+// The device data record for the Floppy peripheral.
+//
+
+typedef struct _CM_FLOPPY_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ CHAR Size[8];
+ ULONG MaxDensity;
+ ULONG MountDensity;
+ //
+ // New data fields for version >= 2.0
+ //
+ UCHAR StepRateHeadUnloadTime;
+ UCHAR HeadLoadTime;
+ UCHAR MotorOffTime;
+ UCHAR SectorLengthCode;
+ UCHAR SectorPerTrack;
+ UCHAR ReadWriteGapLength;
+ UCHAR DataTransferLength;
+ UCHAR FormatGapLength;
+ UCHAR FormatFillCharacter;
+ UCHAR HeadSettleTime;
+ UCHAR MotorSettleTime;
+ UCHAR MaximumTrackValue;
+ UCHAR DataTransferRate;
+} CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA;
+
+//
+// The device data record for the Keyboard peripheral.
+// The KeyboardFlags is defined (by x86 BIOS INT 16h, function 02) as:
+// bit 7 : Insert on
+// bit 6 : Caps Lock on
+// bit 5 : Num Lock on
+// bit 4 : Scroll Lock on
+// bit 3 : Alt Key is down
+// bit 2 : Ctrl Key is down
+// bit 1 : Left shift key is down
+// bit 0 : Right shift key is down
+//
+
+typedef struct _CM_KEYBOARD_DEVICE_DATA {
+ USHORT Version;
+ USHORT Revision;
+ UCHAR Type;
+ UCHAR Subtype;
+ USHORT KeyboardFlags;
+} CM_KEYBOARD_DEVICE_DATA, *PCM_KEYBOARD_DEVICE_DATA;
+
+//
+// Declaration of the structure for disk geometries
+//
+
+typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA {
+ ULONG BytesPerSector;
+ ULONG NumberOfCylinders;
+ ULONG SectorsPerTrack;
+ ULONG NumberOfHeads;
+} CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;
+
+// begin_ntminiport
+
+//
+// Defines Resource Options
+//
+
+#define IO_RESOURCE_PREFERRED 0x01
+#define IO_RESOURCE_DEFAULT 0x02
+#define IO_RESOURCE_ALTERNATIVE 0x08
+
+
+//
+// This structure defines one type of resource requested by the driver
+//
+
+typedef struct _IO_RESOURCE_DESCRIPTOR {
+ UCHAR Option;
+ UCHAR Type; // use CM_RESOURCE_TYPE
+ UCHAR ShareDisposition; // use CM_SHARE_DISPOSITION
+ UCHAR Spare1;
+ USHORT Flags; // use CM resource flag defines
+ USHORT Spare2; // align
+
+ union {
+ struct {
+ ULONG Length;
+ ULONG Alignment;
+ PHYSICAL_ADDRESS MinimumAddress;
+ PHYSICAL_ADDRESS MaximumAddress;
+ } Port;
+
+ struct {
+ ULONG Length;
+ ULONG Alignment;
+ PHYSICAL_ADDRESS MinimumAddress;
+ PHYSICAL_ADDRESS MaximumAddress;
+ } Memory;
+
+ struct {
+ ULONG MinimumVector;
+ ULONG MaximumVector;
+ } Interrupt;
+
+ struct {
+ ULONG MinimumChannel;
+ ULONG MaximumChannel;
+ } Dma;
+
+ } u;
+
+} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
+
+// end_ntminiport
+
+
+typedef struct _IO_RESOURCE_LIST {
+ USHORT Version;
+ USHORT Revision;
+
+ ULONG Count;
+ IO_RESOURCE_DESCRIPTOR Descriptors[1];
+} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
+
+
+typedef struct _IO_RESOURCE_REQUIREMENTS_LIST {
+ ULONG ListSize;
+ INTERFACE_TYPE InterfaceType;
+ ULONG BusNumber;
+ ULONG SlotNumber;
+ ULONG Reserved[3];
+ ULONG AlternativeLists;
+ IO_RESOURCE_LIST List[1];
+} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
+
+// end_ntddk end_nthal
+
+#endif // _NTCONFIG_
diff --git a/public/sdk/inc/ntcsrdll.h b/public/sdk/inc/ntcsrdll.h
new file mode 100644
index 000000000..daaddd8ff
--- /dev/null
+++ b/public/sdk/inc/ntcsrdll.h
@@ -0,0 +1,193 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntcsrdll.h
+
+Abstract:
+
+ This module defines the public interfaces of the Client portion of
+ the Client-Server Runtime (Csr) Subsystem.
+
+Author:
+
+ Steve Wood (stevewo) 09-Oct-1990
+
+Revision History:
+
+--*/
+
+#ifndef _NTCSRDLLAPI_
+#define _NTCSRDLLAPI_
+
+#include "ntcsrmsg.h"
+
+typedef
+ULONG
+(*PCSR_CALLBACK_ROUTINE)(
+ IN OUT PCSR_API_MSG ReplyMsg
+ );
+
+typedef struct _CSR_CALLBACK_INFO {
+ ULONG ApiNumberBase;
+ ULONG MaxApiNumber;
+ PCSR_CALLBACK_ROUTINE *CallbackDispatchTable;
+} CSR_CALLBACK_INFO, *PCSR_CALLBACK_INFO;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+CsrClientConnectToServer(
+ IN PWSTR ObjectDirectory,
+ IN ULONG ServertDllIndex,
+ IN PCSR_CALLBACK_INFO CallbackInformation OPTIONAL,
+ IN PVOID ConnectionInformation,
+ IN OUT PULONG ConnectionInformationLength OPTIONAL,
+ OUT PBOOLEAN CalledFromServer OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+CsrClientCallServer(
+ IN OUT PCSR_API_MSG m,
+ IN OUT PCSR_CAPTURE_HEADER CaptureBuffer OPTIONAL,
+ IN CSR_API_NUMBER ApiNumber,
+ IN ULONG ArgLength
+ );
+
+NTSYSAPI
+PCSR_CAPTURE_HEADER
+NTAPI
+CsrAllocateCaptureBuffer(
+ IN ULONG CountMessagePointers,
+ IN ULONG CountCapturePointers,
+ IN ULONG Size
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+CsrFreeCaptureBuffer(
+ IN PCSR_CAPTURE_HEADER CaptureBuffer
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+CsrAllocateMessagePointer(
+ IN OUT PCSR_CAPTURE_HEADER CaptureBuffer,
+ IN ULONG Length,
+ OUT PVOID *Pointer
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+CsrAllocateCapturePointer(
+ IN OUT PCSR_CAPTURE_HEADER CaptureBuffer,
+ IN ULONG Length,
+ OUT PVOID *Pointer
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+CsrCaptureMessageBuffer(
+ IN OUT PCSR_CAPTURE_HEADER CaptureBuffer,
+ IN PVOID Buffer OPTIONAL,
+ IN ULONG Length,
+ OUT PVOID *CapturedBuffer
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+CsrCaptureMessageString(
+ IN OUT PCSR_CAPTURE_HEADER CaptureBuffer,
+ IN PCSTR String,
+ IN ULONG Length,
+ IN ULONG MaximumLength,
+ OUT PSTRING CapturedString
+ );
+
+NTSYSAPI
+PLARGE_INTEGER
+NTAPI
+CsrCaptureTimeout(
+ IN ULONG Milliseconds,
+ OUT PLARGE_INTEGER Timeout
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+CsrProbeForWrite(
+ IN PVOID Address,
+ IN ULONG Length,
+ IN ULONG Alignment
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+CsrProbeForRead(
+ IN PVOID Address,
+ IN ULONG Length,
+ IN ULONG Alignment
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+CsrNewThread(
+ VOID
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+CsrIdentifyAlertableThread(
+ VOID
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+CsrSetPriorityClass(
+ IN HANDLE ProcessHandle,
+ IN OUT PULONG PriorityClass
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+CsrStartProfile(
+ VOID
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+CsrStopProfile(
+ VOID
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+CsrDumpProfile(
+ VOID
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+CsrStopDumpProfile(
+ VOID
+ );
+
+#endif // _NTCSRDLLAPI_
diff --git a/public/sdk/inc/ntcsrmsg.h b/public/sdk/inc/ntcsrmsg.h
new file mode 100644
index 000000000..4263f68db
--- /dev/null
+++ b/public/sdk/inc/ntcsrmsg.h
@@ -0,0 +1,141 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntcsrmsg.h
+
+Abstract:
+
+ This module defines the public message format shared by the client and
+ server sides of the Client-Server Runtime (Csr) Subsystem.
+
+Author:
+
+ Steve Wood (stevewo) 09-Oct-1990
+
+Revision History:
+
+--*/
+
+#ifndef _NTCSRMSG_
+#define _NTCSRMSG_
+
+#define CSR_API_PORT_NAME L"ApiPort"
+
+//
+// This structure is filled in by the client prior to connecting to the CSR
+// server. The CSR server will fill in the OUT fields if prior to accepting
+// the connection.
+//
+
+typedef struct _CSR_API_CONNECTINFO {
+ IN ULONG ExpectedVersion;
+ OUT ULONG CurrentVersion;
+ OUT HANDLE ObjectDirectory;
+ OUT PVOID SharedSectionBase;
+ OUT PVOID SharedStaticServerData;
+ OUT PVOID SharedSectionHeap;
+ OUT ULONG DebugFlags;
+ OUT ULONG SizeOfPebData;
+ OUT ULONG SizeOfTebData;
+ OUT ULONG NumberOfServerDllNames;
+} CSR_API_CONNECTINFO, *PCSR_API_CONNECTINFO;
+
+#define CSR_VERSION 0x10000
+
+//
+// Message format for messages sent from the client to the server
+//
+
+typedef struct _CSR_NULLAPICALL_MSG {
+ LONG CountArguments;
+ ULONG FastArguments[ 12 ];
+ PCHAR *Arguments;
+} CSR_NULLAPICALL_MSG, *PCSR_NULLAPICALL_MSG;
+
+typedef struct _CSR_CLIENTCONNECT_MSG {
+ IN ULONG ServerDllIndex;
+ IN OUT PVOID ConnectionInformation;
+ IN OUT ULONG ConnectionInformationLength;
+} CSR_CLIENTCONNECT_MSG, *PCSR_CLIENTCONNECT_MSG;
+
+typedef struct _CSR_THREADCONNECT_MSG {
+ HANDLE SectionHandle;
+ HANDLE EventPairHandle;
+ OUT PCHAR MessageStack;
+ OUT ULONG MessageStackSize;
+ OUT ULONG RemoteViewDelta;
+} CSR_THREADCONNECT_MSG, *PCSR_THREADCONNECT_MSG;
+
+#define CSR_PROFILE_START 0x00000001
+#define CSR_PROFILE_STOP 0x00000002
+#define CSR_PROFILE_DUMP 0x00000003
+#define CSR_PROFILE_STOPDUMP 0x00000004
+
+typedef struct _CSR_PROFILE_CONTROL_MSG {
+ IN ULONG ProfileControlFlag;
+} CSR_PROFILE_CONTROL_MSG, *PCSR_PROFILE_CONTROL_MSG;
+
+typedef struct _CSR_IDENTIFY_ALERTABLE_MSG {
+ IN CLIENT_ID ClientId;
+} CSR_IDENTIFY_ALERTABLE_MSG, *PCSR_IDENTIFY_ALERTABLE_MSG;
+
+#define CSR_NORMAL_PRIORITY_CLASS 0x00000010
+#define CSR_IDLE_PRIORITY_CLASS 0x00000020
+#define CSR_HIGH_PRIORITY_CLASS 0x00000040
+#define CSR_REALTIME_PRIORITY_CLASS 0x00000080
+
+typedef struct _CSR_SETPRIORITY_CLASS_MSG {
+ IN HANDLE ProcessHandle;
+ IN ULONG PriorityClass;
+} CSR_SETPRIORITY_CLASS_MSG, *PCSR_SETPRIORITY_CLASS_MSG;
+
+typedef struct _CSR_CAPTURE_HEADER {
+ ULONG Length;
+ struct _CSR_CAPTURE_HEADER *RelatedCaptureBuffer;
+ ULONG CountMessagePointers;
+ ULONG CountCapturePointers;
+ PULONG MessagePointerOffsets; // Offsets within CSR_API_MSG of pointers
+ PULONG CapturePointerOffsets; // Offsets within CaptureBuffer of pointers
+ PCHAR FreeSpace;
+} CSR_CAPTURE_HEADER, *PCSR_CAPTURE_HEADER;
+
+typedef ULONG CSR_API_NUMBER;
+
+typedef struct _CSR_API_MSG {
+ PORT_MESSAGE h;
+ union {
+ CSR_API_CONNECTINFO ConnectionRequest;
+ struct {
+ PCSR_CAPTURE_HEADER CaptureBuffer;
+ CSR_API_NUMBER ApiNumber;
+ ULONG ReturnValue;
+ ULONG Reserved;
+ union {
+ CSR_NULLAPICALL_MSG NullApiCall;
+ CSR_CLIENTCONNECT_MSG ClientConnect;
+ CSR_THREADCONNECT_MSG ThreadConnect;
+ CSR_PROFILE_CONTROL_MSG ProfileControl;
+ CSR_IDENTIFY_ALERTABLE_MSG IndentifyAlertable;
+ CSR_SETPRIORITY_CLASS_MSG PriorityClass;
+ ULONG ApiMessageData[30];
+ } u;
+ };
+ };
+} CSR_API_MSG, *PCSR_API_MSG;
+
+#define CSRSRV_SERVERDLL_INDEX 0
+#define CSRSRV_FIRST_API_NUMBER 0
+
+#define CSR_MAKE_API_NUMBER( DllIndex, ApiIndex ) \
+ (CSR_API_NUMBER)(((DllIndex) << 16) | (ApiIndex))
+
+#define CSR_APINUMBER_TO_SERVERDLLINDEX( ApiNumber ) \
+ ((ULONG)((ULONG)(ApiNumber) >> 16))
+
+#define CSR_APINUMBER_TO_APITABLEINDEX( ApiNumber ) \
+ ((ULONG)((USHORT)(ApiNumber)))
+
+#endif // _NTCSRMSG_
diff --git a/public/sdk/inc/ntcsrmsg.inc b/public/sdk/inc/ntcsrmsg.inc
new file mode 100644
index 000000000..91f56df4b
--- /dev/null
+++ b/public/sdk/inc/ntcsrmsg.inc
@@ -0,0 +1,123 @@
+;--------------------------------------------------------------------------;
+; Module Name: ntcsrmsg.inc
+;
+; MASM version of ntcsrmsg.h.
+;
+; Copyright (c) Microsoft Corp. 1990 All Rights Reserved
+;
+; Created: 05-Dec-90
+;
+; History:
+; 05-Dec-90 created by SMeans
+;--------------------------------------------------------------------------;
+
+_CSR_QLPC_STACK STRUC
+Current DD ?
+Base DD ?
+Limit DD ?
+BatchCount DD ?
+Flags DD ?
+_CSR_QLPC_STACK ENDS
+
+_CSR_QLPC_TEB STRUC
+ClientThread DD ?
+Sectionlong DD ?
+EventPairlong DD ?
+MessageStack DD ?
+RemoteViewDelta DD ?
+_CSR_QLPC_TEB ENDS
+
+_CSR_QLPC_API_MSG STRUC
+Msg_Length DD ?
+ApiNumber DD ?
+ReturnValue DD ?
+Action DD ?
+ServerSide DD ?
+CallData DD ?
+_CSR_QLPC_API_MSG ENDS
+
+ActiveRpcHandle EQU 40
+SystemReserved2 EQU 424
+
+api_return equ 0
+server_callback equ 1
+
+BASESRV_SERVERDLL_INDEX equ 1
+BASESRV_FIRST_API_NUMBER equ 0
+
+CONSRV_SERVERDLL_INDEX equ 2
+CONSRV_FIRST_API_NUMBER equ 512
+
+USERSRV_SERVERDLL_INDEX equ 3
+USERSRV_FIRST_API_NUMBER equ 1024
+
+GDISRV_SERVERDLL_INDEX equ 4
+GDISRV_FIRST_API_NUMBER equ 1536
+
+MAX_BATCH_COUNT equ 10
+MIN_BATCH_LEAVE equ 1024
+
+NtCurrentTeb macro
+ mov eax, fs:[PcTeb]
+endm
+
+; macro for getting a pointer to the shared memory stack, establishing a
+; new connection if necessary
+; Returns pointer in edi, corrupts eax, ebx, esi, edi
+SetupStackFrame macro
+ mov eax,fs:[0].ActiveRpcHandle
+
+ifndef SERVER_SIDE
+ or eax, eax
+ jnz @f
+ call _ClientThreadConnect
+ or eax, eax
+ jnz @f
+ ret ;!!! Bug !!!
+@@:
+endif
+ mov edi, [eax+MessageStack]
+ mov esi, edi
+ mov eax, [edi+Base]
+ mov ebx, [edi+Current]
+ add edi, ebx
+ stosd
+
+ add ebx, 4
+ mov [esi+Base], ebx ; stack frame setup
+ endm
+
+; Macro to restore the shared memory stack
+; trashes eax, edi
+RestoreStackFrame macro
+ mov eax,fs:[0].ActiveRpcHandle
+ mov edi,[eax].MessageStack
+ mov eax,[edi].Base
+ sub eax,4
+ mov [edi].Current,eax
+ mov eax,[edi][eax]
+ mov [edi].Base,eax
+ endm
+
+GetQLPCStackPointer macro
+ mov eax,fs:[0].ActiveRpcHandle
+ mov eax,[eax].MessageStack
+ endm
+
+;
+; If the argument pointed to by esi is NULL, copy/skip the NULL (depending
+; on whether we're Outbound) and skip over the code that processes the
+; stuff the argument would point to if it wasn't NULL.
+;
+SkipIfNull macro fOutbound
+ local notnull
+ cmp dword ptr [esi], 0
+ jne notnull
+if fOutbound
+ copy 4
+else
+ add esi, 4
+endif
+ jmp @f
+notnull:
+ endm
diff --git a/public/sdk/inc/ntcsrsrv.h b/public/sdk/inc/ntcsrsrv.h
new file mode 100644
index 000000000..38408088b
--- /dev/null
+++ b/public/sdk/inc/ntcsrsrv.h
@@ -0,0 +1,568 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntcsrsrv.h
+
+Abstract:
+
+ This module defines the public interfaces of the Server portion of
+ the Client-Server Runtime (Csr) Subsystem.
+
+Author:
+
+ Steve Wood (stevewo) 09-Oct-1990
+
+Revision History:
+
+--*/
+
+#ifndef _NTCSRSRVAPI_
+#define _NTCSRSRVAPI_
+
+//
+// Define API decoration for direct importing system DLL references.
+//
+
+#if !defined(_CSRSRV_)
+#define NTCSRAPI DECLSPEC_IMPORT
+#else
+#define NTCSRAPI
+#endif
+
+#include "ntcsrmsg.h"
+
+//
+// NT Session structure allocated in the server context for each new NT
+// session that is a client of the server.
+//
+
+typedef struct _CSR_NT_SESSION {
+ LIST_ENTRY SessionLink;
+ ULONG SessionId;
+ ULONG ReferenceCount;
+ STRING RootDirectory;
+} CSR_NT_SESSION, *PCSR_NT_SESSION;
+
+//
+// Per Thread data structure allocated in the server context for each new
+// client thread that is allowed to communicate with the server.
+//
+
+#define CSR_ALERTABLE_THREAD 0x00000001
+#define CSR_THREAD_TERMINATING 0x00000002
+#define CSR_THREAD_DESTROYED 0x00000004
+
+typedef struct _CSR_THREAD {
+ LARGE_INTEGER CreateTime;
+ LIST_ENTRY Link;
+ LIST_ENTRY HashLinks;
+ CLIENT_ID ClientId;
+
+ struct _CSR_PROCESS *Process;
+ struct _CSR_WAIT_BLOCK *WaitBlock;
+ HANDLE ThreadHandle;
+ ULONG Flags;
+ ULONG ReferenceCount;
+
+ //
+ // deadlock detection aids
+ //
+
+ NTSTATUS ShutDownStatus;
+ HANDLE ServerId;
+
+ ULONG ImpersonateCount;
+
+ PVOID ServerDllPerThreadData[ 1 ]; // Variable length array
+} CSR_THREAD, *PCSR_THREAD;
+
+
+//
+// Per Process data structure allocated in the server context for each new
+// client process that successfully connects to the server.
+//
+
+//
+// 0x00000010 -> 0x000000x0 are used in ntcsrmsg.h
+//
+
+#define CSR_DEBUG_THIS_PROCESS 0x00000001
+#define CSR_DEBUG_PROCESS_TREE 0x00000002
+#define CSR_DEBUG_WIN32SERVER 0x00000004
+
+#define CSR_CREATE_PROCESS_GROUP 0x00000100
+#define CSR_PROCESS_DESTROYED 0x00000200
+#define CSR_PROCESS_LASTTHREADOK 0x00000400
+#define CSR_PROCESS_CONSOLEAPP 0x00000800
+#define CSR_PROCESS_TERMINATED 0x00001000
+
+//
+// Flags defines
+//
+#define CSR_PROCESS_TERMINATING 1
+#define CSR_PROCESS_SHUTDOWNSKIP 2
+
+typedef struct _CSR_PROCESS {
+ CLIENT_ID ClientId;
+ LIST_ENTRY ListLink;
+ LIST_ENTRY ThreadList;
+ struct _CSR_PROCESS *Parent;
+ PCSR_NT_SESSION NtSession;
+ ULONG ExpectedVersion;
+ HANDLE ClientPort;
+ PCH ClientViewBase;
+ PCH ClientViewBounds;
+ HANDLE ProcessHandle;
+ ULONG SequenceNumber;
+ ULONG Flags;
+ ULONG DebugFlags;
+ CLIENT_ID DebugUserInterface;
+
+ ULONG ReferenceCount;
+ ULONG ProcessGroupId;
+ ULONG ProcessGroupSequence;
+
+ ULONG fVDM;
+
+ ULONG ThreadCount;
+
+ UCHAR PriorityClass;
+ UCHAR Spare0;
+ UCHAR Spare1;
+ UCHAR Spare2;
+ ULONG Spare3;
+ ULONG ShutdownLevel;
+ ULONG ShutdownFlags;
+ PVOID ServerDllPerProcessData[ 1 ]; // Variable length array
+} CSR_PROCESS, *PCSR_PROCESS;
+
+
+//
+// All exported API calls define the same interface to the Server Request
+// loop. The return value is any arbritrary 32-bit value, which will be
+// be returned in the ReturnValue field of the reply message.
+//
+
+typedef enum _CSR_REPLY_STATUS {
+ CsrReplyImmediate,
+ CsrReplyPending,
+ CsrClientDied
+} CSR_REPLY_STATUS, *PCSR_REPLY_STATUS;
+
+typedef
+ULONG
+(*PCSR_API_ROUTINE)(
+ IN OUT PCSR_API_MSG ReplyMsg,
+ OUT PCSR_REPLY_STATUS ReplyStatus
+ );
+
+typedef
+ULONG
+(*PCSR_1P_API_ROUTINE)(
+ IN OUT PCSR_API_MSG ReplyMsg
+ );
+
+typedef
+ULONG
+(*PCSR_API_DISPATCH_ROUTINE)(
+ IN OUT PCSR_API_MSG ReplyMsg,
+ IN ULONG ApiIndex
+ );
+
+#define CSR_SERVER_QUERYCLIENTTHREAD() \
+ ((PCSR_THREAD)(NtCurrentTeb()->CsrClientThread))
+
+
+//
+// Server data structure allocated for each Server DLL loaded into the
+// context of the server process.
+//
+
+typedef
+NTSTATUS
+(*PCSR_SERVER_CONNECT_ROUTINE)(
+ IN PCSR_PROCESS Process,
+ IN OUT PVOID ConnectionInformation,
+ IN OUT PULONG ConnectionInformationLength
+ );
+
+typedef
+VOID
+(*PCSR_SERVER_DISCONNECT_ROUTINE)(
+ IN PCSR_PROCESS Process
+ );
+
+typedef
+NTSTATUS
+(*PCSR_SERVER_ADDPROCESS_ROUTINE)(
+ IN PCSR_PROCESS ParentProcess,
+ IN PCSR_PROCESS Process
+ );
+
+typedef
+NTSTATUS
+(*PCSR_SERVER_ADDTHREAD_ROUTINE)(
+ IN PCSR_THREAD t
+ );
+
+typedef
+NTSTATUS
+(*PCSR_SERVER_DELETETHREAD_ROUTINE)(
+ IN PCSR_THREAD t
+ );
+
+typedef
+NTSTATUS
+(*PCSR_SERVER_INITTHREAD_ROUTINE)();
+
+typedef
+VOID
+(*PCSR_SERVER_EXCEPTION_ROUTINE)(
+ IN PEXCEPTION_POINTERS ExceptionPointers,
+ IN BOOLEAN FirstPass
+ );
+
+typedef
+VOID
+(*PCSR_SERVER_HARDERROR_ROUTINE)(
+ IN PCSR_THREAD Thread,
+ IN PHARDERROR_MSG HardErrorMsg
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrServerInitialization(
+ IN ULONG argc,
+ IN PCH argv[]
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrCallServerFromServer(
+ PCSR_API_MSG ReceiveMsg,
+ PCSR_API_MSG ReplyMsg
+ );
+
+//
+// ShutdownProcessRoutine return values
+//
+
+#define SHUTDOWN_KNOWN_PROCESS 1
+#define SHUTDOWN_UNKNOWN_PROCESS 2
+#define SHUTDOWN_CANCEL 3
+
+//
+// Private ShutdownFlags flag
+//
+#define SHUTDOWN_SYSTEMCONTEXT 0x00000004
+#define SHUTDOWN_OTHERCONTEXT 0x00000008
+
+typedef
+ULONG
+(*PCSR_SERVER_SHUTDOWNPROCESS_ROUTINE)(
+ IN PCSR_PROCESS Process,
+ IN ULONG Flags,
+ IN BOOLEAN fFirstPass
+ );
+
+NTCSRAPI
+ULONG
+NTAPI
+CsrComputePriorityClass(
+ IN PCSR_PROCESS Process
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrShutdownProcesses(
+ PLUID LuidCaller,
+ ULONG Flags
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrGetProcessLuid(
+ HANDLE ProcessHandle,
+ PLUID LuidProcess
+ );
+
+typedef struct _CSR_SERVER_DLL {
+ ULONG Length;
+ HANDLE CsrInitializationEvent;
+ STRING ModuleName;
+ HANDLE ModuleHandle;
+ ULONG ServerDllIndex;
+ ULONG ServerDllConnectInfoLength;
+ ULONG ApiNumberBase;
+ ULONG MaxApiNumber;
+ union {
+ PCSR_API_ROUTINE *ApiDispatchTable;
+ PCSR_1P_API_ROUTINE *QuickApiDispatchTable;
+ };
+ PBOOLEAN ApiServerValidTable;
+ PSZ *ApiNameTable;
+ ULONG PerProcessDataLength;
+ ULONG PerThreadDataLength;
+ PCSR_SERVER_CONNECT_ROUTINE ConnectRoutine;
+ PCSR_SERVER_DISCONNECT_ROUTINE DisconnectRoutine;
+ PCSR_SERVER_ADDTHREAD_ROUTINE AddThreadRoutine;
+ PCSR_SERVER_DELETETHREAD_ROUTINE DeleteThreadRoutine;
+ PCSR_SERVER_INITTHREAD_ROUTINE InitThreadRoutine;
+ PCSR_SERVER_EXCEPTION_ROUTINE ExceptionRoutine;
+ PCSR_SERVER_HARDERROR_ROUTINE HardErrorRoutine;
+ PVOID SharedStaticServerData;
+ PCSR_SERVER_ADDPROCESS_ROUTINE AddProcessRoutine;
+ PCSR_SERVER_SHUTDOWNPROCESS_ROUTINE ShutdownProcessRoutine;
+ PCSR_API_DISPATCH_ROUTINE ApiDispatchRoutine;
+} CSR_SERVER_DLL, *PCSR_SERVER_DLL;
+
+typedef
+NTSTATUS
+(*PCSR_SERVER_DLL_INIT_ROUTINE)(
+ IN PCSR_SERVER_DLL LoadedServerDll
+ );
+
+typedef
+VOID
+(*PCSR_ATTACH_COMPLETE_ROUTINE)(
+ VOID
+ );
+
+NTCSRAPI
+VOID
+NTAPI
+CsrReferenceThread(
+ PCSR_THREAD t
+ );
+
+NTCSRAPI
+VOID
+NTAPI
+CsrDereferenceThread(
+ PCSR_THREAD t
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrCreateProcess(
+ IN HANDLE ProcessHandle,
+ IN HANDLE ThreadHandle,
+ IN PCLIENT_ID ClientId,
+ IN PCSR_NT_SESSION Session,
+ IN ULONG DebugFlags,
+ IN PCLIENT_ID DebugUserInterface OPTIONAL
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrDebugProcess(
+ IN ULONG TargetProcessId,
+ IN PCLIENT_ID DebugUserInterface,
+ IN PCSR_ATTACH_COMPLETE_ROUTINE AttachCompleteRoutine
+ );
+
+NTCSRAPI
+VOID
+NTAPI
+CsrDereferenceProcess(
+ PCSR_PROCESS p
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrDestroyProcess(
+ IN PCLIENT_ID ClientId,
+ IN NTSTATUS ExitStatus
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrLockProcessByClientId(
+ IN HANDLE UniqueProcessId,
+ OUT PCSR_PROCESS *Process
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrUnlockProcess(
+ IN PCSR_PROCESS Process
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrLockThreadByClientId(
+ IN HANDLE UniqueThreadId,
+ OUT PCSR_THREAD *Thread
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrUnlockThread(
+ IN PCSR_THREAD Thread
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrCreateThread(
+ IN PCSR_PROCESS Process,
+ IN HANDLE ThreadHandle,
+ IN PCLIENT_ID ClientId
+ );
+
+NTCSRAPI
+PCSR_THREAD
+NTAPI
+CsrLocateThreadInProcess(
+ IN PCSR_PROCESS Process,
+ IN PCLIENT_ID ClientId
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrCreateRemoteThread(
+ IN HANDLE ThreadHandle,
+ IN PCLIENT_ID ClientId
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrDestroyThread(
+ IN PCLIENT_ID ClientId
+ );
+
+//
+// WaitFlags
+//
+
+typedef
+BOOLEAN
+(*CSR_WAIT_ROUTINE)(
+ IN PLIST_ENTRY WaitQueue,
+ IN PCSR_THREAD WaitingThread,
+ IN PCSR_API_MSG WaitReplyMessage,
+ IN PVOID WaitParameter,
+ IN PVOID SatisfyParameter1,
+ IN PVOID SatisfyParameter2,
+ IN ULONG WaitFlags
+ );
+
+typedef struct _CSR_WAIT_BLOCK {
+ ULONG Length;
+ LIST_ENTRY Link;
+ LIST_ENTRY UserLink;
+ PVOID WaitParameter;
+ PCSR_THREAD WaitingThread;
+ CSR_WAIT_ROUTINE WaitRoutine;
+ CSR_API_MSG WaitReplyMessage;
+} CSR_WAIT_BLOCK, *PCSR_WAIT_BLOCK;
+
+NTCSRAPI
+BOOLEAN
+NTAPI
+CsrCreateWait(
+ IN PLIST_ENTRY WaitQueue,
+ IN CSR_WAIT_ROUTINE WaitRoutine,
+ IN PCSR_THREAD WaitingThread,
+ IN OUT PCSR_API_MSG WaitReplyMessage,
+ IN PVOID WaitParameter,
+ IN PLIST_ENTRY UserLinkListHead OPTIONAL
+ );
+
+NTCSRAPI
+VOID
+NTAPI
+CsrDereferenceWait(
+ IN PLIST_ENTRY WaitQueue
+ );
+
+NTCSRAPI
+BOOLEAN
+NTAPI
+CsrNotifyWait(
+ IN PLIST_ENTRY WaitQueue,
+ IN BOOLEAN SatisfyAll,
+ IN PVOID SatisfyParameter1,
+ IN PVOID SatisfyParameter2
+ );
+
+NTCSRAPI
+VOID
+NTAPI
+CsrDestroyWait(
+ IN PCSR_WAIT_BLOCK WaitBlock
+ );
+
+NTCSRAPI
+PVOID
+NTAPI
+CsrAddStaticServerThread(
+ IN HANDLE ThreadHandle,
+ IN PCLIENT_ID ClientId,
+ IN ULONG Flags
+ );
+
+NTCSRAPI
+PCSR_THREAD
+NTAPI
+CsrConnectToUser(
+ VOID
+ );
+
+NTCSRAPI
+BOOLEAN
+NTAPI
+CsrImpersonateClient(
+ IN PCSR_THREAD Thread
+ );
+
+NTCSRAPI
+BOOLEAN
+NTAPI
+CsrRevertToSelf(
+ VOID
+ );
+
+NTCSRAPI
+VOID
+NTAPI
+CsrSetForegroundPriority(
+ IN PCSR_PROCESS Process
+ );
+
+NTCSRAPI
+VOID
+NTAPI
+CsrSetBackgroundPriority(
+ IN PCSR_PROCESS Process
+ );
+
+NTCSRAPI
+EXCEPTION_DISPOSITION
+NTAPI
+CsrUnhandledExceptionFilter(
+ IN PEXCEPTION_POINTERS ExceptionInfo
+ );
+
+typedef struct _CSR_FAST_ANSI_OEM_TABLES {
+ char OemToAnsiTable[256];
+ char AnsiToOemTable[256];
+} CSR_FAST_ANSI_OEM_TABLES, *PCSR_FAST_ANSI_OEM_TABLES;
+
+#endif // _NTCSRSRVAPI_
diff --git a/public/sdk/inc/ntdbg.h b/public/sdk/inc/ntdbg.h
new file mode 100644
index 000000000..b27b66a1a
--- /dev/null
+++ b/public/sdk/inc/ntdbg.h
@@ -0,0 +1,1027 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntdbg.h
+
+Abstract:
+
+ This module contains the public data structures, data types,
+ and procedures exported by the NT Dbg subsystem.
+
+Author:
+
+ Mark Lucovsky (markl) 19-Jan-1990
+
+Revision History:
+
+--*/
+
+#ifndef _NTDBG_
+#define _NTDBG_
+
+#include <nt.h>
+
+//
+// DbgKm Apis are from the kernel component (Dbgk) thru a process
+// debug port.
+//
+
+#define DBGKM_MSG_OVERHEAD 8
+
+#define DBGKM_API_MSG_LENGTH(TypeSize) \
+ sizeof(DBGKM_APIMSG)<<16 | (DBGKM_MSG_OVERHEAD + (TypeSize))
+
+#define DBGKM_FORMAT_API_MSG(m,Number,TypeSize) \
+ (m).h.u1.Length = DBGKM_API_MSG_LENGTH((TypeSize)); \
+ (m).h.u2.ZeroInit = LPC_DEBUG_EVENT; \
+ (m).ApiNumber = (Number)
+
+typedef enum _DBGKM_APINUMBER {
+ DbgKmExceptionApi,
+ DbgKmCreateThreadApi,
+ DbgKmCreateProcessApi,
+ DbgKmExitThreadApi,
+ DbgKmExitProcessApi,
+ DbgKmLoadDllApi,
+ DbgKmUnloadDllApi,
+ DbgKmMaxApiNumber
+} DBGKM_APINUMBER;
+
+// begin_windbgkd
+
+typedef struct _DBGKM_EXCEPTION {
+ EXCEPTION_RECORD ExceptionRecord;
+ ULONG FirstChance;
+} DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
+
+// end_windbgkd
+
+typedef struct _DBGKM_CREATE_THREAD {
+ ULONG SubSystemKey;
+ PVOID StartAddress;
+} DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD;
+
+typedef struct _DBGKM_CREATE_PROCESS {
+ ULONG SubSystemKey;
+ HANDLE FileHandle;
+ PVOID BaseOfImage;
+ ULONG DebugInfoFileOffset;
+ ULONG DebugInfoSize;
+ DBGKM_CREATE_THREAD InitialThread;
+} DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS;
+
+typedef struct _DBGKM_EXIT_THREAD {
+ NTSTATUS ExitStatus;
+} DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD;
+
+typedef struct _DBGKM_EXIT_PROCESS {
+ NTSTATUS ExitStatus;
+} DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS;
+
+typedef struct _DBGKM_LOAD_DLL {
+ HANDLE FileHandle;
+ PVOID BaseOfDll;
+ ULONG DebugInfoFileOffset;
+ ULONG DebugInfoSize;
+} DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL;
+
+typedef struct _DBGKM_UNLOAD_DLL {
+ PVOID BaseAddress;
+} DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
+
+typedef struct _DBGKM_APIMSG {
+ PORT_MESSAGE h;
+ DBGKM_APINUMBER ApiNumber;
+ NTSTATUS ReturnedStatus;
+ union {
+ DBGKM_EXCEPTION Exception;
+ DBGKM_CREATE_THREAD CreateThread;
+ DBGKM_CREATE_PROCESS CreateProcessInfo;
+ DBGKM_EXIT_THREAD ExitThread;
+ DBGKM_EXIT_PROCESS ExitProcess;
+ DBGKM_LOAD_DLL LoadDll;
+ DBGKM_UNLOAD_DLL UnloadDll;
+ } u;
+} DBGKM_APIMSG, *PDBGKM_APIMSG;
+
+//
+// DbgSrv Messages are from Dbg subsystem to emulation subsystem.
+// The only defined message at this time is continue
+//
+
+#define DBGSRV_MSG_OVERHEAD ( 12 )
+
+#define DBGSRV_API_MSG_LENGTH(TypeSize) \
+ sizeof(DBGSRV_APIMSG)<<16 | (DBGSRV_MSG_OVERHEAD + (TypeSize))
+
+#define DBGSRV_FORMAT_API_MSG(m,Number,TypeSize,CKey) \
+ (m).h.u1.Length = DBGSRV_API_MSG_LENGTH((TypeSize)); \
+ (m).h.u2.ZeroInit = 0L; \
+ (m).ApiNumber = (Number); \
+ (m).ContinueKey = (PVOID)(CKey)
+
+typedef enum _DBGSRV_APINUMBER {
+ DbgSrvContinueApi,
+ DbgSrvMaxApiNumber
+} DBGSRV_APINUMBER;
+
+typedef struct _DBGSRV_APIMSG {
+ PORT_MESSAGE h;
+ DBGSRV_APINUMBER ApiNumber;
+ NTSTATUS ReturnedStatus;
+ PVOID ContinueKey;
+} DBGSRV_APIMSG, *PDBGSRV_APIMSG;
+
+//
+//
+// DbgSs Apis are from the system service emulation subsystems to the Dbg
+// subsystem
+//
+
+typedef enum _DBG_STATE {
+ DbgIdle,
+ DbgReplyPending,
+ DbgCreateThreadStateChange,
+ DbgCreateProcessStateChange,
+ DbgExitThreadStateChange,
+ DbgExitProcessStateChange,
+ DbgExceptionStateChange,
+ DbgBreakpointStateChange,
+ DbgSingleStepStateChange,
+ DbgLoadDllStateChange,
+ DbgUnloadDllStateChange
+} DBG_STATE, *PDBG_STATE;
+
+#define DBGSS_MSG_OVERHEAD (12 + sizeof(CLIENT_ID) )
+
+#define DBGSS_API_MSG_LENGTH(TypeSize) \
+ sizeof(DBGSS_APIMSG)<<16 | (DBGSS_MSG_OVERHEAD + (TypeSize))
+
+#define DBGSS_FORMAT_API_MSG(m,Number,TypeSize,pApp,CKey) \
+ (m).h.u1.Length = DBGSS_API_MSG_LENGTH((TypeSize)); \
+ (m).h.u2.ZeroInit = 0L; \
+ (m).ApiNumber = (Number); \
+ (m).AppClientId = *(pApp); \
+ (m).ContinueKey = (PVOID)(CKey)
+
+typedef enum _DBGSS_APINUMBER {
+ DbgSsExceptionApi,
+ DbgSsCreateThreadApi,
+ DbgSsCreateProcessApi,
+ DbgSsExitThreadApi,
+ DbgSsExitProcessApi,
+ DbgSsLoadDllApi,
+ DbgSsUnloadDllApi,
+ DbgSsMaxApiNumber
+} DBGSS_APINUMBER;
+
+typedef struct _DBGSS_CREATE_PROCESS {
+ CLIENT_ID DebugUiClientId;
+ DBGKM_CREATE_PROCESS NewProcess;
+} DBGSS_CREATE_PROCESS, *PDBGSS_CREATE_PROCESS;
+
+typedef struct _DBGSS_APIMSG {
+ PORT_MESSAGE h;
+ DBGKM_APINUMBER ApiNumber;
+ NTSTATUS ReturnedStatus;
+ CLIENT_ID AppClientId;
+ PVOID ContinueKey;
+ union {
+ DBGKM_EXCEPTION Exception;
+ DBGKM_CREATE_THREAD CreateThread;
+ DBGSS_CREATE_PROCESS CreateProcessInfo;
+ DBGKM_EXIT_THREAD ExitThread;
+ DBGKM_EXIT_PROCESS ExitProcess;
+ DBGKM_LOAD_DLL LoadDll;
+ DBGKM_UNLOAD_DLL UnloadDll;
+ } u;
+} DBGSS_APIMSG, *PDBGSS_APIMSG;
+
+#define DBGUI_MSG_OVERHEAD 8
+
+#define DBGUI_API_MSG_LENGTH(TypeSize) \
+ sizeof(DBGUI_APIMSG)<<16 | (DBGUI_MSG_OVERHEAD + (TypeSize))
+
+#define DBGUI_FORMAT_API_MSG(m,Number,TypeSize) \
+ (m).h.u1.Length = DBGUI_API_MSG_LENGTH((TypeSize)); \
+ (m).h.u2.ZeroInit = 0L; \
+ (m).ApiNumber = (Number)
+
+typedef enum _DBGUI_APINUMBER {
+ DbgUiWaitStateChangeApi,
+ DbgUiContinueApi,
+ DbgUiMaxI
+CsrGetProcessLuid(
+ HANDLE ProcessHandle,
+ PLUID LuidProcess
+ );
+
+typedef struct _CSR_SERVER_DLL {
+ ULONG Length;
+ HANDLE CsrInitializationEvent;
+ STRING ModuleName;
+ HANDLE ModuleHandle;
+ ULONG ServerDllIndex;
+ ULONG ServerDllConnectInfoLength;
+ ULONG ApiNumberBase;
+ ULONG MaxApiNumber;
+ union {
+ PCSR_API_ROUTINE *ApiDispatchTable;
+ PCSR_1P_API_ROUTINE *QuickApiDispatchTable;
+ };
+ PBOOLEAN ApiServerValidTable;
+ PSZ *ApiNameTable;
+ ULONG PerProcessDataLength;
+ ULONG PerThreadDataLength;
+ PCSR_SERVER_CONNECT_ROUTINE ConnectRoutine;
+ PCSR_SERVER_DISCONNECT_ROUTINE DisconnectRoutine;
+ PCSR_SERVER_ADDTHREAD_ROUTINE AddThreadRoutine;
+ PCSR_SERVER_DELETETHREAD_ROUTINE DeleteThreadRoutine;
+ PCSR_SERVER_INITTHREAD_ROUTINE InitThreadRoutine;
+ PCSR_SERVER_EXCEPTION_ROUTINE ExceptionRoutine;
+ PCSR_SERVER_HARDERROR_ROUTINE HardErrorRoutine;
+ PVOID SharedStaticServerData;
+ PCSR_SERVER_ADDPROCESS_ROUTINE AddProcessRoutine;
+ PCSR_SERVER_SHUTDOWNPROCESS_ROUTINE ShutdownProcessRoutine;
+ PCSR_API_DISPATCH_ROUTINE ApiDispatchRoutine;
+} CSR_SERVER_DLL, *PCSR_SERVER_DLL;
+
+typedef
+NTSTATUS
+(*PCSR_SERVER_DLL_INIT_ROUTINE)(
+ IN PCSR_SERVER_DLL LoadedServerDll
+ );
+
+typedef
+VOID
+(*PCSR_ATTACH_COMPLETE_ROUTINE)(
+ VOID
+ );
+
+NTCSRAPI
+VOID
+NTAPI
+CsrReferenceThread(
+ PCSR_THREAD t
+ );
+
+NTCSRAPI
+VOID
+NTAPI
+CsrDereferenceThread(
+ PCSR_THREAD t
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrCreateProcess(
+ IN HANDLE ProcessHandle,
+ IN HANDLE ThreadHandle,
+ IN PCLIENT_ID ClientId,
+ IN PCSR_NT_SESSION Session,
+ IN ULONG DebugFlags,
+ IN PCLIENT_ID DebugUserInterface OPTIONAL
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrDebugProcess(
+ IN ULONG TargetProcessId,
+ IN PCLIENT_ID DebugUserInterface,
+ IN PCSR_ATTACH_COMPLETE_ROUTINE AttachCompleteRoutine
+ );
+
+NTCSRAPI
+VOID
+NTAPI
+CsrDereferenceProcess(
+ PCSR_PROCESS p
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrDestroyProcess(
+ IN PCLIENT_ID ClientId,
+ IN NTSTATUS ExitStatus
+ );
+
+NTCSRAPI
+NTSTATUS
+NTAPI
+CsrLockProcessByClientId(
+ IN HANDLE UniqueProcessId,
+ OUT PCSR_PROCESS *Process
+ ); ¨àNTCSoutine OPTIONAL,
+ IN PDBGSS_DBGKM_APIMSG_FILTER KmApiMsgFilter OPTIONAL
+ );
+
+typedef
+VOID
+(*PDBGSS_HANDLE_MSG_ROUTINE)(
+ IN PDBGKM_APIMSG ApiMsg,
+ IN HANDLE ReplyEvent OPTIONAL
+ );
+
+//
+// DbgUi APIs
+//
+
+NTSTATUS
+NTAPI
+DbgUiConnectToDbg( VOID );
+
+NTSTATUS
+NTAPI
+DbgUiWaitStateChange (
+ OUT PDBGUI_WAIT_STATE_CHANGE StateChange,
+ IN PLARGE_INTEGER Timeout OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+DbgUiContinue (
+ IN PCLIENT_ID AppClientId,
+ IN NTSTATUS ContinueStatus
+ );
+
+// begin_windbgkd
+
+//
+// DbgKd APIs are for the portable kernel debugger
+//
+
+//
+// KD_PACKETS are the low level data format used in KD. All packets
+// begin with a packet leader, byte count, packet type. The sequence
+// for accepting a packet is:
+//
+// - read 4 bytes to get packet leader. If read times out (10 seconds)
+// with a short read, or if packet leader is incorrect, then retry
+// the read.
+//
+// - next read 2 byte packet type. If read times out (10 seconds) with
+// a short read, or if packet type is bad, then start again looking
+// for a packet leader.
+//
+// - next read 4 byte packet Id. If read times out (10 seconds)
+// with a short read, or if packet Id is not what we expect, then
+// ask for resend and restart again looking for a packet leader.
+//
+// - next read 2 byte byte count. If read times out (10 seconds) with
+// a short read, or if byte count is greater than PACKET_MAX_SIZE,
+// then start again looking for a packet leader.
+//
+// - next read 4 byte packet data checksum.
+//
+// - The packet data immediately follows the packet. There should be
+// ByteCount bytes following the packet header. Read the packet
+// data, if read times out (10 seconds) then start again looking for
+// a packet leader.
+//
+
+
+typedef struct _KD_PACKET {
+ ULONG PacketLeader;
+ USHORT PacketType;
+ USHORT ByteCount;
+ ULONG PacketId;
+ ULONG Checksum;
+} KD_PACKET, *PKD_PACKET;
+
+
+#define PACKET_MAX_SIZE 4000
+#define INITIAL_PACKET_ID 0x80800000 // DON't use 0
+#define SYNC_PACKET_ID 0x00000800 // Or in with INITIAL_PACKET_ID
+ // to force a packet ID reset.
+
+//
+// BreakIn packet
+//
+
+#define BREAKIN_PACKET 0x62626262
+#define BREAKIN_PACKET_BYTE 0x62
+
+//
+// Packet lead in sequence
+//
+
+#define PACKET_LEADER 0x30303030 //0x77000077
+#define PACKET_LEADER_BYTE 0x30
+
+#define CONTROL_PACKET_LEADER 0x69696969
+#define CONTROL_PACKET_LEADER_BYTE 0x69
+
+//
+// Packet Trailing Byte
+//
+
+#define PACKET_TRAILING_BYTE 0xAA
+
+//
+// Packet Types
+//
+
+#define PACKET_TYPE_UNUSED 0
+#define PACKET_TYPE_KD_STATE_CHANGE 1
+#define PACKET_TYPE_KD_STATE_MANIPULATE 2
+#define PACKET_TYPE_KD_DEBUG_IO 3
+#define PACKET_TYPE_KD_ACKNOWLEDGE 4 // Packet-control type
+#define PACKET_TYPE_KD_RESEND 5 // Packet-control type
+#define PACKET_TYPE_KD_RESET 6 // Packet-control type
+#define PACKET_TYPE_MAX 7
+
+//
+// If the packet type is PACKET_TYPE_KD_STATE_CHANGE, then
+// the format of the packet data is as follows:
+//
+
+#define DbgKdExceptionStateChange 0x00003030L
+#define DbgKdLoadSymbolsStateChange 0x00003031L
+
+//
+// Pathname Data follows directly
+//
+
+typedef struct _DBGKD_LOAD_SYMBOLS {
+ ULONG PathNameLength;
+ PVOID BaseOfDll;
+ ULONG ProcessId;
+ ULONG CheckSum;
+ ULONG SizeOfImage;
+ BOOLEAN UnloadSymbols;
+} DBGKD_LOAD_SYMBOLS, *PDBGKD_LOAD_SYMBOLS;
+
+typedef struct _DBGKD_WAIT_STATE_CHANGE {
+ ULONG NewState;
+ USHORT ProcessorLevel;
+ USHORT Processor;
+ ULONG NumberProcessors;
+ PVOID Thread;
+ PVOID ProgramCounter;
+ union {
+ DBGKM_EXCEPTION Exception;
+ DBGKD_LOAD_SYMBOLS LoadSymbols;
+ } u;
+ DBGKD_CONTROL_REPORT ControlReport;
+ CONTEXT Context;
+} DBGKD_WAIT_STATE_CHANGE, *PDBGKD_WAIT_STATE_CHANGE;
+
+//
+// If the packet type is PACKET_TYPE_KD_STATE_MANIPULATE, then
+// the format of the packet data is as follows:
+//
+// Api Numbers for state manipulation
+//
+
+#define DbgKdReadVirtualMemoryApi 0x00003130L
+#define DbgKdWriteVirtualMemoryApi 0x00003131L
+#define DbgKdGetContextApi 0x00003132L
+#define DbgKdSetContextApi 0x00003133L
+#define DbgKdWriteBreakPointApi 0x00003134L
+#define DbgKdRestoreBreakPointApi 0x00003135L
+#define DbgKdContinueApi 0x00003136L
+#define DbgKdReadControlSpaceApi 0x00003137L
+#define DbgKdWriteControlSpaceApi 0x00003138L
+#define DbgKdReadIoSpaceApi 0x00003139L
+#define DbgKdWriteIoSpaceApi 0x0000313AL
+#define DbgKdRebootApi 0x0000313BL
+#define DbgKdContinueApi2 0x0000313CL
+#define DbgKdReadPhysicalMemoryApi 0x0000313DL
+#define DbgKdWritePhysicalMemoryApi 0x0000313EL
+#define DbgKdQuerySpecialCallsApi 0x0000313FL
+#define DbgKdSetSpecialCallApi 0x00003140L
+#define DbgKdClearSpecialCallsApi 0x00003141L
+#define DbgKdSetInternalBreakPointApi 0x00003142L
+#define DbgKdGetInternalBreakPointApi 0x00003143L
+#define DbgKdReadIoSpaceExtendedApi 0x00003144L
+#define DbgKdWriteIoSpaceExtendedApi 0x00003145L
+#define DbgKdGetVersionApi 0x00003146L
+#define DbgKdWriteBreakPointExApi 0x00003147L
+#define DbgKdRestoreBreakPointExApi 0x00003148L
+#define DbgKdCauseBugCheckApi 0x00003149L
+#define DbgKdSwitchProcessor 0x00003150L
+#define DbgKdPageInApi 0x00003151L
+#define DbgKdReadMachineSpecificRegister 0x00003152L
+#define DbgKdWriteMachineSpecificRegister 0x00003153L
+
+//
+// Response is a read memory message with data following
+//
+
+typedef struct _DBGKD_READ_MEMORY {
+ PVOID TargetBaseAddress;
+ ULONG TransferCount;
+ ULONG ActualBytesRead;
+} DBGKD_READ_MEMORY, *PDBGKD_READ_MEMORY;
+
+//
+// Data follows directly
+//
+
+typedef struct _DBGKD_WRITE_MEMORY {
+ PVOID TargetBaseAddress;
+ ULONG TransferCount;
+ ULONG ActualBytesWritten;
+} DBGKD_WRITE_MEMORY, *PDBGKD_WRITE_MEMORY;
+
+//
+// Response is a get context message with a full context record following
+//
+
+typedef struct _DBGKD_GET_CONTEXT {
+ ULONG ContextFlags;
+} DBGKD_GET_CONTEXT, *PDBGKD_GET_CONTEXT;
+
+//
+// Full Context record follows
+//
+
+typedef struct _DBGKD_SET_CONTEXT {
+ ULONG ContextFlags;
+} DBGKD_SET_CONTEXT, *PDBGKD_SET_CONTEXT;
+
+#define BREAKPOINT_TABLE_SIZE 32 // max number supported by kernel
+
+typedef struct _DBGKD_WRITE_BREAKPOINT {
+ PVOID BreakPointAddress;
+ ULONG BreakPointHandle;
+} DBGKD_WRITE_BREAKPOINT, *PDBGKD_WRITE_BREAKPOINT;
+
+typedef struct _DBGKD_RESTORE_BREAKPOINT {
+ ULONG BreakPointHandle;
+} DBGKD_RESTORE_BREAKPOINT, *PDBGKD_RESTORE_BREAKPOINT;
+
+typedef struct _DBGKD_BREAKPOINTEX {
+ ULONG BreakPointCount;
+ NTSTATUS ContinueStatus;
+} DBGKD_BREAKPOINTEX, *PDBGKD_BREAKPOINTEX;
+
+typedef struct _DBGKD_CONTINUE {
+ NTSTATUS ContinueStatus;
+} DBGKD_CONTINUE, *PDBGKD_CONTINUE;
+
+typedef struct _DBGKD_CONTINUE2 {
+ NTSTATUS ContinueStatus;
+ DBGKD_CONTROL_SET ControlSet;
+} DBGKD_CONTINUE2, *PDBGKD_CONTINUE2;
+
+typedef struct _DBGKD_READ_WRITE_IO {
+ ULONG DataSize; // 1, 2, 4
+ PVOID IoAddress;
+ ULONG DataValue;
+} DBGKD_READ_WRITE_IO, *PDBGKD_READ_WRITE_IO;
+
+typedef struct _DBGKD_READ_WRITE_IO_EXTENDED {
+ ULONG DataSize; // 1, 2, 4
+ ULONG InterfaceType;
+ ULONG BusNumber;
+ ULONG AddressSpace;
+ PVOID IoAddress;
+ ULONG DataValue;
+} DBGKD_READ_WRITE_IO_EXTENDED, *PDBGKD_READ_WRITE_IO_EXTENDED;
+
+typedef struct _DBGKD_READ_WRITE_MSR {
+ ULONG Msr;
+ ULONG DataValueLow;
+ ULONG DataValueHigh;
+} DBGKD_READ_WRITE_MSR, *PDBGKD_READ_WRITE_MSR;
+
+
+typedef struct _DBGKD_QUERY_SPECIAL_CALLS {
+ ULONG NumberOfSpecialCalls;
+ // ULONG SpecialCalls[];
+} DBGKD_QUERY_SPECIAL_CALLS, *PDBGKD_QUERY_SPECIAL_CALLS;
+
+typedef struct _DBGKD_SET_SPECIAL_CALL {
+ ULONG SpecialCall;
+} DBGKD_SET_SPECIAL_CALL, *PDBGKD_SET_SPECIAL_CALL;
+
+typedef struct _DBGKD_SET_INTERNAL_BREAKPOINT {
+ ULONG BreakpointAddress;
+ ULONG Flags;
+} DBGKD_SET_INTERNAL_BREAKPOINT, *PDBGKD_SET_INTERNAL_BREAKPOINT;
+
+typedef struct _DBGKD_GET_INTERNAL_BREAKPOINT {
+ ULONG BreakpointAddress;
+ ULONG Flags;
+ ULONG Calls;
+ ULONG MaxCallsPerPeriod;
+ ULONG MinInstructions;
+ ULONG MaxInstructions;
+ ULONG TotalInstructions;
+} DBGKD_GET_INTERNAL_BREAKPOINT, *PDBGKD_GET_INTERNAL_BREAKPOINT;
+
+#define DBGKD_INTERNAL_BP_FLAG_COUNTONLY 0x00000001 // don't count instructions
+#define DBGKD_INTERNAL_BP_FLAG_INVALID 0x00000002 // disabled BP
+#define DBGKD_INTERNAL_BP_FLAG_SUSPENDED 0x00000004 // temporarily suspended
+#define DBGKD_INTERNAL_BP_FLAG_DYING 0x00000008 // kill on exit
+
+typedef struct _DBGKD_GET_VERSION {
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ USHORT ProtocolVersion;
+ USHORT Flags;
+ ULONG KernBase;
+ ULONG PsLoadedModuleList;
+ USHORT MachineType;
+
+ //
+ // help for walking stacks with user callbacks:
+ //
+
+ //
+ // The address of the thread structure is provided in the
+ // WAIT_STATE_CHANGE packet. This is the offset from the base of
+ // the thread structure to the pointer to the kernel stack frame
+ // for the currently active usermode callback.
+ //
+
+ USHORT ThCallbackStack; // offset in thread data
+
+ //
+ // these values are offsets into that frame:
+ //
+
+ USHORT NextCallback; // saved pointer to next callback frame
+ USHORT FramePointer; // saved frame pointer
+
+ //
+ // Address of the kernel callout routine.
+ //
+
+ ULONG KiCallUserMode; // kernel routine
+
+ //
+ // Address of the usermode entry point for callbacks.
+ //
+
+ ULONG KeUserCallbackDispatcher; // address in ntdll
+
+ //
+ // DbgBreakPointWithStatus is a function which takes an argument
+ // and hits a breakpoint. This field contains the address of the
+ // breakpoint instruction. When the debugger sees a breakpoint
+ // at this address, it may retrieve the argument from the first
+ // argument register, or on x86 the eax register.
+ //
+
+ ULONG BreakpointWithStatus; // address of breakpoint
+
+ ULONG Reserved4;
+} DBGKD_GET_VERSION, *PDBGKD_GET_VERSION;
+
+#define DBGKD_VERS_FLAG_MP 0x0001 // kernel is MP built
+
+typedef struct _DBGKD_PAGEIN {
+ ULONG Address;
+ ULONG ContinueStatus;
+} DBGKD_PAGEIN, *PDBGKD_PAGEIN;
+
+typedef struct _DBGKD_MANIPULATE_STATE {
+ ULONG ApiNumber;
+ USHORT ProcessorLevel;
+ USHORT Processor;
+ NTSTATUS ReturnStatus;
+ union {
+ DBGKD_READ_MEMORY ReadMemory;
+ DBGKD_WRITE_MEMORY WriteMemory;
+ DBGKD_GET_CONTEXT GetContext;
+ DBGKD_SET_CONTEXT SetContext;
+ DBGKD_WRITE_BREAKPOINT WriteBreakPoint;
+ DBGKD_RESTORE_BREAKPOINT RestoreBreakPoint;
+ DBGKD_CONTINUE Continue;
+ DBGKD_CONTINUE2 Continue2;
+ DBGKD_READ_WRITE_IO ReadWriteIo;
+ DBGKD_READ_WRITE_IO_EXTENDED ReadWriteIoExtended;
+ DBGKD_QUERY_SPECIAL_CALLS QuerySpecialCalls;
+ DBGKD_SET_SPECIAL_CALL SetSpecialCall;
+ DBGKD_SET_INTERNAL_BREAKPOINT SetInternalBreakpoint;
+ DBGKD_GET_INTERNAL_BREAKPOINT GetInternalBreakpoint;
+ DBGKD_GET_VERSION GetVersion;
+ DBGKD_BREAKPOINTEX BreakPointEx;
+ DBGKD_PAGEIN PageIn;
+ DBGKD_READ_WRITE_MSR ReadWriteMsr;
+ } u;
+} DBGKD_MANIPULATE_STATE, *PDBGKD_MANIPULATE_STATE;
+
+//
+// This is the format for the trace data passed back from the kernel to
+// the debugger to describe multiple calls that have returned since the
+// last trip back. The basic format is that there are a bunch of these
+// (4 byte) unions stuck together. Each union is of one of two types: a
+// 4 byte unsigned long interger, or a three field struct, describing a
+// call (where "call" is delimited by returning or exiting the symbol
+// scope). If the number of instructions executed is too big to fit
+// into a USHORT -1, then the Instructions field has
+// TRACE_DATA_INSTRUCTIONS_BIG and the next union is a LongNumber
+// containing the real number of instructions executed.
+//
+// The very first union returned in each callback is a LongNumber
+// containing the number of unions returned (including the "size"
+// record, os it's always at least 1 even if there's no data to return).
+//
+// This is all returned to the debugger when one of two things
+// happens:
+//
+// 1) The pc moves out of all defined symbol ranges
+// 2) The buffer of trace data entries is filled.
+//
+// The "trace done" case is hacked around on the debugger side. It
+// guarantees that the pc address that indicates a trace exit never
+// winds up in a defined symbol range.
+//
+// The only other complexity in this system is handling the SymbolNumber
+// table. This table is kept in parallel by the kernel and the
+// debugger. When the PC exits a known symbol range, the Begin and End
+// symbol ranges are set by the debugger and are allocated to the next
+// symbol slot upon return. "The next symbol slot" means the numerical
+// next slot number, unless we've filled all slots, in which case it is
+// #0. (ie., allocation is cyclic and not LRU or something). The
+// SymbolNumber table is flushed when a SpecialCalls call is made (ie.,
+// at the beginning of the WatchTrace).
+//
+
+typedef union _DBGKD_TRACE_DATA {
+ struct {
+ UCHAR SymbolNumber;
+ CHAR LevelChange;
+ USHORT Instructions;
+ } s;
+ ULONG LongNumber;
+} DBGKD_TRACE_DATA, *PDBGKD_TRACE_DATA;
+
+#define TRACE_DATA_INSTRUCTIONS_BIG 0xffff
+
+#define TRACE_DATA_BUFFER_MAX_SIZE 40
+
+//
+// If the packet type is PACKET_TYPE_KD_DEBUG_IO, then
+// the format of the packet data is as follows:
+//
+
+#define DbgKdPrintStringApi 0x00003230L
+#define DbgKdGetStringApi 0x00003231L
+
+//
+// For print string, the Null terminated string to print
+// immediately follows the message
+//
+typedef struct _DBGKD_PRINT_STRING {
+ ULONG LengthOfString;
+} DBGKD_PRINT_STRING, *PDBGKD_PRINT_STRING;
+
+//
+// For get string, the Null terminated promt string
+// immediately follows the message. The LengthOfStringRead
+// field initially contains the maximum number of characters
+// to read. Upon reply, this contains the number of bytes actually
+// read. The data read immediately follows the message.
+//
+//
+typedef struct _DBGKD_GET_STRING {
+ ULONG LengthOfPromptString;
+ ULONG LengthOfStringRead;
+} DBGKD_GET_STRING, *PDBGKD_GET_STRING;
+
+typedef struct _DBGKD_DEBUG_IO {
+ ULONG ApiNumber;
+ USHORT ProcessorLevel;
+ USHORT Processor;
+ union {
+ DBGKD_PRINT_STRING PrintString;
+ DBGKD_GET_STRING GetString;
+ } u;
+} DBGKD_DEBUG_IO, *PDBGKD_DEBUG_IO;
+
+
+VOID
+NTAPI
+DbgKdSendBreakIn(
+ VOID
+ );
+
+PUCHAR
+NTAPI
+DbgKdGets(
+ PUCHAR Buffer,
+ USHORT Length
+ );
+// end_windbgkd
+
+NTSTATUS
+NTAPI
+DbgKdConnectAndInitialize(
+ IN ULONG CommunicationPortNumber OPTIONAL,
+ IN PSTRING BootImageName OPTIONAL,
+ IN PUSHORT LogHandle
+ );
+
+// begin_windbgkd
+
+NTSTATUS
+NTAPI
+DbgKdWaitStateChange(
+ OUT PDBGKD_WAIT_STATE_CHANGE StateChange,
+ OUT PVOID Buffer,
+ IN ULONG BufferLength
+ );
+
+NTSTATUS
+NTAPI
+DbgKdContinue (
+ IN NTSTATUS ContinueStatus
+ );
+
+NTSTATUS
+NTAPI
+DbgKdContinue2 (
+ IN NTSTATUS ContinueStatus,
+ IN DBGKD_CONTROL_SET ControlSet
+ );
+
+NTSTATUS
+NTAPI
+DbgKdReadVirtualMemory(
+ IN PVOID TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN ULONG TransferCount,
+ OUT PULONG ActualBytesRead OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+DbgKdWriteVirtualMemory(
+ IN PVOID TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN ULONG TransferCount,
+ OUT PULONG ActualBytesWritten OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+DbgKdReadPhysicalMemory(
+ IN PHYSICAL_ADDRESS TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN ULONG TransferCount,
+ OUT PULONG ActualBytesRead OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+DbgKdWritePhysicalMemory(
+ IN PHYSICAL_ADDRESS TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN ULONG TransferCount,
+ OUT PULONG ActualBytesWritten OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+DbgKdReadControlSpace(
+ IN USHORT Processor,
+ IN PVOID TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN ULONG TransferCount,
+ OUT PULONG ActualBytesRead OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+DbgKdWriteControlSpace(
+ IN USHORT Processor,
+ IN PVOID TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN ULONG TransferCount,
+ OUT PULONG ActualBytesWritten OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+DbgKdReadIoSpace(
+ IN PVOID IoAddress,
+ OUT PVOID ReturnedData,
+ IN ULONG DataSize
+ );
+
+NTSTATUS
+NTAPI
+DbgKdWriteIoSpace(
+ IN PVOID IoAddress,
+ IN ULONG DataValue,
+ IN ULONG DataSize
+ );
+
+NTSTATUS
+NTAPI
+DbgKdReadMsr(
+ IN ULONG MsrReg,
+ OUT PULONGLONG MsrValue
+ );
+
+NTSTATUS
+NTAPI
+DbgKdWriteMsr(
+ IN ULONG MsrReg,
+ IN ULONGLONG MsrValue
+ );
+
+
+NTSTATUS
+NTAPI
+DbgKdGetContext(
+ IN USHORT Processor,
+ IN OUT PCONTEXT Context
+ );
+
+NTSTATUS
+NTAPI
+DbgKdSetContext(
+ IN USHORT Processor,
+ IN PCONTEXT Context
+ );
+
+NTSTATUS
+NTAPI
+DbgKdWriteBreakPoint(
+ IN PVOID BreakPointAddress,
+ OUT PULONG BreakPointHandle
+ );
+
+NTSTATUS
+NTAPI
+DbgKdRestoreBreakPoint(
+ IN ULONG BreakPointHandle
+ );
+
+NTSTATUS
+NTAPI
+DbgKdReboot(
+ VOID
+ );
+
+#ifdef _X86_
+NTSTATUS
+NTAPI
+DbgKdLookupSelector(
+ IN USHORT Processor,
+ IN OUT PDESCRIPTOR_TABLE_ENTRY pDescriptorTableEntry
+ );
+#endif
+
+// end_windbgkd
+
+//
+// Dbg Status Codes
+//
+
+//
+// Success values
+//
+
+#define DBG_EXCEPTION_HANDLED ((NTSTATUS)0x00010001L) // windbgkd
+
+#define DBG_CONTINUE ((NTSTATUS)0x00010002L) // winnt
+
+//
+// Informational values
+//
+
+#define DBG_REPLY_LATER ((NTSTATUS)0x40010001L)
+
+#define DBG_UNABLE_TO_PROVIDE_HANDLE ((NTSTATUS)0x40010002L)
+
+#define DBG_TERMINATE_THREAD ((NTSTATUS)0x40010003L) // winnt
+
+#define DBG_TERMINATE_PROCESS ((NTSTATUS)0x40010004L) // winnt
+
+#define DBG_CONTROL_C ((NTSTATUS)0x40010005L) // winnt
+
+#define DBG_PRINTEXCEPTION_C ((NTSTATUS)0x40010006L)
+
+#define DBG_RIPEXCEPTION ((NTSTATUS)0x40010007L)
+
+#define DBG_CONTROL_BREAK ((NTSTATUS)0x40010008L) // winnt
+
+//
+// Warning values
+//
+
+#define DBG_EXCEPTION_NOT_HANDLED ((NTSTATUS)0x80010001L) // winnt
+
+//
+// Error values
+//
+
+#define DBG_NO_STATE_CHANGE ((NTSTATUS)0xc0010001L)
+
+#define DBG_APP_NOT_IDLE ((NTSTATUS)0xc0010002L)
+
+
+
+#endif // _NTDBG_
diff --git a/public/sdk/inc/ntddaux.h b/public/sdk/inc/ntddaux.h
new file mode 100644
index 000000000..13840dde4
--- /dev/null
+++ b/public/sdk/inc/ntddaux.h
@@ -0,0 +1,73 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1992-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddaux.h
+
+Abstract:
+
+ This include file defines all constants and types for
+ accessing an NT auxiliary sound devices.
+
+Author:
+
+ Robin Speed (RobinSp) - 24-Aug-1992
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDAUX_
+#define _NTDDAUX_
+
+#include <ntddsnd.h> // general sound stuff
+
+#define IOCTL_AUX_BASE 0x0100
+
+//
+// Device Name - this string is the name of the device. It is the name
+// that when added to the name of the root of the device tree and with
+// the device number appended, gives the name of the device required for
+// a call to NtOpenFile.
+// So for example, if the root is \Device and the Device type is
+// MMAux and the device number is 2, the full name is \Device\MMAux2
+//
+
+#define DD_AUX_DEVICE_NAME "\\Device\\MMAux"
+#define DD_AUX_DEVICE_NAME_U L"\\Device\\MMAux"
+
+//
+// WAVE device driver IOCTL set
+//
+
+#define IOCTL_AUX_GET_CAPABILITIES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_AUX_BASE + 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_AUX_SET_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_AUX_BASE + 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_AUX_GET_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_AUX_BASE + 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+//
+// Input and output are AUX_DD_VOLUME structure.
+// Completes when real device volume != volume passed in.
+// Returns new volume
+//
+#define IOCTL_SOUND_GET_CHANGED_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_AUX_BASE + 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+//
+// Aux volume structure
+//
+
+typedef struct _AUX_DD_VOLUME {
+ ULONG Left;
+ ULONG Right;
+} AUX_DD_VOLUME, *PAUX_DD_VOLUME;
+
+#define AUX_DD_MAX_VOLUME 0xFFFFFFFF // Maximum volume
+
+//
+// Data returned by IOCTL_AUX_GET_CAPABILITIES is AUXCAPSW structure
+// defined in mmsystem.h
+//
+
+#endif // _NTDDAUX_
+
diff --git a/public/sdk/inc/ntddbeep.h b/public/sdk/inc/ntddbeep.h
new file mode 100644
index 000000000..daaf98931
--- /dev/null
+++ b/public/sdk/inc/ntddbeep.h
@@ -0,0 +1,59 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddbeep.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ the beep device.
+
+Author:
+
+ Lee A. Smith (lees) 02-Aug-1991.
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDBEEP_
+#define _NTDDBEEP_
+
+//
+// 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 DD_BEEP_DEVICE_NAME "\\Device\\Beep"
+#define DD_BEEP_DEVICE_NAME_U L"\\Device\\Beep"
+
+//
+// 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_BEEP_SET CTL_CODE(FILE_DEVICE_BEEP, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// NtDeviceIoControlFile OutputBuffer record structures for
+// IOCTL_BEEP_SET.
+//
+
+typedef struct _BEEP_SET_PARAMETERS {
+ ULONG Frequency;
+ ULONG Duration;
+} BEEP_SET_PARAMETERS, *PBEEP_SET_PARAMETERS;
+
+#define BEEP_FREQUENCY_MINIMUM 0x25
+#define BEEP_FREQUENCY_MAXIMUM 0x7FFF
+
+#endif // _NTDDBEEP_
+
diff --git a/public/sdk/inc/ntddbrow.h b/public/sdk/inc/ntddbrow.h
new file mode 100644
index 000000000..1bf12b52d
--- /dev/null
+++ b/public/sdk/inc/ntddbrow.h
@@ -0,0 +1,448 @@
+/*++ BUILD Version: 0005 // Increment this if a change has global effects
+
+Copyright (c) 1987-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddbrow.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the datagram receiver device driver, better know as the
+ Browser.
+
+Authors:
+
+ Larry Osterman (larryo) & Rita Wong (ritaw) 25-Mar-1991
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDBROW_
+#define _NTDDBROW_
+
+#include <windef.h>
+#include <lmcons.h>
+#include <lmwksta.h>
+
+//
+// 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 DD_BROWSER_DEVICE_NAME "\\Device\\LanmanDatagramReceiver"
+
+#define DD_BROWSER_DEVICE_NAME_U L"\\Device\\LanmanDatagramReceiver"
+
+//
+// The file system name as returned by
+// NtQueryInformationVolume(FileFsAttributeInformation)
+//
+
+#define DD_BROWSER_NAME "LMBROWSER"
+
+//
+// Name of the event used to force the scavenger thread to announce the
+// server.
+//
+
+#define SERVER_ANNOUNCE_EVENT_W L"\\LanmanServerAnnounceEvent"
+
+#define BOWSER_CONFIG_PARAMETERS L"Parameters"
+
+#define BOWSER_CONFIG_IRP_STACK_SIZE L"IrpStackSize"
+
+#define BOWSER_CONFIG_MAILSLOT_THRESHOLD L"MailslotDatagramThreshold"
+#define BOWSER_CONFIG_GETBLIST_THRESHOLD L"GetBrowserListThreshold"
+
+#define BOWSER_CONFIG_SERVER_DELETION_THRESHOLD L"BrowserServerDeletionThreshold"
+#define BOWSER_CONFIG_DOMAIN_DELETION_THRESHOLD L"BrowserDomainDeletionThreshold"
+#define BOWSER_CONFIG_FIND_MASTER_TIMEOUT L"BrowserFindMasterTimeout"
+#define BOWSER_CONFIG_MINIMUM_CONFIGURED_BROWSER L"BrowserMinimumConfiguredBrowsers"
+#define BROWSER_CONFIG_BACKUP_RECOVERY_TIME L"BackupBrowserRecoveryTime"
+
+
+
+//
+// This defines the revision of the NT browser.
+//
+// To guarantee that a newer browser is preferred over an older version, bump
+// this version number.
+//
+
+#define BROWSER_ELECTION_VERSION 0x0001
+
+#define BROWSER_VERSION_MAJOR 0x01
+#define BROWSER_VERSION_MINOR 0x0F
+
+//
+// Number of seconds a GetBrowserServerList request will wait until it forces
+// an election.
+//
+
+#define BOWSER_GETBROWSERLIST_TIMEOUT 1
+
+//
+// Number of retries of the GetBrowserServerList request we will issue before we
+// give up.
+//
+
+#define BOWSER_GETBROWSERLIST_RETRY_COUNT 3
+
+//
+// The browser service on a master browser will query the driver with this
+// frequency.
+//
+
+#define BROWSER_QUERY_DRIVER_FREQUENCY 30
+
+//
+// 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!
+//
+//
+// Method = 00 - Buffer both input and output buffers for the request
+// Method = 01 - Buffer input, map output buffer to an MDL as an IN buff
+// Method = 10 - Buffer input, map output buffer to an MDL as an OUT buff
+// Method = 11 - Do not buffer either the input or output
+//
+
+#define IOCTL_DGR_BASE FILE_DEVICE_NETWORK_BROWSER
+
+#define _BROWSER_CONTROL_CODE(request, method, access) \
+ CTL_CODE(IOCTL_DGR_BASE, request, method, access)
+
+#define IOCTL_LMDR_START _BROWSER_CONTROL_CODE(0x001, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_STOP _BROWSER_CONTROL_CODE(0x002, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_LMDR_ADD_NAME _BROWSER_CONTROL_CODE(0x003, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_DELETE_NAME _BROWSER_CONTROL_CODE(0x004, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_ADD_NAME_DOM _BROWSER_CONTROL_CODE(0x003, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_DELETE_NAME_DOM _BROWSER_CONTROL_CODE(0x004, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_LMDR_ENUMERATE_NAMES _BROWSER_CONTROL_CODE(0x005, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_ENUMERATE_SERVERS _BROWSER_CONTROL_CODE(0x006, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_LMDR_BIND_TO_TRANSPORT _BROWSER_CONTROL_CODE(0x007, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_BIND_TO_TRANSPORT_DOM _BROWSER_CONTROL_CODE(0x007, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_LMDR_ENUMERATE_TRANSPORTS _BROWSER_CONTROL_CODE(0x008, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_LMDR_UNBIND_FROM_TRANSPORT _BROWSER_CONTROL_CODE(0x008, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_UNBIND_FROM_TRANSPORT_DOM _BROWSER_CONTROL_CODE(0x009, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+// Begin Never Used
+#define IOCTL_LMDR_GET_HINT_SIZE _BROWSER_CONTROL_CODE(0x009, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_GET_LOGONSTATUS_REQUEST _BROWSER_CONTROL_CODE(0x00A, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+// End Never Used
+
+#define IOCTL_LMDR_GET_BROWSER_SERVER_LIST _BROWSER_CONTROL_CODE(0x00C, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_GET_MASTER_NAME _BROWSER_CONTROL_CODE(0x00D, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_BECOME_BACKUP _BROWSER_CONTROL_CODE(0x00E, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_BECOME_MASTER _BROWSER_CONTROL_CODE(0x00F, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+// Begin Never Used
+#define IOCTL_LMDR_WAIT_FOR_BROWSER_REQUEST _BROWSER_CONTROL_CODE(0x010, METHOD_BUFFERED, FILE_ANY_ACCESS)
+// End Never Used
+
+#define IOCTL_LMDR_WAIT_FOR_MASTER_ANNOUNCE _BROWSER_CONTROL_CODE(0x011, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_WRITE_MAILSLOT _BROWSER_CONTROL_CODE(0x012, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_UPDATE_STATUS _BROWSER_CONTROL_CODE(0x013, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_CHANGE_ROLE _BROWSER_CONTROL_CODE(0x014, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_NEW_MASTER_NAME _BROWSER_CONTROL_CODE(0x015, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_QUERY_STATISTICS _BROWSER_CONTROL_CODE(0x016, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_RESET_STATISTICS _BROWSER_CONTROL_CODE(0x017, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_DEBUG_CALL _BROWSER_CONTROL_CODE(0x018, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_NETLOGON_MAILSLOT_READ _BROWSER_CONTROL_CODE(0x019, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_NETLOGON_MAILSLOT_ENABLE _BROWSER_CONTROL_CODE(0x020, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_IP_ADDRESS_CHANGED _BROWSER_CONTROL_CODE(0x021, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_LMDR_ENABLE_DISABLE_TRANSPORT _BROWSER_CONTROL_CODE(0x022, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// Identifies the data structure type for Buffer 2 of each IoCtl
+//
+
+typedef enum _IOCTL_LMDR_STRUCTURES {
+ EnumerateNames, // IOCTL_LMDR_ENUMERATE_NAMES
+ EnumerateServers, // IOCTL_LMDR_ENUMERATE_SERVERS
+ EnumerateXports, // IOCTL_LMDR_ENUMERATE_TRANSPORTS
+ Datagram
+} IOCTL_LMDR_STRUCTURES;
+
+
+typedef enum _DGRECEIVER_NAME_TYPE {
+ ComputerName = 1, // Computer name (signature 0), unique
+ PrimaryDomain, // Primary domain (signature 0), group
+ LogonDomain, // Logon domain (signature 0), group
+ OtherDomain, // Other domain (signature 0), group
+ DomainAnnouncement, // domain announce (__MSBROWSE__), group
+ MasterBrowser, // Master browser (domain name, signature 1d), unique
+ BrowserElection, // Election name (domain name, signature 1e), group
+ BrowserServer, // Server name (signature 20)
+ DomainName, // DC Domain name (domain name, signature 1c)
+ PrimaryDomainBrowser, // PDC Browser name (domain name, signature 1b), unique
+ AlternateComputerName // Computer name (signature 0), unique
+} DGRECEIVER_NAME_TYPE, *PDGRECEIVER_NAME_TYPE;
+
+
+//
+// LAN Man Redirector Request Packet used by the Workstation service
+// to pass parameters to the Redirector through Buffer 1 of
+// NtDeviceIoControlFile.
+//
+// Additional input or output of each IoCtl is found in Buffer 2.
+//
+
+#define LMDR_REQUEST_PACKET_VERSION_DOM 0x00000007L // Structure version.
+#define LMDR_REQUEST_PACKET_VERSION 0x00000006L // Structure version.
+
+typedef struct _LMDR_REQUEST_PACKET {
+
+ IOCTL_LMDR_STRUCTURES Type; // Type of structure in Buffer 2
+ ULONG Version; // Version of structure in Buffer 2
+ ULONG Level; // Level of information or force level
+ LUID LogonId; // User logon session identifier
+
+ UNICODE_STRING TransportName;
+ UNICODE_STRING EmulatedDomainName;
+
+ union {
+
+ struct {
+ ULONG NumberOfMailslotBuffers;
+ ULONG NumberOfServerAnnounceBuffers;
+ ULONG IllegalDatagramThreshold;
+ ULONG EventLogResetFrequency;
+ BOOLEAN LogElectionPackets;
+ } Start; // IN
+
+ struct {
+ DGRECEIVER_NAME_TYPE Type; // Type of name
+ ULONG DgReceiverNameLength; // Length of datagram receiver name
+ WCHAR Name[1]; // Null terminated datagram receiver name.
+ } AddDelName;
+
+ struct {
+ ULONG EntriesRead; // OUT Number of entries returned
+ ULONG TotalEntries; // OUT Total entries available.
+ ULONG TotalBytesNeeded; // OUT Number of bytes needed for API
+ ULONG ResumeHandle; // IN OUT Resume handle
+ } EnumerateNames; // OUT Buffer2 is an array of DGRECEIVE
+
+ struct {
+ ULONG EntriesRead; // OUT Number of entries returned
+ ULONG TotalEntries; // OUT Total entries available
+ ULONG TotalBytesNeeded; // OUT Total bytes needed to read all
+ // entries
+ ULONG ResumeHandle; // IN OUT Resume handle
+ ULONG ServerType; // IN Type of servers to enumerate
+ // (defined in lmserver.h)
+ ULONG DomainNameLength; // IN Length of domain name
+ WCHAR DomainName[1]; // IN Name of domain to enumerate servers
+ // from
+
+ } EnumerateServers; // OUT Buffer2 contains array of
+ // ServerInfo structures
+
+ struct {
+ ULONG EntriesRead; // OUT Number of entries returned
+ ULONG TotalEntries; // OUT Total entries available
+ ULONG TotalBytesNeeded; // OUT Total bytes needed to read all
+ // entries
+ ULONG ResumeHandle; // IN OUT Resume handle
+
+ } EnumerateTransports; // OUT Buffer2 contains array of
+
+ struct {
+ ULONG TransportNameLength; // not including terminator
+ WCHAR TransportName[1]; // Name of transport provider
+ } Bind; // IN
+
+ struct {
+ ULONG TransportNameLength; // not including terminator
+ WCHAR TransportName[1]; // Name of transport provider
+ } Unbind; // IN
+
+// Begin Never Used
+ struct {
+ ULONG ServerInfoHintSize; // Number of bytes needed for buffer
+ // to enumerate servers.
+ ULONG DGReceiverNamesHintSize;
+ // Number of bytes needed for buffer
+ // to enumerate datagram names.
+ } GetHintSize; // OUT
+
+ struct {
+ ULONG MessageLength; // Length of request message in
+ // Buffer2 including opcode
+ WCHAR SenderName[1]; // Null terminated name of logon
+ // request sender
+ } LogonRequest; // OUT
+// End Never Used
+
+ struct {
+ ULONG EntriesRead; // OUT Number of entries returned
+ ULONG TotalEntries; // OUT Total entries available.
+ ULONG TotalBytesNeeded; // OUT Number of bytes needed for API
+ ULONG ResumeHandle; // IN OUT Resume handle (Ignored)
+ USHORT DomainNameLength; // IN Length of domain name.
+ BOOLEAN ForceRescan; // IN Discard internal list and re-query.
+ BOOLEAN UseBrowseList; // IN TRUE if use server list (not net)
+ WCHAR DomainName[1]; // IN Name of domain to retreive domain for
+ } GetBrowserServerList;
+
+// Begin Never Used
+ struct {
+ LARGE_INTEGER TimeReceived; // Time request was received.
+ LARGE_INTEGER TimeQueued; // Time request was queued.
+ LARGE_INTEGER TimeQueuedToBrowserThread; // Time request was queued.
+ ULONG RequestorNameLength; // Length of name requesting list
+ ULONG Token; // Client token.
+ USHORT RequestedCount; // Number of entries requested.
+ WCHAR Name[1]; // IN Name of transport, OUT name of requestor
+ } WaitForBrowserServerRequest;
+// End Never Used
+
+ struct {
+ ULONG MasterNameLength; // Length of name requesting list
+ WCHAR Name[1]; // IN Name of transport, OUT name of master
+ } WaitForMasterAnnouncement;
+
+ struct {
+ ULONG MasterNameLength; // OUT Length of master for domain
+ WCHAR Name[1]; // IN Name of transport, OUT name of master
+ } GetMasterName;
+
+ struct {
+ DGRECEIVER_NAME_TYPE DestinationNameType; // IN Name type of name to send.
+
+ ULONG MailslotNameLength; // IN Length of mailslot name.
+ // If 0, use default (\MAILSLOT\BROWSE)
+ ULONG NameLength; // IN Destination name length.
+ WCHAR Name[1]; // IN Name of destination
+ } SendDatagram;
+
+ struct {
+ ULONG NewStatus;
+ ULONG NumberOfServersInTable;
+ BOOLEAN IsLanmanNt;
+ BOOLEAN IsPrimaryDomainController;
+// Begin Never Used
+ BOOLEAN IsMemberDomain;
+// End Never Used
+ BOOLEAN IsDomainMaster;
+ BOOLEAN MaintainServerList;
+ } UpdateStatus;
+
+ struct {
+ UCHAR RoleModification;
+ } ChangeRole;
+
+ struct {
+ DWORD DebugTraceBits; // IN New debug trace bits.
+ BOOL OpenLog; // IN True if we should open log file
+ BOOL CloseLog; // IN True if we should close log file
+ BOOL TruncateLog; // IN True if we should truncate log
+ WCHAR TraceFileName[1]; // IN If OpenLog, LogFileName (NT file)
+ } Debug;
+
+ struct {
+ DWORD MaxMessageCount; // IN number of netlogon messages to queue
+ } NetlogonMailslotEnable; // Use 0 to disable queuing
+
+ struct {
+ BOOL EnableTransport; // IN True if we should enable transport
+ BOOL PreviouslyEnabled; // Returns if the transport was previously enabled
+ } EnableDisableTransport;
+
+ } Parameters;
+
+} LMDR_REQUEST_PACKET, *PLMDR_REQUEST_PACKET;
+
+//
+// The NETLOGON_MAILSLOT structure describes a mailslot messages received by
+// the browser's IOCTL_LMDR_NETLOGON_MAILSLOT_READ
+//
+// A NETLOGON_MAILSLOT message is also returned to Netlogon when an
+// interesting PNP event occurs. In that case, the fields will be set as
+// follows:
+//
+// MailslotNameSize: 0 indicating this is a PNP event.
+// MailslotNameOffset: One of the NETLOGON_PNP_OPCODEs indicating the
+// event being notified.
+// TransportName*: Name of transport being affected.
+//
+
+typedef enum _NETLOGON_PNP_OPCODE {
+ NlPnpMailslotMessage,
+ NlPnpTransportBind,
+ NlPnpTransportUnbind,
+ NlPnpNewIpAddress
+} NETLOGON_PNP_OPCODE, *PNETLOGON_PNP_OPCODE;
+
+typedef struct {
+ LARGE_INTEGER TimeReceived;
+ DWORD MailslotNameSize; // Unicode name of mailslot message was received on
+ DWORD MailslotNameOffset;
+ DWORD TransportNameSize; // Unicode name of transport message was received on
+ DWORD TransportNameOffset;
+ DWORD MailslotMessageSize;// Actual mailslot message
+ DWORD MailslotMessageOffset;
+ DWORD DestinationNameSize;// Unicode name of computer or domain message was received on
+ DWORD DestinationNameOffset;
+} NETLOGON_MAILSLOT, *PNETLOGON_MAILSLOT;
+
+
+//
+// The DGRECEIVE structure describes the list of names that have been
+// added to the datagram browser.
+//
+
+typedef struct _DGRECEIVE_NAMES {
+ UNICODE_STRING DGReceiverName;
+ DGRECEIVER_NAME_TYPE Type;
+} DGRECEIVE_NAMES, *PDGRECEIVE_NAMES;
+
+
+typedef struct _LMDR_TRANSPORT_LIST {
+ ULONG NextEntryOffset; // Offset of next entry (dword aligned)
+ ULONG TransportNameLength;
+ ULONG Flags; // Flags for transport
+ WCHAR TransportName[1];
+} LMDR_TRANSPORT_LIST, *PLMDR_TRANSPORT_LIST;
+
+#define LMDR_TRANSPORT_WANNISH 0x00000001 // If set, Xport is wannish.
+#define LMDR_TRANSPORT_RAS 0x00000002 // If set, Xport is RAS.
+#define LMDR_TRANSPORT_IPX 0x00000004 // If set, Xport is direct host IPX.
+
+//
+// Browser statistics.
+//
+
+typedef struct _BOWSER_STATISTICS {
+ LARGE_INTEGER StartTime;
+ LARGE_INTEGER NumberOfServerAnnouncements;
+ LARGE_INTEGER NumberOfDomainAnnouncements;
+ ULONG NumberOfElectionPackets;
+ ULONG NumberOfMailslotWrites;
+ ULONG NumberOfGetBrowserServerListRequests;
+ ULONG NumberOfMissedServerAnnouncements;
+ ULONG NumberOfMissedMailslotDatagrams;
+ ULONG NumberOfMissedGetBrowserServerListRequests;
+ ULONG NumberOfFailedServerAnnounceAllocations;
+ ULONG NumberOfFailedMailslotAllocations;
+ ULONG NumberOfFailedMailslotReceives;
+ ULONG NumberOfFailedMailslotWrites;
+ ULONG NumberOfFailedMailslotOpens;
+ ULONG NumberOfDuplicateMasterAnnouncements;
+ LARGE_INTEGER NumberOfIllegalDatagrams;
+} BOWSER_STATISTICS, *PBOWSER_STATISTICS;
+
+#endif // ifndef _NTDDBROW_
diff --git a/public/sdk/inc/ntddcdrm.h b/public/sdk/inc/ntddcdrm.h
new file mode 100644
index 000000000..acbe8282c
--- /dev/null
+++ b/public/sdk/inc/ntddcdrm.h
@@ -0,0 +1,284 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddcdrm.h
+
+Abstract:
+
+ This module contains structures and definitions
+ associated with CDROM IOCTls.
+
+Author:
+
+ Mike Glass
+
+Revision History:
+
+--*/
+
+//
+// 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_CDROM_BASE FILE_DEVICE_CD_ROM
+
+#define IOCTL_CDROM_UNLOAD_DRIVER CTL_CODE(IOCTL_CDROM_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+//
+// CDROM Audio Device Control Functions
+//
+
+#define IOCTL_CDROM_READ_TOC CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_GET_CONTROL CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_PLAY_AUDIO_MSF CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_SEEK_AUDIO_MSF CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_STOP_AUDIO CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_PAUSE_AUDIO CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_RESUME_AUDIO CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_GET_VOLUME CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_SET_VOLUME CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_READ_Q_CHANNEL CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_GET_LAST_SESSION CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_RAW_READ CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT, FILE_READ_ACCESS)
+#define IOCTL_CDROM_DISK_TYPE CTL_CODE(IOCTL_CDROM_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_CDROM_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+//
+// The following device control codes are common for all class drivers. The
+// functions codes defined here must match all of the other class drivers.
+//
+// Warning: these codes will be replaced in the future with the IOCTL_STORAGE
+// codes included below
+//
+
+#define IOCTL_CDROM_CHECK_VERIFY CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_MEDIA_REMOVAL CTL_CODE(IOCTL_CDROM_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_EJECT_MEDIA CTL_CODE(IOCTL_CDROM_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_LOAD_MEDIA CTL_CODE(IOCTL_CDROM_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_RESERVE CTL_CODE(IOCTL_CDROM_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_RELEASE CTL_CODE(IOCTL_CDROM_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_CDROM_FIND_NEW_DEVICES CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+//
+// The following file contains the IOCTL_STORAGE class ioctl definitions
+//
+
+#include <ntddstor.h>
+
+//
+// The following device control code is for the SIMBAD simulated bad
+// sector facility. See SIMBAD.H in this directory for related structures.
+//
+
+#define IOCTL_CDROM_SIMBAD CTL_CODE(IOCTL_CDROM_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+//
+// Maximum CD Rom size
+//
+
+#define MAXIMUM_NUMBER_TRACKS 100
+#define MAXIMUM_CDROM_SIZE 804
+
+//
+// CD ROM Table OF Contents (TOC)
+//
+// Format 0 - Get table of contents
+//
+
+typedef struct _TRACK_DATA {
+ UCHAR Reserved;
+ UCHAR Control : 4;
+ UCHAR Adr : 4;
+ UCHAR TrackNumber;
+ UCHAR Reserved1;
+ UCHAR Address[4];
+} TRACK_DATA, *PTRACK_DATA;
+
+typedef struct _CDROM_TOC {
+
+ //
+ // Header
+ //
+
+ UCHAR Length[2];
+ UCHAR FirstTrack;
+ UCHAR LastTrack;
+
+ //
+ // Track data
+ //
+
+ TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS];
+} CDROM_TOC, *PCDROM_TOC;
+
+#define CDROM_TOC_SIZE sizeof(CDROM_TOC)
+
+//
+// Play audio starting at MSF and ending at MSF
+//
+
+typedef struct _CDROM_PLAY_AUDIO_MSF {
+ UCHAR StartingM;
+ UCHAR StartingS;
+ UCHAR StartingF;
+ UCHAR EndingM;
+ UCHAR EndingS;
+ UCHAR EndingF;
+} CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF;
+
+//
+// Seek to MSF
+//
+
+typedef struct _CDROM_SEEK_AUDIO_MSF {
+ UCHAR M;
+ UCHAR S;
+ UCHAR F;
+} CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF;
+
+
+//
+// Flags for the disk type
+//
+
+typedef struct _CDROM_DISK_DATA {
+
+ ULONG DiskData;
+
+} CDROM_DISK_DATA, *PCDROM_DISK_DATA;
+
+#define CDROM_DISK_AUDIO_TRACK (0x00000001)
+#define CDROM_DISK_DATA_TRACK (0x00000002)
+
+//
+// CD ROM Data Mode Codes, used with IOCTL_CDROM_READ_Q_CHANNEL
+//
+
+#define IOCTL_CDROM_SUB_Q_CHANNEL 0x00
+#define IOCTL_CDROM_CURRENT_POSITION 0x01
+#define IOCTL_CDROM_MEDIA_CATALOG 0x02
+#define IOCTL_CDROM_TRACK_ISRC 0x03
+
+typedef struct _CDROM_SUB_Q_DATA_FORMAT {
+ UCHAR Format;
+ UCHAR Track;
+} CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT;
+
+
+//
+// CD ROM Sub-Q Channel Data Format
+//
+
+typedef struct _SUB_Q_HEADER {
+ UCHAR Reserved;
+ UCHAR AudioStatus;
+ UCHAR DataLength[2];
+} SUB_Q_HEADER, *PSUB_Q_HEADER;
+
+typedef struct _SUB_Q_CURRENT_POSITION {
+ SUB_Q_HEADER Header;
+ UCHAR FormatCode;
+ UCHAR Control : 4;
+ UCHAR ADR : 4;
+ UCHAR TrackNumber;
+ UCHAR IndexNumber;
+ UCHAR AbsoluteAddress[4];
+ UCHAR TrackRelativeAddress[4];
+} SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION;
+
+typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER {
+ SUB_Q_HEADER Header;
+ UCHAR FormatCode;
+ UCHAR Reserved[3];
+ UCHAR Reserved1 : 7;
+ UCHAR Mcval : 1;
+ UCHAR MediaCatalog[15];
+} SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER;
+
+typedef struct _SUB_Q_TRACK_ISRC {
+ SUB_Q_HEADER Header;
+ UCHAR FormatCode;
+ UCHAR Reserved0;
+ UCHAR Track;
+ UCHAR Reserved1;
+ UCHAR Reserved2 : 7;
+ UCHAR Tcval : 1;
+ UCHAR TrackIsrc[15];
+} SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC;
+
+typedef union _SUB_Q_CHANNEL_DATA {
+ SUB_Q_CURRENT_POSITION CurrentPosition;
+ SUB_Q_MEDIA_CATALOG_NUMBER MediaCatalog;
+ SUB_Q_TRACK_ISRC TrackIsrc;
+} SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA;
+
+//
+// Audio Status Codes
+//
+
+#define AUDIO_STATUS_NOT_SUPPORTED 0x00
+#define AUDIO_STATUS_IN_PROGRESS 0x11
+#define AUDIO_STATUS_PAUSED 0x12
+#define AUDIO_STATUS_PLAY_COMPLETE 0x13
+#define AUDIO_STATUS_PLAY_ERROR 0x14
+#define AUDIO_STATUS_NO_STATUS 0x15
+
+//
+// ADR Sub-channel Q Field
+//
+
+#define ADR_NO_MODE_INFORMATION 0x0
+#define ADR_ENCODES_CURRENT_POSITION 0x1
+#define ADR_ENCODES_MEDIA_CATALOG 0x2
+#define ADR_ENCODES_ISRC 0x3
+
+//
+// Sub-channel Q Control Bits
+//
+
+#define AUDIO_WITH_PREEMPHASIS 0x0
+#define DIGITAL_COPY_PERMITTED 0x2
+#define AUDIO_DATA_TRACK 0x4
+#define TWO_FOUR_CHANNEL_AUDIO 0x8
+
+//
+// Get Audio control parameters
+//
+
+typedef struct _CDROM_AUDIO_CONTROL {
+ UCHAR LbaFormat;
+ USHORT LogicalBlocksPerSecond;
+} CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL;
+
+//
+// Volume control - Volume takes a value between 1 and 0xFF.
+// SCSI-II CDROM audio suppports up to 4 audio ports with
+// Independent volume control.
+//
+
+typedef struct _VOLUME_CONTROL {
+ UCHAR PortVolume[4];
+} VOLUME_CONTROL, *PVOLUME_CONTROL;
+
+typedef enum _TRACK_MODE_TYPE {
+ YellowMode2,
+ XAForm2,
+ CDDA
+} TRACK_MODE_TYPE, *PTRACK_MODE_TYPE;
+
+//
+// Passed to cdrom to describe the raw read, ie. Mode 2, Form 2, CDDA...
+//
+
+typedef struct __RAW_READ_INFO {
+ LARGE_INTEGER DiskOffset;
+ ULONG SectorCount;
+ TRACK_MODE_TYPE TrackMode;
+} RAW_READ_INFO, *PRAW_READ_INFO;
diff --git a/public/sdk/inc/ntdddfs.h b/public/sdk/inc/ntdddfs.h
new file mode 100644
index 000000000..bd4de472e
--- /dev/null
+++ b/public/sdk/inc/ntdddfs.h
@@ -0,0 +1,291 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1992 Microsoft Corporation
+
+Module Name:
+
+ ntdddfs.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Distributed file service device.
+
+Author:
+
+ Alan Whitney (alanw) 27 May 1992
+
+Revision History:
+
+--*/
+
+
+#ifndef _NTDDDFS_
+#define _NTDDDFS_
+
+//
+// The names of logical roots are restricted to be less than or equal to
+// MAX_LOGICAL_ROOT_NAME chars.
+//
+
+#define MAX_LOGICAL_ROOT_NAME 8
+
+//
+// Device Name - this string is the name of the device. It is the name
+// that should be passed to NtOpenFile when accessing the device.
+//
+
+extern LPCWSTR DD_DFS_DEVICE_DIR;
+extern LPCWSTR DD_DFS_DLORG_DEVICE_NAME; // Device for downlevel access
+extern LPCWSTR DD_DFS_ORG_DEVICE_NAME; // Device pointing to root of dfs
+
+//
+// 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_DFS_BASE FILE_DEVICE_DFS
+
+
+// BUGBUG - borrow a currently unused bit in CreateOptions to indicate
+// that the file server is calling into DNR.
+
+#define FILE_OPEN_LOCAL_SCOPE FILE_OPEN_BY_FILE_ID //BUGBUG - need a real bit defn.
+
+
+#define STATUS_CHILD_VOLUME STATUS_DFS_EXIT_PATH_FOUND // vol. is child of local volume
+
+
+// BUGBUG - The following need to be in devioctl.h
+#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000030
+#define FILE_DEVICE_DFS_VOLUME 0x00000031
+
+// BUGBUG - End TEMP declarations
+
+//
+// Distributed file service file control code and structure declarations
+//
+
+//
+// External Distributed file service file control operations
+//
+
+#define FSCTL_DFS_DEFINE_LOGICAL_ROOT CTL_CODE(IOCTL_DFS_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_DELETE_LOGICAL_ROOT CTL_CODE(IOCTL_DFS_BASE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_LOGICAL_ROOT_PREFIX CTL_CODE(IOCTL_DFS_BASE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_GET_DSMACHINE CTL_CODE(IOCTL_DFS_BASE, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_GET_HANDLE_IDS CTL_CODE(IOCTL_DFS_BASE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_DEFINE_PROVIDER CTL_CODE(IOCTL_DFS_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_GET_REFERRAL CTL_CODE(IOCTL_DFS_BASE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_INIT_LOCAL_PARTITIONS CTL_CODE(IOCTL_DFS_BASE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_CREATE_LOCAL_PARTITION CTL_CODE(IOCTL_DFS_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_DELETE_LOCAL_PARTITION CTL_CODE(IOCTL_DFS_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_SET_LOCAL_VOLUME_STATE CTL_CODE(IOCTL_DFS_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_SET_SERVICE_STATE CTL_CODE(IOCTL_DFS_BASE, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_DC_SET_VOLUME_STATE CTL_CODE(IOCTL_DFS_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//#define FSCTL_DFS_unused CTL_CODE(IOCTL_DFS_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
+//#define FSCTL_DFS_unused CTL_CODE(IOCTL_DFS_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_IS_CHILDNAME_LEGAL CTL_CODE(IOCTL_DFS_BASE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_PKT_CREATE_ENTRY CTL_CODE(IOCTL_DFS_BASE, 16, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_PKT_CREATE_SUBORDINATE_ENTRY CTL_CODE(IOCTL_DFS_BASE, 17, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_CHECK_STGID_IN_USE CTL_CODE(IOCTL_DFS_BASE, 18, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_UPDATE_MACHINE_ADDRESS CTL_CODE(IOCTL_DFS_BASE, 19, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_SET_DOMAIN_GLUON CTL_CODE(IOCTL_DFS_BASE, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_UPDATE_SITE_COSTS CTL_CODE(IOCTL_DFS_BASE, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_PKT_SET_RELATION_INFO CTL_CODE(IOCTL_DFS_BASE, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_SERVER_INFO CTL_CODE(IOCTL_DFS_BASE, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_SET_SERVER_INFO CTL_CODE(IOCTL_DFS_BASE, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_NAME_RESOLVE CTL_CODE(IOCTL_DFS_BASE, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_PKT_DESTROY_ENTRY CTL_CODE(IOCTL_DFS_BASE, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_PKT_GET_RELATION_INFO CTL_CODE(IOCTL_DFS_BASE, 27, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_LOCAL_NAME_RESOLVE CTL_CODE(IOCTL_DFS_BASE, 28, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_CREATE_EXIT_POINT CTL_CODE(IOCTL_DFS_BASE, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_DELETE_EXIT_POINT CTL_CODE(IOCTL_DFS_BASE, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_ALL_ENTRIES CTL_CODE(IOCTL_DFS_BASE, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_CAIRO_SERVER CTL_CODE(IOCTL_DFS_BASE, 32, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_CHILDREN CTL_CODE(IOCTL_DFS_BASE, 33, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_CHECK_REMOTE_PARTITION CTL_CODE(IOCTL_DFS_BASE, 34, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_VERIFY_REMOTE_VOLUME_KNOWLEDGE CTL_CODE(IOCTL_DFS_BASE, 35, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_VERIFY_LOCAL_VOLUME_KNOWLEDGE CTL_CODE(IOCTL_DFS_BASE, 36, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_KNOWLEDGE_SYNC_PARAMETERS CTL_CODE(IOCTL_DFS_BASE, 37, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_MODIFY_PREFIX CTL_CODE(IOCTL_DFS_BASE, 38, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_FIX_LOCAL_VOLUME CTL_CODE(IOCTL_DFS_BASE, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_DRIVE_INFO CTL_CODE(IOCTL_DFS_BASE, 40, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_DRIVE_FOR_PATH CTL_CODE(IOCTL_DFS_BASE, 41, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_PATH_TO_INFO CTL_CODE(IOCTL_DFS_BASE, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_INIT_MACH_SHARES CTL_CODE(IOCTL_DFS_BASE, 43, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_PKT_ENTRY_MODIFY_GUID CTL_CODE(IOCTL_DFS_BASE, 44, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_PKT_UPDATE_DOMAIN_KNOWLEDGE CTL_CODE(IOCTL_DFS_BASE, 45, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_LINK_DRIVE CTL_CODE(IOCTL_DFS_BASE, 46, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_CONNECTED_RESOURCES CTL_CODE(IOCTL_DFS_BASE, 47, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_SERVER_NAME CTL_CODE(IOCTL_DFS_BASE, 48, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_PATH_FROM_PREFIX CTL_CODE(IOCTL_DFS_BASE, 49, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_READ_METERS CTL_CODE(IOCTL_DFS_BASE, 50, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_SHUFFLE_ENTRY CTL_CODE(IOCTL_DFS_BASE, 51, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_FIRST_SVC CTL_CODE(IOCTL_DFS_BASE, 52, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_NEXT_SVC CTL_CODE(IOCTL_DFS_BASE, 53, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DFS_GET_ENTRY_TYPE CTL_CODE(IOCTL_DFS_BASE, 54, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_DFS_GET_HANDLE_SERVER_INFO CTL_CODE(IOCTL_DFS_BASE, 55, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// Ea buffer name to open JPs
+//
+
+#define EA_NAME_OPENIFJP ".OpenIfJP"
+
+//
+// NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for
+// this device.
+//
+
+#ifndef GUID_DEFINED // BUGBUG - Should come
+#define GUID_DEFINED // from someplace more
+typedef struct _GUID { // global than ntdddfs.h
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif // GUID_DEFINED
+
+
+//[ dfs_object_guids
+//
+// The following structure describes the guids that identify an object
+// anywhere on the network. This is returned by FSCTL_DFS_GET_HANDLE_IDS.
+//
+
+typedef struct _DFS_OBJECT_GUIDS {
+ GUID guidDomain;
+ GUID guidVolume;
+ GUID guidObject;
+ ULONG ulUniquifier;
+} DFS_OBJECT_GUIDS, *PDFS_OBJECT_GUIDS;
+
+//[ dfs_site_cost
+//
+// The following structure describes a site cost.
+//
+
+typedef struct _DFS_SITE_COST {
+ GUID guidSite;
+ unsigned long dwCost;
+} DFS_SITE_COST, *PDFS_SITE_COST;
+
+//[ dfs_referral
+//
+// The following structures describe a set of referrals.
+//
+
+typedef enum _DFS_REF_TYPE {
+ MasterReplica = 1,
+ ReadOnlyReplica = 2,
+ KnowledgeSource = 3,
+ LocalReplica = 4,
+} DFS_REF_TYPE;
+
+
+// Standardized provider IDs as given in eProviderId
+
+#define PROV_ID_LOCAL_FS 0x101 // generic local file system
+#define PROV_ID_DFS_RDR 0x201 // The standard Cairo redirector
+#define PROV_ID_LM_RDR 0x202 // The usual LanMan (downlevel) redir
+
+
+// Provider capabilities as given in fRefCapability and fProvCapability
+#define PROV_OFS_API 1 // accepts OFS extension APIs
+#define PROV_DFS_RDR 2 // accepts NtCreateFile with EA Principal
+#define PROV_STRIP_PREFIX 4 // strip file name prefix before redispatching
+#define PROV_UNAVAILABLE 8 // provider unavailable - try to reattach.
+
+
+typedef struct _DFS_REFERRAL {
+ ULONG cbRefSize; // total size of referral struct
+ USHORT eProviderId; // ID of provider
+ USHORT fRefCapability; // Capabilities of provider
+ DFS_REF_TYPE eRefType; // type of referral
+ ULONG cbAddrSize; // size in bytes of address part
+ ULONG cwPrincipal; // size of principal name
+ ULONG cbMachine; // size of Machine Buf below.
+ UCHAR bAddr[1]; // server and resource name/address
+ WCHAR Principal[1]; // server principal name if cwPrincipal != 0
+ UCHAR MachineBuf[1]; // Machine struct is marshalled into this.
+} DFS_REFERRAL;
+
+typedef struct _DFS_REF_LIST {
+ ULONG cReferrals; // num of referral structs which follow
+ DFS_REFERRAL sReferrals[1]; // one or more referral structures
+} DFS_REF_LIST;
+//]
+
+
+//[ dsfs_fsctlstructs
+// Control structure for FSCTL_DFS_DEFINE_LOGICAL_ROOT
+
+typedef struct _FILE_DFS_DEF_LOGICAL_ROOT_BUFFER {
+ BOOLEAN fForce;
+ WCHAR LogicalRoot[MAX_LOGICAL_ROOT_NAME];
+ WCHAR RootPrefix[1];
+} FILE_DFS_DEF_ROOT_BUFFER, *PFILE_DFS_DEF_ROOT_BUFFER;
+
+
+// Control structure for FSCTL_DFS_NAME_RESOLVE
+
+#define DFS_NAME_RES_TYPE_REFERRAL 0
+#define DFS_NAME_RES_TYPE_LOCAL 1
+
+typedef struct _FILE_DFS_NAME_RESOLVE_BUFFER {
+ ULONG ServiceTypes;
+ ULONG ReferralType; // 1 means return entry that
+ WCHAR PrefixName[1]; // matches Prefix, 0 means
+ // return referral for Prefix
+} FILE_DFS_NAME_RESOLVE_BUFFER, *PFILE_DFS_NAME_RESOLVE_BUFFER;
+
+
+// Control structure for FSCTL_DFS_UPD_REFERRAL
+
+typedef struct _FILE_DFS_UPD_REFERRAL_BUFFER {
+ ULONG ReferralOffset; // Offset in buffer of referral data
+ GUID PrefixID; // partition ID
+ ULONG ReferralEntryType;
+ WCHAR PrefixName[1];
+ DFS_REF_LIST ReferralData;
+} FILE_DFS_UPD_REFERRAL_BUFFER, *PFILE_DFS_UPD_REFERRAL_BUFFER;
+
+
+
+
+// Control structure for FSCTL_DFS_DEFINE_PROVIDER
+
+typedef struct _FILE_DFS_DEF_PROVIDER {
+ USHORT eProviderId; // ID of provider
+ USHORT fProvCapability; // Capabilities of provider
+ WCHAR ProviderName[1];
+} FILE_DFS_DEF_PROVIDER, *PFILE_DFS_DEF_PROVIDER;
+
+
+// Control structure for FSCTL_DFS_GET_DRIVE_FOR_PATH
+
+typedef struct _FILE_DFS_GET_DRIVE {
+ WCHAR wcDrive;
+ ULONG cbMatchLength;
+} FILE_DFS_GET_DRIVE, *PFILE_DFS_GET_DRIVE;
+
+//]
+#endif // _NTDDDFS_
diff --git a/public/sdk/inc/ntdddisk.h b/public/sdk/inc/ntdddisk.h
new file mode 100644
index 000000000..296ae32ec
--- /dev/null
+++ b/public/sdk/inc/ntdddisk.h
@@ -0,0 +1,695 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntdddisk.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Disk device.
+
+Author:
+
+ Steve Wood (stevewo) 27-May-1990
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDDISK_H_
+#define _NTDDDISK_H_
+
+//
+// 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 DD_DISK_DEVICE_NAME "\\Device\\UNKNOWN"
+
+
+//
+// NtDeviceIoControlFile
+
+// begin_winioctl
+
+//
+// IoControlCode values for disk devices.
+//
+
+#define IOCTL_DISK_BASE FILE_DEVICE_DISK
+#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_VERIFY CTL_CODE(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE, 0x000a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(IOCTL_DISK_BASE, 0x000b, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE, 0x000c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE, 0x000d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE, 0x000e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE, 0x000f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#if(_WIN32_WINNT >= 0x0400)
+#define IOCTL_DISK_CONTROLLER_NUMBER CTL_CODE(IOCTL_DISK_BASE, 0x0011, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// IOCTL support for SMART drive fault prediction.
+//
+
+#define SMART_GET_VERSION CTL_CODE(IOCTL_DISK_BASE, 0x0020, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define SMART_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define SMART_RCV_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+
+// end_winioctl
+
+//
+// Internal disk driver device controls to maintain the verify status bit
+// for the device object.
+//
+
+#define IOCTL_DISK_INTERNAL_SET_VERIFY CTL_CODE(IOCTL_DISK_BASE, 0x0100, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define IOCTL_DISK_INTERNAL_CLEAR_VERIFY CTL_CODE(IOCTL_DISK_BASE, 0x0101, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+// begin_winioctl
+//
+// The following device control codes are common for all class drivers. The
+// functions codes defined here must match all of the other class drivers.
+//
+// Warning: these codes will be replaced in the future by equivalent
+// IOCTL_STORAGE codes
+//
+
+#define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+// end_winioctl
+
+//
+// The following file contains the IOCTL_STORAGE class ioctls
+//
+
+#include <ntddstor.h>
+
+// begin_winioctl
+//
+// Define the partition types returnable by known disk drivers.
+//
+
+#define PARTITION_ENTRY_UNUSED 0x00 // Entry unused
+#define PARTITION_FAT_12 0x01 // 12-bit FAT entries
+#define PARTITION_XENIX_1 0x02 // Xenix
+#define PARTITION_XENIX_2 0x03 // Xenix
+#define PARTITION_FAT_16 0x04 // 16-bit FAT entries
+#define PARTITION_EXTENDED 0x05 // Extended partition entry
+#define PARTITION_HUGE 0x06 // Huge partition MS-DOS V4
+#define PARTITION_IFS 0x07 // IFS Partition
+#define PARTITION_FAT32 0x0B // FAT32
+#define PARTITION_FAT32_XINT13 0x0C // FAT32 using extended int13 services
+#define PARTITION_XINT13 0x0E // Win95 partition using extended int13 services
+#define PARTITION_XINT13_EXTENDED 0x0F // Same as type 5 but uses extended int13 services
+#define PARTITION_PREP 0x41 // PowerPC Reference Platform (PReP) Boot Partition
+#define PARTITION_UNIX 0x63 // Unix
+
+#define VALID_NTFT 0xC0 // NTFT uses high order bits
+
+//
+// The high bit of the partition type code indicates that a partition
+// is part of an NTFT mirror or striped array.
+//
+
+#define PARTITION_NTFT 0x80 // NTFT partition
+
+//
+// The following macro is used to determine which partitions should be
+// assigned drive letters.
+//
+
+//++
+//
+// BOOLEAN
+// IsRecognizedPartition(
+// IN ULONG PartitionType
+// )
+//
+// Routine Description:
+//
+// This macro is used to determine to which partitions drive letters
+// should be assigned.
+//
+// Arguments:
+//
+// PartitionType - Supplies the type of the partition being examined.
+//
+// Return Value:
+//
+// The return value is TRUE if the partition type is recognized,
+// otherwise FALSE is returned.
+//
+//--
+
+#define IsRecognizedPartition( PartitionType ) ( \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_FAT_12)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_FAT_16)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_IFS)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_HUGE)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_FAT32)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_FAT32_XINT13)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_XINT13)) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_FAT_12) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_FAT_16) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_IFS) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_HUGE) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_FAT32) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_FAT32_XINT13) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_XINT13) )
+
+//++
+//
+// BOOLEAN
+// IsContainerPartition(
+// IN ULONG PartitionType
+// )
+//
+// Routine Description:
+//
+// This macro is used to determine to which partition types are actually
+// containers for other partitions (ie, extended partitions).
+//
+// Arguments:
+//
+// PartitionType - Supplies the type of the partition being examined.
+//
+// Return Value:
+//
+// The return value is TRUE if the partition type is a container,
+// otherwise FALSE is returned.
+//
+//--
+
+#define IsContainerPartition( PartitionType ) \
+ ((PartitionType == PARTITION_EXTENDED) || (PartitionType == PARTITION_XINT13_EXTENDED))
+
+//
+// Define the media types supported by the driver.
+//
+
+typedef enum _MEDIA_TYPE {
+ Unknown, // Format is unknown
+ F5_1Pt2_512, // 5.25", 1.2MB, 512 bytes/sector
+ F3_1Pt44_512, // 3.5", 1.44MB, 512 bytes/sector
+ F3_2Pt88_512, // 3.5", 2.88MB, 512 bytes/sector
+ F3_20Pt8_512, // 3.5", 20.8MB, 512 bytes/sector
+ F3_720_512, // 3.5", 720KB, 512 bytes/sector
+ F5_360_512, // 5.25", 360KB, 512 bytes/sector
+ F5_320_512, // 5.25", 320KB, 512 bytes/sector
+ F5_320_1024, // 5.25", 320KB, 1024 bytes/sector
+ F5_180_512, // 5.25", 180KB, 512 bytes/sector
+ F5_160_512, // 5.25", 160KB, 512 bytes/sector
+ RemovableMedia, // Removable media other than floppy
+ FixedMedia, // Fixed hard disk media
+ F3_120M_512 // 3.5", 120M Floppy
+} MEDIA_TYPE, *PMEDIA_TYPE;
+
+//
+// Define the input buffer structure for the driver, when
+// it is called with IOCTL_DISK_FORMAT_TRACKS.
+//
+
+typedef struct _FORMAT_PARAMETERS {
+ MEDIA_TYPE MediaType;
+ ULONG StartCylinderNumber;
+ ULONG EndCylinderNumber;
+ ULONG StartHeadNumber;
+ ULONG EndHeadNumber;
+} FORMAT_PARAMETERS, *PFORMAT_PARAMETERS;
+
+//
+// Define the BAD_TRACK_NUMBER type. An array of elements of this type is
+// returned by the driver on IOCTL_DISK_FORMAT_TRACKS requests, to indicate
+// what tracks were bad during formatting. The length of that array is
+// reported in the `Information' field of the I/O Status Block.
+//
+
+typedef USHORT BAD_TRACK_NUMBER;
+typedef USHORT *PBAD_TRACK_NUMBER;
+
+//
+// Define the input buffer structure for the driver, when
+// it is called with IOCTL_DISK_FORMAT_TRACKS_EX.
+//
+
+typedef struct _FORMAT_EX_PARAMETERS {
+ MEDIA_TYPE MediaType;
+ ULONG StartCylinderNumber;
+ ULONG EndCylinderNumber;
+ ULONG StartHeadNumber;
+ ULONG EndHeadNumber;
+ USHORT FormatGapLength;
+ USHORT SectorsPerTrack;
+ USHORT SectorNumber[1];
+} FORMAT_EX_PARAMETERS, *PFORMAT_EX_PARAMETERS;
+
+//
+// The following structure is returned on an IOCTL_DISK_GET_DRIVE_GEOMETRY
+// request and an array of them is returned on an IOCTL_DISK_GET_MEDIA_TYPES
+// request.
+//
+
+typedef struct _DISK_GEOMETRY {
+ LARGE_INTEGER Cylinders;
+ MEDIA_TYPE MediaType;
+ ULONG TracksPerCylinder;
+ ULONG SectorsPerTrack;
+ ULONG BytesPerSector;
+} DISK_GEOMETRY, *PDISK_GEOMETRY;
+
+//
+// The following structure is returned on an IOCTL_DISK_GET_PARTITION_INFO
+// and an IOCTL_DISK_GET_DRIVE_LAYOUT request. It is also used in a request
+// to change the drive layout, IOCTL_DISK_SET_DRIVE_LAYOUT.
+//
+
+typedef struct _PARTITION_INFORMATION {
+ LARGE_INTEGER StartingOffset;
+ LARGE_INTEGER PartitionLength;
+ ULONG HiddenSectors;
+ ULONG PartitionNumber;
+ UCHAR PartitionType;
+ BOOLEAN BootIndicator;
+ BOOLEAN RecognizedPartition;
+ BOOLEAN RewritePartition;
+} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
+
+//
+// The following structure is used to change the partition type of a
+// specified disk partition using an IOCTL_DISK_SET_PARTITION_INFO
+// request.
+//
+
+typedef struct _SET_PARTITION_INFORMATION {
+ UCHAR PartitionType;
+} SET_PARTITION_INFORMATION, *PSET_PARTITION_INFORMATION;
+
+//
+// The following structures is returned on an IOCTL_DISK_GET_DRIVE_LAYOUT
+// request and given as input to an IOCTL_DISK_SET_DRIVE_LAYOUT request.
+//
+
+typedef struct _DRIVE_LAYOUT_INFORMATION {
+ ULONG PartitionCount;
+ ULONG Signature;
+ PARTITION_INFORMATION PartitionEntry[1];
+} DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION;
+
+//
+// The following structure is passed in on an IOCTL_DISK_VERIFY request.
+// The offset and length parameters are both given in bytes.
+//
+
+typedef struct _VERIFY_INFORMATION {
+ LARGE_INTEGER StartingOffset;
+ ULONG Length;
+} VERIFY_INFORMATION, *PVERIFY_INFORMATION;
+
+//
+// The following structure is passed in on an IOCTL_DISK_REASSIGN_BLOCKS
+// request.
+//
+
+typedef struct _REASSIGN_BLOCKS {
+ USHORT Reserved;
+ USHORT Count;
+ ULONG BlockNumber[1];
+} REASSIGN_BLOCKS, *PREASSIGN_BLOCKS;
+
+#if(_WIN32_WINNT >= 0x0400)
+//
+// IOCTL_DISK_CONTROLLER_NUMBER returns the controller and disk
+// number for the handle. This is used to determine if a disk
+// is attached to the primary or secondary IDE controller.
+//
+
+typedef struct _DISK_CONTROLLER_NUMBER {
+ ULONG ControllerNumber;
+ ULONG DiskNumber;
+} DISK_CONTROLLER_NUMBER, *PDISK_CONTROLLER_NUMBER;
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+///////////////////////////////////////////////////////
+// //
+// The following structures define disk performance //
+// statistics: specifically the locations of all the //
+// reads and writes which have occured on the disk. //
+// //
+// To use these structures, you must issue an IOCTL_ //
+// DISK_HIST_STRUCTURE (with a DISK_HISTOGRAM) to //
+// obtain the basic histogram information. The //
+// number of buckets which must allocated is part of //
+// this structure. Allocate the required number of //
+// buckets and call an IOCTL_DISK_HIST_DATA to fill //
+// in the data //
+// //
+///////////////////////////////////////////////////////
+
+#define HIST_NO_OF_BUCKETS 24
+
+typedef struct _HISTOGRAM_BUCKET {
+ ULONG Reads;
+ ULONG Writes;
+} HISTOGRAM_BUCKET, *PHISTOGRAM_BUCKET;
+
+#define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET)
+
+typedef struct _DISK_HISTOGRAM {
+ LARGE_INTEGER DiskSize;
+ LARGE_INTEGER Start;
+ LARGE_INTEGER End;
+ LARGE_INTEGER Average;
+ LARGE_INTEGER AverageRead;
+ LARGE_INTEGER AverageWrite;
+ ULONG Granularity;
+ ULONG Size;
+ ULONG ReadCount;
+ ULONG WriteCount;
+ PHISTOGRAM_BUCKET Histogram;
+} DISK_HISTOGRAM, *PDISK_HISTOGRAM;
+
+#define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM)
+
+///////////////////////////////////////////////////////
+// //
+// The following structures define disk debugging //
+// capabilities. The IOCTLs are directed to one of //
+// the two disk filter drivers. //
+// //
+// DISKPERF is a utilty for collecting disk request //
+// statistics. //
+// //
+// SIMBAD is a utility for injecting faults in //
+// IO requests to disks. //
+// //
+///////////////////////////////////////////////////////
+
+//
+// The following structure is exchanged on an IOCTL_DISK_GET_PERFORMANCE
+// request. This ioctl collects summary disk request statistics used
+// in measuring performance.
+//
+
+typedef struct _DISK_PERFORMANCE {
+ LARGE_INTEGER BytesRead;
+ LARGE_INTEGER BytesWritten;
+ LARGE_INTEGER ReadTime;
+ LARGE_INTEGER WriteTime;
+ ULONG ReadCount;
+ ULONG WriteCount;
+ ULONG QueueDepth;
+} DISK_PERFORMANCE, *PDISK_PERFORMANCE;
+
+//
+// This structure defines the disk logging record. When disk logging
+// is enabled, one of these is written to an internal buffer for each
+// disk request.
+//
+
+typedef struct _DISK_RECORD {
+ LARGE_INTEGER ByteOffset;
+ LARGE_INTEGER StartTime;
+ LARGE_INTEGER EndTime;
+ PVOID VirtualAddress;
+ ULONG NumberOfBytes;
+ UCHAR DeviceNumber;
+ BOOLEAN ReadRequest;
+} DISK_RECORD, *PDISK_RECORD;
+
+//
+// The following structure is exchanged on an IOCTL_DISK_LOG request.
+// Not all fields are valid with each function type.
+//
+
+typedef struct _DISK_LOGGING {
+ UCHAR Function;
+ PVOID BufferAddress;
+ ULONG BufferSize;
+} DISK_LOGGING, *PDISK_LOGGING;
+
+//
+// Disk logging functions
+//
+// Start disk logging. Only the Function and BufferSize fields are valid.
+//
+
+#define DISK_LOGGING_START 0
+
+//
+// Stop disk logging. Only the Function field is valid.
+//
+
+#define DISK_LOGGING_STOP 1
+
+//
+// Return disk log. All fields are valid. Data will be copied from internal
+// buffer to buffer specified for the number of bytes requested.
+//
+
+#define DISK_LOGGING_DUMP 2
+
+//
+// DISK BINNING
+//
+// DISKPERF will keep counters for IO that falls in each of these ranges.
+// The application determines the number and size of the ranges.
+// Joe Lin wanted me to keep it flexible as possible, for instance, IO
+// sizes are interesting in ranges like 0-4096, 4097-16384, 16385-65536, 65537+.
+//
+
+#define DISK_BINNING 3
+
+//
+// Bin types
+//
+
+typedef enum _BIN_TYPES {
+ RequestSize,
+ RequestLocation
+} BIN_TYPES;
+
+//
+// Bin ranges
+//
+
+typedef struct _BIN_RANGE {
+ LARGE_INTEGER StartValue;
+ LARGE_INTEGER Length;
+} BIN_RANGE, *PBIN_RANGE;
+
+//
+// Bin definition
+//
+
+typedef struct _PERF_BIN {
+ ULONG NumberOfBins;
+ ULONG TypeOfBin;
+ BIN_RANGE BinsRanges[1];
+} PERF_BIN, *PPERF_BIN ;
+
+//
+// Bin count
+//
+
+typedef struct _BIN_COUNT {
+ BIN_RANGE BinRange;
+ ULONG BinCount;
+} BIN_COUNT, *PBIN_COUNT;
+
+//
+// Bin results
+//
+
+typedef struct _BIN_RESULTS {
+ ULONG NumberOfBins;
+ BIN_COUNT BinCounts[1];
+} BIN_RESULTS, *PBIN_RESULTS;
+
+#if(_WIN32_WINNT >= 0x0400)
+//
+// Data structures for SMART drive fault prediction.
+//
+// GETVERSIONINPARAMS contains the data returned from the
+// Get Driver Version function.
+//
+
+#pragma pack(1)
+typedef struct _GETVERSIONINPARAMS {
+ UCHAR bVersion; // Binary driver version.
+ UCHAR bRevision; // Binary driver revision.
+ UCHAR bReserved; // Not used.
+ UCHAR bIDEDeviceMap; // Bit map of IDE devices.
+ ULONG fCapabilities; // Bit mask of driver capabilities.
+ ULONG dwReserved[4]; // For future use.
+} GETVERSIONINPARAMS, *PGETVERSIONINPARAMS, *LPGETVERSIONINPARAMS;
+#pragma pack()
+
+//
+// Bits returned in the fCapabilities member of GETVERSIONINPARAMS
+//
+
+#define CAP_ATA_ID_CMD 1 // ATA ID command supported
+#define CAP_ATAPI_ID_CMD 2 // ATAPI ID command supported
+#define CAP_SMART_CMD 4 // SMART commannds supported
+
+//
+// IDE registers
+//
+
+#pragma pack(1)
+typedef struct _IDEREGS {
+ UCHAR bFeaturesReg; // Used for specifying SMART "commands".
+ UCHAR bSectorCountReg; // IDE sector count register
+ UCHAR bSectorNumberReg; // IDE sector number register
+ UCHAR bCylLowReg; // IDE low order cylinder value
+ UCHAR bCylHighReg; // IDE high order cylinder value
+ UCHAR bDriveHeadReg; // IDE drive/head register
+ UCHAR bCommandReg; // Actual IDE command.
+ UCHAR bReserved; // reserved for future use. Must be zero.
+} IDEREGS, *PIDEREGS, *LPIDEREGS;
+#pragma pack()
+
+//
+// Valid values for the bCommandReg member of IDEREGS.
+//
+
+#define ATAPI_ID_CMD 0xA1 // Returns ID sector for ATAPI.
+#define ID_CMD 0xEC // Returns ID sector for ATA.
+#define SMART_CMD 0xB0 // Performs SMART cmd.
+ // Requires valid bFeaturesReg,
+ // bCylLowReg, and bCylHighReg
+
+//
+// Cylinder register defines for SMART command
+//
+
+#define SMART_CYL_LOW 0x4F
+#define SMART_CYL_HI 0xC2
+
+
+//
+// SENDCMDINPARAMS contains the input parameters for the
+// Send Command to Drive function.
+//
+
+#pragma pack(1)
+typedef struct _SENDCMDINPARAMS {
+ ULONG cBufferSize; // Buffer size in bytes
+ IDEREGS irDriveRegs; // Structure with drive register values.
+ UCHAR bDriveNumber; // Physical drive number to send
+ // command to (0,1,2,3).
+ UCHAR bReserved[3]; // Reserved for future expansion.
+ ULONG dwReserved[4]; // For future use.
+ UCHAR bBuffer[1]; // Input buffer.
+} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;
+#pragma pack()
+
+//
+// Status returned from driver
+//
+
+#pragma pack(1)
+typedef struct _DRIVERSTATUS {
+ UCHAR bDriverError; // Error code from driver,
+ // or 0 if no error.
+ UCHAR bIDEError; // Contents of IDE Error register.
+ // Only valid when bDriverError
+ // is SMART_IDE_ERROR.
+ UCHAR bReserved[2]; // Reserved for future expansion.
+ ULONG dwReserved[2]; // Reserved for future expansion.
+} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS;
+#pragma pack()
+
+//
+// bDriverError values
+//
+
+#define SMART_NO_ERROR 0 // No error
+#define SMART_IDE_ERROR 1 // Error from IDE controller
+#define SMART_INVALID_FLAG 2 // Invalid command flag
+#define SMART_INVALID_COMMAND 3 // Invalid command byte
+#define SMART_INVALID_BUFFER 4 // Bad buffer (null, invalid addr..)
+#define SMART_INVALID_DRIVE 5 // Drive number not valid
+#define SMART_INVALID_IOCTL 6 // Invalid IOCTL
+#define SMART_ERROR_NO_MEM 7 // Could not lock user's buffer
+#define SMART_INVALID_REGISTER 8 // Some IDE Register not valid
+#define SMART_NOT_SUPPORTED 9 // Invalid cmd flag set
+#define SMART_NO_IDE_DEVICE 10 // Cmd issued to device not present
+ // although drive number is valid
+
+#pragma pack(1)
+typedef struct _SENDCMDOUTPARAMS {
+ ULONG cBufferSize; // Size of bBuffer in bytes
+ DRIVERSTATUS DriverStatus; // Driver status structure.
+ UCHAR bBuffer[1]; // Buffer of arbitrary length in which to store the data read from the // drive.
+} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;
+#pragma pack()
+
+
+#define READ_ATTRIBUTE_BUFFER_SIZE 512
+#define IDENTIFY_BUFFER_SIZE 512
+#define READ_THRESHOLD_BUFFER_SIZE 512
+
+//
+// Feature register defines for SMART "sub commands"
+//
+
+#define READ_ATTRIBUTES 0xD0
+#define READ_THRESHOLDS 0xD1
+#define ENABLE_DISABLE_AUTOSAVE 0xD2
+#define SAVE_ATTRIBUTE_VALUES 0xD3
+#define EXECUTE_OFFLINE_DIAGS 0xD4
+#define ENABLE_SMART 0xD8
+#define DISABLE_SMART 0xD9
+#define RETURN_SMART_STATUS 0xDA
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+
+// end_winioctl
+
+//
+// The following device control code is for the SIMBAD simulated bad
+// sector facility. See SIMBAD.H in this directory for related structures.
+//
+
+#define IOCTL_DISK_SIMBAD CTL_CODE(IOCTL_DISK_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+//
+// Queue link for mapped addresses stored for unmapping.
+//
+
+typedef struct _MAPPED_ADDRESS {
+ struct _MAPPED_ADDRESS *NextMappedAddress;
+ PVOID MappedAddress;
+ ULONG NumberOfBytes;
+ LARGE_INTEGER IoAddress;
+ ULONG BusNumber;
+} MAPPED_ADDRESS, *PMAPPED_ADDRESS;
+
+#endif // _NTDDDISK_H_
diff --git a/public/sdk/inc/ntdddlc.h b/public/sdk/inc/ntdddlc.h
new file mode 100644
index 000000000..b8266cddf
--- /dev/null
+++ b/public/sdk/inc/ntdddlc.h
@@ -0,0 +1,80 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1993 Microsoft Corporation
+ (c) 1991 Nokia Data Systems AB
+
+Module Name:
+
+ ntdddlc.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the DLC driver interface device.
+
+Author:
+
+ Antti Saarenheimo (o-anttis) 08-JUNE-1991
+
+Revision History:
+
+--*/
+
+//
+// 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 FILE_DEVICE_DLC FILE_DEVICE_TRANSPORT
+
+#define DD_DLC_DEVICE_NAME L"\\Device\\Dlc"
+
+//
+// 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 _DLC_CONTROL_CODE(request,method) \
+ CTL_CODE(FILE_DEVICE_DLC, request, method, FILE_ANY_ACCESS)
+
+#define IOCTL_DLC_READ _DLC_CONTROL_CODE(0, METHOD_BUFFERED)
+#define IOCTL_DLC_RECEIVE _DLC_CONTROL_CODE(1, METHOD_BUFFERED)
+#define IOCTL_DLC_TRANSMIT _DLC_CONTROL_CODE(2, METHOD_OUT_DIRECT)
+#define IOCTL_DLC_BUFFER_FREE _DLC_CONTROL_CODE(3, METHOD_BUFFERED)
+#define IOCTL_DLC_BUFFER_GET _DLC_CONTROL_CODE(4, METHOD_BUFFERED)
+#define IOCTL_DLC_BUFFER_CREATE _DLC_CONTROL_CODE(5, METHOD_BUFFERED)
+#define IOCTL_DLC_SET_EXCEPTION_FLAGS _DLC_CONTROL_CODE(6, METHOD_BUFFERED)
+#define IOCTL_DLC_CLOSE_STATION _DLC_CONTROL_CODE(7, METHOD_OUT_DIRECT)
+#define IOCTL_DLC_CONNECT_STATION _DLC_CONTROL_CODE(8, METHOD_BUFFERED)
+#define IOCTL_DLC_FLOW_CONTROL _DLC_CONTROL_CODE(9, METHOD_BUFFERED)
+#define IOCTL_DLC_OPEN_STATION _DLC_CONTROL_CODE(10, METHOD_BUFFERED)
+#define IOCTL_DLC_RESET _DLC_CONTROL_CODE(11, METHOD_OUT_DIRECT)
+#define IOCTL_DLC_READ_CANCEL _DLC_CONTROL_CODE(12, METHOD_BUFFERED)
+#define IOCTL_DLC_RECEIVE_CANCEL _DLC_CONTROL_CODE(13, METHOD_BUFFERED)
+#define IOCTL_DLC_QUERY_INFORMATION _DLC_CONTROL_CODE(14, METHOD_BUFFERED)
+#define IOCTL_DLC_SET_INFORMATION _DLC_CONTROL_CODE(15, METHOD_BUFFERED)
+#define IOCTL_DLC_TIMER_CANCEL _DLC_CONTROL_CODE(16, METHOD_BUFFERED)
+#define IOCTL_DLC_TIMER_CANCEL_GROUP _DLC_CONTROL_CODE(17, METHOD_BUFFERED)
+#define IOCTL_DLC_TIMER_SET _DLC_CONTROL_CODE(18, METHOD_BUFFERED)
+#define IOCTL_DLC_OPEN_SAP _DLC_CONTROL_CODE(19, METHOD_BUFFERED)
+#define IOCTL_DLC_CLOSE_SAP _DLC_CONTROL_CODE(20, METHOD_OUT_DIRECT)
+#define IOCTL_DLC_OPEN_DIRECT _DLC_CONTROL_CODE(21, METHOD_BUFFERED)
+#define IOCTL_DLC_CLOSE_DIRECT _DLC_CONTROL_CODE(22, METHOD_OUT_DIRECT)
+#define IOCTL_DLC_OPEN_ADAPTER _DLC_CONTROL_CODE(23, METHOD_BUFFERED)
+#define IOCTL_DLC_CLOSE_ADAPTER _DLC_CONTROL_CODE(24, METHOD_BUFFERED)
+#define IOCTL_DLC_REALLOCTE_STATION _DLC_CONTROL_CODE(25, METHOD_BUFFERED)
+#define IOCTL_DLC_READ2 _DLC_CONTROL_CODE(26, METHOD_BUFFERED)
+#define IOCTL_DLC_RECEIVE2 _DLC_CONTROL_CODE(27, METHOD_BUFFERED)
+#define IOCTL_DLC_TRANSMIT2 _DLC_CONTROL_CODE(28, METHOD_BUFFERED)
+#define IOCTL_DLC_COMPLETE_COMMAND _DLC_CONTROL_CODE(29, METHOD_BUFFERED)
+#define IOCTL_DLC_TRACE_INITIALIZE _DLC_CONTROL_CODE(30, METHOD_OUT_DIRECT)
+
+#define IOCTL_DLC_MAX _DLC_CONTROL_CODE(30, METHOD_BUFFERED)
+
+#define IOCTL_DLC_LAST_COMMAND 31 // for xlation tables
diff --git a/public/sdk/inc/ntddfs.h b/public/sdk/inc/ntddfs.h
new file mode 100644
index 000000000..1ddc170d1
--- /dev/null
+++ b/public/sdk/inc/ntddfs.h
@@ -0,0 +1,47 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddfs.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the File system device.
+
+Author:
+
+ Steve Wood (stevewo) 27-May-1990
+
+Revision History:
+
+--*/
+
+//
+// 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 DD_FS_DEVICE_NAME "\\Device\\UNKNOWN"
+
+
+//
+// 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_FS_BASE FILE_DEVICE_DISK_FILE_SYSTEM
+
+
+//
+// NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for
+// this device.
+//
+
diff --git a/public/sdk/inc/ntddft.h b/public/sdk/inc/ntddft.h
new file mode 100644
index 000000000..6bf0bd7f7
--- /dev/null
+++ b/public/sdk/inc/ntddft.h
@@ -0,0 +1,206 @@
+/*++
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddft.h
+
+Abstract:
+
+ This file contains NTFT definitions and prototypes.
+
+Authors:
+
+ Bob Rinne
+ Mike Glass
+
+Notes:
+
+Revision History:
+
+--*/
+
+#include <ntdskreg.h>
+
+//
+// Device Control Codes
+//
+
+#define FTTYPE ((ULONG)'f')
+
+#define FT_INITIALIZE_SET CTL_CODE(FTTYPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FT_REGENERATE CTL_CODE(FTTYPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FT_CONFIGURE CTL_CODE(FTTYPE, 2, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FT_VERIFY CTL_CODE(FTTYPE, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FT_SECONDARY_READ CTL_CODE(FTTYPE, 4, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+#define FT_PRIMARY_READ CTL_CODE(FTTYPE, 5, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+#define FT_BALANCED_READ_MODE CTL_CODE(FTTYPE, 6, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FT_SYNC_REDUNDANT_COPY CTL_CODE(FTTYPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FT_SEQUENTIAL_WRITE_MODE CTL_CODE(FTTYPE, 8, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FT_PARALLEL_WRITE_MODE CTL_CODE(FTTYPE, 9, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FT_QUERY_SET_STATE CTL_CODE(FTTYPE,10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// Used as input parameters to the SECONDARY and PRIMARY read device controls
+//
+
+typedef struct _FT_SPECIAL_READ {
+ LARGE_INTEGER ByteOffset;
+ ULONG Length;
+} FT_SPECIAL_READ, *PFT_SPECIAL_READ;
+
+//
+// Used to find a partition in the system.
+//
+
+typedef struct _FT_CONTROL_BLOCK {
+ USHORT Type;
+ USHORT FtGroup;
+} FT_CONTROL_BLOCK, *PFT_CONTROL_BLOCK;
+
+//
+// FT SYNC primary from secondary IOCTL
+//
+
+typedef struct _FT_SYNC_INFORMATION {
+ LARGE_INTEGER ByteOffset;
+ LARGE_INTEGER ByteCount;
+} FT_SYNC_INFORMATION, *PFT_SYNC_INFORMATION;
+
+//
+// Define for registry information.
+//
+
+#define DISK_REGISTRY_KEY "\\REGISTRY\\MACHINE\\SYSTEM\\DISK"
+
+//
+// Define for value name for registry information.
+//
+
+#define DISK_REGISTRY_VALUE "Information"
+
+//
+// Structures for config registry.
+//
+
+//
+// The header for the registry information structure.
+//
+
+#include "pshpack4.h"
+typedef struct _DISK_CONFIG_HEADER {
+
+ ULONG Version;
+ ULONG CheckSum;
+ BOOLEAN DirtyShutdown;
+ UCHAR Reserved[3];
+ ULONG DiskInformationOffset;
+ ULONG DiskInformationSize;
+ ULONG FtInformationOffset;
+ ULONG FtInformationSize;
+ ULONG FtStripeWidth;
+ ULONG FtPoolSize;
+ ULONG NameOffset; // Reserved for future.
+ ULONG NameSize; // Reserved for future.
+
+} DISK_CONFIG_HEADER, *PDISK_CONFIG_HEADER;
+
+#define DISK_INFORMATION_VERSION 0x03
+
+//
+// FT_STATE is an enumerated field that describes the state of the FT
+// volume as a whole.
+//
+
+typedef enum _FT_STATE {
+
+ FtStateOk, // set is complete
+ FtHasOrphan, // set is running, but one member is turned off
+ FtDisabled, // set has been turned off - it cannot be used
+ FtRegenerating, // member of set is being generated from check data
+ FtInitializing, // set is being initialized
+ FtCheckParity, // check data is not in sync
+ FtNoCheckData // parity has not been initialized
+
+} FT_STATE, *PFT_STATE;
+
+//
+// State information for an FT set. The partition state enum is used to
+// specify the state for the complete set.
+//
+
+typedef struct _FT_SET_INFORMATION {
+ ULONG NumberOfMembers;
+ FT_TYPE Type;
+ FT_STATE SetState;
+} FT_SET_INFORMATION, *PFT_SET_INFORMATION;
+
+//
+// The description information for an FT component member.
+//
+
+typedef struct _FT_MEMBER_DESCRIPTION {
+
+ USHORT State;
+ USHORT ReservedShort;
+ ULONG Signature;
+ ULONG OffsetToPartitionInfo;
+ ULONG LogicalNumber;
+
+} FT_MEMBER_DESCRIPTION, *PFT_MEMBER_DESCRIPTION;
+
+//
+// Definitions for FT volume state.
+//
+
+//
+// When this state is set, FT assumes at boot time that the volume
+// must be initialized and starts a system thread of execution to
+// perform the initialization work.
+//
+
+#define FT_VOLUME_INITIALIZING 0x0001
+#define FT_VOLUME_REGENERATING 0x0002
+
+//
+// The description information for an FT component.
+//
+
+typedef struct _FT_DESCRIPTION {
+
+ USHORT NumberOfMembers;
+ USHORT Type;
+ ULONG Reserved;
+
+ //
+ // The volume state will indicate which member is being regenerated
+ //
+
+ FT_STATE FtVolumeState;
+
+ //
+ // Array for NumberOfMembers
+ //
+
+ FT_MEMBER_DESCRIPTION FtMemberDescription[1];
+
+} FT_DESCRIPTION, *PFT_DESCRIPTION;
+
+//
+// Header for all FT information.
+//
+
+typedef struct _FT_REGISTRY {
+
+ USHORT NumberOfComponents;
+ USHORT ReservedShort;
+
+ //
+ // An array of NumberOfComponents
+ //
+
+ FT_DESCRIPTION FtDescription[1];
+
+} FT_REGISTRY, *PFT_REGISTRY;
+#include "poppack.h"
diff --git a/public/sdk/inc/ntddjoy.h b/public/sdk/inc/ntddjoy.h
new file mode 100644
index 000000000..a52c11e68
--- /dev/null
+++ b/public/sdk/inc/ntddjoy.h
@@ -0,0 +1,132 @@
+/*
+Copyright (c) 1995 Microsoft Corporation
+
+Module Name:
+ ntddjoy.h
+
+Abstract:
+ Definitions of all constants and types for the joystick driver.
+*/
+
+
+#ifndef __NTDDJOY_H__
+#define __NTDDJOY_H__
+
+// Device Name
+#define JOY_DD_DEVICE_NAME "\\Device\\IBMJOY"
+#define JOY_DD_DEVICE_NAME_U L"\\Device\\IBMJOY"
+
+// Device Parameters
+#define JOY_DD_NAXES "NumberOfAxes"
+#define JOY_DD_NAXES_U L"NumberOfAxes"
+
+#define JOY_DD_DEVICE_ADDRESS "DeviceAddress"
+#define JOY_DD_DEVICE_ADDRESS_U L"DeviceAddress"
+
+#define JOY_DD_TWOSTICKS "Two Joysticks"
+#define JOY_DD_TWOSTICKS_U L"Two Joysticks"
+
+
+// Device I/O Port Address
+#define JOY_IO_PORT_ADDRESS 0x201
+
+// Device specific bitmasks
+#define X_AXIS_BITMASK 0x01
+
+// Analog joystick bitmasks
+#define JOYSTICK2_BUTTON2 0x80
+#define JOYSTICK2_BUTTON1 0x40
+#define JOYSTICK1_BUTTON2 0x20
+#define JOYSTICK1_BUTTON1 0x10
+#define JOYSTICK2_Y_MASK 0x08
+#define JOYSTICK2_X_MASK 0x04
+#define JOYSTICK1_R_MASK 0x08
+#define JOYSTICK1_Z_MASK 0x04
+#define JOYSTICK1_Y_MASK 0x02
+#define JOYSTICK1_X_MASK 0x01
+
+
+#define JOY_START_TIMERS 0
+
+// Device specific timer values
+#define ANALOG_POLL_TIMEOUT 16000 // 16 mS upper bound on analog polling, 8ms largest expected value, use 16 for safety
+#define ANALOG_POLL_RESOLUTION 100 // 100 uS accuracy on polling time
+
+// Joystick position information is transfered from the device driver to other
+// drivers or applications using the JOY_DD_INPUT_DATA structure. Since
+// the type of data returned varies whether the device is in analog mode or
+// digital mode, a union is formed to convey both types of data. The Mode
+// variable allows the recipient of the data to determing how to interpret
+// the data.
+
+typedef struct {
+
+ // True if the device is unplugged. This is determined by a timeout mechanism
+ BOOL Unplugged;
+
+ // The number of axi configured for this device (specified in the registry).
+ DWORD Axi;
+
+ // current button state bitmask
+ DWORD Buttons;
+
+ // X, Y, Z, and T axi positioning information contained below. The
+ // values are expressed interms of microseconds. The values are
+ // generated by measuring the duration of a pulse supplied by
+ // the IBM compatable or Soundblaster game port. This is the raw
+ // data, and it is the caller's responsibility to perform
+ // calibration, ranging, hysteresis, etc.
+ //
+ // Because of inaccuracies in sampling this data, there is some
+ // variation in readings of a stationary joystick.
+ //
+ // Analog Positioning information for typical joystick
+ // values as follows (range information measured using a
+ // Soundblaster analog game port).
+ //
+ // apprx
+ // name range direction
+ // ---- ----- ---------
+ //
+ // XTime 20..1600 uS 20 = leftmost, 1600 = rightmost
+ // YTime 20..1600 uS 20 = up, 1600 = down
+ // ZTime 20..1600 uS 20 = left, 1600 = right
+ // TTime 20..1600 uS 20 = forward 1600 = back
+ //
+
+ DWORD XTime; // Time in microseconds for X
+ DWORD YTime; // Time in microseconds for Y
+ DWORD ZTime; // Time in microseconds for Z if 3-axis
+ DWORD TTime; // Time in microseconds for Throttle if 4 axis
+ // return 3rd axis for 3 axis joysticks as TTime.
+
+ } JOY_DD_INPUT_DATA, *PJOY_DD_INPUT_DATA;
+
+#define JOY_TYPE 40001
+
+// The following IOCTL code is used to obtain statistical information for
+// debugging and performance testing the joystick driver.
+#define IOCTL_JOY_GET_STATISTICS \
+ CTL_CODE( JOY_TYPE, 0x903, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+// The following IOCTL code is used by the user-mode driver to determine
+// the capabilities which the kernel-mode driver is capable of supporting.
+#define IOCTL_JOY_GET_JOYREGHWCONFIG \
+ CTL_CODE( JOY_TYPE, 0x906, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+// These stats are used for performance testing and debugging
+typedef struct
+{
+ DWORD Polls;
+ DWORD Timeouts;
+ DWORD Frequency;
+ DWORD dwQPCLatency;
+ LONG nQuiesceLoop;
+ DWORD Version;
+ DWORD PolledTooSoon;
+ DWORD NumberOfAxes;
+ BOOL bTwoSticks;
+ DWORD Redo;
+} JOY_STATISTICS, *PJOY_STATISTICS;
+
+#endif // __NTDDJOY_H__
diff --git a/public/sdk/inc/ntddkbd.h b/public/sdk/inc/ntddkbd.h
new file mode 100644
index 000000000..a459c373a
--- /dev/null
+++ b/public/sdk/inc/ntddkbd.h
@@ -0,0 +1,290 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddkbd.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the keyboard device.
+
+Author:
+
+ Lee A. Smith (lees) 02-Aug-1991.
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDKBD_
+#define _NTDDKBD_
+
+//
+// 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 DD_KEYBOARD_DEVICE_NAME "\\Device\\KeyboardClass"
+#define DD_KEYBOARD_DEVICE_NAME_U L"\\Device\\KeyboardClass"
+
+//
+// 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_KEYBOARD_QUERY_ATTRIBUTES CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_KEYBOARD_SET_TYPEMATIC CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0001, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_KEYBOARD_SET_INDICATORS CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0002, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_KEYBOARD_QUERY_TYPEMATIC CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_KEYBOARD_QUERY_INDICATORS CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0020, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_KEYBOARD_INSERT_DATA CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0040, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// NtReadFile Output Buffer record structures for this device.
+//
+
+typedef struct _KEYBOARD_INPUT_DATA {
+
+ //
+ // Unit number. E.g., for \Device\KeyboardPort0 the unit is '0',
+ // for \Device\KeyboardPort1 the unit is '1', and so on.
+ //
+
+ USHORT UnitId;
+
+ //
+ // The "make" scan code (key depression).
+ //
+
+ USHORT MakeCode;
+
+ //
+ // The flags field indicates a "break" (key release) and other
+ // miscellaneous scan code information defined below.
+ //
+
+ USHORT Flags;
+
+ USHORT Reserved;
+
+ //
+ // Device-specific additional information for the event.
+ //
+
+ ULONG ExtraInformation;
+
+} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;
+
+//
+// Define the keyboard overrun MakeCode.
+//
+
+#define KEYBOARD_OVERRUN_MAKE_CODE 0xFF
+
+//
+// Define the keyboard input data Flags.
+//
+
+#define KEY_MAKE 0
+#define KEY_BREAK 1
+#define KEY_E0 2
+#define KEY_E1 4
+
+//
+// NtDeviceIoControlFile Input/Output Buffer record structures for
+// IOCTL_KEYBOARD_QUERY_TYPEMATIC/IOCTL_KEYBOARD_SET_TYPEMATIC.
+//
+
+typedef struct _KEYBOARD_TYPEMATIC_PARAMETERS {
+
+ //
+ // Unit identifier. Specifies the device unit for which this
+ // request is intended.
+ //
+
+ USHORT UnitId;
+
+ //
+ // Typematic rate, in repeats per second.
+ //
+
+ USHORT Rate;
+
+ //
+ // Typematic delay, in milliseconds.
+ //
+
+ USHORT Delay;
+
+} KEYBOARD_TYPEMATIC_PARAMETERS, *PKEYBOARD_TYPEMATIC_PARAMETERS;
+
+//
+// NtDeviceIoControlFile OutputBuffer record structures for
+// IOCTL_KEYBOARD_QUERY_ATTRIBUTES.
+//
+
+typedef struct _KEYBOARD_ID {
+ UCHAR Type; // Keyboard type
+ UCHAR Subtype; // Keyboard subtype (OEM-dependent value)
+} KEYBOARD_ID, *PKEYBOARD_ID;
+
+typedef struct _KEYBOARD_ATTRIBUTES {
+
+ //
+ // Keyboard ID value. Used to distinguish between keyboard types.
+ //
+
+ KEYBOARD_ID KeyboardIdentifier;
+
+ //
+ // Scan code mode.
+ //
+
+ USHORT KeyboardMode;
+
+ //
+ // Number of function keys located on the keyboard.
+ //
+
+ USHORT NumberOfFunctionKeys;
+
+ //
+ // Number of LEDs located on the keyboard.
+ //
+
+ USHORT NumberOfIndicators;
+
+ //
+ // Total number of keys located on the keyboard.
+ //
+
+ USHORT NumberOfKeysTotal;
+
+ //
+ // Length of the typeahead buffer, in bytes.
+ //
+
+ ULONG InputDataQueueLength;
+
+ //
+ // Minimum allowable values of keyboard typematic rate and delay.
+ //
+
+ KEYBOARD_TYPEMATIC_PARAMETERS KeyRepeatMinimum;
+
+ //
+ // Maximum allowable values of keyboard typematic rate and delay.
+ //
+
+ KEYBOARD_TYPEMATIC_PARAMETERS KeyRepeatMaximum;
+
+} KEYBOARD_ATTRIBUTES, *PKEYBOARD_ATTRIBUTES;
+
+//
+// ENHANCED_KEYBOARD() is TRUE if the value for keyboard type indicates an
+// Enhanced (101- or 102-key) or compatible keyboard. The result is FALSE
+// if the keyboard is an old-style AT keyboard (83- or 84- or 86-key keyboard).
+//
+
+#define ENHANCED_KEYBOARD(Id) ((Id).Type == 2 || (Id).Type == 4)
+
+//
+// NtDeviceIoControlFile Input/Output Buffer record structures for
+// IOCTL_KEYBOARD_QUERY_INDICATORS/IOCTL_KEYBOARD_SET_INDICATORS.
+//
+
+typedef struct _KEYBOARD_INDICATOR_PARAMETERS {
+
+ //
+ // Unit identifier. Specifies the device unit for which this
+ // request is intended.
+ //
+
+ USHORT UnitId;
+
+ //
+ // LED indicator state.
+ //
+
+ USHORT LedFlags;
+
+} KEYBOARD_INDICATOR_PARAMETERS, *PKEYBOARD_INDICATOR_PARAMETERS;
+
+//
+// NtDeviceIoControlFile Output Buffer record structures for
+// IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION.
+//
+
+typedef struct _INDICATOR_LIST {
+
+ //
+ // The "make" scan code (key depression).
+ //
+
+ USHORT MakeCode;
+
+ //
+ // The associated LED indicators.
+ //
+
+ USHORT IndicatorFlags;
+
+} INDICATOR_LIST, *PINDICATOR_LIST;
+
+typedef struct _KEYBOARD_INDICATOR_TRANSLATION {
+
+ //
+ // Number of entries in IndicatorList.
+ //
+
+ USHORT NumberOfIndicatorKeys;
+
+ //
+ // List of the scancode-to-indicator mappings.
+ //
+
+ INDICATOR_LIST IndicatorList[1];
+
+} KEYBOARD_INDICATOR_TRANSLATION, *PKEYBOARD_INDICATOR_TRANSLATION;
+
+//
+// Define the keyboard indicators.
+//
+
+#define KEYBOARD_CAPS_LOCK_ON 4
+#define KEYBOARD_NUM_LOCK_ON 2
+#define KEYBOARD_SCROLL_LOCK_ON 1
+
+//
+// Generic NtDeviceIoControlFile Input Buffer record structure for
+// various keyboard IOCTLs.
+//
+
+typedef struct _KEYBOARD_UNIT_ID_PARAMETER {
+
+ //
+ // Unit identifier. Specifies the device unit for which this
+ // request is intended.
+ //
+
+ USHORT UnitId;
+
+} KEYBOARD_UNIT_ID_PARAMETER, *PKEYBOARD_UNIT_ID_PARAMETER;
+
+//
+// Define the base values for the keyboard error log packet's
+// UniqueErrorValue field.
+//
+
+#define KEYBOARD_ERROR_VALUE_BASE 10000
+
+#endif // _NTDDKBD_
diff --git a/public/sdk/inc/ntddmidi.h b/public/sdk/inc/ntddmidi.h
new file mode 100644
index 000000000..44549eb4b
--- /dev/null
+++ b/public/sdk/inc/ntddmidi.h
@@ -0,0 +1,136 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddmidi.h
+
+Abstract:
+
+ This include file defines all constants and types for
+ accessing an NT wave device.
+
+Author:
+
+ Robin Speed (RobinSp) 12-Dec-91
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDMIDI_
+#define _NTDDMIDI_
+
+#include <ntddsnd.h> // general sound stuff
+
+//
+// Device Name - this string is the name of the device. It is the name
+// that when added to the name of the root of the device tree and with
+// the device number appended, gives the name of the device required for
+// a call to NtOpenFile.
+// So for example, if the root is \Device and the Device type is
+// MidiIn and the device number is 2, the full name is \Device\MidiIn2
+//
+
+#define DD_MIDI_IN_DEVICE_NAME "\\Device\\MidiIn"
+#define DD_MIDI_IN_DEVICE_NAME_U L"\\Device\\MidiIn"
+#define DD_MIDI_OUT_DEVICE_NAME "\\Device\\MidiOut"
+#define DD_MIDI_OUT_DEVICE_NAME_U L"\\Device\\MidiOut"
+
+//
+// MIDI device driver IOCTL set
+//
+
+#define IOCTL_MIDI_GET_CAPABILITIES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MIDI_SET_STATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_MIDI_GET_STATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0003, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_MIDI_SET_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MIDI_GET_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MIDI_PLAY CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0006, METHOD_NEITHER, FILE_WRITE_ACCESS)
+#define IOCTL_MIDI_RECORD CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0007, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_MIDI_CACHE_PATCHES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0008, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_MIDI_CACHE_DRUM_PATCHES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+
+//
+// IOCTL used in the debug build only
+//
+
+#if DBG
+
+#define IOCTL_MIDI_SET_DEBUG_LEVEL CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0040, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#endif // DBG
+
+
+//
+// Product Ids - see winmm.h
+//
+
+
+//
+// Midi input output buffer format
+//
+
+typedef struct {
+ LARGE_INTEGER Time; // Time when data received
+ // (in units of 100ns from when
+ // midi input was started)
+ UCHAR Data[sizeof(ULONG)]; // Data (at least 4 byts for
+ // alignment).
+} MIDI_DD_INPUT_DATA, *PMIDI_DD_INPUT_DATA;
+
+
+//
+// Midi volume structure
+//
+
+typedef struct _MIDI_DD_VOLUME {
+ ULONG Left;
+ ULONG Right;
+} MIDI_DD_VOLUME, *PMIDI_DD_VOLUME;
+
+//
+// Patch array structure
+//
+
+//
+// Midi cache patches structures
+//
+
+typedef struct _MIDI_DD_CACHE_PATCHES {
+ ULONG Bank;
+ ULONG Flags;
+ USHORT Patches[128];
+} MIDI_DD_CACHE_PATCHES, *PMIDI_DD_CACHE_PATCHES;
+
+//
+// Midi cache drum patches structures
+//
+
+typedef struct _MIDI_DD_CACHE_DRUM_PATCHES {
+ ULONG Patch;
+ ULONG Flags;
+ USHORT DrumPatches[128];
+} MIDI_DD_CACHE_DRUM_PATCHES, *PMIDI_DD_CACHE_DRUM_PATCHES;
+
+//
+// State flags used to set the state of a driver
+//
+
+#define MIDI_DD_STOP 0x0001
+#define MIDI_DD_PLAY 0x0002 // output devices only
+#define MIDI_DD_RECORD 0x0003 // input devices only
+#define MIDI_DD_RESET 0x0004
+
+//
+// States returned by the get state ioctl
+//
+
+#define MIDI_DD_IDLE 0x0000
+#define MIDI_DD_STOPPED 0x0001 // stopped
+#define MIDI_DD_PLAYING 0x0002 // output devices only
+#define MIDI_DD_RECORDING 0x0003 // input devices only
+
+#endif // _NTDDMIDI_
diff --git a/public/sdk/inc/ntddmix.h b/public/sdk/inc/ntddmix.h
new file mode 100644
index 000000000..0aec9a75c
--- /dev/null
+++ b/public/sdk/inc/ntddmix.h
@@ -0,0 +1,206 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1992-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddmix.h
+
+Abstract:
+
+ This include file defines all constants and types for
+ accessing a Windows NT sound mixer device.
+
+Author:
+
+ Robin Speed (RobinSp) - 14-Sep-1993
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDMIX_
+#define _NTDDMIX_
+
+#include <ntddsnd.h> // general sound stuff
+
+#define IOCTL_MIX_BASE 0x0180
+
+//
+// Device Name - this string is the name of the device. It is the name
+// that when added to the name of the root of the device tree and with
+// the device number appended, gives the name of the device required for
+// a call to NtOpenFile.
+// So for example, if the root is \Device and the Device type is
+// MMMix and the device number is 2, the full name is \Device\MMMix2
+//
+
+#define DD_MIX_DEVICE_NAME "\\Device\\MMMix"
+#define DD_MIX_DEVICE_NAME_U L"\\Device\\MMMix"
+
+//
+// Mixer device driver IOCTL set
+// No caps call - the caps are dumped to the registry on load which saves
+// some code and time.
+//
+
+#define IOCTL_MIX_GET_CONFIGURATION CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIX_BASE + 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MIX_GET_CONTROL_DATA CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIX_BASE + 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MIX_GET_LINE_DATA CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIX_BASE + 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_MIX_REQUEST_NOTIFY CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIX_BASE + 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+//
+// mix structures
+//
+
+//
+// IOCTL_MIX_GET_LINE_DATA and
+// IOCTL_MIX_GET_CONTROL_DATA
+//
+// Line structure (NB LineID is implicit from location in array)
+//
+
+typedef struct {
+ ULONG Id; // Either Line or control ID
+} MIXER_DD_READ_DATA, *PMIXER_DD_READ_DATA;
+
+//
+// Variable line data
+//
+
+typedef struct {
+ ULONG fdwLine;
+} MIXER_DD_LINE_DATA;
+
+typedef struct {
+ UCHAR Destination; // Destination
+ UCHAR Source; // Source (relative to destination)
+ UCHAR cChannels;
+ UCHAR cConnections; // Redundant
+ UCHAR cControls; // NB - redundant - could be deduced
+ // from the control set.
+ ULONG dwUser; // settable?
+ SHORT ShortNameStringId;
+ SHORT LongNameStringId;
+ ULONG dwComponentType; // SRC and DEST types
+
+ //
+ // Target information
+ //
+
+ USHORT Type;
+ USHORT wPid; // No USHORT !!!
+ SHORT PnameStringId; // Target product name
+
+
+} MIXER_DD_LINE_CONFIGURATION_DATA, *PMIXER_DD_LINE_CONFIGURATION_DATA;
+
+//
+// Control structure (NB Control ID is implicit from location in array)
+//
+
+typedef struct {
+ ULONG dwControlType;
+ ULONG fdwControl;
+ UCHAR LineID;
+ UCHAR cMultipleItems;
+ SHORT ShortNameStringId;
+ SHORT LongNameStringId;
+
+ union
+ {
+ struct
+ {
+ LONG lMinimum; // signed minimum for this control
+ LONG lMaximum; // signed maximum for this control
+ };
+ struct
+ {
+ ULONG dwMinimum; // unsigned minimum for this control
+ ULONG dwMaximum; // unsigned maximum for this control
+ };
+ ULONG dwReserved[6];
+ } Bounds;
+ union
+ {
+ ULONG cSteps; // # of steps between min & max
+ ULONG cbCustomData; // size in bytes of custom data
+ ULONG dwReserved[6]; // !!! needed? we have cbStruct....
+ } Metrics;
+
+ ULONG TextDataOffset; // Offset to strings if any (or 0)
+ // Each string is indexed by a string id.
+} MIXER_DD_CONTROL_CONFIGURATION_DATA, *PMIXER_DD_CONTROL_CONFIGURATION_DATA;
+
+typedef struct {
+ ULONG dwParam1;
+ ULONG dwParam2;
+ SHORT SubControlTextStringId;
+ USHORT ControlId; // Debug cross reference.
+} MIXER_DD_CONTROL_LISTTEXT, *PMIXER_DD_CONTROL_LISTTEXT;
+
+//
+// Capabilities data (using string id)
+//
+
+typedef struct {
+ USHORT wMid; // manufacturer id
+ USHORT wPid; // product id
+ MMVERSION vDriverVersion; // version of the driver
+ ULONG PnameStringId; // product name
+ ULONG fdwSupport; // misc. support bits
+ ULONG cDestinations; // count of destinations
+} MIXER_DD_CAPS;
+//
+// The data dumped into the registry.
+// The two counts are followed immediately by the appropriate number of
+//
+// MIXER_DD_LINE_CONFIGURATION_DATA and
+//
+// MIXER_DD_CONTROL_CONFIGURATION_DATA structures
+//
+// Next is the set of
+//
+// MIXER_DD_CONTROL_LISTTEXT structures ordered by control id.
+//
+// The MIXER_DD_LINE_CONFIGURATION_DATA structures must be ordered
+// dest lines first (ie the destination lines have the lowest ids).
+// The source lines must be ordered so that their destination lines
+// either increase and stay the same - ie the sources for the first
+// destination are first etc etc.
+//
+
+typedef struct {
+ ULONG cbSize; // Total size including this field
+ MIXER_DD_CAPS DeviceCaps; // Mixer device capabilities
+ ULONG NumberOfLines;
+ ULONG NumberOfControls;
+} MIXER_DD_CONFIGURATION_DATA, *PMIXER_DD_CONFIGURATION_DATA;
+//
+//
+// IOCTL_MIX_REQUEST_NOTIFY - use same data for input and output
+// This request will continue to be completed until either
+// SetCurrentLogicalTime is set or
+//
+// CurrentLogicalTime = Logical time of last change to mixer
+// controls or lines.
+//
+// It will next be completed either when the device is closed or the
+// next change is made to a control or line.
+//
+
+typedef struct {
+ LARGE_INTEGER CurrentLogicalTime; // Used by driver
+ BOOLEAN Initialized; // Set to 0 on first use
+ USHORT Message; // What sort of thing changed?
+ USHORT Id; // Id of thing that changed
+} MIXER_DD_REQUEST_NOTIFY, *PMIXER_DD_REQUEST_NOTIFY;
+
+
+//
+// Data returned by IOCTL_MIX_GET_CAPABILITIES is MIXCAPSW structure
+// defined in mmsystem.h
+//
+
+#endif // _NTDDMIX_
+
diff --git a/public/sdk/inc/ntddmodm.h b/public/sdk/inc/ntddmodm.h
new file mode 100644
index 000000000..edb1996dd
--- /dev/null
+++ b/public/sdk/inc/ntddmodm.h
@@ -0,0 +1,35 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1995 Microsoft Corporation
+
+Module Name:
+
+ ntddmodm.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the modem device.
+
+Author:
+
+ Tony Ercolano (tonye) 14-Jul-1995
+
+Revision History:
+
+--*/
+
+
+//
+// NtDeviceIoControlFile IoControlCode values for this device.
+//
+
+#define IOCTL_MODEM_GET_PASSTHROUGH CTL_CODE(FILE_DEVICE_MODEM, 1,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_MODEM_SET_PASSTHROUGH CTL_CODE(FILE_DEVICE_MODEM, 2,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+
+#define MODEM_NOPASSTHROUGH 0x00000000U
+#define MODEM_PASSTHROUGH 0x00000001U
+#define MODEM_DCDSNIFF 0x00000002U
+
+
diff --git a/public/sdk/inc/ntddmou.h b/public/sdk/inc/ntddmou.h
new file mode 100644
index 000000000..940d75523
--- /dev/null
+++ b/public/sdk/inc/ntddmou.h
@@ -0,0 +1,205 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddmou.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the mouse device.
+
+Author:
+
+ Lee A. Smith (lees) 02-Aug-1991.
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDMOU_
+#define _NTDDMOU_
+
+//
+// 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 DD_MOUSE_DEVICE_NAME "\\Device\\PointerClass"
+#define DD_MOUSE_DEVICE_NAME_U L"\\Device\\PointerClass"
+
+//
+// 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_MOUSE_QUERY_ATTRIBUTES CTL_CODE(FILE_DEVICE_MOUSE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_MOUSE_INSERT_DATA CTL_CODE(FILE_DEVICE_MOUSE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// NtReadFile Output Buffer record structures for this device.
+//
+
+typedef struct _MOUSE_INPUT_DATA {
+
+ //
+ // Unit number. E.g., for \Device\PointerPort0 the unit is '0',
+ // for \Device\PointerPort1 the unit is '1', and so on.
+ //
+
+ USHORT UnitId;
+
+ //
+ // Indicator flags.
+ //
+
+ USHORT Flags;
+
+ //
+ // The transition state of the mouse buttons.
+ //
+
+ union {
+ ULONG Buttons;
+ struct {
+ USHORT ButtonFlags;
+ USHORT ButtonData;
+ };
+ };
+
+
+ //
+ // The raw state of the mouse buttons.
+ //
+
+ ULONG RawButtons;
+
+ //
+ // The signed relative or absolute motion in the X direction.
+ //
+
+ LONG LastX;
+
+ //
+ // The signed relative or absolute motion in the Y direction.
+ //
+
+ LONG LastY;
+
+ //
+ // Device-specific additional information for the event.
+ //
+
+ ULONG ExtraInformation;
+
+} MOUSE_INPUT_DATA, *PMOUSE_INPUT_DATA;
+
+//
+// Define the mouse button state indicators.
+//
+
+#define MOUSE_LEFT_BUTTON_DOWN 0x0001 // Left Button changed to down.
+#define MOUSE_LEFT_BUTTON_UP 0x0002 // Left Button changed to up.
+#define MOUSE_RIGHT_BUTTON_DOWN 0x0004 // Right Button changed to down.
+#define MOUSE_RIGHT_BUTTON_UP 0x0008 // Right Button changed to up.
+#define MOUSE_MIDDLE_BUTTON_DOWN 0x0010 // Middle Button changed to down.
+#define MOUSE_MIDDLE_BUTTON_UP 0x0020 // Middle Button changed to up.
+
+#define MOUSE_BUTTON_1_DOWN MOUSE_LEFT_BUTTON_DOWN
+#define MOUSE_BUTTON_1_UP MOUSE_LEFT_BUTTON_UP
+#define MOUSE_BUTTON_2_DOWN MOUSE_RIGHT_BUTTON_DOWN
+#define MOUSE_BUTTON_2_UP MOUSE_RIGHT_BUTTON_UP
+#define MOUSE_BUTTON_3_DOWN MOUSE_MIDDLE_BUTTON_DOWN
+#define MOUSE_BUTTON_3_UP MOUSE_MIDDLE_BUTTON_UP
+
+#define MOUSE_BUTTON_4_DOWN 0x0040
+#define MOUSE_BUTTON_4_UP 0x0080
+#define MOUSE_BUTTON_5_DOWN 0x0100
+#define MOUSE_BUTTON_5_UP 0x0200
+
+#define MOUSE_WHEEL 0x0400
+
+//
+// Define the mouse indicator flags.
+//
+
+#define MOUSE_MOVE_RELATIVE 0
+#define MOUSE_MOVE_ABSOLUTE 1
+
+//
+// NtDeviceIoControlFile OutputBuffer record structures for
+// IOCTL_MOUSE_QUERY_ATTRIBUTES.
+//
+
+typedef struct _MOUSE_ATTRIBUTES {
+
+ //
+ // Mouse ID value. Used to distinguish between mouse types.
+ //
+
+ USHORT MouseIdentifier;
+
+ //
+ // Number of buttons located on the mouse.
+ //
+
+ USHORT NumberOfButtons;
+
+ //
+ // Specifies the rate at which the hardware reports mouse input
+ // (reports per second). This may not be applicable for every mouse device.
+ //
+
+ USHORT SampleRate;
+
+ //
+ // Length of the readahead buffer, in bytes.
+ //
+
+ ULONG InputDataQueueLength;
+
+} MOUSE_ATTRIBUTES, *PMOUSE_ATTRIBUTES;
+
+//
+// Define the mouse identifier types.
+//
+
+#define MOUSE_INPORT_HARDWARE 0x0001
+#define MOUSE_I8042_HARDWARE 0x0002
+#define MOUSE_SERIAL_HARDWARE 0x0004
+#define BALLPOINT_I8042_HARDWARE 0x0008
+#define BALLPOINT_SERIAL_HARDWARE 0x0010
+#define WHEELMOUSE_I8042_HARDWARE 0x0020
+#define WHEELMOUSE_SERIAL_HARDWARE 0x0040
+
+//
+// Generic NtDeviceIoControlFile Input Buffer record structure for
+// various mouse IOCTLs.
+//
+
+typedef struct _MOUSE_UNIT_ID_PARAMETER {
+
+ //
+ // Unit identifier. Specifies the device unit for which this
+ // request is intended.
+ //
+
+ USHORT UnitId;
+
+} MOUSE_UNIT_ID_PARAMETER, *PMOUSE_UNIT_ID_PARAMETER;
+
+//
+// Define the base values for the mouse error log packet's
+// UniqueErrorValue field.
+//
+
+#define MOUSE_ERROR_VALUE_BASE 20000
+
+#endif // _NTDDMOU_
diff --git a/public/sdk/inc/ntddmup.h b/public/sdk/inc/ntddmup.h
new file mode 100644
index 000000000..c0d335283
--- /dev/null
+++ b/public/sdk/inc/ntddmup.h
@@ -0,0 +1,67 @@
+/*++ BUILD Version: 0001 // Increent this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddmup.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Multiple UNC prodiver system device.
+
+Author:
+
+ Manny Weiser (mannyw) 27-Dec-1991
+
+Revision History:
+
+--*/
+
+//
+// Device Name - this string is the name of the device. It is the name
+// that should be passed to NtOpenFile when accessing the device.
+//
+//
+
+#define DD_MUP_DEVICE_NAME L"\\Device\\Mup"
+
+//
+// NtFsControlFile FsControlCode values for this device.
+//
+
+#define FSCTL_MUP_REGISTER_UNC_PROVIDER CTL_CODE(FILE_DEVICE_MULTI_UNC_PROVIDER, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// Fs control parameter blocks.
+//
+
+typedef struct _REDIRECTOR_REGISTRATION {
+ ULONG DeviceNameOffset;
+ ULONG DeviceNameLength;
+ ULONG ShortNameOffset;
+ ULONG ShortNameLength;
+ BOOLEAN MailslotsSupported;
+ // PWCH DeviceName[];
+ // PWCH ShortName[];
+} REDIRECTOR_REGISTRATION, *PREDIRECTOR_REGISTRATION;
+
+
+//!!! Move to redir
+//
+// NtDeviceIoControlFile calls to the redirector
+//
+
+#define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+typedef struct _QUERY_PATH_REQUEST {
+ ULONG PathNameLength;
+ PIO_SECURITY_CONTEXT SecurityContext;
+ WCHAR FilePathName[1];
+} QUERY_PATH_REQUEST, *PQUERY_PATH_REQUEST;
+
+typedef struct _QUERY_PATH_RESPONSE {
+ ULONG LengthAccepted;
+} QUERY_PATH_RESPONSE, *PQUERY_PATH_RESPONSE;
+
diff --git a/public/sdk/inc/ntddndis.h b/public/sdk/inc/ntddndis.h
new file mode 100644
index 000000000..ee7e4f371
--- /dev/null
+++ b/public/sdk/inc/ntddndis.h
@@ -0,0 +1,1542 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddndis.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Network driver interface device.
+
+Author:
+
+ Steve Wood (stevewo) 27-May-1990
+
+Revision History:
+
+ Adam Barr (adamba) 04-Nov-1992 added the correct values for NDIS 3.0.
+ Jameel Hyder (jameelh) 01-Aug-95 added Pnp IoCTLs and structures
+ Kyle Brandon (kyleb) 09/24/96 added general co ndis oids.
+
+--*/
+
+#ifndef _NTDDNDIS_
+#define _NTDDNDIS_
+
+
+//
+// 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 DD_NDIS_DEVICE_NAME "\\Device\\UNKNOWN"
+
+
+//
+// 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 _NDIS_CONTROL_CODE(request,method) \
+ CTL_CODE(FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS)
+
+#define IOCTL_NDIS_QUERY_GLOBAL_STATS _NDIS_CONTROL_CODE( 0, METHOD_OUT_DIRECT )
+#define IOCTL_NDIS_QUERY_ALL_STATS _NDIS_CONTROL_CODE( 1, METHOD_OUT_DIRECT )
+#define IOCTL_NDIS_ADD_DEVICE _NDIS_CONTROL_CODE( 2, METHOD_BUFFERED )
+#define IOCTL_NDIS_DELETE_DEVICE _NDIS_CONTROL_CODE( 3, METHOD_BUFFERED )
+#define IOCTL_NDIS_TRANSLATE_NAME _NDIS_CONTROL_CODE( 4, METHOD_BUFFERED )
+#define IOCTL_NDIS_ADD_TDI_DEVICE _NDIS_CONTROL_CODE( 5, METHOD_BUFFERED )
+#define IOCTL_NDIS_NOTIFY_PROTOCOL _NDIS_CONTROL_CODE( 6, METHOD_BUFFERED )
+#define IOCTL_NDIS_GET_LOG_DATA _NDIS_CONTROL_CODE( 7, METHOD_OUT_DIRECT )
+
+//
+// NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for
+// this device.
+//
+
+//
+// This is the type of an NDIS OID value.
+//
+
+typedef ULONG NDIS_OID, *PNDIS_OID;
+
+
+//
+// IOCTL_NDIS_QUERY_ALL_STATS returns a sequence of these, packed
+// together (no padding is required since statistics all have
+// four or eight bytes of data).
+//
+
+typedef struct _NDIS_STATISTICS_VALUE {
+ NDIS_OID Oid;
+ ULONG DataLength;
+ UCHAR Data[1]; // variable length
+} NDIS_STATISTICS_VALUE, *PNDIS_STATISTICS_VALUE;
+
+
+//
+// Structure used by TRANSLATE_NAME IOCTL
+//
+typedef struct _NET_PNP_ID
+{
+ ULONG ClassId;
+ ULONG Token;
+} NET_PNP_ID, *PNET_PNP_ID;
+
+
+typedef struct _NET_PNP_TRANSLATE_LIST
+{
+ ULONG BytesNeeded;
+ NET_PNP_ID IdArray[ANYSIZE_ARRAY];
+} NET_PNP_TRANSLATE_LIST, *PNET_PNP_TRANSLATE_LIST;
+
+//
+// Structure used to define a self-contained variable data structure
+//
+typedef struct _NDIS_VAR_DATA_DESC
+{
+ USHORT Length; // # of octects of data
+ USHORT MaximumLength; // # of octects available
+ LONG Offset; // Offset of data relative to the descriptor
+} NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
+
+//
+// Object Identifiers used by NdisRequest Query/Set Information
+//
+
+//
+// General Objects
+//
+
+#define OID_GEN_SUPPORTED_LIST 0x00010101
+#define OID_GEN_HARDWARE_STATUS 0x00010102
+#define OID_GEN_MEDIA_SUPPORTED 0x00010103
+#define OID_GEN_MEDIA_IN_USE 0x00010104
+#define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
+#define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
+#define OID_GEN_LINK_SPEED 0x00010107
+#define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
+#define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
+#define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010A
+#define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010B
+#define OID_GEN_VENDOR_ID 0x0001010C
+#define OID_GEN_VENDOR_DESCRIPTION 0x0001010D
+#define OID_GEN_CURRENT_PACKET_FILTER 0x0001010E
+#define OID_GEN_CURRENT_LOOKAHEAD 0x0001010F
+#define OID_GEN_DRIVER_VERSION 0x00010110
+#define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
+#define OID_GEN_PROTOCOL_OPTIONS 0x00010112
+#define OID_GEN_MAC_OPTIONS 0x00010113
+#define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
+#define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
+#define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
+
+#define OID_GEN_XMIT_OK 0x00020101
+#define OID_GEN_RCV_OK 0x00020102
+#define OID_GEN_XMIT_ERROR 0x00020103
+#define OID_GEN_RCV_ERROR 0x00020104
+#define OID_GEN_RCV_NO_BUFFER 0x00020105
+
+#define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
+#define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
+#define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
+#define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
+#define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
+#define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
+#define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
+#define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
+#define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
+#define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020A
+#define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B
+#define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020C
+
+#define OID_GEN_RCV_CRC_ERROR 0x0002020D
+#define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020E
+
+#define OID_GEN_GET_TIME_CAPS 0x0002020F
+#define OID_GEN_GET_NETCARD_TIME 0x00020210
+
+//
+// These are connection-oriented general OIDs.
+// These replace the above OIDs for connection-oriented media.
+//
+#define OID_GEN_CO_SUPPORTED_LIST 0x00010101
+#define OID_GEN_CO_HARDWARE_STATUS 0x00010102
+#define OID_GEN_CO_MEDIA_SUPPORTED 0x00010103
+#define OID_GEN_CO_MEDIA_IN_USE 0x00010104
+#define OID_GEN_CO_LINK_SPEED 0x00010105
+#define OID_GEN_CO_VENDOR_ID 0x00010106
+#define OID_GEN_CO_VENDOR_DESCRIPTION 0x00010107
+#define OID_GEN_CO_DRIVER_VERSION 0x00010108
+#define OID_GEN_CO_PROTOCOL_OPTIONS 0x00010109
+#define OID_GEN_CO_MAC_OPTIONS 0x0001010A
+#define OID_GEN_CO_MEDIA_CONNECT_STATUS 0x0001010B
+#define OID_GEN_CO_VENDOR_DRIVER_VERSION 0x0001010C
+#define OID_GEN_CO_MINIMUM_LINK_SPEED 0x0001010D
+
+#define OID_GEN_CO_GET_TIME_CAPS 0x00010201
+#define OID_GEN_CO_GET_NETCARD_TIME 0x00010202
+
+//
+// These are connection-oriented statistics OIDs.
+//
+#define OID_GEN_CO_XMIT_PDUS_OK 0x00020101
+#define OID_GEN_CO_RCV_PDUS_OK 0x00020102
+#define OID_GEN_CO_XMIT_PDUS_ERROR 0x00020103
+#define OID_GEN_CO_RCV_PDUS_ERROR 0x00020104
+#define OID_GEN_CO_RCV_PDUS_NO_BUFFER 0x00020105
+
+
+#define OID_GEN_CO_RCV_CRC_ERROR 0x00020201
+#define OID_GEN_CO_TRANSMIT_QUEUE_LENGTH 0x00020202
+#define OID_GEN_CO_BYTES_XMIT 0x00020203
+#define OID_GEN_CO_BYTES_RCV 0x00020204
+#define OID_GEN_CO_BYTES_XMIT_OUTSTANDING 0x00020205
+#define OID_GEN_CO_NETCARD_LOAD 0x00020206
+
+//
+// These are objects for Connection-oriented media call-managers and are not
+// valid for ndis drivers. Under construction.
+//
+#define OID_CO_ADD_PVC 0xFF000001
+#define OID_CO_DELETE_PVC 0xFF000002
+#define OID_CO_GET_CALL_INFORMATION 0xFF000003
+#define OID_CO_ADD_ADDRESS 0xFF000004
+#define OID_CO_DELETE_ADDRESS 0xFF000005
+#define OID_CO_GET_ADDRESSES 0xFF000006
+#define OID_CO_ADDRESS_CHANGE 0xFF000007
+#define OID_CO_SIGNALING_ENABLED 0xFF000008
+#define OID_CO_SIGNALING_DISABLED 0xFF000009
+
+
+//
+// 802.3 Objects (Ethernet)
+//
+
+#define OID_802_3_PERMANENT_ADDRESS 0x01010101
+#define OID_802_3_CURRENT_ADDRESS 0x01010102
+#define OID_802_3_MULTICAST_LIST 0x01010103
+#define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
+#define OID_802_3_MAC_OPTIONS 0x01010105
+
+//
+//
+#define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001
+
+#define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
+#define OID_802_3_XMIT_ONE_COLLISION 0x01020102
+#define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
+
+#define OID_802_3_XMIT_DEFERRED 0x01020201
+#define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
+#define OID_802_3_RCV_OVERRUN 0x01020203
+#define OID_802_3_XMIT_UNDERRUN 0x01020204
+#define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
+#define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
+#define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
+
+
+//
+// 802.5 Objects (Token-Ring)
+//
+
+#define OID_802_5_PERMANENT_ADDRESS 0x02010101
+#define OID_802_5_CURRENT_ADDRESS 0x02010102
+#define OID_802_5_CURRENT_FUNCTIONAL 0x02010103
+#define OID_802_5_CURRENT_GROUP 0x02010104
+#define OID_802_5_LAST_OPEN_STATUS 0x02010105
+#define OID_802_5_CURRENT_RING_STATUS 0x02010106
+#define OID_802_5_CURRENT_RING_STATE 0x02010107
+
+#define OID_802_5_LINE_ERRORS 0x02020101
+#define OID_802_5_LOST_FRAMES 0x02020102
+
+#define OID_802_5_BURST_ERRORS 0x02020201
+#define OID_802_5_AC_ERRORS 0x02020202
+#define OID_802_5_ABORT_DELIMETERS 0x02020203
+#define OID_802_5_FRAME_COPIED_ERRORS 0x02020204
+#define OID_802_5_FREQUENCY_ERRORS 0x02020205
+#define OID_802_5_TOKEN_ERRORS 0x02020206
+#define OID_802_5_INTERNAL_ERRORS 0x02020207
+
+
+//
+// FDDI Objects
+//
+
+#define OID_FDDI_LONG_PERMANENT_ADDR 0x03010101
+#define OID_FDDI_LONG_CURRENT_ADDR 0x03010102
+#define OID_FDDI_LONG_MULTICAST_LIST 0x03010103
+#define OID_FDDI_LONG_MAX_LIST_SIZE 0x03010104
+#define OID_FDDI_SHORT_PERMANENT_ADDR 0x03010105
+#define OID_FDDI_SHORT_CURRENT_ADDR 0x03010106
+#define OID_FDDI_SHORT_MULTICAST_LIST 0x03010107
+#define OID_FDDI_SHORT_MAX_LIST_SIZE 0x03010108
+
+#define OID_FDDI_ATTACHMENT_TYPE 0x03020101
+#define OID_FDDI_UPSTREAM_NODE_LONG 0x03020102
+#define OID_FDDI_DOWNSTREAM_NODE_LONG 0x03020103
+#define OID_FDDI_FRAME_ERRORS 0x03020104
+#define OID_FDDI_FRAMES_LOST 0x03020105
+#define OID_FDDI_RING_MGT_STATE 0x03020106
+#define OID_FDDI_LCT_FAILURES 0x03020107
+#define OID_FDDI_LEM_REJECTS 0x03020108
+#define OID_FDDI_LCONNECTION_STATE 0x03020109
+
+#define OID_FDDI_SMT_STATION_ID 0x03030201
+#define OID_FDDI_SMT_OP_VERSION_ID 0x03030202
+#define OID_FDDI_SMT_HI_VERSION_ID 0x03030203
+#define OID_FDDI_SMT_LO_VERSION_ID 0x03030204
+#define OID_FDDI_SMT_MANUFACTURER_DATA 0x03030205
+#define OID_FDDI_SMT_USER_DATA 0x03030206
+#define OID_FDDI_SMT_MIB_VERSION_ID 0x03030207
+#define OID_FDDI_SMT_MAC_CT 0x03030208
+#define OID_FDDI_SMT_NON_MASTER_CT 0x03030209
+#define OID_FDDI_SMT_MASTER_CT 0x0303020A
+#define OID_FDDI_SMT_AVAILABLE_PATHS 0x0303020B
+#define OID_FDDI_SMT_CONFIG_CAPABILITIES 0x0303020C
+#define OID_FDDI_SMT_CONFIG_POLICY 0x0303020D
+#define OID_FDDI_SMT_CONNECTION_POLICY 0x0303020E
+#define OID_FDDI_SMT_T_NOTIFY 0x0303020F
+#define OID_FDDI_SMT_STAT_RPT_POLICY 0x03030210
+#define OID_FDDI_SMT_TRACE_MAX_EXPIRATION 0x03030211
+#define OID_FDDI_SMT_PORT_INDEXES 0x03030212
+#define OID_FDDI_SMT_MAC_INDEXES 0x03030213
+#define OID_FDDI_SMT_BYPASS_PRESENT 0x03030214
+#define OID_FDDI_SMT_ECM_STATE 0x03030215
+#define OID_FDDI_SMT_CF_STATE 0x03030216
+#define OID_FDDI_SMT_HOLD_STATE 0x03030217
+#define OID_FDDI_SMT_REMOTE_DISCONNECT_FLAG 0x03030218
+#define OID_FDDI_SMT_STATION_STATUS 0x03030219
+#define OID_FDDI_SMT_PEER_WRAP_FLAG 0x0303021A
+#define OID_FDDI_SMT_MSG_TIME_STAMP 0x0303021B
+#define OID_FDDI_SMT_TRANSITION_TIME_STAMP 0x0303021C
+#define OID_FDDI_SMT_SET_COUNT 0x0303021D
+#define OID_FDDI_SMT_LAST_SET_STATION_ID 0x0303021E
+#define OID_FDDI_MAC_FRAME_STATUS_FUNCTIONS 0x0303021F
+#define OID_FDDI_MAC_BRIDGE_FUNCTIONS 0x03030220
+#define OID_FDDI_MAC_T_MAX_CAPABILITY 0x03030221
+#define OID_FDDI_MAC_TVX_CAPABILITY 0x03030222
+#define OID_FDDI_MAC_AVAILABLE_PATHS 0x03030223
+#define OID_FDDI_MAC_CURRENT_PATH 0x03030224
+#define OID_FDDI_MAC_UPSTREAM_NBR 0x03030225
+#define OID_FDDI_MAC_DOWNSTREAM_NBR 0x03030226
+#define OID_FDDI_MAC_OLD_UPSTREAM_NBR 0x03030227
+#define OID_FDDI_MAC_OLD_DOWNSTREAM_NBR 0x03030228
+#define OID_FDDI_MAC_DUP_ADDRESS_TEST 0x03030229
+#define OID_FDDI_MAC_REQUESTED_PATHS 0x0303022A
+#define OID_FDDI_MAC_DOWNSTREAM_PORT_TYPE 0x0303022B
+#define OID_FDDI_MAC_INDEX 0x0303022C
+#define OID_FDDI_MAC_SMT_ADDRESS 0x0303022D
+#define OID_FDDI_MAC_LONG_GRP_ADDRESS 0x0303022E
+#define OID_FDDI_MAC_SHORT_GRP_ADDRESS 0x0303022F
+#define OID_FDDI_MAC_T_REQ 0x03030230
+#define OID_FDDI_MAC_T_NEG 0x03030231
+#define OID_FDDI_MAC_T_MAX 0x03030232
+#define OID_FDDI_MAC_TVX_VALUE 0x03030233
+#define OID_FDDI_MAC_T_PRI0 0x03030234
+#define OID_FDDI_MAC_T_PRI1 0x03030235
+#define OID_FDDI_MAC_T_PRI2 0x03030236
+#define OID_FDDI_MAC_T_PRI3 0x03030237
+#define OID_FDDI_MAC_T_PRI4 0x03030238
+#define OID_FDDI_MAC_T_PRI5 0x03030239
+#define OID_FDDI_MAC_T_PRI6 0x0303023A
+#define OID_FDDI_MAC_FRAME_CT 0x0303023B
+#define OID_FDDI_MAC_COPIED_CT 0x0303023C
+#define OID_FDDI_MAC_TRANSMIT_CT 0x0303023D
+#define OID_FDDI_MAC_TOKEN_CT 0x0303023E
+#define OID_FDDI_MAC_ERROR_CT 0x0303023F
+#define OID_FDDI_MAC_LOST_CT 0x03030240
+#define OID_FDDI_MAC_TVX_EXPIRED_CT 0x03030241
+#define OID_FDDI_MAC_NOT_COPIED_CT 0x03030242
+#define OID_FDDI_MAC_LATE_CT 0x03030243
+#define OID_FDDI_MAC_RING_OP_CT 0x03030244
+#define OID_FDDI_MAC_FRAME_ERROR_THRESHOLD 0x03030245
+#define OID_FDDI_MAC_FRAME_ERROR_RATIO 0x03030246
+#define OID_FDDI_MAC_NOT_COPIED_THRESHOLD 0x03030247
+#define OID_FDDI_MAC_NOT_COPIED_RATIO 0x03030248
+#define OID_FDDI_MAC_RMT_STATE 0x03030249
+#define OID_FDDI_MAC_DA_FLAG 0x0303024A
+#define OID_FDDI_MAC_UNDA_FLAG 0x0303024B
+#define OID_FDDI_MAC_FRAME_ERROR_FLAG 0x0303024C
+#define OID_FDDI_MAC_NOT_COPIED_FLAG 0x0303024D
+#define OID_FDDI_MAC_MA_UNITDATA_AVAILABLE 0x0303024E
+#define OID_FDDI_MAC_HARDWARE_PRESENT 0x0303024F
+#define OID_FDDI_MAC_MA_UNITDATA_ENABLE 0x03030250
+#define OID_FDDI_PATH_INDEX 0x03030251
+#define OID_FDDI_PATH_RING_LATENCY 0x03030252
+#define OID_FDDI_PATH_TRACE_STATUS 0x03030253
+#define OID_FDDI_PATH_SBA_PAYLOAD 0x03030254
+#define OID_FDDI_PATH_SBA_OVERHEAD 0x03030255
+#define OID_FDDI_PATH_CONFIGURATION 0x03030256
+#define OID_FDDI_PATH_T_R_MODE 0x03030257
+#define OID_FDDI_PATH_SBA_AVAILABLE 0x03030258
+#define OID_FDDI_PATH_TVX_LOWER_BOUND 0x03030259
+#define OID_FDDI_PATH_T_MAX_LOWER_BOUND 0x0303025A
+#define OID_FDDI_PATH_MAX_T_REQ 0x0303025B
+#define OID_FDDI_PORT_MY_TYPE 0x0303025C
+#define OID_FDDI_PORT_NEIGHBOR_TYPE 0x0303025D
+#define OID_FDDI_PORT_CONNECTION_POLICIES 0x0303025E
+#define OID_FDDI_PORT_MAC_INDICATED 0x0303025F
+#define OID_FDDI_PORT_CURRENT_PATH 0x03030260
+#define OID_FDDI_PORT_REQUESTED_PATHS 0x03030261
+#define OID_FDDI_PORT_MAC_PLACEMENT 0x03030262
+#define OID_FDDI_PORT_AVAILABLE_PATHS 0x03030263
+#define OID_FDDI_PORT_MAC_LOOP_TIME 0x03030264
+#define OID_FDDI_PORT_PMD_CLASS 0x03030265
+#define OID_FDDI_PORT_CONNECTION_CAPABILITIES 0x03030266
+#define OID_FDDI_PORT_INDEX 0x03030267
+#define OID_FDDI_PORT_MAINT_LS 0x03030268
+#define OID_FDDI_PORT_BS_FLAG 0x03030269
+#define OID_FDDI_PORT_PC_LS 0x0303026A
+#define OID_FDDI_PORT_EB_ERROR_CT 0x0303026B
+#define OID_FDDI_PORT_LCT_FAIL_CT 0x0303026C
+#define OID_FDDI_PORT_LER_ESTIMATE 0x0303026D
+#define OID_FDDI_PORT_LEM_REJECT_CT 0x0303026E
+#define OID_FDDI_PORT_LEM_CT 0x0303026F
+#define OID_FDDI_PORT_LER_CUTOFF 0x03030270
+#define OID_FDDI_PORT_LER_ALARM 0x03030271
+#define OID_FDDI_PORT_CONNNECT_STATE 0x03030272
+#define OID_FDDI_PORT_PCM_STATE 0x03030273
+#define OID_FDDI_PORT_PC_WITHHOLD 0x03030274
+#define OID_FDDI_PORT_LER_FLAG 0x03030275
+#define OID_FDDI_PORT_HARDWARE_PRESENT 0x03030276
+#define OID_FDDI_SMT_STATION_ACTION 0x03030277
+#define OID_FDDI_PORT_ACTION 0x03030278
+#define OID_FDDI_IF_DESCR 0x03030279
+#define OID_FDDI_IF_TYPE 0x0303027A
+#define OID_FDDI_IF_MTU 0x0303027B
+#define OID_FDDI_IF_SPEED 0x0303027C
+#define OID_FDDI_IF_PHYS_ADDRESS 0x0303027D
+#define OID_FDDI_IF_ADMIN_STATUS 0x0303027E
+#define OID_FDDI_IF_OPER_STATUS 0x0303027F
+#define OID_FDDI_IF_LAST_CHANGE 0x03030280
+#define OID_FDDI_IF_IN_OCTETS 0x03030281
+#define OID_FDDI_IF_IN_UCAST_PKTS 0x03030282
+#define OID_FDDI_IF_IN_NUCAST_PKTS 0x03030283
+#define OID_FDDI_IF_IN_DISCARDS 0x03030284
+#define OID_FDDI_IF_IN_ERRORS 0x03030285
+#define OID_FDDI_IF_IN_UNKNOWN_PROTOS 0x03030286
+#define OID_FDDI_IF_OUT_OCTETS 0x03030287
+#define OID_FDDI_IF_OUT_UCAST_PKTS 0x03030288
+#define OID_FDDI_IF_OUT_NUCAST_PKTS 0x03030289
+#define OID_FDDI_IF_OUT_DISCARDS 0x0303028A
+#define OID_FDDI_IF_OUT_ERRORS 0x0303028B
+#define OID_FDDI_IF_OUT_QLEN 0x0303028C
+#define OID_FDDI_IF_SPECIFIC 0x0303028D
+
+
+
+//
+// WAN objects
+//
+
+#define OID_WAN_PERMANENT_ADDRESS 0x04010101
+#define OID_WAN_CURRENT_ADDRESS 0x04010102
+#define OID_WAN_QUALITY_OF_SERVICE 0x04010103
+#define OID_WAN_PROTOCOL_TYPE 0x04010104
+#define OID_WAN_MEDIUM_SUBTYPE 0x04010105
+#define OID_WAN_HEADER_FORMAT 0x04010106
+
+#define OID_WAN_GET_INFO 0x04010107
+#define OID_WAN_SET_LINK_INFO 0x04010108
+#define OID_WAN_GET_LINK_INFO 0x04010109
+
+#define OID_WAN_LINE_COUNT 0x0401010A
+
+#define OID_WAN_GET_BRIDGE_INFO 0x0401020A
+#define OID_WAN_SET_BRIDGE_INFO 0x0401020B
+#define OID_WAN_GET_COMP_INFO 0x0401020C
+#define OID_WAN_SET_COMP_INFO 0x0401020D
+#define OID_WAN_GET_STATS_INFO 0x0401020E
+
+
+//
+// LocalTalk objects
+//
+
+#define OID_LTALK_CURRENT_NODE_ID 0x05010102
+
+#define OID_LTALK_IN_BROADCASTS 0x05020101
+#define OID_LTALK_IN_LENGTH_ERRORS 0x05020102
+
+#define OID_LTALK_OUT_NO_HANDLERS 0x05020201
+#define OID_LTALK_COLLISIONS 0x05020202
+#define OID_LTALK_DEFERS 0x05020203
+#define OID_LTALK_NO_DATA_ERRORS 0x05020204
+#define OID_LTALK_RANDOM_CTS_ERRORS 0x05020205
+#define OID_LTALK_FCS_ERRORS 0x05020206
+
+
+//
+// Arcnet objects
+//
+
+#define OID_ARCNET_PERMANENT_ADDRESS 0x06010101
+#define OID_ARCNET_CURRENT_ADDRESS 0x06010102
+
+#define OID_ARCNET_RECONFIGURATIONS 0x06020201
+
+
+//
+// TAPI objects
+//
+#define OID_TAPI_ACCEPT 0x07030101
+#define OID_TAPI_ANSWER 0x07030102
+#define OID_TAPI_CLOSE 0x07030103
+#define OID_TAPI_CLOSE_CALL 0x07030104
+#define OID_TAPI_CONDITIONAL_MEDIA_DETECTION 0x07030105
+#define OID_TAPI_CONFIG_DIALOG 0x07030106
+#define OID_TAPI_DEV_SPECIFIC 0x07030107
+#define OID_TAPI_DIAL 0x07030108
+#define OID_TAPI_DROP 0x07030109
+#define OID_TAPI_GET_ADDRESS_CAPS 0x0703010A
+#define OID_TAPI_GET_ADDRESS_ID 0x0703010B
+#define OID_TAPI_GET_ADDRESS_STATUS 0x0703010C
+#define OID_TAPI_GET_CALL_ADDRESS_ID 0x0703010D
+#define OID_TAPI_GET_CALL_INFO 0x0703010E
+#define OID_TAPI_GET_CALL_STATUS 0x0703010F
+#define OID_TAPI_GET_DEV_CAPS 0x07030110
+#define OID_TAPI_GET_DEV_CONFIG 0x07030111
+#define OID_TAPI_GET_EXTENSION_ID 0x07030112
+#define OID_TAPI_GET_ID 0x07030113
+#define OID_TAPI_GET_LINE_DEV_STATUS 0x07030114
+#define OID_TAPI_MAKE_CALL 0x07030115
+#define OID_TAPI_NEGOTIATE_EXT_VERSION 0x07030116
+#define OID_TAPI_OPEN 0x07030117
+#define OID_TAPI_PROVIDER_INITIALIZE 0x07030118
+#define OID_TAPI_PROVIDER_SHUTDOWN 0x07030119
+#define OID_TAPI_SECURE_CALL 0x0703011A
+#define OID_TAPI_SELECT_EXT_VERSION 0x0703011B
+#define OID_TAPI_SEND_USER_USER_INFO 0x0703011C
+#define OID_TAPI_SET_APP_SPECIFIC 0x0703011D
+#define OID_TAPI_SET_CALL_PARAMS 0x0703011E
+#define OID_TAPI_SET_DEFAULT_MEDIA_DETECTION 0x0703011F
+#define OID_TAPI_SET_DEV_CONFIG 0x07030120
+#define OID_TAPI_SET_MEDIA_MODE 0x07030121
+#define OID_TAPI_SET_STATUS_MESSAGES 0x07030122
+
+
+//
+// ATM Connection Oriented Ndis
+//
+#define OID_ATM_SUPPORTED_VC_RATES 0x08010101
+#define OID_ATM_SUPPORTED_SERVICE_CATEGORY 0x08010102
+#define OID_ATM_SUPPORTED_AAL_TYPES 0x08010103
+#define OID_ATM_HW_CURRENT_ADDRESS 0x08010104
+#define OID_ATM_MAX_ACTIVE_VCS 0x08010105
+#define OID_ATM_MAX_ACTIVE_VCI_BITS 0x08010106
+#define OID_ATM_MAX_ACTIVE_VPI_BITS 0x08010107
+#define OID_ATM_MAX_AAL0_PACKET_SIZE 0x08010108
+#define OID_ATM_MAX_AAL1_PACKET_SIZE 0x08010109
+#define OID_ATM_MAX_AAL34_PACKET_SIZE 0x0801010A
+#define OID_ATM_MAX_AAL5_PACKET_SIZE 0x0801010B
+
+#define OID_ATM_SIGNALING_VPIVCI 0x08010201
+#define OID_ATM_ASSIGNED_VPI 0x08010202
+#define OID_ATM_ACQUIRE_ACCESS_NET_RESOURCES 0x08010203
+#define OID_ATM_RELEASE_ACCESS_NET_RESOURCES 0x08010204
+#define OID_ATM_ILMI_VPIVCI 0x08010205
+#define OID_ATM_DIGITAL_BROADCAST_VPIVCI 0x08010206
+#define OID_ATM_GET_NEAREST_FLOW 0x08010207
+#define OID_ATM_ALIGNMENT_REQUIRED 0x08010208
+
+//
+// ATM specific statistics OIDs.
+//
+#define OID_ATM_RCV_CELLS_OK 0x08020101
+#define OID_ATM_XMIT_CELLS_OK 0x08020102
+#define OID_ATM_RCV_CELLS_DROPPED 0x08020103
+
+#define OID_ATM_RCV_INVALID_VPI_VCI 0x08020201
+#define OID_ATM_CELLS_HEC_ERROR 0x08020202
+#define OID_ATM_RCV_REASSEMBLY_ERROR 0x08020203
+
+//
+// PCCA (Wireless) object
+//
+
+//
+// All WirelessWAN devices must support the following OIDs
+//
+
+#define OID_WW_GEN_NETWORK_TYPES_SUPPORTED 0x09010101
+#define OID_WW_GEN_NETWORK_TYPE_IN_USE 0x09010102
+#define OID_WW_GEN_HEADER_FORMATS_SUPPORTED 0x09010103
+#define OID_WW_GEN_HEADER_FORMAT_IN_USE 0x09010104
+#define OID_WW_GEN_INDICATION_REQUEST 0x09010105
+#define OID_WW_GEN_DEVICE_INFO 0x09010106
+#define OID_WW_GEN_OPERATION_MODE 0x09010107
+#define OID_WW_GEN_LOCK_STATUS 0x09010108
+#define OID_WW_GEN_DISABLE_TRANSMITTER 0x09010109
+#define OID_WW_GEN_NETWORK_ID 0x0901010A
+#define OID_WW_GEN_PERMANENT_ADDRESS 0x0901010B
+#define OID_WW_GEN_CURRENT_ADDRESS 0x0901010C
+#define OID_WW_GEN_SUSPEND_DRIVER 0x0901010D
+#define OID_WW_GEN_BASESTATION_ID 0x0901010E
+#define OID_WW_GEN_CHANNEL_ID 0x0901010F
+#define OID_WW_GEN_ENCRYPTION_SUPPORTED 0x09010110
+#define OID_WW_GEN_ENCRYPTION_IN_USE 0x09010111
+#define OID_WW_GEN_ENCRYPTION_STATE 0x09010112
+#define OID_WW_GEN_CHANNEL_QUALITY 0x09010113
+#define OID_WW_GEN_REGISTRATION_STATUS 0x09010114
+#define OID_WW_GEN_RADIO_LINK_SPEED 0x09010115
+#define OID_WW_GEN_LATENCY 0x09010116
+#define OID_WW_GEN_BATTERY_LEVEL 0x09010117
+#define OID_WW_GEN_EXTERNAL_POWER 0x09010118
+
+//
+// Network Dependent OIDs - Mobitex:
+//
+
+#define OID_WW_MBX_SUBADDR 0x09050101
+// OID 0x09050102 is reserved and may not be used
+#define OID_WW_MBX_FLEXLIST 0x09050103
+#define OID_WW_MBX_GROUPLIST 0x09050104
+#define OID_WW_MBX_TRAFFIC_AREA 0x09050105
+#define OID_WW_MBX_LIVE_DIE 0x09050106
+#define OID_WW_MBX_TEMP_DEFAULTLIST 0x09050107
+
+//
+// Network Dependent OIDs - Pinpoint:
+//
+
+#define OID_WW_PIN_LOC_AUTHORIZE 0x09090101
+#define OID_WW_PIN_LAST_LOCATION 0x09090102
+#define OID_WW_PIN_LOC_FIX 0x09090103
+
+//
+// Network Dependent - CDPD:
+//
+
+#define OID_WW_CDPD_SPNI 0x090D0101
+#define OID_WW_CDPD_WASI 0x090D0102
+#define OID_WW_CDPD_AREA_COLOR 0x090D0103
+#define OID_WW_CDPD_TX_POWER_LEVEL 0x090D0104
+#define OID_WW_CDPD_EID 0x090D0105
+#define OID_WW_CDPD_HEADER_COMPRESSION 0x090D0106
+#define OID_WW_CDPD_DATA_COMPRESSION 0x090D0107
+#define OID_WW_CDPD_CHANNEL_SELECT 0x090D0108
+#define OID_WW_CDPD_CHANNEL_STATE 0x090D0109
+#define OID_WW_CDPD_NEI 0x090D010A
+#define OID_WW_CDPD_NEI_STATE 0x090D010B
+#define OID_WW_CDPD_SERVICE_PROVIDER_IDENTIFIER 0x090D010C
+#define OID_WW_CDPD_SLEEP_MODE 0x090D010D
+#define OID_WW_CDPD_CIRCUIT_SWITCHED 0x090D010E
+#define OID_WW_CDPD_TEI 0x090D010F
+#define OID_WW_CDPD_RSSI 0x090D0110
+
+//
+// Network Dependent - Ardis:
+//
+
+#define OID_WW_ARD_SNDCP 0x09110101
+#define OID_WW_ARD_TMLY_MSG 0x09110102
+#define OID_WW_ARD_DATAGRAM 0x09110103
+
+//
+// Network Dependent - DataTac:
+//
+
+#define OID_WW_TAC_COMPRESSION 0x09150101
+#define OID_WW_TAC_SET_CONFIG 0x09150102
+#define OID_WW_TAC_GET_STATUS 0x09150103
+#define OID_WW_TAC_USER_HEADER 0x09150104
+
+//
+// Network Dependent - Metricom:
+//
+
+#define OID_WW_MET_FUNCTION 0x09190101
+
+//
+// IRDA objects
+//
+#define OID_IRDA_RECEIVING 0x0A010100
+#define OID_IRDA_TURNAROUND_TIME 0x0A010101
+#define OID_IRDA_SUPPORTED_SPEEDS 0x0A010102
+#define OID_IRDA_LINK_SPEED 0x0A010103
+#define OID_IRDA_MEDIA_BUSY 0x0A010104
+
+#define OID_IRDA_EXTRA_RCV_BOFS 0x0A010200
+#define OID_IRDA_RATE_SNIFF 0x0A010201
+#define OID_IRDA_UNICAST_LIST 0x0A010202
+#define OID_IRDA_MAX_UNICAST_LIST_SIZE 0x0A010203
+#define OID_IRDA_MAX_RECEIVE_WINDOW_SIZE 0x0A010204
+#define OID_IRDA_MAX_SEND_WINDOW_SIZE 0x0A010205
+
+
+//
+// Medium the Ndis Driver is running on (OID_GEN_MEDIA_SUPPORTED/
+// OID_GEN_MEDIA_IN_USE).
+//
+
+typedef enum _NDIS_MEDIUM {
+ NdisMedium802_3,
+ NdisMedium802_5,
+ NdisMediumFddi,
+ NdisMediumWan,
+ NdisMediumLocalTalk,
+ NdisMediumDix, // defined for convenience, not a real medium
+ NdisMediumArcnetRaw,
+ NdisMediumArcnet878_2,
+ NdisMediumAtm,
+ NdisMediumWirelessWan,
+ NdisMediumIrda,
+ NdisMediumMax // Not a real medium, defined as an upper-bound
+} NDIS_MEDIUM, *PNDIS_MEDIUM;
+
+
+//
+// Hardware status codes (OID_GEN_HARDWARE_STATUS).
+//
+
+typedef enum _NDIS_HARDWARE_STATUS {
+ NdisHardwareStatusReady,
+ NdisHardwareStatusInitializing,
+ NdisHardwareStatusReset,
+ NdisHardwareStatusClosing,
+ NdisHardwareStatusNotReady
+} NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
+
+
+//
+// this is the type passed in the OID_GEN_GET_TIME_CAPS request
+//
+typedef struct _GEN_GET_TIME_CAPS
+{
+ ULONG Flags; // Bits defined below
+ ULONG ClockPrecision;
+} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;
+
+#define READABLE_LOCAL_CLOCK 0x000000001
+#define CLOCK_NETWORK_DERIVED 0x000000002
+#define CLOCK_PRECISION 0x000000004
+#define RECEIVE_TIME_INDICATION_CAPABLE 0x000000008
+#define TIMED_SEND_CAPABLE 0x000000010
+#define TIME_STAMP_CAPABLE 0x000000020
+
+//
+//
+// this is the type passed in the OID_GEN_GET_NETCARD_TIME request
+//
+typedef struct _GEN_GET_NETCARD_TIME
+{
+ ULONGLONG ReadTime;
+} GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;
+
+//
+// Defines the attachment types for FDDI (OID_FDDI_ATTACHMENT_TYPE).
+//
+
+typedef enum _NDIS_FDDI_ATTACHMENT_TYPE {
+ NdisFddiTypeIsolated = 1,
+ NdisFddiTypeLocalA,
+ NdisFddiTypeLocalB,
+ NdisFddiTypeLocalAB,
+ NdisFddiTypeLocalS,
+ NdisFddiTypeWrapA,
+ NdisFddiTypeWrapB,
+ NdisFddiTypeWrapAB,
+ NdisFddiTypeWrapS,
+ NdisFddiTypeCWrapA,
+ NdisFddiTypeCWrapB,
+ NdisFddiTypeCWrapS,
+ NdisFddiTypeThrough
+} NDIS_FDDI_ATTACHMENT_TYPE, *PNDIS_FDDI_ATTACHMENT_TYPE;
+
+
+//
+// Defines the ring management states for FDDI (OID_FDDI_RING_MGT_STATE).
+//
+
+typedef enum _NDIS_FDDI_RING_MGT_STATE {
+ NdisFddiRingIsolated = 1,
+ NdisFddiRingNonOperational,
+ NdisFddiRingOperational,
+ NdisFddiRingDetect,
+ NdisFddiRingNonOperationalDup,
+ NdisFddiRingOperationalDup,
+ NdisFddiRingDirected,
+ NdisFddiRingTrace
+} NDIS_FDDI_RING_MGT_STATE, *PNDIS_FDDI_RING_MGT_STATE;
+
+
+//
+// Defines the Lconnection state for FDDI (OID_FDDI_LCONNECTION_STATE).
+//
+
+typedef enum _NDIS_FDDI_LCONNECTION_STATE {
+ NdisFddiStateOff = 1,
+ NdisFddiStateBreak,
+ NdisFddiStateTrace,
+ NdisFddiStateConnect,
+ NdisFddiStateNext,
+ NdisFddiStateSignal,
+ NdisFddiStateJoin,
+ NdisFddiStateVerify,
+ NdisFddiStateActive,
+ NdisFddiStateMaintenance
+} NDIS_FDDI_LCONNECTION_STATE, *PNDIS_FDDI_LCONNECTION_STATE;
+
+
+//
+// Defines the medium subtypes for WAN medium (OID_WAN_MEDIUM_SUBTYPE).
+//
+
+typedef enum _NDIS_WAN_MEDIUM_SUBTYPE {
+ NdisWanMediumHub,
+ NdisWanMediumX_25,
+ NdisWanMediumIsdn,
+ NdisWanMediumSerial,
+ NdisWanMediumFrameRelay,
+ NdisWanMediumAtm,
+ NdisWanMediumSonet,
+ NdisWanMediumSW56K
+} NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE;
+
+
+//
+// Defines the header format for WAN medium (OID_WAN_HEADER_FORMAT).
+//
+
+typedef enum _NDIS_WAN_HEADER_FORMAT {
+ NdisWanHeaderNative, // src/dest based on subtype, followed by NLPID
+ NdisWanHeaderEthernet // emulation of ethernet header
+} NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT;
+
+
+//
+// Defines the line quality on a WAN line (OID_WAN_QUALITY_OF_SERVICE).
+//
+
+typedef enum _NDIS_WAN_QUALITY {
+ NdisWanRaw,
+ NdisWanErrorControl,
+ NdisWanReliable
+} NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
+
+
+//
+// Defines the state of a token-ring adapter (OID_802_5_CURRENT_RING_STATE).
+//
+
+typedef enum _NDIS_802_5_RING_STATE {
+ NdisRingStateOpened = 1,
+ NdisRingStateClosed,
+ NdisRingStateOpening,
+ NdisRingStateClosing,
+ NdisRingStateOpenFailure,
+ NdisRingStateRingFailure
+} NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE;
+
+//
+// Defines the state of the LAN media
+//
+typedef enum _NDIS_MEDIA_STATE {
+ NdisMediaStateConnected,
+ NdisMediaStateDisconnected
+} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
+
+//
+// The following is set on a per-packet basis as OOB data with NdisClass802_3Priority
+//
+typedef ULONG Priority_802_3; // 0-7 priority levels
+
+//
+// The following structure is used to query OID_GEN_CO_LINK_SPEED and
+// OID_GEN_CO_MINIMUM_LINK_SPEED. The first OID will return the current
+// link speed of the adapter. The second will return the minimum link speed
+// the adapter is capable of.
+//
+typedef struct _NDIS_CO_LINK_SPEED
+{
+ ULONG Outbound;
+ ULONG Inbound;
+}
+ NDIS_CO_LINK_SPEED,
+ *PNDIS_CO_LINK_SPEED;
+
+//
+// Ndis Packet Filter Bits (OID_GEN_CURRENT_PACKET_FILTER).
+//
+
+#define NDIS_PACKET_TYPE_DIRECTED 0x0001
+#define NDIS_PACKET_TYPE_MULTICAST 0x0002
+#define NDIS_PACKET_TYPE_ALL_MULTICAST 0x0004
+#define NDIS_PACKET_TYPE_BROADCAST 0x0008
+#define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x0010
+#define NDIS_PACKET_TYPE_PROMISCUOUS 0x0020
+#define NDIS_PACKET_TYPE_SMT 0x0040
+#define NDIS_PACKET_TYPE_ALL_LOCAL 0x0080
+#define NDIS_PACKET_TYPE_MAC_FRAME 0x8000
+#define NDIS_PACKET_TYPE_FUNCTIONAL 0x4000
+#define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x2000
+#define NDIS_PACKET_TYPE_GROUP 0x1000
+
+
+//
+// Ndis Token-Ring Ring Status Codes (OID_802_5_CURRENT_RING_STATUS).
+//
+
+#define NDIS_RING_SIGNAL_LOSS 0x00008000
+#define NDIS_RING_HARD_ERROR 0x00004000
+#define NDIS_RING_SOFT_ERROR 0x00002000
+#define NDIS_RING_TRANSMIT_BEACON 0x00001000
+#define NDIS_RING_LOBE_WIRE_FAULT 0x00000800
+#define NDIS_RING_AUTO_REMOVAL_ERROR 0x00000400
+#define NDIS_RING_REMOVE_RECEIVED 0x00000200
+#define NDIS_RING_COUNTER_OVERFLOW 0x00000100
+#define NDIS_RING_SINGLE_STATION 0x00000080
+#define NDIS_RING_RING_RECOVERY 0x00000040
+
+
+//
+// Ndis protocol option bits (OID_GEN_PROTOCOL_OPTIONS).
+//
+
+#define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
+#define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
+#define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
+
+
+//
+// Ndis MAC option bits (OID_GEN_MAC_OPTIONS).
+//
+
+#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
+#define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
+#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
+#define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
+#define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
+#define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
+#define NDIS_MAC_OPTION_RESERVED 0x80000000
+
+//
+// NDIS MAC option bits for OID_GEN_CO_MAC_OPTIONS.
+//
+#define NDIS_CO_MAC_OPTION_DYNAMIC_LINK_SPEED 0x00000001
+
+
+#ifdef IRDA
+//
+// The following is set on a per-packet basis as OOB data with NdisClassIrdaPacketInfo
+// This is the per-packet info specified on a per-packet basis
+//
+typedef struct _NDIS_IRDA_PACKET_INFO
+{
+ UINT ExtraBOFs;
+ UINT MinTurnAroundTime;
+} NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO;
+
+#endif
+
+#ifdef WIRELESS_WAN
+
+//
+// Wireless WAN structure definitions
+//
+//
+// currently defined Wireless network subtypes
+//
+typedef enum _NDIS_WW_NETWORK_TYPE
+{
+ NdisWWGeneric,
+ NdisWWMobitex,
+ NdisWWPinpoint,
+ NdisWWCDPD,
+ NdisWWArdis,
+ NdisWWDataTAC,
+ NdisWWMetricom,
+ NdisWWGSM,
+ NdisWWCDMA,
+ NdisWWTDMA,
+ NdisWWAMPS,
+ NdisWWInmarsat,
+ NdisWWpACT
+} NDIS_WW_NETWORK_TYPE;
+
+//
+// currently defined header formats
+//
+typedef enum _NDIS_WW_HEADER_FORMAT
+{
+ NdisWWDIXEthernetFrames,
+ NdisWWMPAKFrames,
+ NdisWWRDLAPFrames,
+ NdisWWMDC4800Frames
+} NDIS_WW_HEADER_FORMAT;
+
+//
+// currently defined encryption types
+//
+typedef enum _NDIS_WW_ENCRYPTION_TYPE
+{
+ NdisWWUnknownEncryption = -1,
+ NdisWWNoEncryption,
+ NdisWWDefaultEncryption
+} NDIS_WW_ENCRYPTION_TYPE, *PNDIS_WW_ENCRYPTION_TYPE;
+
+//
+// OID_WW_GEN_INDICATION_REQUEST
+//
+typedef struct _NDIS_WW_INDICATION_REQUEST
+{
+ NDIS_OID Oid; // IN
+ UINT uIndicationFlag; // IN
+ UINT uApplicationToken; // IN OUT
+ HANDLE hIndicationHandle; // IN OUT
+ INT iPollingInterval; // IN OUT
+ NDIS_VAR_DATA_DESC InitialValue; // IN OUT
+ NDIS_VAR_DATA_DESC OIDIndicationValue; // OUT - only valid after indication
+ NDIS_VAR_DATA_DESC TriggerValue; // IN
+} NDIS_WW_INDICATION_REQUEST, *PNDIS_WW_INDICATION_REQUEST;
+
+#define OID_INDICATION_REQUEST_ENABLE 0x0000
+#define OID_INDICATION_REQUEST_CANCEL 0x0001
+
+//
+// OID_WW_GEN_DEVICE_INFO
+//
+
+typedef struct _WW_DEVICE_INFO
+{
+ NDIS_VAR_DATA_DESC Manufacturer;
+ NDIS_VAR_DATA_DESC ModelNum;
+ NDIS_VAR_DATA_DESC SWVersionNum;
+ NDIS_VAR_DATA_DESC SerialNum;
+} WW_DEVICE_INFO, *PWW_DEVICE_INFO;
+
+//
+// OID_WW_GEN_OPERATION_MODE
+//
+typedef INT WW_OPERATION_MODE; // 0 = Normal mode
+ // 1 = Power saving mode
+ // -1 = mode unknown
+
+//
+// OID_WW_GEN_LOCK_STATUS
+//
+typedef INT WW_LOCK_STATUS; // 0 = unlocked
+ // 1 = locked
+ // -1 = unknown lock status
+
+//
+// OID_WW_GEN_DISABLE_TRANSMITTER
+//
+typedef INT WW_DISABLE_TRANSMITTER; // 0 = transmitter enabled
+ // 1 = transmitter disabled
+ // -1 = unknown value
+
+//
+// OID_WW_GEN_NETWORK_ID
+//
+typedef NDIS_VAR_DATA_DESC WW_NETWORK_ID;
+
+//
+// OID_WW_GEN_PERMANENT_ADDRESS
+//
+typedef NDIS_VAR_DATA_DESC WW_PERMANENT_ADDRESS;
+
+//
+// OID_WW_GEN_CURRENT_ADDRESS
+//
+typedef struct _WW_CURRENT_ADDRESS
+{
+ NDIS_WW_HEADER_FORMAT Format;
+ NDIS_VAR_DATA_DESC Address;
+} WW_CURRENT_ADDRESS, *PWW_CURRENT_ADDRESS;
+
+//
+// OID_WW_GEN_SUSPEND_DRIVER
+//
+typedef BOOLEAN WW_SUSPEND_DRIVER; // 0 = driver operational
+ // 1 = driver suspended
+
+//
+// OID_WW_GEN_BASESTATION_ID
+//
+typedef NDIS_VAR_DATA_DESC WW_BASESTATION_ID;
+
+//
+// OID_WW_GEN_CHANNEL_ID
+//
+typedef NDIS_VAR_DATA_DESC WW_CHANNEL_ID;
+
+//
+// OID_WW_GEN_ENCRYPTION_STATE
+//
+typedef BOOLEAN WW_ENCRYPTION_STATE; // 0 = if encryption is disabled
+ // 1 = if encryption is enabled
+
+//
+// OID_WW_GEN_CHANNEL_QUALITY
+//
+typedef INT WW_CHANNEL_QUALITY; // 0 = Not in network contact,
+ // 1-100 = Quality of Channel (100 is highest quality).
+ // -1 = channel quality is unknown
+
+//
+// OID_WW_GEN_REGISTRATION_STATUS
+//
+typedef INT WW_REGISTRATION_STATUS; // 0 = Registration denied
+ // 1 = Registration pending
+ // 2 = Registered
+ // -1 = unknown registration status
+
+//
+// OID_WW_GEN_RADIO_LINK_SPEED
+//
+typedef UINT WW_RADIO_LINK_SPEED; // Bits per second.
+
+//
+// OID_WW_GEN_LATENCY
+//
+typedef UINT WW_LATENCY; // milliseconds
+
+//
+// OID_WW_GEN_BATTERY_LEVEL
+//
+typedef INT WW_BATTERY_LEVEL; // 0-100 = battery level in percentage
+ // (100=fully charged)
+ // -1 = unknown battery level.
+
+//
+// OID_WW_GEN_EXTERNAL_POWER
+//
+typedef INT WW_EXTERNAL_POWER; // 0 = no external power connected
+ // 1 = external power connected
+ // -1 = unknown
+
+//
+// OID_WW_MET_FUNCTION
+//
+typedef NDIS_VAR_DATA_DESC WW_MET_FUNCTION;
+
+//
+// OID_WW_TAC_COMPRESSION
+//
+typedef BOOLEAN WW_TAC_COMPRESSION; // Determines whether or not network level compression
+ // is being used.
+
+//
+// OID_WW_TAC_SET_CONFIG
+//
+typedef struct _WW_TAC_SETCONFIG
+{
+ NDIS_VAR_DATA_DESC RCV_MODE;
+ NDIS_VAR_DATA_DESC TX_CONTROL;
+ NDIS_VAR_DATA_DESC RX_CONTROL;
+ NDIS_VAR_DATA_DESC FLOW_CONTROL;
+ NDIS_VAR_DATA_DESC RESET_CNF;
+ NDIS_VAR_DATA_DESC READ_CNF;
+} WW_TAC_SETCONFIG, *PWW_TAC_SETCONFIG;
+
+//
+// OID_WW_TAC_GET_STATUS
+//
+typedef struct _WW_TAC_GETSTATUS
+{
+ BOOLEAN Action; // Set = Execute command.
+ NDIS_VAR_DATA_DESC Command;
+ NDIS_VAR_DATA_DESC Option;
+ NDIS_VAR_DATA_DESC Response; // The response to the requested command
+ // - max. length of string is 256 octets.
+} WW_TAC_GETSTATUS, *PWW_TAC_GETSTATUS;
+
+//
+// OID_WW_TAC_USER_HEADER
+//
+typedef NDIS_VAR_DATA_DESC WW_TAC_USERHEADER; // This will hold the user header - Max. 64 octets.
+
+//
+// OID_WW_ARD_SNDCP
+//
+typedef struct _WW_ARD_SNDCP
+{
+ NDIS_VAR_DATA_DESC Version; // The version of SNDCP protocol supported.
+ INT BlockSize; // The block size used for SNDCP
+ INT Window; // The window size used in SNDCP
+} WW_ARD_SNDCP, *PWW_ARD_SNDCP;
+
+//
+// OID_WW_ARD_TMLY_MSG
+//
+typedef BOOLEAN WW_ARD_CHANNEL_STATUS; // The current status of the inbound RF Channel.
+
+//
+// OID_WW_ARD_DATAGRAM
+//
+typedef struct _WW_ARD_DATAGRAM
+{
+ BOOLEAN LoadLevel; // Byte that contains the load level info.
+ INT SessionTime; // Datagram session time remaining.
+ NDIS_VAR_DATA_DESC HostAddr; // Host address.
+ NDIS_VAR_DATA_DESC THostAddr; // Test host address.
+} WW_ARD_DATAGRAM, *PWW_ARD_DATAGRAM;
+
+//
+// OID_WW_CDPD_SPNI
+//
+typedef struct _WW_CDPD_SPNI
+{
+ UINT SPNI[10]; //10 16-bit service provider network IDs
+ INT OperatingMode; // 0 = ignore SPNI,
+ // 1 = require SPNI from list,
+ // 2 = prefer SPNI from list.
+ // 3 = exclude SPNI from list.
+} WW_CDPD_SPNI, *PWW_CDPD_SPNI;
+
+//
+// OID_WW_CDPD_WASI
+//
+typedef struct _WW_CDPD_WIDE_AREA_SERVICE_ID
+{
+ UINT WASI[10]; //10 16-bit wide area service IDs
+ INT OperatingMode; // 0 = ignore WASI,
+ // 1 = Require WASI from list,
+ // 2 = prefer WASI from list
+ // 3 = exclude WASI from list.
+} WW_CDPD_WIDE_AREA_SERVICE_ID, *PWW_CDPD_WIDE_AREA_SERVICE_ID;
+
+//
+// OID_WW_CDPD_AREA_COLOR
+//
+typedef INT WW_CDPD_AREA_COLOR;
+
+//
+// OID_WW_CDPD_TX_POWER_LEVEL
+//
+typedef UINT WW_CDPD_TX_POWER_LEVEL;
+
+//
+// OID_WW_CDPD_EID
+//
+typedef NDIS_VAR_DATA_DESC WW_CDPD_EID;
+//
+// OID_WW_CDPD_HEADER_COMPRESSION
+//
+typedef INT WW_CDPD_HEADER_COMPRESSION; // 0 = no header compression,
+ // 1 = always compress headers,
+ // 2 = compress headers if MD-IS does
+ // -1 = unknown
+
+//
+// OID_WW_CDPD_DATA_COMPRESSION
+//
+typedef INT WW_CDPD_DATA_COMPRESSION; // 0 = no data compression,
+ // 1 = data compression enabled
+ // -1 = unknown
+
+//
+// OID_WW_CDPD_CHANNEL_SELECT
+//
+typedef struct _WW_CDPD_CHANNEL_SELECT
+{
+ UINT ChannelID; // channel number
+ UINT fixedDuration; // duration in seconds
+} WW_CDPD_CHANNEL_SELECT, *PWW_CDPD_CHANNEL_SELECT;
+
+//
+// OID_WW_CDPD_CHANNEL_STATE
+//
+typedef enum _WW_CDPD_CHANNEL_STATE
+{
+ CDPDChannelNotAvail,
+ CDPDChannelScanning,
+ CDPDChannelInitAcquired,
+ CDPDChannelAcquired,
+ CDPDChannelSleeping,
+ CDPDChannelWaking,
+ CDPDChannelCSDialing,
+ CDPDChannelCSRedial,
+ CDPDChannelCSAnswering,
+ CDPDChannelCSConnected,
+ CDPDChannelCSSuspended
+} WW_CDPD_CHANNEL_STATE, *PWW_CDPD_CHANNEL_STATE;
+
+//
+// OID_WW_CDPD_NEI
+//
+typedef enum _WW_CDPD_NEI_FORMAT
+{
+ CDPDNeiIPv4,
+ CDPDNeiCLNP,
+ CDPDNeiIPv6
+} WW_CDPD_NEI_FORMAT, *PWW_CDPD_NEI_FORMAT;
+
+typedef enum _WW_CDPD_NEI_TYPE
+{
+ CDPDNeiIndividual,
+ CDPDNeiMulticast,
+ CDPDNeiBroadcast
+} WW_CDPD_NEI_TYPE;
+
+
+typedef struct _WW_CDPD_NEI
+{
+ UINT uNeiIndex;
+ WW_CDPD_NEI_FORMAT NeiFormat;
+ WW_CDPD_NEI_TYPE NeiType;
+ WORD NeiGmid; // group member identifier, only
+ // meaningful if NeiType ==
+ // CDPDNeiMulticast
+ NDIS_VAR_DATA_DESC NeiAddress;
+} WW_CDPD_NEI;
+
+//
+// OID_WW_CDPD_NEI_STATE
+//
+
+typedef enum _WW_CDPD_NEI_STATE
+{
+ CDPDUnknown,
+ CDPDRegistered,
+ CDPDDeregistered
+} WW_CDPD_NEI_STATE, *PWW_CDPD_NEI_STATE;
+
+typedef enum _WW_CDPD_NEI_SUB_STATE
+{
+ CDPDPending, // Registration pending
+ CDPDNoReason, // Registration denied - no reason given
+ CDPDMDISNotCapable, // Registration denied - MD-IS not capable of
+ // handling M-ES at this time
+ CDPDNEINotAuthorized, // Registration denied - NEI is not authorized to
+ // use this subnetwork
+ CDPDInsufficientAuth, // Registration denied - M-ES gave insufficient
+ // authentication credentials
+ CDPDUnsupportedAuth, // Registration denied - M-ES gave unsupported
+ // authentication credentials
+ CDPDUsageExceeded, // Registration denied - NEI has exceeded usage
+ // limitations
+ CDPDDeniedThisNetwork // Registration denied on this network, service
+ // may be obtained on alternate Service Provider
+ // network
+} WW_CDPD_NEI_SUB_STATE;
+
+typedef struct _WW_CDPD_NEI_REG_STATE
+{
+ UINT uNeiIndex;
+ WW_CDPD_NEI_STATE NeiState;
+ WW_CDPD_NEI_SUB_STATE NeiSubState;
+} WW_CDPD_NEI_REG_STATE, *PWW_CDPD_NEI_REG_STATE;
+
+//
+// OID_WW_CDPD_SERVICE_PROVIDER_IDENTIFIER
+//
+typedef struct _WW_CDPD_SERVICE_PROVIDER_ID
+{
+ UINT SPI[10]; //10 16-bit service provider IDs
+ INT OperatingMode; // 0 = ignore SPI,
+ // 1 = require SPI from list,
+ // 2 = prefer SPI from list.
+ // 3 = exclude SPI from list.
+} WW_CDPD_SERVICE_PROVIDER_ID, *PWW_CDPD_SERVICE_PROVIDER_ID;
+
+//
+// OID_WW_CDPD_SLEEP_MODE
+//
+typedef INT WW_CDPD_SLEEP_MODE;
+
+//
+// OID_WW_CDPD_TEI
+//
+typedef ULONG WW_CDPD_TEI;
+
+//
+// OID_WW_CDPD_CIRCUIT_SWITCHED
+//
+typedef struct _WW_CDPD_CIRCUIT_SWITCHED
+{
+ INT service_preference; // -1 = unknown,
+ // 0 = always use packet switched CDPD,
+ // 1 = always use CS CDPD via AMPS,
+ // 2 = always use CS CDPD via PSTN,
+ // 3 = use circuit switched via AMPS only
+ // when packet switched is not available.
+ // 4 = use packet switched only when circuit
+ // switched via AMPS is not available.
+ // 5 = device manuf. defined service
+ // preference.
+ // 6 = device manuf. defined service
+ // preference.
+
+ INT service_status; // -1 = unknown,
+ // 0 = packet switched CDPD,
+ // 1 = circuit switched CDPD via AMPS,
+ // 2 = circuit switched CDPD via PSTN.
+
+ INT connect_rate; // CS connection bit rate (bits per second).
+ // 0 = no active connection,
+ // -1 = unknown
+
+ // Dial code last used to dial.
+ NDIS_VAR_DATA_DESC dial_code[20];
+
+ UINT sid; // Current AMPS system ID
+
+ INT a_b_side_selection; // -1 = unknown,
+ // 0 = no AMPS service
+ // 1 = AMPS "A" side channels selected
+ // 2 = AMPS "B" side channels selected
+
+ INT AMPS_channel; // -1= unknown
+ // 0 = no AMPS service.
+ // 1-1023 = AMPS channel number in use
+
+ UINT action; // 0 = no action
+ // 1 = suspend (hangup)
+ // 2 = dial
+
+ // Default dial code for CS CDPD service
+ // encoded as specified in the CS CDPD
+ // implementor guidelines.
+ NDIS_VAR_DATA_DESC default_dial[20];
+
+ // Number for the CS CDPD network to call
+ // back the mobile, encoded as specified in
+ // the CS CDPD implementor guidelines.
+ NDIS_VAR_DATA_DESC call_back[20];
+
+ UINT sid_list[10]; // List of 10 16-bit preferred AMPS
+ // system IDs for CS CDPD.
+
+ UINT inactivity_timer; // Wait time after last data before dropping
+ // call.
+ // 0-65535 = inactivity time limit (seconds).
+
+ UINT receive_timer; // secs. per CS-CDPD Implementor Guidelines.
+
+ UINT conn_resp_timer; // secs. per CS-CDPD Implementor Guidelines.
+
+ UINT reconn_resp_timer; // secs. per CS-CDPD Implementor Guidelines.
+
+ UINT disconn_timer; // secs. per CS-CDPD Implementor Guidelines.
+
+ UINT NEI_reg_timer; // secs. per CS-CDPD Implementor Guidelines.
+
+ UINT reconn_retry_timer; // secs. per CS-CDPD Implementor Guidelines.
+
+ UINT link_reset_timer; // secs. per CS-CDPD Implementor Guidelines.
+
+ UINT link_reset_ack_timer; // secs. per CS-CDPD Implementor Guidelines.
+
+ UINT n401_retry_limit; // per CS-CDPD Implementor Guidelines.
+
+ UINT n402_retry_limit; // per CS-CDPD Implementor Guidelines.
+
+ UINT n404_retry_limit; // per CS-CDPD Implementor Guidelines.
+
+ UINT n405_retry_limit; // per CS-CDPD Implementor Guidelines.
+} WW_CDPD_CIRCUIT_SWITCHED, *WW_PCDPD_CIRCUIT_SWITCHED;
+
+typedef UINT WW_CDPD_RSSI;
+
+//
+// OID_WW_PIN_LOC_AUTHORIZE
+//
+typedef INT WW_PIN_AUTHORIZED; // 0 = unauthorized
+ // 1 = authorized
+ // -1 = unknown
+
+//
+// OID_WW_PIN_LAST_LOCATION
+// OID_WW_PIN_LOC_FIX
+//
+typedef struct _WW_PIN_LOCATION
+{
+ INT Latitude; // Latitude in hundredths of a second
+ INT Longitude; // Longitude in hundredths of a second
+ INT Altitude; // Altitude in feet
+ INT FixTime; // Time of the location fix, since midnight, local time (of the
+ // current day), in tenths of a second
+ INT NetTime; // Current local network time of the current day, since midnight,
+ // in tenths of a second
+ INT LocQuality; // 0-100 = location quality
+ INT LatReg; // Latitude registration offset, in hundredths of a second
+ INT LongReg; // Longitude registration offset, in hundredths of a second
+ INT GMTOffset; // Offset in minutes of the local time zone from GMT
+} WW_PIN_LOCATION, *PWW_PIN_LOCATION;
+
+
+//
+// The following is set on a per-packet basis as OOB data with NdisClassWirelessWanMbxMailbox
+//
+typedef ULONG WW_MBX_MAILBOX_FLAG; // 1 = set mailbox flag, 0 = do not set mailbox flag
+
+//
+// OID_WW_MBX_SUBADDR
+//
+typedef struct _WW_MBX_PMAN
+{
+ BOOLEAN ACTION; // 0 = Login PMAN, 1 = Logout PMAN
+ UINT MAN;
+ UCHAR PASSWORD[8]; // Password should be null for Logout and indications.
+ // Maximum length of password is 8 chars.
+} WW_MBX_PMAN, *PWW_MBX_PMAN;
+
+//
+// OID_WW_MBX_FLEXLIST
+//
+typedef struct _WW_MBX_FLEXLIST
+{
+ INT count; // Number of MAN entries used.
+ // -1=unknown.
+ UINT MAN[7]; // List of MANs.
+} WW_MBX_FLEXLIST;
+
+//
+// OID_WW_MBX_GROUPLIST
+//
+typedef struct _WW_MBX_GROUPLIST
+{
+ INT count; // Number of MAN entries used.
+ // -1=unknown.
+ UINT MAN[15]; // List of MANs.
+} WW_MBX_GROUPLIST;
+
+//
+// OID_WW_MBX_TRAFFIC_AREA
+//
+typedef enum _WW_MBX_TRAFFIC_AREA
+{
+ unknown_traffic_area, // The driver has no information about the current traffic area.
+ in_traffic_area, // Mobile unit has entered a subscribed traffic area.
+ in_auth_traffic_area, // Mobile unit is outside traffic area but is authorized.
+ unauth_traffic_area // Mobile unit is outside traffic area but is un-authorized.
+} WW_MBX_TRAFFIC_AREA;
+
+//
+// OID_WW_MBX_LIVE_DIE
+//
+typedef INT WW_MBX_LIVE_DIE; // 0 = DIE last received
+ // 1 = LIVE last received
+ // -1 = unknown
+
+//
+// OID_WW_MBX_TEMP_DEFAULTLIST
+//
+typedef struct _WW_MBX_CHANNEL_PAIR
+{
+ UINT Mobile_Tx;
+ UINT Mobile_Rx;
+} WW_MBX_CHANNEL_PAIR, *PWW_MBX_CHANNEL_PAIR;
+
+typedef struct _WW_MBX_TEMPDEFAULTLIST
+{
+ UINT Length;
+ WW_MBX_CHANNEL_PAIR ChannelPair[1];
+} WW_MBX_TEMPDEFAULTLIST, *WW_PMBX_TEMPDEFAULTLIST;
+
+#endif // WIRELESS_WAN
+
+#endif // _NTDDNDIS_
+
diff --git a/public/sdk/inc/ntddnetd.h b/public/sdk/inc/ntddnetd.h
new file mode 100644
index 000000000..0b09b5b27
--- /dev/null
+++ b/public/sdk/inc/ntddnetd.h
@@ -0,0 +1,196 @@
+/*++
+
+Copyright (c) 1992 Microsoft Corporation
+
+Module Name:
+
+ ntddnetd.h
+
+Abstract:
+
+ Header file for Netcard Detection DLLs
+
+Author:
+
+ Sean Selitrennikoff (SeanSe) December 1992
+
+Revision History:
+
+--*/
+
+
+
+//
+// Routines for Detection DLLs.
+//
+
+
+NTSTATUS
+DetectCheckPortUsage(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG Port,
+ IN ULONG Length
+ );
+
+NTSTATUS
+DetectReadPortUchar(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG Port,
+ OUT PUCHAR Value
+ );
+
+NTSTATUS
+DetectReadPortUshort(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG Port,
+ OUT PUSHORT Value
+ );
+
+NTSTATUS
+DetectReadPortUlong(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG Port,
+ OUT PULONG Value
+ );
+
+NTSTATUS
+DetectWritePortUchar(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG Port,
+ IN UCHAR Value
+ );
+
+NTSTATUS
+DetectWritePortUshort(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG Port,
+ IN USHORT Value
+ );
+
+NTSTATUS
+DetectWritePortUlong(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG Port,
+ IN ULONG Value
+ );
+
+NTSTATUS
+DetectCheckMemoryUsage(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG BaseAddress,
+ IN ULONG Length
+ );
+
+NTSTATUS
+DetectReadMappedMemory(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG BaseAddress,
+ IN ULONG Length,
+ OUT PVOID Data
+ );
+
+NTSTATUS
+DetectWriteMappedMemory(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG BaseAddress,
+ IN ULONG Length,
+ IN PVOID Data
+ );
+
+NTSTATUS
+DetectReadPciSlotInformation(
+ IN ULONG BusNumber,
+ IN ULONG SlotNumber,
+ IN ULONG Offset,
+ IN ULONG Length,
+ OUT PVOID Data
+ );
+
+NTSTATUS
+DetectWritePciSlotInformation(
+ IN ULONG BusNumber,
+ IN ULONG SlotNumber,
+ IN ULONG Offset,
+ IN ULONG Length,
+ IN PVOID Data
+ );
+
+NTSTATUS
+DetectSetInterruptTrap(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ OUT PHANDLE TrapHandle,
+ IN UCHAR InterruptList[],
+ IN ULONG InterruptListLength
+ );
+
+NTSTATUS
+DetectQueryInterruptTrap(
+ IN HANDLE TrapHandle,
+ OUT UCHAR InterruptList[],
+ IN ULONG InterruptListLength
+ );
+
+NTSTATUS
+DetectRemoveInterruptTrap(
+ IN HANDLE TrapHandle
+ );
+
+NTSTATUS
+DetectClaimResource(
+ IN ULONG NumberOfResources,
+ IN PVOID Data
+ );
+
+
+
+
+//
+// Resource information for Detection DLLs
+//
+
+#define NETDTECT_IRQ_RESOURCE 1
+#define NETDTECT_MEMORY_RESOURCE 2
+#define NETDTECT_PORT_RESOURCE 3
+#define NETDTECT_DMA_RESOURCE 4
+
+#define NETDTECT_IRQ_RESOURCE_LEVEL_SENSITIVE CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
+#define NETDTECT_IRQ_RESOURCE_LATCHED CM_RESOURCE_INTERRUPT_LATCHED
+
+typedef struct _NETDTECT_RESOURCE {
+
+ INTERFACE_TYPE InterfaceType;
+ ULONG BusNumber;
+ ULONG Type;
+ ULONG Value;
+ ULONG Length;
+ ULONG Flags;
+
+} NETDTECT_RESOURCE, *PNETDTECT_RESOURCE;
+
+
+
+NTSTATUS
+DetectTemporaryClaimResource(
+ IN PNETDTECT_RESOURCE Resource
+ );
+
+NTSTATUS
+DetectFreeTemporaryResources(
+ );
+
+NTSTATUS
+DetectFreeSpecificTemporaryResource(
+ IN PNETDTECT_RESOURCE Resource
+ );
+
diff --git a/public/sdk/inc/ntddnfs.h b/public/sdk/inc/ntddnfs.h
new file mode 100644
index 000000000..2bd9c56cb
--- /dev/null
+++ b/public/sdk/inc/ntddnfs.h
@@ -0,0 +1,441 @@
+/*++ BUILD Version: 0009 // Increment this if a change has global effects
+
+Copyright (c) 1987-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddnfs.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the redirector file system device.
+
+Author:
+
+ Steve Wood (stevewo) 27-May-1990
+
+Revision History:
+
+ Larry Osterman (larryo)
+ Rita Wong (ritaw) 19-Feb-1991
+ John Rogers (JohnRo) 08-Mar-1991
+
+--*/
+
+#ifndef _NTDDNFS_
+#define _NTDDNFS_
+
+#include <windef.h>
+#include <lmcons.h>
+#include <lmwksta.h>
+#include <ntmsv1_0.h>
+
+//
+// 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.
+//
+//
+// 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 DD_NFS2_DEVICE_NAME "\\Device\\FsWrap"
+#define DD_NFS2_DEVICE_NAME_U L"\\Device\\FsWrap"
+
+#define DD_NFS_DEVICE_NAME "\\Device\\LanmanRedirector"
+#define DD_NFS_DEVICE_NAME_U L"\\Device\\LanmanRedirector"
+
+//
+// The file system name as returned by
+// NtQueryInformationVolume(FileFsAttributeInformation)
+//
+#define DD_NFS_FILESYS_NAME "LMRDR"
+#define DD_NFS_FILESYS_NAME_U L"LMRDR"
+
+//
+// EA Names for creating a tree connection
+//
+#define EA_NAME_CONNECT "NoConnect"
+#define EA_NAME_DOMAIN "Domain"
+#define EA_NAME_USERNAME "UserName"
+#define EA_NAME_PASSWORD "Password"
+#define EA_NAME_TYPE "Type"
+#define EA_NAME_TRANSPORT "Transport"
+#define EA_NAME_PRINCIPAL "Principal"
+#define EA_NAME_MRXCONTEXT "MinirdrContext"
+
+#define EA_NAME_DOMAIN_U L"Domain"
+#define EA_NAME_USERNAME_U L"UserName"
+#define EA_NAME_PASSWORD_U L"Password"
+#define EA_NAME_TYPE_U L"Type"
+#define EA_NAME_TRANSPORT_U L"Transport"
+#define EA_NAME_PRINCIPAL_U L"Principal"
+#define EA_NAME_MRXCONTEXT_U L"MinirdrContext"
+
+#define TRANSACTION_REQUEST 0x00000003
+
+//
+// Redirector specific configuration options (separate from workstation
+// service configuration options)
+//
+
+#define RDR_CONFIG_PARAMETERS L"Parameters"
+
+#define RDR_CONFIG_USE_WRITEBHND L"UseWriteBehind"
+#define RDR_CONFIG_USE_ASYNC_WRITEBHND L"UseAsyncWriteBehind"
+#define RDR_CONFIG_LOWER_SEARCH_THRESHOLD L"LowerSearchThreshold"
+#define RDR_CONFIG_LOWER_SEARCH_BUFFSIZE L"LowerSearchBufferSize"
+#define RDR_CONFIG_UPPER_SEARCH_BUFFSIZE L"UpperSearchBufferSize"
+#define RDR_CONFIG_STACK_SIZE L"StackSize"
+#define RDR_CONFIG_CONNECT_TIMEOUT L"ConnectMaxTimeout"
+#define RDR_CONFIG_RAW_TIME_LIMIT L"RawIoTimeLimit"
+#define RDR_CONFIG_OS2_SESSION_LIMIT L"Os2SessionLimit"
+#define RDR_CONFIG_TURBO_MODE L"TurboMode"
+
+#define RDR_CONFIG_CURRENT_WINDOWS_VERSION L"\\REGISTRY\\Machine\\Software\\Microsoft\\Windows Nt\\CurrentVersion"
+#define RDR_CONFIG_OPERATING_SYSTEM L"CurrentBuildNumber"
+#define RDR_CONFIG_OPERATING_SYSTEM_VERSION L"CurrentVersion"
+#define RDR_CONFIG_OPERATING_SYSTEM_NAME L"Windows NT "
+
+//
+// NtDeviceIoControlFile/NtFsControlFile IoControlCode values for this device.
+//
+// Warning: Remember that the low two bits of the code specify how the
+// buffers are passed to the driver!
+//
+//
+// Method = 00 - Buffer both input and output buffers for the request
+// Method = 01 - Buffer input, map output buffer to an MDL as an IN buff
+// Method = 10 - Buffer input, map output buffer to an MDL as an OUT buff
+// Method = 11 - Do not buffer either the input or output
+//
+
+#define IOCTL_RDR_BASE FILE_DEVICE_NETWORK_FILE_SYSTEM
+
+#define _RDR_CONTROL_CODE(request, method, access) \
+ CTL_CODE(IOCTL_RDR_BASE, request, method, access)
+
+
+#define FSCTL_LMR_START _RDR_CONTROL_CODE(100, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
+#define FSCTL_LMR_STOP _RDR_CONTROL_CODE(101, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LMR_SET_CONFIG_INFO _RDR_CONTROL_CODE(102, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
+#define FSCTL_LMR_GET_CONFIG_INFO _RDR_CONTROL_CODE(103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+#define FSCTL_LMR_GET_CONNECTION_INFO _RDR_CONTROL_CODE(104, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_LMR_ENUMERATE_CONNECTIONS _RDR_CONTROL_CODE(105, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_LMR_GET_VERSIONS _RDR_CONTROL_CODE(106, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LMR_DELETE_CONNECTION _RDR_CONTROL_CODE(107, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LMR_BIND_TO_TRANSPORT _RDR_CONTROL_CODE(108, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LMR_UNBIND_FROM_TRANSPORT _RDR_CONTROL_CODE(109, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LMR_ENUMERATE_TRANSPORTS _RDR_CONTROL_CODE(110, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_LMR_GET_HINT_SIZE _RDR_CONTROL_CODE(113, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LMR_TRANSACT _RDR_CONTROL_CODE(114, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LMR_ENUMERATE_PRINT_INFO _RDR_CONTROL_CODE(115, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LMR_GET_STATISTICS _RDR_CONTROL_CODE(116, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LMR_START_SMBTRACE _RDR_CONTROL_CODE(117, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LMR_END_SMBTRACE _RDR_CONTROL_CODE(118, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// the following fsctl controlcodes are reserved for the fswrap device and minirdrs
+//
+#define FSCTL_FSWRAP_RESERVED_LOW _RDR_CONTROL_CODE(200, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_FSWRAP_RESERVED_HIGH _RDR_CONTROL_CODE(219, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_MINIRDR_RESERVED_LOW _RDR_CONTROL_CODE(220, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_MINIRDR_RESERVED_HIGH _RDR_CONTROL_CODE(239, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// Identifies the data structure type for Buffer 2 of each FSCtl
+//
+typedef enum {
+ ConfigInformation, // FSCTL_LMR_START,
+ // FSCTL_LMR_SET_CONFIG_INFO,
+ // FSCTL_LMR_GET_CONFIG_INFO
+ // (structure found in wksta.h)
+
+ GetConnectionInfo, // FSCTL_LMR_ENUMERATE_CONNECTIONS,
+ // FSCTL_LMR_GET_CONNECTION_INFO
+ EnumerateTransports // FSCTL_LMR_ENUMERATE_TRANSPORTS
+ // (structure found in wksta.h)
+} FSCTL_LMR_STRUCTURES;
+
+//
+// LAN Man Redirector Request Packet used by the Workstation service
+// to pass parameters to the Redirector through Buffer 1 of
+// NtFsControlFile.
+//
+// Additional input or output of each FSCtl is found in Buffer 2.
+//
+
+#define REQUEST_PACKET_VERSION 0x00000006L // Structure version.
+
+typedef struct _LMR_REQUEST_PACKET {
+
+ FSCTL_LMR_STRUCTURES Type; // Type of structure in Buffer 2
+ ULONG Version; // Version of structure in Buffer 2
+ ULONG Level; // Level of information of force level
+ LUID LogonId; // User logon session identifier
+
+ union {
+
+ struct {
+ ULONG RedirectorNameLength; // Length of computer name.
+ ULONG DomainNameLength; // Length of primary domain name.
+ WCHAR RedirectorName[1]; // Computer name (NOT null terminated)
+// WCHAR DomainName[1]; // Domain name - After computer name.
+ } Start; // IN
+
+ struct {
+ ULONG EntriesRead; // Number of entries returned
+ ULONG TotalEntries; // Total entries available
+ ULONG TotalBytesNeeded; // Total bytes needed to read all entries
+ ULONG ResumeHandle; // Resume handle.
+ } Get; // OUT
+
+ struct {
+ ULONG WkstaParameter; // Specifies the entire structure or a
+ // field to set on input; if any
+ // field is invalid, specifies the
+ // one at fault on output.
+ } Set; // IN OUT
+
+ struct {
+ ULONG RedirectorVersion; // Version of the Redirector
+ ULONG RedirectorPlatform; // Redirector platform base number
+ ULONG MajorVersion; // LAN Man major version number
+ ULONG MinorVersion; // LAN Man minor version number
+ } GetVersion; // OUT
+
+ struct {
+ ULONG WkstaParameter; // Specifies the parameter at fault
+ // if a parameter is invalid OUT
+ ULONG QualityOfService; // Quality of service indicator IN
+ ULONG TransportNameLength; // not including terminator IN
+ WCHAR TransportName[1]; // Name of transport provider IN
+ } Bind;
+
+ struct {
+ ULONG TransportNameLength; // not including terminator
+ WCHAR TransportName[1]; // Name of transport provider
+ } Unbind; // IN
+
+ struct {
+ ULONG ConnectionsHint; // Number of bytes needed for buffer
+ // to enumerate tree connections
+ ULONG TransportsHint; // Number of bytes needed for buffer
+ // to enumerate transports
+ } GetHintSize; // OUT
+
+ struct {
+ ULONG Index; // Entry in the queue to return, 0 on
+ // first call, value of RestartIndex on
+ // subsequent calls.
+ } GetPrintQueue; // IN
+
+ } Parameters;
+
+} LMR_REQUEST_PACKET, *PLMR_REQUEST_PACKET;
+
+//
+// Mask bits for use with Parameters.GetConnectionInfo.Capabilities:
+//
+
+#define CAPABILITY_CASE_SENSITIVE_PASSWDS 0x00000001L
+#define CAPABILITY_REMOTE_ADMIN_PROTOCOL 0x00000002L
+#define CAPABILITY_RPC 0x00000004L
+#define CAPABILITY_SAM_PROTOCOL 0x00000008L
+#define CAPABILITY_UNICODE 0x00000010L
+
+//
+// Output buffer structure of FSCTL_LMR_ENUMERATE_CONNECTIONS used
+// to implement NetUseEnum. The returned data is actually an array
+// of this structure.
+//
+
+typedef struct _LMR_CONNECTION_INFO_0 {
+ UNICODE_STRING UNCName; // Name of UNC connection
+ ULONG ResumeKey; // Resume key for this entry.
+} LMR_CONNECTION_INFO_0, *PLMR_CONNECTION_INFO_0;
+
+typedef struct _LMR_CONNECTION_INFO_1 {
+ UNICODE_STRING UNCName; // Name of UNC connection
+ ULONG ResumeKey; // Resume key for this entry.
+
+ DEVICE_TYPE SharedResourceType; // Type of shared resource
+ ULONG ConnectionStatus; // Status of the connection
+ ULONG NumberFilesOpen; // Number of opened files
+} LMR_CONNECTION_INFO_1, *PLMR_CONNECTION_INFO_1;
+
+typedef struct _LMR_CONNECTION_INFO_2 {
+ UNICODE_STRING UNCName; // Name of UNC connection
+ ULONG ResumeKey; // Resume key for this entry.
+ DEVICE_TYPE SharedResourceType; // Type of shared resource
+ ULONG ConnectionStatus; // Status of the connection
+ ULONG NumberFilesOpen; // Number of opened files
+
+ UNICODE_STRING UserName; // User who created connection.
+ UNICODE_STRING DomainName; // Domain of user who created connection.
+ ULONG Capabilities; // Bit mask of remote abilities.
+ UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH]; // User session key
+ UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH]; // Lanman session key
+} LMR_CONNECTION_INFO_2, *PLMR_CONNECTION_INFO_2;
+
+typedef struct _LMR_CONNECTION_INFO_3 {
+ UNICODE_STRING UNCName; // Name of UNC connection
+ ULONG ResumeKey; // Resume key for this entry.
+ DEVICE_TYPE SharedResourceType; // Type of shared resource
+ ULONG ConnectionStatus; // Status of the connection
+ ULONG NumberFilesOpen; // Number of opened files
+
+ UNICODE_STRING UserName; // User who created connection.
+ UNICODE_STRING DomainName; // Domain of user who created connection.
+ ULONG Capabilities; // Bit mask of remote abilities.
+ UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH]; // User session key
+ UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH]; // Lanman session key
+ UNICODE_STRING TransportName; // Transport connection is active on
+ ULONG Throughput; // Throughput of connection.
+ ULONG Delay; // Small packet overhead.
+ LARGE_INTEGER TimeZoneBias; // Time zone delta in 100ns units.
+ BOOL IsSpecialIpcConnection; // True IFF there is a special IPC connection active.
+ BOOL Reliable; // True iff the connection is reliable
+ BOOL ReadAhead; // True iff readahead is active on connection.
+ BOOL Core;
+ BOOL MsNet103;
+ BOOL Lanman10;
+ BOOL WindowsForWorkgroups;
+ BOOL Lanman20;
+ BOOL Lanman21;
+ BOOL WindowsNt;
+ BOOL MixedCasePasswords;
+ BOOL MixedCaseFiles;
+ BOOL LongNames;
+ BOOL ExtendedNegotiateResponse;
+ BOOL LockAndRead;
+ BOOL NtSecurity;
+ BOOL SupportsEa;
+ BOOL NtNegotiateResponse;
+ BOOL CancelSupport;
+ BOOL UnicodeStrings;
+ BOOL LargeFiles;
+ BOOL NtSmbs;
+ BOOL RpcRemoteAdmin;
+ BOOL NtStatusCodes;
+ BOOL LevelIIOplock;
+ BOOL UtcTime;
+ BOOL UserSecurity;
+ BOOL EncryptsPasswords;
+} LMR_CONNECTION_INFO_3, *PLMR_CONNECTION_INFO_3;
+
+#define TRANSACTION_VERSION 0x00000002L // Structure version.
+typedef struct _LMR_TRANSACTION {
+ ULONG Type; // Type of structure
+ ULONG Size; // Size of fixed portion of structure
+ ULONG Version; // Structure version.
+ ULONG NameLength; // Number of bytes in name (in path
+ // format, e.g., \server\pipe\netapi\4)
+ ULONG NameOffset; // Offset of name in buffer.
+ BOOLEAN ResponseExpected; // Should remote system respond?
+ ULONG Timeout; // Timeout time in milliseconds.
+ ULONG SetupWords; // Number of trans setup words (may be
+ // 0). (setup words are input/output.)
+ ULONG SetupOffset; // Offset of setup (may be 0 for none).
+ ULONG MaxSetup; // Size of setup word array (may be 0).
+ ULONG ParmLength; // Input param area length (may be 0).
+ PVOID ParmPtr; // Input parameter area (may be NULL).
+ ULONG MaxRetParmLength; // Output param. area length (may be 0).
+ ULONG DataLength; // Input data area length (may be 0).
+ PVOID DataPtr; // Input data area (may be NULL).
+ ULONG MaxRetDataLength; // Output data area length (may be 0).
+ PVOID RetDataPtr; // Output data area (may be NULL).
+} LMR_TRANSACTION, *PLMR_TRANSACTION;
+
+
+//
+// Output buffer structure of FSCTL_LMR_ENUMERATE_PRINT_INFO used
+// to implement DosPrintQEnum to down level servers. Caller must supply
+// a buffer at least sizeof( LMR_GET_PRINT_QUEUE ) + UNLEN
+//
+
+typedef struct _LMR_GET_PRINT_QUEUE {
+ ANSI_STRING OriginatorName; // Name of user that did print
+ LARGE_INTEGER CreateTime; // When file was created
+ ULONG EntryStatus; // Held/Printing etc.
+ ULONG FileNumber; // Spool file number from create
+ // print request.
+ ULONG FileSize;
+ ULONG RestartIndex; // Index of the next entry in queue
+ // note this is not last index+1
+ // either a value of 0 or an error
+ // indicates end-of-queue
+
+} LMR_GET_PRINT_QUEUE, *PLMR_GET_PRINT_QUEUE;
+
+//
+// NB: The following structure is STAT_WORKSTATION_0 in sdk\inc\lmstats.h. If
+// you change the structure, change it in both places
+//
+
+typedef struct _REDIR_STATISTICS {
+ LARGE_INTEGER StatisticsStartTime;
+
+ LARGE_INTEGER BytesReceived;
+ LARGE_INTEGER SmbsReceived;
+ LARGE_INTEGER PagingReadBytesRequested;
+ LARGE_INTEGER NonPagingReadBytesRequested;
+ LARGE_INTEGER CacheReadBytesRequested;
+ LARGE_INTEGER NetworkReadBytesRequested;
+
+ LARGE_INTEGER BytesTransmitted;
+ LARGE_INTEGER SmbsTransmitted;
+ LARGE_INTEGER PagingWriteBytesRequested;
+ LARGE_INTEGER NonPagingWriteBytesRequested;
+ LARGE_INTEGER CacheWriteBytesRequested;
+ LARGE_INTEGER NetworkWriteBytesRequested;
+
+ ULONG InitiallyFailedOperations;
+ ULONG FailedCompletionOperations;
+
+ ULONG ReadOperations;
+ ULONG RandomReadOperations;
+ ULONG ReadSmbs;
+ ULONG LargeReadSmbs;
+ ULONG SmallReadSmbs;
+
+ ULONG WriteOperations;
+ ULONG RandomWriteOperations;
+ ULONG WriteSmbs;
+ ULONG LargeWriteSmbs;
+ ULONG SmallWriteSmbs;
+
+ ULONG RawReadsDenied;
+ ULONG RawWritesDenied;
+
+ ULONG NetworkErrors;
+
+ // Connection/Session counts
+ ULONG Sessions;
+ ULONG FailedSessions;
+ ULONG Reconnects;
+ ULONG CoreConnects;
+ ULONG Lanman20Connects;
+ ULONG Lanman21Connects;
+ ULONG LanmanNtConnects;
+ ULONG ServerDisconnects;
+ ULONG HungSessions;
+ ULONG UseCount;
+ ULONG FailedUseCount;
+
+ //
+ // Queue Lengths (updates protected by RdrMpxTableSpinLock NOT
+ // RdrStatisticsSpinlock)
+ //
+
+ ULONG CurrentCommands;
+} REDIR_STATISTICS, *PREDIR_STATISTICS;
+
+#endif // ifndef _NTDDNFS_
diff --git a/public/sdk/inc/ntddnpfs.h b/public/sdk/inc/ntddnpfs.h
new file mode 100644
index 000000000..416422173
--- /dev/null
+++ b/public/sdk/inc/ntddnpfs.h
@@ -0,0 +1,47 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddnpfs.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Named pipe file system device.
+
+Author:
+
+ Steve Wood (stevewo) 27-May-1990
+
+Revision History:
+
+--*/
+
+//
+// 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 DD_NPFS_DEVICE_NAME "\\Device\\UNKNOWN"
+
+
+//
+// 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_NPFS_BASE FILE_DEVICE_NAMED_PIPE
+
+
+//
+// NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for
+// this device.
+//
+
diff --git a/public/sdk/inc/ntddnull.h b/public/sdk/inc/ntddnull.h
new file mode 100644
index 000000000..c39c6ade2
--- /dev/null
+++ b/public/sdk/inc/ntddnull.h
@@ -0,0 +1,47 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddnull.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Null device.
+
+Author:
+
+ Steve Wood (stevewo) 27-May-1990
+
+Revision History:
+
+--*/
+
+//
+// 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 DD_NULL_DEVICE_NAME "\\Device\\Null"
+
+
+//
+// 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_NULL_BASE FILE_DEVICE_NULL
+
+
+//
+// NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for
+// this device.
+//
+
diff --git a/public/sdk/inc/ntddpar.h b/public/sdk/inc/ntddpar.h
new file mode 100644
index 000000000..32c3bddd5
--- /dev/null
+++ b/public/sdk/inc/ntddpar.h
@@ -0,0 +1,63 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddpar.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Parallel device.
+
+Author:
+
+ Steve Wood (stevewo) 27-May-1990
+
+Revision History:
+
+--*/
+
+//
+// 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_PAR_BASE FILE_DEVICE_PARALLEL_PORT
+#define IOCTL_PAR_QUERY_INFORMATION CTL_CODE(FILE_DEVICE_PARALLEL_PORT,1,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_PAR_SET_INFORMATION CTL_CODE(FILE_DEVICE_PARALLEL_PORT,2,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_PAR_QUERY_DEVICE_ID CTL_CODE(FILE_DEVICE_PARALLEL_PORT,3,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_PAR_QUERY_DEVICE_ID_SIZE CTL_CODE(FILE_DEVICE_PARALLEL_PORT,4,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+//
+// NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for
+// this device.
+//
+
+typedef struct _PAR_QUERY_INFORMATION{
+ UCHAR Status;
+} PAR_QUERY_INFORMATION, *PPAR_QUERY_INFORMATION;
+
+typedef struct _PAR_SET_INFORMATION{
+ UCHAR Init;
+} PAR_SET_INFORMATION, *PPAR_SET_INFORMATION;
+
+#define PARALLEL_INIT 0x1
+#define PARALLEL_AUTOFEED 0x2
+#define PARALLEL_PAPER_EMPTY 0x4
+#define PARALLEL_OFF_LINE 0x8
+#define PARALLEL_POWER_OFF 0x10
+#define PARALLEL_NOT_CONNECTED 0x20
+#define PARALLEL_BUSY 0x40
+#define PARALLEL_SELECTED 0x80
+
+//
+// This is the structure returned by IOCTL_PAR_QUERY_DEVICE_ID_SIZE.
+//
+
+typedef struct _PAR_DEVICE_ID_SIZE_INFORMATION {
+ ULONG DeviceIdSize;
+} PAR_DEVICE_ID_SIZE_INFORMATION, *PPAR_DEVICE_ID_SIZE_INFORMATION;
diff --git a/public/sdk/inc/ntddpcm.h b/public/sdk/inc/ntddpcm.h
new file mode 100644
index 000000000..0ff9a7eb6
--- /dev/null
+++ b/public/sdk/inc/ntddpcm.h
@@ -0,0 +1,161 @@
+/*++
+
+Copyright (c) 1994 Digital Equipment Corporation
+
+Module Name:
+
+ ntddpcm.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the PCMCIA Adapters.
+
+Author:
+
+ Jeff McLeman
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDPCMH_
+#define _NTDDPCMH_
+
+//
+// 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_PCMCIA_BASE FILE_DEVICE_CONTROLLER
+
+#define DD_PCMCIA_DEVICE_NAME "\\\\.\\Pcmcia"
+
+
+//
+// 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_GET_TUPLE_DATA CTL_CODE(FILE_DEVICE_CONTROLLER, 3000, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_CONFIGURE_CARD CTL_CODE(FILE_DEVICE_CONTROLLER, 3001, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_CARD_EVENT CTL_CODE(FILE_DEVICE_CONTROLLER, 3002, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_CARD_REGISTERS CTL_CODE(FILE_DEVICE_CONTROLLER, 3003, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_SOCKET_INFORMATION CTL_CODE(FILE_DEVICE_CONTROLLER, 3004, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_PCMCIA_CONFIGURATION CTL_CODE(FILE_DEVICE_CONTROLLER, 3005, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_OPEN_ATTRIBUTE_WINDOW CTL_CODE(FILE_DEVICE_CONTROLLER, 3006, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_CLOSE_ATTRIBUTE_WINDOW CTL_CODE(FILE_DEVICE_CONTROLLER, 3007, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// Tuple request parameters.
+//
+
+#define PCMCIA_MAX_IO_PORT_WINDOWS 2
+#define PCMCIA_MAX_MEMORY_WINDOWS 4
+
+typedef struct _TUPLE_REQUEST {
+ USHORT Socket;
+} TUPLE_REQUEST, *PTUPLE_REQUEST;
+
+typedef struct _PCMCIA_CONFIG_REQUEST {
+ USHORT Socket;
+ UCHAR ConfigureIo;
+ UCHAR ConfigurationIndex;
+
+ //
+ // Query just returns the current socket configuration.
+ //
+
+ UCHAR Query;
+
+ //
+ // Power - zero means power off the socket (i.e. remove configuration)
+ //
+
+ UCHAR Power;
+
+ //
+ // IRQ support.
+ //
+
+ UCHAR DeviceIrq;
+ UCHAR CardReadyIrq;
+
+ //
+ // I/O port support.
+ //
+
+ ULONG NumberOfIoPortRanges;
+ USHORT IoPorts[PCMCIA_MAX_IO_PORT_WINDOWS];
+ USHORT IoPortLength[PCMCIA_MAX_IO_PORT_WINDOWS];
+ USHORT IoPort16[PCMCIA_MAX_IO_PORT_WINDOWS];
+
+ //
+ // Memory window support.
+ //
+
+ ULONG NumberOfMemoryRanges;
+ ULONG HostMemoryWindow[PCMCIA_MAX_MEMORY_WINDOWS];
+ ULONG PCCARDMemoryWindow[PCMCIA_MAX_MEMORY_WINDOWS];
+ ULONG MemoryWindowLength[PCMCIA_MAX_MEMORY_WINDOWS];
+ BOOLEAN AttributeMemory[PCMCIA_MAX_MEMORY_WINDOWS];
+} PCMCIA_CONFIG_REQUEST, *PPCMCIA_CONFIG_REQUEST;
+
+#define MANUFACTURER_NAME_LENGTH 64
+#define DEVICE_IDENTIFIER_LENGTH 64
+#define DRIVER_NAME_LENGTH 32
+
+//
+// Controller types returned in socket information structure.
+//
+
+#define PcmciaIntelCompatible 0
+#define PcmciaElcController 1
+#define PcmciaCirrusLogic 2
+#define PcmciaDatabook 3
+
+typedef struct _PCMCIA_SOCKET_INFORMATION {
+
+ USHORT Socket;
+ USHORT TupleCrc;
+ UCHAR Manufacturer[MANUFACTURER_NAME_LENGTH];
+ UCHAR Identifier[DEVICE_IDENTIFIER_LENGTH];
+ UCHAR DriverName[DRIVER_NAME_LENGTH];
+ UCHAR DeviceFunctionId;
+ UCHAR ControllerType;
+ UCHAR CardInSocket;
+ UCHAR CardEnabled;
+
+} PCMCIA_SOCKET_INFORMATION, *PPCMCIA_SOCKET_INFORMATION;
+
+//
+// Structure returned to provide current configuration information
+// for pcmcia driver.
+//
+
+typedef struct _PCMCIA_CONFIGURATION {
+
+ USHORT Sockets;
+ UCHAR Reserved;
+ UCHAR ControllerType;
+ USHORT IoPortBase;
+ USHORT IoPortSize;
+ ULONG MemoryWindowPhysicalAddress;
+
+} PCMCIA_CONFIGURATION, *PPCMCIA_CONFIGURATION;
+
+#endif
+
diff --git a/public/sdk/inc/ntddrdr.h b/public/sdk/inc/ntddrdr.h
new file mode 100644
index 000000000..fc955335e
--- /dev/null
+++ b/public/sdk/inc/ntddrdr.h
@@ -0,0 +1,54 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1993 Microsoft Corporation
+
+Module Name:
+
+ ntddrdr.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing a network redirector device.
+
+Author:
+
+ Manny Weiser (mannyw) 27-Jun-1993
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDRDR_
+#define _NTDDRDR_
+
+#define RDR_SERVER_LENGTH 80
+#define RDR_QUEUE_LENGTH 80
+
+//
+// NtDeviceIoControlFile/NtFsControlFile IoControlCode values for this device.
+//
+// Warning: Remember that the low two bits of the code specify how the
+// buffers are passed to the driver!
+//
+//
+// Method = 00 - Buffer both input and output buffers for the request
+// Method = 01 - Buffer input, map output buffer to an MDL as an IN buff
+// Method = 10 - Buffer input, map output buffer to an MDL as an OUT buff
+// Method = 11 - Do not buffer either the input or output
+//
+
+#define IOCTL_REDIR_BASE FILE_DEVICE_NETWORK_REDIRECTOR
+
+#define _REDIR_CONTROL_CODE(request, method, access) \
+ CTL_CODE(IOCTL_REDIR_BASE, request, method, access)
+
+#define FSCTL_GET_PRINT_ID _REDIR_CONTROL_CODE(1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+typedef struct _QUERY_PRINT_JOB_INFO {
+ ULONG JobId; // Print job ID
+ WCHAR ServerName[RDR_SERVER_LENGTH+1]; // Server name
+ WCHAR QueueName[RDR_QUEUE_LENGTH+1]; // Queue name.
+} QUERY_PRINT_JOB_INFO, *PQUERY_PRINT_JOB_INFO;
+
+#endif // ifndef _NTDDRDR_
diff --git a/public/sdk/inc/ntddscsi.h b/public/sdk/inc/ntddscsi.h
new file mode 100644
index 000000000..310587237
--- /dev/null
+++ b/public/sdk/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.
+//
+
+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/public/sdk/inc/ntddser.h b/public/sdk/inc/ntddser.h
new file mode 100644
index 000000000..a76a0ff4c
--- /dev/null
+++ b/public/sdk/inc/ntddser.h
@@ -0,0 +1,529 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddser.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Serial device.
+
+Author:
+
+ Steve Wood (stevewo) 27-May-1990
+
+Revision History:
+
+--*/
+
+
+//
+// NtDeviceIoControlFile IoControlCode values for this device.
+//
+
+#define IOCTL_SERIAL_SET_BAUD_RATE CTL_CODE(FILE_DEVICE_SERIAL_PORT, 1,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_QUEUE_SIZE CTL_CODE(FILE_DEVICE_SERIAL_PORT, 2,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_LINE_CONTROL CTL_CODE(FILE_DEVICE_SERIAL_PORT, 3,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_BREAK_ON CTL_CODE(FILE_DEVICE_SERIAL_PORT, 4,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_BREAK_OFF CTL_CODE(FILE_DEVICE_SERIAL_PORT, 5,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_IMMEDIATE_CHAR CTL_CODE(FILE_DEVICE_SERIAL_PORT, 6,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_TIMEOUTS CTL_CODE(FILE_DEVICE_SERIAL_PORT, 7,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_TIMEOUTS CTL_CODE(FILE_DEVICE_SERIAL_PORT, 8,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_DTR CTL_CODE(FILE_DEVICE_SERIAL_PORT, 9,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_CLR_DTR CTL_CODE(FILE_DEVICE_SERIAL_PORT,10,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_RESET_DEVICE CTL_CODE(FILE_DEVICE_SERIAL_PORT,11,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_RTS CTL_CODE(FILE_DEVICE_SERIAL_PORT,12,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_CLR_RTS CTL_CODE(FILE_DEVICE_SERIAL_PORT,13,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_XOFF CTL_CODE(FILE_DEVICE_SERIAL_PORT,14,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_XON CTL_CODE(FILE_DEVICE_SERIAL_PORT,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_WAIT_MASK CTL_CODE(FILE_DEVICE_SERIAL_PORT,16,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_WAIT_MASK CTL_CODE(FILE_DEVICE_SERIAL_PORT,17,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_WAIT_ON_MASK CTL_CODE(FILE_DEVICE_SERIAL_PORT,18,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_PURGE CTL_CODE(FILE_DEVICE_SERIAL_PORT,19,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_BAUD_RATE CTL_CODE(FILE_DEVICE_SERIAL_PORT,20,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_LINE_CONTROL CTL_CODE(FILE_DEVICE_SERIAL_PORT,21,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_CHARS CTL_CODE(FILE_DEVICE_SERIAL_PORT,22,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_CHARS CTL_CODE(FILE_DEVICE_SERIAL_PORT,23,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_HANDFLOW CTL_CODE(FILE_DEVICE_SERIAL_PORT,24,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_HANDFLOW CTL_CODE(FILE_DEVICE_SERIAL_PORT,25,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_MODEMSTATUS CTL_CODE(FILE_DEVICE_SERIAL_PORT,26,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_COMMSTATUS CTL_CODE(FILE_DEVICE_SERIAL_PORT,27,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_XOFF_COUNTER CTL_CODE(FILE_DEVICE_SERIAL_PORT,28,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_PROPERTIES CTL_CODE(FILE_DEVICE_SERIAL_PORT,29,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_DTRRTS CTL_CODE(FILE_DEVICE_SERIAL_PORT,30,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+
+// begin_winioctl
+
+#define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+// end_winioctl
+
+#define IOCTL_SERIAL_CONFIG_SIZE CTL_CODE(FILE_DEVICE_SERIAL_PORT,32,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_GET_COMMCONFIG CTL_CODE(FILE_DEVICE_SERIAL_PORT,33,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_SET_COMMCONFIG CTL_CODE(FILE_DEVICE_SERIAL_PORT,34,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+#define IOCTL_SERIAL_GET_STATS CTL_CODE(FILE_DEVICE_SERIAL_PORT,35,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_SERIAL_CLEAR_STATS CTL_CODE(FILE_DEVICE_SERIAL_PORT,36,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+typedef struct _SERIALPERF_STATS {
+ ULONG ReceivedCount;
+ ULONG TransmittedCount;
+ ULONG FrameErrorCount;
+ ULONG SerialOverrunErrorCount;
+ ULONG BufferOverrunErrorCount;
+ ULONG ParityErrorCount;
+} SERIALPERF_STATS, *PSERIALPERF_STATS;
+
+typedef struct _SERIALCONFIG {
+ ULONG Size;
+ USHORT Version;
+ ULONG SubType;
+ ULONG ProvOffset;
+ ULONG ProviderSize;
+ WCHAR ProviderData[1];
+} SERIALCONFIG,*PSERIALCONFIG;
+
+//
+// NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for
+// this device.
+//
+
+//
+// This structure used to set line parameters.
+//
+
+typedef struct _SERIAL_LINE_CONTROL {
+ UCHAR StopBits;
+ UCHAR Parity;
+ UCHAR WordLength;
+ } SERIAL_LINE_CONTROL,*PSERIAL_LINE_CONTROL;
+
+typedef struct _SERIAL_TIMEOUTS {
+ ULONG ReadIntervalTimeout;
+ ULONG ReadTotalTimeoutMultiplier;
+ ULONG ReadTotalTimeoutConstant;
+ ULONG WriteTotalTimeoutMultiplier;
+ ULONG WriteTotalTimeoutConstant;
+ } SERIAL_TIMEOUTS,*PSERIAL_TIMEOUTS;
+
+//
+// This structure used to resize the input/output buffers.
+// An error code will be returned if the size exceeds the
+// drivers capacity. The driver reserves the right to
+// allocate a larger buffer.
+//
+
+typedef struct _SERIAL_QUEUE_SIZE {
+ ULONG InSize;
+ ULONG OutSize;
+ } SERIAL_QUEUE_SIZE,*PSERIAL_QUEUE_SIZE;
+
+
+//
+// This structure used by set baud rate
+//
+
+typedef struct _SERIAL_BAUD_RATE {
+ ULONG BaudRate;
+ } SERIAL_BAUD_RATE,*PSERIAL_BAUD_RATE;
+
+//
+// Defines the bitmask that the driver can used to notify
+// app of various changes in the state of the UART.
+//
+
+#define SERIAL_EV_RXCHAR 0x0001 // Any Character received
+#define SERIAL_EV_RXFLAG 0x0002 // Received certain character
+#define SERIAL_EV_TXEMPTY 0x0004 // Transmitt Queue Empty
+#define SERIAL_EV_CTS 0x0008 // CTS changed state
+#define SERIAL_EV_DSR 0x0010 // DSR changed state
+#define SERIAL_EV_RLSD 0x0020 // RLSD changed state
+#define SERIAL_EV_BREAK 0x0040 // BREAK received
+#define SERIAL_EV_ERR 0x0080 // Line status error occurred
+#define SERIAL_EV_RING 0x0100 // Ring signal detected
+#define SERIAL_EV_PERR 0x0200 // Printer error occured
+#define SERIAL_EV_RX80FULL 0x0400 // Receive buffer is 80 percent full
+#define SERIAL_EV_EVENT1 0x0800 // Provider specific event 1
+#define SERIAL_EV_EVENT2 0x1000 // Provider specific event 2
+
+//
+// A longword is used to send down a mask that
+// instructs the driver what to purge.
+//
+// SERIAL_PURGE_TXABORT - Implies the current and all pending writes.
+// SERIAL_PURGE_RXABORT - Implies the current and all pending reads.
+// SERIAL_PURGE_TXCLEAR - Implies the transmit buffer if exists
+// SERIAL_PURGE_RXCLEAR - Implies the receive buffer if exists.
+//
+
+#define SERIAL_PURGE_TXABORT 0x00000001
+#define SERIAL_PURGE_RXABORT 0x00000002
+#define SERIAL_PURGE_TXCLEAR 0x00000004
+#define SERIAL_PURGE_RXCLEAR 0x00000008
+
+//
+// Communication defines
+//
+
+#define STOP_BIT_1 0
+#define STOP_BITS_1_5 1
+#define STOP_BITS_2 2
+
+#define NO_PARITY 0
+#define ODD_PARITY 1
+#define EVEN_PARITY 2
+#define MARK_PARITY 3
+#define SPACE_PARITY 4
+
+
+//
+// This structure is used to set and retrieve the special characters
+// used by the nt serial driver.
+//
+// Note that the driver will return an error if xonchar == xoffchar.
+//
+
+typedef struct _SERIAL_CHARS {
+ UCHAR EofChar;
+ UCHAR ErrorChar;
+ UCHAR BreakChar;
+ UCHAR EventChar;
+ UCHAR XonChar;
+ UCHAR XoffChar;
+ } SERIAL_CHARS,*PSERIAL_CHARS;
+
+//
+// This structure is used to contain the flow control
+// and handshaking setup.
+//
+// A reasonably precise explaination of how they all
+// work can be found in the OS/2 tech references.
+//
+// For Xon/Xofflimit:
+//
+// When there are more characters then
+//
+// (typeaheadbuffersize - xofflimit)
+//
+// in the typeahead buffer then the driver will perform all flow
+// control that the app has enabled so that the sender will (hopefully)
+// stop sending characters.
+//
+// When there are less than xonlimit number of characters in the
+// typeahead buffer the driver will perform all flow control that
+// the app has enabled so that the sender will hopefully start sending
+// characters again.
+//
+// It should be noted that if Xoff character is sent then the
+// driver will also stop transmitting any more characters. This is to
+// provide support for those systems that take any character that
+// follows an Xoff as an implied Xon.
+//
+
+typedef struct _SERIAL_HANDFLOW {
+ ULONG ControlHandShake;
+ ULONG FlowReplace;
+ LONG XonLimit;
+ LONG XoffLimit;
+ } SERIAL_HANDFLOW,*PSERIAL_HANDFLOW;
+
+#define SERIAL_DTR_MASK ((ULONG)0x03)
+#define SERIAL_DTR_CONTROL ((ULONG)0x01)
+#define SERIAL_DTR_HANDSHAKE ((ULONG)0x02)
+#define SERIAL_CTS_HANDSHAKE ((ULONG)0x08)
+#define SERIAL_DSR_HANDSHAKE ((ULONG)0x10)
+#define SERIAL_DCD_HANDSHAKE ((ULONG)0x20)
+#define SERIAL_OUT_HANDSHAKEMASK ((ULONG)0x38)
+#define SERIAL_DSR_SENSITIVITY ((ULONG)0x40)
+#define SERIAL_ERROR_ABORT ((ULONG)0x80000000)
+#define SERIAL_CONTROL_INVALID ((ULONG)0x7fffff84)
+#define SERIAL_AUTO_TRANSMIT ((ULONG)0x01)
+#define SERIAL_AUTO_RECEIVE ((ULONG)0x02)
+#define SERIAL_ERROR_CHAR ((ULONG)0x04)
+#define SERIAL_NULL_STRIPPING ((ULONG)0x08)
+#define SERIAL_BREAK_CHAR ((ULONG)0x10)
+#define SERIAL_RTS_MASK ((ULONG)0xc0)
+#define SERIAL_RTS_CONTROL ((ULONG)0x40)
+#define SERIAL_RTS_HANDSHAKE ((ULONG)0x80)
+#define SERIAL_TRANSMIT_TOGGLE ((ULONG)0xc0)
+#define SERIAL_XOFF_CONTINUE ((ULONG)0x80000000)
+#define SERIAL_FLOW_INVALID ((ULONG)0x7fffff20)
+
+//
+// These are the following reasons that the device could be holding.
+//
+#define SERIAL_TX_WAITING_FOR_CTS ((ULONG)0x00000001)
+#define SERIAL_TX_WAITING_FOR_DSR ((ULONG)0x00000002)
+#define SERIAL_TX_WAITING_FOR_DCD ((ULONG)0x00000004)
+#define SERIAL_TX_WAITING_FOR_XON ((ULONG)0x00000008)
+#define SERIAL_TX_WAITING_XOFF_SENT ((ULONG)0x00000010)
+#define SERIAL_TX_WAITING_ON_BREAK ((ULONG)0x00000020)
+#define SERIAL_RX_WAITING_FOR_DSR ((ULONG)0x00000040)
+
+//
+// These are the error values that can be returned by the
+// driver.
+//
+#define SERIAL_ERROR_BREAK ((ULONG)0x00000001)
+#define SERIAL_ERROR_FRAMING ((ULONG)0x00000002)
+#define SERIAL_ERROR_OVERRUN ((ULONG)0x00000004)
+#define SERIAL_ERROR_QUEUEOVERRUN ((ULONG)0x00000008)
+#define SERIAL_ERROR_PARITY ((ULONG)0x00000010)
+
+
+//
+// This structure is used to get the current error and
+// general status of the driver.
+//
+
+typedef struct _SERIAL_STATUS {
+ ULONG Errors;
+ ULONG HoldReasons;
+ ULONG AmountInInQueue;
+ ULONG AmountInOutQueue;
+ BOOLEAN EofReceived;
+ BOOLEAN WaitForImmediate;
+ } SERIAL_STATUS,*PSERIAL_STATUS;
+
+//
+// This structure is used for XOFF counter ioctl. The xoff ioctl
+// is used to support those subsystems that feel the need to emulate
+// the serial chip in software.
+//
+// It has the following semantics:
+//
+// This io request is placed into the normal device write
+// queue. That is, it will be queued behind any writes
+// already given to the driver.
+//
+// When this request becomes the current request, the character
+// specified in the field XoffChar will be sent, subject to
+// all other flow control already defined.
+//
+// Immediately upon sending the character the driver will
+// perform the following actions.
+//
+// A timer will be initiated that will expire after the
+// number of milliseconds in the Timeout field of the
+// SERIAL_XOFF_COUNTER structure.
+//
+// The driver will initialize a counter to the value specified
+// in the Counter field of the SERIAL_XOFF_RECORD. The driver
+// will decrement this counter whenever a character is received.
+//
+// This request will then be held by the driver. It will
+// actually complete under the following circumstances:
+//
+// 1) If there is another "write" request behind it in the queue.
+// The "xoff" request will be completed with the informational status
+// STATUS_SERIAL_MORE_WRITES. The Information field of the
+// IOSTATUS block will be set to 0.
+//
+// Note: By write request we mean another SERIAL_XOFF_COUNTER
+// request, or a simple write request. If the only subsequent
+// request is a flush request, the driver WILL NOT automatically
+// complete the SERIAL_XOFF_COUNTER request. NOTE: Transmit
+// immediate requests DO NOT count as a normal write, and therefore
+// would not cause a counter request to complete.
+//
+// 2) The timer expires. The driver will complete the request
+// with the informational status STATUS_SERIAL_COUNTER_TIMEOUT.
+// The Information field of the IOSTATUS of the request will be set to 0.
+//
+// 3) The driver maintained counter goes to zero. (By implication,
+// at least "Counter" number of characters have been received.)
+// The request will be completed with a successful status
+// of STATUS_SUCCESS. The Information field of the
+// IOSTATUS of the request will be set to 0.
+//
+// 4) This is really a degenerate case of "1" above. The request
+// is started and no request follow it on the queue. However
+// at some point, before "2" or "3" above occur, another "write"
+// request is started. This will cause the completion actions
+// stated in "1" to occur.
+//
+// NOTE: This request being issued WILL NOT cause the normal flow
+// control code of the driver to be invoked.
+//
+// NOTE: This request has no interaction with the IOCTL_SERIAL_WAIT_ON_MASK
+// request. An application CAN NOT wait via the above ^^^^^^ ioctl
+// on the counter going to zero. The application must synchronize
+// with the particular IOCTL_SERIAL_XOFF_COUNTER request.
+//
+// NOTE: The Timeout value equal to zero would cause the counter
+// to NEVER timeout. The only way that such a request could
+// be killed at that point would be issue another write, or
+// to purge the WRITE queue.
+//
+
+typedef struct _SERIAL_XOFF_COUNTER {
+ ULONG Timeout; // Zero based. In milliseconds
+ LONG Counter; // Must be greater than zero.
+ UCHAR XoffChar;
+ } SERIAL_XOFF_COUNTER,*PSERIAL_XOFF_COUNTER;
+
+//
+// The following structure (and defines) are passed back by
+// the serial driver in response to the get properties ioctl.
+//
+
+#define SERIAL_SP_SERIALCOMM ((ULONG)0x00000001)
+
+//
+// Provider subtypes
+//
+#define SERIAL_SP_UNSPECIFIED ((ULONG)0x00000000)
+#define SERIAL_SP_RS232 ((ULONG)0x00000001)
+#define SERIAL_SP_PARALLEL ((ULONG)0x00000002)
+#define SERIAL_SP_RS422 ((ULONG)0x00000003)
+#define SERIAL_SP_RS423 ((ULONG)0x00000004)
+#define SERIAL_SP_RS449 ((ULONG)0x00000005)
+#define SERIAL_SP_MODEM ((ULONG)0X00000006)
+#define SERIAL_SP_FAX ((ULONG)0x00000021)
+#define SERIAL_SP_SCANNER ((ULONG)0x00000022)
+#define SERIAL_SP_BRIDGE ((ULONG)0x00000100)
+#define SERIAL_SP_LAT ((ULONG)0x00000101)
+#define SERIAL_SP_TELNET ((ULONG)0x00000102)
+#define SERIAL_SP_X25 ((ULONG)0x00000103)
+
+//
+// Provider capabilities flags.
+//
+
+#define SERIAL_PCF_DTRDSR ((ULONG)0x0001)
+#define SERIAL_PCF_RTSCTS ((ULONG)0x0002)
+#define SERIAL_PCF_CD ((ULONG)0x0004)
+#define SERIAL_PCF_PARITY_CHECK ((ULONG)0x0008)
+#define SERIAL_PCF_XONXOFF ((ULONG)0x0010)
+#define SERIAL_PCF_SETXCHAR ((ULONG)0x0020)
+#define SERIAL_PCF_TOTALTIMEOUTS ((ULONG)0x0040)
+#define SERIAL_PCF_INTTIMEOUTS ((ULONG)0x0080)
+#define SERIAL_PCF_SPECIALCHARS ((ULONG)0x0100)
+#define SERIAL_PCF_16BITMODE ((ULONG)0x0200)
+
+//
+// Comm provider settable parameters.
+//
+
+#define SERIAL_SP_PARITY ((ULONG)0x0001)
+#define SERIAL_SP_BAUD ((ULONG)0x0002)
+#define SERIAL_SP_DATABITS ((ULONG)0x0004)
+#define SERIAL_SP_STOPBITS ((ULONG)0x0008)
+#define SERIAL_SP_HANDSHAKING ((ULONG)0x0010)
+#define SERIAL_SP_PARITY_CHECK ((ULONG)0x0020)
+#define SERIAL_SP_CARRIER_DETECT ((ULONG)0x0040)
+
+//
+// Settable baud rates in the provider.
+//
+
+#define SERIAL_BAUD_075 ((ULONG)0x00000001)
+#define SERIAL_BAUD_110 ((ULONG)0x00000002)
+#define SERIAL_BAUD_134_5 ((ULONG)0x00000004)
+#define SERIAL_BAUD_150 ((ULONG)0x00000008)
+#define SERIAL_BAUD_300 ((ULONG)0x00000010)
+#define SERIAL_BAUD_600 ((ULONG)0x00000020)
+#define SERIAL_BAUD_1200 ((ULONG)0x00000040)
+#define SERIAL_BAUD_1800 ((ULONG)0x00000080)
+#define SERIAL_BAUD_2400 ((ULONG)0x00000100)
+#define SERIAL_BAUD_4800 ((ULONG)0x00000200)
+#define SERIAL_BAUD_7200 ((ULONG)0x00000400)
+#define SERIAL_BAUD_9600 ((ULONG)0x00000800)
+#define SERIAL_BAUD_14400 ((ULONG)0x00001000)
+#define SERIAL_BAUD_19200 ((ULONG)0x00002000)
+#define SERIAL_BAUD_38400 ((ULONG)0x00004000)
+#define SERIAL_BAUD_56K ((ULONG)0x00008000)
+#define SERIAL_BAUD_128K ((ULONG)0x00010000)
+#define SERIAL_BAUD_115200 ((ULONG)0x00020000)
+#define SERIAL_BAUD_57600 ((ULONG)0x00040000)
+#define SERIAL_BAUD_USER ((ULONG)0x10000000)
+
+//
+// Settable Data Bits
+//
+
+#define SERIAL_DATABITS_5 ((USHORT)0x0001)
+#define SERIAL_DATABITS_6 ((USHORT)0x0002)
+#define SERIAL_DATABITS_7 ((USHORT)0x0004)
+#define SERIAL_DATABITS_8 ((USHORT)0x0008)
+#define SERIAL_DATABITS_16 ((USHORT)0x0010)
+#define SERIAL_DATABITS_16X ((USHORT)0x0020)
+
+//
+// Settable Stop and Parity bits.
+//
+
+#define SERIAL_STOPBITS_10 ((USHORT)0x0001)
+#define SERIAL_STOPBITS_15 ((USHORT)0x0002)
+#define SERIAL_STOPBITS_20 ((USHORT)0x0004)
+#define SERIAL_PARITY_NONE ((USHORT)0x0100)
+#define SERIAL_PARITY_ODD ((USHORT)0x0200)
+#define SERIAL_PARITY_EVEN ((USHORT)0x0400)
+#define SERIAL_PARITY_MARK ((USHORT)0x0800)
+#define SERIAL_PARITY_SPACE ((USHORT)0x1000)
+
+typedef struct _SERIAL_COMMPROP {
+ USHORT PacketLength;
+ USHORT PacketVersion;
+ ULONG ServiceMask;
+ ULONG Reserved1;
+ ULONG MaxTxQueue;
+ ULONG MaxRxQueue;
+ ULONG MaxBaud;
+ ULONG ProvSubType;
+ ULONG ProvCapabilities;
+ ULONG SettableParams;
+ ULONG SettableBaud;
+ USHORT SettableData;
+ USHORT SettableStopParity;
+ ULONG CurrentTxQueue;
+ ULONG CurrentRxQueue;
+ ULONG ProvSpec1;
+ ULONG ProvSpec2;
+ WCHAR ProvChar[1];
+} SERIAL_COMMPROP,*PSERIAL_COMMPROP;
+
+//
+// Define masks for the rs-232 input and output.
+//
+
+#define SERIAL_DTR_STATE ((ULONG)0x00000001)
+#define SERIAL_RTS_STATE ((ULONG)0x00000002)
+#define SERIAL_CTS_STATE ((ULONG)0x00000010)
+#define SERIAL_DSR_STATE ((ULONG)0x00000020)
+#define SERIAL_RI_STATE ((ULONG)0x00000040)
+#define SERIAL_DCD_STATE ((ULONG)0x00000080)
+
+
+// begin_winioctl
+
+//
+// The following values follow the escape designator in the
+// data stream if the LSRMST_INSERT mode has been turned on.
+//
+#define SERIAL_LSRMST_ESCAPE ((UCHAR)0x00)
+
+//
+// Following this value is the contents of the line status
+// register, and then the character in the RX hardware when
+// the line status register was encountered.
+//
+#define SERIAL_LSRMST_LSR_DATA ((UCHAR)0x01)
+
+//
+// Following this value is the contents of the line status
+// register. No error character follows
+//
+#define SERIAL_LSRMST_LSR_NODATA ((UCHAR)0x02)
+
+//
+// Following this value is the contents of the modem status
+// register.
+//
+#define SERIAL_LSRMST_MST ((UCHAR)0x03)
+
+// end_winioctl
diff --git a/public/sdk/inc/ntddsjoy.h b/public/sdk/inc/ntddsjoy.h
new file mode 100644
index 000000000..e45dcf98a
--- /dev/null
+++ b/public/sdk/inc/ntddsjoy.h
@@ -0,0 +1,367 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+
+Copyright (c) 1995 Microsoft Corporation
+
+Module Name:
+
+ swndr3p.h
+
+Abstract:
+
+ Definitions of all constants and types for the Sidewinder 3p joystick.
+
+Author:
+
+ edbriggs 30-Nov-95
+
+
+Revision History:
+
+
+--*/
+
+
+#ifndef __NTDDSJOY_H__
+#define __NTDDSJOY_H__
+
+
+
+#define UnusedParameter(x) x = x
+
+
+
+//
+// Device Name
+//
+
+#define JOY_DD_DEVICE_NAME "\\Device\\IBMJOY"
+#define JOY_DD_DEVICE_NAME_U L"\\Device\\IBMJOY"
+
+
+//
+// Device Parameters
+//
+
+#define JOY_DD_NAXES "NumberOfAxes"
+#define JOY_DD_NAXES_U L"NumberOfAxes"
+
+#define JOY_DD_DEVICE_TYPE "DeviceType"
+#define JOY_DD_DEVICE_TYPE_U L"DeviceType"
+
+#define JOY_DD_DEVICE_ADDRESS "DeviceAddress"
+#define JOY_DD_DEVICE_ADDRESS_U L"DeviceAddress"
+
+
+
+
+//
+// Device Types
+//
+
+#define JOY_TYPE_UNKNOWN 0x00
+#define JOY_TYPE_SIDEWINDER 0x01
+
+//
+// Device I/O Port Address
+//
+
+#define JOY_IO_PORT_ADDRESS 0x201
+
+//
+// Device specific bitmasks
+//
+
+
+#define X_AXIS_BITMASK 0x01
+#define CLOCK_BITMASK 0x10
+#define DATA0_BITMASK 0x20
+#define DATA1_BITMASK 0x40
+#define DATA2_BITMASK 0x80
+#define ALLDATA_BITMASK 0xE0
+#define ALLAXIS_BITMASK 0x0F
+
+
+//
+// Analog joystick bitmasks
+//
+
+#define JOYSTICK2_BUTTON2 0x80
+#define JOYSTICK2_BUTTON1 0x40
+#define JOYSTICK1_BUTTON2 0x20
+#define JOYSTICK1_BUTTON1 0x10
+#define JOYSTICK2_Y_MASK 0x08
+#define JOYSTICK2_X_MASK 0x04
+#define JOYSTICK1_R_MASK 0x08
+#define JOYSTICK1_Z_MASK 0x04
+#define JOYSTICK1_Y_MASK 0x02
+#define JOYSTICK1_X_MASK 0x01
+
+
+#define JOY_START_TIMERS 0
+
+
+//
+// Device specific timer values
+//
+
+#define ANALOG_POLL_TIMEOUT 5000 // 5 mS upper bound on analog polling
+#define ANALOG_POLL_RESOLUTION 100 // 100 uS accuracy on polling time
+
+#define ANALOG_XA_VERYSLOW 1500
+#define ANALOG_XA_SLOW 1200
+#define ANALOG_XA_MEDIUM 900
+#define ANALOG_XA_FAST 300
+#define ANALOG_XA_VERYFAST 100
+
+#define DIGITAL_XA_VERYSLOW 1100
+#define DIGITAL_XA_SLOW 700
+#define DIGITAL_XA_MEDIUM 510
+#define DIGITAL_XA_FAST 100
+#define DIGITAL_XA_VERYFAST 50
+
+#define GODIGITAL_BASEDELAY_VERYSLOW 25
+#define GODIGITAL_BASEDELAY_SLOW 50
+#define GODIGITAL_BASEDELAY_MEDIUM 75
+#define GODIGITAL_BASEDELAY_FAST 120
+#define GODIGITAL_BASEDELAY_VERYFAST 130
+
+
+//
+// Device specific operating mode. Both INVALID_MODE and MAXIMUM_MODE are for
+// assertion checking and do not correspond to real operating modes
+//
+
+
+#define SIDEWINDER3P_INVALID_MODE 0
+#define SIDEWINDER3P_ANALOG_MODE 1
+#define SIDEWINDER3P_DIGITAL_MODE 2
+#define SIDEWINDER3P_ENHANCED_DIGITAL_MODE 3
+#define SIDEWINDER3P_MAXIMUM_MODE 4
+
+
+#define CLOCK_RISING_EDGE 0
+#define CLOCK_FALLING_EDGE 1
+
+
+//
+// These constants define how polling errors will be handled
+//
+
+#define MAX_ENHANCEDMODE_ATTEMPTS 10
+
+
+//
+// Joystick position information is transfered from the device driver to other
+// drivers or applications using the JOY_DD_INPUT_DATA structure. Since
+// the type of data returned varies whether the device is in analog mode or
+// digital mode, a union is formed to convey both types of data. The Mode
+// variable allows the recipient of the data to determing how to interpret
+// the data.
+//
+
+
+typedef struct {
+
+ //
+ // True if the device is unplugged. This is determined by a timeout
+ // mechanism
+ //
+ BOOL Unplugged;
+
+ //
+ // The mode is a value used to allow the recipient to determine how to
+ // interpret the data and the union. Valid values are:
+ //
+ // SIDEWINDER3P_ANALOG_MODE,
+ // SIDEWINDER3P_DIGITAL_MODE,
+ // SIDEWINDER3P_ENHANCED_DIGITAL_MODE
+ //
+
+ DWORD Mode;
+
+
+ union {
+
+ //
+ // Digital mode data packet
+ //
+
+ struct {
+
+ //
+ // Digital Positioning information values as follows
+ //
+ // name range direction
+ // ---- ----- ---------
+ //
+ // XOffset [0..1024) 0 = leftmost, 1023 = rightmost
+ // YOffset [0..1024) 0 = up, 1023 = down
+ // RzOffset [0..512) 0 = left, 511 = right
+ // TOffset [0..1024) Throttle position
+ //
+
+ WORD XOffset;
+ WORD YOffset;
+ WORD RzOffset;
+ WORD TOffset;
+
+ //
+ // hat position. The hat is an eight position switch.
+ // 0 = Not Pressed; 1 = 0 degrees, 2 = 45, 3 = 90 ... 8 = 315
+ // 0 degrees is up.
+ //
+
+ BYTE Hat;
+
+ //
+ // Button states. Buttons are bitmapped into the low order
+ // bit 0 - 7. Depressed = 0, released = 1.
+ //
+
+ BYTE Buttons;
+
+ //
+ // Checksum for packet
+ //
+
+ BYTE Checksum;
+
+ //
+ // Switch indicating whether we are emulating a CH Joystick or a
+ // Thrustmaster Joystick.
+ //
+
+ BYTE Switch_CH_TM;
+
+ //
+ // Driver Internal processing determines if the checksum and framing
+ // of the packet are correct. The following boolean values reflect
+ // the findings
+ //
+
+ BOOL fChecksumCorrect;
+ BOOL fSyncBitsCorrect;
+
+ } DigitalData;
+
+
+ //
+ // Analog mode data packet
+ //
+
+ struct {
+
+ //
+ // The number of axi configured for this device (specified in the
+ // registry).
+ //
+
+ DWORD Axi;
+
+ //
+ // current button state bitmask
+ //
+
+ DWORD Buttons;
+
+ //
+ // X, Y, Z, and T axi positioning information contained below. The
+ // values are expressed interms of microseconds. The values are
+ // generated by measuring the duration of a pulse supplied by
+ // the IBM compatable or Soundblaster game port. This is the raw
+ // data, and it is the callers responsibility to perform
+ // calibration, ranging, hysteresis, etc.
+ //
+ // Because of inaccuracies in sampling this data, there is some
+ // variation in readings of a stationary joystick.
+ //
+ //
+ // Analog Positioning information for Microsoft Sidewinder IIId P
+ // values as follows (range information measured using a
+ // Soundblaster analog game port.
+ //
+ // apprx
+ // name range direction
+ // ---- ----- ---------
+ //
+ // XTime 20..1600 uS 20 = leftmost, 1600 = rightmost
+ // YTime 20..1600 uS 20 = up, 1600 = down
+ // ZTime 20..1600 uS 20 = left, 1600 = right
+ // TTime 20..1600 uS 20 = forward 1600 = back
+ //
+
+ DWORD XTime; // Time in microseconds for X
+ DWORD YTime; // Time in microseconds for Y
+ DWORD ZTime; // Time in microseconds for Z if 3-axis
+ DWORD TTime; // Time in microseconds for Throttle if 4 axis
+
+ } AnalogData;
+
+ } u;
+
+} JOY_DD_INPUT_DATA, *PJOY_DD_INPUT_DATA;
+
+
+
+//
+// The following IOCTL codes are used for testing the device driver. They
+// export internal functions of the driver which will not be needed in the
+// final version of the driver
+//
+
+#define JOY_TYPE 40001
+
+#define IOCTL_JOY_GET_DRIVER_MODE_DWORD \
+ CTL_CODE( JOY_TYPE, 0x900, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_JOY_GET_DEVICE_MODE_DWORD \
+ CTL_CODE( JOY_TYPE, 0x901, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_JOY_SET_DIGITAL_MODE \
+ CTL_CODE( JOY_TYPE, 0x902, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_JOY_GET_STATISTICS \
+ CTL_CODE( JOY_TYPE, 0x903, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_JOY_SET_ENHANCED_MODE \
+ CTL_CODE( JOY_TYPE, 0x904, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_JOY_SET_ANALOG_MODE \
+ CTL_CODE( JOY_TYPE, 0x905, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_JOY_GET_JOYREGHWCONFIG \
+ CTL_CODE( JOY_TYPE, 0x906, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+
+
+typedef union
+{
+ BYTE Byte;
+ WORD Word;
+ DWORD Dword;
+
+} JOY_IOCTL_INFO, *PJOY_IOCTL_INFO;
+
+
+typedef struct
+{
+ DWORD Retries[MAX_ENHANCEDMODE_ATTEMPTS];
+ DWORD EnhancedPolls;
+ DWORD EnhancedPollTimeouts;
+ DWORD EnhancedPollErrors;
+ DWORD Frequency;
+ DWORD dwQPCLatency;
+ LONG nReadLoopMax;
+ DWORD nVersion;
+ DWORD nPolledTooSoon;
+ DWORD nReset;
+} JOY_STATISTICS, *PJOY_STATISTICS;
+
+
+
+#endif // __NTDDJOY_H__
+
+
+
+
diff --git a/public/sdk/inc/ntddsnd.h b/public/sdk/inc/ntddsnd.h
new file mode 100644
index 000000000..b3ad9884d
--- /dev/null
+++ b/public/sdk/inc/ntddsnd.h
@@ -0,0 +1,41 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddsnd.h
+
+Abstract:
+
+ This is the include file that defines all the common
+ constants and types for sound devices.
+
+Author:
+
+ Nigel Thompson (NigelT) 17-May-91
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDSND_
+#define _NTDDSND_
+
+//
+// Define the IOCTL base values for sound devices and each class
+// of sound device
+//
+
+#define IOCTL_SOUND_BASE FILE_DEVICE_SOUND
+#define IOCTL_WAVE_BASE 0x0000
+#define IOCTL_MIDI_BASE 0x0080
+
+//
+// Define some useful limits
+//
+
+#define SOUND_MAX_DEVICE_NAME 80 // BUGBUG this is a wild guess
+#define SOUND_MAX_DEVICES 100 // Max no of devices of a given type
+#endif // _NTDDSND_
+
diff --git a/public/sdk/inc/ntddstor.h b/public/sdk/inc/ntddstor.h
new file mode 100644
index 000000000..ee70eff44
--- /dev/null
+++ b/public/sdk/inc/ntddstor.h
@@ -0,0 +1,96 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddstor.h
+
+Abstract:
+
+ This is the include file that defines all common constants and types
+ accessing the storage class drivers
+
+Author:
+
+ Peter Wieland 19-Jun-1996
+
+Revision History:
+
+--*/
+
+// begin_winioctl
+
+#ifndef _NTDDSTOR_H_
+#define _NTDDSTOR_H_
+
+// end_winioctl
+
+//
+// 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 DD_STORAGE_DEVICE_NAME "\\Device\\UNKNOWN"
+
+
+//
+// NtDeviceIoControlFile
+
+// begin_winioctl
+
+//
+// IoControlCode values for disk devices.
+//
+
+#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
+
+// end_winioctl
+
+// begin_winioctl
+//
+// The following device control codes are common for all class drivers. They
+// should be used in place of the older IOCTL_DISK, IOCTL_CDROM and IOCTL_TAPE
+// common codes
+//
+
+#define IOCTL_STORAGE_CHECK_VERIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_RESERVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_RELEASE CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_FIND_NEW_DEVICES CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_STORAGE_GET_MEDIA_TYPES CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+//
+// Define the structures for scsi resets
+//
+
+typedef struct _STORAGE_BUS_RESET_REQUEST {
+ UCHAR PathId;
+} STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST;
+
+//
+// IOCTL_STORAGE_MEDIA_REMOVAL disables the mechanism
+// on a storage device that ejects media. This function
+// may or may not be supported on storage devices that
+// support removable media.
+//
+// TRUE means prevent media from being removed.
+// FALSE means allow media removal.
+//
+
+typedef struct _PREVENT_MEDIA_REMOVAL {
+ BOOLEAN PreventMediaRemoval;
+} PREVENT_MEDIA_REMOVAL, *PPREVENT_MEDIA_REMOVAL;
+
+#endif // _NTDDSTOR_H_
+// end_winioctl
diff --git a/public/sdk/inc/ntddstrm.h b/public/sdk/inc/ntddstrm.h
new file mode 100644
index 000000000..ca33abbc1
--- /dev/null
+++ b/public/sdk/inc/ntddstrm.h
@@ -0,0 +1,118 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddstrm.h
+
+Abstract:
+
+ This header file defines constants and types for accessing the NT
+ STREAMS environment.
+
+ Include the STREAMS header file, <sys/stropts.h>, before this !!
+
+Author:
+
+ Eric Chin (ericc) July 2, 1991
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDSTRM_
+#define _NTDDSTRM_
+
+//
+// Device Name - this string is the name of the device. It is the name
+// that should be passed to NtOpenFile when accessing the device.
+//
+#define DD_STREAMS_DEVICE_NAME "\\Device\\Streams"
+
+
+//
+// EA to be used when opening a STREAMS driver for putmsg()/getmsg().
+//
+#define NormalStreamEA "NormalStream"
+#define NORMAL_STREAM_EA_LENGTH (sizeof(NormalStreamEA) - 1)
+
+
+//
+// NtDeviceIoControlFile IoControlCode values for this device.
+//
+#define _STRM_CTRL_CODE(function, method, access) \
+ CTL_CODE(FILE_DEVICE_STREAMS, function, method, access)
+
+
+#define IOCTL_STREAMS_GETMSG _STRM_CTRL_CODE( 0, METHOD_BUFFERED, \
+ FILE_READ_ACCESS)
+
+#define IOCTL_STREAMS_IOCTL _STRM_CTRL_CODE( 1, METHOD_BUFFERED, \
+ FILE_ANY_ACCESS)
+
+#define IOCTL_STREAMS_POLL _STRM_CTRL_CODE( 2, METHOD_BUFFERED, \
+ FILE_ANY_ACCESS)
+
+#define IOCTL_STREAMS_PUTMSG _STRM_CTRL_CODE( 3, METHOD_BUFFERED, \
+ FILE_WRITE_ACCESS)
+
+#define IOCTL_STREAMS_TDI_TEST _STRM_CTRL_CODE(32, METHOD_BUFFERED, \
+ FILE_ANY_ACCESS)
+
+
+
+struct queue; // forward declaration for ANSI C
+
+
+//
+// NtDeviceIoControlFile InputBuffer/OutputBuffer Record Structures
+//
+//
+typedef struct _GETMSG_ARGS_INOUT_ { // getmsg()
+ int a_retval; // return value
+ long a_flags; // 0 or RS_HIPRI
+ struct strbuf a_ctlbuf; // (required)
+ struct strbuf a_databuf; // (required)
+ char a_stuff[1]; // a_ctlbuf.buf (optional)
+ // a_databuf.buf (optional)
+} GETMSG_ARGS_INOUT, *PGETMSG_ARGS_INOUT;
+
+
+typedef struct _ISTR_ARGS_INOUT { // ioctl(I_STR)
+ int a_iocode; // I_STR, retval on return
+ struct strioctl a_strio; // (required)
+ int a_unused[2]; // (required) BUGBUG
+ char a_stuff[1]; // (optional)
+
+} ISTR_ARGS_INOUT, *PISTR_ARGS_INOUT;
+
+
+typedef struct _PUTMSG_ARGS_IN_ { // ioctl(I_FDINSERT) and putmsg()
+ int a_iocode; // I_FDINSERT or 0
+ long a_flags; // 0 or RS_HIPRI
+ struct strbuf a_ctlbuf; // (required)
+ struct strbuf a_databuf; // (required)
+
+ union { // used only for I_FDINSERT
+ HANDLE i_fildes; // (optional)
+ struct queue * i_targetq; // for Stream Head Driver use
+ } a_insert;
+
+ int a_offset; // (optional)
+ char a_stuff[1]; // a_ctlbuf.buf (optional)
+ // a_databuf.buf (optional)
+} PUTMSG_ARGS_IN, *PPUTMSG_ARGS_IN;
+
+
+typedef struct _STRM_ARGS_OUT_ { // generic return parameters
+ int a_retval; // return value
+ int a_errno; // errno if retval == -1
+
+} STRM_ARGS_OUT, *PSTRM_ARGS_OUT;
+
+
+
+
+#endif // ifndef _NTDDSTRM_
+
diff --git a/public/sdk/inc/ntddtape.h b/public/sdk/inc/ntddtape.h
new file mode 100644
index 000000000..ad28121cb
--- /dev/null
+++ b/public/sdk/inc/ntddtape.h
@@ -0,0 +1,301 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddtape.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Tape device.
+
+Author:
+
+ Mike Glass (mglass)
+
+Revision History:
+
+--*/
+
+//
+// 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 DD_TAPE_DEVICE_NAME "\\Device\\Tape"
+
+
+//
+// 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_TAPE_BASE FILE_DEVICE_TAPE
+
+#define IOCTL_TAPE_ERASE CTL_CODE(IOCTL_TAPE_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_PREPARE CTL_CODE(IOCTL_TAPE_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_WRITE_MARKS CTL_CODE(IOCTL_TAPE_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_GET_POSITION CTL_CODE(IOCTL_TAPE_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_SET_POSITION CTL_CODE(IOCTL_TAPE_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_GET_DRIVE_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_SET_DRIVE_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_GET_MEDIA_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_SET_MEDIA_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_TAPE_GET_STATUS CTL_CODE(IOCTL_TAPE_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS )
+#define IOCTL_TAPE_CREATE_PARTITION CTL_CODE(IOCTL_TAPE_BASE, 0x000a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+//
+// The following device control codes are common for all class drivers. The
+// functions codes defined here must match all of the other class drivers.
+//
+// Warning: these codes will be replaced in the future with the IOCTL_STORAGE
+// codes included below
+//
+
+#define IOCTL_TAPE_CHECK_VERIFY CTL_CODE(IOCTL_TAPE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_MEDIA_REMOVAL CTL_CODE(IOCTL_TAPE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_EJECT_MEDIA CTL_CODE(IOCTL_TAPE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_LOAD_MEDIA CTL_CODE(IOCTL_TAPE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_RESERVE CTL_CODE(IOCTL_TAPE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_RELEASE CTL_CODE(IOCTL_TAPE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_TAPE_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+//
+// The following file contains the IOCTL_STORAGE class ioctls
+//
+
+#include <ntddstor.h>
+
+// begin_winnt begin_ntminitape
+
+//
+// IOCTL_TAPE_ERASE definitions
+//
+
+#define TAPE_ERASE_SHORT 0L
+#define TAPE_ERASE_LONG 1L
+
+typedef struct _TAPE_ERASE {
+ ULONG Type;
+ BOOLEAN Immediate;
+} TAPE_ERASE, *PTAPE_ERASE;
+
+//
+// IOCTL_TAPE_PREPARE definitions
+//
+
+#define TAPE_LOAD 0L
+#define TAPE_UNLOAD 1L
+#define TAPE_TENSION 2L
+#define TAPE_LOCK 3L
+#define TAPE_UNLOCK 4L
+#define TAPE_FORMAT 5L
+
+typedef struct _TAPE_PREPARE {
+ ULONG Operation;
+ BOOLEAN Immediate;
+} TAPE_PREPARE, *PTAPE_PREPARE;
+
+//
+// IOCTL_TAPE_WRITE_MARKS definitions
+//
+
+#define TAPE_SETMARKS 0L
+#define TAPE_FILEMARKS 1L
+#define TAPE_SHORT_FILEMARKS 2L
+#define TAPE_LONG_FILEMARKS 3L
+
+typedef struct _TAPE_WRITE_MARKS {
+ ULONG Type;
+ ULONG Count;
+ BOOLEAN Immediate;
+} TAPE_WRITE_MARKS, *PTAPE_WRITE_MARKS;
+
+//
+// IOCTL_TAPE_GET_POSITION definitions
+//
+
+#define TAPE_ABSOLUTE_POSITION 0L
+#define TAPE_LOGICAL_POSITION 1L
+#define TAPE_PSEUDO_LOGICAL_POSITION 2L
+
+typedef struct _TAPE_GET_POSITION {
+ ULONG Type;
+ ULONG Partition;
+ LARGE_INTEGER Offset;
+} TAPE_GET_POSITION, *PTAPE_GET_POSITION;
+
+//
+// IOCTL_TAPE_SET_POSITION definitions
+//
+
+#define TAPE_REWIND 0L
+#define TAPE_ABSOLUTE_BLOCK 1L
+#define TAPE_LOGICAL_BLOCK 2L
+#define TAPE_PSEUDO_LOGICAL_BLOCK 3L
+#define TAPE_SPACE_END_OF_DATA 4L
+#define TAPE_SPACE_RELATIVE_BLOCKS 5L
+#define TAPE_SPACE_FILEMARKS 6L
+#define TAPE_SPACE_SEQUENTIAL_FMKS 7L
+#define TAPE_SPACE_SETMARKS 8L
+#define TAPE_SPACE_SEQUENTIAL_SMKS 9L
+
+typedef struct _TAPE_SET_POSITION {
+ ULONG Method;
+ ULONG Partition;
+ LARGE_INTEGER Offset;
+ BOOLEAN Immediate;
+} TAPE_SET_POSITION, *PTAPE_SET_POSITION;
+
+//
+// IOCTL_TAPE_GET_DRIVE_PARAMS definitions
+//
+
+//
+// Definitions for FeaturesLow parameter
+//
+
+#define TAPE_DRIVE_FIXED 0x00000001
+#define TAPE_DRIVE_SELECT 0x00000002
+#define TAPE_DRIVE_INITIATOR 0x00000004
+
+#define TAPE_DRIVE_ERASE_SHORT 0x00000010
+#define TAPE_DRIVE_ERASE_LONG 0x00000020
+#define TAPE_DRIVE_ERASE_BOP_ONLY 0x00000040
+#define TAPE_DRIVE_ERASE_IMMEDIATE 0x00000080
+
+#define TAPE_DRIVE_TAPE_CAPACITY 0x00000100
+#define TAPE_DRIVE_TAPE_REMAINING 0x00000200
+#define TAPE_DRIVE_FIXED_BLOCK 0x00000400
+#define TAPE_DRIVE_VARIABLE_BLOCK 0x00000800
+
+#define TAPE_DRIVE_WRITE_PROTECT 0x00001000
+#define TAPE_DRIVE_EOT_WZ_SIZE 0x00002000
+
+#define TAPE_DRIVE_ECC 0x00010000
+#define TAPE_DRIVE_COMPRESSION 0x00020000
+#define TAPE_DRIVE_PADDING 0x00040000
+#define TAPE_DRIVE_REPORT_SMKS 0x00080000
+
+#define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x00100000
+#define TAPE_DRIVE_GET_LOGICAL_BLK 0x00200000
+#define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x00400000
+
+#define TAPE_DRIVE_EJECT_MEDIA 0x01000000
+
+#define TAPE_DRIVE_RESERVED_BIT 0x80000000 //don't use this bit!
+// //can't be a low features bit!
+// //reserved; high features only
+
+//
+// Definitions for FeaturesHigh parameter
+//
+
+#define TAPE_DRIVE_LOAD_UNLOAD 0x80000001
+#define TAPE_DRIVE_TENSION 0x80000002
+#define TAPE_DRIVE_LOCK_UNLOCK 0x80000004
+#define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008
+
+#define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010
+#define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020
+#define TAPE_DRIVE_TENSION_IMMED 0x80000040
+#define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080
+
+#define TAPE_DRIVE_SET_ECC 0x80000100
+#define TAPE_DRIVE_SET_COMPRESSION 0x80000200
+#define TAPE_DRIVE_SET_PADDING 0x80000400
+#define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800
+
+#define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000
+#define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000
+#define TAPE_DRIVE_LOGICAL_BLK 0x80004000
+#define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000
+
+#define TAPE_DRIVE_END_OF_DATA 0x80010000
+#define TAPE_DRIVE_RELATIVE_BLKS 0x80020000
+#define TAPE_DRIVE_FILEMARKS 0x80040000
+#define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000
+
+#define TAPE_DRIVE_SETMARKS 0x80100000
+#define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000
+#define TAPE_DRIVE_REVERSE_POSITION 0x80400000
+#define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000
+
+#define TAPE_DRIVE_WRITE_SETMARKS 0x81000000
+#define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000
+#define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000
+#define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000
+
+#define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000
+#define TAPE_DRIVE_FORMAT 0xA0000000
+#define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000
+#define TAPE_DRIVE_HIGH_FEATURES 0x80000000 //mask for high features flag
+
+typedef struct _TAPE_GET_DRIVE_PARAMETERS {
+ BOOLEAN ECC;
+ BOOLEAN Compression;
+ BOOLEAN DataPadding;
+ BOOLEAN ReportSetmarks;
+ ULONG DefaultBlockSize;
+ ULONG MaximumBlockSize;
+ ULONG MinimumBlockSize;
+ ULONG MaximumPartitionCount;
+ ULONG FeaturesLow;
+ ULONG FeaturesHigh;
+ ULONG EOTWarningZoneSize;
+} TAPE_GET_DRIVE_PARAMETERS, *PTAPE_GET_DRIVE_PARAMETERS;
+
+//
+// IOCTL_TAPE_SET_DRIVE_PARAMETERS definitions
+//
+
+typedef struct _TAPE_SET_DRIVE_PARAMETERS {
+ BOOLEAN ECC;
+ BOOLEAN Compression;
+ BOOLEAN DataPadding;
+ BOOLEAN ReportSetmarks;
+ ULONG EOTWarningZoneSize;
+} TAPE_SET_DRIVE_PARAMETERS, *PTAPE_SET_DRIVE_PARAMETERS;
+
+//
+// IOCTL_TAPE_GET_MEDIA_PARAMETERS definitions
+//
+
+typedef struct _TAPE_GET_MEDIA_PARAMETERS {
+ LARGE_INTEGER Capacity;
+ LARGE_INTEGER Remaining;
+ ULONG BlockSize;
+ ULONG PartitionCount;
+ BOOLEAN WriteProtected;
+} TAPE_GET_MEDIA_PARAMETERS, *PTAPE_GET_MEDIA_PARAMETERS;
+
+//
+// IOCTL_TAPE_SET_MEDIA_PARAMETERS definitions
+//
+
+typedef struct _TAPE_SET_MEDIA_PARAMETERS {
+ ULONG BlockSize;
+} TAPE_SET_MEDIA_PARAMETERS, *PTAPE_SET_MEDIA_PARAMETERS;
+
+//
+// IOCTL_TAPE_CREATE_PARTITION definitions
+//
+
+#define TAPE_FIXED_PARTITIONS 0L
+#define TAPE_SELECT_PARTITIONS 1L
+#define TAPE_INITIATOR_PARTITIONS 2L
+
+typedef struct _TAPE_CREATE_PARTITION {
+ ULONG Method;
+ ULONG Count;
+ ULONG Size;
+} TAPE_CREATE_PARTITION, *PTAPE_CREATE_PARTITION;
+
+// end_winnt end_ntminitape
diff --git a/public/sdk/inc/ntddtdi.h b/public/sdk/inc/ntddtdi.h
new file mode 100644
index 000000000..14a9f48ae
--- /dev/null
+++ b/public/sdk/inc/ntddtdi.h
@@ -0,0 +1,66 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddtdi.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Transport driver interface device.
+
+Author:
+
+ Steve Wood (stevewo) 27-May-1990
+
+Revision History:
+
+ Dave Beaver (dbeaver) 5 June 1991
+ add support for TDI version 2.0 -- associate_address,
+ disassociate_address
+
+--*/
+
+#ifndef _NTDDTDI_
+#define _NTDDTDI_
+
+//
+// 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 DD_TDI_DEVICE_NAME "\\Device\\UNKNOWN"
+
+
+//
+// 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 _TDI_CONTROL_CODE(request,method) \
+ CTL_CODE(FILE_DEVICE_TRANSPORT, request, method, FILE_ANY_ACCESS)
+
+#define IOCTL_TDI_ACCEPT _TDI_CONTROL_CODE( 0, METHOD_BUFFERED )
+#define IOCTL_TDI_CONNECT _TDI_CONTROL_CODE( 1, METHOD_BUFFERED )
+#define IOCTL_TDI_DISCONNECT _TDI_CONTROL_CODE( 2, METHOD_BUFFERED )
+#define IOCTL_TDI_LISTEN _TDI_CONTROL_CODE( 3, METHOD_BUFFERED )
+#define IOCTL_TDI_QUERY_INFORMATION _TDI_CONTROL_CODE( 4, METHOD_OUT_DIRECT )
+#define IOCTL_TDI_RECEIVE _TDI_CONTROL_CODE( 5, METHOD_OUT_DIRECT )
+#define IOCTL_TDI_RECEIVE_DATAGRAM _TDI_CONTROL_CODE( 6, METHOD_OUT_DIRECT )
+#define IOCTL_TDI_SEND _TDI_CONTROL_CODE( 7, METHOD_IN_DIRECT )
+#define IOCTL_TDI_SEND_DATAGRAM _TDI_CONTROL_CODE( 8, METHOD_IN_DIRECT )
+#define IOCTL_TDI_SET_EVENT_HANDLER _TDI_CONTROL_CODE( 9, METHOD_BUFFERED )
+#define IOCTL_TDI_SET_INFORMATION _TDI_CONTROL_CODE( 10, METHOD_IN_DIRECT )
+#define IOCTL_TDI_ASSOCIATE_ADDRESS _TDI_CONTROL_CODE( 11, METHOD_BUFFERED )
+#define IOCTL_TDI_DISASSOCIATE_ADDRESS _TDI_CONTROL_CODE( 12, METHOD_BUFFERED )
+#define IOCTL_TDI_ACTION _TDI_CONTROL_CODE( 13, METHOD_OUT_DIRECT )
+
+#endif // ndef _NTDDTDI_
+
diff --git a/public/sdk/inc/ntddtime.h b/public/sdk/inc/ntddtime.h
new file mode 100644
index 000000000..12a2c7e73
--- /dev/null
+++ b/public/sdk/inc/ntddtime.h
@@ -0,0 +1,44 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1992 Microsoft Corporation
+
+Module Name:
+
+ ntddtime.h
+
+Abstract:
+
+ This include file defines all constants and types for
+ accessing an NT wave device.
+
+Author:
+
+ Robin Speed (RobinSp) 30-Jan-92
+
+Revision History:
+
+--*/
+#define FILE_DEVICE_TIME 0x00000026
+
+
+//
+// Timer IOCTLs
+//
+
+#define IOCTL_TIMER_SET_TIMER_EVENT CTL_CODE(FILE_DEVICE_TIME, FILE_DEVICE_TIME + 0x0001, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define IOCTL_TIMER_GET_TIME CTL_CODE(FILE_DEVICE_TIME, FILE_DEVICE_TIME + 0x0002, METHOD_NEITHER, FILE_WRITE_DATA)
+#define IOCTL_TIMER_GET_DEV_CAPS CTL_CODE(FILE_DEVICE_TIME, FILE_DEVICE_TIME + 0x0003, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define IOCTL_TIMER_BEGIN_MIN_PERIOD CTL_CODE(FILE_DEVICE_TIME, FILE_DEVICE_TIME + 0x0004, METHOD_NEITHER, FILE_WRITE_DATA)
+#define IOCTL_TIMER_END_MIN_PERIOD CTL_CODE(FILE_DEVICE_TIME, FILE_DEVICE_TIME + 0x0005, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define IOCTL_TIMER_RESET CTL_CODE(FILE_DEVICE_TIME, FILE_DEVICE_TIME + 0x0006, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define IOCTL_TIMER_RESET_EVENT CTL_CODE(FILE_DEVICE_TIME, FILE_DEVICE_TIME + 0x0007, METHOD_NEITHER, FILE_WRITE_DATA)
+
+#define DD_TIMER_DEVICE_NAME_U L"\\Device\\Timer"
+
+#define IO_TIMER_INCREMENT 8
+
+typedef struct {
+ ULONG EventTime; // Time in ms for event
+ ULONG EventId; // Id (cannot be 0)
+ LARGE_INTEGER EventTicks; // Driver use (not seen by caller)
+} TIMER_DD_SET_EVENT, *PTIMER_DD_SET_EVENT;
diff --git a/public/sdk/inc/ntddtx.h b/public/sdk/inc/ntddtx.h
new file mode 100644
index 000000000..3625565bc
--- /dev/null
+++ b/public/sdk/inc/ntddtx.h
@@ -0,0 +1,25 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddtx.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the transaction device.
+
+Author:
+
+ Chandan Chauhan (ChandanC) 15-Feb-1991
+
+Revision History:
+
+--*/
+
+
+#define IOCTL_TRNXT_XCEIVE 0x12
+#define IOCTL_TRNXT_READ 0x22
+
diff --git a/public/sdk/inc/ntddvdeo.h b/public/sdk/inc/ntddvdeo.h
new file mode 100644
index 000000000..223cdc095
--- /dev/null
+++ b/public/sdk/inc/ntddvdeo.h
@@ -0,0 +1,1323 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ddvdeo.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Video device.
+
+Author:
+
+ Andre Vachon (andreva) 21-Jan-1992
+
+Revision History:
+
+--*/
+
+//
+// VideoIoControlFile InputBuffer/OutputBuffer record structures for
+// this device.
+//
+
+//
+// Name used to create the miniport logical device names
+//
+
+#define VIDEO_DEVICE_NAME "DISPLAY%d"
+#define WVIDEO_DEVICE_NAME L"DISPLAY%d"
+
+
+//
+// The first set of IOCTLs are handle by the port driver and never seen
+// by the miniport.
+//
+
+#define IOCTL_VIDEO_ENABLE_VDM \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x00, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_DISABLE_VDM \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x01, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_REGISTER_VDM \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x02, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+//
+// All these IOCTL's must be both handled by the port and miniport since
+// they require processing by both parties.
+//
+#define IOCTL_VIDEO_SAVE_HARDWARE_STATE \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+//
+// All these IOCTL's are public and must/can be handled by the miniport
+// driver
+//
+
+#define IOCTL_VIDEO_QUERY_AVAIL_MODES \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_QUERY_CURRENT_MODE \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_SET_CURRENT_MODE \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_RESET_DEVICE \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_LOAD_AND_SET_FONT \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SET_PALETTE_REGISTERS \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_SET_COLOR_REGISTERS \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_ENABLE_CURSOR \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_DISABLE_CURSOR \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_SET_CURSOR_ATTR \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_QUERY_CURSOR_ATTR \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_SET_CURSOR_POSITION \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_QUERY_CURSOR_POSITION \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_ENABLE_POINTER \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_DISABLE_POINTER \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_SET_POINTER_ATTR \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_QUERY_POINTER_ATTR \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_SET_POINTER_POSITION \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_QUERY_POINTER_POSITION \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_GET_BANK_SELECT_CODE \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_MAP_VIDEO_MEMORY \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// New IOCTLs defined for product 1.0A
+//
+
+#define IOCTL_VIDEO_SET_POWER_MANAGEMENT \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_GET_POWER_MANAGEMENT \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \
+ CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+
+//
+// Many of the video ICOTLs are modal. When ever the palette is set, or the
+// cursor is set or queried, it is done for the current mode.
+//
+// Modal specifies that the operation is only valid within a mode. Once a
+// set mode operation is performed, the state associated to the modal IOCTL
+// has been destroyed or reinitialized.
+// Non-modal IOCTLs have their state preserved across set-mode operations.
+//
+// Optional IOCTLs are IOCTLs the miniport can optionally support. If the
+// miniport does not support the IOCTL, it should return the appropriate
+// error status.
+// Required IOCTLs must be implemented in a miniport in order for the system
+// to system properly.
+//
+// IOCTL_VIDEO_ENABLE_VDM Non-Modal Private(1)
+// IOCTL_VIDEO_DISABLE_VDM Non-Modal Private(1)
+// IOCTL_VIDEO_REGISTER_VDM Non-Modal Private(1)
+//
+// IOCTL_VIDEO_SAVE_HARDWARE_STATE Non-Modal Required(2)
+// IOCTL_VIDEO_RESTORE_HARDWARE_STATE Non-Modal Required(2)
+//
+// IOCTL_VIDEO_QUERY_AVAIL_MODES Non-Modal Required
+// IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES Non-Modal Required
+// IOCTL_VIDEO_QUERY_CURRENT_MODE Modal Required
+// IOCTL_VIDEO_SET_CURRENT_MODE Non-Modal Required
+// IOCTL_VIDEO_RESET_DEVICE Non-Modal Required
+//
+// IOCTL_VIDEO_LOAD_AND_SET_FONT Modal Required(2)
+//
+// IOCTL_VIDEO_SET_PALETTE_REGISTERS Modal Required(2)
+// IOCTL_VIDEO_SET_COLOR_REGISTERS Modal Required(3)
+//
+// IOCTL_VIDEO_ENABLE_CURSOR Modal Required(2)
+// IOCTL_VIDEO_DISABLE_CURSOR Modal Required(2)
+// IOCTL_VIDEO_SET_CURSOR_ATTR Modal Required(2)
+// IOCTL_VIDEO_QUERY_CURSOR_ATTR Modal Required(2)
+// IOCTL_VIDEO_SET_CURSOR_POSITION Modal Required(2)
+// IOCTL_VIDEO_QUERY_CURSOR_POSITION Modal Required(2)
+//
+// IOCTL_VIDEO_ENABLE_POINTER Modal Optional
+// IOCTL_VIDEO_DISABLE_POINTER Modal Optional
+// IOCTL_VIDEO_SET_POINTER_ATTR Modal Optional
+// IOCTL_VIDEO_QUERY_POINTER_ATTR Modal Optional
+// IOCTL_VIDEO_SET_POINTER_POSITION Modal Optional
+// IOCTL_VIDEO_QUERY_POINTER_POSITION Modal Optional
+// IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES Non-Modal Optional
+//
+// IOCTL_VIDEO_GET_BANK_SELECT_CODE Modal Required(2)
+//
+// IOCTL_VIDEO_MAP_VIDEO_MEMORY Special(4) Required
+// IOCTL_VIDEO_UNMAP_VIDEO_MEMORY Non-Modal Required
+// IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES Non-Modal Optional
+// IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES Non-Modal Optional
+//
+// IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES Non-Modal Optional
+//
+// IOCTL_VIDEO_SET_POWER_MANAGEMENT Non-Modal Optional
+// IOCTL_VIDEO_GET_POWER_MANAGEMENT Non-Modal Optional
+
+//
+// (1) Private means the IOCTL is completely implemeted within the port driver
+// and the miniport does not need to support it.
+//
+// (2) These Required functions are for "Vga Compatible" miniports. They are
+// Optional for other, non vga-compatible (i.e frame buffers) drivers.
+// VGA compatible means here that the miniport implements all the VGA
+// functionality and that the VgaCompatible flag for the miniport in the
+// registry parameters is turned on.
+//
+// (3) This IOCTL is required if the device has a color lookup table (also
+// commonly called palette) the PALETTE IOCTL is used for VGA while the
+// COLOR IOCTL is the more general IOCTL that is called by the display
+// driver or application to set the colors in the devices internal
+// lookup table
+//
+// (4) This IOCTL is both modal and non-modal. It should map all of video
+// memory in the caller's address space. A set mode MUST NOT cause the
+// video memory to change location - in this sense it is non-modal.
+// However, this IOCTL returns the location size of the frame buffer within
+// video memory, and the frame buffer size and location may vary from mode
+// to mode - so that information is modal.
+//
+
+
+//
+// Any IOCTL that returns information should return in the status block the
+// size of the data returned.
+// If the output buffer was too small, an error should be returned.
+//
+//
+//
+//
+
+
+
+//
+// IOCTL_VIDEO_ENABLE_VDM
+// IOCTL_VIDEO_DISABLE_VDM
+// IOCTL_VIDEO_REGISTER_VDM
+//
+// These IOCTLs are used to enable or disable a VDM's access to the video
+// hardware. This call will cause the real video frame buffer to be mapped
+// into the VDM's address space and get the video validator connected to the
+// V86 emulator for direct video register access.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_VDM {
+ HANDLE ProcessHandle;
+} VIDEO_VDM, *PVIDEO_VDM;
+
+//
+//ProcessHandle - Handle to the process for which this request must be
+// performed. This is required because the console calls the miniport on
+// the behalf of the VDM process; we are not performing this request in
+// the context of the current caller.
+//
+
+
+typedef struct _VIDEO_REGISTER_VDM {
+ ULONG MinimumStateSize;
+} VIDEO_REGISTER_VDM, *PVIDEO_REGISTER_VDM;
+
+//
+//MinimumStateSize - Output value determining the minimum size required to
+// store the video hardware state when performing SAVE_HARDWARE_SATE or
+// RESTORE_HARDWARE_STATE Ioctls.
+//
+
+
+//
+// Second set of structures
+//
+
+//
+// These IOCTLs are used by the VDM and the console to communicate state
+// changes between the VDM and the kernel video driver.
+//
+// IOCTL_VIDEO_SAVE_HARDWARE_STATE -
+// IOCTL_VIDEO_RESTORE_HARDWARE_STATE -
+//
+//
+// This structure is at the start of the block used when saving or restoring
+// the state of the video hardware using ConsoleHardwareState().
+// the ULONG are offset to the location of the rest of the data. That data
+// is stored within the same memory block pointed to by the
+// VIDEO_HARDWARE_STATE structure, right after this header.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_HARDWARE_STATE_HEADER {
+ ULONG Length;
+ UCHAR PortValue[0x30];
+ ULONG AttribIndexDataState;
+ ULONG BasicSequencerOffset;
+ ULONG BasicCrtContOffset;
+ ULONG BasicGraphContOffset;
+ ULONG BasicAttribContOffset;
+ ULONG BasicDacOffset;
+ ULONG BasicLatchesOffset;
+ ULONG ExtendedSequencerOffset;
+ ULONG ExtendedCrtContOffset;
+ ULONG ExtendedGraphContOffset;
+ ULONG ExtendedAttribContOffset;
+ ULONG ExtendedDacOffset;
+ ULONG ExtendedValidatorStateOffset;
+ ULONG ExtendedMiscDataOffset;
+ ULONG PlaneLength;
+ ULONG Plane1Offset;
+ ULONG Plane2Offset;
+ ULONG Plane3Offset;
+ ULONG Plane4Offset;
+ ULONG VGAStateFlags;
+ ULONG DIBOffset;
+ ULONG DIBBitsPerPixel;
+ ULONG DIBXResolution;
+ ULONG DIBYResolution;
+ ULONG DIBXlatOffset;
+ ULONG DIBXlatLength;
+} VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER;
+
+//
+// defines for VGAStateFlags
+//
+
+#define VIDEO_STATE_NON_STANDARD_VGA 0x00000001
+#define VIDEO_STATE_UNEMULATED_VGA_STATE 0x00000002
+#define VIDEO_STATE_PACKED_CHAIN4_MODE 0x00000004
+
+
+typedef struct _VIDEO_HARDWARE_STATE {
+ PVIDEO_HARDWARE_STATE_HEADER StateHeader;
+ ULONG StateLength;
+} VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE;
+
+//
+//Length - Length of the basic structure. Used for versioning purposes. The
+// length field should be initialized to be equal to
+// sizeof(VIDEO_HARDWARE_STATE_HEADER).
+//
+//PortValue - Array of entries containing the data values for port 3B0 through
+// 3DF.
+//
+//AttribIndexDataState - State of the attribute index register.
+//
+//BasicSequencerOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the register values for the basic
+// sequencer register set of the VGA.
+//
+//BasicCrtContOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the register values for the basic
+// CRT register set of the VGA.
+//
+//BasicGraphContOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the register values for the basic
+// graphics controller register set of the VGA.
+//
+//BasicAttribContOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the register values for the basic
+// attribute controller register set of the VGA.
+//
+//BasicDacOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the register values for the basic
+// DAC registers of the VGA.
+//
+//BasicLatchesOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the register values for the basic
+// latches of the VGA.
+//
+//ExtendedSequencerOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the registers values for the extended
+// sequencer register set of the VGA.
+//
+//ExtendedCrtContOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the registers values for the extended
+// CRT register set of the VGA.
+//
+//ExtendedGraphContOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the registers values for the extended
+// graphics controller register set of the VGA.
+//
+//ExtendedAttribContOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the registers values for the extended
+// attribute controller register set of the VGA.
+//
+//ExtendedDacOffset - Offset, in bytes, from the beginning of the structure,
+// to an array of fields containing the registers values for the extended
+// DAC registers of the VGA.
+//
+//ExtendedValidatorStateOffset - Offset, in bytes, from the beginning of the
+// structure, to an area reserved for the miniport to put the unemulated
+// save state that the miniport uses to perform instruction validation for
+// DOS apps.
+//
+//ExtendedMiscDataOffset - Offset, in bytes, from the beginning of the structure,
+// to an area reserved for the use of the miniport.
+//
+//PlaneLength - Length of each of the following plane (if present)
+//
+//Plane1Offset - Offset, in bytes, from the beginning of the structure, to an
+// array of fields containing the data of the first plane of video memory.
+//
+//Plane2Offset - Offset, in bytes, from the beginning of the structure, to an
+// array of fields containing the data of the second plane of video memory.
+//
+//Plane3Offset - Offset, in bytes, from the beginning of the structure, to an
+// array of fields containing the data of the third plane of video memory.
+//
+//Plane4Offset - Offset, in bytes, from the beginning of the structure, to an
+// array of fields containing the data of the fourth plane of video memory.
+//
+//VGAStateFlags - Flags used for the interpretation of the VGA state.
+// VIDEO_STATE_NON_STANDARD_VGA is set when the set of registers the VGA
+// returns is not the basic set (all super vga's are not standard).
+// The VDM should not emulate the saved state unless a specific VDD
+// has been written for the device.
+// VIDEO_STATE_UNEMULATED_VGA_STATE specified the miniport has stored
+// informaiton in the ExtendedValidatorState field and the miniport
+// should treat this as a frozen state, whatever the registers say.
+// VIDEO_STATE_PACKED_CHAIN4_MODE indicates that in mode 13 (320x200x256).
+// the data is stored in a packed pixel format in the plane, as
+// opposed to the standard VGA format where the data is interleaved
+// at every four bytes, and on every 16K boundary, offset by one
+// extra byte.
+//
+//DIBOffset - Offset to the location of the DIB in the allocated data
+// structure. If NULL, no translation is available.
+//
+//DIBBitsPerPixel - Format of the DIB.
+//
+//DIBXResolution - Width of the DIB in pixels.
+//
+//DIBYResolution - Height of the DIB in pixels.
+//
+//DIBXlatOffset - Offset to the location of the translation vector
+// from DIB pixel values to 32-bit RGB (1 byte red, 1 byte green, 1 byte
+// blue, 1 byte empty). Maximum length 256. If NULL, the standard
+// VGA palette stored in this structure should be used.
+//
+//DIBXlatLength - Length of the RGB translation vector at DIBXlatOffset.
+//
+// For each of the offset fields, if an offset value is NULL, then there is
+// no data for that offset.
+// The length of a data area is:
+// 1) the specific length given to it : plane length (planes) or XResolution *
+// Yresolution * BitsPerPel (DIB)
+// 2) otherwise, the length = next_non-null_offset_value -
+// current_offset_value
+//
+
+//
+//StateHeader - Pointer to the VIDEO_HARDWARE_STATE_HEADER structure.
+//
+//StateLength - Size of the VIDEO_HARDWARE_STATE_HEADER structure.
+//
+
+//
+// IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES - Returns number of different modes
+// available on the controller.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_NUM_MODES {
+ ULONG NumModes;
+ ULONG ModeInformationLength;
+} VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
+
+//
+//NumModes - Returns the number of modes supported by the kernel driver.
+//
+//ModeInformationLength - Length of the VIDEO_MODE_INFORMATION structure
+// for the IOCTL_VIDEO QUERY_AVAILABLE_MODES IOCTL.
+
+
+//
+// IOCTL_VIDEO_SET_CURRENT_MODE - Is used to set the mode of the controller.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_MODE {
+ ULONG RequestedMode;
+} VIDEO_MODE, *PVIDEO_MODE;
+
+#define VIDEO_MODE_NO_ZERO_MEMORY 0x80000000 // High order bit of the mode
+ // determines if the set mode
+ // should (0) or should not (1)
+ // cause the video memory to be
+ // zeroed out simultaneously to
+ // the set mode operation.
+
+#define VIDEO_MODE_MAP_MEM_LINEAR 0x40000000 // Miniports which support this
+ // flag will set a linear mode
+ // if possible when this flag
+ // is set. Note: Some miniports
+ // may return a linear mode even
+ // if this flag is not set.
+
+
+//
+//RequestedMode - Indicates in which mode the adapter should be initialized.
+//
+
+
+//
+// IOCTL_VIDEO_RESET_DEVICE - Is used to reset the mode of the adapter when GDI
+// gives up control of the device to allow a VDM to
+// access the hardware. x86 only.
+// The default mode should be whatever is the
+// default mode when the machine is booted
+//
+// No information is needed fo this function.
+//
+
+
+
+//
+// IOCTL_VIDEO_QUERY_AVAIL_MODES - Returns information about each available
+// mode on the controller.
+//
+// IOCTL_VIDEO_QUERY_CURRENT_MODE - Returns the information for the current
+// controller mode.
+//
+// Information used by this function is passed using the following structure:
+//
+// NOTE This structure is matched exactly with the DISP_MODE structure
+// in winddi.h - every change to this structure MUST be made to the
+// structure in winddi.h.
+//
+
+typedef struct _VIDEO_MODE_INFORMATION {
+ ULONG Length;
+ ULONG ModeIndex;
+ ULONG VisScreenWidth;
+ ULONG VisScreenHeight;
+ ULONG ScreenStride;
+ ULONG NumberOfPlanes;
+ ULONG BitsPerPlane;
+ ULONG Frequency;
+ ULONG XMillimeter;
+ ULONG YMillimeter;
+ ULONG NumberRedBits;
+ ULONG NumberGreenBits;
+ ULONG NumberBlueBits;
+ ULONG RedMask;
+ ULONG GreenMask;
+ ULONG BlueMask;
+ ULONG AttributeFlags;
+ ULONG VideoMemoryBitmapWidth;
+ ULONG VideoMemoryBitmapHeight;
+ ULONG DriverSpecificAttributeFlags;
+} VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
+
+//
+// Bit definitions for Attribute Flags
+//
+
+#define VIDEO_MODE_COLOR 0x0001 // 0 = Mono-compatible, 1 = Color
+#define VIDEO_MODE_GRAPHICS 0x0002 // 0 = Text mode, 1 = Graphics
+#define VIDEO_MODE_PALETTE_DRIVEN 0x0004 // 0 = Colors are direct
+ // 1 = Colors are index to a palette
+#define VIDEO_MODE_MANAGED_PALETTE 0x0008 // 0 = Palette is fixed (must be
+ // queried from miniport
+ // 1 = Palette is settable.
+#define VIDEO_MODE_INTERLACED 0x0010 // 1 = Mode is interlaced
+ // 0 = non-interlaced
+#define VIDEO_MODE_NO_OFF_SCREEN 0x0020 // 1 = Offscreen memory CAN NOT be
+ // used to store information.
+ // 0 = Offscreen memory is available
+#define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040 // 1 = 64 bit memory writes to frame
+ // buffer are not handled properly.
+ // 0 = 64 bit memory writes to frame
+ // buffer are handled properly.
+
+//
+//Length - Length of the structure in bytes. Also used to do verisioning.
+//
+//ModeIndex - Number used to set this mode when calling the miniport driver.
+//
+//VisScreenWidth - Number of visible horizontal pixels on a scan line
+//
+//VisScreenHeight - Number of visible lines (or scan lines)
+//
+//ScreenStride - Delta, in *BYTES*, between the start of two scan lines.
+//
+// NOTE: the width and height are in pixels, but the stride is in bytes !!!
+//
+//NumberOfPlanes - Number of separate planes combined by the device.
+//
+//BitsPerPlane - Number of bits per pixel on a plane.
+//
+//Frequency - Screen Frequency, in Hertz.
+//
+//XMillimeter - Size of the horizontal active region on the output device,
+// in millimeters.
+//
+//YMillimeter - Size of the vertical active region on the output device,
+// in millimeters.
+//
+//NumberRedBits - Number of bits in the red DAC.
+//
+//NumberGreenBits - Number of bits in the green DAC.
+//
+//NumberBlueBits - Number of bits in the blue DAC.
+//
+//RedMask - Red color Mask for device with direct color modes. Bits turned
+// on indicate the bit is of color Red.
+//
+//GreenMask - Green color Mask for device with direct color modes. Bits
+// turned on indicate the bit is of color Green.
+//
+//BlueMask - Blue color Mask for device with direct color modes. Bits
+// turned on indicate the bit is of color Blue.
+//
+//AttributeFlags. Flags indicating certain behavior for the device.
+//
+//VideoMemoryBitmapWidth - Width of the video memory bitmap.
+// VisScreenWidth <= VideoMemoryBitmapWidth <= ScreenStride
+//
+//VideoMemoryBitmapHeight - Height of the video memory bitmap.
+// VisScreenHeight <= VideoMemoryBitmapHeight = VideoRamLength / ScreenStride
+//
+//DriverSpecificAttributeFlags - Flags indicating certain behavior for the
+// device that are private to the miniport\display driver.
+//
+
+
+//
+// IOCTL_VIDEO_LOAD_AND_SET_FONT - Is used to load a user-defined font.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_LOAD_FONT_INFORMATION {
+ USHORT WidthInPixels;
+ USHORT HeightInPixels;
+ ULONG FontSize;
+ UCHAR Font[1];
+} VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION;
+
+//
+//WidthInPixels - Width of the characters in the font, in pixels.
+//
+//HeigthInPixels - Heigth of the characters in the font, in pixels.
+//
+//FontSize - Size of the font buffer being passed in, in bytes.
+//
+//Font - Start of the font buffer.
+//
+
+
+//
+// IOCTL_VIDEO_SET_PALETTE_REGISTERS - Takes buffer containing
+// VIDEO_PALETTE_DATA where Colors[]
+// specifies the array containing the
+// color values for the palette registers.
+//
+// Information used by this function is passed using the following structure:
+//
+// NOTE: This should only be used by the VGA type drivers
+//
+
+typedef struct _VIDEO_PALETTE_DATA {
+ USHORT NumEntries;
+ USHORT FirstEntry;
+ USHORT Colors[1];
+} VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA;
+
+//
+//NumEntries - Number of entries in the array of color values.
+//
+//FirstEntry - Location in the device palette to which the first entry in the
+// list of colors should be copied to. The other entries in the color list
+// should be copied sequentially, from this starting point into the device's
+// palette.
+//
+//Colors - Array of color entries to copy into the device's color palette.
+//
+
+//
+// IOCTL_VIDEO_SET_COLOR_REGISTERS - Takes buffer containing VIDEO_CLUT.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_CLUTDATA {
+ UCHAR Red;
+ UCHAR Green;
+ UCHAR Blue;
+ UCHAR Unused;
+} VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
+
+//
+//Red - Bits to be put in the Red portion of the color registers.
+//
+//Green - Bits to be put in the Green portion of the color registers.
+//
+//Blue - Bits to be put in the Blue portion of the color registers.
+//
+
+typedef struct {
+ USHORT NumEntries;
+ USHORT FirstEntry;
+ union {
+ VIDEO_CLUTDATA RgbArray;
+ ULONG RgbLong;
+ } LookupTable[1];
+} VIDEO_CLUT, *PVIDEO_CLUT;
+
+//
+//NumEntries - Number of entries in the LookupTable of color values.
+//
+//FirstEntry - Location in the device palette to which the first entry in the
+// LookupTable of colors should be copied to. The other entries in the
+// LookupTable should be copied sequentially, from this starting point into
+// the device's palette.
+//
+//LookupTable - Array of color entries to copy into the device's color
+// registers/palette. The color entries can be accessed as a genric 32 bit
+// value or as Red/Green/Blue/Unused fields.
+//
+
+//
+// NOTE: Cursor vs. Pointer:
+// A cursor is a rectangular set of pixels which are used to indicate the
+// location of input coming from the keyboard.
+//
+// A pointer is the set of pixels that are used to paint the shape
+// associated with the mouse.
+//
+
+//
+// IOCTL_VIDEO_QUERY_CURSOR_POSITION - Returns the location of the cursor on
+// the screen.
+//
+// IOCTL_VIDEO_SET_CURSOR_POSITION - Is used to set the location of the
+// cursor on the screen.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_CURSOR_POSITION {
+ SHORT Column;
+ SHORT Row;
+} VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION;
+
+//
+//Column - Column on which the cursor is located from the top left, in pixels.
+//
+//Row - Row on which the cusor is located from the top left, in pixels.
+//
+
+
+//
+// IOCTL_VIDEO_QUERY_CURSOR_ATTR - Returns all attributes of the cursor.
+//
+// IOCTL_VIDEO_SET_CURSOR_ATTR - Is used to set the attributes of the cursor.
+//
+// Information used by this function is passed using the following structure:
+//
+
+//
+// For the VGA:
+// TopScanLine will be stored in the height when an IOCTL is made
+// BottomScanLine will be stored in the width when an IOCTL is made
+//
+
+typedef struct _VIDEO_CURSOR_ATTRIBUTES {
+ USHORT Width;
+ USHORT Height;
+ SHORT Column;
+ SHORT Row;
+ UCHAR Rate;
+ UCHAR Enable;
+} VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES;
+
+//
+//Width - Width of the cursor, in pixels.
+//
+//Height - Height of the cursor, in scans.
+//
+//Column - Column on which the cursor is located from the top left, in pixels.
+//
+//Row - Row on which the cusor is located from the top left, in pixels.
+//
+//Rate - Rate at which the cursor whould flash.
+//
+//Enable - Non-zero to display cursor, 0 not to display.
+//
+
+//
+// IOCTL_VIDEO_QUERY_POINTER_POSITION - Returns the location of the pointer
+// on the screen
+//
+// IOCTL_VIDEO_SET_POINTER_POSITION - Is used to set the location of the
+// pointer on the screen.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_POINTER_POSITION {
+ SHORT Column;
+ SHORT Row;
+} VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION;
+
+//
+//Column - Column on which the cursor is located from the top left, in pixels.
+//
+//Row - Row on which the cusor is located from the top left, in pixels.
+//
+
+
+//
+// IOCTL_VIDEO_QUERY_POINTER_ATTR - Returns all attributes of the pointer.
+//
+// IOCTL_VIDEO_SET_POINTER_ATTR - Is used to set the attributes of the
+// pointer.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_POINTER_ATTRIBUTES {
+ ULONG Flags;
+ ULONG Width;
+ ULONG Height;
+ ULONG WidthInBytes;
+ ULONG Enable;
+ SHORT Column;
+ SHORT Row;
+ UCHAR Pixels[1];
+} VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
+
+//
+//Flags - color or mono pointer, same as for query pointer capabilities.
+//
+//Width - Width of the pointer, in pixels.
+//
+//Height - Height of the pointer, in scans.
+//
+//WidthInBytes - Width of the pointer, in bytes.
+//
+//Enable - Non-zero to display pointer, 0 not to display.
+//
+//Column - Column on which the cursor is located from the top left, in pixels.
+//
+//Row - Row on which the cusor is located from the top left, in pixels.
+//
+//Pixels - Start of pointer data, in device-compatible DIB format.
+// (Mask data is always in 1-bpp DIB format.)
+//
+
+
+//
+// IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES - Returns capabilities of miniport
+// hardware cursor
+//
+
+typedef struct _VIDEO_POINTER_CAPABILITIES {
+ ULONG Flags;
+ ULONG MaxWidth;
+ ULONG MaxHeight;
+ ULONG HWPtrBitmapStart;
+ ULONG HWPtrBitmapEnd;
+} VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
+
+//
+// Flag bit definitions
+//
+
+#define VIDEO_MODE_ASYNC_POINTER 0x01 // 1 if the cursor can be updated
+ // asynchronously to drawing operations.
+#define VIDEO_MODE_MONO_POINTER 0x02 // 1 if a monochrome hardware pointer
+ // is supported.
+#define VIDEO_MODE_COLOR_POINTER 0x04 // 1 if a color hardware pointer is
+ // supported.
+#define VIDEO_MODE_ANIMATE_START 0x08 // The pointer being passed down has
+#define VIDEO_MODE_ANIMATE_UPDATE 0x10 // the same hotspot as the previous
+ // pointer
+
+//
+//MaxWidth - Widest pointer bitmap the miniport should be requested to load
+// for either monochrome or color pointer.
+//
+//MaxHeight - widest pointer bitmap the miniport should be requested to load
+// for either monochrome color pointer handled.
+//
+//HWPtrBitmapStart = first offset in bitmap of memory used to store hardware
+// pointer bitmap, in CPU-addressable units (-1 if not applicable). For
+// planar modes (like VGA mode 12h), this is a planar offset; for linear
+// modes (like VGA mode 13h), this is a linear offset. The CPU-addressable
+// translation in HC planar mode is assumed to be linearaddress/4,
+// because there are four planes at each address.
+//
+//HWPtrBitmapEnd = last offset in bitmap of memory used to store hardware
+// pointer bitmap (-1 if not applicable).
+//
+// Note: Miniport has options to reject any call to set a pointer.
+//
+
+
+//
+// IOCTL_VIDEO_GET_BANK_SELECT_CODE - Called by the Windows display driver
+// to get a block of executable code used
+// to perform bank-switching in high
+// resolution SVGA drivers.
+//
+// Gets information needed to implement banking control for a selected mode.
+//
+// Information used by this function is passed using the following structures:
+//
+
+//
+// The input from the caller in the input buffer is a VIDEO_MODE structure, as
+// described under IOCTL_VIDEO_SET_CURRENT_MODE.
+//
+// RequestedMode - mode index for which banking information is desired.
+//
+
+//
+// Returned in output buffer.
+//
+
+typedef struct _VIDEO_BANK_SELECT {
+ ULONG Length;
+ ULONG Size;
+ ULONG BankingFlags;
+ ULONG BankingType;
+ ULONG PlanarHCBankingType;
+ ULONG BitmapWidthInBytes;
+ ULONG BitmapSize;
+ ULONG Granularity;
+ ULONG PlanarHCGranularity;
+ ULONG CodeOffset;
+ ULONG PlanarHCBankCodeOffset;
+ ULONG PlanarHCEnableCodeOffset;
+ ULONG PlanarHCDisableCodeOffset;
+} VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
+
+//
+// Stored in the BankType and PlanarHCBankintType fields
+//
+
+typedef enum _VIDEO_BANK_TYPE {
+ VideoNotBanked = 0,
+ VideoBanked1RW,
+ VideoBanked1R1W,
+ VideoBanked2RW,
+ NumVideoBankTypes
+} VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
+
+//
+// Defines for BankingFlags.
+//
+
+#define PLANAR_HC 0x00000001
+
+//
+//Note: planar high-color ("planar HC") mode is a special 8-bpp-and-up
+// CPU addressing mode in which four bytes can be accessed at
+// once by using the VGA's planar hardware. This mode is enabled
+// by turning off the Chain4 bit (bit 3 in Sequence Controller
+// register 4), so it is also known as non-Chain4 mode. Planar HC
+// mode can greatly accelerate operations such as solid fills,
+// some pattern fills, and some blits.
+//
+//Note: the term "CPU-addressable bytes" means offsets measured
+// in bytes as accessed by the CPU. In 16-color modes, this
+// merely means "measured in bytes" rather than "measured in
+// pixels," where each byte contains 8 pixels, as usual.
+// In normal high-color modes, "CPU-addressable bytes"
+// is exactly what you'd expect; it's the number of pixels in 256
+// color modes, pixels*2 in 16-bpp modes, and so on. However, in
+// planar HC modes, there are four display memory bytes at every CPU-
+// addressable byte, because four planes are at each address, so
+// in 256 color modes the number of CPU-addressable bytes is
+// pixels/4, in 16-bpp modes CPU-addressable bytes = pixels/2, and
+// so on. Basically, "CPU-addressable bytes" just means the
+// offsets the CPU needs to address banks properly in the
+// specified mode.
+//
+//Note: the start address must be set to 0 (displayed pixels must
+// start at offset 0 in display memory), and the banking windows
+// must fit within the 64K area starting at A000:0; no 128K
+// mappings, please, because there may be a monochrome adapter
+// in the system.
+//
+//Length - Length of the basic structure. Used for versioning by checking the
+// Length of the struct is at least as large as the value given by sizeof().
+//
+//Size - number of bytes required to hold all banking information for
+// this mode, including the VIDEO_BANK_SELECT structure and all
+// bank-switch code. This is the size of the buffer that
+// VgaGetBankSelectCode requires in order properly to return info.
+//
+//BankingFlags - indicate the type of banking supported in this mode.
+// PLANAR_HC - if set, indicates that planar high-color (HC) mode
+// (non-Chain4 8-, 15-, 16-, 24-, and 32-bpp) is supported.
+// If this bit is set, the following fields must be filled in:
+// PlanarHCGranularity, pPlanarHCBankCode,
+// pPlanarHCEnableCode, pPlanarHCDisableCode.
+// This bit is ignored by the 16-color driver, as are the
+// associated fields.
+//
+//BankingType - These are the banking types supported by the adapter
+// when it is ina standard mode.
+//
+// VideoNotBanked - this mode does not support or require banking.
+// VideoBanked1RW - this mode supports a single RW (readable and
+// writable) banking window. The window is assumed to be
+// 64K in size.
+// VideoBanked1R1W - this mode supports a single window, but the
+// window can be mapped to different areas of display memory
+// for reads and for writes. The window is assumed to be
+// 64K in size.
+// VideoBanked2RW - this mode supports two independently mappable
+// banking windows, each RW. Each window is assumed to be
+// 32K in size. The second window is assumed
+// to start immediately after the end of the first, at
+// A000:8000.
+//
+//PlanarHCBankingType - These are the banking types supported by the
+// adapter when it is in a PLANAR HC mode.
+//
+// See BankingType for defintions of each banking type.
+//
+//
+//BitmapWidthInBytes - distance from start of one scan line to start
+// of next, counted in CPU-addressable bytes (not pixels). The
+// CPU-addressable distance from one scan line to the next is
+// assumed to be BitmapWidthInBytes/4 in planar HC modes, because
+// there are four planes at each address.
+//
+//BitmapSize - size of display memory in CPU-addressable bytes (for
+// example, 256K on a 1 Mb SVGA in 16-color mode, because there
+// are four bytes at each address). The CPU-addressable bitmap
+// size is assumed to be BitmapSize/4 in planar HC modes, because
+// there are four planes at each address.
+//
+//Granularity - granularity with which display memory may be mapped
+// into a banking window. (That is, resolution with which the
+// display memory address mapped to the start of a window may be
+// set; anywhere from 1K to 64K, depending on the adapter. If
+// Granularity < window size (either 64K or 32K), then adjacent
+// banks can overlap, and broken rasters can always be avoided.
+// If Granularity == window size, then banks are disjoint, and
+// display memory is basically segmented into banks.) Granularity
+// is measured in CPU-addressable bytes.
+//
+//PlanarHCGranularity - granularity with which display memory may be
+// mapped into a banking window in planar HC mode.
+// PlanarHCGranularity is measured in CPU-addressable bytes, and
+// is typically but not always Granularity/4. Ignored in
+// 16-color modes.
+//
+//CodeOffset - base of the code section in the structure.
+//
+//PlanarHCBankCodeOffset - offset from Code of executable code
+// that performs planar HC mode bank switching. Ignored in
+// 16-color modes.
+//
+//PlanarHCEnableCodeOffset - offset from Code of executable code
+// that enables planar HC mode. Ignored in 16-color modes.
+//
+//PlanarHCDisableCodeOffset - offset from Code of executable code
+// that disables planar HC mode. Ignored in 16-color modes.
+//
+//Specification for bank switch code at Code:
+// Executes requested bank mappings.
+//
+// Input:
+// EAX = bank number to which to map window #0
+// EDX = bank number to which to map window #1
+// interpreted according to BankingType as follows:
+// VideoBanked1RW - the single window is mapped to bank EAX,
+// EBX is ignored.
+// VideoBanked1RW - the read window is mapped to bank EAX,
+// the write window is mapped to bank EBX
+// VideoBanked1R1W - the window at A000:0 is mapped to bank EAX,
+// the window at A800:0 is mapped to bank EBX
+//
+// Output: none
+//
+// Note: the definition of "bank n" is the bank that starts at
+// display memory offset Granularity*n. In other words,
+// banks are assumed to start every Granularity CPU-addressable
+// bytes, and are numbered from 0 to number of banks-1.
+//
+//Specification for planar HC executable code:
+// ***To be filled in when we get to planar HC modes***
+//
+
+
+//
+// IOCTL_VIDEO_MAP_VIDEO_MEMORY - Maps the frame buffer into the callers
+// address space.
+// IOCTL_VIDEO_UNMAP_VIDEO_MEMORY - Unmaps the frame buffer from the callers
+// address space.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_MEMORY {
+ PVOID RequestedVirtualAddress;
+} VIDEO_MEMORY, *PVIDEO_MEMORY;
+
+//
+//RequestedVirtualAddress - For MAP: Requested virtual address for the video
+// memory. This value is optional. If zero is specified, the operating
+// system will choose an appropriate location. For UNMAP: Virtual Address
+// of the base of video memory. The size is implicit since it can not
+// change (you can not add video memory dynamically!).
+//
+
+// IOCTL_VIDEO_SHARE_VIDEO_MEMORY - Maps the frame buffer to another process'
+// address space. This IOCTL is initally
+// defined to support DCI.
+// IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY - Unmaps a previously shared buffer.
+//
+// Note: for the MAP_VIDEO_MEMORY_IOCTL, the process handle is passed in
+// the VirtualAddress filed, while for this IOCTL the handle is explicit.
+//
+
+typedef struct _VIDEO_SHARE_MEMORY {
+ HANDLE ProcessHandle;
+ ULONG ViewOffset;
+ ULONG ViewSize;
+ PVOID RequestedVirtualAddress;
+} VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
+
+typedef struct _VIDEO_SHARE_MEMORY_INFORMATION {
+ ULONG SharedViewOffset;
+ ULONG SharedViewSize;
+ PVOID VirtualAddress;
+} VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION;
+
+
+//
+// IOCTL_VIDEO_MAP_VIDEO_MEMORY - Returns the virtual address and size of
+// the frame buffer and video memory in the
+// caller's address space.
+// This IOCTL must be called after a call
+// to the MAP IOCTL has been made.
+//
+
+typedef struct _VIDEO_MEMORY_INFORMATION {
+ PVOID VideoRamBase;
+ ULONG VideoRamLength;
+ PVOID FrameBufferBase;
+ ULONG FrameBufferLength;
+} VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
+
+//
+//VideoRamBase - Virtual address of the Video RAM in the callers address space
+// (only valid if the memory is mapped.
+//
+//VideoRamLength - Linear length of the Video RAM in the caller's virtual
+// address space (memory accessible through a bank switch mechanism is not
+// described by this value).
+// This value must be equal to VideoMemoryBitmapHeight * ScreenStride
+//
+//FrameBufferBase - Virtual address of the Frame Buffer in the caller's
+// address space. The Frame buffer is the actively displayed part of Video
+// Ram.
+//
+//FrameBufferLength - Linear length of the Frame Buffer in the caller's
+// virtual address space (memory accessible through a bank switch mechanism
+// is not described by this value).
+// This value must be equal to VisScreenWidth * ScreenStride
+//
+
+
+//
+// IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES - Returns the access range used to
+// program the hardware directly.
+// An array of these is returned if
+// multiple ranges exist.
+//
+// IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES - Frees up the access ranges that were
+// allocated by the QUERY_ACCESS_RANGES
+// call.
+//
+// Information used by this function is passed using the following structure:
+//
+
+typedef struct _VIDEO_PUBLIC_ACCESS_RANGES {
+ ULONG InIoSpace;
+ ULONG MappedInIoSpace;
+ PVOID VirtualAddress;
+} VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES;
+
+//
+//InIoSpace - Indicates if the hardware registers or ports are in IO space
+// or in memory space.
+//
+//MappedInIoSpace - Indicates if under the current platform the registers or
+// ports are mapped in IO Space or memory space.
+//
+//VirtualAddress - Location of the registers or IO ports as mapped under the
+// current architecture.
+//
+
+
+//
+// IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES - Returns the color information
+// found in the monitors VDDPs
+// description file.
+//
+// NOTE: This structure must be filled out completely. A subset of the
+// values can not be returned.
+//
+
+typedef struct _VIDEO_COLOR_CAPABILITIES {
+ ULONG Length;
+ ULONG AttributeFlags;
+ LONG RedPhosphoreDecay;
+ LONG GreenPhosphoreDecay;
+ LONG BluePhosphoreDecay;
+ LONG WhiteChromaticity_x;
+ LONG WhiteChromaticity_y;
+ LONG WhiteChromaticity_Y;
+ LONG RedChromaticity_x;
+ LONG RedChromaticity_y;
+ LONG GreenChromaticity_x;
+ LONG GreenChromaticity_y;
+ LONG BlueChromaticity_x;
+ LONG BlueChromaticity_y;
+ LONG WhiteGamma;
+ LONG RedGamma;
+ LONG GreenGamma;
+ LONG BlueGamma;
+} VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES;
+
+//
+// Flag Bit definitions
+//
+
+#define VIDEO_DEVICE_COLOR 0x1 // Is this device support color (1)
+ // or monochrome only
+#define VIDEO_OPTIONAL_GAMMET_TABLE 0x2 // Indicates that a gammet table can
+ // be queried/set for the device
+ // use other IOCTLs for that purpose.
+//
+//Length - Length of the basic structure. Used for versioning by checking the
+// Length of the struct is at least as large as the value given by sizeof().
+//
+//AttributesFlag - List of falgs determining some of the properties of the
+// device.
+//
+//See the VDDP documentation for the details on the various fields
+//
+//RedPhosphoreDecay
+//GreenPhosphoreDecay
+//BluePhosphoreDecay -
+//
+//WhiteChromaticity_x
+//WhiteChromaticity_y
+//WhiteChromaticity_Y -
+//
+//RedChromaticity_x
+//RedChromaticity_y
+//GreenChromaticity_x
+//GreenChromaticity_y
+//BlueChromaticity_x
+//BlueChromaticity_y -
+//
+//WhiteGamma -
+//
+//RedGamma
+//GreenGamma
+//BlueGamma -
+//
+//All values returned in this structure are integers.
+//The values returned must be floating point values * 10,000; i.e:
+//a gamma of 2.34 would be returned as 23400.
+//
+
+
+
+//
+// IOCTL_VIDEO_SET_POWER_MANAGEMENT - Tells the device to change the power
+// consumption level of the device to the
+// new state.
+// IOCTL_VIDEO_GET_POWER_MANAGEMENT - Return the current power consumption
+// level of the device.
+//
+// NOTE:
+// This IOCTL is based on the VESA DPMS proposal.
+// Changes to the DPMS standard will be refelcted in this IOCTL.
+//
+
+typedef enum _VIDEO_POWER_STATE {
+ VideoPowerOn = 1,
+ VideoPowerStandBy,
+ VideoPowerSuspend,
+ VideoPowerOff
+} VIDEO_POWER_STATE, *PVIDEO_POWER_STATE;
+
+
+typedef struct _VIDEO_POWER_MANAGEMENT {
+ ULONG Length;
+ ULONG DPMSVersion;
+ ULONG PowerState;
+} VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;
+
+//
+//Length - Length of the structure in bytes. Also used to do verisioning.
+//
+//DPMSVersion - Version of the DPMS standard supported by the device.
+// Only used in the "GET" IOCTL.
+//
+//PowerState - One of the power states listed in VIDEO_POWER_STATE.
+//
+
+//
+// Note:
+// Once the power has been turned off to the device, all other IOCTLs made
+// to the miniport will be intercepted by the port driver and will return
+// failiure, until the power on the device has been turned back on.
+//
+
diff --git a/public/sdk/inc/ntddvdsk.h b/public/sdk/inc/ntddvdsk.h
new file mode 100644
index 000000000..5ef40f283
--- /dev/null
+++ b/public/sdk/inc/ntddvdsk.h
@@ -0,0 +1,47 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddvdsk.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing the Virtual Disk device.
+
+Author:
+
+ Steve Wood (stevewo) 27-May-1990
+
+Revision History:
+
+--*/
+
+//
+// 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 DD_VDSK_DEVICE_NAME "\\Device\\UNKNOWN"
+
+
+//
+// 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_VDSK_BASE FILE_DEVICE_VIRTUAL_DISK
+
+
+//
+// NtDeviceIoControlFile InputBuffer/OutputBuffer record structures for
+// this device.
+//
+
diff --git a/public/sdk/inc/ntddwave.h b/public/sdk/inc/ntddwave.h
new file mode 100644
index 000000000..3f77a41af
--- /dev/null
+++ b/public/sdk/inc/ntddwave.h
@@ -0,0 +1,128 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntddwave.h
+
+Abstract:
+
+ This include file defines all constants and types for
+ accessing an NT wave device.
+
+Author:
+
+ NigelThompson (NigelT) 17-May-91
+
+Revision History:
+
+--*/
+
+#ifndef _NTDDWAVE_
+#define _NTDDWAVE_
+
+#include <ntddsnd.h> // general sound stuff
+
+//
+// Device Name - this string is the name of the device. It is the name
+// that when added to the name of the root of the device tree and with
+// the device number appended, gives the name of the device required for
+// a call to NtOpenFile.
+// So for example, if the root is \Device and the Device type is
+// WaveIn and the device number is 2, the full name is \Device\WaveIn2
+//
+
+#define DD_WAVE_IN_DEVICE_NAME "\\Device\\WaveIn"
+#define DD_WAVE_IN_DEVICE_NAME_U L"\\Device\\WaveIn"
+#define DD_WAVE_OUT_DEVICE_NAME "\\Device\\WaveOut"
+#define DD_WAVE_OUT_DEVICE_NAME_U L"\\Device\\WaveOut"
+
+//
+// WAVE device driver IOCTL set
+//
+
+#define IOCTL_WAVE_QUERY_FORMAT CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_WAVE_SET_FORMAT CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_GET_CAPABILITIES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_WAVE_SET_STATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0004, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_GET_STATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0005, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_GET_POSITION CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0006, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_SET_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_WAVE_GET_VOLUME CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_WAVE_SET_PITCH CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_GET_PITCH CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000A, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_SET_PLAYBACK_RATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000B, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_GET_PLAYBACK_RATE CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000C, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_PLAY CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000D, METHOD_IN_DIRECT, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_RECORD CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000E, METHOD_OUT_DIRECT, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_BREAK_LOOP CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000F, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+#define IOCTL_WAVE_SET_LOW_PRIORITY CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0010, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+//
+// IOCTLs used in the debug build only
+//
+
+#if DBG
+
+#define IOCTL_WAVE_SET_DEBUG_LEVEL CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0040, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#endif // DBG
+
+//
+// Wave position structure
+//
+
+typedef struct _WAVE_DD_POSITION {
+ ULONG SampleCount; // Number of sound samples
+ ULONG ByteCount; // Number of bytes (in SampleCount samples)
+} WAVE_DD_POSITION, *PWAVE_DD_POSITION;
+
+//
+// Wave volume structure
+//
+
+typedef struct _WAVE_DD_VOLUME {
+ ULONG Left;
+ ULONG Right;
+} WAVE_DD_VOLUME, *PWAVE_DD_VOLUME;
+
+#define WAVE_DD_MAX_VOLUME 0xFFFFFFFF // Maximum volume
+
+//
+// Wave pitch shift structure
+//
+
+typedef struct _WAVE_DD_PITCH {
+ ULONG Pitch; // fixed point value 1.0 = 0x10000
+} WAVE_DD_PITCH, *PWAVE_DD_PITCH;
+
+//
+// Wave playback rate structure
+//
+
+typedef struct _WAVE_DD_PLAYBACK_RATE {
+ ULONG Rate; // fixed point value 1.0 = 0x10000
+} WAVE_DD_PLAYBACK_RATE, *PWAVE_DD_PLAYBACK_RATE;
+
+//
+// State flags used to set the state of a driver
+//
+
+#define WAVE_DD_STOP 0x0001
+#define WAVE_DD_PLAY 0x0002 // output devices only
+#define WAVE_DD_RECORD 0x0003 // input devices only
+#define WAVE_DD_RESET 0x0004
+
+//
+// States returned by the get state ioctl
+//
+
+#define WAVE_DD_IDLE 0x0000
+#define WAVE_DD_STOPPED 0x0001 // stopped
+#define WAVE_DD_PLAYING 0x0002 // output devices only
+#define WAVE_DD_RECORDING 0x0003 // input devices only
+
+#endif // _NTDDWAVE_
+
+
diff --git a/public/sdk/inc/ntdef.h b/public/sdk/inc/ntdef.h
new file mode 100644
index 000000000..31fdf4d36
--- /dev/null
+++ b/public/sdk/inc/ntdef.h
@@ -0,0 +1,1256 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntdef.h
+
+Abstract:
+
+ Type definitions for the basic types.
+
+Author:
+
+ Mark Lucovsky (markl) 02-Feb-1989
+
+Revision History:
+
+--*/
+
+#ifndef _NTDEF_
+#define _NTDEF_
+
+#include <ctype.h> // winnt ntndis
+
+// begin_ntminiport begin_ntndis begin_ntminitape
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+#ifndef NOTHING
+#define NOTHING
+#endif
+
+#ifndef CRITICAL
+#define CRITICAL
+#endif
+
+#ifndef ANYSIZE_ARRAY
+#define ANYSIZE_ARRAY 1 // winnt
+#endif
+
+// begin_winnt
+
+#if defined(_M_MRX000) && !(defined(MIDL_PASS) || defined(RC_INVOKED)) && defined(ENABLE_RESTRICTED)
+#define RESTRICTED_POINTER __restrict
+#else
+#define RESTRICTED_POINTER
+#endif
+
+#if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC)
+#define UNALIGNED __unaligned
+#else
+#define UNALIGNED
+#endif
+
+// end_winnt
+
+#ifndef CONST
+#define CONST const
+#endif
+
+// begin_winnt
+
+#if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
+#define DECLSPEC_IMPORT __declspec(dllimport)
+#else
+#define DECLSPEC_IMPORT
+#endif
+
+// end_winnt
+
+//
+// Void
+//
+
+typedef void *PVOID; // winnt
+
+// end_ntminiport end_ntndis end_ntminitape
+
+// begin_winnt begin_ntndis
+
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define NTAPI __stdcall
+#else
+#define _cdecl
+#define NTAPI
+#endif
+
+//
+// Define API decoration for direct importing system DLL references.
+//
+
+#if !defined(_NTSYSTEM_)
+#define NTSYSAPI DECLSPEC_IMPORT
+#else
+#define NTSYSAPI
+#endif
+
+// end_winnt end_ntndis
+
+// begin_winnt begin_ntminiport begin_ntndis begin_ntminitape
+
+//
+// Basics
+//
+
+#ifndef VOID
+#define VOID void
+typedef char CHAR;
+typedef short SHORT;
+typedef long LONG;
+#endif
+
+//
+// UNICODE (Wide Character) types
+//
+
+typedef wchar_t WCHAR; // wc, 16-bit UNICODE character
+
+typedef WCHAR *PWCHAR;
+typedef WCHAR *LPWCH, *PWCH;
+typedef CONST WCHAR *LPCWCH, *PCWCH;
+typedef WCHAR *NWPSTR;
+typedef WCHAR *LPWSTR, *PWSTR;
+
+typedef CONST WCHAR *LPCWSTR, *PCWSTR;
+
+//
+// ANSI (Multi-byte Character) types
+//
+typedef CHAR *PCHAR;
+typedef CHAR *LPCH, *PCH;
+
+typedef CONST CHAR *LPCCH, *PCCH;
+typedef CHAR *NPSTR;
+typedef CHAR *LPSTR, *PSTR;
+typedef CONST CHAR *LPCSTR, *PCSTR;
+
+//
+// Neutral ANSI/UNICODE types and macros
+//
+#ifdef UNICODE // r_winnt
+
+#ifndef _TCHAR_DEFINED
+typedef WCHAR TCHAR, *PTCHAR;
+typedef WCHAR TUCHAR, *PTUCHAR;
+#define _TCHAR_DEFINED
+#endif /* !_TCHAR_DEFINED */
+
+typedef LPWSTR LPTCH, PTCH;
+typedef LPWSTR PTSTR, LPTSTR;
+typedef LPCWSTR LPCTSTR;
+typedef LPWSTR LP;
+#define __TEXT(quote) L##quote // r_winnt
+
+#else /* UNICODE */ // r_winnt
+
+#ifndef _TCHAR_DEFINED
+typedef char TCHAR, *PTCHAR;
+typedef unsigned char TUCHAR, *PTUCHAR;
+#define _TCHAR_DEFINED
+#endif /* !_TCHAR_DEFINED */
+
+typedef LPSTR LPTCH, PTCH;
+typedef LPSTR PTSTR, LPTSTR;
+typedef LPCSTR LPCTSTR;
+#define __TEXT(quote) quote // r_winnt
+
+#endif /* UNICODE */ // r_winnt
+#define TEXT(quote) __TEXT(quote) // r_winnt
+
+
+// end_winnt
+
+typedef double DOUBLE;
+
+typedef struct _QUAD { // QUAD is for those times we want
+ double DoNotUseThisField; // an 8 byte aligned 8 byte long structure
+} QUAD; // which is NOT really a floating point
+ // number. Use DOUBLE if you want an FP
+ // number.
+
+//
+// Pointer to Basics
+//
+
+typedef SHORT *PSHORT; // winnt
+typedef LONG *PLONG; // winnt
+typedef QUAD *PQUAD;
+
+//
+// Unsigned Basics
+//
+
+// Tell windef.h that some types are already defined.
+#define BASETYPES
+
+typedef unsigned char UCHAR;
+typedef unsigned short USHORT;
+typedef unsigned long ULONG;
+typedef QUAD UQUAD;
+
+//
+// Pointer to Unsigned Basics
+//
+
+typedef UCHAR *PUCHAR;
+typedef USHORT *PUSHORT;
+typedef ULONG *PULONG;
+typedef UQUAD *PUQUAD;
+
+//
+// Signed characters
+//
+
+typedef signed char SCHAR;
+typedef SCHAR *PSCHAR;
+
+#ifndef NO_STRICT
+#ifndef STRICT
+#define STRICT 1
+#endif
+#endif
+
+//
+// Handle to an Object
+//
+
+// begin_winnt
+
+#ifdef STRICT
+typedef void *HANDLE;
+#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
+#else
+typedef PVOID HANDLE;
+#define DECLARE_HANDLE(name) typedef HANDLE name
+#endif
+typedef HANDLE *PHANDLE;
+
+//
+// Flag (bit) fields
+//
+
+typedef UCHAR FCHAR;
+typedef USHORT FSHORT;
+typedef ULONG FLONG;
+
+// end_winnt
+
+//
+// Low order two bits of a handle are ignored by the system and available
+// for use by application code as tag bits. The remaining bits are opaque
+// and used to store a serial number and table index.
+//
+
+#define OBJ_HANDLE_TAGBITS 0x00000003L
+
+//
+// Cardinal Data Types [0 - 2**N-2)
+//
+
+typedef char CCHAR; // winnt
+typedef short CSHORT;
+typedef ULONG CLONG;
+
+typedef CCHAR *PCCHAR;
+typedef CSHORT *PCSHORT;
+typedef CLONG *PCLONG;
+
+// end_ntminiport end_ntndis end_ntminitape
+
+//
+// NLS basics (Locale and Language Ids)
+//
+
+typedef ULONG LCID; // winnt
+typedef PULONG PLCID; // winnt
+typedef USHORT LANGID; // winnt
+
+//
+// Logical Data Type - These are 32-bit logical values.
+//
+
+typedef ULONG LOGICAL;
+typedef ULONG *PLOGICAL;
+
+// begin_ntndis
+//
+// NTSTATUS
+//
+
+typedef LONG NTSTATUS;
+/*lint -e624 */ // Don't complain about different typedefs. // winnt
+typedef NTSTATUS *PNTSTATUS;
+/*lint +e624 */ // Resume checking for different typedefs. // winnt
+
+//
+// Status 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| Facility | Code |
+// +---+-+-------------------------+-------------------------------+
+//
+// where
+//
+// Sev - is the severity code
+//
+// 00 - Success
+// 01 - Informational
+// 10 - Warning
+// 11 - Error
+//
+// C - is the Customer code flag
+//
+// Facility - is the facility code
+//
+// Code - is the facility's status code
+//
+
+//
+// Generic test for success on any status value (non-negative numbers
+// indicate success).
+//
+
+#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
+
+//
+// Generic test for information on any status value.
+//
+
+#define NT_INFORMATION(Status) ((ULONG)(Status) >> 30 == 1)
+
+//
+// Generic test for warning on any status value.
+//
+
+#define NT_WARNING(Status) ((ULONG)(Status) >> 30 == 2)
+
+//
+// Generic test for error on any status value.
+//
+
+#define NT_ERROR(Status) ((ULONG)(Status) >> 30 == 3)
+
+// begin_winnt
+#define APPLICATION_ERROR_MASK 0x20000000
+#define ERROR_SEVERITY_SUCCESS 0x00000000
+#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
+#define ERROR_SEVERITY_WARNING 0x80000000
+#define ERROR_SEVERITY_ERROR 0xC0000000
+// end_winnt
+
+// end_ntndis
+//
+// Large (64-bit) integer types and operations
+//
+
+#define TIME LARGE_INTEGER
+#define _TIME _LARGE_INTEGER
+#define PTIME PLARGE_INTEGER
+#define LowTime LowPart
+#define HighTime HighPart
+
+
+// begin_winnt begin_ntminiport begin_ntndis begin_ntminitape
+
+//
+// __int64 is only supported by 2.0 and later midl.
+// __midl is set by the 2.0 midl and not by 1.0 midl.
+//
+
+#define _ULONGLONG_
+#if (!defined(MIDL_PASS) || defined(__midl)) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
+typedef __int64 LONGLONG;
+typedef unsigned __int64 ULONGLONG;
+
+#define MAXLONGLONG (0x7fffffffffffffff)
+#else
+typedef double LONGLONG;
+typedef double ULONGLONG;
+#endif
+
+typedef LONGLONG *PLONGLONG;
+typedef ULONGLONG *PULONGLONG;
+
+// Update Sequence Number
+
+typedef LONGLONG USN;
+
+#if defined(MIDL_PASS)
+typedef struct _LARGE_INTEGER {
+#else // MIDL_PASS
+typedef union _LARGE_INTEGER {
+ struct {
+ ULONG LowPart;
+ LONG HighPart;
+ };
+ struct {
+ ULONG LowPart;
+ LONG HighPart;
+ } u;
+#endif //MIDL_PASS
+ LONGLONG QuadPart;
+} LARGE_INTEGER;
+
+typedef LARGE_INTEGER *PLARGE_INTEGER;
+
+
+#if defined(MIDL_PASS)
+typedef struct _ULARGE_INTEGER {
+#else // MIDL_PASS
+typedef union _ULARGE_INTEGER {
+ struct {
+ ULONG LowPart;
+ ULONG HighPart;
+ };
+ struct {
+ ULONG LowPart;
+ ULONG HighPart;
+ } u;
+#endif //MIDL_PASS
+ ULONGLONG QuadPart;
+} ULARGE_INTEGER;
+
+typedef ULARGE_INTEGER *PULARGE_INTEGER;
+
+// end_ntminiport end_ntndis end_ntminitape
+
+//
+// Locally Unique Identifier
+//
+
+typedef struct _LUID {
+ ULONG LowPart;
+ LONG HighPart;
+} LUID, *PLUID;
+
+// end_winnt
+// begin_ntminiport begin_ntndis
+
+//
+// Physical address.
+//
+
+typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; // windbgkd
+
+// end_ntminiport end_ntndis
+
+// begin_winnt
+
+//
+// Define operations to logically shift an int64 by 0..31 bits and to multiply
+// 32-bits by 32-bits to form a 64-bit product.
+//
+
+#if defined(MIDL_PASS) || defined(RC_INVOKED)
+
+//
+// Midl does not understand inline assembler. Therefore, the Rtl functions
+// are used for shifts by 0.31 and multiplies of 32-bits times 32-bits to
+// form a 64-bit product.
+//
+
+#define Int32x32To64(a, b) ((LONGLONG)((LONG)(a)) * (LONGLONG)((LONG)(b)))
+#define UInt32x32To64(a, b) ((ULONGLONG)((ULONG)(a)) * (ULONGLONG)((ULONG)(b)))
+
+#define Int64ShllMod32(a, b) ((ULONGLONG)(a) << (b))
+#define Int64ShraMod32(a, b) ((LONGLONG)(a) >> (b))
+#define Int64ShrlMod32(a, b) ((ULONGLONG)(a) >> (b))
+
+#elif defined(_M_MRX000)
+
+//
+// MIPS uses intrinsic functions to perform shifts by 0..31 and multiplies of
+// 32-bits times 32-bits to 64-bits.
+//
+
+#define Int32x32To64 __emul
+#define UInt32x32To64 __emulu
+
+#define Int64ShllMod32 __ll_lshift
+#define Int64ShraMod32 __ll_rshift
+#define Int64ShrlMod32 __ull_rshift
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+LONGLONG
+NTAPI
+Int32x32To64 (
+ LONG Multiplier,
+ LONG Multiplicand
+ );
+
+ULONGLONG
+NTAPI
+UInt32x32To64 (
+ ULONG Multiplier,
+ ULONG Multiplicand
+ );
+
+ULONGLONG
+NTAPI
+Int64ShllMod32 (
+ ULONGLONG Value,
+ ULONG ShiftCount
+ );
+
+LONGLONG
+NTAPI
+Int64ShraMod32 (
+ LONGLONG Value,
+ ULONG ShiftCount
+ );
+
+ULONGLONG
+NTAPI
+Int64ShrlMod32 (
+ ULONGLONG Value,
+ ULONG ShiftCount
+ );
+
+#if defined (__cplusplus)
+};
+#endif
+
+#pragma intrinsic(__emul)
+#pragma intrinsic(__emulu)
+
+#pragma intrinsic(__ll_lshift)
+#pragma intrinsic(__ll_rshift)
+#pragma intrinsic(__ull_rshift)
+
+#elif defined(_M_IX86)
+
+//
+// The x86 C compiler understands inline assembler. Therefore, inline functions
+// that employ inline assembler are used for shifts of 0..31. The multiplies
+// rely on the compiler recognizing the cast of the multiplicand to int64 to
+// generate the optimal code inline.
+//
+
+#define Int32x32To64( a, b ) (LONGLONG)((LONGLONG)(LONG)(a) * (LONG)(b))
+#define UInt32x32To64( a, b ) (ULONGLONG)((ULONGLONG)(ULONG)(a) * (ULONG)(b))
+
+ULONGLONG
+NTAPI
+Int64ShllMod32 (
+ ULONGLONG Value,
+ ULONG ShiftCount
+ );
+
+LONGLONG
+NTAPI
+Int64ShraMod32 (
+ LONGLONG Value,
+ ULONG ShiftCount
+ );
+
+ULONGLONG
+NTAPI
+Int64ShrlMod32 (
+ ULONGLONG Value,
+ ULONG ShiftCount
+ );
+
+#pragma warning(disable:4035) // re-enable below
+
+__inline ULONGLONG
+NTAPI
+Int64ShllMod32 (
+ ULONGLONG Value,
+ ULONG ShiftCount
+ )
+{
+ __asm {
+ mov ecx, ShiftCount
+ mov eax, dword ptr [Value]
+ mov edx, dword ptr [Value+4]
+ shld edx, eax, cl
+ shl eax, cl
+ }
+}
+
+__inline LONGLONG
+NTAPI
+Int64ShraMod32 (
+ LONGLONG Value,
+ ULONG ShiftCount
+ )
+{
+ __asm {
+ mov ecx, ShiftCount
+ mov eax, dword ptr [Value]
+ mov edx, dword ptr [Value+4]
+ shrd eax, edx, cl
+ sar edx, cl
+ }
+}
+
+__inline ULONGLONG
+NTAPI
+Int64ShrlMod32 (
+ ULONGLONG Value,
+ ULONG ShiftCount
+ )
+{
+ __asm {
+ mov ecx, ShiftCount
+ mov eax, dword ptr [Value]
+ mov edx, dword ptr [Value+4]
+ shrd eax, edx, cl
+ shr edx, cl
+ }
+}
+
+#pragma warning(default:4035)
+
+#elif defined(_M_ALPHA)
+
+//
+// Alpha has native 64-bit operations that are just as fast as their 32-bit
+// counter parts. Therefore, the int64 data type is used directly to form
+// shifts of 0..31 and multiplies of 32-bits times 32-bits to form a 64-bit
+// product.
+//
+
+#define Int32x32To64(a, b) ((LONGLONG)((LONG)(a)) * (LONGLONG)((LONG)(b)))
+#define UInt32x32To64(a, b) ((ULONGLONG)((ULONG)(a)) * (ULONGLONG)((ULONG)(b)))
+
+#define Int64ShllMod32(a, b) ((ULONGLONG)(a) << (b))
+#define Int64ShraMod32(a, b) ((LONGLONG)(a) >> (b))
+#define Int64ShrlMod32(a, b) ((ULONGLONG)(a) >> (b))
+
+
+#elif defined(_M_PPC)
+
+#define Int32x32To64(a, b) ((LONGLONG)((LONG)(a)) * (LONGLONG)((LONG)(b)))
+#define UInt32x32To64(a, b) ((ULONGLONG)((ULONG)(a)) * (ULONGLONG)((ULONG)(b)))
+
+#define Int64ShllMod32(a, b) ((ULONGLONG)(a) << (b))
+#define Int64ShraMod32(a, b) ((LONGLONG)(a) >> (b))
+#define Int64ShrlMod32(a, b) ((ULONGLONG)(a) >> (b))
+
+#else
+
+#error Must define a target architecture.
+
+#endif
+
+// end_winnt
+
+//
+// Event type
+//
+
+typedef enum _EVENT_TYPE {
+ NotificationEvent,
+ SynchronizationEvent
+ } EVENT_TYPE;
+
+//
+// Timer type
+//
+
+typedef enum _TIMER_TYPE {
+ NotificationTimer,
+ SynchronizationTimer
+ } TIMER_TYPE;
+
+//
+// Wait type
+//
+
+typedef enum _WAIT_TYPE {
+ WaitAll,
+ WaitAny
+ } WAIT_TYPE;
+
+//
+// Pointer to an Asciiz string
+//
+
+typedef CHAR *PSZ;
+typedef CONST char *PCSZ;
+
+// begin_ntndis
+//
+// Counted String
+//
+
+typedef struct _STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+#ifdef MIDL_PASS
+ [size_is(MaximumLength), length_is(Length) ]
+#endif // MIDL_PASS
+ PCHAR Buffer;
+} STRING;
+typedef STRING *PSTRING;
+
+typedef STRING ANSI_STRING;
+typedef PSTRING PANSI_STRING;
+
+typedef STRING OEM_STRING;
+typedef PSTRING POEM_STRING;
+
+//
+// CONSTCounted String
+//
+
+typedef struct _CSTRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ CONST char *Buffer;
+} CSTRING;
+typedef CSTRING *PCSTRING;
+
+typedef STRING CANSI_STRING;
+typedef PSTRING PCANSI_STRING;
+
+//
+// Unicode strings are counted 16-bit character strings. If they are
+// NULL terminated, Length does not include trailing NULL.
+//
+
+typedef struct _UNICODE_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+#ifdef MIDL_PASS
+ [size_is(MaximumLength / 2), length_is((Length) / 2) ] USHORT * Buffer;
+#else // MIDL_PASS
+ PWSTR Buffer;
+#endif // MIDL_PASS
+} UNICODE_STRING;
+typedef UNICODE_STRING *PUNICODE_STRING;
+#define UNICODE_NULL ((WCHAR)0) // winnt
+
+// begin_ntminiport begin_ntminitape
+
+//
+// Boolean
+//
+
+typedef UCHAR BOOLEAN; // winnt
+typedef BOOLEAN *PBOOLEAN; // winnt
+
+// end_ntminiport end_ntminitape
+
+// begin_winnt
+//
+// Doubly linked list structure. Can be used as either a list head, or
+// as link words.
+//
+
+typedef struct _LIST_ENTRY {
+ struct _LIST_ENTRY * volatile Flink;
+ struct _LIST_ENTRY * volatile Blink;
+} LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;
+
+//
+// Singly linked list structure. Can be used as either a list head, or
+// as link words.
+//
+
+typedef struct _SINGLE_LIST_ENTRY {
+ struct _SINGLE_LIST_ENTRY *Next;
+} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
+// end_winnt end_ntndis
+
+
+//
+// Valid values for the Attributes field
+//
+
+#define OBJ_INHERIT 0x00000002L
+#define OBJ_PERMANENT 0x00000010L
+#define OBJ_EXCLUSIVE 0x00000020L
+#define OBJ_CASE_INSENSITIVE 0x00000040L
+#define OBJ_OPENIF 0x00000080L
+#define OBJ_OPENLINK 0x00000100L
+#define OBJ_VALID_ATTRIBUTES 0x000001F2L
+
+//
+// Object Attributes structure
+//
+
+typedef struct _OBJECT_ATTRIBUTES {
+ ULONG Length;
+ HANDLE RootDirectory;
+ PUNICODE_STRING ObjectName;
+ ULONG Attributes;
+ PVOID SecurityDescriptor; // Points to type SECURITY_DESCRIPTOR
+ PVOID SecurityQualityOfService; // Points to type SECURITY_QUALITY_OF_SERVICE
+} OBJECT_ATTRIBUTES;
+typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
+
+//++
+//
+// VOID
+// InitializeObjectAttributes(
+// OUT POBJECT_ATTRIBUTES p,
+// IN PUNICODE_STRING n,
+// IN ULONG a,
+// IN HANDLE r,
+// IN PSECURITY_DESCRIPTOR s
+// )
+//
+//--
+
+#define InitializeObjectAttributes( p, n, a, r, s ) { \
+ (p)->Length = sizeof( OBJECT_ATTRIBUTES ); \
+ (p)->RootDirectory = r; \
+ (p)->Attributes = a; \
+ (p)->ObjectName = n; \
+ (p)->SecurityDescriptor = s; \
+ (p)->SecurityQualityOfService = NULL; \
+ }
+
+// begin_ntminiport begin_ntndis begin_ntminitape
+
+//
+// Constants
+//
+
+#define FALSE 0
+#define TRUE 1
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif // NULL
+
+// end_ntminiport end_ntndis end_ntminitape
+
+// begin_winnt begin_ntndis
+
+//
+// Base data structures for OLE support
+//
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+
+typedef struct _GUID { // size is 16
+ ULONG Data1;
+ USHORT Data2;
+ USHORT Data3;
+ UCHAR Data4[8];
+} GUID;
+
+#endif // !GUID_DEFINED
+
+#ifndef __OBJECTID_DEFINED
+#define __OBJECTID_DEFINED
+
+typedef struct _OBJECTID { // size is 20
+ GUID Lineage;
+ ULONG Uniquifier;
+} OBJECTID;
+#endif // !_OBJECTID_DEFINED
+
+// end_winnt end_ntndis
+
+
+#define MINCHAR 0x80 // winnt
+#define MAXCHAR 0x7f // winnt
+#define MINSHORT 0x8000 // winnt
+#define MAXSHORT 0x7fff // winnt
+#define MINLONG 0x80000000 // winnt
+#define MAXLONG 0x7fffffff // winnt
+#define MAXUCHAR 0xff // winnt
+#define MAXUSHORT 0xffff // winnt
+#define MAXULONG 0xffffffff // winnt
+
+//
+// Useful Helper Macros
+//
+
+// begin_ntndis
+//
+// Determine if an argument is present by testing the value of the pointer
+// to the argument value.
+//
+
+#define ARGUMENT_PRESENT(ArgumentPointer) (\
+ (CHAR *)(ArgumentPointer) != (CHAR *)(NULL) )
+
+// begin_winnt begin_ntminiport
+//
+// Calculate the byte offset of a field in a structure of type type.
+//
+
+#define FIELD_OFFSET(type, field) ((LONG)&(((type *)0)->field))
+
+
+//
+// Calculate the address of the base of the structure given its type, and an
+// address of a field within the structure.
+//
+
+#define CONTAINING_RECORD(address, type, field) ((type *)( \
+ (PCHAR)(address) - \
+ (PCHAR)(&((type *)0)->field)))
+// end_winnt end_ntminiport end_ntndis
+
+//
+// Exception handler routine definition.
+//
+
+struct _CONTEXT;
+struct _EXCEPTION_RECORD;
+
+typedef
+EXCEPTION_DISPOSITION
+(*PEXCEPTION_ROUTINE) (
+ IN struct _EXCEPTION_RECORD *ExceptionRecord,
+ IN PVOID EstablisherFrame,
+ IN OUT struct _CONTEXT *ContextRecord,
+ IN OUT PVOID DispatcherContext
+ );
+
+// begin_ntminiport begin_ntndis
+
+//
+// Interrupt Request Level (IRQL)
+//
+
+typedef UCHAR KIRQL;
+
+typedef KIRQL *PKIRQL;
+
+// end_ntminiport end_ntndis
+
+//
+// Product types
+//
+
+typedef enum _NT_PRODUCT_TYPE {
+ NtProductWinNt = 1,
+ NtProductLanManNt,
+ NtProductServer
+} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
+
+
+
+
+// begin_winnt begin_r_winnt
+
+//
+// Language IDs.
+//
+// The following two combinations of primary language ID and
+// sublanguage ID have special semantics:
+//
+// Primary Language ID Sublanguage ID Result
+// ------------------- --------------- ------------------------
+// LANG_NEUTRAL SUBLANG_NEUTRAL Language neutral
+// LANG_NEUTRAL SUBLANG_DEFAULT User default language
+// LANG_NEUTRAL SUBLANG_SYS_DEFAULT System default language
+//
+
+//
+// Primary language IDs.
+//
+
+#define LANG_NEUTRAL 0x00
+
+#define LANG_AFRIKAANS 0x36
+#define LANG_ALBANIAN 0x1c
+#define LANG_ARABIC 0x01
+#define LANG_BASQUE 0x2d
+#define LANG_BELARUSIAN 0x23
+#define LANG_BULGARIAN 0x02
+#define LANG_CATALAN 0x03
+#define LANG_CHINESE 0x04
+#define LANG_CROATIAN 0x1a
+#define LANG_CZECH 0x05
+#define LANG_DANISH 0x06
+#define LANG_DUTCH 0x13
+#define LANG_ENGLISH 0x09
+#define LANG_ESTONIAN 0x25
+#define LANG_FAEROESE 0x38
+#define LANG_FARSI 0x29
+#define LANG_FINNISH 0x0b
+#define LANG_FRENCH 0x0c
+#define LANG_GERMAN 0x07
+#define LANG_GREEK 0x08
+#define LANG_HEBREW 0x0d
+#define LANG_HUNGARIAN 0x0e
+#define LANG_ICELANDIC 0x0f
+#define LANG_INDONESIAN 0x21
+#define LANG_ITALIAN 0x10
+#define LANG_JAPANESE 0x11
+#define LANG_KOREAN 0x12
+#define LANG_LATVIAN 0x26
+#define LANG_LITHUANIAN 0x27
+#define LANG_NORWEGIAN 0x14
+#define LANG_POLISH 0x15
+#define LANG_PORTUGUESE 0x16
+#define LANG_ROMANIAN 0x18
+#define LANG_RUSSIAN 0x19
+#define LANG_SERBIAN 0x1a
+#define LANG_SLOVAK 0x1b
+#define LANG_SLOVENIAN 0x24
+#define LANG_SPANISH 0x0a
+#define LANG_SWEDISH 0x1d
+#define LANG_THAI 0x1e
+#define LANG_TURKISH 0x1f
+#define LANG_UKRAINIAN 0x22
+#define LANG_VIETNAMESE 0x2a
+
+//
+// Sublanguage IDs.
+//
+// The name immediately following SUBLANG_ dictates which primary
+// language ID that sublanguage ID can be combined with to form a
+// valid language ID.
+//
+
+#define SUBLANG_NEUTRAL 0x00 // language neutral
+#define SUBLANG_DEFAULT 0x01 // user default
+#define SUBLANG_SYS_DEFAULT 0x02 // system default
+
+#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 // Arabic (Saudi Arabia)
+#define SUBLANG_ARABIC_IRAQ 0x02 // Arabic (Iraq)
+#define SUBLANG_ARABIC_EGYPT 0x03 // Arabic (Egypt)
+#define SUBLANG_ARABIC_LIBYA 0x04 // Arabic (Libya)
+#define SUBLANG_ARABIC_ALGERIA 0x05 // Arabic (Algeria)
+#define SUBLANG_ARABIC_MOROCCO 0x06 // Arabic (Morocco)
+#define SUBLANG_ARABIC_TUNISIA 0x07 // Arabic (Tunisia)
+#define SUBLANG_ARABIC_OMAN 0x08 // Arabic (Oman)
+#define SUBLANG_ARABIC_YEMEN 0x09 // Arabic (Yemen)
+#define SUBLANG_ARABIC_SYRIA 0x0a // Arabic (Syria)
+#define SUBLANG_ARABIC_JORDAN 0x0b // Arabic (Jordan)
+#define SUBLANG_ARABIC_LEBANON 0x0c // Arabic (Lebanon)
+#define SUBLANG_ARABIC_KUWAIT 0x0d // Arabic (Kuwait)
+#define SUBLANG_ARABIC_UAE 0x0e // Arabic (U.A.E)
+#define SUBLANG_ARABIC_BAHRAIN 0x0f // Arabic (Bahrain)
+#define SUBLANG_ARABIC_QATAR 0x10 // Arabic (Qatar)
+#define SUBLANG_CHINESE_TRADITIONAL 0x01 // Chinese (Taiwan)
+#define SUBLANG_CHINESE_SIMPLIFIED 0x02 // Chinese (PR China)
+#define SUBLANG_CHINESE_HONGKONG 0x03 // Chinese (Hong Kong)
+#define SUBLANG_CHINESE_SINGAPORE 0x04 // Chinese (Singapore)
+#define SUBLANG_DUTCH 0x01 // Dutch
+#define SUBLANG_DUTCH_BELGIAN 0x02 // Dutch (Belgian)
+#define SUBLANG_ENGLISH_US 0x01 // English (USA)
+#define SUBLANG_ENGLISH_UK 0x02 // English (UK)
+#define SUBLANG_ENGLISH_AUS 0x03 // English (Australian)
+#define SUBLANG_ENGLISH_CAN 0x04 // English (Canadian)
+#define SUBLANG_ENGLISH_NZ 0x05 // English (New Zealand)
+#define SUBLANG_ENGLISH_EIRE 0x06 // English (Irish)
+#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 // English (South Africa)
+#define SUBLANG_ENGLISH_JAMAICA 0x08 // English (Jamaica)
+#define SUBLANG_ENGLISH_CARIBBEAN 0x09 // English (Caribbean)
+#define SUBLANG_ENGLISH_BELIZE 0x0a // English (Belize)
+#define SUBLANG_ENGLISH_TRINIDAD 0x0b // English (Trinidad)
+#define SUBLANG_FRENCH 0x01 // French
+#define SUBLANG_FRENCH_BELGIAN 0x02 // French (Belgian)
+#define SUBLANG_FRENCH_CANADIAN 0x03 // French (Canadian)
+#define SUBLANG_FRENCH_SWISS 0x04 // French (Swiss)
+#define SUBLANG_FRENCH_LUXEMBOURG 0x05 // French (Luxembourg)
+#define SUBLANG_GERMAN 0x01 // German
+#define SUBLANG_GERMAN_SWISS 0x02 // German (Swiss)
+#define SUBLANG_GERMAN_AUSTRIAN 0x03 // German (Austrian)
+#define SUBLANG_GERMAN_LUXEMBOURG 0x04 // German (Luxembourg)
+#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 // German (Liechtenstein)
+#define SUBLANG_ITALIAN 0x01 // Italian
+#define SUBLANG_ITALIAN_SWISS 0x02 // Italian (Swiss)
+#define SUBLANG_KOREAN 0x01 // Korean (Extended Wansung)
+#define SUBLANG_KOREAN_JOHAB 0x02 // Korean (Johab)
+#define SUBLANG_NORWEGIAN_BOKMAL 0x01 // Norwegian (Bokmal)
+#define SUBLANG_NORWEGIAN_NYNORSK 0x02 // Norwegian (Nynorsk)
+#define SUBLANG_PORTUGUESE 0x02 // Portuguese
+#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 // Portuguese (Brazilian)
+#define SUBLANG_SERBIAN_LATIN 0x02 // Serbian (Latin)
+#define SUBLANG_SERBIAN_CYRILLIC 0x03 // Serbian (Cyrillic)
+#define SUBLANG_SPANISH 0x01 // Spanish (Castilian)
+#define SUBLANG_SPANISH_MEXICAN 0x02 // Spanish (Mexican)
+#define SUBLANG_SPANISH_MODERN 0x03 // Spanish (Modern)
+#define SUBLANG_SPANISH_GUATEMALA 0x04 // Spanish (Guatemala)
+#define SUBLANG_SPANISH_COSTA_RICA 0x05 // Spanish (Costa Rica)
+#define SUBLANG_SPANISH_PANAMA 0x06 // Spanish (Panama)
+#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 // Spanish (Dominican Republic)
+#define SUBLANG_SPANISH_VENEZUELA 0x08 // Spanish (Venezuela)
+#define SUBLANG_SPANISH_COLOMBIA 0x09 // Spanish (Colombia)
+#define SUBLANG_SPANISH_PERU 0x0a // Spanish (Peru)
+#define SUBLANG_SPANISH_ARGENTINA 0x0b // Spanish (Argentina)
+#define SUBLANG_SPANISH_ECUADOR 0x0c // Spanish (Ecuador)
+#define SUBLANG_SPANISH_CHILE 0x0d // Spanish (Chile)
+#define SUBLANG_SPANISH_URUGUAY 0x0e // Spanish (Uruguay)
+#define SUBLANG_SPANISH_PARAGUAY 0x0f // Spanish (Paraguay)
+#define SUBLANG_SPANISH_BOLIVIA 0x10 // Spanish (Bolivia)
+#define SUBLANG_SPANISH_EL_SALVADOR 0x11 // Spanish (El Salvador)
+#define SUBLANG_SPANISH_HONDURAS 0x12 // Spanish (Honduras)
+#define SUBLANG_SPANISH_NICARAGUA 0x13 // Spanish (Nicaragua)
+#define SUBLANG_SPANISH_PUERTO_RICO 0x14 // Spanish (Puerto Rico)
+#define SUBLANG_SWEDISH 0x01 // Swedish
+#define SUBLANG_SWEDISH_FINLAND 0x02 // Swedish (Finland)
+
+//
+// Sorting IDs.
+//
+
+#define SORT_DEFAULT 0x0 // sorting default
+
+#define SORT_JAPANESE_XJIS 0x0 // Japanese XJIS order
+#define SORT_JAPANESE_UNICODE 0x1 // Japanese Unicode order
+
+#define SORT_CHINESE_BIG5 0x0 // Chinese BIG5 order
+#define SORT_CHINESE_PRCP 0x0 // PRC Chinese Phonetic order
+#define SORT_CHINESE_UNICODE 0x1 // Chinese Unicode order
+#define SORT_CHINESE_PRC 0x2 // PRC Chinese Stroke Count order
+
+#define SORT_KOREAN_KSC 0x0 // Korean KSC order
+#define SORT_KOREAN_UNICODE 0x1 // Korean Unicode order
+
+#define SORT_GERMAN_PHONE_BOOK 0x1 // German Phone Book order
+
+// end_r_winnt
+
+//
+// A language ID is a 16 bit value which is the combination of a
+// primary language ID and a secondary language ID. The bits are
+// allocated as follows:
+//
+// +-----------------------+-------------------------+
+// | Sublanguage ID | Primary Language ID |
+// +-----------------------+-------------------------+
+// 15 10 9 0 bit
+//
+//
+// Language ID creation/extraction macros:
+//
+// MAKELANGID - construct language id from a primary language id and
+// a sublanguage id.
+// PRIMARYLANGID - extract primary language id from a language id.
+// SUBLANGID - extract sublanguage id from a language id.
+//
+
+#define MAKELANGID(p, s) ((((USHORT)(s)) << 10) | (USHORT)(p))
+#define PRIMARYLANGID(lgid) ((USHORT)(lgid) & 0x3ff)
+#define SUBLANGID(lgid) ((USHORT)(lgid) >> 10)
+
+
+//
+// A locale ID is a 32 bit value which is the combination of a
+// language ID, a sort ID, and a reserved area. The bits are
+// allocated as follows:
+//
+// +-------------+---------+-------------------------+
+// | Reserved | Sort ID | Language ID |
+// +-------------+---------+-------------------------+
+// 31 20 19 16 15 0 bit
+//
+//
+// Locale ID creation/extraction macros:
+//
+// MAKELCID - construct locale id from a language id and a sort id.
+// LANGIDFROMLCID - extract language id from a locale id.
+// SORTIDFROMLCID - extract sort id from a locale id.
+//
+
+#define NLS_VALID_LOCALE_MASK 0x000fffff
+
+#define MAKELCID(lgid, srtid) ((ULONG)((((ULONG)((USHORT)(srtid))) << 16) | \
+ ((ULONG)((USHORT)(lgid)))))
+#define LANGIDFROMLCID(lcid) ((USHORT)(lcid))
+#define SORTIDFROMLCID(lcid) ((USHORT)((((ULONG)(lcid)) & NLS_VALID_LOCALE_MASK) >> 16))
+
+
+//
+// Default System and User IDs for language and locale.
+//
+
+#define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT))
+#define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
+
+#define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT))
+#define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT))
+
+#define LOCALE_NEUTRAL \
+ (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), SORT_DEFAULT))
+
+
+// begin_ntminiport begin_ntndis begin_ntminitape
+
+//
+// Macros used to eliminate compiler warning generated when formal
+// parameters or local variables are not declared.
+//
+// Use DBG_UNREFERENCED_PARAMETER() when a parameter is not yet
+// referenced but will be once the module is completely developed.
+//
+// Use DBG_UNREFERENCED_LOCAL_VARIABLE() when a local variable is not yet
+// referenced but will be once the module is completely developed.
+//
+// Use UNREFERENCED_PARAMETER() if a parameter will never be referenced.
+//
+// DBG_UNREFERENCED_PARAMETER and DBG_UNREFERENCED_LOCAL_VARIABLE will
+// eventually be made into a null macro to help determine whether there
+// is unfinished work.
+//
+
+#if ! (defined(lint) || defined(_lint))
+#define UNREFERENCED_PARAMETER(P) (P)
+#define DBG_UNREFERENCED_PARAMETER(P) (P)
+#define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V)
+
+#else // lint or _lint
+
+// Note: lint -e530 says don't complain about uninitialized variables for
+// this. line +e530 turns that checking back on. Error 527 has to do with
+// unreachable code.
+
+#define UNREFERENCED_PARAMETER(P) \
+ /*lint -e527 -e530 */ \
+ { \
+ (P) = (P); \
+ } \
+ /*lint +e527 +e530 */
+#define DBG_UNREFERENCED_PARAMETER(P) \
+ /*lint -e527 -e530 */ \
+ { \
+ (P) = (P); \
+ } \
+ /*lint +e527 +e530 */
+#define DBG_UNREFERENCED_LOCAL_VARIABLE(V) \
+ /*lint -e527 -e530 */ \
+ { \
+ (V) = (V); \
+ } \
+ /*lint +e527 +e530 */
+
+#endif // lint or _lint
+
+
+// end_winnt end_ntminiport end_ntndis end_ntminitape
+
+#endif // _NTDEF_
diff --git a/public/sdk/inc/ntdskreg.h b/public/sdk/inc/ntdskreg.h
new file mode 100644
index 000000000..20b0ddcda
--- /dev/null
+++ b/public/sdk/inc/ntdskreg.h
@@ -0,0 +1,257 @@
+/*++
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ ntdskreg.h
+
+Abstract:
+
+ This file contains disk registry data structures.
+
+Authors:
+
+ mglass
+ bobri
+
+Notes:
+
+Revision History:
+
+--*/
+
+#ifndef _NTDSKREG_
+#define _NTDSKREG_
+
+
+//
+// Component types for FT members. If a disk partition
+// is not a part of an FT component then it is stamped
+// as "NotAnFtMember".
+//
+
+typedef enum {
+ Mirror,
+ Stripe,
+ StripeWithParity,
+ VolumeSet,
+ NotAnFtMember,
+ WholeDisk
+} FT_TYPE;
+
+//
+// FT_PARTITION_STATE is an enumerated type that describes the state of an
+// NTFT member.
+// Up to one member can be 'orphaned', that is missing or out of sync with
+// the other members. The orphaned member will remain orphaned until recovery
+// action is commenced in DISKMAN.EXE.
+// When READs are directed at an orphaned member, the data is returned from
+// the redundant copy. WRITEs go to the secondary members only.
+//
+
+typedef enum _FT_PARTITION_STATE {
+ Healthy,
+ Orphaned,
+ Regenerating,
+ Initializing
+} FT_PARTITION_STATE, *PFT_PARTITION_STATE;
+
+//
+// The description of a partition on a disk.
+//
+
+#include "pshpack4.h"
+typedef struct _DISK_PARTITION {
+
+ FT_TYPE FtType;
+ FT_PARTITION_STATE FtState;
+ LARGE_INTEGER StartingOffset;
+ LARGE_INTEGER Length;
+ LARGE_INTEGER FtLength;
+ ULONG ReservedTwoLongs[2];
+ UCHAR DriveLetter;
+ BOOLEAN AssignDriveLetter;
+ USHORT LogicalNumber;
+ USHORT FtGroup;
+ USHORT FtMember;
+ BOOLEAN Modified;
+ UCHAR ReservedChars[3];
+
+} DISK_PARTITION, *PDISK_PARTITION;
+
+//
+// The description of a disk.
+//
+
+typedef struct _DISK_DESCRIPTION {
+
+ USHORT NumberOfPartitions;
+ USHORT ReservedShort;
+ ULONG Signature;
+
+ //
+ // An array for NumberOfPartitions
+ //
+
+ DISK_PARTITION Partitions[1];
+
+} DISK_DESCRIPTION, *PDISK_DESCRIPTION;
+
+//
+// Header for all disk descriptions.
+//
+
+typedef struct _DISK_REGISTRY {
+
+ USHORT NumberOfDisks;
+ USHORT ReservedShort;
+
+ //
+ // An array for NumberOfDisks.
+ //
+
+ DISK_DESCRIPTION Disks[1];
+
+} DISK_REGISTRY, *PDISK_REGISTRY;
+#include "poppack.h"
+
+//
+// Function prototypes.
+//
+
+
+//
+// Set the current registry information.
+//
+
+NTSTATUS
+DiskRegistrySet(
+ IN PDISK_REGISTRY Buffer
+ );
+
+
+//
+// Add a single disk to the registry. This disk is not a part of
+// a Fault Tolerance volume.
+//
+
+NTSTATUS
+DiskRegistryAddNewDisk(
+ IN PDISK_DESCRIPTION Buffer
+ );
+
+//
+// Get the current registry information.
+// A Buffer address == NULL indicates that the caller only wants.
+// to know the size of the registry information.
+//
+
+NTSTATUS
+DiskRegistryGet(
+ OUT PDISK_REGISTRY Buffer,
+ OUT PULONG LengthReturned
+ );
+
+//
+// Determine if FT is installed and currently active in the system.
+//
+
+BOOLEAN
+FtInstalled(
+ );
+
+//
+// Cause an FT set to be initialized at the earliest possible moment.
+//
+
+VOID
+DiskRegistryInitializeSet(
+ IN USHORT FtType,
+ IN USHORT FtGroup
+ );
+
+//
+// Cause an FT set member to be regenerated at the earliest possible moment.
+//
+
+VOID
+DiskRegistryRegenerateSet(
+ IN USHORT FtType,
+ IN USHORT FtGroup,
+ IN USHORT FtMember
+ );
+
+//
+// Enable the FT driver.
+//
+
+BOOLEAN
+DiskRegistryEnableFt();
+
+//
+// Disable the FT driver.
+//
+
+VOID
+DiskRegistryDisableFt();
+
+//
+// Determine if the existing FT registry information requires the FT driver.
+//
+
+BOOLEAN
+DiskRegistryRequiresFt();
+
+//
+// Update drive letter assignment.
+//
+
+BOOLEAN
+DiskRegistryAssignDriveLetter(
+ ULONG Signature,
+ LARGE_INTEGER StartingOffset,
+ LARGE_INTEGER Length,
+ UCHAR DriveLetter
+ );
+
+//
+// Determine if DoubleSpace support is set to automount double space
+// volumes on removable media.
+//
+
+BOOLEAN
+DiskRegistryAutomountCurrentState(
+ );
+
+//
+// Set the automount state for double space volumes on removable media.
+//
+
+NTSTATUS
+DiskRegistryDblSpaceRemovable(
+ IN BOOLEAN Automount
+ );
+
+//
+// Set the drive letter for space mount information in the registry.
+//
+
+NTSTATUS
+DiskRegistryAssignDblSpaceLetter(
+ IN PWSTR CvfName,
+ IN WCHAR DriveLetter
+ );
+
+//
+// Set up the registry information for CdRom drive letters.
+//
+
+NTSTATUS
+DiskRegistryAssignCdRomLetter(
+ IN PWSTR CdromName,
+ IN WCHAR DriveLetter
+ );
+
+#endif // _NTDSKREG_
+
diff --git a/public/sdk/inc/ntelfapi.h b/public/sdk/inc/ntelfapi.h
new file mode 100644
index 000000000..3cb31c0c5
--- /dev/null
+++ b/public/sdk/inc/ntelfapi.h
@@ -0,0 +1,295 @@
+/*++
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ ntelfapi.h
+
+Abstract:
+
+ This file contains the prototypes for the user-level Elf APIs.
+
+Author:
+
+ Rajen Shah (rajens) 30-Jul-1991
+
+Revision History:
+
+--*/
+
+#ifndef _NTELFAPI_
+#define _NTELFAPI_
+
+// begin_winnt
+
+//
+// Defines for the READ flags for Eventlogging
+//
+#define EVENTLOG_SEQUENTIAL_READ 0X0001
+#define EVENTLOG_SEEK_READ 0X0002
+#define EVENTLOG_FORWARDS_READ 0X0004
+#define EVENTLOG_BACKWARDS_READ 0X0008
+
+//
+// The types of events that can be logged.
+//
+#define EVENTLOG_SUCCESS 0X0000
+#define EVENTLOG_ERROR_TYPE 0x0001
+#define EVENTLOG_WARNING_TYPE 0x0002
+#define EVENTLOG_INFORMATION_TYPE 0x0004
+#define EVENTLOG_AUDIT_SUCCESS 0x0008
+#define EVENTLOG_AUDIT_FAILURE 0x0010
+
+//
+// Defines for the WRITE flags used by Auditing for paired events
+// These are not implemented in Product 1
+//
+
+#define EVENTLOG_START_PAIRED_EVENT 0x0001
+#define EVENTLOG_END_PAIRED_EVENT 0x0002
+#define EVENTLOG_END_ALL_PAIRED_EVENTS 0x0004
+#define EVENTLOG_PAIRED_EVENT_ACTIVE 0x0008
+#define EVENTLOG_PAIRED_EVENT_INACTIVE 0x0010
+
+//
+// Structure that defines the header of the Eventlog record. This is the
+// fixed-sized portion before all the variable-length strings, binary
+// data and pad bytes.
+//
+// TimeGenerated is the time it was generated at the client.
+// TimeWritten is the time it was put into the log at the server end.
+//
+
+typedef struct _EVENTLOGRECORD {
+ ULONG Length; // Length of full record
+ ULONG Reserved; // Used by the service
+ ULONG RecordNumber; // Absolute record number
+ ULONG TimeGenerated; // Seconds since 1-1-1970
+ ULONG TimeWritten; // Seconds since 1-1-1970
+ ULONG EventID;
+ USHORT EventType;
+ USHORT NumStrings;
+ USHORT EventCategory;
+ USHORT ReservedFlags; // For use with paired events (auditing)
+ ULONG ClosingRecordNumber; // For use with paired events (auditing)
+ ULONG StringOffset; // Offset from beginning of record
+ ULONG UserSidLength;
+ ULONG UserSidOffset;
+ ULONG DataLength;
+ ULONG DataOffset; // Offset from beginning of record
+ //
+ // Then follow:
+ //
+ // WCHAR SourceName[]
+ // WCHAR Computername[]
+ // SID UserSid
+ // WCHAR Strings[]
+ // BYTE Data[]
+ // CHAR Pad[]
+ // ULONG Length;
+ //
+} EVENTLOGRECORD, *PEVENTLOGRECORD;
+
+// end_winnt
+
+#ifdef UNICODE
+#define ElfClearEventLogFile ElfClearEventLogFileW
+#define ElfBackupEventLogFile ElfBackupEventLogFileW
+#define ElfOpenEventLog ElfOpenEventLogW
+#define ElfRegisterEventSource ElfRegisterEventSourceW
+#define ElfOpenBackupEventLog ElfOpenBackupEventLogW
+#define ElfReadEventLog ElfReadEventLogW
+#define ElfReportEvent ElfReportEventW
+#else
+#define ElfClearEventLogFile ElfClearEventLogFileA
+#define ElfBackupEventLogFile ElfBackupEventLogFileA
+#define ElfOpenEventLog ElfOpenEventLogA
+#define ElfRegisterEventSource ElfRegisterEventSourceA
+#define ElfOpenBackupEventLog ElfOpenBackupEventLogA
+#define ElfReadEventLog ElfReadEventLogA
+#define ElfReportEvent ElfReportEventA
+#endif // !UNICODE
+
+//
+// Handles are RPC context handles. Note that a Context Handle is
+// always a pointer type unlike regular handles.
+//
+
+//
+// Prototypes for the APIs
+//
+
+NTSTATUS
+NTAPI
+ElfClearEventLogFileW (
+ IN HANDLE LogHandle,
+ IN PUNICODE_STRING BackupFileName
+ );
+
+NTSTATUS
+NTAPI
+ElfClearEventLogFileA (
+ IN HANDLE LogHandle,
+ IN PSTRING BackupFileName
+ );
+
+NTSTATUS
+NTAPI
+ElfBackupEventLogFileW (
+ IN HANDLE LogHandle,
+ IN PUNICODE_STRING BackupFileName
+ );
+
+NTSTATUS
+NTAPI
+ElfBackupEventLogFileA (
+ IN HANDLE LogHandle,
+ IN PSTRING BackupFileName
+ );
+
+NTSTATUS
+NTAPI
+ElfCloseEventLog (
+ IN HANDLE LogHandle
+ );
+
+NTSTATUS
+NTAPI
+ElfDeregisterEventSource (
+ IN HANDLE LogHandle
+ );
+
+NTSTATUS
+NTAPI
+ElfNumberOfRecords (
+ IN HANDLE LogHandle,
+ OUT PULONG NumberOfRecords
+ );
+
+NTSTATUS
+NTAPI
+ElfOldestRecord (
+ IN HANDLE LogHandle,
+ OUT PULONG OldestRecord
+ );
+
+
+NTSTATUS
+NTAPI
+ElfChangeNotify (
+ IN HANDLE LogHandle,
+ IN HANDLE Event
+ );
+
+
+NTSTATUS
+NTAPI
+ElfOpenEventLogW (
+ IN PUNICODE_STRING UNCServerName,
+ IN PUNICODE_STRING SourceName,
+ OUT PHANDLE LogHandle
+ );
+
+NTSTATUS
+NTAPI
+ElfRegisterEventSourceW (
+ IN PUNICODE_STRING UNCServerName,
+ IN PUNICODE_STRING SourceName,
+ OUT PHANDLE LogHandle
+ );
+
+NTSTATUS
+NTAPI
+ElfOpenBackupEventLogW (
+ IN PUNICODE_STRING UNCServerName,
+ IN PUNICODE_STRING FileName,
+ OUT PHANDLE LogHandle
+ );
+
+NTSTATUS
+NTAPI
+ElfOpenEventLogA (
+ IN PSTRING UNCServerName,
+ IN PSTRING SourceName,
+ OUT PHANDLE LogHandle
+ );
+
+NTSTATUS
+NTAPI
+ElfRegisterEventSourceA (
+ IN PSTRING UNCServerName,
+ IN PSTRING SourceName,
+ OUT PHANDLE LogHandle
+ );
+
+NTSTATUS
+NTAPI
+ElfOpenBackupEventLogA (
+ IN PSTRING UNCServerName,
+ IN PSTRING FileName,
+ OUT PHANDLE LogHandle
+ );
+
+
+NTSTATUS
+NTAPI
+ElfReadEventLogW (
+ IN HANDLE LogHandle,
+ IN ULONG ReadFlags,
+ IN ULONG RecordNumber,
+ OUT PVOID Buffer,
+ IN ULONG NumberOfBytesToRead,
+ OUT PULONG NumberOfBytesRead,
+ OUT PULONG MinNumberOfBytesNeeded
+ );
+
+
+NTSTATUS
+NTAPI
+ElfReadEventLogA (
+ IN HANDLE LogHandle,
+ IN ULONG ReadFlags,
+ IN ULONG RecordNumber,
+ OUT PVOID Buffer,
+ IN ULONG NumberOfBytesToRead,
+ OUT PULONG NumberOfBytesRead,
+ OUT PULONG MinNumberOfBytesNeeded
+ );
+
+
+NTSTATUS
+NTAPI
+ElfReportEventW (
+ IN HANDLE LogHandle,
+ IN USHORT EventType,
+ IN USHORT EventCategory OPTIONAL,
+ IN ULONG EventID,
+ IN PSID UserSid OPTIONAL,
+ IN USHORT NumStrings,
+ IN ULONG DataSize,
+ IN PUNICODE_STRING *Strings OPTIONAL,
+ IN PVOID Data OPTIONAL,
+ IN USHORT Flags,
+ IN OUT PULONG RecordNumber OPTIONAL,
+ IN OUT PULONG TimeWritten OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+ElfReportEventA (
+ IN HANDLE LogHandle,
+ IN USHORT EventType,
+ IN USHORT EventCategory OPTIONAL,
+ IN ULONG EventID,
+ IN PSID UserSid OPTIONAL,
+ IN USHORT NumStrings,
+ IN ULONG DataSize,
+ IN PANSI_STRING *Strings OPTIONAL,
+ IN PVOID Data OPTIONAL,
+ IN USHORT Flags,
+ IN OUT PULONG RecordNumber OPTIONAL,
+ IN OUT PULONG TimeWritten OPTIONAL
+ );
+
+#endif // _NTELFAPI_
diff --git a/public/sdk/inc/ntexapi.h b/public/sdk/inc/ntexapi.h
new file mode 100644
index 000000000..bacbe5ae9
--- /dev/null
+++ b/public/sdk/inc/ntexapi.h
@@ -0,0 +1,1680 @@
+/*++ BUILD Version: 0008 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntexapi.h
+
+Abstract:
+
+ This module is the header file for the all the system services that
+ are contained in the "ex" directory.
+
+Author:
+
+ David N. Cutler (davec) 5-May-1989
+
+Revision History:
+
+--*/
+
+#ifndef _NTEXAPI_
+#define _NTEXAPI_
+
+
+//
+// Delay thread execution.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDelayExecution (
+ IN BOOLEAN Alertable,
+ IN PLARGE_INTEGER DelayInterval
+ );
+
+//
+// Query and set system environment variables.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQuerySystemEnvironmentValue (
+ IN PUNICODE_STRING VariableName,
+ OUT PWSTR VariableValue,
+ IN USHORT ValueLength,
+ OUT PUSHORT ReturnLength OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetSystemEnvironmentValue (
+ IN PUNICODE_STRING VariableName,
+ IN PUNICODE_STRING VariableValue
+ );
+
+// begin_ntifs
+//
+// Event Specific Access Rights.
+//
+
+#define EVENT_QUERY_STATE 0x0001
+#define EVENT_MODIFY_STATE 0x0002 // winnt
+#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) // winnt
+
+// end_ntifs
+
+//
+// Event Information Classes.
+//
+
+typedef enum _EVENT_INFORMATION_CLASS {
+ EventBasicInformation
+ } EVENT_INFORMATION_CLASS;
+
+//
+// Event Information Structures.
+//
+
+typedef struct _EVENT_BASIC_INFORMATION {
+ EVENT_TYPE EventType;
+ LONG EventState;
+} EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
+
+//
+// Event object function definitions.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtClearEvent (
+ IN HANDLE EventHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateEvent (
+ OUT PHANDLE EventHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN EVENT_TYPE EventType,
+ IN BOOLEAN InitialState
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenEvent (
+ OUT PHANDLE EventHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtPulseEvent (
+ IN HANDLE EventHandle,
+ OUT PLONG PreviousState OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryEvent (
+ IN HANDLE EventHandle,
+ IN EVENT_INFORMATION_CLASS EventInformationClass,
+ OUT PVOID EventInformation,
+ IN ULONG EventInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtResetEvent (
+ IN HANDLE EventHandle,
+ OUT PLONG PreviousState OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetEvent (
+ IN HANDLE EventHandle,
+ OUT PLONG PreviousState OPTIONAL
+ );
+
+
+//
+// Event Specific Access Rights.
+//
+
+#define EVENT_PAIR_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE)
+
+
+//
+// Event pair object function definitions.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateEventPair (
+ OUT PHANDLE EventPairHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenEventPair(
+ OUT PHANDLE EventPairHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtWaitLowEventPair(
+ IN HANDLE EventPairHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtWaitHighEventPair(
+ IN HANDLE EventPairHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetLowWaitHighEventPair(
+ IN HANDLE EventPairHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetHighWaitLowEventPair(
+ IN HANDLE EventPairHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetLowWaitHighThread(
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetHighWaitLowThread(
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetLowEventPair(
+ IN HANDLE EventPairHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetHighEventPair(
+ IN HANDLE EventPairHandle
+ );
+
+
+//
+// Mutant Specific Access Rights.
+//
+
+// begin_winnt
+#define MUTANT_QUERY_STATE 0x0001
+
+#define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\
+ MUTANT_QUERY_STATE)
+// end_winnt
+
+//
+// Mutant Information Classes.
+//
+
+typedef enum _MUTANT_INFORMATION_CLASS {
+ MutantBasicInformation
+ } MUTANT_INFORMATION_CLASS;
+
+//
+// Mutant Information Structures.
+//
+
+typedef struct _MUTANT_BASIC_INFORMATION {
+ LONG CurrentCount;
+ BOOLEAN OwnedByCaller;
+ BOOLEAN AbandonedState;
+} MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
+
+//
+// Mutant object function definitions.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateMutant (
+ IN PHANDLE MutantHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN BOOLEAN InitialOwner
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenMutant (
+ OUT PHANDLE MutantHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryMutant (
+ IN HANDLE MutantHandle,
+ IN MUTANT_INFORMATION_CLASS MutantInformationClass,
+ OUT PVOID MutantInformation,
+ IN ULONG MutantInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReleaseMutant (
+ IN HANDLE MutantHandle,
+ OUT PLONG PreviousCount OPTIONAL
+ );
+
+//
+// Semaphore Specific Access Rights.
+//
+
+#define SEMAPHORE_QUERY_STATE 0x0001
+#define SEMAPHORE_MODIFY_STATE 0x0002 // winnt
+
+#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) // winnt
+
+
+//
+// Semaphore Information Classes.
+//
+
+typedef enum _SEMAPHORE_INFORMATION_CLASS {
+ SemaphoreBasicInformation
+ } SEMAPHORE_INFORMATION_CLASS;
+
+//
+// Semaphore Information Structures.
+//
+
+typedef struct _SEMAPHORE_BASIC_INFORMATION {
+ LONG CurrentCount;
+ LONG MaximumCount;
+} SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
+
+//
+// Semaphore object function definitions.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateSemaphore (
+ OUT PHANDLE SemaphoreHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN LONG InitialCount,
+ IN LONG MaximumCount
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenSemaphore(
+ OUT PHANDLE SemaphoreHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQuerySemaphore (
+ IN HANDLE SemaphoreHandle,
+ IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
+ OUT PVOID SemaphoreInformation,
+ IN ULONG SemaphoreInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReleaseSemaphore(
+ IN HANDLE SemaphoreHandle,
+ IN LONG ReleaseCount,
+ OUT PLONG PreviousCount OPTIONAL
+ );
+
+
+//
+// Timer Specific Access Rights.
+//
+
+#define TIMER_QUERY_STATE 0x0001
+#define TIMER_MODIFY_STATE 0x0002
+
+#define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\
+ TIMER_QUERY_STATE|TIMER_MODIFY_STATE)
+
+
+//
+// Timer Information Classes.
+//
+
+typedef enum _TIMER_INFORMATION_CLASS {
+ TimerBasicInformation
+ } TIMER_INFORMATION_CLASS;
+
+//
+// Timer Information Structures.
+//
+
+typedef struct _TIMER_BASIC_INFORMATION {
+ LARGE_INTEGER RemainingTime;
+ BOOLEAN TimerState;
+} TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
+
+//
+// Timer APC routine definition.
+//
+
+typedef
+VOID
+(*PTIMER_APC_ROUTINE) (
+ IN PVOID TimerContext,
+ IN ULONG TimerLowValue,
+ IN LONG TimerHighValue
+ );
+
+//
+// Timer object function definitions.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateTimer (
+ OUT PHANDLE TimerHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN TIMER_TYPE TimerType
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenTimer (
+ OUT PHANDLE TimerHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCancelTimer (
+ IN HANDLE TimerHandle,
+ OUT PBOOLEAN CurrentState OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryTimer (
+ IN HANDLE TimerHandle,
+ IN TIMER_INFORMATION_CLASS TimerInformationClass,
+ OUT PVOID TimerInformation,
+ IN ULONG TimerInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetTimer (
+ IN HANDLE TimerHandle,
+ IN PLARGE_INTEGER DueTime,
+ IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL,
+ IN PVOID TimerContext OPTIONAL,
+ IN BOOLEAN ResumeTimer,
+ IN LONG Period OPTIONAL,
+ OUT PBOOLEAN PreviousState OPTIONAL
+ );
+
+//
+// System Time and Timer function definitions
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQuerySystemTime (
+ OUT PLARGE_INTEGER SystemTime
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetSystemTime (
+ IN PLARGE_INTEGER SystemTime,
+ OUT PLARGE_INTEGER PreviousTime OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryTimerResolution (
+ OUT PULONG MaximumTime,
+ OUT PULONG MinimumTime,
+ OUT PULONG CurrentTime
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetTimerResolution (
+ IN ULONG DesiredTime,
+ IN BOOLEAN SetResolution,
+ OUT PULONG ActualTime
+ );
+
+//
+// Locally Unique Identifier (LUID) allocation
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAllocateLocallyUniqueId(
+ OUT PLUID Luid
+ );
+
+
+//
+// Universally Unique Identifier (UUID) time allocation
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAllocateUuids(
+ OUT PULARGE_INTEGER Time,
+ OUT PULONG Range,
+ OUT PULONG Sequence
+ );
+
+
+//
+// Profile Object Definitions
+//
+
+#define PROFILE_CONTROL 0x0001
+#define PROFILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | PROFILE_CONTROL)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateProfile (
+ OUT PHANDLE ProfileHandle,
+ IN HANDLE Process OPTIONAL,
+ IN PVOID ProfileBase,
+ IN ULONG ProfileSize,
+ IN ULONG BucketSize,
+ IN PULONG Buffer,
+ IN ULONG BufferSize,
+ IN KPROFILE_SOURCE ProfileSource,
+ IN KAFFINITY Affinity
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtStartProfile (
+ IN HANDLE ProfileHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtStopProfile (
+ IN HANDLE ProfileHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetIntervalProfile (
+ IN ULONG Interval,
+ IN KPROFILE_SOURCE Source
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryIntervalProfile (
+ IN KPROFILE_SOURCE ProfileSource,
+ OUT PULONG Interval
+ );
+
+
+//
+// Performance Counter Definitions
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryPerformanceCounter (
+ OUT PLARGE_INTEGER PerformanceCounter,
+ OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL
+ );
+
+
+//
+// Nt Api Profile Definitions
+//
+
+//
+// Nt Api Profiling data structure
+//
+
+typedef struct _NAPDATA {
+ ULONG NapLock;
+ ULONG Calls;
+ ULONG TimingErrors;
+ LARGE_INTEGER TotalTime;
+ LARGE_INTEGER FirstTime;
+ LARGE_INTEGER MaxTime;
+ LARGE_INTEGER MinTime;
+} NAPDATA, *PNAPDATA;
+
+NTSTATUS
+NapClearData (
+ VOID
+ );
+
+NTSTATUS
+NapRetrieveData (
+ OUT NAPDATA *NapApiData,
+ OUT PCHAR **NapApiNames,
+ OUT PLARGE_INTEGER *NapCounterFrequency
+ );
+
+NTSTATUS
+NapGetApiCount (
+ OUT PULONG NapApiCount
+ );
+
+NTSTATUS
+NapPause (
+ VOID
+ );
+
+NTSTATUS
+NapResume (
+ VOID
+ );
+
+
+//
+// System Information Classes.
+//
+
+typedef enum _SYSTEM_INFORMATION_CLASS {
+ SystemBasicInformation,
+ SystemProcessorInformation, // obsolete...delete
+ SystemPerformanceInformation,
+ SystemTimeOfDayInformation,
+ SystemPathInformation,
+ SystemProcessInformation,
+ SystemCallCountInformation,
+ SystemDeviceInformation,
+ SystemProcessorPerformanceInformation,
+ SystemFlagsInformation,
+ SystemCallTimeInformation,
+ SystemModuleInformation,
+ SystemLocksInformation,
+ SystemStackTraceInformation,
+ SystemPagedPoolInformation,
+ SystemNonPagedPoolInformation,
+ SystemHandleInformation,
+ SystemObjectInformation,
+ SystemPageFileInformation,
+ SystemVdmInstemulInformation,
+ SystemVdmBopInformation,
+ SystemFileCacheInformation,
+ SystemPoolTagInformation,
+ SystemInterruptInformation,
+ SystemDpcBehaviorInformation,
+ SystemFullMemoryInformation,
+ SystemLoadGdiDriverInformation,
+ SystemUnloadGdiDriverInformation,
+ SystemTimeAdjustmentInformation,
+ SystemSummaryMemoryInformation,
+ SystemNextEventIdInformation,
+ SystemEventIdsInformation,
+ SystemCrashDumpInformation,
+ SystemExceptionInformation,
+ SystemCrashDumpStateInformation,
+ SystemKernelDebuggerInformation,
+ SystemContextSwitchInformation,
+ SystemRegistryQuotaInformation,
+ SystemExtendServiceTableInformation,
+ SystemPrioritySeperation,
+ SystemPlugPlayBusInformation,
+ SystemDockInformation,
+ SystemPowerInformation,
+ SystemProcessorSpeedInformation,
+ SystemCurrentTimeZoneInformation,
+ SystemLookasideInformation
+} SYSTEM_INFORMATION_CLASS;
+
+//
+// System Information Structures.
+//
+
+// begin_winnt
+#define TIME_ZONE_ID_UNKNOWN 0
+#define TIME_ZONE_ID_STANDARD 1
+#define TIME_ZONE_ID_DAYLIGHT 2
+// end_winnt
+
+typedef struct _SYSTEM_VDM_INSTEMUL_INFO {
+ ULONG SegmentNotPresent ;
+ ULONG VdmOpcode0F ;
+ ULONG OpcodeESPrefix ;
+ ULONG OpcodeCSPrefix ;
+ ULONG OpcodeSSPrefix ;
+ ULONG OpcodeDSPrefix ;
+ ULONG OpcodeFSPrefix ;
+ ULONG OpcodeGSPrefix ;
+ ULONG OpcodeOPER32Prefix;
+ ULONG OpcodeADDR32Prefix;
+ ULONG OpcodeINSB ;
+ ULONG OpcodeINSW ;
+ ULONG OpcodeOUTSB ;
+ ULONG OpcodeOUTSW ;
+ ULONG OpcodePUSHF ;
+ ULONG OpcodePOPF ;
+ ULONG OpcodeINTnn ;
+ ULONG OpcodeINTO ;
+ ULONG OpcodeIRET ;
+ ULONG OpcodeINBimm ;
+ ULONG OpcodeINWimm ;
+ ULONG OpcodeOUTBimm ;
+ ULONG OpcodeOUTWimm ;
+ ULONG OpcodeINB ;
+ ULONG OpcodeINW ;
+ ULONG OpcodeOUTB ;
+ ULONG OpcodeOUTW ;
+ ULONG OpcodeLOCKPrefix ;
+ ULONG OpcodeREPNEPrefix ;
+ ULONG OpcodeREPPrefix ;
+ ULONG OpcodeHLT ;
+ ULONG OpcodeCLI ;
+ ULONG OpcodeSTI ;
+ ULONG BopCount ;
+} SYSTEM_VDM_INSTEMUL_INFO, *PSYSTEM_VDM_INSTEMUL_INFO;
+
+typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
+ LARGE_INTEGER BootTime;
+ LARGE_INTEGER CurrentTime;
+ LARGE_INTEGER TimeZoneBias;
+ ULONG TimeZoneId;
+ ULONG Reserved;
+} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION;
+
+typedef struct _SYSTEM_BASIC_INFORMATION {
+ ULONG Reserved;
+ ULONG TimerResolution;
+ ULONG PageSize;
+ ULONG NumberOfPhysicalPages;
+ ULONG LowestPhysicalPageNumber;
+ ULONG HighestPhysicalPageNumber;
+ ULONG AllocationGranularity;
+ ULONG MinimumUserModeAddress;
+ ULONG MaximumUserModeAddress;
+ KAFFINITY ActiveProcessorsAffinityMask;
+ CCHAR NumberOfProcessors;
+} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
+
+typedef struct _SYSTEM_PROCESSOR_INFORMATION {
+ USHORT ProcessorArchitecture;
+ USHORT ProcessorLevel;
+ USHORT ProcessorRevision;
+ USHORT Reserved;
+ ULONG ProcessorFeatureBits;
+} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
+
+typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
+ LARGE_INTEGER IdleTime;
+ LARGE_INTEGER KernelTime;
+ LARGE_INTEGER UserTime;
+ LARGE_INTEGER DpcTime; // DEVL only
+ LARGE_INTEGER InterruptTime; // DEVL only
+ ULONG InterruptCount;
+} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
+
+typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION {
+ ULONG TimeAdjustment;
+ ULONG TimeIncrement;
+ BOOLEAN Enable;
+} SYSTEM_QUERY_TIME_ADJUST_INFORMATION, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION;
+
+typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION {
+ ULONG TimeAdjustment;
+ BOOLEAN Enable;
+} SYSTEM_SET_TIME_ADJUST_INFORMATION, *PSYSTEM_SET_TIME_ADJUST_INFORMATION;
+
+typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
+ LARGE_INTEGER IdleProcessTime;
+ LARGE_INTEGER IoReadTransferCount;
+ LARGE_INTEGER IoWriteTransferCount;
+ LARGE_INTEGER IoOtherTransferCount;
+ ULONG IoReadOperationCount;
+ ULONG IoWriteOperationCount;
+ ULONG IoOtherOperationCount;
+ ULONG AvailablePages;
+ ULONG CommittedPages;
+ ULONG CommitLimit;
+ ULONG PeakCommitment;
+ ULONG PageFaultCount;
+ ULONG CopyOnWriteCount;
+ ULONG TransitionCount;
+ ULONG CacheTransitionCount;
+ ULONG DemandZeroCount;
+ ULONG PageReadCount;
+ ULONG PageReadIoCount;
+ ULONG CacheReadCount;
+ ULONG CacheIoCount;
+ ULONG DirtyPagesWriteCount;
+ ULONG DirtyWriteIoCount;
+ ULONG MappedPagesWriteCount;
+ ULONG MappedWriteIoCount;
+ ULONG PagedPoolPages;
+ ULONG NonPagedPoolPages;
+ ULONG PagedPoolAllocs;
+ ULONG PagedPoolFrees;
+ ULONG NonPagedPoolAllocs;
+ ULONG NonPagedPoolFrees;
+ ULONG FreeSystemPtes;
+ ULONG ResidentSystemCodePage;
+ ULONG TotalSystemDriverPages;
+ ULONG TotalSystemCodePages;
+ ULONG NonPagedPoolLookasideHits;
+ ULONG PagedPoolLookasideHits;
+ ULONG Spare3Count;
+ ULONG ResidentSystemCachePage;
+ ULONG ResidentPagedPoolPage;
+ ULONG ResidentSystemDriverPage;
+ ULONG CcFastReadNoWait;
+ ULONG CcFastReadWait;
+ ULONG CcFastReadResourceMiss;
+ ULONG CcFastReadNotPossible;
+ ULONG CcFastMdlReadNoWait;
+ ULONG CcFastMdlReadWait;
+ ULONG CcFastMdlReadResourceMiss;
+ ULONG CcFastMdlReadNotPossible;
+ ULONG CcMapDataNoWait;
+ ULONG CcMapDataWait;
+ ULONG CcMapDataNoWaitMiss;
+ ULONG CcMapDataWaitMiss;
+ ULONG CcPinMappedDataCount;
+ ULONG CcPinReadNoWait;
+ ULONG CcPinReadWait;
+ ULONG CcPinReadNoWaitMiss;
+ ULONG CcPinReadWaitMiss;
+ ULONG CcCopyReadNoWait;
+ ULONG CcCopyReadWait;
+ ULONG CcCopyReadNoWaitMiss;
+ ULONG CcCopyReadWaitMiss;
+ ULONG CcMdlReadNoWait;
+ ULONG CcMdlReadWait;
+ ULONG CcMdlReadNoWaitMiss;
+ ULONG CcMdlReadWaitMiss;
+ ULONG CcReadAheadIos;
+ ULONG CcLazyWriteIos;
+ ULONG CcLazyWritePages;
+ ULONG CcDataFlushes;
+ ULONG CcDataPages;
+ ULONG ContextSwitches;
+ ULONG FirstLevelTbFills;
+ ULONG SecondLevelTbFills;
+ ULONG SystemCalls;
+} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
+
+typedef struct _SYSTEM_PROCESS_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG NumberOfThreads;
+ LARGE_INTEGER SpareLi1;
+ LARGE_INTEGER SpareLi2;
+ LARGE_INTEGER SpareLi3;
+ LARGE_INTEGER CreateTime;
+ LARGE_INTEGER UserTime;
+ LARGE_INTEGER KernelTime;
+ UNICODE_STRING ImageName;
+ KPRIORITY BasePriority;
+ HANDLE UniqueProcessId;
+ HANDLE InheritedFromUniqueProcessId;
+ ULONG HandleCount;
+ ULONG SpareUl2;
+ ULONG SpareUl3;
+ ULONG PeakVirtualSize;
+ ULONG VirtualSize;
+ ULONG PageFaultCount;
+ ULONG PeakWorkingSetSize;
+ ULONG WorkingSetSize;
+ ULONG QuotaPeakPagedPoolUsage;
+ ULONG QuotaPagedPoolUsage;
+ ULONG QuotaPeakNonPagedPoolUsage;
+ ULONG QuotaNonPagedPoolUsage;
+ ULONG PagefileUsage;
+ ULONG PeakPagefileUsage;
+ ULONG PrivatePageCount;
+} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
+
+typedef struct _SYSTEM_THREAD_INFORMATION {
+ LARGE_INTEGER KernelTime;
+ LARGE_INTEGER UserTime;
+ LARGE_INTEGER CreateTime;
+ ULONG WaitTime;
+ PVOID StartAddress;
+ CLIENT_ID ClientId;
+ KPRIORITY Priority;
+ LONG BasePriority;
+ ULONG ContextSwitches;
+ ULONG ThreadState;
+ ULONG WaitReason;
+} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
+
+typedef struct _SYSTEM_MEMORY_INFO {
+ PUCHAR StringOffset;
+ USHORT ValidCount;
+ USHORT TransitionCount;
+ USHORT ModifiedCount;
+ USHORT PageTableCount;
+} SYSTEM_MEMORY_INFO, *PSYSTEM_MEMORY_INFO;
+
+typedef struct _SYSTEM_MEMORY_INFORMATION {
+ ULONG InfoSize;
+ ULONG StringStart;
+ SYSTEM_MEMORY_INFO Memory[1];
+} SYSTEM_MEMORY_INFORMATION, *PSYSTEM_MEMORY_INFORMATION;
+
+typedef struct _SYSTEM_CALL_COUNT_INFORMATION {
+ ULONG Length;
+ ULONG NumberOfTables;
+ //ULONG NumberOfEntries[NumberOfTables];
+ //ULONG CallCounts[NumberOfTables][NumberOfEntries];
+} SYSTEM_CALL_COUNT_INFORMATION, *PSYSTEM_CALL_COUNT_INFORMATION;
+
+typedef struct _SYSTEM_DEVICE_INFORMATION {
+ ULONG NumberOfDisks;
+ ULONG NumberOfFloppies;
+ ULONG NumberOfCdRoms;
+ ULONG NumberOfTapes;
+ ULONG NumberOfSerialPorts;
+ ULONG NumberOfParallelPorts;
+} SYSTEM_DEVICE_INFORMATION, *PSYSTEM_DEVICE_INFORMATION;
+
+typedef struct _SYSTEM_CRASH_DUMP_INFORMATION {
+ HANDLE CrashDumpSection;
+} SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION;
+
+typedef struct _SYSTEM_EXCEPTION_INFORMATION {
+ ULONG AlignmentFixupCount;
+ ULONG ExceptionDispatchCount;
+ ULONG FloatingEmulationCount;
+ ULONG ByteWordEmulationCount;
+} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
+
+typedef struct _SYSTEM_CRASH_STATE_INFORMATION {
+ ULONG ValidCrashDump;
+} SYSTEM_CRASH_STATE_INFORMATION, *PSYSTEM_CRASH_STATE_INFORMATION;
+
+typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION {
+ BOOLEAN KernelDebuggerEnabled;
+ BOOLEAN KernelDebuggerNotPresent;
+} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION;
+
+typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
+ ULONG RegistryQuotaAllowed;
+ ULONG RegistryQuotaUsed;
+ ULONG PagedPoolSize;
+} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
+
+typedef struct _SYSTEM_GDI_DRIVER_INFORMATION {
+ UNICODE_STRING DriverName;
+ PVOID ImageAddress;
+ PVOID SectionPointer;
+ PVOID EntryPoint;
+ PIMAGE_EXPORT_DIRECTORY ExportSectionPointer;
+} SYSTEM_GDI_DRIVER_INFORMATION, *PSYSTEM_GDI_DRIVER_INFORMATION;
+
+// begin_ntddk begin_ntifs begin_nthal
+
+typedef enum _SYSTEM_DOCK_STATE {
+ SystemDockStateUnknown,
+ SystemUndocked,
+ SystemDocked
+} SYSTEM_DOCK_STATE, *PSYSTEM_DOCK_STATE;
+
+// end_ntddk end_ntifs end_nthal
+
+#define MAX_BUS_NAME 24
+
+typedef enum _PLUGPLAY_BUS_CLASS {
+ SystemBus,
+ PlugPlayVirtualBus,
+ MaxPlugPlayBusClass
+} PLUGPLAY_BUS_CLASS, *PPLUGPLAY_BUS_CLASS;
+
+typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE {
+ Root,
+ MaxPlugPlayVirtualBusType
+} PLUGPLAY_VIRTUAL_BUS_TYPE, *PPLUGPLAY_VIRTUAL_BUS_TYPE;
+
+typedef struct _PLUGPLAY_BUS_TYPE{
+ PLUGPLAY_BUS_CLASS BusClass;
+ union {
+ INTERFACE_TYPE SystemBusType;
+ PLUGPLAY_VIRTUAL_BUS_TYPE PlugPlayVirtualBusType;
+ };
+} PLUGPLAY_BUS_TYPE, *PPLUGPLAY_BUS_TYPE;
+
+typedef struct _PLUGPLAY_BUS_INSTANCE {
+ PLUGPLAY_BUS_TYPE BusType;
+ ULONG BusNumber;
+ WCHAR BusName[MAX_BUS_NAME];
+} PLUGPLAY_BUS_INSTANCE, *PPLUGPLAY_BUS_INSTANCE;
+
+typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION {
+ ULONG BusCount;
+ PLUGPLAY_BUS_INSTANCE BusInstance[1];
+} SYSTEM_PLUGPLAY_BUS_INFORMATION, *PSYSTEM_PLUGPLAY_BUS_INFORMATION;
+
+typedef struct _SYSTEM_DOCK_INFORMATION {
+ SYSTEM_DOCK_STATE DockState;
+ INTERFACE_TYPE DeviceBusType;
+ ULONG DeviceBusNumber;
+ ULONG SlotNumber;
+} SYSTEM_DOCK_INFORMATION, *PSYSTEM_DOCK_INFORMATION;
+
+#if DEVL
+
+typedef struct _SYSTEM_FLAGS_INFORMATION {
+ ULONG Flags;
+} SYSTEM_FLAGS_INFORMATION, *PSYSTEM_FLAGS_INFORMATION;
+
+typedef struct _SYSTEM_CALL_TIME_INFORMATION {
+ ULONG Length;
+ ULONG TotalCalls;
+ LARGE_INTEGER TimeOfCalls[1];
+} SYSTEM_CALL_TIME_INFORMATION, *PSYSTEM_CALL_TIME_INFORMATION;
+
+typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO {
+ USHORT UniqueProcessId;
+ USHORT CreatorBackTraceIndex;
+ UCHAR ObjectTypeIndex;
+ UCHAR HandleAttributes;
+ USHORT HandleValue;
+ PVOID Object;
+ ULONG GrantedAccess;
+} SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO;
+
+typedef struct _SYSTEM_HANDLE_INFORMATION {
+ ULONG NumberOfHandles;
+ SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[ 1 ];
+} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
+
+typedef struct _SYSTEM_OBJECTTYPE_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG NumberOfObjects;
+ ULONG NumberOfHandles;
+ ULONG TypeIndex;
+ ULONG InvalidAttributes;
+ GENERIC_MAPPING GenericMapping;
+ ULONG ValidAccessMask;
+ ULONG PoolType;
+ BOOLEAN SecurityRequired;
+ BOOLEAN WaitableObject;
+ UNICODE_STRING TypeName;
+} SYSTEM_OBJECTTYPE_INFORMATION, *PSYSTEM_OBJECTTYPE_INFORMATION;
+
+typedef struct _SYSTEM_OBJECT_INFORMATION {
+ ULONG NextEntryOffset;
+ PVOID Object;
+ HANDLE CreatorUniqueProcess;
+ USHORT CreatorBackTraceIndex;
+ USHORT Flags;
+ LONG PointerCount;
+ LONG HandleCount;
+ ULONG PagedPoolCharge;
+ ULONG NonPagedPoolCharge;
+ HANDLE ExclusiveProcessId;
+ PVOID SecurityDescriptor;
+ OBJECT_NAME_INFORMATION NameInfo;
+} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
+
+typedef struct _SYSTEM_PAGEFILE_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG TotalSize;
+ ULONG TotalInUse;
+ ULONG PeakUsage;
+ UNICODE_STRING PageFileName;
+} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
+
+typedef struct _SYSTEM_FILECACHE_INFORMATION {
+ ULONG CurrentSize;
+ ULONG PeakSize;
+ ULONG PageFaultCount;
+ ULONG MinimumWorkingSet;
+ ULONG MaximumWorkingSet;
+ ULONG spare[4];
+} SYSTEM_FILECACHE_INFORMATION, *PSYSTEM_FILECACHE_INFORMATION;
+
+typedef struct _SYSTEM_POOL_ENTRY {
+ BOOLEAN Allocated;
+ BOOLEAN Spare0;
+ USHORT AllocatorBackTraceIndex;
+ ULONG Size;
+ union {
+ UCHAR Tag[4];
+ ULONG TagUlong;
+ PVOID ProcessChargedQuota;
+ };
+} SYSTEM_POOL_ENTRY, *PSYSTEM_POOL_ENTRY;
+
+typedef struct _SYSTEM_POOL_INFORMATION {
+ ULONG TotalSize;
+ PVOID FirstEntry;
+ USHORT EntryOverhead;
+ BOOLEAN PoolTagPresent;
+ BOOLEAN Spare0;
+ ULONG NumberOfEntries;
+ SYSTEM_POOL_ENTRY Entries[1];
+} SYSTEM_POOL_INFORMATION, *PSYSTEM_POOL_INFORMATION;
+
+typedef struct _SYSTEM_POOLTAG {
+ union {
+ UCHAR Tag[4];
+ ULONG TagUlong;
+ };
+ ULONG PagedAllocs;
+ ULONG PagedFrees;
+ ULONG PagedUsed;
+ ULONG NonPagedAllocs;
+ ULONG NonPagedFrees;
+ ULONG NonPagedUsed;
+} SYSTEM_POOLTAG, *PSYSTEM_POOLTAG;
+
+typedef struct _SYSTEM_POOLTAG_INFORMATION {
+ ULONG Count;
+ SYSTEM_POOLTAG TagInfo[1];
+} SYSTEM_POOLTAG_INFORMATION, *PSYSTEM_POOLTAG_INFORMATION;
+
+typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION {
+ ULONG ContextSwitches;
+ ULONG FindAny;
+ ULONG FindLast;
+ ULONG FindIdeal;
+ ULONG IdleAny;
+ ULONG IdleCurrent;
+ ULONG IdleLast;
+ ULONG IdleIdeal;
+ ULONG PreemptAny;
+ ULONG PreemptCurrent;
+ ULONG PreemptLast;
+ ULONG SwitchToIdle;
+} SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION;
+
+typedef struct _SYSTEM_INTERRUPT_INFORMATION {
+ ULONG ContextSwitches;
+ ULONG DpcCount;
+ ULONG DpcRate;
+ ULONG TimeIncrement;
+ ULONG DpcBypassCount;
+ ULONG ApcBypassCount;
+} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
+
+typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION {
+ ULONG Spare;
+ ULONG DpcQueueDepth;
+ ULONG MinimumDpcRate;
+ ULONG AdjustDpcThreshold;
+ ULONG IdealDpcRate;
+} SYSTEM_DPC_BEHAVIOR_INFORMATION, *PSYSTEM_DPC_BEHAVIOR_INFORMATION;
+
+#endif // DEVL
+
+typedef struct _SYSTEM_POWER_INFORMATION {
+ BOOLEAN SystemSuspendSupported;
+ BOOLEAN SystemHibernateSupported;
+ BOOLEAN ResumeTimerSupportsSuspend;
+ BOOLEAN ResumeTimerSupportsHibernate;
+ BOOLEAN LidSupported;
+ BOOLEAN TurboSettingSupported;
+ BOOLEAN TurboMode;
+ BOOLEAN SystemAcOrDc;
+ BOOLEAN PowerDownDisabled;
+ LARGE_INTEGER SpindownDrives;
+} SYSTEM_POWER_INFORMATION, *PSYSTEM_POWER_INFORMATION;
+
+typedef struct _SYSTEM_PROCESSOR_SPEED_INFORMATION {
+ ULONG MaximumProcessorSpeed;
+ ULONG CurrentAvailableSpeed;
+ ULONG ConfiguredSpeedLimit;
+ BOOLEAN PowerLimit;
+ BOOLEAN ThermalLimit;
+ BOOLEAN TurboLimit;
+} SYSTEM_PROCESSOR_SPEED_INFORMATION, *PSYSTEM_PROCESSOR_SPEED_INFORMATION;
+
+typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
+ USHORT CurrentDepth;
+ USHORT MaximumDepth;
+ ULONG TotalAllocates;
+ ULONG AllocateMisses;
+ ULONG TotalFrees;
+ ULONG FreeMisses;
+ ULONG Type;
+ ULONG Tag;
+ ULONG Size;
+} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
+
+// begin_winnt
+
+#define PROCESSOR_INTEL_386 386
+#define PROCESSOR_INTEL_486 486
+#define PROCESSOR_INTEL_PENTIUM 586
+#define PROCESSOR_MIPS_R4000 4000
+#define PROCESSOR_ALPHA_21064 21064
+
+#define PROCESSOR_ARCHITECTURE_INTEL 0
+#define PROCESSOR_ARCHITECTURE_MIPS 1
+#define PROCESSOR_ARCHITECTURE_ALPHA 2
+#define PROCESSOR_ARCHITECTURE_PPC 3
+#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
+
+// end_winnt
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQuerySystemInformation (
+ IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+ OUT PVOID SystemInformation,
+ IN ULONG SystemInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetSystemInformation (
+ IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+ IN PVOID SystemInformation,
+ IN ULONG SystemInformationLength
+ );
+
+// begin_ntddk begin_nthal
+
+//
+//
+// Define system event type codes.
+//
+
+typedef enum {
+ SystemEventVirtualKey,
+ SystemEventLidState,
+ SystemEventTimeChanged
+} SYSTEM_EVENT_ID, *PSYSTEM_EVENT_ID;
+
+// end_ntddk end_nthal
+
+//
+// SysDbg APIs are available to user-mode processes via
+// NtSystemDebugControl.
+//
+
+typedef enum _SYSDBG_COMMAND {
+ SysDbgQueryModuleInformation,
+ SysDbgQueryTraceInformation,
+ SysDbgSetTracepoint,
+ SysDbgSetSpecialCall,
+ SysDbgClearSpecialCalls,
+ SysDbgQuerySpecialCalls
+} SYSDBG_COMMAND, *PSYSDBG_COMMAND;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSystemDebugControl (
+ IN SYSDBG_COMMAND Command,
+ IN PVOID InputBuffer,
+ IN ULONG InputBufferLength,
+ OUT PVOID OutputBuffer,
+ IN ULONG OutputBufferLength,
+ OUT PULONG ReturnLength
+ );
+
+typedef enum _HARDERROR_RESPONSE_OPTION {
+ OptionAbortRetryIgnore,
+ OptionOk,
+ OptionOkCancel,
+ OptionRetryCancel,
+ OptionYesNo,
+ OptionYesNoCancel,
+ OptionShutdownSystem
+} HARDERROR_RESPONSE_OPTION;
+
+typedef enum _HARDERROR_RESPONSE {
+ ResponseReturnToCaller,
+ ResponseNotHandled,
+ ResponseAbort,
+ ResponseCancel,
+ ResponseIgnore,
+ ResponseNo,
+ ResponseOk,
+ ResponseRetry,
+ ResponseYes
+} HARDERROR_RESPONSE;
+
+#define MAXIMUM_HARDERROR_PARAMETERS 4
+
+typedef struct _HARDERROR_MSG {
+ PORT_MESSAGE h;
+ NTSTATUS Status;
+ LARGE_INTEGER ErrorTime;
+ ULONG ValidResponseOptions;
+ ULONG Response;
+ ULONG NumberOfParameters;
+ ULONG UnicodeStringParameterMask;
+ ULONG Parameters[MAXIMUM_HARDERROR_PARAMETERS];
+} HARDERROR_MSG, *PHARDERROR_MSG;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtRaiseHardError(
+ IN NTSTATUS ErrorStatus,
+ IN ULONG NumberOfParameters,
+ IN ULONG UnicodeStringParameterMask,
+ IN PULONG Parameters,
+ IN ULONG ValidResponseOptions,
+ OUT PULONG Response
+ );
+
+// begin_ntddk begin_nthal begin_ntifs
+
+//
+// Defined processor features
+//
+
+#define PF_FLOATING_POINT_PRECISION_ERRATA 0 // winnt
+#define PF_FLOATING_POINT_EMULATED 1 // winnt
+#define PF_COMPARE_EXCHANGE_DOUBLE 2 // winnt
+#define PF_MMX_INSTRUCTIONS_AVAILABLE 3 // winnt
+
+// end_ntddk end_nthal end_ntifs
+
+#define PROCESSOR_FEATURE_MAX 64
+
+//
+// Define data shared between kernel and user mode.
+//
+// N.B. User mode has read only access to this data
+//
+
+typedef struct _KUSER_SHARED_DATA {
+
+ //
+ // Current low 32-bit of tick count and tick count multiplier.
+ //
+ // N.B. The tick count is updated each time the clock ticks.
+ //
+
+ volatile ULONG TickCountLow;
+ ULONG TickCountMultiplier;
+
+ //
+ // Current 64-bit interrupt time in 100ns units.
+ //
+
+ volatile KSYSTEM_TIME InterruptTime;
+
+ //
+ // Current 64-bit system time in 100ns units.
+ //
+
+ volatile KSYSTEM_TIME SystemTime;
+
+ //
+ // Current 64-bit time zone bias.
+ //
+
+ volatile KSYSTEM_TIME TimeZoneBias;
+
+ //
+ // Support image magic number range for the host system.
+ //
+ // N.B. This is an inclusive range.
+ //
+
+ USHORT ImageNumberLow;
+ USHORT ImageNumberHigh;
+
+ //
+ // Copy of system root in Unicode
+ //
+
+ WCHAR NtSystemRoot[ 260 ];
+
+ //
+ // Bitmap of defined DOS device driver letters.
+ //
+
+ ULONG DosDeviceMap;
+
+ //
+ // Crypto Exponent
+ //
+
+ ULONG CryptoExponent;
+
+ //
+ // TimeZoneId
+ //
+
+ ULONG TimeZoneId;
+
+ //
+ // Dos Drive Letter type array (valid if corresponding bit set
+ // in DosDeviceMap above). Index by drive number (0 = A:, etc)
+ //
+
+ UCHAR DosDeviceDriveType[ 32 ];
+
+ //
+ // product type
+ //
+
+ NT_PRODUCT_TYPE NtProductType;
+ BOOLEAN ProductTypeIsValid;
+
+ //
+ // NT Version. Note that each process sees a version from it's PEB, but
+ // if the process is running with an altered view of the system version,
+ // the following two fields are used to correctly identify the version
+ //
+
+ ULONG NtMajorVersion;
+ ULONG NtMinorVersion;
+
+
+ //
+ // Processor Feature Bits
+ //
+
+ BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
+
+
+} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
+
+#define DOSDEVICE_DRIVE_UNKNOWN 0
+#define DOSDEVICE_DRIVE_CALCULATE 1
+#define DOSDEVICE_DRIVE_REMOVABLE 2
+#define DOSDEVICE_DRIVE_FIXED 3
+#define DOSDEVICE_DRIVE_REMOTE 4
+#define DOSDEVICE_DRIVE_CDROM 5
+#define DOSDEVICE_DRIVE_RAMDISK 6
+
+#if defined(USER_SHARED_DATA)
+
+#if defined(_M_IX86) && !defined(_CROSS_PLATFORM_) && !defined(MIDL_PASS)
+
+#pragma warning(disable:4035)
+__inline ULONG
+NTAPI
+NtGetTickCount (
+ VOID
+ )
+{
+ __asm {
+ mov edx, MM_SHARED_USER_DATA_VA
+ mov eax, [edx] KUSER_SHARED_DATA.TickCountLow
+ mul dword ptr [edx] KUSER_SHARED_DATA.TickCountMultiplier
+ shrd eax,edx,24
+ }
+}
+#pragma warning(default:4035)
+
+#else
+
+#define NtGetTickCount() \
+ ((ULONG)(UInt32x32To64(USER_SHARED_DATA->TickCountLow, \
+ USER_SHARED_DATA->TickCountMultiplier) >> 24))
+
+#endif
+
+#else
+
+NTSYSAPI
+ULONG
+NTAPI
+NtGetTickCount(
+ VOID
+ );
+
+#endif
+
+NTSTATUS
+NTAPI
+NtQueryDefaultLocale(
+ IN BOOLEAN UserProfile,
+ OUT PLCID DefaultLocaleId
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetDefaultLocale(
+ IN BOOLEAN UserProfile,
+ IN LCID DefaultLocaleId
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetDefaultHardErrorPort(
+ IN HANDLE DefaultHardErrorPort
+ );
+
+typedef enum _SHUTDOWN_ACTION {
+ ShutdownNoReboot,
+ ShutdownReboot,
+ ShutdownPowerOff
+} SHUTDOWN_ACTION;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtShutdownSystem(
+ IN SHUTDOWN_ACTION Action
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDisplayString(
+ IN PUNICODE_STRING String
+ );
+
+
+//
+// Global flags that can be set to control system behaviour
+// Flag word is 32 bits.
+//
+
+#define FLG_STOP_ON_EXCEPTION 0x00000001 // user and kernel mode
+#define FLG_SHOW_LDR_SNAPS 0x00000002 // user and kernel mode
+#define FLG_DEBUG_INITIAL_COMMAND 0x00000004 // kernel mode only up until WINLOGON started
+#define FLG_STOP_ON_HUNG_GUI 0x00000008 // kernel mode only while running
+
+#define FLG_HEAP_ENABLE_TAIL_CHECK 0x00000010 // user mode only
+#define FLG_HEAP_ENABLE_FREE_CHECK 0x00000020 // user mode only
+#define FLG_HEAP_VALIDATE_PARAMETERS 0x00000040 // user mode only
+#define FLG_HEAP_VALIDATE_ALL 0x00000080 // user mode only
+
+#define FLG_POOL_ENABLE_TAIL_CHECK 0x00000100 // kernel mode only
+#define FLG_POOL_ENABLE_FREE_CHECK 0x00000200 // kernel mode only
+#define FLG_POOL_ENABLE_TAGGING 0x00000400 // kernel mode only
+#define FLG_HEAP_ENABLE_TAGGING 0x00000800 // user mode only
+
+#define FLG_USER_STACK_TRACE_DB 0x00001000 // x86 user mode only
+#define FLG_KERNEL_STACK_TRACE_DB 0x00002000 // x86 kernel mode only at boot time
+#define FLG_MAINTAIN_OBJECT_TYPELIST 0x00004000 // kernel mode only at boot time
+#define FLG_HEAP_ENABLE_TAG_BY_DLL 0x00008000 // user mode only
+
+#define FLG_IGNORE_DEBUG_PRIV 0x00010000 // kernel mode only
+#define FLG_ENABLE_CSRDEBUG 0x00020000 // kernel mode only at boot time
+#define FLG_ENABLE_KDEBUG_SYMBOL_LOAD 0x00040000 // kernel mode only
+#define FLG_DISABLE_PAGE_KERNEL_STACKS 0x00080000 // kernel mode only at boot time
+
+#define FLG_HEAP_ENABLE_CALL_TRACING 0x00100000 // user mode only
+#define FLG_HEAP_DISABLE_COALESCING 0x00200000 // user mode only
+
+#define FLG_ENABLE_CLOSE_EXCEPTIONS 0x00400000 // kernel mode only
+#define FLG_ENABLE_EXCEPTION_LOGGING 0x00800000 // kernel mode only
+
+#define FLG_ENABLE_HANDLE_TYPE_TAGGING 0x01000000 // kernel mode only
+
+#define FLG_HEAP_PAGE_ALLOCS 0x02000000 // user mode only
+#define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000 // kernel mode only up until WINLOGON started
+
+#define FLG_VALID_BITS 0x07FFFFFF
+
+#define FLG_USERMODE_VALID_BITS (FLG_STOP_ON_EXCEPTION | \
+ FLG_SHOW_LDR_SNAPS | \
+ FLG_HEAP_ENABLE_TAIL_CHECK | \
+ FLG_HEAP_ENABLE_FREE_CHECK | \
+ FLG_HEAP_VALIDATE_PARAMETERS | \
+ FLG_HEAP_VALIDATE_ALL | \
+ FLG_HEAP_ENABLE_TAGGING | \
+ FLG_USER_STACK_TRACE_DB | \
+ FLG_HEAP_ENABLE_TAG_BY_DLL | \
+ FLG_HEAP_ENABLE_CALL_TRACING | \
+ FLG_HEAP_DISABLE_COALESCING | \
+ FLG_HEAP_PAGE_ALLOCS)
+
+#define FLG_BOOTONLY_VALID_BITS (FLG_KERNEL_STACK_TRACE_DB | \
+ FLG_MAINTAIN_OBJECT_TYPELIST | \
+ FLG_ENABLE_CSRDEBUG | \
+ FLG_DISABLE_PAGE_KERNEL_STACKS)
+
+#define FLG_KERNELMODE_VALID_BITS (FLG_STOP_ON_EXCEPTION | \
+ FLG_SHOW_LDR_SNAPS | \
+ FLG_DEBUG_INITIAL_COMMAND | \
+ FLG_DEBUG_INITIAL_COMMAND_EX | \
+ FLG_STOP_ON_HUNG_GUI | \
+ FLG_POOL_ENABLE_TAIL_CHECK | \
+ FLG_POOL_ENABLE_FREE_CHECK | \
+ FLG_POOL_ENABLE_TAGGING | \
+ FLG_IGNORE_DEBUG_PRIV | \
+ FLG_ENABLE_KDEBUG_SYMBOL_LOAD | \
+ FLG_ENABLE_CLOSE_EXCEPTIONS | \
+ FLG_ENABLE_EXCEPTION_LOGGING | \
+ FLG_ENABLE_HANDLE_TYPE_TAGGING)
+
+
+//
+// Routines for manipulating global atoms stored in kernel space
+//
+
+typedef USHORT RTL_ATOM, *PRTL_ATOM;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAddAtom(
+ IN PWSTR AtomName OPTIONAL,
+ IN OUT PRTL_ATOM Atom OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFindAtom(
+ IN PWSTR AtomName,
+ OUT PRTL_ATOM Atom OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDeleteAtom(
+ IN RTL_ATOM Atom
+ );
+
+typedef enum _ATOM_INFORMATION_CLASS {
+ AtomBasicInformation,
+ AtomTableInformation
+} ATOM_INFORMATION_CLASS;
+
+typedef struct _ATOM_BASIC_INFORMATION {
+ USHORT UsageCount;
+ USHORT Flags;
+ USHORT NameLength;
+ WCHAR Name[ 1 ];
+} ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
+
+typedef struct _ATOM_TABLE_INFORMATION {
+ ULONG NumberOfAtoms;
+ RTL_ATOM Atoms[ 1 ];
+} ATOM_TABLE_INFORMATION, *PATOM_TABLE_INFORMATION;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationAtom(
+ IN RTL_ATOM Atom,
+ IN ATOM_INFORMATION_CLASS AtomInformationClass,
+ OUT PVOID AtomInformation,
+ IN ULONG AtomInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+#endif // _NTEXAPI_
diff --git a/public/sdk/inc/ntfsprop.h b/public/sdk/inc/ntfsprop.h
new file mode 100644
index 000000000..a6669e614
--- /dev/null
+++ b/public/sdk/inc/ntfsprop.h
@@ -0,0 +1,264 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ ntfsprop.h
+
+Abstract:
+
+ This module contains the structure definitions for nt property Fsctl calls.
+
+Author:
+
+ Mark Zbikowski (MarkZ) 23-April-1996
+
+
+--*/
+
+
+#ifndef _NTFSPROP_
+#define _NTFSPROP_
+
+//
+// WARNING! This file requires OBJIDL.H.
+//
+
+
+//
+// VARIABLE_STRUCTURE_SIZE returns the size of a structure S that contains
+// an array of C structures V
+//
+
+#define VARIABLE_STRUCTURE_SIZE(S,V,C) ((int)sizeof( S ) + ((C) - 1) * (int)sizeof( V ))
+
+//
+// COUNTED_STRING is length-preceded unicode string. This does NOT include
+// a trailing L'\0'
+//
+
+typedef struct _COUNTED_STRING
+{
+ USHORT Length;
+ WCHAR Text[1];
+} COUNTED_STRING, *PCOUNTED_STRING;
+
+#define COUNTED_STRING_SIZE(l) \
+ (sizeof( COUNTED_STRING ) - sizeof ( WCHAR ) + (l))
+#define COUNTED_STRING_LENGTH(c) \
+ ((c)->Length)
+#define COUNTED_STRING_TEXT(c) \
+ (&(c)->Text[0])
+
+//
+// PROPERTY_SPECIFIER is a serialized form of a PROPSPEC. Instead of
+// a LPWSTR, there is an offset from the beginning of the
+// PROPERTY_SPECIFICATIONS to a COUNTED_STRING
+//
+// #define PRSPEC_LPWSTR ( 0 )
+// #define PRSPEC_PROPID ( 1 )
+
+typedef struct _PROPERTY_SPECIFIER
+{
+ ULONG Variant; // Distinguish the type
+ union { // Switch on Variant
+ PROPID Id; // Property ID
+ ULONG NameOffset; // Offset to COUNTED_STRING
+ };
+} PROPERTY_SPECIFIER, *PPROPERTY_SPECIFIER;
+
+
+//
+// PROPERTY_SPECIFICATIONS is a serialized form of an array PROPERTY_SPECIFIERs.
+// Immediately following PROPERTY_SPECIFICATIONS on a USHORT boundary are
+// of the name strings. Each name string is a COUNTED_STRING
+//
+
+typedef struct _PROPERTY_SPECIFICATIONS {
+ ULONG Length; // Length in bytes of structure and name strings
+ ULONG Count; // Count of PROPERTY_SPECIFIERS
+ PROPERTY_SPECIFIER Specifiers[1]; // Array of actual specifiers, length Count
+} PROPERTY_SPECIFICATIONS, *PPROPERTY_SPECIFICATIONS;
+
+#define PROPERTY_SPECIFICATIONS_SIZE(c) \
+ (VARIABLE_STRUCTURE_SIZE( PROPERTY_SPECIFICATIONS, PROPERTY_SPECIFIER, (c) ))
+#define PROPERTY_SPECIFIER_ID(PS,I) \
+ ((PS)->Specifiers[(I)].Id)
+#define PROPERTY_SPECIFIER_COUNTED_STRING(PS,I) \
+ ((PCOUNTED_STRING)Add2Ptr( (PS), (PS)->Specifiers[(I)].NameOffset))
+#define PROPERTY_SPECIFIER_NAME(PS,I) \
+ (&PROPERTY_SPECIFIER_COUNTED_STRING( PS, I )->Text[0])
+#define PROPERTY_SPECIFIER_NAME_LENGTH(PS,I) \
+ (PROPERTY_SPECIFIER_COUNTED_STRING( PS, I )->Length)
+
+
+//
+// PROPERTY_VALUES is a serialized form of an array of SERIALIZEDPROPERTYVALUES.
+// Immediately following the structure are the values, each of which is on a DWORD
+// boundary. The last PropertyValue (count+1) is used only to help determine the
+// size of the last property value. The offsets to the values are relative
+// to the address of the PROPERTY_VALUES structure itself.
+//
+
+typedef struct _PROPERTY_VALUES {
+ ULONG Length; // Length in bytes of structure and values
+ ULONG Count; // Count of SERIALIZEDPROPERTYVALUES
+ ULONG PropertyValueOffset[1]; // Array of offsets to actual values, length count + 1
+} PROPERTY_VALUES, *PPROPERTY_VALUES;
+
+#define PROPERTY_VALUES_SIZE(c) \
+ (VARIABLE_STRUCTURE_SIZE( PROPERTY_VALUES, ULONG, (c) + 1 ))
+#define PROPERTY_VALUE_LENGTH(v,i) \
+ ((v)->PropertyValueOffset[(i) + 1] - (v)->PropertyValueOffset[(i)])
+#define PROPERTY_VALUE(v,i) \
+ ((SERIALIZEDPROPERTYVALUE *) Add2Ptr( (v), (v)->PropertyValueOffset[(i)]))
+
+
+//
+// PROPERTY_IDS is a serialized form of an array of PROPIDs
+//
+
+typedef struct _PROPERTY_IDS {
+ ULONG Count; // Count of the number of propids
+ PROPID PropertyIds[1]; // Array of propids, length Count
+} PROPERTY_IDS, *PPROPERTY_IDS;
+
+#define PROPERTY_IDS_SIZE(c) \
+ (VARIABLE_STRUCTURE_SIZE( PROPERTY_IDS, PROPID, (c) ))
+#define PROPERTY_ID(p,i) \
+ ((p)->PropertyIds[i])
+
+
+//
+// INDIRECT_PROPERTIES is a serialized form of an array of PROPID/string-value
+// pairs. Immediately following the structure are the INDIRECT_ENTRIES, each of
+// which is on a WCHAR boundary.
+//
+
+typedef struct _INDIRECT_ENTRY {
+ PROPID PropertyId; // Propid of indirect property
+ ULONG IndirectValueOffset; // Offset to the string text, L'\0' terminated
+} INDIRECT_ENTRY;
+
+typedef struct _INDIRECT_PROPERTIES {
+ ULONG Length; // Length in bytes of structure and values
+ ULONG Count; // Count of indirect properties being replaced
+ INDIRECT_ENTRY Entrys[1]; // First indirect entry
+} INDIRECT_PROPERTIES, *PINDIRECT_PROPERTIES;
+
+#define INDIRECT_PROPERTIES_SIZE(c) \
+ (VARIABLE_STRUCTURE_SIZE( INDIRECT_PROPERTIES, INDIRECT_ENTRY, (c) + 1 ))
+#define INDIRECT_VALUE_ID(v,i) \
+ ((v)->Entrys[i].PropertyId)
+#define INDIRECT_VALUE_LENGTH(v,i) \
+ ((v)->IndirectValueOffset[(i) + 1] - (v)->IndirectValueOffset[(i)])
+#define INDIRECT_VALUE(v,i) \
+ ((SERIALIZED_PROPERTY_VALUE *) Add2Ptr( (v), (v)->Entrys[i].IndirectValueOffset))
+
+
+//
+// PROPERTY_STAT_DATA is a serialized array of STATPROPSTG. Following the
+// structure are the individual STATPROPSTG instances each of which is on a DWORD
+// boundary.
+//
+
+typedef struct _PROPERTY_STAT_DATA {
+ ULONG Length; // Length in bytes of structure and values
+ ULONG Count; // Count of STATPROPSTG entries that follow
+ STATPROPSTG PropertyStat[1]; // First statpropstg
+} PROPERTY_STAT_DATA, *PPROPERTY_STAT_DATA;
+
+
+//
+// PROPERTY_NAMES is a serialized array of strings's. Following the structure
+// are the individual strings, each of which is on a WCHAR boundary. The
+// offsets to the property names are relative to the beginning of the
+// PROPERTY_NAMES structure. There are count+1 offsets allowing the length
+// of each to be calculated.
+//
+
+typedef struct _PROPERTY_NAMES {
+ ULONG Length; // Length in bytes of structure and values
+ ULONG Count; // Count of strings
+ ULONG PropertyNameOffset[1]; // Array of offsets to property names.
+} PROPERTY_NAMES, *PPROPERTY_NAMES;
+
+#define PROPERTY_NAMES_SIZE(c) \
+ (VARIABLE_STRUCTURE_SIZE( PROPERTY_NAMES, ULONG, (c) + 1 ))
+#define PROPERTY_NAME_LENGTH(v,i) \
+ ((v)->PropertyNameOffset[(i) + 1] - (v)->PropertyNameOffset[(i)])
+#define PROPERTY_NAME(v,i) \
+ ((PWCHAR) Add2Ptr( (v), (v)->PropertyNameOffset[(i)]))
+
+
+//
+// PROPERTY_READ_CONTROL is the structure used to control all property read
+// operations. Following the structure on a DWORD boundary is either
+// an instance of PROPERTY_IDS or PROPERTY_SPECIFICATIONS, depending on
+// the operation code.
+//
+// On successful output, the data buffer will contain, on DWORD boundaries,
+// in order PROPERTY_VALUES, PROPERTY_IDS, and PROPERTY_NAMES. Each structure
+// may be absent depending on the setting of the operation code:
+//
+// PRC_READ_PROP: PROPERTY_SPECIFICATIONS => PROPERTY_VALUES
+//
+// PRC_READ_NAME: PROPERTY_IDS => PROPERTY_NAMES
+//
+// / PROPERTY_IDS
+// PRC_READ_ALL: <empty> => PROPERTY_NAMES
+// \ PROPERTY_VALUES
+//
+//
+
+typedef enum _READ_CONTROL_OPERATION {
+ PRC_READ_PROP = 0,
+ PRC_READ_NAME = 1,
+ PRC_READ_ALL = 2,
+} READ_CONTROL_OPERATION;
+
+typedef struct _PROPERTY_READ_CONTROL {
+ READ_CONTROL_OPERATION Op;
+} PROPERTY_READ_CONTROL, *PPROPERTY_READ_CONTROL;
+
+
+//
+// PROPERTY_WRITE_CONTROL is the structure used to control all property write
+// operations. Following the structure on a DWORD boundary is either an instance
+// of PROPERTY_IDS or PROPERTY_SPECIFICATIONS (used to control which properties are
+// being changed) and followed by PROPERTY_VALUES and PROPERTY_NAMES. The
+// presence of these are dependent on the operation code.
+//
+// On successful outputs, the data buffer will contain, on DWORD boundaries,
+// in order PROPERTY_IDS and INDIRECT_PROPERTIES. Each structure may be absent
+// depending on the setting of the operation code:
+//
+// PWC_WRITE_PROP: PROPERTY_SPECIFICATIONS \__/ PROPERTY_IDS
+// PROPERTY_VALUES / \ INDIRECT_PROPERTIES
+//
+// PWC_DELETE_PROP: PROPERTY_SPECIFICATIONS => <empty>
+//
+// PWC_WRITE_NAME: PROPERTY_IDS \__ <empty>
+// PROPERTY_NAMES /
+//
+// PWC_DELETE_NAME: PROPERTY_IDS => <empty>
+//
+// PROPERTY_IDS \
+// PWC_WRITE_ALL: PROPERTY_NAMES => <empty>
+// PROPERTY_VALUES /
+
+typedef enum _WRITE_CONTROL_OPERATION {
+ PWC_WRITE_PROP = 0,
+ PWC_DELETE_PROP = 1,
+ PWC_WRITE_NAME = 2,
+ PWC_DELETE_NAME = 3,
+ PWC_WRITE_ALL = 4,
+} WRITE_CONTROL_OPERATION;
+
+typedef struct _PROPERTY_WRITE_CONTROL {
+ WRITE_CONTROL_OPERATION Op;
+ PROPID NextPropertyId;
+} PROPERTY_WRITE_CONTROL, *PPROPERTY_WRITE_CONTROL;
+
+#endif // _NTFSPROP_
diff --git a/public/sdk/inc/nti386.h b/public/sdk/inc/nti386.h
new file mode 100644
index 000000000..41ada66b4
--- /dev/null
+++ b/public/sdk/inc/nti386.h
@@ -0,0 +1,495 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ nti386.h
+
+Abstract:
+
+ User-mode visible i386 specific i386 structures and constants
+
+Author:
+
+ Mark Lucovsky (markl) 30-Nov-1989
+
+Revision History:
+
+ Bryan Willman (bryanwi) 8-Jan-90
+
+ port to the 386
+
+--*/
+
+#ifndef _NTI386_
+#define _NTI386_
+
+// begin_ntddk begin_nthal
+
+#if defined(_X86_)
+
+//
+// Define system time structure.
+//
+
+typedef struct _KSYSTEM_TIME {
+ ULONG LowPart;
+ LONG High1Time;
+ LONG High2Time;
+} KSYSTEM_TIME, *PKSYSTEM_TIME;
+
+#endif
+
+// end_ntddk end_nthal
+
+// begin_windbgkd
+
+#ifdef _X86_
+
+//
+// DBGKD_CONTROL_REPORT
+//
+// This structure contains machine specific data passed to the debugger
+// when a Wait_State_Change message is sent. Idea is to allow debugger
+// to do what it needes without reading any more packets.
+// Structure is filled in by KdpSetControlReport
+//
+
+#define DBGKD_MAXSTREAM 16
+
+typedef struct _DBGKD_CONTROL_REPORT {
+ ULONG Dr6;
+ ULONG Dr7;
+ USHORT InstructionCount;
+ USHORT ReportFlags;
+ UCHAR InstructionStream[DBGKD_MAXSTREAM];
+ USHORT SegCs;
+ USHORT SegDs;
+ USHORT SegEs;
+ USHORT SegFs;
+ ULONG EFlags;
+} DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+
+#define REPORT_INCLUDES_SEGS 0x0001 // this is for backward compatibility
+
+//
+// DBGKD_CONTROL_SET
+//
+// This structure control value the debugger wants to set on every
+// continue, and thus sets here to avoid packet traffic.
+//
+
+typedef struct _DBGKD_CONTROL_SET {
+ ULONG TraceFlag; // WARNING: This must NOT be a BOOLEAN,
+ // or host and target will end
+ // up with different alignments!
+ ULONG Dr7;
+ ULONG CurrentSymbolStart; // Range in which to trace locally
+ ULONG CurrentSymbolEnd;
+} DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
+
+#endif //_X86_
+
+// end_windbgkd
+
+
+// begin_ntddk begin_nthal begin_winnt begin_ntminiport begin_wx86
+
+#ifdef _X86_
+
+//
+// Disable these two pramas that evaluate to "sti" "cli" on x86 so that driver
+// writers to not leave them inadvertantly in their code.
+//
+
+#if !defined(MIDL_PASS)
+#if !defined(RC_INVOKED)
+
+#pragma warning(disable:4164) // disable C4164 warning so that apps that
+ // build with /Od don't get weird errors !
+#ifdef _M_IX86
+#pragma function(_enable)
+#pragma function(_disable)
+#endif
+
+#pragma warning(default:4164) // reenable C4164 warning
+
+#endif
+#endif
+
+// end_ntddk end_nthal end_winnt end_ntminiport end_wx86
+
+//
+// Values put in ExceptionRecord.ExceptionInformation[0]
+// First parameter is always in ExceptionInformation[1],
+// Second parameter is always in ExceptionInformation[2]
+//
+
+#define BREAKPOINT_BREAK 0
+#define BREAKPOINT_PRINT 1
+#define BREAKPOINT_PROMPT 2
+#define BREAKPOINT_LOAD_SYMBOLS 3
+#define BREAKPOINT_UNLOAD_SYMBOLS 4
+
+
+//
+// Define Address of User Shared Data
+//
+
+#define MM_SHARED_USER_DATA_VA 0x7FFE0000
+
+#define USER_SHARED_DATA ((KUSER_SHARED_DATA * const)MM_SHARED_USER_DATA_VA)
+
+#if defined(MIDL_PASS) || !defined(_M_IX86)
+struct _TEB *
+NTAPI
+NtCurrentTeb( void );
+#else
+#pragma warning (disable:4035) // disable 4035 (function must return something)
+#define PcTeb 0x18
+_inline struct _TEB * NtCurrentTeb( void ) { __asm mov eax, fs:[PcTeb] }
+#pragma warning (default:4035) // reenable it
+#endif // defined(MIDL_PASS) || defined(__cplusplus) || !defined(_M_IX86)
+
+// begin_ntddk begin_nthal
+//
+// Size of kernel mode stack.
+//
+
+#define KERNEL_STACK_SIZE 12288
+
+//
+// Define size of large kernel mode stack for callbacks.
+//
+
+#define KERNEL_LARGE_STACK_SIZE 61440
+
+//
+// Define number of pages to initialize in a large kernel stack.
+//
+
+#define KERNEL_LARGE_STACK_COMMIT 12288
+
+// end_ntddk end_nthal
+
+#define DOUBLE_FAULT_STACK_SIZE 4096
+
+//
+// Call frame record definition.
+//
+// There is no standard call frame for NT/386, but there is a linked
+// list structure used to register exception handlers, this is it.
+//
+
+// begin_nthal
+//
+// Exception Registration structure
+//
+
+typedef struct _EXCEPTION_REGISTRATION_RECORD {
+ struct _EXCEPTION_REGISTRATION_RECORD *Next;
+ PEXCEPTION_ROUTINE Handler;
+} EXCEPTION_REGISTRATION_RECORD;
+
+typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD;
+
+//
+// Define constants for system IDTs
+//
+
+#define MAXIMUM_IDTVECTOR 0xff
+#define MAXIMUM_PRIMARY_VECTOR 0xff
+#define PRIMARY_VECTOR_BASE 0x30 // 0-2f are x86 trap vectors
+
+// begin_ntddk
+
+#ifdef _X86_
+
+// begin_winnt
+
+#if !defined(MIDL_PASS) && defined(_M_IX86)
+#pragma warning (disable:4035) // disable 4035 (function must return something)
+_inline PVOID GetFiberData( void ) { __asm {
+ mov eax, fs:[0x10]
+ mov eax,[eax]
+ }
+ }
+_inline PVOID GetCurrentFiber( void ) { __asm mov eax, fs:[0x10] }
+
+#pragma warning (default:4035) // Reenable it
+#endif
+
+// begin_wx86
+
+//
+// Define the size of the 80387 save area, which is in the context frame.
+//
+
+#define SIZE_OF_80387_REGISTERS 80
+
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+
+#if !defined(RC_INVOKED)
+
+#define CONTEXT_i386 0x00010000 // this assumes that i386 and
+#define CONTEXT_i486 0x00010000 // i486 have identical context records
+
+// end_wx86
+
+#define CONTEXT_CONTROL (CONTEXT_i386 | 0x00000001L) // SS:SP, CS:IP, FLAGS, BP
+#define CONTEXT_INTEGER (CONTEXT_i386 | 0x00000002L) // AX, BX, CX, DX, SI, DI
+#define CONTEXT_SEGMENTS (CONTEXT_i386 | 0x00000004L) // DS, ES, FS, GS
+#define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 0x00000008L) // 387 state
+#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x00000010L) // DB 0-3,6,7
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER |\
+ CONTEXT_SEGMENTS)
+
+// begin_wx86
+
+#endif
+
+typedef struct _FLOATING_SAVE_AREA {
+ ULONG ControlWord;
+ ULONG StatusWord;
+ ULONG TagWord;
+ ULONG ErrorOffset;
+ ULONG ErrorSelector;
+ ULONG DataOffset;
+ ULONG DataSelector;
+ UCHAR RegisterArea[SIZE_OF_80387_REGISTERS];
+ ULONG Cr0NpxState;
+} FLOATING_SAVE_AREA;
+
+typedef FLOATING_SAVE_AREA *PFLOATING_SAVE_AREA;
+
+//
+// Context Frame
+//
+// This frame has a several purposes: 1) it is used as an argument to
+// NtContinue, 2) is is used to constuct a call frame for APC delivery,
+// and 3) it is used in the user level thread creation routines.
+//
+// The layout of the record conforms to a standard call frame.
+//
+
+typedef struct _CONTEXT {
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a threads context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+
+ ULONG ContextFlags;
+
+ //
+ // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
+ // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
+ // included in CONTEXT_FULL.
+ //
+
+ ULONG Dr0;
+ ULONG Dr1;
+ ULONG Dr2;
+ ULONG Dr3;
+ ULONG Dr6;
+ ULONG Dr7;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_FLOATING_POINT.
+ //
+
+ FLOATING_SAVE_AREA FloatSave;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_SEGMENTS.
+ //
+
+ ULONG SegGs;
+ ULONG SegFs;
+ ULONG SegEs;
+ ULONG SegDs;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_INTEGER.
+ //
+
+ ULONG Edi;
+ ULONG Esi;
+ ULONG Ebx;
+ ULONG Edx;
+ ULONG Ecx;
+ ULONG Eax;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_CONTROL.
+ //
+
+ ULONG Ebp;
+ ULONG Eip;
+ ULONG SegCs; // MUST BE SANITIZED
+ ULONG EFlags; // MUST BE SANITIZED
+ ULONG Esp;
+ ULONG SegSs;
+
+} CONTEXT;
+
+
+
+typedef CONTEXT *PCONTEXT;
+
+// begin_ntminiport
+
+#endif //_X86_
+
+// end_ntddk end_nthal end_winnt end_ntminiport end_wx86
+
+#define CONTEXT_TO_PROGRAM_COUNTER(Context) (PVOID)((Context)->Eip)
+
+#define CONTEXT_LENGTH (sizeof(CONTEXT))
+#define CONTEXT_ALIGN (sizeof(ULONG))
+#define CONTEXT_ROUND (CONTEXT_ALIGN - 1)
+
+
+// begin_wx86
+//
+// GDT selectors - These defines are R0 selector numbers, which means
+// they happen to match the byte offset relative to
+// the base of the GDT.
+//
+
+#define KGDT_NULL 0
+#define KGDT_R0_CODE 8
+#define KGDT_R0_DATA 16
+#define KGDT_R3_CODE 24
+#define KGDT_R3_DATA 32
+#define KGDT_TSS 40
+#define KGDT_R0_PCR 48
+#define KGDT_R3_TEB 56
+#define KGDT_VDM_TILE 64
+#define KGDT_LDT 72
+#define KGDT_DF_TSS 80
+#define KGDT_NMI_TSS 88
+
+// end_wx86
+
+#ifdef ABIOS
+
+//
+// BUGBUG shielint Should be NEW os2ldr. The ABIOS ifdef will be
+// removed once we switch to new os2ldr.
+//
+
+#define KGDT_ALIAS 0x70
+#define KGDT_NUMBER 11
+#else
+#define KGDT_NUMBER 10
+#endif
+
+//
+// LDT descriptor entry
+//
+
+// begin_winnt begin_wx86
+
+typedef struct _LDT_ENTRY {
+ USHORT LimitLow;
+ USHORT BaseLow;
+ union {
+ struct {
+ UCHAR BaseMid;
+ UCHAR Flags1; // Declare as bytes to avoid alignment
+ UCHAR Flags2; // Problems.
+ UCHAR BaseHi;
+ } Bytes;
+ struct {
+ ULONG BaseMid : 8;
+ ULONG Type : 5;
+ ULONG Dpl : 2;
+ ULONG Pres : 1;
+ ULONG LimitHi : 4;
+ ULONG Sys : 1;
+ ULONG Reserved_0 : 1;
+ ULONG Default_Big : 1;
+ ULONG Granularity : 1;
+ ULONG BaseHi : 8;
+ } Bits;
+ } HighWord;
+} LDT_ENTRY, *PLDT_ENTRY;
+
+// end_winnt end_wx86
+
+//
+// Process Ldt Information
+// NtQueryInformationProcess using ProcessLdtInformation
+//
+
+typedef struct _LDT_INFORMATION {
+ ULONG Start;
+ ULONG Length;
+ LDT_ENTRY LdtEntries[1];
+} PROCESS_LDT_INFORMATION, *PPROCESS_LDT_INFORMATION;
+
+//
+// Process Ldt Size
+// NtSetInformationProcess using ProcessLdtSize
+//
+
+typedef struct _LDT_SIZE {
+ ULONG Length;
+} PROCESS_LDT_SIZE, *PPROCESS_LDT_SIZE;
+
+//
+// Thread Descriptor Table Entry
+// NtQueryInformationThread using ThreadDescriptorTableEntry
+//
+
+// begin_windbgkd
+
+typedef struct _DESCRIPTOR_TABLE_ENTRY {
+ ULONG Selector;
+ LDT_ENTRY Descriptor;
+} DESCRIPTOR_TABLE_ENTRY, *PDESCRIPTOR_TABLE_ENTRY;
+
+// end_windbgkd
+
+// begin_ntddk begin_nthal
+#endif // _X86_
+// end_ntddk end_nthal
+
+//
+// Library function prototypes.
+//
+
+VOID
+RtlCaptureContext (
+ OUT PCONTEXT ContextRecord
+ );
+
+//
+// Additional information supplied in QuerySectionInformation for images.
+//
+
+#define SECTION_ADDITIONAL_INFO_USED 0
+
+#endif // _NTI386_
diff --git a/public/sdk/inc/ntimage.h b/public/sdk/inc/ntimage.h
new file mode 100644
index 000000000..00fe8da29
--- /dev/null
+++ b/public/sdk/inc/ntimage.h
@@ -0,0 +1,1160 @@
+/*++ BUILD Version: 0004 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntimage.h
+
+Abstract:
+
+ This is the include file that describes all image structures.
+
+Author:
+
+ Mike O'Leary (mikeol) 21-Mar-1991
+
+Revision History:
+
+--*/
+
+#ifndef _NTIMAGE_
+#define _NTIMAGE_
+
+//
+// Define the linker version number. This is temporary to aid
+// in debugging with people trying to load images built with
+// an older linker. This is not required in the final product.
+//
+
+#define IMAGE_MAJOR_LINKER_VERSION 2
+
+// begin_winnt
+
+
+//
+// Image Format
+//
+
+#include "pshpack4.h" // 4 byte packing is the default
+
+#define IMAGE_DOS_SIGNATURE 0x5A4D // MZ
+#define IMAGE_OS2_SIGNATURE 0x454E // NE
+#define IMAGE_OS2_SIGNATURE_LE 0x454C // LE
+#define IMAGE_VXD_SIGNATURE 0x454C // LE
+#define IMAGE_NT_SIGNATURE 0x00004550 // PE00
+
+#include "pshpack2.h" // 16 bit headers are 2 byte packed
+
+typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
+ USHORT e_magic; // Magic number
+ USHORT e_cblp; // Bytes on last page of file
+ USHORT e_cp; // Pages in file
+ USHORT e_crlc; // Relocations
+ USHORT e_cparhdr; // Size of header in paragraphs
+ USHORT e_minalloc; // Minimum extra paragraphs needed
+ USHORT e_maxalloc; // Maximum extra paragraphs needed
+ USHORT e_ss; // Initial (relative) SS value
+ USHORT e_sp; // Initial SP value
+ USHORT e_csum; // Checksum
+ USHORT e_ip; // Initial IP value
+ USHORT e_cs; // Initial (relative) CS value
+ USHORT e_lfarlc; // File address of relocation table
+ USHORT e_ovno; // Overlay number
+ USHORT e_res[4]; // Reserved words
+ USHORT e_oemid; // OEM identifier (for e_oeminfo)
+ USHORT e_oeminfo; // OEM information; e_oemid specific
+ USHORT e_res2[10]; // Reserved words
+ LONG e_lfanew; // File address of new exe header
+ } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
+
+typedef struct _IMAGE_OS2_HEADER { // OS/2 .EXE header
+ USHORT ne_magic; // Magic number
+ CHAR ne_ver; // Version number
+ CHAR ne_rev; // Revision number
+ USHORT ne_enttab; // Offset of Entry Table
+ USHORT ne_cbenttab; // Number of bytes in Entry Table
+ LONG ne_crc; // Checksum of whole file
+ USHORT ne_flags; // Flag word
+ USHORT ne_autodata; // Automatic data segment number
+ USHORT ne_heap; // Initial heap allocation
+ USHORT ne_stack; // Initial stack allocation
+ LONG ne_csip; // Initial CS:IP setting
+ LONG ne_sssp; // Initial SS:SP setting
+ USHORT ne_cseg; // Count of file segments
+ USHORT ne_cmod; // Entries in Module Reference Table
+ USHORT ne_cbnrestab; // Size of non-resident name table
+ USHORT ne_segtab; // Offset of Segment Table
+ USHORT ne_rsrctab; // Offset of Resource Table
+ USHORT ne_restab; // Offset of resident name table
+ USHORT ne_modtab; // Offset of Module Reference Table
+ USHORT ne_imptab; // Offset of Imported Names Table
+ LONG ne_nrestab; // Offset of Non-resident Names Table
+ USHORT ne_cmovent; // Count of movable entries
+ USHORT ne_align; // Segment alignment shift count
+ USHORT ne_cres; // Count of resource segments
+ UCHAR ne_exetyp; // Target Operating system
+ UCHAR ne_flagsothers; // Other .EXE flags
+ USHORT ne_pretthunks; // offset to return thunks
+ USHORT ne_psegrefbytes; // offset to segment ref. bytes
+ USHORT ne_swaparea; // Minimum code swap area size
+ USHORT ne_expver; // Expected Windows version number
+ } IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER;
+
+typedef struct _IMAGE_VXD_HEADER { // Windows VXD header
+ USHORT e32_magic; // Magic number
+ UCHAR e32_border; // The byte ordering for the VXD
+ UCHAR e32_worder; // The word ordering for the VXD
+ ULONG e32_level; // The EXE format level for now = 0
+ USHORT e32_cpu; // The CPU type
+ USHORT e32_os; // The OS type
+ ULONG e32_ver; // Module version
+ ULONG e32_mflags; // Module flags
+ ULONG e32_mpages; // Module # pages
+ ULONG e32_startobj; // Object # for instruction pointer
+ ULONG e32_eip; // Extended instruction pointer
+ ULONG e32_stackobj; // Object # for stack pointer
+ ULONG e32_esp; // Extended stack pointer
+ ULONG e32_pagesize; // VXD page size
+ ULONG e32_lastpagesize; // Last page size in VXD
+ ULONG e32_fixupsize; // Fixup section size
+ ULONG e32_fixupsum; // Fixup section checksum
+ ULONG e32_ldrsize; // Loader section size
+ ULONG e32_ldrsum; // Loader section checksum
+ ULONG e32_objtab; // Object table offset
+ ULONG e32_objcnt; // Number of objects in module
+ ULONG e32_objmap; // Object page map offset
+ ULONG e32_itermap; // Object iterated data map offset
+ ULONG e32_rsrctab; // Offset of Resource Table
+ ULONG e32_rsrccnt; // Number of resource entries
+ ULONG e32_restab; // Offset of resident name table
+ ULONG e32_enttab; // Offset of Entry Table
+ ULONG e32_dirtab; // Offset of Module Directive Table
+ ULONG e32_dircnt; // Number of module directives
+ ULONG e32_fpagetab; // Offset of Fixup Page Table
+ ULONG e32_frectab; // Offset of Fixup Record Table
+ ULONG e32_impmod; // Offset of Import Module Name Table
+ ULONG e32_impmodcnt; // Number of entries in Import Module Name Table
+ ULONG e32_impproc; // Offset of Import Procedure Name Table
+ ULONG e32_pagesum; // Offset of Per-Page Checksum Table
+ ULONG e32_datapage; // Offset of Enumerated Data Pages
+ ULONG e32_preload; // Number of preload pages
+ ULONG e32_nrestab; // Offset of Non-resident Names Table
+ ULONG e32_cbnrestab; // Size of Non-resident Name Table
+ ULONG e32_nressum; // Non-resident Name Table Checksum
+ ULONG e32_autodata; // Object # for automatic data object
+ ULONG e32_debuginfo; // Offset of the debugging information
+ ULONG e32_debuglen; // The length of the debugging info. in bytes
+ ULONG e32_instpreload; // Number of instance pages in preload section of VXD file
+ ULONG e32_instdemand; // Number of instance pages in demand load section of VXD file
+ ULONG e32_heapsize; // Size of heap - for 16-bit apps
+ UCHAR e32_res3[12]; // Reserved words
+ ULONG e32_winresoff;
+ ULONG e32_winreslen;
+ USHORT e32_devid; // Device ID for VxD
+ USHORT e32_ddkver; // DDK version for VxD
+ } IMAGE_VXD_HEADER, *PIMAGE_VXD_HEADER;
+
+#include "poppack.h" // Back to 4 byte packing
+
+//
+// File header format.
+//
+
+typedef struct _IMAGE_FILE_HEADER {
+ USHORT Machine;
+ USHORT NumberOfSections;
+ ULONG TimeDateStamp;
+ ULONG PointerToSymbolTable;
+ ULONG NumberOfSymbols;
+ USHORT SizeOfOptionalHeader;
+ USHORT Characteristics;
+} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
+
+#define IMAGE_SIZEOF_FILE_HEADER 20
+
+#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file.
+#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved externel references).
+#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file.
+#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file.
+#define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 // Agressively trim working set
+#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed.
+#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine.
+#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file
+#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 // If Image is on removable media, copy and run from the swap file.
+#define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 // If Image is on Net, copy and run from the swap file.
+#define IMAGE_FILE_SYSTEM 0x1000 // System File.
+#define IMAGE_FILE_DLL 0x2000 // File is a DLL.
+#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 // File should only be run on a UP machine
+#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed.
+
+#define IMAGE_FILE_MACHINE_UNKNOWN 0
+#define IMAGE_FILE_MACHINE_I386 0x14c // Intel 386.
+#define IMAGE_FILE_MACHINE_R3000 0x162 // MIPS little-endian, 0x160 big-endian
+#define IMAGE_FILE_MACHINE_R4000 0x166 // MIPS little-endian
+#define IMAGE_FILE_MACHINE_R10000 0x168 // MIPS little-endian
+#define IMAGE_FILE_MACHINE_ALPHA 0x184 // Alpha_AXP
+#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian
+
+//
+// Directory format.
+//
+
+typedef struct _IMAGE_DATA_DIRECTORY {
+ ULONG VirtualAddress;
+ ULONG Size;
+} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
+
+#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
+
+//
+// Optional header format.
+//
+
+typedef struct _IMAGE_OPTIONAL_HEADER {
+ //
+ // Standard fields.
+ //
+
+ USHORT Magic;
+ UCHAR MajorLinkerVersion;
+ UCHAR MinorLinkerVersion;
+ ULONG SizeOfCode;
+ ULONG SizeOfInitializedData;
+ ULONG SizeOfUninitializedData;
+ ULONG AddressOfEntryPoint;
+ ULONG BaseOfCode;
+ ULONG BaseOfData;
+
+ //
+ // NT additional fields.
+ //
+
+ ULONG ImageBase;
+ ULONG SectionAlignment;
+ ULONG FileAlignment;
+ USHORT MajorOperatingSystemVersion;
+ USHORT MinorOperatingSystemVersion;
+ USHORT MajorImageVersion;
+ USHORT MinorImageVersion;
+ USHORT MajorSubsystemVersion;
+ USHORT MinorSubsystemVersion;
+ ULONG Win32VersionValue;
+ ULONG SizeOfImage;
+ ULONG SizeOfHeaders;
+ ULONG CheckSum;
+ USHORT Subsystem;
+ USHORT DllCharacteristics;
+ ULONG SizeOfStackReserve;
+ ULONG SizeOfStackCommit;
+ ULONG SizeOfHeapReserve;
+ ULONG SizeOfHeapCommit;
+ ULONG LoaderFlags;
+ ULONG NumberOfRvaAndSizes;
+ IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
+
+typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
+ USHORT Magic;
+ UCHAR MajorLinkerVersion;
+ UCHAR MinorLinkerVersion;
+ ULONG SizeOfCode;
+ ULONG SizeOfInitializedData;
+ ULONG SizeOfUninitializedData;
+ ULONG AddressOfEntryPoint;
+ ULONG BaseOfCode;
+ ULONG BaseOfData;
+ ULONG BaseOfBss;
+ ULONG GprMask;
+ ULONG CprMask[4];
+ ULONG GpValue;
+} IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER;
+
+#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
+#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
+
+#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
+#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
+
+typedef struct _IMAGE_NT_HEADERS {
+ ULONG Signature;
+ IMAGE_FILE_HEADER FileHeader;
+ IMAGE_OPTIONAL_HEADER OptionalHeader;
+} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;
+
+typedef struct _IMAGE_ROM_HEADERS {
+ IMAGE_FILE_HEADER FileHeader;
+ IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
+} IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS;
+
+#define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) \
+ ((ULONG)ntheader + \
+ FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \
+ ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader \
+ ))
+
+
+// Subsystem Values
+
+#define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem.
+#define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem.
+#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem.
+#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem.
+#define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 character subsystem.
+#define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image run in the Posix character subsystem.
+#define IMAGE_SUBSYSTEM_RESERVED8 8 // image run in the 8 subsystem.
+
+// end_winnt
+
+#define IMAGE_DLLCHARACTERISTICS_X86_THUNK 0x0001 // Image is a Wx86 Thunk DLL
+
+// begin_winnt
+
+// Directory Entries
+
+#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory
+#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory
+#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory
+#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory
+#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory
+#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table
+#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory
+#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // Description String
+#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // Machine Value (MIPS GP)
+#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory
+#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory
+#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 // Bound Import Directory in headers
+#define IMAGE_DIRECTORY_ENTRY_IAT 12 // Import Address Table
+
+//
+// Section header format.
+//
+
+#define IMAGE_SIZEOF_SHORT_NAME 8
+
+typedef struct _IMAGE_SECTION_HEADER {
+ UCHAR Name[IMAGE_SIZEOF_SHORT_NAME];
+ union {
+ ULONG PhysicalAddress;
+ ULONG VirtualSize;
+ } Misc;
+ ULONG VirtualAddress;
+ ULONG SizeOfRawData;
+ ULONG PointerToRawData;
+ ULONG PointerToRelocations;
+ ULONG PointerToLinenumbers;
+ USHORT NumberOfRelocations;
+ USHORT NumberOfLinenumbers;
+ ULONG Characteristics;
+} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
+
+#define IMAGE_SIZEOF_SECTION_HEADER 40
+
+//
+// Section characteristics.
+//
+
+// IMAGE_SCN_TYPE_REG 0x00000000 // Reserved.
+// IMAGE_SCN_TYPE_DSECT 0x00000001 // Reserved.
+// IMAGE_SCN_TYPE_NOLOAD 0x00000002 // Reserved.
+// IMAGE_SCN_TYPE_GROUP 0x00000004 // Reserved.
+#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 // Reserved.
+// IMAGE_SCN_TYPE_COPY 0x00000010 // Reserved.
+
+#define IMAGE_SCN_CNT_CODE 0x00000020 // Section contains code.
+#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 // Section contains initialized data.
+#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 // Section contains uninitialized data.
+
+#define IMAGE_SCN_LNK_OTHER 0x00000100 // Reserved.
+#define IMAGE_SCN_LNK_INFO 0x00000200 // Section contains comments or some other type of information.
+// IMAGE_SCN_TYPE_OVER 0x00000400 // Reserved.
+#define IMAGE_SCN_LNK_REMOVE 0x00000800 // Section contents will not become part of image.
+#define IMAGE_SCN_LNK_COMDAT 0x00001000 // Section contents comdat.
+// 0x00002000 // Reserved.
+
+// IMAGE_SCN_MEM_PROTECTED - Obsolete 0x00004000
+#define IMAGE_SCN_MEM_FARDATA 0x00008000
+// IMAGE_SCN_MEM_SYSHEAP - Obsolete 0x00010000
+#define IMAGE_SCN_MEM_PURGEABLE 0x00020000
+#define IMAGE_SCN_MEM_16BIT 0x00020000
+#define IMAGE_SCN_MEM_LOCKED 0x00040000
+#define IMAGE_SCN_MEM_PRELOAD 0x00080000
+
+#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 //
+#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 //
+#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 //
+#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 //
+#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default alignment if no others are specified.
+#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 //
+#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 //
+// Unused 0x00800000
+
+#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 // Section contains extended relocations.
+#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 // Section can be discarded.
+#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 // Section is not cachable.
+#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 // Section is not pageable.
+#define IMAGE_SCN_MEM_SHARED 0x10000000 // Section is shareable.
+#define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable.
+#define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable.
+#define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable.
+
+
+//
+// TLS Chaacteristic Flags
+//
+#define IMAGE_SCN_SCALE_INDEX 0x00000001 // Tls index is scaled
+
+#include "pshpack2.h" // Symbols, relocs, and linenumbers are 2 byte packed
+
+//
+// Symbol format.
+//
+
+typedef struct _IMAGE_SYMBOL {
+ union {
+ UCHAR ShortName[8];
+ struct {
+ ULONG Short; // if 0, use LongName
+ ULONG Long; // offset into string table
+ } Name;
+ PUCHAR LongName[2];
+ } N;
+ ULONG Value;
+ SHORT SectionNumber;
+ USHORT Type;
+ UCHAR StorageClass;
+ UCHAR NumberOfAuxSymbols;
+} IMAGE_SYMBOL;
+typedef IMAGE_SYMBOL UNALIGNED *PIMAGE_SYMBOL;
+
+
+#define IMAGE_SIZEOF_SYMBOL 18
+
+//
+// Section values.
+//
+// Symbols have a section number of the section in which they are
+// defined. Otherwise, section numbers have the following meanings:
+//
+
+#define IMAGE_SYM_UNDEFINED (SHORT)0 // Symbol is undefined or is common.
+#define IMAGE_SYM_ABSOLUTE (SHORT)-1 // Symbol is an absolute value.
+#define IMAGE_SYM_DEBUG (SHORT)-2 // Symbol is a special debug item.
+
+//
+// Type (fundamental) values.
+//
+
+#define IMAGE_SYM_TYPE_NULL 0x0000 // no type.
+#define IMAGE_SYM_TYPE_VOID 0x0001 //
+#define IMAGE_SYM_TYPE_CHAR 0x0002 // type character.
+#define IMAGE_SYM_TYPE_SHORT 0x0003 // type short integer.
+#define IMAGE_SYM_TYPE_INT 0x0004 //
+#define IMAGE_SYM_TYPE_LONG 0x0005 //
+#define IMAGE_SYM_TYPE_FLOAT 0x0006 //
+#define IMAGE_SYM_TYPE_DOUBLE 0x0007 //
+#define IMAGE_SYM_TYPE_STRUCT 0x0008 //
+#define IMAGE_SYM_TYPE_UNION 0x0009 //
+#define IMAGE_SYM_TYPE_ENUM 0x000A // enumeration.
+#define IMAGE_SYM_TYPE_MOE 0x000B // member of enumeration.
+#define IMAGE_SYM_TYPE_UCHAR 0x000C //
+#define IMAGE_SYM_TYPE_USHORT 0x000D //
+#define IMAGE_SYM_TYPE_UINT 0x000E //
+#define IMAGE_SYM_TYPE_ULONG 0x000F //
+#define IMAGE_SYM_TYPE_PCODE 0x8000 //
+
+//
+// Type (derived) values.
+//
+
+#define IMAGE_SYM_DTYPE_NULL 0 // no derived type.
+#define IMAGE_SYM_DTYPE_POINTER 1 // pointer.
+#define IMAGE_SYM_DTYPE_FUNCTION 2 // function.
+#define IMAGE_SYM_DTYPE_ARRAY 3 // array.
+
+//
+// Storage classes.
+//
+
+#define IMAGE_SYM_CLASS_END_OF_FUNCTION (UCHAR)-1
+#define IMAGE_SYM_CLASS_NULL 0x0000
+#define IMAGE_SYM_CLASS_AUTOMATIC 0x0001
+#define IMAGE_SYM_CLASS_EXTERNAL 0x0002
+#define IMAGE_SYM_CLASS_STATIC 0x0003
+#define IMAGE_SYM_CLASS_REGISTER 0x0004
+#define IMAGE_SYM_CLASS_EXTERNAL_DEF 0x0005
+#define IMAGE_SYM_CLASS_LABEL 0x0006
+#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 0x0007
+#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 0x0008
+#define IMAGE_SYM_CLASS_ARGUMENT 0x0009
+#define IMAGE_SYM_CLASS_STRUCT_TAG 0x000A
+#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 0x000B
+#define IMAGE_SYM_CLASS_UNION_TAG 0x000C
+#define IMAGE_SYM_CLASS_TYPE_DEFINITION 0x000D
+#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 0x000E
+#define IMAGE_SYM_CLASS_ENUM_TAG 0x000F
+#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 0x0010
+#define IMAGE_SYM_CLASS_REGISTER_PARAM 0x0011
+#define IMAGE_SYM_CLASS_BIT_FIELD 0x0012
+
+#define IMAGE_SYM_CLASS_FAR_EXTERNAL 0x0044 //
+
+#define IMAGE_SYM_CLASS_BLOCK 0x0064
+#define IMAGE_SYM_CLASS_FUNCTION 0x0065
+#define IMAGE_SYM_CLASS_END_OF_STRUCT 0x0066
+#define IMAGE_SYM_CLASS_FILE 0x0067
+// new
+#define IMAGE_SYM_CLASS_SECTION 0x0068
+#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 0x0069
+
+// type packing constants
+
+#define N_BTMASK 0x000F
+#define N_TMASK 0x0030
+#define N_TMASK1 0x00C0
+#define N_TMASK2 0x00F0
+#define N_BTSHFT 4
+#define N_TSHIFT 2
+
+// MACROS
+
+// Basic Type of x
+#define BTYPE(x) ((x) & N_BTMASK)
+
+// Is x a pointer?
+#ifndef ISPTR
+#define ISPTR(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT))
+#endif
+
+// Is x a function?
+#ifndef ISFCN
+#define ISFCN(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT))
+#endif
+
+// Is x an array?
+
+#ifndef ISARY
+#define ISARY(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT))
+#endif
+
+// Is x a structure, union, or enumeration TAG?
+#ifndef ISTAG
+#define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG)
+#endif
+
+#ifndef INCREF
+#define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
+#endif
+#ifndef DECREF
+#define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
+#endif
+
+//
+// Auxiliary entry format.
+//
+
+typedef union _IMAGE_AUX_SYMBOL {
+ struct {
+ ULONG TagIndex; // struct, union, or enum tag index
+ union {
+ struct {
+ USHORT Linenumber; // declaration line number
+ USHORT Size; // size of struct, union, or enum
+ } LnSz;
+ ULONG TotalSize;
+ } Misc;
+ union {
+ struct { // if ISFCN, tag, or .bb
+ ULONG PointerToLinenumber;
+ ULONG PointerToNextFunction;
+ } Function;
+ struct { // if ISARY, up to 4 dimen.
+ USHORT Dimension[4];
+ } Array;
+ } FcnAry;
+ USHORT TvIndex; // tv index
+ } Sym;
+ struct {
+ UCHAR Name[IMAGE_SIZEOF_SYMBOL];
+ } File;
+ struct {
+ ULONG Length; // section length
+ USHORT NumberOfRelocations; // number of relocation entries
+ USHORT NumberOfLinenumbers; // number of line numbers
+ ULONG CheckSum; // checksum for communal
+ SHORT Number; // section number to associate with
+ UCHAR Selection; // communal selection type
+ } Section;
+} IMAGE_AUX_SYMBOL;
+typedef IMAGE_AUX_SYMBOL UNALIGNED *PIMAGE_AUX_SYMBOL;
+
+#define IMAGE_SIZEOF_AUX_SYMBOL 18
+
+//
+// Communal selection types.
+//
+
+#define IMAGE_COMDAT_SELECT_NODUPLICATES 1
+#define IMAGE_COMDAT_SELECT_ANY 2
+#define IMAGE_COMDAT_SELECT_SAME_SIZE 3
+#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
+#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
+#define IMAGE_COMDAT_SELECT_LARGEST 6
+#define IMAGE_COMDAT_SELECT_NEWEST 7
+
+#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
+#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
+#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
+
+//
+// Relocation format.
+//
+
+typedef struct _IMAGE_RELOCATION {
+ union {
+ ULONG VirtualAddress;
+ ULONG RelocCount; // Set to the real count when IMAGE_SCN_LNK_NRELOC_OVFL is set
+ };
+ ULONG SymbolTableIndex;
+ USHORT Type;
+} IMAGE_RELOCATION;
+typedef IMAGE_RELOCATION UNALIGNED *PIMAGE_RELOCATION;
+
+#define IMAGE_SIZEOF_RELOCATION 10
+
+//
+// I386 relocation types.
+//
+
+#define IMAGE_REL_I386_ABSOLUTE 0x0000 // Reference is absolute, no relocation is necessary
+#define IMAGE_REL_I386_DIR16 0x0001 // Direct 16-bit reference to the symbols virtual address
+#define IMAGE_REL_I386_REL16 0x0002 // PC-relative 16-bit reference to the symbols virtual address
+#define IMAGE_REL_I386_DIR32 0x0006 // Direct 32-bit reference to the symbols virtual address
+#define IMAGE_REL_I386_DIR32NB 0x0007 // Direct 32-bit reference to the symbols virtual address, base not included
+#define IMAGE_REL_I386_SEG12 0x0009 // Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address
+#define IMAGE_REL_I386_SECTION 0x000A
+#define IMAGE_REL_I386_SECREL 0x000B
+#define IMAGE_REL_I386_REL32 0x0014 // PC-relative 32-bit reference to the symbols virtual address
+
+//
+// MIPS relocation types.
+//
+
+#define IMAGE_REL_MIPS_ABSOLUTE 0x0000 // Reference is absolute, no relocation is necessary
+#define IMAGE_REL_MIPS_REFHALF 0x0001
+#define IMAGE_REL_MIPS_REFWORD 0x0002
+#define IMAGE_REL_MIPS_JMPADDR 0x0003
+#define IMAGE_REL_MIPS_REFHI 0x0004
+#define IMAGE_REL_MIPS_REFLO 0x0005
+#define IMAGE_REL_MIPS_GPREL 0x0006
+#define IMAGE_REL_MIPS_LITERAL 0x0007
+#define IMAGE_REL_MIPS_SECTION 0x000A
+#define IMAGE_REL_MIPS_SECREL 0x000B
+#define IMAGE_REL_MIPS_SECRELLO 0x000C // Low 16-bit section relative referemce (used for >32k TLS)
+#define IMAGE_REL_MIPS_SECRELHI 0x000D // High 16-bit section relative reference (used for >32k TLS)
+#define IMAGE_REL_MIPS_REFWORDNB 0x0022
+#define IMAGE_REL_MIPS_PAIR 0x0025
+
+//
+// Alpha Relocation types.
+//
+
+#define IMAGE_REL_ALPHA_ABSOLUTE 0x0000
+#define IMAGE_REL_ALPHA_REFLONG 0x0001
+#define IMAGE_REL_ALPHA_REFQUAD 0x0002
+#define IMAGE_REL_ALPHA_GPREL32 0x0003
+#define IMAGE_REL_ALPHA_LITERAL 0x0004
+#define IMAGE_REL_ALPHA_LITUSE 0x0005
+#define IMAGE_REL_ALPHA_GPDISP 0x0006
+#define IMAGE_REL_ALPHA_BRADDR 0x0007
+#define IMAGE_REL_ALPHA_HINT 0x0008
+#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009
+#define IMAGE_REL_ALPHA_REFHI 0x000A
+#define IMAGE_REL_ALPHA_REFLO 0x000B
+#define IMAGE_REL_ALPHA_PAIR 0x000C
+#define IMAGE_REL_ALPHA_MATCH 0x000D
+#define IMAGE_REL_ALPHA_SECTION 0x000E
+#define IMAGE_REL_ALPHA_SECREL 0x000F
+#define IMAGE_REL_ALPHA_REFLONGNB 0x0010
+#define IMAGE_REL_ALPHA_SECRELLO 0x0011 // Low 16-bit section relative reference
+#define IMAGE_REL_ALPHA_SECRELHI 0x0012 // High 16-bit section relative reference
+
+//
+// IBM PowerPC relocation types.
+//
+
+#define IMAGE_REL_PPC_ABSOLUTE 0x0000 // NOP
+#define IMAGE_REL_PPC_ADDR64 0x0001 // 64-bit address
+#define IMAGE_REL_PPC_ADDR32 0x0002 // 32-bit address
+#define IMAGE_REL_PPC_ADDR24 0x0003 // 26-bit address, shifted left 2 (branch absolute)
+#define IMAGE_REL_PPC_ADDR16 0x0004 // 16-bit address
+#define IMAGE_REL_PPC_ADDR14 0x0005 // 16-bit address, shifted left 2 (load doubleword)
+#define IMAGE_REL_PPC_REL24 0x0006 // 26-bit PC-relative offset, shifted left 2 (branch relative)
+#define IMAGE_REL_PPC_REL14 0x0007 // 16-bit PC-relative offset, shifted left 2 (br cond relative)
+#define IMAGE_REL_PPC_TOCREL16 0x0008 // 16-bit offset from TOC base
+#define IMAGE_REL_PPC_TOCREL14 0x0009 // 16-bit offset from TOC base, shifted left 2 (load doubleword)
+
+#define IMAGE_REL_PPC_ADDR32NB 0x000A // 32-bit addr w/o image base
+#define IMAGE_REL_PPC_SECREL 0x000B // va of containing section (as in an image sectionhdr)
+#define IMAGE_REL_PPC_SECTION 0x000C // sectionheader number
+#define IMAGE_REL_PPC_IFGLUE 0x000D // substitute TOC restore instruction iff symbol is glue code
+#define IMAGE_REL_PPC_IMGLUE 0x000E // symbol is glue code; virtual address is TOC restore instruction
+#define IMAGE_REL_PPC_SECREL16 0x000F // va of containing section (limited to 16 bits)
+#define IMAGE_REL_PPC_REFHI 0x0010
+#define IMAGE_REL_PPC_REFLO 0x0011
+#define IMAGE_REL_PPC_PAIR 0x0012
+#define IMAGE_REL_PPC_SECRELLO 0x0013 // Low 16-bit section relative reference (used for >32k TLS)
+#define IMAGE_REL_PPC_SECRELHI 0x0014 // High 16-bit section relative reference (used for >32k TLS)
+
+#define IMAGE_REL_PPC_TYPEMASK 0x00FF // mask to isolate above values in IMAGE_RELOCATION.Type
+
+// Flag bits in IMAGE_RELOCATION.TYPE
+
+#define IMAGE_REL_PPC_NEG 0x0100 // subtract reloc value rather than adding it
+#define IMAGE_REL_PPC_BRTAKEN 0x0200 // fix branch prediction bit to predict branch taken
+#define IMAGE_REL_PPC_BRNTAKEN 0x0400 // fix branch prediction bit to predict branch not taken
+#define IMAGE_REL_PPC_TOCDEFN 0x0800 // toc slot defined in file (or, data in toc)
+
+//
+// Line number format.
+//
+
+typedef struct _IMAGE_LINENUMBER {
+ union {
+ ULONG SymbolTableIndex; // Symbol table index of function name if Linenumber is 0.
+ ULONG VirtualAddress; // Virtual address of line number.
+ } Type;
+ USHORT Linenumber; // Line number.
+} IMAGE_LINENUMBER;
+typedef IMAGE_LINENUMBER UNALIGNED *PIMAGE_LINENUMBER;
+
+#define IMAGE_SIZEOF_LINENUMBER 6
+
+#include "poppack.h" // Back to 4 byte packing
+
+//
+// Based relocation format.
+//
+
+typedef struct _IMAGE_BASE_RELOCATION {
+ ULONG VirtualAddress;
+ ULONG SizeOfBlock;
+// USHORT TypeOffset[1];
+} IMAGE_BASE_RELOCATION;
+typedef IMAGE_BASE_RELOCATION UNALIGNED * PIMAGE_BASE_RELOCATION;
+
+#define IMAGE_SIZEOF_BASE_RELOCATION 8
+
+//
+// Based relocation types.
+//
+
+#define IMAGE_REL_BASED_ABSOLUTE 0
+#define IMAGE_REL_BASED_HIGH 1
+#define IMAGE_REL_BASED_LOW 2
+#define IMAGE_REL_BASED_HIGHLOW 3
+#define IMAGE_REL_BASED_HIGHADJ 4
+#define IMAGE_REL_BASED_MIPS_JMPADDR 5
+#define IMAGE_REL_BASED_SECTION 6
+#define IMAGE_REL_BASED_REL32 7
+
+//
+// Archive format.
+//
+
+#define IMAGE_ARCHIVE_START_SIZE 8
+#define IMAGE_ARCHIVE_START "!<arch>\n"
+#define IMAGE_ARCHIVE_END "`\n"
+#define IMAGE_ARCHIVE_PAD "\n"
+#define IMAGE_ARCHIVE_LINKER_MEMBER "/ "
+#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// "
+
+typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
+ UCHAR Name[16]; // File member name - `/' terminated.
+ UCHAR Date[12]; // File member date - decimal.
+ UCHAR UserID[6]; // File member user id - decimal.
+ UCHAR GroupID[6]; // File member group id - decimal.
+ UCHAR Mode[8]; // File member mode - octal.
+ UCHAR Size[10]; // File member size - decimal.
+ UCHAR EndHeader[2]; // String to end header.
+} IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER;
+
+#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
+
+//
+// DLL support.
+//
+
+//
+// Export Format
+//
+
+typedef struct _IMAGE_EXPORT_DIRECTORY {
+ ULONG Characteristics;
+ ULONG TimeDateStamp;
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ ULONG Name;
+ ULONG Base;
+ ULONG NumberOfFunctions;
+ ULONG NumberOfNames;
+ PULONG *AddressOfFunctions;
+ PULONG *AddressOfNames;
+ PUSHORT *AddressOfNameOrdinals;
+} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
+
+//
+// Import Format
+//
+
+typedef struct _IMAGE_IMPORT_BY_NAME {
+ USHORT Hint;
+ UCHAR Name[1];
+} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
+
+typedef struct _IMAGE_THUNK_DATA {
+ union {
+ PUCHAR ForwarderString;
+ PULONG Function;
+ ULONG Ordinal;
+ PIMAGE_IMPORT_BY_NAME AddressOfData;
+ } u1;
+} IMAGE_THUNK_DATA;
+typedef IMAGE_THUNK_DATA * PIMAGE_THUNK_DATA;
+
+#define IMAGE_ORDINAL_FLAG 0x80000000
+#define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0)
+#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff)
+
+typedef struct _IMAGE_IMPORT_DESCRIPTOR {
+ union {
+ ULONG Characteristics; // 0 for terminating null import descriptor
+ PIMAGE_THUNK_DATA OriginalFirstThunk; // RVA to original unbound IAT
+ };
+ ULONG TimeDateStamp; // 0 if not bound,
+ // -1 if bound, and real date\time stamp
+ // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
+ // O.W. date/time stamp of DLL bound to (Old BIND)
+
+ ULONG ForwarderChain; // -1 if no forwarders
+ ULONG Name;
+ PIMAGE_THUNK_DATA FirstThunk; // RVA to IAT (if bound this IAT has actual addresses)
+} IMAGE_IMPORT_DESCRIPTOR;
+typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR;
+
+//
+// New format import descriptors pointed to by DataDirectory[ IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT ]
+//
+
+typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
+ ULONG TimeDateStamp;
+ USHORT OffsetModuleName;
+ USHORT NumberOfModuleForwarderRefs;
+// Array of zero or more IMAGE_BOUND_FORWARDER_REF follows
+} IMAGE_BOUND_IMPORT_DESCRIPTOR, *PIMAGE_BOUND_IMPORT_DESCRIPTOR;
+
+typedef struct _IMAGE_BOUND_FORWARDER_REF {
+ ULONG TimeDateStamp;
+ USHORT OffsetModuleName;
+ USHORT Reserved;
+} IMAGE_BOUND_FORWARDER_REF, *PIMAGE_BOUND_FORWARDER_REF;
+
+
+//
+// Thread Local Storage
+//
+
+typedef VOID
+(NTAPI *PIMAGE_TLS_CALLBACK) (
+ PVOID DllHandle,
+ ULONG Reason,
+ PVOID Reserved
+ );
+
+typedef struct _IMAGE_TLS_DIRECTORY {
+ ULONG StartAddressOfRawData;
+ ULONG EndAddressOfRawData;
+ PULONG AddressOfIndex;
+ PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
+ ULONG SizeOfZeroFill;
+ ULONG Characteristics;
+} IMAGE_TLS_DIRECTORY, *PIMAGE_TLS_DIRECTORY;
+
+
+//
+// Resource Format.
+//
+
+//
+// Resource directory consists of two counts, following by a variable length
+// array of directory entries. The first count is the number of entries at
+// beginning of the array that have actual names associated with each entry.
+// The entries are in ascending order, case insensitive strings. The second
+// count is the number of entries that immediately follow the named entries.
+// This second count identifies the number of entries that have 16-bit integer
+// Ids as their name. These entries are also sorted in ascending order.
+//
+// This structure allows fast lookup by either name or number, but for any
+// given resource entry only one form of lookup is supported, not both.
+// This is consistant with the syntax of the .RC file and the .RES file.
+//
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY {
+ ULONG Characteristics;
+ ULONG TimeDateStamp;
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ USHORT NumberOfNamedEntries;
+ USHORT NumberOfIdEntries;
+// IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];
+} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;
+
+#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
+#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
+
+//
+// Each directory contains the 32-bit Name of the entry and an offset,
+// relative to the beginning of the resource directory of the data associated
+// with this directory entry. If the name of the entry is an actual text
+// string instead of an integer Id, then the high order bit of the name field
+// is set to one and the low order 31-bits are an offset, relative to the
+// beginning of the resource directory of the string, which is of type
+// IMAGE_RESOURCE_DIRECTORY_STRING. Otherwise the high bit is clear and the
+// low-order 16-bits are the integer Id that identify this resource directory
+// entry. If the directory entry is yet another resource directory (i.e. a
+// subdirectory), then the high order bit of the offset field will be
+// set to indicate this. Otherwise the high bit is clear and the offset
+// field points to a resource data entry.
+//
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
+ union {
+ struct {
+ ULONG NameOffset:31;
+ ULONG NameIsString:1;
+ };
+ ULONG Name;
+ USHORT Id;
+ };
+ union {
+ ULONG OffsetToData;
+ struct {
+ ULONG OffsetToDirectory:31;
+ ULONG DataIsDirectory:1;
+ };
+ };
+} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY;
+
+//
+// For resource directory entries that have actual string names, the Name
+// field of the directory entry points to an object of the following type.
+// All of these string objects are stored together after the last resource
+// directory entry and before the first resource data object. This minimizes
+// the impact of these variable length objects on the alignment of the fixed
+// size directory entry objects.
+//
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
+ USHORT Length;
+ CHAR NameString[ 1 ];
+} IMAGE_RESOURCE_DIRECTORY_STRING, *PIMAGE_RESOURCE_DIRECTORY_STRING;
+
+
+typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
+ USHORT Length;
+ WCHAR NameString[ 1 ];
+} IMAGE_RESOURCE_DIR_STRING_U, *PIMAGE_RESOURCE_DIR_STRING_U;
+
+
+//
+// Each resource data entry describes a leaf node in the resource directory
+// tree. It contains an offset, relative to the beginning of the resource
+// directory of the data for the resource, a size field that gives the number
+// of bytes of data at that offset, a CodePage that should be used when
+// decoding code point values within the resource data. Typically for new
+// applications the code page would be the unicode code page.
+//
+
+typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
+ ULONG OffsetToData;
+ ULONG Size;
+ ULONG CodePage;
+ ULONG Reserved;
+} IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY;
+
+//
+// Load Configuration Directory Entry
+//
+
+typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
+ ULONG Characteristics;
+ ULONG TimeDateStamp;
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ ULONG GlobalFlagsClear;
+ ULONG GlobalFlagsSet;
+ ULONG CriticalSectionDefaultTimeout;
+ ULONG DeCommitFreeBlockThreshold;
+ ULONG DeCommitTotalFreeThreshold;
+ PVOID LockPrefixTable;
+ ULONG MaximumAllocationSize;
+ ULONG VirtualMemoryThreshold;
+ ULONG ProcessHeapFlags;
+ ULONG ProcessAffinityMask;
+ ULONG Reserved[ 3 ];
+} IMAGE_LOAD_CONFIG_DIRECTORY, *PIMAGE_LOAD_CONFIG_DIRECTORY;
+
+
+//
+// Function table entry format for MIPS/ALPHA images. Function table is
+// pointed to by the IMAGE_DIRECTORY_ENTRY_EXCEPTION directory entry.
+// This definition duplicates ones in ntmips.h and ntalpha.h for use
+// by portable image file mungers.
+//
+
+typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
+ ULONG BeginAddress;
+ ULONG EndAddress;
+ PVOID ExceptionHandler;
+ PVOID HandlerData;
+ ULONG PrologEndAddress;
+} IMAGE_RUNTIME_FUNCTION_ENTRY, *PIMAGE_RUNTIME_FUNCTION_ENTRY;
+
+//
+// Debug Format
+//
+
+typedef struct _IMAGE_DEBUG_DIRECTORY {
+ ULONG Characteristics;
+ ULONG TimeDateStamp;
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ ULONG Type;
+ ULONG SizeOfData;
+ ULONG AddressOfRawData;
+ ULONG PointerToRawData;
+} IMAGE_DEBUG_DIRECTORY, *PIMAGE_DEBUG_DIRECTORY;
+
+#define IMAGE_DEBUG_TYPE_UNKNOWN 0
+#define IMAGE_DEBUG_TYPE_COFF 1
+#define IMAGE_DEBUG_TYPE_CODEVIEW 2
+#define IMAGE_DEBUG_TYPE_FPO 3
+#define IMAGE_DEBUG_TYPE_MISC 4
+#define IMAGE_DEBUG_TYPE_EXCEPTION 5
+#define IMAGE_DEBUG_TYPE_FIXUP 6
+#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
+#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
+
+// end_winnt
+
+// IMAGE_DEBUG_TYPE values > 0x7FFFFFFF are reserved for Lego
+
+// begin_winnt
+
+typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
+ ULONG NumberOfSymbols;
+ ULONG LvaToFirstSymbol;
+ ULONG NumberOfLinenumbers;
+ ULONG LvaToFirstLinenumber;
+ ULONG RvaToFirstByteOfCode;
+ ULONG RvaToLastByteOfCode;
+ ULONG RvaToFirstByteOfData;
+ ULONG RvaToLastByteOfData;
+} IMAGE_COFF_SYMBOLS_HEADER, *PIMAGE_COFF_SYMBOLS_HEADER;
+
+#define FRAME_FPO 0
+#define FRAME_TRAP 1
+#define FRAME_TSS 2
+#define FRAME_NONFPO 3
+
+typedef struct _FPO_DATA {
+ ULONG ulOffStart; // offset 1st byte of function code
+ ULONG cbProcSize; // # bytes in function
+ ULONG cdwLocals; // # bytes in locals/4
+ USHORT cdwParams; // # bytes in params/4
+ USHORT cbProlog : 8; // # bytes in prolog
+ USHORT cbRegs : 3; // # regs saved
+ USHORT fHasSEH : 1; // TRUE if SEH in func
+ USHORT fUseBP : 1; // TRUE if EBP has been allocated
+ USHORT reserved : 1; // reserved for future use
+ USHORT cbFrame : 2; // frame type
+} FPO_DATA, *PFPO_DATA;
+#define SIZEOF_RFPO_DATA 16
+
+
+#define IMAGE_DEBUG_MISC_EXENAME 1
+
+typedef struct _IMAGE_DEBUG_MISC {
+ ULONG DataType; // type of misc data, see defines
+ ULONG Length; // total length of record, rounded to four
+ // byte multiple.
+ BOOLEAN Unicode; // TRUE if data is unicode string
+ UCHAR Reserved[ 3 ];
+ UCHAR Data[ 1 ]; // Actual data
+} IMAGE_DEBUG_MISC, *PIMAGE_DEBUG_MISC;
+
+
+//
+// Function table extracted from MIPS/ALPHA images. Does not contain
+// information needed only for runtime support. Just those fields for
+// each entry needed by a debugger.
+//
+
+typedef struct _IMAGE_FUNCTION_ENTRY {
+ ULONG StartingAddress;
+ ULONG EndingAddress;
+ ULONG EndOfPrologue;
+} IMAGE_FUNCTION_ENTRY, *PIMAGE_FUNCTION_ENTRY;
+
+//
+// Debugging information can be stripped from an image file and placed
+// in a separate .DBG file, whose file name part is the same as the
+// image file name part (e.g. symbols for CMD.EXE could be stripped
+// and placed in CMD.DBG). This is indicated by the IMAGE_FILE_DEBUG_STRIPPED
+// flag in the Characteristics field of the file header. The beginning of
+// the .DBG file contains the following structure which captures certain
+// information from the image file. This allows a debug to proceed even if
+// the original image file is not accessable. This header is followed by
+// zero of more IMAGE_SECTION_HEADER structures, followed by zero or more
+// IMAGE_DEBUG_DIRECTORY structures. The latter structures and those in
+// the image file contain file offsets relative to the beginning of the
+// .DBG file.
+//
+// If symbols have been stripped from an image, the IMAGE_DEBUG_MISC structure
+// is left in the image file, but not mapped. This allows a debugger to
+// compute the name of the .DBG file, from the name of the image in the
+// IMAGE_DEBUG_MISC structure.
+//
+
+typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
+ USHORT Signature;
+ USHORT Flags;
+ USHORT Machine;
+ USHORT Characteristics;
+ ULONG TimeDateStamp;
+ ULONG CheckSum;
+ ULONG ImageBase;
+ ULONG SizeOfImage;
+ ULONG NumberOfSections;
+ ULONG ExportedNamesSize;
+ ULONG DebugDirectorySize;
+ ULONG SectionAlignment;
+ ULONG Reserved[2];
+} IMAGE_SEPARATE_DEBUG_HEADER, *PIMAGE_SEPARATE_DEBUG_HEADER;
+
+#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
+
+#define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000
+#define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 // when DBG was updated, the
+ // old checksum didn't match.
+
+#include "poppack.h" // Return to the default
+
+//
+// End Image Format
+//
+
+// end_winnt
+
+#endif // _NTIMAGE_
diff --git a/public/sdk/inc/ntimp.idl b/public/sdk/inc/ntimp.idl
new file mode 100644
index 000000000..e322320d5
--- /dev/null
+++ b/public/sdk/inc/ntimp.idl
@@ -0,0 +1,56 @@
+/*++
+
+Copyright (c) 1991 Microsoft Corporation
+
+Module Name:
+
+ ntimp.idl
+
+Abstract:
+
+ This file is necessary to create RPC interfaces that require the use
+ of ntos2 types. The .idl file for the RPC product should contain a
+ line in the interface body that imports this file. For example:
+
+ import "ntimp.h";
+
+ Doing this causes the MIDL generated header file to contain the
+ following line:
+
+ #include "ntimp.h"
+
+ If this technique is not used, and instead the .idl file for the RPC
+ product simply contains #include <ntimp.h>, then the contents of
+ ntimp.h will be expanded in the MIDL generated header file. This
+ can lead to duplicate definition problems later when the RPC client
+ or RPC server code needs to include both the MIDL generated header file
+ and a file that is included in samimp.h.
+
+Author:
+ Jim Kelly (JimK) May 23, 1991
+
+Environment:
+
+ User Mode
+
+Revision History:
+
+--*/
+[
+ uuid(12345678-1234-ABCD-EF00-0123476589AB), //FIX, FIX Need real uuid
+ version(0.0),
+ endpoint("mscn_np:[\pipe\ntrpc]"),
+ pointer_default(unique)
+]
+
+interface samimp
+
+{
+
+#ifndef MIDL_PASS
+#define MIDL_PASS
+#endif \\MIDL_PASS
+
+#include "ntimp.h"
+
+}
diff --git a/public/sdk/inc/ntioapi.h b/public/sdk/inc/ntioapi.h
new file mode 100644
index 000000000..056ca2521
--- /dev/null
+++ b/public/sdk/inc/ntioapi.h
@@ -0,0 +1,2002 @@
+/*++ BUILD Version: 0006 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntioapi.h
+
+Abstract:
+
+ This module contains the user APIs for the NT I/O system.
+
+Author:
+
+ Darryl E. Havens (darrylh) 12-Apr-1989
+
+
+Revision History:
+
+
+--*/
+
+#ifndef _NTIOAPI_
+#define _NTIOAPI_
+
+//
+// This file contains io definitions that must be portable across operating
+// systems (i.e. DOS)
+//
+
+#include <devioctl.h>
+
+// begin_ntddk begin_nthal
+
+// begin_winnt
+
+//
+// Define access rights to files and directories
+//
+
+//
+// The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in
+// devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these
+// constants *MUST* always be in sync.
+// The values are redefined in devioctl.h because they must be available to
+// both DOS and NT.
+//
+
+#define FILE_READ_DATA ( 0x0001 ) // file & pipe
+#define FILE_LIST_DIRECTORY ( 0x0001 ) // directory
+
+#define FILE_WRITE_DATA ( 0x0002 ) // file & pipe
+#define FILE_ADD_FILE ( 0x0002 ) // directory
+
+#define FILE_APPEND_DATA ( 0x0004 ) // file
+#define FILE_ADD_SUBDIRECTORY ( 0x0004 ) // directory
+#define FILE_CREATE_PIPE_INSTANCE ( 0x0004 ) // named pipe
+
+#define FILE_READ_EA ( 0x0008 ) // file & directory
+
+#define FILE_WRITE_EA ( 0x0010 ) // file & directory
+
+#define FILE_EXECUTE ( 0x0020 ) // file
+#define FILE_TRAVERSE ( 0x0020 ) // directory
+
+#define FILE_DELETE_CHILD ( 0x0040 ) // directory
+
+#define FILE_READ_ATTRIBUTES ( 0x0080 ) // all
+
+#define FILE_WRITE_ATTRIBUTES ( 0x0100 ) // all
+
+#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
+
+#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ |\
+ FILE_READ_DATA |\
+ FILE_READ_ATTRIBUTES |\
+ FILE_READ_EA |\
+ SYNCHRONIZE)
+
+
+#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\
+ FILE_WRITE_DATA |\
+ FILE_WRITE_ATTRIBUTES |\
+ FILE_WRITE_EA |\
+ FILE_APPEND_DATA |\
+ SYNCHRONIZE)
+
+
+#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ FILE_READ_ATTRIBUTES |\
+ FILE_EXECUTE |\
+ SYNCHRONIZE)
+
+// end_winnt
+
+
+//
+// Define share access rights to files and directories
+//
+
+#define FILE_SHARE_READ 0x00000001 // winnt
+#define FILE_SHARE_WRITE 0x00000002 // winnt
+#define FILE_SHARE_DELETE 0x00000004 // winnt
+#define FILE_SHARE_VALID_FLAGS 0x00000007
+
+//
+// Define the file attributes values
+//
+// Note: 0x00000008 is reserved for use for the old DOS VOLID (volume ID)
+// and is therefore not considered valid in NT.
+//
+// Note: 0x00000010 is reserved for use for the old DOS SUBDIRECTORY flag
+// and is therefore not considered valid in NT. This flag has
+// been disassociated with file attributes since the other flags are
+// protected with READ_ and WRITE_ATTRIBUTES access to the file.
+//
+// Note: Note also that the order of these flags is set to allow both the
+// FAT and the Pinball File Systems to directly set the attributes
+// flags in attributes words without having to pick each flag out
+// individually. The order of these flags should not be changed!
+//
+
+#define FILE_ATTRIBUTE_READONLY 0x00000001 // winnt
+#define FILE_ATTRIBUTE_HIDDEN 0x00000002 // winnt
+#define FILE_ATTRIBUTE_SYSTEM 0x00000004 // winnt
+#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 // winnt
+#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 // winnt
+#define FILE_ATTRIBUTE_NORMAL 0x00000080 // winnt
+#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 // winnt
+#define FILE_ATTRIBUTE_RESERVED0 0x00000200
+#define FILE_ATTRIBUTE_RESERVED1 0x00000400
+#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 // winnt
+#define FILE_ATTRIBUTE_OFFLINE 0x00001000 // winnt
+#define FILE_ATTRIBUTE_PROPERTY_SET 0x00002000
+#define FILE_ATTRIBUTE_VALID_FLAGS 0x00003fb7
+#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x00003fa7
+
+//
+// Define the create disposition values
+//
+
+#define FILE_SUPERSEDE 0x00000000
+#define FILE_OPEN 0x00000001
+#define FILE_CREATE 0x00000002
+#define FILE_OPEN_IF 0x00000003
+#define FILE_OVERWRITE 0x00000004
+#define FILE_OVERWRITE_IF 0x00000005
+#define FILE_MAXIMUM_DISPOSITION 0x00000005
+
+// end_ntddk end_nthal
+
+//
+// Storage types to be created
+//
+
+typedef enum _FILE_STORAGE_TYPE {
+ StorageTypeDefault = 1,
+ StorageTypeDirectory = 2,
+ StorageTypeFile = 3,
+ StorageTypeJunctionPoint = 5,
+ StorageTypeCatalog = 6,
+ StorageTypeStructuredStorage= 7,
+ StorageTypeEmbedding = 8,
+ StorageTypeStream = 9
+} FILE_STORAGE_TYPE;
+
+// begin_ntddk begin_nthal
+
+//
+// Define the create/open option flags
+//
+
+#define FILE_DIRECTORY_FILE 0x00000001
+#define FILE_WRITE_THROUGH 0x00000002
+#define FILE_SEQUENTIAL_ONLY 0x00000004
+#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
+
+#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
+#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
+#define FILE_NON_DIRECTORY_FILE 0x00000040
+#define FILE_CREATE_TREE_CONNECTION 0x00000080
+
+#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
+#define FILE_NO_EA_KNOWLEDGE 0x00000200
+//UNUSED 0x00000400
+#define FILE_RANDOM_ACCESS 0x00000800
+
+#define FILE_DELETE_ON_CLOSE 0x00001000
+#define FILE_OPEN_BY_FILE_ID 0x00002000
+#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
+#define FILE_NO_COMPRESSION 0x00008000
+
+// end_ntddk end_nthal
+#define FILE_STORAGE_TYPE_SPECIFIED 0x00000041 // FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE
+#define FILE_STORAGE_TYPE_DEFAULT (StorageTypeDefault << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_DIRECTORY (StorageTypeDirectory << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_FILE (StorageTypeFile << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_DOCFILE (StorageTypeDocfile << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_JUNCTION_POINT (StorageTypeJunctionPoint << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_CATALOG (StorageTypeCatalog << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_STRUCTURED_STORAGE (StorageTypeStructuredStorage << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_EMBEDDING (StorageTypeEmbedding << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_STORAGE_TYPE_STREAM (StorageTypeStream << FILE_STORAGE_TYPE_SHIFT)
+#define FILE_MINIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_DEFAULT
+#define FILE_MAXIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_STREAM
+#define FILE_STORAGE_TYPE_MASK 0x000f0000
+#define FILE_STORAGE_TYPE_SHIFT 16
+
+// begin_ntddk begin_nthal
+
+#define FILE_RESERVE_OPFILTER 0x00100000
+#define FILE_TRANSACTED_MODE 0x00200000
+#define FILE_OPEN_OFFLINE_FILE 0x00400000
+
+#define FILE_VALID_OPTION_FLAGS 0x007fffff
+#define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
+#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
+#define FILE_VALID_SET_FLAGS 0x00000036
+
+//
+// Define the I/O status information return values for NtCreateFile/NtOpenFile
+//
+
+#define FILE_SUPERSEDED 0x00000000
+#define FILE_OPENED 0x00000001
+#define FILE_CREATED 0x00000002
+#define FILE_OVERWRITTEN 0x00000003
+#define FILE_EXISTS 0x00000004
+#define FILE_DOES_NOT_EXIST 0x00000005
+
+// end_ntddk end_nthal
+
+//
+// Define the I/O status information return values for requests for oplocks
+// via NtFsControlFile
+//
+
+#define FILE_OPLOCK_BROKEN_TO_LEVEL_2 0x00000007
+#define FILE_OPLOCK_BROKEN_TO_NONE 0x00000008
+
+//
+// Define the I/O status information return values for NtCreateFile/NtOpenFile
+// when the sharing access fails but a batch oplock break is in progress
+//
+
+#define FILE_OPBATCH_BREAK_UNDERWAY 0x00000009
+
+//
+// Define the filter flags for NtNotifyChangeDirectoryFile
+//
+
+#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 // winnt
+#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 // winnt
+#define FILE_NOTIFY_CHANGE_NAME 0x00000003
+#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 // winnt
+#define FILE_NOTIFY_CHANGE_SIZE 0x00000008 // winnt
+#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 // winnt
+#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 // winnt
+#define FILE_NOTIFY_CHANGE_CREATION 0x00000040 // winnt
+#define FILE_NOTIFY_CHANGE_EA 0x00000080
+#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 // winnt
+#define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
+#define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
+#define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
+#define FILE_NOTIFY_VALID_MASK 0x00000fff
+
+//
+// Define the file action type codes for NtNotifyChangeDirectoryFile
+//
+
+#define FILE_ACTION_ADDED 0x00000001 // winnt
+#define FILE_ACTION_REMOVED 0x00000002 // winnt
+#define FILE_ACTION_MODIFIED 0x00000003 // winnt
+#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 // winnt
+#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 // winnt
+#define FILE_ACTION_ADDED_STREAM 0x00000006
+#define FILE_ACTION_REMOVED_STREAM 0x00000007
+#define FILE_ACTION_MODIFIED_STREAM 0x00000008
+
+//
+// Define the NamedPipeType flags for NtCreateNamedPipeFile
+//
+
+#define FILE_PIPE_BYTE_STREAM_TYPE 0x00000000
+#define FILE_PIPE_MESSAGE_TYPE 0x00000001
+
+//
+// Define the ReadMode flags for NtCreateNamedPipeFile
+//
+
+#define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
+#define FILE_PIPE_MESSAGE_MODE 0x00000001
+
+//
+// Define the CompletionMode flags for NtCreateNamedPipeFile
+//
+
+#define FILE_PIPE_QUEUE_OPERATION 0x00000000
+#define FILE_PIPE_COMPLETE_OPERATION 0x00000001
+
+//
+// Define the NamedPipeConfiguration flags for NtQueryInformation
+//
+
+#define FILE_PIPE_INBOUND 0x00000000
+#define FILE_PIPE_OUTBOUND 0x00000001
+#define FILE_PIPE_FULL_DUPLEX 0x00000002
+
+//
+// Define the NamedPipeState flags for NtQueryInformation
+//
+
+#define FILE_PIPE_DISCONNECTED_STATE 0x00000001
+#define FILE_PIPE_LISTENING_STATE 0x00000002
+#define FILE_PIPE_CONNECTED_STATE 0x00000003
+#define FILE_PIPE_CLOSING_STATE 0x00000004
+
+//
+// Define the NamedPipeEnd flags for NtQueryInformation
+//
+
+#define FILE_PIPE_CLIENT_END 0x00000000
+#define FILE_PIPE_SERVER_END 0x00000001
+
+//
+// Special values for mailslot information.
+//
+
+//
+// Special value for NextMessageSize to indicate that there is no next
+// message.
+//
+
+#define MAILSLOT_NO_MESSAGE ((ULONG)-1) // winnt
+
+//
+// Special value for mailslot size creation to indicate that MSFS should
+// choose the size of the mailslot buffer.
+//
+
+#define MAILSLOT_SIZE_AUTO 0
+
+//
+// Special value for read timeout to indicate that mailslot reads should
+// never timeout.
+//
+
+#define MAILSLOT_WAIT_FOREVER ((ULONG)-1) // winnt
+
+// begin_ntddk begin_nthal
+//
+// Define special ByteOffset parameters for read and write operations
+//
+
+#define FILE_WRITE_TO_END_OF_FILE 0xffffffff
+#define FILE_USE_FILE_POINTER_POSITION 0xfffffffe
+
+//
+// Define alignment requirement values
+//
+
+#define FILE_BYTE_ALIGNMENT 0x00000000
+#define FILE_WORD_ALIGNMENT 0x00000001
+#define FILE_LONG_ALIGNMENT 0x00000003
+#define FILE_QUAD_ALIGNMENT 0x00000007
+#define FILE_OCTA_ALIGNMENT 0x0000000f
+#define FILE_32_BYTE_ALIGNMENT 0x0000001f
+#define FILE_64_BYTE_ALIGNMENT 0x0000003f
+#define FILE_128_BYTE_ALIGNMENT 0x0000007f
+#define FILE_256_BYTE_ALIGNMENT 0x000000ff
+#define FILE_512_BYTE_ALIGNMENT 0x000001ff
+
+//
+// Define the maximum length of a filename string
+//
+
+#define MAXIMUM_FILENAME_LENGTH 256
+
+// end_ntddk end_nthal
+
+//
+// Define the file system attributes flags
+//
+
+#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 // winnt
+#define FILE_CASE_PRESERVED_NAMES 0x00000002 // winnt
+#define FILE_UNICODE_ON_DISK 0x00000004 // winnt
+#define FILE_PERSISTENT_ACLS 0x00000008 // winnt
+#define FILE_FILE_COMPRESSION 0x00000010 // winnt
+#define FILE_VOLUME_IS_COMPRESSED 0x00008000 // winnt
+
+//
+// Define the flags for NtSet(Query)EaFile service structure entries
+//
+
+#define FILE_NEED_EA 0x00000080
+
+//
+// Define EA type values
+//
+
+#define FILE_EA_TYPE_BINARY 0xfffe
+#define FILE_EA_TYPE_ASCII 0xfffd
+#define FILE_EA_TYPE_BITMAP 0xfffb
+#define FILE_EA_TYPE_METAFILE 0xfffa
+#define FILE_EA_TYPE_ICON 0xfff9
+#define FILE_EA_TYPE_EA 0xffee
+#define FILE_EA_TYPE_MVMT 0xffdf
+#define FILE_EA_TYPE_MVST 0xffde
+#define FILE_EA_TYPE_ASN1 0xffdd
+#define FILE_EA_TYPE_FAMILY_IDS 0xff01
+
+// begin_ntddk begin_nthal
+//
+// Define the various device characteristics flags
+//
+
+#define FILE_REMOVABLE_MEDIA 0x00000001
+#define FILE_READ_ONLY_DEVICE 0x00000002
+#define FILE_FLOPPY_DISKETTE 0x00000004
+#define FILE_WRITE_ONCE_MEDIA 0x00000008
+#define FILE_REMOTE_DEVICE 0x00000010
+#define FILE_DEVICE_IS_MOUNTED 0x00000020
+#define FILE_VIRTUAL_VOLUME 0x00000040
+
+// end_ntddk end_nthal
+
+// begin_ntddk begin_nthal
+//
+// Define the base asynchronous I/O argument types
+//
+
+typedef struct _IO_STATUS_BLOCK {
+ NTSTATUS Status;
+ ULONG Information;
+} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
+
+//
+// Define an Asynchronous Procedure Call from I/O viewpoint
+//
+
+typedef
+VOID
+(*PIO_APC_ROUTINE) (
+ IN PVOID ApcContext,
+ IN PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG Reserved
+ );
+
+// end_ntddk end_nthal
+
+// begin_winnt
+
+//
+// Define the file notification information structure
+//
+
+typedef struct _FILE_NOTIFY_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG Action;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
+
+// end_winnt
+
+// begin_ntddk begin_nthal
+//
+// Define the file information class values
+//
+// WARNING: The order of the following values are assumed by the I/O system.
+// Any changes made here should be reflected there as well.
+//
+
+typedef enum _FILE_INFORMATION_CLASS {
+ FileDirectoryInformation = 1,
+ FileFullDirectoryInformation,
+ FileBothDirectoryInformation,
+ FileBasicInformation,
+ FileStandardInformation,
+ FileInternalInformation,
+ FileEaInformation,
+ FileAccessInformation,
+ FileNameInformation,
+ FileRenameInformation,
+ FileLinkInformation,
+ FileNamesInformation,
+ FileDispositionInformation,
+ FilePositionInformation,
+ FileFullEaInformation,
+ FileModeInformation,
+ FileAlignmentInformation,
+ FileAllInformation,
+ FileAllocationInformation,
+ FileEndOfFileInformation,
+ FileAlternateNameInformation,
+ FileStreamInformation,
+ FilePipeInformation,
+ FilePipeLocalInformation,
+ FilePipeRemoteInformation,
+ FileMailslotQueryInformation,
+ FileMailslotSetInformation,
+ FileCompressionInformation,
+ FileCopyOnWriteInformation,
+ FileCompletionInformation,
+ FileMoveClusterInformation,
+ FileOleClassIdInformation,
+ FileOleStateBitsInformation,
+ FileNetworkOpenInformation,
+ FileObjectIdInformation,
+ FileOleAllInformation,
+ FileOleDirectoryInformation,
+ FileContentIndexInformation,
+ FileInheritContentIndexInformation,
+ FileOleInformation,
+ FileMaximumInformation
+} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+
+//
+// Define the various structures which are returned on query operations
+//
+
+// end_ntddk end_nthal
+
+//
+// NtQueryDirectoryFile return types:
+//
+// FILE_DIRECTORY_INFORMATION
+// FILE_FULL_DIR_INFORMATION
+// FILE_BOTH_DIR_INFORMATION
+// FILE_NAMES_INFORMATION
+// FILE_OLE_DIR_INFORMATION
+//
+// NtQueryOleDirectoryFile return types:
+//
+// FILE_DIRECTORY_INFORMATION
+// FILE_OLE_DIR_INFORMATION
+//
+
+typedef struct _FILE_DIRECTORY_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
+
+typedef struct _FILE_FULL_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ WCHAR FileName[1];
+} FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
+
+typedef struct _FILE_BOTH_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ ULONG EaSize;
+ CCHAR ShortNameLength;
+ WCHAR ShortName[12];
+ WCHAR FileName[1];
+} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
+
+typedef struct _FILE_NAMES_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
+
+typedef struct _FILE_OLE_DIR_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ ULONG FileAttributes;
+ ULONG FileNameLength;
+ FILE_STORAGE_TYPE StorageType;
+ GUID OleClassId;
+ ULONG OleStateBits;
+ BOOLEAN ContentIndexDisable;
+ BOOLEAN InheritContentIndexDisable;
+ WCHAR FileName[1];
+} FILE_OLE_DIR_INFORMATION, *PFILE_OLE_DIR_INFORMATION;
+
+//
+// The following constants provide addition meta characters to fully
+// support the more obscure aspects of DOS wild card processing.
+//
+
+#define ANSI_DOS_STAR ('<')
+#define ANSI_DOS_QM ('>')
+#define ANSI_DOS_DOT ('"')
+
+#define DOS_STAR (L'<')
+#define DOS_QM (L'>')
+#define DOS_DOT (L'"')
+
+//
+// NtQuery(Set)InformationFile return types:
+//
+// FILE_BASIC_INFORMATION
+// FILE_STANDARD_INFORMATION
+// FILE_INTERNAL_INFORMATION
+// FILE_EA_INFORMATION
+// FILE_ACCESS_INFORMATION
+// FILE_POSITION_INFORMATION
+// FILE_MODE_INFORMATION
+// FILE_ALIGNMENT_INFORMATION
+// FILE_NAME_INFORMATION
+// FILE_ALL_INFORMATION
+//
+// FILE_NETWORK_OPEN_INFORMATION
+//
+// FILE_ALLOCATION_INFORMATION
+// FILE_COMPRESSION_INFORMATION
+// FILE_COPY_ON_WRITE_INFORMATION
+// FILE_DISPOSITION_INFORMATION
+// FILE_END_OF_FILE_INFORMATION
+// FILE_LINK_INFORMATION
+// FILE_MOVE_CLUSTER_INFORMATION
+// FILE_RENAME_INFORMATION
+// FILE_STREAM_INFORMATION
+// FILE_COMPLETION_INFORMATION
+//
+// FILE_OLE_CLASSID_INFORMATION
+// FILE_OLE_STATE_BITS_INFORMATION
+// FILE_OBJECTID_INFORMATION
+// FILE_OLE_INFORMATION
+// FILE_OLE_ALL_INFORMATION
+//
+// FILE_PIPE_INFORMATION
+// FILE_PIPE_LOCAL_INFORMATION
+// FILE_PIPE_REMOTE_INFORMATION
+//
+// FILE_MAILSLOT_QUERY_INFORMATION
+// FILE_MAILSLOT_SET_INFORMATION
+//
+
+typedef struct _FILE_BASIC_INFORMATION { // ntddk nthal
+ LARGE_INTEGER CreationTime; // ntddk nthal
+ LARGE_INTEGER LastAccessTime; // ntddk nthal
+ LARGE_INTEGER LastWriteTime; // ntddk nthal
+ LARGE_INTEGER ChangeTime; // ntddk nthal
+ ULONG FileAttributes; // ntddk nthal
+} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION; // ntddk nthal
+ // ntddk nthal
+typedef struct _FILE_STANDARD_INFORMATION { // ntddk nthal
+ LARGE_INTEGER AllocationSize; // ntddk nthal
+ LARGE_INTEGER EndOfFile; // ntddk nthal
+ ULONG NumberOfLinks; // ntddk nthal
+ BOOLEAN DeletePending; // ntddk nthal
+ BOOLEAN Directory; // ntddk nthal
+} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION; // ntddk nthal
+ // ntddk nthal
+typedef struct _FILE_INTERNAL_INFORMATION {
+ LARGE_INTEGER IndexNumber;
+} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
+
+typedef struct _FILE_EA_INFORMATION {
+ ULONG EaSize;
+} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
+
+typedef struct _FILE_ACCESS_INFORMATION {
+ ACCESS_MASK AccessFlags;
+} FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
+
+typedef struct _FILE_POSITION_INFORMATION { // ntddk nthal
+ LARGE_INTEGER CurrentByteOffset; // ntddk nthal
+} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION; // ntddk nthal
+ // ntddk nthal
+typedef struct _FILE_MODE_INFORMATION {
+ ULONG Mode;
+} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
+
+typedef struct _FILE_ALIGNMENT_INFORMATION { // ntddk nthal
+ ULONG AlignmentRequirement; // ntddk nthal
+} FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION; // ntddk nthal
+ // ntddk nthal
+typedef struct _FILE_NAME_INFORMATION {
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
+
+typedef struct _FILE_ALL_INFORMATION {
+ FILE_BASIC_INFORMATION BasicInformation;
+ FILE_STANDARD_INFORMATION StandardInformation;
+ FILE_INTERNAL_INFORMATION InternalInformation;
+ FILE_EA_INFORMATION EaInformation;
+ FILE_ACCESS_INFORMATION AccessInformation;
+ FILE_POSITION_INFORMATION PositionInformation;
+ FILE_MODE_INFORMATION ModeInformation;
+ FILE_ALIGNMENT_INFORMATION AlignmentInformation;
+ FILE_NAME_INFORMATION NameInformation;
+} FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
+
+typedef struct _FILE_NETWORK_OPEN_INFORMATION { // ntddk nthal
+ LARGE_INTEGER CreationTime; // ntddk nthal
+ LARGE_INTEGER LastAccessTime; // ntddk nthal
+ LARGE_INTEGER LastWriteTime; // ntddk nthal
+ LARGE_INTEGER ChangeTime; // ntddk nthal
+ LARGE_INTEGER AllocationSize; // ntddk nthal
+ LARGE_INTEGER EndOfFile; // ntddk nthal
+ ULONG FileAttributes; // ntddk nthal
+} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; // ntddk nthal
+ // ntddk nthal
+typedef struct _FILE_ALLOCATION_INFORMATION {
+ LARGE_INTEGER AllocationSize;
+} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
+
+typedef struct _FILE_COMPRESSION_INFORMATION {
+ LARGE_INTEGER CompressedFileSize;
+ USHORT CompressionFormat;
+ UCHAR CompressionUnitShift;
+ UCHAR ChunkShift;
+ UCHAR ClusterShift;
+ UCHAR Reserved[3];
+} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;
+
+typedef struct _FILE_COPY_ON_WRITE_INFORMATION {
+ BOOLEAN ReplaceIfExists;
+ HANDLE RootDirectory;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_COPY_ON_WRITE_INFORMATION, *PFILE_COPY_ON_WRITE_INFORMATION;
+
+typedef struct _FILE_DISPOSITION_INFORMATION { // ntddk nthal
+ BOOLEAN DeleteFile; // ntddk nthal
+} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; // ntddk nthal
+ // ntddk nthal
+typedef struct _FILE_END_OF_FILE_INFORMATION { // ntddk nthal
+ LARGE_INTEGER EndOfFile; // ntddk nthal
+} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; // ntddk nthal
+ // ntddk nthal
+typedef struct _FILE_LINK_INFORMATION {
+ BOOLEAN ReplaceIfExists;
+ HANDLE RootDirectory;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
+
+typedef struct _FILE_MOVE_CLUSTER_INFORMATION {
+ ULONG ClusterCount;
+ HANDLE RootDirectory;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_MOVE_CLUSTER_INFORMATION, *PFILE_MOVE_CLUSTER_INFORMATION;
+
+typedef struct _FILE_RENAME_INFORMATION {
+ BOOLEAN ReplaceIfExists;
+ HANDLE RootDirectory;
+ ULONG FileNameLength;
+ WCHAR FileName[1];
+} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
+
+typedef struct _FILE_STREAM_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG StreamNameLength;
+ LARGE_INTEGER StreamSize;
+ LARGE_INTEGER StreamAllocationSize;
+ WCHAR StreamName[1];
+} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
+
+typedef struct _FILE_COMPLETION_INFORMATION {
+ HANDLE Port;
+ ULONG Key;
+} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
+
+typedef struct _FILE_OLE_CLASSID_INFORMATION {
+ GUID ClassId;
+} FILE_OLE_CLASSID_INFORMATION, *PFILE_OLE_CLASSID_INFORMATION;
+
+typedef struct _FILE_OLE_STATE_BITS_INFORMATION {
+ ULONG StateBits;
+ ULONG StateBitsMask;
+} FILE_OLE_STATE_BITS_INFORMATION, *PFILE_OLE_STATE_BITS_INFORMATION;
+
+typedef struct _FILE_OBJECTID_INFORMATION {
+ OBJECTID ObjectId;
+} FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
+
+typedef struct _FILE_OLE_INFORMATION {
+ LARGE_INTEGER SecurityChangeTime;
+ FILE_OLE_CLASSID_INFORMATION OleClassIdInformation;
+ FILE_OBJECTID_INFORMATION ObjectIdInformation;
+ FILE_STORAGE_TYPE StorageType;
+ ULONG OleStateBits;
+ BOOLEAN ContentIndexDisable;
+ BOOLEAN InheritContentIndexDisable;
+} FILE_OLE_INFORMATION, *PFILE_OLE_INFORMATION;
+
+typedef struct _FILE_OLE_ALL_INFORMATION {
+ FILE_BASIC_INFORMATION BasicInformation;
+ FILE_STANDARD_INFORMATION StandardInformation;
+ FILE_INTERNAL_INFORMATION InternalInformation;
+ FILE_EA_INFORMATION EaInformation;
+ FILE_ACCESS_INFORMATION AccessInformation;
+ FILE_POSITION_INFORMATION PositionInformation;
+ FILE_MODE_INFORMATION ModeInformation;
+ FILE_ALIGNMENT_INFORMATION AlignmentInformation;
+ USN LastChangeUsn;
+ USN ReplicationUsn;
+ LARGE_INTEGER SecurityChangeTime;
+ FILE_OLE_CLASSID_INFORMATION OleClassIdInformation;
+ FILE_OBJECTID_INFORMATION ObjectIdInformation;
+ FILE_STORAGE_TYPE StorageType;
+ ULONG OleStateBits;
+ ULONG OleId;
+ ULONG NumberOfStreamReferences;
+ ULONG StreamIndex;
+ ULONG SecurityId;
+ BOOLEAN ContentIndexDisable;
+ BOOLEAN InheritContentIndexDisable;
+ FILE_NAME_INFORMATION NameInformation;
+} FILE_OLE_ALL_INFORMATION, *PFILE_OLE_ALL_INFORMATION;
+
+typedef struct _FILE_PIPE_INFORMATION {
+ ULONG ReadMode;
+ ULONG CompletionMode;
+} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
+
+typedef struct _FILE_PIPE_LOCAL_INFORMATION {
+ ULONG NamedPipeType;
+ ULONG NamedPipeConfiguration;
+ ULONG MaximumInstances;
+ ULONG CurrentInstances;
+ ULONG InboundQuota;
+ ULONG ReadDataAvailable;
+ ULONG OutboundQuota;
+ ULONG WriteQuotaAvailable;
+ ULONG NamedPipeState;
+ ULONG NamedPipeEnd;
+} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
+
+typedef struct _FILE_PIPE_REMOTE_INFORMATION {
+ LARGE_INTEGER CollectDataTime;
+ ULONG MaximumCollectionCount;
+} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION;
+
+typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
+ ULONG MaximumMessageSize;
+ ULONG MailslotQuota;
+ ULONG NextMessageSize;
+ ULONG MessagesAvailable;
+ LARGE_INTEGER ReadTimeout;
+} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
+
+typedef struct _FILE_MAILSLOT_SET_INFORMATION {
+ PLARGE_INTEGER ReadTimeout;
+} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
+
+
+//
+// NtQuery(Set)EaFile
+//
+// The offset for the start of EaValue is EaName[EaNameLength + 1]
+//
+
+// begin_ntddk
+
+typedef struct _FILE_FULL_EA_INFORMATION {
+ ULONG NextEntryOffset;
+ UCHAR Flags;
+ UCHAR EaNameLength;
+ USHORT EaValueLength;
+ CHAR EaName[1];
+} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
+
+// end_ntddk
+
+typedef struct _FILE_GET_EA_INFORMATION {
+ ULONG NextEntryOffset;
+ UCHAR EaNameLength;
+ CHAR EaName[1];
+} FILE_GET_EA_INFORMATION, *PFILE_GET_EA_INFORMATION;
+
+//
+// NtQuery(Set)QuotaInformationFile
+//
+
+typedef struct _FILE_GET_QUOTA_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG SidLength;
+ SID Sid;
+} FILE_GET_QUOTA_INFORMATION, *PFILE_GET_QUOTA_INFORMATION;
+
+typedef struct _FILE_QUOTA_INFORMATION {
+ ULONG NextEntryOffset;
+ ULONG SidLength;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER QuotaUsed;
+ LARGE_INTEGER QuotaThreshold;
+ LARGE_INTEGER QuotaLimit;
+ SID Sid;
+} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
+
+// begin_ntddk begin_nthal
+//
+// Define the file system information class values
+//
+// WARNING: The order of the following values are assumed by the I/O system.
+// Any changes made here should be reflected there as well.
+
+typedef enum _FSINFOCLASS {
+ FileFsVolumeInformation = 1,
+ FileFsLabelInformation,
+ FileFsSizeInformation,
+ FileFsDeviceInformation,
+ FileFsAttributeInformation,
+ FileFsControlInformation,
+ FileFsQuotaQueryInformation, // temporary
+ FileFsQuotaSetInformation, // temporary
+ FileFsMaximumInformation
+} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
+
+// end_ntddk end_nthal
+//
+// NtQuery[Set]VolumeInformationFile types:
+//
+// FILE_FS_LABEL_INFORMATION
+// FILE_FS_VOLUME_INFORMATION
+// FILE_FS_SIZE_INFORMATION
+// FILE_FS_DEVICE_INFORMATION
+// FILE_FS_ATTRIBUTE_INFORMATION
+// FILE_FS_CONTROL_INFORMATION
+//
+
+typedef struct _FILE_FS_LABEL_INFORMATION {
+ ULONG VolumeLabelLength;
+ WCHAR VolumeLabel[1];
+} FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
+
+typedef struct _FILE_FS_VOLUME_INFORMATION {
+ LARGE_INTEGER VolumeCreationTime;
+ ULONG VolumeSerialNumber;
+ ULONG VolumeLabelLength;
+ BOOLEAN SupportsObjects;
+ WCHAR VolumeLabel[1];
+} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
+
+typedef struct _FILE_FS_SIZE_INFORMATION {
+ LARGE_INTEGER TotalAllocationUnits;
+ LARGE_INTEGER AvailableAllocationUnits;
+ ULONG SectorsPerAllocationUnit;
+ ULONG BytesPerSector;
+} FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
+
+typedef struct _FILE_FS_DEVICE_INFORMATION { // ntddk nthal
+ DEVICE_TYPE DeviceType; // ntddk nthal
+ ULONG Characteristics; // ntddk nthal
+} FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION; // ntddk nthal
+ // ntddk nthal
+typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
+ ULONG FileSystemAttributes;
+ LONG MaximumComponentNameLength;
+ ULONG FileSystemNameLength;
+ WCHAR FileSystemName[1];
+} FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
+
+//
+// File system control flags
+//
+
+#define FILE_VC_QUOTA_NONE 0x00000000
+#define FILE_VC_QUOTA_TRACK 0x00000001
+#define FILE_VC_QUOTA_ENFORCE 0x00000002
+#define FILE_VC_QUOTA_MASK 0x00000003
+
+#define FILE_VC_QUOTAS_LOG_VIOLATIONS 0x00000004
+#define FILE_VC_CONTENT_INDEX_DISABLED 0x00000008
+
+#define FILE_VC_LOG_QUOTA_THRESHOLD 0x00000010
+#define FILE_VC_LOG_QUOTA_LIMIT 0x00000020
+#define FILE_VC_LOG_VOLUME_THRESHOLD 0x00000040
+#define FILE_VC_LOG_VOLUME_LIMIT 0x00000080
+
+#define FILE_VC_QUOTAS_INCOMPLETE 0x00000100
+#define FILE_VC_QUOTAS_REBUILDING 0x00000200
+
+#define FILE_VC_VALID_MASK 0x000003ff
+
+typedef struct _FILE_FS_CONTROL_INFORMATION {
+ LARGE_INTEGER FreeSpaceStartFiltering;
+ LARGE_INTEGER FreeSpaceThreshold;
+ LARGE_INTEGER FreeSpaceStopFiltering;
+ LARGE_INTEGER DefaultQuotaThreshold;
+ LARGE_INTEGER DefaultQuotaLimit;
+ ULONG FileSystemControlFlags;
+} FILE_FS_CONTROL_INFORMATION, *PFILE_FS_CONTROL_INFORMATION;
+
+// begin_winnt begin_ntddk begin_nthal
+
+//
+// Define segement buffer structure for scatter/gather read/write.
+//
+
+typedef union _FILE_SEGMENT_ELEMENT {
+ PVOID Buffer;
+ ULONGLONG Alignment;
+}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
+
+// end_winnt end_ntddk end_nthal
+
+//
+// I/O system user APIs
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCancelIoFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateFile(
+ OUT PHANDLE FileHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PLARGE_INTEGER AllocationSize OPTIONAL,
+ IN ULONG FileAttributes,
+ IN ULONG ShareAccess,
+ IN ULONG CreateDisposition,
+ IN ULONG CreateOptions,
+ IN PVOID EaBuffer OPTIONAL,
+ IN ULONG EaLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateNamedPipeFile(
+ OUT PHANDLE FileHandle,
+ IN ULONG DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG ShareAccess,
+ IN ULONG CreateDisposition,
+ IN ULONG CreateOptions,
+ IN ULONG NamedPipeType,
+ IN ULONG ReadMode,
+ IN ULONG CompletionMode,
+ IN ULONG MaximumInstances,
+ IN ULONG InboundQuota,
+ IN ULONG OutboundQuota,
+ IN PLARGE_INTEGER DefaultTimeout OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateMailslotFile(
+ OUT PHANDLE FileHandle,
+ IN ULONG DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG CreateOptions,
+ IN ULONG MailslotQuota,
+ IN ULONG MaximumMessageSize,
+ IN PLARGE_INTEGER ReadTimeout
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDeleteFile(
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDeviceIoControlFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG IoControlCode,
+ IN PVOID InputBuffer OPTIONAL,
+ IN ULONG InputBufferLength,
+ OUT PVOID OutputBuffer OPTIONAL,
+ IN ULONG OutputBufferLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFlushBuffersFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFsControlFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG FsControlCode,
+ IN PVOID InputBuffer OPTIONAL,
+ IN ULONG InputBufferLength,
+ OUT PVOID OutputBuffer OPTIONAL,
+ IN ULONG OutputBufferLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtLockFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PLARGE_INTEGER ByteOffset,
+ IN PLARGE_INTEGER Length,
+ IN ULONG Key,
+ IN BOOLEAN FailImmediately,
+ IN BOOLEAN ExclusiveLock
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtNotifyChangeDirectoryFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID Buffer,
+ IN ULONG Length,
+ IN ULONG CompletionFilter,
+ IN BOOLEAN WatchTree
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenFile(
+ OUT PHANDLE FileHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG ShareAccess,
+ IN ULONG OpenOptions
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryAttributesFile(
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PFILE_BASIC_INFORMATION FileInformation
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryDirectoryFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID FileInformation,
+ IN ULONG Length,
+ IN FILE_INFORMATION_CLASS FileInformationClass,
+ IN BOOLEAN ReturnSingleEntry,
+ IN PUNICODE_STRING FileName OPTIONAL,
+ IN BOOLEAN RestartScan
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryFullAttributesFile(
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryOleDirectoryFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID FileInformation,
+ IN ULONG Length,
+ IN FILE_INFORMATION_CLASS FileInformationClass,
+ IN BOOLEAN ReturnSingleEntry,
+ IN PUNICODE_STRING FileName OPTIONAL,
+ IN BOOLEAN RestartScan
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryEaFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID Buffer,
+ IN ULONG Length,
+ IN BOOLEAN ReturnSingleEntry,
+ IN PVOID EaList OPTIONAL,
+ IN ULONG EaListLength,
+ IN PULONG EaIndex OPTIONAL,
+ IN BOOLEAN RestartScan
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID FileInformation,
+ IN ULONG Length,
+ IN FILE_INFORMATION_CLASS FileInformationClass
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryQuotaInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID Buffer,
+ IN ULONG Length,
+ IN BOOLEAN ReturnSingleEntry,
+ IN PVOID SidList OPTIONAL,
+ IN ULONG SidListLength,
+ IN PSID StartSid OPTIONAL,
+ IN BOOLEAN RestartScan
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryVolumeInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID FsInformation,
+ IN ULONG Length,
+ IN FS_INFORMATION_CLASS FsInformationClass
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReadFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ OUT PVOID Buffer,
+ IN ULONG Length,
+ IN PLARGE_INTEGER ByteOffset OPTIONAL,
+ IN PULONG Key OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReadFileScatter(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PFILE_SEGMENT_ELEMENT SegmentArray,
+ IN ULONG Length,
+ IN PLARGE_INTEGER ByteOffset OPTIONAL,
+ IN PULONG Key OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetEaFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PVOID Buffer,
+ IN ULONG Length
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PVOID FileInformation,
+ IN ULONG Length,
+ IN FILE_INFORMATION_CLASS FileInformationClass
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetQuotaInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PVOID Buffer,
+ IN ULONG Length
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetVolumeInformationFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PVOID FsInformation,
+ IN ULONG Length,
+ IN FS_INFORMATION_CLASS FsInformationClass
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtUnlockFile(
+ IN HANDLE FileHandle,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PLARGE_INTEGER ByteOffset,
+ IN PLARGE_INTEGER Length,
+ IN ULONG Key
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtWriteFile(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PVOID Buffer,
+ IN ULONG Length,
+ IN PLARGE_INTEGER ByteOffset OPTIONAL,
+ IN PULONG Key OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtWriteFileGather(
+ IN HANDLE FileHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN PFILE_SEGMENT_ELEMENT SegmentArray,
+ IN ULONG Length,
+ IN PLARGE_INTEGER ByteOffset OPTIONAL,
+ IN PULONG Key OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtLoadDriver(
+ IN PUNICODE_STRING DriverServiceName
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtUnloadDriver(
+ IN PUNICODE_STRING DriverServiceName
+ );
+
+//
+// Macro definition for defining IOCTL and FSCTL function control codes. Note
+// that function codes 0-2047 are reserved for Microsoft Corporation, and
+// 2048-4095 are reserved for customers.
+//
+// These macros are defined in devioctl.h which contains the portable IO
+// definitions (for use by both DOS and NT)
+//
+
+//
+// The IoGetFunctionCodeFromCtlCode( ControlCode ) Macro is defined in io.h
+// This macro is used to extract the function code from an IOCTL (or FSCTL).
+// The macro can only be used in kernel mode code.
+//
+
+//
+// General File System control codes - Note that these values are valid
+// regardless of the actual file system type
+//
+
+//
+// IMPORTANT: These values have been arranged in order of increasing
+// control codes. Do NOT breaks this!! Add all new codes
+// at end of list regardless of functionality type.
+//
+// Note: FSCTL_QUERY_RETRIEVAL_POINTER and FSCTL_MARK_AS_SYSTEM_HIVE only
+// work from Kernel mode on local paging files or the system hives.
+//
+
+#define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+// begin_winioctl
+#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+// end_winioctl
+#define FSCTL_SHUTDOWN_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,11, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+// begin_winioctl
+#define FSCTL_MOUNT_DBLS_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,13, METHOD_BUFFERED, FILE_ANY_ACCESS)
+// end_winioctl
+#define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,14, METHOD_NEITHER, FILE_ANY_ACCESS)
+// begin_winioctl
+#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17, METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18, METHOD_NEITHER, FILE_WRITE_DATA)
+// end_winioctl
+#define FSCTL_MARK_AS_SYSTEM_HIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,19, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,20, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,21, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM,22, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM,23, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,24, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#if(_WIN32_WINNT >= 0x0400)
+#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM,26, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,30, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,31, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,32, METHOD_NEITHER, FILE_ANY_ACCESS)
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+#define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,32, METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,33, METHOD_NEITHER, FILE_WRITE_DATA)
+#define FSCTL_READ_PROPERTY_STAT_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,34, METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_INITIALIZE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,35, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_COMPACT_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,36, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,37, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+//
+// Property control structures are defined in ntfsprop.h
+//
+
+//
+// Ofs and Content Index File System Control functions.
+//
+// FSCTLs 100 - 199 are reserved for OFS and are defined in iofs.h
+//
+
+//
+// Double Space control structure declarations
+//
+
+// Control structure for FSCTL_MOUNT_DBLS_VOLUME
+
+typedef struct _FILE_MOUNT_DBLS_BUFFER {
+ ULONG CvfNameLength;
+ WCHAR CvfName[1];
+} FILE_MOUNT_DBLS_BUFFER, *PFILE_MOUNT_DBLS_BUFFER;
+
+// Structure for FSCTL_QUERY_BPB_INFO
+
+typedef struct _FSCTL_QUERY_FAT_BPB_BUFFER {
+ UCHAR First0x24BytesOfBootSector[0x24];
+} FSCTL_QUERY_FAT_BPB_BUFFER, *PFSCTL_QUERY_FAT_BPB_BUFFER;
+
+#if(_WIN32_WINNT >= 0x0400)
+// Structure for FSCTL_GET_NTFS_VOLUME_DATA
+
+typedef struct {
+ LARGE_INTEGER VolumeSerialNumber;
+ LARGE_INTEGER NumberSectors;
+ LARGE_INTEGER TotalClusters;
+ LARGE_INTEGER FreeClusters;
+ LARGE_INTEGER TotalReserved;
+ ULONG BytesPerSector;
+ ULONG BytesPerCluster;
+ ULONG BytesPerFileRecordSegment;
+ ULONG ClustersPerFileRecordSegment;
+ LARGE_INTEGER MftValidDataLength;
+ LARGE_INTEGER MftStartLcn;
+ LARGE_INTEGER Mft2StartLcn;
+ LARGE_INTEGER MftZoneStart;
+ LARGE_INTEGER MftZoneEnd;
+} NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER;
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+#if(_WIN32_WINNT >= 0x0400)
+// Structure for FSCTL_GET_VOLUME_BITMAP
+
+typedef struct {
+ LARGE_INTEGER StartingLcn;
+} STARTING_LCN_INPUT_BUFFER, *PSTARTING_LCN_INPUT_BUFFER;
+
+typedef struct {
+ LARGE_INTEGER StartingLcn;
+ LARGE_INTEGER BitmapSize;
+ UCHAR Buffer[1];
+} VOLUME_BITMAP_BUFFER, *PVOLUME_BITMAP_BUFFER;
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+#if(_WIN32_WINNT >= 0x0400)
+// Structure for FSCTL_GET_RETRIEVAL_POINTERS
+
+typedef struct {
+ LARGE_INTEGER StartingVcn;
+} STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER;
+
+typedef struct RETRIEVAL_POINTERS_BUFFER {
+ ULONG ExtentCount;
+ LARGE_INTEGER StartingVcn;
+ struct {
+ LARGE_INTEGER NextVcn;
+ LARGE_INTEGER Lcn;
+ } Extents[1];
+} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+#if(_WIN32_WINNT >= 0x0400)
+// Structures for FSCTL_GET_NTFS_FILE_RECORD
+
+typedef struct {
+ LARGE_INTEGER FileReferenceNumber;
+} NTFS_FILE_RECORD_INPUT_BUFFER, *PNTFS_FILE_RECORD_INPUT_BUFFER;
+
+typedef struct {
+ LARGE_INTEGER FileReferenceNumber;
+ ULONG FileRecordLength;
+ UCHAR FileRecordBuffer[1];
+} NTFS_FILE_RECORD_OUTPUT_BUFFER, *PNTFS_FILE_RECORD_OUTPUT_BUFFER;
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+#if(_WIN32_WINNT >= 0x0400)
+// Structure for FSCTL_MOVE_FILE
+
+typedef struct {
+ HANDLE FileHandle;
+ LARGE_INTEGER StartingVcn;
+ LARGE_INTEGER StartingLcn;
+ ULONG ClusterCount;
+} MOVE_FILE_DATA, *PMOVE_FILE_DATA;
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+#if(_WIN32_WINNT >= 0x0400)
+// Structure for FSCTL_GET_HFS_INFORMATION
+
+typedef struct {
+ UCHAR FinderInfo[32];
+} HFS_INFORMATION_BUFFER, *PHFS_INFORMATION_BUFFER;
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+
+//
+// Filesystem performance counters
+//
+
+typedef struct _NTFS_STATISTICS {
+ ULONG LogFileFullExceptions;
+ ULONG OtherExceptions;
+
+ // Other meta data io's
+
+ ULONG MftReads;
+ ULONG MftReadBytes;
+ ULONG MftWrites;
+ ULONG MftWriteBytes;
+ struct {
+ USHORT Write;
+ USHORT Create;
+ USHORT SetInfo;
+ USHORT Flush;
+ } MftWritesUserLevel;
+
+ USHORT MftWritesFlushForLogFileFull;
+ USHORT MftWritesLazyWriter;
+ USHORT MftWritesUserRequest;
+
+ ULONG Mft2Writes;
+ ULONG Mft2WriteBytes;
+ struct {
+ USHORT Write;
+ USHORT Create;
+ USHORT SetInfo;
+ USHORT Flush;
+ } Mft2WritesUserLevel;
+
+ USHORT Mft2WritesFlushForLogFileFull;
+ USHORT Mft2WritesLazyWriter;
+ USHORT Mft2WritesUserRequest;
+
+ ULONG RootIndexReads;
+ ULONG RootIndexReadBytes;
+ ULONG RootIndexWrites;
+ ULONG RootIndexWriteBytes;
+
+ ULONG BitmapReads;
+ ULONG BitmapReadBytes;
+ ULONG BitmapWrites;
+ ULONG BitmapWriteBytes;
+
+ USHORT BitmapWritesFlushForLogFileFull;
+ USHORT BitmapWritesLazyWriter;
+ USHORT BitmapWritesUserRequest;
+
+ struct {
+ USHORT Write;
+ USHORT Create;
+ USHORT SetInfo;
+ } BitmapWritesUserLevel;
+
+ ULONG MftBitmapReads;
+ ULONG MftBitmapReadBytes;
+ ULONG MftBitmapWrites;
+ ULONG MftBitmapWriteBytes;
+
+ USHORT MftBitmapWritesFlushForLogFileFull;
+ USHORT MftBitmapWritesLazyWriter;
+ USHORT MftBitmapWritesUserRequest;
+
+ struct {
+ USHORT Write;
+ USHORT Create;
+ USHORT SetInfo;
+ USHORT Flush;
+ } MftBitmapWritesUserLevel;
+
+ ULONG UserIndexReads;
+ ULONG UserIndexReadBytes;
+ ULONG UserIndexWrites;
+ ULONG UserIndexWriteBytes;
+
+} NTFS_STATISTICS, *PNTFS_STATISTICS;
+
+typedef struct _FAT_STATISTICS {
+ ULONG CreateHits;
+ ULONG SuccessfulCreates;
+ ULONG FailedCreates;
+
+ ULONG NonCachedReads;
+ ULONG NonCachedReadBytes;
+ ULONG NonCachedWrites;
+ ULONG NonCachedWriteBytes;
+
+ ULONG NonCachedDiskReads;
+ ULONG NonCachedDiskWrites;
+
+} FAT_STATISTICS, *PFAT_STATISTICS;
+
+typedef struct _FILESYSTEM_STATISTICS {
+
+ USHORT FileSystemType;
+ USHORT Version; // currently version 1
+
+ ULONG UserFileReads;
+ ULONG UserFileReadBytes;
+ ULONG UserDiskReads;
+ ULONG UserFileWrites;
+ ULONG UserFileWriteBytes;
+ ULONG UserDiskWrites;
+
+ ULONG MetaDataReads;
+ ULONG MetaDataReadBytes;
+ ULONG MetaDataDiskReads;
+ ULONG MetaDataWrites;
+ ULONG MetaDataWriteBytes;
+ ULONG MetaDataDiskWrites;
+
+ union {
+ NTFS_STATISTICS Ntfs;
+ FAT_STATISTICS Fat;
+ };
+
+ ULONG Pad[11]; // pad to multiple of 64 bytes
+
+} FILESYSTEM_STATISTICS, *PFILESYSTEM_STATISTICS;
+
+// values for FS_STATISTICS.FileSystemType
+
+#define FILESYSTEM_STATISTICS_TYPE_NTFS 1
+#define FILESYSTEM_STATISTICS_TYPE_FAT 2
+
+//
+// Named Pipe file control code and structure declarations
+//
+
+//
+// External named pipe file control operations
+//
+
+#define FSCTL_PIPE_ASSIGN_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_DISCONNECT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_LISTEN CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_PEEK CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_PIPE_QUERY_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_PIPE_WAIT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_IMPERSONATE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_SET_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_QUERY_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// Internal named pipe file control operations
+//
+
+#define FSCTL_PIPE_INTERNAL_READ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_PIPE_INTERNAL_WRITE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_PIPE_INTERNAL_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_PIPE_INTERNAL_READ_OVFLOW CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
+
+//
+// Define entry types for query event information
+//
+
+#define FILE_PIPE_READ_DATA 0x00000000
+#define FILE_PIPE_WRITE_SPACE 0x00000001
+
+//
+// Named pipe file system control structure declarations
+//
+
+// Control structure for FSCTL_PIPE_ASSIGN_EVENT
+
+typedef struct _FILE_PIPE_ASSIGN_EVENT_BUFFER {
+ HANDLE EventHandle;
+ ULONG KeyValue;
+} FILE_PIPE_ASSIGN_EVENT_BUFFER, *PFILE_PIPE_ASSIGN_EVENT_BUFFER;
+
+// Control structure for FSCTL_PIPE_PEEK
+
+typedef struct _FILE_PIPE_PEEK_BUFFER {
+ ULONG NamedPipeState;
+ ULONG ReadDataAvailable;
+ ULONG NumberOfMessages;
+ ULONG MessageLength;
+ CHAR Data[1];
+} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
+
+// Control structure for FSCTL_PIPE_QUERY_EVENT
+
+typedef struct _FILE_PIPE_EVENT_BUFFER {
+ ULONG NamedPipeState;
+ ULONG EntryType;
+ ULONG ByteCount;
+ ULONG KeyValue;
+ ULONG NumberRequests;
+} FILE_PIPE_EVENT_BUFFER, *PFILE_PIPE_EVENT_BUFFER;
+
+// Control structure for FSCTL_PIPE_WAIT
+
+typedef struct _FILE_PIPE_WAIT_FOR_BUFFER {
+ LARGE_INTEGER Timeout;
+ ULONG NameLength;
+ BOOLEAN TimeoutSpecified;
+ WCHAR Name[1];
+} FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;
+
+// Control structure for FSCTL_PIPE_SET_CLIENT_PROCESS and FSCTL_PIPE_QUERY_CLIENT_PROCESS
+
+typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER {
+ PVOID ClientSession;
+ PVOID ClientProcess;
+} FILE_PIPE_CLIENT_PROCESS_BUFFER, *PFILE_PIPE_CLIENT_PROCESS_BUFFER;
+
+//
+// Mailslot file control code and structure definitions.
+//
+
+//
+// Mailslot classes.
+//
+
+#define MAILSLOT_CLASS_FIRSTCLASS 1
+#define MAILSLOT_CLASS_SECONDCLASS 2
+
+//
+// Mailslot file control operations.
+//
+
+#define FSCTL_MAILSLOT_PEEK CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
+
+// Output control structure for FSCTL_MAILSLOT_PEEK
+
+typedef struct _FILE_MAILSLOT_PEEK_BUFFER {
+ ULONG ReadDataAvailable;
+ ULONG NumberOfMessages;
+ ULONG MessageLength;
+} FILE_MAILSLOT_PEEK_BUFFER, *PFILE_MAILSLOT_PEEK_BUFFER;
+
+//
+// Input parameters for FSCTL_IS_PATHNAME_VALID
+//
+
+typedef struct _PATHNAME_BUFFER {
+ ULONG PathNameLength;
+ WCHAR Name[1];
+} PATHNAME_BUFFER, *PPATHNAME_BUFFER;
+
+
+//
+// I/O Completion Specific Access Rights.
+//
+
+#define IO_COMPLETION_QUERY_STATE 0x0001
+#define IO_COMPLETION_MODIFY_STATE 0x0002 // winnt
+#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) // winnt
+
+//
+// I/O Completion Information Classes.
+//
+
+typedef enum _IO_COMPLETION_INFORMATION_CLASS {
+ IoCompletionBasicInformation
+ } IO_COMPLETION_INFORMATION_CLASS;
+
+//
+// I/O Completition Information Structures.
+//
+
+typedef struct _IO_COMPLETION_BASIC_INFORMATION {
+ LONG Depth;
+} IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateIoCompletion (
+ OUT PHANDLE IoCompletionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN ULONG Count OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenIoCompletion (
+ OUT PHANDLE IoCompletionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryIoCompletion (
+ IN HANDLE IoCompletionHandle,
+ IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
+ OUT PVOID IoCompletionInformation,
+ IN ULONG IoCompletionInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetIoCompletion (
+ IN HANDLE IoCompletionHandle,
+ IN ULONG KeyContext,
+ IN PVOID ApcContext,
+ IN NTSTATUS IoStatus,
+ IN ULONG IoStatusInformation
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtRemoveIoCompletion (
+ IN HANDLE IoCompletionHandle,
+ OUT PVOID *KeyContext,
+ OUT PVOID *ApcContext,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ IN PLARGE_INTEGER Timeout
+ );
+
+
+//
+// Defines that are used to access the registry, but are not registry
+// specific.
+//
+
+// begin_ntddk begin_nthal begin_ntminiport begin_ntndis
+//
+// Define the I/O bus interface types.
+//
+
+typedef enum _INTERFACE_TYPE {
+ InterfaceTypeUndefined = -1,
+ Internal,
+ Isa,
+ Eisa,
+ MicroChannel,
+ TurboChannel,
+ PCIBus,
+ VMEBus,
+ NuBus,
+ PCMCIABus,
+ CBus,
+ MPIBus,
+ MPSABus,
+ ProcessorInternal,
+ InternalPowerBus,
+ PNPISABus,
+ MaximumInterfaceType
+}INTERFACE_TYPE, *PINTERFACE_TYPE;
+
+//
+// Define types of bus information.
+//
+
+typedef enum _BUS_DATA_TYPE {
+ ConfigurationSpaceUndefined = -1,
+ Cmos,
+ EisaConfiguration,
+ Pos,
+ CbusConfiguration,
+ PCIConfiguration,
+ VMEConfiguration,
+ NuBusConfiguration,
+ PCMCIAConfiguration,
+ MPIConfiguration,
+ MPSAConfiguration,
+ PNPISAConfiguration,
+ MaximumBusDataType
+} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
+
+//
+// Define the DMA transfer widths.
+//
+
+typedef enum _DMA_WIDTH {
+ Width8Bits,
+ Width16Bits,
+ Width32Bits,
+ MaximumDmaWidth
+}DMA_WIDTH, *PDMA_WIDTH;
+
+//
+// Define DMA transfer speeds.
+//
+
+typedef enum _DMA_SPEED {
+ Compatible,
+ TypeA,
+ TypeB,
+ TypeC,
+ MaximumDmaSpeed
+}DMA_SPEED, *PDMA_SPEED;
+
+// end_ntddk end_nthal end_ntminiport end_ntndis
+
+#endif // _NTIOAPI_
diff --git a/public/sdk/inc/ntiodump.h b/public/sdk/inc/ntiodump.h
new file mode 100644
index 000000000..9025f64f5
--- /dev/null
+++ b/public/sdk/inc/ntiodump.h
@@ -0,0 +1,64 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1994 Microsoft Corporation
+
+Module Name:
+
+ ntiodump.h
+
+Abstract:
+
+ This is the include file that defines all constants and types for
+ accessing memory dump files.
+
+Author:
+
+ Darryl Havens (darrylh) 6-jan-1994
+
+Revision History:
+
+
+--*/
+
+#ifndef _NTIODUMP_
+#define _NTIODUMP_
+
+//
+// Define the information required to process memory dumps.
+//
+
+//
+// Define dump header longword offset constants.
+//
+
+#define DH_PHYSICAL_MEMORY_BLOCK 25
+#define DH_CONTEXT_RECORD 200
+#define DH_EXCEPTION_RECORD 500
+
+//
+// Define the dump header structure.
+//
+
+typedef struct _DUMP_HEADER {
+ ULONG Signature;
+ ULONG ValidDump;
+ ULONG MajorVersion;
+ ULONG MinorVersion;
+ ULONG DirectoryTableBase;
+ PULONG PfnDataBase;
+ PLIST_ENTRY PsLoadedModuleList;
+ PLIST_ENTRY PsActiveProcessHead;
+ ULONG MachineImageType;
+ ULONG NumberProcessors;
+ ULONG BugCheckCode;
+ ULONG BugCheckParameter1;
+ ULONG BugCheckParameter2;
+ ULONG BugCheckParameter3;
+ ULONG BugCheckParameter4;
+ CHAR VersionUser[32];
+ ULONG Spare1;
+ ULONG Spare2;
+} DUMP_HEADER, *PDUMP_HEADER;
+
+
+#endif // _NTIODUMP_
diff --git a/public/sdk/inc/ntiolog.h b/public/sdk/inc/ntiolog.h
new file mode 100644
index 000000000..808c3c3fc
--- /dev/null
+++ b/public/sdk/inc/ntiolog.h
@@ -0,0 +1,83 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ ntiolog.h
+
+Abstract:
+
+ Constant definitions for the I/O error code log values.
+
+Author:
+
+ Jeff Havens (jhavens) 21-Aug-1991
+
+Revision History:
+
+--*/
+
+#ifndef _NTIOLOG_
+#define _NTIOLOG_
+
+//
+// For reference here only. Defined in io.h
+//
+
+#define IO_TYPE_ERROR_LOG 0x0000000b
+#define IO_TYPE_ERROR_MESSAGE 0x0000000c
+
+// begin_ntddk
+//
+// Define I/O Driver error log packet structure. This structure is filled in
+// by the driver.
+//
+
+typedef struct _IO_ERROR_LOG_PACKET {
+ UCHAR MajorFunctionCode;
+ UCHAR RetryCount;
+ USHORT DumpDataSize;
+ USHORT NumberOfStrings;
+ USHORT StringOffset;
+ USHORT EventCategory;
+ NTSTATUS ErrorCode;
+ ULONG UniqueErrorValue;
+ NTSTATUS FinalStatus;
+ ULONG SequenceNumber;
+ ULONG IoControlCode;
+ LARGE_INTEGER DeviceOffset;
+ ULONG DumpData[1];
+}IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;
+
+//
+// Define the I/O error log message. This message is sent by the error log
+// thread over the lpc port.
+//
+
+typedef struct _IO_ERROR_LOG_MESSAGE {
+ USHORT Type;
+ USHORT Size;
+ USHORT DriverNameLength;
+ LARGE_INTEGER TimeStamp;
+ ULONG DriverNameOffset;
+ IO_ERROR_LOG_PACKET EntryData;
+}IO_ERROR_LOG_MESSAGE, *PIO_ERROR_LOG_MESSAGE;
+
+//
+// Define the maximum message size that will be sent over the LPC to the
+// application reading the error log entries.
+//
+
+#define IO_ERROR_LOG_MESSAGE_LENGTH PORT_MAXIMUM_MESSAGE_LENGTH
+
+//
+// Define the maximum packet size a driver can allocate.
+//
+
+#define ERROR_LOG_MAXIMUM_SIZE (IO_ERROR_LOG_MESSAGE_LENGTH + sizeof(IO_ERROR_LOG_PACKET) - \
+ sizeof(IO_ERROR_LOG_MESSAGE) - (sizeof(WCHAR) * 40))
+
+// end_ntddk
+
+#endif // _NTIOLOG_
diff --git a/public/sdk/inc/ntkdexts.h b/public/sdk/inc/ntkdexts.h
new file mode 100644
index 000000000..1a786a12e
--- /dev/null
+++ b/public/sdk/inc/ntkdexts.h
@@ -0,0 +1,122 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ ntkdexts.h
+
+Abstract:
+
+ This file contains procedure prototypes and structures
+ needed to write KD kernel debugger extensions.
+
+Author:
+
+ John Vert (jvert) 28-Jul-1992
+
+Environment:
+
+ runs in the Win32 KD debug environment.
+
+Revision History:
+
+--*/
+
+#ifndef _NTKDEXTNS_
+#define _NTKDEXTNS_
+
+typedef
+VOID
+(*PNTKD_OUTPUT_ROUTINE)(
+ char *,
+ ...
+ );
+
+typedef
+DWORD
+(*PNTKD_GET_EXPRESSION)(
+ char *
+ );
+
+typedef
+VOID
+(*PNTKD_GET_SYMBOL)(
+ LPVOID offset,
+ PUCHAR pchBuffer,
+ LPDWORD pDisplacement
+ );
+
+typedef
+DWORD
+(*PNTKD_DISASM)(
+ LPDWORD lpOffset,
+ LPSTR lpBuffer,
+ BOOL fShowEfeectiveAddress
+ );
+
+typedef
+BOOL
+(*PNTKD_CHECK_CONTROL_C)(
+ VOID
+ );
+
+typedef
+BOOL
+(*PNTKD_READ_VIRTUAL_MEMORY)(
+ LPVOID address,
+ LPVOID buffer,
+ ULONG count,
+ PULONG bytesread
+ );
+
+typedef
+BOOL
+(*PNTKD_WRITE_VIRTUAL_MEMORY)(
+ LPVOID address,
+ LPVOID buffer,
+ ULONG count,
+ PULONG byteswritten
+ );
+
+typedef
+BOOL
+(*PNTKD_READ_PHYSICAL_MEMORY)(
+ PHYSICAL_ADDRESS address,
+ LPVOID buffer,
+ ULONG count,
+ PULONG bytesread
+ );
+
+typedef
+BOOL
+(*PNTKD_WRITE_PHYSICAL_MEMORY)(
+ PHYSICAL_ADDRESS address,
+ LPVOID buffer,
+ ULONG length,
+ PULONG byteswritten
+ );
+
+typedef struct _NTKD_EXTENSION_APIS {
+ DWORD nSize;
+ PNTKD_OUTPUT_ROUTINE lpOutputRoutine;
+ PNTKD_GET_EXPRESSION lpGetExpressionRoutine;
+ PNTKD_GET_SYMBOL lpGetSymbolRoutine;
+ PNTKD_DISASM lpDisasmRoutine;
+ PNTKD_CHECK_CONTROL_C lpCheckControlCRoutine;
+ PNTKD_READ_VIRTUAL_MEMORY lpReadVirtualMemRoutine;
+ PNTKD_WRITE_VIRTUAL_MEMORY lpWriteVirtualMemRoutine;
+ PNTKD_READ_PHYSICAL_MEMORY lpReadPhysicalMemRoutine;
+ PNTKD_WRITE_PHYSICAL_MEMORY lpWritePhysicalMemRoutine;
+} NTKD_EXTENSION_APIS, *PNTKD_EXTENSION_APIS;
+
+typedef
+VOID
+(*PNTKD_EXTENSION_ROUTINE)(
+ DWORD dwCurrentPc,
+ PNTKD_EXTENSION_APIS lpExtensionApis,
+ LPSTR lpArgumentString
+ );
+
+#endif // _NTKDEXTNS_
+
diff --git a/public/sdk/inc/ntkeapi.h b/public/sdk/inc/ntkeapi.h
new file mode 100644
index 000000000..f81082f7a
--- /dev/null
+++ b/public/sdk/inc/ntkeapi.h
@@ -0,0 +1,136 @@
+/*++ BUILD Version: 0003 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntkeapi.h
+
+Abstract:
+
+ This module contains the include file for data types that are exported
+ by kernel for general use.
+
+Author:
+
+ David N. Cutler (davec) 27-Jul-1989
+
+Environment:
+
+ Any mode.
+
+Revision History:
+
+--*/
+
+#ifndef _NTKEAPI_
+#define _NTKEAPI_
+
+// begin_ntddk begin_ntifs
+
+#define LOW_PRIORITY 0 // Lowest thread priority level
+#define LOW_REALTIME_PRIORITY 16 // Lowest realtime priority level
+#define HIGH_PRIORITY 31 // Highest thread priority level
+#define MAXIMUM_PRIORITY 32 // Number of thread priority levels
+// begin_winnt
+#define MAXIMUM_WAIT_OBJECTS 64 // Maximum number of wait objects
+
+#define MAXIMUM_SUSPEND_COUNT MAXCHAR // Maximum times thread can be suspended
+// end_winnt
+
+//
+// Thread affinity
+//
+
+typedef ULONG KAFFINITY;
+typedef KAFFINITY *PKAFFINITY;
+
+//
+// Thread priority
+//
+
+typedef LONG KPRIORITY;
+
+//
+// Spin Lock
+//
+
+typedef ULONG KSPIN_LOCK; // winnt ntndis
+
+typedef KSPIN_LOCK *PKSPIN_LOCK;
+
+//
+// Interrupt routine (first level dispatch)
+//
+
+typedef
+VOID
+(*PKINTERRUPT_ROUTINE) (
+ VOID
+ );
+
+//
+// Profile source types
+//
+typedef enum _KPROFILE_SOURCE {
+ ProfileTime,
+ ProfileAlignmentFixup,
+ ProfileTotalIssues,
+ ProfilePipelineDry,
+ ProfileLoadInstructions,
+ ProfilePipelineFrozen,
+ ProfileBranchInstructions,
+ ProfileTotalNonissues,
+ ProfileDcacheMisses,
+ ProfileIcacheMisses,
+ ProfileCacheMisses,
+ ProfileBranchMispredictions,
+ ProfileStoreInstructions,
+ ProfileFpInstructions,
+ ProfileIntegerInstructions,
+ Profile2Issue,
+ Profile3Issue,
+ Profile4Issue,
+ ProfileSpecialInstructions,
+ ProfileTotalCycles,
+ ProfileIcacheIssues,
+ ProfileDcacheAccesses,
+ ProfileMemoryBarrierCycles,
+ ProfileLoadLinkedIssues,
+ ProfileMaximum
+} KPROFILE_SOURCE;
+
+// end_ntddk end_ntifs
+
+//
+// User mode callback return.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCallbackReturn (
+ IN PVOID OutputBuffer OPTIONAL,
+ IN ULONG OutputLength,
+ IN NTSTATUS Status
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtW32Call (
+ IN ULONG ApiNumber,
+ IN PVOID InputBuffer,
+ IN ULONG InputLength,
+ OUT PVOID *OutputBuffer,
+ OUT PULONG OutputLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtYieldExecution (
+ VOID
+ );
+
+#endif // _NTKEAPI_
diff --git a/public/sdk/inc/ntkxapi.h b/public/sdk/inc/ntkxapi.h
new file mode 100644
index 000000000..553cdff52
--- /dev/null
+++ b/public/sdk/inc/ntkxapi.h
@@ -0,0 +1,118 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1995 Microsoft Corporation
+
+Module Name:
+
+ ntkxapi.h
+
+Abstract:
+
+ This module is the header file for all the executive system services
+ that are exported by the "ke" directory.
+
+Author:
+
+ David N. Cutler (davec) 1-Apr-1995
+
+Environment:
+
+ Any mode.
+
+Revision History:
+
+--*/
+
+#ifndef _NTKXAPI_
+#define _NTKXAPI_
+
+//
+// Channel Specific Access Rights.
+//
+
+#define CHANNEL_READ_MESSAGE 0x1
+#define CHANNEL_WRITE_MESSAGE 0x2
+#define CHANNEL_QUERY_INFORMATION 0x4
+#define CHANNEL_SET_INFORMATION 0x8
+
+#define CHANNEL_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xf)
+
+//
+// Channel message structure.
+//
+
+
+typedef struct _CHANNEL_MESSAGE {
+ PVOID Text;
+ ULONG Length;
+ PVOID Context;
+ PVOID Base;
+ union {
+ BOOLEAN Close;
+ LONGLONG Align;
+ };
+
+} CHANNEL_MESSAGE, *PCHANNEL_MESSAGE;
+
+//
+// Channel object function defintions.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateChannel (
+ OUT PHANDLE ChannelHandle,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenChannel (
+ OUT PHANDLE ChannelHandle,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtListenChannel (
+ IN HANDLE ChannelHandle,
+ OUT PCHANNEL_MESSAGE *Message
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSendWaitReplyChannel (
+ IN HANDLE ChannelHandle,
+ IN PVOID Text,
+ IN ULONG Length,
+ OUT PCHANNEL_MESSAGE *Message
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReplyWaitSendChannel (
+ IN PVOID Text,
+ IN ULONG Length,
+ OUT PCHANNEL_MESSAGE *Message
+ );
+
+//NTSYSAPI
+//NTSTATUS
+//NTAPI
+//NtImpersonateChannel (
+// VOID
+// );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetContextChannel (
+ IN PVOID Context
+ );
+
+#endif // _NTKXAPI_
diff --git a/public/sdk/inc/ntldr.h b/public/sdk/inc/ntldr.h
new file mode 100644
index 000000000..709d29565
--- /dev/null
+++ b/public/sdk/inc/ntldr.h
@@ -0,0 +1,302 @@
+/*++ BUILD Version: 0004 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntldr.h
+
+Abstract:
+
+ This module implements the public interfaces of the Loader (Ldr)
+ subsystem. Ldr is coupled with the session manager. It is not
+ a seperate process.
+
+Author:
+
+ Mike O'Leary (mikeol) 22-Mar-1990
+
+[Environment:]
+
+ optional-environment-info (e.g. kernel mode only...)
+
+[Notes:]
+
+ optional-notes
+
+Revision History:
+
+--*/
+
+
+
+#ifndef _NTLDRAPI_
+#define _NTLDRAPI_
+
+//
+// Private flags for loader data table entries
+//
+
+#define LDRP_STATIC_LINK 0x00000002
+#define LDRP_IMAGE_DLL 0x00000004
+#define LDRP_LOAD_IN_PROGRESS 0x00001000
+#define LDRP_UNLOAD_IN_PROGRESS 0x00002000
+#define LDRP_ENTRY_PROCESSED 0x00004000
+#define LDRP_ENTRY_INSERTED 0x00008000
+#define LDRP_CURRENT_LOAD 0x00010000
+#define LDRP_FAILED_BUILTIN_LOAD 0x00020000
+#define LDRP_DONT_CALL_FOR_THREADS 0x00040000
+#define LDRP_PROCESS_ATTACH_CALLED 0x00080000
+#define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000
+#define LDRP_IMAGE_NOT_AT_BASE 0x00200000
+#define LDRP_WX86_IGNORE_MACHINETYPE 0x00400000
+
+
+//
+// Loader Data Table. Used to track DLLs loaded into an
+// image.
+//
+
+typedef struct _LDR_DATA_TABLE_ENTRY {
+ LIST_ENTRY InLoadOrderLinks;
+ LIST_ENTRY InMemoryOrderLinks;
+ LIST_ENTRY InInitializationOrderLinks;
+ PVOID DllBase;
+ PVOID EntryPoint;
+ ULONG SizeOfImage;
+ UNICODE_STRING FullDllName;
+ UNICODE_STRING BaseDllName;
+ ULONG Flags;
+ USHORT LoadCount;
+ USHORT TlsIndex;
+ union {
+ LIST_ENTRY HashLinks;
+ struct {
+ PVOID SectionPointer;
+ ULONG CheckSum;
+ };
+ };
+ ULONG TimeDateStamp;
+} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
+
+#define DLL_PROCESS_ATTACH 1 // winnt
+#define DLL_THREAD_ATTACH 2 // winnt
+#define DLL_THREAD_DETACH 3 // winnt
+#define DLL_PROCESS_DETACH 0 // winnt
+
+typedef
+BOOLEAN
+(*PDLL_INIT_ROUTINE) (
+ IN PVOID DllHandle,
+ IN ULONG Reason,
+ IN PCONTEXT Context OPTIONAL
+ );
+
+typedef
+BOOLEAN
+(*PPROCESS_STARTER_ROUTINE) (
+ IN PVOID RealStartAddress
+ );
+
+VOID
+LdrProcessStarterHelper(
+ IN PPROCESS_STARTER_ROUTINE ProcessStarter,
+ IN PVOID RealStartAddress
+ );
+
+VOID
+NTAPI
+LdrShutdownProcess(
+ VOID
+ );
+
+VOID
+NTAPI
+LdrShutdownThread(
+ VOID
+ );
+
+NTSTATUS
+NTAPI
+LdrLoadDll(
+ IN PWSTR DllPath OPTIONAL,
+ IN PULONG DllCharacteristics OPTIONAL,
+ IN PUNICODE_STRING DllName,
+ OUT PVOID *DllHandle
+ );
+
+NTSTATUS
+NTAPI
+LdrGetDllHandle(
+ IN PWSTR DllPath OPTIONAL,
+ IN PULONG DllCharacteristics OPTIONAL,
+ IN PUNICODE_STRING DllName,
+ OUT PVOID *DllHandle
+ );
+
+NTSTATUS
+NTAPI
+LdrUnloadDll(
+ IN PVOID DllHandle
+ );
+
+ULONG
+NTAPI
+LdrRelocateImage (
+ IN PVOID NewBase,
+ IN PUCHAR LoaderName,
+ IN ULONG Success,
+ IN ULONG Conflict,
+ IN ULONG Invalid
+ );
+
+PIMAGE_BASE_RELOCATION
+NTAPI
+LdrProcessRelocationBlock(
+ IN ULONG VA,
+ IN ULONG SizeOfBlock,
+ IN PUSHORT NextOffset,
+ IN LONG Diff
+ );
+
+BOOLEAN
+NTAPI
+LdrVerifyMappedImageMatchesChecksum (
+ IN PVOID BaseAddress,
+ IN ULONG FileLength
+ );
+
+typedef
+VOID
+(*PLDR_IMPORT_MODULE_CALLBACK)(
+ IN PVOID Parameter,
+ PCHAR ModuleName
+ );
+
+NTSTATUS
+NTAPI
+LdrVerifyImageMatchesChecksum (
+ IN HANDLE ImageFileHandle,
+ IN PLDR_IMPORT_MODULE_CALLBACK ImportCallbackRoutine OPTIONAL,
+ IN PVOID ImportCallbackParameter,
+ OUT PUSHORT ImageCharacteristics OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+LdrGetProcedureAddress(
+ IN PVOID DllHandle,
+ IN PANSI_STRING ProcedureName OPTIONAL,
+ IN ULONG ProcedureNumber OPTIONAL,
+ OUT PVOID *ProcedureAddress
+ );
+
+#define LDR_RESOURCE_ID_NAME_MASK 0xFFFF0000
+
+NTSTATUS
+NTAPI
+LdrFindResourceDirectory_U(
+ IN PVOID DllHandle,
+ IN PULONG ResourceIdPath,
+ IN ULONG ResourceIdPathLength,
+ OUT PIMAGE_RESOURCE_DIRECTORY *ResourceDirectory
+ );
+
+NTSTATUS
+NTAPI
+LdrFindResource_U(
+ IN PVOID DllHandle,
+ IN PULONG ResourceIdPath,
+ IN ULONG ResourceIdPathLength,
+ OUT PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry
+ );
+
+#define LDR_MAXIMUM_RESOURCE_PATH_DEPTH 3
+
+typedef struct _LDR_ENUM_RESOURCE_ENTRY {
+ union {
+ ULONG NameOrId;
+ PIMAGE_RESOURCE_DIRECTORY_STRING Name;
+ struct {
+ USHORT Id;
+ USHORT NameIsPresent;
+ };
+ } Path[ LDR_MAXIMUM_RESOURCE_PATH_DEPTH ];
+ PVOID Data;
+ ULONG Size;
+ ULONG Reserved;
+} LDR_ENUM_RESOURCE_ENTRY, *PLDR_ENUM_RESOURCE_ENTRY;
+
+NTSTATUS
+NTAPI
+LdrEnumResources(
+ IN PVOID DllHandle,
+ IN PULONG ResourceIdPath,
+ IN ULONG ResourceIdPathLength,
+ IN OUT PULONG NumberOfResources,
+ OUT PLDR_ENUM_RESOURCE_ENTRY Resources OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+LdrAccessResource(
+ IN PVOID DllHandle,
+ IN PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry,
+ OUT PVOID *Address OPTIONAL,
+ OUT PULONG Size OPTIONAL
+ );
+
+
+NTSTATUS
+NTAPI
+LdrFindEntryForAddress(
+ IN PVOID Address,
+ OUT PLDR_DATA_TABLE_ENTRY *TableEntry
+ );
+
+
+NTSTATUS
+NTAPI
+LdrDisableThreadCalloutsForDll (
+ IN PVOID DllHandle
+ );
+
+
+typedef struct _RTL_PROCESS_MODULE_INFORMATION {
+ HANDLE Section; // Not filled in
+ PVOID MappedBase;
+ PVOID ImageBase;
+ ULONG ImageSize;
+ ULONG Flags;
+ USHORT LoadOrderIndex;
+ USHORT InitOrderIndex;
+ USHORT LoadCount;
+ USHORT OffsetToFileName;
+ UCHAR FullPathName[ 256 ];
+} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION;
+
+typedef struct _RTL_PROCESS_MODULES {
+ ULONG NumberOfModules;
+ RTL_PROCESS_MODULE_INFORMATION Modules[ 1 ];
+} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES;
+
+NTSTATUS
+NTAPI
+LdrQueryProcessModuleInformation(
+ OUT PRTL_PROCESS_MODULES ModuleInformation,
+ IN ULONG ModuleInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+NTSTATUS
+NTAPI
+LdrQueryImageFileExecutionOptions(
+ IN PUNICODE_STRING ImagePathName,
+ IN PWSTR OptionName,
+ IN ULONG Type,
+ OUT PVOID Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG ResultSize OPTIONAL
+ );
+
+#endif // _NTLDR_
diff --git a/public/sdk/inc/ntlmsp.h b/public/sdk/inc/ntlmsp.h
new file mode 100644
index 000000000..760047700
--- /dev/null
+++ b/public/sdk/inc/ntlmsp.h
@@ -0,0 +1,299 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: ntlmsp.h
+//
+// Contents:
+//
+// Classes:
+//
+// Functions:
+//
+// History: 13-May-92 PeterWi Created
+//
+//--------------------------------------------------------------------------
+
+#ifndef _NTLMSP_H_
+#define _NTLMSP_H_
+
+#include <ntmsv1_0.h>
+
+
+////////////////////////////////////////////////////////////////////////
+//
+// Name of the package to pass in to AcquireCredentialsHandle, etc.
+//
+////////////////////////////////////////////////////////////////////////
+
+#define NTLMSP_NAME_A "NTLM"
+#define NTLMSP_NAME L"NTLM"
+#define NTLMSP_NAME_SIZE (sizeof(NTLMSP_NAME) - sizeof(WCHAR))
+#define NTLMSP_COMMENT_A "NTLM Security Package"
+#define NTLMSP_COMMENT L"NTLM Security Package"
+#define NTLMSP_CAPABILITIES (SECPKG_FLAG_TOKEN_ONLY | \
+ SECPKG_FLAG_MULTI_REQUIRED | \
+ SECPKG_FLAG_CONNECTION | \
+ SECPKG_FLAG_INTEGRITY | \
+ SECPKG_FLAG_PRIVACY)
+
+#define NTLMSP_VERSION 1
+#define NTLMSP_RPCID 10 // RPC_C_AUTHN_WINNT from rpcdce.h
+#define NTLMSP_MAX_TOKEN_SIZE 0x300
+
+////////////////////////////////////////////////////////////////////////
+//
+// Opaque Messages passed between client and server
+//
+////////////////////////////////////////////////////////////////////////
+
+#define NTLMSSP_SIGNATURE "NTLMSSP"
+
+//
+// MessageType for the following messages.
+//
+
+typedef enum {
+ NtLmNegotiate = 1,
+ NtLmChallenge,
+ NtLmAuthenticate,
+ NtLmUnknown
+} NTLM_MESSAGE_TYPE;
+
+//
+// Valid values of NegotiateFlags
+//
+
+#define NTLMSSP_NEGOTIATE_UNICODE 0x0001 // Text strings are in unicode
+#define NTLMSSP_NEGOTIATE_OEM 0x0002 // Text strings are in OEM
+#define NTLMSSP_REQUEST_TARGET 0x0004 // Server should return its
+ // authentication realm
+#define NTLMSSP_NEGOTIATE_SIGN 0x0010 // Request signature capability
+#define NTLMSSP_NEGOTIATE_SEAL 0x0020 // Request confidentiality
+#define NTLMSSP_NEGOTIATE_DATAGRAM 0x0040 // Use datagram style authentication
+#define NTLMSSP_NEGOTIATE_LM_KEY 0x0080 // Use LM session key for sign/seal
+
+#define NTLMSSP_NEGOTIATE_NETWARE 0x0100 // NetWare authentication
+#define NTLMSSP_NEGOTIATE_NTLM 0x0200 // NTLM authentication
+
+#define NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED 0x1000 // Domain Name supplied on negotiate
+#define NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED 0x2000 // Workstation Name supplied on negotiate
+#define NTLMSSP_NEGOTIATE_LOCAL_CALL 0x4000 // Indicates client/server are same machine
+#define NTLMSSP_NEGOTIATE_ALWAYS_SIGN 0x8000 // Sign for all security levels
+
+
+//
+// Valid target types returned by the server in Negotiate Flags
+//
+
+#define NTLMSSP_TARGET_TYPE_DOMAIN 0x10000 // TargetName is a domain name
+#define NTLMSSP_TARGET_TYPE_SERVER 0x20000 // TargetName is a server name
+#define NTLMSSP_TARGET_TYPE_SHARE 0x40000 // TargetName is a share name
+
+
+//
+// Valid requests for additional output buffers
+//
+
+#define NTLMSSP_REQUEST_INIT_RESPONSE 0x100000 // get back session keys
+#define NTLMSSP_REQUEST_ACCEPT_RESPONSE 0x200000 // get back session key, LUID
+#define NTLMSSP_REQUEST_NON_NT_SESSION_KEY 0x400000 // request non-nt session key
+
+//
+// Opaque message returned from first call to InitializeSecurityContext
+//
+typedef struct _NEGOTIATE_MESSAGE {
+ UCHAR Signature[sizeof(NTLMSSP_SIGNATURE)];
+ NTLM_MESSAGE_TYPE MessageType;
+ ULONG NegotiateFlags;
+ STRING OemDomainName;
+ STRING OemWorkstationName;
+} NEGOTIATE_MESSAGE, *PNEGOTIATE_MESSAGE;
+
+
+//
+// Old version of the message, for old clients
+//
+
+typedef struct _OLD_NEGOTIATE_MESSAGE {
+ UCHAR Signature[sizeof(NTLMSSP_SIGNATURE)];
+ NTLM_MESSAGE_TYPE MessageType;
+ ULONG NegotiateFlags;
+} OLD_NEGOTIATE_MESSAGE, *POLD_NEGOTIATE_MESSAGE;
+
+//
+// Opaque message returned from first call to AcceptSecurityContext
+//
+typedef struct _CHALLENGE_MESSAGE {
+ UCHAR Signature[sizeof(NTLMSSP_SIGNATURE)];
+ NTLM_MESSAGE_TYPE MessageType;
+ STRING TargetName;
+ ULONG NegotiateFlags;
+ UCHAR Challenge[MSV1_0_CHALLENGE_LENGTH];
+ ULONG ServerContextHandleLower;
+ ULONG ServerContextHandleUpper;
+} CHALLENGE_MESSAGE, *PCHALLENGE_MESSAGE;
+
+//
+// Old version of the challenge message
+//
+
+typedef struct _OLD_CHALLENGE_MESSAGE {
+ UCHAR Signature[sizeof(NTLMSSP_SIGNATURE)];
+ NTLM_MESSAGE_TYPE MessageType;
+ STRING TargetName;
+ ULONG NegotiateFlags;
+ UCHAR Challenge[MSV1_0_CHALLENGE_LENGTH];
+} OLD_CHALLENGE_MESSAGE, *POLD_CHALLENGE_MESSAGE;
+
+//
+// Opaque message returned from second call to InitializeSecurityContext
+//
+typedef struct _AUTHENTICATE_MESSAGE {
+ UCHAR Signature[sizeof(NTLMSSP_SIGNATURE)];
+ NTLM_MESSAGE_TYPE MessageType;
+ STRING LmChallengeResponse;
+ STRING NtChallengeResponse;
+ STRING DomainName;
+ STRING UserName;
+ STRING Workstation;
+ STRING SessionKey;
+ ULONG NegotiateFlags;
+} AUTHENTICATE_MESSAGE, *PAUTHENTICATE_MESSAGE;
+
+typedef struct _OLD_AUTHENTICATE_MESSAGE {
+ UCHAR Signature[sizeof(NTLMSSP_SIGNATURE)];
+ NTLM_MESSAGE_TYPE MessageType;
+ STRING LmChallengeResponse;
+ STRING NtChallengeResponse;
+ STRING DomainName;
+ STRING UserName;
+ STRING Workstation;
+} OLD_AUTHENTICATE_MESSAGE, *POLD_AUTHENTICATE_MESSAGE;
+
+
+//
+// Additional input message to Initialize for clients to provide a
+// user-supplied password
+//
+
+typedef struct _NTLM_CHALLENGE_MESSAGE {
+ UNICODE_STRING Password;
+ UNICODE_STRING UserName;
+ UNICODE_STRING DomainName;
+} NTLM_CHALLENGE_MESSAGE, *PNTLM_CHALLENGE_MESSAGE;
+
+
+//
+// Non-opaque message returned from second call to InitializeSecurityContext
+//
+
+typedef struct _NTLM_INITIALIZE_RESPONSE {
+ UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
+ UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
+} NTLM_INITIALIZE_RESPONSE, *PNTLM_INITIALIZE_RESPONSE;
+
+//
+// Additional input message to Accept for trusted client skipping the first
+// call to Accept and providing their own challenge
+//
+
+typedef struct _NTLM_AUTHENTICATE_MESSAGE {
+ CHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
+ ULONG ParameterControl;
+} NTLM_AUTHENTICATE_MESSAGE, *PNTLM_AUTHENTICATE_MESSAGE;
+
+
+//
+// Non-opaque message returned from second call to AcceptSecurityContext
+//
+
+typedef struct _NTLM_ACCEPT_RESPONSE {
+ LUID LogonId;
+ LARGE_INTEGER KickoffTime;
+ ULONG UserFlags;
+ UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
+ UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
+} NTLM_ACCEPT_RESPONSE, *PNTLM_ACCEPT_RESPONSE;
+
+
+//
+// Size of the largest message
+// (The largest message is the AUTHENTICATE_MESSAGE)
+//
+
+#define NTLMSSP_MAX_MESSAGE_SIZE (sizeof(AUTHENTICATE_MESSAGE) + \
+ LM_RESPONSE_LENGTH + \
+ NT_RESPONSE_LENGTH + \
+ (DNLEN + 1) * sizeof(WCHAR) + \
+ (UNLEN + 1) * sizeof(WCHAR) + \
+ (CNLEN + 1) * sizeof(WCHAR))
+
+
+typedef struct _NTLMSSP_MESSAGE_SIGNATURE {
+ ULONG Version;
+ ULONG RandomPad;
+ ULONG CheckSum;
+ ULONG Nonce;
+} NTLMSSP_MESSAGE_SIGNATURE, *PNTLMSSP_MESSAGE_SIGNATURE;
+
+#define NTLMSSP_MESSAGE_SIGNATURE_SIZE sizeof(NTLMSSP_MESSAGE_SIGNATURE)
+//
+// Version 1 is the structure above, using stream RC4 to encrypt the trailing
+// 12 bytes.
+//
+#define NTLM_SIGN_VERSION 1
+
+//////////////////////////////////////////////////////////////////////
+//
+// Control Functions
+//
+//////////////////////////////////////////////////////////////////////
+
+#define NTLM_CHANGE_PASSWORD 0x0001
+#define NTLM_DUMP_CONTEXTS 0x1001
+#define NTLM_DUMP_CREDENTIALS 0x1002
+#define NTLM_DUMP_SESSIONS 0x1003
+
+
+//////////////////////////////////////////////////////////////////////
+//
+// Credential data structures
+//
+//////////////////////////////////////////////////////////////////////
+
+typedef enum {
+ Share = 1,
+ Server,
+ Domain,
+ Default
+} NTLMCredentialType, *PNTLMCredentialType;
+
+#define NTLM_CRED_REVISION 1
+
+typedef struct _NTLMCredHeader {
+ ULONG Revision;
+ ULONG CredentialCount;
+ ULONG Reserved[2];
+} NTLMCredHeader, *PNTLMCredHeader;
+
+
+typedef struct _NTLMPublicCredential {
+ NTLMCredentialType CredType;
+ SECURITY_STRING ssTarget;
+ SECURITY_STRING ssPassword;
+ SECURITY_STRING OPTIONAL ssUser;
+ SECURITY_STRING OPTIONAL ssDomain;
+ struct _NTLMPublicCredential * pNext;
+} NTLMPublicCredential, *PNTLMPublicCredential;
+
+typedef struct _NTLMPublicPrimaryCred {
+ SECURITY_STRING ssUser;
+ SECURITY_STRING ssDomain;
+ SECURITY_STRING ssPassword;
+} NTLMPublicPrimaryCred, *PNTLMPublicPrimaryCred;
+
+
+#endif // _NTLMSP_H_
+
diff --git a/public/sdk/inc/ntlpcapi.h b/public/sdk/inc/ntlpcapi.h
new file mode 100644
index 000000000..c30008c89
--- /dev/null
+++ b/public/sdk/inc/ntlpcapi.h
@@ -0,0 +1,277 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntlpcapi.h
+
+Abstract:
+
+ This is the include file for the Local Procedure Call (LPC) sub-component
+ of NTOS.
+
+Author:
+
+ Steve Wood (stevewo) 13-Mar-1989
+
+Revision History:
+
+--*/
+
+#ifndef _NTLPCAPI_
+#define _NTLPCAPI_
+
+//
+// Connection Port Type Specific Access Rights.
+//
+
+#define PORT_CONNECT (0x0001)
+
+#define PORT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
+
+
+// begin_ntsrv
+
+typedef struct _PORT_MESSAGE {
+ union {
+ struct {
+ CSHORT DataLength;
+ CSHORT TotalLength;
+ } s1;
+ ULONG Length;
+ } u1;
+ union {
+ struct {
+ CSHORT Type;
+ CSHORT DataInfoOffset;
+ } s2;
+ ULONG ZeroInit;
+ } u2;
+ union {
+ CLIENT_ID ClientId;
+ double DoNotUseThisField; // Force quadword alignment
+ };
+ ULONG MessageId;
+ union {
+ ULONG ClientViewSize; // Only valid on LPC_CONNECTION_REQUEST message
+ ULONG CallbackId; // Only valid on LPC_REQUEST message
+ };
+// UCHAR Data[];
+} PORT_MESSAGE, *PPORT_MESSAGE;
+
+// end_ntsrv
+
+typedef struct _PORT_DATA_ENTRY {
+ PVOID Base;
+ ULONG Size;
+} PORT_DATA_ENTRY, *PPORT_DATA_ENTRY;
+
+typedef struct _PORT_DATA_INFORMATION {
+ ULONG CountDataEntries;
+ PORT_DATA_ENTRY DataEntries[1];
+} PORT_DATA_INFORMATION, *PPORT_DATA_INFORMATION;
+
+
+//
+// Valid return values for the PORT_MESSAGE Type file
+//
+
+#define LPC_REQUEST 1
+#define LPC_REPLY 2
+#define LPC_DATAGRAM 3
+#define LPC_LOST_REPLY 4
+#define LPC_PORT_CLOSED 5
+#define LPC_CLIENT_DIED 6
+#define LPC_EXCEPTION 7
+#define LPC_DEBUG_EVENT 8
+#define LPC_ERROR_EVENT 9
+#define LPC_CONNECTION_REQUEST 10
+
+#define PORT_VALID_OBJECT_ATTRIBUTES (OBJ_CASE_INSENSITIVE)
+
+// begin_ntddk
+#define PORT_MAXIMUM_MESSAGE_LENGTH 256
+// end_ntddk
+
+typedef struct _LPC_CLIENT_DIED_MSG {
+ PORT_MESSAGE PortMsg;
+ LARGE_INTEGER CreateTime;
+} LPC_CLIENT_DIED_MSG, *PLPC_CLIENT_DIED_MSG;
+
+// begin_ntsrv
+
+typedef struct _PORT_VIEW {
+ ULONG Length;
+ HANDLE SectionHandle;
+ ULONG SectionOffset;
+ ULONG ViewSize;
+ PVOID ViewBase;
+ PVOID ViewRemoteBase;
+} PORT_VIEW, *PPORT_VIEW;
+
+typedef struct _REMOTE_PORT_VIEW {
+ ULONG Length;
+ ULONG ViewSize;
+ PVOID ViewBase;
+} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW;
+
+// end_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreatePort(
+ OUT PHANDLE PortHandle,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN ULONG MaxConnectionInfoLength,
+ IN ULONG MaxMessageLength,
+ IN ULONG MaxPoolUsage
+ );
+
+// begin_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtConnectPort(
+ OUT PHANDLE PortHandle,
+ IN PUNICODE_STRING PortName,
+ IN PSECURITY_QUALITY_OF_SERVICE SecurityQos,
+ IN OUT PPORT_VIEW ClientView OPTIONAL,
+ OUT PREMOTE_PORT_VIEW ServerView OPTIONAL,
+ OUT PULONG MaxMessageLength OPTIONAL,
+ IN OUT PVOID ConnectionInformation OPTIONAL,
+ IN OUT PULONG ConnectionInformationLength OPTIONAL
+ );
+
+// end_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtListenPort(
+ IN HANDLE PortHandle,
+ OUT PPORT_MESSAGE ConnectionRequest
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAcceptConnectPort(
+ OUT PHANDLE PortHandle,
+ IN PVOID PortContext,
+ IN PPORT_MESSAGE ConnectionRequest,
+ IN BOOLEAN AcceptConnection,
+ IN OUT PPORT_VIEW ServerView OPTIONAL,
+ OUT PREMOTE_PORT_VIEW ClientView OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCompleteConnectPort(
+ IN HANDLE PortHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtRequestPort(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE RequestMessage
+ );
+
+// begin_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtRequestWaitReplyPort(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE RequestMessage,
+ OUT PPORT_MESSAGE ReplyMessage
+ );
+
+// end_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReplyPort(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE ReplyMessage
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReplyWaitReplyPort(
+ IN HANDLE PortHandle,
+ IN OUT PPORT_MESSAGE ReplyMessage
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReplyWaitReceivePort(
+ IN HANDLE PortHandle,
+ OUT PVOID *PortContext OPTIONAL,
+ IN PPORT_MESSAGE ReplyMessage OPTIONAL,
+ OUT PPORT_MESSAGE ReceiveMessage
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtImpersonateClientOfPort(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE Message
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReadRequestData(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE Message,
+ IN ULONG DataEntryIndex,
+ OUT PVOID Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG NumberOfBytesRead OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtWriteRequestData(
+ IN HANDLE PortHandle,
+ IN PPORT_MESSAGE Message,
+ IN ULONG DataEntryIndex,
+ IN PVOID Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG NumberOfBytesWritten OPTIONAL
+ );
+
+
+typedef enum _PORT_INFORMATION_CLASS {
+ PortBasicInformation
+#if DEVL
+, PortDumpInformation
+#endif
+} PORT_INFORMATION_CLASS;
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationPort(
+ IN HANDLE PortHandle,
+ IN PORT_INFORMATION_CLASS PortInformationClass,
+ OUT PVOID PortInformation,
+ IN ULONG Length,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+#endif // _NTLPCAPI_
diff --git a/public/sdk/inc/ntlsa.h b/public/sdk/inc/ntlsa.h
new file mode 100644
index 000000000..bd19c50ba
--- /dev/null
+++ b/public/sdk/inc/ntlsa.h
@@ -0,0 +1,2190 @@
+/*++ BUILD Version: 0011 // Increment this if a change has global effects
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ ntlsa.h
+
+Abstract:
+
+ This module contains the public data structures and API definitions
+ needed to utilize Local Security Authority (LSA) services.
+
+
+Author:
+
+ Jim Kelly (JimK) 21-February-1991
+
+Revision History:
+
+--*/
+
+#ifndef _NTLSA_
+#define _NTLSA_
+
+//
+// Generic negative values for unknown IDs, inapplicable indices etc.
+//
+
+#define LSA_UNKNOWN_ID ((ULONG) 0xFFFFFFFFL)
+#define LSA_UNKNOWN_INDEX ((LONG) -1)
+
+
+//
+// Each time a domain controller is promoted to primary domain
+// controller, its ModifiedId is incremented by this amount.
+//
+
+#define LSA_PROMOTION_INCREMENT {0x0,0x10}
+
+
+
+// begin_ntsecapi
+#ifndef _NTLSA_IFS_
+// begin_ntifs
+
+
+//
+// Security operation mode of the system is held in a control
+// longword.
+//
+
+typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
+
+// end_ntifs
+#endif // _NTLSA_IFS_
+
+//
+// The flags in the security operational mode are defined
+// as:
+//
+// PasswordProtected - Some level of authentication (such as
+// a password) must be provided by users before they are
+// allowed to use the system. Once set, this value will
+// not be cleared without re-booting the system.
+//
+// IndividualAccounts - Each user must identify an account to
+// logon to. This flag is only meaningful if the
+// PasswordProtected flag is also set. If this flag is
+// not set and the PasswordProtected flag is set, then all
+// users may logon to the same account. Once set, this value
+// will not be cleared without re-booting the system.
+//
+// MandatoryAccess - Indicates the system is running in a mandatory
+// access control mode (e.g., B-level as defined by the U.S.A's
+// Department of Defense's "Orange Book"). This is not utilized
+// in the current release of NT. This flag is only meaningful
+// if both the PasswordProtected and IndividualAccounts flags are
+// set. Once set, this value will not be cleared without
+// re-booting the system.
+//
+// LogFull - Indicates the system has been brought up in a mode in
+// which if must perform security auditing, but its audit log
+// is full. This may (should) restrict the operations that
+// can occur until the audit log is made not-full again. THIS
+// VALUE MAY BE CLEARED WHILE THE SYSTEM IS RUNNING (I.E., WITHOUT
+// REBOOTING).
+//
+// If the PasswordProtected flag is not set, then the system is running
+// without security, and user interface should be adjusted appropriately.
+//
+
+#define LSA_MODE_PASSWORD_PROTECTED (0x00000001L)
+#define LSA_MODE_INDIVIDUAL_ACCOUNTS (0x00000002L)
+#define LSA_MODE_MANDATORY_ACCESS (0x00000004L)
+#define LSA_MODE_LOG_FULL (0x00000008L)
+
+// end_ntsecapi
+
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Widely used LSA defines //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+//
+// Defines for Count Limits on LSA API
+//
+
+#define LSA_MAXIMUM_SID_COUNT (0x00000100L)
+#define LSA_MAXIMUM_ENUMERATION_LENGTH (32000)
+
+
+
+//
+// Defines used by ISVs or end-users defining their own privilege DLLs
+//
+
+#define LSA_PRIVILEGE_DLL_MAJOR_REV_1 (0x01)
+#define LSA_PRIVILEGE_DLL_MINOR_REV_0 (0x00)
+
+#define LSA_PRIVILEGE_DLL_INFO 1
+#define LSA_PRIVILEGE_PROGRAM_NAMES 2
+#define LSA_PRIVILEGE_DISPLAY_NAMES 3
+
+//
+// Flag OR'ed into AuthenticationPackage parameter of LsaLogonUser to
+// request that the license server be called upon successful logon.
+//
+
+#define LSA_CALL_LICENSE_SERVER 0x80000000
+
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Data types used by logon processes //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+// begin_ntsecapi
+#ifndef _NTLSA_IFS_
+// begin_ntifs
+//
+// Used by a logon process to indicate what type of logon is being
+// requested.
+// NOTE: Proxy logon type is not currently supported in NT 3.x
+//
+
+typedef enum _SECURITY_LOGON_TYPE {
+ Interactive = 2, // Interactively logged on (locally or remotely)
+ Network, // Accessing system via network
+ Batch, // Started via a batch queue
+ Service, // Service started by service controller
+ Proxy, // Proxy logon
+ Unlock // Unlock workstation
+} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
+
+// end_ntifs
+#endif // _NTLSA_IFS_
+
+// end_ntsecapi
+
+
+//
+// Security System Access Flags. These correspond to the enumerated
+// type values in SECURITY_LOGON_TYPE.
+//
+// IF YOU ADD A NEW LOGON TYPE HERE, ALSO ADD IT TO THE POLICY_MODE_xxx
+// data definitions.
+//
+
+#define SECURITY_ACCESS_INTERACTIVE_LOGON ((ULONG) 0x00000001L)
+#define SECURITY_ACCESS_NETWORK_LOGON ((ULONG) 0x00000002L)
+#define SECURITY_ACCESS_BATCH_LOGON ((ULONG) 0x00000004L)
+#define SECURITY_ACCESS_SERVICE_LOGON ((ULONG) 0x00000010L)
+#define SECURITY_ACCESS_PROXY_LOGON ((ULONG) 0x00000020L)
+
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Data types related to Auditing //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// The following enumerated type is used between the reference monitor and
+// LSA in the generation of audit messages. It is used to indicate the
+// type of data being passed as a parameter from the reference monitor
+// to LSA. LSA is responsible for transforming the specified data type
+// into a set of unicode strings that are added to the event record in
+// the audit log.
+//
+
+typedef enum _SE_ADT_PARAMETER_TYPE {
+
+ SeAdtParmTypeNone = 0, //Produces 1 parameter
+ //Received value:
+ //
+ // None.
+ //
+ //Results in:
+ //
+ // a unicode string containing "-".
+ //
+ //Note: This is typically used to
+ // indicate that a parameter value
+ // was not available.
+ //
+
+ SeAdtParmTypeString, //Produces 1 parameter.
+ //Received Value:
+ //
+ // Unicode String (variable length)
+ //
+ //Results in:
+ //
+ // No transformation. The string
+ // entered into the event record as
+ // received.
+
+
+
+ SeAdtParmTypeFileSpec, //Produces 1 parameter.
+ //Received value:
+ //
+ // Unicode string containing a file or
+ // directory name.
+ //
+ //Results in:
+ //
+ // Unicode string with the prefix of the
+ // file's path replaced by a drive letter
+ // if possible.
+ //
+
+
+
+
+ SeAdtParmTypeUlong, //Produces 1 parameter
+ //Received value:
+ //
+ // Ulong
+ //
+ //Results in:
+ //
+ // Unicode string representation of
+ // unsigned integer value.
+
+
+ SeAdtParmTypeSid, //Produces 1 parameter.
+ //Received value:
+ //
+ // SID (variable length)
+ //
+ //Results in:
+ //
+ // String representation of SID
+ //
+
+
+
+
+ SeAdtParmTypeLogonId, //Produces 3 parameters.
+ //Received Value:
+ //
+ // LUID (fixed length)
+ //
+ //Results in:
+ //
+ // param 1: Username string
+ // param 2: domain name string
+ // param 3: Logon ID (Luid) string
+
+
+ SeAdtParmTypeNoLogonId, //Produces 3 parameters.
+ //Received value:
+ //
+ // None.
+ //
+ //Results in:
+ //
+ // param 1: "-"
+ // param 2: "-"
+ // param 3: "-"
+ //
+ //Note:
+ //
+ // This type is used when a logon ID
+ // is needed, but one is not available
+ // to pass. For example, if an
+ // impersonation logon ID is expected
+ // but the subject is not impersonating
+ // anyone.
+ //
+
+ SeAdtParmTypeAccessMask, //Produces 1 parameter with formatting.
+ //Received value:
+ //
+ // ACCESS_MASK followed by
+ // a Unicode string. The unicode
+ // string contains the name of the
+ // type of object the access mask
+ // applies to. The event's source
+ // further qualifies the object type.
+ //
+ //Results in:
+ //
+ // formatted unicode string built to
+ // take advantage of the specified
+ // source's parameter message file.
+ //
+ //Note:
+ //
+ // An access mask containing three
+ // access types for a Widget object
+ // type (defined by the Foozle source)
+ // might end up looking like:
+ //
+ // %%1062\n\t\t%1066\n\t\t%%601
+ //
+ // The %%numbers are signals to the
+ // event viewer to perform parameter
+ // substitution before display.
+ //
+
+
+
+ SeAdtParmTypePrivs //Produces 1 parameter with formatting.
+ //Received value:
+ //
+ // ??? Check with RobertRe and ScottBi
+ //
+ //Results in:
+ //
+ // formatted unicode string similar to
+ // that for access types. Each priv
+ // will be formatted to be displayed
+ // on its own line. E.g.,
+ //
+ // %%642\n\t\t%%651\n\t\t%%655
+ //
+
+
+
+
+} SE_ADT_PARAMETER_TYPE, *PSE_ADT_PARAMETER_TYPE;
+
+
+
+typedef struct _SE_ADT_PARAMETER_ARRAY_ENTRY {
+
+ SE_ADT_PARAMETER_TYPE Type;
+ ULONG Length;
+ ULONG Data[2];
+ PVOID Address;
+
+} SE_ADT_PARAMETER_ARRAY_ENTRY, *PSE_ADT_PARAMETER_ARRAY_ENTRY;
+
+
+
+//
+// Structure that will be passed between the Reference Monitor and LSA
+// to transmit auditing information.
+//
+
+#define SE_MAX_AUDIT_PARAMETERS 24
+
+typedef struct _SE_ADT_PARAMETER_ARRAY {
+
+ ULONG CategoryId;
+ ULONG AuditId;
+ ULONG ParameterCount;
+ ULONG Length;
+ USHORT Type;
+ ULONG Flags;
+ SE_ADT_PARAMETER_ARRAY_ENTRY Parameters[ SE_MAX_AUDIT_PARAMETERS ];
+
+} SE_ADT_PARAMETER_ARRAY, *PSE_ADT_PARAMETER_ARRAY;
+
+
+#define SE_ADT_PARAMETERS_SELF_RELATIVE 0x00000001
+
+// begin_ntsecapi
+
+//
+// Audit Event Categories
+//
+// The following are the built-in types or Categories of audit event.
+// WARNING! This structure is subject to expansion. The user should not
+// compute the number of elements of this type directly, but instead
+// should obtain the count of elements by calling LsaQueryInformationPolicy()
+// for the PolicyAuditEventsInformation class and extracting the count from
+// the MaximumAuditEventCount field of the returned structure.
+//
+
+typedef enum _POLICY_AUDIT_EVENT_TYPE {
+
+ AuditCategorySystem,
+ AuditCategoryLogon,
+ AuditCategoryObjectAccess,
+ AuditCategoryPrivilegeUse,
+ AuditCategoryDetailedTracking,
+ AuditCategoryPolicyChange,
+ AuditCategoryAccountManagement
+
+} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE;
+
+
+//
+// The following defines describe the auditing options for each
+// event type
+//
+
+// Leave options specified for this event unchanged
+
+#define POLICY_AUDIT_EVENT_UNCHANGED (0x00000000L)
+
+// Audit successful occurrences of events of this type
+
+#define POLICY_AUDIT_EVENT_SUCCESS (0x00000001L)
+
+// Audit failed attempts to cause an event of this type to occur
+
+#define POLICY_AUDIT_EVENT_FAILURE (0x00000002L)
+
+#define POLICY_AUDIT_EVENT_NONE (0x00000004L)
+
+// Mask of valid event auditing options
+
+#define POLICY_AUDIT_EVENT_MASK \
+ (POLICY_AUDIT_EVENT_SUCCESS | \
+ POLICY_AUDIT_EVENT_FAILURE | \
+ POLICY_AUDIT_EVENT_UNCHANGED | \
+ POLICY_AUDIT_EVENT_NONE)
+
+
+#ifdef _NTDEF_
+// begin_ntifs
+typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
+typedef STRING LSA_STRING, *PLSA_STRING;
+typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
+// end_ntifs
+#else // _NTDEF_
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+
+typedef struct _LSA_UNICODE_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PWSTR Buffer;
+} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
+
+typedef struct _LSA_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PCHAR Buffer;
+} LSA_STRING, *PLSA_STRING;
+
+typedef struct _LSA_OBJECT_ATTRIBUTES {
+ ULONG Length;
+ HANDLE RootDirectory;
+ PLSA_UNICODE_STRING ObjectName;
+ ULONG Attributes;
+ PVOID SecurityDescriptor; // Points to type SECURITY_DESCRIPTOR
+ PVOID SecurityQualityOfService; // Points to type SECURITY_QUALITY_OF_SERVICE
+} LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
+
+
+
+#endif // _NTDEF_
+// end_ntsecapi
+
+// begin_ntsecapi
+
+//
+// Macro for determining whether an API succeeded.
+//
+
+#define LSA_SUCCESS(Error) ((LONG)(Error) >= 0)
+
+// end_ntsecapi
+
+
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Services provided for use by logon processes //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+// begin_ntsecapi
+#ifndef _NTLSA_IFS_
+// begin_ntifs
+
+NTSTATUS
+NTAPI
+LsaRegisterLogonProcess (
+ IN PLSA_STRING LogonProcessName,
+ OUT PHANDLE LsaHandle,
+ OUT PLSA_OPERATIONAL_MODE SecurityMode
+ );
+
+// end_ntifs
+// begin_ntsrv
+
+NTSTATUS
+NTAPI
+LsaLogonUser (
+ IN HANDLE LsaHandle,
+ IN PLSA_STRING OriginName,
+ IN SECURITY_LOGON_TYPE LogonType,
+ IN ULONG AuthenticationPackage,
+ IN PVOID AuthenticationInformation,
+ IN ULONG AuthenticationInformationLength,
+ IN PTOKEN_GROUPS LocalGroups OPTIONAL,
+ IN PTOKEN_SOURCE SourceContext,
+ OUT PVOID *ProfileBuffer,
+ OUT PULONG ProfileBufferLength,
+ OUT PLUID LogonId,
+ OUT PHANDLE Token,
+ OUT PQUOTA_LIMITS Quotas,
+ OUT PNTSTATUS SubStatus
+ );
+
+
+// end_ntsrv
+// begin_ntifs
+
+NTSTATUS
+NTAPI
+LsaLookupAuthenticationPackage (
+ IN HANDLE LsaHandle,
+ IN PLSA_STRING PackageName,
+ OUT PULONG AuthenticationPackage
+ );
+
+NTSTATUS
+NTAPI
+LsaFreeReturnBuffer (
+ IN PVOID Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaCallAuthenticationPackage (
+ IN HANDLE LsaHandle,
+ IN ULONG AuthenticationPackage,
+ IN PVOID ProtocolSubmitBuffer,
+ IN ULONG SubmitBufferLength,
+ OUT PVOID *ProtocolReturnBuffer,
+ OUT PULONG ReturnBufferLength,
+ OUT PNTSTATUS ProtocolStatus
+ );
+
+
+NTSTATUS
+NTAPI
+LsaDeregisterLogonProcess (
+ IN HANDLE LsaHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaConnectUntrusted (
+ OUT PHANDLE LsaHandle
+ );
+
+
+// end_ntifs
+#endif // _NTLSA_IFS_
+
+// end_ntsecapi
+
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Data types used by authentication packages //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+//
+// opaque data type which represents a client request
+//
+
+typedef PVOID *PLSA_CLIENT_REQUEST;
+
+
+//
+// When a logon of a user is requested, the authentication package
+// is expected to return one of the following structures indicating
+// the contents of a user's token.
+//
+
+typedef enum _LSA_TOKEN_INFORMATION_TYPE {
+ LsaTokenInformationNull, // Implies LSA_TOKEN_INFORMATION_NULL data type
+ LsaTokenInformationV1 // Implies LSA_TOKEN_INFORMATION_V1 data type
+} LSA_TOKEN_INFORMATION_TYPE, *PLSA_TOKEN_INFORMATION_TYPE;
+
+
+//
+// The NULL information is used in cases where a non-authenticated
+// system access is needed. For example, a non-authentication network
+// circuit (such as LAN Manager's null session) can be given NULL
+// information. This will result in an anonymous token being generated
+// for the logon that gives the user no ability to access protected system
+// resources, but does allow access to non-protected system resources.
+//
+
+typedef struct _LSA_TOKEN_INFORMATION_NULL {
+
+ //
+ // Time at which the security context becomes invalid.
+ // Use a value in the distant future if the context
+ // never expires.
+ //
+
+ LARGE_INTEGER ExpirationTime;
+
+ //
+ // The SID(s) of groups the user is to be made a member of. This should
+ // not include WORLD or other system defined and assigned
+ // SIDs. These will be added automatically by LSA.
+ //
+ // Each SID is expected to be in a separately allocated block
+ // of memory. The TOKEN_GROUPS structure is also expected to
+ // be in a separately allocated block of memory.
+ //
+
+ PTOKEN_GROUPS Groups;
+
+} LSA_TOKEN_INFORMATION_NULL, *PLSA_TOKEN_INFORMATION_NULL;
+
+
+//
+// The V1 information is used in most cases of logon. This structure
+// contains information that an authentication package can place in a
+// Version 1 NT token object.
+//
+
+typedef struct _LSA_TOKEN_INFORMATION_V1 {
+
+ //
+ // Time at which the security context becomes invalid.
+ // Use a value in the distant future if the context
+ // never expires.
+ //
+
+ LARGE_INTEGER ExpirationTime;
+
+ //
+ // The SID of the user logging on. The SID value is in a
+ // separately allocated block of memory.
+ //
+
+ TOKEN_USER User;
+
+ //
+ // The SID(s) of groups the user is a member of. This should
+ // not include WORLD or other system defined and assigned
+ // SIDs. These will be added automatically by LSA.
+ //
+ // Each SID is expected to be in a separately allocated block
+ // of memory. The TOKEN_GROUPS structure is also expected to
+ // be in a separately allocated block of memory.
+ //
+
+ PTOKEN_GROUPS Groups;
+
+ //
+ // This field is used to establish the primary group of the user.
+ // This value does not have to correspond to one of the SIDs
+ // assigned to the user.
+ //
+ // The SID pointed to by this structure is expected to be in
+ // a separately allocated block of memory.
+ //
+ // This field is mandatory and must be filled in.
+ //
+
+ TOKEN_PRIMARY_GROUP PrimaryGroup;
+
+
+
+ //
+ // The privileges the user is assigned. This list of privileges
+ // will be augmented or over-ridden by any local security policy
+ // assigned privileges.
+ //
+ // Each privilege is expected to be in a separately allocated
+ // block of memory. The TOKEN_PRIVILEGES structure is also
+ // expected to be in a separately allocated block of memory.
+ //
+ // If there are no privileges to assign to the user, this field
+ // may be set to NULL.
+ //
+
+ PTOKEN_PRIVILEGES Privileges;
+
+
+
+ //
+ // This field may be used to establish an explicit default
+ // owner. Normally, the user ID is used as the default owner.
+ // If another value is desired, it must be specified here.
+ //
+ // The Owner.Sid field may be set to NULL to indicate there is no
+ // alternate default owner value.
+ //
+
+ TOKEN_OWNER Owner;
+
+ //
+ // This field may be used to establish a default
+ // protection for the user. If no value is provided, then
+ // a default protection that grants everyone all access will
+ // be established.
+ //
+ // The DefaultDacl.DefaultDacl field may be set to NULL to indicate
+ // there is no default protection.
+ //
+
+ TOKEN_DEFAULT_DACL DefaultDacl;
+
+} LSA_TOKEN_INFORMATION_V1, *PLSA_TOKEN_INFORMATION_V1;
+
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Interface definitions available for use by authentication packages //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+
+
+typedef NTSTATUS
+(*PLSA_CREATE_LOGON_SESSION) (
+ IN PLUID LogonId
+ );
+
+typedef NTSTATUS
+(*PLSA_DELETE_LOGON_SESSION) (
+ IN PLUID LogonId
+ );
+
+typedef NTSTATUS
+(*PLSA_ADD_CREDENTIAL) (
+ IN PLUID LogonId,
+ IN ULONG AuthenticationPackage,
+ IN PLSA_STRING PrimaryKeyValue,
+ IN PLSA_STRING Credentials
+ );
+
+typedef NTSTATUS
+(*PLSA_GET_CREDENTIALS) (
+ IN PLUID LogonId,
+ IN ULONG AuthenticationPackage,
+ IN OUT PULONG QueryContext,
+ IN BOOLEAN RetrieveAllCredentials,
+ IN PLSA_STRING PrimaryKeyValue,
+ OUT PULONG PrimaryKeyLength,
+ IN PLSA_STRING Credentials
+ );
+
+typedef NTSTATUS
+(*PLSA_DELETE_CREDENTIAL) (
+ IN PLUID LogonId,
+ IN ULONG AuthenticationPackage,
+ IN PLSA_STRING PrimaryKeyValue
+ );
+
+typedef PVOID
+(*PLSA_ALLOCATE_LSA_HEAP) (
+ IN ULONG Length
+ );
+
+typedef VOID
+(*PLSA_FREE_LSA_HEAP) (
+ IN PVOID Base
+ );
+
+typedef NTSTATUS
+(*PLSA_ALLOCATE_CLIENT_BUFFER) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN ULONG LengthRequired,
+ OUT PVOID *ClientBaseAddress
+ );
+
+typedef NTSTATUS
+(*PLSA_FREE_CLIENT_BUFFER) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN PVOID ClientBaseAddress
+ );
+
+typedef NTSTATUS
+(*PLSA_COPY_TO_CLIENT_BUFFER) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN ULONG Length,
+ IN PVOID ClientBaseAddress,
+ IN PVOID BufferToCopy
+ );
+
+typedef NTSTATUS
+(*PLSA_COPY_FROM_CLIENT_BUFFER) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN ULONG Length,
+ IN PVOID BufferToCopy,
+ IN PVOID ClientBaseAddress
+ );
+
+
+
+//
+// The dispatch table of LSA services which are available to
+// authentication packages.
+//
+typedef struct _LSA_DISPATCH_TABLE {
+ PLSA_CREATE_LOGON_SESSION CreateLogonSession;
+ PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
+ PLSA_ADD_CREDENTIAL AddCredential;
+ PLSA_GET_CREDENTIALS GetCredentials;
+ PLSA_DELETE_CREDENTIAL DeleteCredential;
+ PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
+ PLSA_FREE_LSA_HEAP FreeLsaHeap;
+ PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
+ PLSA_FREE_CLIENT_BUFFER FreeClientBuffer;
+ PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer;
+ PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer;
+} LSA_DISPATCH_TABLE, *PLSA_DISPATCH_TABLE;
+
+
+
+////////////////////////////////////////////////////////////////////////////
+// //
+// Interface definitions of services provided by authentication packages //
+// //
+////////////////////////////////////////////////////////////////////////////
+
+
+//
+// Routine names
+//
+// The routines provided by the DLL must be assigned the following names
+// so that their addresses can be retrieved when the DLL is loaded.
+//
+
+#define LSA_AP_NAME_INITIALIZE_PACKAGE "LsaApInitializePackage\0"
+#define LSA_AP_NAME_LOGON_USER "LsaApLogonUser\0"
+#define LSA_AP_NAME_LOGON_USER_EX "LsaApLogonUserEx\0"
+#define LSA_AP_NAME_CALL_PACKAGE "LsaApCallPackage\0"
+#define LSA_AP_NAME_LOGON_TERMINATED "LsaApLogonTerminated\0"
+#define LSA_AP_NAME_CALL_PACKAGE_UNTRUSTED "LsaApCallPackageUntrusted\0"
+
+
+//
+// Routine templates
+//
+
+
+typedef NTSTATUS
+(*PLSA_AP_INITIALIZE_PACKAGE) (
+ IN ULONG AuthenticationPackageId,
+ IN PLSA_DISPATCH_TABLE LsaDispatchTable,
+ IN PLSA_STRING Database OPTIONAL,
+ IN PLSA_STRING Confidentiality OPTIONAL,
+ OUT PLSA_STRING *AuthenticationPackageName
+ );
+
+typedef NTSTATUS
+(*PLSA_AP_LOGON_USER) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN SECURITY_LOGON_TYPE LogonType,
+ IN PVOID AuthenticationInformation,
+ IN PVOID ClientAuthenticationBase,
+ IN ULONG AuthenticationInformationLength,
+ OUT PVOID *ProfileBuffer,
+ OUT PULONG ProfileBufferLength,
+ OUT PLUID LogonId,
+ OUT PNTSTATUS SubStatus,
+ OUT PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
+ OUT PVOID *TokenInformation,
+ OUT PLSA_UNICODE_STRING *AccountName,
+ OUT PLSA_UNICODE_STRING *AuthenticatingAuthority
+ );
+
+typedef NTSTATUS
+(*PLSA_AP_LOGON_USER_EX) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN SECURITY_LOGON_TYPE LogonType,
+ IN PVOID AuthenticationInformation,
+ IN PVOID ClientAuthenticationBase,
+ IN ULONG AuthenticationInformationLength,
+ OUT PVOID *ProfileBuffer,
+ OUT PULONG ProfileBufferLength,
+ OUT PLUID LogonId,
+ OUT PNTSTATUS SubStatus,
+ OUT PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
+ OUT PVOID *TokenInformation,
+ OUT PUNICODE_STRING *AccountName,
+ OUT PUNICODE_STRING *AuthenticatingAuthority,
+ OUT PUNICODE_STRING *MachineName
+ );
+
+typedef NTSTATUS
+(*PLSA_AP_CALL_PACKAGE) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN PVOID ProtocolSubmitBuffer,
+ IN PVOID ClientBufferBase,
+ IN ULONG SubmitBufferLength,
+ OUT PVOID *ProtocolReturnBuffer,
+ OUT PULONG ReturnBufferLength,
+ OUT PNTSTATUS ProtocolStatus
+ );
+
+typedef VOID
+(*PLSA_AP_LOGON_TERMINATED) (
+ IN PLUID LogonId
+ );
+
+typedef PLSA_AP_CALL_PACKAGE PLSA_AP_CALL_PACKAGE_UNTRUSTED;
+
+
+
+// begin_ntsecapi
+////////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy Administration API datatypes and defines //
+// //
+////////////////////////////////////////////////////////////////////////////
+
+//
+// Access types for the Policy object
+//
+
+#define POLICY_VIEW_LOCAL_INFORMATION 0x00000001L
+#define POLICY_VIEW_AUDIT_INFORMATION 0x00000002L
+#define POLICY_GET_PRIVATE_INFORMATION 0x00000004L
+#define POLICY_TRUST_ADMIN 0x00000008L
+#define POLICY_CREATE_ACCOUNT 0x00000010L
+#define POLICY_CREATE_SECRET 0x00000020L
+#define POLICY_CREATE_PRIVILEGE 0x00000040L
+#define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080L
+#define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100L
+#define POLICY_AUDIT_LOG_ADMIN 0x00000200L
+#define POLICY_SERVER_ADMIN 0x00000400L
+#define POLICY_LOOKUP_NAMES 0x00000800L
+
+#define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ POLICY_VIEW_LOCAL_INFORMATION |\
+ POLICY_VIEW_AUDIT_INFORMATION |\
+ POLICY_GET_PRIVATE_INFORMATION |\
+ POLICY_TRUST_ADMIN |\
+ POLICY_CREATE_ACCOUNT |\
+ POLICY_CREATE_SECRET |\
+ POLICY_CREATE_PRIVILEGE |\
+ POLICY_SET_DEFAULT_QUOTA_LIMITS |\
+ POLICY_SET_AUDIT_REQUIREMENTS |\
+ POLICY_AUDIT_LOG_ADMIN |\
+ POLICY_SERVER_ADMIN |\
+ POLICY_LOOKUP_NAMES )
+
+
+#define POLICY_READ (STANDARD_RIGHTS_READ |\
+ POLICY_VIEW_AUDIT_INFORMATION |\
+ POLICY_GET_PRIVATE_INFORMATION)
+
+#define POLICY_WRITE (STANDARD_RIGHTS_WRITE |\
+ POLICY_TRUST_ADMIN |\
+ POLICY_CREATE_ACCOUNT |\
+ POLICY_CREATE_SECRET |\
+ POLICY_CREATE_PRIVILEGE |\
+ POLICY_SET_DEFAULT_QUOTA_LIMITS |\
+ POLICY_SET_AUDIT_REQUIREMENTS |\
+ POLICY_AUDIT_LOG_ADMIN |\
+ POLICY_SERVER_ADMIN)
+
+#define POLICY_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ POLICY_VIEW_LOCAL_INFORMATION |\
+ POLICY_LOOKUP_NAMES )
+
+
+//
+// Policy object specific data types.
+//
+
+//
+// The following data type is used to identify a domain
+//
+
+typedef struct _LSA_TRUST_INFORMATION {
+
+ LSA_UNICODE_STRING Name;
+ PSID Sid;
+
+} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
+
+// where members have the following usage:
+//
+// Name - The name of the domain.
+//
+// Sid - A pointer to the Sid of the Domain
+//
+
+//
+// The following data type is used in name and SID lookup services to
+// describe the domains referenced in the lookup operation.
+//
+
+typedef struct _LSA_REFERENCED_DOMAIN_LIST {
+
+ ULONG Entries;
+ PLSA_TRUST_INFORMATION Domains;
+
+} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
+
+// where members have the following usage:
+//
+// Entries - Is a count of the number of domains described in the
+// Domains array.
+//
+// Domains - Is a pointer to an array of Entries LSA_TRUST_INFORMATION data
+// structures.
+//
+
+
+//
+// The following data type is used in name to SID lookup services to describe
+// the domains referenced in the lookup operation.
+//
+
+typedef struct _LSA_TRANSLATED_SID {
+
+ SID_NAME_USE Use;
+ ULONG RelativeId;
+ LONG DomainIndex;
+
+} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
+
+// where members have the following usage:
+//
+// Use - identifies the use of the SID. If this value is SidUnknown or
+// SidInvalid, then the remainder of the record is not set and
+// should be ignored.
+//
+// RelativeId - Contains the relative ID of the translated SID. The
+// remainder of the SID (the prefix) is obtained using the
+// DomainIndex field.
+//
+// DomainIndex - Is the index of an entry in a related
+// LSA_REFERENCED_DOMAIN_LIST data structure describing the
+// domain in which the account was found.
+//
+// If there is no corresponding reference domain for an entry, then
+// this field will contain a negative value.
+//
+
+
+//
+// The following data type is used in SID to name lookup services to
+// describe the domains referenced in the lookup operation.
+//
+
+typedef struct _LSA_TRANSLATED_NAME {
+
+ SID_NAME_USE Use;
+ LSA_UNICODE_STRING Name;
+ LONG DomainIndex;
+
+} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
+
+// where the members have the following usage:
+//
+// Use - Identifies the use of the name. If this value is SidUnknown
+// or SidInvalid, then the remainder of the record is not set and
+// should be ignored. If this value is SidWellKnownGroup then the
+// Name field is invalid, but the DomainIndex field is not.
+//
+// Name - Contains the isolated name of the translated SID.
+//
+// DomainIndex - Is the index of an entry in a related
+// LSA_REFERENCED_DOMAIN_LIST data structure describing the domain
+// in which the account was found.
+//
+// If there is no corresponding reference domain for an entry, then
+// this field will contain a negative value.
+//
+
+// end_ntsecapi
+
+//
+// The following data type specifies the ways in whcih a user or member of
+// an alias or group may be allowed to access the system. An account may
+// be granted zero or more of these types of access to the system.
+//
+// The types of access are:
+//
+// Interactive - The user or alias/group member may interactively logon
+// to the system.
+//
+// Network - The user or alias/group member may access the system via
+// the network (e.g., through shares).
+//
+// Service - The user or alias may be activated as a service on the
+// system.
+//
+
+typedef ULONG POLICY_SYSTEM_ACCESS_MODE, *PPOLICY_SYSTEM_ACCESS_MODE;
+
+#define POLICY_MODE_INTERACTIVE SECURITY_ACCESS_INTERACTIVE_LOGON
+#define POLICY_MODE_NETWORK SECURITY_ACCESS_NETWORK_LOGON
+#define POLICY_MODE_BATCH SECURITY_ACCESS_BATCH_LOGON
+#define POLICY_MODE_SERVICE SECURITY_ACCESS_SERVICE_LOGON
+#define POLICY_MODE_PROXY SECURITY_ACCESS_PROXY_LOGON
+
+#define POLICY_MODE_ALL (POLICY_MODE_INTERACTIVE | \
+ POLICY_MODE_NETWORK | \
+ POLICY_MODE_BATCH | \
+ POLICY_MODE_SERVICE | \
+ POLICY_MODE_PROXY )
+
+// begin_ntsecapi
+
+//
+// The following data type is used to represent the role of the LSA
+// server (primary or backup).
+//
+
+typedef enum _POLICY_LSA_SERVER_ROLE {
+
+ PolicyServerRoleBackup = 2,
+ PolicyServerRolePrimary
+
+} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE;
+
+
+//
+// The following data type is used to represent the state of the LSA
+// server (enabled or disabled). Some operations may only be performed on
+// an enabled LSA server.
+//
+
+typedef enum _POLICY_SERVER_ENABLE_STATE {
+
+ PolicyServerEnabled = 2,
+ PolicyServerDisabled
+
+} POLICY_SERVER_ENABLE_STATE, *PPOLICY_SERVER_ENABLE_STATE;
+
+
+//
+// The following data type is used to specify the auditing options for
+// an Audit Event Type.
+//
+
+typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
+
+// where the following flags can be set:
+//
+// POLICY_AUDIT_EVENT_UNCHANGED - Leave existing auditing options
+// unchanged for events of this type. This flag is only used for
+// set operations. If this flag is set, then all other flags
+// are ignored.
+//
+// POLICY_AUDIT_EVENT_NONE - Cancel all auditing options for events
+// of this type. If this flag is set, the success/failure flags
+// are ignored.
+//
+// POLICY_AUDIT_EVENT_SUCCESS - When auditing is enabled, audit all
+// successful occurrences of events of the given type.
+//
+// POLICY_AUDIT_EVENT_FAILURE - When auditing is enabled, audit all
+// unsuccessful occurrences of events of the given type.
+//
+
+
+
+//
+// The following data type is used to return information about privileges
+// defined on a system.
+//
+
+typedef struct _POLICY_PRIVILEGE_DEFINITION {
+
+ LSA_UNICODE_STRING Name;
+ LUID LocalValue;
+
+} POLICY_PRIVILEGE_DEFINITION, *PPOLICY_PRIVILEGE_DEFINITION;
+
+// where the members have the following usage:
+//
+// Name - Is the architected name of the privilege. This is the
+// primary key of the privilege and the only value that is
+// transportable between systems.
+//
+// Luid - is a LUID value assigned locally for efficient representation
+// of the privilege. Ths value is meaningful only on the system it
+// was assigned on and is not transportable in any way.
+//
+
+
+//
+// The following data type defines the classes of Policy Information
+// that may be queried/set.
+//
+
+typedef enum _POLICY_INFORMATION_CLASS {
+
+ PolicyAuditLogInformation = 1,
+ PolicyAuditEventsInformation,
+ PolicyPrimaryDomainInformation,
+ PolicyPdAccountInformation,
+ PolicyAccountDomainInformation,
+ PolicyLsaServerRoleInformation,
+ PolicyReplicaSourceInformation,
+ PolicyDefaultQuotaInformation,
+ PolicyModificationInformation,
+ PolicyAuditFullSetInformation,
+ PolicyAuditFullQueryInformation
+
+} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
+
+
+//
+// The following data type corresponds to the PolicyAuditLogInformation
+// information class. It is used to represent information relating to
+// the Audit Log.
+//
+// This structure may be used in both query and set operations. However,
+// when used in set operations, some fields are ignored.
+//
+
+typedef struct _POLICY_AUDIT_LOG_INFO {
+
+ ULONG AuditLogPercentFull;
+ ULONG MaximumLogSize;
+ LARGE_INTEGER AuditRetentionPeriod;
+ BOOLEAN AuditLogFullShutdownInProgress;
+ LARGE_INTEGER TimeToShutdown;
+ ULONG NextAuditRecordId;
+
+} POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO;
+
+// where the members have the following usage:
+//
+// AuditLogPercentFull - Indicates the percentage of the Audit Log
+// currently being used.
+//
+// MaximumLogSize - Specifies the maximum size of the Audit Log in
+// kilobytes.
+//
+// AuditRetentionPeriod - Indicates the length of time that Audit
+// Records are to be retained. Audit Records are discardable
+// if their timestamp predates the current time minus the
+// retention period.
+//
+// AuditLogFullShutdownInProgress - Indicates whether or not a system
+// shutdown is being initiated due to the security Audit Log becoming
+// full. This condition will only occur if the system is configured
+// to shutdown when the log becomes full.
+//
+// TRUE indicates that a shutdown is in progress
+// FALSE indicates that a shutdown is not in progress.
+//
+// Once a shutdown has been initiated, this flag will be set to
+// TRUE. If an administrator is able to currect the situation
+// before the shutdown becomes irreversible, then this flag will
+// be reset to false.
+//
+// This field is ignored for set operations.
+//
+// TimeToShutdown - If the AuditLogFullShutdownInProgress flag is set,
+// then this field contains the time left before the shutdown
+// becomes irreversible.
+//
+// This field is ignored for set operations.
+//
+
+
+//
+// The following data type corresponds to the PolicyAuditEventsInformation
+// information class. It is used to represent information relating to
+// the audit requirements.
+//
+
+typedef struct _POLICY_AUDIT_EVENTS_INFO {
+
+ BOOLEAN AuditingMode;
+ PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
+ ULONG MaximumAuditEventCount;
+
+} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
+
+// where the members have the following usage:
+//
+// AuditingMode - A Boolean variable specifying the Auditing Mode value.
+// This value is interpreted as follows:
+//
+// TRUE - Auditing is to be enabled (set operations) or is enabled
+// (query operations). Audit Records will be generated according
+// to the Event Auditing Options in effect (see the
+// EventAuditingOptions field.
+//
+// FALSE - Auditing is to be disabled (set operations) or is
+// disabled (query operations). No Audit Records will be
+// generated. Note that for set operations the Event Auditing
+// Options in effect will still be updated as specified by the
+// EventAuditingOptions field whether Auditing is enabled or
+// disabled.
+//
+// EventAuditingOptions - Pointer to an array of Auditing Options
+// indexed by Audit Event Type.
+//
+// MaximumAuditEventCount - Specifiesa count of the number of Audit
+// Event Types specified by the EventAuditingOptions parameter. If
+// this count is less than the number of Audit Event Types supported
+// by the system, the Auditing Options for Event Types with IDs
+// higher than (MaximumAuditEventCount + 1) are left unchanged.
+//
+
+
+//
+// The following structure corresponds to the PolicyAccountDomainInformation
+// information class.
+//
+
+typedef struct _POLICY_ACCOUNT_DOMAIN_INFO {
+
+ LSA_UNICODE_STRING DomainName;
+ PSID DomainSid;
+
+} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
+
+// where the members have the following usage:
+//
+// DomainName - Is the name of the domain
+//
+// DomainSid - Is the Sid of the domain
+//
+
+
+//
+// The following structure corresponds to the PolicyPrimaryDomainInformation
+// information class.
+//
+
+typedef struct _POLICY_PRIMARY_DOMAIN_INFO {
+
+ LSA_UNICODE_STRING Name;
+ PSID Sid;
+
+} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
+
+// where the members have the following usage:
+//
+// Name - Is the name of the domain
+//
+// Sid - Is the Sid of the domain
+//
+
+
+//
+// The following structure corresponds to the PolicyPdAccountInformation
+// information class. This structure may be used in Query operations
+// only.
+//
+
+typedef struct _POLICY_PD_ACCOUNT_INFO {
+
+ LSA_UNICODE_STRING Name;
+
+} POLICY_PD_ACCOUNT_INFO, *PPOLICY_PD_ACCOUNT_INFO;
+
+// where the members have the following usage:
+//
+// Name - Is the name of an account in the domain that should be used
+// for authentication and name/ID lookup requests.
+//
+
+
+//
+// The following structure corresponds to the PolicyLsaServerRoleInformation
+// information class.
+//
+
+typedef struct _POLICY_LSA_SERVER_ROLE_INFO {
+
+ POLICY_LSA_SERVER_ROLE LsaServerRole;
+
+} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO;
+
+// where the fields have the following usage:
+//
+// TBS
+//
+
+
+//
+// The following structure corresponds to the PolicyReplicaSourceInformation
+// information class.
+//
+
+typedef struct _POLICY_REPLICA_SOURCE_INFO {
+
+ LSA_UNICODE_STRING ReplicaSource;
+ LSA_UNICODE_STRING ReplicaAccountName;
+
+} POLICY_REPLICA_SOURCE_INFO, *PPOLICY_REPLICA_SOURCE_INFO;
+
+
+//
+// The following structure corresponds to the PolicyDefaultQuotaInformation
+// information class.
+//
+
+typedef struct _POLICY_DEFAULT_QUOTA_INFO {
+
+ QUOTA_LIMITS QuotaLimits;
+
+} POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO;
+
+
+//
+// The following structure corresponds to the PolicyModificationInformation
+// information class.
+//
+
+typedef struct _POLICY_MODIFICATION_INFO {
+
+ LARGE_INTEGER ModifiedId;
+ LARGE_INTEGER DatabaseCreationTime;
+
+} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO;
+
+// where the members have the following usage:
+//
+// ModifiedId - Is a 64-bit unsigned integer that is incremented each
+// time anything in the LSA database is modified. This value is
+// only modified on Primary Domain Controllers.
+//
+// DatabaseCreationTime - Is the date/time that the LSA Database was
+// created. On Backup Domain Controllers, this value is replicated
+// from the Primary Domain Controller.
+//
+
+//
+// The following structure type corresponds to the PolicyAuditFullSetInformation
+// Information Class.
+//
+
+typedef struct _POLICY_AUDIT_FULL_SET_INFO {
+
+ BOOLEAN ShutDownOnFull;
+
+} POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO;
+
+//
+// The following structure type corresponds to the PolicyAuditFullQueryInformation
+// Information Class.
+//
+
+typedef struct _POLICY_AUDIT_FULL_QUERY_INFO {
+
+ BOOLEAN ShutDownOnFull;
+ BOOLEAN LogIsFull;
+
+} POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO;
+
+// end_ntsecapi
+
+//
+// Account object type-specific Access Types
+//
+
+#define ACCOUNT_VIEW 0x00000001L
+#define ACCOUNT_ADJUST_PRIVILEGES 0x00000002L
+#define ACCOUNT_ADJUST_QUOTAS 0x00000004L
+#define ACCOUNT_ADJUST_SYSTEM_ACCESS 0x00000008L
+
+#define ACCOUNT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ ACCOUNT_VIEW |\
+ ACCOUNT_ADJUST_PRIVILEGES |\
+ ACCOUNT_ADJUST_QUOTAS |\
+ ACCOUNT_ADJUST_SYSTEM_ACCESS)
+
+#define ACCOUNT_READ (STANDARD_RIGHTS_READ |\
+ ACCOUNT_VIEW)
+
+#define ACCOUNT_WRITE (STANDARD_RIGHTS_WRITE |\
+ ACCOUNT_ADJUST_PRIVILEGES |\
+ ACCOUNT_ADJUST_QUOTAS |\
+ ACCOUNT_ADJUST_SYSTEM_ACCESS)
+
+#define ACCOUNT_EXECUTE (STANDARD_RIGHTS_EXECUTE)
+
+// begin_ntsecapi
+
+//
+// LSA RPC Context Handle (Opaque form). Note that a Context Handle is
+// always a pointer type unlike regular handles.
+//
+
+typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
+
+// end_ntsecapi
+
+//
+// Trusted Domain object specific access types
+//
+
+#define TRUSTED_QUERY_DOMAIN_NAME 0x00000001L
+#define TRUSTED_QUERY_CONTROLLERS 0x00000002L
+#define TRUSTED_SET_CONTROLLERS 0x00000004L
+#define TRUSTED_QUERY_POSIX 0x00000008L
+#define TRUSTED_SET_POSIX 0x00000010L
+
+
+#define TRUSTED_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ TRUSTED_QUERY_DOMAIN_NAME |\
+ TRUSTED_QUERY_CONTROLLERS |\
+ TRUSTED_SET_CONTROLLERS |\
+ TRUSTED_QUERY_POSIX |\
+ TRUSTED_SET_POSIX)
+
+#define TRUSTED_READ (STANDARD_RIGHTS_READ |\
+ TRUSTED_QUERY_DOMAIN_NAME)
+
+#define TRUSTED_WRITE (STANDARD_RIGHTS_WRITE |\
+ TRUSTED_SET_CONTROLLERS |\
+ TRUSTED_SET_POSIX)
+
+#define TRUSTED_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ TRUSTED_QUERY_CONTROLLERS |\
+ TRUSTED_QUERY_POSIX)
+
+
+
+// begin_ntsecapi
+
+//
+// Trusted Domain Object specific data types
+//
+
+//
+// This data type defines the following information classes that may be
+// queried or set.
+//
+
+typedef enum _TRUSTED_INFORMATION_CLASS {
+
+ TrustedDomainNameInformation = 1,
+ TrustedControllersInformation,
+ TrustedPosixOffsetInformation,
+ TrustedPasswordInformation
+
+} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
+
+//
+// The following data type corresponds to the TrustedDomainNameInformation
+// information class.
+//
+
+typedef struct _TRUSTED_DOMAIN_NAME_INFO {
+
+ LSA_UNICODE_STRING Name;
+
+} TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO;
+
+// where members have the following meaning:
+//
+// Name - The name of the Trusted Domain.
+//
+
+//
+// The following data type corresponds to the TrustedControllersInformation
+// information class.
+//
+
+typedef struct _TRUSTED_CONTROLLERS_INFO {
+
+ ULONG Entries;
+ PLSA_UNICODE_STRING Names;
+
+} TRUSTED_CONTROLLERS_INFO, *PTRUSTED_CONTROLLERS_INFO;
+
+// where members have the following meaning:
+//
+// Entries - Indicate how mamy entries there are in the Names array.
+//
+// Names - Pointer to an array of LSA_UNICODE_STRING structures containing the
+// names of domain controllers of the domain. This information may not
+// be accurate and should be used only as a hint. The order of this
+// list is considered significant and will be maintained.
+//
+// By convention, the first name in this list is assumed to be the
+// Primary Domain Controller of the domain. If the Primary Domain
+// Controller is not known, the first name should be set to the NULL
+// string.
+//
+
+
+//
+// The following data type corresponds to the TrustedPosixOffsetInformation
+// information class.
+//
+
+typedef struct _TRUSTED_POSIX_OFFSET_INFO {
+
+ ULONG Offset;
+
+} TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO;
+
+// where members have the following meaning:
+//
+// Offset - Is an offset to use for the generation of Posix user and group
+// IDs from SIDs. The Posix ID corresponding to any particular SID is
+// generated by adding the RID of that SID to the Offset of the SID's
+// corresponding TrustedDomain object.
+//
+
+//
+// The following data type corresponds to the TrustedPasswordInformation
+// information class.
+//
+
+typedef struct _TRUSTED_PASSWORD_INFO {
+ LSA_UNICODE_STRING Password;
+ LSA_UNICODE_STRING OldPassword;
+} TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO;
+
+
+
+// end_ntsecapi
+
+//
+// Secret object specific access types
+//
+
+#define SECRET_SET_VALUE 0x00000001L
+#define SECRET_QUERY_VALUE 0x00000002L
+
+#define SECRET_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ SECRET_SET_VALUE |\
+ SECRET_QUERY_VALUE)
+
+#define SECRET_READ (STANDARD_RIGHTS_READ |\
+ SECRET_QUERY_VALUE)
+
+#define SECRET_WRITE (STANDARD_RIGHTS_WRITE |\
+ SECRET_SET_VALUE)
+
+#define SECRET_EXECUTE (STANDARD_RIGHTS_EXECUTE)
+
+//
+// Global secret object prefix
+//
+
+#define LSA_GLOBAL_SECRET_PREFIX L"G$"
+#define LSA_GLOBAL_SECRET_PREFIX_LENGTH 2
+
+//
+// Secret object specific data types.
+//
+
+//
+// Secret object limits
+//
+
+#define LSA_SECRET_MAXIMUM_COUNT 0x00001000L
+#define LSA_SECRET_MAXIMUM_LENGTH 0x00000200L
+
+// begin_ntsecapi
+
+//
+// LSA Enumeration Context
+//
+
+typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
+
+//
+// LSA Enumeration Information
+//
+
+typedef struct _LSA_ENUMERATION_INFORMATION {
+
+ PSID Sid;
+
+} LSA_ENUMERATION_INFORMATION, *PLSA_ENUMERATION_INFORMATION;
+
+
+////////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - Miscellaneous API function prototypes //
+// //
+////////////////////////////////////////////////////////////////////////////
+
+
+NTSTATUS
+NTAPI
+LsaFreeMemory(
+ IN PVOID Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaClose(
+ IN LSA_HANDLE ObjectHandle
+ );
+
+// end_ntsecapi
+
+NTSTATUS
+NTAPI
+LsaDelete(
+ IN LSA_HANDLE ObjectHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaQuerySecurityObject(
+ IN LSA_HANDLE ObjectHandle,
+ IN SECURITY_INFORMATION SecurityInformation,
+ OUT PSECURITY_DESCRIPTOR *SecurityDescriptor
+ );
+
+NTSTATUS
+NTAPI
+LsaSetSecurityObject(
+ IN LSA_HANDLE ObjectHandle,
+ IN SECURITY_INFORMATION SecurityInformation,
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+
+NTSTATUS
+NTAPI
+LsaChangePassword(
+ IN PLSA_UNICODE_STRING ServerName,
+ IN PLSA_UNICODE_STRING DomainName,
+ IN PLSA_UNICODE_STRING AccountName,
+ IN PLSA_UNICODE_STRING OldPassword,
+ IN PLSA_UNICODE_STRING NewPassword
+ );
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - Policy Object API function prototypes //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+// begin_ntsecapi
+NTSTATUS
+NTAPI
+LsaOpenPolicy(
+ IN PLSA_UNICODE_STRING SystemName OPTIONAL,
+ IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes,
+ IN ACCESS_MASK DesiredAccess,
+ IN OUT PLSA_HANDLE PolicyHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaQueryInformationPolicy(
+ IN LSA_HANDLE PolicyHandle,
+ IN POLICY_INFORMATION_CLASS InformationClass,
+ OUT PVOID *Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaSetInformationPolicy(
+ IN LSA_HANDLE PolicyHandle,
+ IN POLICY_INFORMATION_CLASS InformationClass,
+ IN PVOID Buffer
+ );
+
+// end_ntsecapi
+
+NTSTATUS
+NTAPI
+LsaClearAuditLog(
+ IN LSA_HANDLE PolicyHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaCreateAccount(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PLSA_HANDLE AccountHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaEnumerateAccounts(
+ IN LSA_HANDLE PolicyHandle,
+ IN OUT PLSA_ENUMERATION_HANDLE EnumerationContext,
+ OUT PVOID *EnumerationBuffer,
+ IN ULONG PreferedMaximumLength,
+ OUT PULONG CountReturned
+ );
+
+NTSTATUS
+NTAPI
+LsaCreateTrustedDomain(
+ IN LSA_HANDLE PolicyHandle,
+ IN PLSA_TRUST_INFORMATION TrustedDomainInformation,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PLSA_HANDLE TrustedDomainHandle
+ );
+
+// begin_ntsecapi
+
+NTSTATUS
+NTAPI
+LsaEnumerateTrustedDomains(
+ IN LSA_HANDLE PolicyHandle,
+ IN OUT PLSA_ENUMERATION_HANDLE EnumerationContext,
+ OUT PVOID *Buffer,
+ IN ULONG PreferedMaximumLength,
+ OUT PULONG CountReturned
+ );
+
+// end_ntsecapi
+
+NTSTATUS
+NTAPI
+LsaEnumeratePrivileges(
+ IN LSA_HANDLE PolicyHandle,
+ IN OUT PLSA_ENUMERATION_HANDLE EnumerationContext,
+ OUT PVOID *Buffer,
+ IN ULONG PreferedMaximumLength,
+ OUT PULONG CountReturned
+ );
+
+// begin_ntsecapi
+
+NTSTATUS
+NTAPI
+LsaLookupNames(
+ IN LSA_HANDLE PolicyHandle,
+ IN ULONG Count,
+ IN PLSA_UNICODE_STRING Names,
+ OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ OUT PLSA_TRANSLATED_SID *Sids
+ );
+
+NTSTATUS
+NTAPI
+LsaLookupSids(
+ IN LSA_HANDLE PolicyHandle,
+ IN ULONG Count,
+ IN PSID *Sids,
+ OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ OUT PLSA_TRANSLATED_NAME *Names
+ );
+
+// end_ntsecapi
+
+NTSTATUS
+NTAPI
+LsaCreateSecret(
+ IN LSA_HANDLE PolicyHandle,
+ IN PLSA_UNICODE_STRING SecretName,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PLSA_HANDLE SecretHandle
+ );
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - Account Object API function prototypes //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+NTSTATUS
+NTAPI
+LsaOpenAccount(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PLSA_HANDLE AccountHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaEnumeratePrivilegesOfAccount(
+ IN LSA_HANDLE AccountHandle,
+ OUT PPRIVILEGE_SET *Privileges
+ );
+
+NTSTATUS
+NTAPI
+LsaAddPrivilegesToAccount(
+ IN LSA_HANDLE AccountHandle,
+ IN PPRIVILEGE_SET Privileges
+ );
+
+NTSTATUS
+NTAPI
+LsaRemovePrivilegesFromAccount(
+ IN LSA_HANDLE AccountHandle,
+ IN BOOLEAN AllPrivileges,
+ IN PPRIVILEGE_SET Privileges
+ );
+
+NTSTATUS
+NTAPI
+LsaGetQuotasForAccount(
+ IN LSA_HANDLE AccountHandle,
+ OUT PQUOTA_LIMITS QuotaLimits
+ );
+
+NTSTATUS
+NTAPI
+LsaSetQuotasForAccount(
+ IN LSA_HANDLE AccountHandle,
+ IN PQUOTA_LIMITS QuotaLimits
+ );
+
+NTSTATUS
+NTAPI
+LsaGetSystemAccessAccount(
+ IN LSA_HANDLE AccountHandle,
+ OUT PULONG SystemAccess
+ );
+
+NTSTATUS
+NTAPI
+LsaSetSystemAccessAccount(
+ IN LSA_HANDLE AccountHandle,
+ IN ULONG SystemAccess
+ );
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - Trusted Domain Object API function prototypes //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+NTSTATUS
+NTAPI
+LsaOpenTrustedDomain(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID TrustedDomainSid,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PLSA_HANDLE TrustedDomainHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaQueryInfoTrustedDomain(
+ IN LSA_HANDLE TrustedDomainHandle,
+ IN TRUSTED_INFORMATION_CLASS InformationClass,
+ OUT PVOID *Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaSetInformationTrustedDomain(
+ IN LSA_HANDLE TrustedDomainHandle,
+ IN TRUSTED_INFORMATION_CLASS InformationClass,
+ IN PVOID Buffer
+ );
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - Secret Object API function prototypes //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+NTSTATUS
+NTAPI
+LsaOpenSecret(
+ IN LSA_HANDLE PolicyHandle,
+ IN PLSA_UNICODE_STRING SecretName,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PLSA_HANDLE SecretHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaSetSecret(
+ IN LSA_HANDLE SecretHandle,
+ IN OPTIONAL PLSA_UNICODE_STRING CurrentValue,
+ IN OPTIONAL PLSA_UNICODE_STRING OldValue
+ );
+
+NTSTATUS
+NTAPI
+LsaQuerySecret(
+ IN LSA_HANDLE SecretHandle,
+ OUT OPTIONAL PLSA_UNICODE_STRING *CurrentValue,
+ OUT OPTIONAL PLARGE_INTEGER CurrentValueSetTime,
+ OUT OPTIONAL PLSA_UNICODE_STRING *OldValue,
+ OUT OPTIONAL PLARGE_INTEGER OldValueSetTime
+ );
+
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - Privilege Object API Prototypes //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+NTSTATUS
+NTAPI
+LsaLookupPrivilegeValue(
+ IN LSA_HANDLE PolicyHandle,
+ IN PLSA_UNICODE_STRING Name,
+ OUT PLUID Value
+ );
+
+NTSTATUS
+NTAPI
+LsaLookupPrivilegeName(
+ IN LSA_HANDLE PolicyHandle,
+ IN PLUID Value,
+ OUT PLSA_UNICODE_STRING *Name
+ );
+
+NTSTATUS
+NTAPI
+LsaLookupPrivilegeDisplayName(
+ IN LSA_HANDLE PolicyHandle,
+ IN PLSA_UNICODE_STRING Name,
+ OUT PLSA_UNICODE_STRING *DisplayName,
+ OUT PSHORT LanguageReturned
+ );
+
+
+
+
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - New APIs for NT 4.0 (SUR release) //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+NTSTATUS
+LsaGetUserName(
+ OUT PUNICODE_STRING * UserName,
+ OUT OPTIONAL PUNICODE_STRING * DomainName
+ );
+
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - New APIs for NT 3.51 (PPC release) //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+// begin_ntsecapi
+
+
+#define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight")
+#define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight")
+#define SE_BATCH_LOGON_NAME TEXT("SeBatchLogonRight")
+#define SE_SERVICE_LOGON_NAME TEXT("SeServiceLogonRight")
+
+//
+// This new API returns all the accounts with a certain privilege
+//
+
+NTSTATUS
+NTAPI
+LsaEnumerateAccountsWithUserRight(
+ IN LSA_HANDLE PolicyHandle,
+ IN OPTIONAL PLSA_UNICODE_STRING UserRights,
+ OUT PVOID *EnumerationBuffer,
+ OUT PULONG CountReturned
+ );
+
+//
+// These new APIs differ by taking a SID instead of requiring the caller
+// to open the account first and passing in an account handle
+//
+
+NTSTATUS
+NTAPI
+LsaEnumerateAccountRights(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ OUT PLSA_UNICODE_STRING *UserRights,
+ OUT PULONG CountOfRights
+ );
+
+NTSTATUS
+NTAPI
+LsaAddAccountRights(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ IN PLSA_UNICODE_STRING UserRights,
+ IN ULONG CountOfRights
+ );
+
+NTSTATUS
+NTAPI
+LsaRemoveAccountRights(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ IN BOOLEAN AllRights,
+ IN PLSA_UNICODE_STRING UserRights,
+ IN ULONG CountOfRights
+ );
+
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - Trusted Domain Object API function prototypes //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+NTSTATUS
+NTAPI
+LsaQueryTrustedDomainInfo(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID TrustedDomainSid,
+ IN TRUSTED_INFORMATION_CLASS InformationClass,
+ OUT PVOID *Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaSetTrustedDomainInformation(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID TrustedDomainSid,
+ IN TRUSTED_INFORMATION_CLASS InformationClass,
+ IN PVOID Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaDeleteTrustedDomain(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID TrustedDomainSid
+ );
+
+//
+// This API sets the workstation password (equivalent of setting/getting
+// the SSI_SECRET_NAME secret)
+//
+
+NTSTATUS
+NTAPI
+LsaStorePrivateData(
+ IN LSA_HANDLE PolicyHandle,
+ IN PLSA_UNICODE_STRING KeyName,
+ IN PLSA_UNICODE_STRING PrivateData
+ );
+
+NTSTATUS
+NTAPI
+LsaRetrievePrivateData(
+ IN LSA_HANDLE PolicyHandle,
+ IN PLSA_UNICODE_STRING KeyName,
+ OUT PLSA_UNICODE_STRING * PrivateData
+ );
+
+
+ULONG
+NTAPI
+LsaNtStatusToWinError(
+ NTSTATUS Status
+ );
+
+//
+// Define a symbol so we can tell if ntifs.h has been included.
+//
+
+// begin_ntifs
+#ifndef _NTLSA_IFS_
+#define _NTLSA_IFS_
+#endif
+// end_ntifs
+
+// end_ntsecapi
+
+#endif // _NTLSA_
diff --git a/public/sdk/inc/ntlsapi.h b/public/sdk/inc/ntlsapi.h
new file mode 100644
index 000000000..2d848120b
--- /dev/null
+++ b/public/sdk/inc/ntlsapi.h
@@ -0,0 +1,194 @@
+/*
+ * LSAPI.H
+ *
+ * NOTE: If you are using this header file on the Windows for DOS platform,
+ * then you are required to include "windows.h" prior to including
+ * this header file.
+ */
+
+#ifndef LSAPI_H
+#define LSAPI_H
+
+#if defined(WINVER) // Windows for NT or DOS
+#if defined(WINAPIV)
+#define LS_API_ENTRY WINAPIV
+#else
+#define LS_API_ENTRY WINAPI
+#endif
+#else
+#define LS_API_ENTRY
+#endif
+
+typedef unsigned long LS_STATUS_CODE;
+typedef unsigned long LS_HANDLE;
+
+// **************************************************
+// Standard LSAPI C status codes
+//***************************************************
+#define LS_SUCCESS ((LS_STATUS_CODE) 0x0)
+#define LS_BAD_HANDLE ((LS_STATUS_CODE) 0xC0001001)
+#define LS_INSUFFICIENT_UNITS ((LS_STATUS_CODE) 0xC0001002)
+#define LS_SYSTEM_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001003)
+#define LS_LICENSE_TERMINATED ((LS_STATUS_CODE) 0xC0001004)
+#define LS_AUTHORIZATION_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001005)
+#define LS_LICENSE_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001006)
+#define LS_RESOURCES_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001007)
+#define LS_NETWORK_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001008)
+#define LS_TEXT_UNAVAILABLE ((LS_STATUS_CODE) 0x80001009)
+#define LS_UNKNOWN_STATUS ((LS_STATUS_CODE) 0xC000100A)
+#define LS_BAD_INDEX ((LS_STATUS_CODE) 0xC000100B)
+#define LS_LICENSE_EXPIRED ((LS_STATUS_CODE) 0x8000100C)
+#define LS_BUFFER_TOO_SMALL ((LS_STATUS_CODE) 0xC000100D)
+#define LS_BAD_ARG ((LS_STATUS_CODE) 0xC000100E)
+
+//***************************************************
+//* Nt LS API data structure and constant
+//***************************************************
+
+#define NT_LS_USER_NAME ((ULONG) 0) // username only
+#define NT_LS_USER_SID ((ULONG) 1) // SID only
+
+typedef struct {
+ ULONG DataType; // Type of the following data, ie. user name, sid...
+ VOID *Data; // Actual data. username, sid, etc...
+ // if call the unicode API character data
+ // must be in unicode as well
+ BOOL IsAdmin;
+} NT_LS_DATA;
+
+
+//
+// Prototypes for License Request routines
+//
+
+typedef LS_STATUS_CODE
+ (LS_API_ENTRY * PNT_LICENSE_REQUEST_W)(
+ LPWSTR ProductName,
+ LPWSTR Version,
+ LS_HANDLE *LicenseHandle,
+ NT_LS_DATA *NtData);
+
+typedef LS_STATUS_CODE
+ (LS_API_ENTRY * PNT_LS_FREE_HANDLE)(
+ LS_HANDLE LicenseHandle );
+
+
+#ifdef UNICODE
+#define NtLicenseRequest NtLicenseRequestW
+#else
+#define NtLicenseRequest NtLicenseRequestA
+#endif // !UNICODE
+
+LS_STATUS_CODE LS_API_ENTRY NtLicenseRequestA(
+ LPSTR ProductName,
+ LPSTR Version,
+ LS_HANDLE FAR *LicenseHandle,
+ NT_LS_DATA *NtData);
+
+LS_STATUS_CODE LS_API_ENTRY NtLicenseRequestW(
+ LPWSTR ProductName,
+ LPWSTR Version,
+ LS_HANDLE FAR *LicenseHandle,
+ NT_LS_DATA *NtData);
+
+
+LS_STATUS_CODE LS_API_ENTRY NtLSFreeHandle(
+ LS_HANDLE LicenseHandle );
+
+// *************************************************************************
+// OLD API After this point - Don't use
+// *************************************************************************
+
+
+/***************************************************/
+/* standard LS API c datatype definitions */
+/***************************************************/
+
+typedef char LS_STR;
+typedef unsigned long LS_ULONG;
+typedef long LS_LONG;
+typedef void LS_VOID;
+
+typedef struct {
+ LS_STR MessageDigest[16]; /* a 128-bit message digest */
+} LS_MSG_DIGEST;
+
+typedef struct {
+ LS_ULONG SecretIndex; /* index of secret, X */
+ LS_ULONG Random; /* a random 32-bit value, R */
+ LS_MSG_DIGEST MsgDigest; /* the message digest h(in,R,S,Sx) */
+} LS_CHALLDATA;
+
+typedef struct {
+ LS_ULONG Protocol; /* Specifies the protocol */
+ LS_ULONG Size; /* size of ChallengeData structure */
+ LS_CHALLDATA ChallengeData; /* challenge & response */
+} LS_CHALLENGE;
+
+
+/***************************************************/
+/* Standard LSAPI C constant definitions */
+/***************************************************/
+
+#define LS_DEFAULT_UNITS ((LS_ULONG) 0xFFFFFFFF)
+#define LS_ANY ((LS_STR FAR *) "")
+#define LS_USE_LAST ((LS_ULONG) 0x0800FFFF)
+#define LS_INFO_NONE ((LS_ULONG) 0)
+#define LS_INFO_SYSTEM ((LS_ULONG) 1)
+#define LS_INFO_DATA ((LS_ULONG) 2)
+#define LS_UPDATE_PERIOD ((LS_ULONG) 3)
+#define LS_LICENSE_CONTEXT ((LS_ULONG) 4)
+#define LS_BASIC_PROTOCOL ((LS_ULONG) 0x00000001)
+#define LS_SQRT_PROTOCOL ((LS_ULONG) 0x00000002)
+#define LS_OUT_OF_BAND_PROTOCOL ((LS_ULONG) 0xFFFFFFFF)
+#define LS_NULL ((LS_VOID FAR *) NULL)
+
+
+/***************************************************/
+/* Standard LSAPI C function definitions */
+/***************************************************/
+
+
+LS_STATUS_CODE LS_API_ENTRY NtLSRequest(
+ LS_STR FAR *LicenseSystem,
+ LS_STR FAR *PublisherName,
+ LS_STR FAR *ProductName,
+ LS_STR FAR *Version,
+ LS_ULONG TotUnitsReserved,
+ LS_STR FAR *LogComment,
+ LS_CHALLENGE FAR *Challenge,
+ LS_ULONG FAR *TotUnitsGranted,
+ LS_HANDLE FAR *LicenseHandle,
+ NT_LS_DATA FAR *NtData);
+
+LS_STATUS_CODE LS_API_ENTRY NtLSRelease(
+ LS_HANDLE LicenseHandle,
+ LS_ULONG TotUnitsConsumed,
+ LS_STR FAR *LogComment);
+
+LS_STATUS_CODE LS_API_ENTRY NtLSUpdate(
+ LS_HANDLE LicenseHandle,
+ LS_ULONG TotUnitsConsumed,
+ LS_ULONG TotUnitsReserved,
+ LS_STR FAR *LogComment,
+ LS_CHALLENGE FAR *Challenge,
+ LS_ULONG FAR *TotUnitsGranted);
+
+LS_STATUS_CODE LS_API_ENTRY NtLSGetMessage(
+ LS_HANDLE LicenseHandle,
+ LS_STATUS_CODE Value,
+ LS_STR FAR *Buffer,
+ LS_ULONG BufferSize);
+
+LS_STATUS_CODE LS_API_ENTRY NtLSQuery(
+ LS_HANDLE LicenseHandle,
+ LS_ULONG Information,
+ LS_VOID FAR *InfoBuffer,
+ LS_ULONG BufferSize,
+ LS_ULONG FAR *ActualBufferSize);
+
+LS_STATUS_CODE LS_API_ENTRY NtLSEnumProviders(
+ LS_ULONG Index,
+ LS_STR FAR *Buffer);
+
+#endif /* LSAPI_H */
diff --git a/public/sdk/inc/ntmips.h b/public/sdk/inc/ntmips.h
new file mode 100644
index 000000000..48bbab742
--- /dev/null
+++ b/public/sdk/inc/ntmips.h
@@ -0,0 +1,1177 @@
+/*++ BUILD Version: 0015 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ ntmips.h
+
+Abstract:
+
+ User-mode visible Mips specific structures and constants
+
+Author:
+
+ David N. Cutler (davec) 31-Mar-1990
+
+Revision History:
+
+--*/
+
+#ifndef _NTMIPS_
+#define _NTMIPS_
+#include "mipsinst.h"
+
+// begin_ntddk begin_nthal
+
+#if defined(_MIPS_)
+
+//
+// Define system time structure.
+//
+
+typedef union _KSYSTEM_TIME {
+ struct {
+ ULONG LowPart;
+ LONG High1Time;
+ LONG High2Time;
+ };
+
+ ULONGLONG Alignment;
+} KSYSTEM_TIME, *PKSYSTEM_TIME;
+
+//
+// Define unsupported "keywords".
+//
+
+#define _cdecl
+
+// begin_windbgkd
+
+#if defined(_MIPS_)
+
+// end_ntddk end_nthal
+
+//
+// Define MIPS specific kernel debugger information.
+//
+// The following structure contains machine specific data passed to
+// the host system kernel debugger in a wait state change message.
+//
+
+#define DBGKD_MAXSTREAM 16
+
+typedef struct _DBGKD_CONTROL_REPORT {
+ ULONG InstructionCount;
+ UCHAR InstructionStream[DBGKD_MAXSTREAM];
+} DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+
+//
+// The following structure contains information that the host system
+// kernel debugger wants to set on every continue operation and avoids
+// the need to send extra packets of information.
+//
+
+typedef ULONG DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
+
+#endif // ntddk nthal
+
+// end_windbgkd
+
+
+//
+// Define breakpoint codes.
+//
+
+#define USER_BREAKPOINT 0 // user breakpoint
+#define KERNEL_BREAKPOINT 1 // kernel breakpoint
+#define BREAKIN_BREAKPOINT 2 // break into kernel debugger
+#define BRANCH_TAKEN_BREAKPOINT 3 // branch taken breakpoint
+#define BRANCH_NOT_TAKEN_BREAKPOINT 4 // branch not taken breakpoint
+#define SINGLE_STEP_BREAKPOINT 5 // single step breakpoint
+#define DIVIDE_OVERFLOW_BREAKPOINT 6 // divide overflow breakpoint
+#define DIVIDE_BY_ZERO_BREAKPOINT 7 // divide by zero breakpoint
+#define RANGE_CHECK_BREAKPOINT 8 // range check breakpoint
+#define STACK_OVERFLOW_BREAKPOINT 9 // MIPS code
+#define MULTIPLY_OVERFLOW_BREAKPOINT 10 // multiply overflow breakpoint
+
+#define DEBUG_PRINT_BREAKPOINT 20 // debug print breakpoint
+#define DEBUG_PROMPT_BREAKPOINT 21 // debug prompt breakpoint
+#define DEBUG_STOP_BREAKPOINT 22 // debug stop breakpoint
+#define DEBUG_LOAD_SYMBOLS_BREAKPOINT 23 // load symbols breakpoint
+#define DEBUG_UNLOAD_SYMBOLS_BREAKPOINT 24 // unload symbols breakpoint
+
+// begin_ntddk begin_nthal
+//
+// Define size of kernel mode stack.
+//
+
+#define KERNEL_STACK_SIZE 12288
+
+//
+// Define size of large kernel mode stack for callbacks.
+//
+
+#define KERNEL_LARGE_STACK_SIZE 61440
+
+//
+// Define number of pages to initialize in a large kernel stack.
+//
+
+#define KERNEL_LARGE_STACK_COMMIT 12288
+
+//
+// Define length of exception code dispatch vector.
+//
+
+#define XCODE_VECTOR_LENGTH 32
+
+//
+// Define length of interrupt vector table.
+//
+
+#define MAXIMUM_VECTOR 256
+
+//
+// Define bus error routine type.
+//
+
+struct _EXCEPTION_RECORD;
+struct _KEXCEPTION_FRAME;
+struct _KTRAP_FRAME;
+
+typedef
+BOOLEAN
+(*PKBUS_ERROR_ROUTINE) (
+ IN struct _EXCEPTION_RECORD *ExceptionRecord,
+ IN struct _KEXCEPTION_FRAME *ExceptionFrame,
+ IN struct _KTRAP_FRAME *TrapFrame,
+ IN PVOID VirtualAddress,
+ IN PHYSICAL_ADDRESS PhysicalAddress
+ );
+
+//
+// Define Processor Control Region Structure.
+//
+
+#define PCR_MINOR_VERSION 1
+#define PCR_MAJOR_VERSION 1
+
+typedef struct _KPCR {
+
+//
+// Major and minor version numbers of the PCR.
+//
+
+ USHORT MinorVersion;
+ USHORT MajorVersion;
+
+//
+// Start of the architecturally defined section of the PCR. This section
+// may be directly addressed by vendor/platform specific HAL code and will
+// not change from version to version of NT.
+//
+// Interrupt and error exception vectors.
+//
+
+ PKINTERRUPT_ROUTINE InterruptRoutine[MAXIMUM_VECTOR];
+ PVOID XcodeDispatch[XCODE_VECTOR_LENGTH];
+
+//
+// First and second level cache parameters.
+//
+
+ ULONG FirstLevelDcacheSize;
+ ULONG FirstLevelDcacheFillSize;
+ ULONG FirstLevelIcacheSize;
+ ULONG FirstLevelIcacheFillSize;
+ ULONG SecondLevelDcacheSize;
+ ULONG SecondLevelDcacheFillSize;
+ ULONG SecondLevelIcacheSize;
+ ULONG SecondLevelIcacheFillSize;
+
+//
+// Pointer to processor control block.
+//
+
+ struct _KPRCB *Prcb;
+
+//
+// Pointer to the thread environment block and the address of the TLS array.
+//
+
+ PVOID Teb;
+ PVOID TlsArray;
+
+//
+// Data fill size used for cache flushing and alignment. This field is set
+// to the larger of the first and second level data cache fill sizes.
+//
+
+ ULONG DcacheFillSize;
+
+//
+// Instruction cache alignment and fill size used for cache flushing and
+// alignment. These fields are set to the larger of the first and second
+// level data cache fill sizes.
+//
+
+ ULONG IcacheAlignment;
+ ULONG IcacheFillSize;
+
+//
+// Processor identification from PrId register.
+//
+
+ ULONG ProcessorId;
+
+//
+// Profiling data.
+//
+
+ ULONG ProfileInterval;
+ ULONG ProfileCount;
+
+//
+// Stall execution count and scale factor.
+//
+
+ ULONG StallExecutionCount;
+ ULONG StallScaleFactor;
+
+//
+// Processor number.
+//
+
+ CCHAR Number;
+
+//
+// Spare cells.
+//
+
+ CCHAR Spareb1;
+ CCHAR Spareb2;
+ CCHAR Spareb3;
+
+//
+// Pointers to bus error and parity error routines.
+//
+
+ PKBUS_ERROR_ROUTINE DataBusError;
+ PKBUS_ERROR_ROUTINE InstructionBusError;
+
+//
+// Cache policy, right justified, as read from the processor configuration
+// register at startup.
+//
+
+ ULONG CachePolicy;
+
+//
+// IRQL mapping tables.
+//
+
+ UCHAR IrqlMask[32];
+ UCHAR IrqlTable[9];
+
+//
+// Current IRQL.
+//
+
+ UCHAR CurrentIrql;
+
+//
+// Processor affinity mask.
+//
+
+ KAFFINITY SetMember;
+
+//
+// Reserved interrupt vector mask.
+//
+
+ ULONG ReservedVectors;
+
+//
+// Current state parameters.
+//
+
+ struct _KTHREAD *CurrentThread;
+
+//
+// Cache policy, PTE field aligned, as read from the processor configuration
+// register at startup.
+//
+
+ ULONG AlignedCachePolicy;
+
+//
+// Complement of processor affinity mask.
+//
+
+ KAFFINITY NotMember;
+
+//
+// Space reserved for the system.
+//
+
+ ULONG SystemReserved[15];
+
+//
+// Data cache alignment used for cache flushing and alignment. This field is
+// set to the larger of the first and second level data cache fill sizes.
+//
+
+ ULONG DcacheAlignment;
+
+//
+// Space reserved for the HAL
+//
+
+ ULONG HalReserved[16];
+
+//
+// End of the architecturally defined section of the PCR. This section
+// may be directly addressed by vendor/platform specific HAL code and will
+// not change from version to version of NT.
+//
+// end_ntddk end_nthal
+
+//
+// Start of the operating system release dependent section of the PCR.
+// This section may change from release to release and should not be
+// addressed by vendor/platform specific HAL code.
+//
+// Function active flags.
+//
+
+ ULONG FirstLevelActive;
+ ULONG DpcRoutineActive;
+
+//
+// Current process id.
+//
+
+ ULONG CurrentPid;
+
+//
+// On interrupt stack indicator, saved initial stack, and saved stack limit.
+//
+
+ ULONG OnInterruptStack;
+ PVOID SavedInitialStack;
+ PVOID SavedStackLimit;
+
+//
+// System service dispatch start and end address used by get/set context.
+//
+
+ ULONG SystemServiceDispatchStart;
+ ULONG SystemServiceDispatchEnd;
+
+//
+// Interrupt stack.
+//
+
+ PVOID InterruptStack;
+
+//
+// Panic stack.
+//
+
+ PVOID PanicStack;
+
+//
+// Exception handler values.
+//
+
+ ULONG BadVaddr;
+ PVOID InitialStack;
+ PVOID StackLimit;
+ ULONG SavedEpc;
+ ULONGLONG SavedT7;
+ ULONGLONG SavedT8;
+ ULONGLONG SavedT9;
+ PVOID SystemGp;
+
+//
+// Quantum end flag.
+//
+
+ ULONG QuantumEnd;
+
+} KPCR, *PKPCR; // ntddk nthal
+
+//
+// Define Address of Processor Control Registers.
+//
+
+#define USPCR 0x7ffff000 // user address of first PCR
+#define USPCR2 0x7fffe000 // user address of second PCR
+
+//
+// Define Pointer to Processor Control Registers.
+//
+
+#define USER_PCR ((KPCR * const)USPCR)
+
+#if defined(NTOS_KERNEL_RUNTIME)
+
+#define NtCurrentTeb() ((PTEB)(PCR->Teb))
+
+#define USER_SHARED_DATA ((KUSER_SHARED_DATA * const)0xffffe000)
+
+#else
+
+#define NtCurrentTeb() ((PTEB)(USER_PCR->Teb))
+
+#define USER_SHARED_DATA ((KUSER_SHARED_DATA * const)0x7fffe000)
+
+#endif
+
+//
+// Define get system time macro.
+//
+// N.B. This macro can be changed when the compiler generates real double
+// integer instructions.
+//
+
+#define QUERY_SYSTEM_TIME(CurrentTime) \
+ *((DOUBLE *)(CurrentTime)) = *((DOUBLE *)(&USER_SHARED_DATA->SystemTime))
+
+// begin_winnt
+
+#if defined(_MIPS_)
+
+//
+// Define functions to get the address of the current fiber and the
+// current fiber data.
+//
+
+#define GetCurrentFiber() ((*(PNT_TIB *)0x7ffff4a8)->FiberData)
+#define GetFiberData() (*(PVOID *)(GetCurrentFiber()))
+
+// begin_ntddk begin_nthal
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+
+#if !defined(RC_INVOKED)
+
+#define CONTEXT_R4000 0x00010000 // r4000 context
+
+#define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001)
+#define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002)
+#define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004)
+#define CONTEXT_EXTENDED_FLOAT (CONTEXT_FLOATING_POINT | 0x00000008)
+#define CONTEXT_EXTENDED_INTEGER (CONTEXT_INTEGER | 0x00000010)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | \
+ CONTEXT_INTEGER | CONTEXT_EXTENDED_INTEGER)
+
+#endif
+
+//
+// Context Frame
+//
+// N.B. This frame must be exactly a multiple of 16 bytes in length.
+//
+// This frame has a several purposes: 1) it is used as an argument to
+// NtContinue, 2) it is used to constuct a call frame for APC delivery,
+// 3) it is used to construct a call frame for exception dispatching
+// in user mode, and 4) it is used in the user level thread creation
+// routines.
+//
+// The layout of the record conforms to a standard call frame.
+//
+
+typedef struct _CONTEXT {
+
+ //
+ // This section is always present and is used as an argument build
+ // area.
+ //
+ // N.B. Context records are 0 mod 8 aligned starting with NT 4.0.
+ //
+
+ union {
+ ULONG Argument[4];
+ ULONGLONG Alignment;
+ };
+
+ //
+ // The following union defines the 32-bit and 64-bit register context.
+ //
+
+ union {
+
+ //
+ // 32-bit context.
+ //
+
+ struct {
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+ // N.B. This section contains the 16 double floating registers f0,
+ // f2, ..., f30.
+ //
+
+ ULONG FltF0;
+ ULONG FltF1;
+ ULONG FltF2;
+ ULONG FltF3;
+ ULONG FltF4;
+ ULONG FltF5;
+ ULONG FltF6;
+ ULONG FltF7;
+ ULONG FltF8;
+ ULONG FltF9;
+ ULONG FltF10;
+ ULONG FltF11;
+ ULONG FltF12;
+ ULONG FltF13;
+ ULONG FltF14;
+ ULONG FltF15;
+ ULONG FltF16;
+ ULONG FltF17;
+ ULONG FltF18;
+ ULONG FltF19;
+ ULONG FltF20;
+ ULONG FltF21;
+ ULONG FltF22;
+ ULONG FltF23;
+ ULONG FltF24;
+ ULONG FltF25;
+ ULONG FltF26;
+ ULONG FltF27;
+ ULONG FltF28;
+ ULONG FltF29;
+ ULONG FltF30;
+ ULONG FltF31;
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_INTEGER.
+ //
+ // N.B. The registers gp, sp, and ra are defined in this section,
+ // but are considered part of the control context rather than
+ // part of the integer context.
+ //
+ // N.B. Register zero is not stored in the frame.
+ //
+
+ ULONG IntZero;
+ ULONG IntAt;
+ ULONG IntV0;
+ ULONG IntV1;
+ ULONG IntA0;
+ ULONG IntA1;
+ ULONG IntA2;
+ ULONG IntA3;
+ ULONG IntT0;
+ ULONG IntT1;
+ ULONG IntT2;
+ ULONG IntT3;
+ ULONG IntT4;
+ ULONG IntT5;
+ ULONG IntT6;
+ ULONG IntT7;
+ ULONG IntS0;
+ ULONG IntS1;
+ ULONG IntS2;
+ ULONG IntS3;
+ ULONG IntS4;
+ ULONG IntS5;
+ ULONG IntS6;
+ ULONG IntS7;
+ ULONG IntT8;
+ ULONG IntT9;
+ ULONG IntK0;
+ ULONG IntK1;
+ ULONG IntGp;
+ ULONG IntSp;
+ ULONG IntS8;
+ ULONG IntRa;
+ ULONG IntLo;
+ ULONG IntHi;
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+
+ ULONG Fsr;
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_CONTROL.
+ //
+ // N.B. The registers gp, sp, and ra are defined in the integer section,
+ // but are considered part of the control context rather than part of
+ // the integer context.
+ //
+
+ ULONG Fir;
+ ULONG Psr;
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a thread's context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+
+ ULONG ContextFlags;
+ };
+
+ //
+ // 64-bit context.
+ //
+
+ struct {
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_EXTENDED_FLOAT.
+ //
+ // N.B. This section contains the 32 double floating registers f0,
+ // f1, ..., f31.
+ //
+
+ ULONGLONG XFltF0;
+ ULONGLONG XFltF1;
+ ULONGLONG XFltF2;
+ ULONGLONG XFltF3;
+ ULONGLONG XFltF4;
+ ULONGLONG XFltF5;
+ ULONGLONG XFltF6;
+ ULONGLONG XFltF7;
+ ULONGLONG XFltF8;
+ ULONGLONG XFltF9;
+ ULONGLONG XFltF10;
+ ULONGLONG XFltF11;
+ ULONGLONG XFltF12;
+ ULONGLONG XFltF13;
+ ULONGLONG XFltF14;
+ ULONGLONG XFltF15;
+ ULONGLONG XFltF16;
+ ULONGLONG XFltF17;
+ ULONGLONG XFltF18;
+ ULONGLONG XFltF19;
+ ULONGLONG XFltF20;
+ ULONGLONG XFltF21;
+ ULONGLONG XFltF22;
+ ULONGLONG XFltF23;
+ ULONGLONG XFltF24;
+ ULONGLONG XFltF25;
+ ULONGLONG XFltF26;
+ ULONGLONG XFltF27;
+ ULONGLONG XFltF28;
+ ULONGLONG XFltF29;
+ ULONGLONG XFltF30;
+ ULONGLONG XFltF31;
+
+ //
+ // The following sections must exactly overlay the 32-bit context.
+ //
+
+ ULONG Fill1;
+ ULONG Fill2;
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+
+ ULONG XFsr;
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_CONTROL.
+ //
+ // N.B. The registers gp, sp, and ra are defined in the integer
+ // section, but are considered part of the control context
+ // rather than part of the integer context.
+ //
+
+ ULONG XFir;
+ ULONG XPsr;
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a thread's context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+
+ ULONG XContextFlags;
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_EXTENDED_INTEGER.
+ //
+ // N.B. The registers gp, sp, and ra are defined in this section,
+ // but are considered part of the control context rather than
+ // part of the integer context.
+ //
+ // N.B. Register zero is not stored in the frame.
+ //
+
+ ULONGLONG XIntZero;
+ ULONGLONG XIntAt;
+ ULONGLONG XIntV0;
+ ULONGLONG XIntV1;
+ ULONGLONG XIntA0;
+ ULONGLONG XIntA1;
+ ULONGLONG XIntA2;
+ ULONGLONG XIntA3;
+ ULONGLONG XIntT0;
+ ULONGLONG XIntT1;
+ ULONGLONG XIntT2;
+ ULONGLONG XIntT3;
+ ULONGLONG XIntT4;
+ ULONGLONG XIntT5;
+ ULONGLONG XIntT6;
+ ULONGLONG XIntT7;
+ ULONGLONG XIntS0;
+ ULONGLONG XIntS1;
+ ULONGLONG XIntS2;
+ ULONGLONG XIntS3;
+ ULONGLONG XIntS4;
+ ULONGLONG XIntS5;
+ ULONGLONG XIntS6;
+ ULONGLONG XIntS7;
+ ULONGLONG XIntT8;
+ ULONGLONG XIntT9;
+ ULONGLONG XIntK0;
+ ULONGLONG XIntK1;
+ ULONGLONG XIntGp;
+ ULONGLONG XIntSp;
+ ULONGLONG XIntS8;
+ ULONGLONG XIntRa;
+ ULONGLONG XIntLo;
+ ULONGLONG XIntHi;
+ };
+ };
+} CONTEXT, *PCONTEXT;
+
+// end_ntddk end_nthal
+
+#define CONTEXT32_LENGTH 0x130 // The original 32-bit Context length (pre NT 4.0)
+
+#endif // MIPS
+
+// end_winnt
+
+#define CONTEXT_TO_PROGRAM_COUNTER(Context) ((Context)->Fir)
+
+#define CONTEXT_LENGTH (sizeof(CONTEXT))
+#define CONTEXT_ALIGN (sizeof(double))
+#define CONTEXT_ROUND (CONTEXT_ALIGN - 1)
+
+//
+// Nonvolatile context pointer record.
+//
+
+typedef struct _KNONVOLATILE_CONTEXT_POINTERS {
+ PULONG FloatingContext[20];
+ PULONG FltF20;
+ PULONG FltF21;
+ PULONG FltF22;
+ PULONG FltF23;
+ PULONG FltF24;
+ PULONG FltF25;
+ PULONG FltF26;
+ PULONG FltF27;
+ PULONG FltF28;
+ PULONG FltF29;
+ PULONG FltF30;
+ PULONG FltF31;
+ PULONGLONG XIntegerContext[16];
+ PULONGLONG XIntS0;
+ PULONGLONG XIntS1;
+ PULONGLONG XIntS2;
+ PULONGLONG XIntS3;
+ PULONGLONG XIntS4;
+ PULONGLONG XIntS5;
+ PULONGLONG XIntS6;
+ PULONGLONG XIntS7;
+ PULONGLONG XIntT8;
+ PULONGLONG XIntT9;
+ PULONGLONG XIntK0;
+ PULONGLONG XIntK1;
+ PULONGLONG XIntGp;
+ PULONGLONG XIntSp;
+ PULONGLONG XIntS8;
+ PULONGLONG XIntRa;
+} KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS;
+
+// begin_nthal
+//
+// Define R4000 system coprocessor registers.
+//
+// Define index register fields.
+//
+
+typedef struct _INDEX {
+ ULONG INDEX : 6;
+ ULONG X1 : 25;
+ ULONG P : 1;
+} INDEX;
+
+//
+// Define random register fields.
+//
+
+typedef struct _RANDOM {
+ ULONG INDEX : 6;
+ ULONG X1 : 26;
+} RANDOM;
+
+//
+// Define TB entry low register fields.
+//
+
+typedef struct _ENTRYLO {
+ ULONG G : 1;
+ ULONG V : 1;
+ ULONG D : 1;
+ ULONG C : 3;
+ ULONG PFN : 24;
+ ULONG X1 : 2;
+} ENTRYLO, *PENTRYLO;
+
+//
+// Define R4000 PTE format for memory management.
+//
+// N.B. This must map exactly over the entrylo register.
+//
+
+typedef struct _HARDWARE_PTE {
+ ULONG Global : 1;
+ ULONG Valid : 1;
+ ULONG Dirty : 1;
+ ULONG CachePolicy : 3;
+ ULONG PageFrameNumber : 24;
+ ULONG Write : 1;
+ ULONG CopyOnWrite : 1;
+} HARDWARE_PTE, *PHARDWARE_PTE;
+
+#define HARDWARE_PTE_DIRTY_MASK 0x4
+
+//
+// Define R4000 macro to initialize page directory table base.
+//
+
+#define INITIALIZE_DIRECTORY_TABLE_BASE(dirbase, pfn) \
+ ((HARDWARE_PTE *)(dirbase))->PageFrameNumber = pfn; \
+ ((HARDWARE_PTE *)(dirbase))->Global = 0; \
+ ((HARDWARE_PTE *)(dirbase))->Valid = 1; \
+ ((HARDWARE_PTE *)(dirbase))->Dirty = 1; \
+ ((HARDWARE_PTE *)(dirbase))->CachePolicy = PCR->CachePolicy
+
+//
+// Define page mask register fields.
+//
+
+typedef struct _PAGEMASK {
+ ULONG X1 : 13;
+ ULONG PAGEMASK : 12;
+ ULONG X2 : 7;
+} PAGEMASK, *PPAGEMASK;
+
+//
+// Define wired register fields.
+//
+
+typedef struct _WIRED {
+ ULONG NUMBER : 6;
+ ULONG X1 : 26;
+} WIRED;
+
+//
+// Define TB entry high register fields.
+//
+
+typedef struct _ENTRYHI {
+ ULONG PID : 8;
+ ULONG X1 : 5;
+ ULONG VPN2 : 19;
+} ENTRYHI, *PENTRYHI;
+
+//
+// Define processor status register fields.
+//
+
+typedef struct _PSR {
+ ULONG IE : 1;
+ ULONG EXL : 1;
+ ULONG ERL : 1;
+ ULONG KSU : 2;
+ ULONG UX : 1;
+ ULONG SX : 1;
+ ULONG KX : 1;
+ ULONG INTMASK : 8;
+ ULONG DE : 1;
+ ULONG CE : 1;
+ ULONG CH : 1;
+ ULONG X1 : 1;
+ ULONG SR : 1;
+ ULONG TS : 1;
+ ULONG BEV : 1;
+ ULONG X2 : 2;
+ ULONG RE : 1;
+ ULONG FR : 1;
+ ULONG RP : 1;
+ ULONG CU0 : 1;
+ ULONG CU1 : 1;
+ ULONG CU2 : 1;
+ ULONG CU3 : 1;
+} PSR, *PPSR;
+
+//
+// Define configuration register fields.
+//
+
+typedef struct _CONFIGR {
+ ULONG K0 : 3;
+ ULONG CU : 1;
+ ULONG DB : 1;
+ ULONG IB : 1;
+ ULONG DC : 3;
+ ULONG IC : 3;
+ ULONG X1 : 1;
+ ULONG EB : 1;
+ ULONG EM : 1;
+ ULONG BE : 1;
+ ULONG SM : 1;
+ ULONG SC : 1;
+ ULONG EW : 2;
+ ULONG SW : 1;
+ ULONG SS : 1;
+ ULONG SB : 2;
+ ULONG EP : 4;
+ ULONG EC : 3;
+ ULONG CM : 1;
+} CONFIGR;
+
+//
+// Define ECC register fields.
+//
+
+typedef struct _ECC {
+ ULONG ECC : 8;
+ ULONG X1 : 24;
+} ECC;
+
+//
+// Define cache error register fields.
+//
+
+typedef struct _CACHEERR {
+ ULONG PIDX : 3;
+ ULONG SIDX : 19;
+ ULONG X1 : 2;
+ ULONG EI : 1;
+ ULONG EB : 1;
+ ULONG EE : 1;
+ ULONG ES : 1;
+ ULONG ET : 1;
+ ULONG ED : 1;
+ ULONG EC : 1;
+ ULONG ER : 1;
+} CACHEERR;
+
+//
+// Define R4000 cause register fields.
+//
+
+typedef struct _CAUSE {
+ ULONG X1 : 2;
+ ULONG XCODE : 5;
+ ULONG X2 : 1;
+ ULONG INTPEND : 8;
+ ULONG X3 : 12;
+ ULONG CE : 2;
+ ULONG X4 : 1;
+ ULONG BD : 1;
+} CAUSE;
+
+//
+// Define R4000 processor id register fields.
+//
+
+typedef struct _PRID {
+ ULONG REV : 8;
+ ULONG IMP : 8;
+ ULONG X1 : 16;
+} PRID;
+
+// end_nthal
+
+// begin_nthal
+//
+// Define R4000 floating status register field definitions.
+//
+
+typedef struct _FSR {
+ ULONG RM : 2;
+ ULONG SI : 1;
+ ULONG SU : 1;
+ ULONG SO : 1;
+ ULONG SZ : 1;
+ ULONG SV : 1;
+ ULONG EI : 1;
+ ULONG EU : 1;
+ ULONG EO : 1;
+ ULONG EZ : 1;
+ ULONG EV : 1;
+ ULONG XI : 1;
+ ULONG XU : 1;
+ ULONG XO : 1;
+ ULONG XZ : 1;
+ ULONG XV : 1;
+ ULONG XE : 1;
+ ULONG X1 : 5;
+ ULONG CC : 1;
+ ULONG FS : 1;
+ ULONG X2 : 7;
+} FSR, *PFSR;
+
+// end_nthal
+
+// begin_nthal
+//
+// Define address space layout as defined by MIPS memory management.
+//
+
+#define KUSEG_BASE 0x0 // base of user segment
+#define KSEG0_BASE 0x80000000 // base of cached kernel physical
+#define KSEG1_BASE 0xa0000000 // base of uncached kernel physical
+#define KSEG2_BASE 0xc0000000 // base of cached kernel virtual
+// end_nthal
+
+
+//
+// Define MIPS exception handling structures and function prototypes.
+//
+// Function table entry structure definition.
+//
+
+typedef struct _RUNTIME_FUNCTION {
+ ULONG BeginAddress;
+ ULONG EndAddress;
+ PEXCEPTION_ROUTINE ExceptionHandler;
+ PVOID HandlerData;
+ ULONG PrologEndAddress;
+} RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
+
+//
+// Scope table structure definition.
+//
+
+typedef struct _SCOPE_TABLE {
+ ULONG Count;
+ struct {
+ ULONG BeginAddress;
+ ULONG EndAddress;
+ ULONG HandlerAddress;
+ ULONG JumpTarget;
+ } ScopeRecord[1];
+} SCOPE_TABLE, *PSCOPE_TABLE;
+
+//
+// Runtime Library function prototypes.
+//
+
+VOID
+RtlCaptureContext (
+ OUT PCONTEXT ContextRecord
+ );
+
+PRUNTIME_FUNCTION
+RtlLookupFunctionEntry (
+ IN ULONG ControlPc
+ );
+
+ULONG
+RtlVirtualUnwind (
+ IN ULONG ControlPc,
+ IN PRUNTIME_FUNCTION FunctionEntry,
+ IN OUT PCONTEXT ContextRecord,
+ OUT PBOOLEAN InFunction,
+ OUT PULONG EstablisherFrame,
+ IN OUT PKNONVOLATILE_CONTEXT_POINTERS ContextPointers OPTIONAL
+ );
+
+//
+// Define C structured exception handing function prototypes.
+//
+
+typedef struct _DISPATCHER_CONTEXT {
+ ULONG ControlPc;
+ PRUNTIME_FUNCTION FunctionEntry;
+ ULONG EstablisherFrame;
+ PCONTEXT ContextRecord;
+} DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT;
+
+
+struct _EXCEPTION_POINTERS;
+
+typedef
+LONG
+(*EXCEPTION_FILTER) (
+ struct _EXCEPTION_POINTERS *ExceptionPointers
+ );
+
+typedef
+VOID
+(*TERMINATION_HANDLER) (
+ BOOLEAN is_abnormal
+ );
+
+// begin_winnt
+
+#if defined(_MIPS_)
+
+VOID
+__jump_unwind (
+ PVOID Fp,
+ PVOID TargetPc
+ );
+
+#endif // MIPS
+
+// end_winnt
+
+// begin_ntddk begin_nthal
+#endif // defined(_MIPS_)
+// end_ntddk end_nthal
+
+#endif // _NTMIPS_
+
diff --git a/public/sdk/inc/ntmmapi.h b/public/sdk/inc/ntmmapi.h
new file mode 100644
index 000000000..67674c213
--- /dev/null
+++ b/public/sdk/inc/ntmmapi.h
@@ -0,0 +1,370 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntmmapi.h
+
+Abstract:
+
+ This is the include file for the Memory Management sub-component of NTOS
+
+Author:
+
+ Lou Perazzoli (loup) 10-May-1989
+
+Revision History:
+
+--*/
+
+#ifndef _NTMMAPI_
+#define _NTMMAPI_
+
+typedef enum _MEMORY_INFORMATION_CLASS {
+ MemoryBasicInformation
+#if DEVL
+ ,MemoryWorkingSetInformation
+#endif
+ ,MemoryMappedFilenameInformation
+} MEMORY_INFORMATION_CLASS;
+
+//
+// Memory information structures.
+//
+// begin_winnt
+typedef struct _MEMORY_BASIC_INFORMATION {
+ PVOID BaseAddress;
+ PVOID AllocationBase;
+ ULONG AllocationProtect;
+ ULONG RegionSize;
+ ULONG State;
+ ULONG Protect;
+ ULONG Type;
+} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
+// end_winnt
+
+typedef struct _MEMORY_WORKING_SET_BLOCK {
+ ULONG Protection : 5;
+ ULONG Filler1 : 3;
+ ULONG Shared : 1;
+ ULONG Filler2 : 3;
+ ULONG VirtualPage : 20;
+} MEMORY_WORKING_SET_BLOCK, *PMEMORY_WORKING_SET_BLOCK;
+
+
+typedef struct _MEMORY_WORKING_SET_INFORMATION {
+ ULONG NumberOfEntries;
+ MEMORY_WORKING_SET_BLOCK WorkingSetInfo[1];
+} MEMORY_WORKING_SET_INFORMATION, *PMEMORY_WORKING_SET_INFORMATION;
+
+typedef enum _SECTION_INFORMATION_CLASS {
+ SectionBasicInformation,
+ SectionImageInformation
+} SECTION_INFORMATION_CLASS;
+
+// begin_ntddk
+
+//
+// Section Information Structures.
+//
+
+// end_ntddk
+
+typedef struct _SECTIONBASICINFO {
+ PVOID BaseAddress;
+ ULONG AllocationAttributes;
+ LARGE_INTEGER MaximumSize;
+} SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
+
+typedef struct _SECTION_IMAGE_INFORMATION {
+ PVOID TransferAddress;
+ ULONG ZeroBits;
+ ULONG MaximumStackSize;
+ ULONG CommittedStackSize;
+ ULONG SubSystemType;
+ union {
+ struct {
+ USHORT SubSystemMinorVersion;
+ USHORT SubSystemMajorVersion;
+ };
+ ULONG SubSystemVersion;
+ };
+ ULONG GpValue;
+ USHORT ImageCharacteristics;
+ USHORT DllCharacteristics;
+ USHORT Machine;
+ BOOLEAN ImageContainsCode;
+ BOOLEAN Spare1;
+ ULONG LoaderFlags;
+ ULONG Reserved[ 2 ];
+} SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
+
+// begin_ntddk
+typedef enum _SECTION_INHERIT {
+ ViewShare = 1,
+ ViewUnmap = 2
+} SECTION_INHERIT;
+
+//
+// Section Access Rights.
+//
+
+// begin_winnt
+#define SECTION_QUERY 0x0001
+#define SECTION_MAP_WRITE 0x0002
+#define SECTION_MAP_READ 0x0004
+#define SECTION_MAP_EXECUTE 0x0008
+#define SECTION_EXTEND_SIZE 0x0010
+
+#define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY|\
+ SECTION_MAP_WRITE | \
+ SECTION_MAP_READ | \
+ SECTION_MAP_EXECUTE | \
+ SECTION_EXTEND_SIZE)
+// end_winnt
+
+#define SEGMENT_ALL_ACCESS SECTION_ALL_ACCESS
+
+#define PAGE_NOACCESS 0x01 // winnt
+#define PAGE_READONLY 0x02 // winnt
+#define PAGE_READWRITE 0x04 // winnt
+#define PAGE_WRITECOPY 0x08 // winnt
+#define PAGE_EXECUTE 0x10 // winnt
+#define PAGE_EXECUTE_READ 0x20 // winnt
+#define PAGE_EXECUTE_READWRITE 0x40 // winnt
+#define PAGE_EXECUTE_WRITECOPY 0x80 // winnt
+#define PAGE_GUARD 0x100 // winnt
+#define PAGE_NOCACHE 0x200 // winnt
+
+// end_ntddk
+
+#define MEM_COMMIT 0x1000 // winnt ntddk
+#define MEM_RESERVE 0x2000 // winnt ntddk
+#define MEM_DECOMMIT 0x4000 // winnt ntddk
+#define MEM_RELEASE 0x8000 // winnt ntddk
+#define MEM_FREE 0x10000 // winnt ntddk
+#define MEM_PRIVATE 0x20000 // winnt ntddk
+#define MEM_MAPPED 0x40000 // winnt ntddk
+#define MEM_RESET 0x80000 // winnt ntddk
+#define MEM_TOP_DOWN 0x100000 // winnt ntddk
+#define MEM_LARGE_PAGES 0x20000000 // ntddk
+#define MEM_DOS_LIM 0x40000000
+
+#define SEC_BASED 0x200000
+#define SEC_FILE 0x800000 // winnt
+#define SEC_NO_CHANGE 0x400000
+#define SEC_IMAGE 0x1000000 // winnt
+#define SEC_RESERVE 0x4000000 // winnt ntddk
+#define SEC_COMMIT 0x8000000 // winnt
+#define SEC_NOCACHE 0x10000000 // winnt
+
+#define MEM_IMAGE SEC_IMAGE // winnt
+
+#define MAP_PROCESS 1L
+#define MAP_SYSTEM 2L
+
+// begin_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateSection (
+ OUT PHANDLE SectionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN PLARGE_INTEGER MaximumSize OPTIONAL,
+ IN ULONG SectionPageProtection,
+ IN ULONG AllocationAttributes,
+ IN HANDLE FileHandle OPTIONAL
+ );
+
+// end_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenSection(
+ OUT PHANDLE SectionHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtMapViewOfSection(
+ IN HANDLE SectionHandle,
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN ULONG ZeroBits,
+ IN ULONG CommitSize,
+ IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
+ IN OUT PULONG ViewSize,
+ IN SECTION_INHERIT InheritDisposition,
+ IN ULONG AllocationType,
+ IN ULONG Protect
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtUnmapViewOfSection(
+ IN HANDLE ProcessHandle,
+ IN PVOID BaseAddress
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtExtendSection(
+ IN HANDLE SectionHandle,
+ IN OUT PLARGE_INTEGER NewSectionSize
+ );
+
+// begin_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAllocateVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN ULONG ZeroBits,
+ IN OUT PULONG RegionSize,
+ IN ULONG AllocationType,
+ IN ULONG Protect
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFreeVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN OUT PULONG RegionSize,
+ IN ULONG FreeType
+ );
+
+// end_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReadVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN PVOID BaseAddress,
+ OUT PVOID Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG NumberOfBytesRead OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtWriteVirtualMemory(
+ IN HANDLE ProcessHandle,
+ OUT PVOID BaseAddress,
+ IN PVOID Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG NumberOfBytesWritten OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFlushVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN OUT PULONG RegionSize,
+ OUT PIO_STATUS_BLOCK IoStatus
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtLockVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN OUT PULONG RegionSize,
+ IN ULONG MapType
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtUnlockVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN OUT PULONG RegionSize,
+ IN ULONG MapType
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtProtectVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN OUT PVOID *BaseAddress,
+ IN OUT PULONG RegionSize,
+ IN ULONG NewProtect,
+ OUT PULONG OldProtect
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryVirtualMemory(
+ IN HANDLE ProcessHandle,
+ IN PVOID BaseAddress,
+ IN MEMORY_INFORMATION_CLASS MemoryInformationClass,
+ OUT PVOID MemoryInformation,
+ IN ULONG MemoryInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQuerySection(
+ IN HANDLE SectionHandle,
+ IN SECTION_INFORMATION_CLASS SectionInformationClass,
+ OUT PVOID SectionInformation,
+ IN ULONG SectionInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreatePagingFile (
+ IN PUNICODE_STRING PageFileName,
+ IN PLARGE_INTEGER MinimumSize,
+ IN PLARGE_INTEGER MaximumSize,
+ IN ULONG Priority OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFlushInstructionCache (
+ IN HANDLE ProcessHandle,
+ IN PVOID BaseAddress OPTIONAL,
+ IN ULONG Length
+ );
+
+
+//
+// Coherency related function prototype definitions.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFlushWriteBuffer (
+ VOID
+ );
+
+#endif // _NTMMAPI_
diff --git a/public/sdk/inc/ntmsv1_0.h b/public/sdk/inc/ntmsv1_0.h
new file mode 100644
index 000000000..649927ffc
--- /dev/null
+++ b/public/sdk/inc/ntmsv1_0.h
@@ -0,0 +1,413 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntmsv1_0.h
+
+Abstract:
+
+ This module contains the public data structures provided by
+ the MSV1_0 authentication package.
+
+
+Author:
+
+ Jim Kelly (JimK) 12-April-1991
+
+Revision History:
+
+ 22-Apr-1991 (CliffV)
+ Added call package message types. Converted U_STRING to UNICODE_STRING.
+
+ 11-Mar-1992 (DaveHart)
+ Added MsV1_0ChangePassword call package message type.
+
+--*/
+
+#ifndef _NTMSV1_0_
+#define _NTMSV1_0_
+
+#include <ntlsa.h>
+#include <ntsam.h>
+
+// begin_ntifs
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Name of the MSV1_0 authentication package //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+#define MSV1_0_PACKAGE_NAME "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
+
+//
+// Location of MSV authentication package data
+//
+#define MSV1_0_SUBAUTHENTICATION_KEY "SYSTEM\\CurrentControlSet\\Control\\Lsa\\MSV1_0"
+#define MSV1_0_SUBAUTHENTICATION_VALUE "Auth"
+
+
+/////////////////////////////////////////////////////////////////////////
+// //
+// Widely used MSV1_0 data types //
+// //
+/////////////////////////////////////////////////////////////////////////
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// LOGON Related Data Structures
+//
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+//
+// When a LsaLogonUser() call is dispatched to the MsV1_0 authentication
+// package, the beginning of the AuthenticationInformation buffer is
+// cast to a MSV1_0_LOGON_SUBMIT_TYPE to determine the type of logon
+// being requested. Similarly, upon return, the type of profile buffer
+// can be determined by typecasting it to a MSV_1_0_PROFILE_BUFFER_TYPE.
+//
+
+//
+// MSV1.0 LsaLogonUser() submission message types.
+//
+
+typedef enum _MSV1_0_LOGON_SUBMIT_TYPE {
+ MsV1_0InteractiveLogon = 2,
+ MsV1_0Lm20Logon,
+ MsV1_0NetworkLogon
+} MSV1_0_LOGON_SUBMIT_TYPE, *PMSV1_0_LOGON_SUBMIT_TYPE;
+
+
+//
+// MSV1.0 LsaLogonUser() profile buffer types.
+//
+
+typedef enum _MSV1_0_PROFILE_BUFFER_TYPE {
+ MsV1_0InteractiveProfile = 2,
+ MsV1_0Lm20LogonProfile
+} MSV1_0_PROFILE_BUFFER_TYPE, *PMSV1_0_PROFILE_BUFFER_TYPE;
+
+
+
+
+
+
+//
+// MsV1_0InteractiveLogon
+//
+// The AuthenticationInformation buffer of an LsaLogonUser() call to
+// perform an interactive logon contains the following data structure:
+//
+
+typedef struct _MSV1_0_INTERACTIVE_LOGON {
+ MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Password;
+} MSV1_0_INTERACTIVE_LOGON, *PMSV1_0_INTERACTIVE_LOGON;
+
+//
+// Where:
+//
+// MessageType - Contains the type of logon being requested. This
+// field must be set to MsV1_0InteractiveLogon.
+//
+// UserName - Is a string representing the user's account name. The
+// name may be up to 255 characters long. The name is treated case
+// insensitive.
+//
+// Password - Is a string containing the user's cleartext password.
+// The password may be up to 255 characters long and contain any
+// UNICODE value.
+//
+//
+
+
+//
+// The ProfileBuffer returned upon a successful logon of this type
+// contains the following data structure:
+//
+
+typedef struct _MSV1_0_INTERACTIVE_PROFILE {
+ MSV1_0_PROFILE_BUFFER_TYPE MessageType;
+ USHORT LogonCount;
+ USHORT BadPasswordCount;
+ LARGE_INTEGER LogonTime;
+ LARGE_INTEGER LogoffTime;
+ LARGE_INTEGER KickOffTime;
+ LARGE_INTEGER PasswordLastSet;
+ LARGE_INTEGER PasswordCanChange;
+ LARGE_INTEGER PasswordMustChange;
+ UNICODE_STRING LogonScript;
+ UNICODE_STRING HomeDirectory;
+ UNICODE_STRING FullName;
+ UNICODE_STRING ProfilePath;
+ UNICODE_STRING HomeDirectoryDrive;
+ UNICODE_STRING LogonServer;
+ ULONG UserFlags;
+} MSV1_0_INTERACTIVE_PROFILE, *PMSV1_0_INTERACTIVE_PROFILE;
+
+//
+// where:
+//
+// MessageType - Identifies the type of profile data being returned.
+// Contains the type of logon being requested. This field must
+// be set to MsV1_0InteractiveProfile.
+//
+// LogonCount - Number of times the user is currently logged on.
+//
+// BadPasswordCount - Number of times a bad password was applied to
+// the account since last successful logon.
+//
+// LogonTime - Time when user last logged on. This is an absolute
+// format NT standard time value.
+//
+// LogoffTime - Time when user should log off. This is an absolute
+// format NT standard time value.
+//
+// KickOffTime - Time when system should force user logoff. This is
+// an absolute format NT standard time value.
+//
+// PasswordLastChanged - Time and date the password was last
+// changed. This is an absolute format NT standard time
+// value.
+//
+// PasswordCanChange - Time and date when the user can change the
+// password. This is an absolute format NT time value. To
+// prevent a password from ever changing, set this field to a
+// date very far into the future.
+//
+// PasswordMustChange - Time and date when the user must change the
+// password. If the user can never change the password, this
+// field is undefined. This is an absolute format NT time
+// value.
+//
+// LogonScript - The (relative) path to the account's logon
+// script.
+//
+// HomeDirectory - The home directory for the user.
+//
+
+
+//
+// MsV1_0Lm20Logon and MsV1_0NetworkLogon
+//
+// The AuthenticationInformation buffer of an LsaLogonUser() call to
+// perform an network logon contains the following data structure:
+//
+// MsV1_0NetworkLogon logon differs from MsV1_0Lm20Logon in that the
+// ParameterControl field exists.
+//
+
+#define MSV1_0_CHALLENGE_LENGTH 8
+#define MSV1_0_USER_SESSION_KEY_LENGTH 16
+#define MSV1_0_LANMAN_SESSION_KEY_LENGTH 8
+
+//
+// Values for ParameterControl.
+//
+
+#define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 0x02
+#define MSV1_0_UPDATE_LOGON_STATISTICS 0x04
+#define MSV1_0_RETURN_USER_PARAMETERS 0x08
+#define MSV1_0_DONT_TRY_GUEST_ACCOUNT 0x10
+#define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 0x20
+#define MSV1_0_RETURN_PASSWORD_EXPIRY 0x40
+
+//
+// The high order byte is a value indicating the SubAuthentication DLL.
+// Zero indicates no SubAuthentication DLL.
+//
+#define MSV1_0_SUBAUTHENTICATION_DLL 0xFF000000
+#define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24
+#define MSV1_0_MNS_LOGON 0x01000000
+
+typedef struct _MSV1_0_LM20_LOGON {
+ MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Workstation;
+ UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
+ STRING CaseSensitiveChallengeResponse;
+ STRING CaseInsensitiveChallengeResponse;
+ ULONG ParameterControl;
+} MSV1_0_LM20_LOGON, * PMSV1_0_LM20_LOGON;
+
+
+
+//
+// Values for UserFlags.
+//
+
+#define LOGON_GUEST 0x01
+#define LOGON_NOENCRYPTION 0x02
+#define LOGON_CACHED_ACCOUNT 0x04
+#define LOGON_USED_LM_PASSWORD 0x08
+#define LOGON_EXTRA_SIDS 0x20
+#define LOGON_SUBAUTH_SESSION_KEY 0x40
+#define LOGON_SERVER_TRUST_ACCOUNT 0x80
+
+//
+// The high order byte is reserved for return by SubAuthentication DLLs.
+//
+
+#define MSV1_0_SUBAUTHENTICATION_FLAGS 0xFF000000
+
+// Values returned by the MSV1_0_MNS_LOGON SubAuthentication DLL
+#define LOGON_GRACE_LOGON 0x01000000
+
+typedef struct _MSV1_0_LM20_LOGON_PROFILE {
+ MSV1_0_PROFILE_BUFFER_TYPE MessageType;
+ LARGE_INTEGER KickOffTime;
+ LARGE_INTEGER LogoffTime;
+ ULONG UserFlags;
+ UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
+ UNICODE_STRING LogonDomainName;
+ UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
+ UNICODE_STRING LogonServer;
+ UNICODE_STRING UserParameters;
+} MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE;
+
+
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// CALL PACKAGE Related Data Structures //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+
+//
+// MSV1.0 LsaCallAuthenticationPackage() submission and response
+// message types.
+//
+
+typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE {
+ MsV1_0Lm20ChallengeRequest = 0, // Both submission and response
+ MsV1_0Lm20GetChallengeResponse, // Both submission and response
+ MsV1_0EnumerateUsers, // Both submission and response
+ MsV1_0GetUserInfo, // Both submission and response
+ MsV1_0ReLogonUsers, // Submission only
+ MsV1_0ChangePassword, // Both submission and response
+ MsV1_0ChangeCachedPassword // Both submission and response
+} MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE;
+
+//
+// MsV1_0Lm20ChallengeRequest submit buffer and response
+//
+
+typedef struct _MSV1_0_LM20_CHALLENGE_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+} MSV1_0_LM20_CHALLENGE_REQUEST, *PMSV1_0_LM20_CHALLENGE_REQUEST;
+
+typedef struct _MSV1_0_LM20_CHALLENGE_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
+} MSV1_0_LM20_CHALLENGE_RESPONSE, *PMSV1_0_LM20_CHALLENGE_RESPONSE;
+
+//
+// MsV1_0Lm20GetChallengeResponse submit buffer and response
+//
+
+#define USE_PRIMARY_PASSWORD 0x01
+#define RETURN_PRIMARY_USERNAME 0x02
+#define RETURN_PRIMARY_LOGON_DOMAINNAME 0x04
+#define RETURN_NON_NT_USER_SESSION_KEY 0x08
+
+typedef struct _MSV1_0_GETCHALLENRESP_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG ParameterControl;
+ LUID LogonId;
+ UNICODE_STRING Password;
+ UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
+} MSV1_0_GETCHALLENRESP_REQUEST, *PMSV1_0_GETCHALLENRESP_REQUEST;
+
+typedef struct _MSV1_0_GETCHALLENRESP_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ STRING CaseSensitiveChallengeResponse;
+ STRING CaseInsensitiveChallengeResponse;
+ UNICODE_STRING UserName;
+ UNICODE_STRING LogonDomainName;
+ UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
+ UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
+} MSV1_0_GETCHALLENRESP_RESPONSE, *PMSV1_0_GETCHALLENRESP_RESPONSE;
+
+//
+// MsV1_0EnumerateUsers submit buffer and response
+//
+
+typedef struct _MSV1_0_ENUMUSERS_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+} MSV1_0_ENUMUSERS_REQUEST, *PMSV1_0_ENUMUSERS_REQUEST;
+
+typedef struct _MSV1_0_ENUMUSERS_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG NumberOfLoggedOnUsers;
+ PLUID LogonIds;
+ PULONG EnumHandles;
+} MSV1_0_ENUMUSERS_RESPONSE, *PMSV1_0_ENUMUSERS_RESPONSE;
+
+//
+// MsV1_0GetUserInfo submit buffer and response
+//
+
+typedef struct _MSV1_0_GETUSERINFO_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ LUID LogonId;
+} MSV1_0_GETUSERINFO_REQUEST, *PMSV1_0_GETUSERINFO_REQUEST;
+
+typedef struct _MSV1_0_GETUSERINFO_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ PSID UserSid;
+ UNICODE_STRING UserName;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING LogonServer;
+ SECURITY_LOGON_TYPE LogonType;
+} MSV1_0_GETUSERINFO_RESPONSE, *PMSV1_0_GETUSERINFO_RESPONSE;
+
+// end_ntifs
+
+//
+// MsV1_0RelogonUsers submit buffer
+//
+
+typedef struct _MSV1_0_RELOGON_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ UNICODE_STRING LogonServer;
+} MSV1_0_RELOGON_REQUEST, *PMSV1_0_RELOGON_REQUEST;
+
+//
+// MsV1_0ChangePassword and MsV1_0ChangeCachedPassword submit buffer
+//
+// MsV1_0ChangePassword changes the password on the SAM account plus
+// the password cache and logon credentials if applicable.
+//
+// MsV1_0ChangeCachedPassword only changes the password cache and the logon
+// credentials.
+//
+
+typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ UNICODE_STRING DomainName;
+ UNICODE_STRING AccountName;
+ UNICODE_STRING OldPassword;
+ UNICODE_STRING NewPassword;
+ BOOLEAN Impersonating;
+} MSV1_0_CHANGEPASSWORD_REQUEST, *PMSV1_0_CHANGEPASSWORD_REQUEST;
+
+typedef struct _MSV1_0_CHANGEPASSWORD_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ BOOLEAN PasswordInfoValid;
+ DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo;
+} MSV1_0_CHANGEPASSWORD_RESPONSE, *PMSV1_0_CHANGEPASSWORD_RESPONSE;
+
+
+#endif //_NTMSV1_0_
diff --git a/public/sdk/inc/ntnls.h b/public/sdk/inc/ntnls.h
new file mode 100644
index 000000000..a3d327df0
--- /dev/null
+++ b/public/sdk/inc/ntnls.h
@@ -0,0 +1,50 @@
+/*++
+
+Copyright (c) 1992,1993 Microsoft Corporation
+
+Module Name:
+
+ ntnls.h
+
+Abstract:
+
+ NLS file formats and data types
+
+Author:
+
+ Mark Lucovsky (markl) 09-Nov-1992
+
+Revision History:
+
+--*/
+
+#ifndef _NTNLS_
+#define _NTNLS_
+
+#define MAXIMUM_LEADBYTES 12
+
+typedef struct _CPTABLEINFO {
+ USHORT CodePage; // code page number
+ USHORT MaximumCharacterSize; // max length (bytes) of a char
+ USHORT DefaultChar; // default character (MB)
+ USHORT UniDefaultChar; // default character (Unicode)
+ USHORT TransDefaultChar; // translation of default char (Unicode)
+ USHORT TransUniDefaultChar; // translation of Unic default char (MB)
+ USHORT DBCSCodePage; // Non 0 for DBCS code pages
+ UCHAR LeadByte[MAXIMUM_LEADBYTES]; // lead byte ranges
+ PUSHORT MultiByteTable; // pointer to MB translation table
+ PVOID WideCharTable; // pointer to WC translation table
+ PUSHORT DBCSRanges; // pointer to DBCS ranges
+ PUSHORT DBCSOffsets; // pointer to DBCS offsets
+} CPTABLEINFO, *PCPTABLEINFO;
+
+typedef struct _NLSTABLEINFO {
+ CPTABLEINFO OemTableInfo;
+ CPTABLEINFO AnsiTableInfo;
+ PUSHORT UpperCaseTable; // 844 format upcase table
+ PUSHORT LowerCaseTable; // 844 format lower case table
+} NLSTABLEINFO, *PNLSTABLEINFO;
+
+
+#endif // _NTNLS_
+
diff --git a/public/sdk/inc/ntobapi.h b/public/sdk/inc/ntobapi.h
new file mode 100644
index 000000000..e853c5a32
--- /dev/null
+++ b/public/sdk/inc/ntobapi.h
@@ -0,0 +1,308 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntobapi.h
+
+Abstract:
+
+ This is the include file for the Object Manager sub-component of NTOS
+
+Author:
+
+ Steve Wood (stevewo) 28-Mar-1989
+
+Revision History:
+
+--*/
+
+#ifndef _NTOBAPI_
+#define _NTOBAPI_
+
+// begin_ntddk
+
+#define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\')
+
+// end_ntddk
+
+#define OBJ_MAX_REPARSE_ATTEMPTS 32
+
+// begin_ntddk begin_nthal
+//
+// Object Manager Object Type Specific Access Rights.
+//
+
+#define OBJECT_TYPE_CREATE (0x0001)
+
+#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
+
+//
+// Object Manager Directory Specific Access Rights.
+//
+
+#define DIRECTORY_QUERY (0x0001)
+#define DIRECTORY_TRAVERSE (0x0002)
+#define DIRECTORY_CREATE_OBJECT (0x0004)
+#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)
+
+#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
+
+//
+// Object Manager Symbolic Link Specific Access Rights.
+//
+
+#define SYMBOLIC_LINK_QUERY (0x0001)
+
+#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
+
+// end_ntddk end_nthal
+
+
+//
+// Object Information Classes
+//
+
+typedef enum _OBJECT_INFORMATION_CLASS {
+ ObjectBasicInformation,
+ ObjectNameInformation,
+ ObjectTypeInformation,
+ ObjectTypesInformation,
+ ObjectHandleFlagInformation
+} OBJECT_INFORMATION_CLASS;
+
+typedef struct _OBJECT_BASIC_INFORMATION {
+ ULONG Attributes;
+ ACCESS_MASK GrantedAccess;
+ ULONG HandleCount;
+ ULONG PointerCount;
+ ULONG PagedPoolCharge;
+ ULONG NonPagedPoolCharge;
+ ULONG Reserved[ 3 ];
+ ULONG NameInfoSize;
+ ULONG TypeInfoSize;
+ ULONG SecurityDescriptorSize;
+ LARGE_INTEGER CreationTime;
+} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
+
+typedef struct _OBJECT_NAME_INFORMATION { // ntddk nthal
+ UNICODE_STRING Name; // ntddk nthal
+} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; // ntddk nthal
+
+typedef struct _OBJECT_TYPE_INFORMATION {
+ UNICODE_STRING TypeName;
+ ULONG TotalNumberOfObjects;
+ ULONG TotalNumberOfHandles;
+ ULONG TotalPagedPoolUsage;
+ ULONG TotalNonPagedPoolUsage;
+ ULONG TotalNamePoolUsage;
+ ULONG TotalHandleTableUsage;
+ ULONG HighWaterNumberOfObjects;
+ ULONG HighWaterNumberOfHandles;
+ ULONG HighWaterPagedPoolUsage;
+ ULONG HighWaterNonPagedPoolUsage;
+ ULONG HighWaterNamePoolUsage;
+ ULONG HighWaterHandleTableUsage;
+ ULONG InvalidAttributes;
+ GENERIC_MAPPING GenericMapping;
+ ULONG ValidAccessMask;
+ BOOLEAN SecurityRequired;
+ BOOLEAN MaintainHandleCount;
+ ULONG PoolType;
+ ULONG DefaultPagedPoolCharge;
+ ULONG DefaultNonPagedPoolCharge;
+} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
+
+typedef struct _OBJECT_TYPES_INFORMATION {
+ ULONG NumberOfTypes;
+ // OBJECT_TYPE_INFORMATION TypeInformation;
+} OBJECT_TYPES_INFORMATION, *POBJECT_TYPES_INFORMATION;
+
+typedef struct _OBJECT_HANDLE_FLAG_INFORMATION {
+ BOOLEAN Inherit;
+ BOOLEAN ProtectFromClose;
+} OBJECT_HANDLE_FLAG_INFORMATION, *POBJECT_HANDLE_FLAG_INFORMATION;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryObject(
+ IN HANDLE Handle,
+ IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
+ OUT PVOID ObjectInformation,
+ IN ULONG Length,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetInformationObject(
+ IN HANDLE Handle,
+ IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
+ IN PVOID ObjectInformation,
+ IN ULONG ObjectInformationLength
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDuplicateObject(
+ IN HANDLE SourceProcessHandle,
+ IN HANDLE SourceHandle,
+ IN HANDLE TargetProcessHandle OPTIONAL,
+ OUT PHANDLE TargetHandle OPTIONAL,
+ IN ACCESS_MASK DesiredAccess,
+ IN ULONG HandleAttributes,
+ IN ULONG Options
+ );
+
+// begin_ntddk
+#define DUPLICATE_CLOSE_SOURCE 0x00000001 // winnt
+#define DUPLICATE_SAME_ACCESS 0x00000002 // winnt
+#define DUPLICATE_SAME_ATTRIBUTES 0x00000004
+// end_ntddk
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtMakeTemporaryObject(
+ IN HANDLE Handle
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSignalAndWaitForSingleObject(
+ IN HANDLE SignalHandle,
+ IN HANDLE WaitHandle,
+ IN BOOLEAN Alertable,
+ IN PLARGE_INTEGER Timeout OPTIONAL
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtWaitForSingleObject(
+ IN HANDLE Handle,
+ IN BOOLEAN Alertable,
+ IN PLARGE_INTEGER Timeout OPTIONAL
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtWaitForMultipleObjects(
+ IN ULONG Count,
+ IN HANDLE Handles[],
+ IN WAIT_TYPE WaitType,
+ IN BOOLEAN Alertable,
+ IN PLARGE_INTEGER Timeout OPTIONAL
+ );
+
+// begin_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetSecurityObject(
+ IN HANDLE Handle,
+ IN SECURITY_INFORMATION SecurityInformation,
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQuerySecurityObject(
+ IN HANDLE Handle,
+ IN SECURITY_INFORMATION SecurityInformation,
+ OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
+ IN ULONG Length,
+ OUT PULONG LengthNeeded
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtClose(
+ IN HANDLE Handle
+ );
+
+// end_ntsrv
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateDirectoryObject(
+ OUT PHANDLE DirectoryHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenDirectoryObject(
+ OUT PHANDLE DirectoryHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+typedef struct _OBJECT_DIRECTORY_INFORMATION {
+ UNICODE_STRING Name;
+ UNICODE_STRING TypeName;
+} OBJECT_DIRECTORY_INFORMATION, *POBJECT_DIRECTORY_INFORMATION;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryDirectoryObject(
+ IN HANDLE DirectoryHandle,
+ OUT PVOID Buffer,
+ IN ULONG Length,
+ IN BOOLEAN ReturnSingleEntry,
+ IN BOOLEAN RestartScan,
+ IN OUT PULONG Context,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateSymbolicLinkObject(
+ OUT PHANDLE LinkHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN PUNICODE_STRING LinkTarget
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenSymbolicLinkObject(
+ OUT PHANDLE LinkHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQuerySymbolicLinkObject(
+ IN HANDLE LinkHandle,
+ IN OUT PUNICODE_STRING LinkTarget,
+ OUT PULONG ReturnedLength OPTIONAL
+ );
+
+#endif // _NTOBAPI_
diff --git a/public/sdk/inc/ntpnpapi.h b/public/sdk/inc/ntpnpapi.h
new file mode 100644
index 000000000..cea2629be
--- /dev/null
+++ b/public/sdk/inc/ntpnpapi.h
@@ -0,0 +1,239 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1989-1995 Microsoft Corporation
+
+Module Name:
+
+ ntpnpapi.h
+
+Abstract:
+
+ This module contains the user APIs for NT Plug and Play, along
+ with any public data structures needed to call these APIs.
+
+ This module should be included by including "nt.h".
+
+Author:
+
+ Lonny McMichael (lonnym) 02/06/1995
+
+
+Revision History:
+
+
+--*/
+
+#ifndef _NTPNPAPI_
+#define _NTPNPAPI_
+
+#include <cfg.h>
+
+// begin_ntddk begin_ntifs begin_nthal
+
+#ifdef _PNP_POWER_STUB_ENABLED_
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#ifndef __LPGUID_DEFINED__
+#define __LPGUID_DEFINED__
+typedef GUID *LPGUID;
+#endif
+
+#endif // _PNP_POWER_STUB_ENABLED_
+
+//
+// Define a reserved ordinal value indicating no such service instance
+// or device instance.
+//
+#define PLUGPLAY_NO_INSTANCE (MAXULONG)
+
+// end_ntddk end_ntifs end_nthal
+
+//
+// Define the Event IDs for Plug and Play event notification
+//
+#define PLUGPLAY_EVENT_QUERY_EJECT ( 0x0001 ) // device was query-ejected
+#define PLUGPLAY_EVENT_BUSCHECK ( 0x0002 ) // device insertion/removal has occurred
+#define PLUGPLAY_EVENT_QUERY_UNDOCK ( 0x0003 ) // system is being query-undocked
+#define PLUGPLAY_EVENT_SUSPEND ( 0x0004 ) // system is about to be suspended
+#define PLUGPLAY_EVENT_RESUME ( 0x0005 ) // system has been resumed from a suspend
+#define PLUGPLAY_EVENT_DOCK_CHANGE ( 0x0006 ) // system dock state has changed
+
+//
+// Define the Plug and Play event notification block for query-eject
+// (Event ID is PLUGPLAY_EVENT_QUERY_EJECT)
+//
+typedef struct _PLUGPLAY_EVENT_QUERY_EJECT_DATA {
+ PLUGPLAY_BUS_INSTANCE BusInstance;
+ WCHAR DeviceId[1];
+} PLUGPLAY_EVENT_QUERY_EJECT_DATA, *PPLUGPLAY_EVENT_QUERY_EJECT_DATA;
+
+//
+// Define the Plug and Play event notification block for a bus check
+// (Event ID is PLUGPLAY_EVENT_BUSCHECK)
+//
+typedef struct _PLUGPLAY_EVENT_BUSCHECK_DATA {
+ PLUGPLAY_BUS_INSTANCE BusInstance;
+} PLUGPLAY_EVENT_BUSCHECK_DATA, *PPLUGPLAY_EVENT_BUSCHECK_DATA;
+
+//
+// There is no corresponding Plug and Play event notification block
+// for a query-undock (Event ID is PLUGPLAY_EVENT_QUERY_UNDOCK)
+//
+
+//
+// There is no corresponding Plug and Play event notification block
+// for a suspend (Event ID is PLUGPLAY_EVENT_SUSPEND)
+//
+
+//
+// There is no corresponding Plug and Play event notification block
+// for a resume (Event ID is PLUGPLAY_EVENT_RESUME)
+//
+
+//
+// Define the Plug and Play event notification block for a dock state change
+// (Event ID is PLUGPLAY_EVENT_DOCK_CHANGE)
+//
+typedef struct _PLUGPLAY_EVENT_DOCK_CHANGE_DATA {
+ SYSTEM_DOCK_INFORMATION NewDockState;
+} PLUGPLAY_EVENT_DOCK_CHANGE_DATA, *PPLUGPLAY_EVENT_DOCK_CHANGE_DATA;
+
+//
+// Define a Plug and Play event notification block
+//
+typedef struct _PLUGPLAY_EVENT_BLOCK {
+ ULONG EventId;
+ ULONG EventBufferLength;
+ UCHAR EventBuffer[1];
+} PLUGPLAY_EVENT_BLOCK, *PPLUGPLAY_EVENT_BLOCK;
+
+//
+// Define an Asynchronous Procedure Call for PnP event notification
+//
+
+typedef
+VOID
+(*PPLUGPLAY_APC_ROUTINE) (
+ IN PVOID PnPContext,
+ IN NTSTATUS Status,
+ IN PPLUGPLAY_EVENT_BLOCK PnPEvent
+ );
+
+//
+// Define the NtPlugPlayControl Classes
+//
+typedef enum _PLUGPLAY_CONTROL_CLASS {
+ PlugPlayControlQueryRemoveDevice,
+ PlugPlayControlRemoveDevice,
+ PlugPlayControlCancelRemoveDevice,
+ PlugPlayControlAddDevice,
+ PlugPlayControlEjectDevice,
+ PlugPlayControlUnlockDevice,
+ PlugPlayControlQueryDeviceCapabilities,
+ PlugPlayControlGetDevicePathInformation,
+ PlugPlayControlRegisterNewDevice,
+ PlugPlayControlEnumerateDevice,
+ PlugPlayControlGenerateLegacyDevice,
+ PlugPlayControlDeregisterDevice,
+ PlugPlayControlDetectResourceConflict,
+ MaxPlugPlayControl
+} PLUGPLAY_CONTROL_CLASS, *PPLUGPLAY_CONTROL_CLASS;
+
+//
+// Define a device control structure for NtPlugPlayControl
+//
+typedef struct _PLUGPLAY_CONTROL_DEVICE_CONTROL_DATA {
+ UNICODE_STRING DeviceInstance;
+ NTSTATUS Status;
+} PLUGPLAY_CONTROL_DEVICE_CONTROL_DATA, *PPLUGPLAY_CONTROL_DEVICE_CONTROL_DATA;
+
+//
+// Define a device capabilities structure for NtPlugPlayControl
+//
+// BUGBUG (lonnym):SLOT_CAPABILITIES structure needs to be defined by KenR!
+//
+typedef struct _PLUGPLAY_CONTROL_DEVICE_CAPABILITIES_DATA {
+ UNICODE_STRING DeviceInstance;
+ // SLOT_CAPABILITIES Capabilities;
+} PLUGPLAY_CONTROL_DEVICE_CAPABILITIES_DATA, *PPLUGPLAY_CONTROL_DEVICE_CAPABILITIES_DATA;
+
+//
+// Define a device path information structure for NtPlugPlayControl
+//
+typedef struct _PLUGPLAY_CONTROL_DEVICE_PATH_DATA {
+ UNICODE_STRING DevicePath;
+ ULONG ServiceNameLength;
+ ULONG DeviceInstanceOffset;
+ ULONG DeviceInstanceLength;
+ ULONG ServiceInstanceOrdinal;
+ WCHAR ServiceName[1]; // also contains Device Instance string
+} PLUGPLAY_CONTROL_DEVICE_PATH_DATA, *PPLUGPLAY_CONTROL_DEVICE_PATH_DATA;
+
+//
+// Define a legacy device generation structure for NtPlugPlayControl
+//
+typedef struct _PLUGPLAY_CONTROL_LEGACY_DEVGEN_DATA {
+ UNICODE_STRING ServiceName;
+ ULONG DeviceInstanceLength;
+ WCHAR DeviceInstance[1];
+} PLUGPLAY_CONTROL_LEGACY_DEVGEN_DATA, *PPLUGPLAY_CONTROL_LEGACY_DEVGEN_DATA;
+
+//
+// Define a device resource structure for NtPlugPlayControl
+//
+typedef struct _PLUGPLAY_CONTROL_DEVICE_RESOURCE_DATA {
+ UNICODE_STRING DeviceInstance;
+ PCM_RESOURCE_LIST ResourceList;
+ ULONG ResourceListSize;
+ NTSTATUS Status;
+} PLUGPLAY_CONTROL_DEVICE_RESOURCE_DATA, *PPLUGPLAY_CONTROL_DEVICE_RESOURCE_DATA;
+
+#if 0 // obsoleted
+
+//
+// defines values for PnPInfo
+//
+
+#define PNPINFO_DRIVER_ADAPTER 0x1
+#define PNPINFO_DRIVER_PERIPHERAL 0x2
+#define PNPINFO_DRIVER_SOFTWARE 0x4
+
+#endif // obsoleted
+
+
+//
+// Plug and Play user APIs
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtGetPlugPlayEvent(
+ IN PPLUGPLAY_APC_ROUTINE PnPApcRoutine OPTIONAL,
+ IN PVOID PnPContext OPTIONAL,
+ OUT PPLUGPLAY_EVENT_BLOCK PnPEvent,
+ IN ULONG EventBufferLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtPlugPlayControl(
+ IN PLUGPLAY_CONTROL_CLASS PnPControlClass,
+ IN OUT PVOID PnPControlData,
+ IN ULONG PnPControlDataLength,
+ OUT PULONG RequiredLength OPTIONAL
+ );
+
+#endif // _NTPNPAPI_
+
diff --git a/public/sdk/inc/ntpoapi.h b/public/sdk/inc/ntpoapi.h
new file mode 100644
index 000000000..1411695d9
--- /dev/null
+++ b/public/sdk/inc/ntpoapi.h
@@ -0,0 +1,109 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1995 Microsoft Corporation
+
+Module Name:
+
+ ntpoapi.h
+
+Abstract:
+
+ This module contains the user APIs for the NT Power Management.
+
+Author:
+
+Revision History:
+
+--*/
+
+#ifndef _NTPOAPI_
+#define _NTPOAPI_
+
+//
+// Power Management user APIs
+//
+
+// begin_ntddk begin_ntifs begin_nthal begin_ntminiport
+
+typedef enum _POWER_STATES {
+ PowerUnspecified = 0,
+ PowerUp,
+ PowerQuery,
+ PowerStandby,
+ PowerSuspend,
+ PowerHibernate,
+ PowerDown,
+ PowerDownRemove,
+ MaximumPowerState
+} POWER_STATE, *PPOWER_STATE;
+
+// end_ntddk end_nthal end_ntifs end_ntminiport
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetSystemPowerState(
+ IN POWER_STATE SystemPowerState,
+ IN BOOLEAN NoResumeAlarm,
+ IN BOOLEAN ForcePowerDown
+ );
+
+// begin_ntddk begin_nthal begin_ntminiport
+
+typedef enum {
+ BatteryCurrent,
+ BatteryCycleCount,
+ BatteryDesignedChargeCapacity,
+ BatteryDeviceChemistry,
+ BatteryDeviceName,
+ BatteryFullChargeCapacity,
+ BatteryManufactureData,
+ BatteryManufactureName,
+ BatteryReportingUnits,
+ BatteryRemainingCapacity,
+ BatterySerialNumber,
+ BatterySuppliesSystemPower,
+ BatteryVoltage
+} BatteryInformationLevel, *PBatterInformationLevel;
+
+typedef struct _BATTERY_CHARGE_WAIT {
+ ULONG BatteryTag;
+ BOOLEAN ACOnLine;
+ BOOLEAN StatusCharging;
+ BOOLEAN StatusDischarging;
+ ULONG LowChargeMark;
+ ULONG HighChargeMark;
+} BATTERY_CHARGE_WAIT, *PBATTERY_CHARGE_WAIT;
+
+typedef struct _BATTERY_CHARGE {
+ ULONG BatteryTag;
+ BOOLEAN ACOnLine;
+ BOOLEAN StatusCharging;
+ BOOLEAN StatusDischarging;
+ ULONG EstimatedCharge;
+} BATTERY_CHARGE, *PBATTERY_CHARGE;
+
+
+//
+// Power management IOCTLs
+//
+
+#define IOCTL_SET_RESUME \
+ CTL_CODE(FILE_DEVICE_BATTERY, 0, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_POWER_DOWN \
+ CTL_CODE(FILE_DEVICE_BATTERY, 1, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_BATTERY_QUERY_INFORMATION \
+ CTL_CODE(FILE_DEVICE_BATTERY, 2, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_BATTERY_CHARGE_STATUS \
+ CTL_CODE(FILE_DEVICE_BATTERY, 3, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_BATTERY_SET_RESUME \
+ CTL_CODE(FILE_DEVICE_BATTERY, 4, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+// end_ntddk end_nthal end_ntminiport
+
+#endif // _NTPOAPI_
+
diff --git a/public/sdk/inc/ntppc.h b/public/sdk/inc/ntppc.h
new file mode 100644
index 000000000..bfc5846a0
--- /dev/null
+++ b/public/sdk/inc/ntppc.h
@@ -0,0 +1,688 @@
+/*++
+
+Copyright (c) 1993 IBM Corporation
+
+Module Name:
+
+ ntppc.h
+
+Abstract:
+
+ User-mode visible PowerPC specific structures and constants
+
+Author:
+
+ Rick Simpson 9-July-1993
+
+ Based on ntmips.h, by David N. Cutler (davec) 31-Mar-1990
+
+Revision History:
+
+ Chuck Bauman 3-August-1993 (Integrate NT product source)
+ KPCR modifications need to be integrated
+ because it was removed from ntppc.h.
+ No changes required otherwise.
+
+--*/
+
+#ifndef _NTPPC_
+#define _NTPPC_
+#include "ppcinst.h"
+
+// begin_ntddk begin_nthal begin_windbgkd begin_winnt
+
+#if defined(_PPC_)
+
+// end_windbgkd end_winnt
+
+//
+// Define system time structure.
+//
+
+typedef struct _KSYSTEM_TIME {
+ ULONG LowPart;
+ LONG High1Time;
+ LONG High2Time;
+} KSYSTEM_TIME, *PKSYSTEM_TIME;
+
+//
+// Define unsupported "keywords".
+//
+
+#define _cdecl
+
+// end_ntddk end_nthal
+// begin_windbgkd
+
+//
+// Define PowerPC specific kernel debugger information.
+//
+// The following structure contains machine specific data passed to
+// the host system kernel debugger in a wait state change message.
+//
+// **FINISH** Copied without change from MIPS; may need modification
+
+#define DBGKD_MAXSTREAM 16
+
+typedef struct _DBGKD_CONTROL_REPORT {
+ ULONG InstructionCount;
+ UCHAR InstructionStream[DBGKD_MAXSTREAM];
+} DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+
+//
+// The following structure contains information that the host system
+// kernel debugger wants to set on every continue operation and avoids
+// the need to send extra packets of information.
+//
+
+typedef ULONG DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
+
+// end_windbgkd
+
+
+//
+// Define breakpoint codes.
+//
+// **FINISH** Use MIPS codes unless there's a reason not to
+//
+
+#define USER_BREAKPOINT 0 // user breakpoint
+#define KERNEL_BREAKPOINT 1 // kernel breakpoint
+#define BREAKIN_BREAKPOINT 2 // break into kernel debugger
+#define BRANCH_TAKEN_BREAKPOINT 3 // branch taken breakpoint
+#define BRANCH_NOT_TAKEN_BREAKPOINT 4 // branch not taken breakpoint
+#define SINGLE_STEP_BREAKPOINT 5 // single step breakpoint
+#define DIVIDE_OVERFLOW_BREAKPOINT 6 // divide overflow breakpoint
+#define DIVIDE_BY_ZERO_BREAKPOINT 7 // divide by zero breakpoint
+#define RANGE_CHECK_BREAKPOINT 8 // range check breakpoint
+#define STACK_OVERFLOW_BREAKPOINT 9 // MIPS code
+#define MULTIPLY_OVERFLOW_BREAKPOINT 10 // multiply overflow breakpoint
+
+#define DEBUG_PRINT_BREAKPOINT 20 // debug print breakpoint
+#define DEBUG_PROMPT_BREAKPOINT 21 // debug prompt breakpoint
+#define DEBUG_STOP_BREAKPOINT 22 // debug stop breakpoint
+#define DEBUG_LOAD_SYMBOLS_BREAKPOINT 23 // load symbols breakpoint
+#define DEBUG_UNLOAD_SYMBOLS_BREAKPOINT 24 // unload symbols breakpoint
+
+//
+// Define PowerPC specific read control space commands for the
+// Kernel Debugger. These definitions are for values that must be
+// accessed via defined interfaces (Fast path System Call).
+//
+
+#define DEBUG_CONTROL_SPACE_PCR 1
+
+//
+// Define special fast path system service codes.
+//
+// N.B. These codes are VERY special. The high bit signifies a fast path
+// and the low bits signify what type.
+//
+
+#define RETRIEVE_TEB_PTR -3 // fetch address of TEB
+
+#define SET_LOW_WAIT_HIGH -2 // fast path event pair service
+#define SET_HIGH_WAIT_LOW -1 // fast path event pair service
+
+// begin_ntddk begin_nthal
+//
+
+//
+// Define size of kernel mode stack.
+//
+// **FINISH** This may not be the appropriate value for PowerPC
+
+#define KERNEL_STACK_SIZE 16384
+
+//
+// Define size of large kernel mode stack for callbacks.
+//
+
+#define KERNEL_LARGE_STACK_SIZE 61440
+
+//
+// Define number of pages to initialize in a large kernel stack.
+//
+
+#define KERNEL_LARGE_STACK_COMMIT 16384
+
+//
+// Define bus error routine type.
+//
+
+struct _EXCEPTION_RECORD;
+struct _KEXCEPTION_FRAME;
+struct _KTRAP_FRAME;
+
+typedef
+VOID
+(*PKBUS_ERROR_ROUTINE) (
+ IN struct _EXCEPTION_RECORD *ExceptionRecord,
+ IN struct _KEXCEPTION_FRAME *ExceptionFrame,
+ IN struct _KTRAP_FRAME *TrapFrame,
+ IN PVOID VirtualAddress,
+ IN PHYSICAL_ADDRESS PhysicalAddress
+ );
+
+//
+// Macros to emit eieio, sync, and isync instructions.
+//
+
+#if defined(_M_PPC) && defined(_MSC_VER) && (_MSC_VER>=1000)
+void __emit( unsigned const __int32 );
+#define __builtin_eieio() __emit( 0x7C0006AC )
+#define __builtin_sync() __emit( 0x7C0004AC )
+#define __builtin_isync() __emit( 0x4C00012C )
+#else
+void __builtin_eieio(void);
+void __builtin_sync(void);
+void __builtin_isync(void);
+#endif
+
+// end_ntddk end_nthal - Added to replace comment in the KPCR from ntmips.h
+
+//
+// Define address of data shared between user and kernel mode.
+//
+
+#define USER_SHARED_DATA ((KUSER_SHARED_DATA * const)0xFFFFE000)
+
+// begin_winnt
+
+//
+// The address of the TEB is placed into GPR 13 at context switch time
+// and should never be destroyed. To get the address of the TEB use
+// the compiler intrinsic to access it directly from GPR 13.
+//
+
+#if defined(_M_PPC) && defined(_MSC_VER) && (_MSC_VER>=1000)
+unsigned __gregister_get( unsigned const regnum );
+#define NtCurrentTeb() ((struct _TEB *)__gregister_get(13))
+#elif defined(_M_PPC)
+struct _TEB * __builtin_get_gpr13(VOID);
+#define NtCurrentTeb() ((struct _TEB *)__builtin_get_gpr13())
+#endif
+
+
+//
+// Define functions to get the address of the current fiber and the
+// current fiber data.
+//
+
+#define GetCurrentFiber() (((PNT_TIB)NtCurrentTeb())->FiberData)
+#define GetFiberData() (*(PVOID *)(GetCurrentFiber()))
+
+// begin_ntddk begin_nthal
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+
+#if !defined(RC_INVOKED)
+
+#define CONTEXT_CONTROL 0x00000001L
+#define CONTEXT_FLOATING_POINT 0x00000002L
+#define CONTEXT_INTEGER 0x00000004L
+#define CONTEXT_DEBUG_REGISTERS 0x00000008L
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+#endif
+
+//
+// Context Frame
+//
+// N.B. This frame must be exactly a multiple of 16 bytes in length.
+//
+// This frame has a several purposes: 1) it is used as an argument to
+// NtContinue, 2) it is used to constuct a call frame for APC delivery,
+// 3) it is used to construct a call frame for exception dispatching
+// in user mode, and 4) it is used in the user level thread creation
+// routines.
+//
+// Requires at least 8-byte alignment (double)
+//
+
+typedef struct _CONTEXT {
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+
+ double Fpr0; // Floating registers 0..31
+ double Fpr1;
+ double Fpr2;
+ double Fpr3;
+ double Fpr4;
+ double Fpr5;
+ double Fpr6;
+ double Fpr7;
+ double Fpr8;
+ double Fpr9;
+ double Fpr10;
+ double Fpr11;
+ double Fpr12;
+ double Fpr13;
+ double Fpr14;
+ double Fpr15;
+ double Fpr16;
+ double Fpr17;
+ double Fpr18;
+ double Fpr19;
+ double Fpr20;
+ double Fpr21;
+ double Fpr22;
+ double Fpr23;
+ double Fpr24;
+ double Fpr25;
+ double Fpr26;
+ double Fpr27;
+ double Fpr28;
+ double Fpr29;
+ double Fpr30;
+ double Fpr31;
+ double Fpscr; // Floating point status/control reg
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_INTEGER.
+ //
+
+ ULONG Gpr0; // General registers 0..31
+ ULONG Gpr1;
+ ULONG Gpr2;
+ ULONG Gpr3;
+ ULONG Gpr4;
+ ULONG Gpr5;
+ ULONG Gpr6;
+ ULONG Gpr7;
+ ULONG Gpr8;
+ ULONG Gpr9;
+ ULONG Gpr10;
+ ULONG Gpr11;
+ ULONG Gpr12;
+ ULONG Gpr13;
+ ULONG Gpr14;
+ ULONG Gpr15;
+ ULONG Gpr16;
+ ULONG Gpr17;
+ ULONG Gpr18;
+ ULONG Gpr19;
+ ULONG Gpr20;
+ ULONG Gpr21;
+ ULONG Gpr22;
+ ULONG Gpr23;
+ ULONG Gpr24;
+ ULONG Gpr25;
+ ULONG Gpr26;
+ ULONG Gpr27;
+ ULONG Gpr28;
+ ULONG Gpr29;
+ ULONG Gpr30;
+ ULONG Gpr31;
+
+ ULONG Cr; // Condition register
+ ULONG Xer; // Fixed point exception register
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_CONTROL.
+ //
+
+ ULONG Msr; // Machine status register
+ ULONG Iar; // Instruction address register
+ ULONG Lr; // Link register
+ ULONG Ctr; // Count register
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a thread's context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+
+ ULONG ContextFlags;
+
+ ULONG Fill[3]; // Pad out to multiple of 16 bytes
+
+ //
+ // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
+ // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
+ // included in CONTEXT_FULL.
+ //
+ ULONG Dr0; // Breakpoint Register 1
+ ULONG Dr1; // Breakpoint Register 2
+ ULONG Dr2; // Breakpoint Register 3
+ ULONG Dr3; // Breakpoint Register 4
+ ULONG Dr4; // Breakpoint Register 5
+ ULONG Dr5; // Breakpoint Register 6
+ ULONG Dr6; // Debug Status Register
+ ULONG Dr7; // Debug Control Register
+
+} CONTEXT, *PCONTEXT;
+
+// end_ntddk end_nthal
+
+
+//
+// Stack frame header
+//
+// Order of appearance in stack frame:
+// Header (six words)
+// Parameters (at least eight words)
+// Local variables
+// Saved GPRs
+// Saved FPRs
+//
+// Minimum alignment is 8 bytes
+
+typedef struct _STACK_FRAME_HEADER { // GPR 1 points here
+ ULONG BackChain; // Addr of previous frame
+ ULONG GlueSaved1; // Used by glue code
+ ULONG GlueSaved2;
+ ULONG Reserved1; // Reserved
+ ULONG Spare1; // Used by tracing, profiling, ...
+ ULONG Spare2;
+
+ ULONG Parameter0; // First 8 parameter words are
+ ULONG Parameter1; // always present
+ ULONG Parameter2;
+ ULONG Parameter3;
+ ULONG Parameter4;
+ ULONG Parameter5;
+ ULONG Parameter6;
+ ULONG Parameter7;
+
+} STACK_FRAME_HEADER,*PSTACK_FRAME_HEADER;
+
+// end_winnt
+
+
+#define CONTEXT_TO_PROGRAM_COUNTER(Context) ((Context)->Iar)
+
+#define CONTEXT_LENGTH (sizeof(CONTEXT))
+#define CONTEXT_ALIGN (sizeof(double))
+#define CONTEXT_ROUND (CONTEXT_ALIGN - 1)
+
+//
+// Nonvolatile context pointer record.
+//
+
+typedef struct _KNONVOLATILE_CONTEXT_POINTERS {
+ DOUBLE *FloatingContext[32];
+ PULONG FpscrContext;
+ PULONG IntegerContext[32];
+ PULONG CrContext;
+ PULONG XerContext;
+ PULONG MsrContext;
+ PULONG IarContext;
+ PULONG LrContext;
+ PULONG CtrContext;
+} KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS;
+
+// begin_nthal
+//
+// PowerPC special-purpose registers
+//
+
+//
+// Define Machine Status Register (MSR) fields
+//
+
+typedef struct _MSR {
+ ULONG LE : 1; // 31 Little-Endian execution mode
+ ULONG RI : 1; // 30 Recoverable Interrupt
+ ULONG Rsv1 : 2; // 29..28 reserved
+ ULONG DR : 1; // 27 Data Relocate
+ ULONG IR : 1; // 26 Instruction Relocate
+ ULONG IP : 1; // 25 Interrupt Prefix
+ ULONG Rsv2 : 1; // 24 reserved
+ ULONG FE1 : 1; // 23 Floating point Exception mode 1
+ ULONG BE : 1; // 22 Branch trace Enable
+ ULONG SE : 1; // 21 Single-step trace Enable
+ ULONG FE0 : 1; // 20 Floating point Exception mode 0
+ ULONG ME : 1; // 19 Machine check Enable
+ ULONG FP : 1; // 18 Floating Point available
+ ULONG PR : 1; // 17 Problem state
+ ULONG EE : 1; // 16 External interrupt Enable
+ ULONG ILE : 1; // 15 Interrupt Little-Endian mode
+ ULONG IMPL : 1; // 14 Implementation dependent
+ ULONG POW : 1; // 13 Power management enable
+ ULONG Rsv3 : 13; // 12..0 reserved
+} MSR, *PMSR;
+
+//
+// Define Processor Version Register (PVR) fields
+//
+
+typedef struct _PVR {
+ ULONG Revision : 16;
+ ULONG Version : 16;
+} PVR, *PPVR;
+
+// end_nthal
+
+// begin_nthal
+
+//
+// Define Condition Register (CR) fields
+//
+// We name the structure CondR rather than CR, so that a pointer
+// to a condition register structure is PCondR rather than PCR.
+// (PCR is an NT data structure, the Processor Control Region.)
+
+typedef struct _CondR {
+ ULONG CR7 : 4; // Eight 4-bit fields; machine numbers
+ ULONG CR6 : 4; // them in Big-Endian order
+ ULONG CR5 : 4;
+ ULONG CR4 : 4;
+ ULONG CR3 : 4;
+ ULONG CR2 : 4;
+ ULONG CR1 : 4;
+ ULONG CR0 : 4;
+} CondR, *PCondR;
+
+//
+// Define Fixed Point Exception Register (XER) fields
+//
+
+typedef struct _XER {
+ ULONG Rsv : 29; // 31..3 Reserved
+ ULONG CA : 1; // 2 Carry
+ ULONG OV : 1; // 1 Overflow
+ ULONG SO : 1; // 0 Summary Overflow
+} XER, *PXER;
+
+//
+// Define Floating Point Status/Control Register (FPSCR) fields
+//
+
+typedef struct _FPSCR {
+ ULONG RN : 2; // 31..30 Rounding control
+ ULONG NI : 1; // 29 Non-IEEE mode
+ ULONG XE : 1; // 28 Inexact exception Enable
+ ULONG ZE : 1; // 27 Zero divide exception Enable
+ ULONG UE : 1; // 26 Underflow exception Enable
+ ULONG OE : 1; // 25 Overflow exception Enable
+ ULONG VE : 1; // 24 Invalid operation exception Enable
+ ULONG VXCVI : 1; // 23 Invalid op exception (integer convert)
+ ULONG VXSQRT : 1; // 22 Invalid op exception (square root)
+ ULONG VXSOFT : 1; // 21 Invalid op exception (software request)
+ ULONG Res1 : 1; // 20 reserved
+ ULONG FU : 1; // 19 Result Unordered or NaN
+ ULONG FE : 1; // 18 Result Equal or zero
+ ULONG FG : 1; // 17 Result Greater than or positive
+ ULONG FL : 1; // 16 Result Less than or negative
+ ULONG C : 1; // 15 Result Class descriptor
+ ULONG FI : 1; // 14 Fraction Inexact
+ ULONG FR : 1; // 13 Fraction Rounded
+ ULONG VXVC : 1; // 12 Invalid op exception (compare)
+ ULONG VXIMZ : 1; // 11 Invalid op exception (infinity * 0)
+ ULONG VXZDZ : 1; // 10 Invalid op exception (0 / 0)
+ ULONG VXIDI : 1; // 9 Invalid op exception (infinity / infinity)
+ ULONG VXISI : 1; // 8 Invalid op exception (infinity - infinity)
+ ULONG VXSNAN : 1; // 7 Invalid op exception (signalling NaN)
+ ULONG XX : 1; // 6 Inexact exception
+ ULONG ZX : 1; // 5 Zero divide exception
+ ULONG UX : 1; // 4 Underflow exception
+ ULONG OX : 1; // 3 Overflow exception
+ ULONG VX : 1; // 2 Invalid operation exception summary
+ ULONG FEX : 1; // 1 Enabled Exception summary
+ ULONG FX : 1; // 0 Exception summary
+} FPSCR, *PFPSCR;
+
+// end_nthal
+
+// begin_nthal
+//
+// Define address space layout as defined by PowerPC memory management.
+//
+// The names come from MIPS hardwired virtual to first 512MB real.
+// We use these values to define the size of the PowerPC kernel BAT.
+// Must coordinate with values in ../private/mm/ppc/mippc.h.
+// This is 8MB on the PowerPC 601; may be larger for other models.
+//
+//
+
+#define KUSEG_BASE 0x0 // base of user segment
+#define KSEG0_BASE 0x80000000 // base of kernel BAT
+#define KSEG1_BASE PCR->Kseg0Top // end of kernel BAT
+#define KSEG2_BASE KSEG1_BASE // end of kernel BAT
+
+//
+// A valid Page Table Entry has the following definition
+//
+
+typedef struct _HARDWARE_PTE {
+ ULONG Dirty : 2;
+ ULONG Valid : 1; // software
+ ULONG GuardedStorage : 1;
+ ULONG MemoryCoherence : 1;
+ ULONG CacheDisable : 1;
+ ULONG WriteThrough : 1;
+ ULONG Change : 1;
+ ULONG Reference : 1;
+ ULONG Write : 1; // software
+ ULONG CopyOnWrite : 1; // software
+ ULONG rsvd1 : 1;
+ ULONG PageFrameNumber : 20;
+} HARDWARE_PTE, *PHARDWARE_PTE;
+
+#define HARDWARE_PTE_DIRTY_MASK 0x3
+
+// end_nthal
+
+
+//
+// Define PowerPC exception handling structures and function prototypes.
+//
+// These are adopted without change from the MIPS implementation.
+//
+
+//
+// Function table entry structure definition.
+//
+
+typedef struct _RUNTIME_FUNCTION {
+ ULONG BeginAddress;
+ ULONG EndAddress;
+ PEXCEPTION_ROUTINE ExceptionHandler;
+ PVOID HandlerData;
+ ULONG PrologEndAddress;
+} RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
+
+//
+// Scope table structure definition.
+//
+
+typedef struct _SCOPE_TABLE {
+ ULONG Count;
+ struct
+ {
+ ULONG BeginAddress;
+ ULONG EndAddress;
+ ULONG HandlerAddress;
+ ULONG JumpTarget;
+ } ScopeRecord[1];
+} SCOPE_TABLE, *PSCOPE_TABLE;
+
+//
+// Runtime Library function prototypes.
+//
+
+VOID
+RtlCaptureContext (
+ OUT PCONTEXT ContextRecord
+ );
+
+PRUNTIME_FUNCTION
+RtlLookupFunctionEntry (
+ IN ULONG ControlPc
+ );
+
+ULONG
+RtlVirtualUnwind (
+ IN ULONG ControlPc,
+ IN PRUNTIME_FUNCTION FunctionEntry,
+ IN OUT PCONTEXT ContextRecord,
+ OUT PBOOLEAN InFunction,
+ OUT PULONG EstablisherFrame,
+ IN OUT PKNONVOLATILE_CONTEXT_POINTERS ContextPointers OPTIONAL,
+ IN ULONG LowStackLimit,
+ IN ULONG HighStackLimit
+ );
+
+//
+// Define C structured exception handing function prototypes.
+//
+
+typedef struct _DISPATCHER_CONTEXT {
+ ULONG ControlPc;
+ PRUNTIME_FUNCTION FunctionEntry;
+ ULONG EstablisherFrame;
+ PCONTEXT ContextRecord;
+} DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT;
+
+
+struct _EXCEPTION_POINTERS;
+
+typedef
+LONG
+(*EXCEPTION_FILTER) (
+ struct _EXCEPTION_POINTERS *ExceptionPointers
+ );
+
+typedef
+VOID
+(*TERMINATION_HANDLER) (
+ BOOLEAN is_abnormal
+ );
+
+// **FINISH** This may need alteration for PowerPC
+// begin_winnt
+
+VOID
+__jump_unwind (
+ PVOID Fp,
+ PVOID TargetPc
+ );
+
+// end_winnt
+
+// begin_ntddk begin_nthal begin_windbgkd begin_winnt
+#endif // defined(_PPC_)
+// end_ntddk end_nthal end_windbgkd end_winnt
+
+#endif // _NTPPC_
+
diff --git a/public/sdk/inc/ntprfctr.h b/public/sdk/inc/ntprfctr.h
new file mode 100644
index 000000000..0a476e527
--- /dev/null
+++ b/public/sdk/inc/ntprfctr.h
@@ -0,0 +1,130 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1992 Microsoft Corporation
+
+Module Name:
+
+ ntprfctr.h
+
+Abstract:
+
+ Contains symbolic definitions of the "Standard" Perfmon Counter Objects
+ These are the integer and unicode string values used in the registry to
+ locate and identify counter titles and help text.
+
+Author:
+
+ Bob Watson (a-robw) 16 Nov 92
+
+Revision History:
+
+
+--*/
+#ifndef _NTPRFCTR_H_
+#define _NTPRFCTR_H_
+//
+// These values correspond to the values assigned to these object titles
+// in the registry
+//
+#define NULL_OBJECT_TITLE_INDEX 0
+
+#define SYSTEM_OBJECT_TITLE_INDEX 2
+#define PROCESSOR_OBJECT_TITLE_INDEX 238
+#define MEMORY_OBJECT_TITLE_INDEX 4
+#define CACHE_OBJECT_TITLE_INDEX 86
+#define PHYSICAL_DISK_OBJECT_TITLE_INDEX 234
+#define LOGICAL_DISK_OBJECT_TITLE_INDEX 236
+#define PROCESS_OBJECT_TITLE_INDEX 230
+#define THREAD_OBJECT_TITLE_INDEX 232
+#define OBJECT_OBJECT_TITLE_INDEX 260
+#define REDIRECTOR_OBJECT_TITLE_INDEX 262
+#define SERVER_OBJECT_TITLE_INDEX 330
+#define SERVER_QUEUE_OBJECT_TITLE_INDEX 1300
+#define PAGEFILE_OBJECT_TITLE_INDEX 700
+#define BROWSER_OBJECT_TITLE_INDEX 52
+//
+// The number of "standard" object types
+//
+#define NT_NUM_PERF_OBJECT_TYPES 14
+//
+// Costly Items
+//
+#define EXPROCESS_OBJECT_TITLE_INDEX 786
+#define IMAGE_OBJECT_TITLE_INDEX 740
+#define THREAD_DETAILS_OBJECT_TITLE_INDEX 816
+#define LONG_IMAGE_OBJECT_TITLE_INDEX 1408
+
+#define NT_NUM_COSTLY_OBJECT_TYPES 4
+
+#define EXTENSIBLE_OBJECT_INDEX 0xFFFFFFFF
+
+//
+// Microsoft provided extensible counters
+//
+// these have to match the titles in PERFCTRS.INI (they don't do it
+// by themselves, unfortunately!
+
+#define TCP_OBJECT_TITLE_INDEX 638
+#define UDP_OBJECT_TITLE_INDEX 658
+#define IP_OBJECT_TITLE_INDEX 546
+#define ICMP_OBJECT_TITLE_INDEX 582
+#define NET_OBJECT_TITLE_INDEX 510
+
+#define NBT_OBJECT_TITLE_INDEX 502
+
+#define NBF_OBJECT_TITLE_INDEX 492
+#define NBF_RESOURCE_OBJECT_TITLE_INDEX 494
+
+//
+// Microsoft extensible counters for other components that are included
+// in the Daytona system.
+//
+#define FTP_FIRST_COUNTER_INDEX 824
+#define FTP_FIRST_HELP_INDEX 825
+#define FTP_LAST_COUNTER_INDEX 856
+#define FTP_LAST_HELP_INDEX 857
+
+#define RAS_FIRST_COUNTER_INDEX 870
+#define RAS_FIRST_HELP_INDEX 871
+#define RAS_LAST_COUNTER_INDEX 908
+#define RAS_LAST_HELP_INDEX 909
+
+#define WIN_FIRST_COUNTER_INDEX 920
+#define WIN_FIRST_HELP_INDEX 921
+#define WIN_LAST_COUNTER_INDEX 950
+#define WIN_LAST_HELP_INDEX 951
+
+#define SFM_FIRST_COUNTER_INDEX 1000
+#define SFM_FIRST_HELP_INDEX 1001
+#define SFM_LAST_COUNTER_INDEX 1034
+#define SFM_LAST_HELP_INDEX 1035
+
+#define ATK_FIRST_COUNTER_INDEX 1050
+#define ATK_FIRST_HELP_INDEX 1051
+#define ATK_LAST_COUNTER_INDEX 1102
+#define ATK_LAST_HELP_INDEX 1103
+
+#define BH_FIRST_COUNTER_INDEX 1110
+#define BH_FIRST_HELP_INDEX 1111
+#define BH_LAST_COUNTER_INDEX 1126
+#define BH_LAST_HELP_INDEX 1127
+
+#define TAPI_FIRST_COUNTER_INDEX 1150
+#define TAPI_FIRST_HELP_INDEX 1151
+#define TAPI_LAST_COUNTER_INDEX 1178
+#define TAPI_LAST_HELP_INDEX 1179
+
+// NetWare counters have different Object indexes depending
+// on whether the system is a Workstation or a Server.
+// The rest of the counter indexes are the same (from 1232 to 1247)
+#define NWCS_GATEWAY_COUNTER_INDEX 1228
+#define NWCS_GATEWAY_HELP_INDEX 1229
+#define NWCS_CLIENT_COUNTER_INDEX 1230
+#define NWCS_CLIENT_HELP_INDEX 1231
+#define NWCS_FIRST_COUNTER_INDEX 1230
+#define NWCS_FIRST_HELP_INDEX 1231
+#define NWCS_LAST_COUNTER_INDEX 1246
+#define NWCS_LAST_HELP_INDEX 1247
+
+#endif //_NTPRFCTR_H_
+
diff --git a/public/sdk/inc/ntpsapi.h b/public/sdk/inc/ntpsapi.h
new file mode 100644
index 000000000..13d38732a
--- /dev/null
+++ b/public/sdk/inc/ntpsapi.h
@@ -0,0 +1,918 @@
+/*++ BUILD Version: 0007 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntpsapi.h
+
+Abstract:
+
+ This module contains the process structure APIs and any public data
+ structures needed to call these APIs.
+
+Author:
+
+ Mark Lucovsky (markl) 24-Feb-1989
+
+Revision History:
+
+--*/
+
+#ifndef _NTPSAPI_
+#define _NTPSAPI_
+
+//
+// Process Specific Access Rights
+//
+
+#define PROCESS_TERMINATE (0x0001) // winnt
+#define PROCESS_CREATE_THREAD (0x0002) // winnt
+#define PROCESS_VM_OPERATION (0x0008) // winnt
+#define PROCESS_VM_READ (0x0010) // winnt
+#define PROCESS_VM_WRITE (0x0020) // winnt
+// begin_ntddk
+#define PROCESS_DUP_HANDLE (0x0040) // winnt
+// end_ntddk
+#define PROCESS_CREATE_PROCESS (0x0080) // winnt
+#define PROCESS_SET_QUOTA (0x0100) // winnt
+#define PROCESS_SET_INFORMATION (0x0200) // winnt
+#define PROCESS_QUERY_INFORMATION (0x0400) // winnt
+#define PROCESS_SET_PORT (0x0800)
+// begin_winnt begin_ntddk
+#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
+ 0xFFF)
+
+
+#define MAXIMUM_PROCESSORS 32
+
+// end_winnt
+
+//
+// Thread Specific Access Rights
+//
+
+#define THREAD_TERMINATE (0x0001) // winnt
+// end_ntddk
+#define THREAD_SUSPEND_RESUME (0x0002) // winnt
+#define THREAD_ALERT (0x0004)
+#define THREAD_GET_CONTEXT (0x0008) // winnt
+#define THREAD_SET_CONTEXT (0x0010) // winnt
+// begin_ntddk
+#define THREAD_SET_INFORMATION (0x0020) // winnt
+// end_ntddk
+#define THREAD_QUERY_INFORMATION (0x0040) // winnt
+// begin_winnt
+#define THREAD_SET_THREAD_TOKEN (0x0080)
+#define THREAD_IMPERSONATE (0x0100)
+#define THREAD_DIRECT_IMPERSONATION (0x0200)
+// begin_ntddk
+
+#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
+ 0x3FF)
+
+// end_ntddk
+// end_winnt
+
+//
+// Process Environment Block
+//
+
+typedef struct _PEB_LDR_DATA {
+ ULONG Length;
+ BOOLEAN Initialized;
+ HANDLE SsHandle;
+ LIST_ENTRY InLoadOrderModuleList;
+ LIST_ENTRY InMemoryOrderModuleList;
+ LIST_ENTRY InInitializationOrderModuleList;
+} PEB_LDR_DATA, *PPEB_LDR_DATA;
+
+//
+// Handle tag bits for Peb Stdio File Handles
+//
+
+#define PEB_STDIO_HANDLE_NATIVE 0
+#define PEB_STDIO_HANDLE_SUBSYS 1
+#define PEB_STDIO_HANDLE_PM 2
+#define PEB_STDIO_HANDLE_RESERVED 3
+
+#define GDI_HANDLE_BUFFER_SIZE 34
+
+#define FOREGROUND_BASE_PRIORITY 9
+#define NORMAL_BASE_PRIORITY 8
+
+typedef struct _PEB_FREE_BLOCK {
+ struct _PEB_FREE_BLOCK *Next;
+ ULONG Size;
+} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
+
+// begin_ntddk begin_nthal
+//
+// ClientId
+//
+
+typedef struct _CLIENT_ID {
+ HANDLE UniqueProcess;
+ HANDLE UniqueThread;
+} CLIENT_ID;
+typedef CLIENT_ID *PCLIENT_ID;
+
+// end_ntddk end_nthal
+#define TLS_MINIMUM_AVAILABLE 64 // winnt
+
+typedef struct _PEB {
+ BOOLEAN InheritedAddressSpace; // These four fields cannot change unless the
+ BOOLEAN ReadImageFileExecOptions; //
+ BOOLEAN BeingDebugged; //
+ BOOLEAN SpareBool; //
+ HANDLE Mutant; // INITIAL_PEB structure is also updated.
+
+ PVOID ImageBaseAddress;
+ PPEB_LDR_DATA Ldr;
+ struct _RTL_USER_PROCESS_PARAMETERS *ProcessParameters;
+ PVOID SubSystemData;
+ PVOID ProcessHeap;
+ PVOID FastPebLock;
+ PVOID FastPebLockRoutine;
+ PVOID FastPebUnlockRoutine;
+ ULONG EnvironmentUpdateCount;
+ PVOID KernelCallbackTable;
+ HANDLE EventLogSection;
+ PVOID EventLog;
+ PPEB_FREE_BLOCK FreeList;
+ ULONG TlsExpansionCounter;
+ PVOID TlsBitmap;
+ ULONG TlsBitmapBits[2]; // relates to TLS_MINIMUM_AVAILABLE
+ PVOID ReadOnlySharedMemoryBase;
+ PVOID ReadOnlySharedMemoryHeap;
+ PVOID *ReadOnlyStaticServerData;
+ PVOID AnsiCodePageData;
+ PVOID OemCodePageData;
+ PVOID UnicodeCaseTableData;
+
+ //
+ // Useful information for LdrpInitialize
+ ULONG NumberOfProcessors;
+ ULONG NtGlobalFlag;
+
+ //
+ // Passed up from MmCreatePeb from Session Manager registry key
+ //
+
+ LARGE_INTEGER CriticalSectionTimeout;
+ ULONG HeapSegmentReserve;
+ ULONG HeapSegmentCommit;
+ ULONG HeapDeCommitTotalFreeThreshold;
+ ULONG HeapDeCommitFreeBlockThreshold;
+
+ //
+ // Where heap manager keeps track of all heaps created for a process
+ // Fields initialized by MmCreatePeb. ProcessHeaps is initialized
+ // to point to the first free byte after the PEB and MaximumNumberOfHeaps
+ // is computed from the page size used to hold the PEB, less the fixed
+ // size of this data structure.
+ //
+
+ ULONG NumberOfHeaps;
+ ULONG MaximumNumberOfHeaps;
+ PVOID *ProcessHeaps;
+
+ //
+ //
+ PVOID GdiSharedHandleTable;
+ PVOID ProcessStarterHelper;
+ PVOID GdiDCAttributeList;
+ PVOID LoaderLock;
+
+ //
+ // Following fields filled in by MmCreatePeb from system values and/or
+ // image header.
+ //
+
+ ULONG OSMajorVersion;
+ ULONG OSMinorVersion;
+ ULONG OSBuildNumber;
+ ULONG OSPlatformId;
+ ULONG ImageSubsystem;
+ ULONG ImageSubsystemMajorVersion;
+ ULONG ImageSubsystemMinorVersion;
+ ULONG ImageProcessAffinityMask;
+ ULONG GdiHandleBuffer[GDI_HANDLE_BUFFER_SIZE];
+} PEB, *PPEB;
+
+// begin_nthal begin_ntddk
+//
+// Thread Environment Block (and portable part of Thread Information Block)
+//
+
+//
+// NT_TIB - Thread Information Block - Portable part.
+//
+// This is the subsystem portable part of the Thread Information Block.
+// It appears as the first part of the TEB for all threads which have
+// a user mode component.
+//
+// This structure MUST MATCH OS/2 V2.0!
+//
+// There is another, non-portable part of the TIB which is used
+// for by subsystems, i.e. Os2Tib for OS/2 threads. SubSystemTib
+// points there.
+//
+
+// begin_winnt
+
+typedef struct _NT_TIB {
+ struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+ PVOID StackBase;
+ PVOID StackLimit;
+ PVOID SubSystemTib;
+ union {
+ PVOID FiberData;
+ ULONG Version;
+ };
+ PVOID ArbitraryUserPointer;
+ struct _NT_TIB *Self;
+} NT_TIB;
+typedef NT_TIB *PNT_TIB;
+// end_nthal end_ntddk end_winnt
+
+//
+// Gdi command batching
+//
+
+#define GDI_BATCH_BUFFER_SIZE 310
+
+typedef struct _GDI_TEB_BATCH {
+ ULONG Offset;
+ ULONG HDC;
+ ULONG Buffer[GDI_BATCH_BUFFER_SIZE];
+} GDI_TEB_BATCH,*PGDI_TEB_BATCH;
+
+//
+// TEB - The thread environment block
+//
+
+#define STATIC_UNICODE_BUFFER_LENGTH 261
+#define WIN32_CLIENT_INFO_LENGTH 31
+#define WIN32_CLIENT_INFO_SPIN_COUNT 1
+
+typedef struct _TEB {
+ NT_TIB NtTib;
+ PVOID EnvironmentPointer;
+ CLIENT_ID ClientId;
+ PVOID ActiveRpcHandle;
+ PVOID ThreadLocalStoragePointer;
+ PPEB ProcessEnvironmentBlock;
+ ULONG LastErrorValue;
+ ULONG CountOfOwnedCriticalSections;
+ PVOID CsrClientThread;
+ PVOID Win32ThreadInfo; // PtiCurrent
+ ULONG Win32ClientInfo[WIN32_CLIENT_INFO_LENGTH]; // User32 Client Info
+ PVOID WOW32Reserved; // used by WOW
+ LCID CurrentLocale;
+ ULONG FpSoftwareStatusRegister;
+ PVOID SystemReserved1[54]; // Used by FP emulator
+ PVOID Spare1; // unused
+ NTSTATUS ExceptionCode; // for RaiseUserException
+ UCHAR SpareBytes1[40];
+ PVOID SystemReserved2[10]; // Used by user/console for temp obja
+ GDI_TEB_BATCH GdiTebBatch; // Gdi batching
+ ULONG gdiRgn;
+ ULONG gdiPen;
+ ULONG gdiBrush;
+ CLIENT_ID RealClientId;
+ HANDLE GdiCachedProcessHandle;
+ ULONG GdiClientPID;
+ ULONG GdiClientTID;
+ PVOID GdiThreadLocalInfo;
+ PVOID UserReserved[5]; // unused
+ PVOID glDispatchTable[280]; // OpenGL
+ ULONG glReserved1[26]; // OpenGL
+ PVOID glReserved2; // OpenGL
+ PVOID glSectionInfo; // OpenGL
+ PVOID glSection; // OpenGL
+ PVOID glTable; // OpenGL
+ PVOID glCurrentRC; // OpenGL
+ PVOID glContext; // OpenGL
+ ULONG LastStatusValue;
+ UNICODE_STRING StaticUnicodeString;
+ WCHAR StaticUnicodeBuffer[STATIC_UNICODE_BUFFER_LENGTH];
+ PVOID DeallocationStack;
+ PVOID TlsSlots[TLS_MINIMUM_AVAILABLE];
+ LIST_ENTRY TlsLinks;
+ PVOID Vdm;
+ PVOID ReservedForNtRpc;
+ PVOID DbgSsReserved[2];
+ ULONG HardErrorsAreDisabled;
+ PVOID Instrumentation[16];
+ PVOID WinSockData; // WinSock
+ ULONG GdiBatchCount;
+ ULONG Spare2;
+ ULONG Spare3;
+ ULONG Spare4;
+ PVOID ReservedForOle;
+ ULONG WaitingOnLoaderLock;
+} TEB;
+typedef TEB *PTEB;
+
+
+
+#if !defined(_X86_)
+#define Wx86CurrentTib() ( \
+ NtCurrentTeb()->Vdm && \
+ ((PWX86TIB)NtCurrentTeb()->Vdm)->Size == sizeof(WX86TIB) \
+ ? (PWX86TIB)NtCurrentTeb()->Vdm : NULL \
+ )
+
+#define WX86
+
+//
+// Exception Registration structure
+//
+// X86 Call frame record definition, normally defined in nti386.h
+// which is not included on risc.
+//
+
+typedef struct _EXCEPTION_REGISTRATION_RECORD {
+ struct _EXCEPTION_REGISTRATION_RECORD *Next;
+ PEXCEPTION_ROUTINE Handler;
+} EXCEPTION_REGISTRATION_RECORD;
+
+typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD;
+
+#else
+#define Wx86CurrentTib() (NULL)
+#endif
+
+typedef struct _Wx86TIB {
+ ULONG Size;
+ ULONG InitialPc;
+ PVOID StackBase;
+ PVOID StackLimit;
+ PVOID DeallocationStack;
+ ULONG LogFlags;
+ PULONG CallBx86Eip;
+ ULONG InitialSp;
+ BOOLEAN UseKnownWx86Dll;
+ BOOLEAN EmulateInitialPc;
+ BOOLEAN InCpuSimulation;
+ UCHAR SimulationCount;
+ BOOLEAN OleStubInvoked;
+ BOOLEAN Initialized;
+ PEXCEPTION_REGISTRATION_RECORD ExceptionList;
+ PVOID CpuContext;
+ PCONTEXT InitialExceptionContext;
+} WX86TIB, *PWX86TIB;
+
+
+
+
+
+
+
+
+
+#define EXCEPTION_CHAIN_END ((struct _EXCEPTION_REGISTRATION_RECORD *)-1)
+
+//
+// The version number of OS2
+//
+
+// BUGBUG shielint The version number is temporay.
+
+#define MAJOR_VERSION 30 // Cruiser uses 20 (not 20H)
+#define MINOR_VERSION 00
+#define OS2_VERSION (MAJOR_VERSION << 8 | MINOR_VERSION )
+
+#if DBG
+//
+// Reserve the last 9 SystemReserved pointers for debugging
+//
+#define DBG_TEB_THREADNAME 16
+#define DBG_TEB_RESERVED_1 15
+#define DBG_TEB_RESERVED_2 14
+#define DBG_TEB_RESERVED_3 13
+#define DBG_TEB_RESERVED_4 12
+#define DBG_TEB_RESERVED_5 11
+#define DBG_TEB_RESERVED_6 10
+#define DBG_TEB_RESERVED_7 9
+#define DBG_TEB_RESERVED_8 8
+#endif // DBG
+
+typedef struct _INITIAL_TEB {
+ struct {
+ PVOID OldStackBase;
+ PVOID OldStackLimit;
+ } OldInitialTeb;
+ PVOID StackBase;
+ PVOID StackLimit;
+ PVOID StackAllocationBase;
+} INITIAL_TEB, *PINITIAL_TEB;
+
+#define PROCESS_PRIORITY_CLASS_UNKNOWN 0
+#define PROCESS_PRIORITY_CLASS_IDLE 1
+#define PROCESS_PRIORITY_CLASS_NORMAL 2
+#define PROCESS_PRIORITY_CLASS_HIGH 3
+#define PROCESS_PRIORITY_CLASS_REALTIME 4
+
+typedef struct _PROCESS_PRIORITY_CLASS {
+ BOOLEAN Foreground;
+ UCHAR PriorityClass;
+} PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS;
+
+
+// begin_ntddk
+//
+// Process Information Classes
+//
+
+typedef enum _PROCESSINFOCLASS {
+ ProcessBasicInformation,
+ ProcessQuotaLimits,
+ ProcessIoCounters,
+ ProcessVmCounters,
+ ProcessTimes,
+ ProcessBasePriority,
+ ProcessRaisePriority,
+ ProcessDebugPort,
+ ProcessExceptionPort,
+ ProcessAccessToken,
+ ProcessLdtInformation,
+ ProcessLdtSize,
+ ProcessDefaultHardErrorMode,
+ ProcessIoPortHandlers, // Note: this is kernel mode only
+ ProcessPooledUsageAndLimits,
+ ProcessWorkingSetWatch,
+ ProcessUserModeIOPL,
+ ProcessEnableAlignmentFaultFixup,
+ ProcessPriorityClass,
+ ProcessWx86Information,
+ ProcessHandleCount,
+ ProcessAffinityMask,
+ ProcessPriorityBoost,
+ MaxProcessInfoClass
+ } PROCESSINFOCLASS;
+// end_ntddk
+
+//
+// Thread Information Classes
+//
+// begin_ntddk
+
+typedef enum _THREADINFOCLASS {
+ ThreadBasicInformation,
+ ThreadTimes,
+ ThreadPriority,
+ ThreadBasePriority,
+ ThreadAffinityMask,
+ ThreadImpersonationToken,
+ ThreadDescriptorTableEntry,
+ ThreadEnableAlignmentFaultFixup,
+ ThreadEventPair,
+ ThreadQuerySetWin32StartAddress,
+ ThreadZeroTlsCell,
+ ThreadPerformanceCount,
+ ThreadAmILastThread,
+ ThreadIdealProcessor,
+ ThreadPriorityBoost,
+ ThreadSetTlsArrayAddress,
+ MaxThreadInfoClass
+ } THREADINFOCLASS;
+// end_ntddk
+
+#define PROCESS_HARDERROR_ALIGNMENT_BIT 0x0004 // from winbase.h, but not tagged
+
+//
+// thread base priority ranges
+//
+// begin_winnt
+#define THREAD_BASE_PRIORITY_LOWRT 15 // value that gets a thread to LowRealtime-1
+#define THREAD_BASE_PRIORITY_MAX 2 // maximum thread base priority boost
+#define THREAD_BASE_PRIORITY_MIN -2 // minimum thread base priority boost
+#define THREAD_BASE_PRIORITY_IDLE -15 // value that gets a thread to idle
+// end_winnt
+
+// begin_ntddk
+//
+// Process Information Structures
+//
+
+//
+// PageFaultHistory Information
+// NtQueryInformationProcess using ProcessWorkingSetWatch
+//
+typedef struct _PROCESS_WS_WATCH_INFORMATION {
+ PVOID FaultingPc;
+ PVOID FaultingVa;
+} PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION;
+
+//
+// Basic Process Information
+// NtQueryInformationProcess using ProcessBasicInfo
+//
+
+typedef struct _PROCESS_BASIC_INFORMATION {
+ NTSTATUS ExitStatus;
+ PPEB PebBaseAddress;
+ KAFFINITY AffinityMask;
+ KPRIORITY BasePriority;
+ ULONG UniqueProcessId;
+ ULONG InheritedFromUniqueProcessId;
+} PROCESS_BASIC_INFORMATION;
+typedef PROCESS_BASIC_INFORMATION *PPROCESS_BASIC_INFORMATION;
+
+//
+// Process Quotas
+// NtQueryInformationProcess using ProcessQuotaLimits
+// NtQueryInformationProcess using ProcessPooledQuotaLimits
+// NtSetInformationProcess using ProcessQuotaLimits
+//
+
+// begin_winnt
+
+typedef struct _QUOTA_LIMITS {
+ ULONG PagedPoolLimit;
+ ULONG NonPagedPoolLimit;
+ ULONG MinimumWorkingSetSize;
+ ULONG MaximumWorkingSetSize;
+ ULONG PagefileLimit;
+ LARGE_INTEGER TimeLimit;
+} QUOTA_LIMITS;
+typedef QUOTA_LIMITS *PQUOTA_LIMITS;
+
+// end_winnt
+
+//
+// Process I/O Counters
+// NtQueryInformationProcess using ProcessIoCounters
+//
+
+typedef struct _IO_COUNTERS {
+ ULONG ReadOperationCount;
+ ULONG WriteOperationCount;
+ ULONG OtherOperationCount;
+ LARGE_INTEGER ReadTransferCount;
+ LARGE_INTEGER WriteTransferCount;
+ LARGE_INTEGER OtherTransferCount;
+} IO_COUNTERS;
+typedef IO_COUNTERS *PIO_COUNTERS;
+
+//
+// Process Virtual Memory Counters
+// NtQueryInformationProcess using ProcessVmCounters
+//
+
+typedef struct _VM_COUNTERS {
+ ULONG PeakVirtualSize;
+ ULONG VirtualSize;
+ ULONG PageFaultCount;
+ ULONG PeakWorkingSetSize;
+ ULONG WorkingSetSize;
+ ULONG QuotaPeakPagedPoolUsage;
+ ULONG QuotaPagedPoolUsage;
+ ULONG QuotaPeakNonPagedPoolUsage;
+ ULONG QuotaNonPagedPoolUsage;
+ ULONG PagefileUsage;
+ ULONG PeakPagefileUsage;
+} VM_COUNTERS;
+typedef VM_COUNTERS *PVM_COUNTERS;
+
+//
+// Process Pooled Quota Usage and Limits
+// NtQueryInformationProcess using ProcessPooledUsageAndLimits
+//
+
+typedef struct _POOLED_USAGE_AND_LIMITS {
+ ULONG PeakPagedPoolUsage;
+ ULONG PagedPoolUsage;
+ ULONG PagedPoolLimit;
+ ULONG PeakNonPagedPoolUsage;
+ ULONG NonPagedPoolUsage;
+ ULONG NonPagedPoolLimit;
+ ULONG PeakPagefileUsage;
+ ULONG PagefileUsage;
+ ULONG PagefileLimit;
+} POOLED_USAGE_AND_LIMITS;
+typedef POOLED_USAGE_AND_LIMITS *PPOOLED_USAGE_AND_LIMITS;
+
+//
+// Process Security Context Information
+// NtSetInformationProcess using ProcessAccessToken
+// PROCESS_SET_ACCESS_TOKEN access to the process is needed
+// to use this info level.
+//
+
+typedef struct _PROCESS_ACCESS_TOKEN {
+
+ //
+ // Handle to Primary token to assign to the process.
+ // TOKEN_ASSIGN_PRIMARY access to this token is needed.
+ //
+
+ HANDLE Token;
+
+ //
+ // Handle to the initial thread of the process.
+ // A process's access token can only be changed if the process has
+ // no threads or one thread. If the process has no threads, this
+ // field must be set to NULL. Otherwise, it must contain a handle
+ // open to the process's only thread. THREAD_QUERY_INFORMATION access
+ // is needed via this handle.
+
+ HANDLE Thread;
+
+} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN;
+
+//
+// Process/Thread System and User Time
+// NtQueryInformationProcess using ProcessTimes
+// NtQueryInformationThread using ThreadTimes
+//
+
+typedef struct _KERNEL_USER_TIMES {
+ LARGE_INTEGER CreateTime;
+ LARGE_INTEGER ExitTime;
+ LARGE_INTEGER KernelTime;
+ LARGE_INTEGER UserTime;
+} KERNEL_USER_TIMES;
+typedef KERNEL_USER_TIMES *PKERNEL_USER_TIMES;
+// end_ntddk
+
+//
+// Thread Information Structures
+//
+
+//
+// Basic Thread Information
+// NtQueryInformationThread using ThreadBasicInfo
+//
+
+typedef struct _THREAD_BASIC_INFORMATION {
+ NTSTATUS ExitStatus;
+ PTEB TebBaseAddress;
+ CLIENT_ID ClientId;
+ KAFFINITY AffinityMask;
+ KPRIORITY Priority;
+ LONG BasePriority;
+} THREAD_BASIC_INFORMATION;
+typedef THREAD_BASIC_INFORMATION *PTHREAD_BASIC_INFORMATION;
+
+typedef struct _FIBER {
+
+ PVOID FiberData;
+
+ //
+ // Matches first three DWORDs of TEB
+ //
+
+ struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+ PVOID StackBase;
+ PVOID StackLimit;
+
+ //
+ // Used by base to free a thread's stack
+ //
+
+ PVOID DeallocationStack;
+
+ CONTEXT FiberContext;
+
+} FIBER, *PFIBER;
+
+//
+//
+// Process Object APIs
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateProcess(
+ OUT PHANDLE ProcessHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN HANDLE ParentProcess,
+ IN BOOLEAN InheritObjectTable,
+ IN HANDLE SectionHandle OPTIONAL,
+ IN HANDLE DebugPort OPTIONAL,
+ IN HANDLE ExceptionPort OPTIONAL
+ );
+
+// begin_ntddk
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenProcess (
+ OUT PHANDLE ProcessHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN PCLIENT_ID ClientId OPTIONAL
+ );
+// end_ntddk
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtTerminateProcess(
+ IN HANDLE ProcessHandle OPTIONAL,
+ IN NTSTATUS ExitStatus
+ );
+
+
+// begin_ntddk
+#define NtCurrentProcess() ( (HANDLE) -1 )
+
+// end_ntddk
+
+#define NtCurrentPeb() (NtCurrentTeb()->ProcessEnvironmentBlock)
+
+// begin_ntddk
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationProcess(
+ IN HANDLE ProcessHandle,
+ IN PROCESSINFOCLASS ProcessInformationClass,
+ OUT PVOID ProcessInformation,
+ IN ULONG ProcessInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+// end_ntddk
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetInformationProcess(
+ IN HANDLE ProcessHandle,
+ IN PROCESSINFOCLASS ProcessInformationClass,
+ IN PVOID ProcessInformation,
+ IN ULONG ProcessInformationLength
+ );
+
+//
+// Thread Object APIs
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateThread(
+ OUT PHANDLE ThreadHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN HANDLE ProcessHandle,
+ OUT PCLIENT_ID ClientId,
+ IN PCONTEXT ThreadContext,
+ IN PINITIAL_TEB InitialTeb,
+ IN BOOLEAN CreateSuspended
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenThread (
+ OUT PHANDLE ThreadHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN PCLIENT_ID ClientId OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtTerminateThread(
+ IN HANDLE ThreadHandle OPTIONAL,
+ IN NTSTATUS ExitStatus
+ );
+
+// begin_ntddk
+#define NtCurrentThread() ( (HANDLE) -2 )
+
+// end_ntddk
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSuspendThread(
+ IN HANDLE ThreadHandle,
+ OUT PULONG PreviousSuspendCount OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtResumeThread(
+ IN HANDLE ThreadHandle,
+ OUT PULONG PreviousSuspendCount OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtGetContextThread(
+ IN HANDLE ThreadHandle,
+ IN OUT PCONTEXT ThreadContext
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetContextThread(
+ IN HANDLE ThreadHandle,
+ IN PCONTEXT ThreadContext
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationThread(
+ IN HANDLE ThreadHandle,
+ IN THREADINFOCLASS ThreadInformationClass,
+ OUT PVOID ThreadInformation,
+ IN ULONG ThreadInformationLength,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+// begin_ntsrv
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetInformationThread(
+ IN HANDLE ThreadHandle,
+ IN THREADINFOCLASS ThreadInformationClass,
+ IN PVOID ThreadInformation,
+ IN ULONG ThreadInformationLength
+ );
+// end_ntsrv
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAlertThread(
+ IN HANDLE ThreadHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAlertResumeThread(
+ IN HANDLE ThreadHandle,
+ OUT PULONG PreviousSuspendCount OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtImpersonateThread(
+ IN HANDLE ServerThreadHandle,
+ IN HANDLE ClientThreadHandle,
+ IN PSECURITY_QUALITY_OF_SERVICE SecurityQos
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtTestAlert(
+ VOID
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtRegisterThreadTerminatePort(
+ IN HANDLE PortHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetLdtEntries(
+ IN ULONG Selector0,
+ IN ULONG Entry0Low,
+ IN ULONG Entry0Hi,
+ IN ULONG Selector1,
+ IN ULONG Entry1Low,
+ IN ULONG Entry1High
+ );
+
+typedef
+VOID
+(*PPS_APC_ROUTINE) (
+ IN PVOID ApcArgument1,
+ IN PVOID ApcArgument2,
+ IN PVOID ApcArgument3
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueueApcThread(
+ IN HANDLE ThreadHandle,
+ IN PPS_APC_ROUTINE ApcRoutine,
+ IN PVOID ApcArgument1,
+ IN PVOID ApcArgument2,
+ IN PVOID ApcArgument3
+ );
+
+#endif // _NTPSAPI_
diff --git a/public/sdk/inc/ntquery.h b/public/sdk/inc/ntquery.h
new file mode 100644
index 000000000..fbde2d8c6
--- /dev/null
+++ b/public/sdk/inc/ntquery.h
@@ -0,0 +1,34 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1996.
+//
+// File: NtQuery.h
+// Contents: Main query header; Defines all exported query API
+//
+//----------------------------------------------------------------------------
+
+#if !defined(__NTQUERY_H__)
+#define __NTQUERY_H__
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+//
+// Minimal support for persistent handlers.
+//
+
+SCODE LoadIFilter( WCHAR const * pwcsPath, IUnknown * pUnkOuter, void ** ppIUnk );
+
+SCODE BindIFilterFromStorage( IStorage * pStg, IUnknown * pUnkOuter, void ** ppIUnk );
+
+SCODE BindIFilterFromStream( IStream * pStm, IUnknown * pUnkOuter, void ** ppIUnk );
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif // __NTQUERY_H__
+
diff --git a/public/sdk/inc/ntregapi.h b/public/sdk/inc/ntregapi.h
new file mode 100644
index 000000000..f75034193
--- /dev/null
+++ b/public/sdk/inc/ntregapi.h
@@ -0,0 +1,448 @@
+/*++ BUILD Version: 0009 // Increment this if a change has global effects
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ ntregapi.h
+
+Abstract:
+
+ This module contains the registration apis and related structures,
+ in the forms for use with the Nt api set (as opposed to the win api set).
+
+Author:
+
+ Bryan M. Willman (bryanwi) 26-Aug-1991
+
+Revision History:
+
+--*/
+
+#ifndef _NTREGAPI_
+#define _NTREGAPI_
+
+//
+// begin_winnt
+//
+
+// begin_ntddk begin_nthal
+//
+// Registry Specific Access Rights.
+//
+
+#define KEY_QUERY_VALUE (0x0001)
+#define KEY_SET_VALUE (0x0002)
+#define KEY_CREATE_SUB_KEY (0x0004)
+#define KEY_ENUMERATE_SUB_KEYS (0x0008)
+#define KEY_NOTIFY (0x0010)
+#define KEY_CREATE_LINK (0x0020)
+
+#define KEY_READ ((STANDARD_RIGHTS_READ |\
+ KEY_QUERY_VALUE |\
+ KEY_ENUMERATE_SUB_KEYS |\
+ KEY_NOTIFY) \
+ & \
+ (~SYNCHRONIZE))
+
+
+#define KEY_WRITE ((STANDARD_RIGHTS_WRITE |\
+ KEY_SET_VALUE |\
+ KEY_CREATE_SUB_KEY) \
+ & \
+ (~SYNCHRONIZE))
+
+#define KEY_EXECUTE ((KEY_READ) \
+ & \
+ (~SYNCHRONIZE))
+
+#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\
+ KEY_QUERY_VALUE |\
+ KEY_SET_VALUE |\
+ KEY_CREATE_SUB_KEY |\
+ KEY_ENUMERATE_SUB_KEYS |\
+ KEY_NOTIFY |\
+ KEY_CREATE_LINK) \
+ & \
+ (~SYNCHRONIZE))
+
+//
+// Open/Create Options
+//
+
+#define REG_OPTION_RESERVED (0x00000000L) // Parameter is reserved
+
+#define REG_OPTION_NON_VOLATILE (0x00000000L) // Key is preserved
+ // when system is rebooted
+
+#define REG_OPTION_VOLATILE (0x00000001L) // Key is not preserved
+ // when system is rebooted
+
+#define REG_OPTION_CREATE_LINK (0x00000002L) // Created key is a
+ // symbolic link
+
+#define REG_OPTION_BACKUP_RESTORE (0x00000004L) // open for backup or restore
+ // special access rules
+ // privilege required
+
+#define REG_OPTION_OPEN_LINK (0x00000008L) // Open symbolic link
+
+#define REG_LEGAL_OPTION \
+ (REG_OPTION_RESERVED |\
+ REG_OPTION_NON_VOLATILE |\
+ REG_OPTION_VOLATILE |\
+ REG_OPTION_CREATE_LINK |\
+ REG_OPTION_BACKUP_RESTORE |\
+ REG_OPTION_OPEN_LINK)
+
+//
+// Key creation/open disposition
+//
+
+#define REG_CREATED_NEW_KEY (0x00000001L) // New Registry Key created
+#define REG_OPENED_EXISTING_KEY (0x00000002L) // Existing Key opened
+
+//
+// Key restore flags
+//
+
+#define REG_WHOLE_HIVE_VOLATILE (0x00000001L) // Restore whole hive volatile
+#define REG_REFRESH_HIVE (0x00000002L) // Unwind changes to last flush
+#define REG_NO_LAZY_FLUSH (0x00000004L) // Never lazy flush this hive
+
+// end_ntddk end_nthal
+
+//
+// Notify filter values
+//
+#define REG_NOTIFY_CHANGE_NAME (0x00000001L) // Create or delete (child)
+#define REG_NOTIFY_CHANGE_ATTRIBUTES (0x00000002L)
+#define REG_NOTIFY_CHANGE_LAST_SET (0x00000004L) // time stamp
+#define REG_NOTIFY_CHANGE_SECURITY (0x00000008L)
+
+#define REG_LEGAL_CHANGE_FILTER \
+ (REG_NOTIFY_CHANGE_NAME |\
+ REG_NOTIFY_CHANGE_ATTRIBUTES |\
+ REG_NOTIFY_CHANGE_LAST_SET |\
+ REG_NOTIFY_CHANGE_SECURITY)
+
+//
+// end_winnt
+//
+
+// begin_ntddk begin_nthal
+//
+// Key query structures
+//
+
+typedef struct _KEY_BASIC_INFORMATION {
+ LARGE_INTEGER LastWriteTime;
+ ULONG TitleIndex;
+ ULONG NameLength;
+ WCHAR Name[1]; // Variable length string
+} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
+
+typedef struct _KEY_NODE_INFORMATION {
+ LARGE_INTEGER LastWriteTime;
+ ULONG TitleIndex;
+ ULONG ClassOffset;
+ ULONG ClassLength;
+ ULONG NameLength;
+ WCHAR Name[1]; // Variable length string
+// Class[1]; // Variable length string not declared
+} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
+
+typedef struct _KEY_FULL_INFORMATION {
+ LARGE_INTEGER LastWriteTime;
+ ULONG TitleIndex;
+ ULONG ClassOffset;
+ ULONG ClassLength;
+ ULONG SubKeys;
+ ULONG MaxNameLen;
+ ULONG MaxClassLen;
+ ULONG Values;
+ ULONG MaxValueNameLen;
+ ULONG MaxValueDataLen;
+ WCHAR Class[1]; // Variable length
+} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
+
+typedef enum _KEY_INFORMATION_CLASS {
+ KeyBasicInformation,
+ KeyNodeInformation,
+ KeyFullInformation
+} KEY_INFORMATION_CLASS;
+
+typedef struct _KEY_WRITE_TIME_INFORMATION {
+ LARGE_INTEGER LastWriteTime;
+} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
+
+typedef enum _KEY_SET_INFORMATION_CLASS {
+ KeyWriteTimeInformation
+} KEY_SET_INFORMATION_CLASS;
+
+//
+// Value entry query structures
+//
+
+typedef struct _KEY_VALUE_BASIC_INFORMATION {
+ ULONG TitleIndex;
+ ULONG Type;
+ ULONG NameLength;
+ WCHAR Name[1]; // Variable size
+} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
+
+typedef struct _KEY_VALUE_FULL_INFORMATION {
+ ULONG TitleIndex;
+ ULONG Type;
+ ULONG DataOffset;
+ ULONG DataLength;
+ ULONG NameLength;
+ WCHAR Name[1]; // Variable size
+// Data[1]; // Variable size data not declared
+} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
+
+typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
+ ULONG TitleIndex;
+ ULONG Type;
+ ULONG DataLength;
+ UCHAR Data[1]; // Variable size
+} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
+
+typedef struct _KEY_VALUE_ENTRY {
+ PUNICODE_STRING ValueName;
+ ULONG DataLength;
+ ULONG DataOffset;
+ ULONG Type;
+} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
+
+typedef enum _KEY_VALUE_INFORMATION_CLASS {
+ KeyValueBasicInformation,
+ KeyValueFullInformation,
+ KeyValuePartialInformation
+} KEY_VALUE_INFORMATION_CLASS;
+
+
+// end_ntddk end_nthal
+//
+// Notify return structures
+//
+
+typedef enum _REG_ACTION {
+ KeyAdded,
+ KeyRemoved,
+ KeyModified
+} REG_ACTION;
+
+typedef struct _REG_NOTIFY_INFORMATION {
+ ULONG NextEntryOffset;
+ REG_ACTION Action;
+ ULONG KeyLength;
+ WCHAR Key[1]; // Variable size
+} REG_NOTIFY_INFORMATION, *PREG_NOTIFY_INFORMATION;
+
+
+//
+// Nt level registry API calls
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateKey(
+ OUT PHANDLE KeyHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN ULONG TitleIndex,
+ IN PUNICODE_STRING Class OPTIONAL,
+ IN ULONG CreateOptions,
+ OUT PULONG Disposition OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDeleteKey(
+ IN HANDLE KeyHandle
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDeleteValueKey(
+ IN HANDLE KeyHandle,
+ IN PUNICODE_STRING ValueName
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtEnumerateKey(
+ IN HANDLE KeyHandle,
+ IN ULONG Index,
+ IN KEY_INFORMATION_CLASS KeyInformationClass,
+ OUT PVOID KeyInformation,
+ IN ULONG Length,
+ OUT PULONG ResultLength
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtEnumerateValueKey(
+ IN HANDLE KeyHandle,
+ IN ULONG Index,
+ IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+ OUT PVOID KeyValueInformation,
+ IN ULONG Length,
+ OUT PULONG ResultLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtFlushKey(
+ IN HANDLE KeyHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtInitializeRegistry(
+ IN BOOLEAN SetupBoot
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtNotifyChangeKey(
+ IN HANDLE KeyHandle,
+ IN HANDLE Event OPTIONAL,
+ IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+ IN PVOID ApcContext OPTIONAL,
+ OUT PIO_STATUS_BLOCK IoStatusBlock,
+ IN ULONG CompletionFilter,
+ IN BOOLEAN WatchTree,
+ OUT PVOID Buffer,
+ IN ULONG BufferSize,
+ IN BOOLEAN Asynchronous
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtLoadKey(
+ IN POBJECT_ATTRIBUTES TargetKey,
+ IN POBJECT_ATTRIBUTES SourceFile
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtLoadKey2(
+ IN POBJECT_ATTRIBUTES TargetKey,
+ IN POBJECT_ATTRIBUTES SourceFile,
+ IN ULONG Flags
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenKey(
+ OUT PHANDLE KeyHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryKey(
+ IN HANDLE KeyHandle,
+ IN KEY_INFORMATION_CLASS KeyInformationClass,
+ OUT PVOID KeyInformation,
+ IN ULONG Length,
+ OUT PULONG ResultLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryValueKey(
+ IN HANDLE KeyHandle,
+ IN PUNICODE_STRING ValueName,
+ IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+ OUT PVOID KeyValueInformation,
+ IN ULONG Length,
+ OUT PULONG ResultLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryMultipleValueKey(
+ IN HANDLE KeyHandle,
+ IN PKEY_VALUE_ENTRY ValueEntries,
+ IN ULONG EntryCount,
+ OUT PVOID ValueBuffer,
+ IN OUT PULONG BufferLength,
+ OUT OPTIONAL PULONG RequiredBufferLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtReplaceKey(
+ IN POBJECT_ATTRIBUTES NewFile,
+ IN HANDLE TargetHandle,
+ IN POBJECT_ATTRIBUTES OldFile
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtRestoreKey(
+ IN HANDLE KeyHandle,
+ IN HANDLE FileHandle,
+ IN ULONG Flags
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSaveKey(
+ IN HANDLE KeyHandle,
+ IN HANDLE FileHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetValueKey(
+ IN HANDLE KeyHandle,
+ IN PUNICODE_STRING ValueName,
+ IN ULONG TitleIndex OPTIONAL,
+ IN ULONG Type,
+ IN PVOID Data,
+ IN ULONG DataSize
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtUnloadKey(
+ IN POBJECT_ATTRIBUTES TargetKey
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetInformationKey(
+ IN HANDLE KeyHandle,
+ IN KEY_SET_INFORMATION_CLASS KeySetInformationClass,
+ IN PVOID KeySetInformation,
+ IN ULONG KeySetInformationLength
+ );
+
+#endif // _NTREGAPI_
diff --git a/public/sdk/inc/ntrpc.idl b/public/sdk/inc/ntrpc.idl
new file mode 100644
index 000000000..5acfe60fd
--- /dev/null
+++ b/public/sdk/inc/ntrpc.idl
@@ -0,0 +1,177 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ ntrpc.idl
+
+Abstract:
+
+ This module contains MIDL definitions of many NT data structures that
+ allow correct RPC'ing of those data strctures. Note that the primary
+ emphasis of this module is to provide definitions that can be typecast
+ to for RPC purposes. It is not intended that all fields be present
+ or correctly named/represented in these structures.
+
+
+ This file (NTRPC.IDL) is used to generate an include file (NTRPC.H).
+ All changes should be made to the .IDL file, not the .H file.
+
+
+Author:
+
+ Jim Kelly (JimK) 10-Jun-1991
+
+Revision History:
+
+
+
+--*/
+[
+ uuid(12345678-1234-ABCD-EF00-0123476518AB), //FIX, FIX Need real uuid
+ version(0.0),
+ endpoint("mscn_np:[\pipe\ntrpc]"),
+ pointer_default(unique)
+]
+
+interface ntrpc
+
+{
+#ifndef MIDL_PASS
+#define MIDL_PASS
+#endif //MIDL_PASS
+
+#ifndef _NTRPC_
+#define _NTRPC_
+
+import "ntimp.idl";
+
+
+
+
+//
+// Generic RPC Context Handle
+//
+
+typedef [context_handle] PVOID RPC_HANDLE, *PRPC_HANDLE;
+
+
+
+//
+// Unicode strings are counted 16-bit character strings.
+// The Length field and MaximumLength fields specify number of bytes,
+// (not wide-characters) in the string. So, this definition differs
+// a bit from the real unicode string type.
+//
+// The Length field does not include a null terminating character
+// if present.
+//
+//
+
+typedef struct _RPC_UNICODE_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+//FIX FIX [size_is(MaximumLength)] length_is[(MaximumLength)] PCHAR Buffer;
+ [size_is(MaximumLength)] PCHAR Buffer;
+} RPC_UNICODE_STRING, *PRPC_UNICODE_STRING;
+
+
+//
+// ANSI counted string
+//
+
+typedef struct _RPC_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+//FIX, FIX [size_is(MaximumLength)] length_is[(MaximumLength)] PCHAR Buffer;
+ [size_is(MaximumLength)] PCHAR Buffer;
+} RPC_STRING, *PRPC_STRING, RPC_ANSI_STRING, *PRPC_ANSI_STRING;
+
+
+
+
+
+
+//
+// RPC definition of the SID structure. Note the use of the [size_is()]
+// qualifier to specify the number of elements in the variable size
+// imbedded SubAuthorityCount array at runtime.
+//
+//
+
+typedef struct _RPC_SID {
+ UCHAR Revision;
+ UCHAR SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+ [size_is(SubAuthorityCount)] ULONG SubAuthority[*];
+} RPC_SID, *PRPC_SID, **PPRPC_SID;
+
+
+
+//
+// RPC definition of an ACL. This must be manually maintained to be the same
+// as the real ACL definition in ntseapi.h
+//
+
+typedef struct _RPC_ACL {
+ UCHAR AclRevision;
+ UCHAR Sbz1;
+ USHORT AclSize;
+ [size_is(AclSize - 4)] UCHAR Dummy1[*];
+} RPC_ACL, *PRPC_ACL;
+
+
+
+
+//
+// RPC'able security descriptor definition.
+//
+
+typedef struct _RPC_SECURITY_DESCRIPTOR {
+ UCHAR Revision;
+ UCHAR Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PRPC_SID Owner;
+ PRPC_SID Group;
+ PRPC_ACL Sacl;
+ PRPC_ACL Dacl;
+ } RPC_SECURITY_DESCRIPTOR, *PRPC_SECURITY_DESCRIPTOR;
+
+
+
+
+
+
+//
+// Internal Object Attributes structures. These differ from the regular
+// OBJECT_ATTRIBUTES structures in that the RootDirectory field is an
+// rpc handle.
+//
+//
+
+typedef struct _RPC_OBJECT_ATTRIBUTES_U {
+ ULONG Length;
+ RPC_HANDLE RootDirectory;
+ PRPC_UNICODE_STRING ObjectName;
+ ULONG Attributes;
+ PRPC_SECURITY_DESCRIPTOR SecurityDescriptor;
+ PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
+} RPC_OBJECT_ATTRIBUTES_U, *PRPC_OBJECT_ATTRIBUTES_U;
+
+typedef struct _RPC_OBJECT_ATTRIBUTES {
+ ULONG Length;
+ RPC_HANDLE RootDirectory;
+ PRPC_STRING ObjectName;
+ ULONG Attributes;
+ PRPC_SECURITY_DESCRIPTOR SecurityDescriptor;
+ PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
+} RPC_OBJECT_ATTRIBUTES, *PRPC_OBJECT_ATTRIBUTES;
+
+
+
+
+
+#endif // _NTRPC_
+
+}
diff --git a/public/sdk/inc/ntrtl.h b/public/sdk/inc/ntrtl.h
new file mode 100644
index 000000000..41a4fa8d9
--- /dev/null
+++ b/public/sdk/inc/ntrtl.h
@@ -0,0 +1,5272 @@
+/*++ BUILD Version: 0005 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntrtl.h
+
+Abstract:
+
+ Include file for NT runtime routines that are callable by both
+ kernel mode code in the executive and user mode code in various
+ NT subsystems.
+
+Author:
+
+ Steve Wood (stevewo) 31-Mar-1989
+
+Environment:
+
+ These routines are statically linked in the caller's executable and
+ are callable in either kernel mode or user mode.
+
+Revision History:
+
+--*/
+
+#ifndef _NTRTL_
+#define _NTRTL_
+
+// begin_ntddk begin_winnt begin_ntifs begin_nthal
+//
+// for move macros
+//
+#include <string.h>
+// end_ntddk end_winnt end_ntifs end_nthal
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+// begin_ntddk begin_nthal begin_ntifs begin_ntndis
+//
+// If debugging support enabled, define an ASSERT macro that works. Otherwise
+// define the ASSERT macro to expand to an empty expression.
+//
+
+#if DBG
+NTSYSAPI
+VOID
+NTAPI
+RtlAssert(
+ PVOID FailedAssertion,
+ PVOID FileName,
+ ULONG LineNumber,
+ PCHAR Message
+ );
+
+#define ASSERT( exp ) \
+ if (!(exp)) \
+ RtlAssert( #exp, __FILE__, __LINE__, NULL )
+
+#define ASSERTMSG( msg, exp ) \
+ if (!(exp)) \
+ RtlAssert( #exp, __FILE__, __LINE__, msg )
+
+#else
+#define ASSERT( exp )
+#define ASSERTMSG( msg, exp )
+#endif // DBG
+
+// end_ntddk end_nthal end_ntifs end_ntndis
+
+// begin_ntddk begin_nthal begin_ntifs begin_ntndis
+//
+// Doubly-linked list manipulation routines. Implemented as macros
+// but logically these are procedures.
+//
+
+//
+// VOID
+// InitializeListHead(
+// PLIST_ENTRY ListHead
+// );
+//
+
+#define InitializeListHead(ListHead) (\
+ (ListHead)->Flink = (ListHead)->Blink = (ListHead))
+
+//
+// BOOLEAN
+// IsListEmpty(
+// PLIST_ENTRY ListHead
+// );
+//
+
+#define IsListEmpty(ListHead) \
+ ((ListHead)->Flink == (ListHead))
+
+//
+// PLIST_ENTRY
+// RemoveHeadList(
+// PLIST_ENTRY ListHead
+// );
+//
+
+#define RemoveHeadList(ListHead) \
+ (ListHead)->Flink;\
+ {RemoveEntryList((ListHead)->Flink)}
+
+//
+// PLIST_ENTRY
+// RemoveTailList(
+// PLIST_ENTRY ListHead
+// );
+//
+
+#define RemoveTailList(ListHead) \
+ (ListHead)->Blink;\
+ {RemoveEntryList((ListHead)->Blink)}
+
+//
+// VOID
+// RemoveEntryList(
+// PLIST_ENTRY Entry
+// );
+//
+
+#define RemoveEntryList(Entry) {\
+ PLIST_ENTRY _EX_Blink;\
+ PLIST_ENTRY _EX_Flink;\
+ _EX_Flink = (Entry)->Flink;\
+ _EX_Blink = (Entry)->Blink;\
+ _EX_Blink->Flink = _EX_Flink;\
+ _EX_Flink->Blink = _EX_Blink;\
+ }
+
+//
+// VOID
+// InsertTailList(
+// PLIST_ENTRY ListHead,
+// PLIST_ENTRY Entry
+// );
+//
+
+#define InsertTailList(ListHead,Entry) {\
+ PLIST_ENTRY _EX_Blink;\
+ PLIST_ENTRY _EX_ListHead;\
+ _EX_ListHead = (ListHead);\
+ _EX_Blink = _EX_ListHead->Blink;\
+ (Entry)->Flink = _EX_ListHead;\
+ (Entry)->Blink = _EX_Blink;\
+ _EX_Blink->Flink = (Entry);\
+ _EX_ListHead->Blink = (Entry);\
+ }
+
+//
+// VOID
+// InsertHeadList(
+// PLIST_ENTRY ListHead,
+// PLIST_ENTRY Entry
+// );
+//
+
+#define InsertHeadList(ListHead,Entry) {\
+ PLIST_ENTRY _EX_Flink;\
+ PLIST_ENTRY _EX_ListHead;\
+ _EX_ListHead = (ListHead);\
+ _EX_Flink = _EX_ListHead->Flink;\
+ (Entry)->Flink = _EX_Flink;\
+ (Entry)->Blink = _EX_ListHead;\
+ _EX_Flink->Blink = (Entry);\
+ _EX_ListHead->Flink = (Entry);\
+ }
+
+//
+//
+// PSINGLE_LIST_ENTRY
+// PopEntryList(
+// PSINGLE_LIST_ENTRY ListHead
+// );
+//
+
+#define PopEntryList(ListHead) \
+ (ListHead)->Next;\
+ {\
+ PSINGLE_LIST_ENTRY FirstEntry;\
+ FirstEntry = (ListHead)->Next;\
+ if (FirstEntry != NULL) { \
+ (ListHead)->Next = FirstEntry->Next;\
+ } \
+ }
+
+
+//
+// VOID
+// PushEntryList(
+// PSINGLE_LIST_ENTRY ListHead,
+// PSINGLE_LIST_ENTRY Entry
+// );
+//
+
+#define PushEntryList(ListHead,Entry) \
+ (Entry)->Next = (ListHead)->Next; \
+ (ListHead)->Next = (Entry)
+
+// end_ntddk end_nthal end_ntifs end_ntndis
+
+// begin_ntifs
+//
+// Define the splay links and the associated manipuliation macros and
+// routines. Note that the splay_links should be an opaque type.
+// Routine are provided to traverse and manipulate the structure.
+//
+
+typedef struct _RTL_SPLAY_LINKS {
+ struct _RTL_SPLAY_LINKS *Parent;
+ struct _RTL_SPLAY_LINKS *LeftChild;
+ struct _RTL_SPLAY_LINKS *RightChild;
+} RTL_SPLAY_LINKS;
+typedef RTL_SPLAY_LINKS *PRTL_SPLAY_LINKS;
+
+//
+// The macro procedure InitializeSplayLinks takes as input a pointer to
+// splay link and initializes its substructure. All splay link nodes must
+// be initialized before they are used in the different splay routines and
+// macros.
+//
+// VOID
+// RtlInitializeSplayLinks (
+// PRTL_SPLAY_LINKS Links
+// );
+//
+
+#define RtlInitializeSplayLinks(Links) { \
+ PRTL_SPLAY_LINKS _SplayLinks; \
+ _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \
+ _SplayLinks->Parent = _SplayLinks; \
+ _SplayLinks->LeftChild = NULL; \
+ _SplayLinks->RightChild = NULL; \
+ }
+
+//
+// The macro function Parent takes as input a pointer to a splay link in a
+// tree and returns a pointer to the splay link of the parent of the input
+// node. If the input node is the root of the tree the return value is
+// equal to the input value.
+//
+// PRTL_SPLAY_LINKS
+// RtlParent (
+// PRTL_SPLAY_LINKS Links
+// );
+//
+
+#define RtlParent(Links) ( \
+ (PRTL_SPLAY_LINKS)(Links)->Parent \
+ )
+
+//
+// The macro function LeftChild takes as input a pointer to a splay link in
+// a tree and returns a pointer to the splay link of the left child of the
+// input node. If the left child does not exist, the return value is NULL.
+//
+// PRTL_SPLAY_LINKS
+// RtlLeftChild (
+// PRTL_SPLAY_LINKS Links
+// );
+//
+
+#define RtlLeftChild(Links) ( \
+ (PRTL_SPLAY_LINKS)(Links)->LeftChild \
+ )
+
+//
+// The macro function RightChild takes as input a pointer to a splay link
+// in a tree and returns a pointer to the splay link of the right child of
+// the input node. If the right child does not exist, the return value is
+// NULL.
+//
+// PRTL_SPLAY_LINKS
+// RtlRightChild (
+// PRTL_SPLAY_LINKS Links
+// );
+//
+
+#define RtlRightChild(Links) ( \
+ (PRTL_SPLAY_LINKS)(Links)->RightChild \
+ )
+
+//
+// The macro function IsRoot takes as input a pointer to a splay link
+// in a tree and returns TRUE if the input node is the root of the tree,
+// otherwise it returns FALSE.
+//
+// BOOLEAN
+// RtlIsRoot (
+// PRTL_SPLAY_LINKS Links
+// );
+//
+
+#define RtlIsRoot(Links) ( \
+ (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links)) \
+ )
+
+//
+// The macro function IsLeftChild takes as input a pointer to a splay link
+// in a tree and returns TRUE if the input node is the left child of its
+// parent, otherwise it returns FALSE.
+//
+// BOOLEAN
+// RtlIsLeftChild (
+// PRTL_SPLAY_LINKS Links
+// );
+//
+
+#define RtlIsLeftChild(Links) ( \
+ (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links)) \
+ )
+
+//
+// The macro function IsRightChild takes as input a pointer to a splay link
+// in a tree and returns TRUE if the input node is the right child of its
+// parent, otherwise it returns FALSE.
+//
+// BOOLEAN
+// RtlIsRightChild (
+// PRTL_SPLAY_LINKS Links
+// );
+//
+
+#define RtlIsRightChild(Links) ( \
+ (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links)) \
+ )
+
+//
+// The macro procedure InsertAsLeftChild takes as input a pointer to a splay
+// link in a tree and a pointer to a node not in a tree. It inserts the
+// second node as the left child of the first node. The first node must not
+// already have a left child, and the second node must not already have a
+// parent.
+//
+// VOID
+// RtlInsertAsLeftChild (
+// PRTL_SPLAY_LINKS ParentLinks,
+// PRTL_SPLAY_LINKS ChildLinks
+// );
+//
+
+#define RtlInsertAsLeftChild(ParentLinks,ChildLinks) { \
+ PRTL_SPLAY_LINKS _SplayParent; \
+ PRTL_SPLAY_LINKS _SplayChild; \
+ _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
+ _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
+ _SplayParent->LeftChild = _SplayChild; \
+ _SplayChild->Parent = _SplayParent; \
+ }
+
+//
+// The macro procedure InsertAsRightChild takes as input a pointer to a splay
+// link in a tree and a pointer to a node not in a tree. It inserts the
+// second node as the right child of the first node. The first node must not
+// already have a right child, and the second node must not already have a
+// parent.
+//
+// VOID
+// RtlInsertAsRightChild (
+// PRTL_SPLAY_LINKS ParentLinks,
+// PRTL_SPLAY_LINKS ChildLinks
+// );
+//
+
+#define RtlInsertAsRightChild(ParentLinks,ChildLinks) { \
+ PRTL_SPLAY_LINKS _SplayParent; \
+ PRTL_SPLAY_LINKS _SplayChild; \
+ _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
+ _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
+ _SplayParent->RightChild = _SplayChild; \
+ _SplayChild->Parent = _SplayParent; \
+ }
+
+//
+// The Splay function takes as input a pointer to a splay link in a tree
+// and splays the tree. Its function return value is a pointer to the
+// root of the splayed tree.
+//
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlSplay (
+ PRTL_SPLAY_LINKS Links
+ );
+
+//
+// The Delete function takes as input a pointer to a splay link in a tree
+// and deletes that node from the tree. Its function return value is a
+// pointer to the root of the tree. If the tree is now empty, the return
+// value is NULL.
+//
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlDelete (
+ PRTL_SPLAY_LINKS Links
+ );
+
+//
+// The DeleteNoSplay function takes as input a pointer to a splay link in a tree,
+// the caller's pointer to the root of the tree and deletes that node from the
+// tree. Upon return the caller's pointer to the root node will correctly point
+// at the root of the tree.
+//
+// It operationally differs from RtlDelete only in that it will not splay the tree.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlDeleteNoSplay (
+ PRTL_SPLAY_LINKS Links,
+ PRTL_SPLAY_LINKS *Root
+ );
+
+//
+// The SubtreeSuccessor function takes as input a pointer to a splay link
+// in a tree and returns a pointer to the successor of the input node of
+// the substree rooted at the input node. If there is not a successor, the
+// return value is NULL.
+//
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlSubtreeSuccessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+//
+// The SubtreePredecessor function takes as input a pointer to a splay link
+// in a tree and returns a pointer to the predecessor of the input node of
+// the substree rooted at the input node. If there is not a predecessor,
+// the return value is NULL.
+//
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlSubtreePredecessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+//
+// The RealSuccessor function takes as input a pointer to a splay link
+// in a tree and returns a pointer to the successor of the input node within
+// the entire tree. If there is not a successor, the return value is NULL.
+//
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlRealSuccessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+//
+// The RealPredecessor function takes as input a pointer to a splay link
+// in a tree and returns a pointer to the predecessor of the input node
+// within the entire tree. If there is not a predecessor, the return value
+// is NULL.
+//
+
+NTSYSAPI
+PRTL_SPLAY_LINKS
+NTAPI
+RtlRealPredecessor (
+ PRTL_SPLAY_LINKS Links
+ );
+
+// end_ntifs
+
+
+// begin_ntifs
+//
+// Define the generic table package. Note a generic table should really
+// be an opaque type. We provide routines to manipulate the structure.
+//
+// A generic table is package for inserting, deleting, and looking up elements
+// in a table (e.g., in a symbol table). To use this package the user
+// defines the structure of the elements stored in the table, provides a
+// comparison function, a memory allocation function, and a memory
+// deallocation function.
+//
+// Note: the user compare function must impose a complete ordering among
+// all of the elements, and the table does not allow for duplicate entries.
+//
+
+//
+// Add an empty typedef so that functions can reference the
+// a pointer to the generic table struct before it is declared.
+//
+
+struct _RTL_GENERIC_TABLE;
+
+//
+// The results of a compare can be less than, equal, or greater than.
+//
+
+typedef enum _RTL_GENERIC_COMPARE_RESULTS {
+ GenericLessThan,
+ GenericGreaterThan,
+ GenericEqual
+} RTL_GENERIC_COMPARE_RESULTS;
+
+//
+// The comparison function takes as input pointers to elements containing
+// user defined structures and returns the results of comparing the two
+// elements.
+//
+
+typedef
+RTL_GENERIC_COMPARE_RESULTS
+(NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) (
+ struct _RTL_GENERIC_TABLE *Table,
+ PVOID FirstStruct,
+ PVOID SecondStruct
+ );
+
+//
+// The allocation function is called by the generic table package whenever
+// it needs to allocate memory for the table.
+//
+
+typedef
+PVOID
+(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) (
+ struct _RTL_GENERIC_TABLE *Table,
+ CLONG ByteSize
+ );
+
+//
+// The deallocation function is called by the generic table package whenever
+// it needs to deallocate memory from the table that was allocated by calling
+// the user supplied allocation function.
+//
+
+typedef
+VOID
+(NTAPI *PRTL_GENERIC_FREE_ROUTINE) (
+ struct _RTL_GENERIC_TABLE *Table,
+ PVOID Buffer
+ );
+
+//
+// To use the generic table package the user declares a variable of type
+// GENERIC_TABLE and then uses the routines described below to initialize
+// the table and to manipulate the table. Note that the generic table
+// should really be an opaque type.
+//
+
+typedef struct _RTL_GENERIC_TABLE {
+ PRTL_SPLAY_LINKS TableRoot;
+ LIST_ENTRY InsertOrderList;
+ PLIST_ENTRY OrderedPointer;
+ ULONG WhichOrderedElement;
+ ULONG NumberGenericTableElements;
+ PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
+ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
+ PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
+ PVOID TableContext;
+} RTL_GENERIC_TABLE;
+typedef RTL_GENERIC_TABLE *PRTL_GENERIC_TABLE;
+
+//
+// The procedure InitializeGenericTable takes as input an uninitialized
+// generic table variable and pointers to the three user supplied routines.
+// This must be called for every individual generic table variable before
+// it can be used.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitializeGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine,
+ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine,
+ PRTL_GENERIC_FREE_ROUTINE FreeRoutine,
+ PVOID TableContext
+ );
+
+//
+// The function InsertElementGenericTable will insert a new element
+// in a table. It does this by allocating space for the new element
+// (this includes splay links), inserting the element in the table, and
+// then returning to the user a pointer to the new element. If an element
+// with the same key already exists in the table the return value is a pointer
+// to the old element. The optional output parameter NewElement is used
+// to indicate if the element previously existed in the table. Note: the user
+// supplied Buffer is only used for searching the table, upon insertion its
+// contents are copied to the newly created element. This means that
+// pointer to the input buffer will not point to the new element.
+//
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlInsertElementGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer,
+ CLONG BufferSize,
+ PBOOLEAN NewElement
+ );
+
+//
+// The function DeleteElementGenericTable will find and delete an element
+// from a generic table. If the element is located and deleted the return
+// value is TRUE, otherwise if the element is not located the return value
+// is FALSE. The user supplied input buffer is only used as a key in
+// locating the element in the table.
+//
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlDeleteElementGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer
+ );
+
+//
+// The function LookupElementGenericTable will find an element in a generic
+// table. If the element is located the return value is a pointer to
+// the user defined structure associated with the element, otherwise if
+// the element is not located the return value is NULL. The user supplied
+// input buffer is only used as a key in locating the element in the table.
+//
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlLookupElementGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ PVOID Buffer
+ );
+
+//
+// The function EnumerateGenericTable will return to the caller one-by-one
+// the elements of of a table. The return value is a pointer to the user
+// defined structure associated with the element. The input parameter
+// Restart indicates if the enumeration should start from the beginning
+// or should return the next element. If the are no more new elements to
+// return the return value is NULL. As an example of its use, to enumerate
+// all of the elements in a table the user would write:
+//
+// for (ptr = EnumerateGenericTable(Table, TRUE);
+// ptr != NULL;
+// ptr = EnumerateGenericTable(Table, FALSE)) {
+// :
+// }
+//
+//
+// PLEASE NOTE:
+//
+// If you enumerate a GenericTable using RtlEnumerateGenericTable, you
+// will flatten the table, turning it into a sorted linked list.
+// To enumerate the table without perturbing the splay links, use
+// RtlEnumerateGenericTableWithoutSplaying
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlEnumerateGenericTable (
+ PRTL_GENERIC_TABLE Table,
+ BOOLEAN Restart
+ );
+
+//
+// The function EnumerateGenericTableWithoutSplaying will return to the
+// caller one-by-one the elements of of a table. The return value is a
+// pointer to the user defined structure associated with the element.
+// The input parameter RestartKey indicates if the enumeration should
+// start from the beginning or should return the next element. If the
+// are no more new elements to return the return value is NULL. As an
+// example of its use, to enumerate all of the elements in a table the
+// user would write:
+//
+// RestartKey = NULL;
+// for (ptr = EnumerateGenericTableWithoutSplaying(Table, &RestartKey);
+// ptr != NULL;
+// ptr = EnumerateGenericTableWithoutSplaying(Table, &RestartKey)) {
+// :
+// }
+//
+// If RestartKey is NULL, the package will start from the least entry in the
+// table, otherwise it will start from the last entry returned.
+//
+//
+// Note that unlike RtlEnumerateGenericTable, this routine will NOT perturb
+// the splay order of the tree.
+//
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlEnumerateGenericTableWithoutSplaying (
+ PRTL_GENERIC_TABLE Table,
+ PVOID *RestartKey
+ );
+
+//
+// The function GetElementGenericTable will return the i'th element
+// inserted in the generic table. I = 0 implies the first element,
+// I = (RtlNumberGenericTableElements(Table)-1) will return the last element
+// inserted into the generic table. The type of I is ULONG. Values
+// of I > than (NumberGenericTableElements(Table)-1) will return NULL. If
+// an arbitrary element is deleted from the generic table it will cause
+// all elements inserted after the deleted element to "move up".
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlGetElementGenericTable(
+ PRTL_GENERIC_TABLE Table,
+ ULONG I
+ );
+
+//
+// The function NumberGenericTableElements returns a ULONG value
+// which is the number of generic table elements currently inserted
+// in the generic table.
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlNumberGenericTableElements(
+ PRTL_GENERIC_TABLE Table
+ );
+
+//
+// The function IsGenericTableEmpty will return to the caller TRUE if
+// the input table is empty (i.e., does not contain any elements) and
+// FALSE otherwise.
+//
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlIsGenericTableEmpty (
+ PRTL_GENERIC_TABLE Table
+ );
+
+
+//
+// Heap Allocator
+//
+
+// end_ntifs
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlInitializeHeapManager(
+ VOID
+ );
+
+// begin_ntifs
+
+typedef NTSTATUS
+(*PRTL_HEAP_COMMIT_ROUTINE)(
+ IN PVOID Base,
+ IN OUT PVOID *CommitAddress,
+ IN OUT PULONG CommitSize
+ );
+
+typedef struct _RTL_HEAP_PARAMETERS {
+ ULONG Length;
+ ULONG SegmentReserve;
+ ULONG SegmentCommit;
+ ULONG DeCommitFreeBlockThreshold;
+ ULONG DeCommitTotalFreeThreshold;
+ ULONG MaximumAllocationSize;
+ ULONG VirtualMemoryThreshold;
+ ULONG InitialCommit;
+ ULONG InitialReserve;
+ PRTL_HEAP_COMMIT_ROUTINE CommitRoutine;
+ ULONG Reserved[ 2 ];
+} RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS;
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlCreateHeap(
+ IN ULONG Flags,
+ IN PVOID HeapBase OPTIONAL,
+ IN ULONG ReserveSize OPTIONAL,
+ IN ULONG CommitSize OPTIONAL,
+ IN PVOID Lock OPTIONAL,
+ IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL
+ );
+
+#define HEAP_NO_SERIALIZE 0x00000001 // winnt
+#define HEAP_GROWABLE 0x00000002 // winnt
+#define HEAP_GENERATE_EXCEPTIONS 0x00000004 // winnt
+#define HEAP_ZERO_MEMORY 0x00000008 // winnt
+#define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010 // winnt
+#define HEAP_TAIL_CHECKING_ENABLED 0x00000020 // winnt
+#define HEAP_FREE_CHECKING_ENABLED 0x00000040 // winnt
+#define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080 // winnt
+
+#define HEAP_CREATE_ALIGN_16 0x00010000 // winnt Create heap with 16 byte alignment
+#define HEAP_CREATE_ENABLE_TRACING 0x00020000 // winnt Create heap call tracing enabled
+
+#define HEAP_SETTABLE_USER_VALUE 0x00000100
+#define HEAP_SETTABLE_USER_FLAG1 0x00000200
+#define HEAP_SETTABLE_USER_FLAG2 0x00000400
+#define HEAP_SETTABLE_USER_FLAG3 0x00000800
+#define HEAP_SETTABLE_USER_FLAGS 0x00000E00
+
+#define HEAP_CLASS_0 0x00000000 // process heap
+#define HEAP_CLASS_1 0x00001000 // private heap
+#define HEAP_CLASS_2 0x00002000 // Kernel Heap
+#define HEAP_CLASS_3 0x00003000 // GDI heap
+#define HEAP_CLASS_4 0x00004000 // User heap
+#define HEAP_CLASS_5 0x00005000 // Console heap
+#define HEAP_CLASS_6 0x00006000 // User Desktop heap
+#define HEAP_CLASS_7 0x00007000 // Csrss Shared heap
+#define HEAP_CLASS_8 0x00008000 // Csr Port heap
+#define HEAP_CLASS_MASK 0x0000F000
+
+#define HEAP_MAXIMUM_TAG 0x0FFF // winnt
+#define HEAP_GLOBAL_TAG 0x0800
+#define HEAP_PSEUDO_TAG_FLAG 0x8000 // winnt
+#define HEAP_TAG_SHIFT 16 // winnt
+#define HEAP_MAKE_TAG_FLAGS( b, o ) ((ULONG)((b) + ((o) << 16))) // winnt
+#define HEAP_TAG_MASK (HEAP_MAXIMUM_TAG << HEAP_TAG_SHIFT)
+
+#define HEAP_CREATE_VALID_MASK (HEAP_NO_SERIALIZE | \
+ HEAP_GROWABLE | \
+ HEAP_GENERATE_EXCEPTIONS | \
+ HEAP_ZERO_MEMORY | \
+ HEAP_REALLOC_IN_PLACE_ONLY | \
+ HEAP_TAIL_CHECKING_ENABLED | \
+ HEAP_FREE_CHECKING_ENABLED | \
+ HEAP_DISABLE_COALESCE_ON_FREE | \
+ HEAP_CLASS_MASK | \
+ HEAP_CREATE_ALIGN_16 | \
+ HEAP_CREATE_ENABLE_TRACING)
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlDestroyHeap(
+ IN PVOID HeapHandle
+ );
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlAllocateHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN ULONG Size
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlFreeHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN PVOID BaseAddress
+ );
+
+// end_ntifs
+
+NTSYSAPI
+VOID
+NTAPI
+RtlProtectHeap(
+ IN PVOID HeapHandle,
+ IN BOOLEAN MakeReadOnly
+ );
+
+//
+// See NTURTL.H for remaining, user mode only heap functions.
+//
+
+//
+// The types PACQUIRE_LOCK_ROUTINE and PRELEASE_LOCK_ROUTINE are prototypes
+// for routines to acquire and release locks in kernel and user mode.
+//
+
+typedef
+NTSTATUS
+(NTAPI *PRTL_INITIALIZE_LOCK_ROUTINE) (
+ PVOID Lock
+ );
+
+typedef
+NTSTATUS
+(NTAPI *PRTL_ACQUIRE_LOCK_ROUTINE) (
+ PVOID Lock
+ );
+
+typedef
+NTSTATUS
+(NTAPI *PRTL_RELEASE_LOCK_ROUTINE) (
+ PVOID Lock
+ );
+
+typedef
+NTSTATUS
+(NTAPI *PRTL_DELETE_LOCK_ROUTINE) (
+ PVOID Lock
+ );
+
+typedef
+BOOLEAN
+(NTAPI *PRTL_OKAY_TO_LOCK_ROUTINE) (
+ IN PVOID Lock
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlGetNtGlobalFlags(
+ VOID
+ );
+
+
+//
+// Functions to capture a stack back trace
+//
+// begin_ntddk begin_nthal begin_ntifs begin_ntndis
+
+#if defined(_M_MRX000) || defined(_M_ALPHA)
+PVOID
+_ReturnAddress (
+ VOID
+ );
+
+#pragma intrinsic(_ReturnAddress)
+
+#define RtlGetCallersAddress(CallersAddress, CallersCaller) \
+ *CallersAddress = (PVOID)_ReturnAddress(); \
+ *CallersCaller = NULL;
+#else
+NTSYSAPI
+VOID
+NTAPI
+RtlGetCallersAddress(
+ OUT PVOID *CallersAddress,
+ OUT PVOID *CallersCaller
+ );
+#endif
+
+// end_ntddk end_nthal end_ntifs end_ntndis
+
+#if i386
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlInitStackTraceDataBaseEx(
+ IN PVOID CommitBase,
+ IN ULONG CommitSize,
+ IN ULONG ReserveSize,
+ IN PRTL_INITIALIZE_LOCK_ROUTINE InitializeLockRoutine,
+ IN PRTL_ACQUIRE_LOCK_ROUTINE AcquireLockRoutine,
+ IN PRTL_RELEASE_LOCK_ROUTINE ReleaseLockRoutine,
+ IN PRTL_OKAY_TO_LOCK_ROUTINE OkayToLockRoutine
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlInitializeStackTraceDataBase(
+ IN PVOID CommitBase,
+ IN ULONG CommitSize,
+ IN ULONG ReserveSize
+ );
+
+NTSYSAPI
+USHORT
+NTAPI
+RtlLogStackBackTrace(
+ VOID
+ );
+
+NTSYSAPI
+USHORT
+NTAPI
+RtlCaptureStackBackTrace(
+ IN ULONG FramesToSkip,
+ IN ULONG FramesToCapture,
+ OUT PVOID *BackTrace,
+ OUT PULONG BackTraceHash
+ );
+#endif // i386
+
+#define MAX_STACK_DEPTH 16
+
+typedef struct _RTL_PROCESS_BACKTRACE_INFORMATION {
+ PCHAR SymbolicBackTrace; // Not filled in
+ ULONG TraceCount;
+ USHORT Index;
+ USHORT Depth;
+ PVOID BackTrace[ MAX_STACK_DEPTH ];
+} RTL_PROCESS_BACKTRACE_INFORMATION, *PRTL_PROCESS_BACKTRACE_INFORMATION;
+
+typedef struct _RTL_PROCESS_BACKTRACES {
+ ULONG CommittedMemory;
+ ULONG ReservedMemory;
+ ULONG NumberOfBackTraceLookups;
+ ULONG NumberOfBackTraces;
+ RTL_PROCESS_BACKTRACE_INFORMATION BackTraces[ 1 ];
+} RTL_PROCESS_BACKTRACES, *PRTL_PROCESS_BACKTRACES;
+
+
+//
+// Subroutines for dealing with Win32 ATOMs. Used by kernel mode window
+// manager and user mode implementation of Win32 ATOM API calls in KERNEL32
+//
+
+#define RTL_ATOM_MAXIMUM_INTEGER_ATOM (RTL_ATOM)0xC000
+#define RTL_ATOM_INVALID_ATOM (RTL_ATOM)0x0000
+#define RTL_ATOM_TABLE_DEFAULT_NUMBER_OF_BUCKETS 37
+#define RTL_ATOM_MAXIMUM_NAME_LENGTH 255
+#define RTL_ATOM_PINNED 0x01
+
+NTSTATUS
+RtlInitializeAtomPackage(
+ IN ULONG AllocationTag
+ );
+
+NTSTATUS
+RtlCreateAtomTable(
+ IN ULONG NumberOfBuckets,
+ OUT PVOID *AtomTableHandle
+ );
+
+NTSTATUS
+RtlDestroyAtomTable(
+ IN PVOID AtomTableHandle
+ );
+
+NTSTATUS
+RtlEmptyAtomTable(
+ IN PVOID AtomTableHandle,
+ IN BOOLEAN IncludePinnedAtoms
+ );
+
+NTSTATUS
+RtlAddAtomToAtomTable(
+ IN PVOID AtomTableHandle,
+ IN PWSTR AtomName OPTIONAL,
+ IN OUT PRTL_ATOM Atom OPTIONAL
+ );
+
+NTSTATUS
+RtlLookupAtomInAtomTable(
+ IN PVOID AtomTableHandle,
+ IN PWSTR AtomName,
+ OUT PRTL_ATOM Atom OPTIONAL
+ );
+
+NTSTATUS
+RtlDeleteAtomFromAtomTable(
+ IN PVOID AtomTableHandle,
+ IN RTL_ATOM Atom
+ );
+
+NTSTATUS
+RtlPinAtomInAtomTable(
+ IN PVOID AtomTableHandle,
+ IN RTL_ATOM Atom
+ );
+
+NTSTATUS
+RtlQueryAtomInAtomTable(
+ IN PVOID AtomTableHandle,
+ IN RTL_ATOM Atom,
+ OUT PULONG AtomUsage OPTIONAL,
+ OUT PULONG AtomFlags OPTIONAL,
+ IN OUT PWSTR AtomName OPTIONAL,
+ IN OUT PULONG AtomNameLength OPTIONAL
+ );
+
+NTSTATUS
+RtlQueryAtomsInAtomTable(
+ IN PVOID AtomTableHandle,
+ IN ULONG MaximumNumberOfAtoms,
+ OUT PULONG NumberOfAtoms,
+ OUT PRTL_ATOM Atoms
+ );
+
+
+// begin_ntddk begin_nthal
+//
+// Subroutines for dealing with the Registry
+//
+// end_ntddk end_nthal
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlGetNtProductType(
+ PNT_PRODUCT_TYPE NtProductType
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlFormatCurrentUserKeyPath (
+ OUT PUNICODE_STRING CurrentUserKeyPath
+ );
+
+NTSTATUS
+NTAPI
+RtlOpenCurrentUser(
+ IN ULONG DesiredAccess,
+ OUT PHANDLE CurrentUserKey
+ );
+
+// begin_ntddk begin_nthal begin_ntifs
+
+typedef NTSTATUS (*PRTL_QUERY_REGISTRY_ROUTINE)(
+ IN PWSTR ValueName,
+ IN ULONG ValueType,
+ IN PVOID ValueData,
+ IN ULONG ValueLength,
+ IN PVOID Context,
+ IN PVOID EntryContext
+ );
+
+typedef struct _RTL_QUERY_REGISTRY_TABLE {
+ PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
+ ULONG Flags;
+ PWSTR Name;
+ PVOID EntryContext;
+ ULONG DefaultType;
+ PVOID DefaultData;
+ ULONG DefaultLength;
+
+} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
+
+
+//
+// The following flags specify how the Name field of a RTL_QUERY_REGISTRY_TABLE
+// entry is interpreted. A NULL name indicates the end of the table.
+//
+
+#define RTL_QUERY_REGISTRY_SUBKEY 0x00000001 // Name is a subkey and remainder of
+ // table or until next subkey are value
+ // names for that subkey to look at.
+
+#define RTL_QUERY_REGISTRY_TOPKEY 0x00000002 // Reset current key to original key for
+ // this and all following table entries.
+
+#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004 // Fail if no match found for this table
+ // entry.
+
+#define RTL_QUERY_REGISTRY_NOVALUE 0x00000008 // Used to mark a table entry that has no
+ // value name, just wants a call out, not
+ // an enumeration of all values.
+
+#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010 // Used to suppress the expansion of
+ // REG_MULTI_SZ into multiple callouts or
+ // to prevent the expansion of environment
+ // variable values in REG_EXPAND_SZ
+
+#define RTL_QUERY_REGISTRY_DIRECT 0x00000020 // QueryRoutine field ignored. EntryContext
+ // field points to location to store value.
+ // For null terminated strings, EntryContext
+ // points to UNICODE_STRING structure that
+ // that describes maximum size of buffer.
+ // If .Buffer field is NULL then a buffer is
+ // allocated.
+ //
+
+#define RTL_QUERY_REGISTRY_DELETE 0x00000040 // Used to delete value keys after they
+ // are queried.
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQueryRegistryValues(
+ IN ULONG RelativeTo,
+ IN PWSTR Path,
+ IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
+ IN PVOID Context,
+ IN PVOID Environment OPTIONAL
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlWriteRegistryValue(
+ IN ULONG RelativeTo,
+ IN PWSTR Path,
+ IN PWSTR ValueName,
+ IN ULONG ValueType,
+ IN PVOID ValueData,
+ IN ULONG ValueLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDeleteRegistryValue(
+ IN ULONG RelativeTo,
+ IN PWSTR Path,
+ IN PWSTR ValueName
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateRegistryKey(
+ IN ULONG RelativeTo,
+ IN PWSTR Path
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCheckRegistryKey(
+ IN ULONG RelativeTo,
+ IN PWSTR Path
+ );
+
+//
+// The following values for the RelativeTo parameter determine what the
+// Path parameter to RtlQueryRegistryValues is relative to.
+//
+
+#define RTL_REGISTRY_ABSOLUTE 0 // Path is a full path
+#define RTL_REGISTRY_SERVICES 1 // \Registry\Machine\System\CurrentControlSet\Services
+#define RTL_REGISTRY_CONTROL 2 // \Registry\Machine\System\CurrentControlSet\Control
+#define RTL_REGISTRY_WINDOWS_NT 3 // \Registry\Machine\Software\Microsoft\Windows NT\CurrentVersion
+#define RTL_REGISTRY_DEVICEMAP 4 // \Registry\Machine\Hardware\DeviceMap
+#define RTL_REGISTRY_USER 5 // \Registry\User\CurrentUser
+#define RTL_REGISTRY_MAXIMUM 6
+#define RTL_REGISTRY_HANDLE 0x40000000 // Low order bits are registry handle
+#define RTL_REGISTRY_OPTIONAL 0x80000000 // Indicates the key node is optional
+
+// end_ntddk end_nthal end_ntifs
+
+//
+// Some simple Rtl routines for random number and
+// hexadecimal conversion
+//
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlUniform (
+ PULONG Seed
+ );
+
+NTSYSAPI // ntifs
+ULONG // ntifs
+NTAPI // ntifs
+RtlRandom ( // ntifs
+ PULONG Seed // ntifs
+ ); // ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlIntegerToChar (
+ ULONG Value,
+ ULONG Base,
+ LONG OutputLength,
+ PSZ String
+ );
+
+NTSYSAPI // ntddk ntifs
+NTSTATUS // ntddk ntifs
+NTAPI // ntddk ntifs
+RtlCharToInteger ( // ntddk ntifs
+ PCSZ String, // ntddk ntifs
+ ULONG Base, // ntddk ntifs
+ PULONG Value // ntddk ntifs
+ ); // ntddk ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlLargeIntegerToChar (
+ PLARGE_INTEGER Value,
+ ULONG Base OPTIONAL,
+ LONG OutputLength,
+ PSZ String
+ );
+
+// begin_ntddk begin_nthal begin_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlIntegerToUnicodeString (
+ ULONG Value,
+ ULONG Base,
+ PUNICODE_STRING String
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUnicodeStringToInteger (
+ PUNICODE_STRING String,
+ ULONG Base,
+ PULONG Value
+ );
+
+
+//
+// String manipulation routines
+//
+
+#ifdef _NTSYSTEM_
+
+#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
+#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
+
+#else
+
+#define NLS_MB_CODE_PAGE_TAG (*NlsMbCodePageTag)
+#define NLS_MB_OEM_CODE_PAGE_TAG (*NlsMbOemCodePageTag)
+
+#endif // _NTSYSTEM_
+
+extern BOOLEAN NLS_MB_CODE_PAGE_TAG; // TRUE -> Multibyte CP, FALSE -> Singlebyte
+extern BOOLEAN NLS_MB_OEM_CODE_PAGE_TAG; // TRUE -> Multibyte CP, FALSE -> Singlebyte
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitString(
+ PSTRING DestinationString,
+ PCSZ SourceString
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitAnsiString(
+ PANSI_STRING DestinationString,
+ PCSZ SourceString
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitUnicodeString(
+ PUNICODE_STRING DestinationString,
+ PCWSTR SourceString
+ );
+
+// end_ntddk end_ntifs
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlCreateUnicodeString(
+ OUT PUNICODE_STRING DestinationString,
+ IN PCWSTR SourceString
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlEqualDomainName(
+ IN PUNICODE_STRING String1,
+ IN PUNICODE_STRING String2
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlEqualComputerName(
+ IN PUNICODE_STRING String1,
+ IN PUNICODE_STRING String2
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlCreateUnicodeStringFromAsciiz(
+ OUT PUNICODE_STRING DestinationString,
+ IN PCSZ SourceString
+ );
+
+// begin_ntddk begin_ntifs
+
+NTSYSAPI
+VOID
+NTAPI
+RtlCopyString(
+ PSTRING DestinationString,
+ PSTRING SourceString
+ );
+
+NTSYSAPI
+CHAR
+NTAPI
+RtlUpperChar (
+ CHAR Character
+ );
+
+NTSYSAPI
+LONG
+NTAPI
+RtlCompareString(
+ PSTRING String1,
+ PSTRING String2,
+ BOOLEAN CaseInSensitive
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlEqualString(
+ PSTRING String1,
+ PSTRING String2,
+ BOOLEAN CaseInSensitive
+ );
+
+// end_ntddk end_ntifs
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlPrefixString(
+ PSTRING String1,
+ PSTRING String2,
+ BOOLEAN CaseInSensitive
+ );
+
+// begin_ntddk begin_ntifs
+
+NTSYSAPI
+VOID
+NTAPI
+RtlUpperString(
+ PSTRING DestinationString,
+ PSTRING SourceString
+ );
+
+// end_ntddk end_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAppendAsciizToString (
+ PSTRING Destination,
+ PCSZ Source
+ );
+
+// begin_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAppendStringToString (
+ PSTRING Destination,
+ PSTRING Source
+ );
+
+// begin_ntddk
+//
+// NLS String functions
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAnsiStringToUnicodeString(
+ PUNICODE_STRING DestinationString,
+ PANSI_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+// end_ntddk end_nthal end_ntifs
+
+NTSYSAPI
+WCHAR
+NTAPI
+RtlAnsiCharToUnicodeChar(
+ PUCHAR *SourceCharacter
+ );
+
+// begin_ntddk begin_nthal begin_ntifs begin_ntndis
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUnicodeStringToAnsiString(
+ PANSI_STRING DestinationString,
+ PUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+// end_ntddk end_nthal end_ntifs end_ntndis
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUpcaseUnicodeStringToAnsiString(
+ PANSI_STRING DestinationString,
+ PUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+// begin_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlOemStringToUnicodeString(
+ PUNICODE_STRING DestinationString,
+ POEM_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUnicodeStringToOemString(
+ POEM_STRING DestinationString,
+ PUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUpcaseUnicodeStringToOemString(
+ POEM_STRING DestinationString,
+ PUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlOemStringToCountedUnicodeString(
+ PUNICODE_STRING DestinationString,
+ POEM_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUnicodeStringToCountedOemString(
+ POEM_STRING DestinationString,
+ PUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUpcaseUnicodeStringToCountedOemString(
+ POEM_STRING DestinationString,
+ PUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+// begin_ntddk
+
+NTSYSAPI
+LONG
+NTAPI
+RtlCompareUnicodeString(
+ PUNICODE_STRING String1,
+ PUNICODE_STRING String2,
+ BOOLEAN CaseInSensitive
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlEqualUnicodeString(
+ PUNICODE_STRING String1,
+ PUNICODE_STRING String2,
+ BOOLEAN CaseInSensitive
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlPrefixUnicodeString(
+ IN PUNICODE_STRING String1,
+ IN PUNICODE_STRING String2,
+ IN BOOLEAN CaseInSensitive
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUpcaseUnicodeString(
+ PUNICODE_STRING DestinationString,
+ PUNICODE_STRING SourceString,
+ BOOLEAN AllocateDestinationString
+ );
+
+// end_ntddk end_ntifs
+
+// begin_ntifs
+
+NTSTATUS
+RtlDowncaseUnicodeString(
+ OUT PUNICODE_STRING DestinationString,
+ IN PUNICODE_STRING SourceString,
+ IN BOOLEAN AllocateDestinationString
+ );
+
+// end_ntifs
+
+// begin_ntddk begin_nthal begin_ntifs
+
+NTSYSAPI
+VOID
+NTAPI
+RtlCopyUnicodeString(
+ PUNICODE_STRING DestinationString,
+ PUNICODE_STRING SourceString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAppendUnicodeStringToString (
+ PUNICODE_STRING Destination,
+ PUNICODE_STRING Source
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAppendUnicodeToString (
+ PUNICODE_STRING Destination,
+ PWSTR Source
+ );
+
+// end_ntddk end_nthal
+
+NTSYSAPI
+WCHAR
+NTAPI
+RtlUpcaseUnicodeChar(
+ WCHAR SourceCharacter
+ );
+
+// begin_ntddk begin_nthal
+
+NTSYSAPI
+VOID
+NTAPI
+RtlFreeUnicodeString(
+ PUNICODE_STRING UnicodeString
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlFreeAnsiString(
+ PANSI_STRING AnsiString
+ );
+
+// end_ntddk end_nthal
+
+NTSYSAPI
+VOID
+NTAPI
+RtlFreeOemString(
+ POEM_STRING OemString
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlxUnicodeStringToAnsiSize(
+ PUNICODE_STRING UnicodeString
+ );
+
+//
+// NTSYSAPI
+// ULONG
+// NTAPI
+// RtlUnicodeStringToAnsiSize(
+// PUNICODE_STRING UnicodeString
+// );
+//
+
+#define RtlUnicodeStringToAnsiSize(STRING) ( \
+ NLS_MB_CODE_PAGE_TAG ? \
+ RtlxUnicodeStringToAnsiSize(STRING) : \
+ ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
+)
+
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlxUnicodeStringToOemSize(
+ PUNICODE_STRING UnicodeString
+ );
+
+//
+// NTSYSAPI
+// ULONG
+// NTAPI
+// RtlUnicodeStringToOemSize(
+// PUNICODE_STRING UnicodeString
+// );
+//
+
+#define RtlUnicodeStringToOemSize(STRING) ( \
+ NLS_MB_OEM_CODE_PAGE_TAG ? \
+ RtlxUnicodeStringToOemSize(STRING) : \
+ ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
+)
+
+// end_ntifs
+
+//
+// ULONG
+// RtlUnicodeStringToCountedOemSize(
+// PUNICODE_STRING UnicodeString
+// );
+//
+
+#define RtlUnicodeStringToCountedOemSize(STRING) ( \
+ (ULONG)(RtlUnicodeStringToOemSize(STRING) - sizeof((UCHAR)NULL)) \
+ )
+
+// begin_ntddk begin_ntifs
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlxAnsiStringToUnicodeSize(
+ PANSI_STRING AnsiString
+ );
+
+//
+// NTSYSAPI
+// ULONG
+// NTAPI
+// RtlAnsiStringToUnicodeSize(
+// PANSI_STRING AnsiString
+// );
+//
+
+#define RtlAnsiStringToUnicodeSize(STRING) ( \
+ NLS_MB_CODE_PAGE_TAG ? \
+ RtlxAnsiStringToUnicodeSize(STRING) : \
+ ((STRING)->Length + sizeof((UCHAR)NULL)) * sizeof(WCHAR) \
+)
+
+// end_ntddk
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlxOemStringToUnicodeSize(
+ POEM_STRING OemString
+ );
+//
+// NTSYSAPI
+// ULONG
+// NTAPI
+// RtlOemStringToUnicodeSize(
+// POEM_STRING OemString
+// );
+//
+
+#define RtlOemStringToUnicodeSize(STRING) ( \
+ NLS_MB_OEM_CODE_PAGE_TAG ? \
+ RtlxOemStringToUnicodeSize(STRING) : \
+ ((STRING)->Length + sizeof((UCHAR)NULL)) * sizeof(WCHAR) \
+)
+
+//
+// ULONG
+// RtlOemStringToCountedUnicodeSize(
+// POEM_STRING OemString
+// );
+//
+
+#define RtlOemStringToCountedUnicodeSize(STRING) ( \
+ (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
+ )
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlMultiByteToUnicodeN(
+ PWSTR UnicodeString,
+ ULONG MaxBytesInUnicodeString,
+ PULONG BytesInUnicodeString,
+ PCHAR MultiByteString,
+ ULONG BytesInMultiByteString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlMultiByteToUnicodeSize(
+ PULONG BytesInUnicodeString,
+ PCHAR MultiByteString,
+ ULONG BytesInMultiByteString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUnicodeToMultiByteSize(
+ PULONG BytesInMultiByteString,
+ PWSTR UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUnicodeToMultiByteN(
+ PCHAR MultiByteString,
+ ULONG MaxBytesInMultiByteString,
+ PULONG BytesInMultiByteString,
+ PWSTR UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUpcaseUnicodeToMultiByteN(
+ PCHAR MultiByteString,
+ ULONG MaxBytesInMultiByteString,
+ PULONG BytesInMultiByteString,
+ PWSTR UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlOemToUnicodeN(
+ PWSTR UnicodeString,
+ ULONG MaxBytesInUnicodeString,
+ PULONG BytesInUnicodeString,
+ PCHAR OemString,
+ ULONG BytesInOemString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUnicodeToOemN(
+ PCHAR OemString,
+ ULONG MaxBytesInOemString,
+ PULONG BytesInOemString,
+ PWSTR UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUpcaseUnicodeToOemN(
+ PCHAR OemString,
+ ULONG MaxBytesInOemString,
+ PULONG BytesInOemString,
+ PWSTR UnicodeString,
+ ULONG BytesInUnicodeString
+ );
+
+NTSTATUS
+RtlConsoleMultiByteToUnicodeN(
+ OUT PWCH UnicodeString,
+ IN ULONG MaxBytesInUnicodeString,
+ OUT PULONG BytesInUnicodeString OPTIONAL,
+ IN PCH MultiByteString,
+ IN ULONG BytesInMultiByteString,
+ OUT PULONG pdwSpecialChar );
+
+// begin_winnt
+
+#define IS_TEXT_UNICODE_ASCII16 0x0001
+#define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010
+
+#define IS_TEXT_UNICODE_STATISTICS 0x0002
+#define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020
+
+#define IS_TEXT_UNICODE_CONTROLS 0x0004
+#define IS_TEXT_UNICODE_REVERSE_CONTROLS 0x0040
+
+#define IS_TEXT_UNICODE_SIGNATURE 0x0008
+#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080
+
+#define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100
+#define IS_TEXT_UNICODE_ODD_LENGTH 0x0200
+#define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x0400
+#define IS_TEXT_UNICODE_NULL_BYTES 0x1000
+
+#define IS_TEXT_UNICODE_UNICODE_MASK 0x000F
+#define IS_TEXT_UNICODE_REVERSE_MASK 0x00F0
+#define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00
+#define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000
+
+// end_winnt
+
+BOOLEAN
+RtlIsTextUnicode(
+ IN PVOID Buffer,
+ IN ULONG Size,
+ IN OUT PULONG Result OPTIONAL
+ );
+
+typedef
+PVOID
+(NTAPI *PRTL_ALLOCATE_STRING_ROUTINE) (
+ ULONG NumberOfBytes
+ );
+
+typedef
+VOID
+(NTAPI *PRTL_FREE_STRING_ROUTINE) (
+ PVOID Buffer
+ );
+
+extern PRTL_ALLOCATE_STRING_ROUTINE RtlAllocateStringRoutine;
+extern PRTL_FREE_STRING_ROUTINE RtlFreeStringRoutine;
+
+
+//
+// Routine for generating 8.3 names from long names.
+//
+
+//
+// The context structure is used when generating 8.3 names. The caller must
+// always zero out the structure before starting a new generation sequence
+//
+
+typedef struct _GENERATE_NAME_CONTEXT {
+
+ //
+ // The structure is divided into two strings. The Name, and extension.
+ // Each part contains the value that was last inserted in the name.
+ // The length values are in terms of wchars and not bytes. We also
+ // store the last index value used in the generation collision algorithm.
+ //
+
+ USHORT Checksum;
+ BOOLEAN ChecksumInserted;
+
+ UCHAR NameLength; // not including extension
+ WCHAR NameBuffer[8]; // e.g., "ntoskrnl"
+
+ ULONG ExtensionLength; // including dot
+ WCHAR ExtensionBuffer[4]; // e.g., ".exe"
+
+ ULONG LastIndexValue;
+
+} GENERATE_NAME_CONTEXT;
+typedef GENERATE_NAME_CONTEXT *PGENERATE_NAME_CONTEXT;
+
+NTSYSAPI
+VOID
+NTAPI
+RtlGenerate8dot3Name (
+ IN PUNICODE_STRING Name,
+ IN BOOLEAN AllowExtendedCharacters,
+ IN OUT PGENERATE_NAME_CONTEXT Context,
+ OUT PUNICODE_STRING Name8dot3
+ );
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlIsNameLegalDOS8Dot3 (
+ IN PUNICODE_STRING Name,
+ IN OUT POEM_STRING OemName OPTIONAL,
+ IN OUT PBOOLEAN NameContainsSpaces OPTIONAL
+ );
+// end_ntifs
+
+//
+// Thread Context manipulation routines.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitializeContext(
+ HANDLE Process,
+ PCONTEXT Context,
+ PVOID Parameter,
+ PVOID InitialPc,
+ PVOID InitialSp
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlRemoteCall(
+ HANDLE Process,
+ HANDLE Thread,
+ PVOID CallSite,
+ ULONG ArgumentCount,
+ PULONG Arguments,
+ BOOLEAN PassContext,
+ BOOLEAN AlreadySuspended
+ );
+
+
+//
+// Process/Thread Environment Block allocation functions.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlAcquirePebLock(
+ VOID
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlReleasePebLock(
+ VOID
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAllocateFromPeb(
+ ULONG Size,
+ PVOID *Block
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlFreeToPeb(
+ PVOID Block,
+ ULONG Size
+ );
+
+//
+// Environment Variable API calls
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateEnvironment(
+ BOOLEAN CloneCurrentEnvironment,
+ PVOID *Environment
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDestroyEnvironment(
+ PVOID Environment
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetCurrentEnvironment(
+ PVOID Environment,
+ PVOID *PreviousEnvironment
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetEnvironmentVariable(
+ PVOID *Environment,
+ PUNICODE_STRING Name,
+ PUNICODE_STRING Value
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQueryEnvironmentVariable_U (
+ PVOID Environment,
+ PUNICODE_STRING Name,
+ PUNICODE_STRING Value
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlExpandEnvironmentStrings_U(
+ IN PVOID Environment OPTIONAL,
+ IN PUNICODE_STRING Source,
+ OUT PUNICODE_STRING Destination,
+ OUT PULONG ReturnedLength OPTIONAL
+ );
+
+// begin_ntifs
+//
+// Prefix package types and procedures.
+//
+// Note that the following two record structures should really be opaque
+// to the user of this package. The only information about the two
+// structures available for the user should be the size and alignment
+// of the structures.
+//
+
+typedef struct _PREFIX_TABLE_ENTRY {
+ CSHORT NodeTypeCode;
+ CSHORT NameLength;
+ struct _PREFIX_TABLE_ENTRY *NextPrefixTree;
+ RTL_SPLAY_LINKS Links;
+ PSTRING Prefix;
+} PREFIX_TABLE_ENTRY;
+typedef PREFIX_TABLE_ENTRY *PPREFIX_TABLE_ENTRY;
+
+typedef struct _PREFIX_TABLE {
+ CSHORT NodeTypeCode;
+ CSHORT NameLength;
+ PPREFIX_TABLE_ENTRY NextPrefixTree;
+} PREFIX_TABLE;
+typedef PREFIX_TABLE *PPREFIX_TABLE;
+
+//
+// The procedure prototypes for the prefix package
+//
+
+NTSYSAPI
+VOID
+NTAPI
+PfxInitialize (
+ PPREFIX_TABLE PrefixTable
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+PfxInsertPrefix (
+ PPREFIX_TABLE PrefixTable,
+ PSTRING Prefix,
+ PPREFIX_TABLE_ENTRY PrefixTableEntry
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+PfxRemovePrefix (
+ PPREFIX_TABLE PrefixTable,
+ PPREFIX_TABLE_ENTRY PrefixTableEntry
+ );
+
+NTSYSAPI
+PPREFIX_TABLE_ENTRY
+NTAPI
+PfxFindPrefix (
+ PPREFIX_TABLE PrefixTable,
+ PSTRING FullName
+ );
+
+//
+// The following definitions are for the unicode version of the prefix
+// package.
+//
+
+typedef struct _UNICODE_PREFIX_TABLE_ENTRY {
+ CSHORT NodeTypeCode;
+ CSHORT NameLength;
+ struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree;
+ struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch;
+ RTL_SPLAY_LINKS Links;
+ PUNICODE_STRING Prefix;
+} UNICODE_PREFIX_TABLE_ENTRY;
+typedef UNICODE_PREFIX_TABLE_ENTRY *PUNICODE_PREFIX_TABLE_ENTRY;
+
+typedef struct _UNICODE_PREFIX_TABLE {
+ CSHORT NodeTypeCode;
+ CSHORT NameLength;
+ PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree;
+ PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;
+} UNICODE_PREFIX_TABLE;
+typedef UNICODE_PREFIX_TABLE *PUNICODE_PREFIX_TABLE;
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitializeUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlInsertUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ PUNICODE_STRING Prefix,
+ PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlRemoveUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
+ );
+
+NTSYSAPI
+PUNICODE_PREFIX_TABLE_ENTRY
+NTAPI
+RtlFindUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ PUNICODE_STRING FullName,
+ ULONG CaseInsensitiveIndex
+ );
+
+NTSYSAPI
+PUNICODE_PREFIX_TABLE_ENTRY
+NTAPI
+RtlNextUnicodePrefix (
+ PUNICODE_PREFIX_TABLE PrefixTable,
+ BOOLEAN Restart
+ );
+// end_ntifs
+
+// begin_ntifs
+//
+// Compression package types and procedures.
+//
+
+#define COMPRESSION_FORMAT_NONE (0x0000) // winnt
+#define COMPRESSION_FORMAT_DEFAULT (0x0001) // winnt
+#define COMPRESSION_FORMAT_LZNT1 (0x0002) // winnt
+
+#define COMPRESSION_ENGINE_STANDARD (0x0000) // winnt
+#define COMPRESSION_ENGINE_MAXIMUM (0x0100) // winnt
+
+//
+// Compressed Data Information structure. This structure is
+// used to describe the state of a compressed data buffer,
+// whose uncompressed size is known. All compressed chunks
+// described by this structure must be compressed with the
+// same format. On compressed reads, this entire structure
+// is an output, and on compressed writes the entire structure
+// is an input.
+//
+
+typedef struct _COMPRESSED_DATA_INFO {
+
+ //
+ // Code for the compression format (and engine) as
+ // defined in ntrtl.h. Note that COMPRESSION_FORMAT_NONE
+ // and COMPRESSION_FORMAT_DEFAULT are invalid if
+ // any of the described chunks are compressed.
+ //
+
+ USHORT CompressionFormatAndEngine;
+
+ //
+ // Since chunks and compression units are expected to be
+ // powers of 2 in size, we express then log2. So, for
+ // example (1 << ChunkShift) == ChunkSizeInBytes. The
+ // ClusterShift indicates how much space must be saved
+ // to successfully compress a compression unit - each
+ // successfully compressed compression unit must occupy
+ // at least one cluster less in bytes than an uncompressed
+ // compression unit.
+ //
+
+ UCHAR CompressionUnitShift;
+ UCHAR ChunkShift;
+ UCHAR ClusterShift;
+ UCHAR Reserved;
+
+ //
+ // This is the number of entries in the CompressedChunkSizes
+ // array.
+ //
+
+ USHORT NumberOfChunks;
+
+ //
+ // This is an array of the sizes of all chunks resident
+ // in the compressed data buffer. There must be one entry
+ // in this array for each chunk possible in the uncompressed
+ // buffer size. A size of FSRTL_CHUNK_SIZE indicates the
+ // corresponding chunk is uncompressed and occupies exactly
+ // that size. A size of 0 indicates that the corresponding
+ // chunk contains nothing but binary 0's, and occupies no
+ // space in the compressed data. All other sizes must be
+ // less than FSRTL_CHUNK_SIZE, and indicate the exact size
+ // of the compressed data in bytes.
+ //
+
+ ULONG CompressedChunkSizes[ANYSIZE_ARRAY];
+
+} COMPRESSED_DATA_INFO;
+typedef COMPRESSED_DATA_INFO *PCOMPRESSED_DATA_INFO;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetCompressionWorkSpaceSize (
+ IN USHORT CompressionFormatAndEngine,
+ OUT PULONG CompressBufferWorkSpaceSize,
+ OUT PULONG CompressFragmentWorkSpaceSize
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCompressBuffer (
+ IN USHORT CompressionFormatAndEngine,
+ IN PUCHAR UncompressedBuffer,
+ IN ULONG UncompressedBufferSize,
+ OUT PUCHAR CompressedBuffer,
+ IN ULONG CompressedBufferSize,
+ IN ULONG UncompressedChunkSize,
+ OUT PULONG FinalCompressedSize,
+ IN PVOID WorkSpace
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDecompressBuffer (
+ IN USHORT CompressionFormat,
+ OUT PUCHAR UncompressedBuffer,
+ IN ULONG UncompressedBufferSize,
+ IN PUCHAR CompressedBuffer,
+ IN ULONG CompressedBufferSize,
+ OUT PULONG FinalUncompressedSize
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDecompressFragment (
+ IN USHORT CompressionFormat,
+ OUT PUCHAR UncompressedFragment,
+ IN ULONG UncompressedFragmentSize,
+ IN PUCHAR CompressedBuffer,
+ IN ULONG CompressedBufferSize,
+ IN ULONG FragmentOffset,
+ OUT PULONG FinalUncompressedSize,
+ IN PVOID WorkSpace
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDescribeChunk (
+ IN USHORT CompressionFormat,
+ IN OUT PUCHAR *CompressedBuffer,
+ IN PUCHAR EndOfCompressedBufferPlus1,
+ OUT PUCHAR *ChunkBuffer,
+ OUT PULONG ChunkSize
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlReserveChunk (
+ IN USHORT CompressionFormat,
+ IN OUT PUCHAR *CompressedBuffer,
+ IN PUCHAR EndOfCompressedBufferPlus1,
+ OUT PUCHAR *ChunkBuffer,
+ IN ULONG ChunkSize
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDecompressChunks (
+ OUT PUCHAR UncompressedBuffer,
+ IN ULONG UncompressedBufferSize,
+ IN PUCHAR CompressedBuffer,
+ IN ULONG CompressedBufferSize,
+ IN PUCHAR CompressedTail,
+ IN ULONG CompressedTailSize,
+ IN PCOMPRESSED_DATA_INFO CompressedDataInfo
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCompressChunks (
+ IN PUCHAR UncompressedBuffer,
+ IN ULONG UncompressedBufferSize,
+ OUT PUCHAR CompressedBuffer,
+ IN ULONG CompressedBufferSize,
+ IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo,
+ IN ULONG CompressedDataInfoLength,
+ IN PVOID WorkSpace
+ );
+
+// end_ntifs
+
+//
+// Image loading functions
+//
+
+#define DOS_MAX_COMPONENT_LENGTH 255
+#define DOS_MAX_PATH_LENGTH (DOS_MAX_COMPONENT_LENGTH + 5 )
+
+typedef struct _CURDIR {
+ UNICODE_STRING DosPath;
+ HANDLE Handle;
+} CURDIR, *PCURDIR;
+
+//
+// Low order 2 bits of handle value used as flag bits.
+//
+
+#define RTL_USER_PROC_CURDIR_CLOSE 0x00000002
+#define RTL_USER_PROC_CURDIR_INHERIT 0x00000003
+
+typedef struct _RTL_DRIVE_LETTER_CURDIR {
+ USHORT Flags;
+ USHORT Length;
+ ULONG TimeStamp;
+ STRING DosPath;
+} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
+
+#define RTL_MAX_DRIVE_LETTERS 32
+#define RTL_DRIVE_LETTER_VALID (USHORT)0x0001
+
+typedef struct _RTL_USER_PROCESS_PARAMETERS {
+ ULONG MaximumLength;
+ ULONG Length;
+
+ ULONG Flags;
+ ULONG DebugFlags;
+
+ HANDLE ConsoleHandle;
+ ULONG ConsoleFlags;
+ HANDLE StandardInput;
+ HANDLE StandardOutput;
+ HANDLE StandardError;
+
+ CURDIR CurrentDirectory; // ProcessParameters
+ UNICODE_STRING DllPath; // ProcessParameters
+ UNICODE_STRING ImagePathName; // ProcessParameters
+ UNICODE_STRING CommandLine; // ProcessParameters
+ PVOID Environment; // NtAllocateVirtualMemory
+
+ ULONG StartingX;
+ ULONG StartingY;
+ ULONG CountX;
+ ULONG CountY;
+ ULONG CountCharsX;
+ ULONG CountCharsY;
+ ULONG FillAttribute;
+
+ ULONG WindowFlags;
+ ULONG ShowWindowFlags;
+ UNICODE_STRING WindowTitle; // ProcessParameters
+ UNICODE_STRING DesktopInfo; // ProcessParameters
+ UNICODE_STRING ShellInfo; // ProcessParameters
+ UNICODE_STRING RuntimeData; // ProcessParameters
+ RTL_DRIVE_LETTER_CURDIR CurrentDirectores[ RTL_MAX_DRIVE_LETTERS ];
+} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
+
+//
+// Possible bit values for Flags field.
+//
+
+#define RTL_USER_PROC_PARAMS_NORMALIZED 0x00000001
+#define RTL_USER_PROC_PROFILE_USER 0x00000002
+#define RTL_USER_PROC_PROFILE_KERNEL 0x00000004
+#define RTL_USER_PROC_PROFILE_SERVER 0x00000008
+#define RTL_USER_PROC_RESERVE_1MB 0x00000020
+#define RTL_USER_PROC_RESERVE_16MB 0x00000040
+#define RTL_USER_PROC_CASE_SENSITIVE 0x00000080
+#define RTL_USER_PROC_DISABLE_HEAP_DECOMMIT 0x00000100
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateProcessParameters(
+ PRTL_USER_PROCESS_PARAMETERS *ProcessParameters,
+ PUNICODE_STRING ImagePathName,
+ PUNICODE_STRING DllPath,
+ PUNICODE_STRING CurrentDirectory,
+ PUNICODE_STRING CommandLine,
+ PVOID Environment,
+ PUNICODE_STRING WindowTitle,
+ PUNICODE_STRING DesktopInfo,
+ PUNICODE_STRING ShellInfo,
+ PUNICODE_STRING RuntimeData
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDestroyProcessParameters(
+ PRTL_USER_PROCESS_PARAMETERS ProcessParameters
+ );
+
+NTSYSAPI
+PRTL_USER_PROCESS_PARAMETERS
+NTAPI
+RtlNormalizeProcessParams(
+ PRTL_USER_PROCESS_PARAMETERS ProcessParameters
+ );
+
+NTSYSAPI
+PRTL_USER_PROCESS_PARAMETERS
+NTAPI
+RtlDeNormalizeProcessParams(
+ PRTL_USER_PROCESS_PARAMETERS ProcessParameters
+ );
+
+typedef NTSTATUS (*PUSER_PROCESS_START_ROUTINE)(
+ PRTL_USER_PROCESS_PARAMETERS ProcessParameters
+ );
+
+typedef NTSTATUS (*PUSER_THREAD_START_ROUTINE)(
+ PVOID ThreadParameter
+ );
+
+typedef struct _RTL_USER_PROCESS_INFORMATION {
+ ULONG Length;
+ HANDLE Process;
+ HANDLE Thread;
+ CLIENT_ID ClientId;
+ SECTION_IMAGE_INFORMATION ImageInformation;
+} RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateUserProcess(
+ PUNICODE_STRING NtImagePathName,
+ ULONG Attributes,
+ PRTL_USER_PROCESS_PARAMETERS ProcessParameters,
+ PSECURITY_DESCRIPTOR ProcessSecurityDescriptor,
+ PSECURITY_DESCRIPTOR ThreadSecurityDescriptor,
+ HANDLE ParentProcess,
+ BOOLEAN InheritHandles,
+ HANDLE DebugPort,
+ HANDLE ExceptionPort,
+ PRTL_USER_PROCESS_INFORMATION ProcessInformation
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateUserThread(
+ HANDLE Process,
+ PSECURITY_DESCRIPTOR ThreadSecurityDescriptor,
+ BOOLEAN CreateSuspended,
+ ULONG StackZeroBits,
+ ULONG MaximumStackSize,
+ ULONG InitialStackSize,
+ PUSER_THREAD_START_ROUTINE StartAddress,
+ PVOID Parameter,
+ PHANDLE Thread,
+ PCLIENT_ID ClientId
+ );
+
+NTSYSAPI
+VOID
+RtlFreeUserThreadStack(
+ HANDLE hProcess,
+ HANDLE hThread
+ );
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlPcToFileHeader(
+ PVOID PcValue,
+ PVOID *BaseOfImage
+ );
+
+NTSYSAPI
+PIMAGE_NT_HEADERS
+NTAPI
+RtlImageNtHeader(
+ PVOID Base
+ );
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlAddressInSectionTable (
+ IN PIMAGE_NT_HEADERS NtHeaders,
+ IN PVOID BaseOfImage,
+ IN PVOID VirtualAddress
+ );
+
+NTSYSAPI
+PIMAGE_SECTION_HEADER
+NTAPI
+RtlSectionTableFromVirtualAddress (
+ IN PIMAGE_NT_HEADERS NtHeaders,
+ IN PVOID BaseOfImage,
+ IN PVOID VirtualAddress
+ );
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlImageDirectoryEntryToData(
+ PVOID BaseOfImage,
+ BOOLEAN MappedAsImage,
+ USHORT DirectoryEntry,
+ PULONG Size
+ );
+
+PIMAGE_SECTION_HEADER
+RtlImageRvaToSection(
+ IN PIMAGE_NT_HEADERS NtHeaders,
+ IN PVOID Base,
+ IN ULONG Rva
+ );
+
+PVOID
+RtlImageRvaToVa(
+ IN PIMAGE_NT_HEADERS NtHeaders,
+ IN PVOID Base,
+ IN ULONG Rva,
+ IN OUT PIMAGE_SECTION_HEADER *LastRvaSection OPTIONAL
+ );
+
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// Fast primitives to compare, move, and zero memory
+//
+
+// begin_winnt begin_ntndis
+#if defined(_M_IX86) || defined(_M_MRX000) || defined(_M_ALPHA)
+
+#if defined(_M_MRX000)
+NTSYSAPI
+ULONG
+NTAPI
+RtlEqualMemory (
+ CONST VOID *Source1,
+ CONST VOID *Source2,
+ ULONG Length
+ );
+
+#else
+#define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length)))
+#endif
+
+#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
+#define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
+#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
+#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
+
+#else // _M_PPC
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlEqualMemory (
+ CONST VOID *Source1,
+ CONST VOID *Source2,
+ ULONG Length
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlCopyMemory (
+ VOID UNALIGNED *Destination,
+ CONST VOID UNALIGNED *Source,
+ ULONG Length
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlCopyMemory32 (
+ VOID UNALIGNED *Destination,
+ CONST VOID UNALIGNED *Source,
+ ULONG Length
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlMoveMemory (
+ VOID UNALIGNED *Destination,
+ CONST VOID UNALIGNED *Source,
+ ULONG Length
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlFillMemory (
+ VOID UNALIGNED *Destination,
+ ULONG Length,
+ UCHAR Fill
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlZeroMemory (
+ VOID UNALIGNED *Destination,
+ ULONG Length
+ );
+#endif
+// end_winnt end_ntndis
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlCompareMemory (
+ PVOID Source1,
+ PVOID Source2,
+ ULONG Length
+ );
+
+#if defined(_M_ALPHA)
+
+//
+// Guaranteed byte granularity memory copy function.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlCopyBytes (
+ PVOID Destination,
+ CONST VOID *Source,
+ ULONG Length
+ );
+
+//
+// Guaranteed byte granularity memory zero function.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlZeroBytes (
+ PVOID Destination,
+ ULONG Length
+ );
+
+//
+// Guaranteed byte granularity memory fill function.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlFillBytes (
+ PVOID Destination,
+ ULONG Length,
+ UCHAR Fill
+ );
+
+#else
+
+#define RtlCopyBytes RtlCopyMemory
+#define RtlZeroBytes RtlZeroMemory
+#define RtlFillBytes RtlFillMemory
+
+#endif
+
+// end_ntddk end_nthal
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlCompareMemoryUlong (
+ PVOID Source,
+ ULONG Length,
+ ULONG Pattern
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlFillMemoryUlong (
+ PVOID Destination,
+ ULONG Length,
+ ULONG Pattern
+ );
+
+// end_ntifs
+
+//
+// Debugging support functions.
+//
+
+typedef struct _RTL_PROCESS_LOCK_INFORMATION {
+ PVOID Address;
+ USHORT Type;
+ USHORT CreatorBackTraceIndex;
+
+ HANDLE OwningThread; // from the thread's ClientId->UniqueThread
+ LONG LockCount;
+ ULONG ContentionCount;
+ ULONG EntryCount;
+
+ //
+ // The following fields are only valid for Type == RTL_CRITSECT_TYPE
+ //
+
+ LONG RecursionCount;
+
+ //
+ // The following fields are only valid for Type == RTL_RESOURCE_TYPE
+ //
+
+ ULONG NumberOfWaitingShared;
+ ULONG NumberOfWaitingExclusive;
+} RTL_PROCESS_LOCK_INFORMATION, *PRTL_PROCESS_LOCK_INFORMATION;
+
+
+typedef struct _RTL_PROCESS_LOCKS {
+ ULONG NumberOfLocks;
+ RTL_PROCESS_LOCK_INFORMATION Locks[ 1 ];
+} RTL_PROCESS_LOCKS, *PRTL_PROCESS_LOCKS;
+
+
+
+//
+// Exception dispatcher's log of recent exceptions
+//
+
+#define MAX_EXCEPTION_LOG 10
+#define MAX_EXCEPTION_LOG_DATA_SIZE 5
+typedef struct _LAST_EXCEPTION_LOG {
+ EXCEPTION_RECORD ExceptionRecord;
+ CONTEXT ContextRecord;
+ ULONG ControlPc;
+ EXCEPTION_DISPOSITION Disposition;
+ // On x86 this contains a frame registration record; 4 dwords
+ // on RISC machines, it is a RUNTIME_FUNCTION record.
+ ULONG HandlerData[MAX_EXCEPTION_LOG_DATA_SIZE];
+} LAST_EXCEPTION_LOG, *PLAST_EXCEPTION_LOG;
+
+VOID
+RtlInitializeExceptionLog(
+ IN ULONG Entries
+ );
+
+
+VOID
+NTAPI
+DbgUserBreakPoint(
+ VOID
+ );
+
+// begin_ntddk begin_nthal begin_ntifs begin_ntndis
+//
+// Define kernel debugger print prototypes and macros.
+//
+
+VOID
+NTAPI
+DbgBreakPoint(
+ VOID
+ );
+
+VOID
+NTAPI
+DbgBreakPointWithStatus(
+ IN ULONG Status
+ );
+
+#define DBG_STATUS_CONTROL_C 1
+#define DBG_STATUS_SYSRQ 2
+#define DBG_STATUS_BUGCHECK_FIRST 3
+#define DBG_STATUS_BUGCHECK_SECOND 4
+#define DBG_STATUS_FATAL 5
+
+#if DBG
+
+#define KdPrint(_x_) DbgPrint _x_
+#define KdBreakPoint() DbgBreakPoint()
+#define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s)
+
+#else
+
+#define KdPrint(_x_)
+#define KdBreakPoint()
+#define KdBreakPointWithStatus(s)
+
+#endif
+
+#ifndef _DBGNT_
+ULONG
+_cdecl
+DbgPrint(
+ PCH Format,
+ ...
+ );
+#endif // _DBGNT_
+// end_ntddk end_nthal end_ntifs end_ntndis
+
+ULONG
+NTAPI
+DbgPrompt(
+ PCH Prompt,
+ PCH Response,
+ ULONG MaximumResponseLength
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+DbgLoadImageSymbols(
+ PSTRING FileName,
+ PVOID ImageBase,
+ ULONG ProcessId
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+DbgUnLoadImageSymbols(
+ PSTRING FileName,
+ PVOID ImageBase,
+ ULONG ProcessId
+ );
+
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// Large integer arithmetic routines.
+//
+
+#if defined(MIDL_PASS) || defined(__cplusplus) || !defined(_M_IX86)
+
+//
+// Large integer add - 64-bits + 64-bits -> 64-bits
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerAdd (
+ LARGE_INTEGER Addend1,
+ LARGE_INTEGER Addend2
+ );
+
+//
+// Enlarged integer multiply - 32-bits * 32-bits -> 64-bits
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlEnlargedIntegerMultiply (
+ LONG Multiplicand,
+ LONG Multiplier
+ );
+
+//
+// Unsigned enlarged integer multiply - 32-bits * 32-bits -> 64-bits
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlEnlargedUnsignedMultiply (
+ ULONG Multiplicand,
+ ULONG Multiplier
+ );
+
+//
+// Enlarged integer divide - 64-bits / 32-bits > 32-bits
+//
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlEnlargedUnsignedDivide (
+ IN ULARGE_INTEGER Dividend,
+ IN ULONG Divisor,
+ IN PULONG Remainder
+ );
+
+
+//
+// Large integer negation - -(64-bits)
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerNegate (
+ LARGE_INTEGER Subtrahend
+ );
+
+//
+// Large integer subtract - 64-bits - 64-bits -> 64-bits.
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerSubtract (
+ LARGE_INTEGER Minuend,
+ LARGE_INTEGER Subtrahend
+ );
+
+#else
+
+#pragma warning(disable:4035) // re-enable below
+
+//
+// Large integer add - 64-bits + 64-bits -> 64-bits
+//
+
+__inline LARGE_INTEGER
+NTAPI
+RtlLargeIntegerAdd (
+ LARGE_INTEGER Addend1,
+ LARGE_INTEGER Addend2
+ )
+{
+ __asm {
+ mov eax,Addend1.LowPart ; (eax)=add1.low
+ mov edx,Addend1.HighPart ; (edx)=add1.hi
+ add eax,Addend2.LowPart ; (eax)=sum.low
+ adc edx,Addend2.HighPart ; (edx)=sum.hi
+ }
+}
+
+//
+// Enlarged integer multiply - 32-bits * 32-bits -> 64-bits
+//
+
+__inline LARGE_INTEGER
+NTAPI
+RtlEnlargedIntegerMultiply (
+ LONG Multiplicand,
+ LONG Multiplier
+ )
+{
+ __asm {
+ mov eax, Multiplicand
+ imul Multiplier
+ }
+}
+
+//
+// Unsigned enlarged integer multiply - 32-bits * 32-bits -> 64-bits
+//
+
+__inline LARGE_INTEGER
+NTAPI
+RtlEnlargedUnsignedMultiply (
+ ULONG Multiplicand,
+ ULONG Multiplier
+ )
+{
+ __asm {
+ mov eax, Multiplicand
+ mul Multiplier
+ }
+}
+
+//
+// Enlarged integer divide - 64-bits / 32-bits > 32-bits
+//
+
+__inline ULONG
+NTAPI
+RtlEnlargedUnsignedDivide (
+ IN ULARGE_INTEGER Dividend,
+ IN ULONG Divisor,
+ IN PULONG Remainder
+ )
+{
+ __asm {
+ mov eax, Dividend.LowPart
+ mov edx, Dividend.HighPart
+ mov ecx, Remainder
+ div Divisor ; eax = eax:edx / divisor
+ or ecx, ecx ; save remainer?
+ jz short done
+ mov [ecx], edx
+done:
+ }
+}
+
+
+//
+// Large integer negation - -(64-bits)
+//
+
+__inline LARGE_INTEGER
+NTAPI
+RtlLargeIntegerNegate (
+ LARGE_INTEGER Subtrahend
+ )
+{
+ __asm {
+ mov eax, Subtrahend.LowPart
+ mov edx, Subtrahend.HighPart
+ neg edx ; (edx) = 2s comp of hi part
+ neg eax ; if ((eax) == 0) CF = 0
+ ; else CF = 1
+ sbb edx,0 ; (edx) = (edx) - CF
+ }
+}
+
+//
+// Large integer subtract - 64-bits - 64-bits -> 64-bits.
+//
+
+__inline LARGE_INTEGER
+NTAPI
+RtlLargeIntegerSubtract (
+ LARGE_INTEGER Minuend,
+ LARGE_INTEGER Subtrahend
+ )
+{
+ __asm {
+ mov eax, Minuend.LowPart
+ mov edx, Minuend.HighPart
+ sub eax, Subtrahend.LowPart
+ sbb edx, Subtrahend.HighPart
+ }
+}
+
+#pragma warning(default:4035)
+#endif
+
+
+//
+// Extended large integer magic divide - 64-bits / 32-bits -> 64-bits
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlExtendedMagicDivide (
+ LARGE_INTEGER Dividend,
+ LARGE_INTEGER MagicDivisor,
+ CCHAR ShiftCount
+ );
+
+//
+// Large Integer divide - 64-bits / 32-bits -> 64-bits
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlExtendedLargeIntegerDivide (
+ LARGE_INTEGER Dividend,
+ ULONG Divisor,
+ PULONG Remainder
+ );
+
+//
+// Large Integer divide - 64-bits / 32-bits -> 64-bits
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerDivide (
+ LARGE_INTEGER Dividend,
+ LARGE_INTEGER Divisor,
+ PLARGE_INTEGER Remainder
+ );
+
+//
+// Extended integer multiply - 32-bits * 64-bits -> 64-bits
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlExtendedIntegerMultiply (
+ LARGE_INTEGER Multiplicand,
+ LONG Multiplier
+ );
+
+//
+// Large integer and - 64-bite & 64-bits -> 64-bits.
+//
+
+#define RtlLargeIntegerAnd(Result, Source, Mask) \
+ { \
+ Result.HighPart = Source.HighPart & Mask.HighPart; \
+ Result.LowPart = Source.LowPart & Mask.LowPart; \
+ }
+
+//
+// Large integer conversion routines.
+//
+
+#if defined(MIDL_PASS) || defined(__cplusplus) || !defined(_M_IX86)
+
+//
+// Convert signed integer to large integer.
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlConvertLongToLargeInteger (
+ LONG SignedInteger
+ );
+
+//
+// Convert unsigned integer to large integer.
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlConvertUlongToLargeInteger (
+ ULONG UnsignedInteger
+ );
+
+
+//
+// Large integer shift routines.
+//
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerShiftLeft (
+ LARGE_INTEGER LargeInteger,
+ CCHAR ShiftCount
+ );
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerShiftRight (
+ LARGE_INTEGER LargeInteger,
+ CCHAR ShiftCount
+ );
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerArithmeticShift (
+ LARGE_INTEGER LargeInteger,
+ CCHAR ShiftCount
+ );
+
+#else
+
+#pragma warning(disable:4035) // re-enable below
+
+//
+// Convert signed integer to large integer.
+//
+
+__inline LARGE_INTEGER
+NTAPI
+RtlConvertLongToLargeInteger (
+ LONG SignedInteger
+ )
+{
+ __asm {
+ mov eax, SignedInteger
+ cdq ; (edx:eax) = signed LargeInt
+ }
+}
+
+//
+// Convert unsigned integer to large integer.
+//
+
+__inline LARGE_INTEGER
+NTAPI
+RtlConvertUlongToLargeInteger (
+ ULONG UnsignedInteger
+ )
+{
+ __asm {
+ sub edx, edx ; zero highpart
+ mov eax, UnsignedInteger
+ }
+}
+
+//
+// Large integer shift routines.
+//
+
+__inline LARGE_INTEGER
+NTAPI
+RtlLargeIntegerShiftLeft (
+ LARGE_INTEGER LargeInteger,
+ CCHAR ShiftCount
+ )
+{
+ __asm {
+ mov cl, ShiftCount
+ and cl, 0x3f ; mod 64
+
+ cmp cl, 32
+ jc short sl10
+
+ mov edx, LargeInteger.LowPart ; ShiftCount >= 32
+ xor eax, eax ; lowpart is zero
+ shl edx, cl ; store highpart
+ jmp short done
+
+sl10:
+ mov eax, LargeInteger.LowPart ; ShiftCount < 32
+ mov edx, LargeInteger.HighPart
+ shld edx, eax, cl
+ shl eax, cl
+done:
+ }
+}
+
+
+__inline LARGE_INTEGER
+NTAPI
+RtlLargeIntegerShiftRight (
+ LARGE_INTEGER LargeInteger,
+ CCHAR ShiftCount
+ )
+{
+ __asm {
+ mov cl, ShiftCount
+ and cl, 0x3f ; mod 64
+
+ cmp cl, 32
+ jc short sr10
+
+ mov eax, LargeInteger.HighPart ; ShiftCount >= 32
+ xor edx, edx ; lowpart is zero
+ shr eax, cl ; store highpart
+ jmp short done
+
+sr10:
+ mov eax, LargeInteger.LowPart ; ShiftCount < 32
+ mov edx, LargeInteger.HighPart
+ shrd eax, edx, cl
+ shr edx, cl
+done:
+ }
+}
+
+
+__inline LARGE_INTEGER
+NTAPI
+RtlLargeIntegerArithmeticShift (
+ LARGE_INTEGER LargeInteger,
+ CCHAR ShiftCount
+ )
+{
+ __asm {
+ mov cl, ShiftCount
+ and cl, 3fh ; mod 64
+
+ cmp cl, 32
+ jc short sar10
+
+ mov eax, LargeInteger.HighPart
+ sar eax, cl
+ bt eax, 31 ; sign bit set?
+ sbb edx, edx ; duplicate sign bit into highpart
+ jmp short done
+sar10:
+ mov eax, LargeInteger.LowPart ; (eax) = LargeInteger.LowPart
+ mov edx, LargeInteger.HighPart ; (edx) = LargeInteger.HighPart
+ shrd eax, edx, cl
+ sar edx, cl
+done:
+ }
+}
+
+#pragma warning(default:4035)
+
+#endif
+
+//
+// Large integer comparison routines.
+//
+// BOOLEAN
+// RtlLargeIntegerGreaterThan (
+// LARGE_INTEGER Operand1,
+// LARGE_INTEGER Operand2
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerGreaterThanOrEqualTo (
+// LARGE_INTEGER Operand1,
+// LARGE_INTEGER Operand2
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerEqualTo (
+// LARGE_INTEGER Operand1,
+// LARGE_INTEGER Operand2
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerNotEqualTo (
+// LARGE_INTEGER Operand1,
+// LARGE_INTEGER Operand2
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerLessThan (
+// LARGE_INTEGER Operand1,
+// LARGE_INTEGER Operand2
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerLessThanOrEqualTo (
+// LARGE_INTEGER Operand1,
+// LARGE_INTEGER Operand2
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerGreaterThanZero (
+// LARGE_INTEGER Operand
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerGreaterOrEqualToZero (
+// LARGE_INTEGER Operand
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerEqualToZero (
+// LARGE_INTEGER Operand
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerNotEqualToZero (
+// LARGE_INTEGER Operand
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerLessThanZero (
+// LARGE_INTEGER Operand
+// );
+//
+// BOOLEAN
+// RtlLargeIntegerLessOrEqualToZero (
+// LARGE_INTEGER Operand
+// );
+//
+
+#define RtlLargeIntegerGreaterThan(X,Y) ( \
+ (((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
+ ((X).HighPart > (Y).HighPart) \
+)
+
+#define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) ( \
+ (((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
+ ((X).HighPart > (Y).HighPart) \
+)
+
+#define RtlLargeIntegerEqualTo(X,Y) ( \
+ !(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)) \
+)
+
+#define RtlLargeIntegerNotEqualTo(X,Y) ( \
+ (((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)) \
+)
+
+#define RtlLargeIntegerLessThan(X,Y) ( \
+ (((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
+ ((X).HighPart < (Y).HighPart) \
+)
+
+#define RtlLargeIntegerLessThanOrEqualTo(X,Y) ( \
+ (((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
+ ((X).HighPart < (Y).HighPart) \
+)
+
+#define RtlLargeIntegerGreaterThanZero(X) ( \
+ (((X).HighPart == 0) && ((X).LowPart > 0)) || \
+ ((X).HighPart > 0 ) \
+)
+
+#define RtlLargeIntegerGreaterOrEqualToZero(X) ( \
+ (X).HighPart >= 0 \
+)
+
+#define RtlLargeIntegerEqualToZero(X) ( \
+ !((X).LowPart | (X).HighPart) \
+)
+
+#define RtlLargeIntegerNotEqualToZero(X) ( \
+ ((X).LowPart | (X).HighPart) \
+)
+
+#define RtlLargeIntegerLessThanZero(X) ( \
+ ((X).HighPart < 0) \
+)
+
+#define RtlLargeIntegerLessOrEqualToZero(X) ( \
+ ((X).HighPart < 0) || !((X).LowPart | (X).HighPart) \
+)
+
+
+//
+// Time conversion routines
+//
+
+typedef struct _TIME_FIELDS {
+ CSHORT Year; // range [1601...]
+ CSHORT Month; // range [1..12]
+ CSHORT Day; // range [1..31]
+ CSHORT Hour; // range [0..23]
+ CSHORT Minute; // range [0..59]
+ CSHORT Second; // range [0..59]
+ CSHORT Milliseconds;// range [0..999]
+ CSHORT Weekday; // range [0..6] == [Sunday..Saturday]
+} TIME_FIELDS;
+typedef TIME_FIELDS *PTIME_FIELDS;
+
+// end_ntddk end_ntifs
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlCutoverTimeToSystemTime(
+ PTIME_FIELDS CutoverTime,
+ PLARGE_INTEGER SystemTime,
+ PLARGE_INTEGER CurrentSystemTime,
+ BOOLEAN ThisYear
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSystemTimeToLocalTime (
+ IN PLARGE_INTEGER SystemTime,
+ OUT PLARGE_INTEGER LocalTime
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlLocalTimeToSystemTime (
+ IN PLARGE_INTEGER LocalTime,
+ OUT PLARGE_INTEGER SystemTime
+ );
+
+//
+// A 64 bit Time value -> time field record
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlTimeToElapsedTimeFields (
+ IN PLARGE_INTEGER Time,
+ OUT PTIME_FIELDS TimeFields
+ );
+
+// begin_ntddk begin_ntifs
+
+NTSYSAPI
+VOID
+NTAPI
+RtlTimeToTimeFields (
+ PLARGE_INTEGER Time,
+ PTIME_FIELDS TimeFields
+ );
+
+//
+// A time field record (Weekday ignored) -> 64 bit Time value
+//
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlTimeFieldsToTime (
+ PTIME_FIELDS TimeFields,
+ PLARGE_INTEGER Time
+ );
+
+// end_ntddk
+
+//
+// A 64 bit Time value -> Seconds since the start of 1980
+//
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlTimeToSecondsSince1980 (
+ PLARGE_INTEGER Time,
+ PULONG ElapsedSeconds
+ );
+
+//
+// Seconds since the start of 1980 -> 64 bit Time value
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlSecondsSince1980ToTime (
+ ULONG ElapsedSeconds,
+ PLARGE_INTEGER Time
+ );
+
+//
+// A 64 bit Time value -> Seconds since the start of 1970
+//
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlTimeToSecondsSince1970 (
+ PLARGE_INTEGER Time,
+ PULONG ElapsedSeconds
+ );
+
+//
+// Seconds since the start of 1970 -> 64 bit Time value
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlSecondsSince1970ToTime (
+ ULONG ElapsedSeconds,
+ PLARGE_INTEGER Time
+ );
+
+// end_nthal end_ntifs
+
+//
+// Time Zone Information structure and procedures
+//
+
+typedef struct _RTL_TIME_ZONE_INFORMATION {
+ LONG Bias;
+ WCHAR StandardName[ 32 ];
+ TIME_FIELDS StandardStart;
+ LONG StandardBias;
+ WCHAR DaylightName[ 32 ];
+ TIME_FIELDS DaylightStart;
+ LONG DaylightBias;
+} RTL_TIME_ZONE_INFORMATION, *PRTL_TIME_ZONE_INFORMATION;
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQueryTimeZoneInformation(
+ OUT PRTL_TIME_ZONE_INFORMATION TimeZoneInformation
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetTimeZoneInformation(
+ IN PRTL_TIME_ZONE_INFORMATION TimeZoneInformation
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetActiveTimeBias(
+ IN LONG ActiveBias
+ );
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// The following macros store and retrieve USHORTS and ULONGS from potentially
+// unaligned addresses, avoiding alignment faults. they should probably be
+// rewritten in assembler
+//
+
+#define SHORT_SIZE (sizeof(USHORT))
+#define SHORT_MASK (SHORT_SIZE - 1)
+#define LONG_SIZE (sizeof(LONG))
+#define LONG_MASK (LONG_SIZE - 1)
+#define LOWBYTE_MASK 0x00FF
+
+#define FIRSTBYTE(VALUE) (VALUE & LOWBYTE_MASK)
+#define SECONDBYTE(VALUE) ((VALUE >> 8) & LOWBYTE_MASK)
+#define THIRDBYTE(VALUE) ((VALUE >> 16) & LOWBYTE_MASK)
+#define FOURTHBYTE(VALUE) ((VALUE >> 24) & LOWBYTE_MASK)
+
+//
+// if MIPS Big Endian, order of bytes is reversed.
+//
+
+#define SHORT_LEAST_SIGNIFICANT_BIT 0
+#define SHORT_MOST_SIGNIFICANT_BIT 1
+
+#define LONG_LEAST_SIGNIFICANT_BIT 0
+#define LONG_3RD_MOST_SIGNIFICANT_BIT 1
+#define LONG_2ND_MOST_SIGNIFICANT_BIT 2
+#define LONG_MOST_SIGNIFICANT_BIT 3
+
+//++
+//
+// VOID
+// RtlStoreUshort (
+// PUSHORT ADDRESS
+// USHORT VALUE
+// )
+//
+// Routine Description:
+//
+// This macro stores a USHORT value in at a particular address, avoiding
+// alignment faults.
+//
+// Arguments:
+//
+// ADDRESS - where to store USHORT value
+// VALUE - USHORT to store
+//
+// Return Value:
+//
+// none.
+//
+//--
+
+#define RtlStoreUshort(ADDRESS,VALUE) \
+ if ((ULONG)ADDRESS & SHORT_MASK) { \
+ ((PUCHAR) ADDRESS)[SHORT_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(VALUE)); \
+ ((PUCHAR) ADDRESS)[SHORT_MOST_SIGNIFICANT_BIT ] = (UCHAR)(SECONDBYTE(VALUE)); \
+ } \
+ else { \
+ *((PUSHORT) ADDRESS) = (USHORT) VALUE; \
+ }
+
+
+//++
+//
+// VOID
+// RtlStoreUlong (
+// PULONG ADDRESS
+// ULONG VALUE
+// )
+//
+// Routine Description:
+//
+// This macro stores a ULONG value in at a particular address, avoiding
+// alignment faults.
+//
+// Arguments:
+//
+// ADDRESS - where to store ULONG value
+// VALUE - ULONG to store
+//
+// Return Value:
+//
+// none.
+//
+// Note:
+// Depending on the machine, we might want to call storeushort in the
+// unaligned case.
+//
+//--
+
+#define RtlStoreUlong(ADDRESS,VALUE) \
+ if ((ULONG)ADDRESS & LONG_MASK) { \
+ ((PUCHAR) ADDRESS)[LONG_LEAST_SIGNIFICANT_BIT ] = (UCHAR)(FIRSTBYTE(VALUE)); \
+ ((PUCHAR) ADDRESS)[LONG_3RD_MOST_SIGNIFICANT_BIT ] = (UCHAR)(SECONDBYTE(VALUE)); \
+ ((PUCHAR) ADDRESS)[LONG_2ND_MOST_SIGNIFICANT_BIT ] = (UCHAR)(THIRDBYTE(VALUE)); \
+ ((PUCHAR) ADDRESS)[LONG_MOST_SIGNIFICANT_BIT ] = (UCHAR)(FOURTHBYTE(VALUE)); \
+ } \
+ else { \
+ *((PULONG) ADDRESS) = (ULONG) VALUE; \
+ }
+
+//++
+//
+// VOID
+// RtlRetrieveUshort (
+// PUSHORT DESTINATION_ADDRESS
+// PUSHORT SOURCE_ADDRESS
+// )
+//
+// Routine Description:
+//
+// This macro retrieves a USHORT value from the SOURCE address, avoiding
+// alignment faults. The DESTINATION address is assumed to be aligned.
+//
+// Arguments:
+//
+// DESTINATION_ADDRESS - where to store USHORT value
+// SOURCE_ADDRESS - where to retrieve USHORT value from
+//
+// Return Value:
+//
+// none.
+//
+//--
+
+#define RtlRetrieveUshort(DEST_ADDRESS,SRC_ADDRESS) \
+ if ((ULONG)SRC_ADDRESS & SHORT_MASK) { \
+ ((PUCHAR) DEST_ADDRESS)[0] = ((PUCHAR) SRC_ADDRESS)[0]; \
+ ((PUCHAR) DEST_ADDRESS)[1] = ((PUCHAR) SRC_ADDRESS)[1]; \
+ } \
+ else { \
+ *((PUSHORT) DEST_ADDRESS) = *((PUSHORT) SRC_ADDRESS); \
+ } \
+
+//++
+//
+// VOID
+// RtlRetrieveUlong (
+// PULONG DESTINATION_ADDRESS
+// PULONG SOURCE_ADDRESS
+// )
+//
+// Routine Description:
+//
+// This macro retrieves a ULONG value from the SOURCE address, avoiding
+// alignment faults. The DESTINATION address is assumed to be aligned.
+//
+// Arguments:
+//
+// DESTINATION_ADDRESS - where to store ULONG value
+// SOURCE_ADDRESS - where to retrieve ULONG value from
+//
+// Return Value:
+//
+// none.
+//
+// Note:
+// Depending on the machine, we might want to call retrieveushort in the
+// unaligned case.
+//
+//--
+
+#define RtlRetrieveUlong(DEST_ADDRESS,SRC_ADDRESS) \
+ if ((ULONG)SRC_ADDRESS & LONG_MASK) { \
+ ((PUCHAR) DEST_ADDRESS)[0] = ((PUCHAR) SRC_ADDRESS)[0]; \
+ ((PUCHAR) DEST_ADDRESS)[1] = ((PUCHAR) SRC_ADDRESS)[1]; \
+ ((PUCHAR) DEST_ADDRESS)[2] = ((PUCHAR) SRC_ADDRESS)[2]; \
+ ((PUCHAR) DEST_ADDRESS)[3] = ((PUCHAR) SRC_ADDRESS)[3]; \
+ } \
+ else { \
+ *((PULONG) DEST_ADDRESS) = *((PULONG) SRC_ADDRESS); \
+ }
+// end_ntddk
+
+//++
+//
+// PCHAR
+// RtlOffsetToPointer (
+// PVOID Base,
+// ULONG Offset
+// )
+//
+// Routine Description:
+//
+// This macro generates a pointer which points to the byte that is 'Offset'
+// bytes beyond 'Base'. This is useful for referencing fields within
+// self-relative data structures.
+//
+// Arguments:
+//
+// Base - The address of the base of the structure.
+//
+// Offset - An unsigned integer offset of the byte whose address is to
+// be generated.
+//
+// Return Value:
+//
+// A PCHAR pointer to the byte that is 'Offset' bytes beyond 'Base'.
+//
+//
+//--
+
+#define RtlOffsetToPointer(B,O) ((PCHAR)( ((PCHAR)(B)) + ((ULONG)(O)) ))
+
+
+//++
+//
+// ULONG
+// RtlPointerToOffset (
+// PVOID Base,
+// PVOID Pointer
+// )
+//
+// Routine Description:
+//
+// This macro calculates the offset from Base to Pointer. This is useful
+// for producing self-relative offsets for structures.
+//
+// Arguments:
+//
+// Base - The address of the base of the structure.
+//
+// Pointer - A pointer to a field, presumably within the structure
+// pointed to by Base. This value must be larger than that specified
+// for Base.
+//
+// Return Value:
+//
+// A ULONG offset from Base to Pointer.
+//
+//
+//--
+
+#define RtlPointerToOffset(B,P) ((ULONG)( ((PCHAR)(P)) - ((PCHAR)(B)) ))
+
+// end_ntifs
+
+// begin_ntifs
+//
+// BitMap routines. The following structure, routines, and macros are
+// for manipulating bitmaps. The user is responsible for allocating a bitmap
+// structure (which is really a header) and a buffer (which must be longword
+// aligned and multiple longwords in size).
+//
+
+typedef struct _RTL_BITMAP {
+ ULONG SizeOfBitMap; // Number of bits in bit map
+ PULONG Buffer; // Pointer to the bit map itself
+} RTL_BITMAP;
+typedef RTL_BITMAP *PRTL_BITMAP;
+
+//
+// The following routine initializes a new bitmap. It does not alter the
+// data currently in the bitmap. This routine must be called before
+// any other bitmap routine/macro.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitializeBitMap (
+ PRTL_BITMAP BitMapHeader,
+ PULONG BitMapBuffer,
+ ULONG SizeOfBitMap
+ );
+
+//
+// The following two routines either clear or set all of the bits
+// in a bitmap.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlClearAllBits (
+ PRTL_BITMAP BitMapHeader
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlSetAllBits (
+ PRTL_BITMAP BitMapHeader
+ );
+
+//
+// The following two routines locate a contiguous region of either
+// clear or set bits within the bitmap. The region will be at least
+// as large as the number specified, and the search of the bitmap will
+// begin at the specified hint index (which is a bit index within the
+// bitmap, zero based). The return value is the bit index of the located
+// region (zero based) or -1 (i.e., 0xffffffff) if such a region cannot
+// be located
+//
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlFindClearBits (
+ PRTL_BITMAP BitMapHeader,
+ ULONG NumberToFind,
+ ULONG HintIndex
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlFindSetBits (
+ PRTL_BITMAP BitMapHeader,
+ ULONG NumberToFind,
+ ULONG HintIndex
+ );
+
+//
+// The following two routines locate a contiguous region of either
+// clear or set bits within the bitmap and either set or clear the bits
+// within the located region. The region will be as large as the number
+// specified, and the search for the region will begin at the specified
+// hint index (which is a bit index within the bitmap, zero based). The
+// return value is the bit index of the located region (zero based) or
+// -1 (i.e., 0xffffffff) if such a region cannot be located. If a region
+// cannot be located then the setting/clearing of the bitmap is not performed.
+//
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlFindClearBitsAndSet (
+ PRTL_BITMAP BitMapHeader,
+ ULONG NumberToFind,
+ ULONG HintIndex
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlFindSetBitsAndClear (
+ PRTL_BITMAP BitMapHeader,
+ ULONG NumberToFind,
+ ULONG HintIndex
+ );
+
+//
+// The following two routines clear or set bits within a specified region
+// of the bitmap. The starting index is zero based.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlClearBits (
+ PRTL_BITMAP BitMapHeader,
+ ULONG StartingIndex,
+ ULONG NumberToClear
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlSetBits (
+ PRTL_BITMAP BitMapHeader,
+ ULONG StartingIndex,
+ ULONG NumberToSet
+ );
+
+//
+// The following two routines locate the longest contiguous region of
+// clear or set bits within the bitmap. The returned starting index value
+// denotes the first contiguous region located satisfying our requirements
+// The return value is the length (in bits) of the longest region found.
+//
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlFindLongestRunClear (
+ PRTL_BITMAP BitMapHeader,
+ PULONG StartingIndex
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlFindLongestRunSet (
+ PRTL_BITMAP BitMapHeader,
+ PULONG StartingIndex
+ );
+
+//
+// The following two routines locate the first contiguous region of
+// clear or set bits within the bitmap. The returned starting index value
+// denotes the first contiguous region located satisfying our requirements
+// The return value is the length (in bits) of the region found.
+//
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlFindFirstRunClear (
+ PRTL_BITMAP BitMapHeader,
+ PULONG StartingIndex
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlFindFirstRunSet (
+ PRTL_BITMAP BitMapHeader,
+ PULONG StartingIndex
+ );
+
+//
+// The following macro returns the value of the bit stored within the
+// bitmap at the specified location. If the bit is set a value of 1 is
+// returned otherwise a value of 0 is returned.
+//
+// ULONG
+// RtlCheckBit (
+// PRTL_BITMAP BitMapHeader,
+// ULONG BitPosition
+// );
+//
+//
+// To implement CheckBit the macro retrieves the longword containing the
+// bit in question, shifts the longword to get the bit in question into the
+// low order bit position and masks out all other bits.
+//
+
+#define RtlCheckBit(BMH,BP) ((((BMH)->Buffer[(BP) / 32]) >> ((BP) % 32)) & 0x1)
+
+//
+// The following two procedures return to the caller the total number of
+// clear or set bits within the specified bitmap.
+//
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlNumberOfClearBits (
+ PRTL_BITMAP BitMapHeader
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlNumberOfSetBits (
+ PRTL_BITMAP BitMapHeader
+ );
+
+//
+// The following two procedures return to the caller a boolean value
+// indicating if the specified range of bits are all clear or set.
+//
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlAreBitsClear (
+ PRTL_BITMAP BitMapHeader,
+ ULONG StartingIndex,
+ ULONG Length
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlAreBitsSet (
+ PRTL_BITMAP BitMapHeader,
+ ULONG StartingIndex,
+ ULONG Length
+ );
+
+// end_nthal end_ntifs
+
+// begin_ntsrv
+//
+// Security ID RTL routine definitions
+//
+
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlValidSid (
+ PSID Sid
+ );
+
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlEqualSid (
+ PSID Sid1,
+ PSID Sid2
+ );
+
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlEqualPrefixSid (
+ PSID Sid1,
+ PSID Sid2
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlLengthRequiredSid (
+ ULONG SubAuthorityCount
+ );
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlFreeSid(
+ IN PSID Sid
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAllocateAndInitializeSid(
+ IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
+ IN UCHAR SubAuthorityCount,
+ IN ULONG SubAuthority0,
+ IN ULONG SubAuthority1,
+ IN ULONG SubAuthority2,
+ IN ULONG SubAuthority3,
+ IN ULONG SubAuthority4,
+ IN ULONG SubAuthority5,
+ IN ULONG SubAuthority6,
+ IN ULONG SubAuthority7,
+ OUT PSID *Sid
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlInitializeSid (
+ PSID Sid,
+ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
+ UCHAR SubAuthorityCount
+ );
+
+NTSYSAPI
+PSID_IDENTIFIER_AUTHORITY
+NTAPI
+RtlIdentifierAuthoritySid (
+ PSID Sid
+ );
+
+NTSYSAPI
+PULONG
+NTAPI
+RtlSubAuthoritySid (
+ PSID Sid,
+ ULONG SubAuthority
+ );
+
+NTSYSAPI
+PUCHAR
+NTAPI
+RtlSubAuthorityCountSid (
+ PSID Sid
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlLengthSid (
+ PSID Sid
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCopySid (
+ ULONG DestinationSidLength,
+ PSID DestinationSid,
+ PSID SourceSid
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCopySidAndAttributesArray (
+ ULONG ArrayLength,
+ PSID_AND_ATTRIBUTES Source,
+ ULONG TargetSidBufferSize,
+ PSID_AND_ATTRIBUTES TargetArrayElement,
+ PSID TargetSid,
+ PSID *NextTargetSid,
+ PULONG RemainingTargetSidSize
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlConvertSidToUnicodeString(
+ PUNICODE_STRING UnicodeString,
+ PSID Sid,
+ BOOLEAN AllocateDestinationString
+ );
+
+// end_ntsrv
+
+// begin_ntifs
+//
+// LUID RTL routine definitions
+//
+
+// begin_ntddk
+
+#define RtlEqualLuid(L1, L2) (((L1)->HighPart == (L2)->HighPart) && \
+ ((L1)->LowPart == (L2)->LowPart))
+
+#if !defined(MIDL_PASS)
+
+__inline LUID
+NTAPI
+RtlConvertLongToLuid(
+ LONG Long
+ )
+{
+ LUID TempLuid;
+ LARGE_INTEGER TempLi;
+
+ TempLi = RtlConvertLongToLargeInteger(Long);
+ TempLuid.LowPart = TempLi.LowPart;
+ TempLuid.HighPart = TempLi.HighPart;
+ return(TempLuid);
+}
+
+__inline LUID
+NTAPI
+RtlConvertUlongToLuid(
+ ULONG Ulong
+ )
+{
+ LUID TempLuid;
+
+ TempLuid.LowPart = Ulong;
+ TempLuid.HighPart = 0;
+ return(TempLuid);
+}
+#endif
+
+// end_ntddk
+
+NTSYSAPI
+VOID
+NTAPI
+RtlCopyLuid (
+ PLUID DestinationLuid,
+ PLUID SourceLuid
+ );
+
+// end_ntifs
+
+NTSYSAPI
+VOID
+NTAPI
+RtlCopyLuidAndAttributesArray (
+ ULONG ArrayLength,
+ PLUID_AND_ATTRIBUTES Source,
+ PLUID_AND_ATTRIBUTES Target
+ );
+
+
+//
+// ACCESS_MASK RTL routine definitions
+//
+
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlAreAllAccessesGranted(
+ ACCESS_MASK GrantedAccess,
+ ACCESS_MASK DesiredAccess
+ );
+
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlAreAnyAccessesGranted(
+ ACCESS_MASK GrantedAccess,
+ ACCESS_MASK DesiredAccess
+ );
+
+// begin_ntddk begin_ntifs begin_ntsrv
+NTSYSAPI
+VOID
+NTAPI
+RtlMapGenericMask(
+ PACCESS_MASK AccessMask,
+ PGENERIC_MAPPING GenericMapping
+ );
+// end_ntddk end_ntifs end_ntsrv
+
+
+//
+// ACL RTL routine definitions
+//
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlValidAcl (
+ PACL Acl
+ );
+
+NTSYSAPI // ntifs
+NTSTATUS // ntifs
+NTAPI // ntifs
+RtlCreateAcl ( // ntifs
+ PACL Acl, // ntifs
+ ULONG AclLength, // ntifs
+ ULONG AclRevision // ntifs
+ ); // ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQueryInformationAcl (
+ PACL Acl,
+ PVOID AclInformation,
+ ULONG AclInformationLength,
+ ACL_INFORMATION_CLASS AclInformationClass
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetInformationAcl (
+ PACL Acl,
+ PVOID AclInformation,
+ ULONG AclInformationLength,
+ ACL_INFORMATION_CLASS AclInformationClass
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAddAce (
+ PACL Acl,
+ ULONG AceRevision,
+ ULONG StartingAceIndex,
+ PVOID AceList,
+ ULONG AceListLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDeleteAce (
+ PACL Acl,
+ ULONG AceIndex
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetAce (
+ PACL Acl,
+ ULONG AceIndex,
+ PVOID *Ace
+ );
+
+
+NTSYSAPI // ntifs
+NTSTATUS // ntifs
+NTAPI // ntifs
+RtlAddAccessAllowedAce ( // ntifs
+ PACL Acl, // ntifs
+ ULONG AceRevision, // ntifs
+ ACCESS_MASK AccessMask, // ntifs
+ PSID Sid // ntifs
+ ); // ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAddAccessDeniedAce (
+ PACL Acl,
+ ULONG AceRevision,
+ ACCESS_MASK AccessMask,
+ PSID Sid
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAddAuditAccessAce (
+ PACL Acl,
+ ULONG AceRevision,
+ ACCESS_MASK AccessMask,
+ PSID Sid,
+ BOOLEAN AuditSuccess,
+ BOOLEAN AuditFailure
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlFirstFreeAce (
+ PACL Acl,
+ PVOID *FirstFree
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAddCompoundAce (
+ IN PACL Acl,
+ IN ULONG AceRevision,
+ IN UCHAR AceType,
+ IN ACCESS_MASK AccessMask,
+ IN PSID ServerSid,
+ IN PSID ClientSid
+ );
+
+
+// begin_ntddk begin_ntifs
+//
+// SecurityDescriptor RTL routine definitions
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ ULONG Revision
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlValidSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlLengthSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+
+// end_ntddk end_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetControlSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSECURITY_DESCRIPTOR_CONTROL Control,
+ PULONG Revision
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetAttributesSecurityDescriptor(
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+ IN SECURITY_DESCRIPTOR_CONTROL Control,
+ IN OUT PULONG Revision
+ );
+
+// begin_ntddk begin_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetDaclSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ BOOLEAN DaclPresent,
+ PACL Dacl,
+ BOOLEAN DaclDefaulted
+ );
+
+// end_ntddk end_ntifs
+
+// begin_ntsrv
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetDaclSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PBOOLEAN DaclPresent,
+ PACL *Dacl,
+ PBOOLEAN DaclDefaulted
+ );
+// end_ntsrv
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetSaclSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ BOOLEAN SaclPresent,
+ PACL Sacl,
+ BOOLEAN SaclDefaulted
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetSaclSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PBOOLEAN SaclPresent,
+ PACL *Sacl,
+ PBOOLEAN SaclDefaulted
+ );
+
+
+NTSYSAPI // ntifs
+NTSTATUS // ntifs
+NTAPI // ntifs
+RtlSetOwnerSecurityDescriptor ( // ntifs
+ PSECURITY_DESCRIPTOR SecurityDescriptor, // ntifs
+ PSID Owner, // ntifs
+ BOOLEAN OwnerDefaulted // ntifs
+ ); // ntifs
+
+
+// begin_ntsrv
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetOwnerSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID *Owner,
+ PBOOLEAN OwnerDefaulted
+ );
+// end_ntsrv
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetGroupSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID Group,
+ BOOLEAN GroupDefaulted
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetGroupSecurityDescriptor (
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ PSID *Group,
+ PBOOLEAN GroupDefaulted
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlMakeSelfRelativeSD(
+ PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
+ PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
+ PULONG BufferLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAbsoluteToSelfRelativeSD(
+ PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
+ PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
+ PULONG BufferLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSelfRelativeToAbsoluteSD(
+ PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
+ PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
+ PULONG AbsoluteSecurityDescriptorSize,
+ PACL Dacl,
+ PULONG DaclSize,
+ PACL Sacl,
+ PULONG SaclSize,
+ PSID Owner,
+ PULONG OwnerSize,
+ PSID PrimaryGroup,
+ PULONG PrimaryGroupSize
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlNewSecurityGrantedAccess(
+ ACCESS_MASK DesiredAccess,
+ PPRIVILEGE_SET Privileges,
+ PULONG Length,
+ HANDLE Token,
+ PGENERIC_MAPPING GenericMapping,
+ PACCESS_MASK RemainingDesiredAccess
+ );
+
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlImpersonateSelf(
+ IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAdjustPrivilege(
+ ULONG Privilege,
+ BOOLEAN Enable,
+ BOOLEAN Client,
+ PBOOLEAN WasEnabled
+ );
+
+
+
+NTSYSAPI
+VOID
+NTAPI
+RtlRunEncodeUnicodeString(
+ PUCHAR Seed OPTIONAL,
+ PUNICODE_STRING String
+ );
+
+
+NTSYSAPI
+VOID
+NTAPI
+RtlRunDecodeUnicodeString(
+ UCHAR Seed,
+ PUNICODE_STRING String
+ );
+
+
+NTSYSAPI
+VOID
+NTAPI
+RtlEraseUnicodeString(
+ PUNICODE_STRING String
+ );
+
+//
+// Macro to make a known ACE type ready for applying to a specific object type.
+// This is done by mapping any generic access types, and clearing
+// the special access types field.
+//
+// This routine should only be used on DSA define ACEs.
+//
+// Parameters:
+//
+// Ace - Points to an ACE to be applied. Only ACEs that are not
+// InheritOnly are mapped.
+//
+// Mapping - Points to a generic mapping array for the type of
+// object the ACE is being applied to.
+//
+
+ //
+ // Clear invalid bits. Note that ACCESS_SYSTEM_SECURITY is
+ // valid in SACLs, but not in DACLs. So, leave it in audit and
+ // alarm ACEs, but clear it in access allowed and denied ACEs.
+ //
+
+#define RtlApplyAceToObject(Ace,Mapping) { \
+ if (!FlagOn((Ace)->AceFlags, INHERIT_ONLY_ACE) ) { \
+ RtlMapGenericMask( &((PKNOWN_ACE)(Ace))->Mask, (Mapping)); \
+ \
+ if ( (((PKNOWN_ACE)(Ace))->Header.AceType == ACCESS_ALLOWED_ACE_TYPE) || \
+ (((PKNOWN_ACE)(Ace))->Header.AceType == ACCESS_DENIED_ACE_TYPE) || \
+ (((PKNOWN_ACE)(Ace))->Header.AceType == ACCESS_ALLOWED_COMPOUND_ACE_TYPE) ) { \
+ ((PKNOWN_ACE)(Ace))->Mask &= (Mapping)->GenericAll; \
+ } else { \
+ ((PKNOWN_ACE)(Ace))->Mask &= ((Mapping)->GenericAll | \
+ ACCESS_SYSTEM_SECURITY); \
+ } \
+ } }
+
+//
+// Service to get the primary domain name/sid of the local machine
+// Callable only from user mode.
+//
+
+//NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGetPrimaryDomain(
+ IN ULONG SidLength,
+ OUT PBOOLEAN PrimaryDomainPresent,
+ OUT PUNICODE_STRING PrimaryDomainName,
+ OUT PUSHORT RequiredNameLength,
+ OUT PSID PrimaryDomainSid OPTIONAL,
+ OUT PULONG RequiredSidLength
+ );
+
+//!!!!!!!!!!!!!!! Temporary user mode Registry system services !!!!!!//
+// //
+// These services will be eliminted when BryanWi implements the real //
+// registry object. //
+ //
+NTSTATUS //
+RtlpNtOpenKey( //
+ PHANDLE KeyHandle, //
+ ACCESS_MASK DesiredAccess, //
+ POBJECT_ATTRIBUTES ObjectAttributes, //
+ ULONG Options //
+ ); //
+ //
+NTSTATUS //
+RtlpNtCreateKey( //
+ PHANDLE KeyHandle, //
+ ACCESS_MASK DesiredAccess, //
+ POBJECT_ATTRIBUTES ObjectAttributes, //
+ ULONG Options, //
+ PUNICODE_STRING Provider, //
+ PULONG Disposition //
+ ); //
+ //
+NTSTATUS //
+RtlpNtEnumerateSubKey( //
+ HANDLE KeyHandle, //
+ PUNICODE_STRING SubKeyName, //
+ ULONG Index, //
+ PLARGE_INTEGER LastWriteTime //
+ ); //
+ //
+NTSTATUS //
+RtlpNtQueryValueKey( //
+ HANDLE KeyHandle, //
+ PULONG KeyValueType, //
+ PVOID KeyValue, //
+ PULONG KeyValueLength, //
+ PLARGE_INTEGER LastWriteTime //
+ ); //
+ //
+NTSTATUS //
+RtlpNtSetValueKey( //
+ HANDLE KeyHandle, //
+ ULONG KeyValueType, //
+ PVOID KeyValue, //
+ ULONG KeyValueLength //
+ ); //
+ //
+NTSTATUS //
+RtlpNtMakeTemporaryKey( //
+ HANDLE KeyHandle //
+ ); //
+ //
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// Extract the SIDs from a compound ACE.
+//
+
+#define RtlCompoundAceServerSid( Ace ) ((PSID)&((PKNOWN_COMPOUND_ACE)(Ace))->SidStart)
+
+#define RtlCompoundAceClientSid( Ace ) ((PSID)(((ULONG)(&((PKNOWN_COMPOUND_ACE)(Ace))->SidStart))+RtlLengthSid( RtlCompoundAceServerSid((Ace)))))
+
+
+
+// begin_winnt
+
+typedef struct _MESSAGE_RESOURCE_ENTRY {
+ USHORT Length;
+ USHORT Flags;
+ UCHAR Text[ 1 ];
+} MESSAGE_RESOURCE_ENTRY, *PMESSAGE_RESOURCE_ENTRY;
+
+#define MESSAGE_RESOURCE_UNICODE 0x0001
+
+typedef struct _MESSAGE_RESOURCE_BLOCK {
+ ULONG LowId;
+ ULONG HighId;
+ ULONG OffsetToEntries;
+} MESSAGE_RESOURCE_BLOCK, *PMESSAGE_RESOURCE_BLOCK;
+
+typedef struct _MESSAGE_RESOURCE_DATA {
+ ULONG NumberOfBlocks;
+ MESSAGE_RESOURCE_BLOCK Blocks[ 1 ];
+} MESSAGE_RESOURCE_DATA, *PMESSAGE_RESOURCE_DATA;
+
+// end_winnt
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlFindMessage(
+ PVOID DllHandle,
+ ULONG MessageTableId,
+ ULONG MessageLanguageId,
+ ULONG MessageId,
+ PMESSAGE_RESOURCE_ENTRY *MessageEntry
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlFormatMessage(
+ IN PWSTR MessageFormat,
+ IN ULONG MaximumWidth OPTIONAL,
+ IN BOOLEAN IgnoreInserts,
+ IN BOOLEAN ArgumentsAreAnsi,
+ IN BOOLEAN ArgumentsAreAnArray,
+ IN va_list *Arguments,
+ OUT PWSTR Buffer,
+ IN ULONG Length,
+ OUT PULONG ReturnLength OPTIONAL
+ );
+
+
+//
+// Services providing a simple transaction capability for operations on
+// the registration database.
+//
+
+
+typedef enum _RTL_RXACT_OPERATION {
+ RtlRXactOperationDelete = 1, // Causes sub-key to be deleted
+ RtlRXactOperationSetValue, // Sets sub-key value (creates key(s) if necessary)
+ RtlRXactOperationDelAttribute,
+ RtlRXactOperationSetAttribute
+} RTL_RXACT_OPERATION, *PRTL_RXACT_OPERATION;
+
+
+typedef struct _RTL_RXACT_LOG {
+ ULONG OperationCount;
+ ULONG LogSize; // Includes sizeof( LOG_HEADER )
+ ULONG LogSizeInUse;
+// UCHAR LogData[ ANYSIZE_ARRAY ]
+} RTL_RXACT_LOG, *PRTL_RXACT_LOG;
+
+
+
+typedef struct _RTL_RXACT_CONTEXT {
+ HANDLE RootRegistryKey;
+ HANDLE RXactKey;
+ BOOLEAN HandlesValid; // Handles found in Log entries are legit
+ PRTL_RXACT_LOG RXactLog;
+} RTL_RXACT_CONTEXT, *PRTL_RXACT_CONTEXT;
+
+
+
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlInitializeRXact(
+ IN HANDLE RootRegistryKey,
+ IN BOOLEAN CommitIfNecessary,
+ OUT PRTL_RXACT_CONTEXT *RXactContext
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlStartRXact(
+ IN PRTL_RXACT_CONTEXT RXactContext
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAbortRXact(
+ IN PRTL_RXACT_CONTEXT RXactContext
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAddAttributeActionToRXact(
+ IN PRTL_RXACT_CONTEXT RXactContext,
+ IN RTL_RXACT_OPERATION Operation,
+ IN PUNICODE_STRING SubKeyName,
+ IN HANDLE KeyHandle,
+ IN PUNICODE_STRING AttributeName,
+ IN ULONG NewValueType,
+ IN PVOID NewValue,
+ IN ULONG NewValueLength
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAddActionToRXact(
+ IN PRTL_RXACT_CONTEXT RXactContext,
+ IN RTL_RXACT_OPERATION Operation,
+ IN PUNICODE_STRING SubKeyName,
+ IN ULONG NewKeyValueType,
+ IN PVOID NewKeyValue OPTIONAL,
+ IN ULONG NewKeyValueLength
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlApplyRXact(
+ IN PRTL_RXACT_CONTEXT RXactContext
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlApplyRXactNoFlush(
+ IN PRTL_RXACT_CONTEXT RXactContext
+ );
+
+
+
+//
+// Routine for converting NT status codes to DOS/OS|2 equivalents.
+//
+// begin_ntsrv
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlNtStatusToDosError (
+ NTSTATUS Status
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlNtStatusToDosErrorNoTeb (
+ NTSTATUS Status
+ );
+
+// begin_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCustomCPToUnicodeN(
+ IN PCPTABLEINFO CustomCP,
+ OUT PWCH UnicodeString,
+ IN ULONG MaxBytesInUnicodeString,
+ OUT PULONG BytesInUnicodeString OPTIONAL,
+ IN PCH CustomCPString,
+ IN ULONG BytesInCustomCPString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUnicodeToCustomCPN(
+ IN PCPTABLEINFO CustomCP,
+ OUT PCH CustomCPString,
+ IN ULONG MaxBytesInCustomCPString,
+ OUT PULONG BytesInCustomCPString OPTIONAL,
+ IN PWCH UnicodeString,
+ IN ULONG BytesInUnicodeString
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUpcaseUnicodeToCustomCPN(
+ IN PCPTABLEINFO CustomCP,
+ OUT PCH CustomCPString,
+ IN ULONG MaxBytesInCustomCPString,
+ OUT PULONG BytesInCustomCPString OPTIONAL,
+ IN PWCH UnicodeString,
+ IN ULONG BytesInUnicodeString
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitCodePageTable(
+ IN PUSHORT TableBase,
+ OUT PCPTABLEINFO CodePageTable
+ );
+
+// end_ntsrv end_ntifs
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitNlsTables(
+ IN PUSHORT AnsiNlsBase,
+ IN PUSHORT OemNlsBase,
+ IN PUSHORT LanguageNlsBase,
+ OUT PNLSTABLEINFO TableInfo
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlResetRtlTranslations(
+ PNLSTABLEINFO TableInfo
+ );
+
+
+NTSYSAPI
+VOID
+NTAPI
+RtlGetDefaultCodePage(
+ OUT PUSHORT AnsiCodePage,
+ OUT PUSHORT OemCodePage
+ );
+
+typedef struct _RTL_EVENT {
+ USHORT Length;
+ USHORT EventId;
+ CLIENT_ID ClientId;
+ USHORT StackBackTraceLength;
+ USHORT OffsetToParameterData;
+} RTL_EVENT, *PRTL_EVENT;
+
+typedef struct _RTL_EVENT_LOG {
+ ULONG Flags;
+ ULONG EventClassMask;
+ ULONG CountOfClients;
+ CLIENT_ID DisplayClientId;
+ HANDLE ClientMutant;
+ HANDLE ClientSemaphore;
+ HANDLE ServerMutant;
+ HANDLE ServerSemaphore;
+ ULONG MinimumOffset;
+ ULONG MaximumOffset;
+ ULONG CurrentReadOffset;
+ ULONG CurrentWriteOffset;
+ ULONG CommitLimitOffset;
+} RTL_EVENT_LOG, *PRTL_EVENT_LOG;
+
+//
+// Valid values for Flags field.
+//
+
+#define RTL_EVENT_LOG_INHERIT 0x00000001
+
+//
+// Valid values for EventClassMask field
+//
+
+#define RTL_EVENT_CLASS_VM 0x00000001
+#define RTL_EVENT_CLASS_IO 0x00000002
+#define RTL_EVENT_CLASS_OB 0x00000004
+#define RTL_EVENT_CLASS_PAGE_FAULT 0x00000008
+#define RTL_EVENT_CLASS_TRANSITION_FAULT 0x00000010
+#define RTL_EVENT_CLASS_HEAP_ALL 0xFFFF0000
+#define RTL_EVENT_CLASS_PROCESS_HEAP 0x00010000
+#define RTL_EVENT_CLASS_PRIVATE_HEAP 0x00020000
+#define RTL_EVENT_CLASS_KERNEL_HEAP 0x00040000
+#define RTL_EVENT_CLASS_GDI_HEAP 0x00080000
+#define RTL_EVENT_CLASS_USER_HEAP 0x00100000
+#define RTL_EVENT_CLASS_CONSOLE_HEAP 0x00200000
+#define RTL_EVENT_CLASS_DESKTOP_HEAP 0x00400000
+#define RTL_EVENT_CLASS_CSR_SHARED_HEAP 0x00800000
+#define RTL_EVENT_CLASS_CSR_SERVER_HEAP 0x01000000
+
+typedef struct _RTL_EVENT_PARAMETER_VALUE_INFO {
+ ULONG Length;
+ ULONG Value;
+ CHAR ValueName[1];
+} RTL_EVENT_PARAMETER_VALUE_INFO, *PRTL_EVENT_PARAMETER_VALUE_INFO;
+
+typedef struct _RTL_EVENT_PARAMETER_INFO {
+ USHORT Length;
+ USHORT Type;
+ USHORT NumberOfValueNames;
+ USHORT OffsetToValueNames;
+ CHAR Label[1];
+} RTL_EVENT_PARAMETER_INFO, *PRTL_EVENT_PARAMETER_INFO;
+
+//
+// Valid values for parameter type
+//
+
+#define RTL_EVENT_STATUS_PARAM 0x0
+#define RTL_EVENT_ULONG_PARAM 0x1
+#define RTL_EVENT_ENUM_PARAM 0x2
+#define RTL_EVENT_FLAGS_PARAM 0x3
+#define RTL_EVENT_PWSTR_PARAM 0x4
+#define RTL_EVENT_PUNICODE_STRING_PARAM 0x5
+#define RTL_EVENT_PANSI_STRING_PARAM 0x6
+#define RTL_EVENT_ADDRESS_PARAM 0x7
+#define RTL_EVENT_STRUCTURE_PARAM 0x8
+
+typedef struct _RTL_EVENT_ID_INFO {
+ USHORT Length;
+ USHORT EventId;
+ LIST_ENTRY Entry;
+ USHORT NumberOfParameters;
+ USHORT OffsetToParameterInfo;
+ CHAR Name[1];
+} RTL_EVENT_ID_INFO, *PRTL_EVENT_ID_INFO;
+
+PRTL_EVENT_ID_INFO
+_cdecl
+RtlCreateEventId(
+ IN OUT PVOID *Buffer OPTIONAL,
+ IN PULONG Size OPTIONAL,
+ IN PCHAR Name,
+ IN ULONG NumberOfParameters OPTIONAL,
+ ...
+ );
+
+#define RTL_EVENT_MAXIMUM_PARAMETERS 32
+#define RTL_EVENT_MAXIMUM_VALUE_PAIRS 64
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlAreLogging(
+ IN ULONG EventClass
+ );
+
+NTSYSAPI
+NTSTATUS
+_cdecl
+RtlLogEvent(
+ IN PRTL_EVENT_ID_INFO EventId,
+ IN ULONG EventClassMask,
+ ...
+ );
+
+#ifndef NTOS_KERNEL_RUNTIME
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateEventLog(
+ IN HANDLE TargetProcess,
+ IN ULONG Flags,
+ IN ULONG EventClassMask,
+ OUT PRTL_EVENT_LOG* ReturnedEventLog
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlWaitForEvent(
+ IN PRTL_EVENT_LOG EventLog,
+ IN ULONG EventBufferSize,
+ OUT PRTL_EVENT EventBuffer,
+ OUT PRTL_EVENT_ID_INFO *ReturnedEventId
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDestroyEventLog(
+ IN PRTL_EVENT_LOG EventLog
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlCloseEventLog( VOID );
+
+#endif // ndef NTOS_KERNEL_RUNTIME
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _NTRTL_
diff --git a/public/sdk/inc/ntsam.h b/public/sdk/inc/ntsam.h
new file mode 100644
index 000000000..445b08cb4
--- /dev/null
+++ b/public/sdk/inc/ntsam.h
@@ -0,0 +1,1596 @@
+/*++ BUILD Version: 0006 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntsam.h
+
+Abstract:
+
+ This module describes the data types and procedure prototypes
+ that make up the NT Security Accounts Manager. This includes
+ API's exported by SAM and related subsystems.
+
+Author:
+
+ Edwin Hoogerbeets (w-edwinh) 3-May-1990
+
+Revision History:
+
+ 30-Nov-1990 [w-mikep] Updated code to reflect changes in version 1.4
+ of Sam Document.
+
+ 20-May-1991 (JimK) Updated to version 1.8 of SAM spec.
+
+ 10-Sep-1991 (JohnRo) PC-LINT found a portability problem.
+
+ 23-Jan-1991 (ChadS) Udated to version 1.14 of SAM spec.
+
+--*/
+
+#ifndef _NTSAM_
+#define _NTSAM_
+
+
+#ifndef PPULONG
+typedef PULONG *PPULONG;
+#endif //PPULONG
+
+//
+// An attempt to lookup more than this number of names or SIDs in
+// a single call will be rejected with an INSUFFICIENT_RESOURCES
+// status.
+//
+
+#define SAM_MAXIMUM_LOOKUP_COUNT (1000)
+
+
+//
+// An attempt to pass names totalling more than the following number
+// of bytes in length will be rejected with an INSUFFICIENT_RESOURCES
+// status.
+//
+
+#define SAM_MAXIMUM_LOOKUP_LENGTH (32000)
+
+//
+// An attempt to set a password longer than this number of characters
+// will fail.
+//
+
+#define SAM_MAX_PASSWORD_LENGTH (256)
+
+
+
+
+typedef PVOID SAM_HANDLE, *PSAM_HANDLE;
+
+typedef ULONG SAM_ENUMERATE_HANDLE, *PSAM_ENUMERATE_HANDLE;
+
+typedef struct _SAM_RID_ENUMERATION {
+ ULONG RelativeId;
+ UNICODE_STRING Name;
+} SAM_RID_ENUMERATION, *PSAM_RID_ENUMERATION;
+
+typedef struct _SAM_SID_ENUMERATION {
+ PSID Sid;
+ UNICODE_STRING Name;
+} SAM_SID_ENUMERATION, *PSAM_SID_ENUMERATION;
+
+
+
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// obsolete well-known account names. //
+// These became obsolete with the flexadmin model. //
+// These will be deleted shortly - DON'T USE THESE //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+#define DOMAIN_ADMIN_USER_NAME "ADMIN"
+#define DOMAIN_ADMIN_NAME "D_ADMIN"
+#define DOMAIN_ADMIN_NAMEW L"D_ADMIN"
+#define DOMAIN_USERS_NAME "D_USERS"
+#define DOMAIN_USERS_NAMEW L"D_USERS"
+#define DOMAIN_GUESTS_NAME "D_GUESTS"
+#define DOMAIN_ACCOUNT_OPERATORS_NAME "D_ACCOUN"
+#define DOMAIN_ACCOUNT_OPERATORS_NAMEW L"D_ACCOUN"
+#define DOMAIN_SERVER_OPERATORS_NAME "D_SERVER"
+#define DOMAIN_SERVER_OPERATORS_NAMEW L"D_SERVER"
+#define DOMAIN_PRINT_OPERATORS_NAME "D_PRINT"
+#define DOMAIN_PRINT_OPERATORS_NAMEW L"D_PRINT"
+#define DOMAIN_COMM_OPERATORS_NAME "D_COMM"
+#define DOMAIN_COMM_OPERATORS_NAMEW L"D_COMM"
+#define DOMAIN_BACKUP_OPERATORS_NAME "D_BACKUP"
+#define DOMAIN_RESTORE_OPERATORS_NAME "D_RESTOR"
+
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Server Object Related Definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+//
+// Access rights for server object
+//
+
+#define SAM_SERVER_CONNECT 0x0001
+#define SAM_SERVER_SHUTDOWN 0x0002
+#define SAM_SERVER_INITIALIZE 0x0004
+#define SAM_SERVER_CREATE_DOMAIN 0x0008
+#define SAM_SERVER_ENUMERATE_DOMAINS 0x0010
+#define SAM_SERVER_LOOKUP_DOMAIN 0x0020
+
+
+#define SAM_SERVER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ SAM_SERVER_CONNECT |\
+ SAM_SERVER_INITIALIZE |\
+ SAM_SERVER_CREATE_DOMAIN |\
+ SAM_SERVER_SHUTDOWN |\
+ SAM_SERVER_ENUMERATE_DOMAINS |\
+ SAM_SERVER_LOOKUP_DOMAIN)
+
+#define SAM_SERVER_READ (STANDARD_RIGHTS_READ |\
+ SAM_SERVER_ENUMERATE_DOMAINS)
+
+#define SAM_SERVER_WRITE (STANDARD_RIGHTS_WRITE |\
+ SAM_SERVER_INITIALIZE |\
+ SAM_SERVER_CREATE_DOMAIN |\
+ SAM_SERVER_SHUTDOWN)
+
+#define SAM_SERVER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ SAM_SERVER_CONNECT |\
+ SAM_SERVER_LOOKUP_DOMAIN)
+
+
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Domain Object Related Definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+
+//
+// Access rights for domain object
+//
+
+#define DOMAIN_READ_PASSWORD_PARAMETERS 0x0001
+#define DOMAIN_WRITE_PASSWORD_PARAMS 0x0002
+#define DOMAIN_READ_OTHER_PARAMETERS 0x0004
+#define DOMAIN_WRITE_OTHER_PARAMETERS 0x0008
+#define DOMAIN_CREATE_USER 0x0010
+#define DOMAIN_CREATE_GROUP 0x0020
+#define DOMAIN_CREATE_ALIAS 0x0040
+#define DOMAIN_GET_ALIAS_MEMBERSHIP 0x0080
+#define DOMAIN_LIST_ACCOUNTS 0x0100
+#define DOMAIN_LOOKUP 0x0200
+#define DOMAIN_ADMINISTER_SERVER 0x0400
+
+#define DOMAIN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ DOMAIN_READ_OTHER_PARAMETERS |\
+ DOMAIN_WRITE_OTHER_PARAMETERS |\
+ DOMAIN_WRITE_PASSWORD_PARAMS |\
+ DOMAIN_CREATE_USER |\
+ DOMAIN_CREATE_GROUP |\
+ DOMAIN_CREATE_ALIAS |\
+ DOMAIN_GET_ALIAS_MEMBERSHIP |\
+ DOMAIN_LIST_ACCOUNTS |\
+ DOMAIN_READ_PASSWORD_PARAMETERS |\
+ DOMAIN_LOOKUP |\
+ DOMAIN_ADMINISTER_SERVER)
+
+#define DOMAIN_READ (STANDARD_RIGHTS_READ |\
+ DOMAIN_GET_ALIAS_MEMBERSHIP |\
+ DOMAIN_READ_OTHER_PARAMETERS)
+
+
+#define DOMAIN_WRITE (STANDARD_RIGHTS_WRITE |\
+ DOMAIN_WRITE_OTHER_PARAMETERS |\
+ DOMAIN_WRITE_PASSWORD_PARAMS |\
+ DOMAIN_CREATE_USER |\
+ DOMAIN_CREATE_GROUP |\
+ DOMAIN_CREATE_ALIAS |\
+ DOMAIN_ADMINISTER_SERVER)
+
+#define DOMAIN_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ DOMAIN_READ_PASSWORD_PARAMETERS |\
+ DOMAIN_LIST_ACCOUNTS |\
+ DOMAIN_LOOKUP)
+
+
+
+//
+// Normal modifications cause a domain's ModifiedCount to be
+// incremented by 1. Domain promotion to Primary domain controller
+// cause the ModifiedCount to be incremented by the following
+// amount. This causes the upper 24-bits of the ModifiedCount
+// to be a promotion count and the lower 40-bits as a modification
+// count.
+//
+
+#define DOMAIN_PROMOTION_INCREMENT {0x0,0x10}
+#define DOMAIN_PROMOTION_MASK {0x0,0xFFFFFFF0}
+
+//
+// Domain information classes and their corresponding data structures
+//
+
+typedef enum _DOMAIN_INFORMATION_CLASS {
+ DomainPasswordInformation = 1,
+ DomainGeneralInformation,
+ DomainLogoffInformation,
+ DomainOemInformation,
+ DomainNameInformation,
+ DomainReplicationInformation,
+ DomainServerRoleInformation,
+ DomainModifiedInformation,
+ DomainStateInformation,
+ DomainUasInformation,
+ DomainGeneralInformation2,
+ DomainLockoutInformation,
+ DomainModifiedInformation2
+} DOMAIN_INFORMATION_CLASS;
+
+typedef enum _DOMAIN_SERVER_ENABLE_STATE {
+ DomainServerEnabled = 1,
+ DomainServerDisabled
+} DOMAIN_SERVER_ENABLE_STATE, *PDOMAIN_SERVER_ENABLE_STATE;
+
+typedef enum _DOMAIN_SERVER_ROLE {
+ DomainServerRoleBackup = 2,
+ DomainServerRolePrimary
+} DOMAIN_SERVER_ROLE, *PDOMAIN_SERVER_ROLE;
+
+#include "pshpack4.h"
+typedef struct _DOMAIN_GENERAL_INFORMATION {
+ LARGE_INTEGER ForceLogoff;
+ UNICODE_STRING OemInformation;
+ UNICODE_STRING DomainName;
+ UNICODE_STRING ReplicaSourceNodeName;
+ LARGE_INTEGER DomainModifiedCount;
+ DOMAIN_SERVER_ENABLE_STATE DomainServerState;
+ DOMAIN_SERVER_ROLE DomainServerRole;
+ BOOLEAN UasCompatibilityRequired;
+ ULONG UserCount;
+ ULONG GroupCount;
+ ULONG AliasCount;
+} DOMAIN_GENERAL_INFORMATION, *PDOMAIN_GENERAL_INFORMATION;
+#include "poppack.h"
+
+#include "pshpack4.h"
+typedef struct _DOMAIN_GENERAL_INFORMATION2 {
+
+ DOMAIN_GENERAL_INFORMATION I1;
+
+ //
+ // New fields added for this structure (NT1.0A).
+ //
+
+ LARGE_INTEGER LockoutDuration; //Must be a Delta time
+ LARGE_INTEGER LockoutObservationWindow; //Must be a Delta time
+ USHORT LockoutThreshold;
+} DOMAIN_GENERAL_INFORMATION2, *PDOMAIN_GENERAL_INFORMATION2;
+#include "poppack.h"
+
+typedef struct _DOMAIN_UAS_INFORMATION {
+ BOOLEAN UasCompatibilityRequired;
+} DOMAIN_UAS_INFORMATION;
+
+typedef struct _DOMAIN_PASSWORD_INFORMATION {
+ USHORT MinPasswordLength;
+ USHORT PasswordHistoryLength;
+ ULONG PasswordProperties;
+#if defined(MIDL_PASS)
+ OLD_LARGE_INTEGER MaxPasswordAge;
+ OLD_LARGE_INTEGER MinPasswordAge;
+#else
+ LARGE_INTEGER MaxPasswordAge;
+ LARGE_INTEGER MinPasswordAge;
+#endif
+} DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;
+
+//
+// PasswordProperties flags
+//
+
+#define DOMAIN_PASSWORD_COMPLEX 0x00000001L
+#define DOMAIN_PASSWORD_NO_ANON_CHANGE 0x00000002L
+#define DOMAIN_PASSWORD_NO_CLEAR_CHANGE 0x00000004L
+#define DOMAIN_LOCKOUT_ADMINS 0x00000008L
+
+typedef enum _DOMAIN_PASSWORD_CONSTRUCTION {
+ DomainPasswordSimple = 1,
+ DomainPasswordComplex
+} DOMAIN_PASSWORD_CONSTRUCTION;
+
+typedef struct _DOMAIN_LOGOFF_INFORMATION {
+#if defined(MIDL_PASS)
+ OLD_LARGE_INTEGER ForceLogoff;
+#else
+ LARGE_INTEGER ForceLogoff;
+#endif
+} DOMAIN_LOGOFF_INFORMATION, *PDOMAIN_LOGOFF_INFORMATION;
+
+typedef struct _DOMAIN_OEM_INFORMATION {
+ UNICODE_STRING OemInformation;
+} DOMAIN_OEM_INFORMATION, *PDOMAIN_OEM_INFORMATION;
+
+typedef struct _DOMAIN_NAME_INFORMATION {
+ UNICODE_STRING DomainName;
+} DOMAIN_NAME_INFORMATION, *PDOMAIN_NAME_INFORMATION;
+
+typedef struct _DOMAIN_SERVER_ROLE_INFORMATION {
+ DOMAIN_SERVER_ROLE DomainServerRole;
+} DOMAIN_SERVER_ROLE_INFORMATION, *PDOMAIN_SERVER_ROLE_INFORMATION;
+
+typedef struct _DOMAIN_REPLICATION_INFORMATION {
+ UNICODE_STRING ReplicaSourceNodeName;
+} DOMAIN_REPLICATION_INFORMATION, *PDOMAIN_REPLICATION_INFORMATION;
+
+typedef struct _DOMAIN_MODIFIED_INFORMATION {
+#if defined(MIDL_PASS)
+ OLD_LARGE_INTEGER DomainModifiedCount;
+ OLD_LARGE_INTEGER CreationTime;
+#else
+ LARGE_INTEGER DomainModifiedCount;
+ LARGE_INTEGER CreationTime;
+#endif
+} DOMAIN_MODIFIED_INFORMATION, *PDOMAIN_MODIFIED_INFORMATION;
+
+typedef struct _DOMAIN_MODIFIED_INFORMATION2 {
+#if defined(MIDL_PASS)
+ OLD_LARGE_INTEGER DomainModifiedCount;
+ OLD_LARGE_INTEGER CreationTime;
+ OLD_LARGE_INTEGER ModifiedCountAtLastPromotion;
+#else
+ LARGE_INTEGER DomainModifiedCount;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER ModifiedCountAtLastPromotion;
+#endif
+} DOMAIN_MODIFIED_INFORMATION2, *PDOMAIN_MODIFIED_INFORMATION2;
+
+typedef struct _DOMAIN_STATE_INFORMATION {
+ DOMAIN_SERVER_ENABLE_STATE DomainServerState;
+} DOMAIN_STATE_INFORMATION, *PDOMAIN_STATE_INFORMATION;
+
+typedef struct _DOMAIN_LOCKOUT_INFORMATION {
+#if defined(MIDL_PASS)
+ OLD_LARGE_INTEGER LockoutDuration; //Must be a Delta time
+ OLD_LARGE_INTEGER LockoutObservationWindow; //Must be a Delta time
+#else
+ LARGE_INTEGER LockoutDuration; //Must be a Delta time
+ LARGE_INTEGER LockoutObservationWindow; //Must be a Delta time
+#endif
+ USHORT LockoutThreshold; //Zero means no lockout
+} DOMAIN_LOCKOUT_INFORMATION, *PDOMAIN_LOCKOUT_INFORMATION;
+
+
+//
+// Types used by the SamQueryDisplayInformation API
+//
+
+typedef enum _DOMAIN_DISPLAY_INFORMATION {
+ DomainDisplayUser = 1,
+ DomainDisplayMachine,
+ DomainDisplayGroup, // Added in NT1.0A
+ DomainDisplayOemUser, // Added in NT1.0A
+ DomainDisplayOemGroup // Added in NT1.0A
+} DOMAIN_DISPLAY_INFORMATION, *PDOMAIN_DISPLAY_INFORMATION;
+
+
+typedef struct _DOMAIN_DISPLAY_USER {
+ ULONG Index;
+ ULONG Rid;
+ ULONG AccountControl;
+ UNICODE_STRING LogonName;
+ UNICODE_STRING AdminComment;
+ UNICODE_STRING FullName;
+} DOMAIN_DISPLAY_USER, *PDOMAIN_DISPLAY_USER;
+
+typedef struct _DOMAIN_DISPLAY_MACHINE {
+ ULONG Index;
+ ULONG Rid;
+ ULONG AccountControl;
+ UNICODE_STRING Machine;
+ UNICODE_STRING Comment;
+} DOMAIN_DISPLAY_MACHINE, *PDOMAIN_DISPLAY_MACHINE;
+
+typedef struct _DOMAIN_DISPLAY_GROUP { // Added in NT1.0A
+ ULONG Index;
+ ULONG Rid;
+ ULONG Attributes;
+ UNICODE_STRING Group;
+ UNICODE_STRING Comment;
+} DOMAIN_DISPLAY_GROUP, *PDOMAIN_DISPLAY_GROUP;
+
+typedef struct _DOMAIN_DISPLAY_OEM_USER { // Added in NT1.0A
+ ULONG Index;
+ OEM_STRING User;
+} DOMAIN_DISPLAY_OEM_USER, *PDOMAIN_DISPLAY_OEM_USER;
+
+typedef struct _DOMAIN_DISPLAY_OEM_GROUP { // Added in NT1.0A
+ ULONG Index;
+ OEM_STRING Group;
+} DOMAIN_DISPLAY_OEM_GROUP, *PDOMAIN_DISPLAY_OEM_GROUP;
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Group Object Related Definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+
+//
+// Access rights for group object
+//
+
+#define GROUP_READ_INFORMATION 0x0001
+#define GROUP_WRITE_ACCOUNT 0x0002
+#define GROUP_ADD_MEMBER 0x0004
+#define GROUP_REMOVE_MEMBER 0x0008
+#define GROUP_LIST_MEMBERS 0x0010
+
+#define GROUP_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ GROUP_LIST_MEMBERS |\
+ GROUP_WRITE_ACCOUNT |\
+ GROUP_ADD_MEMBER |\
+ GROUP_REMOVE_MEMBER |\
+ GROUP_READ_INFORMATION)
+
+
+#define GROUP_READ (STANDARD_RIGHTS_READ |\
+ GROUP_LIST_MEMBERS)
+
+
+#define GROUP_WRITE (STANDARD_RIGHTS_WRITE |\
+ GROUP_WRITE_ACCOUNT |\
+ GROUP_ADD_MEMBER |\
+ GROUP_REMOVE_MEMBER)
+
+#define GROUP_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ GROUP_READ_INFORMATION)
+
+
+//
+// Group object types
+//
+
+typedef struct _GROUP_MEMBERSHIP {
+ ULONG RelativeId;
+ ULONG Attributes;
+} GROUP_MEMBERSHIP, *PGROUP_MEMBERSHIP;
+
+
+typedef enum _GROUP_INFORMATION_CLASS {
+ GroupGeneralInformation = 1,
+ GroupNameInformation,
+ GroupAttributeInformation,
+ GroupAdminCommentInformation
+} GROUP_INFORMATION_CLASS;
+
+typedef struct _GROUP_GENERAL_INFORMATION {
+ UNICODE_STRING Name;
+ ULONG Attributes;
+ ULONG MemberCount;
+ UNICODE_STRING AdminComment;
+} GROUP_GENERAL_INFORMATION, *PGROUP_GENERAL_INFORMATION;
+
+typedef struct _GROUP_NAME_INFORMATION {
+ UNICODE_STRING Name;
+} GROUP_NAME_INFORMATION, *PGROUP_NAME_INFORMATION;
+
+typedef struct _GROUP_ATTRIBUTE_INFORMATION {
+ ULONG Attributes;
+} GROUP_ATTRIBUTE_INFORMATION, *PGROUP_ATTRIBUTE_INFORMATION;
+
+typedef struct _GROUP_ADM_COMMENT_INFORMATION {
+ UNICODE_STRING AdminComment;
+} GROUP_ADM_COMMENT_INFORMATION, *PGROUP_ADM_COMMENT_INFORMATION;
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Alias Object Related Definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+//
+// Access rights for alias object
+//
+
+#define ALIAS_ADD_MEMBER 0x0001
+#define ALIAS_REMOVE_MEMBER 0x0002
+#define ALIAS_LIST_MEMBERS 0x0004
+#define ALIAS_READ_INFORMATION 0x0008
+#define ALIAS_WRITE_ACCOUNT 0x0010
+
+#define ALIAS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ ALIAS_READ_INFORMATION |\
+ ALIAS_WRITE_ACCOUNT |\
+ ALIAS_LIST_MEMBERS |\
+ ALIAS_ADD_MEMBER |\
+ ALIAS_REMOVE_MEMBER)
+
+
+#define ALIAS_READ (STANDARD_RIGHTS_READ |\
+ ALIAS_LIST_MEMBERS)
+
+
+#define ALIAS_WRITE (STANDARD_RIGHTS_WRITE |\
+ ALIAS_WRITE_ACCOUNT |\
+ ALIAS_ADD_MEMBER |\
+ ALIAS_REMOVE_MEMBER)
+
+#define ALIAS_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ ALIAS_READ_INFORMATION)
+
+//
+// Alias object types
+//
+
+typedef enum _ALIAS_INFORMATION_CLASS {
+ AliasGeneralInformation = 1,
+ AliasNameInformation,
+ AliasAdminCommentInformation
+} ALIAS_INFORMATION_CLASS;
+
+typedef struct _ALIAS_GENERAL_INFORMATION {
+ UNICODE_STRING Name;
+ ULONG MemberCount;
+ UNICODE_STRING AdminComment;
+} ALIAS_GENERAL_INFORMATION, *PALIAS_GENERAL_INFORMATION;
+
+typedef struct _ALIAS_NAME_INFORMATION {
+ UNICODE_STRING Name;
+} ALIAS_NAME_INFORMATION, *PALIAS_NAME_INFORMATION;
+
+typedef struct _ALIAS_ADM_COMMENT_INFORMATION {
+ UNICODE_STRING AdminComment;
+} ALIAS_ADM_COMMENT_INFORMATION, *PALIAS_ADM_COMMENT_INFORMATION;
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// User Object Related Definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+
+
+//
+// Access rights for user object
+//
+
+#define USER_READ_GENERAL 0x0001
+#define USER_READ_PREFERENCES 0x0002
+#define USER_WRITE_PREFERENCES 0x0004
+#define USER_READ_LOGON 0x0008
+#define USER_READ_ACCOUNT 0x0010
+#define USER_WRITE_ACCOUNT 0x0020
+#define USER_CHANGE_PASSWORD 0x0040
+#define USER_FORCE_PASSWORD_CHANGE 0x0080
+#define USER_LIST_GROUPS 0x0100
+#define USER_READ_GROUP_INFORMATION 0x0200
+#define USER_WRITE_GROUP_INFORMATION 0x0400
+
+#define USER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ USER_READ_PREFERENCES |\
+ USER_READ_LOGON |\
+ USER_LIST_GROUPS |\
+ USER_READ_GROUP_INFORMATION |\
+ USER_WRITE_PREFERENCES |\
+ USER_CHANGE_PASSWORD |\
+ USER_FORCE_PASSWORD_CHANGE |\
+ USER_READ_GENERAL |\
+ USER_READ_ACCOUNT |\
+ USER_WRITE_ACCOUNT |\
+ USER_WRITE_GROUP_INFORMATION)
+
+
+
+#define USER_READ (STANDARD_RIGHTS_READ |\
+ USER_READ_PREFERENCES |\
+ USER_READ_LOGON |\
+ USER_READ_ACCOUNT |\
+ USER_LIST_GROUPS |\
+ USER_READ_GROUP_INFORMATION)
+
+
+#define USER_WRITE (STANDARD_RIGHTS_WRITE |\
+ USER_WRITE_PREFERENCES |\
+ USER_CHANGE_PASSWORD)
+
+#define USER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ USER_READ_GENERAL |\
+ USER_CHANGE_PASSWORD)
+
+
+//
+// User object types
+//
+
+// begin_ntsubauth
+
+//
+// User account control flags...
+//
+
+#define USER_ACCOUNT_DISABLED (0x00000001)
+#define USER_HOME_DIRECTORY_REQUIRED (0x00000002)
+#define USER_PASSWORD_NOT_REQUIRED (0x00000004)
+#define USER_TEMP_DUPLICATE_ACCOUNT (0x00000008)
+#define USER_NORMAL_ACCOUNT (0x00000010)
+#define USER_MNS_LOGON_ACCOUNT (0x00000020)
+#define USER_INTERDOMAIN_TRUST_ACCOUNT (0x00000040)
+#define USER_WORKSTATION_TRUST_ACCOUNT (0x00000080)
+#define USER_SERVER_TRUST_ACCOUNT (0x00000100)
+#define USER_DONT_EXPIRE_PASSWORD (0x00000200)
+#define USER_ACCOUNT_AUTO_LOCKED (0x00000400)
+
+
+#define USER_MACHINE_ACCOUNT_MASK \
+ ( USER_INTERDOMAIN_TRUST_ACCOUNT |\
+ USER_WORKSTATION_TRUST_ACCOUNT |\
+ USER_SERVER_TRUST_ACCOUNT)
+
+#define USER_ACCOUNT_TYPE_MASK \
+ ( USER_TEMP_DUPLICATE_ACCOUNT |\
+ USER_NORMAL_ACCOUNT |\
+ USER_MACHINE_ACCOUNT_MASK )
+
+
+//
+// Logon times may be expressed in day, hour, or minute granularity.
+//
+// Days per week = 7
+// Hours per week = 168
+// Minutes per week = 10080
+//
+
+#define SAM_DAYS_PER_WEEK (7)
+#define SAM_HOURS_PER_WEEK (24 * SAM_DAYS_PER_WEEK)
+#define SAM_MINUTES_PER_WEEK (60 * SAM_HOURS_PER_WEEK)
+
+typedef struct _LOGON_HOURS {
+
+ USHORT UnitsPerWeek;
+
+ //
+ // UnitsPerWeek is the number of equal length time units the week is
+ // divided into. This value is used to compute the length of the bit
+ // string in logon_hours. Must be less than or equal to
+ // SAM_UNITS_PER_WEEK (10080) for this release.
+ //
+ // LogonHours is a bit map of valid logon times. Each bit represents
+ // a unique division in a week. The largest bit map supported is 1260
+ // bytes (10080 bits), which represents minutes per week. In this case
+ // the first bit (bit 0, byte 0) is Sunday, 00:00:00 - 00-00:59; bit 1,
+ // byte 0 is Sunday, 00:01:00 - 00:01:59, etc. A NULL pointer means
+ // DONT_CHANGE for SamSetInformationUser() calls.
+ //
+
+ PUCHAR LogonHours;
+
+} LOGON_HOURS, *PLOGON_HOURS;
+
+typedef struct _SR_SECURITY_DESCRIPTOR {
+ ULONG Length;
+ PUCHAR SecurityDescriptor;
+} SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR;
+
+// end_ntsubauth
+
+typedef enum _USER_INFORMATION_CLASS {
+ UserGeneralInformation = 1,
+ UserPreferencesInformation,
+ UserLogonInformation,
+ UserLogonHoursInformation,
+ UserAccountInformation,
+ UserNameInformation,
+ UserAccountNameInformation,
+ UserFullNameInformation,
+ UserPrimaryGroupInformation,
+ UserHomeInformation,
+ UserScriptInformation,
+ UserProfileInformation,
+ UserAdminCommentInformation,
+ UserWorkStationsInformation,
+ UserSetPasswordInformation,
+ UserControlInformation,
+ UserExpiresInformation,
+ UserInternal1Information,
+ UserInternal2Information,
+ UserParametersInformation,
+ UserAllInformation,
+ UserInternal3Information,
+ UserInternal4Information,
+ UserInternal5Information
+} USER_INFORMATION_CLASS, *PUSER_INFORMATION_CLASS;
+
+// begin_ntsubauth
+#include "pshpack4.h"
+typedef struct _USER_ALL_INFORMATION {
+ LARGE_INTEGER LastLogon;
+ LARGE_INTEGER LastLogoff;
+ LARGE_INTEGER PasswordLastSet;
+ LARGE_INTEGER AccountExpires;
+ LARGE_INTEGER PasswordCanChange;
+ LARGE_INTEGER PasswordMustChange;
+ UNICODE_STRING UserName;
+ UNICODE_STRING FullName;
+ UNICODE_STRING HomeDirectory;
+ UNICODE_STRING HomeDirectoryDrive;
+ UNICODE_STRING ScriptPath;
+ UNICODE_STRING ProfilePath;
+ UNICODE_STRING AdminComment;
+ UNICODE_STRING WorkStations;
+ UNICODE_STRING UserComment;
+ UNICODE_STRING Parameters;
+ UNICODE_STRING LmPassword;
+ UNICODE_STRING NtPassword;
+ UNICODE_STRING PrivateData;
+ SR_SECURITY_DESCRIPTOR SecurityDescriptor;
+ ULONG UserId;
+ ULONG PrimaryGroupId;
+ ULONG UserAccountControl;
+ ULONG WhichFields;
+ LOGON_HOURS LogonHours;
+ USHORT BadPasswordCount;
+ USHORT LogonCount;
+ USHORT CountryCode;
+ USHORT CodePage;
+ BOOLEAN LmPasswordPresent;
+ BOOLEAN NtPasswordPresent;
+ BOOLEAN PasswordExpired;
+ BOOLEAN PrivateDataSensitive;
+} USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION;
+#include "poppack.h"
+// end_ntsubauth
+
+//
+// Bits to be used in UserAllInformation's WhichFields field (to indicate
+// which items were queried or set).
+//
+
+#define USER_ALL_USERNAME 0x00000001
+#define USER_ALL_FULLNAME 0x00000002
+#define USER_ALL_USERID 0x00000004
+#define USER_ALL_PRIMARYGROUPID 0x00000008
+#define USER_ALL_ADMINCOMMENT 0x00000010
+#define USER_ALL_USERCOMMENT 0x00000020
+#define USER_ALL_HOMEDIRECTORY 0x00000040
+#define USER_ALL_HOMEDIRECTORYDRIVE 0x00000080
+#define USER_ALL_SCRIPTPATH 0x00000100
+#define USER_ALL_PROFILEPATH 0x00000200
+#define USER_ALL_WORKSTATIONS 0x00000400
+#define USER_ALL_LASTLOGON 0x00000800
+#define USER_ALL_LASTLOGOFF 0x00001000
+#define USER_ALL_LOGONHOURS 0x00002000
+#define USER_ALL_BADPASSWORDCOUNT 0x00004000
+#define USER_ALL_LOGONCOUNT 0x00008000
+#define USER_ALL_PASSWORDCANCHANGE 0x00010000
+#define USER_ALL_PASSWORDMUSTCHANGE 0x00020000
+#define USER_ALL_PASSWORDLASTSET 0x00040000
+#define USER_ALL_ACCOUNTEXPIRES 0x00080000
+#define USER_ALL_USERACCOUNTCONTROL 0x00100000
+#define USER_ALL_PARAMETERS 0x00200000 // ntsubauth
+#define USER_ALL_COUNTRYCODE 0x00400000
+#define USER_ALL_CODEPAGE 0x00800000
+#define USER_ALL_NTPASSWORDPRESENT 0x01000000 // field AND boolean
+#define USER_ALL_LMPASSWORDPRESENT 0x02000000 // field AND boolean
+#define USER_ALL_PRIVATEDATA 0x04000000 // field AND boolean
+#define USER_ALL_PASSWORDEXPIRED 0x08000000
+#define USER_ALL_SECURITYDESCRIPTOR 0x10000000
+#define USER_ALL_OWFPASSWORD 0x20000000 // boolean
+
+#define USER_ALL_UNDEFINED_MASK 0xC0000000
+
+//
+// Now define masks for fields that are accessed for read by the same
+// access type.
+//
+// Fields that require READ_GENERAL access to read.
+//
+
+#define USER_ALL_READ_GENERAL_MASK (USER_ALL_USERNAME | \
+ USER_ALL_FULLNAME | \
+ USER_ALL_USERID | \
+ USER_ALL_PRIMARYGROUPID | \
+ USER_ALL_ADMINCOMMENT | \
+ USER_ALL_USERCOMMENT)
+
+//
+// Fields that require READ_LOGON access to read.
+//
+
+#define USER_ALL_READ_LOGON_MASK (USER_ALL_HOMEDIRECTORY | \
+ USER_ALL_HOMEDIRECTORYDRIVE | \
+ USER_ALL_SCRIPTPATH | \
+ USER_ALL_PROFILEPATH | \
+ USER_ALL_WORKSTATIONS | \
+ USER_ALL_LASTLOGON | \
+ USER_ALL_LASTLOGOFF | \
+ USER_ALL_LOGONHOURS | \
+ USER_ALL_BADPASSWORDCOUNT | \
+ USER_ALL_LOGONCOUNT | \
+ USER_ALL_PASSWORDCANCHANGE | \
+ USER_ALL_PASSWORDMUSTCHANGE)
+
+//
+// Fields that require READ_ACCOUNT access to read.
+//
+
+#define USER_ALL_READ_ACCOUNT_MASK (USER_ALL_PASSWORDLASTSET | \
+ USER_ALL_ACCOUNTEXPIRES | \
+ USER_ALL_USERACCOUNTCONTROL | \
+ USER_ALL_PARAMETERS)
+
+//
+// Fields that require READ_PREFERENCES access to read.
+//
+
+#define USER_ALL_READ_PREFERENCES_MASK (USER_ALL_COUNTRYCODE | \
+ USER_ALL_CODEPAGE)
+
+//
+// Fields that can only be read by trusted clients.
+//
+
+#define USER_ALL_READ_TRUSTED_MASK (USER_ALL_NTPASSWORDPRESENT | \
+ USER_ALL_LMPASSWORDPRESENT | \
+ USER_ALL_PASSWORDEXPIRED | \
+ USER_ALL_SECURITYDESCRIPTOR | \
+ USER_ALL_PRIVATEDATA)
+
+//
+// Fields that can't be read.
+//
+
+#define USER_ALL_READ_CANT_MASK USER_ALL_UNDEFINED_MASK
+
+
+//
+// Now define masks for fields that are accessed for write by the same
+// access type.
+//
+// Fields that require WRITE_ACCOUNT access to write.
+//
+
+#define USER_ALL_WRITE_ACCOUNT_MASK (USER_ALL_USERNAME | \
+ USER_ALL_FULLNAME | \
+ USER_ALL_PRIMARYGROUPID | \
+ USER_ALL_HOMEDIRECTORY | \
+ USER_ALL_HOMEDIRECTORYDRIVE | \
+ USER_ALL_SCRIPTPATH | \
+ USER_ALL_PROFILEPATH | \
+ USER_ALL_ADMINCOMMENT | \
+ USER_ALL_WORKSTATIONS | \
+ USER_ALL_LOGONHOURS | \
+ USER_ALL_ACCOUNTEXPIRES | \
+ USER_ALL_USERACCOUNTCONTROL | \
+ USER_ALL_PARAMETERS)
+
+//
+// Fields that require WRITE_PREFERENCES access to write.
+//
+
+#define USER_ALL_WRITE_PREFERENCES_MASK (USER_ALL_USERCOMMENT | \
+ USER_ALL_COUNTRYCODE | \
+ USER_ALL_CODEPAGE)
+
+//
+// Fields that require FORCE_PASSWORD_CHANGE access to write.
+//
+// Note that non-trusted clients only set the NT password as a
+// UNICODE string. The wrapper will convert it to an LM password,
+// OWF and encrypt both versions. Trusted clients can pass in OWF
+// versions of either or both.
+//
+
+#define USER_ALL_WRITE_FORCE_PASSWORD_CHANGE_MASK \
+ (USER_ALL_NTPASSWORDPRESENT | \
+ USER_ALL_LMPASSWORDPRESENT | \
+ USER_ALL_PASSWORDEXPIRED)
+
+//
+// Fields that can only be written by trusted clients.
+//
+
+#define USER_ALL_WRITE_TRUSTED_MASK (USER_ALL_LASTLOGON | \
+ USER_ALL_LASTLOGOFF | \
+ USER_ALL_BADPASSWORDCOUNT | \
+ USER_ALL_LOGONCOUNT | \
+ USER_ALL_PASSWORDLASTSET | \
+ USER_ALL_SECURITYDESCRIPTOR | \
+ USER_ALL_PRIVATEDATA)
+
+//
+// Fields that can't be written.
+//
+
+#define USER_ALL_WRITE_CANT_MASK (USER_ALL_USERID | \
+ USER_ALL_PASSWORDCANCHANGE | \
+ USER_ALL_PASSWORDMUSTCHANGE | \
+ USER_ALL_UNDEFINED_MASK)
+
+
+typedef struct _USER_GENERAL_INFORMATION {
+ UNICODE_STRING UserName;
+ UNICODE_STRING FullName;
+ ULONG PrimaryGroupId;
+ UNICODE_STRING AdminComment;
+ UNICODE_STRING UserComment;
+} USER_GENERAL_INFORMATION, *PUSER_GENERAL_INFORMATION;
+
+typedef struct _USER_PREFERENCES_INFORMATION {
+ UNICODE_STRING UserComment;
+ UNICODE_STRING Reserved1;
+ USHORT CountryCode;
+ USHORT CodePage;
+} USER_PREFERENCES_INFORMATION, *PUSER_PREFERENCES_INFORMATION;
+
+typedef struct _USER_PARAMETERS_INFORMATION {
+ UNICODE_STRING Parameters;
+} USER_PARAMETERS_INFORMATION, *PUSER_PARAMETERS_INFORMATION;
+
+#include "pshpack4.h"
+typedef struct _USER_LOGON_INFORMATION {
+ UNICODE_STRING UserName;
+ UNICODE_STRING FullName;
+ ULONG UserId;
+ ULONG PrimaryGroupId;
+ UNICODE_STRING HomeDirectory;
+ UNICODE_STRING HomeDirectoryDrive;
+ UNICODE_STRING ScriptPath;
+ UNICODE_STRING ProfilePath;
+ UNICODE_STRING WorkStations;
+ LARGE_INTEGER LastLogon;
+ LARGE_INTEGER LastLogoff;
+ LARGE_INTEGER PasswordLastSet;
+ LARGE_INTEGER PasswordCanChange;
+ LARGE_INTEGER PasswordMustChange;
+ LOGON_HOURS LogonHours;
+ USHORT BadPasswordCount;
+ USHORT LogonCount;
+ ULONG UserAccountControl;
+} USER_LOGON_INFORMATION, *PUSER_LOGON_INFORMATION;
+#include "poppack.h"
+
+#include "pshpack4.h"
+typedef struct _USER_ACCOUNT_INFORMATION {
+ UNICODE_STRING UserName;
+ UNICODE_STRING FullName;
+ ULONG UserId;
+ ULONG PrimaryGroupId;
+ UNICODE_STRING HomeDirectory;
+ UNICODE_STRING HomeDirectoryDrive;
+ UNICODE_STRING ScriptPath;
+ UNICODE_STRING ProfilePath;
+ UNICODE_STRING AdminComment;
+ UNICODE_STRING WorkStations;
+ LARGE_INTEGER LastLogon;
+ LARGE_INTEGER LastLogoff;
+ LOGON_HOURS LogonHours;
+ USHORT BadPasswordCount;
+ USHORT LogonCount;
+ LARGE_INTEGER PasswordLastSet;
+ LARGE_INTEGER AccountExpires;
+ ULONG UserAccountControl;
+} USER_ACCOUNT_INFORMATION, *PUSER_ACCOUNT_INFORMATION;
+#include "poppack.h"
+
+typedef struct _USER_ACCOUNT_NAME_INFORMATION {
+ UNICODE_STRING UserName;
+} USER_ACCOUNT_NAME_INFORMATION, *PUSER_ACCOUNT_NAME_INFORMATION;
+
+typedef struct _USER_FULL_NAME_INFORMATION {
+ UNICODE_STRING FullName;
+} USER_FULL_NAME_INFORMATION, *PUSER_FULL_NAME_INFORMATION;
+
+typedef struct _USER_NAME_INFORMATION {
+ UNICODE_STRING UserName;
+ UNICODE_STRING FullName;
+} USER_NAME_INFORMATION, *PUSER_NAME_INFORMATION;
+
+typedef struct _USER_PRIMARY_GROUP_INFORMATION {
+ ULONG PrimaryGroupId;
+} USER_PRIMARY_GROUP_INFORMATION, *PUSER_PRIMARY_GROUP_INFORMATION;
+
+typedef struct _USER_HOME_INFORMATION {
+ UNICODE_STRING HomeDirectory;
+ UNICODE_STRING HomeDirectoryDrive;
+} USER_HOME_INFORMATION, *PUSER_HOME_INFORMATION;
+
+typedef struct _USER_SCRIPT_INFORMATION {
+ UNICODE_STRING ScriptPath;
+} USER_SCRIPT_INFORMATION, *PUSER_SCRIPT_INFORMATION;
+
+typedef struct _USER_PROFILE_INFORMATION {
+ UNICODE_STRING ProfilePath;
+} USER_PROFILE_INFORMATION, *PUSER_PROFILE_INFORMATION;
+
+typedef struct _USER_ADMIN_COMMENT_INFORMATION {
+ UNICODE_STRING AdminComment;
+} USER_ADMIN_COMMENT_INFORMATION, *PUSER_ADMIN_COMMENT_INFORMATION;
+
+typedef struct _USER_WORKSTATIONS_INFORMATION {
+ UNICODE_STRING WorkStations;
+} USER_WORKSTATIONS_INFORMATION, *PUSER_WORKSTATIONS_INFORMATION;
+
+typedef struct _USER_SET_PASSWORD_INFORMATION {
+ UNICODE_STRING Password;
+ BOOLEAN PasswordExpired;
+} USER_SET_PASSWORD_INFORMATION, *PUSER_SET_PASSWORD_INFORMATION;
+
+typedef struct _USER_CONTROL_INFORMATION {
+ ULONG UserAccountControl;
+} USER_CONTROL_INFORMATION, *PUSER_CONTROL_INFORMATION;
+
+typedef struct _USER_EXPIRES_INFORMATION {
+#if defined(MIDL_PASS)
+ OLD_LARGE_INTEGER AccountExpires;
+#else
+ LARGE_INTEGER AccountExpires;
+#endif
+} USER_EXPIRES_INFORMATION, *PUSER_EXPIRES_INFORMATION;
+
+typedef struct _USER_LOGON_HOURS_INFORMATION {
+ LOGON_HOURS LogonHours;
+} USER_LOGON_HOURS_INFORMATION, *PUSER_LOGON_HOURS_INFORMATION;
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// Data types used by SAM and Netlogon for database replication //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+
+typedef enum _SECURITY_DB_DELTA_TYPE {
+ SecurityDbNew = 1,
+ SecurityDbRename,
+ SecurityDbDelete,
+ SecurityDbChangeMemberAdd,
+ SecurityDbChangeMemberSet,
+ SecurityDbChangeMemberDel,
+ SecurityDbChange,
+ SecurityDbChangePassword
+} SECURITY_DB_DELTA_TYPE, *PSECURITY_DB_DELTA_TYPE;
+
+typedef enum _SECURITY_DB_OBJECT_TYPE {
+ SecurityDbObjectSamDomain = 1,
+ SecurityDbObjectSamUser,
+ SecurityDbObjectSamGroup,
+ SecurityDbObjectSamAlias,
+ SecurityDbObjectLsaPolicy,
+ SecurityDbObjectLsaTDomain,
+ SecurityDbObjectLsaAccount,
+ SecurityDbObjectLsaSecret
+} SECURITY_DB_OBJECT_TYPE, *PSECURITY_DB_OBJECT_TYPE;
+
+//
+// Account types
+//
+// Both enumerated types and flag definitions are provided.
+// The flag definitions are used in places where more than
+// one type of account may be specified together.
+//
+
+typedef enum _SAM_ACCOUNT_TYPE {
+ SamObjectUser = 1,
+ SamObjectGroup ,
+ SamObjectAlias
+} SAM_ACCOUNT_TYPE, *PSAM_ACCOUNT_TYPE;
+
+
+#define SAM_USER_ACCOUNT (0x00000001)
+#define SAM_GLOBAL_GROUP_ACCOUNT (0x00000002)
+#define SAM_LOCAL_GROUP_ACCOUNT (0x00000004)
+
+
+
+//
+// Define the data type used to pass netlogon information on the account
+// that was added or deleted from a group.
+//
+
+typedef struct _SAM_GROUP_MEMBER_ID {
+ ULONG MemberRid;
+} SAM_GROUP_MEMBER_ID, *PSAM_GROUP_MEMBER_ID;
+
+
+//
+// Define the data type used to pass netlogon information on the account
+// that was added or deleted from an alias.
+//
+
+typedef struct _SAM_ALIAS_MEMBER_ID {
+ PSID MemberSid;
+} SAM_ALIAS_MEMBER_ID, *PSAM_ALIAS_MEMBER_ID;
+
+
+
+
+//
+// Define the data type used to pass netlogon information on a delta
+//
+
+typedef union _SAM_DELTA_DATA {
+
+ //
+ // Delta type ChangeMember{Add/Del/Set} and account type group
+ //
+
+ SAM_GROUP_MEMBER_ID GroupMemberId;
+
+ //
+ // Delta type ChangeMember{Add/Del/Set} and account type alias
+ //
+
+ SAM_ALIAS_MEMBER_ID AliasMemberId;
+
+} SAM_DELTA_DATA, *PSAM_DELTA_DATA;
+
+
+//
+// Prototype for delta notification routine.
+//
+
+typedef NTSTATUS (*PSAM_DELTA_NOTIFICATION_ROUTINE) (
+ IN PSID DomainSid,
+ IN SECURITY_DB_DELTA_TYPE DeltaType,
+ IN SECURITY_DB_OBJECT_TYPE ObjectType,
+ IN ULONG ObjectRid,
+ IN OPTIONAL PUNICODE_STRING ObjectName,
+ IN PLARGE_INTEGER ModifiedCount,
+ IN PSAM_DELTA_DATA DeltaData OPTIONAL
+ );
+
+#define SAM_DELTA_NOTIFY_ROUTINE "DeltaNotify"
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// APIs Exported By SAM //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+
+NTSTATUS
+SamFreeMemory(
+ IN PVOID Buffer
+ );
+
+
+NTSTATUS
+SamSetSecurityObject(
+ IN SAM_HANDLE ObjectHandle,
+ IN SECURITY_INFORMATION SecurityInformation,
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+
+NTSTATUS
+SamQuerySecurityObject(
+ IN SAM_HANDLE ObjectHandle,
+ IN SECURITY_INFORMATION SecurityInformation,
+ OUT PSECURITY_DESCRIPTOR *SecurityDescriptor
+ );
+
+NTSTATUS
+SamCloseHandle(
+ IN SAM_HANDLE SamHandle
+ );
+
+NTSTATUS
+SamConnect(
+ IN PUNICODE_STRING ServerName,
+ OUT PSAM_HANDLE ServerHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes
+ );
+
+NTSTATUS
+SamShutdownSamServer(
+ IN SAM_HANDLE ServerHandle
+ );
+
+NTSTATUS
+SamLookupDomainInSamServer(
+ IN SAM_HANDLE ServerHandle,
+ IN PUNICODE_STRING Name,
+ OUT PSID * DomainId
+ );
+
+NTSTATUS
+SamEnumerateDomainsInSamServer(
+ IN SAM_HANDLE ServerHandle,
+ IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
+ OUT PVOID *Buffer,
+ IN ULONG PreferedMaximumLength,
+ OUT PULONG CountReturned
+ );
+
+NTSTATUS
+SamOpenDomain(
+ IN SAM_HANDLE ServerHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN PSID DomainId,
+ OUT PSAM_HANDLE DomainHandle
+ );
+
+NTSTATUS
+SamQueryInformationDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
+ OUT PVOID *Buffer
+ );
+
+NTSTATUS
+SamSetInformationDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
+ IN PVOID DomainInformation
+ );
+
+NTSTATUS
+SamCreateGroupInDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN PUNICODE_STRING AccountName,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PSAM_HANDLE GroupHandle,
+ OUT PULONG RelativeId
+ );
+
+
+NTSTATUS
+SamEnumerateGroupsInDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
+ OUT PVOID *Buffer,
+ IN ULONG PreferedMaximumLength,
+ OUT PULONG CountReturned
+ );
+
+NTSTATUS
+SamCreateUser2InDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN PUNICODE_STRING AccountName,
+ IN ULONG AccountType,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PSAM_HANDLE UserHandle,
+ OUT PULONG GrantedAccess,
+ OUT PULONG RelativeId
+ );
+
+NTSTATUS
+SamCreateUserInDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN PUNICODE_STRING AccountName,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PSAM_HANDLE UserHandle,
+ OUT PULONG RelativeId
+ );
+
+NTSTATUS
+SamEnumerateUsersInDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
+ IN ULONG UserAccountControl,
+ OUT PVOID *Buffer,
+ IN ULONG PreferedMaximumLength,
+ OUT PULONG CountReturned
+ );
+
+NTSTATUS
+SamCreateAliasInDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN PUNICODE_STRING AccountName,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PSAM_HANDLE AliasHandle,
+ OUT PULONG RelativeId
+ );
+
+NTSTATUS
+SamEnumerateAliasesInDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext,
+ IN PVOID *Buffer,
+ IN ULONG PreferedMaximumLength,
+ OUT PULONG CountReturned
+ );
+
+NTSTATUS
+SamGetAliasMembership(
+ IN SAM_HANDLE DomainHandle,
+ IN ULONG PassedCount,
+ IN PSID *Sids,
+ OUT PULONG MembershipCount,
+ OUT PULONG *Aliases
+ );
+
+NTSTATUS
+SamLookupNamesInDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN ULONG Count,
+ IN PUNICODE_STRING Names,
+ OUT PULONG *RelativeIds,
+ OUT PSID_NAME_USE *Use
+ );
+
+NTSTATUS
+SamLookupIdsInDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN ULONG Count,
+ IN PULONG RelativeIds,
+ OUT PUNICODE_STRING *Names,
+ OUT PSID_NAME_USE *Use
+ );
+
+NTSTATUS
+SamOpenGroup(
+ IN SAM_HANDLE DomainHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN ULONG GroupId,
+ OUT PSAM_HANDLE GroupHandle
+ );
+
+NTSTATUS
+SamQueryInformationGroup(
+ IN SAM_HANDLE GroupHandle,
+ IN GROUP_INFORMATION_CLASS GroupInformationClass,
+ OUT PVOID *Buffer
+ );
+
+NTSTATUS
+SamSetInformationGroup(
+ IN SAM_HANDLE GroupHandle,
+ IN GROUP_INFORMATION_CLASS GroupInformationClass,
+ IN PVOID Buffer
+ );
+
+NTSTATUS
+SamAddMemberToGroup(
+ IN SAM_HANDLE GroupHandle,
+ IN ULONG MemberId,
+ IN ULONG Attributes
+ );
+
+NTSTATUS
+SamDeleteGroup(
+ IN SAM_HANDLE GroupHandle
+ );
+
+NTSTATUS
+SamRemoveMemberFromGroup(
+ IN SAM_HANDLE GroupHandle,
+ IN ULONG MemberId
+ );
+
+NTSTATUS
+SamGetMembersInGroup(
+ IN SAM_HANDLE GroupHandle,
+ OUT PULONG * MemberIds,
+ OUT PULONG * Attributes,
+ OUT PULONG MemberCount
+ );
+
+NTSTATUS
+SamSetMemberAttributesOfGroup(
+ IN SAM_HANDLE GroupHandle,
+ IN ULONG MemberId,
+ IN ULONG Attributes
+ );
+
+NTSTATUS
+SamOpenAlias(
+ IN SAM_HANDLE DomainHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN ULONG AliasId,
+ OUT PSAM_HANDLE AliasHandle
+ );
+
+NTSTATUS
+SamQueryInformationAlias(
+ IN SAM_HANDLE AliasHandle,
+ IN ALIAS_INFORMATION_CLASS AliasInformationClass,
+ OUT PVOID *Buffer
+ );
+
+NTSTATUS
+SamSetInformationAlias(
+ IN SAM_HANDLE AliasHandle,
+ IN ALIAS_INFORMATION_CLASS AliasInformationClass,
+ IN PVOID Buffer
+ );
+
+NTSTATUS
+SamDeleteAlias(
+ IN SAM_HANDLE AliasHandle
+ );
+
+NTSTATUS
+SamAddMemberToAlias(
+ IN SAM_HANDLE AliasHandle,
+ IN PSID MemberId
+ );
+
+NTSTATUS
+SamAddMultipleMembersToAlias(
+ IN SAM_HANDLE AliasHandle,
+ IN PSID *MemberIds,
+ IN ULONG MemberCount
+ );
+
+NTSTATUS
+SamRemoveMemberFromAlias(
+ IN SAM_HANDLE AliasHandle,
+ IN PSID MemberId
+ );
+
+NTSTATUS
+SamRemoveMultipleMembersFromAlias(
+ IN SAM_HANDLE AliasHandle,
+ IN PSID *MemberIds,
+ IN ULONG MemberCount
+ );
+
+NTSTATUS
+SamRemoveMemberFromForeignDomain(
+ IN SAM_HANDLE DomainHandle,
+ IN PSID MemberId
+ );
+
+NTSTATUS
+SamGetMembersInAlias(
+ IN SAM_HANDLE AliasHandle,
+ OUT PSID **MemberIds,
+ OUT PULONG MemberCount
+ );
+
+NTSTATUS
+SamOpenUser(
+ IN SAM_HANDLE DomainHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN ULONG UserId,
+ OUT PSAM_HANDLE UserHandle
+ );
+
+NTSTATUS
+SamDeleteUser(
+ IN SAM_HANDLE UserHandle
+ );
+
+NTSTATUS
+SamQueryInformationUser(
+ IN SAM_HANDLE UserHandle,
+ IN USER_INFORMATION_CLASS UserInformationClass,
+ OUT PVOID * Buffer
+ );
+
+NTSTATUS
+SamSetInformationUser(
+ IN SAM_HANDLE UserHandle,
+ IN USER_INFORMATION_CLASS UserInformationClass,
+ IN PVOID Buffer
+ );
+
+NTSTATUS
+SamChangePasswordUser(
+ IN SAM_HANDLE UserHandle,
+ IN PUNICODE_STRING OldPassword,
+ IN PUNICODE_STRING NewPassword
+ );
+
+NTSTATUS
+SamChangePasswordUser2(
+ IN PUNICODE_STRING ServerName,
+ IN PUNICODE_STRING UserName,
+ IN PUNICODE_STRING OldPassword,
+ IN PUNICODE_STRING NewPassword
+ );
+
+
+
+
+NTSTATUS
+SamGetGroupsForUser(
+ IN SAM_HANDLE UserHandle,
+ OUT PGROUP_MEMBERSHIP * Groups,
+ OUT PULONG MembershipCount
+ );
+
+NTSTATUS
+SamQueryDisplayInformation (
+ IN SAM_HANDLE DomainHandle,
+ IN DOMAIN_DISPLAY_INFORMATION DisplayInformation,
+ IN ULONG Index,
+ IN ULONG EntryCount,
+ IN ULONG PreferredMaximumLength,
+ OUT PULONG TotalAvailable,
+ OUT PULONG TotalReturned,
+ OUT PULONG ReturnedEntryCount,
+ OUT PVOID *SortedBuffer
+ );
+
+NTSTATUS
+SamGetDisplayEnumerationIndex (
+ IN SAM_HANDLE DomainHandle,
+ IN DOMAIN_DISPLAY_INFORMATION DisplayInformation,
+ IN PUNICODE_STRING Prefix,
+ OUT PULONG Index
+ );
+
+
+
+////////////////////////////////////////////////////////////////////////////
+// //
+// Interface definitions of services provided by a password filter DLL //
+// //
+////////////////////////////////////////////////////////////////////////////
+
+
+
+
+//
+// Routine names
+//
+// The routines provided by the DLL must be assigned the following names
+// so that their addresses can be retrieved when the DLL is loaded.
+//
+
+
+//
+// routine templates
+//
+
+
+
+
+// begin_ntsecapi
+
+typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE) (
+ PUNICODE_STRING UserName,
+ ULONG RelativeId,
+ PUNICODE_STRING NewPassword
+);
+
+#define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify"
+
+typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE) (
+);
+
+#define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify"
+
+
+#define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter"
+
+typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE) (
+ IN PUNICODE_STRING AccountName,
+ IN PUNICODE_STRING FullName,
+ IN PUNICODE_STRING Password,
+ IN BOOLEAN SetOperation
+ );
+
+// end_ntsecapi
+
+#endif // _NTSAM_
diff --git a/public/sdk/inc/ntsdexts.h b/public/sdk/inc/ntsdexts.h
new file mode 100644
index 000000000..396033631
--- /dev/null
+++ b/public/sdk/inc/ntsdexts.h
@@ -0,0 +1,88 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ ntsdexts.h
+
+Abstract:
+
+ This file contains procedure prototypes and structures
+ needed to write NTSD and KD debugger extensions.
+
+Environment:
+
+ runs in the Win32 NTSD debug environment.
+
+Revision History:
+
+--*/
+
+#ifndef _NTSDEXTNS_
+#define _NTSDEXTNS_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef
+VOID
+(*PNTSD_OUTPUT_ROUTINE)(
+ char *,
+ ...
+ );
+
+typedef
+DWORD
+(*PNTSD_GET_EXPRESSION)(
+ char *
+ );
+
+typedef
+VOID
+(*PNTSD_GET_SYMBOL)(
+ LPVOID offset,
+ PUCHAR pchBuffer,
+ LPDWORD pDisplacement
+ );
+
+typedef
+DWORD
+(*PNTSD_DISASM)(
+ LPDWORD lpOffset,
+ LPSTR lpBuffer,
+ BOOL fShowEfeectiveAddress
+ );
+
+typedef
+BOOL
+(*PNTSD_CHECK_CONTROL_C)(
+ VOID
+ );
+
+typedef struct _NTSD_EXTENSION_APIS {
+ DWORD nSize;
+ PNTSD_OUTPUT_ROUTINE lpOutputRoutine;
+ PNTSD_GET_EXPRESSION lpGetExpressionRoutine;
+ PNTSD_GET_SYMBOL lpGetSymbolRoutine;
+ PNTSD_DISASM lpDisasmRoutine;
+ PNTSD_CHECK_CONTROL_C lpCheckControlCRoutine;
+} NTSD_EXTENSION_APIS, *PNTSD_EXTENSION_APIS;
+
+typedef
+VOID
+(*PNTSD_EXTENSION_ROUTINE)(
+ HANDLE hCurrentProcess,
+ HANDLE hCurrentThread,
+ DWORD dwCurrentPc,
+ PNTSD_EXTENSION_APIS lpExtensionApis,
+ LPSTR lpArgumentString
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // _NTSDEXTNS_
diff --git a/public/sdk/inc/ntseapi.h b/public/sdk/inc/ntseapi.h
new file mode 100644
index 000000000..12568e07a
--- /dev/null
+++ b/public/sdk/inc/ntseapi.h
@@ -0,0 +1,1591 @@
+/*++ BUILD Version: 0003 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntseapi.h
+
+Abstract:
+
+ This module contains the Security APIs and any public data
+ structures needed to call these APIs.
+
+ This module should be included by including "nt.h".
+
+Author:
+
+ Gary Kimura (GaryKi) 06-Mar-1989
+
+Revision History:
+
+
+
+--*/
+
+#ifndef _NTSEAPI_
+#define _NTSEAPI_
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Pointers to Opaque data types //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// Some of these data types may have related data types defined elsewhere
+// in this file.
+//
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// Define an access token from a programmer's viewpoint. The structure is
+// completely opaque and the programer is only allowed to have pointers
+// to tokens.
+//
+
+typedef PVOID PACCESS_TOKEN; // winnt
+
+//
+// Pointer to a SECURITY_DESCRIPTOR opaque data type.
+//
+
+typedef PVOID PSECURITY_DESCRIPTOR; // winnt
+
+//
+// Define a pointer to the Security ID data type (an opaque data type)
+//
+
+typedef PVOID PSID; // winnt
+
+// end_ntddk end_nthal end_ntifs
+
+
+
+// begin_winnt
+////////////////////////////////////////////////////////////////////////
+// //
+// ACCESS MASK //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// Define the access mask as a longword sized structure divided up 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
+// +---------------+---------------+-------------------------------+
+// |G|G|G|G|Res'd|A| StandardRights| SpecificRights |
+// |R|W|E|A| |S| | |
+// +-+-------------+---------------+-------------------------------+
+//
+// typedef struct _ACCESS_MASK {
+// USHORT SpecificRights;
+// UCHAR StandardRights;
+// UCHAR AccessSystemAcl : 1;
+// UCHAR Reserved : 3;
+// UCHAR GenericAll : 1;
+// UCHAR GenericExecute : 1;
+// UCHAR GenericWrite : 1;
+// UCHAR GenericRead : 1;
+// } ACCESS_MASK;
+// typedef ACCESS_MASK *PACCESS_MASK;
+//
+// but to make life simple for programmer's we'll allow them to specify
+// a desired access mask by simply OR'ing together mulitple single rights
+// and treat an access mask as a ULONG. For example
+//
+// DesiredAccess = DELETE | READ_CONTROL
+//
+// So we'll declare ACCESS_MASK as ULONG
+//
+
+// begin_ntddk begin_nthal begin_ntifs
+typedef ULONG ACCESS_MASK;
+typedef ACCESS_MASK *PACCESS_MASK;
+
+// end_winnt
+// end_ntddk end_nthal end_ntifs
+
+
+// begin_winnt
+////////////////////////////////////////////////////////////////////////
+// //
+// ACCESS TYPES //
+// //
+////////////////////////////////////////////////////////////////////////
+
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// The following are masks for the predefined standard access types
+//
+
+#define DELETE (0x00010000L)
+#define READ_CONTROL (0x00020000L)
+#define WRITE_DAC (0x00040000L)
+#define WRITE_OWNER (0x00080000L)
+#define SYNCHRONIZE (0x00100000L)
+
+#define STANDARD_RIGHTS_REQUIRED (0x000F0000L)
+
+#define STANDARD_RIGHTS_READ (READ_CONTROL)
+#define STANDARD_RIGHTS_WRITE (READ_CONTROL)
+#define STANDARD_RIGHTS_EXECUTE (READ_CONTROL)
+
+#define STANDARD_RIGHTS_ALL (0x001F0000L)
+
+#define SPECIFIC_RIGHTS_ALL (0x0000FFFFL)
+
+//
+// AccessSystemAcl access type
+//
+
+#define ACCESS_SYSTEM_SECURITY (0x01000000L)
+
+//
+// MaximumAllowed access type
+//
+
+#define MAXIMUM_ALLOWED (0x02000000L)
+
+//
+// These are the generic rights.
+//
+
+#define GENERIC_READ (0x80000000L)
+#define GENERIC_WRITE (0x40000000L)
+#define GENERIC_EXECUTE (0x20000000L)
+#define GENERIC_ALL (0x10000000L)
+
+
+//
+// Define the generic mapping array. This is used to denote the
+// mapping of each generic access right to a specific access mask.
+//
+
+typedef struct _GENERIC_MAPPING {
+ ACCESS_MASK GenericRead;
+ ACCESS_MASK GenericWrite;
+ ACCESS_MASK GenericExecute;
+ ACCESS_MASK GenericAll;
+} GENERIC_MAPPING;
+typedef GENERIC_MAPPING *PGENERIC_MAPPING;
+
+// end_winnt end_ntddk end_nthal end_ntifs
+
+// begin_ntddk begin_winnt begin_nthal begin_ntifs
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// LUID_AND_ATTRIBUTES //
+// //
+////////////////////////////////////////////////////////////////////////
+//
+//
+
+
+#include <pshpack4.h>
+
+typedef struct _LUID_AND_ATTRIBUTES {
+ LUID Luid;
+ ULONG Attributes;
+ } LUID_AND_ATTRIBUTES, * PLUID_AND_ATTRIBUTES;
+typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
+
+#include <poppack.h>
+
+// end_winnt end_ntddk end_nthal end_ntifs
+
+// begin_winnt
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Security Id (SID) //
+// //
+////////////////////////////////////////////////////////////////////////
+//
+//
+// Pictorially the structure of an SID is as follows:
+//
+// 1 1 1 1 1 1
+// 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+// +---------------------------------------------------------------+
+// | SubAuthorityCount |Reserved1 (SBZ)| Revision |
+// +---------------------------------------------------------------+
+// | IdentifierAuthority[0] |
+// +---------------------------------------------------------------+
+// | IdentifierAuthority[1] |
+// +---------------------------------------------------------------+
+// | IdentifierAuthority[2] |
+// +---------------------------------------------------------------+
+// | |
+// +- - - - - - - - SubAuthority[] - - - - - - - - -+
+// | |
+// +---------------------------------------------------------------+
+//
+//
+
+
+// begin_ntifs
+
+#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
+#define SID_IDENTIFIER_AUTHORITY_DEFINED
+typedef struct _SID_IDENTIFIER_AUTHORITY {
+ UCHAR Value[6];
+} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
+#endif
+
+
+#ifndef SID_DEFINED
+#define SID_DEFINED
+typedef struct _SID {
+ UCHAR Revision;
+ UCHAR SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+#ifdef MIDL_PASS
+ [size_is(SubAuthorityCount)] ULONG SubAuthority[*];
+#else // MIDL_PASS
+ ULONG SubAuthority[ANYSIZE_ARRAY];
+#endif // MIDL_PASS
+} SID, *PISID;
+#endif
+
+#define SID_REVISION (1) // Current revision level
+#define SID_MAX_SUB_AUTHORITIES (15)
+#define SID_RECOMMENDED_SUB_AUTHORITIES (1) // Will change to around 6
+ // in a future release.
+
+typedef enum _SID_NAME_USE {
+ SidTypeUser = 1,
+ SidTypeGroup,
+ SidTypeDomain,
+ SidTypeAlias,
+ SidTypeWellKnownGroup,
+ SidTypeDeletedAccount,
+ SidTypeInvalid,
+ SidTypeUnknown
+} SID_NAME_USE, *PSID_NAME_USE;
+
+typedef struct _SID_AND_ATTRIBUTES {
+ PSID Sid;
+ ULONG Attributes;
+ } SID_AND_ATTRIBUTES, * PSID_AND_ATTRIBUTES;
+
+typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// Universal well-known SIDs //
+// //
+// Null SID S-1-0-0 //
+// World S-1-1-0 //
+// Local S-1-2-0 //
+// Creator Owner ID S-1-3-0 //
+// Creator Group ID S-1-3-1 //
+// Creator Owner Server ID S-1-3-2 //
+// Creator Group Server ID S-1-3-3 //
+// //
+// (Non-unique IDs) S-1-4 //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
+#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
+#define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
+#define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
+#define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
+
+#define SECURITY_NULL_RID (0x00000000L)
+#define SECURITY_WORLD_RID (0x00000000L)
+#define SECURITY_LOCAL_RID (0X00000000L)
+
+#define SECURITY_CREATOR_OWNER_RID (0x00000000L)
+#define SECURITY_CREATOR_GROUP_RID (0x00000001L)
+
+#define SECURITY_CREATOR_OWNER_SERVER_RID (0x00000002L)
+#define SECURITY_CREATOR_GROUP_SERVER_RID (0x00000003L)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// NT well-known SIDs //
+// //
+// NT Authority S-1-5 //
+// Dialup S-1-5-1 //
+// //
+// Network S-1-5-2 //
+// Batch S-1-5-3 //
+// Interactive S-1-5-4 //
+// Service S-1-5-6 //
+// AnonymousLogon S-1-5-7 (aka null logon session) //
+// Proxy S-1-5-8 //
+// ServerLogon S-1-5-8 (aka domain controller account) //
+// //
+// (Logon IDs) S-1-5-5-X-Y //
+// //
+// (NT non-unique IDs) S-1-5-0x15-... //
+// //
+// (Built-in domain) s-1-5-0x20 //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+
+#define SECURITY_NT_AUTHORITY {0,0,0,0,0,5} // ntifs
+
+#define SECURITY_DIALUP_RID (0x00000001L)
+#define SECURITY_NETWORK_RID (0x00000002L)
+#define SECURITY_BATCH_RID (0x00000003L)
+#define SECURITY_INTERACTIVE_RID (0x00000004L)
+#define SECURITY_SERVICE_RID (0x00000006L)
+#define SECURITY_ANONYMOUS_LOGON_RID (0x00000007L)
+#define SECURITY_PROXY_RID (0x00000008L)
+#define SECURITY_SERVER_LOGON_RID (0x00000009L)
+
+#define SECURITY_LOGON_IDS_RID (0x00000005L)
+#define SECURITY_LOGON_IDS_RID_COUNT (3L)
+
+#define SECURITY_LOCAL_SYSTEM_RID (0x00000012L)
+
+#define SECURITY_NT_NON_UNIQUE (0x00000015L)
+
+#define SECURITY_BUILTIN_DOMAIN_RID (0x00000020L)
+
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// well-known domain relative sub-authority values (RIDs)... //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+// Well-known users ...
+
+#define DOMAIN_USER_RID_ADMIN (0x000001F4L)
+#define DOMAIN_USER_RID_GUEST (0x000001F5L)
+
+
+
+// well-known groups ...
+
+#define DOMAIN_GROUP_RID_ADMINS (0x00000200L)
+#define DOMAIN_GROUP_RID_USERS (0x00000201L)
+#define DOMAIN_GROUP_RID_GUESTS (0x00000202L)
+
+
+
+
+// well-known aliases ...
+
+#define DOMAIN_ALIAS_RID_ADMINS (0x00000220L)
+#define DOMAIN_ALIAS_RID_USERS (0x00000221L)
+#define DOMAIN_ALIAS_RID_GUESTS (0x00000222L)
+#define DOMAIN_ALIAS_RID_POWER_USERS (0x00000223L)
+
+#define DOMAIN_ALIAS_RID_ACCOUNT_OPS (0x00000224L)
+#define DOMAIN_ALIAS_RID_SYSTEM_OPS (0x00000225L)
+#define DOMAIN_ALIAS_RID_PRINT_OPS (0x00000226L)
+#define DOMAIN_ALIAS_RID_BACKUP_OPS (0x00000227L)
+
+#define DOMAIN_ALIAS_RID_REPLICATOR (0x00000228L)
+
+
+
+
+
+
+// end_winnt end_ntifs
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// obsolete well-known account RIDs. //
+// These became obsolete with the flexadmin model. //
+// These will be deleted shortly - DON'T USE THESE //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+//#define DOMAIN_ADMIN_USER_RID (0x000001F4L)
+//#define DOMAIN_ADMIN_RID (0x000001F5L)
+//#define DOMAIN_USERS_RID (0x000001F6L)
+//#define DOMAIN_GUESTS_RID (0x000001F7L)
+//#define DOMAIN_ACCOUNT_OPERATORS_RID (0x000001F8L)
+//#define DOMAIN_SERVER_OPERATORS_RID (0x000001F9L)
+//#define DOMAIN_PRINT_OPERATORS_RID (0x000001FAL)
+//#define DOMAIN_COMM_OPERATORS_RID (0x000001FBL)
+//#define DOMAIN_BACKUP_OPERATORS_RID (0x000001FCL)
+//#define DOMAIN_RESTORE_OPERATORS_RID (0x000001FDL)
+//
+//#define SECURITY_LOCAL_MANAGER_RID (0x00000010L)
+//#define SECURITY_LOCAL_GUESTS_RID (0x00000011L)
+//#define SECURITY_LOCAL_ADMIN_RID (0x00000013L)
+
+
+
+
+// begin_winnt begin_ntifs
+//
+// Allocate the System Luid. The first 1000 LUIDs are reserved.
+// Use #999 here (0x3E7 = 999)
+//
+
+#define SYSTEM_LUID { 0x3E7, 0x0 }
+
+// end_ntifs
+
+////////////////////////////////////////////////////////////////////////
+// //
+// User and Group related SID attributes //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// Group attributes
+//
+
+#define SE_GROUP_MANDATORY (0x00000001L)
+#define SE_GROUP_ENABLED_BY_DEFAULT (0x00000002L)
+#define SE_GROUP_ENABLED (0x00000004L)
+#define SE_GROUP_OWNER (0x00000008L)
+#define SE_GROUP_LOGON_ID (0xC0000000L)
+
+
+
+//
+// User attributes
+//
+
+// (None yet defined.)
+
+
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// ACL and ACE //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// Define an ACL and the ACE format. The structure of an ACL header
+// followed by one or more ACEs. Pictorally the structure of an ACL header
+// is 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
+// +-------------------------------+---------------+---------------+
+// | AclSize | Sbz1 | AclRevision |
+// +-------------------------------+---------------+---------------+
+// | Sbz2 | AceCount |
+// +-------------------------------+-------------------------------+
+//
+// The current AclRevision is defined to be ACL_REVISION.
+//
+// AclSize is the size, in bytes, allocated for the ACL. This includes
+// the ACL header, ACES, and remaining free space in the buffer.
+//
+// AceCount is the number of ACES in the ACL.
+//
+
+// begin_ntddk begin_ntifs
+// This is the *current* ACL revision
+
+#define ACL_REVISION (2)
+
+// This is the history of ACL revisions. Add a new one whenever
+// ACL_REVISION is updated
+
+#define ACL_REVISION1 (1)
+#define ACL_REVISION2 (2)
+#define ACL_REVISION3 (3)
+
+typedef struct _ACL {
+ UCHAR AclRevision;
+ UCHAR Sbz1;
+ USHORT AclSize;
+ USHORT AceCount;
+ USHORT Sbz2;
+} ACL;
+typedef ACL *PACL;
+
+// end_ntddk
+
+//
+// The structure of an ACE is a common ace header followed by ace type
+// specific data. Pictorally the structure of the common ace header is
+// 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
+// +---------------+-------+-------+---------------+---------------+
+// | AceSize | AceFlags | AceType |
+// +---------------+-------+-------+---------------+---------------+
+//
+// AceType denotes the type of the ace, there are some predefined ace
+// types
+//
+// AceSize is the size, in bytes, of ace.
+//
+// AceFlags are the Ace flags for audit and inheritance, defined shortly.
+
+typedef struct _ACE_HEADER {
+ UCHAR AceType;
+ UCHAR AceFlags;
+ USHORT AceSize;
+} ACE_HEADER;
+typedef ACE_HEADER *PACE_HEADER;
+
+//
+// The following are the predefined ace types that go into the AceType
+// field of an Ace header.
+//
+
+#define ACCESS_ALLOWED_ACE_TYPE (0x0)
+#define ACCESS_DENIED_ACE_TYPE (0x1)
+#define SYSTEM_AUDIT_ACE_TYPE (0x2)
+#define SYSTEM_ALARM_ACE_TYPE (0x3)
+// end_winnt
+
+#define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4)
+
+// begin_winnt
+
+//
+// The following are the inherit flags that go into the AceFlags field
+// of an Ace header.
+//
+
+#define OBJECT_INHERIT_ACE (0x1)
+#define CONTAINER_INHERIT_ACE (0x2)
+#define NO_PROPAGATE_INHERIT_ACE (0x4)
+#define INHERIT_ONLY_ACE (0x8)
+#define VALID_INHERIT_FLAGS (0xF)
+
+
+// The following are the currently defined ACE flags that go into the
+// AceFlags field of an ACE header. Each ACE type has its own set of
+// AceFlags.
+//
+// SUCCESSFUL_ACCESS_ACE_FLAG - used only with system audit and alarm ACE
+// types to indicate that a message is generated for successful accesses.
+//
+// FAILED_ACCESS_ACE_FLAG - used only with system audit and alarm ACE types
+// to indicate that a message is generated for failed accesses.
+//
+
+//
+// SYSTEM_AUDIT and SYSTEM_ALARM AceFlags
+//
+// These control the signaling of audit and alarms for success or failure.
+//
+
+#define SUCCESSFUL_ACCESS_ACE_FLAG (0x40)
+#define FAILED_ACCESS_ACE_FLAG (0x80)
+
+
+//
+// We'll define the structure of the predefined ACE types. Pictorally
+// the structure of the predefined ACE's is 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
+// +---------------+-------+-------+---------------+---------------+
+// | AceFlags | Resd |Inherit| AceSize | AceType |
+// +---------------+-------+-------+---------------+---------------+
+// | Mask |
+// +---------------------------------------------------------------+
+// | |
+// + +
+// | |
+// + Sid +
+// | |
+// + +
+// | |
+// +---------------------------------------------------------------+
+//
+// Mask is the access mask associated with the ACE. This is either the
+// access allowed, access denied, audit, or alarm mask.
+//
+// Sid is the Sid associated with the ACE.
+//
+
+// The following are the four predefined ACE types.
+
+// Examine the AceType field in the Header to determine
+// which structure is appropriate to use for casting.
+
+
+typedef struct _ACCESS_ALLOWED_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} ACCESS_ALLOWED_ACE;
+
+typedef ACCESS_ALLOWED_ACE *PACCESS_ALLOWED_ACE;
+
+typedef struct _ACCESS_DENIED_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} ACCESS_DENIED_ACE;
+typedef ACCESS_DENIED_ACE *PACCESS_DENIED_ACE;
+
+typedef struct _SYSTEM_AUDIT_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} SYSTEM_AUDIT_ACE;
+typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
+
+typedef struct _SYSTEM_ALARM_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ ULONG SidStart;
+} SYSTEM_ALARM_ACE;
+typedef SYSTEM_ALARM_ACE *PSYSTEM_ALARM_ACE;
+
+// end_ntifs
+
+// end_winnt
+//
+// COMPOUND ACE
+//
+// 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
+// +---------------+-------+-------+---------------+---------------+
+// | AceFlags | Resd |Inherit| AceSize | AceType |
+// +---------------+-------+-------+---------------+---------------+
+// | Mask |
+// +-------------------------------+-------------------------------+
+// | Compound ACE Type | Reserved (SBZ) |
+// +-------------------------------+-------------------------------+
+// | |
+// + +
+// | |
+// + Sid +
+// | |
+// + +
+// | |
+// +---------------------------------------------------------------+
+//
+
+
+
+typedef struct _COMPOUND_ACCESS_ALLOWED_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ USHORT CompoundAceType;
+ USHORT Reserved;
+ ULONG SidStart;
+} COMPOUND_ACCESS_ALLOWED_ACE;
+
+typedef COMPOUND_ACCESS_ALLOWED_ACE *PCOMPOUND_ACCESS_ALLOWED_ACE;
+
+//
+// Currently defined Compound ACE types
+//
+
+#define COMPOUND_ACE_IMPERSONATION 1
+
+// begin_winnt
+
+
+//
+// The following declarations are used for setting and querying information
+// about and ACL. First are the various information classes available to
+// the user.
+//
+
+typedef enum _ACL_INFORMATION_CLASS {
+ AclRevisionInformation = 1,
+ AclSizeInformation
+} ACL_INFORMATION_CLASS;
+
+//
+// This record is returned/sent if the user is requesting/setting the
+// AclRevisionInformation
+//
+
+typedef struct _ACL_REVISION_INFORMATION {
+ ULONG AclRevision;
+} ACL_REVISION_INFORMATION;
+typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION;
+
+//
+// This record is returned if the user is requesting AclSizeInformation
+//
+
+typedef struct _ACL_SIZE_INFORMATION {
+ ULONG AceCount;
+ ULONG AclBytesInUse;
+ ULONG AclBytesFree;
+} ACL_SIZE_INFORMATION;
+typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION;
+
+// end_winnt
+
+
+
+// begin_winnt
+
+////////////////////////////////////////////////////////////////////////
+// //
+// SECURITY_DESCRIPTOR //
+// //
+////////////////////////////////////////////////////////////////////////
+//
+// Define the Security Descriptor and related data types.
+// This is an opaque data structure.
+//
+
+// begin_ntddk begin_ntifs
+//
+// Current security descriptor revision value
+//
+
+#define SECURITY_DESCRIPTOR_REVISION (1)
+#define SECURITY_DESCRIPTOR_REVISION1 (1)
+
+// end_ntddk
+
+//
+// Minimum length, in bytes, needed to build a security descriptor
+// (NOTE: This must manually be kept consistent with the)
+// (sizeof(SECURITY_DESCRIPTOR) )
+//
+
+#define SECURITY_DESCRIPTOR_MIN_LENGTH (20)
+
+
+typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
+
+#define SE_OWNER_DEFAULTED (0x0001)
+#define SE_GROUP_DEFAULTED (0x0002)
+#define SE_DACL_PRESENT (0x0004)
+#define SE_DACL_DEFAULTED (0x0008)
+#define SE_SACL_PRESENT (0x0010)
+#define SE_SACL_DEFAULTED (0x0020)
+// end_winnt
+#define SE_DACL_UNTRUSTED (0x0040)
+#define SE_SERVER_SECURITY (0x0080)
+// begin_winnt
+#define SE_SELF_RELATIVE (0x8000)
+
+//
+// Where:
+//
+// SE_OWNER_DEFAULTED - This boolean flag, when set, indicates that the
+// SID pointed to by the Owner field was provided by a
+// defaulting mechanism rather than explicitly provided by the
+// original provider of the security descriptor. This may
+// affect the treatment of the SID with respect to inheritence
+// of an owner.
+//
+// SE_GROUP_DEFAULTED - This boolean flag, when set, indicates that the
+// SID in the Group field was provided by a defaulting mechanism
+// rather than explicitly provided by the original provider of
+// the security descriptor. This may affect the treatment of
+// the SID with respect to inheritence of a primary group.
+//
+// SE_DACL_PRESENT - This boolean flag, when set, indicates that the
+// security descriptor contains a discretionary ACL. If this
+// flag is set and the Dacl field of the SECURITY_DESCRIPTOR is
+// null, then a null ACL is explicitly being specified.
+//
+// SE_DACL_DEFAULTED - This boolean flag, when set, indicates that the
+// ACL pointed to by the Dacl field was provided by a defaulting
+// mechanism rather than explicitly provided by the original
+// provider of the security descriptor. This may affect the
+// treatment of the ACL with respect to inheritence of an ACL.
+// This flag is ignored if the DaclPresent flag is not set.
+//
+// SE_SACL_PRESENT - This boolean flag, when set, indicates that the
+// security descriptor contains a system ACL pointed to by the
+// Sacl field. If this flag is set and the Sacl field of the
+// SECURITY_DESCRIPTOR is null, then an empty (but present)
+// ACL is being specified.
+//
+// SE_SACL_DEFAULTED - This boolean flag, when set, indicates that the
+// ACL pointed to by the Sacl field was provided by a defaulting
+// mechanism rather than explicitly provided by the original
+// provider of the security descriptor. This may affect the
+// treatment of the ACL with respect to inheritence of an ACL.
+// This flag is ignored if the SaclPresent flag is not set.
+//
+// end_winnt
+// SE_DACL_TRUSTED - This boolean flag, when set, indicates that the
+// ACL pointed to by the Dacl field was provided by a trusted source
+// and does not require any editing of compound ACEs. If this flag
+// is not set and a compound ACE is encountered, the system will
+// substitute known valid SIDs for the server SIDs in the ACEs.
+//
+// SE_SERVER_SECURITY - This boolean flag, when set, indicates that the
+// caller wishes the system to create a Server ACL based on the
+// input ACL, regardess of its source (explicit or defaulting.
+// This is done by replacing all of the GRANT ACEs with compound
+// ACEs granting the current server. This flag is only
+// meaningful if the subject is impersonating.
+//
+// begin_winnt
+// SE_SELF_RELATIVE - This boolean flag, when set, indicates that the
+// security descriptor is in self-relative form. In this form,
+// all fields of the security descriptor are contiguous in memory
+// and all pointer fields are expressed as offsets from the
+// beginning of the security descriptor. This form is useful
+// for treating security descriptors as opaque data structures
+// for transmission in communication protocol or for storage on
+// secondary media.
+//
+//
+//
+// Pictorially the structure of a security descriptor is 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
+// +---------------------------------------------------------------+
+// | Control |Reserved1 (SBZ)| Revision |
+// +---------------------------------------------------------------+
+// | Owner |
+// +---------------------------------------------------------------+
+// | Group |
+// +---------------------------------------------------------------+
+// | Sacl |
+// +---------------------------------------------------------------+
+// | Dacl |
+// +---------------------------------------------------------------+
+//
+// In general, this data structure should be treated opaquely to ensure future
+// compatibility.
+//
+//
+
+typedef struct _SECURITY_DESCRIPTOR {
+ UCHAR Revision;
+ UCHAR Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+ } SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
+
+// end_ntifs
+
+// Where:
+//
+// Revision - Contains the revision level of the security
+// descriptor. This allows this structure to be passed between
+// systems or stored on disk even though it is expected to
+// change in the future.
+//
+// Control - A set of flags which qualify the meaning of the
+// security descriptor or individual fields of the security
+// descriptor.
+//
+// Owner - is a pointer to an SID representing an object's owner.
+// If this field is null, then no owner SID is present in the
+// security descriptor. If the security descriptor is in
+// self-relative form, then this field contains an offset to
+// the SID, rather than a pointer.
+//
+// Group - is a pointer to an SID representing an object's primary
+// group. If this field is null, then no primary group SID is
+// present in the security descriptor. If the security descriptor
+// is in self-relative form, then this field contains an offset to
+// the SID, rather than a pointer.
+//
+// Sacl - is a pointer to a system ACL. This field value is only
+// valid if the DaclPresent control flag is set. If the
+// SaclPresent flag is set and this field is null, then a null
+// ACL is specified. If the security descriptor is in
+// self-relative form, then this field contains an offset to
+// the ACL, rather than a pointer.
+//
+// Dacl - is a pointer to a discretionary ACL. This field value is
+// only valid if the DaclPresent control flag is set. If the
+// DaclPresent flag is set and this field is null, then a null
+// ACL (unconditionally granting access) is specified. If the
+// security descriptor is in self-relative form, then this field
+// contains an offset to the ACL, rather than a pointer.
+//
+
+
+// end_winnt
+
+
+// begin_winnt
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Privilege Related Data Structures //
+// //
+////////////////////////////////////////////////////////////////////////
+
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// Privilege attributes
+//
+
+#define SE_PRIVILEGE_ENABLED_BY_DEFAULT (0x00000001L)
+#define SE_PRIVILEGE_ENABLED (0x00000002L)
+#define SE_PRIVILEGE_USED_FOR_ACCESS (0x80000000L)
+
+//
+// Privilege Set Control flags
+//
+
+#define PRIVILEGE_SET_ALL_NECESSARY (1)
+
+//
+// Privilege Set - This is defined for a privilege set of one.
+// If more than one privilege is needed, then this structure
+// will need to be allocated with more space.
+//
+// Note: don't change this structure without fixing the INITIAL_PRIVILEGE_SET
+// structure (defined in se.h)
+//
+
+typedef struct _PRIVILEGE_SET {
+ ULONG PrivilegeCount;
+ ULONG Control;
+ LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
+ } PRIVILEGE_SET, * PPRIVILEGE_SET;
+
+// end_winnt end_ntddk end_nthal end_ntifs
+
+// begin_winnt
+
+////////////////////////////////////////////////////////////////////////
+// //
+// NT Defined Privileges //
+// //
+////////////////////////////////////////////////////////////////////////
+// end_winnt
+
+//
+// ** ** ** ** ** ** ** ** ** ** NOTE ** ** ** ** ** ** ** ** ** ** ** ** **
+//
+// Any additions or deletions to the following list
+// of privileges must have corresponding changes made
+// in ntos\se\seglobal.c and in private\lsa\msprivs\msprivs.rc.
+//
+// ** ** ** ** ** ** ** ** ** ** NOTE ** ** ** ** ** ** ** ** ** ** ** ** **
+//
+
+
+// begin_winnt
+
+#define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege")
+#define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege")
+#define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege")
+#define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege")
+#define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege")
+#define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
+#define SE_TCB_NAME TEXT("SeTcbPrivilege")
+#define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
+#define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege")
+#define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege")
+#define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege")
+#define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
+#define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege")
+#define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege")
+#define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
+#define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege")
+#define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
+#define SE_RESTORE_NAME TEXT("SeRestorePrivilege")
+#define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")
+#define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
+#define SE_AUDIT_NAME TEXT("SeAuditPrivilege")
+#define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege")
+#define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege")
+#define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege")
+// end_winnt
+
+// begin_ntddk begin_ntifs
+//
+// These must be converted to LUIDs before use.
+//
+
+#define SE_MIN_WELL_KNOWN_PRIVILEGE (2L)
+#define SE_CREATE_TOKEN_PRIVILEGE (2L)
+#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE (3L)
+#define SE_LOCK_MEMORY_PRIVILEGE (4L)
+#define SE_INCREASE_QUOTA_PRIVILEGE (5L)
+
+//
+// Unsolicited Input is obsolete and unused.
+//
+
+#define SE_UNSOLICITED_INPUT_PRIVILEGE (6L)
+
+#define SE_MACHINE_ACCOUNT_PRIVILEGE (6L)
+#define SE_TCB_PRIVILEGE (7L)
+#define SE_SECURITY_PRIVILEGE (8L)
+#define SE_TAKE_OWNERSHIP_PRIVILEGE (9L)
+#define SE_LOAD_DRIVER_PRIVILEGE (10L)
+#define SE_SYSTEM_PROFILE_PRIVILEGE (11L)
+#define SE_SYSTEMTIME_PRIVILEGE (12L)
+#define SE_PROF_SINGLE_PROCESS_PRIVILEGE (13L)
+#define SE_INC_BASE_PRIORITY_PRIVILEGE (14L)
+#define SE_CREATE_PAGEFILE_PRIVILEGE (15L)
+#define SE_CREATE_PERMANENT_PRIVILEGE (16L)
+#define SE_BACKUP_PRIVILEGE (17L)
+#define SE_RESTORE_PRIVILEGE (18L)
+#define SE_SHUTDOWN_PRIVILEGE (19L)
+#define SE_DEBUG_PRIVILEGE (20L)
+#define SE_AUDIT_PRIVILEGE (21L)
+#define SE_SYSTEM_ENVIRONMENT_PRIVILEGE (22L)
+#define SE_CHANGE_NOTIFY_PRIVILEGE (23L)
+#define SE_REMOTE_SHUTDOWN_PRIVILEGE (24L)
+#define SE_MAX_WELL_KNOWN_PRIVILEGE (SE_REMOTE_SHUTDOWN_PRIVILEGE)
+
+// end_ntddk end_ntifs
+
+
+
+
+// begin_winnt
+
+
+////////////////////////////////////////////////////////////////////
+// //
+// Security Quality Of Service //
+// //
+// //
+////////////////////////////////////////////////////////////////////
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// Impersonation Level
+//
+// Impersonation level is represented by a pair of bits in Windows.
+// If a new impersonation level is added or lowest value is changed from
+// 0 to something else, fix the Windows CreateFile call.
+//
+
+typedef enum _SECURITY_IMPERSONATION_LEVEL {
+ SecurityAnonymous,
+ SecurityIdentification,
+ SecurityImpersonation,
+ SecurityDelegation
+ } SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL;
+
+#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
+
+#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
+
+// end_nthal end_ntddk end_ntifs end_winnt
+//
+
+// begin_winnt begin_ntifs
+
+////////////////////////////////////////////////////////////////////
+// //
+// Token Object Definitions //
+// //
+// //
+////////////////////////////////////////////////////////////////////
+
+
+//
+// Token Specific Access Rights.
+//
+
+#define TOKEN_ASSIGN_PRIMARY (0x0001)
+#define TOKEN_DUPLICATE (0x0002)
+#define TOKEN_IMPERSONATE (0x0004)
+#define TOKEN_QUERY (0x0008)
+#define TOKEN_QUERY_SOURCE (0x0010)
+#define TOKEN_ADJUST_PRIVILEGES (0x0020)
+#define TOKEN_ADJUST_GROUPS (0x0040)
+#define TOKEN_ADJUST_DEFAULT (0x0080)
+
+#define TOKEN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ TOKEN_ASSIGN_PRIMARY |\
+ TOKEN_DUPLICATE |\
+ TOKEN_IMPERSONATE |\
+ TOKEN_QUERY |\
+ TOKEN_QUERY_SOURCE |\
+ TOKEN_ADJUST_PRIVILEGES |\
+ TOKEN_ADJUST_GROUPS |\
+ TOKEN_ADJUST_DEFAULT)
+
+
+#define TOKEN_READ (STANDARD_RIGHTS_READ |\
+ TOKEN_QUERY)
+
+
+#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\
+ TOKEN_ADJUST_PRIVILEGES |\
+ TOKEN_ADJUST_GROUPS |\
+ TOKEN_ADJUST_DEFAULT)
+
+#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE)
+
+
+//
+//
+// Token Types
+//
+
+typedef enum _TOKEN_TYPE {
+ TokenPrimary = 1,
+ TokenImpersonation
+ } TOKEN_TYPE;
+typedef TOKEN_TYPE *PTOKEN_TYPE;
+
+
+//
+// Token Information Classes.
+//
+
+
+typedef enum _TOKEN_INFORMATION_CLASS {
+ TokenUser = 1,
+ TokenGroups,
+ TokenPrivileges,
+ TokenOwner,
+ TokenPrimaryGroup,
+ TokenDefaultDacl,
+ TokenSource,
+ TokenType,
+ TokenImpersonationLevel,
+ TokenStatistics
+} TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS;
+// end_ntifs
+
+//
+// Token information class structures
+//
+
+
+typedef struct _TOKEN_USER {
+ SID_AND_ATTRIBUTES User;
+} TOKEN_USER, *PTOKEN_USER;
+
+// begin_ntifs
+
+typedef struct _TOKEN_GROUPS {
+ ULONG GroupCount;
+ SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
+} TOKEN_GROUPS, *PTOKEN_GROUPS;
+
+
+typedef struct _TOKEN_PRIVILEGES {
+ ULONG PrivilegeCount;
+ LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
+} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
+
+// end_ntifs
+
+typedef struct _TOKEN_OWNER {
+ PSID Owner;
+} TOKEN_OWNER, *PTOKEN_OWNER;
+
+
+typedef struct _TOKEN_PRIMARY_GROUP {
+ PSID PrimaryGroup;
+} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;
+
+
+typedef struct _TOKEN_DEFAULT_DACL {
+ PACL DefaultDacl;
+} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
+
+
+// end_winnt
+
+// begin_ntddk begin_ntifs
+
+
+typedef enum _PROXY_CLASS {
+ ProxyFull,
+ ProxyService,
+ ProxyTree,
+ ProxyDirectory
+} PROXY_CLASS, * PPROXY_CLASS;
+
+
+typedef struct _SECURITY_TOKEN_PROXY_DATA {
+ ULONG Length;
+ PROXY_CLASS ProxyClass;
+ UNICODE_STRING PathInfo;
+ ACCESS_MASK ContainerMask;
+ ACCESS_MASK ObjectMask;
+} SECURITY_TOKEN_PROXY_DATA, *PSECURITY_TOKEN_PROXY_DATA;
+
+typedef struct _SECURITY_TOKEN_AUDIT_DATA {
+ ULONG Length;
+ ACCESS_MASK GrantMask;
+ ACCESS_MASK DenyMask;
+} SECURITY_TOKEN_AUDIT_DATA, *PSECURITY_TOKEN_AUDIT_DATA;
+
+// end_ntddk end_ntifs
+
+
+// begin_ntifs begin_winnt
+
+#define TOKEN_SOURCE_LENGTH 8
+
+typedef struct _TOKEN_SOURCE {
+ CHAR SourceName[TOKEN_SOURCE_LENGTH];
+ LUID SourceIdentifier;
+} TOKEN_SOURCE, *PTOKEN_SOURCE;
+
+// end_ntifs
+
+typedef struct _TOKEN_STATISTICS {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LARGE_INTEGER ExpirationTime;
+ TOKEN_TYPE TokenType;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ ULONG DynamicCharged;
+ ULONG DynamicAvailable;
+ ULONG GroupCount;
+ ULONG PrivilegeCount;
+ LUID ModifiedId;
+} TOKEN_STATISTICS, *PTOKEN_STATISTICS;
+
+
+// begin_ntifs
+
+typedef struct _TOKEN_CONTROL {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LUID ModifiedId;
+ TOKEN_SOURCE TokenSource;
+ } TOKEN_CONTROL, *PTOKEN_CONTROL;
+
+// end_winnt
+// end_ntifs
+
+
+// begin_ntddk begin_ntifs begin_winnt
+//
+// Security Tracking Mode
+//
+
+#define SECURITY_DYNAMIC_TRACKING (TRUE)
+#define SECURITY_STATIC_TRACKING (FALSE)
+
+typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,
+ * PSECURITY_CONTEXT_TRACKING_MODE;
+
+
+
+//
+// Quality Of Service
+//
+
+typedef struct _SECURITY_QUALITY_OF_SERVICE {
+ ULONG Length;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
+ BOOLEAN EffectiveOnly;
+ } SECURITY_QUALITY_OF_SERVICE, * PSECURITY_QUALITY_OF_SERVICE;
+
+// end_winnt end_ntddk end_ntifs
+
+//
+// Advanced Quality of Service
+//
+
+typedef struct _SECURITY_ADVANCED_QUALITY_OF_SERVICE {
+ ULONG Length;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
+ BOOLEAN EffectiveOnly;
+ PSECURITY_TOKEN_PROXY_DATA ProxyData;
+ PSECURITY_TOKEN_AUDIT_DATA AuditData;
+} SECURITY_ADVANCED_QUALITY_OF_SERVICE, *PSECURITY_ADVANCED_QUALITY_OF_SERVICE;
+
+
+// begin_ntddk begin_ntifs begin_winnt
+
+//
+// Used to represent information related to a thread impersonation
+//
+
+typedef struct _SE_IMPERSONATION_STATE {
+ PACCESS_TOKEN Token;
+ BOOLEAN CopyOnOpen;
+ BOOLEAN EffectiveOnly;
+ SECURITY_IMPERSONATION_LEVEL Level;
+} SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE;
+
+// end_winnt end_ntddk end_ntifs
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// General Security definitions //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// Security information associated with objects.
+// Used for query operations.
+//
+// This will be extended in the future to include mandatory access control.
+//
+
+// begin_winnt begin_ntddk begin_nthal begin_ntifs
+
+typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION;
+
+#define OWNER_SECURITY_INFORMATION (0X00000001L)
+#define GROUP_SECURITY_INFORMATION (0X00000002L)
+#define DACL_SECURITY_INFORMATION (0X00000004L)
+#define SACL_SECURITY_INFORMATION (0X00000008L)
+// end_winnt end_ntddk end_nthal end_ntifs
+
+
+//
+// used for password manipulations
+//
+
+
+typedef struct _SECURITY_SEED_AND_LENGTH {
+ UCHAR Length;
+ UCHAR Seed;
+} SECURITY_SEED_AND_LENGTH, *PSECURITY_SEED_AND_LENGTH;
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Security System Service Defnitions //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// Security check system services
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAccessCheck (
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+ IN HANDLE ClientToken,
+ IN ACCESS_MASK DesiredAccess,
+ IN PGENERIC_MAPPING GenericMapping,
+ OUT PPRIVILEGE_SET PrivilegeSet,
+ IN OUT PULONG PrivilegeSetLength,
+ OUT PACCESS_MASK GrantedAccess,
+ OUT PNTSTATUS AccessStatus
+ );
+
+
+
+///////////////////////////////////////////////////////////////////////
+// //
+// Token Object System Services //
+// //
+///////////////////////////////////////////////////////////////////////
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCreateToken(
+ OUT PHANDLE TokenHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+ IN TOKEN_TYPE TokenType,
+ IN PLUID AuthenticationId,
+ IN PLARGE_INTEGER ExpirationTime,
+ IN PTOKEN_USER User,
+ IN PTOKEN_GROUPS Groups,
+ IN PTOKEN_PRIVILEGES Privileges,
+ IN PTOKEN_OWNER Owner OPTIONAL,
+ IN PTOKEN_PRIMARY_GROUP PrimaryGroup,
+ IN PTOKEN_DEFAULT_DACL DefaultDacl OPTIONAL,
+ IN PTOKEN_SOURCE TokenSource
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenThreadToken(
+ IN HANDLE ThreadHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN BOOLEAN OpenAsSelf,
+ OUT PHANDLE TokenHandle
+ );
+
+// begin_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenProcessToken(
+ IN HANDLE ProcessHandle,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PHANDLE TokenHandle
+ );
+
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDuplicateToken(
+ IN HANDLE ExistingTokenHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN BOOLEAN EffectiveOnly,
+ IN TOKEN_TYPE TokenType,
+ OUT PHANDLE NewTokenHandle
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtQueryInformationToken (
+ IN HANDLE TokenHandle,
+ IN TOKEN_INFORMATION_CLASS TokenInformationClass,
+ OUT PVOID TokenInformation,
+ IN ULONG TokenInformationLength,
+ OUT PULONG ReturnLength
+ );
+
+// end_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtSetInformationToken (
+ IN HANDLE TokenHandle,
+ IN TOKEN_INFORMATION_CLASS TokenInformationClass,
+ IN PVOID TokenInformation,
+ IN ULONG TokenInformationLength
+ );
+
+// begin_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAdjustPrivilegesToken (
+ IN HANDLE TokenHandle,
+ IN BOOLEAN DisableAllPrivileges,
+ IN PTOKEN_PRIVILEGES NewState OPTIONAL,
+ IN ULONG BufferLength OPTIONAL,
+ IN PTOKEN_PRIVILEGES PreviousState OPTIONAL,
+ OUT PULONG ReturnLength
+ );
+
+// end_ntifs
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAdjustGroupsToken (
+ IN HANDLE TokenHandle,
+ IN BOOLEAN ResetToDefault,
+ IN PTOKEN_GROUPS NewState OPTIONAL,
+ IN ULONG BufferLength OPTIONAL,
+ IN PTOKEN_GROUPS PreviousState OPTIONAL,
+ OUT PULONG ReturnLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtPrivilegeCheck (
+ IN HANDLE ClientToken,
+ IN OUT PPRIVILEGE_SET RequiredPrivileges,
+ OUT PBOOLEAN Result
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtAccessCheckAndAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PVOID HandleId,
+ IN PUNICODE_STRING ObjectTypeName,
+ IN PUNICODE_STRING ObjectName,
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+ IN ACCESS_MASK DesiredAccess,
+ IN PGENERIC_MAPPING GenericMapping,
+ IN BOOLEAN ObjectCreation,
+ OUT PACCESS_MASK GrantedAccess,
+ OUT PNTSTATUS AccessStatus,
+ OUT PBOOLEAN GenerateOnClose
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtOpenObjectAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PVOID HandleId OPTIONAL,
+ IN PUNICODE_STRING ObjectTypeName,
+ IN PUNICODE_STRING ObjectName,
+ IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
+ IN HANDLE ClientToken,
+ IN ACCESS_MASK DesiredAccess,
+ IN ACCESS_MASK GrantedAccess,
+ IN PPRIVILEGE_SET Privileges OPTIONAL,
+ IN BOOLEAN ObjectCreation,
+ IN BOOLEAN AccessGranted,
+ OUT PBOOLEAN GenerateOnClose
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtPrivilegeObjectAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PVOID HandleId,
+ IN HANDLE ClientToken,
+ IN ACCESS_MASK DesiredAccess,
+ IN PPRIVILEGE_SET Privileges,
+ IN BOOLEAN AccessGranted
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCloseObjectAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PVOID HandleId,
+ IN BOOLEAN GenerateOnClose
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtDeleteObjectAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PVOID HandleId,
+ IN BOOLEAN GenerateOnClose
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtPrivilegedServiceAuditAlarm (
+ IN PUNICODE_STRING SubsystemName,
+ IN PUNICODE_STRING ServiceName,
+ IN HANDLE ClientToken,
+ IN PPRIVILEGE_SET Privileges,
+ IN BOOLEAN AccessGranted
+ );
+
+#endif // _NTSEAPI_
diff --git a/public/sdk/inc/ntsecapi.h b/public/sdk/inc/ntsecapi.h
new file mode 100644
index 000000000..be6341b57
--- /dev/null
+++ b/public/sdk/inc/ntsecapi.h
@@ -0,0 +1,1148 @@
+/*++ BUILD Version: 0006 Increment this if a change has global effects
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ ntsecapi.h
+
+Abstract:
+
+ This module defines the Local Security Authority APIs.
+
+Revision History:
+
+--*/
+
+#ifndef _NTSECAPI_
+#define _NTSECAPI_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _NTDEF_
+typedef LONG NTSTATUS, *PNTSTATUS;
+#endif
+
+#ifndef _NTLSA_IFS_
+// begin_ntifs
+
+
+//
+// Security operation mode of the system is held in a control
+// longword.
+//
+
+typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
+
+// end_ntifs
+#endif // _NTLSA_IFS_
+
+//
+// The flags in the security operational mode are defined
+// as:
+//
+// PasswordProtected - Some level of authentication (such as
+// a password) must be provided by users before they are
+// allowed to use the system. Once set, this value will
+// not be cleared without re-booting the system.
+//
+// IndividualAccounts - Each user must identify an account to
+// logon to. This flag is only meaningful if the
+// PasswordProtected flag is also set. If this flag is
+// not set and the PasswordProtected flag is set, then all
+// users may logon to the same account. Once set, this value
+// will not be cleared without re-booting the system.
+//
+// MandatoryAccess - Indicates the system is running in a mandatory
+// access control mode (e.g., B-level as defined by the U.S.A's
+// Department of Defense's "Orange Book"). This is not utilized
+// in the current release of NT. This flag is only meaningful
+// if both the PasswordProtected and IndividualAccounts flags are
+// set. Once set, this value will not be cleared without
+// re-booting the system.
+//
+// LogFull - Indicates the system has been brought up in a mode in
+// which if must perform security auditing, but its audit log
+// is full. This may (should) restrict the operations that
+// can occur until the audit log is made not-full again. THIS
+// VALUE MAY BE CLEARED WHILE THE SYSTEM IS RUNNING (I.E., WITHOUT
+// REBOOTING).
+//
+// If the PasswordProtected flag is not set, then the system is running
+// without security, and user interface should be adjusted appropriately.
+//
+
+#define LSA_MODE_PASSWORD_PROTECTED (0x00000001L)
+#define LSA_MODE_INDIVIDUAL_ACCOUNTS (0x00000002L)
+#define LSA_MODE_MANDATORY_ACCESS (0x00000004L)
+#define LSA_MODE_LOG_FULL (0x00000008L)
+
+#ifndef _NTLSA_IFS_
+// begin_ntifs
+//
+// Used by a logon process to indicate what type of logon is being
+// requested.
+// NOTE: Proxy logon type is not currently supported in NT 3.x
+//
+
+typedef enum _SECURITY_LOGON_TYPE {
+ Interactive = 2, // Interactively logged on (locally or remotely)
+ Network, // Accessing system via network
+ Batch, // Started via a batch queue
+ Service, // Service started by service controller
+ Proxy, // Proxy logon
+ Unlock // Unlock workstation
+} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
+
+// end_ntifs
+#endif // _NTLSA_IFS_
+
+
+//
+// Audit Event Categories
+//
+// The following are the built-in types or Categories of audit event.
+// WARNING! This structure is subject to expansion. The user should not
+// compute the number of elements of this type directly, but instead
+// should obtain the count of elements by calling LsaQueryInformationPolicy()
+// for the PolicyAuditEventsInformation class and extracting the count from
+// the MaximumAuditEventCount field of the returned structure.
+//
+
+typedef enum _POLICY_AUDIT_EVENT_TYPE {
+
+ AuditCategorySystem,
+ AuditCategoryLogon,
+ AuditCategoryObjectAccess,
+ AuditCategoryPrivilegeUse,
+ AuditCategoryDetailedTracking,
+ AuditCategoryPolicyChange,
+ AuditCategoryAccountManagement
+
+} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE;
+
+
+//
+// The following defines describe the auditing options for each
+// event type
+//
+
+// Leave options specified for this event unchanged
+
+#define POLICY_AUDIT_EVENT_UNCHANGED (0x00000000L)
+
+// Audit successful occurrences of events of this type
+
+#define POLICY_AUDIT_EVENT_SUCCESS (0x00000001L)
+
+// Audit failed attempts to cause an event of this type to occur
+
+#define POLICY_AUDIT_EVENT_FAILURE (0x00000002L)
+
+#define POLICY_AUDIT_EVENT_NONE (0x00000004L)
+
+// Mask of valid event auditing options
+
+#define POLICY_AUDIT_EVENT_MASK \
+ (POLICY_AUDIT_EVENT_SUCCESS | \
+ POLICY_AUDIT_EVENT_FAILURE | \
+ POLICY_AUDIT_EVENT_UNCHANGED | \
+ POLICY_AUDIT_EVENT_NONE)
+
+
+#ifdef _NTDEF_
+// begin_ntifs
+typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
+typedef STRING LSA_STRING, *PLSA_STRING;
+typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
+// end_ntifs
+#else // _NTDEF_
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+
+typedef struct _LSA_UNICODE_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PWSTR Buffer;
+} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
+
+typedef struct _LSA_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PCHAR Buffer;
+} LSA_STRING, *PLSA_STRING;
+
+typedef struct _LSA_OBJECT_ATTRIBUTES {
+ ULONG Length;
+ HANDLE RootDirectory;
+ PLSA_UNICODE_STRING ObjectName;
+ ULONG Attributes;
+ PVOID SecurityDescriptor; // Points to type SECURITY_DESCRIPTOR
+ PVOID SecurityQualityOfService; // Points to type SECURITY_QUALITY_OF_SERVICE
+} LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
+
+
+
+#endif // _NTDEF_
+
+//
+// Macro for determining whether an API succeeded.
+//
+
+#define LSA_SUCCESS(Error) ((LONG)(Error) >= 0)
+
+#ifndef _NTLSA_IFS_
+// begin_ntifs
+
+NTSTATUS
+NTAPI
+LsaRegisterLogonProcess (
+ IN PLSA_STRING LogonProcessName,
+ OUT PHANDLE LsaHandle,
+ OUT PLSA_OPERATIONAL_MODE SecurityMode
+ );
+
+// end_ntifs
+// begin_ntsrv
+
+NTSTATUS
+NTAPI
+LsaLogonUser (
+ IN HANDLE LsaHandle,
+ IN PLSA_STRING OriginName,
+ IN SECURITY_LOGON_TYPE LogonType,
+ IN ULONG AuthenticationPackage,
+ IN PVOID AuthenticationInformation,
+ IN ULONG AuthenticationInformationLength,
+ IN PTOKEN_GROUPS LocalGroups OPTIONAL,
+ IN PTOKEN_SOURCE SourceContext,
+ OUT PVOID *ProfileBuffer,
+ OUT PULONG ProfileBufferLength,
+ OUT PLUID LogonId,
+ OUT PHANDLE Token,
+ OUT PQUOTA_LIMITS Quotas,
+ OUT PNTSTATUS SubStatus
+ );
+
+
+// end_ntsrv
+// begin_ntifs
+
+NTSTATUS
+NTAPI
+LsaLookupAuthenticationPackage (
+ IN HANDLE LsaHandle,
+ IN PLSA_STRING PackageName,
+ OUT PULONG AuthenticationPackage
+ );
+
+NTSTATUS
+NTAPI
+LsaFreeReturnBuffer (
+ IN PVOID Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaCallAuthenticationPackage (
+ IN HANDLE LsaHandle,
+ IN ULONG AuthenticationPackage,
+ IN PVOID ProtocolSubmitBuffer,
+ IN ULONG SubmitBufferLength,
+ OUT PVOID *ProtocolReturnBuffer,
+ OUT PULONG ReturnBufferLength,
+ OUT PNTSTATUS ProtocolStatus
+ );
+
+
+NTSTATUS
+NTAPI
+LsaDeregisterLogonProcess (
+ IN HANDLE LsaHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaConnectUntrusted (
+ OUT PHANDLE LsaHandle
+ );
+
+
+// end_ntifs
+#endif // _NTLSA_IFS_
+
+////////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy Administration API datatypes and defines //
+// //
+////////////////////////////////////////////////////////////////////////////
+
+//
+// Access types for the Policy object
+//
+
+#define POLICY_VIEW_LOCAL_INFORMATION 0x00000001L
+#define POLICY_VIEW_AUDIT_INFORMATION 0x00000002L
+#define POLICY_GET_PRIVATE_INFORMATION 0x00000004L
+#define POLICY_TRUST_ADMIN 0x00000008L
+#define POLICY_CREATE_ACCOUNT 0x00000010L
+#define POLICY_CREATE_SECRET 0x00000020L
+#define POLICY_CREATE_PRIVILEGE 0x00000040L
+#define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080L
+#define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100L
+#define POLICY_AUDIT_LOG_ADMIN 0x00000200L
+#define POLICY_SERVER_ADMIN 0x00000400L
+#define POLICY_LOOKUP_NAMES 0x00000800L
+
+#define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ POLICY_VIEW_LOCAL_INFORMATION |\
+ POLICY_VIEW_AUDIT_INFORMATION |\
+ POLICY_GET_PRIVATE_INFORMATION |\
+ POLICY_TRUST_ADMIN |\
+ POLICY_CREATE_ACCOUNT |\
+ POLICY_CREATE_SECRET |\
+ POLICY_CREATE_PRIVILEGE |\
+ POLICY_SET_DEFAULT_QUOTA_LIMITS |\
+ POLICY_SET_AUDIT_REQUIREMENTS |\
+ POLICY_AUDIT_LOG_ADMIN |\
+ POLICY_SERVER_ADMIN |\
+ POLICY_LOOKUP_NAMES )
+
+
+#define POLICY_READ (STANDARD_RIGHTS_READ |\
+ POLICY_VIEW_AUDIT_INFORMATION |\
+ POLICY_GET_PRIVATE_INFORMATION)
+
+#define POLICY_WRITE (STANDARD_RIGHTS_WRITE |\
+ POLICY_TRUST_ADMIN |\
+ POLICY_CREATE_ACCOUNT |\
+ POLICY_CREATE_SECRET |\
+ POLICY_CREATE_PRIVILEGE |\
+ POLICY_SET_DEFAULT_QUOTA_LIMITS |\
+ POLICY_SET_AUDIT_REQUIREMENTS |\
+ POLICY_AUDIT_LOG_ADMIN |\
+ POLICY_SERVER_ADMIN)
+
+#define POLICY_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ POLICY_VIEW_LOCAL_INFORMATION |\
+ POLICY_LOOKUP_NAMES )
+
+
+//
+// Policy object specific data types.
+//
+
+//
+// The following data type is used to identify a domain
+//
+
+typedef struct _LSA_TRUST_INFORMATION {
+
+ LSA_UNICODE_STRING Name;
+ PSID Sid;
+
+} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
+
+// where members have the following usage:
+//
+// Name - The name of the domain.
+//
+// Sid - A pointer to the Sid of the Domain
+//
+
+//
+// The following data type is used in name and SID lookup services to
+// describe the domains referenced in the lookup operation.
+//
+
+typedef struct _LSA_REFERENCED_DOMAIN_LIST {
+
+ ULONG Entries;
+ PLSA_TRUST_INFORMATION Domains;
+
+} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
+
+// where members have the following usage:
+//
+// Entries - Is a count of the number of domains described in the
+// Domains array.
+//
+// Domains - Is a pointer to an array of Entries LSA_TRUST_INFORMATION data
+// structures.
+//
+
+
+//
+// The following data type is used in name to SID lookup services to describe
+// the domains referenced in the lookup operation.
+//
+
+typedef struct _LSA_TRANSLATED_SID {
+
+ SID_NAME_USE Use;
+ ULONG RelativeId;
+ LONG DomainIndex;
+
+} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
+
+// where members have the following usage:
+//
+// Use - identifies the use of the SID. If this value is SidUnknown or
+// SidInvalid, then the remainder of the record is not set and
+// should be ignored.
+//
+// RelativeId - Contains the relative ID of the translated SID. The
+// remainder of the SID (the prefix) is obtained using the
+// DomainIndex field.
+//
+// DomainIndex - Is the index of an entry in a related
+// LSA_REFERENCED_DOMAIN_LIST data structure describing the
+// domain in which the account was found.
+//
+// If there is no corresponding reference domain for an entry, then
+// this field will contain a negative value.
+//
+
+
+//
+// The following data type is used in SID to name lookup services to
+// describe the domains referenced in the lookup operation.
+//
+
+typedef struct _LSA_TRANSLATED_NAME {
+
+ SID_NAME_USE Use;
+ LSA_UNICODE_STRING Name;
+ LONG DomainIndex;
+
+} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
+
+// where the members have the following usage:
+//
+// Use - Identifies the use of the name. If this value is SidUnknown
+// or SidInvalid, then the remainder of the record is not set and
+// should be ignored. If this value is SidWellKnownGroup then the
+// Name field is invalid, but the DomainIndex field is not.
+//
+// Name - Contains the isolated name of the translated SID.
+//
+// DomainIndex - Is the index of an entry in a related
+// LSA_REFERENCED_DOMAIN_LIST data structure describing the domain
+// in which the account was found.
+//
+// If there is no corresponding reference domain for an entry, then
+// this field will contain a negative value.
+//
+
+
+//
+// The following data type is used to represent the role of the LSA
+// server (primary or backup).
+//
+
+typedef enum _POLICY_LSA_SERVER_ROLE {
+
+ PolicyServerRoleBackup = 2,
+ PolicyServerRolePrimary
+
+} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE;
+
+
+//
+// The following data type is used to represent the state of the LSA
+// server (enabled or disabled). Some operations may only be performed on
+// an enabled LSA server.
+//
+
+typedef enum _POLICY_SERVER_ENABLE_STATE {
+
+ PolicyServerEnabled = 2,
+ PolicyServerDisabled
+
+} POLICY_SERVER_ENABLE_STATE, *PPOLICY_SERVER_ENABLE_STATE;
+
+
+//
+// The following data type is used to specify the auditing options for
+// an Audit Event Type.
+//
+
+typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
+
+// where the following flags can be set:
+//
+// POLICY_AUDIT_EVENT_UNCHANGED - Leave existing auditing options
+// unchanged for events of this type. This flag is only used for
+// set operations. If this flag is set, then all other flags
+// are ignored.
+//
+// POLICY_AUDIT_EVENT_NONE - Cancel all auditing options for events
+// of this type. If this flag is set, the success/failure flags
+// are ignored.
+//
+// POLICY_AUDIT_EVENT_SUCCESS - When auditing is enabled, audit all
+// successful occurrences of events of the given type.
+//
+// POLICY_AUDIT_EVENT_FAILURE - When auditing is enabled, audit all
+// unsuccessful occurrences of events of the given type.
+//
+
+
+
+//
+// The following data type is used to return information about privileges
+// defined on a system.
+//
+
+typedef struct _POLICY_PRIVILEGE_DEFINITION {
+
+ LSA_UNICODE_STRING Name;
+ LUID LocalValue;
+
+} POLICY_PRIVILEGE_DEFINITION, *PPOLICY_PRIVILEGE_DEFINITION;
+
+// where the members have the following usage:
+//
+// Name - Is the architected name of the privilege. This is the
+// primary key of the privilege and the only value that is
+// transportable between systems.
+//
+// Luid - is a LUID value assigned locally for efficient representation
+// of the privilege. Ths value is meaningful only on the system it
+// was assigned on and is not transportable in any way.
+//
+
+
+//
+// The following data type defines the classes of Policy Information
+// that may be queried/set.
+//
+
+typedef enum _POLICY_INFORMATION_CLASS {
+
+ PolicyAuditLogInformation = 1,
+ PolicyAuditEventsInformation,
+ PolicyPrimaryDomainInformation,
+ PolicyPdAccountInformation,
+ PolicyAccountDomainInformation,
+ PolicyLsaServerRoleInformation,
+ PolicyReplicaSourceInformation,
+ PolicyDefaultQuotaInformation,
+ PolicyModificationInformation,
+ PolicyAuditFullSetInformation,
+ PolicyAuditFullQueryInformation
+
+} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
+
+
+//
+// The following data type corresponds to the PolicyAuditLogInformation
+// information class. It is used to represent information relating to
+// the Audit Log.
+//
+// This structure may be used in both query and set operations. However,
+// when used in set operations, some fields are ignored.
+//
+
+typedef struct _POLICY_AUDIT_LOG_INFO {
+
+ ULONG AuditLogPercentFull;
+ ULONG MaximumLogSize;
+ LARGE_INTEGER AuditRetentionPeriod;
+ BOOLEAN AuditLogFullShutdownInProgress;
+ LARGE_INTEGER TimeToShutdown;
+ ULONG NextAuditRecordId;
+
+} POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO;
+
+// where the members have the following usage:
+//
+// AuditLogPercentFull - Indicates the percentage of the Audit Log
+// currently being used.
+//
+// MaximumLogSize - Specifies the maximum size of the Audit Log in
+// kilobytes.
+//
+// AuditRetentionPeriod - Indicates the length of time that Audit
+// Records are to be retained. Audit Records are discardable
+// if their timestamp predates the current time minus the
+// retention period.
+//
+// AuditLogFullShutdownInProgress - Indicates whether or not a system
+// shutdown is being initiated due to the security Audit Log becoming
+// full. This condition will only occur if the system is configured
+// to shutdown when the log becomes full.
+//
+// TRUE indicates that a shutdown is in progress
+// FALSE indicates that a shutdown is not in progress.
+//
+// Once a shutdown has been initiated, this flag will be set to
+// TRUE. If an administrator is able to currect the situation
+// before the shutdown becomes irreversible, then this flag will
+// be reset to false.
+//
+// This field is ignored for set operations.
+//
+// TimeToShutdown - If the AuditLogFullShutdownInProgress flag is set,
+// then this field contains the time left before the shutdown
+// becomes irreversible.
+//
+// This field is ignored for set operations.
+//
+
+
+//
+// The following data type corresponds to the PolicyAuditEventsInformation
+// information class. It is used to represent information relating to
+// the audit requirements.
+//
+
+typedef struct _POLICY_AUDIT_EVENTS_INFO {
+
+ BOOLEAN AuditingMode;
+ PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
+ ULONG MaximumAuditEventCount;
+
+} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
+
+// where the members have the following usage:
+//
+// AuditingMode - A Boolean variable specifying the Auditing Mode value.
+// This value is interpreted as follows:
+//
+// TRUE - Auditing is to be enabled (set operations) or is enabled
+// (query operations). Audit Records will be generated according
+// to the Event Auditing Options in effect (see the
+// EventAuditingOptions field.
+//
+// FALSE - Auditing is to be disabled (set operations) or is
+// disabled (query operations). No Audit Records will be
+// generated. Note that for set operations the Event Auditing
+// Options in effect will still be updated as specified by the
+// EventAuditingOptions field whether Auditing is enabled or
+// disabled.
+//
+// EventAuditingOptions - Pointer to an array of Auditing Options
+// indexed by Audit Event Type.
+//
+// MaximumAuditEventCount - Specifiesa count of the number of Audit
+// Event Types specified by the EventAuditingOptions parameter. If
+// this count is less than the number of Audit Event Types supported
+// by the system, the Auditing Options for Event Types with IDs
+// higher than (MaximumAuditEventCount + 1) are left unchanged.
+//
+
+
+//
+// The following structure corresponds to the PolicyAccountDomainInformation
+// information class.
+//
+
+typedef struct _POLICY_ACCOUNT_DOMAIN_INFO {
+
+ LSA_UNICODE_STRING DomainName;
+ PSID DomainSid;
+
+} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
+
+// where the members have the following usage:
+//
+// DomainName - Is the name of the domain
+//
+// DomainSid - Is the Sid of the domain
+//
+
+
+//
+// The following structure corresponds to the PolicyPrimaryDomainInformation
+// information class.
+//
+
+typedef struct _POLICY_PRIMARY_DOMAIN_INFO {
+
+ LSA_UNICODE_STRING Name;
+ PSID Sid;
+
+} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
+
+// where the members have the following usage:
+//
+// Name - Is the name of the domain
+//
+// Sid - Is the Sid of the domain
+//
+
+
+//
+// The following structure corresponds to the PolicyPdAccountInformation
+// information class. This structure may be used in Query operations
+// only.
+//
+
+typedef struct _POLICY_PD_ACCOUNT_INFO {
+
+ LSA_UNICODE_STRING Name;
+
+} POLICY_PD_ACCOUNT_INFO, *PPOLICY_PD_ACCOUNT_INFO;
+
+// where the members have the following usage:
+//
+// Name - Is the name of an account in the domain that should be used
+// for authentication and name/ID lookup requests.
+//
+
+
+//
+// The following structure corresponds to the PolicyLsaServerRoleInformation
+// information class.
+//
+
+typedef struct _POLICY_LSA_SERVER_ROLE_INFO {
+
+ POLICY_LSA_SERVER_ROLE LsaServerRole;
+
+} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO;
+
+// where the fields have the following usage:
+//
+// TBS
+//
+
+
+//
+// The following structure corresponds to the PolicyReplicaSourceInformation
+// information class.
+//
+
+typedef struct _POLICY_REPLICA_SOURCE_INFO {
+
+ LSA_UNICODE_STRING ReplicaSource;
+ LSA_UNICODE_STRING ReplicaAccountName;
+
+} POLICY_REPLICA_SOURCE_INFO, *PPOLICY_REPLICA_SOURCE_INFO;
+
+
+//
+// The following structure corresponds to the PolicyDefaultQuotaInformation
+// information class.
+//
+
+typedef struct _POLICY_DEFAULT_QUOTA_INFO {
+
+ QUOTA_LIMITS QuotaLimits;
+
+} POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO;
+
+
+//
+// The following structure corresponds to the PolicyModificationInformation
+// information class.
+//
+
+typedef struct _POLICY_MODIFICATION_INFO {
+
+ LARGE_INTEGER ModifiedId;
+ LARGE_INTEGER DatabaseCreationTime;
+
+} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO;
+
+// where the members have the following usage:
+//
+// ModifiedId - Is a 64-bit unsigned integer that is incremented each
+// time anything in the LSA database is modified. This value is
+// only modified on Primary Domain Controllers.
+//
+// DatabaseCreationTime - Is the date/time that the LSA Database was
+// created. On Backup Domain Controllers, this value is replicated
+// from the Primary Domain Controller.
+//
+
+//
+// The following structure type corresponds to the PolicyAuditFullSetInformation
+// Information Class.
+//
+
+typedef struct _POLICY_AUDIT_FULL_SET_INFO {
+
+ BOOLEAN ShutDownOnFull;
+
+} POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO;
+
+//
+// The following structure type corresponds to the PolicyAuditFullQueryInformation
+// Information Class.
+//
+
+typedef struct _POLICY_AUDIT_FULL_QUERY_INFO {
+
+ BOOLEAN ShutDownOnFull;
+ BOOLEAN LogIsFull;
+
+} POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO;
+
+
+//
+// LSA RPC Context Handle (Opaque form). Note that a Context Handle is
+// always a pointer type unlike regular handles.
+//
+
+typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
+
+
+//
+// Trusted Domain Object specific data types
+//
+
+//
+// This data type defines the following information classes that may be
+// queried or set.
+//
+
+typedef enum _TRUSTED_INFORMATION_CLASS {
+
+ TrustedDomainNameInformation = 1,
+ TrustedControllersInformation,
+ TrustedPosixOffsetInformation,
+ TrustedPasswordInformation
+
+} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
+
+//
+// The following data type corresponds to the TrustedDomainNameInformation
+// information class.
+//
+
+typedef struct _TRUSTED_DOMAIN_NAME_INFO {
+
+ LSA_UNICODE_STRING Name;
+
+} TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO;
+
+// where members have the following meaning:
+//
+// Name - The name of the Trusted Domain.
+//
+
+//
+// The following data type corresponds to the TrustedControllersInformation
+// information class.
+//
+
+typedef struct _TRUSTED_CONTROLLERS_INFO {
+
+ ULONG Entries;
+ PLSA_UNICODE_STRING Names;
+
+} TRUSTED_CONTROLLERS_INFO, *PTRUSTED_CONTROLLERS_INFO;
+
+// where members have the following meaning:
+//
+// Entries - Indicate how mamy entries there are in the Names array.
+//
+// Names - Pointer to an array of LSA_UNICODE_STRING structures containing the
+// names of domain controllers of the domain. This information may not
+// be accurate and should be used only as a hint. The order of this
+// list is considered significant and will be maintained.
+//
+// By convention, the first name in this list is assumed to be the
+// Primary Domain Controller of the domain. If the Primary Domain
+// Controller is not known, the first name should be set to the NULL
+// string.
+//
+
+
+//
+// The following data type corresponds to the TrustedPosixOffsetInformation
+// information class.
+//
+
+typedef struct _TRUSTED_POSIX_OFFSET_INFO {
+
+ ULONG Offset;
+
+} TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO;
+
+// where members have the following meaning:
+//
+// Offset - Is an offset to use for the generation of Posix user and group
+// IDs from SIDs. The Posix ID corresponding to any particular SID is
+// generated by adding the RID of that SID to the Offset of the SID's
+// corresponding TrustedDomain object.
+//
+
+//
+// The following data type corresponds to the TrustedPasswordInformation
+// information class.
+//
+
+typedef struct _TRUSTED_PASSWORD_INFO {
+ LSA_UNICODE_STRING Password;
+ LSA_UNICODE_STRING OldPassword;
+} TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO;
+
+
+
+
+//
+// LSA Enumeration Context
+//
+
+typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
+
+//
+// LSA Enumeration Information
+//
+
+typedef struct _LSA_ENUMERATION_INFORMATION {
+
+ PSID Sid;
+
+} LSA_ENUMERATION_INFORMATION, *PLSA_ENUMERATION_INFORMATION;
+
+
+////////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - Miscellaneous API function prototypes //
+// //
+////////////////////////////////////////////////////////////////////////////
+
+
+NTSTATUS
+NTAPI
+LsaFreeMemory(
+ IN PVOID Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaClose(
+ IN LSA_HANDLE ObjectHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaOpenPolicy(
+ IN PLSA_UNICODE_STRING SystemName OPTIONAL,
+ IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes,
+ IN ACCESS_MASK DesiredAccess,
+ IN OUT PLSA_HANDLE PolicyHandle
+ );
+
+NTSTATUS
+NTAPI
+LsaQueryInformationPolicy(
+ IN LSA_HANDLE PolicyHandle,
+ IN POLICY_INFORMATION_CLASS InformationClass,
+ OUT PVOID *Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaSetInformationPolicy(
+ IN LSA_HANDLE PolicyHandle,
+ IN POLICY_INFORMATION_CLASS InformationClass,
+ IN PVOID Buffer
+ );
+
+
+NTSTATUS
+NTAPI
+LsaEnumerateTrustedDomains(
+ IN LSA_HANDLE PolicyHandle,
+ IN OUT PLSA_ENUMERATION_HANDLE EnumerationContext,
+ OUT PVOID *Buffer,
+ IN ULONG PreferedMaximumLength,
+ OUT PULONG CountReturned
+ );
+
+
+NTSTATUS
+NTAPI
+LsaLookupNames(
+ IN LSA_HANDLE PolicyHandle,
+ IN ULONG Count,
+ IN PLSA_UNICODE_STRING Names,
+ OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ OUT PLSA_TRANSLATED_SID *Sids
+ );
+
+NTSTATUS
+NTAPI
+LsaLookupSids(
+ IN LSA_HANDLE PolicyHandle,
+ IN ULONG Count,
+ IN PSID *Sids,
+ OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ OUT PLSA_TRANSLATED_NAME *Names
+ );
+
+
+
+#define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight")
+#define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight")
+#define SE_BATCH_LOGON_NAME TEXT("SeBatchLogonRight")
+#define SE_SERVICE_LOGON_NAME TEXT("SeServiceLogonRight")
+
+//
+// This new API returns all the accounts with a certain privilege
+//
+
+NTSTATUS
+NTAPI
+LsaEnumerateAccountsWithUserRight(
+ IN LSA_HANDLE PolicyHandle,
+ IN OPTIONAL PLSA_UNICODE_STRING UserRights,
+ OUT PVOID *EnumerationBuffer,
+ OUT PULONG CountReturned
+ );
+
+//
+// These new APIs differ by taking a SID instead of requiring the caller
+// to open the account first and passing in an account handle
+//
+
+NTSTATUS
+NTAPI
+LsaEnumerateAccountRights(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ OUT PLSA_UNICODE_STRING *UserRights,
+ OUT PULONG CountOfRights
+ );
+
+NTSTATUS
+NTAPI
+LsaAddAccountRights(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ IN PLSA_UNICODE_STRING UserRights,
+ IN ULONG CountOfRights
+ );
+
+NTSTATUS
+NTAPI
+LsaRemoveAccountRights(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ IN BOOLEAN AllRights,
+ IN PLSA_UNICODE_STRING UserRights,
+ IN ULONG CountOfRights
+ );
+
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Local Security Policy - Trusted Domain Object API function prototypes //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+NTSTATUS
+NTAPI
+LsaQueryTrustedDomainInfo(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID TrustedDomainSid,
+ IN TRUSTED_INFORMATION_CLASS InformationClass,
+ OUT PVOID *Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaSetTrustedDomainInformation(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID TrustedDomainSid,
+ IN TRUSTED_INFORMATION_CLASS InformationClass,
+ IN PVOID Buffer
+ );
+
+NTSTATUS
+NTAPI
+LsaDeleteTrustedDomain(
+ IN LSA_HANDLE PolicyHandle,
+ IN PSID TrustedDomainSid
+ );
+
+//
+// This API sets the workstation password (equivalent of setting/getting
+// the SSI_SECRET_NAME secret)
+//
+
+NTSTATUS
+NTAPI
+LsaStorePrivateData(
+ IN LSA_HANDLE PolicyHandle,
+ IN PLSA_UNICODE_STRING KeyName,
+ IN PLSA_UNICODE_STRING PrivateData
+ );
+
+NTSTATUS
+NTAPI
+LsaRetrievePrivateData(
+ IN LSA_HANDLE PolicyHandle,
+ IN PLSA_UNICODE_STRING KeyName,
+ OUT PLSA_UNICODE_STRING * PrivateData
+ );
+
+
+ULONG
+NTAPI
+LsaNtStatusToWinError(
+ NTSTATUS Status
+ );
+
+//
+// Define a symbol so we can tell if ntifs.h has been included.
+//
+
+// begin_ntifs
+#ifndef _NTLSA_IFS_
+#define _NTLSA_IFS_
+#endif
+// end_ntifs
+
+#ifndef _NTDEF_
+typedef LSA_UNICODE_STRING UNICODE_STRING, *PUNICODE_STRING;
+#endif
+
+typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE) (
+ PUNICODE_STRING UserName,
+ ULONG RelativeId,
+ PUNICODE_STRING NewPassword
+);
+
+#define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify"
+
+typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE) (
+);
+
+#define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify"
+
+
+#define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter"
+
+typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE) (
+ IN PUNICODE_STRING AccountName,
+ IN PUNICODE_STRING FullName,
+ IN PUNICODE_STRING Password,
+ IN BOOLEAN SetOperation
+ );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NTSECAPI_ */
+
diff --git a/public/sdk/inc/ntsm.h b/public/sdk/inc/ntsm.h
new file mode 100644
index 000000000..1ab8d805a
--- /dev/null
+++ b/public/sdk/inc/ntsm.h
@@ -0,0 +1,163 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntsm.h
+
+Abstract:
+
+ This module describes the data types and procedure prototypes
+ that make up the NT session manager. This includes API's
+ exported by the Session manager and related subsystems.
+
+Author:
+
+ Mark Lucovsky (markl) 21-Jun-1989
+
+Revision History:
+
+--*/
+
+#ifndef _NTSM_
+#define _NTSM_
+
+#include <nt.h>
+
+typedef PVOID PARGUMENTS;
+
+typedef PVOID PUSERPROFILE;
+
+
+//
+// Message formats used by the Session Manager SubSystem to communicate
+// with the Emulation SubSystems, via the Sb API calls exported by each
+// emulation subsystem.
+//
+
+typedef struct _SBCONNECTINFO {
+ ULONG SubsystemImageType;
+ WCHAR EmulationSubSystemPortName[120];
+} SBCONNECTINFO, *PSBCONNECTINFO;
+
+typedef enum _SBAPINUMBER {
+ SbCreateSessionApi,
+ SbTerminateSessionApi,
+ SbForeignSessionCompleteApi,
+ SbMaxApiNumber
+} SBAPINUMBER;
+
+typedef struct _SBCREATESESSION {
+ ULONG SessionId;
+ RTL_USER_PROCESS_INFORMATION ProcessInformation;
+ PUSERPROFILE UserProfile;
+ ULONG DebugSession;
+ CLIENT_ID DebugUiClientId;
+} SBCREATESESSION, *PSBCREATESESSION;
+
+typedef struct _SBTERMINATESESSION {
+ ULONG SessionId;
+ NTSTATUS TerminationStatus;
+} SBTERMINATESESSION, *PSBTERMINATESESSION;
+
+typedef struct _SBFOREIGNSESSIONCOMPLETE {
+ ULONG SessionId;
+ NTSTATUS TerminationStatus;
+} SBFOREIGNSESSIONCOMPLETE, *PSBFOREIGNSESSIONCOMPLETE;
+
+typedef struct _SBAPIMSG {
+ PORT_MESSAGE h;
+ union {
+ SBCONNECTINFO ConnectionRequest;
+ struct {
+ SBAPINUMBER ApiNumber;
+ NTSTATUS ReturnedStatus;
+ union {
+ SBCREATESESSION CreateSession;
+ SBTERMINATESESSION TerminateSession;
+ SBFOREIGNSESSIONCOMPLETE ForeignSessionComplete;
+ } u;
+ };
+ };
+} SBAPIMSG, *PSBAPIMSG;
+
+
+//
+// API's Exported by Sm
+//
+
+NTSTATUS
+NTAPI
+SmCreateForeignSession(
+ IN HANDLE SmApiPort,
+ OUT PULONG ForeignSessionId,
+ IN ULONG SourceSessionId,
+ IN PRTL_USER_PROCESS_INFORMATION ProcessInformation,
+ IN PCLIENT_ID DebugUiClientId OPTIONAL
+ );
+
+
+NTSTATUS
+NTAPI
+SmSessionComplete(
+ IN HANDLE SmApiPort,
+ IN ULONG SessionId,
+ IN NTSTATUS CompletionStatus
+ );
+
+NTSTATUS
+NTAPI
+SmTerminateForeignSession(
+ IN HANDLE SmApiPort,
+ IN ULONG ForeignSessionId,
+ IN NTSTATUS TerminationStatus
+ );
+
+NTSTATUS
+NTAPI
+SmExecPgm(
+ IN HANDLE SmApiPort,
+ IN PRTL_USER_PROCESS_INFORMATION ProcessInformation,
+ IN BOOLEAN DebugFlag
+ );
+
+NTSTATUS
+NTAPI
+SmLoadDeferedSubsystem(
+ IN HANDLE SmApiPort,
+ IN PUNICODE_STRING DeferedSubsystem
+ );
+
+NTSTATUS
+NTAPI
+SmConnectToSm(
+ IN PUNICODE_STRING SbApiPortName OPTIONAL,
+ IN HANDLE SbApiPort OPTIONAL,
+ IN ULONG SbImageType OPTIONAL,
+ OUT PHANDLE SmApiPort
+ );
+
+//
+// Emulation Subsystems must export the following APIs
+//
+
+NTSTATUS
+NTAPI
+SbCreateSession(
+ IN PSBAPIMSG SbApiMsg
+ );
+
+NTSTATUS
+NTAPI
+SbTerminateSession(
+ IN PSBAPIMSG SbApiMsg
+ );
+
+NTSTATUS
+NTAPI
+SbForeignSessionComplete(
+ IN PSBAPIMSG SbApiMsg
+ );
+
+#endif // _NTSM_
diff --git a/public/sdk/inc/ntstatus.dbg b/public/sdk/inc/ntstatus.dbg
new file mode 100644
index 000000000..50e75d67c
--- /dev/null
+++ b/public/sdk/inc/ntstatus.dbg
@@ -0,0 +1,732 @@
+//
+// This file maps message Id values in to a text string that contains
+// the symbolic name used for the message Id. Useful for debugging
+// output.
+//
+
+struct {
+ NTSTATUS MessageId;
+ char *SymbolicName;
+} ntstatusSymbolicNames[] = {
+ (NTSTATUS) STATUS_WAIT_0, "STATUS_WAIT_0",
+ (NTSTATUS) STATUS_WAIT_1, "STATUS_WAIT_1",
+ (NTSTATUS) STATUS_WAIT_2, "STATUS_WAIT_2",
+ (NTSTATUS) STATUS_WAIT_3, "STATUS_WAIT_3",
+ (NTSTATUS) STATUS_WAIT_63, "STATUS_WAIT_63",
+ (NTSTATUS) STATUS_ABANDONED_WAIT_0, "STATUS_ABANDONED_WAIT_0",
+ (NTSTATUS) STATUS_ABANDONED_WAIT_63, "STATUS_ABANDONED_WAIT_63",
+ (NTSTATUS) STATUS_USER_APC, "STATUS_USER_APC",
+ (NTSTATUS) STATUS_KERNEL_APC, "STATUS_KERNEL_APC",
+ (NTSTATUS) STATUS_ALERTED, "STATUS_ALERTED",
+ (NTSTATUS) STATUS_TIMEOUT, "STATUS_TIMEOUT",
+ (NTSTATUS) STATUS_PENDING, "STATUS_PENDING",
+ (NTSTATUS) STATUS_REPARSE, "STATUS_REPARSE",
+ (NTSTATUS) STATUS_MORE_ENTRIES, "STATUS_MORE_ENTRIES",
+ (NTSTATUS) STATUS_NOT_ALL_ASSIGNED, "STATUS_NOT_ALL_ASSIGNED",
+ (NTSTATUS) STATUS_SOME_NOT_MAPPED, "STATUS_SOME_NOT_MAPPED",
+ (NTSTATUS) STATUS_OPLOCK_BREAK_IN_PROGRESS, "STATUS_OPLOCK_BREAK_IN_PROGRESS",
+ (NTSTATUS) STATUS_VOLUME_MOUNTED, "STATUS_VOLUME_MOUNTED",
+ (NTSTATUS) STATUS_RXACT_COMMITTED, "STATUS_RXACT_COMMITTED",
+ (NTSTATUS) STATUS_NOTIFY_CLEANUP, "STATUS_NOTIFY_CLEANUP",
+ (NTSTATUS) STATUS_NOTIFY_ENUM_DIR, "STATUS_NOTIFY_ENUM_DIR",
+ (NTSTATUS) STATUS_NO_QUOTAS_FOR_ACCOUNT, "STATUS_NO_QUOTAS_FOR_ACCOUNT",
+ (NTSTATUS) STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED, "STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED",
+ (NTSTATUS) STATUS_PAGE_FAULT_TRANSITION, "STATUS_PAGE_FAULT_TRANSITION",
+ (NTSTATUS) STATUS_PAGE_FAULT_DEMAND_ZERO, "STATUS_PAGE_FAULT_DEMAND_ZERO",
+ (NTSTATUS) STATUS_PAGE_FAULT_COPY_ON_WRITE, "STATUS_PAGE_FAULT_COPY_ON_WRITE",
+ (NTSTATUS) STATUS_PAGE_FAULT_GUARD_PAGE, "STATUS_PAGE_FAULT_GUARD_PAGE",
+ (NTSTATUS) STATUS_PAGE_FAULT_PAGING_FILE, "STATUS_PAGE_FAULT_PAGING_FILE",
+ (NTSTATUS) STATUS_CACHE_PAGE_LOCKED, "STATUS_CACHE_PAGE_LOCKED",
+ (NTSTATUS) STATUS_CRASH_DUMP, "STATUS_CRASH_DUMP",
+ (NTSTATUS) STATUS_BUFFER_ALL_ZEROS, "STATUS_BUFFER_ALL_ZEROS",
+ (NTSTATUS) STATUS_REPARSE_OBJECT, "STATUS_REPARSE_OBJECT",
+ (NTSTATUS) STATUS_OBJECT_NAME_EXISTS, "STATUS_OBJECT_NAME_EXISTS",
+ (NTSTATUS) STATUS_THREAD_WAS_SUSPENDED, "STATUS_THREAD_WAS_SUSPENDED",
+ (NTSTATUS) STATUS_WORKING_SET_LIMIT_RANGE, "STATUS_WORKING_SET_LIMIT_RANGE",
+ (NTSTATUS) STATUS_IMAGE_NOT_AT_BASE, "STATUS_IMAGE_NOT_AT_BASE",
+ (NTSTATUS) STATUS_RXACT_STATE_CREATED, "STATUS_RXACT_STATE_CREATED",
+ (NTSTATUS) STATUS_SEGMENT_NOTIFICATION, "STATUS_SEGMENT_NOTIFICATION",
+ (NTSTATUS) STATUS_LOCAL_USER_SESSION_KEY, "STATUS_LOCAL_USER_SESSION_KEY",
+ (NTSTATUS) STATUS_BAD_CURRENT_DIRECTORY, "STATUS_BAD_CURRENT_DIRECTORY",
+ (NTSTATUS) STATUS_SERIAL_MORE_WRITES, "STATUS_SERIAL_MORE_WRITES",
+ (NTSTATUS) STATUS_REGISTRY_RECOVERED, "STATUS_REGISTRY_RECOVERED",
+ (NTSTATUS) STATUS_FT_READ_RECOVERY_FROM_BACKUP, "STATUS_FT_READ_RECOVERY_FROM_BACKUP",
+ (NTSTATUS) STATUS_FT_WRITE_RECOVERY, "STATUS_FT_WRITE_RECOVERY",
+ (NTSTATUS) STATUS_SERIAL_COUNTER_TIMEOUT, "STATUS_SERIAL_COUNTER_TIMEOUT",
+ (NTSTATUS) STATUS_NULL_LM_PASSWORD, "STATUS_NULL_LM_PASSWORD",
+ (NTSTATUS) STATUS_IMAGE_MACHINE_TYPE_MISMATCH, "STATUS_IMAGE_MACHINE_TYPE_MISMATCH",
+ (NTSTATUS) STATUS_RECEIVE_PARTIAL, "STATUS_RECEIVE_PARTIAL",
+ (NTSTATUS) STATUS_RECEIVE_EXPEDITED, "STATUS_RECEIVE_EXPEDITED",
+ (NTSTATUS) STATUS_RECEIVE_PARTIAL_EXPEDITED, "STATUS_RECEIVE_PARTIAL_EXPEDITED",
+ (NTSTATUS) STATUS_EVENT_DONE, "STATUS_EVENT_DONE",
+ (NTSTATUS) STATUS_EVENT_PENDING, "STATUS_EVENT_PENDING",
+ (NTSTATUS) STATUS_CHECKING_FILE_SYSTEM, "STATUS_CHECKING_FILE_SYSTEM",
+ (NTSTATUS) STATUS_FATAL_APP_EXIT, "STATUS_FATAL_APP_EXIT",
+ (NTSTATUS) STATUS_PREDEFINED_HANDLE, "STATUS_PREDEFINED_HANDLE",
+ (NTSTATUS) STATUS_WAS_UNLOCKED, "STATUS_WAS_UNLOCKED",
+ (NTSTATUS) STATUS_SERVICE_NOTIFICATION, "STATUS_SERVICE_NOTIFICATION",
+ (NTSTATUS) STATUS_WAS_LOCKED, "STATUS_WAS_LOCKED",
+ (NTSTATUS) STATUS_LOG_HARD_ERROR, "STATUS_LOG_HARD_ERROR",
+ (NTSTATUS) STATUS_ALREADY_WIN32, "STATUS_ALREADY_WIN32",
+ (NTSTATUS) STATUS_WX86_UNSIMULATE, "STATUS_WX86_UNSIMULATE",
+ (NTSTATUS) STATUS_WX86_CONTINUE, "STATUS_WX86_CONTINUE",
+ (NTSTATUS) STATUS_WX86_SINGLE_STEP, "STATUS_WX86_SINGLE_STEP",
+ (NTSTATUS) STATUS_WX86_BREAKPOINT, "STATUS_WX86_BREAKPOINT",
+ (NTSTATUS) STATUS_WX86_EXCEPTION_CONTINUE, "STATUS_WX86_EXCEPTION_CONTINUE",
+ (NTSTATUS) STATUS_WX86_EXCEPTION_LASTCHANCE, "STATUS_WX86_EXCEPTION_LASTCHANCE",
+ (NTSTATUS) STATUS_WX86_EXCEPTION_CHAIN, "STATUS_WX86_EXCEPTION_CHAIN",
+ (NTSTATUS) STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE, "STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE",
+ (NTSTATUS) STATUS_NO_YIELD_PERFORMED, "STATUS_NO_YIELD_PERFORMED",
+ (NTSTATUS) STATUS_TIMER_RESUME_IGNORED, "STATUS_TIMER_RESUME_IGNORED",
+ (NTSTATUS) STATUS_GUARD_PAGE_VIOLATION, "STATUS_GUARD_PAGE_VIOLATION",
+ (NTSTATUS) STATUS_DATATYPE_MISALIGNMENT, "STATUS_DATATYPE_MISALIGNMENT",
+ (NTSTATUS) STATUS_BREAKPOINT, "STATUS_BREAKPOINT",
+ (NTSTATUS) STATUS_SINGLE_STEP, "STATUS_SINGLE_STEP",
+ (NTSTATUS) STATUS_BUFFER_OVERFLOW, "STATUS_BUFFER_OVERFLOW",
+ (NTSTATUS) STATUS_NO_MORE_FILES, "STATUS_NO_MORE_FILES",
+ (NTSTATUS) STATUS_WAKE_SYSTEM_DEBUGGER, "STATUS_WAKE_SYSTEM_DEBUGGER",
+ (NTSTATUS) STATUS_HANDLES_CLOSED, "STATUS_HANDLES_CLOSED",
+ (NTSTATUS) STATUS_NO_INHERITANCE, "STATUS_NO_INHERITANCE",
+ (NTSTATUS) STATUS_GUID_SUBSTITUTION_MADE, "STATUS_GUID_SUBSTITUTION_MADE",
+ (NTSTATUS) STATUS_PARTIAL_COPY, "STATUS_PARTIAL_COPY",
+ (NTSTATUS) STATUS_DEVICE_PAPER_EMPTY, "STATUS_DEVICE_PAPER_EMPTY",
+ (NTSTATUS) STATUS_DEVICE_POWERED_OFF, "STATUS_DEVICE_POWERED_OFF",
+ (NTSTATUS) STATUS_DEVICE_OFF_LINE, "STATUS_DEVICE_OFF_LINE",
+ (NTSTATUS) STATUS_DEVICE_BUSY, "STATUS_DEVICE_BUSY",
+ (NTSTATUS) STATUS_NO_MORE_EAS, "STATUS_NO_MORE_EAS",
+ (NTSTATUS) STATUS_INVALID_EA_NAME, "STATUS_INVALID_EA_NAME",
+ (NTSTATUS) STATUS_EA_LIST_INCONSISTENT, "STATUS_EA_LIST_INCONSISTENT",
+ (NTSTATUS) STATUS_INVALID_EA_FLAG, "STATUS_INVALID_EA_FLAG",
+ (NTSTATUS) STATUS_VERIFY_REQUIRED, "STATUS_VERIFY_REQUIRED",
+ (NTSTATUS) STATUS_EXTRANEOUS_INFORMATION, "STATUS_EXTRANEOUS_INFORMATION",
+ (NTSTATUS) STATUS_RXACT_COMMIT_NECESSARY, "STATUS_RXACT_COMMIT_NECESSARY",
+ (NTSTATUS) STATUS_NO_MORE_ENTRIES, "STATUS_NO_MORE_ENTRIES",
+ (NTSTATUS) STATUS_FILEMARK_DETECTED, "STATUS_FILEMARK_DETECTED",
+ (NTSTATUS) STATUS_MEDIA_CHANGED, "STATUS_MEDIA_CHANGED",
+ (NTSTATUS) STATUS_BUS_RESET, "STATUS_BUS_RESET",
+ (NTSTATUS) STATUS_END_OF_MEDIA, "STATUS_END_OF_MEDIA",
+ (NTSTATUS) STATUS_BEGINNING_OF_MEDIA, "STATUS_BEGINNING_OF_MEDIA",
+ (NTSTATUS) STATUS_MEDIA_CHECK, "STATUS_MEDIA_CHECK",
+ (NTSTATUS) STATUS_SETMARK_DETECTED, "STATUS_SETMARK_DETECTED",
+ (NTSTATUS) STATUS_NO_DATA_DETECTED, "STATUS_NO_DATA_DETECTED",
+ (NTSTATUS) STATUS_REDIRECTOR_HAS_OPEN_HANDLES, "STATUS_REDIRECTOR_HAS_OPEN_HANDLES",
+ (NTSTATUS) STATUS_SERVER_HAS_OPEN_HANDLES, "STATUS_SERVER_HAS_OPEN_HANDLES",
+ (NTSTATUS) STATUS_ALREADY_DISCONNECTED, "STATUS_ALREADY_DISCONNECTED",
+ (NTSTATUS) STATUS_LONGJUMP, "STATUS_LONGJUMP",
+ (NTSTATUS) STATUS_UNSUCCESSFUL, "STATUS_UNSUCCESSFUL",
+ (NTSTATUS) STATUS_NOT_IMPLEMENTED, "STATUS_NOT_IMPLEMENTED",
+ (NTSTATUS) STATUS_INVALID_INFO_CLASS, "STATUS_INVALID_INFO_CLASS",
+ (NTSTATUS) STATUS_INFO_LENGTH_MISMATCH, "STATUS_INFO_LENGTH_MISMATCH",
+ (NTSTATUS) STATUS_ACCESS_VIOLATION, "STATUS_ACCESS_VIOLATION",
+ (NTSTATUS) STATUS_IN_PAGE_ERROR, "STATUS_IN_PAGE_ERROR",
+ (NTSTATUS) STATUS_PAGEFILE_QUOTA, "STATUS_PAGEFILE_QUOTA",
+ (NTSTATUS) STATUS_INVALID_HANDLE, "STATUS_INVALID_HANDLE",
+ (NTSTATUS) STATUS_BAD_INITIAL_STACK, "STATUS_BAD_INITIAL_STACK",
+ (NTSTATUS) STATUS_BAD_INITIAL_PC, "STATUS_BAD_INITIAL_PC",
+ (NTSTATUS) STATUS_INVALID_CID, "STATUS_INVALID_CID",
+ (NTSTATUS) STATUS_TIMER_NOT_CANCELED, "STATUS_TIMER_NOT_CANCELED",
+ (NTSTATUS) STATUS_INVALID_PARAMETER, "STATUS_INVALID_PARAMETER",
+ (NTSTATUS) STATUS_NO_SUCH_DEVICE, "STATUS_NO_SUCH_DEVICE",
+ (NTSTATUS) STATUS_NO_SUCH_FILE, "STATUS_NO_SUCH_FILE",
+ (NTSTATUS) STATUS_INVALID_DEVICE_REQUEST, "STATUS_INVALID_DEVICE_REQUEST",
+ (NTSTATUS) STATUS_END_OF_FILE, "STATUS_END_OF_FILE",
+ (NTSTATUS) STATUS_WRONG_VOLUME, "STATUS_WRONG_VOLUME",
+ (NTSTATUS) STATUS_NO_MEDIA_IN_DEVICE, "STATUS_NO_MEDIA_IN_DEVICE",
+ (NTSTATUS) STATUS_UNRECOGNIZED_MEDIA, "STATUS_UNRECOGNIZED_MEDIA",
+ (NTSTATUS) STATUS_NONEXISTENT_SECTOR, "STATUS_NONEXISTENT_SECTOR",
+ (NTSTATUS) STATUS_MORE_PROCESSING_REQUIRED, "STATUS_MORE_PROCESSING_REQUIRED",
+ (NTSTATUS) STATUS_NO_MEMORY, "STATUS_NO_MEMORY",
+ (NTSTATUS) STATUS_CONFLICTING_ADDRESSES, "STATUS_CONFLICTING_ADDRESSES",
+ (NTSTATUS) STATUS_NOT_MAPPED_VIEW, "STATUS_NOT_MAPPED_VIEW",
+ (NTSTATUS) STATUS_UNABLE_TO_FREE_VM, "STATUS_UNABLE_TO_FREE_VM",
+ (NTSTATUS) STATUS_UNABLE_TO_DELETE_SECTION, "STATUS_UNABLE_TO_DELETE_SECTION",
+ (NTSTATUS) STATUS_INVALID_SYSTEM_SERVICE, "STATUS_INVALID_SYSTEM_SERVICE",
+ (NTSTATUS) STATUS_ILLEGAL_INSTRUCTION, "STATUS_ILLEGAL_INSTRUCTION",
+ (NTSTATUS) STATUS_INVALID_LOCK_SEQUENCE, "STATUS_INVALID_LOCK_SEQUENCE",
+ (NTSTATUS) STATUS_INVALID_VIEW_SIZE, "STATUS_INVALID_VIEW_SIZE",
+ (NTSTATUS) STATUS_INVALID_FILE_FOR_SECTION, "STATUS_INVALID_FILE_FOR_SECTION",
+ (NTSTATUS) STATUS_ALREADY_COMMITTED, "STATUS_ALREADY_COMMITTED",
+ (NTSTATUS) STATUS_ACCESS_DENIED, "STATUS_ACCESS_DENIED",
+ (NTSTATUS) STATUS_BUFFER_TOO_SMALL, "STATUS_BUFFER_TOO_SMALL",
+ (NTSTATUS) STATUS_OBJECT_TYPE_MISMATCH, "STATUS_OBJECT_TYPE_MISMATCH",
+ (NTSTATUS) STATUS_NONCONTINUABLE_EXCEPTION, "STATUS_NONCONTINUABLE_EXCEPTION",
+ (NTSTATUS) STATUS_INVALID_DISPOSITION, "STATUS_INVALID_DISPOSITION",
+ (NTSTATUS) STATUS_UNWIND, "STATUS_UNWIND",
+ (NTSTATUS) STATUS_BAD_STACK, "STATUS_BAD_STACK",
+ (NTSTATUS) STATUS_INVALID_UNWIND_TARGET, "STATUS_INVALID_UNWIND_TARGET",
+ (NTSTATUS) STATUS_NOT_LOCKED, "STATUS_NOT_LOCKED",
+ (NTSTATUS) STATUS_PARITY_ERROR, "STATUS_PARITY_ERROR",
+ (NTSTATUS) STATUS_UNABLE_TO_DECOMMIT_VM, "STATUS_UNABLE_TO_DECOMMIT_VM",
+ (NTSTATUS) STATUS_NOT_COMMITTED, "STATUS_NOT_COMMITTED",
+ (NTSTATUS) STATUS_INVALID_PORT_ATTRIBUTES, "STATUS_INVALID_PORT_ATTRIBUTES",
+ (NTSTATUS) STATUS_PORT_MESSAGE_TOO_LONG, "STATUS_PORT_MESSAGE_TOO_LONG",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_MIX, "STATUS_INVALID_PARAMETER_MIX",
+ (NTSTATUS) STATUS_INVALID_QUOTA_LOWER, "STATUS_INVALID_QUOTA_LOWER",
+ (NTSTATUS) STATUS_DISK_CORRUPT_ERROR, "STATUS_DISK_CORRUPT_ERROR",
+ (NTSTATUS) STATUS_OBJECT_NAME_INVALID, "STATUS_OBJECT_NAME_INVALID",
+ (NTSTATUS) STATUS_OBJECT_NAME_NOT_FOUND, "STATUS_OBJECT_NAME_NOT_FOUND",
+ (NTSTATUS) STATUS_OBJECT_NAME_COLLISION, "STATUS_OBJECT_NAME_COLLISION",
+ (NTSTATUS) STATUS_PORT_DISCONNECTED, "STATUS_PORT_DISCONNECTED",
+ (NTSTATUS) STATUS_DEVICE_ALREADY_ATTACHED, "STATUS_DEVICE_ALREADY_ATTACHED",
+ (NTSTATUS) STATUS_OBJECT_PATH_INVALID, "STATUS_OBJECT_PATH_INVALID",
+ (NTSTATUS) STATUS_OBJECT_PATH_NOT_FOUND, "STATUS_OBJECT_PATH_NOT_FOUND",
+ (NTSTATUS) STATUS_OBJECT_PATH_SYNTAX_BAD, "STATUS_OBJECT_PATH_SYNTAX_BAD",
+ (NTSTATUS) STATUS_DATA_OVERRUN, "STATUS_DATA_OVERRUN",
+ (NTSTATUS) STATUS_DATA_LATE_ERROR, "STATUS_DATA_LATE_ERROR",
+ (NTSTATUS) STATUS_DATA_ERROR, "STATUS_DATA_ERROR",
+ (NTSTATUS) STATUS_CRC_ERROR, "STATUS_CRC_ERROR",
+ (NTSTATUS) STATUS_SECTION_TOO_BIG, "STATUS_SECTION_TOO_BIG",
+ (NTSTATUS) STATUS_PORT_CONNECTION_REFUSED, "STATUS_PORT_CONNECTION_REFUSED",
+ (NTSTATUS) STATUS_INVALID_PORT_HANDLE, "STATUS_INVALID_PORT_HANDLE",
+ (NTSTATUS) STATUS_SHARING_VIOLATION, "STATUS_SHARING_VIOLATION",
+ (NTSTATUS) STATUS_QUOTA_EXCEEDED, "STATUS_QUOTA_EXCEEDED",
+ (NTSTATUS) STATUS_INVALID_PAGE_PROTECTION, "STATUS_INVALID_PAGE_PROTECTION",
+ (NTSTATUS) STATUS_MUTANT_NOT_OWNED, "STATUS_MUTANT_NOT_OWNED",
+ (NTSTATUS) STATUS_SEMAPHORE_LIMIT_EXCEEDED, "STATUS_SEMAPHORE_LIMIT_EXCEEDED",
+ (NTSTATUS) STATUS_PORT_ALREADY_SET, "STATUS_PORT_ALREADY_SET",
+ (NTSTATUS) STATUS_SECTION_NOT_IMAGE, "STATUS_SECTION_NOT_IMAGE",
+ (NTSTATUS) STATUS_SUSPEND_COUNT_EXCEEDED, "STATUS_SUSPEND_COUNT_EXCEEDED",
+ (NTSTATUS) STATUS_THREAD_IS_TERMINATING, "STATUS_THREAD_IS_TERMINATING",
+ (NTSTATUS) STATUS_BAD_WORKING_SET_LIMIT, "STATUS_BAD_WORKING_SET_LIMIT",
+ (NTSTATUS) STATUS_INCOMPATIBLE_FILE_MAP, "STATUS_INCOMPATIBLE_FILE_MAP",
+ (NTSTATUS) STATUS_SECTION_PROTECTION, "STATUS_SECTION_PROTECTION",
+ (NTSTATUS) STATUS_EAS_NOT_SUPPORTED, "STATUS_EAS_NOT_SUPPORTED",
+ (NTSTATUS) STATUS_EA_TOO_LARGE, "STATUS_EA_TOO_LARGE",
+ (NTSTATUS) STATUS_NONEXISTENT_EA_ENTRY, "STATUS_NONEXISTENT_EA_ENTRY",
+ (NTSTATUS) STATUS_NO_EAS_ON_FILE, "STATUS_NO_EAS_ON_FILE",
+ (NTSTATUS) STATUS_EA_CORRUPT_ERROR, "STATUS_EA_CORRUPT_ERROR",
+ (NTSTATUS) STATUS_FILE_LOCK_CONFLICT, "STATUS_FILE_LOCK_CONFLICT",
+ (NTSTATUS) STATUS_LOCK_NOT_GRANTED, "STATUS_LOCK_NOT_GRANTED",
+ (NTSTATUS) STATUS_DELETE_PENDING, "STATUS_DELETE_PENDING",
+ (NTSTATUS) STATUS_CTL_FILE_NOT_SUPPORTED, "STATUS_CTL_FILE_NOT_SUPPORTED",
+ (NTSTATUS) STATUS_UNKNOWN_REVISION, "STATUS_UNKNOWN_REVISION",
+ (NTSTATUS) STATUS_REVISION_MISMATCH, "STATUS_REVISION_MISMATCH",
+ (NTSTATUS) STATUS_INVALID_OWNER, "STATUS_INVALID_OWNER",
+ (NTSTATUS) STATUS_INVALID_PRIMARY_GROUP, "STATUS_INVALID_PRIMARY_GROUP",
+ (NTSTATUS) STATUS_NO_IMPERSONATION_TOKEN, "STATUS_NO_IMPERSONATION_TOKEN",
+ (NTSTATUS) STATUS_CANT_DISABLE_MANDATORY, "STATUS_CANT_DISABLE_MANDATORY",
+ (NTSTATUS) STATUS_NO_LOGON_SERVERS, "STATUS_NO_LOGON_SERVERS",
+ (NTSTATUS) STATUS_NO_SUCH_LOGON_SESSION, "STATUS_NO_SUCH_LOGON_SESSION",
+ (NTSTATUS) STATUS_NO_SUCH_PRIVILEGE, "STATUS_NO_SUCH_PRIVILEGE",
+ (NTSTATUS) STATUS_PRIVILEGE_NOT_HELD, "STATUS_PRIVILEGE_NOT_HELD",
+ (NTSTATUS) STATUS_INVALID_ACCOUNT_NAME, "STATUS_INVALID_ACCOUNT_NAME",
+ (NTSTATUS) STATUS_USER_EXISTS, "STATUS_USER_EXISTS",
+ (NTSTATUS) STATUS_NO_SUCH_USER, "STATUS_NO_SUCH_USER",
+ (NTSTATUS) STATUS_GROUP_EXISTS, "STATUS_GROUP_EXISTS",
+ (NTSTATUS) STATUS_NO_SUCH_GROUP, "STATUS_NO_SUCH_GROUP",
+ (NTSTATUS) STATUS_MEMBER_IN_GROUP, "STATUS_MEMBER_IN_GROUP",
+ (NTSTATUS) STATUS_MEMBER_NOT_IN_GROUP, "STATUS_MEMBER_NOT_IN_GROUP",
+ (NTSTATUS) STATUS_LAST_ADMIN, "STATUS_LAST_ADMIN",
+ (NTSTATUS) STATUS_WRONG_PASSWORD, "STATUS_WRONG_PASSWORD",
+ (NTSTATUS) STATUS_ILL_FORMED_PASSWORD, "STATUS_ILL_FORMED_PASSWORD",
+ (NTSTATUS) STATUS_PASSWORD_RESTRICTION, "STATUS_PASSWORD_RESTRICTION",
+ (NTSTATUS) STATUS_LOGON_FAILURE, "STATUS_LOGON_FAILURE",
+ (NTSTATUS) STATUS_ACCOUNT_RESTRICTION, "STATUS_ACCOUNT_RESTRICTION",
+ (NTSTATUS) STATUS_INVALID_LOGON_HOURS, "STATUS_INVALID_LOGON_HOURS",
+ (NTSTATUS) STATUS_INVALID_WORKSTATION, "STATUS_INVALID_WORKSTATION",
+ (NTSTATUS) STATUS_PASSWORD_EXPIRED, "STATUS_PASSWORD_EXPIRED",
+ (NTSTATUS) STATUS_ACCOUNT_DISABLED, "STATUS_ACCOUNT_DISABLED",
+ (NTSTATUS) STATUS_NONE_MAPPED, "STATUS_NONE_MAPPED",
+ (NTSTATUS) STATUS_TOO_MANY_LUIDS_REQUESTED, "STATUS_TOO_MANY_LUIDS_REQUESTED",
+ (NTSTATUS) STATUS_LUIDS_EXHAUSTED, "STATUS_LUIDS_EXHAUSTED",
+ (NTSTATUS) STATUS_INVALID_SUB_AUTHORITY, "STATUS_INVALID_SUB_AUTHORITY",
+ (NTSTATUS) STATUS_INVALID_ACL, "STATUS_INVALID_ACL",
+ (NTSTATUS) STATUS_INVALID_SID, "STATUS_INVALID_SID",
+ (NTSTATUS) STATUS_INVALID_SECURITY_DESCR, "STATUS_INVALID_SECURITY_DESCR",
+ (NTSTATUS) STATUS_PROCEDURE_NOT_FOUND, "STATUS_PROCEDURE_NOT_FOUND",
+ (NTSTATUS) STATUS_INVALID_IMAGE_FORMAT, "STATUS_INVALID_IMAGE_FORMAT",
+ (NTSTATUS) STATUS_NO_TOKEN, "STATUS_NO_TOKEN",
+ (NTSTATUS) STATUS_BAD_INHERITANCE_ACL, "STATUS_BAD_INHERITANCE_ACL",
+ (NTSTATUS) STATUS_RANGE_NOT_LOCKED, "STATUS_RANGE_NOT_LOCKED",
+ (NTSTATUS) STATUS_DISK_FULL, "STATUS_DISK_FULL",
+ (NTSTATUS) STATUS_SERVER_DISABLED, "STATUS_SERVER_DISABLED",
+ (NTSTATUS) STATUS_SERVER_NOT_DISABLED, "STATUS_SERVER_NOT_DISABLED",
+ (NTSTATUS) STATUS_TOO_MANY_GUIDS_REQUESTED, "STATUS_TOO_MANY_GUIDS_REQUESTED",
+ (NTSTATUS) STATUS_GUIDS_EXHAUSTED, "STATUS_GUIDS_EXHAUSTED",
+ (NTSTATUS) STATUS_INVALID_ID_AUTHORITY, "STATUS_INVALID_ID_AUTHORITY",
+ (NTSTATUS) STATUS_AGENTS_EXHAUSTED, "STATUS_AGENTS_EXHAUSTED",
+ (NTSTATUS) STATUS_INVALID_VOLUME_LABEL, "STATUS_INVALID_VOLUME_LABEL",
+ (NTSTATUS) STATUS_SECTION_NOT_EXTENDED, "STATUS_SECTION_NOT_EXTENDED",
+ (NTSTATUS) STATUS_NOT_MAPPED_DATA, "STATUS_NOT_MAPPED_DATA",
+ (NTSTATUS) STATUS_RESOURCE_DATA_NOT_FOUND, "STATUS_RESOURCE_DATA_NOT_FOUND",
+ (NTSTATUS) STATUS_RESOURCE_TYPE_NOT_FOUND, "STATUS_RESOURCE_TYPE_NOT_FOUND",
+ (NTSTATUS) STATUS_RESOURCE_NAME_NOT_FOUND, "STATUS_RESOURCE_NAME_NOT_FOUND",
+ (NTSTATUS) STATUS_ARRAY_BOUNDS_EXCEEDED, "STATUS_ARRAY_BOUNDS_EXCEEDED",
+ (NTSTATUS) STATUS_FLOAT_DENORMAL_OPERAND, "STATUS_FLOAT_DENORMAL_OPERAND",
+ (NTSTATUS) STATUS_FLOAT_DIVIDE_BY_ZERO, "STATUS_FLOAT_DIVIDE_BY_ZERO",
+ (NTSTATUS) STATUS_FLOAT_INEXACT_RESULT, "STATUS_FLOAT_INEXACT_RESULT",
+ (NTSTATUS) STATUS_FLOAT_INVALID_OPERATION, "STATUS_FLOAT_INVALID_OPERATION",
+ (NTSTATUS) STATUS_FLOAT_OVERFLOW, "STATUS_FLOAT_OVERFLOW",
+ (NTSTATUS) STATUS_FLOAT_STACK_CHECK, "STATUS_FLOAT_STACK_CHECK",
+ (NTSTATUS) STATUS_FLOAT_UNDERFLOW, "STATUS_FLOAT_UNDERFLOW",
+ (NTSTATUS) STATUS_INTEGER_DIVIDE_BY_ZERO, "STATUS_INTEGER_DIVIDE_BY_ZERO",
+ (NTSTATUS) STATUS_INTEGER_OVERFLOW, "STATUS_INTEGER_OVERFLOW",
+ (NTSTATUS) STATUS_PRIVILEGED_INSTRUCTION, "STATUS_PRIVILEGED_INSTRUCTION",
+ (NTSTATUS) STATUS_TOO_MANY_PAGING_FILES, "STATUS_TOO_MANY_PAGING_FILES",
+ (NTSTATUS) STATUS_FILE_INVALID, "STATUS_FILE_INVALID",
+ (NTSTATUS) STATUS_ALLOTTED_SPACE_EXCEEDED, "STATUS_ALLOTTED_SPACE_EXCEEDED",
+ (NTSTATUS) STATUS_INSUFFICIENT_RESOURCES, "STATUS_INSUFFICIENT_RESOURCES",
+ (NTSTATUS) STATUS_DFS_EXIT_PATH_FOUND, "STATUS_DFS_EXIT_PATH_FOUND",
+ (NTSTATUS) STATUS_DEVICE_DATA_ERROR, "STATUS_DEVICE_DATA_ERROR",
+ (NTSTATUS) STATUS_DEVICE_NOT_CONNECTED, "STATUS_DEVICE_NOT_CONNECTED",
+ (NTSTATUS) STATUS_DEVICE_POWER_FAILURE, "STATUS_DEVICE_POWER_FAILURE",
+ (NTSTATUS) STATUS_FREE_VM_NOT_AT_BASE, "STATUS_FREE_VM_NOT_AT_BASE",
+ (NTSTATUS) STATUS_MEMORY_NOT_ALLOCATED, "STATUS_MEMORY_NOT_ALLOCATED",
+ (NTSTATUS) STATUS_WORKING_SET_QUOTA, "STATUS_WORKING_SET_QUOTA",
+ (NTSTATUS) STATUS_MEDIA_WRITE_PROTECTED, "STATUS_MEDIA_WRITE_PROTECTED",
+ (NTSTATUS) STATUS_DEVICE_NOT_READY, "STATUS_DEVICE_NOT_READY",
+ (NTSTATUS) STATUS_INVALID_GROUP_ATTRIBUTES, "STATUS_INVALID_GROUP_ATTRIBUTES",
+ (NTSTATUS) STATUS_BAD_IMPERSONATION_LEVEL, "STATUS_BAD_IMPERSONATION_LEVEL",
+ (NTSTATUS) STATUS_CANT_OPEN_ANONYMOUS, "STATUS_CANT_OPEN_ANONYMOUS",
+ (NTSTATUS) STATUS_BAD_VALIDATION_CLASS, "STATUS_BAD_VALIDATION_CLASS",
+ (NTSTATUS) STATUS_BAD_TOKEN_TYPE, "STATUS_BAD_TOKEN_TYPE",
+ (NTSTATUS) STATUS_BAD_MASTER_BOOT_RECORD, "STATUS_BAD_MASTER_BOOT_RECORD",
+ (NTSTATUS) STATUS_INSTRUCTION_MISALIGNMENT, "STATUS_INSTRUCTION_MISALIGNMENT",
+ (NTSTATUS) STATUS_INSTANCE_NOT_AVAILABLE, "STATUS_INSTANCE_NOT_AVAILABLE",
+ (NTSTATUS) STATUS_PIPE_NOT_AVAILABLE, "STATUS_PIPE_NOT_AVAILABLE",
+ (NTSTATUS) STATUS_INVALID_PIPE_STATE, "STATUS_INVALID_PIPE_STATE",
+ (NTSTATUS) STATUS_PIPE_BUSY, "STATUS_PIPE_BUSY",
+ (NTSTATUS) STATUS_ILLEGAL_FUNCTION, "STATUS_ILLEGAL_FUNCTION",
+ (NTSTATUS) STATUS_PIPE_DISCONNECTED, "STATUS_PIPE_DISCONNECTED",
+ (NTSTATUS) STATUS_PIPE_CLOSING, "STATUS_PIPE_CLOSING",
+ (NTSTATUS) STATUS_PIPE_CONNECTED, "STATUS_PIPE_CONNECTED",
+ (NTSTATUS) STATUS_PIPE_LISTENING, "STATUS_PIPE_LISTENING",
+ (NTSTATUS) STATUS_INVALID_READ_MODE, "STATUS_INVALID_READ_MODE",
+ (NTSTATUS) STATUS_IO_TIMEOUT, "STATUS_IO_TIMEOUT",
+ (NTSTATUS) STATUS_FILE_FORCED_CLOSED, "STATUS_FILE_FORCED_CLOSED",
+ (NTSTATUS) STATUS_PROFILING_NOT_STARTED, "STATUS_PROFILING_NOT_STARTED",
+ (NTSTATUS) STATUS_PROFILING_NOT_STOPPED, "STATUS_PROFILING_NOT_STOPPED",
+ (NTSTATUS) STATUS_COULD_NOT_INTERPRET, "STATUS_COULD_NOT_INTERPRET",
+ (NTSTATUS) STATUS_FILE_IS_A_DIRECTORY, "STATUS_FILE_IS_A_DIRECTORY",
+ (NTSTATUS) STATUS_NOT_SUPPORTED, "STATUS_NOT_SUPPORTED",
+ (NTSTATUS) STATUS_REMOTE_NOT_LISTENING, "STATUS_REMOTE_NOT_LISTENING",
+ (NTSTATUS) STATUS_DUPLICATE_NAME, "STATUS_DUPLICATE_NAME",
+ (NTSTATUS) STATUS_BAD_NETWORK_PATH, "STATUS_BAD_NETWORK_PATH",
+ (NTSTATUS) STATUS_NETWORK_BUSY, "STATUS_NETWORK_BUSY",
+ (NTSTATUS) STATUS_DEVICE_DOES_NOT_EXIST, "STATUS_DEVICE_DOES_NOT_EXIST",
+ (NTSTATUS) STATUS_TOO_MANY_COMMANDS, "STATUS_TOO_MANY_COMMANDS",
+ (NTSTATUS) STATUS_ADAPTER_HARDWARE_ERROR, "STATUS_ADAPTER_HARDWARE_ERROR",
+ (NTSTATUS) STATUS_INVALID_NETWORK_RESPONSE, "STATUS_INVALID_NETWORK_RESPONSE",
+ (NTSTATUS) STATUS_UNEXPECTED_NETWORK_ERROR, "STATUS_UNEXPECTED_NETWORK_ERROR",
+ (NTSTATUS) STATUS_BAD_REMOTE_ADAPTER, "STATUS_BAD_REMOTE_ADAPTER",
+ (NTSTATUS) STATUS_PRINT_QUEUE_FULL, "STATUS_PRINT_QUEUE_FULL",
+ (NTSTATUS) STATUS_NO_SPOOL_SPACE, "STATUS_NO_SPOOL_SPACE",
+ (NTSTATUS) STATUS_PRINT_CANCELLED, "STATUS_PRINT_CANCELLED",
+ (NTSTATUS) STATUS_NETWORK_NAME_DELETED, "STATUS_NETWORK_NAME_DELETED",
+ (NTSTATUS) STATUS_NETWORK_ACCESS_DENIED, "STATUS_NETWORK_ACCESS_DENIED",
+ (NTSTATUS) STATUS_BAD_DEVICE_TYPE, "STATUS_BAD_DEVICE_TYPE",
+ (NTSTATUS) STATUS_BAD_NETWORK_NAME, "STATUS_BAD_NETWORK_NAME",
+ (NTSTATUS) STATUS_TOO_MANY_NAMES, "STATUS_TOO_MANY_NAMES",
+ (NTSTATUS) STATUS_TOO_MANY_SESSIONS, "STATUS_TOO_MANY_SESSIONS",
+ (NTSTATUS) STATUS_SHARING_PAUSED, "STATUS_SHARING_PAUSED",
+ (NTSTATUS) STATUS_REQUEST_NOT_ACCEPTED, "STATUS_REQUEST_NOT_ACCEPTED",
+ (NTSTATUS) STATUS_REDIRECTOR_PAUSED, "STATUS_REDIRECTOR_PAUSED",
+ (NTSTATUS) STATUS_NET_WRITE_FAULT, "STATUS_NET_WRITE_FAULT",
+ (NTSTATUS) STATUS_PROFILING_AT_LIMIT, "STATUS_PROFILING_AT_LIMIT",
+ (NTSTATUS) STATUS_NOT_SAME_DEVICE, "STATUS_NOT_SAME_DEVICE",
+ (NTSTATUS) STATUS_FILE_RENAMED, "STATUS_FILE_RENAMED",
+ (NTSTATUS) STATUS_VIRTUAL_CIRCUIT_CLOSED, "STATUS_VIRTUAL_CIRCUIT_CLOSED",
+ (NTSTATUS) STATUS_NO_SECURITY_ON_OBJECT, "STATUS_NO_SECURITY_ON_OBJECT",
+ (NTSTATUS) STATUS_CANT_WAIT, "STATUS_CANT_WAIT",
+ (NTSTATUS) STATUS_PIPE_EMPTY, "STATUS_PIPE_EMPTY",
+ (NTSTATUS) STATUS_CANT_ACCESS_DOMAIN_INFO, "STATUS_CANT_ACCESS_DOMAIN_INFO",
+ (NTSTATUS) STATUS_CANT_TERMINATE_SELF, "STATUS_CANT_TERMINATE_SELF",
+ (NTSTATUS) STATUS_INVALID_SERVER_STATE, "STATUS_INVALID_SERVER_STATE",
+ (NTSTATUS) STATUS_INVALID_DOMAIN_STATE, "STATUS_INVALID_DOMAIN_STATE",
+ (NTSTATUS) STATUS_INVALID_DOMAIN_ROLE, "STATUS_INVALID_DOMAIN_ROLE",
+ (NTSTATUS) STATUS_NO_SUCH_DOMAIN, "STATUS_NO_SUCH_DOMAIN",
+ (NTSTATUS) STATUS_DOMAIN_EXISTS, "STATUS_DOMAIN_EXISTS",
+ (NTSTATUS) STATUS_DOMAIN_LIMIT_EXCEEDED, "STATUS_DOMAIN_LIMIT_EXCEEDED",
+ (NTSTATUS) STATUS_OPLOCK_NOT_GRANTED, "STATUS_OPLOCK_NOT_GRANTED",
+ (NTSTATUS) STATUS_INVALID_OPLOCK_PROTOCOL, "STATUS_INVALID_OPLOCK_PROTOCOL",
+ (NTSTATUS) STATUS_INTERNAL_DB_CORRUPTION, "STATUS_INTERNAL_DB_CORRUPTION",
+ (NTSTATUS) STATUS_INTERNAL_ERROR, "STATUS_INTERNAL_ERROR",
+ (NTSTATUS) STATUS_GENERIC_NOT_MAPPED, "STATUS_GENERIC_NOT_MAPPED",
+ (NTSTATUS) STATUS_BAD_DESCRIPTOR_FORMAT, "STATUS_BAD_DESCRIPTOR_FORMAT",
+ (NTSTATUS) STATUS_INVALID_USER_BUFFER, "STATUS_INVALID_USER_BUFFER",
+ (NTSTATUS) STATUS_UNEXPECTED_IO_ERROR, "STATUS_UNEXPECTED_IO_ERROR",
+ (NTSTATUS) STATUS_UNEXPECTED_MM_CREATE_ERR, "STATUS_UNEXPECTED_MM_CREATE_ERR",
+ (NTSTATUS) STATUS_UNEXPECTED_MM_MAP_ERROR, "STATUS_UNEXPECTED_MM_MAP_ERROR",
+ (NTSTATUS) STATUS_UNEXPECTED_MM_EXTEND_ERR, "STATUS_UNEXPECTED_MM_EXTEND_ERR",
+ (NTSTATUS) STATUS_NOT_LOGON_PROCESS, "STATUS_NOT_LOGON_PROCESS",
+ (NTSTATUS) STATUS_LOGON_SESSION_EXISTS, "STATUS_LOGON_SESSION_EXISTS",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_1, "STATUS_INVALID_PARAMETER_1",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_2, "STATUS_INVALID_PARAMETER_2",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_3, "STATUS_INVALID_PARAMETER_3",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_4, "STATUS_INVALID_PARAMETER_4",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_5, "STATUS_INVALID_PARAMETER_5",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_6, "STATUS_INVALID_PARAMETER_6",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_7, "STATUS_INVALID_PARAMETER_7",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_8, "STATUS_INVALID_PARAMETER_8",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_9, "STATUS_INVALID_PARAMETER_9",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_10, "STATUS_INVALID_PARAMETER_10",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_11, "STATUS_INVALID_PARAMETER_11",
+ (NTSTATUS) STATUS_INVALID_PARAMETER_12, "STATUS_INVALID_PARAMETER_12",
+ (NTSTATUS) STATUS_REDIRECTOR_NOT_STARTED, "STATUS_REDIRECTOR_NOT_STARTED",
+ (NTSTATUS) STATUS_REDIRECTOR_STARTED, "STATUS_REDIRECTOR_STARTED",
+ (NTSTATUS) STATUS_STACK_OVERFLOW, "STATUS_STACK_OVERFLOW",
+ (NTSTATUS) STATUS_NO_SUCH_PACKAGE, "STATUS_NO_SUCH_PACKAGE",
+ (NTSTATUS) STATUS_BAD_FUNCTION_TABLE, "STATUS_BAD_FUNCTION_TABLE",
+ (NTSTATUS) STATUS_VARIABLE_NOT_FOUND, "STATUS_VARIABLE_NOT_FOUND",
+ (NTSTATUS) STATUS_DIRECTORY_NOT_EMPTY, "STATUS_DIRECTORY_NOT_EMPTY",
+ (NTSTATUS) STATUS_FILE_CORRUPT_ERROR, "STATUS_FILE_CORRUPT_ERROR",
+ (NTSTATUS) STATUS_NOT_A_DIRECTORY, "STATUS_NOT_A_DIRECTORY",
+ (NTSTATUS) STATUS_BAD_LOGON_SESSION_STATE, "STATUS_BAD_LOGON_SESSION_STATE",
+ (NTSTATUS) STATUS_LOGON_SESSION_COLLISION, "STATUS_LOGON_SESSION_COLLISION",
+ (NTSTATUS) STATUS_NAME_TOO_LONG, "STATUS_NAME_TOO_LONG",
+ (NTSTATUS) STATUS_FILES_OPEN, "STATUS_FILES_OPEN",
+ (NTSTATUS) STATUS_CONNECTION_IN_USE, "STATUS_CONNECTION_IN_USE",
+ (NTSTATUS) STATUS_MESSAGE_NOT_FOUND, "STATUS_MESSAGE_NOT_FOUND",
+ (NTSTATUS) STATUS_PROCESS_IS_TERMINATING, "STATUS_PROCESS_IS_TERMINATING",
+ (NTSTATUS) STATUS_INVALID_LOGON_TYPE, "STATUS_INVALID_LOGON_TYPE",
+ (NTSTATUS) STATUS_NO_GUID_TRANSLATION, "STATUS_NO_GUID_TRANSLATION",
+ (NTSTATUS) STATUS_CANNOT_IMPERSONATE, "STATUS_CANNOT_IMPERSONATE",
+ (NTSTATUS) STATUS_IMAGE_ALREADY_LOADED, "STATUS_IMAGE_ALREADY_LOADED",
+ (NTSTATUS) STATUS_ABIOS_NOT_PRESENT, "STATUS_ABIOS_NOT_PRESENT",
+ (NTSTATUS) STATUS_ABIOS_LID_NOT_EXIST, "STATUS_ABIOS_LID_NOT_EXIST",
+ (NTSTATUS) STATUS_ABIOS_LID_ALREADY_OWNED, "STATUS_ABIOS_LID_ALREADY_OWNED",
+ (NTSTATUS) STATUS_ABIOS_NOT_LID_OWNER, "STATUS_ABIOS_NOT_LID_OWNER",
+ (NTSTATUS) STATUS_ABIOS_INVALID_COMMAND, "STATUS_ABIOS_INVALID_COMMAND",
+ (NTSTATUS) STATUS_ABIOS_INVALID_LID, "STATUS_ABIOS_INVALID_LID",
+ (NTSTATUS) STATUS_ABIOS_SELECTOR_NOT_AVAILABLE, "STATUS_ABIOS_SELECTOR_NOT_AVAILABLE",
+ (NTSTATUS) STATUS_ABIOS_INVALID_SELECTOR, "STATUS_ABIOS_INVALID_SELECTOR",
+ (NTSTATUS) STATUS_NO_LDT, "STATUS_NO_LDT",
+ (NTSTATUS) STATUS_INVALID_LDT_SIZE, "STATUS_INVALID_LDT_SIZE",
+ (NTSTATUS) STATUS_INVALID_LDT_OFFSET, "STATUS_INVALID_LDT_OFFSET",
+ (NTSTATUS) STATUS_INVALID_LDT_DESCRIPTOR, "STATUS_INVALID_LDT_DESCRIPTOR",
+ (NTSTATUS) STATUS_INVALID_IMAGE_NE_FORMAT, "STATUS_INVALID_IMAGE_NE_FORMAT",
+ (NTSTATUS) STATUS_RXACT_INVALID_STATE, "STATUS_RXACT_INVALID_STATE",
+ (NTSTATUS) STATUS_RXACT_COMMIT_FAILURE, "STATUS_RXACT_COMMIT_FAILURE",
+ (NTSTATUS) STATUS_MAPPED_FILE_SIZE_ZERO, "STATUS_MAPPED_FILE_SIZE_ZERO",
+ (NTSTATUS) STATUS_TOO_MANY_OPENED_FILES, "STATUS_TOO_MANY_OPENED_FILES",
+ (NTSTATUS) STATUS_CANCELLED, "STATUS_CANCELLED",
+ (NTSTATUS) STATUS_CANNOT_DELETE, "STATUS_CANNOT_DELETE",
+ (NTSTATUS) STATUS_INVALID_COMPUTER_NAME, "STATUS_INVALID_COMPUTER_NAME",
+ (NTSTATUS) STATUS_FILE_DELETED, "STATUS_FILE_DELETED",
+ (NTSTATUS) STATUS_SPECIAL_ACCOUNT, "STATUS_SPECIAL_ACCOUNT",
+ (NTSTATUS) STATUS_SPECIAL_GROUP, "STATUS_SPECIAL_GROUP",
+ (NTSTATUS) STATUS_SPECIAL_USER, "STATUS_SPECIAL_USER",
+ (NTSTATUS) STATUS_MEMBERS_PRIMARY_GROUP, "STATUS_MEMBERS_PRIMARY_GROUP",
+ (NTSTATUS) STATUS_FILE_CLOSED, "STATUS_FILE_CLOSED",
+ (NTSTATUS) STATUS_TOO_MANY_THREADS, "STATUS_TOO_MANY_THREADS",
+ (NTSTATUS) STATUS_THREAD_NOT_IN_PROCESS, "STATUS_THREAD_NOT_IN_PROCESS",
+ (NTSTATUS) STATUS_TOKEN_ALREADY_IN_USE, "STATUS_TOKEN_ALREADY_IN_USE",
+ (NTSTATUS) STATUS_PAGEFILE_QUOTA_EXCEEDED, "STATUS_PAGEFILE_QUOTA_EXCEEDED",
+ (NTSTATUS) STATUS_COMMITMENT_LIMIT, "STATUS_COMMITMENT_LIMIT",
+ (NTSTATUS) STATUS_INVALID_IMAGE_LE_FORMAT, "STATUS_INVALID_IMAGE_LE_FORMAT",
+ (NTSTATUS) STATUS_INVALID_IMAGE_NOT_MZ, "STATUS_INVALID_IMAGE_NOT_MZ",
+ (NTSTATUS) STATUS_INVALID_IMAGE_PROTECT, "STATUS_INVALID_IMAGE_PROTECT",
+ (NTSTATUS) STATUS_INVALID_IMAGE_WIN_16, "STATUS_INVALID_IMAGE_WIN_16",
+ (NTSTATUS) STATUS_LOGON_SERVER_CONFLICT, "STATUS_LOGON_SERVER_CONFLICT",
+ (NTSTATUS) STATUS_TIME_DIFFERENCE_AT_DC, "STATUS_TIME_DIFFERENCE_AT_DC",
+ (NTSTATUS) STATUS_SYNCHRONIZATION_REQUIRED, "STATUS_SYNCHRONIZATION_REQUIRED",
+ (NTSTATUS) STATUS_DLL_NOT_FOUND, "STATUS_DLL_NOT_FOUND",
+ (NTSTATUS) STATUS_OPEN_FAILED, "STATUS_OPEN_FAILED",
+ (NTSTATUS) STATUS_IO_PRIVILEGE_FAILED, "STATUS_IO_PRIVILEGE_FAILED",
+ (NTSTATUS) STATUS_ORDINAL_NOT_FOUND, "STATUS_ORDINAL_NOT_FOUND",
+ (NTSTATUS) STATUS_ENTRYPOINT_NOT_FOUND, "STATUS_ENTRYPOINT_NOT_FOUND",
+ (NTSTATUS) STATUS_CONTROL_C_EXIT, "STATUS_CONTROL_C_EXIT",
+ (NTSTATUS) STATUS_LOCAL_DISCONNECT, "STATUS_LOCAL_DISCONNECT",
+ (NTSTATUS) STATUS_REMOTE_DISCONNECT, "STATUS_REMOTE_DISCONNECT",
+ (NTSTATUS) STATUS_REMOTE_RESOURCES, "STATUS_REMOTE_RESOURCES",
+ (NTSTATUS) STATUS_LINK_FAILED, "STATUS_LINK_FAILED",
+ (NTSTATUS) STATUS_LINK_TIMEOUT, "STATUS_LINK_TIMEOUT",
+ (NTSTATUS) STATUS_INVALID_CONNECTION, "STATUS_INVALID_CONNECTION",
+ (NTSTATUS) STATUS_INVALID_ADDRESS, "STATUS_INVALID_ADDRESS",
+ (NTSTATUS) STATUS_DLL_INIT_FAILED, "STATUS_DLL_INIT_FAILED",
+ (NTSTATUS) STATUS_MISSING_SYSTEMFILE, "STATUS_MISSING_SYSTEMFILE",
+ (NTSTATUS) STATUS_UNHANDLED_EXCEPTION, "STATUS_UNHANDLED_EXCEPTION",
+ (NTSTATUS) STATUS_APP_INIT_FAILURE, "STATUS_APP_INIT_FAILURE",
+ (NTSTATUS) STATUS_PAGEFILE_CREATE_FAILED, "STATUS_PAGEFILE_CREATE_FAILED",
+ (NTSTATUS) STATUS_NO_PAGEFILE, "STATUS_NO_PAGEFILE",
+ (NTSTATUS) STATUS_INVALID_LEVEL, "STATUS_INVALID_LEVEL",
+ (NTSTATUS) STATUS_WRONG_PASSWORD_CORE, "STATUS_WRONG_PASSWORD_CORE",
+ (NTSTATUS) STATUS_ILLEGAL_FLOAT_CONTEXT, "STATUS_ILLEGAL_FLOAT_CONTEXT",
+ (NTSTATUS) STATUS_PIPE_BROKEN, "STATUS_PIPE_BROKEN",
+ (NTSTATUS) STATUS_REGISTRY_CORRUPT, "STATUS_REGISTRY_CORRUPT",
+ (NTSTATUS) STATUS_REGISTRY_IO_FAILED, "STATUS_REGISTRY_IO_FAILED",
+ (NTSTATUS) STATUS_NO_EVENT_PAIR, "STATUS_NO_EVENT_PAIR",
+ (NTSTATUS) STATUS_UNRECOGNIZED_VOLUME, "STATUS_UNRECOGNIZED_VOLUME",
+ (NTSTATUS) STATUS_SERIAL_NO_DEVICE_INITED, "STATUS_SERIAL_NO_DEVICE_INITED",
+ (NTSTATUS) STATUS_NO_SUCH_ALIAS, "STATUS_NO_SUCH_ALIAS",
+ (NTSTATUS) STATUS_MEMBER_NOT_IN_ALIAS, "STATUS_MEMBER_NOT_IN_ALIAS",
+ (NTSTATUS) STATUS_MEMBER_IN_ALIAS, "STATUS_MEMBER_IN_ALIAS",
+ (NTSTATUS) STATUS_ALIAS_EXISTS, "STATUS_ALIAS_EXISTS",
+ (NTSTATUS) STATUS_LOGON_NOT_GRANTED, "STATUS_LOGON_NOT_GRANTED",
+ (NTSTATUS) STATUS_TOO_MANY_SECRETS, "STATUS_TOO_MANY_SECRETS",
+ (NTSTATUS) STATUS_SECRET_TOO_LONG, "STATUS_SECRET_TOO_LONG",
+ (NTSTATUS) STATUS_INTERNAL_DB_ERROR, "STATUS_INTERNAL_DB_ERROR",
+ (NTSTATUS) STATUS_FULLSCREEN_MODE, "STATUS_FULLSCREEN_MODE",
+ (NTSTATUS) STATUS_TOO_MANY_CONTEXT_IDS, "STATUS_TOO_MANY_CONTEXT_IDS",
+ (NTSTATUS) STATUS_LOGON_TYPE_NOT_GRANTED, "STATUS_LOGON_TYPE_NOT_GRANTED",
+ (NTSTATUS) STATUS_NOT_REGISTRY_FILE, "STATUS_NOT_REGISTRY_FILE",
+ (NTSTATUS) STATUS_NT_CROSS_ENCRYPTION_REQUIRED, "STATUS_NT_CROSS_ENCRYPTION_REQUIRED",
+ (NTSTATUS) STATUS_DOMAIN_CTRLR_CONFIG_ERROR, "STATUS_DOMAIN_CTRLR_CONFIG_ERROR",
+ (NTSTATUS) STATUS_FT_MISSING_MEMBER, "STATUS_FT_MISSING_MEMBER",
+ (NTSTATUS) STATUS_ILL_FORMED_SERVICE_ENTRY, "STATUS_ILL_FORMED_SERVICE_ENTRY",
+ (NTSTATUS) STATUS_ILLEGAL_CHARACTER, "STATUS_ILLEGAL_CHARACTER",
+ (NTSTATUS) STATUS_UNMAPPABLE_CHARACTER, "STATUS_UNMAPPABLE_CHARACTER",
+ (NTSTATUS) STATUS_UNDEFINED_CHARACTER, "STATUS_UNDEFINED_CHARACTER",
+ (NTSTATUS) STATUS_FLOPPY_VOLUME, "STATUS_FLOPPY_VOLUME",
+ (NTSTATUS) STATUS_FLOPPY_ID_MARK_NOT_FOUND, "STATUS_FLOPPY_ID_MARK_NOT_FOUND",
+ (NTSTATUS) STATUS_FLOPPY_WRONG_CYLINDER, "STATUS_FLOPPY_WRONG_CYLINDER",
+ (NTSTATUS) STATUS_FLOPPY_UNKNOWN_ERROR, "STATUS_FLOPPY_UNKNOWN_ERROR",
+ (NTSTATUS) STATUS_FLOPPY_BAD_REGISTERS, "STATUS_FLOPPY_BAD_REGISTERS",
+ (NTSTATUS) STATUS_DISK_RECALIBRATE_FAILED, "STATUS_DISK_RECALIBRATE_FAILED",
+ (NTSTATUS) STATUS_DISK_OPERATION_FAILED, "STATUS_DISK_OPERATION_FAILED",
+ (NTSTATUS) STATUS_DISK_RESET_FAILED, "STATUS_DISK_RESET_FAILED",
+ (NTSTATUS) STATUS_SHARED_IRQ_BUSY, "STATUS_SHARED_IRQ_BUSY",
+ (NTSTATUS) STATUS_FT_ORPHANING, "STATUS_FT_ORPHANING",
+ (NTSTATUS) STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT, "STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT",
+ (NTSTATUS) STATUS_PARTITION_FAILURE, "STATUS_PARTITION_FAILURE",
+ (NTSTATUS) STATUS_INVALID_BLOCK_LENGTH, "STATUS_INVALID_BLOCK_LENGTH",
+ (NTSTATUS) STATUS_DEVICE_NOT_PARTITIONED, "STATUS_DEVICE_NOT_PARTITIONED",
+ (NTSTATUS) STATUS_UNABLE_TO_LOCK_MEDIA, "STATUS_UNABLE_TO_LOCK_MEDIA",
+ (NTSTATUS) STATUS_UNABLE_TO_UNLOAD_MEDIA, "STATUS_UNABLE_TO_UNLOAD_MEDIA",
+ (NTSTATUS) STATUS_EOM_OVERFLOW, "STATUS_EOM_OVERFLOW",
+ (NTSTATUS) STATUS_NO_MEDIA, "STATUS_NO_MEDIA",
+ (NTSTATUS) STATUS_NO_SUCH_MEMBER, "STATUS_NO_SUCH_MEMBER",
+ (NTSTATUS) STATUS_INVALID_MEMBER, "STATUS_INVALID_MEMBER",
+ (NTSTATUS) STATUS_KEY_DELETED, "STATUS_KEY_DELETED",
+ (NTSTATUS) STATUS_NO_LOG_SPACE, "STATUS_NO_LOG_SPACE",
+ (NTSTATUS) STATUS_TOO_MANY_SIDS, "STATUS_TOO_MANY_SIDS",
+ (NTSTATUS) STATUS_LM_CROSS_ENCRYPTION_REQUIRED, "STATUS_LM_CROSS_ENCRYPTION_REQUIRED",
+ (NTSTATUS) STATUS_KEY_HAS_CHILDREN, "STATUS_KEY_HAS_CHILDREN",
+ (NTSTATUS) STATUS_CHILD_MUST_BE_VOLATILE, "STATUS_CHILD_MUST_BE_VOLATILE",
+ (NTSTATUS) STATUS_DEVICE_CONFIGURATION_ERROR, "STATUS_DEVICE_CONFIGURATION_ERROR",
+ (NTSTATUS) STATUS_DRIVER_INTERNAL_ERROR, "STATUS_DRIVER_INTERNAL_ERROR",
+ (NTSTATUS) STATUS_INVALID_DEVICE_STATE, "STATUS_INVALID_DEVICE_STATE",
+ (NTSTATUS) STATUS_IO_DEVICE_ERROR, "STATUS_IO_DEVICE_ERROR",
+ (NTSTATUS) STATUS_DEVICE_PROTOCOL_ERROR, "STATUS_DEVICE_PROTOCOL_ERROR",
+ (NTSTATUS) STATUS_BACKUP_CONTROLLER, "STATUS_BACKUP_CONTROLLER",
+ (NTSTATUS) STATUS_LOG_FILE_FULL, "STATUS_LOG_FILE_FULL",
+ (NTSTATUS) STATUS_TOO_LATE, "STATUS_TOO_LATE",
+ (NTSTATUS) STATUS_NO_TRUST_LSA_SECRET, "STATUS_NO_TRUST_LSA_SECRET",
+ (NTSTATUS) STATUS_NO_TRUST_SAM_ACCOUNT, "STATUS_NO_TRUST_SAM_ACCOUNT",
+ (NTSTATUS) STATUS_TRUSTED_DOMAIN_FAILURE, "STATUS_TRUSTED_DOMAIN_FAILURE",
+ (NTSTATUS) STATUS_TRUSTED_RELATIONSHIP_FAILURE, "STATUS_TRUSTED_RELATIONSHIP_FAILURE",
+ (NTSTATUS) STATUS_EVENTLOG_FILE_CORRUPT, "STATUS_EVENTLOG_FILE_CORRUPT",
+ (NTSTATUS) STATUS_EVENTLOG_CANT_START, "STATUS_EVENTLOG_CANT_START",
+ (NTSTATUS) STATUS_TRUST_FAILURE, "STATUS_TRUST_FAILURE",
+ (NTSTATUS) STATUS_MUTANT_LIMIT_EXCEEDED, "STATUS_MUTANT_LIMIT_EXCEEDED",
+ (NTSTATUS) STATUS_NETLOGON_NOT_STARTED, "STATUS_NETLOGON_NOT_STARTED",
+ (NTSTATUS) STATUS_ACCOUNT_EXPIRED, "STATUS_ACCOUNT_EXPIRED",
+ (NTSTATUS) STATUS_POSSIBLE_DEADLOCK, "STATUS_POSSIBLE_DEADLOCK",
+ (NTSTATUS) STATUS_NETWORK_CREDENTIAL_CONFLICT, "STATUS_NETWORK_CREDENTIAL_CONFLICT",
+ (NTSTATUS) STATUS_REMOTE_SESSION_LIMIT, "STATUS_REMOTE_SESSION_LIMIT",
+ (NTSTATUS) STATUS_EVENTLOG_FILE_CHANGED, "STATUS_EVENTLOG_FILE_CHANGED",
+ (NTSTATUS) STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, "STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT",
+ (NTSTATUS) STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT, "STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT",
+ (NTSTATUS) STATUS_NOLOGON_SERVER_TRUST_ACCOUNT, "STATUS_NOLOGON_SERVER_TRUST_ACCOUNT",
+ (NTSTATUS) STATUS_DOMAIN_TRUST_INCONSISTENT, "STATUS_DOMAIN_TRUST_INCONSISTENT",
+ (NTSTATUS) STATUS_FS_DRIVER_REQUIRED, "STATUS_FS_DRIVER_REQUIRED",
+ (NTSTATUS) STATUS_NO_USER_SESSION_KEY, "STATUS_NO_USER_SESSION_KEY",
+ (NTSTATUS) STATUS_USER_SESSION_DELETED, "STATUS_USER_SESSION_DELETED",
+ (NTSTATUS) STATUS_RESOURCE_LANG_NOT_FOUND, "STATUS_RESOURCE_LANG_NOT_FOUND",
+ (NTSTATUS) STATUS_INSUFF_SERVER_RESOURCES, "STATUS_INSUFF_SERVER_RESOURCES",
+ (NTSTATUS) STATUS_INVALID_BUFFER_SIZE, "STATUS_INVALID_BUFFER_SIZE",
+ (NTSTATUS) STATUS_INVALID_ADDRESS_COMPONENT, "STATUS_INVALID_ADDRESS_COMPONENT",
+ (NTSTATUS) STATUS_INVALID_ADDRESS_WILDCARD, "STATUS_INVALID_ADDRESS_WILDCARD",
+ (NTSTATUS) STATUS_TOO_MANY_ADDRESSES, "STATUS_TOO_MANY_ADDRESSES",
+ (NTSTATUS) STATUS_ADDRESS_ALREADY_EXISTS, "STATUS_ADDRESS_ALREADY_EXISTS",
+ (NTSTATUS) STATUS_ADDRESS_CLOSED, "STATUS_ADDRESS_CLOSED",
+ (NTSTATUS) STATUS_CONNECTION_DISCONNECTED, "STATUS_CONNECTION_DISCONNECTED",
+ (NTSTATUS) STATUS_CONNECTION_RESET, "STATUS_CONNECTION_RESET",
+ (NTSTATUS) STATUS_TOO_MANY_NODES, "STATUS_TOO_MANY_NODES",
+ (NTSTATUS) STATUS_TRANSACTION_ABORTED, "STATUS_TRANSACTION_ABORTED",
+ (NTSTATUS) STATUS_TRANSACTION_TIMED_OUT, "STATUS_TRANSACTION_TIMED_OUT",
+ (NTSTATUS) STATUS_TRANSACTION_NO_RELEASE, "STATUS_TRANSACTION_NO_RELEASE",
+ (NTSTATUS) STATUS_TRANSACTION_NO_MATCH, "STATUS_TRANSACTION_NO_MATCH",
+ (NTSTATUS) STATUS_TRANSACTION_RESPONDED, "STATUS_TRANSACTION_RESPONDED",
+ (NTSTATUS) STATUS_TRANSACTION_INVALID_ID, "STATUS_TRANSACTION_INVALID_ID",
+ (NTSTATUS) STATUS_TRANSACTION_INVALID_TYPE, "STATUS_TRANSACTION_INVALID_TYPE",
+ (NTSTATUS) STATUS_NOT_SERVER_SESSION, "STATUS_NOT_SERVER_SESSION",
+ (NTSTATUS) STATUS_NOT_CLIENT_SESSION, "STATUS_NOT_CLIENT_SESSION",
+ (NTSTATUS) STATUS_CANNOT_LOAD_REGISTRY_FILE, "STATUS_CANNOT_LOAD_REGISTRY_FILE",
+ (NTSTATUS) STATUS_DEBUG_ATTACH_FAILED, "STATUS_DEBUG_ATTACH_FAILED",
+ (NTSTATUS) STATUS_SYSTEM_PROCESS_TERMINATED, "STATUS_SYSTEM_PROCESS_TERMINATED",
+ (NTSTATUS) STATUS_DATA_NOT_ACCEPTED, "STATUS_DATA_NOT_ACCEPTED",
+ (NTSTATUS) STATUS_NO_BROWSER_SERVERS_FOUND, "STATUS_NO_BROWSER_SERVERS_FOUND",
+ (NTSTATUS) STATUS_VDM_HARD_ERROR, "STATUS_VDM_HARD_ERROR",
+ (NTSTATUS) STATUS_DRIVER_CANCEL_TIMEOUT, "STATUS_DRIVER_CANCEL_TIMEOUT",
+ (NTSTATUS) STATUS_REPLY_MESSAGE_MISMATCH, "STATUS_REPLY_MESSAGE_MISMATCH",
+ (NTSTATUS) STATUS_MAPPED_ALIGNMENT, "STATUS_MAPPED_ALIGNMENT",
+ (NTSTATUS) STATUS_IMAGE_CHECKSUM_MISMATCH, "STATUS_IMAGE_CHECKSUM_MISMATCH",
+ (NTSTATUS) STATUS_LOST_WRITEBEHIND_DATA, "STATUS_LOST_WRITEBEHIND_DATA",
+ (NTSTATUS) STATUS_CLIENT_SERVER_PARAMETERS_INVALID, "STATUS_CLIENT_SERVER_PARAMETERS_INVALID",
+ (NTSTATUS) STATUS_PASSWORD_MUST_CHANGE, "STATUS_PASSWORD_MUST_CHANGE",
+ (NTSTATUS) STATUS_NOT_FOUND, "STATUS_NOT_FOUND",
+ (NTSTATUS) STATUS_NOT_TINY_STREAM, "STATUS_NOT_TINY_STREAM",
+ (NTSTATUS) STATUS_RECOVERY_FAILURE, "STATUS_RECOVERY_FAILURE",
+ (NTSTATUS) STATUS_STACK_OVERFLOW_READ, "STATUS_STACK_OVERFLOW_READ",
+ (NTSTATUS) STATUS_FAIL_CHECK, "STATUS_FAIL_CHECK",
+ (NTSTATUS) STATUS_DUPLICATE_OBJECTID, "STATUS_DUPLICATE_OBJECTID",
+ (NTSTATUS) STATUS_OBJECTID_EXISTS, "STATUS_OBJECTID_EXISTS",
+ (NTSTATUS) STATUS_CONVERT_TO_LARGE, "STATUS_CONVERT_TO_LARGE",
+ (NTSTATUS) STATUS_RETRY, "STATUS_RETRY",
+ (NTSTATUS) STATUS_FOUND_OUT_OF_SCOPE, "STATUS_FOUND_OUT_OF_SCOPE",
+ (NTSTATUS) STATUS_ALLOCATE_BUCKET, "STATUS_ALLOCATE_BUCKET",
+ (NTSTATUS) STATUS_PROPSET_NOT_FOUND, "STATUS_PROPSET_NOT_FOUND",
+ (NTSTATUS) STATUS_MARSHALL_OVERFLOW, "STATUS_MARSHALL_OVERFLOW",
+ (NTSTATUS) STATUS_INVALID_VARIANT, "STATUS_INVALID_VARIANT",
+ (NTSTATUS) STATUS_DOMAIN_CONTROLLER_NOT_FOUND, "STATUS_DOMAIN_CONTROLLER_NOT_FOUND",
+ (NTSTATUS) STATUS_ACCOUNT_LOCKED_OUT, "STATUS_ACCOUNT_LOCKED_OUT",
+ (NTSTATUS) STATUS_HANDLE_NOT_CLOSABLE, "STATUS_HANDLE_NOT_CLOSABLE",
+ (NTSTATUS) STATUS_CONNECTION_REFUSED, "STATUS_CONNECTION_REFUSED",
+ (NTSTATUS) STATUS_GRACEFUL_DISCONNECT, "STATUS_GRACEFUL_DISCONNECT",
+ (NTSTATUS) STATUS_ADDRESS_ALREADY_ASSOCIATED, "STATUS_ADDRESS_ALREADY_ASSOCIATED",
+ (NTSTATUS) STATUS_ADDRESS_NOT_ASSOCIATED, "STATUS_ADDRESS_NOT_ASSOCIATED",
+ (NTSTATUS) STATUS_CONNECTION_INVALID, "STATUS_CONNECTION_INVALID",
+ (NTSTATUS) STATUS_CONNECTION_ACTIVE, "STATUS_CONNECTION_ACTIVE",
+ (NTSTATUS) STATUS_NETWORK_UNREACHABLE, "STATUS_NETWORK_UNREACHABLE",
+ (NTSTATUS) STATUS_HOST_UNREACHABLE, "STATUS_HOST_UNREACHABLE",
+ (NTSTATUS) STATUS_PROTOCOL_UNREACHABLE, "STATUS_PROTOCOL_UNREACHABLE",
+ (NTSTATUS) STATUS_PORT_UNREACHABLE, "STATUS_PORT_UNREACHABLE",
+ (NTSTATUS) STATUS_REQUEST_ABORTED, "STATUS_REQUEST_ABORTED",
+ (NTSTATUS) STATUS_CONNECTION_ABORTED, "STATUS_CONNECTION_ABORTED",
+ (NTSTATUS) STATUS_BAD_COMPRESSION_BUFFER, "STATUS_BAD_COMPRESSION_BUFFER",
+ (NTSTATUS) STATUS_USER_MAPPED_FILE, "STATUS_USER_MAPPED_FILE",
+ (NTSTATUS) STATUS_AUDIT_FAILED, "STATUS_AUDIT_FAILED",
+ (NTSTATUS) STATUS_TIMER_RESOLUTION_NOT_SET, "STATUS_TIMER_RESOLUTION_NOT_SET",
+ (NTSTATUS) STATUS_CONNECTION_COUNT_LIMIT, "STATUS_CONNECTION_COUNT_LIMIT",
+ (NTSTATUS) STATUS_LOGIN_TIME_RESTRICTION, "STATUS_LOGIN_TIME_RESTRICTION",
+ (NTSTATUS) STATUS_LOGIN_WKSTA_RESTRICTION, "STATUS_LOGIN_WKSTA_RESTRICTION",
+ (NTSTATUS) STATUS_IMAGE_MP_UP_MISMATCH, "STATUS_IMAGE_MP_UP_MISMATCH",
+ (NTSTATUS) STATUS_INSUFFICIENT_LOGON_INFO, "STATUS_INSUFFICIENT_LOGON_INFO",
+ (NTSTATUS) STATUS_BAD_DLL_ENTRYPOINT, "STATUS_BAD_DLL_ENTRYPOINT",
+ (NTSTATUS) STATUS_BAD_SERVICE_ENTRYPOINT, "STATUS_BAD_SERVICE_ENTRYPOINT",
+ (NTSTATUS) STATUS_LPC_REPLY_LOST, "STATUS_LPC_REPLY_LOST",
+ (NTSTATUS) STATUS_IP_ADDRESS_CONFLICT1, "STATUS_IP_ADDRESS_CONFLICT1",
+ (NTSTATUS) STATUS_IP_ADDRESS_CONFLICT2, "STATUS_IP_ADDRESS_CONFLICT2",
+ (NTSTATUS) STATUS_REGISTRY_QUOTA_LIMIT, "STATUS_REGISTRY_QUOTA_LIMIT",
+ (NTSTATUS) STATUS_PATH_NOT_COVERED, "STATUS_PATH_NOT_COVERED",
+ (NTSTATUS) STATUS_NO_CALLBACK_ACTIVE, "STATUS_NO_CALLBACK_ACTIVE",
+ (NTSTATUS) STATUS_LICENSE_QUOTA_EXCEEDED, "STATUS_LICENSE_QUOTA_EXCEEDED",
+ (NTSTATUS) STATUS_PWD_TOO_SHORT, "STATUS_PWD_TOO_SHORT",
+ (NTSTATUS) STATUS_PWD_TOO_RECENT, "STATUS_PWD_TOO_RECENT",
+ (NTSTATUS) STATUS_PWD_HISTORY_CONFLICT, "STATUS_PWD_HISTORY_CONFLICT",
+ (NTSTATUS) STATUS_PLUGPLAY_NO_DEVICE, "STATUS_PLUGPLAY_NO_DEVICE",
+ (NTSTATUS) STATUS_UNSUPPORTED_COMPRESSION, "STATUS_UNSUPPORTED_COMPRESSION",
+ (NTSTATUS) STATUS_INVALID_HW_PROFILE, "STATUS_INVALID_HW_PROFILE",
+ (NTSTATUS) STATUS_INVALID_PLUGPLAY_DEVICE_PATH, "STATUS_INVALID_PLUGPLAY_DEVICE_PATH",
+ (NTSTATUS) STATUS_DRIVER_ORDINAL_NOT_FOUND, "STATUS_DRIVER_ORDINAL_NOT_FOUND",
+ (NTSTATUS) STATUS_DRIVER_ENTRYPOINT_NOT_FOUND, "STATUS_DRIVER_ENTRYPOINT_NOT_FOUND",
+ (NTSTATUS) STATUS_RESOURCE_NOT_OWNED, "STATUS_RESOURCE_NOT_OWNED",
+ (NTSTATUS) STATUS_TOO_MANY_LINKS, "STATUS_TOO_MANY_LINKS",
+ (NTSTATUS) STATUS_QUOTA_LIST_INCONSISTENT, "STATUS_QUOTA_LIST_INCONSISTENT",
+ (NTSTATUS) STATUS_FILE_IS_OFFLINE, "STATUS_FILE_IS_OFFLINE",
+ (NTSTATUS) STATUS_EVALUATION_EXPIRATION, "STATUS_EVALUATION_EXPIRATION",
+ (NTSTATUS) STATUS_ILLEGAL_DLL_RELOCATION, "STATUS_ILLEGAL_DLL_RELOCATION",
+ (NTSTATUS) STATUS_LICENSE_VIOLATION, "STATUS_LICENSE_VIOLATION",
+ (NTSTATUS) STATUS_DLL_INIT_FAILED_LOGOFF, "STATUS_DLL_INIT_FAILED_LOGOFF",
+ (NTSTATUS) STATUS_DRIVER_UNABLE_TO_LOAD, "STATUS_DRIVER_UNABLE_TO_LOAD",
+ (NTSTATUS) STATUS_DFS_UNAVAILABLE, "STATUS_DFS_UNAVAILABLE",
+ (NTSTATUS) STATUS_VOLUME_DISMOUNTED, "STATUS_VOLUME_DISMOUNTED",
+ (NTSTATUS) STATUS_WX86_INTERNAL_ERROR, "STATUS_WX86_INTERNAL_ERROR",
+ (NTSTATUS) STATUS_WX86_FLOAT_STACK_CHECK, "STATUS_WX86_FLOAT_STACK_CHECK",
+ (NTSTATUS) STATUS_WOW_ASSERTION, "STATUS_WOW_ASSERTION",
+ (NTSTATUS) RPC_NT_INVALID_STRING_BINDING, "RPC_NT_INVALID_STRING_BINDING",
+ (NTSTATUS) RPC_NT_WRONG_KIND_OF_BINDING, "RPC_NT_WRONG_KIND_OF_BINDING",
+ (NTSTATUS) RPC_NT_INVALID_BINDING, "RPC_NT_INVALID_BINDING",
+ (NTSTATUS) RPC_NT_PROTSEQ_NOT_SUPPORTED, "RPC_NT_PROTSEQ_NOT_SUPPORTED",
+ (NTSTATUS) RPC_NT_INVALID_RPC_PROTSEQ, "RPC_NT_INVALID_RPC_PROTSEQ",
+ (NTSTATUS) RPC_NT_INVALID_STRING_UUID, "RPC_NT_INVALID_STRING_UUID",
+ (NTSTATUS) RPC_NT_INVALID_ENDPOINT_FORMAT, "RPC_NT_INVALID_ENDPOINT_FORMAT",
+ (NTSTATUS) RPC_NT_INVALID_NET_ADDR, "RPC_NT_INVALID_NET_ADDR",
+ (NTSTATUS) RPC_NT_NO_ENDPOINT_FOUND, "RPC_NT_NO_ENDPOINT_FOUND",
+ (NTSTATUS) RPC_NT_INVALID_TIMEOUT, "RPC_NT_INVALID_TIMEOUT",
+ (NTSTATUS) RPC_NT_OBJECT_NOT_FOUND, "RPC_NT_OBJECT_NOT_FOUND",
+ (NTSTATUS) RPC_NT_ALREADY_REGISTERED, "RPC_NT_ALREADY_REGISTERED",
+ (NTSTATUS) RPC_NT_TYPE_ALREADY_REGISTERED, "RPC_NT_TYPE_ALREADY_REGISTERED",
+ (NTSTATUS) RPC_NT_ALREADY_LISTENING, "RPC_NT_ALREADY_LISTENING",
+ (NTSTATUS) RPC_NT_NO_PROTSEQS_REGISTERED, "RPC_NT_NO_PROTSEQS_REGISTERED",
+ (NTSTATUS) RPC_NT_NOT_LISTENING, "RPC_NT_NOT_LISTENING",
+ (NTSTATUS) RPC_NT_UNKNOWN_MGR_TYPE, "RPC_NT_UNKNOWN_MGR_TYPE",
+ (NTSTATUS) RPC_NT_UNKNOWN_IF, "RPC_NT_UNKNOWN_IF",
+ (NTSTATUS) RPC_NT_NO_BINDINGS, "RPC_NT_NO_BINDINGS",
+ (NTSTATUS) RPC_NT_NO_PROTSEQS, "RPC_NT_NO_PROTSEQS",
+ (NTSTATUS) RPC_NT_CANT_CREATE_ENDPOINT, "RPC_NT_CANT_CREATE_ENDPOINT",
+ (NTSTATUS) RPC_NT_OUT_OF_RESOURCES, "RPC_NT_OUT_OF_RESOURCES",
+ (NTSTATUS) RPC_NT_SERVER_UNAVAILABLE, "RPC_NT_SERVER_UNAVAILABLE",
+ (NTSTATUS) RPC_NT_SERVER_TOO_BUSY, "RPC_NT_SERVER_TOO_BUSY",
+ (NTSTATUS) RPC_NT_INVALID_NETWORK_OPTIONS, "RPC_NT_INVALID_NETWORK_OPTIONS",
+ (NTSTATUS) RPC_NT_NO_CALL_ACTIVE, "RPC_NT_NO_CALL_ACTIVE",
+ (NTSTATUS) RPC_NT_CALL_FAILED, "RPC_NT_CALL_FAILED",
+ (NTSTATUS) RPC_NT_CALL_FAILED_DNE, "RPC_NT_CALL_FAILED_DNE",
+ (NTSTATUS) RPC_NT_PROTOCOL_ERROR, "RPC_NT_PROTOCOL_ERROR",
+ (NTSTATUS) RPC_NT_UNSUPPORTED_TRANS_SYN, "RPC_NT_UNSUPPORTED_TRANS_SYN",
+ (NTSTATUS) RPC_NT_UNSUPPORTED_TYPE, "RPC_NT_UNSUPPORTED_TYPE",
+ (NTSTATUS) RPC_NT_INVALID_TAG, "RPC_NT_INVALID_TAG",
+ (NTSTATUS) RPC_NT_INVALID_BOUND, "RPC_NT_INVALID_BOUND",
+ (NTSTATUS) RPC_NT_NO_ENTRY_NAME, "RPC_NT_NO_ENTRY_NAME",
+ (NTSTATUS) RPC_NT_INVALID_NAME_SYNTAX, "RPC_NT_INVALID_NAME_SYNTAX",
+ (NTSTATUS) RPC_NT_UNSUPPORTED_NAME_SYNTAX, "RPC_NT_UNSUPPORTED_NAME_SYNTAX",
+ (NTSTATUS) RPC_NT_UUID_NO_ADDRESS, "RPC_NT_UUID_NO_ADDRESS",
+ (NTSTATUS) RPC_NT_DUPLICATE_ENDPOINT, "RPC_NT_DUPLICATE_ENDPOINT",
+ (NTSTATUS) RPC_NT_UNKNOWN_AUTHN_TYPE, "RPC_NT_UNKNOWN_AUTHN_TYPE",
+ (NTSTATUS) RPC_NT_MAX_CALLS_TOO_SMALL, "RPC_NT_MAX_CALLS_TOO_SMALL",
+ (NTSTATUS) RPC_NT_STRING_TOO_LONG, "RPC_NT_STRING_TOO_LONG",
+ (NTSTATUS) RPC_NT_PROTSEQ_NOT_FOUND, "RPC_NT_PROTSEQ_NOT_FOUND",
+ (NTSTATUS) RPC_NT_PROCNUM_OUT_OF_RANGE, "RPC_NT_PROCNUM_OUT_OF_RANGE",
+ (NTSTATUS) RPC_NT_BINDING_HAS_NO_AUTH, "RPC_NT_BINDING_HAS_NO_AUTH",
+ (NTSTATUS) RPC_NT_UNKNOWN_AUTHN_SERVICE, "RPC_NT_UNKNOWN_AUTHN_SERVICE",
+ (NTSTATUS) RPC_NT_UNKNOWN_AUTHN_LEVEL, "RPC_NT_UNKNOWN_AUTHN_LEVEL",
+ (NTSTATUS) RPC_NT_INVALID_AUTH_IDENTITY, "RPC_NT_INVALID_AUTH_IDENTITY",
+ (NTSTATUS) RPC_NT_UNKNOWN_AUTHZ_SERVICE, "RPC_NT_UNKNOWN_AUTHZ_SERVICE",
+ (NTSTATUS) EPT_NT_INVALID_ENTRY, "EPT_NT_INVALID_ENTRY",
+ (NTSTATUS) EPT_NT_CANT_PERFORM_OP, "EPT_NT_CANT_PERFORM_OP",
+ (NTSTATUS) EPT_NT_NOT_REGISTERED, "EPT_NT_NOT_REGISTERED",
+ (NTSTATUS) RPC_NT_NOTHING_TO_EXPORT, "RPC_NT_NOTHING_TO_EXPORT",
+ (NTSTATUS) RPC_NT_INCOMPLETE_NAME, "RPC_NT_INCOMPLETE_NAME",
+ (NTSTATUS) RPC_NT_INVALID_VERS_OPTION, "RPC_NT_INVALID_VERS_OPTION",
+ (NTSTATUS) RPC_NT_NO_MORE_MEMBERS, "RPC_NT_NO_MORE_MEMBERS",
+ (NTSTATUS) RPC_NT_NOT_ALL_OBJS_UNEXPORTED, "RPC_NT_NOT_ALL_OBJS_UNEXPORTED",
+ (NTSTATUS) RPC_NT_INTERFACE_NOT_FOUND, "RPC_NT_INTERFACE_NOT_FOUND",
+ (NTSTATUS) RPC_NT_ENTRY_ALREADY_EXISTS, "RPC_NT_ENTRY_ALREADY_EXISTS",
+ (NTSTATUS) RPC_NT_ENTRY_NOT_FOUND, "RPC_NT_ENTRY_NOT_FOUND",
+ (NTSTATUS) RPC_NT_NAME_SERVICE_UNAVAILABLE, "RPC_NT_NAME_SERVICE_UNAVAILABLE",
+ (NTSTATUS) RPC_NT_INVALID_NAF_ID, "RPC_NT_INVALID_NAF_ID",
+ (NTSTATUS) RPC_NT_CANNOT_SUPPORT, "RPC_NT_CANNOT_SUPPORT",
+ (NTSTATUS) RPC_NT_NO_CONTEXT_AVAILABLE, "RPC_NT_NO_CONTEXT_AVAILABLE",
+ (NTSTATUS) RPC_NT_INTERNAL_ERROR, "RPC_NT_INTERNAL_ERROR",
+ (NTSTATUS) RPC_NT_ZERO_DIVIDE, "RPC_NT_ZERO_DIVIDE",
+ (NTSTATUS) RPC_NT_ADDRESS_ERROR, "RPC_NT_ADDRESS_ERROR",
+ (NTSTATUS) RPC_NT_FP_DIV_ZERO, "RPC_NT_FP_DIV_ZERO",
+ (NTSTATUS) RPC_NT_FP_UNDERFLOW, "RPC_NT_FP_UNDERFLOW",
+ (NTSTATUS) RPC_NT_FP_OVERFLOW, "RPC_NT_FP_OVERFLOW",
+ (NTSTATUS) RPC_NT_NO_MORE_ENTRIES, "RPC_NT_NO_MORE_ENTRIES",
+ (NTSTATUS) RPC_NT_SS_CHAR_TRANS_OPEN_FAIL, "RPC_NT_SS_CHAR_TRANS_OPEN_FAIL",
+ (NTSTATUS) RPC_NT_SS_CHAR_TRANS_SHORT_FILE, "RPC_NT_SS_CHAR_TRANS_SHORT_FILE",
+ (NTSTATUS) RPC_NT_SS_IN_NULL_CONTEXT, "RPC_NT_SS_IN_NULL_CONTEXT",
+ (NTSTATUS) RPC_NT_SS_CONTEXT_MISMATCH, "RPC_NT_SS_CONTEXT_MISMATCH",
+ (NTSTATUS) RPC_NT_SS_CONTEXT_DAMAGED, "RPC_NT_SS_CONTEXT_DAMAGED",
+ (NTSTATUS) RPC_NT_SS_HANDLES_MISMATCH, "RPC_NT_SS_HANDLES_MISMATCH",
+ (NTSTATUS) RPC_NT_SS_CANNOT_GET_CALL_HANDLE, "RPC_NT_SS_CANNOT_GET_CALL_HANDLE",
+ (NTSTATUS) RPC_NT_NULL_REF_POINTER, "RPC_NT_NULL_REF_POINTER",
+ (NTSTATUS) RPC_NT_ENUM_VALUE_OUT_OF_RANGE, "RPC_NT_ENUM_VALUE_OUT_OF_RANGE",
+ (NTSTATUS) RPC_NT_BYTE_COUNT_TOO_SMALL, "RPC_NT_BYTE_COUNT_TOO_SMALL",
+ (NTSTATUS) RPC_NT_BAD_STUB_DATA, "RPC_NT_BAD_STUB_DATA",
+ (NTSTATUS) RPC_NT_CALL_IN_PROGRESS, "RPC_NT_CALL_IN_PROGRESS",
+ (NTSTATUS) RPC_NT_NO_MORE_BINDINGS, "RPC_NT_NO_MORE_BINDINGS",
+ (NTSTATUS) RPC_NT_GROUP_MEMBER_NOT_FOUND, "RPC_NT_GROUP_MEMBER_NOT_FOUND",
+ (NTSTATUS) EPT_NT_CANT_CREATE, "EPT_NT_CANT_CREATE",
+ (NTSTATUS) RPC_NT_INVALID_OBJECT, "RPC_NT_INVALID_OBJECT",
+ (NTSTATUS) RPC_NT_NO_INTERFACES, "RPC_NT_NO_INTERFACES",
+ (NTSTATUS) RPC_NT_CALL_CANCELLED, "RPC_NT_CALL_CANCELLED",
+ (NTSTATUS) RPC_NT_BINDING_INCOMPLETE, "RPC_NT_BINDING_INCOMPLETE",
+ (NTSTATUS) RPC_NT_COMM_FAILURE, "RPC_NT_COMM_FAILURE",
+ (NTSTATUS) RPC_NT_UNSUPPORTED_AUTHN_LEVEL, "RPC_NT_UNSUPPORTED_AUTHN_LEVEL",
+ (NTSTATUS) RPC_NT_NO_PRINC_NAME, "RPC_NT_NO_PRINC_NAME",
+ (NTSTATUS) RPC_NT_NOT_RPC_ERROR, "RPC_NT_NOT_RPC_ERROR",
+ (NTSTATUS) RPC_NT_UUID_LOCAL_ONLY, "RPC_NT_UUID_LOCAL_ONLY",
+ (NTSTATUS) RPC_NT_SEC_PKG_ERROR, "RPC_NT_SEC_PKG_ERROR",
+ (NTSTATUS) RPC_NT_NOT_CANCELLED, "RPC_NT_NOT_CANCELLED",
+ (NTSTATUS) RPC_NT_INVALID_ES_ACTION, "RPC_NT_INVALID_ES_ACTION",
+ (NTSTATUS) RPC_NT_WRONG_ES_VERSION, "RPC_NT_WRONG_ES_VERSION",
+ (NTSTATUS) RPC_NT_WRONG_STUB_VERSION, "RPC_NT_WRONG_STUB_VERSION",
+ (NTSTATUS) RPC_NT_INVALID_PIPE_OBJECT, "RPC_NT_INVALID_PIPE_OBJECT",
+ (NTSTATUS) RPC_NT_INVALID_PIPE_OPERATION, "RPC_NT_INVALID_PIPE_OPERATION",
+ (NTSTATUS) RPC_NT_WRONG_PIPE_VERSION, "RPC_NT_WRONG_PIPE_VERSION",
+ (NTSTATUS) RPC_NT_SEND_INCOMPLETE, "RPC_NT_SEND_INCOMPLETE",
+ (NTSTATUS) 0xFFFFFFFF, NULL
+};
diff --git a/public/sdk/inc/ntstatus.h b/public/sdk/inc/ntstatus.h
new file mode 100644
index 000000000..bd39e7379
--- /dev/null
+++ b/public/sdk/inc/ntstatus.h
@@ -0,0 +1,7179 @@
+/*++ BUILD Version: 0005 // Increment this if a change has global effects
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ ntstatus.h
+
+Abstract:
+
+ Constant definitions for the NTSTATUS values.
+
+Author:
+
+ Portable Systems Group 30-Mar-1989
+
+Revision History:
+
+Notes:
+
+ This file is generated by the MC tool from the winerror.msg file.
+
+ Please add new error values to the end of the file. To do otherwise
+ will jumble the error values.
+
+--*/
+
+#ifndef _NTSTATUS_
+#define _NTSTATUS_
+
+#ifndef WIN32_NO_STATUS // winnt
+// begin_ntsecapi
+
+/*lint -save -e767 */ // Don't complain about different definitions // winnt
+
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// Standard Success values
+//
+//
+/////////////////////////////////////////////////////////////////////////
+
+
+//
+// The success status codes 0 - 63 are reserved for wait completion status.
+//
+#define STATUS_SUCCESS ((NTSTATUS)0x00000000L) // ntsubauth
+
+//
+// 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_RPC_STUBS 0x3
+#define FACILITY_RPC_RUNTIME 0x2
+#define FACILITY_IO_ERROR_CODE 0x4
+
+
+//
+// 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: STATUS_WAIT_0
+//
+// MessageText:
+//
+// STATUS_WAIT_0
+//
+#define STATUS_WAIT_0 ((NTSTATUS)0x00000000L) // winnt
+
+//
+// MessageId: STATUS_WAIT_1
+//
+// MessageText:
+//
+// STATUS_WAIT_1
+//
+#define STATUS_WAIT_1 ((NTSTATUS)0x00000001L)
+
+//
+// MessageId: STATUS_WAIT_2
+//
+// MessageText:
+//
+// STATUS_WAIT_2
+//
+#define STATUS_WAIT_2 ((NTSTATUS)0x00000002L)
+
+//
+// MessageId: STATUS_WAIT_3
+//
+// MessageText:
+//
+// STATUS_WAIT_3
+//
+#define STATUS_WAIT_3 ((NTSTATUS)0x00000003L)
+
+//
+// MessageId: STATUS_WAIT_63
+//
+// MessageText:
+//
+// STATUS_WAIT_63
+//
+#define STATUS_WAIT_63 ((NTSTATUS)0x0000003FL)
+
+
+//
+// The success status codes 128 - 191 are reserved for wait completion
+// status with an abandoned mutant object.
+//
+#define STATUS_ABANDONED ((NTSTATUS)0x00000080L)
+
+//
+// MessageId: STATUS_ABANDONED_WAIT_0
+//
+// MessageText:
+//
+// STATUS_ABANDONED_WAIT_0
+//
+#define STATUS_ABANDONED_WAIT_0 ((NTSTATUS)0x00000080L) // winnt
+
+//
+// MessageId: STATUS_ABANDONED_WAIT_63
+//
+// MessageText:
+//
+// STATUS_ABANDONED_WAIT_63
+//
+#define STATUS_ABANDONED_WAIT_63 ((NTSTATUS)0x000000BFL)
+
+//
+// MessageId: STATUS_USER_APC
+//
+// MessageText:
+//
+// The success status codes 256, 257, 258, and 258 are reserved for
+// User APC, Kernel APC, Alerted, and Timeout.
+//
+#define STATUS_USER_APC ((NTSTATUS)0x000000C0L) // winnt
+
+//
+// MessageId: STATUS_KERNEL_APC
+//
+// MessageText:
+//
+// The success status codes 256, 257, 258, and 258 are reserved for
+// User APC, Kernel APC, Alerted, and Timeout.
+//
+#define STATUS_KERNEL_APC ((NTSTATUS)0x00000100L)
+
+//
+// MessageId: STATUS_ALERTED
+//
+// MessageText:
+//
+// The success status codes 256, 257, 258, and 258 are reserved for
+// User APC, Kernel APC, Alerted, and Timeout.
+//
+#define STATUS_ALERTED ((NTSTATUS)0x00000101L)
+
+//
+// MessageId: STATUS_TIMEOUT
+//
+// MessageText:
+//
+// The success status codes 256, 257, 258, and 258 are reserved for
+// User APC, Kernel APC, Alerted, and Timeout.
+//
+#define STATUS_TIMEOUT ((NTSTATUS)0x00000102L) // winnt
+
+//
+// MessageId: STATUS_PENDING
+//
+// MessageText:
+//
+// The operation that was requested is pending completion.
+//
+#define STATUS_PENDING ((NTSTATUS)0x00000103L) // winnt
+
+//
+// MessageId: STATUS_REPARSE
+//
+// MessageText:
+//
+// A reparse should be performed by the Object Manager since the name of the
+// file resulted in a symbolic link.
+//
+#define STATUS_REPARSE ((NTSTATUS)0x00000104L)
+
+//
+// MessageId: STATUS_MORE_ENTRIES
+//
+// MessageText:
+//
+// Returned by enumeration APIs to indicate more information is available
+// to successive calls.
+//
+#define STATUS_MORE_ENTRIES ((NTSTATUS)0x00000105L)
+
+//
+// MessageId: STATUS_NOT_ALL_ASSIGNED
+//
+// MessageText:
+//
+// Indicates not all privileges referenced are assigned to the caller.
+// This allows, for example, all privileges to be disabled without having
+// to know exactly which privileges are assigned.
+//
+#define STATUS_NOT_ALL_ASSIGNED ((NTSTATUS)0x00000106L)
+
+//
+// MessageId: STATUS_SOME_NOT_MAPPED
+//
+// MessageText:
+//
+// Some of the information to be translated has not been translated.
+//
+#define STATUS_SOME_NOT_MAPPED ((NTSTATUS)0x00000107L)
+
+//
+// MessageId: STATUS_OPLOCK_BREAK_IN_PROGRESS
+//
+// MessageText:
+//
+// An open/create operation completed while an oplock break is
+// underway.
+//
+#define STATUS_OPLOCK_BREAK_IN_PROGRESS ((NTSTATUS)0x00000108L)
+
+//
+// MessageId: STATUS_VOLUME_MOUNTED
+//
+// MessageText:
+//
+// A new volume has been mounted by a file system.
+//
+#define STATUS_VOLUME_MOUNTED ((NTSTATUS)0x00000109L)
+
+//
+// MessageId: STATUS_RXACT_COMMITTED
+//
+// MessageText:
+//
+// This success level status indicates that the transaction state already
+// exists for the registry sub-tree, but that a transaction commit was
+// previously aborted. The commit has now been completed.
+// This status value is returned by the runtime library (RTL) registry
+// transaction package (RXact).
+//
+#define STATUS_RXACT_COMMITTED ((NTSTATUS)0x0000010AL)
+
+//
+// MessageId: STATUS_NOTIFY_CLEANUP
+//
+// MessageText:
+//
+// This indicates that a notify change request has been completed due to
+// closing the handle which made the notify change request.
+//
+#define STATUS_NOTIFY_CLEANUP ((NTSTATUS)0x0000010BL)
+
+//
+// MessageId: STATUS_NOTIFY_ENUM_DIR
+//
+// MessageText:
+//
+// This indicates that a notify change request is being completed and that the
+// information is not being returned in the caller's buffer. The caller now
+// needs to enumerate the files to find the changes.
+//
+#define STATUS_NOTIFY_ENUM_DIR ((NTSTATUS)0x0000010CL)
+
+//
+// MessageId: STATUS_NO_QUOTAS_FOR_ACCOUNT
+//
+// MessageText:
+//
+// {No Quotas}
+// No system quota limits are specifically set for this account.
+//
+#define STATUS_NO_QUOTAS_FOR_ACCOUNT ((NTSTATUS)0x0000010DL)
+
+//
+// MessageId: STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED
+//
+// MessageText:
+//
+// {Connect Failure on Primary Transport}
+// An attempt was made to connect to the remote server %s on the primary transport, but the
+// connection failed. The computer WAS able to connect on a secondary transport.
+//
+#define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED ((NTSTATUS)0x0000010EL)
+
+//
+// MessageId: STATUS_PAGE_FAULT_TRANSITION
+//
+// MessageText:
+//
+// Page fault was a transition fault.
+//
+#define STATUS_PAGE_FAULT_TRANSITION ((NTSTATUS)0x00000110L)
+
+//
+// MessageId: STATUS_PAGE_FAULT_DEMAND_ZERO
+//
+// MessageText:
+//
+// Page fault was a demand zero fault.
+//
+#define STATUS_PAGE_FAULT_DEMAND_ZERO ((NTSTATUS)0x00000111L)
+
+//
+// MessageId: STATUS_PAGE_FAULT_COPY_ON_WRITE
+//
+// MessageText:
+//
+// Page fault was a demand zero fault.
+//
+#define STATUS_PAGE_FAULT_COPY_ON_WRITE ((NTSTATUS)0x00000112L)
+
+//
+// MessageId: STATUS_PAGE_FAULT_GUARD_PAGE
+//
+// MessageText:
+//
+// Page fault was a demand zero fault.
+//
+#define STATUS_PAGE_FAULT_GUARD_PAGE ((NTSTATUS)0x00000113L)
+
+//
+// MessageId: STATUS_PAGE_FAULT_PAGING_FILE
+//
+// MessageText:
+//
+// Page fault was satisfied by reading from a secondary storage device.
+//
+#define STATUS_PAGE_FAULT_PAGING_FILE ((NTSTATUS)0x00000114L)
+
+//
+// MessageId: STATUS_CACHE_PAGE_LOCKED
+//
+// MessageText:
+//
+// Cached page was locked during operation.
+//
+#define STATUS_CACHE_PAGE_LOCKED ((NTSTATUS)0x00000115L)
+
+//
+// MessageId: STATUS_CRASH_DUMP
+//
+// MessageText:
+//
+// Crash dump exists in paging file.
+//
+#define STATUS_CRASH_DUMP ((NTSTATUS)0x00000116L)
+
+//
+// MessageId: STATUS_BUFFER_ALL_ZEROS
+//
+// MessageText:
+//
+// Specified buffer contains all zeros.
+//
+#define STATUS_BUFFER_ALL_ZEROS ((NTSTATUS)0x00000117L)
+
+//
+// MessageId: STATUS_REPARSE_OBJECT
+//
+// MessageText:
+//
+// A reparse should be performed by the Object Manager since the name of the
+// file resulted in a symbolic link.
+//
+#define STATUS_REPARSE_OBJECT ((NTSTATUS)0x00000118L)
+
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// Standard Information values
+//
+/////////////////////////////////////////////////////////////////////////
+
+//
+// MessageId: STATUS_OBJECT_NAME_EXISTS
+//
+// MessageText:
+//
+// {Object Exists}
+// An attempt was made to create an object and the object name already existed.
+//
+#define STATUS_OBJECT_NAME_EXISTS ((NTSTATUS)0x40000000L)
+
+//
+// MessageId: STATUS_THREAD_WAS_SUSPENDED
+//
+// MessageText:
+//
+// {Thread Suspended}
+// A thread termination occurred while the thread was suspended. The
+// thread was resumed, and termination proceeded.
+//
+#define STATUS_THREAD_WAS_SUSPENDED ((NTSTATUS)0x40000001L)
+
+//
+// MessageId: STATUS_WORKING_SET_LIMIT_RANGE
+//
+// MessageText:
+//
+// {Working Set Range Error}
+// An attempt was made to set the working set minimum or maximum
+// to values which are outside of the allowable range.
+//
+#define STATUS_WORKING_SET_LIMIT_RANGE ((NTSTATUS)0x40000002L)
+
+//
+// MessageId: STATUS_IMAGE_NOT_AT_BASE
+//
+// MessageText:
+//
+// {Image Relocated}
+// An image file could not be mapped at the address specified in
+// the image file. Local fixups must be performed on this image.
+//
+#define STATUS_IMAGE_NOT_AT_BASE ((NTSTATUS)0x40000003L)
+
+//
+// MessageId: STATUS_RXACT_STATE_CREATED
+//
+// MessageText:
+//
+// This informational level status indicates that a specified registry
+// sub-tree transaction state did not yet exist and had to be created.
+// This status value is returned by the runtime library (RTL) registry
+// transaction package (RXact).
+//
+#define STATUS_RXACT_STATE_CREATED ((NTSTATUS)0x40000004L)
+
+//
+// MessageId: STATUS_SEGMENT_NOTIFICATION
+//
+// MessageText:
+//
+// {Segment Load}
+// A virtual DOS machine (VDM) is loading, unloading, or moving an MS-DOS
+// or Win16 program segment image. An exception is raised so a debugger can
+// load, unload or track symbols and breakpoints within these 16-bit segments.
+//
+#define STATUS_SEGMENT_NOTIFICATION ((NTSTATUS)0x40000005L) // winnt
+
+//
+// MessageId: STATUS_LOCAL_USER_SESSION_KEY
+//
+// MessageText:
+//
+// {Local Session Key}
+// A user session key was requested for a local RPC connection. The session key
+// returned is a constant value and not unique to this connection.
+//
+#define STATUS_LOCAL_USER_SESSION_KEY ((NTSTATUS)0x40000006L)
+
+//
+// MessageId: STATUS_BAD_CURRENT_DIRECTORY
+//
+// MessageText:
+//
+// {Invalid Current Directory}
+// The process cannot switch to the startup current directory %s.
+// Select OK to set current directory to %s, or select CANCEL
+// to exit.
+//
+#define STATUS_BAD_CURRENT_DIRECTORY ((NTSTATUS)0x40000007L)
+
+//
+// MessageId: STATUS_SERIAL_MORE_WRITES
+//
+// MessageText:
+//
+// {Serial IOCTL Complete}
+// A serial I/O operation was completed by another write to a serial port.
+// (The IOCTL_SERIAL_XOFF_COUNTER reached zero.)
+//
+#define STATUS_SERIAL_MORE_WRITES ((NTSTATUS)0x40000008L)
+
+//
+// MessageId: STATUS_REGISTRY_RECOVERED
+//
+// MessageText:
+//
+// {Registry Recovery}
+// One of the files containing the system's Registry data had to be recovered
+// by use of a log or alternate copy. The recovery was successful.
+//
+#define STATUS_REGISTRY_RECOVERED ((NTSTATUS)0x40000009L)
+
+//
+// MessageId: STATUS_FT_READ_RECOVERY_FROM_BACKUP
+//
+// MessageText:
+//
+// {Redundant Read}
+// To satisfy a read request, the NT fault-tolerant file system successfully
+// read the requested data from a redundant copy. This was done because
+// the file system encountered a failure on a member of the fault-tolerant
+// volume, but was unable to reassign the failing area of the device.
+//
+#define STATUS_FT_READ_RECOVERY_FROM_BACKUP ((NTSTATUS)0x4000000AL)
+
+//
+// MessageId: STATUS_FT_WRITE_RECOVERY
+//
+// MessageText:
+//
+// {Redundant Write}
+// To satisfy a write request, the NT fault-tolerant file system successfully
+// wrote a redundant copy of the information. This was done because the
+// file system encountered a failure on a member of the fault-tolerant
+// volume, but was not able to reassign the failing area of the device.
+//
+#define STATUS_FT_WRITE_RECOVERY ((NTSTATUS)0x4000000BL)
+
+//
+// MessageId: STATUS_SERIAL_COUNTER_TIMEOUT
+//
+// MessageText:
+//
+// {Serial IOCTL Timeout}
+// A serial I/O operation completed because the time-out period expired.
+// (The IOCTL_SERIAL_XOFF_COUNTER had not reached zero.)
+//
+#define STATUS_SERIAL_COUNTER_TIMEOUT ((NTSTATUS)0x4000000CL)
+
+//
+// MessageId: STATUS_NULL_LM_PASSWORD
+//
+// MessageText:
+//
+// {Password Too Complex}
+// The NT password is too complex to be converted to a LAN Manager password.
+// The LAN Manager password returned is a NULL string.
+//
+#define STATUS_NULL_LM_PASSWORD ((NTSTATUS)0x4000000DL)
+
+//
+// MessageId: STATUS_IMAGE_MACHINE_TYPE_MISMATCH
+//
+// MessageText:
+//
+// {Machine Type Mismatch}
+// The image file %s is valid, but is for a machine type other than the current machine. Select OK to continue, or CANCEL to fail the DLL load.
+//
+#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH ((NTSTATUS)0x4000000EL)
+
+//
+// MessageId: STATUS_RECEIVE_PARTIAL
+//
+// MessageText:
+//
+// {Partial Data Received}
+// The network transport returned partial data to its client. The remaining
+// data will be sent later.
+//
+#define STATUS_RECEIVE_PARTIAL ((NTSTATUS)0x4000000FL)
+
+//
+// MessageId: STATUS_RECEIVE_EXPEDITED
+//
+// MessageText:
+//
+// {Expedited Data Received}
+// The network transport returned data to its client that was marked as
+// expedited by the remote system.
+//
+#define STATUS_RECEIVE_EXPEDITED ((NTSTATUS)0x40000010L)
+
+//
+// MessageId: STATUS_RECEIVE_PARTIAL_EXPEDITED
+//
+// MessageText:
+//
+// {Partial Expedited Data Received}
+// The network transport returned partial data to its client and this data
+// was marked as expedited by the remote system. The remaining data will
+// be sent later.
+//
+#define STATUS_RECEIVE_PARTIAL_EXPEDITED ((NTSTATUS)0x40000011L)
+
+//
+// MessageId: STATUS_EVENT_DONE
+//
+// MessageText:
+//
+// {TDI Event Done}
+// The TDI indication has completed successfully.
+//
+#define STATUS_EVENT_DONE ((NTSTATUS)0x40000012L)
+
+//
+// MessageId: STATUS_EVENT_PENDING
+//
+// MessageText:
+//
+// {TDI Event Pending}
+// The TDI indication has entered the pending state.
+//
+#define STATUS_EVENT_PENDING ((NTSTATUS)0x40000013L)
+
+//
+// MessageId: STATUS_CHECKING_FILE_SYSTEM
+//
+// MessageText:
+//
+// Checking file system on %wZ
+//
+#define STATUS_CHECKING_FILE_SYSTEM ((NTSTATUS)0x40000014L)
+
+//
+// MessageId: STATUS_FATAL_APP_EXIT
+//
+// MessageText:
+//
+// {Fatal Application Exit}
+// %s
+//
+#define STATUS_FATAL_APP_EXIT ((NTSTATUS)0x40000015L)
+
+//
+// MessageId: STATUS_PREDEFINED_HANDLE
+//
+// MessageText:
+//
+// The specified registry key is referenced by a predefined handle.
+//
+#define STATUS_PREDEFINED_HANDLE ((NTSTATUS)0x40000016L)
+
+//
+// MessageId: STATUS_WAS_UNLOCKED
+//
+// MessageText:
+//
+// {Page Unlocked}
+// The page protection of a locked page was changed to 'No Access'
+// and the page was unlocked from memory and from the process.
+//
+#define STATUS_WAS_UNLOCKED ((NTSTATUS)0x40000017L)
+
+//
+// MessageId: STATUS_SERVICE_NOTIFICATION
+//
+// MessageText:
+//
+// %s
+//
+#define STATUS_SERVICE_NOTIFICATION ((NTSTATUS)0x40000018L)
+
+//
+// MessageId: STATUS_WAS_LOCKED
+//
+// MessageText:
+//
+// {Page Locked}
+// One of the pages to lock was already locked.
+//
+#define STATUS_WAS_LOCKED ((NTSTATUS)0x40000019L)
+
+//
+// MessageId: STATUS_LOG_HARD_ERROR
+//
+// MessageText:
+//
+// Application popup: %1 : %2
+//
+#define STATUS_LOG_HARD_ERROR ((NTSTATUS)0x4000001AL)
+
+//
+// MessageId: STATUS_ALREADY_WIN32
+//
+// MessageText:
+//
+// STATUS_ALREADY_WIN32
+//
+#define STATUS_ALREADY_WIN32 ((NTSTATUS)0x4000001BL)
+
+//
+// MessageId: STATUS_WX86_UNSIMULATE
+//
+// MessageText:
+//
+// Exception status code used by Win32 x86 emulation subsystem.
+//
+#define STATUS_WX86_UNSIMULATE ((NTSTATUS)0x4000001CL)
+
+//
+// MessageId: STATUS_WX86_CONTINUE
+//
+// MessageText:
+//
+// Exception status code used by Win32 x86 emulation subsystem.
+//
+#define STATUS_WX86_CONTINUE ((NTSTATUS)0x4000001DL)
+
+//
+// MessageId: STATUS_WX86_SINGLE_STEP
+//
+// MessageText:
+//
+// Exception status code used by Win32 x86 emulation subsystem.
+//
+#define STATUS_WX86_SINGLE_STEP ((NTSTATUS)0x4000001EL)
+
+//
+// MessageId: STATUS_WX86_BREAKPOINT
+//
+// MessageText:
+//
+// Exception status code used by Win32 x86 emulation subsystem.
+//
+#define STATUS_WX86_BREAKPOINT ((NTSTATUS)0x4000001FL)
+
+//
+// MessageId: STATUS_WX86_EXCEPTION_CONTINUE
+//
+// MessageText:
+//
+// Exception status code used by Win32 x86 emulation subsystem.
+//
+#define STATUS_WX86_EXCEPTION_CONTINUE ((NTSTATUS)0x40000020L)
+
+//
+// MessageId: STATUS_WX86_EXCEPTION_LASTCHANCE
+//
+// MessageText:
+//
+// Exception status code used by Win32 x86 emulation subsystem.
+//
+#define STATUS_WX86_EXCEPTION_LASTCHANCE ((NTSTATUS)0x40000021L)
+
+//
+// MessageId: STATUS_WX86_EXCEPTION_CHAIN
+//
+// MessageText:
+//
+// Exception status code used by Win32 x86 emulation subsystem.
+//
+#define STATUS_WX86_EXCEPTION_CHAIN ((NTSTATUS)0x40000022L)
+
+//
+// MessageId: STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE
+//
+// MessageText:
+//
+// {Machine Type Mismatch}
+// The image file %s is valid, but is for a machine type other than the current machine.
+//
+#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE ((NTSTATUS)0x40000023L)
+
+//
+// MessageId: STATUS_NO_YIELD_PERFORMED
+//
+// MessageText:
+//
+// A yield execution was performed and no thread was available to run.
+//
+#define STATUS_NO_YIELD_PERFORMED ((NTSTATUS)0x40000024L)
+
+//
+// MessageId: STATUS_TIMER_RESUME_IGNORED
+//
+// MessageText:
+//
+// The resumeable flag to a timer API was ignored.
+//
+#define STATUS_TIMER_RESUME_IGNORED ((NTSTATUS)0x40000025L)
+
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// Standard Warning values
+//
+//
+// Note: Do NOT use the value 0x80000000L, as this is a non-portable value
+// for the NT_SUCCESS macro. Warning values start with a code of 1.
+//
+/////////////////////////////////////////////////////////////////////////
+
+//
+// MessageId: STATUS_GUARD_PAGE_VIOLATION
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Guard Page Exception
+// A page of memory that marks the end of a data structure, such as a stack
+// or an array, has been accessed.
+//
+#define STATUS_GUARD_PAGE_VIOLATION ((NTSTATUS)0x80000001L) // winnt
+
+//
+// MessageId: STATUS_DATATYPE_MISALIGNMENT
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Alignment Fault
+// A datatype misalignment was detected in a load or store instruction.
+//
+#define STATUS_DATATYPE_MISALIGNMENT ((NTSTATUS)0x80000002L) // winnt
+
+//
+// MessageId: STATUS_BREAKPOINT
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Breakpoint
+// A breakpoint has been reached.
+//
+#define STATUS_BREAKPOINT ((NTSTATUS)0x80000003L) // winnt
+
+//
+// MessageId: STATUS_SINGLE_STEP
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Single Step
+// A single step or trace operation has just been completed.
+//
+#define STATUS_SINGLE_STEP ((NTSTATUS)0x80000004L) // winnt
+
+//
+// MessageId: STATUS_BUFFER_OVERFLOW
+//
+// MessageText:
+//
+// {Buffer Overflow}
+// The data was too large to fit into the specified buffer.
+//
+#define STATUS_BUFFER_OVERFLOW ((NTSTATUS)0x80000005L)
+
+//
+// MessageId: STATUS_NO_MORE_FILES
+//
+// MessageText:
+//
+// {No More Files}
+// No more files were found which match the file specification.
+//
+#define STATUS_NO_MORE_FILES ((NTSTATUS)0x80000006L)
+
+//
+// MessageId: STATUS_WAKE_SYSTEM_DEBUGGER
+//
+// MessageText:
+//
+// {Kernel Debugger Awakened}
+// the system debugger was awakened by an interrupt.
+//
+#define STATUS_WAKE_SYSTEM_DEBUGGER ((NTSTATUS)0x80000007L)
+
+//
+// MessageId: STATUS_HANDLES_CLOSED
+//
+// MessageText:
+//
+// {Handles Closed}
+// Handles to objects have been automatically closed as a result of the
+// requested operation.
+//
+#define STATUS_HANDLES_CLOSED ((NTSTATUS)0x8000000AL)
+
+//
+// MessageId: STATUS_NO_INHERITANCE
+//
+// MessageText:
+//
+// {Non-Inheritable ACL}
+// An access control list (ACL) contains no components that can be inherited.
+//
+#define STATUS_NO_INHERITANCE ((NTSTATUS)0x8000000BL)
+
+//
+// MessageId: STATUS_GUID_SUBSTITUTION_MADE
+//
+// MessageText:
+//
+// {GUID Substitution}
+// During the translation of a global identifier (GUID) to a Windows NT
+// security ID (SID), no administratively-defined GUID prefix was found.
+// A substitute prefix was used, which will not compromise system security.
+// However, this may provide a more restrictive access than intended.
+//
+#define STATUS_GUID_SUBSTITUTION_MADE ((NTSTATUS)0x8000000CL)
+
+//
+// MessageId: STATUS_PARTIAL_COPY
+//
+// MessageText:
+//
+// {Partial Copy}
+// Due to protection conflicts not all the requested bytes could be
+// copied.
+//
+#define STATUS_PARTIAL_COPY ((NTSTATUS)0x8000000DL)
+
+//
+// MessageId: STATUS_DEVICE_PAPER_EMPTY
+//
+// MessageText:
+//
+// {Out of Paper}
+// The printer is out of paper.
+//
+#define STATUS_DEVICE_PAPER_EMPTY ((NTSTATUS)0x8000000EL)
+
+//
+// MessageId: STATUS_DEVICE_POWERED_OFF
+//
+// MessageText:
+//
+// {Device Power Is Off}
+// The printer power has been turned off.
+//
+#define STATUS_DEVICE_POWERED_OFF ((NTSTATUS)0x8000000FL)
+
+//
+// MessageId: STATUS_DEVICE_OFF_LINE
+//
+// MessageText:
+//
+// {Device Offline}
+// The printer has been taken offline.
+//
+#define STATUS_DEVICE_OFF_LINE ((NTSTATUS)0x80000010L)
+
+//
+// MessageId: STATUS_DEVICE_BUSY
+//
+// MessageText:
+//
+// {Device Busy}
+// The device is currently busy.
+//
+#define STATUS_DEVICE_BUSY ((NTSTATUS)0x80000011L)
+
+//
+// MessageId: STATUS_NO_MORE_EAS
+//
+// MessageText:
+//
+// {No More EAs}
+// No more extended attributes (EAs) were found for the file.
+//
+#define STATUS_NO_MORE_EAS ((NTSTATUS)0x80000012L)
+
+//
+// MessageId: STATUS_INVALID_EA_NAME
+//
+// MessageText:
+//
+// {Illegal EA}
+// The specified extended attribute (EA) name contains at least one illegal
+// character.
+//
+#define STATUS_INVALID_EA_NAME ((NTSTATUS)0x80000013L)
+
+//
+// MessageId: STATUS_EA_LIST_INCONSISTENT
+//
+// MessageText:
+//
+// {Inconsistent EA List}
+// The extended attribute (EA) list is inconsistent.
+//
+#define STATUS_EA_LIST_INCONSISTENT ((NTSTATUS)0x80000014L)
+
+//
+// MessageId: STATUS_INVALID_EA_FLAG
+//
+// MessageText:
+//
+// {Invalid EA Flag}
+// An invalid extended attribute (EA) flag was set.
+//
+#define STATUS_INVALID_EA_FLAG ((NTSTATUS)0x80000015L)
+
+//
+// MessageId: STATUS_VERIFY_REQUIRED
+//
+// MessageText:
+//
+// {Verifying Disk}
+// The media has changed and a verify operation is in progress so no
+// reads or writes may be performed to the device, except those used in
+// the verify operation.
+//
+#define STATUS_VERIFY_REQUIRED ((NTSTATUS)0x80000016L)
+
+//
+// MessageId: STATUS_EXTRANEOUS_INFORMATION
+//
+// MessageText:
+//
+// {Too Much Information}
+// The specified access control list (ACL) contained more information than
+// was expected.
+//
+#define STATUS_EXTRANEOUS_INFORMATION ((NTSTATUS)0x80000017L)
+
+//
+// MessageId: STATUS_RXACT_COMMIT_NECESSARY
+//
+// MessageText:
+//
+// This warning level status indicates that the transaction state already
+// exists for the registry sub-tree, but that a transaction commit was
+// previously aborted. The commit has NOT been completed, but has not been
+// rolled back either (so it may still be committed if desired).
+// This status value is returned by the runtime library (RTL) registry
+// transaction package (RXact).
+//
+#define STATUS_RXACT_COMMIT_NECESSARY ((NTSTATUS)0x80000018L)
+
+//
+// MessageId: STATUS_NO_MORE_ENTRIES
+//
+// MessageText:
+//
+// {No More Entries}
+// No more entries are available from an enumeration operation.
+//
+#define STATUS_NO_MORE_ENTRIES ((NTSTATUS)0x8000001AL)
+
+//
+// MessageId: STATUS_FILEMARK_DETECTED
+//
+// MessageText:
+//
+// {Filemark Found}
+// A filemark was detected.
+//
+#define STATUS_FILEMARK_DETECTED ((NTSTATUS)0x8000001BL)
+
+//
+// MessageId: STATUS_MEDIA_CHANGED
+//
+// MessageText:
+//
+// {Media Changed}
+// The media may have changed.
+//
+#define STATUS_MEDIA_CHANGED ((NTSTATUS)0x8000001CL)
+
+//
+// MessageId: STATUS_BUS_RESET
+//
+// MessageText:
+//
+// {I/O Bus Reset}
+// An I/O bus reset was detected.
+//
+#define STATUS_BUS_RESET ((NTSTATUS)0x8000001DL)
+
+//
+// MessageId: STATUS_END_OF_MEDIA
+//
+// MessageText:
+//
+// {End of Media}
+// The end of the media was encountered.
+//
+#define STATUS_END_OF_MEDIA ((NTSTATUS)0x8000001EL)
+
+//
+// MessageId: STATUS_BEGINNING_OF_MEDIA
+//
+// MessageText:
+//
+// Beginning of tape or partition has been detected.
+//
+#define STATUS_BEGINNING_OF_MEDIA ((NTSTATUS)0x8000001FL)
+
+//
+// MessageId: STATUS_MEDIA_CHECK
+//
+// MessageText:
+//
+// {Media Changed}
+// The media may have changed.
+//
+#define STATUS_MEDIA_CHECK ((NTSTATUS)0x80000020L)
+
+//
+// MessageId: STATUS_SETMARK_DETECTED
+//
+// MessageText:
+//
+// A tape access reached a setmark.
+//
+#define STATUS_SETMARK_DETECTED ((NTSTATUS)0x80000021L)
+
+//
+// MessageId: STATUS_NO_DATA_DETECTED
+//
+// MessageText:
+//
+// During a tape access, the end of the data written is reached.
+//
+#define STATUS_NO_DATA_DETECTED ((NTSTATUS)0x80000022L)
+
+//
+// MessageId: STATUS_REDIRECTOR_HAS_OPEN_HANDLES
+//
+// MessageText:
+//
+// The redirector is in use and cannot be unloaded.
+//
+#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES ((NTSTATUS)0x80000023L)
+
+//
+// MessageId: STATUS_SERVER_HAS_OPEN_HANDLES
+//
+// MessageText:
+//
+// The server is in use and cannot be unloaded.
+//
+#define STATUS_SERVER_HAS_OPEN_HANDLES ((NTSTATUS)0x80000024L)
+
+//
+// MessageId: STATUS_ALREADY_DISCONNECTED
+//
+// MessageText:
+//
+// The specified connection has already been disconnected.
+//
+#define STATUS_ALREADY_DISCONNECTED ((NTSTATUS)0x80000025L)
+
+//
+// MessageId: STATUS_LONGJUMP
+//
+// MessageText:
+//
+// A long jump has been executed.
+//
+#define STATUS_LONGJUMP ((NTSTATUS)0x80000026L)
+
+
+
+/////////////////////////////////////////////////////////////////////////
+//
+// Standard Error values
+//
+/////////////////////////////////////////////////////////////////////////
+
+//
+// MessageId: STATUS_UNSUCCESSFUL
+//
+// MessageText:
+//
+// {Operation Failed}
+// The requested operation was unsuccessful.
+//
+#define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L)
+
+//
+// MessageId: STATUS_NOT_IMPLEMENTED
+//
+// MessageText:
+//
+// {Not Implemented}
+// The requested operation is not implemented.
+//
+#define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002L)
+
+//
+// MessageId: STATUS_INVALID_INFO_CLASS
+//
+// MessageText:
+//
+// {Invalid Parameter}
+// The specified information class is not a valid information class for
+// the specified object.
+//
+#define STATUS_INVALID_INFO_CLASS ((NTSTATUS)0xC0000003L) // ntsubauth
+
+//
+// MessageId: STATUS_INFO_LENGTH_MISMATCH
+//
+// MessageText:
+//
+// The specified information record length does not match the length
+// required for the specified information class.
+//
+#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L)
+
+//
+// MessageId: STATUS_ACCESS_VIOLATION
+//
+// MessageText:
+//
+// The instruction at "0x%08lx" referenced memory at "0x%08lx". The memory
+// could not be "%s".
+//
+#define STATUS_ACCESS_VIOLATION ((NTSTATUS)0xC0000005L) // winnt ntsubauth
+
+//
+// MessageId: STATUS_IN_PAGE_ERROR
+//
+// MessageText:
+//
+// The instruction at "0x%08lx" referenced memory at "0x%08lx". The required
+// data was not placed into memory because of an I/O error status of "0x%08lx".
+//
+#define STATUS_IN_PAGE_ERROR ((NTSTATUS)0xC0000006L) // winnt
+
+//
+// MessageId: STATUS_PAGEFILE_QUOTA
+//
+// MessageText:
+//
+// The pagefile quota for the process has been exhausted.
+//
+#define STATUS_PAGEFILE_QUOTA ((NTSTATUS)0xC0000007L)
+
+//
+// MessageId: STATUS_INVALID_HANDLE
+//
+// MessageText:
+//
+// An invalid HANDLE was specified.
+//
+#define STATUS_INVALID_HANDLE ((NTSTATUS)0xC0000008L) // winnt
+
+//
+// MessageId: STATUS_BAD_INITIAL_STACK
+//
+// MessageText:
+//
+// An invalid initial stack was specified in a call to NtCreateThread.
+//
+#define STATUS_BAD_INITIAL_STACK ((NTSTATUS)0xC0000009L)
+
+//
+// MessageId: STATUS_BAD_INITIAL_PC
+//
+// MessageText:
+//
+// An invalid initial start address was specified in a call to NtCreateThread.
+//
+#define STATUS_BAD_INITIAL_PC ((NTSTATUS)0xC000000AL)
+
+//
+// MessageId: STATUS_INVALID_CID
+//
+// MessageText:
+//
+// An invalid Client ID was specified.
+//
+#define STATUS_INVALID_CID ((NTSTATUS)0xC000000BL)
+
+//
+// MessageId: STATUS_TIMER_NOT_CANCELED
+//
+// MessageText:
+//
+// An attempt was made to cancel or set a timer that has an associated APC
+// and the subject thread is not the thread that originally set the timer
+// with an associated APC routine.
+//
+#define STATUS_TIMER_NOT_CANCELED ((NTSTATUS)0xC000000CL)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function.
+//
+#define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000DL)
+
+//
+// MessageId: STATUS_NO_SUCH_DEVICE
+//
+// MessageText:
+//
+// A device which does not exist was specified.
+//
+#define STATUS_NO_SUCH_DEVICE ((NTSTATUS)0xC000000EL)
+
+//
+// MessageId: STATUS_NO_SUCH_FILE
+//
+// MessageText:
+//
+// {File Not Found}
+// The file %s does not exist.
+//
+#define STATUS_NO_SUCH_FILE ((NTSTATUS)0xC000000FL)
+
+//
+// MessageId: STATUS_INVALID_DEVICE_REQUEST
+//
+// MessageText:
+//
+// The specified request is not a valid operation for the target device.
+//
+#define STATUS_INVALID_DEVICE_REQUEST ((NTSTATUS)0xC0000010L)
+
+//
+// MessageId: STATUS_END_OF_FILE
+//
+// MessageText:
+//
+// The end-of-file marker has been reached. There is no valid data in the
+// file beyond this marker.
+//
+#define STATUS_END_OF_FILE ((NTSTATUS)0xC0000011L)
+
+//
+// MessageId: STATUS_WRONG_VOLUME
+//
+// MessageText:
+//
+// {Wrong Volume}
+// The wrong volume is in the drive.
+// Please insert volume %s into drive %s.
+//
+#define STATUS_WRONG_VOLUME ((NTSTATUS)0xC0000012L)
+
+//
+// MessageId: STATUS_NO_MEDIA_IN_DEVICE
+//
+// MessageText:
+//
+// {No Disk}
+// There is no disk in the drive.
+// Please insert a disk into drive %s.
+//
+#define STATUS_NO_MEDIA_IN_DEVICE ((NTSTATUS)0xC0000013L)
+
+//
+// MessageId: STATUS_UNRECOGNIZED_MEDIA
+//
+// MessageText:
+//
+// {Unknown Disk Format}
+// The disk in drive %s is not formatted properly.
+// Please check the disk, and reformat if necessary.
+//
+#define STATUS_UNRECOGNIZED_MEDIA ((NTSTATUS)0xC0000014L)
+
+//
+// MessageId: STATUS_NONEXISTENT_SECTOR
+//
+// MessageText:
+//
+// {Sector Not Found}
+// The specified sector does not exist.
+//
+#define STATUS_NONEXISTENT_SECTOR ((NTSTATUS)0xC0000015L)
+
+//
+// MessageId: STATUS_MORE_PROCESSING_REQUIRED
+//
+// MessageText:
+//
+// {Still Busy}
+// The specified I/O request packet (IRP) cannot be disposed of because the
+// I/O operation is not complete.
+//
+#define STATUS_MORE_PROCESSING_REQUIRED ((NTSTATUS)0xC0000016L)
+
+//
+// MessageId: STATUS_NO_MEMORY
+//
+// MessageText:
+//
+// {Not Enough Quota}
+// Not enough virtual memory or paging file quota is available to complete
+// the specified operation.
+//
+#define STATUS_NO_MEMORY ((NTSTATUS)0xC0000017L) // winnt
+
+//
+// MessageId: STATUS_CONFLICTING_ADDRESSES
+//
+// MessageText:
+//
+// {Conflicting Address Range}
+// The specified address range conflicts with the address space.
+//
+#define STATUS_CONFLICTING_ADDRESSES ((NTSTATUS)0xC0000018L)
+
+//
+// MessageId: STATUS_NOT_MAPPED_VIEW
+//
+// MessageText:
+//
+// Address range to unmap is not a mapped view.
+//
+#define STATUS_NOT_MAPPED_VIEW ((NTSTATUS)0xC0000019L)
+
+//
+// MessageId: STATUS_UNABLE_TO_FREE_VM
+//
+// MessageText:
+//
+// Virtual memory cannot be freed.
+//
+#define STATUS_UNABLE_TO_FREE_VM ((NTSTATUS)0xC000001AL)
+
+//
+// MessageId: STATUS_UNABLE_TO_DELETE_SECTION
+//
+// MessageText:
+//
+// Specified section cannot be deleted.
+//
+#define STATUS_UNABLE_TO_DELETE_SECTION ((NTSTATUS)0xC000001BL)
+
+//
+// MessageId: STATUS_INVALID_SYSTEM_SERVICE
+//
+// MessageText:
+//
+// An invalid system service was specified in a system service call.
+//
+#define STATUS_INVALID_SYSTEM_SERVICE ((NTSTATUS)0xC000001CL)
+
+//
+// MessageId: STATUS_ILLEGAL_INSTRUCTION
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Illegal Instruction
+// An attempt was made to execute an illegal instruction.
+//
+#define STATUS_ILLEGAL_INSTRUCTION ((NTSTATUS)0xC000001DL) // winnt
+
+//
+// MessageId: STATUS_INVALID_LOCK_SEQUENCE
+//
+// MessageText:
+//
+// {Invalid Lock Sequence}
+// An attempt was made to execute an invalid lock sequence.
+//
+#define STATUS_INVALID_LOCK_SEQUENCE ((NTSTATUS)0xC000001EL)
+
+//
+// MessageId: STATUS_INVALID_VIEW_SIZE
+//
+// MessageText:
+//
+// {Invalid Mapping}
+// An attempt was made to create a view for a section which is bigger
+// than the section.
+//
+#define STATUS_INVALID_VIEW_SIZE ((NTSTATUS)0xC000001FL)
+
+//
+// MessageId: STATUS_INVALID_FILE_FOR_SECTION
+//
+// MessageText:
+//
+// {Bad File}
+// The attributes of the specified mapping file for a section of memory
+// cannot be read.
+//
+#define STATUS_INVALID_FILE_FOR_SECTION ((NTSTATUS)0xC0000020L)
+
+//
+// MessageId: STATUS_ALREADY_COMMITTED
+//
+// MessageText:
+//
+// {Already Committed}
+// The specified address range is already committed.
+//
+#define STATUS_ALREADY_COMMITTED ((NTSTATUS)0xC0000021L)
+
+//
+// MessageId: STATUS_ACCESS_DENIED
+//
+// MessageText:
+//
+// {Access Denied}
+// A process has requested access to an object, but has not been granted
+// those access rights.
+//
+#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L)
+
+//
+// MessageId: STATUS_BUFFER_TOO_SMALL
+//
+// MessageText:
+//
+// {Buffer Too Small}
+// The buffer is too small to contain the entry. No information has been
+// written to the buffer.
+//
+#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023L)
+
+//
+// MessageId: STATUS_OBJECT_TYPE_MISMATCH
+//
+// MessageText:
+//
+// {Wrong Type}
+// There is a mismatch between the type of object required by the requested
+// operation and the type of object that is specified in the request.
+//
+#define STATUS_OBJECT_TYPE_MISMATCH ((NTSTATUS)0xC0000024L)
+
+//
+// MessageId: STATUS_NONCONTINUABLE_EXCEPTION
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Cannot Continue
+// Windows NT cannot continue from this exception.
+//
+#define STATUS_NONCONTINUABLE_EXCEPTION ((NTSTATUS)0xC0000025L) // winnt
+
+//
+// MessageId: STATUS_INVALID_DISPOSITION
+//
+// MessageText:
+//
+// An invalid exception disposition was returned by an exception handler.
+//
+#define STATUS_INVALID_DISPOSITION ((NTSTATUS)0xC0000026L) // winnt
+
+//
+// MessageId: STATUS_UNWIND
+//
+// MessageText:
+//
+// Unwind exception code.
+//
+#define STATUS_UNWIND ((NTSTATUS)0xC0000027L)
+
+//
+// MessageId: STATUS_BAD_STACK
+//
+// MessageText:
+//
+// An invalid or unaligned stack was encountered during an unwind operation.
+//
+#define STATUS_BAD_STACK ((NTSTATUS)0xC0000028L)
+
+//
+// MessageId: STATUS_INVALID_UNWIND_TARGET
+//
+// MessageText:
+//
+// An invalid unwind target was encountered during an unwind operation.
+//
+#define STATUS_INVALID_UNWIND_TARGET ((NTSTATUS)0xC0000029L)
+
+//
+// MessageId: STATUS_NOT_LOCKED
+//
+// MessageText:
+//
+// An attempt was made to unlock a page of memory which was not locked.
+//
+#define STATUS_NOT_LOCKED ((NTSTATUS)0xC000002AL)
+
+//
+// MessageId: STATUS_PARITY_ERROR
+//
+// MessageText:
+//
+// Device parity error on I/O operation.
+//
+#define STATUS_PARITY_ERROR ((NTSTATUS)0xC000002BL)
+
+//
+// MessageId: STATUS_UNABLE_TO_DECOMMIT_VM
+//
+// MessageText:
+//
+// An attempt was made to decommit uncommitted virtual memory.
+//
+#define STATUS_UNABLE_TO_DECOMMIT_VM ((NTSTATUS)0xC000002CL)
+
+//
+// MessageId: STATUS_NOT_COMMITTED
+//
+// MessageText:
+//
+// An attempt was made to change the attributes on memory that
+// has not been committed.
+//
+#define STATUS_NOT_COMMITTED ((NTSTATUS)0xC000002DL)
+
+//
+// MessageId: STATUS_INVALID_PORT_ATTRIBUTES
+//
+// MessageText:
+//
+// Invalid Object Attributes specified to NtCreatePort or invalid
+// Port Attributes specified to NtConnectPort
+//
+#define STATUS_INVALID_PORT_ATTRIBUTES ((NTSTATUS)0xC000002EL)
+
+//
+// MessageId: STATUS_PORT_MESSAGE_TOO_LONG
+//
+// MessageText:
+//
+// Length of message passed to NtRequestPort or NtRequestWaitReplyPort
+// was longer than the maximum message allowed by the port.
+//
+#define STATUS_PORT_MESSAGE_TOO_LONG ((NTSTATUS)0xC000002FL)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_MIX
+//
+// MessageText:
+//
+// An invalid combination of parameters was specified.
+//
+#define STATUS_INVALID_PARAMETER_MIX ((NTSTATUS)0xC0000030L)
+
+//
+// MessageId: STATUS_INVALID_QUOTA_LOWER
+//
+// MessageText:
+//
+// An attempt was made to lower a quota limit below the current usage.
+//
+#define STATUS_INVALID_QUOTA_LOWER ((NTSTATUS)0xC0000031L)
+
+//
+// MessageId: STATUS_DISK_CORRUPT_ERROR
+//
+// MessageText:
+//
+// {Corrupt Disk}
+// The file system structure on the disk is corrupt and unusable.
+// Please run the Chkdsk utility on the volume %s.
+//
+#define STATUS_DISK_CORRUPT_ERROR ((NTSTATUS)0xC0000032L)
+
+//
+// MessageId: STATUS_OBJECT_NAME_INVALID
+//
+// MessageText:
+//
+// Object Name invalid.
+//
+#define STATUS_OBJECT_NAME_INVALID ((NTSTATUS)0xC0000033L)
+
+//
+// MessageId: STATUS_OBJECT_NAME_NOT_FOUND
+//
+// MessageText:
+//
+// Object Name not found.
+//
+#define STATUS_OBJECT_NAME_NOT_FOUND ((NTSTATUS)0xC0000034L)
+
+//
+// MessageId: STATUS_OBJECT_NAME_COLLISION
+//
+// MessageText:
+//
+// Object Name already exists.
+//
+#define STATUS_OBJECT_NAME_COLLISION ((NTSTATUS)0xC0000035L)
+
+//
+// MessageId: STATUS_PORT_DISCONNECTED
+//
+// MessageText:
+//
+// Attempt to send a message to a disconnected communication port.
+//
+#define STATUS_PORT_DISCONNECTED ((NTSTATUS)0xC0000037L)
+
+//
+// MessageId: STATUS_DEVICE_ALREADY_ATTACHED
+//
+// MessageText:
+//
+// An attempt was made to attach to a device that was already attached to
+// another device.
+//
+#define STATUS_DEVICE_ALREADY_ATTACHED ((NTSTATUS)0xC0000038L)
+
+//
+// MessageId: STATUS_OBJECT_PATH_INVALID
+//
+// MessageText:
+//
+// Object Path Component was not a directory object.
+//
+#define STATUS_OBJECT_PATH_INVALID ((NTSTATUS)0xC0000039L)
+
+//
+// MessageId: STATUS_OBJECT_PATH_NOT_FOUND
+//
+// MessageText:
+//
+// {Path Not Found}
+// The path %s does not exist.
+//
+#define STATUS_OBJECT_PATH_NOT_FOUND ((NTSTATUS)0xC000003AL)
+
+//
+// MessageId: STATUS_OBJECT_PATH_SYNTAX_BAD
+//
+// MessageText:
+//
+// Object Path Component was not a directory object.
+//
+#define STATUS_OBJECT_PATH_SYNTAX_BAD ((NTSTATUS)0xC000003BL)
+
+//
+// MessageId: STATUS_DATA_OVERRUN
+//
+// MessageText:
+//
+// {Data Overrun}
+// A data overrun error occurred.
+//
+#define STATUS_DATA_OVERRUN ((NTSTATUS)0xC000003CL)
+
+//
+// MessageId: STATUS_DATA_LATE_ERROR
+//
+// MessageText:
+//
+// {Data Late}
+// A data late error occurred.
+//
+#define STATUS_DATA_LATE_ERROR ((NTSTATUS)0xC000003DL)
+
+//
+// MessageId: STATUS_DATA_ERROR
+//
+// MessageText:
+//
+// {Data Error}
+// An error in reading or writing data occurred.
+//
+#define STATUS_DATA_ERROR ((NTSTATUS)0xC000003EL)
+
+//
+// MessageId: STATUS_CRC_ERROR
+//
+// MessageText:
+//
+// {Bad CRC}
+// A cyclic redundancy check (CRC) checksum error occurred.
+//
+#define STATUS_CRC_ERROR ((NTSTATUS)0xC000003FL)
+
+//
+// MessageId: STATUS_SECTION_TOO_BIG
+//
+// MessageText:
+//
+// {Section Too Large}
+// The specified section is too big to map the file.
+//
+#define STATUS_SECTION_TOO_BIG ((NTSTATUS)0xC0000040L)
+
+//
+// MessageId: STATUS_PORT_CONNECTION_REFUSED
+//
+// MessageText:
+//
+// The NtConnectPort request is refused.
+//
+#define STATUS_PORT_CONNECTION_REFUSED ((NTSTATUS)0xC0000041L)
+
+//
+// MessageId: STATUS_INVALID_PORT_HANDLE
+//
+// MessageText:
+//
+// The type of port handle is invalid for the operation requested.
+//
+#define STATUS_INVALID_PORT_HANDLE ((NTSTATUS)0xC0000042L)
+
+//
+// MessageId: STATUS_SHARING_VIOLATION
+//
+// MessageText:
+//
+// A file cannot be opened because the share access flags are
+// incompatible.
+//
+#define STATUS_SHARING_VIOLATION ((NTSTATUS)0xC0000043L)
+
+//
+// MessageId: STATUS_QUOTA_EXCEEDED
+//
+// MessageText:
+//
+// Insufficient quota exists to complete the operation
+//
+#define STATUS_QUOTA_EXCEEDED ((NTSTATUS)0xC0000044L)
+
+//
+// MessageId: STATUS_INVALID_PAGE_PROTECTION
+//
+// MessageText:
+//
+// The specified page protection was not valid.
+//
+#define STATUS_INVALID_PAGE_PROTECTION ((NTSTATUS)0xC0000045L)
+
+//
+// MessageId: STATUS_MUTANT_NOT_OWNED
+//
+// MessageText:
+//
+// An attempt to release a mutant object was made by a thread that was not the
+// owner of the mutant object.
+//
+#define STATUS_MUTANT_NOT_OWNED ((NTSTATUS)0xC0000046L)
+
+//
+// MessageId: STATUS_SEMAPHORE_LIMIT_EXCEEDED
+//
+// MessageText:
+//
+// An attempt was made to release a semaphore such that its maximum count
+// would have been exceeded.
+//
+#define STATUS_SEMAPHORE_LIMIT_EXCEEDED ((NTSTATUS)0xC0000047L)
+
+//
+// MessageId: STATUS_PORT_ALREADY_SET
+//
+// MessageText:
+//
+// An attempt to set a processes DebugPort or ExceptionPort was made,
+// but a port already exists in the process.
+//
+#define STATUS_PORT_ALREADY_SET ((NTSTATUS)0xC0000048L)
+
+//
+// MessageId: STATUS_SECTION_NOT_IMAGE
+//
+// MessageText:
+//
+// An attempt was made to query image information on a section
+// which does not map an image.
+//
+#define STATUS_SECTION_NOT_IMAGE ((NTSTATUS)0xC0000049L)
+
+//
+// MessageId: STATUS_SUSPEND_COUNT_EXCEEDED
+//
+// MessageText:
+//
+// An attempt was made to suspend a thread whose suspend count
+// was at its maximum.
+//
+#define STATUS_SUSPEND_COUNT_EXCEEDED ((NTSTATUS)0xC000004AL)
+
+//
+// MessageId: STATUS_THREAD_IS_TERMINATING
+//
+// MessageText:
+//
+// An attempt was made to suspend a thread that has begun
+// termination.
+//
+#define STATUS_THREAD_IS_TERMINATING ((NTSTATUS)0xC000004BL)
+
+//
+// MessageId: STATUS_BAD_WORKING_SET_LIMIT
+//
+// MessageText:
+//
+// An attempt was made to set the working set limit to an
+// invalid value (minimum greater than maximum, etc).
+//
+#define STATUS_BAD_WORKING_SET_LIMIT ((NTSTATUS)0xC000004CL)
+
+//
+// MessageId: STATUS_INCOMPATIBLE_FILE_MAP
+//
+// MessageText:
+//
+// A section was created to map a file which is not compatible
+// to an already existing section which maps the same file.
+//
+#define STATUS_INCOMPATIBLE_FILE_MAP ((NTSTATUS)0xC000004DL)
+
+//
+// MessageId: STATUS_SECTION_PROTECTION
+//
+// MessageText:
+//
+// A view to a section specifies a protection which is incompatible
+// with the initial view's protection.
+//
+#define STATUS_SECTION_PROTECTION ((NTSTATUS)0xC000004EL)
+
+//
+// MessageId: STATUS_EAS_NOT_SUPPORTED
+//
+// MessageText:
+//
+// An operation involving EAs failed because the file system does not
+// support EAs.
+//
+#define STATUS_EAS_NOT_SUPPORTED ((NTSTATUS)0xC000004FL)
+
+//
+// MessageId: STATUS_EA_TOO_LARGE
+//
+// MessageText:
+//
+// An EA operation failed because EA set is too large.
+//
+#define STATUS_EA_TOO_LARGE ((NTSTATUS)0xC0000050L)
+
+//
+// MessageId: STATUS_NONEXISTENT_EA_ENTRY
+//
+// MessageText:
+//
+// An EA operation failed because the name or EA index is invalid.
+//
+#define STATUS_NONEXISTENT_EA_ENTRY ((NTSTATUS)0xC0000051L)
+
+//
+// MessageId: STATUS_NO_EAS_ON_FILE
+//
+// MessageText:
+//
+// The file for which EAs were requested has no EAs.
+//
+#define STATUS_NO_EAS_ON_FILE ((NTSTATUS)0xC0000052L)
+
+//
+// MessageId: STATUS_EA_CORRUPT_ERROR
+//
+// MessageText:
+//
+// The EA is corrupt and non-readable.
+//
+#define STATUS_EA_CORRUPT_ERROR ((NTSTATUS)0xC0000053L)
+
+//
+// MessageId: STATUS_FILE_LOCK_CONFLICT
+//
+// MessageText:
+//
+// A requested read/write cannot be granted due to a conflicting file lock.
+//
+#define STATUS_FILE_LOCK_CONFLICT ((NTSTATUS)0xC0000054L)
+
+//
+// MessageId: STATUS_LOCK_NOT_GRANTED
+//
+// MessageText:
+//
+// A requested file lock cannot be granted due to other existing locks.
+//
+#define STATUS_LOCK_NOT_GRANTED ((NTSTATUS)0xC0000055L)
+
+//
+// MessageId: STATUS_DELETE_PENDING
+//
+// MessageText:
+//
+// A non close operation has been requested of a file object with a
+// delete pending.
+//
+#define STATUS_DELETE_PENDING ((NTSTATUS)0xC0000056L)
+
+//
+// MessageId: STATUS_CTL_FILE_NOT_SUPPORTED
+//
+// MessageText:
+//
+// An attempt was made to set the control attribute on a file. This
+// attribute is not supported in the target file system.
+//
+#define STATUS_CTL_FILE_NOT_SUPPORTED ((NTSTATUS)0xC0000057L)
+
+//
+// MessageId: STATUS_UNKNOWN_REVISION
+//
+// MessageText:
+//
+// Indicates a revision number encountered or specified is not one
+// known by the service. It may be a more recent revision than the
+// service is aware of.
+//
+#define STATUS_UNKNOWN_REVISION ((NTSTATUS)0xC0000058L)
+
+//
+// MessageId: STATUS_REVISION_MISMATCH
+//
+// MessageText:
+//
+// Indicates two revision levels are incompatible.
+//
+#define STATUS_REVISION_MISMATCH ((NTSTATUS)0xC0000059L)
+
+//
+// MessageId: STATUS_INVALID_OWNER
+//
+// MessageText:
+//
+// Indicates a particular Security ID may not be assigned as the
+// owner of an object.
+//
+#define STATUS_INVALID_OWNER ((NTSTATUS)0xC000005AL)
+
+//
+// MessageId: STATUS_INVALID_PRIMARY_GROUP
+//
+// MessageText:
+//
+// Indicates a particular Security ID may not be assigned as the
+// primary group of an object.
+//
+#define STATUS_INVALID_PRIMARY_GROUP ((NTSTATUS)0xC000005BL)
+
+//
+// MessageId: STATUS_NO_IMPERSONATION_TOKEN
+//
+// MessageText:
+//
+// An attempt has been made to operate on an impersonation token
+// by a thread that is not currently impersonating a client.
+//
+#define STATUS_NO_IMPERSONATION_TOKEN ((NTSTATUS)0xC000005CL)
+
+//
+// MessageId: STATUS_CANT_DISABLE_MANDATORY
+//
+// MessageText:
+//
+// A mandatory group may not be disabled.
+//
+#define STATUS_CANT_DISABLE_MANDATORY ((NTSTATUS)0xC000005DL)
+
+//
+// MessageId: STATUS_NO_LOGON_SERVERS
+//
+// MessageText:
+//
+// There are currently no logon servers available to service the logon
+// request.
+//
+#define STATUS_NO_LOGON_SERVERS ((NTSTATUS)0xC000005EL)
+
+//
+// MessageId: STATUS_NO_SUCH_LOGON_SESSION
+//
+// MessageText:
+//
+// A specified logon session does not exist. It may already have
+// been terminated.
+//
+#define STATUS_NO_SUCH_LOGON_SESSION ((NTSTATUS)0xC000005FL)
+
+//
+// MessageId: STATUS_NO_SUCH_PRIVILEGE
+//
+// MessageText:
+//
+// A specified privilege does not exist.
+//
+#define STATUS_NO_SUCH_PRIVILEGE ((NTSTATUS)0xC0000060L)
+
+//
+// MessageId: STATUS_PRIVILEGE_NOT_HELD
+//
+// MessageText:
+//
+// A required privilege is not held by the client.
+//
+#define STATUS_PRIVILEGE_NOT_HELD ((NTSTATUS)0xC0000061L)
+
+//
+// MessageId: STATUS_INVALID_ACCOUNT_NAME
+//
+// MessageText:
+//
+// The name provided is not a properly formed account name.
+//
+#define STATUS_INVALID_ACCOUNT_NAME ((NTSTATUS)0xC0000062L)
+
+//
+// MessageId: STATUS_USER_EXISTS
+//
+// MessageText:
+//
+// The specified user already exists.
+//
+#define STATUS_USER_EXISTS ((NTSTATUS)0xC0000063L)
+
+//
+// MessageId: STATUS_NO_SUCH_USER
+//
+// MessageText:
+//
+// The specified user does not exist.
+//
+#define STATUS_NO_SUCH_USER ((NTSTATUS)0xC0000064L) // ntsubauth
+
+//
+// MessageId: STATUS_GROUP_EXISTS
+//
+// MessageText:
+//
+// The specified group already exists.
+//
+#define STATUS_GROUP_EXISTS ((NTSTATUS)0xC0000065L)
+
+//
+// MessageId: STATUS_NO_SUCH_GROUP
+//
+// MessageText:
+//
+// The specified group does not exist.
+//
+#define STATUS_NO_SUCH_GROUP ((NTSTATUS)0xC0000066L)
+
+//
+// MessageId: STATUS_MEMBER_IN_GROUP
+//
+// MessageText:
+//
+// The specified user account is already in the specified group account.
+// Also used to indicate a group cannot be deleted because it contains
+// a member.
+//
+#define STATUS_MEMBER_IN_GROUP ((NTSTATUS)0xC0000067L)
+
+//
+// MessageId: STATUS_MEMBER_NOT_IN_GROUP
+//
+// MessageText:
+//
+// The specified user account is not a member of the specified group account.
+//
+#define STATUS_MEMBER_NOT_IN_GROUP ((NTSTATUS)0xC0000068L)
+
+//
+// MessageId: STATUS_LAST_ADMIN
+//
+// MessageText:
+//
+// Indicates the requested operation would disable or delete the last
+// remaining administration account. This is not allowed to prevent
+// creating a situation in which the system cannot be administrated.
+//
+#define STATUS_LAST_ADMIN ((NTSTATUS)0xC0000069L)
+
+//
+// MessageId: STATUS_WRONG_PASSWORD
+//
+// MessageText:
+//
+// When trying to update a password, this return status indicates that
+// the value provided as the current password is not correct.
+//
+#define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006AL) // ntsubauth
+
+//
+// MessageId: STATUS_ILL_FORMED_PASSWORD
+//
+// MessageText:
+//
+// When trying to update a password, this return status indicates that
+// the value provided for the new password contains values that are
+// not allowed in passwords.
+//
+#define STATUS_ILL_FORMED_PASSWORD ((NTSTATUS)0xC000006BL)
+
+//
+// MessageId: STATUS_PASSWORD_RESTRICTION
+//
+// MessageText:
+//
+// When trying to update a password, this status indicates that some
+// password update rule has been violated. For example, the password
+// may not meet length criteria.
+//
+#define STATUS_PASSWORD_RESTRICTION ((NTSTATUS)0xC000006CL) // ntsubauth
+
+//
+// MessageId: STATUS_LOGON_FAILURE
+//
+// MessageText:
+//
+// The attempted logon is invalid. This is either due to a bad username
+// or authentication information.
+//
+#define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006DL) // ntsubauth
+
+//
+// MessageId: STATUS_ACCOUNT_RESTRICTION
+//
+// MessageText:
+//
+// Indicates a referenced user name and authentication information are
+// valid, but some user account restriction has prevented successful
+// authentication (such as time-of-day restrictions).
+//
+#define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006EL) // ntsubauth
+
+//
+// MessageId: STATUS_INVALID_LOGON_HOURS
+//
+// MessageText:
+//
+// The user account has time restrictions and may not be logged onto
+// at this time.
+//
+#define STATUS_INVALID_LOGON_HOURS ((NTSTATUS)0xC000006FL) // ntsubauth
+
+//
+// MessageId: STATUS_INVALID_WORKSTATION
+//
+// MessageText:
+//
+// The user account is restricted such that it may not be used to
+// log on from the source workstation.
+//
+#define STATUS_INVALID_WORKSTATION ((NTSTATUS)0xC0000070L) // ntsubauth
+
+//
+// MessageId: STATUS_PASSWORD_EXPIRED
+//
+// MessageText:
+//
+// The user account's password has expired.
+//
+#define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071L) // ntsubauth
+
+//
+// MessageId: STATUS_ACCOUNT_DISABLED
+//
+// MessageText:
+//
+// The referenced account is currently disabled and may not be logged on to.
+//
+#define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072L) // ntsubauth
+
+//
+// MessageId: STATUS_NONE_MAPPED
+//
+// MessageText:
+//
+// None of the information to be translated has been translated.
+//
+#define STATUS_NONE_MAPPED ((NTSTATUS)0xC0000073L)
+
+//
+// MessageId: STATUS_TOO_MANY_LUIDS_REQUESTED
+//
+// MessageText:
+//
+// The number of LUIDs requested may not be allocated with a single
+// allocation.
+//
+#define STATUS_TOO_MANY_LUIDS_REQUESTED ((NTSTATUS)0xC0000074L)
+
+//
+// MessageId: STATUS_LUIDS_EXHAUSTED
+//
+// MessageText:
+//
+// Indicates there are no more LUIDs to allocate.
+//
+#define STATUS_LUIDS_EXHAUSTED ((NTSTATUS)0xC0000075L)
+
+//
+// MessageId: STATUS_INVALID_SUB_AUTHORITY
+//
+// MessageText:
+//
+// Indicates the sub-authority value is invalid for the particular use.
+//
+#define STATUS_INVALID_SUB_AUTHORITY ((NTSTATUS)0xC0000076L)
+
+//
+// MessageId: STATUS_INVALID_ACL
+//
+// MessageText:
+//
+// Indicates the ACL structure is not valid.
+//
+#define STATUS_INVALID_ACL ((NTSTATUS)0xC0000077L)
+
+//
+// MessageId: STATUS_INVALID_SID
+//
+// MessageText:
+//
+// Indicates the SID structure is not valid.
+//
+#define STATUS_INVALID_SID ((NTSTATUS)0xC0000078L)
+
+//
+// MessageId: STATUS_INVALID_SECURITY_DESCR
+//
+// MessageText:
+//
+// Indicates the SECURITY_DESCRIPTOR structure is not valid.
+//
+#define STATUS_INVALID_SECURITY_DESCR ((NTSTATUS)0xC0000079L)
+
+//
+// MessageId: STATUS_PROCEDURE_NOT_FOUND
+//
+// MessageText:
+//
+// Indicates the specified procedure address cannot be found in the
+// DLL.
+//
+#define STATUS_PROCEDURE_NOT_FOUND ((NTSTATUS)0xC000007AL)
+
+//
+// MessageId: STATUS_INVALID_IMAGE_FORMAT
+//
+// MessageText:
+//
+// {Bad Image}
+// The application or DLL %s is not a valid Windows NT image.
+// Please check this against your installation diskette.
+//
+#define STATUS_INVALID_IMAGE_FORMAT ((NTSTATUS)0xC000007BL)
+
+//
+// MessageId: STATUS_NO_TOKEN
+//
+// MessageText:
+//
+// An attempt was made to reference a token that doesn't exist.
+// This is typically done by referencing the token associated with a thread
+// when the thread is not impersonating a client.
+//
+#define STATUS_NO_TOKEN ((NTSTATUS)0xC000007CL)
+
+//
+// MessageId: STATUS_BAD_INHERITANCE_ACL
+//
+// MessageText:
+//
+// Indicates that an attempt to build either an inherited ACL or ACE
+// was not successful.
+// This can be caused by a number of things. One of the more probable
+// causes is the replacement of a CreatorId with an SID that didn't fit
+// into the ACE or ACL.
+//
+#define STATUS_BAD_INHERITANCE_ACL ((NTSTATUS)0xC000007DL)
+
+//
+// MessageId: STATUS_RANGE_NOT_LOCKED
+//
+// MessageText:
+//
+// The range specified in NtUnlockFile was not locked.
+//
+#define STATUS_RANGE_NOT_LOCKED ((NTSTATUS)0xC000007EL)
+
+//
+// MessageId: STATUS_DISK_FULL
+//
+// MessageText:
+//
+// An operation failed because the disk was full.
+//
+#define STATUS_DISK_FULL ((NTSTATUS)0xC000007FL)
+
+//
+// MessageId: STATUS_SERVER_DISABLED
+//
+// MessageText:
+//
+// The GUID allocation server is [already] disabled at the moment.
+//
+#define STATUS_SERVER_DISABLED ((NTSTATUS)0xC0000080L)
+
+//
+// MessageId: STATUS_SERVER_NOT_DISABLED
+//
+// MessageText:
+//
+// The GUID allocation server is [already] enabled at the moment.
+//
+#define STATUS_SERVER_NOT_DISABLED ((NTSTATUS)0xC0000081L)
+
+//
+// MessageId: STATUS_TOO_MANY_GUIDS_REQUESTED
+//
+// MessageText:
+//
+// Too many GUIDs were requested from the allocation server at once.
+//
+#define STATUS_TOO_MANY_GUIDS_REQUESTED ((NTSTATUS)0xC0000082L)
+
+//
+// MessageId: STATUS_GUIDS_EXHAUSTED
+//
+// MessageText:
+//
+// The GUIDs could not be allocated because the Authority Agent was
+// exhausted.
+//
+#define STATUS_GUIDS_EXHAUSTED ((NTSTATUS)0xC0000083L)
+
+//
+// MessageId: STATUS_INVALID_ID_AUTHORITY
+//
+// MessageText:
+//
+// The value provided was an invalid value for an identifier authority.
+//
+#define STATUS_INVALID_ID_AUTHORITY ((NTSTATUS)0xC0000084L)
+
+//
+// MessageId: STATUS_AGENTS_EXHAUSTED
+//
+// MessageText:
+//
+// There are no more authority agent values available for the given
+// identifier authority value.
+//
+#define STATUS_AGENTS_EXHAUSTED ((NTSTATUS)0xC0000085L)
+
+//
+// MessageId: STATUS_INVALID_VOLUME_LABEL
+//
+// MessageText:
+//
+// An invalid volume label has been specified.
+//
+#define STATUS_INVALID_VOLUME_LABEL ((NTSTATUS)0xC0000086L)
+
+//
+// MessageId: STATUS_SECTION_NOT_EXTENDED
+//
+// MessageText:
+//
+// A mapped section could not be extended.
+//
+#define STATUS_SECTION_NOT_EXTENDED ((NTSTATUS)0xC0000087L)
+
+//
+// MessageId: STATUS_NOT_MAPPED_DATA
+//
+// MessageText:
+//
+// Specified section to flush does not map a data file.
+//
+#define STATUS_NOT_MAPPED_DATA ((NTSTATUS)0xC0000088L)
+
+//
+// MessageId: STATUS_RESOURCE_DATA_NOT_FOUND
+//
+// MessageText:
+//
+// Indicates the specified image file did not contain a resource
+// section.
+//
+#define STATUS_RESOURCE_DATA_NOT_FOUND ((NTSTATUS)0xC0000089L)
+
+//
+// MessageId: STATUS_RESOURCE_TYPE_NOT_FOUND
+//
+// MessageText:
+//
+// Indicates the specified resource type cannot be found in the
+// image file.
+//
+#define STATUS_RESOURCE_TYPE_NOT_FOUND ((NTSTATUS)0xC000008AL)
+
+//
+// MessageId: STATUS_RESOURCE_NAME_NOT_FOUND
+//
+// MessageText:
+//
+// Indicates the specified resource name cannot be found in the
+// image file.
+//
+#define STATUS_RESOURCE_NAME_NOT_FOUND ((NTSTATUS)0xC000008BL)
+
+//
+// MessageId: STATUS_ARRAY_BOUNDS_EXCEEDED
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Array bounds exceeded.
+//
+#define STATUS_ARRAY_BOUNDS_EXCEEDED ((NTSTATUS)0xC000008CL) // winnt
+
+//
+// MessageId: STATUS_FLOAT_DENORMAL_OPERAND
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Floating-point denormal operand.
+//
+#define STATUS_FLOAT_DENORMAL_OPERAND ((NTSTATUS)0xC000008DL) // winnt
+
+//
+// MessageId: STATUS_FLOAT_DIVIDE_BY_ZERO
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Floating-point division by zero.
+//
+#define STATUS_FLOAT_DIVIDE_BY_ZERO ((NTSTATUS)0xC000008EL) // winnt
+
+//
+// MessageId: STATUS_FLOAT_INEXACT_RESULT
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Floating-point inexact result.
+//
+#define STATUS_FLOAT_INEXACT_RESULT ((NTSTATUS)0xC000008FL) // winnt
+
+//
+// MessageId: STATUS_FLOAT_INVALID_OPERATION
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Floating-point invalid operation.
+//
+#define STATUS_FLOAT_INVALID_OPERATION ((NTSTATUS)0xC0000090L) // winnt
+
+//
+// MessageId: STATUS_FLOAT_OVERFLOW
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Floating-point overflow.
+//
+#define STATUS_FLOAT_OVERFLOW ((NTSTATUS)0xC0000091L) // winnt
+
+//
+// MessageId: STATUS_FLOAT_STACK_CHECK
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Floating-point stack check.
+//
+#define STATUS_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000092L) // winnt
+
+//
+// MessageId: STATUS_FLOAT_UNDERFLOW
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Floating-point underflow.
+//
+#define STATUS_FLOAT_UNDERFLOW ((NTSTATUS)0xC0000093L) // winnt
+
+//
+// MessageId: STATUS_INTEGER_DIVIDE_BY_ZERO
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Integer division by zero.
+//
+#define STATUS_INTEGER_DIVIDE_BY_ZERO ((NTSTATUS)0xC0000094L) // winnt
+
+//
+// MessageId: STATUS_INTEGER_OVERFLOW
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Integer overflow.
+//
+#define STATUS_INTEGER_OVERFLOW ((NTSTATUS)0xC0000095L) // winnt
+
+//
+// MessageId: STATUS_PRIVILEGED_INSTRUCTION
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Privileged instruction.
+//
+#define STATUS_PRIVILEGED_INSTRUCTION ((NTSTATUS)0xC0000096L) // winnt
+
+//
+// MessageId: STATUS_TOO_MANY_PAGING_FILES
+//
+// MessageText:
+//
+// An attempt was made to install more paging files than the
+// system supports.
+//
+#define STATUS_TOO_MANY_PAGING_FILES ((NTSTATUS)0xC0000097L)
+
+//
+// MessageId: STATUS_FILE_INVALID
+//
+// MessageText:
+//
+// The volume for a file has been externally altered such that the
+// opened file is no longer valid.
+//
+#define STATUS_FILE_INVALID ((NTSTATUS)0xC0000098L)
+
+//
+// MessageId: STATUS_ALLOTTED_SPACE_EXCEEDED
+//
+// MessageText:
+//
+// When a block of memory is allotted for future updates, such as the memory
+// allocated to hold discretionary access control and primary group information,
+// successive updates may exceed the amount of memory originally allotted.
+// Since quota may already have been charged to several processes which have
+// handles to the object, it is not reasonable to alter the size of the
+// allocated memory. Instead, a request that requires more memory than has
+// been allotted must fail and the STATUS_ALLOTED_SPACE_EXCEEDED error returned.
+//
+#define STATUS_ALLOTTED_SPACE_EXCEEDED ((NTSTATUS)0xC0000099L)
+
+//
+// MessageId: STATUS_INSUFFICIENT_RESOURCES
+//
+// MessageText:
+//
+// Insufficient system resources exist to complete the API.
+//
+#define STATUS_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC000009AL) // ntsubauth
+
+//
+// MessageId: STATUS_DFS_EXIT_PATH_FOUND
+//
+// MessageText:
+//
+// An attempt has been made to open a DFS exit path control file.
+//
+#define STATUS_DFS_EXIT_PATH_FOUND ((NTSTATUS)0xC000009BL)
+
+//
+// MessageId: STATUS_DEVICE_DATA_ERROR
+//
+// MessageText:
+//
+// STATUS_DEVICE_DATA_ERROR
+//
+#define STATUS_DEVICE_DATA_ERROR ((NTSTATUS)0xC000009CL)
+
+//
+// MessageId: STATUS_DEVICE_NOT_CONNECTED
+//
+// MessageText:
+//
+// STATUS_DEVICE_NOT_CONNECTED
+//
+#define STATUS_DEVICE_NOT_CONNECTED ((NTSTATUS)0xC000009DL)
+
+//
+// MessageId: STATUS_DEVICE_POWER_FAILURE
+//
+// MessageText:
+//
+// STATUS_DEVICE_POWER_FAILURE
+//
+#define STATUS_DEVICE_POWER_FAILURE ((NTSTATUS)0xC000009EL)
+
+//
+// MessageId: STATUS_FREE_VM_NOT_AT_BASE
+//
+// MessageText:
+//
+// Virtual memory cannot be freed as base address is not the base
+// of the region and a region size of zero was specified.
+//
+#define STATUS_FREE_VM_NOT_AT_BASE ((NTSTATUS)0xC000009FL)
+
+//
+// MessageId: STATUS_MEMORY_NOT_ALLOCATED
+//
+// MessageText:
+//
+// An attempt was made to free virtual memory which is not allocated.
+//
+#define STATUS_MEMORY_NOT_ALLOCATED ((NTSTATUS)0xC00000A0L)
+
+//
+// MessageId: STATUS_WORKING_SET_QUOTA
+//
+// MessageText:
+//
+// The working set is not big enough to allow the requested pages to be
+// locked.
+//
+#define STATUS_WORKING_SET_QUOTA ((NTSTATUS)0xC00000A1L)
+
+//
+// MessageId: STATUS_MEDIA_WRITE_PROTECTED
+//
+// MessageText:
+//
+// {Write Protect Error}
+// The disk cannot be written to because it is write protected.
+// Please remove the write protection from the volume %s in drive %s.
+//
+#define STATUS_MEDIA_WRITE_PROTECTED ((NTSTATUS)0xC00000A2L)
+
+//
+// MessageId: STATUS_DEVICE_NOT_READY
+//
+// MessageText:
+//
+// {Drive Not Ready}
+// The drive is not ready for use; its door may be open.
+// Please check drive %s and make sure that a disk is inserted
+// and that the drive door is closed.
+//
+#define STATUS_DEVICE_NOT_READY ((NTSTATUS)0xC00000A3L)
+
+//
+// MessageId: STATUS_INVALID_GROUP_ATTRIBUTES
+//
+// MessageText:
+//
+// The specified attributes are invalid, or incompatible with the
+// attributes for the group as a whole.
+//
+#define STATUS_INVALID_GROUP_ATTRIBUTES ((NTSTATUS)0xC00000A4L)
+
+//
+// MessageId: STATUS_BAD_IMPERSONATION_LEVEL
+//
+// MessageText:
+//
+// A specified impersonation level is invalid.
+// Also used to indicate a required impersonation level was not provided.
+//
+#define STATUS_BAD_IMPERSONATION_LEVEL ((NTSTATUS)0xC00000A5L)
+
+//
+// MessageId: STATUS_CANT_OPEN_ANONYMOUS
+//
+// MessageText:
+//
+// An attempt was made to open an Anonymous level token.
+// Anonymous tokens may not be opened.
+//
+#define STATUS_CANT_OPEN_ANONYMOUS ((NTSTATUS)0xC00000A6L)
+
+//
+// MessageId: STATUS_BAD_VALIDATION_CLASS
+//
+// MessageText:
+//
+// The validation information class requested was invalid.
+//
+#define STATUS_BAD_VALIDATION_CLASS ((NTSTATUS)0xC00000A7L)
+
+//
+// MessageId: STATUS_BAD_TOKEN_TYPE
+//
+// MessageText:
+//
+// The type of a token object is inappropriate for its attempted use.
+//
+#define STATUS_BAD_TOKEN_TYPE ((NTSTATUS)0xC00000A8L)
+
+//
+// MessageId: STATUS_BAD_MASTER_BOOT_RECORD
+//
+// MessageText:
+//
+// The type of a token object is inappropriate for its attempted use.
+//
+#define STATUS_BAD_MASTER_BOOT_RECORD ((NTSTATUS)0xC00000A9L)
+
+//
+// MessageId: STATUS_INSTRUCTION_MISALIGNMENT
+//
+// MessageText:
+//
+// An attempt was made to execute an instruction at an unaligned address
+// and the host system does not support unaligned instruction references.
+//
+#define STATUS_INSTRUCTION_MISALIGNMENT ((NTSTATUS)0xC00000AAL)
+
+//
+// MessageId: STATUS_INSTANCE_NOT_AVAILABLE
+//
+// MessageText:
+//
+// The maximum named pipe instance count has been reached.
+//
+#define STATUS_INSTANCE_NOT_AVAILABLE ((NTSTATUS)0xC00000ABL)
+
+//
+// MessageId: STATUS_PIPE_NOT_AVAILABLE
+//
+// MessageText:
+//
+// An instance of a named pipe cannot be found in the listening state.
+//
+#define STATUS_PIPE_NOT_AVAILABLE ((NTSTATUS)0xC00000ACL)
+
+//
+// MessageId: STATUS_INVALID_PIPE_STATE
+//
+// MessageText:
+//
+// The named pipe is not in the connected or closing state.
+//
+#define STATUS_INVALID_PIPE_STATE ((NTSTATUS)0xC00000ADL)
+
+//
+// MessageId: STATUS_PIPE_BUSY
+//
+// MessageText:
+//
+// The specified pipe is set to complete operations and there are current
+// I/O operations queued so it cannot be changed to queue operations.
+//
+#define STATUS_PIPE_BUSY ((NTSTATUS)0xC00000AEL)
+
+//
+// MessageId: STATUS_ILLEGAL_FUNCTION
+//
+// MessageText:
+//
+// The specified handle is not open to the server end of the named pipe.
+//
+#define STATUS_ILLEGAL_FUNCTION ((NTSTATUS)0xC00000AFL)
+
+//
+// MessageId: STATUS_PIPE_DISCONNECTED
+//
+// MessageText:
+//
+// The specified named pipe is in the disconnected state.
+//
+#define STATUS_PIPE_DISCONNECTED ((NTSTATUS)0xC00000B0L)
+
+//
+// MessageId: STATUS_PIPE_CLOSING
+//
+// MessageText:
+//
+// The specified named pipe is in the closing state.
+//
+#define STATUS_PIPE_CLOSING ((NTSTATUS)0xC00000B1L)
+
+//
+// MessageId: STATUS_PIPE_CONNECTED
+//
+// MessageText:
+//
+// The specified named pipe is in the connected state.
+//
+#define STATUS_PIPE_CONNECTED ((NTSTATUS)0xC00000B2L)
+
+//
+// MessageId: STATUS_PIPE_LISTENING
+//
+// MessageText:
+//
+// The specified named pipe is in the listening state.
+//
+#define STATUS_PIPE_LISTENING ((NTSTATUS)0xC00000B3L)
+
+//
+// MessageId: STATUS_INVALID_READ_MODE
+//
+// MessageText:
+//
+// The specified named pipe is not in message mode.
+//
+#define STATUS_INVALID_READ_MODE ((NTSTATUS)0xC00000B4L)
+
+//
+// MessageId: STATUS_IO_TIMEOUT
+//
+// MessageText:
+//
+// {Device Timeout}
+// The specified I/O operation on %s was not completed before the time-out
+// period expired.
+//
+#define STATUS_IO_TIMEOUT ((NTSTATUS)0xC00000B5L)
+
+//
+// MessageId: STATUS_FILE_FORCED_CLOSED
+//
+// MessageText:
+//
+// The specified file has been closed by another process.
+//
+#define STATUS_FILE_FORCED_CLOSED ((NTSTATUS)0xC00000B6L)
+
+//
+// MessageId: STATUS_PROFILING_NOT_STARTED
+//
+// MessageText:
+//
+// Profiling not started.
+//
+#define STATUS_PROFILING_NOT_STARTED ((NTSTATUS)0xC00000B7L)
+
+//
+// MessageId: STATUS_PROFILING_NOT_STOPPED
+//
+// MessageText:
+//
+// Profiling not stopped.
+//
+#define STATUS_PROFILING_NOT_STOPPED ((NTSTATUS)0xC00000B8L)
+
+//
+// MessageId: STATUS_COULD_NOT_INTERPRET
+//
+// MessageText:
+//
+// The passed ACL did not contain the minimum required information.
+//
+#define STATUS_COULD_NOT_INTERPRET ((NTSTATUS)0xC00000B9L)
+
+//
+// MessageId: STATUS_FILE_IS_A_DIRECTORY
+//
+// MessageText:
+//
+// The file that was specified as a target is a directory and the caller
+// specified that it could be anything but a directory.
+//
+#define STATUS_FILE_IS_A_DIRECTORY ((NTSTATUS)0xC00000BAL)
+
+//
+// Network specific errors.
+//
+//
+//
+// MessageId: STATUS_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The network request is not supported.
+//
+#define STATUS_NOT_SUPPORTED ((NTSTATUS)0xC00000BBL)
+
+//
+// MessageId: STATUS_REMOTE_NOT_LISTENING
+//
+// MessageText:
+//
+// This remote computer is not listening.
+//
+#define STATUS_REMOTE_NOT_LISTENING ((NTSTATUS)0xC00000BCL)
+
+//
+// MessageId: STATUS_DUPLICATE_NAME
+//
+// MessageText:
+//
+// A duplicate name exists on the network.
+//
+#define STATUS_DUPLICATE_NAME ((NTSTATUS)0xC00000BDL)
+
+//
+// MessageId: STATUS_BAD_NETWORK_PATH
+//
+// MessageText:
+//
+// The network path cannot be located.
+//
+#define STATUS_BAD_NETWORK_PATH ((NTSTATUS)0xC00000BEL)
+
+//
+// MessageId: STATUS_NETWORK_BUSY
+//
+// MessageText:
+//
+// The network is busy.
+//
+#define STATUS_NETWORK_BUSY ((NTSTATUS)0xC00000BFL)
+
+//
+// MessageId: STATUS_DEVICE_DOES_NOT_EXIST
+//
+// MessageText:
+//
+// This device does not exist.
+//
+#define STATUS_DEVICE_DOES_NOT_EXIST ((NTSTATUS)0xC00000C0L)
+
+//
+// MessageId: STATUS_TOO_MANY_COMMANDS
+//
+// MessageText:
+//
+// The network BIOS command limit has been reached.
+//
+#define STATUS_TOO_MANY_COMMANDS ((NTSTATUS)0xC00000C1L)
+
+//
+// MessageId: STATUS_ADAPTER_HARDWARE_ERROR
+//
+// MessageText:
+//
+// An I/O adapter hardware error has occurred.
+//
+#define STATUS_ADAPTER_HARDWARE_ERROR ((NTSTATUS)0xC00000C2L)
+
+//
+// MessageId: STATUS_INVALID_NETWORK_RESPONSE
+//
+// MessageText:
+//
+// The network responded incorrectly.
+//
+#define STATUS_INVALID_NETWORK_RESPONSE ((NTSTATUS)0xC00000C3L)
+
+//
+// MessageId: STATUS_UNEXPECTED_NETWORK_ERROR
+//
+// MessageText:
+//
+// An unexpected network error occurred.
+//
+#define STATUS_UNEXPECTED_NETWORK_ERROR ((NTSTATUS)0xC00000C4L)
+
+//
+// MessageId: STATUS_BAD_REMOTE_ADAPTER
+//
+// MessageText:
+//
+// The remote adapter is not compatible.
+//
+#define STATUS_BAD_REMOTE_ADAPTER ((NTSTATUS)0xC00000C5L)
+
+//
+// MessageId: STATUS_PRINT_QUEUE_FULL
+//
+// MessageText:
+//
+// The printer queue is full.
+//
+#define STATUS_PRINT_QUEUE_FULL ((NTSTATUS)0xC00000C6L)
+
+//
+// MessageId: STATUS_NO_SPOOL_SPACE
+//
+// MessageText:
+//
+// Space to store the file waiting to be printed is not available on the server.
+//
+#define STATUS_NO_SPOOL_SPACE ((NTSTATUS)0xC00000C7L)
+
+//
+// MessageId: STATUS_PRINT_CANCELLED
+//
+// MessageText:
+//
+// The requested print file has been canceled.
+//
+#define STATUS_PRINT_CANCELLED ((NTSTATUS)0xC00000C8L)
+
+//
+// MessageId: STATUS_NETWORK_NAME_DELETED
+//
+// MessageText:
+//
+// The network name was deleted.
+//
+#define STATUS_NETWORK_NAME_DELETED ((NTSTATUS)0xC00000C9L)
+
+//
+// MessageId: STATUS_NETWORK_ACCESS_DENIED
+//
+// MessageText:
+//
+// Network access is denied.
+//
+#define STATUS_NETWORK_ACCESS_DENIED ((NTSTATUS)0xC00000CAL)
+
+//
+// MessageId: STATUS_BAD_DEVICE_TYPE
+//
+// MessageText:
+//
+// {Incorrect Network Resource Type}
+// The specified device type (LPT, for example) conflicts with the actual
+// device type on the remote resource.
+//
+#define STATUS_BAD_DEVICE_TYPE ((NTSTATUS)0xC00000CBL)
+
+//
+// MessageId: STATUS_BAD_NETWORK_NAME
+//
+// MessageText:
+//
+// {Network Name Not Found}
+// The specified share name cannot be found on the remote server.
+//
+#define STATUS_BAD_NETWORK_NAME ((NTSTATUS)0xC00000CCL)
+
+//
+// MessageId: STATUS_TOO_MANY_NAMES
+//
+// MessageText:
+//
+// The name limit for the local computer network adapter card was exceeded.
+//
+#define STATUS_TOO_MANY_NAMES ((NTSTATUS)0xC00000CDL)
+
+//
+// MessageId: STATUS_TOO_MANY_SESSIONS
+//
+// MessageText:
+//
+// The network BIOS session limit was exceeded.
+//
+#define STATUS_TOO_MANY_SESSIONS ((NTSTATUS)0xC00000CEL)
+
+//
+// MessageId: STATUS_SHARING_PAUSED
+//
+// MessageText:
+//
+// File sharing has been temporarily paused.
+//
+#define STATUS_SHARING_PAUSED ((NTSTATUS)0xC00000CFL)
+
+//
+// MessageId: STATUS_REQUEST_NOT_ACCEPTED
+//
+// MessageText:
+//
+// No more connections can be made to this remote computer at this time
+// because there are already as many connections as the computer can accept.
+//
+#define STATUS_REQUEST_NOT_ACCEPTED ((NTSTATUS)0xC00000D0L)
+
+//
+// MessageId: STATUS_REDIRECTOR_PAUSED
+//
+// MessageText:
+//
+// Print or disk redirection is temporarily paused.
+//
+#define STATUS_REDIRECTOR_PAUSED ((NTSTATUS)0xC00000D1L)
+
+//
+// MessageId: STATUS_NET_WRITE_FAULT
+//
+// MessageText:
+//
+// A network data fault occurred.
+//
+#define STATUS_NET_WRITE_FAULT ((NTSTATUS)0xC00000D2L)
+
+//
+// MessageId: STATUS_PROFILING_AT_LIMIT
+//
+// MessageText:
+//
+// The number of active profiling objects is at the maximum and no more may be started.
+//
+#define STATUS_PROFILING_AT_LIMIT ((NTSTATUS)0xC00000D3L)
+
+//
+// MessageId: STATUS_NOT_SAME_DEVICE
+//
+// MessageText:
+//
+// {Incorrect Volume}
+// The target file of a rename request is located on a different device
+// than the source of the rename request.
+//
+#define STATUS_NOT_SAME_DEVICE ((NTSTATUS)0xC00000D4L)
+
+//
+// MessageId: STATUS_FILE_RENAMED
+//
+// MessageText:
+//
+// The file specified has been renamed and thus cannot be modified.
+//
+#define STATUS_FILE_RENAMED ((NTSTATUS)0xC00000D5L)
+
+//
+// MessageId: STATUS_VIRTUAL_CIRCUIT_CLOSED
+//
+// MessageText:
+//
+// {Network Request Timeout}
+// The session with a remote server has been disconnected because the time-out
+// interval for a request has expired.
+//
+#define STATUS_VIRTUAL_CIRCUIT_CLOSED ((NTSTATUS)0xC00000D6L)
+
+//
+// MessageId: STATUS_NO_SECURITY_ON_OBJECT
+//
+// MessageText:
+//
+// Indicates an attempt was made to operate on the security of
+// an object that does not have security associated with it.
+//
+#define STATUS_NO_SECURITY_ON_OBJECT ((NTSTATUS)0xC00000D7L)
+
+//
+// MessageId: STATUS_CANT_WAIT
+//
+// MessageText:
+//
+// Used to indicate that an operation cannot continue without blocking
+// for I/O.
+//
+#define STATUS_CANT_WAIT ((NTSTATUS)0xC00000D8L)
+
+//
+// MessageId: STATUS_PIPE_EMPTY
+//
+// MessageText:
+//
+// Used to indicate that a read operation was done on an empty pipe.
+//
+#define STATUS_PIPE_EMPTY ((NTSTATUS)0xC00000D9L)
+
+//
+// MessageId: STATUS_CANT_ACCESS_DOMAIN_INFO
+//
+// MessageText:
+//
+// Indicates a Windows NT Server could not be contacted or that
+// objects within the domain are protected such that necessary
+// information could not be retrieved.
+//
+#define STATUS_CANT_ACCESS_DOMAIN_INFO ((NTSTATUS)0xC00000DAL)
+
+//
+// MessageId: STATUS_CANT_TERMINATE_SELF
+//
+// MessageText:
+//
+// Indicates that a thread attempted to terminate itself by default
+// (called NtTerminateThread with NULL) and it was the last thread
+// in the current process.
+//
+#define STATUS_CANT_TERMINATE_SELF ((NTSTATUS)0xC00000DBL)
+
+//
+// MessageId: STATUS_INVALID_SERVER_STATE
+//
+// MessageText:
+//
+// Indicates the Sam Server was in the wrong state to
+// perform the desired operation.
+//
+#define STATUS_INVALID_SERVER_STATE ((NTSTATUS)0xC00000DCL)
+
+//
+// MessageId: STATUS_INVALID_DOMAIN_STATE
+//
+// MessageText:
+//
+// Indicates the Domain was in the wrong state to
+// perform the desired operation.
+//
+#define STATUS_INVALID_DOMAIN_STATE ((NTSTATUS)0xC00000DDL)
+
+//
+// MessageId: STATUS_INVALID_DOMAIN_ROLE
+//
+// MessageText:
+//
+// This operation is only allowed for the Primary Domain Controller of the domain.
+//
+#define STATUS_INVALID_DOMAIN_ROLE ((NTSTATUS)0xC00000DEL)
+
+//
+// MessageId: STATUS_NO_SUCH_DOMAIN
+//
+// MessageText:
+//
+// The specified Domain did not exist.
+//
+#define STATUS_NO_SUCH_DOMAIN ((NTSTATUS)0xC00000DFL)
+
+//
+// MessageId: STATUS_DOMAIN_EXISTS
+//
+// MessageText:
+//
+// The specified Domain already exists.
+//
+#define STATUS_DOMAIN_EXISTS ((NTSTATUS)0xC00000E0L)
+
+//
+// MessageId: STATUS_DOMAIN_LIMIT_EXCEEDED
+//
+// MessageText:
+//
+// An attempt was made to exceed the limit on the number of domains per server
+// for this release.
+//
+#define STATUS_DOMAIN_LIMIT_EXCEEDED ((NTSTATUS)0xC00000E1L)
+
+//
+// MessageId: STATUS_OPLOCK_NOT_GRANTED
+//
+// MessageText:
+//
+// Error status returned when oplock request is denied.
+//
+#define STATUS_OPLOCK_NOT_GRANTED ((NTSTATUS)0xC00000E2L)
+
+//
+// MessageId: STATUS_INVALID_OPLOCK_PROTOCOL
+//
+// MessageText:
+//
+// Error status returned when an invalid oplock acknowledgment
+// is received by a file system.
+//
+#define STATUS_INVALID_OPLOCK_PROTOCOL ((NTSTATUS)0xC00000E3L)
+
+//
+// MessageId: STATUS_INTERNAL_DB_CORRUPTION
+//
+// MessageText:
+//
+// This error indicates that the requested operation cannot be
+// completed due to a catastrophic media failure or on-disk data
+// structure corruption.
+//
+#define STATUS_INTERNAL_DB_CORRUPTION ((NTSTATUS)0xC00000E4L)
+
+//
+// MessageId: STATUS_INTERNAL_ERROR
+//
+// MessageText:
+//
+// This error indicates that the SAM server has encountered an
+// internal consistency error in its database. This catastrophic
+// failure will prevent further operation of SAM.
+//
+#define STATUS_INTERNAL_ERROR ((NTSTATUS)0xC00000E5L)
+
+//
+// MessageId: STATUS_GENERIC_NOT_MAPPED
+//
+// MessageText:
+//
+// Indicates generic access types were contained in an access mask
+// which should already be mapped to non-generic access types.
+//
+#define STATUS_GENERIC_NOT_MAPPED ((NTSTATUS)0xC00000E6L)
+
+//
+// MessageId: STATUS_BAD_DESCRIPTOR_FORMAT
+//
+// MessageText:
+//
+// Indicates a security descriptor is not in the necessary format (absolute
+// or self-relative).
+//
+#define STATUS_BAD_DESCRIPTOR_FORMAT ((NTSTATUS)0xC00000E7L)
+
+//
+// Status codes raised by the Cache Manager which must be considered as
+// "expected" by its callers.
+//
+//
+// MessageId: STATUS_INVALID_USER_BUFFER
+//
+// MessageText:
+//
+// An access to a user buffer failed at an "expected" point in time.
+// This code is defined since the caller does not want to accept
+// STATUS_ACCESS_VIOLATION in its filter.
+//
+#define STATUS_INVALID_USER_BUFFER ((NTSTATUS)0xC00000E8L)
+
+//
+// MessageId: STATUS_UNEXPECTED_IO_ERROR
+//
+// MessageText:
+//
+// If an I/O error is returned which is not defined in the standard FsRtl filter,
+// it is converted to the following error which is guaranteed to be in the
+// filter. In this case information is lost, however, the filter correctly
+// handles the exception.
+//
+#define STATUS_UNEXPECTED_IO_ERROR ((NTSTATUS)0xC00000E9L)
+
+//
+// MessageId: STATUS_UNEXPECTED_MM_CREATE_ERR
+//
+// MessageText:
+//
+// If an MM error is returned which is not defined in the standard FsRtl filter,
+// it is converted to one of the following errors which is guaranteed to be in the
+// filter. In this case information is lost, however, the filter correctly
+// handles the exception.
+//
+#define STATUS_UNEXPECTED_MM_CREATE_ERR ((NTSTATUS)0xC00000EAL)
+
+//
+// MessageId: STATUS_UNEXPECTED_MM_MAP_ERROR
+//
+// MessageText:
+//
+// If an MM error is returned which is not defined in the standard FsRtl filter,
+// it is converted to one of the following errors which is guaranteed to be in the
+// filter. In this case information is lost, however, the filter correctly
+// handles the exception.
+//
+#define STATUS_UNEXPECTED_MM_MAP_ERROR ((NTSTATUS)0xC00000EBL)
+
+//
+// MessageId: STATUS_UNEXPECTED_MM_EXTEND_ERR
+//
+// MessageText:
+//
+// If an MM error is returned which is not defined in the standard FsRtl filter,
+// it is converted to one of the following errors which is guaranteed to be in the
+// filter. In this case information is lost, however, the filter correctly
+// handles the exception.
+//
+#define STATUS_UNEXPECTED_MM_EXTEND_ERR ((NTSTATUS)0xC00000ECL)
+
+//
+// MessageId: STATUS_NOT_LOGON_PROCESS
+//
+// MessageText:
+//
+// The requested action is restricted for use by logon processes
+// only. The calling process has not registered as a logon process.
+//
+#define STATUS_NOT_LOGON_PROCESS ((NTSTATUS)0xC00000EDL)
+
+//
+// MessageId: STATUS_LOGON_SESSION_EXISTS
+//
+// MessageText:
+//
+// An attempt has been made to start a new session manager or
+// LSA logon session with an ID that is already in use.
+//
+#define STATUS_LOGON_SESSION_EXISTS ((NTSTATUS)0xC00000EEL)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_1
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the first argument.
+//
+#define STATUS_INVALID_PARAMETER_1 ((NTSTATUS)0xC00000EFL)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_2
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the second argument.
+//
+#define STATUS_INVALID_PARAMETER_2 ((NTSTATUS)0xC00000F0L)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_3
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the third argument.
+//
+#define STATUS_INVALID_PARAMETER_3 ((NTSTATUS)0xC00000F1L)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_4
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the fourth argument.
+//
+#define STATUS_INVALID_PARAMETER_4 ((NTSTATUS)0xC00000F2L)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_5
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the fifth argument.
+//
+#define STATUS_INVALID_PARAMETER_5 ((NTSTATUS)0xC00000F3L)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_6
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the sixth argument.
+//
+#define STATUS_INVALID_PARAMETER_6 ((NTSTATUS)0xC00000F4L)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_7
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the seventh argument.
+//
+#define STATUS_INVALID_PARAMETER_7 ((NTSTATUS)0xC00000F5L)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_8
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the eighth argument.
+//
+#define STATUS_INVALID_PARAMETER_8 ((NTSTATUS)0xC00000F6L)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_9
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the ninth argument.
+//
+#define STATUS_INVALID_PARAMETER_9 ((NTSTATUS)0xC00000F7L)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_10
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the tenth argument.
+//
+#define STATUS_INVALID_PARAMETER_10 ((NTSTATUS)0xC00000F8L)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_11
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the eleventh argument.
+//
+#define STATUS_INVALID_PARAMETER_11 ((NTSTATUS)0xC00000F9L)
+
+//
+// MessageId: STATUS_INVALID_PARAMETER_12
+//
+// MessageText:
+//
+// An invalid parameter was passed to a service or function as
+// the twelfth argument.
+//
+#define STATUS_INVALID_PARAMETER_12 ((NTSTATUS)0xC00000FAL)
+
+//
+// MessageId: STATUS_REDIRECTOR_NOT_STARTED
+//
+// MessageText:
+//
+// An attempt was made to access a network file, but the network software
+// was not yet started.
+//
+#define STATUS_REDIRECTOR_NOT_STARTED ((NTSTATUS)0xC00000FBL)
+
+//
+// MessageId: STATUS_REDIRECTOR_STARTED
+//
+// MessageText:
+//
+// An attempt was made to start the redirector, but the redirector
+// has already been started.
+//
+#define STATUS_REDIRECTOR_STARTED ((NTSTATUS)0xC00000FCL)
+
+//
+// MessageId: STATUS_STACK_OVERFLOW
+//
+// MessageText:
+//
+// A new guard page for the stack cannot be created.
+//
+#define STATUS_STACK_OVERFLOW ((NTSTATUS)0xC00000FDL) // winnt
+
+//
+// MessageId: STATUS_NO_SUCH_PACKAGE
+//
+// MessageText:
+//
+// A specified authentication package is unknown.
+//
+#define STATUS_NO_SUCH_PACKAGE ((NTSTATUS)0xC00000FEL)
+
+//
+// MessageId: STATUS_BAD_FUNCTION_TABLE
+//
+// MessageText:
+//
+// A malformed function table was encountered during an unwind operation.
+//
+#define STATUS_BAD_FUNCTION_TABLE ((NTSTATUS)0xC00000FFL)
+
+//
+// MessageId: STATUS_VARIABLE_NOT_FOUND
+//
+// MessageText:
+//
+// Indicates the specified environment variable name was not found
+// in the specified environment block.
+//
+#define STATUS_VARIABLE_NOT_FOUND ((NTSTATUS)0xC0000100L)
+
+//
+// MessageId: STATUS_DIRECTORY_NOT_EMPTY
+//
+// MessageText:
+//
+// Indicates that the directory trying to be deleted is not empty.
+//
+#define STATUS_DIRECTORY_NOT_EMPTY ((NTSTATUS)0xC0000101L)
+
+//
+// MessageId: STATUS_FILE_CORRUPT_ERROR
+//
+// MessageText:
+//
+// {Corrupt File}
+// The file or directory %s is corrupt and unreadable.
+// Please run the Chkdsk utility.
+//
+#define STATUS_FILE_CORRUPT_ERROR ((NTSTATUS)0xC0000102L)
+
+//
+// MessageId: STATUS_NOT_A_DIRECTORY
+//
+// MessageText:
+//
+// A requested opened file is not a directory.
+//
+#define STATUS_NOT_A_DIRECTORY ((NTSTATUS)0xC0000103L)
+
+//
+// MessageId: STATUS_BAD_LOGON_SESSION_STATE
+//
+// MessageText:
+//
+// The logon session is not in a state that is consistent with the
+// requested operation.
+//
+#define STATUS_BAD_LOGON_SESSION_STATE ((NTSTATUS)0xC0000104L)
+
+//
+// MessageId: STATUS_LOGON_SESSION_COLLISION
+//
+// MessageText:
+//
+// An internal LSA error has occurred. An authentication package has
+// requested the creation of a Logon Session but the ID of an already
+// existing Logon Session has been specified.
+//
+#define STATUS_LOGON_SESSION_COLLISION ((NTSTATUS)0xC0000105L)
+
+//
+// MessageId: STATUS_NAME_TOO_LONG
+//
+// MessageText:
+//
+// A specified name string is too long for its intended use.
+//
+#define STATUS_NAME_TOO_LONG ((NTSTATUS)0xC0000106L)
+
+//
+// MessageId: STATUS_FILES_OPEN
+//
+// MessageText:
+//
+// The user attempted to force close the files on a redirected
+// drive, but there were opened files on the drive, and the user
+// did not specify a sufficient level of force.
+//
+#define STATUS_FILES_OPEN ((NTSTATUS)0xC0000107L)
+
+//
+// MessageId: STATUS_CONNECTION_IN_USE
+//
+// MessageText:
+//
+// The user attempted to force close the files on a redirected
+// drive, but there were opened directories on the drive, and the user
+// did not specify a sufficient level of force.
+//
+#define STATUS_CONNECTION_IN_USE ((NTSTATUS)0xC0000108L)
+
+//
+// MessageId: STATUS_MESSAGE_NOT_FOUND
+//
+// MessageText:
+//
+// RtlFindMessage could not locate the requested message ID in the
+// message table resource.
+//
+#define STATUS_MESSAGE_NOT_FOUND ((NTSTATUS)0xC0000109L)
+
+//
+// MessageId: STATUS_PROCESS_IS_TERMINATING
+//
+// MessageText:
+//
+// An attempt was made to duplicate an object handle into or out
+// of an exiting process.
+//
+#define STATUS_PROCESS_IS_TERMINATING ((NTSTATUS)0xC000010AL)
+
+//
+// MessageId: STATUS_INVALID_LOGON_TYPE
+//
+// MessageText:
+//
+// Indicates an invalid value has been provided for the LogonType
+// requested.
+//
+#define STATUS_INVALID_LOGON_TYPE ((NTSTATUS)0xC000010BL)
+
+//
+// MessageId: STATUS_NO_GUID_TRANSLATION
+//
+// MessageText:
+//
+// Indicates that an attempt was made to assign protection to a
+// file system file or directory and one of the SIDs in the security
+// descriptor could not be translated into a GUID that could be stored
+// by the file system.
+// This causes the protection attempt to fail, which may cause a file
+// creation attempt to fail.
+//
+#define STATUS_NO_GUID_TRANSLATION ((NTSTATUS)0xC000010CL)
+
+//
+// MessageId: STATUS_CANNOT_IMPERSONATE
+//
+// MessageText:
+//
+// Indicates that an attempt has been made to impersonate via a named
+// pipe that has not yet been read from.
+//
+#define STATUS_CANNOT_IMPERSONATE ((NTSTATUS)0xC000010DL)
+
+//
+// MessageId: STATUS_IMAGE_ALREADY_LOADED
+//
+// MessageText:
+//
+// Indicates that the specified image is already loaded.
+//
+#define STATUS_IMAGE_ALREADY_LOADED ((NTSTATUS)0xC000010EL)
+
+
+//
+// ============================================================
+// NOTE: The following ABIOS error code should be reserved on
+// non ABIOS kernel. Eventually, I will remove the ifdef
+// ABIOS.
+// ============================================================
+//
+//
+// MessageId: STATUS_ABIOS_NOT_PRESENT
+//
+// MessageText:
+//
+// STATUS_ABIOS_NOT_PRESENT
+//
+#define STATUS_ABIOS_NOT_PRESENT ((NTSTATUS)0xC000010FL)
+
+//
+// MessageId: STATUS_ABIOS_LID_NOT_EXIST
+//
+// MessageText:
+//
+// STATUS_ABIOS_LID_NOT_EXIST
+//
+#define STATUS_ABIOS_LID_NOT_EXIST ((NTSTATUS)0xC0000110L)
+
+//
+// MessageId: STATUS_ABIOS_LID_ALREADY_OWNED
+//
+// MessageText:
+//
+// STATUS_ABIOS_LID_ALREADY_OWNED
+//
+#define STATUS_ABIOS_LID_ALREADY_OWNED ((NTSTATUS)0xC0000111L)
+
+//
+// MessageId: STATUS_ABIOS_NOT_LID_OWNER
+//
+// MessageText:
+//
+// STATUS_ABIOS_NOT_LID_OWNER
+//
+#define STATUS_ABIOS_NOT_LID_OWNER ((NTSTATUS)0xC0000112L)
+
+//
+// MessageId: STATUS_ABIOS_INVALID_COMMAND
+//
+// MessageText:
+//
+// STATUS_ABIOS_INVALID_COMMAND
+//
+#define STATUS_ABIOS_INVALID_COMMAND ((NTSTATUS)0xC0000113L)
+
+//
+// MessageId: STATUS_ABIOS_INVALID_LID
+//
+// MessageText:
+//
+// STATUS_ABIOS_INVALID_LID
+//
+#define STATUS_ABIOS_INVALID_LID ((NTSTATUS)0xC0000114L)
+
+//
+// MessageId: STATUS_ABIOS_SELECTOR_NOT_AVAILABLE
+//
+// MessageText:
+//
+// STATUS_ABIOS_SELECTOR_NOT_AVAILABLE
+//
+#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE ((NTSTATUS)0xC0000115L)
+
+//
+// MessageId: STATUS_ABIOS_INVALID_SELECTOR
+//
+// MessageText:
+//
+// STATUS_ABIOS_INVALID_SELECTOR
+//
+#define STATUS_ABIOS_INVALID_SELECTOR ((NTSTATUS)0xC0000116L)
+
+//
+// MessageId: STATUS_NO_LDT
+//
+// MessageText:
+//
+// Indicates that an attempt was made to change the size of the LDT for
+// a process that has no LDT.
+//
+#define STATUS_NO_LDT ((NTSTATUS)0xC0000117L)
+
+//
+// MessageId: STATUS_INVALID_LDT_SIZE
+//
+// MessageText:
+//
+// Indicates that an attempt was made to grow an LDT by setting its size,
+// or that the size was not an even number of selectors.
+//
+#define STATUS_INVALID_LDT_SIZE ((NTSTATUS)0xC0000118L)
+
+//
+// MessageId: STATUS_INVALID_LDT_OFFSET
+//
+// MessageText:
+//
+// Indicates that the starting value for the LDT information was not
+// an integral multiple of the selector size.
+//
+#define STATUS_INVALID_LDT_OFFSET ((NTSTATUS)0xC0000119L)
+
+//
+// MessageId: STATUS_INVALID_LDT_DESCRIPTOR
+//
+// MessageText:
+//
+// Indicates that the user supplied an invalid descriptor when trying
+// to set up Ldt descriptors.
+//
+#define STATUS_INVALID_LDT_DESCRIPTOR ((NTSTATUS)0xC000011AL)
+
+//
+// MessageId: STATUS_INVALID_IMAGE_NE_FORMAT
+//
+// MessageText:
+//
+// The specified image file did not have the correct format. It
+// appears to be NE format.
+//
+#define STATUS_INVALID_IMAGE_NE_FORMAT ((NTSTATUS)0xC000011BL)
+
+//
+// MessageId: STATUS_RXACT_INVALID_STATE
+//
+// MessageText:
+//
+// Indicates that the transaction state of a registry sub-tree is
+// incompatible with the requested operation.
+// For example, a request has been made to start a new transaction with
+// one already in progress, or a request has been made to apply a transaction
+// when one is not currently in progress.
+// This status value is returned by the runtime library (RTL) registry
+// transaction package (RXact).
+//
+#define STATUS_RXACT_INVALID_STATE ((NTSTATUS)0xC000011CL)
+
+//
+// MessageId: STATUS_RXACT_COMMIT_FAILURE
+//
+// MessageText:
+//
+// Indicates an error has occurred during a registry transaction commit.
+// The database has been left in an unknown, but probably inconsistent,
+// state. The state of the registry transaction is left as COMMITTING.
+// This status value is returned by the runtime library (RTL) registry
+// transaction package (RXact).
+//
+#define STATUS_RXACT_COMMIT_FAILURE ((NTSTATUS)0xC000011DL)
+
+//
+// MessageId: STATUS_MAPPED_FILE_SIZE_ZERO
+//
+// MessageText:
+//
+// An attempt was made to map a file of size zero with the
+// maximum size specified as zero.
+//
+#define STATUS_MAPPED_FILE_SIZE_ZERO ((NTSTATUS)0xC000011EL)
+
+//
+// MessageId: STATUS_TOO_MANY_OPENED_FILES
+//
+// MessageText:
+//
+// Too many files are opened on a remote server. This error should only
+// be returned by the NT redirector on a remote drive.
+//
+#define STATUS_TOO_MANY_OPENED_FILES ((NTSTATUS)0xC000011FL)
+
+//
+// MessageId: STATUS_CANCELLED
+//
+// MessageText:
+//
+// The I/O request was canceled.
+//
+#define STATUS_CANCELLED ((NTSTATUS)0xC0000120L)
+
+//
+// MessageId: STATUS_CANNOT_DELETE
+//
+// MessageText:
+//
+// An attempt has been made to remove a file or directory that cannot
+// be deleted.
+//
+#define STATUS_CANNOT_DELETE ((NTSTATUS)0xC0000121L)
+
+//
+// MessageId: STATUS_INVALID_COMPUTER_NAME
+//
+// MessageText:
+//
+// Indicates a name specified as a remote computer name is syntactically
+// invalid.
+//
+#define STATUS_INVALID_COMPUTER_NAME ((NTSTATUS)0xC0000122L)
+
+//
+// MessageId: STATUS_FILE_DELETED
+//
+// MessageText:
+//
+// An I/O request other than close was performed on a file after it has
+// been deleted, which can only happen to a request which did not complete
+// before the last handle was closed via NtClose.
+//
+#define STATUS_FILE_DELETED ((NTSTATUS)0xC0000123L)
+
+//
+// MessageId: STATUS_SPECIAL_ACCOUNT
+//
+// MessageText:
+//
+// Indicates an operation has been attempted on a built-in (special)
+// SAM account which is incompatible with built-in accounts. For
+// example, built-in accounts cannot be deleted.
+//
+#define STATUS_SPECIAL_ACCOUNT ((NTSTATUS)0xC0000124L)
+
+//
+// MessageId: STATUS_SPECIAL_GROUP
+//
+// MessageText:
+//
+// The operation requested may not be performed on the specified
+// group because it is a built-in special group.
+//
+#define STATUS_SPECIAL_GROUP ((NTSTATUS)0xC0000125L)
+
+//
+// MessageId: STATUS_SPECIAL_USER
+//
+// MessageText:
+//
+// The operation requested may not be performed on the specified
+// user because it is a built-in special user.
+//
+#define STATUS_SPECIAL_USER ((NTSTATUS)0xC0000126L)
+
+//
+// MessageId: STATUS_MEMBERS_PRIMARY_GROUP
+//
+// MessageText:
+//
+// Indicates a member cannot be removed from a group because the
+// group is currently the member's primary group.
+//
+#define STATUS_MEMBERS_PRIMARY_GROUP ((NTSTATUS)0xC0000127L)
+
+//
+// MessageId: STATUS_FILE_CLOSED
+//
+// MessageText:
+//
+// An I/O request other than close and several other special case
+// operations was attempted using a file object that had already been
+// closed.
+//
+#define STATUS_FILE_CLOSED ((NTSTATUS)0xC0000128L)
+
+//
+// MessageId: STATUS_TOO_MANY_THREADS
+//
+// MessageText:
+//
+// Indicates a process has too many threads to perform the requested
+// action. For example, assignment of a primary token may only be
+// performed when a process has zero or one threads.
+//
+#define STATUS_TOO_MANY_THREADS ((NTSTATUS)0xC0000129L)
+
+//
+// MessageId: STATUS_THREAD_NOT_IN_PROCESS
+//
+// MessageText:
+//
+// An attempt was made to operate on a thread within a specific process,
+// but the thread specified is not in the process specified.
+//
+#define STATUS_THREAD_NOT_IN_PROCESS ((NTSTATUS)0xC000012AL)
+
+//
+// MessageId: STATUS_TOKEN_ALREADY_IN_USE
+//
+// MessageText:
+//
+// An attempt was made to establish a token for use as a primary token
+// but the token is already in use. A token can only be the primary token
+// of one process at a time.
+//
+#define STATUS_TOKEN_ALREADY_IN_USE ((NTSTATUS)0xC000012BL)
+
+//
+// MessageId: STATUS_PAGEFILE_QUOTA_EXCEEDED
+//
+// MessageText:
+//
+// Page file quota was exceeded.
+//
+#define STATUS_PAGEFILE_QUOTA_EXCEEDED ((NTSTATUS)0xC000012CL)
+
+//
+// MessageId: STATUS_COMMITMENT_LIMIT
+//
+// MessageText:
+//
+// {Out of Virtual Memory}
+// Your system is running low on virtual memory. Please close some
+// applications. You can then start the System option in the Control Panel
+// and choose the Virtual Memory button to create an additional paging file
+// or to increase the size of your current paging file.
+//
+#define STATUS_COMMITMENT_LIMIT ((NTSTATUS)0xC000012DL)
+
+//
+// MessageId: STATUS_INVALID_IMAGE_LE_FORMAT
+//
+// MessageText:
+//
+// The specified image file did not have the correct format, it
+// appears to be LE format.
+//
+#define STATUS_INVALID_IMAGE_LE_FORMAT ((NTSTATUS)0xC000012EL)
+
+//
+// MessageId: STATUS_INVALID_IMAGE_NOT_MZ
+//
+// MessageText:
+//
+// The specified image file did not have the correct format, it
+// did not have an initial MZ.
+//
+#define STATUS_INVALID_IMAGE_NOT_MZ ((NTSTATUS)0xC000012FL)
+
+//
+// MessageId: STATUS_INVALID_IMAGE_PROTECT
+//
+// MessageText:
+//
+// The specified image file did not have the correct format, it
+// did not have a proper e_lfarlc in the MZ header.
+//
+#define STATUS_INVALID_IMAGE_PROTECT ((NTSTATUS)0xC0000130L)
+
+//
+// MessageId: STATUS_INVALID_IMAGE_WIN_16
+//
+// MessageText:
+//
+// The specified image file did not have the correct format, it
+// appears to be a 16-bit Windows image.
+//
+#define STATUS_INVALID_IMAGE_WIN_16 ((NTSTATUS)0xC0000131L)
+
+//
+// MessageId: STATUS_LOGON_SERVER_CONFLICT
+//
+// MessageText:
+//
+// The Netlogon service cannot start because another Netlogon service running
+// in the domain conflicts with the specified role.
+//
+#define STATUS_LOGON_SERVER_CONFLICT ((NTSTATUS)0xC0000132L)
+
+//
+// MessageId: STATUS_TIME_DIFFERENCE_AT_DC
+//
+// MessageText:
+//
+// The time at the Primary Domain Controller is different than the
+// time at the Backup Domain Controller or member server by too large
+// an amount.
+//
+#define STATUS_TIME_DIFFERENCE_AT_DC ((NTSTATUS)0xC0000133L)
+
+//
+// MessageId: STATUS_SYNCHRONIZATION_REQUIRED
+//
+// MessageText:
+//
+// The SAM database on a Windows NT Server is
+// significantly out of synchronization with the copy on the Domain
+// Controller. A complete synchronization is required.
+//
+#define STATUS_SYNCHRONIZATION_REQUIRED ((NTSTATUS)0xC0000134L)
+
+//
+// MessageId: STATUS_DLL_NOT_FOUND
+//
+// MessageText:
+//
+// {Unable To Locate DLL}
+// The dynamic link library %s could not be found in the specified path %s.
+//
+#define STATUS_DLL_NOT_FOUND ((NTSTATUS)0xC0000135L)
+
+//
+// MessageId: STATUS_OPEN_FAILED
+//
+// MessageText:
+//
+// The NtCreateFile API failed. This error should never be returned to an
+// application, it is a place holder for the NT Lan Manager Redirector to
+// use in its internal error mapping routines.
+//
+#define STATUS_OPEN_FAILED ((NTSTATUS)0xC0000136L)
+
+//
+// MessageId: STATUS_IO_PRIVILEGE_FAILED
+//
+// MessageText:
+//
+// {Privilege Failed}
+// The I/O permissions for the process could not be changed.
+//
+#define STATUS_IO_PRIVILEGE_FAILED ((NTSTATUS)0xC0000137L)
+
+//
+// MessageId: STATUS_ORDINAL_NOT_FOUND
+//
+// MessageText:
+//
+// {Ordinal Not Found}
+// The ordinal %ld could not be located in the dynamic link library %s.
+//
+#define STATUS_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000138L)
+
+//
+// MessageId: STATUS_ENTRYPOINT_NOT_FOUND
+//
+// MessageText:
+//
+// {Entry Point Not Found}
+// The procedure entry point %s could not be located in the dynamic link library %s.
+//
+#define STATUS_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000139L)
+
+//
+// MessageId: STATUS_CONTROL_C_EXIT
+//
+// MessageText:
+//
+// {Application Exit by CTRL+C}
+// The application terminated as a result of a CTRL+C.
+//
+#define STATUS_CONTROL_C_EXIT ((NTSTATUS)0xC000013AL) // winnt
+
+//
+// MessageId: STATUS_LOCAL_DISCONNECT
+//
+// MessageText:
+//
+// {Virtual Circuit Closed}
+// The network transport on your computer has closed a network
+// connection. There may or may not be I/O requests outstanding.
+//
+#define STATUS_LOCAL_DISCONNECT ((NTSTATUS)0xC000013BL)
+
+//
+// MessageId: STATUS_REMOTE_DISCONNECT
+//
+// MessageText:
+//
+// {Virtual Circuit Closed}
+// The network transport on a remote computer has closed a network
+// connection. There may or may not be I/O requests outstanding.
+//
+#define STATUS_REMOTE_DISCONNECT ((NTSTATUS)0xC000013CL)
+
+//
+// MessageId: STATUS_REMOTE_RESOURCES
+//
+// MessageText:
+//
+// {Insufficient Resources on Remote Computer}
+// The remote computer has insufficient resources to complete the
+// network request. For instance, there may not be enough memory
+// available on the remote computer to carry out the request at
+// this time.
+//
+#define STATUS_REMOTE_RESOURCES ((NTSTATUS)0xC000013DL)
+
+//
+// MessageId: STATUS_LINK_FAILED
+//
+// MessageText:
+//
+// {Virtual Circuit Closed}
+// An existing connection (virtual circuit) has been broken at the
+// remote computer. There is probably something wrong with the
+// network software protocol or the network hardware on the
+// remote computer.
+//
+#define STATUS_LINK_FAILED ((NTSTATUS)0xC000013EL)
+
+//
+// MessageId: STATUS_LINK_TIMEOUT
+//
+// MessageText:
+//
+// {Virtual Circuit Closed}
+// The network transport on your computer has closed a network
+// connection because it had to wait too long for a response
+// from the remote computer.
+//
+#define STATUS_LINK_TIMEOUT ((NTSTATUS)0xC000013FL)
+
+//
+// MessageId: STATUS_INVALID_CONNECTION
+//
+// MessageText:
+//
+// The connection handle given to the transport was invalid.
+//
+#define STATUS_INVALID_CONNECTION ((NTSTATUS)0xC0000140L)
+
+//
+// MessageId: STATUS_INVALID_ADDRESS
+//
+// MessageText:
+//
+// The address handle given to the transport was invalid.
+//
+#define STATUS_INVALID_ADDRESS ((NTSTATUS)0xC0000141L)
+
+//
+// MessageId: STATUS_DLL_INIT_FAILED
+//
+// MessageText:
+//
+// {DLL Initialization Failed}
+// Initialization of the dynamic link library %s failed. The process is
+// terminating abnormally.
+//
+#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L)
+
+//
+// MessageId: STATUS_MISSING_SYSTEMFILE
+//
+// MessageText:
+//
+// {Missing System File}
+// The required system file %s is bad or missing.
+//
+#define STATUS_MISSING_SYSTEMFILE ((NTSTATUS)0xC0000143L)
+
+//
+// MessageId: STATUS_UNHANDLED_EXCEPTION
+//
+// MessageText:
+//
+// {Application Error}
+// The exception %s (0x%08lx) occurred in the application at location 0x%08lx.
+//
+#define STATUS_UNHANDLED_EXCEPTION ((NTSTATUS)0xC0000144L)
+
+//
+// MessageId: STATUS_APP_INIT_FAILURE
+//
+// MessageText:
+//
+// {Application Error}
+// The application failed to initialize properly (0x%lx). Click on OK to
+// terminate the application.
+//
+#define STATUS_APP_INIT_FAILURE ((NTSTATUS)0xC0000145L)
+
+//
+// MessageId: STATUS_PAGEFILE_CREATE_FAILED
+//
+// MessageText:
+//
+// {Unable to Create Paging File}
+// The creation of the paging file %s failed (%lx). The requested size was %ld.
+//
+#define STATUS_PAGEFILE_CREATE_FAILED ((NTSTATUS)0xC0000146L)
+
+//
+// MessageId: STATUS_NO_PAGEFILE
+//
+// MessageText:
+//
+// {No Paging File Specified}
+// No paging file was specified in the system configuration.
+//
+#define STATUS_NO_PAGEFILE ((NTSTATUS)0xC0000147L)
+
+//
+// MessageId: STATUS_INVALID_LEVEL
+//
+// MessageText:
+//
+// {Incorrect System Call Level}
+// An invalid level was passed into the specified system call.
+//
+#define STATUS_INVALID_LEVEL ((NTSTATUS)0xC0000148L)
+
+//
+// MessageId: STATUS_WRONG_PASSWORD_CORE
+//
+// MessageText:
+//
+// {Incorrect Password to LAN Manager Server}
+// You specified an incorrect password to a LAN Manager 2.x or MS-NET server.
+//
+#define STATUS_WRONG_PASSWORD_CORE ((NTSTATUS)0xC0000149L)
+
+//
+// MessageId: STATUS_ILLEGAL_FLOAT_CONTEXT
+//
+// MessageText:
+//
+// {EXCEPTION}
+// A real-mode application issued a floating-point instruction and floating-point
+// hardware is not present.
+//
+#define STATUS_ILLEGAL_FLOAT_CONTEXT ((NTSTATUS)0xC000014AL)
+
+//
+// MessageId: STATUS_PIPE_BROKEN
+//
+// MessageText:
+//
+// The pipe operation has failed because the other end of the pipe has been
+// closed.
+//
+#define STATUS_PIPE_BROKEN ((NTSTATUS)0xC000014BL)
+
+//
+// MessageId: STATUS_REGISTRY_CORRUPT
+//
+// MessageText:
+//
+// {The Registry Is Corrupt}
+// The structure of one of the files that contains Registry data is corrupt, or
+// the image of the file in memory is corrupt, or the file could not
+// be recovered because the alternate copy or log was absent or corrupt.
+//
+#define STATUS_REGISTRY_CORRUPT ((NTSTATUS)0xC000014CL)
+
+//
+// MessageId: STATUS_REGISTRY_IO_FAILED
+//
+// MessageText:
+//
+// An I/O operation initiated by the Registry failed unrecoverably.
+// The Registry could not read in, or write out, or flush, one of the files
+// that contain the system's image of the Registry.
+//
+#define STATUS_REGISTRY_IO_FAILED ((NTSTATUS)0xC000014DL)
+
+//
+// MessageId: STATUS_NO_EVENT_PAIR
+//
+// MessageText:
+//
+// An event pair synchronization operation was performed using the thread
+// specific client/server event pair object, but no event pair object was
+// associated with the thread.
+//
+#define STATUS_NO_EVENT_PAIR ((NTSTATUS)0xC000014EL)
+
+//
+// MessageId: STATUS_UNRECOGNIZED_VOLUME
+//
+// MessageText:
+//
+// The volume does not contain a recognized file system.
+// Please make sure that all required file system drivers are loaded and that the
+// volume is not corrupt.
+//
+#define STATUS_UNRECOGNIZED_VOLUME ((NTSTATUS)0xC000014FL)
+
+//
+// MessageId: STATUS_SERIAL_NO_DEVICE_INITED
+//
+// MessageText:
+//
+// No serial device was successfully initialized. The serial driver will unload.
+//
+#define STATUS_SERIAL_NO_DEVICE_INITED ((NTSTATUS)0xC0000150L)
+
+//
+// MessageId: STATUS_NO_SUCH_ALIAS
+//
+// MessageText:
+//
+// The specified local group does not exist.
+//
+#define STATUS_NO_SUCH_ALIAS ((NTSTATUS)0xC0000151L)
+
+//
+// MessageId: STATUS_MEMBER_NOT_IN_ALIAS
+//
+// MessageText:
+//
+// The specified account name is not a member of the local group.
+//
+#define STATUS_MEMBER_NOT_IN_ALIAS ((NTSTATUS)0xC0000152L)
+
+//
+// MessageId: STATUS_MEMBER_IN_ALIAS
+//
+// MessageText:
+//
+// The specified account name is already a member of the local group.
+//
+#define STATUS_MEMBER_IN_ALIAS ((NTSTATUS)0xC0000153L)
+
+//
+// MessageId: STATUS_ALIAS_EXISTS
+//
+// MessageText:
+//
+// The specified local group already exists.
+//
+#define STATUS_ALIAS_EXISTS ((NTSTATUS)0xC0000154L)
+
+//
+// MessageId: STATUS_LOGON_NOT_GRANTED
+//
+// MessageText:
+//
+// A requested type of logon (e.g., Interactive, Network, Service) is not
+// granted by the target system's local security policy. Please ask the
+// system administrator to grant the necessary form of logon.
+//
+#define STATUS_LOGON_NOT_GRANTED ((NTSTATUS)0xC0000155L)
+
+//
+// MessageId: STATUS_TOO_MANY_SECRETS
+//
+// MessageText:
+//
+// The maximum number of secrets that may be stored in a single system has been
+// exceeded. The length and number of secrets is limited to satisfy United
+// States State Department export restrictions.
+//
+#define STATUS_TOO_MANY_SECRETS ((NTSTATUS)0xC0000156L)
+
+//
+// MessageId: STATUS_SECRET_TOO_LONG
+//
+// MessageText:
+//
+// The length of a secret exceeds the maximum length allowed. The length and
+// number of secrets is limited to satisfy United States State Department
+// export restrictions.
+//
+#define STATUS_SECRET_TOO_LONG ((NTSTATUS)0xC0000157L)
+
+//
+// MessageId: STATUS_INTERNAL_DB_ERROR
+//
+// MessageText:
+//
+// The Local Security Authority (LSA) database contains an internal inconsistency.
+//
+#define STATUS_INTERNAL_DB_ERROR ((NTSTATUS)0xC0000158L)
+
+//
+// MessageId: STATUS_FULLSCREEN_MODE
+//
+// MessageText:
+//
+// The requested operation cannot be performed in fullscreen mode.
+//
+#define STATUS_FULLSCREEN_MODE ((NTSTATUS)0xC0000159L)
+
+//
+// MessageId: STATUS_TOO_MANY_CONTEXT_IDS
+//
+// MessageText:
+//
+// During a logon attempt, the user's security context accumulated too many
+// security IDs. This is a very unusual situation. Remove the user from
+// some global or local groups to reduce the number of security ids to
+// incorporate into the security context.
+//
+#define STATUS_TOO_MANY_CONTEXT_IDS ((NTSTATUS)0xC000015AL)
+
+//
+// MessageId: STATUS_LOGON_TYPE_NOT_GRANTED
+//
+// MessageText:
+//
+// A user has requested a type of logon (e.g., interactive or network) that
+// has not been granted. An administrator has control over who may logon
+// interactively and through the network.
+//
+#define STATUS_LOGON_TYPE_NOT_GRANTED ((NTSTATUS)0xC000015BL)
+
+//
+// MessageId: STATUS_NOT_REGISTRY_FILE
+//
+// MessageText:
+//
+// The system has attempted to load or restore a file into the registry, and the
+// specified file is not in the format of a registry file.
+//
+#define STATUS_NOT_REGISTRY_FILE ((NTSTATUS)0xC000015CL)
+
+//
+// MessageId: STATUS_NT_CROSS_ENCRYPTION_REQUIRED
+//
+// MessageText:
+//
+// An attempt was made to change a user password in the security account manager
+// without providing the necessary NT cross-encrypted password.
+//
+#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000015DL)
+
+//
+// MessageId: STATUS_DOMAIN_CTRLR_CONFIG_ERROR
+//
+// MessageText:
+//
+// A Windows NT Server has incorrect configuration.
+//
+#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR ((NTSTATUS)0xC000015EL)
+
+//
+// MessageId: STATUS_FT_MISSING_MEMBER
+//
+// MessageText:
+//
+// An attempt was made to explicitly access the secondary copy of information
+// via a device control to the Fault Tolerance driver and the secondary copy
+// is not present in the system.
+//
+#define STATUS_FT_MISSING_MEMBER ((NTSTATUS)0xC000015FL)
+
+//
+// MessageId: STATUS_ILL_FORMED_SERVICE_ENTRY
+//
+// MessageText:
+//
+// A configuration registry node representing a driver service entry was ill-formed
+// and did not contain required value entries.
+//
+#define STATUS_ILL_FORMED_SERVICE_ENTRY ((NTSTATUS)0xC0000160L)
+
+//
+// MessageId: STATUS_ILLEGAL_CHARACTER
+//
+// MessageText:
+//
+// An illegal character was encountered. For a multi-byte character set this
+// includes a lead byte without a succeeding trail byte. For the Unicode character set
+// this includes the characters 0xFFFF and 0xFFFE.
+//
+#define STATUS_ILLEGAL_CHARACTER ((NTSTATUS)0xC0000161L)
+
+//
+// MessageId: STATUS_UNMAPPABLE_CHARACTER
+//
+// MessageText:
+//
+// No mapping for the Unicode character exists in the target multi-byte code page.
+//
+#define STATUS_UNMAPPABLE_CHARACTER ((NTSTATUS)0xC0000162L)
+
+//
+// MessageId: STATUS_UNDEFINED_CHARACTER
+//
+// MessageText:
+//
+// The Unicode character is not defined in the Unicode character set installed on
+// the system.
+//
+#define STATUS_UNDEFINED_CHARACTER ((NTSTATUS)0xC0000163L)
+
+//
+// MessageId: STATUS_FLOPPY_VOLUME
+//
+// MessageText:
+//
+// The paging file cannot be created on a floppy diskette.
+//
+#define STATUS_FLOPPY_VOLUME ((NTSTATUS)0xC0000164L)
+
+//
+// MessageId: STATUS_FLOPPY_ID_MARK_NOT_FOUND
+//
+// MessageText:
+//
+// {Floppy Disk Error}
+// While accessing a floppy disk, an ID address mark was not found.
+//
+#define STATUS_FLOPPY_ID_MARK_NOT_FOUND ((NTSTATUS)0xC0000165L)
+
+//
+// MessageId: STATUS_FLOPPY_WRONG_CYLINDER
+//
+// MessageText:
+//
+// {Floppy Disk Error}
+// While accessing a floppy disk, the track address from the sector ID field
+// was found to be different than the track address maintained by the controller.
+//
+#define STATUS_FLOPPY_WRONG_CYLINDER ((NTSTATUS)0xC0000166L)
+
+//
+// MessageId: STATUS_FLOPPY_UNKNOWN_ERROR
+//
+// MessageText:
+//
+// {Floppy Disk Error}
+// The floppy disk controller reported an error that is not recognized by the
+// floppy disk driver.
+//
+#define STATUS_FLOPPY_UNKNOWN_ERROR ((NTSTATUS)0xC0000167L)
+
+//
+// MessageId: STATUS_FLOPPY_BAD_REGISTERS
+//
+// MessageText:
+//
+// {Floppy Disk Error}
+// While accessing a floppy-disk, the controller returned inconsistent results
+// via its registers.
+//
+#define STATUS_FLOPPY_BAD_REGISTERS ((NTSTATUS)0xC0000168L)
+
+//
+// MessageId: STATUS_DISK_RECALIBRATE_FAILED
+//
+// MessageText:
+//
+// {Hard Disk Error}
+// While accessing the hard disk, a recalibrate operation failed, even after retries.
+//
+#define STATUS_DISK_RECALIBRATE_FAILED ((NTSTATUS)0xC0000169L)
+
+//
+// MessageId: STATUS_DISK_OPERATION_FAILED
+//
+// MessageText:
+//
+// {Hard Disk Error}
+// While accessing the hard disk, a disk operation failed even after retries.
+//
+#define STATUS_DISK_OPERATION_FAILED ((NTSTATUS)0xC000016AL)
+
+//
+// MessageId: STATUS_DISK_RESET_FAILED
+//
+// MessageText:
+//
+// {Hard Disk Error}
+// While accessing the hard disk, a disk controller reset was needed, but even that failed.
+//
+#define STATUS_DISK_RESET_FAILED ((NTSTATUS)0xC000016BL)
+
+//
+// MessageId: STATUS_SHARED_IRQ_BUSY
+//
+// MessageText:
+//
+// An attempt was made to open a device that was sharing an IRQ with other devices.
+// At least one other device that uses that IRQ was already opened. Two concurrent
+// opens of devices that share an IRQ and only work via interrupts is not supported
+// for the particular bus type that the devices use.
+//
+#define STATUS_SHARED_IRQ_BUSY ((NTSTATUS)0xC000016CL)
+
+//
+// MessageId: STATUS_FT_ORPHANING
+//
+// MessageText:
+//
+// {FT Orphaning}
+// A disk that is part of a fault-tolerant volume can no longer be accessed.
+//
+#define STATUS_FT_ORPHANING ((NTSTATUS)0xC000016DL)
+
+//
+// MessageId: STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT
+//
+// MessageText:
+//
+// The system bios failed to connect a system interrupt to the device or bus for
+// which the device is connected.
+//
+#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT ((NTSTATUS)0xC000016EL)
+
+//
+// MessageId: STATUS_PARTITION_FAILURE
+//
+// MessageText:
+//
+// Tape could not be partitioned.
+//
+#define STATUS_PARTITION_FAILURE ((NTSTATUS)0xC0000172L)
+
+//
+// MessageId: STATUS_INVALID_BLOCK_LENGTH
+//
+// MessageText:
+//
+// When accessing a new tape of a multivolume partition, the current
+// blocksize is incorrect.
+//
+#define STATUS_INVALID_BLOCK_LENGTH ((NTSTATUS)0xC0000173L)
+
+//
+// MessageId: STATUS_DEVICE_NOT_PARTITIONED
+//
+// MessageText:
+//
+// Tape partition information could not be found when loading a tape.
+//
+#define STATUS_DEVICE_NOT_PARTITIONED ((NTSTATUS)0xC0000174L)
+
+//
+// MessageId: STATUS_UNABLE_TO_LOCK_MEDIA
+//
+// MessageText:
+//
+// Attempt to lock the eject media mechanism fails.
+//
+#define STATUS_UNABLE_TO_LOCK_MEDIA ((NTSTATUS)0xC0000175L)
+
+//
+// MessageId: STATUS_UNABLE_TO_UNLOAD_MEDIA
+//
+// MessageText:
+//
+// Unload media fails.
+//
+#define STATUS_UNABLE_TO_UNLOAD_MEDIA ((NTSTATUS)0xC0000176L)
+
+//
+// MessageId: STATUS_EOM_OVERFLOW
+//
+// MessageText:
+//
+// Physical end of tape was detected.
+//
+#define STATUS_EOM_OVERFLOW ((NTSTATUS)0xC0000177L)
+
+//
+// MessageId: STATUS_NO_MEDIA
+//
+// MessageText:
+//
+// {No Media}
+// There is no media in the drive.
+// Please insert media into drive %s.
+//
+#define STATUS_NO_MEDIA ((NTSTATUS)0xC0000178L)
+
+//
+// MessageId: STATUS_NO_SUCH_MEMBER
+//
+// MessageText:
+//
+// A new member could not be added to a local group because the member does
+// not exist.
+//
+#define STATUS_NO_SUCH_MEMBER ((NTSTATUS)0xC000017AL)
+
+//
+// MessageId: STATUS_INVALID_MEMBER
+//
+// MessageText:
+//
+// A new member could not be added to a local group because the member has the
+// wrong account type.
+//
+#define STATUS_INVALID_MEMBER ((NTSTATUS)0xC000017BL)
+
+//
+// MessageId: STATUS_KEY_DELETED
+//
+// MessageText:
+//
+// Illegal operation attempted on a registry key which has been marked for deletion.
+//
+#define STATUS_KEY_DELETED ((NTSTATUS)0xC000017CL)
+
+//
+// MessageId: STATUS_NO_LOG_SPACE
+//
+// MessageText:
+//
+// System could not allocate required space in a registry log.
+//
+#define STATUS_NO_LOG_SPACE ((NTSTATUS)0xC000017DL)
+
+//
+// MessageId: STATUS_TOO_MANY_SIDS
+//
+// MessageText:
+//
+// Too many Sids have been specified.
+//
+#define STATUS_TOO_MANY_SIDS ((NTSTATUS)0xC000017EL)
+
+//
+// MessageId: STATUS_LM_CROSS_ENCRYPTION_REQUIRED
+//
+// MessageText:
+//
+// An attempt was made to change a user password in the security account manager
+// without providing the necessary LM cross-encrypted password.
+//
+#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000017FL)
+
+//
+// MessageId: STATUS_KEY_HAS_CHILDREN
+//
+// MessageText:
+//
+// An attempt was made to create a symbolic link in a registry key that already
+// has subkeys or values.
+//
+#define STATUS_KEY_HAS_CHILDREN ((NTSTATUS)0xC0000180L)
+
+//
+// MessageId: STATUS_CHILD_MUST_BE_VOLATILE
+//
+// MessageText:
+//
+// An attempt was made to create a Stable subkey under a Volatile parent key.
+//
+#define STATUS_CHILD_MUST_BE_VOLATILE ((NTSTATUS)0xC0000181L)
+
+//
+// MessageId: STATUS_DEVICE_CONFIGURATION_ERROR
+//
+// MessageText:
+//
+// The I/O device is configured incorrectly or the configuration parameters to the
+// driver are incorrect.
+//
+#define STATUS_DEVICE_CONFIGURATION_ERROR ((NTSTATUS)0xC0000182L)
+
+//
+// MessageId: STATUS_DRIVER_INTERNAL_ERROR
+//
+// MessageText:
+//
+// An error was detected between two drivers or within an I/O driver.
+//
+#define STATUS_DRIVER_INTERNAL_ERROR ((NTSTATUS)0xC0000183L)
+
+//
+// MessageId: STATUS_INVALID_DEVICE_STATE
+//
+// MessageText:
+//
+// The device is not in a valid state to perform this request.
+//
+#define STATUS_INVALID_DEVICE_STATE ((NTSTATUS)0xC0000184L)
+
+//
+// MessageId: STATUS_IO_DEVICE_ERROR
+//
+// MessageText:
+//
+// The I/O device reported an I/O error.
+//
+#define STATUS_IO_DEVICE_ERROR ((NTSTATUS)0xC0000185L)
+
+//
+// MessageId: STATUS_DEVICE_PROTOCOL_ERROR
+//
+// MessageText:
+//
+// A protocol error was detected between the driver and the device.
+//
+#define STATUS_DEVICE_PROTOCOL_ERROR ((NTSTATUS)0xC0000186L)
+
+//
+// MessageId: STATUS_BACKUP_CONTROLLER
+//
+// MessageText:
+//
+// This operation is only allowed for the Primary Domain Controller of the domain.
+//
+#define STATUS_BACKUP_CONTROLLER ((NTSTATUS)0xC0000187L)
+
+//
+// MessageId: STATUS_LOG_FILE_FULL
+//
+// MessageText:
+//
+// Log file space is insufficient to support this operation.
+//
+#define STATUS_LOG_FILE_FULL ((NTSTATUS)0xC0000188L)
+
+//
+// MessageId: STATUS_TOO_LATE
+//
+// MessageText:
+//
+// A write operation was attempted to a volume after it was dismounted.
+//
+#define STATUS_TOO_LATE ((NTSTATUS)0xC0000189L)
+
+//
+// MessageId: STATUS_NO_TRUST_LSA_SECRET
+//
+// MessageText:
+//
+// The workstation does not have a trust secret for the primary domain in
+// the local LSA database.
+//
+#define STATUS_NO_TRUST_LSA_SECRET ((NTSTATUS)0xC000018AL)
+
+//
+// MessageId: STATUS_NO_TRUST_SAM_ACCOUNT
+//
+// MessageText:
+//
+// The SAM database on the Windows NT Server does not have a computer
+// account for this workstation trust relationship.
+//
+#define STATUS_NO_TRUST_SAM_ACCOUNT ((NTSTATUS)0xC000018BL)
+
+//
+// MessageId: STATUS_TRUSTED_DOMAIN_FAILURE
+//
+// MessageText:
+//
+// The logon request failed because the trust relationship between the
+// primary domain and the trusted domain failed.
+//
+#define STATUS_TRUSTED_DOMAIN_FAILURE ((NTSTATUS)0xC000018CL)
+
+//
+// MessageId: STATUS_TRUSTED_RELATIONSHIP_FAILURE
+//
+// MessageText:
+//
+// The logon request failed because the trust relationship between this
+// workstation and the primary domain failed.
+//
+#define STATUS_TRUSTED_RELATIONSHIP_FAILURE ((NTSTATUS)0xC000018DL)
+
+//
+// MessageId: STATUS_EVENTLOG_FILE_CORRUPT
+//
+// MessageText:
+//
+// The Eventlog log file is corrupt.
+//
+#define STATUS_EVENTLOG_FILE_CORRUPT ((NTSTATUS)0xC000018EL)
+
+//
+// MessageId: STATUS_EVENTLOG_CANT_START
+//
+// MessageText:
+//
+// No Eventlog log file could be opened. The Eventlog service did not start.
+//
+#define STATUS_EVENTLOG_CANT_START ((NTSTATUS)0xC000018FL)
+
+//
+// MessageId: STATUS_TRUST_FAILURE
+//
+// MessageText:
+//
+// The network logon failed. This may be because the validation authority can't
+// be reached.
+//
+#define STATUS_TRUST_FAILURE ((NTSTATUS)0xC0000190L)
+
+//
+// MessageId: STATUS_MUTANT_LIMIT_EXCEEDED
+//
+// MessageText:
+//
+// An attempt was made to acquire a mutant such that its maximum count
+// would have been exceeded.
+//
+#define STATUS_MUTANT_LIMIT_EXCEEDED ((NTSTATUS)0xC0000191L)
+
+//
+// MessageId: STATUS_NETLOGON_NOT_STARTED
+//
+// MessageText:
+//
+// An attempt was made to logon, but the netlogon service was not started.
+//
+#define STATUS_NETLOGON_NOT_STARTED ((NTSTATUS)0xC0000192L)
+
+//
+// MessageId: STATUS_ACCOUNT_EXPIRED
+//
+// MessageText:
+//
+// The user's account has expired.
+//
+#define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193L) // ntsubauth
+
+//
+// MessageId: STATUS_POSSIBLE_DEADLOCK
+//
+// MessageText:
+//
+// {EXCEPTION}
+// Possible deadlock condition.
+//
+#define STATUS_POSSIBLE_DEADLOCK ((NTSTATUS)0xC0000194L)
+
+//
+// MessageId: STATUS_NETWORK_CREDENTIAL_CONFLICT
+//
+// MessageText:
+//
+// The credentials supplied conflict with an existing set of credentials.
+//
+#define STATUS_NETWORK_CREDENTIAL_CONFLICT ((NTSTATUS)0xC0000195L)
+
+//
+// MessageId: STATUS_REMOTE_SESSION_LIMIT
+//
+// MessageText:
+//
+// An attempt was made to establish a session to a network server, but there
+// are already too many sessions established to that server.
+//
+#define STATUS_REMOTE_SESSION_LIMIT ((NTSTATUS)0xC0000196L)
+
+//
+// MessageId: STATUS_EVENTLOG_FILE_CHANGED
+//
+// MessageText:
+//
+// The log file has changed between reads.
+//
+#define STATUS_EVENTLOG_FILE_CHANGED ((NTSTATUS)0xC0000197L)
+
+//
+// MessageId: STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT
+//
+// MessageText:
+//
+// The account used is an Interdomain Trust account. Use your global user account or local user account to access this server.
+//
+#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT ((NTSTATUS)0xC0000198L)
+
+//
+// MessageId: STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT
+//
+// MessageText:
+//
+// The account used is a Computer Account. Use your global user account or local user account to access this server.
+//
+#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT ((NTSTATUS)0xC0000199L)
+
+//
+// MessageId: STATUS_NOLOGON_SERVER_TRUST_ACCOUNT
+//
+// MessageText:
+//
+// The account used is an Server Trust account. Use your global user account or local user account to access this server.
+//
+#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT ((NTSTATUS)0xC000019AL)
+
+//
+// MessageId: STATUS_DOMAIN_TRUST_INCONSISTENT
+//
+// MessageText:
+//
+// The name or SID of the domain specified is inconsistent with the trust information for that domain.
+//
+#define STATUS_DOMAIN_TRUST_INCONSISTENT ((NTSTATUS)0xC000019BL)
+
+//
+// MessageId: STATUS_FS_DRIVER_REQUIRED
+//
+// MessageText:
+//
+// A volume has been accessed for which a file system driver is required that has not yet been loaded.
+//
+#define STATUS_FS_DRIVER_REQUIRED ((NTSTATUS)0xC000019CL)
+
+//
+// MessageId: STATUS_NO_USER_SESSION_KEY
+//
+// MessageText:
+//
+// There is no user session key for the specified logon session.
+//
+#define STATUS_NO_USER_SESSION_KEY ((NTSTATUS)0xC0000202L)
+
+//
+// MessageId: STATUS_USER_SESSION_DELETED
+//
+// MessageText:
+//
+// The remote user session has been deleted.
+//
+#define STATUS_USER_SESSION_DELETED ((NTSTATUS)0xC0000203L)
+
+//
+// MessageId: STATUS_RESOURCE_LANG_NOT_FOUND
+//
+// MessageText:
+//
+// Indicates the specified resource language ID cannot be found in the
+// image file.
+//
+#define STATUS_RESOURCE_LANG_NOT_FOUND ((NTSTATUS)0xC0000204L)
+
+//
+// MessageId: STATUS_INSUFF_SERVER_RESOURCES
+//
+// MessageText:
+//
+// Insufficient server resources exist to complete the request.
+//
+#define STATUS_INSUFF_SERVER_RESOURCES ((NTSTATUS)0xC0000205L)
+
+//
+// MessageId: STATUS_INVALID_BUFFER_SIZE
+//
+// MessageText:
+//
+// The size of the buffer is invalid for the specified operation.
+//
+#define STATUS_INVALID_BUFFER_SIZE ((NTSTATUS)0xC0000206L)
+
+//
+// MessageId: STATUS_INVALID_ADDRESS_COMPONENT
+//
+// MessageText:
+//
+// The transport rejected the network address specified as invalid.
+//
+#define STATUS_INVALID_ADDRESS_COMPONENT ((NTSTATUS)0xC0000207L)
+
+//
+// MessageId: STATUS_INVALID_ADDRESS_WILDCARD
+//
+// MessageText:
+//
+// The transport rejected the network address specified due to an
+// invalid use of a wildcard.
+//
+#define STATUS_INVALID_ADDRESS_WILDCARD ((NTSTATUS)0xC0000208L)
+
+//
+// MessageId: STATUS_TOO_MANY_ADDRESSES
+//
+// MessageText:
+//
+// The transport address could not be opened because all the available
+// addresses are in use.
+//
+#define STATUS_TOO_MANY_ADDRESSES ((NTSTATUS)0xC0000209L)
+
+//
+// MessageId: STATUS_ADDRESS_ALREADY_EXISTS
+//
+// MessageText:
+//
+// The transport address could not be opened because it already exists.
+//
+#define STATUS_ADDRESS_ALREADY_EXISTS ((NTSTATUS)0xC000020AL)
+
+//
+// MessageId: STATUS_ADDRESS_CLOSED
+//
+// MessageText:
+//
+// The transport address is now closed.
+//
+#define STATUS_ADDRESS_CLOSED ((NTSTATUS)0xC000020BL)
+
+//
+// MessageId: STATUS_CONNECTION_DISCONNECTED
+//
+// MessageText:
+//
+// The transport connection is now disconnected.
+//
+#define STATUS_CONNECTION_DISCONNECTED ((NTSTATUS)0xC000020CL)
+
+//
+// MessageId: STATUS_CONNECTION_RESET
+//
+// MessageText:
+//
+// The transport connection has been reset.
+//
+#define STATUS_CONNECTION_RESET ((NTSTATUS)0xC000020DL)
+
+//
+// MessageId: STATUS_TOO_MANY_NODES
+//
+// MessageText:
+//
+// The transport cannot dynamically acquire any more nodes.
+//
+#define STATUS_TOO_MANY_NODES ((NTSTATUS)0xC000020EL)
+
+//
+// MessageId: STATUS_TRANSACTION_ABORTED
+//
+// MessageText:
+//
+// The transport aborted a pending transaction.
+//
+#define STATUS_TRANSACTION_ABORTED ((NTSTATUS)0xC000020FL)
+
+//
+// MessageId: STATUS_TRANSACTION_TIMED_OUT
+//
+// MessageText:
+//
+// The transport timed out a request waiting for a response.
+//
+#define STATUS_TRANSACTION_TIMED_OUT ((NTSTATUS)0xC0000210L)
+
+//
+// MessageId: STATUS_TRANSACTION_NO_RELEASE
+//
+// MessageText:
+//
+// The transport did not receive a release for a pending response.
+//
+#define STATUS_TRANSACTION_NO_RELEASE ((NTSTATUS)0xC0000211L)
+
+//
+// MessageId: STATUS_TRANSACTION_NO_MATCH
+//
+// MessageText:
+//
+// The transport did not find a transaction matching the specific
+// token.
+//
+#define STATUS_TRANSACTION_NO_MATCH ((NTSTATUS)0xC0000212L)
+
+//
+// MessageId: STATUS_TRANSACTION_RESPONDED
+//
+// MessageText:
+//
+// The transport had previously responded to a transaction request.
+//
+#define STATUS_TRANSACTION_RESPONDED ((NTSTATUS)0xC0000213L)
+
+//
+// MessageId: STATUS_TRANSACTION_INVALID_ID
+//
+// MessageText:
+//
+// The transport does not recognized the transaction request
+// identifier specified.
+//
+#define STATUS_TRANSACTION_INVALID_ID ((NTSTATUS)0xC0000214L)
+
+//
+// MessageId: STATUS_TRANSACTION_INVALID_TYPE
+//
+// MessageText:
+//
+// The transport does not recognize the transaction request
+// type specified.
+//
+#define STATUS_TRANSACTION_INVALID_TYPE ((NTSTATUS)0xC0000215L)
+
+//
+// MessageId: STATUS_NOT_SERVER_SESSION
+//
+// MessageText:
+//
+// The transport can only process the specified request on
+// the server side of a session.
+//
+#define STATUS_NOT_SERVER_SESSION ((NTSTATUS)0xC0000216L)
+
+//
+// MessageId: STATUS_NOT_CLIENT_SESSION
+//
+// MessageText:
+//
+// The transport can only process the specified request on
+// the client side of a session.
+//
+#define STATUS_NOT_CLIENT_SESSION ((NTSTATUS)0xC0000217L)
+
+//
+// MessageId: STATUS_CANNOT_LOAD_REGISTRY_FILE
+//
+// MessageText:
+//
+// {Registry File Failure}
+// The registry cannot load the hive (file):
+// %s
+// or its log or alternate.
+// It is corrupt, absent, or not writeable.
+//
+#define STATUS_CANNOT_LOAD_REGISTRY_FILE ((NTSTATUS)0xC0000218L)
+
+//
+// MessageId: STATUS_DEBUG_ATTACH_FAILED
+//
+// MessageText:
+//
+// {Unexpected Failure in DebugActiveProcess}
+// An unexpected failure occurred while processing a DebugActiveProcess API
+// request. You may choose OK to terminate the process, or Cancel to
+// ignore the error.
+//
+#define STATUS_DEBUG_ATTACH_FAILED ((NTSTATUS)0xC0000219L)
+
+//
+// MessageId: STATUS_SYSTEM_PROCESS_TERMINATED
+//
+// MessageText:
+//
+// {Fatal System Error}
+// The %s system process terminated unexpectedly
+// with a status of 0x%08x (0x%08x 0x%08x).
+// The system has been shut down.
+//
+#define STATUS_SYSTEM_PROCESS_TERMINATED ((NTSTATUS)0xC000021AL)
+
+//
+// MessageId: STATUS_DATA_NOT_ACCEPTED
+//
+// MessageText:
+//
+// {Data Not Accepted}
+// The TDI client could not handle the data received during an
+// indication.
+//
+#define STATUS_DATA_NOT_ACCEPTED ((NTSTATUS)0xC000021BL)
+
+//
+// MessageId: STATUS_NO_BROWSER_SERVERS_FOUND
+//
+// MessageText:
+//
+// {Unable to Retrieve Browser Server List}
+// The list of servers for this workgroup is not currently available.
+//
+#define STATUS_NO_BROWSER_SERVERS_FOUND ((NTSTATUS)0xC000021CL)
+
+//
+// MessageId: STATUS_VDM_HARD_ERROR
+//
+// MessageText:
+//
+// NTVDM encountered a hard error.
+//
+#define STATUS_VDM_HARD_ERROR ((NTSTATUS)0xC000021DL)
+
+//
+// MessageId: STATUS_DRIVER_CANCEL_TIMEOUT
+//
+// MessageText:
+//
+// {Cancel Timeout}
+// The driver %s failed to complete a cancelled I/O request in the allotted time.
+//
+#define STATUS_DRIVER_CANCEL_TIMEOUT ((NTSTATUS)0xC000021EL)
+
+//
+// MessageId: STATUS_REPLY_MESSAGE_MISMATCH
+//
+// MessageText:
+//
+// {Reply Message Mismatch}
+// An attempt was made to reply to an LPC message, but the thread specified
+// by the client ID in the message was not waiting on that message.
+//
+#define STATUS_REPLY_MESSAGE_MISMATCH ((NTSTATUS)0xC000021FL)
+
+//
+// MessageId: STATUS_MAPPED_ALIGNMENT
+//
+// MessageText:
+//
+// {Mapped View Aligment Incorrect}
+// An attempt was made to map a view of a file, but either the specified base
+// address or the offset into the file were not aligned on the proper
+// allocation granularity.
+//
+#define STATUS_MAPPED_ALIGNMENT ((NTSTATUS)0xC0000220L)
+
+//
+// MessageId: STATUS_IMAGE_CHECKSUM_MISMATCH
+//
+// MessageText:
+//
+// {Bad Image Checksum}
+// The image %s is possibly corrupt. The header checksum does not
+// match the computed checksum.
+//
+#define STATUS_IMAGE_CHECKSUM_MISMATCH ((NTSTATUS)0xC0000221L)
+
+//
+// MessageId: STATUS_LOST_WRITEBEHIND_DATA
+//
+// MessageText:
+//
+// {Lost Delayed-Write Data}
+// The system was attempting to transfer file data from buffers to %s.
+// The write operation failed, and only some of the data may have been
+// written to the file.
+//
+#define STATUS_LOST_WRITEBEHIND_DATA ((NTSTATUS)0xC0000222L)
+
+//
+// MessageId: STATUS_CLIENT_SERVER_PARAMETERS_INVALID
+//
+// MessageText:
+//
+// The parameter(s) passed to the server in the client/server shared memory
+// window were invalid. Too much data may have been put in the shared memory
+// window.
+//
+#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID ((NTSTATUS)0xC0000223L)
+
+//
+// MessageId: STATUS_PASSWORD_MUST_CHANGE
+//
+// MessageText:
+//
+// The user must change his password before he logs on the first time.
+//
+#define STATUS_PASSWORD_MUST_CHANGE ((NTSTATUS)0xC0000224L) // ntsubauth
+
+//
+// MessageId: STATUS_NOT_FOUND
+//
+// MessageText:
+//
+// The object was not found.
+//
+#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225L)
+
+//
+// MessageId: STATUS_NOT_TINY_STREAM
+//
+// MessageText:
+//
+// The stream is not a tiny stream.
+//
+#define STATUS_NOT_TINY_STREAM ((NTSTATUS)0xC0000226L)
+
+//
+// MessageId: STATUS_RECOVERY_FAILURE
+//
+// MessageText:
+//
+// A transaction recover failed.
+//
+#define STATUS_RECOVERY_FAILURE ((NTSTATUS)0xC0000227L)
+
+//
+// MessageId: STATUS_STACK_OVERFLOW_READ
+//
+// MessageText:
+//
+// The request must be handled by the stack overflow code.
+//
+#define STATUS_STACK_OVERFLOW_READ ((NTSTATUS)0xC0000228L)
+
+//
+// MessageId: STATUS_FAIL_CHECK
+//
+// MessageText:
+//
+// A consistancy check failed.
+//
+#define STATUS_FAIL_CHECK ((NTSTATUS)0xC0000229L)
+
+//
+// MessageId: STATUS_DUPLICATE_OBJECTID
+//
+// MessageText:
+//
+// The attempt to insert the ID in the index failed because the
+// ID is already in the index.
+//
+#define STATUS_DUPLICATE_OBJECTID ((NTSTATUS)0xC000022AL)
+
+//
+// MessageId: STATUS_OBJECTID_EXISTS
+//
+// MessageText:
+//
+// The attempt to set the object's ID failed because the object
+// already has an ID.
+//
+#define STATUS_OBJECTID_EXISTS ((NTSTATUS)0xC000022BL)
+
+//
+// MessageId: STATUS_CONVERT_TO_LARGE
+//
+// MessageText:
+//
+// Internal OFS status codes indicating how an allocation operation is
+// handled. Either it is retried after the containing onode is moved
+// or the extent stream is converted to a large stream.
+//
+#define STATUS_CONVERT_TO_LARGE ((NTSTATUS)0xC000022CL)
+
+//
+// MessageId: STATUS_RETRY
+//
+// MessageText:
+//
+// The request needs to be retried.
+//
+#define STATUS_RETRY ((NTSTATUS)0xC000022DL)
+
+//
+// MessageId: STATUS_FOUND_OUT_OF_SCOPE
+//
+// MessageText:
+//
+// The attempt to find the object found an object matching by ID
+// on the volume but it is out of the scope of the handle used
+// for the operation.
+//
+#define STATUS_FOUND_OUT_OF_SCOPE ((NTSTATUS)0xC000022EL)
+
+//
+// MessageId: STATUS_ALLOCATE_BUCKET
+//
+// MessageText:
+//
+// The bucket array must be grown. Retry transaction after doing so.
+//
+#define STATUS_ALLOCATE_BUCKET ((NTSTATUS)0xC000022FL)
+
+//
+// MessageId: STATUS_PROPSET_NOT_FOUND
+//
+// MessageText:
+//
+// The property set specified does not exist on the object.
+//
+#define STATUS_PROPSET_NOT_FOUND ((NTSTATUS)0xC0000230L)
+
+//
+// MessageId: STATUS_MARSHALL_OVERFLOW
+//
+// MessageText:
+//
+// The user/kernel marshalling buffer has overflowed.
+//
+#define STATUS_MARSHALL_OVERFLOW ((NTSTATUS)0xC0000231L)
+
+//
+// MessageId: STATUS_INVALID_VARIANT
+//
+// MessageText:
+//
+// The supplied variant structure contains invalid data.
+//
+#define STATUS_INVALID_VARIANT ((NTSTATUS)0xC0000232L)
+
+//
+// MessageId: STATUS_DOMAIN_CONTROLLER_NOT_FOUND
+//
+// MessageText:
+//
+// Could not find a domain controller for this domain.
+//
+#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND ((NTSTATUS)0xC0000233L)
+
+//
+// MessageId: STATUS_ACCOUNT_LOCKED_OUT
+//
+// MessageText:
+//
+// The user account has been automatically locked because too many invalid logon
+// attempts or password change attempts have been requested.
+//
+#define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234L) // ntsubauth
+
+//
+// MessageId: STATUS_HANDLE_NOT_CLOSABLE
+//
+// MessageText:
+//
+// NtClose was called on a handle that was protected from close via NtSetInformationObject.
+//
+#define STATUS_HANDLE_NOT_CLOSABLE ((NTSTATUS)0xC0000235L)
+
+//
+// MessageId: STATUS_CONNECTION_REFUSED
+//
+// MessageText:
+//
+// The transport connection attempt was refused by the remote system.
+//
+#define STATUS_CONNECTION_REFUSED ((NTSTATUS)0xC0000236L)
+
+//
+// MessageId: STATUS_GRACEFUL_DISCONNECT
+//
+// MessageText:
+//
+// The transport connection was gracefully closed.
+//
+#define STATUS_GRACEFUL_DISCONNECT ((NTSTATUS)0xC0000237L)
+
+//
+// MessageId: STATUS_ADDRESS_ALREADY_ASSOCIATED
+//
+// MessageText:
+//
+// The transport endpoint already has an address associated with it.
+//
+#define STATUS_ADDRESS_ALREADY_ASSOCIATED ((NTSTATUS)0xC0000238L)
+
+//
+// MessageId: STATUS_ADDRESS_NOT_ASSOCIATED
+//
+// MessageText:
+//
+// An address has not yet been associated with the transport endpoint.
+//
+#define STATUS_ADDRESS_NOT_ASSOCIATED ((NTSTATUS)0xC0000239L)
+
+//
+// MessageId: STATUS_CONNECTION_INVALID
+//
+// MessageText:
+//
+// An operation was attempted on a nonexistent transport connection.
+//
+#define STATUS_CONNECTION_INVALID ((NTSTATUS)0xC000023AL)
+
+//
+// MessageId: STATUS_CONNECTION_ACTIVE
+//
+// MessageText:
+//
+// An invalid operation was attempted on an active transport connection.
+//
+#define STATUS_CONNECTION_ACTIVE ((NTSTATUS)0xC000023BL)
+
+//
+// MessageId: STATUS_NETWORK_UNREACHABLE
+//
+// MessageText:
+//
+// The remote network is not reachable by the transport.
+//
+#define STATUS_NETWORK_UNREACHABLE ((NTSTATUS)0xC000023CL)
+
+//
+// MessageId: STATUS_HOST_UNREACHABLE
+//
+// MessageText:
+//
+// The remote system is not reachable by the transport.
+//
+#define STATUS_HOST_UNREACHABLE ((NTSTATUS)0xC000023DL)
+
+//
+// MessageId: STATUS_PROTOCOL_UNREACHABLE
+//
+// MessageText:
+//
+// The remote system does not support the transport protocol.
+//
+#define STATUS_PROTOCOL_UNREACHABLE ((NTSTATUS)0xC000023EL)
+
+//
+// MessageId: STATUS_PORT_UNREACHABLE
+//
+// MessageText:
+//
+// No service is operating at the destination port of the transport
+// on the remote system.
+//
+#define STATUS_PORT_UNREACHABLE ((NTSTATUS)0xC000023FL)
+
+//
+// MessageId: STATUS_REQUEST_ABORTED
+//
+// MessageText:
+//
+// The request was aborted.
+//
+#define STATUS_REQUEST_ABORTED ((NTSTATUS)0xC0000240L)
+
+//
+// MessageId: STATUS_CONNECTION_ABORTED
+//
+// MessageText:
+//
+// The transport connection was aborted by the local system.
+//
+#define STATUS_CONNECTION_ABORTED ((NTSTATUS)0xC0000241L)
+
+//
+// MessageId: STATUS_BAD_COMPRESSION_BUFFER
+//
+// MessageText:
+//
+// The specified buffer contains ill-formed data.
+//
+#define STATUS_BAD_COMPRESSION_BUFFER ((NTSTATUS)0xC0000242L)
+
+//
+// MessageId: STATUS_USER_MAPPED_FILE
+//
+// MessageText:
+//
+// The requested operation cannot be performed on a file with a user mapped section open.
+//
+#define STATUS_USER_MAPPED_FILE ((NTSTATUS)0xC0000243L)
+
+//
+// MessageId: STATUS_AUDIT_FAILED
+//
+// MessageText:
+//
+// {Audit Failed}
+// An attempt to generate a security audit failed.
+//
+#define STATUS_AUDIT_FAILED ((NTSTATUS)0xC0000244L)
+
+//
+// MessageId: STATUS_TIMER_RESOLUTION_NOT_SET
+//
+// MessageText:
+//
+// The timer resolution was not previously set by the current process.
+//
+#define STATUS_TIMER_RESOLUTION_NOT_SET ((NTSTATUS)0xC0000245L)
+
+//
+// MessageId: STATUS_CONNECTION_COUNT_LIMIT
+//
+// MessageText:
+//
+// A connection to the server could not be made because the limit on the number of
+// concurrent connections for this account has been reached.
+//
+#define STATUS_CONNECTION_COUNT_LIMIT ((NTSTATUS)0xC0000246L)
+
+//
+// MessageId: STATUS_LOGIN_TIME_RESTRICTION
+//
+// MessageText:
+//
+// Attempting to login during an unauthorized time of day for this account.
+//
+#define STATUS_LOGIN_TIME_RESTRICTION ((NTSTATUS)0xC0000247L)
+
+//
+// MessageId: STATUS_LOGIN_WKSTA_RESTRICTION
+//
+// MessageText:
+//
+// The account is not authorized to login from this station.
+//
+#define STATUS_LOGIN_WKSTA_RESTRICTION ((NTSTATUS)0xC0000248L)
+
+//
+// MessageId: STATUS_IMAGE_MP_UP_MISMATCH
+//
+// MessageText:
+//
+// {UP/MP Image Mismatch}
+// The image %s has been modified for use on a uniprocessor system,
+// but you are running it on a multiprocessor machine.
+// Please reinstall the image file.
+//
+#define STATUS_IMAGE_MP_UP_MISMATCH ((NTSTATUS)0xC0000249L)
+
+//
+// MessageId: STATUS_INSUFFICIENT_LOGON_INFO
+//
+// MessageText:
+//
+// There is insufficient account information to log you on.
+//
+#define STATUS_INSUFFICIENT_LOGON_INFO ((NTSTATUS)0xC0000250L)
+
+//
+// MessageId: STATUS_BAD_DLL_ENTRYPOINT
+//
+// MessageText:
+//
+// {Invalid DLL Entrypoint}
+// The dynamic link library %s is not written correctly. The stack pointer has been left in an inconsistent state.
+// The entrypoint should be declared as WINAPI or STDCALL. Select YES to fail the DLL load. Select NO to continue
+// execution. Selecting NO may cause the application to operate incorrectly.
+//
+#define STATUS_BAD_DLL_ENTRYPOINT ((NTSTATUS)0xC0000251L)
+
+//
+// MessageId: STATUS_BAD_SERVICE_ENTRYPOINT
+//
+// MessageText:
+//
+// {Invalid Service Callback Entrypoint}
+// The %s service is not written correctly. The stack pointer has been left in an inconsistent state.
+// The callback entrypoint should be declared as WINAPI or STDCALL. Selecting OK will cause the
+// service to continue operation. However, the service process may operate incorrectly.
+//
+#define STATUS_BAD_SERVICE_ENTRYPOINT ((NTSTATUS)0xC0000252L)
+
+//
+// MessageId: STATUS_LPC_REPLY_LOST
+//
+// MessageText:
+//
+// The server received the messages but did not send a reply.
+//
+#define STATUS_LPC_REPLY_LOST ((NTSTATUS)0xC0000253L)
+
+//
+// MessageId: STATUS_IP_ADDRESS_CONFLICT1
+//
+// MessageText:
+//
+// The system has detected an IP address conflict with another system on the
+// network. The local interface has been disabled. More details are available in
+// the system event log. Consult your network administrator to resolve the
+// conflict.
+//
+#define STATUS_IP_ADDRESS_CONFLICT1 ((NTSTATUS)0xC0000254L)
+
+//
+// MessageId: STATUS_IP_ADDRESS_CONFLICT2
+//
+// MessageText:
+//
+// The system has detected an IP address conflict with another system on the
+// network. Network operations on this system may be disrupted as a result.
+// More details are available in the system event log. Consult your network
+// administrator immediately to resolve the conflict.
+//
+#define STATUS_IP_ADDRESS_CONFLICT2 ((NTSTATUS)0xC0000255L)
+
+//
+// MessageId: STATUS_REGISTRY_QUOTA_LIMIT
+//
+// MessageText:
+//
+// {Low on Registry Quota}
+// Your system is running low on registry quota.
+// Start the System option in the Control Panel and choose the Virtual Memory button to increase the registry quota.
+//
+#define STATUS_REGISTRY_QUOTA_LIMIT ((NTSTATUS)0xC0000256L)
+
+//
+// MessageId: STATUS_PATH_NOT_COVERED
+//
+// MessageText:
+//
+// The contacted server does not support the indicated part of the DFS namespace.
+//
+#define STATUS_PATH_NOT_COVERED ((NTSTATUS)0xC0000257L)
+
+//
+// MessageId: STATUS_NO_CALLBACK_ACTIVE
+//
+// MessageText:
+//
+// A callback return system service cannot be executed when no callback is active.
+//
+#define STATUS_NO_CALLBACK_ACTIVE ((NTSTATUS)0xC0000258L)
+
+//
+// MessageId: STATUS_LICENSE_QUOTA_EXCEEDED
+//
+// MessageText:
+//
+// The service being accessed is licensed for a particular number of connections.
+// No more connections can be made to the service at this time
+// because there are already as many connections as the service can accept.
+//
+#define STATUS_LICENSE_QUOTA_EXCEEDED ((NTSTATUS)0xC0000259L)
+
+//
+// MessageId: STATUS_PWD_TOO_SHORT
+//
+// MessageText:
+//
+// The password provided is too short to meet the policy of your user account.
+// Please choose a longer password.
+//
+#define STATUS_PWD_TOO_SHORT ((NTSTATUS)0xC000025AL)
+
+//
+// MessageId: STATUS_PWD_TOO_RECENT
+//
+// MessageText:
+//
+// The policy of your user account does not allow you to change passwords too
+// frequently. This is done to prevent users from changing back to a familiar, but
+// potentially discovered, password. If you feel your password has been compromised
+// then please contact your administrator immediately to have a new one assigned.
+//
+#define STATUS_PWD_TOO_RECENT ((NTSTATUS)0xC000025BL)
+
+//
+// MessageId: STATUS_PWD_HISTORY_CONFLICT
+//
+// MessageText:
+//
+// You have attempted to change your password to one that you have used in the past.
+// The policy of your user account does not allow this. Please select a password
+// that you have not previously used.
+//
+#define STATUS_PWD_HISTORY_CONFLICT ((NTSTATUS)0xC000025CL)
+
+//
+// MessageId: STATUS_PLUGPLAY_NO_DEVICE
+//
+// MessageText:
+//
+// You have attempted to load a legacy device driver while its device instance had
+// been disabled.
+//
+#define STATUS_PLUGPLAY_NO_DEVICE ((NTSTATUS)0xC000025EL)
+
+//
+// MessageId: STATUS_UNSUPPORTED_COMPRESSION
+//
+// MessageText:
+//
+// The specified compression format is unsupported.
+//
+#define STATUS_UNSUPPORTED_COMPRESSION ((NTSTATUS)0xC000025FL)
+
+//
+// MessageId: STATUS_INVALID_HW_PROFILE
+//
+// MessageText:
+//
+// The specified hardware profile configuration is invalid.
+//
+#define STATUS_INVALID_HW_PROFILE ((NTSTATUS)0xC0000260L)
+
+//
+// MessageId: STATUS_INVALID_PLUGPLAY_DEVICE_PATH
+//
+// MessageText:
+//
+// The specified Plug and Play registry device path is invalid.
+//
+#define STATUS_INVALID_PLUGPLAY_DEVICE_PATH ((NTSTATUS)0xC0000261L)
+
+//
+// MessageId: STATUS_DRIVER_ORDINAL_NOT_FOUND
+//
+// MessageText:
+//
+// {Driver Entry Point Not Found}
+// The %s device driver could not locate the ordinal %ld in driver %s.
+//
+#define STATUS_DRIVER_ORDINAL_NOT_FOUND ((NTSTATUS)0xC0000262L)
+
+//
+// MessageId: STATUS_DRIVER_ENTRYPOINT_NOT_FOUND
+//
+// MessageText:
+//
+// {Driver Entry Point Not Found}
+// The %s device driver could not locate the entry point %s in driver %s.
+//
+#define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND ((NTSTATUS)0xC0000263L)
+
+//
+// MessageId: STATUS_RESOURCE_NOT_OWNED
+//
+// MessageText:
+//
+// {Application Error}
+// The application attempted to release a resource it did not own. Click on OK to
+// terminate the application.
+//
+#define STATUS_RESOURCE_NOT_OWNED ((NTSTATUS)0xC0000264L)
+
+//
+// MessageId: STATUS_TOO_MANY_LINKS
+//
+// MessageText:
+//
+// An attempt was made to create more links on a file than
+// the file system supports.
+//
+#define STATUS_TOO_MANY_LINKS ((NTSTATUS)0xC0000265L)
+
+//
+// MessageId: STATUS_QUOTA_LIST_INCONSISTENT
+//
+// MessageText:
+//
+// The specified quota list is internally inconsistent with its descriptor.
+//
+#define STATUS_QUOTA_LIST_INCONSISTENT ((NTSTATUS)0xC0000266L)
+
+//
+// MessageId: STATUS_FILE_IS_OFFLINE
+//
+// MessageText:
+//
+// The specified file has been relocated to offline storage.
+//
+#define STATUS_FILE_IS_OFFLINE ((NTSTATUS)0xC0000267L)
+
+//
+// MessageId: STATUS_EVALUATION_EXPIRATION
+//
+// MessageText:
+//
+// {Windows NT Evaluation Notification}
+// The evaluation period for this installation of Windows NT has expired.
+// This system will shutdown in 1 hour. To restore access to this installation
+// of Windows NT, please upgrade this installation using a licensed distribution
+// of this product.
+//
+#define STATUS_EVALUATION_EXPIRATION ((NTSTATUS)0xC0000268L)
+
+//
+// MessageId: STATUS_ILLEGAL_DLL_RELOCATION
+//
+// MessageText:
+//
+// {Illegal System DLL Relocation}
+// The system DLL %s was relocated in memory. The application will not run properly.
+// The relocation occured because the DLL %s occupied an address range reserved for
+// Windows NT system DLL's. The vendor supplying the DLL should be contacted for a new DLL.
+//
+#define STATUS_ILLEGAL_DLL_RELOCATION ((NTSTATUS)0xC0000269L)
+
+//
+// MessageId: STATUS_LICENSE_VIOLATION
+//
+// MessageText:
+//
+// {License Violation}
+// The system has detected tampering with your registered product type. This is a violation
+// of your software license. Tampering with product type is not permitted.
+//
+#define STATUS_LICENSE_VIOLATION ((NTSTATUS)0xC000026AL)
+
+//
+// MessageId: STATUS_DLL_INIT_FAILED_LOGOFF
+//
+// MessageText:
+//
+// {DLL Initialization Failed}
+// The application failed to initialize because the window station is shutting down.
+//
+#define STATUS_DLL_INIT_FAILED_LOGOFF ((NTSTATUS)0xC000026BL)
+
+//
+// MessageId: STATUS_DRIVER_UNABLE_TO_LOAD
+//
+// MessageText:
+//
+// {Unable to Load Device Driver}
+// %s device driver could not be loaded.
+// Error Status was 0x%x
+//
+#define STATUS_DRIVER_UNABLE_TO_LOAD ((NTSTATUS)0xC000026CL)
+
+//
+// MessageId: STATUS_DFS_UNAVAILABLE
+//
+// MessageText:
+//
+// DFS is unavailable on the contacted server.
+//
+#define STATUS_DFS_UNAVAILABLE ((NTSTATUS)0xC000026DL)
+
+//
+// MessageId: STATUS_VOLUME_DISMOUNTED
+//
+// MessageText:
+//
+// An operation was attempted to a volume after it was dismounted.
+//
+#define STATUS_VOLUME_DISMOUNTED ((NTSTATUS)0xC000026EL)
+
+//
+// MessageId: STATUS_WX86_INTERNAL_ERROR
+//
+// MessageText:
+//
+// An internal error occurred in the Win32 x86 emulation subsystem.
+//
+#define STATUS_WX86_INTERNAL_ERROR ((NTSTATUS)0xC000026FL)
+
+//
+// MessageId: STATUS_WX86_FLOAT_STACK_CHECK
+//
+// MessageText:
+//
+// Win32 x86 emulation subsystem Floating-point stack check.
+//
+#define STATUS_WX86_FLOAT_STACK_CHECK ((NTSTATUS)0xC0000270L)
+
+//
+// MessageId: STATUS_WOW_ASSERTION
+//
+// MessageText:
+//
+// WOW Assertion Error.
+//
+#define STATUS_WOW_ASSERTION ((NTSTATUS)0xC0009898L)
+
+//
+// MessageId: RPC_NT_INVALID_STRING_BINDING
+//
+// MessageText:
+//
+// The string binding is invalid.
+//
+#define RPC_NT_INVALID_STRING_BINDING ((NTSTATUS)0xC0020001L)
+
+//
+// MessageId: RPC_NT_WRONG_KIND_OF_BINDING
+//
+// MessageText:
+//
+// The binding handle is not the correct type.
+//
+#define RPC_NT_WRONG_KIND_OF_BINDING ((NTSTATUS)0xC0020002L)
+
+//
+// MessageId: RPC_NT_INVALID_BINDING
+//
+// MessageText:
+//
+// The binding handle is invalid.
+//
+#define RPC_NT_INVALID_BINDING ((NTSTATUS)0xC0020003L)
+
+//
+// MessageId: RPC_NT_PROTSEQ_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The RPC protocol sequence is not supported.
+//
+#define RPC_NT_PROTSEQ_NOT_SUPPORTED ((NTSTATUS)0xC0020004L)
+
+//
+// MessageId: RPC_NT_INVALID_RPC_PROTSEQ
+//
+// MessageText:
+//
+// The RPC protocol sequence is invalid.
+//
+#define RPC_NT_INVALID_RPC_PROTSEQ ((NTSTATUS)0xC0020005L)
+
+//
+// MessageId: RPC_NT_INVALID_STRING_UUID
+//
+// MessageText:
+//
+// The string UUID is invalid.
+//
+#define RPC_NT_INVALID_STRING_UUID ((NTSTATUS)0xC0020006L)
+
+//
+// MessageId: RPC_NT_INVALID_ENDPOINT_FORMAT
+//
+// MessageText:
+//
+// The endpoint format is invalid.
+//
+#define RPC_NT_INVALID_ENDPOINT_FORMAT ((NTSTATUS)0xC0020007L)
+
+//
+// MessageId: RPC_NT_INVALID_NET_ADDR
+//
+// MessageText:
+//
+// The network address is invalid.
+//
+#define RPC_NT_INVALID_NET_ADDR ((NTSTATUS)0xC0020008L)
+
+//
+// MessageId: RPC_NT_NO_ENDPOINT_FOUND
+//
+// MessageText:
+//
+// No endpoint was found.
+//
+#define RPC_NT_NO_ENDPOINT_FOUND ((NTSTATUS)0xC0020009L)
+
+//
+// MessageId: RPC_NT_INVALID_TIMEOUT
+//
+// MessageText:
+//
+// The timeout value is invalid.
+//
+#define RPC_NT_INVALID_TIMEOUT ((NTSTATUS)0xC002000AL)
+
+//
+// MessageId: RPC_NT_OBJECT_NOT_FOUND
+//
+// MessageText:
+//
+// The object UUID was not found.
+//
+#define RPC_NT_OBJECT_NOT_FOUND ((NTSTATUS)0xC002000BL)
+
+//
+// MessageId: RPC_NT_ALREADY_REGISTERED
+//
+// MessageText:
+//
+// The object UUID has already been registered.
+//
+#define RPC_NT_ALREADY_REGISTERED ((NTSTATUS)0xC002000CL)
+
+//
+// MessageId: RPC_NT_TYPE_ALREADY_REGISTERED
+//
+// MessageText:
+//
+// The type UUID has already been registered.
+//
+#define RPC_NT_TYPE_ALREADY_REGISTERED ((NTSTATUS)0xC002000DL)
+
+//
+// MessageId: RPC_NT_ALREADY_LISTENING
+//
+// MessageText:
+//
+// The RPC server is already listening.
+//
+#define RPC_NT_ALREADY_LISTENING ((NTSTATUS)0xC002000EL)
+
+//
+// MessageId: RPC_NT_NO_PROTSEQS_REGISTERED
+//
+// MessageText:
+//
+// No protocol sequences have been registered.
+//
+#define RPC_NT_NO_PROTSEQS_REGISTERED ((NTSTATUS)0xC002000FL)
+
+//
+// MessageId: RPC_NT_NOT_LISTENING
+//
+// MessageText:
+//
+// The RPC server is not listening.
+//
+#define RPC_NT_NOT_LISTENING ((NTSTATUS)0xC0020010L)
+
+//
+// MessageId: RPC_NT_UNKNOWN_MGR_TYPE
+//
+// MessageText:
+//
+// The manager type is unknown.
+//
+#define RPC_NT_UNKNOWN_MGR_TYPE ((NTSTATUS)0xC0020011L)
+
+//
+// MessageId: RPC_NT_UNKNOWN_IF
+//
+// MessageText:
+//
+// The interface is unknown.
+//
+#define RPC_NT_UNKNOWN_IF ((NTSTATUS)0xC0020012L)
+
+//
+// MessageId: RPC_NT_NO_BINDINGS
+//
+// MessageText:
+//
+// There are no bindings.
+//
+#define RPC_NT_NO_BINDINGS ((NTSTATUS)0xC0020013L)
+
+//
+// MessageId: RPC_NT_NO_PROTSEQS
+//
+// MessageText:
+//
+// There are no protocol sequences.
+//
+#define RPC_NT_NO_PROTSEQS ((NTSTATUS)0xC0020014L)
+
+//
+// MessageId: RPC_NT_CANT_CREATE_ENDPOINT
+//
+// MessageText:
+//
+// The endpoint cannot be created.
+//
+#define RPC_NT_CANT_CREATE_ENDPOINT ((NTSTATUS)0xC0020015L)
+
+//
+// MessageId: RPC_NT_OUT_OF_RESOURCES
+//
+// MessageText:
+//
+// Not enough resources are available to complete this operation.
+//
+#define RPC_NT_OUT_OF_RESOURCES ((NTSTATUS)0xC0020016L)
+
+//
+// MessageId: RPC_NT_SERVER_UNAVAILABLE
+//
+// MessageText:
+//
+// The RPC server is unavailable.
+//
+#define RPC_NT_SERVER_UNAVAILABLE ((NTSTATUS)0xC0020017L)
+
+//
+// MessageId: RPC_NT_SERVER_TOO_BUSY
+//
+// MessageText:
+//
+// The RPC server is too busy to complete this operation.
+//
+#define RPC_NT_SERVER_TOO_BUSY ((NTSTATUS)0xC0020018L)
+
+//
+// MessageId: RPC_NT_INVALID_NETWORK_OPTIONS
+//
+// MessageText:
+//
+// The network options are invalid.
+//
+#define RPC_NT_INVALID_NETWORK_OPTIONS ((NTSTATUS)0xC0020019L)
+
+//
+// MessageId: RPC_NT_NO_CALL_ACTIVE
+//
+// MessageText:
+//
+// There is not a remote procedure call active in this thread.
+//
+#define RPC_NT_NO_CALL_ACTIVE ((NTSTATUS)0xC002001AL)
+
+//
+// MessageId: RPC_NT_CALL_FAILED
+//
+// MessageText:
+//
+// The remote procedure call failed.
+//
+#define RPC_NT_CALL_FAILED ((NTSTATUS)0xC002001BL)
+
+//
+// MessageId: RPC_NT_CALL_FAILED_DNE
+//
+// MessageText:
+//
+// The remote procedure call failed and did not execute.
+//
+#define RPC_NT_CALL_FAILED_DNE ((NTSTATUS)0xC002001CL)
+
+//
+// MessageId: RPC_NT_PROTOCOL_ERROR
+//
+// MessageText:
+//
+// An RPC protocol error occurred.
+//
+#define RPC_NT_PROTOCOL_ERROR ((NTSTATUS)0xC002001DL)
+
+//
+// MessageId: RPC_NT_UNSUPPORTED_TRANS_SYN
+//
+// MessageText:
+//
+// The transfer syntax is not supported by the RPC server.
+//
+#define RPC_NT_UNSUPPORTED_TRANS_SYN ((NTSTATUS)0xC002001FL)
+
+//
+// MessageId: RPC_NT_UNSUPPORTED_TYPE
+//
+// MessageText:
+//
+// The type UUID is not supported.
+//
+#define RPC_NT_UNSUPPORTED_TYPE ((NTSTATUS)0xC0020021L)
+
+//
+// MessageId: RPC_NT_INVALID_TAG
+//
+// MessageText:
+//
+// The tag is invalid.
+//
+#define RPC_NT_INVALID_TAG ((NTSTATUS)0xC0020022L)
+
+//
+// MessageId: RPC_NT_INVALID_BOUND
+//
+// MessageText:
+//
+// The array bounds are invalid.
+//
+#define RPC_NT_INVALID_BOUND ((NTSTATUS)0xC0020023L)
+
+//
+// MessageId: RPC_NT_NO_ENTRY_NAME
+//
+// MessageText:
+//
+// The binding does not contain an entry name.
+//
+#define RPC_NT_NO_ENTRY_NAME ((NTSTATUS)0xC0020024L)
+
+//
+// MessageId: RPC_NT_INVALID_NAME_SYNTAX
+//
+// MessageText:
+//
+// The name syntax is invalid.
+//
+#define RPC_NT_INVALID_NAME_SYNTAX ((NTSTATUS)0xC0020025L)
+
+//
+// MessageId: RPC_NT_UNSUPPORTED_NAME_SYNTAX
+//
+// MessageText:
+//
+// The name syntax is not supported.
+//
+#define RPC_NT_UNSUPPORTED_NAME_SYNTAX ((NTSTATUS)0xC0020026L)
+
+//
+// MessageId: RPC_NT_UUID_NO_ADDRESS
+//
+// MessageText:
+//
+// No network address is available to use to construct a UUID.
+//
+#define RPC_NT_UUID_NO_ADDRESS ((NTSTATUS)0xC0020028L)
+
+//
+// MessageId: RPC_NT_DUPLICATE_ENDPOINT
+//
+// MessageText:
+//
+// The endpoint is a duplicate.
+//
+#define RPC_NT_DUPLICATE_ENDPOINT ((NTSTATUS)0xC0020029L)
+
+//
+// MessageId: RPC_NT_UNKNOWN_AUTHN_TYPE
+//
+// MessageText:
+//
+// The authentication type is unknown.
+//
+#define RPC_NT_UNKNOWN_AUTHN_TYPE ((NTSTATUS)0xC002002AL)
+
+//
+// MessageId: RPC_NT_MAX_CALLS_TOO_SMALL
+//
+// MessageText:
+//
+// The maximum number of calls is too small.
+//
+#define RPC_NT_MAX_CALLS_TOO_SMALL ((NTSTATUS)0xC002002BL)
+
+//
+// MessageId: RPC_NT_STRING_TOO_LONG
+//
+// MessageText:
+//
+// The string is too long.
+//
+#define RPC_NT_STRING_TOO_LONG ((NTSTATUS)0xC002002CL)
+
+//
+// MessageId: RPC_NT_PROTSEQ_NOT_FOUND
+//
+// MessageText:
+//
+// The RPC protocol sequence was not found.
+//
+#define RPC_NT_PROTSEQ_NOT_FOUND ((NTSTATUS)0xC002002DL)
+
+//
+// MessageId: RPC_NT_PROCNUM_OUT_OF_RANGE
+//
+// MessageText:
+//
+// The procedure number is out of range.
+//
+#define RPC_NT_PROCNUM_OUT_OF_RANGE ((NTSTATUS)0xC002002EL)
+
+//
+// MessageId: RPC_NT_BINDING_HAS_NO_AUTH
+//
+// MessageText:
+//
+// The binding does not contain any authentication information.
+//
+#define RPC_NT_BINDING_HAS_NO_AUTH ((NTSTATUS)0xC002002FL)
+
+//
+// MessageId: RPC_NT_UNKNOWN_AUTHN_SERVICE
+//
+// MessageText:
+//
+// The authentication service is unknown.
+//
+#define RPC_NT_UNKNOWN_AUTHN_SERVICE ((NTSTATUS)0xC0020030L)
+
+//
+// MessageId: RPC_NT_UNKNOWN_AUTHN_LEVEL
+//
+// MessageText:
+//
+// The authentication level is unknown.
+//
+#define RPC_NT_UNKNOWN_AUTHN_LEVEL ((NTSTATUS)0xC0020031L)
+
+//
+// MessageId: RPC_NT_INVALID_AUTH_IDENTITY
+//
+// MessageText:
+//
+// The security context is invalid.
+//
+#define RPC_NT_INVALID_AUTH_IDENTITY ((NTSTATUS)0xC0020032L)
+
+//
+// MessageId: RPC_NT_UNKNOWN_AUTHZ_SERVICE
+//
+// MessageText:
+//
+// The authorization service is unknown.
+//
+#define RPC_NT_UNKNOWN_AUTHZ_SERVICE ((NTSTATUS)0xC0020033L)
+
+//
+// MessageId: EPT_NT_INVALID_ENTRY
+//
+// MessageText:
+//
+// The entry is invalid.
+//
+#define EPT_NT_INVALID_ENTRY ((NTSTATUS)0xC0020034L)
+
+//
+// MessageId: EPT_NT_CANT_PERFORM_OP
+//
+// MessageText:
+//
+// The operation cannot be performed.
+//
+#define EPT_NT_CANT_PERFORM_OP ((NTSTATUS)0xC0020035L)
+
+//
+// MessageId: EPT_NT_NOT_REGISTERED
+//
+// MessageText:
+//
+// There are no more endpoints available from the endpoint mapper.
+//
+#define EPT_NT_NOT_REGISTERED ((NTSTATUS)0xC0020036L)
+
+//
+// MessageId: RPC_NT_NOTHING_TO_EXPORT
+//
+// MessageText:
+//
+// No interfaces have been exported.
+//
+#define RPC_NT_NOTHING_TO_EXPORT ((NTSTATUS)0xC0020037L)
+
+//
+// MessageId: RPC_NT_INCOMPLETE_NAME
+//
+// MessageText:
+//
+// The entry name is incomplete.
+//
+#define RPC_NT_INCOMPLETE_NAME ((NTSTATUS)0xC0020038L)
+
+//
+// MessageId: RPC_NT_INVALID_VERS_OPTION
+//
+// MessageText:
+//
+// The version option is invalid.
+//
+#define RPC_NT_INVALID_VERS_OPTION ((NTSTATUS)0xC0020039L)
+
+//
+// MessageId: RPC_NT_NO_MORE_MEMBERS
+//
+// MessageText:
+//
+// There are no more members.
+//
+#define RPC_NT_NO_MORE_MEMBERS ((NTSTATUS)0xC002003AL)
+
+//
+// MessageId: RPC_NT_NOT_ALL_OBJS_UNEXPORTED
+//
+// MessageText:
+//
+// There is nothing to unexport.
+//
+#define RPC_NT_NOT_ALL_OBJS_UNEXPORTED ((NTSTATUS)0xC002003BL)
+
+//
+// MessageId: RPC_NT_INTERFACE_NOT_FOUND
+//
+// MessageText:
+//
+// The interface was not found.
+//
+#define RPC_NT_INTERFACE_NOT_FOUND ((NTSTATUS)0xC002003CL)
+
+//
+// MessageId: RPC_NT_ENTRY_ALREADY_EXISTS
+//
+// MessageText:
+//
+// The entry already exists.
+//
+#define RPC_NT_ENTRY_ALREADY_EXISTS ((NTSTATUS)0xC002003DL)
+
+//
+// MessageId: RPC_NT_ENTRY_NOT_FOUND
+//
+// MessageText:
+//
+// The entry is not found.
+//
+#define RPC_NT_ENTRY_NOT_FOUND ((NTSTATUS)0xC002003EL)
+
+//
+// MessageId: RPC_NT_NAME_SERVICE_UNAVAILABLE
+//
+// MessageText:
+//
+// The name service is unavailable.
+//
+#define RPC_NT_NAME_SERVICE_UNAVAILABLE ((NTSTATUS)0xC002003FL)
+
+//
+// MessageId: RPC_NT_INVALID_NAF_ID
+//
+// MessageText:
+//
+// The network address family is invalid.
+//
+#define RPC_NT_INVALID_NAF_ID ((NTSTATUS)0xC0020040L)
+
+//
+// MessageId: RPC_NT_CANNOT_SUPPORT
+//
+// MessageText:
+//
+// The requested operation is not supported.
+//
+#define RPC_NT_CANNOT_SUPPORT ((NTSTATUS)0xC0020041L)
+
+//
+// MessageId: RPC_NT_NO_CONTEXT_AVAILABLE
+//
+// MessageText:
+//
+// No security context is available to allow impersonation.
+//
+#define RPC_NT_NO_CONTEXT_AVAILABLE ((NTSTATUS)0xC0020042L)
+
+//
+// MessageId: RPC_NT_INTERNAL_ERROR
+//
+// MessageText:
+//
+// An internal error occurred in RPC.
+//
+#define RPC_NT_INTERNAL_ERROR ((NTSTATUS)0xC0020043L)
+
+//
+// MessageId: RPC_NT_ZERO_DIVIDE
+//
+// MessageText:
+//
+// The RPC server attempted an integer divide by zero.
+//
+#define RPC_NT_ZERO_DIVIDE ((NTSTATUS)0xC0020044L)
+
+//
+// MessageId: RPC_NT_ADDRESS_ERROR
+//
+// MessageText:
+//
+// An addressing error occurred in the RPC server.
+//
+#define RPC_NT_ADDRESS_ERROR ((NTSTATUS)0xC0020045L)
+
+//
+// MessageId: RPC_NT_FP_DIV_ZERO
+//
+// MessageText:
+//
+// A floating point operation at the RPC server caused a divide by zero.
+//
+#define RPC_NT_FP_DIV_ZERO ((NTSTATUS)0xC0020046L)
+
+//
+// MessageId: RPC_NT_FP_UNDERFLOW
+//
+// MessageText:
+//
+// A floating point underflow occurred at the RPC server.
+//
+#define RPC_NT_FP_UNDERFLOW ((NTSTATUS)0xC0020047L)
+
+//
+// MessageId: RPC_NT_FP_OVERFLOW
+//
+// MessageText:
+//
+// A floating point overflow occurred at the RPC server.
+//
+#define RPC_NT_FP_OVERFLOW ((NTSTATUS)0xC0020048L)
+
+//
+// MessageId: RPC_NT_NO_MORE_ENTRIES
+//
+// MessageText:
+//
+// The list of RPC servers available for auto-handle binding has been exhausted.
+//
+#define RPC_NT_NO_MORE_ENTRIES ((NTSTATUS)0xC0030001L)
+
+//
+// MessageId: RPC_NT_SS_CHAR_TRANS_OPEN_FAIL
+//
+// MessageText:
+//
+// The file designated by DCERPCCHARTRANS cannot be opened.
+//
+#define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL ((NTSTATUS)0xC0030002L)
+
+//
+// MessageId: RPC_NT_SS_CHAR_TRANS_SHORT_FILE
+//
+// MessageText:
+//
+// The file containing the character translation table has fewer than
+// 512 bytes.
+//
+#define RPC_NT_SS_CHAR_TRANS_SHORT_FILE ((NTSTATUS)0xC0030003L)
+
+//
+// MessageId: RPC_NT_SS_IN_NULL_CONTEXT
+//
+// MessageText:
+//
+// A null context handle is passed as an [in] parameter.
+//
+#define RPC_NT_SS_IN_NULL_CONTEXT ((NTSTATUS)0xC0030004L)
+
+//
+// MessageId: RPC_NT_SS_CONTEXT_MISMATCH
+//
+// MessageText:
+//
+// The context handle does not match any known context handles.
+//
+#define RPC_NT_SS_CONTEXT_MISMATCH ((NTSTATUS)0xC0030005L)
+
+//
+// MessageId: RPC_NT_SS_CONTEXT_DAMAGED
+//
+// MessageText:
+//
+// The context handle changed during a call.
+//
+#define RPC_NT_SS_CONTEXT_DAMAGED ((NTSTATUS)0xC0030006L)
+
+//
+// MessageId: RPC_NT_SS_HANDLES_MISMATCH
+//
+// MessageText:
+//
+// The binding handles passed to a remote procedure call do not match.
+//
+#define RPC_NT_SS_HANDLES_MISMATCH ((NTSTATUS)0xC0030007L)
+
+//
+// MessageId: RPC_NT_SS_CANNOT_GET_CALL_HANDLE
+//
+// MessageText:
+//
+// The stub is unable to get the call handle.
+//
+#define RPC_NT_SS_CANNOT_GET_CALL_HANDLE ((NTSTATUS)0xC0030008L)
+
+//
+// MessageId: RPC_NT_NULL_REF_POINTER
+//
+// MessageText:
+//
+// A null reference pointer was passed to the stub.
+//
+#define RPC_NT_NULL_REF_POINTER ((NTSTATUS)0xC0030009L)
+
+//
+// MessageId: RPC_NT_ENUM_VALUE_OUT_OF_RANGE
+//
+// MessageText:
+//
+// The enumeration value is out of range.
+//
+#define RPC_NT_ENUM_VALUE_OUT_OF_RANGE ((NTSTATUS)0xC003000AL)
+
+//
+// MessageId: RPC_NT_BYTE_COUNT_TOO_SMALL
+//
+// MessageText:
+//
+// The byte count is too small.
+//
+#define RPC_NT_BYTE_COUNT_TOO_SMALL ((NTSTATUS)0xC003000BL)
+
+//
+// MessageId: RPC_NT_BAD_STUB_DATA
+//
+// MessageText:
+//
+// The stub received bad data.
+//
+#define RPC_NT_BAD_STUB_DATA ((NTSTATUS)0xC003000CL)
+
+//
+// MessageId: RPC_NT_CALL_IN_PROGRESS
+//
+// MessageText:
+//
+// A remote procedure call is already in progress for this thread.
+//
+#define RPC_NT_CALL_IN_PROGRESS ((NTSTATUS)0xC0020049L)
+
+//
+// MessageId: RPC_NT_NO_MORE_BINDINGS
+//
+// MessageText:
+//
+// There are no more bindings.
+//
+#define RPC_NT_NO_MORE_BINDINGS ((NTSTATUS)0xC002004AL)
+
+//
+// MessageId: RPC_NT_GROUP_MEMBER_NOT_FOUND
+//
+// MessageText:
+//
+// The group member was not found.
+//
+#define RPC_NT_GROUP_MEMBER_NOT_FOUND ((NTSTATUS)0xC002004BL)
+
+//
+// MessageId: EPT_NT_CANT_CREATE
+//
+// MessageText:
+//
+// The endpoint mapper database could not be created.
+//
+#define EPT_NT_CANT_CREATE ((NTSTATUS)0xC002004CL)
+
+//
+// MessageId: RPC_NT_INVALID_OBJECT
+//
+// MessageText:
+//
+// The object UUID is the nil UUID.
+//
+#define RPC_NT_INVALID_OBJECT ((NTSTATUS)0xC002004DL)
+
+//
+// MessageId: RPC_NT_NO_INTERFACES
+//
+// MessageText:
+//
+// No interfaces have been registered.
+//
+#define RPC_NT_NO_INTERFACES ((NTSTATUS)0xC002004FL)
+
+//
+// MessageId: RPC_NT_CALL_CANCELLED
+//
+// MessageText:
+//
+// The server was altered while processing this call.
+//
+#define RPC_NT_CALL_CANCELLED ((NTSTATUS)0xC0020050L)
+
+//
+// MessageId: RPC_NT_BINDING_INCOMPLETE
+//
+// MessageText:
+//
+// The binding handle does not contain all required information.
+//
+#define RPC_NT_BINDING_INCOMPLETE ((NTSTATUS)0xC0020051L)
+
+//
+// MessageId: RPC_NT_COMM_FAILURE
+//
+// MessageText:
+//
+// Communications failure.
+//
+#define RPC_NT_COMM_FAILURE ((NTSTATUS)0xC0020052L)
+
+//
+// MessageId: RPC_NT_UNSUPPORTED_AUTHN_LEVEL
+//
+// MessageText:
+//
+// The requested authentication level is not supported.
+//
+#define RPC_NT_UNSUPPORTED_AUTHN_LEVEL ((NTSTATUS)0xC0020053L)
+
+//
+// MessageId: RPC_NT_NO_PRINC_NAME
+//
+// MessageText:
+//
+// No principal name registered.
+//
+#define RPC_NT_NO_PRINC_NAME ((NTSTATUS)0xC0020054L)
+
+//
+// MessageId: RPC_NT_NOT_RPC_ERROR
+//
+// MessageText:
+//
+// The error specified is not a valid Windows NT RPC error code.
+//
+#define RPC_NT_NOT_RPC_ERROR ((NTSTATUS)0xC0020055L)
+
+//
+// MessageId: RPC_NT_UUID_LOCAL_ONLY
+//
+// MessageText:
+//
+// A UUID that is valid only on this computer has been allocated.
+//
+#define RPC_NT_UUID_LOCAL_ONLY ((NTSTATUS)0x40020056L)
+
+//
+// MessageId: RPC_NT_SEC_PKG_ERROR
+//
+// MessageText:
+//
+// A security package specific error occurred.
+//
+#define RPC_NT_SEC_PKG_ERROR ((NTSTATUS)0xC0020057L)
+
+//
+// MessageId: RPC_NT_NOT_CANCELLED
+//
+// MessageText:
+//
+// Thread is not cancelled.
+//
+#define RPC_NT_NOT_CANCELLED ((NTSTATUS)0xC0020058L)
+
+//
+// MessageId: RPC_NT_INVALID_ES_ACTION
+//
+// MessageText:
+//
+// Invalid operation on the encoding/decoding handle.
+//
+#define RPC_NT_INVALID_ES_ACTION ((NTSTATUS)0xC0030059L)
+
+//
+// MessageId: RPC_NT_WRONG_ES_VERSION
+//
+// MessageText:
+//
+// Incompatible version of the serializing package.
+//
+#define RPC_NT_WRONG_ES_VERSION ((NTSTATUS)0xC003005AL)
+
+//
+// MessageId: RPC_NT_WRONG_STUB_VERSION
+//
+// MessageText:
+//
+// Incompatible version of the RPC stub.
+//
+#define RPC_NT_WRONG_STUB_VERSION ((NTSTATUS)0xC003005BL)
+
+//
+// MessageId: RPC_NT_INVALID_PIPE_OBJECT
+//
+// MessageText:
+//
+// The idl pipe object is invalid or corrupted.
+//
+#define RPC_NT_INVALID_PIPE_OBJECT ((NTSTATUS)0xC003005CL)
+
+//
+// MessageId: RPC_NT_INVALID_PIPE_OPERATION
+//
+// MessageText:
+//
+// The operation is invalid for a given idl pipe object.
+//
+#define RPC_NT_INVALID_PIPE_OPERATION ((NTSTATUS)0xC003005DL)
+
+//
+// MessageId: RPC_NT_WRONG_PIPE_VERSION
+//
+// MessageText:
+//
+// The idl pipe version is not supported.
+//
+#define RPC_NT_WRONG_PIPE_VERSION ((NTSTATUS)0xC003005EL)
+
+//
+// MessageId: RPC_NT_SEND_INCOMPLETE
+//
+// MessageText:
+//
+// Some data remains to be sent in the request buffer.
+//
+#define RPC_NT_SEND_INCOMPLETE ((NTSTATUS)0x400200AFL)
+
+/*lint -restore */ // Resume checking for different macro definitions // winnt
+// end_ntsecapi
+
+#endif // WIN32_NO_STATUS // winnt
+#endif // _NTSTATUS_
diff --git a/public/sdk/inc/nturtl.h b/public/sdk/inc/nturtl.h
new file mode 100644
index 000000000..804848cba
--- /dev/null
+++ b/public/sdk/inc/nturtl.h
@@ -0,0 +1,897 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntrtl.h
+
+Abstract:
+
+ Include file for NT runtime routines that are callable by only
+ user mode code in various.
+
+Author:
+
+ Steve Wood (stevewo) 10-Aug-1989
+
+Environment:
+
+ These routines are statically linked in the caller's executable and
+ are callable in only from user mode. They make use of Nt system
+ services.
+
+Revision History:
+
+--*/
+
+#ifndef _NTURTL_
+#define _NTURTL_
+
+//
+// CriticalSection function definitions
+//
+// begin_winnt
+
+typedef struct _RTL_CRITICAL_SECTION_DEBUG {
+ USHORT Type;
+ USHORT CreatorBackTraceIndex;
+ struct _RTL_CRITICAL_SECTION *CriticalSection;
+ LIST_ENTRY ProcessLocksList;
+ ULONG EntryCount;
+ ULONG ContentionCount;
+ ULONG Spare[ 2 ];
+} RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG;
+
+#define RTL_CRITSECT_TYPE 0
+#define RTL_RESOURCE_TYPE 1
+
+typedef struct _RTL_CRITICAL_SECTION {
+ PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
+
+ //
+ // The following three fields control entering and exiting the critical
+ // section for the resource
+ //
+
+ LONG LockCount;
+ LONG RecursionCount;
+ HANDLE OwningThread; // from the thread's ClientId->UniqueThread
+ HANDLE LockSemaphore;
+ ULONG Reserved;
+} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
+// end_winnt
+
+//
+// Shared resource function definitions
+//
+
+typedef struct _RTL_RESOURCE_DEBUG {
+ ULONG Reserved[ 5 ]; // Make it the same length as RTL_CRITICAL_SECTION_DEBUG
+
+ ULONG ContentionCount;
+ ULONG Spare[ 2 ];
+} RTL_RESOURCE_DEBUG, *PRTL_RESOURCE_DEBUG;
+
+typedef struct _RTL_RESOURCE {
+
+ //
+ // The following field controls entering and exiting the critical
+ // section for the resource
+ //
+
+ RTL_CRITICAL_SECTION CriticalSection;
+
+ //
+ // The following four fields indicate the number of both shared or
+ // exclusive waiters
+ //
+
+ HANDLE SharedSemaphore;
+ ULONG NumberOfWaitingShared;
+ HANDLE ExclusiveSemaphore;
+ ULONG NumberOfWaitingExclusive;
+
+ //
+ // The following indicates the current state of the resource
+ //
+ // <0 the resource is acquired for exclusive access with the
+ // absolute value indicating the number of recursive accesses
+ // to the resource
+ //
+ // 0 the resource is available
+ //
+ // >0 the resource is acquired for shared access with the
+ // value indicating the number of shared accesses to the resource
+ //
+
+ LONG NumberOfActive;
+ HANDLE ExclusiveOwnerThread;
+
+ ULONG Flags; // See RTL_RESOURCE_FLAG_ equates below.
+
+ PRTL_RESOURCE_DEBUG DebugInfo;
+} RTL_RESOURCE, *PRTL_RESOURCE;
+
+#define RTL_RESOURCE_FLAG_LONG_TERM ((ULONG) 0x00000001)
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlEnterCriticalSection(
+ PRTL_CRITICAL_SECTION CriticalSection
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlLeaveCriticalSection(
+ PRTL_CRITICAL_SECTION CriticalSection
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlTryEnterCriticalSection(
+ PRTL_CRITICAL_SECTION CriticalSection
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlInitializeCriticalSection(
+ PRTL_CRITICAL_SECTION CriticalSection
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDeleteCriticalSection(
+ PRTL_CRITICAL_SECTION CriticalSection
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitializeResource(
+ PRTL_RESOURCE Resource
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlAcquireResourceShared(
+ PRTL_RESOURCE Resource,
+ BOOLEAN Wait
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlAcquireResourceExclusive(
+ PRTL_RESOURCE Resource,
+ BOOLEAN Wait
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlReleaseResource(
+ PRTL_RESOURCE Resource
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlConvertSharedToExclusive(
+ PRTL_RESOURCE Resource
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlConvertExclusiveToShared(
+ PRTL_RESOURCE Resource
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlDeleteResource (
+ PRTL_RESOURCE Resource
+ );
+
+//
+// Current Directory Stuff
+//
+
+typedef struct _RTL_RELATIVE_NAME {
+ STRING RelativeName;
+ HANDLE ContainingDirectory;
+} RTL_RELATIVE_NAME, *PRTL_RELATIVE_NAME;
+
+typedef enum _RTL_PATH_TYPE {
+ RtlPathTypeUnknown,
+ RtlPathTypeUncAbsolute,
+ RtlPathTypeDriveAbsolute,
+ RtlPathTypeDriveRelative,
+ RtlPathTypeRooted,
+ RtlPathTypeRelative,
+ RtlPathTypeLocalDevice,
+ RtlPathTypeRootLocalDevice
+} RTL_PATH_TYPE;
+
+NTSYSAPI
+RTL_PATH_TYPE
+NTAPI
+RtlDetermineDosPathNameType_U(
+ PCWSTR DosFileName
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlIsDosDeviceName_U(
+ PWSTR DosFileName
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlGetFullPathName_U(
+ PCWSTR lpFileName,
+ ULONG nBufferLength,
+ PWSTR lpBuffer,
+ PWSTR *lpFilePart
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlGetCurrentDirectory_U(
+ ULONG nBufferLength,
+ PWSTR lpBuffer
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetCurrentDirectory_U(
+ PUNICODE_STRING PathName
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlGetLongestNtPathLength( VOID );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlDosPathNameToNtPathName_U(
+ PCWSTR DosFileName,
+ PUNICODE_STRING NtFileName,
+ PWSTR *FilePart OPTIONAL,
+ PRTL_RELATIVE_NAME RelativeName OPTIONAL
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlDosSearchPath_U(
+ PWSTR lpPath,
+ PWSTR lpFileName,
+ PWSTR lpExtension,
+ ULONG nBufferLength,
+ PWSTR lpBuffer,
+ PWSTR *lpFilePart
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlDoesFileExists_U(
+ PCWSTR FileName
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlInitializeProfile (
+ BOOLEAN KernelToo
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlStartProfile (
+ VOID
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlStopProfile (
+ VOID
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlAnalyzeProfile (
+ VOID
+ );
+
+//
+// User mode only security Rtl routines
+//
+
+//
+// Structure to hold information about an ACE to be created
+//
+
+typedef struct {
+ UCHAR AceType;
+ UCHAR InheritFlags;
+ UCHAR AceFlags;
+ ACCESS_MASK Mask;
+ PSID *Sid;
+} RTL_ACE_DATA, *PRTL_ACE_DATA;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlNewSecurityObject(
+ PSECURITY_DESCRIPTOR ParentDescriptor,
+ PSECURITY_DESCRIPTOR CreatorDescriptor,
+ PSECURITY_DESCRIPTOR * NewDescriptor,
+ BOOLEAN IsDirectoryObject,
+ HANDLE Token,
+ PGENERIC_MAPPING GenericMapping
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlSetSecurityObject (
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR ModificationDescriptor,
+ PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
+ PGENERIC_MAPPING GenericMapping,
+ HANDLE Token
+ );
+
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQuerySecurityObject (
+ PSECURITY_DESCRIPTOR ObjectDescriptor,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR ResultantDescriptor,
+ ULONG DescriptorLength,
+ PULONG ReturnLength
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDeleteSecurityObject (
+ PSECURITY_DESCRIPTOR * ObjectDescriptor
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlNewInstanceSecurityObject(
+ BOOLEAN ParentDescriptorChanged,
+ BOOLEAN CreatorDescriptorChanged,
+ PLUID OldClientTokenModifiedId,
+ PLUID NewClientTokenModifiedId,
+ PSECURITY_DESCRIPTOR ParentDescriptor,
+ PSECURITY_DESCRIPTOR CreatorDescriptor,
+ PSECURITY_DESCRIPTOR * NewDescriptor,
+ BOOLEAN IsDirectoryObject,
+ HANDLE Token,
+ PGENERIC_MAPPING GenericMapping
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCopySecurityDescriptor(
+ PSECURITY_DESCRIPTOR InputSecurityDescriptor,
+ PSECURITY_DESCRIPTOR *OutputSecurityDescriptor
+ );
+
+//
+// list canonicalization
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlConvertUiListToApiList(
+ PUNICODE_STRING UiList OPTIONAL,
+ PUNICODE_STRING ApiList,
+ BOOLEAN BlankIsDelimiter
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateAndSetSD(
+ IN PRTL_ACE_DATA AceData,
+ IN ULONG AceCount,
+ IN PSID OwnerSid OPTIONAL,
+ IN PSID GroupSid OPTIONAL,
+ OUT PSECURITY_DESCRIPTOR *NewDescriptor
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCreateUserSecurityObject(
+ IN PRTL_ACE_DATA AceData,
+ IN ULONG AceCount,
+ IN PSID OwnerSid,
+ IN PSID GroupSid,
+ IN BOOLEAN IsDirectoryObject,
+ IN PGENERIC_MAPPING GenericMapping,
+ OUT PSECURITY_DESCRIPTOR *NewDescriptor
+ );
+
+//
+// Per-Thread Curdir Support
+//
+
+typedef struct _RTL_PERTHREAD_CURDIR {
+ PRTL_DRIVE_LETTER_CURDIR CurrentDirectories;
+ PUNICODE_STRING ImageName;
+ PVOID Environment;
+} RTL_PERTHREAD_CURDIR, *PRTL_PERTHREAD_CURDIR;
+
+#define RtlAssociatePerThreadCurdir(BLOCK,CURRENTDIRECTORIES,IMAGENAME,ENVIRONMENT)\
+ (BLOCK)->CurrentDirectories = (CURRENTDIRECTORIES); \
+ (BLOCK)->ImageName = (IMAGENAME); \
+ (BLOCK)->Environment = (ENVIRONMENT); \
+ NtCurrentTeb()->NtTib.SubSystemTib = (PVOID)(BLOCK) \
+
+#define RtlDisAssociatePerThreadCurdir() \
+ NtCurrentTeb()->NtTib.SubSystemTib = NULL;
+
+#define RtlGetPerThreadCurdir() \
+ ((PRTL_PERTHREAD_CURDIR)(NtCurrentTeb()->NtTib.SubSystemTib))
+
+
+//
+// See NTRTL.H for heap functions availble to both kernel and user mode code.
+//
+
+#define RtlProcessHeap() (NtCurrentPeb()->ProcessHeap)
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLockHeap(
+ IN PVOID HeapHandle
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlUnlockHeap(
+ IN PVOID HeapHandle
+ );
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlReAllocateHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN PVOID BaseAddress,
+ IN ULONG Size
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlGetUserInfoHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN PVOID BaseAddress,
+ OUT PVOID *UserValue OPTIONAL,
+ OUT PULONG UserFlags OPTIONAL
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlSetUserValueHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN PVOID BaseAddress,
+ IN PVOID UserValue
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlSetUserFlagsHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN PVOID BaseAddress,
+ IN ULONG UserFlagsReset,
+ IN ULONG UserFlagsSet
+ );
+
+typedef struct _RTL_HEAP_TAG_INFO {
+ ULONG NumberOfAllocations;
+ ULONG NumberOfFrees;
+ ULONG BytesAllocated;
+} RTL_HEAP_TAG_INFO, *PRTL_HEAP_TAG_INFO;
+
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlCreateTagHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN PWSTR TagPrefix OPTIONAL,
+ IN PWSTR TagNames
+ );
+
+#define RTL_HEAP_MAKE_TAG HEAP_MAKE_TAG_FLAGS
+
+NTSYSAPI
+PWSTR
+NTAPI
+RtlQueryTagHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN USHORT TagIndex,
+ IN BOOLEAN ResetCounters,
+ OUT PRTL_HEAP_TAG_INFO TagInfo OPTIONAL
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlSizeHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN PVOID BaseAddress
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlExtendHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN PVOID Base,
+ IN ULONG Size
+ );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlCompactHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlZeroHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlValidateHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN PVOID BaseAddress
+ );
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlValidateProcessHeaps( VOID );
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlGetProcessHeaps(
+ ULONG NumberOfHeaps,
+ PVOID *ProcessHeaps
+ );
+
+
+typedef
+NTSTATUS (*PRTL_ENUM_HEAPS_ROUTINE)(
+ PVOID HeapHandle,
+ PVOID Parameter
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlEnumProcessHeaps(
+ PRTL_ENUM_HEAPS_ROUTINE EnumRoutine,
+ PVOID Parameter
+ );
+
+typedef struct _RTL_HEAP_USAGE_ENTRY {
+ struct _RTL_HEAP_USAGE_ENTRY *Next;
+ PVOID Address;
+ ULONG Size;
+ USHORT AllocatorBackTraceIndex;
+ USHORT TagIndex;
+} RTL_HEAP_USAGE_ENTRY, *PRTL_HEAP_USAGE_ENTRY;
+
+typedef struct _RTL_HEAP_USAGE {
+ ULONG Length;
+ ULONG BytesAllocated;
+ ULONG BytesCommitted;
+ ULONG BytesReserved;
+ ULONG BytesReservedMaximum;
+ PRTL_HEAP_USAGE_ENTRY Entries;
+ PRTL_HEAP_USAGE_ENTRY AddedEntries;
+ PRTL_HEAP_USAGE_ENTRY RemovedEntries;
+ ULONG Reserved[ 8 ];
+} RTL_HEAP_USAGE, *PRTL_HEAP_USAGE;
+
+#define HEAP_USAGE_ALLOCATED_BLOCKS HEAP_REALLOC_IN_PLACE_ONLY
+#define HEAP_USAGE_FREE_BUFFER HEAP_ZERO_MEMORY
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlUsageHeap(
+ IN PVOID HeapHandle,
+ IN ULONG Flags,
+ IN OUT PRTL_HEAP_USAGE Usage
+ );
+
+typedef struct _RTL_HEAP_WALK_ENTRY {
+ PVOID DataAddress;
+ ULONG DataSize;
+ UCHAR OverheadBytes;
+ UCHAR SegmentIndex;
+ USHORT Flags;
+ union {
+ struct {
+ ULONG Settable;
+ USHORT TagIndex;
+ USHORT AllocatorBackTraceIndex;
+ ULONG Reserved[ 2 ];
+ } Block;
+ struct {
+ ULONG CommittedSize;
+ ULONG UnCommittedSize;
+ PVOID FirstEntry;
+ PVOID LastEntry;
+ } Segment;
+ };
+} RTL_HEAP_WALK_ENTRY, *PRTL_HEAP_WALK_ENTRY;
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlWalkHeap(
+ IN PVOID HeapHandle,
+ IN OUT PRTL_HEAP_WALK_ENTRY Entry
+ );
+
+typedef struct _RTL_HEAP_ENTRY {
+ ULONG Size;
+ USHORT Flags;
+ USHORT AllocatorBackTraceIndex;
+ union {
+ struct {
+ ULONG Settable;
+ ULONG Tag;
+ } s1; // All other heap entries
+ struct {
+ ULONG CommittedSize;
+ PVOID FirstBlock;
+ } s2; // RTL_SEGMENT
+ } u;
+} RTL_HEAP_ENTRY, *PRTL_HEAP_ENTRY;
+
+#define RTL_HEAP_BUSY (USHORT)0x0001
+#define RTL_HEAP_SEGMENT (USHORT)0x0002
+#define RTL_HEAP_SETTABLE_VALUE (USHORT)0x0010
+#define RTL_HEAP_SETTABLE_FLAG1 (USHORT)0x0020
+#define RTL_HEAP_SETTABLE_FLAG2 (USHORT)0x0040
+#define RTL_HEAP_SETTABLE_FLAG3 (USHORT)0x0080
+#define RTL_HEAP_SETTABLE_FLAGS (USHORT)0x00E0
+#define RTL_HEAP_UNCOMMITTED_RANGE (USHORT)0x0100
+#define RTL_HEAP_PROTECTED_ENTRY (USHORT)0x0200
+
+typedef struct _RTL_HEAP_TAG {
+ ULONG NumberOfAllocations;
+ ULONG NumberOfFrees;
+ ULONG BytesAllocated;
+ USHORT TagIndex;
+ USHORT CreatorBackTraceIndex;
+ WCHAR TagName[ 24 ];
+} RTL_HEAP_TAG, *PRTL_HEAP_TAG;
+
+typedef struct _RTL_HEAP_INFORMATION {
+ PVOID BaseAddress;
+ ULONG Flags;
+ USHORT EntryOverhead;
+ USHORT CreatorBackTraceIndex;
+ ULONG BytesAllocated;
+ ULONG BytesCommitted;
+ ULONG NumberOfTags;
+ ULONG NumberOfEntries;
+ ULONG NumberOfPseudoTags;
+ ULONG PseudoTagGranularity;
+ ULONG Reserved[ 5 ];
+ PRTL_HEAP_TAG Tags;
+ PRTL_HEAP_ENTRY Entries;
+} RTL_HEAP_INFORMATION, *PRTL_HEAP_INFORMATION;
+
+typedef struct _RTL_PROCESS_HEAPS {
+ ULONG NumberOfHeaps;
+ RTL_HEAP_INFORMATION Heaps[ 1 ];
+} RTL_PROCESS_HEAPS, *PRTL_PROCESS_HEAPS;
+
+//
+// Debugging support
+//
+
+typedef struct _RTL_DEBUG_INFORMATION {
+ HANDLE SectionHandleClient;
+ PVOID ViewBaseClient;
+ PVOID ViewBaseTarget;
+ ULONG ViewBaseDelta;
+ HANDLE EventPairClient;
+ HANDLE EventPairTarget;
+ HANDLE TargetProcessId;
+ HANDLE TargetThreadHandle;
+ ULONG Flags;
+ ULONG OffsetFree;
+ ULONG CommitSize;
+ ULONG ViewSize;
+ PRTL_PROCESS_MODULES Modules;
+ PRTL_PROCESS_BACKTRACES BackTraces;
+ PRTL_PROCESS_HEAPS Heaps;
+ PRTL_PROCESS_LOCKS Locks;
+ PVOID SpecificHeap;
+ HANDLE TargetProcessHandle;
+ PVOID Reserved[ 6 ];
+} RTL_DEBUG_INFORMATION, *PRTL_DEBUG_INFORMATION;
+
+NTSYSAPI
+PRTL_DEBUG_INFORMATION
+NTAPI
+RtlCreateQueryDebugBuffer(
+ IN ULONG MaximumCommit OPTIONAL,
+ IN BOOLEAN UseEventPair
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlDestroyQueryDebugBuffer(
+ IN PRTL_DEBUG_INFORMATION Buffer
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQueryProcessDebugInformation(
+ IN HANDLE UniqueProcessId,
+ IN ULONG Flags,
+ IN OUT PRTL_DEBUG_INFORMATION Buffer
+ );
+
+#define RTL_QUERY_PROCESS_MODULES 0x00000001
+#define RTL_QUERY_PROCESS_BACKTRACES 0x00000002
+#define RTL_QUERY_PROCESS_HEAP_SUMMARY 0x00000004
+#define RTL_QUERY_PROCESS_HEAP_TAGS 0x00000008
+#define RTL_QUERY_PROCESS_HEAP_ENTRIES 0x00000010
+#define RTL_QUERY_PROCESS_LOCKS 0x00000020
+
+NTSTATUS
+NTAPI
+RtlQueryProcessModuleInformation(
+ IN OUT PRTL_DEBUG_INFORMATION Buffer
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQueryProcessBackTraceInformation(
+ IN OUT PRTL_DEBUG_INFORMATION Buffer
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQueryProcessHeapInformation(
+ IN OUT PRTL_DEBUG_INFORMATION Buffer
+ );
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlQueryProcessLockInformation(
+ IN OUT PRTL_DEBUG_INFORMATION Buffer
+ );
+
+
+
+//
+// Routines for manipulating user mode handle tables. Used for Atoms
+// and Local/Global memory allocations.
+//
+
+typedef struct _RTL_HANDLE_TABLE_ENTRY {
+ union {
+ ULONG Flags; // Allocated entries have low bit set
+ struct _RTL_HANDLE_TABLE_ENTRY *NextFree; // Free entries use this word for free list
+ };
+} RTL_HANDLE_TABLE_ENTRY, *PRTL_HANDLE_TABLE_ENTRY;
+
+#define RTL_HANDLE_ALLOCATED (USHORT)0x0001
+
+typedef struct _RTL_HANDLE_TABLE {
+ ULONG MaximumNumberOfHandles;
+ ULONG SizeOfHandleTableEntry;
+ ULONG Reserved[ 2 ];
+ PRTL_HANDLE_TABLE_ENTRY FreeHandles;
+ PRTL_HANDLE_TABLE_ENTRY CommittedHandles;
+ PRTL_HANDLE_TABLE_ENTRY UnCommittedHandles;
+ PRTL_HANDLE_TABLE_ENTRY MaxReservedHandles;
+} RTL_HANDLE_TABLE, *PRTL_HANDLE_TABLE;
+
+void
+RtlInitializeHandleTable(
+ IN ULONG MaximumNumberOfHandles,
+ IN ULONG SizeOfHandleTableEntry,
+ OUT PRTL_HANDLE_TABLE HandleTable
+ );
+
+NTSTATUS
+RtlDestroyHandleTable(
+ IN OUT PRTL_HANDLE_TABLE HandleTable
+ );
+
+PRTL_HANDLE_TABLE_ENTRY
+RtlAllocateHandle(
+ IN PRTL_HANDLE_TABLE HandleTable,
+ OUT PULONG HandleIndex OPTIONAL
+ );
+
+BOOLEAN
+RtlFreeHandle(
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN PRTL_HANDLE_TABLE_ENTRY Handle
+ );
+
+BOOLEAN
+RtlIsValidHandle(
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN PRTL_HANDLE_TABLE_ENTRY Handle
+ );
+
+BOOLEAN
+RtlIsValidIndexHandle(
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN ULONG HandleIndex,
+ OUT PRTL_HANDLE_TABLE_ENTRY *Handle
+ );
+
+#endif // _NTURTL_
diff --git a/public/sdk/inc/ntverp.h b/public/sdk/inc/ntverp.h
new file mode 100644
index 000000000..6a00a1e6f
--- /dev/null
+++ b/public/sdk/inc/ntverp.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ * *
+ * 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 */
+/* */
+/* the VER_PRODUCTBUILD lines must contain the product */
+/* comments (Win9x or NT) and end with the build#<CR><LF> */
+/* */
+/* the VER_PRODUCTBETA_STR lines must contain the product */
+/* comments (Win9x or NT) and end with "some string"<CR><LF> */
+/*--------------------------------------------------------------*/
+
+#define VER_PRODUCTBUILD_QFE 3
+
+#if defined(NASHVILLE)
+#define VER_PRODUCTBUILD /* Win9x */ 1089
+#define VER_PRODUCTBETA_STR /* Win9x */ ""
+#define VER_PRODUCTVERSION_STR "4.70"
+#define VER_PRODUCTVERSION 4,70,VER_PRODUCTBUILD,VER_PRODUCTBUILD_QFE
+#define VER_PRODUCTVERSION_W (0x0446)
+#define VER_PRODUCTVERSION_DW (0x04460000 | VER_PRODUCTBUILD)
+
+#else
+#define VER_PRODUCTBUILD /* NT */ 1381
+#define VER_PRODUCTBETA_STR /* NT */ ""
+#define VER_PRODUCTVERSION_STR "4.00"
+#define VER_PRODUCTVERSION 4,00,VER_PRODUCTBUILD,VER_PRODUCTBUILD_QFE
+#define VER_PRODUCTVERSION_W (0x0400)
+#define VER_PRODUCTVERSION_DW (0x04000000 | VER_PRODUCTBUILD)
+
+#endif
+
+/*--------------------------------------------------------------*/
+/* 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(R) Windows NT(TM) Operating System"
+#define VER_LEGALTRADEMARKS_STR \
+"Microsoft(R) is a registered trademark of Microsoft Corporation. Windows NT(TM) is a trademark of Microsoft Corporation."
diff --git a/public/sdk/inc/ntxcapi.h b/public/sdk/inc/ntxcapi.h
new file mode 100644
index 000000000..55b242c65
--- /dev/null
+++ b/public/sdk/inc/ntxcapi.h
@@ -0,0 +1,336 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1989-1993 Microsoft Corporation
+
+Module Name:
+
+ ntxcapi.h
+
+Abstract:
+
+ This module contains procedure prototypes and data structures
+ that support structured exception handling.
+
+Author:
+
+ Mark Lucovsky (markl) 29-Jun-1989
+
+Revision History:
+
+--*/
+
+#ifndef _NTXCAPI_
+#define _NTXCAPI_
+
+// begin_ntddk
+//
+// Exception flag definitions.
+//
+
+// begin_winnt
+#define EXCEPTION_NONCONTINUABLE 0x1 // Noncontinuable exception
+// end_winnt
+
+// end_ntddk
+#define EXCEPTION_UNWINDING 0x2 // Unwind is in progress
+#define EXCEPTION_EXIT_UNWIND 0x4 // Exit unwind is in progress
+#define EXCEPTION_STACK_INVALID 0x8 // Stack out of limits or unaligned
+#define EXCEPTION_NESTED_CALL 0x10 // Nested exception handler call
+#define EXCEPTION_TARGET_UNWIND 0x20 // Target unwind in progress
+#define EXCEPTION_COLLIDED_UNWIND 0x40 // Collided exception handler call
+
+#define EXCEPTION_UNWIND (EXCEPTION_UNWINDING | EXCEPTION_EXIT_UNWIND | \
+ EXCEPTION_TARGET_UNWIND | EXCEPTION_COLLIDED_UNWIND)
+
+#define IS_UNWINDING(Flag) ((Flag & EXCEPTION_UNWIND) != 0)
+#define IS_DISPATCHING(Flag) ((Flag & EXCEPTION_UNWIND) == 0)
+#define IS_TARGET_UNWIND(Flag) (Flag & EXCEPTION_TARGET_UNWIND)
+
+// begin_ntddk begin_nthal
+//
+// Define maximum number of exception parameters.
+//
+
+// begin_winnt
+#define EXCEPTION_MAXIMUM_PARAMETERS 15 // maximum number of exception parameters
+
+//
+// Exception record definition.
+//
+
+typedef struct _EXCEPTION_RECORD {
+ /*lint -e18 */ // Don't complain about different definitions
+ NTSTATUS ExceptionCode;
+ /*lint +e18 */ // Resume checking for different definitions
+ ULONG ExceptionFlags;
+ struct _EXCEPTION_RECORD *ExceptionRecord;
+ PVOID ExceptionAddress;
+ ULONG NumberParameters;
+ ULONG ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+ } EXCEPTION_RECORD;
+
+typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
+
+//
+// Typedef for pointer returned by exception_info()
+//
+
+typedef struct _EXCEPTION_POINTERS {
+ PEXCEPTION_RECORD ExceptionRecord;
+ PCONTEXT ContextRecord;
+} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
+// end_winnt
+
+// end_ntddk end_nthal
+
+//
+// Define IEEE exception information.
+//
+// Define 32-, 64-, 80-, and 128-bit IEEE floating operand structures.
+//
+
+typedef struct _FP_32 {
+ ULONG W[1];
+} FP_32, *PFP_32;
+
+typedef struct _FP_64 {
+ ULONG W[2];
+} FP_64, *PFP_64;
+
+typedef struct _FP_80 {
+ ULONG W[3];
+} FP_80, *PFP_80;
+
+typedef struct _FP_128 {
+ ULONG W[4];
+} FP_128, *PFP_128;
+
+//
+// Define IEEE compare result values.
+//
+
+typedef enum _FP_IEEE_COMPARE_RESULT {
+ FpCompareEqual,
+ FpCompareGreater,
+ FpCompareLess,
+ FpCompareUnordered
+} FP_IEEE_COMPARE_RESULT;
+
+//
+// Define IEEE format and result precision values.
+//
+
+typedef enum _FP__IEEE_FORMAT {
+ FpFormatFp32,
+ FpFormatFp64,
+ FpFormatFp80,
+ FpFormatFp128,
+ FpFormatI16,
+ FpFormatI32,
+ FpFormatI64,
+ FpFormatU16,
+ FpFormatU32,
+ FpFormatU64,
+ FpFormatCompare,
+ FpFormatString
+} FP_IEEE_FORMAT;
+
+//
+// Define IEEE operation code values.
+//
+
+typedef enum _FP_IEEE_OPERATION_CODE {
+ FpCodeUnspecified,
+ FpCodeAdd,
+ FpCodeSubtract,
+ FpCodeMultiply,
+ FpCodeDivide,
+ FpCodeSquareRoot,
+ FpCodeRemainder,
+ FpCodeCompare,
+ FpCodeConvert,
+ FpCodeRound,
+ FpCodeTruncate,
+ FpCodeFloor,
+ FpCodeCeil,
+ FpCodeAcos,
+ FpCodeAsin,
+ FpCodeAtan,
+ FpCodeAtan2,
+ FpCodeCabs,
+ FpCodeCos,
+ FpCodeCosh,
+ FpCodeExp,
+ FpCodeFabs,
+ FpCodeFmod,
+ FpCodeFrexp,
+ FpCodeHypot,
+ FpCodeLdexp,
+ FpCodeLog,
+ FpCodeLog10,
+ FpCodeModf,
+ FpCodePow,
+ FpCodeSin,
+ FpCodeSinh,
+ FpCodeTan,
+ FpCodeTanh,
+ FpCodeY0,
+ FpCodeY1,
+ FpCodeYn
+} FP_OPERATION_CODE;
+
+//
+// Define IEEE rounding modes.
+//
+
+typedef enum _FP__IEEE_ROUNDING_MODE {
+ FpRoundNearest,
+ FpRoundMinusInfinity,
+ FpRoundPlusInfinity,
+ FpRoundChopped
+} FP_IEEE_ROUNDING_MODE;
+
+//
+// Define IEEE floating exception operand structure.
+//
+
+typedef struct _FP_IEEE_VALUE {
+ union {
+ SHORT I16Value;
+ USHORT U16Value;
+ LONG I32Value;
+ ULONG U32Value;
+ PVOID StringValue;
+ ULONG CompareValue;
+ FP_32 Fp32Value;
+ LARGE_INTEGER I64Value;
+ ULARGE_INTEGER U64Value;
+ FP_64 Fp64Value;
+ FP_80 Fp80Value;
+ FP_128 Fp128Value;
+ } Value;
+
+ struct {
+ ULONG RoundingMode : 2;
+ ULONG Inexact : 1;
+ ULONG Underflow : 1;
+ ULONG Overflow : 1;
+ ULONG ZeroDivide : 1;
+ ULONG InvalidOperation : 1;
+ ULONG OperandValid : 1;
+ ULONG Format : 4;
+ ULONG Precision : 4;
+ ULONG Operation : 12;
+ ULONG Spare : 3;
+ ULONG HardwareException : 1;
+ } Control;
+
+} FP_IEEE_VALUE, *PFP_IEEE_VALUE;
+
+//
+// Define IEEE exception infomation structure.
+//
+
+#include "pshpack4.h"
+typedef struct _FP_IEEE_RECORD {
+ FP_IEEE_VALUE Operand1;
+ FP_IEEE_VALUE Operand2;
+ FP_IEEE_VALUE Result;
+} FP_IEEE_RECORD, *PFP_IEEE_RECORD;
+#include "poppack.h"
+
+//
+// Exception dispatcher routine definition.
+//
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlDispatchException (
+ IN PEXCEPTION_RECORD ExceptionRecord,
+ IN PCONTEXT ContextRecord
+ );
+
+//
+// Exception handling procedure prototypes.
+//
+
+NTSYSAPI
+VOID
+NTAPI
+RtlRaiseStatus (
+ IN NTSTATUS Status
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlRaiseException (
+ IN PEXCEPTION_RECORD
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlUnwind (
+ IN PVOID TargetFrame OPTIONAL,
+ IN PVOID TargetIp OPTIONAL,
+ IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
+ IN PVOID ReturnValue
+ );
+
+#if defined(_ALPHA_)
+
+NTSYSAPI
+VOID
+NTAPI
+RtlUnwindRfp (
+ IN PVOID TargetRealFrame OPTIONAL,
+ IN PVOID TargetIp OPTIONAL,
+ IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
+ IN PVOID ReturnValue
+ );
+
+#endif
+
+#if defined(_MIPS_) || defined(_ALPHA_) || defined(_PPC_)
+
+NTSYSAPI
+VOID
+NTAPI
+RtlUnwind2 (
+ IN PVOID TargetFrame OPTIONAL,
+ IN PVOID TargetIp OPTIONAL,
+ IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
+ IN PVOID ReturnValue,
+ IN PCONTEXT ContextRecord
+ );
+
+#endif
+
+//
+// Continue execution.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtContinue (
+ IN PCONTEXT ContextRecord,
+ IN BOOLEAN TestAlert
+ );
+
+//
+// Raise exception.
+//
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtRaiseException (
+ IN PEXCEPTION_RECORD ExceptionRecord,
+ IN PCONTEXT ContextRecord,
+ IN BOOLEAN FirstChance
+ );
+
+#endif //_NTXCAPI_
diff --git a/public/sdk/inc/oadvhr.h b/public/sdk/inc/oadvhr.h
new file mode 100644
index 000000000..90c610264
--- /dev/null
+++ b/public/sdk/inc/oadvhr.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: oadvhr.h
+//
+// Contents: Replacement for oadvhr.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/oaidl.h b/public/sdk/inc/oaidl.h
new file mode 100644
index 000000000..de248764f
--- /dev/null
+++ b/public/sdk/inc/oaidl.h
@@ -0,0 +1,5942 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:36:29 1996
+ */
+/* Compiler settings for oaidl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __oaidl_h__
+#define __oaidl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ICreateTypeInfo_FWD_DEFINED__
+#define __ICreateTypeInfo_FWD_DEFINED__
+typedef interface ICreateTypeInfo ICreateTypeInfo;
+#endif /* __ICreateTypeInfo_FWD_DEFINED__ */
+
+
+#ifndef __ICreateTypeInfo2_FWD_DEFINED__
+#define __ICreateTypeInfo2_FWD_DEFINED__
+typedef interface ICreateTypeInfo2 ICreateTypeInfo2;
+#endif /* __ICreateTypeInfo2_FWD_DEFINED__ */
+
+
+#ifndef __ICreateTypeLib_FWD_DEFINED__
+#define __ICreateTypeLib_FWD_DEFINED__
+typedef interface ICreateTypeLib ICreateTypeLib;
+#endif /* __ICreateTypeLib_FWD_DEFINED__ */
+
+
+#ifndef __ICreateTypeLib2_FWD_DEFINED__
+#define __ICreateTypeLib2_FWD_DEFINED__
+typedef interface ICreateTypeLib2 ICreateTypeLib2;
+#endif /* __ICreateTypeLib2_FWD_DEFINED__ */
+
+
+#ifndef __IDispatch_FWD_DEFINED__
+#define __IDispatch_FWD_DEFINED__
+typedef interface IDispatch IDispatch;
+#endif /* __IDispatch_FWD_DEFINED__ */
+
+
+#ifndef __IEnumVARIANT_FWD_DEFINED__
+#define __IEnumVARIANT_FWD_DEFINED__
+typedef interface IEnumVARIANT IEnumVARIANT;
+#endif /* __IEnumVARIANT_FWD_DEFINED__ */
+
+
+#ifndef __ITypeComp_FWD_DEFINED__
+#define __ITypeComp_FWD_DEFINED__
+typedef interface ITypeComp ITypeComp;
+#endif /* __ITypeComp_FWD_DEFINED__ */
+
+
+#ifndef __ITypeInfo_FWD_DEFINED__
+#define __ITypeInfo_FWD_DEFINED__
+typedef interface ITypeInfo ITypeInfo;
+#endif /* __ITypeInfo_FWD_DEFINED__ */
+
+
+#ifndef __ITypeInfo2_FWD_DEFINED__
+#define __ITypeInfo2_FWD_DEFINED__
+typedef interface ITypeInfo2 ITypeInfo2;
+#endif /* __ITypeInfo2_FWD_DEFINED__ */
+
+
+#ifndef __ITypeLib_FWD_DEFINED__
+#define __ITypeLib_FWD_DEFINED__
+typedef interface ITypeLib ITypeLib;
+#endif /* __ITypeLib_FWD_DEFINED__ */
+
+
+#ifndef __ITypeLib2_FWD_DEFINED__
+#define __ITypeLib2_FWD_DEFINED__
+typedef interface ITypeLib2 ITypeLib2;
+#endif /* __ITypeLib2_FWD_DEFINED__ */
+
+
+#ifndef __ITypeChangeEvents_FWD_DEFINED__
+#define __ITypeChangeEvents_FWD_DEFINED__
+typedef interface ITypeChangeEvents ITypeChangeEvents;
+#endif /* __ITypeChangeEvents_FWD_DEFINED__ */
+
+
+#ifndef __IErrorInfo_FWD_DEFINED__
+#define __IErrorInfo_FWD_DEFINED__
+typedef interface IErrorInfo IErrorInfo;
+#endif /* __IErrorInfo_FWD_DEFINED__ */
+
+
+#ifndef __ICreateErrorInfo_FWD_DEFINED__
+#define __ICreateErrorInfo_FWD_DEFINED__
+typedef interface ICreateErrorInfo ICreateErrorInfo;
+#endif /* __ICreateErrorInfo_FWD_DEFINED__ */
+
+
+#ifndef __ISupportErrorInfo_FWD_DEFINED__
+#define __ISupportErrorInfo_FWD_DEFINED__
+typedef interface ISupportErrorInfo ISupportErrorInfo;
+#endif /* __ISupportErrorInfo_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IOleAutomationTypes_INTERFACE_DEFINED__
+#define __IOleAutomationTypes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleAutomationTypes
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][unique][version] */
+
+
+typedef CY CURRENCY;
+
+typedef struct tagSAFEARRAYBOUND
+ {
+ ULONG cElements;
+ LONG lLbound;
+ } SAFEARRAYBOUND;
+
+typedef struct tagSAFEARRAYBOUND __RPC_FAR *LPSAFEARRAYBOUND;
+
+#if defined(_OLEAUT32_)
+/* the following is what MIDL knows how to remote */
+typedef /* [unique] */ struct _wireVARIANT __RPC_FAR *wireVARIANT;
+
+typedef struct _wireSAFEARR_BSTR
+ {
+ ULONG Size;
+ /* [ref][size_is] */ wireBSTR __RPC_FAR *aBstr;
+ } SAFEARR_BSTR;
+
+typedef struct _wireSAFEARR_UNKNOWN
+ {
+ ULONG Size;
+ /* [ref][size_is] */ IUnknown __RPC_FAR *__RPC_FAR *apUnknown;
+ } SAFEARR_UNKNOWN;
+
+typedef struct _wireSAFEARR_DISPATCH
+ {
+ ULONG Size;
+ /* [ref][size_is] */ IDispatch __RPC_FAR *__RPC_FAR *apDispatch;
+ } SAFEARR_DISPATCH;
+
+typedef struct _wireSAFEARR_VARIANT
+ {
+ ULONG Size;
+ /* [ref][size_is] */ wireVARIANT __RPC_FAR *aVariant;
+ } SAFEARR_VARIANT;
+
+typedef /* [v1_enum] */
+enum tagSF_TYPE
+ { SF_ERROR = VT_ERROR,
+ SF_I1 = VT_I1,
+ SF_I2 = VT_I2,
+ SF_I4 = VT_I4,
+ SF_I8 = VT_I8,
+ SF_BSTR = VT_BSTR,
+ SF_UNKNOWN = VT_UNKNOWN,
+ SF_DISPATCH = VT_DISPATCH,
+ SF_VARIANT = VT_VARIANT
+ } SF_TYPE;
+
+typedef struct _wireSAFEARRAY_UNION
+ {
+ ULONG sfType;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IOleAutomationTypes_0001
+ {
+ /* [case()] */ SAFEARR_BSTR BstrStr;
+ /* [case()] */ SAFEARR_UNKNOWN UnknownStr;
+ /* [case()] */ SAFEARR_DISPATCH DispatchStr;
+ /* [case()] */ SAFEARR_VARIANT VariantStr;
+ /* [case()] */ BYTE_SIZEDARR ByteStr;
+ /* [case()] */ WORD_SIZEDARR WordStr;
+ /* [case()] */ DWORD_SIZEDARR LongStr;
+ /* [case()] */ HYPER_SIZEDARR HyperStr;
+ /* [default] */ /* Empty union arm */
+ } u;
+ } SAFEARRAYUNION;
+
+typedef /* [unique] */ struct _wireSAFEARRAY
+ {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ SAFEARRAYUNION uArrayStructs;
+ /* [size_is] */ SAFEARRAYBOUND rgsabound[ 1 ];
+ } __RPC_FAR *wireSAFEARRAY;
+
+typedef /* [unique] */ wireSAFEARRAY __RPC_FAR *wirePSAFEARRAY;
+
+#endif /* _OLEAUT32_ */
+typedef struct tagSAFEARRAY
+ {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ PVOID pvData;
+ SAFEARRAYBOUND rgsabound[ 1 ];
+ } SAFEARRAY;
+
+typedef /* [wire_marshal] */ SAFEARRAY __RPC_FAR *LPSAFEARRAY;
+
+#define FADF_AUTO ( 0x1 )
+
+#define FADF_STATIC ( 0x2 )
+
+#define FADF_EMBEDDED ( 0x4 )
+
+#define FADF_FIXEDSIZE ( 0x10 )
+
+#define FADF_BSTR ( 0x100 )
+
+#define FADF_UNKNOWN ( 0x200 )
+
+#define FADF_DISPATCH ( 0x400 )
+
+#define FADF_VARIANT ( 0x800 )
+
+#define FADF_RESERVED ( 0xf0e8 )
+
+/* VARIANT STRUCTURE
+ *
+ * VARTYPE vt;
+ * WORD wReserved1;
+ * WORD wReserved2;
+ * WORD wReserved3;
+ * union {
+ * LONG VT_I4
+ * BYTE VT_UI1
+ * SHORT VT_I2
+ * FLOAT VT_R4
+ * DOUBLE VT_R8
+ * VARIANT_BOOL VT_BOOL
+ * SCODE VT_ERROR
+ * CY VT_CY
+ * DATE VT_DATE
+ * BSTR VT_BSTR
+ * IUnknown * VT_UNKNOWN
+ * IDispatch * VT_DISPATCH
+ * SAFEARRAY * VT_ARRAY
+ * BYTE * VT_BYREF|VT_UI1
+ * SHORT * VT_BYREF|VT_I2
+ * LONG * VT_BYREF|VT_I4
+ * FLOAT * VT_BYREF|VT_R4
+ * DOUBLE * VT_BYREF|VT_R8
+ * VARIANT_BOOL * VT_BYREF|VT_BOOL
+ * SCODE * VT_BYREF|VT_ERROR
+ * CY * VT_BYREF|VT_CY
+ * DATE * VT_BYREF|VT_DATE
+ * BSTR * VT_BYREF|VT_BSTR
+ * IUnknown ** VT_BYREF|VT_UNKNOWN
+ * IDispatch ** VT_BYREF|VT_DISPATCH
+ * SAFEARRAY ** VT_BYREF|VT_ARRAY
+ * VARIANT * VT_BYREF|VT_VARIANT
+ * PVOID VT_BYREF (Generic ByRef)
+ * CHAR VT_I1
+ * USHORT VT_UI2
+ * ULONG VT_UI4
+ * INT VT_INT
+ * UINT VT_UINT
+ * DECIMAL * VT_BYREF|VT_DECIMAL
+ * CHAR * VT_BYREF|VT_I1
+ * USHORT * VT_BYREF|VT_UI2
+ * ULONG * VT_BYREF|VT_UI4
+ * INT * VT_BYREF|VT_INT
+ * UINT * VT_BYREF|VT_UINT
+ * }
+ */
+#if __STDC__ || defined(NONAMELESSUNION)
+#define __VARIANT_NAME_1 n1
+#define __VARIANT_NAME_2 n2
+#define __VARIANT_NAME_3 n3
+#else
+#define __tagVARIANT
+#define __VARIANT_NAME_1
+#define __VARIANT_NAME_2
+#define __VARIANT_NAME_3
+#endif
+typedef /* [wire_marshal] */ struct tagVARIANT VARIANT;
+
+struct tagVARIANT
+ {
+ union
+ {
+ struct __tagVARIANT
+ {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ union
+ {
+ LONG lVal;
+ BYTE bVal;
+ SHORT iVal;
+ FLOAT fltVal;
+ DOUBLE dblVal;
+ VARIANT_BOOL boolVal;
+ _VARIANT_BOOL bool;
+ SCODE scode;
+ CY cyVal;
+ DATE date;
+ BSTR bstrVal;
+ IUnknown __RPC_FAR *punkVal;
+ IDispatch __RPC_FAR *pdispVal;
+ SAFEARRAY __RPC_FAR *parray;
+ BYTE __RPC_FAR *pbVal;
+ SHORT __RPC_FAR *piVal;
+ LONG __RPC_FAR *plVal;
+ FLOAT __RPC_FAR *pfltVal;
+ DOUBLE __RPC_FAR *pdblVal;
+ VARIANT_BOOL __RPC_FAR *pboolVal;
+ _VARIANT_BOOL __RPC_FAR *pbool;
+ SCODE __RPC_FAR *pscode;
+ CY __RPC_FAR *pcyVal;
+ DATE __RPC_FAR *pdate;
+ BSTR __RPC_FAR *pbstrVal;
+ IUnknown __RPC_FAR *__RPC_FAR *ppunkVal;
+ IDispatch __RPC_FAR *__RPC_FAR *ppdispVal;
+ SAFEARRAY __RPC_FAR *__RPC_FAR *pparray;
+ VARIANT __RPC_FAR *pvarVal;
+ PVOID byref;
+ CHAR cVal;
+ USHORT uiVal;
+ ULONG ulVal;
+ INT intVal;
+ UINT uintVal;
+ DECIMAL __RPC_FAR *pdecVal;
+ CHAR __RPC_FAR *pcVal;
+ USHORT __RPC_FAR *puiVal;
+ ULONG __RPC_FAR *pulVal;
+ INT __RPC_FAR *pintVal;
+ UINT __RPC_FAR *puintVal;
+ } __VARIANT_NAME_3;
+ } __VARIANT_NAME_2;
+ DECIMAL decVal;
+ } __VARIANT_NAME_1;
+ };
+typedef VARIANT __RPC_FAR *LPVARIANT;
+
+typedef VARIANT VARIANTARG;
+
+typedef VARIANT __RPC_FAR *LPVARIANTARG;
+
+#if defined(_OLEAUT32_)
+/* the following is what MIDL knows how to remote */
+struct _wireVARIANT
+ {
+ USHORT vt;
+ USHORT wReserved1;
+ USHORT wReserved2;
+ USHORT wReserved3;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ LONG lVal;
+ /* [case()] */ BYTE bVal;
+ /* [case()] */ SHORT iVal;
+ /* [case()] */ FLOAT fltVal;
+ /* [case()] */ DOUBLE dblVal;
+ /* [case()] */ VARIANT_BOOL boolVal;
+ /* [case()] */ SCODE scode;
+ /* [case()] */ CY cyVal;
+ /* [case()] */ DATE date;
+ /* [case()] */ wireBSTR bstrVal;
+ /* [case()] */ IUnknown __RPC_FAR *punkVal;
+ /* [case()] */ IDispatch __RPC_FAR *pdispVal;
+ /* [case()] */ wireSAFEARRAY parray;
+ /* [case()] */ BYTE __RPC_FAR *pbVal;
+ /* [case()] */ SHORT __RPC_FAR *piVal;
+ /* [case()] */ LONG __RPC_FAR *plVal;
+ /* [case()] */ FLOAT __RPC_FAR *pfltVal;
+ /* [case()] */ DOUBLE __RPC_FAR *pdblVal;
+ /* [case()] */ VARIANT_BOOL __RPC_FAR *pboolVal;
+ /* [case()] */ SCODE __RPC_FAR *pscode;
+ /* [case()] */ CY __RPC_FAR *pcyVal;
+ /* [case()] */ DATE __RPC_FAR *pdate;
+ /* [case()] */ wireBSTR __RPC_FAR *pbstrVal;
+ /* [case()] */ IUnknown __RPC_FAR *__RPC_FAR *ppunkVal;
+ /* [case()] */ IDispatch __RPC_FAR *__RPC_FAR *ppdispVal;
+ /* [case()] */ wireSAFEARRAY __RPC_FAR *pparray;
+ /* [case()] */ wireVARIANT __RPC_FAR *pvarVal;
+ /* [case()] */ CHAR cVal;
+ /* [case()] */ USHORT uiVal;
+ /* [case()] */ ULONG ulVal;
+ /* [case()] */ INT intVal;
+ /* [case()] */ UINT uintVal;
+ /* [case()] */ DECIMAL decVal;
+ /* [case()] */ DECIMAL __RPC_FAR *pdecVal;
+ /* [case()] */ CHAR __RPC_FAR *pcVal;
+ /* [case()] */ USHORT __RPC_FAR *puiVal;
+ /* [case()] */ ULONG __RPC_FAR *pulVal;
+ /* [case()] */ INT __RPC_FAR *pintVal;
+ /* [case()] */ UINT __RPC_FAR *puintVal;
+ /* [case()] */ /* Empty union arm */
+ /* [case()] */ /* Empty union arm */
+ } ;
+ };
+#endif /* _OLEAUT32_ */
+typedef LONG DISPID;
+
+typedef DISPID MEMBERID;
+
+typedef DWORD HREFTYPE;
+
+typedef /* [v1_enum] */
+enum tagTYPEKIND
+ { TKIND_ENUM = 0,
+ TKIND_RECORD = TKIND_ENUM + 1,
+ TKIND_MODULE = TKIND_RECORD + 1,
+ TKIND_INTERFACE = TKIND_MODULE + 1,
+ TKIND_DISPATCH = TKIND_INTERFACE + 1,
+ TKIND_COCLASS = TKIND_DISPATCH + 1,
+ TKIND_ALIAS = TKIND_COCLASS + 1,
+ TKIND_UNION = TKIND_ALIAS + 1,
+ TKIND_MAX = TKIND_UNION + 1
+ } TYPEKIND;
+
+typedef struct tagTYPEDESC
+ {
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ struct tagTYPEDESC __RPC_FAR *lptdesc;
+ /* [case()] */ struct tagARRAYDESC __RPC_FAR *lpadesc;
+ /* [case()] */ HREFTYPE hreftype;
+ /* [default] */ /* Empty union arm */
+ } ;
+ VARTYPE vt;
+ } TYPEDESC;
+
+typedef struct tagARRAYDESC
+ {
+ TYPEDESC tdescElem;
+ USHORT cDims;
+ /* [size_is] */ SAFEARRAYBOUND rgbounds[ 1 ];
+ } ARRAYDESC;
+
+typedef struct tagPARAMDESCEX
+ {
+ ULONG cBytes;
+ VARIANTARG varDefaultValue;
+ } PARAMDESCEX;
+
+typedef struct tagPARAMDESCEX __RPC_FAR *LPPARAMDESCEX;
+
+typedef struct tagPARAMDESC
+ {
+ LPPARAMDESCEX pparamdescex;
+ USHORT wParamFlags;
+ } PARAMDESC;
+
+typedef struct tagPARAMDESC __RPC_FAR *LPPARAMDESC;
+
+#define PARAMFLAG_NONE ( 0 )
+
+#define PARAMFLAG_FIN ( 0x1 )
+
+#define PARAMFLAG_FOUT ( 0x2 )
+
+#define PARAMFLAG_FLCID ( 0x4 )
+
+#define PARAMFLAG_FRETVAL ( 0x8 )
+
+#define PARAMFLAG_FOPT ( 0x10 )
+
+#define PARAMFLAG_FHASDEFAULT ( 0x20 )
+
+typedef struct tagIDLDESC
+ {
+ ULONG dwReserved;
+ USHORT wIDLFlags;
+ } IDLDESC;
+
+typedef struct tagIDLDESC __RPC_FAR *LPIDLDESC;
+
+#define IDLFLAG_NONE ( PARAMFLAG_NONE )
+
+#define IDLFLAG_FIN ( PARAMFLAG_FIN )
+
+#define IDLFLAG_FOUT ( PARAMFLAG_FOUT )
+
+#define IDLFLAG_FLCID ( PARAMFLAG_FLCID )
+
+#define IDLFLAG_FRETVAL ( PARAMFLAG_FRETVAL )
+
+#if 0
+/* the following is what MIDL knows how to remote */
+typedef struct tagELEMDESC
+ {
+ TYPEDESC tdesc;
+ PARAMDESC paramdesc;
+ } ELEMDESC;
+
+#else /* 0 */
+typedef struct tagELEMDESC {
+ TYPEDESC tdesc; /* the type of the element */
+ union {
+ IDLDESC idldesc; /* info for remoting the element */
+ PARAMDESC paramdesc; /* info about the parameter */
+ };
+} ELEMDESC, * LPELEMDESC;
+#endif /* 0 */
+typedef struct tagTYPEATTR
+ {
+ GUID guid;
+ LCID lcid;
+ DWORD dwReserved;
+ MEMBERID memidConstructor;
+ MEMBERID memidDestructor;
+ LPOLESTR lpstrSchema;
+ ULONG cbSizeInstance;
+ TYPEKIND typekind;
+ WORD cFuncs;
+ WORD cVars;
+ WORD cImplTypes;
+ WORD cbSizeVft;
+ WORD cbAlignment;
+ WORD wTypeFlags;
+ WORD wMajorVerNum;
+ WORD wMinorVerNum;
+ TYPEDESC tdescAlias;
+ IDLDESC idldescType;
+ } TYPEATTR;
+
+typedef struct tagTYPEATTR __RPC_FAR *LPTYPEATTR;
+
+typedef TYPEATTR __RPC_FAR *__RPC_FAR *PPTYPEATTR;
+
+typedef struct tagDISPPARAMS
+ {
+ /* [size_is] */ VARIANTARG __RPC_FAR *rgvarg;
+ /* [size_is] */ DISPID __RPC_FAR *rgdispidNamedArgs;
+ UINT cArgs;
+ UINT cNamedArgs;
+ } DISPPARAMS;
+
+#if 0
+/* the following is what MIDL knows how to remote */
+typedef struct tagEXCEPINFO
+ {
+ WORD wCode;
+ WORD wReserved;
+ BSTR bstrSource;
+ BSTR bstrDescription;
+ BSTR bstrHelpFile;
+ DWORD dwHelpContext;
+ ULONG pvReserved;
+ ULONG pfnDeferredFillIn;
+ SCODE scode;
+ } EXCEPINFO;
+
+#else /* 0 */
+typedef struct tagEXCEPINFO {
+ WORD wCode;
+ WORD wReserved;
+ BSTR bstrSource;
+ BSTR bstrDescription;
+ BSTR bstrHelpFile;
+ DWORD dwHelpContext;
+ PVOID pvReserved;
+ HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);
+ SCODE scode;
+} EXCEPINFO, * LPEXCEPINFO;
+#endif /* 0 */
+typedef /* [v1_enum] */
+enum tagCALLCONV
+ { CC_CDECL = 1,
+ CC_MSCPASCAL = CC_CDECL + 1,
+ CC_PASCAL = CC_MSCPASCAL,
+ CC_MACPASCAL = CC_PASCAL + 1,
+ CC_STDCALL = CC_MACPASCAL + 1,
+ CC_RESERVED = CC_STDCALL + 1,
+ CC_SYSCALL = CC_RESERVED + 1,
+ CC_MPWCDECL = CC_SYSCALL + 1,
+ CC_MPWPASCAL = CC_MPWCDECL + 1,
+ CC_MAX = CC_MPWPASCAL + 1
+ } CALLCONV;
+
+typedef /* [v1_enum] */
+enum tagFUNCKIND
+ { FUNC_VIRTUAL = 0,
+ FUNC_PUREVIRTUAL = FUNC_VIRTUAL + 1,
+ FUNC_NONVIRTUAL = FUNC_PUREVIRTUAL + 1,
+ FUNC_STATIC = FUNC_NONVIRTUAL + 1,
+ FUNC_DISPATCH = FUNC_STATIC + 1
+ } FUNCKIND;
+
+typedef /* [v1_enum] */
+enum tagINVOKEKIND
+ { INVOKE_FUNC = 1,
+ INVOKE_PROPERTYGET = 2,
+ INVOKE_PROPERTYPUT = 4,
+ INVOKE_PROPERTYPUTREF = 8
+ } INVOKEKIND;
+
+typedef struct tagFUNCDESC
+ {
+ MEMBERID memid;
+ /* [size_is] */ SCODE __RPC_FAR *lprgscode;
+ /* [size_is] */ ELEMDESC __RPC_FAR *lprgelemdescParam;
+ FUNCKIND funckind;
+ INVOKEKIND invkind;
+ CALLCONV callconv;
+ SHORT cParams;
+ SHORT cParamsOpt;
+ SHORT oVft;
+ SHORT cScodes;
+ ELEMDESC elemdescFunc;
+ WORD wFuncFlags;
+ } FUNCDESC;
+
+typedef struct tagFUNCDESC __RPC_FAR *LPFUNCDESC;
+
+typedef FUNCDESC __RPC_FAR *__RPC_FAR *PPFUNCDESC;
+
+typedef /* [v1_enum] */
+enum tagVARKIND
+ { VAR_PERINSTANCE = 0,
+ VAR_STATIC = VAR_PERINSTANCE + 1,
+ VAR_CONST = VAR_STATIC + 1,
+ VAR_DISPATCH = VAR_CONST + 1
+ } VARKIND;
+
+#define IMPLTYPEFLAG_FDEFAULT ( 0x1 )
+
+#define IMPLTYPEFLAG_FSOURCE ( 0x2 )
+
+#define IMPLTYPEFLAG_FRESTRICTED ( 0x4 )
+
+#define IMPLTYPEFLAG_FDEFAULTVTABLE ( 0x8 )
+
+typedef struct tagVARDESC
+ {
+ MEMBERID memid;
+ LPOLESTR lpstrSchema;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ ULONG oInst;
+ /* [case()] */ VARIANT __RPC_FAR *lpvarValue;
+ } ;
+ ELEMDESC elemdescVar;
+ WORD wVarFlags;
+ VARKIND varkind;
+ } VARDESC;
+
+typedef struct tagVARDESC __RPC_FAR *LPVARDESC;
+
+typedef VARDESC __RPC_FAR *__RPC_FAR *PPVARDESC;
+
+typedef
+enum tagTYPEFLAGS
+ { TYPEFLAG_FAPPOBJECT = 0x1,
+ TYPEFLAG_FCANCREATE = 0x2,
+ TYPEFLAG_FLICENSED = 0x4,
+ TYPEFLAG_FPREDECLID = 0x8,
+ TYPEFLAG_FHIDDEN = 0x10,
+ TYPEFLAG_FCONTROL = 0x20,
+ TYPEFLAG_FDUAL = 0x40,
+ TYPEFLAG_FNONEXTENSIBLE = 0x80,
+ TYPEFLAG_FOLEAUTOMATION = 0x100,
+ TYPEFLAG_FRESTRICTED = 0x200,
+ TYPEFLAG_FAGGREGATABLE = 0x400,
+ TYPEFLAG_FREPLACEABLE = 0x800,
+ TYPEFLAG_FDISPATCHABLE = 0x1000,
+ TYPEFLAG_FREVERSEBIND = 0x2000
+ } TYPEFLAGS;
+
+typedef
+enum tagFUNCFLAGS
+ { FUNCFLAG_FRESTRICTED = 0x1,
+ FUNCFLAG_FSOURCE = 0x2,
+ FUNCFLAG_FBINDABLE = 0x4,
+ FUNCFLAG_FREQUESTEDIT = 0x8,
+ FUNCFLAG_FDISPLAYBIND = 0x10,
+ FUNCFLAG_FDEFAULTBIND = 0x20,
+ FUNCFLAG_FHIDDEN = 0x40,
+ FUNCFLAG_FUSESGETLASTERROR = 0x80,
+ FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
+ FUNCFLAG_FUIDEFAULT = 0x200,
+ FUNCFLAG_FNONBROWSABLE = 0x400,
+ FUNCFLAG_FREPLACEABLE = 0x800,
+ FUNCFLAG_FIMMEDIATEBIND = 0x1000
+ } FUNCFLAGS;
+
+typedef
+enum tagVARFLAGS
+ { VARFLAG_FREADONLY = 0x1,
+ VARFLAG_FSOURCE = 0x2,
+ VARFLAG_FBINDABLE = 0x4,
+ VARFLAG_FREQUESTEDIT = 0x8,
+ VARFLAG_FDISPLAYBIND = 0x10,
+ VARFLAG_FDEFAULTBIND = 0x20,
+ VARFLAG_FHIDDEN = 0x40,
+ VARFLAG_FRESTRICTED = 0x80,
+ VARFLAG_FDEFAULTCOLLELEM = 0x100,
+ VARFLAG_FUIDEFAULT = 0x200,
+ VARFLAG_FNONBROWSABLE = 0x400,
+ VARFLAG_FREPLACEABLE = 0x800,
+ VARFLAG_FIMMEDIATEBIND = 0x1000
+ } VARFLAGS;
+
+typedef /* [wire_marshal] */ struct tagCLEANLOCALSTORAGE
+ {
+ IUnknown __RPC_FAR *pInterface;
+ PVOID pStorage;
+ DWORD flags;
+ } CLEANLOCALSTORAGE;
+
+typedef struct tagCUSTDATAITEM
+ {
+ GUID guid;
+ VARIANTARG varValue;
+ } CUSTDATAITEM;
+
+typedef struct tagCUSTDATAITEM __RPC_FAR *LPCUSTDATAITEM;
+
+typedef struct tagCUSTDATA
+ {
+ DWORD cCustData;
+ /* [size_is] */ LPCUSTDATAITEM prgCustData;
+ } CUSTDATA;
+
+typedef struct tagCUSTDATA __RPC_FAR *LPCUSTDATA;
+
+
+
+extern RPC_IF_HANDLE IOleAutomationTypes_v1_0_c_ifspec;
+extern RPC_IF_HANDLE IOleAutomationTypes_v1_0_s_ifspec;
+#endif /* __IOleAutomationTypes_INTERFACE_DEFINED__ */
+
+#ifndef __ICreateTypeInfo_INTERFACE_DEFINED__
+#define __ICreateTypeInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICreateTypeInfo
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ICreateTypeInfo __RPC_FAR *LPCREATETYPEINFO;
+
+
+EXTERN_C const IID IID_ICreateTypeInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICreateTypeInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetGuid(
+ /* [in] */ REFGUID guid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTypeFlags(
+ /* [in] */ UINT uTypeFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDocString(
+ /* [in] */ LPOLESTR pStrDoc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
+ /* [in] */ DWORD dwHelpContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVersion(
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddRefTypeInfo(
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfo,
+ /* [in] */ HREFTYPE __RPC_FAR *phRefType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddFuncDesc(
+ /* [in] */ UINT index,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddImplType(
+ /* [in] */ UINT index,
+ /* [in] */ HREFTYPE hRefType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetImplTypeFlags(
+ /* [in] */ UINT index,
+ /* [in] */ INT implTypeFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAlignment(
+ /* [in] */ WORD cbAlignment) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSchema(
+ /* [in] */ LPOLESTR pStrSchema) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddVarDesc(
+ /* [in] */ UINT index,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFuncAndParamNames(
+ /* [in] */ UINT index,
+ /* [in][size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVarName(
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTypeDescAlias(
+ /* [in] */ TYPEDESC __RPC_FAR *pTDescAlias) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DefineFuncAsDllEntry(
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDllName,
+ /* [in] */ LPOLESTR szProcName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFuncDocString(
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVarDocString(
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFuncHelpContext(
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVarHelpContext(
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMops(
+ /* [in] */ UINT index,
+ /* [in] */ BSTR bstrMops) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTypeIdldesc(
+ /* [in] */ IDLDESC __RPC_FAR *pIdlDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LayOut( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICreateTypeInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICreateTypeInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICreateTypeInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetGuid )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeFlags )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT uTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDocString )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrDoc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpContext )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVersion )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddRefTypeInfo )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfo,
+ /* [in] */ HREFTYPE __RPC_FAR *phRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddFuncDesc )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddImplType )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ HREFTYPE hRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetImplTypeFlags )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ INT implTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAlignment )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ WORD cbAlignment);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSchema )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrSchema);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddVarDesc )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncAndParamNames )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in][size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarName )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeDescAlias )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ TYPEDESC __RPC_FAR *pTDescAlias);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DefineFuncAsDllEntry )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDllName,
+ /* [in] */ LPOLESTR szProcName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncDocString )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarDocString )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncHelpContext )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarHelpContext )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetMops )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ BSTR bstrMops);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeIdldesc )(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ IDLDESC __RPC_FAR *pIdlDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LayOut )(
+ ICreateTypeInfo __RPC_FAR * This);
+
+ END_INTERFACE
+ } ICreateTypeInfoVtbl;
+
+ interface ICreateTypeInfo
+ {
+ CONST_VTBL struct ICreateTypeInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICreateTypeInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICreateTypeInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICreateTypeInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICreateTypeInfo_SetGuid(This,guid) \
+ (This)->lpVtbl -> SetGuid(This,guid)
+
+#define ICreateTypeInfo_SetTypeFlags(This,uTypeFlags) \
+ (This)->lpVtbl -> SetTypeFlags(This,uTypeFlags)
+
+#define ICreateTypeInfo_SetDocString(This,pStrDoc) \
+ (This)->lpVtbl -> SetDocString(This,pStrDoc)
+
+#define ICreateTypeInfo_SetHelpContext(This,dwHelpContext) \
+ (This)->lpVtbl -> SetHelpContext(This,dwHelpContext)
+
+#define ICreateTypeInfo_SetVersion(This,wMajorVerNum,wMinorVerNum) \
+ (This)->lpVtbl -> SetVersion(This,wMajorVerNum,wMinorVerNum)
+
+#define ICreateTypeInfo_AddRefTypeInfo(This,pTInfo,phRefType) \
+ (This)->lpVtbl -> AddRefTypeInfo(This,pTInfo,phRefType)
+
+#define ICreateTypeInfo_AddFuncDesc(This,index,pFuncDesc) \
+ (This)->lpVtbl -> AddFuncDesc(This,index,pFuncDesc)
+
+#define ICreateTypeInfo_AddImplType(This,index,hRefType) \
+ (This)->lpVtbl -> AddImplType(This,index,hRefType)
+
+#define ICreateTypeInfo_SetImplTypeFlags(This,index,implTypeFlags) \
+ (This)->lpVtbl -> SetImplTypeFlags(This,index,implTypeFlags)
+
+#define ICreateTypeInfo_SetAlignment(This,cbAlignment) \
+ (This)->lpVtbl -> SetAlignment(This,cbAlignment)
+
+#define ICreateTypeInfo_SetSchema(This,pStrSchema) \
+ (This)->lpVtbl -> SetSchema(This,pStrSchema)
+
+#define ICreateTypeInfo_AddVarDesc(This,index,pVarDesc) \
+ (This)->lpVtbl -> AddVarDesc(This,index,pVarDesc)
+
+#define ICreateTypeInfo_SetFuncAndParamNames(This,index,rgszNames,cNames) \
+ (This)->lpVtbl -> SetFuncAndParamNames(This,index,rgszNames,cNames)
+
+#define ICreateTypeInfo_SetVarName(This,index,szName) \
+ (This)->lpVtbl -> SetVarName(This,index,szName)
+
+#define ICreateTypeInfo_SetTypeDescAlias(This,pTDescAlias) \
+ (This)->lpVtbl -> SetTypeDescAlias(This,pTDescAlias)
+
+#define ICreateTypeInfo_DefineFuncAsDllEntry(This,index,szDllName,szProcName) \
+ (This)->lpVtbl -> DefineFuncAsDllEntry(This,index,szDllName,szProcName)
+
+#define ICreateTypeInfo_SetFuncDocString(This,index,szDocString) \
+ (This)->lpVtbl -> SetFuncDocString(This,index,szDocString)
+
+#define ICreateTypeInfo_SetVarDocString(This,index,szDocString) \
+ (This)->lpVtbl -> SetVarDocString(This,index,szDocString)
+
+#define ICreateTypeInfo_SetFuncHelpContext(This,index,dwHelpContext) \
+ (This)->lpVtbl -> SetFuncHelpContext(This,index,dwHelpContext)
+
+#define ICreateTypeInfo_SetVarHelpContext(This,index,dwHelpContext) \
+ (This)->lpVtbl -> SetVarHelpContext(This,index,dwHelpContext)
+
+#define ICreateTypeInfo_SetMops(This,index,bstrMops) \
+ (This)->lpVtbl -> SetMops(This,index,bstrMops)
+
+#define ICreateTypeInfo_SetTypeIdldesc(This,pIdlDesc) \
+ (This)->lpVtbl -> SetTypeIdldesc(This,pIdlDesc)
+
+#define ICreateTypeInfo_LayOut(This) \
+ (This)->lpVtbl -> LayOut(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetGuid_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+
+void __RPC_STUB ICreateTypeInfo_SetGuid_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetTypeFlags_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT uTypeFlags);
+
+
+void __RPC_STUB ICreateTypeInfo_SetTypeFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetDocString_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrDoc);
+
+
+void __RPC_STUB ICreateTypeInfo_SetDocString_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetHelpContext_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+
+void __RPC_STUB ICreateTypeInfo_SetHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVersion_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+
+void __RPC_STUB ICreateTypeInfo_SetVersion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddRefTypeInfo_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfo,
+ /* [in] */ HREFTYPE __RPC_FAR *phRefType);
+
+
+void __RPC_STUB ICreateTypeInfo_AddRefTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddFuncDesc_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+
+void __RPC_STUB ICreateTypeInfo_AddFuncDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddImplType_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ HREFTYPE hRefType);
+
+
+void __RPC_STUB ICreateTypeInfo_AddImplType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetImplTypeFlags_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ INT implTypeFlags);
+
+
+void __RPC_STUB ICreateTypeInfo_SetImplTypeFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetAlignment_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ WORD cbAlignment);
+
+
+void __RPC_STUB ICreateTypeInfo_SetAlignment_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetSchema_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrSchema);
+
+
+void __RPC_STUB ICreateTypeInfo_SetSchema_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_AddVarDesc_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+
+void __RPC_STUB ICreateTypeInfo_AddVarDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetFuncAndParamNames_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in][size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames);
+
+
+void __RPC_STUB ICreateTypeInfo_SetFuncAndParamNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVarName_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szName);
+
+
+void __RPC_STUB ICreateTypeInfo_SetVarName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetTypeDescAlias_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ TYPEDESC __RPC_FAR *pTDescAlias);
+
+
+void __RPC_STUB ICreateTypeInfo_SetTypeDescAlias_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_DefineFuncAsDllEntry_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDllName,
+ /* [in] */ LPOLESTR szProcName);
+
+
+void __RPC_STUB ICreateTypeInfo_DefineFuncAsDllEntry_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetFuncDocString_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+
+void __RPC_STUB ICreateTypeInfo_SetFuncDocString_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVarDocString_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+
+void __RPC_STUB ICreateTypeInfo_SetVarDocString_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetFuncHelpContext_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+
+void __RPC_STUB ICreateTypeInfo_SetFuncHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetVarHelpContext_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+
+void __RPC_STUB ICreateTypeInfo_SetVarHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetMops_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ BSTR bstrMops);
+
+
+void __RPC_STUB ICreateTypeInfo_SetMops_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_SetTypeIdldesc_Proxy(
+ ICreateTypeInfo __RPC_FAR * This,
+ /* [in] */ IDLDESC __RPC_FAR *pIdlDesc);
+
+
+void __RPC_STUB ICreateTypeInfo_SetTypeIdldesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo_LayOut_Proxy(
+ ICreateTypeInfo __RPC_FAR * This);
+
+
+void __RPC_STUB ICreateTypeInfo_LayOut_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICreateTypeInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICreateTypeInfo2_INTERFACE_DEFINED__
+#define __ICreateTypeInfo2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICreateTypeInfo2
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ICreateTypeInfo2 __RPC_FAR *LPCREATETYPEINFO2;
+
+
+EXTERN_C const IID IID_ICreateTypeInfo2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICreateTypeInfo2 : public ICreateTypeInfo
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DeleteFuncDesc(
+ /* [in] */ UINT index) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteFuncDescByMemId(
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteVarDesc(
+ /* [in] */ UINT index) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteVarDescByMemId(
+ /* [in] */ MEMBERID memid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteImplType(
+ /* [in] */ UINT index) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCustData(
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFuncCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetParamCustData(
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVarCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetImplTypeCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpStringContext(
+ /* [in] */ ULONG dwHelpStringContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFuncHelpStringContext(
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVarHelpStringContext(
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Invalidate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetName(
+ /* [in] */ LPOLESTR szName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICreateTypeInfo2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICreateTypeInfo2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICreateTypeInfo2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetGuid )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeFlags )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT uTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDocString )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrDoc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVersion )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddRefTypeInfo )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfo,
+ /* [in] */ HREFTYPE __RPC_FAR *phRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddFuncDesc )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddImplType )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ HREFTYPE hRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetImplTypeFlags )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ INT implTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAlignment )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ WORD cbAlignment);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSchema )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR pStrSchema);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddVarDesc )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncAndParamNames )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in][size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarName )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeDescAlias )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ TYPEDESC __RPC_FAR *pTDescAlias);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DefineFuncAsDllEntry )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDllName,
+ /* [in] */ LPOLESTR szProcName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncDocString )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarDocString )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ LPOLESTR szDocString);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncHelpContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarHelpContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetMops )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ BSTR bstrMops);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTypeIdldesc )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ IDLDESC __RPC_FAR *pIdlDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LayOut )(
+ ICreateTypeInfo2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteFuncDesc )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteFuncDescByMemId )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteVarDesc )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteVarDescByMemId )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteImplType )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetCustData )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncCustData )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetParamCustData )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarCustData )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetImplTypeCustData )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpStringContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ ULONG dwHelpStringContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFuncHelpStringContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVarHelpStringContext )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invalidate )(
+ ICreateTypeInfo2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetName )(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+ END_INTERFACE
+ } ICreateTypeInfo2Vtbl;
+
+ interface ICreateTypeInfo2
+ {
+ CONST_VTBL struct ICreateTypeInfo2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICreateTypeInfo2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICreateTypeInfo2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICreateTypeInfo2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICreateTypeInfo2_SetGuid(This,guid) \
+ (This)->lpVtbl -> SetGuid(This,guid)
+
+#define ICreateTypeInfo2_SetTypeFlags(This,uTypeFlags) \
+ (This)->lpVtbl -> SetTypeFlags(This,uTypeFlags)
+
+#define ICreateTypeInfo2_SetDocString(This,pStrDoc) \
+ (This)->lpVtbl -> SetDocString(This,pStrDoc)
+
+#define ICreateTypeInfo2_SetHelpContext(This,dwHelpContext) \
+ (This)->lpVtbl -> SetHelpContext(This,dwHelpContext)
+
+#define ICreateTypeInfo2_SetVersion(This,wMajorVerNum,wMinorVerNum) \
+ (This)->lpVtbl -> SetVersion(This,wMajorVerNum,wMinorVerNum)
+
+#define ICreateTypeInfo2_AddRefTypeInfo(This,pTInfo,phRefType) \
+ (This)->lpVtbl -> AddRefTypeInfo(This,pTInfo,phRefType)
+
+#define ICreateTypeInfo2_AddFuncDesc(This,index,pFuncDesc) \
+ (This)->lpVtbl -> AddFuncDesc(This,index,pFuncDesc)
+
+#define ICreateTypeInfo2_AddImplType(This,index,hRefType) \
+ (This)->lpVtbl -> AddImplType(This,index,hRefType)
+
+#define ICreateTypeInfo2_SetImplTypeFlags(This,index,implTypeFlags) \
+ (This)->lpVtbl -> SetImplTypeFlags(This,index,implTypeFlags)
+
+#define ICreateTypeInfo2_SetAlignment(This,cbAlignment) \
+ (This)->lpVtbl -> SetAlignment(This,cbAlignment)
+
+#define ICreateTypeInfo2_SetSchema(This,pStrSchema) \
+ (This)->lpVtbl -> SetSchema(This,pStrSchema)
+
+#define ICreateTypeInfo2_AddVarDesc(This,index,pVarDesc) \
+ (This)->lpVtbl -> AddVarDesc(This,index,pVarDesc)
+
+#define ICreateTypeInfo2_SetFuncAndParamNames(This,index,rgszNames,cNames) \
+ (This)->lpVtbl -> SetFuncAndParamNames(This,index,rgszNames,cNames)
+
+#define ICreateTypeInfo2_SetVarName(This,index,szName) \
+ (This)->lpVtbl -> SetVarName(This,index,szName)
+
+#define ICreateTypeInfo2_SetTypeDescAlias(This,pTDescAlias) \
+ (This)->lpVtbl -> SetTypeDescAlias(This,pTDescAlias)
+
+#define ICreateTypeInfo2_DefineFuncAsDllEntry(This,index,szDllName,szProcName) \
+ (This)->lpVtbl -> DefineFuncAsDllEntry(This,index,szDllName,szProcName)
+
+#define ICreateTypeInfo2_SetFuncDocString(This,index,szDocString) \
+ (This)->lpVtbl -> SetFuncDocString(This,index,szDocString)
+
+#define ICreateTypeInfo2_SetVarDocString(This,index,szDocString) \
+ (This)->lpVtbl -> SetVarDocString(This,index,szDocString)
+
+#define ICreateTypeInfo2_SetFuncHelpContext(This,index,dwHelpContext) \
+ (This)->lpVtbl -> SetFuncHelpContext(This,index,dwHelpContext)
+
+#define ICreateTypeInfo2_SetVarHelpContext(This,index,dwHelpContext) \
+ (This)->lpVtbl -> SetVarHelpContext(This,index,dwHelpContext)
+
+#define ICreateTypeInfo2_SetMops(This,index,bstrMops) \
+ (This)->lpVtbl -> SetMops(This,index,bstrMops)
+
+#define ICreateTypeInfo2_SetTypeIdldesc(This,pIdlDesc) \
+ (This)->lpVtbl -> SetTypeIdldesc(This,pIdlDesc)
+
+#define ICreateTypeInfo2_LayOut(This) \
+ (This)->lpVtbl -> LayOut(This)
+
+
+#define ICreateTypeInfo2_DeleteFuncDesc(This,index) \
+ (This)->lpVtbl -> DeleteFuncDesc(This,index)
+
+#define ICreateTypeInfo2_DeleteFuncDescByMemId(This,memid,invKind) \
+ (This)->lpVtbl -> DeleteFuncDescByMemId(This,memid,invKind)
+
+#define ICreateTypeInfo2_DeleteVarDesc(This,index) \
+ (This)->lpVtbl -> DeleteVarDesc(This,index)
+
+#define ICreateTypeInfo2_DeleteVarDescByMemId(This,memid) \
+ (This)->lpVtbl -> DeleteVarDescByMemId(This,memid)
+
+#define ICreateTypeInfo2_DeleteImplType(This,index) \
+ (This)->lpVtbl -> DeleteImplType(This,index)
+
+#define ICreateTypeInfo2_SetCustData(This,guid,pVarVal) \
+ (This)->lpVtbl -> SetCustData(This,guid,pVarVal)
+
+#define ICreateTypeInfo2_SetFuncCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> SetFuncCustData(This,index,guid,pVarVal)
+
+#define ICreateTypeInfo2_SetParamCustData(This,indexFunc,indexParam,guid,pVarVal) \
+ (This)->lpVtbl -> SetParamCustData(This,indexFunc,indexParam,guid,pVarVal)
+
+#define ICreateTypeInfo2_SetVarCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> SetVarCustData(This,index,guid,pVarVal)
+
+#define ICreateTypeInfo2_SetImplTypeCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> SetImplTypeCustData(This,index,guid,pVarVal)
+
+#define ICreateTypeInfo2_SetHelpStringContext(This,dwHelpStringContext) \
+ (This)->lpVtbl -> SetHelpStringContext(This,dwHelpStringContext)
+
+#define ICreateTypeInfo2_SetFuncHelpStringContext(This,index,dwHelpStringContext) \
+ (This)->lpVtbl -> SetFuncHelpStringContext(This,index,dwHelpStringContext)
+
+#define ICreateTypeInfo2_SetVarHelpStringContext(This,index,dwHelpStringContext) \
+ (This)->lpVtbl -> SetVarHelpStringContext(This,index,dwHelpStringContext)
+
+#define ICreateTypeInfo2_Invalidate(This) \
+ (This)->lpVtbl -> Invalidate(This)
+
+#define ICreateTypeInfo2_SetName(This,szName) \
+ (This)->lpVtbl -> SetName(This,szName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteFuncDesc_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+
+void __RPC_STUB ICreateTypeInfo2_DeleteFuncDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteFuncDescByMemId_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind);
+
+
+void __RPC_STUB ICreateTypeInfo2_DeleteFuncDescByMemId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteVarDesc_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+
+void __RPC_STUB ICreateTypeInfo2_DeleteVarDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteVarDescByMemId_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid);
+
+
+void __RPC_STUB ICreateTypeInfo2_DeleteVarDescByMemId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_DeleteImplType_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index);
+
+
+void __RPC_STUB ICreateTypeInfo2_DeleteImplType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetCustData_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetFuncCustData_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetFuncCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetParamCustData_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetParamCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetVarCustData_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetVarCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetImplTypeCustData_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetImplTypeCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetHelpStringContext_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ ULONG dwHelpStringContext);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetHelpStringContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetFuncHelpStringContext_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetFuncHelpStringContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetVarHelpStringContext_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ ULONG dwHelpStringContext);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetVarHelpStringContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_Invalidate_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This);
+
+
+void __RPC_STUB ICreateTypeInfo2_Invalidate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeInfo2_SetName_Proxy(
+ ICreateTypeInfo2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+
+void __RPC_STUB ICreateTypeInfo2_SetName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICreateTypeInfo2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICreateTypeLib_INTERFACE_DEFINED__
+#define __ICreateTypeLib_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICreateTypeLib
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ICreateTypeLib __RPC_FAR *LPCREATETYPELIB;
+
+
+EXTERN_C const IID IID_ICreateTypeLib;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICreateTypeLib : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateTypeInfo(
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ TYPEKIND tkind,
+ /* [out] */ ICreateTypeInfo __RPC_FAR *__RPC_FAR *ppCTInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetName(
+ /* [in] */ LPOLESTR szName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetVersion(
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetGuid(
+ /* [in] */ REFGUID guid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDocString(
+ /* [in] */ LPOLESTR szDoc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpFileName(
+ /* [in] */ LPOLESTR szHelpFileName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
+ /* [in] */ DWORD dwHelpContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetLcid(
+ /* [in] */ LCID lcid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetLibFlags(
+ /* [in] */ UINT uLibFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveAllChanges( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICreateTypeLibVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICreateTypeLib __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICreateTypeLib __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateTypeInfo )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ TYPEKIND tkind,
+ /* [out] */ ICreateTypeInfo __RPC_FAR *__RPC_FAR *ppCTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetName )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVersion )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetGuid )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDocString )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szDoc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpFileName )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szHelpFileName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpContext )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetLcid )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LCID lcid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetLibFlags )(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ UINT uLibFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveAllChanges )(
+ ICreateTypeLib __RPC_FAR * This);
+
+ END_INTERFACE
+ } ICreateTypeLibVtbl;
+
+ interface ICreateTypeLib
+ {
+ CONST_VTBL struct ICreateTypeLibVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICreateTypeLib_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICreateTypeLib_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICreateTypeLib_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICreateTypeLib_CreateTypeInfo(This,szName,tkind,ppCTInfo) \
+ (This)->lpVtbl -> CreateTypeInfo(This,szName,tkind,ppCTInfo)
+
+#define ICreateTypeLib_SetName(This,szName) \
+ (This)->lpVtbl -> SetName(This,szName)
+
+#define ICreateTypeLib_SetVersion(This,wMajorVerNum,wMinorVerNum) \
+ (This)->lpVtbl -> SetVersion(This,wMajorVerNum,wMinorVerNum)
+
+#define ICreateTypeLib_SetGuid(This,guid) \
+ (This)->lpVtbl -> SetGuid(This,guid)
+
+#define ICreateTypeLib_SetDocString(This,szDoc) \
+ (This)->lpVtbl -> SetDocString(This,szDoc)
+
+#define ICreateTypeLib_SetHelpFileName(This,szHelpFileName) \
+ (This)->lpVtbl -> SetHelpFileName(This,szHelpFileName)
+
+#define ICreateTypeLib_SetHelpContext(This,dwHelpContext) \
+ (This)->lpVtbl -> SetHelpContext(This,dwHelpContext)
+
+#define ICreateTypeLib_SetLcid(This,lcid) \
+ (This)->lpVtbl -> SetLcid(This,lcid)
+
+#define ICreateTypeLib_SetLibFlags(This,uLibFlags) \
+ (This)->lpVtbl -> SetLibFlags(This,uLibFlags)
+
+#define ICreateTypeLib_SaveAllChanges(This) \
+ (This)->lpVtbl -> SaveAllChanges(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_CreateTypeInfo_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ TYPEKIND tkind,
+ /* [out] */ ICreateTypeInfo __RPC_FAR *__RPC_FAR *ppCTInfo);
+
+
+void __RPC_STUB ICreateTypeLib_CreateTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetName_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+
+void __RPC_STUB ICreateTypeLib_SetName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetVersion_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+
+void __RPC_STUB ICreateTypeLib_SetVersion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetGuid_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+
+void __RPC_STUB ICreateTypeLib_SetGuid_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetDocString_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szDoc);
+
+
+void __RPC_STUB ICreateTypeLib_SetDocString_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetHelpFileName_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szHelpFileName);
+
+
+void __RPC_STUB ICreateTypeLib_SetHelpFileName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetHelpContext_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+
+void __RPC_STUB ICreateTypeLib_SetHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetLcid_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ LCID lcid);
+
+
+void __RPC_STUB ICreateTypeLib_SetLcid_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SetLibFlags_Proxy(
+ ICreateTypeLib __RPC_FAR * This,
+ /* [in] */ UINT uLibFlags);
+
+
+void __RPC_STUB ICreateTypeLib_SetLibFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib_SaveAllChanges_Proxy(
+ ICreateTypeLib __RPC_FAR * This);
+
+
+void __RPC_STUB ICreateTypeLib_SaveAllChanges_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICreateTypeLib_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICreateTypeLib2_INTERFACE_DEFINED__
+#define __ICreateTypeLib2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICreateTypeLib2
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ICreateTypeLib2 __RPC_FAR *LPCREATETYPELIB2;
+
+
+EXTERN_C const IID IID_ICreateTypeLib2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICreateTypeLib2 : public ICreateTypeLib
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DeleteTypeInfo(
+ /* [in] */ LPOLESTR szName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCustData(
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpStringContext(
+ /* [in] */ ULONG dwHelpStringContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpStringDll(
+ /* [in] */ LPOLESTR szFileName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICreateTypeLib2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICreateTypeLib2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICreateTypeLib2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateTypeInfo )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ TYPEKIND tkind,
+ /* [out] */ ICreateTypeInfo __RPC_FAR *__RPC_FAR *ppCTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetName )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetVersion )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ WORD wMajorVerNum,
+ /* [in] */ WORD wMinorVerNum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetGuid )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDocString )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szDoc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpFileName )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szHelpFileName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpContext )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetLcid )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LCID lcid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetLibFlags )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ UINT uLibFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveAllChanges )(
+ ICreateTypeLib2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteTypeInfo )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetCustData )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpStringContext )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ ULONG dwHelpStringContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpStringDll )(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szFileName);
+
+ END_INTERFACE
+ } ICreateTypeLib2Vtbl;
+
+ interface ICreateTypeLib2
+ {
+ CONST_VTBL struct ICreateTypeLib2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICreateTypeLib2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICreateTypeLib2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICreateTypeLib2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICreateTypeLib2_CreateTypeInfo(This,szName,tkind,ppCTInfo) \
+ (This)->lpVtbl -> CreateTypeInfo(This,szName,tkind,ppCTInfo)
+
+#define ICreateTypeLib2_SetName(This,szName) \
+ (This)->lpVtbl -> SetName(This,szName)
+
+#define ICreateTypeLib2_SetVersion(This,wMajorVerNum,wMinorVerNum) \
+ (This)->lpVtbl -> SetVersion(This,wMajorVerNum,wMinorVerNum)
+
+#define ICreateTypeLib2_SetGuid(This,guid) \
+ (This)->lpVtbl -> SetGuid(This,guid)
+
+#define ICreateTypeLib2_SetDocString(This,szDoc) \
+ (This)->lpVtbl -> SetDocString(This,szDoc)
+
+#define ICreateTypeLib2_SetHelpFileName(This,szHelpFileName) \
+ (This)->lpVtbl -> SetHelpFileName(This,szHelpFileName)
+
+#define ICreateTypeLib2_SetHelpContext(This,dwHelpContext) \
+ (This)->lpVtbl -> SetHelpContext(This,dwHelpContext)
+
+#define ICreateTypeLib2_SetLcid(This,lcid) \
+ (This)->lpVtbl -> SetLcid(This,lcid)
+
+#define ICreateTypeLib2_SetLibFlags(This,uLibFlags) \
+ (This)->lpVtbl -> SetLibFlags(This,uLibFlags)
+
+#define ICreateTypeLib2_SaveAllChanges(This) \
+ (This)->lpVtbl -> SaveAllChanges(This)
+
+
+#define ICreateTypeLib2_DeleteTypeInfo(This,szName) \
+ (This)->lpVtbl -> DeleteTypeInfo(This,szName)
+
+#define ICreateTypeLib2_SetCustData(This,guid,pVarVal) \
+ (This)->lpVtbl -> SetCustData(This,guid,pVarVal)
+
+#define ICreateTypeLib2_SetHelpStringContext(This,dwHelpStringContext) \
+ (This)->lpVtbl -> SetHelpStringContext(This,dwHelpStringContext)
+
+#define ICreateTypeLib2_SetHelpStringDll(This,szFileName) \
+ (This)->lpVtbl -> SetHelpStringDll(This,szFileName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_DeleteTypeInfo_Proxy(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName);
+
+
+void __RPC_STUB ICreateTypeLib2_DeleteTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_SetCustData_Proxy(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ICreateTypeLib2_SetCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_SetHelpStringContext_Proxy(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ ULONG dwHelpStringContext);
+
+
+void __RPC_STUB ICreateTypeLib2_SetHelpStringContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateTypeLib2_SetHelpStringDll_Proxy(
+ ICreateTypeLib2 __RPC_FAR * This,
+ /* [in] */ LPOLESTR szFileName);
+
+
+void __RPC_STUB ICreateTypeLib2_SetHelpStringDll_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICreateTypeLib2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDispatch_INTERFACE_DEFINED__
+#define __IDispatch_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDispatch
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IDispatch __RPC_FAR *LPDISPATCH;
+
+/* DISPID reserved to indicate an "unknown" name */
+/* only reserved for data members (properties); reused as a method dispid below */
+#define DISPID_UNKNOWN ( -1 )
+
+/* DISPID reserved for the "value" property */
+#define DISPID_VALUE ( 0 )
+
+/* The following DISPID is reserved to indicate the param
+ * that is the right-hand-side (or "put" value) of a PropertyPut
+ */
+#define DISPID_PROPERTYPUT ( -3 )
+
+/* DISPID reserved for the standard "NewEnum" method */
+#define DISPID_NEWENUM ( -4 )
+
+/* DISPID reserved for the standard "Evaluate" method */
+#define DISPID_EVALUATE ( -5 )
+
+#define DISPID_CONSTRUCTOR ( -6 )
+
+#define DISPID_DESTRUCTOR ( -7 )
+
+#define DISPID_COLLECT ( -8 )
+
+/* The range -500 through -999 is reserved for Controls */
+/* The range 0x80010000 through 0x8001FFFF is reserved for Controls */
+/* The range -5000 through -5499 is reserved for ActiveX Accessability */
+/* The remainder of the negative DISPIDs are reserved for future use */
+
+EXTERN_C const IID IID_IDispatch;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDispatch : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(
+ /* [out] */ UINT __RPC_FAR *pctinfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgDispId) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDispatchVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDispatch __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDispatch __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )(
+ IDispatch __RPC_FAR * This,
+ /* [out] */ UINT __RPC_FAR *pctinfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgDispId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+ END_INTERFACE
+ } IDispatchVtbl;
+
+ interface IDispatch
+ {
+ CONST_VTBL struct IDispatchVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDispatch_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDispatch_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDispatch_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDispatch_GetTypeInfoCount(This,pctinfo) \
+ (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IDispatch_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+ (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IDispatch_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+ (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define IDispatch_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDispatch_GetTypeInfoCount_Proxy(
+ IDispatch __RPC_FAR * This,
+ /* [out] */ UINT __RPC_FAR *pctinfo);
+
+
+void __RPC_STUB IDispatch_GetTypeInfoCount_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDispatch_GetTypeInfo_Proxy(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+
+void __RPC_STUB IDispatch_GetTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDispatch_GetIDsOfNames_Proxy(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgDispId);
+
+
+void __RPC_STUB IDispatch_GetIDsOfNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDispatch_RemoteInvoke_Proxy(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [size_is][out] */ VARIANTARG __RPC_FAR *rgVtRef,
+ /* [in] */ UINT cVtRef,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *pArgErr);
+
+
+void __RPC_STUB IDispatch_RemoteInvoke_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDispatch_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumVARIANT_INTERFACE_DEFINED__
+#define __IEnumVARIANT_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumVARIANT
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumVARIANT __RPC_FAR *LPENUMVARIANT;
+
+
+EXTERN_C const IID IID_IEnumVARIANT;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumVARIANT : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ VARIANT __RPC_FAR *rgVar,
+ /* [out] */ ULONG __RPC_FAR *pCeltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumVARIANT __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumVARIANTVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumVARIANT __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumVARIANT __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ VARIANT __RPC_FAR *rgVar,
+ /* [out] */ ULONG __RPC_FAR *pCeltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumVARIANT __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [out] */ IEnumVARIANT __RPC_FAR *__RPC_FAR *ppEnum);
+
+ END_INTERFACE
+ } IEnumVARIANTVtbl;
+
+ interface IEnumVARIANT
+ {
+ CONST_VTBL struct IEnumVARIANTVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumVARIANT_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumVARIANT_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumVARIANT_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumVARIANT_Next(This,celt,rgVar,pCeltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgVar,pCeltFetched)
+
+#define IEnumVARIANT_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumVARIANT_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumVARIANT_Clone(This,ppEnum) \
+ (This)->lpVtbl -> Clone(This,ppEnum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumVARIANT_RemoteNext_Proxy(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ VARIANT __RPC_FAR *rgVar,
+ /* [out] */ ULONG __RPC_FAR *pCeltFetched);
+
+
+void __RPC_STUB IEnumVARIANT_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumVARIANT_Skip_Proxy(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumVARIANT_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumVARIANT_Reset_Proxy(
+ IEnumVARIANT __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumVARIANT_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumVARIANT_Clone_Proxy(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [out] */ IEnumVARIANT __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IEnumVARIANT_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumVARIANT_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeComp_INTERFACE_DEFINED__
+#define __ITypeComp_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeComp
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ITypeComp __RPC_FAR *LPTYPECOMP;
+
+typedef /* [v1_enum] */
+enum tagDESCKIND
+ { DESCKIND_NONE = 0,
+ DESCKIND_FUNCDESC = DESCKIND_NONE + 1,
+ DESCKIND_VARDESC = DESCKIND_FUNCDESC + 1,
+ DESCKIND_TYPECOMP = DESCKIND_VARDESC + 1,
+ DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP + 1,
+ DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ + 1
+ } DESCKIND;
+
+typedef union tagBINDPTR
+ {
+ FUNCDESC __RPC_FAR *lpfuncdesc;
+ VARDESC __RPC_FAR *lpvardesc;
+ ITypeComp __RPC_FAR *lptcomp;
+ } BINDPTR;
+
+typedef union tagBINDPTR __RPC_FAR *LPBINDPTR;
+
+
+EXTERN_C const IID IID_ITypeComp;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeComp : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Bind(
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [in] */ WORD wFlags,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ DESCKIND __RPC_FAR *pDescKind,
+ /* [out] */ BINDPTR __RPC_FAR *pBindPtr) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE BindType(
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeCompVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeComp __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeComp __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Bind )(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [in] */ WORD wFlags,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ DESCKIND __RPC_FAR *pDescKind,
+ /* [out] */ BINDPTR __RPC_FAR *pBindPtr);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BindType )(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+ END_INTERFACE
+ } ITypeCompVtbl;
+
+ interface ITypeComp
+ {
+ CONST_VTBL struct ITypeCompVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeComp_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeComp_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeComp_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeComp_Bind(This,szName,lHashVal,wFlags,ppTInfo,pDescKind,pBindPtr) \
+ (This)->lpVtbl -> Bind(This,szName,lHashVal,wFlags,ppTInfo,pDescKind,pBindPtr)
+
+#define ITypeComp_BindType(This,szName,lHashVal,ppTInfo,ppTComp) \
+ (This)->lpVtbl -> BindType(This,szName,lHashVal,ppTInfo,ppTComp)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeComp_RemoteBind_Proxy(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [in] */ WORD wFlags,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ DESCKIND __RPC_FAR *pDescKind,
+ /* [out] */ PPFUNCDESC ppFuncDesc,
+ /* [out] */ PPVARDESC ppVarDesc,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTypeComp,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+
+void __RPC_STUB ITypeComp_RemoteBind_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeComp_RemoteBindType_Proxy(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+
+void __RPC_STUB ITypeComp_RemoteBindType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeComp_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeInfo_INTERFACE_DEFINED__
+#define __ITypeInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeInfo
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ITypeInfo __RPC_FAR *LPTYPEINFO;
+
+
+EXTERN_C const IID IID_ITypeInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeInfo : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetTypeAttr(
+ /* [out] */ TYPEATTR __RPC_FAR *__RPC_FAR *ppTypeAttr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeComp(
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetFuncDesc(
+ /* [in] */ UINT index,
+ /* [out] */ FUNCDESC __RPC_FAR *__RPC_FAR *ppFuncDesc) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetVarDesc(
+ /* [in] */ UINT index,
+ /* [out] */ VARDESC __RPC_FAR *__RPC_FAR *ppVarDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetNames(
+ /* [in] */ MEMBERID memid,
+ /* [length_is][size_is][out] */ BSTR __RPC_FAR *rgBstrNames,
+ /* [in] */ UINT cMaxNames,
+ /* [out] */ UINT __RPC_FAR *pcNames) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRefTypeOfImplType(
+ /* [in] */ UINT index,
+ /* [out] */ HREFTYPE __RPC_FAR *pRefType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetImplTypeFlags(
+ /* [in] */ UINT index,
+ /* [out] */ INT __RPC_FAR *pImplTypeFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [size_is][out] */ MEMBERID __RPC_FAR *pMemId) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ PVOID pvInstance,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDocumentation(
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDllEntry(
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRefTypeInfo(
+ /* [in] */ HREFTYPE hRefType,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE AddressOfMember(
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ PVOID __RPC_FAR *ppv) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE CreateInstance(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMops(
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrMops) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetContainingTypeLib(
+ /* [out] */ ITypeLib __RPC_FAR *__RPC_FAR *ppTLib,
+ /* [out] */ UINT __RPC_FAR *pIndex) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE ReleaseTypeAttr(
+ /* [in] */ TYPEATTR __RPC_FAR *pTypeAttr) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE ReleaseFuncDesc(
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE ReleaseVarDesc(
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeInfo __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeAttr )(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ TYPEATTR __RPC_FAR *__RPC_FAR *ppTypeAttr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeComp )(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFuncDesc )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ FUNCDESC __RPC_FAR *__RPC_FAR *ppFuncDesc);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetVarDesc )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ VARDESC __RPC_FAR *__RPC_FAR *ppVarDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNames )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [length_is][size_is][out] */ BSTR __RPC_FAR *rgBstrNames,
+ /* [in] */ UINT cMaxNames,
+ /* [out] */ UINT __RPC_FAR *pcNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRefTypeOfImplType )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ HREFTYPE __RPC_FAR *pRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetImplTypeFlags )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ INT __RPC_FAR *pImplTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )(
+ ITypeInfo __RPC_FAR * This,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [size_is][out] */ MEMBERID __RPC_FAR *pMemId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ PVOID pvInstance,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDllEntry )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRefTypeInfo )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ HREFTYPE hRefType,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddressOfMember )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ PVOID __RPC_FAR *ppv);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateInstance )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMops )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrMops);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetContainingTypeLib )(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ ITypeLib __RPC_FAR *__RPC_FAR *ppTLib,
+ /* [out] */ UINT __RPC_FAR *pIndex);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseTypeAttr )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ TYPEATTR __RPC_FAR *pTypeAttr);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseFuncDesc )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseVarDesc )(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+ END_INTERFACE
+ } ITypeInfoVtbl;
+
+ interface ITypeInfo
+ {
+ CONST_VTBL struct ITypeInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeInfo_GetTypeAttr(This,ppTypeAttr) \
+ (This)->lpVtbl -> GetTypeAttr(This,ppTypeAttr)
+
+#define ITypeInfo_GetTypeComp(This,ppTComp) \
+ (This)->lpVtbl -> GetTypeComp(This,ppTComp)
+
+#define ITypeInfo_GetFuncDesc(This,index,ppFuncDesc) \
+ (This)->lpVtbl -> GetFuncDesc(This,index,ppFuncDesc)
+
+#define ITypeInfo_GetVarDesc(This,index,ppVarDesc) \
+ (This)->lpVtbl -> GetVarDesc(This,index,ppVarDesc)
+
+#define ITypeInfo_GetNames(This,memid,rgBstrNames,cMaxNames,pcNames) \
+ (This)->lpVtbl -> GetNames(This,memid,rgBstrNames,cMaxNames,pcNames)
+
+#define ITypeInfo_GetRefTypeOfImplType(This,index,pRefType) \
+ (This)->lpVtbl -> GetRefTypeOfImplType(This,index,pRefType)
+
+#define ITypeInfo_GetImplTypeFlags(This,index,pImplTypeFlags) \
+ (This)->lpVtbl -> GetImplTypeFlags(This,index,pImplTypeFlags)
+
+#define ITypeInfo_GetIDsOfNames(This,rgszNames,cNames,pMemId) \
+ (This)->lpVtbl -> GetIDsOfNames(This,rgszNames,cNames,pMemId)
+
+#define ITypeInfo_Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ (This)->lpVtbl -> Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+#define ITypeInfo_GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) \
+ (This)->lpVtbl -> GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+
+#define ITypeInfo_GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal) \
+ (This)->lpVtbl -> GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal)
+
+#define ITypeInfo_GetRefTypeInfo(This,hRefType,ppTInfo) \
+ (This)->lpVtbl -> GetRefTypeInfo(This,hRefType,ppTInfo)
+
+#define ITypeInfo_AddressOfMember(This,memid,invKind,ppv) \
+ (This)->lpVtbl -> AddressOfMember(This,memid,invKind,ppv)
+
+#define ITypeInfo_CreateInstance(This,pUnkOuter,riid,ppvObj) \
+ (This)->lpVtbl -> CreateInstance(This,pUnkOuter,riid,ppvObj)
+
+#define ITypeInfo_GetMops(This,memid,pBstrMops) \
+ (This)->lpVtbl -> GetMops(This,memid,pBstrMops)
+
+#define ITypeInfo_GetContainingTypeLib(This,ppTLib,pIndex) \
+ (This)->lpVtbl -> GetContainingTypeLib(This,ppTLib,pIndex)
+
+#define ITypeInfo_ReleaseTypeAttr(This,pTypeAttr) \
+ (This)->lpVtbl -> ReleaseTypeAttr(This,pTypeAttr)
+
+#define ITypeInfo_ReleaseFuncDesc(This,pFuncDesc) \
+ (This)->lpVtbl -> ReleaseFuncDesc(This,pFuncDesc)
+
+#define ITypeInfo_ReleaseVarDesc(This,pVarDesc) \
+ (This)->lpVtbl -> ReleaseVarDesc(This,pVarDesc)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetTypeAttr_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ PPTYPEATTR ppTypeAttr,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+
+void __RPC_STUB ITypeInfo_RemoteGetTypeAttr_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetTypeComp_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+
+void __RPC_STUB ITypeInfo_GetTypeComp_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetFuncDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ PPFUNCDESC ppFuncDesc,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+
+void __RPC_STUB ITypeInfo_RemoteGetFuncDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetVarDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ PPVARDESC ppVarDesc,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+
+void __RPC_STUB ITypeInfo_RemoteGetVarDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetNames_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [length_is][size_is][out] */ BSTR __RPC_FAR *rgBstrNames,
+ /* [in] */ UINT cMaxNames,
+ /* [out] */ UINT __RPC_FAR *pcNames);
+
+
+void __RPC_STUB ITypeInfo_GetNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetRefTypeOfImplType_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ HREFTYPE __RPC_FAR *pRefType);
+
+
+void __RPC_STUB ITypeInfo_GetRefTypeOfImplType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetImplTypeFlags_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ INT __RPC_FAR *pImplTypeFlags);
+
+
+void __RPC_STUB ITypeInfo_GetImplTypeFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetIDsOfNames_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [size_is][out] */ MEMBERID __RPC_FAR *pMemId);
+
+
+void __RPC_STUB ITypeInfo_GetIDsOfNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteInvoke_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pIUnk,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [size_is][out] */ VARIANTARG __RPC_FAR *rgVtRef,
+ /* [in] */ UINT cVtRef,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *pArgErr);
+
+
+void __RPC_STUB ITypeInfo_RemoteInvoke_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetDocumentation_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+
+void __RPC_STUB ITypeInfo_RemoteGetDocumentation_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteGetDllEntry_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal);
+
+
+void __RPC_STUB ITypeInfo_RemoteGetDllEntry_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetRefTypeInfo_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ HREFTYPE hRefType,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+
+void __RPC_STUB ITypeInfo_GetRefTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_LocalAddressOfMember_Proxy(
+ ITypeInfo __RPC_FAR * This);
+
+
+void __RPC_STUB ITypeInfo_LocalAddressOfMember_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_RemoteCreateInstance_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+void __RPC_STUB ITypeInfo_RemoteCreateInstance_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetMops_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrMops);
+
+
+void __RPC_STUB ITypeInfo_GetMops_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo_GetContainingTypeLib_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ ITypeLib __RPC_FAR *__RPC_FAR *ppTLib,
+ /* [out] */ UINT __RPC_FAR *pIndex);
+
+
+void __RPC_STUB ITypeInfo_GetContainingTypeLib_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_LocalReleaseTypeAttr_Proxy(
+ ITypeInfo __RPC_FAR * This);
+
+
+void __RPC_STUB ITypeInfo_LocalReleaseTypeAttr_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_LocalReleaseFuncDesc_Proxy(
+ ITypeInfo __RPC_FAR * This);
+
+
+void __RPC_STUB ITypeInfo_LocalReleaseFuncDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_LocalReleaseVarDesc_Proxy(
+ ITypeInfo __RPC_FAR * This);
+
+
+void __RPC_STUB ITypeInfo_LocalReleaseVarDesc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeInfo2_INTERFACE_DEFINED__
+#define __ITypeInfo2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeInfo2
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ITypeInfo2 __RPC_FAR *LPTYPEINFO2;
+
+
+EXTERN_C const IID IID_ITypeInfo2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeInfo2 : public ITypeInfo
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetTypeKind(
+ /* [out] */ TYPEKIND __RPC_FAR *pTypeKind) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeFlags(
+ /* [out] */ ULONG __RPC_FAR *pTypeFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFuncIndexOfMemId(
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ UINT __RPC_FAR *pFuncIndex) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetVarIndexOfMemId(
+ /* [in] */ MEMBERID memid,
+ /* [out] */ UINT __RPC_FAR *pVarIndex) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCustData(
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFuncCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetParamCustData(
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetVarCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetImplTypeCustData(
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDocumentation2(
+ /* [in] */ MEMBERID memid,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllCustData(
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllFuncCustData(
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllParamCustData(
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllVarCustData(
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllImplTypeCustData(
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeInfo2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeInfo2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeInfo2 __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeAttr )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ TYPEATTR __RPC_FAR *__RPC_FAR *ppTypeAttr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeComp )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFuncDesc )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ FUNCDESC __RPC_FAR *__RPC_FAR *ppFuncDesc);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetVarDesc )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ VARDESC __RPC_FAR *__RPC_FAR *ppVarDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNames )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [length_is][size_is][out] */ BSTR __RPC_FAR *rgBstrNames,
+ /* [in] */ UINT cMaxNames,
+ /* [out] */ UINT __RPC_FAR *pcNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRefTypeOfImplType )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ HREFTYPE __RPC_FAR *pRefType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetImplTypeFlags )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ INT __RPC_FAR *pImplTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [size_is][out] */ MEMBERID __RPC_FAR *pMemId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ PVOID pvInstance,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDllEntry )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRefTypeInfo )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ HREFTYPE hRefType,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddressOfMember )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ PVOID __RPC_FAR *ppv);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateInstance )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMops )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrMops);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetContainingTypeLib )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ ITypeLib __RPC_FAR *__RPC_FAR *ppTLib,
+ /* [out] */ UINT __RPC_FAR *pIndex);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseTypeAttr )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ TYPEATTR __RPC_FAR *pTypeAttr);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseFuncDesc )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseVarDesc )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeKind )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ TYPEKIND __RPC_FAR *pTypeKind);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeFlags )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pTypeFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFuncIndexOfMemId )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ UINT __RPC_FAR *pFuncIndex);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetVarIndexOfMemId )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ UINT __RPC_FAR *pVarIndex);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFuncCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetParamCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetVarCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetImplTypeCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation2 )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllFuncCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllParamCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllVarCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllImplTypeCustData )(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ END_INTERFACE
+ } ITypeInfo2Vtbl;
+
+ interface ITypeInfo2
+ {
+ CONST_VTBL struct ITypeInfo2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeInfo2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeInfo2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeInfo2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeInfo2_GetTypeAttr(This,ppTypeAttr) \
+ (This)->lpVtbl -> GetTypeAttr(This,ppTypeAttr)
+
+#define ITypeInfo2_GetTypeComp(This,ppTComp) \
+ (This)->lpVtbl -> GetTypeComp(This,ppTComp)
+
+#define ITypeInfo2_GetFuncDesc(This,index,ppFuncDesc) \
+ (This)->lpVtbl -> GetFuncDesc(This,index,ppFuncDesc)
+
+#define ITypeInfo2_GetVarDesc(This,index,ppVarDesc) \
+ (This)->lpVtbl -> GetVarDesc(This,index,ppVarDesc)
+
+#define ITypeInfo2_GetNames(This,memid,rgBstrNames,cMaxNames,pcNames) \
+ (This)->lpVtbl -> GetNames(This,memid,rgBstrNames,cMaxNames,pcNames)
+
+#define ITypeInfo2_GetRefTypeOfImplType(This,index,pRefType) \
+ (This)->lpVtbl -> GetRefTypeOfImplType(This,index,pRefType)
+
+#define ITypeInfo2_GetImplTypeFlags(This,index,pImplTypeFlags) \
+ (This)->lpVtbl -> GetImplTypeFlags(This,index,pImplTypeFlags)
+
+#define ITypeInfo2_GetIDsOfNames(This,rgszNames,cNames,pMemId) \
+ (This)->lpVtbl -> GetIDsOfNames(This,rgszNames,cNames,pMemId)
+
+#define ITypeInfo2_Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ (This)->lpVtbl -> Invoke(This,pvInstance,memid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+#define ITypeInfo2_GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) \
+ (This)->lpVtbl -> GetDocumentation(This,memid,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+
+#define ITypeInfo2_GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal) \
+ (This)->lpVtbl -> GetDllEntry(This,memid,invKind,pBstrDllName,pBstrName,pwOrdinal)
+
+#define ITypeInfo2_GetRefTypeInfo(This,hRefType,ppTInfo) \
+ (This)->lpVtbl -> GetRefTypeInfo(This,hRefType,ppTInfo)
+
+#define ITypeInfo2_AddressOfMember(This,memid,invKind,ppv) \
+ (This)->lpVtbl -> AddressOfMember(This,memid,invKind,ppv)
+
+#define ITypeInfo2_CreateInstance(This,pUnkOuter,riid,ppvObj) \
+ (This)->lpVtbl -> CreateInstance(This,pUnkOuter,riid,ppvObj)
+
+#define ITypeInfo2_GetMops(This,memid,pBstrMops) \
+ (This)->lpVtbl -> GetMops(This,memid,pBstrMops)
+
+#define ITypeInfo2_GetContainingTypeLib(This,ppTLib,pIndex) \
+ (This)->lpVtbl -> GetContainingTypeLib(This,ppTLib,pIndex)
+
+#define ITypeInfo2_ReleaseTypeAttr(This,pTypeAttr) \
+ (This)->lpVtbl -> ReleaseTypeAttr(This,pTypeAttr)
+
+#define ITypeInfo2_ReleaseFuncDesc(This,pFuncDesc) \
+ (This)->lpVtbl -> ReleaseFuncDesc(This,pFuncDesc)
+
+#define ITypeInfo2_ReleaseVarDesc(This,pVarDesc) \
+ (This)->lpVtbl -> ReleaseVarDesc(This,pVarDesc)
+
+
+#define ITypeInfo2_GetTypeKind(This,pTypeKind) \
+ (This)->lpVtbl -> GetTypeKind(This,pTypeKind)
+
+#define ITypeInfo2_GetTypeFlags(This,pTypeFlags) \
+ (This)->lpVtbl -> GetTypeFlags(This,pTypeFlags)
+
+#define ITypeInfo2_GetFuncIndexOfMemId(This,memid,invKind,pFuncIndex) \
+ (This)->lpVtbl -> GetFuncIndexOfMemId(This,memid,invKind,pFuncIndex)
+
+#define ITypeInfo2_GetVarIndexOfMemId(This,memid,pVarIndex) \
+ (This)->lpVtbl -> GetVarIndexOfMemId(This,memid,pVarIndex)
+
+#define ITypeInfo2_GetCustData(This,guid,pVarVal) \
+ (This)->lpVtbl -> GetCustData(This,guid,pVarVal)
+
+#define ITypeInfo2_GetFuncCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> GetFuncCustData(This,index,guid,pVarVal)
+
+#define ITypeInfo2_GetParamCustData(This,indexFunc,indexParam,guid,pVarVal) \
+ (This)->lpVtbl -> GetParamCustData(This,indexFunc,indexParam,guid,pVarVal)
+
+#define ITypeInfo2_GetVarCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> GetVarCustData(This,index,guid,pVarVal)
+
+#define ITypeInfo2_GetImplTypeCustData(This,index,guid,pVarVal) \
+ (This)->lpVtbl -> GetImplTypeCustData(This,index,guid,pVarVal)
+
+#define ITypeInfo2_GetDocumentation2(This,memid,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll) \
+ (This)->lpVtbl -> GetDocumentation2(This,memid,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll)
+
+#define ITypeInfo2_GetAllCustData(This,pCustData) \
+ (This)->lpVtbl -> GetAllCustData(This,pCustData)
+
+#define ITypeInfo2_GetAllFuncCustData(This,index,pCustData) \
+ (This)->lpVtbl -> GetAllFuncCustData(This,index,pCustData)
+
+#define ITypeInfo2_GetAllParamCustData(This,indexFunc,indexParam,pCustData) \
+ (This)->lpVtbl -> GetAllParamCustData(This,indexFunc,indexParam,pCustData)
+
+#define ITypeInfo2_GetAllVarCustData(This,index,pCustData) \
+ (This)->lpVtbl -> GetAllVarCustData(This,index,pCustData)
+
+#define ITypeInfo2_GetAllImplTypeCustData(This,index,pCustData) \
+ (This)->lpVtbl -> GetAllImplTypeCustData(This,index,pCustData)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetTypeKind_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ TYPEKIND __RPC_FAR *pTypeKind);
+
+
+void __RPC_STUB ITypeInfo2_GetTypeKind_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetTypeFlags_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pTypeFlags);
+
+
+void __RPC_STUB ITypeInfo2_GetTypeFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetFuncIndexOfMemId_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ UINT __RPC_FAR *pFuncIndex);
+
+
+void __RPC_STUB ITypeInfo2_GetFuncIndexOfMemId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetVarIndexOfMemId_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ UINT __RPC_FAR *pVarIndex);
+
+
+void __RPC_STUB ITypeInfo2_GetVarIndexOfMemId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeInfo2_GetCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetFuncCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeInfo2_GetFuncCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetParamCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeInfo2_GetParamCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetVarCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeInfo2_GetVarCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetImplTypeCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeInfo2_GetImplTypeCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo2_RemoteGetDocumentation2_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+
+void __RPC_STUB ITypeInfo2_RemoteGetDocumentation2_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeInfo2_GetAllCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllFuncCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeInfo2_GetAllFuncCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllParamCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT indexFunc,
+ /* [in] */ UINT indexParam,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeInfo2_GetAllParamCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllVarCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeInfo2_GetAllVarCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeInfo2_GetAllImplTypeCustData_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeInfo2_GetAllImplTypeCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeInfo2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeLib_INTERFACE_DEFINED__
+#define __ITypeLib_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeLib
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [v1_enum] */
+enum tagSYSKIND
+ { SYS_WIN16 = 0,
+ SYS_WIN32 = SYS_WIN16 + 1,
+ SYS_MAC = SYS_WIN32 + 1
+ } SYSKIND;
+
+typedef /* [v1_enum] */
+enum tagLIBFLAGS
+ { LIBFLAG_FRESTRICTED = 0x1,
+ LIBFLAG_FCONTROL = 0x2,
+ LIBFLAG_FHIDDEN = 0x4,
+ LIBFLAG_FHASDISKIMAGE = 0x8
+ } LIBFLAGS;
+
+typedef /* [unique] */ ITypeLib __RPC_FAR *LPTYPELIB;
+
+typedef struct tagTLIBATTR
+ {
+ GUID guid;
+ LCID lcid;
+ SYSKIND syskind;
+ WORD wMajorVerNum;
+ WORD wMinorVerNum;
+ WORD wLibFlags;
+ } TLIBATTR;
+
+typedef struct tagTLIBATTR __RPC_FAR *LPTLIBATTR;
+
+typedef TLIBATTR __RPC_FAR *__RPC_FAR *PPTLIBATTR;
+
+
+EXTERN_C const IID IID_ITypeLib;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeLib : public IUnknown
+ {
+ public:
+ virtual /* [local] */ UINT STDMETHODCALLTYPE GetTypeInfoCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(
+ /* [in] */ UINT index,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfoType(
+ /* [in] */ UINT index,
+ /* [out] */ TYPEKIND __RPC_FAR *pTKind) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeInfoOfGuid(
+ /* [in] */ REFGUID guid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTinfo) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetLibAttr(
+ /* [out] */ TLIBATTR __RPC_FAR *__RPC_FAR *ppTLibAttr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeComp(
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDocumentation(
+ /* [in] */ INT index,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE IsName(
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE FindName(
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE ReleaseTLibAttr(
+ /* [in] */ TLIBATTR __RPC_FAR *pTLibAttr) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeLibVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeLib __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeLib __RPC_FAR * This);
+
+ /* [local] */ UINT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )(
+ ITypeLib __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoType )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ TYPEKIND __RPC_FAR *pTKind);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoOfGuid )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTinfo);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLibAttr )(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ TLIBATTR __RPC_FAR *__RPC_FAR *ppTLibAttr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeComp )(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsName )(
+ ITypeLib __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FindName )(
+ ITypeLib __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseTLibAttr )(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ TLIBATTR __RPC_FAR *pTLibAttr);
+
+ END_INTERFACE
+ } ITypeLibVtbl;
+
+ interface ITypeLib
+ {
+ CONST_VTBL struct ITypeLibVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeLib_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeLib_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeLib_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeLib_GetTypeInfoCount(This) \
+ (This)->lpVtbl -> GetTypeInfoCount(This)
+
+#define ITypeLib_GetTypeInfo(This,index,ppTInfo) \
+ (This)->lpVtbl -> GetTypeInfo(This,index,ppTInfo)
+
+#define ITypeLib_GetTypeInfoType(This,index,pTKind) \
+ (This)->lpVtbl -> GetTypeInfoType(This,index,pTKind)
+
+#define ITypeLib_GetTypeInfoOfGuid(This,guid,ppTinfo) \
+ (This)->lpVtbl -> GetTypeInfoOfGuid(This,guid,ppTinfo)
+
+#define ITypeLib_GetLibAttr(This,ppTLibAttr) \
+ (This)->lpVtbl -> GetLibAttr(This,ppTLibAttr)
+
+#define ITypeLib_GetTypeComp(This,ppTComp) \
+ (This)->lpVtbl -> GetTypeComp(This,ppTComp)
+
+#define ITypeLib_GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) \
+ (This)->lpVtbl -> GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+
+#define ITypeLib_IsName(This,szNameBuf,lHashVal,pfName) \
+ (This)->lpVtbl -> IsName(This,szNameBuf,lHashVal,pfName)
+
+#define ITypeLib_FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound) \
+ (This)->lpVtbl -> FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound)
+
+#define ITypeLib_ReleaseTLibAttr(This,pTLibAttr) \
+ (This)->lpVtbl -> ReleaseTLibAttr(This,pTLibAttr)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_RemoteGetTypeInfoCount_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ UINT __RPC_FAR *pcTInfo);
+
+
+void __RPC_STUB ITypeLib_RemoteGetTypeInfoCount_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfo_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+
+void __RPC_STUB ITypeLib_GetTypeInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfoType_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ TYPEKIND __RPC_FAR *pTKind);
+
+
+void __RPC_STUB ITypeLib_GetTypeInfoType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfoOfGuid_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTinfo);
+
+
+void __RPC_STUB ITypeLib_GetTypeInfoOfGuid_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_RemoteGetLibAttr_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ PPTLIBATTR ppTLibAttr,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+
+void __RPC_STUB ITypeLib_RemoteGetLibAttr_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeComp_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+
+void __RPC_STUB ITypeLib_GetTypeComp_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_RemoteGetDocumentation_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+
+void __RPC_STUB ITypeLib_RemoteGetDocumentation_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_RemoteIsName_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName,
+ /* [out] */ BSTR __RPC_FAR *pBstrLibName);
+
+
+void __RPC_STUB ITypeLib_RemoteIsName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_RemoteFindName_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound,
+ /* [out] */ BSTR __RPC_FAR *pBstrLibName);
+
+
+void __RPC_STUB ITypeLib_RemoteFindName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_LocalReleaseTLibAttr_Proxy(
+ ITypeLib __RPC_FAR * This);
+
+
+void __RPC_STUB ITypeLib_LocalReleaseTLibAttr_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeLib_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeLib2_INTERFACE_DEFINED__
+#define __ITypeLib2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeLib2
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ITypeLib2 __RPC_FAR *LPTYPELIB2;
+
+
+EXTERN_C const IID IID_ITypeLib2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeLib2 : public ITypeLib
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetCustData(
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetLibStatistics(
+ /* [out] */ ULONG __RPC_FAR *pcUniqueNames,
+ /* [out] */ ULONG __RPC_FAR *pcchUniqueNames) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDocumentation2(
+ /* [in] */ INT index,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllCustData(
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeLib2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeLib2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeLib2 __RPC_FAR * This);
+
+ /* [local] */ UINT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )(
+ ITypeLib2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoType )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ TYPEKIND __RPC_FAR *pTKind);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoOfGuid )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTinfo);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLibAttr )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ TLIBATTR __RPC_FAR *__RPC_FAR *ppTLibAttr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeComp )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsName )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FindName )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *ReleaseTLibAttr )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ TLIBATTR __RPC_FAR *pTLibAttr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCustData )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLibStatistics )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcUniqueNames,
+ /* [out] */ ULONG __RPC_FAR *pcchUniqueNames);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDocumentation2 )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllCustData )(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+ END_INTERFACE
+ } ITypeLib2Vtbl;
+
+ interface ITypeLib2
+ {
+ CONST_VTBL struct ITypeLib2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeLib2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeLib2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeLib2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeLib2_GetTypeInfoCount(This) \
+ (This)->lpVtbl -> GetTypeInfoCount(This)
+
+#define ITypeLib2_GetTypeInfo(This,index,ppTInfo) \
+ (This)->lpVtbl -> GetTypeInfo(This,index,ppTInfo)
+
+#define ITypeLib2_GetTypeInfoType(This,index,pTKind) \
+ (This)->lpVtbl -> GetTypeInfoType(This,index,pTKind)
+
+#define ITypeLib2_GetTypeInfoOfGuid(This,guid,ppTinfo) \
+ (This)->lpVtbl -> GetTypeInfoOfGuid(This,guid,ppTinfo)
+
+#define ITypeLib2_GetLibAttr(This,ppTLibAttr) \
+ (This)->lpVtbl -> GetLibAttr(This,ppTLibAttr)
+
+#define ITypeLib2_GetTypeComp(This,ppTComp) \
+ (This)->lpVtbl -> GetTypeComp(This,ppTComp)
+
+#define ITypeLib2_GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile) \
+ (This)->lpVtbl -> GetDocumentation(This,index,pBstrName,pBstrDocString,pdwHelpContext,pBstrHelpFile)
+
+#define ITypeLib2_IsName(This,szNameBuf,lHashVal,pfName) \
+ (This)->lpVtbl -> IsName(This,szNameBuf,lHashVal,pfName)
+
+#define ITypeLib2_FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound) \
+ (This)->lpVtbl -> FindName(This,szNameBuf,lHashVal,ppTInfo,rgMemId,pcFound)
+
+#define ITypeLib2_ReleaseTLibAttr(This,pTLibAttr) \
+ (This)->lpVtbl -> ReleaseTLibAttr(This,pTLibAttr)
+
+
+#define ITypeLib2_GetCustData(This,guid,pVarVal) \
+ (This)->lpVtbl -> GetCustData(This,guid,pVarVal)
+
+#define ITypeLib2_GetLibStatistics(This,pcUniqueNames,pcchUniqueNames) \
+ (This)->lpVtbl -> GetLibStatistics(This,pcUniqueNames,pcchUniqueNames)
+
+#define ITypeLib2_GetDocumentation2(This,index,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll) \
+ (This)->lpVtbl -> GetDocumentation2(This,index,lcid,pbstrHelpString,pdwHelpStringContext,pbstrHelpStringDll)
+
+#define ITypeLib2_GetAllCustData(This,pCustData) \
+ (This)->lpVtbl -> GetAllCustData(This,pCustData)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib2_GetCustData_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ REFGUID guid,
+ /* [out] */ VARIANT __RPC_FAR *pVarVal);
+
+
+void __RPC_STUB ITypeLib2_GetCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib2_RemoteGetLibStatistics_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcUniqueNames,
+ /* [out] */ ULONG __RPC_FAR *pcchUniqueNames);
+
+
+void __RPC_STUB ITypeLib2_RemoteGetLibStatistics_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib2_RemoteGetDocumentation2_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+
+void __RPC_STUB ITypeLib2_RemoteGetDocumentation2_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeLib2_GetAllCustData_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ CUSTDATA __RPC_FAR *pCustData);
+
+
+void __RPC_STUB ITypeLib2_GetAllCustData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeLib2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITypeChangeEvents_INTERFACE_DEFINED__
+#define __ITypeChangeEvents_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITypeChangeEvents
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ITypeChangeEvents __RPC_FAR *LPTYPECHANGEEVENTS;
+
+typedef
+enum tagCHANGEKIND
+ { CHANGEKIND_ADDMEMBER = 0,
+ CHANGEKIND_DELETEMEMBER = CHANGEKIND_ADDMEMBER + 1,
+ CHANGEKIND_SETNAMES = CHANGEKIND_DELETEMEMBER + 1,
+ CHANGEKIND_SETDOCUMENTATION = CHANGEKIND_SETNAMES + 1,
+ CHANGEKIND_GENERAL = CHANGEKIND_SETDOCUMENTATION + 1,
+ CHANGEKIND_INVALIDATE = CHANGEKIND_GENERAL + 1,
+ CHANGEKIND_CHANGEFAILED = CHANGEKIND_INVALIDATE + 1,
+ CHANGEKIND_MAX = CHANGEKIND_CHANGEFAILED + 1
+ } CHANGEKIND;
+
+
+EXTERN_C const IID IID_ITypeChangeEvents;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITypeChangeEvents : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RequestTypeChange(
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoBefore,
+ /* [in] */ LPOLESTR pStrName,
+ /* [out] */ INT __RPC_FAR *pfCancel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AfterTypeChange(
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoAfter,
+ /* [in] */ LPOLESTR pStrName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITypeChangeEventsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITypeChangeEvents __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITypeChangeEvents __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITypeChangeEvents __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestTypeChange )(
+ ITypeChangeEvents __RPC_FAR * This,
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoBefore,
+ /* [in] */ LPOLESTR pStrName,
+ /* [out] */ INT __RPC_FAR *pfCancel);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AfterTypeChange )(
+ ITypeChangeEvents __RPC_FAR * This,
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoAfter,
+ /* [in] */ LPOLESTR pStrName);
+
+ END_INTERFACE
+ } ITypeChangeEventsVtbl;
+
+ interface ITypeChangeEvents
+ {
+ CONST_VTBL struct ITypeChangeEventsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITypeChangeEvents_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITypeChangeEvents_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITypeChangeEvents_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITypeChangeEvents_RequestTypeChange(This,changeKind,pTInfoBefore,pStrName,pfCancel) \
+ (This)->lpVtbl -> RequestTypeChange(This,changeKind,pTInfoBefore,pStrName,pfCancel)
+
+#define ITypeChangeEvents_AfterTypeChange(This,changeKind,pTInfoAfter,pStrName) \
+ (This)->lpVtbl -> AfterTypeChange(This,changeKind,pTInfoAfter,pStrName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITypeChangeEvents_RequestTypeChange_Proxy(
+ ITypeChangeEvents __RPC_FAR * This,
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoBefore,
+ /* [in] */ LPOLESTR pStrName,
+ /* [out] */ INT __RPC_FAR *pfCancel);
+
+
+void __RPC_STUB ITypeChangeEvents_RequestTypeChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITypeChangeEvents_AfterTypeChange_Proxy(
+ ITypeChangeEvents __RPC_FAR * This,
+ /* [in] */ CHANGEKIND changeKind,
+ /* [in] */ ITypeInfo __RPC_FAR *pTInfoAfter,
+ /* [in] */ LPOLESTR pStrName);
+
+
+void __RPC_STUB ITypeChangeEvents_AfterTypeChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITypeChangeEvents_INTERFACE_DEFINED__ */
+
+
+#ifndef __IErrorInfo_INTERFACE_DEFINED__
+#define __IErrorInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IErrorInfo
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ IErrorInfo __RPC_FAR *LPERRORINFO;
+
+
+EXTERN_C const IID IID_IErrorInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IErrorInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetGUID(
+ /* [out] */ GUID __RPC_FAR *pGUID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSource(
+ /* [out] */ BSTR __RPC_FAR *pBstrSource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDescription(
+ /* [out] */ BSTR __RPC_FAR *pBstrDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetHelpFile(
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetHelpContext(
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IErrorInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IErrorInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IErrorInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IErrorInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetGUID )(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ GUID __RPC_FAR *pGUID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSource )(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrSource);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDescription )(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrDescription);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetHelpFile )(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetHelpContext )(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext);
+
+ END_INTERFACE
+ } IErrorInfoVtbl;
+
+ interface IErrorInfo
+ {
+ CONST_VTBL struct IErrorInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IErrorInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IErrorInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IErrorInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IErrorInfo_GetGUID(This,pGUID) \
+ (This)->lpVtbl -> GetGUID(This,pGUID)
+
+#define IErrorInfo_GetSource(This,pBstrSource) \
+ (This)->lpVtbl -> GetSource(This,pBstrSource)
+
+#define IErrorInfo_GetDescription(This,pBstrDescription) \
+ (This)->lpVtbl -> GetDescription(This,pBstrDescription)
+
+#define IErrorInfo_GetHelpFile(This,pBstrHelpFile) \
+ (This)->lpVtbl -> GetHelpFile(This,pBstrHelpFile)
+
+#define IErrorInfo_GetHelpContext(This,pdwHelpContext) \
+ (This)->lpVtbl -> GetHelpContext(This,pdwHelpContext)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetGUID_Proxy(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ GUID __RPC_FAR *pGUID);
+
+
+void __RPC_STUB IErrorInfo_GetGUID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetSource_Proxy(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrSource);
+
+
+void __RPC_STUB IErrorInfo_GetSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetDescription_Proxy(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrDescription);
+
+
+void __RPC_STUB IErrorInfo_GetDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetHelpFile_Proxy(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+
+void __RPC_STUB IErrorInfo_GetHelpFile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorInfo_GetHelpContext_Proxy(
+ IErrorInfo __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext);
+
+
+void __RPC_STUB IErrorInfo_GetHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IErrorInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICreateErrorInfo_INTERFACE_DEFINED__
+#define __ICreateErrorInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICreateErrorInfo
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local][unique][uuid][object] */
+
+
+typedef /* [unique] */ ICreateErrorInfo __RPC_FAR *LPCREATEERRORINFO;
+
+
+EXTERN_C const IID IID_ICreateErrorInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICreateErrorInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetGUID(
+ /* [in] */ REFGUID rguid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSource(
+ /* [in] */ LPOLESTR szSource) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDescription(
+ /* [in] */ LPOLESTR szDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpFile(
+ /* [in] */ LPOLESTR szHelpFile) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHelpContext(
+ /* [in] */ DWORD dwHelpContext) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICreateErrorInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICreateErrorInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICreateErrorInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetGUID )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ REFGUID rguid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSource )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szSource);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDescription )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szDescription);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpFile )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szHelpFile);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHelpContext )(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+ END_INTERFACE
+ } ICreateErrorInfoVtbl;
+
+ interface ICreateErrorInfo
+ {
+ CONST_VTBL struct ICreateErrorInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICreateErrorInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICreateErrorInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICreateErrorInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICreateErrorInfo_SetGUID(This,rguid) \
+ (This)->lpVtbl -> SetGUID(This,rguid)
+
+#define ICreateErrorInfo_SetSource(This,szSource) \
+ (This)->lpVtbl -> SetSource(This,szSource)
+
+#define ICreateErrorInfo_SetDescription(This,szDescription) \
+ (This)->lpVtbl -> SetDescription(This,szDescription)
+
+#define ICreateErrorInfo_SetHelpFile(This,szHelpFile) \
+ (This)->lpVtbl -> SetHelpFile(This,szHelpFile)
+
+#define ICreateErrorInfo_SetHelpContext(This,dwHelpContext) \
+ (This)->lpVtbl -> SetHelpContext(This,dwHelpContext)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetGUID_Proxy(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ REFGUID rguid);
+
+
+void __RPC_STUB ICreateErrorInfo_SetGUID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetSource_Proxy(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szSource);
+
+
+void __RPC_STUB ICreateErrorInfo_SetSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetDescription_Proxy(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szDescription);
+
+
+void __RPC_STUB ICreateErrorInfo_SetDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetHelpFile_Proxy(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ LPOLESTR szHelpFile);
+
+
+void __RPC_STUB ICreateErrorInfo_SetHelpFile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICreateErrorInfo_SetHelpContext_Proxy(
+ ICreateErrorInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwHelpContext);
+
+
+void __RPC_STUB ICreateErrorInfo_SetHelpContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICreateErrorInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __ISupportErrorInfo_INTERFACE_DEFINED__
+#define __ISupportErrorInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISupportErrorInfo
+ * at Fri Nov 15 09:36:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ISupportErrorInfo __RPC_FAR *LPSUPPORTERRORINFO;
+
+
+EXTERN_C const IID IID_ISupportErrorInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISupportErrorInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo(
+ /* [in] */ REFIID riid) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISupportErrorInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISupportErrorInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISupportErrorInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISupportErrorInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InterfaceSupportsErrorInfo )(
+ ISupportErrorInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid);
+
+ END_INTERFACE
+ } ISupportErrorInfoVtbl;
+
+ interface ISupportErrorInfo
+ {
+ CONST_VTBL struct ISupportErrorInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISupportErrorInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISupportErrorInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISupportErrorInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISupportErrorInfo_InterfaceSupportsErrorInfo(This,riid) \
+ (This)->lpVtbl -> InterfaceSupportsErrorInfo(This,riid)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ISupportErrorInfo_InterfaceSupportsErrorInfo_Proxy(
+ ISupportErrorInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid);
+
+
+void __RPC_STUB ISupportErrorInfo_InterfaceSupportsErrorInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISupportErrorInfo_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * );
+
+unsigned long __RPC_USER CLEANLOCALSTORAGE_UserSize( unsigned long __RPC_FAR *, unsigned long , CLEANLOCALSTORAGE __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLEANLOCALSTORAGE_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLEANLOCALSTORAGE __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLEANLOCALSTORAGE_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLEANLOCALSTORAGE __RPC_FAR * );
+void __RPC_USER CLEANLOCALSTORAGE_UserFree( unsigned long __RPC_FAR *, CLEANLOCALSTORAGE __RPC_FAR * );
+
+unsigned long __RPC_USER VARIANT_UserSize( unsigned long __RPC_FAR *, unsigned long , VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+void __RPC_USER VARIANT_UserFree( unsigned long __RPC_FAR *, VARIANT __RPC_FAR * );
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IDispatch_Invoke_Proxy(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDispatch_Invoke_Stub(
+ IDispatch __RPC_FAR * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [size_is][out] */ VARIANTARG __RPC_FAR *rgVtRef,
+ /* [in] */ UINT cVtRef,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *pArgErr);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumVARIANT_Next_Proxy(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ VARIANT __RPC_FAR *rgVar,
+ /* [out] */ ULONG __RPC_FAR *pCeltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumVARIANT_Next_Stub(
+ IEnumVARIANT __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ VARIANT __RPC_FAR *rgVar,
+ /* [out] */ ULONG __RPC_FAR *pCeltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeComp_Bind_Proxy(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [in] */ WORD wFlags,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ DESCKIND __RPC_FAR *pDescKind,
+ /* [out] */ BINDPTR __RPC_FAR *pBindPtr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeComp_Bind_Stub(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [in] */ WORD wFlags,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ DESCKIND __RPC_FAR *pDescKind,
+ /* [out] */ PPFUNCDESC ppFuncDesc,
+ /* [out] */ PPVARDESC ppVarDesc,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTypeComp,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeComp_BindType_Proxy(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [out] */ ITypeComp __RPC_FAR *__RPC_FAR *ppTComp);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeComp_BindType_Stub(
+ ITypeComp __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetTypeAttr_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ TYPEATTR __RPC_FAR *__RPC_FAR *ppTypeAttr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetTypeAttr_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [out] */ PPTYPEATTR ppTypeAttr,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetFuncDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ FUNCDESC __RPC_FAR *__RPC_FAR *ppFuncDesc);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetFuncDesc_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ PPFUNCDESC ppFuncDesc,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetVarDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ VARDESC __RPC_FAR *__RPC_FAR *ppVarDesc);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetVarDesc_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ UINT index,
+ /* [out] */ PPVARDESC ppVarDesc,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_Invoke_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ PVOID pvInstance,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_Invoke_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pIUnk,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [size_is][out] */ VARIANTARG __RPC_FAR *rgVtRef,
+ /* [in] */ UINT cVtRef,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *pArgErr);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetDocumentation_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetDocumentation_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetDllEntry_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_GetDllEntry_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrDllName,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ WORD __RPC_FAR *pwOrdinal);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_AddressOfMember_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ INVOKEKIND invKind,
+ /* [out] */ PVOID __RPC_FAR *ppv);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_AddressOfMember_Stub(
+ ITypeInfo __RPC_FAR * This);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo_CreateInstance_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_CreateInstance_Stub(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+/* [local] */ void STDMETHODCALLTYPE ITypeInfo_ReleaseTypeAttr_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ TYPEATTR __RPC_FAR *pTypeAttr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_ReleaseTypeAttr_Stub(
+ ITypeInfo __RPC_FAR * This);
+
+/* [local] */ void STDMETHODCALLTYPE ITypeInfo_ReleaseFuncDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ FUNCDESC __RPC_FAR *pFuncDesc);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_ReleaseFuncDesc_Stub(
+ ITypeInfo __RPC_FAR * This);
+
+/* [local] */ void STDMETHODCALLTYPE ITypeInfo_ReleaseVarDesc_Proxy(
+ ITypeInfo __RPC_FAR * This,
+ /* [in] */ VARDESC __RPC_FAR *pVarDesc);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo_ReleaseVarDesc_Stub(
+ ITypeInfo __RPC_FAR * This);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeInfo2_GetDocumentation2_Proxy(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeInfo2_GetDocumentation2_Stub(
+ ITypeInfo2 __RPC_FAR * This,
+ /* [in] */ MEMBERID memid,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+/* [local] */ UINT STDMETHODCALLTYPE ITypeLib_GetTypeInfoCount_Proxy(
+ ITypeLib __RPC_FAR * This);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_GetTypeInfoCount_Stub(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ UINT __RPC_FAR *pcTInfo);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib_GetLibAttr_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ TLIBATTR __RPC_FAR *__RPC_FAR *ppTLibAttr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_GetLibAttr_Stub(
+ ITypeLib __RPC_FAR * This,
+ /* [out] */ PPTLIBATTR ppTLibAttr,
+ /* [out] */ CLEANLOCALSTORAGE __RPC_FAR *pDummy);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib_GetDocumentation_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_GetDocumentation_Stub(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pBstrName,
+ /* [out] */ BSTR __RPC_FAR *pBstrDocString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext,
+ /* [out] */ BSTR __RPC_FAR *pBstrHelpFile);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib_IsName_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_IsName_Stub(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [out] */ BOOL __RPC_FAR *pfName,
+ /* [out] */ BSTR __RPC_FAR *pBstrLibName);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib_FindName_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [out][in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_FindName_Stub(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ LPOLESTR szNameBuf,
+ /* [in] */ ULONG lHashVal,
+ /* [length_is][size_is][out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo,
+ /* [length_is][size_is][out] */ MEMBERID __RPC_FAR *rgMemId,
+ /* [out][in] */ USHORT __RPC_FAR *pcFound,
+ /* [out] */ BSTR __RPC_FAR *pBstrLibName);
+
+/* [local] */ void STDMETHODCALLTYPE ITypeLib_ReleaseTLibAttr_Proxy(
+ ITypeLib __RPC_FAR * This,
+ /* [in] */ TLIBATTR __RPC_FAR *pTLibAttr);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib_ReleaseTLibAttr_Stub(
+ ITypeLib __RPC_FAR * This);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib2_GetLibStatistics_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcUniqueNames,
+ /* [out] */ ULONG __RPC_FAR *pcchUniqueNames);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib2_GetLibStatistics_Stub(
+ ITypeLib2 __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcUniqueNames,
+ /* [out] */ ULONG __RPC_FAR *pcchUniqueNames);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITypeLib2_GetDocumentation2_Proxy(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ LCID lcid,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITypeLib2_GetDocumentation2_Stub(
+ ITypeLib2 __RPC_FAR * This,
+ /* [in] */ INT index,
+ /* [in] */ LCID lcid,
+ /* [in] */ DWORD refPtrFlags,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpString,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpStringContext,
+ /* [out] */ BSTR __RPC_FAR *pbstrHelpStringDll);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/oaidl.idl b/public/sdk/inc/oaidl.idl
new file mode 100644
index 000000000..7734051ed
--- /dev/null
+++ b/public/sdk/inc/oaidl.idl
@@ -0,0 +1,1751 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: oaidl.idl
+//
+//----------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+#endif
+
+interface ICreateTypeInfo;
+interface ICreateTypeInfo2;
+interface ICreateTypeLib;
+interface ICreateTypeLib2;
+interface IDispatch;
+interface IEnumVARIANT;
+interface ITypeComp;
+interface ITypeInfo;
+interface ITypeInfo2;
+interface ITypeLib;
+interface ITypeLib2;
+interface ITypeChangeEvents;
+interface IErrorInfo;
+interface ICreateErrorInfo;
+interface ISupportErrorInfo;
+
+
+[
+ version(1.0), pointer_default(unique)
+]
+
+interface IOleAutomationTypes
+{
+
+typedef CY CURRENCY;
+
+// #########################################################################
+// SAFEARRAY
+// #########################################################################
+
+typedef struct tagSAFEARRAYBOUND {
+ ULONG cElements;
+ LONG lLbound;
+} SAFEARRAYBOUND, * LPSAFEARRAYBOUND;
+
+cpp_quote("#if defined(_OLEAUT32_)")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+// Forward references.
+typedef [unique] struct _wireVARIANT * wireVARIANT;
+
+typedef struct _wireSAFEARR_BSTR {
+ ULONG Size;
+ [size_is(Size), ref] wireBSTR * aBstr;
+} SAFEARR_BSTR;
+
+typedef struct _wireSAFEARR_UNKNOWN {
+ ULONG Size;
+ [size_is(Size), ref] IUnknown ** apUnknown;
+} SAFEARR_UNKNOWN;
+
+typedef struct _wireSAFEARR_DISPATCH {
+ ULONG Size;
+ [size_is(Size), ref] IDispatch ** apDispatch;
+} SAFEARR_DISPATCH;
+
+typedef struct _wireSAFEARR_VARIANT {
+ ULONG Size;
+ [size_is(Size), ref] wireVARIANT * aVariant;
+} SAFEARR_VARIANT;
+
+typedef [v1_enum] enum tagSF_TYPE {
+ SF_ERROR = VT_ERROR,
+ SF_I1 = VT_I1,
+ SF_I2 = VT_I2,
+ SF_I4 = VT_I4,
+ SF_I8 = VT_I8,
+ SF_BSTR = VT_BSTR,
+ SF_UNKNOWN = VT_UNKNOWN,
+ SF_DISPATCH = VT_DISPATCH,
+ SF_VARIANT = VT_VARIANT
+} SF_TYPE;
+
+typedef union _wireSAFEARRAY_UNION switch(ULONG sfType) u {
+ case SF_BSTR: SAFEARR_BSTR BstrStr;
+ case SF_UNKNOWN: SAFEARR_UNKNOWN UnknownStr;
+ case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr;
+ case SF_VARIANT: SAFEARR_VARIANT VariantStr;
+ case SF_I1: BYTE_SIZEDARR ByteStr;
+ case SF_I2: WORD_SIZEDARR WordStr;
+ case SF_I4: DWORD_SIZEDARR LongStr;
+ case SF_I8: HYPER_SIZEDARR HyperStr;
+ default: ; // error
+} SAFEARRAYUNION;
+
+typedef [unique] struct _wireSAFEARRAY {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ SAFEARRAYUNION uArrayStructs;
+ [size_is(cDims)] SAFEARRAYBOUND rgsabound[];
+} * wireSAFEARRAY;
+
+typedef [unique] wireSAFEARRAY * wirePSAFEARRAY;
+
+cpp_quote("#endif /* _OLEAUT32_ */")
+
+typedef struct tagSAFEARRAY {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ PVOID pvData;
+ SAFEARRAYBOUND rgsabound[];
+} SAFEARRAY;
+
+typedef [wire_marshal(wirePSAFEARRAY)] SAFEARRAY * LPSAFEARRAY;
+
+const USHORT FADF_AUTO = 0x0001; /* array is allocated on the stack */
+const USHORT FADF_STATIC = 0x0002; /* array is staticly allocated */
+const USHORT FADF_EMBEDDED = 0x0004; /* array is embedded in a structure */
+const USHORT FADF_FIXEDSIZE = 0x0010; /* may not be resized or reallocated */
+const USHORT FADF_BSTR = 0x0100; /* an array of BSTRs */
+const USHORT FADF_UNKNOWN = 0x0200; /* an array of IUnknown* */
+const USHORT FADF_DISPATCH = 0x0400; /* an array of IDispatch* */
+const USHORT FADF_VARIANT = 0x0800; /* an array of VARIANTs */
+const USHORT FADF_RESERVED = 0xF0E8; /* reserved bits */
+
+
+// #########################################################################
+// VARIANT
+// #########################################################################
+
+cpp_quote("/* VARIANT STRUCTURE")
+cpp_quote(" *")
+cpp_quote(" * VARTYPE vt;")
+cpp_quote(" * WORD wReserved1;")
+cpp_quote(" * WORD wReserved2;")
+cpp_quote(" * WORD wReserved3;")
+cpp_quote(" * union {")
+cpp_quote(" * LONG VT_I4")
+cpp_quote(" * BYTE VT_UI1")
+cpp_quote(" * SHORT VT_I2")
+cpp_quote(" * FLOAT VT_R4")
+cpp_quote(" * DOUBLE VT_R8")
+cpp_quote(" * VARIANT_BOOL VT_BOOL")
+cpp_quote(" * SCODE VT_ERROR")
+cpp_quote(" * CY VT_CY")
+cpp_quote(" * DATE VT_DATE")
+cpp_quote(" * BSTR VT_BSTR")
+cpp_quote(" * IUnknown * VT_UNKNOWN")
+cpp_quote(" * IDispatch * VT_DISPATCH")
+cpp_quote(" * SAFEARRAY * VT_ARRAY")
+cpp_quote(" * BYTE * VT_BYREF|VT_UI1")
+cpp_quote(" * SHORT * VT_BYREF|VT_I2")
+cpp_quote(" * LONG * VT_BYREF|VT_I4")
+cpp_quote(" * FLOAT * VT_BYREF|VT_R4")
+cpp_quote(" * DOUBLE * VT_BYREF|VT_R8")
+cpp_quote(" * VARIANT_BOOL * VT_BYREF|VT_BOOL")
+cpp_quote(" * SCODE * VT_BYREF|VT_ERROR")
+cpp_quote(" * CY * VT_BYREF|VT_CY")
+cpp_quote(" * DATE * VT_BYREF|VT_DATE")
+cpp_quote(" * BSTR * VT_BYREF|VT_BSTR")
+cpp_quote(" * IUnknown ** VT_BYREF|VT_UNKNOWN")
+cpp_quote(" * IDispatch ** VT_BYREF|VT_DISPATCH")
+cpp_quote(" * SAFEARRAY ** VT_BYREF|VT_ARRAY")
+cpp_quote(" * VARIANT * VT_BYREF|VT_VARIANT")
+cpp_quote(" * PVOID VT_BYREF (Generic ByRef)")
+cpp_quote(" * CHAR VT_I1")
+cpp_quote(" * USHORT VT_UI2")
+cpp_quote(" * ULONG VT_UI4")
+cpp_quote(" * INT VT_INT")
+cpp_quote(" * UINT VT_UINT")
+cpp_quote(" * DECIMAL * VT_BYREF|VT_DECIMAL")
+cpp_quote(" * CHAR * VT_BYREF|VT_I1")
+cpp_quote(" * USHORT * VT_BYREF|VT_UI2")
+cpp_quote(" * ULONG * VT_BYREF|VT_UI4")
+cpp_quote(" * INT * VT_BYREF|VT_INT")
+cpp_quote(" * UINT * VT_BYREF|VT_UINT")
+cpp_quote(" * }")
+cpp_quote(" */")
+
+cpp_quote("#if __STDC__ || defined(NONAMELESSUNION)")
+cpp_quote("#define __VARIANT_NAME_1 n1")
+cpp_quote("#define __VARIANT_NAME_2 n2")
+cpp_quote("#define __VARIANT_NAME_3 n3")
+cpp_quote("#else")
+cpp_quote("#define __tagVARIANT")
+cpp_quote("#define __VARIANT_NAME_1")
+cpp_quote("#define __VARIANT_NAME_2")
+cpp_quote("#define __VARIANT_NAME_3")
+cpp_quote("#endif")
+
+typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
+
+struct tagVARIANT {
+ union {
+ struct __tagVARIANT {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ union {
+ LONG lVal; /* VT_I4 */
+ BYTE bVal; /* VT_UI1 */
+ SHORT iVal; /* VT_I2 */
+ FLOAT fltVal; /* VT_R4 */
+ DOUBLE dblVal; /* VT_R8 */
+ VARIANT_BOOL boolVal; /* VT_BOOL */
+ _VARIANT_BOOL bool; /* (obsolete) */
+ SCODE scode; /* VT_ERROR */
+ CY cyVal; /* VT_CY */
+ DATE date; /* VT_DATE */
+ BSTR bstrVal; /* VT_BSTR */
+ IUnknown * punkVal; /* VT_UNKNOWN */
+ IDispatch * pdispVal; /* VT_DISPATCH */
+ SAFEARRAY * parray; /* VT_ARRAY */
+ BYTE * pbVal; /* VT_BYREF|VT_UI1 */
+ SHORT * piVal; /* VT_BYREF|VT_I2 */
+ LONG * plVal; /* VT_BYREF|VT_I4 */
+ FLOAT * pfltVal; /* VT_BYREF|VT_R4 */
+ DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */
+ VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */
+ _VARIANT_BOOL *pbool; /* (obsolete) */
+ SCODE * pscode; /* VT_BYREF|VT_ERROR */
+ CY * pcyVal; /* VT_BYREF|VT_CY */
+ DATE * pdate; /* VT_BYREF|VT_DATE */
+ BSTR * pbstrVal; /* VT_BYREF|VT_BSTR */
+ IUnknown ** ppunkVal; /* VT_BYREF|VT_UNKNOWN */
+ IDispatch ** ppdispVal; /* VT_BYREF|VT_DISPATCH */
+ SAFEARRAY ** pparray; /* VT_BYREF|VT_ARRAY */
+ VARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */
+ PVOID byref; /* Generic ByRef */
+ CHAR cVal; /* VT_I1 */
+ USHORT uiVal; /* VT_UI2 */
+ ULONG ulVal; /* VT_UI4 */
+ INT intVal; /* VT_INT */
+ UINT uintVal; /* VT_UINT */
+ DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */
+ CHAR * pcVal; /* VT_BYREF|VT_I1 */
+ USHORT * puiVal; /* VT_BYREF|VT_UI2 */
+ ULONG * pulVal; /* VT_BYREF|VT_UI4 */
+ INT * pintVal; /* VT_BYREF|VT_INT */
+ UINT * puintVal; /* VT_BYREF|VT_UINT */
+ } __VARIANT_NAME_3;
+ } __VARIANT_NAME_2;
+
+ DECIMAL decVal;
+ } __VARIANT_NAME_1;
+};
+
+typedef VARIANT * LPVARIANT;
+typedef VARIANT VARIANTARG;
+typedef VARIANT * LPVARIANTARG;
+
+cpp_quote("#if defined(_OLEAUT32_)")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+struct _wireVARIANT {
+ USHORT vt;
+ USHORT wReserved1;
+ USHORT wReserved2;
+ USHORT wReserved3;
+ [switch_type(USHORT), switch_is(vt)] union {
+ [case(VT_I4)] LONG lVal; /* VT_I4 */
+ [case(VT_UI1)] BYTE bVal; /* VT_UI1 */
+ [case(VT_I2)] SHORT iVal; /* VT_I2 */
+ [case(VT_R4)] FLOAT fltVal; /* VT_R4 */
+ [case(VT_R8)] DOUBLE dblVal; /* VT_R8 */
+ [case(VT_BOOL)] VARIANT_BOOL boolVal; /* VT_BOOL */
+ [case(VT_ERROR)] SCODE scode; /* VT_ERROR */
+ [case(VT_CY)] CY cyVal; /* VT_CY */
+ [case(VT_DATE)] DATE date; /* VT_DATE */
+ [case(VT_BSTR)] wireBSTR bstrVal; /* VT_BSTR */
+ [case(VT_UNKNOWN)] IUnknown * punkVal; /* VT_UNKNOWN */
+ [case(VT_DISPATCH)] IDispatch * pdispVal; /* VT_DISPATCH */
+ [case(VT_ARRAY)] wireSAFEARRAY parray; /* VT_ARRAY */
+
+ [case(VT_UI1|VT_BYREF)]
+ BYTE * pbVal; /* VT_BYREF|VT_UI1 */
+ [case(VT_I2|VT_BYREF)]
+ SHORT * piVal; /* VT_BYREF|VT_I2 */
+ [case(VT_I4|VT_BYREF)]
+ LONG * plVal; /* VT_BYREF|VT_I4 */
+ [case(VT_R4|VT_BYREF)]
+ FLOAT * pfltVal; /* VT_BYREF|VT_R4 */
+ [case(VT_R8|VT_BYREF)]
+ DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */
+ [case(VT_BOOL|VT_BYREF)]
+ VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */
+ [case(VT_ERROR|VT_BYREF)]
+ SCODE * pscode; /* VT_BYREF|VT_ERROR */
+ [case(VT_CY|VT_BYREF)]
+ CY * pcyVal; /* VT_BYREF|VT_CY */
+ [case(VT_DATE|VT_BYREF)]
+ DATE * pdate; /* VT_BYREF|VT_DATE */
+ [case(VT_BSTR|VT_BYREF)]
+ wireBSTR * pbstrVal; /* VT_BYREF|VT_BSTR */
+ [case(VT_UNKNOWN|VT_BYREF)]
+ IUnknown ** ppunkVal; /* VT_BYREF|VT_UNKNOWN */
+ [case(VT_DISPATCH|VT_BYREF)]
+ IDispatch ** ppdispVal; /* VT_BYREF|VT_DISPATCH */
+ [case(VT_ARRAY|VT_BYREF)]
+ wireSAFEARRAY *pparray; /* VT_BYREF|VT_ARRAY */
+ [case(VT_VARIANT|VT_BYREF)]
+ wireVARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */
+
+ [case(VT_I1)] CHAR cVal; /* VT_I1 */
+ [case(VT_UI2)] USHORT uiVal; /* VT_UI2 */
+ [case(VT_UI4)] ULONG ulVal; /* VT_UI4 */
+ [case(VT_INT)] INT intVal; /* VT_INT */
+ [case(VT_UINT)] UINT uintVal; /* VT_UINT */
+ [case(VT_DECIMAL)] DECIMAL decVal; /* VT_DECIMAL */
+
+ [case(VT_BYREF|VT_DECIMAL)]
+ DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */
+ [case(VT_BYREF|VT_I1)]
+ CHAR * pcVal; /* VT_BYREF|VT_I1 */
+ [case(VT_BYREF|VT_UI2)]
+ USHORT * puiVal; /* VT_BYREF|VT_UI2 */
+ [case(VT_BYREF|VT_UI4)]
+ ULONG * pulVal; /* VT_BYREF|VT_UI4 */
+ [case(VT_BYREF|VT_INT)]
+ INT * pintVal; /* VT_BYREF|VT_INT */
+ [case(VT_BYREF|VT_UINT)]
+ UINT * puintVal; /* VT_BYREF|VT_UINT */
+
+ [case(VT_EMPTY)] ; /* nothing */
+ [case(VT_NULL)] ; /* nothing */
+ };
+};
+
+cpp_quote("#endif /* _OLEAUT32_ */")
+
+//########################################################################
+// End of VARIANT & SAFEARRAY
+//########################################################################
+
+
+//TypeInfo stuff.
+
+typedef LONG DISPID;
+typedef DISPID MEMBERID;
+typedef DWORD HREFTYPE;
+
+typedef [v1_enum] enum tagTYPEKIND {
+ TKIND_ENUM = 0,
+ TKIND_RECORD,
+ TKIND_MODULE,
+ TKIND_INTERFACE,
+ TKIND_DISPATCH,
+ TKIND_COCLASS,
+ TKIND_ALIAS,
+ TKIND_UNION,
+ TKIND_MAX /* end of enum marker */
+} TYPEKIND;
+
+typedef struct tagTYPEDESC {
+ [switch_type(VARTYPE), switch_is(vt)] union {
+ [case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC * lptdesc;
+ [case(VT_CARRAY)] struct tagARRAYDESC * lpadesc;
+ [case(VT_USERDEFINED)] HREFTYPE hreftype;
+ [default] ;
+ };
+ VARTYPE vt;
+} TYPEDESC;
+
+typedef struct tagARRAYDESC {
+ TYPEDESC tdescElem; /* element type */
+ USHORT cDims; /* dimension count */
+ [size_is(cDims)] SAFEARRAYBOUND rgbounds[]; /* var len array of bounds */
+} ARRAYDESC;
+
+// parameter description
+
+typedef struct tagPARAMDESCEX {
+ ULONG cBytes; /* size of this structure */
+ VARIANTARG varDefaultValue; /* default value of this parameter */
+} PARAMDESCEX, * LPPARAMDESCEX;
+
+typedef struct tagPARAMDESC {
+ LPPARAMDESCEX pparamdescex; /* valid if PARAMFLAG_FHASDEFAULT bit is set */
+ USHORT wParamFlags; /* IN, OUT, etc */
+} PARAMDESC, * LPPARAMDESC;
+
+const USHORT PARAMFLAG_NONE = 0x00;
+const USHORT PARAMFLAG_FIN = 0x01;
+const USHORT PARAMFLAG_FOUT = 0x02;
+const USHORT PARAMFLAG_FLCID = 0x04;
+const USHORT PARAMFLAG_FRETVAL = 0x08;
+const USHORT PARAMFLAG_FOPT = 0x10;
+const USHORT PARAMFLAG_FHASDEFAULT = 0x20;
+
+typedef struct tagIDLDESC {
+ ULONG dwReserved;
+ USHORT wIDLFlags; /* IN, OUT, etc */
+} IDLDESC, * LPIDLDESC;
+
+const USHORT IDLFLAG_NONE = PARAMFLAG_NONE;
+const USHORT IDLFLAG_FIN = PARAMFLAG_FIN;
+const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT;
+const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID;
+const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
+
+cpp_quote("#if 0")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+typedef struct tagELEMDESC { /* a format that MIDL likes */
+ TYPEDESC tdesc; /* the type of the element */
+ PARAMDESC paramdesc; /* IDLDESC is a subset of PARAMDESC */
+} ELEMDESC;
+
+cpp_quote("#else /* 0 */")
+cpp_quote("typedef struct tagELEMDESC {")
+cpp_quote(" TYPEDESC tdesc; /* the type of the element */")
+cpp_quote(" union {")
+cpp_quote(" IDLDESC idldesc; /* info for remoting the element */")
+cpp_quote(" PARAMDESC paramdesc; /* info about the parameter */")
+cpp_quote(" };")
+cpp_quote("} ELEMDESC, * LPELEMDESC;")
+cpp_quote("#endif /* 0 */")
+
+typedef struct tagTYPEATTR {
+ GUID guid; /* the GUID of the TypeInfo */
+ LCID lcid; /* locale of member names and doc strings */
+ DWORD dwReserved;
+ MEMBERID memidConstructor; /* ID of constructor, MEMBERID_NIL if none */
+ MEMBERID memidDestructor; /* ID of destructor, MEMBERID_NIL if none */
+ LPOLESTR lpstrSchema;
+ ULONG cbSizeInstance; /* the size of an instance of this type */
+ TYPEKIND typekind; /* the kind of type this typeinfo describes */
+ WORD cFuncs; /* number of functions */
+ WORD cVars; /* number of variables / data members */
+ WORD cImplTypes; /* number of implemented interfaces */
+ WORD cbSizeVft; /* the size of this types virtual func table */
+ WORD cbAlignment; /* specifies the alignment requirements for
+ an instance of this type,
+ 0 = align on 64k boundary
+ 1 = byte align
+ 2 = word align
+ 4 = dword align... */
+ WORD wTypeFlags;
+ WORD wMajorVerNum; /* major version number */
+ WORD wMinorVerNum; /* minor version number */
+ TYPEDESC tdescAlias; /* if typekind == TKIND_ALIAS this field
+ specifies the type for which this type
+ is an alias */
+ IDLDESC idldescType; /* IDL attributes of the described type */
+} TYPEATTR, * LPTYPEATTR;
+
+typedef TYPEATTR ** PPTYPEATTR;
+
+typedef struct tagDISPPARAMS {
+ [size_is(cArgs)] VARIANTARG * rgvarg;
+ [size_is(cNamedArgs)] DISPID * rgdispidNamedArgs;
+ UINT cArgs;
+ UINT cNamedArgs;
+} DISPPARAMS;
+
+cpp_quote("#if 0")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+typedef struct tagEXCEPINFO {
+ WORD wCode; /* An error code describing the error. */
+ WORD wReserved;
+ BSTR bstrSource; /* A source of the exception */
+ BSTR bstrDescription; /* A description of the error */
+ BSTR bstrHelpFile; /* Fully qualified drive, path, and file name */
+ DWORD dwHelpContext; /* help context of topic within the help file */
+ ULONG pvReserved;
+ ULONG pfnDeferredFillIn;
+ SCODE scode;
+} EXCEPINFO;
+
+cpp_quote("#else /* 0 */")
+cpp_quote("typedef struct tagEXCEPINFO {")
+cpp_quote(" WORD wCode;")
+cpp_quote(" WORD wReserved;")
+cpp_quote(" BSTR bstrSource;")
+cpp_quote(" BSTR bstrDescription;")
+cpp_quote(" BSTR bstrHelpFile;")
+cpp_quote(" DWORD dwHelpContext;")
+cpp_quote(" PVOID pvReserved;")
+cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
+cpp_quote(" SCODE scode;")
+cpp_quote("} EXCEPINFO, * LPEXCEPINFO;")
+cpp_quote("#endif /* 0 */")
+
+typedef [v1_enum] enum tagCALLCONV {
+ CC_CDECL = 1,
+ CC_MSCPASCAL,
+ CC_PASCAL = CC_MSCPASCAL,
+ CC_MACPASCAL,
+ CC_STDCALL,
+ CC_RESERVED,
+ CC_SYSCALL,
+ CC_MPWCDECL,
+ CC_MPWPASCAL,
+ CC_MAX /* end of enum marker */
+} CALLCONV;
+
+typedef [v1_enum] enum tagFUNCKIND {
+ FUNC_VIRTUAL,
+ FUNC_PUREVIRTUAL,
+ FUNC_NONVIRTUAL,
+ FUNC_STATIC,
+ FUNC_DISPATCH
+} FUNCKIND;
+
+typedef [v1_enum] enum tagINVOKEKIND {
+ INVOKE_FUNC = 1,
+ INVOKE_PROPERTYGET = 2,
+ INVOKE_PROPERTYPUT = 4,
+ INVOKE_PROPERTYPUTREF = 8
+} INVOKEKIND;
+
+typedef struct tagFUNCDESC {
+ MEMBERID memid;
+ [size_is(cScodes)] SCODE * lprgscode;
+ [size_is(cParams)] ELEMDESC * lprgelemdescParam; /* array of param types */
+ FUNCKIND funckind;
+ INVOKEKIND invkind;
+ CALLCONV callconv;
+ SHORT cParams;
+ SHORT cParamsOpt;
+ SHORT oVft;
+ SHORT cScodes;
+ ELEMDESC elemdescFunc;
+ WORD wFuncFlags;
+} FUNCDESC, * LPFUNCDESC;
+
+typedef FUNCDESC ** PPFUNCDESC;
+
+typedef [v1_enum] enum tagVARKIND {
+ VAR_PERINSTANCE,
+ VAR_STATIC,
+ VAR_CONST,
+ VAR_DISPATCH
+} VARKIND;
+
+/* IMPLTYPE Flags */
+const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
+const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
+const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
+const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8;
+
+typedef struct tagVARDESC {
+ MEMBERID memid;
+ LPOLESTR lpstrSchema;
+ [switch_type(VARKIND), switch_is(varkind)] union {
+ /* offset of variable within the instance */
+ [case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
+ [case(VAR_CONST)] VARIANT * lpvarValue; /* the value of the constant */
+ };
+ ELEMDESC elemdescVar;
+ WORD wVarFlags;
+ VARKIND varkind;
+} VARDESC, * LPVARDESC;
+
+typedef VARDESC ** PPVARDESC;
+
+typedef enum tagTYPEFLAGS {
+ TYPEFLAG_FAPPOBJECT = 0x01,
+ TYPEFLAG_FCANCREATE = 0x02,
+ TYPEFLAG_FLICENSED = 0x04,
+ TYPEFLAG_FPREDECLID = 0x08,
+ TYPEFLAG_FHIDDEN = 0x10,
+ TYPEFLAG_FCONTROL = 0x20,
+ TYPEFLAG_FDUAL = 0x40,
+ TYPEFLAG_FNONEXTENSIBLE = 0x80,
+ TYPEFLAG_FOLEAUTOMATION = 0x100,
+ TYPEFLAG_FRESTRICTED = 0x200,
+ TYPEFLAG_FAGGREGATABLE = 0x400,
+ TYPEFLAG_FREPLACEABLE = 0x800,
+ TYPEFLAG_FDISPATCHABLE = 0x1000,
+ TYPEFLAG_FREVERSEBIND = 0x2000
+} TYPEFLAGS;
+
+typedef enum tagFUNCFLAGS {
+ FUNCFLAG_FRESTRICTED = 0x1,
+ FUNCFLAG_FSOURCE = 0x2,
+ FUNCFLAG_FBINDABLE = 0x4,
+ FUNCFLAG_FREQUESTEDIT = 0x8,
+ FUNCFLAG_FDISPLAYBIND = 0x10,
+ FUNCFLAG_FDEFAULTBIND = 0x20,
+ FUNCFLAG_FHIDDEN = 0x40,
+ FUNCFLAG_FUSESGETLASTERROR = 0x80,
+ FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
+ FUNCFLAG_FUIDEFAULT = 0x200,
+ FUNCFLAG_FNONBROWSABLE = 0x400,
+ FUNCFLAG_FREPLACEABLE = 0x800,
+ FUNCFLAG_FIMMEDIATEBIND = 0x1000
+} FUNCFLAGS;
+
+typedef enum tagVARFLAGS {
+ VARFLAG_FREADONLY = 0x1,
+ VARFLAG_FSOURCE = 0x2,
+ VARFLAG_FBINDABLE = 0x4,
+ VARFLAG_FREQUESTEDIT = 0x8,
+ VARFLAG_FDISPLAYBIND = 0x10,
+ VARFLAG_FDEFAULTBIND = 0x20,
+ VARFLAG_FHIDDEN = 0x40,
+ VARFLAG_FRESTRICTED = 0x80,
+ VARFLAG_FDEFAULTCOLLELEM = 0x100,
+ VARFLAG_FUIDEFAULT = 0x200,
+ VARFLAG_FNONBROWSABLE = 0x400,
+ VARFLAG_FREPLACEABLE = 0x800,
+ VARFLAG_FIMMEDIATEBIND = 0x1000
+} VARFLAGS;
+
+typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
+ IUnknown * pInterface; /* interface that is responsible for storage */
+ PVOID pStorage; /* the storage being managed by interface */
+ DWORD flags; /* which interface, what storage */
+} CLEANLOCALSTORAGE;
+
+typedef struct tagCUSTDATAITEM {
+ GUID guid; /* guid identifying this custom data item */
+ VARIANTARG varValue; /* value of this custom data item */
+} CUSTDATAITEM, * LPCUSTDATAITEM;
+
+typedef struct tagCUSTDATA {
+ DWORD cCustData; /* number of custom data items in rgCustData */
+ [size_is(cCustData)] LPCUSTDATAITEM prgCustData;
+ /* array of custom data items */
+} CUSTDATA, * LPCUSTDATA;
+
+}
+
+
+[
+ object,
+ uuid(00020405-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeInfo: IUnknown
+{
+ typedef [unique] ICreateTypeInfo * LPCREATETYPEINFO;
+
+ HRESULT SetGuid(
+ [in] REFGUID guid
+ );
+
+ HRESULT SetTypeFlags(
+ [in] UINT uTypeFlags
+ );
+
+ HRESULT SetDocString(
+ [in] LPOLESTR pStrDoc
+ );
+
+ HRESULT SetHelpContext(
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetVersion(
+ [in] WORD wMajorVerNum,
+ [in] WORD wMinorVerNum
+ );
+
+ HRESULT AddRefTypeInfo(
+
+ [in] ITypeInfo * pTInfo,
+ [in] HREFTYPE * phRefType
+ );
+
+ HRESULT AddFuncDesc(
+ [in] UINT index,
+ [in] FUNCDESC * pFuncDesc
+ );
+
+ HRESULT AddImplType(
+ [in] UINT index,
+ [in] HREFTYPE hRefType
+ );
+
+ HRESULT SetImplTypeFlags(
+ [in] UINT index,
+ [in] INT implTypeFlags
+ );
+
+ HRESULT SetAlignment(
+ [in] WORD cbAlignment
+ );
+
+ HRESULT SetSchema(
+ [in] LPOLESTR pStrSchema
+ );
+
+ HRESULT AddVarDesc(
+ [in] UINT index,
+ [in] VARDESC * pVarDesc
+ );
+
+ HRESULT SetFuncAndParamNames(
+ [in] UINT index,
+ [in, size_is((UINT) cNames)]
+ [in] LPOLESTR * rgszNames,
+ [in] UINT cNames
+ );
+
+ HRESULT SetVarName(
+ [in] UINT index,
+ [in] LPOLESTR szName
+ );
+
+ HRESULT SetTypeDescAlias(
+ [in] TYPEDESC * pTDescAlias
+ );
+
+ HRESULT DefineFuncAsDllEntry(
+ [in] UINT index,
+ [in] LPOLESTR szDllName,
+ [in] LPOLESTR szProcName
+ );
+
+ HRESULT SetFuncDocString(
+ [in] UINT index,
+ [in] LPOLESTR szDocString
+ );
+
+ HRESULT SetVarDocString(
+ [in] UINT index,
+ [in] LPOLESTR szDocString
+ );
+
+ HRESULT SetFuncHelpContext(
+ [in] UINT index,
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetVarHelpContext(
+ [in] UINT index,
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetMops(
+ [in] UINT index,
+ [in] BSTR bstrMops
+ );
+
+ HRESULT SetTypeIdldesc(
+ [in] IDLDESC * pIdlDesc
+ );
+
+ HRESULT LayOut(
+ void
+ );
+
+}
+
+
+[
+ object,
+ uuid(0002040E-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeInfo2: ICreateTypeInfo
+{
+ typedef [unique] ICreateTypeInfo2 * LPCREATETYPEINFO2;
+
+ HRESULT DeleteFuncDesc(
+ [in] UINT index
+ );
+
+ HRESULT DeleteFuncDescByMemId(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind
+ );
+
+ HRESULT DeleteVarDesc(
+ [in] UINT index
+ );
+
+ HRESULT DeleteVarDescByMemId(
+ [in] MEMBERID memid
+ );
+
+ HRESULT DeleteImplType(
+ [in] UINT index
+ );
+
+ HRESULT SetCustData(
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetFuncCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetParamCustData(
+ [in] UINT indexFunc,
+ [in] UINT indexParam,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetVarCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetImplTypeCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetHelpStringContext(
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT SetFuncHelpStringContext(
+ [in] UINT index,
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT SetVarHelpStringContext(
+ [in] UINT index,
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT Invalidate(
+ void
+ );
+
+ HRESULT SetName(
+ [in] LPOLESTR szName
+ );
+
+}
+
+
+[
+ object,
+ uuid(00020406-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeLib : IUnknown
+{
+ typedef [unique] ICreateTypeLib * LPCREATETYPELIB;
+
+ HRESULT CreateTypeInfo(
+ [in] LPOLESTR szName,
+ [in] TYPEKIND tkind,
+ [out] ICreateTypeInfo ** ppCTInfo
+ );
+
+ HRESULT SetName(
+ [in] LPOLESTR szName
+ );
+
+ HRESULT SetVersion(
+ [in] WORD wMajorVerNum,
+ [in] WORD wMinorVerNum
+ );
+
+ HRESULT SetGuid(
+ [in] REFGUID guid
+ );
+
+ HRESULT SetDocString(
+ [in] LPOLESTR szDoc
+ );
+
+ HRESULT SetHelpFileName(
+ [in] LPOLESTR szHelpFileName
+ );
+
+ HRESULT SetHelpContext(
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetLcid(
+ [in] LCID lcid
+ );
+
+ HRESULT SetLibFlags(
+ [in] UINT uLibFlags
+ );
+
+ HRESULT SaveAllChanges(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(0002040F-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeLib2 : ICreateTypeLib
+{
+ typedef [unique] ICreateTypeLib2 * LPCREATETYPELIB2;
+
+ HRESULT DeleteTypeInfo(
+ [in] LPOLESTR szName
+ );
+
+ HRESULT SetCustData(
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetHelpStringContext(
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT SetHelpStringDll(
+ [in] LPOLESTR szFileName
+ );
+}
+
+
+[
+ object,
+ uuid(00020400-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IDispatch : IUnknown
+{
+ typedef [unique] IDispatch * LPDISPATCH;
+
+ HRESULT GetTypeInfoCount(
+ [out] UINT * pctinfo
+ );
+
+ HRESULT GetTypeInfo(
+ [in] UINT iTInfo,
+ [in] LCID lcid,
+ [out] ITypeInfo ** ppTInfo
+ );
+
+ HRESULT GetIDsOfNames(
+ [in] REFIID riid,
+ [in, size_is(cNames)] LPOLESTR * rgszNames,
+ [in] UINT cNames,
+ [in] LCID lcid,
+ [out, size_is(cNames)] DISPID * rgDispId
+ );
+
+ [local]
+ HRESULT Invoke(
+ [in] DISPID dispIdMember,
+ [in] REFIID riid,
+ [in] LCID lcid,
+ [in] WORD wFlags,
+ [in, out] DISPPARAMS * pDispParams,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * puArgErr
+ );
+
+ [call_as(Invoke)]
+ HRESULT RemoteInvoke(
+ [in] DISPID dispIdMember,
+ [in] REFIID riid,
+ [in] LCID lcid,
+ [in] DWORD dwFlags,
+ [in] DISPPARAMS * pDispParams,
+ [out, size_is(cVtRef)] VARIANTARG * rgVtRef,
+ [in] UINT cVtRef,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * pArgErr
+ );
+
+cpp_quote("/* DISPID reserved to indicate an \"unknown\" name */")
+cpp_quote("/* only reserved for data members (properties); reused as a method dispid below */")
+const DISPID DISPID_UNKNOWN = -1;
+
+cpp_quote("/* DISPID reserved for the \"value\" property */")
+const DISPID DISPID_VALUE = 0;
+
+cpp_quote("/* The following DISPID is reserved to indicate the param")
+cpp_quote(" * that is the right-hand-side (or \"put\" value) of a PropertyPut")
+cpp_quote(" */")
+const DISPID DISPID_PROPERTYPUT = -3;
+
+cpp_quote("/* DISPID reserved for the standard \"NewEnum\" method */")
+const DISPID DISPID_NEWENUM = -4;
+
+cpp_quote("/* DISPID reserved for the standard \"Evaluate\" method */")
+const DISPID DISPID_EVALUATE = -5;
+
+const DISPID DISPID_CONSTRUCTOR = -6;
+
+const DISPID DISPID_DESTRUCTOR = -7;
+
+const DISPID DISPID_COLLECT = -8;
+
+cpp_quote("/* The range -500 through -999 is reserved for Controls */")
+cpp_quote("/* The range 0x80010000 through 0x8001FFFF is reserved for Controls */")
+cpp_quote("/* The range -5000 through -5499 is reserved for ActiveX Accessability */")
+cpp_quote("/* The remainder of the negative DISPIDs are reserved for future use */")
+
+}
+
+
+[
+ object,
+ uuid(00020404-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumVARIANT : IUnknown
+{
+ typedef [unique] IEnumVARIANT* LPENUMVARIANT;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
+ [out] ULONG * pCeltFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
+ [out] ULONG * pCeltFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG celt
+ );
+
+ HRESULT Reset(
+ );
+
+ HRESULT Clone(
+ [out] IEnumVARIANT ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(00020403-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeComp : IUnknown
+{
+ typedef [unique] ITypeComp * LPTYPECOMP;
+
+ typedef [v1_enum] enum tagDESCKIND {
+ DESCKIND_NONE = 0,
+ DESCKIND_FUNCDESC,
+ DESCKIND_VARDESC,
+ DESCKIND_TYPECOMP,
+ DESCKIND_IMPLICITAPPOBJ,
+ DESCKIND_MAX
+ } DESCKIND;
+
+ typedef union tagBINDPTR {
+ FUNCDESC * lpfuncdesc;
+ VARDESC * lpvardesc;
+ ITypeComp * lptcomp;
+ } BINDPTR, * LPBINDPTR;
+
+ [local]
+ HRESULT Bind(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [in] WORD wFlags,
+ [out] ITypeInfo ** ppTInfo,
+ [out] DESCKIND * pDescKind,
+ [out] BINDPTR * pBindPtr
+ );
+
+ [call_as(Bind)]
+ HRESULT RemoteBind(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [in] WORD wFlags,
+ [out] ITypeInfo ** ppTInfo,
+ [out] DESCKIND * pDescKind,
+ [out] PPFUNCDESC ppFuncDesc,
+ [out] PPVARDESC ppVarDesc,
+ [out] ITypeComp ** ppTypeComp,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ [local]
+ HRESULT BindType(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [out] ITypeInfo ** ppTInfo,
+ [out] ITypeComp ** ppTComp
+ );
+
+ [call_as(BindType)]
+ HRESULT RemoteBindType(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [out] ITypeInfo ** ppTInfo
+ );
+}
+
+
+[
+ object,
+ uuid(00020401-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeInfo : IUnknown
+{
+ typedef [unique] ITypeInfo * LPTYPEINFO;
+
+ [local]
+ HRESULT GetTypeAttr(
+ [out] TYPEATTR ** ppTypeAttr
+ );
+
+ [call_as(GetTypeAttr)]
+ HRESULT RemoteGetTypeAttr(
+ [out] PPTYPEATTR ppTypeAttr,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ HRESULT GetTypeComp(
+ [out] ITypeComp ** ppTComp
+ );
+
+ [local]
+ HRESULT GetFuncDesc(
+ [in] UINT index,
+ [out] FUNCDESC ** ppFuncDesc
+ );
+
+ [call_as(GetFuncDesc)]
+ HRESULT RemoteGetFuncDesc(
+ [in] UINT index,
+ [out] PPFUNCDESC ppFuncDesc,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ [local]
+ HRESULT GetVarDesc(
+ [in] UINT index,
+ [out] VARDESC ** ppVarDesc
+ );
+
+ [call_as(GetVarDesc)]
+ HRESULT RemoteGetVarDesc(
+ [in] UINT index,
+ [out] PPVARDESC ppVarDesc,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ HRESULT GetNames(
+ [in] MEMBERID memid,
+ [out,size_is(cMaxNames),length_is(*pcNames)] BSTR * rgBstrNames,
+ [in] UINT cMaxNames,
+ [out] UINT * pcNames
+ );
+
+ HRESULT GetRefTypeOfImplType(
+ [in] UINT index,
+ [out] HREFTYPE * pRefType
+ );
+
+ HRESULT GetImplTypeFlags(
+ [in] UINT index,
+ [out] INT * pImplTypeFlags
+ );
+
+ HRESULT GetIDsOfNames(
+ [in, size_is(cNames)] LPOLESTR * rgszNames,
+ [in] UINT cNames,
+ [out, size_is(cNames)] MEMBERID * pMemId
+ );
+
+ [local]
+ HRESULT Invoke(
+ [in] PVOID pvInstance,
+ [in] MEMBERID memid,
+ [in] WORD wFlags,
+ [in, out] DISPPARAMS * pDispParams,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * puArgErr
+ );
+
+ [call_as(Invoke)]
+ HRESULT RemoteInvoke (
+ [in] IUnknown * pIUnk,
+ [in] MEMBERID memid,
+ [in] DWORD dwFlags,
+ [in] DISPPARAMS * pDispParams,
+ [out, size_is(cVtRef)] VARIANTARG * rgVtRef,
+ [in] UINT cVtRef,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * pArgErr
+ );
+
+ [local]
+ HRESULT GetDocumentation(
+ [in] MEMBERID memid,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [call_as(GetDocumentation)]
+ HRESULT RemoteGetDocumentation(
+ [in] MEMBERID memid,
+ [in] DWORD refPtrFlags,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [local]
+ HRESULT GetDllEntry(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [out] BSTR * pBstrDllName,
+ [out] BSTR * pBstrName,
+ [out] WORD * pwOrdinal
+ );
+
+ [call_as(GetDllEntry)]
+ HRESULT RemoteGetDllEntry(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [in] DWORD refPtrFlags,
+ [out] BSTR * pBstrDllName,
+ [out] BSTR * pBstrName,
+ [out] WORD * pwOrdinal
+ );
+
+ HRESULT GetRefTypeInfo(
+ [in] HREFTYPE hRefType,
+ [out] ITypeInfo ** ppTInfo
+ );
+
+ [local]
+ HRESULT AddressOfMember(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [out] PVOID * ppv
+ );
+
+ [call_as(AddressOfMember)]
+ HRESULT LocalAddressOfMember(
+ void
+ );
+
+ [local]
+ HRESULT CreateInstance(
+ [in] IUnknown * pUnkOuter,
+ [in] REFIID riid,
+ [out, iid_is(riid)] PVOID * ppvObj
+ );
+
+ [call_as(CreateInstance)]
+ HRESULT RemoteCreateInstance(
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown ** ppvObj
+ );
+
+ HRESULT GetMops(
+ [in] MEMBERID memid,
+ [out] BSTR * pBstrMops
+ );
+
+ HRESULT GetContainingTypeLib(
+ [out] ITypeLib ** ppTLib,
+ [out] UINT * pIndex
+ );
+
+ [local]
+ void ReleaseTypeAttr(
+ [in] TYPEATTR * pTypeAttr
+ );
+
+ [call_as(ReleaseTypeAttr)]
+ HRESULT LocalReleaseTypeAttr(
+ void
+ );
+
+ [local]
+ void ReleaseFuncDesc(
+ [in] FUNCDESC * pFuncDesc
+ );
+
+ [call_as(ReleaseFuncDesc)]
+ HRESULT LocalReleaseFuncDesc(
+ void
+ );
+
+ [local]
+ void ReleaseVarDesc(
+ [in] VARDESC * pVarDesc
+ );
+
+ [call_as(ReleaseVarDesc)]
+ HRESULT LocalReleaseVarDesc(
+ void
+ );
+}
+
+
+
+[
+ object,
+ uuid(00020412-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeInfo2 : ITypeInfo
+{
+ typedef [unique] ITypeInfo2 * LPTYPEINFO2;
+
+ HRESULT GetTypeKind(
+ [out] TYPEKIND * pTypeKind
+ );
+
+ HRESULT GetTypeFlags(
+ [out] ULONG * pTypeFlags
+ );
+
+ HRESULT GetFuncIndexOfMemId(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [out] UINT * pFuncIndex
+ );
+
+ HRESULT GetVarIndexOfMemId(
+ [in] MEMBERID memid,
+ [out] UINT * pVarIndex
+ );
+
+ HRESULT GetCustData(
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetFuncCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetParamCustData(
+ [in] UINT indexFunc,
+ [in] UINT indexParam,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetVarCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetImplTypeCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ [local]
+ HRESULT GetDocumentation2(
+ [in] MEMBERID memid,
+ [in] LCID lcid,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+ [call_as(GetDocumentation2)]
+ HRESULT RemoteGetDocumentation2(
+ [in] MEMBERID memid,
+ [in] LCID lcid,
+ [in] DWORD refPtrFlags,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+ HRESULT GetAllCustData(
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllFuncCustData(
+ [in] UINT index,
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllParamCustData(
+ [in] UINT indexFunc,
+ [in] UINT indexParam,
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllVarCustData(
+ [in] UINT index,
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllImplTypeCustData(
+ [in] UINT index,
+ [out] CUSTDATA * pCustData
+ );
+}
+
+
+[
+ object,
+ uuid(00020402-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeLib : IUnknown
+{
+ typedef [v1_enum] enum tagSYSKIND {
+ SYS_WIN16 = 0,
+ SYS_WIN32,
+ SYS_MAC
+ } SYSKIND;
+
+ typedef [v1_enum] enum tagLIBFLAGS {
+ LIBFLAG_FRESTRICTED = 0x01,
+ LIBFLAG_FCONTROL = 0x02,
+ LIBFLAG_FHIDDEN = 0x04,
+ LIBFLAG_FHASDISKIMAGE = 0x08
+ } LIBFLAGS;
+
+ typedef [unique] ITypeLib * LPTYPELIB;
+
+ typedef struct tagTLIBATTR {
+ GUID guid;
+ LCID lcid;
+ SYSKIND syskind;
+ WORD wMajorVerNum;
+ WORD wMinorVerNum;
+ WORD wLibFlags;
+ } TLIBATTR, * LPTLIBATTR;
+
+ typedef TLIBATTR ** PPTLIBATTR;
+
+ [local]
+ UINT GetTypeInfoCount(
+ void
+ );
+
+ [call_as(GetTypeInfoCount)]
+ HRESULT RemoteGetTypeInfoCount(
+ [out] UINT * pcTInfo
+ );
+
+ HRESULT GetTypeInfo(
+ [in] UINT index,
+ [out] ITypeInfo ** ppTInfo
+ );
+
+ HRESULT GetTypeInfoType(
+ [in] UINT index,
+ [out] TYPEKIND * pTKind
+ );
+
+ HRESULT GetTypeInfoOfGuid(
+ [in] REFGUID guid,
+ [out] ITypeInfo ** ppTinfo
+ );
+
+ [local]
+ HRESULT GetLibAttr(
+ [out] TLIBATTR ** ppTLibAttr
+ );
+
+ [call_as(GetLibAttr)]
+ HRESULT RemoteGetLibAttr(
+ [out] PPTLIBATTR ppTLibAttr,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ HRESULT GetTypeComp(
+ [out] ITypeComp ** ppTComp
+ );
+
+ [local]
+ HRESULT GetDocumentation(
+ [in] INT index,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [call_as(GetDocumentation)]
+ HRESULT RemoteGetDocumentation(
+ [in] INT index,
+ [in] DWORD refPtrFlags,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [local]
+ HRESULT IsName(
+ [in, out] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out] BOOL * pfName
+ );
+
+ [call_as(IsName)]
+ HRESULT RemoteIsName(
+ [in] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out] BOOL * pfName,
+ [out] BSTR * pBstrLibName
+ );
+
+ [local]
+ HRESULT FindName(
+ [in, out] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out,size_is(*pcFound),length_is(*pcFound)] ITypeInfo **ppTInfo,
+ [out,size_is(*pcFound),length_is(*pcFound)] MEMBERID * rgMemId,
+ [in, out] USHORT * pcFound
+ );
+
+ [call_as(FindName)]
+ HRESULT RemoteFindName(
+ [in] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out,size_is(*pcFound),length_is(*pcFound)] ITypeInfo **ppTInfo,
+ [out,size_is(*pcFound),length_is(*pcFound)] MEMBERID * rgMemId,
+ [in, out] USHORT * pcFound,
+ [out] BSTR * pBstrLibName
+ );
+
+ [local]
+ void ReleaseTLibAttr(
+ [in] TLIBATTR * pTLibAttr
+ );
+
+ [call_as(ReleaseTLibAttr)]
+ HRESULT LocalReleaseTLibAttr(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(00020411-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeLib2 : ITypeLib
+{
+ typedef [unique] ITypeLib2 * LPTYPELIB2;
+
+ HRESULT GetCustData(
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ [local]
+ HRESULT GetLibStatistics(
+ [out] ULONG * pcUniqueNames,
+ [out] ULONG * pcchUniqueNames
+ );
+
+ [call_as(GetLibStatistics)]
+ HRESULT RemoteGetLibStatistics(
+ [out] ULONG * pcUniqueNames,
+ [out] ULONG * pcchUniqueNames
+ );
+
+ [local]
+ HRESULT GetDocumentation2(
+ [in] INT index,
+ [in] LCID lcid,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+ [call_as(GetDocumentation2)]
+ HRESULT RemoteGetDocumentation2(
+ [in] INT index,
+ [in] LCID lcid,
+ [in] DWORD refPtrFlags,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+
+ HRESULT GetAllCustData(
+ [out] CUSTDATA * pCustData
+ );
+}
+
+
+[
+ object,
+ uuid(00020410-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ITypeChangeEvents: IUnknown
+{
+ typedef [unique] ITypeChangeEvents * LPTYPECHANGEEVENTS;
+
+ // notification messages used by the dynamic typeinfo protocol.
+ typedef enum tagCHANGEKIND {
+ CHANGEKIND_ADDMEMBER,
+ CHANGEKIND_DELETEMEMBER,
+ CHANGEKIND_SETNAMES,
+ CHANGEKIND_SETDOCUMENTATION,
+ CHANGEKIND_GENERAL,
+ CHANGEKIND_INVALIDATE,
+ CHANGEKIND_CHANGEFAILED,
+ CHANGEKIND_MAX
+ } CHANGEKIND;
+
+ HRESULT RequestTypeChange(
+ [in] CHANGEKIND changeKind,
+ [in] ITypeInfo * pTInfoBefore,
+ [in] LPOLESTR pStrName,
+ [out] INT * pfCancel
+ );
+
+ HRESULT AfterTypeChange(
+ [in] CHANGEKIND changeKind,
+ [in] ITypeInfo * pTInfoAfter,
+ [in] LPOLESTR pStrName
+ );
+}
+
+
+[
+ object,
+ uuid(1CF2B120-547D-101B-8E65-08002B2BD119),
+ pointer_default(unique),
+ local
+]
+
+interface IErrorInfo: IUnknown
+{
+ typedef [unique] IErrorInfo * LPERRORINFO;
+
+ HRESULT GetGUID(
+ [out] GUID * pGUID
+ );
+
+ HRESULT GetSource(
+ [out] BSTR * pBstrSource
+ );
+
+ HRESULT GetDescription(
+ [out] BSTR * pBstrDescription
+ );
+
+ HRESULT GetHelpFile(
+ [out] BSTR * pBstrHelpFile
+ );
+
+ HRESULT GetHelpContext(
+ [out] DWORD * pdwHelpContext
+ );
+}
+
+
+[
+ object,
+ uuid(22F03340-547D-101B-8E65-08002B2BD119),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateErrorInfo: IUnknown
+{
+ typedef [unique] ICreateErrorInfo * LPCREATEERRORINFO;
+
+ HRESULT SetGUID(
+ [in] REFGUID rguid
+ );
+
+ HRESULT SetSource(
+ [in] LPOLESTR szSource
+ );
+
+ HRESULT SetDescription(
+ [in] LPOLESTR szDescription
+ );
+
+ HRESULT SetHelpFile(
+ [in] LPOLESTR szHelpFile
+ );
+
+ HRESULT SetHelpContext(
+ [in] DWORD dwHelpContext
+ );
+}
+
+
+[
+ object,
+ uuid(DF0B3D60-548F-101B-8E65-08002B2BD119),
+ pointer_default(unique)
+]
+
+interface ISupportErrorInfo: IUnknown
+{
+ typedef [unique] ISupportErrorInfo * LPSUPPORTERRORINFO;
+
+ HRESULT InterfaceSupportsErrorInfo(
+ [in] REFIID riid
+ );
+}
+
diff --git a/public/sdk/inc/objbase.h b/public/sdk/inc/objbase.h
new file mode 100644
index 000000000..cd70ed2b8
--- /dev/null
+++ b/public/sdk/inc/objbase.h
@@ -0,0 +1,863 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: objbase.h
+//
+// Contents: Component object model defintions.
+//
+//----------------------------------------------------------------------------
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#if !defined( _OBJBASE_H_ )
+#define _OBJBASE_H_
+
+#include <pshpack8.h>
+
+#ifdef _MAC
+#ifndef _WLM_NOFORCE_LIBS
+
+#ifdef _WLMDLL
+ #ifdef _DEBUG
+ #pragma comment(lib, "oledlgd.lib")
+ #pragma comment(lib, "msvcoled.lib")
+ #else
+ #pragma comment(lib, "oledlg.lib")
+ #pragma comment(lib, "msvcole.lib")
+ #endif
+#else
+ #ifdef _DEBUG
+ #pragma comment(lib, "wlmoled.lib")
+ #pragma comment(lib, "ole2uid.lib")
+ #else
+ #pragma comment(lib, "wlmole.lib")
+ #pragma comment(lib, "ole2ui.lib")
+ #endif
+ #pragma data_seg(".drectve")
+ static char _gszWlmOLEUIResourceDirective[] = "/macres:ole2ui.rsc";
+ #pragma data_seg()
+#endif
+
+#pragma comment(lib, "uuid.lib")
+
+#ifdef _DEBUG
+ #pragma comment(lib, "ole2d.lib")
+ #pragma comment(lib, "ole2autd.lib")
+#else
+ #pragma comment(lib, "ole2.lib")
+ #pragma comment(lib, "ole2auto.lib")
+#endif
+
+#endif // !_WLM_NOFORCE_LIBS
+#endif // _MAC
+
+// Component Object Model defines, and macros
+
+#ifdef __cplusplus
+ #define EXTERN_C extern "C"
+#else
+ #define EXTERN_C extern
+#endif
+
+#if defined(_WIN32) || defined(_MPPC_)
+
+// Win32 doesn't support __export
+
+#ifdef _68K_
+#define STDMETHODCALLTYPE __cdecl
+#else
+#define STDMETHODCALLTYPE __stdcall
+#endif
+#define STDMETHODVCALLTYPE __cdecl
+
+#define STDAPICALLTYPE __stdcall
+#define STDAPIVCALLTYPE __cdecl
+
+#else
+
+#define STDMETHODCALLTYPE __export __stdcall
+#define STDMETHODVCALLTYPE __export __cdecl
+
+#define STDAPICALLTYPE __export __stdcall
+#define STDAPIVCALLTYPE __export __cdecl
+
+#endif
+
+
+#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
+#define STDAPI_(type) EXTERN_C type STDAPICALLTYPE
+
+#define STDMETHODIMP HRESULT STDMETHODCALLTYPE
+#define STDMETHODIMP_(type) type STDMETHODCALLTYPE
+
+// The 'V' versions allow Variable Argument lists.
+
+#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
+#define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE
+
+#define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE
+#define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE
+
+#ifdef _OLE32_
+#define WINOLEAPI STDAPI
+#define WINOLEAPI_(type) STDAPI_(type)
+#else
+
+#ifdef _68K_
+#ifndef REQUIRESAPPLEPASCAL
+#define WINOLEAPI EXTERN_C DECLSPEC_IMPORT HRESULT PASCAL
+#define WINOLEAPI_(type) EXTERN_C DECLSPEC_IMPORT type PASCAL
+#else
+#define WINOLEAPI EXTERN_C DECLSPEC_IMPORT PASCAL HRESULT
+#define WINOLEAPI_(type) EXTERN_C DECLSPEC_IMPORT PASCAL type
+#endif
+#else
+#define WINOLEAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
+#define WINOLEAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
+#endif
+
+#endif
+
+/****** Interface Declaration ***********************************************/
+
+/*
+ * These are macros for declaring interfaces. They exist so that
+ * a single definition of the interface is simulataneously a proper
+ * declaration of the interface structures (C++ abstract classes)
+ * for both C and C++.
+ *
+ * DECLARE_INTERFACE(iface) is used to declare an interface that does
+ * not derive from a base interface.
+ * DECLARE_INTERFACE_(iface, baseiface) is used to declare an interface
+ * that does derive from a base interface.
+ *
+ * By default if the source file has a .c extension the C version of
+ * the interface declaratations will be expanded; if it has a .cpp
+ * extension the C++ version will be expanded. if you want to force
+ * the C version expansion even though the source file has a .cpp
+ * extension, then define the macro "CINTERFACE".
+ * eg. cl -DCINTERFACE file.cpp
+ *
+ * Example Interface declaration:
+ *
+ * #undef INTERFACE
+ * #define INTERFACE IClassFactory
+ *
+ * DECLARE_INTERFACE_(IClassFactory, IUnknown)
+ * {
+ * // *** IUnknown methods ***
+ * STDMETHOD(QueryInterface) (THIS_
+ * REFIID riid,
+ * LPVOID FAR* ppvObj) PURE;
+ * STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ * STDMETHOD_(ULONG,Release) (THIS) PURE;
+ *
+ * // *** IClassFactory methods ***
+ * STDMETHOD(CreateInstance) (THIS_
+ * LPUNKNOWN pUnkOuter,
+ * REFIID riid,
+ * LPVOID FAR* ppvObject) PURE;
+ * };
+ *
+ * Example C++ expansion:
+ *
+ * struct FAR IClassFactory : public IUnknown
+ * {
+ * virtual HRESULT STDMETHODCALLTYPE QueryInterface(
+ * IID FAR& riid,
+ * LPVOID FAR* ppvObj) = 0;
+ * virtual HRESULT STDMETHODCALLTYPE AddRef(void) = 0;
+ * virtual HRESULT STDMETHODCALLTYPE Release(void) = 0;
+ * virtual HRESULT STDMETHODCALLTYPE CreateInstance(
+ * LPUNKNOWN pUnkOuter,
+ * IID FAR& riid,
+ * LPVOID FAR* ppvObject) = 0;
+ * };
+ *
+ * NOTE: Our documentation says '#define interface class' but we use
+ * 'struct' instead of 'class' to keep a lot of 'public:' lines
+ * out of the interfaces. The 'FAR' forces the 'this' pointers to
+ * be far, which is what we need.
+ *
+ * Example C expansion:
+ *
+ * typedef struct IClassFactory
+ * {
+ * const struct IClassFactoryVtbl FAR* lpVtbl;
+ * } IClassFactory;
+ *
+ * typedef struct IClassFactoryVtbl IClassFactoryVtbl;
+ *
+ * struct IClassFactoryVtbl
+ * {
+ * HRESULT (STDMETHODCALLTYPE * QueryInterface) (
+ * IClassFactory FAR* This,
+ * IID FAR* riid,
+ * LPVOID FAR* ppvObj) ;
+ * HRESULT (STDMETHODCALLTYPE * AddRef) (IClassFactory FAR* This) ;
+ * HRESULT (STDMETHODCALLTYPE * Release) (IClassFactory FAR* This) ;
+ * HRESULT (STDMETHODCALLTYPE * CreateInstance) (
+ * IClassFactory FAR* This,
+ * LPUNKNOWN pUnkOuter,
+ * IID FAR* riid,
+ * LPVOID FAR* ppvObject);
+ * HRESULT (STDMETHODCALLTYPE * LockServer) (
+ * IClassFactory FAR* This,
+ * BOOL fLock);
+ * };
+ */
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+//#define interface struct FAR
+#define interface struct
+#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
+#define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method
+#define PURE = 0
+#define THIS_
+#define THIS void
+#define DECLARE_INTERFACE(iface) interface iface
+#define DECLARE_INTERFACE_(iface, baseiface) interface iface : public baseiface
+
+
+#if !defined(BEGIN_INTERFACE)
+#if defined(_MPPC_) && \
+ ( (defined(_MSC_VER) || defined(__SC__) || defined(__MWERKS__)) && \
+ !defined(NO_NULL_VTABLE_ENTRY) )
+ #define BEGIN_INTERFACE virtual void a() {}
+ #define END_INTERFACE
+#else
+ #define BEGIN_INTERFACE
+ #define END_INTERFACE
+#endif
+#endif
+
+#else
+
+#define interface struct
+
+#define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE * method)
+#define STDMETHOD_(type,method) type (STDMETHODCALLTYPE * method)
+
+#if !defined(BEGIN_INTERFACE)
+#if defined(_MPPC_)
+ #define BEGIN_INTERFACE void *b;
+ #define END_INTERFACE
+#else
+ #define BEGIN_INTERFACE
+ #define END_INTERFACE
+#endif
+#endif
+
+
+#define PURE
+#define THIS_ INTERFACE FAR* This,
+#define THIS INTERFACE FAR* This
+#ifdef CONST_VTABLE
+#undef CONST_VTBL
+#define CONST_VTBL const
+#define DECLARE_INTERFACE(iface) typedef interface iface { \
+ const struct iface##Vtbl FAR* lpVtbl; \
+ } iface; \
+ typedef const struct iface##Vtbl iface##Vtbl; \
+ const struct iface##Vtbl
+#else
+#undef CONST_VTBL
+#define CONST_VTBL
+#define DECLARE_INTERFACE(iface) typedef interface iface { \
+ struct iface##Vtbl FAR* lpVtbl; \
+ } iface; \
+ typedef struct iface##Vtbl iface##Vtbl; \
+ struct iface##Vtbl
+#endif
+#define DECLARE_INTERFACE_(iface, baseiface) DECLARE_INTERFACE(iface)
+
+#endif
+
+
+
+
+/****** Additional basic types **********************************************/
+
+
+#ifndef FARSTRUCT
+#ifdef __cplusplus
+#define FARSTRUCT FAR
+#else
+#define FARSTRUCT
+#endif // __cplusplus
+#endif // FARSTRUCT
+
+
+
+#ifndef HUGEP
+#if defined(_WIN32) || defined(_MPPC_)
+#define HUGEP
+#else
+#define HUGEP __huge
+#endif // WIN32
+#endif // HUGEP
+
+
+#ifdef _MAC
+#if !defined(OLE2ANSI)
+#define OLE2ANSI
+#endif
+#endif
+
+#include <stdlib.h>
+
+#define LISet32(li, v) ((li).HighPart = (v) < 0 ? -1 : 0, (li).LowPart = (v))
+
+#define ULISet32(li, v) ((li).HighPart = 0, (li).LowPart = (v))
+
+
+
+
+
+
+#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER)
+
+// With DCOM, CLSCTX_REMOTE_SERVER should be included
+#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
+#define CLSCTX_ALL (CLSCTX_INPROC_SERVER| \
+ CLSCTX_INPROC_HANDLER| \
+ CLSCTX_LOCAL_SERVER| \
+ CLSCTX_REMOTE_SERVER)
+
+#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER)
+#else
+#define CLSCTX_ALL (CLSCTX_INPROC_SERVER| \
+ CLSCTX_INPROC_HANDLER| \
+ CLSCTX_LOCAL_SERVER )
+
+#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER)
+#endif
+
+
+// class registration flags; passed to CoRegisterClassObject
+typedef enum tagREGCLS
+{
+ REGCLS_SINGLEUSE = 0, // class object only generates one instance
+ REGCLS_MULTIPLEUSE = 1, // same class object genereates multiple inst.
+ // and local automatically goes into inproc tbl.
+ REGCLS_MULTI_SEPARATE = 2, // multiple use, but separate control over each
+ // context.
+ REGCLS_SUSPENDED = 4, // register is as suspended, will be activated
+ // when app calls CoResumeClassObjects
+ REGCLS_SURROGATE = 8 // must be used when a surrogate process
+ // is registering a class object that will be
+ // loaded in the surrogate
+} REGCLS;
+
+// interface marshaling definitions
+#define MARSHALINTERFACE_MIN 500 // minimum number of bytes for interface marshl
+
+
+//
+// Common typedefs for paramaters used in Storage API's, gleamed from storage.h
+// Also contains Storage error codes, which should be moved into the storage
+// idl files.
+//
+
+
+#define CWCSTORAGENAME 32
+
+/* Storage instantiation modes */
+#define STGM_DIRECT 0x00000000L
+#define STGM_TRANSACTED 0x00010000L
+#define STGM_SIMPLE 0x08000000L
+
+#define STGM_READ 0x00000000L
+#define STGM_WRITE 0x00000001L
+#define STGM_READWRITE 0x00000002L
+
+#define STGM_SHARE_DENY_NONE 0x00000040L
+#define STGM_SHARE_DENY_READ 0x00000030L
+#define STGM_SHARE_DENY_WRITE 0x00000020L
+#define STGM_SHARE_EXCLUSIVE 0x00000010L
+
+#define STGM_PRIORITY 0x00040000L
+#define STGM_DELETEONRELEASE 0x04000000L
+#if (WINVER >= 400)
+#define STGM_NOSCRATCH 0x00100000L
+#endif /* WINVER */
+
+#define STGM_CREATE 0x00001000L
+#define STGM_CONVERT 0x00020000L
+#define STGM_FAILIFTHERE 0x00000000L
+
+#define STGM_NOSNAPSHOT 0x00200000L
+
+/* flags for internet asyncronous and layout docfile */
+#define ASYNC_MODE_COMPATIBILITY 0x00000001L
+#define ASYNC_MODE_DEFAULT 0x00000000L
+
+#define STGTY_REPEAT 0x00000100L
+#define STG_TOEND 0xFFFFFFFFL
+
+#define STG_LAYOUT_SEQUENTIAL 0x00000000L
+#define STG_LAYOUT_INTERLEAVED 0x00000001L
+
+
+
+
+/* here is where we pull in the MIDL generated headers for the interfaces */
+typedef interface IRpcStubBuffer IRpcStubBuffer;
+typedef interface IRpcChannelBuffer IRpcChannelBuffer;
+
+#include <wtypes.h>
+#include <unknwn.h>
+#include <objidl.h>
+
+
+// macros to define byte pattern for a GUID.
+// Example: DEFINE_GUID(GUID_XXX, a, b, c, ...);
+//
+// Each dll/exe must initialize the GUIDs once. This is done in one of
+// two ways. If you are not using precompiled headers for the file(s) which
+// initializes the GUIDs, define INITGUID before including objbase.h. This
+// is how OLE builds the initialized versions of the GUIDs which are included
+// in ole2.lib. The GUIDs in ole2.lib are all defined in the same text
+// segment GUID_TEXT.
+//
+// The alternative (which some versions of the compiler don't handle properly;
+// they wind up with the initialized GUIDs in a data, not a text segment),
+// is to use a precompiled version of objbase.h and then include initguid.h
+// after objbase.h followed by one or more of the guid defintion files.
+
+#ifndef INITGUID
+#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ EXTERN_C const GUID FAR name
+#else
+
+#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ EXTERN_C const GUID name \
+ = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
+#endif // INITGUID
+
+#define DEFINE_OLEGUID(name, l, w1, w2) \
+ DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
+
+#ifdef _OLE32_
+
+
+// Faster (but makes code fatter) inline version...use sparingly
+#ifdef __cplusplus
+inline BOOL InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
+{
+ return (
+ ((PLONG) &rguid1)[0] == ((PLONG) &rguid2)[0] &&
+ ((PLONG) &rguid1)[1] == ((PLONG) &rguid2)[1] &&
+ ((PLONG) &rguid1)[2] == ((PLONG) &rguid2)[2] &&
+ ((PLONG) &rguid1)[3] == ((PLONG) &rguid2)[3]);
+}
+#else // ! __cplusplus
+#define InlineIsEqualGUID(rguid1, rguid2) \
+ (((PLONG) rguid1)[0] == ((PLONG) rguid2)[0] && \
+ ((PLONG) rguid1)[1] == ((PLONG) rguid2)[1] && \
+ ((PLONG) rguid1)[2] == ((PLONG) rguid2)[2] && \
+ ((PLONG) rguid1)[3] == ((PLONG) rguid2)[3])
+#endif // __cplusplus
+
+#ifdef _OLE32PRIV_
+BOOL _fastcall wIsEqualGUID(REFGUID rguid1, REFGUID rguid2);
+#define IsEqualGUID(rguid1, rguid2) wIsEqualGUID(rguid1, rguid2)
+#else
+#define IsEqualGUID(rguid1, rguid2) InlineIsEqualGUID(rguid1, rguid2)
+#endif // _OLE32PRIV_
+
+#else // ! _OLE32_
+#ifdef __cplusplus
+inline BOOL IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
+{
+ return !memcmp(&rguid1, &rguid2, sizeof(GUID));
+}
+#else // ! __cplusplus
+#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
+#endif // __cplusplus
+#endif // _OLE32_
+
+#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
+#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
+
+#ifdef __cplusplus
+
+// because GUID is defined elsewhere in WIN32 land, the operator == and !=
+// are moved outside the class to global scope.
+
+#ifdef _OLE32_
+inline BOOL operator==(const GUID& guidOne, const GUID& guidOther)
+{
+ return IsEqualGUID(guidOne,guidOther);
+}
+#else // !_OLE32_
+inline BOOL operator==(const GUID& guidOne, const GUID& guidOther)
+{
+#ifdef _WIN32
+ return !memcmp(&guidOne,&guidOther,sizeof(GUID));
+#else
+ return !_fmemcmp(&guidOne,&guidOther,sizeof(GUID)); }
+#endif
+}
+#endif // _OLE32_
+
+inline BOOL operator!=(const GUID& guidOne, const GUID& guidOther)
+{
+ return !(guidOne == guidOther);
+}
+
+#endif // __cpluscplus
+
+
+#ifndef INITGUID
+#include <cguid.h>
+#endif
+
+// COM initialization flags; passed to CoInitialize.
+typedef enum tagCOINIT
+{
+ COINIT_APARTMENTTHREADED = 0x2, // Apartment model
+
+#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
+ // These constants are only valid on Windows NT 4.0
+ COINIT_MULTITHREADED = 0x0, // OLE calls objects on any thread.
+ COINIT_DISABLE_OLE1DDE = 0x4, // Don't use DDE for Ole1 support.
+ COINIT_SPEED_OVER_MEMORY = 0x8, // Trade memory for speed.
+#endif // DCOM
+} COINIT;
+
+
+
+
+
+/****** STD Object API Prototypes *****************************************/
+
+WINOLEAPI_(DWORD) CoBuildVersion( VOID );
+
+/* init/uninit */
+
+WINOLEAPI CoInitialize(LPVOID pvReserved);
+WINOLEAPI_(void) CoUninitialize(void);
+WINOLEAPI CoGetMalloc(DWORD dwMemContext, LPMALLOC FAR* ppMalloc);
+WINOLEAPI_(DWORD) CoGetCurrentProcess(void);
+WINOLEAPI CoRegisterMallocSpy(LPMALLOCSPY pMallocSpy);
+WINOLEAPI CoRevokeMallocSpy(void);
+WINOLEAPI CoCreateStandardMalloc(DWORD memctx, IMalloc FAR* FAR* ppMalloc);
+
+#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
+WINOLEAPI CoInitializeEx(LPVOID pvReserved, DWORD dwCoInit);
+#endif // DCOM
+
+#if DBG == 1
+WINOLEAPI_(ULONG) DebugCoGetRpcFault( void );
+WINOLEAPI_(void) DebugCoSetRpcFault( ULONG );
+#endif
+
+/* register/revoke/get class objects */
+
+WINOLEAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, LPVOID pvReserved,
+ REFIID riid, LPVOID FAR* ppv);
+WINOLEAPI CoRegisterClassObject(REFCLSID rclsid, LPUNKNOWN pUnk,
+ DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister);
+WINOLEAPI CoRevokeClassObject(DWORD dwRegister);
+WINOLEAPI CoResumeClassObjects(void);
+WINOLEAPI CoSuspendClassObjects(void);
+WINOLEAPI_(ULONG) CoAddRefServerProcess(void);
+WINOLEAPI_(ULONG) CoReleaseServerProcess(void);
+WINOLEAPI CoGetPSClsid(REFIID riid, CLSID *pClsid);
+WINOLEAPI CoRegisterPSClsid(REFIID riid, REFCLSID rclsid);
+
+// Registering surrogate processes
+WINOLEAPI CoRegisterSurrogate(LPSURROGATE pSurrogate);
+
+/* marshaling interface pointers */
+
+WINOLEAPI CoGetMarshalSizeMax(ULONG *pulSize, REFIID riid, LPUNKNOWN pUnk,
+ DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
+WINOLEAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk,
+ DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
+WINOLEAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID FAR* ppv);
+WINOLEAPI CoMarshalHresult(LPSTREAM pstm, HRESULT hresult);
+WINOLEAPI CoUnmarshalHresult(LPSTREAM pstm, HRESULT FAR * phresult);
+WINOLEAPI CoReleaseMarshalData(LPSTREAM pStm);
+WINOLEAPI CoDisconnectObject(LPUNKNOWN pUnk, DWORD dwReserved);
+WINOLEAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases);
+WINOLEAPI CoGetStandardMarshal(REFIID riid, LPUNKNOWN pUnk,
+ DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags,
+ LPMARSHAL FAR* ppMarshal);
+
+WINOLEAPI_(BOOL) CoIsHandlerConnected(LPUNKNOWN pUnk);
+WINOLEAPI_(BOOL) CoHasStrongExternalConnections(LPUNKNOWN pUnk);
+
+// Apartment model inter-thread interface passing helpers
+WINOLEAPI CoMarshalInterThreadInterfaceInStream(REFIID riid, LPUNKNOWN pUnk,
+ LPSTREAM *ppStm);
+
+WINOLEAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID iid,
+ LPVOID FAR* ppv);
+
+WINOLEAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter,
+ LPUNKNOWN *ppunkMarshal);
+
+/* dll loading helpers; keeps track of ref counts and unloads all on exit */
+
+WINOLEAPI_(HINSTANCE) CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree);
+WINOLEAPI_(void) CoFreeLibrary(HINSTANCE hInst);
+WINOLEAPI_(void) CoFreeAllLibraries(void);
+WINOLEAPI_(void) CoFreeUnusedLibraries(void);
+
+
+#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
+
+/* Call Security. */
+
+WINOLEAPI CoInitializeSecurity(
+ PSECURITY_DESCRIPTOR pSecDesc,
+ LONG cAuthSvc,
+ SOLE_AUTHENTICATION_SERVICE *asAuthSvc,
+ void *pReserved1,
+ DWORD dwAuthnLevel,
+ DWORD dwImpLevel,
+ void *pReserved2,
+ DWORD dwCapabilities,
+ void *pReserved3 );
+WINOLEAPI CoGetCallContext( REFIID riid, void **ppInterface );
+WINOLEAPI CoQueryProxyBlanket(
+ IUnknown *pProxy,
+ DWORD *pwAuthnSvc,
+ DWORD *pAuthzSvc,
+ OLECHAR **pServerPrincName,
+ DWORD *pAuthnLevel,
+ DWORD *pImpLevel,
+ RPC_AUTH_IDENTITY_HANDLE *pAuthInfo,
+ DWORD *pCapabilites );
+WINOLEAPI CoSetProxyBlanket(
+ IUnknown *pProxy,
+ DWORD dwAuthnSvc,
+ DWORD dwAuthzSvc,
+ OLECHAR *pServerPrincName,
+ DWORD dwAuthnLevel,
+ DWORD dwImpLevel,
+ RPC_AUTH_IDENTITY_HANDLE pAuthInfo,
+ DWORD dwCapabilities );
+WINOLEAPI CoCopyProxy(
+ IUnknown *pProxy,
+ IUnknown **ppCopy );
+WINOLEAPI CoQueryClientBlanket(
+ DWORD *pAuthnSvc,
+ DWORD *pAuthzSvc,
+ OLECHAR **pServerPrincName,
+ DWORD *pAuthnLevel,
+ DWORD *pImpLevel,
+ RPC_AUTHZ_HANDLE *pPrivs,
+ DWORD *pCapabilities );
+WINOLEAPI CoImpersonateClient();
+WINOLEAPI CoRevertToSelf();
+WINOLEAPI CoQueryAuthenticationServices(
+ DWORD *pcAuthSvc,
+ SOLE_AUTHENTICATION_SERVICE **asAuthSvc );
+WINOLEAPI CoSwitchCallContext( IUnknown *pNewObject, IUnknown **ppOldObject );
+
+#define COM_RIGHTS_EXECUTE 1
+
+#endif // DCOM
+
+/* helper for creating instances */
+
+WINOLEAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter,
+ DWORD dwClsContext, REFIID riid, LPVOID FAR* ppv);
+
+
+#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
+
+WINOLEAPI CoGetInstanceFromFile(
+ COSERVERINFO * pServerInfo,
+ CLSID * pClsid,
+ IUnknown * punkOuter, // only relevant locally
+ DWORD dwClsCtx,
+ DWORD grfMode,
+ OLECHAR * pwszName,
+ DWORD dwCount,
+ MULTI_QI * pResults );
+
+WINOLEAPI CoGetInstanceFromIStorage(
+ COSERVERINFO * pServerInfo,
+ CLSID * pClsid,
+ IUnknown * punkOuter, // only relevant locally
+ DWORD dwClsCtx,
+ struct IStorage * pstg,
+ DWORD dwCount,
+ MULTI_QI * pResults );
+
+WINOLEAPI CoCreateInstanceEx(
+ REFCLSID Clsid,
+ IUnknown * punkOuter, // only relevant locally
+ DWORD dwClsCtx,
+ COSERVERINFO * pServerInfo,
+ DWORD dwCount,
+ MULTI_QI * pResults );
+
+#endif // DCOM
+
+
+/* other helpers */
+
+WINOLEAPI StringFromCLSID(REFCLSID rclsid, LPOLESTR FAR* lplpsz);
+WINOLEAPI CLSIDFromString(LPOLESTR lpsz, LPCLSID pclsid);
+WINOLEAPI StringFromIID(REFIID rclsid, LPOLESTR FAR* lplpsz);
+WINOLEAPI IIDFromString(LPOLESTR lpsz, LPIID lpiid);
+WINOLEAPI_(BOOL) CoIsOle1Class(REFCLSID rclsid);
+WINOLEAPI ProgIDFromCLSID (REFCLSID clsid, LPOLESTR FAR* lplpszProgID);
+WINOLEAPI CLSIDFromProgID (LPCOLESTR lpszProgID, LPCLSID lpclsid);
+WINOLEAPI_(int) StringFromGUID2(REFGUID rguid, LPOLESTR lpsz, int cbMax);
+
+WINOLEAPI CoCreateGuid(GUID FAR *pguid);
+
+WINOLEAPI_(BOOL) CoFileTimeToDosDateTime(
+ FILETIME FAR* lpFileTime, LPWORD lpDosDate, LPWORD lpDosTime);
+WINOLEAPI_(BOOL) CoDosDateTimeToFileTime(
+ WORD nDosDate, WORD nDosTime, FILETIME FAR* lpFileTime);
+WINOLEAPI CoFileTimeNow( FILETIME FAR* lpFileTime );
+
+
+WINOLEAPI CoRegisterMessageFilter( LPMESSAGEFILTER lpMessageFilter,
+ LPMESSAGEFILTER FAR* lplpMessageFilter );
+
+#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
+WINOLEAPI CoRegisterChannelHook( REFGUID ExtensionUuid, IChannelHook *pChannelHook );
+#endif // DCOM
+
+
+/* TreatAs APIS */
+
+WINOLEAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID pClsidNew);
+WINOLEAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew);
+
+
+/* the server dlls must define their DllGetClassObject and DllCanUnloadNow
+ * to match these; the typedefs are located here to ensure all are changed at
+ * the same time.
+ */
+
+//#ifdef _MAC
+//typedef STDAPICALLTYPE HRESULT (* LPFNGETCLASSOBJECT) (REFCLSID, REFIID, LPVOID *);
+//#else
+typedef HRESULT (STDAPICALLTYPE * LPFNGETCLASSOBJECT) (REFCLSID, REFIID, LPVOID *);
+//#endif
+
+//#ifdef _MAC
+//typedef STDAPICALLTYPE HRESULT (* LPFNCANUNLOADNOW)(void);
+//#else
+typedef HRESULT (STDAPICALLTYPE * LPFNCANUNLOADNOW)(void);
+//#endif
+
+STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID FAR* ppv);
+
+STDAPI DllCanUnloadNow(void);
+
+
+/****** Default Memory Allocation ******************************************/
+WINOLEAPI_(LPVOID) CoTaskMemAlloc(ULONG cb);
+WINOLEAPI_(LPVOID) CoTaskMemRealloc(LPVOID pv, ULONG cb);
+WINOLEAPI_(void) CoTaskMemFree(LPVOID pv);
+
+/****** DV APIs ***********************************************************/
+
+
+WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
+
+WINOLEAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid,
+ REFIID iid, LPVOID FAR* ppv);
+
+
+
+
+/****** Storage API Prototypes ********************************************/
+
+
+WINOLEAPI StgCreateDocfile(const OLECHAR FAR* pwcsName,
+ DWORD grfMode,
+ DWORD reserved,
+ IStorage FAR * FAR *ppstgOpen);
+
+WINOLEAPI StgCreateDocfileOnILockBytes(ILockBytes FAR *plkbyt,
+ DWORD grfMode,
+ DWORD reserved,
+ IStorage FAR * FAR *ppstgOpen);
+
+WINOLEAPI StgOpenStorage(const OLECHAR FAR* pwcsName,
+ IStorage FAR *pstgPriority,
+ DWORD grfMode,
+ SNB snbExclude,
+ DWORD reserved,
+ IStorage FAR * FAR *ppstgOpen);
+WINOLEAPI StgOpenStorageOnILockBytes(ILockBytes FAR *plkbyt,
+ IStorage FAR *pstgPriority,
+ DWORD grfMode,
+ SNB snbExclude,
+ DWORD reserved,
+ IStorage FAR * FAR *ppstgOpen);
+
+WINOLEAPI StgIsStorageFile(const OLECHAR FAR* pwcsName);
+WINOLEAPI StgIsStorageILockBytes(ILockBytes FAR* plkbyt);
+
+WINOLEAPI StgSetTimes(OLECHAR const FAR* lpszName,
+ FILETIME const FAR* pctime,
+ FILETIME const FAR* patime,
+ FILETIME const FAR* pmtime);
+
+WINOLEAPI StgOpenAsyncDocfileOnIFillLockBytes( IFillLockBytes *pflb,
+ DWORD grfMode,
+ DWORD asyncFlags,
+ IStorage **ppstgOpen);
+
+WINOLEAPI StgGetIFillLockBytesOnILockBytes( ILockBytes *pilb,
+ IFillLockBytes **ppflb);
+
+WINOLEAPI StgGetIFillLockBytesOnFile(OLECHAR const *pwcsName,
+ IFillLockBytes **ppflb);
+
+
+WINOLEAPI StgOpenLayoutDocfile(OLECHAR const *pwcsDfName,
+ DWORD grfMode,
+ DWORD reserved,
+ IStorage **ppstgOpen);
+
+
+
+//
+// Moniker APIs
+//
+
+WINOLEAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID FAR* ppvResult);
+WINOLEAPI CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, void **ppv);
+WINOLEAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szUserName,
+ ULONG FAR * pchEaten, LPMONIKER FAR * ppmk);
+WINOLEAPI MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER
+ FAR* ppmkRelPath, BOOL dwReserved);
+WINOLEAPI MonikerCommonPrefixWith(LPMONIKER pmkThis, LPMONIKER pmkOther,
+ LPMONIKER FAR* ppmkCommon);
+WINOLEAPI CreateBindCtx(DWORD reserved, LPBC FAR* ppbc);
+WINOLEAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest,
+ LPMONIKER FAR* ppmkComposite);
+WINOLEAPI GetClassFile (LPCOLESTR szFilename, CLSID FAR* pclsid);
+
+WINOLEAPI CreateClassMoniker(REFCLSID rclsid, LPMONIKER FAR* ppmk);
+
+WINOLEAPI CreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER FAR* ppmk);
+
+WINOLEAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem,
+ LPMONIKER FAR* ppmk);
+WINOLEAPI CreateAntiMoniker(LPMONIKER FAR* ppmk);
+WINOLEAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER FAR* ppmk);
+
+WINOLEAPI GetRunningObjectTable( DWORD reserved, LPRUNNINGOBJECTTABLE FAR* pprot);
+
+#ifndef RC_INVOKED
+#include <poppack.h>
+#endif // RC_INVOKED
+
+#endif // __OBJBASE_H__
diff --git a/public/sdk/inc/objerror.h b/public/sdk/inc/objerror.h
new file mode 100644
index 000000000..b019bf118
--- /dev/null
+++ b/public/sdk/inc/objerror.h
@@ -0,0 +1,10 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: objerror.h
+//
+//----------------------------------------------------------------------------
+
+#include <winerror.h>
diff --git a/public/sdk/inc/objidl.h b/public/sdk/inc/objidl.h
new file mode 100644
index 000000000..c944ba461
--- /dev/null
+++ b/public/sdk/inc/objidl.h
@@ -0,0 +1,10770 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:36:22 1996
+ */
+/* Compiler settings for objidl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __objidl_h__
+#define __objidl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IMarshal_FWD_DEFINED__
+#define __IMarshal_FWD_DEFINED__
+typedef interface IMarshal IMarshal;
+#endif /* __IMarshal_FWD_DEFINED__ */
+
+
+#ifndef __IMalloc_FWD_DEFINED__
+#define __IMalloc_FWD_DEFINED__
+typedef interface IMalloc IMalloc;
+#endif /* __IMalloc_FWD_DEFINED__ */
+
+
+#ifndef __IMallocSpy_FWD_DEFINED__
+#define __IMallocSpy_FWD_DEFINED__
+typedef interface IMallocSpy IMallocSpy;
+#endif /* __IMallocSpy_FWD_DEFINED__ */
+
+
+#ifndef __IStdMarshalInfo_FWD_DEFINED__
+#define __IStdMarshalInfo_FWD_DEFINED__
+typedef interface IStdMarshalInfo IStdMarshalInfo;
+#endif /* __IStdMarshalInfo_FWD_DEFINED__ */
+
+
+#ifndef __IExternalConnection_FWD_DEFINED__
+#define __IExternalConnection_FWD_DEFINED__
+typedef interface IExternalConnection IExternalConnection;
+#endif /* __IExternalConnection_FWD_DEFINED__ */
+
+
+#ifndef __IMultiQI_FWD_DEFINED__
+#define __IMultiQI_FWD_DEFINED__
+typedef interface IMultiQI IMultiQI;
+#endif /* __IMultiQI_FWD_DEFINED__ */
+
+
+#ifndef __IEnumUnknown_FWD_DEFINED__
+#define __IEnumUnknown_FWD_DEFINED__
+typedef interface IEnumUnknown IEnumUnknown;
+#endif /* __IEnumUnknown_FWD_DEFINED__ */
+
+
+#ifndef __IBindCtx_FWD_DEFINED__
+#define __IBindCtx_FWD_DEFINED__
+typedef interface IBindCtx IBindCtx;
+#endif /* __IBindCtx_FWD_DEFINED__ */
+
+
+#ifndef __IEnumMoniker_FWD_DEFINED__
+#define __IEnumMoniker_FWD_DEFINED__
+typedef interface IEnumMoniker IEnumMoniker;
+#endif /* __IEnumMoniker_FWD_DEFINED__ */
+
+
+#ifndef __IRunnableObject_FWD_DEFINED__
+#define __IRunnableObject_FWD_DEFINED__
+typedef interface IRunnableObject IRunnableObject;
+#endif /* __IRunnableObject_FWD_DEFINED__ */
+
+
+#ifndef __IRunningObjectTable_FWD_DEFINED__
+#define __IRunningObjectTable_FWD_DEFINED__
+typedef interface IRunningObjectTable IRunningObjectTable;
+#endif /* __IRunningObjectTable_FWD_DEFINED__ */
+
+
+#ifndef __IPersist_FWD_DEFINED__
+#define __IPersist_FWD_DEFINED__
+typedef interface IPersist IPersist;
+#endif /* __IPersist_FWD_DEFINED__ */
+
+
+#ifndef __IPersistStream_FWD_DEFINED__
+#define __IPersistStream_FWD_DEFINED__
+typedef interface IPersistStream IPersistStream;
+#endif /* __IPersistStream_FWD_DEFINED__ */
+
+
+#ifndef __IMoniker_FWD_DEFINED__
+#define __IMoniker_FWD_DEFINED__
+typedef interface IMoniker IMoniker;
+#endif /* __IMoniker_FWD_DEFINED__ */
+
+
+#ifndef __IROTData_FWD_DEFINED__
+#define __IROTData_FWD_DEFINED__
+typedef interface IROTData IROTData;
+#endif /* __IROTData_FWD_DEFINED__ */
+
+
+#ifndef __IEnumString_FWD_DEFINED__
+#define __IEnumString_FWD_DEFINED__
+typedef interface IEnumString IEnumString;
+#endif /* __IEnumString_FWD_DEFINED__ */
+
+
+#ifndef __ISequentialStream_FWD_DEFINED__
+#define __ISequentialStream_FWD_DEFINED__
+typedef interface ISequentialStream ISequentialStream;
+#endif /* __ISequentialStream_FWD_DEFINED__ */
+
+
+#ifndef __IStream_FWD_DEFINED__
+#define __IStream_FWD_DEFINED__
+typedef interface IStream IStream;
+#endif /* __IStream_FWD_DEFINED__ */
+
+
+#ifndef __IEnumSTATSTG_FWD_DEFINED__
+#define __IEnumSTATSTG_FWD_DEFINED__
+typedef interface IEnumSTATSTG IEnumSTATSTG;
+#endif /* __IEnumSTATSTG_FWD_DEFINED__ */
+
+
+#ifndef __IStorage_FWD_DEFINED__
+#define __IStorage_FWD_DEFINED__
+typedef interface IStorage IStorage;
+#endif /* __IStorage_FWD_DEFINED__ */
+
+
+#ifndef __IPersistFile_FWD_DEFINED__
+#define __IPersistFile_FWD_DEFINED__
+typedef interface IPersistFile IPersistFile;
+#endif /* __IPersistFile_FWD_DEFINED__ */
+
+
+#ifndef __IPersistStorage_FWD_DEFINED__
+#define __IPersistStorage_FWD_DEFINED__
+typedef interface IPersistStorage IPersistStorage;
+#endif /* __IPersistStorage_FWD_DEFINED__ */
+
+
+#ifndef __ILockBytes_FWD_DEFINED__
+#define __ILockBytes_FWD_DEFINED__
+typedef interface ILockBytes ILockBytes;
+#endif /* __ILockBytes_FWD_DEFINED__ */
+
+
+#ifndef __IEnumFORMATETC_FWD_DEFINED__
+#define __IEnumFORMATETC_FWD_DEFINED__
+typedef interface IEnumFORMATETC IEnumFORMATETC;
+#endif /* __IEnumFORMATETC_FWD_DEFINED__ */
+
+
+#ifndef __IEnumSTATDATA_FWD_DEFINED__
+#define __IEnumSTATDATA_FWD_DEFINED__
+typedef interface IEnumSTATDATA IEnumSTATDATA;
+#endif /* __IEnumSTATDATA_FWD_DEFINED__ */
+
+
+#ifndef __IRootStorage_FWD_DEFINED__
+#define __IRootStorage_FWD_DEFINED__
+typedef interface IRootStorage IRootStorage;
+#endif /* __IRootStorage_FWD_DEFINED__ */
+
+
+#ifndef __IAdviseSink_FWD_DEFINED__
+#define __IAdviseSink_FWD_DEFINED__
+typedef interface IAdviseSink IAdviseSink;
+#endif /* __IAdviseSink_FWD_DEFINED__ */
+
+
+#ifndef __IAdviseSink2_FWD_DEFINED__
+#define __IAdviseSink2_FWD_DEFINED__
+typedef interface IAdviseSink2 IAdviseSink2;
+#endif /* __IAdviseSink2_FWD_DEFINED__ */
+
+
+#ifndef __IDataObject_FWD_DEFINED__
+#define __IDataObject_FWD_DEFINED__
+typedef interface IDataObject IDataObject;
+#endif /* __IDataObject_FWD_DEFINED__ */
+
+
+#ifndef __IDataAdviseHolder_FWD_DEFINED__
+#define __IDataAdviseHolder_FWD_DEFINED__
+typedef interface IDataAdviseHolder IDataAdviseHolder;
+#endif /* __IDataAdviseHolder_FWD_DEFINED__ */
+
+
+#ifndef __IMessageFilter_FWD_DEFINED__
+#define __IMessageFilter_FWD_DEFINED__
+typedef interface IMessageFilter IMessageFilter;
+#endif /* __IMessageFilter_FWD_DEFINED__ */
+
+
+#ifndef __IRpcChannelBuffer_FWD_DEFINED__
+#define __IRpcChannelBuffer_FWD_DEFINED__
+typedef interface IRpcChannelBuffer IRpcChannelBuffer;
+#endif /* __IRpcChannelBuffer_FWD_DEFINED__ */
+
+
+#ifndef __IRpcProxyBuffer_FWD_DEFINED__
+#define __IRpcProxyBuffer_FWD_DEFINED__
+typedef interface IRpcProxyBuffer IRpcProxyBuffer;
+#endif /* __IRpcProxyBuffer_FWD_DEFINED__ */
+
+
+#ifndef __IRpcStubBuffer_FWD_DEFINED__
+#define __IRpcStubBuffer_FWD_DEFINED__
+typedef interface IRpcStubBuffer IRpcStubBuffer;
+#endif /* __IRpcStubBuffer_FWD_DEFINED__ */
+
+
+#ifndef __IPSFactoryBuffer_FWD_DEFINED__
+#define __IPSFactoryBuffer_FWD_DEFINED__
+typedef interface IPSFactoryBuffer IPSFactoryBuffer;
+#endif /* __IPSFactoryBuffer_FWD_DEFINED__ */
+
+
+#ifndef __IChannelHook_FWD_DEFINED__
+#define __IChannelHook_FWD_DEFINED__
+typedef interface IChannelHook IChannelHook;
+#endif /* __IChannelHook_FWD_DEFINED__ */
+
+
+#ifndef __IPropertyStorage_FWD_DEFINED__
+#define __IPropertyStorage_FWD_DEFINED__
+typedef interface IPropertyStorage IPropertyStorage;
+#endif /* __IPropertyStorage_FWD_DEFINED__ */
+
+
+#ifndef __IPropertySetStorage_FWD_DEFINED__
+#define __IPropertySetStorage_FWD_DEFINED__
+typedef interface IPropertySetStorage IPropertySetStorage;
+#endif /* __IPropertySetStorage_FWD_DEFINED__ */
+
+
+#ifndef __IEnumSTATPROPSTG_FWD_DEFINED__
+#define __IEnumSTATPROPSTG_FWD_DEFINED__
+typedef interface IEnumSTATPROPSTG IEnumSTATPROPSTG;
+#endif /* __IEnumSTATPROPSTG_FWD_DEFINED__ */
+
+
+#ifndef __IEnumSTATPROPSETSTG_FWD_DEFINED__
+#define __IEnumSTATPROPSETSTG_FWD_DEFINED__
+typedef interface IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG;
+#endif /* __IEnumSTATPROPSETSTG_FWD_DEFINED__ */
+
+
+#ifndef __IClientSecurity_FWD_DEFINED__
+#define __IClientSecurity_FWD_DEFINED__
+typedef interface IClientSecurity IClientSecurity;
+#endif /* __IClientSecurity_FWD_DEFINED__ */
+
+
+#ifndef __IServerSecurity_FWD_DEFINED__
+#define __IServerSecurity_FWD_DEFINED__
+typedef interface IServerSecurity IServerSecurity;
+#endif /* __IServerSecurity_FWD_DEFINED__ */
+
+
+#ifndef __IClassActivator_FWD_DEFINED__
+#define __IClassActivator_FWD_DEFINED__
+typedef interface IClassActivator IClassActivator;
+#endif /* __IClassActivator_FWD_DEFINED__ */
+
+
+#ifndef __IFillLockBytes_FWD_DEFINED__
+#define __IFillLockBytes_FWD_DEFINED__
+typedef interface IFillLockBytes IFillLockBytes;
+#endif /* __IFillLockBytes_FWD_DEFINED__ */
+
+
+#ifndef __IProgressNotify_FWD_DEFINED__
+#define __IProgressNotify_FWD_DEFINED__
+typedef interface IProgressNotify IProgressNotify;
+#endif /* __IProgressNotify_FWD_DEFINED__ */
+
+
+#ifndef __ILayoutStorage_FWD_DEFINED__
+#define __ILayoutStorage_FWD_DEFINED__
+typedef interface ILayoutStorage ILayoutStorage;
+#endif /* __ILayoutStorage_FWD_DEFINED__ */
+
+
+#ifndef __ISurrogate_FWD_DEFINED__
+#define __ISurrogate_FWD_DEFINED__
+typedef interface ISurrogate ISurrogate;
+#endif /* __ISurrogate_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "unknwn.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IMarshal_INTERFACE_DEFINED__
+#define __IMarshal_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMarshal
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IMarshal __RPC_FAR *LPMARSHAL;
+
+
+EXTERN_C const IID IID_IMarshal;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMarshal : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetUnmarshalClass(
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ CLSID __RPC_FAR *pCid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMarshalSizeMax(
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ DWORD __RPC_FAR *pSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MarshalInterface(
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnmarshalInterface(
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseMarshalData(
+ /* [unique][in] */ IStream __RPC_FAR *pStm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DisconnectObject(
+ /* [in] */ DWORD dwReserved) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMarshalVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMarshal __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMarshal __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetUnmarshalClass )(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ CLSID __RPC_FAR *pCid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMarshalSizeMax )(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ DWORD __RPC_FAR *pSize);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *MarshalInterface )(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UnmarshalInterface )(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseMarshalData )(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DisconnectObject )(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved);
+
+ END_INTERFACE
+ } IMarshalVtbl;
+
+ interface IMarshal
+ {
+ CONST_VTBL struct IMarshalVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMarshal_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMarshal_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMarshal_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMarshal_GetUnmarshalClass(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pCid) \
+ (This)->lpVtbl -> GetUnmarshalClass(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pCid)
+
+#define IMarshal_GetMarshalSizeMax(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pSize) \
+ (This)->lpVtbl -> GetMarshalSizeMax(This,riid,pv,dwDestContext,pvDestContext,mshlflags,pSize)
+
+#define IMarshal_MarshalInterface(This,pStm,riid,pv,dwDestContext,pvDestContext,mshlflags) \
+ (This)->lpVtbl -> MarshalInterface(This,pStm,riid,pv,dwDestContext,pvDestContext,mshlflags)
+
+#define IMarshal_UnmarshalInterface(This,pStm,riid,ppv) \
+ (This)->lpVtbl -> UnmarshalInterface(This,pStm,riid,ppv)
+
+#define IMarshal_ReleaseMarshalData(This,pStm) \
+ (This)->lpVtbl -> ReleaseMarshalData(This,pStm)
+
+#define IMarshal_DisconnectObject(This,dwReserved) \
+ (This)->lpVtbl -> DisconnectObject(This,dwReserved)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ CLSID __RPC_FAR *pCid);
+
+
+void __RPC_STUB IMarshal_GetUnmarshalClass_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags,
+ /* [out] */ DWORD __RPC_FAR *pSize);
+
+
+void __RPC_STUB IMarshal_GetMarshalSizeMax_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_MarshalInterface_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ void __RPC_FAR *pv,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [in] */ DWORD mshlflags);
+
+
+void __RPC_STUB IMarshal_MarshalInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+
+void __RPC_STUB IMarshal_UnmarshalInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm);
+
+
+void __RPC_STUB IMarshal_ReleaseMarshalData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMarshal_DisconnectObject_Proxy(
+ IMarshal __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved);
+
+
+void __RPC_STUB IMarshal_DisconnectObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMarshal_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMalloc_INTERFACE_DEFINED__
+#define __IMalloc_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMalloc
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IMalloc __RPC_FAR *LPMALLOC;
+
+
+EXTERN_C const IID IID_IMalloc;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMalloc : public IUnknown
+ {
+ public:
+ virtual void __RPC_FAR *STDMETHODCALLTYPE Alloc(
+ /* [in] */ ULONG cb) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE Realloc(
+ /* [in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb) = 0;
+
+ virtual void STDMETHODCALLTYPE Free(
+ /* [in] */ void __RPC_FAR *pv) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE GetSize(
+ /* [in] */ void __RPC_FAR *pv) = 0;
+
+ virtual int STDMETHODCALLTYPE DidAlloc(
+ void __RPC_FAR *pv) = 0;
+
+ virtual void STDMETHODCALLTYPE HeapMinimize( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMallocVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMalloc __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMalloc __RPC_FAR * This);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *Alloc )(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ ULONG cb);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *Realloc )(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *Free )(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *GetSize )(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv);
+
+ int ( STDMETHODCALLTYPE __RPC_FAR *DidAlloc )(
+ IMalloc __RPC_FAR * This,
+ void __RPC_FAR *pv);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *HeapMinimize )(
+ IMalloc __RPC_FAR * This);
+
+ END_INTERFACE
+ } IMallocVtbl;
+
+ interface IMalloc
+ {
+ CONST_VTBL struct IMallocVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMalloc_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMalloc_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMalloc_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMalloc_Alloc(This,cb) \
+ (This)->lpVtbl -> Alloc(This,cb)
+
+#define IMalloc_Realloc(This,pv,cb) \
+ (This)->lpVtbl -> Realloc(This,pv,cb)
+
+#define IMalloc_Free(This,pv) \
+ (This)->lpVtbl -> Free(This,pv)
+
+#define IMalloc_GetSize(This,pv) \
+ (This)->lpVtbl -> GetSize(This,pv)
+
+#define IMalloc_DidAlloc(This,pv) \
+ (This)->lpVtbl -> DidAlloc(This,pv)
+
+#define IMalloc_HeapMinimize(This) \
+ (This)->lpVtbl -> HeapMinimize(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMalloc_Alloc_Proxy(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ ULONG cb);
+
+
+void __RPC_STUB IMalloc_Alloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMalloc_Realloc_Proxy(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb);
+
+
+void __RPC_STUB IMalloc_Realloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IMalloc_Free_Proxy(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv);
+
+
+void __RPC_STUB IMalloc_Free_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IMalloc_GetSize_Proxy(
+ IMalloc __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pv);
+
+
+void __RPC_STUB IMalloc_GetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+int STDMETHODCALLTYPE IMalloc_DidAlloc_Proxy(
+ IMalloc __RPC_FAR * This,
+ void __RPC_FAR *pv);
+
+
+void __RPC_STUB IMalloc_DidAlloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IMalloc_HeapMinimize_Proxy(
+ IMalloc __RPC_FAR * This);
+
+
+void __RPC_STUB IMalloc_HeapMinimize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMalloc_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMallocSpy_INTERFACE_DEFINED__
+#define __IMallocSpy_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMallocSpy
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IMallocSpy __RPC_FAR *LPMALLOCSPY;
+
+
+EXTERN_C const IID IID_IMallocSpy;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMallocSpy : public IUnknown
+ {
+ public:
+ virtual ULONG STDMETHODCALLTYPE PreAlloc(
+ /* [in] */ ULONG cbRequest) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE PostAlloc(
+ /* [in] */ void __RPC_FAR *pActual) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE PreFree(
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual void STDMETHODCALLTYPE PostFree(
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE PreRealloc(
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ ULONG cbRequest,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppNewRequest,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE PostRealloc(
+ /* [in] */ void __RPC_FAR *pActual,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE PreGetSize(
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE PostGetSize(
+ /* [in] */ ULONG cbActual,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual void __RPC_FAR *STDMETHODCALLTYPE PreDidAlloc(
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed) = 0;
+
+ virtual int STDMETHODCALLTYPE PostDidAlloc(
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed,
+ /* [in] */ int fActual) = 0;
+
+ virtual void STDMETHODCALLTYPE PreHeapMinimize( void) = 0;
+
+ virtual void STDMETHODCALLTYPE PostHeapMinimize( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMallocSpyVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMallocSpy __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMallocSpy __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *PreAlloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ ULONG cbRequest);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *PostAlloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pActual);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *PreFree )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *PostFree )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ BOOL fSpyed);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *PreRealloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ ULONG cbRequest,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppNewRequest,
+ /* [in] */ BOOL fSpyed);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *PostRealloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pActual,
+ /* [in] */ BOOL fSpyed);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *PreGetSize )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *PostGetSize )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ ULONG cbActual,
+ /* [in] */ BOOL fSpyed);
+
+ void __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *PreDidAlloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+ int ( STDMETHODCALLTYPE __RPC_FAR *PostDidAlloc )(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed,
+ /* [in] */ int fActual);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *PreHeapMinimize )(
+ IMallocSpy __RPC_FAR * This);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *PostHeapMinimize )(
+ IMallocSpy __RPC_FAR * This);
+
+ END_INTERFACE
+ } IMallocSpyVtbl;
+
+ interface IMallocSpy
+ {
+ CONST_VTBL struct IMallocSpyVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMallocSpy_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMallocSpy_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMallocSpy_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMallocSpy_PreAlloc(This,cbRequest) \
+ (This)->lpVtbl -> PreAlloc(This,cbRequest)
+
+#define IMallocSpy_PostAlloc(This,pActual) \
+ (This)->lpVtbl -> PostAlloc(This,pActual)
+
+#define IMallocSpy_PreFree(This,pRequest,fSpyed) \
+ (This)->lpVtbl -> PreFree(This,pRequest,fSpyed)
+
+#define IMallocSpy_PostFree(This,fSpyed) \
+ (This)->lpVtbl -> PostFree(This,fSpyed)
+
+#define IMallocSpy_PreRealloc(This,pRequest,cbRequest,ppNewRequest,fSpyed) \
+ (This)->lpVtbl -> PreRealloc(This,pRequest,cbRequest,ppNewRequest,fSpyed)
+
+#define IMallocSpy_PostRealloc(This,pActual,fSpyed) \
+ (This)->lpVtbl -> PostRealloc(This,pActual,fSpyed)
+
+#define IMallocSpy_PreGetSize(This,pRequest,fSpyed) \
+ (This)->lpVtbl -> PreGetSize(This,pRequest,fSpyed)
+
+#define IMallocSpy_PostGetSize(This,cbActual,fSpyed) \
+ (This)->lpVtbl -> PostGetSize(This,cbActual,fSpyed)
+
+#define IMallocSpy_PreDidAlloc(This,pRequest,fSpyed) \
+ (This)->lpVtbl -> PreDidAlloc(This,pRequest,fSpyed)
+
+#define IMallocSpy_PostDidAlloc(This,pRequest,fSpyed,fActual) \
+ (This)->lpVtbl -> PostDidAlloc(This,pRequest,fSpyed,fActual)
+
+#define IMallocSpy_PreHeapMinimize(This) \
+ (This)->lpVtbl -> PreHeapMinimize(This)
+
+#define IMallocSpy_PostHeapMinimize(This) \
+ (This)->lpVtbl -> PostHeapMinimize(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+ULONG STDMETHODCALLTYPE IMallocSpy_PreAlloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ ULONG cbRequest);
+
+
+void __RPC_STUB IMallocSpy_PreAlloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMallocSpy_PostAlloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pActual);
+
+
+void __RPC_STUB IMallocSpy_PostAlloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMallocSpy_PreFree_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PreFree_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IMallocSpy_PostFree_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PostFree_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IMallocSpy_PreRealloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ ULONG cbRequest,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppNewRequest,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PreRealloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMallocSpy_PostRealloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pActual,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PostRealloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMallocSpy_PreGetSize_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PreGetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IMallocSpy_PostGetSize_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ ULONG cbActual,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PostGetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void __RPC_FAR *STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed);
+
+
+void __RPC_STUB IMallocSpy_PreDidAlloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+int STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Proxy(
+ IMallocSpy __RPC_FAR * This,
+ /* [in] */ void __RPC_FAR *pRequest,
+ /* [in] */ BOOL fSpyed,
+ /* [in] */ int fActual);
+
+
+void __RPC_STUB IMallocSpy_PostDidAlloc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Proxy(
+ IMallocSpy __RPC_FAR * This);
+
+
+void __RPC_STUB IMallocSpy_PreHeapMinimize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Proxy(
+ IMallocSpy __RPC_FAR * This);
+
+
+void __RPC_STUB IMallocSpy_PostHeapMinimize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMallocSpy_INTERFACE_DEFINED__ */
+
+
+#ifndef __IStdMarshalInfo_INTERFACE_DEFINED__
+#define __IStdMarshalInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IStdMarshalInfo
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IStdMarshalInfo __RPC_FAR *LPSTDMARSHALINFO;
+
+
+EXTERN_C const IID IID_IStdMarshalInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IStdMarshalInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetClassForHandler(
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [out] */ CLSID __RPC_FAR *pClsid) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IStdMarshalInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IStdMarshalInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IStdMarshalInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IStdMarshalInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassForHandler )(
+ IStdMarshalInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [out] */ CLSID __RPC_FAR *pClsid);
+
+ END_INTERFACE
+ } IStdMarshalInfoVtbl;
+
+ interface IStdMarshalInfo
+ {
+ CONST_VTBL struct IStdMarshalInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IStdMarshalInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IStdMarshalInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IStdMarshalInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IStdMarshalInfo_GetClassForHandler(This,dwDestContext,pvDestContext,pClsid) \
+ (This)->lpVtbl -> GetClassForHandler(This,dwDestContext,pvDestContext,pClsid)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Proxy(
+ IStdMarshalInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwDestContext,
+ /* [unique][in] */ void __RPC_FAR *pvDestContext,
+ /* [out] */ CLSID __RPC_FAR *pClsid);
+
+
+void __RPC_STUB IStdMarshalInfo_GetClassForHandler_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IStdMarshalInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __IExternalConnection_INTERFACE_DEFINED__
+#define __IExternalConnection_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IExternalConnection
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][local][object] */
+
+
+typedef /* [unique] */ IExternalConnection __RPC_FAR *LPEXTERNALCONNECTION;
+
+typedef
+enum tagEXTCONN
+ { EXTCONN_STRONG = 0x1,
+ EXTCONN_WEAK = 0x2,
+ EXTCONN_CALLABLE = 0x4
+ } EXTCONN;
+
+
+EXTERN_C const IID IID_IExternalConnection;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IExternalConnection : public IUnknown
+ {
+ public:
+ virtual DWORD STDMETHODCALLTYPE AddConnection(
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved) = 0;
+
+ virtual DWORD STDMETHODCALLTYPE ReleaseConnection(
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved,
+ /* [in] */ BOOL fLastReleaseCloses) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IExternalConnectionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IExternalConnection __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IExternalConnection __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IExternalConnection __RPC_FAR * This);
+
+ DWORD ( STDMETHODCALLTYPE __RPC_FAR *AddConnection )(
+ IExternalConnection __RPC_FAR * This,
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved);
+
+ DWORD ( STDMETHODCALLTYPE __RPC_FAR *ReleaseConnection )(
+ IExternalConnection __RPC_FAR * This,
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved,
+ /* [in] */ BOOL fLastReleaseCloses);
+
+ END_INTERFACE
+ } IExternalConnectionVtbl;
+
+ interface IExternalConnection
+ {
+ CONST_VTBL struct IExternalConnectionVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IExternalConnection_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IExternalConnection_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IExternalConnection_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IExternalConnection_AddConnection(This,extconn,reserved) \
+ (This)->lpVtbl -> AddConnection(This,extconn,reserved)
+
+#define IExternalConnection_ReleaseConnection(This,extconn,reserved,fLastReleaseCloses) \
+ (This)->lpVtbl -> ReleaseConnection(This,extconn,reserved,fLastReleaseCloses)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+DWORD STDMETHODCALLTYPE IExternalConnection_AddConnection_Proxy(
+ IExternalConnection __RPC_FAR * This,
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved);
+
+
+void __RPC_STUB IExternalConnection_AddConnection_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+DWORD STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Proxy(
+ IExternalConnection __RPC_FAR * This,
+ /* [in] */ DWORD extconn,
+ /* [in] */ DWORD reserved,
+ /* [in] */ BOOL fLastReleaseCloses);
+
+
+void __RPC_STUB IExternalConnection_ReleaseConnection_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IExternalConnection_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMultiQI_INTERFACE_DEFINED__
+#define __IMultiQI_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMultiQI
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][local][object] */
+
+
+typedef /* [unique] */ IMultiQI __RPC_FAR *LPMULTIQI;
+
+typedef struct tagMULTI_QI
+ {
+ const IID __RPC_FAR *pIID;
+ IUnknown __RPC_FAR *pItf;
+ HRESULT hr;
+ } MULTI_QI;
+
+
+EXTERN_C const IID IID_IMultiQI;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMultiQI : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryMultipleInterfaces(
+ /* [in] */ ULONG cMQIs,
+ /* [out][in] */ MULTI_QI __RPC_FAR *pMQIs) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMultiQIVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMultiQI __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMultiQI __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMultiQI __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryMultipleInterfaces )(
+ IMultiQI __RPC_FAR * This,
+ /* [in] */ ULONG cMQIs,
+ /* [out][in] */ MULTI_QI __RPC_FAR *pMQIs);
+
+ END_INTERFACE
+ } IMultiQIVtbl;
+
+ interface IMultiQI
+ {
+ CONST_VTBL struct IMultiQIVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMultiQI_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMultiQI_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMultiQI_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMultiQI_QueryMultipleInterfaces(This,cMQIs,pMQIs) \
+ (This)->lpVtbl -> QueryMultipleInterfaces(This,cMQIs,pMQIs)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IMultiQI_QueryMultipleInterfaces_Proxy(
+ IMultiQI __RPC_FAR * This,
+ /* [in] */ ULONG cMQIs,
+ /* [out][in] */ MULTI_QI __RPC_FAR *pMQIs);
+
+
+void __RPC_STUB IMultiQI_QueryMultipleInterfaces_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMultiQI_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumUnknown_INTERFACE_DEFINED__
+#define __IEnumUnknown_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumUnknown
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumUnknown __RPC_FAR *LPENUMUNKNOWN;
+
+
+EXTERN_C const IID IID_IEnumUnknown;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumUnknown : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumUnknownVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumUnknown __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumUnknown __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumUnknown __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumUnknown __RPC_FAR * This,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumUnknownVtbl;
+
+ interface IEnumUnknown
+ {
+ CONST_VTBL struct IEnumUnknownVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumUnknown_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumUnknown_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumUnknown_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumUnknown_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumUnknown_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumUnknown_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumUnknown_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Proxy(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumUnknown_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Skip_Proxy(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumUnknown_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Reset_Proxy(
+ IEnumUnknown __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumUnknown_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Clone_Proxy(
+ IEnumUnknown __RPC_FAR * This,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumUnknown_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumUnknown_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBindCtx_INTERFACE_DEFINED__
+#define __IBindCtx_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IBindCtx
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IBindCtx __RPC_FAR *LPBC;
+
+typedef /* [unique] */ IBindCtx __RPC_FAR *LPBINDCTX;
+
+typedef struct tagBIND_OPTS
+ {
+ DWORD cbStruct;
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ } BIND_OPTS;
+
+typedef struct tagBIND_OPTS __RPC_FAR *LPBIND_OPTS;
+
+#if defined(__cplusplus)
+ typedef struct tagBIND_OPTS2 : tagBIND_OPTS{
+ DWORD dwTrackFlags;
+ DWORD dwClassContext;
+ LCID locale;
+ COSERVERINFO * pServerInfo;
+ } BIND_OPTS2, * LPBIND_OPTS2;
+#else
+typedef struct tagBIND_OPTS2
+ {
+ DWORD cbStruct;
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ DWORD dwTrackFlags;
+ DWORD dwClassContext;
+ LCID locale;
+ COSERVERINFO __RPC_FAR *pServerInfo;
+ } BIND_OPTS2;
+
+typedef struct tagBIND_OPTS2 __RPC_FAR *LPBIND_OPTS2;
+
+#endif
+typedef
+enum tagBIND_FLAGS
+ { BIND_MAYBOTHERUSER = 1,
+ BIND_JUSTTESTEXISTENCE = 2
+ } BIND_FLAGS;
+
+
+EXTERN_C const IID IID_IBindCtx;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IBindCtx : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RegisterObjectBound(
+ /* [unique][in] */ IUnknown __RPC_FAR *punk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevokeObjectBound(
+ /* [unique][in] */ IUnknown __RPC_FAR *punk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseBoundObjects( void) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetBindOptions(
+ /* [in] */ BIND_OPTS __RPC_FAR *pbindopts) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetBindOptions(
+ /* [out][in] */ BIND_OPTS __RPC_FAR *pbindopts) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRunningObjectTable(
+ /* [out] */ IRunningObjectTable __RPC_FAR *__RPC_FAR *pprot) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RegisterObjectParam(
+ /* [in] */ LPOLESTR pszKey,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetObjectParam(
+ /* [in] */ LPOLESTR pszKey,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumObjectParam(
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevokeObjectParam(
+ /* [in] */ LPOLESTR pszKey) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IBindCtxVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IBindCtx __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IBindCtx __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RegisterObjectBound )(
+ IBindCtx __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RevokeObjectBound )(
+ IBindCtx __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseBoundObjects )(
+ IBindCtx __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetBindOptions )(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ BIND_OPTS __RPC_FAR *pbindopts);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBindOptions )(
+ IBindCtx __RPC_FAR * This,
+ /* [out][in] */ BIND_OPTS __RPC_FAR *pbindopts);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRunningObjectTable )(
+ IBindCtx __RPC_FAR * This,
+ /* [out] */ IRunningObjectTable __RPC_FAR *__RPC_FAR *pprot);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RegisterObjectParam )(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetObjectParam )(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumObjectParam )(
+ IBindCtx __RPC_FAR * This,
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RevokeObjectParam )(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey);
+
+ END_INTERFACE
+ } IBindCtxVtbl;
+
+ interface IBindCtx
+ {
+ CONST_VTBL struct IBindCtxVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IBindCtx_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IBindCtx_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IBindCtx_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IBindCtx_RegisterObjectBound(This,punk) \
+ (This)->lpVtbl -> RegisterObjectBound(This,punk)
+
+#define IBindCtx_RevokeObjectBound(This,punk) \
+ (This)->lpVtbl -> RevokeObjectBound(This,punk)
+
+#define IBindCtx_ReleaseBoundObjects(This) \
+ (This)->lpVtbl -> ReleaseBoundObjects(This)
+
+#define IBindCtx_SetBindOptions(This,pbindopts) \
+ (This)->lpVtbl -> SetBindOptions(This,pbindopts)
+
+#define IBindCtx_GetBindOptions(This,pbindopts) \
+ (This)->lpVtbl -> GetBindOptions(This,pbindopts)
+
+#define IBindCtx_GetRunningObjectTable(This,pprot) \
+ (This)->lpVtbl -> GetRunningObjectTable(This,pprot)
+
+#define IBindCtx_RegisterObjectParam(This,pszKey,punk) \
+ (This)->lpVtbl -> RegisterObjectParam(This,pszKey,punk)
+
+#define IBindCtx_GetObjectParam(This,pszKey,ppunk) \
+ (This)->lpVtbl -> GetObjectParam(This,pszKey,ppunk)
+
+#define IBindCtx_EnumObjectParam(This,ppenum) \
+ (This)->lpVtbl -> EnumObjectParam(This,ppenum)
+
+#define IBindCtx_RevokeObjectParam(This,pszKey) \
+ (This)->lpVtbl -> RevokeObjectParam(This,pszKey)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+
+void __RPC_STUB IBindCtx_RegisterObjectBound_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+
+void __RPC_STUB IBindCtx_RevokeObjectBound_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Proxy(
+ IBindCtx __RPC_FAR * This);
+
+
+void __RPC_STUB IBindCtx_ReleaseBoundObjects_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindCtx_RemoteSetBindOptions_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ BIND_OPTS2 __RPC_FAR *pbindopts);
+
+
+void __RPC_STUB IBindCtx_RemoteSetBindOptions_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindCtx_RemoteGetBindOptions_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [out][in] */ BIND_OPTS2 __RPC_FAR *pbindopts);
+
+
+void __RPC_STUB IBindCtx_RemoteGetBindOptions_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [out] */ IRunningObjectTable __RPC_FAR *__RPC_FAR *pprot);
+
+
+void __RPC_STUB IBindCtx_GetRunningObjectTable_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey,
+ /* [unique][in] */ IUnknown __RPC_FAR *punk);
+
+
+void __RPC_STUB IBindCtx_RegisterObjectParam_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_GetObjectParam_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+
+void __RPC_STUB IBindCtx_GetObjectParam_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IBindCtx_EnumObjectParam_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszKey);
+
+
+void __RPC_STUB IBindCtx_RevokeObjectParam_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IBindCtx_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumMoniker_INTERFACE_DEFINED__
+#define __IEnumMoniker_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumMoniker
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumMoniker __RPC_FAR *LPENUMMONIKER;
+
+
+EXTERN_C const IID IID_IEnumMoniker;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumMoniker : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumMonikerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumMoniker __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumMoniker __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumMoniker __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumMoniker __RPC_FAR * This,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumMonikerVtbl;
+
+ interface IEnumMoniker
+ {
+ CONST_VTBL struct IEnumMonikerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumMoniker_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumMoniker_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumMoniker_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumMoniker_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumMoniker_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumMoniker_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumMoniker_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Proxy(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumMoniker_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Skip_Proxy(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumMoniker_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Reset_Proxy(
+ IEnumMoniker __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumMoniker_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Clone_Proxy(
+ IEnumMoniker __RPC_FAR * This,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumMoniker_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumMoniker_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRunnableObject_INTERFACE_DEFINED__
+#define __IRunnableObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRunnableObject
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IRunnableObject __RPC_FAR *LPRUNNABLEOBJECT;
+
+
+EXTERN_C const IID IID_IRunnableObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRunnableObject : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetRunningClass(
+ /* [out] */ LPCLSID lpClsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Run(
+ /* [in] */ LPBINDCTX pbc) = 0;
+
+ virtual /* [local] */ BOOL STDMETHODCALLTYPE IsRunning( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockRunning(
+ /* [in] */ BOOL fLock,
+ /* [in] */ BOOL fLastUnlockCloses) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetContainedObject(
+ /* [in] */ BOOL fContained) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRunnableObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRunnableObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRunnableObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRunningClass )(
+ IRunnableObject __RPC_FAR * This,
+ /* [out] */ LPCLSID lpClsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Run )(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ LPBINDCTX pbc);
+
+ /* [local] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *IsRunning )(
+ IRunnableObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockRunning )(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ BOOL fLock,
+ /* [in] */ BOOL fLastUnlockCloses);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetContainedObject )(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ BOOL fContained);
+
+ END_INTERFACE
+ } IRunnableObjectVtbl;
+
+ interface IRunnableObject
+ {
+ CONST_VTBL struct IRunnableObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRunnableObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRunnableObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRunnableObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRunnableObject_GetRunningClass(This,lpClsid) \
+ (This)->lpVtbl -> GetRunningClass(This,lpClsid)
+
+#define IRunnableObject_Run(This,pbc) \
+ (This)->lpVtbl -> Run(This,pbc)
+
+#define IRunnableObject_IsRunning(This) \
+ (This)->lpVtbl -> IsRunning(This)
+
+#define IRunnableObject_LockRunning(This,fLock,fLastUnlockCloses) \
+ (This)->lpVtbl -> LockRunning(This,fLock,fLastUnlockCloses)
+
+#define IRunnableObject_SetContainedObject(This,fContained) \
+ (This)->lpVtbl -> SetContainedObject(This,fContained)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Proxy(
+ IRunnableObject __RPC_FAR * This,
+ /* [out] */ LPCLSID lpClsid);
+
+
+void __RPC_STUB IRunnableObject_GetRunningClass_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunnableObject_Run_Proxy(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ LPBINDCTX pbc);
+
+
+void __RPC_STUB IRunnableObject_Run_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IRunnableObject_RemoteIsRunning_Proxy(
+ IRunnableObject __RPC_FAR * This);
+
+
+void __RPC_STUB IRunnableObject_RemoteIsRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunnableObject_LockRunning_Proxy(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ BOOL fLock,
+ /* [in] */ BOOL fLastUnlockCloses);
+
+
+void __RPC_STUB IRunnableObject_LockRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Proxy(
+ IRunnableObject __RPC_FAR * This,
+ /* [in] */ BOOL fContained);
+
+
+void __RPC_STUB IRunnableObject_SetContainedObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRunnableObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRunningObjectTable_INTERFACE_DEFINED__
+#define __IRunningObjectTable_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRunningObjectTable
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IRunningObjectTable __RPC_FAR *LPRUNNINGOBJECTTABLE;
+
+
+EXTERN_C const IID IID_IRunningObjectTable;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRunningObjectTable : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Register(
+ /* [in] */ DWORD grfFlags,
+ /* [unique][in] */ IUnknown __RPC_FAR *punkObject,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ DWORD __RPC_FAR *pdwRegister) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Revoke(
+ /* [in] */ DWORD dwRegister) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsRunning(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetObject(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunkObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE NoteChangeTime(
+ /* [in] */ DWORD dwRegister,
+ /* [in] */ FILETIME __RPC_FAR *pfiletime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ FILETIME __RPC_FAR *pfiletime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumRunning(
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRunningObjectTableVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRunningObjectTable __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRunningObjectTable __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Register )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [unique][in] */ IUnknown __RPC_FAR *punkObject,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ DWORD __RPC_FAR *pdwRegister);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Revoke )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD dwRegister);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsRunning )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetObject )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunkObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *NoteChangeTime )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD dwRegister,
+ /* [in] */ FILETIME __RPC_FAR *pfiletime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTimeOfLastChange )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ FILETIME __RPC_FAR *pfiletime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumRunning )(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker);
+
+ END_INTERFACE
+ } IRunningObjectTableVtbl;
+
+ interface IRunningObjectTable
+ {
+ CONST_VTBL struct IRunningObjectTableVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRunningObjectTable_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRunningObjectTable_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRunningObjectTable_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRunningObjectTable_Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) \
+ (This)->lpVtbl -> Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister)
+
+#define IRunningObjectTable_Revoke(This,dwRegister) \
+ (This)->lpVtbl -> Revoke(This,dwRegister)
+
+#define IRunningObjectTable_IsRunning(This,pmkObjectName) \
+ (This)->lpVtbl -> IsRunning(This,pmkObjectName)
+
+#define IRunningObjectTable_GetObject(This,pmkObjectName,ppunkObject) \
+ (This)->lpVtbl -> GetObject(This,pmkObjectName,ppunkObject)
+
+#define IRunningObjectTable_NoteChangeTime(This,dwRegister,pfiletime) \
+ (This)->lpVtbl -> NoteChangeTime(This,dwRegister,pfiletime)
+
+#define IRunningObjectTable_GetTimeOfLastChange(This,pmkObjectName,pfiletime) \
+ (This)->lpVtbl -> GetTimeOfLastChange(This,pmkObjectName,pfiletime)
+
+#define IRunningObjectTable_EnumRunning(This,ppenumMoniker) \
+ (This)->lpVtbl -> EnumRunning(This,ppenumMoniker)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_Register_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [unique][in] */ IUnknown __RPC_FAR *punkObject,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ DWORD __RPC_FAR *pdwRegister);
+
+
+void __RPC_STUB IRunningObjectTable_Register_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_Revoke_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD dwRegister);
+
+
+void __RPC_STUB IRunningObjectTable_Revoke_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName);
+
+
+void __RPC_STUB IRunningObjectTable_IsRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetObject_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunkObject);
+
+
+void __RPC_STUB IRunningObjectTable_GetObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [in] */ DWORD dwRegister,
+ /* [in] */ FILETIME __RPC_FAR *pfiletime);
+
+
+void __RPC_STUB IRunningObjectTable_NoteChangeTime_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkObjectName,
+ /* [out] */ FILETIME __RPC_FAR *pfiletime);
+
+
+void __RPC_STUB IRunningObjectTable_GetTimeOfLastChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Proxy(
+ IRunningObjectTable __RPC_FAR * This,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker);
+
+
+void __RPC_STUB IRunningObjectTable_EnumRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRunningObjectTable_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersist_INTERFACE_DEFINED__
+#define __IPersist_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersist
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IPersist __RPC_FAR *LPPERSIST;
+
+
+EXTERN_C const IID IID_IPersist;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersist : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetClassID(
+ /* [out] */ CLSID __RPC_FAR *pClassID) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersist __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersist __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersist __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersist __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ END_INTERFACE
+ } IPersistVtbl;
+
+ interface IPersist
+ {
+ CONST_VTBL struct IPersistVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersist_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersist_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersist_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersist_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersist_GetClassID_Proxy(
+ IPersist __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+
+void __RPC_STUB IPersist_GetClassID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersist_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersistStream_INTERFACE_DEFINED__
+#define __IPersistStream_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersistStream
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPersistStream __RPC_FAR *LPPERSISTSTREAM;
+
+
+EXTERN_C const IID IID_IPersistStream;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersistStream : public IPersist
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Load(
+ /* [unique][in] */ IStream __RPC_FAR *pStm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Save(
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ BOOL fClearDirty) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSizeMax(
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbSize) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistStreamVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersistStream __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersistStream __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersistStream __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersistStream __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IPersistStream __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IPersistStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IPersistStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ BOOL fClearDirty);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSizeMax )(
+ IPersistStream __RPC_FAR * This,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbSize);
+
+ END_INTERFACE
+ } IPersistStreamVtbl;
+
+ interface IPersistStream
+ {
+ CONST_VTBL struct IPersistStreamVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersistStream_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersistStream_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersistStream_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersistStream_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IPersistStream_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IPersistStream_Load(This,pStm) \
+ (This)->lpVtbl -> Load(This,pStm)
+
+#define IPersistStream_Save(This,pStm,fClearDirty) \
+ (This)->lpVtbl -> Save(This,pStm,fClearDirty)
+
+#define IPersistStream_GetSizeMax(This,pcbSize) \
+ (This)->lpVtbl -> GetSizeMax(This,pcbSize)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersistStream_IsDirty_Proxy(
+ IPersistStream __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistStream_IsDirty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStream_Load_Proxy(
+ IPersistStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm);
+
+
+void __RPC_STUB IPersistStream_Load_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStream_Save_Proxy(
+ IPersistStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ BOOL fClearDirty);
+
+
+void __RPC_STUB IPersistStream_Save_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStream_GetSizeMax_Proxy(
+ IPersistStream __RPC_FAR * This,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbSize);
+
+
+void __RPC_STUB IPersistStream_GetSizeMax_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersistStream_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMoniker_INTERFACE_DEFINED__
+#define __IMoniker_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMoniker
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IMoniker __RPC_FAR *LPMONIKER;
+
+typedef
+enum tagMKSYS
+ { MKSYS_NONE = 0,
+ MKSYS_GENERICCOMPOSITE = 1,
+ MKSYS_FILEMONIKER = 2,
+ MKSYS_ANTIMONIKER = 3,
+ MKSYS_ITEMMONIKER = 4,
+ MKSYS_POINTERMONIKER = 5,
+ MKSYS_CLASSMONIKER = 7
+ } MKSYS;
+
+typedef /* [v1_enum] */
+enum tagMKREDUCE
+ { MKRREDUCE_ONE = 3 << 16,
+ MKRREDUCE_TOUSER = 2 << 16,
+ MKRREDUCE_THROUGHUSER = 1 << 16,
+ MKRREDUCE_ALL = 0
+ } MKRREDUCE;
+
+
+EXTERN_C const IID IID_IMoniker;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMoniker : public IPersistStream
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE BindToObject(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE BindToStorage(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObj) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reduce(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ DWORD dwReduceHowFar,
+ /* [unique][out][in] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkToLeft,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkReduced) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ComposeWith(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkRight,
+ /* [in] */ BOOL fOnlyIfNotGeneric,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkComposite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Enum(
+ /* [in] */ BOOL fForward,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsEqual(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOtherMoniker) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Hash(
+ /* [out] */ DWORD __RPC_FAR *pdwHash) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsRunning(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkNewlyRunning) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ FILETIME __RPC_FAR *pFileTime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Inverse(
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CommonPrefixWith(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkPrefix) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RelativePathTo(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkRelPath) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsSystemMoniker(
+ /* [out] */ DWORD __RPC_FAR *pdwMksys) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMonikerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMoniker __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMoniker __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMoniker __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IMoniker __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pStm,
+ /* [in] */ BOOL fClearDirty);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSizeMax )(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbSize);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BindToObject )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BindToStorage )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reduce )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ DWORD dwReduceHowFar,
+ /* [unique][out][in] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkToLeft,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkReduced);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ComposeWith )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkRight,
+ /* [in] */ BOOL fOnlyIfNotGeneric,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkComposite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Enum )(
+ IMoniker __RPC_FAR * This,
+ /* [in] */ BOOL fForward,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsEqual )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOtherMoniker);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Hash )(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwHash);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsRunning )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkNewlyRunning);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTimeOfLastChange )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ FILETIME __RPC_FAR *pFileTime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Inverse )(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CommonPrefixWith )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkPrefix);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RelativePathTo )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkRelPath);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDisplayName )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ParseDisplayName )(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsSystemMoniker )(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwMksys);
+
+ END_INTERFACE
+ } IMonikerVtbl;
+
+ interface IMoniker
+ {
+ CONST_VTBL struct IMonikerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMoniker_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMoniker_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMoniker_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMoniker_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IMoniker_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IMoniker_Load(This,pStm) \
+ (This)->lpVtbl -> Load(This,pStm)
+
+#define IMoniker_Save(This,pStm,fClearDirty) \
+ (This)->lpVtbl -> Save(This,pStm,fClearDirty)
+
+#define IMoniker_GetSizeMax(This,pcbSize) \
+ (This)->lpVtbl -> GetSizeMax(This,pcbSize)
+
+
+#define IMoniker_BindToObject(This,pbc,pmkToLeft,riidResult,ppvResult) \
+ (This)->lpVtbl -> BindToObject(This,pbc,pmkToLeft,riidResult,ppvResult)
+
+#define IMoniker_BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) \
+ (This)->lpVtbl -> BindToStorage(This,pbc,pmkToLeft,riid,ppvObj)
+
+#define IMoniker_Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced) \
+ (This)->lpVtbl -> Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced)
+
+#define IMoniker_ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) \
+ (This)->lpVtbl -> ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite)
+
+#define IMoniker_Enum(This,fForward,ppenumMoniker) \
+ (This)->lpVtbl -> Enum(This,fForward,ppenumMoniker)
+
+#define IMoniker_IsEqual(This,pmkOtherMoniker) \
+ (This)->lpVtbl -> IsEqual(This,pmkOtherMoniker)
+
+#define IMoniker_Hash(This,pdwHash) \
+ (This)->lpVtbl -> Hash(This,pdwHash)
+
+#define IMoniker_IsRunning(This,pbc,pmkToLeft,pmkNewlyRunning) \
+ (This)->lpVtbl -> IsRunning(This,pbc,pmkToLeft,pmkNewlyRunning)
+
+#define IMoniker_GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) \
+ (This)->lpVtbl -> GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime)
+
+#define IMoniker_Inverse(This,ppmk) \
+ (This)->lpVtbl -> Inverse(This,ppmk)
+
+#define IMoniker_CommonPrefixWith(This,pmkOther,ppmkPrefix) \
+ (This)->lpVtbl -> CommonPrefixWith(This,pmkOther,ppmkPrefix)
+
+#define IMoniker_RelativePathTo(This,pmkOther,ppmkRelPath) \
+ (This)->lpVtbl -> RelativePathTo(This,pmkOther,ppmkRelPath)
+
+#define IMoniker_GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) \
+ (This)->lpVtbl -> GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName)
+
+#define IMoniker_ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) \
+ (This)->lpVtbl -> ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut)
+
+#define IMoniker_IsSystemMoniker(This,pdwMksys) \
+ (This)->lpVtbl -> IsSystemMoniker(This,pdwMksys)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvResult);
+
+
+void __RPC_STUB IMoniker_RemoteBindToObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+void __RPC_STUB IMoniker_RemoteBindToStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_Reduce_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ DWORD dwReduceHowFar,
+ /* [unique][out][in] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkToLeft,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkReduced);
+
+
+void __RPC_STUB IMoniker_Reduce_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_ComposeWith_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkRight,
+ /* [in] */ BOOL fOnlyIfNotGeneric,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkComposite);
+
+
+void __RPC_STUB IMoniker_ComposeWith_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_Enum_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [in] */ BOOL fForward,
+ /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker);
+
+
+void __RPC_STUB IMoniker_Enum_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_IsEqual_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOtherMoniker);
+
+
+void __RPC_STUB IMoniker_IsEqual_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_Hash_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwHash);
+
+
+void __RPC_STUB IMoniker_Hash_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_IsRunning_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkNewlyRunning);
+
+
+void __RPC_STUB IMoniker_IsRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ FILETIME __RPC_FAR *pFileTime);
+
+
+void __RPC_STUB IMoniker_GetTimeOfLastChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_Inverse_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IMoniker_Inverse_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkPrefix);
+
+
+void __RPC_STUB IMoniker_CommonPrefixWith_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_RelativePathTo_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkRelPath);
+
+
+void __RPC_STUB IMoniker_RelativePathTo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_GetDisplayName_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName);
+
+
+void __RPC_STUB IMoniker_GetDisplayName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_ParseDisplayName_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+
+void __RPC_STUB IMoniker_ParseDisplayName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwMksys);
+
+
+void __RPC_STUB IMoniker_IsSystemMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMoniker_INTERFACE_DEFINED__ */
+
+
+#ifndef __IROTData_INTERFACE_DEFINED__
+#define __IROTData_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IROTData
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IROTData;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IROTData : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetComparisonData(
+ /* [size_is][out] */ byte __RPC_FAR *pbData,
+ /* [in] */ ULONG cbMax,
+ /* [out] */ ULONG __RPC_FAR *pcbData) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IROTDataVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IROTData __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IROTData __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IROTData __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetComparisonData )(
+ IROTData __RPC_FAR * This,
+ /* [size_is][out] */ byte __RPC_FAR *pbData,
+ /* [in] */ ULONG cbMax,
+ /* [out] */ ULONG __RPC_FAR *pcbData);
+
+ END_INTERFACE
+ } IROTDataVtbl;
+
+ interface IROTData
+ {
+ CONST_VTBL struct IROTDataVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IROTData_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IROTData_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IROTData_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IROTData_GetComparisonData(This,pbData,cbMax,pcbData) \
+ (This)->lpVtbl -> GetComparisonData(This,pbData,cbMax,pcbData)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IROTData_GetComparisonData_Proxy(
+ IROTData __RPC_FAR * This,
+ /* [size_is][out] */ byte __RPC_FAR *pbData,
+ /* [in] */ ULONG cbMax,
+ /* [out] */ ULONG __RPC_FAR *pcbData);
+
+
+void __RPC_STUB IROTData_GetComparisonData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IROTData_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumString_INTERFACE_DEFINED__
+#define __IEnumString_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumString
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumString __RPC_FAR *LPENUMSTRING;
+
+
+EXTERN_C const IID IID_IEnumString;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumString : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLESTR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumStringVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumString __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumString __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLESTR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumString __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumString __RPC_FAR * This,
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumStringVtbl;
+
+ interface IEnumString
+ {
+ CONST_VTBL struct IEnumStringVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumString_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumString_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumString_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumString_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumString_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumString_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumString_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumString_RemoteNext_Proxy(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLESTR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumString_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumString_Skip_Proxy(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumString_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumString_Reset_Proxy(
+ IEnumString __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumString_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumString_Clone_Proxy(
+ IEnumString __RPC_FAR * This,
+ /* [out] */ IEnumString __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumString_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumString_INTERFACE_DEFINED__ */
+
+
+#ifndef __ISequentialStream_INTERFACE_DEFINED__
+#define __ISequentialStream_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISequentialStream
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ISequentialStream;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISequentialStream : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Read(
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Write(
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISequentialStreamVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISequentialStream __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISequentialStream __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISequentialStream __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Read )(
+ ISequentialStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Write )(
+ ISequentialStream __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ END_INTERFACE
+ } ISequentialStreamVtbl;
+
+ interface ISequentialStream
+ {
+ CONST_VTBL struct ISequentialStreamVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISequentialStream_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISequentialStream_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISequentialStream_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISequentialStream_Read(This,pv,cb,pcbRead) \
+ (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
+
+#define ISequentialStream_Write(This,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ISequentialStream_RemoteRead_Proxy(
+ ISequentialStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+
+void __RPC_STUB ISequentialStream_RemoteRead_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ISequentialStream_RemoteWrite_Proxy(
+ ISequentialStream __RPC_FAR * This,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+void __RPC_STUB ISequentialStream_RemoteWrite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISequentialStream_INTERFACE_DEFINED__ */
+
+
+#ifndef __IStream_INTERFACE_DEFINED__
+#define __IStream_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IStream
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IStream __RPC_FAR *LPSTREAM;
+
+typedef struct tagSTATSTG
+ {
+ LPOLESTR pwcsName;
+ DWORD type;
+ ULARGE_INTEGER cbSize;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD grfMode;
+ DWORD grfLocksSupported;
+ CLSID clsid;
+ DWORD grfStateBits;
+ DWORD reserved;
+ } STATSTG;
+
+typedef
+enum tagSTGTY
+ { STGTY_STORAGE = 1,
+ STGTY_STREAM = 2,
+ STGTY_LOCKBYTES = 3,
+ STGTY_PROPERTY = 4
+ } STGTY;
+
+typedef
+enum tagSTREAM_SEEK
+ { STREAM_SEEK_SET = 0,
+ STREAM_SEEK_CUR = 1,
+ STREAM_SEEK_END = 2
+ } STREAM_SEEK;
+
+typedef
+enum tagLOCKTYPE
+ { LOCK_WRITE = 1,
+ LOCK_EXCLUSIVE = 2,
+ LOCK_ONLYONCE = 4
+ } LOCKTYPE;
+
+
+EXTERN_C const IID IID_IStream;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IStream : public ISequentialStream
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Seek(
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSize(
+ /* [in] */ ULARGE_INTEGER libNewSize) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE CopyTo(
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Commit(
+ /* [in] */ DWORD grfCommitFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockRegion(
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Stat(
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IStreamVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IStream __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IStream __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IStream __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Read )(
+ IStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Write )(
+ IStream __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Seek )(
+ IStream __RPC_FAR * This,
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSize )(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libNewSize);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CopyTo )(
+ IStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ IStream __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Revert )(
+ IStream __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockRegion )(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UnlockRegion )(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stat )(
+ IStream __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IStream __RPC_FAR * This,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+ END_INTERFACE
+ } IStreamVtbl;
+
+ interface IStream
+ {
+ CONST_VTBL struct IStreamVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IStream_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IStream_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IStream_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IStream_Read(This,pv,cb,pcbRead) \
+ (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
+
+#define IStream_Write(This,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
+
+
+#define IStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) \
+ (This)->lpVtbl -> Seek(This,dlibMove,dwOrigin,plibNewPosition)
+
+#define IStream_SetSize(This,libNewSize) \
+ (This)->lpVtbl -> SetSize(This,libNewSize)
+
+#define IStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) \
+ (This)->lpVtbl -> CopyTo(This,pstm,cb,pcbRead,pcbWritten)
+
+#define IStream_Commit(This,grfCommitFlags) \
+ (This)->lpVtbl -> Commit(This,grfCommitFlags)
+
+#define IStream_Revert(This) \
+ (This)->lpVtbl -> Revert(This)
+
+#define IStream_LockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
+
+#define IStream_UnlockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
+
+#define IStream_Stat(This,pstatstg,grfStatFlag) \
+ (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
+
+#define IStream_Clone(This,ppstm) \
+ (This)->lpVtbl -> Clone(This,ppstm)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStream_RemoteSeek_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition);
+
+
+void __RPC_STUB IStream_RemoteSeek_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_SetSize_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libNewSize);
+
+
+void __RPC_STUB IStream_SetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStream_RemoteCopyTo_Proxy(
+ IStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten);
+
+
+void __RPC_STUB IStream_RemoteCopyTo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_Commit_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+
+void __RPC_STUB IStream_Commit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_Revert_Proxy(
+ IStream __RPC_FAR * This);
+
+
+void __RPC_STUB IStream_Revert_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_LockRegion_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+
+void __RPC_STUB IStream_LockRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_UnlockRegion_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+
+void __RPC_STUB IStream_UnlockRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_Stat_Proxy(
+ IStream __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+
+void __RPC_STUB IStream_Stat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStream_Clone_Proxy(
+ IStream __RPC_FAR * This,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+
+void __RPC_STUB IStream_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IStream_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumSTATSTG_INTERFACE_DEFINED__
+#define __IEnumSTATSTG_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumSTATSTG
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumSTATSTG __RPC_FAR *LPENUMSTATSTG;
+
+
+EXTERN_C const IID IID_IEnumSTATSTG;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumSTATSTG : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumSTATSTGVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumSTATSTG __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumSTATSTG __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumSTATSTG __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumSTATSTGVtbl;
+
+ interface IEnumSTATSTG
+ {
+ CONST_VTBL struct IEnumSTATSTGVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumSTATSTG_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumSTATSTG_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumSTATSTG_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumSTATSTG_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumSTATSTG_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumSTATSTG_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumSTATSTG_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Proxy(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumSTATSTG_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Skip_Proxy(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumSTATSTG_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Reset_Proxy(
+ IEnumSTATSTG __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumSTATSTG_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Clone_Proxy(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumSTATSTG_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumSTATSTG_INTERFACE_DEFINED__ */
+
+
+#ifndef __IStorage_INTERFACE_DEFINED__
+#define __IStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IStorage
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IStorage __RPC_FAR *LPSTORAGE;
+
+typedef struct tagRemSNB
+ {
+ unsigned long ulCntStr;
+ unsigned long ulCntChar;
+ /* [size_is] */ OLECHAR rgString[ 1 ];
+ } RemSNB;
+
+typedef /* [unique] */ RemSNB __RPC_FAR *wireSNB;
+
+typedef /* [wire_marshal] */ OLECHAR __RPC_FAR *__RPC_FAR *SNB;
+
+
+EXTERN_C const IID IID_IStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateStream(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved1,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE OpenStream(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ void __RPC_FAR *reserved1,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateStorage(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD dwStgFmt,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OpenStorage(
+ /* [string][unique][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgPriority,
+ /* [in] */ DWORD grfMode,
+ /* [unique][in] */ SNB snbExclude,
+ /* [in] */ DWORD reserved,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CopyTo(
+ /* [in] */ DWORD ciidExclude,
+ /* [size_is][unique][in] */ const IID __RPC_FAR *rgiidExclude,
+ /* [unique][in] */ SNB snbExclude,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MoveElementTo(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName,
+ /* [in] */ DWORD grfFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Commit(
+ /* [in] */ DWORD grfCommitFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE EnumElements(
+ /* [in] */ DWORD reserved1,
+ /* [size_is][unique][in] */ void __RPC_FAR *reserved2,
+ /* [in] */ DWORD reserved3,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DestroyElement(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RenameElement(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsOldName,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetElementTimes(
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetClass(
+ /* [in] */ REFCLSID clsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetStateBits(
+ /* [in] */ DWORD grfStateBits,
+ /* [in] */ DWORD grfMask) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Stat(
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateStream )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved1,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OpenStream )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ void __RPC_FAR *reserved1,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateStorage )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD dwStgFmt,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OpenStorage )(
+ IStorage __RPC_FAR * This,
+ /* [string][unique][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgPriority,
+ /* [in] */ DWORD grfMode,
+ /* [unique][in] */ SNB snbExclude,
+ /* [in] */ DWORD reserved,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CopyTo )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD ciidExclude,
+ /* [size_is][unique][in] */ const IID __RPC_FAR *rgiidExclude,
+ /* [unique][in] */ SNB snbExclude,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *MoveElementTo )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName,
+ /* [in] */ DWORD grfFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Revert )(
+ IStorage __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumElements )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD reserved1,
+ /* [size_is][unique][in] */ void __RPC_FAR *reserved2,
+ /* [in] */ DWORD reserved3,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DestroyElement )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RenameElement )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsOldName,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetElementTimes )(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetClass )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ REFCLSID clsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetStateBits )(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfStateBits,
+ /* [in] */ DWORD grfMask);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stat )(
+ IStorage __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+ END_INTERFACE
+ } IStorageVtbl;
+
+ interface IStorage
+ {
+ CONST_VTBL struct IStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IStorage_CreateStream(This,pwcsName,grfMode,reserved1,reserved2,ppstm) \
+ (This)->lpVtbl -> CreateStream(This,pwcsName,grfMode,reserved1,reserved2,ppstm)
+
+#define IStorage_OpenStream(This,pwcsName,reserved1,grfMode,reserved2,ppstm) \
+ (This)->lpVtbl -> OpenStream(This,pwcsName,reserved1,grfMode,reserved2,ppstm)
+
+#define IStorage_CreateStorage(This,pwcsName,grfMode,dwStgFmt,reserved2,ppstg) \
+ (This)->lpVtbl -> CreateStorage(This,pwcsName,grfMode,dwStgFmt,reserved2,ppstg)
+
+#define IStorage_OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) \
+ (This)->lpVtbl -> OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg)
+
+#define IStorage_CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) \
+ (This)->lpVtbl -> CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest)
+
+#define IStorage_MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) \
+ (This)->lpVtbl -> MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags)
+
+#define IStorage_Commit(This,grfCommitFlags) \
+ (This)->lpVtbl -> Commit(This,grfCommitFlags)
+
+#define IStorage_Revert(This) \
+ (This)->lpVtbl -> Revert(This)
+
+#define IStorage_EnumElements(This,reserved1,reserved2,reserved3,ppenum) \
+ (This)->lpVtbl -> EnumElements(This,reserved1,reserved2,reserved3,ppenum)
+
+#define IStorage_DestroyElement(This,pwcsName) \
+ (This)->lpVtbl -> DestroyElement(This,pwcsName)
+
+#define IStorage_RenameElement(This,pwcsOldName,pwcsNewName) \
+ (This)->lpVtbl -> RenameElement(This,pwcsOldName,pwcsNewName)
+
+#define IStorage_SetElementTimes(This,pwcsName,pctime,patime,pmtime) \
+ (This)->lpVtbl -> SetElementTimes(This,pwcsName,pctime,patime,pmtime)
+
+#define IStorage_SetClass(This,clsid) \
+ (This)->lpVtbl -> SetClass(This,clsid)
+
+#define IStorage_SetStateBits(This,grfStateBits,grfMask) \
+ (This)->lpVtbl -> SetStateBits(This,grfStateBits,grfMask)
+
+#define IStorage_Stat(This,pstatstg,grfStatFlag) \
+ (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IStorage_CreateStream_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved1,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+
+void __RPC_STUB IStorage_CreateStream_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStorage_RemoteOpenStream_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ unsigned long cbReserved1,
+ /* [size_is][unique][in] */ byte __RPC_FAR *reserved1,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+
+void __RPC_STUB IStorage_RemoteOpenStream_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_CreateStorage_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD dwStgFmt,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg);
+
+
+void __RPC_STUB IStorage_CreateStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_OpenStorage_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][unique][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgPriority,
+ /* [in] */ DWORD grfMode,
+ /* [unique][in] */ SNB snbExclude,
+ /* [in] */ DWORD reserved,
+ /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg);
+
+
+void __RPC_STUB IStorage_OpenStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_CopyTo_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD ciidExclude,
+ /* [size_is][unique][in] */ const IID __RPC_FAR *rgiidExclude,
+ /* [unique][in] */ SNB snbExclude,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest);
+
+
+void __RPC_STUB IStorage_CopyTo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_MoveElementTo_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgDest,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName,
+ /* [in] */ DWORD grfFlags);
+
+
+void __RPC_STUB IStorage_MoveElementTo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_Commit_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+
+void __RPC_STUB IStorage_Commit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_Revert_Proxy(
+ IStorage __RPC_FAR * This);
+
+
+void __RPC_STUB IStorage_Revert_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStorage_RemoteEnumElements_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD reserved1,
+ /* [in] */ unsigned long cbReserved2,
+ /* [size_is][unique][in] */ byte __RPC_FAR *reserved2,
+ /* [in] */ DWORD reserved3,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IStorage_RemoteEnumElements_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_DestroyElement_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName);
+
+
+void __RPC_STUB IStorage_DestroyElement_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_RenameElement_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsOldName,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName);
+
+
+void __RPC_STUB IStorage_RenameElement_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_SetElementTimes_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime);
+
+
+void __RPC_STUB IStorage_SetElementTimes_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_SetClass_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ REFCLSID clsid);
+
+
+void __RPC_STUB IStorage_SetClass_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_SetStateBits_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfStateBits,
+ /* [in] */ DWORD grfMask);
+
+
+void __RPC_STUB IStorage_SetStateBits_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IStorage_Stat_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+
+void __RPC_STUB IStorage_Stat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersistFile_INTERFACE_DEFINED__
+#define __IPersistFile_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersistFile
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPersistFile __RPC_FAR *LPPERSISTFILE;
+
+
+EXTERN_C const IID IID_IPersistFile;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersistFile : public IPersist
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Load(
+ /* [in] */ LPCOLESTR pszFileName,
+ /* [in] */ DWORD dwMode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Save(
+ /* [unique][in] */ LPCOLESTR pszFileName,
+ /* [in] */ BOOL fRemember) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
+ /* [unique][in] */ LPCOLESTR pszFileName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCurFile(
+ /* [out] */ LPOLESTR __RPC_FAR *ppszFileName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistFileVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersistFile __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersistFile __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersistFile __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersistFile __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IPersistFile __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IPersistFile __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszFileName,
+ /* [in] */ DWORD dwMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IPersistFile __RPC_FAR * This,
+ /* [unique][in] */ LPCOLESTR pszFileName,
+ /* [in] */ BOOL fRemember);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveCompleted )(
+ IPersistFile __RPC_FAR * This,
+ /* [unique][in] */ LPCOLESTR pszFileName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCurFile )(
+ IPersistFile __RPC_FAR * This,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszFileName);
+
+ END_INTERFACE
+ } IPersistFileVtbl;
+
+ interface IPersistFile
+ {
+ CONST_VTBL struct IPersistFileVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersistFile_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersistFile_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersistFile_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersistFile_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IPersistFile_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IPersistFile_Load(This,pszFileName,dwMode) \
+ (This)->lpVtbl -> Load(This,pszFileName,dwMode)
+
+#define IPersistFile_Save(This,pszFileName,fRemember) \
+ (This)->lpVtbl -> Save(This,pszFileName,fRemember)
+
+#define IPersistFile_SaveCompleted(This,pszFileName) \
+ (This)->lpVtbl -> SaveCompleted(This,pszFileName)
+
+#define IPersistFile_GetCurFile(This,ppszFileName) \
+ (This)->lpVtbl -> GetCurFile(This,ppszFileName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersistFile_IsDirty_Proxy(
+ IPersistFile __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistFile_IsDirty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistFile_Load_Proxy(
+ IPersistFile __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszFileName,
+ /* [in] */ DWORD dwMode);
+
+
+void __RPC_STUB IPersistFile_Load_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistFile_Save_Proxy(
+ IPersistFile __RPC_FAR * This,
+ /* [unique][in] */ LPCOLESTR pszFileName,
+ /* [in] */ BOOL fRemember);
+
+
+void __RPC_STUB IPersistFile_Save_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistFile_SaveCompleted_Proxy(
+ IPersistFile __RPC_FAR * This,
+ /* [unique][in] */ LPCOLESTR pszFileName);
+
+
+void __RPC_STUB IPersistFile_SaveCompleted_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistFile_GetCurFile_Proxy(
+ IPersistFile __RPC_FAR * This,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszFileName);
+
+
+void __RPC_STUB IPersistFile_GetCurFile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersistFile_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersistStorage_INTERFACE_DEFINED__
+#define __IPersistStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersistStorage
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPersistStorage __RPC_FAR *LPPERSISTSTORAGE;
+
+
+EXTERN_C const IID IID_IPersistStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersistStorage : public IPersist
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitNew(
+ /* [unique][in] */ IStorage __RPC_FAR *pStg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Load(
+ /* [unique][in] */ IStorage __RPC_FAR *pStg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Save(
+ /* [unique][in] */ IStorage __RPC_FAR *pStgSave,
+ /* [in] */ BOOL fSameAsLoad) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
+ /* [unique][in] */ IStorage __RPC_FAR *pStgNew) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE HandsOffStorage( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersistStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersistStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersistStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersistStorage __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IPersistStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitNew )(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStgSave,
+ /* [in] */ BOOL fSameAsLoad);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveCompleted )(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStgNew);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *HandsOffStorage )(
+ IPersistStorage __RPC_FAR * This);
+
+ END_INTERFACE
+ } IPersistStorageVtbl;
+
+ interface IPersistStorage
+ {
+ CONST_VTBL struct IPersistStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersistStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersistStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersistStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersistStorage_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IPersistStorage_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IPersistStorage_InitNew(This,pStg) \
+ (This)->lpVtbl -> InitNew(This,pStg)
+
+#define IPersistStorage_Load(This,pStg) \
+ (This)->lpVtbl -> Load(This,pStg)
+
+#define IPersistStorage_Save(This,pStgSave,fSameAsLoad) \
+ (This)->lpVtbl -> Save(This,pStgSave,fSameAsLoad)
+
+#define IPersistStorage_SaveCompleted(This,pStgNew) \
+ (This)->lpVtbl -> SaveCompleted(This,pStgNew)
+
+#define IPersistStorage_HandsOffStorage(This) \
+ (This)->lpVtbl -> HandsOffStorage(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_IsDirty_Proxy(
+ IPersistStorage __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistStorage_IsDirty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_InitNew_Proxy(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStg);
+
+
+void __RPC_STUB IPersistStorage_InitNew_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_Load_Proxy(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStg);
+
+
+void __RPC_STUB IPersistStorage_Load_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_Save_Proxy(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStgSave,
+ /* [in] */ BOOL fSameAsLoad);
+
+
+void __RPC_STUB IPersistStorage_Save_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Proxy(
+ IPersistStorage __RPC_FAR * This,
+ /* [unique][in] */ IStorage __RPC_FAR *pStgNew);
+
+
+void __RPC_STUB IPersistStorage_SaveCompleted_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Proxy(
+ IPersistStorage __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistStorage_HandsOffStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersistStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __ILockBytes_INTERFACE_DEFINED__
+#define __ILockBytes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ILockBytes
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ ILockBytes __RPC_FAR *LPLOCKBYTES;
+
+
+EXTERN_C const IID IID_ILockBytes;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ILockBytes : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE ReadAt(
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE WriteAt(
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSize(
+ /* [in] */ ULARGE_INTEGER cb) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockRegion(
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Stat(
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ILockBytesVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ILockBytes __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ILockBytes __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReadAt )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *WriteAt )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Flush )(
+ ILockBytes __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSize )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER cb);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockRegion )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UnlockRegion )(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stat )(
+ ILockBytes __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+ END_INTERFACE
+ } ILockBytesVtbl;
+
+ interface ILockBytes
+ {
+ CONST_VTBL struct ILockBytesVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ILockBytes_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ILockBytes_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ILockBytes_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ILockBytes_ReadAt(This,ulOffset,pv,cb,pcbRead) \
+ (This)->lpVtbl -> ReadAt(This,ulOffset,pv,cb,pcbRead)
+
+#define ILockBytes_WriteAt(This,ulOffset,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> WriteAt(This,ulOffset,pv,cb,pcbWritten)
+
+#define ILockBytes_Flush(This) \
+ (This)->lpVtbl -> Flush(This)
+
+#define ILockBytes_SetSize(This,cb) \
+ (This)->lpVtbl -> SetSize(This,cb)
+
+#define ILockBytes_LockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
+
+#define ILockBytes_UnlockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
+
+#define ILockBytes_Stat(This,pstatstg,grfStatFlag) \
+ (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT __stdcall ILockBytes_RemoteReadAt_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [length_is][size_is][out] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+
+void __RPC_STUB ILockBytes_RemoteReadAt_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+void __RPC_STUB ILockBytes_RemoteWriteAt_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ILockBytes_Flush_Proxy(
+ ILockBytes __RPC_FAR * This);
+
+
+void __RPC_STUB ILockBytes_Flush_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ILockBytes_SetSize_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER cb);
+
+
+void __RPC_STUB ILockBytes_SetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ILockBytes_LockRegion_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+
+void __RPC_STUB ILockBytes_LockRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ILockBytes_UnlockRegion_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+
+void __RPC_STUB ILockBytes_UnlockRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ILockBytes_Stat_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+
+void __RPC_STUB ILockBytes_Stat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ILockBytes_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumFORMATETC_INTERFACE_DEFINED__
+#define __IEnumFORMATETC_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumFORMATETC
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumFORMATETC __RPC_FAR *LPENUMFORMATETC;
+
+typedef struct tagDVTARGETDEVICE
+ {
+ DWORD tdSize;
+ WORD tdDriverNameOffset;
+ WORD tdDeviceNameOffset;
+ WORD tdPortNameOffset;
+ WORD tdExtDevmodeOffset;
+ /* [size_is] */ BYTE tdData[ 1 ];
+ } DVTARGETDEVICE;
+
+typedef CLIPFORMAT __RPC_FAR *LPCLIPFORMAT;
+
+typedef struct tagFORMATETC
+ {
+ CLIPFORMAT cfFormat;
+ /* [unique] */ DVTARGETDEVICE __RPC_FAR *ptd;
+ DWORD dwAspect;
+ LONG lindex;
+ DWORD tymed;
+ } FORMATETC;
+
+typedef struct tagFORMATETC __RPC_FAR *LPFORMATETC;
+
+
+EXTERN_C const IID IID_IEnumFORMATETC;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumFORMATETC : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ FORMATETC __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumFORMATETCVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumFORMATETC __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumFORMATETC __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ FORMATETC __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumFORMATETC __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumFORMATETCVtbl;
+
+ interface IEnumFORMATETC
+ {
+ CONST_VTBL struct IEnumFORMATETCVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumFORMATETC_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumFORMATETC_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumFORMATETC_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumFORMATETC_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumFORMATETC_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumFORMATETC_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumFORMATETC_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Proxy(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ FORMATETC __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumFORMATETC_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Skip_Proxy(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumFORMATETC_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Reset_Proxy(
+ IEnumFORMATETC __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumFORMATETC_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Clone_Proxy(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumFORMATETC_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumFORMATETC_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumSTATDATA_INTERFACE_DEFINED__
+#define __IEnumSTATDATA_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumSTATDATA
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumSTATDATA __RPC_FAR *LPENUMSTATDATA;
+
+typedef
+enum tagADVF
+ { ADVF_NODATA = 1,
+ ADVF_PRIMEFIRST = 2,
+ ADVF_ONLYONCE = 4,
+ ADVF_DATAONSTOP = 64,
+ ADVFCACHE_NOHANDLER = 8,
+ ADVFCACHE_FORCEBUILTIN = 16,
+ ADVFCACHE_ONSAVE = 32
+ } ADVF;
+
+typedef struct tagSTATDATA
+ {
+ FORMATETC formatetc;
+ DWORD advf;
+ /* [unique] */ IAdviseSink __RPC_FAR *pAdvSink;
+ DWORD dwConnection;
+ } STATDATA;
+
+typedef STATDATA __RPC_FAR *LPSTATDATA;
+
+
+EXTERN_C const IID IID_IEnumSTATDATA;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumSTATDATA : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDATA __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumSTATDATAVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumSTATDATA __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumSTATDATA __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDATA __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumSTATDATA __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumSTATDATAVtbl;
+
+ interface IEnumSTATDATA
+ {
+ CONST_VTBL struct IEnumSTATDATAVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumSTATDATA_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumSTATDATA_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumSTATDATA_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumSTATDATA_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumSTATDATA_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumSTATDATA_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumSTATDATA_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Proxy(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDATA __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumSTATDATA_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Skip_Proxy(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumSTATDATA_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Reset_Proxy(
+ IEnumSTATDATA __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumSTATDATA_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Clone_Proxy(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumSTATDATA_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumSTATDATA_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRootStorage_INTERFACE_DEFINED__
+#define __IRootStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRootStorage
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IRootStorage __RPC_FAR *LPROOTSTORAGE;
+
+
+EXTERN_C const IID IID_IRootStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRootStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SwitchToFile(
+ /* [in] */ LPOLESTR pszFile) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRootStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRootStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRootStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRootStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SwitchToFile )(
+ IRootStorage __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszFile);
+
+ END_INTERFACE
+ } IRootStorageVtbl;
+
+ interface IRootStorage
+ {
+ CONST_VTBL struct IRootStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRootStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRootStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRootStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRootStorage_SwitchToFile(This,pszFile) \
+ (This)->lpVtbl -> SwitchToFile(This,pszFile)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRootStorage_SwitchToFile_Proxy(
+ IRootStorage __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszFile);
+
+
+void __RPC_STUB IRootStorage_SwitchToFile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRootStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAdviseSink_INTERFACE_DEFINED__
+#define __IAdviseSink_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAdviseSink
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IAdviseSink __RPC_FAR *LPADVISESINK;
+
+typedef /* [v1_enum] */
+enum tagTYMED
+ { TYMED_HGLOBAL = 1,
+ TYMED_FILE = 2,
+ TYMED_ISTREAM = 4,
+ TYMED_ISTORAGE = 8,
+ TYMED_GDI = 16,
+ TYMED_MFPICT = 32,
+ TYMED_ENHMF = 64,
+ TYMED_NULL = 0
+ } TYMED;
+
+#ifndef RC_INVOKED
+#pragma warning(disable:4200)
+#endif
+typedef struct tagRemSTGMEDIUM
+ {
+ DWORD tymed;
+ DWORD dwHandleType;
+ unsigned long pData;
+ unsigned long pUnkForRelease;
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemSTGMEDIUM;
+
+#ifndef RC_INVOKED
+#pragma warning(default:4200)
+#endif
+#ifdef NONAMELESSUNION
+typedef struct tagSTGMEDIUM {
+ DWORD tymed;
+ union {
+ HBITMAP hBitmap;
+ HMETAFILEPICT hMetaFilePict;
+ HENHMETAFILE hEnhMetaFile;
+ HGLOBAL hGlobal;
+ LPOLESTR lpszFileName;
+ IStream *pstm;
+ IStorage *pstg;
+ } u;
+ IUnknown *pUnkForRelease;
+}uSTGMEDIUM;
+#else
+typedef struct tagSTGMEDIUM
+ {
+ DWORD tymed;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ HBITMAP hBitmap;
+ /* [case()] */ HMETAFILEPICT hMetaFilePict;
+ /* [case()] */ HENHMETAFILE hEnhMetaFile;
+ /* [case()] */ HGLOBAL hGlobal;
+ /* [case()] */ LPOLESTR lpszFileName;
+ /* [case()] */ IStream __RPC_FAR *pstm;
+ /* [case()] */ IStorage __RPC_FAR *pstg;
+ /* [default] */ /* Empty union arm */
+ } ;
+ /* [unique] */ IUnknown __RPC_FAR *pUnkForRelease;
+ } uSTGMEDIUM;
+
+#endif /* !NONAMELESSUNION */
+typedef struct _GDI_OBJECT
+ {
+ DWORD ObjectType;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IAdviseSink_0002
+ {
+ /* [case()] */ wireHBITMAP hBitmap;
+ /* [case()] */ wireHPALETTE hPalette;
+ /* [default] */ wireHGLOBAL hGeneric;
+ } u;
+ } GDI_OBJECT;
+
+typedef struct _userSTGMEDIUM
+ {
+ struct _STGMEDIUM_UNION
+ {
+ DWORD tymed;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IAdviseSink_0003
+ {
+ /* [case()] */ /* Empty union arm */
+ /* [case()] */ wireHMETAFILEPICT hMetaFilePict;
+ /* [case()] */ wireHENHMETAFILE hHEnhMetaFile;
+ /* [case()] */ GDI_OBJECT __RPC_FAR *hGdiHandle;
+ /* [case()] */ wireHGLOBAL hGlobal;
+ /* [case()] */ LPOLESTR lpszFileName;
+ /* [case()] */ BYTE_BLOB __RPC_FAR *pstm;
+ /* [case()] */ BYTE_BLOB __RPC_FAR *pstg;
+ } u;
+ } ;
+ IUnknown __RPC_FAR *pUnkForRelease;
+ } userSTGMEDIUM;
+
+typedef /* [unique] */ userSTGMEDIUM __RPC_FAR *wireSTGMEDIUM;
+
+typedef /* [wire_marshal] */ uSTGMEDIUM STGMEDIUM;
+
+typedef /* [unique] */ userSTGMEDIUM __RPC_FAR *wireASYNC_STGMEDIUM;
+
+typedef /* [wire_marshal] */ STGMEDIUM ASYNC_STGMEDIUM;
+
+typedef STGMEDIUM __RPC_FAR *LPSTGMEDIUM;
+
+typedef struct _userFLAG_STGMEDIUM
+ {
+ long ContextFlags;
+ long fPassOwnership;
+ userSTGMEDIUM Stgmed;
+ } userFLAG_STGMEDIUM;
+
+typedef /* [unique] */ userFLAG_STGMEDIUM __RPC_FAR *wireFLAG_STGMEDIUM;
+
+typedef /* [wire_marshal] */ struct _FLAG_STGMEDIUM
+ {
+ long ContextFlags;
+ long fPassOwnership;
+ STGMEDIUM Stgmed;
+ } FLAG_STGMEDIUM;
+
+
+EXTERN_C const IID IID_IAdviseSink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAdviseSink : public IUnknown
+ {
+ public:
+ virtual /* [local] */ void STDMETHODCALLTYPE OnDataChange(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE OnViewChange(
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE OnRename(
+ /* [in] */ IMoniker __RPC_FAR *pmk) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE OnSave( void) = 0;
+
+ virtual /* [local] */ void STDMETHODCALLTYPE OnClose( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAdviseSinkVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAdviseSink __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAdviseSink __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnDataChange )(
+ IAdviseSink __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnViewChange )(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnRename )(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnSave )(
+ IAdviseSink __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnClose )(
+ IAdviseSink __RPC_FAR * This);
+
+ END_INTERFACE
+ } IAdviseSinkVtbl;
+
+ interface IAdviseSink
+ {
+ CONST_VTBL struct IAdviseSinkVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAdviseSink_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAdviseSink_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAdviseSink_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAdviseSink_OnDataChange(This,pFormatetc,pStgmed) \
+ (This)->lpVtbl -> OnDataChange(This,pFormatetc,pStgmed)
+
+#define IAdviseSink_OnViewChange(This,dwAspect,lindex) \
+ (This)->lpVtbl -> OnViewChange(This,dwAspect,lindex)
+
+#define IAdviseSink_OnRename(This,pmk) \
+ (This)->lpVtbl -> OnRename(This,pmk)
+
+#define IAdviseSink_OnSave(This) \
+ (This)->lpVtbl -> OnSave(This)
+
+#define IAdviseSink_OnClose(This) \
+ (This)->lpVtbl -> OnClose(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ ASYNC_STGMEDIUM __RPC_FAR *pStgmed);
+
+
+void __RPC_STUB IAdviseSink_RemoteOnDataChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+
+void __RPC_STUB IAdviseSink_RemoteOnViewChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+
+void __RPC_STUB IAdviseSink_RemoteOnRename_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Proxy(
+ IAdviseSink __RPC_FAR * This);
+
+
+void __RPC_STUB IAdviseSink_RemoteOnSave_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Proxy(
+ IAdviseSink __RPC_FAR * This);
+
+
+void __RPC_STUB IAdviseSink_RemoteOnClose_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAdviseSink_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAdviseSink2_INTERFACE_DEFINED__
+#define __IAdviseSink2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAdviseSink2
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IAdviseSink2 __RPC_FAR *LPADVISESINK2;
+
+
+EXTERN_C const IID IID_IAdviseSink2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAdviseSink2 : public IAdviseSink
+ {
+ public:
+ virtual /* [local] */ void STDMETHODCALLTYPE OnLinkSrcChange(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAdviseSink2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAdviseSink2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAdviseSink2 __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnDataChange )(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnViewChange )(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnRename )(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnSave )(
+ IAdviseSink2 __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnClose )(
+ IAdviseSink2 __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnLinkSrcChange )(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+ END_INTERFACE
+ } IAdviseSink2Vtbl;
+
+ interface IAdviseSink2
+ {
+ CONST_VTBL struct IAdviseSink2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAdviseSink2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAdviseSink2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAdviseSink2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAdviseSink2_OnDataChange(This,pFormatetc,pStgmed) \
+ (This)->lpVtbl -> OnDataChange(This,pFormatetc,pStgmed)
+
+#define IAdviseSink2_OnViewChange(This,dwAspect,lindex) \
+ (This)->lpVtbl -> OnViewChange(This,dwAspect,lindex)
+
+#define IAdviseSink2_OnRename(This,pmk) \
+ (This)->lpVtbl -> OnRename(This,pmk)
+
+#define IAdviseSink2_OnSave(This) \
+ (This)->lpVtbl -> OnSave(This)
+
+#define IAdviseSink2_OnClose(This) \
+ (This)->lpVtbl -> OnClose(This)
+
+
+#define IAdviseSink2_OnLinkSrcChange(This,pmk) \
+ (This)->lpVtbl -> OnLinkSrcChange(This,pmk)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Proxy(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+
+void __RPC_STUB IAdviseSink2_RemoteOnLinkSrcChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAdviseSink2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDataObject_INTERFACE_DEFINED__
+#define __IDataObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDataObject
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IDataObject __RPC_FAR *LPDATAOBJECT;
+
+typedef
+enum tagDATADIR
+ { DATADIR_GET = 1,
+ DATADIR_SET = 2
+ } DATADIR;
+
+
+EXTERN_C const IID IID_IDataObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDataObject : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetData(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
+ /* [out] */ STGMEDIUM __RPC_FAR *pmedium) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDataHere(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pmedium) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryGetData(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatectIn,
+ /* [out] */ FORMATETC __RPC_FAR *pformatetcOut) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetData(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumFormatEtc(
+ /* [in] */ DWORD dwDirection,
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenumFormatEtc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DAdvise(
+ /* [in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DUnadvise(
+ /* [in] */ DWORD dwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumDAdvise(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDataObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDataObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDataObject __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetData )(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
+ /* [out] */ STGMEDIUM __RPC_FAR *pmedium);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDataHere )(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pmedium);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryGetData )(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCanonicalFormatEtc )(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatectIn,
+ /* [out] */ FORMATETC __RPC_FAR *pformatetcOut);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetData )(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumFormatEtc )(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDirection,
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenumFormatEtc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DAdvise )(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DUnadvise )(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumDAdvise )(
+ IDataObject __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+ END_INTERFACE
+ } IDataObjectVtbl;
+
+ interface IDataObject
+ {
+ CONST_VTBL struct IDataObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDataObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDataObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDataObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDataObject_GetData(This,pformatetcIn,pmedium) \
+ (This)->lpVtbl -> GetData(This,pformatetcIn,pmedium)
+
+#define IDataObject_GetDataHere(This,pformatetc,pmedium) \
+ (This)->lpVtbl -> GetDataHere(This,pformatetc,pmedium)
+
+#define IDataObject_QueryGetData(This,pformatetc) \
+ (This)->lpVtbl -> QueryGetData(This,pformatetc)
+
+#define IDataObject_GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) \
+ (This)->lpVtbl -> GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut)
+
+#define IDataObject_SetData(This,pformatetc,pmedium,fRelease) \
+ (This)->lpVtbl -> SetData(This,pformatetc,pmedium,fRelease)
+
+#define IDataObject_EnumFormatEtc(This,dwDirection,ppenumFormatEtc) \
+ (This)->lpVtbl -> EnumFormatEtc(This,dwDirection,ppenumFormatEtc)
+
+#define IDataObject_DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) \
+ (This)->lpVtbl -> DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection)
+
+#define IDataObject_DUnadvise(This,dwConnection) \
+ (This)->lpVtbl -> DUnadvise(This,dwConnection)
+
+#define IDataObject_EnumDAdvise(This,ppenumAdvise) \
+ (This)->lpVtbl -> EnumDAdvise(This,ppenumAdvise)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetData_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
+ /* [out] */ STGMEDIUM __RPC_FAR *pRemoteMedium);
+
+
+void __RPC_STUB IDataObject_RemoteGetData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pRemoteMedium);
+
+
+void __RPC_STUB IDataObject_RemoteGetDataHere_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_QueryGetData_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc);
+
+
+void __RPC_STUB IDataObject_QueryGetData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatectIn,
+ /* [out] */ FORMATETC __RPC_FAR *pformatetcOut);
+
+
+void __RPC_STUB IDataObject_GetCanonicalFormatEtc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_RemoteSetData_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ FLAG_STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+
+void __RPC_STUB IDataObject_RemoteSetData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDirection,
+ /* [out] */ IEnumFORMATETC __RPC_FAR *__RPC_FAR *ppenumFormatEtc);
+
+
+void __RPC_STUB IDataObject_EnumFormatEtc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_DAdvise_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+
+void __RPC_STUB IDataObject_DAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_DUnadvise_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+
+void __RPC_STUB IDataObject_DUnadvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataObject_EnumDAdvise_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+
+void __RPC_STUB IDataObject_EnumDAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDataObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDataAdviseHolder_INTERFACE_DEFINED__
+#define __IDataAdviseHolder_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDataAdviseHolder
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IDataAdviseHolder __RPC_FAR *LPDATAADVISEHOLDER;
+
+
+EXTERN_C const IID IID_IDataAdviseHolder;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDataAdviseHolder : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Advise(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unadvise(
+ /* [in] */ DWORD dwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendOnDataChange(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ DWORD dwReserved,
+ /* [in] */ DWORD advf) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDataAdviseHolderVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDataAdviseHolder __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDataAdviseHolder __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Advise )(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unadvise )(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumAdvise )(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SendOnDataChange )(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ DWORD dwReserved,
+ /* [in] */ DWORD advf);
+
+ END_INTERFACE
+ } IDataAdviseHolderVtbl;
+
+ interface IDataAdviseHolder
+ {
+ CONST_VTBL struct IDataAdviseHolderVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDataAdviseHolder_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDataAdviseHolder_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDataAdviseHolder_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDataAdviseHolder_Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) \
+ (This)->lpVtbl -> Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection)
+
+#define IDataAdviseHolder_Unadvise(This,dwConnection) \
+ (This)->lpVtbl -> Unadvise(This,dwConnection)
+
+#define IDataAdviseHolder_EnumAdvise(This,ppenumAdvise) \
+ (This)->lpVtbl -> EnumAdvise(This,ppenumAdvise)
+
+#define IDataAdviseHolder_SendOnDataChange(This,pDataObject,dwReserved,advf) \
+ (This)->lpVtbl -> SendOnDataChange(This,pDataObject,dwReserved,advf)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Advise_Proxy(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFetc,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+
+void __RPC_STUB IDataAdviseHolder_Advise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Proxy(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+
+void __RPC_STUB IDataAdviseHolder_Unadvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Proxy(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+
+void __RPC_STUB IDataAdviseHolder_EnumAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Proxy(
+ IDataAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ DWORD dwReserved,
+ /* [in] */ DWORD advf);
+
+
+void __RPC_STUB IDataAdviseHolder_SendOnDataChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDataAdviseHolder_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMessageFilter_INTERFACE_DEFINED__
+#define __IMessageFilter_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMessageFilter
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IMessageFilter __RPC_FAR *LPMESSAGEFILTER;
+
+typedef
+enum tagCALLTYPE
+ { CALLTYPE_TOPLEVEL = 1,
+ CALLTYPE_NESTED = 2,
+ CALLTYPE_ASYNC = 3,
+ CALLTYPE_TOPLEVEL_CALLPENDING = 4,
+ CALLTYPE_ASYNC_CALLPENDING = 5
+ } CALLTYPE;
+
+typedef
+enum tagSERVERCALL
+ { SERVERCALL_ISHANDLED = 0,
+ SERVERCALL_REJECTED = 1,
+ SERVERCALL_RETRYLATER = 2
+ } SERVERCALL;
+
+typedef
+enum tagPENDINGTYPE
+ { PENDINGTYPE_TOPLEVEL = 1,
+ PENDINGTYPE_NESTED = 2
+ } PENDINGTYPE;
+
+typedef
+enum tagPENDINGMSG
+ { PENDINGMSG_CANCELCALL = 0,
+ PENDINGMSG_WAITNOPROCESS = 1,
+ PENDINGMSG_WAITDEFPROCESS = 2
+ } PENDINGMSG;
+
+typedef struct tagINTERFACEINFO
+ {
+ IUnknown __RPC_FAR *pUnk;
+ IID iid;
+ WORD wMethod;
+ } INTERFACEINFO;
+
+typedef struct tagINTERFACEINFO __RPC_FAR *LPINTERFACEINFO;
+
+
+EXTERN_C const IID IID_IMessageFilter;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMessageFilter : public IUnknown
+ {
+ public:
+ virtual DWORD STDMETHODCALLTYPE HandleInComingCall(
+ /* [in] */ DWORD dwCallType,
+ /* [in] */ HTASK htaskCaller,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ LPINTERFACEINFO lpInterfaceInfo) = 0;
+
+ virtual DWORD STDMETHODCALLTYPE RetryRejectedCall(
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwRejectType) = 0;
+
+ virtual DWORD STDMETHODCALLTYPE MessagePending(
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwPendingType) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMessageFilterVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMessageFilter __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMessageFilter __RPC_FAR * This);
+
+ DWORD ( STDMETHODCALLTYPE __RPC_FAR *HandleInComingCall )(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ DWORD dwCallType,
+ /* [in] */ HTASK htaskCaller,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ LPINTERFACEINFO lpInterfaceInfo);
+
+ DWORD ( STDMETHODCALLTYPE __RPC_FAR *RetryRejectedCall )(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwRejectType);
+
+ DWORD ( STDMETHODCALLTYPE __RPC_FAR *MessagePending )(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwPendingType);
+
+ END_INTERFACE
+ } IMessageFilterVtbl;
+
+ interface IMessageFilter
+ {
+ CONST_VTBL struct IMessageFilterVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMessageFilter_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMessageFilter_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMessageFilter_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMessageFilter_HandleInComingCall(This,dwCallType,htaskCaller,dwTickCount,lpInterfaceInfo) \
+ (This)->lpVtbl -> HandleInComingCall(This,dwCallType,htaskCaller,dwTickCount,lpInterfaceInfo)
+
+#define IMessageFilter_RetryRejectedCall(This,htaskCallee,dwTickCount,dwRejectType) \
+ (This)->lpVtbl -> RetryRejectedCall(This,htaskCallee,dwTickCount,dwRejectType)
+
+#define IMessageFilter_MessagePending(This,htaskCallee,dwTickCount,dwPendingType) \
+ (This)->lpVtbl -> MessagePending(This,htaskCallee,dwTickCount,dwPendingType)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+DWORD STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Proxy(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ DWORD dwCallType,
+ /* [in] */ HTASK htaskCaller,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ LPINTERFACEINFO lpInterfaceInfo);
+
+
+void __RPC_STUB IMessageFilter_HandleInComingCall_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+DWORD STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Proxy(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwRejectType);
+
+
+void __RPC_STUB IMessageFilter_RetryRejectedCall_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+DWORD STDMETHODCALLTYPE IMessageFilter_MessagePending_Proxy(
+ IMessageFilter __RPC_FAR * This,
+ /* [in] */ HTASK htaskCallee,
+ /* [in] */ DWORD dwTickCount,
+ /* [in] */ DWORD dwPendingType);
+
+
+void __RPC_STUB IMessageFilter_MessagePending_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMessageFilter_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRpcChannelBuffer_INTERFACE_DEFINED__
+#define __IRpcChannelBuffer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRpcChannelBuffer
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef unsigned long RPCOLEDATAREP;
+
+typedef struct tagRPCOLEMESSAGE
+ {
+ void __RPC_FAR *reserved1;
+ RPCOLEDATAREP dataRepresentation;
+ void __RPC_FAR *Buffer;
+ ULONG cbBuffer;
+ ULONG iMethod;
+ void __RPC_FAR *reserved2[ 5 ];
+ ULONG rpcFlags;
+ } RPCOLEMESSAGE;
+
+typedef RPCOLEMESSAGE __RPC_FAR *PRPCOLEMESSAGE;
+
+
+EXTERN_C const IID IID_IRpcChannelBuffer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRpcChannelBuffer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetBuffer(
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [in] */ REFIID riid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendReceive(
+ /* [out][in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [out] */ ULONG __RPC_FAR *pStatus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FreeBuffer(
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDestCtx(
+ /* [out] */ DWORD __RPC_FAR *pdwDestContext,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvDestContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsConnected( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRpcChannelBufferVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRpcChannelBuffer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRpcChannelBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBuffer )(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [in] */ REFIID riid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SendReceive )(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [out][in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [out] */ ULONG __RPC_FAR *pStatus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FreeBuffer )(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDestCtx )(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwDestContext,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvDestContext);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsConnected )(
+ IRpcChannelBuffer __RPC_FAR * This);
+
+ END_INTERFACE
+ } IRpcChannelBufferVtbl;
+
+ interface IRpcChannelBuffer
+ {
+ CONST_VTBL struct IRpcChannelBufferVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRpcChannelBuffer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRpcChannelBuffer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRpcChannelBuffer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRpcChannelBuffer_GetBuffer(This,pMessage,riid) \
+ (This)->lpVtbl -> GetBuffer(This,pMessage,riid)
+
+#define IRpcChannelBuffer_SendReceive(This,pMessage,pStatus) \
+ (This)->lpVtbl -> SendReceive(This,pMessage,pStatus)
+
+#define IRpcChannelBuffer_FreeBuffer(This,pMessage) \
+ (This)->lpVtbl -> FreeBuffer(This,pMessage)
+
+#define IRpcChannelBuffer_GetDestCtx(This,pdwDestContext,ppvDestContext) \
+ (This)->lpVtbl -> GetDestCtx(This,pdwDestContext,ppvDestContext)
+
+#define IRpcChannelBuffer_IsConnected(This) \
+ (This)->lpVtbl -> IsConnected(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Proxy(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [in] */ REFIID riid);
+
+
+void __RPC_STUB IRpcChannelBuffer_GetBuffer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Proxy(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [out][in] */ RPCOLEMESSAGE __RPC_FAR *pMessage,
+ /* [out] */ ULONG __RPC_FAR *pStatus);
+
+
+void __RPC_STUB IRpcChannelBuffer_SendReceive_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Proxy(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *pMessage);
+
+
+void __RPC_STUB IRpcChannelBuffer_FreeBuffer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Proxy(
+ IRpcChannelBuffer __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwDestContext,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvDestContext);
+
+
+void __RPC_STUB IRpcChannelBuffer_GetDestCtx_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Proxy(
+ IRpcChannelBuffer __RPC_FAR * This);
+
+
+void __RPC_STUB IRpcChannelBuffer_IsConnected_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRpcChannelBuffer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRpcProxyBuffer_INTERFACE_DEFINED__
+#define __IRpcProxyBuffer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRpcProxyBuffer
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRpcProxyBuffer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRpcProxyBuffer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Connect(
+ /* [unique][in] */ IRpcChannelBuffer __RPC_FAR *pRpcChannelBuffer) = 0;
+
+ virtual void STDMETHODCALLTYPE Disconnect( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRpcProxyBufferVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRpcProxyBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRpcProxyBuffer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRpcProxyBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Connect )(
+ IRpcProxyBuffer __RPC_FAR * This,
+ /* [unique][in] */ IRpcChannelBuffer __RPC_FAR *pRpcChannelBuffer);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *Disconnect )(
+ IRpcProxyBuffer __RPC_FAR * This);
+
+ END_INTERFACE
+ } IRpcProxyBufferVtbl;
+
+ interface IRpcProxyBuffer
+ {
+ CONST_VTBL struct IRpcProxyBufferVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRpcProxyBuffer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRpcProxyBuffer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRpcProxyBuffer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRpcProxyBuffer_Connect(This,pRpcChannelBuffer) \
+ (This)->lpVtbl -> Connect(This,pRpcChannelBuffer)
+
+#define IRpcProxyBuffer_Disconnect(This) \
+ (This)->lpVtbl -> Disconnect(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Proxy(
+ IRpcProxyBuffer __RPC_FAR * This,
+ /* [unique][in] */ IRpcChannelBuffer __RPC_FAR *pRpcChannelBuffer);
+
+
+void __RPC_STUB IRpcProxyBuffer_Connect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Proxy(
+ IRpcProxyBuffer __RPC_FAR * This);
+
+
+void __RPC_STUB IRpcProxyBuffer_Disconnect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRpcProxyBuffer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRpcStubBuffer_INTERFACE_DEFINED__
+#define __IRpcStubBuffer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRpcStubBuffer
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRpcStubBuffer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRpcStubBuffer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Connect(
+ /* [in] */ IUnknown __RPC_FAR *pUnkServer) = 0;
+
+ virtual void STDMETHODCALLTYPE Disconnect( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Invoke(
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *_prpcmsg,
+ /* [in] */ IRpcChannelBuffer __RPC_FAR *_pRpcChannelBuffer) = 0;
+
+ virtual IRpcStubBuffer __RPC_FAR *STDMETHODCALLTYPE IsIIDSupported(
+ /* [in] */ REFIID riid) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE CountRefs( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DebugServerQueryInterface(
+ void __RPC_FAR *__RPC_FAR *ppv) = 0;
+
+ virtual void STDMETHODCALLTYPE DebugServerRelease(
+ void __RPC_FAR *pv) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRpcStubBufferVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRpcStubBuffer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRpcStubBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Connect )(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkServer);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *Disconnect )(
+ IRpcStubBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *_prpcmsg,
+ /* [in] */ IRpcChannelBuffer __RPC_FAR *_pRpcChannelBuffer);
+
+ IRpcStubBuffer __RPC_FAR *( STDMETHODCALLTYPE __RPC_FAR *IsIIDSupported )(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *CountRefs )(
+ IRpcStubBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DebugServerQueryInterface )(
+ IRpcStubBuffer __RPC_FAR * This,
+ void __RPC_FAR *__RPC_FAR *ppv);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *DebugServerRelease )(
+ IRpcStubBuffer __RPC_FAR * This,
+ void __RPC_FAR *pv);
+
+ END_INTERFACE
+ } IRpcStubBufferVtbl;
+
+ interface IRpcStubBuffer
+ {
+ CONST_VTBL struct IRpcStubBufferVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRpcStubBuffer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRpcStubBuffer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRpcStubBuffer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRpcStubBuffer_Connect(This,pUnkServer) \
+ (This)->lpVtbl -> Connect(This,pUnkServer)
+
+#define IRpcStubBuffer_Disconnect(This) \
+ (This)->lpVtbl -> Disconnect(This)
+
+#define IRpcStubBuffer_Invoke(This,_prpcmsg,_pRpcChannelBuffer) \
+ (This)->lpVtbl -> Invoke(This,_prpcmsg,_pRpcChannelBuffer)
+
+#define IRpcStubBuffer_IsIIDSupported(This,riid) \
+ (This)->lpVtbl -> IsIIDSupported(This,riid)
+
+#define IRpcStubBuffer_CountRefs(This) \
+ (This)->lpVtbl -> CountRefs(This)
+
+#define IRpcStubBuffer_DebugServerQueryInterface(This,ppv) \
+ (This)->lpVtbl -> DebugServerQueryInterface(This,ppv)
+
+#define IRpcStubBuffer_DebugServerRelease(This,pv) \
+ (This)->lpVtbl -> DebugServerRelease(This,pv)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Connect_Proxy(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkServer);
+
+
+void __RPC_STUB IRpcStubBuffer_Connect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Proxy(
+ IRpcStubBuffer __RPC_FAR * This);
+
+
+void __RPC_STUB IRpcStubBuffer_Disconnect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Proxy(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ RPCOLEMESSAGE __RPC_FAR *_prpcmsg,
+ /* [in] */ IRpcChannelBuffer __RPC_FAR *_pRpcChannelBuffer);
+
+
+void __RPC_STUB IRpcStubBuffer_Invoke_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+IRpcStubBuffer __RPC_FAR *STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Proxy(
+ IRpcStubBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid);
+
+
+void __RPC_STUB IRpcStubBuffer_IsIIDSupported_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Proxy(
+ IRpcStubBuffer __RPC_FAR * This);
+
+
+void __RPC_STUB IRpcStubBuffer_CountRefs_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Proxy(
+ IRpcStubBuffer __RPC_FAR * This,
+ void __RPC_FAR *__RPC_FAR *ppv);
+
+
+void __RPC_STUB IRpcStubBuffer_DebugServerQueryInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Proxy(
+ IRpcStubBuffer __RPC_FAR * This,
+ void __RPC_FAR *pv);
+
+
+void __RPC_STUB IRpcStubBuffer_DebugServerRelease_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRpcStubBuffer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPSFactoryBuffer_INTERFACE_DEFINED__
+#define __IPSFactoryBuffer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPSFactoryBuffer
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IPSFactoryBuffer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPSFactoryBuffer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateProxy(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [out] */ IRpcProxyBuffer __RPC_FAR *__RPC_FAR *ppProxy,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateStub(
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkServer,
+ /* [out] */ IRpcStubBuffer __RPC_FAR *__RPC_FAR *ppStub) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPSFactoryBufferVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPSFactoryBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPSFactoryBuffer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPSFactoryBuffer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateProxy )(
+ IPSFactoryBuffer __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [out] */ IRpcProxyBuffer __RPC_FAR *__RPC_FAR *ppProxy,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateStub )(
+ IPSFactoryBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkServer,
+ /* [out] */ IRpcStubBuffer __RPC_FAR *__RPC_FAR *ppStub);
+
+ END_INTERFACE
+ } IPSFactoryBufferVtbl;
+
+ interface IPSFactoryBuffer
+ {
+ CONST_VTBL struct IPSFactoryBufferVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPSFactoryBuffer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPSFactoryBuffer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPSFactoryBuffer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPSFactoryBuffer_CreateProxy(This,pUnkOuter,riid,ppProxy,ppv) \
+ (This)->lpVtbl -> CreateProxy(This,pUnkOuter,riid,ppProxy,ppv)
+
+#define IPSFactoryBuffer_CreateStub(This,riid,pUnkServer,ppStub) \
+ (This)->lpVtbl -> CreateStub(This,riid,pUnkServer,ppStub)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Proxy(
+ IPSFactoryBuffer __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [out] */ IRpcProxyBuffer __RPC_FAR *__RPC_FAR *ppProxy,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+
+void __RPC_STUB IPSFactoryBuffer_CreateProxy_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Proxy(
+ IPSFactoryBuffer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkServer,
+ /* [out] */ IRpcStubBuffer __RPC_FAR *__RPC_FAR *ppStub);
+
+
+void __RPC_STUB IPSFactoryBuffer_CreateStub_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPSFactoryBuffer_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0041
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
+// This interface is only valid on Windows NT 4.0
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0041_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0041_v0_0_s_ifspec;
+
+#ifndef __IChannelHook_INTERFACE_DEFINED__
+#define __IChannelHook_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IChannelHook
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IChannelHook;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IChannelHook : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE ClientGetSize(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out] */ ULONG __RPC_FAR *pDataSize) = 0;
+
+ virtual void STDMETHODCALLTYPE ClientFillBuffer(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer) = 0;
+
+ virtual void STDMETHODCALLTYPE ClientNotify(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep,
+ /* [in] */ HRESULT hrFault) = 0;
+
+ virtual void STDMETHODCALLTYPE ServerNotify(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep) = 0;
+
+ virtual void STDMETHODCALLTYPE ServerGetSize(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ HRESULT hrFault,
+ /* [out] */ ULONG __RPC_FAR *pDataSize) = 0;
+
+ virtual void STDMETHODCALLTYPE ServerFillBuffer(
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ HRESULT hrFault) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IChannelHookVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IChannelHook __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IChannelHook __RPC_FAR * This);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ClientGetSize )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out] */ ULONG __RPC_FAR *pDataSize);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ClientFillBuffer )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ClientNotify )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep,
+ /* [in] */ HRESULT hrFault);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ServerNotify )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ServerGetSize )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ HRESULT hrFault,
+ /* [out] */ ULONG __RPC_FAR *pDataSize);
+
+ void ( STDMETHODCALLTYPE __RPC_FAR *ServerFillBuffer )(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ HRESULT hrFault);
+
+ END_INTERFACE
+ } IChannelHookVtbl;
+
+ interface IChannelHook
+ {
+ CONST_VTBL struct IChannelHookVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IChannelHook_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IChannelHook_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IChannelHook_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IChannelHook_ClientGetSize(This,uExtent,riid,pDataSize) \
+ (This)->lpVtbl -> ClientGetSize(This,uExtent,riid,pDataSize)
+
+#define IChannelHook_ClientFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer) \
+ (This)->lpVtbl -> ClientFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer)
+
+#define IChannelHook_ClientNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep,hrFault) \
+ (This)->lpVtbl -> ClientNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep,hrFault)
+
+#define IChannelHook_ServerNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep) \
+ (This)->lpVtbl -> ServerNotify(This,uExtent,riid,cbDataSize,pDataBuffer,lDataRep)
+
+#define IChannelHook_ServerGetSize(This,uExtent,riid,hrFault,pDataSize) \
+ (This)->lpVtbl -> ServerGetSize(This,uExtent,riid,hrFault,pDataSize)
+
+#define IChannelHook_ServerFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer,hrFault) \
+ (This)->lpVtbl -> ServerFillBuffer(This,uExtent,riid,pDataSize,pDataBuffer,hrFault)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+void STDMETHODCALLTYPE IChannelHook_ClientGetSize_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out] */ ULONG __RPC_FAR *pDataSize);
+
+
+void __RPC_STUB IChannelHook_ClientGetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IChannelHook_ClientFillBuffer_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer);
+
+
+void __RPC_STUB IChannelHook_ClientFillBuffer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IChannelHook_ClientNotify_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep,
+ /* [in] */ HRESULT hrFault);
+
+
+void __RPC_STUB IChannelHook_ClientNotify_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IChannelHook_ServerNotify_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ ULONG cbDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ DWORD lDataRep);
+
+
+void __RPC_STUB IChannelHook_ServerNotify_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IChannelHook_ServerGetSize_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [in] */ HRESULT hrFault,
+ /* [out] */ ULONG __RPC_FAR *pDataSize);
+
+
+void __RPC_STUB IChannelHook_ServerGetSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IChannelHook_ServerFillBuffer_Proxy(
+ IChannelHook __RPC_FAR * This,
+ /* [in] */ REFGUID uExtent,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ ULONG __RPC_FAR *pDataSize,
+ /* [in] */ void __RPC_FAR *pDataBuffer,
+ /* [in] */ HRESULT hrFault);
+
+
+void __RPC_STUB IChannelHook_ServerFillBuffer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IChannelHook_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0042
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#endif //DCOM
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0042_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0042_v0_0_s_ifspec;
+
+#ifndef __IPropertyStorage_INTERFACE_DEFINED__
+#define __IPropertyStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPropertyStorage
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+// Well-known Property Set Format IDs
+extern const FMTID FMTID_SummaryInformation;
+
+extern const FMTID FMTID_DocSummaryInformation;
+
+extern const FMTID FMTID_UserDefinedProperties;
+
+
+// Flags for IPropertySetStorage::Create
+#define PROPSETFLAG_DEFAULT ( 0 )
+
+#define PROPSETFLAG_NONSIMPLE ( 1 )
+
+#define PROPSETFLAG_ANSI ( 2 )
+
+// This flag is only supported on StgCreatePropStg & StgOpenPropStg
+#define PROPSETFLAG_UNBUFFERED ( 4 )
+
+typedef /* [unique] */ IPropertyStorage __RPC_FAR *LPPROPERTYSTORAGE;
+
+typedef struct tagPROPVARIANT PROPVARIANT;
+
+typedef struct tagCAUB
+ {
+ ULONG cElems;
+ /* [size_is] */ unsigned char __RPC_FAR *pElems;
+ } CAUB;
+
+typedef struct tagCAI
+ {
+ ULONG cElems;
+ /* [size_is] */ short __RPC_FAR *pElems;
+ } CAI;
+
+typedef struct tagCAUI
+ {
+ ULONG cElems;
+ /* [size_is] */ USHORT __RPC_FAR *pElems;
+ } CAUI;
+
+typedef struct tagCAL
+ {
+ ULONG cElems;
+ /* [size_is] */ long __RPC_FAR *pElems;
+ } CAL;
+
+typedef struct tagCAUL
+ {
+ ULONG cElems;
+ /* [size_is] */ ULONG __RPC_FAR *pElems;
+ } CAUL;
+
+typedef struct tagCAFLT
+ {
+ ULONG cElems;
+ /* [size_is] */ float __RPC_FAR *pElems;
+ } CAFLT;
+
+typedef struct tagCADBL
+ {
+ ULONG cElems;
+ /* [size_is] */ double __RPC_FAR *pElems;
+ } CADBL;
+
+typedef struct tagCACY
+ {
+ ULONG cElems;
+ /* [size_is] */ CY __RPC_FAR *pElems;
+ } CACY;
+
+typedef struct tagCADATE
+ {
+ ULONG cElems;
+ /* [size_is] */ DATE __RPC_FAR *pElems;
+ } CADATE;
+
+typedef struct tagCABSTR
+ {
+ ULONG cElems;
+ /* [size_is] */ BSTR __RPC_FAR *pElems;
+ } CABSTR;
+
+typedef struct tagCABSTRBLOB
+ {
+ ULONG cElems;
+ /* [size_is] */ BSTRBLOB __RPC_FAR *pElems;
+ } CABSTRBLOB;
+
+typedef struct tagCABOOL
+ {
+ ULONG cElems;
+ /* [size_is] */ VARIANT_BOOL __RPC_FAR *pElems;
+ } CABOOL;
+
+typedef struct tagCASCODE
+ {
+ ULONG cElems;
+ /* [size_is] */ SCODE __RPC_FAR *pElems;
+ } CASCODE;
+
+typedef struct tagCAPROPVARIANT
+ {
+ ULONG cElems;
+ /* [size_is] */ PROPVARIANT __RPC_FAR *pElems;
+ } CAPROPVARIANT;
+
+typedef struct tagCAH
+ {
+ ULONG cElems;
+ /* [size_is] */ LARGE_INTEGER __RPC_FAR *pElems;
+ } CAH;
+
+typedef struct tagCAUH
+ {
+ ULONG cElems;
+ /* [size_is] */ ULARGE_INTEGER __RPC_FAR *pElems;
+ } CAUH;
+
+typedef struct tagCALPSTR
+ {
+ ULONG cElems;
+ /* [size_is] */ LPSTR __RPC_FAR *pElems;
+ } CALPSTR;
+
+typedef struct tagCALPWSTR
+ {
+ ULONG cElems;
+ /* [size_is] */ LPWSTR __RPC_FAR *pElems;
+ } CALPWSTR;
+
+typedef struct tagCAFILETIME
+ {
+ ULONG cElems;
+ /* [size_is] */ FILETIME __RPC_FAR *pElems;
+ } CAFILETIME;
+
+typedef struct tagCACLIPDATA
+ {
+ ULONG cElems;
+ /* [size_is] */ CLIPDATA __RPC_FAR *pElems;
+ } CACLIPDATA;
+
+typedef struct tagCACLSID
+ {
+ ULONG cElems;
+ /* [size_is] */ CLSID __RPC_FAR *pElems;
+ } CACLSID;
+
+// Disable the warning about the obsolete member named 'bool'
+// 'bool', 'true', 'false', 'mutable', 'explicit', & 'typename'
+// are reserved keywords
+#pragma warning(disable:4237)
+struct tagPROPVARIANT
+ {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ /* [switch_is] */ /* [switch_type] */ union
+ {
+ /* [case()] */ /* Empty union arm */
+ /* [case()] */ UCHAR bVal;
+ /* [case()] */ short iVal;
+ /* [case()] */ USHORT uiVal;
+ /* [case()] */ VARIANT_BOOL boolVal;
+ /* [case()] */ _VARIANT_BOOL bool;
+ /* [case()] */ long lVal;
+ /* [case()] */ ULONG ulVal;
+ /* [case()] */ float fltVal;
+ /* [case()] */ SCODE scode;
+ /* [case()] */ LARGE_INTEGER hVal;
+ /* [case()] */ ULARGE_INTEGER uhVal;
+ /* [case()] */ double dblVal;
+ /* [case()] */ CY cyVal;
+ /* [case()] */ DATE date;
+ /* [case()] */ FILETIME filetime;
+ /* [case()] */ CLSID __RPC_FAR *puuid;
+ /* [case()] */ BLOB blob;
+ /* [case()] */ CLIPDATA __RPC_FAR *pclipdata;
+ /* [case()] */ IStream __RPC_FAR *pStream;
+ /* [case()] */ IStorage __RPC_FAR *pStorage;
+ /* [case()] */ BSTR bstrVal;
+ /* [case()] */ BSTRBLOB bstrblobVal;
+ /* [case()] */ LPSTR pszVal;
+ /* [case()] */ LPWSTR pwszVal;
+ /* [case()] */ CAUB caub;
+ /* [case()] */ CAI cai;
+ /* [case()] */ CAUI caui;
+ /* [case()] */ CABOOL cabool;
+ /* [case()] */ CAL cal;
+ /* [case()] */ CAUL caul;
+ /* [case()] */ CAFLT caflt;
+ /* [case()] */ CASCODE cascode;
+ /* [case()] */ CAH cah;
+ /* [case()] */ CAUH cauh;
+ /* [case()] */ CADBL cadbl;
+ /* [case()] */ CACY cacy;
+ /* [case()] */ CADATE cadate;
+ /* [case()] */ CAFILETIME cafiletime;
+ /* [case()] */ CACLSID cauuid;
+ /* [case()] */ CACLIPDATA caclipdata;
+ /* [case()] */ CABSTR cabstr;
+ /* [case()] */ CABSTRBLOB cabstrblob;
+ /* [case()] */ CALPSTR calpstr;
+ /* [case()] */ CALPWSTR calpwstr;
+ /* [case()] */ CAPROPVARIANT capropvar;
+ } ;
+ };
+typedef struct tagPROPVARIANT __RPC_FAR *LPPROPVARIANT;
+
+// Reserved global Property IDs
+#define PID_DICTIONARY ( 0 )
+
+#define PID_CODEPAGE ( 0x1 )
+
+#define PID_FIRST_USABLE ( 0x2 )
+
+#define PID_FIRST_NAME_DEFAULT ( 0xfff )
+
+#define PID_LOCALE ( 0x80000000 )
+
+#define PID_MODIFY_TIME ( 0x80000001 )
+
+#define PID_SECURITY ( 0x80000002 )
+
+#define PID_ILLEGAL ( 0xffffffff )
+
+// Property IDs for the SummaryInformation Property Set
+
+#define PIDSI_TITLE 0x00000002L // VT_LPSTR
+#define PIDSI_SUBJECT 0x00000003L // VT_LPSTR
+#define PIDSI_AUTHOR 0x00000004L // VT_LPSTR
+#define PIDSI_KEYWORDS 0x00000005L // VT_LPSTR
+#define PIDSI_COMMENTS 0x00000006L // VT_LPSTR
+#define PIDSI_TEMPLATE 0x00000007L // VT_LPSTR
+#define PIDSI_LASTAUTHOR 0x00000008L // VT_LPSTR
+#define PIDSI_REVNUMBER 0x00000009L // VT_LPSTR
+#define PIDSI_EDITTIME 0x0000000aL // VT_FILETIME (UTC)
+#define PIDSI_LASTPRINTED 0x0000000bL // VT_FILETIME (UTC)
+#define PIDSI_CREATE_DTM 0x0000000cL // VT_FILETIME (UTC)
+#define PIDSI_LASTSAVE_DTM 0x0000000dL // VT_FILETIME (UTC)
+#define PIDSI_PAGECOUNT 0x0000000eL // VT_I4
+#define PIDSI_WORDCOUNT 0x0000000fL // VT_I4
+#define PIDSI_CHARCOUNT 0x00000010L // VT_I4
+#define PIDSI_THUMBNAIL 0x00000011L // VT_CF
+#define PIDSI_APPNAME 0x00000012L // VT_LPSTR
+#define PIDSI_DOC_SECURITY 0x00000013L // VT_I4
+#define PRSPEC_INVALID ( 0xffffffff )
+
+#define PRSPEC_LPWSTR ( 0 )
+
+#define PRSPEC_PROPID ( 1 )
+
+typedef struct tagPROPSPEC
+ {
+ ULONG ulKind;
+ /* [switch_is] */ /* [switch_type] */ union
+ {
+ /* [case()] */ PROPID propid;
+ /* [case()] */ LPOLESTR lpwstr;
+ /* [default] */ /* Empty union arm */
+ } ;
+ } PROPSPEC;
+
+typedef struct tagSTATPROPSTG
+ {
+ LPOLESTR lpwstrName;
+ PROPID propid;
+ VARTYPE vt;
+ } STATPROPSTG;
+
+// Macros for parsing the OS Version of the Property Set Header
+#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD( (dwOSVer) )
+#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD( (dwOSVer) ))
+#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD( (dwOSVer) ))
+#define PROPSETHDR_OSVERSION_UNKNOWN 0xFFFFFFFF
+typedef struct tagSTATPROPSETSTG
+ {
+ FMTID fmtid;
+ CLSID clsid;
+ DWORD grfFlags;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD dwOSVersion;
+ } STATPROPSETSTG;
+
+
+EXTERN_C const IID IID_IPropertyStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPropertyStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ReadMultiple(
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][out] */ PROPVARIANT __RPC_FAR rgpropvar[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WriteMultiple(
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][in] */ const PROPVARIANT __RPC_FAR rgpropvar[ ],
+ /* [in] */ PROPID propidNameFirst) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteMultiple(
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReadPropertyNames(
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][out] */ LPOLESTR __RPC_FAR rglpwstrName[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WritePropertyNames(
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][in] */ const LPOLESTR __RPC_FAR rglpwstrName[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeletePropertyNames(
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Commit(
+ /* [in] */ DWORD grfCommitFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Enum(
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTimes(
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetClass(
+ /* [in] */ REFCLSID clsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Stat(
+ /* [out] */ STATPROPSETSTG __RPC_FAR *pstatpsstg) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPropertyStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPropertyStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPropertyStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReadMultiple )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][out] */ PROPVARIANT __RPC_FAR rgpropvar[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *WriteMultiple )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][in] */ const PROPVARIANT __RPC_FAR rgpropvar[ ],
+ /* [in] */ PROPID propidNameFirst);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteMultiple )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReadPropertyNames )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][out] */ LPOLESTR __RPC_FAR rglpwstrName[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *WritePropertyNames )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][in] */ const LPOLESTR __RPC_FAR rglpwstrName[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeletePropertyNames )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Revert )(
+ IPropertyStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Enum )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTimes )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetClass )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ REFCLSID clsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stat )(
+ IPropertyStorage __RPC_FAR * This,
+ /* [out] */ STATPROPSETSTG __RPC_FAR *pstatpsstg);
+
+ END_INTERFACE
+ } IPropertyStorageVtbl;
+
+ interface IPropertyStorage
+ {
+ CONST_VTBL struct IPropertyStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPropertyStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPropertyStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPropertyStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPropertyStorage_ReadMultiple(This,cpspec,rgpspec,rgpropvar) \
+ (This)->lpVtbl -> ReadMultiple(This,cpspec,rgpspec,rgpropvar)
+
+#define IPropertyStorage_WriteMultiple(This,cpspec,rgpspec,rgpropvar,propidNameFirst) \
+ (This)->lpVtbl -> WriteMultiple(This,cpspec,rgpspec,rgpropvar,propidNameFirst)
+
+#define IPropertyStorage_DeleteMultiple(This,cpspec,rgpspec) \
+ (This)->lpVtbl -> DeleteMultiple(This,cpspec,rgpspec)
+
+#define IPropertyStorage_ReadPropertyNames(This,cpropid,rgpropid,rglpwstrName) \
+ (This)->lpVtbl -> ReadPropertyNames(This,cpropid,rgpropid,rglpwstrName)
+
+#define IPropertyStorage_WritePropertyNames(This,cpropid,rgpropid,rglpwstrName) \
+ (This)->lpVtbl -> WritePropertyNames(This,cpropid,rgpropid,rglpwstrName)
+
+#define IPropertyStorage_DeletePropertyNames(This,cpropid,rgpropid) \
+ (This)->lpVtbl -> DeletePropertyNames(This,cpropid,rgpropid)
+
+#define IPropertyStorage_Commit(This,grfCommitFlags) \
+ (This)->lpVtbl -> Commit(This,grfCommitFlags)
+
+#define IPropertyStorage_Revert(This) \
+ (This)->lpVtbl -> Revert(This)
+
+#define IPropertyStorage_Enum(This,ppenum) \
+ (This)->lpVtbl -> Enum(This,ppenum)
+
+#define IPropertyStorage_SetTimes(This,pctime,patime,pmtime) \
+ (This)->lpVtbl -> SetTimes(This,pctime,patime,pmtime)
+
+#define IPropertyStorage_SetClass(This,clsid) \
+ (This)->lpVtbl -> SetClass(This,clsid)
+
+#define IPropertyStorage_Stat(This,pstatpsstg) \
+ (This)->lpVtbl -> Stat(This,pstatpsstg)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_ReadMultiple_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][out] */ PROPVARIANT __RPC_FAR rgpropvar[ ]);
+
+
+void __RPC_STUB IPropertyStorage_ReadMultiple_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_WriteMultiple_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ],
+ /* [size_is][in] */ const PROPVARIANT __RPC_FAR rgpropvar[ ],
+ /* [in] */ PROPID propidNameFirst);
+
+
+void __RPC_STUB IPropertyStorage_WriteMultiple_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_DeleteMultiple_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpspec,
+ /* [size_is][in] */ const PROPSPEC __RPC_FAR rgpspec[ ]);
+
+
+void __RPC_STUB IPropertyStorage_DeleteMultiple_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_ReadPropertyNames_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][out] */ LPOLESTR __RPC_FAR rglpwstrName[ ]);
+
+
+void __RPC_STUB IPropertyStorage_ReadPropertyNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_WritePropertyNames_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ],
+ /* [size_is][in] */ const LPOLESTR __RPC_FAR rglpwstrName[ ]);
+
+
+void __RPC_STUB IPropertyStorage_WritePropertyNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_DeletePropertyNames_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ ULONG cpropid,
+ /* [size_is][in] */ const PROPID __RPC_FAR rgpropid[ ]);
+
+
+void __RPC_STUB IPropertyStorage_DeletePropertyNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Commit_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+
+void __RPC_STUB IPropertyStorage_Commit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Revert_Proxy(
+ IPropertyStorage __RPC_FAR * This);
+
+
+void __RPC_STUB IPropertyStorage_Revert_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Enum_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IPropertyStorage_Enum_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_SetTimes_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ const FILETIME __RPC_FAR *pctime,
+ /* [in] */ const FILETIME __RPC_FAR *patime,
+ /* [in] */ const FILETIME __RPC_FAR *pmtime);
+
+
+void __RPC_STUB IPropertyStorage_SetTimes_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_SetClass_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [in] */ REFCLSID clsid);
+
+
+void __RPC_STUB IPropertyStorage_SetClass_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyStorage_Stat_Proxy(
+ IPropertyStorage __RPC_FAR * This,
+ /* [out] */ STATPROPSETSTG __RPC_FAR *pstatpsstg);
+
+
+void __RPC_STUB IPropertyStorage_Stat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPropertyStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPropertySetStorage_INTERFACE_DEFINED__
+#define __IPropertySetStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPropertySetStorage
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPropertySetStorage __RPC_FAR *LPPROPERTYSETSTORAGE;
+
+
+EXTERN_C const IID IID_IPropertySetStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPropertySetStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Create(
+ /* [in] */ REFFMTID rfmtid,
+ /* [unique][in] */ const CLSID __RPC_FAR *pclsid,
+ /* [in] */ DWORD grfFlags,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Open(
+ /* [in] */ REFFMTID rfmtid,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Delete(
+ /* [in] */ REFFMTID rfmtid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Enum(
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPropertySetStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPropertySetStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPropertySetStorage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Create )(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid,
+ /* [unique][in] */ const CLSID __RPC_FAR *pclsid,
+ /* [in] */ DWORD grfFlags,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Open )(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Delete )(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Enum )(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IPropertySetStorageVtbl;
+
+ interface IPropertySetStorage
+ {
+ CONST_VTBL struct IPropertySetStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPropertySetStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPropertySetStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPropertySetStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPropertySetStorage_Create(This,rfmtid,pclsid,grfFlags,grfMode,ppprstg) \
+ (This)->lpVtbl -> Create(This,rfmtid,pclsid,grfFlags,grfMode,ppprstg)
+
+#define IPropertySetStorage_Open(This,rfmtid,grfMode,ppprstg) \
+ (This)->lpVtbl -> Open(This,rfmtid,grfMode,ppprstg)
+
+#define IPropertySetStorage_Delete(This,rfmtid) \
+ (This)->lpVtbl -> Delete(This,rfmtid)
+
+#define IPropertySetStorage_Enum(This,ppenum) \
+ (This)->lpVtbl -> Enum(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Create_Proxy(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid,
+ /* [unique][in] */ const CLSID __RPC_FAR *pclsid,
+ /* [in] */ DWORD grfFlags,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg);
+
+
+void __RPC_STUB IPropertySetStorage_Create_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Open_Proxy(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid,
+ /* [in] */ DWORD grfMode,
+ /* [out] */ IPropertyStorage __RPC_FAR *__RPC_FAR *ppprstg);
+
+
+void __RPC_STUB IPropertySetStorage_Open_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Delete_Proxy(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [in] */ REFFMTID rfmtid);
+
+
+void __RPC_STUB IPropertySetStorage_Delete_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetStorage_Enum_Proxy(
+ IPropertySetStorage __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IPropertySetStorage_Enum_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPropertySetStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumSTATPROPSTG_INTERFACE_DEFINED__
+#define __IEnumSTATPROPSTG_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumSTATPROPSTG
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumSTATPROPSTG __RPC_FAR *LPENUMSTATPROPSTG;
+
+
+EXTERN_C const IID IID_IEnumSTATPROPSTG;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumSTATPROPSTG : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumSTATPROPSTGVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumSTATPROPSTG __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumSTATPROPSTG __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumSTATPROPSTG __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumSTATPROPSTGVtbl;
+
+ interface IEnumSTATPROPSTG
+ {
+ CONST_VTBL struct IEnumSTATPROPSTGVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumSTATPROPSTG_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumSTATPROPSTG_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumSTATPROPSTG_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumSTATPROPSTG_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumSTATPROPSTG_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumSTATPROPSTG_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumSTATPROPSTG_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_RemoteNext_Proxy(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumSTATPROPSTG_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Skip_Proxy(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumSTATPROPSTG_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Reset_Proxy(
+ IEnumSTATPROPSTG __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumSTATPROPSTG_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Clone_Proxy(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumSTATPROPSTG_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumSTATPROPSTG_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__
+#define __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumSTATPROPSETSTG
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumSTATPROPSETSTG __RPC_FAR *LPENUMSTATPROPSETSTG;
+
+
+EXTERN_C const IID IID_IEnumSTATPROPSETSTG;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumSTATPROPSETSTG : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSETSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumSTATPROPSETSTGVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSETSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumSTATPROPSETSTGVtbl;
+
+ interface IEnumSTATPROPSETSTG
+ {
+ CONST_VTBL struct IEnumSTATPROPSETSTGVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumSTATPROPSETSTG_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumSTATPROPSETSTG_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumSTATPROPSETSTG_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumSTATPROPSETSTG_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumSTATPROPSETSTG_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumSTATPROPSETSTG_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumSTATPROPSETSTG_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_RemoteNext_Proxy(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSETSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumSTATPROPSETSTG_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Skip_Proxy(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumSTATPROPSETSTG_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Reset_Proxy(
+ IEnumSTATPROPSETSTG __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumSTATPROPSETSTG_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Clone_Proxy(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [out] */ IEnumSTATPROPSETSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumSTATPROPSETSTG_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0046
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+WINOLEAPI PropVariantCopy ( PROPVARIANT * pvarDest, const PROPVARIANT * pvarSrc );
+WINOLEAPI PropVariantClear ( PROPVARIANT * pvar );
+WINOLEAPI FreePropVariantArray ( ULONG cVariants, PROPVARIANT * rgvars );
+
+#define _PROPVARIANTINIT_DEFINED_
+# ifdef __cplusplus
+inline void PropVariantInit ( PROPVARIANT * pvar )
+{
+ memset ( pvar, 0, sizeof(PROPVARIANT) );
+}
+# else
+# define PropVariantInit(pvar) memset ( pvar, 0, sizeof(PROPVARIANT) )
+# endif
+
+
+#ifndef _STGCREATEPROPSTG_DEFINED_
+WINOLEAPI StgCreatePropStg( IUnknown* pUnk, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );
+WINOLEAPI StgOpenPropStg( IUnknown* pUnk, REFFMTID fmtid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );
+WINOLEAPI StgCreatePropSetStg( IStorage *pStorage, DWORD dwReserved, IPropertySetStorage **ppPropSetStg);
+
+#define CCH_MAX_PROPSTG_NAME 31
+WINOLEAPI FmtIdToPropStgName( const FMTID *pfmtid, LPOLESTR oszName );
+WINOLEAPI PropStgNameToFmtId( const LPOLESTR oszName, FMTID *pfmtid );
+#endif
+#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
+// This interface is only valid on Windows NT 4.0
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0046_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0046_v0_0_s_ifspec;
+
+#ifndef __IClientSecurity_INTERFACE_DEFINED__
+#define __IClientSecurity_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IClientSecurity
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef struct tagSOLE_AUTHENTICATION_SERVICE
+ {
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ OLECHAR __RPC_FAR *pPrincipalName;
+ HRESULT hr;
+ } SOLE_AUTHENTICATION_SERVICE;
+
+typedef SOLE_AUTHENTICATION_SERVICE __RPC_FAR *PSOLE_AUTHENTICATION_SERVICE;
+
+typedef
+enum tagEOLE_AUTHENTICATION_CAPABILITIES
+ { EOAC_NONE = 0,
+ EOAC_MUTUAL_AUTH = 0x1,
+ EOAC_SECURE_REFS = 0x2,
+ EOAC_ACCESS_CONTROL = 0x4,
+ EOAC_APPID = 0x8,
+ EOAC_DYNAMIC = 0x10
+ } EOLE_AUTHENTICATION_CAPABILITIES;
+
+
+EXTERN_C const IID IID_IClientSecurity;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IClientSecurity : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryBlanket(
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pAuthInfo,
+ /* [out] */ DWORD __RPC_FAR *pCapabilites) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBlanket(
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [in] */ DWORD AuthnSvc,
+ /* [in] */ DWORD AuthzSvc,
+ /* [in] */ OLECHAR __RPC_FAR *pServerPrincName,
+ /* [in] */ DWORD AuthnLevel,
+ /* [in] */ DWORD ImpLevel,
+ /* [in] */ void __RPC_FAR *pAuthInfo,
+ /* [in] */ DWORD Capabilities) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CopyProxy(
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppCopy) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IClientSecurityVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IClientSecurity __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IClientSecurity __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryBlanket )(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pAuthInfo,
+ /* [out] */ DWORD __RPC_FAR *pCapabilites);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetBlanket )(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [in] */ DWORD AuthnSvc,
+ /* [in] */ DWORD AuthzSvc,
+ /* [in] */ OLECHAR __RPC_FAR *pServerPrincName,
+ /* [in] */ DWORD AuthnLevel,
+ /* [in] */ DWORD ImpLevel,
+ /* [in] */ void __RPC_FAR *pAuthInfo,
+ /* [in] */ DWORD Capabilities);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CopyProxy )(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppCopy);
+
+ END_INTERFACE
+ } IClientSecurityVtbl;
+
+ interface IClientSecurity
+ {
+ CONST_VTBL struct IClientSecurityVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IClientSecurity_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IClientSecurity_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IClientSecurity_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IClientSecurity_QueryBlanket(This,pProxy,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pAuthInfo,pCapabilites) \
+ (This)->lpVtbl -> QueryBlanket(This,pProxy,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pAuthInfo,pCapabilites)
+
+#define IClientSecurity_SetBlanket(This,pProxy,AuthnSvc,AuthzSvc,pServerPrincName,AuthnLevel,ImpLevel,pAuthInfo,Capabilities) \
+ (This)->lpVtbl -> SetBlanket(This,pProxy,AuthnSvc,AuthzSvc,pServerPrincName,AuthnLevel,ImpLevel,pAuthInfo,Capabilities)
+
+#define IClientSecurity_CopyProxy(This,pProxy,ppCopy) \
+ (This)->lpVtbl -> CopyProxy(This,pProxy,ppCopy)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IClientSecurity_QueryBlanket_Proxy(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pAuthInfo,
+ /* [out] */ DWORD __RPC_FAR *pCapabilites);
+
+
+void __RPC_STUB IClientSecurity_QueryBlanket_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSecurity_SetBlanket_Proxy(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [in] */ DWORD AuthnSvc,
+ /* [in] */ DWORD AuthzSvc,
+ /* [in] */ OLECHAR __RPC_FAR *pServerPrincName,
+ /* [in] */ DWORD AuthnLevel,
+ /* [in] */ DWORD ImpLevel,
+ /* [in] */ void __RPC_FAR *pAuthInfo,
+ /* [in] */ DWORD Capabilities);
+
+
+void __RPC_STUB IClientSecurity_SetBlanket_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSecurity_CopyProxy_Proxy(
+ IClientSecurity __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pProxy,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppCopy);
+
+
+void __RPC_STUB IClientSecurity_CopyProxy_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IClientSecurity_INTERFACE_DEFINED__ */
+
+
+#ifndef __IServerSecurity_INTERFACE_DEFINED__
+#define __IServerSecurity_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IServerSecurity
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IServerSecurity;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IServerSecurity : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryBlanket(
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pPrivs,
+ /* [out] */ DWORD __RPC_FAR *pCapabilities) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ImpersonateClient( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevertToSelf( void) = 0;
+
+ virtual BOOL STDMETHODCALLTYPE IsImpersonating( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IServerSecurityVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IServerSecurity __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IServerSecurity __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IServerSecurity __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryBlanket )(
+ IServerSecurity __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pPrivs,
+ /* [out] */ DWORD __RPC_FAR *pCapabilities);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ImpersonateClient )(
+ IServerSecurity __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RevertToSelf )(
+ IServerSecurity __RPC_FAR * This);
+
+ BOOL ( STDMETHODCALLTYPE __RPC_FAR *IsImpersonating )(
+ IServerSecurity __RPC_FAR * This);
+
+ END_INTERFACE
+ } IServerSecurityVtbl;
+
+ interface IServerSecurity
+ {
+ CONST_VTBL struct IServerSecurityVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IServerSecurity_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IServerSecurity_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IServerSecurity_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IServerSecurity_QueryBlanket(This,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pPrivs,pCapabilities) \
+ (This)->lpVtbl -> QueryBlanket(This,pAuthnSvc,pAuthzSvc,pServerPrincName,pAuthnLevel,pImpLevel,pPrivs,pCapabilities)
+
+#define IServerSecurity_ImpersonateClient(This) \
+ (This)->lpVtbl -> ImpersonateClient(This)
+
+#define IServerSecurity_RevertToSelf(This) \
+ (This)->lpVtbl -> RevertToSelf(This)
+
+#define IServerSecurity_IsImpersonating(This) \
+ (This)->lpVtbl -> IsImpersonating(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IServerSecurity_QueryBlanket_Proxy(
+ IServerSecurity __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAuthnSvc,
+ /* [out] */ DWORD __RPC_FAR *pAuthzSvc,
+ /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *pServerPrincName,
+ /* [out] */ DWORD __RPC_FAR *pAuthnLevel,
+ /* [out] */ DWORD __RPC_FAR *pImpLevel,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *pPrivs,
+ /* [out] */ DWORD __RPC_FAR *pCapabilities);
+
+
+void __RPC_STUB IServerSecurity_QueryBlanket_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IServerSecurity_ImpersonateClient_Proxy(
+ IServerSecurity __RPC_FAR * This);
+
+
+void __RPC_STUB IServerSecurity_ImpersonateClient_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IServerSecurity_RevertToSelf_Proxy(
+ IServerSecurity __RPC_FAR * This);
+
+
+void __RPC_STUB IServerSecurity_RevertToSelf_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+BOOL STDMETHODCALLTYPE IServerSecurity_IsImpersonating_Proxy(
+ IServerSecurity __RPC_FAR * This);
+
+
+void __RPC_STUB IServerSecurity_IsImpersonating_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IServerSecurity_INTERFACE_DEFINED__ */
+
+
+#ifndef __IClassActivator_INTERFACE_DEFINED__
+#define __IClassActivator_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IClassActivator
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+
+EXTERN_C const IID IID_IClassActivator;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IClassActivator : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetClassObject(
+ /* [in] */ REFCLSID rclsid,
+ /* [in] */ DWORD dwClassContext,
+ /* [in] */ LCID locale,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppv) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IClassActivatorVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IClassActivator __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IClassActivator __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IClassActivator __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassObject )(
+ IClassActivator __RPC_FAR * This,
+ /* [in] */ REFCLSID rclsid,
+ /* [in] */ DWORD dwClassContext,
+ /* [in] */ LCID locale,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+ END_INTERFACE
+ } IClassActivatorVtbl;
+
+ interface IClassActivator
+ {
+ CONST_VTBL struct IClassActivatorVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IClassActivator_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IClassActivator_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IClassActivator_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IClassActivator_GetClassObject(This,rclsid,dwClassContext,locale,riid,ppv) \
+ (This)->lpVtbl -> GetClassObject(This,rclsid,dwClassContext,locale,riid,ppv)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IClassActivator_GetClassObject_Proxy(
+ IClassActivator __RPC_FAR * This,
+ /* [in] */ REFCLSID rclsid,
+ /* [in] */ DWORD dwClassContext,
+ /* [in] */ LCID locale,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppv);
+
+
+void __RPC_STUB IClassActivator_GetClassObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IClassActivator_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0049
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#endif //DCOM
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0049_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0049_v0_0_s_ifspec;
+
+#ifndef __IFillLockBytes_INTERFACE_DEFINED__
+#define __IFillLockBytes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IFillLockBytes
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IFillLockBytes;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IFillLockBytes : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE FillAppend(
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE FillAt(
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFillSize(
+ /* [in] */ ULARGE_INTEGER ulSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Terminate(
+ /* [in] */ BOOL bCanceled) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IFillLockBytesVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IFillLockBytes __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IFillLockBytes __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FillAppend )(
+ IFillLockBytes __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FillAt )(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFillSize )(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulSize);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Terminate )(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ BOOL bCanceled);
+
+ END_INTERFACE
+ } IFillLockBytesVtbl;
+
+ interface IFillLockBytes
+ {
+ CONST_VTBL struct IFillLockBytesVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IFillLockBytes_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IFillLockBytes_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IFillLockBytes_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IFillLockBytes_FillAppend(This,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> FillAppend(This,pv,cb,pcbWritten)
+
+#define IFillLockBytes_FillAt(This,ulOffset,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> FillAt(This,ulOffset,pv,cb,pcbWritten)
+
+#define IFillLockBytes_SetFillSize(This,ulSize) \
+ (This)->lpVtbl -> SetFillSize(This,ulSize)
+
+#define IFillLockBytes_Terminate(This,bCanceled) \
+ (This)->lpVtbl -> Terminate(This,bCanceled)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT __stdcall IFillLockBytes_RemoteFillAppend_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+void __RPC_STUB IFillLockBytes_RemoteFillAppend_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT __stdcall IFillLockBytes_RemoteFillAt_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+void __RPC_STUB IFillLockBytes_RemoteFillAt_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFillLockBytes_SetFillSize_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulSize);
+
+
+void __RPC_STUB IFillLockBytes_SetFillSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFillLockBytes_Terminate_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ BOOL bCanceled);
+
+
+void __RPC_STUB IFillLockBytes_Terminate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IFillLockBytes_INTERFACE_DEFINED__ */
+
+
+#ifndef __IProgressNotify_INTERFACE_DEFINED__
+#define __IProgressNotify_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IProgressNotify
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IProgressNotify;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IProgressNotify : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnProgress(
+ /* [in] */ DWORD dwProgressCurrent,
+ /* [in] */ DWORD dwProgressMaximum,
+ /* [in] */ BOOL fAccurate,
+ /* [in] */ BOOL fOwner) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IProgressNotifyVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IProgressNotify __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IProgressNotify __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IProgressNotify __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnProgress )(
+ IProgressNotify __RPC_FAR * This,
+ /* [in] */ DWORD dwProgressCurrent,
+ /* [in] */ DWORD dwProgressMaximum,
+ /* [in] */ BOOL fAccurate,
+ /* [in] */ BOOL fOwner);
+
+ END_INTERFACE
+ } IProgressNotifyVtbl;
+
+ interface IProgressNotify
+ {
+ CONST_VTBL struct IProgressNotifyVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IProgressNotify_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IProgressNotify_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IProgressNotify_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IProgressNotify_OnProgress(This,dwProgressCurrent,dwProgressMaximum,fAccurate,fOwner) \
+ (This)->lpVtbl -> OnProgress(This,dwProgressCurrent,dwProgressMaximum,fAccurate,fOwner)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IProgressNotify_OnProgress_Proxy(
+ IProgressNotify __RPC_FAR * This,
+ /* [in] */ DWORD dwProgressCurrent,
+ /* [in] */ DWORD dwProgressMaximum,
+ /* [in] */ BOOL fAccurate,
+ /* [in] */ BOOL fOwner);
+
+
+void __RPC_STUB IProgressNotify_OnProgress_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IProgressNotify_INTERFACE_DEFINED__ */
+
+
+#ifndef __ILayoutStorage_INTERFACE_DEFINED__
+#define __ILayoutStorage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ILayoutStorage
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef struct tagStorageLayout
+ {
+ DWORD LayoutType;
+ OLECHAR __RPC_FAR *pwcsElementName;
+ LARGE_INTEGER cOffset;
+ LARGE_INTEGER cBytes;
+ } StorageLayout;
+
+
+EXTERN_C const IID IID_ILayoutStorage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ILayoutStorage : public IUnknown
+ {
+ public:
+ virtual HRESULT __stdcall LayoutScript(
+ /* [in] */ StorageLayout __RPC_FAR *pStorageLayout,
+ /* [in] */ DWORD nEntries,
+ /* [in] */ DWORD glfInterleavedFlag) = 0;
+
+ virtual HRESULT __stdcall BeginMonitor( void) = 0;
+
+ virtual HRESULT __stdcall EndMonitor( void) = 0;
+
+ virtual HRESULT __stdcall ReLayoutDocfile(
+ /* [in] */ OLECHAR __RPC_FAR *pwcsNewDfName) = 0;
+
+ virtual HRESULT __stdcall ReLayoutDocfileOnILockBytes(
+ /* [in] */ ILockBytes __RPC_FAR *pILockBytes) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ILayoutStorageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ILayoutStorage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ILayoutStorage __RPC_FAR * This);
+
+ HRESULT ( __stdcall __RPC_FAR *LayoutScript )(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ StorageLayout __RPC_FAR *pStorageLayout,
+ /* [in] */ DWORD nEntries,
+ /* [in] */ DWORD glfInterleavedFlag);
+
+ HRESULT ( __stdcall __RPC_FAR *BeginMonitor )(
+ ILayoutStorage __RPC_FAR * This);
+
+ HRESULT ( __stdcall __RPC_FAR *EndMonitor )(
+ ILayoutStorage __RPC_FAR * This);
+
+ HRESULT ( __stdcall __RPC_FAR *ReLayoutDocfile )(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ OLECHAR __RPC_FAR *pwcsNewDfName);
+
+ HRESULT ( __stdcall __RPC_FAR *ReLayoutDocfileOnILockBytes )(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ ILockBytes __RPC_FAR *pILockBytes);
+
+ END_INTERFACE
+ } ILayoutStorageVtbl;
+
+ interface ILayoutStorage
+ {
+ CONST_VTBL struct ILayoutStorageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ILayoutStorage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ILayoutStorage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ILayoutStorage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ILayoutStorage_LayoutScript(This,pStorageLayout,nEntries,glfInterleavedFlag) \
+ (This)->lpVtbl -> LayoutScript(This,pStorageLayout,nEntries,glfInterleavedFlag)
+
+#define ILayoutStorage_BeginMonitor(This) \
+ (This)->lpVtbl -> BeginMonitor(This)
+
+#define ILayoutStorage_EndMonitor(This) \
+ (This)->lpVtbl -> EndMonitor(This)
+
+#define ILayoutStorage_ReLayoutDocfile(This,pwcsNewDfName) \
+ (This)->lpVtbl -> ReLayoutDocfile(This,pwcsNewDfName)
+
+#define ILayoutStorage_ReLayoutDocfileOnILockBytes(This,pILockBytes) \
+ (This)->lpVtbl -> ReLayoutDocfileOnILockBytes(This,pILockBytes)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT __stdcall ILayoutStorage_LayoutScript_Proxy(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ StorageLayout __RPC_FAR *pStorageLayout,
+ /* [in] */ DWORD nEntries,
+ /* [in] */ DWORD glfInterleavedFlag);
+
+
+void __RPC_STUB ILayoutStorage_LayoutScript_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT __stdcall ILayoutStorage_BeginMonitor_Proxy(
+ ILayoutStorage __RPC_FAR * This);
+
+
+void __RPC_STUB ILayoutStorage_BeginMonitor_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT __stdcall ILayoutStorage_EndMonitor_Proxy(
+ ILayoutStorage __RPC_FAR * This);
+
+
+void __RPC_STUB ILayoutStorage_EndMonitor_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT __stdcall ILayoutStorage_ReLayoutDocfile_Proxy(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ OLECHAR __RPC_FAR *pwcsNewDfName);
+
+
+void __RPC_STUB ILayoutStorage_ReLayoutDocfile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT __stdcall ILayoutStorage_ReLayoutDocfileOnILockBytes_Proxy(
+ ILayoutStorage __RPC_FAR * This,
+ /* [in] */ ILockBytes __RPC_FAR *pILockBytes);
+
+
+void __RPC_STUB ILayoutStorage_ReLayoutDocfileOnILockBytes_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ILayoutStorage_INTERFACE_DEFINED__ */
+
+
+#ifndef __ISurrogate_INTERFACE_DEFINED__
+#define __ISurrogate_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISurrogate
+ * at Fri Nov 15 09:36:22 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [object][unique][version][uuid] */
+
+
+typedef /* [unique] */ ISurrogate __RPC_FAR *LPSURROGATE;
+
+
+EXTERN_C const IID IID_ISurrogate;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISurrogate : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE LoadDllServer(
+ /* [in] */ REFCLSID Clsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FreeSurrogate( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISurrogateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISurrogate __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISurrogate __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISurrogate __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LoadDllServer )(
+ ISurrogate __RPC_FAR * This,
+ /* [in] */ REFCLSID Clsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FreeSurrogate )(
+ ISurrogate __RPC_FAR * This);
+
+ END_INTERFACE
+ } ISurrogateVtbl;
+
+ interface ISurrogate
+ {
+ CONST_VTBL struct ISurrogateVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISurrogate_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISurrogate_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISurrogate_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISurrogate_LoadDllServer(This,Clsid) \
+ (This)->lpVtbl -> LoadDllServer(This,Clsid)
+
+#define ISurrogate_FreeSurrogate(This) \
+ (This)->lpVtbl -> FreeSurrogate(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ISurrogate_LoadDllServer_Proxy(
+ ISurrogate __RPC_FAR * This,
+ /* [in] */ REFCLSID Clsid);
+
+
+void __RPC_STUB ISurrogate_LoadDllServer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ISurrogate_FreeSurrogate_Proxy(
+ ISurrogate __RPC_FAR * This);
+
+
+void __RPC_STUB ISurrogate_FreeSurrogate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISurrogate_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER ASYNC_STGMEDIUM_UserSize( unsigned long __RPC_FAR *, unsigned long , ASYNC_STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER ASYNC_STGMEDIUM_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, ASYNC_STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER ASYNC_STGMEDIUM_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, ASYNC_STGMEDIUM __RPC_FAR * );
+void __RPC_USER ASYNC_STGMEDIUM_UserFree( unsigned long __RPC_FAR *, ASYNC_STGMEDIUM __RPC_FAR * );
+
+unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * );
+
+unsigned long __RPC_USER CLIPFORMAT_UserSize( unsigned long __RPC_FAR *, unsigned long , CLIPFORMAT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLIPFORMAT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLIPFORMAT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+void __RPC_USER CLIPFORMAT_UserFree( unsigned long __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+
+unsigned long __RPC_USER FLAG_STGMEDIUM_UserSize( unsigned long __RPC_FAR *, unsigned long , FLAG_STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER FLAG_STGMEDIUM_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, FLAG_STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER FLAG_STGMEDIUM_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, FLAG_STGMEDIUM __RPC_FAR * );
+void __RPC_USER FLAG_STGMEDIUM_UserFree( unsigned long __RPC_FAR *, FLAG_STGMEDIUM __RPC_FAR * );
+
+unsigned long __RPC_USER SNB_UserSize( unsigned long __RPC_FAR *, unsigned long , SNB __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER SNB_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, SNB __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER SNB_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, SNB __RPC_FAR * );
+void __RPC_USER SNB_UserFree( unsigned long __RPC_FAR *, SNB __RPC_FAR * );
+
+unsigned long __RPC_USER STGMEDIUM_UserSize( unsigned long __RPC_FAR *, unsigned long , STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER STGMEDIUM_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+void __RPC_USER STGMEDIUM_UserFree( unsigned long __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Proxy(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Stub(
+ IEnumUnknown __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IBindCtx_SetBindOptions_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ BIND_OPTS __RPC_FAR *pbindopts);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindCtx_SetBindOptions_Stub(
+ IBindCtx __RPC_FAR * This,
+ /* [in] */ BIND_OPTS2 __RPC_FAR *pbindopts);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IBindCtx_GetBindOptions_Proxy(
+ IBindCtx __RPC_FAR * This,
+ /* [out][in] */ BIND_OPTS __RPC_FAR *pbindopts);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindCtx_GetBindOptions_Stub(
+ IBindCtx __RPC_FAR * This,
+ /* [out][in] */ BIND_OPTS2 __RPC_FAR *pbindopts);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Proxy(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Stub(
+ IEnumMoniker __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ BOOL STDMETHODCALLTYPE IRunnableObject_IsRunning_Proxy(
+ IRunnableObject __RPC_FAR * This);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IRunnableObject_IsRunning_Stub(
+ IRunnableObject __RPC_FAR * This);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Stub(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvResult);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Proxy(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Stub(
+ IMoniker __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumString_Next_Proxy(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLESTR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumString_Next_Stub(
+ IEnumString __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLESTR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ISequentialStream_Read_Proxy(
+ ISequentialStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ISequentialStream_Read_Stub(
+ ISequentialStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ISequentialStream_Write_Proxy(
+ ISequentialStream __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ISequentialStream_Write_Stub(
+ ISequentialStream __RPC_FAR * This,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IStream_Seek_Proxy(
+ IStream __RPC_FAR * This,
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStream_Seek_Stub(
+ IStream __RPC_FAR * This,
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IStream_CopyTo_Proxy(
+ IStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStream_CopyTo_Stub(
+ IStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Proxy(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Stub(
+ IEnumSTATSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ void __RPC_FAR *reserved1,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Stub(
+ IStorage __RPC_FAR * This,
+ /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
+ /* [in] */ unsigned long cbReserved1,
+ /* [size_is][unique][in] */ byte __RPC_FAR *reserved1,
+ /* [in] */ DWORD grfMode,
+ /* [in] */ DWORD reserved2,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Proxy(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD reserved1,
+ /* [size_is][unique][in] */ void __RPC_FAR *reserved2,
+ /* [in] */ DWORD reserved3,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Stub(
+ IStorage __RPC_FAR * This,
+ /* [in] */ DWORD reserved1,
+ /* [in] */ unsigned long cbReserved2,
+ /* [size_is][unique][in] */ byte __RPC_FAR *reserved2,
+ /* [in] */ DWORD reserved3,
+ /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+
+/* [call_as] */ HRESULT __stdcall ILockBytes_ReadAt_Stub(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [length_is][size_is][out] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Proxy(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Stub(
+ ILockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Proxy(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ FORMATETC __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Stub(
+ IEnumFORMATETC __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ FORMATETC __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Proxy(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDATA __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Stub(
+ IEnumSTATDATA __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDATA __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Stub(
+ IAdviseSink __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ ASYNC_STGMEDIUM __RPC_FAR *pStgmed);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Stub(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink_OnRename_Proxy(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_OnRename_Stub(
+ IAdviseSink __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink_OnSave_Proxy(
+ IAdviseSink __RPC_FAR * This);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink_OnSave_Stub(
+ IAdviseSink __RPC_FAR * This);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink_OnClose_Proxy(
+ IAdviseSink __RPC_FAR * This);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IAdviseSink_OnClose_Stub(
+ IAdviseSink __RPC_FAR * This);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Proxy(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Stub(
+ IAdviseSink2 __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IDataObject_GetData_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
+ /* [out] */ STGMEDIUM __RPC_FAR *pmedium);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_GetData_Stub(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetcIn,
+ /* [out] */ STGMEDIUM __RPC_FAR *pRemoteMedium);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pmedium);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Stub(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pRemoteMedium);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IDataObject_SetData_Proxy(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IDataObject_SetData_Stub(
+ IDataObject __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ FLAG_STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Next_Proxy(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSTG_Next_Stub(
+ IEnumSTATPROPSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Next_Proxy(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSETSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_Next_Stub(
+ IEnumSTATPROPSETSTG __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATPROPSETSTG __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IFillLockBytes_FillAppend_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+/* [call_as] */ HRESULT __stdcall IFillLockBytes_FillAppend_Stub(
+ IFillLockBytes __RPC_FAR * This,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IFillLockBytes_FillAt_Proxy(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+/* [call_as] */ HRESULT __stdcall IFillLockBytes_FillAt_Stub(
+ IFillLockBytes __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER ulOffset,
+ /* [size_is][in] */ const byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/objidl.idl b/public/sdk/inc/objidl.idl
new file mode 100644
index 000000000..48b0d57da
--- /dev/null
+++ b/public/sdk/inc/objidl.idl
@@ -0,0 +1,2876 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: objidl.idl
+//
+//--------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "unknwn.idl";
+import "wtypes.idl";
+#endif
+
+interface IStream;
+interface IMoniker;
+interface IEnumMoniker;
+interface IEnumString;
+interface IRunningObjectTable;
+interface IStorage;
+interface IEnumSTATSTG;
+interface IAdviseSink;
+interface IBindCtx;
+interface IEnumMoniker;
+
+/****************************************************************************
+ * Component Object Interfaces
+ ****************************************************************************/
+
+[
+ local,
+ object,
+ uuid(00000003-0000-0000-C000-000000000046)
+]
+
+interface IMarshal : IUnknown
+{
+
+ typedef [unique] IMarshal *LPMARSHAL;
+
+ HRESULT GetUnmarshalClass
+ (
+ [in] REFIID riid,
+ [in, unique] void *pv,
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [in] DWORD mshlflags,
+ [out] CLSID *pCid
+ );
+
+ HRESULT GetMarshalSizeMax
+ (
+ [in] REFIID riid,
+ [in, unique] void *pv,
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [in] DWORD mshlflags,
+ [out] DWORD *pSize
+ );
+
+ HRESULT MarshalInterface
+ (
+ [in, unique] IStream *pStm,
+ [in] REFIID riid,
+ [in, unique] void *pv,
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [in] DWORD mshlflags
+ );
+
+ HRESULT UnmarshalInterface
+ (
+ [in, unique] IStream *pStm,
+ [in] REFIID riid,
+ [out] void **ppv
+ );
+
+ HRESULT ReleaseMarshalData
+ (
+ [in, unique] IStream *pStm
+ );
+
+ HRESULT DisconnectObject
+ (
+ [in] DWORD dwReserved
+ );
+}
+
+[
+ local,
+ object,
+ uuid(00000002-0000-0000-C000-000000000046)
+]
+
+interface IMalloc : IUnknown
+{
+
+ typedef [unique] IMalloc *LPMALLOC;
+
+ void *Alloc([in] ULONG cb);
+
+ void *Realloc ([in] void *pv,
+ [in] ULONG cb);
+
+ void Free([in] void *pv);
+
+ ULONG GetSize([in] void *pv);
+
+ int DidAlloc(void *pv);
+
+ void HeapMinimize(void);
+}
+
+[
+ local,
+ object,
+ uuid(0000001d-0000-0000-C000-000000000046)
+]
+
+interface IMallocSpy : IUnknown
+{
+
+ typedef [unique] IMallocSpy *LPMALLOCSPY;
+
+ ULONG PreAlloc
+ (
+ [in] ULONG cbRequest
+ );
+
+ void *PostAlloc
+ (
+ [in] void *pActual
+ );
+
+ void *PreFree
+ (
+ [in] void *pRequest,
+ [in] BOOL fSpyed
+ );
+
+ void PostFree
+ (
+ [in] BOOL fSpyed
+ );
+
+ ULONG PreRealloc
+ (
+ [in] void *pRequest,
+ [in] ULONG cbRequest,
+ [out] void **ppNewRequest,
+ [in] BOOL fSpyed
+ );
+
+ void *PostRealloc
+ (
+ [in] void *pActual,
+ [in] BOOL fSpyed
+ );
+
+ void *PreGetSize
+ (
+ [in] void *pRequest,
+ [in] BOOL fSpyed
+ );
+
+ ULONG PostGetSize
+ (
+ [in] ULONG cbActual,
+ [in] BOOL fSpyed
+ );
+
+ void *PreDidAlloc
+ (
+ [in] void *pRequest,
+ [in] BOOL fSpyed
+ );
+
+ int PostDidAlloc
+ (
+ [in] void *pRequest,
+ [in] BOOL fSpyed,
+ [in] int fActual
+ );
+
+ void PreHeapMinimize(void);
+
+ void PostHeapMinimize(void);
+}
+
+[
+ local,
+ object,
+ uuid(00000018-0000-0000-C000-000000000046)
+]
+
+interface IStdMarshalInfo : IUnknown
+{
+
+ typedef [unique] IStdMarshalInfo * LPSTDMARSHALINFO;
+
+ HRESULT GetClassForHandler
+ (
+ [in] DWORD dwDestContext,
+ [in, unique] void *pvDestContext,
+ [out] CLSID *pClsid
+ );
+}
+
+[
+ object,
+ local,
+ uuid(00000019-0000-0000-C000-000000000046)
+]
+
+interface IExternalConnection : IUnknown
+{
+
+ typedef [unique] IExternalConnection* LPEXTERNALCONNECTION;
+
+
+ // bit flags for IExternalConnection
+ typedef enum tagEXTCONN
+ {
+ EXTCONN_STRONG = 0x0001, // strong connection
+ EXTCONN_WEAK = 0x0002, // weak connection (table, container)
+ EXTCONN_CALLABLE = 0x0004, // table .vs. callable
+ } EXTCONN;
+
+ // *** IExternalConnection methods ***
+ DWORD AddConnection
+ (
+ [in] DWORD extconn,
+ [in] DWORD reserved
+ );
+
+ DWORD ReleaseConnection
+ (
+ [in] DWORD extconn,
+ [in] DWORD reserved,
+ [in] BOOL fLastReleaseCloses
+ );
+}
+
+
+[
+ object,
+ local,
+ uuid(00000020-0000-0000-C000-000000000046)
+]
+
+interface IMultiQI : IUnknown
+{
+ typedef [unique] IMultiQI* LPMULTIQI;
+
+ typedef struct tagMULTI_QI
+ {
+ const IID *pIID; // pass this one in
+ IUnknown *pItf; // get these out (you must set to NULL before calling)
+ HRESULT hr;
+ } MULTI_QI;
+
+ HRESULT QueryMultipleInterfaces
+ (
+ [in] ULONG cMQIs,
+ [in,out] MULTI_QI *pMQIs
+ );
+}
+
+
+[
+ object,
+ uuid(00000100-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumUnknown : IUnknown
+{
+
+ typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out] IUnknown **rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ IUnknown **rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumUnknown **ppenum);
+}
+
+
+/****************************************************************************
+ * Binding Interfaces
+ ****************************************************************************/
+
+[
+ object,
+ uuid(0000000e-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IBindCtx : IUnknown
+{
+
+ typedef [unique] IBindCtx *LPBC;
+
+ typedef [unique] IBindCtx *LPBINDCTX;
+
+ typedef struct tagBIND_OPTS {
+ DWORD cbStruct; // sizeof(BIND_OPTS)
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ } BIND_OPTS, * LPBIND_OPTS;
+
+cpp_quote("#if defined(__cplusplus)")
+cpp_quote(" typedef struct tagBIND_OPTS2 : tagBIND_OPTS{")
+cpp_quote(" DWORD dwTrackFlags;")
+cpp_quote(" DWORD dwClassContext;")
+cpp_quote(" LCID locale;")
+cpp_quote(" COSERVERINFO * pServerInfo;")
+cpp_quote(" } BIND_OPTS2, * LPBIND_OPTS2;")
+cpp_quote("#else")
+
+ typedef struct tagBIND_OPTS2 {
+ DWORD cbStruct; // sizeof(BIND_OPTS2)
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ DWORD dwTrackFlags;
+ DWORD dwClassContext;
+ LCID locale;
+ COSERVERINFO * pServerInfo;
+ } BIND_OPTS2, * LPBIND_OPTS2;
+
+cpp_quote("#endif")
+
+
+ typedef enum tagBIND_FLAGS
+ {
+ BIND_MAYBOTHERUSER = 1,
+ BIND_JUSTTESTEXISTENCE = 2
+ } BIND_FLAGS;
+
+ HRESULT RegisterObjectBound
+ (
+ [in, unique] IUnknown *punk
+ );
+
+ HRESULT RevokeObjectBound
+ (
+ [in, unique] IUnknown *punk
+ );
+
+ HRESULT ReleaseBoundObjects
+ (
+ void
+ );
+
+ [local]
+ HRESULT SetBindOptions
+ (
+ [in] BIND_OPTS *pbindopts
+ );
+
+ [call_as(SetBindOptions)]
+ HRESULT RemoteSetBindOptions
+ (
+ [in] BIND_OPTS2 *pbindopts
+ );
+
+ [local]
+ HRESULT GetBindOptions
+ (
+ [in, out] BIND_OPTS *pbindopts
+ );
+
+ [call_as(GetBindOptions)]
+ HRESULT RemoteGetBindOptions
+ (
+ [in, out] BIND_OPTS2 *pbindopts
+ );
+
+ HRESULT GetRunningObjectTable
+ (
+ [out] IRunningObjectTable **pprot
+ );
+
+ HRESULT RegisterObjectParam(
+ [in] LPOLESTR pszKey,
+ [in, unique] IUnknown *punk
+ );
+
+ HRESULT GetObjectParam(
+ [in] LPOLESTR pszKey,
+ [out] IUnknown **ppunk
+ );
+
+ HRESULT EnumObjectParam
+ (
+ [out] IEnumString **ppenum
+ );
+
+ HRESULT RevokeObjectParam
+ (
+ [in] LPOLESTR pszKey
+ );
+}
+
+[
+ object,
+ uuid(00000102-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumMoniker : IUnknown
+{
+
+ typedef [unique] IEnumMoniker *LPENUMMONIKER;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ IMoniker **rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ IMoniker **rgelt,
+ [out] ULONG *pceltFetched);
+
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumMoniker **ppenum);
+}
+
+[
+ object,
+ uuid(00000126-0000-0000-C000-000000000046)
+]
+interface IRunnableObject : IUnknown
+{
+
+ typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
+
+ HRESULT GetRunningClass(
+ [out] LPCLSID lpClsid);
+
+ HRESULT Run(
+ [in] LPBINDCTX pbc);
+
+ [local]
+ BOOL IsRunning();
+
+ [call_as(IsRunning)]
+ HRESULT RemoteIsRunning();
+
+ HRESULT LockRunning(
+ [in] BOOL fLock,
+ [in] BOOL fLastUnlockCloses);
+
+ HRESULT SetContainedObject(
+ [in] BOOL fContained);
+}
+
+[
+ object,
+ uuid(00000010-0000-0000-C000-000000000046)
+]
+
+interface IRunningObjectTable : IUnknown
+{
+
+ typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
+
+ HRESULT Register
+ (
+ [in] DWORD grfFlags,
+ [in, unique] IUnknown *punkObject,
+ [in, unique] IMoniker *pmkObjectName,
+ [out] DWORD *pdwRegister
+ );
+
+ HRESULT Revoke
+ (
+ [in] DWORD dwRegister
+ );
+
+ HRESULT IsRunning
+ (
+ [in, unique] IMoniker *pmkObjectName
+ );
+
+ HRESULT GetObject
+ (
+ [in, unique] IMoniker *pmkObjectName,
+ [out] IUnknown **ppunkObject
+ );
+
+ HRESULT NoteChangeTime
+ (
+ [in] DWORD dwRegister,
+ [in] FILETIME *pfiletime
+ );
+
+ HRESULT GetTimeOfLastChange
+ (
+ [in, unique] IMoniker *pmkObjectName,
+ [out] FILETIME *pfiletime
+ );
+
+ HRESULT EnumRunning
+ (
+ [out] IEnumMoniker **ppenumMoniker
+ );
+
+}
+
+[
+ object,
+ uuid(0000010c-0000-0000-C000-000000000046)
+]
+
+interface IPersist : IUnknown
+{
+
+ typedef [unique] IPersist *LPPERSIST;
+
+ HRESULT GetClassID
+ (
+ [out] CLSID *pClassID
+ );
+}
+
+[
+ object,
+ uuid(00000109-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IPersistStream : IPersist
+{
+
+ typedef [unique] IPersistStream *LPPERSISTSTREAM;
+
+ HRESULT IsDirty
+ (
+ void
+ );
+
+ HRESULT Load
+ (
+ [in, unique] IStream *pStm
+ );
+
+ HRESULT Save
+ (
+ [in, unique] IStream *pStm,
+ [in] BOOL fClearDirty
+ );
+
+ HRESULT GetSizeMax
+ (
+ [out] ULARGE_INTEGER *pcbSize
+ );
+
+}
+
+[
+ object,
+ uuid(0000000f-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IMoniker : IPersistStream
+{
+
+ typedef [unique] IMoniker *LPMONIKER;
+
+ // system moniker types; returned from IsSystemMoniker.
+ typedef enum tagMKSYS
+ {
+ MKSYS_NONE = 0,
+ MKSYS_GENERICCOMPOSITE = 1,
+ MKSYS_FILEMONIKER = 2,
+ MKSYS_ANTIMONIKER = 3,
+ MKSYS_ITEMMONIKER = 4,
+ MKSYS_POINTERMONIKER = 5,
+ // MKSYS_URLMONIKER = 6,
+ MKSYS_CLASSMONIKER = 7
+ }MKSYS;
+
+
+ typedef [v1_enum] enum tagMKREDUCE
+ {
+ MKRREDUCE_ONE = 3<<16,
+
+ MKRREDUCE_TOUSER = 2<<16,
+ MKRREDUCE_THROUGHUSER = 1<<16,
+ MKRREDUCE_ALL = 0
+ } MKRREDUCE;
+
+
+ [local]
+ HRESULT BindToObject(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riidResult,
+ [out, iid_is(riidResult)] void **ppvResult);
+
+ [call_as(BindToObject)]
+ HRESULT RemoteBindToObject(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riidResult,
+ [out, iid_is(riidResult)] IUnknown **ppvResult);
+
+ [local]
+ HRESULT BindToStorage(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvObj);
+
+ [call_as(BindToStorage)]
+ HRESULT RemoteBindToStorage(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **ppvObj);
+
+ HRESULT Reduce(
+ [in, unique] IBindCtx *pbc,
+ [in] DWORD dwReduceHowFar,
+ [in, out, unique] IMoniker **ppmkToLeft,
+ [out] IMoniker **ppmkReduced);
+
+ HRESULT ComposeWith(
+ [in, unique] IMoniker *pmkRight,
+ [in] BOOL fOnlyIfNotGeneric,
+ [out] IMoniker **ppmkComposite);
+
+ HRESULT Enum(
+ [in] BOOL fForward,
+ [out] IEnumMoniker **ppenumMoniker);
+
+ HRESULT IsEqual(
+ [in, unique] IMoniker *pmkOtherMoniker);
+
+ HRESULT Hash(
+ [out] DWORD *pdwHash);
+
+ HRESULT IsRunning(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in, unique] IMoniker *pmkNewlyRunning);
+
+ HRESULT GetTimeOfLastChange(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [out] FILETIME *pFileTime);
+
+ HRESULT Inverse(
+ [out] IMoniker **ppmk);
+
+ HRESULT CommonPrefixWith(
+ [in, unique] IMoniker *pmkOther,
+ [out] IMoniker **ppmkPrefix);
+
+ HRESULT RelativePathTo(
+ [in, unique] IMoniker *pmkOther,
+ [out] IMoniker **ppmkRelPath);
+
+ HRESULT GetDisplayName(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [out] LPOLESTR *ppszDisplayName);
+
+ HRESULT ParseDisplayName(
+ [in, unique] IBindCtx *pbc,
+ [in, unique] IMoniker *pmkToLeft,
+ [in] LPOLESTR pszDisplayName,
+ [out] ULONG *pchEaten,
+ [out] IMoniker **ppmkOut);
+
+ HRESULT IsSystemMoniker(
+ [out] DWORD *pdwMksys);
+
+}
+
+[
+ object,
+ uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
+ pointer_default(unique)
+]
+
+interface IROTData : IUnknown
+{
+ HRESULT GetComparisonData(
+ [out, size_is(cbMax)] byte *pbData,
+ [in] ULONG cbMax,
+ [out] ULONG *pcbData);
+}
+
+[
+ object,
+ uuid(00000101-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumString : IUnknown
+{
+
+ typedef [unique] IEnumString *LPENUMSTRING;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ LPOLESTR *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ LPOLESTR *rgelt,
+ [out] ULONG *pceltFetched);
+
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumString **ppenum);
+}
+
+
+/****************************************************************************
+ * Structured Storage Interfaces
+ ****************************************************************************/
+
+[
+ object,
+ uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
+ pointer_default(unique)
+]
+interface ISequentialStream : IUnknown
+{
+ [local]
+ HRESULT Read(
+ [out, size_is(cb), length_is(*pcbRead)]
+ void *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [call_as(Read)]
+ HRESULT RemoteRead(
+ [out, size_is(cb), length_is(*pcbRead)]
+ byte *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [local]
+ HRESULT Write(
+ [in, size_is(cb)] void const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [call_as(Write)]
+ HRESULT RemoteWrite(
+ [in, size_is(cb)] byte const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+}
+
+
+[
+ object,
+ uuid(0000000c-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IStream : ISequentialStream
+{
+
+ typedef [unique] IStream *LPSTREAM;
+
+ /* Storage stat buffer */
+
+ typedef struct tagSTATSTG
+ {
+ LPOLESTR pwcsName;
+ DWORD type;
+ ULARGE_INTEGER cbSize;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD grfMode;
+ DWORD grfLocksSupported;
+ CLSID clsid;
+ DWORD grfStateBits;
+ DWORD reserved;
+ } STATSTG;
+
+
+ /* Storage element types */
+ typedef enum tagSTGTY
+ {
+ STGTY_STORAGE = 1,
+ STGTY_STREAM = 2,
+ STGTY_LOCKBYTES = 3,
+ STGTY_PROPERTY = 4
+ } STGTY;
+
+ typedef enum tagSTREAM_SEEK
+ {
+ STREAM_SEEK_SET = 0,
+ STREAM_SEEK_CUR = 1,
+ STREAM_SEEK_END = 2
+ } STREAM_SEEK;
+
+ typedef enum tagLOCKTYPE
+ {
+ LOCK_WRITE = 1,
+ LOCK_EXCLUSIVE = 2,
+ LOCK_ONLYONCE = 4
+ } LOCKTYPE;
+
+ [local]
+ HRESULT Seek(
+ [in] LARGE_INTEGER dlibMove,
+ [in] DWORD dwOrigin,
+ [out] ULARGE_INTEGER *plibNewPosition);
+
+ [call_as(Seek)]
+ HRESULT RemoteSeek(
+ [in] LARGE_INTEGER dlibMove,
+ [in] DWORD dwOrigin,
+ [out] ULARGE_INTEGER *plibNewPosition);
+
+ HRESULT SetSize(
+ [in] ULARGE_INTEGER libNewSize);
+
+ [local]
+ HRESULT CopyTo(
+ [in, unique] IStream *pstm,
+ [in] ULARGE_INTEGER cb,
+ [out] ULARGE_INTEGER *pcbRead,
+ [out] ULARGE_INTEGER *pcbWritten);
+
+ [call_as(CopyTo)]
+ HRESULT RemoteCopyTo(
+ [in, unique] IStream *pstm,
+ [in] ULARGE_INTEGER cb,
+ [out] ULARGE_INTEGER *pcbRead,
+ [out] ULARGE_INTEGER *pcbWritten);
+
+ HRESULT Commit(
+ [in] DWORD grfCommitFlags);
+
+ HRESULT Revert();
+
+ HRESULT LockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT UnlockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT Stat(
+ [out] STATSTG *pstatstg,
+ [in] DWORD grfStatFlag);
+
+ HRESULT Clone(
+ [out] IStream **ppstm);
+
+}
+
+[
+ object,
+ uuid(0000000d-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumSTATSTG : IUnknown
+{
+
+ typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATSTG *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATSTG *rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumSTATSTG **ppenum);
+}
+
+[
+ object,
+ uuid(0000000b-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IStorage : IUnknown
+{
+
+ typedef [unique] IStorage * LPSTORAGE;
+
+ typedef struct tagRemSNB
+ {
+ unsigned long ulCntStr;
+ unsigned long ulCntChar;
+ [size_is(ulCntChar)] OLECHAR rgString[];
+ } RemSNB;
+
+ typedef [unique] RemSNB * wireSNB;
+ typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
+
+ HRESULT CreateStream(
+ [in, string] const OLECHAR *pwcsName,
+ [in] DWORD grfMode,
+ [in] DWORD reserved1,
+ [in] DWORD reserved2,
+ [out] IStream **ppstm);
+
+ [local]
+ HRESULT OpenStream(
+ [in, string] const OLECHAR *pwcsName,
+ [in, unique] void *reserved1,
+ [in] DWORD grfMode,
+ [in] DWORD reserved2,
+ [out] IStream **ppstm);
+
+ [call_as(OpenStream)]
+ HRESULT RemoteOpenStream(
+ [in, string] const OLECHAR *pwcsName,
+ [in] unsigned long cbReserved1,
+ [in, unique, size_is(cbReserved1)] byte *reserved1,
+ [in] DWORD grfMode,
+ [in] DWORD reserved2,
+ [out] IStream **ppstm);
+
+ HRESULT CreateStorage(
+ [in, string] const OLECHAR *pwcsName,
+ [in] DWORD grfMode,
+ [in] DWORD dwStgFmt,
+ [in] DWORD reserved2,
+ [out] IStorage **ppstg);
+
+ HRESULT OpenStorage(
+ [in, unique, string] const OLECHAR *pwcsName,
+ [in, unique] IStorage *pstgPriority,
+ [in] DWORD grfMode,
+ [in, unique] SNB snbExclude,
+ [in] DWORD reserved,
+ [out] IStorage **ppstg);
+
+ HRESULT CopyTo(
+ [in] DWORD ciidExclude,
+ [in, unique, size_is(ciidExclude)] IID const *rgiidExclude,
+ [in, unique] SNB snbExclude,
+ [in, unique] IStorage *pstgDest);
+
+ HRESULT MoveElementTo(
+ [in, string] const OLECHAR * pwcsName,
+ [in, unique] IStorage *pstgDest,
+ [in, string] const OLECHAR *pwcsNewName,
+ [in] DWORD grfFlags);
+
+ HRESULT Commit(
+ [in] DWORD grfCommitFlags);
+
+ HRESULT Revert();
+
+ [local]
+ HRESULT EnumElements(
+ [in] DWORD reserved1,
+ [in, unique, size_is(1)] void *reserved2,
+ [in] DWORD reserved3,
+ [out] IEnumSTATSTG **ppenum);
+
+
+ [call_as(EnumElements)]
+ HRESULT RemoteEnumElements(
+ [in] DWORD reserved1,
+ [in] unsigned long cbReserved2,
+ [in, unique, size_is(cbReserved2)] byte *reserved2,
+ [in] DWORD reserved3,
+ [out] IEnumSTATSTG **ppenum);
+
+ HRESULT DestroyElement(
+ [in, string] const OLECHAR *pwcsName);
+
+ HRESULT RenameElement(
+ [in, string] const OLECHAR *pwcsOldName,
+ [in, string] const OLECHAR *pwcsNewName);
+
+ HRESULT SetElementTimes(
+ [in, string] const OLECHAR *pwcsName,
+ [in] FILETIME const *pctime,
+ [in] FILETIME const *patime,
+ [in] FILETIME const *pmtime);
+
+ HRESULT SetClass(
+ [in] REFCLSID clsid);
+
+ HRESULT SetStateBits(
+ [in] DWORD grfStateBits,
+ [in] DWORD grfMask);
+
+ HRESULT Stat(
+ [out] STATSTG *pstatstg,
+ [in] DWORD grfStatFlag);
+}
+
+[
+ object,
+ uuid(0000010b-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IPersistFile : IPersist
+{
+
+ typedef [unique] IPersistFile *LPPERSISTFILE;
+
+ HRESULT IsDirty
+ (
+ void
+ );
+
+ HRESULT Load
+ (
+ [in] LPCOLESTR pszFileName,
+ [in] DWORD dwMode
+ );
+
+ HRESULT Save
+ (
+ [in, unique] LPCOLESTR pszFileName,
+ [in] BOOL fRemember
+ );
+
+ HRESULT SaveCompleted
+ (
+ [in, unique] LPCOLESTR pszFileName
+ );
+
+ HRESULT GetCurFile
+ (
+ [out] LPOLESTR *ppszFileName
+ );
+}
+
+[
+ object,
+ uuid(0000010a-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IPersistStorage : IPersist
+{
+
+ typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
+
+ HRESULT IsDirty
+ (
+ void
+ );
+
+ HRESULT InitNew
+ (
+ [in, unique] IStorage *pStg
+ );
+
+ HRESULT Load
+ (
+ [in, unique] IStorage *pStg
+ );
+
+ HRESULT Save
+ (
+ [in, unique] IStorage *pStgSave,
+ [in] BOOL fSameAsLoad
+ );
+
+ HRESULT SaveCompleted
+ (
+ [in, unique] IStorage *pStgNew
+ );
+
+ HRESULT HandsOffStorage
+ (
+ void
+ );
+}
+
+[
+ object,
+ uuid(0000000a-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ILockBytes : IUnknown
+{
+
+ typedef [unique] ILockBytes *LPLOCKBYTES;
+
+ [local]
+ HRESULT ReadAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [out, size_is(cb), length_is(*pcbRead)]
+ void *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [call_as(ReadAt)]
+ HRESULT _stdcall RemoteReadAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [out, size_is(cb), length_is(*pcbRead)]
+ byte *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbRead);
+
+ [local]
+ HRESULT WriteAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] void const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [call_as(WriteAt)]
+ HRESULT RemoteWriteAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] byte const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ HRESULT Flush();
+
+ HRESULT SetSize(
+ [in] ULARGE_INTEGER cb);
+
+ HRESULT LockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT UnlockRegion(
+ [in] ULARGE_INTEGER libOffset,
+ [in] ULARGE_INTEGER cb,
+ [in] DWORD dwLockType);
+
+ HRESULT Stat(
+ [out] STATSTG *pstatstg,
+ [in] DWORD grfStatFlag);
+}
+
+[
+ object,
+ uuid(00000103-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumFORMATETC : IUnknown
+{
+
+ typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
+
+
+ typedef struct tagDVTARGETDEVICE {
+ DWORD tdSize;
+ WORD tdDriverNameOffset;
+ WORD tdDeviceNameOffset;
+ WORD tdPortNameOffset;
+ WORD tdExtDevmodeOffset;
+ [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
+ BYTE tdData[];
+ }DVTARGETDEVICE;
+
+
+ typedef CLIPFORMAT *LPCLIPFORMAT;
+
+ typedef struct tagFORMATETC {
+ CLIPFORMAT cfFormat;
+ [unique] DVTARGETDEVICE * ptd;
+ DWORD dwAspect;
+ LONG lindex;
+ DWORD tymed;
+ }FORMATETC, *LPFORMATETC;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched )]
+ FORMATETC *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched )]
+ FORMATETC *rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumFORMATETC **ppenum);
+}
+
+[
+ object,
+ uuid(00000105-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumSTATDATA : IUnknown
+{
+
+ typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
+
+ //Advise Flags
+ typedef enum tagADVF
+ {
+ ADVF_NODATA = 1,
+ ADVF_PRIMEFIRST = 2,
+ ADVF_ONLYONCE = 4,
+ ADVF_DATAONSTOP = 64,
+ ADVFCACHE_NOHANDLER = 8,
+ ADVFCACHE_FORCEBUILTIN = 16,
+ ADVFCACHE_ONSAVE = 32
+ } ADVF;
+
+
+ // Stats for data; used by several enumerations and by at least one
+ // implementation of IDataAdviseHolder; if a field is not used, it
+ // will be NULL.
+
+ typedef struct tagSTATDATA
+ { // field used by:
+ FORMATETC formatetc; // EnumAdvise, EnumData (cache), EnumFormats
+ DWORD advf; // EnumAdvise, EnumData (cache)
+ [unique] IAdviseSink * pAdvSink; // EnumAdvise
+ DWORD dwConnection; // EnumAdvise
+ } STATDATA;
+ typedef STATDATA *LPSTATDATA;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATDATA *rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATDATA *rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumSTATDATA **ppenum);
+}
+
+[
+ object,
+ uuid(00000012-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IRootStorage : IUnknown
+{
+
+ typedef [unique] IRootStorage *LPROOTSTORAGE;
+
+ HRESULT SwitchToFile
+ (
+ [in] LPOLESTR pszFile
+ );
+}
+
+
+/****************************************************************************
+ * Notification Interfaces
+ ****************************************************************************/
+
+[
+ object,
+ uuid(0000010f-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IAdviseSink : IUnknown
+{
+
+ typedef IAdviseSink *LPADVISESINK;
+
+ typedef [v1_enum] enum tagTYMED {
+ TYMED_HGLOBAL = 1,
+ TYMED_FILE = 2,
+ TYMED_ISTREAM = 4,
+ TYMED_ISTORAGE = 8,
+ TYMED_GDI = 16,
+ TYMED_MFPICT = 32,
+ TYMED_ENHMF = 64,
+ TYMED_NULL = 0
+ } TYMED;
+
+ cpp_quote("#ifndef RC_INVOKED")
+ cpp_quote("#pragma warning(disable:4200)")
+ cpp_quote("#endif")
+
+ typedef struct tagRemSTGMEDIUM {
+ DWORD tymed;
+ DWORD dwHandleType;
+ unsigned long pData;
+ unsigned long pUnkForRelease;
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+ } RemSTGMEDIUM;
+ cpp_quote("#ifndef RC_INVOKED")
+ cpp_quote("#pragma warning(default:4200)")
+ cpp_quote("#endif")
+
+
+cpp_quote("#ifdef NONAMELESSUNION")
+cpp_quote("typedef struct tagSTGMEDIUM {")
+cpp_quote(" DWORD tymed;")
+cpp_quote(" union {")
+cpp_quote(" HBITMAP hBitmap;")
+cpp_quote(" HMETAFILEPICT hMetaFilePict;")
+cpp_quote(" HENHMETAFILE hEnhMetaFile;")
+cpp_quote(" HGLOBAL hGlobal;")
+cpp_quote(" LPOLESTR lpszFileName;")
+cpp_quote(" IStream *pstm;")
+cpp_quote(" IStorage *pstg;")
+cpp_quote(" } u;")
+cpp_quote(" IUnknown *pUnkForRelease;")
+cpp_quote("}uSTGMEDIUM;")
+cpp_quote("#else")
+
+ typedef struct tagSTGMEDIUM {
+ DWORD tymed;
+ [switch_type(DWORD), switch_is((DWORD) tymed)]
+ union
+ {
+ [case(TYMED_GDI)]
+ HBITMAP hBitmap;
+ [case(TYMED_MFPICT)]
+ HMETAFILEPICT hMetaFilePict;
+ [case(TYMED_ENHMF)]
+ HENHMETAFILE hEnhMetaFile;
+ [case(TYMED_HGLOBAL)]
+ HGLOBAL hGlobal;
+ [case(TYMED_FILE)]
+ LPOLESTR lpszFileName;
+ [case(TYMED_ISTREAM)]
+ IStream *pstm;
+ [case(TYMED_ISTORAGE)]
+ IStorage *pstg;
+ [default]
+ ;
+ };
+ [unique] IUnknown *pUnkForRelease;
+ }uSTGMEDIUM;
+
+cpp_quote("#endif /* !NONAMELESSUNION */")
+
+
+//
+// wireSTGMEDIUM
+//
+// These flags are #defined (not enumerated) in wingdi.
+// We need to repeat #defines to avoid conflict in the generated file.
+//
+
+/* Object Definitions for EnumObjects() */
+#define OBJ_PEN 1
+#define OBJ_BRUSH 2
+#define OBJ_DC 3
+#define OBJ_METADC 4
+#define OBJ_PAL 5
+#define OBJ_FONT 6
+#define OBJ_BITMAP 7
+#define OBJ_REGION 8
+#define OBJ_METAFILE 9
+#define OBJ_MEMDC 10
+#define OBJ_EXTPEN 11
+#define OBJ_ENHMETADC 12
+#define OBJ_ENHMETAFILE 13
+
+ typedef union _GDI_OBJECT switch( DWORD ObjectType ) u
+ {
+ case OBJ_BITMAP: wireHBITMAP hBitmap;
+ case OBJ_PAL: wireHPALETTE hPalette;
+ default: wireHGLOBAL hGeneric;
+ } GDI_OBJECT;
+
+ typedef struct _userSTGMEDIUM
+ {
+ union _STGMEDIUM_UNION switch( DWORD tymed ) u
+ {
+ case TYMED_NULL: ;
+ case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict;
+ case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile;
+ case TYMED_GDI: GDI_OBJECT * hGdiHandle;
+ case TYMED_HGLOBAL: wireHGLOBAL hGlobal;
+ case TYMED_FILE: LPOLESTR lpszFileName;
+ case TYMED_ISTREAM: BYTE_BLOB * pstm;
+ case TYMED_ISTORAGE: BYTE_BLOB * pstg;
+ };
+ IUnknown * pUnkForRelease;
+ } userSTGMEDIUM;
+
+ typedef [unique] userSTGMEDIUM * wireSTGMEDIUM;
+ typedef [wire_marshal( wireSTGMEDIUM )] uSTGMEDIUM STGMEDIUM;
+
+ typedef [unique] userSTGMEDIUM * wireASYNC_STGMEDIUM;
+ typedef [wire_marshal( wireASYNC_STGMEDIUM )] STGMEDIUM ASYNC_STGMEDIUM;
+
+ typedef STGMEDIUM *LPSTGMEDIUM;
+
+ typedef struct _userFLAG_STGMEDIUM
+ {
+ long ContextFlags;
+ long fPassOwnership;
+ userSTGMEDIUM Stgmed;
+ } userFLAG_STGMEDIUM;
+
+ typedef [unique] userFLAG_STGMEDIUM * wireFLAG_STGMEDIUM;
+
+ typedef [wire_marshal( wireFLAG_STGMEDIUM )]
+ struct _FLAG_STGMEDIUM
+ {
+ long ContextFlags;
+ long fPassOwnership;
+ STGMEDIUM Stgmed;
+ } FLAG_STGMEDIUM;
+
+
+ [local]
+ void OnDataChange(
+ [in, unique] FORMATETC *pFormatetc,
+ [in, unique] STGMEDIUM *pStgmed);
+
+ [call_as(OnDataChange), async]
+ void RemoteOnDataChange(
+ [in, unique] FORMATETC *pFormatetc,
+ [in, unique] ASYNC_STGMEDIUM *pStgmed);
+
+ [local]
+ void OnViewChange(
+ [in] DWORD dwAspect,
+ [in] LONG lindex);
+
+ [call_as(OnViewChange), async]
+ void RemoteOnViewChange(
+ [in] DWORD dwAspect,
+ [in] LONG lindex);
+
+ [local]
+ void OnRename(
+ [in] IMoniker *pmk);
+
+ [call_as(OnRename), async]
+ void RemoteOnRename(
+ [in] IMoniker *pmk);
+
+ [local]
+ void OnSave();
+
+ [call_as(OnSave), async]
+ void RemoteOnSave();
+
+ [local]
+ void OnClose();
+
+ [call_as(OnClose)]
+ HRESULT RemoteOnClose();
+}
+
+[
+ object,
+ uuid(00000125-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IAdviseSink2 : IAdviseSink
+{
+
+ typedef [unique] IAdviseSink2 *LPADVISESINK2;
+
+ [local]
+ void OnLinkSrcChange(
+ [in, unique] IMoniker *pmk);
+
+ [call_as(OnLinkSrcChange), async]
+ void RemoteOnLinkSrcChange(
+ [in, unique] IMoniker *pmk);
+}
+
+[
+ object,
+ uuid(0000010e-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IDataObject : IUnknown
+{
+
+ typedef [unique] IDataObject *LPDATAOBJECT;
+
+ //DATA format DIRection
+ typedef enum tagDATADIR
+ {
+ DATADIR_GET = 1,
+ DATADIR_SET = 2
+ } DATADIR;
+
+ [local]
+ HRESULT GetData(
+ [in, unique] FORMATETC *pformatetcIn,
+ [out] STGMEDIUM *pmedium);
+
+ [call_as(GetData)]
+ HRESULT RemoteGetData(
+ [in, unique] FORMATETC *pformatetcIn,
+ [out] STGMEDIUM *pRemoteMedium);
+
+ [local]
+ HRESULT GetDataHere(
+ [in, unique] FORMATETC *pformatetc,
+ [in, out] STGMEDIUM *pmedium);
+
+ [call_as(GetDataHere)]
+ HRESULT RemoteGetDataHere(
+ [in, unique] FORMATETC *pformatetc,
+ [in, out] STGMEDIUM *pRemoteMedium);
+
+ HRESULT QueryGetData(
+ [in, unique] FORMATETC *pformatetc);
+
+
+ HRESULT GetCanonicalFormatEtc(
+ [in, unique] FORMATETC *pformatectIn,
+ [out] FORMATETC *pformatetcOut);
+
+ [local]
+ HRESULT SetData(
+ [in, unique] FORMATETC *pformatetc,
+ [in, unique] STGMEDIUM *pmedium,
+ [in] BOOL fRelease);
+
+ [call_as(SetData)]
+ HRESULT RemoteSetData(
+ [in, unique] FORMATETC *pformatetc,
+ [in, unique] FLAG_STGMEDIUM *pmedium,
+ [in] BOOL fRelease);
+
+ HRESULT EnumFormatEtc(
+ [in] DWORD dwDirection,
+ [out] IEnumFORMATETC **ppenumFormatEtc);
+
+ HRESULT DAdvise(
+ [in] FORMATETC *pformatetc,
+ [in] DWORD advf,
+ [in, unique] IAdviseSink *pAdvSink,
+ [out] DWORD *pdwConnection);
+
+ HRESULT DUnadvise(
+ [in] DWORD dwConnection);
+
+ HRESULT EnumDAdvise(
+ [out] IEnumSTATDATA **ppenumAdvise);
+
+}
+
+[
+ local,
+ object,
+ uuid(00000110-0000-0000-C000-000000000046)
+]
+
+interface IDataAdviseHolder : IUnknown
+{
+
+ typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
+
+ HRESULT Advise
+ (
+ [in, unique] IDataObject *pDataObject,
+ [in, unique] FORMATETC *pFetc,
+ [in] DWORD advf,
+ [in, unique] IAdviseSink *pAdvise,
+ [out] DWORD *pdwConnection
+ );
+
+ HRESULT Unadvise
+ (
+ [in] DWORD dwConnection
+ );
+
+ HRESULT EnumAdvise
+ (
+ [out] IEnumSTATDATA **ppenumAdvise
+ );
+
+ HRESULT SendOnDataChange
+ (
+ [in, unique] IDataObject *pDataObject,
+ [in] DWORD dwReserved,
+ [in] DWORD advf
+ );
+
+}
+
+[
+ local,
+ object,
+ uuid(00000016-0000-0000-C000-000000000046)
+]
+
+interface IMessageFilter : IUnknown
+{
+
+ typedef [unique] IMessageFilter *LPMESSAGEFILTER;
+
+// call type used by IMessageFilter::HandleIncomingMessage
+typedef enum tagCALLTYPE
+{
+ CALLTYPE_TOPLEVEL = 1, // toplevel call - no outgoing call
+ CALLTYPE_NESTED = 2, // callback on behalf of previous outgoing call - should always handle
+ CALLTYPE_ASYNC = 3, // aysnchronous call - can NOT be rejected
+ CALLTYPE_TOPLEVEL_CALLPENDING = 4, // new toplevel call with new LID
+ CALLTYPE_ASYNC_CALLPENDING = 5 // async call - can NOT be rejected
+} CALLTYPE;
+
+// status of server call - returned by IMessageFilter::HandleIncomingCall
+// and passed to IMessageFilter::RetryRejectedCall
+typedef enum tagSERVERCALL
+{
+ SERVERCALL_ISHANDLED = 0,
+ SERVERCALL_REJECTED = 1,
+ SERVERCALL_RETRYLATER = 2
+} SERVERCALL;
+
+// Pending type indicates the level of nesting
+typedef enum tagPENDINGTYPE
+{
+ PENDINGTYPE_TOPLEVEL = 1, // toplevel call
+ PENDINGTYPE_NESTED = 2 // nested call
+} PENDINGTYPE;
+
+// return values of MessagePending
+typedef enum tagPENDINGMSG
+{
+ PENDINGMSG_CANCELCALL = 0, // cancel the outgoing call
+ PENDINGMSG_WAITNOPROCESS = 1, // wait for the return and don't dispatch the message
+ PENDINGMSG_WAITDEFPROCESS = 2 // wait and dispatch the message
+
+} PENDINGMSG;
+
+// additional interface information about the incoming call
+typedef struct tagINTERFACEINFO
+{
+ IUnknown *pUnk; // the pointer to the object
+ IID iid; // interface id
+ WORD wMethod; // interface method
+} INTERFACEINFO, *LPINTERFACEINFO;
+
+ DWORD HandleInComingCall
+ (
+ [in] DWORD dwCallType,
+ [in] HTASK htaskCaller,
+ [in] DWORD dwTickCount,
+ [in] LPINTERFACEINFO lpInterfaceInfo
+ );
+
+ DWORD RetryRejectedCall
+ (
+ [in] HTASK htaskCallee,
+ [in] DWORD dwTickCount,
+ [in] DWORD dwRejectType
+ );
+
+ DWORD MessagePending
+ (
+ [in] HTASK htaskCallee,
+ [in] DWORD dwTickCount,
+ [in] DWORD dwPendingType
+ );
+}
+
+
+/****************************************************************************
+ * Object Remoting Interfaces
+ ****************************************************************************/
+
+[
+ local,
+ object,
+ uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcChannelBuffer : IUnknown
+{
+
+ typedef unsigned long RPCOLEDATAREP;
+
+ typedef struct tagRPCOLEMESSAGE
+ {
+ void *reserved1;
+ RPCOLEDATAREP dataRepresentation;
+ void *Buffer;
+ ULONG cbBuffer;
+ ULONG iMethod;
+ void *reserved2[5];
+ ULONG rpcFlags;
+ } RPCOLEMESSAGE;
+
+ typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
+
+ HRESULT GetBuffer
+ (
+ [in] RPCOLEMESSAGE *pMessage,
+ [in] REFIID riid
+ );
+
+ HRESULT SendReceive
+ (
+ [in,out] RPCOLEMESSAGE *pMessage,
+ [out] ULONG *pStatus
+ );
+
+ HRESULT FreeBuffer
+ (
+ [in] RPCOLEMESSAGE *pMessage
+ );
+
+ HRESULT GetDestCtx
+ (
+ [out] DWORD *pdwDestContext,
+ [out] void **ppvDestContext
+ );
+
+ HRESULT IsConnected
+ (
+ void
+ );
+
+}
+
+[
+ local,
+ object,
+ uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcProxyBuffer : IUnknown
+{
+
+ HRESULT Connect
+ (
+ [in, unique] IRpcChannelBuffer *pRpcChannelBuffer
+ );
+
+ void Disconnect
+ (
+ void
+ );
+
+}
+
+[
+ local,
+ object,
+ uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcStubBuffer : IUnknown
+{
+
+ HRESULT Connect
+ (
+ [in] IUnknown *pUnkServer
+ );
+
+ void Disconnect();
+
+ HRESULT Invoke
+ (
+ [in] RPCOLEMESSAGE *_prpcmsg,
+ [in] IRpcChannelBuffer *_pRpcChannelBuffer
+ );
+
+ IRpcStubBuffer *IsIIDSupported
+ (
+ [in] REFIID riid
+ );
+
+ ULONG CountRefs
+ (
+ void
+ );
+
+ HRESULT DebugServerQueryInterface
+ (
+ void **ppv
+ );
+
+ void DebugServerRelease
+ (
+ void *pv
+ );
+
+}
+
+
+
+[
+ local,
+ object,
+ uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
+]
+interface IPSFactoryBuffer : IUnknown
+{
+
+ HRESULT CreateProxy
+ (
+ [in] IUnknown *pUnkOuter,
+ [in] REFIID riid,
+ [out] IRpcProxyBuffer **ppProxy,
+ [out] void **ppv
+ );
+
+ HRESULT CreateStub
+ (
+ [in] REFIID riid,
+ [in, unique] IUnknown *pUnkServer,
+ [out] IRpcStubBuffer **ppStub
+ );
+}
+
+cpp_quote( "#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
+cpp_quote( "// This interface is only valid on Windows NT 4.0" )
+
+[
+ local,
+ object,
+ uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
+]
+interface IChannelHook : IUnknown
+{
+ void ClientGetSize(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [out] ULONG *pDataSize );
+
+ void ClientFillBuffer(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in, out] ULONG *pDataSize,
+ [in] void *pDataBuffer );
+
+ void ClientNotify(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in] ULONG cbDataSize,
+ [in] void *pDataBuffer,
+ [in] DWORD lDataRep,
+ [in] HRESULT hrFault );
+
+ void ServerNotify(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in] ULONG cbDataSize,
+ [in] void *pDataBuffer,
+ [in] DWORD lDataRep );
+
+ void ServerGetSize(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in] HRESULT hrFault,
+ [out] ULONG *pDataSize );
+
+ void ServerFillBuffer(
+ [in] REFGUID uExtent,
+ [in] REFIID riid,
+ [in, out] ULONG *pDataSize,
+ [in] void *pDataBuffer,
+ [in] HRESULT hrFault );
+};
+
+cpp_quote( "#endif //DCOM" )
+
+/****************************************************************************
+ * Property Storage Interfaces
+ ****************************************************************************/
+
+interface IPropertyStorage;
+interface IEnumSTATPROPSTG;
+interface IEnumSTATPROPSETSTG;
+
+[
+ object,
+ uuid(00000138-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IPropertyStorage : IUnknown
+{
+
+ cpp_quote("")
+ cpp_quote("// Well-known Property Set Format IDs")
+ extern const FMTID FMTID_SummaryInformation;
+ extern const FMTID FMTID_DocSummaryInformation;
+ extern const FMTID FMTID_UserDefinedProperties;
+
+ cpp_quote("")
+ cpp_quote("// Flags for IPropertySetStorage::Create")
+ const DWORD PROPSETFLAG_DEFAULT = 0;
+ const DWORD PROPSETFLAG_NONSIMPLE = 1;
+ const DWORD PROPSETFLAG_ANSI = 2;
+ cpp_quote("// This flag is only supported on StgCreatePropStg & StgOpenPropStg")
+ const DWORD PROPSETFLAG_UNBUFFERED = 4;
+
+ typedef [unique] IPropertyStorage * LPPROPERTYSTORAGE;
+
+ typedef struct tagPROPVARIANT PROPVARIANT;
+
+ #define TYPEDEF_CA(type, name) \
+ typedef struct tag##name\
+ {\
+ ULONG cElems;\
+ [size_is( cElems )]\
+ type * pElems;\
+ } name
+
+ TYPEDEF_CA(unsigned char, CAUB);
+ TYPEDEF_CA(short, CAI);
+ TYPEDEF_CA(USHORT, CAUI);
+ TYPEDEF_CA(long, CAL);
+ TYPEDEF_CA(ULONG, CAUL);
+ TYPEDEF_CA(float, CAFLT);
+ TYPEDEF_CA(double, CADBL);
+ TYPEDEF_CA(CY, CACY);
+ TYPEDEF_CA(DATE, CADATE);
+ TYPEDEF_CA(BSTR, CABSTR);
+ TYPEDEF_CA(BSTRBLOB, CABSTRBLOB);
+ TYPEDEF_CA(VARIANT_BOOL, CABOOL);
+ TYPEDEF_CA(SCODE, CASCODE);
+ TYPEDEF_CA(PROPVARIANT, CAPROPVARIANT);
+ TYPEDEF_CA(LARGE_INTEGER, CAH);
+ TYPEDEF_CA(ULARGE_INTEGER, CAUH);
+ TYPEDEF_CA(LPSTR, CALPSTR);
+ TYPEDEF_CA(LPWSTR, CALPWSTR);
+ TYPEDEF_CA(FILETIME, CAFILETIME);
+ TYPEDEF_CA(CLIPDATA, CACLIPDATA);
+ TYPEDEF_CA(CLSID, CACLSID);
+
+cpp_quote("// Disable the warning about the obsolete member named 'bool'")
+cpp_quote("// 'bool', 'true', 'false', 'mutable', 'explicit', & 'typename'")
+cpp_quote("// are reserved keywords")
+cpp_quote("#pragma warning(disable:4237)")
+
+ struct tagPROPVARIANT
+ {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ [switch_is((unsigned short) (vt & 0x1fff))] union
+ {
+ [case(VT_EMPTY, VT_NULL)]
+ ;
+ [case(VT_UI1)]
+ UCHAR bVal;
+ [case(VT_I2)]
+ short iVal;
+ [case(VT_UI2)]
+ USHORT uiVal;
+ [case(VT_BOOL)]
+ VARIANT_BOOL boolVal;
+ [case(VT_ILLEGAL)] // obsolete field name; use boolVal
+ _VARIANT_BOOL bool;
+ [case(VT_I4)]
+ long lVal;
+ [case(VT_UI4)]
+ ULONG ulVal;
+ [case(VT_R4)]
+ float fltVal;
+ [case(VT_ERROR)]
+ SCODE scode;
+ [case(VT_I8)]
+ LARGE_INTEGER hVal;
+ [case(VT_UI8)]
+ ULARGE_INTEGER uhVal;
+ [case(VT_R8)]
+ double dblVal;
+ [case(VT_CY)]
+ CY cyVal;
+ [case(VT_DATE)]
+ DATE date;
+ [case(VT_FILETIME)]
+ FILETIME filetime;
+ [case(VT_CLSID)]
+ CLSID * puuid;
+ [case(VT_BLOB, VT_BLOB_OBJECT)]
+ BLOB blob;
+ [case(VT_CF)]
+ CLIPDATA *pclipdata;
+ [case(VT_STREAM, VT_STREAMED_OBJECT)]
+ IStream * pStream;
+ [case(VT_STORAGE, VT_STORED_OBJECT)]
+ IStorage * pStorage;
+ [case(VT_BSTR)]
+ BSTR bstrVal;
+ [case(VT_BSTR_BLOB)] // System use only
+ BSTRBLOB bstrblobVal;
+ [case(VT_LPSTR)]
+ LPSTR pszVal;
+ [case(VT_LPWSTR)]
+ LPWSTR pwszVal;
+ [case(VT_UI1|VT_VECTOR)]
+ CAUB caub;
+ [case(VT_I2|VT_VECTOR)]
+ CAI cai;
+ [case(VT_UI2|VT_VECTOR)]
+ CAUI caui;
+ [case(VT_BOOL|VT_VECTOR)]
+ CABOOL cabool;
+ [case(VT_I4|VT_VECTOR)]
+ CAL cal;
+ [case(VT_UI4|VT_VECTOR)]
+ CAUL caul;
+ [case(VT_R4|VT_VECTOR)]
+ CAFLT caflt;
+ [case(VT_ERROR|VT_VECTOR)]
+ CASCODE cascode;
+ [case(VT_I8|VT_VECTOR)]
+ CAH cah;
+ [case(VT_UI8|VT_VECTOR)]
+ CAUH cauh;
+ [case(VT_R8|VT_VECTOR)]
+ CADBL cadbl;
+ [case(VT_CY|VT_VECTOR)]
+ CACY cacy;
+ [case(VT_DATE|VT_VECTOR)]
+ CADATE cadate;
+ [case(VT_FILETIME|VT_VECTOR)]
+ CAFILETIME cafiletime;
+ [case(VT_CLSID|VT_VECTOR)]
+ CACLSID cauuid;
+ [case(VT_CF|VT_VECTOR)]
+ CACLIPDATA caclipdata;
+ [case(VT_BSTR|VT_VECTOR)]
+ CABSTR cabstr;
+ [case(VT_BSTR_BLOB|VT_VECTOR)] // System use only
+ CABSTRBLOB cabstrblob;
+ [case(VT_LPSTR|VT_VECTOR)]
+ CALPSTR calpstr;
+ [case(VT_LPWSTR|VT_VECTOR)]
+ CALPWSTR calpwstr;
+ [case(VT_VARIANT|VT_VECTOR)]
+ CAPROPVARIANT capropvar;
+ };
+ };
+
+ typedef struct tagPROPVARIANT * LPPROPVARIANT;
+
+ cpp_quote("// Reserved global Property IDs")
+ const PROPID PID_DICTIONARY = 0x00000000;
+ const PROPID PID_CODEPAGE = 0x00000001;
+ const PROPID PID_FIRST_USABLE = 0x00000002;
+ const PROPID PID_FIRST_NAME_DEFAULT = 0x00000fff;
+ const PROPID PID_LOCALE = 0x80000000;
+ const PROPID PID_MODIFY_TIME = 0x80000001;
+ const PROPID PID_SECURITY = 0x80000002;
+ const PROPID PID_ILLEGAL = 0xffffffff;
+
+
+ cpp_quote("// Property IDs for the SummaryInformation Property Set")
+ cpp_quote("")
+ cpp_quote("#define PIDSI_TITLE 0x00000002L // VT_LPSTR")
+ cpp_quote("#define PIDSI_SUBJECT 0x00000003L // VT_LPSTR")
+ cpp_quote("#define PIDSI_AUTHOR 0x00000004L // VT_LPSTR")
+ cpp_quote("#define PIDSI_KEYWORDS 0x00000005L // VT_LPSTR")
+ cpp_quote("#define PIDSI_COMMENTS 0x00000006L // VT_LPSTR")
+ cpp_quote("#define PIDSI_TEMPLATE 0x00000007L // VT_LPSTR")
+ cpp_quote("#define PIDSI_LASTAUTHOR 0x00000008L // VT_LPSTR")
+ cpp_quote("#define PIDSI_REVNUMBER 0x00000009L // VT_LPSTR")
+ cpp_quote("#define PIDSI_EDITTIME 0x0000000aL // VT_FILETIME (UTC)")
+ cpp_quote("#define PIDSI_LASTPRINTED 0x0000000bL // VT_FILETIME (UTC)")
+ cpp_quote("#define PIDSI_CREATE_DTM 0x0000000cL // VT_FILETIME (UTC)")
+ cpp_quote("#define PIDSI_LASTSAVE_DTM 0x0000000dL // VT_FILETIME (UTC)")
+ cpp_quote("#define PIDSI_PAGECOUNT 0x0000000eL // VT_I4")
+ cpp_quote("#define PIDSI_WORDCOUNT 0x0000000fL // VT_I4")
+ cpp_quote("#define PIDSI_CHARCOUNT 0x00000010L // VT_I4")
+ cpp_quote("#define PIDSI_THUMBNAIL 0x00000011L // VT_CF")
+ cpp_quote("#define PIDSI_APPNAME 0x00000012L // VT_LPSTR")
+ cpp_quote("#define PIDSI_DOC_SECURITY 0x00000013L // VT_I4")
+
+ const ULONG PRSPEC_INVALID = 0xffffffff;
+ const ULONG PRSPEC_LPWSTR = 0;
+ const ULONG PRSPEC_PROPID = 1;
+
+ typedef struct tagPROPSPEC
+ {
+
+ ULONG ulKind;
+ [switch_is(ulKind)] union
+ {
+ [case(PRSPEC_PROPID)]
+ PROPID propid;
+ [case(PRSPEC_LPWSTR)]
+ LPOLESTR lpwstr;
+ [default] ;
+ } ;
+
+ } PROPSPEC;
+
+ typedef struct tagSTATPROPSTG
+ {
+
+ LPOLESTR lpwstrName;
+ PROPID propid;
+ VARTYPE vt;
+
+ } STATPROPSTG;
+
+ cpp_quote("// Macros for parsing the OS Version of the Property Set Header")
+ cpp_quote("#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD( (dwOSVer) )")
+ cpp_quote("#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD( (dwOSVer) ))")
+ cpp_quote("#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD( (dwOSVer) ))")
+ cpp_quote("#define PROPSETHDR_OSVERSION_UNKNOWN 0xFFFFFFFF")
+
+
+ typedef struct tagSTATPROPSETSTG
+ {
+
+ FMTID fmtid;
+ CLSID clsid;
+ DWORD grfFlags;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD dwOSVersion;
+
+ } STATPROPSETSTG;
+
+
+ // When this IDL file is used for "IProp.dll" (the
+ // standalone property set DLL), we must have local
+ // and remotable routines (call_as routines are used
+ // to remove BSTRs, which are not remotable with some
+ // RPC run-times).
+ //
+ // For the remotable routines, we must use pointer
+ // parameters (e.g. "*rgspec" rather than "rgspec[]")
+ // so that the MIDL 2.0 compiler will generate an
+ // interpereted proxy/stub, rather than inline.
+
+#ifdef IPROPERTY_DLL
+ [local]
+#endif
+ HRESULT ReadMultiple(
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC rgpspec[],
+ [out, size_is(cpspec)]
+ PROPVARIANT rgpropvar[]
+ );
+
+#ifdef IPROPERTY_DLL
+ [call_as(ReadMultiple)]
+ HRESULT RemoteReadMultiple(
+ [out] BOOL *pfBstrPresent,
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC *rgpspec,
+ [out, size_is(cpspec)]
+ PROPVARIANT *rgpropvar
+ );
+#endif
+
+#ifdef IPROPERTY_DLL
+ [local]
+#endif
+ HRESULT WriteMultiple(
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC rgpspec[],
+ [in, size_is(cpspec)]
+ const PROPVARIANT rgpropvar[],
+ [in] PROPID propidNameFirst
+ );
+
+#ifdef IPROPERTY_DLL
+ [call_as(WriteMultiple)]
+ HRESULT RemoteWriteMultiple(
+ [in] BOOL fBstrPresent,
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC *rgpspec,
+ [in, size_is(cpspec)]
+ const PROPVARIANT *rgpropvar,
+ [in] PROPID propidNameFirst
+ );
+#endif
+
+#ifdef IPROPERTY_DLL
+ [local]
+#endif
+ HRESULT DeleteMultiple(
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC rgpspec[]
+ );
+
+#ifdef IPROPERTY_DLL
+ [call_as(DeleteMultiple)]
+ HRESULT RemoteDeleteMultiple(
+ [in] ULONG cpspec,
+ [in, size_is(cpspec)]
+ const PROPSPEC *rgpspec
+ );
+#endif
+
+ HRESULT ReadPropertyNames(
+ [in] ULONG cpropid,
+ [in, size_is(cpropid)]
+ const PROPID rgpropid[],
+ [out, size_is(cpropid)]
+ LPOLESTR rglpwstrName[]
+ );
+
+ HRESULT WritePropertyNames(
+ [in] ULONG cpropid,
+ [in, size_is(cpropid)]
+ const PROPID rgpropid[],
+ [in, size_is(cpropid)]
+ const LPOLESTR rglpwstrName[]
+ );
+
+ HRESULT DeletePropertyNames(
+ [in] ULONG cpropid,
+ [in, size_is(cpropid)]
+ const PROPID rgpropid[]
+ );
+
+ HRESULT Commit(
+ [in] DWORD grfCommitFlags
+ );
+
+ HRESULT Revert();
+
+ HRESULT Enum(
+ [out] IEnumSTATPROPSTG ** ppenum
+ );
+
+ HRESULT SetTimes(
+ [in] FILETIME const * pctime,
+ [in] FILETIME const * patime,
+ [in] FILETIME const * pmtime
+ );
+
+ HRESULT SetClass(
+ [in] REFCLSID clsid
+ );
+
+ HRESULT Stat(
+ [out] STATPROPSETSTG * pstatpsstg
+ );
+}
+
+[
+ object,
+ uuid(0000013A-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IPropertySetStorage : IUnknown
+{
+
+ typedef [unique] IPropertySetStorage * LPPROPERTYSETSTORAGE;
+
+ HRESULT Create(
+ [in] REFFMTID rfmtid,
+ [in, unique]
+ const CLSID * pclsid,
+ [in] DWORD grfFlags,
+ [in] DWORD grfMode,
+ [out] IPropertyStorage ** ppprstg
+ );
+
+ HRESULT Open(
+ [in] REFFMTID rfmtid,
+ [in] DWORD grfMode,
+ [out] IPropertyStorage ** ppprstg
+ );
+
+ HRESULT Delete(
+ [in] REFFMTID rfmtid
+ );
+
+ HRESULT Enum(
+ [out] IEnumSTATPROPSETSTG ** ppenum
+ );
+
+}
+
+
+[
+ object,
+ uuid(00000139-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumSTATPROPSTG : IUnknown
+{
+
+ typedef [unique] IEnumSTATPROPSTG * LPENUMSTATPROPSTG;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATPROPSTG * rgelt,
+ [out] ULONG * pceltFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATPROPSTG * rgelt,
+ [out] ULONG * pceltFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG celt
+ );
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumSTATPROPSTG ** ppenum
+ );
+}
+
+
+[
+ object,
+ uuid(0000013B-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumSTATPROPSETSTG : IUnknown
+{
+
+ typedef [unique] IEnumSTATPROPSETSTG * LPENUMSTATPROPSETSTG;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATPROPSETSTG * rgelt,
+ [out] ULONG * pceltFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ STATPROPSETSTG * rgelt,
+ [out] ULONG * pceltFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG celt
+ );
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumSTATPROPSETSTG ** ppenum
+ );
+}
+
+
+cpp_quote("WINOLEAPI PropVariantCopy ( PROPVARIANT * pvarDest, const PROPVARIANT * pvarSrc );")
+cpp_quote("WINOLEAPI PropVariantClear ( PROPVARIANT * pvar );")
+cpp_quote("WINOLEAPI FreePropVariantArray ( ULONG cVariants, PROPVARIANT * rgvars );")
+
+cpp_quote("")
+cpp_quote("#define _PROPVARIANTINIT_DEFINED_")
+cpp_quote("# ifdef __cplusplus")
+cpp_quote("inline void PropVariantInit ( PROPVARIANT * pvar )")
+cpp_quote("{")
+cpp_quote(" memset ( pvar, 0, sizeof(PROPVARIANT) );")
+cpp_quote("}")
+cpp_quote("# else")
+cpp_quote("# define PropVariantInit(pvar) memset ( pvar, 0, sizeof(PROPVARIANT) )")
+cpp_quote("# endif")
+cpp_quote("")
+
+cpp_quote("")
+cpp_quote("#ifndef _STGCREATEPROPSTG_DEFINED_")
+cpp_quote("WINOLEAPI StgCreatePropStg( IUnknown* pUnk, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );")
+cpp_quote("WINOLEAPI StgOpenPropStg( IUnknown* pUnk, REFFMTID fmtid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );")
+cpp_quote("WINOLEAPI StgCreatePropSetStg( IStorage *pStorage, DWORD dwReserved, IPropertySetStorage **ppPropSetStg);")
+
+cpp_quote("")
+cpp_quote("#define CCH_MAX_PROPSTG_NAME 31")
+cpp_quote("WINOLEAPI FmtIdToPropStgName( const FMTID *pfmtid, LPOLESTR oszName );" )
+cpp_quote("WINOLEAPI PropStgNameToFmtId( const LPOLESTR oszName, FMTID *pfmtid );" )
+cpp_quote("#endif")
+
+
+
+/****************************************************************************
+ * Connection Point Interfaces
+ ****************************************************************************/
+#ifdef __INCLUDE_CPIFS
+interface IConnectionPointContainer;
+interface IConnectionPoint;
+interface IEnumConnections;
+interface IEnumConnectionPoints;
+
+[
+ object,
+ uuid(B196B286-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+interface IConnectionPoint : IUnknown
+{
+ typedef IConnectionPoint * PCONNECTIONPOINT;
+ typedef IConnectionPoint * LPCONNECTIONPOINT;
+
+ HRESULT GetConnectionInterface
+ (
+ [out] IID * piid
+ );
+
+ HRESULT GetConnectionPointContainer
+ (
+ [out] IConnectionPointContainer ** ppCPC
+ );
+
+ HRESULT Advise
+ (
+ [in] IUnknown * pUnkSink,
+ [out] DWORD * pdwCookie
+ );
+
+ HRESULT Unadvise
+ (
+ [in] DWORD dwCookie
+ );
+
+ HRESULT EnumConnections
+ (
+ [out] IEnumConnections ** ppEnum
+ );
+}
+
+[
+ object,
+ uuid(B196B284-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+interface IConnectionPointContainer : IUnknown
+{
+ typedef IConnectionPointContainer * PCONNECTIONPOINTCONTAINER;
+ typedef IConnectionPointContainer * LPCONNECTIONPOINTCONTAINER;
+
+ HRESULT EnumConnectionPoints
+ (
+ [out] IEnumConnectionPoints ** ppEnum
+ );
+
+ HRESULT FindConnectionPoint
+ (
+ [in] REFIID riid,
+ [out] IConnectionPoint ** ppCP
+ );
+}
+
+
+[
+ object,
+ uuid(B196B287-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+interface IEnumConnections : IUnknown
+{
+ typedef IEnumConnections * PENUMCONNECTIONS;
+ typedef IEnumConnections * LPENUMCONNECTIONS;
+
+ typedef struct tagCONNECTDATA
+ {
+ IUnknown * pUnk;
+ DWORD dwCookie;
+ } CONNECTDATA;
+
+ typedef struct tagCONNECTDATA * PCONNECTDATA;
+ typedef struct tagCONNECTDATA * LPCONNECTDATA;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG cConnections,
+ [out,
+ size_is(cConnections),
+ length_is(*lpcFetched)] CONNECTDATA * rgcd,
+ [out] ULONG * lpcFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG cConnections,
+ [out,
+ size_is(cConnections),
+ length_is(*lpcFetched)] CONNECTDATA * rgcd,
+ [out] ULONG * lpcFetched
+ );
+
+ HRESULT Skip
+ (
+ [in] ULONG cConnections
+ );
+
+ HRESULT Reset
+ (
+ void
+ );
+
+ HRESULT Clone
+ (
+ [out] IEnumConnections ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(B196B285-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+interface IEnumConnectionPoints : IUnknown
+{
+ typedef IEnumConnectionPoints * PENUMCONNECTIONPOINTS;
+ typedef IEnumConnectionPoints * LPENUMCONNECTIONPOINTS;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG cConnections,
+ [out,
+ size_is(cConnections),
+ length_is(*lpcFetched)] IConnectionPoint ** rgpcn,
+ [out] ULONG * lpcFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG cConnections,
+ [out,
+ size_is(cConnections),
+ length_is(*lpcFetched)] IConnectionPoint ** rgpcn,
+ [out] ULONG * lpcFetched
+ );
+
+ HRESULT Skip
+ (
+ [in] ULONG cConnections
+ );
+
+ HRESULT Reset
+ (
+ void
+ );
+
+ HRESULT Clone
+ (
+ [out] IEnumConnectionPoints ** ppEnum
+ );
+}
+#endif // __INCLUDE_CPIFS
+
+
+cpp_quote( "#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
+cpp_quote( "// This interface is only valid on Windows NT 4.0" )
+
+[
+ local,
+ object,
+ uuid(0000013D-0000-0000-C000-000000000046)
+]
+interface IClientSecurity : IUnknown
+{
+
+ typedef struct tagSOLE_AUTHENTICATION_SERVICE
+ {
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ OLECHAR *pPrincipalName;
+ HRESULT hr;
+ } SOLE_AUTHENTICATION_SERVICE;
+
+ typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
+
+ typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
+ {
+ EOAC_NONE = 0x0,
+ EOAC_MUTUAL_AUTH = 0x1,
+
+ // These are only valid for CoInitializeSecurity
+ EOAC_SECURE_REFS = 0x2,
+ EOAC_ACCESS_CONTROL = 0x4,
+ EOAC_APPID = 0x8,
+ EOAC_DYNAMIC = 0x10
+ } EOLE_AUTHENTICATION_CAPABILITIES;
+
+ HRESULT QueryBlanket
+ (
+ [in] IUnknown *pProxy,
+ [out] DWORD *pAuthnSvc,
+ [out] DWORD *pAuthzSvc,
+ [out] OLECHAR **pServerPrincName,
+ [out] DWORD *pAuthnLevel,
+ [out] DWORD *pImpLevel,
+ [out] void **pAuthInfo,
+ [out] DWORD *pCapabilites
+ );
+
+ HRESULT SetBlanket
+ (
+ [in] IUnknown *pProxy,
+ [in] DWORD AuthnSvc,
+ [in] DWORD AuthzSvc,
+ [in] OLECHAR *pServerPrincName,
+ [in] DWORD AuthnLevel,
+ [in] DWORD ImpLevel,
+ [in] void *pAuthInfo,
+ [in] DWORD Capabilities
+ );
+
+ HRESULT CopyProxy
+ (
+ [in] IUnknown *pProxy,
+ [out] IUnknown **ppCopy
+ );
+}
+
+[
+ local,
+ object,
+ uuid(0000013E-0000-0000-C000-000000000046)
+]
+interface IServerSecurity : IUnknown
+{
+ HRESULT QueryBlanket
+ (
+ [out] DWORD *pAuthnSvc,
+ [out] DWORD *pAuthzSvc,
+ [out] OLECHAR **pServerPrincName,
+ [out] DWORD *pAuthnLevel,
+ [out] DWORD *pImpLevel,
+ [out] void **pPrivs,
+ [out] DWORD *pCapabilities
+ );
+
+ HRESULT ImpersonateClient();
+
+ HRESULT RevertToSelf();
+
+ BOOL IsImpersonating();
+}
+
+[
+ object,
+ uuid(00000140-0000-0000-C000-000000000046)
+]
+
+interface IClassActivator : IUnknown
+{
+ HRESULT GetClassObject(
+ [in] REFCLSID rclsid,
+ [in] DWORD dwClassContext,
+ [in] LCID locale,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppv);
+}
+
+cpp_quote( "#endif //DCOM" )
+
+
+[
+ object,
+ uuid(99caf010-415e-11cf-8814-00aa00b569f5),
+ pointer_default(unique)
+]
+
+interface IFillLockBytes: IUnknown
+{
+ [local]
+ HRESULT FillAppend
+ (
+ [in, size_is(cb)] void const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten
+ );
+
+ [call_as(FillAppend)]
+ HRESULT _stdcall RemoteFillAppend(
+ [in, size_is(cb)] byte const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ [local]
+ HRESULT FillAt
+ (
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] void const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten
+ );
+
+ [call_as(FillAt)]
+ HRESULT _stdcall RemoteFillAt(
+ [in] ULARGE_INTEGER ulOffset,
+ [in, size_is(cb)] byte const *pv,
+ [in] ULONG cb,
+ [out] ULONG *pcbWritten);
+
+ HRESULT SetFillSize
+ (
+ [in] ULARGE_INTEGER ulSize
+ );
+
+ HRESULT Terminate
+ (
+ [in] BOOL bCanceled
+ );
+}
+
+
+[
+ object,
+ uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
+ pointer_default(unique)
+]
+
+interface IProgressNotify: IUnknown
+{
+ HRESULT OnProgress
+ (
+ [in] DWORD dwProgressCurrent,
+ [in] DWORD dwProgressMaximum,
+ [in] BOOL fAccurate,
+ [in] BOOL fOwner
+ );
+}
+
+
+[
+ local,
+ object,
+ uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
+ pointer_default(unique)
+]
+
+interface ILayoutStorage: IUnknown
+{
+ typedef struct tagStorageLayout
+ {
+ DWORD LayoutType;
+ OLECHAR *pwcsElementName;
+ LARGE_INTEGER cOffset;
+ LARGE_INTEGER cBytes;
+ } StorageLayout;
+
+ HRESULT __stdcall LayoutScript
+ (
+ [in] StorageLayout *pStorageLayout,
+ [in] DWORD nEntries,
+ [in] DWORD glfInterleavedFlag
+ );
+ HRESULT __stdcall BeginMonitor(void);
+
+ HRESULT __stdcall EndMonitor(void);
+
+ HRESULT __stdcall ReLayoutDocfile
+ (
+ [in] OLECHAR *pwcsNewDfName
+ );
+
+ HRESULT __stdcall ReLayoutDocfileOnILockBytes
+ (
+ [in] ILockBytes *pILockBytes
+ );
+
+
+}
+
+[
+ uuid(00000022-0000-0000-C000-000000000046),
+ version(1.0),
+ pointer_default(unique)
+ , object
+]
+
+interface ISurrogate : IUnknown
+{
+ typedef [unique] ISurrogate* LPSURROGATE;
+
+ HRESULT LoadDllServer(
+ [in] REFCLSID Clsid);
+ HRESULT FreeSurrogate();
+}
+
+
diff --git a/public/sdk/inc/ocach2.h b/public/sdk/inc/ocach2.h
new file mode 100644
index 000000000..88dab1a84
--- /dev/null
+++ b/public/sdk/inc/ocach2.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: ocach2.h
+//
+// Contents: Replacement for ocach2.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/ocachc.h b/public/sdk/inc/ocachc.h
new file mode 100644
index 000000000..b9c0fc3d2
--- /dev/null
+++ b/public/sdk/inc/ocachc.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: ocachc.h
+//
+// Contents: Replacement for ocachc.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/ocache.h b/public/sdk/inc/ocache.h
new file mode 100644
index 000000000..924484b36
--- /dev/null
+++ b/public/sdk/inc/ocache.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: ocache.h
+//
+// Contents: Replacement for ocache.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/ocidl.h b/public/sdk/inc/ocidl.h
new file mode 100644
index 000000000..992b21288
--- /dev/null
+++ b/public/sdk/inc/ocidl.h
@@ -0,0 +1,7938 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:36:36 1996
+ */
+/* Compiler settings for ocidl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __ocidl_h__
+#define __ocidl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IEnumConnections_FWD_DEFINED__
+#define __IEnumConnections_FWD_DEFINED__
+typedef interface IEnumConnections IEnumConnections;
+#endif /* __IEnumConnections_FWD_DEFINED__ */
+
+
+#ifndef __IConnectionPoint_FWD_DEFINED__
+#define __IConnectionPoint_FWD_DEFINED__
+typedef interface IConnectionPoint IConnectionPoint;
+#endif /* __IConnectionPoint_FWD_DEFINED__ */
+
+
+#ifndef __IEnumConnectionPoints_FWD_DEFINED__
+#define __IEnumConnectionPoints_FWD_DEFINED__
+typedef interface IEnumConnectionPoints IEnumConnectionPoints;
+#endif /* __IEnumConnectionPoints_FWD_DEFINED__ */
+
+
+#ifndef __IConnectionPointContainer_FWD_DEFINED__
+#define __IConnectionPointContainer_FWD_DEFINED__
+typedef interface IConnectionPointContainer IConnectionPointContainer;
+#endif /* __IConnectionPointContainer_FWD_DEFINED__ */
+
+
+#ifndef __IClassFactory2_FWD_DEFINED__
+#define __IClassFactory2_FWD_DEFINED__
+typedef interface IClassFactory2 IClassFactory2;
+#endif /* __IClassFactory2_FWD_DEFINED__ */
+
+
+#ifndef __IProvideClassInfo_FWD_DEFINED__
+#define __IProvideClassInfo_FWD_DEFINED__
+typedef interface IProvideClassInfo IProvideClassInfo;
+#endif /* __IProvideClassInfo_FWD_DEFINED__ */
+
+
+#ifndef __IProvideClassInfo2_FWD_DEFINED__
+#define __IProvideClassInfo2_FWD_DEFINED__
+typedef interface IProvideClassInfo2 IProvideClassInfo2;
+#endif /* __IProvideClassInfo2_FWD_DEFINED__ */
+
+
+#ifndef __IOleControl_FWD_DEFINED__
+#define __IOleControl_FWD_DEFINED__
+typedef interface IOleControl IOleControl;
+#endif /* __IOleControl_FWD_DEFINED__ */
+
+
+#ifndef __IOleControlSite_FWD_DEFINED__
+#define __IOleControlSite_FWD_DEFINED__
+typedef interface IOleControlSite IOleControlSite;
+#endif /* __IOleControlSite_FWD_DEFINED__ */
+
+
+#ifndef __IPropertyPage_FWD_DEFINED__
+#define __IPropertyPage_FWD_DEFINED__
+typedef interface IPropertyPage IPropertyPage;
+#endif /* __IPropertyPage_FWD_DEFINED__ */
+
+
+#ifndef __IPropertyPage2_FWD_DEFINED__
+#define __IPropertyPage2_FWD_DEFINED__
+typedef interface IPropertyPage2 IPropertyPage2;
+#endif /* __IPropertyPage2_FWD_DEFINED__ */
+
+
+#ifndef __IPropertyPageSite_FWD_DEFINED__
+#define __IPropertyPageSite_FWD_DEFINED__
+typedef interface IPropertyPageSite IPropertyPageSite;
+#endif /* __IPropertyPageSite_FWD_DEFINED__ */
+
+
+#ifndef __IPropertyNotifySink_FWD_DEFINED__
+#define __IPropertyNotifySink_FWD_DEFINED__
+typedef interface IPropertyNotifySink IPropertyNotifySink;
+#endif /* __IPropertyNotifySink_FWD_DEFINED__ */
+
+
+#ifndef __ISpecifyPropertyPages_FWD_DEFINED__
+#define __ISpecifyPropertyPages_FWD_DEFINED__
+typedef interface ISpecifyPropertyPages ISpecifyPropertyPages;
+#endif /* __ISpecifyPropertyPages_FWD_DEFINED__ */
+
+
+#ifndef __IPersistMemory_FWD_DEFINED__
+#define __IPersistMemory_FWD_DEFINED__
+typedef interface IPersistMemory IPersistMemory;
+#endif /* __IPersistMemory_FWD_DEFINED__ */
+
+
+#ifndef __IPersistStreamInit_FWD_DEFINED__
+#define __IPersistStreamInit_FWD_DEFINED__
+typedef interface IPersistStreamInit IPersistStreamInit;
+#endif /* __IPersistStreamInit_FWD_DEFINED__ */
+
+
+#ifndef __IPersistPropertyBag_FWD_DEFINED__
+#define __IPersistPropertyBag_FWD_DEFINED__
+typedef interface IPersistPropertyBag IPersistPropertyBag;
+#endif /* __IPersistPropertyBag_FWD_DEFINED__ */
+
+
+#ifndef __ISimpleFrameSite_FWD_DEFINED__
+#define __ISimpleFrameSite_FWD_DEFINED__
+typedef interface ISimpleFrameSite ISimpleFrameSite;
+#endif /* __ISimpleFrameSite_FWD_DEFINED__ */
+
+
+#ifndef __IFont_FWD_DEFINED__
+#define __IFont_FWD_DEFINED__
+typedef interface IFont IFont;
+#endif /* __IFont_FWD_DEFINED__ */
+
+
+#ifndef __IPicture_FWD_DEFINED__
+#define __IPicture_FWD_DEFINED__
+typedef interface IPicture IPicture;
+#endif /* __IPicture_FWD_DEFINED__ */
+
+
+#ifndef __IFontDisp_FWD_DEFINED__
+#define __IFontDisp_FWD_DEFINED__
+typedef interface IFontDisp IFontDisp;
+#endif /* __IFontDisp_FWD_DEFINED__ */
+
+
+#ifndef __IPictureDisp_FWD_DEFINED__
+#define __IPictureDisp_FWD_DEFINED__
+typedef interface IPictureDisp IPictureDisp;
+#endif /* __IPictureDisp_FWD_DEFINED__ */
+
+
+#ifndef __IAdviseSinkEx_FWD_DEFINED__
+#define __IAdviseSinkEx_FWD_DEFINED__
+typedef interface IAdviseSinkEx IAdviseSinkEx;
+#endif /* __IAdviseSinkEx_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceObjectWindowless_FWD_DEFINED__
+#define __IOleInPlaceObjectWindowless_FWD_DEFINED__
+typedef interface IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless;
+#endif /* __IOleInPlaceObjectWindowless_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceSiteEx_FWD_DEFINED__
+#define __IOleInPlaceSiteEx_FWD_DEFINED__
+typedef interface IOleInPlaceSiteEx IOleInPlaceSiteEx;
+#endif /* __IOleInPlaceSiteEx_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceSiteWindowless_FWD_DEFINED__
+#define __IOleInPlaceSiteWindowless_FWD_DEFINED__
+typedef interface IOleInPlaceSiteWindowless IOleInPlaceSiteWindowless;
+#endif /* __IOleInPlaceSiteWindowless_FWD_DEFINED__ */
+
+
+#ifndef __IViewObjectEx_FWD_DEFINED__
+#define __IViewObjectEx_FWD_DEFINED__
+typedef interface IViewObjectEx IViewObjectEx;
+#endif /* __IViewObjectEx_FWD_DEFINED__ */
+
+
+#ifndef __IOleUndoUnit_FWD_DEFINED__
+#define __IOleUndoUnit_FWD_DEFINED__
+typedef interface IOleUndoUnit IOleUndoUnit;
+#endif /* __IOleUndoUnit_FWD_DEFINED__ */
+
+
+#ifndef __IOleParentUndoUnit_FWD_DEFINED__
+#define __IOleParentUndoUnit_FWD_DEFINED__
+typedef interface IOleParentUndoUnit IOleParentUndoUnit;
+#endif /* __IOleParentUndoUnit_FWD_DEFINED__ */
+
+
+#ifndef __IEnumOleUndoUnits_FWD_DEFINED__
+#define __IEnumOleUndoUnits_FWD_DEFINED__
+typedef interface IEnumOleUndoUnits IEnumOleUndoUnits;
+#endif /* __IEnumOleUndoUnits_FWD_DEFINED__ */
+
+
+#ifndef __IOleUndoManager_FWD_DEFINED__
+#define __IOleUndoManager_FWD_DEFINED__
+typedef interface IOleUndoManager IOleUndoManager;
+#endif /* __IOleUndoManager_FWD_DEFINED__ */
+
+
+#ifndef __IQuickActivate_FWD_DEFINED__
+#define __IQuickActivate_FWD_DEFINED__
+typedef interface IQuickActivate IQuickActivate;
+#endif /* __IQuickActivate_FWD_DEFINED__ */
+
+
+#ifndef __IPointerInactive_FWD_DEFINED__
+#define __IPointerInactive_FWD_DEFINED__
+typedef interface IPointerInactive IPointerInactive;
+#endif /* __IPointerInactive_FWD_DEFINED__ */
+
+
+#ifndef __IObjectWithSite_FWD_DEFINED__
+#define __IObjectWithSite_FWD_DEFINED__
+typedef interface IObjectWithSite IObjectWithSite;
+#endif /* __IObjectWithSite_FWD_DEFINED__ */
+
+
+#ifndef __IErrorLog_FWD_DEFINED__
+#define __IErrorLog_FWD_DEFINED__
+typedef interface IErrorLog IErrorLog;
+#endif /* __IErrorLog_FWD_DEFINED__ */
+
+
+#ifndef __IPropertyBag_FWD_DEFINED__
+#define __IPropertyBag_FWD_DEFINED__
+typedef interface IPropertyBag IPropertyBag;
+#endif /* __IPropertyBag_FWD_DEFINED__ */
+
+
+#ifndef __IPerPropertyBrowsing_FWD_DEFINED__
+#define __IPerPropertyBrowsing_FWD_DEFINED__
+typedef interface IPerPropertyBrowsing IPerPropertyBrowsing;
+#endif /* __IPerPropertyBrowsing_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oleidl.h"
+#include "oaidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1993 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IOleControlTypes_INTERFACE_DEFINED__
+#define __IOleControlTypes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleControlTypes
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][unique][version] */
+
+
+typedef /* [v1_enum] */
+enum tagUASFLAGS
+ { UAS_NORMAL = 0,
+ UAS_BLOCKED = 0x1,
+ UAS_NOPARENTENABLE = 0x2,
+ UAS_MASK = 0x3
+ } UASFLAGS;
+
+
+
+extern RPC_IF_HANDLE IOleControlTypes_v1_0_c_ifspec;
+extern RPC_IF_HANDLE IOleControlTypes_v1_0_s_ifspec;
+#endif /* __IOleControlTypes_INTERFACE_DEFINED__ */
+
+#ifndef __IEnumConnections_INTERFACE_DEFINED__
+#define __IEnumConnections_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumConnections
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IEnumConnections __RPC_FAR *PENUMCONNECTIONS;
+
+typedef IEnumConnections __RPC_FAR *LPENUMCONNECTIONS;
+
+typedef struct tagCONNECTDATA
+ {
+ IUnknown __RPC_FAR *pUnk;
+ DWORD dwCookie;
+ } CONNECTDATA;
+
+typedef struct tagCONNECTDATA __RPC_FAR *PCONNECTDATA;
+
+typedef struct tagCONNECTDATA __RPC_FAR *LPCONNECTDATA;
+
+
+EXTERN_C const IID IID_IEnumConnections;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumConnections : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG cConnections,
+ /* [length_is][size_is][out] */ LPCONNECTDATA rgcd,
+ /* [out] */ ULONG __RPC_FAR *pcFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG cConnections) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumConnections __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumConnectionsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumConnections __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumConnections __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumConnections __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumConnections __RPC_FAR * This,
+ /* [in] */ ULONG cConnections,
+ /* [length_is][size_is][out] */ LPCONNECTDATA rgcd,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumConnections __RPC_FAR * This,
+ /* [in] */ ULONG cConnections);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumConnections __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumConnections __RPC_FAR * This,
+ /* [out] */ IEnumConnections __RPC_FAR *__RPC_FAR *ppEnum);
+
+ END_INTERFACE
+ } IEnumConnectionsVtbl;
+
+ interface IEnumConnections
+ {
+ CONST_VTBL struct IEnumConnectionsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumConnections_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumConnections_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumConnections_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumConnections_Next(This,cConnections,rgcd,pcFetched) \
+ (This)->lpVtbl -> Next(This,cConnections,rgcd,pcFetched)
+
+#define IEnumConnections_Skip(This,cConnections) \
+ (This)->lpVtbl -> Skip(This,cConnections)
+
+#define IEnumConnections_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumConnections_Clone(This,ppEnum) \
+ (This)->lpVtbl -> Clone(This,ppEnum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumConnections_RemoteNext_Proxy(
+ IEnumConnections __RPC_FAR * This,
+ /* [in] */ ULONG cConnections,
+ /* [length_is][size_is][out] */ LPCONNECTDATA rgcd,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+
+void __RPC_STUB IEnumConnections_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumConnections_Skip_Proxy(
+ IEnumConnections __RPC_FAR * This,
+ /* [in] */ ULONG cConnections);
+
+
+void __RPC_STUB IEnumConnections_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumConnections_Reset_Proxy(
+ IEnumConnections __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumConnections_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumConnections_Clone_Proxy(
+ IEnumConnections __RPC_FAR * This,
+ /* [out] */ IEnumConnections __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IEnumConnections_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumConnections_INTERFACE_DEFINED__ */
+
+
+#ifndef __IConnectionPoint_INTERFACE_DEFINED__
+#define __IConnectionPoint_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IConnectionPoint
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IConnectionPoint __RPC_FAR *PCONNECTIONPOINT;
+
+typedef IConnectionPoint __RPC_FAR *LPCONNECTIONPOINT;
+
+
+EXTERN_C const IID IID_IConnectionPoint;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IConnectionPoint : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetConnectionInterface(
+ /* [out] */ IID __RPC_FAR *pIID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetConnectionPointContainer(
+ /* [out] */ IConnectionPointContainer __RPC_FAR *__RPC_FAR *ppCPC) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Advise(
+ /* [in] */ IUnknown __RPC_FAR *pUnkSink,
+ /* [out] */ DWORD __RPC_FAR *pdwCookie) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unadvise(
+ /* [in] */ DWORD dwCookie) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumConnections(
+ /* [out] */ IEnumConnections __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IConnectionPointVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IConnectionPoint __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IConnectionPoint __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IConnectionPoint __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetConnectionInterface )(
+ IConnectionPoint __RPC_FAR * This,
+ /* [out] */ IID __RPC_FAR *pIID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetConnectionPointContainer )(
+ IConnectionPoint __RPC_FAR * This,
+ /* [out] */ IConnectionPointContainer __RPC_FAR *__RPC_FAR *ppCPC);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Advise )(
+ IConnectionPoint __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkSink,
+ /* [out] */ DWORD __RPC_FAR *pdwCookie);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unadvise )(
+ IConnectionPoint __RPC_FAR * This,
+ /* [in] */ DWORD dwCookie);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumConnections )(
+ IConnectionPoint __RPC_FAR * This,
+ /* [out] */ IEnumConnections __RPC_FAR *__RPC_FAR *ppEnum);
+
+ END_INTERFACE
+ } IConnectionPointVtbl;
+
+ interface IConnectionPoint
+ {
+ CONST_VTBL struct IConnectionPointVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IConnectionPoint_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IConnectionPoint_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IConnectionPoint_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IConnectionPoint_GetConnectionInterface(This,pIID) \
+ (This)->lpVtbl -> GetConnectionInterface(This,pIID)
+
+#define IConnectionPoint_GetConnectionPointContainer(This,ppCPC) \
+ (This)->lpVtbl -> GetConnectionPointContainer(This,ppCPC)
+
+#define IConnectionPoint_Advise(This,pUnkSink,pdwCookie) \
+ (This)->lpVtbl -> Advise(This,pUnkSink,pdwCookie)
+
+#define IConnectionPoint_Unadvise(This,dwCookie) \
+ (This)->lpVtbl -> Unadvise(This,dwCookie)
+
+#define IConnectionPoint_EnumConnections(This,ppEnum) \
+ (This)->lpVtbl -> EnumConnections(This,ppEnum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IConnectionPoint_GetConnectionInterface_Proxy(
+ IConnectionPoint __RPC_FAR * This,
+ /* [out] */ IID __RPC_FAR *pIID);
+
+
+void __RPC_STUB IConnectionPoint_GetConnectionInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IConnectionPoint_GetConnectionPointContainer_Proxy(
+ IConnectionPoint __RPC_FAR * This,
+ /* [out] */ IConnectionPointContainer __RPC_FAR *__RPC_FAR *ppCPC);
+
+
+void __RPC_STUB IConnectionPoint_GetConnectionPointContainer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IConnectionPoint_Advise_Proxy(
+ IConnectionPoint __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkSink,
+ /* [out] */ DWORD __RPC_FAR *pdwCookie);
+
+
+void __RPC_STUB IConnectionPoint_Advise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IConnectionPoint_Unadvise_Proxy(
+ IConnectionPoint __RPC_FAR * This,
+ /* [in] */ DWORD dwCookie);
+
+
+void __RPC_STUB IConnectionPoint_Unadvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IConnectionPoint_EnumConnections_Proxy(
+ IConnectionPoint __RPC_FAR * This,
+ /* [out] */ IEnumConnections __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IConnectionPoint_EnumConnections_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IConnectionPoint_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumConnectionPoints_INTERFACE_DEFINED__
+#define __IEnumConnectionPoints_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumConnectionPoints
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IEnumConnectionPoints __RPC_FAR *PENUMCONNECTIONPOINTS;
+
+typedef IEnumConnectionPoints __RPC_FAR *LPENUMCONNECTIONPOINTS;
+
+
+EXTERN_C const IID IID_IEnumConnectionPoints;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumConnectionPoints : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG cConnections,
+ /* [length_is][size_is][out] */ LPCONNECTIONPOINT __RPC_FAR *ppCP,
+ /* [out] */ ULONG __RPC_FAR *pcFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG cConnections) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumConnectionPoints __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumConnectionPointsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumConnectionPoints __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumConnectionPoints __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumConnectionPoints __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumConnectionPoints __RPC_FAR * This,
+ /* [in] */ ULONG cConnections,
+ /* [length_is][size_is][out] */ LPCONNECTIONPOINT __RPC_FAR *ppCP,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumConnectionPoints __RPC_FAR * This,
+ /* [in] */ ULONG cConnections);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumConnectionPoints __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumConnectionPoints __RPC_FAR * This,
+ /* [out] */ IEnumConnectionPoints __RPC_FAR *__RPC_FAR *ppEnum);
+
+ END_INTERFACE
+ } IEnumConnectionPointsVtbl;
+
+ interface IEnumConnectionPoints
+ {
+ CONST_VTBL struct IEnumConnectionPointsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumConnectionPoints_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumConnectionPoints_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumConnectionPoints_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumConnectionPoints_Next(This,cConnections,ppCP,pcFetched) \
+ (This)->lpVtbl -> Next(This,cConnections,ppCP,pcFetched)
+
+#define IEnumConnectionPoints_Skip(This,cConnections) \
+ (This)->lpVtbl -> Skip(This,cConnections)
+
+#define IEnumConnectionPoints_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumConnectionPoints_Clone(This,ppEnum) \
+ (This)->lpVtbl -> Clone(This,ppEnum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumConnectionPoints_RemoteNext_Proxy(
+ IEnumConnectionPoints __RPC_FAR * This,
+ /* [in] */ ULONG cConnections,
+ /* [length_is][size_is][out] */ LPCONNECTIONPOINT __RPC_FAR *ppCP,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+
+void __RPC_STUB IEnumConnectionPoints_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumConnectionPoints_Skip_Proxy(
+ IEnumConnectionPoints __RPC_FAR * This,
+ /* [in] */ ULONG cConnections);
+
+
+void __RPC_STUB IEnumConnectionPoints_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumConnectionPoints_Reset_Proxy(
+ IEnumConnectionPoints __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumConnectionPoints_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumConnectionPoints_Clone_Proxy(
+ IEnumConnectionPoints __RPC_FAR * This,
+ /* [out] */ IEnumConnectionPoints __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IEnumConnectionPoints_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumConnectionPoints_INTERFACE_DEFINED__ */
+
+
+#ifndef __IConnectionPointContainer_INTERFACE_DEFINED__
+#define __IConnectionPointContainer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IConnectionPointContainer
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IConnectionPointContainer __RPC_FAR *PCONNECTIONPOINTCONTAINER;
+
+typedef IConnectionPointContainer __RPC_FAR *LPCONNECTIONPOINTCONTAINER;
+
+
+EXTERN_C const IID IID_IConnectionPointContainer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IConnectionPointContainer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE EnumConnectionPoints(
+ /* [out] */ IEnumConnectionPoints __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindConnectionPoint(
+ /* [in] */ REFIID riid,
+ /* [out] */ IConnectionPoint __RPC_FAR *__RPC_FAR *ppCP) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IConnectionPointContainerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IConnectionPointContainer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IConnectionPointContainer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IConnectionPointContainer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumConnectionPoints )(
+ IConnectionPointContainer __RPC_FAR * This,
+ /* [out] */ IEnumConnectionPoints __RPC_FAR *__RPC_FAR *ppEnum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FindConnectionPoint )(
+ IConnectionPointContainer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ IConnectionPoint __RPC_FAR *__RPC_FAR *ppCP);
+
+ END_INTERFACE
+ } IConnectionPointContainerVtbl;
+
+ interface IConnectionPointContainer
+ {
+ CONST_VTBL struct IConnectionPointContainerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IConnectionPointContainer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IConnectionPointContainer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IConnectionPointContainer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IConnectionPointContainer_EnumConnectionPoints(This,ppEnum) \
+ (This)->lpVtbl -> EnumConnectionPoints(This,ppEnum)
+
+#define IConnectionPointContainer_FindConnectionPoint(This,riid,ppCP) \
+ (This)->lpVtbl -> FindConnectionPoint(This,riid,ppCP)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IConnectionPointContainer_EnumConnectionPoints_Proxy(
+ IConnectionPointContainer __RPC_FAR * This,
+ /* [out] */ IEnumConnectionPoints __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IConnectionPointContainer_EnumConnectionPoints_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IConnectionPointContainer_FindConnectionPoint_Proxy(
+ IConnectionPointContainer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ IConnectionPoint __RPC_FAR *__RPC_FAR *ppCP);
+
+
+void __RPC_STUB IConnectionPointContainer_FindConnectionPoint_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IConnectionPointContainer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IClassFactory2_INTERFACE_DEFINED__
+#define __IClassFactory2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IClassFactory2
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IClassFactory2 __RPC_FAR *LPCLASSFACTORY2;
+
+typedef struct tagLICINFO
+ {
+ LONG cbLicInfo;
+ BOOL fRuntimeKeyAvail;
+ BOOL fLicVerified;
+ } LICINFO;
+
+typedef struct tagLICINFO __RPC_FAR *LPLICINFO;
+
+
+EXTERN_C const IID IID_IClassFactory2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IClassFactory2 : public IClassFactory
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetLicInfo(
+ /* [out] */ LICINFO __RPC_FAR *pLicInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RequestLicKey(
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ BSTR __RPC_FAR *pBstrKey) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE CreateInstanceLic(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ IUnknown __RPC_FAR *pUnkReserved,
+ /* [in] */ REFIID riid,
+ /* [in] */ BSTR bstrKey,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IClassFactory2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IClassFactory2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IClassFactory2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IClassFactory2 __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateInstance )(
+ IClassFactory2 __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockServer )(
+ IClassFactory2 __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLicInfo )(
+ IClassFactory2 __RPC_FAR * This,
+ /* [out] */ LICINFO __RPC_FAR *pLicInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestLicKey )(
+ IClassFactory2 __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ BSTR __RPC_FAR *pBstrKey);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateInstanceLic )(
+ IClassFactory2 __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ IUnknown __RPC_FAR *pUnkReserved,
+ /* [in] */ REFIID riid,
+ /* [in] */ BSTR bstrKey,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj);
+
+ END_INTERFACE
+ } IClassFactory2Vtbl;
+
+ interface IClassFactory2
+ {
+ CONST_VTBL struct IClassFactory2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IClassFactory2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IClassFactory2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IClassFactory2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IClassFactory2_CreateInstance(This,pUnkOuter,riid,ppvObject) \
+ (This)->lpVtbl -> CreateInstance(This,pUnkOuter,riid,ppvObject)
+
+#define IClassFactory2_LockServer(This,fLock) \
+ (This)->lpVtbl -> LockServer(This,fLock)
+
+
+#define IClassFactory2_GetLicInfo(This,pLicInfo) \
+ (This)->lpVtbl -> GetLicInfo(This,pLicInfo)
+
+#define IClassFactory2_RequestLicKey(This,dwReserved,pBstrKey) \
+ (This)->lpVtbl -> RequestLicKey(This,dwReserved,pBstrKey)
+
+#define IClassFactory2_CreateInstanceLic(This,pUnkOuter,pUnkReserved,riid,bstrKey,ppvObj) \
+ (This)->lpVtbl -> CreateInstanceLic(This,pUnkOuter,pUnkReserved,riid,bstrKey,ppvObj)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IClassFactory2_GetLicInfo_Proxy(
+ IClassFactory2 __RPC_FAR * This,
+ /* [out] */ LICINFO __RPC_FAR *pLicInfo);
+
+
+void __RPC_STUB IClassFactory2_GetLicInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClassFactory2_RequestLicKey_Proxy(
+ IClassFactory2 __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ BSTR __RPC_FAR *pBstrKey);
+
+
+void __RPC_STUB IClassFactory2_RequestLicKey_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IClassFactory2_RemoteCreateInstanceLic_Proxy(
+ IClassFactory2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [in] */ BSTR bstrKey,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+void __RPC_STUB IClassFactory2_RemoteCreateInstanceLic_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IClassFactory2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IProvideClassInfo_INTERFACE_DEFINED__
+#define __IProvideClassInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IProvideClassInfo
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IProvideClassInfo __RPC_FAR *LPPROVIDECLASSINFO;
+
+
+EXTERN_C const IID IID_IProvideClassInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IProvideClassInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetClassInfo(
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTI) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IProvideClassInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IProvideClassInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IProvideClassInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IProvideClassInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassInfo )(
+ IProvideClassInfo __RPC_FAR * This,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTI);
+
+ END_INTERFACE
+ } IProvideClassInfoVtbl;
+
+ interface IProvideClassInfo
+ {
+ CONST_VTBL struct IProvideClassInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IProvideClassInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IProvideClassInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IProvideClassInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IProvideClassInfo_GetClassInfo(This,ppTI) \
+ (This)->lpVtbl -> GetClassInfo(This,ppTI)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IProvideClassInfo_GetClassInfo_Proxy(
+ IProvideClassInfo __RPC_FAR * This,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTI);
+
+
+void __RPC_STUB IProvideClassInfo_GetClassInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IProvideClassInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __IProvideClassInfo2_INTERFACE_DEFINED__
+#define __IProvideClassInfo2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IProvideClassInfo2
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IProvideClassInfo2 __RPC_FAR *LPPROVIDECLASSINFO2;
+
+typedef
+enum tagGUIDKIND
+ { GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1
+ } GUIDKIND;
+
+
+EXTERN_C const IID IID_IProvideClassInfo2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IProvideClassInfo2 : public IProvideClassInfo
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetGUID(
+ /* [in] */ DWORD dwGuidKind,
+ /* [out] */ GUID __RPC_FAR *pGUID) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IProvideClassInfo2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IProvideClassInfo2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IProvideClassInfo2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IProvideClassInfo2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassInfo )(
+ IProvideClassInfo2 __RPC_FAR * This,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTI);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetGUID )(
+ IProvideClassInfo2 __RPC_FAR * This,
+ /* [in] */ DWORD dwGuidKind,
+ /* [out] */ GUID __RPC_FAR *pGUID);
+
+ END_INTERFACE
+ } IProvideClassInfo2Vtbl;
+
+ interface IProvideClassInfo2
+ {
+ CONST_VTBL struct IProvideClassInfo2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IProvideClassInfo2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IProvideClassInfo2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IProvideClassInfo2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IProvideClassInfo2_GetClassInfo(This,ppTI) \
+ (This)->lpVtbl -> GetClassInfo(This,ppTI)
+
+
+#define IProvideClassInfo2_GetGUID(This,dwGuidKind,pGUID) \
+ (This)->lpVtbl -> GetGUID(This,dwGuidKind,pGUID)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IProvideClassInfo2_GetGUID_Proxy(
+ IProvideClassInfo2 __RPC_FAR * This,
+ /* [in] */ DWORD dwGuidKind,
+ /* [out] */ GUID __RPC_FAR *pGUID);
+
+
+void __RPC_STUB IProvideClassInfo2_GetGUID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IProvideClassInfo2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleControl_INTERFACE_DEFINED__
+#define __IOleControl_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleControl
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IOleControl __RPC_FAR *LPOLECONTROL;
+
+typedef struct tagCONTROLINFO
+ {
+ ULONG cb;
+ HACCEL hAccel;
+ USHORT cAccel;
+ DWORD dwFlags;
+ } CONTROLINFO;
+
+typedef struct tagCONTROLINFO __RPC_FAR *LPCONTROLINFO;
+
+typedef
+enum tagCTRLINFO
+ { CTRLINFO_EATS_RETURN = 1,
+ CTRLINFO_EATS_ESCAPE = 2
+ } CTRLINFO;
+
+
+EXTERN_C const IID IID_IOleControl;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleControl : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetControlInfo(
+ /* [out] */ CONTROLINFO __RPC_FAR *pCI) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnMnemonic(
+ /* [in] */ MSG __RPC_FAR *pMsg) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnAmbientPropertyChange(
+ /* [in] */ DISPID dispID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FreezeEvents(
+ /* [in] */ BOOL bFreeze) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleControlVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleControl __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleControl __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleControl __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetControlInfo )(
+ IOleControl __RPC_FAR * This,
+ /* [out] */ CONTROLINFO __RPC_FAR *pCI);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnMnemonic )(
+ IOleControl __RPC_FAR * This,
+ /* [in] */ MSG __RPC_FAR *pMsg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnAmbientPropertyChange )(
+ IOleControl __RPC_FAR * This,
+ /* [in] */ DISPID dispID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FreezeEvents )(
+ IOleControl __RPC_FAR * This,
+ /* [in] */ BOOL bFreeze);
+
+ END_INTERFACE
+ } IOleControlVtbl;
+
+ interface IOleControl
+ {
+ CONST_VTBL struct IOleControlVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleControl_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleControl_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleControl_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleControl_GetControlInfo(This,pCI) \
+ (This)->lpVtbl -> GetControlInfo(This,pCI)
+
+#define IOleControl_OnMnemonic(This,pMsg) \
+ (This)->lpVtbl -> OnMnemonic(This,pMsg)
+
+#define IOleControl_OnAmbientPropertyChange(This,dispID) \
+ (This)->lpVtbl -> OnAmbientPropertyChange(This,dispID)
+
+#define IOleControl_FreezeEvents(This,bFreeze) \
+ (This)->lpVtbl -> FreezeEvents(This,bFreeze)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleControl_GetControlInfo_Proxy(
+ IOleControl __RPC_FAR * This,
+ /* [out] */ CONTROLINFO __RPC_FAR *pCI);
+
+
+void __RPC_STUB IOleControl_GetControlInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleControl_OnMnemonic_Proxy(
+ IOleControl __RPC_FAR * This,
+ /* [in] */ MSG __RPC_FAR *pMsg);
+
+
+void __RPC_STUB IOleControl_OnMnemonic_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleControl_OnAmbientPropertyChange_Proxy(
+ IOleControl __RPC_FAR * This,
+ /* [in] */ DISPID dispID);
+
+
+void __RPC_STUB IOleControl_OnAmbientPropertyChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleControl_FreezeEvents_Proxy(
+ IOleControl __RPC_FAR * This,
+ /* [in] */ BOOL bFreeze);
+
+
+void __RPC_STUB IOleControl_FreezeEvents_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleControl_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleControlSite_INTERFACE_DEFINED__
+#define __IOleControlSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleControlSite
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IOleControlSite __RPC_FAR *LPOLECONTROLSITE;
+
+typedef struct tagPOINTF
+ {
+ FLOAT x;
+ FLOAT y;
+ } POINTF;
+
+typedef struct tagPOINTF __RPC_FAR *LPPOINTF;
+
+typedef
+enum tagXFORMCOORDS
+ { XFORMCOORDS_POSITION = 0x1,
+ XFORMCOORDS_SIZE = 0x2,
+ XFORMCOORDS_HIMETRICTOCONTAINER = 0x4,
+ XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8
+ } XFORMCOORDS;
+
+
+EXTERN_C const IID IID_IOleControlSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleControlSite : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnControlInfoChanged( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockInPlaceActive(
+ /* [in] */ BOOL fLock) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetExtendedControl(
+ /* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDisp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TransformCoords(
+ /* [out][in] */ POINTL __RPC_FAR *pPtlHimetric,
+ /* [out][in] */ POINTF __RPC_FAR *pPtfContainer,
+ /* [in] */ DWORD dwFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+ /* [in] */ MSG __RPC_FAR *pMsg,
+ /* [in] */ DWORD grfModifiers) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnFocus(
+ /* [in] */ BOOL fGotFocus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ShowPropertyFrame( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleControlSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleControlSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleControlSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleControlSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnControlInfoChanged )(
+ IOleControlSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockInPlaceActive )(
+ IOleControlSite __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetExtendedControl )(
+ IOleControlSite __RPC_FAR * This,
+ /* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDisp);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *TransformCoords )(
+ IOleControlSite __RPC_FAR * This,
+ /* [out][in] */ POINTL __RPC_FAR *pPtlHimetric,
+ /* [out][in] */ POINTF __RPC_FAR *pPtfContainer,
+ /* [in] */ DWORD dwFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *TranslateAccelerator )(
+ IOleControlSite __RPC_FAR * This,
+ /* [in] */ MSG __RPC_FAR *pMsg,
+ /* [in] */ DWORD grfModifiers);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnFocus )(
+ IOleControlSite __RPC_FAR * This,
+ /* [in] */ BOOL fGotFocus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ShowPropertyFrame )(
+ IOleControlSite __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleControlSiteVtbl;
+
+ interface IOleControlSite
+ {
+ CONST_VTBL struct IOleControlSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleControlSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleControlSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleControlSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleControlSite_OnControlInfoChanged(This) \
+ (This)->lpVtbl -> OnControlInfoChanged(This)
+
+#define IOleControlSite_LockInPlaceActive(This,fLock) \
+ (This)->lpVtbl -> LockInPlaceActive(This,fLock)
+
+#define IOleControlSite_GetExtendedControl(This,ppDisp) \
+ (This)->lpVtbl -> GetExtendedControl(This,ppDisp)
+
+#define IOleControlSite_TransformCoords(This,pPtlHimetric,pPtfContainer,dwFlags) \
+ (This)->lpVtbl -> TransformCoords(This,pPtlHimetric,pPtfContainer,dwFlags)
+
+#define IOleControlSite_TranslateAccelerator(This,pMsg,grfModifiers) \
+ (This)->lpVtbl -> TranslateAccelerator(This,pMsg,grfModifiers)
+
+#define IOleControlSite_OnFocus(This,fGotFocus) \
+ (This)->lpVtbl -> OnFocus(This,fGotFocus)
+
+#define IOleControlSite_ShowPropertyFrame(This) \
+ (This)->lpVtbl -> ShowPropertyFrame(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleControlSite_OnControlInfoChanged_Proxy(
+ IOleControlSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleControlSite_OnControlInfoChanged_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleControlSite_LockInPlaceActive_Proxy(
+ IOleControlSite __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+
+void __RPC_STUB IOleControlSite_LockInPlaceActive_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleControlSite_GetExtendedControl_Proxy(
+ IOleControlSite __RPC_FAR * This,
+ /* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDisp);
+
+
+void __RPC_STUB IOleControlSite_GetExtendedControl_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleControlSite_TransformCoords_Proxy(
+ IOleControlSite __RPC_FAR * This,
+ /* [out][in] */ POINTL __RPC_FAR *pPtlHimetric,
+ /* [out][in] */ POINTF __RPC_FAR *pPtfContainer,
+ /* [in] */ DWORD dwFlags);
+
+
+void __RPC_STUB IOleControlSite_TransformCoords_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleControlSite_TranslateAccelerator_Proxy(
+ IOleControlSite __RPC_FAR * This,
+ /* [in] */ MSG __RPC_FAR *pMsg,
+ /* [in] */ DWORD grfModifiers);
+
+
+void __RPC_STUB IOleControlSite_TranslateAccelerator_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleControlSite_OnFocus_Proxy(
+ IOleControlSite __RPC_FAR * This,
+ /* [in] */ BOOL fGotFocus);
+
+
+void __RPC_STUB IOleControlSite_OnFocus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleControlSite_ShowPropertyFrame_Proxy(
+ IOleControlSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleControlSite_ShowPropertyFrame_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleControlSite_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPropertyPage_INTERFACE_DEFINED__
+#define __IPropertyPage_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPropertyPage
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPropertyPage __RPC_FAR *LPPROPERTYPAGE;
+
+typedef struct tagPROPPAGEINFO
+ {
+ ULONG cb;
+ LPOLESTR pszTitle;
+ SIZE size;
+ LPOLESTR pszDocString;
+ LPOLESTR pszHelpFile;
+ DWORD dwHelpContext;
+ } PROPPAGEINFO;
+
+typedef struct tagPROPPAGEINFO __RPC_FAR *LPPROPPAGEINFO;
+
+
+EXTERN_C const IID IID_IPropertyPage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPropertyPage : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetPageSite(
+ /* [in] */ IPropertyPageSite __RPC_FAR *pPageSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Activate(
+ /* [in] */ HWND hWndParent,
+ /* [in] */ LPCRECT pRect,
+ /* [in] */ BOOL bModal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Deactivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPageInfo(
+ /* [out] */ PROPPAGEINFO __RPC_FAR *pPageInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetObjects(
+ /* [in] */ ULONG cObjects,
+ /* [size_is][in] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Show(
+ /* [in] */ UINT nCmdShow) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Move(
+ /* [in] */ LPCRECT pRect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsPageDirty( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Apply( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Help(
+ /* [in] */ LPCOLESTR pszHelpDir) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+ /* [in] */ MSG __RPC_FAR *pMsg) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPropertyPageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPropertyPage __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPropertyPage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetPageSite )(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ IPropertyPageSite __RPC_FAR *pPageSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Activate )(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ HWND hWndParent,
+ /* [in] */ LPCRECT pRect,
+ /* [in] */ BOOL bModal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Deactivate )(
+ IPropertyPage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPageInfo )(
+ IPropertyPage __RPC_FAR * This,
+ /* [out] */ PROPPAGEINFO __RPC_FAR *pPageInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetObjects )(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ ULONG cObjects,
+ /* [size_is][in] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Show )(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ UINT nCmdShow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Move )(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ LPCRECT pRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsPageDirty )(
+ IPropertyPage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Apply )(
+ IPropertyPage __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Help )(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszHelpDir);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *TranslateAccelerator )(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ MSG __RPC_FAR *pMsg);
+
+ END_INTERFACE
+ } IPropertyPageVtbl;
+
+ interface IPropertyPage
+ {
+ CONST_VTBL struct IPropertyPageVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPropertyPage_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPropertyPage_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPropertyPage_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPropertyPage_SetPageSite(This,pPageSite) \
+ (This)->lpVtbl -> SetPageSite(This,pPageSite)
+
+#define IPropertyPage_Activate(This,hWndParent,pRect,bModal) \
+ (This)->lpVtbl -> Activate(This,hWndParent,pRect,bModal)
+
+#define IPropertyPage_Deactivate(This) \
+ (This)->lpVtbl -> Deactivate(This)
+
+#define IPropertyPage_GetPageInfo(This,pPageInfo) \
+ (This)->lpVtbl -> GetPageInfo(This,pPageInfo)
+
+#define IPropertyPage_SetObjects(This,cObjects,ppUnk) \
+ (This)->lpVtbl -> SetObjects(This,cObjects,ppUnk)
+
+#define IPropertyPage_Show(This,nCmdShow) \
+ (This)->lpVtbl -> Show(This,nCmdShow)
+
+#define IPropertyPage_Move(This,pRect) \
+ (This)->lpVtbl -> Move(This,pRect)
+
+#define IPropertyPage_IsPageDirty(This) \
+ (This)->lpVtbl -> IsPageDirty(This)
+
+#define IPropertyPage_Apply(This) \
+ (This)->lpVtbl -> Apply(This)
+
+#define IPropertyPage_Help(This,pszHelpDir) \
+ (This)->lpVtbl -> Help(This,pszHelpDir)
+
+#define IPropertyPage_TranslateAccelerator(This,pMsg) \
+ (This)->lpVtbl -> TranslateAccelerator(This,pMsg)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_SetPageSite_Proxy(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ IPropertyPageSite __RPC_FAR *pPageSite);
+
+
+void __RPC_STUB IPropertyPage_SetPageSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_Activate_Proxy(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ HWND hWndParent,
+ /* [in] */ LPCRECT pRect,
+ /* [in] */ BOOL bModal);
+
+
+void __RPC_STUB IPropertyPage_Activate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_Deactivate_Proxy(
+ IPropertyPage __RPC_FAR * This);
+
+
+void __RPC_STUB IPropertyPage_Deactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_GetPageInfo_Proxy(
+ IPropertyPage __RPC_FAR * This,
+ /* [out] */ PROPPAGEINFO __RPC_FAR *pPageInfo);
+
+
+void __RPC_STUB IPropertyPage_GetPageInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_SetObjects_Proxy(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ ULONG cObjects,
+ /* [size_is][in] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk);
+
+
+void __RPC_STUB IPropertyPage_SetObjects_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_Show_Proxy(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ UINT nCmdShow);
+
+
+void __RPC_STUB IPropertyPage_Show_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_Move_Proxy(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ LPCRECT pRect);
+
+
+void __RPC_STUB IPropertyPage_Move_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_IsPageDirty_Proxy(
+ IPropertyPage __RPC_FAR * This);
+
+
+void __RPC_STUB IPropertyPage_IsPageDirty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_Apply_Proxy(
+ IPropertyPage __RPC_FAR * This);
+
+
+void __RPC_STUB IPropertyPage_Apply_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_Help_Proxy(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszHelpDir);
+
+
+void __RPC_STUB IPropertyPage_Help_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage_TranslateAccelerator_Proxy(
+ IPropertyPage __RPC_FAR * This,
+ /* [in] */ MSG __RPC_FAR *pMsg);
+
+
+void __RPC_STUB IPropertyPage_TranslateAccelerator_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPropertyPage_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPropertyPage2_INTERFACE_DEFINED__
+#define __IPropertyPage2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPropertyPage2
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPropertyPage2 __RPC_FAR *LPPROPERTYPAGE2;
+
+
+EXTERN_C const IID IID_IPropertyPage2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPropertyPage2 : public IPropertyPage
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE EditProperty(
+ /* [in] */ DISPID dispID) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPropertyPage2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPropertyPage2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPropertyPage2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetPageSite )(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [in] */ IPropertyPageSite __RPC_FAR *pPageSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Activate )(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [in] */ HWND hWndParent,
+ /* [in] */ LPCRECT pRect,
+ /* [in] */ BOOL bModal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Deactivate )(
+ IPropertyPage2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPageInfo )(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [out] */ PROPPAGEINFO __RPC_FAR *pPageInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetObjects )(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [in] */ ULONG cObjects,
+ /* [size_is][in] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Show )(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [in] */ UINT nCmdShow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Move )(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [in] */ LPCRECT pRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsPageDirty )(
+ IPropertyPage2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Apply )(
+ IPropertyPage2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Help )(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszHelpDir);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *TranslateAccelerator )(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [in] */ MSG __RPC_FAR *pMsg);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EditProperty )(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [in] */ DISPID dispID);
+
+ END_INTERFACE
+ } IPropertyPage2Vtbl;
+
+ interface IPropertyPage2
+ {
+ CONST_VTBL struct IPropertyPage2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPropertyPage2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPropertyPage2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPropertyPage2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPropertyPage2_SetPageSite(This,pPageSite) \
+ (This)->lpVtbl -> SetPageSite(This,pPageSite)
+
+#define IPropertyPage2_Activate(This,hWndParent,pRect,bModal) \
+ (This)->lpVtbl -> Activate(This,hWndParent,pRect,bModal)
+
+#define IPropertyPage2_Deactivate(This) \
+ (This)->lpVtbl -> Deactivate(This)
+
+#define IPropertyPage2_GetPageInfo(This,pPageInfo) \
+ (This)->lpVtbl -> GetPageInfo(This,pPageInfo)
+
+#define IPropertyPage2_SetObjects(This,cObjects,ppUnk) \
+ (This)->lpVtbl -> SetObjects(This,cObjects,ppUnk)
+
+#define IPropertyPage2_Show(This,nCmdShow) \
+ (This)->lpVtbl -> Show(This,nCmdShow)
+
+#define IPropertyPage2_Move(This,pRect) \
+ (This)->lpVtbl -> Move(This,pRect)
+
+#define IPropertyPage2_IsPageDirty(This) \
+ (This)->lpVtbl -> IsPageDirty(This)
+
+#define IPropertyPage2_Apply(This) \
+ (This)->lpVtbl -> Apply(This)
+
+#define IPropertyPage2_Help(This,pszHelpDir) \
+ (This)->lpVtbl -> Help(This,pszHelpDir)
+
+#define IPropertyPage2_TranslateAccelerator(This,pMsg) \
+ (This)->lpVtbl -> TranslateAccelerator(This,pMsg)
+
+
+#define IPropertyPage2_EditProperty(This,dispID) \
+ (This)->lpVtbl -> EditProperty(This,dispID)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPage2_EditProperty_Proxy(
+ IPropertyPage2 __RPC_FAR * This,
+ /* [in] */ DISPID dispID);
+
+
+void __RPC_STUB IPropertyPage2_EditProperty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPropertyPage2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPropertyPageSite_INTERFACE_DEFINED__
+#define __IPropertyPageSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPropertyPageSite
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPropertyPageSite __RPC_FAR *LPPROPERTYPAGESITE;
+
+typedef
+enum tagPROPPAGESTATUS
+ { PROPPAGESTATUS_DIRTY = 0x1,
+ PROPPAGESTATUS_VALIDATE = 0x2,
+ PROPPAGESTATUS_CLEAN = 0x4
+ } PROPPAGESTATUS;
+
+
+EXTERN_C const IID IID_IPropertyPageSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPropertyPageSite : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnStatusChange(
+ /* [in] */ DWORD dwFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocaleID(
+ /* [out] */ LCID __RPC_FAR *pLocaleID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPageContainer(
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+ /* [in] */ MSG __RPC_FAR *pMsg) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPropertyPageSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPropertyPageSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPropertyPageSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPropertyPageSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnStatusChange )(
+ IPropertyPageSite __RPC_FAR * This,
+ /* [in] */ DWORD dwFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLocaleID )(
+ IPropertyPageSite __RPC_FAR * This,
+ /* [out] */ LCID __RPC_FAR *pLocaleID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPageContainer )(
+ IPropertyPageSite __RPC_FAR * This,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *TranslateAccelerator )(
+ IPropertyPageSite __RPC_FAR * This,
+ /* [in] */ MSG __RPC_FAR *pMsg);
+
+ END_INTERFACE
+ } IPropertyPageSiteVtbl;
+
+ interface IPropertyPageSite
+ {
+ CONST_VTBL struct IPropertyPageSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPropertyPageSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPropertyPageSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPropertyPageSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPropertyPageSite_OnStatusChange(This,dwFlags) \
+ (This)->lpVtbl -> OnStatusChange(This,dwFlags)
+
+#define IPropertyPageSite_GetLocaleID(This,pLocaleID) \
+ (This)->lpVtbl -> GetLocaleID(This,pLocaleID)
+
+#define IPropertyPageSite_GetPageContainer(This,ppUnk) \
+ (This)->lpVtbl -> GetPageContainer(This,ppUnk)
+
+#define IPropertyPageSite_TranslateAccelerator(This,pMsg) \
+ (This)->lpVtbl -> TranslateAccelerator(This,pMsg)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPageSite_OnStatusChange_Proxy(
+ IPropertyPageSite __RPC_FAR * This,
+ /* [in] */ DWORD dwFlags);
+
+
+void __RPC_STUB IPropertyPageSite_OnStatusChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPageSite_GetLocaleID_Proxy(
+ IPropertyPageSite __RPC_FAR * This,
+ /* [out] */ LCID __RPC_FAR *pLocaleID);
+
+
+void __RPC_STUB IPropertyPageSite_GetLocaleID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPageSite_GetPageContainer_Proxy(
+ IPropertyPageSite __RPC_FAR * This,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk);
+
+
+void __RPC_STUB IPropertyPageSite_GetPageContainer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyPageSite_TranslateAccelerator_Proxy(
+ IPropertyPageSite __RPC_FAR * This,
+ /* [in] */ MSG __RPC_FAR *pMsg);
+
+
+void __RPC_STUB IPropertyPageSite_TranslateAccelerator_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPropertyPageSite_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPropertyNotifySink_INTERFACE_DEFINED__
+#define __IPropertyNotifySink_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPropertyNotifySink
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPropertyNotifySink __RPC_FAR *LPPROPERTYNOTIFYSINK;
+
+
+EXTERN_C const IID IID_IPropertyNotifySink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPropertyNotifySink : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnChanged(
+ /* [in] */ DISPID dispID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnRequestEdit(
+ /* [in] */ DISPID dispID) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPropertyNotifySinkVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPropertyNotifySink __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPropertyNotifySink __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPropertyNotifySink __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnChanged )(
+ IPropertyNotifySink __RPC_FAR * This,
+ /* [in] */ DISPID dispID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnRequestEdit )(
+ IPropertyNotifySink __RPC_FAR * This,
+ /* [in] */ DISPID dispID);
+
+ END_INTERFACE
+ } IPropertyNotifySinkVtbl;
+
+ interface IPropertyNotifySink
+ {
+ CONST_VTBL struct IPropertyNotifySinkVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPropertyNotifySink_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPropertyNotifySink_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPropertyNotifySink_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPropertyNotifySink_OnChanged(This,dispID) \
+ (This)->lpVtbl -> OnChanged(This,dispID)
+
+#define IPropertyNotifySink_OnRequestEdit(This,dispID) \
+ (This)->lpVtbl -> OnRequestEdit(This,dispID)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPropertyNotifySink_OnChanged_Proxy(
+ IPropertyNotifySink __RPC_FAR * This,
+ /* [in] */ DISPID dispID);
+
+
+void __RPC_STUB IPropertyNotifySink_OnChanged_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyNotifySink_OnRequestEdit_Proxy(
+ IPropertyNotifySink __RPC_FAR * This,
+ /* [in] */ DISPID dispID);
+
+
+void __RPC_STUB IPropertyNotifySink_OnRequestEdit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPropertyNotifySink_INTERFACE_DEFINED__ */
+
+
+#ifndef __ISpecifyPropertyPages_INTERFACE_DEFINED__
+#define __ISpecifyPropertyPages_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISpecifyPropertyPages
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef ISpecifyPropertyPages __RPC_FAR *LPSPECIFYPROPERTYPAGES;
+
+typedef struct tagCAUUID
+ {
+ ULONG cElems;
+ /* [size_is] */ GUID __RPC_FAR *pElems;
+ } CAUUID;
+
+typedef struct tagCAUUID __RPC_FAR *LPCAUUID;
+
+
+EXTERN_C const IID IID_ISpecifyPropertyPages;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISpecifyPropertyPages : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetPages(
+ /* [out] */ CAUUID __RPC_FAR *pPages) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISpecifyPropertyPagesVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISpecifyPropertyPages __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISpecifyPropertyPages __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISpecifyPropertyPages __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPages )(
+ ISpecifyPropertyPages __RPC_FAR * This,
+ /* [out] */ CAUUID __RPC_FAR *pPages);
+
+ END_INTERFACE
+ } ISpecifyPropertyPagesVtbl;
+
+ interface ISpecifyPropertyPages
+ {
+ CONST_VTBL struct ISpecifyPropertyPagesVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISpecifyPropertyPages_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISpecifyPropertyPages_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISpecifyPropertyPages_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISpecifyPropertyPages_GetPages(This,pPages) \
+ (This)->lpVtbl -> GetPages(This,pPages)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ISpecifyPropertyPages_GetPages_Proxy(
+ ISpecifyPropertyPages __RPC_FAR * This,
+ /* [out] */ CAUUID __RPC_FAR *pPages);
+
+
+void __RPC_STUB ISpecifyPropertyPages_GetPages_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISpecifyPropertyPages_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersistMemory_INTERFACE_DEFINED__
+#define __IPersistMemory_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersistMemory
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPersistMemory __RPC_FAR *LPPERSISTMEMORY;
+
+
+EXTERN_C const IID IID_IPersistMemory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersistMemory : public IPersist
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Load(
+ /* [size_is][in] */ LPVOID pMem,
+ /* [in] */ ULONG cbSize) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Save(
+ /* [size_is][in] */ LPVOID pMem,
+ /* [in] */ BOOL fClearDirty,
+ /* [in] */ ULONG cbSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSizeMax(
+ /* [out] */ ULONG __RPC_FAR *pCbSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitNew( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistMemoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersistMemory __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersistMemory __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersistMemory __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersistMemory __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IPersistMemory __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IPersistMemory __RPC_FAR * This,
+ /* [size_is][in] */ LPVOID pMem,
+ /* [in] */ ULONG cbSize);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IPersistMemory __RPC_FAR * This,
+ /* [size_is][in] */ LPVOID pMem,
+ /* [in] */ BOOL fClearDirty,
+ /* [in] */ ULONG cbSize);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSizeMax )(
+ IPersistMemory __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pCbSize);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitNew )(
+ IPersistMemory __RPC_FAR * This);
+
+ END_INTERFACE
+ } IPersistMemoryVtbl;
+
+ interface IPersistMemory
+ {
+ CONST_VTBL struct IPersistMemoryVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersistMemory_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersistMemory_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersistMemory_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersistMemory_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IPersistMemory_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IPersistMemory_Load(This,pMem,cbSize) \
+ (This)->lpVtbl -> Load(This,pMem,cbSize)
+
+#define IPersistMemory_Save(This,pMem,fClearDirty,cbSize) \
+ (This)->lpVtbl -> Save(This,pMem,fClearDirty,cbSize)
+
+#define IPersistMemory_GetSizeMax(This,pCbSize) \
+ (This)->lpVtbl -> GetSizeMax(This,pCbSize)
+
+#define IPersistMemory_InitNew(This) \
+ (This)->lpVtbl -> InitNew(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersistMemory_IsDirty_Proxy(
+ IPersistMemory __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistMemory_IsDirty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IPersistMemory_RemoteLoad_Proxy(
+ IPersistMemory __RPC_FAR * This,
+ /* [size_is][in] */ BYTE __RPC_FAR *pMem,
+ /* [in] */ ULONG cbSize);
+
+
+void __RPC_STUB IPersistMemory_RemoteLoad_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IPersistMemory_RemoteSave_Proxy(
+ IPersistMemory __RPC_FAR * This,
+ /* [size_is][in] */ BYTE __RPC_FAR *pMem,
+ /* [in] */ BOOL fClearDirty,
+ /* [in] */ ULONG cbSize);
+
+
+void __RPC_STUB IPersistMemory_RemoteSave_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistMemory_GetSizeMax_Proxy(
+ IPersistMemory __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pCbSize);
+
+
+void __RPC_STUB IPersistMemory_GetSizeMax_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistMemory_InitNew_Proxy(
+ IPersistMemory __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistMemory_InitNew_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersistMemory_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersistStreamInit_INTERFACE_DEFINED__
+#define __IPersistStreamInit_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersistStreamInit
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPersistStreamInit __RPC_FAR *LPPERSISTSTREAMINIT;
+
+
+EXTERN_C const IID IID_IPersistStreamInit;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersistStreamInit : public IPersist
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Load(
+ /* [in] */ LPSTREAM pStm) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Save(
+ /* [in] */ LPSTREAM pStm,
+ /* [in] */ BOOL fClearDirty) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSizeMax(
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pCbSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitNew( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistStreamInitVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersistStreamInit __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersistStreamInit __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersistStreamInit __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersistStreamInit __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IPersistStreamInit __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IPersistStreamInit __RPC_FAR * This,
+ /* [in] */ LPSTREAM pStm);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IPersistStreamInit __RPC_FAR * This,
+ /* [in] */ LPSTREAM pStm,
+ /* [in] */ BOOL fClearDirty);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSizeMax )(
+ IPersistStreamInit __RPC_FAR * This,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pCbSize);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitNew )(
+ IPersistStreamInit __RPC_FAR * This);
+
+ END_INTERFACE
+ } IPersistStreamInitVtbl;
+
+ interface IPersistStreamInit
+ {
+ CONST_VTBL struct IPersistStreamInitVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersistStreamInit_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersistStreamInit_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersistStreamInit_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersistStreamInit_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IPersistStreamInit_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IPersistStreamInit_Load(This,pStm) \
+ (This)->lpVtbl -> Load(This,pStm)
+
+#define IPersistStreamInit_Save(This,pStm,fClearDirty) \
+ (This)->lpVtbl -> Save(This,pStm,fClearDirty)
+
+#define IPersistStreamInit_GetSizeMax(This,pCbSize) \
+ (This)->lpVtbl -> GetSizeMax(This,pCbSize)
+
+#define IPersistStreamInit_InitNew(This) \
+ (This)->lpVtbl -> InitNew(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersistStreamInit_IsDirty_Proxy(
+ IPersistStreamInit __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistStreamInit_IsDirty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStreamInit_Load_Proxy(
+ IPersistStreamInit __RPC_FAR * This,
+ /* [in] */ LPSTREAM pStm);
+
+
+void __RPC_STUB IPersistStreamInit_Load_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStreamInit_Save_Proxy(
+ IPersistStreamInit __RPC_FAR * This,
+ /* [in] */ LPSTREAM pStm,
+ /* [in] */ BOOL fClearDirty);
+
+
+void __RPC_STUB IPersistStreamInit_Save_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStreamInit_GetSizeMax_Proxy(
+ IPersistStreamInit __RPC_FAR * This,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pCbSize);
+
+
+void __RPC_STUB IPersistStreamInit_GetSizeMax_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistStreamInit_InitNew_Proxy(
+ IPersistStreamInit __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistStreamInit_InitNew_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersistStreamInit_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPersistPropertyBag_INTERFACE_DEFINED__
+#define __IPersistPropertyBag_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersistPropertyBag
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPersistPropertyBag __RPC_FAR *LPPERSISTPROPERTYBAG;
+
+
+EXTERN_C const IID IID_IPersistPropertyBag;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersistPropertyBag : public IPersist
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InitNew( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Load(
+ /* [in] */ IPropertyBag __RPC_FAR *pPropBag,
+ /* [in] */ IErrorLog __RPC_FAR *pErrorLog) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Save(
+ /* [in] */ IPropertyBag __RPC_FAR *pPropBag,
+ /* [in] */ BOOL fClearDirty,
+ /* [in] */ BOOL fSaveAllProperties) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistPropertyBagVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersistPropertyBag __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersistPropertyBag __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersistPropertyBag __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersistPropertyBag __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitNew )(
+ IPersistPropertyBag __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IPersistPropertyBag __RPC_FAR * This,
+ /* [in] */ IPropertyBag __RPC_FAR *pPropBag,
+ /* [in] */ IErrorLog __RPC_FAR *pErrorLog);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IPersistPropertyBag __RPC_FAR * This,
+ /* [in] */ IPropertyBag __RPC_FAR *pPropBag,
+ /* [in] */ BOOL fClearDirty,
+ /* [in] */ BOOL fSaveAllProperties);
+
+ END_INTERFACE
+ } IPersistPropertyBagVtbl;
+
+ interface IPersistPropertyBag
+ {
+ CONST_VTBL struct IPersistPropertyBagVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersistPropertyBag_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersistPropertyBag_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersistPropertyBag_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersistPropertyBag_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+
+#define IPersistPropertyBag_InitNew(This) \
+ (This)->lpVtbl -> InitNew(This)
+
+#define IPersistPropertyBag_Load(This,pPropBag,pErrorLog) \
+ (This)->lpVtbl -> Load(This,pPropBag,pErrorLog)
+
+#define IPersistPropertyBag_Save(This,pPropBag,fClearDirty,fSaveAllProperties) \
+ (This)->lpVtbl -> Save(This,pPropBag,fClearDirty,fSaveAllProperties)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersistPropertyBag_InitNew_Proxy(
+ IPersistPropertyBag __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistPropertyBag_InitNew_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistPropertyBag_Load_Proxy(
+ IPersistPropertyBag __RPC_FAR * This,
+ /* [in] */ IPropertyBag __RPC_FAR *pPropBag,
+ /* [in] */ IErrorLog __RPC_FAR *pErrorLog);
+
+
+void __RPC_STUB IPersistPropertyBag_Load_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistPropertyBag_Save_Proxy(
+ IPersistPropertyBag __RPC_FAR * This,
+ /* [in] */ IPropertyBag __RPC_FAR *pPropBag,
+ /* [in] */ BOOL fClearDirty,
+ /* [in] */ BOOL fSaveAllProperties);
+
+
+void __RPC_STUB IPersistPropertyBag_Save_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersistPropertyBag_INTERFACE_DEFINED__ */
+
+
+#ifndef __ISimpleFrameSite_INTERFACE_DEFINED__
+#define __ISimpleFrameSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISimpleFrameSite
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef ISimpleFrameSite __RPC_FAR *LPSIMPLEFRAMESITE;
+
+
+EXTERN_C const IID IID_ISimpleFrameSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISimpleFrameSite : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE PreMessageFilter(
+ /* [in] */ HWND hWnd,
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wp,
+ /* [in] */ LPARAM lp,
+ /* [out] */ LRESULT __RPC_FAR *plResult,
+ /* [out] */ DWORD __RPC_FAR *pdwCookie) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PostMessageFilter(
+ /* [in] */ HWND hWnd,
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wp,
+ /* [in] */ LPARAM lp,
+ /* [out] */ LRESULT __RPC_FAR *plResult,
+ /* [in] */ DWORD dwCookie) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISimpleFrameSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISimpleFrameSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISimpleFrameSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISimpleFrameSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PreMessageFilter )(
+ ISimpleFrameSite __RPC_FAR * This,
+ /* [in] */ HWND hWnd,
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wp,
+ /* [in] */ LPARAM lp,
+ /* [out] */ LRESULT __RPC_FAR *plResult,
+ /* [out] */ DWORD __RPC_FAR *pdwCookie);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PostMessageFilter )(
+ ISimpleFrameSite __RPC_FAR * This,
+ /* [in] */ HWND hWnd,
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wp,
+ /* [in] */ LPARAM lp,
+ /* [out] */ LRESULT __RPC_FAR *plResult,
+ /* [in] */ DWORD dwCookie);
+
+ END_INTERFACE
+ } ISimpleFrameSiteVtbl;
+
+ interface ISimpleFrameSite
+ {
+ CONST_VTBL struct ISimpleFrameSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISimpleFrameSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISimpleFrameSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISimpleFrameSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISimpleFrameSite_PreMessageFilter(This,hWnd,msg,wp,lp,plResult,pdwCookie) \
+ (This)->lpVtbl -> PreMessageFilter(This,hWnd,msg,wp,lp,plResult,pdwCookie)
+
+#define ISimpleFrameSite_PostMessageFilter(This,hWnd,msg,wp,lp,plResult,dwCookie) \
+ (This)->lpVtbl -> PostMessageFilter(This,hWnd,msg,wp,lp,plResult,dwCookie)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ISimpleFrameSite_PreMessageFilter_Proxy(
+ ISimpleFrameSite __RPC_FAR * This,
+ /* [in] */ HWND hWnd,
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wp,
+ /* [in] */ LPARAM lp,
+ /* [out] */ LRESULT __RPC_FAR *plResult,
+ /* [out] */ DWORD __RPC_FAR *pdwCookie);
+
+
+void __RPC_STUB ISimpleFrameSite_PreMessageFilter_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ISimpleFrameSite_PostMessageFilter_Proxy(
+ ISimpleFrameSite __RPC_FAR * This,
+ /* [in] */ HWND hWnd,
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wp,
+ /* [in] */ LPARAM lp,
+ /* [out] */ LRESULT __RPC_FAR *plResult,
+ /* [in] */ DWORD dwCookie);
+
+
+void __RPC_STUB ISimpleFrameSite_PostMessageFilter_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISimpleFrameSite_INTERFACE_DEFINED__ */
+
+
+#ifndef __IFont_INTERFACE_DEFINED__
+#define __IFont_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IFont
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IFont __RPC_FAR *LPFONT;
+
+#if defined(_WIN32) && !defined(OLE2ANSI)
+typedef TEXTMETRICW TEXTMETRICOLE;
+
+#else
+typedef TEXTMETRIC TEXTMETRICOLE;
+#endif
+typedef TEXTMETRICOLE __RPC_FAR *LPTEXTMETRICOLE;
+
+
+EXTERN_C const IID IID_IFont;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IFont : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE get_Name(
+ /* [out] */ BSTR __RPC_FAR *pName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Name(
+ /* [in] */ BSTR name) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Size(
+ /* [out] */ CY __RPC_FAR *pSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Size(
+ /* [in] */ CY size) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Bold(
+ /* [out] */ BOOL __RPC_FAR *pBold) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Bold(
+ /* [in] */ BOOL bold) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Italic(
+ /* [out] */ BOOL __RPC_FAR *pItalic) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Italic(
+ /* [in] */ BOOL italic) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Underline(
+ /* [out] */ BOOL __RPC_FAR *pUnderline) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Underline(
+ /* [in] */ BOOL underline) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Strikethrough(
+ /* [out] */ BOOL __RPC_FAR *pStrikethrough) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Strikethrough(
+ /* [in] */ BOOL strikethrough) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Weight(
+ /* [out] */ SHORT __RPC_FAR *pWeight) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Weight(
+ /* [in] */ SHORT weight) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Charset(
+ /* [out] */ SHORT __RPC_FAR *pCharset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Charset(
+ /* [in] */ SHORT charset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_hFont(
+ /* [out] */ HFONT __RPC_FAR *phFont) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IFont __RPC_FAR *__RPC_FAR *ppFont) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsEqual(
+ /* [in] */ IFont __RPC_FAR *pFontOther) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRatio(
+ /* [in] */ LONG cyLogical,
+ /* [in] */ LONG cyHimetric) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryTextMetrics(
+ /* [out] */ TEXTMETRICOLE __RPC_FAR *pTM) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddRefHfont(
+ /* [in] */ HFONT hFont) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseHfont(
+ /* [in] */ HFONT hFont) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHdc(
+ /* [in] */ HDC hDC) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IFontVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IFont __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IFont __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IFont __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Name )(
+ IFont __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_Name )(
+ IFont __RPC_FAR * This,
+ /* [in] */ BSTR name);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Size )(
+ IFont __RPC_FAR * This,
+ /* [out] */ CY __RPC_FAR *pSize);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_Size )(
+ IFont __RPC_FAR * This,
+ /* [in] */ CY size);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Bold )(
+ IFont __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pBold);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_Bold )(
+ IFont __RPC_FAR * This,
+ /* [in] */ BOOL bold);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Italic )(
+ IFont __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pItalic);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_Italic )(
+ IFont __RPC_FAR * This,
+ /* [in] */ BOOL italic);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Underline )(
+ IFont __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pUnderline);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_Underline )(
+ IFont __RPC_FAR * This,
+ /* [in] */ BOOL underline);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Strikethrough )(
+ IFont __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pStrikethrough);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_Strikethrough )(
+ IFont __RPC_FAR * This,
+ /* [in] */ BOOL strikethrough);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Weight )(
+ IFont __RPC_FAR * This,
+ /* [out] */ SHORT __RPC_FAR *pWeight);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_Weight )(
+ IFont __RPC_FAR * This,
+ /* [in] */ SHORT weight);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Charset )(
+ IFont __RPC_FAR * This,
+ /* [out] */ SHORT __RPC_FAR *pCharset);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_Charset )(
+ IFont __RPC_FAR * This,
+ /* [in] */ SHORT charset);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_hFont )(
+ IFont __RPC_FAR * This,
+ /* [out] */ HFONT __RPC_FAR *phFont);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IFont __RPC_FAR * This,
+ /* [out] */ IFont __RPC_FAR *__RPC_FAR *ppFont);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsEqual )(
+ IFont __RPC_FAR * This,
+ /* [in] */ IFont __RPC_FAR *pFontOther);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetRatio )(
+ IFont __RPC_FAR * This,
+ /* [in] */ LONG cyLogical,
+ /* [in] */ LONG cyHimetric);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryTextMetrics )(
+ IFont __RPC_FAR * This,
+ /* [out] */ TEXTMETRICOLE __RPC_FAR *pTM);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddRefHfont )(
+ IFont __RPC_FAR * This,
+ /* [in] */ HFONT hFont);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseHfont )(
+ IFont __RPC_FAR * This,
+ /* [in] */ HFONT hFont);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHdc )(
+ IFont __RPC_FAR * This,
+ /* [in] */ HDC hDC);
+
+ END_INTERFACE
+ } IFontVtbl;
+
+ interface IFont
+ {
+ CONST_VTBL struct IFontVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IFont_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IFont_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IFont_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IFont_get_Name(This,pName) \
+ (This)->lpVtbl -> get_Name(This,pName)
+
+#define IFont_put_Name(This,name) \
+ (This)->lpVtbl -> put_Name(This,name)
+
+#define IFont_get_Size(This,pSize) \
+ (This)->lpVtbl -> get_Size(This,pSize)
+
+#define IFont_put_Size(This,size) \
+ (This)->lpVtbl -> put_Size(This,size)
+
+#define IFont_get_Bold(This,pBold) \
+ (This)->lpVtbl -> get_Bold(This,pBold)
+
+#define IFont_put_Bold(This,bold) \
+ (This)->lpVtbl -> put_Bold(This,bold)
+
+#define IFont_get_Italic(This,pItalic) \
+ (This)->lpVtbl -> get_Italic(This,pItalic)
+
+#define IFont_put_Italic(This,italic) \
+ (This)->lpVtbl -> put_Italic(This,italic)
+
+#define IFont_get_Underline(This,pUnderline) \
+ (This)->lpVtbl -> get_Underline(This,pUnderline)
+
+#define IFont_put_Underline(This,underline) \
+ (This)->lpVtbl -> put_Underline(This,underline)
+
+#define IFont_get_Strikethrough(This,pStrikethrough) \
+ (This)->lpVtbl -> get_Strikethrough(This,pStrikethrough)
+
+#define IFont_put_Strikethrough(This,strikethrough) \
+ (This)->lpVtbl -> put_Strikethrough(This,strikethrough)
+
+#define IFont_get_Weight(This,pWeight) \
+ (This)->lpVtbl -> get_Weight(This,pWeight)
+
+#define IFont_put_Weight(This,weight) \
+ (This)->lpVtbl -> put_Weight(This,weight)
+
+#define IFont_get_Charset(This,pCharset) \
+ (This)->lpVtbl -> get_Charset(This,pCharset)
+
+#define IFont_put_Charset(This,charset) \
+ (This)->lpVtbl -> put_Charset(This,charset)
+
+#define IFont_get_hFont(This,phFont) \
+ (This)->lpVtbl -> get_hFont(This,phFont)
+
+#define IFont_Clone(This,ppFont) \
+ (This)->lpVtbl -> Clone(This,ppFont)
+
+#define IFont_IsEqual(This,pFontOther) \
+ (This)->lpVtbl -> IsEqual(This,pFontOther)
+
+#define IFont_SetRatio(This,cyLogical,cyHimetric) \
+ (This)->lpVtbl -> SetRatio(This,cyLogical,cyHimetric)
+
+#define IFont_QueryTextMetrics(This,pTM) \
+ (This)->lpVtbl -> QueryTextMetrics(This,pTM)
+
+#define IFont_AddRefHfont(This,hFont) \
+ (This)->lpVtbl -> AddRefHfont(This,hFont)
+
+#define IFont_ReleaseHfont(This,hFont) \
+ (This)->lpVtbl -> ReleaseHfont(This,hFont)
+
+#define IFont_SetHdc(This,hDC) \
+ (This)->lpVtbl -> SetHdc(This,hDC)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IFont_get_Name_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pName);
+
+
+void __RPC_STUB IFont_get_Name_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_put_Name_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ BSTR name);
+
+
+void __RPC_STUB IFont_put_Name_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_get_Size_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ CY __RPC_FAR *pSize);
+
+
+void __RPC_STUB IFont_get_Size_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_put_Size_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ CY size);
+
+
+void __RPC_STUB IFont_put_Size_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_get_Bold_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pBold);
+
+
+void __RPC_STUB IFont_get_Bold_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_put_Bold_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ BOOL bold);
+
+
+void __RPC_STUB IFont_put_Bold_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_get_Italic_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pItalic);
+
+
+void __RPC_STUB IFont_get_Italic_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_put_Italic_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ BOOL italic);
+
+
+void __RPC_STUB IFont_put_Italic_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_get_Underline_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pUnderline);
+
+
+void __RPC_STUB IFont_get_Underline_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_put_Underline_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ BOOL underline);
+
+
+void __RPC_STUB IFont_put_Underline_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_get_Strikethrough_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pStrikethrough);
+
+
+void __RPC_STUB IFont_get_Strikethrough_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_put_Strikethrough_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ BOOL strikethrough);
+
+
+void __RPC_STUB IFont_put_Strikethrough_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_get_Weight_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ SHORT __RPC_FAR *pWeight);
+
+
+void __RPC_STUB IFont_get_Weight_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_put_Weight_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ SHORT weight);
+
+
+void __RPC_STUB IFont_put_Weight_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_get_Charset_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ SHORT __RPC_FAR *pCharset);
+
+
+void __RPC_STUB IFont_get_Charset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_put_Charset_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ SHORT charset);
+
+
+void __RPC_STUB IFont_put_Charset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_get_hFont_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ HFONT __RPC_FAR *phFont);
+
+
+void __RPC_STUB IFont_get_hFont_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_Clone_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ IFont __RPC_FAR *__RPC_FAR *ppFont);
+
+
+void __RPC_STUB IFont_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_IsEqual_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ IFont __RPC_FAR *pFontOther);
+
+
+void __RPC_STUB IFont_IsEqual_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_SetRatio_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ LONG cyLogical,
+ /* [in] */ LONG cyHimetric);
+
+
+void __RPC_STUB IFont_SetRatio_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_QueryTextMetrics_Proxy(
+ IFont __RPC_FAR * This,
+ /* [out] */ TEXTMETRICOLE __RPC_FAR *pTM);
+
+
+void __RPC_STUB IFont_QueryTextMetrics_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_AddRefHfont_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ HFONT hFont);
+
+
+void __RPC_STUB IFont_AddRefHfont_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_ReleaseHfont_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ HFONT hFont);
+
+
+void __RPC_STUB IFont_ReleaseHfont_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IFont_SetHdc_Proxy(
+ IFont __RPC_FAR * This,
+ /* [in] */ HDC hDC);
+
+
+void __RPC_STUB IFont_SetHdc_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IFont_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPicture_INTERFACE_DEFINED__
+#define __IPicture_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPicture
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPicture __RPC_FAR *LPPICTURE;
+
+typedef
+enum tagPictureAttributes
+ { PICTURE_SCALABLE = 0x1,
+ PICTURE_TRANSPARENT = 0x2
+ } PICTUREATTRIBUTES;
+
+typedef UINT OLE_HANDLE;
+
+typedef LONG OLE_XPOS_HIMETRIC;
+
+typedef LONG OLE_YPOS_HIMETRIC;
+
+typedef LONG OLE_XSIZE_HIMETRIC;
+
+typedef LONG OLE_YSIZE_HIMETRIC;
+
+
+EXTERN_C const IID IID_IPicture;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPicture : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE get_Handle(
+ /* [out] */ OLE_HANDLE __RPC_FAR *pHandle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_hPal(
+ /* [out] */ OLE_HANDLE __RPC_FAR *phPal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Type(
+ /* [out] */ SHORT __RPC_FAR *pType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Width(
+ /* [out] */ OLE_XSIZE_HIMETRIC __RPC_FAR *pWidth) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Height(
+ /* [out] */ OLE_YSIZE_HIMETRIC __RPC_FAR *pHeight) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Render(
+ /* [in] */ HDC hDC,
+ /* [in] */ LONG x,
+ /* [in] */ LONG y,
+ /* [in] */ LONG cx,
+ /* [in] */ LONG cy,
+ /* [in] */ OLE_XPOS_HIMETRIC xSrc,
+ /* [in] */ OLE_YPOS_HIMETRIC ySrc,
+ /* [in] */ OLE_XSIZE_HIMETRIC cxSrc,
+ /* [in] */ OLE_YSIZE_HIMETRIC cySrc,
+ /* [in] */ LPCRECT pRcWBounds) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE set_hPal(
+ /* [in] */ OLE_HANDLE hPal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_CurDC(
+ /* [out] */ HDC __RPC_FAR *phDC) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SelectPicture(
+ /* [in] */ HDC hDCIn,
+ /* [out] */ HDC __RPC_FAR *phDCOut,
+ /* [out] */ OLE_HANDLE __RPC_FAR *phBmpOut) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_KeepOriginalFormat(
+ /* [out] */ BOOL __RPC_FAR *pKeep) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_KeepOriginalFormat(
+ /* [in] */ BOOL keep) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PictureChanged( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveAsFile(
+ /* [in] */ LPSTREAM pStream,
+ /* [in] */ BOOL fSaveMemCopy,
+ /* [out] */ LONG __RPC_FAR *pCbSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Attributes(
+ /* [out] */ DWORD __RPC_FAR *pDwAttr) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPictureVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPicture __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPicture __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPicture __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Handle )(
+ IPicture __RPC_FAR * This,
+ /* [out] */ OLE_HANDLE __RPC_FAR *pHandle);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_hPal )(
+ IPicture __RPC_FAR * This,
+ /* [out] */ OLE_HANDLE __RPC_FAR *phPal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Type )(
+ IPicture __RPC_FAR * This,
+ /* [out] */ SHORT __RPC_FAR *pType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Width )(
+ IPicture __RPC_FAR * This,
+ /* [out] */ OLE_XSIZE_HIMETRIC __RPC_FAR *pWidth);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Height )(
+ IPicture __RPC_FAR * This,
+ /* [out] */ OLE_YSIZE_HIMETRIC __RPC_FAR *pHeight);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Render )(
+ IPicture __RPC_FAR * This,
+ /* [in] */ HDC hDC,
+ /* [in] */ LONG x,
+ /* [in] */ LONG y,
+ /* [in] */ LONG cx,
+ /* [in] */ LONG cy,
+ /* [in] */ OLE_XPOS_HIMETRIC xSrc,
+ /* [in] */ OLE_YPOS_HIMETRIC ySrc,
+ /* [in] */ OLE_XSIZE_HIMETRIC cxSrc,
+ /* [in] */ OLE_YSIZE_HIMETRIC cySrc,
+ /* [in] */ LPCRECT pRcWBounds);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *set_hPal )(
+ IPicture __RPC_FAR * This,
+ /* [in] */ OLE_HANDLE hPal);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_CurDC )(
+ IPicture __RPC_FAR * This,
+ /* [out] */ HDC __RPC_FAR *phDC);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SelectPicture )(
+ IPicture __RPC_FAR * This,
+ /* [in] */ HDC hDCIn,
+ /* [out] */ HDC __RPC_FAR *phDCOut,
+ /* [out] */ OLE_HANDLE __RPC_FAR *phBmpOut);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_KeepOriginalFormat )(
+ IPicture __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pKeep);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *put_KeepOriginalFormat )(
+ IPicture __RPC_FAR * This,
+ /* [in] */ BOOL keep);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PictureChanged )(
+ IPicture __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveAsFile )(
+ IPicture __RPC_FAR * This,
+ /* [in] */ LPSTREAM pStream,
+ /* [in] */ BOOL fSaveMemCopy,
+ /* [out] */ LONG __RPC_FAR *pCbSize);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_Attributes )(
+ IPicture __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pDwAttr);
+
+ END_INTERFACE
+ } IPictureVtbl;
+
+ interface IPicture
+ {
+ CONST_VTBL struct IPictureVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPicture_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPicture_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPicture_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPicture_get_Handle(This,pHandle) \
+ (This)->lpVtbl -> get_Handle(This,pHandle)
+
+#define IPicture_get_hPal(This,phPal) \
+ (This)->lpVtbl -> get_hPal(This,phPal)
+
+#define IPicture_get_Type(This,pType) \
+ (This)->lpVtbl -> get_Type(This,pType)
+
+#define IPicture_get_Width(This,pWidth) \
+ (This)->lpVtbl -> get_Width(This,pWidth)
+
+#define IPicture_get_Height(This,pHeight) \
+ (This)->lpVtbl -> get_Height(This,pHeight)
+
+#define IPicture_Render(This,hDC,x,y,cx,cy,xSrc,ySrc,cxSrc,cySrc,pRcWBounds) \
+ (This)->lpVtbl -> Render(This,hDC,x,y,cx,cy,xSrc,ySrc,cxSrc,cySrc,pRcWBounds)
+
+#define IPicture_set_hPal(This,hPal) \
+ (This)->lpVtbl -> set_hPal(This,hPal)
+
+#define IPicture_get_CurDC(This,phDC) \
+ (This)->lpVtbl -> get_CurDC(This,phDC)
+
+#define IPicture_SelectPicture(This,hDCIn,phDCOut,phBmpOut) \
+ (This)->lpVtbl -> SelectPicture(This,hDCIn,phDCOut,phBmpOut)
+
+#define IPicture_get_KeepOriginalFormat(This,pKeep) \
+ (This)->lpVtbl -> get_KeepOriginalFormat(This,pKeep)
+
+#define IPicture_put_KeepOriginalFormat(This,keep) \
+ (This)->lpVtbl -> put_KeepOriginalFormat(This,keep)
+
+#define IPicture_PictureChanged(This) \
+ (This)->lpVtbl -> PictureChanged(This)
+
+#define IPicture_SaveAsFile(This,pStream,fSaveMemCopy,pCbSize) \
+ (This)->lpVtbl -> SaveAsFile(This,pStream,fSaveMemCopy,pCbSize)
+
+#define IPicture_get_Attributes(This,pDwAttr) \
+ (This)->lpVtbl -> get_Attributes(This,pDwAttr)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPicture_get_Handle_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [out] */ OLE_HANDLE __RPC_FAR *pHandle);
+
+
+void __RPC_STUB IPicture_get_Handle_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_get_hPal_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [out] */ OLE_HANDLE __RPC_FAR *phPal);
+
+
+void __RPC_STUB IPicture_get_hPal_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_get_Type_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [out] */ SHORT __RPC_FAR *pType);
+
+
+void __RPC_STUB IPicture_get_Type_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_get_Width_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [out] */ OLE_XSIZE_HIMETRIC __RPC_FAR *pWidth);
+
+
+void __RPC_STUB IPicture_get_Width_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_get_Height_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [out] */ OLE_YSIZE_HIMETRIC __RPC_FAR *pHeight);
+
+
+void __RPC_STUB IPicture_get_Height_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_Render_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [in] */ HDC hDC,
+ /* [in] */ LONG x,
+ /* [in] */ LONG y,
+ /* [in] */ LONG cx,
+ /* [in] */ LONG cy,
+ /* [in] */ OLE_XPOS_HIMETRIC xSrc,
+ /* [in] */ OLE_YPOS_HIMETRIC ySrc,
+ /* [in] */ OLE_XSIZE_HIMETRIC cxSrc,
+ /* [in] */ OLE_YSIZE_HIMETRIC cySrc,
+ /* [in] */ LPCRECT pRcWBounds);
+
+
+void __RPC_STUB IPicture_Render_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_set_hPal_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [in] */ OLE_HANDLE hPal);
+
+
+void __RPC_STUB IPicture_set_hPal_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_get_CurDC_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [out] */ HDC __RPC_FAR *phDC);
+
+
+void __RPC_STUB IPicture_get_CurDC_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_SelectPicture_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [in] */ HDC hDCIn,
+ /* [out] */ HDC __RPC_FAR *phDCOut,
+ /* [out] */ OLE_HANDLE __RPC_FAR *phBmpOut);
+
+
+void __RPC_STUB IPicture_SelectPicture_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_get_KeepOriginalFormat_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pKeep);
+
+
+void __RPC_STUB IPicture_get_KeepOriginalFormat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_put_KeepOriginalFormat_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [in] */ BOOL keep);
+
+
+void __RPC_STUB IPicture_put_KeepOriginalFormat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_PictureChanged_Proxy(
+ IPicture __RPC_FAR * This);
+
+
+void __RPC_STUB IPicture_PictureChanged_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_SaveAsFile_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [in] */ LPSTREAM pStream,
+ /* [in] */ BOOL fSaveMemCopy,
+ /* [out] */ LONG __RPC_FAR *pCbSize);
+
+
+void __RPC_STUB IPicture_SaveAsFile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPicture_get_Attributes_Proxy(
+ IPicture __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pDwAttr);
+
+
+void __RPC_STUB IPicture_get_Attributes_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPicture_INTERFACE_DEFINED__ */
+
+
+#ifndef __IFontDisp_INTERFACE_DEFINED__
+#define __IFontDisp_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IFontDisp
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IFontDisp __RPC_FAR *LPFONTDISP;
+
+
+EXTERN_C const IID IID_IFontDisp;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IFontDisp : public IDispatch
+ {
+ public:
+ };
+
+#else /* C style interface */
+
+ typedef struct IFontDispVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IFontDisp __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IFontDisp __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IFontDisp __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )(
+ IFontDisp __RPC_FAR * This,
+ /* [out] */ UINT __RPC_FAR *pctinfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )(
+ IFontDisp __RPC_FAR * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )(
+ IFontDisp __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgDispId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
+ IFontDisp __RPC_FAR * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+ END_INTERFACE
+ } IFontDispVtbl;
+
+ interface IFontDisp
+ {
+ CONST_VTBL struct IFontDispVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IFontDisp_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IFontDisp_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IFontDisp_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IFontDisp_GetTypeInfoCount(This,pctinfo) \
+ (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IFontDisp_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+ (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IFontDisp_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+ (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define IFontDisp_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IFontDisp_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPictureDisp_INTERFACE_DEFINED__
+#define __IPictureDisp_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPictureDisp
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPictureDisp __RPC_FAR *LPPICTUREDISP;
+
+
+EXTERN_C const IID IID_IPictureDisp;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPictureDisp : public IDispatch
+ {
+ public:
+ };
+
+#else /* C style interface */
+
+ typedef struct IPictureDispVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPictureDisp __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPictureDisp __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPictureDisp __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )(
+ IPictureDisp __RPC_FAR * This,
+ /* [out] */ UINT __RPC_FAR *pctinfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )(
+ IPictureDisp __RPC_FAR * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )(
+ IPictureDisp __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgDispId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
+ IPictureDisp __RPC_FAR * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
+ /* [out] */ VARIANT __RPC_FAR *pVarResult,
+ /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
+ /* [out] */ UINT __RPC_FAR *puArgErr);
+
+ END_INTERFACE
+ } IPictureDispVtbl;
+
+ interface IPictureDisp
+ {
+ CONST_VTBL struct IPictureDispVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPictureDisp_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPictureDisp_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPictureDisp_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPictureDisp_GetTypeInfoCount(This,pctinfo) \
+ (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IPictureDisp_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+ (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IPictureDisp_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+ (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define IPictureDisp_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IPictureDisp_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAdviseSinkEx_INTERFACE_DEFINED__
+#define __IAdviseSinkEx_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAdviseSinkEx
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object] */
+
+
+typedef IAdviseSinkEx __RPC_FAR *LPADVISESINKEX;
+
+
+EXTERN_C const IID IID_IAdviseSinkEx;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAdviseSinkEx : public IAdviseSink
+ {
+ public:
+ virtual /* [local] */ void STDMETHODCALLTYPE OnViewStatusChange(
+ /* [in] */ DWORD dwViewStatus) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAdviseSinkExVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAdviseSinkEx __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAdviseSinkEx __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAdviseSinkEx __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnDataChange )(
+ IAdviseSinkEx __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnViewChange )(
+ IAdviseSinkEx __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnRename )(
+ IAdviseSinkEx __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pmk);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnSave )(
+ IAdviseSinkEx __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnClose )(
+ IAdviseSinkEx __RPC_FAR * This);
+
+ /* [local] */ void ( STDMETHODCALLTYPE __RPC_FAR *OnViewStatusChange )(
+ IAdviseSinkEx __RPC_FAR * This,
+ /* [in] */ DWORD dwViewStatus);
+
+ END_INTERFACE
+ } IAdviseSinkExVtbl;
+
+ interface IAdviseSinkEx
+ {
+ CONST_VTBL struct IAdviseSinkExVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAdviseSinkEx_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAdviseSinkEx_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAdviseSinkEx_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAdviseSinkEx_OnDataChange(This,pFormatetc,pStgmed) \
+ (This)->lpVtbl -> OnDataChange(This,pFormatetc,pStgmed)
+
+#define IAdviseSinkEx_OnViewChange(This,dwAspect,lindex) \
+ (This)->lpVtbl -> OnViewChange(This,dwAspect,lindex)
+
+#define IAdviseSinkEx_OnRename(This,pmk) \
+ (This)->lpVtbl -> OnRename(This,pmk)
+
+#define IAdviseSinkEx_OnSave(This) \
+ (This)->lpVtbl -> OnSave(This)
+
+#define IAdviseSinkEx_OnClose(This) \
+ (This)->lpVtbl -> OnClose(This)
+
+
+#define IAdviseSinkEx_OnViewStatusChange(This,dwViewStatus) \
+ (This)->lpVtbl -> OnViewStatusChange(This,dwViewStatus)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSinkEx_RemoteOnViewStatusChange_Proxy(
+ IAdviseSinkEx __RPC_FAR * This,
+ /* [in] */ DWORD dwViewStatus);
+
+
+void __RPC_STUB IAdviseSinkEx_RemoteOnViewStatusChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAdviseSinkEx_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceObjectWindowless_INTERFACE_DEFINED__
+#define __IOleInPlaceObjectWindowless_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceObjectWindowless
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object][local] */
+
+
+typedef IOleInPlaceObjectWindowless __RPC_FAR *LPOLEINPLACEOBJECTWINDOWLESS;
+
+
+EXTERN_C const IID IID_IOleInPlaceObjectWindowless;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceObjectWindowless : public IOleInPlaceObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnWindowMessage(
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wParam,
+ /* [in] */ LPARAM lParam,
+ /* [out] */ LRESULT __RPC_FAR *plResult) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDropTarget(
+ /* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceObjectWindowlessVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InPlaceDeactivate )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UIDeactivate )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetObjectRects )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect,
+ /* [in] */ LPCRECT lprcClipRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReactivateAndUndo )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnWindowMessage )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This,
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wParam,
+ /* [in] */ LPARAM lParam,
+ /* [out] */ LRESULT __RPC_FAR *plResult);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDropTarget )(
+ IOleInPlaceObjectWindowless __RPC_FAR * This,
+ /* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget);
+
+ END_INTERFACE
+ } IOleInPlaceObjectWindowlessVtbl;
+
+ interface IOleInPlaceObjectWindowless
+ {
+ CONST_VTBL struct IOleInPlaceObjectWindowlessVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceObjectWindowless_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceObjectWindowless_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceObjectWindowless_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceObjectWindowless_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceObjectWindowless_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceObjectWindowless_InPlaceDeactivate(This) \
+ (This)->lpVtbl -> InPlaceDeactivate(This)
+
+#define IOleInPlaceObjectWindowless_UIDeactivate(This) \
+ (This)->lpVtbl -> UIDeactivate(This)
+
+#define IOleInPlaceObjectWindowless_SetObjectRects(This,lprcPosRect,lprcClipRect) \
+ (This)->lpVtbl -> SetObjectRects(This,lprcPosRect,lprcClipRect)
+
+#define IOleInPlaceObjectWindowless_ReactivateAndUndo(This) \
+ (This)->lpVtbl -> ReactivateAndUndo(This)
+
+
+#define IOleInPlaceObjectWindowless_OnWindowMessage(This,msg,wParam,lParam,plResult) \
+ (This)->lpVtbl -> OnWindowMessage(This,msg,wParam,lParam,plResult)
+
+#define IOleInPlaceObjectWindowless_GetDropTarget(This,ppDropTarget) \
+ (This)->lpVtbl -> GetDropTarget(This,ppDropTarget)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceObjectWindowless_OnWindowMessage_Proxy(
+ IOleInPlaceObjectWindowless __RPC_FAR * This,
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wParam,
+ /* [in] */ LPARAM lParam,
+ /* [out] */ LRESULT __RPC_FAR *plResult);
+
+
+void __RPC_STUB IOleInPlaceObjectWindowless_OnWindowMessage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceObjectWindowless_GetDropTarget_Proxy(
+ IOleInPlaceObjectWindowless __RPC_FAR * This,
+ /* [out] */ IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget);
+
+
+void __RPC_STUB IOleInPlaceObjectWindowless_GetDropTarget_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceObjectWindowless_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceSiteEx_INTERFACE_DEFINED__
+#define __IOleInPlaceSiteEx_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceSiteEx
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object] */
+
+
+typedef IOleInPlaceSiteEx __RPC_FAR *LPOLEINPLACESITEEX;
+
+typedef /* [v1_enum] */
+enum tagACTIVATEFLAGS
+ { ACTIVATE_WINDOWLESS = 1
+ } ACTIVATEFLAGS;
+
+
+EXTERN_C const IID IID_IOleInPlaceSiteEx;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceSiteEx : public IOleInPlaceSite
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivateEx(
+ /* [out] */ BOOL __RPC_FAR *pfNoRedraw,
+ /* [in] */ DWORD dwFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivateEx(
+ /* [in] */ BOOL fNoRedraw) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RequestUIActivate( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceSiteExVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceSiteEx __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceSiteEx __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CanInPlaceActivate )(
+ IOleInPlaceSiteEx __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceActivate )(
+ IOleInPlaceSiteEx __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIActivate )(
+ IOleInPlaceSiteEx __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindowContext )(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Scroll )(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [in] */ SIZE scrollExtant);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIDeactivate )(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [in] */ BOOL fUndoable);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceDeactivate )(
+ IOleInPlaceSiteEx __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DiscardUndoState )(
+ IOleInPlaceSiteEx __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeactivateAndUndo )(
+ IOleInPlaceSiteEx __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnPosRectChange )(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceActivateEx )(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pfNoRedraw,
+ /* [in] */ DWORD dwFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceDeactivateEx )(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [in] */ BOOL fNoRedraw);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestUIActivate )(
+ IOleInPlaceSiteEx __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleInPlaceSiteExVtbl;
+
+ interface IOleInPlaceSiteEx
+ {
+ CONST_VTBL struct IOleInPlaceSiteExVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceSiteEx_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceSiteEx_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceSiteEx_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceSiteEx_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceSiteEx_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceSiteEx_CanInPlaceActivate(This) \
+ (This)->lpVtbl -> CanInPlaceActivate(This)
+
+#define IOleInPlaceSiteEx_OnInPlaceActivate(This) \
+ (This)->lpVtbl -> OnInPlaceActivate(This)
+
+#define IOleInPlaceSiteEx_OnUIActivate(This) \
+ (This)->lpVtbl -> OnUIActivate(This)
+
+#define IOleInPlaceSiteEx_GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo) \
+ (This)->lpVtbl -> GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo)
+
+#define IOleInPlaceSiteEx_Scroll(This,scrollExtant) \
+ (This)->lpVtbl -> Scroll(This,scrollExtant)
+
+#define IOleInPlaceSiteEx_OnUIDeactivate(This,fUndoable) \
+ (This)->lpVtbl -> OnUIDeactivate(This,fUndoable)
+
+#define IOleInPlaceSiteEx_OnInPlaceDeactivate(This) \
+ (This)->lpVtbl -> OnInPlaceDeactivate(This)
+
+#define IOleInPlaceSiteEx_DiscardUndoState(This) \
+ (This)->lpVtbl -> DiscardUndoState(This)
+
+#define IOleInPlaceSiteEx_DeactivateAndUndo(This) \
+ (This)->lpVtbl -> DeactivateAndUndo(This)
+
+#define IOleInPlaceSiteEx_OnPosRectChange(This,lprcPosRect) \
+ (This)->lpVtbl -> OnPosRectChange(This,lprcPosRect)
+
+
+#define IOleInPlaceSiteEx_OnInPlaceActivateEx(This,pfNoRedraw,dwFlags) \
+ (This)->lpVtbl -> OnInPlaceActivateEx(This,pfNoRedraw,dwFlags)
+
+#define IOleInPlaceSiteEx_OnInPlaceDeactivateEx(This,fNoRedraw) \
+ (This)->lpVtbl -> OnInPlaceDeactivateEx(This,fNoRedraw)
+
+#define IOleInPlaceSiteEx_RequestUIActivate(This) \
+ (This)->lpVtbl -> RequestUIActivate(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteEx_OnInPlaceActivateEx_Proxy(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pfNoRedraw,
+ /* [in] */ DWORD dwFlags);
+
+
+void __RPC_STUB IOleInPlaceSiteEx_OnInPlaceActivateEx_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteEx_OnInPlaceDeactivateEx_Proxy(
+ IOleInPlaceSiteEx __RPC_FAR * This,
+ /* [in] */ BOOL fNoRedraw);
+
+
+void __RPC_STUB IOleInPlaceSiteEx_OnInPlaceDeactivateEx_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteEx_RequestUIActivate_Proxy(
+ IOleInPlaceSiteEx __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSiteEx_RequestUIActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceSiteEx_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceSiteWindowless_INTERFACE_DEFINED__
+#define __IOleInPlaceSiteWindowless_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceSiteWindowless
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object][local] */
+
+
+typedef IOleInPlaceSiteWindowless __RPC_FAR *LPOLEINPLACESITEWINDOWLESS;
+
+typedef /* [v1_enum] */
+enum tagOLEDCFLAGS
+ { OLEDC_NODRAW = 0x1,
+ OLEDC_PAINTBKGND = 0x2,
+ OLEDC_OFFSCREEN = 0x4
+ } OLEDCFLAGS;
+
+
+EXTERN_C const IID IID_IOleInPlaceSiteWindowless;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceSiteWindowless : public IOleInPlaceSiteEx
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CanWindowlessActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCapture( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCapture(
+ /* [in] */ BOOL fCapture) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFocus( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFocus(
+ /* [in] */ BOOL fFocus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDC(
+ /* [in] */ LPCRECT pRect,
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ HDC __RPC_FAR *phDC) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseDC(
+ /* [in] */ HDC hDC) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InvalidateRect(
+ /* [in] */ LPCRECT pRect,
+ /* [in] */ BOOL fErase) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InvalidateRgn(
+ /* [in] */ HRGN hRGN,
+ /* [in] */ BOOL fErase) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ScrollRect(
+ /* [in] */ INT dx,
+ /* [in] */ INT dy,
+ /* [in] */ LPCRECT pRectScroll,
+ /* [in] */ LPCRECT pRectClip) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AdjustRect(
+ /* [out][in] */ LPRECT prc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnDefWindowMessage(
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wParam,
+ /* [in] */ LPARAM lParam,
+ /* [out] */ LRESULT __RPC_FAR *plResult) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceSiteWindowlessVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CanInPlaceActivate )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceActivate )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIActivate )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindowContext )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Scroll )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ SIZE scrollExtant);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIDeactivate )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ BOOL fUndoable);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceDeactivate )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DiscardUndoState )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeactivateAndUndo )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnPosRectChange )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceActivateEx )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [out] */ BOOL __RPC_FAR *pfNoRedraw,
+ /* [in] */ DWORD dwFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceDeactivateEx )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ BOOL fNoRedraw);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestUIActivate )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CanWindowlessActivate )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCapture )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetCapture )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ BOOL fCapture);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetFocus )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetFocus )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ BOOL fFocus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDC )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ LPCRECT pRect,
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ HDC __RPC_FAR *phDC);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseDC )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ HDC hDC);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InvalidateRect )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ LPCRECT pRect,
+ /* [in] */ BOOL fErase);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InvalidateRgn )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ HRGN hRGN,
+ /* [in] */ BOOL fErase);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ScrollRect )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ INT dx,
+ /* [in] */ INT dy,
+ /* [in] */ LPCRECT pRectScroll,
+ /* [in] */ LPCRECT pRectClip);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AdjustRect )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [out][in] */ LPRECT prc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnDefWindowMessage )(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wParam,
+ /* [in] */ LPARAM lParam,
+ /* [out] */ LRESULT __RPC_FAR *plResult);
+
+ END_INTERFACE
+ } IOleInPlaceSiteWindowlessVtbl;
+
+ interface IOleInPlaceSiteWindowless
+ {
+ CONST_VTBL struct IOleInPlaceSiteWindowlessVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceSiteWindowless_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceSiteWindowless_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceSiteWindowless_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceSiteWindowless_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceSiteWindowless_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceSiteWindowless_CanInPlaceActivate(This) \
+ (This)->lpVtbl -> CanInPlaceActivate(This)
+
+#define IOleInPlaceSiteWindowless_OnInPlaceActivate(This) \
+ (This)->lpVtbl -> OnInPlaceActivate(This)
+
+#define IOleInPlaceSiteWindowless_OnUIActivate(This) \
+ (This)->lpVtbl -> OnUIActivate(This)
+
+#define IOleInPlaceSiteWindowless_GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo) \
+ (This)->lpVtbl -> GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo)
+
+#define IOleInPlaceSiteWindowless_Scroll(This,scrollExtant) \
+ (This)->lpVtbl -> Scroll(This,scrollExtant)
+
+#define IOleInPlaceSiteWindowless_OnUIDeactivate(This,fUndoable) \
+ (This)->lpVtbl -> OnUIDeactivate(This,fUndoable)
+
+#define IOleInPlaceSiteWindowless_OnInPlaceDeactivate(This) \
+ (This)->lpVtbl -> OnInPlaceDeactivate(This)
+
+#define IOleInPlaceSiteWindowless_DiscardUndoState(This) \
+ (This)->lpVtbl -> DiscardUndoState(This)
+
+#define IOleInPlaceSiteWindowless_DeactivateAndUndo(This) \
+ (This)->lpVtbl -> DeactivateAndUndo(This)
+
+#define IOleInPlaceSiteWindowless_OnPosRectChange(This,lprcPosRect) \
+ (This)->lpVtbl -> OnPosRectChange(This,lprcPosRect)
+
+
+#define IOleInPlaceSiteWindowless_OnInPlaceActivateEx(This,pfNoRedraw,dwFlags) \
+ (This)->lpVtbl -> OnInPlaceActivateEx(This,pfNoRedraw,dwFlags)
+
+#define IOleInPlaceSiteWindowless_OnInPlaceDeactivateEx(This,fNoRedraw) \
+ (This)->lpVtbl -> OnInPlaceDeactivateEx(This,fNoRedraw)
+
+#define IOleInPlaceSiteWindowless_RequestUIActivate(This) \
+ (This)->lpVtbl -> RequestUIActivate(This)
+
+
+#define IOleInPlaceSiteWindowless_CanWindowlessActivate(This) \
+ (This)->lpVtbl -> CanWindowlessActivate(This)
+
+#define IOleInPlaceSiteWindowless_GetCapture(This) \
+ (This)->lpVtbl -> GetCapture(This)
+
+#define IOleInPlaceSiteWindowless_SetCapture(This,fCapture) \
+ (This)->lpVtbl -> SetCapture(This,fCapture)
+
+#define IOleInPlaceSiteWindowless_GetFocus(This) \
+ (This)->lpVtbl -> GetFocus(This)
+
+#define IOleInPlaceSiteWindowless_SetFocus(This,fFocus) \
+ (This)->lpVtbl -> SetFocus(This,fFocus)
+
+#define IOleInPlaceSiteWindowless_GetDC(This,pRect,grfFlags,phDC) \
+ (This)->lpVtbl -> GetDC(This,pRect,grfFlags,phDC)
+
+#define IOleInPlaceSiteWindowless_ReleaseDC(This,hDC) \
+ (This)->lpVtbl -> ReleaseDC(This,hDC)
+
+#define IOleInPlaceSiteWindowless_InvalidateRect(This,pRect,fErase) \
+ (This)->lpVtbl -> InvalidateRect(This,pRect,fErase)
+
+#define IOleInPlaceSiteWindowless_InvalidateRgn(This,hRGN,fErase) \
+ (This)->lpVtbl -> InvalidateRgn(This,hRGN,fErase)
+
+#define IOleInPlaceSiteWindowless_ScrollRect(This,dx,dy,pRectScroll,pRectClip) \
+ (This)->lpVtbl -> ScrollRect(This,dx,dy,pRectScroll,pRectClip)
+
+#define IOleInPlaceSiteWindowless_AdjustRect(This,prc) \
+ (This)->lpVtbl -> AdjustRect(This,prc)
+
+#define IOleInPlaceSiteWindowless_OnDefWindowMessage(This,msg,wParam,lParam,plResult) \
+ (This)->lpVtbl -> OnDefWindowMessage(This,msg,wParam,lParam,plResult)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_CanWindowlessActivate_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_CanWindowlessActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_GetCapture_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_GetCapture_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_SetCapture_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ BOOL fCapture);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_SetCapture_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_GetFocus_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_GetFocus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_SetFocus_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ BOOL fFocus);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_SetFocus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_GetDC_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ LPCRECT pRect,
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ HDC __RPC_FAR *phDC);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_GetDC_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_ReleaseDC_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ HDC hDC);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_ReleaseDC_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_InvalidateRect_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ LPCRECT pRect,
+ /* [in] */ BOOL fErase);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_InvalidateRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_InvalidateRgn_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ HRGN hRGN,
+ /* [in] */ BOOL fErase);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_InvalidateRgn_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_ScrollRect_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ INT dx,
+ /* [in] */ INT dy,
+ /* [in] */ LPCRECT pRectScroll,
+ /* [in] */ LPCRECT pRectClip);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_ScrollRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_AdjustRect_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [out][in] */ LPRECT prc);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_AdjustRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSiteWindowless_OnDefWindowMessage_Proxy(
+ IOleInPlaceSiteWindowless __RPC_FAR * This,
+ /* [in] */ UINT msg,
+ /* [in] */ WPARAM wParam,
+ /* [in] */ LPARAM lParam,
+ /* [out] */ LRESULT __RPC_FAR *plResult);
+
+
+void __RPC_STUB IOleInPlaceSiteWindowless_OnDefWindowMessage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceSiteWindowless_INTERFACE_DEFINED__ */
+
+
+#ifndef __IViewObjectEx_INTERFACE_DEFINED__
+#define __IViewObjectEx_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IViewObjectEx
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object][local] */
+
+
+typedef IViewObjectEx __RPC_FAR *LPVIEWOBJECTEX;
+
+typedef /* [v1_enum] */
+enum tagVIEWSTATUS
+ { VIEWSTATUS_OPAQUE = 1,
+ VIEWSTATUS_SOLIDBKGND = 2,
+ VIEWSTATUS_DVASPECTOPAQUE = 4,
+ VIEWSTATUS_DVASPECTTRANSPARENT = 8
+ } VIEWSTATUS;
+
+typedef /* [v1_enum] */
+enum tagHITRESULT
+ { HITRESULT_OUTSIDE = 0,
+ HITRESULT_TRANSPARENT = 1,
+ HITRESULT_CLOSE = 2,
+ HITRESULT_HIT = 3
+ } HITRESULT;
+
+typedef /* [v1_enum] */
+enum tagDVASPECT2
+ { DVASPECT_OPAQUE = 16,
+ DVASPECT_TRANSPARENT = 32
+ } DVASPECT2;
+
+typedef struct tagExtentInfo
+ {
+ ULONG cb;
+ DWORD dwExtentMode;
+ SIZEL sizelProposed;
+ } DVEXTENTINFO;
+
+typedef /* [v1_enum] */
+enum tagExtentMode
+ { DVEXTENT_CONTENT = 0,
+ DVEXTENT_INTEGRAL = DVEXTENT_CONTENT + 1
+ } DVEXTENTMODE;
+
+typedef /* [v1_enum] */
+enum tagAspectInfoFlag
+ { DVASPECTINFOFLAG_CANOPTIMIZE = 1
+ } DVASPECTINFOFLAG;
+
+typedef struct tagAspectInfo
+ {
+ ULONG cb;
+ DWORD dwFlags;
+ } DVASPECTINFO;
+
+
+EXTERN_C const IID IID_IViewObjectEx;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IViewObjectEx : public IViewObject2
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetRect(
+ /* [in] */ DWORD dwAspect,
+ /* [out] */ LPRECTL pRect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetViewStatus(
+ /* [out] */ DWORD __RPC_FAR *pdwStatus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryHitPoint(
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ POINT ptlLoc,
+ /* [in] */ LONG lCloseHint,
+ /* [out] */ DWORD __RPC_FAR *pHitResult) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryHitRect(
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ LPCRECT pRectLoc,
+ /* [in] */ LONG lCloseHint,
+ /* [out] */ DWORD __RPC_FAR *pHitResult) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetNaturalExtent(
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [in] */ DVEXTENTINFO __RPC_FAR *pExtentInfo,
+ /* [out] */ LPSIZEL pSizel) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IViewObjectExVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IViewObjectEx __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IViewObjectEx __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Draw )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hdcTargetDev,
+ /* [in] */ HDC hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *pfnContinue )(
+ DWORD dwContinue),
+ /* [in] */ DWORD dwContinue);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetColorSet )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Freeze )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unfreeze )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwFreeze);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAdvise )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD aspects,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAdvise )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAspects,
+ /* [out] */ DWORD __RPC_FAR *pAdvf,
+ /* [out] */ IAdviseSink __RPC_FAR *__RPC_FAR *ppAdvSink);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetExtent )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [out] */ LPSIZEL lpsizel);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRect )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [out] */ LPRECTL pRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetViewStatus )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryHitPoint )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ POINT ptlLoc,
+ /* [in] */ LONG lCloseHint,
+ /* [out] */ DWORD __RPC_FAR *pHitResult);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryHitRect )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ LPCRECT pRectLoc,
+ /* [in] */ LONG lCloseHint,
+ /* [out] */ DWORD __RPC_FAR *pHitResult);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNaturalExtent )(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [in] */ DVEXTENTINFO __RPC_FAR *pExtentInfo,
+ /* [out] */ LPSIZEL pSizel);
+
+ END_INTERFACE
+ } IViewObjectExVtbl;
+
+ interface IViewObjectEx
+ {
+ CONST_VTBL struct IViewObjectExVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IViewObjectEx_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IViewObjectEx_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IViewObjectEx_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IViewObjectEx_Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue) \
+ (This)->lpVtbl -> Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue)
+
+#define IViewObjectEx_GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet) \
+ (This)->lpVtbl -> GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet)
+
+#define IViewObjectEx_Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze) \
+ (This)->lpVtbl -> Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze)
+
+#define IViewObjectEx_Unfreeze(This,dwFreeze) \
+ (This)->lpVtbl -> Unfreeze(This,dwFreeze)
+
+#define IViewObjectEx_SetAdvise(This,aspects,advf,pAdvSink) \
+ (This)->lpVtbl -> SetAdvise(This,aspects,advf,pAdvSink)
+
+#define IViewObjectEx_GetAdvise(This,pAspects,pAdvf,ppAdvSink) \
+ (This)->lpVtbl -> GetAdvise(This,pAspects,pAdvf,ppAdvSink)
+
+
+#define IViewObjectEx_GetExtent(This,dwDrawAspect,lindex,ptd,lpsizel) \
+ (This)->lpVtbl -> GetExtent(This,dwDrawAspect,lindex,ptd,lpsizel)
+
+
+#define IViewObjectEx_GetRect(This,dwAspect,pRect) \
+ (This)->lpVtbl -> GetRect(This,dwAspect,pRect)
+
+#define IViewObjectEx_GetViewStatus(This,pdwStatus) \
+ (This)->lpVtbl -> GetViewStatus(This,pdwStatus)
+
+#define IViewObjectEx_QueryHitPoint(This,dwAspect,pRectBounds,ptlLoc,lCloseHint,pHitResult) \
+ (This)->lpVtbl -> QueryHitPoint(This,dwAspect,pRectBounds,ptlLoc,lCloseHint,pHitResult)
+
+#define IViewObjectEx_QueryHitRect(This,dwAspect,pRectBounds,pRectLoc,lCloseHint,pHitResult) \
+ (This)->lpVtbl -> QueryHitRect(This,dwAspect,pRectBounds,pRectLoc,lCloseHint,pHitResult)
+
+#define IViewObjectEx_GetNaturalExtent(This,dwAspect,lindex,ptd,hicTargetDev,pExtentInfo,pSizel) \
+ (This)->lpVtbl -> GetNaturalExtent(This,dwAspect,lindex,ptd,hicTargetDev,pExtentInfo,pSizel)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IViewObjectEx_GetRect_Proxy(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [out] */ LPRECTL pRect);
+
+
+void __RPC_STUB IViewObjectEx_GetRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IViewObjectEx_GetViewStatus_Proxy(
+ IViewObjectEx __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+
+void __RPC_STUB IViewObjectEx_GetViewStatus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IViewObjectEx_QueryHitPoint_Proxy(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ POINT ptlLoc,
+ /* [in] */ LONG lCloseHint,
+ /* [out] */ DWORD __RPC_FAR *pHitResult);
+
+
+void __RPC_STUB IViewObjectEx_QueryHitPoint_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IViewObjectEx_QueryHitRect_Proxy(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ LPCRECT pRectLoc,
+ /* [in] */ LONG lCloseHint,
+ /* [out] */ DWORD __RPC_FAR *pHitResult);
+
+
+void __RPC_STUB IViewObjectEx_QueryHitRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IViewObjectEx_GetNaturalExtent_Proxy(
+ IViewObjectEx __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [in] */ DVEXTENTINFO __RPC_FAR *pExtentInfo,
+ /* [out] */ LPSIZEL pSizel);
+
+
+void __RPC_STUB IViewObjectEx_GetNaturalExtent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IViewObjectEx_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleUndoUnit_INTERFACE_DEFINED__
+#define __IOleUndoUnit_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleUndoUnit
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object] */
+
+
+typedef IOleUndoUnit __RPC_FAR *LPOLEUNDOUNIT;
+
+
+EXTERN_C const IID IID_IOleUndoUnit;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleUndoUnit : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Do(
+ /* [in] */ IOleUndoManager __RPC_FAR *pUndoManager) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDescription(
+ /* [out] */ BSTR __RPC_FAR *pBstr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetUnitType(
+ /* [out] */ CLSID __RPC_FAR *pClsid,
+ /* [out] */ LONG __RPC_FAR *plID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnNextAdd( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleUndoUnitVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleUndoUnit __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleUndoUnit __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleUndoUnit __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Do )(
+ IOleUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleUndoManager __RPC_FAR *pUndoManager);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDescription )(
+ IOleUndoUnit __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetUnitType )(
+ IOleUndoUnit __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClsid,
+ /* [out] */ LONG __RPC_FAR *plID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnNextAdd )(
+ IOleUndoUnit __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleUndoUnitVtbl;
+
+ interface IOleUndoUnit
+ {
+ CONST_VTBL struct IOleUndoUnitVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleUndoUnit_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleUndoUnit_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleUndoUnit_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleUndoUnit_Do(This,pUndoManager) \
+ (This)->lpVtbl -> Do(This,pUndoManager)
+
+#define IOleUndoUnit_GetDescription(This,pBstr) \
+ (This)->lpVtbl -> GetDescription(This,pBstr)
+
+#define IOleUndoUnit_GetUnitType(This,pClsid,plID) \
+ (This)->lpVtbl -> GetUnitType(This,pClsid,plID)
+
+#define IOleUndoUnit_OnNextAdd(This) \
+ (This)->lpVtbl -> OnNextAdd(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoUnit_Do_Proxy(
+ IOleUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleUndoManager __RPC_FAR *pUndoManager);
+
+
+void __RPC_STUB IOleUndoUnit_Do_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoUnit_GetDescription_Proxy(
+ IOleUndoUnit __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstr);
+
+
+void __RPC_STUB IOleUndoUnit_GetDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoUnit_GetUnitType_Proxy(
+ IOleUndoUnit __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClsid,
+ /* [out] */ LONG __RPC_FAR *plID);
+
+
+void __RPC_STUB IOleUndoUnit_GetUnitType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoUnit_OnNextAdd_Proxy(
+ IOleUndoUnit __RPC_FAR * This);
+
+
+void __RPC_STUB IOleUndoUnit_OnNextAdd_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleUndoUnit_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleParentUndoUnit_INTERFACE_DEFINED__
+#define __IOleParentUndoUnit_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleParentUndoUnit
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object] */
+
+
+typedef IOleParentUndoUnit __RPC_FAR *LPOLEPARENTUNDOUNIT;
+
+
+EXTERN_C const IID IID_IOleParentUndoUnit;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleParentUndoUnit : public IOleUndoUnit
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Open(
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Close(
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU,
+ /* [in] */ BOOL fCommit) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Add(
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindUnit(
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetParentState(
+ /* [out] */ DWORD __RPC_FAR *pdwState) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleParentUndoUnitVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleParentUndoUnit __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleParentUndoUnit __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Do )(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleUndoManager __RPC_FAR *pUndoManager);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDescription )(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetUnitType )(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClsid,
+ /* [out] */ LONG __RPC_FAR *plID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnNextAdd )(
+ IOleParentUndoUnit __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Open )(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Close )(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU,
+ /* [in] */ BOOL fCommit);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Add )(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FindUnit )(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetParentState )(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwState);
+
+ END_INTERFACE
+ } IOleParentUndoUnitVtbl;
+
+ interface IOleParentUndoUnit
+ {
+ CONST_VTBL struct IOleParentUndoUnitVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleParentUndoUnit_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleParentUndoUnit_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleParentUndoUnit_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleParentUndoUnit_Do(This,pUndoManager) \
+ (This)->lpVtbl -> Do(This,pUndoManager)
+
+#define IOleParentUndoUnit_GetDescription(This,pBstr) \
+ (This)->lpVtbl -> GetDescription(This,pBstr)
+
+#define IOleParentUndoUnit_GetUnitType(This,pClsid,plID) \
+ (This)->lpVtbl -> GetUnitType(This,pClsid,plID)
+
+#define IOleParentUndoUnit_OnNextAdd(This) \
+ (This)->lpVtbl -> OnNextAdd(This)
+
+
+#define IOleParentUndoUnit_Open(This,pPUU) \
+ (This)->lpVtbl -> Open(This,pPUU)
+
+#define IOleParentUndoUnit_Close(This,pPUU,fCommit) \
+ (This)->lpVtbl -> Close(This,pPUU,fCommit)
+
+#define IOleParentUndoUnit_Add(This,pUU) \
+ (This)->lpVtbl -> Add(This,pUU)
+
+#define IOleParentUndoUnit_FindUnit(This,pUU) \
+ (This)->lpVtbl -> FindUnit(This,pUU)
+
+#define IOleParentUndoUnit_GetParentState(This,pdwState) \
+ (This)->lpVtbl -> GetParentState(This,pdwState)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleParentUndoUnit_Open_Proxy(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU);
+
+
+void __RPC_STUB IOleParentUndoUnit_Open_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleParentUndoUnit_Close_Proxy(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU,
+ /* [in] */ BOOL fCommit);
+
+
+void __RPC_STUB IOleParentUndoUnit_Close_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleParentUndoUnit_Add_Proxy(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+
+void __RPC_STUB IOleParentUndoUnit_Add_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleParentUndoUnit_FindUnit_Proxy(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+
+void __RPC_STUB IOleParentUndoUnit_FindUnit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleParentUndoUnit_GetParentState_Proxy(
+ IOleParentUndoUnit __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwState);
+
+
+void __RPC_STUB IOleParentUndoUnit_GetParentState_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleParentUndoUnit_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumOleUndoUnits_INTERFACE_DEFINED__
+#define __IEnumOleUndoUnits_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumOleUndoUnits
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object] */
+
+
+typedef IEnumOleUndoUnits __RPC_FAR *LPENUMOLEUNDOUNITS;
+
+
+EXTERN_C const IID IID_IEnumOleUndoUnits;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumOleUndoUnits : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG cElt,
+ /* [length_is][size_is][out] */ IOleUndoUnit __RPC_FAR *__RPC_FAR *rgElt,
+ /* [out] */ ULONG __RPC_FAR *pcEltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG cElt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumOleUndoUnits __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumOleUndoUnitsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumOleUndoUnits __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumOleUndoUnits __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumOleUndoUnits __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumOleUndoUnits __RPC_FAR * This,
+ /* [in] */ ULONG cElt,
+ /* [length_is][size_is][out] */ IOleUndoUnit __RPC_FAR *__RPC_FAR *rgElt,
+ /* [out] */ ULONG __RPC_FAR *pcEltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumOleUndoUnits __RPC_FAR * This,
+ /* [in] */ ULONG cElt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumOleUndoUnits __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumOleUndoUnits __RPC_FAR * This,
+ /* [out] */ IEnumOleUndoUnits __RPC_FAR *__RPC_FAR *ppEnum);
+
+ END_INTERFACE
+ } IEnumOleUndoUnitsVtbl;
+
+ interface IEnumOleUndoUnits
+ {
+ CONST_VTBL struct IEnumOleUndoUnitsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumOleUndoUnits_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumOleUndoUnits_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumOleUndoUnits_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumOleUndoUnits_Next(This,cElt,rgElt,pcEltFetched) \
+ (This)->lpVtbl -> Next(This,cElt,rgElt,pcEltFetched)
+
+#define IEnumOleUndoUnits_Skip(This,cElt) \
+ (This)->lpVtbl -> Skip(This,cElt)
+
+#define IEnumOleUndoUnits_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumOleUndoUnits_Clone(This,ppEnum) \
+ (This)->lpVtbl -> Clone(This,ppEnum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumOleUndoUnits_RemoteNext_Proxy(
+ IEnumOleUndoUnits __RPC_FAR * This,
+ /* [in] */ ULONG cElt,
+ /* [length_is][size_is][out] */ IOleUndoUnit __RPC_FAR *__RPC_FAR *rgElt,
+ /* [out] */ ULONG __RPC_FAR *pcEltFetched);
+
+
+void __RPC_STUB IEnumOleUndoUnits_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOleUndoUnits_Skip_Proxy(
+ IEnumOleUndoUnits __RPC_FAR * This,
+ /* [in] */ ULONG cElt);
+
+
+void __RPC_STUB IEnumOleUndoUnits_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOleUndoUnits_Reset_Proxy(
+ IEnumOleUndoUnits __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumOleUndoUnits_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOleUndoUnits_Clone_Proxy(
+ IEnumOleUndoUnits __RPC_FAR * This,
+ /* [out] */ IEnumOleUndoUnits __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IEnumOleUndoUnits_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumOleUndoUnits_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleUndoManager_INTERFACE_DEFINED__
+#define __IOleUndoManager_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleUndoManager
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object] */
+
+
+typedef IOleUndoManager __RPC_FAR *LPOLEUNDOMANAGER;
+
+
+EXTERN_C const IID IID_IOleUndoManager;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleUndoManager : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Open(
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Close(
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU,
+ /* [in] */ BOOL fCommit) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Add(
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetOpenParentState(
+ /* [out] */ DWORD __RPC_FAR *pdwState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DiscardFrom(
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UndoTo(
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RedoTo(
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumUndoable(
+ /* [out] */ IEnumOleUndoUnits __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumRedoable(
+ /* [out] */ IEnumOleUndoUnits __RPC_FAR *__RPC_FAR *ppEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetLastUndoDescription(
+ /* [out] */ BSTR __RPC_FAR *pBstr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetLastRedoDescription(
+ /* [out] */ BSTR __RPC_FAR *pBstr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Enable(
+ /* [in] */ BOOL fEnable) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleUndoManagerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleUndoManager __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleUndoManager __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Open )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Close )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU,
+ /* [in] */ BOOL fCommit);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Add )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetOpenParentState )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwState);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DiscardFrom )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UndoTo )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RedoTo )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumUndoable )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [out] */ IEnumOleUndoUnits __RPC_FAR *__RPC_FAR *ppEnum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumRedoable )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [out] */ IEnumOleUndoUnits __RPC_FAR *__RPC_FAR *ppEnum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLastUndoDescription )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLastRedoDescription )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Enable )(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ BOOL fEnable);
+
+ END_INTERFACE
+ } IOleUndoManagerVtbl;
+
+ interface IOleUndoManager
+ {
+ CONST_VTBL struct IOleUndoManagerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleUndoManager_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleUndoManager_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleUndoManager_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleUndoManager_Open(This,pPUU) \
+ (This)->lpVtbl -> Open(This,pPUU)
+
+#define IOleUndoManager_Close(This,pPUU,fCommit) \
+ (This)->lpVtbl -> Close(This,pPUU,fCommit)
+
+#define IOleUndoManager_Add(This,pUU) \
+ (This)->lpVtbl -> Add(This,pUU)
+
+#define IOleUndoManager_GetOpenParentState(This,pdwState) \
+ (This)->lpVtbl -> GetOpenParentState(This,pdwState)
+
+#define IOleUndoManager_DiscardFrom(This,pUU) \
+ (This)->lpVtbl -> DiscardFrom(This,pUU)
+
+#define IOleUndoManager_UndoTo(This,pUU) \
+ (This)->lpVtbl -> UndoTo(This,pUU)
+
+#define IOleUndoManager_RedoTo(This,pUU) \
+ (This)->lpVtbl -> RedoTo(This,pUU)
+
+#define IOleUndoManager_EnumUndoable(This,ppEnum) \
+ (This)->lpVtbl -> EnumUndoable(This,ppEnum)
+
+#define IOleUndoManager_EnumRedoable(This,ppEnum) \
+ (This)->lpVtbl -> EnumRedoable(This,ppEnum)
+
+#define IOleUndoManager_GetLastUndoDescription(This,pBstr) \
+ (This)->lpVtbl -> GetLastUndoDescription(This,pBstr)
+
+#define IOleUndoManager_GetLastRedoDescription(This,pBstr) \
+ (This)->lpVtbl -> GetLastRedoDescription(This,pBstr)
+
+#define IOleUndoManager_Enable(This,fEnable) \
+ (This)->lpVtbl -> Enable(This,fEnable)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_Open_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU);
+
+
+void __RPC_STUB IOleUndoManager_Open_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_Close_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleParentUndoUnit __RPC_FAR *pPUU,
+ /* [in] */ BOOL fCommit);
+
+
+void __RPC_STUB IOleUndoManager_Close_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_Add_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+
+void __RPC_STUB IOleUndoManager_Add_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_GetOpenParentState_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwState);
+
+
+void __RPC_STUB IOleUndoManager_GetOpenParentState_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_DiscardFrom_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+
+void __RPC_STUB IOleUndoManager_DiscardFrom_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_UndoTo_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+
+void __RPC_STUB IOleUndoManager_UndoTo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_RedoTo_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ IOleUndoUnit __RPC_FAR *pUU);
+
+
+void __RPC_STUB IOleUndoManager_RedoTo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_EnumUndoable_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [out] */ IEnumOleUndoUnits __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IOleUndoManager_EnumUndoable_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_EnumRedoable_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [out] */ IEnumOleUndoUnits __RPC_FAR *__RPC_FAR *ppEnum);
+
+
+void __RPC_STUB IOleUndoManager_EnumRedoable_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_GetLastUndoDescription_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstr);
+
+
+void __RPC_STUB IOleUndoManager_GetLastUndoDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_GetLastRedoDescription_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pBstr);
+
+
+void __RPC_STUB IOleUndoManager_GetLastRedoDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleUndoManager_Enable_Proxy(
+ IOleUndoManager __RPC_FAR * This,
+ /* [in] */ BOOL fEnable);
+
+
+void __RPC_STUB IOleUndoManager_Enable_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleUndoManager_INTERFACE_DEFINED__ */
+
+
+#ifndef __IQuickActivate_INTERFACE_DEFINED__
+#define __IQuickActivate_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IQuickActivate
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object][local] */
+
+
+typedef IQuickActivate __RPC_FAR *LPQUICKACTIVATE;
+
+typedef /* [v1_enum] */
+enum tagQACONTAINERFLAGS
+ { QACONTAINER_SHOWHATCHING = 0x1,
+ QACONTAINER_SHOWGRABHANDLES = 0x2,
+ QACONTAINER_USERMODE = 0x4,
+ QACONTAINER_DISPLAYASDEFAULT = 0x8,
+ QACONTAINER_UIDEAD = 0x10,
+ QACONTAINER_AUTOCLIP = 0x20,
+ QACONTAINER_MESSAGEREFLECT = 0x40,
+ QACONTAINER_SUPPORTSMNEMONICS = 0x80
+ } QACONTAINERFLAGS;
+
+typedef DWORD OLE_COLOR;
+
+typedef struct tagQACONTAINER
+ {
+ ULONG cbSize;
+ IOleClientSite __RPC_FAR *pClientSite;
+ IAdviseSinkEx __RPC_FAR *pAdviseSink;
+ IPropertyNotifySink __RPC_FAR *pPropertyNotifySink;
+ IUnknown __RPC_FAR *pUnkEventSink;
+ DWORD dwAmbientFlags;
+ OLE_COLOR colorFore;
+ OLE_COLOR colorBack;
+ IFont __RPC_FAR *pFont;
+ IOleUndoManager __RPC_FAR *pUndoMgr;
+ DWORD dwAppearance;
+ LONG lcid;
+ HPALETTE hpal;
+ struct IBindHost __RPC_FAR *pBindHost;
+ } QACONTAINER;
+
+typedef struct tagQACONTROL
+ {
+ ULONG cbSize;
+ DWORD dwMiscStatus;
+ DWORD dwViewStatus;
+ DWORD dwEventCookie;
+ DWORD dwPropNotifyCookie;
+ DWORD dwPointerActivationPolicy;
+ } QACONTROL;
+
+
+EXTERN_C const IID IID_IQuickActivate;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IQuickActivate : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QuickActivate(
+ /* [in] */ QACONTAINER __RPC_FAR *pQaContainer,
+ /* [out] */ QACONTROL __RPC_FAR *pQaControl) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetContentExtent(
+ LPSIZEL pSizel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetContentExtent(
+ LPSIZEL pSizel) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IQuickActivateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IQuickActivate __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IQuickActivate __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IQuickActivate __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QuickActivate )(
+ IQuickActivate __RPC_FAR * This,
+ /* [in] */ QACONTAINER __RPC_FAR *pQaContainer,
+ /* [out] */ QACONTROL __RPC_FAR *pQaControl);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetContentExtent )(
+ IQuickActivate __RPC_FAR * This,
+ LPSIZEL pSizel);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetContentExtent )(
+ IQuickActivate __RPC_FAR * This,
+ LPSIZEL pSizel);
+
+ END_INTERFACE
+ } IQuickActivateVtbl;
+
+ interface IQuickActivate
+ {
+ CONST_VTBL struct IQuickActivateVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IQuickActivate_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IQuickActivate_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IQuickActivate_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IQuickActivate_QuickActivate(This,pQaContainer,pQaControl) \
+ (This)->lpVtbl -> QuickActivate(This,pQaContainer,pQaControl)
+
+#define IQuickActivate_SetContentExtent(This,pSizel) \
+ (This)->lpVtbl -> SetContentExtent(This,pSizel)
+
+#define IQuickActivate_GetContentExtent(This,pSizel) \
+ (This)->lpVtbl -> GetContentExtent(This,pSizel)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IQuickActivate_QuickActivate_Proxy(
+ IQuickActivate __RPC_FAR * This,
+ /* [in] */ QACONTAINER __RPC_FAR *pQaContainer,
+ /* [out] */ QACONTROL __RPC_FAR *pQaControl);
+
+
+void __RPC_STUB IQuickActivate_QuickActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IQuickActivate_SetContentExtent_Proxy(
+ IQuickActivate __RPC_FAR * This,
+ LPSIZEL pSizel);
+
+
+void __RPC_STUB IQuickActivate_SetContentExtent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IQuickActivate_GetContentExtent_Proxy(
+ IQuickActivate __RPC_FAR * This,
+ LPSIZEL pSizel);
+
+
+void __RPC_STUB IQuickActivate_GetContentExtent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IQuickActivate_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPointerInactive_INTERFACE_DEFINED__
+#define __IPointerInactive_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPointerInactive
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][unique][object] */
+
+
+typedef IPointerInactive __RPC_FAR *LPPOINTERINACTIVE;
+
+typedef /* [v1_enum] */
+enum tagPOINTERINACTIVE
+ { POINTERINACTIVE_ACTIVATEONENTRY = 1,
+ POINTERINACTIVE_DEACTIVATEONLEAVE = 2,
+ POINTERINACTIVE_ACTIVATEONDRAG = 4
+ } POINTERINACTIVE;
+
+
+EXTERN_C const IID IID_IPointerInactive;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPointerInactive : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetActivationPolicy(
+ /* [out] */ DWORD __RPC_FAR *pdwPolicy) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInactiveMouseMove(
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ LONG x,
+ /* [in] */ LONG y,
+ /* [in] */ DWORD grfKeyState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInactiveSetCursor(
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ LONG x,
+ /* [in] */ LONG y,
+ /* [in] */ DWORD dwMouseMsg,
+ /* [in] */ BOOL fSetAlways) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPointerInactiveVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPointerInactive __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPointerInactive __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPointerInactive __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetActivationPolicy )(
+ IPointerInactive __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwPolicy);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInactiveMouseMove )(
+ IPointerInactive __RPC_FAR * This,
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ LONG x,
+ /* [in] */ LONG y,
+ /* [in] */ DWORD grfKeyState);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInactiveSetCursor )(
+ IPointerInactive __RPC_FAR * This,
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ LONG x,
+ /* [in] */ LONG y,
+ /* [in] */ DWORD dwMouseMsg,
+ /* [in] */ BOOL fSetAlways);
+
+ END_INTERFACE
+ } IPointerInactiveVtbl;
+
+ interface IPointerInactive
+ {
+ CONST_VTBL struct IPointerInactiveVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPointerInactive_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPointerInactive_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPointerInactive_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPointerInactive_GetActivationPolicy(This,pdwPolicy) \
+ (This)->lpVtbl -> GetActivationPolicy(This,pdwPolicy)
+
+#define IPointerInactive_OnInactiveMouseMove(This,pRectBounds,x,y,grfKeyState) \
+ (This)->lpVtbl -> OnInactiveMouseMove(This,pRectBounds,x,y,grfKeyState)
+
+#define IPointerInactive_OnInactiveSetCursor(This,pRectBounds,x,y,dwMouseMsg,fSetAlways) \
+ (This)->lpVtbl -> OnInactiveSetCursor(This,pRectBounds,x,y,dwMouseMsg,fSetAlways)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPointerInactive_GetActivationPolicy_Proxy(
+ IPointerInactive __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwPolicy);
+
+
+void __RPC_STUB IPointerInactive_GetActivationPolicy_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPointerInactive_OnInactiveMouseMove_Proxy(
+ IPointerInactive __RPC_FAR * This,
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ LONG x,
+ /* [in] */ LONG y,
+ /* [in] */ DWORD grfKeyState);
+
+
+void __RPC_STUB IPointerInactive_OnInactiveMouseMove_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPointerInactive_OnInactiveSetCursor_Proxy(
+ IPointerInactive __RPC_FAR * This,
+ /* [in] */ LPCRECT pRectBounds,
+ /* [in] */ LONG x,
+ /* [in] */ LONG y,
+ /* [in] */ DWORD dwMouseMsg,
+ /* [in] */ BOOL fSetAlways);
+
+
+void __RPC_STUB IPointerInactive_OnInactiveSetCursor_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPointerInactive_INTERFACE_DEFINED__ */
+
+
+#ifndef __IObjectWithSite_INTERFACE_DEFINED__
+#define __IObjectWithSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IObjectWithSite
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IObjectWithSite __RPC_FAR *LPOBJECTWITHSITE;
+
+
+EXTERN_C const IID IID_IObjectWithSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IObjectWithSite : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetSite(
+ /* [in] */ IUnknown __RPC_FAR *pUnkSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSite(
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvSite) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IObjectWithSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IObjectWithSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IObjectWithSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSite )(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSite )(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvSite);
+
+ END_INTERFACE
+ } IObjectWithSiteVtbl;
+
+ interface IObjectWithSite
+ {
+ CONST_VTBL struct IObjectWithSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IObjectWithSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IObjectWithSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IObjectWithSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IObjectWithSite_SetSite(This,pUnkSite) \
+ (This)->lpVtbl -> SetSite(This,pUnkSite)
+
+#define IObjectWithSite_GetSite(This,riid,ppvSite) \
+ (This)->lpVtbl -> GetSite(This,riid,ppvSite)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IObjectWithSite_SetSite_Proxy(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkSite);
+
+
+void __RPC_STUB IObjectWithSite_SetSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IObjectWithSite_GetSite_Proxy(
+ IObjectWithSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvSite);
+
+
+void __RPC_STUB IObjectWithSite_GetSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IObjectWithSite_INTERFACE_DEFINED__ */
+
+
+#ifndef __IErrorLog_INTERFACE_DEFINED__
+#define __IErrorLog_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IErrorLog
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IErrorLog __RPC_FAR *LPERRORLOG;
+
+
+EXTERN_C const IID IID_IErrorLog;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IErrorLog : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE AddError(
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [in] */ EXCEPINFO __RPC_FAR *pExcepInfo) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IErrorLogVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IErrorLog __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IErrorLog __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IErrorLog __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddError )(
+ IErrorLog __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [in] */ EXCEPINFO __RPC_FAR *pExcepInfo);
+
+ END_INTERFACE
+ } IErrorLogVtbl;
+
+ interface IErrorLog
+ {
+ CONST_VTBL struct IErrorLogVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IErrorLog_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IErrorLog_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IErrorLog_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IErrorLog_AddError(This,pszPropName,pExcepInfo) \
+ (This)->lpVtbl -> AddError(This,pszPropName,pExcepInfo)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IErrorLog_AddError_Proxy(
+ IErrorLog __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [in] */ EXCEPINFO __RPC_FAR *pExcepInfo);
+
+
+void __RPC_STUB IErrorLog_AddError_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IErrorLog_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPropertyBag_INTERFACE_DEFINED__
+#define __IPropertyBag_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPropertyBag
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPropertyBag __RPC_FAR *LPPROPERTYBAG;
+
+
+EXTERN_C const IID IID_IPropertyBag;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPropertyBag : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Read(
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [out][in] */ VARIANT __RPC_FAR *pVar,
+ /* [in] */ IErrorLog __RPC_FAR *pErrorLog) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Write(
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [in] */ VARIANT __RPC_FAR *pVar) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPropertyBagVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPropertyBag __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPropertyBag __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPropertyBag __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Read )(
+ IPropertyBag __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [out][in] */ VARIANT __RPC_FAR *pVar,
+ /* [in] */ IErrorLog __RPC_FAR *pErrorLog);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Write )(
+ IPropertyBag __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [in] */ VARIANT __RPC_FAR *pVar);
+
+ END_INTERFACE
+ } IPropertyBagVtbl;
+
+ interface IPropertyBag
+ {
+ CONST_VTBL struct IPropertyBagVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPropertyBag_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPropertyBag_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPropertyBag_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPropertyBag_Read(This,pszPropName,pVar,pErrorLog) \
+ (This)->lpVtbl -> Read(This,pszPropName,pVar,pErrorLog)
+
+#define IPropertyBag_Write(This,pszPropName,pVar) \
+ (This)->lpVtbl -> Write(This,pszPropName,pVar)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IPropertyBag_RemoteRead_Proxy(
+ IPropertyBag __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [out] */ VARIANT __RPC_FAR *pVar,
+ /* [in] */ IErrorLog __RPC_FAR *pErrorLog,
+ /* [in] */ DWORD varType,
+ /* [in] */ IUnknown __RPC_FAR *pUnkObj);
+
+
+void __RPC_STUB IPropertyBag_RemoteRead_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertyBag_Write_Proxy(
+ IPropertyBag __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [in] */ VARIANT __RPC_FAR *pVar);
+
+
+void __RPC_STUB IPropertyBag_Write_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPropertyBag_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPerPropertyBrowsing_INTERFACE_DEFINED__
+#define __IPerPropertyBrowsing_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPerPropertyBrowsing
+ * at Fri Nov 15 09:36:36 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef IPerPropertyBrowsing __RPC_FAR *LPPERPROPERTYBROWSING;
+
+typedef struct tagCALPOLESTR
+ {
+ ULONG cElems;
+ /* [size_is] */ LPOLESTR __RPC_FAR *pElems;
+ } CALPOLESTR;
+
+typedef struct tagCALPOLESTR __RPC_FAR *LPCALPOLESTR;
+
+typedef struct tagCADWORD
+ {
+ ULONG cElems;
+ /* [size_is] */ DWORD __RPC_FAR *pElems;
+ } CADWORD;
+
+typedef struct tagCADWORD __RPC_FAR *LPCADWORD;
+
+
+EXTERN_C const IID IID_IPerPropertyBrowsing;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPerPropertyBrowsing : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetDisplayString(
+ /* [in] */ DISPID dispID,
+ /* [out] */ BSTR __RPC_FAR *pBstr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MapPropertyToPage(
+ /* [in] */ DISPID dispID,
+ /* [out] */ CLSID __RPC_FAR *pClsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPredefinedStrings(
+ /* [in] */ DISPID dispID,
+ /* [out] */ CALPOLESTR __RPC_FAR *pCaStringsOut,
+ /* [out] */ CADWORD __RPC_FAR *pCaCookiesOut) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPredefinedValue(
+ /* [in] */ DISPID dispID,
+ /* [in] */ DWORD dwCookie,
+ /* [out] */ VARIANT __RPC_FAR *pVarOut) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPerPropertyBrowsingVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPerPropertyBrowsing __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPerPropertyBrowsing __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPerPropertyBrowsing __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDisplayString )(
+ IPerPropertyBrowsing __RPC_FAR * This,
+ /* [in] */ DISPID dispID,
+ /* [out] */ BSTR __RPC_FAR *pBstr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *MapPropertyToPage )(
+ IPerPropertyBrowsing __RPC_FAR * This,
+ /* [in] */ DISPID dispID,
+ /* [out] */ CLSID __RPC_FAR *pClsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPredefinedStrings )(
+ IPerPropertyBrowsing __RPC_FAR * This,
+ /* [in] */ DISPID dispID,
+ /* [out] */ CALPOLESTR __RPC_FAR *pCaStringsOut,
+ /* [out] */ CADWORD __RPC_FAR *pCaCookiesOut);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPredefinedValue )(
+ IPerPropertyBrowsing __RPC_FAR * This,
+ /* [in] */ DISPID dispID,
+ /* [in] */ DWORD dwCookie,
+ /* [out] */ VARIANT __RPC_FAR *pVarOut);
+
+ END_INTERFACE
+ } IPerPropertyBrowsingVtbl;
+
+ interface IPerPropertyBrowsing
+ {
+ CONST_VTBL struct IPerPropertyBrowsingVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPerPropertyBrowsing_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPerPropertyBrowsing_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPerPropertyBrowsing_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPerPropertyBrowsing_GetDisplayString(This,dispID,pBstr) \
+ (This)->lpVtbl -> GetDisplayString(This,dispID,pBstr)
+
+#define IPerPropertyBrowsing_MapPropertyToPage(This,dispID,pClsid) \
+ (This)->lpVtbl -> MapPropertyToPage(This,dispID,pClsid)
+
+#define IPerPropertyBrowsing_GetPredefinedStrings(This,dispID,pCaStringsOut,pCaCookiesOut) \
+ (This)->lpVtbl -> GetPredefinedStrings(This,dispID,pCaStringsOut,pCaCookiesOut)
+
+#define IPerPropertyBrowsing_GetPredefinedValue(This,dispID,dwCookie,pVarOut) \
+ (This)->lpVtbl -> GetPredefinedValue(This,dispID,dwCookie,pVarOut)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPerPropertyBrowsing_GetDisplayString_Proxy(
+ IPerPropertyBrowsing __RPC_FAR * This,
+ /* [in] */ DISPID dispID,
+ /* [out] */ BSTR __RPC_FAR *pBstr);
+
+
+void __RPC_STUB IPerPropertyBrowsing_GetDisplayString_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPerPropertyBrowsing_MapPropertyToPage_Proxy(
+ IPerPropertyBrowsing __RPC_FAR * This,
+ /* [in] */ DISPID dispID,
+ /* [out] */ CLSID __RPC_FAR *pClsid);
+
+
+void __RPC_STUB IPerPropertyBrowsing_MapPropertyToPage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPerPropertyBrowsing_GetPredefinedStrings_Proxy(
+ IPerPropertyBrowsing __RPC_FAR * This,
+ /* [in] */ DISPID dispID,
+ /* [out] */ CALPOLESTR __RPC_FAR *pCaStringsOut,
+ /* [out] */ CADWORD __RPC_FAR *pCaCookiesOut);
+
+
+void __RPC_STUB IPerPropertyBrowsing_GetPredefinedStrings_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPerPropertyBrowsing_GetPredefinedValue_Proxy(
+ IPerPropertyBrowsing __RPC_FAR * This,
+ /* [in] */ DISPID dispID,
+ /* [in] */ DWORD dwCookie,
+ /* [out] */ VARIANT __RPC_FAR *pVarOut);
+
+
+void __RPC_STUB IPerPropertyBrowsing_GetPredefinedValue_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPerPropertyBrowsing_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER BSTR_UserSize( unsigned long __RPC_FAR *, unsigned long , BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * );
+void __RPC_USER BSTR_UserFree( unsigned long __RPC_FAR *, BSTR __RPC_FAR * );
+
+unsigned long __RPC_USER HACCEL_UserSize( unsigned long __RPC_FAR *, unsigned long , HACCEL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HACCEL_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HACCEL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HACCEL_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HACCEL __RPC_FAR * );
+void __RPC_USER HACCEL_UserFree( unsigned long __RPC_FAR *, HACCEL __RPC_FAR * );
+
+unsigned long __RPC_USER HDC_UserSize( unsigned long __RPC_FAR *, unsigned long , HDC __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HDC_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HDC __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HDC_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HDC __RPC_FAR * );
+void __RPC_USER HDC_UserFree( unsigned long __RPC_FAR *, HDC __RPC_FAR * );
+
+unsigned long __RPC_USER HFONT_UserSize( unsigned long __RPC_FAR *, unsigned long , HFONT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HFONT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HFONT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HFONT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HFONT __RPC_FAR * );
+void __RPC_USER HFONT_UserFree( unsigned long __RPC_FAR *, HFONT __RPC_FAR * );
+
+unsigned long __RPC_USER HWND_UserSize( unsigned long __RPC_FAR *, unsigned long , HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+void __RPC_USER HWND_UserFree( unsigned long __RPC_FAR *, HWND __RPC_FAR * );
+
+unsigned long __RPC_USER VARIANT_UserSize( unsigned long __RPC_FAR *, unsigned long , VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+void __RPC_USER VARIANT_UserFree( unsigned long __RPC_FAR *, VARIANT __RPC_FAR * );
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumConnections_Next_Proxy(
+ IEnumConnections __RPC_FAR * This,
+ /* [in] */ ULONG cConnections,
+ /* [length_is][size_is][out] */ LPCONNECTDATA rgcd,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumConnections_Next_Stub(
+ IEnumConnections __RPC_FAR * This,
+ /* [in] */ ULONG cConnections,
+ /* [length_is][size_is][out] */ LPCONNECTDATA rgcd,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumConnectionPoints_Next_Proxy(
+ IEnumConnectionPoints __RPC_FAR * This,
+ /* [in] */ ULONG cConnections,
+ /* [length_is][size_is][out] */ LPCONNECTIONPOINT __RPC_FAR *ppCP,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumConnectionPoints_Next_Stub(
+ IEnumConnectionPoints __RPC_FAR * This,
+ /* [in] */ ULONG cConnections,
+ /* [length_is][size_is][out] */ LPCONNECTIONPOINT __RPC_FAR *ppCP,
+ /* [out] */ ULONG __RPC_FAR *pcFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IClassFactory2_CreateInstanceLic_Proxy(
+ IClassFactory2 __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ IUnknown __RPC_FAR *pUnkReserved,
+ /* [in] */ REFIID riid,
+ /* [in] */ BSTR bstrKey,
+ /* [iid_is][out] */ PVOID __RPC_FAR *ppvObj);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IClassFactory2_CreateInstanceLic_Stub(
+ IClassFactory2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [in] */ BSTR bstrKey,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IPersistMemory_Load_Proxy(
+ IPersistMemory __RPC_FAR * This,
+ /* [size_is][in] */ LPVOID pMem,
+ /* [in] */ ULONG cbSize);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IPersistMemory_Load_Stub(
+ IPersistMemory __RPC_FAR * This,
+ /* [size_is][in] */ BYTE __RPC_FAR *pMem,
+ /* [in] */ ULONG cbSize);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IPersistMemory_Save_Proxy(
+ IPersistMemory __RPC_FAR * This,
+ /* [size_is][in] */ LPVOID pMem,
+ /* [in] */ BOOL fClearDirty,
+ /* [in] */ ULONG cbSize);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IPersistMemory_Save_Stub(
+ IPersistMemory __RPC_FAR * This,
+ /* [size_is][in] */ BYTE __RPC_FAR *pMem,
+ /* [in] */ BOOL fClearDirty,
+ /* [in] */ ULONG cbSize);
+
+/* [local] */ void STDMETHODCALLTYPE IAdviseSinkEx_OnViewStatusChange_Proxy(
+ IAdviseSinkEx __RPC_FAR * This,
+ /* [in] */ DWORD dwViewStatus);
+
+
+/* [async][call_as] */ void STDMETHODCALLTYPE IAdviseSinkEx_OnViewStatusChange_Stub(
+ IAdviseSinkEx __RPC_FAR * This,
+ /* [in] */ DWORD dwViewStatus);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumOleUndoUnits_Next_Proxy(
+ IEnumOleUndoUnits __RPC_FAR * This,
+ /* [in] */ ULONG cElt,
+ /* [length_is][size_is][out] */ IOleUndoUnit __RPC_FAR *__RPC_FAR *rgElt,
+ /* [out] */ ULONG __RPC_FAR *pcEltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumOleUndoUnits_Next_Stub(
+ IEnumOleUndoUnits __RPC_FAR * This,
+ /* [in] */ ULONG cElt,
+ /* [length_is][size_is][out] */ IOleUndoUnit __RPC_FAR *__RPC_FAR *rgElt,
+ /* [out] */ ULONG __RPC_FAR *pcEltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IPropertyBag_Read_Proxy(
+ IPropertyBag __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [out][in] */ VARIANT __RPC_FAR *pVar,
+ /* [in] */ IErrorLog __RPC_FAR *pErrorLog);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IPropertyBag_Read_Stub(
+ IPropertyBag __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszPropName,
+ /* [out] */ VARIANT __RPC_FAR *pVar,
+ /* [in] */ IErrorLog __RPC_FAR *pErrorLog,
+ /* [in] */ DWORD varType,
+ /* [in] */ IUnknown __RPC_FAR *pUnkObj);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/ocidl.idl b/public/sdk/inc/ocidl.idl
new file mode 100644
index 000000000..3eb160631
--- /dev/null
+++ b/public/sdk/inc/ocidl.idl
@@ -0,0 +1,1571 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1993 - 1996.
+//
+// File: ocidl.idl
+//
+//----------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1993 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "oleidl.idl";
+import "oaidl.idl";
+#endif
+
+interface IEnumConnections;
+interface IEnumConnectionPoints;
+interface IConnectionPoint;
+interface IConnectionPointContainer;
+
+interface IClassFactory2;
+interface IProvideClassInfo;
+interface IProvideClassInfo2;
+interface IOleControl;
+interface IOleControlSite;
+interface IPropertyPage;
+interface IPropertyPage2;
+interface IPropertyPageSite;
+interface IPropertyNotifySink;
+interface ISpecifyPropertyPages;
+interface IPersistMemory;
+interface IPersistStreamInit;
+interface IPersistPropertyBag;
+interface ISimpleFrameSite;
+interface IFont;
+interface IPicture;
+interface IFontDisp;
+interface IPictureDisp;
+
+interface IAdviseSinkEx;
+interface IOleInPlaceObjectWindowless;
+interface IOleInPlaceSiteEx;
+interface IOleInPlaceSiteWindowless;
+interface IViewObjectEx;
+interface IOleUndoUnit;
+interface IOleParentUndoUnit;
+interface IEnumOleUndoUnits;
+interface IOleUndoManager;
+interface IQuickActivate;
+interface IPointerInactive;
+interface IObjectWithSite;
+
+interface IErrorLog;
+interface IPropertyBag;
+interface IPerPropertyBrowsing;
+
+
+[
+ version(1.0), pointer_default(unique)
+]
+
+interface IOleControlTypes
+{
+ typedef [v1_enum] enum tagUASFLAGS {
+ UAS_NORMAL = 0x00,
+ UAS_BLOCKED = 0x01,
+ UAS_NOPARENTENABLE = 0x02,
+ UAS_MASK = 0x03
+ } UASFLAGS;
+}
+
+
+[
+ object,
+ uuid(B196B287-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IEnumConnections : IUnknown
+{
+ typedef IEnumConnections * PENUMCONNECTIONS;
+ typedef IEnumConnections * LPENUMCONNECTIONS;
+
+ typedef struct tagCONNECTDATA {
+ IUnknown * pUnk;
+ DWORD dwCookie;
+ } CONNECTDATA;
+
+ typedef struct tagCONNECTDATA * PCONNECTDATA;
+ typedef struct tagCONNECTDATA * LPCONNECTDATA;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG cConnections,
+ [out, size_is(cConnections), length_is(*pcFetched)]
+ LPCONNECTDATA rgcd,
+ [out] ULONG * pcFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG cConnections,
+ [out, size_is(cConnections), length_is(*pcFetched)]
+ LPCONNECTDATA rgcd,
+ [out] ULONG * pcFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG cConnections
+ );
+
+ HRESULT Reset(
+ void
+ );
+
+ HRESULT Clone(
+ [out] IEnumConnections ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(B196B286-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IConnectionPoint : IUnknown
+{
+ typedef IConnectionPoint * PCONNECTIONPOINT;
+ typedef IConnectionPoint * LPCONNECTIONPOINT;
+
+ HRESULT GetConnectionInterface(
+ [out] IID * pIID
+ );
+
+ HRESULT GetConnectionPointContainer(
+ [out] IConnectionPointContainer ** ppCPC
+ );
+
+ HRESULT Advise(
+ [in] IUnknown * pUnkSink,
+ [out] DWORD * pdwCookie
+ );
+
+ HRESULT Unadvise(
+ [in] DWORD dwCookie
+ );
+
+ HRESULT EnumConnections(
+ [out] IEnumConnections ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(B196B285-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IEnumConnectionPoints : IUnknown
+{
+ typedef IEnumConnectionPoints * PENUMCONNECTIONPOINTS;
+ typedef IEnumConnectionPoints * LPENUMCONNECTIONPOINTS;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG cConnections,
+ [out, size_is(cConnections), length_is(*pcFetched)]
+ LPCONNECTIONPOINT * ppCP,
+ [out] ULONG * pcFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG cConnections,
+ [out, size_is(cConnections), length_is(*pcFetched)]
+ LPCONNECTIONPOINT * ppCP,
+ [out] ULONG * pcFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG cConnections
+ );
+
+ HRESULT Reset(
+ void
+ );
+
+ HRESULT Clone(
+ [out] IEnumConnectionPoints ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(B196B284-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IConnectionPointContainer : IUnknown
+{
+ typedef IConnectionPointContainer * PCONNECTIONPOINTCONTAINER;
+ typedef IConnectionPointContainer * LPCONNECTIONPOINTCONTAINER;
+
+ HRESULT EnumConnectionPoints
+ (
+ [out] IEnumConnectionPoints ** ppEnum
+ );
+
+ HRESULT FindConnectionPoint
+ (
+ [in] REFIID riid,
+ [out] IConnectionPoint ** ppCP
+ );
+}
+
+
+[
+ object,
+ uuid(B196B28F-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IClassFactory2 : IClassFactory
+{
+ typedef IClassFactory2 * LPCLASSFACTORY2;
+
+ typedef struct tagLICINFO {
+ LONG cbLicInfo;
+ BOOL fRuntimeKeyAvail;
+ BOOL fLicVerified;
+ } LICINFO;
+
+ typedef struct tagLICINFO * LPLICINFO;
+
+ HRESULT GetLicInfo(
+ [out] LICINFO * pLicInfo
+ );
+
+ HRESULT RequestLicKey(
+ [in] DWORD dwReserved,
+ [out] BSTR * pBstrKey
+ );
+
+ [local]
+ HRESULT CreateInstanceLic(
+ [in] IUnknown * pUnkOuter,
+ [in] IUnknown * pUnkReserved,
+ [in] REFIID riid,
+ [in] BSTR bstrKey,
+ [out, iid_is(riid)] PVOID * ppvObj
+ );
+
+ [call_as(CreateInstanceLic)]
+ HRESULT RemoteCreateInstanceLic(
+ [in] REFIID riid,
+ [in] BSTR bstrKey,
+ [out, iid_is(riid)] IUnknown ** ppvObj
+ );
+}
+
+
+[
+ object,
+ uuid(B196B283-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IProvideClassInfo : IUnknown
+{
+ typedef IProvideClassInfo * LPPROVIDECLASSINFO;
+
+ HRESULT GetClassInfo(
+ [out] ITypeInfo ** ppTI
+ );
+}
+
+
+[
+ object,
+ uuid(A6BC3AC0-DBAA-11CE-9DE3-00AA004BB851),
+ pointer_default(unique)
+]
+
+interface IProvideClassInfo2 : IProvideClassInfo
+{
+ typedef IProvideClassInfo2 * LPPROVIDECLASSINFO2;
+
+ typedef enum tagGUIDKIND {
+ GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1
+ } GUIDKIND;
+
+ HRESULT GetGUID(
+ [in] DWORD dwGuidKind,
+ [out] GUID * pGUID
+ );
+}
+
+
+[
+ object,
+ uuid(B196B288-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IOleControl : IUnknown
+{
+ typedef IOleControl * LPOLECONTROL;
+
+ typedef struct tagCONTROLINFO {
+ ULONG cb;
+ HACCEL hAccel;
+ USHORT cAccel;
+ DWORD dwFlags;
+ } CONTROLINFO;
+
+ typedef struct tagCONTROLINFO * LPCONTROLINFO;
+
+ typedef enum tagCTRLINFO {
+ CTRLINFO_EATS_RETURN = 1,
+ CTRLINFO_EATS_ESCAPE = 2
+ } CTRLINFO;
+
+ HRESULT GetControlInfo(
+ [out] CONTROLINFO * pCI
+ );
+
+ HRESULT OnMnemonic(
+ [in] MSG * pMsg
+ );
+
+ HRESULT OnAmbientPropertyChange(
+ [in] DISPID dispID
+ );
+
+ HRESULT FreezeEvents(
+ [in] BOOL bFreeze
+ );
+}
+
+
+[
+ object,
+ uuid(B196B289-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IOleControlSite : IUnknown
+{
+ typedef IOleControlSite * LPOLECONTROLSITE;
+
+ typedef struct tagPOINTF {
+ FLOAT x;
+ FLOAT y;
+ } POINTF;
+
+ typedef struct tagPOINTF * LPPOINTF;
+
+ typedef enum tagXFORMCOORDS {
+ XFORMCOORDS_POSITION = 0x1,
+ XFORMCOORDS_SIZE = 0x2,
+ XFORMCOORDS_HIMETRICTOCONTAINER = 0x4,
+ XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8
+ } XFORMCOORDS;
+
+ HRESULT OnControlInfoChanged(
+ void
+ );
+
+ HRESULT LockInPlaceActive(
+ [in] BOOL fLock
+ );
+
+ HRESULT GetExtendedControl(
+ [out] IDispatch ** ppDisp
+ );
+
+ HRESULT TransformCoords(
+ [in, out] POINTL * pPtlHimetric,
+ [in, out] POINTF * pPtfContainer,
+ [in] DWORD dwFlags
+ );
+
+ HRESULT TranslateAccelerator(
+ [in] MSG * pMsg,
+ [in] DWORD grfModifiers
+ );
+
+ HRESULT OnFocus(
+ [in] BOOL fGotFocus
+ );
+
+ HRESULT ShowPropertyFrame(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(B196B28D-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IPropertyPage : IUnknown
+{
+ typedef IPropertyPage * LPPROPERTYPAGE;
+
+ typedef struct tagPROPPAGEINFO {
+ ULONG cb;
+ LPOLESTR pszTitle;
+ SIZE size;
+ LPOLESTR pszDocString;
+ LPOLESTR pszHelpFile;
+ DWORD dwHelpContext;
+ } PROPPAGEINFO;
+
+ typedef struct tagPROPPAGEINFO * LPPROPPAGEINFO;
+
+ HRESULT SetPageSite(
+ [in] IPropertyPageSite * pPageSite
+ );
+
+ HRESULT Activate(
+ [in] HWND hWndParent,
+ [in] LPCRECT pRect,
+ [in] BOOL bModal
+ );
+
+ HRESULT Deactivate(
+ void
+ );
+
+ HRESULT GetPageInfo(
+ [out] PROPPAGEINFO * pPageInfo
+ );
+
+ HRESULT SetObjects(
+ [in] ULONG cObjects,
+ [in, size_is(cObjects)] IUnknown ** ppUnk
+ );
+
+ HRESULT Show(
+ [in] UINT nCmdShow
+ );
+
+ HRESULT Move(
+ [in] LPCRECT pRect
+ );
+
+ HRESULT IsPageDirty(
+ void
+ );
+
+ HRESULT Apply(
+ void
+ );
+
+ HRESULT Help(
+ [in] LPCOLESTR pszHelpDir
+ );
+
+ HRESULT TranslateAccelerator(
+ [in] MSG * pMsg
+ );
+}
+
+
+[
+ object,
+ uuid(01E44665-24AC-101B-84ED-08002B2EC713),
+ pointer_default(unique)
+]
+
+interface IPropertyPage2 : IPropertyPage
+{
+ typedef IPropertyPage2 * LPPROPERTYPAGE2;
+
+ HRESULT EditProperty(
+ [in] DISPID dispID
+ );
+}
+
+
+[
+ object,
+ uuid(B196B28C-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IPropertyPageSite : IUnknown
+{
+ typedef IPropertyPageSite * LPPROPERTYPAGESITE;
+
+ typedef enum tagPROPPAGESTATUS {
+ PROPPAGESTATUS_DIRTY = 0x01,
+ PROPPAGESTATUS_VALIDATE = 0x02,
+ PROPPAGESTATUS_CLEAN = 0x04
+ } PROPPAGESTATUS;
+
+ HRESULT OnStatusChange(
+ [in] DWORD dwFlags
+ );
+
+ HRESULT GetLocaleID(
+ [out] LCID * pLocaleID
+ );
+
+ HRESULT GetPageContainer(
+ [out] IUnknown ** ppUnk
+ );
+
+ HRESULT TranslateAccelerator(
+ [in] MSG * pMsg
+ );
+}
+
+
+[
+ object,
+ uuid(9BFBBC02-EFF1-101A-84ED-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface IPropertyNotifySink : IUnknown
+{
+ typedef IPropertyNotifySink * LPPROPERTYNOTIFYSINK;
+
+ HRESULT OnChanged(
+ [in] DISPID dispID
+ );
+
+ HRESULT OnRequestEdit(
+ [in] DISPID dispID
+ );
+}
+
+
+[
+ object,
+ uuid(B196B28B-BAB4-101A-B69C-00AA00341D07),
+ pointer_default(unique)
+]
+
+interface ISpecifyPropertyPages : IUnknown
+{
+ typedef ISpecifyPropertyPages * LPSPECIFYPROPERTYPAGES;
+
+ typedef struct tagCAUUID {
+ ULONG cElems;
+ [size_is(cElems)] GUID * pElems;
+ } CAUUID;
+
+ typedef struct tagCAUUID * LPCAUUID;
+
+ HRESULT GetPages(
+ [out] CAUUID * pPages
+ );
+}
+
+
+[
+ object,
+ uuid(BD1AE5E0-A6AE-11CE-BD37-504200C10000),
+ pointer_default(unique)
+]
+
+interface IPersistMemory : IPersist
+{
+ typedef IPersistMemory * LPPERSISTMEMORY;
+
+ HRESULT IsDirty(
+ void
+ );
+
+ [local]
+ HRESULT Load(
+ [in, size_is(cbSize)] LPVOID pMem,
+ [in] ULONG cbSize
+ );
+
+ [call_as(Load)]
+ HRESULT RemoteLoad(
+ [in, size_is(cbSize)] BYTE * pMem,
+ [in] ULONG cbSize
+ );
+
+ [local]
+ HRESULT Save(
+ [in, size_is(cbSize)] LPVOID pMem,
+ [in] BOOL fClearDirty,
+ [in] ULONG cbSize
+ );
+
+ [call_as(Save)]
+ HRESULT RemoteSave(
+ [in, size_is(cbSize)] BYTE * pMem,
+ [in] BOOL fClearDirty,
+ [in] ULONG cbSize
+ );
+
+ HRESULT GetSizeMax(
+ [out] ULONG * pCbSize
+ );
+
+ HRESULT InitNew(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(7FD52380-4E07-101B-AE2D-08002B2EC713),
+ pointer_default(unique)
+]
+
+interface IPersistStreamInit : IPersist
+{
+ typedef IPersistStreamInit * LPPERSISTSTREAMINIT;
+
+ HRESULT IsDirty(
+ void
+ );
+
+ HRESULT Load(
+ [in] LPSTREAM pStm
+ );
+
+ HRESULT Save(
+ [in] LPSTREAM pStm,
+ [in] BOOL fClearDirty
+ );
+
+ HRESULT GetSizeMax(
+ [out] ULARGE_INTEGER * pCbSize
+ );
+
+ HRESULT InitNew(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(37D84F60-42CB-11CE-8135-00AA004BB851),
+ pointer_default(unique)
+]
+
+interface IPersistPropertyBag : IPersist
+{
+ typedef IPersistPropertyBag * LPPERSISTPROPERTYBAG;
+
+ HRESULT InitNew(
+ void
+ );
+
+ HRESULT Load(
+ [in] IPropertyBag * pPropBag,
+ [in] IErrorLog * pErrorLog
+ );
+
+ HRESULT Save(
+ [in] IPropertyBag * pPropBag,
+ [in] BOOL fClearDirty,
+ [in] BOOL fSaveAllProperties
+ );
+}
+
+
+[
+ object,
+ uuid(742B0E01-14E6-101B-914E-00AA00300CAB),
+ pointer_default(unique)
+]
+
+interface ISimpleFrameSite : IUnknown
+{
+ typedef ISimpleFrameSite * LPSIMPLEFRAMESITE;
+
+ HRESULT PreMessageFilter(
+ [in] HWND hWnd,
+ [in] UINT msg,
+ [in] WPARAM wp,
+ [in] LPARAM lp,
+ [out] LRESULT * plResult,
+ [out] DWORD * pdwCookie
+ );
+
+ HRESULT PostMessageFilter(
+ [in] HWND hWnd,
+ [in] UINT msg,
+ [in] WPARAM wp,
+ [in] LPARAM lp,
+ [out] LRESULT *plResult,
+ [in] DWORD dwCookie
+ );
+}
+
+
+[
+ object,
+ uuid(BEF6E002-A874-101A-8BBA-00AA00300CAB),
+ pointer_default(unique)
+]
+
+interface IFont : IUnknown
+{
+ typedef IFont * LPFONT;
+
+cpp_quote("#if defined(_WIN32) && !defined(OLE2ANSI)")
+ typedef TEXTMETRICW TEXTMETRICOLE;
+cpp_quote("#else")
+cpp_quote("typedef TEXTMETRIC TEXTMETRICOLE;")
+cpp_quote("#endif")
+
+ typedef TEXTMETRICOLE * LPTEXTMETRICOLE;
+
+ HRESULT get_Name(
+ [out] BSTR * pName
+ );
+
+ HRESULT put_Name(
+ [in] BSTR name
+ );
+
+ HRESULT get_Size(
+ [out] CY * pSize
+ );
+
+ HRESULT put_Size(
+ [in] CY size
+ );
+
+ HRESULT get_Bold(
+ [out] BOOL * pBold
+ );
+
+ HRESULT put_Bold(
+ [in] BOOL bold
+ );
+
+ HRESULT get_Italic(
+ [out] BOOL * pItalic
+ );
+
+ HRESULT put_Italic(
+ [in] BOOL italic
+ );
+
+ HRESULT get_Underline(
+ [out] BOOL * pUnderline
+ );
+
+ HRESULT put_Underline(
+ [in] BOOL underline
+ );
+
+ HRESULT get_Strikethrough(
+ [out] BOOL * pStrikethrough
+ );
+
+ HRESULT put_Strikethrough(
+ [in] BOOL strikethrough
+ );
+
+ HRESULT get_Weight(
+ [out] SHORT * pWeight
+ );
+
+ HRESULT put_Weight(
+ [in] SHORT weight
+ );
+
+ HRESULT get_Charset(
+ [out] SHORT * pCharset
+ );
+
+ HRESULT put_Charset(
+ [in] SHORT charset
+ );
+
+ HRESULT get_hFont(
+ [out] HFONT * phFont
+ );
+
+ HRESULT Clone(
+ [out] IFont ** ppFont
+ );
+
+ HRESULT IsEqual(
+ [in] IFont * pFontOther
+ );
+
+ HRESULT SetRatio(
+ [in] LONG cyLogical,
+ [in] LONG cyHimetric
+ );
+
+ HRESULT QueryTextMetrics(
+ [out] TEXTMETRICOLE * pTM
+ );
+
+ HRESULT AddRefHfont(
+ [in] HFONT hFont
+ );
+
+ HRESULT ReleaseHfont(
+ [in] HFONT hFont
+ );
+
+ HRESULT SetHdc(
+ [in] HDC hDC
+ );
+}
+
+
+[
+ object,
+ uuid(7BF80980-BF32-101A-8BBB-00AA00300CAB),
+ pointer_default(unique)
+]
+
+interface IPicture : IUnknown
+{
+ typedef IPicture * LPPICTURE;
+
+ typedef enum tagPictureAttributes {
+ PICTURE_SCALABLE = 0x1,
+ PICTURE_TRANSPARENT = 0x2
+ } PICTUREATTRIBUTES;
+
+ typedef UINT OLE_HANDLE;
+ typedef LONG OLE_XPOS_HIMETRIC;
+ typedef LONG OLE_YPOS_HIMETRIC;
+ typedef LONG OLE_XSIZE_HIMETRIC;
+ typedef LONG OLE_YSIZE_HIMETRIC;
+
+ HRESULT get_Handle(
+ [out] OLE_HANDLE * pHandle
+ );
+
+ HRESULT get_hPal(
+ [out] OLE_HANDLE * phPal
+ );
+
+ HRESULT get_Type(
+ [out] SHORT * pType
+ );
+
+ HRESULT get_Width(
+ [out] OLE_XSIZE_HIMETRIC * pWidth
+ );
+
+ HRESULT get_Height(
+ [out] OLE_YSIZE_HIMETRIC * pHeight
+ );
+
+ HRESULT Render(
+ [in] HDC hDC,
+ [in] LONG x,
+ [in] LONG y,
+ [in] LONG cx,
+ [in] LONG cy,
+ [in] OLE_XPOS_HIMETRIC xSrc,
+ [in] OLE_YPOS_HIMETRIC ySrc,
+ [in] OLE_XSIZE_HIMETRIC cxSrc,
+ [in] OLE_YSIZE_HIMETRIC cySrc,
+ [in] LPCRECT pRcWBounds
+ );
+
+ HRESULT set_hPal(
+ [in] OLE_HANDLE hPal
+ );
+
+ HRESULT get_CurDC(
+ [out] HDC * phDC
+ );
+
+ HRESULT SelectPicture(
+ [in] HDC hDCIn,
+ [out] HDC * phDCOut,
+ [out] OLE_HANDLE * phBmpOut
+ );
+
+ HRESULT get_KeepOriginalFormat(
+ [out] BOOL * pKeep
+ );
+
+ HRESULT put_KeepOriginalFormat(
+ [in] BOOL keep
+ );
+
+ HRESULT PictureChanged(
+ void
+ );
+
+ HRESULT SaveAsFile(
+ [in] LPSTREAM pStream,
+ [in] BOOL fSaveMemCopy,
+ [out] LONG * pCbSize
+ );
+
+ HRESULT get_Attributes(
+ [out] DWORD * pDwAttr
+ );
+}
+
+
+[
+ object,
+ uuid(BEF6E003-A874-101A-8BBA-00AA00300CAB),
+ pointer_default(unique)
+]
+
+interface IFontDisp : IDispatch
+{
+ typedef IFontDisp * LPFONTDISP;
+}
+
+
+[
+ object,
+ uuid(7BF80981-BF32-101A-8BBB-00AA00300CAB),
+ pointer_default(unique)
+]
+
+interface IPictureDisp : IDispatch
+{
+ typedef IPictureDisp * LPPICTUREDISP;
+}
+
+
+//+---------------------------------------------------------------------------
+//
+// Extensions to OLE and OLE Controls.
+//
+//----------------------------------------------------------------------------
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(3AF24290-0C96-11CE-A0CF-00AA00600AB8)
+]
+
+interface IAdviseSinkEx : IAdviseSink
+{
+ typedef IAdviseSinkEx * LPADVISESINKEX;
+
+ [local]
+ void OnViewStatusChange(
+ [in] DWORD dwViewStatus
+ );
+
+ [call_as(OnViewStatusChange), async]
+ void RemoteOnViewStatusChange(
+ [in] DWORD dwViewStatus
+ );
+}
+
+
+[
+ local,
+ object,
+ pointer_default(unique),
+ uuid(1C2056CC-5EF4-101B-8BC8-00AA003E3B29)
+]
+
+interface IOleInPlaceObjectWindowless : IOleInPlaceObject
+{
+ typedef IOleInPlaceObjectWindowless *LPOLEINPLACEOBJECTWINDOWLESS;
+
+ HRESULT OnWindowMessage(
+ [in] UINT msg,
+ [in] WPARAM wParam,
+ [in] LPARAM lParam,
+ [out] LRESULT * plResult
+ );
+
+ HRESULT GetDropTarget(
+ [out] IDropTarget ** ppDropTarget
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(9C2CAD80-3424-11CF-B670-00AA004CD6D8)
+]
+
+interface IOleInPlaceSiteEx : IOleInPlaceSite
+{
+ typedef IOleInPlaceSiteEx * LPOLEINPLACESITEEX;
+
+ typedef [v1_enum] enum tagACTIVATEFLAGS {
+ ACTIVATE_WINDOWLESS = 1,
+ } ACTIVATEFLAGS;
+
+ HRESULT OnInPlaceActivateEx(
+ [out] BOOL * pfNoRedraw,
+ [in] DWORD dwFlags
+ );
+
+ HRESULT OnInPlaceDeactivateEx(
+ [in] BOOL fNoRedraw
+ );
+
+ HRESULT RequestUIActivate(
+ void
+ );
+}
+
+
+[
+ local,
+ object,
+ pointer_default(unique),
+ uuid(922EADA0-3424-11CF-B670-00AA004CD6D8)
+]
+
+interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx
+{
+ typedef IOleInPlaceSiteWindowless * LPOLEINPLACESITEWINDOWLESS;
+
+ typedef [v1_enum] enum tagOLEDCFLAGS {
+ OLEDC_NODRAW = 0x01,
+ OLEDC_PAINTBKGND = 0x02,
+ OLEDC_OFFSCREEN = 0x04
+ } OLEDCFLAGS;
+
+ HRESULT CanWindowlessActivate(
+ void
+ );
+
+ HRESULT GetCapture(
+ void
+ );
+
+ HRESULT SetCapture(
+ [in] BOOL fCapture
+ );
+
+ HRESULT GetFocus(
+ void
+ );
+
+ HRESULT SetFocus(
+ [in] BOOL fFocus
+ );
+
+ HRESULT GetDC(
+ [in] LPCRECT pRect,
+ [in] DWORD grfFlags,
+ [out] HDC * phDC
+ );
+
+ HRESULT ReleaseDC(
+ [in] HDC hDC
+ );
+
+ HRESULT InvalidateRect(
+ [in] LPCRECT pRect,
+ [in] BOOL fErase
+ );
+
+ HRESULT InvalidateRgn(
+ [in] HRGN hRGN,
+ [in] BOOL fErase
+ );
+
+ HRESULT ScrollRect(
+ [in] INT dx,
+ [in] INT dy,
+ [in] LPCRECT pRectScroll,
+ [in] LPCRECT pRectClip
+ );
+
+ HRESULT AdjustRect(
+ [in, out] LPRECT prc
+ );
+
+ HRESULT OnDefWindowMessage(
+ [in] UINT msg,
+ [in] WPARAM wParam,
+ [in] LPARAM lParam,
+ [out] LRESULT * plResult
+ );
+}
+
+
+[
+ local,
+ object,
+ pointer_default(unique),
+ uuid(3AF24292-0C96-11CE-A0CF-00AA00600AB8)
+]
+
+interface IViewObjectEx : IViewObject2
+{
+ typedef IViewObjectEx * LPVIEWOBJECTEX;
+
+ typedef [v1_enum] enum tagVIEWSTATUS {
+ VIEWSTATUS_OPAQUE = 1,
+ VIEWSTATUS_SOLIDBKGND = 2,
+ VIEWSTATUS_DVASPECTOPAQUE = 4,
+ VIEWSTATUS_DVASPECTTRANSPARENT = 8,
+ } VIEWSTATUS;
+
+ typedef [v1_enum] enum tagHITRESULT {
+ HITRESULT_OUTSIDE = 0,
+ HITRESULT_TRANSPARENT = 1,
+ HITRESULT_CLOSE = 2,
+ HITRESULT_HIT = 3
+ } HITRESULT;
+
+ typedef [v1_enum] enum tagDVASPECT2 {
+ DVASPECT_OPAQUE = 16,
+ DVASPECT_TRANSPARENT = 32,
+ } DVASPECT2;
+
+ typedef struct tagExtentInfo {
+ ULONG cb;
+ DWORD dwExtentMode;
+ SIZEL sizelProposed;
+ } DVEXTENTINFO;
+
+ typedef [v1_enum] enum tagExtentMode {
+ DVEXTENT_CONTENT,
+ DVEXTENT_INTEGRAL
+ } DVEXTENTMODE;
+
+ typedef [v1_enum] enum tagAspectInfoFlag {
+ DVASPECTINFOFLAG_CANOPTIMIZE = 1
+ } DVASPECTINFOFLAG;
+
+ typedef struct tagAspectInfo {
+ ULONG cb;
+ DWORD dwFlags;
+ } DVASPECTINFO;
+
+ HRESULT GetRect(
+ [in] DWORD dwAspect,
+ [out] LPRECTL pRect
+ );
+
+ HRESULT GetViewStatus(
+ [out] DWORD * pdwStatus
+ );
+
+ HRESULT QueryHitPoint(
+ [in] DWORD dwAspect,
+ [in] LPCRECT pRectBounds,
+ [in] POINT ptlLoc,
+ [in] LONG lCloseHint,
+ [out] DWORD * pHitResult
+ );
+
+ HRESULT QueryHitRect(
+ [in] DWORD dwAspect,
+ [in] LPCRECT pRectBounds,
+ [in] LPCRECT pRectLoc,
+ [in] LONG lCloseHint,
+ [out] DWORD * pHitResult
+ );
+
+ HRESULT GetNaturalExtent (
+ [in] DWORD dwAspect,
+ [in] LONG lindex,
+ [in] DVTARGETDEVICE * ptd,
+ [in] HDC hicTargetDev,
+ [in] DVEXTENTINFO * pExtentInfo,
+ [out] LPSIZEL pSizel
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(894AD3B0-EF97-11CE-9BC9-00AA00608E01)
+]
+
+interface IOleUndoUnit : IUnknown
+{
+ typedef IOleUndoUnit * LPOLEUNDOUNIT;
+
+ HRESULT Do(
+ [in] IOleUndoManager * pUndoManager
+ );
+
+ HRESULT GetDescription(
+ [out] BSTR * pBstr
+ );
+
+ HRESULT GetUnitType(
+ [out] CLSID * pClsid,
+ [out] LONG * plID
+ );
+
+ HRESULT OnNextAdd(
+ void
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(A1FAF330-EF97-11CE-9BC9-00AA00608E01)
+]
+
+interface IOleParentUndoUnit : IOleUndoUnit
+{
+ typedef IOleParentUndoUnit * LPOLEPARENTUNDOUNIT;
+
+ HRESULT Open(
+ [in] IOleParentUndoUnit * pPUU
+ );
+
+ HRESULT Close(
+ [in] IOleParentUndoUnit * pPUU,
+ [in] BOOL fCommit
+ );
+
+ HRESULT Add(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT FindUnit(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT GetParentState(
+ [out] DWORD * pdwState
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(B3E7C340-EF97-11CE-9BC9-00AA00608E01)
+]
+
+interface IEnumOleUndoUnits : IUnknown
+{
+ typedef IEnumOleUndoUnits * LPENUMOLEUNDOUNITS;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG cElt,
+ [out, size_is(cElt), length_is(*pcEltFetched)]
+ IOleUndoUnit ** rgElt,
+ [out] ULONG * pcEltFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG cElt,
+ [out, size_is(cElt), length_is(*pcEltFetched)]
+ IOleUndoUnit ** rgElt,
+ [out] ULONG * pcEltFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG cElt
+ );
+
+ HRESULT Reset(
+ void
+ );
+
+ HRESULT Clone(
+ [out] IEnumOleUndoUnits ** ppEnum
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(D001F200-EF97-11CE-9BC9-00AA00608E01)
+]
+
+interface IOleUndoManager : IUnknown
+{
+ typedef IOleUndoManager * LPOLEUNDOMANAGER;
+
+ HRESULT Open(
+ [in] IOleParentUndoUnit * pPUU
+ );
+
+ HRESULT Close(
+ [in] IOleParentUndoUnit * pPUU,
+ [in] BOOL fCommit
+ );
+
+ HRESULT Add(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT GetOpenParentState(
+ [out] DWORD * pdwState
+ );
+
+ HRESULT DiscardFrom(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT UndoTo(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT RedoTo(
+ [in] IOleUndoUnit * pUU
+ );
+
+ HRESULT EnumUndoable(
+ [out] IEnumOleUndoUnits ** ppEnum
+ );
+
+ HRESULT EnumRedoable(
+ [out] IEnumOleUndoUnits ** ppEnum
+ );
+
+ HRESULT GetLastUndoDescription(
+ [out] BSTR * pBstr
+ );
+
+ HRESULT GetLastRedoDescription(
+ [out] BSTR * pBstr
+ );
+
+ HRESULT Enable(
+ [in] BOOL fEnable
+ );
+}
+
+
+[
+ local,
+ object,
+ pointer_default(unique),
+ uuid(CF51ED10-62FE-11CF-BF86-00A0C9034836)
+]
+
+interface IQuickActivate : IUnknown
+{
+ typedef IQuickActivate * LPQUICKACTIVATE;
+
+ typedef [v1_enum] enum tagQACONTAINERFLAGS {
+ QACONTAINER_SHOWHATCHING = 0x0001,
+ QACONTAINER_SHOWGRABHANDLES = 0x0002,
+ QACONTAINER_USERMODE = 0x0004,
+ QACONTAINER_DISPLAYASDEFAULT = 0x0008,
+ QACONTAINER_UIDEAD = 0x0010,
+ QACONTAINER_AUTOCLIP = 0x0020,
+ QACONTAINER_MESSAGEREFLECT = 0x0040,
+ QACONTAINER_SUPPORTSMNEMONICS = 0x0080
+ } QACONTAINERFLAGS;
+
+ typedef DWORD OLE_COLOR;
+
+ typedef struct tagQACONTAINER {
+ ULONG cbSize;
+ IOleClientSite * pClientSite;
+ IAdviseSinkEx * pAdviseSink;
+ IPropertyNotifySink * pPropertyNotifySink;
+ IUnknown * pUnkEventSink;
+ DWORD dwAmbientFlags;
+ OLE_COLOR colorFore;
+ OLE_COLOR colorBack;
+ IFont * pFont;
+ IOleUndoManager * pUndoMgr;
+ DWORD dwAppearance;
+ LONG lcid;
+ HPALETTE hpal;
+ struct IBindHost * pBindHost;
+ } QACONTAINER;
+
+ typedef struct tagQACONTROL {
+ ULONG cbSize;
+ DWORD dwMiscStatus;
+ DWORD dwViewStatus;
+ DWORD dwEventCookie;
+ DWORD dwPropNotifyCookie;
+ DWORD dwPointerActivationPolicy;
+ } QACONTROL;
+
+ HRESULT QuickActivate(
+ [in] QACONTAINER * pQaContainer,
+ [out] QACONTROL * pQaControl
+ );
+
+ HRESULT SetContentExtent(
+ LPSIZEL pSizel
+ );
+
+ HRESULT GetContentExtent(
+ LPSIZEL pSizel
+ );
+}
+
+
+[
+ object,
+ pointer_default(unique),
+ uuid(55980BA0-35AA-11CF-B671-00AA004CD6D8)
+]
+
+interface IPointerInactive : IUnknown
+{
+ typedef IPointerInactive * LPPOINTERINACTIVE;
+
+ typedef [v1_enum] enum tagPOINTERINACTIVE {
+ POINTERINACTIVE_ACTIVATEONENTRY = 1,
+ POINTERINACTIVE_DEACTIVATEONLEAVE = 2,
+ POINTERINACTIVE_ACTIVATEONDRAG = 4
+ } POINTERINACTIVE;
+
+ HRESULT GetActivationPolicy(
+ [out] DWORD * pdwPolicy
+ );
+
+ HRESULT OnInactiveMouseMove(
+ [in] LPCRECT pRectBounds,
+ [in] LONG x,
+ [in] LONG y,
+ [in] DWORD grfKeyState
+ );
+
+ HRESULT OnInactiveSetCursor(
+ [in] LPCRECT pRectBounds,
+ [in] LONG x,
+ [in] LONG y,
+ [in] DWORD dwMouseMsg,
+ [in] BOOL fSetAlways
+ );
+}
+
+
+[
+ object,
+ uuid(FC4801A3-2BA9-11CF-A229-00AA003D7352),
+ pointer_default(unique)
+]
+
+interface IObjectWithSite : IUnknown
+{
+ typedef IObjectWithSite * LPOBJECTWITHSITE;
+
+ HRESULT SetSite(
+ [in] IUnknown * pUnkSite
+ );
+
+ HRESULT GetSite(
+ [in] REFIID riid,
+ [out, iid_is(riid)] void ** ppvSite
+ );
+}
+
+
+[
+ object,
+ uuid(3127CA40-446E-11CE-8135-00AA004BB851),
+ pointer_default(unique)
+]
+
+interface IErrorLog : IUnknown
+{
+ typedef IErrorLog * LPERRORLOG;
+
+ HRESULT AddError(
+ [in] LPCOLESTR pszPropName,
+ [in] EXCEPINFO * pExcepInfo
+ );
+}
+
+
+[
+ object,
+ uuid(55272A00-42CB-11CE-8135-00AA004BB851),
+ pointer_default(unique)
+]
+
+interface IPropertyBag : IUnknown
+{
+ typedef IPropertyBag * LPPROPERTYBAG;
+
+ [local]
+ HRESULT Read(
+ [in] LPCOLESTR pszPropName,
+ [in, out] VARIANT * pVar,
+ [in] IErrorLog * pErrorLog
+ );
+
+ [call_as(Read)]
+ HRESULT RemoteRead(
+ [in] LPCOLESTR pszPropName,
+ [out] VARIANT * pVar,
+ [in] IErrorLog * pErrorLog,
+ [in] DWORD varType,
+ [in] IUnknown * pUnkObj
+ );
+
+ HRESULT Write(
+ [in] LPCOLESTR pszPropName,
+ [in] VARIANT * pVar
+ );
+}
+
+
+[
+ object,
+ uuid(376BD3AA-3845-101B-84ED-08002B2EC713),
+ pointer_default(unique)
+]
+
+interface IPerPropertyBrowsing : IUnknown
+{
+ typedef IPerPropertyBrowsing * LPPERPROPERTYBROWSING;
+
+ typedef struct tagCALPOLESTR {
+ ULONG cElems;
+ [size_is(cElems)] LPOLESTR * pElems;
+ } CALPOLESTR;
+
+ typedef struct tagCALPOLESTR * LPCALPOLESTR;
+
+ typedef struct tagCADWORD {
+ ULONG cElems;
+ [size_is(cElems)] DWORD * pElems;
+ } CADWORD;
+
+ typedef struct tagCADWORD * LPCADWORD;
+
+ HRESULT GetDisplayString(
+ [in] DISPID dispID,
+ [out] BSTR * pBstr
+ );
+
+ HRESULT MapPropertyToPage(
+ [in] DISPID dispID,
+ [out] CLSID * pClsid
+ );
+
+ HRESULT GetPredefinedStrings(
+ [in] DISPID dispID,
+ [out] CALPOLESTR * pCaStringsOut,
+ [out] CADWORD * pCaCookiesOut
+ );
+
+ HRESULT GetPredefinedValue(
+ [in] DISPID dispID,
+ [in] DWORD dwCookie,
+ [out] VARIANT * pVarOut
+ );
+}
+
diff --git a/public/sdk/inc/ocntnr.h b/public/sdk/inc/ocntnr.h
new file mode 100644
index 000000000..34572700a
--- /dev/null
+++ b/public/sdk/inc/ocntnr.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: ocntnr.h
+//
+// Contents: Replacement for ocntnr.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/ocsite.h b/public/sdk/inc/ocsite.h
new file mode 100644
index 000000000..df9afbd96
--- /dev/null
+++ b/public/sdk/inc/ocsite.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: ocsite.h
+//
+// Contents: Replacement for ocsite.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/ofsmsg.h b/public/sdk/inc/ofsmsg.h
new file mode 100644
index 000000000..0ebea07f8
--- /dev/null
+++ b/public/sdk/inc/ofsmsg.h
@@ -0,0 +1,36 @@
+//+---------------------------------------------------------------------------
+// Copyright (C) 1991, Microsoft Corporation.
+//
+// File: ofsmrshl.h
+//
+// Contents: Private definitions for OFS-based marshalling and unmarshalling
+// Across the Kernel boundry
+//
+// History: 5 Jun 93 Robertfe Created
+//
+//----------------------------------------------------------------------------
+
+#ifndef __OFSMSG_H__
+#define __OFSMSG_H__
+
+typedef struct _message {
+ ULONG posn;
+ ULONG size;
+ UCHAR *buffer;
+} MESSAGE;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+NTSTATUS SendReceive(
+ HANDLE hf,
+ ULONG procnum,
+ MESSAGE *_pmsg,
+ IO_STATUS_BLOCK *piosb);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif
diff --git a/public/sdk/inc/ofsoid.hxx b/public/sdk/inc/ofsoid.hxx
new file mode 100644
index 000000000..6cbcb27e4
--- /dev/null
+++ b/public/sdk/inc/ofsoid.hxx
@@ -0,0 +1,98 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: ofsoid.hxx
+//
+// Contents: Id and id search functionality
+//
+// Functions:
+//
+// History: 27-Jan-93 BillMo Created.
+//
+//--------------------------------------------------------------------------
+
+#include <stdlib.h>
+
+EXPORTDEF NTSTATUS
+ReadObjectId(HANDLE hFile, OBJECTID *poid);
+
+EXPORTDEF NTSTATUS
+WriteObjectId(HANDLE hFile, const OBJECTID *poid);
+
+EXPORTDEF void
+GenerateObjectId(OBJECTID *poid);
+
+EXPORTDEF void
+GenerateRelatedObjectId(const OBJECTID *poidIn, OBJECTID *poid);
+
+EXPORTDEF NTSTATUS
+GetObjectId(HANDLE hFile, OBJECTID *poid);
+
+EXPORTDEF NTSTATUS
+GetObjectIdFromPath(const WCHAR * pwcsFile, OBJECTID *poid);
+
+EXPORTDEF NTSTATUS
+DeleteObjectId(HANDLE hFile);
+
+
+//+-------------------------------------------------------------------
+//
+// Function: SearchVolume
+//
+// Synopsis: Search the volume of the handle passed in and return the
+// path(s) of the matching objects relative to the handle.
+// See description of FindObject in ofs\fs\fs\objid.cxx or
+// win4dwb\ofs\link\alink.doc for SFindObjectOut structure.
+//
+// Arguments: [hAncestor] -- Handle to volume root or other object on
+// volume of interest.
+// [oid] -- The object id of the object(s) to search
+// for.
+// [pResults] -- A buffer, at least sizeof(SFindObjectOut)
+// bytes long, to receive the path of the
+// found object (or paths of Lineage matches.)
+// [usBufLen] -- Length of buffer, in bytes, at [pResults.]
+// [cLineage] -- Maximum number of Lineage matches to return.
+// May be 0, in which case no search for Lineage
+// matches is made if an exact match by
+// OBJECTID is found.
+//
+//
+// Returns: STATUS_SUCCESS -- Found exact match.
+// STATUS_NO_SUCH_FILE -- No exact match found. May be lineage matches.
+// STATUS_FOUND_OUT_OF_SCOPE -- Found exact match but it is not
+// in the scope of [hAncestor.]
+//
+// Signals: None.
+//
+// Modifies: [pResults]
+//
+// Algorithm: Call OFS using FSCTL_OFS_LINK_FINDOBJECT
+//
+// History: 3-Jun-93 BillMo Created.
+//
+// Notes:
+//
+//--------------------------------------------------------------------
+
+NTSTATUS
+SearchVolume( HANDLE hAncestor,
+ const OBJECTID & oid,
+ SFindObjectOut * pResults,
+ USHORT usBufLen, // length in bytes of buffer
+ // at pResults
+ USHORT cLineage ); // maximum number of lineage
+ // matches to return
+
+NTSTATUS
+SearchVolume(const WCHAR * pwszAncestor,
+ const OBJECTID & oid,
+ SFindObjectOut * pResults,
+ USHORT usBufLen, // at pResults
+ USHORT cLineage );
+
+
+
+
diff --git a/public/sdk/inc/ole.h b/public/sdk/inc/ole.h
new file mode 100644
index 000000000..af30907a4
--- /dev/null
+++ b/public/sdk/inc/ole.h
@@ -0,0 +1,503 @@
+/*****************************************************************************\
+* *
+* ole.h - Object Linking and Embedding functions, types, and definitions*
+* *
+* Version 1.0 *
+* *
+* NOTE: windows.h must be #included first *
+* *
+* Copyright (c) 1990-1996, Microsoft Corp. All rights reserved.*
+* *
+\*****************************************************************************/
+
+#ifndef _INC_OLE
+#define _INC_OLE
+
+#ifdef WIN16
+#include <pshpack1.h> /* Assume byte packing throughout */
+#endif
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+#ifndef WINAPI /* If not included with 3.1 headers... */
+#define WINAPI FAR PASCAL
+#define CALLBACK FAR PASCAL
+#define LPCSTR LPSTR
+#define LRESULT LONG
+#define HGLOBAL HANDLE
+#endif /* _INC_WINDOWS */
+
+
+#ifdef STRICT
+#define OLE_LPCSTR LPCSTR
+#define OLE_CONST const
+#else /* STRICT */
+#define OLE_LPCSTR LPSTR
+#define OLE_CONST
+#endif /* !STRICT */
+
+#define LRESULT LONG
+#define HGLOBAL HANDLE
+
+
+/* Object types */
+#define OT_LINK 1L
+#define OT_EMBEDDED 2L
+#define OT_STATIC 3L
+
+/* activate verbs */
+#define OLEVERB_PRIMARY 0
+
+/* target device info structure */
+typedef struct _OLETARGETDEVICE
+{
+ USHORT otdDeviceNameOffset;
+ USHORT otdDriverNameOffset;
+ USHORT otdPortNameOffset;
+ USHORT otdExtDevmodeOffset;
+ USHORT otdExtDevmodeSize;
+ USHORT otdEnvironmentOffset;
+ USHORT otdEnvironmentSize;
+ BYTE otdData[1];
+} OLETARGETDEVICE;
+typedef OLETARGETDEVICE FAR* LPOLETARGETDEVICE;
+
+/* flags used in some methods */
+#define OF_SET 0x0001
+#define OF_GET 0x0002
+#define OF_HANDLER 0x0004
+
+/* return codes for OLE functions */
+typedef enum
+{
+ OLE_OK, /* 0 Function operated correctly */
+
+ OLE_WAIT_FOR_RELEASE, /* 1 Command has been initiated, client */
+ /* must wait for release. keep dispatching */
+ /* messages till OLE_RELESE in callback */
+
+ OLE_BUSY, /* 2 Tried to execute a method while another */
+ /* method is in progress. */
+
+ OLE_ERROR_PROTECT_ONLY, /* 3 Ole APIs are called in real mode */
+ OLE_ERROR_MEMORY, /* 4 Could not alloc or lock memory */
+ OLE_ERROR_STREAM, /* 5 (OLESTREAM) stream error */
+ OLE_ERROR_STATIC, /* 6 Non static object expected */
+ OLE_ERROR_BLANK, /* 7 Critical data missing */
+ OLE_ERROR_DRAW, /* 8 Error while drawing */
+ OLE_ERROR_METAFILE, /* 9 Invalid metafile */
+ OLE_ERROR_ABORT, /* 10 Client chose to abort metafile drawing */
+ OLE_ERROR_CLIPBOARD, /* 11 Failed to get/set clipboard data */
+ OLE_ERROR_FORMAT, /* 12 Requested format is not available */
+ OLE_ERROR_OBJECT, /* 13 Not a valid object */
+ OLE_ERROR_OPTION, /* 14 Invalid option(link update / render) */
+ OLE_ERROR_PROTOCOL, /* 15 Invalid protocol */
+ OLE_ERROR_ADDRESS, /* 16 One of the pointers is invalid */
+ OLE_ERROR_NOT_EQUAL, /* 17 Objects are not equal */
+ OLE_ERROR_HANDLE, /* 18 Invalid handle encountered */
+ OLE_ERROR_GENERIC, /* 19 Some general error */
+ OLE_ERROR_CLASS, /* 20 Invalid class */
+ OLE_ERROR_SYNTAX, /* 21 Command syntax is invalid */
+ OLE_ERROR_DATATYPE, /* 22 Data format is not supported */
+ OLE_ERROR_PALETTE, /* 23 Invalid color palette */
+ OLE_ERROR_NOT_LINK, /* 24 Not a linked object */
+ OLE_ERROR_NOT_EMPTY, /* 25 Client doc contains objects. */
+ OLE_ERROR_SIZE, /* 26 Incorrect buffer size passed to the api */
+ /* that places some string in caller's */
+ /* buffer */
+
+ OLE_ERROR_DRIVE, /* 27 Drive letter in doc name is invalid */
+ OLE_ERROR_NETWORK, /* 28 Failed to establish connection to a */
+ /* network share on which the document */
+ /* is located */
+
+ OLE_ERROR_NAME, /* 29 Invalid name(doc name, object name), */
+ /* etc.. passed to the APIs */
+
+ OLE_ERROR_TEMPLATE, /* 30 Server failed to load template */
+ OLE_ERROR_NEW, /* 31 Server failed to create new doc */
+ OLE_ERROR_EDIT, /* 32 Server failed to create embedded */
+ /* instance */
+ OLE_ERROR_OPEN, /* 33 Server failed to open document, */
+ /* possible invalid link */
+
+ OLE_ERROR_NOT_OPEN, /* 34 Object is not open for editing */
+ OLE_ERROR_LAUNCH, /* 35 Failed to launch server */
+ OLE_ERROR_COMM, /* 36 Failed to communicate with server */
+ OLE_ERROR_TERMINATE, /* 37 Error in termination */
+ OLE_ERROR_COMMAND, /* 38 Error in execute */
+ OLE_ERROR_SHOW, /* 39 Error in show */
+ OLE_ERROR_DOVERB, /* 40 Error in sending do verb, or invalid */
+ /* verb */
+ OLE_ERROR_ADVISE_NATIVE, /* 41 Item could be missing */
+ OLE_ERROR_ADVISE_PICT, /* 42 Item could be missing or server doesn't */
+ /* this format. */
+
+ OLE_ERROR_ADVISE_RENAME, /* 43 Server doesn't support rename */
+ OLE_ERROR_POKE_NATIVE, /* 44 Failure of poking native data to server */
+ OLE_ERROR_REQUEST_NATIVE, /* 45 Server failed to render native data */
+ OLE_ERROR_REQUEST_PICT, /* 46 Server failed to render presentation */
+ /* data */
+ OLE_ERROR_SERVER_BLOCKED, /* 47 Trying to block a blocked server or */
+ /* trying to revoke a blocked server */
+ /* or document */
+
+ OLE_ERROR_REGISTRATION, /* 48 Server is not registered in regestation */
+ /* data base */
+ OLE_ERROR_ALREADY_REGISTERED,/*49 Trying to register same doc multiple */
+ /* times */
+ OLE_ERROR_TASK, /* 50 Server or client task is invalid */
+ OLE_ERROR_OUTOFDATE, /* 51 Object is out of date */
+ OLE_ERROR_CANT_UPDATE_CLIENT,/* 52 Embed doc's client doesn't accept */
+ /* updates */
+ OLE_ERROR_UPDATE, /* 53 erorr while trying to update */
+ OLE_ERROR_SETDATA_FORMAT, /* 54 Server app doesn't understand the */
+ /* format given to its SetData method */
+ OLE_ERROR_STATIC_FROM_OTHER_OS,/* 55 trying to load a static object created */
+ /* on another Operating System */
+ OLE_ERROR_FILE_VER,
+
+ /* Following are warnings */
+ OLE_WARN_DELETE_DATA = 1000 /* Caller must delete the data when he is */
+ /* done with it. */
+} OLESTATUS;
+
+
+
+/* Codes for CallBack events */
+typedef enum
+{
+ OLE_CHANGED, /* 0 */
+ OLE_SAVED, /* 1 */
+ OLE_CLOSED, /* 2 */
+ OLE_RENAMED, /* 3 */
+ OLE_QUERY_PAINT, /* 4 Interruptible paint support */
+ OLE_RELEASE, /* 5 Object is released(asynchronous operation */
+ /* is completed) */
+ OLE_QUERY_RETRY /* 6 Query for retry when server sends busy ACK */
+} OLE_NOTIFICATION;
+
+typedef enum
+{
+ OLE_NONE, /* 0 no method active */
+ OLE_DELETE, /* 1 object delete */
+ OLE_LNKPASTE, /* 2 PasteLink(auto reconnect) */
+ OLE_EMBPASTE, /* 3 paste(and update) */
+ OLE_SHOW, /* 4 Show */
+ OLE_RUN, /* 5 Run */
+ OLE_ACTIVATE, /* 6 Activate */
+ OLE_UPDATE, /* 7 Update */
+ OLE_CLOSE, /* 8 Close */
+ OLE_RECONNECT, /* 9 Reconnect */
+ OLE_SETUPDATEOPTIONS, /* 10 setting update options */
+ OLE_SERVERUNLAUNCH, /* 11 server is being unlaunched */
+ OLE_LOADFROMSTREAM, /* 12 LoadFromStream(auto reconnect) */
+ OLE_SETDATA, /* 13 OleSetData */
+ OLE_REQUESTDATA, /* 14 OleRequestData */
+ OLE_OTHER, /* 15 other misc async operations */
+ OLE_CREATE, /* 16 create */
+ OLE_CREATEFROMTEMPLATE, /* 17 CreatefromTemplate */
+ OLE_CREATELINKFROMFILE, /* 18 CreateLinkFromFile */
+ OLE_COPYFROMLNK, /* 19 CopyFromLink(auto reconnect) */
+ OLE_CREATEFROMFILE, /* 20 CreateFromFile */
+ OLE_CREATEINVISIBLE /* 21 CreateInvisible */
+} OLE_RELEASE_METHOD;
+
+/* rendering options */
+typedef enum
+{
+ olerender_none,
+ olerender_draw,
+ olerender_format
+} OLEOPT_RENDER;
+
+/* standard clipboard format type */
+typedef WORD OLECLIPFORMAT;
+
+/* Link update options */
+typedef enum
+{
+ oleupdate_always,
+ oleupdate_onsave,
+#ifdef OLE_INTERNAL
+ oleupdate_oncall,
+ oleupdate_onclose
+#else
+ oleupdate_oncall
+#endif /* OLE_INTERNAL */
+} OLEOPT_UPDATE;
+
+typedef HANDLE HOBJECT;
+typedef LONG LHSERVER;
+typedef LONG LHCLIENTDOC;
+typedef LONG LHSERVERDOC;
+
+typedef struct _OLEOBJECT FAR* LPOLEOBJECT;
+typedef struct _OLESTREAM FAR* LPOLESTREAM;
+typedef struct _OLECLIENT FAR* LPOLECLIENT;
+
+
+/* object method table definitions. */
+typedef struct _OLEOBJECTVTBL
+{
+ void FAR* (CALLBACK* QueryProtocol) (LPOLEOBJECT, OLE_LPCSTR);
+ OLESTATUS (CALLBACK* Release) (LPOLEOBJECT);
+ OLESTATUS (CALLBACK* Show) (LPOLEOBJECT, BOOL);
+ OLESTATUS (CALLBACK* DoVerb) (LPOLEOBJECT, UINT, BOOL, BOOL);
+ OLESTATUS (CALLBACK* GetData) (LPOLEOBJECT, OLECLIPFORMAT, HANDLE FAR*);
+ OLESTATUS (CALLBACK* SetData) (LPOLEOBJECT, OLECLIPFORMAT, HANDLE);
+ OLESTATUS (CALLBACK* SetTargetDevice) (LPOLEOBJECT, HGLOBAL);
+ OLESTATUS (CALLBACK* SetBounds) (LPOLEOBJECT, OLE_CONST RECT FAR*);
+ OLECLIPFORMAT (CALLBACK* EnumFormats) (LPOLEOBJECT, OLECLIPFORMAT);
+ OLESTATUS (CALLBACK* SetColorScheme) (LPOLEOBJECT, OLE_CONST LOGPALETTE FAR*);
+ /* Server has to implement only the above methods. */
+
+#ifndef SERVERONLY
+ /* Extra methods required for client. */
+ OLESTATUS (CALLBACK* Delete) (LPOLEOBJECT);
+ OLESTATUS (CALLBACK* SetHostNames) (LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR);
+ OLESTATUS (CALLBACK* SaveToStream) (LPOLEOBJECT, LPOLESTREAM);
+ OLESTATUS (CALLBACK* Clone) (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT FAR*);
+ OLESTATUS (CALLBACK* CopyFromLink) (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT FAR*);
+ OLESTATUS (CALLBACK* Equal) (LPOLEOBJECT, LPOLEOBJECT);
+ OLESTATUS (CALLBACK* CopyToClipboard) (LPOLEOBJECT);
+ OLESTATUS (CALLBACK* Draw) (LPOLEOBJECT, HDC, OLE_CONST RECT FAR*, OLE_CONST RECT FAR*, HDC);
+ OLESTATUS (CALLBACK* Activate) (LPOLEOBJECT, UINT, BOOL, BOOL, HWND, OLE_CONST RECT FAR*);
+ OLESTATUS (CALLBACK* Execute) (LPOLEOBJECT, HGLOBAL, UINT);
+ OLESTATUS (CALLBACK* Close) (LPOLEOBJECT);
+ OLESTATUS (CALLBACK* Update) (LPOLEOBJECT);
+ OLESTATUS (CALLBACK* Reconnect) (LPOLEOBJECT);
+
+ OLESTATUS (CALLBACK* ObjectConvert) (LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT FAR*);
+ OLESTATUS (CALLBACK* GetLinkUpdateOptions) (LPOLEOBJECT, OLEOPT_UPDATE FAR*);
+ OLESTATUS (CALLBACK* SetLinkUpdateOptions) (LPOLEOBJECT, OLEOPT_UPDATE);
+
+ OLESTATUS (CALLBACK* Rename) (LPOLEOBJECT, OLE_LPCSTR);
+ OLESTATUS (CALLBACK* QueryName) (LPOLEOBJECT, LPSTR, UINT FAR*);
+
+ OLESTATUS (CALLBACK* QueryType) (LPOLEOBJECT, LONG FAR*);
+ OLESTATUS (CALLBACK* QueryBounds) (LPOLEOBJECT, RECT FAR*);
+ OLESTATUS (CALLBACK* QuerySize) (LPOLEOBJECT, DWORD FAR*);
+ OLESTATUS (CALLBACK* QueryOpen) (LPOLEOBJECT);
+ OLESTATUS (CALLBACK* QueryOutOfDate) (LPOLEOBJECT);
+
+ OLESTATUS (CALLBACK* QueryReleaseStatus) (LPOLEOBJECT);
+ OLESTATUS (CALLBACK* QueryReleaseError) (LPOLEOBJECT);
+ OLE_RELEASE_METHOD (CALLBACK* QueryReleaseMethod)(LPOLEOBJECT);
+
+ OLESTATUS (CALLBACK* RequestData) (LPOLEOBJECT, OLECLIPFORMAT);
+ OLESTATUS (CALLBACK* ObjectLong) (LPOLEOBJECT, UINT, LONG FAR*);
+
+/* This method is internal only */
+ OLESTATUS (CALLBACK* ChangeData) (LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL);
+#endif /* !SERVERONLY */
+} OLEOBJECTVTBL;
+typedef OLEOBJECTVTBL FAR* LPOLEOBJECTVTBL;
+
+#ifndef OLE_INTERNAL
+typedef struct _OLEOBJECT
+{
+ LPOLEOBJECTVTBL lpvtbl;
+} OLEOBJECT;
+#endif
+
+/* ole client definitions */
+typedef struct _OLECLIENTVTBL
+{
+ int (CALLBACK* CallBack)(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT);
+} OLECLIENTVTBL;
+
+typedef OLECLIENTVTBL FAR* LPOLECLIENTVTBL;
+
+typedef struct _OLECLIENT
+{
+ LPOLECLIENTVTBL lpvtbl;
+} OLECLIENT;
+
+/* Stream definitions */
+typedef struct _OLESTREAMVTBL
+{
+ DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
+ DWORD (CALLBACK* Put)(LPOLESTREAM, OLE_CONST void FAR*, DWORD);
+} OLESTREAMVTBL;
+typedef OLESTREAMVTBL FAR* LPOLESTREAMVTBL;
+
+typedef struct _OLESTREAM
+{
+ LPOLESTREAMVTBL lpstbl;
+} OLESTREAM;
+
+/* Public Function Prototypes */
+OLESTATUS WINAPI OleDelete(LPOLEOBJECT);
+OLESTATUS WINAPI OleRelease(LPOLEOBJECT);
+OLESTATUS WINAPI OleSaveToStream(LPOLEOBJECT, LPOLESTREAM);
+OLESTATUS WINAPI OleEqual(LPOLEOBJECT, LPOLEOBJECT );
+OLESTATUS WINAPI OleCopyToClipboard(LPOLEOBJECT);
+OLESTATUS WINAPI OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR);
+OLESTATUS WINAPI OleSetTargetDevice(LPOLEOBJECT, HGLOBAL);
+OLESTATUS WINAPI OleSetBounds(LPOLEOBJECT, const RECT FAR*);
+OLESTATUS WINAPI OleSetColorScheme(LPOLEOBJECT, const LOGPALETTE FAR*);
+OLESTATUS WINAPI OleQueryBounds(LPOLEOBJECT, RECT FAR*);
+OLESTATUS WINAPI OleQuerySize(LPOLEOBJECT, DWORD FAR*);
+OLESTATUS WINAPI OleDraw(LPOLEOBJECT, HDC, const RECT FAR*, const RECT FAR*, HDC);
+OLESTATUS WINAPI OleQueryOpen(LPOLEOBJECT);
+OLESTATUS WINAPI OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, const RECT FAR*);
+OLESTATUS WINAPI OleExecute(LPOLEOBJECT, HGLOBAL, UINT);
+OLESTATUS WINAPI OleClose(LPOLEOBJECT);
+OLESTATUS WINAPI OleUpdate(LPOLEOBJECT);
+OLESTATUS WINAPI OleReconnect(LPOLEOBJECT);
+OLESTATUS WINAPI OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE FAR*);
+OLESTATUS WINAPI OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE);
+void FAR* WINAPI OleQueryProtocol(LPOLEOBJECT, LPCSTR);
+
+/* Routines related to asynchronous operations. */
+OLESTATUS WINAPI OleQueryReleaseStatus(LPOLEOBJECT);
+OLESTATUS WINAPI OleQueryReleaseError(LPOLEOBJECT);
+OLE_RELEASE_METHOD WINAPI OleQueryReleaseMethod(LPOLEOBJECT);
+
+OLESTATUS WINAPI OleQueryType(LPOLEOBJECT, LONG FAR*);
+
+/* LOWORD is major version, HIWORD is minor version */
+DWORD WINAPI OleQueryClientVersion(void);
+DWORD WINAPI OleQueryServerVersion(void);
+
+/* Converting to format (as in clipboard): */
+OLECLIPFORMAT WINAPI OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT);
+OLESTATUS WINAPI OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE FAR*);
+OLESTATUS WINAPI OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE);
+OLESTATUS WINAPI OleQueryOutOfDate(LPOLEOBJECT);
+OLESTATUS WINAPI OleRequestData(LPOLEOBJECT, OLECLIPFORMAT);
+
+/* Query apis for creation from clipboard */
+OLESTATUS WINAPI OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT);
+OLESTATUS WINAPI OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT);
+
+/* Object creation functions */
+OLESTATUS WINAPI OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
+OLESTATUS WINAPI OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*);
+OLESTATUS WINAPI OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL);
+OLESTATUS WINAPI OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
+OLESTATUS WINAPI OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*);
+OLESTATUS WINAPI OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*);
+OLESTATUS WINAPI OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*);
+OLESTATUS WINAPI OleRename(LPOLEOBJECT, LPCSTR);
+OLESTATUS WINAPI OleQueryName(LPOLEOBJECT, LPSTR, UINT FAR*);
+OLESTATUS WINAPI OleRevokeObject(LPOLECLIENT);
+BOOL WINAPI OleIsDcMeta(HDC);
+
+/* client document API */
+OLESTATUS WINAPI OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC FAR*);
+OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC);
+OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC, LPCSTR);
+OLESTATUS WINAPI OleRevertClientDoc(LHCLIENTDOC);
+OLESTATUS WINAPI OleSavedClientDoc(LHCLIENTDOC);
+OLESTATUS WINAPI OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT FAR*);
+
+/* server usage definitions */
+typedef enum {
+ OLE_SERVER_MULTI, /* multiple instances */
+ OLE_SERVER_SINGLE /* single instance(multiple document) */
+} OLE_SERVER_USE;
+
+/* Server API */
+typedef struct _OLESERVER FAR* LPOLESERVER;
+
+OLESTATUS WINAPI OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER FAR*, HINSTANCE, OLE_SERVER_USE);
+OLESTATUS WINAPI OleRevokeServer(LHSERVER);
+OLESTATUS WINAPI OleBlockServer(LHSERVER);
+OLESTATUS WINAPI OleUnblockServer(LHSERVER, BOOL FAR*);
+
+/* APIs to keep server open */
+OLESTATUS WINAPI OleLockServer(LPOLEOBJECT, LHSERVER FAR*);
+OLESTATUS WINAPI OleUnlockServer(LHSERVER);
+
+/* Server document API */
+
+typedef struct _OLESERVERDOC FAR* LPOLESERVERDOC;
+
+OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC, LHSERVERDOC FAR*);
+OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC);
+OLESTATUS WINAPI OleRenameServerDoc(LHSERVERDOC, LPCSTR);
+OLESTATUS WINAPI OleRevertServerDoc(LHSERVERDOC);
+OLESTATUS WINAPI OleSavedServerDoc(LHSERVERDOC);
+
+typedef struct _OLESERVERVTBL
+{
+ OLESTATUS (CALLBACK* Open) (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC FAR*);
+ /* long handle to doc(privtate to DLL) */
+ /* lp to OLESERVER */
+ /* document name */
+ /* place holder for returning oledoc. */
+
+ OLESTATUS (CALLBACK* Create)(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC FAR*);
+ /* long handle to doc(privtate to DLL) */
+ /* lp to OLESERVER */
+ /* lp class name */
+ /* lp doc name */
+ /* place holder for returning oledoc. */
+
+ OLESTATUS (CALLBACK* CreateFromTemplate)(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC FAR*);
+ /* long handle to doc(privtate to DLL) */
+ /* lp to OLESERVER */
+ /* lp class name */
+ /* lp doc name */
+ /* lp template name */
+ /* place holder for returning oledoc. */
+
+ OLESTATUS (CALLBACK* Edit) (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC FAR*);
+ /* long handle to doc(privtate to DLL) */
+ /* lp to OLESERVER */
+ /* lp class name */
+ /* lp doc name */
+ /* place holder for returning oledoc. */
+
+ OLESTATUS (CALLBACK* Exit) (LPOLESERVER);
+ /* lp OLESERVER */
+
+ OLESTATUS (CALLBACK* Release) (LPOLESERVER);
+ /* lp OLESERVER */
+
+ OLESTATUS (CALLBACK* Execute)(LPOLESERVER, HGLOBAL);
+ /* lp OLESERVER */
+ /* handle to command strings */
+} OLESERVERVTBL;
+typedef OLESERVERVTBL FAR* LPOLESERVERVTBL;
+
+typedef struct _OLESERVER
+{
+ LPOLESERVERVTBL lpvtbl;
+} OLESERVER;
+
+typedef struct _OLESERVERDOCVTBL
+{
+ OLESTATUS (CALLBACK* Save) (LPOLESERVERDOC);
+ OLESTATUS (CALLBACK* Close) (LPOLESERVERDOC);
+ OLESTATUS (CALLBACK* SetHostNames)(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR);
+ OLESTATUS (CALLBACK* SetDocDimensions)(LPOLESERVERDOC, OLE_CONST RECT FAR*);
+ OLESTATUS (CALLBACK* GetObject) (LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT FAR*, LPOLECLIENT);
+ OLESTATUS (CALLBACK* Release) (LPOLESERVERDOC);
+ OLESTATUS (CALLBACK* SetColorScheme)(LPOLESERVERDOC, OLE_CONST LOGPALETTE FAR*);
+ OLESTATUS (CALLBACK* Execute) (LPOLESERVERDOC, HGLOBAL);
+} OLESERVERDOCVTBL;
+typedef OLESERVERDOCVTBL FAR* LPOLESERVERDOCVTBL;
+
+typedef struct _OLESERVERDOC
+{
+ LPOLESERVERDOCVTBL lpvtbl;
+} OLESERVERDOC;
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#ifdef WIN16
+#include <poppack.h>
+#endif
+
+#endif /* !_INC_OLE */
diff --git a/public/sdk/inc/ole2.h b/public/sdk/inc/ole2.h
new file mode 100644
index 000000000..8be2b18da
--- /dev/null
+++ b/public/sdk/inc/ole2.h
@@ -0,0 +1,344 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: OLE2.h
+// Contents: Main OLE2 header; Defines Linking and Emmebbeding interfaces, and API's.
+// Also includes .h files for the compobj, and oleauto subcomponents.
+//
+//----------------------------------------------------------------------------
+#if !defined( _OLE2_H_ )
+#define _OLE2_H_
+
+// Set packing to 8
+#include <pshpack8.h>
+
+// Make 100% sure WIN32 is defined
+#ifndef WIN32
+#define WIN32 100 // 100 == NT version 1.0
+#endif
+
+
+// SET to remove _export from interface definitions
+
+
+#include <winerror.h>
+
+#include <objbase.h>
+#include <oleauto.h>
+
+// View OBJECT Error Codes
+
+#define E_DRAW VIEW_E_DRAW
+
+// IDataObject Error Codes
+#define DATA_E_FORMATETC DV_E_FORMATETC
+
+
+
+
+
+// Common stuff gleamed from OLE.2,
+
+/* verbs */
+#define OLEIVERB_PRIMARY (0L)
+#define OLEIVERB_SHOW (-1L)
+#define OLEIVERB_OPEN (-2L)
+#define OLEIVERB_HIDE (-3L)
+#define OLEIVERB_UIACTIVATE (-4L)
+#define OLEIVERB_INPLACEACTIVATE (-5L)
+#define OLEIVERB_DISCARDUNDOSTATE (-6L)
+
+// for OleCreateEmbeddingHelper flags; roles in low word; options in high word
+#define EMBDHLP_INPROC_HANDLER 0x0000L
+#define EMBDHLP_INPROC_SERVER 0x0001L
+#define EMBDHLP_CREATENOW 0x00000000L
+#define EMBDHLP_DELAYCREATE 0x00010000L
+
+/* extended create function flags */
+#define OLECREATE_LEAVERUNNING 0x00000001
+
+/* pull in the MIDL generated header */
+
+#include <oleidl.h>
+
+
+
+
+
+
+/****** DV APIs ***********************************************************/
+
+
+WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
+
+
+
+
+
+
+
+/****** OLE API Prototypes ************************************************/
+
+WINOLEAPI_(DWORD) OleBuildVersion( VOID );
+
+/* helper functions */
+WINOLEAPI ReadClassStg(LPSTORAGE pStg, CLSID FAR* pclsid);
+WINOLEAPI WriteClassStg(LPSTORAGE pStg, REFCLSID rclsid);
+WINOLEAPI ReadClassStm(LPSTREAM pStm, CLSID FAR* pclsid);
+WINOLEAPI WriteClassStm(LPSTREAM pStm, REFCLSID rclsid);
+WINOLEAPI WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType);
+WINOLEAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT FAR* pcf, LPOLESTR FAR* lplpszUserType);
+
+
+/* init/term */
+
+WINOLEAPI OleInitialize(LPVOID pvReserved);
+WINOLEAPI_(void) OleUninitialize(void);
+
+
+/* APIs to query whether (Embedded/Linked) object can be created from
+ the data object */
+
+WINOLEAPI OleQueryLinkFromData(LPDATAOBJECT pSrcDataObject);
+WINOLEAPI OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
+
+
+/* Object creation APIs */
+
+WINOLEAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt,
+ LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
+ LPSTORAGE pStg, LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateEx(REFCLSID rclsid, REFIID riid, DWORD dwFlags,
+ DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
+ LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
+ DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
+ LPSTORAGE pStg, LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
+ DWORD renderopt, LPFORMATETC pFormatEtc,
+ LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
+ LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateFromDataEx(LPDATAOBJECT pSrcDataObj, REFIID riid,
+ DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
+ LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
+ DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
+ LPSTORAGE pStg, LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
+ DWORD renderopt, LPFORMATETC pFormatEtc,
+ LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
+ LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateLinkFromDataEx(LPDATAOBJECT pSrcDataObj, REFIID riid,
+ DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
+ LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
+ DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
+ LPSTORAGE pStg, LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
+ DWORD renderopt, LPFORMATETC pFormatEtc,
+ LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
+ LPVOID FAR* ppvObj);
+
+
+WINOLEAPI OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid,
+ DWORD renderopt, LPFORMATETC lpFormatEtc,
+ LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateLinkEx(LPMONIKER pmkLinkSrc, REFIID riid,
+ DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
+ LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
+ DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
+ LPSTORAGE pStg, LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid,
+ DWORD renderopt, LPFORMATETC lpFormatEtc,
+ LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateLinkToFileEx(LPCOLESTR lpszFileName, REFIID riid,
+ DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
+ LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
+ DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
+ LPSTORAGE pStg, LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
+ DWORD renderopt, LPFORMATETC lpFormatEtc,
+ LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
+
+WINOLEAPI OleCreateFromFileEx(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
+ DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
+ LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
+ DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
+ LPSTORAGE pStg, LPVOID FAR* ppvObj);
+
+WINOLEAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite,
+ LPVOID FAR* ppvObj);
+
+WINOLEAPI OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
+
+WINOLEAPI OleLoadFromStream( LPSTREAM pStm, REFIID iidInterface, LPVOID FAR* ppvObj);
+WINOLEAPI OleSaveToStream( LPPERSISTSTREAM pPStm, LPSTREAM pStm );
+
+
+WINOLEAPI OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
+WINOLEAPI OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible);
+
+
+/* Drag/Drop APIs */
+
+WINOLEAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget);
+WINOLEAPI RevokeDragDrop(HWND hwnd);
+WINOLEAPI DoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource,
+ DWORD dwOKEffects, LPDWORD pdwEffect);
+
+/* Clipboard APIs */
+
+WINOLEAPI OleSetClipboard(LPDATAOBJECT pDataObj);
+WINOLEAPI OleGetClipboard(LPDATAOBJECT FAR* ppDataObj);
+WINOLEAPI OleFlushClipboard(void);
+WINOLEAPI OleIsCurrentClipboard(LPDATAOBJECT pDataObj);
+
+
+/* InPlace Editing APIs */
+
+WINOLEAPI_(HOLEMENU) OleCreateMenuDescriptor (HMENU hmenuCombined,
+ LPOLEMENUGROUPWIDTHS lpMenuWidths);
+WINOLEAPI OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame,
+ HWND hwndActiveObject,
+ LPOLEINPLACEFRAME lpFrame,
+ LPOLEINPLACEACTIVEOBJECT lpActiveObj);
+WINOLEAPI OleDestroyMenuDescriptor (HOLEMENU holemenu);
+
+WINOLEAPI OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame,
+ LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg);
+
+
+/* Helper APIs */
+WINOLEAPI_(HANDLE) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat,
+ UINT uiFlags);
+
+WINOLEAPI OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw,
+ LPCRECT lprcBounds);
+
+WINOLEAPI OleRun(LPUNKNOWN pUnknown);
+WINOLEAPI_(BOOL) OleIsRunning(LPOLEOBJECT pObject);
+WINOLEAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses);
+WINOLEAPI_(void) ReleaseStgMedium(LPSTGMEDIUM);
+WINOLEAPI CreateOleAdviseHolder(LPOLEADVISEHOLDER FAR* ppOAHolder);
+
+WINOLEAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter,
+ REFIID riid, LPVOID FAR* lplpObj);
+
+WINOLEAPI OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter,
+ DWORD flags, LPCLASSFACTORY pCF,
+ REFIID riid, LPVOID FAR* lplpObj);
+
+WINOLEAPI_(BOOL) IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg,
+ WORD FAR* lpwCmd);
+/* Icon extraction Helper APIs */
+
+WINOLEAPI_(HGLOBAL) OleGetIconOfFile(LPOLESTR lpszPath, BOOL fUseFileAsLabel);
+
+WINOLEAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID rclsid, LPOLESTR lpszLabel,
+ BOOL fUseTypeAsLabel);
+
+WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel,
+ LPOLESTR lpszSourceFile, UINT iIconIndex);
+
+
+
+/* Registration Database Helper APIs */
+
+WINOLEAPI OleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType,
+ LPOLESTR FAR* pszUserType);
+
+WINOLEAPI OleRegGetMiscStatus (REFCLSID clsid, DWORD dwAspect,
+ DWORD FAR* pdwStatus);
+
+WINOLEAPI OleRegEnumFormatEtc (REFCLSID clsid, DWORD dwDirection,
+ LPENUMFORMATETC FAR* ppenum);
+
+WINOLEAPI OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB FAR* ppenum);
+
+
+
+
+
+/* OLE 1.0 conversion APIS */
+
+/***** OLE 1.0 OLESTREAM declarations *************************************/
+
+typedef struct _OLESTREAM FAR* LPOLESTREAM;
+
+typedef struct _OLESTREAMVTBL
+{
+ DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
+ DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD);
+} OLESTREAMVTBL;
+typedef OLESTREAMVTBL FAR* LPOLESTREAMVTBL;
+
+typedef struct _OLESTREAM
+{
+ LPOLESTREAMVTBL lpstbl;
+} OLESTREAM;
+
+
+WINOLEAPI OleConvertOLESTREAMToIStorage
+ (LPOLESTREAM lpolestream,
+ LPSTORAGE pstg,
+ const DVTARGETDEVICE FAR* ptd);
+
+WINOLEAPI OleConvertIStorageToOLESTREAM
+ (LPSTORAGE pstg,
+ LPOLESTREAM lpolestream);
+
+
+/* Storage Utility APIs */
+WINOLEAPI GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL FAR* phglobal);
+WINOLEAPI CreateILockBytesOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
+ LPLOCKBYTES FAR* pplkbyt);
+
+WINOLEAPI GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL FAR* phglobal);
+WINOLEAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
+ LPSTREAM FAR* ppstm);
+
+
+/* ConvertTo APIS */
+
+WINOLEAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew);
+WINOLEAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew);
+WINOLEAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew);
+WINOLEAPI GetConvertStg(LPSTORAGE pStg);
+WINOLEAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
+
+
+WINOLEAPI OleConvertIStorageToOLESTREAMEx
+ (LPSTORAGE pstg,
+ // Presentation data to OLESTREAM
+ CLIPFORMAT cfFormat, // format
+ LONG lWidth, // width
+ LONG lHeight, // height
+ DWORD dwSize, // size in bytes
+ LPSTGMEDIUM pmedium, // bits
+ LPOLESTREAM polestm);
+
+WINOLEAPI OleConvertOLESTREAMToIStorageEx
+ (LPOLESTREAM polestm,
+ LPSTORAGE pstg,
+ // Presentation data from OLESTREAM
+ CLIPFORMAT FAR* pcfFormat, // format
+ LONG FAR* plwWidth, // width
+ LONG FAR* plHeight, // height
+ DWORD FAR* pdwSize, // size in bytes
+ LPSTGMEDIUM pmedium); // bits
+
+#ifndef RC_INVOKED
+#include <poppack.h>
+#endif // RC_INVOKED
+
+#endif // __OLE2_H__
+
diff --git a/public/sdk/inc/ole2anac.h b/public/sdk/inc/ole2anac.h
new file mode 100644
index 000000000..d046acb66
--- /dev/null
+++ b/public/sdk/inc/ole2anac.h
@@ -0,0 +1,91 @@
+// ole2anac.h - anachronisms for pre-release code
+
+#if !defined( _OLE2ANAC_H_ )
+#define _OLE2ANAC_H_
+
+#define IIDEQ(riid1, riid2) IsEqualIID(riid1, riid2)
+#define CLSIDEQ(rclsid1, rclsid2) IsEqualCLSID(rclsid1, rclsid2)
+
+#define RetryRejectedCall RetryRejectedMessage
+
+#define FileTimeToDosDateTime(pft,pdd,pdt) CoFileTimeToDosDateTime(pft,pdd,pdt)
+#define DosDateTimeToFileTime(pdd,pdt,pft) CoDosDateTimeToFileTime(pdd,pdt,pft)
+
+typedef enum tagSTGSTATE
+{
+ STGSTATE_DOC = 1,
+ STGSTATE_CONVERT = 2,
+ STGSTATE_FILESTGSAME = 4
+} STGSTATE;
+
+
+#define MK_E_EXCEEDED_DEADLINE MK_E_EXCEEDEDDEADLINE
+#define MK_E_NEED_GENERIC MK_E_NEEDGENERIC
+#define MK_E_INVALID_EXTENSION MK_E_INVALIDEXTENSION
+#define MK_E_INTERMEDIATE_INTERFACE_NOT_SUPPORTED \
+ MK_E_INTERMEDIATEINTERFACENONOT_SUPPORTED
+#define MK_E_NOT_BINDABLE MK_E_NOTBINDABLE
+#define S_TRUE S_OK
+
+
+#define OLEMETHODCALLTYPE STDMETHODCALLTYPE
+#define OLEAPICALLTYPE STDAPICALLTYPE
+
+#define OLEAPI STDAPI
+#define OLEAPI_(type) STDAPI_(type)
+
+#define OLEMETHOD(method) STDMETHOD(method)
+#define OLEMETHOD_(type,method) STDMETHOD_(type,method)
+
+#define OLEMETHODIMP STDMETHODIMP
+#define OLEMETHODIMP_(type) STDMETHODIMP_(type)
+
+#define OLESTATIC_(type) static type __export
+#define OLESTATICIMP_(type) type __export
+
+
+#define E_BLANK OLE_E_BLANK
+#define E_STATIC OLE_E_STATIC
+#define E_NOTRUNNING OLE_E_NOTRUNNING
+#define E_FORMAT DV_E_CLIPFORMAT
+#define E_UNSPEC E_FAIL
+#define OLE_E_CLSID REGDB_E_CLASSNOTREG
+#define OLE_E_NOTSUPPORTED E_NOTIMPL
+#define OLE_E_REGDB_KEY REGDB_E_KEYMISSING
+#define OLE_E_REGDB_FMT REGDB_E_INVALIDVALUE
+
+
+#define OLEVERB_PRIMARY OLEIVERB_PRIMARY
+#define OLEVERB_SHOW OLEIVERB_SHOW
+
+#define DAdvise Advise
+#define DUnadvise Unadvise
+#define EnumDAdvise EnumAdvise
+
+
+// these DDE error codes are not returned anymore; these definitions are
+// here just to make existing code compile without changes.
+#define RPC_E_DDE_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_RPC, 0x100)
+
+#define RPC_E_DDE_BUSY (RPC_E_DDE_FIRST + 0x0)
+#define RPC_E_DDE_CANT_UPDATE (RPC_E_DDE_FIRST + 0x1)
+#define RPC_E_DDE_INIT (RPC_E_DDE_FIRST + 0x2)
+#define RPC_E_DDE_NACK E_FAIL
+#define RPC_E_DDE_LAUNCH CO_E_APPNOTFOUND
+#define RPC_E_DDE_POST RPC_E_SERVER_DIED
+#define RPC_E_DDE_PROTOCOL (RPC_E_DDE_FIRST + 0x6)
+#define RPC_E_DDE_REVOKE (RPC_E_DDE_FIRST + 0x7)
+#define RPC_E_DDE_SYNTAX_EXECUTE RPC_E_INVALID_PARAMETER
+#define RPC_E_DDE_SYNTAX_ITEM RPC_E_INVALID_PARAMETER
+#define RPC_E_DDE_UNEXP_MSG (RPC_E_DDE_FIRST + 0xa)
+#define RPC_E_DDE_DATA RPC_E_INVALID_PARAMETER
+
+
+#define RPC_E_CONNECTION_LOST (RPC_E_FIRST + 0x6)
+#define RPC_E_BUSY (RPC_E_FIRST + 0x0)
+#define RPC_E_MSG_REJECTED (RPC_E_FIRST + 0x1)
+#define RPC_E_CANCELLED (RPC_E_FIRST + 0x2)
+#define RPC_E_DISPATCH_ASYNCCALL (RPC_E_FIRST + 0x4)
+
+
+#endif // _OLE2ANAC_H_
diff --git a/public/sdk/inc/ole2dbg.h b/public/sdk/inc/ole2dbg.h
new file mode 100644
index 000000000..c5d20016c
--- /dev/null
+++ b/public/sdk/inc/ole2dbg.h
@@ -0,0 +1,19 @@
+/*
+ ole2dbg.h: This header file contains the function declarations for the publicly
+ exported debugging interfaces.
+
+ Include *after* standard OLE2 includes.
+
+ Copyright (c) 1992-1995, Microsoft Corp. All rights reserved.
+*/
+
+#ifndef __OLE2DBG_H
+#define __OLE2DBG_H
+
+STDAPI_(void) DbgDumpObject( IUnknown FAR * pUnk, DWORD dwReserved);
+STDAPI_(void) DbgDumpExternalObject( IUnknown FAR * pUnk, DWORD dwReserved );
+
+STDAPI_(BOOL) DbgIsObjectValid( IUnknown FAR * pUnk );
+STDAPI_(void) DbgDumpClassName( IUnknown FAR * pUnk );
+
+#endif
diff --git a/public/sdk/inc/ole2ver.h b/public/sdk/inc/ole2ver.h
new file mode 100644
index 000000000..f1b3fb9ce
--- /dev/null
+++ b/public/sdk/inc/ole2ver.h
@@ -0,0 +1,15 @@
+/*****************************************************************************\
+* *
+* ole2ver.h - OLE 2 Version Number Info *
+* *
+* Copyright (c) 1992-1996, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+#ifndef _OLE2VER_H_
+#define _OLE2VER_H_
+
+#define rmm 23
+#define rup 639
+
+#endif
diff --git a/public/sdk/inc/oleauto.h b/public/sdk/inc/oleauto.h
new file mode 100644
index 000000000..d251161af
--- /dev/null
+++ b/public/sdk/inc/oleauto.h
@@ -0,0 +1,771 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: oleauto.h
+//
+// Contents: Defines Ole Automation support function prototypes, constants
+//
+//----------------------------------------------------------------------------
+
+#if !defined( _OLEAUTO_H_ )
+#define _OLEAUTO_H_
+
+// Set packing to 8 for ISV, and Win95 support
+#ifndef RC_INVOKED
+#include <pshpack8.h>
+#endif // RC_INVOKED
+
+// Definition of the OLE Automation APIs, and macros.
+
+#ifdef _OLEAUT32_
+#define WINOLEAUTAPI STDAPI
+#define WINOLEAUTAPI_(type) STDAPI_(type)
+#else
+#define WINOLEAUTAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
+#define WINOLEAUTAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
+#endif
+
+EXTERN_C const IID IID_StdOle;
+
+#define STDOLE_MAJORVERNUM 0x1
+#define STDOLE_MINORVERNUM 0x0
+#define STDOLE_LCID 0x0000
+
+// Version # of stdole2.tlb
+#define STDOLE2_MAJORVERNUM 0x2
+#define STDOLE2_MINORVERNUM 0x0
+#define STDOLE2_LCID 0x0000
+
+/* if not already picked up from olenls.h */
+#ifndef _LCID_DEFINED
+typedef DWORD LCID;
+# define _LCID_DEFINED
+#endif
+
+#ifndef BEGIN_INTERFACE
+#define BEGIN_INTERFACE
+#define END_INTERFACE
+#endif
+
+/* pull in the MIDL generated header */
+#include <oaidl.h>
+
+
+/*---------------------------------------------------------------------*/
+/* BSTR API */
+/*---------------------------------------------------------------------*/
+
+WINOLEAUTAPI_(BSTR) SysAllocString(const OLECHAR *);
+WINOLEAUTAPI_(INT) SysReAllocString(BSTR *, const OLECHAR *);
+WINOLEAUTAPI_(BSTR) SysAllocStringLen(const OLECHAR *, UINT);
+WINOLEAUTAPI_(INT) SysReAllocStringLen(BSTR *, const OLECHAR *, UINT);
+WINOLEAUTAPI_(void) SysFreeString(BSTR);
+WINOLEAUTAPI_(UINT) SysStringLen(BSTR);
+
+#ifdef _WIN32
+WINOLEAUTAPI_(UINT) SysStringByteLen(BSTR bstr);
+WINOLEAUTAPI_(BSTR) SysAllocStringByteLen(LPCSTR psz, UINT len);
+#endif
+
+/*---------------------------------------------------------------------*/
+/* Time API */
+/*---------------------------------------------------------------------*/
+
+WINOLEAUTAPI_(INT) DosDateTimeToVariantTime(USHORT wDosDate, USHORT wDosTime, DOUBLE * pvtime);
+
+WINOLEAUTAPI_(INT) VariantTimeToDosDateTime(DOUBLE vtime, USHORT * pwDosDate, USHORT * pwDosTime);
+
+#ifdef _WIN32
+WINOLEAUTAPI_(INT) SystemTimeToVariantTime(LPSYSTEMTIME lpSystemTime, DOUBLE *pvtime);
+WINOLEAUTAPI_(INT) VariantTimeToSystemTime(DOUBLE vtime, LPSYSTEMTIME lpSystemTime);
+#endif
+
+
+/*---------------------------------------------------------------------*/
+/* SafeArray API */
+/*---------------------------------------------------------------------*/
+
+WINOLEAUTAPI SafeArrayAllocDescriptor(UINT cDims, SAFEARRAY ** ppsaOut);
+WINOLEAUTAPI SafeArrayAllocData(SAFEARRAY * psa);
+WINOLEAUTAPI_(SAFEARRAY *) SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND * rgsabound);
+WINOLEAUTAPI_(SAFEARRAY *) SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements);
+WINOLEAUTAPI SafeArrayCopyData(SAFEARRAY *psaSource, SAFEARRAY *psaTarget);
+WINOLEAUTAPI SafeArrayDestroyDescriptor(SAFEARRAY * psa);
+WINOLEAUTAPI SafeArrayDestroyData(SAFEARRAY * psa);
+WINOLEAUTAPI SafeArrayDestroy(SAFEARRAY * psa);
+WINOLEAUTAPI SafeArrayRedim(SAFEARRAY * psa, SAFEARRAYBOUND * psaboundNew);
+WINOLEAUTAPI_(UINT) SafeArrayGetDim(SAFEARRAY * psa);
+WINOLEAUTAPI_(UINT) SafeArrayGetElemsize(SAFEARRAY * psa);
+WINOLEAUTAPI SafeArrayGetUBound(SAFEARRAY * psa, UINT nDim, LONG * plUbound);
+WINOLEAUTAPI SafeArrayGetLBound(SAFEARRAY * psa, UINT nDim, LONG * plLbound);
+WINOLEAUTAPI SafeArrayLock(SAFEARRAY * psa);
+WINOLEAUTAPI SafeArrayUnlock(SAFEARRAY * psa);
+WINOLEAUTAPI SafeArrayAccessData(SAFEARRAY * psa, void HUGEP** ppvData);
+WINOLEAUTAPI SafeArrayUnaccessData(SAFEARRAY * psa);
+WINOLEAUTAPI SafeArrayGetElement(SAFEARRAY * psa, LONG * rgIndices, void * pv);
+WINOLEAUTAPI SafeArrayPutElement(SAFEARRAY * psa, LONG * rgIndices, void * pv);
+WINOLEAUTAPI SafeArrayCopy(SAFEARRAY * psa, SAFEARRAY ** ppsaOut);
+WINOLEAUTAPI SafeArrayPtrOfIndex(SAFEARRAY * psa, LONG * rgIndices, void ** ppvData);
+
+
+/*---------------------------------------------------------------------*/
+/* VARIANT API */
+/*---------------------------------------------------------------------*/
+
+WINOLEAUTAPI_(void) VariantInit(VARIANTARG * pvarg);
+WINOLEAUTAPI VariantClear(VARIANTARG * pvarg);
+WINOLEAUTAPI VariantCopy(VARIANTARG * pvargDest, VARIANTARG * pvargSrc);
+WINOLEAUTAPI VariantCopyInd(VARIANT * pvarDest, VARIANTARG * pvargSrc);
+WINOLEAUTAPI VariantChangeType(VARIANTARG * pvargDest,
+ VARIANTARG * pvarSrc, USHORT wFlags, VARTYPE vt);
+WINOLEAUTAPI VariantChangeTypeEx(VARIANTARG * pvargDest,
+ VARIANTARG * pvarSrc, LCID lcid, USHORT wFlags, VARTYPE vt);
+
+// Flags for VariantChangeType/VariantChangeTypeEx
+#define VARIANT_NOVALUEPROP 0x1
+#define VARIANT_ALPHABOOL 0x2 // For VT_BOOL to VT_BSTR conversions,
+ // convert to "True"/"False" instead of
+ // "-1"/"0"
+#define VARIANT_NOUSEROVERRIDE 0x4 // For conversions to/from VT_BSTR,
+ // passes LOCALE_NOUSEROVERRIDE
+ // to core coercion routines
+
+
+/*---------------------------------------------------------------------*/
+/* Vector <-> Bstr conversion APIs */
+/*---------------------------------------------------------------------*/
+
+WINOLEAUTAPI VectorFromBstr (BSTR bstr, SAFEARRAY ** ppsa);
+WINOLEAUTAPI BstrFromVector (SAFEARRAY *psa, BSTR *pbstr);
+
+
+/*---------------------------------------------------------------------*/
+/* VARTYPE Coercion API */
+/*---------------------------------------------------------------------*/
+
+/* Note: The routines that convert *from* a string are defined
+ * to take a OLECHAR* rather than a BSTR because no allocation is
+ * required, and this makes the routines a bit more generic.
+ * They may of course still be passed a BSTR as the strIn param.
+ */
+
+/* Any of the coersion functions that converts either from or to a string
+ * takes an additional lcid and dwFlags arguments. The lcid argument allows
+ * locale specific parsing to occur. The dwFlags allow additional function
+ * specific condition to occur. All function that accept the dwFlags argument
+ * can include either 0 or LOCALE_NOUSEROVERRIDE flag. In addition, the
+ * VarDateFromStr functions also accepts the VAR_TIMEVALUEONLY and
+ * VAR_DATEVALUEONLY flags
+ */
+
+#define VAR_TIMEVALUEONLY ((DWORD)0x00000001) /* return time value */
+#define VAR_DATEVALUEONLY ((DWORD)0x00000002) /* return date value */
+
+WINOLEAUTAPI VarUI1FromI2(SHORT sIn, BYTE * pbOut);
+WINOLEAUTAPI VarUI1FromI4(LONG lIn, BYTE * pbOut);
+WINOLEAUTAPI VarUI1FromR4(FLOAT fltIn, BYTE * pbOut);
+WINOLEAUTAPI VarUI1FromR8(DOUBLE dblIn, BYTE * pbOut);
+WINOLEAUTAPI VarUI1FromCy(CY cyIn, BYTE * pbOut);
+WINOLEAUTAPI VarUI1FromDate(DATE dateIn, BYTE * pbOut);
+WINOLEAUTAPI VarUI1FromStr(OLECHAR * strIn, LCID lcid, ULONG dwFlags, BYTE * pbOut);
+WINOLEAUTAPI VarUI1FromDisp(IDispatch * pdispIn, LCID lcid, BYTE * pbOut);
+WINOLEAUTAPI VarUI1FromBool(VARIANT_BOOL boolIn, BYTE * pbOut);
+WINOLEAUTAPI VarUI1FromI1(CHAR cIn, BYTE *pbOut);
+WINOLEAUTAPI VarUI1FromUI2(USHORT uiIn, BYTE *pbOut);
+WINOLEAUTAPI VarUI1FromUI4(ULONG ulIn, BYTE *pbOut);
+WINOLEAUTAPI VarUI1FromDec(DECIMAL *pdecIn, BYTE *pbOut);
+
+WINOLEAUTAPI VarI2FromUI1(BYTE bIn, SHORT * psOut);
+WINOLEAUTAPI VarI2FromI4(LONG lIn, SHORT * psOut);
+WINOLEAUTAPI VarI2FromR4(FLOAT fltIn, SHORT * psOut);
+WINOLEAUTAPI VarI2FromR8(DOUBLE dblIn, SHORT * psOut);
+WINOLEAUTAPI VarI2FromCy(CY cyIn, SHORT * psOut);
+WINOLEAUTAPI VarI2FromDate(DATE dateIn, SHORT * psOut);
+WINOLEAUTAPI VarI2FromStr(OLECHAR * strIn, LCID lcid, ULONG dwFlags, SHORT * psOut);
+WINOLEAUTAPI VarI2FromDisp(IDispatch * pdispIn, LCID lcid, SHORT * psOut);
+WINOLEAUTAPI VarI2FromBool(VARIANT_BOOL boolIn, SHORT * psOut);
+WINOLEAUTAPI VarI2FromI1(CHAR cIn, SHORT *psOut);
+WINOLEAUTAPI VarI2FromUI2(USHORT uiIn, SHORT *psOut);
+WINOLEAUTAPI VarI2FromUI4(ULONG ulIn, SHORT *psOut);
+WINOLEAUTAPI VarI2FromDec(DECIMAL *pdecIn, SHORT *psOut);
+
+WINOLEAUTAPI VarI4FromUI1(BYTE bIn, LONG * plOut);
+WINOLEAUTAPI VarI4FromI2(SHORT sIn, LONG * plOut);
+WINOLEAUTAPI VarI4FromR4(FLOAT fltIn, LONG * plOut);
+WINOLEAUTAPI VarI4FromR8(DOUBLE dblIn, LONG * plOut);
+WINOLEAUTAPI VarI4FromCy(CY cyIn, LONG * plOut);
+WINOLEAUTAPI VarI4FromDate(DATE dateIn, LONG * plOut);
+WINOLEAUTAPI VarI4FromStr(OLECHAR * strIn, LCID lcid, ULONG dwFlags, LONG * plOut);
+WINOLEAUTAPI VarI4FromDisp(IDispatch * pdispIn, LCID lcid, LONG * plOut);
+WINOLEAUTAPI VarI4FromBool(VARIANT_BOOL boolIn, LONG * plOut);
+WINOLEAUTAPI VarI4FromI1(CHAR cIn, LONG *plOut);
+WINOLEAUTAPI VarI4FromUI2(USHORT uiIn, LONG *plOut);
+WINOLEAUTAPI VarI4FromUI4(ULONG ulIn, LONG *plOut);
+WINOLEAUTAPI VarI4FromDec(DECIMAL *pdecIn, LONG *plOut);
+WINOLEAUTAPI VarI4FromInt(INT intIn, LONG *plOut);
+
+WINOLEAUTAPI VarR4FromUI1(BYTE bIn, FLOAT * pfltOut);
+WINOLEAUTAPI VarR4FromI2(SHORT sIn, FLOAT * pfltOut);
+WINOLEAUTAPI VarR4FromI4(LONG lIn, FLOAT * pfltOut);
+WINOLEAUTAPI VarR4FromR8(DOUBLE dblIn, FLOAT * pfltOut);
+WINOLEAUTAPI VarR4FromCy(CY cyIn, FLOAT * pfltOut);
+WINOLEAUTAPI VarR4FromDate(DATE dateIn, FLOAT * pfltOut);
+WINOLEAUTAPI VarR4FromStr(OLECHAR * strIn, LCID lcid, ULONG dwFlags, FLOAT *pfltOut);
+WINOLEAUTAPI VarR4FromDisp(IDispatch * pdispIn, LCID lcid, FLOAT * pfltOut);
+WINOLEAUTAPI VarR4FromBool(VARIANT_BOOL boolIn, FLOAT * pfltOut);
+WINOLEAUTAPI VarR4FromI1(CHAR cIn, FLOAT *pfltOut);
+WINOLEAUTAPI VarR4FromUI2(USHORT uiIn, FLOAT *pfltOut);
+WINOLEAUTAPI VarR4FromUI4(ULONG ulIn, FLOAT *pfltOut);
+WINOLEAUTAPI VarR4FromDec(DECIMAL *pdecIn, FLOAT *pfltOut);
+
+WINOLEAUTAPI VarR8FromUI1(BYTE bIn, DOUBLE * pdblOut);
+WINOLEAUTAPI VarR8FromI2(SHORT sIn, DOUBLE * pdblOut);
+WINOLEAUTAPI VarR8FromI4(LONG lIn, DOUBLE * pdblOut);
+WINOLEAUTAPI VarR8FromR4(FLOAT fltIn, DOUBLE * pdblOut);
+WINOLEAUTAPI VarR8FromCy(CY cyIn, DOUBLE * pdblOut);
+WINOLEAUTAPI VarR8FromDate(DATE dateIn, DOUBLE * pdblOut);
+WINOLEAUTAPI VarR8FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, DOUBLE *pdblOut);
+WINOLEAUTAPI VarR8FromDisp(IDispatch * pdispIn, LCID lcid, DOUBLE * pdblOut);
+WINOLEAUTAPI VarR8FromBool(VARIANT_BOOL boolIn, DOUBLE * pdblOut);
+WINOLEAUTAPI VarR8FromI1(CHAR cIn, DOUBLE *pdblOut);
+WINOLEAUTAPI VarR8FromUI2(USHORT uiIn, DOUBLE *pdblOut);
+WINOLEAUTAPI VarR8FromUI4(ULONG ulIn, DOUBLE *pdblOut);
+WINOLEAUTAPI VarR8FromDec(DECIMAL *pdecIn, DOUBLE *pdblOut);
+
+WINOLEAUTAPI VarDateFromUI1(BYTE bIn, DATE * pdateOut);
+WINOLEAUTAPI VarDateFromI2(SHORT sIn, DATE * pdateOut);
+WINOLEAUTAPI VarDateFromI4(LONG lIn, DATE * pdateOut);
+WINOLEAUTAPI VarDateFromR4(FLOAT fltIn, DATE * pdateOut);
+WINOLEAUTAPI VarDateFromR8(DOUBLE dblIn, DATE * pdateOut);
+WINOLEAUTAPI VarDateFromCy(CY cyIn, DATE * pdateOut);
+WINOLEAUTAPI VarDateFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, DATE *pdateOut);
+WINOLEAUTAPI VarDateFromDisp(IDispatch * pdispIn, LCID lcid, DATE * pdateOut);
+WINOLEAUTAPI VarDateFromBool(VARIANT_BOOL boolIn, DATE * pdateOut);
+WINOLEAUTAPI VarDateFromI1(CHAR cIn, DATE *pdateOut);
+WINOLEAUTAPI VarDateFromUI2(USHORT uiIn, DATE *pdateOut);
+WINOLEAUTAPI VarDateFromUI4(ULONG ulIn, DATE *pdateOut);
+WINOLEAUTAPI VarDateFromDec(DECIMAL *pdecIn, DATE *pdateOut);
+
+WINOLEAUTAPI VarCyFromUI1(BYTE bIn, CY * pcyOut);
+WINOLEAUTAPI VarCyFromI2(SHORT sIn, CY * pcyOut);
+WINOLEAUTAPI VarCyFromI4(LONG lIn, CY * pcyOut);
+WINOLEAUTAPI VarCyFromR4(FLOAT fltIn, CY * pcyOut);
+WINOLEAUTAPI VarCyFromR8(DOUBLE dblIn, CY * pcyOut);
+WINOLEAUTAPI VarCyFromDate(DATE dateIn, CY * pcyOut);
+WINOLEAUTAPI VarCyFromStr(OLECHAR * strIn, LCID lcid, ULONG dwFlags, CY * pcyOut);
+WINOLEAUTAPI VarCyFromDisp(IDispatch * pdispIn, LCID lcid, CY * pcyOut);
+WINOLEAUTAPI VarCyFromBool(VARIANT_BOOL boolIn, CY * pcyOut);
+WINOLEAUTAPI VarCyFromI1(CHAR cIn, CY *pcyOut);
+WINOLEAUTAPI VarCyFromUI2(USHORT uiIn, CY *pcyOut);
+WINOLEAUTAPI VarCyFromUI4(ULONG ulIn, CY *pcyOut);
+WINOLEAUTAPI VarCyFromDec(DECIMAL *pdecIn, CY *pcyOut);
+
+WINOLEAUTAPI VarBstrFromUI1(BYTE bVal, LCID lcid, ULONG dwFlags, BSTR * pbstrOut);
+WINOLEAUTAPI VarBstrFromI2(SHORT iVal, LCID lcid, ULONG dwFlags, BSTR * pbstrOut);
+WINOLEAUTAPI VarBstrFromI4(LONG lIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut);
+WINOLEAUTAPI VarBstrFromR4(FLOAT fltIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut);
+WINOLEAUTAPI VarBstrFromR8(DOUBLE dblIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut);
+WINOLEAUTAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut);
+WINOLEAUTAPI VarBstrFromDate(DATE dateIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut);
+WINOLEAUTAPI VarBstrFromDisp(IDispatch * pdispIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut);
+WINOLEAUTAPI VarBstrFromBool(VARIANT_BOOL boolIn, LCID lcid, ULONG dwFlags, BSTR * pbstrOut);
+WINOLEAUTAPI VarBstrFromI1(CHAR cIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut);
+WINOLEAUTAPI VarBstrFromUI2(USHORT uiIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut);
+WINOLEAUTAPI VarBstrFromUI4(ULONG ulIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut);
+WINOLEAUTAPI VarBstrFromDec(DECIMAL *pdecIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut);
+
+WINOLEAUTAPI VarBoolFromUI1(BYTE bIn, VARIANT_BOOL * pboolOut);
+WINOLEAUTAPI VarBoolFromI2(SHORT sIn, VARIANT_BOOL * pboolOut);
+WINOLEAUTAPI VarBoolFromI4(LONG lIn, VARIANT_BOOL * pboolOut);
+WINOLEAUTAPI VarBoolFromR4(FLOAT fltIn, VARIANT_BOOL * pboolOut);
+WINOLEAUTAPI VarBoolFromR8(DOUBLE dblIn, VARIANT_BOOL * pboolOut);
+WINOLEAUTAPI VarBoolFromDate(DATE dateIn, VARIANT_BOOL * pboolOut);
+WINOLEAUTAPI VarBoolFromCy(CY cyIn, VARIANT_BOOL * pboolOut);
+WINOLEAUTAPI VarBoolFromStr(OLECHAR * strIn, LCID lcid, ULONG dwFlags, VARIANT_BOOL * pboolOut);
+WINOLEAUTAPI VarBoolFromDisp(IDispatch * pdispIn, LCID lcid, VARIANT_BOOL * pboolOut);
+WINOLEAUTAPI VarBoolFromI1(CHAR cIn, VARIANT_BOOL *pboolOut);
+WINOLEAUTAPI VarBoolFromUI2(USHORT uiIn, VARIANT_BOOL *pboolOut);
+WINOLEAUTAPI VarBoolFromUI4(ULONG ulIn, VARIANT_BOOL *pboolOut);
+WINOLEAUTAPI VarBoolFromDec(DECIMAL *pdecIn, VARIANT_BOOL *pboolOut);
+
+WINOLEAUTAPI VarI1FromUI1(BYTE bIn, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromI2(SHORT uiIn, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromI4(LONG lIn, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromR4(FLOAT fltIn, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromR8(DOUBLE dblIn, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromDate(DATE dateIn, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromCy(CY cyIn, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromDisp(IDispatch *pdispIn, LCID lcid, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromBool(VARIANT_BOOL boolIn, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromUI2(USHORT uiIn, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromUI4(ULONG ulIn, CHAR *pcOut);
+WINOLEAUTAPI VarI1FromDec(DECIMAL *pdecIn, CHAR *pcOut);
+
+WINOLEAUTAPI VarUI2FromUI1(BYTE bIn, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromI2(SHORT uiIn, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromI4(LONG lIn, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromR4(FLOAT fltIn, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromR8(DOUBLE dblIn, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromDate(DATE dateIn, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromCy(CY cyIn, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromDisp(IDispatch *pdispIn, LCID lcid, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromBool(VARIANT_BOOL boolIn, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromI1(CHAR cIn, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromUI4(ULONG ulIn, USHORT *puiOut);
+WINOLEAUTAPI VarUI2FromDec(DECIMAL *pdecIn, USHORT *puiOut);
+
+WINOLEAUTAPI VarUI4FromUI1(BYTE bIn, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromI2(SHORT uiIn, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromI4(LONG lIn, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromR4(FLOAT fltIn, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromR8(DOUBLE dblIn, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromDate(DATE dateIn, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromCy(CY cyIn, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromDisp(IDispatch *pdispIn, LCID lcid, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromBool(VARIANT_BOOL boolIn, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromI1(CHAR cIn, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromUI2(USHORT uiIn, ULONG *pulOut);
+WINOLEAUTAPI VarUI4FromDec(DECIMAL *pdecIn, ULONG *pulOut);
+
+WINOLEAUTAPI VarDecFromUI1(BYTE bIn, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromI2(SHORT uiIn, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromI4(LONG lIn, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromR4(FLOAT fltIn, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromR8(DOUBLE dblIn, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromDate(DATE dateIn, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromCy(CY cyIn, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromDisp(IDispatch *pdispIn, LCID lcid, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromBool(VARIANT_BOOL boolIn, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromI1(CHAR cIn, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromUI2(USHORT uiIn, DECIMAL *pdecOut);
+WINOLEAUTAPI VarDecFromUI4(ULONG ulIn, DECIMAL *pdecOut);
+
+#define VarUI4FromUI4(in, pOut) (*(pOut) = (in))
+#define VarI4FromI4(in, pOut) (*(pOut) = (in))
+
+#define VarUI1FromInt VarUI1FromI4
+#define VarUI1FromUint VarUI1FromUI4
+#define VarI2FromInt VarI2FromI4
+#define VarI2FromUint VarI2FromUI4
+#define VarI4FromInt VarI4FromI4
+#define VarI4FromUint VarI4FromUI4
+#define VarR4FromInt VarR4FromI4
+#define VarR4FromUint VarR4FromUI4
+#define VarR8FromInt VarR8FromI4
+#define VarR8FromUint VarR8FromUI4
+#define VarDateFromInt VarDateFromI4
+#define VarDateFromUint VarDateFromUI4
+#define VarCyFromInt VarCyFromI4
+#define VarCyFromUint VarCyFromUI4
+#define VarBstrFromInt VarBstrFromI4
+#define VarBstrFromUint VarBstrFromUI4
+#define VarBoolFromInt VarBoolFromI4
+#define VarBoolFromUint VarBoolFromUI4
+#define VarI1FromInt VarI1FromI4
+#define VarI1FromUint VarI1FromUI4
+#define VarUI2FromInt VarUI2FromI4
+#define VarUI2FromUint VarUI2FromUI4
+#define VarUI4FromInt VarUI4FromI4
+#define VarUI4FromUint VarUI4FromUI4
+#define VarDecFromInt VarDecFromI4
+#define VarDecFromUint VarDecFromUI4
+#define VarIntFromUI1 VarI4FromUI1
+#define VarIntFromI2 VarI4FromI2
+#define VarIntFromI4 VarI4FromI4
+#define VarIntFromR4 VarI4FromR4
+#define VarIntFromR8 VarI4FromR8
+#define VarIntFromDate VarI4FromDate
+#define VarIntFromCy VarI4FromCy
+#define VarIntFromStr VarI4FromStr
+#define VarIntFromDisp VarI4FromDisp
+#define VarIntFromBool VarI4FromBool
+#define VarIntFromI1 VarI4FromI1
+#define VarIntFromUI2 VarI4FromUI2
+#define VarIntFromUI4 VarI4FromUI4
+#define VarIntFromDec VarI4FromDec
+#define VarIntFromUint VarI4FromUI4
+#define VarUintFromUI1 VarUI4FromUI1
+#define VarUintFromI2 VarUI4FromI2
+#define VarUintFromI4 VarUI4FromI4
+#define VarUintFromR4 VarUI4FromR4
+#define VarUintFromR8 VarUI4FromR8
+#define VarUintFromDate VarUI4FromDate
+#define VarUintFromCy VarUI4FromCy
+#define VarUintFromStr VarUI4FromStr
+#define VarUintFromDisp VarUI4FromDisp
+#define VarUintFromBool VarUI4FromBool
+#define VarUintFromI1 VarUI4FromI1
+#define VarUintFromUI2 VarUI4FromUI2
+#define VarUintFromUI4 VarUI4FromUI4
+#define VarUintFromDec VarUI4FromDec
+#define VarUintFromInt VarUI4FromI4
+
+/* Mac Note: On the Mac, the coersion functions support the
+ * Symantec C++ calling convention for float/double. To support
+ * float/double arguments compiled with the MPW C compiler,
+ * use the following APIs to move MPW float/double values into
+ * a VARIANT.
+ */
+
+/*---------------------------------------------------------------------*/
+/* New VARIANT <-> string parsing functions */
+/*---------------------------------------------------------------------*/
+
+typedef struct {
+ INT cDig;
+ ULONG dwInFlags;
+ ULONG dwOutFlags;
+ INT cchUsed;
+ INT nBaseShift;
+ INT nPwr10;
+} NUMPARSE;
+
+/* flags used by both dwInFlags and dwOutFlags:
+ */
+#define NUMPRS_LEADING_WHITE 0x0001
+#define NUMPRS_TRAILING_WHITE 0x0002
+#define NUMPRS_LEADING_PLUS 0x0004
+#define NUMPRS_TRAILING_PLUS 0x0008
+#define NUMPRS_LEADING_MINUS 0x0010
+#define NUMPRS_TRAILING_MINUS 0x0020
+#define NUMPRS_HEX_OCT 0x0040
+#define NUMPRS_PARENS 0x0080
+#define NUMPRS_DECIMAL 0x0100
+#define NUMPRS_THOUSANDS 0x0200
+#define NUMPRS_CURRENCY 0x0400
+#define NUMPRS_EXPONENT 0x0800
+#define NUMPRS_USE_ALL 0x1000
+#define NUMPRS_STD 0x1FFF
+
+/* flags used by dwOutFlags only:
+ */
+#define NUMPRS_NEG 0x10000
+#define NUMPRS_INEXACT 0x20000
+
+/* flags used by VarNumFromParseNum to indicate acceptable result types:
+ */
+#define VTBIT_I1 (1 << VT_I1)
+#define VTBIT_UI1 (1 << VT_UI1)
+#define VTBIT_I2 (1 << VT_I2)
+#define VTBIT_UI2 (1 << VT_UI2)
+#define VTBIT_I4 (1 << VT_I4)
+#define VTBIT_UI4 (1 << VT_UI4)
+#define VTBIT_R4 (1 << VT_R4)
+#define VTBIT_R8 (1 << VT_R8)
+#define VTBIT_CY (1 << VT_CY)
+#define VTBIT_DECIMAL (1 << VT_DECIMAL)
+
+
+WINOLEAUTAPI VarParseNumFromStr(OLECHAR * strIn, LCID lcid, ULONG dwFlags,
+ NUMPARSE * pnumprs, BYTE * rgbDig);
+
+WINOLEAUTAPI VarNumFromParseNum(NUMPARSE * pnumprs, BYTE * rgbDig,
+ ULONG dwVtBits, VARIANT * pvar);
+
+
+/*---------------------------------------------------------------------*/
+/* New date functions */
+/*---------------------------------------------------------------------*/
+
+#define VAR_VALIDDATE 0x0004 /* VarDateFromUdate() only */
+#define VAR_CALENDAR_HIJRI 0x0008 /* use Hijri calender */
+#define VARIANT_CALENDAR_HIJRI VAR_CALENDAR_HIJRI
+
+/* The UDATE structure is used with VarDateFromUdate() and VarUdateFromDate().
+ * It represents an "unpacked date".
+ */
+typedef struct {
+ SYSTEMTIME st;
+ USHORT wDayOfYear;
+} UDATE;
+
+/* APIs to "pack" and "unpack" dates.
+ */
+WINOLEAUTAPI VarDateFromUdate(UDATE *pudateIn, ULONG dwFlags, DATE *pdateOut);
+
+WINOLEAUTAPI VarUdateFromDate(DATE dateIn, ULONG dwFlags, UDATE *pudateOut);
+
+/* API to retrieve the secondary(altername) month names
+ Useful for Hijri, Polish and Russian alternate month names
+*/
+WINOLEAUTAPI GetAltMonthNames(LCID lcid, LPOLESTR * * prgp);
+
+
+
+/*---------------------------------------------------------------------*/
+/* ITypeLib */
+/*---------------------------------------------------------------------*/
+
+typedef ITypeLib * LPTYPELIB;
+
+
+/*---------------------------------------------------------------------*/
+/* ITypeInfo */
+/*---------------------------------------------------------------------*/
+
+
+typedef LONG DISPID;
+typedef DISPID MEMBERID;
+
+#define MEMBERID_NIL DISPID_UNKNOWN
+#define ID_DEFAULTINST -2
+
+
+/* Flags for IDispatch::Invoke */
+#define DISPATCH_METHOD 0x1
+#define DISPATCH_PROPERTYGET 0x2
+#define DISPATCH_PROPERTYPUT 0x4
+#define DISPATCH_PROPERTYPUTREF 0x8
+
+typedef ITypeInfo * LPTYPEINFO;
+
+
+/*---------------------------------------------------------------------*/
+/* ITypeComp */
+/*---------------------------------------------------------------------*/
+
+typedef ITypeComp * LPTYPECOMP;
+
+
+/*---------------------------------------------------------------------*/
+/* ICreateTypeLib */
+/*---------------------------------------------------------------------*/
+
+typedef ICreateTypeLib * LPCREATETYPELIB;
+
+typedef ICreateTypeInfo * LPCREATETYPEINFO;
+
+/*---------------------------------------------------------------------*/
+/* TypeInfo API */
+/*---------------------------------------------------------------------*/
+
+/* compute a 16bit hash value for the given name
+ */
+#ifdef _WIN32
+WINOLEAUTAPI_(ULONG) LHashValOfNameSysA(SYSKIND syskind, LCID lcid,
+ LPCSTR szName);
+#endif
+
+WINOLEAUTAPI_(ULONG)
+LHashValOfNameSys(SYSKIND syskind, LCID lcid, const OLECHAR * szName);
+
+#define LHashValOfName(lcid, szName) \
+ LHashValOfNameSys(SYS_WIN32, lcid, szName)
+
+#define WHashValOfLHashVal(lhashval) \
+ ((USHORT) (0x0000ffff & (lhashval)))
+
+#define IsHashValCompatible(lhashval1, lhashval2) \
+ ((BOOL) ((0x00ff0000 & (lhashval1)) == (0x00ff0000 & (lhashval2))))
+
+/* load the typelib from the file with the given filename
+ */
+WINOLEAUTAPI LoadTypeLib(const OLECHAR *szFile, ITypeLib ** pptlib);
+
+/* Control how a type library is registered
+ */
+typedef enum tagREGKIND
+{
+ REGKIND_DEFAULT,
+ REGKIND_REGISTER,
+ REGKIND_NONE
+} REGKIND;
+
+WINOLEAUTAPI LoadTypeLibEx(LPCOLESTR szFile, REGKIND regkind,
+ ITypeLib ** pptlib);
+
+/* load registered typelib
+ */
+WINOLEAUTAPI LoadRegTypeLib(REFGUID rguid, WORD wVerMajor, WORD wVerMinor,
+ LCID lcid, ITypeLib ** pptlib);
+
+/* get path to registered typelib
+ */
+WINOLEAUTAPI QueryPathOfRegTypeLib(REFGUID guid, USHORT wMaj, USHORT wMin,
+ LCID lcid, LPBSTR lpbstrPathName);
+
+/* add typelib to registry
+ */
+WINOLEAUTAPI RegisterTypeLib(ITypeLib * ptlib, OLECHAR *szFullPath,
+ OLECHAR *szHelpDir);
+
+/* remove typelib from registry
+ */
+
+WINOLEAUTAPI UnRegisterTypeLib(REFGUID libID, WORD wVerMajor,
+ WORD wVerMinor, LCID lcid, SYSKIND syskind);
+
+WINOLEAUTAPI CreateTypeLib(SYSKIND syskind, const OLECHAR *szFile,
+ ICreateTypeLib ** ppctlib);
+
+WINOLEAUTAPI CreateTypeLib2(SYSKIND syskind, LPCOLESTR szFile,
+ ICreateTypeLib2 **ppctlib);
+
+
+/*---------------------------------------------------------------------*/
+/* IDispatch implementation support */
+/*---------------------------------------------------------------------*/
+
+typedef IDispatch * LPDISPATCH;
+
+typedef struct tagPARAMDATA {
+ OLECHAR * szName; /* parameter name */
+ VARTYPE vt; /* parameter type */
+} PARAMDATA, * LPPARAMDATA;
+
+typedef struct tagMETHODDATA {
+ OLECHAR * szName; /* method name */
+ PARAMDATA * ppdata; /* pointer to an array of PARAMDATAs */
+ DISPID dispid; /* method ID */
+ UINT iMeth; /* method index */
+ CALLCONV cc; /* calling convention */
+ UINT cArgs; /* count of arguments */
+ WORD wFlags; /* same wFlags as on IDispatch::Invoke() */
+ VARTYPE vtReturn;
+} METHODDATA, * LPMETHODDATA;
+
+typedef struct tagINTERFACEDATA {
+ METHODDATA * pmethdata; /* pointer to an array of METHODDATAs */
+ UINT cMembers; /* count of members */
+} INTERFACEDATA, * LPINTERFACEDATA;
+
+
+
+/* Locate the parameter indicated by the given position, and
+ * return it coerced to the given target VARTYPE (vtTarg).
+ */
+WINOLEAUTAPI DispGetParam(DISPPARAMS * pdispparams, UINT position,
+ VARTYPE vtTarg, VARIANT * pvarResult, UINT * puArgErr);
+
+/* Automatic TypeInfo driven implementation of IDispatch::GetIDsOfNames()
+ */
+WINOLEAUTAPI DispGetIDsOfNames(ITypeInfo * ptinfo, OLECHAR ** rgszNames,
+ UINT cNames, DISPID * rgdispid);
+
+/* Automatic TypeInfo driven implementation of IDispatch::Invoke()
+ */
+WINOLEAUTAPI DispInvoke(void * _this, ITypeInfo * ptinfo, DISPID dispidMember,
+ WORD wFlags, DISPPARAMS * pparams, VARIANT * pvarResult,
+ EXCEPINFO * pexcepinfo, UINT * puArgErr);
+
+/* Construct a TypeInfo from an interface data description
+ */
+WINOLEAUTAPI CreateDispTypeInfo(INTERFACEDATA * pidata, LCID lcid,
+ ITypeInfo ** pptinfo);
+
+/* Create an instance of the standard TypeInfo driven IDispatch
+ * implementation.
+ */
+WINOLEAUTAPI CreateStdDispatch(IUnknown * punkOuter, void * pvThis,
+ ITypeInfo * ptinfo, IUnknown ** ppunkStdDisp);
+
+/* Low-level helper for IDispatch::Invoke() provides machine independence
+ * for customized Invoke().
+ */
+WINOLEAUTAPI DispCallFunc(void * pvInstance, ULONG oVft, CALLCONV cc,
+ VARTYPE vtReturn, UINT cActuals, VARTYPE * prgvt,
+ VARIANTARG ** prgpvarg, VARIANT * pvargResult);
+
+
+/*---------------------------------------------------------------------*/
+/* Active Object Registration API */
+/*---------------------------------------------------------------------*/
+
+/* flags for RegisterActiveObject */
+#define ACTIVEOBJECT_STRONG 0x0
+#define ACTIVEOBJECT_WEAK 0x1
+
+WINOLEAUTAPI RegisterActiveObject(IUnknown * punk, REFCLSID rclsid,
+ DWORD dwFlags, DWORD * pdwRegister);
+
+WINOLEAUTAPI RevokeActiveObject(DWORD dwRegister, void * pvReserved);
+
+WINOLEAUTAPI GetActiveObject(REFCLSID rclsid, void * pvReserved,
+ IUnknown ** ppunk);
+
+/*---------------------------------------------------------------------*/
+/* ErrorInfo API */
+/*---------------------------------------------------------------------*/
+
+WINOLEAUTAPI SetErrorInfo(ULONG dwReserved, IErrorInfo * perrinfo);
+WINOLEAUTAPI GetErrorInfo(ULONG dwReserved, IErrorInfo ** pperrinfo);
+WINOLEAUTAPI CreateErrorInfo(ICreateErrorInfo ** pperrinfo);
+
+/*---------------------------------------------------------------------*/
+/* MISC API */
+/*---------------------------------------------------------------------*/
+
+WINOLEAUTAPI_(ULONG) OaBuildVersion(void);
+
+WINOLEAUTAPI_(void) ClearCustData(LPCUSTDATA pCustData);
+
+// Declare variant access functions.
+
+#if __STDC__ || defined(NONAMELESSUNION)
+#define V_UNION(X, Y) ((X)->n1.n2.n3.Y)
+#define V_VT(X) ((X)->n1.n2.vt)
+#else
+#define V_UNION(X, Y) ((X)->Y)
+#define V_VT(X) ((X)->vt)
+#endif
+
+/* Variant access macros
+ */
+#define V_ISBYREF(X) (V_VT(X)&VT_BYREF)
+#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY)
+#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR)
+#define V_NONE(X) V_I2(X)
+
+#define V_UI1(X) V_UNION(X, bVal)
+#define V_UI1REF(X) V_UNION(X, pbVal)
+#define V_I2(X) V_UNION(X, iVal)
+#define V_I2REF(X) V_UNION(X, piVal)
+#define V_I4(X) V_UNION(X, lVal)
+#define V_I4REF(X) V_UNION(X, plVal)
+#define V_R4(X) V_UNION(X, fltVal)
+#define V_R4REF(X) V_UNION(X, pfltVal)
+#define V_R8(X) V_UNION(X, dblVal)
+#define V_R8REF(X) V_UNION(X, pdblVal)
+#define V_I1(X) V_UNION(X, cVal)
+#define V_I1REF(X) V_UNION(X, pcVal)
+#define V_UI2(X) V_UNION(X, uiVal)
+#define V_UI2REF(X) V_UNION(X, puiVal)
+#define V_UI4(X) V_UNION(X, ulVal)
+#define V_UI4REF(X) V_UNION(X, pulVal)
+#define V_INT(X) V_UNION(X, intVal)
+#define V_INTREF(X) V_UNION(X, pintVal)
+#define V_UINT(X) V_UNION(X, uintVal)
+#define V_UINTREF(X) V_UNION(X, puintVal)
+#define V_CY(X) V_UNION(X, cyVal)
+#define V_CYREF(X) V_UNION(X, pcyVal)
+#define V_DATE(X) V_UNION(X, date)
+#define V_DATEREF(X) V_UNION(X, pdate)
+#define V_BSTR(X) V_UNION(X, bstrVal)
+#define V_BSTRREF(X) V_UNION(X, pbstrVal)
+#define V_DISPATCH(X) V_UNION(X, pdispVal)
+#define V_DISPATCHREF(X) V_UNION(X, ppdispVal)
+#define V_ERROR(X) V_UNION(X, scode)
+#define V_ERRORREF(X) V_UNION(X, pscode)
+#define V_BOOL(X) V_UNION(X, boolVal)
+#define V_BOOLREF(X) V_UNION(X, pboolVal)
+#define V_UNKNOWN(X) V_UNION(X, punkVal)
+#define V_UNKNOWNREF(X) V_UNION(X, ppunkVal)
+#define V_VARIANTREF(X) V_UNION(X, pvarVal)
+#define V_ARRAY(X) V_UNION(X, parray)
+#define V_ARRAYREF(X) V_UNION(X, pparray)
+#define V_BYREF(X) V_UNION(X, byref)
+
+#define V_DECIMAL(X) V_UNION(X, decVal)
+#define V_DECIMALREF(X) V_UNION(X, pdecVal)
+
+#ifndef RC_INVOKED
+#include <poppack.h>
+#endif // RC_INVOKED
+
+#endif // __OLEAUTO_H__
diff --git a/public/sdk/inc/olecairo.h b/public/sdk/inc/olecairo.h
new file mode 100644
index 000000000..ed5c22869
--- /dev/null
+++ b/public/sdk/inc/olecairo.h
@@ -0,0 +1,96 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: olecairo.h
+//
+// Contents: Cairo OLE extensions
+//
+// Notes: This file will be merged into the main OLE include files later
+// so should not be included directly. Instead, include oleext.h
+// after defining either of the following symbols:
+//
+// _DCOM_ For distributed COM extensions
+// _CAIROSTG_ For Cairo storage extensions
+//
+//----------------------------------------------------------------------------
+
+#ifndef __OLECAIRO_H__
+#define __OLECAIRO_H__
+
+# if defined(_DCOM_)
+
+WINOLEAPI OleInitializeEx(LPVOID pvReserved, DWORD);
+
+
+// BUGBUG: [mikese] This is for DSYS only use. Functionality will get merged
+// back into CoGetPersistentInstance post Daytona
+
+WINOLEAPI CoGetPersistentInstanceEx(
+ REFIID riid,
+ DWORD dwCtrl,
+ DWORD grfMode,
+ OLECHAR *pwszName,
+ struct IStorage *pstg,
+ CLSID * pclsidOverride,
+ void **ppvUnk);
+
+# endif // of ifdef _DCOM_
+
+#define STGM_EDIT_ACCESS_RIGHTS 0x00000008L
+#define STGM_EDIT_AUDIT_ENTRIES 0x00000004L
+#define STGM_OVERLAPPED 0x02000000L
+#define STGM_NOCROSSJP 0x01000000L
+
+# if defined(_CAIROSTG_)
+
+WINOLEAPI StgCreateStorage(const OLECHAR FAR* pwcsName,
+ DWORD grfMode,
+ DWORD dwStgFmt,
+ LPSECURITY_ATTRIBUTES pssSecurity,
+ IStorage FAR * FAR *ppstg);
+
+WINOLEAPI StgCreateStorageEx (const WCHAR* pwcsName,
+ STGCREATE * pStgCreate,
+ STGOPEN * pStgOpen,
+ REFIID riid,
+ void ** ppObjectOpen);
+
+WINOLEAPI StgOpenStorageEx (const WCHAR *pwcsName,
+ STGOPEN * pStgOpen,
+ REFIID riid,
+ STGFMT * pStgfmt,
+ void ** ppObjectOpen);
+
+WINOLEAPI DsysStgCreateStorageEx (const WCHAR* pwcsName,
+ STGCREATE * pStgCreate,
+ STGOPEN * pStgOpen,
+ REFIID riid,
+ void ** ppObjectOpen);
+
+WINOLEAPI DsysStgOpenStorageEx (const WCHAR *pwcsName,
+ STGOPEN * pStgOpen,
+ REFIID riid,
+ STGFMT * pStgfmt,
+ void ** ppObjectOpen);
+
+
+# endif // of ifdef _CAIROSTG_
+
+#define TRACK_LOCALONLY 0x00000001L
+#define TRACK_INDEXEDONLY 0x00000002L
+#define TRACK_LASTONLY 0x00000004L
+#define TRACK_EXACTONLY 0x00000008L
+#define TRACK_REMOTEONLY 0x00000010L
+
+#define TRACK_FLAGS_MASK ( TRACK_LOCALONLY | \
+ TRACK_INDEXEDONLY | \
+ TRACK_LASTONLY | \
+ TRACK_EXACTONLY | \
+ TRACK_REMOTEONLY )
+
+
+WINOLEAPI CreateFileMonikerEx(DWORD dwTrackFlags, LPCOLESTR lpszPathName, LPMONIKER FAR* ppmk);
+
+#endif // of ifndef __OLECAIRO_H__
diff --git a/public/sdk/inc/olectl.h b/public/sdk/inc/olectl.h
new file mode 100644
index 000000000..4e3eb4715
--- /dev/null
+++ b/public/sdk/inc/olectl.h
@@ -0,0 +1,568 @@
+/////////////////////////////////////////////////////////////////////////////
+//
+// olectl.h OLE Control interfaces
+//
+// OLE Version 2.0
+//
+// Copyright (c) 1992-1996, Microsoft Corp. All rights reserved.
+//
+/////////////////////////////////////////////////////////////////////////////
+
+
+#ifndef _OLECTL_H_
+#define _OLECTL_H_
+
+#if !defined(__MKTYPLIB__) && !defined(__midl)
+
+#if defined(_MAC)
+#include <macocidl.h>
+#else // not _MAC
+
+#if !defined(RC_INVOKED)
+#pragma pack(8)
+#endif
+
+#include <ocidl.h>
+#endif // _MAC
+
+#ifdef _OLEAUT32_
+#define WINOLECTLAPI STDAPI
+#define WINOLECTLAPI_(type) STDAPI_(type)
+#else
+#define WINOLECTLAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
+#define WINOLECTLAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
+#endif
+
+#if !defined(INITGUID)
+
+DEFINE_GUID(IID_IPropertyFrame,
+ 0xB196B28A,0xBAB4,0x101A,0xB6,0x9C,0x00,0xAA,0x00,0x34,0x1D,0x07);
+
+//
+// Class IDs for property sheet implementations
+//
+
+DEFINE_GUID(CLSID_CFontPropPage,
+ 0x0be35200,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+DEFINE_GUID(CLSID_CColorPropPage,
+ 0x0be35201,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+DEFINE_GUID(CLSID_CPicturePropPage,
+ 0x0be35202,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+
+//
+// Class IDs for persistent property set formats
+//
+
+DEFINE_GUID(CLSID_PersistPropset,
+ 0xfb8f0821,0x0164,0x101b,0x84,0xed,0x08,0x00,0x2b,0x2e,0xc7,0x13);
+DEFINE_GUID(CLSID_ConvertVBX,
+ 0xfb8f0822,0x0164,0x101b,0x84,0xed,0x08,0x00,0x2b,0x2e,0xc7,0x13);
+
+//
+// Class ID for standard implementations of IFont and IPicture
+
+DEFINE_GUID(CLSID_StdFont,
+ 0x0be35203,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+DEFINE_GUID(CLSID_StdPicture,
+ 0x0be35204,0x8f91,0x11ce,0x9d,0xe3,0x00,0xaa,0x00,0x4b,0xb8,0x51);
+
+//
+// GUIDs for standard types
+//
+
+DEFINE_GUID(GUID_HIMETRIC,
+ 0x66504300,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_COLOR,
+ 0x66504301,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XPOSPIXEL,
+ 0x66504302,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YPOSPIXEL,
+ 0x66504303,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XSIZEPIXEL,
+ 0x66504304,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YSIZEPIXEL,
+ 0x66504305,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XPOS,
+ 0x66504306,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YPOS,
+ 0x66504307,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_XSIZE,
+ 0x66504308,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_YSIZE,
+ 0x66504309,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+
+#if !defined( __CGUID_H__ )
+DEFINE_GUID(GUID_TRISTATE,
+ 0x6650430A,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+#endif
+
+DEFINE_GUID(GUID_OPTIONVALUEEXCLUSIVE,
+ 0x6650430B,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_CHECKVALUEEXCLUSIVE,
+ 0x6650430C,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_FONTNAME,
+ 0x6650430D,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_FONTSIZE,
+ 0x6650430E,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_FONTBOLD,
+ 0x6650430F,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_FONTITALIC,
+ 0x66504310,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_FONTUNDERSCORE,
+ 0x66504311,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_FONTSTRIKETHROUGH,
+ 0x66504312,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+DEFINE_GUID(GUID_HANDLE,
+ 0x66504313,0xBE0F,0x101A,0x8B,0xBB,0x00,0xAA,0x00,0x30,0x0C,0xAB);
+
+#endif // INITGUID
+
+
+/////////////////////////////////////////////////////////////////////////////
+// OCPFIPARAMS structure - parameters for OleCreatePropertyFrameIndirect
+
+typedef struct tagOCPFIPARAMS
+{
+ ULONG cbStructSize;
+ HWND hWndOwner;
+ int x;
+ int y;
+ LPCOLESTR lpszCaption;
+ ULONG cObjects;
+ LPUNKNOWN FAR* lplpUnk;
+ ULONG cPages;
+ CLSID FAR* lpPages;
+ LCID lcid;
+ DISPID dispidInitialProperty;
+
+} OCPFIPARAMS, FAR* LPOCPFIPARAMS;
+
+
+/////////////////////////////////////////////////////////////////////////////
+// FONTDESC structure
+
+#define FONTSIZE(n) { n##0000, 0 }
+
+typedef struct tagFONTDESC
+{
+ UINT cbSizeofstruct;
+ LPOLESTR lpstrName;
+ CY cySize;
+ SHORT sWeight;
+ SHORT sCharset;
+ BOOL fItalic;
+ BOOL fUnderline;
+ BOOL fStrikethrough;
+
+} FONTDESC, FAR* LPFONTDESC;
+
+
+/////////////////////////////////////////////////////////////////////////////
+// PICTDESC structure
+
+#define PICTYPE_UNINITIALIZED (-1)
+#define PICTYPE_NONE 0
+#define PICTYPE_BITMAP 1
+#define PICTYPE_METAFILE 2
+#define PICTYPE_ICON 3
+#ifdef _WIN32
+#define PICTYPE_ENHMETAFILE 4
+#endif
+
+typedef struct tagPICTDESC
+{
+ UINT cbSizeofstruct;
+ UINT picType;
+ union
+ {
+ struct
+ {
+ HBITMAP hbitmap; // Bitmap
+ HPALETTE hpal; // Accompanying palette
+ } bmp;
+
+ struct
+ {
+ HMETAFILE hmeta; // Metafile
+ int xExt;
+ int yExt; // Extent
+ } wmf;
+
+ struct
+ {
+ HICON hicon; // Icon
+ } icon;
+
+#ifdef _WIN32
+ struct
+ {
+ HENHMETAFILE hemf; // Enhanced Metafile
+ } emf;
+#endif
+ };
+
+} PICTDESC, FAR* LPPICTDESC;
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Typedefs for standard scalar types
+
+typedef long OLE_XPOS_PIXELS;
+typedef long OLE_YPOS_PIXELS;
+typedef long OLE_XSIZE_PIXELS;
+typedef long OLE_YSIZE_PIXELS;
+typedef float OLE_XPOS_CONTAINER;
+typedef float OLE_YPOS_CONTAINER;
+typedef float OLE_XSIZE_CONTAINER;
+typedef float OLE_YSIZE_CONTAINER;
+typedef enum { triUnchecked = 0, triChecked = 1, triGray = 2 } OLE_TRISTATE;
+typedef VARIANT_BOOL OLE_OPTEXCLUSIVE;
+typedef VARIANT_BOOL OLE_CANCELBOOL;
+typedef VARIANT_BOOL OLE_ENABLEDEFAULTBOOL;
+
+/////////////////////////////////////////////////////////////////////////////
+// FACILITY_CONTROL status codes
+
+#ifndef FACILITY_CONTROL
+#define FACILITY_CONTROL 0xa
+#endif
+
+#define STD_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n)
+#define CTL_E_ILLEGALFUNCTIONCALL STD_CTL_SCODE(5)
+#define CTL_E_OVERFLOW STD_CTL_SCODE(6)
+#define CTL_E_OUTOFMEMORY STD_CTL_SCODE(7)
+#define CTL_E_DIVISIONBYZERO STD_CTL_SCODE(11)
+#define CTL_E_OUTOFSTRINGSPACE STD_CTL_SCODE(14)
+#define CTL_E_OUTOFSTACKSPACE STD_CTL_SCODE(28)
+#define CTL_E_BADFILENAMEORNUMBER STD_CTL_SCODE(52)
+#define CTL_E_FILENOTFOUND STD_CTL_SCODE(53)
+#define CTL_E_BADFILEMODE STD_CTL_SCODE(54)
+#define CTL_E_FILEALREADYOPEN STD_CTL_SCODE(55)
+#define CTL_E_DEVICEIOERROR STD_CTL_SCODE(57)
+#define CTL_E_FILEALREADYEXISTS STD_CTL_SCODE(58)
+#define CTL_E_BADRECORDLENGTH STD_CTL_SCODE(59)
+#define CTL_E_DISKFULL STD_CTL_SCODE(61)
+#define CTL_E_BADRECORDNUMBER STD_CTL_SCODE(63)
+#define CTL_E_BADFILENAME STD_CTL_SCODE(64)
+#define CTL_E_TOOMANYFILES STD_CTL_SCODE(67)
+#define CTL_E_DEVICEUNAVAILABLE STD_CTL_SCODE(68)
+#define CTL_E_PERMISSIONDENIED STD_CTL_SCODE(70)
+#define CTL_E_DISKNOTREADY STD_CTL_SCODE(71)
+#define CTL_E_PATHFILEACCESSERROR STD_CTL_SCODE(75)
+#define CTL_E_PATHNOTFOUND STD_CTL_SCODE(76)
+#define CTL_E_INVALIDPATTERNSTRING STD_CTL_SCODE(93)
+#define CTL_E_INVALIDUSEOFNULL STD_CTL_SCODE(94)
+#define CTL_E_INVALIDFILEFORMAT STD_CTL_SCODE(321)
+#define CTL_E_INVALIDPROPERTYVALUE STD_CTL_SCODE(380)
+#define CTL_E_INVALIDPROPERTYARRAYINDEX STD_CTL_SCODE(381)
+#define CTL_E_SETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(382)
+#define CTL_E_SETNOTSUPPORTED STD_CTL_SCODE(383)
+#define CTL_E_NEEDPROPERTYARRAYINDEX STD_CTL_SCODE(385)
+#define CTL_E_SETNOTPERMITTED STD_CTL_SCODE(387)
+#define CTL_E_GETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(393)
+#define CTL_E_GETNOTSUPPORTED STD_CTL_SCODE(394)
+#define CTL_E_PROPERTYNOTFOUND STD_CTL_SCODE(422)
+#define CTL_E_INVALIDCLIPBOARDFORMAT STD_CTL_SCODE(460)
+#define CTL_E_INVALIDPICTURE STD_CTL_SCODE(481)
+#define CTL_E_PRINTERERROR STD_CTL_SCODE(482)
+#define CTL_E_CANTSAVEFILETOTEMP STD_CTL_SCODE(735)
+#define CTL_E_SEARCHTEXTNOTFOUND STD_CTL_SCODE(744)
+#define CTL_E_REPLACEMENTSTOOLONG STD_CTL_SCODE(746)
+
+#define CUSTOM_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_CONTROL, n)
+#define CTL_E_CUSTOM_FIRST CUSTOM_CTL_SCODE(600)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// IClassFactory2 status codes
+
+#define CLASS_E_NOTLICENSED (CLASSFACTORY_E_FIRST+2)
+// class is not licensed for use
+
+
+/////////////////////////////////////////////////////////////////////////////
+// IConnectionPoint status codes
+
+#define CONNECT_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0200)
+#define CONNECT_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x020F)
+#define CONNECT_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+#define CONNECT_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+
+#define CONNECT_E_NOCONNECTION (CONNECT_E_FIRST+0)
+// there is no connection for this connection id
+
+#define CONNECT_E_ADVISELIMIT (CONNECT_E_FIRST+1)
+// this implementation's limit for advisory connections has been reached
+
+#define CONNECT_E_CANNOTCONNECT (CONNECT_E_FIRST+2)
+// connection attempt failed
+
+#define CONNECT_E_OVERRIDDEN (CONNECT_E_FIRST+3)
+// must use a derived interface to connect
+
+
+/////////////////////////////////////////////////////////////////////////////
+// DllRegisterServer/DllUnregisterServer status codes
+
+#define SELFREG_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0200)
+#define SELFREG_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x020F)
+#define SELFREG_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+#define SELFREG_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+
+#define SELFREG_E_TYPELIB (SELFREG_E_FIRST+0)
+// failed to register/unregister type library
+
+#define SELFREG_E_CLASS (SELFREG_E_FIRST+1)
+// failed to register/unregister class
+
+
+/////////////////////////////////////////////////////////////////////////////
+// IPerPropertyBrowsing status codes
+
+#define PERPROP_E_FIRST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x0200)
+#define PERPROP_E_LAST MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x020F)
+#define PERPROP_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x0200)
+#define PERPROP_S_LAST MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x020F)
+
+#define PERPROP_E_NOPAGEAVAILABLE (PERPROP_E_FIRST+0)
+// no page available for requested property
+
+
+/////////////////////////////////////////////////////////////////////////////
+// OLEMISC_ constants (they are also defined in the latest oleidl.h)
+
+#define OLEMISC_INVISIBLEATRUNTIME 0x00000400L
+#define OLEMISC_ALWAYSRUN 0x00000800L
+#define OLEMISC_ACTSLIKEBUTTON 0x00001000L
+#define OLEMISC_ACTSLIKELABEL 0x00002000L
+#define OLEMISC_NOUIACTIVATE 0x00004000L
+#define OLEMISC_ALIGNABLE 0x00008000L
+#define OLEMISC_SIMPLEFRAME 0x00010000L
+#define OLEMISC_SETCLIENTSITEFIRST 0x00020000L
+#define OLEMISC_IMEMODE 0x00040000L
+#define OLEMISC_WANTSTOMENUMERGE 0x00080000L
+
+
+/////////////////////////////////////////////////////////////////////////////
+// OLEIVERB_ constants
+
+#ifndef OLEIVERB_PROPERTIES
+#define OLEIVERB_PROPERTIES (-7L)
+#endif
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Variant type (VT_) tags for property sets
+
+#define VT_STREAMED_PROPSET 73 // [P] Stream contains a property set
+#define VT_STORED_PROPSET 74 // [P] Storage contains a property set
+#define VT_BLOB_PROPSET 75 // [P] Blob contains a property set
+#define VT_VERBOSE_ENUM 76 // [P] Enum value with text string
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Variant type (VT_) tags that are just aliases for others
+
+#define VT_COLOR VT_I4
+#define VT_XPOS_PIXELS VT_I4
+#define VT_YPOS_PIXELS VT_I4
+#define VT_XSIZE_PIXELS VT_I4
+#define VT_YSIZE_PIXELS VT_I4
+#define VT_XPOS_HIMETRIC VT_I4
+#define VT_YPOS_HIMETRIC VT_I4
+#define VT_XSIZE_HIMETRIC VT_I4
+#define VT_YSIZE_HIMETRIC VT_I4
+#define VT_TRISTATE VT_I2
+#define VT_OPTEXCLUSIVE VT_BOOL
+#define VT_FONT VT_DISPATCH
+#define VT_PICTURE VT_DISPATCH
+
+#ifdef _WIN32
+#define VT_HANDLE VT_I4
+#else
+#define VT_HANDLE VT_I2
+#endif
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Reflected Window Message IDs
+
+#define OCM__BASE (WM_USER+0x1c00)
+#define OCM_COMMAND (OCM__BASE + WM_COMMAND)
+
+#ifdef _WIN32
+#define OCM_CTLCOLORBTN (OCM__BASE + WM_CTLCOLORBTN)
+#define OCM_CTLCOLOREDIT (OCM__BASE + WM_CTLCOLOREDIT)
+#define OCM_CTLCOLORDLG (OCM__BASE + WM_CTLCOLORDLG)
+#define OCM_CTLCOLORLISTBOX (OCM__BASE + WM_CTLCOLORLISTBOX)
+#define OCM_CTLCOLORMSGBOX (OCM__BASE + WM_CTLCOLORMSGBOX)
+#define OCM_CTLCOLORSCROLLBAR (OCM__BASE + WM_CTLCOLORSCROLLBAR)
+#define OCM_CTLCOLORSTATIC (OCM__BASE + WM_CTLCOLORSTATIC)
+#else
+#define OCM_CTLCOLOR (OCM__BASE + WM_CTLCOLOR)
+#endif
+
+#define OCM_DRAWITEM (OCM__BASE + WM_DRAWITEM)
+#define OCM_MEASUREITEM (OCM__BASE + WM_MEASUREITEM)
+#define OCM_DELETEITEM (OCM__BASE + WM_DELETEITEM)
+#define OCM_VKEYTOITEM (OCM__BASE + WM_VKEYTOITEM)
+#define OCM_CHARTOITEM (OCM__BASE + WM_CHARTOITEM)
+#define OCM_COMPAREITEM (OCM__BASE + WM_COMPAREITEM)
+#define OCM_HSCROLL (OCM__BASE + WM_HSCROLL)
+#define OCM_VSCROLL (OCM__BASE + WM_VSCROLL)
+#define OCM_PARENTNOTIFY (OCM__BASE + WM_PARENTNOTIFY)
+
+#if (WINVER >= 0x0400)
+#define OCM_NOTIFY (OCM__BASE + WM_NOTIFY)
+#endif
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Self-registration APIs (to be implemented by server DLL)
+
+STDAPI DllRegisterServer(void);
+STDAPI DllUnregisterServer(void);
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Property frame APIs
+
+WINOLECTLAPI OleCreatePropertyFrame(HWND hwndOwner, UINT x, UINT y,
+ LPCOLESTR lpszCaption, ULONG cObjects, LPUNKNOWN FAR* ppUnk, ULONG cPages,
+ LPCLSID pPageClsID, LCID lcid, DWORD dwReserved, LPVOID pvReserved);
+
+WINOLECTLAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams);
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard type APIs
+
+WINOLECTLAPI OleTranslateColor(OLE_COLOR clr, HPALETTE hpal,
+ COLORREF* lpcolorref);
+
+WINOLECTLAPI OleCreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid,
+ LPVOID FAR* lplpvObj);
+
+WINOLECTLAPI OleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid,
+ BOOL fOwn, LPVOID FAR* lplpvObj);
+
+WINOLECTLAPI OleLoadPicture(LPSTREAM lpstream, LONG lSize, BOOL fRunmode,
+ REFIID riid, LPVOID FAR* lplpvObj);
+
+WINOLECTLAPI OleLoadPictureFile(VARIANT varFileName,
+ LPDISPATCH* lplpdispPicture);
+
+WINOLECTLAPI OleSavePictureFile(LPDISPATCH lpdispPicture,
+ BSTR bstrFileName);
+
+WINOLECTLAPI OleLoadPicturePath(LPOLESTR szUrl, LPUNKNOWN punkCaller,
+ DWORD dwFlags, OLE_COLOR clrBackgnd, REFIID, LPVOID * );
+
+#define OPCTPATH_DEFAULTS 0 // SYNC | AUTHORTIME | OPAQUE
+#define OPCTPATH_ASYNCHRONOUS 1
+#define OPCTPATH_RUNTIME 2
+#define OPCTPATH_RESERVED1 4
+
+WINOLECTLAPI_(HCURSOR) OleIconToCursor(HINSTANCE hinstExe, HICON hIcon);
+
+
+#if !defined(_MAC) && !defined(RC_INVOKED)
+#pragma pack()
+#endif
+
+#endif // !(defined(__MKTYPLIB__) && !defined(__midl))
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Standard dispatch ID constants
+
+#define DISPID_AUTOSIZE (-500)
+#define DISPID_BACKCOLOR (-501)
+#define DISPID_BACKSTYLE (-502)
+#define DISPID_BORDERCOLOR (-503)
+#define DISPID_BORDERSTYLE (-504)
+#define DISPID_BORDERWIDTH (-505)
+#define DISPID_DRAWMODE (-507)
+#define DISPID_DRAWSTYLE (-508)
+#define DISPID_DRAWWIDTH (-509)
+#define DISPID_FILLCOLOR (-510)
+#define DISPID_FILLSTYLE (-511)
+#define DISPID_FONT (-512)
+#define DISPID_FORECOLOR (-513)
+#define DISPID_ENABLED (-514)
+#define DISPID_HWND (-515)
+#define DISPID_TABSTOP (-516)
+#define DISPID_TEXT (-517)
+#define DISPID_CAPTION (-518)
+#define DISPID_BORDERVISIBLE (-519)
+#define DISPID_APPEARANCE (-520)
+#define DISPID_READYSTATE (-525)
+
+#define DISPID_REFRESH (-550)
+#define DISPID_DOCLICK (-551)
+#define DISPID_ABOUTBOX (-552)
+
+#define DISPID_CLICK (-600)
+#define DISPID_DBLCLICK (-601)
+#define DISPID_KEYDOWN (-602)
+#define DISPID_KEYPRESS (-603)
+#define DISPID_KEYUP (-604)
+#define DISPID_MOUSEDOWN (-605)
+#define DISPID_MOUSEMOVE (-606)
+#define DISPID_MOUSEUP (-607)
+#define DISPID_ERROREVENT (-608)
+#define DISPID_READYSTATECHANGE (-609)
+
+#define DISPID_AMBIENT_BACKCOLOR (-701)
+#define DISPID_AMBIENT_DISPLAYNAME (-702)
+#define DISPID_AMBIENT_FONT (-703)
+#define DISPID_AMBIENT_FORECOLOR (-704)
+#define DISPID_AMBIENT_LOCALEID (-705)
+#define DISPID_AMBIENT_MESSAGEREFLECT (-706)
+#define DISPID_AMBIENT_SCALEUNITS (-707)
+#define DISPID_AMBIENT_TEXTALIGN (-708)
+#define DISPID_AMBIENT_USERMODE (-709)
+#define DISPID_AMBIENT_UIDEAD (-710)
+#define DISPID_AMBIENT_SHOWGRABHANDLES (-711)
+#define DISPID_AMBIENT_SHOWHATCHING (-712)
+#define DISPID_AMBIENT_DISPLAYASDEFAULT (-713)
+#define DISPID_AMBIENT_SUPPORTSMNEMONICS (-714)
+#define DISPID_AMBIENT_AUTOCLIP (-715)
+#define DISPID_AMBIENT_APPEARANCE (-716)
+
+#define DISPID_Name (-800)
+#define DISPID_Delete (-801)
+#define DISPID_Object (-802)
+#define DISPID_Parent (-803)
+
+/////////////////////////////////////////////////////////////////////////////
+// Dispatch ID constants for font and picture types
+
+#define DISPID_FONT_NAME 0
+#define DISPID_FONT_SIZE 2
+#define DISPID_FONT_BOLD 3
+#define DISPID_FONT_ITALIC 4
+#define DISPID_FONT_UNDER 5
+#define DISPID_FONT_STRIKE 6
+#define DISPID_FONT_WEIGHT 7
+#define DISPID_FONT_CHARSET 8
+
+#define DISPID_PICT_HANDLE 0
+#define DISPID_PICT_HPAL 2
+#define DISPID_PICT_TYPE 3
+#define DISPID_PICT_WIDTH 4
+#define DISPID_PICT_HEIGHT 5
+#define DISPID_PICT_RENDER 6
+
+
+#if defined(__MKTYPLIB__) || defined(__midl)
+
+/////////////////////////////////////////////////////////////////////////////
+// Names of modules containing type libraries for standard types
+
+#define STDOLE_TLB "stdole32.tlb"
+#define STDTYPE_TLB "olepro32.dll"
+
+#endif // defined(__MKTYPLIB__) || defined(__midl)
+
+#endif // _OLECTL_H_
diff --git a/public/sdk/inc/olectlid.h b/public/sdk/inc/olectlid.h
new file mode 100644
index 000000000..dd06e3c3e
--- /dev/null
+++ b/public/sdk/inc/olectlid.h
@@ -0,0 +1,12 @@
+/*****************************************************************************\
+* *
+* olectlid.h Master definition of GUIDs for OLE Controls *
+* *
+* OLE Version 2.0 *
+* *
+* Copyright (c) 1992-1996, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+#pragma message("WARNING: your code should #include olectl.h instead")
+#include <olectl.h>
diff --git a/public/sdk/inc/oledb.h b/public/sdk/inc/oledb.h
new file mode 100644
index 000000000..cb64d460f
--- /dev/null
+++ b/public/sdk/inc/oledb.h
@@ -0,0 +1,9520 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:42:26 1996
+ */
+/* Compiler settings for oledb.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __oledb_h__
+#define __oledb_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IAccessor_FWD_DEFINED__
+#define __IAccessor_FWD_DEFINED__
+typedef interface IAccessor IAccessor;
+#endif /* __IAccessor_FWD_DEFINED__ */
+
+
+#ifndef __IRowset_FWD_DEFINED__
+#define __IRowset_FWD_DEFINED__
+typedef interface IRowset IRowset;
+#endif /* __IRowset_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetInfo_FWD_DEFINED__
+#define __IRowsetInfo_FWD_DEFINED__
+typedef interface IRowsetInfo IRowsetInfo;
+#endif /* __IRowsetInfo_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetLocate_FWD_DEFINED__
+#define __IRowsetLocate_FWD_DEFINED__
+typedef interface IRowsetLocate IRowsetLocate;
+#endif /* __IRowsetLocate_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetResynch_FWD_DEFINED__
+#define __IRowsetResynch_FWD_DEFINED__
+typedef interface IRowsetResynch IRowsetResynch;
+#endif /* __IRowsetResynch_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetScroll_FWD_DEFINED__
+#define __IRowsetScroll_FWD_DEFINED__
+typedef interface IRowsetScroll IRowsetScroll;
+#endif /* __IRowsetScroll_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetExactScroll_FWD_DEFINED__
+#define __IRowsetExactScroll_FWD_DEFINED__
+typedef interface IRowsetExactScroll IRowsetExactScroll;
+#endif /* __IRowsetExactScroll_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetChange_FWD_DEFINED__
+#define __IRowsetChange_FWD_DEFINED__
+typedef interface IRowsetChange IRowsetChange;
+#endif /* __IRowsetChange_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetUpdate_FWD_DEFINED__
+#define __IRowsetUpdate_FWD_DEFINED__
+typedef interface IRowsetUpdate IRowsetUpdate;
+#endif /* __IRowsetUpdate_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetNextRowset_FWD_DEFINED__
+#define __IRowsetNextRowset_FWD_DEFINED__
+typedef interface IRowsetNextRowset IRowsetNextRowset;
+#endif /* __IRowsetNextRowset_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetDelete_FWD_DEFINED__
+#define __IRowsetDelete_FWD_DEFINED__
+typedef interface IRowsetDelete IRowsetDelete;
+#endif /* __IRowsetDelete_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetDeleteBookmarks_FWD_DEFINED__
+#define __IRowsetDeleteBookmarks_FWD_DEFINED__
+typedef interface IRowsetDeleteBookmarks IRowsetDeleteBookmarks;
+#endif /* __IRowsetDeleteBookmarks_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetIdentity_FWD_DEFINED__
+#define __IRowsetIdentity_FWD_DEFINED__
+typedef interface IRowsetIdentity IRowsetIdentity;
+#endif /* __IRowsetIdentity_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetLockRows_FWD_DEFINED__
+#define __IRowsetLockRows_FWD_DEFINED__
+typedef interface IRowsetLockRows IRowsetLockRows;
+#endif /* __IRowsetLockRows_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetNewRow_FWD_DEFINED__
+#define __IRowsetNewRow_FWD_DEFINED__
+typedef interface IRowsetNewRow IRowsetNewRow;
+#endif /* __IRowsetNewRow_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetNewRowAfter_FWD_DEFINED__
+#define __IRowsetNewRowAfter_FWD_DEFINED__
+typedef interface IRowsetNewRowAfter IRowsetNewRowAfter;
+#endif /* __IRowsetNewRowAfter_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetWithParameters_FWD_DEFINED__
+#define __IRowsetWithParameters_FWD_DEFINED__
+typedef interface IRowsetWithParameters IRowsetWithParameters;
+#endif /* __IRowsetWithParameters_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetFind_FWD_DEFINED__
+#define __IRowsetFind_FWD_DEFINED__
+typedef interface IRowsetFind IRowsetFind;
+#endif /* __IRowsetFind_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetAsynch_FWD_DEFINED__
+#define __IRowsetAsynch_FWD_DEFINED__
+typedef interface IRowsetAsynch IRowsetAsynch;
+#endif /* __IRowsetAsynch_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetKeys_FWD_DEFINED__
+#define __IRowsetKeys_FWD_DEFINED__
+typedef interface IRowsetKeys IRowsetKeys;
+#endif /* __IRowsetKeys_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetNotify_FWD_DEFINED__
+#define __IRowsetNotify_FWD_DEFINED__
+typedef interface IRowsetNotify IRowsetNotify;
+#endif /* __IRowsetNotify_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetIndex_FWD_DEFINED__
+#define __IRowsetIndex_FWD_DEFINED__
+typedef interface IRowsetIndex IRowsetIndex;
+#endif /* __IRowsetIndex_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetWatchAll_FWD_DEFINED__
+#define __IRowsetWatchAll_FWD_DEFINED__
+typedef interface IRowsetWatchAll IRowsetWatchAll;
+#endif /* __IRowsetWatchAll_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetWatchNotify_FWD_DEFINED__
+#define __IRowsetWatchNotify_FWD_DEFINED__
+typedef interface IRowsetWatchNotify IRowsetWatchNotify;
+#endif /* __IRowsetWatchNotify_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetWatchRegion_FWD_DEFINED__
+#define __IRowsetWatchRegion_FWD_DEFINED__
+typedef interface IRowsetWatchRegion IRowsetWatchRegion;
+#endif /* __IRowsetWatchRegion_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetCopyRows_FWD_DEFINED__
+#define __IRowsetCopyRows_FWD_DEFINED__
+typedef interface IRowsetCopyRows IRowsetCopyRows;
+#endif /* __IRowsetCopyRows_FWD_DEFINED__ */
+
+
+#ifndef __IReadData_FWD_DEFINED__
+#define __IReadData_FWD_DEFINED__
+typedef interface IReadData IReadData;
+#endif /* __IReadData_FWD_DEFINED__ */
+
+
+#ifndef __ICommand_FWD_DEFINED__
+#define __ICommand_FWD_DEFINED__
+typedef interface ICommand ICommand;
+#endif /* __ICommand_FWD_DEFINED__ */
+
+
+#ifndef __ICommandCost_FWD_DEFINED__
+#define __ICommandCost_FWD_DEFINED__
+typedef interface ICommandCost ICommandCost;
+#endif /* __ICommandCost_FWD_DEFINED__ */
+
+
+#ifndef __ICommandPrepare_FWD_DEFINED__
+#define __ICommandPrepare_FWD_DEFINED__
+typedef interface ICommandPrepare ICommandPrepare;
+#endif /* __ICommandPrepare_FWD_DEFINED__ */
+
+
+#ifndef __ICommandProperties_FWD_DEFINED__
+#define __ICommandProperties_FWD_DEFINED__
+typedef interface ICommandProperties ICommandProperties;
+#endif /* __ICommandProperties_FWD_DEFINED__ */
+
+
+#ifndef __ICommandText_FWD_DEFINED__
+#define __ICommandText_FWD_DEFINED__
+typedef interface ICommandText ICommandText;
+#endif /* __ICommandText_FWD_DEFINED__ */
+
+
+#ifndef __ICommandTree_FWD_DEFINED__
+#define __ICommandTree_FWD_DEFINED__
+typedef interface ICommandTree ICommandTree;
+#endif /* __ICommandTree_FWD_DEFINED__ */
+
+
+#ifndef __ICommandValidate_FWD_DEFINED__
+#define __ICommandValidate_FWD_DEFINED__
+typedef interface ICommandValidate ICommandValidate;
+#endif /* __ICommandValidate_FWD_DEFINED__ */
+
+
+#ifndef __ICommandWithParameters_FWD_DEFINED__
+#define __ICommandWithParameters_FWD_DEFINED__
+typedef interface ICommandWithParameters ICommandWithParameters;
+#endif /* __ICommandWithParameters_FWD_DEFINED__ */
+
+
+#ifndef __IQuery_FWD_DEFINED__
+#define __IQuery_FWD_DEFINED__
+typedef interface IQuery IQuery;
+#endif /* __IQuery_FWD_DEFINED__ */
+
+
+#ifndef __IColumnsRowset_FWD_DEFINED__
+#define __IColumnsRowset_FWD_DEFINED__
+typedef interface IColumnsRowset IColumnsRowset;
+#endif /* __IColumnsRowset_FWD_DEFINED__ */
+
+
+#ifndef __IColumnsInfo_FWD_DEFINED__
+#define __IColumnsInfo_FWD_DEFINED__
+typedef interface IColumnsInfo IColumnsInfo;
+#endif /* __IColumnsInfo_FWD_DEFINED__ */
+
+
+#ifndef __IDBCreateCommand_FWD_DEFINED__
+#define __IDBCreateCommand_FWD_DEFINED__
+typedef interface IDBCreateCommand IDBCreateCommand;
+#endif /* __IDBCreateCommand_FWD_DEFINED__ */
+
+
+#ifndef __IDBEnumerateSources_FWD_DEFINED__
+#define __IDBEnumerateSources_FWD_DEFINED__
+typedef interface IDBEnumerateSources IDBEnumerateSources;
+#endif /* __IDBEnumerateSources_FWD_DEFINED__ */
+
+
+#ifndef __IDBInfo_FWD_DEFINED__
+#define __IDBInfo_FWD_DEFINED__
+typedef interface IDBInfo IDBInfo;
+#endif /* __IDBInfo_FWD_DEFINED__ */
+
+
+#ifndef __IDBInitialize_FWD_DEFINED__
+#define __IDBInitialize_FWD_DEFINED__
+typedef interface IDBInitialize IDBInitialize;
+#endif /* __IDBInitialize_FWD_DEFINED__ */
+
+
+#ifndef __IIndexDefinition_FWD_DEFINED__
+#define __IIndexDefinition_FWD_DEFINED__
+typedef interface IIndexDefinition IIndexDefinition;
+#endif /* __IIndexDefinition_FWD_DEFINED__ */
+
+
+#ifndef __ITableDefinition_FWD_DEFINED__
+#define __ITableDefinition_FWD_DEFINED__
+typedef interface ITableDefinition ITableDefinition;
+#endif /* __ITableDefinition_FWD_DEFINED__ */
+
+
+#ifndef __IOpenRowset_FWD_DEFINED__
+#define __IOpenRowset_FWD_DEFINED__
+typedef interface IOpenRowset IOpenRowset;
+#endif /* __IOpenRowset_FWD_DEFINED__ */
+
+
+#ifndef __IDBSchemaCommand_FWD_DEFINED__
+#define __IDBSchemaCommand_FWD_DEFINED__
+typedef interface IDBSchemaCommand IDBSchemaCommand;
+#endif /* __IDBSchemaCommand_FWD_DEFINED__ */
+
+
+#ifndef __IDBSchemaRowset_FWD_DEFINED__
+#define __IDBSchemaRowset_FWD_DEFINED__
+typedef interface IDBSchemaRowset IDBSchemaRowset;
+#endif /* __IDBSchemaRowset_FWD_DEFINED__ */
+
+
+#ifndef __IProvideMoniker_FWD_DEFINED__
+#define __IProvideMoniker_FWD_DEFINED__
+typedef interface IProvideMoniker IProvideMoniker;
+#endif /* __IProvideMoniker_FWD_DEFINED__ */
+
+
+#ifndef __IErrorRecords_FWD_DEFINED__
+#define __IErrorRecords_FWD_DEFINED__
+typedef interface IErrorRecords IErrorRecords;
+#endif /* __IErrorRecords_FWD_DEFINED__ */
+
+
+#ifndef __IErrorLookup_FWD_DEFINED__
+#define __IErrorLookup_FWD_DEFINED__
+typedef interface IErrorLookup IErrorLookup;
+#endif /* __IErrorLookup_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oledbtyp.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifndef __DBStructureDefinitions_INTERFACE_DEFINED__
+#define __DBStructureDefinitions_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: DBStructureDefinitions
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][unique][uuid] */
+
+
+typedef DWORD DBKIND;
+
+
+enum DBKINDENUM
+ { DBKIND_GUID_NAME = 0,
+ DBKIND_GUID_PROPID = DBKIND_GUID_NAME + 1,
+ DBKIND_NAME = DBKIND_GUID_PROPID + 1,
+ DBKIND_PGUID_NAME = DBKIND_NAME + 1,
+ DBKIND_PGUID_PROPID = DBKIND_PGUID_NAME + 1,
+ DBKIND_PROPID = DBKIND_PGUID_PROPID + 1,
+ DBKIND_GUID = DBKIND_PROPID + 1
+ };
+typedef struct tagDBID
+ {
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ GUID guid;
+ /* [case()] */ GUID __RPC_FAR *pguid;
+ } ;
+ DBKIND eKind;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ LPWSTR pwszName;
+ /* [case()] */ ULONG ulPropid;
+ } ;
+ } DBID;
+
+typedef struct tagDBNUMERIC
+ {
+ BYTE precision;
+ BYTE scale;
+ BYTE sign;
+ BYTE val[ 16 ];
+ } DBNUMERIC;
+
+typedef WORD DBTYPE;
+
+
+enum DBTYPEENUM
+ { DBTYPE_EMPTY = 0,
+ DBTYPE_NULL = DBTYPE_EMPTY + 1,
+ DBTYPE_I2 = DBTYPE_NULL + 1,
+ DBTYPE_I4 = DBTYPE_I2 + 1,
+ DBTYPE_R4 = DBTYPE_I4 + 1,
+ DBTYPE_R8 = DBTYPE_R4 + 1,
+ DBTYPE_CY = DBTYPE_R8 + 1,
+ DBTYPE_DATE = DBTYPE_CY + 1,
+ DBTYPE_BSTR = DBTYPE_DATE + 1,
+ DBTYPE_DISPATCH = DBTYPE_BSTR + 1,
+ DBTYPE_ERROR = DBTYPE_DISPATCH + 1,
+ DBTYPE_BOOL = DBTYPE_ERROR + 1,
+ DBTYPE_VARIANT = DBTYPE_BOOL + 1,
+ DBTYPE_UNKNOWN = DBTYPE_VARIANT + 1,
+ DBTYPE_UI1 = 17,
+ DBTYPE_ARRAY = 0x2000,
+ DBTYPE_BYREF = 0x4000,
+ DBTYPE_I1 = 16,
+ DBTYPE_UI2 = 18,
+ DBTYPE_UI4 = DBTYPE_UI2 + 1,
+ DBTYPE_I8 = DBTYPE_UI4 + 1,
+ DBTYPE_UI8 = DBTYPE_I8 + 1,
+ DBTYPE_GUID = 72,
+ DBTYPE_VECTOR = 0x1000,
+ DBTYPE_RESERVED = 0x8000,
+ DBTYPE_BYTES = 128,
+ DBTYPE_STR = 129,
+ DBTYPE_WSTR = DBTYPE_STR + 1,
+ DBTYPE_NUMERIC = DBTYPE_WSTR + 1,
+ DBTYPE_HCHAPTER = DBTYPE_NUMERIC + 1
+ };
+typedef struct tagDBVECTOR
+ {
+ ULONG size;
+ void __RPC_FAR *ptr;
+ } DBVECTOR;
+
+typedef DWORD DBCOLUMNPART;
+
+
+enum DBCOLUMNPARTENUM
+ { DBCOLUMNPART_VALUE = 1,
+ DBCOLUMNPART_LENGTH = 2,
+ DBCOLUMNPART_STATUS = 4
+ };
+typedef DWORD DBCOLUMNSTATUS;
+
+
+enum DBCOLUMNSTATUSENUM
+ { DBCOLUMNSTATUS_OK = 0,
+ DBCOLUMNSTATUS_ISNULL = DBCOLUMNSTATUS_OK + 1,
+ DBCOLUMNSTATUS_TRUNCATED = DBCOLUMNSTATUS_ISNULL + 1,
+ DBCOLUMNSTATUS_SIGNMISMATCH = DBCOLUMNSTATUS_TRUNCATED + 1,
+ DBCOLUMNSTATUS_DATAOVERFLOW = DBCOLUMNSTATUS_SIGNMISMATCH + 1,
+ DBCOLUMNSTATUS_CANTCOERCE = DBCOLUMNSTATUS_DATAOVERFLOW + 1,
+ DBCOLUMNSTATUS_CANTCREATE = DBCOLUMNSTATUS_CANTCOERCE + 1,
+ DBCOLUMNSTATUS_UNAVAILABLE = DBCOLUMNSTATUS_CANTCREATE + 1,
+ DBCOLUMNSTATUS_ACCESSVIOLATION = DBCOLUMNSTATUS_UNAVAILABLE + 1,
+ DBCOLUMNSTATUS_INTEGRITYVIOLATION = DBCOLUMNSTATUS_ACCESSVIOLATION + 1,
+ DBCOLUMNSTATUS_SCHEMAVIOLATION = DBCOLUMNSTATUS_INTEGRITYVIOLATION + 1
+ };
+typedef struct tagDBOBJECT
+ {
+ IUnknown __RPC_FAR *pUnkOuter;
+ IID iid;
+ LPBC pbc;
+ } DBOBJECT;
+
+typedef DWORD DBPARAMIO;
+
+
+enum DBPARAMIOENUM
+ { DBPARAMIO_INPUT = 0x1,
+ DBPARAMIO_OUTPUT = 0x2
+ };
+typedef struct tagDBBINDING
+ {
+ DBCOLUMNPART dwPart;
+ DBPARAMIO eParamIO;
+ ULONG iColumn;
+ DBTYPE dwType;
+ ITypeInfo __RPC_FAR *pTypeInfo;
+ DBNUMERIC __RPC_FAR *pNum;
+ ULONG obValue;
+ ULONG cbMaxLen;
+ DBOBJECT pObject;
+ ULONG obLength;
+ ULONG obStatus;
+ } DBBINDING;
+
+DECLARE_HANDLE(HACCESSOR);
+#if 0
+// Used by MIDL only
+typedef void __RPC_FAR *HACCESSOR;
+
+#endif // 0
+#define DB_INVALID_HACCESSOR 0x00
+DECLARE_HANDLE(HROW);
+#if 0
+// Used by MIDL only
+typedef void __RPC_FAR *HROW;
+
+#endif // 0
+#define DB_INVALID_HROW 0x00
+DECLARE_HANDLE(HWATCHREGION);
+#if 0
+// Used by MIDL only
+typedef void __RPC_FAR *HWATCHREGION;
+
+#endif // 0
+#define DBWATCHREGION_NULL NULL
+DECLARE_HANDLE(HCHAPTER);
+#if 0
+// Used by MIDL only
+typedef void __RPC_FAR *HCHAPTER;
+
+#endif // 0
+#define DB_INVALID_CHAPTER 0x00
+#define DB_INVALID_HCHAPTER 0x00
+typedef struct tagDBERRORINFO
+ {
+ HROW hRow;
+ HRESULT hResult;
+ ULONG iColumn;
+ } DBERRORINFO;
+
+typedef struct tagDBFAILUREINFO
+ {
+ HROW hRow;
+ HRESULT failure;
+ ULONG iColumn;
+ } DBFAILUREINFO;
+
+typedef DWORD DBCOLUMNFLAGS;
+
+
+enum DBCOLUMNFLAGSENUM
+ { DBCOLUMNFLAGS_ISBOOKMARK = 0x1,
+ DBCOLUMNFLAGS_MAYDEFER = 0x2,
+ DBCOLUMNFLAGS_MAYREFERENCE = 0x4,
+ DBCOLUMNFLAGS_MAYWRITE = 0x8,
+ DBCOLUMNFLAGS_ISSIGNED = 0x10,
+ DBCOLUMNFLAGS_ISFIXEDLENGTH = 0x20,
+ DBCOLUMNFLAGS_ISNULLABLE = 0x40,
+ DBCOLUMNFLAGS_MAYBENULL = 0x80,
+ DBCOLUMNFLAGS_ISCHAPTER = 0x100,
+ DBCOLUMNFLAGS_ISOLEBLOB = 0x200,
+ DBCOLUMNFLAGS_ISROWID = 0x400,
+ DBCOLUMNFLAGS_ISROWVER = 0x800,
+ DBCOLUMNFLAGS_CACHEDEFERRED = 0x1000,
+ DBCOLUMNFLAGS_ISSELF = 0x2000
+ };
+typedef
+enum tagDBBOOKMARK
+ { DBBMK_INVALID = 0,
+ DBBMK_FIRST = DBBMK_INVALID + 1,
+ DBBMK_LAST = DBBMK_FIRST + 1
+ } DBBOOKMARK;
+
+typedef
+enum tagDBCHAPTER
+ { DBCHP_INVALID = 0,
+ DBCHP_FIRST = DBCHP_INVALID + 1
+ } DBCHAPTER;
+
+#define DB_INVALIDCOLUMN -100
+#define DBCIDGUID {0x0C733A81L,0x2A1C,0x11CE,{0xAD,0xE5,0x00,0xAA,0x00,0x44,0x77,0x3D}}
+#define DB_NULLGUID {0x00000000L,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
+#ifdef DBINITCONSTANTS
+extern const DBID DB_NULLCOLID = {DB_NULLGUID, DBKIND_GUID_PROPID, (LPWSTR)0};
+extern const DBID DBCOLUMN_COLUMNID = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)2};
+extern const DBID DBCOLUMN_NAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)3};
+extern const DBID DBCOLUMN_NUMBER = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)4};
+extern const DBID DBCOLUMN_TYPE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)5};
+extern const DBID DBCOLUMN_MAXLENGTH = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)6};
+extern const DBID DBCOLUMN_PRECISION = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)7};
+extern const DBID DBCOLUMN_SCALE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)8};
+extern const DBID DBCOLUMN_FLAGS = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)9};
+extern const DBID DBCOLUMN_BASECOLUMNNAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)10};
+extern const DBID DBCOLUMN_BASETABLENAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)11};
+extern const DBID DBCOLUMN_COLLATINGSEQUENCE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)12};
+extern const DBID DBCOLUMN_COMPUTEMODE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)13};
+extern const DBID DBCOLUMN_DEFAULTVALUE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)14};
+extern const DBID DBCOLUMN_DOMAIN = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)15};
+extern const DBID DBCOLUMN_HASDEFAULT = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)16};
+extern const DBID DBCOLUMN_ISAUTOINCREMENT = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)17};
+extern const DBID DBCOLUMN_ISCASESENSITIVE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)18};
+extern const DBID DBCOLUMN_ISMULTIVALUED = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)19};
+extern const DBID DBCOLUMN_ISSEARCHABLE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)20};
+extern const DBID DBCOLUMN_ISUNIQUE = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)21};
+extern const DBID DBCOLUMN_ISVERSION = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)22};
+extern const DBID DBCOLUMN_BASECATALOGNAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)23};
+extern const DBID DBCOLUMN_BASESCHEMANAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)24};
+extern const DBID SOURCES_NAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)25};
+extern const DBID SOURCES_PARSENAME = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)26};
+extern const DBID SOURCES_DESCRIPTION = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)27};
+extern const DBID SOURCES_FLAGS = {DBCIDGUID, DBKIND_GUID_PROPID, (LPWSTR)28};
+#else // !DBINITCONSTANTS
+extern const DBID DB_NULLCOLID;
+extern const DBID DBCOLUMN_COLUMNID;
+extern const DBID DBCOLUMN_NAME;
+extern const DBID DBCOLUMN_NUMBER;
+extern const DBID DBCOLUMN_TYPE;
+extern const DBID DBCOLUMN_MAXLENGTH;
+extern const DBID DBCOLUMN_PRECISION;
+extern const DBID DBCOLUMN_SCALE;
+extern const DBID DBCOLUMN_FLAGS;
+extern const DBID DBCOLUMN_BASECOLUMNNAME;
+extern const DBID DBCOLUMN_BASETABLENAME;
+extern const DBID DBCOLUMN_COLLATINGSEQUENCE;
+extern const DBID DBCOLUMN_COMPUTEMODE;
+extern const DBID DBCOLUMN_DEFAULTVALUE;
+extern const DBID DBCOLUMN_DOMAIN;
+extern const DBID DBCOLUMN_HASDEFAULT;
+extern const DBID DBCOLUMN_ISAUTOINCREMENT;
+extern const DBID DBCOLUMN_ISCASESENSITIVE;
+extern const DBID DBCOLUMN_ISMULTIVALUED;
+extern const DBID DBCOLUMN_ISSEARCHABLE;
+extern const DBID DBCOLUMN_ISUNIQUE;
+extern const DBID DBCOLUMN_ISVERSION;
+extern const DBID DBCOLUMN_BASECATALOGNAME;
+extern const DBID DBCOLUMN_BASESCHEMANAME;
+extern const DBID SOURCES_NAME;
+extern const DBID SOURCES_PARSENAME;
+extern const DBID SOURCES_DESCRIPTION;
+extern const DBID SOURCES_FLAGS;
+#endif // DBINITCONSTANTS
+#ifdef DBINITCONSTANTS
+extern const GUID DB_PROPERTY_CHECK_OPTION = {0xc8b5220b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_CONSTRAINT_CHECK_DEFERRED = {0xc8b521f0,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_DESCRIPTION = {0xc8b521f1,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_DEFAULT_VALUE = {0xc8b521f2,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_DROP_CASCADE = {0xc8b521f3,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_ON_COMMIT_PRESERVE_ROWS = {0xc8b52230,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_NULLABLE = {0xc8b521f4,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_UNIQUE = {0xc8b521f5,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_PRIMARY = {0xc8b521fc,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_CLUSTERED = {0xc8b521ff,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_NONCLUSTERED = {0xc8b52200,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_BTREE = {0xc8b52201,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_HASH = {0xc8b52202,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_FILLFACTOR = {0xc8b52203,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_INITIALSIZE = {0xc8b52204,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_DISALLOWNULL = {0xc8b52205,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_IGNORENULL = {0xc8b52206,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_IGNOREANYNULL = {0xc8b52207,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_SORTBOOKMARKS = {0xc8b52208,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_AUTOMATICUPDATE = {0xc8b52209,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_EXPLICITUPDATE = {0xc8b5220a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_WITH_LOCAL_CHECK_OPTION = {0xc8b52256,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DB_PROPERTY_WITH_CASCADED_CHECK_OPTION = {0xc8b52257,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_LIKE_SQL = {0xc8b521f6,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_LIKE_DOS = {0xc8b521f7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_LIKE_OFS = {0xc8b521f8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_LIKE_MAPI = {0xc8b521f9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_SQL92 = {0xc8b521fa,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_DBSQL = {0xc8b521fb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_TSQL = {0xc8b521fd,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBGUID_ACCESSSQL = {0xc8b521fe,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_HWND = {0xc8b5227b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_LOCATION = {0xc8b5220d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_NAME = {0xc8b5220c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_PASSWORD = {0xc8b5220f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_TIMEOUT = {0xc8b5227c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBINIT_OPT_USERID = {0xc8b5220e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_ASSERTIONS = {0xc8b52210,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_CATALOGS = {0xc8b52211,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_CHARACTER_SETS = {0xc8b52212,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_COLLATIONS = {0xc8b52213,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_COLUMNS = {0xc8b52214,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_CHECK_CONSTRAINTS = {0xc8b52215,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_CONSTRAINT_COLUMN_USAGE = {0xc8b52216,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_CONSTRAINT_TABLE_USAGE = {0xc8b52217,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_KEY_COLUMN_USAGE_CONSTRAINTS = {0xc8b52218,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_REFERENTIAL_CONSTRAINTS = {0xc8b52219,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TABLE_CONSTRAINTS = {0xc8b5221a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_DOMAIN_COLUMN_USAGE = {0xc8b5221b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_DOMAINS = {0xc8b5221c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_DOMAIN_CONSTRAINTS = {0xc8b5221d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_INDEXES = {0xc8b5221e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_OBJECT_ACTIONS = {0xc8b5221f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_OBJECTS = {0xc8b52220,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_COLUMN_PRIVILEGES = {0xc8b52221,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TABLE_PRIVILEGES = {0xc8b52222,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_USAGE_PRIVILEGES = {0xc8b52223,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_PROCEDURES = {0xc8b52224,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_SCHEMATA = {0xc8b52225,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_SQL_LANGUAGES = {0xc8b52226,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_STATISTICS = {0xc8b52227,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_SYNONYMS = {0xc8b52228,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TABLES = {0xc8b52229,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TRANSLATIONS = {0xc8b5222a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TRIGGERS = {0xc8b5222b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_TYPES = {0xc8b5222c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_VIEWS = {0xc8b5222d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_VIEW_COLUMN_USAGE = {0xc8b5222e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBSCHEMA_VIEW_TABLE_USAGE = {0xc8b5222f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBCOL_SELFCOLUMNS = {0xc8b52231,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBCOL_SPECIALCOL = {0xc8b52232,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_ABORTRETAINING = {0xc8b5224b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_BOOKMARKS = {0xc8b5223e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CACHEDEFERRED = {0xc8b52287,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CANFETCHBACKWARDS = {0xc8b5223c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CANHOLDROWS = {0xc8b52241,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CANRELEASELOCKS = {0xc8b52245,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CANSCROLLBACKWARDS = {0xc8b5223d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CHAPTERED = {0xc8b52246,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_COMMITRETAINING = {0xc8b5224a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_COUNTOFCOLUMNS = {0xc8b52236,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_DEFERRED = {0xc8b52233,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_DISCONTIGUOUS = {0xc8b52244,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_LITERALBOOKMARKS = {0xc8b5223f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXOPENROWS = {0xc8b52237,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXOPENROWSPERCHAPTER = {0xc8b52239,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXPENDINGCHANGEROWS = {0xc8b52238,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXPENDINGCHANGESPERCHAPTER = {0xc8b5223a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAYWRITECOLUMN = {0xc8b52288,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MEMORYUSAGE = {0xc8b52235,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MULTICHAPTERED = {0xc8b52247,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MULTIPLEACCESSORS = {0xc8b52289,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MULTIPLERESULTSETS = {0xc8b52255,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_NOCOLUMNRESTRICT = {0xc8b52242,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_NOROWRESTRICT = {0xc8b52243,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_ORDEREDBOOKMARKS = {0xc8b52240,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_OTHERINSERT = {0xc8b5224f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_OTHERUPDATEDELETE = {0xc8b5224e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_OWNINSERT = {0xc8b5224d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_OWNUPDATEDELETE = {0xc8b5224c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PROPERTIESINERROR = {0xc8b5228a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_QUICKRESTART = {0xc8b52253,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_REENTRANTEVENTS = {0xc8b52249,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_REMOVEDELETED = {0xc8b52250,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SERVERCURSOR = {0xc8b52251,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_TRUEIDENTITY = {0xc8b52248,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_ACTIVESESSIONS = {0xc8b52256,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_ASYNCTXNCOMMIT = {0xc8b52257,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_BYREFACCESSORS = {0xc8b52258,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CATALOGLOCATION = {0xc8b52259,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CATALOGTERM = {0xc8b5225a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CATALOGUSAGE = {0xc8b5225b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_CONCATNULLBEHAVIOR = {0xc8b5225c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_DATASOURCENAME = {0xc8b5225d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_DBMSNAME = {0xc8b5225e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_DBMSVER = {0xc8b5225f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_FILEUSAGE = {0xc8b52260,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_GROUPBY = {0xc8b52261,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_HETEROGENEOUSTABLES = {0xc8b52262,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_IDENTIFIERCASE = {0xc8b52263,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_LOCKMODES = {0xc8b52264,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXINDEXSIZE = {0xc8b52265,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXROWSIZE = {0xc8b52266,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXROWSIZEINCLUDESBLOB = {0xc8b52267,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MAXTABLESINSELECT = {0xc8b52268,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_MULTITABLEUPDATE = {0xc8b52269,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_NOTIFICATIONPHASES = {0xc8b5226a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_OLEOBJECTS = {0xc8b5226b,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_ORDERBYCOLUMNSINSELECT = {0xc8b5226c,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PREPARECOMMITBEHAVIOR = {0xc8b5226d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PREPAREABORTBEHAVIOR = {0xc8b5226e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PROVIDEREXTENSIONS = {0xc8b5226f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PROVIDEROLEDBVER = {0xc8b52270,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PROVIDERNAME = {0xc8b52271,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_PROVIDERVER = {0xc8b52272,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_QUOTEDIDENTIFIERCASE = {0xc8b52273,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SCHEMATERM = {0xc8b52274,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SCHEMAUSAGE = {0xc8b52275,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SQLDIALECTS = {0xc8b52276,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SUBQUERIES = {0xc8b52277,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SUPPORTEDTXNISOLEVELS = {0xc8b52278,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_SUPPORTEDTXNISORETAIN = {0xc8b52279,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_TABLETERM = {0xc8b5227a,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_AUTOUPDATE = {0xc8b5227d,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_CLUSTERED = {0xc8b5227e,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_FILLFACTOR = {0xc8b5227f,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_INITIALSIZE = {0xc8b52280,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_NULLCOLLATION = {0xc8b52281,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_NULLS = {0xc8b52282,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_PRIMARYKEY = {0xc8b52283,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_SORTBOOKMARKS = {0xc8b52284,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_TYPE = {0xc8b52285,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+extern const GUID DBPROP_INDEX_UNIQUE = {0xc8b52286,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};
+#else // !DBINITCONSTANTS
+extern const GUID DB_PROPERTY_CHECK_OPTION;
+extern const GUID DB_PROPERTY_CONSTRAINT_CHECK_DEFERRED;
+extern const GUID DB_PROPERTY_DESCRIPTION;
+extern const GUID DB_PROPERTY_DEFAULT_VALUE;
+extern const GUID DB_PROPERTY_DROP_CASCADE;
+extern const GUID DB_PROPERTY_ON_COMMIT_PRESERVE_ROWS;
+extern const GUID DB_PROPERTY_NULLABLE;
+extern const GUID DB_PROPERTY_UNIQUE;
+extern const GUID DB_PROPERTY_PRIMARY;
+extern const GUID DB_PROPERTY_CLUSTERED;
+extern const GUID DB_PROPERTY_NONCLUSTERED;
+extern const GUID DB_PROPERTY_BTREE;
+extern const GUID DB_PROPERTY_HASH;
+extern const GUID DB_PROPERTY_FILLFACTOR;
+extern const GUID DB_PROPERTY_INITIALSIZE;
+extern const GUID DB_PROPERTY_DISALLOWNULL;
+extern const GUID DB_PROPERTY_IGNORENULL;
+extern const GUID DB_PROPERTY_IGNOREANYNULL;
+extern const GUID DB_PROPERTY_SORTBOOKMARKS;
+extern const GUID DB_PROPERTY_AUTOMATICUPDATE;
+extern const GUID DB_PROPERTY_EXPLICITUPDATE;
+extern const GUID DB_PROPERTY_WITH_LOCAL_CHECK_OPTION;
+extern const GUID DB_PROPERTY_WITH_CASCADED_CHECK_OPTION;
+extern const GUID DBGUID_LIKE_SQL;
+extern const GUID DBGUID_LIKE_DOS;
+extern const GUID DBGUID_LIKE_OFS;
+extern const GUID DBGUID_LIKE_MAPI;
+extern const GUID DBGUID_SQL92;
+extern const GUID DBGUID_DBSQL;
+extern const GUID DBGUID_TSQL;
+extern const GUID DBGUID_ACCESSSQL;
+extern const GUID DBINIT_OPT_HWND;
+extern const GUID DBINIT_OPT_LOCATION;
+extern const GUID DBINIT_OPT_NAME;
+extern const GUID DBINIT_OPT_PASSWORD;
+extern const GUID DBINIT_OPT_TIMEOUT;
+extern const GUID DBINIT_OPT_USERID;
+extern const GUID DBSCHEMA_ASSERTIONS;
+extern const GUID DBSCHEMA_CATALOGS;
+extern const GUID DBSCHEMA_CHARACTER_SETS;
+extern const GUID DBSCHEMA_COLLATIONS;
+extern const GUID DBSCHEMA_COLUMNS;
+extern const GUID DBSCHEMA_CHECK_CONSTRAINTS;
+extern const GUID DBSCHEMA_CONSTRAINT_COLUMN_USAGE;
+extern const GUID DBSCHEMA_CONSTRAINT_TABLE_USAGE;
+extern const GUID DBSCHEMA_KEY_COLUMN_USAGE_CONSTRAINTS;
+extern const GUID DBSCHEMA_REFERENTIAL_CONSTRAINTS;
+extern const GUID DBSCHEMA_TABLE_CONSTRAINTS;
+extern const GUID DBSCHEMA_DOMAIN_COLUMN_USAGE;
+extern const GUID DBSCHEMA_DOMAINS;
+extern const GUID DBSCHEMA_DOMAIN_CONSTRAINTS;
+extern const GUID DBSCHEMA_INDEXES;
+extern const GUID DBSCHEMA_OBJECT_ACTIONS;
+extern const GUID DBSCHEMA_OBJECTS;
+extern const GUID DBSCHEMA_COLUMN_PRIVILEGES;
+extern const GUID DBSCHEMA_TABLE_PRIVILEGES;
+extern const GUID DBSCHEMA_USAGE_PRIVILEGES;
+extern const GUID DBSCHEMA_PROCEDURES;
+extern const GUID DBSCHEMA_SCHEMATA;
+extern const GUID DBSCHEMA_SQL_LANGUAGES;
+extern const GUID DBSCHEMA_STATISTICS;
+extern const GUID DBSCHEMA_SYNONYMS;
+extern const GUID DBSCHEMA_TABLES;
+extern const GUID DBSCHEMA_TRANSLATIONS;
+extern const GUID DBSCHEMA_TRIGGERS;
+extern const GUID DBSCHEMA_TYPES;
+extern const GUID DBSCHEMA_VIEWS;
+extern const GUID DBSCHEMA_VIEW_COLUMN_USAGE;
+extern const GUID DBSCHEMA_VIEW_TABLE_USAGE;
+extern const GUID DBCOL_SELFCOLUMNS;
+extern const GUID DBCOL_SPECIALCOL;
+extern const GUID DBPROP_ABORTRETAINING;
+extern const GUID DBPROP_BOOKMARKS;
+extern const GUID DBPROP_CACHEDEFERRED;
+extern const GUID DBPROP_CANFETCHBACKWARDS;
+extern const GUID DBPROP_CANHOLDROWS;
+extern const GUID DBPROP_CANRELEASELOCKS;
+extern const GUID DBPROP_CANSCROLLBACKWARDS;
+extern const GUID DBPROP_CHAPTERED;
+extern const GUID DBPROP_COMMITRETAINING;
+extern const GUID DBPROP_COUNTOFCOLUMNS;
+extern const GUID DBPROP_DEFERRED;
+extern const GUID DBPROP_DISCONTIGUOUS;
+extern const GUID DBPROP_LITERALBOOKMARKS;
+extern const GUID DBPROP_MAXOPENROWS;
+extern const GUID DBPROP_MAXOPENROWSPERCHAPTER;
+extern const GUID DBPROP_MAXPENDINGCHANGEROWS;
+extern const GUID DBPROP_MAXPENDINGCHANGESPERCHAPTER;
+extern const GUID DBPROP_MAYWRITECOLUMN;
+extern const GUID DBPROP_MEMORYUSAGE;
+extern const GUID DBPROP_MULTICHAPTERED;
+extern const GUID DBPROP_MULTIPLEACCESSORS;
+extern const GUID DBPROP_MULTIPLERESULTSETS;
+extern const GUID DBPROP_NOCOLUMNRESTRICT;
+extern const GUID DBPROP_NOROWRESTRICT;
+extern const GUID DBPROP_ORDEREDBOOKMARKS;
+extern const GUID DBPROP_OTHERINSERT;
+extern const GUID DBPROP_OTHERUPDATEDELETE;
+extern const GUID DBPROP_OWNINSERT;
+extern const GUID DBPROP_OWNUPDATEDELETE;
+extern const GUID DBPROP_PROPERTIESINERROR;
+extern const GUID DBPROP_QUICKRESTART;
+extern const GUID DBPROP_REENTRANTEVENTS;
+extern const GUID DBPROP_REMOVEDELETED;
+extern const GUID DBPROP_SERVERCURSOR;
+extern const GUID DBPROP_TRUEIDENTITY;
+extern const GUID DBPROP_ACTIVESESSIONS;
+extern const GUID DBPROP_ASYNCTXNCOMMIT;
+extern const GUID DBPROP_BYREFACCESSORS;
+extern const GUID DBPROP_CATALOGLOCATION;
+extern const GUID DBPROP_CATALOGTERM;
+extern const GUID DBPROP_CATALOGUSAGE;
+extern const GUID DBPROP_CONCATNULLBEHAVIOR;
+extern const GUID DBPROP_DATASOURCENAME;
+extern const GUID DBPROP_DBMSNAME;
+extern const GUID DBPROP_DBMSVER;
+extern const GUID DBPROP_FILEUSAGE;
+extern const GUID DBPROP_GROUPBY;
+extern const GUID DBPROP_HETEROGENEOUSTABLES;
+extern const GUID DBPROP_IDENTIFIERCASE;
+extern const GUID DBPROP_LOCKMODES;
+extern const GUID DBPROP_MAXINDEXSIZE;
+extern const GUID DBPROP_MAXROWSIZE;
+extern const GUID DBPROP_MAXROWSIZEINCLUDESBLOB;
+extern const GUID DBPROP_MAXTABLESINSELECT;
+extern const GUID DBPROP_MULTITABLEUPDATE;
+extern const GUID DBPROP_NOTIFICATIONPHASES;
+extern const GUID DBPROP_OLEOBJECTS;
+extern const GUID DBPROP_ORDERBYCOLUMNSINSELECT;
+extern const GUID DBPROP_PREPARECOMMITBEHAVIOR;
+extern const GUID DBPROP_PREPAREABORTBEHAVIOR;
+extern const GUID DBPROP_PROVIDEREXTENSIONS;
+extern const GUID DBPROP_PROVIDEROLEDBVER;
+extern const GUID DBPROP_PROVIDERNAME;
+extern const GUID DBPROP_PROVIDERVER;
+extern const GUID DBPROP_QUOTEDIDENTIFIERCASE;
+extern const GUID DBPROP_SCHEMATERM;
+extern const GUID DBPROP_SCHEMAUSAGE;
+extern const GUID DBPROP_SQLDIALECTS;
+extern const GUID DBPROP_SUBQUERIES;
+extern const GUID DBPROP_SUPPORTEDTXNISOLEVELS;
+extern const GUID DBPROP_SUPPORTEDTXNISORETAIN;
+extern const GUID DBPROP_TABLETERM;
+extern const GUID DBPROP_INDEX_AUTOUPDATE;
+extern const GUID DBPROP_INDEX_CLUSTERED;
+extern const GUID DBPROP_INDEX_FILLFACTOR;
+extern const GUID DBPROP_INDEX_INITIALSIZE;
+extern const GUID DBPROP_INDEX_NULLCOLLATION;
+extern const GUID DBPROP_INDEX_NULLS;
+extern const GUID DBPROP_INDEX_PRIMARYKEY;
+extern const GUID DBPROP_INDEX_SORTBOOKMARKS;
+extern const GUID DBPROP_INDEX_TYPE;
+extern const GUID DBPROP_INDEX_UNIQUE;
+#endif // DBINITCONSTANTS
+typedef DWORD DBCOMMANDOP;
+
+
+enum DBCOMMANDOPENUM
+ { DBOP_scalar_constant = 0,
+ DBOP_DEFAULT = DBOP_scalar_constant + 1,
+ DBOP_NULL = DBOP_DEFAULT + 1,
+ DBOP_bookmark_name = DBOP_NULL + 1,
+ DBOP_catalog_name = DBOP_bookmark_name + 1,
+ DBOP_column_name = DBOP_catalog_name + 1,
+ DBOP_schema_name = DBOP_column_name + 1,
+ DBOP_outall_name = DBOP_schema_name + 1,
+ DBOP_qualifier_name = DBOP_outall_name + 1,
+ DBOP_qualified_column_name = DBOP_qualifier_name + 1,
+ DBOP_table_name = DBOP_qualified_column_name + 1,
+ DBOP_nested_table_name = DBOP_table_name + 1,
+ DBOP_nested_column_name = DBOP_nested_table_name + 1,
+ DBOP_row = DBOP_nested_column_name + 1,
+ DBOP_table = DBOP_row + 1,
+ DBOP_sort = DBOP_table + 1,
+ DBOP_distinct = DBOP_sort + 1,
+ DBOP_distinct_order_preserving = DBOP_distinct + 1,
+ DBOP_alias = DBOP_distinct_order_preserving + 1,
+ DBOP_cross_join = DBOP_alias + 1,
+ DBOP_union_join = DBOP_cross_join + 1,
+ DBOP_inner_join = DBOP_union_join + 1,
+ DBOP_left_semi_join = DBOP_inner_join + 1,
+ DBOP_right_semi_join = DBOP_left_semi_join + 1,
+ DBOP_left_anti_semi_join = DBOP_right_semi_join + 1,
+ DBOP_right_anti_semi_join = DBOP_left_anti_semi_join + 1,
+ DBOP_left_outer_join = DBOP_right_anti_semi_join + 1,
+ DBOP_right_outer_join = DBOP_left_outer_join + 1,
+ DBOP_full_outer_join = DBOP_right_outer_join + 1,
+ DBOP_natural_join = DBOP_full_outer_join + 1,
+ DBOP_natural_left_outer_join = DBOP_natural_join + 1,
+ DBOP_natural_right_outer_join = DBOP_natural_left_outer_join + 1,
+ DBOP_natural_full_outer_join = DBOP_natural_right_outer_join + 1,
+ DBOP_set_intersection = DBOP_natural_full_outer_join + 1,
+ DBOP_set_union = DBOP_set_intersection + 1,
+ DBOP_set_left_difference = DBOP_set_union + 1,
+ DBOP_set_right_difference = DBOP_set_left_difference + 1,
+ DBOP_set_anti_difference = DBOP_set_right_difference + 1,
+ DBOP_bag_intersection = DBOP_set_anti_difference + 1,
+ DBOP_bag_union = DBOP_bag_intersection + 1,
+ DBOP_bag_left_difference = DBOP_bag_union + 1,
+ DBOP_bag_right_difference = DBOP_bag_left_difference + 1,
+ DBOP_bag_anti_difference = DBOP_bag_right_difference + 1,
+ DBOP_division = DBOP_bag_anti_difference + 1,
+ DBOP_relative_sampling = DBOP_division + 1,
+ DBOP_absolute_sampling = DBOP_relative_sampling + 1,
+ DBOP_transitive_closure = DBOP_absolute_sampling + 1,
+ DBOP_recursive_union = DBOP_transitive_closure + 1,
+ DBOP_aggregate = DBOP_recursive_union + 1,
+ DBOP_select = DBOP_aggregate + 1,
+ DBOP_order_preserving_select = DBOP_select + 1,
+ DBOP_project = DBOP_order_preserving_select + 1,
+ DBOP_project_order_preserving = DBOP_project + 1,
+ DBOP_top = DBOP_project_order_preserving + 1,
+ DBOP_top_percent = DBOP_top + 1,
+ DBOP_top_plus_ties = DBOP_top_percent + 1,
+ DBOP_top_percent_plus_ties = DBOP_top_plus_ties + 1,
+ DBOP_rank = DBOP_top_percent_plus_ties + 1,
+ DBOP_rank_ties_equally = DBOP_rank + 1,
+ DBOP_rank_ties_equally_and_skip = DBOP_rank_ties_equally + 1,
+ DBOP_navigate = DBOP_rank_ties_equally_and_skip + 1,
+ DBOP_nesting = DBOP_navigate + 1,
+ DBOP_unnesting = DBOP_nesting + 1,
+ DBOP_nested_apply = DBOP_unnesting + 1,
+ DBOP_cross_tab = DBOP_nested_apply + 1,
+ DBOP_is_NULL = DBOP_cross_tab + 1,
+ DBOP_is_NOT_NULL = DBOP_is_NULL + 1,
+ DBOP_equal = DBOP_is_NOT_NULL + 1,
+ DBOP_not_equal = DBOP_equal + 1,
+ DBOP_less = DBOP_not_equal + 1,
+ DBOP_less_equal = DBOP_less + 1,
+ DBOP_greater = DBOP_less_equal + 1,
+ DBOP_greater_equal = DBOP_greater + 1,
+ DBOP_equal_all = DBOP_greater_equal + 1,
+ DBOP_not_equal_all = DBOP_equal_all + 1,
+ DBOP_less_all = DBOP_not_equal_all + 1,
+ DBOP_less_equal_all = DBOP_less_all + 1,
+ DBOP_greater_all = DBOP_less_equal_all + 1,
+ DBOP_greater_equal_all = DBOP_greater_all + 1,
+ DBOP_equal_any = DBOP_greater_equal_all + 1,
+ DBOP_not_equal_any = DBOP_equal_any + 1,
+ DBOP_less_any = DBOP_not_equal_any + 1,
+ DBOP_less_equal_any = DBOP_less_any + 1,
+ DBOP_greater_any = DBOP_less_equal_any + 1,
+ DBOP_greater_equal_any = DBOP_greater_any + 1,
+ DBOP_anybits = DBOP_greater_equal_any + 1,
+ DBOP_allbits = DBOP_anybits + 1,
+ DBOP_anybits_any = DBOP_allbits + 1,
+ DBOP_allbits_any = DBOP_anybits_any + 1,
+ DBOP_anybits_all = DBOP_allbits_any + 1,
+ DBOP_allbits_all = DBOP_anybits_all + 1,
+ DBOP_between = DBOP_allbits_all + 1,
+ DBOP_between_unordered = DBOP_between + 1,
+ DBOP_match = DBOP_between_unordered + 1,
+ DBOP_match_unique = DBOP_match + 1,
+ DBOP_match_partial = DBOP_match_unique + 1,
+ DBOP_match_partial_unique = DBOP_match_partial + 1,
+ DBOP_match_full = DBOP_match_partial_unique + 1,
+ DBOP_match_full_unique = DBOP_match_full + 1,
+ DBOP_scalar_parameter = DBOP_match_full_unique + 1,
+ DBOP_scalar_function = DBOP_scalar_parameter + 1,
+ DBOP_plus = DBOP_scalar_function + 1,
+ DBOP_minus = DBOP_plus + 1,
+ DBOP_times = DBOP_minus + 1,
+ DBOP_over = DBOP_times + 1,
+ DBOP_div = DBOP_over + 1,
+ DBOP_modulo = DBOP_div + 1,
+ DBOP_power = DBOP_modulo + 1,
+ DBOP_like = DBOP_power + 1,
+ DBOP_sounds_like = DBOP_like + 1,
+ DBOP_is_INVALID = DBOP_sounds_like + 1,
+ DBOP_is_TRUE = DBOP_is_INVALID + 1,
+ DBOP_is_FALSE = DBOP_is_TRUE + 1,
+ DBOP_and = DBOP_is_FALSE + 1,
+ DBOP_or = DBOP_and + 1,
+ DBOP_xor = DBOP_or + 1,
+ DBOP_equivalent = DBOP_xor + 1,
+ DBOP_not = DBOP_equivalent + 1,
+ DBOP_overlaps = DBOP_not + 1,
+ DBOP_case_condition = DBOP_overlaps + 1,
+ DBOP_case_value = DBOP_case_condition + 1,
+ DBOP_nullif = DBOP_case_value + 1,
+ DBOP_cast = DBOP_nullif + 1,
+ DBOP_coalesce = DBOP_cast + 1,
+ DBOP_position = DBOP_coalesce + 1,
+ DBOP_extract = DBOP_position + 1,
+ DBOP_char_length = DBOP_extract + 1,
+ DBOP_octet_length = DBOP_char_length + 1,
+ DBOP_bit_length = DBOP_octet_length + 1,
+ DBOP_substring = DBOP_bit_length + 1,
+ DBOP_upper = DBOP_substring + 1,
+ DBOP_lower = DBOP_upper + 1,
+ DBOP_trim = DBOP_lower + 1,
+ DBOP_translate = DBOP_trim + 1,
+ DBOP_convert = DBOP_translate + 1,
+ DBOP_string_concat = DBOP_convert + 1,
+ DBOP_current_date = DBOP_string_concat + 1,
+ DBOP_current_time = DBOP_current_date + 1,
+ DBOP_current_timestamp = DBOP_current_time + 1,
+ DBOP_content_select = DBOP_current_timestamp + 1,
+ DBOP_content = DBOP_content_select + 1,
+ DBOP_content_freetext = DBOP_content + 1,
+ DBOP_content_proximity = DBOP_content_freetext + 1,
+ DBOP_content_vector_or = DBOP_content_proximity + 1,
+ DBOP_delete = DBOP_content_vector_or + 1,
+ DBOP_update = DBOP_delete + 1,
+ DBOP_insert = DBOP_update + 1,
+ DBOP_min = DBOP_insert + 1,
+ DBOP_max = DBOP_min + 1,
+ DBOP_count = DBOP_max + 1,
+ DBOP_sum = DBOP_count + 1,
+ DBOP_avg = DBOP_sum + 1,
+ DBOP_any_sample = DBOP_avg + 1,
+ DBOP_stddev = DBOP_any_sample + 1,
+ DBOP_stddev_pop = DBOP_stddev + 1,
+ DBOP_var = DBOP_stddev_pop + 1,
+ DBOP_var_pop = DBOP_var + 1,
+ DBOP_first = DBOP_var_pop + 1,
+ DBOP_last = DBOP_first + 1,
+ DBOP_in = DBOP_last + 1,
+ DBOP_exists = DBOP_in + 1,
+ DBOP_unique = DBOP_exists + 1,
+ DBOP_subset = DBOP_unique + 1,
+ DBOP_proper_subset = DBOP_subset + 1,
+ DBOP_superset = DBOP_proper_subset + 1,
+ DBOP_proper_superset = DBOP_superset + 1,
+ DBOP_disjoint = DBOP_proper_superset + 1,
+ DBOP_pass_through = DBOP_disjoint + 1,
+ DBOP_defined_by_GUID = DBOP_pass_through + 1,
+ DBOP_text_command = DBOP_defined_by_GUID + 1,
+ DBOP_SQL_select = DBOP_text_command + 1,
+ DBOP_prior_command_tree = DBOP_SQL_select + 1,
+ DBOP_add_columns = DBOP_prior_command_tree + 1,
+ DBOP_column_list_anchor = DBOP_add_columns + 1,
+ DBOP_column_list_element = DBOP_column_list_anchor + 1,
+ DBOP_command_list_anchor = DBOP_column_list_element + 1,
+ DBOP_command_list_element = DBOP_command_list_anchor + 1,
+ DBOP_from_list_anchor = DBOP_command_list_element + 1,
+ DBOP_from_list_element = DBOP_from_list_anchor + 1,
+ DBOP_project_list_anchor = DBOP_from_list_element + 1,
+ DBOP_project_list_element = DBOP_project_list_anchor + 1,
+ DBOP_row_list_anchor = DBOP_project_list_element + 1,
+ DBOP_row_list_element = DBOP_row_list_anchor + 1,
+ DBOP_scalar_list_anchor = DBOP_row_list_element + 1,
+ DBOP_scalar_list_element = DBOP_scalar_list_anchor + 1,
+ DBOP_set_list_anchor = DBOP_scalar_list_element + 1,
+ DBOP_set_list_element = DBOP_set_list_anchor + 1,
+ DBOP_sort_list_anchor = DBOP_set_list_element + 1,
+ DBOP_sort_list_element = DBOP_sort_list_anchor + 1,
+ DBOP_alter_character_set = DBOP_sort_list_element + 1,
+ DBOP_alter_collation = DBOP_alter_character_set + 1,
+ DBOP_alter_domain = DBOP_alter_collation + 1,
+ DBOP_alter_index = DBOP_alter_domain + 1,
+ DBOP_alter_procedure = DBOP_alter_index + 1,
+ DBOP_alter_schema = DBOP_alter_procedure + 1,
+ DBOP_alter_table = DBOP_alter_schema + 1,
+ DBOP_alter_trigger = DBOP_alter_table + 1,
+ DBOP_alter_view = DBOP_alter_trigger + 1,
+ DBOP_coldef_list_anchor = DBOP_alter_view + 1,
+ DBOP_coldef_list_element = DBOP_coldef_list_anchor + 1,
+ DBOP_create_assertion = DBOP_coldef_list_element + 1,
+ DBOP_create_character_set = DBOP_create_assertion + 1,
+ DBOP_create_collation = DBOP_create_character_set + 1,
+ DBOP_create_domain = DBOP_create_collation + 1,
+ DBOP_create_index = DBOP_create_domain + 1,
+ DBOP_create_procedure = DBOP_create_index + 1,
+ DBOP_create_schema = DBOP_create_procedure + 1,
+ DBOP_create_table = DBOP_create_schema + 1,
+ DBOP_create_temporary_table = DBOP_create_table + 1,
+ DBOP_create_translation = DBOP_create_temporary_table + 1,
+ DBOP_create_trigger = DBOP_create_translation + 1,
+ DBOP_create_view = DBOP_create_trigger + 1,
+ DBOP_drop_assertion = DBOP_create_view + 1,
+ DBOP_drop_character_set = DBOP_drop_assertion + 1,
+ DBOP_drop_collation = DBOP_drop_character_set + 1,
+ DBOP_drop_domain = DBOP_drop_collation + 1,
+ DBOP_drop_index = DBOP_drop_domain + 1,
+ DBOP_drop_procedure = DBOP_drop_index + 1,
+ DBOP_drop_schema = DBOP_drop_procedure + 1,
+ DBOP_drop_table = DBOP_drop_schema + 1,
+ DBOP_drop_translation = DBOP_drop_table + 1,
+ DBOP_drop_trigger = DBOP_drop_translation + 1,
+ DBOP_drop_view = DBOP_drop_trigger + 1,
+ DBOP_foreign_key = DBOP_drop_view + 1,
+ DBOP_grant_privileges = DBOP_foreign_key + 1,
+ DBOP_index_list_anchor = DBOP_grant_privileges + 1,
+ DBOP_index_list_element = DBOP_index_list_anchor + 1,
+ DBOP_primary_key = DBOP_index_list_element + 1,
+ DBOP_property_list_anchor = DBOP_primary_key + 1,
+ DBOP_property_list_element = DBOP_property_list_anchor + 1,
+ DBOP_referenced_table = DBOP_property_list_element + 1,
+ DBOP_rename_object = DBOP_referenced_table + 1,
+ DBOP_revoke_privileges = DBOP_rename_object + 1,
+ DBOP_schema_authorization = DBOP_revoke_privileges + 1,
+ DBOP_unique_key = DBOP_schema_authorization + 1
+ };
+typedef LONG DBDATATYPELIST;
+
+
+enum DBDATATYPELISTENUM
+ { DBDATATYPE_CHARACTER = 1,
+ DBDATATYPE_NUMERIC = 2,
+ DBDATATYPE_DECIMAL = 3,
+ DBDATATYPE_INTEGER = 4,
+ DBDATATYPE_SMALLINT = 5,
+ DBDATATYPE_FLOAT = 6,
+ DBDATATYPE_REAL = 7,
+ DBDATATYPE_DOUBLE = 8,
+ DBDATATYPE_DATE = 9,
+ DBDATATYPE_TIME = 10,
+ DBDATATYPE_TIMESTAMP = 11,
+ DBDATATYPE_VARCHAR = 12,
+ DBDATATYPE_BOOLEAN = 34,
+ DBDATATYPE_ENUMERATED = 35,
+ DBDATATYPE_LONGVARCHAR = -1,
+ DBDATATYPE_BINARY = -2,
+ DBDATATYPE_VARBINARY = -3,
+ DBDATATYPE_LONGVARBINARY = -4,
+ DBDATATYPE_BIGINT = -5,
+ DBDATATYPE_TINYINT = -6,
+ DBDATATYPE_BIT = -7,
+ DBDATATYPE_INTERVAL_YEAR = -80,
+ DBDATATYPE_INTERVAL_MONTH = -81,
+ DBDATATYPE_INTERVAL_YEAR_TO_MONTH = -82,
+ DBDATATYPE_INTERVAL_DAY = -83,
+ DBDATATYPE_INTERVAL_HOUR = -84,
+ DBDATATYPE_INTERVAL_MINUTE = -85,
+ DBDATATYPE_INTERVAL_SECOND = -86,
+ DBDATATYPE_INTERVAL_DAY_TO_HOUR = -87,
+ DBDATATYPE_INTERVAL_DAY_TO_MINUTE = -88,
+ DBDATATYPE_INTERVAL_DAY_TO_SECOND = -89,
+ DBDATATYPE_INTERVAL_HOUR_TO_MINUTE = -90,
+ DBDATATYPE_INTERVAL_HOUR_TO_SECOND = -91,
+ DBDATATYPE_INTERVAL_MINUTE_TO_SECOND = -92,
+ DBDATATYPE_UNICODE = -95
+ };
+typedef DWORD DBDATATYPEKIND;
+
+
+enum DBDATATYPEKINDENUM
+ { DBDATATYPEKIND_BASETYPE = 0,
+ DBDATATYPEKIND_DOMAIN = DBDATATYPEKIND_BASETYPE + 1
+ };
+typedef struct tagDBDATATYPE
+ {
+ DBDATATYPEKIND eKind;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ struct
+ {
+ DBDATATYPELIST edbdt;
+ ULONG cbMaxLength;
+ ULONG cbPrecision;
+ ULONG cbScale;
+ } DBBASETYPE;
+ /* [case()] */ LPWSTR pwszDomainName;
+ } ;
+ } DBDATATYPE;
+
+typedef struct tagDBPARAMS
+ {
+ ULONG cParamSets;
+ HACCESSOR hAccessor;
+ void __RPC_FAR *pData;
+ ULONG cbParamSetSize;
+ } DBPARAMS;
+
+typedef DWORD DBPARAMFLAGS;
+
+
+enum DBPARAMFLAGSENUM
+ { DBPARAMFLAGS_ISINPUT = 0x1,
+ DBPARAMFLAGS_ISOUTPUT = 0x2,
+ DBPARAMFLAGS_ISSIGNED = 0x10,
+ DBPARAMFLAGS_ISNULLABLE = 0x40,
+ DBPARAMFLAGS_ISOLEBLOB = 0x80
+ };
+typedef struct tagDBPARAMINFO
+ {
+ ULONG iNumber;
+ LPWSTR pwszName;
+ DBTYPE dwType;
+ ITypeInfo __RPC_FAR *pTypeInfo;
+ ULONG cbMaxLength;
+ ULONG cPrecision;
+ LONG cScale;
+ DBPARAMFLAGS dwFlags;
+ } DBPARAMINFO;
+
+#define DB_UNSEARCHABLE 0x01
+#define DB_LIKE_ONLY 0x02
+#define DB_ALL_EXCEPT_LIKE 0x03
+#define DB_SEARCHABLE 0x04
+typedef DWORD DBPROPERTYOPTIONS;
+
+
+enum DBPROPERTYOPTIONSENUM
+ { DBPROPERTYOPTIONS_SETIFCHEAP = 0x1,
+ DBPROPERTYOPTIONS_NOTSUPPORTED = 0x200,
+ DBPROPERTYOPTIONS_DEFAULT = 0x400
+ };
+typedef struct tagDBPROPERTYSUPPORT
+ {
+ GUID guidProperty;
+ VARIANT vValue;
+ DBID colid;
+ DBPROPERTYOPTIONS dwOptions;
+ } DBPROPERTYSUPPORT;
+
+typedef struct tagDBPROPERTY
+ {
+ GUID guid;
+ VARIANT vValue;
+ } DBPROPERTY;
+
+
+
+extern RPC_IF_HANDLE DBStructureDefinitions_v0_0_c_ifspec;
+extern RPC_IF_HANDLE DBStructureDefinitions_v0_0_s_ifspec;
+#endif /* __DBStructureDefinitions_INTERFACE_DEFINED__ */
+
+#ifndef __IAccessor_INTERFACE_DEFINED__
+#define __IAccessor_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAccessor
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBACCESSORFLAGS;
+
+
+enum DBACCESSORFLAGSENUM
+ { DBACCESSOR_READ = 0,
+ DBACCESSOR_READWRITE = 0x1,
+ DBACCESSOR_PASSBYREF = 0x2,
+ DBACCESSOR_PASSCOLUMNSBYREF = 0x4,
+ DBACCESSOR_ROWDATA = 0x8,
+ DBACCESSOR_PARAMETERDATA = 0x10,
+ DBACCESSOR_OPTIMIZED = 0x20
+ };
+
+EXTERN_C const IID IID_IAccessor;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAccessor : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateAccessor(
+ /* [in] */ DBACCESSORFLAGS dwAccessorFlags,
+ /* [in] */ ULONG cBindings,
+ /* [size_is][in] */ const DBBINDING __RPC_FAR rgBindings[ ],
+ /* [in] */ ULONG cbRowSize,
+ /* [out] */ ULONG __RPC_FAR *pulErrorBinding,
+ /* [out] */ HACCESSOR __RPC_FAR *phAccessor) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBindings(
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ DBACCESSORFLAGS __RPC_FAR *pdwAccessorFlags,
+ /* [out] */ ULONG __RPC_FAR *pcBindings,
+ /* [out] */ DBBINDING __RPC_FAR *__RPC_FAR *prgBindings) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseAccessor(
+ /* [in] */ HACCESSOR hAccessor) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessorVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAccessor __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAccessor __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAccessor __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateAccessor )(
+ IAccessor __RPC_FAR * This,
+ /* [in] */ DBACCESSORFLAGS dwAccessorFlags,
+ /* [in] */ ULONG cBindings,
+ /* [size_is][in] */ const DBBINDING __RPC_FAR rgBindings[ ],
+ /* [in] */ ULONG cbRowSize,
+ /* [out] */ ULONG __RPC_FAR *pulErrorBinding,
+ /* [out] */ HACCESSOR __RPC_FAR *phAccessor);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBindings )(
+ IAccessor __RPC_FAR * This,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ DBACCESSORFLAGS __RPC_FAR *pdwAccessorFlags,
+ /* [out] */ ULONG __RPC_FAR *pcBindings,
+ /* [out] */ DBBINDING __RPC_FAR *__RPC_FAR *prgBindings);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseAccessor )(
+ IAccessor __RPC_FAR * This,
+ /* [in] */ HACCESSOR hAccessor);
+
+ END_INTERFACE
+ } IAccessorVtbl;
+
+ interface IAccessor
+ {
+ CONST_VTBL struct IAccessorVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessor_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAccessor_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAccessor_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAccessor_CreateAccessor(This,dwAccessorFlags,cBindings,rgBindings,cbRowSize,pulErrorBinding,phAccessor) \
+ (This)->lpVtbl -> CreateAccessor(This,dwAccessorFlags,cBindings,rgBindings,cbRowSize,pulErrorBinding,phAccessor)
+
+#define IAccessor_GetBindings(This,hAccessor,pdwAccessorFlags,pcBindings,prgBindings) \
+ (This)->lpVtbl -> GetBindings(This,hAccessor,pdwAccessorFlags,pcBindings,prgBindings)
+
+#define IAccessor_ReleaseAccessor(This,hAccessor) \
+ (This)->lpVtbl -> ReleaseAccessor(This,hAccessor)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IAccessor_CreateAccessor_Proxy(
+ IAccessor __RPC_FAR * This,
+ /* [in] */ DBACCESSORFLAGS dwAccessorFlags,
+ /* [in] */ ULONG cBindings,
+ /* [size_is][in] */ const DBBINDING __RPC_FAR rgBindings[ ],
+ /* [in] */ ULONG cbRowSize,
+ /* [out] */ ULONG __RPC_FAR *pulErrorBinding,
+ /* [out] */ HACCESSOR __RPC_FAR *phAccessor);
+
+
+void __RPC_STUB IAccessor_CreateAccessor_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAccessor_GetBindings_Proxy(
+ IAccessor __RPC_FAR * This,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ DBACCESSORFLAGS __RPC_FAR *pdwAccessorFlags,
+ /* [out] */ ULONG __RPC_FAR *pcBindings,
+ /* [out] */ DBBINDING __RPC_FAR *__RPC_FAR *prgBindings);
+
+
+void __RPC_STUB IAccessor_GetBindings_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAccessor_ReleaseAccessor_Proxy(
+ IAccessor __RPC_FAR * This,
+ /* [in] */ HACCESSOR hAccessor);
+
+
+void __RPC_STUB IAccessor_ReleaseAccessor_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAccessor_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowset_INTERFACE_DEFINED__
+#define __IRowset_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowset
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowset;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowset : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE AddRefRows(
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRefCounted,
+ /* [size_is][out][in] */ ULONG __RPC_FAR rgRefCounts[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetData(
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetNextRows(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRowsToSkip,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseChapter(
+ /* [in] */ HCHAPTER hChapter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseRows(
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcReleased,
+ /* [out][in] */ ULONG __RPC_FAR rgRefCounts[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RestartPosition(
+ /* [in] */ HCHAPTER hChapter) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowset __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowset __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowset __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddRefRows )(
+ IRowset __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRefCounted,
+ /* [size_is][out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetData )(
+ IRowset __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNextRows )(
+ IRowset __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRowsToSkip,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseChapter )(
+ IRowset __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseRows )(
+ IRowset __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcReleased,
+ /* [out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RestartPosition )(
+ IRowset __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ END_INTERFACE
+ } IRowsetVtbl;
+
+ interface IRowset
+ {
+ CONST_VTBL struct IRowsetVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowset_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowset_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowset_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowset_AddRefRows(This,cRows,rghRows,pcRefCounted,rgRefCounts) \
+ (This)->lpVtbl -> AddRefRows(This,cRows,rghRows,pcRefCounted,rgRefCounts)
+
+#define IRowset_GetData(This,hRow,hAccessor,pData) \
+ (This)->lpVtbl -> GetData(This,hRow,hAccessor,pData)
+
+#define IRowset_GetNextRows(This,hChapter,cRowsToSkip,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetNextRows(This,hChapter,cRowsToSkip,cRows,pcRowsObtained,prghRows)
+
+#define IRowset_ReleaseChapter(This,hChapter) \
+ (This)->lpVtbl -> ReleaseChapter(This,hChapter)
+
+#define IRowset_ReleaseRows(This,cRows,rghRows,pcReleased,rgRefCounts) \
+ (This)->lpVtbl -> ReleaseRows(This,cRows,rghRows,pcReleased,rgRefCounts)
+
+#define IRowset_RestartPosition(This,hChapter) \
+ (This)->lpVtbl -> RestartPosition(This,hChapter)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowset_AddRefRows_Proxy(
+ IRowset __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRefCounted,
+ /* [size_is][out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+
+void __RPC_STUB IRowset_AddRefRows_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowset_GetData_Proxy(
+ IRowset __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData);
+
+
+void __RPC_STUB IRowset_GetData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowset_GetNextRows_Proxy(
+ IRowset __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRowsToSkip,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+
+void __RPC_STUB IRowset_GetNextRows_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowset_ReleaseChapter_Proxy(
+ IRowset __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+
+void __RPC_STUB IRowset_ReleaseChapter_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowset_ReleaseRows_Proxy(
+ IRowset __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcReleased,
+ /* [out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+
+void __RPC_STUB IRowset_ReleaseRows_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowset_RestartPosition_Proxy(
+ IRowset __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+
+void __RPC_STUB IRowset_RestartPosition_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowset_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetInfo_INTERFACE_DEFINED__
+#define __IRowsetInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetInfo
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetProperties(
+ /* [in] */ const ULONG cProperties,
+ /* [size_is][in] */ const GUID __RPC_FAR rgProperties[ ],
+ /* [out] */ ULONG __RPC_FAR *pcProperties,
+ /* [out] */ DBPROPERTYSUPPORT __RPC_FAR *__RPC_FAR *prgProperties) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetReferencedRowset(
+ /* [in] */ ULONG iColumn,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppReferencedRowset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSpecification(
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppSpecification) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetProperties )(
+ IRowsetInfo __RPC_FAR * This,
+ /* [in] */ const ULONG cProperties,
+ /* [size_is][in] */ const GUID __RPC_FAR rgProperties[ ],
+ /* [out] */ ULONG __RPC_FAR *pcProperties,
+ /* [out] */ DBPROPERTYSUPPORT __RPC_FAR *__RPC_FAR *prgProperties);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetReferencedRowset )(
+ IRowsetInfo __RPC_FAR * This,
+ /* [in] */ ULONG iColumn,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppReferencedRowset);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSpecification )(
+ IRowsetInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppSpecification);
+
+ END_INTERFACE
+ } IRowsetInfoVtbl;
+
+ interface IRowsetInfo
+ {
+ CONST_VTBL struct IRowsetInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetInfo_GetProperties(This,cProperties,rgProperties,pcProperties,prgProperties) \
+ (This)->lpVtbl -> GetProperties(This,cProperties,rgProperties,pcProperties,prgProperties)
+
+#define IRowsetInfo_GetReferencedRowset(This,iColumn,ppReferencedRowset) \
+ (This)->lpVtbl -> GetReferencedRowset(This,iColumn,ppReferencedRowset)
+
+#define IRowsetInfo_GetSpecification(This,riid,ppSpecification) \
+ (This)->lpVtbl -> GetSpecification(This,riid,ppSpecification)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetInfo_GetProperties_Proxy(
+ IRowsetInfo __RPC_FAR * This,
+ /* [in] */ const ULONG cProperties,
+ /* [size_is][in] */ const GUID __RPC_FAR rgProperties[ ],
+ /* [out] */ ULONG __RPC_FAR *pcProperties,
+ /* [out] */ DBPROPERTYSUPPORT __RPC_FAR *__RPC_FAR *prgProperties);
+
+
+void __RPC_STUB IRowsetInfo_GetProperties_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetInfo_GetReferencedRowset_Proxy(
+ IRowsetInfo __RPC_FAR * This,
+ /* [in] */ ULONG iColumn,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppReferencedRowset);
+
+
+void __RPC_STUB IRowsetInfo_GetReferencedRowset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetInfo_GetSpecification_Proxy(
+ IRowsetInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppSpecification);
+
+
+void __RPC_STUB IRowsetInfo_GetSpecification_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetLocate_INTERFACE_DEFINED__
+#define __IRowsetLocate_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetLocate
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBCOMPARE;
+
+
+enum DBCOMPAREENUM
+ { DBCOMPARE_LT = 0,
+ DBCOMPARE_EQ = DBCOMPARE_LT + 1,
+ DBCOMPARE_GT = DBCOMPARE_EQ + 1,
+ DBCOMPARE_NE = DBCOMPARE_GT + 1,
+ DBCOMPARE_NOTCOMPARABLE = DBCOMPARE_NE + 1
+ };
+typedef struct tagDBINDEXEDERROR
+ {
+ ULONG iBookmark;
+ HRESULT hResult;
+ } DBINDEXEDERROR;
+
+
+EXTERN_C const IID IID_IRowsetLocate;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetLocate : public IRowset
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Compare(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark1,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark1,
+ /* [in] */ ULONG cbBookmark2,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark2,
+ /* [out] */ DBCOMPARE __RPC_FAR *pdwComparison) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRowsAt(
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRowsByBookmark(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows,
+ /* [in] */ BOOL fReturnErrors,
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Hash(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cBookmarks,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [size_is][out][in] */ DWORD __RPC_FAR rgHashedValues[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetLocateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetLocate __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetLocate __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddRefRows )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRefCounted,
+ /* [size_is][out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetData )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNextRows )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRowsToSkip,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseChapter )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseRows )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcReleased,
+ /* [out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RestartPosition )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Compare )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark1,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark1,
+ /* [in] */ ULONG cbBookmark2,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark2,
+ /* [out] */ DBCOMPARE __RPC_FAR *pdwComparison);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRowsAt )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRowsByBookmark )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows,
+ /* [in] */ BOOL fReturnErrors,
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Hash )(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cBookmarks,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [size_is][out][in] */ DWORD __RPC_FAR rgHashedValues[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+ END_INTERFACE
+ } IRowsetLocateVtbl;
+
+ interface IRowsetLocate
+ {
+ CONST_VTBL struct IRowsetLocateVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetLocate_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetLocate_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetLocate_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetLocate_AddRefRows(This,cRows,rghRows,pcRefCounted,rgRefCounts) \
+ (This)->lpVtbl -> AddRefRows(This,cRows,rghRows,pcRefCounted,rgRefCounts)
+
+#define IRowsetLocate_GetData(This,hRow,hAccessor,pData) \
+ (This)->lpVtbl -> GetData(This,hRow,hAccessor,pData)
+
+#define IRowsetLocate_GetNextRows(This,hChapter,cRowsToSkip,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetNextRows(This,hChapter,cRowsToSkip,cRows,pcRowsObtained,prghRows)
+
+#define IRowsetLocate_ReleaseChapter(This,hChapter) \
+ (This)->lpVtbl -> ReleaseChapter(This,hChapter)
+
+#define IRowsetLocate_ReleaseRows(This,cRows,rghRows,pcReleased,rgRefCounts) \
+ (This)->lpVtbl -> ReleaseRows(This,cRows,rghRows,pcReleased,rgRefCounts)
+
+#define IRowsetLocate_RestartPosition(This,hChapter) \
+ (This)->lpVtbl -> RestartPosition(This,hChapter)
+
+
+#define IRowsetLocate_Compare(This,hChapter,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pdwComparison) \
+ (This)->lpVtbl -> Compare(This,hChapter,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pdwComparison)
+
+#define IRowsetLocate_GetRowsAt(This,hRegion,hChapter,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetRowsAt(This,hRegion,hChapter,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows)
+
+#define IRowsetLocate_GetRowsByBookmark(This,hChapter,cRows,rgcbBookmarks,rgpBookmarks,pcRowsObtained,prghRows,fReturnErrors,pcErrors,prgErrors) \
+ (This)->lpVtbl -> GetRowsByBookmark(This,hChapter,cRows,rgcbBookmarks,rgpBookmarks,pcRowsObtained,prghRows,fReturnErrors,pcErrors,prgErrors)
+
+#define IRowsetLocate_Hash(This,hChapter,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,pcErrors,prgErrors) \
+ (This)->lpVtbl -> Hash(This,hChapter,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,pcErrors,prgErrors)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetLocate_Compare_Proxy(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark1,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark1,
+ /* [in] */ ULONG cbBookmark2,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark2,
+ /* [out] */ DBCOMPARE __RPC_FAR *pdwComparison);
+
+
+void __RPC_STUB IRowsetLocate_Compare_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetLocate_GetRowsAt_Proxy(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+
+void __RPC_STUB IRowsetLocate_GetRowsAt_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetLocate_GetRowsByBookmark_Proxy(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows,
+ /* [in] */ BOOL fReturnErrors,
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+
+void __RPC_STUB IRowsetLocate_GetRowsByBookmark_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetLocate_Hash_Proxy(
+ IRowsetLocate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cBookmarks,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [size_is][out][in] */ DWORD __RPC_FAR rgHashedValues[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+
+void __RPC_STUB IRowsetLocate_Hash_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetLocate_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetResynch_INTERFACE_DEFINED__
+#define __IRowsetResynch_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetResynch
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetResynch;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetResynch : public IRowset
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetVisibleData(
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ResynchRows(
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBERRORINFO __RPC_FAR *__RPC_FAR *prgErrors) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetResynchVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetResynch __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetResynch __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddRefRows )(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRefCounted,
+ /* [size_is][out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetData )(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNextRows )(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRowsToSkip,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseChapter )(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseRows )(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcReleased,
+ /* [out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RestartPosition )(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetVisibleData )(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ResynchRows )(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBERRORINFO __RPC_FAR *__RPC_FAR *prgErrors);
+
+ END_INTERFACE
+ } IRowsetResynchVtbl;
+
+ interface IRowsetResynch
+ {
+ CONST_VTBL struct IRowsetResynchVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetResynch_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetResynch_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetResynch_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetResynch_AddRefRows(This,cRows,rghRows,pcRefCounted,rgRefCounts) \
+ (This)->lpVtbl -> AddRefRows(This,cRows,rghRows,pcRefCounted,rgRefCounts)
+
+#define IRowsetResynch_GetData(This,hRow,hAccessor,pData) \
+ (This)->lpVtbl -> GetData(This,hRow,hAccessor,pData)
+
+#define IRowsetResynch_GetNextRows(This,hChapter,cRowsToSkip,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetNextRows(This,hChapter,cRowsToSkip,cRows,pcRowsObtained,prghRows)
+
+#define IRowsetResynch_ReleaseChapter(This,hChapter) \
+ (This)->lpVtbl -> ReleaseChapter(This,hChapter)
+
+#define IRowsetResynch_ReleaseRows(This,cRows,rghRows,pcReleased,rgRefCounts) \
+ (This)->lpVtbl -> ReleaseRows(This,cRows,rghRows,pcReleased,rgRefCounts)
+
+#define IRowsetResynch_RestartPosition(This,hChapter) \
+ (This)->lpVtbl -> RestartPosition(This,hChapter)
+
+
+#define IRowsetResynch_GetVisibleData(This,hRow,hAccessor,pData) \
+ (This)->lpVtbl -> GetVisibleData(This,hRow,hAccessor,pData)
+
+#define IRowsetResynch_ResynchRows(This,cRows,rghRows,pcErrors,prgErrors) \
+ (This)->lpVtbl -> ResynchRows(This,cRows,rghRows,pcErrors,prgErrors)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetResynch_GetVisibleData_Proxy(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData);
+
+
+void __RPC_STUB IRowsetResynch_GetVisibleData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetResynch_ResynchRows_Proxy(
+ IRowsetResynch __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBERRORINFO __RPC_FAR *__RPC_FAR *prgErrors);
+
+
+void __RPC_STUB IRowsetResynch_ResynchRows_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetResynch_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetScroll_INTERFACE_DEFINED__
+#define __IRowsetScroll_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetScroll
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetScroll;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetScroll : public IRowsetLocate
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetApproximatePosition(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [out] */ ULONG __RPC_FAR *pulPosition,
+ /* [out] */ ULONG __RPC_FAR *pcRows) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRowsAtRatio(
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG ulNumerator,
+ /* [in] */ ULONG ulDenominator,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetScrollVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetScroll __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetScroll __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddRefRows )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRefCounted,
+ /* [size_is][out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetData )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNextRows )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRowsToSkip,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseChapter )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseRows )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcReleased,
+ /* [out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RestartPosition )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Compare )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark1,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark1,
+ /* [in] */ ULONG cbBookmark2,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark2,
+ /* [out] */ DBCOMPARE __RPC_FAR *pdwComparison);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRowsAt )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRowsByBookmark )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows,
+ /* [in] */ BOOL fReturnErrors,
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Hash )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cBookmarks,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [size_is][out][in] */ DWORD __RPC_FAR rgHashedValues[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetApproximatePosition )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [out] */ ULONG __RPC_FAR *pulPosition,
+ /* [out] */ ULONG __RPC_FAR *pcRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRowsAtRatio )(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG ulNumerator,
+ /* [in] */ ULONG ulDenominator,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ END_INTERFACE
+ } IRowsetScrollVtbl;
+
+ interface IRowsetScroll
+ {
+ CONST_VTBL struct IRowsetScrollVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetScroll_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetScroll_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetScroll_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetScroll_AddRefRows(This,cRows,rghRows,pcRefCounted,rgRefCounts) \
+ (This)->lpVtbl -> AddRefRows(This,cRows,rghRows,pcRefCounted,rgRefCounts)
+
+#define IRowsetScroll_GetData(This,hRow,hAccessor,pData) \
+ (This)->lpVtbl -> GetData(This,hRow,hAccessor,pData)
+
+#define IRowsetScroll_GetNextRows(This,hChapter,cRowsToSkip,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetNextRows(This,hChapter,cRowsToSkip,cRows,pcRowsObtained,prghRows)
+
+#define IRowsetScroll_ReleaseChapter(This,hChapter) \
+ (This)->lpVtbl -> ReleaseChapter(This,hChapter)
+
+#define IRowsetScroll_ReleaseRows(This,cRows,rghRows,pcReleased,rgRefCounts) \
+ (This)->lpVtbl -> ReleaseRows(This,cRows,rghRows,pcReleased,rgRefCounts)
+
+#define IRowsetScroll_RestartPosition(This,hChapter) \
+ (This)->lpVtbl -> RestartPosition(This,hChapter)
+
+
+#define IRowsetScroll_Compare(This,hChapter,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pdwComparison) \
+ (This)->lpVtbl -> Compare(This,hChapter,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pdwComparison)
+
+#define IRowsetScroll_GetRowsAt(This,hRegion,hChapter,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetRowsAt(This,hRegion,hChapter,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows)
+
+#define IRowsetScroll_GetRowsByBookmark(This,hChapter,cRows,rgcbBookmarks,rgpBookmarks,pcRowsObtained,prghRows,fReturnErrors,pcErrors,prgErrors) \
+ (This)->lpVtbl -> GetRowsByBookmark(This,hChapter,cRows,rgcbBookmarks,rgpBookmarks,pcRowsObtained,prghRows,fReturnErrors,pcErrors,prgErrors)
+
+#define IRowsetScroll_Hash(This,hChapter,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,pcErrors,prgErrors) \
+ (This)->lpVtbl -> Hash(This,hChapter,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,pcErrors,prgErrors)
+
+
+#define IRowsetScroll_GetApproximatePosition(This,hChapter,cbBookmark,pBookmark,pulPosition,pcRows) \
+ (This)->lpVtbl -> GetApproximatePosition(This,hChapter,cbBookmark,pBookmark,pulPosition,pcRows)
+
+#define IRowsetScroll_GetRowsAtRatio(This,hRegion,hChapter,ulNumerator,ulDenominator,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetRowsAtRatio(This,hRegion,hChapter,ulNumerator,ulDenominator,cRows,pcRowsObtained,prghRows)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetScroll_GetApproximatePosition_Proxy(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [out] */ ULONG __RPC_FAR *pulPosition,
+ /* [out] */ ULONG __RPC_FAR *pcRows);
+
+
+void __RPC_STUB IRowsetScroll_GetApproximatePosition_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetScroll_GetRowsAtRatio_Proxy(
+ IRowsetScroll __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG ulNumerator,
+ /* [in] */ ULONG ulDenominator,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+
+void __RPC_STUB IRowsetScroll_GetRowsAtRatio_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetScroll_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetExactScroll_INTERFACE_DEFINED__
+#define __IRowsetExactScroll_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetExactScroll
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetExactScroll;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetExactScroll : public IRowsetScroll
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetExactPosition(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [out] */ ULONG __RPC_FAR *pulPosition,
+ /* [out] */ ULONG __RPC_FAR *pcRows) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetExactScrollVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetExactScroll __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetExactScroll __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddRefRows )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRefCounted,
+ /* [size_is][out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetData )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNextRows )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRowsToSkip,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseChapter )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseRows )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcReleased,
+ /* [out][in] */ ULONG __RPC_FAR rgRefCounts[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RestartPosition )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Compare )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark1,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark1,
+ /* [in] */ ULONG cbBookmark2,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark2,
+ /* [out] */ DBCOMPARE __RPC_FAR *pdwComparison);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRowsAt )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRowsByBookmark )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows,
+ /* [in] */ BOOL fReturnErrors,
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Hash )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cBookmarks,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [size_is][out][in] */ DWORD __RPC_FAR rgHashedValues[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetApproximatePosition )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [out] */ ULONG __RPC_FAR *pulPosition,
+ /* [out] */ ULONG __RPC_FAR *pcRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRowsAtRatio )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG ulNumerator,
+ /* [in] */ ULONG ulDenominator,
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetExactPosition )(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [out] */ ULONG __RPC_FAR *pulPosition,
+ /* [out] */ ULONG __RPC_FAR *pcRows);
+
+ END_INTERFACE
+ } IRowsetExactScrollVtbl;
+
+ interface IRowsetExactScroll
+ {
+ CONST_VTBL struct IRowsetExactScrollVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetExactScroll_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetExactScroll_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetExactScroll_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetExactScroll_AddRefRows(This,cRows,rghRows,pcRefCounted,rgRefCounts) \
+ (This)->lpVtbl -> AddRefRows(This,cRows,rghRows,pcRefCounted,rgRefCounts)
+
+#define IRowsetExactScroll_GetData(This,hRow,hAccessor,pData) \
+ (This)->lpVtbl -> GetData(This,hRow,hAccessor,pData)
+
+#define IRowsetExactScroll_GetNextRows(This,hChapter,cRowsToSkip,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetNextRows(This,hChapter,cRowsToSkip,cRows,pcRowsObtained,prghRows)
+
+#define IRowsetExactScroll_ReleaseChapter(This,hChapter) \
+ (This)->lpVtbl -> ReleaseChapter(This,hChapter)
+
+#define IRowsetExactScroll_ReleaseRows(This,cRows,rghRows,pcReleased,rgRefCounts) \
+ (This)->lpVtbl -> ReleaseRows(This,cRows,rghRows,pcReleased,rgRefCounts)
+
+#define IRowsetExactScroll_RestartPosition(This,hChapter) \
+ (This)->lpVtbl -> RestartPosition(This,hChapter)
+
+
+#define IRowsetExactScroll_Compare(This,hChapter,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pdwComparison) \
+ (This)->lpVtbl -> Compare(This,hChapter,cbBookmark1,pBookmark1,cbBookmark2,pBookmark2,pdwComparison)
+
+#define IRowsetExactScroll_GetRowsAt(This,hRegion,hChapter,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetRowsAt(This,hRegion,hChapter,cbBookmark,pBookmark,lRowsOffset,cRows,pcRowsObtained,prghRows)
+
+#define IRowsetExactScroll_GetRowsByBookmark(This,hChapter,cRows,rgcbBookmarks,rgpBookmarks,pcRowsObtained,prghRows,fReturnErrors,pcErrors,prgErrors) \
+ (This)->lpVtbl -> GetRowsByBookmark(This,hChapter,cRows,rgcbBookmarks,rgpBookmarks,pcRowsObtained,prghRows,fReturnErrors,pcErrors,prgErrors)
+
+#define IRowsetExactScroll_Hash(This,hChapter,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,pcErrors,prgErrors) \
+ (This)->lpVtbl -> Hash(This,hChapter,cBookmarks,rgcbBookmarks,rgpBookmarks,rgHashedValues,pcErrors,prgErrors)
+
+
+#define IRowsetExactScroll_GetApproximatePosition(This,hChapter,cbBookmark,pBookmark,pulPosition,pcRows) \
+ (This)->lpVtbl -> GetApproximatePosition(This,hChapter,cbBookmark,pBookmark,pulPosition,pcRows)
+
+#define IRowsetExactScroll_GetRowsAtRatio(This,hRegion,hChapter,ulNumerator,ulDenominator,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetRowsAtRatio(This,hRegion,hChapter,ulNumerator,ulDenominator,cRows,pcRowsObtained,prghRows)
+
+
+#define IRowsetExactScroll_GetExactPosition(This,hChapter,cbBookmark,pBookmark,pulPosition,pcRows) \
+ (This)->lpVtbl -> GetExactPosition(This,hChapter,cbBookmark,pBookmark,pulPosition,pcRows)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetExactScroll_GetExactPosition_Proxy(
+ IRowsetExactScroll __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [out] */ ULONG __RPC_FAR *pulPosition,
+ /* [out] */ ULONG __RPC_FAR *pcRows);
+
+
+void __RPC_STUB IRowsetExactScroll_GetExactPosition_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetExactScroll_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetChange_INTERFACE_DEFINED__
+#define __IRowsetChange_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetChange
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetChange;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetChange : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetData(
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetChangeVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetChange __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetChange __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetChange __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetData )(
+ IRowsetChange __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData);
+
+ END_INTERFACE
+ } IRowsetChangeVtbl;
+
+ interface IRowsetChange
+ {
+ CONST_VTBL struct IRowsetChangeVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetChange_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetChange_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetChange_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetChange_SetData(This,hRow,hAccessor,pData) \
+ (This)->lpVtbl -> SetData(This,hRow,hAccessor,pData)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetChange_SetData_Proxy(
+ IRowsetChange __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData);
+
+
+void __RPC_STUB IRowsetChange_SetData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetChange_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetUpdate_INTERFACE_DEFINED__
+#define __IRowsetUpdate_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetUpdate
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBROWSTATUS;
+
+
+enum DBROWSTATUSENUM
+ { DBROWSTATUS_NEW = 0,
+ DBROWSTATUS_CHANGED = DBROWSTATUS_NEW + 1,
+ DBROWSTATUS_SOFTDELETED = DBROWSTATUS_CHANGED + 1
+ };
+
+EXTERN_C const IID IID_IRowsetUpdate;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetUpdate : public IRowsetChange
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetOriginalData(
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPendingRows(
+ /* [in] */ HCHAPTER hChapter,
+ /* [out] */ ULONG __RPC_FAR *pcPendingRows,
+ /* [out] */ HROW __RPC_FAR *__RPC_FAR *prgPendingRows,
+ /* [out] */ DBROWSTATUS __RPC_FAR *__RPC_FAR *prgPendingStatus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UndoRows(
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRowsUndone) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Update(
+ /* [in] */ HCHAPTER hChapter,
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBERRORINFO __RPC_FAR *__RPC_FAR *prgErrors,
+ /* [out] */ ULONG __RPC_FAR *pcUpdatedRows,
+ /* [out] */ HROW __RPC_FAR *__RPC_FAR *prgUpdatedRows) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetUpdateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetUpdate __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetUpdate __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetUpdate __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetData )(
+ IRowsetUpdate __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetOriginalData )(
+ IRowsetUpdate __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPendingRows )(
+ IRowsetUpdate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [out] */ ULONG __RPC_FAR *pcPendingRows,
+ /* [out] */ HROW __RPC_FAR *__RPC_FAR *prgPendingRows,
+ /* [out] */ DBROWSTATUS __RPC_FAR *__RPC_FAR *prgPendingStatus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UndoRows )(
+ IRowsetUpdate __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRowsUndone);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Update )(
+ IRowsetUpdate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBERRORINFO __RPC_FAR *__RPC_FAR *prgErrors,
+ /* [out] */ ULONG __RPC_FAR *pcUpdatedRows,
+ /* [out] */ HROW __RPC_FAR *__RPC_FAR *prgUpdatedRows);
+
+ END_INTERFACE
+ } IRowsetUpdateVtbl;
+
+ interface IRowsetUpdate
+ {
+ CONST_VTBL struct IRowsetUpdateVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetUpdate_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetUpdate_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetUpdate_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetUpdate_SetData(This,hRow,hAccessor,pData) \
+ (This)->lpVtbl -> SetData(This,hRow,hAccessor,pData)
+
+
+#define IRowsetUpdate_GetOriginalData(This,hRow,hAccessor,pData) \
+ (This)->lpVtbl -> GetOriginalData(This,hRow,hAccessor,pData)
+
+#define IRowsetUpdate_GetPendingRows(This,hChapter,pcPendingRows,prgPendingRows,prgPendingStatus) \
+ (This)->lpVtbl -> GetPendingRows(This,hChapter,pcPendingRows,prgPendingRows,prgPendingStatus)
+
+#define IRowsetUpdate_UndoRows(This,cRows,rghRows,pcRowsUndone) \
+ (This)->lpVtbl -> UndoRows(This,cRows,rghRows,pcRowsUndone)
+
+#define IRowsetUpdate_Update(This,hChapter,pcErrors,prgErrors,pcUpdatedRows,prgUpdatedRows) \
+ (This)->lpVtbl -> Update(This,hChapter,pcErrors,prgErrors,pcUpdatedRows,prgUpdatedRows)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetUpdate_GetOriginalData_Proxy(
+ IRowsetUpdate __RPC_FAR * This,
+ /* [in] */ HROW hRow,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ void __RPC_FAR *pData);
+
+
+void __RPC_STUB IRowsetUpdate_GetOriginalData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetUpdate_GetPendingRows_Proxy(
+ IRowsetUpdate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [out] */ ULONG __RPC_FAR *pcPendingRows,
+ /* [out] */ HROW __RPC_FAR *__RPC_FAR *prgPendingRows,
+ /* [out] */ DBROWSTATUS __RPC_FAR *__RPC_FAR *prgPendingStatus);
+
+
+void __RPC_STUB IRowsetUpdate_GetPendingRows_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetUpdate_UndoRows_Proxy(
+ IRowsetUpdate __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcRowsUndone);
+
+
+void __RPC_STUB IRowsetUpdate_UndoRows_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetUpdate_Update_Proxy(
+ IRowsetUpdate __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBERRORINFO __RPC_FAR *__RPC_FAR *prgErrors,
+ /* [out] */ ULONG __RPC_FAR *pcUpdatedRows,
+ /* [out] */ HROW __RPC_FAR *__RPC_FAR *prgUpdatedRows);
+
+
+void __RPC_STUB IRowsetUpdate_Update_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetUpdate_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetNextRowset_INTERFACE_DEFINED__
+#define __IRowsetNextRowset_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetNextRowset
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetNextRowset;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetNextRowset : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetNextRowset(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppNextRowset) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetNextRowsetVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetNextRowset __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetNextRowset __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetNextRowset __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetNextRowset )(
+ IRowsetNextRowset __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppNextRowset);
+
+ END_INTERFACE
+ } IRowsetNextRowsetVtbl;
+
+ interface IRowsetNextRowset
+ {
+ CONST_VTBL struct IRowsetNextRowsetVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetNextRowset_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetNextRowset_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetNextRowset_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetNextRowset_GetNextRowset(This,pUnkOuter,ppNextRowset) \
+ (This)->lpVtbl -> GetNextRowset(This,pUnkOuter,ppNextRowset)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetNextRowset_GetNextRowset_Proxy(
+ IRowsetNextRowset __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppNextRowset);
+
+
+void __RPC_STUB IRowsetNextRowset_GetNextRowset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetNextRowset_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetDelete_INTERFACE_DEFINED__
+#define __IRowsetDelete_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetDelete
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetDelete;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetDelete : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DeleteRows(
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBERRORINFO __RPC_FAR *__RPC_FAR *prgErrors) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetDeleteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetDelete __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetDelete __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetDelete __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteRows )(
+ IRowsetDelete __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBERRORINFO __RPC_FAR *__RPC_FAR *prgErrors);
+
+ END_INTERFACE
+ } IRowsetDeleteVtbl;
+
+ interface IRowsetDelete
+ {
+ CONST_VTBL struct IRowsetDeleteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetDelete_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetDelete_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetDelete_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetDelete_DeleteRows(This,cRows,rghRows,pcErrors,prgErrors) \
+ (This)->lpVtbl -> DeleteRows(This,cRows,rghRows,pcErrors,prgErrors)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetDelete_DeleteRows_Proxy(
+ IRowsetDelete __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBERRORINFO __RPC_FAR *__RPC_FAR *prgErrors);
+
+
+void __RPC_STUB IRowsetDelete_DeleteRows_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetDelete_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetDeleteBookmarks_INTERFACE_DEFINED__
+#define __IRowsetDeleteBookmarks_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetDeleteBookmarks
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetDeleteBookmarks;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetDeleteBookmarks : public IRowsetDelete
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DeleteRowsByBookmark(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetDeleteBookmarksVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetDeleteBookmarks __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetDeleteBookmarks __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetDeleteBookmarks __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteRows )(
+ IRowsetDeleteBookmarks __RPC_FAR * This,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBERRORINFO __RPC_FAR *__RPC_FAR *prgErrors);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteRowsByBookmark )(
+ IRowsetDeleteBookmarks __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+ END_INTERFACE
+ } IRowsetDeleteBookmarksVtbl;
+
+ interface IRowsetDeleteBookmarks
+ {
+ CONST_VTBL struct IRowsetDeleteBookmarksVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetDeleteBookmarks_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetDeleteBookmarks_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetDeleteBookmarks_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetDeleteBookmarks_DeleteRows(This,cRows,rghRows,pcErrors,prgErrors) \
+ (This)->lpVtbl -> DeleteRows(This,cRows,rghRows,pcErrors,prgErrors)
+
+
+#define IRowsetDeleteBookmarks_DeleteRowsByBookmark(This,hChapter,cRows,rgcbBookmarks,rgpBookmarks,pcErrors,prgErrors) \
+ (This)->lpVtbl -> DeleteRowsByBookmark(This,hChapter,cRows,rgcbBookmarks,rgpBookmarks,pcErrors,prgErrors)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetDeleteBookmarks_DeleteRowsByBookmark_Proxy(
+ IRowsetDeleteBookmarks __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgpBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [out] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+
+void __RPC_STUB IRowsetDeleteBookmarks_DeleteRowsByBookmark_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetDeleteBookmarks_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetIdentity_INTERFACE_DEFINED__
+#define __IRowsetIdentity_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetIdentity
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetIdentity;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetIdentity : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE IsSameRow(
+ /* [in] */ HROW hThisRow,
+ /* [in] */ HROW hThatRow) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetIdentityVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetIdentity __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetIdentity __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetIdentity __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsSameRow )(
+ IRowsetIdentity __RPC_FAR * This,
+ /* [in] */ HROW hThisRow,
+ /* [in] */ HROW hThatRow);
+
+ END_INTERFACE
+ } IRowsetIdentityVtbl;
+
+ interface IRowsetIdentity
+ {
+ CONST_VTBL struct IRowsetIdentityVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetIdentity_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetIdentity_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetIdentity_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetIdentity_IsSameRow(This,hThisRow,hThatRow) \
+ (This)->lpVtbl -> IsSameRow(This,hThisRow,hThatRow)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetIdentity_IsSameRow_Proxy(
+ IRowsetIdentity __RPC_FAR * This,
+ /* [in] */ HROW hThisRow,
+ /* [in] */ HROW hThatRow);
+
+
+void __RPC_STUB IRowsetIdentity_IsSameRow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetIdentity_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetLockRows_INTERFACE_DEFINED__
+#define __IRowsetLockRows_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetLockRows
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBLOCKMODE;
+
+
+enum DBLOCKMODEENUM
+ { DBLOCKMODE_NONE = 0,
+ DBLOCKMODE_READ = DBLOCKMODE_NONE + 1,
+ DBLOCKMODE_INTENT = DBLOCKMODE_READ + 1,
+ DBLOCKMODE_WRITE = DBLOCKMODE_INTENT + 1
+ };
+
+EXTERN_C const IID IID_IRowsetLockRows;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetLockRows : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE LockRowsByBookmark(
+ /* [in] */ DBLOCKMODE eLockMode,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetLockRowsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetLockRows __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetLockRows __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetLockRows __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockRowsByBookmark )(
+ IRowsetLockRows __RPC_FAR * This,
+ /* [in] */ DBLOCKMODE eLockMode,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+ END_INTERFACE
+ } IRowsetLockRowsVtbl;
+
+ interface IRowsetLockRows
+ {
+ CONST_VTBL struct IRowsetLockRowsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetLockRows_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetLockRows_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetLockRows_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetLockRows_LockRowsByBookmark(This,eLockMode,hChapter,cRows,rgcbBookmarks,rgBookmarks,pcErrors,prgErrors) \
+ (This)->lpVtbl -> LockRowsByBookmark(This,eLockMode,hChapter,cRows,rgcbBookmarks,rgBookmarks,pcErrors,prgErrors)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetLockRows_LockRowsByBookmark_Proxy(
+ IRowsetLockRows __RPC_FAR * This,
+ /* [in] */ DBLOCKMODE eLockMode,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ ULONG __RPC_FAR rgcbBookmarks[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgBookmarks[ ],
+ /* [out] */ ULONG __RPC_FAR *pcErrors,
+ /* [size_is][out][in] */ DBINDEXEDERROR __RPC_FAR *__RPC_FAR *prgErrors);
+
+
+void __RPC_STUB IRowsetLockRows_LockRowsByBookmark_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetLockRows_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetNewRow_INTERFACE_DEFINED__
+#define __IRowsetNewRow_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetNewRow
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetNewRow;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetNewRow : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetNewData(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData,
+ /* [out] */ HROW __RPC_FAR *phRow) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetNewRowVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetNewRow __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetNewRow __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetNewRow __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetNewData )(
+ IRowsetNewRow __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData,
+ /* [out] */ HROW __RPC_FAR *phRow);
+
+ END_INTERFACE
+ } IRowsetNewRowVtbl;
+
+ interface IRowsetNewRow
+ {
+ CONST_VTBL struct IRowsetNewRowVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetNewRow_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetNewRow_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetNewRow_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetNewRow_SetNewData(This,hChapter,hAccessor,pData,phRow) \
+ (This)->lpVtbl -> SetNewData(This,hChapter,hAccessor,pData,phRow)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetNewRow_SetNewData_Proxy(
+ IRowsetNewRow __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData,
+ /* [out] */ HROW __RPC_FAR *phRow);
+
+
+void __RPC_STUB IRowsetNewRow_SetNewData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetNewRow_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetNewRowAfter_INTERFACE_DEFINED__
+#define __IRowsetNewRowAfter_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetNewRowAfter
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetNewRowAfter;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetNewRowAfter : public IRowsetNewRow
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetNewDataAfter(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbbmPrevious,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pbmPrevious,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData,
+ /* [out] */ HROW __RPC_FAR *phRow) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetNewRowAfterVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetNewRowAfter __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetNewRowAfter __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetNewRowAfter __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetNewData )(
+ IRowsetNewRowAfter __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData,
+ /* [out] */ HROW __RPC_FAR *phRow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetNewDataAfter )(
+ IRowsetNewRowAfter __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbbmPrevious,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pbmPrevious,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData,
+ /* [out] */ HROW __RPC_FAR *phRow);
+
+ END_INTERFACE
+ } IRowsetNewRowAfterVtbl;
+
+ interface IRowsetNewRowAfter
+ {
+ CONST_VTBL struct IRowsetNewRowAfterVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetNewRowAfter_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetNewRowAfter_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetNewRowAfter_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetNewRowAfter_SetNewData(This,hChapter,hAccessor,pData,phRow) \
+ (This)->lpVtbl -> SetNewData(This,hChapter,hAccessor,pData,phRow)
+
+
+#define IRowsetNewRowAfter_SetNewDataAfter(This,hChapter,cbbmPrevious,pbmPrevious,hAccessor,pData,phRow) \
+ (This)->lpVtbl -> SetNewDataAfter(This,hChapter,cbbmPrevious,pbmPrevious,hAccessor,pData,phRow)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetNewRowAfter_SetNewDataAfter_Proxy(
+ IRowsetNewRowAfter __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbbmPrevious,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pbmPrevious,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ const void __RPC_FAR *pData,
+ /* [out] */ HROW __RPC_FAR *phRow);
+
+
+void __RPC_STUB IRowsetNewRowAfter_SetNewDataAfter_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetNewRowAfter_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetWithParameters_INTERFACE_DEFINED__
+#define __IRowsetWithParameters_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetWithParameters
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetWithParameters;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetWithParameters : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DescribeParameters(
+ /* [out] */ ULONG __RPC_FAR *pcParams,
+ /* [out] */ DBPARAMINFO __RPC_FAR *__RPC_FAR *prgParamInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppNamesBuffer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Requery(
+ /* [in] */ DBPARAMS __RPC_FAR *pParams,
+ /* [out] */ ULONG __RPC_FAR *pulErrorParam,
+ /* [out] */ HCHAPTER __RPC_FAR *hChapter,
+ /* [out] */ VARIANT __RPC_FAR *__RPC_FAR *ppvScalarResult) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetWithParametersVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetWithParameters __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetWithParameters __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetWithParameters __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DescribeParameters )(
+ IRowsetWithParameters __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcParams,
+ /* [out] */ DBPARAMINFO __RPC_FAR *__RPC_FAR *prgParamInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppNamesBuffer);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Requery )(
+ IRowsetWithParameters __RPC_FAR * This,
+ /* [in] */ DBPARAMS __RPC_FAR *pParams,
+ /* [out] */ ULONG __RPC_FAR *pulErrorParam,
+ /* [out] */ HCHAPTER __RPC_FAR *hChapter,
+ /* [out] */ VARIANT __RPC_FAR *__RPC_FAR *ppvScalarResult);
+
+ END_INTERFACE
+ } IRowsetWithParametersVtbl;
+
+ interface IRowsetWithParameters
+ {
+ CONST_VTBL struct IRowsetWithParametersVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetWithParameters_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetWithParameters_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetWithParameters_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetWithParameters_DescribeParameters(This,pcParams,prgParamInfo,ppNamesBuffer) \
+ (This)->lpVtbl -> DescribeParameters(This,pcParams,prgParamInfo,ppNamesBuffer)
+
+#define IRowsetWithParameters_Requery(This,pParams,pulErrorParam,hChapter,ppvScalarResult) \
+ (This)->lpVtbl -> Requery(This,pParams,pulErrorParam,hChapter,ppvScalarResult)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetWithParameters_DescribeParameters_Proxy(
+ IRowsetWithParameters __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcParams,
+ /* [out] */ DBPARAMINFO __RPC_FAR *__RPC_FAR *prgParamInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppNamesBuffer);
+
+
+void __RPC_STUB IRowsetWithParameters_DescribeParameters_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetWithParameters_Requery_Proxy(
+ IRowsetWithParameters __RPC_FAR * This,
+ /* [in] */ DBPARAMS __RPC_FAR *pParams,
+ /* [out] */ ULONG __RPC_FAR *pulErrorParam,
+ /* [out] */ HCHAPTER __RPC_FAR *hChapter,
+ /* [out] */ VARIANT __RPC_FAR *__RPC_FAR *ppvScalarResult);
+
+
+void __RPC_STUB IRowsetWithParameters_Requery_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetWithParameters_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetFind_INTERFACE_DEFINED__
+#define __IRowsetFind_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetFind
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBCOMPAREOPS;
+
+
+enum DBCOMPAREOPSENUM
+ { DBCOMPAREOPS_LT = 0,
+ DBCOMPAREOPS_LE = DBCOMPAREOPS_LT + 1,
+ DBCOMPAREOPS_EQ = DBCOMPAREOPS_LE + 1,
+ DBCOMPAREOPS_GE = DBCOMPAREOPS_EQ + 1,
+ DBCOMPAREOPS_GT = DBCOMPAREOPS_GE + 1,
+ DBCOMPAREOPS_PARTIALEQ = DBCOMPAREOPS_GT + 1,
+ DBCOMPAREOPS_NE = DBCOMPAREOPS_PARTIALEQ + 1,
+ DBCOMPAREOPS_INCLUDENULLS = 0x1000
+ };
+
+EXTERN_C const IID IID_IRowsetFind;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetFind : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetRowsByValues(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ ULONG cValues,
+ /* [size_is][in] */ ULONG __RPC_FAR rgColumns[ ],
+ /* [size_is][in] */ DBTYPE __RPC_FAR rgValueTypes[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgValues[ ],
+ /* [size_is][in] */ DBCOMPAREOPS __RPC_FAR rgCompareOps[ ],
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetFindVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetFind __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetFind __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetFind __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRowsByValues )(
+ IRowsetFind __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ ULONG cValues,
+ /* [size_is][in] */ ULONG __RPC_FAR rgColumns[ ],
+ /* [size_is][in] */ DBTYPE __RPC_FAR rgValueTypes[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgValues[ ],
+ /* [size_is][in] */ DBCOMPAREOPS __RPC_FAR rgCompareOps[ ],
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+ END_INTERFACE
+ } IRowsetFindVtbl;
+
+ interface IRowsetFind
+ {
+ CONST_VTBL struct IRowsetFindVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetFind_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetFind_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetFind_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetFind_GetRowsByValues(This,hChapter,cbBookmark,pBookmark,lRowsOffset,cValues,rgColumns,rgValueTypes,rgValues,rgCompareOps,cRows,pcRowsObtained,prghRows) \
+ (This)->lpVtbl -> GetRowsByValues(This,hChapter,cbBookmark,pBookmark,lRowsOffset,cValues,rgColumns,rgValueTypes,rgValues,rgCompareOps,cRows,pcRowsObtained,prghRows)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetFind_GetRowsByValues_Proxy(
+ IRowsetFind __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ ULONG cValues,
+ /* [size_is][in] */ ULONG __RPC_FAR rgColumns[ ],
+ /* [size_is][in] */ DBTYPE __RPC_FAR rgValueTypes[ ],
+ /* [size_is][in] */ const BYTE __RPC_FAR *__RPC_FAR rgValues[ ],
+ /* [size_is][in] */ DBCOMPAREOPS __RPC_FAR rgCompareOps[ ],
+ /* [in] */ LONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [size_is][out][in] */ HROW __RPC_FAR *__RPC_FAR *prghRows);
+
+
+void __RPC_STUB IRowsetFind_GetRowsByValues_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetFind_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetAsynch_INTERFACE_DEFINED__
+#define __IRowsetAsynch_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetAsynch
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetAsynch;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetAsynch : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RatioFinished(
+ /* [out] */ ULONG __RPC_FAR *pulDenominator,
+ /* [out] */ ULONG __RPC_FAR *pulNumerator,
+ /* [out] */ ULONG __RPC_FAR *pcRows,
+ /* [out] */ BOOL __RPC_FAR *pfNewRows) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetAsynchVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetAsynch __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetAsynch __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetAsynch __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RatioFinished )(
+ IRowsetAsynch __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pulDenominator,
+ /* [out] */ ULONG __RPC_FAR *pulNumerator,
+ /* [out] */ ULONG __RPC_FAR *pcRows,
+ /* [out] */ BOOL __RPC_FAR *pfNewRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stop )(
+ IRowsetAsynch __RPC_FAR * This);
+
+ END_INTERFACE
+ } IRowsetAsynchVtbl;
+
+ interface IRowsetAsynch
+ {
+ CONST_VTBL struct IRowsetAsynchVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetAsynch_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetAsynch_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetAsynch_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetAsynch_RatioFinished(This,pulDenominator,pulNumerator,pcRows,pfNewRows) \
+ (This)->lpVtbl -> RatioFinished(This,pulDenominator,pulNumerator,pcRows,pfNewRows)
+
+#define IRowsetAsynch_Stop(This) \
+ (This)->lpVtbl -> Stop(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetAsynch_RatioFinished_Proxy(
+ IRowsetAsynch __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pulDenominator,
+ /* [out] */ ULONG __RPC_FAR *pulNumerator,
+ /* [out] */ ULONG __RPC_FAR *pcRows,
+ /* [out] */ BOOL __RPC_FAR *pfNewRows);
+
+
+void __RPC_STUB IRowsetAsynch_RatioFinished_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetAsynch_Stop_Proxy(
+ IRowsetAsynch __RPC_FAR * This);
+
+
+void __RPC_STUB IRowsetAsynch_Stop_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetAsynch_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetKeys_INTERFACE_DEFINED__
+#define __IRowsetKeys_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetKeys
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetKeys;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetKeys : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ListKeys(
+ /* [out] */ ULONG __RPC_FAR *pcColumns,
+ /* [out] */ ULONG __RPC_FAR *__RPC_FAR *prgColumns) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetKeysVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetKeys __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetKeys __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetKeys __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ListKeys )(
+ IRowsetKeys __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcColumns,
+ /* [out] */ ULONG __RPC_FAR *__RPC_FAR *prgColumns);
+
+ END_INTERFACE
+ } IRowsetKeysVtbl;
+
+ interface IRowsetKeys
+ {
+ CONST_VTBL struct IRowsetKeysVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetKeys_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetKeys_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetKeys_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetKeys_ListKeys(This,pcColumns,prgColumns) \
+ (This)->lpVtbl -> ListKeys(This,pcColumns,prgColumns)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetKeys_ListKeys_Proxy(
+ IRowsetKeys __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcColumns,
+ /* [out] */ ULONG __RPC_FAR *__RPC_FAR *prgColumns);
+
+
+void __RPC_STUB IRowsetKeys_ListKeys_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetKeys_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetNotify_INTERFACE_DEFINED__
+#define __IRowsetNotify_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetNotify
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBEVENTPHASE;
+
+
+enum DBEVENTPHASEENUM
+ { DBEVENTPHASE_OKTODO = 0,
+ DBEVENTPHASE_ABOUTTODO = DBEVENTPHASE_OKTODO + 1,
+ DBEVENTPHASE_SYNCHAFTER = DBEVENTPHASE_ABOUTTODO + 1,
+ DBEVENTPHASE_FAILEDTODO = DBEVENTPHASE_SYNCHAFTER + 1,
+ DBEVENTPHASE_DIDEVENT = DBEVENTPHASE_FAILEDTODO + 1
+ };
+typedef DWORD DBREASON;
+
+
+enum DBREASONENUM
+ { DBREASON_ROWSET_RELEASE = 0,
+ DBREASON_ROWSET_ASYNCHCOMPLETE = DBREASON_ROWSET_RELEASE + 1,
+ DBREASON_CHAPTER_ACTIVATE = DBREASON_ROWSET_ASYNCHCOMPLETE + 1,
+ DBREASON_CHAPTER_RELEASE = DBREASON_CHAPTER_ACTIVATE + 1,
+ DBREASON_COLUMN_SET = DBREASON_CHAPTER_RELEASE + 1,
+ DBREASON_COLUMN_RECALCULATED = DBREASON_COLUMN_SET + 1,
+ DBREASON_ROW_ACTIVATE = DBREASON_COLUMN_RECALCULATED + 1,
+ DBREASON_ROW_RELEASE = DBREASON_ROW_ACTIVATE + 1,
+ DBREASON_ROW_DELETE = DBREASON_ROW_RELEASE + 1,
+ DBREASON_ROW_FIRSTCHANGE = DBREASON_ROW_DELETE + 1,
+ DBREASON_ROW_INSERT = DBREASON_ROW_FIRSTCHANGE + 1,
+ DBREASON_ROW_LOCK = DBREASON_ROW_INSERT + 1,
+ DBREASON_ROW_RESYNCH = DBREASON_ROW_LOCK + 1,
+ DBREASON_ROW_UNDOCHANGE = DBREASON_ROW_RESYNCH + 1,
+ DBREASON_ROW_UNDOINSERT = DBREASON_ROW_UNDOCHANGE + 1,
+ DBREASON_ROW_UNDODELETE = DBREASON_ROW_UNDOINSERT + 1
+ };
+
+EXTERN_C const IID IID_IRowsetNotify;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetNotify : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnChapterChange(
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ DBREASON eReason) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnFieldChange(
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ HROW hRow,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG iColumn,
+ /* [in] */ DBREASON eReason,
+ /* [in] */ DBEVENTPHASE ePhase,
+ /* [in] */ BOOL fCantDeny) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnRowChange(
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ DBREASON eReason,
+ /* [in] */ DBEVENTPHASE ePhase,
+ /* [in] */ BOOL fCantDeny) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnRowsetChange(
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ DBREASON eReason) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetNotifyVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetNotify __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetNotify __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetNotify __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnChapterChange )(
+ IRowsetNotify __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ DBREASON eReason);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnFieldChange )(
+ IRowsetNotify __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ HROW hRow,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG iColumn,
+ /* [in] */ DBREASON eReason,
+ /* [in] */ DBEVENTPHASE ePhase,
+ /* [in] */ BOOL fCantDeny);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnRowChange )(
+ IRowsetNotify __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ DBREASON eReason,
+ /* [in] */ DBEVENTPHASE ePhase,
+ /* [in] */ BOOL fCantDeny);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnRowsetChange )(
+ IRowsetNotify __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ DBREASON eReason);
+
+ END_INTERFACE
+ } IRowsetNotifyVtbl;
+
+ interface IRowsetNotify
+ {
+ CONST_VTBL struct IRowsetNotifyVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetNotify_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetNotify_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetNotify_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetNotify_OnChapterChange(This,pRowset,hChapter,eReason) \
+ (This)->lpVtbl -> OnChapterChange(This,pRowset,hChapter,eReason)
+
+#define IRowsetNotify_OnFieldChange(This,pRowset,hRow,hChapter,iColumn,eReason,ePhase,fCantDeny) \
+ (This)->lpVtbl -> OnFieldChange(This,pRowset,hRow,hChapter,iColumn,eReason,ePhase,fCantDeny)
+
+#define IRowsetNotify_OnRowChange(This,pRowset,cRows,rghRows,hChapter,eReason,ePhase,fCantDeny) \
+ (This)->lpVtbl -> OnRowChange(This,pRowset,cRows,rghRows,hChapter,eReason,ePhase,fCantDeny)
+
+#define IRowsetNotify_OnRowsetChange(This,pRowset,eReason) \
+ (This)->lpVtbl -> OnRowsetChange(This,pRowset,eReason)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetNotify_OnChapterChange_Proxy(
+ IRowsetNotify __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ DBREASON eReason);
+
+
+void __RPC_STUB IRowsetNotify_OnChapterChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetNotify_OnFieldChange_Proxy(
+ IRowsetNotify __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ HROW hRow,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG iColumn,
+ /* [in] */ DBREASON eReason,
+ /* [in] */ DBEVENTPHASE ePhase,
+ /* [in] */ BOOL fCantDeny);
+
+
+void __RPC_STUB IRowsetNotify_OnFieldChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetNotify_OnRowChange_Proxy(
+ IRowsetNotify __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ ULONG cRows,
+ /* [size_is][in] */ const HROW __RPC_FAR rghRows[ ],
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ DBREASON eReason,
+ /* [in] */ DBEVENTPHASE ePhase,
+ /* [in] */ BOOL fCantDeny);
+
+
+void __RPC_STUB IRowsetNotify_OnRowChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetNotify_OnRowsetChange_Proxy(
+ IRowsetNotify __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pRowset,
+ /* [in] */ DBREASON eReason);
+
+
+void __RPC_STUB IRowsetNotify_OnRowsetChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetNotify_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetIndex_INTERFACE_DEFINED__
+#define __IRowsetIndex_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetIndex
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBSEEK;
+
+
+enum DBSEEKENUM
+ { DBSEEK_FIRSTEQ = 0x1,
+ DBSEEK_LASTEQ = 0x2,
+ DBSEEK_GE = 0x4,
+ DBSEEK_GT = 0x8,
+ DBSEEK_LE = 0x10,
+ DBSEEK_LT = 0x20
+ };
+typedef DWORD DBRANGE;
+
+
+enum DBRANGEENUM
+ { DBRANGE_INCLUSIVESTART = 0x1,
+ DBRANGE_INCLUSIVEEND = 0x2,
+ DBRANGE_EXCLUSIVESTART = 0x4,
+ DBRANGE_EXCLUSIVEEND = 0x8,
+ DBRANGE_EXCLUDENULLS = 0x10,
+ DBRANGE_PREFIX = 0x20,
+ DBRANGE_MATCH = 0x40
+ };
+
+EXTERN_C const IID IID_IRowsetIndex;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetIndex : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetIndexInfo(
+ /* [out] */ ULONG __RPC_FAR *pcKeyColumns,
+ /* [out] */ ULONG __RPC_FAR *pcIndexProperties,
+ /* [out] */ DBPROPERTY __RPC_FAR *__RPC_FAR *prgIndexProperties) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Seek(
+ /* [in] */ ULONG cvar,
+ /* [size_is][in] */ VARIANT __RPC_FAR rgvar[ ],
+ /* [in] */ DWORD dwSeekOptions) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetRange(
+ /* [in] */ ULONG cvarStart,
+ /* [size_is][in] */ VARIANT __RPC_FAR rgvarStart[ ],
+ /* [in] */ ULONG cvarEnd,
+ /* [size_is][in] */ VARIANT __RPC_FAR rgvarEnd[ ],
+ /* [in] */ DWORD dwRangeOptions) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetIndexVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetIndex __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetIndex __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetIndex __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIndexInfo )(
+ IRowsetIndex __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcKeyColumns,
+ /* [out] */ ULONG __RPC_FAR *pcIndexProperties,
+ /* [out] */ DBPROPERTY __RPC_FAR *__RPC_FAR *prgIndexProperties);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Seek )(
+ IRowsetIndex __RPC_FAR * This,
+ /* [in] */ ULONG cvar,
+ /* [size_is][in] */ VARIANT __RPC_FAR rgvar[ ],
+ /* [in] */ DWORD dwSeekOptions);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetRange )(
+ IRowsetIndex __RPC_FAR * This,
+ /* [in] */ ULONG cvarStart,
+ /* [size_is][in] */ VARIANT __RPC_FAR rgvarStart[ ],
+ /* [in] */ ULONG cvarEnd,
+ /* [size_is][in] */ VARIANT __RPC_FAR rgvarEnd[ ],
+ /* [in] */ DWORD dwRangeOptions);
+
+ END_INTERFACE
+ } IRowsetIndexVtbl;
+
+ interface IRowsetIndex
+ {
+ CONST_VTBL struct IRowsetIndexVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetIndex_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetIndex_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetIndex_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetIndex_GetIndexInfo(This,pcKeyColumns,pcIndexProperties,prgIndexProperties) \
+ (This)->lpVtbl -> GetIndexInfo(This,pcKeyColumns,pcIndexProperties,prgIndexProperties)
+
+#define IRowsetIndex_Seek(This,cvar,rgvar,dwSeekOptions) \
+ (This)->lpVtbl -> Seek(This,cvar,rgvar,dwSeekOptions)
+
+#define IRowsetIndex_SetRange(This,cvarStart,rgvarStart,cvarEnd,rgvarEnd,dwRangeOptions) \
+ (This)->lpVtbl -> SetRange(This,cvarStart,rgvarStart,cvarEnd,rgvarEnd,dwRangeOptions)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetIndex_GetIndexInfo_Proxy(
+ IRowsetIndex __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcKeyColumns,
+ /* [out] */ ULONG __RPC_FAR *pcIndexProperties,
+ /* [out] */ DBPROPERTY __RPC_FAR *__RPC_FAR *prgIndexProperties);
+
+
+void __RPC_STUB IRowsetIndex_GetIndexInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetIndex_Seek_Proxy(
+ IRowsetIndex __RPC_FAR * This,
+ /* [in] */ ULONG cvar,
+ /* [size_is][in] */ VARIANT __RPC_FAR rgvar[ ],
+ /* [in] */ DWORD dwSeekOptions);
+
+
+void __RPC_STUB IRowsetIndex_Seek_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetIndex_SetRange_Proxy(
+ IRowsetIndex __RPC_FAR * This,
+ /* [in] */ ULONG cvarStart,
+ /* [size_is][in] */ VARIANT __RPC_FAR rgvarStart[ ],
+ /* [in] */ ULONG cvarEnd,
+ /* [size_is][in] */ VARIANT __RPC_FAR rgvarEnd[ ],
+ /* [in] */ DWORD dwRangeOptions);
+
+
+void __RPC_STUB IRowsetIndex_SetRange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetIndex_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetWatchAll_INTERFACE_DEFINED__
+#define __IRowsetWatchAll_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetWatchAll
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IRowsetWatchAll;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetWatchAll : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Acknowledge( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetWatchAllVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetWatchAll __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetWatchAll __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetWatchAll __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Acknowledge )(
+ IRowsetWatchAll __RPC_FAR * This);
+
+ END_INTERFACE
+ } IRowsetWatchAllVtbl;
+
+ interface IRowsetWatchAll
+ {
+ CONST_VTBL struct IRowsetWatchAllVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetWatchAll_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetWatchAll_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetWatchAll_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetWatchAll_Acknowledge(This) \
+ (This)->lpVtbl -> Acknowledge(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetWatchAll_Acknowledge_Proxy(
+ IRowsetWatchAll __RPC_FAR * This);
+
+
+void __RPC_STUB IRowsetWatchAll_Acknowledge_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetWatchAll_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetWatchNotify_INTERFACE_DEFINED__
+#define __IRowsetWatchNotify_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetWatchNotify
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBWATCHNOTIFY;
+
+
+enum DBWATCHNOTIFYENUM
+ { DBWATCHNOTIFY_ROWSCHANGED = 1,
+ DBWATCHNOTIFY_QUERYDONE = 2,
+ DBWATCHNOTIFY_QUERYREEXECUTED = 3
+ };
+
+EXTERN_C const IID IID_IRowsetWatchNotify;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetWatchNotify : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnChange(
+ /* [in] */ IRowset __RPC_FAR *pRowset,
+ /* [in] */ DBWATCHNOTIFY eChangeReason) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetWatchNotifyVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetWatchNotify __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetWatchNotify __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetWatchNotify __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnChange )(
+ IRowsetWatchNotify __RPC_FAR * This,
+ /* [in] */ IRowset __RPC_FAR *pRowset,
+ /* [in] */ DBWATCHNOTIFY eChangeReason);
+
+ END_INTERFACE
+ } IRowsetWatchNotifyVtbl;
+
+ interface IRowsetWatchNotify
+ {
+ CONST_VTBL struct IRowsetWatchNotifyVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetWatchNotify_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetWatchNotify_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetWatchNotify_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetWatchNotify_OnChange(This,pRowset,eChangeReason) \
+ (This)->lpVtbl -> OnChange(This,pRowset,eChangeReason)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetWatchNotify_OnChange_Proxy(
+ IRowsetWatchNotify __RPC_FAR * This,
+ /* [in] */ IRowset __RPC_FAR *pRowset,
+ /* [in] */ DBWATCHNOTIFY eChangeReason);
+
+
+void __RPC_STUB IRowsetWatchNotify_OnChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetWatchNotify_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetWatchRegion_INTERFACE_DEFINED__
+#define __IRowsetWatchRegion_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetWatchRegion
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBWATCHMODE;
+
+
+enum DBWATCHMODEENUM
+ { DBWATCHMODE_ALL = 0x1,
+ DBWATCHMODE_EXTEND = 0x2,
+ DBWATCHMODE_MOVE = 0x4,
+ DBWATCHMODE_COUNT = 0x8
+ };
+typedef DWORD DBROWCHANGEKIND;
+
+
+enum DBROWCHANGEKINDENUM
+ { DBROWCHANGEKIND_INSERT = 0,
+ DBROWCHANGEKIND_DELETE = DBROWCHANGEKIND_INSERT + 1,
+ DBROWCHANGEKIND_UPDATE = DBROWCHANGEKIND_DELETE + 1,
+ DBROWCHANGEKIND_COUNT = DBROWCHANGEKIND_UPDATE + 1
+ };
+typedef struct tagDBROWWATCHRANGE
+ {
+ HWATCHREGION hRegion;
+ DBROWCHANGEKIND eChangeKind;
+ HROW hRow;
+ ULONG iRow;
+ } DBROWWATCHCHANGE;
+
+
+EXTERN_C const IID IID_IRowsetWatchRegion;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetWatchRegion : public IRowsetWatchAll
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateWatchRegion(
+ /* [in] */ DBWATCHMODE dwWatchMode,
+ /* [out] */ HWATCHREGION __RPC_FAR *phRegion) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ChangeWatchMode(
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ DBWATCHMODE dwWatchMode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteWatchRegion(
+ /* [in] */ HWATCHREGION hRegion) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWatchRegionInfo(
+ /* [in] */ HWATCHREGION hRegion,
+ /* [out] */ DBWATCHMODE __RPC_FAR *pdwWatchMode,
+ /* [out] */ HCHAPTER __RPC_FAR *phChapter,
+ /* [out] */ ULONG __RPC_FAR *pcbBookmark,
+ /* [out] */ BYTE __RPC_FAR *__RPC_FAR *ppBookmark,
+ /* [out] */ LONG __RPC_FAR *pcRows) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Refresh(
+ /* [out] */ ULONG __RPC_FAR *pcChangesObtained,
+ /* [out] */ DBROWWATCHCHANGE __RPC_FAR *__RPC_FAR *prgChanges) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ShrinkWatchRegion(
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG cRows) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetWatchRegionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetWatchRegion __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetWatchRegion __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Acknowledge )(
+ IRowsetWatchRegion __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateWatchRegion )(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ DBWATCHMODE dwWatchMode,
+ /* [out] */ HWATCHREGION __RPC_FAR *phRegion);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ChangeWatchMode )(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ DBWATCHMODE dwWatchMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteWatchRegion )(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWatchRegionInfo )(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [out] */ DBWATCHMODE __RPC_FAR *pdwWatchMode,
+ /* [out] */ HCHAPTER __RPC_FAR *phChapter,
+ /* [out] */ ULONG __RPC_FAR *pcbBookmark,
+ /* [out] */ BYTE __RPC_FAR *__RPC_FAR *ppBookmark,
+ /* [out] */ LONG __RPC_FAR *pcRows);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Refresh )(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcChangesObtained,
+ /* [out] */ DBROWWATCHCHANGE __RPC_FAR *__RPC_FAR *prgChanges);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ShrinkWatchRegion )(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG cRows);
+
+ END_INTERFACE
+ } IRowsetWatchRegionVtbl;
+
+ interface IRowsetWatchRegion
+ {
+ CONST_VTBL struct IRowsetWatchRegionVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetWatchRegion_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetWatchRegion_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetWatchRegion_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetWatchRegion_Acknowledge(This) \
+ (This)->lpVtbl -> Acknowledge(This)
+
+
+#define IRowsetWatchRegion_CreateWatchRegion(This,dwWatchMode,phRegion) \
+ (This)->lpVtbl -> CreateWatchRegion(This,dwWatchMode,phRegion)
+
+#define IRowsetWatchRegion_ChangeWatchMode(This,hRegion,dwWatchMode) \
+ (This)->lpVtbl -> ChangeWatchMode(This,hRegion,dwWatchMode)
+
+#define IRowsetWatchRegion_DeleteWatchRegion(This,hRegion) \
+ (This)->lpVtbl -> DeleteWatchRegion(This,hRegion)
+
+#define IRowsetWatchRegion_GetWatchRegionInfo(This,hRegion,pdwWatchMode,phChapter,pcbBookmark,ppBookmark,pcRows) \
+ (This)->lpVtbl -> GetWatchRegionInfo(This,hRegion,pdwWatchMode,phChapter,pcbBookmark,ppBookmark,pcRows)
+
+#define IRowsetWatchRegion_Refresh(This,pcChangesObtained,prgChanges) \
+ (This)->lpVtbl -> Refresh(This,pcChangesObtained,prgChanges)
+
+#define IRowsetWatchRegion_ShrinkWatchRegion(This,hRegion,hChapter,cbBookmark,pBookmark,cRows) \
+ (This)->lpVtbl -> ShrinkWatchRegion(This,hRegion,hChapter,cbBookmark,pBookmark,cRows)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetWatchRegion_CreateWatchRegion_Proxy(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ DBWATCHMODE dwWatchMode,
+ /* [out] */ HWATCHREGION __RPC_FAR *phRegion);
+
+
+void __RPC_STUB IRowsetWatchRegion_CreateWatchRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetWatchRegion_ChangeWatchMode_Proxy(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ DBWATCHMODE dwWatchMode);
+
+
+void __RPC_STUB IRowsetWatchRegion_ChangeWatchMode_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetWatchRegion_DeleteWatchRegion_Proxy(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion);
+
+
+void __RPC_STUB IRowsetWatchRegion_DeleteWatchRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetWatchRegion_GetWatchRegionInfo_Proxy(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [out] */ DBWATCHMODE __RPC_FAR *pdwWatchMode,
+ /* [out] */ HCHAPTER __RPC_FAR *phChapter,
+ /* [out] */ ULONG __RPC_FAR *pcbBookmark,
+ /* [out] */ BYTE __RPC_FAR *__RPC_FAR *ppBookmark,
+ /* [out] */ LONG __RPC_FAR *pcRows);
+
+
+void __RPC_STUB IRowsetWatchRegion_GetWatchRegionInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetWatchRegion_Refresh_Proxy(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcChangesObtained,
+ /* [out] */ DBROWWATCHCHANGE __RPC_FAR *__RPC_FAR *prgChanges);
+
+
+void __RPC_STUB IRowsetWatchRegion_Refresh_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetWatchRegion_ShrinkWatchRegion_Proxy(
+ IRowsetWatchRegion __RPC_FAR * This,
+ /* [in] */ HWATCHREGION hRegion,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG cRows);
+
+
+void __RPC_STUB IRowsetWatchRegion_ShrinkWatchRegion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetWatchRegion_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetCopyRows_INTERFACE_DEFINED__
+#define __IRowsetCopyRows_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetCopyRows
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef ULONG HSOURCE;
+
+
+EXTERN_C const IID IID_IRowsetCopyRows;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetCopyRows : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CloseSource(
+ /* [in] */ HSOURCE hSourceID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CopyByHROWS(
+ /* [in] */ HSOURCE hSourceID,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRows,
+ /* [size_is][in] */ HROW __RPC_FAR rghRows[ ],
+ /* [in] */ ULONG bFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CopyRows(
+ /* [in] */ HSOURCE hSourceID,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRows,
+ /* [in] */ ULONG bFlags,
+ /* [out] */ ULONG __RPC_FAR *pcRowsCopied) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DefineSource(
+ /* [in] */ const IRowset __RPC_FAR *pRowsetSource,
+ /* [in] */ const ULONG cColIds,
+ /* [size_is][in] */ const LONG __RPC_FAR rgSourceColumns[ ],
+ /* [size_is][in] */ const LONG __RPC_FAR rgTargetColumns[ ],
+ /* [out] */ HSOURCE __RPC_FAR *phSourceID) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetCopyRowsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetCopyRows __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetCopyRows __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetCopyRows __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CloseSource )(
+ IRowsetCopyRows __RPC_FAR * This,
+ /* [in] */ HSOURCE hSourceID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CopyByHROWS )(
+ IRowsetCopyRows __RPC_FAR * This,
+ /* [in] */ HSOURCE hSourceID,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRows,
+ /* [size_is][in] */ HROW __RPC_FAR rghRows[ ],
+ /* [in] */ ULONG bFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CopyRows )(
+ IRowsetCopyRows __RPC_FAR * This,
+ /* [in] */ HSOURCE hSourceID,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRows,
+ /* [in] */ ULONG bFlags,
+ /* [out] */ ULONG __RPC_FAR *pcRowsCopied);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DefineSource )(
+ IRowsetCopyRows __RPC_FAR * This,
+ /* [in] */ const IRowset __RPC_FAR *pRowsetSource,
+ /* [in] */ const ULONG cColIds,
+ /* [size_is][in] */ const LONG __RPC_FAR rgSourceColumns[ ],
+ /* [size_is][in] */ const LONG __RPC_FAR rgTargetColumns[ ],
+ /* [out] */ HSOURCE __RPC_FAR *phSourceID);
+
+ END_INTERFACE
+ } IRowsetCopyRowsVtbl;
+
+ interface IRowsetCopyRows
+ {
+ CONST_VTBL struct IRowsetCopyRowsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetCopyRows_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetCopyRows_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetCopyRows_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetCopyRows_CloseSource(This,hSourceID) \
+ (This)->lpVtbl -> CloseSource(This,hSourceID)
+
+#define IRowsetCopyRows_CopyByHROWS(This,hSourceID,hChapter,cRows,rghRows,bFlags) \
+ (This)->lpVtbl -> CopyByHROWS(This,hSourceID,hChapter,cRows,rghRows,bFlags)
+
+#define IRowsetCopyRows_CopyRows(This,hSourceID,hChapter,cRows,bFlags,pcRowsCopied) \
+ (This)->lpVtbl -> CopyRows(This,hSourceID,hChapter,cRows,bFlags,pcRowsCopied)
+
+#define IRowsetCopyRows_DefineSource(This,pRowsetSource,cColIds,rgSourceColumns,rgTargetColumns,phSourceID) \
+ (This)->lpVtbl -> DefineSource(This,pRowsetSource,cColIds,rgSourceColumns,rgTargetColumns,phSourceID)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetCopyRows_CloseSource_Proxy(
+ IRowsetCopyRows __RPC_FAR * This,
+ /* [in] */ HSOURCE hSourceID);
+
+
+void __RPC_STUB IRowsetCopyRows_CloseSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetCopyRows_CopyByHROWS_Proxy(
+ IRowsetCopyRows __RPC_FAR * This,
+ /* [in] */ HSOURCE hSourceID,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRows,
+ /* [size_is][in] */ HROW __RPC_FAR rghRows[ ],
+ /* [in] */ ULONG bFlags);
+
+
+void __RPC_STUB IRowsetCopyRows_CopyByHROWS_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetCopyRows_CopyRows_Proxy(
+ IRowsetCopyRows __RPC_FAR * This,
+ /* [in] */ HSOURCE hSourceID,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ LONG cRows,
+ /* [in] */ ULONG bFlags,
+ /* [out] */ ULONG __RPC_FAR *pcRowsCopied);
+
+
+void __RPC_STUB IRowsetCopyRows_CopyRows_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IRowsetCopyRows_DefineSource_Proxy(
+ IRowsetCopyRows __RPC_FAR * This,
+ /* [in] */ const IRowset __RPC_FAR *pRowsetSource,
+ /* [in] */ const ULONG cColIds,
+ /* [size_is][in] */ const LONG __RPC_FAR rgSourceColumns[ ],
+ /* [size_is][in] */ const LONG __RPC_FAR rgTargetColumns[ ],
+ /* [out] */ HSOURCE __RPC_FAR *phSourceID);
+
+
+void __RPC_STUB IRowsetCopyRows_DefineSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetCopyRows_INTERFACE_DEFINED__ */
+
+
+#ifndef __IReadData_INTERFACE_DEFINED__
+#define __IReadData_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IReadData
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IReadData;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IReadData : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ReadData(
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ ULONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [out][in] */ BYTE __RPC_FAR *__RPC_FAR *ppFixedData,
+ /* [out][in] */ ULONG __RPC_FAR *pcbVariableTotal,
+ /* [out][in] */ BYTE __RPC_FAR *__RPC_FAR *ppVariableData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReleaseChapter(
+ /* [in] */ HCHAPTER hChapter) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IReadDataVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IReadData __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IReadData __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IReadData __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReadData )(
+ IReadData __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ ULONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [out][in] */ BYTE __RPC_FAR *__RPC_FAR *ppFixedData,
+ /* [out][in] */ ULONG __RPC_FAR *pcbVariableTotal,
+ /* [out][in] */ BYTE __RPC_FAR *__RPC_FAR *ppVariableData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReleaseChapter )(
+ IReadData __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+ END_INTERFACE
+ } IReadDataVtbl;
+
+ interface IReadData
+ {
+ CONST_VTBL struct IReadDataVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IReadData_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IReadData_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IReadData_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IReadData_ReadData(This,hChapter,cbBookmark,pBookmark,lRowsOffset,hAccessor,cRows,pcRowsObtained,ppFixedData,pcbVariableTotal,ppVariableData) \
+ (This)->lpVtbl -> ReadData(This,hChapter,cbBookmark,pBookmark,lRowsOffset,hAccessor,cRows,pcRowsObtained,ppFixedData,pcbVariableTotal,ppVariableData)
+
+#define IReadData_ReleaseChapter(This,hChapter) \
+ (This)->lpVtbl -> ReleaseChapter(This,hChapter)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IReadData_ReadData_Proxy(
+ IReadData __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter,
+ /* [in] */ ULONG cbBookmark,
+ /* [size_is][in] */ const BYTE __RPC_FAR *pBookmark,
+ /* [in] */ LONG lRowsOffset,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ ULONG cRows,
+ /* [out] */ ULONG __RPC_FAR *pcRowsObtained,
+ /* [out][in] */ BYTE __RPC_FAR *__RPC_FAR *ppFixedData,
+ /* [out][in] */ ULONG __RPC_FAR *pcbVariableTotal,
+ /* [out][in] */ BYTE __RPC_FAR *__RPC_FAR *ppVariableData);
+
+
+void __RPC_STUB IReadData_ReadData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IReadData_ReleaseChapter_Proxy(
+ IReadData __RPC_FAR * This,
+ /* [in] */ HCHAPTER hChapter);
+
+
+void __RPC_STUB IReadData_ReleaseChapter_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IReadData_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICommand_INTERFACE_DEFINED__
+#define __ICommand_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICommand
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_ICommand;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICommand : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [out] */ ICommand __RPC_FAR *__RPC_FAR *ppClone) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Execute(
+ /* [in] */ IUnknown __RPC_FAR *__RPC_FAR rgpUnkOuters[ ],
+ /* [in] */ REFIID riid,
+ /* [out][in] */ DBPARAMS __RPC_FAR *pParams,
+ /* [out] */ HCHAPTER __RPC_FAR *phChapter,
+ /* [in] */ BOOL fResume,
+ /* [out][in] */ ULONG __RPC_FAR *pcRowsets,
+ /* [out][in] */ IUnknown __RPC_FAR *__RPC_FAR *__RPC_FAR *prgpRowsets,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppRowsetNames) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDBSession(
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppSession) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICommandVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICommand __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICommand __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICommand __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ ICommand __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [out] */ ICommand __RPC_FAR *__RPC_FAR *ppClone);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Execute )(
+ ICommand __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *__RPC_FAR rgpUnkOuters[ ],
+ /* [in] */ REFIID riid,
+ /* [out][in] */ DBPARAMS __RPC_FAR *pParams,
+ /* [out] */ HCHAPTER __RPC_FAR *phChapter,
+ /* [in] */ BOOL fResume,
+ /* [out][in] */ ULONG __RPC_FAR *pcRowsets,
+ /* [out][in] */ IUnknown __RPC_FAR *__RPC_FAR *__RPC_FAR *prgpRowsets,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppRowsetNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDBSession )(
+ ICommand __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppSession);
+
+ END_INTERFACE
+ } ICommandVtbl;
+
+ interface ICommand
+ {
+ CONST_VTBL struct ICommandVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICommand_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICommand_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICommand_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICommand_Clone(This,pUnkOuter,ppClone) \
+ (This)->lpVtbl -> Clone(This,pUnkOuter,ppClone)
+
+#define ICommand_Execute(This,rgpUnkOuters,riid,pParams,phChapter,fResume,pcRowsets,prgpRowsets,ppRowsetNames) \
+ (This)->lpVtbl -> Execute(This,rgpUnkOuters,riid,pParams,phChapter,fResume,pcRowsets,prgpRowsets,ppRowsetNames)
+
+#define ICommand_GetDBSession(This,riid,ppSession) \
+ (This)->lpVtbl -> GetDBSession(This,riid,ppSession)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICommand_Clone_Proxy(
+ ICommand __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [out] */ ICommand __RPC_FAR *__RPC_FAR *ppClone);
+
+
+void __RPC_STUB ICommand_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommand_Execute_Proxy(
+ ICommand __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *__RPC_FAR rgpUnkOuters[ ],
+ /* [in] */ REFIID riid,
+ /* [out][in] */ DBPARAMS __RPC_FAR *pParams,
+ /* [out] */ HCHAPTER __RPC_FAR *phChapter,
+ /* [in] */ BOOL fResume,
+ /* [out][in] */ ULONG __RPC_FAR *pcRowsets,
+ /* [out][in] */ IUnknown __RPC_FAR *__RPC_FAR *__RPC_FAR *prgpRowsets,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppRowsetNames);
+
+
+void __RPC_STUB ICommand_Execute_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommand_GetDBSession_Proxy(
+ ICommand __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppSession);
+
+
+void __RPC_STUB ICommand_GetDBSession_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICommand_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICommandCost_INTERFACE_DEFINED__
+#define __ICommandCost_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICommandCost
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBRESOURCEKIND;
+
+
+enum DBRESOURCEKINDENUM
+ { DBRESOURCE_INVALID = 0,
+ DBRESOURCE_TOTAL = 1,
+ DBRESOURCE_CPU = 2,
+ DBRESOURCE_MEMORY = 3,
+ DBRESOURCE_DISK = 4,
+ DBRESOURCE_NETWORK = 5,
+ DBRESOURCE_RESPONSE = 6,
+ DBRESOURCE_ROWS = 7,
+ DBRESOURCE_OTHER = 8
+ };
+typedef DWORD DBCOSTUNIT;
+
+
+enum DBCOSTUNITENUM
+ { DBUNIT_INVALID = 0,
+ DBUNIT_WEIGHT = 0x1,
+ DBUNIT_PERCENT = 0x2,
+ DBUNIT_MAXIMUM = 0x4,
+ DBUNIT_MINIMUM = 0x8,
+ DBUNIT_MICRO_SECOND = 0x10,
+ DBUNIT_MILLI_SECOND = 0x20,
+ DBUNIT_SECOND = 0x40,
+ DBUNIT_MINUTE = 0x80,
+ DBUNIT_HOUR = 0x100,
+ DBUNIT_BYTE = 0x200,
+ DBUNIT_KILO_BYTE = 0x400,
+ DBUNIT_MEGA_BYTE = 0x800,
+ DBUNIT_GIGA_BYTE = 0x1000,
+ DBUNIT_NUM_MSGS = 0x2000,
+ DBUNIT_NUM_LOCKS = 0x4000,
+ DBUNIT_NUM_ROWS = 0x8000,
+ DBUNIT_OTHER = 0x10000
+ };
+typedef struct tagDBCOST
+ {
+ DBRESOURCEKIND eKind;
+ DBCOSTUNIT dwUnits;
+ LONG lValue;
+ } DBCOST;
+
+typedef DWORD DBEXECLIMITS;
+
+
+enum DBEXECLIMITSENUM
+ { DBEXECLIMITS_ABORT = 1,
+ DBEXECLIMITS_STOP = 2,
+ DBEXECLIMITS_SUSPEND = 3
+ };
+
+EXTERN_C const IID IID_ICommandCost;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICommandCost : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetAccumulatedCost(
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostLimits,
+ /* [out] */ DBCOST __RPC_FAR *__RPC_FAR *prgCostLimits) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCostEstimate(
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostEstimates,
+ /* [out] */ DBCOST __RPC_FAR *prgCostEstimates) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCostGoals(
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostGoals,
+ /* [out] */ DBCOST __RPC_FAR *prgCostGoals) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCostLimits(
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostLimits,
+ /* [out] */ DBCOST __RPC_FAR *prgCostLimits) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCostGoals(
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ ULONG cCostGoals,
+ /* [size_is][in] */ DBCOST __RPC_FAR rgCostGoals[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCostLimits(
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ ULONG cCostLimits,
+ /* [in] */ DBCOST __RPC_FAR *prgCostLimits,
+ /* [in] */ DBEXECLIMITS dwExecutionFlags) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICommandCostVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICommandCost __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICommandCost __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAccumulatedCost )(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostLimits,
+ /* [out] */ DBCOST __RPC_FAR *__RPC_FAR *prgCostLimits);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCostEstimate )(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostEstimates,
+ /* [out] */ DBCOST __RPC_FAR *prgCostEstimates);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCostGoals )(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostGoals,
+ /* [out] */ DBCOST __RPC_FAR *prgCostGoals);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCostLimits )(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostLimits,
+ /* [out] */ DBCOST __RPC_FAR *prgCostLimits);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetCostGoals )(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ ULONG cCostGoals,
+ /* [size_is][in] */ DBCOST __RPC_FAR rgCostGoals[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetCostLimits )(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ ULONG cCostLimits,
+ /* [in] */ DBCOST __RPC_FAR *prgCostLimits,
+ /* [in] */ DBEXECLIMITS dwExecutionFlags);
+
+ END_INTERFACE
+ } ICommandCostVtbl;
+
+ interface ICommandCost
+ {
+ CONST_VTBL struct ICommandCostVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICommandCost_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICommandCost_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICommandCost_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICommandCost_GetAccumulatedCost(This,pwszRowsetName,pcCostLimits,prgCostLimits) \
+ (This)->lpVtbl -> GetAccumulatedCost(This,pwszRowsetName,pcCostLimits,prgCostLimits)
+
+#define ICommandCost_GetCostEstimate(This,pwszRowsetName,pcCostEstimates,prgCostEstimates) \
+ (This)->lpVtbl -> GetCostEstimate(This,pwszRowsetName,pcCostEstimates,prgCostEstimates)
+
+#define ICommandCost_GetCostGoals(This,pwszRowsetName,pcCostGoals,prgCostGoals) \
+ (This)->lpVtbl -> GetCostGoals(This,pwszRowsetName,pcCostGoals,prgCostGoals)
+
+#define ICommandCost_GetCostLimits(This,pwszRowsetName,pcCostLimits,prgCostLimits) \
+ (This)->lpVtbl -> GetCostLimits(This,pwszRowsetName,pcCostLimits,prgCostLimits)
+
+#define ICommandCost_SetCostGoals(This,pwszRowsetName,cCostGoals,rgCostGoals) \
+ (This)->lpVtbl -> SetCostGoals(This,pwszRowsetName,cCostGoals,rgCostGoals)
+
+#define ICommandCost_SetCostLimits(This,pwszRowsetName,cCostLimits,prgCostLimits,dwExecutionFlags) \
+ (This)->lpVtbl -> SetCostLimits(This,pwszRowsetName,cCostLimits,prgCostLimits,dwExecutionFlags)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICommandCost_GetAccumulatedCost_Proxy(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostLimits,
+ /* [out] */ DBCOST __RPC_FAR *__RPC_FAR *prgCostLimits);
+
+
+void __RPC_STUB ICommandCost_GetAccumulatedCost_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandCost_GetCostEstimate_Proxy(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostEstimates,
+ /* [out] */ DBCOST __RPC_FAR *prgCostEstimates);
+
+
+void __RPC_STUB ICommandCost_GetCostEstimate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandCost_GetCostGoals_Proxy(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostGoals,
+ /* [out] */ DBCOST __RPC_FAR *prgCostGoals);
+
+
+void __RPC_STUB ICommandCost_GetCostGoals_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandCost_GetCostLimits_Proxy(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [out] */ ULONG __RPC_FAR *pcCostLimits,
+ /* [out] */ DBCOST __RPC_FAR *prgCostLimits);
+
+
+void __RPC_STUB ICommandCost_GetCostLimits_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandCost_SetCostGoals_Proxy(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ ULONG cCostGoals,
+ /* [size_is][in] */ DBCOST __RPC_FAR rgCostGoals[ ]);
+
+
+void __RPC_STUB ICommandCost_SetCostGoals_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandCost_SetCostLimits_Proxy(
+ ICommandCost __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ ULONG cCostLimits,
+ /* [in] */ DBCOST __RPC_FAR *prgCostLimits,
+ /* [in] */ DBEXECLIMITS dwExecutionFlags);
+
+
+void __RPC_STUB ICommandCost_SetCostLimits_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICommandCost_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICommandPrepare_INTERFACE_DEFINED__
+#define __ICommandPrepare_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICommandPrepare
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_ICommandPrepare;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICommandPrepare : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Prepare(
+ /* [in] */ ULONG cExpectedRuns) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unprepare( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICommandPrepareVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICommandPrepare __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICommandPrepare __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICommandPrepare __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Prepare )(
+ ICommandPrepare __RPC_FAR * This,
+ /* [in] */ ULONG cExpectedRuns);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unprepare )(
+ ICommandPrepare __RPC_FAR * This);
+
+ END_INTERFACE
+ } ICommandPrepareVtbl;
+
+ interface ICommandPrepare
+ {
+ CONST_VTBL struct ICommandPrepareVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICommandPrepare_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICommandPrepare_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICommandPrepare_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICommandPrepare_Prepare(This,cExpectedRuns) \
+ (This)->lpVtbl -> Prepare(This,cExpectedRuns)
+
+#define ICommandPrepare_Unprepare(This) \
+ (This)->lpVtbl -> Unprepare(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICommandPrepare_Prepare_Proxy(
+ ICommandPrepare __RPC_FAR * This,
+ /* [in] */ ULONG cExpectedRuns);
+
+
+void __RPC_STUB ICommandPrepare_Prepare_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandPrepare_Unprepare_Proxy(
+ ICommandPrepare __RPC_FAR * This);
+
+
+void __RPC_STUB ICommandPrepare_Unprepare_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICommandPrepare_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICommandProperties_INTERFACE_DEFINED__
+#define __ICommandProperties_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICommandProperties
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBPROPERTYERROR;
+
+
+enum DBPROPERTYERRORENUM
+ { DBPROPERTYERROR_NOERROR = 0,
+ DBPROPERTYERROR_CONFLICTING = 1,
+ DBPROPERTYERROR_NOTSUPPORTED = 2,
+ DBPROPERTYERROR_NOTSET = 3,
+ DBPROPERTYERROR_BADPROPERTYOPTION = 4,
+ DBPROPERTYERROR_BADPROPERTYVALUE = 5,
+ DBPROPERTYERROR_NOTSETTABLE = 6
+ };
+
+EXTERN_C const IID IID_ICommandProperties;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICommandProperties : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetProperties(
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ const ULONG cProperties,
+ /* [size_is][in] */ const GUID __RPC_FAR rgProperties[ ],
+ /* [out] */ ULONG __RPC_FAR *pcProperties,
+ /* [size_is][out] */ DBPROPERTYSUPPORT __RPC_FAR *__RPC_FAR *prgProperties) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetProperties(
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ ULONG cProperties,
+ /* [size_is][in] */ const DBPROPERTYSUPPORT __RPC_FAR rgProperties[ ],
+ /* [size_is][out] */ DBPROPERTYERROR __RPC_FAR rgPropertyErrors[ ]) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICommandPropertiesVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICommandProperties __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICommandProperties __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICommandProperties __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetProperties )(
+ ICommandProperties __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ const ULONG cProperties,
+ /* [size_is][in] */ const GUID __RPC_FAR rgProperties[ ],
+ /* [out] */ ULONG __RPC_FAR *pcProperties,
+ /* [size_is][out] */ DBPROPERTYSUPPORT __RPC_FAR *__RPC_FAR *prgProperties);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetProperties )(
+ ICommandProperties __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ ULONG cProperties,
+ /* [size_is][in] */ const DBPROPERTYSUPPORT __RPC_FAR rgProperties[ ],
+ /* [size_is][out] */ DBPROPERTYERROR __RPC_FAR rgPropertyErrors[ ]);
+
+ END_INTERFACE
+ } ICommandPropertiesVtbl;
+
+ interface ICommandProperties
+ {
+ CONST_VTBL struct ICommandPropertiesVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICommandProperties_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICommandProperties_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICommandProperties_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICommandProperties_GetProperties(This,pwszRowsetName,cProperties,rgProperties,pcProperties,prgProperties) \
+ (This)->lpVtbl -> GetProperties(This,pwszRowsetName,cProperties,rgProperties,pcProperties,prgProperties)
+
+#define ICommandProperties_SetProperties(This,pwszRowsetName,cProperties,rgProperties,rgPropertyErrors) \
+ (This)->lpVtbl -> SetProperties(This,pwszRowsetName,cProperties,rgProperties,rgPropertyErrors)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICommandProperties_GetProperties_Proxy(
+ ICommandProperties __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ const ULONG cProperties,
+ /* [size_is][in] */ const GUID __RPC_FAR rgProperties[ ],
+ /* [out] */ ULONG __RPC_FAR *pcProperties,
+ /* [size_is][out] */ DBPROPERTYSUPPORT __RPC_FAR *__RPC_FAR *prgProperties);
+
+
+void __RPC_STUB ICommandProperties_GetProperties_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandProperties_SetProperties_Proxy(
+ ICommandProperties __RPC_FAR * This,
+ /* [in] */ LPCWSTR pwszRowsetName,
+ /* [in] */ ULONG cProperties,
+ /* [size_is][in] */ const DBPROPERTYSUPPORT __RPC_FAR rgProperties[ ],
+ /* [size_is][out] */ DBPROPERTYERROR __RPC_FAR rgPropertyErrors[ ]);
+
+
+void __RPC_STUB ICommandProperties_SetProperties_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICommandProperties_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICommandText_INTERFACE_DEFINED__
+#define __ICommandText_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICommandText
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_ICommandText;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICommandText : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetCommandText(
+ /* [out][in] */ GUID __RPC_FAR *pguidDialect,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszCommand) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCommandText(
+ /* [in] */ REFGUID rguidDialect,
+ /* [in] */ const LPWSTR pwszCommand) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICommandTextVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICommandText __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICommandText __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICommandText __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCommandText )(
+ ICommandText __RPC_FAR * This,
+ /* [out][in] */ GUID __RPC_FAR *pguidDialect,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszCommand);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetCommandText )(
+ ICommandText __RPC_FAR * This,
+ /* [in] */ REFGUID rguidDialect,
+ /* [in] */ const LPWSTR pwszCommand);
+
+ END_INTERFACE
+ } ICommandTextVtbl;
+
+ interface ICommandText
+ {
+ CONST_VTBL struct ICommandTextVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICommandText_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICommandText_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICommandText_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICommandText_GetCommandText(This,pguidDialect,ppwszCommand) \
+ (This)->lpVtbl -> GetCommandText(This,pguidDialect,ppwszCommand)
+
+#define ICommandText_SetCommandText(This,rguidDialect,pwszCommand) \
+ (This)->lpVtbl -> SetCommandText(This,rguidDialect,pwszCommand)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICommandText_GetCommandText_Proxy(
+ ICommandText __RPC_FAR * This,
+ /* [out][in] */ GUID __RPC_FAR *pguidDialect,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszCommand);
+
+
+void __RPC_STUB ICommandText_GetCommandText_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandText_SetCommandText_Proxy(
+ ICommandText __RPC_FAR * This,
+ /* [in] */ REFGUID rguidDialect,
+ /* [in] */ const LPWSTR pwszCommand);
+
+
+void __RPC_STUB ICommandText_SetCommandText_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICommandText_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICommandTree_INTERFACE_DEFINED__
+#define __ICommandTree_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICommandTree
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBVALUEKIND;
+
+
+enum DBVALUEKINDENUM
+ { DBVALUEKIND_BYGUID = 256,
+ DBVALUEKIND_COLDEF = DBVALUEKIND_BYGUID + 1,
+ DBVALUEKIND_ID = DBVALUEKIND_COLDEF + 1,
+ DBVALUEKIND_CONTENT = DBVALUEKIND_ID + 1,
+ DBVALUEKIND_CONTENTVECTOR = DBVALUEKIND_CONTENT + 1,
+ DBVALUEKIND_GROUPINFO = DBVALUEKIND_CONTENTVECTOR + 1,
+ DBVALUEKIND_PARAMETER = DBVALUEKIND_GROUPINFO + 1,
+ DBVALUEKIND_PROPERTY = DBVALUEKIND_PARAMETER + 1,
+ DBVALUEKIND_SETFUNC = DBVALUEKIND_PROPERTY + 1,
+ DBVALUEKIND_SORTINFO = DBVALUEKIND_SETFUNC + 1,
+ DBVALUEKIND_TEXT = DBVALUEKIND_SORTINFO + 1,
+ DBVALUEKIND_COMMAND = DBVALUEKIND_TEXT + 1,
+ DBVALUEKIND_MONIKER = DBVALUEKIND_COMMAND + 1,
+ DBVALUEKIND_ROWSET = DBVALUEKIND_MONIKER + 1,
+ DBVALUEKIND_DISPATCH = 9,
+ DBVALUEKIND_UNKNOWN = 13,
+ DBVALUEKIND_EMPTY = 0,
+ DBVALUEKIND_NULL = 1,
+ DBVALUEKIND_I2 = 2,
+ DBVALUEKIND_I4 = 3,
+ DBVALUEKIND_R4 = 4,
+ DBVALUEKIND_R8 = 5,
+ DBVALUEKIND_CY = 6,
+ DBVALUEKIND_DATE = 7,
+ DBVALUEKIND_BSTR = 8,
+ DBVALUEKIND_ERROR = 10,
+ DBVALUEKIND_BOOL = 11,
+ DBVALUEKIND_VARIANT = 12,
+ DBVALUEKIND_VECTOR = 0x1000,
+ DBVALUEKIND_ARRAY = 0x2000,
+ DBVALUEKIND_BYREF = 0x4000,
+ DBVALUEKIND_I1 = 16,
+ DBVALUEKIND_UI1 = 17,
+ DBVALUEKIND_UI2 = 18,
+ DBVALUEKIND_UI4 = DBVALUEKIND_UI2 + 1,
+ DBVALUEKIND_I8 = DBVALUEKIND_UI4 + 1,
+ DBVALUEKIND_UI8 = DBVALUEKIND_I8 + 1,
+ DBVALUEKIND_GUID = 72,
+ DBVALUEKIND_BYTES = 128,
+ DBVALUEKIND_STR = 129,
+ DBVALUEKIND_WSTR = DBVALUEKIND_STR + 1,
+ DBVALUEKIND_NUMERIC = DBVALUEKIND_WSTR + 1
+ };
+typedef struct tagDBBYGUID
+ {
+ GUID guid;
+ ULONG cbInfo;
+ /* [size_is] */ BYTE __RPC_FAR *pbInfo;
+ } DBBYGUID;
+
+typedef struct tagDBCOLDEF
+ {
+ DBID dbcid;
+ DBDATATYPE dbdt;
+ } DBCOLDEF;
+
+#define FUZZY_EXACT ( 0 )
+#define FUZZY_PREFIXMATCH ( 1 )
+#define FUZZY_STEMMED ( 2 )
+typedef struct tagDBCONTENT
+ {
+ DWORD dwFuzzyLevel;
+ ULONG ulWeight;
+ LCID lcid;
+ LPWSTR pwszPhrase;
+ } DBCONTENT;
+
+#define VECTOR_RANK_MIN ( 0 )
+#define VECTOR_RANK_MAX ( 1 )
+#define VECTOR_RANK_INNER ( 2 )
+#define VECTOR_RANK_DICE ( 3 )
+#define VECTOR_RANK_JACCARD ( 4 )
+typedef struct tagDBCONTENTVECTOR
+ {
+ DWORD dwRankingMethod;
+ ULONG cWeights;
+ /* [size_is] */ ULONG __RPC_FAR *prgulWeights;
+ } DBCONTENTVECTOR;
+
+typedef struct tagDBGROUPINFO
+ {
+ LCID lcid;
+ } DBGROUPINFO;
+
+typedef struct tagDBPARAMETER
+ {
+ LPWSTR pwszName;
+ DBTYPE dwType;
+ ITypeInfo __RPC_FAR *pTypeInfo;
+ ULONG cbMaxLength;
+ DBNUMERIC __RPC_FAR *pNum;
+ DBPARAMFLAGS dwFlags;
+ } DBPARAMETER;
+
+#define DBSETFUNC_NONE = 0x0
+#define DBSETFUNC_ALL = 0x1
+#define DBSETFUNC_DISTINCT = 0x2
+typedef struct tagDBSETFUNC
+ {
+ DWORD dwSetQuantifier;
+ } DBSETFUNC;
+
+typedef struct tagDBSORTINFO
+ {
+ LCID lcid;
+ BOOL fDesc;
+ } DBSORTINFO;
+
+typedef struct tagDBTEXT
+ {
+ GUID guidDialect;
+ LPWSTR pwszText;
+ ULONG ulErrorLocator;
+ ULONG ulTokenLength;
+ } DBTEXT;
+
+typedef struct tagDBCOMMANDTREE
+ {
+ DBCOMMANDOP op;
+ WORD wKind;
+ HRESULT hrError;
+ struct tagDBCOMMANDTREE __RPC_FAR *pctFirstChild;
+ struct tagDBCOMMANDTREE __RPC_FAR *pctNextSibling;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ BOOL fValue;
+ /* [case()] */ unsigned char uchValue;
+ /* [case()] */ signed char schValue;
+ /* [case()] */ unsigned short usValue;
+ /* [case()] */ short sValue;
+ /* [case()] */ LPWSTR pwszValue;
+ /* [case()] */ LONG lValue;
+ /* [case()] */ ULONG ulValue;
+ /* [case()] */ float flValue;
+ /* [case()] */ double dblValue;
+ /* [case()] */ CY cyValue;
+ /* [case()] */ DATE dateValue;
+ /* [case()] */ SCODE scodeValue;
+ /* [case()] */ hyper llValue;
+ /* [case()] */ MIDL_uhyper ullValue;
+ /* [case()] */ BSTR __RPC_FAR *pbstrValue;
+ /* [case()] */ ICommand __RPC_FAR *pCommand;
+ /* [case()] */ IDispatch __RPC_FAR *pDispatch;
+ /* [case()] */ IMoniker __RPC_FAR *pMoniker;
+ /* [case()] */ IRowset __RPC_FAR *pRowset;
+ /* [case()] */ IUnknown __RPC_FAR *pUnknown;
+ /* [case()] */ DBBYGUID __RPC_FAR *pdbbygdValue;
+ /* [case()] */ DBCOLDEF __RPC_FAR *pcoldfValue;
+ /* [case()] */ DBID __RPC_FAR *pdbidValue;
+ /* [case()] */ DBCONTENT __RPC_FAR *pdbcntntValue;
+ /* [case()] */ DBCONTENTVECTOR __RPC_FAR *pdbcntntvcValue;
+ /* [case()] */ DBGROUPINFO __RPC_FAR *pdbgrpinfValue;
+ /* [case()] */ DBPARAMETER __RPC_FAR *pdbparamValue;
+ /* [case()] */ DBPROPERTY __RPC_FAR *pdbpropValue;
+ /* [case()] */ DBSETFUNC __RPC_FAR *pdbstfncValue;
+ /* [case()] */ DBSORTINFO __RPC_FAR *pdbsrtinfValue;
+ /* [case()] */ DBTEXT __RPC_FAR *pdbtxtValue;
+ /* [case()] */ DBVECTOR __RPC_FAR *pdbvectorValue;
+ /* [case()] */ SAFEARRAY __RPC_FAR *parrayValue;
+ /* [case()] */ VARIANT __RPC_FAR *pvarValue;
+ /* [case()] */ GUID __RPC_FAR *pGuid;
+ /* [case()] */ BYTE __RPC_FAR *pbValue;
+ /* [case()] */ char __RPC_FAR *pzValue;
+ /* [case()] */ DBNUMERIC __RPC_FAR *pdbnValue;
+ /* [case()] */ void __RPC_FAR *pvValue;
+ } value;
+ } DBCOMMANDTREE;
+
+
+EXTERN_C const IID IID_ICommandTree;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICommandTree : public ICommand
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE FindErrorNodes(
+ /* [in] */ const DBCOMMANDTREE __RPC_FAR *pRoot,
+ /* [out] */ ULONG __RPC_FAR *pcErrorNodes,
+ /* [out] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *__RPC_FAR *prgErrorNodes) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FreeCommandTree(
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCommandTree(
+ /* [out] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCommandTree(
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot,
+ /* [in] */ BOOL fCopy) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICommandTreeVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICommandTree __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICommandTree __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICommandTree __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ ICommandTree __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [out] */ ICommand __RPC_FAR *__RPC_FAR *ppClone);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Execute )(
+ ICommandTree __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *__RPC_FAR rgpUnkOuters[ ],
+ /* [in] */ REFIID riid,
+ /* [out][in] */ DBPARAMS __RPC_FAR *pParams,
+ /* [out] */ HCHAPTER __RPC_FAR *phChapter,
+ /* [in] */ BOOL fResume,
+ /* [out][in] */ ULONG __RPC_FAR *pcRowsets,
+ /* [out][in] */ IUnknown __RPC_FAR *__RPC_FAR *__RPC_FAR *prgpRowsets,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppRowsetNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDBSession )(
+ ICommandTree __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppSession);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FindErrorNodes )(
+ ICommandTree __RPC_FAR * This,
+ /* [in] */ const DBCOMMANDTREE __RPC_FAR *pRoot,
+ /* [out] */ ULONG __RPC_FAR *pcErrorNodes,
+ /* [out] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *__RPC_FAR *prgErrorNodes);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FreeCommandTree )(
+ ICommandTree __RPC_FAR * This,
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCommandTree )(
+ ICommandTree __RPC_FAR * This,
+ /* [out] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetCommandTree )(
+ ICommandTree __RPC_FAR * This,
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot,
+ /* [in] */ BOOL fCopy);
+
+ END_INTERFACE
+ } ICommandTreeVtbl;
+
+ interface ICommandTree
+ {
+ CONST_VTBL struct ICommandTreeVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICommandTree_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICommandTree_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICommandTree_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICommandTree_Clone(This,pUnkOuter,ppClone) \
+ (This)->lpVtbl -> Clone(This,pUnkOuter,ppClone)
+
+#define ICommandTree_Execute(This,rgpUnkOuters,riid,pParams,phChapter,fResume,pcRowsets,prgpRowsets,ppRowsetNames) \
+ (This)->lpVtbl -> Execute(This,rgpUnkOuters,riid,pParams,phChapter,fResume,pcRowsets,prgpRowsets,ppRowsetNames)
+
+#define ICommandTree_GetDBSession(This,riid,ppSession) \
+ (This)->lpVtbl -> GetDBSession(This,riid,ppSession)
+
+
+#define ICommandTree_FindErrorNodes(This,pRoot,pcErrorNodes,prgErrorNodes) \
+ (This)->lpVtbl -> FindErrorNodes(This,pRoot,pcErrorNodes,prgErrorNodes)
+
+#define ICommandTree_FreeCommandTree(This,ppRoot) \
+ (This)->lpVtbl -> FreeCommandTree(This,ppRoot)
+
+#define ICommandTree_GetCommandTree(This,ppRoot) \
+ (This)->lpVtbl -> GetCommandTree(This,ppRoot)
+
+#define ICommandTree_SetCommandTree(This,ppRoot,fCopy) \
+ (This)->lpVtbl -> SetCommandTree(This,ppRoot,fCopy)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICommandTree_FindErrorNodes_Proxy(
+ ICommandTree __RPC_FAR * This,
+ /* [in] */ const DBCOMMANDTREE __RPC_FAR *pRoot,
+ /* [out] */ ULONG __RPC_FAR *pcErrorNodes,
+ /* [out] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *__RPC_FAR *prgErrorNodes);
+
+
+void __RPC_STUB ICommandTree_FindErrorNodes_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandTree_FreeCommandTree_Proxy(
+ ICommandTree __RPC_FAR * This,
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot);
+
+
+void __RPC_STUB ICommandTree_FreeCommandTree_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandTree_GetCommandTree_Proxy(
+ ICommandTree __RPC_FAR * This,
+ /* [out] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot);
+
+
+void __RPC_STUB ICommandTree_GetCommandTree_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandTree_SetCommandTree_Proxy(
+ ICommandTree __RPC_FAR * This,
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot,
+ /* [in] */ BOOL fCopy);
+
+
+void __RPC_STUB ICommandTree_SetCommandTree_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICommandTree_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICommandValidate_INTERFACE_DEFINED__
+#define __ICommandValidate_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICommandValidate
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_ICommandValidate;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICommandValidate : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ValidateCompletely( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ValidateSyntax( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICommandValidateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICommandValidate __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICommandValidate __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICommandValidate __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ValidateCompletely )(
+ ICommandValidate __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ValidateSyntax )(
+ ICommandValidate __RPC_FAR * This);
+
+ END_INTERFACE
+ } ICommandValidateVtbl;
+
+ interface ICommandValidate
+ {
+ CONST_VTBL struct ICommandValidateVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICommandValidate_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICommandValidate_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICommandValidate_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICommandValidate_ValidateCompletely(This) \
+ (This)->lpVtbl -> ValidateCompletely(This)
+
+#define ICommandValidate_ValidateSyntax(This) \
+ (This)->lpVtbl -> ValidateSyntax(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICommandValidate_ValidateCompletely_Proxy(
+ ICommandValidate __RPC_FAR * This);
+
+
+void __RPC_STUB ICommandValidate_ValidateCompletely_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandValidate_ValidateSyntax_Proxy(
+ ICommandValidate __RPC_FAR * This);
+
+
+void __RPC_STUB ICommandValidate_ValidateSyntax_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICommandValidate_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICommandWithParameters_INTERFACE_DEFINED__
+#define __ICommandWithParameters_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICommandWithParameters
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_ICommandWithParameters;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICommandWithParameters : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DescribeParameters(
+ /* [out] */ ULONG __RPC_FAR *pcParams,
+ /* [out] */ DBPARAMINFO __RPC_FAR *__RPC_FAR *prgParamInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppNamesBuffer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDefaultValues(
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ BYTE __RPC_FAR *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MapParameterNames(
+ /* [in] */ ULONG cParamNames,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *__RPC_FAR rgParamNames[ ],
+ /* [size_is][out][in] */ LONG __RPC_FAR rgColOrdinals[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDefaultValues(
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ BYTE __RPC_FAR *pData) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICommandWithParametersVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICommandWithParameters __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICommandWithParameters __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICommandWithParameters __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DescribeParameters )(
+ ICommandWithParameters __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcParams,
+ /* [out] */ DBPARAMINFO __RPC_FAR *__RPC_FAR *prgParamInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppNamesBuffer);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDefaultValues )(
+ ICommandWithParameters __RPC_FAR * This,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ BYTE __RPC_FAR *pData);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *MapParameterNames )(
+ ICommandWithParameters __RPC_FAR * This,
+ /* [in] */ ULONG cParamNames,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *__RPC_FAR rgParamNames[ ],
+ /* [size_is][out][in] */ LONG __RPC_FAR rgColOrdinals[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDefaultValues )(
+ ICommandWithParameters __RPC_FAR * This,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ BYTE __RPC_FAR *pData);
+
+ END_INTERFACE
+ } ICommandWithParametersVtbl;
+
+ interface ICommandWithParameters
+ {
+ CONST_VTBL struct ICommandWithParametersVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICommandWithParameters_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICommandWithParameters_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICommandWithParameters_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICommandWithParameters_DescribeParameters(This,pcParams,prgParamInfo,ppNamesBuffer) \
+ (This)->lpVtbl -> DescribeParameters(This,pcParams,prgParamInfo,ppNamesBuffer)
+
+#define ICommandWithParameters_GetDefaultValues(This,hAccessor,pData) \
+ (This)->lpVtbl -> GetDefaultValues(This,hAccessor,pData)
+
+#define ICommandWithParameters_MapParameterNames(This,cParamNames,rgParamNames,rgColOrdinals) \
+ (This)->lpVtbl -> MapParameterNames(This,cParamNames,rgParamNames,rgColOrdinals)
+
+#define ICommandWithParameters_SetDefaultValues(This,hAccessor,pData) \
+ (This)->lpVtbl -> SetDefaultValues(This,hAccessor,pData)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICommandWithParameters_DescribeParameters_Proxy(
+ ICommandWithParameters __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcParams,
+ /* [out] */ DBPARAMINFO __RPC_FAR *__RPC_FAR *prgParamInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppNamesBuffer);
+
+
+void __RPC_STUB ICommandWithParameters_DescribeParameters_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandWithParameters_GetDefaultValues_Proxy(
+ ICommandWithParameters __RPC_FAR * This,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [out] */ BYTE __RPC_FAR *pData);
+
+
+void __RPC_STUB ICommandWithParameters_GetDefaultValues_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandWithParameters_MapParameterNames_Proxy(
+ ICommandWithParameters __RPC_FAR * This,
+ /* [in] */ ULONG cParamNames,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *__RPC_FAR rgParamNames[ ],
+ /* [size_is][out][in] */ LONG __RPC_FAR rgColOrdinals[ ]);
+
+
+void __RPC_STUB ICommandWithParameters_MapParameterNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ICommandWithParameters_SetDefaultValues_Proxy(
+ ICommandWithParameters __RPC_FAR * This,
+ /* [in] */ HACCESSOR hAccessor,
+ /* [in] */ BYTE __RPC_FAR *pData);
+
+
+void __RPC_STUB ICommandWithParameters_SetDefaultValues_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICommandWithParameters_INTERFACE_DEFINED__ */
+
+
+#ifndef __IQuery_INTERFACE_DEFINED__
+#define __IQuery_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IQuery
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IQuery;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IQuery : public ICommandTree
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE AddPostProcessing(
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot,
+ /* [in] */ BOOL fCopy) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCardinalityEstimate(
+ /* [out] */ ULONG __RPC_FAR *pulCardinality) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IQueryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IQuery __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IQuery __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IQuery __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IQuery __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [out] */ ICommand __RPC_FAR *__RPC_FAR *ppClone);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Execute )(
+ IQuery __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *__RPC_FAR rgpUnkOuters[ ],
+ /* [in] */ REFIID riid,
+ /* [out][in] */ DBPARAMS __RPC_FAR *pParams,
+ /* [out] */ HCHAPTER __RPC_FAR *phChapter,
+ /* [in] */ BOOL fResume,
+ /* [out][in] */ ULONG __RPC_FAR *pcRowsets,
+ /* [out][in] */ IUnknown __RPC_FAR *__RPC_FAR *__RPC_FAR *prgpRowsets,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppRowsetNames);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDBSession )(
+ IQuery __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppSession);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FindErrorNodes )(
+ IQuery __RPC_FAR * This,
+ /* [in] */ const DBCOMMANDTREE __RPC_FAR *pRoot,
+ /* [out] */ ULONG __RPC_FAR *pcErrorNodes,
+ /* [out] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *__RPC_FAR *prgErrorNodes);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FreeCommandTree )(
+ IQuery __RPC_FAR * This,
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCommandTree )(
+ IQuery __RPC_FAR * This,
+ /* [out] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetCommandTree )(
+ IQuery __RPC_FAR * This,
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot,
+ /* [in] */ BOOL fCopy);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddPostProcessing )(
+ IQuery __RPC_FAR * This,
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot,
+ /* [in] */ BOOL fCopy);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCardinalityEstimate )(
+ IQuery __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pulCardinality);
+
+ END_INTERFACE
+ } IQueryVtbl;
+
+ interface IQuery
+ {
+ CONST_VTBL struct IQueryVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IQuery_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IQuery_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IQuery_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IQuery_Clone(This,pUnkOuter,ppClone) \
+ (This)->lpVtbl -> Clone(This,pUnkOuter,ppClone)
+
+#define IQuery_Execute(This,rgpUnkOuters,riid,pParams,phChapter,fResume,pcRowsets,prgpRowsets,ppRowsetNames) \
+ (This)->lpVtbl -> Execute(This,rgpUnkOuters,riid,pParams,phChapter,fResume,pcRowsets,prgpRowsets,ppRowsetNames)
+
+#define IQuery_GetDBSession(This,riid,ppSession) \
+ (This)->lpVtbl -> GetDBSession(This,riid,ppSession)
+
+
+#define IQuery_FindErrorNodes(This,pRoot,pcErrorNodes,prgErrorNodes) \
+ (This)->lpVtbl -> FindErrorNodes(This,pRoot,pcErrorNodes,prgErrorNodes)
+
+#define IQuery_FreeCommandTree(This,ppRoot) \
+ (This)->lpVtbl -> FreeCommandTree(This,ppRoot)
+
+#define IQuery_GetCommandTree(This,ppRoot) \
+ (This)->lpVtbl -> GetCommandTree(This,ppRoot)
+
+#define IQuery_SetCommandTree(This,ppRoot,fCopy) \
+ (This)->lpVtbl -> SetCommandTree(This,ppRoot,fCopy)
+
+
+#define IQuery_AddPostProcessing(This,ppRoot,fCopy) \
+ (This)->lpVtbl -> AddPostProcessing(This,ppRoot,fCopy)
+
+#define IQuery_GetCardinalityEstimate(This,pulCardinality) \
+ (This)->lpVtbl -> GetCardinalityEstimate(This,pulCardinality)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IQuery_AddPostProcessing_Proxy(
+ IQuery __RPC_FAR * This,
+ /* [in] */ DBCOMMANDTREE __RPC_FAR *__RPC_FAR *ppRoot,
+ /* [in] */ BOOL fCopy);
+
+
+void __RPC_STUB IQuery_AddPostProcessing_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IQuery_GetCardinalityEstimate_Proxy(
+ IQuery __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pulCardinality);
+
+
+void __RPC_STUB IQuery_GetCardinalityEstimate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IQuery_INTERFACE_DEFINED__ */
+
+
+#ifndef __IColumnsRowset_INTERFACE_DEFINED__
+#define __IColumnsRowset_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IColumnsRowset
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IColumnsRowset;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IColumnsRowset : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetAvailableColumns(
+ /* [out] */ ULONG __RPC_FAR *pcOptColumns,
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *prgOptColumns) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetColumnsRowset(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ ULONG cOptColumns,
+ /* [size_is][in] */ DBID __RPC_FAR rgOptColumns[ ],
+ /* [out] */ IRowset __RPC_FAR *__RPC_FAR *ppColRowset) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IColumnsRowsetVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IColumnsRowset __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IColumnsRowset __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IColumnsRowset __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAvailableColumns )(
+ IColumnsRowset __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcOptColumns,
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *prgOptColumns);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetColumnsRowset )(
+ IColumnsRowset __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ ULONG cOptColumns,
+ /* [size_is][in] */ DBID __RPC_FAR rgOptColumns[ ],
+ /* [out] */ IRowset __RPC_FAR *__RPC_FAR *ppColRowset);
+
+ END_INTERFACE
+ } IColumnsRowsetVtbl;
+
+ interface IColumnsRowset
+ {
+ CONST_VTBL struct IColumnsRowsetVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IColumnsRowset_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IColumnsRowset_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IColumnsRowset_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IColumnsRowset_GetAvailableColumns(This,pcOptColumns,prgOptColumns) \
+ (This)->lpVtbl -> GetAvailableColumns(This,pcOptColumns,prgOptColumns)
+
+#define IColumnsRowset_GetColumnsRowset(This,pUnkOuter,cOptColumns,rgOptColumns,ppColRowset) \
+ (This)->lpVtbl -> GetColumnsRowset(This,pUnkOuter,cOptColumns,rgOptColumns,ppColRowset)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IColumnsRowset_GetAvailableColumns_Proxy(
+ IColumnsRowset __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcOptColumns,
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *prgOptColumns);
+
+
+void __RPC_STUB IColumnsRowset_GetAvailableColumns_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IColumnsRowset_GetColumnsRowset_Proxy(
+ IColumnsRowset __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ ULONG cOptColumns,
+ /* [size_is][in] */ DBID __RPC_FAR rgOptColumns[ ],
+ /* [out] */ IRowset __RPC_FAR *__RPC_FAR *ppColRowset);
+
+
+void __RPC_STUB IColumnsRowset_GetColumnsRowset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IColumnsRowset_INTERFACE_DEFINED__ */
+
+
+#ifndef __IColumnsInfo_INTERFACE_DEFINED__
+#define __IColumnsInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IColumnsInfo
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef struct tagDBCOLUMNINFO
+ {
+ DBID columnid;
+ WCHAR __RPC_FAR *pwszName;
+ ULONG iNumber;
+ DBTYPE dwType;
+ ITypeInfo __RPC_FAR *pTypeInfo;
+ ULONG cbMaxLength;
+ ULONG cPrecision;
+ ULONG cScale;
+ DBCOLUMNFLAGS dwFlags;
+ } DBCOLUMNINFO;
+
+
+EXTERN_C const IID IID_IColumnsInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IColumnsInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetColumnInfo(
+ /* [out] */ ULONG __RPC_FAR *pcColumns,
+ /* [out] */ DBCOLUMNINFO __RPC_FAR *__RPC_FAR *prgInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MapColumnIDs(
+ /* [in] */ ULONG cColumnIDs,
+ /* [in] */ const DBID __RPC_FAR rgColumnIDs[ ],
+ /* [out][in] */ LONG __RPC_FAR rgColumns[ ]) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IColumnsInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IColumnsInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IColumnsInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IColumnsInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetColumnInfo )(
+ IColumnsInfo __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcColumns,
+ /* [out] */ DBCOLUMNINFO __RPC_FAR *__RPC_FAR *prgInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *MapColumnIDs )(
+ IColumnsInfo __RPC_FAR * This,
+ /* [in] */ ULONG cColumnIDs,
+ /* [in] */ const DBID __RPC_FAR rgColumnIDs[ ],
+ /* [out][in] */ LONG __RPC_FAR rgColumns[ ]);
+
+ END_INTERFACE
+ } IColumnsInfoVtbl;
+
+ interface IColumnsInfo
+ {
+ CONST_VTBL struct IColumnsInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IColumnsInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IColumnsInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IColumnsInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IColumnsInfo_GetColumnInfo(This,pcColumns,prgInfo,ppStringsBuffer) \
+ (This)->lpVtbl -> GetColumnInfo(This,pcColumns,prgInfo,ppStringsBuffer)
+
+#define IColumnsInfo_MapColumnIDs(This,cColumnIDs,rgColumnIDs,rgColumns) \
+ (This)->lpVtbl -> MapColumnIDs(This,cColumnIDs,rgColumnIDs,rgColumns)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IColumnsInfo_GetColumnInfo_Proxy(
+ IColumnsInfo __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcColumns,
+ /* [out] */ DBCOLUMNINFO __RPC_FAR *__RPC_FAR *prgInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);
+
+
+void __RPC_STUB IColumnsInfo_GetColumnInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IColumnsInfo_MapColumnIDs_Proxy(
+ IColumnsInfo __RPC_FAR * This,
+ /* [in] */ ULONG cColumnIDs,
+ /* [in] */ const DBID __RPC_FAR rgColumnIDs[ ],
+ /* [out][in] */ LONG __RPC_FAR rgColumns[ ]);
+
+
+void __RPC_STUB IColumnsInfo_MapColumnIDs_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IColumnsInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDBCreateCommand_INTERFACE_DEFINED__
+#define __IDBCreateCommand_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDBCreateCommand
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IDBCreateCommand;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDBCreateCommand : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateCommand(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvCommand) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDBCreateCommandVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDBCreateCommand __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDBCreateCommand __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDBCreateCommand __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateCommand )(
+ IDBCreateCommand __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvCommand);
+
+ END_INTERFACE
+ } IDBCreateCommandVtbl;
+
+ interface IDBCreateCommand
+ {
+ CONST_VTBL struct IDBCreateCommandVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDBCreateCommand_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDBCreateCommand_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDBCreateCommand_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDBCreateCommand_CreateCommand(This,pUnkOuter,riid,ppvCommand) \
+ (This)->lpVtbl -> CreateCommand(This,pUnkOuter,riid,ppvCommand)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDBCreateCommand_CreateCommand_Proxy(
+ IDBCreateCommand __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvCommand);
+
+
+void __RPC_STUB IDBCreateCommand_CreateCommand_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDBCreateCommand_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDBEnumerateSources_INTERFACE_DEFINED__
+#define __IDBEnumerateSources_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDBEnumerateSources
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBSOURCEFLAGS;
+
+
+enum DBSOURCEFLAGSENUM
+ { DBSOURCE_ISENUMERATOR = 0x1,
+ DBSOURCE_ISPARENT = 0x2
+ };
+
+EXTERN_C const IID IID_IDBEnumerateSources;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDBEnumerateSources : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Sources(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvSourcesRowset) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDBEnumerateSourcesVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDBEnumerateSources __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDBEnumerateSources __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDBEnumerateSources __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Sources )(
+ IDBEnumerateSources __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvSourcesRowset);
+
+ END_INTERFACE
+ } IDBEnumerateSourcesVtbl;
+
+ interface IDBEnumerateSources
+ {
+ CONST_VTBL struct IDBEnumerateSourcesVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDBEnumerateSources_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDBEnumerateSources_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDBEnumerateSources_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDBEnumerateSources_Sources(This,pUnkOuter,riid,ppvSourcesRowset) \
+ (This)->lpVtbl -> Sources(This,pUnkOuter,riid,ppvSourcesRowset)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDBEnumerateSources_Sources_Proxy(
+ IDBEnumerateSources __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvSourcesRowset);
+
+
+void __RPC_STUB IDBEnumerateSources_Sources_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDBEnumerateSources_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDBInfo_INTERFACE_DEFINED__
+#define __IDBInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDBInfo
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+#define DBPROP_BA_PASSBYREF 0x00000001L
+#define DBPROP_BA_PASSCOLUMNSBYREF 0x00000002L
+#define DBPROP_CL_START 0x00000001L
+#define DBPROP_CL_END 0x00000002L
+#define DBPROP_CU_DML_STATEMENTS 0x00000001L
+#define DBPROP_CU_TABLE_DEFINITION 0x00000002L
+#define DBPROP_CU_INDEX_DEFINITION 0x00000004L
+#define DBPROP_CU_PRIVILEGE_DEFINITION 0x00000008L
+#define DBPROP_CB_NULL 0x00000001L
+#define DBPROP_CB_NON_NULL 0x00000002L
+#define DBPROP_FU_NOT_SUPPORTED 0x00000001L
+#define DBPROP_FU_COLUMN 0x00000002L
+#define DBPROP_FU_TABLE 0x00000004L
+#define DBPROP_FU_CATALOG 0x00000008L
+#define DBPROP_GB_NOT_SUPPORTED 0x00000001L
+#define DBPROP_GB_EQUALS_SELECT 0x00000002L
+#define DBPROP_GB_CONTAINS_SELECT 0x00000004L
+#define DBPROP_GB_NO_RELATION 0x00000008L
+#define DBPROP_HT_DIFFERENT_CATALOGS 0x00000001L
+#define DBPROP_HT_DIFFERENT_PROVIDERS 0x00000002L
+#define DBPROP_IC_UPPER 0x00000001L
+#define DBPROP_IC_LOWER 0x00000002L
+#define DBPROP_IC_SENSITIVE 0x00000004L
+#define DBPROP_IC_MIXED 0x00000008L
+#define DBPROP_LM_NONE 0x00000001L
+#define DBPROP_LM_READ 0x00000002L
+#define DBPROP_LM_INTENT 0x00000004L
+#define DBPROP_LM_WRITE 0x00000008L
+#define DBPROP_NP_OKTODO 0x00000001L
+#define DBPROP_NP_ABOUTTODO 0x00000002L
+#define DBPROP_NP_SYNCHAFTER 0x00000004L
+#define DBPROP_NP_FAILEDTODO 0x00000008L
+#define DBPROP_NP_DIDEVENT 0x00000010L
+#define DBPROP_CB_DELETE 0x00000001L
+#define DBPROP_CB_PRESERVE 0x00000002L
+#define DBPROP_SU_DML_STATEMENTS 0x00000001L
+#define DBPROP_SU_TABLE_DEFINITION 0x00000002L
+#define DBPROP_SU_INDEX_DEFINITION 0x00000004L
+#define DBPROP_SU_PRIVILEGE_DEFINITION 0x00000008L
+#define DBPROP_SO_CORRELATEDSUBQUERIES 0x00000001L
+#define DBPROP_SO_COMPARISON 0x00000002L
+#define DBPROP_SO_EXISTS 0x00000004L
+#define DBPROP_SO_IN 0x00000008L
+#define DBPROP_SO_QUANTIFIED 0x00000010L
+#define DBPROP_TI_CHAOS 0x00000001L
+#define DBPROP_TI_READUNCOMMITTED 0x00000002L
+#define DBPROP_TI_BROWSE 0x00000004L
+#define DBPROP_TI_CURSORSTABILITY 0x00000008L
+#define DBPROP_TI_READCOMMITTED 0x00000010L
+#define DBPROP_TI_REPEATABLEREAD 0x00000020L
+#define DBPROP_TI_SERIALIZABLE 0x00000040L
+#define DBPROP_TI_ISOLATED 0x00000080L
+#define DBPROP_TR_COMMIT_DC 0x00000001L
+#define DBPROP_TR_COMMIT 0x00000002L
+#define DBPROP_TR_COMMIT_NO 0x00000004L
+#define DBPROP_TR_ABORT_DC 0x00000008L
+#define DBPROP_TR_ABORT 0x00000010L
+#define DBPROP_TR_ABORT_NO 0x00000020L
+#define DBPROP_TR_DONTCARE 0x00000040L
+#define DBPROP_TR_BOTH 0x00000080L
+#define DBPROP_TR_NONE 0x00000100L
+#define DBPROP_TR_OPTIMISTIC 0x00000200L
+typedef DWORD DBPROPFLAGS;
+
+
+enum DBPROPFLAGSENUM
+ { DBPROPFLAGS_DATASOURCE = 0x1,
+ DBPROPFLAGS_ROWSET = 0x2,
+ DBPROPFLAGS_COLUMNOK = 0x4,
+ DBPROPFLAGS_READ = 0x8,
+ DBPROPFLAGS_WRITE = 0x10,
+ DBPROPFLAGS_PROVIDER = 0x20
+ };
+typedef struct tagDBPROPINFO
+ {
+ GUID guidProperty;
+ DBPROPFLAGS dwPropFlags;
+ VARTYPE vtPropType;
+ VARIANT vDefault;
+ } DBPROPINFO;
+
+typedef DWORD DBLITERAL;
+
+
+enum DBLITERALENUM
+ { DBLITERAL_BINARY_LITERAL = 0,
+ DBLITERAL_CATALOG_NAME = DBLITERAL_BINARY_LITERAL + 1,
+ DBLITERAL_CATALOG_SEPARATOR = DBLITERAL_CATALOG_NAME + 1,
+ DBLITERAL_CHAR_LITERAL = DBLITERAL_CATALOG_SEPARATOR + 1,
+ DBLITERAL_COLUMN_ALIAS = DBLITERAL_CHAR_LITERAL + 1,
+ DBLITERAL_COLUMN_NAME = DBLITERAL_COLUMN_ALIAS + 1,
+ DBLITERAL_CORRELATION_NAME = DBLITERAL_COLUMN_NAME + 1,
+ DBLITERAL_CURSOR_NAME = DBLITERAL_CORRELATION_NAME + 1,
+ DBLITERAL_ESCAPE_PERCENT = DBLITERAL_CURSOR_NAME + 1,
+ DBLITERAL_ESCAPE_UNDERSCORE = DBLITERAL_ESCAPE_PERCENT + 1,
+ DBLITERAL_INDEX_NAME = DBLITERAL_ESCAPE_UNDERSCORE + 1,
+ DBLITERAL_LIKE_PERCENT = DBLITERAL_INDEX_NAME + 1,
+ DBLITERAL_LIKE_UNDERSCORE = DBLITERAL_LIKE_PERCENT + 1,
+ DBLITERAL_PROCEDURE_NAME = DBLITERAL_LIKE_UNDERSCORE + 1,
+ DBLITERAL_SCHEMA_NAME = DBLITERAL_PROCEDURE_NAME + 1,
+ DBLITERAL_TABLE_NAME = DBLITERAL_SCHEMA_NAME + 1,
+ DBLITERAL_TEXT_COMMAND = DBLITERAL_TABLE_NAME + 1,
+ DBLITERAL_USER_NAME = DBLITERAL_TEXT_COMMAND + 1,
+ DBLITERAL_VIEW_NAME = DBLITERAL_USER_NAME + 1,
+ DBLITERAL_QUOTE = DBLITERAL_VIEW_NAME + 1
+ };
+typedef struct tagDBLITERALINFO
+ {
+ DBLITERAL lt;
+ BOOL fSupported;
+ ULONG cbMaxLen;
+ LPWSTR pwszValidChars;
+ LPWSTR pwszStartingChars;
+ } DBLITERALINFO;
+
+typedef DWORD DBOPTYPE;
+
+
+enum DBOPTYPEENUM
+ { DBOPTYPE_TABLE = 0,
+ DBOPTYPE_ROW = DBOPTYPE_TABLE + 1,
+ DBOPTYPE_SCALAR = DBOPTYPE_ROW + 1,
+ DBOPTYPE_BOOLEAN = DBOPTYPE_SCALAR + 1,
+ DBOPTYPE_LA_COLDEF = DBOPTYPE_BOOLEAN + 1,
+ DBOPTYPE_LA_COLUMN = DBOPTYPE_LA_COLDEF + 1,
+ DBOPTYPE_LA_COMMAND = DBOPTYPE_LA_COLUMN + 1,
+ DBOPTYPE_LA_FROM = DBOPTYPE_LA_COMMAND + 1,
+ DBOPTYPE_LA_INDEX = DBOPTYPE_LA_FROM + 1,
+ DBOPTYPE_LA_PROJECT = DBOPTYPE_LA_INDEX + 1,
+ DBOPTYPE_LA_PROPERTY = DBOPTYPE_LA_PROJECT + 1,
+ DBOPTYPE_LA_ROW = DBOPTYPE_LA_PROPERTY + 1,
+ DBOPTYPE_LA_SCALAR = DBOPTYPE_LA_ROW + 1,
+ DBOPTYPE_LA_SET = DBOPTYPE_LA_SCALAR + 1,
+ DBOPTYPE_LA_SORT = DBOPTYPE_LA_SET + 1,
+ DBOPTYPE_LE_COLDEF = DBOPTYPE_LA_SORT + 1,
+ DBOPTYPE_LE_COLUMN = DBOPTYPE_LE_COLDEF + 1,
+ DBOPTYPE_LE_COMMAND = DBOPTYPE_LE_COLUMN + 1,
+ DBOPTYPE_LE_FROM = DBOPTYPE_LE_COMMAND + 1,
+ DBOPTYPE_LE_INDEX = DBOPTYPE_LE_FROM + 1,
+ DBOPTYPE_LE_PROJECT = DBOPTYPE_LE_INDEX + 1,
+ DBOPTYPE_LE_PROPERTY = DBOPTYPE_LE_PROJECT + 1,
+ DBOPTYPE_LE_ROW = DBOPTYPE_LE_PROPERTY + 1,
+ DBOPTYPE_LE_SCALAR = DBOPTYPE_LE_ROW + 1,
+ DBOPTYPE_LE_SET = DBOPTYPE_LE_SCALAR + 1,
+ DBOPTYPE_LE_SORT = DBOPTYPE_LE_SET + 1,
+ DBOPTYPE_CATALOG_NAME = DBOPTYPE_LE_SORT + 1,
+ DBOPTYPE_SCHEMA_NAME = DBOPTYPE_CATALOG_NAME + 1,
+ DBOPTYPE_OUTALL_NAME = DBOPTYPE_SCHEMA_NAME + 1,
+ DBOPTYPE_DDL = DBOPTYPE_OUTALL_NAME + 1,
+ DBOPTYPE_UPDATE = DBOPTYPE_DDL + 1
+ };
+typedef DWORD DBMINORTYPE;
+
+
+enum DBMINORTYPEENUM
+ { DBMINORTYPE_UNORDERED = 0x1,
+ DBMINORTYPE_ORDERED = 0x2,
+ DBMINORTYPE_UNIQUE = 0x4,
+ DBMINORTYPE_ORDEREDUNIQUE = 0x8,
+ DBMINORTYPE_HIERARCHICAL = 0x10,
+ DBMINORTYPE_AGGREGATE_FUNCTION = 0x1,
+ DBMINORTYPE_BOOKMARK = 0x2,
+ DBMINORTYPE_COLUMN = 0x4,
+ DBMINORTYPE_CONSTANT = 0x8,
+ DBMINORTYPE_DEFAULT = 0x10,
+ DBMINORTYPE_EXPRESSION = 0x20,
+ DBMINORTYPE_NULL = 0x40,
+ DBMINORTYPE_PARAMETER = 0x80,
+ DBMINORTYPE_SCALAR_FUNCTION = 0x100,
+ DBMINORTYPE_UPDATE = 0x200,
+ DBMINORTYPE_DELETE = 0x400,
+ DBMINORTYPE_INSERT = 0x800
+ };
+typedef struct tagDBINPUTINFO
+ {
+ DBOPTYPE dwOpType;
+ DBMINORTYPE dwMinorType;
+ ULONG cMaxInputs;
+ ULONG cMaxListElements;
+ } DBINPUTINFO;
+
+typedef struct tagDBOPINFO
+ {
+ DBCOMMANDOP op;
+ GUID __RPC_FAR *pguid;
+ BOOL fSupported;
+ DBOPTYPE dwOpType;
+ DBMINORTYPE dwMinorType;
+ ULONG cReqInputs;
+ DBINPUTINFO __RPC_FAR *rgReqInputs;
+ ULONG cOptInputTypes;
+ DBINPUTINFO __RPC_FAR *rgOptInputTypes;
+ } DBOPINFO;
+
+
+EXTERN_C const IID IID_IDBInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDBInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetPropertyInfo(
+ /* [in] */ ULONG cProperties,
+ /* [size_is][in] */ GUID __RPC_FAR rgProperties[ ],
+ /* [out] */ ULONG __RPC_FAR *pcPropertyInfo,
+ /* [out] */ DBPROPINFO __RPC_FAR *__RPC_FAR *prgPropertyInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppDataBuffer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetKeywords(
+ /* [out] */ LPWSTR __RPC_FAR *ppwszKeywords) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetLiteralInfo(
+ /* [in] */ ULONG cLiterals,
+ /* [size_is][in] */ DBLITERAL __RPC_FAR rgLiterals[ ],
+ /* [out] */ ULONG __RPC_FAR *pcLiteralInfo,
+ /* [size_is][out] */ DBLITERALINFO __RPC_FAR *__RPC_FAR *prgLiteralInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppCharBuffer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetOperatorInfo(
+ /* [in] */ ULONG cOperators,
+ /* [size_is][in] */ DBCOMMANDOP __RPC_FAR rgOperators[ ],
+ /* [size_is][in] */ GUID __RPC_FAR rgOpGuids[ ],
+ /* [out] */ ULONG __RPC_FAR *pcOpInfo,
+ /* [out] */ DBOPINFO __RPC_FAR *__RPC_FAR *prgOpInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppInputInfoBuffer) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDBInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDBInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDBInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDBInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPropertyInfo )(
+ IDBInfo __RPC_FAR * This,
+ /* [in] */ ULONG cProperties,
+ /* [size_is][in] */ GUID __RPC_FAR rgProperties[ ],
+ /* [out] */ ULONG __RPC_FAR *pcPropertyInfo,
+ /* [out] */ DBPROPINFO __RPC_FAR *__RPC_FAR *prgPropertyInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppDataBuffer);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetKeywords )(
+ IDBInfo __RPC_FAR * This,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszKeywords);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLiteralInfo )(
+ IDBInfo __RPC_FAR * This,
+ /* [in] */ ULONG cLiterals,
+ /* [size_is][in] */ DBLITERAL __RPC_FAR rgLiterals[ ],
+ /* [out] */ ULONG __RPC_FAR *pcLiteralInfo,
+ /* [size_is][out] */ DBLITERALINFO __RPC_FAR *__RPC_FAR *prgLiteralInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppCharBuffer);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetOperatorInfo )(
+ IDBInfo __RPC_FAR * This,
+ /* [in] */ ULONG cOperators,
+ /* [size_is][in] */ DBCOMMANDOP __RPC_FAR rgOperators[ ],
+ /* [size_is][in] */ GUID __RPC_FAR rgOpGuids[ ],
+ /* [out] */ ULONG __RPC_FAR *pcOpInfo,
+ /* [out] */ DBOPINFO __RPC_FAR *__RPC_FAR *prgOpInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppInputInfoBuffer);
+
+ END_INTERFACE
+ } IDBInfoVtbl;
+
+ interface IDBInfo
+ {
+ CONST_VTBL struct IDBInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDBInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDBInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDBInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDBInfo_GetPropertyInfo(This,cProperties,rgProperties,pcPropertyInfo,prgPropertyInfo,ppDataBuffer) \
+ (This)->lpVtbl -> GetPropertyInfo(This,cProperties,rgProperties,pcPropertyInfo,prgPropertyInfo,ppDataBuffer)
+
+#define IDBInfo_GetKeywords(This,ppwszKeywords) \
+ (This)->lpVtbl -> GetKeywords(This,ppwszKeywords)
+
+#define IDBInfo_GetLiteralInfo(This,cLiterals,rgLiterals,pcLiteralInfo,prgLiteralInfo,ppCharBuffer) \
+ (This)->lpVtbl -> GetLiteralInfo(This,cLiterals,rgLiterals,pcLiteralInfo,prgLiteralInfo,ppCharBuffer)
+
+#define IDBInfo_GetOperatorInfo(This,cOperators,rgOperators,rgOpGuids,pcOpInfo,prgOpInfo,ppInputInfoBuffer) \
+ (This)->lpVtbl -> GetOperatorInfo(This,cOperators,rgOperators,rgOpGuids,pcOpInfo,prgOpInfo,ppInputInfoBuffer)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDBInfo_GetPropertyInfo_Proxy(
+ IDBInfo __RPC_FAR * This,
+ /* [in] */ ULONG cProperties,
+ /* [size_is][in] */ GUID __RPC_FAR rgProperties[ ],
+ /* [out] */ ULONG __RPC_FAR *pcPropertyInfo,
+ /* [out] */ DBPROPINFO __RPC_FAR *__RPC_FAR *prgPropertyInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppDataBuffer);
+
+
+void __RPC_STUB IDBInfo_GetPropertyInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDBInfo_GetKeywords_Proxy(
+ IDBInfo __RPC_FAR * This,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszKeywords);
+
+
+void __RPC_STUB IDBInfo_GetKeywords_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDBInfo_GetLiteralInfo_Proxy(
+ IDBInfo __RPC_FAR * This,
+ /* [in] */ ULONG cLiterals,
+ /* [size_is][in] */ DBLITERAL __RPC_FAR rgLiterals[ ],
+ /* [out] */ ULONG __RPC_FAR *pcLiteralInfo,
+ /* [size_is][out] */ DBLITERALINFO __RPC_FAR *__RPC_FAR *prgLiteralInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppCharBuffer);
+
+
+void __RPC_STUB IDBInfo_GetLiteralInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDBInfo_GetOperatorInfo_Proxy(
+ IDBInfo __RPC_FAR * This,
+ /* [in] */ ULONG cOperators,
+ /* [size_is][in] */ DBCOMMANDOP __RPC_FAR rgOperators[ ],
+ /* [size_is][in] */ GUID __RPC_FAR rgOpGuids[ ],
+ /* [out] */ ULONG __RPC_FAR *pcOpInfo,
+ /* [out] */ DBOPINFO __RPC_FAR *__RPC_FAR *prgOpInfo,
+ /* [out] */ WCHAR __RPC_FAR *__RPC_FAR *ppInputInfoBuffer);
+
+
+void __RPC_STUB IDBInfo_GetOperatorInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDBInfo_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDBInitialize_INTERFACE_DEFINED__
+#define __IDBInitialize_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDBInitialize
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IDBInitialize;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDBInitialize : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Initialize(
+ /* [in] */ ULONG cOptions,
+ /* [size_is][in] */ GUID __RPC_FAR *rgOptionsIDs,
+ /* [size_is][in] */ VARIANT __RPC_FAR *rgOptionVals) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDBInitializeVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDBInitialize __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDBInitialize __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDBInitialize __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Initialize )(
+ IDBInitialize __RPC_FAR * This,
+ /* [in] */ ULONG cOptions,
+ /* [size_is][in] */ GUID __RPC_FAR *rgOptionsIDs,
+ /* [size_is][in] */ VARIANT __RPC_FAR *rgOptionVals);
+
+ END_INTERFACE
+ } IDBInitializeVtbl;
+
+ interface IDBInitialize
+ {
+ CONST_VTBL struct IDBInitializeVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDBInitialize_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDBInitialize_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDBInitialize_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDBInitialize_Initialize(This,cOptions,rgOptionsIDs,rgOptionVals) \
+ (This)->lpVtbl -> Initialize(This,cOptions,rgOptionsIDs,rgOptionVals)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDBInitialize_Initialize_Proxy(
+ IDBInitialize __RPC_FAR * This,
+ /* [in] */ ULONG cOptions,
+ /* [size_is][in] */ GUID __RPC_FAR *rgOptionsIDs,
+ /* [size_is][in] */ VARIANT __RPC_FAR *rgOptionVals);
+
+
+void __RPC_STUB IDBInitialize_Initialize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDBInitialize_INTERFACE_DEFINED__ */
+
+
+#ifndef __IIndexDefinition_INTERFACE_DEFINED__
+#define __IIndexDefinition_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IIndexDefinition
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef DWORD DBINDEX_COL_ORDER;
+
+
+enum DBINDEX_COL_ORDERENUM
+ { DBINDEX_COL_ORDER_ASC = 0,
+ DBINDEX_COL_ORDER_DESC = DBINDEX_COL_ORDER_ASC + 1
+ };
+typedef struct tagDBINDEXCOLUMNDESC
+ {
+ DBID __RPC_FAR *pColumnID;
+ DBINDEX_COL_ORDER eIndexColOrder;
+ } DBINDEXCOLUMNDESC;
+
+
+EXTERN_C const IID IID_IIndexDefinition;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IIndexDefinition : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateIndex(
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ DBID __RPC_FAR *pIndexID,
+ /* [in] */ ULONG cIndexColumnDescs,
+ /* [size_is][in] */ DBINDEXCOLUMNDESC __RPC_FAR rgIndexColumnDescs[ ],
+ /* [in] */ ULONG cProperties,
+ /* [size_is][in] */ DBPROPERTY __RPC_FAR rgProperties[ ],
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *ppIndexID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DropIndex(
+ /* [in] */ DBID __RPC_FAR *pIndexID) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IIndexDefinitionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IIndexDefinition __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IIndexDefinition __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IIndexDefinition __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateIndex )(
+ IIndexDefinition __RPC_FAR * This,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ DBID __RPC_FAR *pIndexID,
+ /* [in] */ ULONG cIndexColumnDescs,
+ /* [size_is][in] */ DBINDEXCOLUMNDESC __RPC_FAR rgIndexColumnDescs[ ],
+ /* [in] */ ULONG cProperties,
+ /* [size_is][in] */ DBPROPERTY __RPC_FAR rgProperties[ ],
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *ppIndexID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DropIndex )(
+ IIndexDefinition __RPC_FAR * This,
+ /* [in] */ DBID __RPC_FAR *pIndexID);
+
+ END_INTERFACE
+ } IIndexDefinitionVtbl;
+
+ interface IIndexDefinition
+ {
+ CONST_VTBL struct IIndexDefinitionVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IIndexDefinition_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IIndexDefinition_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IIndexDefinition_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IIndexDefinition_CreateIndex(This,pTableID,pIndexID,cIndexColumnDescs,rgIndexColumnDescs,cProperties,rgProperties,ppIndexID) \
+ (This)->lpVtbl -> CreateIndex(This,pTableID,pIndexID,cIndexColumnDescs,rgIndexColumnDescs,cProperties,rgProperties,ppIndexID)
+
+#define IIndexDefinition_DropIndex(This,pIndexID) \
+ (This)->lpVtbl -> DropIndex(This,pIndexID)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IIndexDefinition_CreateIndex_Proxy(
+ IIndexDefinition __RPC_FAR * This,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ DBID __RPC_FAR *pIndexID,
+ /* [in] */ ULONG cIndexColumnDescs,
+ /* [size_is][in] */ DBINDEXCOLUMNDESC __RPC_FAR rgIndexColumnDescs[ ],
+ /* [in] */ ULONG cProperties,
+ /* [size_is][in] */ DBPROPERTY __RPC_FAR rgProperties[ ],
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *ppIndexID);
+
+
+void __RPC_STUB IIndexDefinition_CreateIndex_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IIndexDefinition_DropIndex_Proxy(
+ IIndexDefinition __RPC_FAR * This,
+ /* [in] */ DBID __RPC_FAR *pIndexID);
+
+
+void __RPC_STUB IIndexDefinition_DropIndex_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IIndexDefinition_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITableDefinition_INTERFACE_DEFINED__
+#define __ITableDefinition_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITableDefinition
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef struct tagDBCOLUMNDESC
+ {
+ DBID __RPC_FAR *pColumnID;
+ DBDATATYPE dwType;
+ BYTE precision;
+ BYTE scale;
+ BOOL fNullable;
+ } DBCOLUMNDESC;
+
+
+EXTERN_C const IID IID_ITableDefinition;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITableDefinition : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateTable(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ ULONG cColumnDescs,
+ /* [size_is][in] */ DBCOLUMNDESC __RPC_FAR rgColumnDescs[ ],
+ /* [in] */ REFIID riid,
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *ppTableID,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppRowset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DropTable(
+ /* [in] */ DBID __RPC_FAR *pTableID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddColumn(
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ DBCOLUMNDESC __RPC_FAR *pColumnDesc,
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *ppColumnID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DropColumn(
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ DBID __RPC_FAR *pColumnID) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITableDefinitionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITableDefinition __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITableDefinition __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITableDefinition __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateTable )(
+ ITableDefinition __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ ULONG cColumnDescs,
+ /* [size_is][in] */ DBCOLUMNDESC __RPC_FAR rgColumnDescs[ ],
+ /* [in] */ REFIID riid,
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *ppTableID,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppRowset);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DropTable )(
+ ITableDefinition __RPC_FAR * This,
+ /* [in] */ DBID __RPC_FAR *pTableID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddColumn )(
+ ITableDefinition __RPC_FAR * This,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ DBCOLUMNDESC __RPC_FAR *pColumnDesc,
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *ppColumnID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DropColumn )(
+ ITableDefinition __RPC_FAR * This,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ DBID __RPC_FAR *pColumnID);
+
+ END_INTERFACE
+ } ITableDefinitionVtbl;
+
+ interface ITableDefinition
+ {
+ CONST_VTBL struct ITableDefinitionVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITableDefinition_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITableDefinition_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITableDefinition_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITableDefinition_CreateTable(This,pUnkOuter,pTableID,cColumnDescs,rgColumnDescs,riid,ppTableID,ppRowset) \
+ (This)->lpVtbl -> CreateTable(This,pUnkOuter,pTableID,cColumnDescs,rgColumnDescs,riid,ppTableID,ppRowset)
+
+#define ITableDefinition_DropTable(This,pTableID) \
+ (This)->lpVtbl -> DropTable(This,pTableID)
+
+#define ITableDefinition_AddColumn(This,pTableID,pColumnDesc,ppColumnID) \
+ (This)->lpVtbl -> AddColumn(This,pTableID,pColumnDesc,ppColumnID)
+
+#define ITableDefinition_DropColumn(This,pTableID,pColumnID) \
+ (This)->lpVtbl -> DropColumn(This,pTableID,pColumnID)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITableDefinition_CreateTable_Proxy(
+ ITableDefinition __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ ULONG cColumnDescs,
+ /* [size_is][in] */ DBCOLUMNDESC __RPC_FAR rgColumnDescs[ ],
+ /* [in] */ REFIID riid,
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *ppTableID,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppRowset);
+
+
+void __RPC_STUB ITableDefinition_CreateTable_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITableDefinition_DropTable_Proxy(
+ ITableDefinition __RPC_FAR * This,
+ /* [in] */ DBID __RPC_FAR *pTableID);
+
+
+void __RPC_STUB ITableDefinition_DropTable_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITableDefinition_AddColumn_Proxy(
+ ITableDefinition __RPC_FAR * This,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ DBCOLUMNDESC __RPC_FAR *pColumnDesc,
+ /* [out] */ DBID __RPC_FAR *__RPC_FAR *ppColumnID);
+
+
+void __RPC_STUB ITableDefinition_AddColumn_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITableDefinition_DropColumn_Proxy(
+ ITableDefinition __RPC_FAR * This,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ DBID __RPC_FAR *pColumnID);
+
+
+void __RPC_STUB ITableDefinition_DropColumn_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITableDefinition_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOpenRowset_INTERFACE_DEFINED__
+#define __IOpenRowset_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOpenRowset
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IOpenRowset;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOpenRowset : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OpenRowset(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ ULONG cProperties,
+ /* [size_is][out][in] */ const DBPROPERTYSUPPORT __RPC_FAR *__RPC_FAR prgProperties[ ],
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ DBPROPERTYERROR __RPC_FAR rgPropertyErrors[ ],
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppRowset) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOpenRowsetVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOpenRowset __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOpenRowset __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOpenRowset __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OpenRowset )(
+ IOpenRowset __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ ULONG cProperties,
+ /* [size_is][out][in] */ const DBPROPERTYSUPPORT __RPC_FAR *__RPC_FAR prgProperties[ ],
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ DBPROPERTYERROR __RPC_FAR rgPropertyErrors[ ],
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppRowset);
+
+ END_INTERFACE
+ } IOpenRowsetVtbl;
+
+ interface IOpenRowset
+ {
+ CONST_VTBL struct IOpenRowsetVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOpenRowset_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOpenRowset_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOpenRowset_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOpenRowset_OpenRowset(This,pUnkOuter,pTableID,cProperties,prgProperties,riid,rgPropertyErrors,ppRowset) \
+ (This)->lpVtbl -> OpenRowset(This,pUnkOuter,pTableID,cProperties,prgProperties,riid,rgPropertyErrors,ppRowset)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOpenRowset_OpenRowset_Proxy(
+ IOpenRowset __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ DBID __RPC_FAR *pTableID,
+ /* [in] */ ULONG cProperties,
+ /* [size_is][out][in] */ const DBPROPERTYSUPPORT __RPC_FAR *__RPC_FAR prgProperties[ ],
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ DBPROPERTYERROR __RPC_FAR rgPropertyErrors[ ],
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppRowset);
+
+
+void __RPC_STUB IOpenRowset_OpenRowset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOpenRowset_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDBSchemaCommand_INTERFACE_DEFINED__
+#define __IDBSchemaCommand_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDBSchemaCommand
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IDBSchemaCommand;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDBSchemaCommand : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetCommand(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFGUID rguidSchema,
+ /* [out] */ ICommand __RPC_FAR *__RPC_FAR *ppCommand) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSchemas(
+ /* [out] */ ULONG __RPC_FAR *pcSchemas,
+ /* [out] */ GUID __RPC_FAR *__RPC_FAR *prgSchemas) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDBSchemaCommandVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDBSchemaCommand __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDBSchemaCommand __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDBSchemaCommand __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCommand )(
+ IDBSchemaCommand __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFGUID rguidSchema,
+ /* [out] */ ICommand __RPC_FAR *__RPC_FAR *ppCommand);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSchemas )(
+ IDBSchemaCommand __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcSchemas,
+ /* [out] */ GUID __RPC_FAR *__RPC_FAR *prgSchemas);
+
+ END_INTERFACE
+ } IDBSchemaCommandVtbl;
+
+ interface IDBSchemaCommand
+ {
+ CONST_VTBL struct IDBSchemaCommandVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDBSchemaCommand_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDBSchemaCommand_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDBSchemaCommand_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDBSchemaCommand_GetCommand(This,pUnkOuter,rguidSchema,ppCommand) \
+ (This)->lpVtbl -> GetCommand(This,pUnkOuter,rguidSchema,ppCommand)
+
+#define IDBSchemaCommand_GetSchemas(This,pcSchemas,prgSchemas) \
+ (This)->lpVtbl -> GetSchemas(This,pcSchemas,prgSchemas)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDBSchemaCommand_GetCommand_Proxy(
+ IDBSchemaCommand __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFGUID rguidSchema,
+ /* [out] */ ICommand __RPC_FAR *__RPC_FAR *ppCommand);
+
+
+void __RPC_STUB IDBSchemaCommand_GetCommand_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDBSchemaCommand_GetSchemas_Proxy(
+ IDBSchemaCommand __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcSchemas,
+ /* [out] */ GUID __RPC_FAR *__RPC_FAR *prgSchemas);
+
+
+void __RPC_STUB IDBSchemaCommand_GetSchemas_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDBSchemaCommand_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDBSchemaRowset_INTERFACE_DEFINED__
+#define __IDBSchemaRowset_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDBSchemaRowset
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+#define CRESTRICTIONS_DBSCHEMA_ASSERTIONS 3
+#define CRESTRICTIONS_DBSCHEMA_CATALOGS 1
+#define CRESTRICTIONS_DBSCHEMA_CHARACTER_SETS 3
+#define CRESTRICTIONS_DBSCHEMA_COLLATIONS 3
+#define CRESTRICTIONS_DBSCHEMA_COLUMNS 4
+#define CRESTRICTIONS_DBSCHEMA_CHECK_CONSTRAINTS 3
+#define CRESTRICTIONS_DBSCHEMA_CONSTRAINT_COLUMN_USAGE 3
+#define CRESTRICTIONS_DBSCHEMA_CONSTRAINT_TABLE_USAGE 3
+#define CRESTRICTIONS_DBSCHEMA_KEY_COLUMN_USAGE_CONSTRAINTS 7
+#define CRESTRICTIONS_DBSCHEMA_REFERENTIAL_CONSTRAINTS 3
+#define CRESTRICTIONS_DBSCHEMA_TABLE_CONSTRAINTS 3
+#define CRESTRICTIONS_DBSCHEMA_DOMAIN_COLUMN_USAGE 4
+#define CRESTRICTIONS_DBSCHEMA_DOMAINS 3
+#define CRESTRICTIONS_DBSCHEMA_DOMAIN_CONSTRAINTS 3
+#define CRESTRICTIONS_DBSCHEMA_INDEXES 3
+#define CRESTRICTIONS_DBSCHEMA_OBJECT_ACTIONS 1
+#define CRESTRICTIONS_DBSCHEMA_OBJECTS 1
+#define CRESTRICTIONS_DBSCHEMA_COLUMN_PRIVILEGES 6
+#define CRESTRICTIONS_DBSCHEMA_TABLE_PRIVILEGES 5
+#define CRESTRICTIONS_DBSCHEMA_USAGE_PRIVILEGES 6
+#define CRESTRICTIONS_DBSCHEMA_PROCEDURES 4
+#define CRESTRICTIONS_DBSCHEMA_SCHEMATA 3
+#define CRESTRICTIONS_DBSCHEMA_SQL_LANGUAGES 0
+#define CRESTRICTIONS_DBSCHEMA_STATISTICS 3
+#define CRESTRICTIONS_DBSCHEMA_SYNONYMS 3
+#define CRESTRICTIONS_DBSCHEMA_TABLES 4
+#define CRESTRICTIONS_DBSCHEMA_TRANSLATIONS 3
+#define CRESTRICTIONS_DBSCHEMA_TRIGGERS 3
+#define CRESTRICTIONS_DBSCHEMA_TYPES 1
+#define CRESTRICTIONS_DBSCHEMA_VIEWS 3
+#define CRESTRICTIONS_DBSCHEMA_VIEW_COLUMN_USAGE 3
+#define CRESTRICTIONS_DBSCHEMA_VIEW_TABLE_USAGE 3
+
+EXTERN_C const IID IID_IDBSchemaRowset;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDBSchemaRowset : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetRowset(
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFGUID rguidSchema,
+ /* [in] */ ULONG cRestrictions,
+ /* [size_is][in] */ LPWSTR __RPC_FAR rgpwszRestrictions[ ],
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppRowset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSchemas(
+ /* [out] */ ULONG __RPC_FAR *pcSchemas,
+ /* [out] */ GUID __RPC_FAR *__RPC_FAR *prgSchemas) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDBSchemaRowsetVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDBSchemaRowset __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDBSchemaRowset __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDBSchemaRowset __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRowset )(
+ IDBSchemaRowset __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFGUID rguidSchema,
+ /* [in] */ ULONG cRestrictions,
+ /* [size_is][in] */ LPWSTR __RPC_FAR rgpwszRestrictions[ ],
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppRowset);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSchemas )(
+ IDBSchemaRowset __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcSchemas,
+ /* [out] */ GUID __RPC_FAR *__RPC_FAR *prgSchemas);
+
+ END_INTERFACE
+ } IDBSchemaRowsetVtbl;
+
+ interface IDBSchemaRowset
+ {
+ CONST_VTBL struct IDBSchemaRowsetVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDBSchemaRowset_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDBSchemaRowset_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDBSchemaRowset_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDBSchemaRowset_GetRowset(This,pUnkOuter,rguidSchema,cRestrictions,rgpwszRestrictions,riid,ppRowset) \
+ (This)->lpVtbl -> GetRowset(This,pUnkOuter,rguidSchema,cRestrictions,rgpwszRestrictions,riid,ppRowset)
+
+#define IDBSchemaRowset_GetSchemas(This,pcSchemas,prgSchemas) \
+ (This)->lpVtbl -> GetSchemas(This,pcSchemas,prgSchemas)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDBSchemaRowset_GetRowset_Proxy(
+ IDBSchemaRowset __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFGUID rguidSchema,
+ /* [in] */ ULONG cRestrictions,
+ /* [size_is][in] */ LPWSTR __RPC_FAR rgpwszRestrictions[ ],
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppRowset);
+
+
+void __RPC_STUB IDBSchemaRowset_GetRowset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDBSchemaRowset_GetSchemas_Proxy(
+ IDBSchemaRowset __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcSchemas,
+ /* [out] */ GUID __RPC_FAR *__RPC_FAR *prgSchemas);
+
+
+void __RPC_STUB IDBSchemaRowset_GetSchemas_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDBSchemaRowset_INTERFACE_DEFINED__ */
+
+
+#ifndef __IProvideMoniker_INTERFACE_DEFINED__
+#define __IProvideMoniker_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IProvideMoniker
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IProvideMoniker;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IProvideMoniker : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppvIMoniker) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IProvideMonikerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IProvideMoniker __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IProvideMoniker __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IProvideMoniker __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMoniker )(
+ IProvideMoniker __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppvIMoniker);
+
+ END_INTERFACE
+ } IProvideMonikerVtbl;
+
+ interface IProvideMoniker
+ {
+ CONST_VTBL struct IProvideMonikerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IProvideMoniker_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IProvideMoniker_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IProvideMoniker_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IProvideMoniker_GetMoniker(This,ppvIMoniker) \
+ (This)->lpVtbl -> GetMoniker(This,ppvIMoniker)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IProvideMoniker_GetMoniker_Proxy(
+ IProvideMoniker __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppvIMoniker);
+
+
+void __RPC_STUB IProvideMoniker_GetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IProvideMoniker_INTERFACE_DEFINED__ */
+
+
+#ifndef __IErrorRecords_INTERFACE_DEFINED__
+#define __IErrorRecords_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IErrorRecords
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef struct tagERRORINFO
+ {
+ HRESULT hrError;
+ DWORD dwMinor;
+ CLSID clsid;
+ IID iid;
+ DISPID dispid;
+ } ERRORINFO;
+
+
+EXTERN_C const IID IID_IErrorRecords;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IErrorRecords : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE AddErrorRecord(
+ /* [in] */ ERRORINFO __RPC_FAR *pErrorInfo,
+ /* [in] */ DISPPARAMS __RPC_FAR *pdispparams,
+ /* [in] */ IUnknown __RPC_FAR *punkCustomError) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBasicErrorInfo(
+ /* [in] */ ULONG ulRecordNum,
+ /* [out] */ ERRORINFO __RPC_FAR *pErrorInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCustomErrorObject(
+ /* [in] */ ULONG ulRecordNum,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetErrorInfo(
+ /* [in] */ ULONG ulRecordNum,
+ /* [in] */ LCID lcid,
+ /* [out] */ IErrorInfo __RPC_FAR *__RPC_FAR *ppErrorInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetErrorParameters(
+ /* [in] */ ULONG ulRecordNum,
+ /* [out] */ DISPPARAMS __RPC_FAR *pdispparams) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRecordCount(
+ /* [out] */ ULONG __RPC_FAR *pcRecords) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IErrorRecordsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IErrorRecords __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IErrorRecords __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddErrorRecord )(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ ERRORINFO __RPC_FAR *pErrorInfo,
+ /* [in] */ DISPPARAMS __RPC_FAR *pdispparams,
+ /* [in] */ IUnknown __RPC_FAR *punkCustomError);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBasicErrorInfo )(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ ULONG ulRecordNum,
+ /* [out] */ ERRORINFO __RPC_FAR *pErrorInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCustomErrorObject )(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ ULONG ulRecordNum,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetErrorInfo )(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ ULONG ulRecordNum,
+ /* [in] */ LCID lcid,
+ /* [out] */ IErrorInfo __RPC_FAR *__RPC_FAR *ppErrorInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetErrorParameters )(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ ULONG ulRecordNum,
+ /* [out] */ DISPPARAMS __RPC_FAR *pdispparams);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRecordCount )(
+ IErrorRecords __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcRecords);
+
+ END_INTERFACE
+ } IErrorRecordsVtbl;
+
+ interface IErrorRecords
+ {
+ CONST_VTBL struct IErrorRecordsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IErrorRecords_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IErrorRecords_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IErrorRecords_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IErrorRecords_AddErrorRecord(This,pErrorInfo,pdispparams,punkCustomError) \
+ (This)->lpVtbl -> AddErrorRecord(This,pErrorInfo,pdispparams,punkCustomError)
+
+#define IErrorRecords_GetBasicErrorInfo(This,ulRecordNum,pErrorInfo) \
+ (This)->lpVtbl -> GetBasicErrorInfo(This,ulRecordNum,pErrorInfo)
+
+#define IErrorRecords_GetCustomErrorObject(This,ulRecordNum,riid,ppObject) \
+ (This)->lpVtbl -> GetCustomErrorObject(This,ulRecordNum,riid,ppObject)
+
+#define IErrorRecords_GetErrorInfo(This,ulRecordNum,lcid,ppErrorInfo) \
+ (This)->lpVtbl -> GetErrorInfo(This,ulRecordNum,lcid,ppErrorInfo)
+
+#define IErrorRecords_GetErrorParameters(This,ulRecordNum,pdispparams) \
+ (This)->lpVtbl -> GetErrorParameters(This,ulRecordNum,pdispparams)
+
+#define IErrorRecords_GetRecordCount(This,pcRecords) \
+ (This)->lpVtbl -> GetRecordCount(This,pcRecords)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IErrorRecords_AddErrorRecord_Proxy(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ ERRORINFO __RPC_FAR *pErrorInfo,
+ /* [in] */ DISPPARAMS __RPC_FAR *pdispparams,
+ /* [in] */ IUnknown __RPC_FAR *punkCustomError);
+
+
+void __RPC_STUB IErrorRecords_AddErrorRecord_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorRecords_GetBasicErrorInfo_Proxy(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ ULONG ulRecordNum,
+ /* [out] */ ERRORINFO __RPC_FAR *pErrorInfo);
+
+
+void __RPC_STUB IErrorRecords_GetBasicErrorInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorRecords_GetCustomErrorObject_Proxy(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ ULONG ulRecordNum,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppObject);
+
+
+void __RPC_STUB IErrorRecords_GetCustomErrorObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorRecords_GetErrorInfo_Proxy(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ ULONG ulRecordNum,
+ /* [in] */ LCID lcid,
+ /* [out] */ IErrorInfo __RPC_FAR *__RPC_FAR *ppErrorInfo);
+
+
+void __RPC_STUB IErrorRecords_GetErrorInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorRecords_GetErrorParameters_Proxy(
+ IErrorRecords __RPC_FAR * This,
+ /* [in] */ ULONG ulRecordNum,
+ /* [out] */ DISPPARAMS __RPC_FAR *pdispparams);
+
+
+void __RPC_STUB IErrorRecords_GetErrorParameters_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorRecords_GetRecordCount_Proxy(
+ IErrorRecords __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcRecords);
+
+
+void __RPC_STUB IErrorRecords_GetRecordCount_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IErrorRecords_INTERFACE_DEFINED__ */
+
+
+#ifndef __IErrorLookup_INTERFACE_DEFINED__
+#define __IErrorLookup_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IErrorLookup
+ * at Fri Nov 15 09:42:26 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IErrorLookup;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IErrorLookup : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetErrorDescription(
+ /* [in] */ HRESULT hrError,
+ /* [in] */ DWORD dwMinor,
+ /* [in] */ DISPPARAMS __RPC_FAR *pdispparams,
+ /* [in] */ LCID lcid,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszSource,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetHelpInfo(
+ /* [in] */ HRESULT hrError,
+ /* [in] */ DWORD dwMinor,
+ /* [in] */ LCID lcid,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszHelpFile,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IErrorLookupVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IErrorLookup __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IErrorLookup __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IErrorLookup __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetErrorDescription )(
+ IErrorLookup __RPC_FAR * This,
+ /* [in] */ HRESULT hrError,
+ /* [in] */ DWORD dwMinor,
+ /* [in] */ DISPPARAMS __RPC_FAR *pdispparams,
+ /* [in] */ LCID lcid,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszSource,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszDescription);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetHelpInfo )(
+ IErrorLookup __RPC_FAR * This,
+ /* [in] */ HRESULT hrError,
+ /* [in] */ DWORD dwMinor,
+ /* [in] */ LCID lcid,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszHelpFile,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext);
+
+ END_INTERFACE
+ } IErrorLookupVtbl;
+
+ interface IErrorLookup
+ {
+ CONST_VTBL struct IErrorLookupVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IErrorLookup_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IErrorLookup_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IErrorLookup_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IErrorLookup_GetErrorDescription(This,hrError,dwMinor,pdispparams,lcid,ppwszSource,ppwszDescription) \
+ (This)->lpVtbl -> GetErrorDescription(This,hrError,dwMinor,pdispparams,lcid,ppwszSource,ppwszDescription)
+
+#define IErrorLookup_GetHelpInfo(This,hrError,dwMinor,lcid,ppwszHelpFile,pdwHelpContext) \
+ (This)->lpVtbl -> GetHelpInfo(This,hrError,dwMinor,lcid,ppwszHelpFile,pdwHelpContext)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IErrorLookup_GetErrorDescription_Proxy(
+ IErrorLookup __RPC_FAR * This,
+ /* [in] */ HRESULT hrError,
+ /* [in] */ DWORD dwMinor,
+ /* [in] */ DISPPARAMS __RPC_FAR *pdispparams,
+ /* [in] */ LCID lcid,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszSource,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszDescription);
+
+
+void __RPC_STUB IErrorLookup_GetErrorDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IErrorLookup_GetHelpInfo_Proxy(
+ IErrorLookup __RPC_FAR * This,
+ /* [in] */ HRESULT hrError,
+ /* [in] */ DWORD dwMinor,
+ /* [in] */ LCID lcid,
+ /* [out] */ LPWSTR __RPC_FAR *ppwszHelpFile,
+ /* [out] */ DWORD __RPC_FAR *pdwHelpContext);
+
+
+void __RPC_STUB IErrorLookup_GetHelpInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IErrorLookup_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/oledbtyp.h b/public/sdk/inc/oledbtyp.h
new file mode 100644
index 000000000..cbcf45ede
--- /dev/null
+++ b/public/sdk/inc/oledbtyp.h
@@ -0,0 +1,21 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994 - 1994.
+//
+// File: oledbtyp.h
+//
+// Contents: Necessary type definitions for OLD-DB interfaces
+//
+// Notes: This file works around the fact that not everyone yet
+// has oleaut.h.
+// We just conditionally include the right type definitions
+// for whatever platform we're running on.
+//
+// History: 25 Aug 94 Alanw Created
+//
+//+---------------------------------------------------------------------------
+
+#if !defined( _VARNT_DEFINED )
+#include <oaidl.h>
+#endif //!defined( _VARNT_DEFINED )
diff --git a/public/sdk/inc/oledlg.dlg b/public/sdk/inc/oledlg.dlg
new file mode 100644
index 000000000..8d66aae35
--- /dev/null
+++ b/public/sdk/inc/oledlg.dlg
@@ -0,0 +1,566 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1995.
+//
+// File: oledlg.dlg
+//
+// Contents: dialog templates used by OLEDLG.DLL
+//
+//----------------------------------------------------------------------------
+
+#define IDC_STATIC -1
+#include "oledlg.h"
+
+IDD_INSERTOBJECT DIALOG DISCARDABLE 6, 18, 293, 150
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Insert Object"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "Create &New",IDC_IO_CREATENEW,"Button",
+ BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,6,18,73,10
+ CONTROL "Create from &File",IDC_IO_CREATEFROMFILE,"Button",
+ BS_AUTORADIOBUTTON | WS_TABSTOP,6,36,73,10
+ CONTROL "Create &Control",IDC_IO_INSERTCONTROL,"Button",
+ BS_AUTORADIOBUTTON,6,54,72,10
+ LTEXT "Object &Type:",IDC_IO_OBJECTTYPETEXT,81,6,110,8
+ LISTBOX IDC_IO_OBJECTTYPELIST,82,17,132,78,LBS_SORT |
+ LBS_USETABSTOPS | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LTEXT "Fil&e:",IDC_IO_FILETEXT,82,24,20,8
+ LTEXT "",IDC_IO_FILETYPE,120,24,80,8
+ EDITTEXT IDC_IO_FILEDISPLAY,82,34,132,12,ES_AUTOHSCROLL |
+ ES_OEMCONVERT
+ PUSHBUTTON "&Browse...",IDC_IO_FILE,82,50,48,14
+ CONTROL "&Link",IDC_IO_LINKFILE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,140,52,40,10
+ LISTBOX IDC_IO_CONTROLTYPELIST,82,17,132,66,LBS_SORT |
+ LBS_USETABSTOPS | NOT WS_VISIBLE | WS_DISABLED |
+ WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Add Control...",IDC_IO_ADDCONTROL,82,78,66,14
+ DEFPUSHBUTTON "OK",IDOK,221,6,66,14,WS_GROUP
+ PUSHBUTTON "Cancel",IDCANCEL,221,23,66,14
+ PUSHBUTTON "&Help",IDC_OLEUIHELP,221,40,66,14
+ CONTROL "&Display As Icon",IDC_IO_DISPLAYASICON,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,222,62,66,10
+ CONTROL "",IDC_IO_ICONDISPLAY,"OLE2UIiconbox",0x0,221,79,66,46
+ PUSHBUTTON "Change &Icon...",IDC_IO_CHANGEICON,221,130,66,14
+ GROUPBOX "Result",IDC_STATIC,6,96,210,47,WS_GROUP
+ CONTROL "",IDC_IO_RESULTIMAGE,"OLE2UIresimage",0x0,10,106,42,
+ 34
+ LTEXT "<< result text goes here >>",IDC_IO_RESULTTEXT,56,106,
+ 156,32,SS_NOPREFIX | NOT WS_GROUP
+END
+
+IDD_CHANGEICON DIALOG DISCARDABLE 18, 18, 257, 153
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Change Icon"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ GROUPBOX "Icon",IDC_CI_GROUP,4,6,180,124
+ CONTROL "&Current",IDC_CI_CURRENT,"Button",BS_AUTORADIOBUTTON |
+ WS_GROUP,10,19,46,10
+ CONTROL "&Default",IDC_CI_DEFAULT,"Button",BS_AUTORADIOBUTTON,10,
+ 44,46,10
+ CONTROL "&From File:",IDC_CI_FROMFILE,"Button",
+ BS_AUTORADIOBUTTON,10,68,46,10
+ ICON "",IDC_CI_CURRENTICON,58,15,18,20
+ ICON "",IDC_CI_DEFAULTICON,58,40,18,20
+ EDITTEXT IDC_CI_FROMFILEEDIT,58,68,119,12,ES_AUTOHSCROLL |
+ ES_OEMCONVERT | WS_GROUP
+ LISTBOX IDC_CI_ICONLIST,58,84,119,40,LBS_OWNERDRAWFIXED |
+ LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN |
+ LBS_DISABLENOSCROLL | WS_HSCROLL | WS_TABSTOP
+ LTEXT "&Label:",IDC_CI_LABEL,6,138,32,8
+ EDITTEXT IDC_CI_LABELEDIT,38,136,146,12,ES_AUTOHSCROLL
+ DEFPUSHBUTTON "OK",IDOK,191,6,60,14
+ PUSHBUTTON "Cancel",IDCANCEL,191,23,60,14
+ PUSHBUTTON "&Browse...",IDC_CI_BROWSE,191,40,60,14
+ PUSHBUTTON "&Help",IDC_OLEUIHELP,191,62,60,14
+ CONTROL "",IDC_CI_ICONDISPLAY,"OLE2UIiconbox",0x0,187,84,66,46
+END
+
+IDD_EDITLINKS DIALOG DISCARDABLE 9, 25, 326, 158
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Links"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Links:",IDC_EL_COL1,11,11,26,8
+ LTEXT "Type",IDC_EL_COL2,137,12,20,8
+ LTEXT "Update",IDC_EL_COL3,201,12,25,8
+ LISTBOX IDC_EL_LINKSLISTBOX,11,23,237,81,LBS_SORT |
+ LBS_OWNERDRAWFIXED | LBS_USETABSTOPS | LBS_EXTENDEDSEL |
+ WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Cancel",IDCANCEL,254,11,66,14
+ PUSHBUTTON "&Update Now",IDC_EL_UPDATENOW,254,32,66,14
+ PUSHBUTTON "&Open Source",IDC_EL_OPENSOURCE,254,49,66,14,WS_GROUP
+ PUSHBUTTON "&Change Source...",IDC_EL_CHANGESOURCE,254,66,66,14,
+ WS_GROUP
+ PUSHBUTTON "&Break Link",IDC_EL_CANCELLINK,255,88,66,14
+ PUSHBUTTON "&Help",IDC_OLEUIHELP,255,136,66,14
+ CONTROL "&Automatic",IDC_EL_AUTOMATIC,"Button",
+ BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,61,138,65,10
+ CONTROL "&Manual",IDC_EL_MANUAL,"Button",BS_AUTORADIOBUTTON,130,
+ 138,39,10
+ LTEXT "Source:",IDC_STATIC,9,113,30,8
+ LTEXT "Type:",IDC_STATIC,9,125,20,8
+ LTEXT "Update:",IDC_STATIC,9,139,32,8
+ LTEXT "<< source display string goes here >>",
+ IDC_EL_LINKSOURCE,45,113,195,8,SS_NOPREFIX
+ LTEXT "<< current type goes here >>",IDC_EL_LINKTYPE,45,125,
+ 195,8,SS_NOPREFIX
+END
+
+IDD_PASTESPECIAL DIALOG DISCARDABLE 3, 15, 293, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Paste Special"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Source:",IDC_STATIC,6,9,30,8
+ CONTROL "&Paste",IDC_PS_PASTE,"Button",BS_AUTORADIOBUTTON |
+ WS_GROUP | WS_TABSTOP,6,38,55,10
+ CONTROL "Paste &Link",IDC_PS_PASTELINK,"Button",
+ BS_AUTORADIOBUTTON,6,63,55,10
+ LTEXT "&As:",IDC_STATIC,65,25,16,8
+ LISTBOX IDC_PS_PASTELIST,65,36,153,57,LBS_USETABSTOPS | NOT
+ WS_VISIBLE | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LISTBOX IDC_PS_PASTELINKLIST,65,36,153,57,LBS_USETABSTOPS | NOT
+ WS_VISIBLE | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LISTBOX IDC_PS_DISPLAYLIST,65,36,153,57,LBS_USETABSTOPS |
+ WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,224,6,66,14,WS_GROUP
+ PUSHBUTTON "Cancel",IDCANCEL,224,23,66,14
+ PUSHBUTTON "&Help",IDC_OLEUIHELP,224,42,66,14
+ CONTROL "&Display As Icon",IDC_PS_DISPLAYASICON,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,224,59,66,14
+ CONTROL "",IDC_PS_ICONDISPLAY,"OLE2UIiconbox",0x0,224,75,66,44
+ PUSHBUTTON "Change &Icon...",IDC_PS_CHANGEICON,224,123,66,14
+ CONTROL "",IDC_PS_RESULTIMAGE,"OLE2UIresimage",0x0,8,101,42,34
+ LTEXT "<< result text goes here >>",IDC_PS_RESULTTEXT,54,100,
+ 159,35,SS_NOPREFIX | NOT WS_GROUP
+ GROUPBOX "Result",IDC_STATIC,6,90,212,48,WS_GROUP
+ LTEXT "<< source text goes here >>",IDC_PS_SOURCETEXT,39,9,178,
+ 8
+END
+
+IDD_BUSY DIALOG DISCARDABLE 0, 0, 214, 76
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Server Busy"
+FONT 8, "MS Shell Dlg"
+BEGIN
+#ifdef CHICO
+ DEFPUSHBUTTON "&Retry",IDC_BZ_RETRY,92,55,53,15
+ PUSHBUTTON "&Cancel",IDCANCEL,152,55,53,15
+ LTEXT "This action cannot be completed because the other program is busy. Click the appropriate button on the task bar to activate the busy program and correct the problem.",
+ IDC_BZ_MESSAGE1,35,11,167,35
+#else
+ DEFPUSHBUTTON "&Switch To...",IDC_BZ_SWITCHTO,33,55,53,15
+ PUSHBUTTON "&Retry",IDC_BZ_RETRY,92,55,53,15
+ PUSHBUTTON "&Cancel",IDCANCEL,152,55,53,15
+ LTEXT "This action cannot be completed because the other program is busy. Choose 'Switch To' to activate the busy program and correct the problem.",
+ IDC_BZ_MESSAGE1,35,11,167,35
+#endif
+ ICON "",IDC_BZ_ICON,8,18,18,20
+END
+
+IDD_CONVERT DIALOG DISCARDABLE 60, 26, 270, 146
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Convert"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ RTEXT "Current Type:",IDC_STATIC,5,7,47,8
+ LTEXT "<< current object type goes here >>",IDC_CV_OBJECTTYPE,
+ 55,7,131,8
+ LTEXT "Object T&ype:",IDC_STATIC,70,21,89,8
+ LISTBOX IDC_CV_ACTIVATELIST,71,32,118,53,LBS_SORT |
+ LBS_USETABSTOPS | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LISTBOX IDC_CV_CONVERTLIST,350,180,118,53,LBS_SORT |
+ LBS_USETABSTOPS | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,198,6,66,14,WS_GROUP
+ PUSHBUTTON "Cancel",IDCANCEL,198,24,66,14
+ PUSHBUTTON "&Help",IDC_OLEUIHELP,198,42,66,14
+ CONTROL "&Display As Icon",IDC_CV_DISPLAYASICON,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,200,61,64,10
+ GROUPBOX "Result",IDC_STATIC,6,87,183,51
+ CONTROL "&Convert to:",IDC_CV_CONVERTTO,"Button",
+ BS_AUTORADIOBUTTON,6,34,59,10
+ CONTROL "&Activate as:",IDC_CV_ACTIVATEAS,"Button",
+ BS_AUTORADIOBUTTON,7,58,59,10
+ LTEXT "<< result text goes here >>",IDC_CV_RESULTTEXT,11,98,
+ 174,35
+ PUSHBUTTON "Change &Icon...",IDC_CV_CHANGEICON,198,125,66,14
+ CONTROL "",IDC_CV_ICONDISPLAY,"OLE2UIiconbox",0x0,198,75,66,46
+END
+
+IDD_LINKSOURCEUNAVAILABLE DIALOG DISCARDABLE 21, 34, 175, 78
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "",IDC_PU_ICON,8,8,18,20
+ LTEXT "This action cannot be completed because the selected link's source is presently unavailable.",
+ IDC_PU_TEXT,48,8,117,32
+ DEFPUSHBUTTON "OK",IDOK,39,58,40,14
+ PUSHBUTTON "Links...",IDC_PU_LINKS,95,58,40,14
+END
+
+IDD_CANNOTUPDATELINK DIALOG DISCARDABLE 21, 34, 175, 78
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "",IDC_PU_ICON,8,8,18,20
+ LTEXT "Some links could not be updated because their sources are presently unavailable.",
+ IDC_PU_TEXT,48,8,117,32
+ DEFPUSHBUTTON "OK",IDOK,39,58,40,14
+ PUSHBUTTON "Links...",IDC_PU_LINKS,95,58,40,14
+END
+
+IDD_SERVERNOTREGW DIALOG DISCARDABLE 39, 30, 198, 78
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "",IDC_PU_ICON,8,8,18,20
+ LTEXT "The program necessary to activate this %ls is unavailable. You may convert it to or activate it as another type of object using Convert...",
+ IDC_PU_TEXT,39,8,152,36
+ DEFPUSHBUTTON "Convert...",IDC_PU_CONVERT,23,58,40,14
+ PUSHBUTTON "Cancel",IDCANCEL,79,58,40,14
+ PUSHBUTTON "Help",IDC_OLEUIHELP,135,58,40,14
+END
+
+IDD_SERVERNOTREGA DIALOG DISCARDABLE 39, 30, 198, 78
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "",IDC_PU_ICON,8,8,18,20
+ LTEXT "The program necessary to activate this %hs is unavailable. You may convert it to or activate it as another type of object using Convert...",
+ IDC_PU_TEXT,39,8,152,36
+ DEFPUSHBUTTON "Convert...",IDC_PU_CONVERT,23,58,40,14
+ PUSHBUTTON "Cancel",IDCANCEL,79,58,40,14
+ PUSHBUTTON "Help",IDC_OLEUIHELP,135,58,40,14
+END
+
+IDD_LINKTYPECHANGEDW DIALOG DISCARDABLE 39, 30, 198, 78
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "",IDC_PU_ICON,8,8,18,20
+ LTEXT "The link is no longer a %ls. Please choose a different command offered by the new type.",
+ IDC_PU_TEXT,39,8,152,36
+ PUSHBUTTON "OK",IDOK,79,58,40,14
+END
+
+IDD_LINKTYPECHANGEDA DIALOG DISCARDABLE 39, 30, 198, 78
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "",IDC_PU_ICON,8,8,18,20
+ LTEXT "The link is no longer a %hs. Please choose a different command offered by the new type.",
+ IDC_PU_TEXT,39,8,152,36
+ PUSHBUTTON "OK",IDOK,79,58,40,14
+END
+
+IDD_SERVERNOTFOUND DIALOG DISCARDABLE 36, 39, 183, 90
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "",IDC_PU_ICON,8,8,18,20
+ LTEXT "The server program cannot be found.\n\nMake sure the program is properly installed, or exists in your system path, and that is has not been deleted, moved, or renamed.",
+ IDC_PU_TEXT,38,8,136,52
+ DEFPUSHBUTTON "OK",IDOK,71,70,40,14
+END
+
+IDD_UPDATELINKS DIALOG DISCARDABLE 50, 57, 179, 42
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Update Links"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "",IDC_UL_METER,"Static",SS_BLACKFRAME,5,28,124,10
+ DEFPUSHBUTTON "Stop",IDC_UL_STOP,134,26,40,14
+ LTEXT "Update links...",IDC_STATIC,5,7,56,8
+ CTEXT "0%",IDC_UL_PERCENT,37,18,64,8
+END
+
+IDD_OUTOFMEMORY DIALOG DISCARDABLE 36, 39, 178, 73
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "",IDC_PU_ICON,8,8,18,20
+ LTEXT "Insufficient memory to complete the operation.",
+ IDC_PU_TEXT,40,12,127,30
+ DEFPUSHBUTTON "OK",IDOK,71,49,40,14
+END
+
+IDD_GNRLPROPS DIALOG DISCARDABLE 0, 0, 204, 152
+STYLE WS_CHILD | WS_VISIBLE | WS_CAPTION
+CAPTION "General"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "",IDC_GP_OBJECTICON,6,9,18,20
+ LTEXT "<< name goes here >>",IDC_GP_OBJECTNAME,32,15,167,21
+ CONTROL "",IDC_STATIC,"Static",SS_BLACKRECT,6,43,193,1
+ LTEXT "Type:",IDC_STATIC,6,50,20,8
+ LTEXT "<< type goes here >>",IDC_GP_OBJECTTYPE,42,50,102,8
+ LTEXT "Size:",IDC_STATIC,6,64,18,8
+ LTEXT "<< size goes here >>",IDC_GP_OBJECTSIZE,42,64,101,8
+ LTEXT "Location:",IDC_STATIC,6,76,30,8
+ LTEXT "<< location goes here >>",IDC_GP_OBJECTLOCATION,42,76,
+ 154,8
+ CONTROL "",IDC_STATIC,"Static",SS_BLACKRECT,6,90,193,1
+ PUSHBUTTON "&Convert...",IDC_GP_CONVERT,149,48,50,14
+END
+
+IDD_VIEWPROPS DIALOG DISCARDABLE 0, 0, 204, 154
+STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION
+CAPTION "View"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ GROUPBOX " Appearance ",IDC_STATIC,6,6,193,101
+ CONTROL "",IDC_VP_ICONDISPLAY,"OLE2UIiconbox",0x0,12,54,66,46
+ CONTROL "Display as &editable information",IDC_VP_EDITABLE,
+ "Button",BS_AUTORADIOBUTTON,81,29,113,10
+ CONTROL "Display as &icon",IDC_VP_ASICON,"Button",
+ BS_AUTORADIOBUTTON,81,58,116,10
+ PUSHBUTTON "&Change Icon...",IDC_VP_CHANGEICON,92,72,58,14
+ LTEXT "&Scale:",IDC_VP_SCALETXT,6,113,25,8
+ EDITTEXT IDC_VP_PERCENT,6,123,33,13,ES_AUTOHSCROLL
+ LTEXT "%",IDC_STATIC,41,126,9,8
+ CONTROL "&Relative to Original Size",IDC_VP_RELATIVE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,60,125,132,10
+ CONTROL "",IDC_VP_RESULTIMAGE,"OLE2UIresimage",0x0,12,18,66,34
+END
+
+IDD_LINKPROPS DIALOG DISCARDABLE 0, 0, 204, 154
+STYLE WS_CHILD | WS_VISIBLE | WS_CAPTION
+CAPTION "Link"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ GROUPBOX " Linked To ",IDC_STATIC,6,6,192,51
+ LTEXT "< first line of linked to >\n<second line of linked to >",
+ IDC_LP_LINKSOURCE,11,19,181,18
+ PUSHBUTTON "&Change Source...",IDC_LP_CHANGESOURCE,12,39,66,14
+ GROUPBOX " Update ",IDC_STATIC,6,60,85,42
+ CONTROL "Automatically",IDC_LP_AUTOMATIC,"Button",
+ BS_AUTORADIOBUTTON,12,74,76,10
+ CONTROL "Manually",IDC_LP_MANUAL,"Button",BS_AUTORADIOBUTTON,12,
+ 87,76,10
+ GROUPBOX " Last Update ",IDC_STATIC,97,60,101,42
+ LTEXT "Date:",IDC_STATIC,102,74,22,8
+ LTEXT "< date >",IDC_LP_DATE,125,74,70,8
+ LTEXT "Time:",IDC_STATIC,102,85,21,8
+ LTEXT "< HH:MM:SS XX >",IDC_LP_TIME,125,85,71,8
+ PUSHBUTTON "&Open Source",IDC_LP_OPENSOURCE,15,114,50,14
+ PUSHBUTTON "&Update Now",IDC_LP_UPDATENOW,76,114,50,14
+ PUSHBUTTON "&Break Link",IDC_LP_BREAKLINK,135,114,50,14
+END
+
+IDD_CONVERTONLY DIALOG DISCARDABLE 60, 26, 243, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Convert"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Current Type:",IDC_STATIC,6,7,47,8
+ LTEXT "<< current type goes here >>",IDC_CV_OBJECTTYPE,55,7,
+ 126,8
+ LTEXT "Object T&ype:",IDC_STATIC,6,20,89,8
+ LISTBOX IDC_CV_CONVERTLIST,6,31,150,58,LBS_SORT |
+ LBS_USETABSTOPS | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,187,6,50,14,WS_GROUP
+ PUSHBUTTON "Cancel",IDCANCEL,187,23,50,14
+ PUSHBUTTON "&Help",IDC_OLEUIHELP,187,40,50,14
+END
+
+IDD_CHANGESOURCE DIALOG DISCARDABLE 36, 24, 265, 160
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Open"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Source File Name:",stc3,6,4,76,9
+ EDITTEXT edt1,6,14,195,12,ES_AUTOHSCROLL | ES_OEMCONVERT
+ LISTBOX lst1,6,34,90,68,LBS_SORT | LBS_OWNERDRAWFIXED |
+ LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "&Directories:",IDC_STATIC,110,28,92,9
+ LTEXT "",stc1,110,36,92,9,SS_NOPREFIX
+ LISTBOX lst2,110,49,92,53,LBS_SORT | LBS_OWNERDRAWFIXED |
+ LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "List Files of &Type:",stc2,6,104,90,9
+ COMBOBOX cmb1,6,114,90,36,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL |
+ WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ LTEXT "Dri&ves:",stc4,110,104,92,9
+ COMBOBOX cmb2,110,114,92,68,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED |
+ CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER |
+ WS_VSCROLL | WS_TABSTOP
+ LTEXT "Source &Item:",IDC_STATIC,6,133,63,8
+ EDITTEXT edt2,6,142,197,13,ES_AUTOHSCROLL
+ DEFPUSHBUTTON "OK",IDOK,208,6,50,14,WS_GROUP
+ PUSHBUTTON "Cancel",IDCANCEL,208,24,50,14,WS_GROUP
+ PUSHBUTTON "&Help",pshHelp,208,46,50,14,WS_GROUP
+ CONTROL "&Read Only",chx1,"Button",BS_AUTOCHECKBOX | WS_GROUP |
+ WS_TABSTOP,208,68,50,12
+END
+
+IDD_CHANGESOURCE4 DIALOG DISCARDABLE 36, 24, 224, 26
+STYLE WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | 0x400L
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Item Name:",IDC_STATIC,11,12,37,8
+ EDITTEXT edt2,60,10,155,13,ES_AUTOHSCROLL
+ LTEXT "",stc32,6,2,213,8
+END
+
+IDD_CONVERT4 DIALOG DISCARDABLE 60, 26, 270, 146
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Convert"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ RTEXT "Current Type:",IDC_STATIC,5,7,47,8
+ LTEXT "Object T&ype:",IDC_STATIC,70,21,89,8
+ LISTBOX IDC_CV_ACTIVATELIST,71,32,118,53,LBS_SORT |
+ LBS_USETABSTOPS | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LISTBOX IDC_CV_CONVERTLIST,350,180,118,53,LBS_SORT |
+ LBS_USETABSTOPS | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,198,6,66,14,WS_GROUP
+ PUSHBUTTON "Cancel",IDCANCEL,198,24,66,14
+ PUSHBUTTON "&Help",IDC_OLEUIHELP,198,42,66,14
+ CONTROL "&Display As Icon",IDC_CV_DISPLAYASICON,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,200,61,64,10
+ GROUPBOX "Result",IDC_STATIC,6,87,183,51
+ CONTROL "&Convert to:",IDC_CV_CONVERTTO,"Button",
+ BS_AUTORADIOBUTTON,6,34,59,10
+ CONTROL "&Activate as:",IDC_CV_ACTIVATEAS,"Button",
+ BS_AUTORADIOBUTTON,7,58,59,10
+ LTEXT "<< result text goes here >>",IDC_CV_RESULTTEXT,11,98,
+ 174,35
+ PUSHBUTTON "Change &Icon...",IDC_CV_CHANGEICON,198,125,66,14
+ CONTROL "",IDC_CV_ICONDISPLAY,"OLE2UIiconbox",0x0,198,75,66,46
+ EDITTEXT IDC_CV_OBJECTTYPE, 56, 7, 134, 8, ES_AUTOHSCROLL |
+ ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
+END
+
+IDD_CONVERTONLY4 DIALOG DISCARDABLE 60, 26, 243, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Convert"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Current Type:",IDC_STATIC,6,7,47,8
+ LTEXT "Object T&ype:",IDC_STATIC,6,20,89,8
+ LISTBOX IDC_CV_CONVERTLIST,6,31,150,58,LBS_SORT |
+ LBS_USETABSTOPS | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,187,6,50,14,WS_GROUP
+ PUSHBUTTON "Cancel",IDCANCEL,187,23,50,14
+ PUSHBUTTON "&Help",IDC_OLEUIHELP,187,40,50,14
+ EDITTEXT IDC_CV_OBJECTTYPE, 53, 7, 128, 8 ,ES_AUTOHSCROLL |
+ ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
+END
+
+IDD_EDITLINKS4 DIALOG DISCARDABLE 9, 25, 326, 158
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Links"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "&Links:",IDC_EL_COL1,11,11,26,8
+ LTEXT "Type",IDC_EL_COL2,137,12,20,8
+ LTEXT "Update",IDC_EL_COL3,201,12,25,8
+ LISTBOX IDC_EL_LINKSLISTBOX,11,23,237,81,LBS_SORT |
+ LBS_OWNERDRAWFIXED | LBS_USETABSTOPS | LBS_EXTENDEDSEL |
+ WS_VSCROLL | WS_TABSTOP
+ DEFPUSHBUTTON "Cancel",IDCANCEL,254,11,66,14
+ PUSHBUTTON "&Update Now",IDC_EL_UPDATENOW,254,32,66,14
+ PUSHBUTTON "&Open Source",IDC_EL_OPENSOURCE,254,49,66,14,WS_GROUP
+ PUSHBUTTON "&Change Source...",IDC_EL_CHANGESOURCE,254,66,66,14,
+ WS_GROUP
+ PUSHBUTTON "&Break Link",IDC_EL_CANCELLINK,255,88,66,14
+ PUSHBUTTON "&Help",IDC_OLEUIHELP,255,136,66,14
+ CONTROL "&Automatic",IDC_EL_AUTOMATIC,"Button",
+ BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,61,139,65,8
+ CONTROL "&Manual",IDC_EL_MANUAL,"Button",BS_AUTORADIOBUTTON,130,
+ 139,39,8
+ LTEXT "Source:",IDC_STATIC,9,113,30,8
+ LTEXT "Type:",IDC_STATIC,9,125,20,8
+ LTEXT "Update:",IDC_STATIC,9,139,32,8
+ EDITTEXT IDC_EL_LINKSOURCE,44,113,204,8,ES_AUTOHSCROLL |
+ ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
+ EDITTEXT IDC_EL_LINKTYPE,44,125,204,8,ES_AUTOHSCROLL |
+ ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
+END
+
+IDD_GNRLPROPS4 DIALOG DISCARDABLE 0, 0, 204, 152
+STYLE WS_CHILD | WS_VISIBLE | WS_CAPTION
+CAPTION "General"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "",IDC_GP_OBJECTICON,6,9,18,20
+ CONTROL "",IDC_STATIC,"Static",SS_BLACKRECT,6,43,193,1
+ LTEXT "Type:",IDC_STATIC,6,50,20,8
+ LTEXT "Size:",IDC_STATIC,6,64,18,8
+ LTEXT "Location:",IDC_STATIC,6,76,30,8
+ CONTROL "",IDC_STATIC,"Static",SS_BLACKRECT,6,90,193,1
+ PUSHBUTTON "&Convert...",IDC_GP_CONVERT,149,48,50,14
+ EDITTEXT IDC_GP_OBJECTNAME,34,14,164,25,ES_MULTILINE |
+ ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | NOT
+ WS_TABSTOP
+ EDITTEXT IDC_GP_OBJECTTYPE,42,48,102,12,ES_AUTOHSCROLL |
+ ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
+ EDITTEXT IDC_GP_OBJECTSIZE,42,62,102,12,ES_AUTOHSCROLL |
+ ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
+ EDITTEXT IDC_GP_OBJECTLOCATION,42,75,157,12,ES_AUTOHSCROLL |
+ ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
+END
+
+IDD_LINKPROPS4 DIALOG DISCARDABLE 0, 0, 204, 154
+STYLE WS_CHILD | WS_VISIBLE | WS_CAPTION
+CAPTION "Link"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ GROUPBOX " Linked To ",IDC_STATIC,6,6,192,51
+ PUSHBUTTON "&Change Source...",IDC_LP_CHANGESOURCE,12,40,66,14
+ GROUPBOX " Update ",IDC_STATIC,6,60,85,42
+ CONTROL "Automatically",IDC_LP_AUTOMATIC,"Button",
+ BS_AUTORADIOBUTTON,12,74,76,10
+ CONTROL "Manually",IDC_LP_MANUAL,"Button",BS_AUTORADIOBUTTON,12,
+ 87,76,10
+ GROUPBOX " Last Update ",IDC_STATIC,97,60,101,42
+ LTEXT "Date:",IDC_STATIC,102,74,22,8
+ LTEXT "Time:",IDC_STATIC,102,85,21,8
+ PUSHBUTTON "&Open Source",IDC_LP_OPENSOURCE,15,114,50,14
+ PUSHBUTTON "&Update Now",IDC_LP_UPDATENOW,76,114,50,14
+ PUSHBUTTON "&Break Link",IDC_LP_BREAKLINK,135,114,50,14
+ EDITTEXT IDC_LP_LINKSOURCE,12,18,182,19,ES_MULTILINE |
+ ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
+ EDITTEXT IDC_LP_DATE,123,73,70,12,ES_AUTOHSCROLL | ES_READONLY |
+ NOT WS_BORDER
+ EDITTEXT IDC_LP_TIME,123,84,70,12,ES_AUTOHSCROLL | ES_READONLY |
+ NOT WS_BORDER
+END
+
+IDD_PASTESPECIAL4 DIALOG DISCARDABLE 3, 15, 293, 140
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Paste Special"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Source:",IDC_STATIC,6,9,30,8
+ CONTROL "&Paste",IDC_PS_PASTE,"Button",BS_AUTORADIOBUTTON |
+ WS_GROUP | WS_TABSTOP,6,38,55,10
+ CONTROL "Paste &Link",IDC_PS_PASTELINK,"Button",
+ BS_AUTORADIOBUTTON,6,63,55,10
+ LTEXT "&As:",IDC_STATIC,65,25,16,8
+ LISTBOX IDC_PS_PASTELIST,65,36,153,57,LBS_USETABSTOPS | NOT
+ WS_VISIBLE | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LISTBOX IDC_PS_PASTELINKLIST,65,36,153,57,LBS_USETABSTOPS | NOT
+ WS_VISIBLE | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LISTBOX IDC_PS_DISPLAYLIST,65,36,153,57,LBS_USETABSTOPS |
+ WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ DEFPUSHBUTTON "OK",IDOK,224,6,66,14,WS_GROUP
+ PUSHBUTTON "Cancel",IDCANCEL,224,23,66,14
+ PUSHBUTTON "&Help",IDC_OLEUIHELP,224,42,66,14
+ CONTROL "&Display As Icon",IDC_PS_DISPLAYASICON,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,224,59,66,14
+ CONTROL "",IDC_PS_ICONDISPLAY,"OLE2UIiconbox",0x0,224,75,66,44
+ PUSHBUTTON "Change &Icon...",IDC_PS_CHANGEICON,224,123,66,14
+ CONTROL "",IDC_PS_RESULTIMAGE,"OLE2UIresimage",0x0,8,101,42,34
+ LTEXT "<< result text goes here >>",IDC_PS_RESULTTEXT,54,100,
+ 159,35,SS_NOPREFIX | NOT WS_GROUP
+ GROUPBOX "Result",IDC_STATIC,6,90,212,48,WS_GROUP
+ EDITTEXT IDC_PS_SOURCETEXT,37,9,180,8,ES_AUTOHSCROLL |
+ ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
+END
+
diff --git a/public/sdk/inc/oledlg.h b/public/sdk/inc/oledlg.h
new file mode 100644
index 000000000..6c2cc7851
--- /dev/null
+++ b/public/sdk/inc/oledlg.h
@@ -0,0 +1,1625 @@
+/*++ BUILD Version: 0002 Increment this if a change has global effects
+
+Copyright (c) 1993-1996, Microsoft Corporation
+
+Module Name:
+
+ oledlg.h
+
+Abstract:
+
+ Include file for the OLE common dialogs.
+ The following dialog implementations are provided:
+ - Insert Object Dialog
+ - Convert Object Dialog
+ - Paste Special Dialog
+ - Change Icon Dialog
+ - Edit Links Dialog
+ - Update Links Dialog
+ - Change Source Dialog
+ - Busy Dialog
+ - User Error Message Dialog
+ - Object Properties Dialog
+
+--*/
+
+#ifndef _OLEDLG_H_
+#define _OLEDLG_H_
+
+#ifndef RC_INVOKED
+
+#ifndef __cplusplus
+#define NONAMELESSUNION // use strict ANSI standard (for DVOBJ.H)
+#endif
+
+// syncronize UNICODE options
+#if defined(_UNICODE) && !defined(UNICODE)
+ #define UNICODE
+#endif
+#if defined(UNICODE) && !defined(_UNICODE)
+ #define _UNICODE
+#endif
+
+#ifndef _WINDOWS_
+#include <windows.h>
+#endif
+#ifndef _INC_SHELLAPI
+#include <shellapi.h>
+#endif
+#ifndef _INC_COMMDLG
+#include <commdlg.h>
+#endif
+#ifndef _OLE2_H_
+#include <ole2.h>
+#endif
+#include <string.h>
+#include <tchar.h>
+
+#endif // RC_INVOKED
+
+#include <dlgs.h> // common dialog IDs
+
+// Help Button Identifier
+#define IDC_OLEUIHELP 99
+
+// Insert Object Dialog identifiers
+#define IDC_IO_CREATENEW 2100
+#define IDC_IO_CREATEFROMFILE 2101
+#define IDC_IO_LINKFILE 2102
+#define IDC_IO_OBJECTTYPELIST 2103
+#define IDC_IO_DISPLAYASICON 2104
+#define IDC_IO_CHANGEICON 2105
+#define IDC_IO_FILE 2106
+#define IDC_IO_FILEDISPLAY 2107
+#define IDC_IO_RESULTIMAGE 2108
+#define IDC_IO_RESULTTEXT 2109
+#define IDC_IO_ICONDISPLAY 2110
+#define IDC_IO_OBJECTTYPETEXT 2111 //{{NOHELP}}
+#define IDC_IO_FILETEXT 2112 //{{NOHELP}}
+#define IDC_IO_FILETYPE 2113
+#define IDC_IO_INSERTCONTROL 2114
+#define IDC_IO_ADDCONTROL 2115
+#define IDC_IO_CONTROLTYPELIST 2116
+
+// Paste Special Dialog identifiers
+#define IDC_PS_PASTE 500
+#define IDC_PS_PASTELINK 501
+#define IDC_PS_SOURCETEXT 502
+#define IDC_PS_PASTELIST 503 //{{NOHELP}}
+#define IDC_PS_PASTELINKLIST 504 //{{NOHELP}}
+#define IDC_PS_DISPLAYLIST 505
+#define IDC_PS_DISPLAYASICON 506
+#define IDC_PS_ICONDISPLAY 507
+#define IDC_PS_CHANGEICON 508
+#define IDC_PS_RESULTIMAGE 509
+#define IDC_PS_RESULTTEXT 510
+
+// Change Icon Dialog identifiers
+#define IDC_CI_GROUP 120 //{{NOHELP}}
+#define IDC_CI_CURRENT 121
+#define IDC_CI_CURRENTICON 122
+#define IDC_CI_DEFAULT 123
+#define IDC_CI_DEFAULTICON 124
+#define IDC_CI_FROMFILE 125
+#define IDC_CI_FROMFILEEDIT 126
+#define IDC_CI_ICONLIST 127
+#define IDC_CI_LABEL 128 //{{NOHELP}
+#define IDC_CI_LABELEDIT 129
+#define IDC_CI_BROWSE 130
+#define IDC_CI_ICONDISPLAY 131
+
+// Convert Dialog identifiers
+#define IDC_CV_OBJECTTYPE 150
+#define IDC_CV_DISPLAYASICON 152
+#define IDC_CV_CHANGEICON 153
+#define IDC_CV_ACTIVATELIST 154
+#define IDC_CV_CONVERTTO 155
+#define IDC_CV_ACTIVATEAS 156
+#define IDC_CV_RESULTTEXT 157
+#define IDC_CV_CONVERTLIST 158
+#define IDC_CV_ICONDISPLAY 165
+
+// Edit Links Dialog identifiers
+#define IDC_EL_CHANGESOURCE 201
+#define IDC_EL_AUTOMATIC 202
+#define IDC_EL_CANCELLINK 209
+#define IDC_EL_UPDATENOW 210
+#define IDC_EL_OPENSOURCE 211
+#define IDC_EL_MANUAL 212
+#define IDC_EL_LINKSOURCE 216
+#define IDC_EL_LINKTYPE 217
+#define IDC_EL_LINKSLISTBOX 206
+#define IDC_EL_COL1 220 //{{NOHELP}}
+#define IDC_EL_COL2 221 //{{NOHELP}}
+#define IDC_EL_COL3 222 //{{NOHELP}}
+
+// Busy dialog identifiers
+#define IDC_BZ_RETRY 600
+#define IDC_BZ_ICON 601
+#define IDC_BZ_MESSAGE1 602 //{{NOHELP}}
+#define IDC_BZ_SWITCHTO 604
+
+// Update Links dialog identifiers
+#define IDC_UL_METER 1029 //{{NOHELP}}
+#define IDC_UL_STOP 1030 //{{NOHELP}}
+#define IDC_UL_PERCENT 1031 //{{NOHELP}}
+#define IDC_UL_PROGRESS 1032 //{{NOHELP}}
+
+// User Prompt dialog identifiers
+#define IDC_PU_LINKS 900 //{{NOHELP}}
+#define IDC_PU_TEXT 901 //{{NOHELP}}
+#define IDC_PU_CONVERT 902 //{{NOHELP}}
+#define IDC_PU_ICON 908 //{{NOHELP}}
+
+// General Properties identifiers
+#define IDC_GP_OBJECTNAME 1009
+#define IDC_GP_OBJECTTYPE 1010
+#define IDC_GP_OBJECTSIZE 1011
+#define IDC_GP_CONVERT 1013
+#define IDC_GP_OBJECTICON 1014 //{{NOHELP}}
+#define IDC_GP_OBJECTLOCATION 1022
+
+// View Properties identifiers
+#define IDC_VP_PERCENT 1000
+#define IDC_VP_CHANGEICON 1001
+#define IDC_VP_EDITABLE 1002
+#define IDC_VP_ASICON 1003
+#define IDC_VP_RELATIVE 1005
+#define IDC_VP_SPIN 1006
+#define IDC_VP_SCALETXT 1034
+#define IDC_VP_ICONDISPLAY 1021
+#define IDC_VP_RESULTIMAGE 1033
+
+// Link Properties identifiers
+#define IDC_LP_OPENSOURCE 1006
+#define IDC_LP_UPDATENOW 1007
+#define IDC_LP_BREAKLINK 1008
+#define IDC_LP_LINKSOURCE 1012
+#define IDC_LP_CHANGESOURCE 1015
+#define IDC_LP_AUTOMATIC 1016
+#define IDC_LP_MANUAL 1017
+#define IDC_LP_DATE 1018
+#define IDC_LP_TIME 1019
+
+// Dialog Identifiers as passed in Help messages to identify the source.
+#define IDD_INSERTOBJECT 1000
+#define IDD_CHANGEICON 1001
+#define IDD_CONVERT 1002
+#define IDD_PASTESPECIAL 1003
+#define IDD_EDITLINKS 1004
+#define IDD_BUSY 1006
+#define IDD_UPDATELINKS 1007
+#define IDD_CHANGESOURCE 1009
+#define IDD_INSERTFILEBROWSE 1010
+#define IDD_CHANGEICONBROWSE 1011
+#define IDD_CONVERTONLY 1012
+#define IDD_CHANGESOURCE4 1013
+#define IDD_GNRLPROPS 1100
+#define IDD_VIEWPROPS 1101
+#define IDD_LINKPROPS 1102
+#define IDD_CONVERT4 1103
+#define IDD_CONVERTONLY4 1104
+#define IDD_EDITLINKS4 1105
+#define IDD_GNRLPROPS4 1106
+#define IDD_LINKPROPS4 1107
+#define IDD_PASTESPECIAL4 1108
+
+// The following Dialogs are message dialogs used by OleUIPromptUser API
+#define IDD_CANNOTUPDATELINK 1008
+#define IDD_LINKSOURCEUNAVAILABLE 1020
+#define IDD_SERVERNOTFOUND 1023
+#define IDD_OUTOFMEMORY 1024
+#define IDD_SERVERNOTREGW 1021
+#define IDD_LINKTYPECHANGEDW 1022
+#define IDD_SERVERNOTREGA 1025
+#define IDD_LINKTYPECHANGEDA 1026
+#ifdef UNICODE
+#define IDD_SERVERNOTREG IDD_SERVERNOTREGW
+#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDW
+#else
+#define IDD_SERVERNOTREG IDD_SERVERNOTREGA
+#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDA
+#endif
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#pragma pack(push, 8)
+
+// Delimeter used to separate ItemMoniker pieces of a composite moniker
+#ifdef _MAC
+ #define OLESTDDELIM ":"
+#else
+ #define OLESTDDELIM TEXT("\\")
+#endif
+
+// Hook type used in all structures.
+typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
+
+// Strings for registered messages
+#define SZOLEUI_MSG_HELP TEXT("OLEUI_MSG_HELP")
+#define SZOLEUI_MSG_ENDDIALOG TEXT("OLEUI_MSG_ENDDIALOG")
+#define SZOLEUI_MSG_BROWSE TEXT("OLEUI_MSG_BROWSE")
+#define SZOLEUI_MSG_CHANGEICON TEXT("OLEUI_MSG_CHANGEICON")
+#define SZOLEUI_MSG_CLOSEBUSYDIALOG TEXT("OLEUI_MSG_CLOSEBUSYDIALOG")
+#define SZOLEUI_MSG_CONVERT TEXT("OLEUI_MSG_CONVERT")
+#define SZOLEUI_MSG_CHANGESOURCE TEXT("OLEUI_MSG_CHANGESOURCE")
+#define SZOLEUI_MSG_ADDCONTROL TEXT("OLEUI_MSG_ADDCONTROL")
+#define SZOLEUI_MSG_BROWSE_OFN TEXT("OLEUI_MSG_BROWSE_OFN")
+
+// Identifiers for SZOLEUI_MSG_BROWSE_OFN (in wParam)
+#define ID_BROWSE_CHANGEICON 1
+#define ID_BROWSE_INSERTFILE 2
+#define ID_BROWSE_ADDCONTROL 3
+#define ID_BROWSE_CHANGESOURCE 4
+
+// Standard success/error definitions
+#define OLEUI_FALSE 0
+#define OLEUI_SUCCESS 1 // No error, same as OLEUI_OK
+#define OLEUI_OK 1 // OK button pressed
+#define OLEUI_CANCEL 2 // Cancel button pressed
+
+#define OLEUI_ERR_STANDARDMIN 100
+#define OLEUI_ERR_OLEMEMALLOC 100
+#define OLEUI_ERR_STRUCTURENULL 101 // Standard field validation
+#define OLEUI_ERR_STRUCTUREINVALID 102
+#define OLEUI_ERR_CBSTRUCTINCORRECT 103
+#define OLEUI_ERR_HWNDOWNERINVALID 104
+#define OLEUI_ERR_LPSZCAPTIONINVALID 105
+#define OLEUI_ERR_LPFNHOOKINVALID 106
+#define OLEUI_ERR_HINSTANCEINVALID 107
+#define OLEUI_ERR_LPSZTEMPLATEINVALID 108
+#define OLEUI_ERR_HRESOURCEINVALID 109
+
+#define OLEUI_ERR_FINDTEMPLATEFAILURE 110 // Initialization errors
+#define OLEUI_ERR_LOADTEMPLATEFAILURE 111
+#define OLEUI_ERR_DIALOGFAILURE 112
+#define OLEUI_ERR_LOCALMEMALLOC 113
+#define OLEUI_ERR_GLOBALMEMALLOC 114
+#define OLEUI_ERR_LOADSTRING 115
+
+#define OLEUI_ERR_STANDARDMAX 116 // Start here for specific errors.
+
+// Miscellaneous utility functions.
+STDAPI_(BOOL) OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj, LPCWSTR lpszShortType,
+ HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
+ BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
+STDAPI_(BOOL) OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj, LPCSTR lpszShortType,
+ HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
+ BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
+#ifdef UNICODE
+#define OleUIAddVerbMenu OleUIAddVerbMenuW
+#else
+#define OleUIAddVerbMenu OleUIAddVerbMenuA
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// INSERT OBJECT DIALOG
+
+typedef struct tagOLEUIINSERTOBJECTW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIINSERTOBJECT.
+ CLSID clsid; // OUT: Return space for class ID
+ LPWSTR lpszFile; // IN-OUT: Filename for inserts or links
+ UINT cchFile; // IN: Size of lpszFile buffer: MAX_PATH
+ UINT cClsidExclude; // IN: CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; // IN: List of CLSIDs to exclude from listing.
+
+ // Specific to create objects if flags say so
+ IID iid; // IN: Requested interface on creation.
+ DWORD oleRender; // IN: Rendering option
+ LPFORMATETC lpFormatEtc; // IN: Desired format
+ LPOLECLIENTSITE lpIOleClientSite; // IN: Site to be use for the object.
+ LPSTORAGE lpIStorage; // IN: Storage used for the object
+ LPVOID *ppvObj; // OUT: Where the object is returned.
+ SCODE sc; // OUT: Result of creation calls.
+ HGLOBAL hMetaPict; // OUT: metafile aspect (METAFILEPICT)
+
+} OLEUIINSERTOBJECTW, *POLEUIINSERTOBJECTW, *LPOLEUIINSERTOBJECTW;
+typedef struct tagOLEUIINSERTOBJECTA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIINSERTOBJECT.
+ CLSID clsid; // OUT: Return space for class ID
+ LPSTR lpszFile; // IN-OUT: Filename for inserts or links
+ UINT cchFile; // IN: Size of lpszFile buffer: MAX_PATH
+ UINT cClsidExclude; // IN: CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; // IN: List of CLSIDs to exclude from listing.
+
+ // Specific to create objects if flags say so
+ IID iid; // IN: Requested interface on creation.
+ DWORD oleRender; // IN: Rendering option
+ LPFORMATETC lpFormatEtc; // IN: Desired format
+ LPOLECLIENTSITE lpIOleClientSite; // IN: Site to be use for the object.
+ LPSTORAGE lpIStorage; // IN: Storage used for the object
+ LPVOID *ppvObj; // OUT: Where the object is returned.
+ SCODE sc; // OUT: Result of creation calls.
+ HGLOBAL hMetaPict; // OUT: metafile aspect (METAFILEPICT)
+
+} OLEUIINSERTOBJECTA, *POLEUIINSERTOBJECTA, *LPOLEUIINSERTOBJECTA;
+
+STDAPI_(UINT) OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
+STDAPI_(UINT) OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
+
+#ifdef UNICODE
+#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTW
+#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTW
+#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTW
+#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTW
+#define OleUIInsertObject OleUIInsertObjectW
+#else
+#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTA
+#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTA
+#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTA
+#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTA
+#define OleUIInsertObject OleUIInsertObjectA
+#endif
+
+// Insert Object flags
+#define IOF_SHOWHELP 0x00000001L
+#define IOF_SELECTCREATENEW 0x00000002L
+#define IOF_SELECTCREATEFROMFILE 0x00000004L
+#define IOF_CHECKLINK 0x00000008L
+#define IOF_CHECKDISPLAYASICON 0x00000010L
+#define IOF_CREATENEWOBJECT 0x00000020L
+#define IOF_CREATEFILEOBJECT 0x00000040L
+#define IOF_CREATELINKOBJECT 0x00000080L
+#define IOF_DISABLELINK 0x00000100L
+#define IOF_VERIFYSERVERSEXIST 0x00000200L
+#define IOF_DISABLEDISPLAYASICON 0x00000400L
+#define IOF_HIDECHANGEICON 0x00000800L
+#define IOF_SHOWINSERTCONTROL 0x00001000L
+#define IOF_SELECTCREATECONTROL 0x00002000L
+
+// Insert Object specific error codes
+#define OLEUI_IOERR_LPSZFILEINVALID (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_IOERR_LPSZLABELINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_IOERR_HICONINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_IOERR_LPFORMATETCINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_IOERR_PPVOBJINVALID (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_IOERR_LPISTORAGEINVALID (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_IOERR_SCODEHASERROR (OLEUI_ERR_STANDARDMAX+7)
+#define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+8)
+#define OLEUI_IOERR_CCHFILEINVALID (OLEUI_ERR_STANDARDMAX+9)
+
+/////////////////////////////////////////////////////////////////////////////
+// PASTE SPECIAL DIALOG
+
+// The OLEUIPASTEFLAG enumeration is used by the OLEUIPASTEENTRY structure.
+//
+// OLEUIPASTE_ENABLEICON: If the container does not specify this flag for
+// the entry in the OLEUIPASTEENTRY array passed as input to
+// OleUIPasteSpecial, the DisplayAsIcon button will be unchecked and
+// disabled when the the user selects the format that corresponds to
+// the entry.
+//
+// OLEUIPASTE_PASTEONLY: Indicates that the entry in the OLEUIPASTEENTRY
+// array is valid for pasting only.
+//
+// OLEUIPASTE_PASTE: Indicates that the entry in the OLEUIPASTEENTRY array
+// is valid for pasting. It may also be valid for linking if any of
+// the following linking flags are specified.
+//
+// If the entry in the OLEUIPASTEENTRY array is valid for linking, the
+// following flags indicate which link types are acceptable by OR'ing
+// together the appropriate OLEUIPASTE_LINKTYPE<#> values.
+//
+// These values correspond as follows to the array of link types passed to
+// OleUIPasteSpecial:
+//
+// OLEUIPASTE_LINKTYPE1 = arrLinkTypes[0]
+// OLEUIPASTE_LINKTYPE2 = arrLinkTypes[1]
+// OLEUIPASTE_LINKTYPE3 = arrLinkTypes[2]
+// OLEUIPASTE_LINKTYPE4 = arrLinkTypes[3]
+// OLEUIPASTE_LINKTYPE5 = arrLinkTypes[4]
+// OLEUIPASTE_LINKTYPE6 = arrLinkTypes[5]
+// OLEUIPASTE_LINKTYPE7 = arrLinkTypes[6]
+// OLEUIPASTE_LINKTYPE8 = arrLinkTypes[7]
+//
+// where,
+// UINT arrLinkTypes[8] is an array of registered clipboard formats for
+// linking. A maximium of 8 link types are allowed.
+
+typedef enum tagOLEUIPASTEFLAG
+{
+ OLEUIPASTE_ENABLEICON = 2048, // enable display as icon
+ OLEUIPASTE_PASTEONLY = 0,
+ OLEUIPASTE_PASTE = 512,
+ OLEUIPASTE_LINKANYTYPE = 1024,
+ OLEUIPASTE_LINKTYPE1 = 1,
+ OLEUIPASTE_LINKTYPE2 = 2,
+ OLEUIPASTE_LINKTYPE3 = 4,
+ OLEUIPASTE_LINKTYPE4 = 8,
+ OLEUIPASTE_LINKTYPE5 = 16,
+ OLEUIPASTE_LINKTYPE6 = 32,
+ OLEUIPASTE_LINKTYPE7 = 64,
+ OLEUIPASTE_LINKTYPE8 = 128
+} OLEUIPASTEFLAG;
+
+// OLEUIPASTEENTRY structure
+//
+// An array of OLEUIPASTEENTRY entries is specified for the PasteSpecial
+// dialog box. Each entry includes a FORMATETC which specifies the
+// formats that are acceptable, a string that is to represent the format
+// in the dialog's list box, a string to customize the result text of the
+// dialog and a set of flags from the OLEUIPASTEFLAG enumeration. The
+// flags indicate if the entry is valid for pasting only, linking only or
+// both pasting and linking.
+
+typedef struct tagOLEUIPASTEENTRYW
+{
+ FORMATETC fmtetc; // Format that is acceptable.
+ LPCWSTR lpstrFormatName;// String that represents the format
+ // to the user. %s is replaced by the
+ // full user type name of the object.
+ LPCWSTR lpstrResultText;// String to customize the result text
+ // of the dialog when the user
+ // selects the format correspoding to
+ // this entry. Any %s in this string
+ // is replaced by the the application
+ // name or FullUserTypeName of the
+ // object on the clipboard.
+ DWORD dwFlags; // Values from OLEUIPASTEFLAG enum
+ DWORD dwScratchSpace; // Scratch space used internally.
+
+} OLEUIPASTEENTRYW, *POLEUIPASTEENTRYW, *LPOLEUIPASTEENTRYW;
+typedef struct tagOLEUIPASTEENTRYA
+{
+ FORMATETC fmtetc; // Format that is acceptable.
+ LPCSTR lpstrFormatName;// String that represents the format
+ // to the user. %s is replaced by the
+ // full user type name of the object.
+ LPCSTR lpstrResultText;// String to customize the result text
+ // of the dialog when the user
+ // selects the format correspoding to
+ // this entry. Any %s in this string
+ // is replaced by the the application
+ // name or FullUserTypeName of the
+ // object on the clipboard.
+ DWORD dwFlags; // Values from OLEUIPASTEFLAG enum
+ DWORD dwScratchSpace; // Scratch space used internally.
+
+} OLEUIPASTEENTRYA, *POLEUIPASTEENTRYA, *LPOLEUIPASTEENTRYA;
+#ifdef UNICODE
+#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYW
+#define OLEUIPASTEENTRY OLEUIPASTEENTRYW
+#define POLEUIPASTEENTRY POLEUIPASTEENTRYW
+#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYW
+#else
+#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYA
+#define OLEUIPASTEENTRY OLEUIPASTEENTRYA
+#define POLEUIPASTEENTRY POLEUIPASTEENTRYA
+#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYA
+#endif
+
+// Maximum number of link types
+#define PS_MAXLINKTYPES 8
+
+typedef struct tagOLEUIPASTESPECIALW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIPASTESPECIAL.
+ LPDATAOBJECT lpSrcDataObj; // IN-OUT: Source IDataObject* on the clipboard
+ // If lpSrcDataObj is NULL when OleUIPasteSpecial is called, then
+ // OleUIPasteSpecial will attempt to retrieve a pointer to an
+ // IDataObject from the clipboard. If OleUIPasteSpecial succeeds
+ // then it is the caller's responsibility to free the IDataObject
+ // returned in lpSrcDataObj.
+ LPOLEUIPASTEENTRYW arrPasteEntries;// IN: Array of acceptable formats
+ int cPasteEntries; // IN: No. of OLEUIPASTEENTRY array entries
+ UINT FAR* arrLinkTypes; // IN: List of acceptable link types
+ int cLinkTypes; // IN: Number of link types
+ UINT cClsidExclude; // IN: Number of CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; // IN: List of CLSIDs to exclude from list.
+ int nSelectedIndex; // OUT: Index that the user selected
+ BOOL fLink; // OUT: Indicates if Paste or PasteLink
+ HGLOBAL hMetaPict; // OUT: Handle to Metafile containing icon
+ SIZEL sizel; // OUT: size of object/link in its source
+ // may be 0,0 if different display
+ // aspect is chosen.
+
+} OLEUIPASTESPECIALW, *POLEUIPASTESPECIALW, *LPOLEUIPASTESPECIALW;
+typedef struct tagOLEUIPASTESPECIALA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIPASTESPECIAL.
+ LPDATAOBJECT lpSrcDataObj; // IN-OUT: Source IDataObject* on the clipboard
+ // If lpSrcDataObj is NULL when OleUIPasteSpecial is called, then
+ // OleUIPasteSpecial will attempt to retrieve a pointer to an
+ // IDataObject from the clipboard. If OleUIPasteSpecial succeeds
+ // then it is the caller's responsibility to free the IDataObject
+ // returned in lpSrcDataObj.
+ LPOLEUIPASTEENTRYA arrPasteEntries;// IN: Array of acceptable formats
+ int cPasteEntries; // IN: No. of OLEUIPASTEENTRY array entries
+ UINT FAR* arrLinkTypes; // IN: List of acceptable link types
+ int cLinkTypes; // IN: Number of link types
+ UINT cClsidExclude; // IN: Number of CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; // IN: List of CLSIDs to exclude from list.
+ int nSelectedIndex; // OUT: Index that the user selected
+ BOOL fLink; // OUT: Indicates if Paste or PasteLink
+ HGLOBAL hMetaPict; // OUT: Handle to Metafile containing icon
+ SIZEL sizel; // OUT: size of object/link in its source
+ // may be 0,0 if different display
+ // aspect is chosen.
+
+} OLEUIPASTESPECIALA, *POLEUIPASTESPECIALA, *LPOLEUIPASTESPECIALA;
+#ifdef UNICODE
+
+#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALW
+#define OLEUIPASTESPECIAL OLEUIPASTESPECIALW
+#define POLEUIPASTESPECIAL POLEUIPASTESPECIALW
+#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALW
+#else
+#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALA
+#define OLEUIPASTESPECIAL OLEUIPASTESPECIALA
+#define POLEUIPASTESPECIAL POLEUIPASTESPECIALA
+#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALA
+#endif
+
+STDAPI_(UINT) OleUIPasteSpecialW(LPOLEUIPASTESPECIALW);
+STDAPI_(UINT) OleUIPasteSpecialA(LPOLEUIPASTESPECIALA);
+#ifdef UNICODE
+#define OleUIPasteSpecial OleUIPasteSpecialW
+#else
+#define OleUIPasteSpecial OleUIPasteSpecialA
+#endif
+
+// Paste Special specific flags
+#define PSF_SHOWHELP 0x00000001L
+#define PSF_SELECTPASTE 0x00000002L
+#define PSF_SELECTPASTELINK 0x00000004L
+// NOTE: PSF_CHECKDISPLAYASICON is strictly an output flag.
+// It is ignored if set when calling OleUIPasteSpecial.
+#define PSF_CHECKDISPLAYASICON 0x00000008L
+#define PSF_DISABLEDISPLAYASICON 0x00000010L
+#define PSF_HIDECHANGEICON 0x00000020L
+#define PSF_STAYONCLIPBOARDCHANGE 0x00000040L
+#define PSF_NOREFRESHDATAOBJECT 0x00000080L
+
+// Paste Special specific error codes
+#define OLEUI_IOERR_SRCDATAOBJECTINVALID (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_PSERR_GETCLIPBOARDFAILED (OLEUI_ERR_STANDARDMAX+4)
+
+/////////////////////////////////////////////////////////////////////////////
+// EDIT LINKS DIALOG
+
+// IOleUILinkContainer interface
+//
+// This interface must be implemented by container applications that
+// want to use the EditLinks dialog. the EditLinks dialog calls back
+// to the container app to perform the OLE functions to manipulate
+// the links within the container.
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkContainerW
+
+DECLARE_INTERFACE_(IOleUILinkContainerW, IUnknown)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleUILinkContainer *** //
+ STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD FAR* lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPWSTR lpszDisplayName,
+ ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
+ LPWSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
+ LPWSTR FAR* lplpszFullLinkType, LPWSTR FAR* lplpszShortLinkType,
+ BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
+ BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
+};
+
+typedef IOleUILinkContainerW FAR* LPOLEUILINKCONTAINERW;
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkContainerA
+
+DECLARE_INTERFACE_(IOleUILinkContainerA, IUnknown)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleUILinkContainer *** //
+ STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD FAR* lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPSTR lpszDisplayName,
+ ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
+ LPSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
+ LPSTR FAR* lplpszFullLinkType, LPSTR FAR* lplpszShortLinkType,
+ BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
+ BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
+};
+
+typedef IOleUILinkContainerA FAR* LPOLEUILINKCONTAINERA;
+
+#ifdef UNICODE
+#define IOleUILinkContainer IOleUILinkContainerW
+#define IOleUILinkContainerVtbl IOleUILinkContainerWVtbl
+#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERW
+#else
+#define IOleUILinkContainer IOleUILinkContainerA
+#define IOleUILinkContainerVtbl IOleUILinkContainerAVtbl
+#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERA
+#endif
+
+typedef struct tagOLEUIEDITLINKSW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIEDITLINKS.
+ LPOLEUILINKCONTAINERW lpOleUILinkContainer; // IN: Interface to manipulate
+ // links in the container
+
+} OLEUIEDITLINKSW, *POLEUIEDITLINKSW, *LPOLEUIEDITLINKSW;
+
+typedef struct tagOLEUIEDITLINKSA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIEDITLINKS.
+ LPOLEUILINKCONTAINERA lpOleUILinkContainer; // IN: Interface to manipulate
+ // links in the container
+
+} OLEUIEDITLINKSA, *POLEUIEDITLINKSA, *LPOLEUIEDITLINKSA;
+
+#ifdef UNICODE
+#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSW
+#define OLEUIEDITLINKS OLEUIEDITLINKSW
+#define POLEUIEDITLINKS POLEUIEDITLINKSW
+#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSW
+#else
+#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSA
+#define OLEUIEDITLINKS OLEUIEDITLINKSA
+#define POLEUIEDITLINKS POLEUIEDITLINKSA
+#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSA
+#endif
+
+#define OLEUI_ELERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_ELERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
+
+STDAPI_(UINT) OleUIEditLinksW(LPOLEUIEDITLINKSW);
+STDAPI_(UINT) OleUIEditLinksA(LPOLEUIEDITLINKSA);
+
+#ifdef UNICODE
+#define OleUIEditLinks OleUIEditLinksW
+#else
+#define OleUIEditLinks OleUIEditLinksA
+#endif
+
+// Edit Links flags
+#define ELF_SHOWHELP 0x00000001L
+#define ELF_DISABLEUPDATENOW 0x00000002L
+#define ELF_DISABLEOPENSOURCE 0x00000004L
+#define ELF_DISABLECHANGESOURCE 0x00000008L
+#define ELF_DISABLECANCELLINK 0x00000010L
+
+/////////////////////////////////////////////////////////////////////////////
+// CHANGE ICON DIALOG
+
+typedef struct tagOLEUICHANGEICONW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUICHANGEICON.
+ HGLOBAL hMetaPict; // IN-OUT: Current and final image.
+ // Source of the icon is embedded in
+ // the metafile itself.
+ CLSID clsid; // IN: class used to get Default icon
+ WCHAR szIconExe[MAX_PATH]; // IN: explicit icon source path
+ int cchIconExe; // IN: number of characters in szIconExe
+
+} OLEUICHANGEICONW, *POLEUICHANGEICONW, *LPOLEUICHANGEICONW;
+
+typedef struct tagOLEUICHANGEICONA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUICHANGEICON.
+ HGLOBAL hMetaPict; // IN-OUT: Current and final image.
+ // Source of the icon is embedded in
+ // the metafile itself.
+ CLSID clsid; // IN: class used to get Default icon
+ CHAR szIconExe[MAX_PATH]; // IN: explicit icon source path
+ int cchIconExe; // IN: number of characters in szIconExe
+
+} OLEUICHANGEICONA, *POLEUICHANGEICONA, *LPOLEUICHANGEICONA;
+
+STDAPI_(UINT) OleUIChangeIconW(LPOLEUICHANGEICONW);
+STDAPI_(UINT) OleUIChangeIconA(LPOLEUICHANGEICONA);
+
+#ifdef UNICODE
+#define tagOLEUICHANGEICON tagOLEUICHANGEICONW
+#define OLEUICHANGEICON OLEUICHANGEICONW
+#define POLEUICHANGEICON POLEUICHANGEICONW
+#define LPOLEUICHANGEICON LPOLEUICHANGEICONW
+#define OleUIChangeIcon OleUIChangeIconW
+#else
+#define tagOLEUICHANGEICON tagOLEUICHANGEICONA
+#define OLEUICHANGEICON OLEUICHANGEICONA
+#define POLEUICHANGEICON POLEUICHANGEICONA
+#define LPOLEUICHANGEICON LPOLEUICHANGEICONA
+#define OleUIChangeIcon OleUIChangeIconA
+#endif
+
+// Change Icon flags
+#define CIF_SHOWHELP 0x00000001L
+#define CIF_SELECTCURRENT 0x00000002L
+#define CIF_SELECTDEFAULT 0x00000004L
+#define CIF_SELECTFROMFILE 0x00000008L
+#define CIF_USEICONEXE 0x00000010L
+
+// Change Icon specific error codes
+#define OLEUI_CIERR_MUSTHAVECLSID (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2)
+
+// Property used by ChangeIcon dialog to give its parent window access to
+// its hDlg. The PasteSpecial dialog may need to force the ChgIcon dialog
+// down if the clipboard contents change underneath it. if so it will send
+// a IDCANCEL command to the ChangeIcon dialog.
+#define PROP_HWND_CHGICONDLG TEXT("HWND_CIDLG")
+
+/////////////////////////////////////////////////////////////////////////////
+// CONVERT DIALOG
+
+typedef struct tagOLEUICONVERTW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUICONVERT.
+ CLSID clsid; // IN: Class ID sent in to dialog: IN only
+ CLSID clsidConvertDefault; // IN: use as convert default: IN only
+ CLSID clsidActivateDefault; // IN: use as activate default: IN only
+
+ CLSID clsidNew; // OUT: Selected Class ID
+ DWORD dvAspect; // IN-OUT: either DVASPECT_CONTENT or
+ // DVASPECT_ICON
+ WORD wFormat; // IN" Original data format
+ BOOL fIsLinkedObject;// IN: true if object is linked
+ HGLOBAL hMetaPict; // IN-OUT: metafile icon image
+ LPWSTR lpszUserType; // IN-OUT: user type name of original class.
+ // We'll do lookup if NULL.
+ // This gets freed on exit.
+ BOOL fObjectsIconChanged; // OUT: TRUE == ChangeIcon was called
+ LPWSTR lpszDefLabel; //IN-OUT: default label to use for icon.
+ // if NULL, the short user type name
+ // will be used. if the object is a
+ // link, the caller should pass the
+ // DisplayName of the link source
+ // This gets freed on exit.
+
+ UINT cClsidExclude; //IN: No. of CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; //IN: List of CLSIDs to exclude from list
+
+} OLEUICONVERTW, *POLEUICONVERTW, *LPOLEUICONVERTW;
+
+typedef struct tagOLEUICONVERTA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUICONVERT.
+ CLSID clsid; // IN: Class ID sent in to dialog: IN only
+ CLSID clsidConvertDefault; // IN: use as convert default: IN only
+ CLSID clsidActivateDefault; // IN: use as activate default: IN only
+
+ CLSID clsidNew; // OUT: Selected Class ID
+ DWORD dvAspect; // IN-OUT: either DVASPECT_CONTENT or
+ // DVASPECT_ICON
+ WORD wFormat; // IN" Original data format
+ BOOL fIsLinkedObject;// IN: true if object is linked
+ HGLOBAL hMetaPict; // IN-OUT: metafile icon image
+ LPSTR lpszUserType; // IN-OUT: user type name of original class.
+ // We'll do lookup if NULL.
+ // This gets freed on exit.
+ BOOL fObjectsIconChanged; // OUT: TRUE == ChangeIcon was called
+ LPSTR lpszDefLabel; //IN-OUT: default label to use for icon.
+ // if NULL, the short user type name
+ // will be used. if the object is a
+ // link, the caller should pass the
+ // DisplayName of the link source
+ // This gets freed on exit.
+
+ UINT cClsidExclude; //IN: No. of CLSIDs in lpClsidExclude
+ LPCLSID lpClsidExclude; //IN: List of CLSIDs to exclude from list
+
+} OLEUICONVERTA, *POLEUICONVERTA, *LPOLEUICONVERTA;
+
+STDAPI_(UINT) OleUIConvertW(LPOLEUICONVERTW);
+STDAPI_(UINT) OleUIConvertA(LPOLEUICONVERTA);
+
+#ifdef UNICODE
+#define tagOLEUICONVERT tagOLEUICONVERTW
+#define OLEUICONVERT OLEUICONVERTW
+#define POLEUICONVERT POLEUICONVERTW
+#define LPOLEUICONVERT LPOLEUICONVERTW
+#define OleUIConvert OleUIConvertW
+#else
+#define tagOLEUICONVERT tagOLEUICONVERTA
+#define OLEUICONVERT OLEUICONVERTA
+#define POLEUICONVERT POLEUICONVERTA
+#define LPOLEUICONVERT LPOLEUICONVERTA
+#define OleUIConvert OleUIConvertA
+#endif
+
+// Determine if there is at least one class that can Convert or ActivateAs
+// the given clsid.
+STDAPI_(BOOL) OleUICanConvertOrActivateAs(
+ REFCLSID rClsid, BOOL fIsLinkedObject, WORD wFormat);
+
+// Convert Dialog flags
+#define CF_SHOWHELPBUTTON 0x00000001L
+#define CF_SETCONVERTDEFAULT 0x00000002L
+#define CF_SETACTIVATEDEFAULT 0x00000004L
+#define CF_SELECTCONVERTTO 0x00000008L
+#define CF_SELECTACTIVATEAS 0x00000010L
+#define CF_DISABLEDISPLAYASICON 0x00000020L
+#define CF_DISABLEACTIVATEAS 0x00000040L
+#define CF_HIDECHANGEICON 0x00000080L
+#define CF_CONVERTONLY 0x00000100L
+
+// Convert specific error codes
+#define OLEUI_CTERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CTERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_CTERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_CTERR_HMETAPICTINVALID (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_CTERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+5)
+
+/////////////////////////////////////////////////////////////////////////////
+// BUSY DIALOG
+
+typedef struct tagOLEUIBUSYW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: see below
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIBUSY.
+ HTASK hTask; // IN: HTask which is blocking
+ HWND * lphWndDialog; // OUT: Dialog's HWND is placed here
+
+} OLEUIBUSYW, *POLEUIBUSYW, *LPOLEUIBUSYW;
+
+typedef struct tagOLEUIBUSYA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: see below
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // Specifics for OLEUIBUSY.
+ HTASK hTask; // IN: HTask which is blocking
+ HWND * lphWndDialog; // OUT: Dialog's HWND is placed here
+
+} OLEUIBUSYA, *POLEUIBUSYA, *LPOLEUIBUSYA;
+
+STDAPI_(UINT) OleUIBusyW(LPOLEUIBUSYW);
+STDAPI_(UINT) OleUIBusyA(LPOLEUIBUSYA);
+
+#ifdef UNICODE
+#define tagOLEUIBUSY tagOLEUIBUSYW
+#define OLEUIBUSY OLEUIBUSYW
+#define POLEUIBUSY POLEUIBUSYW
+#define LPOLEUIBUSY LPOLEUIBUSYW
+#define OleUIBusy OleUIBusyW
+#else
+#define tagOLEUIBUSY tagOLEUIBUSYA
+#define OLEUIBUSY OLEUIBUSYA
+#define POLEUIBUSY POLEUIBUSYA
+#define LPOLEUIBUSY LPOLEUIBUSYA
+#define OleUIBusy OleUIBusyA
+#endif
+
+// Flags for the Busy dialog
+#define BZ_DISABLECANCELBUTTON 0x00000001L
+#define BZ_DISABLESWITCHTOBUTTON 0x00000002L
+#define BZ_DISABLERETRYBUTTON 0x00000004L
+
+#define BZ_NOTRESPONDINGDIALOG 0x00000008L
+
+// Busy specific error/return codes
+#define OLEUI_BZERR_HTASKINVALID (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3)
+
+/////////////////////////////////////////////////////////////////////////////
+// CHANGE SOURCE DIALOG
+
+// Data to and from the ChangeSource dialog hook
+typedef struct tagOLEUICHANGESOURCEW
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCWSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCWSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // INTERNAL ONLY: do not modify these members
+ OPENFILENAMEW* lpOFN; // pointer OPENFILENAME struct
+ DWORD dwReserved1[4]; // (reserved for future use)
+
+ // Specifics for OLEUICHANGESOURCE.
+ LPOLEUILINKCONTAINERW lpOleUILinkContainer; // IN: used to validate link sources
+ DWORD dwLink; // IN: magic# for lpOleUILinkContainer
+ LPWSTR lpszDisplayName;// IN-OUT: complete source display name
+ ULONG nFileLength; // IN-OUT: file moniker part of lpszDisplayName
+ LPWSTR lpszFrom; // OUT: prefix of source changed from
+ LPWSTR lpszTo; // OUT: prefix of source changed to
+
+} OLEUICHANGESOURCEW, *POLEUICHANGESOURCEW, *LPOLEUICHANGESOURCEW;
+
+typedef struct tagOLEUICHANGESOURCEA
+{
+ // These IN fields are standard across all OLEUI dialog functions.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: Flags
+ HWND hWndOwner; // Owning window
+ LPCSTR lpszCaption; // Dialog caption bar contents
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ HINSTANCE hInstance; // Instance for customized template name
+ LPCSTR lpszTemplate; // Customized template name
+ HRSRC hResource; // Customized template handle
+
+ // INTERNAL ONLY: do not modify these members
+ OPENFILENAMEA* lpOFN; // pointer OPENFILENAME struct
+ DWORD dwReserved1[4]; // (reserved for future use)
+
+ // Specifics for OLEUICHANGESOURCE.
+ LPOLEUILINKCONTAINERA lpOleUILinkContainer; // IN: used to validate link sources
+ DWORD dwLink; // IN: magic# for lpOleUILinkContainer
+ LPSTR lpszDisplayName;// IN-OUT: complete source display name
+ ULONG nFileLength; // IN-OUT: file moniker part of lpszDisplayName
+ LPSTR lpszFrom; // OUT: prefix of source changed from
+ LPSTR lpszTo; // OUT: prefix of source changed to
+
+} OLEUICHANGESOURCEA, *POLEUICHANGESOURCEA, *LPOLEUICHANGESOURCEA;
+
+STDAPI_(UINT) OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
+STDAPI_(UINT) OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
+
+#ifdef UNICODE
+#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEW
+#define OLEUICHANGESOURCE OLEUICHANGESOURCEW
+#define POLEUICHANGESOURCE POLEUICHANGESOURCEW
+#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEW
+#define OleUIChangeSource OleUIChangeSourceW
+#else
+#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEA
+#define OLEUICHANGESOURCE OLEUICHANGESOURCEA
+#define POLEUICHANGESOURCE POLEUICHANGESOURCEA
+#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEA
+#define OleUIChangeSource OleUIChangeSourceA
+#endif
+
+// Change Source Dialog flags
+#define CSF_SHOWHELP 0x00000001L // IN: enable/show help button
+#define CSF_VALIDSOURCE 0x00000002L // OUT: link was validated
+#define CSF_ONLYGETSOURCE 0x00000004L // IN: disables validation of source
+#define CSF_EXPLORER 0x00000008L // IN: use new OFN_EXPLORER custom template behavior
+
+// Change Source Dialog errors
+#define OLEUI_CSERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_CSERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CSERR_FROMNOTNULL (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_CSERR_TONOTNULL (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_CSERR_SOURCENULL (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_CSERR_SOURCEINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_CSERR_SOURCEPARSERROR (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_CSERR_SOURCEPARSEERROR (OLEUI_ERR_STANDARDMAX+6)
+
+/////////////////////////////////////////////////////////////////////////////
+// OBJECT PROPERTIES DIALOG
+
+#undef INTERFACE
+#define INTERFACE IOleUIObjInfoW
+
+DECLARE_INTERFACE_(IOleUIObjInfoW, IUnknown)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** extra for General Properties *** //
+ STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
+ DWORD FAR* lpdwObjSize, LPWSTR FAR* lplpszLabel,
+ LPWSTR FAR* lplpszType, LPWSTR FAR* lplpszShortType,
+ LPWSTR FAR* lplpszLocation) PURE;
+ STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
+ CLSID FAR* lpClassID, WORD FAR* lpwFormat,
+ CLSID FAR* lpConvertDefaultClassID,
+ LPCLSID FAR* lplpClsidExclude, UINT FAR* lpcClsidExclude) PURE;
+ STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew) PURE;
+
+ // *** extra for View Properties *** //
+ STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL FAR* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale) PURE;
+ STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL hMetaPict, DWORD dvAspect,
+ int nCurrentScale, BOOL bRelativeToOrig) PURE;
+};
+
+typedef IOleUIObjInfoW FAR* LPOLEUIOBJINFOW;
+
+#undef INTERFACE
+#define INTERFACE IOleUIObjInfoA
+
+DECLARE_INTERFACE_(IOleUIObjInfoA, IUnknown)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** extra for General Properties *** //
+ STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
+ DWORD FAR* lpdwObjSize, LPSTR FAR* lplpszLabel,
+ LPSTR FAR* lplpszType, LPSTR FAR* lplpszShortType,
+ LPSTR FAR* lplpszLocation) PURE;
+ STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
+ CLSID FAR* lpClassID, WORD FAR* lpwFormat,
+ CLSID FAR* lpConvertDefaultClassID,
+ LPCLSID FAR* lplpClsidExclude, UINT FAR* lpcClsidExclude) PURE;
+ STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew) PURE;
+
+ // *** extra for View Properties *** //
+ STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL FAR* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale) PURE;
+ STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
+ HGLOBAL hMetaPict, DWORD dvAspect,
+ int nCurrentScale, BOOL bRelativeToOrig) PURE;
+};
+
+typedef IOleUIObjInfoA FAR* LPOLEUIOBJINFOA;
+
+#ifdef UNICODE
+#define IOleUIObjInfo IOleUIObjInfoW
+#define IOleUIObjInfoVtbl IOleUIObjInfoWVtbl
+#define LPOLEUIOBJINFO LPOLEUIOBJINFOW
+#else
+#define IOleUIObjInfo IOleUIObjInfoA
+#define IOleUIObjInfoVtbl IOleUIObjInfoAVtbl
+#define LPOLEUIOBJINFO LPOLEUIOBJINFOA
+#endif
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkInfoW
+
+DECLARE_INTERFACE_(IOleUILinkInfoW, IOleUILinkContainerW)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleUILinkContainer *** //
+ STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD FAR* lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPWSTR lpszDisplayName,
+ ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
+ LPWSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
+ LPWSTR FAR* lplpszFullLinkType, LPWSTR FAR* lplpszShortLinkType,
+ BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
+ BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
+
+ // *** extra for Link Properties *** //
+ STDMETHOD(GetLastUpdate) (THIS_ DWORD dwLink,
+ FILETIME FAR* lpLastUpdate) PURE;
+};
+
+typedef IOleUILinkInfoW FAR* LPOLEUILINKINFOW;
+
+#undef INTERFACE
+#define INTERFACE IOleUILinkInfoA
+
+DECLARE_INTERFACE_(IOleUILinkInfoA, IOleUILinkContainerA)
+{
+ // *** IUnknown methods *** //
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleUILinkContainer *** //
+ STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD dwUpdateOpt) PURE;
+ STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
+ DWORD FAR* lpdwUpdateOpt) PURE;
+ STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPSTR lpszDisplayName,
+ ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
+ STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
+ LPSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
+ LPSTR FAR* lplpszFullLinkType, LPSTR FAR* lplpszShortLinkType,
+ BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
+ STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
+ BOOL fErrorMessage, BOOL fReserved) PURE;
+ STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
+
+ // *** extra for Link Properties *** //
+ STDMETHOD(GetLastUpdate) (THIS_ DWORD dwLink,
+ FILETIME FAR* lpLastUpdate) PURE;
+};
+
+typedef IOleUILinkInfoA FAR* LPOLEUILINKINFOA;
+
+#ifdef UNICODE
+#define IOleUILinkInfo IOleUILinkInfoW
+#define IOleUILinkInfoVtbl IOleUILinkInfoWVtbl
+#define LPOLEUILINKINFO LPOLEUILINKINFOW
+#else
+#define IOleUILinkInfo IOleUILinkInfoA
+#define IOleUILinkInfoVtbl IOleUILinkInfoAVtbl
+#define LPOLEUILINKINFO LPOLEUILINKINFOA
+#endif
+
+struct tagOLEUIOBJECTPROPSW;
+struct tagOLEUIOBJECTPROPSA;
+
+typedef struct tagOLEUIGNRLPROPSW
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to general page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSW* lpOP; // (used internally)
+
+} OLEUIGNRLPROPSW, *POLEUIGNRLPROPSW, FAR* LPOLEUIGNRLPROPSW;
+
+typedef struct tagOLEUIGNRLPROPSA
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to general page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSA* lpOP; // (used internally)
+
+} OLEUIGNRLPROPSA, *POLEUIGNRLPROPSA, FAR* LPOLEUIGNRLPROPSA;
+
+#ifdef UNICODE
+#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSW
+#define OLEUIGNRLPROPS OLEUIGNRLPROPSW
+#define POLEUIGNRLPROPS POLEUIGNRLPROPSW
+#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSW
+#else
+#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSA
+#define OLEUIGNRLPROPS OLEUIGNRLPROPSA
+#define POLEUIGNRLPROPS POLEUIGNRLPROPSA
+#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSA
+#endif
+
+typedef struct tagOLEUIVIEWPROPSW
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to view page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback (not used in this dialog)
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSW* lpOP; // (used internally)
+
+ int nScaleMin; // scale range
+ int nScaleMax;
+
+} OLEUIVIEWPROPSW, *POLEUIVIEWPROPSW, FAR* LPOLEUIVIEWPROPSW;
+
+typedef struct tagOLEUIVIEWPROPSA
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to view page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback (not used in this dialog)
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSA* lpOP; // (used internally)
+
+ int nScaleMin; // scale range
+ int nScaleMax;
+
+} OLEUIVIEWPROPSA, *POLEUIVIEWPROPSA, FAR* LPOLEUIVIEWPROPSA;
+
+#ifdef UNICODE
+#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSW
+#define OLEUIVIEWPROPS OLEUIVIEWPROPSW
+#define POLEUIVIEWPROPS POLEUIVIEWPROPSW
+#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSW
+#else
+#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSA
+#define OLEUIVIEWPROPS OLEUIVIEWPROPSA
+#define POLEUIVIEWPROPS POLEUIVIEWPROPSA
+#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSA
+#endif
+
+// Flags for OLEUIVIEWPROPS
+#define VPF_SELECTRELATIVE 0x00000001L // IN: relative to orig
+#define VPF_DISABLERELATIVE 0x00000002L // IN: disable relative to orig
+#define VPF_DISABLESCALE 0x00000004L // IN: disable scale option
+
+typedef struct tagOLEUILINKPROPSW
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to links page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback (not used in this dialog)
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSW* lpOP; // (used internally)
+
+} OLEUILINKPROPSW, *POLEUILINKPROPSW, FAR* LPOLEUILINKPROPSW;
+
+typedef struct tagOLEUILINKPROPSA
+{
+ // These IN fields are standard across all OLEUI property pages.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: flags specific to links page
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook; // Hook callback (not used in this dialog)
+ LPARAM lCustData; // Custom data to pass to hook
+ DWORD dwReserved2[3];
+
+ struct tagOLEUIOBJECTPROPSA* lpOP; // (used internally)
+
+} OLEUILINKPROPSA, *POLEUILINKPROPSA, FAR* LPOLEUILINKPROPSA;
+
+#ifdef UNICODE
+#define tagOLEUILINKPROPS tagOLEUILINKPROPSW
+#define OLEUILINKPROPS OLEUILINKPROPSW
+#define POLEUILINKPROPS POLEUILINKPROPSW
+#define LPOLEUILINKPROPS LPOLEUILINKPROPSW
+#else
+#define tagOLEUILINKPROPS tagOLEUILINKPROPSA
+#define OLEUILINKPROPS OLEUILINKPROPSA
+#define POLEUILINKPROPS POLEUILINKPROPSA
+#define LPOLEUILINKPROPS LPOLEUILINKPROPSA
+#endif
+
+#if (WINVER >= 0x400)
+// Under Windows 95 prsht.h is NOT a part of the normal Windows
+// environment, so we explicitly include it here to be safe.
+#include <prsht.h>
+
+#ifndef PSM_SETFINISHTEXTA
+// We are building under Windows 95.
+//
+// Under Windows 95 there are no wide-character definitions
+// for the property sheet code.
+//
+// Since the UNICODE version of our API is not implemented on Windows 95,
+// this only creates a semantic problem. The entry points will still
+// look the same and the code will still work the same if we define
+// LPPROPSHEETHEADERW to be the narrow version of the structure.
+
+typedef struct _PROPSHEETHEADER FAR* LPPROPSHEETHEADERW;
+typedef struct _PROPSHEETHEADER FAR* LPPROPSHEETHEADERA;
+
+#else
+// We are building under Windows NT.
+
+// Go ahead and define LPPROPSHEETHEADERW as it should be defined!
+
+typedef struct _PROPSHEETHEADERW FAR* LPPROPSHEETHEADERW;
+typedef struct _PROPSHEETHEADERA FAR* LPPROPSHEETHEADERA;
+
+#ifdef UNICODE
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERW
+#else
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERA
+#endif
+
+#endif // PSM_SETFINISHTEXTA
+
+#else // WINVER
+
+// If WINVER < 0x400, then PROPSHEETHEADER stuff isn't defined.
+// The user won't be able to use the prop-sheet code, so we just define the
+// necessary structures to be void pointers to enable to header file to
+// at least compile correctly.
+
+typedef void FAR* LPPROPSHEETHEADERW;
+typedef void FAR* LPPROPSHEETHEADERA;
+
+#ifdef UNICODE
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERW
+#else
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERA
+#endif
+
+#endif // WINVER
+
+typedef struct tagOLEUIOBJECTPROPSW
+{
+ // These IN fields are standard across all OLEUI property sheets.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: global flags for the sheet
+
+ // Standard PROPSHEETHEADER used for extensibility
+ LPPROPSHEETHEADERW lpPS; // IN: property sheet header
+
+ // Data which allows manipulation of the object
+ DWORD dwObject; // IN: identifier for the object
+ LPOLEUIOBJINFOW lpObjInfo; // IN: interface to manipulate object
+
+ // Data which allows manipulation of the link
+ DWORD dwLink; // IN: identifier for the link
+ LPOLEUILINKINFOW lpLinkInfo; // IN: interface to manipulate link
+
+ // Data specfic to each page
+ LPOLEUIGNRLPROPSW lpGP; // IN: general page
+ LPOLEUIVIEWPROPSW lpVP; // IN: view page
+ LPOLEUILINKPROPSW lpLP; // IN: link page
+
+} OLEUIOBJECTPROPSW, *POLEUIOBJECTPROPSW, FAR* LPOLEUIOBJECTPROPSW;
+
+typedef struct tagOLEUIOBJECTPROPSA
+{
+ // These IN fields are standard across all OLEUI property sheets.
+ DWORD cbStruct; // Structure Size
+ DWORD dwFlags; // IN-OUT: global flags for the sheet
+
+ // Standard PROPSHEETHEADER used for extensibility
+ LPPROPSHEETHEADERA lpPS; // IN: property sheet header
+
+ // Data which allows manipulation of the object
+ DWORD dwObject; // IN: identifier for the object
+ LPOLEUIOBJINFOA lpObjInfo; // IN: interface to manipulate object
+
+ // Data which allows manipulation of the link
+ DWORD dwLink; // IN: identifier for the link
+ LPOLEUILINKINFOA lpLinkInfo; // IN: interface to manipulate link
+
+ // Data specfic to each page
+ LPOLEUIGNRLPROPSA lpGP; // IN: general page
+ LPOLEUIVIEWPROPSA lpVP; // IN: view page
+ LPOLEUILINKPROPSA lpLP; // IN: link page
+
+} OLEUIOBJECTPROPSA, *POLEUIOBJECTPROPSA, FAR* LPOLEUIOBJECTPROPSA;
+
+STDAPI_(UINT) OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
+STDAPI_(UINT) OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
+
+#ifdef UNICODE
+#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSW
+#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSW
+#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSW
+#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSW
+#define OleUIObjectProperties OleUIObjectPropertiesW
+#else
+#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSA
+#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSA
+#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSA
+#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSA
+#define OleUIObjectProperties OleUIObjectPropertiesA
+#endif
+
+// Flags for OLEUIOBJECTPROPS
+#define OPF_OBJECTISLINK 0x00000001L
+#define OPF_NOFILLDEFAULT 0x00000002L
+#define OPF_SHOWHELP 0x00000004L
+#define OPF_DISABLECONVERT 0x00000008L
+
+// Errors for OleUIObjectProperties
+#define OLEUI_OPERR_SUBPROPNULL (OLEUI_ERR_STANDARDMAX+0)
+#define OLEUI_OPERR_SUBPROPINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_OPERR_PROPSHEETNULL (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_OPERR_PROPSHEETINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_OPERR_SUPPROP (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_OPERR_PROPSINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_OPERR_PAGESINCORRECT (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_OPERR_INVALIDPAGES (OLEUI_ERR_STANDARDMAX+7)
+#define OLEUI_OPERR_NOTSUPPORTED (OLEUI_ERR_STANDARDMAX+8)
+#define OLEUI_OPERR_DLGPROCNOTNULL (OLEUI_ERR_STANDARDMAX+9)
+#define OLEUI_OPERR_LPARAMNOTZERO (OLEUI_ERR_STANDARDMAX+10)
+
+#define OLEUI_GPERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+11)
+#define OLEUI_GPERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+12)
+#define OLEUI_GPERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+13)
+#define OLEUI_GPERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+14)
+#define OLEUI_VPERR_METAPICTINVALID (OLEUI_ERR_STANDARDMAX+15)
+#define OLEUI_VPERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+16)
+#define OLEUI_LPERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+17)
+#define OLEUI_LPERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+18)
+
+#define OLEUI_OPERR_PROPERTYSHEET (OLEUI_ERR_STANDARDMAX+19)
+#define OLEUI_OPERR_OBJINFOINVALID (OLEUI_ERR_STANDARDMAX+20)
+#define OLEUI_OPERR_LINKINFOINVALID (OLEUI_ERR_STANDARDMAX+21)
+
+// wParam used by PSM_QUERYSIBLINGS
+#define OLEUI_QUERY_GETCLASSID 0xFF00 // override class id for icon
+#define OLEUI_QUERY_LINKBROKEN 0xFF01 // after link broken
+
+/////////////////////////////////////////////////////////////////////////////
+// PROMPT USER DIALOGS
+
+int CDECL OleUIPromptUserW(int nTemplate, HWND hwndParent, ...);
+int CDECL OleUIPromptUserA(int nTemplate, HWND hwndParent, ...);
+
+#ifdef UNICODE
+#define OleUIPromptUser OleUIPromptUserW
+#else
+#define OleUIPromptUser OleUIPromptUserA
+#endif
+
+STDAPI_(BOOL) OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr,
+ HWND hwndParent, LPWSTR lpszTitle, int cLinks);
+STDAPI_(BOOL) OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr,
+ HWND hwndParent, LPSTR lpszTitle, int cLinks);
+
+#ifdef UNICODE
+#define OleUIUpdateLinks OleUIUpdateLinksW
+#else
+#define OleUIUpdateLinks OleUIUpdateLinksA
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+#pragma pack(pop)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // RC_INVOKED
+
+#endif //_OLEDLG_H_
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/public/sdk/inc/oleext.h b/public/sdk/inc/oleext.h
new file mode 100644
index 000000000..61350e0bf
--- /dev/null
+++ b/public/sdk/inc/oleext.h
@@ -0,0 +1,2276 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:42:16 1996
+ */
+/* Compiler settings for oleext.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __oleext_h__
+#define __oleext_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IPropertySetContainer_FWD_DEFINED__
+#define __IPropertySetContainer_FWD_DEFINED__
+typedef interface IPropertySetContainer IPropertySetContainer;
+#endif /* __IPropertySetContainer_FWD_DEFINED__ */
+
+
+#ifndef __INotifyReplica_FWD_DEFINED__
+#define __INotifyReplica_FWD_DEFINED__
+typedef interface INotifyReplica INotifyReplica;
+#endif /* __INotifyReplica_FWD_DEFINED__ */
+
+
+#ifndef __IReconcilableObject_FWD_DEFINED__
+#define __IReconcilableObject_FWD_DEFINED__
+typedef interface IReconcilableObject IReconcilableObject;
+#endif /* __IReconcilableObject_FWD_DEFINED__ */
+
+
+#ifndef __IReconcileInitiator_FWD_DEFINED__
+#define __IReconcileInitiator_FWD_DEFINED__
+typedef interface IReconcileInitiator IReconcileInitiator;
+#endif /* __IReconcileInitiator_FWD_DEFINED__ */
+
+
+#ifndef __IDifferencing_FWD_DEFINED__
+#define __IDifferencing_FWD_DEFINED__
+typedef interface IDifferencing IDifferencing;
+#endif /* __IDifferencing_FWD_DEFINED__ */
+
+
+#ifndef __IAccessControl_FWD_DEFINED__
+#define __IAccessControl_FWD_DEFINED__
+typedef interface IAccessControl IAccessControl;
+#endif /* __IAccessControl_FWD_DEFINED__ */
+
+
+#ifndef __IAuditControl_FWD_DEFINED__
+#define __IAuditControl_FWD_DEFINED__
+typedef interface IAuditControl IAuditControl;
+#endif /* __IAuditControl_FWD_DEFINED__ */
+
+
+#ifndef __IDirectory_FWD_DEFINED__
+#define __IDirectory_FWD_DEFINED__
+typedef interface IDirectory IDirectory;
+#endif /* __IDirectory_FWD_DEFINED__ */
+
+
+#ifndef __IEnumSTATDIR_FWD_DEFINED__
+#define __IEnumSTATDIR_FWD_DEFINED__
+typedef interface IEnumSTATDIR IEnumSTATDIR;
+#endif /* __IEnumSTATDIR_FWD_DEFINED__ */
+
+
+#ifndef __IMultiplePropertyAccess_FWD_DEFINED__
+#define __IMultiplePropertyAccess_FWD_DEFINED__
+typedef interface IMultiplePropertyAccess IMultiplePropertyAccess;
+#endif /* __IMultiplePropertyAccess_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "accctrl.h"
+#include "transact.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifndef __IPropertySetContainer_INTERFACE_DEFINED__
+#define __IPropertySetContainer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPropertySetContainer
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IPropertySetContainer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPropertySetContainer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetPropset(
+ /* [in] */ REFGUID rguidName,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddPropset(
+ /* [in] */ IPersist __RPC_FAR *pPropset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeletePropset(
+ /* [in] */ REFGUID rguidName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPropertySetContainerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPropertySetContainer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPropertySetContainer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPropertySetContainer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPropset )(
+ IPropertySetContainer __RPC_FAR * This,
+ /* [in] */ REFGUID rguidName,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddPropset )(
+ IPropertySetContainer __RPC_FAR * This,
+ /* [in] */ IPersist __RPC_FAR *pPropset);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeletePropset )(
+ IPropertySetContainer __RPC_FAR * This,
+ /* [in] */ REFGUID rguidName);
+
+ END_INTERFACE
+ } IPropertySetContainerVtbl;
+
+ interface IPropertySetContainer
+ {
+ CONST_VTBL struct IPropertySetContainerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPropertySetContainer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPropertySetContainer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPropertySetContainer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPropertySetContainer_GetPropset(This,rguidName,riid,ppvObj) \
+ (This)->lpVtbl -> GetPropset(This,rguidName,riid,ppvObj)
+
+#define IPropertySetContainer_AddPropset(This,pPropset) \
+ (This)->lpVtbl -> AddPropset(This,pPropset)
+
+#define IPropertySetContainer_DeletePropset(This,rguidName) \
+ (This)->lpVtbl -> DeletePropset(This,rguidName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetContainer_GetPropset_Proxy(
+ IPropertySetContainer __RPC_FAR * This,
+ /* [in] */ REFGUID rguidName,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+void __RPC_STUB IPropertySetContainer_GetPropset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetContainer_AddPropset_Proxy(
+ IPropertySetContainer __RPC_FAR * This,
+ /* [in] */ IPersist __RPC_FAR *pPropset);
+
+
+void __RPC_STUB IPropertySetContainer_AddPropset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPropertySetContainer_DeletePropset_Proxy(
+ IPropertySetContainer __RPC_FAR * This,
+ /* [in] */ REFGUID rguidName);
+
+
+void __RPC_STUB IPropertySetContainer_DeletePropset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPropertySetContainer_INTERFACE_DEFINED__ */
+
+
+#ifndef __INotifyReplica_INTERFACE_DEFINED__
+#define __INotifyReplica_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: INotifyReplica
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_INotifyReplica;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface INotifyReplica : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE YouAreAReplica(
+ /* [in] */ ULONG cOtherReplicas,
+ /* [unique][in][size_is][size_is] */ IMoniker __RPC_FAR *__RPC_FAR *rgpOtherReplicas) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct INotifyReplicaVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ INotifyReplica __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ INotifyReplica __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ INotifyReplica __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *YouAreAReplica )(
+ INotifyReplica __RPC_FAR * This,
+ /* [in] */ ULONG cOtherReplicas,
+ /* [unique][in][size_is][size_is] */ IMoniker __RPC_FAR *__RPC_FAR *rgpOtherReplicas);
+
+ END_INTERFACE
+ } INotifyReplicaVtbl;
+
+ interface INotifyReplica
+ {
+ CONST_VTBL struct INotifyReplicaVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define INotifyReplica_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define INotifyReplica_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define INotifyReplica_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define INotifyReplica_YouAreAReplica(This,cOtherReplicas,rgpOtherReplicas) \
+ (This)->lpVtbl -> YouAreAReplica(This,cOtherReplicas,rgpOtherReplicas)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE INotifyReplica_YouAreAReplica_Proxy(
+ INotifyReplica __RPC_FAR * This,
+ /* [in] */ ULONG cOtherReplicas,
+ /* [unique][in][size_is][size_is] */ IMoniker __RPC_FAR *__RPC_FAR *rgpOtherReplicas);
+
+
+void __RPC_STUB INotifyReplica_YouAreAReplica_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __INotifyReplica_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0073
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0073_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0073_v0_0_s_ifspec;
+
+#ifndef __IReconcilableObject_INTERFACE_DEFINED__
+#define __IReconcilableObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IReconcilableObject
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef
+enum _reconcilef
+ { RECONCILEF_MAYBOTHERUSER = 0x1,
+ RECONCILEF_FEEDBACKWINDOWVALID = 0x2,
+ RECONCILEF_NORESIDUESOK = 0x4,
+ RECONCILEF_OMITSELFRESIDUE = 0x8,
+ RECONCILEF_RESUMERECONCILIATION = 0x10,
+ RECONCILEF_YOUMAYDOTHEUPDATES = 0x20,
+ RECONCILEF_ONLYYOUWERECHANGED = 0x40,
+ ALL_RECONCILE_FLAGS = RECONCILEF_MAYBOTHERUSER | RECONCILEF_FEEDBACKWINDOWVALID | RECONCILEF_NORESIDUESOK | RECONCILEF_OMITSELFRESIDUE | RECONCILEF_RESUMERECONCILIATION | RECONCILEF_YOUMAYDOTHEUPDATES | RECONCILEF_ONLYYOUWERECHANGED
+ } RECONCILEF;
+
+
+EXTERN_C const IID IID_IReconcilableObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IReconcilableObject : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Reconcile(
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ HWND hwndOwner,
+ /* [in] */ HWND hwndProgressFeedback,
+ /* [in] */ ULONG cInput,
+ /* [size_is][size_is][unique][in] */ LPMONIKER __RPC_FAR *rgpmkOtherInput,
+ /* [out] */ LONG __RPC_FAR *plOutIndex,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgNewResidues,
+ /* [unique][in] */ ULONG __RPC_FAR *pvReserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProgressFeedbackMaxEstimate(
+ /* [out] */ ULONG __RPC_FAR *pulProgressMax) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IReconcilableObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IReconcilableObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IReconcilableObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IReconcilableObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reconcile )(
+ IReconcilableObject __RPC_FAR * This,
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ HWND hwndOwner,
+ /* [in] */ HWND hwndProgressFeedback,
+ /* [in] */ ULONG cInput,
+ /* [size_is][size_is][unique][in] */ LPMONIKER __RPC_FAR *rgpmkOtherInput,
+ /* [out] */ LONG __RPC_FAR *plOutIndex,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgNewResidues,
+ /* [unique][in] */ ULONG __RPC_FAR *pvReserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetProgressFeedbackMaxEstimate )(
+ IReconcilableObject __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pulProgressMax);
+
+ END_INTERFACE
+ } IReconcilableObjectVtbl;
+
+ interface IReconcilableObject
+ {
+ CONST_VTBL struct IReconcilableObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IReconcilableObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IReconcilableObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IReconcilableObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IReconcilableObject_Reconcile(This,pInitiator,dwFlags,hwndOwner,hwndProgressFeedback,cInput,rgpmkOtherInput,plOutIndex,pstgNewResidues,pvReserved) \
+ (This)->lpVtbl -> Reconcile(This,pInitiator,dwFlags,hwndOwner,hwndProgressFeedback,cInput,rgpmkOtherInput,plOutIndex,pstgNewResidues,pvReserved)
+
+#define IReconcilableObject_GetProgressFeedbackMaxEstimate(This,pulProgressMax) \
+ (This)->lpVtbl -> GetProgressFeedbackMaxEstimate(This,pulProgressMax)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IReconcilableObject_Reconcile_Proxy(
+ IReconcilableObject __RPC_FAR * This,
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ HWND hwndOwner,
+ /* [in] */ HWND hwndProgressFeedback,
+ /* [in] */ ULONG cInput,
+ /* [size_is][size_is][unique][in] */ LPMONIKER __RPC_FAR *rgpmkOtherInput,
+ /* [out] */ LONG __RPC_FAR *plOutIndex,
+ /* [unique][in] */ IStorage __RPC_FAR *pstgNewResidues,
+ /* [unique][in] */ ULONG __RPC_FAR *pvReserved);
+
+
+void __RPC_STUB IReconcilableObject_Reconcile_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IReconcilableObject_GetProgressFeedbackMaxEstimate_Proxy(
+ IReconcilableObject __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pulProgressMax);
+
+
+void __RPC_STUB IReconcilableObject_GetProgressFeedbackMaxEstimate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IReconcilableObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __Versioning_INTERFACE_DEFINED__
+#define __Versioning_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: Versioning
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][unique][uuid] */
+
+
+
+#pragma pack(4)
+typedef GUID VERID;
+
+typedef struct tagVERIDARRAY
+ {
+ DWORD cVerid;
+ /* [size_is] */ GUID verid[ 1 ];
+ } VERIDARRAY;
+
+typedef struct tagVERBLOCK
+ {
+ ULONG iveridFirst;
+ ULONG iveridMax;
+ ULONG cblockPrev;
+ /* [size_is] */ ULONG __RPC_FAR *rgiblockPrev;
+ } VERBLOCK;
+
+typedef struct tagVERCONNECTIONINFO
+ {
+ DWORD cBlock;
+ /* [size_is] */ VERBLOCK __RPC_FAR *rgblock;
+ } VERCONNECTIONINFO;
+
+typedef struct tagVERGRAPH
+ {
+ VERCONNECTIONINFO blocks;
+ VERIDARRAY nodes;
+ } VERGRAPH;
+
+
+#pragma pack()
+
+
+extern RPC_IF_HANDLE Versioning_v0_0_c_ifspec;
+extern RPC_IF_HANDLE Versioning_v0_0_s_ifspec;
+#endif /* __Versioning_INTERFACE_DEFINED__ */
+
+#ifndef __IReconcileInitiator_INTERFACE_DEFINED__
+#define __IReconcileInitiator_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IReconcileInitiator
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IReconcileInitiator;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IReconcileInitiator : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetAbortCallback(
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkForAbort) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetProgressFeedback(
+ /* [in] */ ULONG ulProgress,
+ /* [in] */ ULONG ulProgressMax) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindVersion(
+ /* [in] */ VERID __RPC_FAR *pverid,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindVersionFromGraph(
+ /* [in] */ VERGRAPH __RPC_FAR *pvergraph,
+ /* [out] */ VERID __RPC_FAR *pverid,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IReconcileInitiatorVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IReconcileInitiator __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IReconcileInitiator __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IReconcileInitiator __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAbortCallback )(
+ IReconcileInitiator __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkForAbort);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetProgressFeedback )(
+ IReconcileInitiator __RPC_FAR * This,
+ /* [in] */ ULONG ulProgress,
+ /* [in] */ ULONG ulProgressMax);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FindVersion )(
+ IReconcileInitiator __RPC_FAR * This,
+ /* [in] */ VERID __RPC_FAR *pverid,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FindVersionFromGraph )(
+ IReconcileInitiator __RPC_FAR * This,
+ /* [in] */ VERGRAPH __RPC_FAR *pvergraph,
+ /* [out] */ VERID __RPC_FAR *pverid,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ END_INTERFACE
+ } IReconcileInitiatorVtbl;
+
+ interface IReconcileInitiator
+ {
+ CONST_VTBL struct IReconcileInitiatorVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IReconcileInitiator_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IReconcileInitiator_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IReconcileInitiator_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IReconcileInitiator_SetAbortCallback(This,pUnkForAbort) \
+ (This)->lpVtbl -> SetAbortCallback(This,pUnkForAbort)
+
+#define IReconcileInitiator_SetProgressFeedback(This,ulProgress,ulProgressMax) \
+ (This)->lpVtbl -> SetProgressFeedback(This,ulProgress,ulProgressMax)
+
+#define IReconcileInitiator_FindVersion(This,pverid,ppmk) \
+ (This)->lpVtbl -> FindVersion(This,pverid,ppmk)
+
+#define IReconcileInitiator_FindVersionFromGraph(This,pvergraph,pverid,ppmk) \
+ (This)->lpVtbl -> FindVersionFromGraph(This,pvergraph,pverid,ppmk)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IReconcileInitiator_SetAbortCallback_Proxy(
+ IReconcileInitiator __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkForAbort);
+
+
+void __RPC_STUB IReconcileInitiator_SetAbortCallback_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IReconcileInitiator_SetProgressFeedback_Proxy(
+ IReconcileInitiator __RPC_FAR * This,
+ /* [in] */ ULONG ulProgress,
+ /* [in] */ ULONG ulProgressMax);
+
+
+void __RPC_STUB IReconcileInitiator_SetProgressFeedback_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IReconcileInitiator_FindVersion_Proxy(
+ IReconcileInitiator __RPC_FAR * This,
+ /* [in] */ VERID __RPC_FAR *pverid,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IReconcileInitiator_FindVersion_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IReconcileInitiator_FindVersionFromGraph_Proxy(
+ IReconcileInitiator __RPC_FAR * This,
+ /* [in] */ VERGRAPH __RPC_FAR *pvergraph,
+ /* [out] */ VERID __RPC_FAR *pverid,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IReconcileInitiator_FindVersionFromGraph_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IReconcileInitiator_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDifferencing_INTERFACE_DEFINED__
+#define __IDifferencing_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDifferencing
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [public][public][public][public] */
+enum __MIDL_IDifferencing_0001
+ { DIFF_TYPE_Ordinary = 0,
+ DIFF_TYPE_Urgent = DIFF_TYPE_Ordinary + 1
+ } DifferenceType;
+
+
+EXTERN_C const IID IID_IDifferencing;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDifferencing : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SubtractMoniker(
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ IMoniker __RPC_FAR *pOtherStg,
+ /* [in] */ DifferenceType diffType,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pStgMedium,
+ /* [in] */ DWORD reserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SubtractVerid(
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ VERID __RPC_FAR *pVerid,
+ /* [in] */ DifferenceType diffType,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pStgMedium,
+ /* [in] */ DWORD reserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SubtractTimeStamp(
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ FILETIME __RPC_FAR *pTimeStamp,
+ /* [in] */ DifferenceType diffType,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pStgMedium,
+ /* [in] */ DWORD reserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Add(
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ STGMEDIUM __RPC_FAR *pStgMedium) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDifferencingVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDifferencing __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDifferencing __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDifferencing __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SubtractMoniker )(
+ IDifferencing __RPC_FAR * This,
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ IMoniker __RPC_FAR *pOtherStg,
+ /* [in] */ DifferenceType diffType,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pStgMedium,
+ /* [in] */ DWORD reserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SubtractVerid )(
+ IDifferencing __RPC_FAR * This,
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ VERID __RPC_FAR *pVerid,
+ /* [in] */ DifferenceType diffType,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pStgMedium,
+ /* [in] */ DWORD reserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SubtractTimeStamp )(
+ IDifferencing __RPC_FAR * This,
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ FILETIME __RPC_FAR *pTimeStamp,
+ /* [in] */ DifferenceType diffType,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pStgMedium,
+ /* [in] */ DWORD reserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Add )(
+ IDifferencing __RPC_FAR * This,
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ STGMEDIUM __RPC_FAR *pStgMedium);
+
+ END_INTERFACE
+ } IDifferencingVtbl;
+
+ interface IDifferencing
+ {
+ CONST_VTBL struct IDifferencingVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDifferencing_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDifferencing_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDifferencing_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDifferencing_SubtractMoniker(This,pInitiator,pOtherStg,diffType,pStgMedium,reserved) \
+ (This)->lpVtbl -> SubtractMoniker(This,pInitiator,pOtherStg,diffType,pStgMedium,reserved)
+
+#define IDifferencing_SubtractVerid(This,pInitiator,pVerid,diffType,pStgMedium,reserved) \
+ (This)->lpVtbl -> SubtractVerid(This,pInitiator,pVerid,diffType,pStgMedium,reserved)
+
+#define IDifferencing_SubtractTimeStamp(This,pInitiator,pTimeStamp,diffType,pStgMedium,reserved) \
+ (This)->lpVtbl -> SubtractTimeStamp(This,pInitiator,pTimeStamp,diffType,pStgMedium,reserved)
+
+#define IDifferencing_Add(This,pInitiator,pStgMedium) \
+ (This)->lpVtbl -> Add(This,pInitiator,pStgMedium)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDifferencing_SubtractMoniker_Proxy(
+ IDifferencing __RPC_FAR * This,
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ IMoniker __RPC_FAR *pOtherStg,
+ /* [in] */ DifferenceType diffType,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pStgMedium,
+ /* [in] */ DWORD reserved);
+
+
+void __RPC_STUB IDifferencing_SubtractMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDifferencing_SubtractVerid_Proxy(
+ IDifferencing __RPC_FAR * This,
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ VERID __RPC_FAR *pVerid,
+ /* [in] */ DifferenceType diffType,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pStgMedium,
+ /* [in] */ DWORD reserved);
+
+
+void __RPC_STUB IDifferencing_SubtractVerid_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDifferencing_SubtractTimeStamp_Proxy(
+ IDifferencing __RPC_FAR * This,
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ FILETIME __RPC_FAR *pTimeStamp,
+ /* [in] */ DifferenceType diffType,
+ /* [out][in] */ STGMEDIUM __RPC_FAR *pStgMedium,
+ /* [in] */ DWORD reserved);
+
+
+void __RPC_STUB IDifferencing_SubtractTimeStamp_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDifferencing_Add_Proxy(
+ IDifferencing __RPC_FAR * This,
+ /* [in] */ IReconcileInitiator __RPC_FAR *pInitiator,
+ /* [in] */ STGMEDIUM __RPC_FAR *pStgMedium);
+
+
+void __RPC_STUB IDifferencing_Add_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDifferencing_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0077
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+typedef /* [allocate] */ PACTRL_ACCESSW PACTRL_ACCESSW_ALLOCATE_ALL_NODES;
+
+typedef /* [allocate] */ PACTRL_AUDITW PACTRL_AUDITW_ALLOCATE_ALL_NODES;
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0077_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0077_v0_0_s_ifspec;
+
+#ifndef __IAccessControl_INTERFACE_DEFINED__
+#define __IAccessControl_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAccessControl
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IAccessControl;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAccessControl : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GrantAccessRights(
+ /* [in] */ PACTRL_ACCESSW pAccessList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAccessRights(
+ /* [in] */ PACTRL_ACCESSW pAccessList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetOwner(
+ /* [in] */ PTRUSTEEW pOwner,
+ /* [in] */ PTRUSTEEW pGroup) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevokeAccessRights(
+ /* [in] */ LPWSTR lpProperty,
+ /* [in] */ ULONG cTrustees,
+ /* [size_is][in] */ TRUSTEEW __RPC_FAR prgTrustees[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllAccessRights(
+ /* [in] */ LPWSTR lpProperty,
+ /* [out] */ PACTRL_ACCESSW_ALLOCATE_ALL_NODES __RPC_FAR *ppAccessList,
+ /* [out] */ PTRUSTEEW __RPC_FAR *ppOwner,
+ /* [out] */ PTRUSTEEW __RPC_FAR *ppGroup) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsAccessAllowed(
+ /* [in] */ PTRUSTEEW pTrustee,
+ /* [in] */ LPWSTR lpProperty,
+ /* [in] */ ACCESS_RIGHTS AccessRights,
+ /* [out] */ BOOL __RPC_FAR *pfAccessAllowed) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessControlVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAccessControl __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAccessControl __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GrantAccessRights )(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ PACTRL_ACCESSW pAccessList);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAccessRights )(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ PACTRL_ACCESSW pAccessList);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetOwner )(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ PTRUSTEEW pOwner,
+ /* [in] */ PTRUSTEEW pGroup);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RevokeAccessRights )(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ LPWSTR lpProperty,
+ /* [in] */ ULONG cTrustees,
+ /* [size_is][in] */ TRUSTEEW __RPC_FAR prgTrustees[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllAccessRights )(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ LPWSTR lpProperty,
+ /* [out] */ PACTRL_ACCESSW_ALLOCATE_ALL_NODES __RPC_FAR *ppAccessList,
+ /* [out] */ PTRUSTEEW __RPC_FAR *ppOwner,
+ /* [out] */ PTRUSTEEW __RPC_FAR *ppGroup);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsAccessAllowed )(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ PTRUSTEEW pTrustee,
+ /* [in] */ LPWSTR lpProperty,
+ /* [in] */ ACCESS_RIGHTS AccessRights,
+ /* [out] */ BOOL __RPC_FAR *pfAccessAllowed);
+
+ END_INTERFACE
+ } IAccessControlVtbl;
+
+ interface IAccessControl
+ {
+ CONST_VTBL struct IAccessControlVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessControl_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAccessControl_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAccessControl_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAccessControl_GrantAccessRights(This,pAccessList) \
+ (This)->lpVtbl -> GrantAccessRights(This,pAccessList)
+
+#define IAccessControl_SetAccessRights(This,pAccessList) \
+ (This)->lpVtbl -> SetAccessRights(This,pAccessList)
+
+#define IAccessControl_SetOwner(This,pOwner,pGroup) \
+ (This)->lpVtbl -> SetOwner(This,pOwner,pGroup)
+
+#define IAccessControl_RevokeAccessRights(This,lpProperty,cTrustees,prgTrustees) \
+ (This)->lpVtbl -> RevokeAccessRights(This,lpProperty,cTrustees,prgTrustees)
+
+#define IAccessControl_GetAllAccessRights(This,lpProperty,ppAccessList,ppOwner,ppGroup) \
+ (This)->lpVtbl -> GetAllAccessRights(This,lpProperty,ppAccessList,ppOwner,ppGroup)
+
+#define IAccessControl_IsAccessAllowed(This,pTrustee,lpProperty,AccessRights,pfAccessAllowed) \
+ (This)->lpVtbl -> IsAccessAllowed(This,pTrustee,lpProperty,AccessRights,pfAccessAllowed)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IAccessControl_GrantAccessRights_Proxy(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ PACTRL_ACCESSW pAccessList);
+
+
+void __RPC_STUB IAccessControl_GrantAccessRights_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAccessControl_SetAccessRights_Proxy(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ PACTRL_ACCESSW pAccessList);
+
+
+void __RPC_STUB IAccessControl_SetAccessRights_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAccessControl_SetOwner_Proxy(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ PTRUSTEEW pOwner,
+ /* [in] */ PTRUSTEEW pGroup);
+
+
+void __RPC_STUB IAccessControl_SetOwner_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAccessControl_RevokeAccessRights_Proxy(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ LPWSTR lpProperty,
+ /* [in] */ ULONG cTrustees,
+ /* [size_is][in] */ TRUSTEEW __RPC_FAR prgTrustees[ ]);
+
+
+void __RPC_STUB IAccessControl_RevokeAccessRights_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAccessControl_GetAllAccessRights_Proxy(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ LPWSTR lpProperty,
+ /* [out] */ PACTRL_ACCESSW_ALLOCATE_ALL_NODES __RPC_FAR *ppAccessList,
+ /* [out] */ PTRUSTEEW __RPC_FAR *ppOwner,
+ /* [out] */ PTRUSTEEW __RPC_FAR *ppGroup);
+
+
+void __RPC_STUB IAccessControl_GetAllAccessRights_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAccessControl_IsAccessAllowed_Proxy(
+ IAccessControl __RPC_FAR * This,
+ /* [in] */ PTRUSTEEW pTrustee,
+ /* [in] */ LPWSTR lpProperty,
+ /* [in] */ ACCESS_RIGHTS AccessRights,
+ /* [out] */ BOOL __RPC_FAR *pfAccessAllowed);
+
+
+void __RPC_STUB IAccessControl_IsAccessAllowed_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAccessControl_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0080
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0080_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0080_v0_0_s_ifspec;
+
+#ifndef __IAuditControl_INTERFACE_DEFINED__
+#define __IAuditControl_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAuditControl
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IAuditControl;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAuditControl : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GrantAuditRights(
+ /* [in] */ PACTRL_AUDITW pAuditList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAuditRights(
+ /* [in] */ PACTRL_AUDITW pAuditList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevokeAuditRights(
+ /* [in] */ LPWSTR lpProperty,
+ /* [in] */ ULONG cTrustees,
+ /* [size_is][in] */ TRUSTEEW __RPC_FAR prgTrustees[ ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAllAuditRights(
+ /* [in] */ LPWSTR lpProperty,
+ /* [out] */ PACTRL_AUDITW __RPC_FAR *ppAuditList) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsAccessAudited(
+ /* [in] */ PTRUSTEEW pTrustee,
+ /* [in] */ ACCESS_RIGHTS AuditRights,
+ /* [out] */ BOOL __RPC_FAR *pfAccessAudited) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAuditControlVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAuditControl __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAuditControl __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GrantAuditRights )(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ PACTRL_AUDITW pAuditList);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAuditRights )(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ PACTRL_AUDITW pAuditList);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RevokeAuditRights )(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ LPWSTR lpProperty,
+ /* [in] */ ULONG cTrustees,
+ /* [size_is][in] */ TRUSTEEW __RPC_FAR prgTrustees[ ]);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAllAuditRights )(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ LPWSTR lpProperty,
+ /* [out] */ PACTRL_AUDITW __RPC_FAR *ppAuditList);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsAccessAudited )(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ PTRUSTEEW pTrustee,
+ /* [in] */ ACCESS_RIGHTS AuditRights,
+ /* [out] */ BOOL __RPC_FAR *pfAccessAudited);
+
+ END_INTERFACE
+ } IAuditControlVtbl;
+
+ interface IAuditControl
+ {
+ CONST_VTBL struct IAuditControlVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAuditControl_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAuditControl_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAuditControl_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAuditControl_GrantAuditRights(This,pAuditList) \
+ (This)->lpVtbl -> GrantAuditRights(This,pAuditList)
+
+#define IAuditControl_SetAuditRights(This,pAuditList) \
+ (This)->lpVtbl -> SetAuditRights(This,pAuditList)
+
+#define IAuditControl_RevokeAuditRights(This,lpProperty,cTrustees,prgTrustees) \
+ (This)->lpVtbl -> RevokeAuditRights(This,lpProperty,cTrustees,prgTrustees)
+
+#define IAuditControl_GetAllAuditRights(This,lpProperty,ppAuditList) \
+ (This)->lpVtbl -> GetAllAuditRights(This,lpProperty,ppAuditList)
+
+#define IAuditControl_IsAccessAudited(This,pTrustee,AuditRights,pfAccessAudited) \
+ (This)->lpVtbl -> IsAccessAudited(This,pTrustee,AuditRights,pfAccessAudited)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IAuditControl_GrantAuditRights_Proxy(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ PACTRL_AUDITW pAuditList);
+
+
+void __RPC_STUB IAuditControl_GrantAuditRights_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAuditControl_SetAuditRights_Proxy(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ PACTRL_AUDITW pAuditList);
+
+
+void __RPC_STUB IAuditControl_SetAuditRights_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAuditControl_RevokeAuditRights_Proxy(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ LPWSTR lpProperty,
+ /* [in] */ ULONG cTrustees,
+ /* [size_is][in] */ TRUSTEEW __RPC_FAR prgTrustees[ ]);
+
+
+void __RPC_STUB IAuditControl_RevokeAuditRights_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAuditControl_GetAllAuditRights_Proxy(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ LPWSTR lpProperty,
+ /* [out] */ PACTRL_AUDITW __RPC_FAR *ppAuditList);
+
+
+void __RPC_STUB IAuditControl_GetAllAuditRights_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAuditControl_IsAccessAudited_Proxy(
+ IAuditControl __RPC_FAR * This,
+ /* [in] */ PTRUSTEEW pTrustee,
+ /* [in] */ ACCESS_RIGHTS AuditRights,
+ /* [out] */ BOOL __RPC_FAR *pfAccessAudited);
+
+
+void __RPC_STUB IAuditControl_IsAccessAudited_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAuditControl_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0081
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+
+typedef
+enum tagSTGFMT
+ { STGFMT_DOCUMENT = 0,
+ STGFMT_DIRECTORY = 1,
+ STGFMT_CATALOG = 2,
+ STGFMT_FILE = 3,
+ STGFMT_ANY = 4,
+ STGFMT_DOCFILE = 5,
+ STGFMT_STORAGE = 6,
+ STGFMT_JUNCTION = 7
+ } STGFMT;
+
+#define STGFMT_FLATFILE STGFMT_FILE
+typedef struct tagSTGTEMPLATE
+ {
+ IUnknown __RPC_FAR *pUnkTemplate;
+ DWORD ciidTemplate;
+ IID __RPC_FAR *riidTemplate;
+ } STGTEMPLATE;
+
+typedef struct tagOBJECT_SECURITY_INIT
+ {
+ TRUSTEE_W __RPC_FAR *pTrusteeOwner;
+ TRUSTEE_W __RPC_FAR *pTrusteeGroup;
+ DWORD cAccessRightsLength;
+ EXPLICIT_ACCESS_W __RPC_FAR *pAccessRightsList;
+ DWORD cAuditEntriesLength;
+ EXPLICIT_ACCESS_W __RPC_FAR *pAuditEntriesList;
+ } OBJECT_SECURITY_INIT;
+
+typedef struct tagSTGCREATE
+ {
+ DWORD grfAttrs;
+ STGTEMPLATE __RPC_FAR *pTemplate;
+ OBJECT_SECURITY_INIT __RPC_FAR *pSecurity;
+ } STGCREATE;
+
+typedef struct tagSTGOPEN
+ {
+ STGFMT stgfmt;
+ DWORD grfMode;
+ DWORD grfFlags;
+ ITransaction __RPC_FAR *pTransaction;
+ } STGOPEN;
+
+typedef struct tagSTATDIR
+ {
+ WCHAR __RPC_FAR *pwcsName;
+ STGFMT stgfmt;
+ DWORD grfAttrs;
+ ULARGE_INTEGER cbSize;
+ FILETIME mtime;
+ FILETIME atime;
+ FILETIME ctime;
+ DWORD grfMode;
+ CLSID clsid;
+ DWORD grfStateBits;
+ } STATDIR;
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0081_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0081_v0_0_s_ifspec;
+
+#ifndef __IDirectory_INTERFACE_DEFINED__
+#define __IDirectory_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDirectory
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IDirectory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDirectory : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT __stdcall CreateElement(
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ STGCREATE __RPC_FAR *pStgCreate,
+ /* [in] */ STGOPEN __RPC_FAR *pStgOpen,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppObjectOpen) = 0;
+
+ virtual /* [local] */ HRESULT __stdcall OpenElement(
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ STGOPEN __RPC_FAR *pStgOpen,
+ /* [in] */ REFIID riid,
+ /* [out] */ STGFMT __RPC_FAR *pStgfmt,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppObjectOpen) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MoveElement(
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IDirectory __RPC_FAR *pdirDest,
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsNewName,
+ /* [in] */ DWORD grfFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CommitDirectory(
+ /* [in] */ DWORD grfCommitFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RevertDirectory( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeleteElement(
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTimes(
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ const FILETIME __RPC_FAR *pctime,
+ /* [unique][in] */ const FILETIME __RPC_FAR *patime,
+ /* [unique][in] */ const FILETIME __RPC_FAR *pmtime) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDirectoryClass(
+ /* [in] */ REFCLSID clsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAttributes(
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfAttrs) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StatElement(
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [out] */ STATDIR __RPC_FAR *pstatdir,
+ /* [in] */ DWORD grfStatFlag) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumDirectoryElements(
+ /* [out] */ IEnumSTATDIR __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDirectoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDirectory __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDirectory __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *CreateElement )(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ STGCREATE __RPC_FAR *pStgCreate,
+ /* [in] */ STGOPEN __RPC_FAR *pStgOpen,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppObjectOpen);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *OpenElement )(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ STGOPEN __RPC_FAR *pStgOpen,
+ /* [in] */ REFIID riid,
+ /* [out] */ STGFMT __RPC_FAR *pStgfmt,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppObjectOpen);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *MoveElement )(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IDirectory __RPC_FAR *pdirDest,
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsNewName,
+ /* [in] */ DWORD grfFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CommitDirectory )(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RevertDirectory )(
+ IDirectory __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeleteElement )(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTimes )(
+ IDirectory __RPC_FAR * This,
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ const FILETIME __RPC_FAR *pctime,
+ /* [unique][in] */ const FILETIME __RPC_FAR *patime,
+ /* [unique][in] */ const FILETIME __RPC_FAR *pmtime);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDirectoryClass )(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ REFCLSID clsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAttributes )(
+ IDirectory __RPC_FAR * This,
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfAttrs);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *StatElement )(
+ IDirectory __RPC_FAR * This,
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [out] */ STATDIR __RPC_FAR *pstatdir,
+ /* [in] */ DWORD grfStatFlag);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumDirectoryElements )(
+ IDirectory __RPC_FAR * This,
+ /* [out] */ IEnumSTATDIR __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IDirectoryVtbl;
+
+ interface IDirectory
+ {
+ CONST_VTBL struct IDirectoryVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDirectory_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDirectory_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDirectory_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDirectory_CreateElement(This,pwcsName,pStgCreate,pStgOpen,riid,ppObjectOpen) \
+ (This)->lpVtbl -> CreateElement(This,pwcsName,pStgCreate,pStgOpen,riid,ppObjectOpen)
+
+#define IDirectory_OpenElement(This,pwcsName,pStgOpen,riid,pStgfmt,ppObjectOpen) \
+ (This)->lpVtbl -> OpenElement(This,pwcsName,pStgOpen,riid,pStgfmt,ppObjectOpen)
+
+#define IDirectory_MoveElement(This,pwcsName,pdirDest,pwcsNewName,grfFlags) \
+ (This)->lpVtbl -> MoveElement(This,pwcsName,pdirDest,pwcsNewName,grfFlags)
+
+#define IDirectory_CommitDirectory(This,grfCommitFlags) \
+ (This)->lpVtbl -> CommitDirectory(This,grfCommitFlags)
+
+#define IDirectory_RevertDirectory(This) \
+ (This)->lpVtbl -> RevertDirectory(This)
+
+#define IDirectory_DeleteElement(This,pwcsName) \
+ (This)->lpVtbl -> DeleteElement(This,pwcsName)
+
+#define IDirectory_SetTimes(This,pwcsName,pctime,patime,pmtime) \
+ (This)->lpVtbl -> SetTimes(This,pwcsName,pctime,patime,pmtime)
+
+#define IDirectory_SetDirectoryClass(This,clsid) \
+ (This)->lpVtbl -> SetDirectoryClass(This,clsid)
+
+#define IDirectory_SetAttributes(This,pwcsName,grfAttrs) \
+ (This)->lpVtbl -> SetAttributes(This,pwcsName,grfAttrs)
+
+#define IDirectory_StatElement(This,pwcsName,pstatdir,grfStatFlag) \
+ (This)->lpVtbl -> StatElement(This,pwcsName,pstatdir,grfStatFlag)
+
+#define IDirectory_EnumDirectoryElements(This,ppenum) \
+ (This)->lpVtbl -> EnumDirectoryElements(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT __stdcall IDirectory_RemoteCreateElement_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ STGCREATE __RPC_FAR *pStgCreate,
+ /* [in] */ STGOPEN __RPC_FAR *pStgOpen,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppObjectOpen);
+
+
+void __RPC_STUB IDirectory_RemoteCreateElement_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT __stdcall IDirectory_RemoteOpenElement_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ STGOPEN __RPC_FAR *pStgOpen,
+ /* [in] */ REFIID riid,
+ /* [out] */ STGFMT __RPC_FAR *pStgfmt,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppObjectOpen);
+
+
+void __RPC_STUB IDirectory_RemoteOpenElement_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDirectory_MoveElement_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ IDirectory __RPC_FAR *pdirDest,
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsNewName,
+ /* [in] */ DWORD grfFlags);
+
+
+void __RPC_STUB IDirectory_MoveElement_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDirectory_CommitDirectory_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+
+void __RPC_STUB IDirectory_CommitDirectory_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDirectory_RevertDirectory_Proxy(
+ IDirectory __RPC_FAR * This);
+
+
+void __RPC_STUB IDirectory_RevertDirectory_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDirectory_DeleteElement_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName);
+
+
+void __RPC_STUB IDirectory_DeleteElement_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDirectory_SetTimes_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [unique][in] */ const FILETIME __RPC_FAR *pctime,
+ /* [unique][in] */ const FILETIME __RPC_FAR *patime,
+ /* [unique][in] */ const FILETIME __RPC_FAR *pmtime);
+
+
+void __RPC_STUB IDirectory_SetTimes_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDirectory_SetDirectoryClass_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ REFCLSID clsid);
+
+
+void __RPC_STUB IDirectory_SetDirectoryClass_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDirectory_SetAttributes_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ DWORD grfAttrs);
+
+
+void __RPC_STUB IDirectory_SetAttributes_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDirectory_StatElement_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [unique][in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [out] */ STATDIR __RPC_FAR *pstatdir,
+ /* [in] */ DWORD grfStatFlag);
+
+
+void __RPC_STUB IDirectory_StatElement_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDirectory_EnumDirectoryElements_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [out] */ IEnumSTATDIR __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IDirectory_EnumDirectoryElements_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDirectory_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumSTATDIR_INTERFACE_DEFINED__
+#define __IEnumSTATDIR_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumSTATDIR
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IEnumSTATDIR;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumSTATDIR : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT __stdcall Next(
+ /* [in] */ ULONG celt,
+ /* [in] */ STATDIR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumSTATDIR __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumSTATDIRVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumSTATDIR __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumSTATDIR __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumSTATDIR __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *Next )(
+ IEnumSTATDIR __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [in] */ STATDIR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumSTATDIR __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumSTATDIR __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumSTATDIR __RPC_FAR * This,
+ /* [out] */ IEnumSTATDIR __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumSTATDIRVtbl;
+
+ interface IEnumSTATDIR
+ {
+ CONST_VTBL struct IEnumSTATDIRVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumSTATDIR_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumSTATDIR_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumSTATDIR_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumSTATDIR_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumSTATDIR_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumSTATDIR_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumSTATDIR_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT __stdcall IEnumSTATDIR_RemoteNext_Proxy(
+ IEnumSTATDIR __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDIR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumSTATDIR_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATDIR_Skip_Proxy(
+ IEnumSTATDIR __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumSTATDIR_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATDIR_Reset_Proxy(
+ IEnumSTATDIR __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumSTATDIR_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumSTATDIR_Clone_Proxy(
+ IEnumSTATDIR __RPC_FAR * This,
+ /* [out] */ IEnumSTATDIR __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumSTATDIR_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumSTATDIR_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMultiplePropertyAccess_INTERFACE_DEFINED__
+#define __IMultiplePropertyAccess_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IMultiplePropertyAccess
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IMultiplePropertyAccess;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IMultiplePropertyAccess : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetIDsOfProperties(
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ ULONG cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ HRESULT __RPC_FAR *rghresult,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgdispid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMultiple(
+ /* [size_is][in] */ DISPID __RPC_FAR *rgdispidMembers,
+ /* [in] */ ULONG cMembers,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ BOOL fAtomic,
+ /* [size_is][out] */ VARIANT __RPC_FAR *rgvarValues,
+ /* [size_is][out] */ HRESULT __RPC_FAR *rghresult) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PutMultiple(
+ /* [size_is][in] */ DISPID __RPC_FAR *rgdispidMembers,
+ /* [size_is][in] */ USHORT __RPC_FAR *rgusFlags,
+ /* [in] */ ULONG cMembers,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ BOOL fAtomic,
+ /* [size_is][in] */ VARIANT __RPC_FAR *rgvarValues,
+ /* [size_is][out] */ HRESULT __RPC_FAR *rghresult) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IMultiplePropertyAccessVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IMultiplePropertyAccess __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IMultiplePropertyAccess __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IMultiplePropertyAccess __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfProperties )(
+ IMultiplePropertyAccess __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ ULONG cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ HRESULT __RPC_FAR *rghresult,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgdispid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMultiple )(
+ IMultiplePropertyAccess __RPC_FAR * This,
+ /* [size_is][in] */ DISPID __RPC_FAR *rgdispidMembers,
+ /* [in] */ ULONG cMembers,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ BOOL fAtomic,
+ /* [size_is][out] */ VARIANT __RPC_FAR *rgvarValues,
+ /* [size_is][out] */ HRESULT __RPC_FAR *rghresult);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PutMultiple )(
+ IMultiplePropertyAccess __RPC_FAR * This,
+ /* [size_is][in] */ DISPID __RPC_FAR *rgdispidMembers,
+ /* [size_is][in] */ USHORT __RPC_FAR *rgusFlags,
+ /* [in] */ ULONG cMembers,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ BOOL fAtomic,
+ /* [size_is][in] */ VARIANT __RPC_FAR *rgvarValues,
+ /* [size_is][out] */ HRESULT __RPC_FAR *rghresult);
+
+ END_INTERFACE
+ } IMultiplePropertyAccessVtbl;
+
+ interface IMultiplePropertyAccess
+ {
+ CONST_VTBL struct IMultiplePropertyAccessVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IMultiplePropertyAccess_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IMultiplePropertyAccess_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IMultiplePropertyAccess_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IMultiplePropertyAccess_GetIDsOfProperties(This,riid,rgszNames,cNames,lcid,rghresult,rgdispid) \
+ (This)->lpVtbl -> GetIDsOfProperties(This,riid,rgszNames,cNames,lcid,rghresult,rgdispid)
+
+#define IMultiplePropertyAccess_GetMultiple(This,rgdispidMembers,cMembers,riid,lcid,fAtomic,rgvarValues,rghresult) \
+ (This)->lpVtbl -> GetMultiple(This,rgdispidMembers,cMembers,riid,lcid,fAtomic,rgvarValues,rghresult)
+
+#define IMultiplePropertyAccess_PutMultiple(This,rgdispidMembers,rgusFlags,cMembers,riid,lcid,fAtomic,rgvarValues,rghresult) \
+ (This)->lpVtbl -> PutMultiple(This,rgdispidMembers,rgusFlags,cMembers,riid,lcid,fAtomic,rgvarValues,rghresult)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IMultiplePropertyAccess_GetIDsOfProperties_Proxy(
+ IMultiplePropertyAccess __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
+ /* [in] */ ULONG cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ HRESULT __RPC_FAR *rghresult,
+ /* [size_is][out] */ DISPID __RPC_FAR *rgdispid);
+
+
+void __RPC_STUB IMultiplePropertyAccess_GetIDsOfProperties_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMultiplePropertyAccess_GetMultiple_Proxy(
+ IMultiplePropertyAccess __RPC_FAR * This,
+ /* [size_is][in] */ DISPID __RPC_FAR *rgdispidMembers,
+ /* [in] */ ULONG cMembers,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ BOOL fAtomic,
+ /* [size_is][out] */ VARIANT __RPC_FAR *rgvarValues,
+ /* [size_is][out] */ HRESULT __RPC_FAR *rghresult);
+
+
+void __RPC_STUB IMultiplePropertyAccess_GetMultiple_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IMultiplePropertyAccess_PutMultiple_Proxy(
+ IMultiplePropertyAccess __RPC_FAR * This,
+ /* [size_is][in] */ DISPID __RPC_FAR *rgdispidMembers,
+ /* [size_is][in] */ USHORT __RPC_FAR *rgusFlags,
+ /* [in] */ ULONG cMembers,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ BOOL fAtomic,
+ /* [size_is][in] */ VARIANT __RPC_FAR *rgvarValues,
+ /* [size_is][out] */ HRESULT __RPC_FAR *rghresult);
+
+
+void __RPC_STUB IMultiplePropertyAccess_PutMultiple_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IMultiplePropertyAccess_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0115
+ * at Fri Nov 15 09:42:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#if defined(_DCOM_) || defined(_CAIROSTG_)
+#include <olecairo.h>
+#endif // if defined(_DCOM_) || defined(_CAIROSTG_)
+#if !defined(_TAGFULLPROPSPEC_DEFINED_)
+#define _TAGFULLPROPSPEC_DEFINED_
+typedef struct tagFULLPROPSPEC
+ {
+ GUID guidPropSet;
+ PROPSPEC psProperty;
+ } FULLPROPSPEC;
+
+#endif // #if !defined(_TAGFULLPROPSPEC_DEFINED_)
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0115_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0115_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER HWND_UserSize( unsigned long __RPC_FAR *, unsigned long , HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+void __RPC_USER HWND_UserFree( unsigned long __RPC_FAR *, HWND __RPC_FAR * );
+
+unsigned long __RPC_USER STGMEDIUM_UserSize( unsigned long __RPC_FAR *, unsigned long , STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER STGMEDIUM_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+void __RPC_USER STGMEDIUM_UserFree( unsigned long __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+
+unsigned long __RPC_USER VARIANT_UserSize( unsigned long __RPC_FAR *, unsigned long , VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER VARIANT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, VARIANT __RPC_FAR * );
+void __RPC_USER VARIANT_UserFree( unsigned long __RPC_FAR *, VARIANT __RPC_FAR * );
+
+/* [local] */ HRESULT __stdcall IDirectory_CreateElement_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ STGCREATE __RPC_FAR *pStgCreate,
+ /* [in] */ STGOPEN __RPC_FAR *pStgOpen,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppObjectOpen);
+
+
+/* [call_as] */ HRESULT __stdcall IDirectory_CreateElement_Stub(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ STGCREATE __RPC_FAR *pStgCreate,
+ /* [in] */ STGOPEN __RPC_FAR *pStgOpen,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppObjectOpen);
+
+/* [local] */ HRESULT __stdcall IDirectory_OpenElement_Proxy(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ STGOPEN __RPC_FAR *pStgOpen,
+ /* [in] */ REFIID riid,
+ /* [out] */ STGFMT __RPC_FAR *pStgfmt,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppObjectOpen);
+
+
+/* [call_as] */ HRESULT __stdcall IDirectory_OpenElement_Stub(
+ IDirectory __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcsName,
+ /* [in] */ STGOPEN __RPC_FAR *pStgOpen,
+ /* [in] */ REFIID riid,
+ /* [out] */ STGFMT __RPC_FAR *pStgfmt,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppObjectOpen);
+
+/* [local] */ HRESULT __stdcall IEnumSTATDIR_Next_Proxy(
+ IEnumSTATDIR __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [in] */ STATDIR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT __stdcall IEnumSTATDIR_Next_Stub(
+ IEnumSTATDIR __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ STATDIR __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/oleguid.h b/public/sdk/inc/oleguid.h
new file mode 100644
index 000000000..9f276e443
--- /dev/null
+++ b/public/sdk/inc/oleguid.h
@@ -0,0 +1,80 @@
+/*****************************************************************************\
+* *
+* oleguid.h - Master definition of GUIDs for ole2.dll *
+* *
+* OLE Version 2.0 *
+* *
+* Copyright (c) 1992-1995, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+/* this file is the master definition of all public GUIDs specific to OLE
+ and is included in ole2.h.
+
+ NOTE: The second least significant byte of all of these GUIDs is 1.
+*/
+
+
+DEFINE_OLEGUID(IID_IEnumUnknown, 0x00000100, 0, 0);
+DEFINE_OLEGUID(IID_IEnumString, 0x00000101, 0, 0);
+DEFINE_OLEGUID(IID_IEnumMoniker, 0x00000102, 0, 0);
+DEFINE_OLEGUID(IID_IEnumFORMATETC, 0x00000103, 0, 0);
+DEFINE_OLEGUID(IID_IEnumOLEVERB, 0x00000104, 0, 0);
+DEFINE_OLEGUID(IID_IEnumSTATDATA, 0x00000105, 0, 0);
+
+DEFINE_OLEGUID(IID_IEnumGeneric, 0x00000106, 0, 0);
+DEFINE_OLEGUID(IID_IEnumHolder, 0x00000107, 0, 0);
+DEFINE_OLEGUID(IID_IEnumCallback, 0x00000108, 0, 0);
+
+DEFINE_OLEGUID(IID_IPersistStream, 0x00000109, 0, 0);
+DEFINE_OLEGUID(IID_IPersistStorage, 0x0000010a, 0, 0);
+DEFINE_OLEGUID(IID_IPersistFile, 0x0000010b, 0, 0);
+DEFINE_OLEGUID(IID_IPersist, 0x0000010c, 0, 0);
+
+DEFINE_OLEGUID(IID_IViewObject, 0x0000010d, 0, 0);
+DEFINE_OLEGUID(IID_IDataObject, 0x0000010e, 0, 0);
+DEFINE_OLEGUID(IID_IAdviseSink, 0x0000010f, 0, 0);
+DEFINE_OLEGUID(IID_IDataAdviseHolder, 0x00000110, 0, 0);
+DEFINE_OLEGUID(IID_IOleAdviseHolder, 0x00000111, 0, 0);
+
+DEFINE_OLEGUID(IID_IOleObject, 0x00000112, 0, 0);
+DEFINE_OLEGUID(IID_IOleInPlaceObject, 0x00000113, 0, 0);
+DEFINE_OLEGUID(IID_IOleWindow, 0x00000114, 0, 0);
+DEFINE_OLEGUID(IID_IOleInPlaceUIWindow, 0x00000115, 0, 0);
+DEFINE_OLEGUID(IID_IOleInPlaceFrame, 0x00000116, 0, 0);
+DEFINE_OLEGUID(IID_IOleInPlaceActiveObject, 0x00000117, 0, 0);
+
+DEFINE_OLEGUID(IID_IOleClientSite, 0x00000118, 0, 0);
+DEFINE_OLEGUID(IID_IOleInPlaceSite, 0x00000119, 0, 0);
+
+DEFINE_OLEGUID(IID_IParseDisplayName, 0x0000011a, 0, 0);
+DEFINE_OLEGUID(IID_IOleContainer, 0x0000011b, 0, 0);
+DEFINE_OLEGUID(IID_IOleItemContainer, 0x0000011c, 0, 0);
+
+DEFINE_OLEGUID(IID_IOleLink, 0x0000011d, 0, 0);
+DEFINE_OLEGUID(IID_IOleCache, 0x0000011e, 0, 0);
+DEFINE_OLEGUID(IID_IOleManager, 0x0000011f, 0, 0); // unused
+DEFINE_OLEGUID(IID_IOlePresObj, 0x00000120, 0, 0);
+
+DEFINE_OLEGUID(IID_IDropSource, 0x00000121, 0, 0);
+DEFINE_OLEGUID(IID_IDropTarget, 0x00000122, 0, 0);
+
+DEFINE_OLEGUID(IID_IDebug, 0x00000123, 0, 0);
+DEFINE_OLEGUID(IID_IDebugStream, 0x00000124, 0, 0);
+
+DEFINE_OLEGUID(IID_IAdviseSink2, 0x00000125, 0, 0);
+
+DEFINE_OLEGUID(IID_IRunnableObject, 0x00000126, 0, 0);
+
+DEFINE_OLEGUID(IID_IViewObject2, 0x00000127, 0, 0);
+DEFINE_OLEGUID(IID_IOleCache2, 0x00000128, 0, 0);
+DEFINE_OLEGUID(IID_IOleCacheControl, 0x00000129, 0, 0);
+
+/* NOTE: LSB values 0x27 through 0xff are reserved */
+
+
+/* GUIDs defined in OLE's private range */
+DEFINE_OLEGUID(CLSID_Picture_Metafile, 0x00000315, 0, 0);
+DEFINE_OLEGUID(CLSID_Picture_Dib, 0x00000316, 0, 0);
+
+
diff --git a/public/sdk/inc/oleidl.h b/public/sdk/inc/oleidl.h
new file mode 100644
index 000000000..699f2651a
--- /dev/null
+++ b/public/sdk/inc/oleidl.h
@@ -0,0 +1,5044 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:36:25 1996
+ */
+/* Compiler settings for oleidl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __oleidl_h__
+#define __oleidl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IOleAdviseHolder_FWD_DEFINED__
+#define __IOleAdviseHolder_FWD_DEFINED__
+typedef interface IOleAdviseHolder IOleAdviseHolder;
+#endif /* __IOleAdviseHolder_FWD_DEFINED__ */
+
+
+#ifndef __IOleCache_FWD_DEFINED__
+#define __IOleCache_FWD_DEFINED__
+typedef interface IOleCache IOleCache;
+#endif /* __IOleCache_FWD_DEFINED__ */
+
+
+#ifndef __IOleCache2_FWD_DEFINED__
+#define __IOleCache2_FWD_DEFINED__
+typedef interface IOleCache2 IOleCache2;
+#endif /* __IOleCache2_FWD_DEFINED__ */
+
+
+#ifndef __IOleCacheControl_FWD_DEFINED__
+#define __IOleCacheControl_FWD_DEFINED__
+typedef interface IOleCacheControl IOleCacheControl;
+#endif /* __IOleCacheControl_FWD_DEFINED__ */
+
+
+#ifndef __IParseDisplayName_FWD_DEFINED__
+#define __IParseDisplayName_FWD_DEFINED__
+typedef interface IParseDisplayName IParseDisplayName;
+#endif /* __IParseDisplayName_FWD_DEFINED__ */
+
+
+#ifndef __IOleContainer_FWD_DEFINED__
+#define __IOleContainer_FWD_DEFINED__
+typedef interface IOleContainer IOleContainer;
+#endif /* __IOleContainer_FWD_DEFINED__ */
+
+
+#ifndef __IOleClientSite_FWD_DEFINED__
+#define __IOleClientSite_FWD_DEFINED__
+typedef interface IOleClientSite IOleClientSite;
+#endif /* __IOleClientSite_FWD_DEFINED__ */
+
+
+#ifndef __IOleObject_FWD_DEFINED__
+#define __IOleObject_FWD_DEFINED__
+typedef interface IOleObject IOleObject;
+#endif /* __IOleObject_FWD_DEFINED__ */
+
+
+#ifndef __IOleWindow_FWD_DEFINED__
+#define __IOleWindow_FWD_DEFINED__
+typedef interface IOleWindow IOleWindow;
+#endif /* __IOleWindow_FWD_DEFINED__ */
+
+
+#ifndef __IOleLink_FWD_DEFINED__
+#define __IOleLink_FWD_DEFINED__
+typedef interface IOleLink IOleLink;
+#endif /* __IOleLink_FWD_DEFINED__ */
+
+
+#ifndef __IOleItemContainer_FWD_DEFINED__
+#define __IOleItemContainer_FWD_DEFINED__
+typedef interface IOleItemContainer IOleItemContainer;
+#endif /* __IOleItemContainer_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceUIWindow_FWD_DEFINED__
+#define __IOleInPlaceUIWindow_FWD_DEFINED__
+typedef interface IOleInPlaceUIWindow IOleInPlaceUIWindow;
+#endif /* __IOleInPlaceUIWindow_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceActiveObject_FWD_DEFINED__
+#define __IOleInPlaceActiveObject_FWD_DEFINED__
+typedef interface IOleInPlaceActiveObject IOleInPlaceActiveObject;
+#endif /* __IOleInPlaceActiveObject_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceFrame_FWD_DEFINED__
+#define __IOleInPlaceFrame_FWD_DEFINED__
+typedef interface IOleInPlaceFrame IOleInPlaceFrame;
+#endif /* __IOleInPlaceFrame_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceObject_FWD_DEFINED__
+#define __IOleInPlaceObject_FWD_DEFINED__
+typedef interface IOleInPlaceObject IOleInPlaceObject;
+#endif /* __IOleInPlaceObject_FWD_DEFINED__ */
+
+
+#ifndef __IOleInPlaceSite_FWD_DEFINED__
+#define __IOleInPlaceSite_FWD_DEFINED__
+typedef interface IOleInPlaceSite IOleInPlaceSite;
+#endif /* __IOleInPlaceSite_FWD_DEFINED__ */
+
+
+#ifndef __IContinue_FWD_DEFINED__
+#define __IContinue_FWD_DEFINED__
+typedef interface IContinue IContinue;
+#endif /* __IContinue_FWD_DEFINED__ */
+
+
+#ifndef __IViewObject_FWD_DEFINED__
+#define __IViewObject_FWD_DEFINED__
+typedef interface IViewObject IViewObject;
+#endif /* __IViewObject_FWD_DEFINED__ */
+
+
+#ifndef __IViewObject2_FWD_DEFINED__
+#define __IViewObject2_FWD_DEFINED__
+typedef interface IViewObject2 IViewObject2;
+#endif /* __IViewObject2_FWD_DEFINED__ */
+
+
+#ifndef __IDropSource_FWD_DEFINED__
+#define __IDropSource_FWD_DEFINED__
+typedef interface IDropSource IDropSource;
+#endif /* __IDropSource_FWD_DEFINED__ */
+
+
+#ifndef __IDropTarget_FWD_DEFINED__
+#define __IDropTarget_FWD_DEFINED__
+typedef interface IDropTarget IDropTarget;
+#endif /* __IDropTarget_FWD_DEFINED__ */
+
+
+#ifndef __IEnumOLEVERB_FWD_DEFINED__
+#define __IEnumOLEVERB_FWD_DEFINED__
+typedef interface IEnumOLEVERB IEnumOLEVERB;
+#endif /* __IEnumOLEVERB_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IOleAdviseHolder_INTERFACE_DEFINED__
+#define __IOleAdviseHolder_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleAdviseHolder
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IOleAdviseHolder __RPC_FAR *LPOLEADVISEHOLDER;
+
+
+EXTERN_C const IID IID_IOleAdviseHolder;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleAdviseHolder : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Advise(
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unadvise(
+ /* [in] */ DWORD dwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendOnRename(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendOnSave( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SendOnClose( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleAdviseHolderVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleAdviseHolder __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleAdviseHolder __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Advise )(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unadvise )(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumAdvise )(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SendOnRename )(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SendOnSave )(
+ IOleAdviseHolder __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SendOnClose )(
+ IOleAdviseHolder __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleAdviseHolderVtbl;
+
+ interface IOleAdviseHolder
+ {
+ CONST_VTBL struct IOleAdviseHolderVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleAdviseHolder_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleAdviseHolder_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleAdviseHolder_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleAdviseHolder_Advise(This,pAdvise,pdwConnection) \
+ (This)->lpVtbl -> Advise(This,pAdvise,pdwConnection)
+
+#define IOleAdviseHolder_Unadvise(This,dwConnection) \
+ (This)->lpVtbl -> Unadvise(This,dwConnection)
+
+#define IOleAdviseHolder_EnumAdvise(This,ppenumAdvise) \
+ (This)->lpVtbl -> EnumAdvise(This,ppenumAdvise)
+
+#define IOleAdviseHolder_SendOnRename(This,pmk) \
+ (This)->lpVtbl -> SendOnRename(This,pmk)
+
+#define IOleAdviseHolder_SendOnSave(This) \
+ (This)->lpVtbl -> SendOnSave(This)
+
+#define IOleAdviseHolder_SendOnClose(This) \
+ (This)->lpVtbl -> SendOnClose(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_Advise_Proxy(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvise,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+
+void __RPC_STUB IOleAdviseHolder_Advise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_Unadvise_Proxy(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+
+void __RPC_STUB IOleAdviseHolder_Unadvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_EnumAdvise_Proxy(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+
+void __RPC_STUB IOleAdviseHolder_EnumAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_SendOnRename_Proxy(
+ IOleAdviseHolder __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+
+void __RPC_STUB IOleAdviseHolder_SendOnRename_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_SendOnSave_Proxy(
+ IOleAdviseHolder __RPC_FAR * This);
+
+
+void __RPC_STUB IOleAdviseHolder_SendOnSave_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleAdviseHolder_SendOnClose_Proxy(
+ IOleAdviseHolder __RPC_FAR * This);
+
+
+void __RPC_STUB IOleAdviseHolder_SendOnClose_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleAdviseHolder_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleCache_INTERFACE_DEFINED__
+#define __IOleCache_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleCache
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleCache __RPC_FAR *LPOLECACHE;
+
+
+EXTERN_C const IID IID_IOleCache;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleCache : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Cache(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Uncache(
+ /* [in] */ DWORD dwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumCache(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumSTATDATA) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitCache(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetData(
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleCacheVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleCache __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleCache __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleCache __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Cache )(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Uncache )(
+ IOleCache __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumCache )(
+ IOleCache __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumSTATDATA);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitCache )(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetData )(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+ END_INTERFACE
+ } IOleCacheVtbl;
+
+ interface IOleCache
+ {
+ CONST_VTBL struct IOleCacheVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleCache_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleCache_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleCache_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleCache_Cache(This,pformatetc,advf,pdwConnection) \
+ (This)->lpVtbl -> Cache(This,pformatetc,advf,pdwConnection)
+
+#define IOleCache_Uncache(This,dwConnection) \
+ (This)->lpVtbl -> Uncache(This,dwConnection)
+
+#define IOleCache_EnumCache(This,ppenumSTATDATA) \
+ (This)->lpVtbl -> EnumCache(This,ppenumSTATDATA)
+
+#define IOleCache_InitCache(This,pDataObject) \
+ (This)->lpVtbl -> InitCache(This,pDataObject)
+
+#define IOleCache_SetData(This,pformatetc,pmedium,fRelease) \
+ (This)->lpVtbl -> SetData(This,pformatetc,pmedium,fRelease)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleCache_Cache_Proxy(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+
+void __RPC_STUB IOleCache_Cache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCache_Uncache_Proxy(
+ IOleCache __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+
+void __RPC_STUB IOleCache_Uncache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCache_EnumCache_Proxy(
+ IOleCache __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumSTATDATA);
+
+
+void __RPC_STUB IOleCache_EnumCache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCache_InitCache_Proxy(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject);
+
+
+void __RPC_STUB IOleCache_InitCache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCache_SetData_Proxy(
+ IOleCache __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+
+void __RPC_STUB IOleCache_SetData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleCache_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleCache2_INTERFACE_DEFINED__
+#define __IOleCache2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleCache2
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleCache2 __RPC_FAR *LPOLECACHE2;
+
+#define UPDFCACHE_NODATACACHE ( 0x1 )
+
+#define UPDFCACHE_ONSAVECACHE ( 0x2 )
+
+#define UPDFCACHE_ONSTOPCACHE ( 0x4 )
+
+#define UPDFCACHE_NORMALCACHE ( 0x8 )
+
+#define UPDFCACHE_IFBLANK ( 0x10 )
+
+#define UPDFCACHE_ONLYIFBLANK ( 0x80000000 )
+
+#define UPDFCACHE_IFBLANKORONSAVECACHE ( UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE )
+
+#define UPDFCACHE_ALL ( ( DWORD )~UPDFCACHE_ONLYIFBLANK )
+
+#define UPDFCACHE_ALLBUTNODATACACHE ( UPDFCACHE_ALL & ( DWORD )~UPDFCACHE_NODATACACHE )
+
+typedef /* [v1_enum] */
+enum tagDISCARDCACHE
+ { DISCARDCACHE_SAVEIFDIRTY = 0,
+ DISCARDCACHE_NOSAVE = 1
+ } DISCARDCACHE;
+
+
+EXTERN_C const IID IID_IOleCache2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleCache2 : public IOleCache
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE UpdateCache(
+ /* [in] */ LPDATAOBJECT pDataObject,
+ /* [in] */ DWORD grfUpdf,
+ /* [in] */ LPVOID pReserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DiscardCache(
+ /* [in] */ DWORD dwDiscardOptions) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleCache2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleCache2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleCache2 __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Cache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ DWORD advf,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Uncache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumCache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumSTATDATA);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitCache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetData )(
+ IOleCache2 __RPC_FAR * This,
+ /* [unique][in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [unique][in] */ STGMEDIUM __RPC_FAR *pmedium,
+ /* [in] */ BOOL fRelease);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UpdateCache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ LPDATAOBJECT pDataObject,
+ /* [in] */ DWORD grfUpdf,
+ /* [in] */ LPVOID pReserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DiscardCache )(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDiscardOptions);
+
+ END_INTERFACE
+ } IOleCache2Vtbl;
+
+ interface IOleCache2
+ {
+ CONST_VTBL struct IOleCache2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleCache2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleCache2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleCache2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleCache2_Cache(This,pformatetc,advf,pdwConnection) \
+ (This)->lpVtbl -> Cache(This,pformatetc,advf,pdwConnection)
+
+#define IOleCache2_Uncache(This,dwConnection) \
+ (This)->lpVtbl -> Uncache(This,dwConnection)
+
+#define IOleCache2_EnumCache(This,ppenumSTATDATA) \
+ (This)->lpVtbl -> EnumCache(This,ppenumSTATDATA)
+
+#define IOleCache2_InitCache(This,pDataObject) \
+ (This)->lpVtbl -> InitCache(This,pDataObject)
+
+#define IOleCache2_SetData(This,pformatetc,pmedium,fRelease) \
+ (This)->lpVtbl -> SetData(This,pformatetc,pmedium,fRelease)
+
+
+#define IOleCache2_UpdateCache(This,pDataObject,grfUpdf,pReserved) \
+ (This)->lpVtbl -> UpdateCache(This,pDataObject,grfUpdf,pReserved)
+
+#define IOleCache2_DiscardCache(This,dwDiscardOptions) \
+ (This)->lpVtbl -> DiscardCache(This,dwDiscardOptions)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleCache2_RemoteUpdateCache_Proxy(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ LPDATAOBJECT pDataObject,
+ /* [in] */ DWORD grfUpdf,
+ /* [in] */ DWORD pReserved);
+
+
+void __RPC_STUB IOleCache2_RemoteUpdateCache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCache2_DiscardCache_Proxy(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDiscardOptions);
+
+
+void __RPC_STUB IOleCache2_DiscardCache_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleCache2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleCacheControl_INTERFACE_DEFINED__
+#define __IOleCacheControl_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleCacheControl
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IOleCacheControl __RPC_FAR *LPOLECACHECONTROL;
+
+
+EXTERN_C const IID IID_IOleCacheControl;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleCacheControl : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnRun(
+ LPDATAOBJECT pDataObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnStop( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleCacheControlVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleCacheControl __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleCacheControl __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleCacheControl __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnRun )(
+ IOleCacheControl __RPC_FAR * This,
+ LPDATAOBJECT pDataObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnStop )(
+ IOleCacheControl __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleCacheControlVtbl;
+
+ interface IOleCacheControl
+ {
+ CONST_VTBL struct IOleCacheControlVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleCacheControl_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleCacheControl_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleCacheControl_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleCacheControl_OnRun(This,pDataObject) \
+ (This)->lpVtbl -> OnRun(This,pDataObject)
+
+#define IOleCacheControl_OnStop(This) \
+ (This)->lpVtbl -> OnStop(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleCacheControl_OnRun_Proxy(
+ IOleCacheControl __RPC_FAR * This,
+ LPDATAOBJECT pDataObject);
+
+
+void __RPC_STUB IOleCacheControl_OnRun_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleCacheControl_OnStop_Proxy(
+ IOleCacheControl __RPC_FAR * This);
+
+
+void __RPC_STUB IOleCacheControl_OnStop_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleCacheControl_INTERFACE_DEFINED__ */
+
+
+#ifndef __IParseDisplayName_INTERFACE_DEFINED__
+#define __IParseDisplayName_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IParseDisplayName
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IParseDisplayName __RPC_FAR *LPPARSEDISPLAYNAME;
+
+
+EXTERN_C const IID IID_IParseDisplayName;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IParseDisplayName : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IParseDisplayNameVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IParseDisplayName __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IParseDisplayName __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IParseDisplayName __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ParseDisplayName )(
+ IParseDisplayName __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+ END_INTERFACE
+ } IParseDisplayNameVtbl;
+
+ interface IParseDisplayName
+ {
+ CONST_VTBL struct IParseDisplayNameVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IParseDisplayName_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IParseDisplayName_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IParseDisplayName_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IParseDisplayName_ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut) \
+ (This)->lpVtbl -> ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IParseDisplayName_ParseDisplayName_Proxy(
+ IParseDisplayName __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+
+void __RPC_STUB IParseDisplayName_ParseDisplayName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IParseDisplayName_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleContainer_INTERFACE_DEFINED__
+#define __IOleContainer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleContainer
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleContainer __RPC_FAR *LPOLECONTAINER;
+
+
+EXTERN_C const IID IID_IOleContainer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleContainer : public IParseDisplayName
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE EnumObjects(
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockContainer(
+ /* [in] */ BOOL fLock) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleContainerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleContainer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleContainer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleContainer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ParseDisplayName )(
+ IOleContainer __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumObjects )(
+ IOleContainer __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockContainer )(
+ IOleContainer __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+ END_INTERFACE
+ } IOleContainerVtbl;
+
+ interface IOleContainer
+ {
+ CONST_VTBL struct IOleContainerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleContainer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleContainer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleContainer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleContainer_ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut) \
+ (This)->lpVtbl -> ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut)
+
+
+#define IOleContainer_EnumObjects(This,grfFlags,ppenum) \
+ (This)->lpVtbl -> EnumObjects(This,grfFlags,ppenum)
+
+#define IOleContainer_LockContainer(This,fLock) \
+ (This)->lpVtbl -> LockContainer(This,fLock)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleContainer_EnumObjects_Proxy(
+ IOleContainer __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IOleContainer_EnumObjects_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleContainer_LockContainer_Proxy(
+ IOleContainer __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+
+void __RPC_STUB IOleContainer_LockContainer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleContainer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleClientSite_INTERFACE_DEFINED__
+#define __IOleClientSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleClientSite
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleClientSite __RPC_FAR *LPOLECLIENTSITE;
+
+
+EXTERN_C const IID IID_IOleClientSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleClientSite : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SaveObject( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetContainer(
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ShowObject( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnShowWindow(
+ /* [in] */ BOOL fShow) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleClientSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleClientSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleClientSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleClientSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveObject )(
+ IOleClientSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMoniker )(
+ IOleClientSite __RPC_FAR * This,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetContainer )(
+ IOleClientSite __RPC_FAR * This,
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ShowObject )(
+ IOleClientSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnShowWindow )(
+ IOleClientSite __RPC_FAR * This,
+ /* [in] */ BOOL fShow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestNewObjectLayout )(
+ IOleClientSite __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleClientSiteVtbl;
+
+ interface IOleClientSite
+ {
+ CONST_VTBL struct IOleClientSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleClientSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleClientSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleClientSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleClientSite_SaveObject(This) \
+ (This)->lpVtbl -> SaveObject(This)
+
+#define IOleClientSite_GetMoniker(This,dwAssign,dwWhichMoniker,ppmk) \
+ (This)->lpVtbl -> GetMoniker(This,dwAssign,dwWhichMoniker,ppmk)
+
+#define IOleClientSite_GetContainer(This,ppContainer) \
+ (This)->lpVtbl -> GetContainer(This,ppContainer)
+
+#define IOleClientSite_ShowObject(This) \
+ (This)->lpVtbl -> ShowObject(This)
+
+#define IOleClientSite_OnShowWindow(This,fShow) \
+ (This)->lpVtbl -> OnShowWindow(This,fShow)
+
+#define IOleClientSite_RequestNewObjectLayout(This) \
+ (This)->lpVtbl -> RequestNewObjectLayout(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_SaveObject_Proxy(
+ IOleClientSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleClientSite_SaveObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_GetMoniker_Proxy(
+ IOleClientSite __RPC_FAR * This,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IOleClientSite_GetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_GetContainer_Proxy(
+ IOleClientSite __RPC_FAR * This,
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer);
+
+
+void __RPC_STUB IOleClientSite_GetContainer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_ShowObject_Proxy(
+ IOleClientSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleClientSite_ShowObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_OnShowWindow_Proxy(
+ IOleClientSite __RPC_FAR * This,
+ /* [in] */ BOOL fShow);
+
+
+void __RPC_STUB IOleClientSite_OnShowWindow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleClientSite_RequestNewObjectLayout_Proxy(
+ IOleClientSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleClientSite_RequestNewObjectLayout_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleClientSite_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleObject_INTERFACE_DEFINED__
+#define __IOleObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleObject
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleObject __RPC_FAR *LPOLEOBJECT;
+
+typedef
+enum tagOLEGETMONIKER
+ { OLEGETMONIKER_ONLYIFTHERE = 1,
+ OLEGETMONIKER_FORCEASSIGN = 2,
+ OLEGETMONIKER_UNASSIGN = 3,
+ OLEGETMONIKER_TEMPFORUSER = 4
+ } OLEGETMONIKER;
+
+typedef
+enum tagOLEWHICHMK
+ { OLEWHICHMK_CONTAINER = 1,
+ OLEWHICHMK_OBJREL = 2,
+ OLEWHICHMK_OBJFULL = 3
+ } OLEWHICHMK;
+
+typedef
+enum tagUSERCLASSTYPE
+ { USERCLASSTYPE_FULL = 1,
+ USERCLASSTYPE_SHORT = 2,
+ USERCLASSTYPE_APPNAME = 3
+ } USERCLASSTYPE;
+
+typedef
+enum tagOLEMISC
+ { OLEMISC_RECOMPOSEONRESIZE = 0x1,
+ OLEMISC_ONLYICONIC = 0x2,
+ OLEMISC_INSERTNOTREPLACE = 0x4,
+ OLEMISC_STATIC = 0x8,
+ OLEMISC_CANTLINKINSIDE = 0x10,
+ OLEMISC_CANLINKBYOLE1 = 0x20,
+ OLEMISC_ISLINKOBJECT = 0x40,
+ OLEMISC_INSIDEOUT = 0x80,
+ OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
+ OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
+ OLEMISC_INVISIBLEATRUNTIME = 0x400,
+ OLEMISC_ALWAYSRUN = 0x800,
+ OLEMISC_ACTSLIKEBUTTON = 0x1000,
+ OLEMISC_ACTSLIKELABEL = 0x2000,
+ OLEMISC_NOUIACTIVATE = 0x4000,
+ OLEMISC_ALIGNABLE = 0x8000,
+ OLEMISC_SIMPLEFRAME = 0x10000,
+ OLEMISC_SETCLIENTSITEFIRST = 0x20000,
+ OLEMISC_IMEMODE = 0x40000,
+ OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
+ OLEMISC_WANTSTOMENUMERGE = 0x100000,
+ OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
+ } OLEMISC;
+
+typedef
+enum tagOLECLOSE
+ { OLECLOSE_SAVEIFDIRTY = 0,
+ OLECLOSE_NOSAVE = 1,
+ OLECLOSE_PROMPTSAVE = 2
+ } OLECLOSE;
+
+
+EXTERN_C const IID IID_IOleObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleObject : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetClientSite(
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pClientSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetClientSite(
+ /* [out] */ IOleClientSite __RPC_FAR *__RPC_FAR *ppClientSite) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetHostNames(
+ /* [in] */ LPCOLESTR szContainerApp,
+ /* [unique][in] */ LPCOLESTR szContainerObj) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Close(
+ /* [in] */ DWORD dwSaveOption) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMoniker(
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitFromData(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ BOOL fCreation,
+ /* [in] */ DWORD dwReserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetClipboardData(
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDataObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DoVerb(
+ /* [in] */ LONG iVerb,
+ /* [unique][in] */ LPMSG lpmsg,
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pActiveSite,
+ /* [in] */ LONG lindex,
+ /* [in] */ HWND hwndParent,
+ /* [unique][in] */ LPCRECT lprcPosRect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumVerbs(
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppEnumOleVerb) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Update( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsUpToDate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetUserClassID(
+ /* [out] */ CLSID __RPC_FAR *pClsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetUserType(
+ /* [in] */ DWORD dwFormOfType,
+ /* [out] */ LPOLESTR __RPC_FAR *pszUserType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetExtent(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ SIZEL __RPC_FAR *psizel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetExtent(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [out] */ SIZEL __RPC_FAR *psizel) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Advise(
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unadvise(
+ /* [in] */ DWORD dwConnection) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumAdvise(
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMiscStatus(
+ /* [in] */ DWORD dwAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetColorScheme(
+ /* [in] */ LOGPALETTE __RPC_FAR *pLogpal) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetClientSite )(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pClientSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClientSite )(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IOleClientSite __RPC_FAR *__RPC_FAR *ppClientSite);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetHostNames )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LPCOLESTR szContainerApp,
+ /* [unique][in] */ LPCOLESTR szContainerObj);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Close )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwSaveOption);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetMoniker )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMoniker )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitFromData )(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ BOOL fCreation,
+ /* [in] */ DWORD dwReserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClipboardData )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDataObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DoVerb )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LONG iVerb,
+ /* [unique][in] */ LPMSG lpmsg,
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pActiveSite,
+ /* [in] */ LONG lindex,
+ /* [in] */ HWND hwndParent,
+ /* [unique][in] */ LPCRECT lprcPosRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumVerbs )(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppEnumOleVerb);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Update )(
+ IOleObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsUpToDate )(
+ IOleObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetUserClassID )(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetUserType )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwFormOfType,
+ /* [out] */ LPOLESTR __RPC_FAR *pszUserType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetExtent )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ SIZEL __RPC_FAR *psizel);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetExtent )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [out] */ SIZEL __RPC_FAR *psizel);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Advise )(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unadvise )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumAdvise )(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMiscStatus )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetColorScheme )(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LOGPALETTE __RPC_FAR *pLogpal);
+
+ END_INTERFACE
+ } IOleObjectVtbl;
+
+ interface IOleObject
+ {
+ CONST_VTBL struct IOleObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleObject_SetClientSite(This,pClientSite) \
+ (This)->lpVtbl -> SetClientSite(This,pClientSite)
+
+#define IOleObject_GetClientSite(This,ppClientSite) \
+ (This)->lpVtbl -> GetClientSite(This,ppClientSite)
+
+#define IOleObject_SetHostNames(This,szContainerApp,szContainerObj) \
+ (This)->lpVtbl -> SetHostNames(This,szContainerApp,szContainerObj)
+
+#define IOleObject_Close(This,dwSaveOption) \
+ (This)->lpVtbl -> Close(This,dwSaveOption)
+
+#define IOleObject_SetMoniker(This,dwWhichMoniker,pmk) \
+ (This)->lpVtbl -> SetMoniker(This,dwWhichMoniker,pmk)
+
+#define IOleObject_GetMoniker(This,dwAssign,dwWhichMoniker,ppmk) \
+ (This)->lpVtbl -> GetMoniker(This,dwAssign,dwWhichMoniker,ppmk)
+
+#define IOleObject_InitFromData(This,pDataObject,fCreation,dwReserved) \
+ (This)->lpVtbl -> InitFromData(This,pDataObject,fCreation,dwReserved)
+
+#define IOleObject_GetClipboardData(This,dwReserved,ppDataObject) \
+ (This)->lpVtbl -> GetClipboardData(This,dwReserved,ppDataObject)
+
+#define IOleObject_DoVerb(This,iVerb,lpmsg,pActiveSite,lindex,hwndParent,lprcPosRect) \
+ (This)->lpVtbl -> DoVerb(This,iVerb,lpmsg,pActiveSite,lindex,hwndParent,lprcPosRect)
+
+#define IOleObject_EnumVerbs(This,ppEnumOleVerb) \
+ (This)->lpVtbl -> EnumVerbs(This,ppEnumOleVerb)
+
+#define IOleObject_Update(This) \
+ (This)->lpVtbl -> Update(This)
+
+#define IOleObject_IsUpToDate(This) \
+ (This)->lpVtbl -> IsUpToDate(This)
+
+#define IOleObject_GetUserClassID(This,pClsid) \
+ (This)->lpVtbl -> GetUserClassID(This,pClsid)
+
+#define IOleObject_GetUserType(This,dwFormOfType,pszUserType) \
+ (This)->lpVtbl -> GetUserType(This,dwFormOfType,pszUserType)
+
+#define IOleObject_SetExtent(This,dwDrawAspect,psizel) \
+ (This)->lpVtbl -> SetExtent(This,dwDrawAspect,psizel)
+
+#define IOleObject_GetExtent(This,dwDrawAspect,psizel) \
+ (This)->lpVtbl -> GetExtent(This,dwDrawAspect,psizel)
+
+#define IOleObject_Advise(This,pAdvSink,pdwConnection) \
+ (This)->lpVtbl -> Advise(This,pAdvSink,pdwConnection)
+
+#define IOleObject_Unadvise(This,dwConnection) \
+ (This)->lpVtbl -> Unadvise(This,dwConnection)
+
+#define IOleObject_EnumAdvise(This,ppenumAdvise) \
+ (This)->lpVtbl -> EnumAdvise(This,ppenumAdvise)
+
+#define IOleObject_GetMiscStatus(This,dwAspect,pdwStatus) \
+ (This)->lpVtbl -> GetMiscStatus(This,dwAspect,pdwStatus)
+
+#define IOleObject_SetColorScheme(This,pLogpal) \
+ (This)->lpVtbl -> SetColorScheme(This,pLogpal)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetClientSite_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pClientSite);
+
+
+void __RPC_STUB IOleObject_SetClientSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetClientSite_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IOleClientSite __RPC_FAR *__RPC_FAR *ppClientSite);
+
+
+void __RPC_STUB IOleObject_GetClientSite_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetHostNames_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LPCOLESTR szContainerApp,
+ /* [unique][in] */ LPCOLESTR szContainerObj);
+
+
+void __RPC_STUB IOleObject_SetHostNames_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_Close_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwSaveOption);
+
+
+void __RPC_STUB IOleObject_Close_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetMoniker_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk);
+
+
+void __RPC_STUB IOleObject_SetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetMoniker_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IOleObject_GetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_InitFromData_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObject,
+ /* [in] */ BOOL fCreation,
+ /* [in] */ DWORD dwReserved);
+
+
+void __RPC_STUB IOleObject_InitFromData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetClipboardData_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ IDataObject __RPC_FAR *__RPC_FAR *ppDataObject);
+
+
+void __RPC_STUB IOleObject_GetClipboardData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_DoVerb_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LONG iVerb,
+ /* [unique][in] */ LPMSG lpmsg,
+ /* [unique][in] */ IOleClientSite __RPC_FAR *pActiveSite,
+ /* [in] */ LONG lindex,
+ /* [in] */ HWND hwndParent,
+ /* [unique][in] */ LPCRECT lprcPosRect);
+
+
+void __RPC_STUB IOleObject_DoVerb_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_EnumVerbs_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppEnumOleVerb);
+
+
+void __RPC_STUB IOleObject_EnumVerbs_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_Update_Proxy(
+ IOleObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleObject_Update_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_IsUpToDate_Proxy(
+ IOleObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleObject_IsUpToDate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetUserClassID_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClsid);
+
+
+void __RPC_STUB IOleObject_GetUserClassID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetUserType_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwFormOfType,
+ /* [out] */ LPOLESTR __RPC_FAR *pszUserType);
+
+
+void __RPC_STUB IOleObject_GetUserType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetExtent_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ SIZEL __RPC_FAR *psizel);
+
+
+void __RPC_STUB IOleObject_SetExtent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetExtent_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [out] */ SIZEL __RPC_FAR *psizel);
+
+
+void __RPC_STUB IOleObject_GetExtent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_Advise_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink,
+ /* [out] */ DWORD __RPC_FAR *pdwConnection);
+
+
+void __RPC_STUB IOleObject_Advise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_Unadvise_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwConnection);
+
+
+void __RPC_STUB IOleObject_Unadvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_EnumAdvise_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [out] */ IEnumSTATDATA __RPC_FAR *__RPC_FAR *ppenumAdvise);
+
+
+void __RPC_STUB IOleObject_EnumAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_GetMiscStatus_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ DWORD dwAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+
+void __RPC_STUB IOleObject_GetMiscStatus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleObject_SetColorScheme_Proxy(
+ IOleObject __RPC_FAR * This,
+ /* [in] */ LOGPALETTE __RPC_FAR *pLogpal);
+
+
+void __RPC_STUB IOleObject_SetColorScheme_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOLETypes_INTERFACE_DEFINED__
+#define __IOLETypes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOLETypes
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][uuid] */
+
+
+typedef
+enum tagOLERENDER
+ { OLERENDER_NONE = 0,
+ OLERENDER_DRAW = 1,
+ OLERENDER_FORMAT = 2,
+ OLERENDER_ASIS = 3
+ } OLERENDER;
+
+typedef OLERENDER __RPC_FAR *LPOLERENDER;
+
+typedef struct tagOBJECTDESCRIPTOR
+ {
+ ULONG cbSize;
+ CLSID clsid;
+ DWORD dwDrawAspect;
+ SIZEL sizel;
+ POINTL pointl;
+ DWORD dwStatus;
+ DWORD dwFullUserTypeName;
+ DWORD dwSrcOfCopy;
+ } OBJECTDESCRIPTOR;
+
+typedef struct tagOBJECTDESCRIPTOR __RPC_FAR *POBJECTDESCRIPTOR;
+
+typedef struct tagOBJECTDESCRIPTOR __RPC_FAR *LPOBJECTDESCRIPTOR;
+
+typedef struct tagOBJECTDESCRIPTOR LINKSRCDESCRIPTOR;
+
+typedef struct tagOBJECTDESCRIPTOR __RPC_FAR *PLINKSRCDESCRIPTOR;
+
+typedef struct tagOBJECTDESCRIPTOR __RPC_FAR *LPLINKSRCDESCRIPTOR;
+
+
+
+extern RPC_IF_HANDLE IOLETypes_v0_0_c_ifspec;
+extern RPC_IF_HANDLE IOLETypes_v0_0_s_ifspec;
+#endif /* __IOLETypes_INTERFACE_DEFINED__ */
+
+#ifndef __IOleWindow_INTERFACE_DEFINED__
+#define __IOleWindow_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleWindow
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleWindow __RPC_FAR *LPOLEWINDOW;
+
+
+EXTERN_C const IID IID_IOleWindow;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleWindow : public IUnknown
+ {
+ public:
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetWindow(
+ /* [out] */ HWND __RPC_FAR *phwnd) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(
+ /* [in] */ BOOL fEnterMode) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleWindowVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleWindow __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleWindow __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleWindow __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleWindow __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleWindow __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ END_INTERFACE
+ } IOleWindowVtbl;
+
+ interface IOleWindow
+ {
+ CONST_VTBL struct IOleWindowVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleWindow_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleWindow_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleWindow_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleWindow_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleWindow_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleWindow_GetWindow_Proxy(
+ IOleWindow __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+
+void __RPC_STUB IOleWindow_GetWindow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleWindow_ContextSensitiveHelp_Proxy(
+ IOleWindow __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+
+void __RPC_STUB IOleWindow_ContextSensitiveHelp_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleWindow_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleLink_INTERFACE_DEFINED__
+#define __IOleLink_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleLink
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IOleLink __RPC_FAR *LPOLELINK;
+
+typedef
+enum tagOLEUPDATE
+ { OLEUPDATE_ALWAYS = 1,
+ OLEUPDATE_ONCALL = 3
+ } OLEUPDATE;
+
+typedef OLEUPDATE __RPC_FAR *LPOLEUPDATE;
+
+typedef OLEUPDATE __RPC_FAR *POLEUPDATE;
+
+typedef
+enum tagOLELINKBIND
+ { OLELINKBIND_EVENIFCLASSDIFF = 1
+ } OLELINKBIND;
+
+
+EXTERN_C const IID IID_IOleLink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleLink : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetUpdateOptions(
+ /* [in] */ DWORD dwUpdateOpt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetUpdateOptions(
+ /* [out] */ DWORD __RPC_FAR *pdwUpdateOpt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSourceMoniker(
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk,
+ /* [in] */ REFCLSID rclsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSourceMoniker(
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetSourceDisplayName(
+ /* [in] */ LPCOLESTR pszStatusText) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetSourceDisplayName(
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BindToSource(
+ /* [in] */ DWORD bindflags,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BindIfRunning( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBoundSource(
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnbindSource( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Update(
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleLinkVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleLink __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleLink __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetUpdateOptions )(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ DWORD dwUpdateOpt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetUpdateOptions )(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwUpdateOpt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSourceMoniker )(
+ IOleLink __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk,
+ /* [in] */ REFCLSID rclsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceMoniker )(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSourceDisplayName )(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszStatusText);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetSourceDisplayName )(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BindToSource )(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ DWORD bindflags,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BindIfRunning )(
+ IOleLink __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBoundSource )(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UnbindSource )(
+ IOleLink __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Update )(
+ IOleLink __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc);
+
+ END_INTERFACE
+ } IOleLinkVtbl;
+
+ interface IOleLink
+ {
+ CONST_VTBL struct IOleLinkVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleLink_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleLink_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleLink_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleLink_SetUpdateOptions(This,dwUpdateOpt) \
+ (This)->lpVtbl -> SetUpdateOptions(This,dwUpdateOpt)
+
+#define IOleLink_GetUpdateOptions(This,pdwUpdateOpt) \
+ (This)->lpVtbl -> GetUpdateOptions(This,pdwUpdateOpt)
+
+#define IOleLink_SetSourceMoniker(This,pmk,rclsid) \
+ (This)->lpVtbl -> SetSourceMoniker(This,pmk,rclsid)
+
+#define IOleLink_GetSourceMoniker(This,ppmk) \
+ (This)->lpVtbl -> GetSourceMoniker(This,ppmk)
+
+#define IOleLink_SetSourceDisplayName(This,pszStatusText) \
+ (This)->lpVtbl -> SetSourceDisplayName(This,pszStatusText)
+
+#define IOleLink_GetSourceDisplayName(This,ppszDisplayName) \
+ (This)->lpVtbl -> GetSourceDisplayName(This,ppszDisplayName)
+
+#define IOleLink_BindToSource(This,bindflags,pbc) \
+ (This)->lpVtbl -> BindToSource(This,bindflags,pbc)
+
+#define IOleLink_BindIfRunning(This) \
+ (This)->lpVtbl -> BindIfRunning(This)
+
+#define IOleLink_GetBoundSource(This,ppunk) \
+ (This)->lpVtbl -> GetBoundSource(This,ppunk)
+
+#define IOleLink_UnbindSource(This) \
+ (This)->lpVtbl -> UnbindSource(This)
+
+#define IOleLink_Update(This,pbc) \
+ (This)->lpVtbl -> Update(This,pbc)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_SetUpdateOptions_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ DWORD dwUpdateOpt);
+
+
+void __RPC_STUB IOleLink_SetUpdateOptions_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_GetUpdateOptions_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwUpdateOpt);
+
+
+void __RPC_STUB IOleLink_GetUpdateOptions_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_SetSourceMoniker_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pmk,
+ /* [in] */ REFCLSID rclsid);
+
+
+void __RPC_STUB IOleLink_SetSourceMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_GetSourceMoniker_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IOleLink_GetSourceMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_SetSourceDisplayName_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszStatusText);
+
+
+void __RPC_STUB IOleLink_SetSourceDisplayName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_GetSourceDisplayName_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName);
+
+
+void __RPC_STUB IOleLink_GetSourceDisplayName_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_BindToSource_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [in] */ DWORD bindflags,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc);
+
+
+void __RPC_STUB IOleLink_BindToSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_BindIfRunning_Proxy(
+ IOleLink __RPC_FAR * This);
+
+
+void __RPC_STUB IOleLink_BindIfRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_GetBoundSource_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
+
+
+void __RPC_STUB IOleLink_GetBoundSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_UnbindSource_Proxy(
+ IOleLink __RPC_FAR * This);
+
+
+void __RPC_STUB IOleLink_UnbindSource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleLink_Update_Proxy(
+ IOleLink __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc);
+
+
+void __RPC_STUB IOleLink_Update_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleLink_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleItemContainer_INTERFACE_DEFINED__
+#define __IOleItemContainer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleItemContainer
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleItemContainer __RPC_FAR *LPOLEITEMCONTAINER;
+
+typedef
+enum tagBINDSPEED
+ { BINDSPEED_INDEFINITE = 1,
+ BINDSPEED_MODERATE = 2,
+ BINDSPEED_IMMEDIATE = 3
+ } BINDSPEED;
+
+typedef /* [v1_enum] */
+enum tagOLECONTF
+ { OLECONTF_EMBEDDINGS = 1,
+ OLECONTF_LINKS = 2,
+ OLECONTF_OTHERS = 4,
+ OLECONTF_ONLYUSER = 8,
+ OLECONTF_ONLYIFRUNNING = 16
+ } OLECONTF;
+
+
+EXTERN_C const IID IID_IOleItemContainer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleItemContainer : public IOleContainer
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetObject(
+ /* [in] */ LPOLESTR pszItem,
+ /* [in] */ DWORD dwSpeedNeeded,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetObjectStorage(
+ /* [in] */ LPOLESTR pszItem,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvStorage) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsRunning(
+ /* [in] */ LPOLESTR pszItem) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleItemContainerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleItemContainer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleItemContainer __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ParseDisplayName )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ LPOLESTR pszDisplayName,
+ /* [out] */ ULONG __RPC_FAR *pchEaten,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumObjects )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ DWORD grfFlags,
+ /* [out] */ IEnumUnknown __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockContainer )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetObject )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [in] */ DWORD dwSpeedNeeded,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetObjectStorage )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvStorage);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsRunning )(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem);
+
+ END_INTERFACE
+ } IOleItemContainerVtbl;
+
+ interface IOleItemContainer
+ {
+ CONST_VTBL struct IOleItemContainerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleItemContainer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleItemContainer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleItemContainer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleItemContainer_ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut) \
+ (This)->lpVtbl -> ParseDisplayName(This,pbc,pszDisplayName,pchEaten,ppmkOut)
+
+
+#define IOleItemContainer_EnumObjects(This,grfFlags,ppenum) \
+ (This)->lpVtbl -> EnumObjects(This,grfFlags,ppenum)
+
+#define IOleItemContainer_LockContainer(This,fLock) \
+ (This)->lpVtbl -> LockContainer(This,fLock)
+
+
+#define IOleItemContainer_GetObject(This,pszItem,dwSpeedNeeded,pbc,riid,ppvObject) \
+ (This)->lpVtbl -> GetObject(This,pszItem,dwSpeedNeeded,pbc,riid,ppvObject)
+
+#define IOleItemContainer_GetObjectStorage(This,pszItem,pbc,riid,ppvStorage) \
+ (This)->lpVtbl -> GetObjectStorage(This,pszItem,pbc,riid,ppvStorage)
+
+#define IOleItemContainer_IsRunning(This,pszItem) \
+ (This)->lpVtbl -> IsRunning(This,pszItem)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_RemoteGetObject_Proxy(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [in] */ DWORD dwSpeedNeeded,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObject);
+
+
+void __RPC_STUB IOleItemContainer_RemoteGetObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_RemoteGetObjectStorage_Proxy(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvStorage);
+
+
+void __RPC_STUB IOleItemContainer_RemoteGetObjectStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleItemContainer_IsRunning_Proxy(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem);
+
+
+void __RPC_STUB IOleItemContainer_IsRunning_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleItemContainer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceUIWindow_INTERFACE_DEFINED__
+#define __IOleInPlaceUIWindow_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceUIWindow
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleInPlaceUIWindow __RPC_FAR *LPOLEINPLACEUIWINDOW;
+
+typedef RECT BORDERWIDTHS;
+
+typedef LPRECT LPBORDERWIDTHS;
+
+typedef LPCRECT LPCBORDERWIDTHS;
+
+
+EXTERN_C const IID IID_IOleInPlaceUIWindow;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceUIWindow : public IOleWindow
+ {
+ public:
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetBorder(
+ /* [out] */ LPRECT lprectBorder) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE RequestBorderSpace(
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetBorderSpace(
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetActiveObject(
+ /* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
+ /* [unique][string][in] */ LPCOLESTR pszObjName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceUIWindowVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceUIWindow __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceUIWindow __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBorder )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [out] */ LPRECT lprectBorder);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestBorderSpace )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetBorderSpace )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetActiveObject )(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
+ /* [unique][string][in] */ LPCOLESTR pszObjName);
+
+ END_INTERFACE
+ } IOleInPlaceUIWindowVtbl;
+
+ interface IOleInPlaceUIWindow
+ {
+ CONST_VTBL struct IOleInPlaceUIWindowVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceUIWindow_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceUIWindow_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceUIWindow_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceUIWindow_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceUIWindow_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceUIWindow_GetBorder(This,lprectBorder) \
+ (This)->lpVtbl -> GetBorder(This,lprectBorder)
+
+#define IOleInPlaceUIWindow_RequestBorderSpace(This,pborderwidths) \
+ (This)->lpVtbl -> RequestBorderSpace(This,pborderwidths)
+
+#define IOleInPlaceUIWindow_SetBorderSpace(This,pborderwidths) \
+ (This)->lpVtbl -> SetBorderSpace(This,pborderwidths)
+
+#define IOleInPlaceUIWindow_SetActiveObject(This,pActiveObject,pszObjName) \
+ (This)->lpVtbl -> SetActiveObject(This,pActiveObject,pszObjName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_GetBorder_Proxy(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [out] */ LPRECT lprectBorder);
+
+
+void __RPC_STUB IOleInPlaceUIWindow_GetBorder_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_RequestBorderSpace_Proxy(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+
+void __RPC_STUB IOleInPlaceUIWindow_RequestBorderSpace_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_SetBorderSpace_Proxy(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+
+void __RPC_STUB IOleInPlaceUIWindow_SetBorderSpace_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceUIWindow_SetActiveObject_Proxy(
+ IOleInPlaceUIWindow __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
+ /* [unique][string][in] */ LPCOLESTR pszObjName);
+
+
+void __RPC_STUB IOleInPlaceUIWindow_SetActiveObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceUIWindow_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceActiveObject_INTERFACE_DEFINED__
+#define __IOleInPlaceActiveObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceActiveObject
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IOleInPlaceActiveObject __RPC_FAR *LPOLEINPLACEACTIVEOBJECT;
+
+
+EXTERN_C const IID IID_IOleInPlaceActiveObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceActiveObject : public IOleWindow
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+ /* [in] */ LPMSG lpmsg) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(
+ /* [in] */ BOOL fActivate) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE OnDocWindowActivate(
+ /* [in] */ BOOL fActivate) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE ResizeBorder(
+ /* [in] */ LPCRECT prcBorder,
+ /* [unique][in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
+ /* [in] */ BOOL fFrameWindow) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnableModeless(
+ /* [in] */ BOOL fEnable) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceActiveObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceActiveObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceActiveObject __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *TranslateAccelerator )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPMSG lpmsg);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnFrameWindowActivate )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fActivate);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnDocWindowActivate )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fActivate);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ResizeBorder )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPCRECT prcBorder,
+ /* [unique][in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
+ /* [in] */ BOOL fFrameWindow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnableModeless )(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fEnable);
+
+ END_INTERFACE
+ } IOleInPlaceActiveObjectVtbl;
+
+ interface IOleInPlaceActiveObject
+ {
+ CONST_VTBL struct IOleInPlaceActiveObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceActiveObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceActiveObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceActiveObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceActiveObject_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceActiveObject_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceActiveObject_TranslateAccelerator(This,lpmsg) \
+ (This)->lpVtbl -> TranslateAccelerator(This,lpmsg)
+
+#define IOleInPlaceActiveObject_OnFrameWindowActivate(This,fActivate) \
+ (This)->lpVtbl -> OnFrameWindowActivate(This,fActivate)
+
+#define IOleInPlaceActiveObject_OnDocWindowActivate(This,fActivate) \
+ (This)->lpVtbl -> OnDocWindowActivate(This,fActivate)
+
+#define IOleInPlaceActiveObject_ResizeBorder(This,prcBorder,pUIWindow,fFrameWindow) \
+ (This)->lpVtbl -> ResizeBorder(This,prcBorder,pUIWindow,fFrameWindow)
+
+#define IOleInPlaceActiveObject_EnableModeless(This,fEnable) \
+ (This)->lpVtbl -> EnableModeless(This,fEnable)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_RemoteTranslateAccelerator_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceActiveObject_RemoteTranslateAccelerator_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_OnFrameWindowActivate_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fActivate);
+
+
+void __RPC_STUB IOleInPlaceActiveObject_OnFrameWindowActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_OnDocWindowActivate_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fActivate);
+
+
+void __RPC_STUB IOleInPlaceActiveObject_OnDocWindowActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync][call_as] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_RemoteResizeBorder_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPCRECT prcBorder,
+ /* [in] */ REFIID riid,
+ /* [iid_is][unique][in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
+ /* [in] */ BOOL fFrameWindow);
+
+
+void __RPC_STUB IOleInPlaceActiveObject_RemoteResizeBorder_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_EnableModeless_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ BOOL fEnable);
+
+
+void __RPC_STUB IOleInPlaceActiveObject_EnableModeless_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceActiveObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceFrame_INTERFACE_DEFINED__
+#define __IOleInPlaceFrame_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceFrame
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleInPlaceFrame __RPC_FAR *LPOLEINPLACEFRAME;
+
+typedef struct tagOIFI
+ {
+ UINT cb;
+ BOOL fMDIApp;
+ HWND hwndFrame;
+ HACCEL haccel;
+ UINT cAccelEntries;
+ } OLEINPLACEFRAMEINFO;
+
+typedef struct tagOIFI __RPC_FAR *LPOLEINPLACEFRAMEINFO;
+
+typedef struct tagOleMenuGroupWidths
+ {
+ LONG width[ 6 ];
+ } OLEMENUGROUPWIDTHS;
+
+typedef struct tagOleMenuGroupWidths __RPC_FAR *LPOLEMENUGROUPWIDTHS;
+
+typedef HGLOBAL HOLEMENU;
+
+
+EXTERN_C const IID IID_IOleInPlaceFrame;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceFrame : public IOleInPlaceUIWindow
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InsertMenus(
+ /* [in] */ HMENU hmenuShared,
+ /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetMenu(
+ /* [in] */ HMENU hmenuShared,
+ /* [in] */ HOLEMENU holemenu,
+ /* [in] */ HWND hwndActiveObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveMenus(
+ /* [in] */ HMENU hmenuShared) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetStatusText(
+ /* [in] */ LPCOLESTR pszStatusText) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnableModeless(
+ /* [in] */ BOOL fEnable) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
+ /* [in] */ LPMSG lpmsg,
+ /* [in] */ WORD wID) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceFrameVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceFrame __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceFrame __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBorder )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [out] */ LPRECT lprectBorder);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestBorderSpace )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetBorderSpace )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [unique][in] */ LPCBORDERWIDTHS pborderwidths);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetActiveObject )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [unique][in] */ IOleInPlaceActiveObject __RPC_FAR *pActiveObject,
+ /* [unique][string][in] */ LPCOLESTR pszObjName);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InsertMenus )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared,
+ /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetMenu )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared,
+ /* [in] */ HOLEMENU holemenu,
+ /* [in] */ HWND hwndActiveObject);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RemoveMenus )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetStatusText )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszStatusText);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnableModeless )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ BOOL fEnable);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *TranslateAccelerator )(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ LPMSG lpmsg,
+ /* [in] */ WORD wID);
+
+ END_INTERFACE
+ } IOleInPlaceFrameVtbl;
+
+ interface IOleInPlaceFrame
+ {
+ CONST_VTBL struct IOleInPlaceFrameVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceFrame_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceFrame_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceFrame_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceFrame_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceFrame_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceFrame_GetBorder(This,lprectBorder) \
+ (This)->lpVtbl -> GetBorder(This,lprectBorder)
+
+#define IOleInPlaceFrame_RequestBorderSpace(This,pborderwidths) \
+ (This)->lpVtbl -> RequestBorderSpace(This,pborderwidths)
+
+#define IOleInPlaceFrame_SetBorderSpace(This,pborderwidths) \
+ (This)->lpVtbl -> SetBorderSpace(This,pborderwidths)
+
+#define IOleInPlaceFrame_SetActiveObject(This,pActiveObject,pszObjName) \
+ (This)->lpVtbl -> SetActiveObject(This,pActiveObject,pszObjName)
+
+
+#define IOleInPlaceFrame_InsertMenus(This,hmenuShared,lpMenuWidths) \
+ (This)->lpVtbl -> InsertMenus(This,hmenuShared,lpMenuWidths)
+
+#define IOleInPlaceFrame_SetMenu(This,hmenuShared,holemenu,hwndActiveObject) \
+ (This)->lpVtbl -> SetMenu(This,hmenuShared,holemenu,hwndActiveObject)
+
+#define IOleInPlaceFrame_RemoveMenus(This,hmenuShared) \
+ (This)->lpVtbl -> RemoveMenus(This,hmenuShared)
+
+#define IOleInPlaceFrame_SetStatusText(This,pszStatusText) \
+ (This)->lpVtbl -> SetStatusText(This,pszStatusText)
+
+#define IOleInPlaceFrame_EnableModeless(This,fEnable) \
+ (This)->lpVtbl -> EnableModeless(This,fEnable)
+
+#define IOleInPlaceFrame_TranslateAccelerator(This,lpmsg,wID) \
+ (This)->lpVtbl -> TranslateAccelerator(This,lpmsg,wID)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_InsertMenus_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared,
+ /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths);
+
+
+void __RPC_STUB IOleInPlaceFrame_InsertMenus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_SetMenu_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared,
+ /* [in] */ HOLEMENU holemenu,
+ /* [in] */ HWND hwndActiveObject);
+
+
+void __RPC_STUB IOleInPlaceFrame_SetMenu_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_RemoveMenus_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ HMENU hmenuShared);
+
+
+void __RPC_STUB IOleInPlaceFrame_RemoveMenus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_SetStatusText_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ LPCOLESTR pszStatusText);
+
+
+void __RPC_STUB IOleInPlaceFrame_SetStatusText_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_EnableModeless_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ BOOL fEnable);
+
+
+void __RPC_STUB IOleInPlaceFrame_EnableModeless_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceFrame_TranslateAccelerator_Proxy(
+ IOleInPlaceFrame __RPC_FAR * This,
+ /* [in] */ LPMSG lpmsg,
+ /* [in] */ WORD wID);
+
+
+void __RPC_STUB IOleInPlaceFrame_TranslateAccelerator_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceFrame_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceObject_INTERFACE_DEFINED__
+#define __IOleInPlaceObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceObject
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleInPlaceObject __RPC_FAR *LPOLEINPLACEOBJECT;
+
+
+EXTERN_C const IID IID_IOleInPlaceObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceObject : public IOleWindow
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InPlaceDeactivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UIDeactivate( void) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE SetObjectRects(
+ /* [in] */ LPCRECT lprcPosRect,
+ /* [in] */ LPCRECT lprcClipRect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReactivateAndUndo( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceObject __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceObject __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceObject __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InPlaceDeactivate )(
+ IOleInPlaceObject __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UIDeactivate )(
+ IOleInPlaceObject __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetObjectRects )(
+ IOleInPlaceObject __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect,
+ /* [in] */ LPCRECT lprcClipRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReactivateAndUndo )(
+ IOleInPlaceObject __RPC_FAR * This);
+
+ END_INTERFACE
+ } IOleInPlaceObjectVtbl;
+
+ interface IOleInPlaceObject
+ {
+ CONST_VTBL struct IOleInPlaceObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceObject_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceObject_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceObject_InPlaceDeactivate(This) \
+ (This)->lpVtbl -> InPlaceDeactivate(This)
+
+#define IOleInPlaceObject_UIDeactivate(This) \
+ (This)->lpVtbl -> UIDeactivate(This)
+
+#define IOleInPlaceObject_SetObjectRects(This,lprcPosRect,lprcClipRect) \
+ (This)->lpVtbl -> SetObjectRects(This,lprcPosRect,lprcClipRect)
+
+#define IOleInPlaceObject_ReactivateAndUndo(This) \
+ (This)->lpVtbl -> ReactivateAndUndo(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceObject_InPlaceDeactivate_Proxy(
+ IOleInPlaceObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceObject_InPlaceDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceObject_UIDeactivate_Proxy(
+ IOleInPlaceObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceObject_UIDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IOleInPlaceObject_SetObjectRects_Proxy(
+ IOleInPlaceObject __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect,
+ /* [in] */ LPCRECT lprcClipRect);
+
+
+void __RPC_STUB IOleInPlaceObject_SetObjectRects_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceObject_ReactivateAndUndo_Proxy(
+ IOleInPlaceObject __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceObject_ReactivateAndUndo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOleInPlaceSite_INTERFACE_DEFINED__
+#define __IOleInPlaceSite_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOleInPlaceSite
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IOleInPlaceSite __RPC_FAR *LPOLEINPLACESITE;
+
+
+EXTERN_C const IID IID_IOleInPlaceSite;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOleInPlaceSite : public IOleWindow
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnUIActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWindowContext(
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Scroll(
+ /* [in] */ SIZE scrollExtant) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(
+ /* [in] */ BOOL fUndoable) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DiscardUndoState( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(
+ /* [in] */ LPCRECT lprcPosRect) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOleInPlaceSiteVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CanInPlaceActivate )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceActivate )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIActivate )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindowContext )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Scroll )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ SIZE scrollExtant);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIDeactivate )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ BOOL fUndoable);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceDeactivate )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DiscardUndoState )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeactivateAndUndo )(
+ IOleInPlaceSite __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnPosRectChange )(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect);
+
+ END_INTERFACE
+ } IOleInPlaceSiteVtbl;
+
+ interface IOleInPlaceSite
+ {
+ CONST_VTBL struct IOleInPlaceSiteVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOleInPlaceSite_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOleInPlaceSite_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOleInPlaceSite_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOleInPlaceSite_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IOleInPlaceSite_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+
+#define IOleInPlaceSite_CanInPlaceActivate(This) \
+ (This)->lpVtbl -> CanInPlaceActivate(This)
+
+#define IOleInPlaceSite_OnInPlaceActivate(This) \
+ (This)->lpVtbl -> OnInPlaceActivate(This)
+
+#define IOleInPlaceSite_OnUIActivate(This) \
+ (This)->lpVtbl -> OnUIActivate(This)
+
+#define IOleInPlaceSite_GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo) \
+ (This)->lpVtbl -> GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo)
+
+#define IOleInPlaceSite_Scroll(This,scrollExtant) \
+ (This)->lpVtbl -> Scroll(This,scrollExtant)
+
+#define IOleInPlaceSite_OnUIDeactivate(This,fUndoable) \
+ (This)->lpVtbl -> OnUIDeactivate(This,fUndoable)
+
+#define IOleInPlaceSite_OnInPlaceDeactivate(This) \
+ (This)->lpVtbl -> OnInPlaceDeactivate(This)
+
+#define IOleInPlaceSite_DiscardUndoState(This) \
+ (This)->lpVtbl -> DiscardUndoState(This)
+
+#define IOleInPlaceSite_DeactivateAndUndo(This) \
+ (This)->lpVtbl -> DeactivateAndUndo(This)
+
+#define IOleInPlaceSite_OnPosRectChange(This,lprcPosRect) \
+ (This)->lpVtbl -> OnPosRectChange(This,lprcPosRect)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_CanInPlaceActivate_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_CanInPlaceActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnInPlaceActivate_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_OnInPlaceActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnUIActivate_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_OnUIActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_GetWindowContext_Proxy(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+
+void __RPC_STUB IOleInPlaceSite_GetWindowContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_Scroll_Proxy(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ SIZE scrollExtant);
+
+
+void __RPC_STUB IOleInPlaceSite_Scroll_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnUIDeactivate_Proxy(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ BOOL fUndoable);
+
+
+void __RPC_STUB IOleInPlaceSite_OnUIDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnInPlaceDeactivate_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_OnInPlaceDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_DiscardUndoState_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_DiscardUndoState_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_DeactivateAndUndo_Proxy(
+ IOleInPlaceSite __RPC_FAR * This);
+
+
+void __RPC_STUB IOleInPlaceSite_DeactivateAndUndo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOleInPlaceSite_OnPosRectChange_Proxy(
+ IOleInPlaceSite __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect);
+
+
+void __RPC_STUB IOleInPlaceSite_OnPosRectChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOleInPlaceSite_INTERFACE_DEFINED__ */
+
+
+#ifndef __IContinue_INTERFACE_DEFINED__
+#define __IContinue_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IContinue
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+
+EXTERN_C const IID IID_IContinue;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IContinue : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE FContinue( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IContinueVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IContinue __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IContinue __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IContinue __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *FContinue )(
+ IContinue __RPC_FAR * This);
+
+ END_INTERFACE
+ } IContinueVtbl;
+
+ interface IContinue
+ {
+ CONST_VTBL struct IContinueVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IContinue_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IContinue_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IContinue_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IContinue_FContinue(This) \
+ (This)->lpVtbl -> FContinue(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IContinue_FContinue_Proxy(
+ IContinue __RPC_FAR * This);
+
+
+void __RPC_STUB IContinue_FContinue_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IContinue_INTERFACE_DEFINED__ */
+
+
+#ifndef __IViewObject_INTERFACE_DEFINED__
+#define __IViewObject_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IViewObject
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IViewObject __RPC_FAR *LPVIEWOBJECT;
+
+
+EXTERN_C const IID IID_IViewObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IViewObject : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Draw(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hdcTargetDev,
+ /* [in] */ HDC hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *pfnContinue )(
+ DWORD dwContinue),
+ /* [in] */ DWORD dwContinue) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetColorSet(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Freeze(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unfreeze(
+ /* [in] */ DWORD dwFreeze) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAdvise(
+ /* [in] */ DWORD aspects,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAdvise(
+ /* [out] */ DWORD __RPC_FAR *pAspects,
+ /* [out] */ DWORD __RPC_FAR *pAdvf,
+ /* [out] */ IAdviseSink __RPC_FAR *__RPC_FAR *ppAdvSink) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IViewObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IViewObject __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IViewObject __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Draw )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hdcTargetDev,
+ /* [in] */ HDC hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *pfnContinue )(
+ DWORD dwContinue),
+ /* [in] */ DWORD dwContinue);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetColorSet )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Freeze )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unfreeze )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwFreeze);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAdvise )(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD aspects,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAdvise )(
+ IViewObject __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAspects,
+ /* [out] */ DWORD __RPC_FAR *pAdvf,
+ /* [out] */ IAdviseSink __RPC_FAR *__RPC_FAR *ppAdvSink);
+
+ END_INTERFACE
+ } IViewObjectVtbl;
+
+ interface IViewObject
+ {
+ CONST_VTBL struct IViewObjectVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IViewObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IViewObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IViewObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IViewObject_Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue) \
+ (This)->lpVtbl -> Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue)
+
+#define IViewObject_GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet) \
+ (This)->lpVtbl -> GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet)
+
+#define IViewObject_Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze) \
+ (This)->lpVtbl -> Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze)
+
+#define IViewObject_Unfreeze(This,dwFreeze) \
+ (This)->lpVtbl -> Unfreeze(This,dwFreeze)
+
+#define IViewObject_SetAdvise(This,aspects,advf,pAdvSink) \
+ (This)->lpVtbl -> SetAdvise(This,aspects,advf,pAdvSink)
+
+#define IViewObject_GetAdvise(This,pAspects,pAdvf,ppAdvSink) \
+ (This)->lpVtbl -> GetAdvise(This,pAspects,pAdvf,ppAdvSink)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_RemoteDraw_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ DWORD hdcTargetDev,
+ /* [in] */ DWORD hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ IContinue __RPC_FAR *pContinue);
+
+
+void __RPC_STUB IViewObject_RemoteDraw_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_RemoteGetColorSet_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ DWORD hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+
+void __RPC_STUB IViewObject_RemoteGetColorSet_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_RemoteFreeze_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+
+void __RPC_STUB IViewObject_RemoteFreeze_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IViewObject_Unfreeze_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwFreeze);
+
+
+void __RPC_STUB IViewObject_Unfreeze_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IViewObject_SetAdvise_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD aspects,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink);
+
+
+void __RPC_STUB IViewObject_SetAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IViewObject_GetAdvise_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAspects,
+ /* [out] */ DWORD __RPC_FAR *pAdvf,
+ /* [out] */ IAdviseSink __RPC_FAR *__RPC_FAR *ppAdvSink);
+
+
+void __RPC_STUB IViewObject_GetAdvise_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IViewObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IViewObject2_INTERFACE_DEFINED__
+#define __IViewObject2_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IViewObject2
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object] */
+
+
+typedef /* [unique] */ IViewObject2 __RPC_FAR *LPVIEWOBJECT2;
+
+
+EXTERN_C const IID IID_IViewObject2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IViewObject2 : public IViewObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetExtent(
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [out] */ LPSIZEL lpsizel) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IViewObject2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IViewObject2 __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IViewObject2 __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Draw )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hdcTargetDev,
+ /* [in] */ HDC hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *pfnContinue )(
+ DWORD dwContinue),
+ /* [in] */ DWORD dwContinue);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetColorSet )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Freeze )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Unfreeze )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwFreeze);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetAdvise )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD aspects,
+ /* [in] */ DWORD advf,
+ /* [unique][in] */ IAdviseSink __RPC_FAR *pAdvSink);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetAdvise )(
+ IViewObject2 __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pAspects,
+ /* [out] */ DWORD __RPC_FAR *pAdvf,
+ /* [out] */ IAdviseSink __RPC_FAR *__RPC_FAR *ppAdvSink);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetExtent )(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [out] */ LPSIZEL lpsizel);
+
+ END_INTERFACE
+ } IViewObject2Vtbl;
+
+ interface IViewObject2
+ {
+ CONST_VTBL struct IViewObject2Vtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IViewObject2_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IViewObject2_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IViewObject2_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IViewObject2_Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue) \
+ (This)->lpVtbl -> Draw(This,dwDrawAspect,lindex,pvAspect,ptd,hdcTargetDev,hdcDraw,lprcBounds,lprcWBounds,pfnContinue,dwContinue)
+
+#define IViewObject2_GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet) \
+ (This)->lpVtbl -> GetColorSet(This,dwDrawAspect,lindex,pvAspect,ptd,hicTargetDev,ppColorSet)
+
+#define IViewObject2_Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze) \
+ (This)->lpVtbl -> Freeze(This,dwDrawAspect,lindex,pvAspect,pdwFreeze)
+
+#define IViewObject2_Unfreeze(This,dwFreeze) \
+ (This)->lpVtbl -> Unfreeze(This,dwFreeze)
+
+#define IViewObject2_SetAdvise(This,aspects,advf,pAdvSink) \
+ (This)->lpVtbl -> SetAdvise(This,aspects,advf,pAdvSink)
+
+#define IViewObject2_GetAdvise(This,pAspects,pAdvf,ppAdvSink) \
+ (This)->lpVtbl -> GetAdvise(This,pAspects,pAdvf,ppAdvSink)
+
+
+#define IViewObject2_GetExtent(This,dwDrawAspect,lindex,ptd,lpsizel) \
+ (This)->lpVtbl -> GetExtent(This,dwDrawAspect,lindex,ptd,lpsizel)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IViewObject2_GetExtent_Proxy(
+ IViewObject2 __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [out] */ LPSIZEL lpsizel);
+
+
+void __RPC_STUB IViewObject2_GetExtent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IViewObject2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDropSource_INTERFACE_DEFINED__
+#define __IDropSource_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDropSource
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [uuid][object][local] */
+
+
+typedef /* [unique] */ IDropSource __RPC_FAR *LPDROPSOURCE;
+
+
+EXTERN_C const IID IID_IDropSource;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDropSource : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryContinueDrag(
+ /* [in] */ BOOL fEscapePressed,
+ /* [in] */ DWORD grfKeyState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GiveFeedback(
+ /* [in] */ DWORD dwEffect) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDropSourceVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDropSource __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDropSource __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDropSource __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryContinueDrag )(
+ IDropSource __RPC_FAR * This,
+ /* [in] */ BOOL fEscapePressed,
+ /* [in] */ DWORD grfKeyState);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GiveFeedback )(
+ IDropSource __RPC_FAR * This,
+ /* [in] */ DWORD dwEffect);
+
+ END_INTERFACE
+ } IDropSourceVtbl;
+
+ interface IDropSource
+ {
+ CONST_VTBL struct IDropSourceVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDropSource_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDropSource_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDropSource_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDropSource_QueryContinueDrag(This,fEscapePressed,grfKeyState) \
+ (This)->lpVtbl -> QueryContinueDrag(This,fEscapePressed,grfKeyState)
+
+#define IDropSource_GiveFeedback(This,dwEffect) \
+ (This)->lpVtbl -> GiveFeedback(This,dwEffect)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDropSource_QueryContinueDrag_Proxy(
+ IDropSource __RPC_FAR * This,
+ /* [in] */ BOOL fEscapePressed,
+ /* [in] */ DWORD grfKeyState);
+
+
+void __RPC_STUB IDropSource_QueryContinueDrag_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDropSource_GiveFeedback_Proxy(
+ IDropSource __RPC_FAR * This,
+ /* [in] */ DWORD dwEffect);
+
+
+void __RPC_STUB IDropSource_GiveFeedback_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDropSource_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDropTarget_INTERFACE_DEFINED__
+#define __IDropTarget_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IDropTarget
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IDropTarget __RPC_FAR *LPDROPTARGET;
+
+#define MK_ALT ( 0x20 )
+
+#define DROPEFFECT_NONE ( 0 )
+
+#define DROPEFFECT_COPY ( 1 )
+
+#define DROPEFFECT_MOVE ( 2 )
+
+#define DROPEFFECT_LINK ( 4 )
+
+#define DROPEFFECT_SCROLL ( 0x80000000 )
+
+// default inset-width of the hot zone, in pixels
+// typical use: GetProfileInt("windows","DragScrollInset",DD_DEFSCROLLINSET)
+#define DD_DEFSCROLLINSET ( 11 )
+
+// default delay before scrolling, in milliseconds
+// typical use: GetProfileInt("windows","DragScrollDelay",DD_DEFSCROLLDELAY)
+#define DD_DEFSCROLLDELAY ( 50 )
+
+// default scroll interval, in milliseconds
+// typical use: GetProfileInt("windows","DragScrollInterval", DD_DEFSCROLLINTERVAL)
+#define DD_DEFSCROLLINTERVAL ( 50 )
+
+// default delay before dragging should start, in milliseconds
+// typical use: GetProfileInt("windows", "DragDelay", DD_DEFDRAGDELAY)
+#define DD_DEFDRAGDELAY ( 200 )
+
+// default minimum distance (radius) before dragging should start, in pixels
+// typical use: GetProfileInt("windows", "DragMinDist", DD_DEFDRAGMINDIST)
+#define DD_DEFDRAGMINDIST ( 2 )
+
+
+EXTERN_C const IID IID_IDropTarget;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IDropTarget : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE DragEnter(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DragOver(
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DragLeave( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Drop(
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDropTargetVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IDropTarget __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IDropTarget __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IDropTarget __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DragEnter )(
+ IDropTarget __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DragOver )(
+ IDropTarget __RPC_FAR * This,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DragLeave )(
+ IDropTarget __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Drop )(
+ IDropTarget __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+ END_INTERFACE
+ } IDropTargetVtbl;
+
+ interface IDropTarget
+ {
+ CONST_VTBL struct IDropTargetVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDropTarget_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDropTarget_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDropTarget_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDropTarget_DragEnter(This,pDataObj,grfKeyState,pt,pdwEffect) \
+ (This)->lpVtbl -> DragEnter(This,pDataObj,grfKeyState,pt,pdwEffect)
+
+#define IDropTarget_DragOver(This,grfKeyState,pt,pdwEffect) \
+ (This)->lpVtbl -> DragOver(This,grfKeyState,pt,pdwEffect)
+
+#define IDropTarget_DragLeave(This) \
+ (This)->lpVtbl -> DragLeave(This)
+
+#define IDropTarget_Drop(This,pDataObj,grfKeyState,pt,pdwEffect) \
+ (This)->lpVtbl -> Drop(This,pDataObj,grfKeyState,pt,pdwEffect)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDropTarget_DragEnter_Proxy(
+ IDropTarget __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+
+void __RPC_STUB IDropTarget_DragEnter_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDropTarget_DragOver_Proxy(
+ IDropTarget __RPC_FAR * This,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+
+void __RPC_STUB IDropTarget_DragOver_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDropTarget_DragLeave_Proxy(
+ IDropTarget __RPC_FAR * This);
+
+
+void __RPC_STUB IDropTarget_DragLeave_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDropTarget_Drop_Proxy(
+ IDropTarget __RPC_FAR * This,
+ /* [unique][in] */ IDataObject __RPC_FAR *pDataObj,
+ /* [in] */ DWORD grfKeyState,
+ /* [in] */ POINTL pt,
+ /* [out][in] */ DWORD __RPC_FAR *pdwEffect);
+
+
+void __RPC_STUB IDropTarget_Drop_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDropTarget_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumOLEVERB_INTERFACE_DEFINED__
+#define __IEnumOLEVERB_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumOLEVERB
+ * at Fri Nov 15 09:36:25 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IEnumOLEVERB __RPC_FAR *LPENUMOLEVERB;
+
+typedef struct tagOLEVERB
+ {
+ LONG lVerb;
+ LPOLESTR lpszVerbName;
+ DWORD fuFlags;
+ DWORD grfAttribs;
+ } OLEVERB;
+
+typedef struct tagOLEVERB __RPC_FAR *LPOLEVERB;
+
+typedef /* [v1_enum] */
+enum tagOLEVERBATTRIB
+ { OLEVERBATTRIB_NEVERDIRTIES = 1,
+ OLEVERBATTRIB_ONCONTAINERMENU = 2
+ } OLEVERBATTRIB;
+
+
+EXTERN_C const IID IID_IEnumOLEVERB;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumOLEVERB : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLEVERB rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumOLEVERBVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumOLEVERB __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumOLEVERB __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLEVERB rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumOLEVERB __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumOLEVERBVtbl;
+
+ interface IEnumOLEVERB
+ {
+ CONST_VTBL struct IEnumOLEVERBVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumOLEVERB_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumOLEVERB_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumOLEVERB_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumOLEVERB_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumOLEVERB_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumOLEVERB_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumOLEVERB_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumOLEVERB_RemoteNext_Proxy(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLEVERB rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumOLEVERB_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Skip_Proxy(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumOLEVERB_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Reset_Proxy(
+ IEnumOLEVERB __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumOLEVERB_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Clone_Proxy(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [out] */ IEnumOLEVERB __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumOLEVERB_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumOLEVERB_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER CLIPFORMAT_UserSize( unsigned long __RPC_FAR *, unsigned long , CLIPFORMAT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLIPFORMAT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER CLIPFORMAT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+void __RPC_USER CLIPFORMAT_UserFree( unsigned long __RPC_FAR *, CLIPFORMAT __RPC_FAR * );
+
+unsigned long __RPC_USER HACCEL_UserSize( unsigned long __RPC_FAR *, unsigned long , HACCEL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HACCEL_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HACCEL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HACCEL_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HACCEL __RPC_FAR * );
+void __RPC_USER HACCEL_UserFree( unsigned long __RPC_FAR *, HACCEL __RPC_FAR * );
+
+unsigned long __RPC_USER HGLOBAL_UserSize( unsigned long __RPC_FAR *, unsigned long , HGLOBAL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HGLOBAL_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HGLOBAL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HGLOBAL_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HGLOBAL __RPC_FAR * );
+void __RPC_USER HGLOBAL_UserFree( unsigned long __RPC_FAR *, HGLOBAL __RPC_FAR * );
+
+unsigned long __RPC_USER HMENU_UserSize( unsigned long __RPC_FAR *, unsigned long , HMENU __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HMENU_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HMENU __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HMENU_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HMENU __RPC_FAR * );
+void __RPC_USER HMENU_UserFree( unsigned long __RPC_FAR *, HMENU __RPC_FAR * );
+
+unsigned long __RPC_USER HWND_UserSize( unsigned long __RPC_FAR *, unsigned long , HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+void __RPC_USER HWND_UserFree( unsigned long __RPC_FAR *, HWND __RPC_FAR * );
+
+unsigned long __RPC_USER STGMEDIUM_UserSize( unsigned long __RPC_FAR *, unsigned long , STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER STGMEDIUM_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER STGMEDIUM_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+void __RPC_USER STGMEDIUM_UserFree( unsigned long __RPC_FAR *, STGMEDIUM __RPC_FAR * );
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_GetObject_Proxy(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [in] */ DWORD dwSpeedNeeded,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_GetObject_Stub(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [in] */ DWORD dwSpeedNeeded,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObject);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_GetObjectStorage_Proxy(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvStorage);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleItemContainer_GetObjectStorage_Stub(
+ IOleItemContainer __RPC_FAR * This,
+ /* [in] */ LPOLESTR pszItem,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvStorage);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_TranslateAccelerator_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPMSG lpmsg);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_TranslateAccelerator_Stub(
+ IOleInPlaceActiveObject __RPC_FAR * This);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_ResizeBorder_Proxy(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPCRECT prcBorder,
+ /* [unique][in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
+ /* [in] */ BOOL fFrameWindow);
+
+
+/* [input_sync][call_as] */ HRESULT STDMETHODCALLTYPE IOleInPlaceActiveObject_ResizeBorder_Stub(
+ IOleInPlaceActiveObject __RPC_FAR * This,
+ /* [in] */ LPCRECT prcBorder,
+ /* [in] */ REFIID riid,
+ /* [iid_is][unique][in] */ IOleInPlaceUIWindow __RPC_FAR *pUIWindow,
+ /* [in] */ BOOL fFrameWindow);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IViewObject_Draw_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hdcTargetDev,
+ /* [in] */ HDC hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ BOOL ( STDMETHODCALLTYPE __RPC_FAR *pfnContinue )(
+ DWORD dwContinue),
+ /* [in] */ DWORD dwContinue);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_Draw_Stub(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ DWORD hdcTargetDev,
+ /* [in] */ DWORD hdcDraw,
+ /* [in] */ LPCRECTL lprcBounds,
+ /* [unique][in] */ LPCRECTL lprcWBounds,
+ /* [in] */ IContinue __RPC_FAR *pContinue);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IViewObject_GetColorSet_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ HDC hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_GetColorSet_Stub(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [unique][in] */ DVTARGETDEVICE __RPC_FAR *ptd,
+ /* [in] */ DWORD hicTargetDev,
+ /* [out] */ LOGPALETTE __RPC_FAR *__RPC_FAR *ppColorSet);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IViewObject_Freeze_Proxy(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [unique][in] */ void __RPC_FAR *pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IViewObject_Freeze_Stub(
+ IViewObject __RPC_FAR * This,
+ /* [in] */ DWORD dwDrawAspect,
+ /* [in] */ LONG lindex,
+ /* [in] */ DWORD pvAspect,
+ /* [out] */ DWORD __RPC_FAR *pdwFreeze);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOleCache2_UpdateCache_Proxy(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ LPDATAOBJECT pDataObject,
+ /* [in] */ DWORD grfUpdf,
+ /* [in] */ LPVOID pReserved);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOleCache2_UpdateCache_Stub(
+ IOleCache2 __RPC_FAR * This,
+ /* [in] */ LPDATAOBJECT pDataObject,
+ /* [in] */ DWORD grfUpdf,
+ /* [in] */ DWORD pReserved);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Next_Proxy(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLEVERB rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumOLEVERB_Next_Stub(
+ IEnumOLEVERB __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ LPOLEVERB rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/oleidl.idl b/public/sdk/inc/oleidl.idl
new file mode 100644
index 000000000..a1ee8f6d4
--- /dev/null
+++ b/public/sdk/inc/oleidl.idl
@@ -0,0 +1,1255 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: oadvhr.idl
+//
+//--------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+#endif
+
+interface IOleInPlaceActiveObject;
+interface IEnumOLEVERB;
+
+[
+ local,
+ object,
+ uuid(00000111-0000-0000-C000-000000000046)
+]
+
+interface IOleAdviseHolder : IUnknown
+{
+
+ typedef [unique] IOleAdviseHolder * LPOLEADVISEHOLDER;
+
+ HRESULT Advise
+ (
+ [in, unique] IAdviseSink *pAdvise,
+ [out] DWORD *pdwConnection
+ );
+
+ HRESULT Unadvise
+ (
+ [in] DWORD dwConnection
+ );
+
+ HRESULT EnumAdvise
+ (
+ [out] IEnumSTATDATA **ppenumAdvise
+ );
+
+ HRESULT SendOnRename
+ (
+ [in, unique] IMoniker *pmk
+ );
+
+ HRESULT SendOnSave
+ (
+ void
+ );
+
+ HRESULT SendOnClose
+ (
+ void
+ );
+
+}
+
+[
+ object,
+ uuid(0000011e-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleCache : IUnknown
+{
+
+ typedef [unique] IOleCache *LPOLECACHE;
+
+ HRESULT Cache
+ (
+ [in, unique] FORMATETC *pformatetc,
+ [in] DWORD advf,
+ [out] DWORD *pdwConnection
+ );
+
+ HRESULT Uncache
+ (
+ [in] DWORD dwConnection
+ );
+
+ HRESULT EnumCache
+ (
+ [out] IEnumSTATDATA **ppenumSTATDATA
+ );
+
+ HRESULT InitCache
+ (
+ [in, unique] IDataObject *pDataObject
+ );
+
+ HRESULT SetData
+ (
+ [in, unique] FORMATETC *pformatetc,
+ [in, unique] STGMEDIUM *pmedium,
+ [in] BOOL fRelease
+ );
+
+}
+
+[
+ object,
+ uuid(00000128-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleCache2 : IOleCache
+{
+
+ typedef [unique] IOleCache2 *LPOLECACHE2;
+
+
+ // Cache update Flags
+
+ const DWORD UPDFCACHE_NODATACACHE = 0x00000001;
+ const DWORD UPDFCACHE_ONSAVECACHE = 0x00000002;
+ const DWORD UPDFCACHE_ONSTOPCACHE = 0x00000004;
+ const DWORD UPDFCACHE_NORMALCACHE = 0x00000008;
+ const DWORD UPDFCACHE_IFBLANK = 0x00000010;
+ const DWORD UPDFCACHE_ONLYIFBLANK = 0x80000000;
+
+ const DWORD UPDFCACHE_IFBLANKORONSAVECACHE =
+ (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE);
+ const DWORD UPDFCACHE_ALL =
+ ((DWORD)(~(UPDFCACHE_ONLYIFBLANK)));
+ const DWORD UPDFCACHE_ALLBUTNODATACACHE =
+ (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE)));
+
+
+ // IOleCache2::DiscardCache options
+ typedef [v1_enum] enum tagDISCARDCACHE
+ {
+ DISCARDCACHE_SAVEIFDIRTY = 0, // Save all dirty cache before discarding
+ DISCARDCACHE_NOSAVE = 1 // Don't save dirty caches before
+ // discarding
+ } DISCARDCACHE;
+
+
+ [local]
+ HRESULT UpdateCache
+ (
+ [in] LPDATAOBJECT pDataObject,
+ [in] DWORD grfUpdf,
+ [in] LPVOID pReserved
+ );
+
+ [call_as(UpdateCache)]
+ HRESULT RemoteUpdateCache
+ (
+ [in] LPDATAOBJECT pDataObject,
+ [in] DWORD grfUpdf,
+ [in] DWORD pReserved
+ );
+
+
+ HRESULT DiscardCache
+ (
+ [in] DWORD dwDiscardOptions
+ );
+
+}
+
+[
+ object,
+ uuid(00000129-0000-0000-C000-000000000046)
+]
+
+interface IOleCacheControl : IUnknown
+{
+
+ typedef [unique] IOleCacheControl *LPOLECACHECONTROL;
+
+
+ HRESULT OnRun
+ (
+ LPDATAOBJECT pDataObject
+ );
+
+ HRESULT OnStop (void);
+
+
+}
+
+[
+ object,
+ uuid(0000011a-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IParseDisplayName : IUnknown
+{
+
+ typedef [unique] IParseDisplayName *LPPARSEDISPLAYNAME;
+
+ HRESULT ParseDisplayName
+ (
+ [in, unique] IBindCtx *pbc,
+ [in] LPOLESTR pszDisplayName,
+ [out] ULONG *pchEaten,
+ [out] IMoniker **ppmkOut
+ );
+
+}
+
+[
+ object,
+ uuid(0000011b-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleContainer : IParseDisplayName
+{
+
+ typedef [unique] IOleContainer *LPOLECONTAINER;
+
+ HRESULT EnumObjects
+ (
+ [in] DWORD grfFlags,
+ [out] IEnumUnknown **ppenum
+ );
+
+ HRESULT LockContainer
+ (
+ [in] BOOL fLock
+ );
+}
+
+[
+ object,
+ uuid(00000118-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleClientSite : IUnknown
+{
+
+ typedef [unique] IOleClientSite * LPOLECLIENTSITE;
+
+ HRESULT SaveObject
+ (
+ void
+ );
+
+ HRESULT GetMoniker
+ (
+ [in] DWORD dwAssign,
+ [in] DWORD dwWhichMoniker,
+ [out] IMoniker **ppmk
+ );
+
+ HRESULT GetContainer
+ (
+ [out] IOleContainer **ppContainer
+ );
+
+ HRESULT ShowObject
+ (
+ void
+ );
+
+ HRESULT OnShowWindow
+ (
+ [in] BOOL fShow
+ );
+
+ HRESULT RequestNewObjectLayout
+ (
+ void
+ );
+
+}
+
+[
+ object,
+ uuid(00000112-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleObject : IUnknown
+{
+
+ typedef [unique] IOleObject *LPOLEOBJECT;
+
+ typedef enum tagOLEGETMONIKER
+ {
+ OLEGETMONIKER_ONLYIFTHERE = 1,
+ OLEGETMONIKER_FORCEASSIGN = 2,
+ OLEGETMONIKER_UNASSIGN = 3,
+ OLEGETMONIKER_TEMPFORUSER = 4
+ } OLEGETMONIKER;
+
+ typedef enum tagOLEWHICHMK
+ {
+ OLEWHICHMK_CONTAINER = 1,
+ OLEWHICHMK_OBJREL = 2,
+ OLEWHICHMK_OBJFULL = 3
+ } OLEWHICHMK;
+
+ typedef enum tagUSERCLASSTYPE
+ {
+ USERCLASSTYPE_FULL = 1,
+ USERCLASSTYPE_SHORT = 2,
+ USERCLASSTYPE_APPNAME = 3,
+ } USERCLASSTYPE;
+
+ typedef enum tagOLEMISC
+ {
+ OLEMISC_RECOMPOSEONRESIZE = 0x00000001,
+ OLEMISC_ONLYICONIC = 0x00000002,
+ OLEMISC_INSERTNOTREPLACE = 0x00000004,
+ OLEMISC_STATIC = 0x00000008,
+ OLEMISC_CANTLINKINSIDE = 0x00000010,
+ OLEMISC_CANLINKBYOLE1 = 0x00000020,
+ OLEMISC_ISLINKOBJECT = 0x00000040,
+ OLEMISC_INSIDEOUT = 0x00000080,
+ OLEMISC_ACTIVATEWHENVISIBLE = 0x00000100,
+ OLEMISC_RENDERINGISDEVICEINDEPENDENT= 0x00000200,
+ OLEMISC_INVISIBLEATRUNTIME = 0x00000400,
+ OLEMISC_ALWAYSRUN = 0x00000800,
+ OLEMISC_ACTSLIKEBUTTON = 0x00001000,
+ OLEMISC_ACTSLIKELABEL = 0x00002000,
+ OLEMISC_NOUIACTIVATE = 0x00004000,
+ OLEMISC_ALIGNABLE = 0x00008000,
+ OLEMISC_SIMPLEFRAME = 0x00010000,
+ OLEMISC_SETCLIENTSITEFIRST = 0x00020000,
+ OLEMISC_IMEMODE = 0x00040000,
+ OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x00080000,
+ OLEMISC_WANTSTOMENUMERGE = 0x00100000,
+ OLEMISC_SUPPORTSMULTILEVELUNDO = 0x00200000
+ } OLEMISC;
+
+ typedef enum tagOLECLOSE
+ {
+ OLECLOSE_SAVEIFDIRTY = 0,
+ OLECLOSE_NOSAVE = 1,
+ OLECLOSE_PROMPTSAVE = 2
+ } OLECLOSE;
+
+//IOleObject methods
+
+ HRESULT SetClientSite
+ (
+ [in, unique] IOleClientSite *pClientSite
+ );
+
+ HRESULT GetClientSite
+ (
+ [out] IOleClientSite **ppClientSite
+ );
+
+ HRESULT SetHostNames
+ (
+ [in] LPCOLESTR szContainerApp,
+ [in, unique] LPCOLESTR szContainerObj
+ );
+
+ HRESULT Close
+ (
+ [in] DWORD dwSaveOption
+ );
+
+ HRESULT SetMoniker
+ (
+ [in] DWORD dwWhichMoniker,
+ [in, unique] IMoniker *pmk
+ );
+
+ HRESULT GetMoniker
+ (
+ [in] DWORD dwAssign,
+ [in] DWORD dwWhichMoniker,
+ [out] IMoniker **ppmk
+ );
+
+ HRESULT InitFromData
+ (
+ [in, unique] IDataObject *pDataObject,
+ [in] BOOL fCreation,
+ [in] DWORD dwReserved
+ );
+
+ HRESULT GetClipboardData
+ (
+ [in] DWORD dwReserved,
+ [out] IDataObject **ppDataObject
+ );
+
+ HRESULT DoVerb
+ (
+ [in] LONG iVerb,
+ [in, unique] LPMSG lpmsg,
+ [in, unique] IOleClientSite *pActiveSite,
+ [in] LONG lindex,
+ [in] HWND hwndParent,
+ [in, unique] LPCRECT lprcPosRect
+ );
+
+ HRESULT EnumVerbs
+ (
+ [out] IEnumOLEVERB **ppEnumOleVerb
+ );
+
+ HRESULT Update
+ (
+ void
+ );
+
+ HRESULT IsUpToDate
+ (
+ void
+ );
+
+ HRESULT GetUserClassID
+ (
+ [out] CLSID *pClsid
+ );
+
+ HRESULT GetUserType
+ (
+ [in] DWORD dwFormOfType,
+ [out] LPOLESTR *pszUserType
+ );
+
+ HRESULT SetExtent
+ (
+ [in] DWORD dwDrawAspect,
+ [in] SIZEL *psizel
+ );
+
+ HRESULT GetExtent
+ (
+ [in] DWORD dwDrawAspect,
+ [out] SIZEL *psizel
+ );
+
+ HRESULT Advise
+ (
+ [in, unique] IAdviseSink *pAdvSink,
+ [out] DWORD *pdwConnection
+ );
+
+ HRESULT Unadvise
+ (
+ [in] DWORD dwConnection
+ );
+
+ HRESULT EnumAdvise
+ (
+ [out] IEnumSTATDATA **ppenumAdvise
+ );
+
+ HRESULT GetMiscStatus
+ (
+ [in] DWORD dwAspect,
+ [out] DWORD *pdwStatus
+ );
+
+ HRESULT SetColorScheme
+ (
+ [in] LOGPALETTE *pLogpal
+ );
+}
+
+[uuid(B0916C84-7416-101A-BCEA-08002B2B79EF)]
+interface IOLETypes
+{
+
+ /****** OLE value types ***********************************************/
+
+ /* rendering options */
+ typedef enum tagOLERENDER
+ {
+ OLERENDER_NONE = 0,
+ OLERENDER_DRAW = 1,
+ OLERENDER_FORMAT = 2,
+ OLERENDER_ASIS = 3
+ } OLERENDER;
+ typedef OLERENDER * LPOLERENDER;
+
+
+
+ /****** Clipboard Data structures *****************************************/
+
+ typedef struct tagOBJECTDESCRIPTOR
+ {
+ ULONG cbSize; // Size of structure in bytes
+ CLSID clsid; // CLSID of data being transferred
+ DWORD dwDrawAspect; // Display aspect of the object
+ // normally DVASPECT_CONTENT or ICON.
+ // dwDrawAspect will be 0 (which is NOT
+ // DVASPECT_CONTENT) if the copier or
+ // dragsource didn't draw the object to
+ // begin with.
+ SIZEL sizel; // size of the object in HIMETRIC
+ // sizel is opt.: will be (0,0) for apps
+ // which don't draw the object being
+ // transferred
+ POINTL pointl; // Offset in HIMETRIC units from the
+ // upper-left corner of the obj where the
+ // mouse went down for the drag.
+ // NOTE: y coordinates increase downward.
+ // x coordinates increase to right
+ // pointl is opt.; it is only meaningful
+ // if object is transfered via drag/drop.
+ // (0, 0) if mouse position is unspecified
+ // (eg. when obj transfered via clipboard)
+ DWORD dwStatus; // Misc. status flags for object. Flags are
+ // defined by OLEMISC enum. these flags
+ // are as would be returned
+ // by IOleObject::GetMiscStatus.
+ DWORD dwFullUserTypeName; // Offset from beginning of structure to
+ // null-terminated string that specifies
+ // Full User Type Name of the object.
+ // 0 indicates string not present.
+ DWORD dwSrcOfCopy; // Offset from beginning of structure to
+ // null-terminated string that specifies
+ // source of the transfer.
+ // dwSrcOfCOpy is normally implemented as
+ // the display name of the temp-for-user
+ // moniker which identifies the source of
+ // the data.
+ // 0 indicates string not present.
+ // NOTE: moniker assignment is NOT forced.
+ // see IOleObject::GetMoniker(
+ // OLEGETMONIKER_TEMPFORUSER)
+
+ /* variable sized string data may appear here */
+
+ } OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, *LPOBJECTDESCRIPTOR,
+ LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, *LPLINKSRCDESCRIPTOR;
+
+
+
+
+}
+
+[
+ object,
+ uuid(00000114-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleWindow : IUnknown
+{
+
+ typedef [unique] IOleWindow *LPOLEWINDOW;
+
+ [input_sync]
+ HRESULT GetWindow
+ (
+ [out] HWND *phwnd
+ );
+
+ HRESULT ContextSensitiveHelp
+ (
+ [in] BOOL fEnterMode
+ );
+}
+
+[
+ object,
+ uuid(0000011d-0000-0000-C000-000000000046)
+]
+
+interface IOleLink : IUnknown
+{
+
+ typedef [unique] IOleLink *LPOLELINK;
+
+ /* Link update options */
+ typedef enum tagOLEUPDATE
+ {
+ OLEUPDATE_ALWAYS=1,
+ OLEUPDATE_ONCALL=3
+ } OLEUPDATE;
+ typedef OLEUPDATE *LPOLEUPDATE;
+
+
+ typedef OLEUPDATE *POLEUPDATE;
+
+ // for IOleLink::BindToSource
+ typedef enum tagOLELINKBIND
+ {
+ OLELINKBIND_EVENIFCLASSDIFF = 1,
+ } OLELINKBIND;
+
+ HRESULT SetUpdateOptions
+ (
+ [in] DWORD dwUpdateOpt
+ );
+
+ HRESULT GetUpdateOptions
+ (
+ [out] DWORD *pdwUpdateOpt
+ );
+
+ HRESULT SetSourceMoniker
+ (
+ [in, unique] IMoniker *pmk,
+ [in] REFCLSID rclsid
+ );
+
+ HRESULT GetSourceMoniker
+ (
+ [out] IMoniker **ppmk
+ );
+
+ HRESULT SetSourceDisplayName
+ (
+ [in]LPCOLESTR pszStatusText
+ );
+
+ HRESULT GetSourceDisplayName
+ (
+ [out] LPOLESTR *ppszDisplayName
+ );
+
+ HRESULT BindToSource
+ (
+ [in] DWORD bindflags,
+ [in, unique] IBindCtx *pbc
+ );
+
+ HRESULT BindIfRunning
+ (
+ void
+ );
+
+ HRESULT GetBoundSource
+ (
+ [out] IUnknown **ppunk
+ );
+
+ HRESULT UnbindSource
+ (
+ void
+ );
+
+ HRESULT Update
+ (
+ [in, unique] IBindCtx *pbc
+ );
+
+}
+
+[
+ object,
+ uuid(0000011c-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleItemContainer : IOleContainer
+{
+
+ typedef [unique] IOleItemContainer *LPOLEITEMCONTAINER;
+
+ typedef enum tagBINDSPEED
+ {
+ BINDSPEED_INDEFINITE = 1,
+ BINDSPEED_MODERATE = 2,
+ BINDSPEED_IMMEDIATE = 3
+ } BINDSPEED;
+
+ typedef [v1_enum] enum tagOLECONTF
+ {
+ OLECONTF_EMBEDDINGS = 1,
+ OLECONTF_LINKS = 2,
+ OLECONTF_OTHERS = 4,
+ OLECONTF_ONLYUSER = 8,
+ OLECONTF_ONLYIFRUNNING = 16
+ } OLECONTF;
+
+ [local]
+ HRESULT GetObject(
+ [in] LPOLESTR pszItem,
+ [in] DWORD dwSpeedNeeded,
+ [in, unique] IBindCtx *pbc,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvObject);
+
+ [call_as(GetObject)]
+ HRESULT RemoteGetObject(
+ [in] LPOLESTR pszItem,
+ [in] DWORD dwSpeedNeeded,
+ [in, unique] IBindCtx *pbc,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **ppvObject);
+
+ [local]
+ HRESULT GetObjectStorage(
+ [in] LPOLESTR pszItem,
+ [in, unique] IBindCtx *pbc,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvStorage);
+
+ [call_as(GetObjectStorage)]
+ HRESULT RemoteGetObjectStorage(
+ [in] LPOLESTR pszItem,
+ [in, unique] IBindCtx *pbc,
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown **ppvStorage);
+
+ HRESULT IsRunning(
+ [in] LPOLESTR pszItem);
+}
+
+[
+ object,
+ uuid(00000115-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleInPlaceUIWindow : IOleWindow
+{
+
+ typedef [unique] IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
+
+ typedef RECT BORDERWIDTHS;
+
+ typedef LPRECT LPBORDERWIDTHS;
+
+ typedef LPCRECT LPCBORDERWIDTHS;
+
+
+ [input_sync]
+ HRESULT GetBorder
+ (
+ [out] LPRECT lprectBorder
+ );
+
+ [input_sync]
+ HRESULT RequestBorderSpace
+ (
+ [in, unique] LPCBORDERWIDTHS pborderwidths
+ );
+
+ [input_sync]
+ HRESULT SetBorderSpace
+ (
+ [in, unique] LPCBORDERWIDTHS pborderwidths
+ );
+
+ HRESULT SetActiveObject
+ (
+ [in, unique] IOleInPlaceActiveObject *pActiveObject,
+ [in, string, unique] LPCOLESTR pszObjName
+ );
+
+}
+
+[
+ object,
+ uuid(00000117-0000-0000-C000-000000000046)
+]
+
+interface IOleInPlaceActiveObject : IOleWindow
+{
+
+ typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
+
+ [local]
+ HRESULT TranslateAccelerator
+ (
+ [in] LPMSG lpmsg
+ );
+
+ [call_as(TranslateAccelerator)]
+ HRESULT RemoteTranslateAccelerator();
+
+ [input_sync]
+ HRESULT OnFrameWindowActivate
+ (
+ [in] BOOL fActivate
+ );
+
+ [input_sync]
+ HRESULT OnDocWindowActivate
+ (
+ [in] BOOL fActivate
+ );
+
+ [local]
+ HRESULT ResizeBorder
+ (
+ [in] LPCRECT prcBorder,
+ [in, unique] IOleInPlaceUIWindow *pUIWindow,
+ [in] BOOL fFrameWindow
+ );
+
+ [call_as(ResizeBorder), input_sync]
+ HRESULT RemoteResizeBorder
+ (
+ [in] LPCRECT prcBorder,
+ [in] REFIID riid,
+ [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow,
+ [in] BOOL fFrameWindow
+ );
+
+ HRESULT EnableModeless
+ (
+ [in] BOOL fEnable
+ );
+
+}
+
+[
+ object,
+ uuid(00000116-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleInPlaceFrame : IOleInPlaceUIWindow
+{
+
+ typedef [unique] IOleInPlaceFrame *LPOLEINPLACEFRAME;
+
+
+typedef struct tagOIFI // OleInPlaceFrameInfo
+{
+ UINT cb;
+ BOOL fMDIApp;
+ HWND hwndFrame;
+ HACCEL haccel;
+ UINT cAccelEntries;
+} OLEINPLACEFRAMEINFO, * LPOLEINPLACEFRAMEINFO;
+
+
+typedef struct tagOleMenuGroupWidths
+{
+ LONG width[6];
+} OLEMENUGROUPWIDTHS, * LPOLEMENUGROUPWIDTHS;
+
+ typedef HGLOBAL HOLEMENU;
+
+ HRESULT InsertMenus
+ (
+ [in] HMENU hmenuShared,
+ [in,out] LPOLEMENUGROUPWIDTHS lpMenuWidths
+ );
+
+ [input_sync]
+ HRESULT SetMenu
+ (
+ [in] HMENU hmenuShared,
+ [in] HOLEMENU holemenu,
+ [in] HWND hwndActiveObject
+ );
+
+ HRESULT RemoveMenus
+ (
+ [in] HMENU hmenuShared
+ );
+
+ [input_sync]
+ HRESULT SetStatusText
+ (
+ [in] LPCOLESTR pszStatusText
+ );
+
+ HRESULT EnableModeless
+ (
+ [in] BOOL fEnable
+ );
+
+ HRESULT TranslateAccelerator
+ (
+ [in] LPMSG lpmsg,
+ [in] WORD wID
+ );
+
+}
+
+[
+ object,
+ uuid(00000113-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleInPlaceObject : IOleWindow
+{
+
+ typedef [unique] IOleInPlaceObject *LPOLEINPLACEOBJECT;
+
+
+ HRESULT InPlaceDeactivate
+ (
+ void
+ );
+
+ HRESULT UIDeactivate
+ (
+ void
+ );
+
+ [input_sync]
+ HRESULT SetObjectRects
+ (
+ [in] LPCRECT lprcPosRect,
+ [in] LPCRECT lprcClipRect
+ );
+
+ HRESULT ReactivateAndUndo
+ (
+ void
+ );
+}
+
+[
+ object,
+ uuid(00000119-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IOleInPlaceSite : IOleWindow
+{
+
+ typedef [unique] IOleInPlaceSite *LPOLEINPLACESITE;
+
+ HRESULT CanInPlaceActivate
+ (
+ void
+ );
+
+ HRESULT OnInPlaceActivate
+ (
+ void
+ );
+
+ HRESULT OnUIActivate
+ (
+ void
+ );
+
+ HRESULT GetWindowContext
+ (
+ [out] IOleInPlaceFrame **ppFrame,
+ [out] IOleInPlaceUIWindow **ppDoc,
+ [out] LPRECT lprcPosRect,
+ [out] LPRECT lprcClipRect,
+ [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo
+ );
+
+ HRESULT Scroll
+ (
+ [in] SIZE scrollExtant
+ );
+
+ HRESULT OnUIDeactivate
+ (
+ [in] BOOL fUndoable
+ );
+
+ HRESULT OnInPlaceDeactivate
+ (
+ void
+ );
+
+ HRESULT DiscardUndoState
+ (
+ void
+ );
+
+ HRESULT DeactivateAndUndo
+ (
+ void
+ );
+
+ HRESULT OnPosRectChange
+ (
+ [in] LPCRECT lprcPosRect
+ );
+
+}
+
+[
+ object,
+ uuid(0000012a-0000-0000-C000-000000000046)
+]
+
+interface IContinue : IUnknown
+{
+ HRESULT FContinue();
+}
+
+[
+ object,
+ uuid(0000010d-0000-0000-C000-000000000046)
+]
+
+interface IViewObject : IUnknown
+{
+
+ typedef [unique] IViewObject *LPVIEWOBJECT;
+
+ [local]
+ HRESULT Draw
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in, unique] void * pvAspect,
+ [in, unique] DVTARGETDEVICE *ptd,
+ [in] HDC hdcTargetDev,
+ [in] HDC hdcDraw,
+ [in] LPCRECTL lprcBounds,
+ [in, unique] LPCRECTL lprcWBounds,
+ [in] BOOL (*pfnContinue)(DWORD dwContinue),
+ [in] DWORD dwContinue
+ );
+
+ [call_as(Draw)]
+ HRESULT RemoteDraw
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in] DWORD pvAspect,
+ [in, unique] DVTARGETDEVICE *ptd,
+ [in] DWORD hdcTargetDev,
+ [in] DWORD hdcDraw,
+ [in] LPCRECTL lprcBounds,
+ [in, unique] LPCRECTL lprcWBounds,
+ [in] IContinue *pContinue
+ );
+
+ [local]
+ HRESULT GetColorSet
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in, unique] void *pvAspect,
+ [in, unique] DVTARGETDEVICE *ptd,
+ [in] HDC hicTargetDev,
+ [out] LOGPALETTE **ppColorSet
+ );
+
+ [call_as(GetColorSet)]
+ HRESULT RemoteGetColorSet
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in] DWORD pvAspect,
+ [in, unique] DVTARGETDEVICE *ptd,
+ [in] DWORD hicTargetDev,
+ [out] LOGPALETTE **ppColorSet
+ );
+
+ [local]
+ HRESULT Freeze
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in, unique] void *pvAspect,
+ [out] DWORD *pdwFreeze
+ );
+
+ [call_as(Freeze)]
+ HRESULT RemoteFreeze
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in] DWORD pvAspect,
+ [out] DWORD *pdwFreeze
+ );
+
+
+ HRESULT Unfreeze
+ (
+ [in] DWORD dwFreeze
+ );
+
+ HRESULT SetAdvise
+ (
+ [in] DWORD aspects,
+ [in] DWORD advf,
+ [in, unique] IAdviseSink *pAdvSink
+ );
+
+ HRESULT GetAdvise
+ (
+ [out] DWORD *pAspects,
+ [out] DWORD *pAdvf,
+ [out] IAdviseSink **ppAdvSink
+ );
+
+}
+
+[
+ object,
+ uuid(00000127-0000-0000-C000-000000000046)
+]
+
+interface IViewObject2 : IViewObject
+{
+
+ typedef [unique] IViewObject2 *LPVIEWOBJECT2;
+
+ HRESULT GetExtent
+ (
+ [in] DWORD dwDrawAspect,
+ [in] LONG lindex,
+ [in, unique] DVTARGETDEVICE* ptd,
+ [out] LPSIZEL lpsizel
+ );
+
+}
+
+
+[
+ local,
+ object,
+ uuid(00000121-0000-0000-C000-000000000046)
+]
+
+interface IDropSource : IUnknown
+{
+
+ typedef [unique] IDropSource *LPDROPSOURCE;
+
+ HRESULT QueryContinueDrag
+ (
+ [in] BOOL fEscapePressed,
+ [in] DWORD grfKeyState
+ );
+
+ HRESULT GiveFeedback
+ (
+ [in] DWORD dwEffect
+ );
+}
+
+[
+ object,
+ uuid(00000122-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IDropTarget : IUnknown
+{
+
+ typedef [unique] IDropTarget *LPDROPTARGET;
+
+
+ const DWORD MK_ALT = 0x0020;
+
+ const DWORD DROPEFFECT_NONE = 0;
+ const DWORD DROPEFFECT_COPY = 1;
+ const DWORD DROPEFFECT_MOVE = 2;
+ const DWORD DROPEFFECT_LINK = 4;
+ const DWORD DROPEFFECT_SCROLL = 0x80000000;
+
+ cpp_quote("// default inset-width of the hot zone, in pixels")
+ cpp_quote("// typical use: GetProfileInt(\"windows\",\"DragScrollInset\",DD_DEFSCROLLINSET)")
+ const DWORD DD_DEFSCROLLINSET = 11;
+
+ cpp_quote("// default delay before scrolling, in milliseconds")
+ cpp_quote("// typical use: GetProfileInt(\"windows\",\"DragScrollDelay\",DD_DEFSCROLLDELAY)")
+ const DWORD DD_DEFSCROLLDELAY = 50;
+
+ cpp_quote("// default scroll interval, in milliseconds")
+ cpp_quote("// typical use: GetProfileInt(\"windows\",\"DragScrollInterval\", DD_DEFSCROLLINTERVAL)")
+ const DWORD DD_DEFSCROLLINTERVAL = 50;
+
+ cpp_quote("// default delay before dragging should start, in milliseconds")
+ cpp_quote("// typical use: GetProfileInt(\"windows\", \"DragDelay\", DD_DEFDRAGDELAY)")
+ const DWORD DD_DEFDRAGDELAY = 200;
+
+ cpp_quote("// default minimum distance (radius) before dragging should start, in pixels")
+ cpp_quote("// typical use: GetProfileInt(\"windows\", \"DragMinDist\", DD_DEFDRAGMINDIST)")
+ const DWORD DD_DEFDRAGMINDIST = 2;
+
+
+ HRESULT DragEnter
+ (
+ [in, unique] IDataObject *pDataObj,
+ [in] DWORD grfKeyState,
+ [in] POINTL pt,
+ [in, out] DWORD *pdwEffect
+ );
+
+ HRESULT DragOver
+ (
+ [in] DWORD grfKeyState,
+ [in] POINTL pt,
+ [in, out] DWORD *pdwEffect
+ );
+
+ HRESULT DragLeave
+ (
+ void
+ );
+
+ HRESULT Drop
+ (
+ [in, unique] IDataObject *pDataObj,
+ [in] DWORD grfKeyState,
+ [in] POINTL pt,
+ [in, out] DWORD *pdwEffect
+ );
+}
+
+[
+ object,
+ uuid(00000104-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumOLEVERB : IUnknown
+{
+
+ typedef [unique] IEnumOLEVERB *LPENUMOLEVERB;
+
+ typedef struct tagOLEVERB {
+ LONG lVerb;
+ LPOLESTR lpszVerbName;
+ DWORD fuFlags;
+ DWORD grfAttribs;
+ } OLEVERB, * LPOLEVERB;
+
+ // Bitwise verb attributes used in OLEVERB.grfAttribs
+ typedef [v1_enum] enum tagOLEVERBATTRIB // bitwise
+ {
+ OLEVERBATTRIB_NEVERDIRTIES = 1,
+ OLEVERBATTRIB_ONCONTAINERMENU = 2
+ } OLEVERBATTRIB;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ LPOLEVERB rgelt,
+ [out] ULONG *pceltFetched);
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pceltFetched)]
+ LPOLEVERB rgelt,
+ [out] ULONG *pceltFetched);
+
+ HRESULT Skip(
+ [in] ULONG celt);
+
+ HRESULT Reset();
+
+ HRESULT Clone(
+ [out] IEnumOLEVERB **ppenum);
+}
diff --git a/public/sdk/inc/oleobj.h b/public/sdk/inc/oleobj.h
new file mode 100644
index 000000000..53f4f2c0c
--- /dev/null
+++ b/public/sdk/inc/oleobj.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: oleobj.h
+//
+// Contents: Replacement for oleobj.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/olewnd.h b/public/sdk/inc/olewnd.h
new file mode 100644
index 000000000..84035351a
--- /dev/null
+++ b/public/sdk/inc/olewnd.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: olewnd.h
+//
+// Contents: Replacement for olewnd.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/olink.h b/public/sdk/inc/olink.h
new file mode 100644
index 000000000..7d3697040
--- /dev/null
+++ b/public/sdk/inc/olink.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: olink.h
+//
+// Contents: Replacement for olink.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/ossber.h b/public/sdk/inc/ossber.h
new file mode 100644
index 000000000..faa5c65ac
--- /dev/null
+++ b/public/sdk/inc/ossber.h
@@ -0,0 +1,716 @@
+/*****************************************************************************/
+/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/
+/*****************************************************************************/
+
+/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC.
+ * AND MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC.
+ * THIS FILE MAY NOT BE DISTRIBUTED. */
+
+/**************************************************************************/
+/*
+ * FILE: @(#)coderror.h 5.2 96/01/04
+# @(#)errindex.sh 1.5 94/06/22
+ */
+/* FILE: @(#)ossber.hh 5.4 96/04/23 */
+/* */
+/* function: Define the interfaces to the routines in ossber.a for the */
+/* OSS optimized encoder and decoder. */
+/* */
+/* */
+/* changes: */
+/* 06/28/90 pet created */
+/* */
+/**************************************************************************/
+
+#ifndef ossber_hdr_file
+#define ossber_hdr_file
+
+#include <setjmp.h>
+#include "asn1hdr.h"
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(push, ossPacking, 4)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack(1)
+#elif defined(__BORLANDC__) && defined(__MSDOS__)
+#pragma option -a1
+#elif defined(__BORLANDC__) && defined(__WIN32__)
+#pragma option -a4
+#elif defined(__IBMC__)
+#pragma pack(4)
+#endif /* _MSC_VER && _WIN32 */
+
+#define _dstd_parms_def char **_pos, long *_buf_len, long _length
+#define _dstd_parms _pos, _buf_len, _length
+#define _sdstd_parms_def char **_pos, long *_buf_len
+#define _sdstd_parms _pos, _buf_len
+
+#define _std_parms_def char **_pos, long *_max_len, _Bool _userbuf
+#define _std_parms _pos, _max_len, _userbuf
+
+#ifndef _BOOL
+#define _BOOL
+typedef char _Bool;
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/* Entry Points for the Interface Routines */
+
+#ifndef _OSSNOANSI
+
+typedef int (DLL_ENTRY_FPTR *_Encode_function)(struct ossGlobal *world, int pdunum,
+ void *inbuf, char **outbuf, long *outlen,
+ void *ctl_tbl, unsigned flags,
+ char errmsg[]);
+
+typedef int (DLL_ENTRY_FPTR *_Decode_function)(struct ossGlobal *world, int *pduNum,
+ char **inbuf, long *inlen, void **outbuf,
+ long *outlen, void *ctl_tbl, unsigned flags,
+ char errmsg[]);
+
+typedef int (DLL_ENTRY_FPTR *_FreePDU_function)(struct ossGlobal *world, int pdunum,
+ void *data, void *ctl_tbl);
+
+typedef void (DLL_ENTRY_FPTR *_Ossinit_function)(struct ossGlobal *);
+
+#else
+
+typedef int (*_Encode_function)();
+
+typedef int (*_Decode_function)();
+
+typedef int (*_FreePDU_function)();
+
+typedef void (*_Ossinit_function)();
+
+#endif /* _OSSNOANSI */
+
+
+typedef struct _entry_point_struct_ {
+ _Ossinit_function _ossinit_function;
+ _Encode_function _ber_encode_function;
+ _Decode_function _ber_decode_function;
+ _FreePDU_function _freePDU_function;
+ unsigned short int _oss_ber_version_number;
+ _Encode_function _per_encode_function;
+ _Decode_function _per_decode_function;
+ unsigned short int _oss_per_version_number;
+ unsigned int _oss_pa_count;
+ struct _char_data *_chars_ptr;
+} _entry_point_struct;
+
+
+
+
+
+/* Error Handling */
+
+
+/* The index to the error messages. NOTE: The enumerated constants here
+ must match those in coderror.h. */
+
+enum _err_index {
+_no_msg , _small_buffer , _type_not_impl , _pdu_range ,
+_bad_argument , _version_mismatch_toed , _version_mismatch_soed ,
+_out_stor , _bad_choice , _stor_error , _int_too_long ,
+_uint_too_long , _bit_str_comp , _access_serialization ,
+_constrainedBy , _singleValue_integer , _singleValue_uinteger ,
+_singleValue_real , _singleValue_string , _singleValue_void ,
+_valueRange_integer , _valueRange_uinteger , _valueRange_real ,
+_sizeConstraint_length , _sizeConstraint_number , _oPA_constraint,
+_absence_constraint , _presence_constraint , _openType_denc ,
+_tableConstraint , _componentRelation , _not_enumerated ,
+_null_tbl , _null_fcn , _corrupted_tbl , _neg_uinteger ,
+_typeConstraint , _bit_str_too_long , _more_input , _more_output,
+_zero_bytes_requested , _size_too_big , _out_of_memory ,
+_invalid_object , _memmgr_undefined_err , _bad_encrules_err ,
+_toed_rules_not_impl_err , _unlinked_encrules_err ,
+_table_mismatch, _type_not_supported, _type_not_supported_decreal,
+_real_dll_failed, _indef_length_not_supported, _front_align_not_supported,
+_only_user_buf_supported, _user_buf_not_supported, _cstrain_dll_failed,
+_cmp_dll_failed, _cmp_code_not_linked, _real_code_not_linked,
+_bad_objid , _bad_pointer , _bad_time , _bad_der_time,
+_too_long , _toom_field , _mandatory_field , _zero_length_ANY ,
+_zero_length_OpenType , _inval_dec_real , _inval_mixed_real ,
+_tag_long_nec , _tag_too_long , _exp_long_nec , _exp_too_long ,
+_int_long_nec , _subid_long_nec , _subid_too_long ,
+_length_too_long , _size_too_long , _non_std_eoc , _unknown_size,
+_inconsis_len , _tag_mismatch , _pdu_mismatch , _extra_bits ,
+_inval_enc , _no_dec_dig , _no_exp_dig , _inval_nr1 , _inval_nr2,
+_inval_nr3 , _real_long_zero , _undef_enc , _truncate ,
+_null_in_nlltrm , _unknown_field , _field_repeat , _field_omit ,
+_expec_eoc , _indef_len_prim , _expec_constr_fnd_prim ,
+_expec_prim_fnd_constr , _unknown_type , _end_of_input ,
+_cannot_happen , _neg_not_allowed , _expect_tag , _more_value ,
+_real_too_large, _hindmost_error
+};
+
+
+
+/* typedef's for the context information */
+
+typedef enum _context_type {
+ _boolean_type, _integer_type, _enumerated_type, _real_type,
+ _bitstring_type, _octetstring_type, _null_type, _sequence_type,
+ _sequence_of_type, _set_type, _set_of_type, _choice_type,
+ _charstring_type, _object_identifier_type, _time_type, _any_type,
+ _opentype
+} _Context_Type;
+
+typedef struct _context_id {
+ char *_element_name;
+ char *_element_type;
+ _Context_Type _type;
+} _Context_Id;
+
+
+typedef struct _context_element {
+ struct _context_element *_parent;
+ _Context_Id *_id;
+ long _occurrence;/* For SET OF or SEQUENCE OF */
+} _Context_Element;
+
+typedef enum _context_state {
+ _encoding_tag, _encoding_length, _encoding_data,
+ _decoding_tag, _decoding_length, _decoding_data
+} _Context_State;
+
+typedef struct _context_anchor {
+ _Context_Element *_last;
+ int _pdu_number;
+ _Context_Id *_pdu_id;
+ _Context_State _state;
+} _Context_Anchor;
+
+typedef char _Per_Inverted_Index[128];
+
+
+extern _Context_Anchor _oss_context_anchor;
+
+/* The error routines */
+
+#ifndef _OSSNOANSI
+
+extern void DLL_ENTRY _oss_enc_error(struct ossGlobal *g, _Bool _jump,
+ enum _err_index _error_code, long _data);
+
+#else
+
+extern void _oss_enc_error();
+
+#endif /* _OSSNOANSI */
+
+
+#define _oss_dec_error _oss_enc_error
+
+
+
+#ifndef _OSSNOANSI
+
+/* Encode Routines */
+
+extern long DLL_ENTRY _oss_encd_length(struct ossGlobal *g, _std_parms_def,
+ unsigned long _data);
+extern void DLL_ENTRY _oss_enci_length(struct ossGlobal *g, _std_parms_def,
+ unsigned long _data);
+extern long DLL_ENTRY _oss_encd_tag(struct ossGlobal *g, _std_parms_def,
+ unsigned short _data, _Bool _constructed);
+extern void DLL_ENTRY _oss_enci_tag(struct ossGlobal *g, _std_parms_def,
+ unsigned short _data, _Bool _constructed);
+extern long DLL_ENTRY _oss_encd_bool(struct ossGlobal *g, _std_parms_def,
+ ossBoolean _data);
+extern void DLL_ENTRY _oss_enci_bool(struct ossGlobal *g, _std_parms_def,
+ ossBoolean _data);
+extern long DLL_ENTRY _oss_encd_int(struct ossGlobal *g, _std_parms_def,
+ LONG_LONG _data);
+extern void DLL_ENTRY _oss_enci_int(struct ossGlobal *g, _std_parms_def,
+ LONG_LONG _data);
+extern long DLL_ENTRY _oss_encd_uint(struct ossGlobal *g, _std_parms_def,
+ ULONG_LONG _data);
+extern void DLL_ENTRY _oss_enci_uint(struct ossGlobal *g, _std_parms_def,
+ ULONG_LONG _data);
+extern long DLL_ENTRY _oss_encd_huge_int(struct ossGlobal *g, _std_parms_def,
+ void *_data);
+extern long DLL_ENTRY _oss_encd_real(struct ossGlobal *g, _std_parms_def,
+ double _data);
+extern long DLL_ENTRY _oss_encd_creal(struct ossGlobal *g, _std_parms_def,
+ char *_data);
+extern long DLL_ENTRY _oss_encd_mreal(struct ossGlobal *g, _std_parms_def,
+ MixedReal *_data);
+extern void DLL_ENTRY _oss_enci_real(struct ossGlobal *g, _std_parms_def,
+ double _data);
+extern void DLL_ENTRY _oss_enci_creal(struct ossGlobal *g, _std_parms_def,
+ char *_data);
+extern void DLL_ENTRY _oss_enci_mreal(struct ossGlobal *g, _std_parms_def,
+ MixedReal *_data);
+extern long DLL_ENTRY _oss_encd_alobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, short _array_size);
+extern long DLL_ENTRY _oss_encd_asobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, short _array_size);
+extern long DLL_ENTRY _oss_encd_aiobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, short _array_size);
+extern void DLL_ENTRY _oss_enci_alobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, short _array_size);
+extern void DLL_ENTRY _oss_enci_asobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, short _array_size);
+extern void DLL_ENTRY _oss_enci_aiobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, short _array_size);
+extern long DLL_ENTRY _oss_encd_llobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern long DLL_ENTRY _oss_encd_lsobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern long DLL_ENTRY _oss_encd_liobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern void DLL_ENTRY _oss_enci_llobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern void DLL_ENTRY _oss_enci_lsobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern void DLL_ENTRY _oss_enci_liobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern long DLL_ENTRY _oss_encd_ulobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern long DLL_ENTRY _oss_encd_usobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern long DLL_ENTRY _oss_encd_uiobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern void DLL_ENTRY _oss_enci_ulobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern void DLL_ENTRY _oss_enci_usobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern void DLL_ENTRY _oss_enci_uiobjid(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _size_c);
+extern long DLL_ENTRY _oss_encd_pbit(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _bit_count);
+extern void DLL_ENTRY _oss_enci_pbit(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _bit_count);
+extern long DLL_ENTRY _oss_encd_ubit(struct ossGlobal *g, _std_parms_def,
+ void *_data, char _lengthsize, long _size_c);
+extern void DLL_ENTRY _oss_enci_ubit(struct ossGlobal *g, _std_parms_def,
+ void *_data, char _lengthsize, long _size_c);
+extern long DLL_ENTRY _oss_encd_vbit(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _array_size,
+ char _lengthsize);
+extern void DLL_ENTRY _oss_enci_vbit(struct ossGlobal *g, _std_parms_def,
+ void *_data, long _array_size,
+ char _lengthsize);
+extern long DLL_ENTRY _oss_encd_nstr(struct ossGlobal *g, _std_parms_def,
+ char *_data, long _size_c);
+extern void DLL_ENTRY _oss_enci_nstr(struct ossGlobal *g, _std_parms_def,
+ char *_data, long _size_c);
+extern long DLL_ENTRY _oss_encd_pstr(struct ossGlobal *g, _std_parms_def,
+ char *_data, long _byte_count);
+extern void DLL_ENTRY _oss_enci_pstr(struct ossGlobal *g, _std_parms_def,
+ char *_data, long _byte_count);
+extern long DLL_ENTRY _oss_encd_ustr(struct ossGlobal *g, _std_parms_def,
+ void *_data, char _lengthsize, long _size_c);
+extern void DLL_ENTRY _oss_enci_ustr(struct ossGlobal *g, _std_parms_def,
+ void *_data, char _lengthsize, long _size_c);
+extern long DLL_ENTRY _oss_encd_vstr(struct ossGlobal *g, _std_parms_def,
+ void *_data, char _lengthsize, long _size_c);
+extern void DLL_ENTRY _oss_enci_vstr(struct ossGlobal *g, _std_parms_def,
+ void *_data, char _lengthsize, long _size_c);
+extern long DLL_ENTRY _oss_encd_uoct(struct ossGlobal *g, _std_parms_def,
+ void *_data, char _lengthsize, long _size_c);
+extern void DLL_ENTRY _oss_enci_uoct(struct ossGlobal *g, _std_parms_def,
+ void *_data, char _lengthsize, long _size_c);
+extern long DLL_ENTRY _oss_encd_voct(struct ossGlobal *g, _std_parms_def,
+ void *_data, char _lengthsize, long _size_c);
+extern void DLL_ENTRY _oss_enci_voct(struct ossGlobal *g, _std_parms_def,
+ void *_data, char _lengthsize, long _size_c);
+extern long DLL_ENTRY _oss_encd_gtime(struct ossGlobal *g, _std_parms_def,
+ GeneralizedTime*_data);
+extern void DLL_ENTRY _oss_enci_gtime(struct ossGlobal *g, _std_parms_def,
+ GeneralizedTime *_data);
+extern long DLL_ENTRY _oss_encd_utime(struct ossGlobal *g, _std_parms_def,
+ UTCTime *_data);
+extern void DLL_ENTRY _oss_enci_utime(struct ossGlobal *g, _std_parms_def,
+ UTCTime *_data);
+extern long DLL_ENTRY _oss_encd_uany(struct ossGlobal *g, _std_parms_def,
+ void *_data);
+extern void DLL_ENTRY _oss_enci_uany(struct ossGlobal *g, _std_parms_def,
+ void *_data);
+extern long DLL_ENTRY _oss_encd_opentype(struct ossGlobal *g, _std_parms_def,
+ void *_data);
+extern void DLL_ENTRY _oss_enci_opentype(struct ossGlobal *g, _std_parms_def,
+ void *_data);
+extern long DLL_ENTRY _oss_encd_bmpstr(struct ossGlobal *g, _std_parms_def,
+ void *data, char lengthsize,
+ long size_c);
+extern long DLL_ENTRY _oss_enci_bmpstr(struct ossGlobal *g, _std_parms_def,
+ void *data, char lengthsize,
+ long size_c);
+extern long DLL_ENTRY _oss_encd_unistr(struct ossGlobal *g, _std_parms_def,
+ void *data, char lengthsize,
+ long size_c);
+extern long DLL_ENTRY _oss_enci_unistr(struct ossGlobal *g, _std_parms_def,
+ void *data, char lengthsize,
+ long size_c);
+
+/* Decode Routines */
+/* these return values */
+extern void DLL_ENTRY _oss_dec_tag(struct ossGlobal *g, _sdstd_parms_def,
+ unsigned short *tag, _Bool *con);
+extern long DLL_ENTRY _oss_dec_length(struct ossGlobal *g, _sdstd_parms_def);
+
+
+extern ossBoolean DLL_ENTRY _oss_dec_bool(struct ossGlobal *g, _dstd_parms_def);
+extern LONG_LONG DLL_ENTRY _oss_dec_llint(struct ossGlobal *g, _dstd_parms_def);
+extern long DLL_ENTRY _oss_dec_lint(struct ossGlobal *g, _dstd_parms_def);
+extern int DLL_ENTRY _oss_dec_iint(struct ossGlobal *g, _dstd_parms_def);
+extern short DLL_ENTRY _oss_dec_sint(struct ossGlobal *g, _dstd_parms_def);
+extern void DLL_ENTRY _oss_dec_hint(struct ossGlobal *g, _dstd_parms_def,
+ _Bool userbuf, void *data);
+extern ULONG_LONG DLL_ENTRY _oss_dec_ullint(struct ossGlobal *g, _dstd_parms_def);
+extern unsigned long DLL_ENTRY _oss_dec_ulint(struct ossGlobal *g, _dstd_parms_def);
+extern unsigned int DLL_ENTRY _oss_dec_uiint(struct ossGlobal *g, _dstd_parms_def);
+extern unsigned short DLL_ENTRY _oss_dec_usint(struct ossGlobal *g, _dstd_parms_def);
+
+/* The code for this one is so huge that it would be criminal to
+ * repeat it three times. Caller should cast the returned value
+ * to what she wants.
+ */
+extern void DLL_ENTRY _oss_dec_real(struct ossGlobal *g, _dstd_parms_def,
+ double *data);
+extern void DLL_ENTRY _oss_dec_freal(struct ossGlobal *g, _dstd_parms_def,
+ float *data);
+extern void DLL_ENTRY _oss_dec_creal(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, char **_data);
+extern void DLL_ENTRY _oss_dec_mreal(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, MixedReal *_data);
+
+/* Two versions of these functions. If the type has the pointer
+ * directive, then its size is not fixed--the function will allocate
+ * the memory. Otherwise the caller allocates the memory. (Actually,
+ * the type will probably be enclosed in another type, and therefore
+ * the memory has already been allocated.)
+ */
+extern void DLL_ENTRY _oss_dec_alobjid_ptr(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void **_data,
+ short _array_size);
+extern void DLL_ENTRY _oss_dec_alobjid(struct ossGlobal *g, _dstd_parms_def,
+ void *_data, short _array_size);
+
+extern void DLL_ENTRY _oss_dec_aiobjid_ptr(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void **_data,
+ short _array_size);
+extern void DLL_ENTRY _oss_dec_aiobjid(struct ossGlobal *g, _dstd_parms_def,
+ void *_data, short _array_size);
+
+extern void DLL_ENTRY _oss_dec_asobjid_ptr(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void **_data,
+ short _array_size);
+extern void DLL_ENTRY _oss_dec_asobjid(struct ossGlobal *g, _dstd_parms_def,
+ void *_data, short _array_size);
+
+/* These allocate all their own memory. */
+extern void DLL_ENTRY _oss_dec_llobjid(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void **_data, long _size_c);
+extern void DLL_ENTRY _oss_dec_liobjid(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void **_data, long _size_c);
+extern void DLL_ENTRY _oss_dec_lsobjid(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void **_data, long _size_c);
+
+/* These are passed the structure containing the count, but allocate
+ * space for the data itself. */
+extern void DLL_ENTRY _oss_dec_ulobjid(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void *_data, short _size_c);
+extern void DLL_ENTRY _oss_dec_uiobjid(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void *_data, short _size_c);
+extern void DLL_ENTRY _oss_dec_usobjid(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void *_data, short _size_c);
+
+/* Caller allocates memory for this one. Call for both e_pad & e_big_pad. */
+extern void DLL_ENTRY _oss_dec_pbit(struct ossGlobal *g, _dstd_parms_def,
+ void *_data, unsigned long _bit_count,
+ _Bool _cons, _Bool _named_bits);
+
+/* See comment before dec_ulobjid. */
+extern void DLL_ENTRY _oss_dec_ubit(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void *_data,
+ char _lengthsize, long _size_c, _Bool _cons);
+
+/* Two versions of this one too. */
+extern void DLL_ENTRY _oss_dec_vbit_ptr(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void **_data,
+ long _array_size, char _lengthsize,
+ _Bool _cons);
+extern void DLL_ENTRY _oss_dec_vbit(struct ossGlobal *g, _dstd_parms_def,
+ void *_data, long _array_size,
+ char _lengthsize, _Bool _cons);
+
+extern void DLL_ENTRY _oss_dec_nstr_ptr(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, char **_data, long _size_c,
+ _Bool _cons);
+extern void DLL_ENTRY _oss_dec_nstr(struct ossGlobal *g, _dstd_parms_def,
+ char *_data, long _size_c, _Bool _cons);
+
+extern void DLL_ENTRY _oss_dec_pstr(struct ossGlobal *g, _dstd_parms_def,
+ char *_data, long _byte_count, _Bool _cons);
+extern void DLL_ENTRY _oss_dec_ustr(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void *_data,
+ char _lengthsize, long _size_c, _Bool _cons);
+
+extern void DLL_ENTRY _oss_dec_vstr_ptr(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void **_data,
+ char _lengthsize, long _size_c, _Bool _cons);
+extern void DLL_ENTRY _oss_dec_vstr(struct ossGlobal *g, _dstd_parms_def,
+ void *_data, char _lengthsize, long _array_size,
+ _Bool _cons);
+
+extern void DLL_ENTRY _oss_dec_uoct(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void *_data,
+ char _lengthsize, long _size_c, _Bool _cons);
+
+extern void DLL_ENTRY _oss_dec_voct_ptr(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void **_data,
+ char _lengthsize, long _size_c, _Bool _cons);
+extern void DLL_ENTRY _oss_dec_voct(struct ossGlobal *g, _dstd_parms_def,
+ void *_data, char _lengthsize, long _array_size,
+ _Bool _cons);
+
+extern void DLL_ENTRY _oss_dec_gtime(struct ossGlobal *g, _dstd_parms_def,
+ GeneralizedTime *_data);
+extern void DLL_ENTRY _oss_dec_utime(struct ossGlobal *g, _dstd_parms_def,
+ UTCTime *_data);
+
+extern void DLL_ENTRY _oss_dec_uany(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void *_data);
+
+extern void DLL_ENTRY _oss_dec_opentype(struct ossGlobal *g, _dstd_parms_def,
+ _Bool _userbuf, void *_data);
+
+extern void DLL_ENTRY _oss_dec_bmpstr(struct ossGlobal *g, _dstd_parms_def,
+ _Bool userbuf, void *data,
+ char lengthsize, long size_c, _Bool cons);
+extern void DLL_ENTRY _oss_dec_unistr(struct ossGlobal *g, _dstd_parms_def,
+ _Bool userbuf, void *data,
+ char lengthsize, long size_c, _Bool cons);
+
+/* Other functions */
+
+/* called to count the items for set of or sequence of. */
+extern long DLL_ENTRY _oss_count_setof_items(struct ossGlobal *g, _dstd_parms_def);
+
+/* called to skip past items for the EXTENSIBLE directive */
+extern void _oss_skip_past_item(struct ossGlobal *g, _dstd_parms_def);
+
+#else
+
+/* Encode Routines */
+
+extern long _oss_encd_length();
+extern void _oss_enci_length();
+extern long _oss_encd_tag();
+extern void _oss_enci_tag();
+
+
+extern long _oss_encd_bool();
+extern void _oss_enci_bool();
+extern long _oss_encd_int();
+extern void _oss_enci_int();
+extern long _oss_encd_uint();
+extern void _oss_enci_uint();
+extern void _oss_encd_huge_int();
+extern long _oss_encd_real();
+extern void _oss_enci_real();
+extern long _oss_encd_alobjid();
+extern long _oss_encd_asobjid();
+extern long _oss_encd_aiobjid();
+extern void _oss_enci_alobjid();
+extern void _oss_enci_asobjid();
+extern void _oss_enci_aiobjid();
+extern long _oss_encd_llobjid();
+extern long _oss_encd_lsobjid();
+extern long _oss_encd_liobjid();
+extern void _oss_enci_llobjid();
+extern void _oss_enci_lsobjid();
+extern void _oss_enci_liobjid();
+extern long _oss_encd_ulobjid();
+extern long _oss_encd_usobjid();
+extern long _oss_encd_uiobjid();
+extern void _oss_enci_ulobjid();
+extern void _oss_enci_usobjid();
+extern void _oss_enci_uiobjid();
+extern long _oss_encd_pbit();
+extern void _oss_enci_pbit();
+extern long _oss_encd_ubit();
+extern void _oss_enci_ubit();
+extern long _oss_encd_vbit();
+extern void _oss_enci_vbit();
+extern long _oss_encd_nstr();
+extern void _oss_enci_nstr();
+extern long _oss_encd_pstr();
+extern void _oss_enci_pstr();
+extern long _oss_encd_ustr();
+extern void _oss_enci_ustr();
+extern long _oss_encd_vstr();
+extern void _oss_enci_vstr();
+extern long _oss_encd_uoct();
+extern void _oss_enci_uoct();
+extern long _oss_encd_voct();
+extern void _oss_enci_voct();
+extern long _oss_encd_gtime();
+extern void _oss_enci_gtime();
+extern long _oss_encd_utime();
+extern void _oss_enci_utime();
+extern long _oss_encd_uany();
+extern void _oss_enci_uany();
+extern long _oss_encd_opentype();
+extern void _oss_enci_opentype();
+extern long _oss_encd_bmpstr();
+extern long _oss_enci_bmpstr();
+extern long _oss_encd_unistr();
+extern long _oss_enci_unistr();
+
+/* Decode Routines */
+/* these return values */
+extern void _oss_dec_tag();
+extern long _oss_dec_length();
+
+
+extern ossBoolean _oss_dec_bool();
+extern long _oss_dec_lint();
+extern int _oss_dec_iint();
+extern short _oss_dec_sint();
+extern void _oss_dec_hint();
+extern unsigned long _oss_dec_ulint();
+extern unsigned int _oss_dec_uiint();
+extern unsigned short _oss_dec_usint();
+
+/* The code for this one is so huge that it would be criminal to
+ * repeat it three times. Caller should cast the returned value
+ * to what she wants.
+ */
+extern double _oss_dec_real();
+
+/* Two versions of these functions. If the type has the pointer
+ * directive, then its size is not fixed--the function will allocate
+ * the memory. Otherwise the caller allocates the memory. (Actually,
+ * the type will probably be enclosed in another type, and therefore
+ * the memory has already been allocated.)
+ */
+extern void _oss_dec_alobjid_ptr();
+extern void _oss_dec_alobjid();
+
+extern void _oss_dec_aiobjid_ptr();
+extern void _oss_dec_aiobjid();
+
+extern void _oss_dec_asobjid_ptr();
+extern void _oss_dec_asobjid();
+
+/* These allocate all their own memory. */
+extern void _oss_dec_llobjid();
+extern void _oss_dec_liobjid();
+extern void _oss_dec_lsobjid();
+
+/* These are passed the structure containing the count, but allocate
+ * space for the data itself. */
+extern void _oss_dec_ulobjid();
+extern void _oss_dec_uiobjid();
+extern void _oss_dec_usobjid();
+
+/* Caller allocates memory for this one. Call for both e_pad & e_big_pad. */
+extern void _oss_dec_pbit();
+
+/* See comment before dec_ulobjid. */
+extern void _oss_dec_ubit();
+
+/* Two versions of this one too. */
+extern void _oss_dec_vbit_ptr();
+extern void _oss_dec_vbit();
+
+extern void _oss_dec_nstr_ptr();
+extern void _oss_dec_nstr();
+
+extern void _oss_dec_pstr();
+extern void _oss_dec_ustr();
+
+extern void _oss_dec_vstr_ptr();
+extern void _oss_dec_vstr();
+
+extern void _oss_dec_uoct();
+
+extern void _oss_dec_voct_ptr();
+extern void _oss_dec_voct();
+
+extern void _oss_dec_gtime();
+extern void _oss_dec_utime();
+
+extern void _oss_dec_uany();
+
+extern void _oss_dec_opentype();
+
+extern void _oss_dec_bmpstr();
+extern void _oss_dec_unistr();
+
+
+/* Other functions */
+
+/* called to count the items for set of or sequence of. */
+extern long _oss_count_setof_items();
+
+/* called to skip past items for the EXTENSIBLE directive */
+extern void _oss_skip_past_item();
+
+#endif /* _OSSNOANSI */
+
+typedef struct _EncDecGlobals {
+
+ jmp_buf *_oss_err_env;
+#ifndef _OSSNOANSI
+ void (*_old_sigsegv)(int);
+ void (*_old_sigbus)(int);
+#else
+ void (*_old_sigsegv)();
+ void (*_old_sigbus)();
+#endif
+ int _oss_asn1err;
+ char *_oss_err_msg;
+ _Bool _buffer_provided;
+ _Bool _tag_decoded;
+ _Bool _restrain_mode;
+ long _restrain_size;
+ _Context_Anchor _oss_context_anchor;
+ char *_oss_outbufpos;
+ long _oss_outbuflen;
+ _mem_array _oss_mem;
+ _mem_array *_oss_mem_tail;
+ _mem_array *_oss_temp_tail;
+ _mem_array _oss_temp_mem;
+ long _oss_mem_alloc;
+ long _oss_out_alloc;
+ unsigned int relax_ber: 1;
+ unsigned char man[sizeof(double)];
+#if defined(_WINDOWS) || defined(_DLL)
+ void (DLL_ENTRY_FPTR *_oss_enc_error)(struct ossGlobal *g, _Bool _jump,
+ enum _err_index _error_code, long _data);
+#endif /* _WINDOWS | _DLL */
+ _Bool _aligned;
+ int _bitpos;
+ struct ossGlobal *_prev;
+ _Per_Inverted_Index *_ia;
+ _Bool _ia_aligned;
+ char *_oss_inbufpos;
+ long _oss_inbuflen;
+ void *_prevbuf;
+} _EncDecGlobals;
+
+#ifdef __cplusplus
+}
+#endif
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(pop, ossPacking)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack()
+#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__))
+#pragma option -a.
+#elif defined(__IBMC__)
+#pragma pack()
+#endif /* _MSC_VER && _WIN32 */
+
+#endif /* ossber_hdr_file */
diff --git a/public/sdk/inc/ossdll.h b/public/sdk/inc/ossdll.h
new file mode 100644
index 000000000..13a1c622b
--- /dev/null
+++ b/public/sdk/inc/ossdll.h
@@ -0,0 +1,405 @@
+/*
+ * Copyright (C) 1993-1996 Open Systems Solutions, Inc. All rights reserved.
+ *
+ * THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC.
+ * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC.
+ * THIS FILE MAY NOT BE DISTRIBUTED.
+ *
+ * FILE: @(#)ossdll.h 5.7 96/04/23
+ */
+
+
+#ifndef OSSDLL_H
+#define OSSDLL_H
+
+#if defined(_WIN32) && defined(_MSC_VER)
+#define LONG_LONG __int64
+#elif defined(__BORLANDC__)
+#define LONG_LONG long
+#endif /* _WIN32 && _MSC_VER */
+
+typedef enum {
+ OSS_DEFAULT_MEMMGR = 0, /* memory is malloc'ed for each pointer in
+ * data tree */
+ OSS_FILE_MEMMGR, /* file memory manager with memory malloc'ed
+ * for each pointer in data tree */
+ OSS_SOCKET_MEMMGR, /* TCP/IP socket and file memory manager with memory
+ * malloc'ed for each pointer in data tree */
+ OSS_FLAT_MEMMGR, /* memory is malloc'ed in large blocks */
+ OSS_OSAK_MEMMGR, /* OSAK-buffer memory manager */
+ OSS_USER_MEMMGR /* user memory manager */
+} OssMemMgrType;
+
+#if defined(_WINDOWS) || defined(_DLL) || \
+ defined(OS2_DLL) || defined(NETWARE_DLL)
+#include <stdio.h>
+#if defined(_WINDOWS) || defined(_DLL)
+#include <windows.h>
+#elif defined(OS2_DLL)
+#define HWND int
+#define LONG long
+#define BOOL char
+#define DWORD unsigned long
+#define HINSTANCE unsigned long
+#elif defined(NETWARE_DLL)
+#define LONG unsigned long
+#define HWND int
+#define DWORD LONG
+#define BOOL char
+#define HINSTANCE LONG
+#endif /* _WINDOWS || _DLL */
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(push, ossPacking, 4)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack(1)
+#elif defined(__BORLANDC__) && defined(__MSDOS__)
+#pragma option -a1
+#elif defined(__BORLANDC__) && defined(__WIN32__)
+#pragma option -a4
+#elif defined(__IBMC__)
+#pragma pack(4)
+#endif /* _MSC_VER && _WIN32 */
+
+#ifndef DLL_ENTRY
+#if defined(_WIN32) || defined(WIN32) || defined(__WIN32__)
+#ifdef __BORLANDC__
+#define DLL_ENTRY __stdcall __export
+#define DLL_ENTRY_FDEF __stdcall __export
+#define DLL_ENTRY_FPTR __stdcall __export
+#else
+#define DLL_ENTRY WINAPI
+#define DLL_ENTRY_FDEF WINAPI
+#define DLL_ENTRY_FPTR WINAPI
+#endif /* __BORLANDC__ */
+#define _System
+#elif defined(_WINDOWS)
+#ifdef DPMI_DLL
+#define DLL_ENTRY FAR PASCAL __export
+#define DLL_ENTRY_FDEF FAR PASCAL __export
+#define DLL_ENTRY_FPTR FAR PASCAL __export
+#else
+#define DLL_ENTRY far pascal _export
+#define DLL_ENTRY_FDEF far pascal _export
+#define DLL_ENTRY_FPTR far pascal _export
+#endif /* DPMI_DLL */
+#define _System
+#elif defined(OS2_DLL)
+#define DLL_ENTRY _System
+#define DLL_ENTRY_FDEF _Export _System
+#define DLL_ENTRY_FPTR
+#elif defined(NETWARE_DLL)
+#define DLL_ENTRY
+#define DLL_ENTRY_FDEF
+#define DLL_ENTRY_FPTR
+#define _Export
+#undef _System
+#define _System
+#endif /* _WIN32 || WIN32 || __WIN32__ */
+#endif /* DLL_ENTRY */
+
+#define BUFFERSIZE 1024
+ /*
+ * NUMBER_OF_LINES_IN_BLOCK is the number of
+ * 4-byte offsets in a block of memory allocated
+ * at a time. Each offset corresponds to a line
+ * of a text file to be displayed in a window.
+ */
+#define NUMBER_OF_LINES_IN_BLOCK 200
+
+#define OSS_PLUS_INFINITY "PLUS_INFINITY"
+#define OSS_MINUS_INFINITY "MINUS_INFINITY"
+#define ossNaN "NOT_A_NUMBER"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct memblock {
+ struct memblock *prev;
+ struct memblock *next;
+ LONG *fileOffset;
+ short *lineLength;
+ short blockNumber;
+} MEMBLOCK;
+
+typedef struct memManagerTbl {
+ int (DLL_ENTRY_FPTR *_System ossMinitp)(void *);
+ unsigned char *(DLL_ENTRY_FPTR *_System dopenInp)(void *,
+ void **, unsigned long *);
+ unsigned long (DLL_ENTRY_FPTR *_System dclosInp)(void *,
+ void **, size_t);
+ unsigned char *(DLL_ENTRY_FPTR *_System dswapInp)(void *,
+ void **, size_t *);
+ void (DLL_ENTRY_FPTR *_System dopenOutp)(void *, void *,
+ unsigned long, unsigned long);
+ unsigned char *(DLL_ENTRY_FPTR *_System dxferObjp)(void *,
+ void **inn, void **out,
+ size_t *, unsigned long *);
+ unsigned long (DLL_ENTRY_FPTR *_System dclosOutp)(void *, void **);
+ void *(DLL_ENTRY_FPTR *_System dallcOutp)(void *, size_t,
+ char root);
+ void (DLL_ENTRY_FPTR *_System openWorkp)(void *);
+ void (DLL_ENTRY_FPTR *_System pushHndlp)(void *, void *);
+ unsigned char *(DLL_ENTRY_FPTR *_System popHndlp)(void *,
+ void **, size_t);
+ void (DLL_ENTRY_FPTR *_System closWorkp)(void *);
+ void *(DLL_ENTRY_FPTR *_System allcWorkp)(void *, size_t);
+ unsigned char *(DLL_ENTRY_FPTR *_System lockMemp)(void *, void *);
+ void (DLL_ENTRY_FPTR *_System unlokMemp)(void *, void *,
+ char);
+ void (DLL_ENTRY_FPTR *_System ossFreerp)(void *, void *);
+ int (DLL_ENTRY_FPTR *_System freePDUp)(void *, int,
+ void *, void *);
+ void (DLL_ENTRY_FPTR *_System drcovObjp)(void *, int,
+ void *, void *);
+ unsigned char *(DLL_ENTRY_FPTR *_System eopenInp)(void *, void *,
+ size_t);
+ unsigned char *(DLL_ENTRY_FPTR *_System eswapInp)(void *, void *,
+ void *, size_t);
+ void (DLL_ENTRY_FPTR *_System eclosInp)(void *, void *);
+ unsigned char *(DLL_ENTRY_FPTR *_System eopenOutp)(void *, void **,
+ size_t *, char);
+ unsigned char *(DLL_ENTRY_FPTR *_System eswapOutp)(void *, void **,
+ size_t, size_t *);
+ unsigned char *(DLL_ENTRY_FPTR *_System exferObjp)(void *, void **,
+ void **, unsigned long *, unsigned long);
+ unsigned long (DLL_ENTRY_FPTR *_System eclosOutp)(void *, void **,
+ size_t, char);
+ void (DLL_ENTRY_FPTR *_System ercovObjp)(void *);
+ unsigned char *(DLL_ENTRY_FPTR *_System asideBeginp)(void *,
+ void **, size_t, size_t *);
+ unsigned char *(DLL_ENTRY_FPTR *_System asideSwapp)(void *,
+ void **, size_t, size_t *);
+ void *(DLL_ENTRY_FPTR *_System asideEndp)(void *,
+ void *, size_t);
+ unsigned char *(DLL_ENTRY_FPTR *_System setDumpp)(void *, void **,
+ void *, size_t *);
+ void (DLL_ENTRY_FPTR *_System ossSetSortp)(void *, void *,
+ unsigned char);
+ void (DLL_ENTRY_FPTR *_System freeBUFp)(void *, void *);
+ void *(DLL_ENTRY_FPTR *_System _ossMarkObjp)(void *,
+ OssMemMgrType, void *);
+ void *(DLL_ENTRY_FPTR *_System _ossUnmarkObjp)(void *,
+ void *);
+ void *(DLL_ENTRY_FPTR *_System _ossTestObjp)(void *,
+ void *);
+ void (DLL_ENTRY_FPTR *_System _ossFreeObjectStackp)(void *);
+ void (DLL_ENTRY_FPTR *_System osstracep)(void *,
+ void *p, size_t);
+ void (DLL_ENTRY_FPTR *_System ossMtermp)(void *);
+} MemManagerTbl;
+
+typedef struct cstrainTbl {
+ int (DLL_ENTRY_FPTR *_System ossConstrainp)(void *, int, void *, void *);
+} CstrainTbl;
+
+typedef struct berTbl {
+ int (DLL_ENTRY_FPTR *_System ossBerEncodep)(void *, int, void *,
+ char **, long *, void *, unsigned, char *);
+ int (DLL_ENTRY_FPTR *_System ossBerDecodep)(void *, int *, char **,
+ long *, void **, long *, void *, unsigned, char *);
+ void (DLL_ENTRY_FPTR *_System enc_errorp)(void *world,
+ OssMemMgrType, void *);
+ void (DLL_ENTRY_FPTR *_System dec_errorp)(void *world,
+ OssMemMgrType, void *);
+ long (DLL_ENTRY_FPTR *_System writetobufferp)(void *, unsigned char c);
+ long (DLL_ENTRY_FPTR *_System write_intp)(void *, char length, LONG_LONG);
+ long (DLL_ENTRY_FPTR *_System write_valuep)(void *, unsigned long,
+ unsigned char *, char);
+ int (DLL_ENTRY_FPTR *_System numbitsp)(long);
+ void (DLL_ENTRY_FPTR *_System fpeHandlerp)(int);
+ void *(DLL_ENTRY_FPTR *_System new_perm_pointed_top)(void *, void *,
+ size_t, size_t);
+ void (DLL_ENTRY_FPTR *_System release_work_spacep)(void *, void *, size_t);
+ void *(DLL_ENTRY_FPTR *_System copy_from_work_spacep)(void *, size_t,
+ size_t suffix, void *, size_t, char);
+ unsigned char (DLL_ENTRY_FPTR *_System get_bytep)(void *);
+ void (DLL_ENTRY_FPTR *_System set_intp)(void *, unsigned char *,
+ unsigned int, LONG_LONG value, enum OssMemMgrType);
+ void *(DLL_ENTRY_FPTR *_System reserve_work_spacep)(void *,
+ size_t, size_t *);
+} BERTbl;
+
+typedef struct perTbl {
+ int (DLL_ENTRY_FPTR *_System ossPerEncodep)(void *, int, void *,
+ char **, long *, void *, unsigned, char *);
+ int (DLL_ENTRY_FPTR *_System ossPerDecodep)(void *, int *, char **,
+ long *, void **, long *, void *, unsigned, char *);
+} PERTbl;
+
+typedef struct apiTbl {
+ int (DLL_ENTRY_FPTR *_System ossSetEncodingRulesp)(void *, OssMemMgrType);
+ OssMemMgrType (DLL_ENTRY_FPTR *_System ossGetEncodingRulesp)(void *);
+ int (DLL_ENTRY_FPTR *_System ossDispatchEncodep)(void *world, int,
+ void *, char **, long *, void *, unsigned, char *);
+ int (DLL_ENTRY_FPTR *_System ossDispatchDecodep)(void *, int *, char **,
+ long *, void **, long *, void *, unsigned, char *);
+ int (DLL_ENTRY_FPTR *_System encodep)(void *, int, void *, char **,
+ long *, void *, unsigned, char *);
+ int (DLL_ENTRY_FPTR *_System decodep)(void *, int *, char **, long *,
+ void **, long *, void *, unsigned, char *);
+ int (DLL_ENTRY_FPTR *_System ossSetDecodingLengthp)(void *, long);
+ long (DLL_ENTRY_FPTR *_System ossGetDecodingLengthp)(void *);
+ int (DLL_ENTRY_FPTR *_System ossSetEncodingFlagsp)(void *, unsigned);
+ unsigned (DLL_ENTRY_FPTR *_System ossGetEncodingFlagsp)(void *);
+ int (DLL_ENTRY_FPTR *_System ossSetDecodingFlagsp)(void *, unsigned);
+ unsigned (DLL_ENTRY_FPTR *_System ossGetDecodingFlagsp)(void *);
+ char *(DLL_ENTRY_FPTR *_System ossGetErrMsgp)(void *world);
+ void (DLL_ENTRY_FPTR *_System ossPrintHexp)(void *, char *, long);
+ int (DLL_ENTRY_FPTR *_System ossEncodep)(void *, int, void *, void *);
+ int (DLL_ENTRY_FPTR *_System ossDecodep)(void *, int *, void *, void **);
+ int (DLL_ENTRY_FPTR *_System ossPrintPDUp)(void *, int, void *);
+ int (DLL_ENTRY_FPTR *_System ossFreePDUp)(void *, int, void *);
+ void (DLL_ENTRY_FPTR *_System ossFreeBufp)(void *, void *);
+ int (DLL_ENTRY_FPTR *_System ossCallerIsDecoderp)(void *);
+ void *(DLL_ENTRY_FPTR *_System ossMarkObjp)(void *, OssMemMgrType, void *);
+ void *(DLL_ENTRY_FPTR *_System ossUnmarkObjp)(void *, void *);
+ void *(DLL_ENTRY_FPTR *_System ossTestObjp)(void *, void *);
+ void (DLL_ENTRY_FPTR *_System ossFreeObjectStackp)(void *);
+ int (DLL_ENTRY_FPTR *ossPrintWinp)(void *, const char *, int, int,
+ int, int, int, int, int, int, int, int);
+ int (DLL_ENTRY_FPTR *_System ossReadLinep)(void *, HWND, FILE *,
+ char *, MEMBLOCK *, LONG);
+ void (DLL_ENTRY_FPTR *_System ossFreeListp)(void *);
+ void (DLL_ENTRY_FPTR *_System ossSaveTraceInfop)(void *, HWND, char *);
+} ApiTbl;
+
+typedef struct cpyvalTbl {
+ int (DLL_ENTRY_FPTR *_System ossCpyValuep)(void *, int, void *, void **);
+} CpyValTbl;
+
+typedef struct cmpvalTbl {
+ int (DLL_ENTRY_FPTR *_System ossCmpValuep)(void *, int, void *, void *);
+} CmpValTbl;
+
+typedef struct berrealTbl {
+ long (DLL_ENTRY_FPTR *_System ossBerEncodeRealp)(void *, void *,
+ unsigned char *);
+ long (DLL_ENTRY_FPTR *_System ossBerDecodeRealp)(void *, void *,
+ long, char);
+} BerRealTbl;
+
+typedef struct perrealTbl {
+ long (DLL_ENTRY_FPTR *_System ossPerEncodeRealp)(void *, void *, unsigned char *);
+ long (DLL_ENTRY_FPTR *_System ossPerDecodeRealp)(void *, long, char);
+} PerRealTbl;
+
+/*
+ * The structure "WinParm" is used to store DLL-related information.
+ */
+typedef struct winparm {
+ HWND hWnd; /* Handle of the window */
+ LONG index; /* Current index into the file pointer array;
+ * it indicates the number of lines written */
+ MEMBLOCK *memBlock; /* Pointer to a current node of a memory
+ * handling linked list of MEMBLOCKs */
+ MEMBLOCK *startBlock; /* Pointer to the first node of a memory
+ * handling linked list of MEMBLOCKs */
+ short length; /* Length of a line that is written only
+ * in part and no '\n' symbol was reached yet */
+ short blockNumber; /* Current MEMBLOCK number */
+ FILE *tmpfp; /* Temporary output file with tracing info */
+ char tmpfn[16]; /* Temporary output file name */
+ BOOL endSwitch; /* Indicates if a '\n' symbol was reached or
+ * not when writing a tracing info file to
+ * a window */
+ BOOL conSwitch; /* If FALSE, the output goes to a console,
+ * otherwise to a window */
+ BOOL ossEncoderDecoderType; /* SOED vs. TOED */
+ BOOL cstrainNeeded; /* If TRUE, constraint checking is needed */
+ CstrainTbl *cstrainTbl; /* Constraint checker DLL function table */
+ BERTbl *berTbl; /* BER & DER DLL function table */
+ PERTbl *perTbl; /* PER DLL function table */
+ ApiTbl *apiTbl; /* Spartan/basic API DLL function table */
+ CpyValTbl *cpyvalTbl; /* Value copier DLL function table */
+ CmpValTbl *cmpvalTbl; /* Value comparator DLL function table */
+ BerRealTbl *berrealTbl; /* BER/DER encoder/decoder real DLL function
+ * table */
+ MemManagerTbl *memMgrTbl; /* Memory manager DLL function table */
+ PerRealTbl *perrealTbl; /* PER encoder/decoder real DLL function table */
+ HINSTANCE hBerDLL; /* Handle of BER/DER encoder/decoder DLL */
+ HINSTANCE hPerDLL; /* Handle of PER DLL */
+ HINSTANCE hCtlDLL; /* Handle of control table/code file DLL */
+ HINSTANCE hMemDLL; /* Handle of memory manager DLL */
+ HINSTANCE hCstrainDLL; /* Handle of constraint checker DLL */
+ HINSTANCE hApiDLL; /* Handle of Spartan/basic API DLL */
+ HINSTANCE hCpyvalDLL; /* Handle of value copier DLL */
+ HINSTANCE hCmpvalDLL; /* Handle of value comparator DLL */
+ HINSTANCE hBerrealDLL; /* Handle of BER/DER encoder/decoder real DLL */
+ HINSTANCE hPerrealDLL; /* Handle of PER encoder/decoder real DLL */
+ void *reserved[10]; /* Reserved for possible future use */
+} WinParm;
+
+#ifndef OS2_DLL
+extern int DLL_ENTRY ossPrintWin(struct ossGlobal *, const char *, int, int,
+ int, int, int, int, int, int, int, int);
+extern BOOL ossWriteWindow(struct ossGlobal *, HWND);
+extern int DLL_ENTRY ossReadLine(struct ossGlobal *, HWND, FILE *, char *, MEMBLOCK *, LONG);
+extern void DLL_ENTRY ossFreeList(struct ossGlobal *);
+extern void DLL_ENTRY ossSaveTraceInfo(struct ossGlobal *, HWND, char *);
+void *getStartAddress(struct ossGlobal *, char *);
+extern int DLL_ENTRY oss_test(struct ossGlobal *);
+int ossGeneric(struct ossGlobal *, HWND);
+extern void DLL_ENTRY ossWterm(struct ossGlobal *);
+extern HINSTANCE DLL_ENTRY ossLoadMemoryManager(struct ossGlobal *,
+ OssMemMgrType, char *);
+extern HINSTANCE DLL_ENTRY ossLoadDll(struct ossGlobal *, char *);
+extern int DLL_ENTRY ossFreeDll(struct ossGlobal *, char *);
+extern int DLL_ENTRY ossOpenTraceFile(struct ossGlobal *, char *);
+extern void *DLL_ENTRY ossGetHeader(void);
+extern const int ossEncoderDecoderType;
+#if defined(_WINDOWS) && !defined(_WIN32) && !defined(WIN32)
+#define GWL_USERDATA 0
+#define ossWinit(world, ctl_tbl, dllName, hWnd) \
+ (*(void **)ctl_tbl = (void *)MakeProcInstance((FARPROC)*(void **)ctl_tbl, hInst),\
+ osswinit(world, ctl_tbl, dllName, hWnd))
+#else
+#define ossWinit osswinit
+#endif /* _WINDOWS && !_WIN32 && !WIN32 */
+extern int DLL_ENTRY osswinit(struct ossGlobal *, void *, char *, HWND);
+ /*
+ * These two functions are callback functions used by the
+ * memory manager & tracing routine DLL as low level memory
+ * allocator and freer replacing the default which is malloc()
+ * and free(). They are used as callback functions under 16-bit
+ * Windows for DOS only. Under Windows NT they may be replaced
+ * directly by setting the corresponding function pointers in
+ * the ossGlobal structure. See ossgnrc.c for more information.
+ */
+extern void *DLL_ENTRY getmem(size_t);
+extern void DLL_ENTRY rlsmem(void *);
+extern HINSTANCE hInst;
+extern int DLL_ENTRY _freePDU(struct ossGlobal *, int, void *, void *);
+#endif /* OS2_DLL */
+#define freeBUF ossFreeBuf
+#define freePDU _freePDU
+extern void *ctl_tbl;
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(pop, ossPacking)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack()
+#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__))
+#pragma option -a.
+#elif defined(__IBMC__)
+#pragma pack()
+#endif /* _MSC_VER && _WIN32 */
+#elif !defined(DLL_ENTRY)
+#if defined(_WIN32) || defined(WIN32)
+#include <windows.h>
+#define DLL_ENTRY WINAPI
+#define DLL_ENTRY_FDEF WINAPI
+#define DLL_ENTRY_FPTR WINAPI
+#else
+#define DLL_ENTRY
+#define DLL_ENTRY_FDEF
+#define DLL_ENTRY_FPTR
+#endif /* _WIN32 || WIN32 */
+#undef _System
+#define _System
+#endif /* _WINDOWS || _DLL || OS2_DLL || NETWARE_DLL */
+#endif /* OSSDLL_H */
+
diff --git a/public/sdk/inc/ossglobl.h b/public/sdk/inc/ossglobl.h
new file mode 100644
index 000000000..ff7e3aded
--- /dev/null
+++ b/public/sdk/inc/ossglobl.h
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 1992-1996 Open Systems Solutions, Inc. All rights reserved
+ */
+/*
+ * THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. AND
+ * MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC.
+ * THIS FILE MAY NOT BE DISTRIBUTED.
+ */
+/*
+ * FILE: @(#)ossglobl.h 5.1 96/04/23
+ */
+
+#ifndef OSSGLOBL_H
+#define OSSGLOBL_H
+
+#include "ossdll.h"
+
+#ifndef OSS_TOED
+#define _EncDecGlobals dencoding
+#endif
+#ifndef ossMemMgrVarLen
+#ifdef AS400
+#define ossMemMgrVarLen 100
+#define ossEncDecVarLen 500 /* The size of the
+ encDecVar array shouldn't be less than
+ the sizeof(world->c) since the latter
+ structure overlays encDecVar */
+#else
+#define ossMemMgrVarLen 48
+#define ossEncDecVarLen 192 /* The size of the
+ encDecVar array shouldn't be less than
+ the sizeof(world->c) since the latter
+ structure overlays encDecVar */
+#endif /* AS400 */
+#if !defined(EOF) && !defined(_FILE_DEFINED)
+typedef char FILE;
+#endif /* EOF */
+
+#ifndef ERR_MSG_LENGTH
+#define ERR_MSG_LENGTH 512 /* length of error messages to be output */
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef enum {
+ OSS_BASIC = 0,
+ OSS_SPARTAN
+} ossAPI;
+
+typedef enum {
+ OSS_BER = 0,
+ OSS_PER_ALIGNED,
+ OSS_PER_UNALIGNED,
+ OSS_SER,
+ OSS_DER
+} ossEncodingRules;
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(push, ossPacking, 4)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack(1)
+#elif defined(__BORLANDC__) && defined(__MSDOS__)
+#pragma option -a1
+#elif defined(__BORLANDC__) && defined(__WIN32__)
+#pragma option -a4
+#elif defined(__IBMC__)
+#pragma pack(4)
+#endif /* _MSC_VER && _WIN32 */
+
+typedef struct ossGlobal {
+ /*
+ * used for communicating with the memory manager and the tracing-routine
+ */
+ /* low-level memory allocator */
+ void *(DLL_ENTRY_FPTR *mallocp)(size_t p);
+ /* memory re-allocator */
+ void *(DLL_ENTRY_FPTR *reallocp)(void *p, size_t s);
+ /* low-level memory freer */
+ void (DLL_ENTRY_FPTR *freep)(void *p);
+ size_t asn1chop; /* 0 means do not truncate strings; greater
+ * value means truncate long output strings
+ * (OCTET STRING, BIT STRING, Character String)
+ * to be "asn1chop" bytes long. Read by
+ * encoder&decoder tracing and "printPDU"
+ */
+ size_t ossblock; /* if not 0, size of largest block
+ * to allocate */
+ size_t ossprefx; /* # bytes to leave before OSAK data buffer */
+
+ FILE *asn1out; /* tracing output file */
+
+ /* low-level tracing-output function; default is fprintf */
+ int (*asn1prnt)(FILE *stream, const char *format, ...);
+
+ /*
+ * available for use by user application
+ */
+ void *userVar;
+
+ /*
+ * used for storing DLL- & library NLMs-related parameters
+ */
+#if defined(_WINDOWS) || defined(_DLL) || \
+ defined(OS2_DLL) || defined(NETWARE_DLL)
+ WinParm wp;
+#endif /* _WINDOWS || _DLL || OS2_DLL || NETWARE_DLL */
+
+ /*
+ * reserved for use by the memory manager and the tracing-routine
+ */
+#ifdef storing
+ struct storHandling t;
+#else /* not storing */
+ long int memMgrVar[ossMemMgrVarLen];
+#endif
+
+ /*
+ * related to the new API; not for direct reference by user code
+ */
+ void *ctlTbl;
+ ossAPI api;
+ ossEncodingRules encRules;
+ unsigned int encodingFlags;
+ unsigned int decodingFlags;
+ long decodingLength;
+ char errMsg[ERR_MSG_LENGTH];
+
+ /*
+ * reserved for use by the encoder/decoder
+ */
+ double reserved[4];
+#if defined(OSS_TOED)
+ struct _EncDecGlobals c;
+#elif defined(coding)
+ struct _EncDecGlobals c;
+#else
+ long int encDecVar[ossEncDecVarLen];
+#endif
+} OssGlobal;
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(pop, ossPacking)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack()
+#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__))
+#pragma option -a.
+#elif defined(__IBMC__)
+#pragma pack()
+#endif /* _MSC_VER && _WIN32 */
+
+int DLL_ENTRY ossSetEncodingRules(struct ossGlobal *world,
+ ossEncodingRules rules);
+ossEncodingRules DLL_ENTRY ossGetEncodingRules(struct ossGlobal *world);
+int DLL_ENTRY ossSetDecodingLength(struct ossGlobal *world, long bufferLength);
+long DLL_ENTRY ossGetDecodingLength(struct ossGlobal *world);
+int DLL_ENTRY ossSetEncodingFlags(struct ossGlobal *world, unsigned flags);
+unsigned DLL_ENTRY ossGetEncodingFlags(struct ossGlobal *world);
+int DLL_ENTRY ossSetDecodingFlags(struct ossGlobal *world, unsigned flags);
+unsigned DLL_ENTRY ossGetDecodingFlags(struct ossGlobal *world);
+char *DLL_ENTRY ossGetErrMsg(struct ossGlobal *world);
+int DLL_ENTRY ossCallerIsDecoder(struct ossGlobal *world);
+ /*
+ * The following are declarations for link routines
+ * needed to link the encoding rule or rules specified
+ * on the compiler command line. The function calls
+ * are generated by the compiler into _ossinit_...()
+ * in the control table. These functions are not
+ * meant to be referenced by user code.
+ */
+void DLL_ENTRY ossLinkAPI(OssGlobal *);
+void DLL_ENTRY ossLinkBer(OssGlobal *);
+void DLL_ENTRY ossLinkPer(OssGlobal *);
+void DLL_ENTRY ossLinkDer(OssGlobal *);
+void DLL_ENTRY ossLinkSer(OssGlobal *);
+void DLL_ENTRY ossLinkConstraint(OssGlobal *);
+void DLL_ENTRY ossLinkUserConstraint(OssGlobal *);
+void DLL_ENTRY ossLinkBerReal(OssGlobal *);
+void DLL_ENTRY ossLinkPerReal(OssGlobal *);
+void DLL_ENTRY ossLinkCmpValue(OssGlobal *);
+void DLL_ENTRY ossLinkCpyValue(OssGlobal *);
+void DLL_ENTRY ossLinkPerPDV(OssGlobal *);
+void DLL_ENTRY ossLinkPerReal(OssGlobal *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* ossMemMgrVarLen */
+#endif /* OSSGLOBL_H */
diff --git a/public/sdk/inc/ossmmgmt.h b/public/sdk/inc/ossmmgmt.h
new file mode 100644
index 000000000..3547b54be
--- /dev/null
+++ b/public/sdk/inc/ossmmgmt.h
@@ -0,0 +1,96 @@
+/*****************************************************************************/
+/* Copyright (C) 1991-1996 Open Systems Solutions, Inc. All rights reserved.*/
+/*****************************************************************************/
+
+/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC.
+ * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC.
+ * THIS FILE MAY NOT BE DISTRIBUTED. */
+
+/*************************************************************************/
+/* FILE: @(#)ossmmgmt.h 5.3 96/04/23 */
+/*************************************************************************/
+
+#include <stddef.h>
+#include "ossdll.h"
+
+
+enum errcode {
+ moreInput, /* input is exhausted and more was requested;
+ context indicates number of bytes requested */
+ /* decode returns MORE_INPUT (not a negative
+ error code) */
+ moreOutput, /* requests for output exceed restraint
+ or space provided by user buffer;
+ context indicates bytes allocated so far
+ plus amount requested */
+ /* decode returns MORE_BUF */
+ zeroBytesRequested, /* memory request for zero bytes.
+ This should not happen; report error to OSS;
+ context ignored */
+ /* decode returns FATAL_ERROR */
+ sizeTooBig, /* request to allocate more than 'ossblock' bytes;
+ context indicates number of bytes requested;
+ This should not happen; report error to OSS */
+ /* decode returns FATAL_ERROR */
+ outOfMemory, /* memory allocation failure; context indicates
+ number of bytes requested */
+ /* decode returns OUT_MEMORY */
+ invalidObject, /* unrecognized memory object passed in argument
+ to function; context 0 means object not recognized,
+ 1 means control information within object is flawed */
+ /* decode returns FATAL_ERROR */
+ memmgrUndefinedErr /* error OSS has not anticipated; e.g., I/O Error;
+ handlerr prints context.
+ (I cannot print context as a hex value
+ with the current error message code <---) */
+ /* decode returns FATAL_ERROR */
+};
+
+extern void handlerr(struct ossGlobal *, enum errcode err, unsigned long context);
+extern int DLL_ENTRY dpduWalk(struct ossGlobal *, int, void *, void *,
+ void (DLL_ENTRY_FPTR *_System freer)(struct ossGlobal *, void *));
+#if defined(_WINDOWS) || defined(_DLL) || \
+ defined(OS2_DLL) || defined(NETWARE_DLL)
+extern void DLL_ENTRY ossFreer(void *, void *);
+#else
+#ifndef _ICC
+static void DLL_ENTRY freer(struct ossGlobal *, void *);
+#endif /* _ICC */
+#endif /* _WINDOWS || _DLL || OS2_DLL || NETWARE_DLL */
+
+int DLL_ENTRY ossMemMgrId(struct ossGlobal *);
+
+unsigned char *DLL_ENTRY dopenIn(struct ossGlobal *, void **p_hdl, unsigned long *inlen);
+unsigned long DLL_ENTRY dclosIn(struct ossGlobal *, void **p_hdl, size_t bytes_decoded);
+unsigned char *DLL_ENTRY dswapIn(struct ossGlobal *, void **p_hdl, size_t *inlen);
+void DLL_ENTRY dopenOut(struct ossGlobal *, void *hdl, unsigned long length,
+ unsigned long limit);
+unsigned long DLL_ENTRY dclosOut(struct ossGlobal *, void **p_hdl);
+void *DLL_ENTRY dallcOut(struct ossGlobal *, size_t size, char root);
+void DLL_ENTRY openWork(struct ossGlobal *);
+void DLL_ENTRY closWork(struct ossGlobal *);
+void *DLL_ENTRY allcWork(struct ossGlobal *, size_t size);
+unsigned char *DLL_ENTRY lockMem(struct ossGlobal *, void *hdl);
+void DLL_ENTRY unlokMem(struct ossGlobal *, void *hdl, char free);
+void DLL_ENTRY pushHndl(struct ossGlobal *, void *);
+unsigned char *DLL_ENTRY popHndl(struct ossGlobal *, void **handl, size_t length);
+void DLL_ENTRY drcovObj(struct ossGlobal *, int pdu_num, void * hdl, void *ctl_tbl);
+
+unsigned char *DLL_ENTRY eopenIn(struct ossGlobal *, void *lock, size_t length); /* Clear encoder input-memory resources */
+unsigned char *DLL_ENTRY eswapIn(struct ossGlobal *, void *unlock, void *lock, size_t length); /* Swap new data into input memory */
+void DLL_ENTRY eclosIn(struct ossGlobal *, void * unlock); /* Free encoder input-memory resources */
+
+unsigned char *DLL_ENTRY eopenOut(struct ossGlobal *, void **object, size_t *outlen, char queue); /* Clear encoder output-memory resources */
+unsigned char *DLL_ENTRY eswapOut(struct ossGlobal *, void **object, size_t used, size_t *outlen); /* Dispose of output data and get memory */
+unsigned char *DLL_ENTRY exferObj(struct ossGlobal *, void **, void **, unsigned long *, unsigned long);
+unsigned char *DLL_ENTRY dxferObj(struct ossGlobal *world, void **inn, void **out, size_t *tOffset, unsigned long *toLength);
+unsigned char *DLL_ENTRY asideBegin(struct ossGlobal *world, void **objectTo, size_t used, size_t *lengthTo);
+unsigned char *DLL_ENTRY asideSwap(struct ossGlobal *world, void **objectTo, size_t used, size_t *lengthTo);
+void *DLL_ENTRY asideEnd(struct ossGlobal *world, void *object, size_t used);
+unsigned char *DLL_ENTRY setDump(struct ossGlobal *world, void **objectTo, void *set, size_t *lengthTo);
+unsigned long DLL_ENTRY eclosOut(struct ossGlobal *, void **object, size_t used, char low); /* Free encoder output-memory resources */
+void DLL_ENTRY ercovObj(struct ossGlobal *); /* Free all encoder memory resources */
+void DLL_ENTRY ossSetSort(struct ossGlobal *, void *, unsigned char ct); /* Order set by comparing through "ossObjCmp" */
+extern int DLL_ENTRY ossMinit(struct ossGlobal *world);
+extern void DLL_ENTRY ossMterm(struct ossGlobal *world);
+
diff --git a/public/sdk/inc/ossper.h b/public/sdk/inc/ossper.h
new file mode 100644
index 000000000..bc51675a4
--- /dev/null
+++ b/public/sdk/inc/ossper.h
@@ -0,0 +1,341 @@
+/*****************************************************************************/
+/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/
+/*****************************************************************************/
+/**************************************************************************/
+/*
+/* FILE: @(#)ossper.h 1.5 96/02/27 */
+/* */
+/* function: Define the interfaces to the routines in ossper.a for the */
+/* OSS optimized encoder and decoder. */
+/* */
+/* */
+/**************************************************************************/
+
+#ifndef ossper_hdr_file
+#define ossper_hdr_file
+
+#include <limits.h>
+#include "asn1hdr.h"
+
+#define Aligned 1
+#define Unaligned 0
+
+struct _enum_data {
+ int num; /* number of enumerations */
+ int *enums; /* pointer to sorted array of enumerations */
+};
+
+struct _char_data {
+ int num; /* number of characters in PermittedAlphabet */
+ void *pa; /* pointer to PermittedAlphabet char string */
+ void *ia; /* pointer to inverted indices string */
+};
+
+extern void _oss_append(struct ossGlobal *g, unsigned char *field, unsigned long length,
+ int align);
+
+extern void _oss_penc_unconstr_int(struct ossGlobal *g,
+ LONG_LONG value);
+
+extern void _oss_penc_semicon_int(struct ossGlobal *g,
+ LONG_LONG value, LONG_LONG lower_bound);
+
+extern void _oss_penc_semicon_uint(struct ossGlobal *g,
+ ULONG_LONG value, ULONG_LONG lower_bound);
+
+extern void _oss_penc_nonneg_int(struct ossGlobal *g,
+ ULONG_LONG value, ULONG_LONG range);
+
+extern void _oss_penc_indeflen_int(struct ossGlobal *g,
+ ULONG_LONG value, ULONG_LONG range);
+
+extern void _oss_penc_small_int(struct ossGlobal *g, ULONG_LONG value);
+
+extern void _oss_penc_enum(struct ossGlobal *g, long data,
+ struct _enum_data *root,
+ struct _enum_data *extension);
+
+extern void _oss_penc_uenum(struct ossGlobal *g, unsigned long data,
+ struct _enum_data *root,
+ struct _enum_data *extension);
+
+extern void _oss_penc_real(struct ossGlobal *g, double value);
+extern void _oss_penc_creal(struct ossGlobal *g, char *value);
+extern void _oss_penc_mreal(struct ossGlobal *g, MixedReal value);
+
+extern void _oss_penc_constr_bpbit(struct ossGlobal *g, void *value,
+ ULONG_LONG lb, ULONG_LONG ub, _Bool NamedBits,
+ _Bool Ext);
+
+extern void _oss_penc_constr_pbit(struct ossGlobal *g, ULONG_LONG value,
+ ULONG_LONG size, ULONG_LONG lb, ULONG_LONG ub, _Bool NamedBits,
+ _Bool Ext);
+
+extern void _oss_penc_constr_bit(struct ossGlobal *g, unsigned char *value,
+ ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, _Bool NamedBits,
+ _Bool Ext);
+
+extern void _oss_penc_unconstr_bit(struct ossGlobal *g, unsigned char *value,
+ ULONG_LONG length, _Bool NamedBits);
+
+extern void _oss_penc_unconstr_pbit(struct ossGlobal *g, ULONG_LONG value,
+ ULONG_LONG length, ULONG_LONG size, _Bool NamedBits);
+
+extern unsigned long _oss_penc_length(struct ossGlobal *g, ULONG_LONG length,
+ ULONG_LONG lb, ULONG_LONG ub, _Bool ext);
+
+extern void _oss_penc_small_len(struct ossGlobal *g, ULONG_LONG length);
+
+extern void _oss_penc_unconstr_oct(struct ossGlobal *g, unsigned char *value,
+ ULONG_LONG length);
+
+extern void _oss_penc_constr_oct(struct ossGlobal *g, unsigned char *value,
+ ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub);
+
+extern struct ossGlobal *_oss_push_global(struct ossGlobal *g);
+extern struct ossGlobal *_oss_pop_global(struct ossGlobal *g);
+
+extern void _oss_penc_objids(struct ossGlobal *g, unsigned short *value,
+ unsigned long length);
+extern void _oss_penc_objidi(struct ossGlobal *g, unsigned int *value,
+ unsigned long length);
+extern void _oss_penc_objidl(struct ossGlobal *g, unsigned long *value,
+ unsigned long length);
+extern void _oss_penc_link_objids(struct ossGlobal *g, void *value);
+extern void _oss_penc_link_objidi(struct ossGlobal *g, void *value);
+extern void _oss_penc_link_objidl(struct ossGlobal *g, void *value);
+
+extern void _oss_penc_opentype(struct ossGlobal *g, void *value);
+extern void _oss_penc_nkmstr(struct ossGlobal *g, char *value, ULONG_LONG length);
+extern void _oss_penc_kmstr(struct ossGlobal *g, char *value, ULONG_LONG length,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+extern void _oss_penc_bmpstr(struct ossGlobal *g, unsigned short *value,
+ ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+#if INT_MAX == 2147483647
+extern void _oss_penc_unistr(struct ossGlobal *g, int *value,
+ ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+#else
+extern void _oss_penc_unistr(struct ossGlobal *g, long *value,
+ ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+#endif
+
+extern void _oss_penc_gtime(struct ossGlobal *g, GeneralizedTime *time);
+extern void _oss_penc_utime(struct ossGlobal *g, UTCTime *time);
+
+void _oss_penc_uany(struct ossGlobal *g, void *data );
+
+void _oss_penc_unconstr_huge(struct ossGlobal *g, void *data );
+
+/* decoding functions */
+
+extern unsigned char _oss_get_bit(struct ossGlobal *g, int align);
+
+extern void _oss_get_bits(struct ossGlobal *g, unsigned char *field,
+ unsigned long length, int align);
+
+unsigned char _oss_get_octet(struct ossGlobal *g, int align);
+
+extern LONG_LONG _oss_pdec_unconstr_int(struct ossGlobal *g);
+
+extern LONG_LONG _oss_pdec_semicon_int(struct ossGlobal *g,
+ LONG_LONG lower_bound);
+
+extern ULONG_LONG _oss_pdec_semicon_uint(struct ossGlobal *g,
+ ULONG_LONG lower_bound);
+
+extern ULONG_LONG _oss_pdec_nonneg_int(struct ossGlobal *g,
+ ULONG_LONG range);
+
+extern ULONG_LONG _oss_pdec_indeflen_int(struct ossGlobal *g,
+ ULONG_LONG range);
+
+extern ULONG_LONG _oss_pdec_small_int(struct ossGlobal *g);
+
+extern long _oss_pdec_enum(struct ossGlobal *g,
+ struct _enum_data *root,
+ struct _enum_data *extension);
+
+extern unsigned long _oss_pdec_uenum(struct ossGlobal *g,
+ struct _enum_data *root,
+ struct _enum_data *extension);
+
+
+double _oss_pdec_binreal(struct ossGlobal *g, unsigned char s, long len);
+void _oss_pdec_chrreal(struct ossGlobal *g, unsigned char s, long len,
+ double *num_out, unsigned char *str_out);
+
+extern float _oss_pdec_freal(struct ossGlobal *g);
+extern double _oss_pdec_real(struct ossGlobal *g);
+extern char * _oss_pdec_creal(struct ossGlobal *g);
+extern MixedReal _oss_pdec_mreal(struct ossGlobal *g);
+
+extern void _oss_pdec_length(struct ossGlobal *g, unsigned long *length,
+ ULONG_LONG lb, ULONG_LONG ub, _Bool *last);
+
+void _oss_pdec_unconstr_ubit(struct ossGlobal *g, void *length,
+ unsigned char **value, int lengthsize);
+
+void _oss_pdec_unconstr_vbit_ptr(struct ossGlobal *g, void **ptr,
+ int lengthsize);
+
+void _oss_pdec_unconstr_vbit(struct ossGlobal *g, void *length,
+ unsigned char *value, int lengthsize, ULONG_LONG datasize);
+
+void _oss_pdec_unconstr_pbit(struct ossGlobal *g, void *value,
+ int size);
+
+void _oss_pdec_unconstr_bpbit(struct ossGlobal *g, unsigned char *value,
+ long size);
+
+void _oss_pdec_constr_ubit(struct ossGlobal *g, void *length,
+ unsigned char **value, int lengthsize,
+ ULONG_LONG lb, ULONG_LONG ub);
+
+void _oss_pdec_constr_vbit(struct ossGlobal *g, void *length,
+ unsigned char *value, int lengthsize,
+ ULONG_LONG lb, ULONG_LONG ub);
+
+void _oss_pdec_constr_pbit(struct ossGlobal *g, void *value,
+ int size, ULONG_LONG lb, ULONG_LONG ub);
+
+void _oss_pdec_constr_bpbit(struct ossGlobal *g, unsigned char *value,
+ int size, ULONG_LONG lb, ULONG_LONG ub);
+
+void _oss_pdec_unconstr_uoct(struct ossGlobal *g, void *length,
+ unsigned char **value, int lengthsize);
+
+void _oss_pdec_unconstr_voct_ptr(struct ossGlobal *g, void **ptr,
+ int lengthsize);
+
+void _oss_pdec_constr_voct_ptr(struct ossGlobal *g, void **ptr,
+ int lengthsize, ULONG_LONG lb, ULONG_LONG ub);
+
+void _oss_pdec_constr_uoct(struct ossGlobal *g, void *length,
+ unsigned char **value, int lengthsize, ULONG_LONG lb, ULONG_LONG ub);
+
+void _oss_pdec_constr_voct(struct ossGlobal *g, void *length,
+ unsigned char *value, int lengthsize, ULONG_LONG lb, ULONG_LONG ub);
+
+void _oss_pdec_unconstr_voct(struct ossGlobal *g, void *length,
+ unsigned char *value, int lengthsize, ULONG_LONG ub);
+
+struct ossGlobal *_oss_pdec_push(struct ossGlobal *g);
+struct ossGlobal *_oss_pdec_pop(struct ossGlobal *g);
+
+unsigned long _oss_pdec_eap(struct ossGlobal *g, unsigned char **ext);
+void _oss_pdec_eas(struct ossGlobal *g, unsigned char *ext,
+ unsigned long count, unsigned long ea_num);
+
+void _oss_pdec_lsof(struct ossGlobal *g, unsigned long *count,
+ ULONG_LONG lb, ULONG_LONG ub, unsigned char ext,
+ _Bool *last);
+
+void _oss_pdec_usof(struct ossGlobal *g, unsigned long *count,
+ unsigned char **value, int lengthsize, long itemsize,
+ ULONG_LONG lb, ULONG_LONG ub, unsigned char ext,
+ _Bool *last);
+
+void _oss_pdec_asof(struct ossGlobal *g, unsigned long *count,
+ int lengthsize,
+ ULONG_LONG lb, ULONG_LONG ub, unsigned char ext,
+ _Bool *last);
+
+void _oss_pdec_asof_ptr(struct ossGlobal *g, void **ptr,
+ int lengthsize, long itemsize, long prefixsize,
+ _Bool *last);
+
+void _oss_pdec_aobjids(struct ossGlobal *g, unsigned short *value,
+ unsigned short *count, unsigned short array_size);
+
+void _oss_pdec_aobjidi(struct ossGlobal *g, unsigned int *value,
+ unsigned short *count, unsigned short array_size);
+
+void _oss_pdec_aobjidl(struct ossGlobal *g, unsigned long *value,
+ unsigned short *count, unsigned short array_size);
+
+void _oss_pdec_aobjids_ptr(struct ossGlobal *g, void **ptr);
+void _oss_pdec_aobjidi_ptr(struct ossGlobal *g, void **ptr);
+void _oss_pdec_aobjidl_ptr(struct ossGlobal *g, void **ptr);
+
+void _oss_pdec_uobjids(struct ossGlobal *g, unsigned short **value,
+ unsigned short *count);
+void _oss_pdec_uobjidi(struct ossGlobal *g, unsigned int **value,
+ unsigned short *count);
+void _oss_pdec_uobjidl(struct ossGlobal *g, unsigned long **value,
+ unsigned short *count);
+
+void _oss_pdec_link_objids(struct ossGlobal *g, void **ptr);
+void _oss_pdec_link_objidi(struct ossGlobal *g, void **ptr);
+void _oss_pdec_link_objidl(struct ossGlobal *g, void **ptr);
+
+void _oss_pdec_ntp_kmstr(struct ossGlobal *g, char **ptr,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+
+void _oss_pdec_nt_kmstr(struct ossGlobal *g, void *ptr,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+
+void _oss_pdec_vap_kmstr(struct ossGlobal *g, void **ptr, int lengthsize,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+
+void _oss_pdec_va_kmstr(struct ossGlobal *g, void *length, char *value,
+ int lengthsize,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+
+void _oss_pdec_ub_kmstr(struct ossGlobal *g, void *length, char **ptr,
+ int lengthsize,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+
+void _oss_pdec_bmpstr(struct ossGlobal *g, void *length, unsigned short **ptr,
+ int lengthsize,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+
+#if INT_MAX == 2147483647
+void _oss_pdec_unistr(struct ossGlobal *g, void *length, int **ptr,
+ int lengthsize,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+#else
+void _oss_pdec_unistr(struct ossGlobal *g, void *length, long **ptr,
+ int lengthsize,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+#endif
+
+void _oss_pdec_ntp_nkmstr(struct ossGlobal *g, char **ptr);
+void _oss_pdec_nt_nkmstr(struct ossGlobal *g, char *value, unsigned long ub);
+void _oss_pdec_vap_nkmstr(struct ossGlobal *g, void **ptr, int lengthsize);
+void _oss_pdec_va_nkmstr(struct ossGlobal *g, void *length, char *value,
+ int lengthsize, unsigned long ub);
+void _oss_pdec_ub_nkmstr(struct ossGlobal *g, void *length, char **ptr,
+ int lengthsize);
+
+void _oss_pdec_pad_kmstr(struct ossGlobal *g, void *ptr,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+
+void _oss_pdec_pad_kmstr_ptr(struct ossGlobal *g, char **ptr,
+ ULONG_LONG lb, ULONG_LONG ub, int bits, long index,
+ _Bool ext);
+
+void _oss_pdec_opentype(struct ossGlobal *g, void *data );
+void _oss_pdec_uany(struct ossGlobal *g, void *data );
+
+void _oss_pdec_gtime(struct ossGlobal *g, GeneralizedTime *data);
+void _oss_pdec_utime(struct ossGlobal *g, UTCTime *data);
+
+struct _char_data *_oss_get_char_data(struct ossGlobal *g,
+ int index);
+
+void _oss_pdec_unconstr_huge(struct ossGlobal *g, void *data );
+
+#endif /* ossper_hdr_file */
diff --git a/public/sdk/inc/osstrace.h b/public/sdk/inc/osstrace.h
new file mode 100644
index 000000000..3983e67dc
--- /dev/null
+++ b/public/sdk/inc/osstrace.h
@@ -0,0 +1,378 @@
+/*****************************************************************************/
+/* Copyright (C) 1992-1996 Open Systems Solutions, Inc. All rights reserved.*/
+/*****************************************************************************/
+
+/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. AND
+ * MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC.
+ * THIS FILE MAY NOT BE DISTRIBUTED. */
+
+/*****************************************************************************/
+/* FILE: @(#)osstrace.h 4.7 96/05/01 */
+/* */
+/* When tracing is in effect in the OSS ASN.1 Tools encoder/decoder the */
+/* user user-replaceable trace routine, osstrace(), is called to trace */
+/* the value that is being encoded/decoded. This header file describes */
+/* the parameters passed to osstrace(). */
+/* */
+/* Detailed descriptions appear after the declarations. */
+/*****************************************************************************/
+
+
+#include "ossdll.h"
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(push, ossPacking, 4)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack(1)
+#elif defined(__BORLANDC__) && defined(__MSDOS__)
+#pragma option -a1
+#elif defined(__BORLANDC__) && defined(__WIN32__)
+#pragma option -a4
+#elif defined(__IBMC__)
+#pragma pack(4)
+#endif /* _MSC_VER && _WIN32 */
+
+/* traceKind: describes the type of TraceRecord */
+
+enum traceKind
+{
+ endOfContentsTrace = 0, /* end-of-contents octets */
+ valueTrace, /* traceRecord contains a traced value */
+ skippedFieldTrace, /* a value whose type is not recognized
+ * is being skipped */
+ messageTrace /* error message is in the field "value" */
+};
+
+
+/* fieldKind: describes the contents of "fieldNumber". "fieldKind" is
+ * meaningful only if "fieldNumber" is not 0
+ */
+
+enum fieldKind
+{
+ setOrSequenceField = 0, /* "fieldNumber" is the position of the
+ * component within a SET or SEQUENCE */
+ pduNumber, /* "fieldNumber" is a PDU number */
+ setOrSequenceOfElement, /* "fieldNumber" is the position of the
+ * component within a SET OF or SEQUENCE OF
+ * components */
+ stringElement /* "fieldNumber" is the position of the
+ * substring within a constructed STRING */
+};
+
+enum prtType
+{
+ seqsetType = 0, /* SEQUENCE and SET uses [fieldcount = n] */
+ seqofType, /* SEQUENCE OF and SET OF use [length = n] */
+ choiceType, /* CHOICE type uses format [index = n] */
+ pseudoType, /* No length info is printed or [not encoded] */
+ primeType, /* All other types use the format */
+ /* [length = [(not encoded)] nbytes.nbits] */
+ /* fragmentation is printed for OCTET */
+ /* STRING and BIT STRING. */
+ closeType /* Trace message at the end of encoding. */
+};
+
+/* tag_length: specifies the tag and length of a value. */
+
+struct tag_length
+{
+ unsigned long int length; /* length of type, if definite */
+ unsigned short int tag; /* 16 bits of the form CCTTTTTTTTTTTTTT,
+ * with "CC" the class number, and "T...T"
+ * the tag. (If tag is 0, then "length",
+ * "primitive" and "definite" are
+ * not significant). */
+ unsigned int definite: 1; /* 1: definite-length encoding */
+};
+
+/* traceRecord: OSS ASN.1 Tools trace record */
+
+struct traceRecord
+{
+ enum traceKind kind; /* kind of trace record */
+ void *p; /* reserved for OSS */
+ char *identifier, /* SET/SEQUENCE/CHOICE component name*/
+ *typeReference,/* defined type name */
+ *builtinTypeName; /* ASN.1 builtin type defined in *
+ * ISO 8824 or "Character String"*/
+
+ void *valueName; /* reserved for future use */
+
+ unsigned taggingCount; /* number of entries in the tag&length
+ * or content-end-octet array */
+
+ union /* tag&length or end-of-contents-octets array. */
+ {
+ struct tag_length *tag_length;
+ int *depth;
+ } tagging;
+
+ enum prtType prtType; /* Refer to prtType above for details */
+ char lenEncoded; /* Indicate whether length is encoded */
+ long length; /* Length in bits for all prime types */
+ /* fieldcount for SET and SEQUENCE */
+ /* length of components for SET OF */
+ /* choice index for type CHOICE */
+ int fragment; /* Fragment for OCTET STRING and BIT */
+ /* STRING, PER fragment when too long */
+
+ enum fieldKind fieldKind; /* kind of value in "fieldNumber" */
+ unsigned int fieldNumber; /* component number, 0 if not
+ * applicable */
+
+ unsigned int depth; /* the depth of this value, from 0 on up */
+
+ unsigned int primitive: 1; /* indicates structure of encoding */
+
+ char value[1]; /* the formatted value for simple
+ * type and ANY. If the first byte
+ * is 0, no value is present. */
+};
+
+
+extern void DLL_ENTRY osstrace(struct ossGlobal *g, struct traceRecord *p, size_t traceRecordLen);
+
+/* osstrace(): User-replaceable trace routine.
+ *
+ * Parameters:
+ * g - Reserved. This is always set to NULL for now.
+ * p - traceRecord, described below.
+ * traceRecordLen - True length of traceRecord, including first \0 in "value"
+ *
+ * osstrace() is called:
+ *
+ * - once for each builtin ASN.1 type, regardless of tagging, with the
+ * field "kind" set to valueTrace. So given a PDU of value "fooBar":
+ *
+ * Sample DEFINITIONS EXPLICIT TAGS ::= BEGIN
+ * fooBar Foo ::= {age 6, living TRUE}
+ * Foo ::= SET {age INTEGER, living [1] [2] Alive}
+ * Alive ::= BOOLEAN
+ * END
+ *
+ * it is called called three times with "kind" set to valueTrace - once
+ * for the SET, once for the INTEGER, and once for the BOOLEAN.
+ *
+ * When the traceRecord "kind" field is set to valueTrace ...
+ *
+ * The field "identifier" contains the component identifier of
+ * the type if one is present in the ASN.1 definition. So in
+ * the above example, "identifier" will be empty on the call for
+ * the SET, while on the call for the INTEGER it will contain "age",
+ * and "living" on the call for the BOOLEAN.
+ *
+ * The field "typeReference" contains the name of the associated ASN.1
+ * typereference, if any. So in the above example, "typeReference"
+ * will contain "Foo" on the call for the SET, "Alive" on the call
+ * for the BOOLEAN, and will be empty on the call for the INTEGER.
+ *
+ * The field "builtinTypeName" contains the name of the ASN.1 builtin
+ * type. So in the above example, "builtinTypeName" will contain
+ * "SET", "INTEGER", and "BOOLEAN" on the calls as appropriate.
+ * Note that for all character string types "builtinTypeName" is
+ * set to "Character String". This will be changed in the near future
+ * to reflect the true character string type.
+ *
+ * The field "taggingCount" contains the number of entries in the array
+ * of tag_length structs pointed to by tagging.tag_length, and reflects
+ * the number of tags present in the encoding. Note that an entry
+ * exists in the tag_length array for each ANY and CHOICE value as
+ * though they had tags defined for them in the ASN.1 Standard. So in
+ * the above example, "taggingCount" is 1 on the calls for the SET and
+ * INTEGER, and on the call for the BOOLEAN "taggingCount" is 3 since
+ * EXPLICIT TAGS is in effect.
+ *
+ * The field "tagging.tag_length" points to an array of tag_length
+ * structs.
+ *
+ * The field "tagging.tag_length->tag" is the BER tag represented
+ * in the form CCTTTTTTTTTTTTTT with "CC" the class number, and
+ * "TTTTTTTTTTTTTT" the tag number. Since the ANY and CHOICE
+ * types do not have tags of their own, the last entry in the
+ * tag_length array for these types always has 0 as the value of
+ * the "tag" field. So in the above example, "tag" is 0x11 on the
+ * call for the the SET.
+ *
+ * The field "tagging.tag_length->length" is the length of the
+ * encoded value if the length is of definite form (i.e.,
+ * "definite" is 1).
+ *
+ * The field "tagging.tag_length->definite" indicates when the
+ * length is definite or indefinite. This field is significant
+ * only if "tag" is non-zero.
+ *
+ * The field "fieldKind" indicates whether the number in "field" is:
+ * -- the position of a component within a SET or SEQUENCE, or
+ * -- the PDU number assigned by the ASN.1 compiler, or
+ * -- the position of a component within a SET OF or SEQUENCE OF, or
+ * -- the position of a substring within a constructed string.
+ * "fieldKind" is significant only if "field" is non-zero. So in
+ * the example above, "fieldKind" has a value of pduNumber on the
+ * call for the SET, and a value of setOrSequenceField on the calls for
+ * the INTEGER and BOOLEAN.
+ *
+ * The field "fieldNumber" is a ordinal number indicating the position
+ * of a component within a SET, SEQUENCE, SET OF, SEQUENCE OF, or
+ * constructed string, or the PDU number assigned by the ASN.1 compiler.
+ * So in the above example, "fieldNumber" is 1 (the PDU number) on the
+ * call for the SET, 1 (the position of the component "age") on the
+ * call for the INTEGER, and 2 (the position of the component "living"
+ * on the call for the BOOLEAN.
+ *
+ * The field "depth" is the level of nesting of the value relative to
+ * the outermost type, which has a "depth" value of 0. So in the above
+ * example, "depth" is 0 on the call for the SET, and 1 on the calls
+ * for the INTEGER and BOOLEAN.
+ *
+ * The field "primitive" is set to 1 if the builtin ASN.1 type is
+ * simple (i.e., the primitive/constructed bit in the identifier
+ * octet is set to 0), so it is 0 for SET, SEQUENCE, SET OF, SEQUENCE
+ * OF, and CHOICE because they are structured. It is also set to 0 if
+ * the type is an ANY. It is 1 for all other builtin types.
+ *
+ * The field "value" contains formatted data if the builtin type
+ * is simple or ANY, regardless of tagging. Hence, in the above
+ * example the call for SET will not contain any data in "value"
+ * (because the builtin type is a constructed type), while for the
+ * INTEGER and BOOLEAN types "value" will contain formatted data.
+ * The maximum number of bytes of formatted data placed into "value"
+ * is controlled by the external variable "asn1chop". If "asn1chop"
+ * is set to 0 the maximum length of the traced value is determined
+ * by the maximum internal buffer size variable, "ossblock".
+ *
+ * - once for each end-of-contents octets pair that is generated/
+ * encountered while encoding/decoding a constructed value whose
+ * length is of the indefinite-length form. A call with a "valueTrace"
+ * record is always made to osstrace() before one is made with an
+ * "endOfContentsTrace" record.
+ *
+ * A single "endOfContentsTrace" call is made to osstrace() for each
+ * builtin type that is processed if the indefinite-length form of
+ * encoding is used. If the builtin type is a structured type (CHOICE,
+ * SET, SEQUENCE, SET OF, SEQUENCE OF) then there may be multiple
+ * "valueTrace" and possible "endOfContentsTrace" calls made to
+ * osstrace() before the matching "endOfContentsTrace" call is made.
+ *
+ * When the traceRecord "kind" field is set to endOfContentsTrace ...
+ *
+ * The field "taggingCount" contains the number of entries in the array
+ * of "depth" indicators pointed to by tagging.depth, and reflects
+ * the nesting of each pair of end-of-contents-octets associated with
+ * the builtin type being encoded/decoded. So in the above example,
+ * if indefinite-length encoding is being used, "taggingCount" will
+ * be 1 on the call for the SET (since it has a single constructed
+ * tag), and 2 on the call for the BOOLEAN (since it has two explicit
+ * tags, for which the "constructed" bit in the encoding must be set).
+ *
+ * The field "tagging.depth" points to an array of "depth" indicators
+ * that reflect the nesting of each pair of end-of-contents-octets
+ * associated with a builtin type. So in the above example, if
+ * indefinite-length encoding is being used, "tagging.depth" will point
+ * to a single 0 on the call for the SET since it has a single tag for
+ * which the constructed bit is set; while on the call for the BOOLEAN
+ * "tagging.depth" will point to an array whose two entries are 1 and 2
+ * since there are two explicit tags on the BOOLEAN.
+ *
+ * All other fields in the traceRecord are insignificant for an
+ * endOfContentsTrace record.
+ *
+ * - once for each value that is skipped while decoding, with a "kind"
+ * value of skippedFieldTrace. The skippedFieldTrace "kind" is just
+ * means of indicating that an unexpected value was encountered in the
+ * message and is being skipped. This is not an error if the type is
+ * extensible.
+ *
+ * When the traceRecord "kind" field is set to skippedFieldTrace ...
+ *
+ * The field of the traceRecord are the same as when "kind" is set to
+ * valueTrace, except that:
+ * -- the skipped value is always reported as having one tag, hence
+ * -- there is only one entry in the tag_length array.
+ * -- the content of the field "value" is always "<skipped>", and
+ * -- "typeReference" is always NULL.
+ *
+ * - once for each error message issued, in which case the "kind" field
+ * is set to messageTrace.
+ *
+ * When the traceRecord "kind" field is set to messageTrace the "value"
+ * field contains the error message, and other fields are
+ * insignificant.
+ */
+
+
+/* tag_length: describes the tag and length of a value.
+ *
+ * "tag" is 0 if the value is an ANY or CHOICE value, in which
+ * case "definite" is not significant since ANY and CHOICE do
+ * not have a tag of their own.
+ *
+ * If "tag" is not 0, "definite" indicates whether the value
+ * is encoded using definite- or indefinite-length form.
+ *
+ * If "definite" is 1, "length" is the length of the value, else
+ * it is not significant (indefinite-length encoding was used).
+ */
+
+
+/* tagging: tag&length or end-of-contents-octets array.
+ *
+ * The tag and length array, tag_length, is present if this
+ * is a valueTrace or skippedFieldTrace record. There is one array
+ * entry for each tag present in the encoding of a given value, so
+ * "[1] EXPLICIT [2] EXPLICIT INTEGER" gets three tag_length
+ * array entries, where each entry describes the tag and length
+ * information that precedes the value.
+ *
+ * The depth array, "depth", is present only if this is a
+ * endOfContentsTrace record. There is one array entry for each
+ * indefinite length present in the encoding of a value, so
+ * "[1] EXPLICIT [2] EXPLICIT INTEGER" gets two "depth" entries
+ * corresponding to the two explicit tags, where the value of each
+ * tag indicates the depth of the tagged value relative to outmost type
+ * that contains the INTEGER (e.g., relative to the containing SET).
+ */
+
+/* Odds and ends:
+ *
+ * - When the value of a field is not significant the field is set to 0.
+ */
+
+
+/* Augmenting for Packed Encoding Rule (PER) tracing.
+ *
+ * PER does not encode tag for any ASN.1 type. For some types, length
+ * may or may not be encoded. PER does not always use octet aligned
+ * encoding, therefore, the length should be in unit of bit.
+ *
+ * We classified ASN.1 types in to the following:
+ *
+ * (1). For all primitive types (including ANY), the prtType in traceRecord
+ * is set to primeType, length is the total length of the content
+ * in bits. The file osstrace.c prints length in the format
+ * length = nbytes.nbits, and the total length should be 8*nbytes+nbits.
+ * If the length is not encoded, "(not encoded)" will be added to the
+ * output string. For BIT STRING with length longer than 64K (bits), and
+ * for OCTET STRING longer that 16K (bytes), fragmentation is needed
+ * and this is indicated by the string "fragment = n" after the length.
+ * The fragmentation index is field fragment in traceRecord.
+ * (2). For SEQUENCE and SET, prtType is seqsetType. In this case, the length
+ * in traceRecord is the fieldcount of the SEQUENCE or SET.
+ * (3). For SEQUENCE OF and SET OF, prtType is seqofType, and the length
+ * in traceRecord is the count of components in the SEQUENCE OF (SET OF).
+ * (4). For CHOICE, prtType is choiceType, and the length field in
+ * traceRecord indicates the choice index.
+ * (5). Total number of bits for the entire encoding is reported at the end
+ * of encoding and decoding. The prtType for this trace is closeType.
+ */
+
+#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32))
+#pragma pack(pop, ossPacking)
+#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS))
+#pragma pack()
+#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__))
+#pragma option -a.
+#elif defined(__IBMC__)
+#pragma pack()
+#endif /* _MSC_VER && _WIN32 */
+
diff --git a/public/sdk/inc/otrack.hxx b/public/sdk/inc/otrack.hxx
new file mode 100644
index 000000000..7c4dc731c
--- /dev/null
+++ b/public/sdk/inc/otrack.hxx
@@ -0,0 +1,216 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) 1992, Microsoft Corporation.
+//
+// File: otrack.hxx
+//
+// Contents: This file defines facilities for a standard implementation
+// of reference-counted objects, incorporating mechanisms for
+// tracking the usage history of the objects.
+//
+// Classes: CRefcountedObject
+//
+// History: 6-Apr-92 MikeSe Created
+//
+//----------------------------------------------------------------------------
+
+#ifndef __OTRACK_HXX__
+#define __OTRACK_HXX__
+
+#include <windows.h>
+
+//+-------------------------------------------------------------------------
+//
+// Class: CRefcountedObject (rco)
+//
+// Purpose: Provides basis for tracking (OLE) objects (aka interface handles)
+//
+// History: 6-Apr-92 MikeSe Created
+//
+// Notes: Access to this class is only indirect, through the macros
+// defined later.
+//
+//--------------------------------------------------------------------------
+
+class CRefcountedObject
+{
+protected:
+
+ CRefcountedObject ()
+ :_cReferences(1)
+ {
+# if DBG == 1
+ _CRefcountedObject();
+# endif
+ }
+
+ ULONG TrackAddRef ( void );
+ ULONG TrackRelease ( void );
+ void TrackClassName ( char * pszName );
+
+# if DBG == 1
+
+ ~CRefcountedObject()
+ {
+ DestroyRefcounted();
+ }
+
+# endif
+
+private:
+
+ void _CRefcountedObject ( void );
+ void DestroyRefcounted ( void );
+
+# if DBG == 1
+
+ BOOL IsClassTracking( char * pszName );
+
+ static BOOL _TrackAll;
+
+public:
+ // dumps information on all outstanding objects
+ static void DumpTrackingInfo ( int fDeleteNode = 0 );
+ static void TrackClass(BOOL, char * pszName );
+
+# endif // DBG == 1
+
+protected:
+ unsigned long _cReferences;
+};
+
+//+-------------------------------------------------------------------------
+//
+// The following macros encapsulate use of the above
+//
+// INHERIT_TRACKING:
+//
+// For any class which implements a Cairo interface, add this macro
+// in the class declaration, eg:
+//
+// class CMyFoo: INHERIT_TRACKING, IFoo
+//
+// Do not repeat this in any subclass. If both INHERIT_UNWIND and
+// INHERIT_TRACKING are used, the former should appear first.
+
+# define INHERIT_TRACKING protected CRefcountedObject
+
+ // The following declarations are for non-retail builds
+
+# if DBG == 1
+
+//
+// DECLARE_STD_REFCOUNTING:
+//
+// To make use of standard refcounting code, place the above
+// in the class declaration, in the public method section. This
+// macro defines the AddRef and Release methods for the class.
+//
+
+# define DECLARE_STD_REFCOUNTING \
+ STDMETHOD_(ULONG, AddRef) () \
+ { \
+ return TrackAddRef(); \
+ }; \
+ STDMETHOD_(ULONG, Release) () \
+ { \
+ ULONG ul = TrackRelease(); \
+ if ( ul==0 ) delete this; \
+ return ul; \
+ };
+
+//
+// ENLIST_TRACKING(class name)
+//
+// Place an invocation of this in each constructor, at any appropriate
+// point (generally immediately before returning from the constructor).
+//
+// ENLIST_TRACKING(CMyFoo)
+//
+
+# define ENLIST_TRACKING(cls) TrackClassName( #cls )
+
+//
+// NB: In a subclass of a class which has INHERIT_TRACKING, do not
+// use INHERIT_TRACKING again. However, do use ENLIST_TRACKING in
+// in the constructor of the derived class, and use TRACK_ADDREF
+// and TRACK_RELEASE if the subclass overrides the AddRef and Release
+// methods.
+
+//
+// TRACK_CLASS(fTrack, pszClassName)
+//
+// Use this to add or remove a class in the list of tracked classes.
+// You can turn tracking of all classes on or off by using a NULL
+// pszClassName. If fTrack is TRUE, the class will be tracked, if FALSE,
+// the class will no longer be tracked. The default configuration is
+// that all classes are tracked.
+//
+// NOTE: this affects only objects created after this macro is executed.
+//
+
+# define TRACK_CLASS(fTrack, cls) \
+ CRefcountedObject::TrackClass( fTrack, cls )
+
+//
+// DUMP_TRACKING_INFO()
+//
+// Place this anywhere it would be useful to dump out the object
+// tracking database. By default, this is always issued at program
+// termination.
+//
+
+# define DUMP_TRACKING_INFO() DUMP_TRACKING_INFO_KEEP()
+# define DUMP_TRACKING_INFO_KEEP() CRefcountedObject::DumpTrackingInfo(0)
+# define DUMP_TRACKING_INFO_DELETE() CRefcountedObject::DumpTrackingInfo(1)
+
+// Output from this is controlled by setting the following mask values
+// in OtInfoLevel
+
+# define DEB_OT_OBJECTS 0x00000001L
+ // display object addresses, reference count and name (Default)
+
+# define DEB_OT_CALLERS 0x80000000L
+ // display call history
+
+// In addition, set the following values to cause debug output during
+// operation:
+
+# define DEB_OT_ERRORS 0x00000002L
+ // report errors during tracking operations (Default)
+
+# define DEB_OT_ACTIONS 0x40000000L
+ // report each create, addref and release
+
+# define DEB_OT_DELETE 0x20000000L
+ // display call history at object delete
+
+# else // DBG == 0
+
+# define DECLARE_STD_REFCOUNTING \
+ STDMETHOD_(ULONG, AddRef) () \
+ { \
+ return InterlockedIncrement((long*)&_cReferences); \
+ }; \
+ STDMETHOD_(ULONG, Release) () \
+ { \
+ ULONG ul = (ULONG)InterlockedDecrement((long*)&_cReferences); \
+ if ( ul == 0 ) \
+ { \
+ delete this; \
+ return 0; \
+ } \
+ else \
+ return ul; \
+ };
+
+# define ENLIST_TRACKING(cls)
+
+# define DUMP_TRACKING_INFO()
+
+# define TRACK_CLASS(fTrack, cls)
+
+# endif // DBG == 0
+
+#endif // of ifndef __OTRACK_HXX__
diff --git a/public/sdk/inc/pcrt32.h b/public/sdk/inc/pcrt32.h
new file mode 100644
index 000000000..37974cf81
--- /dev/null
+++ b/public/sdk/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/public/sdk/inc/pdb.h b/public/sdk/inc/pdb.h
new file mode 100644
index 000000000..39b5f3a28
--- /dev/null
+++ b/public/sdk/inc/pdb.h
@@ -0,0 +1,318 @@
+// Debug Information API
+// Copyright (C) 1993, Microsoft Corp. All Rights Reserved.
+
+#ifndef __PDB_INCLUDED__
+#define __PDB_INCLUDED__
+
+#if defined(INCR_COMPILE)
+# define ICC(x) x
+#else
+# define ICC(x)
+#endif
+
+#include <windef.h> // for BOOL, BYTE, ULONG, USHORT
+#ifndef _CV_INFO_INCLUDED
+# include <cvinfo.h>
+#endif
+#include <stdlib.h>
+
+#include "vcbudefs.h"
+
+enum { PreDolphinIntv = 920924, DolphinIntv = 19940309 };
+
+typedef CV_typ_t TI; // type index
+struct PDB; // program database
+ICC(struct Stream); // some named bytestream in the PDB
+struct DBI; // debug information within the PDB
+struct Mod; // a module within the DBI
+struct TPI; // type info within the DBI
+struct GSI;
+struct SO;
+typedef struct PDB PDB;
+ICC(typedef struct Stream Stream;)
+typedef struct DBI DBI;
+typedef struct Mod Mod;
+typedef struct TPI TPI;
+typedef struct GSI GSI;
+typedef struct SO SO;
+
+typedef long EC; // error code
+enum PDBErrors {
+ EC_OK, // -, no problemo
+ EC_USAGE, // -, invalid parameter or call order
+ EC_OUT_OF_MEMORY, // -, out of RAM
+ EC_FILE_SYSTEM, // "pdb name", can't write file, out of disk, etc.
+ EC_NOT_FOUND, // "pdb name", PDB file not found
+ EC_INVALID_SIG, // "pdb name", PDB::OpenValidate() and its clients only
+ EC_INVALID_AGE, // "pdb name", PDB::OpenValidate() and its clients only
+ EC_PRECOMP_REQUIRED, // "obj name", Mod::AddTypes() only
+ EC_OUT_OF_TI, // "pdb name", TPI::QueryTiForCVRecord() only
+ EC_NOT_IMPLEMENTED, // -
+ EC_V1_PDB, // "pdb name", PDB::Open* only
+// well, Steve?
+ EC_FORMAT, // accessing pdb with obsolete format
+ EC_LIMIT,
+ EC_CORRUPT, // cv info corrupt, recompile mod
+ EC_MAX
+};
+#define cbErrMax 1024 /* max. length of error message */
+
+#define pure = 0
+
+#ifndef PDBCALL
+#define PDBCALL __cdecl
+#endif
+
+#ifdef PDB_SERVER
+#define PDB_IMPORT_EXPORT(RTYPE) __declspec(dllexport) RTYPE PDBCALL
+#elif defined(PDB_LIBRARY)
+#define PDB_IMPORT_EXPORT(RTYPE) RTYPE PDBCALL
+#else
+#define PDB_IMPORT_EXPORT(RTYPE) __declspec(dllimport) RTYPE PDBCALL
+#endif
+
+#define PDBAPI PDB_IMPORT_EXPORT
+
+#define IN /* in parameter, parameters are IN by default */
+#define OUT /* out parameter */
+#define virt virtual
+#define interface struct
+
+#ifdef __cplusplus
+
+// C++ Binding
+
+interface PDB { // program database
+ enum {intv = PreDolphinIntv};
+ static PDBAPI( BOOL ) OpenValidate(SZ szPDB, SZ szPath, SZ szMode, SIG sig, AGE age,
+ OUT EC* pec, OUT char szError[cbErrMax], OUT PDB** pppdb);
+ static PDBAPI( BOOL ) Open(SZ szPDB, SZ szMode, SIG sigInitial, OUT EC* pec,
+ OUT char szError[cbErrMax], OUT PDB** pppdb);
+ inline BOOL ValidateInterface()
+ {
+ return ExportValidateInterface(PreDolphinIntv);
+ }
+ // a dbi client should never call ExportValidateInterface directly - use PDBValidateInterface
+ static PDBAPI( BOOL ) ExportValidateInterface(INTV intv);
+ virtual INTV QueryInterfaceVersion() pure;
+ virtual IMPV QueryImplementationVersion() pure;
+ virtual EC QueryLastError(OUT char szError[cbErrMax]) pure;
+ virtual SZ QueryPDBName(OUT char szPDB[_MAX_PATH]) pure;
+ virtual SIG QuerySignature() pure;
+ virtual AGE QueryAge() pure;
+
+ ICC(virtual BOOL OpenStream(SZ szStream, OUT Stream** ppstream) pure;)
+
+ virtual BOOL CreateDBI(SZ szTarget, OUT DBI** ppdbi) pure;
+ virtual BOOL OpenDBI(SZ szTarget, SZ szMode, OUT DBI** ppdbi) pure;
+ virtual BOOL OpenTpi(SZ szMode, OUT TPI** pptpi) pure;
+
+ virtual BOOL Commit() pure;
+ virtual BOOL Close() pure;
+};
+
+#if defined(ICC)
+interface Stream {
+ virtual CB QueryCb();
+ virtual BOOL Read(OFF off, void* pvBuf, CB* pcbBuf);
+ virtual BOOL Write(OFF off, void* pvBuf, CB cbBuf);
+ virtual BOOL Replace(void* pvBuf, CB cbBuf);
+ virtual BOOL Append(void* pvBuf, CB cbBuf);
+ virtual BOOL Delete();
+ virtual BOOL Commit();
+ virtual BOOL Close();
+};
+#endif
+
+interface DBI { // debug information
+ enum {intv = PreDolphinIntv};
+ virtual IMPV QueryImplementationVersion() pure;
+ virtual INTV QueryInterfaceVersion() pure;
+ virtual BOOL OpenMod(SZ szModule, SZ szFile, OUT Mod** ppmod) pure;
+ virtual BOOL DeleteMod(SZ szModule) pure;
+ virtual BOOL QueryNextMod(Mod* pmod, Mod** ppmodNext) pure;
+ virtual BOOL OpenGlobals(OUT GSI **ppgsi) pure;
+ virtual BOOL OpenPublics(OUT GSI **ppgsi) pure;
+ virtual BOOL AddSec(ISECT isect, USHORT flags, CB cb) pure;
+ virtual BOOL QueryModFromAddr(ISECT isect, OFF off, OUT Mod** ppmod,
+ OUT ISECT* pisect, OUT OFF* poff, OUT CB* pcb) pure;
+ virtual BOOL QuerySecMap(OUT PB pb, CB* pcb) pure;
+ virtual BOOL QueryFileInfo(OUT PB pb, CB* pcb) pure;
+ virtual void DumpMods() pure;
+ virtual void DumpSecContribs() pure;
+ virtual void DumpSecMap() pure;
+
+ virtual BOOL Close() pure;
+ virtual BOOL AddThunkMap(OFF* poffThunkMap, UINT nThunks, CB cbSizeOfThunk,
+ SO* psoSectMap, UINT nSects, ISECT isectThunkTable, OFF offThunkTable) pure;
+};
+
+interface Mod { // info for one module within DBI
+ enum {intv = PreDolphinIntv};
+ virtual INTV QueryInterfaceVersion() pure;
+ virtual IMPV QueryImplementationVersion() pure;
+ virtual BOOL AddTypes(PB pbTypes, CB cb) pure;
+ virtual BOOL AddSymbols(PB pbSym, CB cb) pure;
+ virtual BOOL AddPublic(SZ szPublic, ISECT isect, OFF off) pure;
+ virtual BOOL AddLines(SZ szSrc, ISECT isect, OFF offCon, CB cbCon, OFF doff,
+ LINE lineStart, PB pbCoff, CB cbCoff) pure;
+ virtual BOOL AddSecContrib(ISECT isect, OFF off, CB cb) pure;
+ virtual BOOL QueryCBName(OUT CB* pcb) pure;
+ virtual BOOL QueryName(OUT char szName[_MAX_PATH], OUT CB* pcb) pure;
+ virtual BOOL QuerySymbols(PB pbSym, CB* pcb) pure;
+ virtual BOOL QueryLines(PB pbLines, CB* pcb) pure;
+
+ virtual BOOL SetPvClient(void *pvClient) pure;
+ virtual BOOL GetPvClient(OUT void** ppvClient) pure;
+ virtual BOOL QuerySecContrib(OUT ISECT* pisect, OUT OFF* poff, OUT CB* pcb) pure;
+
+ virtual BOOL QueryImod(OUT IMOD* pimod) pure;
+ virtual BOOL QueryDBI(OUT DBI** ppdbi) pure;
+ virtual BOOL Close() pure;
+};
+
+interface TPI { // type info
+ enum {intv = PreDolphinIntv};
+ virtual INTV QueryInterfaceVersion() pure;
+ virtual IMPV QueryImplementationVersion() pure;
+ virtual BOOL QueryTiForCVRecord(PB pb, OUT TI* pti) pure;
+ virtual BOOL QueryCVRecordForTi(TI ti, OUT PB pb, IN OUT CB* pcb) pure;
+ virtual BOOL QueryPbCVRecordForTi(TI ti, OUT PB* ppb) pure;
+ virtual TI QueryTiMin() pure;
+ virtual TI QueryTiMac() pure;
+ virtual CB QueryCb() pure;
+ virtual BOOL Close() pure;
+};
+
+interface GSI {
+ enum {intv = PreDolphinIntv};
+ virtual INTV QueryInterfaceVersion() pure;
+ virtual IMPV QueryImplementationVersion() pure;
+ virtual PB NextSym (PB pbSym) pure;
+ virtual PB HashSym (SZ szName, PB pbSym) pure;
+ virtual PB NearestSym (ISECT isect, OFF off, OUT OFF* pdisp) pure; //currently only supported for publics
+ virtual BOOL Close() pure;
+};
+
+#endif // __cplusplus
+
+// ANSI C Binding
+
+#if __cplusplus
+extern "C" {
+#endif
+
+PDBAPI( BOOL )
+PDBOpenValidate(
+ SZ szPDB,
+ SZ szPath,
+ SZ szMode,
+ SIG sig,
+ AGE age,
+ OUT EC* pec,
+ OUT char szError[cbErrMax],
+ OUT PDB** pppdb);
+
+PDBAPI( BOOL )
+PDBOpen(
+ SZ szPDB,
+ SZ szMode,
+ SIG sigInitial,
+ OUT EC* pec,
+ OUT char szError[cbErrMax],
+ OUT PDB** pppdb);
+
+// a dbi client should never call PDBExportValidateInterface directly - use PDBValidateInterface
+PDBAPI( BOOL )
+PDBExportValidateInterface(
+ INTV intv);
+
+__inline BOOL PDBValidateInterface()
+{
+ return PDBExportValidateInterface(PreDolphinIntv);
+}
+
+PDBAPI( EC ) PDBQueryLastError(PDB* ppdb, OUT char szError[cbErrMax]);
+PDBAPI( INTV ) PDBQueryInterfaceVersion(PDB* ppdb);
+PDBAPI( IMPV ) PDBQueryImplementationVersion(PDB* ppdb);
+PDBAPI( SZ ) PDBQueryPDBName(PDB* ppdb, OUT char szPDB[_MAX_PATH]);
+PDBAPI( SIG ) PDBQuerySignature(PDB* ppdb);
+PDBAPI( AGE ) PDBQueryAge(PDB* ppdb);
+PDBAPI( BOOL ) PDBCreateDBI(PDB* ppdb, SZ szTarget, OUT DBI** ppdbi);
+PDBAPI( BOOL ) PDBOpenDBI(PDB* ppdb, SZ szMode, SZ szTarget, OUT DBI** ppdbi);
+PDBAPI( BOOL ) PDBOpenTpi(PDB* ppdb, SZ szMode, OUT TPI** pptpi);
+PDBAPI( BOOL ) PDBCommit(PDB* ppdb);
+PDBAPI( BOOL ) PDBClose(PDB* ppdb);
+
+PDBAPI( INTV ) DBIQueryInterfaceVersion(DBI* pdbi);
+PDBAPI( IMPV ) DBIQueryImplementationVersion(DBI* pdbi);
+PDBAPI( BOOL ) DBIOpenMod(DBI* pdbi, SZ szModule, SZ szFile, OUT Mod** ppmod);
+PDBAPI( BOOL ) DBIDeleteMod(DBI* pdbi, SZ szModule);
+PDBAPI( BOOL ) DBIQueryNextMod(DBI* pdbi, Mod* pmod, Mod** ppmodNext);
+PDBAPI( BOOL ) DBIOpenGlobals(DBI* pdbi, OUT GSI **ppgsi);
+PDBAPI( BOOL ) DBIOpenPublics(DBI* pdbi, OUT GSI **ppgsi);
+PDBAPI( BOOL ) DBIAddSec(DBI* pdbi, ISECT isect, USHORT flags, CB cb);
+PDBAPI( BOOL ) DBIQueryModFromAddr(DBI* pdbi, ISECT isect, OFF off, OUT Mod** ppmod, OUT ISECT* pisect, OUT OFF* poff, OUT CB* pcb);
+PDBAPI( BOOL ) DBIQuerySecMap(DBI* pdbi, OUT PB pb, CB* pcb);
+PDBAPI( BOOL ) DBIQueryFileInfo(DBI* pdbi, OUT PB pb, CB* pcb);
+PDBAPI( void ) DBIDumpMods(DBI* pdbi);
+PDBAPI( void ) DBIDumpSecContribs(DBI* pdbi);
+PDBAPI( void ) DBIDumpSecMap(DBI* pdbi);
+PDBAPI( BOOL ) DBIClose(DBI* pdbi);
+PDBAPI( BOOL ) DBIAddThunkMap(DBI* pdbi, OFF* poffThunkMap, UINT nThunks, CB cbSizeOfThunk,
+ SO* psoSectMap, UINT nSects, ISECT isectThunkTable, OFF offThunkTable);
+
+PDBAPI( INTV ) ModQueryInterfaceVersion(Mod* pmod);
+PDBAPI( IMPV ) ModQueryImplementationVersion(Mod* pmod);
+PDBAPI( BOOL ) ModAddTypes(Mod* pmod, PB pbTypes, CB cb);
+PDBAPI( BOOL ) ModAddSymbols(Mod* pmod, PB pbSym, CB cb);
+PDBAPI( BOOL ) ModAddPublic(Mod* pmod, SZ szPublic, ISECT isect, OFF off);
+PDBAPI( BOOL ) ModAddLines(Mod* pmod, SZ szSrc, ISECT isect, OFF offCon, CB cbCon, OFF doff,
+ LINE lineStart, PB pbCoff, CB cbCoff);
+PDBAPI( BOOL ) ModAddSecContrib(Mod * pmod, ISECT isect, OFF off, CB cb);
+PDBAPI( BOOL ) ModQueryCBName(Mod* pmod, OUT CB* pcb);
+PDBAPI( BOOL ) ModQueryName(Mod* pmod, OUT char szName[_MAX_PATH], OUT CB* pcb);
+PDBAPI( BOOL ) ModQuerySymbols(Mod* pmod, PB pbSym, CB* pcb);
+PDBAPI( BOOL ) ModQueryLines(Mod* pmod, PB pbLines, CB* pcb);
+PDBAPI( BOOL ) ModSetPvClient(Mod* pmod, void *pvClient);
+PDBAPI( BOOL ) ModGetPvClient(Mod* pmod, OUT void** ppvClient);
+PDBAPI( BOOL ) ModQuerySecContrib(Mod* pmod, OUT ISECT* pisect, OUT OFF* poff, OUT CB* pcb);
+PDBAPI( BOOL ) ModQueryImod(Mod* pmod, OUT IMOD* pimod);
+PDBAPI( BOOL ) ModQueryDBI(Mod* pmod, OUT DBI** ppdbi);
+PDBAPI( BOOL ) ModClose(Mod* pmod);
+
+PDBAPI( INTV ) TypesQueryInterfaceVersion(TPI* ptpi);
+PDBAPI( IMPV ) TypesQueryImplementationVersion(TPI* ptpi);
+PDBAPI( BOOL ) TypesQueryTiForCVRecord(TPI* ptpi, PB pb, OUT TI* pti);
+PDBAPI( BOOL ) TypesQueryCVRecordForTi(TPI* ptpi, TI ti, OUT PB pb, IN OUT CB* pcb);
+PDBAPI( BOOL ) TypesQueryPbCVRecordForTi(TPI* ptpi, TI ti, OUT PB* ppb);
+PDBAPI( TI ) TypesQueryTiMin(TPI* ptpi);
+PDBAPI( TI ) TypesQueryTiMac(TPI* ptpi);
+PDBAPI( CB ) TypesQueryCb(TPI* ptpi);
+PDBAPI( BOOL ) TypesClose(TPI* ptpi);
+
+PDBAPI( PB ) GSINextSym (GSI* pgsi, PB pbSym);
+PDBAPI( PB ) GSIHashSym (GSI* pgsi, SZ szName, PB pbSym);
+PDBAPI( PB ) GSINearestSym (GSI* pgsi, ISECT isect, OFF off,OUT OFF* pdisp);//currently only supported for publics
+PDBAPI( BOOL ) GSIClose(GSI* pgsi);
+
+#if __cplusplus
+};
+#endif
+
+struct SO {
+ OFF off;
+ ISECT isect;
+ WORD pad;
+};
+
+#define tsNil ((TPI*)0)
+#define tiNil ((TI)0)
+#define imodNil ((IMOD)(-1))
+
+#define pdbWrite "w"
+#define pdbRead "r"
+#define pdbGetTiOnly "i"
+#define pdbGetRecordsOnly "c"
+
+#endif // __PDB_INCLUDED__
diff --git a/public/sdk/inc/pdh.h b/public/sdk/inc/pdh.h
new file mode 100644
index 000000000..9b7a335b7
--- /dev/null
+++ b/public/sdk/inc/pdh.h
@@ -0,0 +1,573 @@
+/*++
+
+Copyright (C) 1996 Microsoft Corporation
+
+Module Name:
+
+ PDH.H
+
+Abstract:
+
+ Header file for the Performance Data Helper (PDH) DLL functions.
+
+--*/
+#ifndef _PDH_H_
+#define _PDH_H_
+
+// system include files required for datatype and constant definitions
+#include <windows.h> // necessary for data types used in this file
+#include <winperf.h> // necessary for the Detail Level definitions
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef LONG PDH_STATUS;
+
+#define PDH_FUNCTION PDH_STATUS __stdcall
+
+// version info
+#define PDH_CVERSION_WIN40 0x0400
+#define PDH_VERSION PDH_CVERSION_WIN40
+
+// define severity masks
+#define IsSuccessSeverity(ErrorCode) \
+ ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x00000000L) ? TRUE : FALSE)
+#define IsInformationalSeverity(ErrorCode) \
+ ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x40000000L) ? TRUE : FALSE)
+#define IsWarningSeverity(ErrorCode) \
+ ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x80000000L) ? TRUE : FALSE)
+#define IsErrorSeverity(ErrorCode) \
+ ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0xC0000000L) ? TRUE : FALSE)
+
+// data type definitions
+
+typedef HANDLE HCOUNTER;
+typedef HANDLE HQUERY;
+
+typedef struct _PDH_RAW_COUNTER {
+ DWORD CStatus;
+ FILETIME TimeStamp;
+ LONGLONG FirstValue;
+ LONGLONG SecondValue;
+ DWORD MultiCount;
+} PDH_RAW_COUNTER, *PPDH_RAW_COUNTER;
+
+typedef struct _PDH_FMT_COUNTERVALUE {
+ DWORD CStatus;
+ union {
+ LONG longValue;
+ double doubleValue;
+ LONGLONG largeValue;
+ };
+} PDH_FMT_COUNTERVALUE, *PPDH_FMT_COUNTERVALUE;
+
+typedef struct _PDH_STATISTICS {
+ DWORD dwFormat;
+ DWORD count;
+ PDH_FMT_COUNTERVALUE min;
+ PDH_FMT_COUNTERVALUE max;
+ PDH_FMT_COUNTERVALUE mean;
+} PDH_STATISTICS, *PPDH_STATISTICS;
+
+typedef struct _PDH_COUNTER_PATH_ELEMENTS_A {
+ LPSTR szMachineName;
+ LPSTR szObjectName;
+ LPSTR szInstanceName;
+ LPSTR szParentInstance;
+ DWORD dwInstanceIndex;
+ LPSTR szCounterName;
+} PDH_COUNTER_PATH_ELEMENTS_A, *PPDH_COUNTER_PATH_ELEMENTS_A;
+
+typedef struct _PDH_COUNTER_PATH_ELEMENTS_W {
+ LPWSTR szMachineName;
+ LPWSTR szObjectName;
+ LPWSTR szInstanceName;
+ LPWSTR szParentInstance;
+ DWORD dwInstanceIndex;
+ LPWSTR szCounterName;
+} PDH_COUNTER_PATH_ELEMENTS_W, *PPDH_COUNTER_PATH_ELEMENTS_W;
+
+typedef struct _PDH_COUNTER_INFO_A {
+ DWORD dwLength;
+ DWORD dwType;
+ DWORD CVersion;
+ DWORD CStatus;
+ LONG lScale;
+ LONG lDefaultScale;
+ DWORD dwUserData;
+ DWORD dwQueryUserData;
+ LPSTR szFullPath;
+ union {
+ PDH_COUNTER_PATH_ELEMENTS_A CounterPath;
+ struct {
+ LPSTR szMachineName;
+ LPSTR szObjectName;
+ LPSTR szInstanceName;
+ LPSTR szParentInstance;
+ DWORD dwInstanceIndex;
+ LPSTR szCounterName;
+ };
+ };
+ LPSTR szExplainText;
+ DWORD DataBuffer[1];
+} PDH_COUNTER_INFO_A, *PPDH_COUNTER_INFO_A;
+
+typedef struct _PDH_COUNTER_INFO_W {
+ DWORD dwLength;
+ DWORD dwType;
+ DWORD CVersion;
+ DWORD CStatus;
+ LONG lScale;
+ LONG lDefaultScale;
+ DWORD dwUserData;
+ DWORD dwQueryUserData;
+ LPWSTR szFullPath;
+ union {
+ PDH_COUNTER_PATH_ELEMENTS_W CounterPath;
+ struct {
+ LPWSTR szMachineName;
+ LPWSTR szObjectName;
+ LPWSTR szInstanceName;
+ LPWSTR szParentInstance;
+ DWORD dwInstanceIndex;
+ LPWSTR szCounterName;
+ };
+ };
+ LPWSTR szExplainText;
+ DWORD DataBuffer[1];
+} PDH_COUNTER_INFO_W, *PPDH_COUNTER_INFO_W;
+
+// function definitions
+
+PDH_FUNCTION
+PdhGetDllVersion(
+ IN LPDWORD lpdwVersion
+);
+
+//
+// Query Functions
+//
+
+PDH_FUNCTION
+PdhOpenQuery (
+ IN LPVOID pReserved,
+ IN DWORD dwUserData,
+ IN HQUERY *phQuery
+);
+
+PDH_FUNCTION
+PdhAddCounterW (
+ IN HQUERY hQuery,
+ IN LPCWSTR szFullCounterPath,
+ IN DWORD dwUserData,
+ IN HCOUNTER *phCounter
+);
+
+PDH_FUNCTION
+PdhAddCounterA (
+ IN HQUERY hQuery,
+ IN LPCSTR szFullCounterPath,
+ IN DWORD dwUserData,
+ IN HCOUNTER *phCounter
+);
+
+PDH_FUNCTION
+PdhRemoveCounter (
+ IN HCOUNTER hCounter
+);
+
+PDH_FUNCTION
+PdhCollectQueryData (
+ IN HQUERY hQuery
+);
+
+PDH_FUNCTION
+PdhCloseQuery (
+ IN HQUERY hQuery
+);
+
+//
+// Counter Functions
+//
+
+PDH_FUNCTION
+PdhGetFormattedCounterValue (
+ IN HCOUNTER hCounter,
+ IN DWORD dwFormat,
+ IN LPDWORD lpdwType,
+ IN PPDH_FMT_COUNTERVALUE pValue
+);
+
+// dwFormat flag values
+//
+#define PDH_FMT_RAW ((DWORD)0x00000010)
+#define PDH_FMT_ANSI ((DWORD)0x00000020)
+#define PDH_FMT_UNICODE ((DWORD)0x00000040)
+#define PDH_FMT_LONG ((DWORD)0x00000100)
+#define PDH_FMT_DOUBLE ((DWORD)0x00000200)
+#define PDH_FMT_LARGE ((DWORD)0x00000400)
+#define PDH_FMT_NOSCALE ((DWORD)0x00001000)
+#define PDH_FMT_1000 ((DWORD)0x00002000)
+#define PDH_FMT_NODATA ((DWORD)0x00004000)
+
+PDH_FUNCTION
+PdhGetRawCounterValue (
+ IN HCOUNTER hCounter,
+ IN LPDWORD lpdwType,
+ IN PPDH_RAW_COUNTER pValue
+);
+
+PDH_FUNCTION
+PdhCalculateCounterFromRawValue (
+ IN HCOUNTER hCounter,
+ IN DWORD dwFormat,
+ IN PPDH_RAW_COUNTER rawValue1,
+ IN PPDH_RAW_COUNTER rawValue2,
+ IN PPDH_FMT_COUNTERVALUE fmtValue
+);
+
+PDH_FUNCTION
+PdhComputeCounterStatistics (
+ IN HCOUNTER hCounter,
+ IN DWORD dwFormat,
+ IN DWORD dwFirstEntry,
+ IN DWORD dwNumEntries,
+ IN PPDH_RAW_COUNTER lpRawValueArray,
+ IN PPDH_STATISTICS data
+);
+
+PDH_FUNCTION
+PdhGetCounterInfoW (
+ IN HCOUNTER hCounter,
+ IN BOOLEAN bRetrieveExplainText,
+ IN LPDWORD pdwBufferSize,
+ IN PPDH_COUNTER_INFO_W lpBuffer
+);
+
+PDH_FUNCTION
+PdhGetCounterInfoA (
+ IN HCOUNTER hCounter,
+ IN BOOLEAN bRetrieveExplainText,
+ IN LPDWORD pdwBufferSize,
+ IN PPDH_COUNTER_INFO_A lpBuffer
+);
+
+#define PDH_MAX_SCALE (7L)
+#define PDH_MIN_SCALE (-7L)
+
+PDH_FUNCTION
+PdhSetCounterScaleFactor (
+ IN HCOUNTER hCounter,
+ IN LONG lFactor
+);
+//
+// Browsing and enumeration functions
+//
+PDH_FUNCTION
+PdhConnectMachineW (
+ IN LPCWSTR szMachineName
+);
+
+PDH_FUNCTION
+PdhConnectMachineA (
+ IN LPCSTR szMachineName
+);
+
+PDH_FUNCTION
+PdhEnumMachinesW (
+ IN LPCWSTR szReserved,
+ IN LPWSTR mszMachineList,
+ IN LPDWORD pcchBufferSize
+);
+
+PDH_FUNCTION
+PdhEnumMachinesA (
+ IN LPCSTR szReserved,
+ IN LPSTR mszMachineList,
+ IN LPDWORD pcchBufferSize
+);
+
+PDH_FUNCTION
+PdhEnumObjectsW (
+ IN LPCWSTR szReserved,
+ IN LPCWSTR szMachineName,
+ IN LPWSTR mszObjectList,
+ IN LPDWORD pcchBufferSize,
+ IN DWORD dwDetailLevel,
+ IN BOOL bRefresh
+);
+
+PDH_FUNCTION
+PdhEnumObjectsA (
+ IN LPCSTR szReserved,
+ IN LPCSTR szMachineName,
+ IN LPSTR mszObjectList,
+ IN LPDWORD pcchBufferSize,
+ IN DWORD dwDetailLevel,
+ IN BOOL bRefresh
+);
+
+PDH_FUNCTION
+PdhEnumObjectItemsW (
+ IN LPCWSTR szReserved,
+ IN LPCWSTR szMachineName,
+ IN LPCWSTR szObjectName,
+ IN LPWSTR mszCounterList,
+ IN LPDWORD pcchCounterListLength,
+ IN LPWSTR mszInstanceList,
+ IN LPDWORD pcchInstanceListLength,
+ IN DWORD dwDetailLevel,
+ IN DWORD dwFlags
+);
+
+PDH_FUNCTION
+PdhEnumObjectItemsA (
+ IN LPCSTR szReserved,
+ IN LPCSTR szMachineName,
+ IN LPCSTR szObjectName,
+ IN LPSTR mszCounterList,
+ IN LPDWORD pcchCounterListLength,
+ IN LPSTR mszInstanceList,
+ IN LPDWORD pcchInstanceListLength,
+ IN DWORD dwDetailLevel,
+ IN DWORD dwFlags
+);
+
+PDH_FUNCTION
+PdhMakeCounterPathW (
+ IN PDH_COUNTER_PATH_ELEMENTS_W *pCounterPathElements,
+ IN LPWSTR szFullPathBuffer,
+ IN LPDWORD pcchBufferSize,
+ IN DWORD dwFlags
+);
+
+PDH_FUNCTION
+PdhMakeCounterPathA (
+ IN PDH_COUNTER_PATH_ELEMENTS_A *pCounterPathElements,
+ IN LPSTR szFullPathBuffer,
+ IN LPDWORD pcchBufferSize,
+ IN DWORD dwFlags
+);
+
+PDH_FUNCTION
+PdhParseCounterPathW (
+ IN LPCWSTR szFullPathBuffer,
+ IN PDH_COUNTER_PATH_ELEMENTS_W *pCounterPathElements,
+ IN LPDWORD pdwBufferSize,
+ IN DWORD dwFlags
+);
+
+PDH_FUNCTION
+PdhParseCounterPathA (
+ IN LPCSTR szFullPathBuffer,
+ IN PDH_COUNTER_PATH_ELEMENTS_A *pCounterPathElements,
+ IN LPDWORD pdwBufferSize,
+ IN DWORD dwFlags
+);
+
+PDH_FUNCTION
+PdhParseInstanceNameW (
+ IN LPCWSTR szInstanceString,
+ IN LPWSTR szInstanceName,
+ IN LPDWORD pcchInstanceNameLength,
+ IN LPWSTR szParentName,
+ IN LPDWORD pcchParentNameLength,
+ IN LPDWORD lpIndex
+);
+
+PDH_FUNCTION
+PdhParseInstanceNameA (
+ IN LPCSTR szInstanceString,
+ IN LPSTR szInstanceName,
+ IN LPDWORD pcchInstanceNameLength,
+ IN LPSTR szParentName,
+ IN LPDWORD pcchParentNameLength,
+ IN LPDWORD lpIndex
+);
+
+PDH_FUNCTION
+PdhValidatePathW (
+ IN LPCWSTR szFullPathBuffer
+);
+
+PDH_FUNCTION
+PdhValidatePathA (
+ IN LPCSTR szFullPathBuffer
+);
+
+PDH_FUNCTION
+PdhGetDefaultPerfObjectW (
+ IN LPCWSTR szReserved,
+ IN LPCWSTR szMachineName,
+ IN LPWSTR szDefaultObjectName,
+ IN LPDWORD pcchBufferSize
+);
+
+PDH_FUNCTION
+PdhGetDefaultPerfObjectA (
+ IN LPCSTR szReserved,
+ IN LPCSTR szMachineName,
+ IN LPSTR szDefaultObjectName,
+ IN LPDWORD pcchBufferSize
+);
+
+PDH_FUNCTION
+PdhGetDefaultPerfCounterW (
+ IN LPCWSTR szReserved,
+ IN LPCWSTR szMachineName,
+ IN LPCWSTR szObjectName,
+ IN LPWSTR szDefaultCounterName,
+ IN LPDWORD pcchBufferSize
+);
+
+PDH_FUNCTION
+PdhGetDefaultPerfCounterA (
+ IN LPCSTR szReserved,
+ IN LPCSTR szMachineName,
+ IN LPCSTR szObjectName,
+ IN LPSTR szDefaultCounterName,
+ IN LPDWORD pcchBufferSize
+);
+
+typedef PDH_STATUS (__stdcall *CounterPathCallBack)(DWORD);
+
+typedef struct _BrowseDlgConfig_W {
+ // Configuration flags
+ DWORD bIncludeInstanceIndex:1,
+ bSingleCounterPerAdd:1,
+ bSingleCounterPerDialog:1,
+ bLocalCountersOnly:1,
+ bWildCardInstances:1,
+ bHideDetailBox:1,
+ bInitializePath:1,
+ bDisableMachineSelection:1,
+ bReserved:24;
+
+ HWND hWndOwner;
+ LPWSTR szReserved;
+ LPWSTR szReturnPathBuffer;
+ DWORD cchReturnPathLength;
+ CounterPathCallBack pCallBack;
+ DWORD dwCallBackArg;
+ PDH_STATUS CallBackStatus;
+ DWORD dwDefaultDetailLevel;
+ LPWSTR szDialogBoxCaption;
+} PDH_BROWSE_DLG_CONFIG_W, *PPDH_BROWSE_DLG_CONFIG_W;
+
+typedef struct _BrowseDlgConfig_A {
+ // Configuration flags
+ DWORD bIncludeInstanceIndex:1,
+ bSingleCounterPerAdd:1,
+ bSingleCounterPerDialog:1,
+ bLocalCountersOnly:1,
+ bWildCardInstances:1,
+ bHideDetailBox:1,
+ bInitializePath:1,
+ bDisableMachineSelection:1,
+ bReserved:24;
+
+ HWND hWndOwner;
+ LPSTR szReserved;
+ LPSTR szReturnPathBuffer;
+ DWORD cchReturnPathLength;
+ CounterPathCallBack pCallBack;
+ DWORD dwCallBackArg;
+ PDH_STATUS CallBackStatus;
+ DWORD dwDefaultDetailLevel;
+ LPSTR szDialogBoxCaption;
+} PDH_BROWSE_DLG_CONFIG_A, *PPDH_BROWSE_DLG_CONFIG_A;
+
+PDH_FUNCTION
+PdhBrowseCountersW (
+ IN PPDH_BROWSE_DLG_CONFIG_W pBrowseDlgData
+);
+
+PDH_FUNCTION
+PdhBrowseCountersA (
+ IN PPDH_BROWSE_DLG_CONFIG_A pBrowseDlgData
+);
+
+PDH_FUNCTION
+PdhExpandCounterPathW (
+ IN LPCWSTR szWildCardPath,
+ IN LPWSTR mszExpandedPathList,
+ IN LPDWORD pcchPathListLength
+);
+
+PDH_FUNCTION
+PdhExpandCounterPathA (
+ IN LPCSTR szWildCardPath,
+ IN LPSTR mszExpandedPathList,
+ IN LPDWORD pcchPathListLength
+);
+
+//
+// Unicode/ANSI compatibility section
+//
+#ifdef UNICODE
+#ifndef _UNICODE
+#define _UNICODE
+#endif
+#endif
+
+#ifdef _UNICODE
+#ifndef UNICODE
+#define UNICODE
+#endif
+#endif
+
+#ifdef UNICODE
+// start of UNICODE definitions
+#define PdhAddCounter PdhAddCounterW
+#define PdhGetCounterInfo PdhGetCounterInfoW
+#define PDH_COUNTER_INFO PDH_COUNTER_INFO_W
+#define PPDH_COUNTER_INFO PPDH_COUNTER_INFO_W
+#define PdhConnectMachine PdhConnectMachineW
+#define PdhEnumMachines PdhEnumMachinesW
+#define PdhEnumObjects PdhEnumObjectsW
+#define PdhEnumObjectItems PdhEnumObjectItemsW
+#define PdhMakeCounterPath PdhMakeCounterPathW
+#define PDH_COUNTER_PATH_ELEMENTS PDH_COUNTER_PATH_ELEMENTS_W
+#define PPDH_COUNTER_PATH_ELEMENTS PPDH_COUNTER_PATH_ELEMENTS_W
+#define PdhParseCounterPath PdhParseCounterPathW
+#define PdhParseInstanceName PdhParseInstanceNameW
+#define PdhValidatePath PdhValidatePathW
+#define PdhGetDefaultPerfObject PdhGetDefaultPerfObjectW
+#define PdhGetDefaultPerfCounter PdhGetDefaultPerfCounterW
+#define PdhBrowseCounters PdhBrowseCountersW
+#define PDH_BROWSE_DLG_CONFIG PDH_BROWSE_DLG_CONFIG_W
+#define PPDH_BROWSE_DLG_CONFIG PPDH_BROWSE_DLG_CONFIG_W
+#define PdhExpandCounterPath PdhExpandCounterPathW
+// end of UNICODE definitions
+#else
+// start of ANSI definitions
+#define PdhAddCounter PdhAddCounterA
+#define PdhGetCounterInfo PdhGetCounterInfoA
+#define PDH_COUNTER_INFO PDH_COUNTER_INFO_A
+#define PPDH_COUNTER_INFO PPDH_COUNTER_INFO_A
+#define PdhConnectMachine PdhConnectMachineA
+#define PdhEnumMachines PdhEnumMachinesA
+#define PdhEnumObjects PdhEnumObjectsA
+#define PdhEnumObjectItems PdhEnumObjectItemsA
+#define PdhMakeCounterPath PdhMakeCounterPathA
+#define PDH_COUNTER_PATH_ELEMENTS PDH_COUNTER_PATH_ELEMENTS_A
+#define PPDH_COUNTER_PATH_ELEMENTS PPDH_COUNTER_PATH_ELEMENTS_A
+#define PdhParseCounterPath PdhParseCounterPathA
+#define PdhParseInstanceName PdhParseInstanceNameA
+#define PdhValidatePath PdhValidatePathA
+#define PdhGetDefaultPerfObject PdhGetDefaultPerfObjectA
+#define PdhGetDefaultPerfCounter PdhGetDefaultPerfCounterA
+#define PdhBrowseCounters PdhBrowseCountersA
+#define PDH_BROWSE_DLG_CONFIG PDH_BROWSE_DLG_CONFIG_A
+#define PPDH_BROWSE_DLG_CONFIG PPDH_BROWSE_DLG_CONFIG_A
+#define PdhExpandCounterPath PdhExpandCounterPathA
+// end of ANSI definitions
+#endif // UNICODE
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_PDH_H_
+
diff --git a/public/sdk/inc/pdhmsg.h b/public/sdk/inc/pdhmsg.h
new file mode 100644
index 000000000..699a78014
--- /dev/null
+++ b/public/sdk/inc/pdhmsg.h
@@ -0,0 +1,366 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1996 Microsoft Corporation
+
+Module Name:
+
+ pdhmsg.h
+ (generated from pdhmsg.mc)
+
+Abstract:
+
+ Event message definititions used by routines by PDH.DLL
+
+Created:
+
+ 6-Feb-96 Bob Watson (a-robw)
+
+Revision History:
+
+--*/
+#ifndef _PDH_MSG_H_
+#define _PDH_MSG_H_
+//
+// PDH DLL messages
+//
+//
+// Success Messages
+//
+// the Win32 error value ERROR_SUCCESS is used for success returns
+//
+// MESSAGE NAME FORMAT
+//
+// PDH_CSTATUS_... messages are data item status message and
+// are returned in reference to the status of a data
+// item
+// PDH_... messages are returned by FUNCTIONS only and
+// not used as data item status values
+//
+// Success Messages
+// These messages are normally returned when the operation completed
+// successfully.
+//
+//
+// 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 the severity codes
+//
+#define STATUS_SEVERITY_WARNING 0x2
+#define STATUS_SEVERITY_SUCCESS 0x0
+#define STATUS_SEVERITY_INFORMATIONAL 0x1
+#define STATUS_SEVERITY_ERROR 0x3
+
+
+//
+// MessageId: PDH_CSTATUS_VALID_DATA
+//
+// MessageText:
+//
+// The returned data is valid.
+//
+#define PDH_CSTATUS_VALID_DATA ((DWORD)0x00000000L)
+
+//
+// MessageId: PDH_CSTATUS_NEW_DATA
+//
+// MessageText:
+//
+// The return data value is valid and different from the last sample.
+//
+#define PDH_CSTATUS_NEW_DATA ((DWORD)0x00000001L)
+
+//
+// Informational messages
+//
+// None
+//
+// Warning Messages
+// These messages are returned when the function has completed
+// successfully but the results may be different than expected.
+//
+//
+// MessageId: PDH_CSTATUS_NO_MACHINE
+//
+// MessageText:
+//
+// Unable to connect to specified machine or machine is off line.
+//
+#define PDH_CSTATUS_NO_MACHINE ((DWORD)0x800007D0L)
+
+//
+// MessageId: PDH_CSTATUS_NO_INSTANCE
+//
+// MessageText:
+//
+// The specified instance is not present.
+//
+#define PDH_CSTATUS_NO_INSTANCE ((DWORD)0x800007D1L)
+
+//
+// MessageId: PDH_MORE_DATA
+//
+// MessageText:
+//
+// There is more data to return than would fit in the supplied buffer. Allocate
+// a larger buffer and call the function again.
+//
+#define PDH_MORE_DATA ((DWORD)0x800007D2L)
+
+//
+// MessageId: PDH_CSTATUS_ITEM_NOT_VALIDATED
+//
+// MessageText:
+//
+// The data item has been added to the query, but has not been validated nor
+// accessed. No other status information on this data item is available.
+//
+#define PDH_CSTATUS_ITEM_NOT_VALIDATED ((DWORD)0x800007D3L)
+
+//
+// MessageId: PDH_RETRY
+//
+// MessageText:
+//
+// The selected operation should be retried.
+//
+#define PDH_RETRY ((DWORD)0x800007D4L)
+
+//
+// MessageId: PDH_NO_DATA
+//
+// MessageText:
+//
+// No data to return.
+//
+#define PDH_NO_DATA ((DWORD)0x800007D5L)
+
+//
+// MessageId: PDH_CALC_NEGATIVE_DENOMINATOR
+//
+// MessageText:
+//
+// A counter with a negative denominator value was detected.
+//
+#define PDH_CALC_NEGATIVE_DENOMINATOR ((DWORD)0x800007D6L)
+
+//
+// MessageId: PDH_CALC_NEGATIVE_TIMEBASE
+//
+// MessageText:
+//
+// A counter with a negative timebase value was detected.
+//
+#define PDH_CALC_NEGATIVE_TIMEBASE ((DWORD)0x800007D7L)
+
+//
+// MessageId: PDH_CALC_NEGATIVE_VALUE
+//
+// MessageText:
+//
+// A counter with a negative value was detected.
+//
+#define PDH_CALC_NEGATIVE_VALUE ((DWORD)0x800007D8L)
+
+//
+// MessageId: PDH_DIALOG_CANCELLED
+//
+// MessageText:
+//
+// The user cancelled the dialog box.
+//
+#define PDH_DIALOG_CANCELLED ((DWORD)0x800007D9L)
+
+//
+// Error Messages
+// These messages are returned when the function could not complete
+// as requested and some corrective action may be required by the
+// the caller or the user.
+//
+//
+// MessageId: PDH_CSTATUS_NO_OBJECT
+//
+// MessageText:
+//
+// The specified object is not found on the system.
+//
+#define PDH_CSTATUS_NO_OBJECT ((DWORD)0xC0000BB8L)
+
+//
+// MessageId: PDH_CSTATUS_NO_COUNTER
+//
+// MessageText:
+//
+// The specified counter could not be found.
+//
+#define PDH_CSTATUS_NO_COUNTER ((DWORD)0xC0000BB9L)
+
+//
+// MessageId: PDH_CSTATUS_INVALID_DATA
+//
+// MessageText:
+//
+// The returned data is not valid.
+//
+#define PDH_CSTATUS_INVALID_DATA ((DWORD)0xC0000BBAL)
+
+//
+// MessageId: PDH_MEMORY_ALLOCATION_FAILURE
+//
+// MessageText:
+//
+// A PDH function could not allocate enough temporary memory to complete the
+// operation. Close some applications or extend the pagefile and retry the
+// function.
+//
+#define PDH_MEMORY_ALLOCATION_FAILURE ((DWORD)0xC0000BBBL)
+
+//
+// MessageId: PDH_INVALID_HANDLE
+//
+// MessageText:
+//
+// The handle is not a valid PDH object.
+//
+#define PDH_INVALID_HANDLE ((DWORD)0xC0000BBCL)
+
+//
+// MessageId: PDH_INVALID_ARGUMENT
+//
+// MessageText:
+//
+// A required argument is missing or incorrect.
+//
+#define PDH_INVALID_ARGUMENT ((DWORD)0xC0000BBDL)
+
+//
+// MessageId: PDH_FUNCTION_NOT_FOUND
+//
+// MessageText:
+//
+// Unable to find the specified function.
+//
+#define PDH_FUNCTION_NOT_FOUND ((DWORD)0xC0000BBEL)
+
+//
+// MessageId: PDH_CSTATUS_NO_COUNTERNAME
+//
+// MessageText:
+//
+// No counter was specified.
+//
+#define PDH_CSTATUS_NO_COUNTERNAME ((DWORD)0xC0000BBFL)
+
+//
+// MessageId: PDH_CSTATUS_BAD_COUNTERNAME
+//
+// MessageText:
+//
+// Unable to parse the counter path. Check the format and syntax of the
+// specified path.
+//
+#define PDH_CSTATUS_BAD_COUNTERNAME ((DWORD)0xC0000BC0L)
+
+//
+// MessageId: PDH_INVALID_BUFFER
+//
+// MessageText:
+//
+// The buffer passed by the caller is invalid.
+//
+#define PDH_INVALID_BUFFER ((DWORD)0xC0000BC1L)
+
+//
+// MessageId: PDH_INSUFFICIENT_BUFFER
+//
+// MessageText:
+//
+// The requested data is larger than the buffer supplied. Unable to return the
+// requested data.
+//
+#define PDH_INSUFFICIENT_BUFFER ((DWORD)0xC0000BC2L)
+
+//
+// MessageId: PDH_CANNOT_CONNECT_MACHINE
+//
+// MessageText:
+//
+// Unable to connect to the requested machine.
+//
+#define PDH_CANNOT_CONNECT_MACHINE ((DWORD)0xC0000BC3L)
+
+//
+// MessageId: PDH_INVALID_PATH
+//
+// MessageText:
+//
+// The specified counter path could not be interpreted.
+//
+#define PDH_INVALID_PATH ((DWORD)0xC0000BC4L)
+
+//
+// MessageId: PDH_INVALID_INSTANCE
+//
+// MessageText:
+//
+// The instance name could not be read from the specified counter path.
+//
+#define PDH_INVALID_INSTANCE ((DWORD)0xC0000BC5L)
+
+//
+// MessageId: PDH_INVALID_DATA
+//
+// MessageText:
+//
+// The data is not valid.
+//
+#define PDH_INVALID_DATA ((DWORD)0xC0000BC6L)
+
+//
+// MessageId: PDH_NO_DIALOG_DATA
+//
+// MessageText:
+//
+// The dialog box data block was missing or invalid.
+//
+#define PDH_NO_DIALOG_DATA ((DWORD)0xC0000BC7L)
+
+//
+// MessageId: PDH_CANNOT_READ_NAME_STRINGS
+//
+// MessageText:
+//
+// Unable to read the counter and/or explain text from the specified machine.
+//
+#define PDH_CANNOT_READ_NAME_STRINGS ((DWORD)0xC0000BC8L)
+
+#endif //_PDH_MSG_H_
+// end of generated file
diff --git a/public/sdk/inc/pdname.h b/public/sdk/inc/pdname.h
new file mode 100644
index 000000000..a491677fe
--- /dev/null
+++ b/public/sdk/inc/pdname.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: pdname.h
+//
+// Contents: Replacement for pdname.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/perfsnap.hxx b/public/sdk/inc/perfsnap.hxx
new file mode 100644
index 000000000..e5404fce6
--- /dev/null
+++ b/public/sdk/inc/perfsnap.hxx
@@ -0,0 +1,587 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: PerfSnap.hxx
+//
+// Contents: Performace monitor. Snapshots system at user-defined time
+//
+// Classes: CPerfInfo, CPerformanceMonitor
+//
+// History: 30-Sep-93 KyleP Created
+//
+// Notes: These classes only do something interesting if PERFSNAP
+// is defined.
+//
+//--------------------------------------------------------------------------
+
+#if !defined(__PERFSNAP_HXX__)
+#define __PERFSNAP_HXX__
+
+#define USE_NEW_LARGE_INTEGERS
+
+extern "C"
+{
+#include <nt.h>
+#include <ntrtl.h>
+#include <nturtl.h>
+#ifdef NEVER
+#include <rpc.h>
+#include <rpcdce.h>
+#endif
+}
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <windows.h>
+#include <debnot.h>
+#include <heapstat.h>
+
+//+-------------------------------------------------------------------------
+//
+// Class: CPerfInfo
+//
+// Purpose: Holds snapshot of performance data
+//
+// History: 30-Sep-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+#if defined(PERFSNAP)
+
+class CPerfInfo
+{
+public:
+
+ inline void Init(char const * pszTitle, int const level);
+
+ inline CPerfInfo & operator -(CPerfInfo const & piIn);
+
+ inline void Comment(FILE * pfOut,
+ char const * pszComment,
+ LARGE_INTEGER stime);
+
+ inline void Print(FILE * pfOut, LARGE_INTEGER stime);
+
+ inline void _Print(FILE * pfOut);
+
+ inline static void PrintHeader(FILE * pfOut);
+
+private:
+
+ enum
+ {
+ _cbProcPerfXfer = 100 * sizeof(SYSTEM_PROCESS_INFORMATION) +
+ 500 * sizeof(SYSTEM_THREAD_INFORMATION)
+ };
+ static unsigned char _ProcPerfXfer[_cbProcPerfXfer];
+
+ int _level;
+ char _szTitle[100];
+ LARGE_INTEGER _time;
+ SYSTEM_PERFORMANCE_INFORMATION _SysPerf;
+ SYSTEM_PROCESS_INFORMATION _ProcPerf;
+ HEAPSTATS _heapStats;
+
+ #ifdef NEVER
+ // DO NOT SEPARATE
+ RPC_STATS_VECTOR _rpcStats;
+ long _rpcExtraSpace[3];
+ // END OF DO NOT SEPARATE
+ #endif
+};
+
+# define IMPLEMENT_PERFSNAP() \
+ unsigned char CPerfInfo::_ProcPerfXfer[CPerfInfo::_cbProcPerfXfer];
+
+#else // PERFSNAP
+
+# define IMPLEMENT_PERFSNAP()
+
+#endif // PERFSNAP
+
+//+-------------------------------------------------------------------------
+//
+// Class: CPerformanceMonitor
+//
+// Purpose: Monitor performance of system/process at user-defined time.
+//
+// History: 30-Sep-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CPerformanceMonitor
+{
+public:
+
+ inline CPerformanceMonitor(char const * szFile = 0);
+
+ inline ~CPerformanceMonitor();
+
+ inline void PrintHeader();
+
+ inline void Comment(char const * pszComment);
+
+ inline void Snap(char const * pszTitle, int const level);
+
+ inline void Delta(char const * pszTitle, int const level);
+
+#if defined(PERFSNAP)
+private:
+
+ FILE * _pfOut;
+ int _iLastSnap;
+ LARGE_INTEGER _time;
+ CPerfInfo _aSnap[2];
+#endif // PERFSNAP
+};
+
+inline CPerformanceMonitor::CPerformanceMonitor(char const * szFile)
+{
+#if defined(PERFSNAP)
+ NtQuerySystemTime(&_time); // start time
+
+ _iLastSnap = 0;
+ if (szFile)
+ _pfOut = fopen(szFile, "a");
+ else
+ _pfOut = stdout;
+ fprintf(_pfOut, "\n----------------------------------------\n");
+
+ _aSnap[0].Init("Start0", 0);
+ _aSnap[1].Init("Start1", 0);
+#endif // PERFSNAP
+}
+
+inline CPerformanceMonitor::~CPerformanceMonitor()
+{
+#if defined(PERFSNAP)
+ fclose(_pfOut);
+#endif // PERFSNAP
+}
+
+inline void CPerformanceMonitor::PrintHeader()
+{
+#if defined(PERFSNAP)
+ _aSnap[0].PrintHeader(_pfOut);
+#endif // PERFSNAP
+}
+
+inline void CPerformanceMonitor::Comment(char const * pszComment)
+{
+#if defined(PERFSNAP)
+ _aSnap[_iLastSnap].Comment(_pfOut, pszComment, _time);
+#endif // PERFSNAP
+}
+
+inline void CPerformanceMonitor::Snap(char const * pszTitle, int const level)
+{
+#if defined(PERFSNAP)
+ _iLastSnap = (_iLastSnap + 1) % 2;
+ _aSnap[_iLastSnap].Init(pszTitle, level);
+ _aSnap[_iLastSnap].Print(_pfOut, _time);
+#endif // PERFSNAP
+}
+
+inline void CPerformanceMonitor::Delta(char const * pszTitle, int const level)
+{
+#if defined(PERFSNAP)
+ _iLastSnap = (_iLastSnap + 1) % 2;
+ _aSnap[_iLastSnap].Init(pszTitle, level);
+
+ CPerfInfo piDelta = _aSnap[_iLastSnap] - _aSnap[(_iLastSnap + 1) % 2];
+
+ // _aSnap[_iLastSnap].Print(_pfOut, _time);
+ piDelta.Print(_pfOut, _time);
+#endif // PERFSNAP
+}
+
+#if defined(PERFSNAP)
+
+inline void CPerfInfo::Init(char const * pszTitle, int const level)
+{
+ //
+ // Get time
+ //
+
+ NtQuerySystemTime(&_time);
+
+ //
+ // Set level
+ //
+
+ _level = level;
+
+ //
+ // Copy title string
+ //
+
+ int len = strlen(pszTitle);
+ if (len > sizeof(_szTitle) - 1)
+ len = sizeof(_szTitle) - 1;
+
+ memcpy(_szTitle, pszTitle, len);
+ _szTitle[len] = 0;
+
+ //
+ // Get performance information
+ //
+
+ NTSTATUS Status = NtQuerySystemInformation (SystemPerformanceInformation,
+ &_SysPerf,
+ sizeof(_SysPerf),
+ 0);
+
+ Win4Assert(NT_SUCCESS(Status));
+
+ //
+ // Process info. Comes back for *all* processes and threads!
+ //
+
+ Status = NtQuerySystemInformation (SystemProcessInformation,
+ _ProcPerfXfer,
+ _cbProcPerfXfer,
+ 0);
+
+ Win4Assert(NT_SUCCESS(Status));
+
+ //
+ // Find the process we care about and copy it out.
+ //
+
+ HANDLE pid = (HANDLE)NtCurrentTeb()->ClientId.UniqueProcess;
+
+ unsigned char * pb = _ProcPerfXfer;
+
+ while (TRUE)
+ {
+ SYSTEM_PROCESS_INFORMATION * pProc = (SYSTEM_PROCESS_INFORMATION *)pb;
+
+ if (pProc->UniqueProcessId == pid)
+ {
+ memcpy(&_ProcPerf, pProc, sizeof(SYSTEM_PROCESS_INFORMATION));
+ break;
+ }
+
+ if (pProc->NextEntryOffset == 0)
+ {
+ printf("Couldn't find info for process 0x%x\n", pid);
+ break;
+ }
+
+ pb += pProc->NextEntryOffset;
+ }
+
+#ifdef NEVER
+ //
+ // RPC Statistics
+ //
+
+ RPC_STATS_VECTOR *pStats;
+
+ RpcMgmtInqStats(NULL, &pStats);
+ memcpy(& _rpcStats, pStats, sizeof(_rpcStats) + sizeof(_rpcExtraSpace));
+ RpcMgmtStatsVectorFree(&pStats);
+#endif
+
+ //
+ // (Cairo) Heap Statistics
+ //
+
+ GetHeapStats(&_heapStats);
+}
+
+inline CPerfInfo & CPerfInfo::operator -(CPerfInfo const & pi2)
+{
+ CPerfInfo ret;
+
+ //
+ // Make a delta title
+ //
+
+ unsigned len = strlen(_szTitle);
+ memcpy(ret._szTitle, _szTitle, len);
+ if (len < sizeof(ret._szTitle)-4)
+ {
+ memcpy(ret._szTitle + len, " - ", 4);
+ len += 3;
+ }
+ unsigned len2 = strlen(pi2._szTitle);
+ if (len2 > sizeof(ret._szTitle) - len - 1)
+ len2 = sizeof(ret._szTitle) - len - 1;
+
+ memcpy(ret._szTitle + len, pi2._szTitle, len2);
+ ret._szTitle[len+len2] = 0;
+
+ ret._time = _time - pi2._time;
+
+ //
+ // 'Subtract' performance info
+ //
+
+ ret._SysPerf.AvailablePages = _SysPerf.AvailablePages -
+ pi2._SysPerf.AvailablePages;
+ ret._SysPerf.CommittedPages = _SysPerf.CommittedPages -
+ pi2._SysPerf.CommittedPages;
+ ret._SysPerf.PeakCommitment = max(_SysPerf.PeakCommitment,
+ pi2._SysPerf.PeakCommitment);
+ ret._SysPerf.PageFaultCount = _SysPerf.PageFaultCount -
+ pi2._SysPerf.PageFaultCount;
+ ret._SysPerf.PagedPoolPages = _SysPerf.PagedPoolPages -
+ pi2._SysPerf.PagedPoolPages;
+ ret._SysPerf.NonPagedPoolPages = _SysPerf.NonPagedPoolPages -
+ pi2._SysPerf.NonPagedPoolPages;
+
+ //
+ // System/LPC calls
+ //
+
+ ret._SysPerf.SystemCalls = _SysPerf.SystemCalls - pi2._SysPerf.SystemCalls;
+#ifdef NEVER
+ ret._SysPerf.LpcCallOperationCount = _SysPerf.LpcCallOperationCount -
+ pi2._SysPerf.LpcCallOperationCount;
+
+ //
+ // RPC
+ //
+
+ for (int i = 0; i < 4; i++)
+ ret._rpcStats.Stats[i] = _rpcStats.Stats[i] - pi2._rpcStats.Stats[i];
+#endif
+
+ //
+ // CPU time
+ //
+
+ ret._ProcPerf.UserTime = _ProcPerf.UserTime - pi2._ProcPerf.UserTime;
+ ret._ProcPerf.KernelTime = _ProcPerf.KernelTime - pi2._ProcPerf.KernelTime;
+
+ //
+ // Memory
+ //
+
+ ret._ProcPerf.PagefileUsage = _ProcPerf.PagefileUsage -
+ pi2._ProcPerf.PagefileUsage;
+ ret._ProcPerf.PeakPagefileUsage = max(_ProcPerf.PeakPagefileUsage,
+ pi2._ProcPerf.PeakPagefileUsage);
+ ret._ProcPerf.PrivatePageCount = _ProcPerf.PrivatePageCount -
+ pi2._ProcPerf.PrivatePageCount;
+ ret._ProcPerf.QuotaPagedPoolUsage = _ProcPerf.QuotaPagedPoolUsage -
+ pi2._ProcPerf.QuotaPagedPoolUsage;
+ ret._ProcPerf.QuotaNonPagedPoolUsage = _ProcPerf.QuotaNonPagedPoolUsage -
+ pi2._ProcPerf.QuotaNonPagedPoolUsage;
+ ret._ProcPerf.PeakWorkingSetSize = max(_ProcPerf.PeakWorkingSetSize,
+ pi2._ProcPerf.PeakWorkingSetSize);
+ ret._ProcPerf.WorkingSetSize = _ProcPerf.WorkingSetSize -
+ pi2._ProcPerf.WorkingSetSize;
+
+ //
+ // Threads
+ //
+
+ ret._ProcPerf.NumberOfThreads = _ProcPerf.NumberOfThreads - pi2._ProcPerf.NumberOfThreads;
+ ret._ProcPerf.NumberOfThreads;
+
+ //
+ // (Cairo) Heap Stats
+ //
+
+ ret._heapStats.cNew =_heapStats.cNew -pi2._heapStats.cNew;
+ ret._heapStats.cZeroNew =_heapStats.cZeroNew -pi2._heapStats.cZeroNew;
+ ret._heapStats.cDelete =_heapStats.cDelete -pi2._heapStats.cDelete;
+ ret._heapStats.cZeroDelete=_heapStats.cZeroDelete -
+ pi2._heapStats.cZeroDelete;
+ ret._heapStats.cRealloc =_heapStats.cRealloc -pi2._heapStats.cRealloc;
+ ret._heapStats.cbNewed =_heapStats.cbNewed -pi2._heapStats.cbNewed;
+ ret._heapStats.cbDeleted =_heapStats.cbDeleted-pi2._heapStats.cbDeleted;
+
+ return(ret);
+}
+
+inline void CPerfInfo::PrintHeader(FILE * pfOut)
+{
+ LARGE_INTEGER time;
+ SYSTEMTIME systime;
+ NtQuerySystemTime(&time);
+ FileTimeToSystemTime((FILETIME *)&time, &systime);
+
+ fprintf(pfOut,
+ "Performance Run %02d/%02d/%02d %02d:%02d:%02d\n",
+ systime.wMonth, systime.wDay, systime.wYear,
+ systime.wHour, systime.wMinute, systime.wSecond);
+
+ fprintf(pfOut,
+ "Abs/Rel\t"
+ "Level\t"
+ "System Time\t"
+ "System Time ms\t"
+ "Title\t"
+ "Physical Memory Available Kb\t"
+ "Virtual Memory Committed Kb\t"
+ "Virtual Memory Max Committed Kb\t"
+ "Virtual Memory Page Faults\t"
+ "System Total Paged Pool Kb\t"
+ "System Total Nonpaged Pool Kb\t"
+ "System Calls\t"
+ "Process User CPU Time ms\t"
+ "Process Kernel CPU Time ms\t"
+ "Process Page File Used pages\t"
+ "Process Page File Max Used pages\t"
+ "Process Page File Private pages\t"
+ "Process Paged Pool pages\t"
+ "Process Nonpaged Pool pages\t"
+ "Process #Threads\t"
+ "Working Set Peak Kb\t"
+ "Working Set Current Kb\t"
+ "Heap Allocs\t"
+ "0-len Heap Allocs\t"
+ "Heap Deletes\t"
+ "0-len Heap Deletes\t"
+ "Heap Reallocs\t"
+ "Heap Allocated bytes\t"
+ "Heap Freed bytes\t"
+ "Process ID\t"
+ "Thread ID\t"
+ "Time To Snap ms\t"
+ "System Time ms absolute\n");
+}
+
+
+inline void CPerfInfo::_Print(FILE * pfOut)
+{
+ // LPCCallOperationsCount not printed: its bogus
+ // _rpcStats[0..3] not printed: never non-zero
+ // "RPC Calls In\tRPC Calls Out\tRPC Packets In\tRPC Packets Out\t"
+
+ fprintf(pfOut,
+ "%ld\t"
+ "%ld\t"
+ "%ld\t"
+ "%lu\t"
+ "%ld\t"
+ "%ld\t"
+ "%lu\t"
+ "%lu\t"
+ "%lu\t"
+ "%ld\t"
+ "%ld\t"
+ "%ld\t"
+ "%ld\t"
+ "%ld\t"
+ "%ld\t"
+ "%ld\t"
+ "%ld\t"
+ "%lu\t"
+ "%lu\t"
+ "%lu\t"
+ "%lu\t"
+ "%lu\t"
+ "%lu\t"
+ "%lu\t"
+ "%ld\t"
+ "%ld",
+ _SysPerf.AvailablePages * 4,
+ _SysPerf.CommittedPages * 4,
+ _SysPerf.PeakCommitment * 4,
+ _SysPerf.PageFaultCount,
+ _SysPerf.PagedPoolPages * 4,
+ _SysPerf.NonPagedPoolPages * 4,
+ _SysPerf.SystemCalls,
+ (_ProcPerf.UserTime.LowPart+5000) / 10000,
+ (_ProcPerf.KernelTime.LowPart+5000) / 10000,
+ (_ProcPerf.PagefileUsage+1023) / 1024,
+ (_ProcPerf.PeakPagefileUsage+1023) / 1024,
+ (_ProcPerf.PrivatePageCount+1023) / 1024,
+ (_ProcPerf.QuotaPagedPoolUsage+1023) / 1024,
+ (_ProcPerf.QuotaNonPagedPoolUsage+1023) / 1024,
+ _ProcPerf.NumberOfThreads,
+ (_ProcPerf.PeakWorkingSetSize+1023) / 1024,
+ (_ProcPerf.WorkingSetSize+1023) / 1024,
+ _heapStats.cNew,
+ _heapStats.cZeroNew,
+ _heapStats.cDelete,
+ _heapStats.cZeroDelete,
+ _heapStats.cRealloc,
+ _heapStats.cbNewed,
+ _heapStats.cbDeleted,
+ GetCurrentProcessId(),
+ GetCurrentThreadId()
+ );
+
+}
+
+#define CVT_TO_MS(t) (((t.wHour*60 + t.wMinute)*60 + t.wSecond)*1000 + t.wMilliseconds)
+
+inline void CPerfInfo::Print(FILE * pfOut, LARGE_INTEGER stime)
+{
+ LARGE_INTEGER time;
+ LARGE_INTEGER dtime;
+ SYSTEMTIME systime;
+
+ _szTitle[sizeof(_szTitle)-1] = '\0';
+
+ //
+ // Time is either a delta or absolute.
+ //
+
+ if (_time.HighPart > 0)
+ {
+ SYSTEMTIME systime;
+ FileTimeToSystemTime((FILETIME *)&_time, &systime);
+ dtime = _time - stime;
+ fprintf(pfOut,
+ "A\t%d\t%02d:%02d:%02d.%03d\t%u\t%s\t",
+ _level,
+ systime.wHour, systime.wMinute, systime.wSecond,
+ systime.wMilliseconds,
+ dtime.LowPart / 10000,
+ _szTitle);
+ }
+ else
+ {
+ // FILETIME is in units of 100 nanoseconds (== 0.1 ms)
+ fprintf(pfOut,
+ "R\t%d\t\t%u\t%s\t",
+ _level,
+ _time.LowPart / 10000,
+ _szTitle);
+ }
+
+ _Print(pfOut);
+
+ // A FILETIME is in units of 100 nanoseconds (== 0.1 ms)
+ NtQuerySystemTime(&time);
+ dtime = time - _time;
+ FileTimeToSystemTime((FILETIME*)&_time, &systime);
+ fprintf(pfOut, "\t%d\t%d\n", dtime.LowPart / 10000, CVT_TO_MS(systime));
+}
+
+
+inline void CPerfInfo::Comment(FILE * pfOut, char const * pszComment,
+ LARGE_INTEGER stime)
+{
+ SYSTEMTIME systod;
+ LARGE_INTEGER time;
+ LARGE_INTEGER tod;
+ LARGE_INTEGER dtime;
+
+ NtQuerySystemTime(&tod);
+ FileTimeToSystemTime((FILETIME*)&tod, &systod);
+ dtime = tod - stime;
+
+ fprintf(pfOut, "C\t0\t%02d:%02d:%02d.%03d\t%d\t%s\t",
+ systod.wHour, systod.wMinute, systod.wSecond,
+ systod.wMilliseconds,
+ dtime.LowPart / 10000,
+ pszComment);
+
+ _Print(pfOut);
+
+ NtQuerySystemTime(&time);
+ dtime = time - tod;
+ fprintf(pfOut, "\t%d\t%d\n", dtime.LowPart / 10000, CVT_TO_MS(systod));
+}
+
+#endif // PERFSNAP
+#endif // __PERFSNAP_HXX__
diff --git a/public/sdk/inc/pfile.h b/public/sdk/inc/pfile.h
new file mode 100644
index 000000000..65cb15832
--- /dev/null
+++ b/public/sdk/inc/pfile.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: pfile.h
+//
+// Contents: Replacement for pfile.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/plan16.h b/public/sdk/inc/plan16.h
new file mode 100644
index 000000000..e14f77897
--- /dev/null
+++ b/public/sdk/inc/plan16.h
@@ -0,0 +1,13 @@
+/*****************************************************************************\
+* PLAN16.H - PORTABILITY MAPPING HEADER FILE FOR LANMAN API
+*
+* This file provides macros to map portable lanman code to its 16 bit form.
+\*****************************************************************************/
+
+/*-----------------------------------LANMAN----------------------------------*/
+
+/* LANMAN MACROS: */
+
+#define COPYTOARRAY(pDest, pSource) strcpy(pDest, pSource)
+
+/* LANMAN API: */
diff --git a/public/sdk/inc/plan32.h b/public/sdk/inc/plan32.h
new file mode 100644
index 000000000..728c0d82e
--- /dev/null
+++ b/public/sdk/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/public/sdk/inc/poppack.h b/public/sdk/inc/poppack.h
new file mode 100644
index 000000000..c57a7ae79
--- /dev/null
+++ b/public/sdk/inc/poppack.h
@@ -0,0 +1,36 @@
+/*++
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ poppack.h
+
+Abstract:
+
+ This file turns packing of structures off. (That is, it enables
+ automatic alignment of structure fields.) An include file is needed
+ because various compilers do this in different ways.
+
+ poppack.h is the complement to pshpack?.h. An inclusion of poppack.h
+ MUST ALWAYS be preceded by an inclusion of one of pshpack?.h, in one-to-one
+ correspondence.
+
+ For Microsoft compatible compilers, this file uses the pop option
+ to the pack pragma so that it can restore the previous saved by the
+ pshpack?.h include file.
+
+--*/
+
+#if ! (defined(lint) || defined(_lint) || defined(RC_INVOKED))
+#if ( _MSC_VER >= 800 ) || defined(_PUSHPOP_SUPPORTED)
+#pragma warning(disable:4103)
+#if !(defined( MIDL_PASS )) || defined( __midl )
+#pragma pack(pop)
+#else
+#pragma pack()
+#endif
+#else
+#pragma pack()
+#endif
+#endif // ! (defined(lint) || defined(_lint) || defined(RC_INVOKED))
diff --git a/public/sdk/inc/port1632.h b/public/sdk/inc/port1632.h
new file mode 100644
index 000000000..d24831d19
--- /dev/null
+++ b/public/sdk/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/public/sdk/inc/posix/dirent.h b/public/sdk/inc/posix/dirent.h
new file mode 100644
index 000000000..284d12004
--- /dev/null
+++ b/public/sdk/inc/posix/dirent.h
@@ -0,0 +1,46 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ dirent.h
+
+Abstract:
+
+ This module contains the directory entry procedure
+ prototypes
+
+--*/
+
+#ifndef _DIRENT_
+#define _DIRENT_
+
+#include <types.h>
+#include <limits.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct dirent {
+ char d_name[NAME_MAX+1];
+};
+
+typedef struct _DIR {
+ int Directory;
+ unsigned long Index;
+ char RestartScan; /* really BOOLEAN */
+ struct dirent Dirent;
+} DIR;
+
+DIR * _CRTAPI1 opendir(const char *);
+struct dirent * _CRTAPI1 readdir(DIR *);
+void _CRTAPI1 rewinddir(DIR *);
+int _CRTAPI1 closedir(DIR *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DIRENT_H */
diff --git a/public/sdk/inc/posix/errno.h b/public/sdk/inc/posix/errno.h
new file mode 100644
index 000000000..ca1801f66
--- /dev/null
+++ b/public/sdk/inc/posix/errno.h
@@ -0,0 +1,31 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ errno.h
+
+Abstract:
+
+ This module contains the implementation defined values for the POSIX error
+ number as described in section 2.5 of IEEE P1003.1/Draft 13.
+
+--*/
+
+#ifndef _ERRNO_
+#define _ERRNO_
+
+#include <sys/errno.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int errno;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ERRNO_ */
diff --git a/public/sdk/inc/posix/fcntl.h b/public/sdk/inc/posix/fcntl.h
new file mode 100644
index 000000000..327cf36d0
--- /dev/null
+++ b/public/sdk/inc/posix/fcntl.h
@@ -0,0 +1,83 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ fcntl.h
+
+Abstract:
+
+ This module contains the required contents of fcntl
+
+--*/
+
+#ifndef _FCNTL_
+#define _FCNTL_
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define O_RDONLY 0x00000000
+#define O_WRONLY 0x00000001
+#define O_RDWR 0x00000002
+
+#define O_ACCMODE 0x00000007
+
+#define O_APPEND 0x00000008
+#define O_CREAT 0x00000100
+#define O_TRUNC 0x00000200
+#define O_EXCL 0x00000400
+#define O_NOCTTY 0x00000800
+
+#define O_NONBLOCK 0x00001000
+
+/*
+ * Control operations on files, 1003.1-88 (6.5.2.2). Use as 'command'
+ * argument to fcntl().
+ */
+
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_GETLK 2
+#define F_SETFD 3
+#define F_GETFL 4
+#define F_SETFL 5
+#define F_SETLK 6
+#define F_SETLKW 7
+
+/*
+ * File descriptor flags, 1003.1-90 (6-2). Used as argument to F_SETFD
+ * command.
+ */
+
+#define FD_CLOEXEC 0x1
+
+struct flock {
+ short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */
+ short l_whence; /* flag for starting offset */
+ off_t l_start; /* relative offset in bytes */
+ off_t l_len; /* size; if 0 then until EOF */
+ pid_t l_pid; /* pid of process holding the lock */
+};
+
+/*
+ * Values for the l_type field.
+ */
+
+#define F_RDLCK 1
+#define F_UNLCK 2
+#define F_WRLCK 3
+
+int _CRTAPI2 open(const char *, int,...);
+int _CRTAPI1 creat(const char *, mode_t);
+int _CRTAPI2 fcntl(int, int, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FCNTL_ */
diff --git a/public/sdk/inc/posix/grp.h b/public/sdk/inc/posix/grp.h
new file mode 100644
index 000000000..a7801dcea
--- /dev/null
+++ b/public/sdk/inc/posix/grp.h
@@ -0,0 +1,39 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ grp.h
+
+Abstract:
+
+ Defines data types and declares routines necessary for group database
+ access, as required by 1003.1-88 (9.2.1).
+
+--*/
+
+#ifndef _GRP_
+#define _GRP_
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct group {
+ char *gr_name; /* the name of the group */
+ gid_t gr_gid; /* the numerical group ID */
+ char **gr_mem; /* null-terminated vector of pointers*/
+ /* to the individual member names*/
+};
+
+struct group * _CRTAPI1 getgrgid(gid_t);
+struct group * _CRTAPI1 getgrnam(const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GRP_ */
diff --git a/public/sdk/inc/posix/pwd.h b/public/sdk/inc/posix/pwd.h
new file mode 100644
index 000000000..9be567e29
--- /dev/null
+++ b/public/sdk/inc/posix/pwd.h
@@ -0,0 +1,40 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ pwd.h
+
+Abstract:
+
+ Defines data types and declares routines necessary for user database
+ access, as required by 1003.1-88 (9.2.2).
+
+--*/
+
+#ifndef _PWD_
+#define _PWD_
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct passwd {
+ char *pw_name; /* users login name */
+ uid_t pw_uid; /* user id number */
+ gid_t pw_gid; /* group id number */
+ char *pw_dir; /* home directory */
+ char *pw_shell; /* shell */
+};
+
+struct passwd * _CRTAPI1 getpwuid(uid_t);
+struct passwd * _CRTAPI1 getpwnam(const char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PWD_ */
diff --git a/public/sdk/inc/posix/setjmp.h b/public/sdk/inc/posix/setjmp.h
new file mode 100644
index 000000000..afcba1ce0
--- /dev/null
+++ b/public/sdk/inc/posix/setjmp.h
@@ -0,0 +1,269 @@
+/***
+*setjmp.h - definitions/declarations for setjmp/longjmp routines
+*
+* Copyright (c) 1985-1996, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* This file defines the machine-dependent buffer used by
+* setjmp/longjmp to save and restore the program state, and
+* declarations for those routines.
+* [ANSI/System V]
+*
+* The setjmp() that will be used by those who include this file
+* is _setjmpex, which is safe for use with try/except/finally,
+* but is slow. See <crt/setjmpex.h> and <crt/setjmp.h> for more.
+*
+****/
+
+#ifndef _INC_SETJMP
+
+#include <signal.h>
+
+#ifndef __cplusplus
+
+
+/*
+ * Conditional macro definition for function calling type and variable type
+ * qualifiers.
+ */
+#if ( (_MSC_VER >= 800) && (_M_IX86 >= 300) )
+
+/*
+ * Definitions for MS C8-32 (386/486) compiler
+ */
+#define _CRTAPI1 __cdecl
+#define _CRTAPI2 __cdecl
+
+#elif ( _MSC_VER == 600 )
+
+/*
+ * Definitions for old MS C6-386 compiler
+ */
+#define _CRTAPI1 _cdecl
+#define _CRTAPI2 _cdecl
+#define _M_IX86 300
+
+#else
+
+/*
+ * Other compilers (e.g., MIPS)
+ */
+#define _CRTAPI1
+#define _CRTAPI2
+
+#endif
+
+/*
+ * Posix programs use _setjmpex by default.
+ */
+
+
+/*
+ * Definitions specific to particular setjmp implementations.
+ */
+#if defined(_M_IX86)
+#define longjmp _longjmpex
+#define setjmp _setjmp
+
+/*
+ * MS C8-32 or older MS C6-386 compilers
+ */
+#define _JBLEN 16
+#define _JBTYPE int
+
+/*
+ * Define jump buffer layout for x86 setjmp/longjmp
+ */
+
+typedef struct __JUMP_BUFFER {
+ unsigned long Ebp;
+ unsigned long Ebx;
+ unsigned long Edi;
+ unsigned long Esi;
+ unsigned long Esp;
+ unsigned long Eip;
+ unsigned long Registration;
+ unsigned long TryLevel;
+ unsigned long Cookie;
+ unsigned long UnwindFunc;
+ unsigned long UnwindData[6];
+} _JUMP_BUFFER;
+
+#elif ( defined(_M_MRX000) || defined(_MIPS_) )
+
+/*
+ * All MIPS implementations need _JBLEN of 16
+ */
+#define _JBLEN 16
+#define _JBTYPE double
+#define _setjmp setjmp
+
+/*
+ * Define jump buffer layout for MIPS setjmp/longjmp.
+ */
+
+typedef struct __JUMP_BUFFER {
+ unsigned long FltF20;
+ unsigned long FltF21;
+ unsigned long FltF22;
+ unsigned long FltF23;
+ unsigned long FltF24;
+ unsigned long FltF25;
+ unsigned long FltF26;
+ unsigned long FltF27;
+ unsigned long FltF28;
+ unsigned long FltF29;
+ unsigned long FltF30;
+ unsigned long FltF31;
+ unsigned long IntS0;
+ unsigned long IntS1;
+ unsigned long IntS2;
+ unsigned long IntS3;
+ unsigned long IntS4;
+ unsigned long IntS5;
+ unsigned long IntS6;
+ unsigned long IntS7;
+ unsigned long IntS8;
+ unsigned long Type;
+ unsigned long Fir;
+} _JUMP_BUFFER;
+
+#elif defined(_ALPHA_)
+
+/*
+ * Alpha implementations need a _JBLEN of 20 quadwords.
+ * A double is used only to obtain quadword size and alignment.
+ */
+
+#define _JBLEN 20
+#define _JBTYPE double
+#define _setjmp setjmp
+
+/*
+ * Define jump buffer layout for Alpha setjmp/longjmp.
+ * A double is used only to obtain quadword size and alignment.
+ */
+
+typedef struct __JUMP_BUFFER {
+ unsigned long Fp;
+ unsigned long Pc;
+ unsigned long Seb;
+ unsigned long Type;
+ double FltF2;
+ double FltF3;
+ double FltF4;
+ double FltF5;
+ double FltF6;
+ double FltF7;
+ double FltF8;
+ double FltF9;
+ double IntS0;
+ double IntS1;
+ double IntS2;
+ double IntS3;
+ double IntS4;
+ double IntS5;
+ double IntS6;
+ double IntSp;
+ double Fir;
+ double Fill;
+} _JUMP_BUFFER;
+
+#elif defined(_PPC_)
+/*
+ * Min length is 240 bytes; round to 256 bytes.
+ * Since this is allocated as an array of "double", the
+ * number of entries required is 32.
+ *
+ * All PPC implementations need _JBLEN of 32
+ */
+
+#define _JBLEN 32
+#define _JBTYPE double
+#define _setjmp setjmp
+
+/*
+ * Define jump buffer layout for PowerPC setjmp/longjmp.
+ */
+
+typedef struct __JUMP_BUFFER {
+ double Fpr14;
+ double Fpr15;
+ double Fpr16;
+ double Fpr17;
+ double Fpr18;
+ double Fpr19;
+ double Fpr20;
+ double Fpr21;
+ double Fpr22;
+ double Fpr23;
+ double Fpr24;
+ double Fpr25;
+ double Fpr26;
+ double Fpr27;
+ double Fpr28;
+ double Fpr29;
+ double Fpr30;
+ double Fpr31;
+ unsigned long Gpr1;
+ unsigned long Gpr2;
+ unsigned long Gpr13;
+ unsigned long Gpr14;
+ unsigned long Gpr15;
+ unsigned long Gpr16;
+ unsigned long Gpr17;
+ unsigned long Gpr18;
+ unsigned long Gpr19;
+ unsigned long Gpr20;
+ unsigned long Gpr21;
+ unsigned long Gpr22;
+ unsigned long Gpr23;
+ unsigned long Gpr24;
+ unsigned long Gpr25;
+ unsigned long Gpr26;
+ unsigned long Gpr27;
+ unsigned long Gpr28;
+ unsigned long Gpr29;
+ unsigned long Gpr30;
+ unsigned long Gpr31;
+ unsigned long Cr;
+ unsigned long Iar;
+ unsigned long Type;
+} _JUMP_BUFFER;
+
+#endif /* MIPS/Alpha/PPC */
+
+/* define the buffer type for holding the state information */
+
+#ifndef _JMP_BUF_DEFINED
+typedef _JBTYPE jmp_buf[_JBLEN];
+#define _JMP_BUF_DEFINED
+#endif
+
+#ifndef _SIGJMP_BUF_DEFINED
+#define _SIGJMP_BUF_DEFINED
+/*
+ * sigjmp buf is just a jmp_buf plus an int to say whether the sigmask
+ * is saved or not, and a sigmask_t for the mask if it is saved.
+ */
+
+typedef _JBTYPE sigjmp_buf[_JBLEN + 2];
+#endif /* _SIGJMP_BUF_DEFINED */
+
+extern _JBTYPE * _CRTAPI1 _sigjmp_store_mask(sigjmp_buf, int);
+
+#define sigsetjmp(_env, _save) \
+ setjmp(_sigjmp_store_mask((_env), (_save)))
+
+/* function prototypes */
+
+int _CRTAPI1 setjmp(jmp_buf);
+void _CRTAPI1 longjmp(jmp_buf, int);
+void _CRTAPI1 siglongjmp(sigjmp_buf, int);
+
+/* function prototypes */
+
+#endif /* __cplusplus */
+
+#define _INC_SETJMP
+#endif /* _INC_SETJMP */
diff --git a/public/sdk/inc/posix/signal.h b/public/sdk/inc/posix/signal.h
new file mode 100644
index 000000000..9d7015dff
--- /dev/null
+++ b/public/sdk/inc/posix/signal.h
@@ -0,0 +1,88 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ signal.h
+
+Abstract:
+
+ This module contains the signal related types and data structures described
+ in sections 3.3.1 thru 3.3.7 of IEEE P1003.1/Draft 13.
+
+--*/
+
+#ifndef _SIGNAL_
+#define _SIGNAL_
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned long sigset_t;
+
+#ifndef _SIG_ATOMIC_T_DEFINED
+typedef int sig_atomic_t;
+#define _SIG_ATOMIC_T_DEFINED
+#endif
+
+#define SIG_DFL (void (_CRTAPI1 *)(int))0xffffffff /* default signal action */
+#define SIG_ERR (void (_CRTAPI1 *)(int))0 /* signal error value */
+#define SIG_IGN (void (_CRTAPI1 *)(int))1 /* ignore signal */
+
+#define SIGABRT 1
+#define SIGALRM 2
+#define SIGFPE 3
+#define SIGHUP 4
+#define SIGILL 5
+#define SIGINT 6
+#define SIGKILL 7
+#define SIGPIPE 8
+#define SIGQUIT 9
+#define SIGSEGV 10
+#define SIGTERM 11
+#define SIGUSR1 12
+#define SIGUSR2 13
+#define SIGCHLD 14
+#define SIGCONT 15
+#define SIGSTOP 16
+#define SIGTSTP 17
+#define SIGTTIN 18
+#define SIGTTOU 19
+
+typedef void (_CRTAPI1 * _handler)(int);
+
+struct sigaction {
+ _handler sa_handler;
+ sigset_t sa_mask;
+ int sa_flags;
+};
+
+#define SA_NOCLDSTOP 0x00000001
+
+#define SIG_BLOCK 1
+#define SIG_UNBLOCK 2
+#define SIG_SETMASK 3
+
+int _CRTAPI1 kill(pid_t, int);
+int _CRTAPI1 sigemptyset(sigset_t *);
+int _CRTAPI1 sigfillset(sigset_t *);
+int _CRTAPI1 sigaddset(sigset_t *, int);
+int _CRTAPI1 sigdelset(sigset_t *, int);
+int _CRTAPI1 sigismember(const sigset_t *, int);
+int _CRTAPI1 sigaction(int, const struct sigaction *, struct sigaction *);
+int _CRTAPI1 sigprocmask(int, const sigset_t *, sigset_t *);
+int _CRTAPI1 sigpending(sigset_t *);
+int _CRTAPI1 sigsuspend(const sigset_t *);
+
+_handler _CRTAPI1 signal(int, _handler);
+int _CRTAPI1 raise(int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIGNAL_ */
diff --git a/public/sdk/inc/posix/sys/errno.h b/public/sdk/inc/posix/sys/errno.h
new file mode 100644
index 000000000..17f5f5408
--- /dev/null
+++ b/public/sdk/inc/posix/sys/errno.h
@@ -0,0 +1,72 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ errno.h
+
+Abstract:
+
+ This module contains the implementation defined values for the POSIX error
+ number as described in section 2.5 of IEEE P1003.1/Draft 13 as well as
+ additional error codes for streams and sockets.
+
+--*/
+
+
+#ifndef _SYS_ERRNO_
+#define _SYS_ERRNO_
+
+/*
+ * POSIX error codes
+ */
+
+#define EZERO 0 /* No error */
+#define EPERM 1 /* Operation no permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted function call */
+#define EIO 5 /* Input/output error */
+#define ENXIO 6 /* No such device or address */
+#define E2BIG 7 /* Arg list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file descriptor */
+#define ECHILD 10 /* No child processes */
+#define EAGAIN 11 /* Resource temporarily unavailable */
+#define ENOMEM 12 /* Not enough space */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#define ENOTBLK 15 /* Unknown error */
+#define EBUSY 16 /* Resource device */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Improper link */
+#define ENODEV 19 /* No such device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* Too many open files in system */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Inappropriate I/O control operation */
+#define ETXTBUSY 26 /* Unknown error */
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Invalid seek */
+#define EROFS 30 /* Read-only file system */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+#define EDOM 33 /* Domain error */
+#define ERANGE 34 /* Result too large */
+#define EUCLEAN 35 /* Unknown error */
+#define EDEADLOCK 36 /* Resource deadlock avoided */
+#define EDEADLK 36 /* Resource deadlock avoided */
+#ifndef _POSIX_SOURCE
+#define UNKNOWN 37 /* Unknown error */
+#endif /* _POSIX_SOURCE */
+#define ENAMETOOLONG 38 /* Filename too long */
+#define ENOLCK 39 /* No locks available */
+#define ENOSYS 40 /* Function not implemented */
+#define ENOTEMPTY 41 /* Direcotory not empty */
+#define EILSEQ 42 /* Invalid multi-byte character */
+
+#endif /* _SYS_ERRNO_ */
diff --git a/public/sdk/inc/posix/sys/stat.h b/public/sdk/inc/posix/sys/stat.h
new file mode 100644
index 000000000..2ce180e06
--- /dev/null
+++ b/public/sdk/inc/posix/sys/stat.h
@@ -0,0 +1,95 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ stat.h
+
+Abstract:
+
+ This module contains the stat structure described in section 5.6.1
+ of IEEE P1003.1/Draft 13.
+
+--*/
+
+#ifndef _SYS_STAT_
+#define _SYS_STAT_
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct stat {
+ mode_t st_mode;
+ ino_t st_ino;
+ dev_t st_dev;
+ nlink_t st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ off_t st_size;
+ time_t st_atime;
+ time_t st_mtime;
+ time_t st_ctime;
+};
+
+/*
+ * Type bits for mode field
+ */
+
+#define S_IFMT 000770000
+
+#define S_IFIFO 000010000
+#define S_IFCHR 000020000
+#define S_IFDIR 000040000
+#define S_IFBLK 000060000
+#define S_IFREG 000100000
+
+/*
+ * Set Id Bits for mode
+ */
+
+#define S_ISUID 000004000
+#define S_ISGID 000002000
+
+/*
+ * Protection Bits for mode
+ */
+
+#define _S_PROT 000000777
+
+#define S_IRWXU 000000700
+#define S_IRUSR 000000400
+#define S_IWUSR 000000200
+#define S_IXUSR 000000100
+
+#define S_IRWXG 000000070
+#define S_IRGRP 000000040
+#define S_IWGRP 000000020
+#define S_IXGRP 000000010
+
+#define S_IRWXO 000000007
+#define S_IROTH 000000004
+#define S_IWOTH 000000002
+#define S_IXOTH 000000001
+
+#define S_ISDIR(m) ( ((m) & S_IFMT) == S_IFDIR )
+#define S_ISCHR(m) ( ((m) & S_IFMT) == S_IFCHR )
+#define S_ISBLK(m) ( ((m) & S_IFMT) == S_IFBLK )
+#define S_ISREG(m) ( ((m) & S_IFMT) == S_IFREG )
+#define S_ISFIFO(m) ( ((m) & S_IFMT) == S_IFIFO )
+
+mode_t _CRTAPI1 umask(mode_t);
+int _CRTAPI1 mkdir(const char *, mode_t);
+int _CRTAPI1 mkfifo(const char *, mode_t);
+int _CRTAPI1 stat(const char *, struct stat *);
+int _CRTAPI1 fstat(int, struct stat *);
+int _CRTAPI1 chmod(const char *, mode_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_STAT_ */
diff --git a/public/sdk/inc/posix/sys/times.h b/public/sdk/inc/posix/sys/times.h
new file mode 100644
index 000000000..730747fce
--- /dev/null
+++ b/public/sdk/inc/posix/sys/times.h
@@ -0,0 +1,43 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ times.h
+
+Abstract:
+
+ This module contains the tms structure and clock_t described in section
+ 4.5.2.2 of IEEE P1003.1/Draft 13.
+
+--*/
+
+#ifndef _SYS_TIMES_
+#define _SYS_TIMES_
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _CLOCK_T_DEFINED
+#define _CLOCK_T_DEFINED
+typedef long clock_t;
+#endif
+
+struct tms {
+ clock_t tms_utime;
+ clock_t tms_stime;
+ clock_t tms_cutime;
+ clock_t tms_cstime;
+};
+
+clock_t _CRTAPI1 times(struct tms *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_TIMES_ */
diff --git a/public/sdk/inc/posix/sys/types.h b/public/sdk/inc/posix/sys/types.h
new file mode 100644
index 000000000..e454e98a7
--- /dev/null
+++ b/public/sdk/inc/posix/sys/types.h
@@ -0,0 +1,124 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ types.h
+
+Abstract:
+
+ This module contains the primitive system data types described
+ in section 2.6 of IEEE P1003.1/Draft 13 as well as type definitions
+ for sockets and streams
+
+--*/
+
+#ifndef _SYS_TYPES_
+#define _SYS_TYPES_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Conditional macro definition for function calling type and variable type
+ * qualifiers.
+ *
+ * Convention: _CRTAPI1 is for functions with a fixed number of arguments
+ * _CRTAPI2 is for functions with a variable number of arguments
+ */
+#if ( (_MSC_VER >= 800) && (_M_IX86 >= 300) )
+
+/*
+ * Definitions for MS C8-32 (386/486) compiler
+ */
+#define _CRTAPI1 __cdecl
+#define _CRTAPI2 __cdecl
+
+#elif ( _MSC_VER == 600 )
+
+/*
+ * Definitions for old MS C6-386 compiler
+ */
+#define _CRTAPI1 _cdecl
+#define _CRTAPI2 _cdecl
+#define _M_IX86 300
+
+#else
+
+/*
+ * Other compilers (e.g., MIPS)
+ */
+#define _CRTAPI1
+#define _CRTAPI2
+
+#endif
+
+
+/*
+ * POSIX data types
+ */
+
+typedef unsigned long gid_t;
+typedef unsigned long mode_t;
+typedef unsigned long nlink_t;
+typedef long pid_t;
+typedef unsigned long uid_t;
+
+#ifndef _OFF_T_DEFINED
+typedef long off_t;
+#define _OFF_T_DEFINED
+#endif
+
+#ifndef _DEV_T_DEFINED
+typedef unsigned long dev_t;
+#define _DEV_T_DEFINED
+#endif
+
+#ifndef _INO_T_DEFINED
+typedef unsigned long ino_t;
+#define _INO_T_DEFINED
+#endif
+
+#ifndef _TIME_T_DEFINED
+typedef long time_t;
+#define _TIME_T_DEFINED
+#endif
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+#ifndef _SSIZE_T_DEFINED
+typedef signed int ssize_t;
+#define _SSIZE_T_DEFINED
+#endif
+
+#ifndef _POSIX_SOURCE
+
+/*
+ * Additional types for sockets and streams
+ */
+
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned short ushort;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+
+typedef unsigned int uint;
+typedef unsigned long ulong;
+typedef unsigned char unchar;
+
+typedef char *caddr_t;
+typedef int key_t; /* Imported!!! */
+
+#endif /* _POSIX_SOURCE */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_TYPES_ */
diff --git a/public/sdk/inc/posix/sys/utsname.h b/public/sdk/inc/posix/sys/utsname.h
new file mode 100644
index 000000000..5a7d8835b
--- /dev/null
+++ b/public/sdk/inc/posix/sys/utsname.h
@@ -0,0 +1,37 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ utsname.h
+
+Abstract:
+
+ This module contains the utsname structure described in section 4.4.1.2
+ of IEEE P1003.1/Draft 13.
+
+--*/
+
+#ifndef _UTSNAME_
+#define _UTSNAME_
+
+#include <limits.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct utsname {
+ char sysname[_POSIX_NAME_MAX];
+ char nodename[_POSIX_NAME_MAX];
+ char release[_POSIX_NAME_MAX];
+ char version[_POSIX_NAME_MAX];
+ char machine[_POSIX_NAME_MAX];
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UTSNAME_ */
diff --git a/public/sdk/inc/posix/sys/wait.h b/public/sdk/inc/posix/sys/wait.h
new file mode 100644
index 000000000..35632231e
--- /dev/null
+++ b/public/sdk/inc/posix/sys/wait.h
@@ -0,0 +1,90 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ wait.h
+
+Abstract:
+
+ This module contains the symbolic constants, macros, and structures needed to
+ support wait, waitpid, and _exit in in IEEE P1003.1/Draft 13.
+
+--*/
+
+#ifndef _SYS_WAIT_
+#define _SYS_WAIT_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * wait options
+ */
+
+#define WNOHANG 0x00000001
+#define WUNTRACED 0x00000002
+
+/*
+ * Structure of wait status value
+ *
+ * Bit 32 - 0 if process terminated normally
+ * 1 if process was signaled
+ * Bit 31 - 0 if process is not stopped
+ * 1 if process is stopped
+ * Bits 0-7 exit status or signal number
+ */
+
+/*
+ * Evaluate to non-zero if process terminated normally (by calling _exit)
+ */
+
+#define WIFEXITED(stat_val) \
+ (((stat_val) & 0xff) == 0)
+
+/*
+ * Returns the low-order 8 bits of the status argument passed to _exit
+ */
+
+#define WEXITSTATUS(stat_val) \
+ (((stat_val) & 0xff00) >> 8)
+
+/*
+ * Evaluate to non-zero if process terminated due to receipt of a signal
+ * that was not caught
+ */
+
+#define WIFSIGNALED(stat_val) \
+ (!WIFSTOPPED(stat_val) && !WIFEXITED(stat_val))
+
+/*
+ * Returns the signal number of the signal that caused the process to terminate
+ */
+
+#define WTERMSIG(stat_val) \
+ ((stat_val) & 0xff)
+
+/*
+ * Evaluate to non-zero if process is currently stopped
+ */
+
+#define WIFSTOPPED(stat_val) \
+ (((stat_val) & 0xff) == 0177)
+
+/*
+ * Returns the signal number of the signal that caused the process to stop
+ */
+
+#define WSTOPSIG(stat_val) \
+ (((stat_val) & 0xff00) >> 8)
+
+pid_t _CRTAPI1 wait(int *);
+pid_t _CRTAPI1 waitpid(pid_t, int *, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_WAIT_ */
diff --git a/public/sdk/inc/posix/tar.h b/public/sdk/inc/posix/tar.h
new file mode 100644
index 000000000..b981a4900
--- /dev/null
+++ b/public/sdk/inc/posix/tar.h
@@ -0,0 +1,52 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ tar.h
+
+Abstract:
+
+ Stuff for the 'tar' data interchange format, as in 1003.1-88
+ (10.1.1)
+
+--*/
+
+#ifndef _TAR_
+#define _TAR_
+
+#define TMAGIC "ustar" /* ustar and a nul */
+#define TMAGLEN 6
+#define TVERSION "00" /* 00 and no nul */
+#define TVERSLEN 2
+
+/* Values used in typeflag field */
+
+#define REGTYPE '0' /* regular file */
+#define AREGTYPE '\0' /* regular file */
+#define LNKTYPE '1' /* link */
+#define SYMTYPE '2' /* symlink */
+#define CHRTYPE '3' /* character special */
+#define BLKTYPE '4' /* block special */
+#define DIRTYPE '5' /* directory */
+#define FIFOTYPE '6' /* FIFO special */
+#define CONTTYPE '7' /* high-performance */
+
+/* Bits used in the mode field -- values in octal */
+
+#define TSUID 04000 /* set UID on execution */
+#define TSGID 02000 /* set GID on execution */
+#define TSVTX 01000 /* reserved */
+ /* File Permissions */
+#define TUREAD 00400 /* read by owner */
+#define TUWRITE 00200 /* write by owner */
+#define TUEXEC 00100 /* execute/search by owner */
+#define TGREAD 00040 /* read by group */
+#define TGWRITE 00020 /* write by group */
+#define TGEXEC 00010 /* execute/search by group */
+#define TOREAD 00004 /* read by other */
+#define TOWRITE 00002 /* write by other */
+#define TOEXEC 00001 /* execute/search by other */
+
+#endif /* _TAR_ */
diff --git a/public/sdk/inc/posix/termios.h b/public/sdk/inc/posix/termios.h
new file mode 100644
index 000000000..2c294afb8
--- /dev/null
+++ b/public/sdk/inc/posix/termios.h
@@ -0,0 +1,178 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ termios.h
+
+Abstract:
+
+ This module contains the primitive system data types described in section
+ 7.1.2.1 of IEEE P1003.1-1990
+
+--*/
+
+#ifndef _TERMIOS_
+#define _TERMIOS_
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned long cc_t;
+typedef unsigned long speed_t;
+typedef unsigned long tcflag_t;
+
+#define NCCS 11
+
+struct termios {
+ tcflag_t c_iflag; /* input modes */
+ tcflag_t c_oflag; /* output modes */
+ tcflag_t c_cflag; /* control modes */
+ tcflag_t c_lflag; /* local modes */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
+ cc_t c_cc[NCCS]; /* control characters */
+};
+
+/*
+ * Input modes, for c_iflag member
+ */
+
+#define BRKINT 0x00000001 /* signal interrupt on break */
+#define ICRNL 0x00000002 /* map CR to NL on input */
+#define IGNBRK 0x00000004 /* ignore break condition */
+#define IGNCR 0x00000008 /* ignore CR */
+#define IGNPAR 0x00000010 /* ignore characters with parity errors */
+#define INLCR 0x00000020 /* map NL to CR on input */
+#define INPCK 0x00000040 /* Enable input parity check */
+#define ISTRIP 0x00000080 /* strip character */
+#define IXOFF 0x00000100 /* enable start/stop input control */
+#define IXON 0x00000200 /* enable start/stop output control */
+#define PARMRK 0x00000400 /* mark parity errors */
+
+/*
+ * Output modes, for c_oflag member
+ */
+
+#define OPOST 0x00000001 /* perform output processing */
+#define ONLCR 0x00000002 /* map NL to ASCII CR-NL on output */
+#define ONLRET 0x00000004 /* NL performs ASCII CR function */
+#define OCRNL 0x00000008 /* map ASCII CR to NL on output */
+#define ONOCR 0x00000010 /* No ASCII CR output at column 0. */
+
+/*
+ * Control modes, for c_cflag member
+ */
+
+#define CLOCAL 0x00000001 /* ignore modem status lines */
+#define CREAD 0x00000002 /* enable receiver */
+#define CSIZE 0x000000F0 /* number of bits per byte */
+#define CS5 0x00000010 /* 5 bits */
+#define CS6 0x00000020 /* 6 bits */
+#define CS7 0x00000040 /* 7 bits */
+#define CS8 0x00000080 /* 8 bits */
+#define CSTOPB 0x00000100 /* send two stop bits, else one */
+#define HUPCL 0x00000200 /* hang up on last close */
+#define PARENB 0x00000400 /* parity enable */
+#define PARODD 0x00000800 /* odd parity, else even */
+
+/*
+ * Local modes, for c_lflag member
+ */
+
+#define ECHO 0x00000001 /* enable echo */
+#define ECHOE 0x00000002 /* echo ERASE as an error-correcting backspace */
+#define ECHOK 0x00000004 /* echo KILL */
+#define ECHONL 0x00000008 /* echo '\n' */
+#define ICANON 0x00000010 /* canonical input (erase and kill processing) */
+#define IEXTEN 0x00000020 /* enable extended functions */
+#define ISIG 0x00000040 /* enable signals */
+#define NOFLSH 0x00000080 /* disable flush after intr, quit, or suspend */
+#define TOSTOP 0x00000100 /* send SIGTTOU for background output */
+
+/*
+ * Indices into c_cc array
+ */
+
+#define VEOF 0 /* EOF character */
+#define VEOL 1 /* EOL character */
+#define VERASE 2 /* ERASE character */
+#define VINTR 3 /* INTR character */
+#define VKILL 4 /* KILL character */
+#define VMIN 5 /* MIN value */
+#define VQUIT 6 /* QUIT character */
+#define VSUSP 7 /* SUSP character */
+#define VTIME 8 /* TIME value */
+#define VSTART 9 /* START character */
+#define VSTOP 10 /* STOP character */
+
+/*
+ * Values for speed_t's
+ */
+
+#define B0 0
+#define B50 1
+#define B75 2
+#define B110 3
+#define B134 4
+#define B150 5
+#define B200 6
+#define B300 7
+#define B600 8
+#define B1200 9
+#define B1800 10
+#define B2400 11
+#define B4800 12
+#define B9600 13
+#define B19200 14
+#define B38400 15
+
+/*
+ * Optional actions for tcsetattr()
+ */
+#define TCSANOW 1
+#define TCSADRAIN 2
+#define TCSAFLUSH 3
+
+/*
+ * Queue selectors for tcflush()
+ */
+
+#define TCIFLUSH 0
+#define TCOFLUSH 1
+#define TCIOFLUSH 2
+
+/*
+ * Actions for tcflow()
+ */
+
+#define TCOOFF 0
+#define TCOON 1
+#define TCIOFF 2
+#define TCION 3
+
+
+int _CRTAPI1 tcgetattr(int, struct termios *);
+int _CRTAPI1 tcsetattr(int, int, const struct termios *);
+int _CRTAPI1 tcsendbreak(int, int);
+int _CRTAPI1 tcdrain(int);
+int _CRTAPI1 tcflush(int, int);
+int _CRTAPI1 tcflow(int, int);
+
+pid_t _CRTAPI1 tcgetpgrp(int);
+int _CRTAPI1 tcsetpgrp(int, pid_t);
+
+speed_t _CRTAPI1 cfgetospeed(const struct termios *);
+int _CRTAPI1 cfsetospeed(struct termios *, speed_t);
+speed_t _CRTAPI1 cfgetispeed(const struct termios *);
+int _CRTAPI1 cfsetispeed(struct termios *, speed_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TERMIOS_ */
diff --git a/public/sdk/inc/posix/types.h b/public/sdk/inc/posix/types.h
new file mode 100644
index 000000000..cbf092dc7
--- /dev/null
+++ b/public/sdk/inc/posix/types.h
@@ -0,0 +1,20 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ types.h
+
+Abstract:
+
+ Types.
+
+--*/
+
+#ifndef _TYPES_
+#define _TYPES_
+
+#include <sys/types.h>
+
+#endif /* _TYPES_ */
diff --git a/public/sdk/inc/posix/unistd.h b/public/sdk/inc/posix/unistd.h
new file mode 100644
index 000000000..fe86e7c66
--- /dev/null
+++ b/public/sdk/inc/posix/unistd.h
@@ -0,0 +1,168 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ unistd.h
+
+Abstract:
+
+ This module contains the "symbolic constants and structures referenced
+ elsewhere in the standard" IEEE P1003.1/Draft 13.
+
+--*/
+
+#ifndef _UNISTD_
+#define _UNISTD_
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define STDIN_FILENO 0
+#define STDOUT_FILENO 1
+#define STDERR_FILENO 2
+
+/*
+ * Section 2.9.1
+ */
+
+#define F_OK 00
+#define X_OK 01
+#define W_OK 02
+#define R_OK 04
+
+/*
+ * Section 2.9.2
+ */
+
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+/*
+ * Section 2.9.3
+ */
+
+#define _POSIX_JOB_CONTROL
+#define _POSIX_VERSION 199009L
+#define _POSIX_SAVED_IDS
+
+/*
+ * Section 2.9.4
+ */
+
+#define _POSIX_CHOWN_RESTRICTED 1
+#define _POSIX_NO_TRUNC 1
+#define _POSIX_VDISABLE 0
+
+/*
+ * Section 4.8.1
+ * sysconf 'name' values
+ */
+
+#define _SC_ARG_MAX 1
+#define _SC_CHILD_MAX 2
+#define _SC_CLK_TCK 3
+#define _SC_NGROUPS_MAX 4
+#define _SC_OPEN_MAX 5
+#define _SC_JOB_CONTROL 6
+#define _SC_SAVED_IDS 7
+#define _SC_STREAM_MAX 8
+#define _SC_TZNAME_MAX 9
+#define _SC_VERSION 10
+
+/*
+ * Section 5.7.1
+ * pathconf and fpathconf 'name' values
+ */
+
+#define _PC_LINK_MAX 1
+#define _PC_MAX_CANON 2
+#define _PC_MAX_INPUT 3
+#define _PC_NAME_MAX 4
+#define _PC_PATH_MAX 5
+#define _PC_PIPE_BUF 6
+#define _PC_CHOWN_RESTRICTED 7
+#define _PC_NO_TRUNC 8
+#define _PC_VDISABLE 9
+
+#ifndef NULL
+#define NULL ((void *)0)
+#endif
+
+/*
+ * Function Prototypes
+ */
+
+pid_t _CRTAPI1 fork(void);
+
+int _CRTAPI2 execl(const char *, const char *, ...);
+int _CRTAPI1 execv(const char *, char * const []);
+int _CRTAPI2 execle(const char *, const char *arg, ...);
+int _CRTAPI1 execve(const char *, char * const [], char * const []);
+int _CRTAPI2 execlp(const char *, const char *, ...);
+int _CRTAPI1 execvp(const char *, char * const []);
+
+void _CRTAPI1 _exit(int);
+unsigned int _CRTAPI1 alarm(unsigned int);
+int _CRTAPI1 pause(void);
+unsigned int _CRTAPI1 sleep(unsigned int);
+pid_t _CRTAPI1 getpid(void);
+pid_t _CRTAPI1 getppid(void);
+uid_t _CRTAPI1 getuid(void);
+uid_t _CRTAPI1 geteuid(void);
+gid_t _CRTAPI1 getgid(void);
+gid_t _CRTAPI1 getegid(void);
+int _CRTAPI1 setuid(uid_t);
+int _CRTAPI1 setgid(gid_t);
+int _CRTAPI1 getgroups(int gidsetsize, gid_t grouplist[]);
+char *_CRTAPI1 getlogin(void);
+pid_t _CRTAPI1 getpgrp(void);
+pid_t _CRTAPI1 setsid(void);
+int _CRTAPI1 setpgid(pid_t, pid_t);
+
+struct utsname;
+int _CRTAPI1 uname(struct utsname *);
+
+time_t _CRTAPI1 time(time_t *);
+char * _CRTAPI1 getenv(const char *);
+char * _CRTAPI1 ctermid(char *s);
+char * _CRTAPI1 ttyname(int);
+int _CRTAPI1 isatty(int);
+
+long _CRTAPI1 sysconf(int);
+
+int _CRTAPI1 chdir(const char *);
+char * _CRTAPI1 getcwd(char *, size_t);
+int _CRTAPI1 link(const char *, const char *);
+int _CRTAPI1 unlink(const char *);
+int _CRTAPI1 rmdir(const char *);
+int _CRTAPI1 rename(const char *, const char *);
+int _CRTAPI1 access(const char *, int);
+int _CRTAPI1 chown(const char *, uid_t, gid_t);
+
+struct utimbuf;
+int _CRTAPI1 utime(const char *, const struct utimbuf *);
+
+long _CRTAPI1 pathconf(const char *, int);
+long _CRTAPI1 fpathconf(int, int);
+
+int _CRTAPI1 pipe(int *);
+int _CRTAPI1 dup(int);
+int _CRTAPI1 dup2(int, int);
+int _CRTAPI1 close(int);
+ssize_t _CRTAPI1 read(int, void *, size_t);
+ssize_t _CRTAPI1 write(int, const void *, size_t);
+off_t _CRTAPI1 lseek(int, off_t, int);
+
+char * _CRTAPI1 cuserid(char *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UNISTD_ */
diff --git a/public/sdk/inc/posix/utime.h b/public/sdk/inc/posix/utime.h
new file mode 100644
index 000000000..c2167d173
--- /dev/null
+++ b/public/sdk/inc/posix/utime.h
@@ -0,0 +1,34 @@
+/*++
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ utime.h
+
+Abstract:
+
+ This module contains the utimbuf structure described in section 5.6.6.2
+ of IEEE P1003.1/Draft 13.
+
+--*/
+
+#ifndef _UTIME_
+#define _UTIME_
+
+#include <types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct utimbuf {
+ time_t actime;
+ time_t modtime;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UTIME_ */
diff --git a/public/sdk/inc/ppcalign.tab b/public/sdk/inc/ppcalign.tab
new file mode 100644
index 000000000..ab23bd352
--- /dev/null
+++ b/public/sdk/inc/ppcalign.tab
@@ -0,0 +1,13 @@
+bit 8 32
+word 4 4
+char 1 1
+short 2 2
+int 4 4 2147483647
+long 4 4
+float 8 8
+double 8 8
+bptr 4 4
+wptr 4 4
+struct 1 1
+struct2 1 1
+ \ No newline at end of file
diff --git a/public/sdk/inc/ppcinst.h b/public/sdk/inc/ppcinst.h
new file mode 100644
index 000000000..ebfe88757
--- /dev/null
+++ b/public/sdk/inc/ppcinst.h
@@ -0,0 +1,644 @@
+/*++
+
+Copyright (c) 1993 IBM Corporation
+
+Module Name:
+
+ ppcinst.h
+
+Abstract:
+
+ PowerPC instruction and floating constant definitions.
+
+Author:
+
+ Rick Simpson 30 July 1993
+
+Revision History:
+
+--*/
+
+#ifndef _PPCINST_
+#define _PPCINST_
+
+//
+// POWERPC INSTRUCTION FORMAT STRUCTURES
+//
+
+typedef union _PPC_INSTRUCTION {
+ ULONG Long;
+ UCHAR Byte[4];
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit30 : 1;
+ LONG bit6_29 : 24;
+ ULONG bit0_5 : 6;
+ } i_f;
+
+#define Primary_Op i_f.bit0_5
+
+#define Iform_LI i_f.bit6_29
+#define Iform_AA i_f.bit30
+#define Iform_LK i_f.bit31
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit30 : 1;
+ LONG bit16_29 : 14;
+ ULONG bit11_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } b_f;
+
+#define Bform_BO b_f.bit6_10
+#define Bform_BI b_f.bit11_15
+#define Bform_BD b_f.bit16_29
+#define Bform_AA b_f.bit30
+#define Bform_LK b_f.bit31
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit30 : 1;
+ ULONG bit6_29 : 24;
+ ULONG bit0_5 : 6;
+ } sc_f;
+
+#define SCform_XO sc_f.bit30
+
+ struct {
+ LONG bit16_31 : 16;
+ ULONG bit11_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } d_f1;
+ struct {
+ ULONG bit16_31 : 16;
+ ULONG bit11_15 : 5;
+ ULONG bit10 : 1;
+ ULONG bit9 : 1;
+ ULONG bit6_8 : 3;
+ ULONG bit0_5 : 6;
+ } d_f2;
+
+#define Dform_RT d_f1.bit6_10
+#define Dform_RS d_f1.bit6_10
+#define Dform_TO d_f1.bit6_10
+#define Dform_FRT d_f1.bit6_10
+#define Dform_FRS d_f1.bit6_10
+#define Dform_BF d_f2.bit6_8
+#define Dform_L d_f2.bit10
+#define Dform_RA d_f1.bit11_15
+#define Dform_D d_f1.bit16_31
+#define Dform_SI d_f1.bit16_31
+#define Dform_UI d_f2.bit16_31
+
+ struct {
+ ULONG bit30_31 : 2;
+ LONG bit16_29 : 14;
+ ULONG bit11_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } ds_f;
+
+#define DSform_RT ds_f.bit6_10
+#define DSform_RS ds_f.bit6_10
+#define DSform_RA ds_f.bit11_15
+#define DSform_DS ds_f.bit16_29
+#define DSform_XO ds_f.bit30_31
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit21_30 : 10;
+ ULONG bit16_20 : 5;
+ ULONG bit11_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } x_f1;
+ struct {
+ ULONG bit20_31 : 12;
+ ULONG bit16_19 : 4;
+ ULONG bit14_15 : 2;
+ ULONG bit11_13 : 3;
+ ULONG bit10 : 1;
+ ULONG bit9 : 1;
+ ULONG bit6_8 : 3;
+ ULONG bit0_5 : 6;
+ } x_f2;
+ struct {
+ ULONG bit16_31 : 16;
+ ULONG bit12_15 : 4;
+ ULONG bit0_11 : 12;
+ } x_f3;
+
+#define Xform_RT x_f1.bit6_10
+#define Xform_RS x_f1.bit6_10
+#define Xform_TO x_f1.bit6_10
+#define Xform_FRT x_f1.bit6_10
+#define Xform_FRS x_f1.bit6_10
+#define Xform_BT x_f1.bit6_10
+#define Xform_BF x_f2.bit6_8
+#define Xform_L x_f2.bit10
+#define Xform_RA x_f1.bit11_15
+#define Xform_FRA x_f1.bit11_15
+#define Xform_BFA x_f2.bit11_13
+#define Xform_SR x_f3.bit12_15
+#define Xform_RB x_f1.bit16_20
+#define Xform_NB x_f1.bit16_20
+#define Xform_SH x_f1.bit16_20
+#define Xform_FRB x_f1.bit16_20
+#define Xform_U x_f2.bit16_19
+#define Xform_XO x_f1.bit21_30
+#define Xform_RC x_f1.bit31
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit21_30 : 10;
+ ULONG bit16_20 : 5;
+ ULONG bit11_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } xl_f1;
+ struct {
+ ULONG bit14_31 : 18;
+ ULONG bit11_13 : 3;
+ ULONG bit9_10 : 2;
+ ULONG bit6_8 : 3;
+ ULONG bit0_5 : 6;
+ } xl_f2;
+
+#define XLform_LK xl_f1.bit31
+#define XLform_XO xl_f1.bit21_30
+#define XLform_BB xl_f1.bit16_20
+#define XLform_BA xl_f1.bit11_15
+#define XLform_BI xl_f1.bit11_15
+#define XLform_BFA xl_f2.bit11_13
+#define XLform_BT xl_f1.bit6_10
+#define XLform_BO xl_f1.bit6_10
+#define XLform_BF xl_f2.bit6_8
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit21_30 : 10;
+ ULONG bit11_20 : 10;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } xfx_f1;
+ struct {
+ ULONG bit20_31 : 12;
+ ULONG bit12_19 : 8;
+ ULONG bit6_11 : 6;
+ ULONG bit0_5 : 6;
+ } xfx_f2;
+
+#define XFXform_RT xfx_f1.bit6_10
+#define XFXform_RS xfx_f1.bit6_10
+#define XFXform_spr xfx_f1.bit11_20
+#define XFXform_tbr xfx_f1.bit11_20
+#define XFXform_spr xfx_f1.bit11_20
+#define XFXform_FXM xfx_f2.bit12_19
+#define XFXform_XO xfx_f1.bit21_30
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit21_30 : 10;
+ ULONG bit16_20 : 5;
+ ULONG bit15 : 1;
+ ULONG bit7_14 : 8;
+ ULONG bit6 : 1;
+ ULONG bit0_5 : 6;
+ } xfl_f;
+
+#define XFLform_FLM xfl_f.bit7_14
+#define XFLform_FRB xfl_f.bit16_20
+#define XFLform_XO xfl_f.bit21_30
+#define XFLform_RC xfl_f.bit31
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit30 : 1;
+ ULONG bit21_29 : 9;
+ ULONG bit16_20 : 5;
+ ULONG bit10_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } xs_f;
+
+#define XSform_RS xs_f.bit6_10
+#define XSform_RA xs_f.bit11_15
+#define XSform_sh1 xs_f.bit16_20
+#define XSform_XO xs_f.bit21_29
+#define XSform_sh2 xs_f.bit30
+#define XSform_RC xs_f.bit31
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit22_30 : 9;
+ ULONG bit21 : 1;
+ ULONG bit16_20 : 5;
+ ULONG bit10_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } xo_f;
+
+#define XOform_RT xo_f.bit6_10
+#define XOform_RA xo_f.bit11_15
+#define XOform_RB xo_f.bit16_20
+#define XOform_OE xo_f.bit21
+#define XOform_XO xo_f.bit22_30
+#define XOform_RC xo_f.bit31
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit26_30 : 5;
+ ULONG bit21_25 : 5;
+ ULONG bit16_20 : 5;
+ ULONG bit11_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } a_f;
+
+#define Aform_FRT a_f.bit6_10
+#define Aform_FRA a_f.bit11_15
+#define Aform_FRB a_f.bit16_20
+#define Aform_FRC a_f.bit21_25
+#define Aform_XO a_f.bit26_30
+#define Aform_RC a_f.bit31
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit26_30 : 5;
+ ULONG bit21_25 : 5;
+ ULONG bit16_20 : 5;
+ ULONG bit11_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } m_f;
+
+#define Mform_RS m_f.bit6_10
+#define Mform_RA m_f.bit11_15
+#define Mform_RB m_f.bit16_20
+#define Mform_SH m_f.bit16_20
+#define Mform_MB m_f.bit21_25
+#define Mform_ME m_f.bit26_30
+#define Mform_RC m_f.bit31
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit30 : 1;
+ ULONG bit27_29 : 3;
+ ULONG bit21_26 : 6;
+ ULONG bit16_20 : 5;
+ ULONG bit11_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } md_f;
+
+#define MDform_RS md_f.bit6_10
+#define MDform_RA md_f.bit11_15
+#define MDform_sh1 md_f.bit16_20
+#define MDform_mb md_f.bit21_26
+#define MDform_me md_f.bit21_26
+#define MDform_XO md_f.bit27_29
+#define MDform_sh2 md_f.bit30
+#define MDform_RC md_f.bit31
+
+ struct {
+ ULONG bit31 : 1;
+ ULONG bit27_30 : 4;
+ ULONG bit21_26 : 6;
+ ULONG bit16_20 : 5;
+ ULONG bit11_15 : 5;
+ ULONG bit6_10 : 5;
+ ULONG bit0_5 : 6;
+ } mds_f;
+
+#define MDSform_RS mds_f.bit6_10
+#define MDSform_RA mds_f.bit11_15
+#define MDSform_RB mds_f.bit16_20
+#define MDSform_mb mds_f.bit21_26
+#define MDSform_me mds_f.bit21_26
+#define MDSform_XO mds_f.bit27_30
+#define MDSform_RC mds_f.bit31
+
+} PPC_INSTRUCTION, *PPPC_INSTRUCTION;
+
+//
+// POWERPC PRIMARY AND SECONDARY (EXTENDED) OPCODES
+//
+
+#define TDI_OP 2
+#define TWI_OP 3
+#define MULLI_OP 7
+#define SUBFIC_OP 8
+#define CMPLI_OP 10
+#define CMPI_OP 11
+#define ADDIC_OP 12
+#define ADDIC_RC_OP 13
+#define ADDI_OP 14
+#define ADDIS_OP 15
+#define BC_OP 16
+#define SC_OP 17
+#define B_OP 18
+
+#define X19_OP 19 // Extended ops for primary code 19:
+#define MCRF_OP 0
+#define BCLR_OP 16
+#define CRNOR_OP 33
+#define RFI_OP 50
+#define CRANDC_OP 129
+#define ISYNC_OP 150
+#define CRXOR_OP 193
+#define CRNAND_OP 225
+#define CRAND_OP 257
+#define CREQV_OP 289
+#define CRORC_OP 417
+#define CROR_OP 449
+#define BCCTR_OP 528
+
+#define RLWIMI_OP 20
+#define RLWINM_OP 21
+#define RLWNM_OP 23
+#define ORI_OP 24
+#define ORIS_OP 25
+#define XORI_OP 26
+#define XORIS_OP 27
+#define ANDI_RC_OP 28
+#define ANDIS_RC_OP 29
+
+#define X30_OP 30 // Extended ops for primary code 30:
+#define RLDICL_OP 0
+#define RLDICR_OP 1
+#define RLDIC_OP 2
+#define RLDIMI_OP 3
+#define RLDCL_OP 8
+#define RLDCR_OP 9
+
+#define X31_OP 31 // Extended ops for primary code 31:
+#define CMP_OP 0
+#define TW_OP 4
+#define SUBFC_OP 8
+#define MULHDU_OP 9
+#define ADDC_OP 10
+#define MULHWU_OP 11
+#define MFCR_OP 19
+#define LWARX_OP 20
+#define LDX_OP 21
+#define LWZX_OP 23
+#define SLW_OP 24
+#define CNTLZW_OP 26
+#define SLD_OP 27
+#define AND_OP 28
+#define CMPL_OP 32
+#define SUBF_OP 40
+#define LDUX_OP 53
+#define DCBST_OP 54
+#define LWZUX_OP 55
+#define CNTLZD_OP 58
+#define ANDC_OP 60
+#define TD_OP 68
+#define MULHD_OP 73
+#define MULHW_OP 75
+#define MFMSR_OP 83
+#define LDARX_OP 84
+#define DCBF_OP 86
+#define LBZX_OP 87
+#define NEG_OP 104
+#define LBZUX_OP 119
+#define NOR_OP 124
+#define SUBFE_OP 136
+#define ADDE_OP 138
+#define MTCRF_OP 144
+#define MTMSR_OP 146
+#define STDX_OP 149
+#define STWCX_RC_OP 150
+#define STWX_OP 151
+#define STDUX_OP 181
+#define STWUX_OP 183
+#define SUBFZE_OP 200
+#define ADDZE_OP 202
+#define MTSR_OP 210
+#define STDCX_RC_OP 214
+#define STBX_OP 215
+#define SUBFME_OP 232
+#define MULLD_OP 233
+#define ADDME_OP 234
+#define MULLW_OP 235
+#define MTSRIN_OP 242
+#define DCBTST_OP 246
+#define STBUX_OP 247
+#define ADD_OP 266
+#define DCBT_OP 278
+#define LHZX_OP 279
+#define EQV_OP 284
+#define TLBIE_OP 306
+#define ECIWX_OP 310
+#define LHZUX_OP 311
+#define XOR_OP 316
+#define MFSPR_OP 339
+#define LWAX_OP 341
+#define LHAX_OP 343
+#define TLBIA_OP 370
+#define MFTB_OP 371
+#define LWAUX_OP 373
+#define LHAUX_OP 375
+#define STHX_OP 407
+#define ORC_OP 412
+#define SRADI_OP 413
+#define SLBIE_OP 434
+#define ECOWX_OP 438
+#define STHUX_OP 439
+#define OR_OP 444
+#define DIVDU_OP 457
+#define DIVWU_OP 459
+#define MTSPR_OP 467
+#define DCBI_OP 470
+#define NAND_OP 476
+#define DIVD_OP 489
+#define DIVW_OP 491
+#define SLBIA_OP 498
+#define MCRXR_OP 512
+#define LSWX_OP 533
+#define LWBRX_OP 534
+#define LFSX_OP 535
+#define SRW_OP 536
+#define SRD_OP 539
+#define TLBSYNC_OP 566
+#define LFSUX_OP 567
+#define MFSR_OP 595
+#define LSWI_OP 597
+#define SYNC_OP 598
+#define LFDX_OP 599
+#define LFDUX_OP 631
+#define MFSRIN_OP 659
+#define STSWX_OP 661
+#define STWBRX_OP 662
+#define STFSX_OP 663
+#define STFSUX_OP 695
+#define STSWI_OP 725
+#define STFDX_OP 727
+#define STFDUX_OP 759
+#define LHBRX_OP 790
+#define SRAW_OP 792
+#define SRAD_OP 794
+#define SRAWI_OP 824
+#define EIEIO_OP 854
+#define STHBRX_OP 918
+#define EXTSH_OP 922
+#define EXTSB_OP 954
+#define ICBI_OP 982
+#define STFIWX_OP 983
+#define EXTSW_OP 986
+#define DCBZ_OP 1014
+
+#define LWZ_OP 32
+#define LWZU_OP 33
+#define LBZ_OP 34
+#define LBZU_OP 35
+#define STW_OP 36
+#define STWU_OP 37
+#define STB_OP 38
+#define STBU_OP 39
+#define LHZ_OP 40
+#define LHZU_OP 41
+#define LHA_OP 42
+#define LHAU_OP 43
+#define STH_OP 44
+#define STHU_OP 45
+#define LFS_OP 48
+#define LFSU_OP 49
+#define LFD_OP 50
+#define LFDU_OP 51
+#define STFS_OP 52
+#define STFSU_OP 53
+#define STFD_OP 54
+#define STFDU_OP 55
+
+#define X58_OP 58 // Extended ops for primary code 58:
+#define LD_OP 0
+#define LDU_OP 1
+#define LWA_OP 2
+
+#define X59_OP 59 // Extended ops for primary code 59:
+#define FDIVS_OP 18
+#define FSUBS_OP 20
+#define FADDS_OP 21
+#define FSQRTS_OP 22
+#define FRES_OP 24
+#define FMULS_OP 25
+#define FMSUBS_OP 28
+#define FMADDS_OP 29
+#define FNMSUBS_OP 30
+#define FNMADDS_OP 31
+
+#define X62_OP 62 // Extended ops for primary code 62:
+#define STD_OP 0
+#define STDU_OP 1
+
+#define X63_OP 63 // Extended ops for primary code 63:
+#define FCMPU_OP 0
+#define FRSP_OP 12
+#define FCTIW_OP 14
+#define FCTIWZ_OP 15
+#define FDIV_OP 18
+#define FSUB_OP 20
+#define FADD_OP 21
+#define FSQRT_OP 22
+#define FSEL_OP 23
+#define FMUL_OP 25
+#define FSQRTE_OP 26
+#define FMSUB_OP 28
+#define FMADD_OP 29
+#define FNMSUB_OP 30
+#define FNMADD_OP 31
+#define FCMPO_OP 32
+#define MTFSB1_OP 38
+#define FNEG_OP 40
+#define MCRFS_OP 64
+#define MTFSB0_OP 70
+#define FMR_OP 72
+#define MTFSFI_OP 134
+#define FNABS_OP 136
+#define FABS_OP 264
+#define MFFS_OP 583
+#define MTFSF_OP 711
+#define FCTID_OP 814
+#define FCTIDZ_OP 815
+#define FCFID_OP 846
+
+//
+// Define certain specific instructions
+//
+
+#define SYSTEM_CALL_INSTR 0x44000002L // sc
+#define RETURN_INSTR 0x4E800020L // blr
+#define BREAK_INSTR 0x0FE00000L // break <number>
+#define TRAP_INSTR 0x0C000000L // trap word immediate
+#define NO_OP_INSTR 0x60000000L // ori r.0, r.0, 0
+#define INVALID_INSTR 0x00000000L // all 0's => invalid
+
+//
+// Define specific values for the TO field of the TRAP_INSTR
+//
+
+#define TO_BREAKPOINT 0x03E00000L // Unconditional breakpoint
+#define TO_DIVIDE_BY_ZERO 0x00C00000L // Integer divide by zero
+#define TO_UNCONDITIONAL_DIVIDE_BY_ZERO 0x00E00000L // Unconditional divide
+ // by zero
+
+//
+// IEEE FLOATING POINT VALUE REPRESENTATION
+//
+
+//
+// Define maximum and minimum single and double exponent values.
+//
+
+#define DOUBLE_MAXIMUM_EXPONENT 2047
+#define DOUBLE_MINIMUM_EXPONENT 0
+#define SINGLE_MAXIMUM_EXPONENT 255
+#define SINGLE_MINIMUM_EXPONENT 0
+
+//
+// Define single and double exponent bias values.
+//
+
+#define SINGLE_EXPONENT_BIAS 127
+#define DOUBLE_EXPONENT_BIAS 1023
+
+//
+// Define the largest single and double values;
+//
+
+#define DOUBLE_MAXIMUM_VALUE_LOW 0xffffffff
+#define DOUBLE_MAXIMUM_VALUE_HIGH 0x7fefffff
+#define SINGLE_MAXIMUM_VALUE 0x7f7fffff
+
+//
+// Define single and double quite and signaling Nan values.
+//
+
+#define DOUBLE_NAN_LOW 0xffffffff
+#define DOUBLE_QUIET_NAN 0x7ff7ffff
+#define DOUBLE_SIGNAL_NAN 0x7fffffff
+#define SINGLE_QUIET_NAN 0x7fbfffff
+#define SINGLE_SIGNAL_NAN 0x7fffffff
+
+//
+// Define positive single and double infinity values.
+//
+
+#define DOUBLE_INFINITY_VALUE_LOW 0x0
+#define DOUBLE_INFINITY_VALUE_HIGH 0x7ff00000
+#define SINGLE_INFINITY_VALUE 0x7f800000
+
+//
+// Define rounding modes.
+//
+
+#define ROUND_TO_NEAREST 0
+#define ROUND_TO_ZERO 1
+#define ROUND_TO_PLUS_INFINITY 2
+#define ROUND_TO_MINUS_INFINITY 3
+
+#endif // _PPCINST_
diff --git a/public/sdk/inc/ppcxcpt.tab b/public/sdk/inc/ppcxcpt.tab
new file mode 100644
index 000000000..b947eef53
--- /dev/null
+++ b/public/sdk/inc/ppcxcpt.tab
@@ -0,0 +1,2 @@
+__C_specific_handler
+__jump_unwind
diff --git a/public/sdk/inc/prnsetup.dlg b/public/sdk/inc/prnsetup.dlg
new file mode 100644
index 000000000..a65f3f3ec
--- /dev/null
+++ b/public/sdk/inc/prnsetup.dlg
@@ -0,0 +1,144 @@
+/*++
+
+Copyright (c) 1990-1995, Microsoft Corporation All rights reserved.
+
+Module Name:
+
+ prnsetup.dlg
+
+Abstract:
+
+ This module contains the resource descriptions for the Win32
+ print common dialogs.
+
+Revision History:
+
+--*/
+
+
+
+//
+// Include Files.
+//
+
+#include <dlgs.h>
+
+
+
+
+//
+// Print Dialogs.
+//
+
+PRINTDLGORD DIALOG DISCARDABLE 32, 32, 288, 186
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+ DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Print"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ GROUPBOX "Printer", grp4, 8, 4, 272, 84, WS_GROUP
+ LTEXT "&Name:", stc6, 16, 20, 36, 8
+ COMBOBOX cmb4, 52, 18, 152, 152,
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Properties", psh2, 212, 17, 60, 14, WS_GROUP
+ LTEXT "Status:", stc8, 16, 36, 36, 10, SS_NOPREFIX
+ LTEXT "", stc12, 52, 36, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ LTEXT "Type:", stc7, 16, 48, 36, 10, SS_NOPREFIX
+ LTEXT "", stc11, 52, 48, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ LTEXT "Where:", stc10, 16, 60, 36, 10, SS_NOPREFIX
+ LTEXT "", stc14, 52, 60, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ LTEXT "Comment:", stc9, 16, 72, 36, 10, SS_NOPREFIX
+ LTEXT "", stc13, 52, 72, 156, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ AUTOCHECKBOX "Print to fi&le", chx1, 212, 72, 64, 12, WS_GROUP
+ GROUPBOX "Print range", grp1, 8, 92, 144, 64, WS_GROUP
+ RADIOBUTTON "&All", rad1, 16, 106, 64, 12, WS_GROUP
+ RADIOBUTTON "Pa&ges", rad3, 16, 122, 36, 12
+ RADIOBUTTON "&Selection", rad2, 16, 138, 64, 12
+ RTEXT "&from:", stc2, 52, 124, 20, 8
+ EDITTEXT edt1, 74, 122, 26, 12, WS_GROUP | ES_NUMBER
+ RTEXT "&to:", stc3, 102, 124, 16, 8
+ EDITTEXT edt2, 120, 122, 26, 12, WS_GROUP | ES_NUMBER
+ GROUPBOX "Copies", grp2, 160, 92, 120, 64, WS_GROUP
+ LTEXT "Number of &copies:", stc5, 168, 108, 68, 8
+ EDITTEXT edt3, 240, 106, 32, 12, WS_GROUP | ES_NUMBER
+ ICON "", ico3, 162, 124, 76, 24, WS_GROUP | SS_CENTERIMAGE
+ AUTOCHECKBOX "C&ollate", chx2, 240, 130, 36, 12, WS_GROUP
+ DEFPUSHBUTTON "OK", IDOK, 180, 164, 48, 14, WS_GROUP
+ PUSHBUTTON "Cancel", IDCANCEL, 232, 164, 48, 14
+ PUSHBUTTON "&Help", psh15, 8, 164, 48, 14
+END
+
+
+
+PRNSETUPDLGORD DIALOG DISCARDABLE 32, 32, 288, 178
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+ DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Print Setup"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ GROUPBOX "Printer", grp4, 8, 4, 272, 84, WS_GROUP
+ LTEXT "&Name:", stc6, 16, 20, 36, 8
+ COMBOBOX cmb1, 52, 18, 152, 152,
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Properties", psh2, 212, 17, 60, 14, WS_GROUP
+ LTEXT "Status:", stc8, 16, 36, 36, 10, SS_NOPREFIX
+ LTEXT "", stc12, 52, 36, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ LTEXT "Type:", stc7, 16, 48, 36, 10, SS_NOPREFIX
+ LTEXT "", stc11, 52, 48, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ LTEXT "Where:", stc10, 16, 60, 36, 10, SS_NOPREFIX
+ LTEXT "", stc14, 52, 60, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ LTEXT "Comment:", stc9, 16, 72, 36, 10, SS_NOPREFIX
+ LTEXT "", stc13, 52, 72, 224, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP
+ GROUPBOX "Paper", grp2, 8, 92, 164, 56, WS_GROUP
+ LTEXT "Si&ze:", stc2, 16, 108, 36, 8
+ COMBOBOX cmb2, 52, 106, 112, 112,
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LTEXT "&Source:", stc3, 16, 128, 36, 8
+ COMBOBOX cmb3, 52, 126, 112, 112,
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientation", grp1, 180, 92, 100, 56, WS_GROUP
+ ICON "", ico1, 190, 112, 25, 20, WS_GROUP
+ RADIOBUTTON "P&ortrait", rad1, 224, 106, 52, 12, WS_GROUP | WS_TABSTOP
+ RADIOBUTTON "L&andscape", rad2, 224, 126, 52, 12
+ DEFPUSHBUTTON "OK", IDOK, 180, 156, 48, 14, WS_GROUP
+ PUSHBUTTON "Cancel", IDCANCEL, 232, 156, 48, 14
+ PUSHBUTTON "&Help", psh15, 8, 156, 48, 14
+END
+
+
+
+PAGESETUPDLGORD DIALOG DISCARDABLE 32, 32, 240, 240
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
+ DS_CONTEXTHELP | DS_3DLOOK
+CAPTION "Page Setup"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "", rct1, "Static", SS_WHITERECT | WS_GROUP, 80, 8, 80, 80
+ CONTROL "", rct2, "Static", SS_GRAYRECT | WS_GROUP, 160, 12, 4, 80
+ CONTROL "", rct3, "Static", SS_GRAYRECT | WS_GROUP, 84, 88, 80, 4
+ GROUPBOX "Paper", grp2, 8, 96, 224, 56, WS_GROUP
+ LTEXT "Si&ze:", stc2, 16, 112, 36, 8
+ COMBOBOX cmb2, 64, 110, 160, 160,
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ LTEXT "&Source:", stc3, 16, 132, 36, 8
+ COMBOBOX cmb3, 64, 130, 160, 160,
+ CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP
+ GROUPBOX "Orientation", grp1, 8, 156, 64, 56, WS_GROUP
+ RADIOBUTTON "P&ortrait", rad1, 16, 170, 52, 12, WS_GROUP | WS_TABSTOP
+ RADIOBUTTON "L&andscape", rad2, 16, 190, 52, 12
+ GROUPBOX "Margins", grp4, 80, 156, 152, 56, WS_GROUP
+ LTEXT "&Left:", stc15, 88, 172, 32, 8
+ EDITTEXT edt4, 118, 170, 32, 12, WS_GROUP
+ LTEXT "&Right:", stc16, 164, 172, 32, 8
+ EDITTEXT edt6, 194, 170, 32, 12, WS_GROUP
+ LTEXT "&Top:", stc17, 88, 192, 32, 8
+ EDITTEXT edt5, 118, 190, 32, 12, WS_GROUP
+ LTEXT "&Bottom:", stc18, 164, 192, 32, 8
+ EDITTEXT edt7, 194, 190, 32, 12, WS_GROUP
+ DEFPUSHBUTTON "OK", IDOK, 80, 220, 48, 14, WS_GROUP
+ PUSHBUTTON "Cancel", IDCANCEL, 132, 220, 48, 14
+ PUSHBUTTON "&Printer...", psh3, 184, 220, 48, 14
+ PUSHBUTTON "&Help", psh15, 8, 220, 48, 14
+END
+
+ \ No newline at end of file
diff --git a/public/sdk/inc/propapi.h b/public/sdk/inc/propapi.h
new file mode 100644
index 000000000..d1c6f512a
--- /dev/null
+++ b/public/sdk/inc/propapi.h
@@ -0,0 +1,356 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: propapi.h
+//
+// Contents: Stuff needed to make properties build for Nashville and
+// NT... definitions of Nt property api.
+//
+//
+// History: 07-Aug-95 BillMo Created.
+// 22-Feb-96 MikeHill Fixed the non-WINNT version of
+// PROPASSERTMSG.
+// 09-May-96 MikeHill Update define to allow PropSet names
+// to be 255 characters (from 127).
+// 31-May-96 MikeHill Add OSVersion to RtlCreatePropSet.
+// 18-Jun-96 MikeHill Add OleAut32 wrappers to Unicode callouts.
+// 15-Jul-96 MikeHill - Remvd Win32 SEH exception-related code.
+// - WCHAR=>OLECHAR where applicable.
+// - Added RtlOnMappedStreamEvent
+// - Added Mac versions of PROPASSERT
+// 08-Nov-96 MikeHill Fixed platform-dependent #defines
+//
+//--------------------------------------------------------------------------
+
+
+#ifndef _PROPAPI_H_
+#define _PROPAPI_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// typedef the function prototypes necessary
+// for the UNICODECALLOUTS structure.
+//
+
+typedef UINT (WINAPI FNGETACP)(VOID);
+
+typedef int (WINAPI FNMULTIBYTETOWIDECHAR)(
+ IN UINT CodePage,
+ IN DWORD dwFlags,
+ IN LPCSTR lpMultiByteStr,
+ IN int cchMultiByte,
+ OUT LPWSTR lpWideCharStr,
+ IN int cchWideChar);
+
+typedef int (WINAPI FNWIDECHARTOMULTIBYTE)(
+ IN UINT CodePage,
+ IN DWORD dwFlags,
+ IN LPCWSTR lpWideCharStr,
+ IN int cchWideChar,
+ OUT LPSTR lpMultiByteStr,
+ IN int cchMultiByte,
+ IN LPCSTR lpDefaultChar,
+ IN LPBOOL lpUsedDefaultChar);
+
+typedef BSTR FNSYSALLOCSTRING(
+ OLECHAR FAR* pwsz);
+
+typedef VOID FNSYSFREESTRING(
+ BSTR pwsz);
+
+//
+// The UNICODECALLOUTS structure holds function
+// pointers for routines needed by the property
+// set routines in NTDLL.
+//
+
+typedef struct _UNICODECALLOUTS
+{
+ FNGETACP *pfnGetACP;
+ FNMULTIBYTETOWIDECHAR *pfnMultiByteToWideChar;
+ FNWIDECHARTOMULTIBYTE *pfnWideCharToMultiByte;
+ FNSYSALLOCSTRING *pfnSysAllocString;
+ FNSYSFREESTRING *pfnSysFreeString;
+} UNICODECALLOUTS;
+
+
+//
+// Define the default UNICODECALLOUTS
+// values.
+//
+
+STDAPI_(BSTR)
+PropSysAllocString(OLECHAR FAR* pwsz);
+
+STDAPI_(VOID)
+PropSysFreeString(BSTR bstr);
+
+#define WIN32_UNICODECALLOUTS \
+ GetACP, \
+ MultiByteToWideChar, \
+ WideCharToMultiByte, \
+ PropSysAllocString, \
+ PropSysFreeString
+
+
+// Is this pure NT (the IProp DLL needs to run on Win95)?
+#if defined(WINNT) && !defined(IPROPERTY_DLL)
+
+ // Set the function modifiers
+# define PROPSYSAPI NTSYSAPI
+# define PROPAPI NTAPI
+
+ // How do we free mem allocated in the low-level propset routines?
+# define PropFreeHeap(h, z, p) RtlFreeHeap(h, z, p)
+
+ // Assert implementations
+# define PROPASSERT ASSERT
+# define PROPASSERTMSG ASSERTMSG
+
+ // Generate the default non-simple property stream/storage name
+# define PROPGENPROPERTYNAME(s,n) swprintf ((s), L"prop%lu", (n))
+
+ // Ansi sprintf implementations
+# define PropSprintfA sprintf
+# define PropVsprintfA vsprintf
+
+// Otherwise this is either the IProp DLL (NT, Win95, Mac),
+// or it's the Win95 OLE32build.
+
+#else // #if defined(WINNT) && !defined(IPROPERTY_DLL)
+
+ // Set the function modifiers
+# define PROPSYSAPI
+# define PROPAPI
+
+ // How do we free mem allocated in low-level propset routines?
+# define PropFreeHeap(h, z, p) CoTaskMemFree(p)
+
+ // Assert implementations
+# if DBG==1
+# ifdef _MAC_NODOC
+# define PROPASSERT(f) { if (!(f)) FnAssert(#f, NULL, __FILE__, __LINE__); }
+# define PROPASSERTMSG(szReason, f) { if (!(f)) FnAssert(#f, szReason, __FILE__, __LINE__); }
+# else
+# define PROPASSERT(f) Win4Assert((f))
+# define PROPASSERTMSG(szReason, f) Win4Assert( (szReason && FALSE) || (f))
+# endif
+# else
+# define PROPASSERT(f)
+# define PROPASSERTMSG(szReason, f)
+# endif // #if DBG==1
+
+ // Generate the default non-simple property stream/storage name
+# define PROPGENPROPERTYNAME(s,n) \
+ { \
+ memcpy ((s), OLESTR("prop"), sizeof (OLESTR("prop"))); \
+ ULTOO ((n), &(s)[sizeof("prop") - 1], 10); \
+ }
+
+ // Ansi sprintf implementations
+# ifdef IPROPERTY_DLL
+# define PropSprintfA sprintf
+# define PropVsprintfA vsprintf
+# else
+# define PropSprintfA wsprintfA
+# define PropVsprintfA wvsprintfA
+# endif // #ifdef _MAC_NODOC
+
+#endif // #if defined(WINNT) && !defined(IPROPERTY_DLL) ... #else
+
+
+#ifdef IPROPERTY_DLL
+#define MAX_ULONG ((ULONG) -1)
+#endif
+
+
+#define WC_PROPSET0 ((WCHAR) 0x0005)
+#define OC_PROPSET0 ((OLECHAR) 0x0005)
+
+#define CBIT_BYTE 8
+#define CBIT_GUID (CBIT_BYTE * sizeof(GUID))
+#define CBIT_CHARMASK 5
+
+// Allow for OC_PROPSET0 and a GUID mapped to a 32 character alphabet
+#define CCH_PROPSET (1 + (CBIT_GUID + CBIT_CHARMASK-1)/CBIT_CHARMASK)
+#define CCH_PROPSETSZ (CCH_PROPSET + 1) // allow null
+#define CCH_PROPSETCOLONSZ (1 + CCH_PROPSET + 1) // allow colon and null
+
+// Define the max property name in units of characters
+// (and synonomously in wchars).
+
+#define CCH_MAXPROPNAME 255 // Matches Shell & Office
+#define CCH_MAXPROPNAMESZ (CCH_MAXPROPNAME + 1) // allow null
+#define CWC_MAXPROPNAME CCH_MAXPROPNAME
+#define CWC_MAXPROPNAMESZ CCH_MAXPROPNAMESZ
+
+#define MAX_DOCFILE_ENTRY_NAME 31
+
+//+--------------------------------------------------------------------------
+// Property Access APIs:
+//---------------------------------------------------------------------------
+
+typedef VOID *NTPROP;
+typedef VOID *NTMAPPEDSTREAM;
+typedef VOID *NTMEMORYALLOCATOR;
+
+
+VOID PROPSYSAPI PROPAPI
+RtlSetUnicodeCallouts(
+ IN UNICODECALLOUTS *pUnicodeCallouts);
+
+ULONG PROPSYSAPI PROPAPI
+RtlGuidToPropertySetName(
+ IN GUID const *pguid,
+ OUT OLECHAR aocname[]);
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlPropertySetNameToGuid(
+ IN ULONG cwcname,
+ IN OLECHAR const aocname[],
+ OUT GUID *pguid);
+
+
+// RtlCreatePropertySet Flags:
+
+#define CREATEPROP_READ 0x0000 // request read access (must exist)
+#define CREATEPROP_WRITE 0x0001 // request write access (must exist)
+#define CREATEPROP_CREATE 0x0002 // create (overwrite if exists)
+#define CREATEPROP_CREATEIF 0x0003 // create (open existing if exists)
+#define CREATEPROP_DELETE 0x0004 // delete
+#define CREATEPROP_MODEMASK 0x000f // open mode mask
+
+#define CREATEPROP_NONSIMPLE 0x0010 // Is non-simple propset (in a storage)
+
+
+// RtlCreateMappedStream Flags:
+
+#define CMS_READONLY 0x00000000 // Opened for read-only
+#define CMS_WRITE 0x00000001 // Opened for write access
+#define CMS_TRANSACTED 0x00000002 // Is transacted
+
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlCreatePropertySet(
+ IN NTMAPPEDSTREAM ms, // Nt mapped stream
+ IN USHORT Flags, // NONSIMPLE|*1* of READ/WRITE/CREATE/CREATEIF/DELETE
+ OPTIONAL IN GUID const *pguid, // property set guid (create only)
+ OPTIONAL IN GUID const *pclsid,// CLASSID of propset code (create only)
+ IN NTMEMORYALLOCATOR ma, // caller's memory allocator
+ IN ULONG LocaleId, // Locale Id (create only)
+ OPTIONAL OUT ULONG *pOSVersion,// OS Version field in header.
+ IN OUT USHORT *pCodePage, // IN: CodePage of property set (create only)
+ // OUT: CodePage of property set (always)
+ OUT NTPROP *pnp); // Nt property set context
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlClosePropertySet(
+ IN NTPROP np); // property set context
+
+// *NOTE* RtlOnMappedStreamEvent assumes that the caller has
+// already taken the CPropertySetStream::Lock.
+#define CBSTM_UNKNOWN ((ULONG) -1)
+NTSTATUS PROPSYSAPI PROPAPI
+RtlOnMappedStreamEvent(
+ IN VOID *pv, // property set context (NTPROP)
+ IN VOID *pbuf, // property set buffer
+ IN ULONG cbstm ); // size of underlying stream, or CBSTM_UNKNOWN
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlFlushPropertySet(
+ IN NTPROP np); // property set context
+
+typedef struct _INDIRECTPROPERTY // ip
+{
+ ULONG Index; // Index into Variant and PropId arrays
+ LPOLESTR poszName; // Old indirect name, RtlSetProperties() only
+} INDIRECTPROPERTY;
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlSetProperties(
+ IN NTPROP np, // property set context
+ IN ULONG cprop, // property count
+ IN PROPID pidNameFirst, // first PROPID for new named properties
+ IN PROPSPEC const aprs[], // array of property specifiers
+ OPTIONAL OUT PROPID apid[], // buffer for array of propids
+ OPTIONAL OUT INDIRECTPROPERTY **ppip, // pointer to returned pointer to
+ // MAXULONG terminated array of Indirect
+ // properties w/indexes into aprs & avar
+ OPTIONAL IN PROPVARIANT const avar[]);// array of properties with values
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlQueryProperties(
+ IN NTPROP np, // property set context
+ IN ULONG cprop, // property count
+ IN PROPSPEC const aprs[], // array of property specifiers
+ OPTIONAL OUT PROPID apid[], // buffer for array of propids
+ OPTIONAL OUT INDIRECTPROPERTY **ppip, // pointer to returned pointer to
+ // MAXULONG terminated array of Indirect
+ // properties w/indexes into aprs & avar
+ IN OUT PROPVARIANT *avar, // IN: array of uninitialized PROPVARIANTs,
+ // OUT: may contain pointers to alloc'd memory
+ OUT ULONG *pcpropFound); // count of property values retrieved
+
+
+
+#define ENUMPROP_NONAMES 0x00000001 // return property IDs only
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlEnumerateProperties(
+ IN NTPROP np, // property set context
+ IN ULONG Flags, // flags: No Names (propids only), etc.
+ IN OUT ULONG *pkey, // bookmark; caller set to 0 before 1st call
+ IN OUT ULONG *pcprop, // pointer to property count
+ OPTIONAL OUT PROPSPEC aprs[],// IN: array of uninitialized PROPSPECs
+ // OUT: may contain pointers to alloc'd strings
+ OPTIONAL OUT STATPROPSTG asps[]);
+ // IN: array of uninitialized STATPROPSTGs
+ // OUT: may contain pointers to alloc'd strings
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlQueryPropertyNames(
+ IN NTPROP np, // property set context
+ IN ULONG cprop, // property count
+ IN PROPID const *apid, // PROPID array
+ OUT OLECHAR *aposz[] // OUT pointers to allocated strings
+ );
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlSetPropertyNames(
+ IN NTPROP np, // property set context
+ IN ULONG cprop, // property count
+ IN PROPID const *apid, // PROPID array
+ IN OLECHAR const * const aposz[] // pointers to property names
+ );
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlSetPropertySetClassId(
+ IN NTPROP np, // property set context
+ IN GUID const *pclsid // new CLASSID of propset code
+ );
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlQueryPropertySet(
+ IN NTPROP np, // property set context
+ OUT STATPROPSETSTG *pspss // buffer for property set stat information
+ );
+
+NTSTATUS PROPSYSAPI PROPAPI
+RtlEnumeratePropertySets(
+ IN HANDLE hstg, // structured storage handle
+ IN BOOLEAN fRestart, // restart scan
+ IN OUT ULONG *pcspss, // pointer to count of STATPROPSETSTGs
+ IN OUT GUID *pkey, // bookmark
+ OUT STATPROPSETSTG *pspss // array of STATPROPSETSTGs
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // ifndef _PROPAPI_H_
diff --git a/public/sdk/inc/propset.h b/public/sdk/inc/propset.h
new file mode 100644
index 000000000..e6c065d46
--- /dev/null
+++ b/public/sdk/inc/propset.h
@@ -0,0 +1,105 @@
+//+--------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1993
+//
+// File: propset.h
+//
+// Contents: OLE Appendix B property set structure definitions
+//
+// History: 15-Jul-94 brianb created
+// 15-Aug-94 SethuR revised
+// 22-Feb-96 MikeHill Changed cb in tagENTRY to cch.
+// 28-May-96 MikeHill Changed OSVER_* to OSKIND_*.
+//
+//---------------------------------------------------------------------------
+
+#ifndef _PROPSET_H_
+#define _PROPSET_H_
+
+// CBMAXPROPSETSTREAM must be a power of 2.
+#define CBMAXPROPSETSTREAM (256 * 1024)
+
+#define IsIndirectVarType(vt) \
+ ((vt) == VT_STREAM || \
+ (vt) == VT_STREAMED_OBJECT || \
+ (vt) == VT_STORAGE || \
+ (vt) == VT_STORED_OBJECT)
+
+
+// Defines for the high order WORD of dwOSVer:
+
+#define OSKIND_WINDOWS 0x0000
+#define OSKIND_MACINTOSH 0x0001
+#define OSKIND_WIN32 0x0002
+
+
+typedef struct tagFORMATIDOFFSET // fo
+{
+ FMTID fmtid;
+ DWORD dwOffset;
+} FORMATIDOFFSET;
+
+#define CB_FORMATIDOFFSET sizeof(FORMATIDOFFSET)
+
+
+typedef struct tagPROPERTYSETHEADER // ph
+{
+ WORD wByteOrder; // Always 0xfffe
+ WORD wFormat; // Always 0
+ DWORD dwOSVer; // System version
+ CLSID clsid; // Application CLSID
+ DWORD reserved; // reserved (must be at least 1)
+} PROPERTYSETHEADER;
+
+#define CB_PROPERTYSETHEADER sizeof(PROPERTYSETHEADER)
+#define PROPSET_BYTEORDER 0xFFFE
+
+
+typedef struct tagPROPERTYIDOFFSET // po
+{
+ DWORD propid;
+ DWORD dwOffset;
+} PROPERTYIDOFFSET;
+
+#define CB_PROPERTYIDOFFSET sizeof(PROPERTYIDOFFSET)
+
+
+typedef struct tagPROPERTYSECTIONHEADER // sh
+{
+ DWORD cbSection;
+ DWORD cProperties;
+ PROPERTYIDOFFSET rgprop[1];
+} PROPERTYSECTIONHEADER;
+
+#define CB_PROPERTYSECTIONHEADER FIELD_OFFSET(PROPERTYSECTIONHEADER, rgprop)
+
+
+typedef struct tagSERIALIZEDPROPERTYVALUE // prop
+{
+ DWORD dwType;
+ BYTE rgb[1];
+} SERIALIZEDPROPERTYVALUE;
+
+#define CB_SERIALIZEDPROPERTYVALUE FIELD_OFFSET(SERIALIZEDPROPERTYVALUE, rgb)
+
+
+typedef struct tagENTRY // ent
+{
+ DWORD propid;
+ DWORD cch; // Includes trailing '\0' or L'\0'
+ char sz[1]; // WCHAR if UNICODE CodePage
+} ENTRY;
+
+#define CB_ENTRY FIELD_OFFSET(ENTRY, sz)
+
+
+typedef struct tagDICTIONARY // dy
+{
+ DWORD cEntries;
+ ENTRY rgEntry[1];
+} DICTIONARY;
+
+#define CB_DICTIONARY FIELD_OFFSET(DICTIONARY, rgEntry)
+
+#endif // _PROPSET_H_
diff --git a/public/sdk/inc/propstm.hxx b/public/sdk/inc/propstm.hxx
new file mode 100644
index 000000000..e97ac516b
--- /dev/null
+++ b/public/sdk/inc/propstm.hxx
@@ -0,0 +1,678 @@
+//+--------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1993
+//
+// File: propstm.hxx
+//
+// Contents: property set definitions
+//
+// History: 15-Jul-94 brianb created
+// 15-Aug-94 SethuR revised
+// 22-Feb-96 MikeHill Added several new member functions.
+// 29-Feb-96 MikeHill Removed include of propmac.hxx
+// Moved 2 inlines to propstm.cxx
+// 09-May-96 MikeHill Update _InitSection & _FixSummaryInformation
+// prototypes.
+// 22-May-96 MikeHill Update prototypes for new OSVersion parameter,
+// and for callee-allocated property name buffers.
+// 01-Jul-96 MikeHill - Modified to allow removal of Win32 SEH.
+// - Added byte-swapping support.
+// 08-Nov-96 MikeHill Restore NT4 export signatures.
+//
+//
+// Notes: This implementation of property streams has no notion of
+// sections in a property set.
+//
+//---------------------------------------------------------------------------
+
+#ifndef _PROPSTM_HXX_
+#define _PROPSTM_HXX_
+
+#include <stgvarb.hxx> // CBaseStorageVariant declarations
+#include <propset.h> // Appendix B Property set structure definitions
+
+#ifndef _MAC_NODOC
+#include <ddeml.h> // For CP_WINUNICODE
+#include <objidl.h>
+#endif
+
+#include <propvar.h>
+#include <byteordr.hxx>
+
+typedef enum _PROPOP
+{
+ PROPOP_IGNORE = 1,
+ PROPOP_DELETE = 2,
+ PROPOP_INSERT = 3,
+ PROPOP_MOVE = 4,
+ PROPOP_UPDATE = 5,
+} PROPOP;
+
+typedef struct tagPROPERTY_INFORMATION // pinfo
+{
+ PROPID pid;
+
+#ifdef KERNEL
+ SERIALIZEDPROPERTYVALUE *pprop; // Only the Kernel serializes to temp buf
+#endif
+
+ ULONG cbprop;
+ PROPOP operation;
+
+} PROPERTY_INFORMATION;
+
+#define VT_DICTIONARY (VT_VECTOR | VT_ILLEGALMASKED)
+
+
+
+// Validate the endian flags. Either BIGENDIAN or LITTLEENDIAN, but not
+// both, must be defined as 1.
+
+#if !defined(BIGENDIAN) && !defined(LITTLEENDIAN)
+#define LITTLEENDIAN 1
+#endif
+
+
+
+//+-------------------------------------------------------------------------
+// Class: CMappedStream
+//
+// Purpose: defines the interface for a mapped Stream. This enables us to
+// have multiple implementations of the stream (one kernel mode
+// and multiple user mode implementations) without virtual methods
+// in kernel mode, and just one implementation for parsing the
+// contents of the stream (CPropertySetStream)
+//--------------------------------------------------------------------------
+
+
+
+//+-------------------------------------------------------------------------
+// Class: CMappedStream (user mode implementation)
+//
+// Note: Implemented in CNtMappedStream for native property sets
+// Implemented in CDfMappedStream for DocFile property sets
+//--------------------------------------------------------------------------
+
+class CMappedStream
+{
+public:
+ virtual VOID Open(IN NTPROP np, OUT LONG *phr) = 0;
+ virtual VOID Close(OUT LONG *phr) = 0;
+ virtual VOID ReOpen(IN OUT VOID **ppv, OUT LONG *phr) = 0;
+ virtual VOID Quiesce(VOID) = 0;
+ virtual VOID Map(IN BOOLEAN fCreate, OUT VOID **ppv) = 0;
+ virtual VOID Unmap(IN BOOLEAN fFlush, IN OUT VOID **ppv) = 0;
+ virtual VOID Flush(OUT LONG *phr) = 0;
+
+ virtual ULONG GetSize(OUT LONG *phr) = 0;
+ virtual VOID SetSize(IN ULONG cb, IN BOOLEAN fPersistent, IN OUT VOID **ppv, OUT LONG *phr) = 0;
+ virtual NTSTATUS Lock(IN BOOLEAN fExclusive) = 0;
+ virtual NTSTATUS Unlock(VOID) = 0;
+ virtual VOID QueryTimeStamps(OUT STATPROPSETSTG *pspss, BOOLEAN fNonSimple) const = 0;
+ virtual BOOLEAN QueryModifyTime(OUT LONGLONG *pll) const = 0;
+ virtual BOOLEAN QuerySecurity(OUT ULONG *pul) const = 0;
+
+ virtual BOOLEAN IsWriteable(VOID) const = 0;
+ virtual BOOLEAN IsModified(VOID) const = 0;
+ virtual VOID SetModified(VOID) = 0;
+ virtual HANDLE GetHandle(VOID) const = 0;
+#if DBGPROP
+ virtual BOOLEAN SetChangePending(BOOLEAN fChangePending) = 0;
+ virtual BOOLEAN IsNtMappedStream(VOID) const = 0;
+#endif
+};
+
+
+//+-------------------------------------------------------------------------
+// Class: CStreamChunkList
+//
+// Purpose: Used to support efficient in-place compaction/expansion of
+// property set streams for CPropertySetStorage.
+//--------------------------------------------------------------------------
+
+struct CStreamChunk // scnk
+{
+ ULONG oOld;
+ LONG cbChange;
+};
+
+class CStreamChunkList // scl
+{
+public:
+ CStreamChunkList(ULONG cMaxChunks, CStreamChunk *ascnk);
+
+ CStreamChunk *GetFreeChunk(OUT NTSTATUS *pstatus);
+ CStreamChunk const *GetChunk(ULONG i) const;
+ ULONG Count(VOID) const;
+ VOID SortByStartAddress(VOID);
+ VOID Delete(VOID);
+
+#if DBGPROP
+ VOID AssertCbChangeTotal(
+ CStreamChunk const *pscnk,
+ ULONG cbChangeTotal) const;
+#endif
+
+private:
+ ULONG _cMaxChunks; // elements in _ascnk
+ ULONG _cChunks; // elements allocated from _ascnk
+ CStreamChunk *_ascnk;
+ BOOLEAN _fDelete; // TRUE if _ascnk allocated from heap
+};
+
+
+//+-------------------------------------------------------------------------
+// Class: CPropertySetStream
+//
+// Purpose: class for parsing the contents of a property set stream.
+//--------------------------------------------------------------------------
+
+#ifdef KERNEL
+#define _MSTM(fn) _mstm.fn
+#else
+#define _MSTM(fn) _pmstm->fn
+#endif
+
+#ifdef KERNEL
+#define CPSS_PROPHEADER 0x01 // has property header
+#endif
+
+#define CPSS_DOWNLEVEL 0x02 // Downlevel property set.
+#define CPSS_PACKEDPROPERTIES 0x04 // Packed property values
+#define CPSS_DOCUMENTSUMMARYINFO 0x08 // DocumentSummaryInfo propset
+#define CPSS_USERDEFINEDPROPERTIES 0x10 // DocumentSummaryInfo: second section
+#define CPSS_MULTIPLESECTIONS 0x20 // Multiple property sections
+#define CPSS_USERDEFINEDDELETED 0x40 // second section deleted
+#define CPSS_VARIANTVECTOR 0x80 // Only for recursion
+
+
+typedef enum tagLOADSTATE
+{
+ LOADSTATE_FAIL = 0, // load failed
+ LOADSTATE_DONE = 1, // load succeeded
+ LOADSTATE_BADFMTID = 2, // fmtid mismatch
+ LOADSTATE_USERDEFINEDNOTFOUND = 3, // user defined section missing
+ LOADSTATE_USERDEFINEDDELETE = 4, // delete user defined section
+} LOADSTATE;
+
+
+typedef enum tagPATCHOP
+{
+ PATCHOP_COMPUTESIZE = 0, // just compute expanded size
+ PATCHOP_ALIGNLENGTHS = 1, // just align string lengths
+ PATCHOP_EXPAND = 2, // expand property in-place
+} PATCHOP;
+
+
+// Create a macro that tells us the type
+// of OLECHARs.
+
+#ifdef OLE2ANSI
+#define OLECHAR_IS_UNICODE FALSE
+#else
+#define OLECHAR_IS_UNICODE TRUE
+#endif
+
+// IsOLECHARString calls IsUnicodeString or IsAnsiString,
+// whichever is appropriate for this compilation.
+
+#if DBGPROP
+ inline BOOLEAN IsOLECHARString( OLECHAR const *posz, ULONG cb )
+ {
+ #if OLECHAR_IS_UNICODE
+ return( IsUnicodeString( posz, cb ));
+ #else
+ return( IsAnsiString( posz, cb ));
+ #endif
+ }
+#endif
+
+
+class CPropertySetStream
+{
+public:
+ CPropertySetStream(
+ IN USHORT Flags, // NONSIMPLE|*1* of READ/WRITE/CREATE/CREATEIF/DELETE
+ IN CMappedStream *pmstm, // mapped stream implementation
+ IN PMemoryAllocator *pma // caller's memory allocator
+ );
+
+
+ VOID Close(OUT NTSTATUS *pstatus);
+ VOID SetValue(
+ IN ULONG cprop,
+ OPTIONAL IN OUT INDIRECTPROPERTY **ppip,
+ IN PROPVARIANT const avar[],
+ IN PROPERTY_INFORMATION *ppinfo,
+ OUT NTSTATUS *pstatus);
+
+ SERIALIZEDPROPERTYVALUE const *GetValue(IN PROPID pid, OUT ULONG *pcbprop,
+ OUT NTSTATUS *pstatus);
+
+ PROPID QueryPropid(IN OLECHAR const *poszName, OUT NTSTATUS *pstatus);
+ USHORT GetCodePage(VOID) const { return(_CodePage); }
+
+#if DBGPROP
+ VOID Validate(OUT NTSTATUS *pstatus);
+#else
+ VOID Validate(OUT NTSTATUS *pstatus) const { *pstatus = STATUS_SUCCESS; }
+#endif
+
+ BOOLEAN IsModified(VOID) const { return(_MSTM(IsModified)()); }
+ NTSTATUS Lock(IN BOOLEAN fExclusive) { return(_MSTM(Lock)(fExclusive)); }
+ NTSTATUS Unlock(VOID) { return(_MSTM(Unlock)()); }
+ VOID Flush(OUT NTSTATUS *pstatus)
+ {
+ PROPASSERT(PROPSET_BYTEORDER == _pph->wByteOrder);
+ _MSTM(Flush)(pstatus);
+ PROPASSERT(PROPSET_BYTEORDER == _pph->wByteOrder);
+ }
+
+
+ VOID Open(
+ OPTIONAL IN GUID const *pfmtid, // property set fmtid (create or Word95)
+ OPTIONAL IN GUID const *pclsid, // CLASSID of propset code (create only)
+ IN ULONG LocaleId, // Locale Id (create only)
+ OPTIONAL OUT ULONG *pOSVersion, // OS Version field in the propset header
+ IN USHORT CodePage, // CodePage of propset (create only)
+ OUT NTSTATUS *pstatus); // Return code.
+ ULONG ReOpen(OUT NTSTATUS *pstatus);
+
+ // Property Dictionary Lookup and Manipulation.
+ BOOLEAN EnumeratePropids(
+ IN OUT ULONG *pkey,
+ IN OUT ULONG *pcprop,
+ OUT PROPID *apid,
+ OUT NTSTATUS *pstatus);
+
+ OLECHAR *DuplicatePropertyName(
+ IN OLECHAR const *poszName,
+ IN ULONG cbName,
+ OUT NTSTATUS *pstatus) const;
+
+ BOOLEAN QueryPropertyNameBuf(
+ IN PROPID pid,
+ OUT OLECHAR *aocName,
+ IN OUT ULONG *pcbName,
+ OUT NTSTATUS *pstatus);
+
+ BOOLEAN QueryPropertyNames(
+ IN ULONG cprop,
+ IN PROPID const *apid,
+ OUT OLECHAR *aposz[],
+ OUT NTSTATUS *pstatus);
+
+ VOID SetPropertyNames(
+ IN ULONG cprop,
+ IN PROPID const *apid,
+ IN OPTIONAL OLECHAR const * const aposz[],
+ OUT NTSTATUS *pstatus);
+
+ VOID QueryPropertySet(OUT STATPROPSETSTG *pspss, OUT NTSTATUS *pstatus) const;
+ VOID SetClassId(IN GUID const *pclsid, OUT NTSTATUS *pstatus);
+ HANDLE GetHandle(VOID) const { return(_MSTM(GetHandle)()); }
+ PMemoryAllocator *GetAllocator(VOID) const { return(_pma); }
+
+ VOID ByteSwapHeaders( IN PROPERTYSETHEADER *psh,
+ IN ULONG cbstm,
+ OUT NTSTATUS *pstatus );
+
+ // Convert a character count to a byte count based on the _CodePage
+
+ ULONG CCh2CB( ULONG cch ) const
+ {
+ return( _CodePage == CP_WINUNICODE
+ ? cch * sizeof( WCHAR )
+ : cch * sizeof( CHAR )
+ );
+ }
+
+ // Convert a byte count to a character count based on the _CodePage
+ // If for some reason the given byte-count is odd, the return
+ // value won't include that last half-character.
+
+ ULONG CB2CCh( ULONG cb ) const
+ {
+ return( _CodePage == CP_WINUNICODE
+ ? cb / sizeof( WCHAR )
+ : cb / sizeof( CHAR )
+ );
+ }
+
+
+private:
+
+ // Private methods.
+
+ VOID _Create(
+ IN GUID const *pfmtid,
+ OPTIONAL IN GUID const *pclsid,
+ IN ULONG LocaleId,
+ IN USHORT CodePage,
+ IN LOADSTATE LoadState,
+ OUT NTSTATUS *pstatus);
+ BOOLEAN _HasPropHeader(VOID) const { return(TRUE); }
+ BOOLEAN _CreateUserDefinedSection(
+ IN LOADSTATE LoadState,
+ IN ULONG LocaleId,
+ OUT NTSTATUS *pstatus);
+ VOID _InitSection(
+ IN FORMATIDOFFSET *pfo,
+ IN ULONG LocaleId,
+ IN BOOL fCreateDictionary );
+ VOID _FixSummaryInformation(IN OUT ULONG *pcbstm, OUT NTSTATUS *pstatus);
+ VOID _FixPackedPropertySet(OUT NTSTATUS *pstatus);
+
+ BOOLEAN _FixDocPartsVector(
+ IN PATCHOP PatchOp,
+ IN OUT SERIALIZEDPROPERTYVALUE *pprop,
+ OUT ULONG *pcbprop);
+ BOOLEAN _FixDocPartsElements(
+ IN PATCHOP PatchOp,
+ IN ULONG cString,
+ OUT VOID *pvDst,
+ IN VOID UNALIGNED const *pvSrc,
+ OUT ULONG *pcbprop);
+
+ BOOLEAN _FixHeadingPairVector(
+ IN PATCHOP PatchOp,
+ IN OUT SERIALIZEDPROPERTYVALUE *pprop,
+ OUT ULONG *pcbprop);
+ BOOLEAN _FixHeadingPairElements(
+ IN PATCHOP PatchOp,
+ IN ULONG cPairs,
+ OUT SERIALIZEDPROPERTYVALUE *ppropDst,
+ IN SERIALIZEDPROPERTYVALUE UNALIGNED const *ppropSrc,
+ OUT ULONG *pcbprop);
+
+ BOOLEAN _IsMapped(VOID) const { return(_pph != NULL); }
+ LOADSTATE _LoadHeader(OPTIONAL IN GUID const *pfmtid, IN BYTE Mode,
+ OUT NTSTATUS *pstatus);
+
+ PROPERTYSECTIONHEADER *_LoadPropertyOffsetPointers(
+ OUT PROPERTYIDOFFSET **pppo,
+ OUT PROPERTYIDOFFSET **pppoMax,
+ OUT NTSTATUS *pstatus);
+
+ SERIALIZEDPROPERTYVALUE *_LoadProperty(IN PROPID pid, OUT ULONG *pcbprop,
+ OUT NTSTATUS *pstatus);
+ PROPERTYSECTIONHEADER *_GetSectionHeader(VOID) const;
+ VOID _SearchForCodePage( OUT NTSTATUS *pstatus);
+ PROPERTYSECTIONHEADER *_GetSectionHeader(IN ULONG iSection, OUT NTSTATUS *pstatus);
+ FORMATIDOFFSET *_GetFormatidOffset(IN ULONG iSection) const;
+
+ VOID *_MapOffsetToAddress(IN ULONG oOffset) const;
+ ULONG _MapAddressToOffset(IN VOID const *pvAddr) const;
+
+ VOID *_MapAbsOffsetToAddress(IN ULONG oAbsolute) const;
+ ULONG _MapAddressToAbsOffset(IN VOID const *pvAddr) const;
+
+ ULONG _GetNewOffset(
+ IN CStreamChunkList const *pscl,
+ IN ULONG oOld) const;
+
+ ULONG _DictionaryEntryLength(
+ IN ENTRY UNALIGNED const * pent ) const;
+
+
+ ULONG _DictionaryLength(
+ IN DICTIONARY const *pdy,
+ IN ULONG cbbuf,
+ OUT NTSTATUS *pstatus) const;
+
+ ENTRY UNALIGNED
+ *_NextDictionaryEntry(
+ IN ENTRY UNALIGNED const * pent ) const;
+
+ ULONG _CountFreePropertyOffsets(OUT NTSTATUS *pstatus);
+
+ VOID _DeleteMovePropertyOffsets(
+ IN PROPERTY_INFORMATION const *apinfo,
+ IN ULONG cprop,
+ OUT NTSTATUS *pstatus);
+
+ VOID _UpdatePropertyOffsets(
+ IN CStreamChunkList const *pscl,
+ OUT NTSTATUS *pstatus);
+
+ VOID _InsertMovePropertyOffsets(
+ IN PROPERTY_INFORMATION const *apinfo,
+ IN ULONG cprop,
+ IN ULONG oInsert,
+ IN ULONG cpoReserve,
+ OUT NTSTATUS *pstatus);
+
+ VOID _CompactStream(IN CStreamChunkList const *pscl);
+
+ VOID _CompactChunk(
+ IN CStreamChunk const *pscnk,
+ IN LONG cbChangeTotal,
+ IN ULONG oOldNext);
+
+ VOID _PatchSectionOffsets(LONG cbChange);
+
+ ULONG _ComputeMinimumSize(ULONG cbstm, OUT NTSTATUS *pstatus);
+#if DBGPROP
+ VOID _ValidateStructure(OUT NTSTATUS *pstatus);
+ VOID _ValidateProperties(OUT NTSTATUS *pstatus) const;
+ VOID _ValidateDictionary(OUT NTSTATUS *pstatus);
+ VOID _StatusCorruption(char *szReason, OUT NTSTATUS *pstatus) const;
+#else
+ VOID _StatusCorruption(OUT NTSTATUS *pstatus) const;
+#endif
+ VOID _SetModified(VOID) { _MSTM(SetModified)(); }
+
+#if DBGPROP
+public: // public for fnEntryNameCompare only!
+#endif
+ BOOLEAN _ComparePropertyNames(
+ IN VOID const *pvName1,
+ IN VOID const *pvName2,
+ IN BOOL fSameByteOrder,
+ IN ULONG cbName) const;
+#if DBGPROP
+private:
+#endif
+
+ BOOLEAN _PropertyNameLength(
+ IN VOID const *pvName,
+ OUT ULONG *pcbName) const;
+
+
+ VOID _MultiByteToWideChar(
+ IN CHAR const *pch,
+ IN ULONG cb,
+ IN USHORT CodePage,
+ OUT WCHAR **ppwc,
+ OUT ULONG *pcb,
+ OUT NTSTATUS *pstatus);
+
+ VOID _OLECHARToWideChar(
+ IN OLECHAR const *poc,
+ IN ULONG cb,
+ IN USHORT CodePage,
+ OUT WCHAR **ppwc,
+ OUT ULONG *pcb,
+ OUT NTSTATUS *pstatus)
+ {
+ PROPASSERT( sizeof(OLECHAR) == sizeof(CHAR) );
+
+ // Since OLECHAR may be MultiByte or WideChar for this
+ // compilation, explicitely cast 'poc' to a CHAR* to prevent
+ // a compilation error.
+
+ _MultiByteToWideChar( (CHAR*) poc, cb, CodePage, ppwc, pcb, pstatus );
+ }
+
+ VOID _MultiByteToOLECHAR(
+ IN CHAR const *pch,
+ IN ULONG cb,
+ IN USHORT CodePage,
+ OUT OLECHAR **ppoc,
+ OUT ULONG *pcb,
+ OUT NTSTATUS *pstatus)
+ {
+ PROPASSERT( sizeof(OLECHAR) == sizeof(WCHAR) );
+
+ // Since OLECHAR may be MultiByte or WideChar for this
+ // compilation, explicitely cast 'ppoc' to a WCHAR** to prevent
+ // a compilation error.
+
+ _MultiByteToWideChar( pch, cb, CodePage, (WCHAR**)ppoc, pcb, pstatus );
+ }
+
+ VOID _WideCharToMultiByte(
+ IN WCHAR const *pwc,
+ IN ULONG cch,
+ IN USHORT CodePage,
+ OUT CHAR **ppch,
+ OUT ULONG *pcb,
+ OUT NTSTATUS *pstatus);
+
+ VOID _OLECHARToMultiByte(
+ IN OLECHAR const *poc,
+ IN ULONG cch,
+ IN USHORT CodePage,
+ OUT CHAR **ppch,
+ OUT ULONG *pcb,
+ OUT NTSTATUS *pstatus)
+ {
+ PROPASSERT( sizeof(OLECHAR) == sizeof(WCHAR) );
+
+ // Since OLECHAR may be MultiByte or WideChar for this
+ // compilation, explicitely cast 'poc' to a WCHAR* to prevent
+ // a compilation error.
+
+ _WideCharToMultiByte( (WCHAR*) poc, cch, CodePage, ppch, pcb, pstatus );
+ }
+
+ VOID _WideCharToOLECHAR(
+ IN WCHAR const *pwc,
+ IN ULONG cch,
+ IN USHORT CodePage,
+ OUT OLECHAR **ppoc,
+ OUT ULONG *pcb,
+ OUT NTSTATUS *pstatus)
+ {
+ PROPASSERT( sizeof(OLECHAR) == sizeof(CHAR) );
+
+ // Since OLECHAR may be MultiByte or WideChar for this
+ // compilation, explicitely cast 'ppoc' to a CHAR** to prevent
+ // a compilation error.
+
+ _WideCharToMultiByte( pwc, cch, CodePage, (CHAR**) ppoc, pcb, pstatus );
+ }
+
+
+ PROPERTYSETHEADER *_pph;
+ ULONG _oSection;
+ ULONG _cSection;
+ USHORT _CodePage;
+ BYTE _Flags;
+ BYTE _State;
+ ULONG _cbTail;
+ PMemoryAllocator *_pma;
+ CMappedStream *_pmstm; // user mode: replacable virtual class
+};
+
+
+#ifdef WINNT
+VOID CopyPropertyValue(
+ IN OPTIONAL SERIALIZEDPROPERTYVALUE const *pprop,
+ IN ULONG cb,
+ OUT SERIALIZEDPROPERTYVALUE *ppropDst,
+ OUT ULONG *pcb);
+
+ULONG PropertyLengthAsVariant(
+ IN SERIALIZEDPROPERTYVALUE const *pprop,
+ IN ULONG cbprop,
+ IN USHORT CodePage,
+ IN BYTE flags);
+
+ULONG PropertyLengthAsVariantNoEH( // No NT Exception Handling version
+ IN SERIALIZEDPROPERTYVALUE const *pprop,
+ IN ULONG cbprop,
+ IN USHORT CodePage,
+ IN BYTE flags,
+ OUT NTSTATUS *pstatus);
+
+#endif
+
+ULONG PropertyLength(
+ IN SERIALIZEDPROPERTYVALUE const *pprop,
+ IN ULONG cbbuf,
+ IN BYTE flags);
+
+ULONG PropertyLengthNoEH( // No NT Exception Handling version
+ IN SERIALIZEDPROPERTYVALUE const *pprop,
+ IN ULONG cbbuf,
+ IN BYTE flags,
+ OUT NTSTATUS *pstatus);
+
+
+
+// ------------
+// PBS Routines
+// ------------
+
+// PBS routines (Property Byte Swap) perform specialized byte-swapping
+// in the big-endian build, and do nothing in the little-endian
+// build (in which case they are inlined).
+
+#ifdef BIGENDIAN
+
+VOID PBSCopy( OUT VOID *pvDest,
+ IN VOID const *pvSource,
+ IN ULONG cbCopy,
+ IN LONG cbByteSwap );
+
+VOID PBSAllocAndCopy( OUT VOID **ppvDest,
+ IN VOID const *pvSource,
+ ULONG cbSize,
+ LONG cbByteSwap,
+ OUT NTSTATUS *pstatus);
+
+VOID PBSInPlaceAlloc( IN OUT WCHAR** ppwszResult,
+ OUT WCHAR** ppwszBuffer,
+ OUT NTSTATUS *pstatus );
+
+VOID PBSBuffer( IN OUT VOID *pv,
+ IN ULONG cbSize,
+ IN ULONG cbByteSwap );
+
+#else // Little-endian build
+
+inline VOID PBSCopy( OUT VOID *pvDest,
+ IN VOID const *pvSource,
+ IN ULONG cbCopy,
+ IN LONG cbByteSwap )
+{
+}
+
+inline VOID PBSAllocAndCopy( OUT VOID **ppvDest,
+ IN VOID const *pvSource,
+ ULONG cbSize,
+ LONG cbByteSwap,
+ OUT NTSTATUS *pstatus)
+{
+ *pstatus = STATUS_SUCCESS;
+}
+
+inline VOID PBSInPlaceAlloc( IN OUT WCHAR** ppwszResult,
+ OUT WCHAR** ppwszBuffer,
+ OUT NTSTATUS *pstatus )
+{
+ *pstatus = STATUS_SUCCESS;
+}
+
+inline VOID PBSBuffer( IN OUT VOID *pv,
+ IN ULONG cbSize,
+ IN ULONG cbByteSwap )
+{
+}
+
+#endif // #ifdef BIGENDIAN ... #else
+
+
+#endif // _PROPSTM_HXX_
diff --git a/public/sdk/inc/propvar.h b/public/sdk/inc/propvar.h
new file mode 100644
index 000000000..fb9dd0418
--- /dev/null
+++ b/public/sdk/inc/propvar.h
@@ -0,0 +1,227 @@
+//+--------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1993
+//
+// File: propvar.h
+//
+// Contents: PROPVARIANT manipulation code
+//
+// History: 15-Aug-95 vich created
+// 01-Jul-96 MikeHill Updated to allow Win32 SEH removal
+// 08-Nov-96 MikeHill Restore NT4 export signatures.
+//
+//---------------------------------------------------------------------------
+
+#ifndef _PROPVAR_H_
+#define _PROPVAR_H_
+
+#include <debnot.h>
+#include <propset.h>
+
+SERIALIZEDPROPERTYVALUE *
+RtlConvertVariantToProperty(
+ IN PROPVARIANT const *pvar,
+ IN USHORT CodePage,
+ OUT SERIALIZEDPROPERTYVALUE *pprop,
+ IN OUT ULONG *pcb,
+ IN PROPID pid,
+ IN BOOLEAN fVariantVector,
+ OPTIONAL OUT ULONG *pcIndirect);
+
+SERIALIZEDPROPERTYVALUE *
+RtlConvertVariantToPropertyNoEH( // No NT Exception Handling version
+ IN PROPVARIANT const *pvar,
+ IN USHORT CodePage,
+ OUT SERIALIZEDPROPERTYVALUE *pprop,
+ IN OUT ULONG *pcb,
+ IN PROPID pid,
+ IN BOOLEAN fVariantVector,
+ OPTIONAL OUT ULONG *pcIndirect,
+ OUT NTSTATUS *pstatus);
+
+BOOLEAN
+RtlConvertPropertyToVariant(
+ IN SERIALIZEDPROPERTYVALUE const *pprop,
+ IN USHORT CodePage,
+ OUT PROPVARIANT *pvar,
+ IN PMemoryAllocator *pma);
+
+BOOLEAN
+RtlConvertPropertyToVariantNoEH( // No NT Exception Handling version
+ IN SERIALIZEDPROPERTYVALUE const *pprop,
+ IN USHORT CodePage,
+ OUT PROPVARIANT *pvar,
+ IN PMemoryAllocator *pma,
+ OUT NTSTATUS *pstatus);
+
+#ifndef KERNEL
+VOID
+CleanupVariants(
+ IN PROPVARIANT *pvar,
+ IN ULONG cprop,
+ IN PMemoryAllocator *pma);
+#endif
+
+#if DBGPROP
+BOOLEAN IsUnicodeString(WCHAR const *pwszname, ULONG cb);
+BOOLEAN IsAnsiString(CHAR const *pszname, ULONG cb);
+#endif
+
+
+//+--------------------------------------------------------------------------
+// Function: SignalOverflow, SignalInvalidParameter, SignalStatus
+//
+// Synopsis: ASSERT and raise data corrupt/overflow/specified error
+//
+// Arguments: [szReason] -- string explanation
+// [Status] -- Status to raise (SignalStatus only)
+//
+// Returns: None
+//+--------------------------------------------------------------------------
+
+
+#define StatusOverflow(pstatus, szReason) \
+ *(pstatus) = STATUS_BUFFER_OVERFLOW; \
+ TraceStatus(szReason)
+
+#define StatusAccessDenied(pstatus, szReason) \
+ *(pstatus) = STATUS_ACCESS_DENIED; \
+ TraceStatus(szReason);
+
+#define StatusInvalidParameter(pstatus, szReason) \
+ *(pstatus) = STATUS_INVALID_PARAMETER; \
+ TraceStatus(szReason);
+
+#define StatusNoMemory(pstatus, szReason) \
+ *(pstatus) = STATUS_INSUFFICIENT_RESOURCES;\
+ TraceStatus(szReason);
+
+#define StatusDiskFull(pstatus, szReason) \
+ *(pstatus) = STATUS_DISK_FULL; \
+ TraceStatus(szReason);
+
+#define StatusError(pstatus, szReason, Status) \
+ *(pstatus) = Status; \
+ TraceStatus(szReason);
+
+#ifdef KERNEL
+#define StatusKBufferOverflow(pstatus, szReason) StatusOverflow(pstatus, szReason)
+#else
+#define StatusKBufferOverflow(pstatus, szReason) StatusNoMemory(pstatus, szReason)
+#endif
+
+
+#ifdef KERNEL
+#define KERNELSELECT(k, u) k
+#else
+#define KERNELSELECT(k, u) u
+#endif
+
+#define DBGPROPASSERT KERNELSELECT(DBGPROP, DBG)
+
+#if DBGPROPASSERT
+#define TraceStatus(szReason) \
+ { \
+ DebugTrace(0, DEBTRACE_ERROR, (szReason "\n")); \
+ PROPASSERTMSG(szReason, !(DebugLevel & DEBTRACE_WARN)); \
+ }
+
+
+#else
+#define TraceStatus(szReason)
+#endif
+
+
+
+#define AssertVarField(field, cb) \
+ PROPASSERT(FIELD_OFFSET(PROPVARIANT, iVal) == FIELD_OFFSET(PROPVARIANT, field) && \
+ sizeof(((PROPVARIANT *) 0)->field) == (cb))
+
+#define AssertVarVector(field, cbElem) \
+ PROPASSERT(FIELD_OFFSET(PROPVARIANT, cai.cElems) == \
+ FIELD_OFFSET(PROPVARIANT, field.cElems) && \
+ FIELD_OFFSET(PROPVARIANT, cai.pElems) == \
+ FIELD_OFFSET(PROPVARIANT, field.pElems) && \
+ sizeof(((PROPVARIANT *) 0)->field.pElems[0]) == (cbElem))
+
+#define AssertByteField(field) AssertVarField(field, sizeof(BYTE))
+#define AssertShortField(field) AssertVarField(field, sizeof(SHORT))
+#define AssertLongField(field) AssertVarField(field, sizeof(LONG))
+#define AssertLongLongField(field) AssertVarField(field, sizeof(LONGLONG))
+#define AssertStringField(field) AssertVarField(field, sizeof(VOID *))
+
+#define AssertByteVector(field) AssertVarVector(field, sizeof(BYTE))
+#define AssertShortVector(field) AssertVarVector(field, sizeof(SHORT))
+#define AssertLongVector(field) AssertVarVector(field, sizeof(LONG))
+#define AssertLongLongVector(field) AssertVarVector(field, sizeof(LONGLONG))
+#define AssertStringVector(field) AssertVarVector(field, sizeof(VOID *))
+#define AssertVariantVector(field) AssertVarVector(field, sizeof(PROPVARIANT))
+
+
+#define BSTRLEN(bstrVal) *((ULONG *) bstrVal - 1)
+
+
+//+-------------------------------------------------------------------
+// Class: CBufferAllocator, private
+//
+// Synopsis: allocation from a buffer
+//
+// Notes: The Summary catalog APIs use a single buffer to serialize row
+// values on input and deserialize them on output. This class
+// encapsulates the memory allocation routines for these APIs.
+//--------------------------------------------------------------------
+
+class CBufferAllocator : public PMemoryAllocator
+{
+public:
+ inline CBufferAllocator(ULONG cbBuffer, VOID *pvBuffer)
+ {
+ _cbFree = cbBuffer;
+ _pvCur = _pvBuffer = pvBuffer;
+#if _X86_ // stack variables on x86 are not aligned
+ PROPASSERT(((ULONG) _pvCur & (sizeof(LONG) - 1)) == 0);
+#else // RISC
+ PROPASSERT(((ULONG) _pvCur & (sizeof(LONGLONG) - 1)) == 0);
+#endif // X86/RISC
+ }
+
+ VOID *Allocate(ULONG cbSize);
+ VOID Free(VOID *pv) { }
+
+ inline ULONG GetFreeSize(VOID) { return(_cbFree); }
+
+private:
+ ULONG _cbFree;
+ VOID *_pvCur;
+ VOID *_pvBuffer;
+};
+
+//+-------------------------------------------------------------------
+// Member: CBufferAllocator::Allocate, private
+//
+// Synopsis: allocation from a buffer
+//
+// Arguments: [cb] -- Count of bytes to be allocated.
+//
+// Returns: pointer to 'allocated' memory -- NULL if no space left
+//--------------------------------------------------------------------
+
+#define DEFINE_CBufferAllocator__Allocate \
+VOID * \
+CBufferAllocator::Allocate(ULONG cb) \
+{ \
+ VOID *pv; \
+ \
+ cb = (cb + sizeof(LONGLONG) - 1) & ~(sizeof(LONGLONG) - 1); \
+ if (cb > _cbFree) \
+ { \
+ return(NULL); \
+ } \
+ pv = _pvCur; \
+ _pvCur = (BYTE *) _pvCur + cb; \
+ _cbFree -= cb; \
+ return(pv); \
+}
+
+#endif // !_PROPVAR_H_
diff --git a/public/sdk/inc/provapi.h b/public/sdk/inc/provapi.h
new file mode 100644
index 000000000..c8ead9651
--- /dev/null
+++ b/public/sdk/inc/provapi.h
@@ -0,0 +1,248 @@
+//+-------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1993 - 1994.
+//
+// File: provapi.h
+//
+// Contents: public provider independent access control header file
+//
+// History: 8-94 Created DaveMont
+//
+//--------------------------------------------------------------------
+#ifndef __PROVIDER_INDEPENDENT_ACCESS__
+#define __PROVIDER_INDEPENDENT_ACCESS__
+
+#include <windows.h>
+#include <accctrl.h>
+#define PRESUME_KEY PVOID
+
+//--------------------------------------------------------------------
+//
+// access request format
+//
+//--------------------------------------------------------------------
+typedef struct _PROV_ACCESS_REQUEST
+{
+ DWORD ulAccessRights;
+ LPTSTR TrusteeName;
+} PROV_ACCESS_REQUEST, *PPROV_ACCESS_REQUEST;
+
+//--------------------------------------------------------------------
+//
+// returned by GetExplicitAccessRights
+//
+//--------------------------------------------------------------------
+typedef struct _PROV_EXPLICIT_ACCESS
+{
+ DWORD ulAccessRights;
+ ACCESS_MODE ulAccessMode;
+ DWORD ulInheritance;
+ LPTSTR TrusteeName;
+} PROV_EXPLICIT_ACCESS, *PPROV_EXPLICIT_ACCESS;
+//--------------------------------------------------------------------
+//
+// Object type definition
+//
+//--------------------------------------------------------------------
+typedef enum _PROV_OBJECT_TYPE
+{
+ PROV_FILE_OBJECT = 1,
+ PROV_SERVICE,
+ PROV_PRINTER,
+ PROV_REGISTRY_KEY,
+ PROV_LMSHARE,
+ PROV_OLE_OBJECT,
+ PROV_PROVIDER_DEFINED
+} PROV_OBJECT_TYPE, *PPROV_OBJECT_TYPE;
+
+
+//+-------------------------------------------------------------------------
+#ifdef __cplusplus
+extern "C" {
+#endif
+//+-------------------------------------------------------------------------
+// provacc.cxx
+//+-------------------------------------------------------------------------
+WINAPI
+GrantAccessRightsW( IN LPWSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN ULONG cCountOfAccessRequests,
+ IN PPROV_ACCESS_REQUEST pListOfAccessRequests);
+WINAPI
+GrantAccessRightsA( IN LPSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN ULONG cCountOfAccessRequests,
+ IN PPROV_ACCESS_REQUEST pListOfAccessRequests);
+#ifdef UNICODE
+#define GrantAccessRights GrantAccessRightsW
+#else
+#define GrantAccessRights GrantAccessRightsA
+#endif // UNICODE
+WINAPI
+ReplaceAllAccessRightsW( IN LPWSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN ULONG cCountOfAccessRequests,
+ IN PPROV_ACCESS_REQUEST pListOfAccessRequests);
+WINAPI
+ReplaceAllAccessRightsA( IN LPSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN ULONG cCountOfAccessRequests,
+ IN PPROV_ACCESS_REQUEST pListOfAccessRequests);
+#ifdef UNICODE
+#define ReplaceAllAccessRights ReplaceAllAccessRightsW
+#else
+#define ReplaceAllAccessRights ReplaceAllAccessRightsA
+#endif // UNICODE
+WINAPI
+SetAccessRightsW( IN LPWSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN ULONG cCountOfAccessRequests,
+ IN PPROV_ACCESS_REQUEST pListOfAccessRequests);
+WINAPI
+SetAccessRightsA( IN LPSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN ULONG cCountOfAccessRequests,
+ IN PPROV_ACCESS_REQUEST pListOfAccessRequests);
+#ifdef UNICODE
+#define SetAccessRights SetAccessRightsW
+#else
+#define SetAccessRights SetAccessRightsA
+#endif // UNICODE
+
+WINAPI
+DenyAccessRightsW( IN LPWSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN ULONG cCountOfAccessRequests,
+ IN PPROV_ACCESS_REQUEST pListOfAccessRequests);
+WINAPI
+DenyAccessRightsA( IN LPSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN ULONG cCountOfAccessRequests,
+ IN PPROV_ACCESS_REQUEST pListOfAccessRequests);
+#ifdef UNICODE
+#define DenyAccessRights DenyAccessRightsW
+#else
+#define DenyAccessRights DenyAccessRightsA
+#endif // UNICODE
+
+WINAPI
+RevokeExplicitAccessRightsW(IN LPWSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN ULONG cCountOfTrusteeNames,
+ IN LPWSTR *pListOfTrusteeNames);
+WINAPI
+RevokeExplicitAccessRightsA(IN LPSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN ULONG cCountOfTrusteeNames,
+ IN LPSTR *pListOfTrusteeNames);
+#ifdef UNICODE
+#define RevokeExplicitAccessRights RevokeExplicitAccessRightsW
+#else
+#define RevokeExplicitAccessRights RevokeExplicitAccessRightsA
+#endif // UNICODE
+
+WINAPI
+IsAccessPermittedW( IN LPWSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN LPWSTR pTrusteeName,
+ IN ACCESS_RIGHTS ulRequestedRights,
+ OUT PBOOL pbResult);
+WINAPI
+IsAccessPermittedA( IN LPSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN LPSTR pTrusteeName,
+ IN ACCESS_RIGHTS ulRequestedRights,
+ OUT PBOOL pbResult);
+#ifdef UNICODE
+#define IsAccessPermitted IsAccessPermittedW
+#else
+#define IsAccessPermitted IsAccessPermittedA
+#endif // UNICODE
+
+WINAPI
+GetEffectiveAccessRightsW( IN LPWSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN LPWSTR pTrusteeName,
+ OUT PACCESS_RIGHTS pulReturnedAccess);
+WINAPI
+GetEffectiveAccessRightsA( IN LPSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN LPSTR pTrusteeName,
+ OUT PACCESS_RIGHTS pulReturnedAccess);
+#ifdef UNICODE
+#define GetEffectiveAccessRights GetEffectiveAccessRightsW
+#else
+#define GetEffectiveAccessRights GetEffectiveAccessRightsA
+#endif // UNICODE
+
+WINAPI
+GetExplicitAccessRightsW(IN LPWSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ OUT PULONG pcCountOfExplicitAccesses,
+ OUT PPROV_EXPLICIT_ACCESS *pListOfExplicitAccesses);
+WINAPI
+GetExplicitAccessRightsA(IN LPSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ OUT PULONG pcCountOfExplicitAccesses,
+ OUT PPROV_EXPLICIT_ACCESS *pListOfExplicitAccesses);
+#ifdef UNICODE
+#define GetExplicitAccessRights GetExplicitAccessRightsW
+#else
+#define GetExplicitAccessRights GetExplicitAccessRightsA
+#endif // UNICODE
+
+//----------------------------------------------------------------------------
+// from enumapi.cxx
+//----------------------------------------------------------------------------
+typedef struct _RESUME_KEY
+{
+ DWORD (*CallEnumTrustees)(IN LPWSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN LPWSTR pMachineName,
+ IN LPWSTR pFilter,
+ IN BOOL bFilterFullNames,
+ IN ULONG cSizeOfTrusteeNames,
+ OUT PULONG pcCountOfTrusteeNames,
+ OUT LPWSTR *pListOfTrusteeNames,
+ IN OUT PRESUME_KEY *pRresumeKey);
+
+ DWORD (*CallCloseEnumTrusteesKey)( IN PRESUME_KEY presumekey);
+
+ ULONG ProviderSpecificStart; // resume key must be contiguous(???)
+} RESUME_KEY, *PIRESUME_KEY;
+
+WINAPI
+CloseEnumTrusteesKey( IN PRESUME_KEY presumekey);
+
+WINAPI
+EnumTrusteesW( IN LPWSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN LPWSTR pFilter,
+ IN BOOL bFilterFullNames,
+ IN ULONG cSizeOfTrusteeNames,
+ OUT PULONG pcCountOfTrusteeNames,
+ OUT LPWSTR *pListOfTrusteeNames,
+ IN OUT PRESUME_KEY *pRresumeKey);
+
+WINAPI
+EnumTrusteesA( IN LPSTR pObjectName,
+ IN PROV_OBJECT_TYPE ObjectType,
+ IN LPSTR pFilter,
+ IN BOOL bFilterFullNames,
+ IN ULONG cSizeOfTrusteeNames,
+ OUT PULONG pcCountOfTrusteeNames,
+ OUT LPSTR *pListOfTrusteeNames,
+ IN OUT PRESUME_KEY *pRresumeKey);
+
+#ifdef UNICODE
+#define EnumTrustees EnumTrusteesW
+#else
+#define EnumTrustees EnumTrusteesA
+#endif // UNICODE
+#ifdef __cplusplus
+}
+#endif
+#endif // __PROVIDER_INDEPENDENT_ACCESS__
+
+
diff --git a/public/sdk/inc/proxyb.h b/public/sdk/inc/proxyb.h
new file mode 100644
index 000000000..cd7e337f7
--- /dev/null
+++ b/public/sdk/inc/proxyb.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: proxyb.h
+//
+// Contents: Replacement for proxyb.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/prsht.h b/public/sdk/inc/prsht.h
new file mode 100644
index 000000000..73f1acfc3
--- /dev/null
+++ b/public/sdk/inc/prsht.h
@@ -0,0 +1,426 @@
+/*****************************************************************************\
+* *
+* prsht.h - - Interface for the Windows Property Sheet Pages *
+* *
+* Version 1.0 *
+* *
+* Copyright (c) 1991-1996, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+#ifndef _PRSHT_H_
+#define _PRSHT_H_
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+#ifndef WINCOMMCTRLAPI
+#if !defined(_COMCTL32_) && defined(_WIN32)
+#define WINCOMMCTRLAPI DECLSPEC_IMPORT
+#else
+#define WINCOMMCTRLAPI
+#endif
+#endif // WINCOMMCTRLAPI
+
+//
+// For compilers that don't support nameless unions
+//
+#ifndef DUMMYUNIONNAME
+#ifdef NONAMELESSUNION
+#define DUMMYUNIONNAME u
+#define DUMMYUNIONNAME2 u2
+#define DUMMYUNIONNAME3 u3
+#else
+#define DUMMYUNIONNAME
+#define DUMMYUNIONNAME2
+#define DUMMYUNIONNAME3
+#endif
+#endif // DUMMYUNIONNAME
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else
+#define SNDMSG SendMessage
+#endif
+#endif // ifndef SNDMSG
+
+#define MAXPROPPAGES 100
+
+struct _PSP;
+typedef struct _PSP FAR* HPROPSHEETPAGE;
+
+#ifndef MIDL_PASS
+struct _PROPSHEETPAGEA;
+struct _PROPSHEETPAGEW;
+#endif
+
+typedef UINT (CALLBACK FAR * LPFNPSPCALLBACKA)(HWND hwnd, UINT uMsg, struct _PROPSHEETPAGEA FAR *ppsp);
+typedef UINT (CALLBACK FAR * LPFNPSPCALLBACKW)(HWND hwnd, UINT uMsg, struct _PROPSHEETPAGEW FAR *ppsp);
+
+#ifdef UNICODE
+#define LPFNPSPCALLBACK LPFNPSPCALLBACKW
+#else
+#define LPFNPSPCALLBACK LPFNPSPCALLBACKA
+#endif
+
+#define PSP_DEFAULT 0x0000
+#define PSP_DLGINDIRECT 0x0001
+#define PSP_USEHICON 0x0002
+#define PSP_USEICONID 0x0004
+#define PSP_USETITLE 0x0008
+#define PSP_RTLREADING 0x0010
+
+#define PSP_HASHELP 0x0020
+#define PSP_USEREFPARENT 0x0040
+#define PSP_USECALLBACK 0x0080
+#define PSP_PREMATURE 0x0400
+
+
+#define PSPCB_RELEASE 1
+#define PSPCB_CREATE 2
+
+
+typedef struct _PROPSHEETPAGEA {
+ DWORD dwSize;
+ DWORD dwFlags;
+ HINSTANCE hInstance;
+ union {
+ LPCSTR pszTemplate;
+#ifdef _WIN32
+ LPCDLGTEMPLATE pResource;
+#else
+ const VOID FAR *pResource;
+#endif
+ } DUMMYUNIONNAME;
+ union {
+ HICON hIcon;
+ LPCSTR pszIcon;
+ } DUMMYUNIONNAME2;
+ LPCSTR pszTitle;
+ DLGPROC pfnDlgProc;
+ LPARAM lParam;
+ LPFNPSPCALLBACKA pfnCallback;
+ UINT FAR * pcRefParent;
+} PROPSHEETPAGEA, FAR *LPPROPSHEETPAGEA;
+typedef const PROPSHEETPAGEA FAR *LPCPROPSHEETPAGEA;
+
+typedef struct _PROPSHEETPAGEW {
+ DWORD dwSize;
+ DWORD dwFlags;
+ HINSTANCE hInstance;
+ union {
+ LPCWSTR pszTemplate;
+#ifdef _WIN32
+ LPCDLGTEMPLATE pResource;
+#else
+ const VOID FAR *pResource;
+#endif
+ }DUMMYUNIONNAME;
+ union {
+ HICON hIcon;
+ LPCWSTR pszIcon;
+ }DUMMYUNIONNAME2;
+ LPCWSTR pszTitle;
+ DLGPROC pfnDlgProc;
+ LPARAM lParam;
+ LPFNPSPCALLBACKW pfnCallback;
+ UINT FAR * pcRefParent;
+} PROPSHEETPAGEW, FAR *LPPROPSHEETPAGEW;
+typedef const PROPSHEETPAGEW FAR *LPCPROPSHEETPAGEW;
+
+#ifdef UNICODE
+#define PROPSHEETPAGE PROPSHEETPAGEW
+#define LPPROPSHEETPAGE LPPROPSHEETPAGEW
+#define LPCPROPSHEETPAGE LPCPROPSHEETPAGEW
+#else
+#define PROPSHEETPAGE PROPSHEETPAGEA
+#define LPPROPSHEETPAGE LPPROPSHEETPAGEA
+#define LPCPROPSHEETPAGE LPCPROPSHEETPAGEA
+#endif
+
+
+#define PSH_DEFAULT 0x0000
+#define PSH_PROPTITLE 0x0001
+#define PSH_USEHICON 0x0002
+#define PSH_USEICONID 0x0004
+#define PSH_PROPSHEETPAGE 0x0008
+#define PSH_WIZARDHASFINISH 0x0010
+#define PSH_WIZARD 0x0020
+#define PSH_USEPSTARTPAGE 0x0040
+#define PSH_NOAPPLYNOW 0x0080
+#define PSH_USECALLBACK 0x0100
+#define PSH_HASHELP 0x0200
+#define PSH_MODELESS 0x0400
+#define PSH_RTLREADING 0x0800
+
+typedef int (CALLBACK *PFNPROPSHEETCALLBACK)(HWND, UINT, LPARAM);
+
+typedef struct _PROPSHEETHEADERA {
+ DWORD dwSize;
+ DWORD dwFlags;
+ HWND hwndParent;
+ HINSTANCE hInstance;
+ union {
+ HICON hIcon;
+ LPCSTR pszIcon;
+ }DUMMYUNIONNAME;
+ LPCSTR pszCaption;
+
+
+ UINT nPages;
+ union {
+ UINT nStartPage;
+ LPCSTR pStartPage;
+ }DUMMYUNIONNAME2;
+ union {
+ LPCPROPSHEETPAGEA ppsp;
+ HPROPSHEETPAGE FAR *phpage;
+ }DUMMYUNIONNAME3;
+ PFNPROPSHEETCALLBACK pfnCallback;
+} PROPSHEETHEADERA, FAR *LPPROPSHEETHEADERA;
+typedef const PROPSHEETHEADERA FAR *LPCPROPSHEETHEADERA;
+
+typedef struct _PROPSHEETHEADERW {
+ DWORD dwSize;
+ DWORD dwFlags;
+ HWND hwndParent;
+ HINSTANCE hInstance;
+ union {
+ HICON hIcon;
+ LPCWSTR pszIcon;
+ }DUMMYUNIONNAME;
+ LPCWSTR pszCaption;
+
+
+ UINT nPages;
+ union {
+ UINT nStartPage;
+ LPCWSTR pStartPage;
+ }DUMMYUNIONNAME2;
+ union {
+ LPCPROPSHEETPAGEW ppsp;
+ HPROPSHEETPAGE FAR *phpage;
+ }DUMMYUNIONNAME3;
+ PFNPROPSHEETCALLBACK pfnCallback;
+} PROPSHEETHEADERW, FAR *LPPROPSHEETHEADERW;
+typedef const PROPSHEETHEADERW FAR *LPCPROPSHEETHEADERW;
+
+#ifdef UNICODE
+#define PROPSHEETHEADER PROPSHEETHEADERW
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERW
+#define LPCPROPSHEETHEADER LPCPROPSHEETHEADERW
+#else
+#define PROPSHEETHEADER PROPSHEETHEADERA
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERA
+#define LPCPROPSHEETHEADER LPCPROPSHEETHEADERA
+#endif
+
+
+#define PSCB_INITIALIZED 1
+#define PSCB_PRECREATE 2
+
+WINCOMMCTRLAPI HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(LPCPROPSHEETPAGEA);
+WINCOMMCTRLAPI HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW);
+WINCOMMCTRLAPI BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE);
+WINCOMMCTRLAPI int WINAPI PropertySheetA(LPCPROPSHEETHEADERA);
+WINCOMMCTRLAPI int WINAPI PropertySheetW(LPCPROPSHEETHEADERW);
+
+#ifdef UNICODE
+#define CreatePropertySheetPage CreatePropertySheetPageW
+#define PropertySheet PropertySheetW
+#else
+#define CreatePropertySheetPage CreatePropertySheetPageA
+#define PropertySheet PropertySheetA
+#endif
+
+
+
+typedef BOOL (CALLBACK FAR * LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM);
+typedef BOOL (CALLBACK FAR * LPFNADDPROPSHEETPAGES)(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM);
+
+
+typedef struct _PSHNOTIFY
+{
+ NMHDR hdr;
+ LPARAM lParam;
+} PSHNOTIFY, FAR *LPPSHNOTIFY;
+
+
+#define PSN_FIRST (0U-200U)
+#define PSN_LAST (0U-299U)
+
+
+#define PSN_SETACTIVE (PSN_FIRST-0)
+#define PSN_KILLACTIVE (PSN_FIRST-1)
+// #define PSN_VALIDATE (PSN_FIRST-1)
+#define PSN_APPLY (PSN_FIRST-2)
+#define PSN_RESET (PSN_FIRST-3)
+// #define PSN_CANCEL (PSN_FIRST-3)
+#define PSN_HELP (PSN_FIRST-5)
+#define PSN_WIZBACK (PSN_FIRST-6)
+#define PSN_WIZNEXT (PSN_FIRST-7)
+#define PSN_WIZFINISH (PSN_FIRST-8)
+#define PSN_QUERYCANCEL (PSN_FIRST-9)
+
+
+#define PSNRET_NOERROR 0
+#define PSNRET_INVALID 1
+#define PSNRET_INVALID_NOCHANGEPAGE 2
+
+
+#define PSM_SETCURSEL (WM_USER + 101)
+#define PropSheet_SetCurSel(hDlg, hpage, index) \
+ SNDMSG(hDlg, PSM_SETCURSEL, (WPARAM)index, (LPARAM)hpage)
+
+
+#define PSM_REMOVEPAGE (WM_USER + 102)
+#define PropSheet_RemovePage(hDlg, index, hpage) \
+ SNDMSG(hDlg, PSM_REMOVEPAGE, index, (LPARAM)hpage)
+
+
+#define PSM_ADDPAGE (WM_USER + 103)
+#define PropSheet_AddPage(hDlg, hpage) \
+ SNDMSG(hDlg, PSM_ADDPAGE, 0, (LPARAM)hpage)
+
+
+#define PSM_CHANGED (WM_USER + 104)
+#define PropSheet_Changed(hDlg, hwnd) \
+ SNDMSG(hDlg, PSM_CHANGED, (WPARAM)hwnd, 0L)
+
+
+#define PSM_RESTARTWINDOWS (WM_USER + 105)
+#define PropSheet_RestartWindows(hDlg) \
+ SNDMSG(hDlg, PSM_RESTARTWINDOWS, 0, 0L)
+
+
+#define PSM_REBOOTSYSTEM (WM_USER + 106)
+#define PropSheet_RebootSystem(hDlg) \
+ SNDMSG(hDlg, PSM_REBOOTSYSTEM, 0, 0L)
+
+
+#define PSM_CANCELTOCLOSE (WM_USER + 107)
+#define PropSheet_CancelToClose(hDlg) \
+ PostMessage(hDlg, PSM_CANCELTOCLOSE, 0, 0L)
+
+
+#define PSM_QUERYSIBLINGS (WM_USER + 108)
+#define PropSheet_QuerySiblings(hDlg, wParam, lParam) \
+ SNDMSG(hDlg, PSM_QUERYSIBLINGS, wParam, lParam)
+
+
+#define PSM_UNCHANGED (WM_USER + 109)
+#define PropSheet_UnChanged(hDlg, hwnd) \
+ SNDMSG(hDlg, PSM_UNCHANGED, (WPARAM)hwnd, 0L)
+
+
+#define PSM_APPLY (WM_USER + 110)
+#define PropSheet_Apply(hDlg) \
+ SNDMSG(hDlg, PSM_APPLY, 0, 0L)
+
+
+#define PSM_SETTITLEA (WM_USER + 111)
+#define PSM_SETTITLEW (WM_USER + 120)
+
+#ifdef UNICODE
+#define PSM_SETTITLE PSM_SETTITLEW
+#else
+#define PSM_SETTITLE PSM_SETTITLEA
+#endif
+
+#define PropSheet_SetTitle(hDlg, wStyle, lpszText)\
+ SNDMSG(hDlg, PSM_SETTITLE, wStyle, (LPARAM)(LPCTSTR)lpszText)
+
+
+#define PSM_SETWIZBUTTONS (WM_USER + 112)
+#define PropSheet_SetWizButtons(hDlg, dwFlags) \
+ PostMessage(hDlg, PSM_SETWIZBUTTONS, 0, (LPARAM)dwFlags)
+
+
+
+#define PSWIZB_BACK 0x00000001
+#define PSWIZB_NEXT 0x00000002
+#define PSWIZB_FINISH 0x00000004
+#define PSWIZB_DISABLEDFINISH 0x00000008
+
+
+#define PSM_PRESSBUTTON (WM_USER + 113)
+#define PropSheet_PressButton(hDlg, iButton) \
+ PostMessage(hDlg, PSM_PRESSBUTTON, (WPARAM)iButton, 0)
+
+
+#define PSBTN_BACK 0
+#define PSBTN_NEXT 1
+#define PSBTN_FINISH 2
+#define PSBTN_OK 3
+#define PSBTN_APPLYNOW 4
+#define PSBTN_CANCEL 5
+#define PSBTN_HELP 6
+#define PSBTN_MAX 6
+
+
+
+#define PSM_SETCURSELID (WM_USER + 114)
+#define PropSheet_SetCurSelByID(hDlg, id) \
+ SNDMSG(hDlg, PSM_SETCURSELID, 0, (LPARAM)id)
+
+
+#define PSM_SETFINISHTEXTA (WM_USER + 115)
+#define PSM_SETFINISHTEXTW (WM_USER + 121)
+
+#ifdef UNICODE
+#define PSM_SETFINISHTEXT PSM_SETFINISHTEXTW
+#else
+#define PSM_SETFINISHTEXT PSM_SETFINISHTEXTA
+#endif
+
+#define PropSheet_SetFinishText(hDlg, lpszText) \
+ SNDMSG(hDlg, PSM_SETFINISHTEXT, 0, (LPARAM)lpszText)
+
+
+#define PSM_GETTABCONTROL (WM_USER + 116)
+#define PropSheet_GetTabControl(hDlg) \
+ (HWND)SNDMSG(hDlg, PSM_GETTABCONTROL, 0, 0)
+
+#define PSM_ISDIALOGMESSAGE (WM_USER + 117)
+#define PropSheet_IsDialogMessage(hDlg, pMsg) \
+ (BOOL)SNDMSG(hDlg, PSM_ISDIALOGMESSAGE, 0, (LPARAM)pMsg)
+
+#define PSM_GETCURRENTPAGEHWND (WM_USER + 118)
+#define PropSheet_GetCurrentPageHwnd(hDlg) \
+ (HWND)SNDMSG(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0L)
+
+#define ID_PSRESTARTWINDOWS 0x2
+#define ID_PSREBOOTSYSTEM (ID_PSRESTARTWINDOWS | 0x1)
+
+
+#define WIZ_CXDLG 276
+#define WIZ_CYDLG 140
+
+#define WIZ_CXBMP 80
+
+#define WIZ_BODYX 92
+#define WIZ_BODYCX 184
+
+#define PROP_SM_CXDLG 212
+#define PROP_SM_CYDLG 188
+
+#define PROP_MED_CXDLG 227
+#define PROP_MED_CYDLG 215
+
+#define PROP_LG_CXDLG 252
+#define PROP_LG_CYDLG 218
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // _PRSHT_H_
diff --git a/public/sdk/inc/prsist.h b/public/sdk/inc/prsist.h
new file mode 100644
index 000000000..d352fbf3a
--- /dev/null
+++ b/public/sdk/inc/prsist.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: prsist.h
+//
+// Contents: Replacement for prsist.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/psapi.h b/public/sdk/inc/psapi.h
new file mode 100644
index 000000000..c45e69f28
--- /dev/null
+++ b/public/sdk/inc/psapi.h
@@ -0,0 +1,253 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1994-1996 Microsoft Corporation
+
+Module Name:
+
+ psapi.h
+
+Abstract:
+
+ Include file for APIs provided by PSAPI.DLL
+
+Author:
+
+ Richard Shupak [richards] 06-Jan-1994
+
+Revision History:
+
+--*/
+
+#ifndef _PSAPI_H_
+#define _PSAPI_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+BOOL
+WINAPI
+EnumProcesses(
+ DWORD * lpidProcess,
+ DWORD cb,
+ DWORD * cbNeeded
+ );
+
+BOOL
+WINAPI
+EnumProcessModules(
+ HANDLE hProcess,
+ HMODULE *lphModule,
+ DWORD cb,
+ LPDWORD lpcbNeeded
+ );
+
+DWORD
+WINAPI
+GetModuleBaseNameA(
+ HANDLE hProcess,
+ HMODULE hModule,
+ LPSTR lpBaseName,
+ DWORD nSize
+ );
+
+DWORD
+WINAPI
+GetModuleBaseNameW(
+ HANDLE hProcess,
+ HMODULE hModule,
+ LPWSTR lpBaseName,
+ DWORD nSize
+ );
+
+#ifdef UNICODE
+#define GetModuleBaseName GetModuleBaseNameW
+#else
+#define GetModuleBaseName GetModuleBaseNameA
+#endif // !UNICODE
+
+
+DWORD
+WINAPI
+GetModuleFileNameExA(
+ HANDLE hProcess,
+ HMODULE hModule,
+ LPSTR lpFilename,
+ DWORD nSize
+ );
+
+DWORD
+WINAPI
+GetModuleFileNameExW(
+ HANDLE hProcess,
+ HMODULE hModule,
+ LPWSTR lpFilename,
+ DWORD nSize
+ );
+
+#ifdef UNICODE
+#define GetModuleFileNameEx GetModuleFileNameExW
+#else
+#define GetModuleFileNameEx GetModuleFileNameExA
+#endif // !UNICODE
+
+
+typedef struct _MODULEINFO {
+ LPVOID lpBaseOfDll;
+ DWORD SizeOfImage;
+ LPVOID EntryPoint;
+} MODULEINFO, *LPMODULEINFO;
+
+
+BOOL
+WINAPI
+GetModuleInformation(
+ HANDLE hProcess,
+ HMODULE hModule,
+ LPMODULEINFO lpmodinfo,
+ DWORD cb
+ );
+
+
+BOOL
+WINAPI
+EmptyWorkingSet(
+ HANDLE hProcess
+ );
+
+
+BOOL
+WINAPI
+QueryWorkingSet(
+ HANDLE hProcess,
+ PVOID pv,
+ DWORD cb
+ );
+
+BOOL
+WINAPI
+InitializeProcessForWsWatch(
+ HANDLE hProcess
+ );
+
+
+typedef struct _PSAPI_WS_WATCH_INFORMATION {
+ LPVOID FaultingPc;
+ LPVOID FaultingVa;
+} PSAPI_WS_WATCH_INFORMATION, *PPSAPI_WS_WATCH_INFORMATION;
+
+BOOL
+WINAPI
+GetWsChanges(
+ HANDLE hProcess,
+ PPSAPI_WS_WATCH_INFORMATION lpWatchInfo,
+ DWORD cb
+ );
+
+DWORD
+WINAPI
+GetMappedFileNameW(
+ HANDLE hProcess,
+ LPVOID lpv,
+ LPWSTR lpFilename,
+ DWORD nSize
+ );
+
+DWORD
+WINAPI
+GetMappedFileNameA(
+ HANDLE hProcess,
+ LPVOID lpv,
+ LPSTR lpFilename,
+ DWORD nSize
+ );
+
+#ifdef UNICODE
+#define GetMappedFilenameEx GetMappedFilenameExW
+#else
+#define GetMappedFilenameEx GetMappedFilenameExA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+EnumDeviceDrivers(
+ LPVOID *lpImageBase,
+ DWORD cb,
+ LPDWORD lpcbNeeded
+ );
+
+
+DWORD
+WINAPI
+GetDeviceDriverBaseNameA(
+ LPVOID ImageBase,
+ LPSTR lpBaseName,
+ DWORD nSize
+ );
+
+DWORD
+WINAPI
+GetDeviceDriverBaseNameW(
+ LPVOID ImageBase,
+ LPWSTR lpBaseName,
+ DWORD nSize
+ );
+
+#ifdef UNICODE
+#define GetDeviceDriverBaseName GetDeviceDriverBaseNameW
+#else
+#define GetDeviceDriverBaseName GetDeviceDriverBaseNameA
+#endif // !UNICODE
+
+
+DWORD
+WINAPI
+GetDeviceDriverFileNameA(
+ LPVOID ImageBase,
+ LPSTR lpFilename,
+ DWORD nSize
+ );
+
+DWORD
+WINAPI
+GetDeviceDriverFileNameW(
+ LPVOID ImageBase,
+ LPWSTR lpFilename,
+ DWORD nSize
+ );
+
+#ifdef UNICODE
+#define GetDeviceDriverFileName GetDeviceDriverFileNameW
+#else
+#define GetDeviceDriverFileName GetDeviceDriverFileNameA
+#endif // !UNICODE
+
+// Structure for GetProcessMemoryInfo()
+
+typedef struct _PROCESS_MEMORY_COUNTERS {
+ DWORD cb;
+ DWORD PageFaultCount;
+ DWORD PeakWorkingSetSize;
+ DWORD WorkingSetSize;
+ DWORD QuotaPeakPagedPoolUsage;
+ DWORD QuotaPagedPoolUsage;
+ DWORD QuotaPeakNonPagedPoolUsage;
+ DWORD QuotaNonPagedPoolUsage;
+ DWORD PagefileUsage;
+ DWORD PeakPagefileUsage;
+} PROCESS_MEMORY_COUNTERS;
+typedef PROCESS_MEMORY_COUNTERS *PPROCESS_MEMORY_COUNTERS;
+
+BOOL
+WINAPI
+GetProcessMemoryInfo(
+ HANDLE Process,
+ PPROCESS_MEMORY_COUNTERS ppsmemCounters,
+ DWORD cb
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/psfbuf.h b/public/sdk/inc/psfbuf.h
new file mode 100644
index 000000000..b808abfd1
--- /dev/null
+++ b/public/sdk/inc/psfbuf.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: psfbuf.h
+//
+// Contents: Replacement for psfbuf.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/pshpack1.h b/public/sdk/inc/pshpack1.h
new file mode 100644
index 000000000..46452ec09
--- /dev/null
+++ b/public/sdk/inc/pshpack1.h
@@ -0,0 +1,32 @@
+/*++
+
+Copyright (c) 1995-1996 Microsoft Corporation
+
+Module Name:
+
+ pshpack1.h
+
+Abstract:
+
+ This file turns 1 byte packing of structures on. (That is, it disables
+ automatic alignment of structure fields.) An include file is needed
+ because various compilers do this in different ways. For Microsoft
+ compatible compilers, this files uses the push option to the pack pragma
+ so that the poppack.h include file can restore the previous packing
+ reliably.
+
+ The file poppack.h is the complement to this file.
+
+--*/
+
+#if ! (defined(lint) || defined(_lint) || defined(RC_INVOKED))
+#if ( _MSC_VER >= 800 ) || defined(_PUSHPOP_SUPPORTED)
+#pragma warning(disable:4103)
+#if !(defined( MIDL_PASS )) || defined( __midl )
+#pragma pack(push)
+#endif
+#pragma pack(1)
+#else
+#pragma pack(1)
+#endif
+#endif // ! (defined(lint) || defined(_lint) || defined(RC_INVOKED))
diff --git a/public/sdk/inc/pshpack2.h b/public/sdk/inc/pshpack2.h
new file mode 100644
index 000000000..beab1ad28
--- /dev/null
+++ b/public/sdk/inc/pshpack2.h
@@ -0,0 +1,32 @@
+/*++
+
+Copyright (c) 1995-1996 Microsoft Corporation
+
+Module Name:
+
+ pshpack2.h
+
+Abstract:
+
+ This file turns 2 byte packing of structures on. (That is, it disables
+ automatic alignment of structure fields.) An include file is needed
+ because various compilers do this in different ways. For Microsoft
+ compatible compilers, this files uses the push option to the pack pragma
+ so that the poppack.h include file can restore the previous packing
+ reliably.
+
+ The file poppack.h is the complement to this file.
+
+--*/
+
+#if ! (defined(lint) || defined(_lint) || defined(RC_INVOKED))
+#if ( _MSC_VER >= 800 ) || defined(_PUSHPOP_SUPPORTED)
+#pragma warning(disable:4103)
+#if !(defined( MIDL_PASS )) || defined( __midl )
+#pragma pack(push)
+#endif
+#pragma pack(2)
+#else
+#pragma pack(2)
+#endif
+#endif // ! (defined(lint) || defined(_lint) || defined(RC_INVOKED))
diff --git a/public/sdk/inc/pshpack4.h b/public/sdk/inc/pshpack4.h
new file mode 100644
index 000000000..4d8525b29
--- /dev/null
+++ b/public/sdk/inc/pshpack4.h
@@ -0,0 +1,32 @@
+/*++
+
+Copyright (c) 1995-1996 Microsoft Corporation
+
+Module Name:
+
+ pshpack4.h
+
+Abstract:
+
+ This file turns 4 byte packing of structures on. (That is, it disables
+ automatic alignment of structure fields.) An include file is needed
+ because various compilers do this in different ways. For Microsoft
+ compatible compilers, this files uses the push option to the pack pragma
+ so that the poppack.h include file can restore the previous packing
+ reliably.
+
+ The file poppack.h is the complement to this file.
+
+--*/
+
+#if ! (defined(lint) || defined(_lint) || defined(RC_INVOKED))
+#if ( _MSC_VER >= 800 ) || defined(_PUSHPOP_SUPPORTED)
+#pragma warning(disable:4103)
+#if !(defined( MIDL_PASS )) || defined( __midl )
+#pragma pack(push)
+#endif
+#pragma pack(4)
+#else
+#pragma pack(4)
+#endif
+#endif // ! (defined(lint) || defined(_lint) || defined(RC_INVOKED))
diff --git a/public/sdk/inc/pshpack8.h b/public/sdk/inc/pshpack8.h
new file mode 100644
index 000000000..caa03e05f
--- /dev/null
+++ b/public/sdk/inc/pshpack8.h
@@ -0,0 +1,32 @@
+/*++
+
+Copyright (c) 1995-1996 Microsoft Corporation
+
+Module Name:
+
+ pshpack8.h
+
+Abstract:
+
+ This file turns 8 byte packing of structures on. (That is, it disables
+ automatic alignment of structure fields.) An include file is needed
+ because various compilers do this in different ways. For Microsoft
+ compatible compilers, this files uses the push option to the pack pragma
+ so that the poppack.h include file can restore the previous packing
+ reliably.
+
+ The file poppack.h is the complement to this file.
+
+--*/
+
+#if ! (defined(lint) || defined(_lint) || defined(RC_INVOKED))
+#if ( _MSC_VER >= 800 ) || defined(_PUSHPOP_SUPPORTED)
+#pragma warning(disable:4103)
+#if !(defined( MIDL_PASS )) || defined( __midl )
+#pragma pack(push)
+#endif
+#pragma pack(8)
+#else
+#pragma pack(8)
+#endif
+#endif // ! (defined(lint) || defined(_lint) || defined(RC_INVOKED))
diff --git a/public/sdk/inc/pstorg.h b/public/sdk/inc/pstorg.h
new file mode 100644
index 000000000..e766a5ad0
--- /dev/null
+++ b/public/sdk/inc/pstorg.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: pstorg.h
+//
+// Contents: Replacement for pstorg.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/pstrm.h b/public/sdk/inc/pstrm.h
new file mode 100644
index 000000000..23e37bb26
--- /dev/null
+++ b/public/sdk/inc/pstrm.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: pstrm.h
+//
+// Contents: Replacement for pstrm.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/ptypes16.h b/public/sdk/inc/ptypes16.h
new file mode 100644
index 000000000..819b916b7
--- /dev/null
+++ b/public/sdk/inc/ptypes16.h
@@ -0,0 +1,70 @@
+/*****************************************************************************\
+* PTYPES16.H - PORTABILITY MAPPING HEADER FILE
+*
+* This file provides typedefs for portable 16/32 bit code.
+\*****************************************************************************/
+
+/* TEMPORARY FIXES: */
+
+#ifndef CCHDEVICENAME
+#include <drivinit.h>
+#endif
+
+#define ERROR_GETADDR_FAILED 0x8001
+#define ERROR_ALLOCATION_FAILURE 0x8002
+
+#define INITWINDOWS()
+
+/* TYPES: */
+
+#ifndef WIN31
+
+typedef unsigned int UINT ;
+typedef WORD WPARAM ;
+typedef LONG LPARAM ;
+typedef int HFILE ;
+typedef HANDLE HINSTANCE ;
+typedef HANDLE HMODULE ;
+
+#endif /* !WIN31 */
+
+typedef int INT ;
+typedef signed char SCHAR ;
+typedef WORD WORD2DWORD ;
+typedef char TCHAR ;
+typedef char CHARPARM ;
+typedef char CHAR ;
+typedef int SHORTPARM ;
+typedef int SHORT ;
+typedef WORD VERSION ;
+typedef HANDLE HMETAFILE ;
+typedef WORD PDLLMEM ;
+typedef char CHAR2ULONG ;
+typedef unsigned short USHORT2ULONG ;
+typedef short SHORT2ULONG ;
+typedef int INT2DWORD ;
+typedef int INT2WORD ;
+typedef char BYTE2WORD ;
+typedef POINT MPOINT ;
+
+#define WNDPROC FARPROC
+#define PROC FARPROC
+#define APIENTRY FAR PASCAL
+#define HUGE_T huge
+
+#define HFILE2INT(h, flags) (INT)(h)
+#define INT2HFILE(i) (HFILE)(i)
+#define DUPHFILE(h) (HFILE)dup((INT)(h))
+#define MGLOBALPTR(p) HIWORD((LONG)p)
+
+/* PRAGMAS */
+
+#define _LOADDS _loadds
+#define _EXPORT _export
+
+
+
+
+
+
+
diff --git a/public/sdk/inc/ptypes32.h b/public/sdk/inc/ptypes32.h
new file mode 100644
index 000000000..8b2118b09
--- /dev/null
+++ b/public/sdk/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/public/sdk/inc/pwin16.h b/public/sdk/inc/pwin16.h
new file mode 100644
index 000000000..8d2fc5a88
--- /dev/null
+++ b/public/sdk/inc/pwin16.h
@@ -0,0 +1,289 @@
+/*****************************************************************************\
+* PWIN16.H - PORTABILITY MAPPING HEADER FILE
+*
+* This file provides macros to map portable windows code to its 16 bit form.
+\*****************************************************************************/
+
+/*-----------------------------------USER------------------------------------*/
+
+DWORD FAR PASCAL MGetLastError(VOID);
+DWORD FAR PASCAL MSendMsgEM_GETSEL(HWND hDlg, INT FAR *piStart, INT FAR *piEnd);
+
+/* HELPER MACROS */
+
+#define MAPVALUE(v16, v32) (v16)
+#define MAPTYPE(v16, v32) v16
+#define MAKEMPOINT(l) (*((MPOINT FAR *)&(l)))
+#define MPOINT2POINT(mpt, pt) (pt = *(POINT FAR *)&(mpt))
+#define POINT2MPOINT(pt, mpt) (mpt = *(MPOINT FAR *)&(pt))
+#define LONG2POINT(l, pt) ((pt).x = (INT)LOWORD(l), (pt).y = (INT)HIWORD(l))
+
+#define GETWINDOWUINT(hwnd, index) (UINT)GetWindowWord(hwnd, index)
+#define SETWINDOWUINT(hwnd, index, ui) (UINT)SetWindowWord(hwnd, index, (WORD)(ui))
+#define SETCLASSUINT(hwnd, index, ui) (UINT)SetClassWord(hwnd, index, (WORD)(ui))
+#define GETCLASSUINT(hwnd, index) (UINT)GetClassWord(hwnd, index)
+
+#define GETCBCLSEXTRA(hwnd) GETCLASSUINT(hwnd, GCW_CBCLSEXTRA)
+#define SETCBCLSEXTRA(hwnd, cb) SETCLASSUINT(hwnd, GCW_CBCLSEXTRA, cb)
+#define GETCBWNDEXTRA(hwnd) GETCLASSUINT(hwnd, GCW_CBWNDEXTRA)
+#define SETCBWNDEXTRA(hwnd, cb) SETCLASSUINT(hwnd, GCW_CBWNDEXTRA, cb)
+#define GETCLASSBRBACKGROUND(hwnd) (HBRUSH)GETCLASSUINT(hwnd, GCW_HBRBACKGROUND)
+#define SETCLASSBRBACKGROUND(hwnd, h) (HBRUSH)SETCLASSUINT(hwnd, GCW_HBRBACKGROUND, h)
+#define GETCLASSCURSOR(hwnd) (HCURSOR)GETCLASSUINT(hwnd, GCW_HCURSOR)
+#define SETCLASSCURSOR(hwnd, h) (HCURSOR)SETCLASSUINT(hwnd, GCW_HCURSOR, h)
+#define GETCLASSHMODULE(hwnd) (HMODULE)GETCLASSUINT(hwnd, GCW_HMODULE)
+#define SETCLASSHMODULE(hwnd, h) (HMODULE)SETCLASSUINT(hwnd, GCW_HMODULE, h)
+#define GETCLASSICON(hwnd) (HICON)GETCLASSUINT((hwnd), GCW_HICON)
+#define SETCLASSICON(hwnd, h) (HICON)SETCLASSUINT((hwnd), GCW_HICON, h)
+#define GETCLASSSTYLE(hwnd) GETCLASSUINT((hwnd), GCW_STYLE)
+#define SETCLASSSTYLE(hwnd, style) SETCLASSUINT((hwnd), GCW_STYLE, style)
+#define GETHWNDINSTANCE(hwnd) (HMODULE)GETWINDOWUINT((hwnd), GWW_HINSTANCE)
+#define SETHWNDINSTANCE(hwnd, h) (HMODULE)SETWINDOWUINT((hwnd), GWW_HINSTANCE, h)
+#define GETHWNDPARENT(hwnd) (HWND)GETWINDOWUINT((hwnd), GWW_HWNDPARENT)
+#define SETHWNDPARENT(hwnd, h) (HWND)SETWINDOWUINT((hwnd), GWW_HWNDPARENT, h)
+#define GETWINDOWID(hwnd) GETWINDOWUINT((hwnd), GWW_ID)
+#define SETWINDOWID(hwnd, id) SETWINDOWUINT((hwnd), GWW_ID, id)
+
+/* USER API */
+
+#define MDlgDirSelect(hDlg, lpstr, nLength, nIDListBox) \
+ DlgDirSelect(hDlg, lpstr, nIDListBox)
+
+#define MDlgDirSelectCOMBOBOX(hDlg, lpstr, nLength, nIDComboBox) \
+ DlgDirSelectComboBox(hDlg, lpstr, nIDComboBox)
+
+#define MMain(hInst, hPrevInst, lpCmdLine, nCmdShow) \
+ INT PASCAL WinMain(HANDLE hInst, HANDLE hPrevInst, LPSTR lpCmdLine, \
+ INT nCmdShow) { \
+ INT _argc; \
+ CHAR **_argv;
+
+/* USER MESSAGES: */
+
+#define GET_WPARAM(wp, lp) (wp)
+#define GET_LPARAM(wp, lp) (lp)
+
+#define WM_CTLCOLORMSGBOX 0x0132
+#define WM_CTLCOLOREDIT 0x0133
+#define WM_CTLCOLORLISTBOX 0x0134
+#define WM_CTLCOLORBTN 0x0135
+#define WM_CTLCOLORDLG 0x0136
+#define WM_CTLCOLORSCROLLBAR 0x0137
+#define WM_CTLCOLORSTATIC 0x0138
+
+#define GET_WM_ACTIVATE_STATE(wp, lp) (wp)
+#define GET_WM_ACTIVATE_FMINIMIZED(wp, lp) (BOOL)HIWORD(lp)
+#define GET_WM_ACTIVATE_HWND(wp, lp) (HWND)LOWORD(lp)
+#define GET_WM_ACTIVATE_MPS(s, fmin, hwnd) \
+ (WPARAM)(s), MAKELONG(hwnd, fmin)
+
+#define GET_WM_CHARTOITEM_CHAR(wp, lp) (CHAR)(wp)
+#define GET_WM_CHARTOITEM_POS(wp, lp) HIWORD(lp)
+#define GET_WM_CHARTOITEM_HWND(wp, lp) (HWND)LOWORD(lp)
+#define GET_WM_CHARTOITEM_MPS(ch, pos, hwnd) \
+ (WPARAM)(ch), MAKELONG(hwnd, pos)
+
+#define GET_WM_COMMAND_ID(wp, lp) (wp)
+#define GET_WM_COMMAND_HWND(wp, lp) (HWND)LOWORD(lp)
+#define GET_WM_COMMAND_CMD(wp, lp) HIWORD(lp)
+#define GET_WM_COMMAND_MPS(id, hwnd, cmd) \
+ (WPARAM)(id), MAKELONG(hwnd, cmd)
+
+#define GET_WM_CTLCOLOR_HDC(wp, lp, msg) (HDC)(wp)
+#define GET_WM_CTLCOLOR_HWND(wp, lp, msg) (HWND)LOWORD(lp)
+#define GET_WM_CTLCOLOR_TYPE(wp, lp, msg) HIWORD(lp)
+#define GET_WM_CTLCOLOR_MPS(hdc, hwnd, type) \
+ (WPARAM)(hdc), MAKELONG(hwnd, type)
+
+#define GET_WM_MENUSELECT_CMD(wp, lp) (wp)
+#define GET_WM_MENUSELECT_FLAGS(wp, lp) LOWORD(lp)
+#define GET_WM_MENUSELECT_HMENU(wp, lp) (HMENU)HIWORD(lp)
+#define GET_WM_MENUSELECT_MPS(cmd, f, hmenu) \
+ (WPARAM)(cmd), MAKELONG(f, hmenu)
+
+// Note: the following are for interpreting MDIclient to MDI child messages.
+#define GET_WM_MDIACTIVATE_FACTIVATE(hwnd, wp, lp) (BOOL)(wp)
+#define GET_WM_MDIACTIVATE_HWNDDEACT(wp, lp) (HWND)HIWORD(lp)
+#define GET_WM_MDIACTIVATE_HWNDACTIVATE(wp, lp) (HWND)LOWORD(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) 0, MAKELONG(hmenuF, hmenuW)
+
+#define GET_WM_MENUCHAR_CHAR(wp, lp) (CHAR)(wp)
+#define GET_WM_MENUCHAR_HMENU(wp, lp) (HMENU)LOWORD(lp)
+#define GET_WM_MENUCHAR_FMENU(wp, lp) (BOOL)HIWORD(lp)
+#define GET_WM_MENUCHAR_MPS(ch, hmenu, f) \
+ (WPARAM)(ch), MAKELONG(hmenu, f)
+
+#define GET_WM_PARENTNOTIFY_MSG(wp, lp) (wp)
+#define GET_WM_PARENTNOTIFY_ID(wp, lp) HIWORD(lp)
+#define GET_WM_PARENTNOTIFY_HWNDCHILD(wp, lp) (HWND)LOWORD(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)(msg), MAKELONG(hwnd, id)
+#define GET_WM_PARENTNOTIFY2_MPS(msg, x, y) \
+ (WPARAM)(msg), MAKELONG(x, y)
+
+#define GET_WM_VKEYTOITEM_CODE(wp, lp) (wp)
+#define GET_WM_VKEYTOITEM_ITEM(wp, lp) (INT)HIWORD(lp)
+#define GET_WM_VKEYTOITEM_HWND(wp, lp) (HWND)LOWORD(lp)
+#define GET_WM_VKEYTOITEM_MPS(code, item, hwnd) \
+ (WPARAM)(code), MAKELONG(hwnd, item)
+
+#define GET_EM_SETSEL_START(wp, lp) LOWORD(lp)
+#define GET_EM_SETSEL_END(wp, lp) HIWORD(lp)
+#define GET_EM_SETSEL_MPS(iStart, iEnd) \
+ 0, MAKELONG(iStart, iEnd)
+
+#define GET_EM_LINESCROLL_MPS(vert, horz) \
+ 0, MAKELONG(vert, horz)
+
+#define GET_WM_HSCROLL_CODE(wp, lp) (wp)
+#define GET_WM_HSCROLL_POS(wp, lp) LOWORD(lp)
+#define GET_WM_HSCROLL_HWND(wp, lp) (HWND)HIWORD(lp)
+#define GET_WM_HSCROLL_MPS(code, pos, hwnd) \
+ (WPARAM)(code), MAKELONG(pos, hwnd)
+
+#define GET_WM_VSCROLL_CODE(wp, lp) (wp)
+#define GET_WM_VSCROLL_POS(wp, lp) LOWORD(lp)
+#define GET_WM_VSCROLL_HWND(wp, lp) (HWND)HIWORD(lp)
+#define GET_WM_VSCROLL_MPS(code, pos, hwnd) \
+ (WPARAM)(code), MAKELONG(pos, hwnd)
+
+#define GET_WM_CHANGECBCHAIN_HWNDNEXT(wp, lp) (HWND)LOWORD(lp)
+
+#define DDEFREE(msg, lp)
+
+#define GET_WM_DDE_ACK_STATUS(wp, lp) LOWORD(lp)
+#define GET_WM_DDE_ACK_ITEM(wp, lp) (ATOM)HIWORD(lp)
+#define MPostWM_DDE_ACK(hTo, hFrom, wStatus, aItem) \
+ PostMessage(hTo, WM_DDE_ACK, (WPARAM)hFrom, MAKELONG(wStatus, aItem))
+
+#define GET_WM_DDE_ADVISE_HOPTIONS(wp, lp) (HANDLE)LOWORD(lp)
+#define GET_WM_DDE_ADVISE_ITEM(wp, lp) (ATOM)HIWORD(lp)
+#define MPostWM_DDE_ADVISE(hTo, hFrom, hOptions, aItem) \
+ PostMessage(hTo, WM_DDE_ADVISE, (WPARAM)hFrom, MAKELONG(hOptions, aItem))
+
+#define GET_WM_DDE_DATA_HDATA(wp, lp) (HANDLE)LOWORD(lp)
+#define GET_WM_DDE_DATA_ITEM(wp, lp) (ATOM)HIWORD(lp)
+#define MPostWM_DDE_DATA(hTo, hFrom, hData, aItem) \
+ PostMessage(hTo, WM_DDE_DATA, (WPARAM)hFrom, MAKELONG(hData, aItem))
+
+#define GET_WM_DDE_EXECUTE_HDATA(wp, lp) (HANDLE)HIWORD(lp)
+#define MPostWM_DDE_EXECUTE(hTo, hFrom, hDataExec) \
+ PostMessage(hTo, WM_DDE_EXECUTE, (WPARAM)hFrom, MAKELONG(0, hDataExec))
+
+#define GET_WM_DDE_POKE_HDATA(wp, lp) (HANDLE)LOWORD(lp)
+#define GET_WM_DDE_POKE_ITEM(wp, lp) (ATOM)HIWORD(lp)
+#define MPostWM_DDE_POKE(hTo, hFrom, hData, aItem) \
+ PostMessage(hTo, WM_DDE_POKE, (WPARAM)hFrom, MAKELONG(hData, aItem))
+
+#define GET_WM_DDE_EXECACK_STATUS(wp, lp) (WORD)LOWORD(lp)
+#define GET_WM_DDE_EXECACK_HDATA(wp, lp) (HANDLE)HIWORD(lp)
+#define MPostWM_DDE_EXECACK(hTo, hFrom, hCommands, wStatus) \
+ PostMessage(hTo, WM_DDE_ACK, (WPARAM)hFrom, MAKELONG(wStatus, 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) \
+ PostMessage(hTo, WM_DDE_REQUEST, (WPARAM)hFrom, MAKELONG(fmt, 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) \
+ PostMessage(hTo, WM_DDE_UNADVISE, (WPARAM)hFrom, MAKELONG(fmt, aItem))
+
+#define MPostWM_DDE_TERMINATE(hTo, hFrom) \
+ PostMessage(hTo, WM_DDE_TERMINATE, (WPARAM)hFrom, 0)
+
+/*-----------------------------------GDI-------------------------------------*/
+
+BOOL FAR PASCAL MGetAspectRatioFilter(HDC hdc, INT FAR * pcx, INT FAR * pcy);
+BOOL FAR PASCAL MGetBitmapDimension(HANDLE hBitmap, INT FAR * pcx, INT FAR * pcy);
+BOOL FAR PASCAL MGetBrushOrg(HDC hdc, INT FAR * px, INT FAR * py);
+BOOL FAR PASCAL MGetCurrentPosition(HDC hdc, INT FAR * px, INT FAR * py);
+BOOL FAR PASCAL MGetTextExtent(HDC hdc, LPSTR lpstr, INT cnt, INT FAR * pcx, INT FAR * pcy);
+BOOL FAR PASCAL MGetViewportExt(HDC hdc, INT FAR * pcx, INT FAR * pcy);
+BOOL FAR PASCAL MGetViewportOrg(HDC hdc, INT FAR * px, INT FAR * py);
+BOOL FAR PASCAL MGetWindowExt(HDC hdc, INT FAR * pcx, INT FAR * pcy);
+BOOL FAR PASCAL MGetWindowOrg(HDC hdc, INT FAR * px, INT FAR * py);
+
+#define MCreateDiscardableBitmap CreateDiscardableBitmap
+#define MMoveTo (VOID)MoveTo
+#define MOffsetViewportOrg (VOID)OffsetViewportOrg
+#define MOffsetWindowOrg (VOID)OffsetWindowOrg
+#define MScaleViewportExt (VOID)ScaleViewportExt
+#define MScaleWindowExt (VOID)ScaleWindowExt
+#define MSetBitmapDimension (VOID)SetBitmapDimension
+#define MSetBrushOrg (VOID)SetBrushOrg
+#define MSetViewportExt (VOID)SetViewportExt
+#define MSetViewportOrg (VOID)SetViewportOrg
+#define MSetWindowExt (VOID)SetWindowExt
+#define MSetWindowOrg (VOID)SetWindowOrg
+#define MUnrealizeObject UnrealizeObject
+
+
+/*-------------------------------------DEV-----------------------------------*/
+
+DWORD FAR PASCAL MDeviceCapabilities(LPSTR lpDriverName,
+ LPSTR lpDeviceName, LPSTR lpPort, WORD2DWORD nIndex, LPSTR lpOutput,
+ LPDEVMODE lpDevMode);
+BOOL FAR PASCAL MDeviceMode(HWND hWnd, LPSTR lpDriverName,
+ LPSTR lpDeviceName, LPSTR lpOutput);
+WORD2DWORD FAR PASCAL MExtDeviceMode(HWND hWnd,LPSTR lpDriverName,
+ LPDEVMODE lpDevModeOutput, LPSTR lpDeviceName, LPSTR lpPort,
+ LPDEVMODE lpDevModeInput, LPSTR lpProfile, WORD2DWORD flMode);
+
+/*-----------------------------------KERNEL----------------------------------*/
+
+HANDLE FAR PASCAL MLoadLibrary(LPSTR lpszFilename);
+BOOL FAR PASCAL MDeleteFile(LPSTR lpPathName);
+
+#define DLLMEM_MOVEABLE LMEM_MOVEABLE
+#define DLLMEM_ZEROINIT LMEM_ZEROINIT
+#define GETMAJORVERSION(x) LOBYTE(x)
+#define GETMINORVERSION(x) HIBYTE(x)
+
+#define MCATCHBUF CATCHBUF
+#define LPMCATCHBUF LPCATCHBUF
+
+/* FUNCTION MAPPINGS */
+
+#define MLocalInit LocalInit
+#define MLockData(dummy) LockData(dummy)
+#define MUnlockData(dummy) UnlockData(dummy)
+#define MDllSharedAlloc LocalAlloc
+#define MDllSharedFlags LocalFlags
+#define MDllSharedFree LocalFree
+#define MDllSharedHandle LocalHandle
+#define MDllSharedLock LocalLock
+#define MDllSharedRealloc LocalReAlloc
+#define MDllSharedSize LocalSize
+#define MDllSharedUnlock LocalUnlock
+#define MFreeDOSEnvironment(p) TRUE
+#define MGetCurrentTask GetCurrentTask
+#define MGetDOSEnvironment GetDOSEnvironment
+#define MGetDriveType GetDriveType
+#define MGetModuleUsage GetModuleUsage
+#define MGetTempDrive GetTempDrive
+#define MGetTempFileName GetTempFileName
+#define MGetWinFlags GetWinFlags
+#define MOpenComm (HFILE)OpenComm
+#define MSetCommState(fh, lpDCB) SetCommState(lpDCB)
+#define MReadComm ReadComm
+#define MWriteComm WriteComm
+#define MCloseComm CloseComm
+#define MOpenFile (HFILE)OpenFile
+#define MThrow Throw
+#define MCatch Catch
+#define M_lclose _lclose
+#define M_lcreat (HFILE)_lcreat
+#define M_llseek _llseek
+#define M_lopen (HFILE)_lopen
+#define M_lread _lread
+#define M_lwrite _lwrite
+#define MGetMetaFileBits GetMetaFileBits
+#define MSetMetaFileBits SetMetaFileBits
diff --git a/public/sdk/inc/pwin32.h b/public/sdk/inc/pwin32.h
new file mode 100644
index 000000000..2b9de0fe7
--- /dev/null
+++ b/public/sdk/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/public/sdk/inc/query.h b/public/sdk/inc/query.h
new file mode 100644
index 000000000..ed3b8120f
--- /dev/null
+++ b/public/sdk/inc/query.h
@@ -0,0 +1,1627 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:42:21 1996
+ */
+/* Compiler settings for query.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __query_h__
+#define __query_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ISearch_FWD_DEFINED__
+#define __ISearch_FWD_DEFINED__
+typedef interface ISearch ISearch;
+#endif /* __ISearch_FWD_DEFINED__ */
+
+
+#ifndef __IOldQuery_FWD_DEFINED__
+#define __IOldQuery_FWD_DEFINED__
+typedef interface IOldQuery IOldQuery;
+#endif /* __IOldQuery_FWD_DEFINED__ */
+
+
+#ifndef __IPhraseSink_FWD_DEFINED__
+#define __IPhraseSink_FWD_DEFINED__
+typedef interface IPhraseSink IPhraseSink;
+#endif /* __IPhraseSink_FWD_DEFINED__ */
+
+
+#ifndef __IWordSink_FWD_DEFINED__
+#define __IWordSink_FWD_DEFINED__
+typedef interface IWordSink IWordSink;
+#endif /* __IWordSink_FWD_DEFINED__ */
+
+
+#ifndef __IWordBreaker_FWD_DEFINED__
+#define __IWordBreaker_FWD_DEFINED__
+typedef interface IWordBreaker IWordBreaker;
+#endif /* __IWordBreaker_FWD_DEFINED__ */
+
+
+#ifndef __IStemSink_FWD_DEFINED__
+#define __IStemSink_FWD_DEFINED__
+typedef interface IStemSink IStemSink;
+#endif /* __IStemSink_FWD_DEFINED__ */
+
+
+#ifndef __IStemmer_FWD_DEFINED__
+#define __IStemmer_FWD_DEFINED__
+typedef interface IStemmer IStemmer;
+#endif /* __IStemmer_FWD_DEFINED__ */
+
+
+#ifndef __IRowsetQueryStatus_FWD_DEFINED__
+#define __IRowsetQueryStatus_FWD_DEFINED__
+typedef interface IRowsetQueryStatus IRowsetQueryStatus;
+#endif /* __IRowsetQueryStatus_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "filter.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifndef __IQueryStructures_INTERFACE_DEFINED__
+#define __IQueryStructures_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IQueryStructures
+ * at Fri Nov 15 09:42:21 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][unique][uuid] */
+
+
+#define PSGUID_QUERY { 0x49691C90, \
+ 0x7E17, 0x101A, \
+ 0xA9, 0x1C, 0x08, 0x00, 0x2B, \
+ 0x2E, 0xCD, 0xA9 }
+#define DISPID_QUERY_RANKVECTOR ( 2 )
+
+#define DISPID_QUERY_RANK ( 3 )
+
+#define DISPID_QUERY_HITCOUNT ( 4 )
+
+#define DISPID_QUERY_WORKID ( 5 )
+
+#define DISPID_QUERY_ALL ( 6 )
+
+#define DISPID_QUERY_UNFILTERED ( 7 )
+
+#define DISPID_QUERY_REVNAME ( 8 )
+
+#define DISPID_QUERY_VIRTUALPATH ( 9 )
+
+#define DISPID_QUERY_LASTSEENTIME ( 10 )
+
+#define CQUERYDISPIDS ( 11 )
+
+#define PSGUID_QUERY_METADATA { 0x624C9360, \
+ 0x93D0, 0x11CF, \
+ 0xA7, 0x87, 0x00, 0x00, 0x4C, \
+ 0x75, 0x27, 0x52 }
+#define DISPID_QUERY_METADATA_VROOTUSED ( 2 )
+
+#define DISPID_QUERY_METADATA_VROOTAUTOMATIC ( 3 )
+
+#define DISPID_QUERY_METADATA_VROOTMANUAL ( 4 )
+
+#define DISPID_QUERY_METADATA_PROPGUID ( 5 )
+
+#define DISPID_QUERY_METADATA_PROPDISPID ( 6 )
+
+#define DISPID_QUERY_METADATA_PROPNAME ( 7 )
+
+#define CQUERYMETADISPIDS ( 8 )
+
+#define DBBMKGUID { 0xC8B52232L, \
+ 0x5CF3, 0x11CE, \
+ {0xAD, 0xE5, 0x00, 0xAA, 0x00, \
+ 0x44, 0x77, 0x3D } }
+#define PROPID_DBBMK_BOOKMARK ( 2 )
+
+#define PROPID_DBBMK_CHAPTER ( 3 )
+
+#define CDBBMKDISPIDS ( 8 )
+
+#define DBSELFGUID {0xc8b52231,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}
+#define PROPID_DBSELF_SELF ( 2 )
+
+#define CDBSELFDISPIDS ( 8 )
+
+#define CDBCOLDISPIDS ( 28 )
+
+#define CQUERYPROPERTY ( 64 )
+
+#define PSGUID_CHARACTERIZATION { 0x560c36c0, \
+ 0x503a, 0x11cf, \
+ 0xba, 0xa1, 0x00, 0x00, \
+ 0x4c, 0x75, 0x2a, 0x9a }
+#define QUERY_SHALLOW ( 0 )
+
+#define QUERY_DEEP ( 1 )
+
+#define QUERY_PHYSICAL_PATH ( 0 )
+
+#define QUERY_VIRTUAL_PATH ( 2 )
+
+#define QUERY_VALIDBITS ( 3 )
+
+#define RTNone ( 0 )
+
+#define RTAnd ( 1 )
+
+#define RTOr ( 2 )
+
+#define RTNot ( 3 )
+
+#define RTContent ( 4 )
+
+#define RTProperty ( 5 )
+
+#define RTProximity ( 6 )
+
+#define RTVector ( 7 )
+
+#define RTNatLanguage ( 8 )
+
+typedef struct tagRESTRICTION RESTRICTION;
+
+typedef struct tagNOTRESTRICTION
+ {
+ RESTRICTION __RPC_FAR *pRes;
+ } NOTRESTRICTION;
+
+typedef struct tagNODERESTRICTION
+ {
+ ULONG cRes;
+ /* [size_is] */ RESTRICTION __RPC_FAR *__RPC_FAR *paRes;
+ ULONG reserved;
+ } NODERESTRICTION;
+
+#define VECTOR_RANK_MIN ( 0 )
+
+#define VECTOR_RANK_MAX ( 1 )
+
+#define VECTOR_RANK_INNER ( 2 )
+
+#define VECTOR_RANK_DICE ( 3 )
+
+#define VECTOR_RANK_JACCARD ( 4 )
+
+typedef struct tagVECTORRESTRICTION
+ {
+ NODERESTRICTION Node;
+ ULONG RankMethod;
+ } VECTORRESTRICTION;
+
+#define FUZZY_EXACT ( 0 )
+
+#define FUZZY_PREFIXMATCH ( 1 )
+
+#define FUZZY_STEMMED ( 2 )
+
+typedef struct tagCONTENTRESTRICTION
+ {
+ FULLPROPSPEC prop;
+ /* [string] */ WCHAR __RPC_FAR *pwcsPhrase;
+ LCID lcid;
+ ULONG ulFuzzyLevel;
+ } CONTENTRESTRICTION;
+
+typedef struct tagNATLANGUAGERESTRICTION
+ {
+ FULLPROPSPEC prop;
+ /* [string] */ WCHAR __RPC_FAR *pwcsPhrase;
+ LCID lcid;
+ } NATLANGUAGERESTRICTION;
+
+#define PRLT ( 0 )
+
+#define PRLE ( 1 )
+
+#define PRGT ( 2 )
+
+#define PRGE ( 3 )
+
+#define PREQ ( 4 )
+
+#define PRNE ( 5 )
+
+#define PRRE ( 6 )
+
+#define PRAllBits ( 7 )
+
+#define PRSomeBits ( 8 )
+
+#define PRAll ( 0x100 )
+
+#define PRAny ( 0x200 )
+
+typedef struct tagPROPERTYRESTRICTION
+ {
+ ULONG rel;
+ FULLPROPSPEC prop;
+ PROPVARIANT prval;
+ } PROPERTYRESTRICTION;
+
+
+struct tagRESTRICTION
+ {
+ ULONG rt;
+ ULONG weight;
+ /* [switch_is][switch_type] */ union _URes
+ {
+ /* [case()] */ NODERESTRICTION ar;
+ /* [case()] */ NODERESTRICTION or;
+ /* [case()] */ NODERESTRICTION pxr;
+ /* [case()] */ VECTORRESTRICTION vr;
+ /* [case()] */ NOTRESTRICTION nr;
+ /* [case()] */ CONTENTRESTRICTION cr;
+ /* [case()] */ NATLANGUAGERESTRICTION nlr;
+ /* [case()] */ PROPERTYRESTRICTION pr;
+ /* [default] */ /* Empty union arm */
+ } res;
+ };
+typedef struct tagCOLUMNSET
+ {
+ ULONG cCol;
+ /* [size_is] */ FULLPROPSPEC __RPC_FAR *aCol;
+ } COLUMNSET;
+
+#define QUERY_SORTASCEND ( 0 )
+
+#define QUERY_SORTDESCEND ( 1 )
+
+#define QUERY_SORTXASCEND ( 2 )
+
+#define QUERY_SORTXDESCEND ( 3 )
+
+#define QUERY_SORTDEFAULT ( 4 )
+
+typedef struct tagSORTKEY
+ {
+ FULLPROPSPEC propColumn;
+ ULONG dwOrder;
+ LCID locale;
+ } SORTKEY;
+
+typedef struct tagSORTSET
+ {
+ ULONG cCol;
+ /* [size_is] */ SORTKEY __RPC_FAR *aCol;
+ } SORTSET;
+
+#define CATEGORIZE_UNIQUE ( 0 )
+
+#define CATEGORIZE_CLUSTER ( 1 )
+
+#define CATEGORIZE_BUCKETS ( 2 )
+
+#define BUCKET_LINEAR ( 0 )
+
+#define BUCKET_EXPONENTIAL ( 1 )
+
+typedef struct tagBUCKETCATEGORIZE
+ {
+ ULONG cBuckets;
+ ULONG Distribution;
+ } BUCKETCATEGORIZE;
+
+#define CATEGORIZE_RANGE ( 3 )
+
+typedef struct tagRANGECATEGORIZE
+ {
+ ULONG cRange;
+ /* [size_is] */ PROPVARIANT __RPC_FAR *aRangeBegin;
+ } RANGECATEGORIZE;
+
+typedef struct tagCATEGORIZATION
+ {
+ ULONG ulCatType;
+ /* [switch_is][switch_type] */ union
+ {
+ /* [case()] */ ULONG cClusters;
+ /* [case()] */ BUCKETCATEGORIZE bucket;
+ /* [case()] */ RANGECATEGORIZE range;
+ /* [case()] */ /* Empty union arm */
+ } ;
+ COLUMNSET csColumns;
+ } CATEGORIZATION;
+
+typedef struct tagCATEGORIZATIONSET
+ {
+ ULONG cCat;
+ /* [size_is] */ CATEGORIZATION __RPC_FAR *aCat;
+ } CATEGORIZATIONSET;
+
+typedef unsigned long OCCURRENCE;
+
+#define occInvalid ( 0xffffffff )
+
+#define ulMaxRank ( 1000 )
+
+
+
+extern RPC_IF_HANDLE IQueryStructures_v0_0_c_ifspec;
+extern RPC_IF_HANDLE IQueryStructures_v0_0_s_ifspec;
+#endif /* __IQueryStructures_INTERFACE_DEFINED__ */
+
+#ifndef __ISearch_INTERFACE_DEFINED__
+#define __ISearch_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ISearch
+ * at Fri Nov 15 09:42:21 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_ISearch;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ISearch : public IUnknown
+ {
+ public:
+ virtual SCODE STDMETHODCALLTYPE Init(
+ /* [in] */ IFilter __RPC_FAR *pflt) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE NextHitMoniker(
+ /* [out][in] */ ULONG __RPC_FAR *pcMnk,
+ /* [size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *__RPC_FAR *papMnk) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE NextHitOffset(
+ /* [out][in] */ ULONG __RPC_FAR *pcRegion,
+ /* [size_is][out] */ FILTERREGION __RPC_FAR *__RPC_FAR *paRegion) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ISearchVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ISearch __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ISearch __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ISearch __RPC_FAR * This);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *Init )(
+ ISearch __RPC_FAR * This,
+ /* [in] */ IFilter __RPC_FAR *pflt);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *NextHitMoniker )(
+ ISearch __RPC_FAR * This,
+ /* [out][in] */ ULONG __RPC_FAR *pcMnk,
+ /* [size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *__RPC_FAR *papMnk);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *NextHitOffset )(
+ ISearch __RPC_FAR * This,
+ /* [out][in] */ ULONG __RPC_FAR *pcRegion,
+ /* [size_is][out] */ FILTERREGION __RPC_FAR *__RPC_FAR *paRegion);
+
+ END_INTERFACE
+ } ISearchVtbl;
+
+ interface ISearch
+ {
+ CONST_VTBL struct ISearchVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ISearch_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ISearch_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ISearch_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ISearch_Init(This,pflt) \
+ (This)->lpVtbl -> Init(This,pflt)
+
+#define ISearch_NextHitMoniker(This,pcMnk,papMnk) \
+ (This)->lpVtbl -> NextHitMoniker(This,pcMnk,papMnk)
+
+#define ISearch_NextHitOffset(This,pcRegion,paRegion) \
+ (This)->lpVtbl -> NextHitOffset(This,pcRegion,paRegion)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+SCODE STDMETHODCALLTYPE ISearch_Init_Proxy(
+ ISearch __RPC_FAR * This,
+ /* [in] */ IFilter __RPC_FAR *pflt);
+
+
+void __RPC_STUB ISearch_Init_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE ISearch_NextHitMoniker_Proxy(
+ ISearch __RPC_FAR * This,
+ /* [out][in] */ ULONG __RPC_FAR *pcMnk,
+ /* [size_is][out] */ IMoniker __RPC_FAR *__RPC_FAR *__RPC_FAR *papMnk);
+
+
+void __RPC_STUB ISearch_NextHitMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE ISearch_NextHitOffset_Proxy(
+ ISearch __RPC_FAR * This,
+ /* [out][in] */ ULONG __RPC_FAR *pcRegion,
+ /* [size_is][out] */ FILTERREGION __RPC_FAR *__RPC_FAR *paRegion);
+
+
+void __RPC_STUB ISearch_NextHitOffset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ISearch_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0077
+ * at Fri Nov 15 09:42:21 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#define eSequentialCursor 0x01
+#define eUseContentIndex 0x02
+#define eDeferNonIndexedTrimming 0x04
+#define eDontTimeoutQuery 0x08
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0077_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0077_v0_0_s_ifspec;
+
+#ifndef __IOldQuery_INTERFACE_DEFINED__
+#define __IOldQuery_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOldQuery
+ * at Fri Nov 15 09:42:21 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IOldQuery;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOldQuery : public IUnknown
+ {
+ public:
+ virtual SCODE STDMETHODCALLTYPE ExecuteQuery(
+ /* [in] */ ULONG ulRecursion,
+ /* [in] */ RESTRICTION __RPC_FAR *pRestriction,
+ /* [in] */ COLUMNSET __RPC_FAR *pColumns,
+ /* [in] */ SORTSET __RPC_FAR *pSort,
+ /* [in] */ DWORD grFlags,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppTable) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE ExecQuery(
+ /* [in] */ ULONG ulRecursion,
+ /* [in] */ RESTRICTION __RPC_FAR *pRestriction,
+ /* [in] */ COLUMNSET __RPC_FAR *pColumns,
+ /* [in] */ SORTSET __RPC_FAR *pSort,
+ /* [in] */ DWORD grFlags,
+ /* [in] */ REFIID riid,
+ /* [in] */ CATEGORIZATIONSET __RPC_FAR *pCategorize,
+ /* [out] */ ULONG __RPC_FAR *pcRowsets,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppTable) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOldQueryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOldQuery __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOldQuery __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOldQuery __RPC_FAR * This);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *ExecuteQuery )(
+ IOldQuery __RPC_FAR * This,
+ /* [in] */ ULONG ulRecursion,
+ /* [in] */ RESTRICTION __RPC_FAR *pRestriction,
+ /* [in] */ COLUMNSET __RPC_FAR *pColumns,
+ /* [in] */ SORTSET __RPC_FAR *pSort,
+ /* [in] */ DWORD grFlags,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppTable);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *ExecQuery )(
+ IOldQuery __RPC_FAR * This,
+ /* [in] */ ULONG ulRecursion,
+ /* [in] */ RESTRICTION __RPC_FAR *pRestriction,
+ /* [in] */ COLUMNSET __RPC_FAR *pColumns,
+ /* [in] */ SORTSET __RPC_FAR *pSort,
+ /* [in] */ DWORD grFlags,
+ /* [in] */ REFIID riid,
+ /* [in] */ CATEGORIZATIONSET __RPC_FAR *pCategorize,
+ /* [out] */ ULONG __RPC_FAR *pcRowsets,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppTable);
+
+ END_INTERFACE
+ } IOldQueryVtbl;
+
+ interface IOldQuery
+ {
+ CONST_VTBL struct IOldQueryVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOldQuery_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOldQuery_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOldQuery_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOldQuery_ExecuteQuery(This,ulRecursion,pRestriction,pColumns,pSort,grFlags,riid,ppTable) \
+ (This)->lpVtbl -> ExecuteQuery(This,ulRecursion,pRestriction,pColumns,pSort,grFlags,riid,ppTable)
+
+#define IOldQuery_ExecQuery(This,ulRecursion,pRestriction,pColumns,pSort,grFlags,riid,pCategorize,pcRowsets,ppTable) \
+ (This)->lpVtbl -> ExecQuery(This,ulRecursion,pRestriction,pColumns,pSort,grFlags,riid,pCategorize,pcRowsets,ppTable)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+SCODE STDMETHODCALLTYPE IOldQuery_ExecuteQuery_Proxy(
+ IOldQuery __RPC_FAR * This,
+ /* [in] */ ULONG ulRecursion,
+ /* [in] */ RESTRICTION __RPC_FAR *pRestriction,
+ /* [in] */ COLUMNSET __RPC_FAR *pColumns,
+ /* [in] */ SORTSET __RPC_FAR *pSort,
+ /* [in] */ DWORD grFlags,
+ /* [in] */ REFIID riid,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppTable);
+
+
+void __RPC_STUB IOldQuery_ExecuteQuery_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IOldQuery_ExecQuery_Proxy(
+ IOldQuery __RPC_FAR * This,
+ /* [in] */ ULONG ulRecursion,
+ /* [in] */ RESTRICTION __RPC_FAR *pRestriction,
+ /* [in] */ COLUMNSET __RPC_FAR *pColumns,
+ /* [in] */ SORTSET __RPC_FAR *pSort,
+ /* [in] */ DWORD grFlags,
+ /* [in] */ REFIID riid,
+ /* [in] */ CATEGORIZATIONSET __RPC_FAR *pCategorize,
+ /* [out] */ ULONG __RPC_FAR *pcRowsets,
+ /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppTable);
+
+
+void __RPC_STUB IOldQuery_ExecQuery_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOldQuery_INTERFACE_DEFINED__ */
+
+
+#ifndef __IPhraseSink_INTERFACE_DEFINED__
+#define __IPhraseSink_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPhraseSink
+ * at Fri Nov 15 09:42:21 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IPhraseSink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPhraseSink : public IUnknown
+ {
+ public:
+ virtual SCODE STDMETHODCALLTYPE PutSmallPhrase(
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcNoun,
+ /* [in] */ ULONG cwcNoun,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcModifier,
+ /* [in] */ ULONG cwcModifier,
+ /* [in] */ ULONG ulAttachmentType) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE PutPhrase(
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcPhrase,
+ /* [in] */ ULONG cwcPhrase) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPhraseSinkVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPhraseSink __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPhraseSink __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPhraseSink __RPC_FAR * This);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *PutSmallPhrase )(
+ IPhraseSink __RPC_FAR * This,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcNoun,
+ /* [in] */ ULONG cwcNoun,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcModifier,
+ /* [in] */ ULONG cwcModifier,
+ /* [in] */ ULONG ulAttachmentType);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *PutPhrase )(
+ IPhraseSink __RPC_FAR * This,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcPhrase,
+ /* [in] */ ULONG cwcPhrase);
+
+ END_INTERFACE
+ } IPhraseSinkVtbl;
+
+ interface IPhraseSink
+ {
+ CONST_VTBL struct IPhraseSinkVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPhraseSink_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPhraseSink_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPhraseSink_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPhraseSink_PutSmallPhrase(This,pwcNoun,cwcNoun,pwcModifier,cwcModifier,ulAttachmentType) \
+ (This)->lpVtbl -> PutSmallPhrase(This,pwcNoun,cwcNoun,pwcModifier,cwcModifier,ulAttachmentType)
+
+#define IPhraseSink_PutPhrase(This,pwcPhrase,cwcPhrase) \
+ (This)->lpVtbl -> PutPhrase(This,pwcPhrase,cwcPhrase)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+SCODE STDMETHODCALLTYPE IPhraseSink_PutSmallPhrase_Proxy(
+ IPhraseSink __RPC_FAR * This,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcNoun,
+ /* [in] */ ULONG cwcNoun,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcModifier,
+ /* [in] */ ULONG cwcModifier,
+ /* [in] */ ULONG ulAttachmentType);
+
+
+void __RPC_STUB IPhraseSink_PutSmallPhrase_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IPhraseSink_PutPhrase_Proxy(
+ IPhraseSink __RPC_FAR * This,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcPhrase,
+ /* [in] */ ULONG cwcPhrase);
+
+
+void __RPC_STUB IPhraseSink_PutPhrase_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPhraseSink_INTERFACE_DEFINED__ */
+
+
+#ifndef __IWordSink_INTERFACE_DEFINED__
+#define __IWordSink_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IWordSink
+ * at Fri Nov 15 09:42:21 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+#ifndef _tagWORDREP_BREAK_TYPE_DEFINED
+typedef
+enum tagWORDREP_BREAK_TYPE
+ { WORDREP_BREAK_EOW = 0,
+ WORDREP_BREAK_EOS = 1,
+ WORDREP_BREAK_EOP = 2,
+ WORDREP_BREAK_EOC = 3
+ } WORDREP_BREAK_TYPE;
+
+#define _tagWORDREP_BREAK_TYPE_DEFINED
+#define _WORDREP_BREAK_TYPE_DEFINED
+#endif
+
+EXTERN_C const IID IID_IWordSink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IWordSink : public IUnknown
+ {
+ public:
+ virtual SCODE STDMETHODCALLTYPE PutWord(
+ /* [in] */ ULONG cwc,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwcSrcLen,
+ /* [in] */ ULONG cwcSrcPos) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE PutAltWord(
+ /* [in] */ ULONG cwc,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwcSrcLen,
+ /* [in] */ ULONG cwcSrcPos) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE StartAltPhrase( void) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE EndAltPhrase( void) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE PutBreak(
+ /* [in] */ WORDREP_BREAK_TYPE breakType) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IWordSinkVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IWordSink __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IWordSink __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IWordSink __RPC_FAR * This);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *PutWord )(
+ IWordSink __RPC_FAR * This,
+ /* [in] */ ULONG cwc,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwcSrcLen,
+ /* [in] */ ULONG cwcSrcPos);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *PutAltWord )(
+ IWordSink __RPC_FAR * This,
+ /* [in] */ ULONG cwc,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwcSrcLen,
+ /* [in] */ ULONG cwcSrcPos);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *StartAltPhrase )(
+ IWordSink __RPC_FAR * This);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *EndAltPhrase )(
+ IWordSink __RPC_FAR * This);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *PutBreak )(
+ IWordSink __RPC_FAR * This,
+ /* [in] */ WORDREP_BREAK_TYPE breakType);
+
+ END_INTERFACE
+ } IWordSinkVtbl;
+
+ interface IWordSink
+ {
+ CONST_VTBL struct IWordSinkVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IWordSink_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IWordSink_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IWordSink_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IWordSink_PutWord(This,cwc,pwcInBuf,cwcSrcLen,cwcSrcPos) \
+ (This)->lpVtbl -> PutWord(This,cwc,pwcInBuf,cwcSrcLen,cwcSrcPos)
+
+#define IWordSink_PutAltWord(This,cwc,pwcInBuf,cwcSrcLen,cwcSrcPos) \
+ (This)->lpVtbl -> PutAltWord(This,cwc,pwcInBuf,cwcSrcLen,cwcSrcPos)
+
+#define IWordSink_StartAltPhrase(This) \
+ (This)->lpVtbl -> StartAltPhrase(This)
+
+#define IWordSink_EndAltPhrase(This) \
+ (This)->lpVtbl -> EndAltPhrase(This)
+
+#define IWordSink_PutBreak(This,breakType) \
+ (This)->lpVtbl -> PutBreak(This,breakType)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+SCODE STDMETHODCALLTYPE IWordSink_PutWord_Proxy(
+ IWordSink __RPC_FAR * This,
+ /* [in] */ ULONG cwc,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwcSrcLen,
+ /* [in] */ ULONG cwcSrcPos);
+
+
+void __RPC_STUB IWordSink_PutWord_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IWordSink_PutAltWord_Proxy(
+ IWordSink __RPC_FAR * This,
+ /* [in] */ ULONG cwc,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwcSrcLen,
+ /* [in] */ ULONG cwcSrcPos);
+
+
+void __RPC_STUB IWordSink_PutAltWord_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IWordSink_StartAltPhrase_Proxy(
+ IWordSink __RPC_FAR * This);
+
+
+void __RPC_STUB IWordSink_StartAltPhrase_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IWordSink_EndAltPhrase_Proxy(
+ IWordSink __RPC_FAR * This);
+
+
+void __RPC_STUB IWordSink_EndAltPhrase_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IWordSink_PutBreak_Proxy(
+ IWordSink __RPC_FAR * This,
+ /* [in] */ WORDREP_BREAK_TYPE breakType);
+
+
+void __RPC_STUB IWordSink_PutBreak_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IWordSink_INTERFACE_DEFINED__ */
+
+
+#ifndef __IWordBreaker_INTERFACE_DEFINED__
+#define __IWordBreaker_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IWordBreaker
+ * at Fri Nov 15 09:42:21 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+#ifndef _tagTEXT_SOURCE_DEFINED
+
+typedef SCODE ( __stdcall __RPC_FAR *PFNFILLTEXTBUFFER )(
+ struct tagTEXT_SOURCE __RPC_FAR *pTextSource);
+
+typedef struct tagTEXT_SOURCE
+ {
+ PFNFILLTEXTBUFFER pfnFillTextBuffer;
+ const WCHAR __RPC_FAR *awcBuffer;
+ ULONG iEnd;
+ ULONG iCur;
+ } TEXT_SOURCE;
+
+#define _tagTEXT_SOURCE_DEFINED
+#define _TEXT_SOURCE_DEFINED
+#endif
+
+EXTERN_C const IID IID_IWordBreaker;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IWordBreaker : public IUnknown
+ {
+ public:
+ virtual SCODE STDMETHODCALLTYPE Init(
+ /* [in] */ BOOL fQuery,
+ /* [in] */ ULONG ulMaxTokenSize,
+ /* [out] */ BOOL __RPC_FAR *pfLicense) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE BreakText(
+ /* [in] */ TEXT_SOURCE __RPC_FAR *pTextSource,
+ /* [in] */ IWordSink __RPC_FAR *pWordSink,
+ /* [in] */ IPhraseSink __RPC_FAR *pPhraseSink) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE ComposePhrase(
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcNoun,
+ /* [in] */ ULONG cwcNoun,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcModifier,
+ /* [in] */ ULONG cwcModifier,
+ /* [in] */ ULONG ulAttachmentType,
+ /* [size_is][out] */ WCHAR __RPC_FAR *pwcPhrase,
+ /* [out][in] */ ULONG __RPC_FAR *pcwcPhrase) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE GetLicenseToUse(
+ /* [string][out] */ const WCHAR __RPC_FAR *__RPC_FAR *ppwcsLicense) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IWordBreakerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IWordBreaker __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IWordBreaker __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IWordBreaker __RPC_FAR * This);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *Init )(
+ IWordBreaker __RPC_FAR * This,
+ /* [in] */ BOOL fQuery,
+ /* [in] */ ULONG ulMaxTokenSize,
+ /* [out] */ BOOL __RPC_FAR *pfLicense);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *BreakText )(
+ IWordBreaker __RPC_FAR * This,
+ /* [in] */ TEXT_SOURCE __RPC_FAR *pTextSource,
+ /* [in] */ IWordSink __RPC_FAR *pWordSink,
+ /* [in] */ IPhraseSink __RPC_FAR *pPhraseSink);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *ComposePhrase )(
+ IWordBreaker __RPC_FAR * This,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcNoun,
+ /* [in] */ ULONG cwcNoun,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcModifier,
+ /* [in] */ ULONG cwcModifier,
+ /* [in] */ ULONG ulAttachmentType,
+ /* [size_is][out] */ WCHAR __RPC_FAR *pwcPhrase,
+ /* [out][in] */ ULONG __RPC_FAR *pcwcPhrase);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *GetLicenseToUse )(
+ IWordBreaker __RPC_FAR * This,
+ /* [string][out] */ const WCHAR __RPC_FAR *__RPC_FAR *ppwcsLicense);
+
+ END_INTERFACE
+ } IWordBreakerVtbl;
+
+ interface IWordBreaker
+ {
+ CONST_VTBL struct IWordBreakerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IWordBreaker_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IWordBreaker_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IWordBreaker_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IWordBreaker_Init(This,fQuery,ulMaxTokenSize,pfLicense) \
+ (This)->lpVtbl -> Init(This,fQuery,ulMaxTokenSize,pfLicense)
+
+#define IWordBreaker_BreakText(This,pTextSource,pWordSink,pPhraseSink) \
+ (This)->lpVtbl -> BreakText(This,pTextSource,pWordSink,pPhraseSink)
+
+#define IWordBreaker_ComposePhrase(This,pwcNoun,cwcNoun,pwcModifier,cwcModifier,ulAttachmentType,pwcPhrase,pcwcPhrase) \
+ (This)->lpVtbl -> ComposePhrase(This,pwcNoun,cwcNoun,pwcModifier,cwcModifier,ulAttachmentType,pwcPhrase,pcwcPhrase)
+
+#define IWordBreaker_GetLicenseToUse(This,ppwcsLicense) \
+ (This)->lpVtbl -> GetLicenseToUse(This,ppwcsLicense)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+SCODE STDMETHODCALLTYPE IWordBreaker_Init_Proxy(
+ IWordBreaker __RPC_FAR * This,
+ /* [in] */ BOOL fQuery,
+ /* [in] */ ULONG ulMaxTokenSize,
+ /* [out] */ BOOL __RPC_FAR *pfLicense);
+
+
+void __RPC_STUB IWordBreaker_Init_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IWordBreaker_BreakText_Proxy(
+ IWordBreaker __RPC_FAR * This,
+ /* [in] */ TEXT_SOURCE __RPC_FAR *pTextSource,
+ /* [in] */ IWordSink __RPC_FAR *pWordSink,
+ /* [in] */ IPhraseSink __RPC_FAR *pPhraseSink);
+
+
+void __RPC_STUB IWordBreaker_BreakText_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IWordBreaker_ComposePhrase_Proxy(
+ IWordBreaker __RPC_FAR * This,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcNoun,
+ /* [in] */ ULONG cwcNoun,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcModifier,
+ /* [in] */ ULONG cwcModifier,
+ /* [in] */ ULONG ulAttachmentType,
+ /* [size_is][out] */ WCHAR __RPC_FAR *pwcPhrase,
+ /* [out][in] */ ULONG __RPC_FAR *pcwcPhrase);
+
+
+void __RPC_STUB IWordBreaker_ComposePhrase_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IWordBreaker_GetLicenseToUse_Proxy(
+ IWordBreaker __RPC_FAR * This,
+ /* [string][out] */ const WCHAR __RPC_FAR *__RPC_FAR *ppwcsLicense);
+
+
+void __RPC_STUB IWordBreaker_GetLicenseToUse_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IWordBreaker_INTERFACE_DEFINED__ */
+
+
+#ifndef __IStemSink_INTERFACE_DEFINED__
+#define __IStemSink_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IStemSink
+ * at Fri Nov 15 09:42:21 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IStemSink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IStemSink : public IUnknown
+ {
+ public:
+ virtual SCODE STDMETHODCALLTYPE PutAltWord(
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwc) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE PutWord(
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IStemSinkVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IStemSink __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IStemSink __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IStemSink __RPC_FAR * This);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *PutAltWord )(
+ IStemSink __RPC_FAR * This,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwc);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *PutWord )(
+ IStemSink __RPC_FAR * This,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwc);
+
+ END_INTERFACE
+ } IStemSinkVtbl;
+
+ interface IStemSink
+ {
+ CONST_VTBL struct IStemSinkVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IStemSink_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IStemSink_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IStemSink_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IStemSink_PutAltWord(This,pwcInBuf,cwc) \
+ (This)->lpVtbl -> PutAltWord(This,pwcInBuf,cwc)
+
+#define IStemSink_PutWord(This,pwcInBuf,cwc) \
+ (This)->lpVtbl -> PutWord(This,pwcInBuf,cwc)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+SCODE STDMETHODCALLTYPE IStemSink_PutAltWord_Proxy(
+ IStemSink __RPC_FAR * This,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwc);
+
+
+void __RPC_STUB IStemSink_PutAltWord_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IStemSink_PutWord_Proxy(
+ IStemSink __RPC_FAR * This,
+ /* [size_is][in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwc);
+
+
+void __RPC_STUB IStemSink_PutWord_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IStemSink_INTERFACE_DEFINED__ */
+
+
+#ifndef __IStemmer_INTERFACE_DEFINED__
+#define __IStemmer_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IStemmer
+ * at Fri Nov 15 09:42:21 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IStemmer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IStemmer : public IUnknown
+ {
+ public:
+ virtual SCODE STDMETHODCALLTYPE Init(
+ /* [in] */ ULONG ulMaxTokenSize,
+ /* [out] */ BOOL __RPC_FAR *pfLicense) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE StemWord(
+ /* [in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwc,
+ /* [in] */ IStemSink __RPC_FAR *pStemSink) = 0;
+
+ virtual SCODE STDMETHODCALLTYPE GetLicenseToUse(
+ /* [string][out] */ const WCHAR __RPC_FAR *__RPC_FAR *ppwcsLicense) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IStemmerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IStemmer __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IStemmer __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IStemmer __RPC_FAR * This);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *Init )(
+ IStemmer __RPC_FAR * This,
+ /* [in] */ ULONG ulMaxTokenSize,
+ /* [out] */ BOOL __RPC_FAR *pfLicense);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *StemWord )(
+ IStemmer __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwc,
+ /* [in] */ IStemSink __RPC_FAR *pStemSink);
+
+ SCODE ( STDMETHODCALLTYPE __RPC_FAR *GetLicenseToUse )(
+ IStemmer __RPC_FAR * This,
+ /* [string][out] */ const WCHAR __RPC_FAR *__RPC_FAR *ppwcsLicense);
+
+ END_INTERFACE
+ } IStemmerVtbl;
+
+ interface IStemmer
+ {
+ CONST_VTBL struct IStemmerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IStemmer_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IStemmer_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IStemmer_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IStemmer_Init(This,ulMaxTokenSize,pfLicense) \
+ (This)->lpVtbl -> Init(This,ulMaxTokenSize,pfLicense)
+
+#define IStemmer_StemWord(This,pwcInBuf,cwc,pStemSink) \
+ (This)->lpVtbl -> StemWord(This,pwcInBuf,cwc,pStemSink)
+
+#define IStemmer_GetLicenseToUse(This,ppwcsLicense) \
+ (This)->lpVtbl -> GetLicenseToUse(This,ppwcsLicense)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+SCODE STDMETHODCALLTYPE IStemmer_Init_Proxy(
+ IStemmer __RPC_FAR * This,
+ /* [in] */ ULONG ulMaxTokenSize,
+ /* [out] */ BOOL __RPC_FAR *pfLicense);
+
+
+void __RPC_STUB IStemmer_Init_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IStemmer_StemWord_Proxy(
+ IStemmer __RPC_FAR * This,
+ /* [in] */ const WCHAR __RPC_FAR *pwcInBuf,
+ /* [in] */ ULONG cwc,
+ /* [in] */ IStemSink __RPC_FAR *pStemSink);
+
+
+void __RPC_STUB IStemmer_StemWord_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+SCODE STDMETHODCALLTYPE IStemmer_GetLicenseToUse_Proxy(
+ IStemmer __RPC_FAR * This,
+ /* [string][out] */ const WCHAR __RPC_FAR *__RPC_FAR *ppwcsLicense);
+
+
+void __RPC_STUB IStemmer_GetLicenseToUse_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IStemmer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IRowsetQueryStatus_INTERFACE_DEFINED__
+#define __IRowsetQueryStatus_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IRowsetQueryStatus
+ * at Fri Nov 15 09:42:21 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+#define DBPROP_USECONTENTINDEX {0xA7AC77ED, 0xF8D7, 0x11CE, {0xA7,0x98,0x00,0x20,0xF8,0x00,0x80,0x25} }
+#define DBPROP_DEFERNONINDEXEDTRIMMING {0xBEEEF560, 0xB999, 0x11CF, {0xB8,0x8A,0x00,0x00,0x4C,0x75,0x27,0x52} }
+#define DBPROP_DONTTIMEOUTQUERY {0x7772AF44, 0xD788, 0x11CF, {0x8C,0x7D,0x00,0x20,0xAF,0x1D,0x74,0x0E} }
+#define STAT_BUSY ( 0 )
+
+#define STAT_ERROR ( 0x1 )
+
+#define STAT_DONE ( 0x2 )
+
+#define STAT_REFRESH ( 0x3 )
+
+#define QUERY_FILL_STATUS(x) (x & 0x7)
+#define STAT_PARTIAL_SCOPE ( 0x8 )
+
+#define STAT_NOISE_WORDS ( 0x10 )
+
+#define STAT_CONTENT_OUT_OF_DATE ( 0x20 )
+
+#define STAT_REFRESH_INCOMPLETE ( 0x40 )
+
+#define STAT_CONTENT_QUERY_INCOMPLETE ( 0x80 )
+
+#define STAT_TIME_LIMIT_EXCEEDED ( 0x100 )
+
+#define QUERY_RELIABILITY_STATUS(x) (x & 0xFFF8)
+
+EXTERN_C const IID IID_IRowsetQueryStatus;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IRowsetQueryStatus : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetStatus(
+ /* [out] */ DWORD __RPC_FAR *pdwStatus) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IRowsetQueryStatusVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IRowsetQueryStatus __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IRowsetQueryStatus __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IRowsetQueryStatus __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetStatus )(
+ IRowsetQueryStatus __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+ END_INTERFACE
+ } IRowsetQueryStatusVtbl;
+
+ interface IRowsetQueryStatus
+ {
+ CONST_VTBL struct IRowsetQueryStatusVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IRowsetQueryStatus_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IRowsetQueryStatus_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IRowsetQueryStatus_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IRowsetQueryStatus_GetStatus(This,pdwStatus) \
+ (This)->lpVtbl -> GetStatus(This,pdwStatus)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IRowsetQueryStatus_GetStatus_Proxy(
+ IRowsetQueryStatus __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+
+void __RPC_STUB IRowsetQueryStatus_GetStatus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IRowsetQueryStatus_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/ras.h b/public/sdk/inc/ras.h
new file mode 100644
index 000000000..64c27cced
--- /dev/null
+++ b/public/sdk/inc/ras.h
@@ -0,0 +1,1173 @@
+/* Copyright (c) 1992-1996, Microsoft Corporation, all rights reserved
+**
+** ras.h
+** Remote Access external API
+** Public header for external API clients
+**
+** WINVER values in this file:
+** WINVER < 0x400 = Windows NT 3.5, Windows NT 3.51
+** WINVER = 0x400 = Windows 95, Windows NT SUR (default)
+** WINVER > 0x400 = Windows NT SUR enhancements
+*/
+
+#ifndef _RAS_H_
+#define _RAS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef UNLEN
+#include <lmcons.h>
+#endif
+
+#include <pshpack4.h>
+
+#define RAS_MaxDeviceType 16
+#define RAS_MaxPhoneNumber 128
+#define RAS_MaxIpAddress 15
+#define RAS_MaxIpxAddress 21
+
+#if (WINVER >= 0x400)
+#define RAS_MaxEntryName 256
+#define RAS_MaxDeviceName 128
+#define RAS_MaxCallbackNumber RAS_MaxPhoneNumber
+#else
+#define RAS_MaxEntryName 20
+#define RAS_MaxDeviceName 32
+#define RAS_MaxCallbackNumber 48
+#endif
+
+#define RAS_MaxAreaCode 10
+#define RAS_MaxPadType 32
+#define RAS_MaxX25Address 200
+#define RAS_MaxFacilities 200
+#define RAS_MaxUserData 200
+
+DECLARE_HANDLE( HRASCONN );
+#define LPHRASCONN HRASCONN*
+
+
+/* Identifies an active RAS connection. (See RasEnumConnections)
+*/
+#define RASCONNW struct tagRASCONNW
+RASCONNW
+{
+ DWORD dwSize;
+ HRASCONN hrasconn;
+ WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
+
+#if (WINVER >= 0x400)
+ WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+ WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+#endif
+#if (WINVER >= 0x401)
+ WCHAR szPhonebook [ MAX_PATH ];
+ DWORD dwSubEntry;
+#endif
+};
+
+#define RASCONNA struct tagRASCONNA
+RASCONNA
+{
+ DWORD dwSize;
+ HRASCONN hrasconn;
+ CHAR szEntryName[ RAS_MaxEntryName + 1 ];
+
+#if (WINVER >= 0x400)
+ CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+ CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+#endif
+#if (WINVER >= 0x401)
+ CHAR szPhonebook [ MAX_PATH ];
+ DWORD dwSubEntry;
+#endif
+};
+
+#ifdef UNICODE
+#define RASCONN RASCONNW
+#else
+#define RASCONN RASCONNA
+#endif
+
+#define LPRASCONNW RASCONNW*
+#define LPRASCONNA RASCONNA*
+#define LPRASCONN RASCONN*
+
+
+/* Enumerates intermediate states to a connection. (See RasDial)
+*/
+#define RASCS_PAUSED 0x1000
+#define RASCS_DONE 0x2000
+
+#define RASCONNSTATE enum tagRASCONNSTATE
+RASCONNSTATE
+{
+ RASCS_OpenPort = 0,
+ RASCS_PortOpened,
+ RASCS_ConnectDevice,
+ RASCS_DeviceConnected,
+ RASCS_AllDevicesConnected,
+ RASCS_Authenticate,
+ RASCS_AuthNotify,
+ RASCS_AuthRetry,
+ RASCS_AuthCallback,
+ RASCS_AuthChangePassword,
+ RASCS_AuthProject,
+ RASCS_AuthLinkSpeed,
+ RASCS_AuthAck,
+ RASCS_ReAuthenticate,
+ RASCS_Authenticated,
+ RASCS_PrepareForCallback,
+ RASCS_WaitForModemReset,
+ RASCS_WaitForCallback,
+ RASCS_Projected,
+
+#if (WINVER >= 0x400)
+ RASCS_StartAuthentication,
+ RASCS_CallbackComplete,
+ RASCS_LogonNetwork,
+#endif
+ RASCS_SubEntryConnected,
+ RASCS_SubEntryDisconnected,
+
+ RASCS_Interactive = RASCS_PAUSED,
+ RASCS_RetryAuthentication,
+ RASCS_CallbackSetByCaller,
+ RASCS_PasswordExpired,
+
+ RASCS_Connected = RASCS_DONE,
+ RASCS_Disconnected
+};
+
+#define LPRASCONNSTATE RASCONNSTATE*
+
+
+/* Describes the status of a RAS connection. (See RasConnectionStatus)
+*/
+#define RASCONNSTATUSW struct tagRASCONNSTATUSW
+RASCONNSTATUSW
+{
+ DWORD dwSize;
+ RASCONNSTATE rasconnstate;
+ DWORD dwError;
+ WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+ WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+#if (WINVER >= 0x401)
+ WCHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+#endif
+};
+
+#define RASCONNSTATUSA struct tagRASCONNSTATUSA
+RASCONNSTATUSA
+{
+ DWORD dwSize;
+ RASCONNSTATE rasconnstate;
+ DWORD dwError;
+ CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+ CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+#if (WINVER >= 0x401)
+ CHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+#endif
+};
+
+#ifdef UNICODE
+#define RASCONNSTATUS RASCONNSTATUSW
+#else
+#define RASCONNSTATUS RASCONNSTATUSA
+#endif
+
+#define LPRASCONNSTATUSW RASCONNSTATUSW*
+#define LPRASCONNSTATUSA RASCONNSTATUSA*
+#define LPRASCONNSTATUS RASCONNSTATUS*
+
+
+/* Describes connection establishment parameters. (See RasDial)
+*/
+#define RASDIALPARAMSW struct tagRASDIALPARAMSW
+RASDIALPARAMSW
+{
+ DWORD dwSize;
+ WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
+ WCHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+ WCHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
+ WCHAR szUserName[ UNLEN + 1 ];
+ WCHAR szPassword[ PWLEN + 1 ];
+ WCHAR szDomain[ DNLEN + 1 ];
+#if (WINVER >= 0x401)
+ DWORD dwSubEntry;
+ DWORD dwCallbackId;
+#endif
+};
+
+#define RASDIALPARAMSA struct tagRASDIALPARAMSA
+RASDIALPARAMSA
+{
+ DWORD dwSize;
+ CHAR szEntryName[ RAS_MaxEntryName + 1 ];
+ CHAR szPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+ CHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
+ CHAR szUserName[ UNLEN + 1 ];
+ CHAR szPassword[ PWLEN + 1 ];
+ CHAR szDomain[ DNLEN + 1 ];
+#if (WINVER >= 0x401)
+ DWORD dwSubEntry;
+ DWORD dwCallbackId;
+#endif
+};
+
+#ifdef UNICODE
+#define RASDIALPARAMS RASDIALPARAMSW
+#else
+#define RASDIALPARAMS RASDIALPARAMSA
+#endif
+
+#define LPRASDIALPARAMSW RASDIALPARAMSW*
+#define LPRASDIALPARAMSA RASDIALPARAMSA*
+#define LPRASDIALPARAMS RASDIALPARAMS*
+
+
+/* Describes extended connection establishment options. (See RasDial)
+*/
+#define RASDIALEXTENSIONS struct tagRASDIALEXTENSIONS
+RASDIALEXTENSIONS
+{
+ DWORD dwSize;
+ DWORD dwfOptions;
+ HWND hwndParent;
+ DWORD reserved;
+};
+
+#define LPRASDIALEXTENSIONS RASDIALEXTENSIONS*
+
+/* 'dwfOptions' bit flags.
+*/
+#define RDEOPT_UsePrefixSuffix 0x00000001
+#define RDEOPT_PausedStates 0x00000002
+#define RDEOPT_IgnoreModemSpeaker 0x00000004
+#define RDEOPT_SetModemSpeaker 0x00000008
+#define RDEOPT_IgnoreSoftwareCompression 0x00000010
+#define RDEOPT_SetSoftwareCompression 0x00000020
+#define RDEOPT_DisableConnectedUI 0x00000040
+#define RDEOPT_DisableReconnectUI 0x00000080
+#define RDEOPT_DisableReconnect 0x00000100
+#define RDEOPT_NoUser 0x00000200
+#define RDEOPT_PauseOnScript 0x00000400
+
+
+/* Describes an enumerated RAS phone book entry name. (See RasEntryEnum)
+*/
+#define RASENTRYNAMEW struct tagRASENTRYNAMEW
+RASENTRYNAMEW
+{
+ DWORD dwSize;
+ WCHAR szEntryName[ RAS_MaxEntryName + 1 ];
+};
+
+#define RASENTRYNAMEA struct tagRASENTRYNAMEA
+RASENTRYNAMEA
+{
+ DWORD dwSize;
+ CHAR szEntryName[ RAS_MaxEntryName + 1 ];
+};
+
+#ifdef UNICODE
+#define RASENTRYNAME RASENTRYNAMEW
+#else
+#define RASENTRYNAME RASENTRYNAMEA
+#endif
+
+#define LPRASENTRYNAMEW RASENTRYNAMEW*
+#define LPRASENTRYNAMEA RASENTRYNAMEA*
+#define LPRASENTRYNAME RASENTRYNAME*
+
+
+/* Protocol code to projection data structure mapping.
+*/
+#define RASPROJECTION enum tagRASPROJECTION
+RASPROJECTION
+{
+ RASP_Amb = 0x10000,
+ RASP_PppNbf = 0x803F,
+ RASP_PppIpx = 0x802B,
+ RASP_PppIp = 0x8021,
+ RASP_PppLcp = 0xC021,
+ RASP_Slip = 0x20000
+};
+
+#define LPRASPROJECTION RASPROJECTION*
+
+
+/* Describes the result of a RAS AMB (Authentication Message Block)
+** projection. This protocol is used with NT 3.1 and OS/2 1.3 downlevel
+** RAS servers.
+*/
+#define RASAMBW struct tagRASAMBW
+RASAMBW
+{
+ DWORD dwSize;
+ DWORD dwError;
+ WCHAR szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
+ BYTE bLana;
+};
+
+#define RASAMBA struct tagRASAMBA
+RASAMBA
+{
+ DWORD dwSize;
+ DWORD dwError;
+ CHAR szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
+ BYTE bLana;
+};
+
+#ifdef UNICODE
+#define RASAMB RASAMBW
+#else
+#define RASAMB RASAMBA
+#endif
+
+#define LPRASAMBW RASAMBW*
+#define LPRASAMBA RASAMBA*
+#define LPRASAMB RASAMB*
+
+
+/* Describes the result of a PPP NBF (NetBEUI) projection.
+*/
+#define RASPPPNBFW struct tagRASPPPNBFW
+RASPPPNBFW
+{
+ DWORD dwSize;
+ DWORD dwError;
+ DWORD dwNetBiosError;
+ WCHAR szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
+ WCHAR szWorkstationName[ NETBIOS_NAME_LEN + 1 ];
+ BYTE bLana;
+};
+
+#define RASPPPNBFA struct tagRASPPPNBFA
+RASPPPNBFA
+{
+ DWORD dwSize;
+ DWORD dwError;
+ DWORD dwNetBiosError;
+ CHAR szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
+ CHAR szWorkstationName[ NETBIOS_NAME_LEN + 1 ];
+ BYTE bLana;
+};
+
+#ifdef UNICODE
+#define RASPPPNBF RASPPPNBFW
+#else
+#define RASPPPNBF RASPPPNBFA
+#endif
+
+#define LPRASPPPNBFW RASPPPNBFW*
+#define LPRASPPPNBFA RASPPPNBFA*
+#define LPRASPPPNBF RASPPPNBF*
+
+
+/* Describes the results of a PPP IPX (Internetwork Packet Exchange)
+** projection.
+*/
+#define RASPPPIPXW struct tagRASIPXW
+RASPPPIPXW
+{
+ DWORD dwSize;
+ DWORD dwError;
+ WCHAR szIpxAddress[ RAS_MaxIpxAddress + 1 ];
+};
+
+
+#define RASPPPIPXA struct tagRASPPPIPXA
+RASPPPIPXA
+{
+ DWORD dwSize;
+ DWORD dwError;
+ CHAR szIpxAddress[ RAS_MaxIpxAddress + 1 ];
+};
+
+#ifdef UNICODE
+#define RASPPPIPX RASPPPIPXW
+#else
+#define RASPPPIPX RASPPPIPXA
+#endif
+
+#define LPRASPPPIPXW RASPPPIPXW*
+#define LPRASPPPIPXA RASPPPIPXA*
+#define LPRASPPPIPX RASPPPIPX*
+
+
+/* Describes the results of a PPP IP (Internet) projection.
+*/
+#define RASPPPIPW struct tagRASPPPIPW
+RASPPPIPW
+{
+ DWORD dwSize;
+ DWORD dwError;
+ WCHAR szIpAddress[ RAS_MaxIpAddress + 1 ];
+
+#ifndef WINNT35COMPATIBLE
+
+ /* This field was added between Windows NT 3.51 beta and Windows NT 3.51
+ ** final, and between Windows 95 M8 beta and Windows 95 final. If you do
+ ** not require the server address and wish to retrieve PPP IP information
+ ** from Windows NT 3.5 or early Windows NT 3.51 betas, or on early Windows
+ ** 95 betas, define WINNT35COMPATIBLE.
+ **
+ ** The server IP address is not provided by all PPP implementations,
+ ** though Windows NT server's do provide it.
+ */
+ WCHAR szServerIpAddress[ RAS_MaxIpAddress + 1 ];
+
+#endif
+};
+
+#define RASPPPIPA struct tagRASPPPIPA
+RASPPPIPA
+{
+ DWORD dwSize;
+ DWORD dwError;
+ CHAR szIpAddress[ RAS_MaxIpAddress + 1 ];
+
+#ifndef WINNT35COMPATIBLE
+
+ /* See RASPPPIPW comment.
+ */
+ CHAR szServerIpAddress[ RAS_MaxIpAddress + 1 ];
+
+#endif
+};
+
+#ifdef UNICODE
+#define RASPPPIP RASPPPIPW
+#else
+#define RASPPPIP RASPPPIPA
+#endif
+
+#define LPRASPPPIPW RASPPPIPW*
+#define LPRASPPPIPA RASPPPIPA*
+#define LPRASPPPIP RASPPPIP*
+
+
+/* Describes the results of a PPP LCP/multi-link negotiation.
+*/
+#define RASPPPLCP struct tagRASPPPLCP
+RASPPPLCP
+{
+ DWORD dwSize;
+ BOOL fBundled;
+};
+
+#define LPRASPPPLCP RASPPPLCP*
+
+
+/* Describes the results of a SLIP (Serial Line IP) projection.
+*/
+#define RASSLIPW struct tagRASSLIPW
+RASSLIPW
+{
+ DWORD dwSize;
+ DWORD dwError;
+ WCHAR szIpAddress[ RAS_MaxIpAddress + 1 ];
+};
+
+
+#define RASSLIPA struct tagRASSLIPA
+RASSLIPA
+{
+ DWORD dwSize;
+ DWORD dwError;
+ CHAR szIpAddress[ RAS_MaxIpAddress + 1 ];
+};
+
+#ifdef UNICODE
+#define RASSLIP RASSLIPW
+#else
+#define RASSLIP RASSLIPA
+#endif
+
+#define LPRASSLIPW RASSLIPW*
+#define LPRASSLIPA RASSLIPA*
+#define LPRASSLIP RASSLIP*
+
+
+/* If using RasDial message notifications, get the notification message code
+** by passing this string to the RegisterWindowMessageA() API.
+** WM_RASDIALEVENT is used only if a unique message cannot be registered.
+*/
+#define RASDIALEVENT "RasDialEvent"
+#define WM_RASDIALEVENT 0xCCCD
+
+/* Prototypes for caller's RasDial callback handler. Arguments are the
+** message ID (currently always WM_RASDIALEVENT), the current RASCONNSTATE and
+** the error that has occurred (or 0 if none). Extended arguments are the
+** handle of the RAS connection and an extended error code.
+**
+** For RASDIALFUNC2, subsequent callback notifications for all
+** subentries can be cancelled by returning FALSE.
+*/
+typedef VOID (WINAPI *RASDIALFUNC)( UINT, RASCONNSTATE, DWORD );
+typedef VOID (WINAPI *RASDIALFUNC1)( HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD );
+typedef DWORD (WINAPI *RASDIALFUNC2)( DWORD, DWORD, HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD );
+
+
+/* Information describing a RAS-capable device.
+*/
+#define RASDEVINFOW struct tagRASDEVINFOW
+RASDEVINFOW
+{
+ DWORD dwSize;
+ WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+ WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+};
+
+#define RASDEVINFOA struct tagRASDEVINFOA
+RASDEVINFOA
+{
+ DWORD dwSize;
+ CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+ CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+};
+
+#ifdef UNICODE
+#define RASDEVINFO RASDEVINFOW
+#else
+#define RASDEVINFO RASDEVINFOA
+#endif
+
+#define LPRASDEVINFOW RASDEVINFOW*
+#define LPRASDEVINFOA RASDEVINFOA*
+#define LPRASDEVINFO RASDEVINFO*
+
+/* RAS country information (currently retrieved from TAPI).
+*/
+#define RASCTRYINFO struct RASCTRYINFO
+RASCTRYINFO
+{
+ DWORD dwSize;
+ DWORD dwCountryID;
+ DWORD dwNextCountryID;
+ DWORD dwCountryCode;
+ DWORD dwCountryNameOffset;
+};
+
+/* There is currently no difference between
+** RASCTRYINFOA and RASCTRYINFOW. This may
+** change in the future.
+*/
+#define RASCTRYINFOW RASCTRYINFO
+#define RASCTRYINFOA RASCTRYINFO
+
+#define LPRASCTRYINFOW RASCTRYINFOW*
+#define LPRASCTRYINFOA RASCTRYINFOW*
+#define LPRASCTRYINFO RASCTRYINFO*
+
+/* A RAS IP address.
+*/
+#define RASIPADDR struct RASIPADDR
+RASIPADDR
+{
+ BYTE a;
+ BYTE b;
+ BYTE c;
+ BYTE d;
+};
+
+/* A RAS phone book entry.
+*/
+#define RASENTRYA struct tagRASENTRYA
+RASENTRYA
+{
+ DWORD dwSize;
+ DWORD dwfOptions;
+ //
+ // Location/phone number.
+ //
+ DWORD dwCountryID;
+ DWORD dwCountryCode;
+ CHAR szAreaCode[ RAS_MaxAreaCode + 1 ];
+ CHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+ DWORD dwAlternateOffset;
+ //
+ // PPP/Ip
+ //
+ RASIPADDR ipaddr;
+ RASIPADDR ipaddrDns;
+ RASIPADDR ipaddrDnsAlt;
+ RASIPADDR ipaddrWins;
+ RASIPADDR ipaddrWinsAlt;
+ //
+ // Framing
+ //
+ DWORD dwFrameSize;
+ DWORD dwfNetProtocols;
+ DWORD dwFramingProtocol;
+ //
+ // Scripting
+ //
+ CHAR szScript[ MAX_PATH ];
+ //
+ // AutoDial
+ //
+ CHAR szAutodialDll[ MAX_PATH ];
+ CHAR szAutodialFunc[ MAX_PATH ];
+ //
+ // Device
+ //
+ CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+ CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+ //
+ // X.25
+ //
+ CHAR szX25PadType[ RAS_MaxPadType + 1 ];
+ CHAR szX25Address[ RAS_MaxX25Address + 1 ];
+ CHAR szX25Facilities[ RAS_MaxFacilities + 1 ];
+ CHAR szX25UserData[ RAS_MaxUserData + 1 ];
+ DWORD dwChannels;
+ //
+ // Reserved
+ //
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+#if (WINVER >= 0x401)
+ //
+ // Multilink
+ //
+ DWORD dwSubEntries;
+ DWORD dwDialMode;
+ DWORD dwDialExtraPercent;
+ DWORD dwDialExtraSampleSeconds;
+ DWORD dwHangUpExtraPercent;
+ DWORD dwHangUpExtraSampleSeconds;
+ //
+ // Idle timeout
+ //
+ DWORD dwIdleDisconnectSeconds;
+#endif
+};
+
+#define RASENTRYW struct tagRASENTRYW
+RASENTRYW
+{
+ DWORD dwSize;
+ DWORD dwfOptions;
+ //
+ // Location/phone number
+ //
+ DWORD dwCountryID;
+ DWORD dwCountryCode;
+ WCHAR szAreaCode[ RAS_MaxAreaCode + 1 ];
+ WCHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+ DWORD dwAlternateOffset;
+ //
+ // PPP/Ip
+ //
+ RASIPADDR ipaddr;
+ RASIPADDR ipaddrDns;
+ RASIPADDR ipaddrDnsAlt;
+ RASIPADDR ipaddrWins;
+ RASIPADDR ipaddrWinsAlt;
+ //
+ // Framing
+ //
+ DWORD dwFrameSize;
+ DWORD dwfNetProtocols;
+ DWORD dwFramingProtocol;
+ //
+ // Scripting
+ //
+ WCHAR szScript[ MAX_PATH ];
+ //
+ // AutoDial
+ //
+ WCHAR szAutodialDll[ MAX_PATH ];
+ WCHAR szAutodialFunc[ MAX_PATH ];
+ //
+ // Device
+ //
+ WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+ WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+ //
+ // X.25
+ //
+ WCHAR szX25PadType[ RAS_MaxPadType + 1 ];
+ WCHAR szX25Address[ RAS_MaxX25Address + 1 ];
+ WCHAR szX25Facilities[ RAS_MaxFacilities + 1 ];
+ WCHAR szX25UserData[ RAS_MaxUserData + 1 ];
+ DWORD dwChannels;
+ //
+ // Reserved
+ //
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+#if (WINVER >= 0x401)
+ //
+ // Multilink
+ //
+ DWORD dwSubEntries;
+ DWORD dwDialMode;
+ DWORD dwDialExtraPercent;
+ DWORD dwDialExtraSampleSeconds;
+ DWORD dwHangUpExtraPercent;
+ DWORD dwHangUpExtraSampleSeconds;
+ //
+ // Idle timeout
+ //
+ DWORD dwIdleDisconnectSeconds;
+#endif
+};
+
+#ifdef UNICODE
+#define RASENTRY RASENTRYW
+#else
+#define RASENTRY RASENTRYA
+#endif
+
+#define LPRASENTRYW RASENTRYW*
+#define LPRASENTRYA RASENTRYA*
+#define LPRASENTRY RASENTRY*
+
+/* RASENTRY 'dwfOptions' bit flags.
+*/
+#define RASEO_UseCountryAndAreaCodes 0x00000001
+#define RASEO_SpecificIpAddr 0x00000002
+#define RASEO_SpecificNameServers 0x00000004
+#define RASEO_IpHeaderCompression 0x00000008
+#define RASEO_RemoteDefaultGateway 0x00000010
+#define RASEO_DisableLcpExtensions 0x00000020
+#define RASEO_TerminalBeforeDial 0x00000040
+#define RASEO_TerminalAfterDial 0x00000080
+#define RASEO_ModemLights 0x00000100
+#define RASEO_SwCompression 0x00000200
+#define RASEO_RequireEncryptedPw 0x00000400
+#define RASEO_RequireMsEncryptedPw 0x00000800
+#define RASEO_RequireDataEncryption 0x00001000
+#define RASEO_NetworkLogon 0x00002000
+#define RASEO_UseLogonCredentials 0x00004000
+#define RASEO_PromoteAlternates 0x00008000
+#if (WINVER >= 0x401)
+#define RASEO_SecureLocalFiles 0x00010000
+#endif
+
+/* RASENTRY 'dwProtocols' bit flags.
+*/
+#define RASNP_NetBEUI 0x00000001
+#define RASNP_Ipx 0x00000002
+#define RASNP_Ip 0x00000004
+
+/* RASENTRY 'dwFramingProtocols' bit flags.
+*/
+#define RASFP_Ppp 0x00000001
+#define RASFP_Slip 0x00000002
+#define RASFP_Ras 0x00000004
+
+/* RASENTRY 'szDeviceType' default strings.
+*/
+#define RASDT_Modem TEXT("modem")
+#define RASDT_Isdn TEXT("isdn")
+#define RASDT_X25 TEXT("x25")
+
+/* Old AutoDial DLL function prototype.
+**
+** This prototype is documented for backward-compatibility
+** purposes only. It is superceded by the RASADFUNCA
+** and RASADFUNCW definitions below. DO NOT USE THIS
+** PROTOTYPE IN NEW CODE. SUPPORT FOR IT MAY BE REMOVED
+** IN FUTURE VERSIONS OF RAS.
+*/
+typedef BOOL (WINAPI *ORASADFUNC)( HWND, LPSTR, DWORD, LPDWORD );
+
+#if (WINVER >= 0x401)
+/* Flags for RasConnectionNotification().
+*/
+#define RASCN_Connection 0x00000001
+#define RASCN_Disconnection 0x00000002
+#define RASCN_BandwidthAdded 0x00000004
+#define RASCN_BandwidthRemoved 0x00000008
+
+/* RASENTRY 'dwDialMode' values.
+*/
+#define RASEDM_DialAll 1
+#define RASEDM_DialAsNeeded 2
+
+/* RASENTRY 'dwIdleDisconnectSeconds' constants.
+*/
+#define RASIDS_Disabled 0xffffffff
+#define RASIDS_UseGlobalValue 0
+
+/* AutoDial DLL function parameter block.
+*/
+#define RASADPARAMS struct tagRASADPARAMS
+RASADPARAMS
+{
+ DWORD dwSize;
+ HWND hwndOwner;
+ DWORD dwFlags;
+ LONG xDlg;
+ LONG yDlg;
+};
+
+#define LPRASADPARAMS RASADPARAMS*
+
+/* AutoDial DLL function parameter block 'dwFlags.'
+*/
+#define RASADFLG_PositionDlg 0x00000001
+
+/* Prototype AutoDial DLL function.
+*/
+typedef BOOL (WINAPI *RASADFUNCA)( LPSTR, LPSTR, LPRASADPARAMS, LPDWORD );
+typedef BOOL (WINAPI *RASADFUNCW)( LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD );
+
+#ifdef UNICODE
+#define RASADFUNC RASADFUNCW
+#else
+#define RASADFUNC RASADFUNCA
+#endif
+
+/* A RAS phone book multilinked sub-entry.
+*/
+#define RASSUBENTRYA struct tagRASSUBENTRYA
+RASSUBENTRYA
+{
+ DWORD dwSize;
+ DWORD dwfFlags;
+ //
+ // Device
+ //
+ CHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+ CHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+ //
+ // Phone numbers
+ //
+ CHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+ DWORD dwAlternateOffset;
+};
+
+#define RASSUBENTRYW struct tagRASSUBENTRYW
+RASSUBENTRYW
+{
+ DWORD dwSize;
+ DWORD dwfFlags;
+ //
+ // Device
+ //
+ WCHAR szDeviceType[ RAS_MaxDeviceType + 1 ];
+ WCHAR szDeviceName[ RAS_MaxDeviceName + 1 ];
+ //
+ // Phone numbers
+ //
+ WCHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ];
+ DWORD dwAlternateOffset;
+};
+
+#ifdef UNICODE
+#define RASSUBENTRY RASSUBENTRYW
+#else
+#define RASSUBENTRY RASSUBENTRYA
+#endif
+
+#define LPRASSUBENTRYW RASSUBENTRYW*
+#define LPRASSUBENTRYA RASSUBENTRYA*
+#define LPRASSUBENTRY RASSUBENTRY*
+
+/* Ras{Get,Set}Credentials structure. These calls
+** supercede Ras{Get,Set}EntryDialParams.
+*/
+#define RASCREDENTIALSA struct tagRASCREDENTIALSA
+RASCREDENTIALSA
+{
+ DWORD dwSize;
+ DWORD dwMask;
+ CHAR szUserName[ UNLEN + 1 ];
+ CHAR szPassword[ PWLEN + 1 ];
+ CHAR szDomain[ DNLEN + 1 ];
+};
+
+#define RASCREDENTIALSW struct tagRASCREDENTIALSW
+RASCREDENTIALSW
+{
+ DWORD dwSize;
+ DWORD dwMask;
+ WCHAR szUserName[ UNLEN + 1 ];
+ WCHAR szPassword[ PWLEN + 1 ];
+ WCHAR szDomain[ DNLEN + 1 ];
+};
+
+#ifdef UNICODE
+#define RASCREDENTIALS RASCREDENTIALSW
+#else
+#define RASCREDENTIALS RASCREDENTIALSA
+#endif
+
+#define LPRASCREDENTIALSW RASCREDENTIALSW*
+#define LPRASCREDENTIALSA RASCREDENTIALSA*
+#define LPRASCREDENTIALS RASCREDENTIALS*
+
+/* RASCREDENTIALS 'dwMask' values.
+*/
+#define RASCM_UserName 0x00000001
+#define RASCM_Password 0x00000002
+#define RASCM_Domain 0x00000004
+
+/* AutoDial address properties.
+*/
+#define RASAUTODIALENTRYA struct tagRASAUTODIALENTRYA
+RASAUTODIALENTRYA
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwDialingLocation;
+ CHAR szEntry[ RAS_MaxEntryName + 1];
+};
+
+#define RASAUTODIALENTRYW struct tagRASAUTODIALENTRYW
+RASAUTODIALENTRYW
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwDialingLocation;
+ WCHAR szEntry[ RAS_MaxEntryName + 1];
+};
+
+#ifdef UNICODE
+#define RASAUTODIALENTRY RASAUTODIALENTRYW
+#else
+#define RASAUTODIALENTRY RASAUTODIALENTRYA
+#endif
+
+#define LPRASAUTODIALENTRYW RASAUTODIALENTRYW*
+#define LPRASAUTODIALENTRYA RASAUTODIALENTRYA*
+#define LPRASAUTODIALENTRY RASAUTODIALENTRY*
+
+/* AutoDial control parameter values for
+** Ras{Get,Set}AutodialParam.
+*/
+#define RASADP_DisableConnectionQuery 0
+#define RASADP_LoginSessionDisable 1
+#define RASADP_SavedAddressesLimit 2
+#define RASADP_FailedConnectionTimeout 3
+#define RASADP_ConnectionQueryTimeout 4
+
+#endif // (WINVER >= 0x401)
+
+
+/* External RAS API function prototypes.
+*/
+DWORD APIENTRY RasDialA( LPRASDIALEXTENSIONS, LPSTR, LPRASDIALPARAMSA, DWORD,
+ LPVOID, LPHRASCONN );
+
+DWORD APIENTRY RasDialW( LPRASDIALEXTENSIONS, LPWSTR, LPRASDIALPARAMSW, DWORD,
+ LPVOID, LPHRASCONN );
+
+DWORD APIENTRY RasEnumConnectionsA( LPRASCONNA, LPDWORD, LPDWORD );
+
+DWORD APIENTRY RasEnumConnectionsW( LPRASCONNW, LPDWORD, LPDWORD );
+
+DWORD APIENTRY RasEnumEntriesA( LPSTR, LPSTR, LPRASENTRYNAMEA, LPDWORD,
+ LPDWORD );
+
+DWORD APIENTRY RasEnumEntriesW( LPWSTR, LPWSTR, LPRASENTRYNAMEW, LPDWORD,
+ LPDWORD );
+
+DWORD APIENTRY RasGetConnectStatusA( HRASCONN, LPRASCONNSTATUSA );
+
+DWORD APIENTRY RasGetConnectStatusW( HRASCONN, LPRASCONNSTATUSW );
+
+DWORD APIENTRY RasGetErrorStringA( UINT, LPSTR, DWORD );
+
+DWORD APIENTRY RasGetErrorStringW( UINT, LPWSTR, DWORD );
+
+DWORD APIENTRY RasHangUpA( HRASCONN );
+
+DWORD APIENTRY RasHangUpW( HRASCONN );
+
+DWORD APIENTRY RasGetProjectionInfoA( HRASCONN, RASPROJECTION, LPVOID,
+ LPDWORD );
+
+DWORD APIENTRY RasGetProjectionInfoW( HRASCONN, RASPROJECTION, LPVOID,
+ LPDWORD );
+
+DWORD APIENTRY RasCreatePhonebookEntryA( HWND, LPSTR );
+
+DWORD APIENTRY RasCreatePhonebookEntryW( HWND, LPWSTR );
+
+DWORD APIENTRY RasEditPhonebookEntryA( HWND, LPSTR, LPSTR );
+
+DWORD APIENTRY RasEditPhonebookEntryW( HWND, LPWSTR, LPWSTR );
+
+DWORD APIENTRY RasSetEntryDialParamsA( LPSTR, LPRASDIALPARAMSA, BOOL );
+
+DWORD APIENTRY RasSetEntryDialParamsW( LPWSTR, LPRASDIALPARAMSW, BOOL );
+
+DWORD APIENTRY RasGetEntryDialParamsA( LPSTR, LPRASDIALPARAMSA, LPBOOL );
+
+DWORD APIENTRY RasGetEntryDialParamsW( LPWSTR, LPRASDIALPARAMSW, LPBOOL );
+
+DWORD APIENTRY RasEnumDevicesA( LPRASDEVINFOA, LPDWORD, LPDWORD );
+
+DWORD APIENTRY RasEnumDevicesW( LPRASDEVINFOW, LPDWORD, LPDWORD );
+
+DWORD APIENTRY RasGetCountryInfoA( LPRASCTRYINFOA, LPDWORD );
+
+DWORD APIENTRY RasGetCountryInfoW( LPRASCTRYINFOW, LPDWORD );
+
+DWORD APIENTRY RasGetEntryPropertiesA( LPSTR, LPSTR, LPRASENTRYA, LPDWORD, LPBYTE, LPDWORD );
+
+DWORD APIENTRY RasGetEntryPropertiesW( LPWSTR, LPWSTR, LPRASENTRYW, LPDWORD, LPBYTE, LPDWORD );
+
+DWORD APIENTRY RasSetEntryPropertiesA( LPSTR, LPSTR, LPRASENTRYA, DWORD, LPBYTE, DWORD );
+
+DWORD APIENTRY RasSetEntryPropertiesW( LPWSTR, LPWSTR, LPRASENTRYW, DWORD, LPBYTE, DWORD );
+
+DWORD APIENTRY RasRenameEntryA( LPSTR, LPSTR, LPSTR );
+
+DWORD APIENTRY RasRenameEntryW( LPWSTR, LPWSTR, LPWSTR );
+
+DWORD APIENTRY RasDeleteEntryA( LPSTR, LPSTR );
+
+DWORD APIENTRY RasDeleteEntryW( LPWSTR, LPWSTR );
+
+DWORD APIENTRY RasValidateEntryNameA( LPSTR, LPSTR );
+
+DWORD APIENTRY RasValidateEntryNameW( LPWSTR, LPWSTR );
+
+#if (WINVER >= 0x401)
+DWORD APIENTRY RasGetSubEntryHandleA( HRASCONN, DWORD, LPHRASCONN );
+
+DWORD APIENTRY RasGetSubEntryHandleW( HRASCONN, DWORD, LPHRASCONN );
+
+DWORD APIENTRY RasGetCredentialsA( LPSTR, LPSTR, LPRASCREDENTIALSA);
+
+DWORD APIENTRY RasGetCredentialsW( LPWSTR, LPWSTR, LPRASCREDENTIALSW );
+
+DWORD APIENTRY RasSetCredentialsA( LPSTR, LPSTR, LPRASCREDENTIALSA, BOOL );
+
+DWORD APIENTRY RasSetCredentialsW( LPWSTR, LPWSTR, LPRASCREDENTIALSW, BOOL );
+
+DWORD APIENTRY RasConnectionNotificationA( HRASCONN, HANDLE, DWORD );
+
+DWORD APIENTRY RasConnectionNotificationW( HRASCONN, HANDLE, DWORD );
+
+DWORD APIENTRY RasGetSubEntryPropertiesA( LPSTR, LPSTR, DWORD,
+ LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD );
+
+DWORD APIENTRY RasGetSubEntryPropertiesW( LPWSTR, LPWSTR, DWORD,
+ LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD );
+
+DWORD APIENTRY RasSetSubEntryPropertiesA( LPSTR, LPSTR, DWORD,
+ LPRASSUBENTRYA, DWORD, LPBYTE, DWORD );
+
+DWORD APIENTRY RasSetSubEntryPropertiesW( LPWSTR, LPWSTR, DWORD,
+ LPRASSUBENTRYW, DWORD, LPBYTE, DWORD );
+
+DWORD APIENTRY RasGetAutodialAddressA( LPSTR, LPDWORD, LPRASAUTODIALENTRYA,
+ LPDWORD, LPDWORD );
+
+DWORD APIENTRY RasGetAutodialAddressW( LPWSTR, LPDWORD, LPRASAUTODIALENTRYW,
+ LPDWORD, LPDWORD);
+
+DWORD APIENTRY RasSetAutodialAddressA( LPSTR, DWORD, LPRASAUTODIALENTRYA,
+ DWORD, DWORD );
+
+DWORD APIENTRY RasSetAutodialAddressW( LPWSTR, DWORD, LPRASAUTODIALENTRYW,
+ DWORD, DWORD );
+
+DWORD APIENTRY RasEnumAutodialAddressesA( LPSTR *, LPDWORD, LPDWORD );
+
+DWORD APIENTRY RasEnumAutodialAddressesW( LPWSTR *, LPDWORD, LPDWORD );
+
+DWORD APIENTRY RasGetAutodialEnableA( DWORD, LPBOOL );
+
+DWORD APIENTRY RasGetAutodialEnableW( DWORD, LPBOOL );
+
+DWORD APIENTRY RasSetAutodialEnableA( DWORD, BOOL );
+
+DWORD APIENTRY RasSetAutodialEnableW( DWORD, BOOL );
+
+DWORD APIENTRY RasGetAutodialParamA( DWORD, LPVOID, LPDWORD );
+
+DWORD APIENTRY RasGetAutodialParamW( DWORD, LPVOID, LPDWORD );
+
+DWORD APIENTRY RasSetAutodialParamA( DWORD, LPVOID, DWORD );
+
+DWORD APIENTRY RasSetAutodialParamW( DWORD, LPVOID, DWORD );
+#endif
+
+
+#ifdef UNICODE
+#define RasDial RasDialW
+#define RasEnumConnections RasEnumConnectionsW
+#define RasEnumEntries RasEnumEntriesW
+#define RasGetConnectStatus RasGetConnectStatusW
+#define RasGetErrorString RasGetErrorStringW
+#define RasHangUp RasHangUpW
+#define RasGetProjectionInfo RasGetProjectionInfoW
+#define RasCreatePhonebookEntry RasCreatePhonebookEntryW
+#define RasEditPhonebookEntry RasEditPhonebookEntryW
+#define RasSetEntryDialParams RasSetEntryDialParamsW
+#define RasGetEntryDialParams RasGetEntryDialParamsW
+#define RasEnumDevices RasEnumDevicesW
+#define RasGetCountryInfo RasGetCountryInfoW
+#define RasGetEntryProperties RasGetEntryPropertiesW
+#define RasSetEntryProperties RasSetEntryPropertiesW
+#define RasRenameEntry RasRenameEntryW
+#define RasDeleteEntry RasDeleteEntryW
+#define RasValidateEntryName RasValidateEntryNameW
+#if (WINVER >= 0x401)
+#define RasGetSubEntryHandle RasGetSubEntryHandleW
+#define RasConnectionNotification RasConnectionNotificationW
+#define RasGetSubEntryProperties RasGetSubEntryPropertiesW
+#define RasSetSubEntryProperties RasSetSubEntryPropertiesW
+#define RasGetCredentials RasGetCredentialsW
+#define RasSetCredentials RasSetCredentialsW
+#define RasGetAutodialAddress RasGetAutodialAddressW
+#define RasSetAutodialAddress RasSetAutodialAddressW
+#define RasEnumAutodialAddresses RasEnumAutodialAddressesW
+#define RasGetAutodialEnable RasGetAutodialEnableW
+#define RasSetAutodialEnable RasSetAutodialEnableW
+#define RasGetAutodialParam RasGetAutodialParamW
+#define RasSetAutodialParam RasSetAutodialParamW
+#endif
+#else
+#define RasDial RasDialA
+#define RasEnumConnections RasEnumConnectionsA
+#define RasEnumEntries RasEnumEntriesA
+#define RasGetConnectStatus RasGetConnectStatusA
+#define RasGetErrorString RasGetErrorStringA
+#define RasHangUp RasHangUpA
+#define RasGetProjectionInfo RasGetProjectionInfoA
+#define RasCreatePhonebookEntry RasCreatePhonebookEntryA
+#define RasEditPhonebookEntry RasEditPhonebookEntryA
+#define RasSetEntryDialParams RasSetEntryDialParamsA
+#define RasGetEntryDialParams RasGetEntryDialParamsA
+#define RasEnumDevices RasEnumDevicesA
+#define RasGetCountryInfo RasGetCountryInfoA
+#define RasGetEntryProperties RasGetEntryPropertiesA
+#define RasSetEntryProperties RasSetEntryPropertiesA
+#define RasRenameEntry RasRenameEntryA
+#define RasDeleteEntry RasDeleteEntryA
+#define RasValidateEntryName RasValidateEntryNameA
+#if (WINVER >= 0x401)
+#define RasGetSubEntryHandle RasGetSubEntryHandleA
+#define RasConnectionNotification RasConnectionNotificationA
+#define RasGetSubEntryProperties RasGetSubEntryPropertiesA
+#define RasSetSubEntryProperties RasSetSubEntryPropertiesA
+#define RasGetCredentials RasGetCredentialsA
+#define RasSetCredentials RasSetCredentialsA
+#define RasGetAutodialAddress RasGetAutodialAddressA
+#define RasSetAutodialAddress RasSetAutodialAddressA
+#define RasEnumAutodialAddresses RasEnumAutodialAddressesA
+#define RasGetAutodialEnable RasGetAutodialEnableA
+#define RasSetAutodialEnable RasSetAutodialEnableA
+#define RasGetAutodialParam RasGetAutodialParamA
+#define RasSetAutodialParam RasSetAutodialParamA
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif // _RAS_H_
diff --git a/public/sdk/inc/rasdlg.h b/public/sdk/inc/rasdlg.h
new file mode 100644
index 000000000..68e6bbb1c
--- /dev/null
+++ b/public/sdk/inc/rasdlg.h
@@ -0,0 +1,269 @@
+/* Copyright (c) 1995-1996, Microsoft Corporation, all rights reserved
+**
+** rasdlg.h
+** Remote Access Common Dialog APIs
+** Public header
+**
+** These APIs live in RASDLG.DLL.
+**
+** The APIs in this header are added in Windows NT SUR and are not available
+** in prior Windows NT or Windows 95 releases.
+*/
+
+#ifndef _RASDLG_H_
+#define _RASDLG_H_
+
+#include <pshpack4.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ras.h>
+
+
+/* RasPhonebookDlg API callback.
+*/
+typedef VOID (WINAPI* RASPBDLGFUNCW)( DWORD, DWORD, LPWSTR, LPVOID );
+typedef VOID (WINAPI* RASPBDLGFUNCA)( DWORD, DWORD, LPSTR, LPVOID );
+
+#define RASPBDEVENT_AddEntry 1
+#define RASPBDEVENT_EditEntry 2
+#define RASPBDEVENT_RemoveEntry 3
+#define RASPBDEVENT_DialEntry 4
+#define RASPBDEVENT_EditGlobals 5
+#define RASPBDEVENT_NoUser 6
+#define RASPBDEVENT_NoUserEdit 7
+
+/* Defines the information passed in the 4th argument of RASPBDLGFUNC on
+** "NoUser" and "NoUserEdit" events. Usage shown is for "NoUser". For
+** "NoUserEdit", the timeout is ignored and the three strings are INs.
+*/
+#define RASNOUSERW struct tagRASNOUSERW
+RASNOUSERW
+{
+ IN DWORD dwSize;
+ IN DWORD dwFlags;
+ OUT DWORD dwTimeoutMs;
+ OUT WCHAR szUserName[ UNLEN + 1 ];
+ OUT WCHAR szPassword[ PWLEN + 1 ];
+ OUT WCHAR szDomain[ DNLEN + 1 ];
+};
+
+#define RASNOUSERA struct tagRASNOUSERA
+RASNOUSERA
+{
+ IN DWORD dwSize;
+ IN DWORD dwFlags;
+ OUT DWORD dwTimeoutMs;
+ OUT CHAR szUserName[ UNLEN + 1 ];
+ OUT CHAR szPassword[ PWLEN + 1 ];
+ OUT CHAR szDomain[ DNLEN + 1 ];
+};
+
+#ifdef UNICODE
+#define RASNOUSER RASNOUSERW
+#else
+#define RASNOUSER RASNOUSERA
+#endif
+
+#define LPRASNOUSERW RASNOUSERW*
+#define LPRASNOUSERA RASNOUSERA*
+#define LPRASNOUSER RASNOUSER*
+
+
+/* RasPhonebookDlg API parameters.
+*/
+#define RASPBDFLAG_PositionDlg 0x00000001
+#define RASPBDFLAG_ForceCloseOnDial 0x00000002
+#define RASPBDFLAG_NoUser 0x00000010
+#define RASPBDFLAG_UpdateDefaults 0x80000000
+
+#define RASPBDLGW struct tagRASPBDLGW
+RASPBDLGW
+{
+ IN DWORD dwSize;
+ IN HWND hwndOwner;
+ IN DWORD dwFlags;
+ IN LONG xDlg;
+ IN LONG yDlg;
+ IN DWORD dwCallbackId;
+ IN RASPBDLGFUNCW pCallback;
+ OUT DWORD dwError;
+ IN DWORD reserved;
+ IN DWORD reserved2;
+};
+
+#define RASPBDLGA struct tagRASPBDLGA
+RASPBDLGA
+{
+ IN DWORD dwSize;
+ IN HWND hwndOwner;
+ IN DWORD dwFlags;
+ IN LONG xDlg;
+ IN LONG yDlg;
+ IN DWORD dwCallbackId;
+ IN RASPBDLGFUNCA pCallback;
+ OUT DWORD dwError;
+ IN DWORD reserved;
+ IN DWORD reserved2;
+};
+
+#ifdef UNICODE
+#define RASPBDLG RASPBDLGW
+#define RASPBDLGFUNC RASPBDLGFUNCW
+#else
+#define RASPBDLG RASPBDLGA
+#define RASPBDLGFUNC RASPBDLGFUNCA
+#endif
+
+#define LPRASPBDLGW RASPBDLGW*
+#define LPRASPBDLGA RASPBDLGA*
+#define LPRASPBDLG RASPBDLG*
+
+
+/* RasEntryDlg API parameters.
+*/
+#define RASEDFLAG_PositionDlg 0x00000001
+#define RASEDFLAG_NewEntry 0x00000002
+#define RASEDFLAG_CloneEntry 0x00000004
+#define RASEDFLAG_NoRename 0x00000008
+
+#define RASENTRYDLGW struct tagRASENTRYDLGW
+RASENTRYDLGW
+{
+ IN DWORD dwSize;
+ IN HWND hwndOwner;
+ IN DWORD dwFlags;
+ IN LONG xDlg;
+ IN LONG yDlg;
+ OUT WCHAR szEntry[ RAS_MaxEntryName + 1 ];
+ OUT DWORD dwError;
+ IN DWORD reserved;
+ IN DWORD reserved2;
+};
+
+#define RASENTRYDLGA struct tagRASENTRYDLGA
+RASENTRYDLGA
+{
+ IN DWORD dwSize;
+ IN HWND hwndOwner;
+ IN DWORD dwFlags;
+ IN LONG xDlg;
+ IN LONG yDlg;
+ OUT CHAR szEntry[ RAS_MaxEntryName + 1 ];
+ OUT DWORD dwError;
+ IN DWORD reserved;
+ IN DWORD reserved2;
+};
+
+#ifdef UNICODE
+#define RASENTRYDLG RASENTRYDLGW
+#else
+#define RASENTRYDLG RASENTRYDLGA
+#endif
+
+#define LPRASENTRYDLGW RASENTRYDLGW*
+#define LPRASENTRYDLGA RASENTRYDLGA*
+#define LPRASENTRYDLG RASENTRYDLG*
+
+
+/* RasDialDlg API parameters.
+*/
+#define RASDDFLAG_PositionDlg 0x00000001
+#define RASDDFLAG_LinkFailure 0x80000000
+
+#define RASDIALDLG struct tagRASDIALDLG
+RASDIALDLG
+{
+ IN DWORD dwSize;
+ IN HWND hwndOwner;
+ IN DWORD dwFlags;
+ IN LONG xDlg;
+ IN LONG yDlg;
+ IN DWORD dwSubEntry;
+ OUT DWORD dwError;
+ IN DWORD reserved;
+ IN DWORD reserved2;
+};
+
+#define LPRASDIALDLG RASDIALDLG*
+
+
+/* RasMonitorDlg API parameters.
+*/
+
+#define RASMDPAGE_Status 0
+#define RASMDPAGE_Summary 1
+#define RASMDPAGE_Preferences 2
+
+#define RASMDFLAG_PositionDlg 0x00000001
+#define RASMDFLAG_UpdateDefaults 0x80000000
+
+#define RASMONITORDLG struct tagRASMONITORDLG
+RASMONITORDLG
+{
+ IN DWORD dwSize;
+ IN HWND hwndOwner;
+ IN DWORD dwFlags;
+ IN DWORD dwStartPage;
+ IN LONG xDlg;
+ IN LONG yDlg;
+ OUT DWORD dwError;
+ IN DWORD reserved;
+ IN DWORD reserved2;
+};
+
+#define LPRASMONITORDLG RASMONITORDLG*
+
+
+/* RAS common dialog API prototypes.
+*/
+BOOL APIENTRY RasPhonebookDlgA(
+ LPSTR lpszPhonebook, LPSTR lpszEntry, LPRASPBDLGA lpInfo );
+
+BOOL APIENTRY RasPhonebookDlgW(
+ LPWSTR lpszPhonebook, LPWSTR lpszEntry, LPRASPBDLGW lpInfo );
+
+BOOL APIENTRY RasEntryDlgA(
+ LPSTR lpszPhonebook, LPSTR lpszEntry, LPRASENTRYDLGA lpInfo );
+
+BOOL APIENTRY RasEntryDlgW(
+ LPWSTR lpszPhonebook, LPWSTR lpszEntry, LPRASENTRYDLGW lpInfo );
+
+BOOL APIENTRY RasDialDlgA(
+ LPSTR lpszPhonebook, LPSTR lpszEntry, LPSTR lpszPhoneNumber,
+ LPRASDIALDLG lpInfo );
+
+BOOL APIENTRY RasDialDlgW(
+ LPWSTR lpszPhonebook, LPWSTR lpszEntry, LPWSTR lpszPhoneNumber,
+ LPRASDIALDLG lpInfo );
+
+BOOL APIENTRY RasMonitorDlgA(
+ LPSTR lpszDeviceName, LPRASMONITORDLG lpInfo );
+
+BOOL APIENTRY RasMonitorDlgW(
+ LPWSTR lpszDeviceName, LPRASMONITORDLG lpInfo );
+
+
+#ifdef UNICODE
+#define RasPhonebookDlg RasPhonebookDlgW
+#define RasEntryDlg RasEntryDlgW
+#define RasDialDlg RasDialDlgW
+#define RasMonitorDlg RasMonitorDlgW
+#else
+#define RasPhonebookDlg RasPhonebookDlgA
+#define RasEntryDlg RasEntryDlgA
+#define RasDialDlg RasDialDlgA
+#define RasMonitorDlg RasMonitorDlgA
+#endif
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif // _RASDLG_H_
diff --git a/public/sdk/inc/raserror.h b/public/sdk/inc/raserror.h
new file mode 100644
index 000000000..6194ec2bf
--- /dev/null
+++ b/public/sdk/inc/raserror.h
@@ -0,0 +1,629 @@
+/* Copyright (c) 1992-1996, Microsoft Corporation, all rights reserved
+**
+** raserror.h
+** Remote Access external API
+** RAS specific error codes
+*/
+
+#ifndef _RASERROR_H_
+#define _RASERROR_H_
+
+
+#define RASBASE 600
+#define SUCCESS 0
+
+
+#define PENDING (RASBASE+0)
+/*
+ * An operation is pending.%0
+ */
+#define ERROR_INVALID_PORT_HANDLE (RASBASE+1)
+/*
+ * The port handle is invalid.%0
+ */
+#define ERROR_PORT_ALREADY_OPEN (RASBASE+2)
+/*
+ * The port is already open.%0
+ */
+#define ERROR_BUFFER_TOO_SMALL (RASBASE+3)
+/*
+ * Caller's buffer is too small.%0
+ */
+#define ERROR_WRONG_INFO_SPECIFIED (RASBASE+4)
+/*
+ * Wrong information specified.%0
+ */
+#define ERROR_CANNOT_SET_PORT_INFO (RASBASE+5)
+/*
+ * Cannot set port information.%0
+ */
+#define ERROR_PORT_NOT_CONNECTED (RASBASE+6)
+/*
+ * The port is not connected.%0
+ */
+#define ERROR_EVENT_INVALID (RASBASE+7)
+/*
+ * The event is invalid.%0
+ */
+#define ERROR_DEVICE_DOES_NOT_EXIST (RASBASE+8)
+/*
+ * The device does not exist.%0
+ */
+#define ERROR_DEVICETYPE_DOES_NOT_EXIST (RASBASE+9)
+/*
+ * The device type does not exist.%0
+ */
+#define ERROR_BUFFER_INVALID (RASBASE+10)
+/*
+ * The buffer is invalid.%0
+ */
+#define ERROR_ROUTE_NOT_AVAILABLE (RASBASE+11)
+/*
+ * The route is not available.%0
+ */
+#define ERROR_ROUTE_NOT_ALLOCATED (RASBASE+12)
+/*
+ * The route is not allocated.%0
+ */
+#define ERROR_INVALID_COMPRESSION_SPECIFIED (RASBASE+13)
+/*
+ * Invalid compression specified.%0
+ */
+#define ERROR_OUT_OF_BUFFERS (RASBASE+14)
+/*
+ * Out of buffers.%0
+ */
+#define ERROR_PORT_NOT_FOUND (RASBASE+15)
+/*
+ * The port was not found.%0
+ */
+#define ERROR_ASYNC_REQUEST_PENDING (RASBASE+16)
+/*
+ * An asynchronous request is pending.%0
+ */
+#define ERROR_ALREADY_DISCONNECTING (RASBASE+17)
+/*
+ * The port or device is already disconnecting.%0
+ */
+#define ERROR_PORT_NOT_OPEN (RASBASE+18)
+/*
+ * The port is not open.%0
+ */
+#define ERROR_PORT_DISCONNECTED (RASBASE+19)
+/*
+ * The port is disconnected.%0
+ */
+#define ERROR_NO_ENDPOINTS (RASBASE+20)
+/*
+ * There are no endpoints.%0
+ */
+#define ERROR_CANNOT_OPEN_PHONEBOOK (RASBASE+21)
+/*
+ * Cannot open the phone book file.%0
+ */
+#define ERROR_CANNOT_LOAD_PHONEBOOK (RASBASE+22)
+/*
+ * Cannot load the phone book file.%0
+ */
+#define ERROR_CANNOT_FIND_PHONEBOOK_ENTRY (RASBASE+23)
+/*
+ * Cannot find the phone book entry.%0
+ */
+#define ERROR_CANNOT_WRITE_PHONEBOOK (RASBASE+24)
+/*
+ * Cannot write the phone book file.%0
+ */
+#define ERROR_CORRUPT_PHONEBOOK (RASBASE+25)
+/*
+ * Invalid information found in the phone book file.%0
+ */
+#define ERROR_CANNOT_LOAD_STRING (RASBASE+26)
+/*
+ * Cannot load a string.%0
+ */
+#define ERROR_KEY_NOT_FOUND (RASBASE+27)
+/*
+ * Cannot find key.%0
+ */
+#define ERROR_DISCONNECTION (RASBASE+28)
+/*
+ * The port was disconnected.%0
+ */
+#define ERROR_REMOTE_DISCONNECTION (RASBASE+29)
+/*
+ * The data link was terminated by the remote machine.%0
+ */
+#define ERROR_HARDWARE_FAILURE (RASBASE+30)
+/*
+ * The port was disconnected due to hardware failure.%0
+ */
+#define ERROR_USER_DISCONNECTION (RASBASE+31)
+/*
+ * The port was disconnected by the user.%0
+ */
+#define ERROR_INVALID_SIZE (RASBASE+32)
+/*
+ * The structure size is incorrect.%0
+ */
+#define ERROR_PORT_NOT_AVAILABLE (RASBASE+33)
+/*
+ * The port is already in use or is not configured for Remote Access dial out.%0
+ */
+#define ERROR_CANNOT_PROJECT_CLIENT (RASBASE+34)
+/*
+ * Cannot register your computer on on the remote network.%0
+ */
+#define ERROR_UNKNOWN (RASBASE+35)
+/*
+ * Unknown error.%0
+ */
+#define ERROR_WRONG_DEVICE_ATTACHED (RASBASE+36)
+/*
+ * The wrong device is attached to the port.%0
+ */
+#define ERROR_BAD_STRING (RASBASE+37)
+/*
+ * The string could not be converted.%0
+ */
+#define ERROR_REQUEST_TIMEOUT (RASBASE+38)
+/*
+ * The request has timed out.%0
+ */
+#define ERROR_CANNOT_GET_LANA (RASBASE+39)
+/*
+ * No asynchronous net available.%0
+ */
+#define ERROR_NETBIOS_ERROR (RASBASE+40)
+/*
+ * A NetBIOS error has occurred.%0
+ */
+#define ERROR_SERVER_OUT_OF_RESOURCES (RASBASE+41)
+/*
+ * The server cannot allocate NetBIOS resources needed to support the client.%0
+ */
+#define ERROR_NAME_EXISTS_ON_NET (RASBASE+42)
+/*
+ * One of your NetBIOS names is already registered on the remote network.%0
+ */
+#define ERROR_SERVER_GENERAL_NET_FAILURE (RASBASE+43)
+/*
+ * A network adapter at the server failed.%0
+ */
+#define WARNING_MSG_ALIAS_NOT_ADDED (RASBASE+44)
+/*
+ * You will not receive network message popups.%0
+ */
+#define ERROR_AUTH_INTERNAL (RASBASE+45)
+/*
+ * Internal authentication error.%0
+ */
+#define ERROR_RESTRICTED_LOGON_HOURS (RASBASE+46)
+/*
+ * The account is not permitted to logon at this time of day.%0
+ */
+#define ERROR_ACCT_DISABLED (RASBASE+47)
+/*
+ * The account is disabled.%0
+ */
+#define ERROR_PASSWD_EXPIRED (RASBASE+48)
+/*
+ * The password has expired.%0
+ */
+#define ERROR_NO_DIALIN_PERMISSION (RASBASE+49)
+/*
+ * The account does not have Remote Access permission.%0
+ */
+#define ERROR_SERVER_NOT_RESPONDING (RASBASE+50)
+/*
+ * The Remote Access server is not responding.%0
+ */
+#define ERROR_FROM_DEVICE (RASBASE+51)
+/*
+ * Your modem (or other connecting device) has reported an error.%0
+ */
+#define ERROR_UNRECOGNIZED_RESPONSE (RASBASE+52)
+/*
+ * Unrecognized response from the device.%0
+ */
+#define ERROR_MACRO_NOT_FOUND (RASBASE+53)
+/*
+ * A macro required by the device was not found in the device .INF file section.%0
+ */
+#define ERROR_MACRO_NOT_DEFINED (RASBASE+54)
+/*
+ * A command or response in the device .INF file section refers to an undefined macro.%0
+ */
+#define ERROR_MESSAGE_MACRO_NOT_FOUND (RASBASE+55)
+/*
+ * The <message> macro was not found in the device .INF file secion.%0
+ */
+#define ERROR_DEFAULTOFF_MACRO_NOT_FOUND (RASBASE+56)
+/*
+ * The <defaultoff> macro in the device .INF file section contains an undefined macro.%0
+ */
+#define ERROR_FILE_COULD_NOT_BE_OPENED (RASBASE+57)
+/*
+ * The device .INF file could not be opened.%0
+ */
+#define ERROR_DEVICENAME_TOO_LONG (RASBASE+58)
+/*
+ * The device name in the device .INF or media .INI file is too long.%0
+ */
+#define ERROR_DEVICENAME_NOT_FOUND (RASBASE+59)
+/*
+ * The media .INI file refers to an unknown device name.%0
+ */
+#define ERROR_NO_RESPONSES (RASBASE+60)
+/*
+ * The device .INF file contains no responses for the command.%0
+ */
+#define ERROR_NO_COMMAND_FOUND (RASBASE+61)
+/*
+ * The device .INF file is missing a command.%0
+ */
+#define ERROR_WRONG_KEY_SPECIFIED (RASBASE+62)
+/*
+ * Attempted to set a macro not listed in device .INF file section.%0
+ */
+#define ERROR_UNKNOWN_DEVICE_TYPE (RASBASE+63)
+/*
+ * The media .INI file refers to an unknown device type.%0
+ */
+#define ERROR_ALLOCATING_MEMORY (RASBASE+64)
+/*
+ * Cannot allocate memory.%0
+ */
+#define ERROR_PORT_NOT_CONFIGURED (RASBASE+65)
+/*
+ * The port is not configured for Remote Access.%0
+ */
+#define ERROR_DEVICE_NOT_READY (RASBASE+66)
+/*
+ * Your modem (or other connecting device) is not functioning.%0
+ */
+#define ERROR_READING_INI_FILE (RASBASE+67)
+/*
+ * Cannot read the media .INI file.%0
+ */
+#define ERROR_NO_CONNECTION (RASBASE+68)
+/*
+ * The connection dropped.%0
+ */
+#define ERROR_BAD_USAGE_IN_INI_FILE (RASBASE+69)
+/*
+ * The usage parameter in the media .INI file is invalid.%0
+ */
+#define ERROR_READING_SECTIONNAME (RASBASE+70)
+/*
+ * Cannot read the section name from the media .INI file.%0
+ */
+#define ERROR_READING_DEVICETYPE (RASBASE+71)
+/*
+ * Cannot read the device type from the media .INI file.%0
+ */
+#define ERROR_READING_DEVICENAME (RASBASE+72)
+/*
+ * Cannot read the device name from the media .INI file.%0
+ */
+#define ERROR_READING_USAGE (RASBASE+73)
+/*
+ * Cannot read the usage from the media .INI file.%0
+ */
+#define ERROR_READING_MAXCONNECTBPS (RASBASE+74)
+/*
+ * Cannot read the maximum connection BPS rate from the media .INI file.%0
+ */
+#define ERROR_READING_MAXCARRIERBPS (RASBASE+75)
+/*
+ * Cannot read the maximum carrier BPS rate from the media .INI file.%0
+ */
+#define ERROR_LINE_BUSY (RASBASE+76)
+/*
+ * The line is busy.%0
+ */
+#define ERROR_VOICE_ANSWER (RASBASE+77)
+/*
+ * A person answered instead of a modem.%0
+ */
+#define ERROR_NO_ANSWER (RASBASE+78)
+/*
+ * There is no answer.%0
+ */
+#define ERROR_NO_CARRIER (RASBASE+79)
+/*
+ * Cannot detect carrier.%0
+ */
+#define ERROR_NO_DIALTONE (RASBASE+80)
+/*
+ * There is no dial tone.%0
+ */
+#define ERROR_IN_COMMAND (RASBASE+81)
+/*
+ * General error reported by device.%0
+ */
+#define ERROR_WRITING_SECTIONNAME (RASBASE+82)
+/*
+ * ERROR_WRITING_SECTIONNAME%0
+ */
+#define ERROR_WRITING_DEVICETYPE (RASBASE+83)
+/*
+ * ERROR_WRITING_DEVICETYPE%0
+ */
+#define ERROR_WRITING_DEVICENAME (RASBASE+84)
+/*
+ * ERROR_WRITING_DEVICENAME%0
+ */
+#define ERROR_WRITING_MAXCONNECTBPS (RASBASE+85)
+/*
+ * ERROR_WRITING_MAXCONNECTBPS%0
+ */
+#define ERROR_WRITING_MAXCARRIERBPS (RASBASE+86)
+/*
+ * ERROR_WRITING_MAXCARRIERBPS%0
+ */
+#define ERROR_WRITING_USAGE (RASBASE+87)
+/*
+ * ERROR_WRITING_USAGE%0
+ */
+#define ERROR_WRITING_DEFAULTOFF (RASBASE+88)
+/*
+ * ERROR_WRITING_DEFAULTOFF%0
+ */
+#define ERROR_READING_DEFAULTOFF (RASBASE+89)
+/*
+ * ERROR_READING_DEFAULTOFF%0
+ */
+#define ERROR_EMPTY_INI_FILE (RASBASE+90)
+/*
+ * ERROR_EMPTY_INI_FILE%0
+ */
+#define ERROR_AUTHENTICATION_FAILURE (RASBASE+91)
+/*
+ * Access denied because username and/or password is invalid on the domain.%0
+ */
+#define ERROR_PORT_OR_DEVICE (RASBASE+92)
+/*
+ * Hardware failure in port or attached device.%0
+ */
+#define ERROR_NOT_BINARY_MACRO (RASBASE+93)
+/*
+ * ERROR_NOT_BINARY_MACRO%0
+ */
+#define ERROR_DCB_NOT_FOUND (RASBASE+94)
+/*
+ * ERROR_DCB_NOT_FOUND%0
+ */
+#define ERROR_STATE_MACHINES_NOT_STARTED (RASBASE+95)
+/*
+ * ERROR_STATE_MACHINES_NOT_STARTED%0
+ */
+#define ERROR_STATE_MACHINES_ALREADY_STARTED (RASBASE+96)
+/*
+ * ERROR_STATE_MACHINES_ALREADY_STARTED%0
+ */
+#define ERROR_PARTIAL_RESPONSE_LOOPING (RASBASE+97)
+/*
+ * ERROR_PARTIAL_RESPONSE_LOOPING%0
+ */
+#define ERROR_UNKNOWN_RESPONSE_KEY (RASBASE+98)
+/*
+ * A response keyname in the device .INF file is not in the expected format.%0
+ */
+#define ERROR_RECV_BUF_FULL (RASBASE+99)
+/*
+ * The device response caused buffer overflow.%0
+ */
+#define ERROR_CMD_TOO_LONG (RASBASE+100)
+/*
+ * The expanded command in the device .INF file is too long.%0
+ */
+#define ERROR_UNSUPPORTED_BPS (RASBASE+101)
+/*
+ * The device moved to a BPS rate not supported by the COM driver.%0
+ */
+#define ERROR_UNEXPECTED_RESPONSE (RASBASE+102)
+/*
+ * Device response received when none expected.%0
+ */
+#define ERROR_INTERACTIVE_MODE (RASBASE+103)
+/*
+ * ERROR_INTERACTIVE_MODE%0
+ */
+#define ERROR_BAD_CALLBACK_NUMBER (RASBASE+104)
+/*
+ * ERROR_BAD_CALLBACK_NUMBER
+ */
+#define ERROR_INVALID_AUTH_STATE (RASBASE+105)
+/*
+ * ERROR_INVALID_AUTH_STATE%0
+ */
+#define ERROR_WRITING_INITBPS (RASBASE+106)
+/*
+ * ERROR_WRITING_INITBPS%0
+ */
+#define ERROR_X25_DIAGNOSTIC (RASBASE+107)
+/*
+ * X.25 diagnostic indication.%0
+ */
+#define ERROR_ACCT_EXPIRED (RASBASE+108)
+/*
+ * The account has expired.%0
+ */
+#define ERROR_CHANGING_PASSWORD (RASBASE+109)
+/*
+ * Error changing password on domain. The password may be too short or may match a previously used password.%0
+ */
+#define ERROR_OVERRUN (RASBASE+110)
+/*
+ * Serial overrun errors were detected while communicating with your modem.%0
+ */
+#define ERROR_RASMAN_CANNOT_INITIALIZE (RASBASE+111)
+/*
+ * RasMan initialization failure. Check the event log.%0
+ */
+#define ERROR_BIPLEX_PORT_NOT_AVAILABLE (RASBASE+112)
+/*
+ * Biplex port initializing. Wait a few seconds and redial.%0
+ */
+#define ERROR_NO_ACTIVE_ISDN_LINES (RASBASE+113)
+/*
+ * No active ISDN lines are available.%0
+ */
+#define ERROR_NO_ISDN_CHANNELS_AVAILABLE (RASBASE+114)
+/*
+ * No ISDN channels are available to make the call.%0
+ */
+#define ERROR_TOO_MANY_LINE_ERRORS (RASBASE+115)
+/*
+ * Too many errors occured because of poor phone line quality.%0
+ */
+#define ERROR_IP_CONFIGURATION (RASBASE+116)
+/*
+ * The Remote Access IP configuration is unusable.%0
+ */
+#define ERROR_NO_IP_ADDRESSES (RASBASE+117)
+/*
+ * No IP addresses are available in the static pool of Remote Access IP addresses.%0
+ */
+#define ERROR_PPP_TIMEOUT (RASBASE+118)
+/*
+ * Timed out waiting for a valid response from the remote PPP peer.%0
+ */
+#define ERROR_PPP_REMOTE_TERMINATED (RASBASE+119)
+/*
+ * PPP terminated by remote machine.%0
+ */
+#define ERROR_PPP_NO_PROTOCOLS_CONFIGURED (RASBASE+120)
+/*
+ * No PPP control protocols configured.%0
+ */
+#define ERROR_PPP_NO_RESPONSE (RASBASE+121)
+/*
+ * Remote PPP peer is not responding.%0
+ */
+#define ERROR_PPP_INVALID_PACKET (RASBASE+122)
+/*
+ * The PPP packet is invalid.%0
+ */
+#define ERROR_PHONE_NUMBER_TOO_LONG (RASBASE+123)
+/*
+ * The phone number including prefix and suffix is too long.%0
+ */
+#define ERROR_IPXCP_NO_DIALOUT_CONFIGURED (RASBASE+124)
+/*
+ * The IPX protocol cannot dial-out on the port because the machine is an IPX router.%0
+ */
+#define ERROR_IPXCP_NO_DIALIN_CONFIGURED (RASBASE+125)
+/*
+ * The IPX protocol cannot dial-in on the port because the IPX router is not installed.%0
+ */
+#define ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE (RASBASE+126)
+/*
+ * The IPX protocol cannot be used for dial-out on more than one port at a time.%0
+ */
+#define ERROR_ACCESSING_TCPCFGDLL (RASBASE+127)
+/*
+ * Cannot access TCPCFG.DLL.%0
+ */
+#define ERROR_NO_IP_RAS_ADAPTER (RASBASE+128)
+/*
+ * Cannot find an IP adapter bound to Remote Access.%0
+ */
+#define ERROR_SLIP_REQUIRES_IP (RASBASE+129)
+/*
+ * SLIP cannot be used unless the IP protocol is installed.%0
+ */
+#define ERROR_PROJECTION_NOT_COMPLETE (RASBASE+130)
+/*
+ * Computer registration is not complete.%0
+ */
+#define ERROR_PROTOCOL_NOT_CONFIGURED (RASBASE+131)
+/*
+ * The protocol is not configured.%0
+ */
+#define ERROR_PPP_NOT_CONVERGING (RASBASE+132)
+/*
+ * The PPP negotiation is not converging.%0
+ */
+#define ERROR_PPP_CP_REJECTED (RASBASE+133)
+/*
+ * The PPP control protocol for this network protocol is not available on the server.%0
+ */
+#define ERROR_PPP_LCP_TERMINATED (RASBASE+134)
+/*
+ * The PPP link control protocol terminated.%0
+ */
+#define ERROR_PPP_REQUIRED_ADDRESS_REJECTED (RASBASE+135)
+/*
+ * The requested address was rejected by the server.%0
+ */
+#define ERROR_PPP_NCP_TERMINATED (RASBASE+136)
+/*
+ * The remote computer terminated the control protocol.%0
+ */
+#define ERROR_PPP_LOOPBACK_DETECTED (RASBASE+137)
+/*
+ * Loopback detected.%0
+ */
+#define ERROR_PPP_NO_ADDRESS_ASSIGNED (RASBASE+138)
+/*
+ * The server did not assign an address.%0
+ */
+#define ERROR_CANNOT_USE_LOGON_CREDENTIALS (RASBASE+139)
+/*
+ * The authentication protocol required by the remote server cannot use the Windows NT encrypted password. Redial, entering the password explicitly.%0
+ */
+#define ERROR_TAPI_CONFIGURATION (RASBASE+140)
+/*
+ * Invalid TAPI configuration.%0
+ */
+#define ERROR_NO_LOCAL_ENCRYPTION (RASBASE+141)
+/*
+ * The local computer does not support encryption.%0
+ */
+#define ERROR_NO_REMOTE_ENCRYPTION (RASBASE+142)
+/*
+ * The remote server does not support encryption.%0
+ */
+#define ERROR_REMOTE_REQUIRES_ENCRYPTION (RASBASE+143)
+/*
+ * The remote server requires encryption.%0
+ */
+#define ERROR_IPXCP_NET_NUMBER_CONFLICT (RASBASE+144)
+/*
+ * Cannot use the IPX network number assigned by remote server. Check the event log.%0
+ */
+#define ERROR_INVALID_SMM (RASBASE+145)
+/*
+ * ERROR_INVALID_SMM%0
+ */
+#define ERROR_SMM_UNINITIALIZED (RASBASE+146)
+/*
+ * ERROR_SMM_UNINITIALIZED%0
+ */
+#define ERROR_NO_MAC_FOR_PORT (RASBASE+147)
+/*
+ * ERROR_NO_MAC_FOR_PORT%0
+ */
+#define ERROR_SMM_TIMEOUT (RASBASE+148)
+/*
+ * ERROR_SMM_TIMEOUT%0
+ */
+#define ERROR_BAD_PHONE_NUMBER (RASBASE+149)
+/*
+ * ERROR_BAD_PHONE_NUMBER%0
+ */
+#define ERROR_WRONG_MODULE (RASBASE+150)
+/*
+ * ERROR_WRONG_MODULE%0
+ */
+#define ERROR_INVALID_CALLBACK_NUMBER (RASBASE+151)
+/*
+ * Invalid callback number. Only the characters 0 to 9, T, P, W, (, ), -, @, and space are allowed in the number.%0
+ */
+#define ERROR_SCRIPT_SYNTAX (RASBASE+152)
+/*
+ * A syntax error was encountered while processing a script.%0
+ */
+#define RASBASEEND (RASBASE+152)
+#endif // _RASERROR_H_
diff --git a/public/sdk/inc/rassapi.h b/public/sdk/inc/rassapi.h
new file mode 100644
index 000000000..0728bad53
--- /dev/null
+++ b/public/sdk/inc/rassapi.h
@@ -0,0 +1,385 @@
+/******************************************************************\
+* Microsoft Windows NT *
+* Copyright(c) Microsoft Corp., 1992-1996 *
+\******************************************************************/
+
+/*++
+
+Module Name:
+
+ RASSAPI.H
+
+Description:
+
+ This file contains the RASADMIN structures, defines and
+ function prototypes for the following APIs and they can
+ be imported from RASSAPI.DLL:
+
+ RasAdminServerGetInfo
+ RasAdminGetUserAccountServer
+ RasAdminUserSetInfo
+ RasAdminUserGetInfo
+ RasAdminPortEnum
+ RasAdminPortGetInfo
+ RasAdminPortClearStatistics
+ RasAdminPortDisconnect
+ RasAdminFreeBuffer
+
+Note:
+
+ This header file and the sources containing the APIs will work
+ only with UNICODE strings.
+
+--*/
+
+
+#ifndef _RASSAPI_H_
+#define _RASSAPI_H_
+
+#ifndef UNLEN
+#include <lmcons.h>
+#endif
+
+#define RASSAPI_MAX_PHONENUMBER_SIZE 128
+#define RASSAPI_MAX_MEDIA_NAME 16
+#define RASSAPI_MAX_PORT_NAME 16
+#define RASSAPI_MAX_DEVICE_NAME 128
+#define RASSAPI_MAX_DEVICETYPE_NAME 16
+#define RASSAPI_MAX_PARAM_KEY_SIZE 32
+
+// Bits indicating user's Remote Access privileges and mask to isolate
+// call back privilege.
+//
+// Note: Bit 0 MUST represent NoCallback due to a quirk of the "userparms"
+// storage method. When a new LAN Manager user is created, bit 0 of the
+// userparms field is set to 1 and all other bits are 0. These bits are
+// arranged so this "no Dial-In info" state maps to the "default Dial-In
+// privilege" state.
+
+#define RASPRIV_NoCallback 0x01
+#define RASPRIV_AdminSetCallback 0x02
+#define RASPRIV_CallerSetCallback 0x04
+#define RASPRIV_DialinPrivilege 0x08
+
+#define RASPRIV_CallbackType (RASPRIV_AdminSetCallback \
+ | RASPRIV_CallerSetCallback \
+ | RASPRIV_NoCallback)
+
+//
+// Modem condition codes
+//
+#define RAS_MODEM_OPERATIONAL 1 // No modem errors.
+#define RAS_MODEM_NOT_RESPONDING 2
+#define RAS_MODEM_HARDWARE_FAILURE 3
+#define RAS_MODEM_INCORRECT_RESPONSE 4
+#define RAS_MODEM_UNKNOWN 5
+//
+// Line condition codes
+//
+#define RAS_PORT_NON_OPERATIONAL 1
+#define RAS_PORT_DISCONNECTED 2
+#define RAS_PORT_CALLING_BACK 3
+#define RAS_PORT_LISTENING 4
+#define RAS_PORT_AUTHENTICATING 5
+#define RAS_PORT_AUTHENTICATED 6
+#define RAS_PORT_INITIALIZING 7
+
+// The following three structures are same as the ones
+// defined in rasman.h and have been renamed to prevent
+// redefinitions when both header files are included.
+
+enum RAS_PARAMS_FORMAT {
+
+ ParamNumber = 0,
+
+ ParamString = 1
+
+} ;
+typedef enum RAS_PARAMS_FORMAT RAS_PARAMS_FORMAT ;
+
+union RAS_PARAMS_VALUE {
+
+ DWORD Number ;
+
+ struct {
+ DWORD Length ;
+ PCHAR Data ;
+ } String ;
+} ;
+typedef union RAS_PARAMS_VALUE RAS_PARAMS_VALUE ;
+
+struct RAS_PARAMETERS {
+
+ CHAR P_Key [RASSAPI_MAX_PARAM_KEY_SIZE] ;
+
+ RAS_PARAMS_FORMAT P_Type ;
+
+ BYTE P_Attributes ;
+
+ RAS_PARAMS_VALUE P_Value ;
+
+} ;
+typedef struct RAS_PARAMETERS RAS_PARAMETERS ;
+
+// structures used by the RASADMIN APIs
+
+typedef struct _RAS_USER_0
+{
+ BYTE bfPrivilege;
+ WCHAR szPhoneNumber[ RASSAPI_MAX_PHONENUMBER_SIZE + 1];
+} RAS_USER_0, *PRAS_USER_0;
+
+typedef struct _RAS_PORT_0
+{
+ WCHAR wszPortName[RASSAPI_MAX_PORT_NAME];
+ WCHAR wszDeviceType[RASSAPI_MAX_DEVICETYPE_NAME];
+ WCHAR wszDeviceName[RASSAPI_MAX_DEVICE_NAME];
+ WCHAR wszMediaName[RASSAPI_MAX_MEDIA_NAME];
+ DWORD reserved;
+ DWORD Flags;
+ WCHAR wszUserName[UNLEN + 1];
+ WCHAR wszComputer[NETBIOS_NAME_LEN];
+ DWORD dwStartSessionTime; // seconds from 1/1/1970
+ WCHAR wszLogonDomain[DNLEN + 1];
+ BOOL fAdvancedServer;
+} RAS_PORT_0, *PRAS_PORT_0;
+
+
+// Possible values for MediaId
+
+#define MEDIA_UNKNOWN 0
+#define MEDIA_SERIAL 1
+#define MEDIA_RAS10_SERIAL 2
+#define MEDIA_X25 3
+#define MEDIA_ISDN 4
+
+
+// Possible bits set in Flags field
+
+#define USER_AUTHENTICATED 0x0001
+#define MESSENGER_PRESENT 0x0002
+#define PPP_CLIENT 0x0004
+#define GATEWAY_ACTIVE 0x0008
+#define REMOTE_LISTEN 0x0010
+#define PORT_MULTILINKED 0x0020
+
+
+typedef ULONG IPADDR;
+
+// The following PPP structures are same as the ones
+// defined in rasppp.h and have been renamed to prevent
+// redefinitions when both header files are included
+// in a module.
+
+/* Maximum length of address string, e.g. "255.255.255.255" for IP.
+*/
+#define RAS_IPADDRESSLEN 15
+#define RAS_IPXADDRESSLEN 22
+#define RAS_ATADDRESSLEN 32
+
+typedef struct _RAS_PPP_NBFCP_RESULT
+{
+ DWORD dwError;
+ DWORD dwNetBiosError;
+ CHAR szName[ NETBIOS_NAME_LEN + 1 ];
+ WCHAR wszWksta[ NETBIOS_NAME_LEN + 1 ];
+} RAS_PPP_NBFCP_RESULT;
+
+typedef struct _RAS_PPP_IPCP_RESULT
+{
+ DWORD dwError;
+ WCHAR wszAddress[ RAS_IPADDRESSLEN + 1 ];
+} RAS_PPP_IPCP_RESULT;
+
+typedef struct _RAS_PPP_IPXCP_RESULT
+{
+ DWORD dwError;
+ WCHAR wszAddress[ RAS_IPXADDRESSLEN + 1 ];
+} RAS_PPP_IPXCP_RESULT;
+
+typedef struct _RAS_PPP_ATCP_RESULT
+{
+ DWORD dwError;
+ WCHAR wszAddress[ RAS_ATADDRESSLEN + 1 ];
+} RAS_PPP_ATCP_RESULT;
+
+typedef struct _RAS_PPP_PROJECTION_RESULT
+{
+ RAS_PPP_NBFCP_RESULT nbf;
+ RAS_PPP_IPCP_RESULT ip;
+ RAS_PPP_IPXCP_RESULT ipx;
+ RAS_PPP_ATCP_RESULT at;
+} RAS_PPP_PROJECTION_RESULT;
+
+typedef struct _RAS_PORT_1
+{
+ RAS_PORT_0 rasport0;
+ DWORD LineCondition;
+ DWORD HardwareCondition;
+ DWORD LineSpeed; // in bits/second
+ WORD NumStatistics;
+ WORD NumMediaParms;
+ DWORD SizeMediaParms;
+ RAS_PPP_PROJECTION_RESULT ProjResult;
+} RAS_PORT_1, *PRAS_PORT_1;
+
+typedef struct _RAS_PORT_STATISTICS
+{
+ // The connection statistics are followed by port statistics
+ // A connection is across multiple ports.
+ DWORD dwBytesXmited;
+ DWORD dwBytesRcved;
+ DWORD dwFramesXmited;
+ DWORD dwFramesRcved;
+ DWORD dwCrcErr;
+ DWORD dwTimeoutErr;
+ DWORD dwAlignmentErr;
+ DWORD dwHardwareOverrunErr;
+ DWORD dwFramingErr;
+ DWORD dwBufferOverrunErr;
+ DWORD dwBytesXmitedUncompressed;
+ DWORD dwBytesRcvedUncompressed;
+ DWORD dwBytesXmitedCompressed;
+ DWORD dwBytesRcvedCompressed;
+
+ // the following are the port statistics
+ DWORD dwPortBytesXmited;
+ DWORD dwPortBytesRcved;
+ DWORD dwPortFramesXmited;
+ DWORD dwPortFramesRcved;
+ DWORD dwPortCrcErr;
+ DWORD dwPortTimeoutErr;
+ DWORD dwPortAlignmentErr;
+ DWORD dwPortHardwareOverrunErr;
+ DWORD dwPortFramingErr;
+ DWORD dwPortBufferOverrunErr;
+ DWORD dwPortBytesXmitedUncompressed;
+ DWORD dwPortBytesRcvedUncompressed;
+ DWORD dwPortBytesXmitedCompressed;
+ DWORD dwPortBytesRcvedCompressed;
+
+} RAS_PORT_STATISTICS, *PRAS_PORT_STATISTICS;
+
+//
+// Server version numbers
+//
+#define RASDOWNLEVEL 10 // identifies a LM RAS 1.0 server
+#define RASADMIN_35 35 // Identifies a NT RAS 3.5 server or client
+#define RASADMIN_CURRENT 40 // Identifies a NT RAS 4.0 server or client
+
+
+typedef struct _RAS_SERVER_0
+{
+ WORD TotalPorts; // Total ports configured on the server
+ WORD PortsInUse; // Ports currently in use by remote clients
+ DWORD RasVersion; // version of RAS server
+} RAS_SERVER_0, *PRAS_SERVER_0;
+
+
+//
+// function prototypes
+//
+
+DWORD APIENTRY RasAdminServerGetInfo(
+ IN const WCHAR * lpszServer,
+ OUT PRAS_SERVER_0 pRasServer0
+ );
+
+DWORD APIENTRY RasAdminGetUserAccountServer(
+ IN const WCHAR * lpszDomain,
+ IN const WCHAR * lpszServer,
+ OUT LPWSTR lpszUserAccountServer
+ );
+
+DWORD APIENTRY RasAdminUserGetInfo(
+ IN const WCHAR * lpszUserAccountServer,
+ IN const WCHAR * lpszUser,
+ OUT PRAS_USER_0 pRasUser0
+ );
+
+DWORD APIENTRY RasAdminUserSetInfo(
+ IN const WCHAR * lpszUserAccountServer,
+ IN const WCHAR * lpszUser,
+ IN const PRAS_USER_0 pRasUser0
+ );
+
+DWORD APIENTRY RasAdminPortEnum(
+ IN const WCHAR * lpszServer,
+ OUT PRAS_PORT_0 * ppRasPort0,
+ OUT WORD * pcEntriesRead
+ );
+
+DWORD APIENTRY RasAdminPortGetInfo(
+ IN const WCHAR * lpszServer,
+ IN const WCHAR * lpszPort,
+ OUT RAS_PORT_1 * pRasPort1,
+ OUT RAS_PORT_STATISTICS * pRasStats,
+ OUT RAS_PARAMETERS ** ppRasParams
+ );
+
+DWORD APIENTRY RasAdminPortClearStatistics(
+ IN const WCHAR * lpszServer,
+ IN const WCHAR * lpszPort
+ );
+
+DWORD APIENTRY RasAdminPortDisconnect(
+ IN const WCHAR * lpszServer,
+ IN const WCHAR * lpszPort
+ );
+
+DWORD APIENTRY RasAdminFreeBuffer(
+ PVOID Pointer
+ );
+
+DWORD APIENTRY RasAdminGetErrorString(
+ IN UINT ResourceId,
+ OUT WCHAR * lpszString,
+ IN DWORD InBufSize );
+
+BOOL APIENTRY RasAdminAcceptNewConnection (
+ IN RAS_PORT_1 * pRasPort1,
+ IN RAS_PORT_STATISTICS * pRasStats,
+ IN RAS_PARAMETERS * pRasParams
+ );
+
+VOID APIENTRY RasAdminConnectionHangupNotification (
+ IN RAS_PORT_1 * pRasPort1,
+ IN RAS_PORT_STATISTICS * pRasStats,
+ IN RAS_PARAMETERS * pRasParams
+ );
+
+DWORD APIENTRY RasAdminGetIpAddressForUser (
+ IN WCHAR * lpszUserName,
+ IN WCHAR * lpszPortName,
+ IN OUT IPADDR * pipAddress,
+ OUT BOOL * bNotifyRelease
+ );
+
+VOID APIENTRY RasAdminReleaseIpAddress (
+ IN WCHAR * lpszUserName,
+ IN WCHAR * lpszPortName,
+ IN IPADDR * pipAddress
+ );
+
+// The following two APIs are used to get/set
+// RAS user permissions in to a UsrParms buffer
+// obtained by a call to NetUserGetInfo.
+//
+// Note that RasAdminUserGetInfo and RasAdminUserSetInfo
+// are the APIs you should be using for getting and
+// setting RAS permissions.
+
+DWORD APIENTRY RasAdminGetUserParms(
+ IN WCHAR * lpszParms,
+ OUT PRAS_USER_0 pRasUser0
+ );
+
+DWORD APIENTRY RasAdminSetUserParms(
+ IN OUT WCHAR * lpszParms,
+ IN DWORD cchNewParms,
+ IN PRAS_USER_0 pRasUser0
+ );
+
+#endif // _RASSAPI_H_
+
+
diff --git a/public/sdk/inc/rasshost.h b/public/sdk/inc/rasshost.h
new file mode 100644
index 000000000..9d7de13e6
--- /dev/null
+++ b/public/sdk/inc/rasshost.h
@@ -0,0 +1,149 @@
+/********************************************************************/
+/** Copyright(c) 1989-1996 Microsoft Corporation. **/
+/********************************************************************/
+
+//***
+//
+// Filename: rasshost.h
+//
+// Description: This header defines the interface between third party security
+// DLLs and the RAS server.
+//
+
+#ifndef _RASSHOST_
+#define _RASSHOST_
+
+#include <rassapi.h>
+
+typedef DWORD HPORT;
+
+typedef struct _SECURITY_MESSAGE
+{
+ DWORD dwMsgId;
+
+ HPORT hPort;
+
+ DWORD dwError; // Should be non-zero only if error
+ // occurred during the security dialog.
+ // Should contain errors from winerror.h
+ // or raserror.h
+ CHAR UserName[UNLEN+1]; // Should always contain username if
+ // dwMsgId is SUCCESS/FAILURE
+
+ CHAR Domain[DNLEN+1]; // Should always contain domain if
+ // dwMsgId is SUCCESS/FAILURE
+
+} SECURITY_MESSAGE, *PSECURITY_MESSAGE;
+
+
+// Values for dwMsgId in SECURITY_MESSAGE structure
+
+#define SECURITYMSG_SUCCESS 1
+#define SECURITYMSG_FAILURE 2
+#define SECURITYMSG_ERROR 3
+
+// Used by RasSecurityGetInfo call
+
+typedef struct _RAS_SECURITY_INFO
+{
+
+ DWORD LastError; // SUCCESS = receive completed
+ // PENDING = receive pending
+ // else completed with error
+
+ DWORD BytesReceived; // only valid if LastError == SUCCESS
+
+ CHAR DeviceName[RASSAPI_MAX_DEVICE_NAME+1];
+
+
+}RAS_SECURITY_INFO,*PRAS_SECURITY_INFO;
+
+typedef DWORD (WINAPI *RASSECURITYPROC)();
+
+//
+// Called by third party DLL to notify the supervisor of termination of
+// the security dialog
+//
+
+VOID WINAPI
+RasSecurityDialogComplete(
+ IN SECURITY_MESSAGE * pSecMsg // Pointer to the above info. structure
+);
+
+//
+// Called by supervisor into the security DLL to notify it to begin the
+// security dialog for a client.
+//
+// Should return errors from winerror.h or raserror.h
+//
+
+DWORD WINAPI
+RasSecurityDialogBegin(
+ IN HPORT hPort, // RAS handle to port
+ IN PBYTE pSendBuf, // Pointer to the buffer used in
+ // RasSecurityDialogSend
+ IN DWORD SendBufSize, // Size of above bufer in bytes
+ IN PBYTE pRecvBuf, // Pointer to the buffer used in
+ // RasSecurityDialogReceive
+ IN DWORD RecvBufSize, // Size of above buffer
+ IN VOID (WINAPI *RasSecurityDialogComplete)( SECURITY_MESSAGE* )
+ // Pointer to function RasSecurityDialogComplete.
+ // Guaranteed to be the same on every call.
+);
+
+//
+// Called by supervisor into the security DLL to notify it to stop the
+// security dialog for a client. If this call returns an error, then it is not
+// neccesary for the dll to call RasSecurityDialogComplete. Otherwise the DLL
+// must call RasSecurityDialogComplete.
+//
+// Should return errors from winerror.h or raserror.h
+//
+
+DWORD WINAPI
+RasSecurityDialogEnd(
+ IN HPORT hPort // RAS handle to port.
+);
+
+//
+// The following entrypoints should be loaded by calling GetProcAddress from
+// RasMan.lib
+//
+// Called to send data to remote host
+// Will return errors from winerror.h or raserror.h
+//
+
+DWORD WINAPI
+RasSecurityDialogSend(
+ IN HPORT hPort, // RAS handle to port.
+ IN PBYTE pBuffer, // Pointer to buffer containing data to send
+ IN WORD BufferLength // Length of above buffer.
+);
+
+//
+// Called to receive data from remote host
+// Will return errors from winerror.h or raserror.h
+//
+
+DWORD WINAPI
+RasSecurityDialogReceive(
+ IN HPORT hPort, // RAS handle to port.
+ IN PBYTE pBuffer, // Pointer to buffer to receive data
+ IN PWORD pBufferLength, // length of data received in bytes.
+ IN DWORD Timeout, // in seconds
+ IN HANDLE hEvent // Event to set when receive completes or
+ // timeouts
+);
+
+//
+// Called to get Information about port.
+// Will return errors from winerror.h or raserror.h
+//
+
+DWORD WINAPI
+RasSecurityDialogGetInfo(
+ IN HPORT hPort, // RAS handle to port.
+ IN RAS_SECURITY_INFO* pBuffer // Pointer to get info structure.
+);
+
+#endif
diff --git a/public/sdk/inc/rchanb.h b/public/sdk/inc/rchanb.h
new file mode 100644
index 000000000..96ce7fcdc
--- /dev/null
+++ b/public/sdk/inc/rchanb.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: rchanb.h
+//
+// Contents: Replacement for rchanb.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/recguids.h b/public/sdk/inc/recguids.h
new file mode 100644
index 000000000..080e686ac
--- /dev/null
+++ b/public/sdk/inc/recguids.h
@@ -0,0 +1,13 @@
+/*
+ * recguids.h - OLE reconciliation interface GUID definitions.
+ */
+
+
+/* GUIDs
+ ********/
+
+DEFINE_GUID(IID_IReconcileInitiator, 0x99180161L, 0xDA16, 0x101A, 0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
+DEFINE_GUID(IID_IReconcilableObject, 0x99180162L, 0xDA16, 0x101A, 0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
+DEFINE_GUID(IID_INotifyReplica, 0x99180163L, 0xDA16, 0x101A, 0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
+DEFINE_GUID(IID_IBriefcaseInitiator, 0x99180164L, 0xDA16, 0x101A, 0x93, 0x5C, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
+
diff --git a/public/sdk/inc/reconcil.h b/public/sdk/inc/reconcil.h
new file mode 100644
index 000000000..68c226a35
--- /dev/null
+++ b/public/sdk/inc/reconcil.h
@@ -0,0 +1,201 @@
+/*
+ * reconcil.h - OLE reconciliation interface definitions.
+ */
+
+
+#ifndef __RECONCIL_H__
+#define __RECONCIL_H__
+
+
+/* Headers
+ **********/
+
+#include <recguids.h>
+
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++. */
+#endif /* __cplusplus */
+
+
+/* Constants
+ ************/
+
+/* for use in IStorage::SetStateBits() */
+
+#define STATEBITS_FLAT (0x0001)
+
+/* reconciliation SCODEs */
+
+#define REC_S_IDIDTHEUPDATES MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x1000)
+#define REC_S_NOTCOMPLETE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x1001)
+#define REC_S_NOTCOMPLETEBUTPROPAGATE MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_ITF, 0x1002)
+
+#define REC_E_ABORTED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000)
+#define REC_E_NOCALLBACK MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001)
+#define REC_E_NORESIDUES MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1002)
+#define REC_E_TOODIFFERENT MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1003)
+#define REC_E_INEEDTODOTHEUPDATES MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1004)
+
+
+/* Interfaces
+ *************/
+
+#undef INTERFACE
+#define INTERFACE INotifyReplica
+
+DECLARE_INTERFACE_(INotifyReplica, IUnknown)
+{
+ /* IUnknown methods */
+
+ STDMETHOD(QueryInterface)(THIS_
+ REFIID riid,
+ PVOID *ppvObject) PURE;
+
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ /* INotifyReplica methods */
+
+ STDMETHOD(YouAreAReplica)(THIS_
+ ULONG ulcOtherReplicas,
+ IMoniker **rgpmkOtherReplicas) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IReconcileInitiator
+
+DECLARE_INTERFACE_(IReconcileInitiator, IUnknown)
+{
+ /* IUnknown methods */
+
+ STDMETHOD(QueryInterface)(THIS_
+ REFIID riid,
+ PVOID *ppvObject) PURE;
+
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ /* IReconcileInitiator methods */
+
+ STDMETHOD(SetAbortCallback)(THIS_
+ IUnknown *punkForAbort) PURE;
+
+ STDMETHOD(SetProgressFeedback)(THIS_
+ ULONG ulProgress,
+ ULONG ulProgressMax) PURE;
+};
+
+/* IReconcilableObject::Reconcile() flags */
+
+typedef enum _reconcilef
+{
+ /* interaction with the user is allowed */
+
+ RECONCILEF_MAYBOTHERUSER = 0x0001,
+
+ /*
+ * hwndProgressFeedback may be used to provide reconciliation progress
+ * feedback to the user.
+ */
+
+ RECONCILEF_FEEDBACKWINDOWVALID = 0x0002,
+
+ /* residue support not required */
+
+ RECONCILEF_NORESIDUESOK = 0x0004,
+
+ /* caller not interested in callee's residues */
+
+ RECONCILEF_OMITSELFRESIDUE = 0x0008,
+
+ /*
+ * Reconcile() call resuming after a previous Reconcile() call returned
+ * REC_E_NOTCOMPLETE
+ */
+
+ RECONCILEF_RESUMERECONCILIATION = 0x0010,
+
+ /* Object may perform all updates. */
+
+ RECONCILEF_YOUMAYDOTHEUPDATES = 0x0020,
+
+ /* Only this object has been changed. */
+
+ RECONCILEF_ONLYYOUWERECHANGED = 0x0040,
+
+ /* flag combinations */
+
+ ALL_RECONCILE_FLAGS = (RECONCILEF_MAYBOTHERUSER |
+ RECONCILEF_FEEDBACKWINDOWVALID |
+ RECONCILEF_NORESIDUESOK |
+ RECONCILEF_OMITSELFRESIDUE |
+ RECONCILEF_RESUMERECONCILIATION |
+ RECONCILEF_YOUMAYDOTHEUPDATES |
+ RECONCILEF_ONLYYOUWERECHANGED)
+}
+RECONCILEF;
+
+#undef INTERFACE
+#define INTERFACE IReconcilableObject
+
+DECLARE_INTERFACE_(IReconcilableObject, IUnknown)
+{
+ /* IUnknown methods */
+
+ STDMETHOD(QueryInterface)(THIS_
+ REFIID riid,
+ PVOID *ppvObject) PURE;
+
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ /* IReconcilableObject methods */
+
+ STDMETHOD(Reconcile)(THIS_
+ IReconcileInitiator *pInitiator,
+ DWORD dwFlags,
+ HWND hwndOwner,
+ HWND hwndProgressFeedback,
+ ULONG ulcInput,
+ IMoniker **rgpmkOtherInput,
+ PLONG plOutIndex,
+ IStorage *pstgNewResidues,
+ PVOID pvReserved) PURE;
+
+ STDMETHOD(GetProgressFeedbackMaxEstimate)(THIS_
+ PULONG pulProgressMax) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IBriefcaseInitiator
+
+DECLARE_INTERFACE_(IBriefcaseInitiator, IUnknown)
+{
+ /* IUnknown methods */
+
+ STDMETHOD(QueryInterface)(THIS_
+ REFIID riid,
+ PVOID *ppvObject) PURE;
+
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ /* IBriefcaseInitiator methods */
+
+ STDMETHOD(IsMonikerInBriefcase)(THIS_
+ IMoniker *pmk) PURE;
+};
+
+
+#ifdef __cplusplus
+} /* End of extern "C" {. */
+#endif /* __cplusplus */
+
+
+#endif /* ! __RECONCIL_H__ */
+
diff --git a/public/sdk/inc/regapix.h b/public/sdk/inc/regapix.h
new file mode 100644
index 000000000..269b5b34d
--- /dev/null
+++ b/public/sdk/inc/regapix.h
@@ -0,0 +1,453 @@
+//
+// REGAPIX.H
+//
+// Copyright (C) Microsoft Corporation, 1995
+//
+// Public definitions for the VMM registry library (all modes).
+//
+
+#ifndef _REGAPIX_
+#define _REGAPIX_
+
+/*XLATOFF*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*XLATON*/
+
+/*XLATOFF*/
+#if defined(_INC_WINDOWS) && !defined(VXD) && !defined(REALMODE)
+#define REGAPI WINAPI
+#else
+#if defined(IS_32)
+#ifndef FAR
+#define FAR
+#endif
+#define REGAPI __cdecl
+#else
+#ifndef FAR
+#define FAR _far
+#endif
+#define REGAPI _far _cdecl
+#endif // defined(IS_32)
+#endif // defined(_INC_WINDOWS) && !defined(VXD) && !defined(REALMODE)
+/*XLATON*/
+
+#ifndef _REGPRIV_
+#ifndef _INC_WINDOWS
+typedef DWORD HKEY;
+#endif
+#endif
+typedef HKEY FAR* LPHKEY;
+
+//
+// Predefined key handles.
+//
+
+#ifndef HKEY_LOCAL_MACHINE
+#define HKEY_CLASSES_ROOT ((HKEY) 0x80000000)
+#define HKEY_CURRENT_USER ((HKEY) 0x80000001)
+#define HKEY_LOCAL_MACHINE ((HKEY) 0x80000002)
+#define HKEY_USERS ((HKEY) 0x80000003)
+#define HKEY_PERFORMANCE_DATA ((HKEY) 0x80000004)
+#define HKEY_CURRENT_CONFIG ((HKEY) 0x80000005)
+#define HKEY_DYN_DATA ((HKEY) 0x80000006)
+#define HKEY_PREDEF_KEYS 7
+#endif
+
+//
+// Maximum size of registry data elements.
+//
+
+#define MAXIMUM_SUB_KEY_LENGTH 256
+#define MAXIMUM_VALUE_NAME_LENGTH 256
+#define MAXIMUM_DATA_LENGTH 16384
+
+//
+// Standard data types.
+//
+
+#ifndef REG_SZ
+#define REG_SZ 1
+#endif
+
+#ifndef REG_BINARY
+#define REG_BINARY 3
+#endif
+
+#ifndef REG_DWORD
+#define REG_DWORD 4
+#endif
+
+//
+// Registry error codes.
+//
+
+#ifndef ERROR_SUCCESS
+#define ERROR_SUCCESS 0
+#endif
+
+#ifndef ERROR_INVALID_FUNCTION
+#define ERROR_INVALID_FUNCTION 1
+#endif
+
+#ifndef ERROR_FILE_NOT_FOUND
+#define ERROR_FILE_NOT_FOUND 2
+#endif
+
+#ifndef ERROR_ACCESS_DENIED
+#define ERROR_ACCESS_DENIED 5
+#endif
+
+#ifndef ERROR_OUTOFMEMORY
+#define ERROR_OUTOFMEMORY 14
+#endif
+
+#ifndef ERROR_INVALID_PARAMETER
+#define ERROR_INVALID_PARAMETER 87
+#endif
+
+#ifndef ERROR_LOCK_FAILED
+#define ERROR_LOCK_FAILED 167
+#endif
+
+#ifndef ERROR_MORE_DATA
+#define ERROR_MORE_DATA 234
+#endif
+
+#ifndef ERROR_NO_MORE_ITEMS
+#define ERROR_NO_MORE_ITEMS 259
+#endif
+
+#ifndef ERROR_BADDB
+#define ERROR_BADDB 1009
+#endif
+
+#ifndef ERROR_BADKEY
+#define ERROR_BADKEY 1010
+#endif
+
+#ifndef ERROR_CANTOPEN
+#define ERROR_CANTOPEN 1011
+#endif
+
+#ifndef ERROR_CANTREAD
+#define ERROR_CANTREAD 1012
+#endif
+
+#ifndef ERROR_CANTWRITE
+#define ERROR_CANTWRITE 1013
+#endif
+
+#ifndef ERROR_REGISTRY_IO_FAILED
+#define ERROR_REGISTRY_IO_FAILED 1016
+#endif
+
+#ifndef ERROR_KEY_DELETED
+#define ERROR_KEY_DELETED 1018
+#endif
+
+// Internal registry error codes. Not exposed to most clients.
+#if defined(VXD)
+#define ERROR_CANTOPEN16_FILENOTFOUND32 ((ERROR_CANTOPEN << 16) | ERROR_FILE_NOT_FOUND)
+#define ERROR_CANTREAD16_FILENOTFOUND32 ((ERROR_CANTREAD << 16) | ERROR_FILE_NOT_FOUND)
+#else
+#if defined(WIN32)
+#define ERROR_CANTOPEN16_FILENOTFOUND32 ERROR_FILE_NOT_FOUND
+#define ERROR_CANTREAD16_FILENOTFOUND32 ERROR_FILE_NOT_FOUND
+#else
+#define ERROR_CANTOPEN16_FILENOTFOUND32 ERROR_CANTOPEN
+#define ERROR_CANTREAD16_FILENOTFOUND32 ERROR_CANTREAD
+#endif
+#endif
+
+//
+// Registry application interfaces.
+//
+
+/*XLATOFF*/
+
+LONG
+REGAPI
+VMMRegLibAttach(
+ UINT Flags
+ );
+
+VOID
+REGAPI
+VMMRegLibDetach(
+ VOID
+ );
+
+/*XLATON*/
+#define GRFT_SYSTEM 0 // SYSTEM.DAT
+#define GRFT_USER 1 // USER.DAT
+/*XLATOFF*/
+
+BOOL
+REGAPI
+VMMRegGetRegistryFile(
+ char FAR* lpBuffer,
+ UINT BufferSize,
+ UINT FileType
+ );
+
+// Creates a new registry file. Fails if the specified file already exists.
+#define MPKF_CREATENEW 0x0001
+
+// If MPKF_VERSION20 is specified, create the file using compact keynodes.
+// Such a file will only be readable by users of this library, not Win95
+// clients. Use only for system registries (SYSTEM.DAT, USER.DAT).
+#define MPKF_VERSION20 0x0002
+
+LONG
+REGAPI
+VMMRegMapPredefKeyToFile(
+ HKEY hKey,
+ const char FAR* lpFileName,
+ UINT Flags
+ );
+
+LONG
+REGAPI
+VMMRegMapPredefKeyToKey(
+ HKEY hSourceKey,
+ HKEY hPredefKey
+ );
+
+LONG
+REGAPI
+VMMRegCreateKey(
+ HKEY hKey,
+ const char FAR* lpSubKey,
+ LPHKEY lphSubKey
+ );
+
+LONG
+REGAPI
+VMMRegOpenKey(
+ HKEY hKey,
+ const char FAR* lpSubKey,
+ LPHKEY lphSubKey
+ );
+
+LONG
+REGAPI
+VMMRegCloseKey(
+ HKEY hKey
+ );
+
+LONG
+REGAPI
+VMMRegFlushKey(
+ HKEY hKey
+ );
+
+LONG
+REGAPI
+VMMRegQueryValue(
+ HKEY hKey,
+ const char FAR* lpSubKey,
+ BYTE FAR* lpData,
+ DWORD FAR* lpcbData
+ );
+
+LONG
+REGAPI
+VMMRegQueryValueEx(
+ HKEY hKey,
+ const char FAR* lpValueName,
+ DWORD FAR* lpReserved,
+ DWORD FAR* lpType,
+ BYTE FAR* lpData,
+ DWORD FAR* lpcbData
+ );
+
+LONG
+REGAPI
+VMMRegQueryMultipleValues(
+ HKEY hKey,
+ void FAR* val_list,
+ DWORD num_vals,
+ char FAR* lpValueBuffer,
+ DWORD FAR* lpdwTotalSize
+ );
+
+LONG
+REGAPI
+VMMRegSetValue(
+ HKEY hKey,
+ const char FAR* lpSubKey,
+ DWORD Type,
+ BYTE FAR* lpData,
+ DWORD cbData
+ );
+
+LONG
+REGAPI
+VMMRegSetValueEx(
+ HKEY hKey,
+ const char FAR* lpValueName,
+ DWORD Reserved,
+ DWORD Type,
+ BYTE FAR* lpData,
+ DWORD cbData
+ );
+
+LONG
+REGAPI
+VMMRegDeleteKey(
+ HKEY hKey,
+ const char FAR* lpSubKey
+ );
+
+LONG
+REGAPI
+VMMRegDeleteValue(
+ HKEY hKey,
+ const char FAR* lpValueName
+ );
+
+LONG
+REGAPI
+VMMRegEnumKey(
+ HKEY hKey,
+ DWORD Index,
+ char FAR* lpKeyName,
+ DWORD cbKeyName
+ );
+
+LONG
+REGAPI
+VMMRegEnumValue(
+ HKEY hKey,
+ DWORD Index,
+ char FAR* lpValueName,
+ DWORD FAR* lpcbValueName,
+ DWORD FAR* lpReserved,
+ DWORD FAR* lpType,
+ BYTE FAR* lpData,
+ DWORD FAR* lpcbData
+ );
+
+#ifdef VXD
+LONG
+REGAPI
+VMMRegQueryInfoKey(
+ HKEY hKey,
+ DWORD FAR* lpcSubKeys,
+ DWORD FAR* lpcbMaxSubKeyLen,
+ DWORD FAR* lpcValues,
+ DWORD FAR* lpcbMaxValueName,
+ DWORD FAR* lpcbMaxValueData
+ );
+#else
+LONG
+REGAPI
+VMMRegQueryInfoKey(
+ HKEY hKey,
+ char FAR* lpClass,
+ DWORD FAR* lpcbClass,
+ DWORD FAR* lpReserved,
+ DWORD FAR* lpcSubKeys,
+ DWORD FAR* lpcbMaxSubKeyLen,
+ DWORD FAR* lpcbMaxClassLen,
+ DWORD FAR* lpcValues,
+ DWORD FAR* lpcbMaxValueName,
+ DWORD FAR* lpcbMaxValueData,
+ void FAR* lpcbSecurityDescriptor,
+ void FAR* lpftLastWriteTime
+ );
+#endif
+
+LONG
+REGAPI
+VMMRegLoadKey(
+ HKEY hKey,
+ const char FAR* lpSubKey,
+ const char FAR* lpFileName
+ );
+
+LONG
+REGAPI
+VMMRegUnLoadKey(
+ HKEY hKey,
+ const char FAR* lpSubKey
+ );
+
+LONG
+REGAPI
+VMMRegSaveKey(
+ HKEY hKey,
+ const char FAR* lpFileName,
+ void FAR* lpSecurityAttributes
+ );
+
+LONG
+REGAPI
+VMMRegReplaceKey(
+ HKEY hKey,
+ const char FAR* lpSubKey,
+ const char FAR* lpNewFileName,
+ const char FAR* lpOldFileName
+ );
+
+//
+// Optional macros for callers (typically 16-bit) that map the registry APIs
+// to the equivalent Win32 API name.
+//
+
+#if defined(IS_16) || defined(WANTREGAPIMACROS)
+#if !defined(NOREGAPIMACROS) && !defined(SETUPX_INC)
+#define RegCreateKey VMMRegCreateKey
+#define RegOpenKey VMMRegOpenKey
+#define RegCloseKey VMMRegCloseKey
+#define RegFlushKey VMMRegFlushKey
+#define RegQueryValue VMMRegQueryValue
+#define RegQueryValueEx VMMRegQueryValueEx
+#define RegQueryMultipleValues VMMRegQueryMultipleValues
+#define RegSetValue VMMRegSetValue
+#define RegSetValueEx VMMRegSetValueEx
+#define RegDeleteKey VMMRegDeleteKey
+#define RegDeleteValue VMMRegDeleteValue
+#define RegEnumKey VMMRegEnumKey
+#define RegEnumValue VMMRegEnumValue
+#define RegQueryInfoKey VMMRegQueryInfoKey
+#define RegLoadKey VMMRegLoadKey
+#define RegUnLoadKey VMMRegUnLoadKey
+#define RegSaveKey VMMRegSaveKey
+#define RegReplaceKey VMMRegReplaceKey
+#endif
+#endif
+
+/*XLATON*/
+
+//
+// Registry services available via VMM's interrupt 2Fh handler.
+//
+
+#define RegOpenKey_Idx 0x0100
+#define RegCreateKey_Idx 0x0101
+#define RegCloseKey_Idx 0x0102
+#define RegDeleteKey_Idx 0x0103
+#define RegSetValue_Idx 0x0104
+#define RegQueryValue_Idx 0x0105
+#define RegEnumKey_Idx 0x0106
+#define RegDeleteValue_Idx 0x0107
+#define RegEnumValue_Idx 0x0108
+#define RegQueryValueEx_Idx 0x0109
+#define RegSetValueEx_Idx 0x010A
+#define RegFlushKey_Idx 0x010B
+#define RegLoadKey_Idx 0x010C
+#define RegUnLoadKey_Idx 0x010D
+#define RegSaveKey_Idx 0x010E
+#define RegRestore_Idx 0x010F
+#define RegRemapPreDefKey_Idx 0x0110
+
+/*XLATOFF*/
+#ifdef __cplusplus
+}
+#endif
+/*XLATON*/
+
+#endif // _REGAPIX_
diff --git a/public/sdk/inc/regstr.h b/public/sdk/inc/regstr.h
new file mode 100644
index 000000000..e098e5d03
--- /dev/null
+++ b/public/sdk/inc/regstr.h
@@ -0,0 +1,1237 @@
+ /*** regstr.h - Registry string definitions
+ *
+ * This module contains public registry string definitions.
+ *
+ * Copyright (c) 1992-1995 Microsoft Corporation
+ * Created 12/10/92
+ *
+ * MODIFICATION HISTORY
+ */
+
+
+#ifndef _INC_REGSTR
+#define _INC_REGSTR
+
+
+/*** Public registry key names
+ */
+
+#define REGSTR_KEY_CLASS TEXT("Class") //child of LOCAL_MACHINE
+#define REGSTR_KEY_CONFIG TEXT("Config") //child of LOCAL_MACHINE
+#define REGSTR_KEY_ENUM TEXT("Enum") //child of LOCAL_MACHINE
+#define REGSTR_KEY_ROOTENUM TEXT("Root") //child of ENUM
+#define REGSTR_KEY_BIOSENUM TEXT("BIOS") //child of ENUM
+#define REGSTR_KEY_PCMCIAENUM TEXT("PCMCIA") // child of ENUM
+#define REGSTR_KEY_PCIENUM TEXT("PCI") // child of ENUM
+#ifndef NEC_98
+#define REGSTR_KEY_ISAENUM TEXT("ISAPnP") //child of ENUM
+#define REGSTR_KEY_EISAENUM TEXT("EISA") //child of ENUM
+#else // ifdef NEC_98
+#define REGSTR_KEY_ISAENUM TEXT("C98PnP") //child of ENUM
+#define REGSTR_KEY_EISAENUM TEXT("NESA") //child of ENUM
+#endif // ifdef NEC_98
+#define REGSTR_KEY_LOGCONFIG TEXT("LogConfig") //child of enum\root\dev\inst
+#define REGSTR_KEY_SYSTEMBOARD TEXT("*PNP0C01") //child of enum\root
+#define REGSTR_KEY_APM TEXT("*PNP0C05") //child of enum\root
+
+#define REGSTR_KEY_INIUPDATE TEXT("IniUpdate")
+#define REG_KEY_INSTDEV TEXT("Installed") //Child of hklm\class\classname
+
+#define REGSTR_KEY_DOSOPTCDROM TEXT("CD-ROM")
+#define REGSTR_KEY_DOSOPTMOUSE TEXT("MOUSE")
+
+#define REGSTR_KEY_KNOWNDOCKINGSTATES TEXT("Hardware Profiles")
+#define REGSTR_KEY_DEVICEPARAMETERS TEXT("Device Parameters")
+
+
+/*** Public registry paths
+ */
+
+#define REGSTR_DEFAULT_INSTANCE TEXT("0000")
+#define REGSTR_PATH_MOTHERBOARD REGSTR_KEY_SYSTEMBOARD TEXT("\\") REGSTR_DEFAULT_INSTANCE
+#define REGSTR_PATH_SETUP TEXT("Software\\Microsoft\\Windows\\CurrentVersion")
+#define REGSTR_PATH_PIFCONVERT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\PIFConvert")
+#define REGSTR_PATH_MSDOSOPTS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOSOptions")
+#define REGSTR_PATH_NOSUGGMSDOS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\NoMSDOSWarn")
+#define REGSTR_PATH_NEWDOSBOX TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOSSpecialConfig")
+#define REGSTR_PATH_RUNONCE TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce")
+#define REGSTR_PATH_RUN TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run")
+#define REGSTR_PATH_RUNSERVICESONCE TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunServicesOnce")
+#define REGSTR_PATH_RUNSERVICES TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunServices")
+#define REGSTR_PATH_EXPLORER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer")
+#define REGSTR_PATH_DETECT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Detect")
+#define REGSTR_PATH_APPPATHS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\App Paths")
+#define REGSTR_PATH_UNINSTALL TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall")
+#define REGSTR_PATH_REALMODENET TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Real Mode Net")
+#define REGSTR_PATH_NETEQUIV TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Equivalent")
+#define REGSTR_PATH_CVNETWORK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network")
+
+#define REGSTR_PATH_IDCONFIGDB TEXT("System\\CurrentControlSet\\Control\\IDConfigDB")
+#define REGSTR_PATH_CLASS TEXT("System\\CurrentControlSet\\Services\\Class")
+#define REGSTR_PATH_DISPLAYSETTINGS TEXT("Display\\Settings")
+#define REGSTR_PATH_FONTS TEXT("Display\\Fonts")
+#define REGSTR_PATH_ENUM TEXT("Enum")
+#define REGSTR_PATH_ROOT TEXT("Enum\\Root")
+
+#define REGSTR_PATH_CURRENTCONTROLSET TEXT("System\\CurrentControlSet")
+#define REGSTR_PATH_SYSTEMENUM TEXT("System\\CurrentControlSet\\Enum")
+#define REGSTR_PATH_HWPROFILES TEXT("System\\CurrentControlSet\\Hardware Profiles")
+#define REGSTR_PATH_HWPROFILESCURRENT TEXT("System\\CurrentControlSet\\Hardware Profiles\\Current")
+#define REGSTR_PATH_CLASS_NT TEXT("System\\CurrentControlSet\\Control\\Class")
+
+#define REGSTR_PATH_SERVICES TEXT("System\\CurrentControlSet\\Services")
+#define REGSTR_PATH_VXD TEXT("System\\CurrentControlSet\\Services\\VxD")
+#define REGSTR_PATH_IOS TEXT("System\\CurrentControlSet\\Services\\VxD\\IOS")
+#define REGSTR_PATH_VMM TEXT("System\\CurrentControlSet\\Services\\VxD\\VMM")
+#define REGSTR_PATH_VPOWERD TEXT("System\\CurrentControlSet\\Services\\VxD\\VPOWERD")
+#define REGSTR_PATH_VNETSUP TEXT("System\\CurrentControlSet\\Services\\VxD\\VNETSUP")
+#define REGSTR_PATH_NWREDIR TEXT("System\\CurrentControlSet\\Services\\VxD\\NWREDIR")
+#define REGSTR_PATH_NCPSERVER TEXT("System\\CurrentControlSet\\Services\\NcpServer\\Parameters")
+
+#define REGSTR_PATH_IOARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\IOArb")
+#define REGSTR_PATH_ADDRARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\AddrArb")
+#define REGSTR_PATH_DMAARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\DMAArb")
+#define REGSTR_PATH_IRQARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\IRQArb")
+
+#define REGSTR_PATH_CODEPAGE TEXT("System\\CurrentControlSet\\Control\\Nls\\Codepage")
+#define REGSTR_PATH_FILESYSTEM TEXT("System\\CurrentControlSet\\Control\\FileSystem")
+#define REGSTR_PATH_FILESYSTEM_NOVOLTRACK TEXT("System\\CurrentControlSet\\Control\\FileSystem\\NoVolTrack")
+#define REGSTR_PATH_CDFS TEXT("System\\CurrentControlSet\\Control\\FileSystem\\CDFS")
+#define REGSTR_PATH_WINBOOT TEXT("System\\CurrentControlSet\\Control\\WinBoot")
+#define REGSTR_PATH_INSTALLEDFILES TEXT("System\\CurrentControlSet\\Control\\InstalledFiles")
+#define REGSTR_PATH_VMM32FILES TEXT("System\\CurrentControlSet\\Control\\VMM32Files")
+
+//
+// Reasonable Limit for Values Names
+//
+#define REGSTR_MAX_VALUE_LENGTH 256
+
+//
+// Values used by user mode Pnp Manager
+//
+
+#define REGSTR_VAL_SLOTNUMBER TEXT("SlotNumber")
+#define REGSTR_VAL_ATTACHEDCOMPONENTS TEXT("AttachedComponents")
+#define REGSTR_VAL_BASEDEVICEPATH TEXT("BaseDevicePath")
+#define REGSTR_VAL_SYSTEMBUSNUMBER TEXT("SystemBusNumber")
+#define REGSTR_VAL_BUSDATATYPE TEXT("BusDataType")
+#define REGSTR_VAL_INTERFACETYPE TEXT("InterfaceType")
+#define REGSTR_VAL_NTDEVICEPATHS TEXT("NtDevicePaths")
+#define REGSTR_VAL_SERVICE TEXT("Service")
+#define REGSTR_VAL_CONFIGURATION TEXT("Configuration")
+#define REGSTR_VAL_CONFIGURATIONVECTOR TEXT("ConfigurationVector")
+#define REGSTR_VAL_DETECTSIGNATURE TEXT("DetectSignature")
+#define REGSTR_VAL_CLASSGUID TEXT("ClassGUID")
+#define REGSTR_VAL_INSTANCEIDENTIFIER TEXT("InstanceIdentifier")
+#define REGSTR_VAL_DUPLICATEOF TEXT("DuplicateOf")
+#define REGSTR_VAL_STATUSFLAGS TEXT("StatusFlags")
+#define REGSTR_VAL_DISABLECOUNT TEXT("DisableCount")
+#define REGSTR_VAL_UNKNOWNPROBLEMS TEXT("UnknownProblem")
+#define REGSTR_VAL_FOUNDATENUM TEXT("FoundAtEnum")
+#define REGSTR_VAL_DOCKSTATE TEXT("DockState")
+#define REGSTR_VAL_PREFERENCEORDER TEXT("PreferenceOrder")
+#define REGSTR_VAL_USERWAITINTERVAL TEXT("UserWaitInterval")
+#define REGSTR_VAL_PHANTOM TEXT("Phantom")
+
+//
+// Values under REGSTR_PATH_DISPLAYSETTINGS
+//
+
+#define REGSTR_VAL_BITSPERPIXEL TEXT("BitsPerPixel")
+#define REGSTR_VAL_RESOLUTION TEXT("Resolution")
+#define REGSTR_VAL_DPILOGICALX TEXT("DPILogicalX")
+#define REGSTR_VAL_DPILOGICALY TEXT("DPILogicalY")
+#define REGSTR_VAL_DPIPHYSICALX TEXT("DPIPhysicalX")
+#define REGSTR_VAL_DPIPHYSICALY TEXT("DPIPhysicalY")
+#define REGSTR_VAL_REFRESHRATE TEXT("RefreshRate")
+#define REGSTR_VAL_DISPLAYFLAGS TEXT("DisplayFlags")
+
+
+// under HKEY_CURRENT_USER
+#define REGSTR_PATH_CONTROLPANEL TEXT("Control Panel")
+
+// under HKEY_LOCAL_MACHINE
+#define REGSTR_PATH_CONTROLSFOLDER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Controls Folder")
+
+//
+// Entries under REGSTR_PATH_CODEPAGE
+//
+
+#define REGSTR_VAL_DOSCP TEXT("OEMCP")
+#define REGSTR_VAL_WINCP TEXT("ACP")
+
+#define REGSTR_PATH_DYNA_ENUM TEXT("Config Manager\\Enum")
+
+//
+// Entries under REGSTR_PATH_DYNA_ENUM
+//
+#define REGSTR_VAL_HARDWARE_KEY TEXT("HardWareKey")
+#define REGSTR_VAL_ALLOCATION TEXT("Allocation")
+#define REGSTR_VAL_PROBLEM TEXT("Problem")
+#define REGSTR_VAL_STATUS TEXT("Status")
+
+//
+// Used by address arbitrator
+//
+#define REGSTR_VAL_DONTUSEMEM TEXT("DontAllocLastMem")
+
+//
+// Entries under REGSTR_PATH_SETUP
+//
+#define REGSTR_VAL_SYSTEMROOT TEXT("SystemRoot")
+#define REGSTR_VAL_BOOTCOUNT TEXT("BootCount")
+#define REGSTR_VAL_REALNETSTART TEXT("RealNetStart")
+#define REGSTR_VAL_MEDIA TEXT("MediaPath")
+#define REGSTR_VAL_CONFIG TEXT("ConfigPath")
+#define REGSTR_VAL_DEVICEPATH TEXT("DevicePath") //default search path for .INFs
+#define REGSTR_VAL_SRCPATH TEXT("SourcePath") //last source files path during setup.
+#define REGSTR_VAL_OLDWINDIR TEXT("OldWinDir") //old windows location
+#define REGSTR_VAL_SETUPFLAGS TEXT("SetupFlags") //flags that setup passes on after install.
+#define REGSTR_VAL_REGOWNER TEXT("RegisteredOwner")
+#define REGSTR_VAL_REGORGANIZATION TEXT("RegisteredOrganization")
+#define REGSTR_VAL_LICENSINGINFO TEXT("LicensingInfo")
+#define REGSTR_VAL_OLDMSDOSVER TEXT("OldMSDOSVer") // will be DOS ver < 7 (when Setup run)
+#define REGSTR_VAL_FIRSTINSTALLDATETIME TEXT("FirstInstallDateTime") // will Win 95 install date-time
+
+#define REGSTR_VAL_INSTALLTYPE TEXT("InstallType")
+
+#define REGSTR_VAL_WRAPPER TEXT("Wrapper")
+
+// Values for InstallType
+#define IT_COMPACT 0x0000
+#define IT_TYPICAL 0x0001
+#define IT_PORTABLE 0x0002
+#define IT_CUSTOM 0x0003
+
+#define REGSTR_KEY_SETUP TEXT("\\Setup")
+#define REGSTR_VAL_BOOTDIR TEXT("BootDir")
+#define REGSTR_VAL_WINBOOTDIR TEXT("WinbootDir")
+#define REGSTR_VAL_WINDIR TEXT("WinDir")
+
+#define REGSTR_VAL_APPINSTPATH TEXT("AppInstallPath") // Used by install wizard
+
+// Values for international startup disk
+#define REGSTR_PATH_EBD REGSTR_PATH_SETUP REGSTR_KEY_SETUP TEXT("\\EBD")
+// Keys under REGSTR_KEY_EBD
+#define REGSTR_KEY_EBDFILESLOCAL TEXT("EBDFilesLocale")
+#define REGSTR_KEY_EBDFILESKEYBOARD TEXT("EBDFilesKeyboard")
+#define REGSTR_KEY_EBDAUTOEXECBATLOCAL TEXT("EBDAutoexecBatLocale")
+#define REGSTR_KEY_EBDAUTOEXECBATKEYBOARD TEXT("EBDAutoexecBatKeyboard")
+#define REGSTR_KEY_EBDCONFIGSYSLOCAL TEXT("EBDConfigSysLocale")
+#define REGSTR_KEY_EBDCONFIGSYSKEYBOARD TEXT("EBDConfigSysKeyboard")
+
+//
+// Entries under REGSTR_PATH_PIFCONVERT
+//
+#define REGSTR_VAL_MSDOSMODE TEXT("MSDOSMode")
+#define REGSTR_VAL_MSDOSMODEDISCARD TEXT("Discard")
+
+//
+// Entries under REGSTR_PATH_MSDOSOPTS (global settings)
+//
+#define REGSTR_VAL_DOSOPTGLOBALFLAGS TEXT("GlobalFlags")
+// Flags for GlobalFlags
+#define DOSOPTGF_DEFCLEAN 0x00000001L // Default action is clean config
+
+//
+// Entries under REGSTR_PATH_MSDOSOPTS \ OptionSubkey
+//
+#define REGSTR_VAL_DOSOPTFLAGS TEXT("Flags")
+#define REGSTR_VAL_OPTORDER TEXT("Order")
+#define REGSTR_VAL_CONFIGSYS TEXT("Config.Sys")
+#define REGSTR_VAL_AUTOEXEC TEXT("Autoexec.Bat")
+#define REGSTR_VAL_STDDOSOPTION TEXT("StdOption")
+#define REGSTR_VAL_DOSOPTTIP TEXT("TipText")
+
+// Flags for DOSOPTFLAGS
+#define DOSOPTF_DEFAULT 0x00000001L // Default enabled for clean config
+#define DOSOPTF_SUPPORTED 0x00000002L // Option actually supported
+#define DOSOPTF_ALWAYSUSE 0x00000004L // Always use this option
+#define DOSOPTF_USESPMODE 0x00000008L // Option puts machine in Prot Mode
+#define DOSOPTF_PROVIDESUMB 0x00000010L // Can load drivers high
+#define DOSOPTF_NEEDSETUP 0x00000020L // Need to configure option
+#define DOSOPTF_INDOSSTART 0x00000040L // Suppored by DOSSTART.BAT
+#define DOSOPTF_MULTIPLE 0x00000080L // Load multiple configuration lines
+
+//
+// Flags returned by SUGetSetSetupFlags and in the registry
+//
+#define SUF_FIRSTTIME 0x00000001L // First boot into Win95.
+#define SUF_EXPRESS 0x00000002L // User Setup via express mode (vs customize).
+#define SUF_BATCHINF 0x00000004L // Setup using batch file (MSBATCH.INF).
+#define SUF_CLEAN 0x00000008L // Setup was done to a clean directory.
+#define SUF_INSETUP 0x00000010L // You're in Setup.
+#define SUF_NETSETUP 0x00000020L // Doing a net (workstation) setup.
+#define SUF_NETHDBOOT 0x00000040L // Workstation boots from local harddrive
+#define SUF_NETRPLBOOT 0x00000080L // Workstation boots via RPL (vs floppy)
+#define SUF_SBSCOPYOK 0x00000100L // Can copy to LDID_SHARED (SBS)
+
+//
+// Entries under REGSTR_PATH_VMM
+//
+#define REGSTR_VAL_DOSPAGER TEXT("DOSPager")
+#define REGSTR_VAL_VXDGROUPS TEXT("VXDGroups")
+
+//
+// Entries under REGSTR_PATH_VPOWERD
+//
+#define REGSTR_VAL_VPOWERDFLAGS TEXT("Flags") // Stupid machine workarounds
+#define VPDF_DISABLEPWRMGMT 0x00000001 // Don't load device
+#define VPDF_FORCEAPM10MODE 0x00000002 // Always go into 1.0 mode
+#define VPDF_SKIPINTELSLCHECK 0x00000004 // Don't detect Intel SL chipset
+#define VPDF_DISABLEPWRSTATUSPOLL 0x00000008 // Don't poll power status
+
+//
+// Entries under REGSTR_PATH_VNETSUP
+//
+#define REGSTR_VAL_WORKGROUP TEXT("Workgroup")
+#define REGSTR_VAL_DIRECTHOST TEXT("DirectHost")
+#define REGSTR_VAL_FILESHARING TEXT("FileSharing")
+#define REGSTR_VAL_PRINTSHARING TEXT("PrintSharing")
+
+//
+// Entries under REGSTR_PATH_NWREDIR
+//
+#define REGSTR_VAL_FIRSTNETDRIVE TEXT("FirstNetworkDrive")
+#define REGSTR_VAL_MAXCONNECTIONS TEXT("MaxConnections")
+#define REGSTR_VAL_APISUPPORT TEXT("APISupport")
+#define REGSTR_VAL_MAXRETRY TEXT("MaxRetry")
+#define REGSTR_VAL_MINRETRY TEXT("MinRetry")
+#define REGSTR_VAL_SUPPORTLFN TEXT("SupportLFN")
+#define REGSTR_VAL_SUPPORTBURST TEXT("SupportBurst")
+#define REGSTR_VAL_SUPPORTTUNNELLING TEXT("SupportTunnelling")
+#define REGSTR_VAL_FULLTRACE TEXT("FullTrace")
+#define REGSTR_VAL_READCACHING TEXT("ReadCaching")
+#define REGSTR_VAL_SHOWDOTS TEXT("ShowDots")
+#define REGSTR_VAL_GAPTIME TEXT("GapTime")
+#define REGSTR_VAL_SEARCHMODE TEXT("SearchMode")
+#define REGSTR_VAL_SHELLVERSION TEXT("ShellVersion")
+#define REGSTR_VAL_MAXLIP TEXT("MaxLIP")
+#define REGSTR_VAL_PRESERVECASE TEXT("PreserveCase")
+#define REGSTR_VAL_OPTIMIZESFN TEXT("OptimizeSFN")
+
+//
+// Entries under REGSTR_PATH_NCPSERVER
+//
+#define REGSTR_VAL_NCP_BROWSEMASTER TEXT("BrowseMaster")
+#define REGSTR_VAL_NCP_USEPEERBROWSING TEXT("Use_PeerBrowsing")
+#define REGSTR_VAL_NCP_USESAP TEXT("Use_Sap")
+
+//
+// Entries under REGSTR_PATH_FILESYSTEM
+//
+#define REGSTR_VAL_WIN31FILESYSTEM TEXT("Win31FileSystem")
+#define REGSTR_VAL_PRESERVELONGNAMES TEXT("PreserveLongNames")
+#define REGSTR_VAL_DRIVEWRITEBEHIND TEXT("DriveWriteBehind")
+#define REGSTR_VAL_ASYNCFILECOMMIT TEXT("AsyncFileCommit")
+#define REGSTR_VAL_PATHCACHECOUNT TEXT("PathCache")
+#define REGSTR_VAL_NAMECACHECOUNT TEXT("NameCache")
+#define REGSTR_VAL_CONTIGFILEALLOC TEXT("ContigFileAllocSize")
+#define REGSTR_VAL_VOLIDLETIMEOUT TEXT("VolumeIdleTimeout")
+#define REGSTR_VAL_BUFFIDLETIMEOUT TEXT("BufferIdleTimeout")
+#define REGSTR_VAL_BUFFAGETIMEOUT TEXT("BufferAgeTimeout")
+#define REGSTR_VAL_NAMENUMERICTAIL TEXT("NameNumericTail")
+#define REGSTR_VAL_READAHEADTHRESHOLD TEXT("ReadAheadThreshold")
+#define REGSTR_VAL_DOUBLEBUFFER TEXT("DoubleBuffer")
+#define REGSTR_VAL_SOFTCOMPATMODE TEXT("SoftCompatMode")
+#define REGSTR_VAL_DRIVESPINDOWN TEXT("DriveSpinDown")
+#define REGSTR_VAL_FORCEPMIO TEXT("ForcePMIO")
+#define REGSTR_VAL_FORCERMIO TEXT("ForceRMIO")
+#define REGSTR_VAL_LASTBOOTPMDRVS TEXT("LastBootPMDrvs")
+#define REGSTR_VAL_VIRTUALHDIRQ TEXT("VirtualHDIRQ")
+#define REGSTR_VAL_SRVNAMECACHECOUNT TEXT("ServerNameCacheMax")
+#define REGSTR_VAL_SRVNAMECACHE TEXT("ServerNameCache")
+#define REGSTR_VAL_SRVNAMECACHENETPROV TEXT("ServerNameCacheNumNets")
+#define REGSTR_VAL_AUTOMOUNT TEXT("AutoMountDrives")
+#define REGSTR_VAL_COMPRESSIONMETHOD TEXT("CompressionAlgorithm")
+#define REGSTR_VAL_COMPRESSIONTHRESHOLD TEXT("CompressionThreshold")
+
+
+//
+// Entries under REGSTR_PATH_FILESYSTEM_NOVOLTRACK
+//
+// A sub-key under which a variable number of variable length structures are stored.
+//
+// Each structure contains an offset followed by a number of pattern bytes.
+// The pattern in each structure is compared at the specified offset within
+// the boot record at the time a volume is mounted. If any pattern in this
+// set of patterns matches a pattern already in the boot record, VFAT will not
+// write a volume tracking serial number in the OEM_SerialNum field of the
+// boot record on the volume being mounted.
+//
+
+//
+// Entries under REGSTR_PATH_CDFS
+//
+#define REGSTR_VAL_CDCACHESIZE TEXT("CacheSize") // Number of 2K cache sectors
+#define REGSTR_VAL_CDPREFETCH TEXT("Prefetch") // Number of 2K cache sectors for prefetching
+#define REGSTR_VAL_CDPREFETCHTAIL TEXT("PrefetchTail")// Number of LRU1 prefetch sectors
+#define REGSTR_VAL_CDRAWCACHE TEXT("RawCache") // Number of 2352-byte cache sectors
+#define REGSTR_VAL_CDEXTERRORS TEXT("ExtendedErrors")// Return extended error codes
+#define REGSTR_VAL_CDSVDSENSE TEXT("SVDSense") // 0=PVD, 1=Kanji, 2=Unicode
+#define REGSTR_VAL_CDSHOWVERSIONS TEXT("ShowVersions")// Show file version numbers
+#define REGSTR_VAL_CDCOMPATNAMES TEXT("MSCDEXCompatNames")// Disable Numeric Tails on long file names
+#define REGSTR_VAL_CDNOREADAHEAD TEXT("NoReadAhead") // Disable Read Ahead if set to 1
+
+//
+// define values for IOS devices
+//
+#define REGSTR_VAL_SCSI TEXT("SCSI\\")
+#define REGSTR_VAL_ESDI TEXT("ESDI\\")
+#define REGSTR_VAL_FLOP TEXT("FLOP\\")
+
+//
+// define defs for IOS device types and values for IOS devices
+//
+
+#define REGSTR_VAL_DISK TEXT("GenDisk")
+#define REGSTR_VAL_CDROM TEXT("GenCD")
+#define REGSTR_VAL_TAPE TEXT("TAPE")
+#define REGSTR_VAL_SCANNER TEXT("SCANNER")
+#define REGSTR_VAL_FLOPPY TEXT("FLOPPY")
+
+#define REGSTR_VAL_SCSITID TEXT("SCSITargetID")
+#define REGSTR_VAL_SCSILUN TEXT("SCSILUN")
+#define REGSTR_VAL_REVLEVEL TEXT("RevisionLevel")
+#define REGSTR_VAL_PRODUCTID TEXT("ProductId")
+#define REGSTR_VAL_PRODUCTTYPE TEXT("ProductType")
+#define REGSTR_VAL_DEVTYPE TEXT("DeviceType")
+#define REGSTR_VAL_REMOVABLE TEXT("Removable")
+#define REGSTR_VAL_CURDRVLET TEXT("CurrentDriveLetterAssignment")
+#define REGSTR_VAL_USRDRVLET TEXT("UserDriveLetterAssignment")
+#define REGSTR_VAL_SYNCDATAXFER TEXT("SyncDataXfer")
+#define REGSTR_VAL_AUTOINSNOTE TEXT("AutoInsertNotification")
+#define REGSTR_VAL_DISCONNECT TEXT("Disconnect")
+#define REGSTR_VAL_INT13 TEXT("Int13")
+#define REGSTR_VAL_PMODE_INT13 TEXT("PModeInt13")
+#define REGSTR_VAL_USERSETTINGS TEXT("AdapterSettings")
+#define REGSTR_VAL_NOIDE TEXT("NoIDE")
+
+// The foll. clase name definitions should be the same as in dirkdrv.inx and
+// cdrom.inx
+#define REGSTR_VAL_DISKCLASSNAME TEXT("DiskDrive")
+#define REGSTR_VAL_CDROMCLASSNAME TEXT("CDROM")
+
+// The foll. value determines whether a port driver should be force loaded
+// or not.
+
+#define REGSTR_VAL_FORCELOAD TEXT("ForceLoadPD")
+
+// The foll. value determines whether or not the FIFO is used on the Floppy
+// controller.
+
+#define REGSTR_VAL_FORCEFIFO TEXT("ForceFIFO")
+#define REGSTR_VAL_FORCECL TEXT("ForceChangeLine")
+
+//
+// Generic CLASS Entries
+//
+#define REGSTR_VAL_NOUSECLASS TEXT("NoUseClass") // Don't include this class in PnP functions
+#define REGSTR_VAL_NOINSTALLCLASS TEXT("NoInstallClass") // Don't include this class in New Device Wizard
+#define REGSTR_VAL_NODISPLAYCLASS TEXT("NoDisplayClass") // Don't include this class in Device Manager
+#define REGSTR_VAL_SILENTINSTALL TEXT("SilentInstall") // Always Silent Install devices of this class.
+//
+// Class Names
+//
+#define REGSTR_KEY_PCMCIA_CLASS TEXT("PCMCIA") //child of PATH_CLASS
+#define REGSTR_KEY_SCSI_CLASS TEXT("SCSIAdapter")
+#define REGSTR_KEY_PORTS_CLASS TEXT("ports")
+#define REGSTR_KEY_MEDIA_CLASS TEXT("MEDIA")
+#define REGSTR_KEY_DISPLAY_CLASS TEXT("Display")
+#define REGSTR_KEY_KEYBOARD_CLASS TEXT("Keyboard")
+#define REGSTR_KEY_MOUSE_CLASS TEXT("Mouse")
+#define REGSTR_KEY_MONITOR_CLASS TEXT("Monitor")
+#define REGSTR_KEY_MODEM_CLASS TEXT("Modem")
+
+//
+// Values under PATH_CLASS\PCMCIA
+//
+#define REGSTR_VAL_PCMCIA_OPT TEXT("Options")
+#define PCMCIA_OPT_HAVE_SOCKET 0x00000001l
+//#define PCMCIA_OPT_ENABLED 0x00000002l
+#define PCMCIA_OPT_AUTOMEM 0x00000004l
+#define PCMCIA_OPT_NO_SOUND 0x00000008l
+#define PCMCIA_OPT_NO_AUDIO 0x00000010l
+#define PCMCIA_OPT_NO_APMREMOVE 0x00000020l
+
+#define REGSTR_VAL_PCMCIA_MEM TEXT("Memory") // Card services shared mem range
+#define PCMCIA_DEF_MEMBEGIN 0x000C0000 // default 0xC0000 - 0x00FFFFFF
+#define PCMCIA_DEF_MEMEND 0x00FFFFFF // (0 - 16meg)
+#define PCMCIA_DEF_MEMLEN 0x00001000 // default 4k window
+
+#define REGSTR_VAL_PCMCIA_ALLOC TEXT("AllocMemWin") // PCCard alloced memory Window
+#define REGSTR_VAL_PCMCIA_ATAD TEXT("ATADelay") // ATA device config start delay
+
+#define REGSTR_VAL_PCMCIA_SIZ TEXT("MinRegionSize") // Minimum region size
+#define PCMCIA_DEF_MIN_REGION 0x00010000 // 64K minimum region size
+
+// Values in LPTENUM keys
+#define REGSTR_VAL_P1284MDL TEXT("Model")
+#define REGSTR_VAL_P1284MFG TEXT("Manufacturer")
+
+//
+// Values under PATH_CLASS\ISAPNP
+//
+#define REGSTR_VAL_ISAPNP TEXT("ISAPNP") // ISAPNP VxD name
+#define REGSTR_VAL_ISAPNP_RDP_OVERRIDE TEXT("RDPOverRide") // ReadDataPort OverRide
+
+//
+// Values under PATH_CLASS\PCI
+//
+#define REGSTR_VAL_PCI TEXT("PCI") // PCI VxD name
+#define REGSTR_PCI_OPTIONS TEXT("Options") // Possible PCI options
+#define REGSTR_PCI_DUAL_IDE TEXT("PCIDualIDE") // Dual IDE flag
+#define PCI_OPTIONS_USE_BIOS 0x00000001l
+#define PCI_OPTIONS_USE_IRQ_STEERING 0x00000002l
+#define PCI_FLAG_NO_VIDEO_IRQ 0x00000001l
+#define PCI_FLAG_PCMCIA_WANT_IRQ 0x00000002l
+#define PCI_FLAG_DUAL_IDE 0x00000004l
+#define PCI_FLAG_NO_ENUM_AT_ALL 0x00000008l
+#define PCI_FLAG_ENUM_NO_RESOURCE 0x00000010l
+#define PCI_FLAG_NEED_DWORD_ACCESS 0x00000020l
+#define PCI_FLAG_SINGLE_FUNCTION 0x00000040l
+#define PCI_FLAG_ALWAYS_ENABLED 0x00000080l
+#define PCI_FLAG_IS_IDE 0x00000100l
+#define PCI_FLAG_IS_VIDEO 0x00000200l
+#define PCI_FLAG_FAIL_START 0x00000400l
+
+//
+// Detection related values
+//
+#define REGSTR_KEY_CRASHES TEXT("Crashes") // key of REGSTR_PATH_DETECT
+#define REGSTR_KEY_DANGERS TEXT("Dangers") // key of REGSTR_PATH_DETECT
+#define REGSTR_KEY_DETMODVARS TEXT("DetModVars") // key of REGSTR_PATH_DETECT
+#define REGSTR_KEY_NDISINFO TEXT("NDISInfo") // key of netcard hw entry
+#define REGSTR_VAL_PROTINIPATH TEXT("ProtIniPath") // protocol.ini path
+#define REGSTR_VAL_RESOURCES TEXT("Resources") // resources of crash func.
+#define REGSTR_VAL_CRASHFUNCS TEXT("CrashFuncs") // detfunc caused the crash
+#define REGSTR_VAL_CLASS TEXT("Class") // device class
+#define REGSTR_VAL_DEVDESC TEXT("DeviceDesc") // device description
+#define REGSTR_VAL_BOOTCONFIG TEXT("BootConfig") // detected configuration
+#define REGSTR_VAL_DETFUNC TEXT("DetFunc") // specifies detect mod/func.
+#define REGSTR_VAL_DETFLAGS TEXT("DetFlags") // detection flags
+#define REGSTR_VAL_COMPATIBLEIDS TEXT("CompatibleIDs") //value of enum\dev\inst
+#define REGSTR_VAL_DETCONFIG TEXT("DetConfig") // detected configuration
+#define REGSTR_VAL_VERIFYKEY TEXT("VerifyKey") // key used in verify mode
+#define REGSTR_VAL_COMINFO TEXT("ComInfo") // com info. for serial mouse
+#define REGSTR_VAL_INFNAME TEXT("InfName") // INF filename
+#define REGSTR_VAL_CARDSPECIFIC TEXT("CardSpecific") // Netcard specific info (WORD)
+#define REGSTR_VAL_NETOSTYPE TEXT("NetOSType") // NetOS type associate w/ card
+#define REGSTR_DATA_NETOS_NDIS TEXT("NDIS") // Data of REGSTR_VAL_NETOSTYPE
+#define REGSTR_DATA_NETOS_ODI TEXT("ODI") // Data of REGSTR_VAL_NETOSTYPE
+#define REGSTR_DATA_NETOS_IPX TEXT("IPX") // Data of REGSTR_VAL_NETOSTYPE
+#define REGSTR_VAL_MFG TEXT("Mfg")
+#define REGSTR_VAL_SCAN_ONLY_FIRST TEXT("ScanOnlyFirstDrive") // used with IDE driver
+#define REGSTR_VAL_SHARE_IRQ TEXT("ForceIRQSharing") // used with IDE driver
+#define REGSTR_VAL_NONSTANDARD_ATAPI TEXT("NonStandardATAPI") // used with IDE driver
+#define REGSTR_VAL_IDE_FORCE_SERIALIZE TEXT("ForceSerialization") // used with IDE driver
+#define REGSTR_VAL_MAX_HCID_LEN 1024 // Maximum hardware/compat ID len
+#define REGSTR_VAL_HWREV TEXT("HWRevision")
+#define REGSTR_VAL_ENABLEINTS TEXT("EnableInts")
+//
+// Bit values of REGSTR_VAL_DETFLAGS
+//
+#define REGDF_NOTDETIO 0x00000001 //cannot detect I/O resource
+#define REGDF_NOTDETMEM 0x00000002 //cannot detect mem resource
+#define REGDF_NOTDETIRQ 0x00000004 //cannot detect IRQ resource
+#define REGDF_NOTDETDMA 0x00000008 //cannot detect DMA resource
+#define REGDF_NOTDETALL (REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA)
+#define REGDF_NEEDFULLCONFIG 0x00000010 //stop devnode if lack resource
+#define REGDF_GENFORCEDCONFIG 0x00000020 //also generate forceconfig
+#define REGDF_NODETCONFIG 0x00008000 //don't write detconfig to reg.
+#define REGDF_CONFLICTIO 0x00010000 //I/O res. in conflict
+#define REGDF_CONFLICTMEM 0x00020000 //mem res. in conflict
+#define REGDF_CONFLICTIRQ 0x00040000 //IRQ res. in conflict
+#define REGDF_CONFLICTDMA 0x00080000 //DMA res. in conflict
+#define REGDF_CONFLICTALL (REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA)
+#define REGDF_MAPIRQ2TO9 0x00100000 //IRQ2 has been mapped to 9
+#define REGDF_NOTVERIFIED 0x80000000 //previous device unverified
+
+//
+// Values in REGSTR_KEY_SYSTEMBOARD
+//
+#define REGSTR_VAL_APMBIOSVER TEXT("APMBiosVer")
+#define REGSTR_VAL_APMFLAGS TEXT("APMFlags")
+#define REGSTR_VAL_SLSUPPORT TEXT("SLSupport")
+#define REGSTR_VAL_MACHINETYPE TEXT("MachineType")
+#define REGSTR_VAL_SETUPMACHINETYPE TEXT("SetupMachineType")
+#define REGSTR_MACHTYPE_UNKNOWN TEXT("Unknown")
+#define REGSTR_MACHTYPE_IBMPC TEXT("IBM PC")
+#define REGSTR_MACHTYPE_IBMPCJR TEXT("IBM PCjr")
+#define REGSTR_MACHTYPE_IBMPCCONV TEXT("IBM PC Convertible")
+#define REGSTR_MACHTYPE_IBMPCXT TEXT("IBM PC/XT")
+#define REGSTR_MACHTYPE_IBMPCXT_286 TEXT("IBM PC/XT 286")
+#define REGSTR_MACHTYPE_IBMPCAT TEXT("IBM PC/AT")
+#define REGSTR_MACHTYPE_IBMPS2_25 TEXT("IBM PS/2-25")
+#define REGSTR_MACHTYPE_IBMPS2_30_286 TEXT("IBM PS/2-30 286")
+#define REGSTR_MACHTYPE_IBMPS2_30 TEXT("IBM PS/2-30")
+#define REGSTR_MACHTYPE_IBMPS2_50 TEXT("IBM PS/2-50")
+#define REGSTR_MACHTYPE_IBMPS2_50Z TEXT("IBM PS/2-50Z")
+#define REGSTR_MACHTYPE_IBMPS2_55SX TEXT("IBM PS/2-55SX")
+#define REGSTR_MACHTYPE_IBMPS2_60 TEXT("IBM PS/2-60")
+#define REGSTR_MACHTYPE_IBMPS2_65SX TEXT("IBM PS/2-65SX")
+#define REGSTR_MACHTYPE_IBMPS2_70 TEXT("IBM PS/2-70")
+#define REGSTR_MACHTYPE_IBMPS2_P70 TEXT("IBM PS/2-P70")
+#define REGSTR_MACHTYPE_IBMPS2_70_80 TEXT("IBM PS/2-70/80")
+#define REGSTR_MACHTYPE_IBMPS2_80 TEXT("IBM PS/2-80")
+#define REGSTR_MACHTYPE_IBMPS2_90 TEXT("IBM PS/2-90")
+#define REGSTR_MACHTYPE_IBMPS1 TEXT("IBM PS/1")
+#define REGSTR_MACHTYPE_PHOENIX_PCAT TEXT("Phoenix PC/AT Compatible")
+#define REGSTR_MACHTYPE_HP_VECTRA TEXT("HP Vectra")
+#define REGSTR_MACHTYPE_ATT_PC TEXT("AT&T PC")
+#define REGSTR_MACHTYPE_ZENITH_PC TEXT("Zenith PC")
+
+#define REGSTR_VAL_APMMENUSUSPEND TEXT("APMMenuSuspend")
+#define APMMENUSUSPEND_DISABLED 0 // always disabled
+#define APMMENUSUSPEND_ENABLED 1 // always enabled
+#define APMMENUSUSPEND_UNDOCKED 2 // enabled undocked
+#define APMMENUSUSPEND_NOCHANGE 0x80 // bitflag - cannot change setting via UI
+
+#define REGSTR_VAL_BUSTYPE TEXT("BusType")
+#define REGSTR_VAL_CPU TEXT("CPU")
+#define REGSTR_VAL_NDP TEXT("NDP")
+#define REGSTR_VAL_PNPBIOSVER TEXT("PnPBIOSVer")
+#define REGSTR_VAL_PNPSTRUCOFFSET TEXT("PnPStrucOffset")
+#define REGSTR_VAL_PCIBIOSVER TEXT("PCIBIOSVer")
+#define REGSTR_VAL_HWMECHANISM TEXT("HWMechanism")
+#define REGSTR_VAL_LASTPCIBUSNUM TEXT("LastPCIBusNum")
+#define REGSTR_VAL_CONVMEM TEXT("ConvMem")
+#define REGSTR_VAL_EXTMEM TEXT("ExtMem")
+#define REGSTR_VAL_COMPUTERNAME TEXT("ComputerName")
+#define REGSTR_VAL_BIOSNAME TEXT("BIOSName")
+#define REGSTR_VAL_BIOSVERSION TEXT("BIOSVersion")
+#define REGSTR_VAL_BIOSDATE TEXT("BIOSDate")
+#define REGSTR_VAL_MODEL TEXT("Model")
+#define REGSTR_VAL_SUBMODEL TEXT("Submodel")
+#define REGSTR_VAL_REVISION TEXT("Revision")
+
+//
+// Values used in the LPT(ECP) device entry
+//
+#define REGSTR_VAL_FIFODEPTH TEXT("FIFODepth")
+#define REGSTR_VAL_RDINTTHRESHOLD TEXT("RDIntThreshold")
+#define REGSTR_VAL_WRINTTHRESHOLD TEXT("WRIntThreshold")
+
+//used in enum\xxx\<devname>\<instname>
+#define REGSTR_VAL_PRIORITY TEXT("Priority") // WHAT IS THIS FOR??
+#define REGSTR_VAL_DRIVER TEXT("Driver") //
+#define REGSTR_VAL_FUNCDESC TEXT("FunctionDesc") //
+#define REGSTR_VAL_FORCEDCONFIG TEXT("ForcedConfig") //
+#define REGSTR_VAL_CONFIGFLAGS TEXT("ConfigFlags") // (binary ULONG)
+#define REGSTR_VAL_CSCONFIGFLAGS TEXT("CSConfigFlags") // (binary ULONG)
+
+#define CONFIGFLAG_DISABLED 0x00000001 // Set if disabled
+#define CONFIGFLAG_REMOVED 0x00000002 // Set if a present hardware enum device deleted
+#define CONFIGFLAG_MANUAL_INSTALL 0x00000004 // Set if the devnode was manually installed
+#define CONFIGFLAG_IGNORE_BOOT_LC 0x00000008 // Set if skip the boot config
+#define CONFIGFLAG_NET_BOOT 0x00000010 // Load this devnode when in net boot
+#define CONFIGFLAG_REINSTALL 0x00000020 // Redo install
+#define CONFIGFLAG_FAILEDINSTALL 0x00000040 // Failed the install
+#define CONFIGFLAG_CANTSTOPACHILD 0x00000080 // Can't stop/remove a single child
+#define CONFIGFLAG_OKREMOVEROM 0x00000100 // Can remove even if rom.
+#define CONFIGFLAG_NOREMOVEEXIT 0x00000200 // Don't remove at exit.
+
+#define CSCONFIGFLAG_BITS 0x00000007 // OR of below bits
+#define CSCONFIGFLAG_DISABLED 0x00000001 // Set if
+#define CSCONFIGFLAG_DO_NOT_CREATE 0x00000002 // Set if
+#define CSCONFIGFLAG_DO_NOT_START 0x00000004 // Set if
+
+#define DMSTATEFLAG_APPLYTOALL 0x00000001 // Set if Apply To All check box is checked
+
+//
+// Special devnodes name
+//
+#define REGSTR_VAL_ROOT_DEVNODE TEXT("HTREE\\ROOT\\0")
+#define REGSTR_VAL_RESERVED_DEVNODE TEXT("HTREE\\RESERVED\\0")
+#define REGSTR_PATH_READDATAPORT REGSTR_KEY_ISAENUM TEXT("\\ReadDataPort\\0")
+
+//
+// Multifunction definitions
+//
+#define REGSTR_PATH_MULTI_FUNCTION TEXT("MF")
+#define REGSTR_VAL_RESOURCE_MAP TEXT("ResourceMap")
+#define REGSTR_PATH_CHILD_PREFIX TEXT("Child")
+#define NUM_RESOURCE_MAP 256
+#define REGSTR_VAL_MF_FLAGS TEXT("MFFlags")
+#define MF_FLAGS_EVEN_IF_NO_RESOURCE 0x00000001
+#define MF_FLAGS_NO_CREATE_IF_NO_RESOURCE 0x00000002
+#define MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE 0x00000004
+#define MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED 0x00000008
+
+//
+// EISA multi functions add-on
+//
+#ifndef NEC_98
+#define REGSTR_VAL_EISA_RANGES TEXT("EISARanges")
+#define REGSTR_VAL_EISA_FUNCTIONS TEXT("EISAFunctions")
+#define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("EISAFunctionsMask")
+#define REGSTR_VAL_EISA_FLAGS TEXT("EISAFlags")
+#define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("EISASimulateInt15")
+#else // ifdef NEC_98
+#define REGSTR_VAL_EISA_RANGES TEXT("NESARanges")
+#define REGSTR_VAL_EISA_FUNCTIONS TEXT("NESAFunctions")
+#define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("NESAFunctionsMask")
+#define REGSTR_VAL_EISA_FLAGS TEXT("NESAFlags")
+#define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("NESASimulateInt15")
+#endif // ifdef NEC_98
+#define EISAFLAG_NO_IO_MERGE 0x00000001
+#define EISAFLAG_SLOT_IO_FIRST 0x00000002
+#define EISA_NO_MAX_FUNCTION 0xFF
+#define NUM_EISA_RANGES 4
+
+
+//
+// Driver entries
+//
+#define REGSTR_VAL_DRVDESC TEXT("DriverDesc") // value of enum\dev\inst\DRV
+#define REGSTR_VAL_DEVLOADER TEXT("DevLoader") // value of DRV
+#define REGSTR_VAL_STATICVXD TEXT("StaticVxD") // value of DRV
+#define REGSTR_VAL_PROPERTIES TEXT("Properties") // value of DRV
+#define REGSTR_VAL_MANUFACTURER TEXT("Manufacturer")
+#define REGSTR_VAL_EXISTS TEXT("Exists") // value of HCC\HW\ENUM\ROOT\dev\inst
+#define REGSTR_VAL_CMENUMFLAGS TEXT("CMEnumFlags") // (binary ULONG)
+#define REGSTR_VAL_CMDRIVFLAGS TEXT("CMDrivFlags") // (binary ULONG)
+#define REGSTR_VAL_ENUMERATOR TEXT("Enumerator") // value of DRV
+#define REGSTR_VAL_DEVICEDRIVER TEXT("DeviceDriver") // value of DRV
+#define REGSTR_VAL_PORTNAME TEXT("PortName") // VCOMM uses this for it's port names
+#define REGSTR_VAL_INFPATH TEXT("InfPath")
+#define REGSTR_VAL_INFSECTION TEXT("InfSection")
+#define REGSTR_VAL_INFSECTIONEXT TEXT("InfSectionExt")
+#define REGSTR_VAL_POLLING TEXT("Polling") // SCSI specific
+#define REGSTR_VAL_DONTLOADIFCONFLICT TEXT("DontLoadIfConflict") // SCSI specific
+#define REGSTR_VAL_PORTSUBCLASS TEXT("PortSubClass")
+#define REGSTR_VAL_NETCLEAN TEXT("NetClean") // Driver required for NetClean boot
+#define REGSTR_VAL_IDE_NO_SERIALIZE TEXT("IDENoSerialize") // IDE specific
+#define REGSTR_VAL_NOCMOSORFDPT TEXT("NoCMOSorFDPT") // IDE specific
+#define REGSTR_VAL_COMVERIFYBASE TEXT("COMVerifyBase") // VCD specific
+
+//
+// Driver keys
+//
+#define REGSTR_KEY_OVERRIDE TEXT("Override") // key under the software section
+
+//used by CONFIGMG
+#define REGSTR_VAL_CONFIGMG TEXT("CONFIGMG") // Config Manager VxD name
+#define REGSTR_VAL_SYSDM TEXT("SysDM") // The device installer DLL
+#define REGSTR_VAL_SYSDMFUNC TEXT("SysDMFunc") // The device installer DLL function
+#define REGSTR_VAL_PRIVATE TEXT("Private") // The private library
+#define REGSTR_VAL_PRIVATEFUNC TEXT("PrivateFunc") // The private library function
+#define REGSTR_VAL_DETECT TEXT("Detect") // The detection library
+#define REGSTR_VAL_DETECTFUNC TEXT("DetectFunc") // The detection library function
+#define REGSTR_VAL_ASKFORCONFIG TEXT("AskForConfig") // The AskForConfig library
+#define REGSTR_VAL_ASKFORCONFIGFUNC TEXT("AskForConfigFunc") // The AskForConfig library function
+#define REGSTR_VAL_WAITFORUNDOCK TEXT("WaitForUndock") // The WaitForUndock library
+#define REGSTR_VAL_WAITFORUNDOCKFUNC TEXT("WaitForUndockFunc") // The WaitForUndock library function
+#define REGSTR_VAL_REMOVEROMOKAY TEXT("RemoveRomOkay") // The RemoveRomOkay library
+#define REGSTR_VAL_REMOVEROMOKAYFUNC TEXT("RemoveRomOkayFunc") // The RemoveRomOkay library function
+
+//used in IDCONFIGDB
+#define REGSTR_VAL_CURCONFIG TEXT("CurrentConfig") //value of idconfigdb
+#define REGSTR_VAL_FRIENDLYNAME TEXT("FriendlyName") //value of idconfigdb
+#define REGSTR_VAL_CURRENTCONFIG TEXT("CurrentConfig") //value of idconfigdb
+#define REGSTR_VAL_MAP TEXT("Map") //value of idconfigdb
+#define REGSTR_VAL_ID TEXT("CurrentID") //value of idconfigdb
+#define REGSTR_VAL_DOCKED TEXT("CurrentDockedState") //value of idconfigdb
+#define REGSTR_VAL_CHECKSUM TEXT("CurrentChecksum") //value of idconfigdb
+#define REGSTR_VAL_HWDETECT TEXT("HardwareDetect") //value of idconfigdb
+#define REGSTR_VAL_INHIBITRESULTS TEXT("InhibitResults") //value of idconfigdb
+
+//used in HKEY_CURRENT_CONFIG
+#define REGSTR_VAL_PROFILEFLAGS TEXT("ProfileFlags") // value of HKEY_CURRENT_CONFIG
+
+//used in PCMCIA
+#define REGSTR_KEY_PCMCIA TEXT("PCMCIA\\") //PCMCIA dev ID prefix
+#define REGSTR_KEY_PCUNKNOWN TEXT("UNKNOWN_MANUFACTURER") //PCMCIA dev ID manuf
+#define REGSTR_VAL_PCSSDRIVER TEXT("Driver") //value of DRV
+#define REGSTR_KEY_PCMTD TEXT("MTD-") //MTD dev ID component
+#define REGSTR_VAL_PCMTDRIVER TEXT("MTD") //value of Mem Tech DRV
+
+//used in hardware\enum\dev\inst by Device Installer
+#define REGSTR_VAL_HARDWAREID TEXT("HardwareID") //value of enum\dev\inst
+
+//value names under class brach REGSTR_KEY_CLASS + class name
+// and for the drivers REGSTR_KEY_CLASS\classname\xxxx
+#define REGSTR_VAL_INSTALLER TEXT("Installer") // 16-bit class installer module/entry point
+#define REGSTR_VAL_INSTALLER_32 TEXT("Installer32") // 32-bit class installer module/entry point
+#define REGSTR_VAL_INSICON TEXT("Icon") //value of class\name
+#define REGSTR_VAL_LEGACYINFOPT TEXT("LegacyInfOption") //used for translating to old-style INF option names
+#define REGSTR_VAL_ENUMPROPPAGES TEXT("EnumPropPages") // For Class/Device Properties (16-bit)
+#define REGSTR_VAL_ENUMPROPPAGES_32 TEXT("EnumPropPages32") // For Class/Device Properties (32-bit)
+#define REGSTR_VAL_BASICPROPERTIES TEXT("BasicProperties") // For CPL basic Properties
+#define REGSTR_VAL_PRIVATEPROBLEM TEXT("PrivateProblem") // For Handling Private Problems
+
+// names used for display driver set information
+#define REGSTR_KEY_CURRENT TEXT("Current") // current mode information
+#define REGSTR_KEY_DEFAULT TEXT("Default") // default configuration
+#define REGSTR_KEY_MODES TEXT("Modes") // modes subtree
+
+#define REGSTR_VAL_MODE TEXT("Mode") // default mode
+#define REGSTR_VAL_BPP TEXT("BPP") // bits per pixel
+#define REGSTR_VAL_HRES TEXT("HRes") // horizontal resolution
+#define REGSTR_VAL_VRES TEXT("VRes") // vertical resolution
+#define REGSTR_VAL_FONTSIZE TEXT("FontSize") // used in default or override
+#define REGSTR_VAL_DRV TEXT("drv") // the driver file
+#define REGSTR_VAL_GRB TEXT("grb") // the grabber file
+#define REGSTR_VAL_VDD TEXT("vdd") // vdds used here
+#define REGSTR_VAL_VER TEXT("Ver")
+#define REGSTR_VAL_MAXRES TEXT("MaxResolution") // max res for monitors
+#define REGSTR_VAL_DPMS TEXT("DPMS") // DPMS enabled
+#define REGSTR_VAL_RESUMERESET TEXT("ResumeReset") // need reset on resume
+
+#define REGSTR_VAL_DESCRIPTION TEXT("Description")
+
+// keys in fontsize tree
+#define REGSTR_KEY_SYSTEM TEXT("System") // entries for system.ini
+#define REGSTR_KEY_USER TEXT("User") // entries for win.ini
+#define REGSTR_VAL_DPI TEXT("dpi") // dpi of fontsize
+
+//
+// Used by PCIC socket services
+//
+#define REGSTR_VAL_PCICOPTIONS TEXT("PCICOptions") // Binary DWORD. IRQ mask in
+ // low word. # skts in high
+#ifndef NEC_98
+#define PCIC_DEFAULT_IRQMASK 0x4EB8 // Default IRQ masks
+#else // ifdef NEC_98
+#define PCIC_DEFAULT_IRQMASK 0x1468 // Default IRQ masks
+#endif // ifdef NEC_98
+#define PCIC_DEFAULT_NUMSOCKETS 0 // 0 = Automatic detection
+#define REGSTR_VAL_PCICIRQMAP TEXT("PCICIRQMap") // Binary 16 byte IRQ map table
+
+// names used for control panel entries
+#define REGSTR_PATH_APPEARANCE TEXT("Control Panel\\Appearance")
+#define REGSTR_PATH_LOOKSCHEMES TEXT("Control Panel\\Appearance\\Schemes")
+#define REGSTR_VAL_CUSTOMCOLORS TEXT("CustomColors")
+
+#define REGSTR_PATH_SCREENSAVE TEXT("Control Panel\\Desktop")
+#define REGSTR_VALUE_USESCRPASSWORD TEXT("ScreenSaveUsePassword")
+#define REGSTR_VALUE_SCRPASSWORD TEXT("ScreenSave_Data")
+
+#define REGSTR_VALUE_LOWPOWERTIMEOUT TEXT("ScreenSaveLowPowerTimeout")
+#define REGSTR_VALUE_POWEROFFTIMEOUT TEXT("ScreenSavePowerOffTimeout")
+#define REGSTR_VALUE_LOWPOWERACTIVE TEXT("ScreenSaveLowPowerActive")
+#define REGSTR_VALUE_POWEROFFACTIVE TEXT("ScreenSavePowerOffActive")
+
+// used for Windows applets
+#define REGSTR_PATH_WINDOWSAPPLETS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets")
+
+//
+// system tray. Flag values defined in systrap.h
+//
+#define REGSTR_PATH_SYSTRAY TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\SysTray")
+#define REGSTR_VAL_SYSTRAYSVCS TEXT("Services")
+#define REGSTR_VAL_SYSTRAYBATFLAGS TEXT("PowerFlags")
+#define REGSTR_VAL_SYSTRAYPCCARDFLAGS TEXT("PCMCIAFlags")
+
+//
+// Used by system networking components to store per-user values.
+// All keys here are under HKCU.
+//
+#define REGSTR_PATH_NETWORK_USERSETTINGS TEXT("Network")
+
+#define REGSTR_KEY_NETWORK_PERSISTENT TEXT("\\Persistent")
+#define REGSTR_KEY_NETWORK_RECENT TEXT("\\Recent")
+#define REGSTR_VAL_REMOTE_PATH TEXT("RemotePath")
+#define REGSTR_VAL_USER_NAME TEXT("UserName")
+#define REGSTR_VAL_PROVIDER_NAME TEXT("ProviderName")
+#define REGSTR_VAL_CONNECTION_TYPE TEXT("ConnectionType")
+#define REGSTR_VAL_UPGRADE TEXT("Upgrade")
+
+#define REGSTR_KEY_LOGON TEXT("\\Logon")
+#define REGSTR_VAL_MUSTBEVALIDATED TEXT("MustBeValidated")
+#define REGSTR_VAL_RUNLOGINSCRIPT TEXT("ProcessLoginScript")
+
+//
+// NetworkProvider entries. These entries are under
+// REGSTR_PATH_SERVICES\\xxx\\NetworkProvider
+//
+#define REGSTR_KEY_NETWORKPROVIDER TEXT("\\NetworkProvider")
+#define REGSTR_PATH_NW32NETPROVIDER REGSTR_PATH_SERVICES TEXT("\\NWNP32") REGSTR_KEY_NETWORKPROVIDER
+#define REGSTR_PATH_MS32NETPROVIDER REGSTR_PATH_SERVICES TEXT("\\MSNP32") REGSTR_KEY_NETWORKPROVIDER
+#define REGSTR_VAL_AUTHENT_AGENT TEXT("AuthenticatingAgent")
+
+//
+// Entries under REGSTR_PATH_REALMODENET
+//
+#define REGSTR_VAL_PREFREDIR TEXT("PreferredRedir")
+#define REGSTR_VAL_AUTOSTART TEXT("AutoStart")
+#define REGSTR_VAL_AUTOLOGON TEXT("AutoLogon")
+#define REGSTR_VAL_NETCARD TEXT("Netcard")
+#define REGSTR_VAL_TRANSPORT TEXT("Transport")
+#define REGSTR_VAL_DYNAMIC TEXT("Dynamic")
+#define REGSTR_VAL_TRANSITION TEXT("Transition")
+#define REGSTR_VAL_STATICDRIVE TEXT("StaticDrive")
+#define REGSTR_VAL_LOADHI TEXT("LoadHi")
+#define REGSTR_VAL_LOADRMDRIVERS TEXT("LoadRMDrivers")
+#define REGSTR_VAL_SETUPN TEXT("SetupN")
+#define REGSTR_VAL_SETUPNPATH TEXT("SetupNPath")
+
+//
+// Entries under REGSTR_PATH_CVNETWORK
+//
+#define REGSTR_VAL_WRKGRP_FORCEMAPPING TEXT("WrkgrpForceMapping")
+#define REGSTR_VAL_WRKGRP_REQUIRED TEXT("WrkgrpRequired")
+
+//
+// NT-compatible place where the name of the currently logged-on user is stored.
+//
+#define REGSTR_PATH_CURRENT_CONTROL_SET TEXT("System\\CurrentControlSet\\Control")
+#define REGSTR_VAL_CURRENT_USER TEXT("Current User")
+
+// section where password providers are installed (each provider has subkey under this key)
+#define REGSTR_PATH_PWDPROVIDER TEXT("System\\CurrentControlSet\\Control\\PwdProvider")
+#define REGSTR_VAL_PWDPROVIDER_PATH TEXT("ProviderPath")
+#define REGSTR_VAL_PWDPROVIDER_DESC TEXT("Description")
+#define REGSTR_VAL_PWDPROVIDER_CHANGEPWD TEXT("ChangePassword")
+#define REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND TEXT("ChangePasswordHwnd")
+#define REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS TEXT("GetPasswordStatus")
+#define REGSTR_VAL_PWDPROVIDER_ISNP TEXT("NetworkProvider")
+#define REGSTR_VAL_PWDPROVIDER_CHANGEORDER TEXT("ChangeOrder")
+
+//
+// Used by administrator configuration tool and various components who enforce
+// policies.
+//
+#define REGSTR_PATH_POLICIES TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies")
+
+// used to control remote update of administrator policies
+#define REGSTR_PATH_UPDATE TEXT("System\\CurrentControlSet\\Control\\Update")
+#define REGSTR_VALUE_ENABLE TEXT("Enable")
+#define REGSTR_VALUE_VERBOSE TEXT("Verbose")
+#define REGSTR_VALUE_NETPATH TEXT("NetworkPath")
+#define REGSTR_VALUE_DEFAULTLOC TEXT("UseDefaultNetLocation")
+
+//
+// Entries under REGSTR_PATH_POLICIES
+//
+#define REGSTR_KEY_NETWORK TEXT("Network")
+#define REGSTR_KEY_SYSTEM TEXT("System")
+#define REGSTR_KEY_PRINTERS TEXT("Printers")
+#define REGSTR_KEY_WINOLDAPP TEXT("WinOldApp")
+
+// (following are values REG_DWORD, legal values 0 or 1, treat as TEXT("0") if value not present)
+// policies under NETWORK key
+#define REGSTR_VAL_NOFILESHARING TEXT("NoFileSharing") // TEXT("1") prevents server from loading
+#define REGSTR_VAL_NOPRINTSHARING TEXT("NoPrintSharing")
+#define REGSTR_VAL_NOFILESHARINGCTRL TEXT("NoFileSharingControl") // TEXT("1") removes sharing ui
+#define REGSTR_VAL_NOPRINTSHARINGCTRL TEXT("NoPrintSharingControl")
+#define REGSTR_VAL_HIDESHAREPWDS TEXT("HideSharePwds") // TEXT("1") hides share passwords with asterisks
+#define REGSTR_VAL_DISABLEPWDCACHING TEXT("DisablePwdCaching") // TEXT("1") disables caching
+#define REGSTR_VAL_ALPHANUMPWDS TEXT("AlphanumPwds") // TEXT("1") forces alphanumeric passwords
+#define REGSTR_VAL_NETSETUP_DISABLE TEXT("NoNetSetup")
+#define REGSTR_VAL_NETSETUP_NOCONFIGPAGE TEXT("NoNetSetupConfigPage")
+#define REGSTR_VAL_NETSETUP_NOIDPAGE TEXT("NoNetSetupIDPage")
+#define REGSTR_VAL_NETSETUP_NOSECURITYPAGE TEXT("NoNetSetupSecurityPage")
+#define REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE TEXT("NoVirtMemPage")
+#define REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE TEXT("NoDevMgrPage")
+#define REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE TEXT("NoConfigPage")
+#define REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE TEXT("NoFileSysPage")
+#define REGSTR_VAL_DISPCPL_NODISPCPL TEXT("NoDispCPL")
+#define REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE TEXT("NoDispBackgroundPage")
+#define REGSTR_VAL_DISPCPL_NOSCRSAVPAGE TEXT("NoDispScrSavPage")
+#define REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE TEXT("NoDispAppearancePage")
+#define REGSTR_VAL_DISPCPL_NOSETTINGSPAGE TEXT("NoDispSettingsPage")
+#define REGSTR_VAL_SECCPL_NOSECCPL TEXT("NoSecCPL")
+#define REGSTR_VAL_SECCPL_NOPWDPAGE TEXT("NoPwdPage")
+#define REGSTR_VAL_SECCPL_NOADMINPAGE TEXT("NoAdminPage")
+#define REGSTR_VAL_SECCPL_NOPROFILEPAGE TEXT("NoProfilePage")
+#define REGSTR_VAL_PRINTERS_HIDETABS TEXT("NoPrinterTabs")
+#define REGSTR_VAL_PRINTERS_NODELETE TEXT("NoDeletePrinter")
+#define REGSTR_VAL_PRINTERS_NOADD TEXT("NoAddPrinter")
+#define REGSTR_VAL_WINOLDAPP_DISABLED TEXT("Disabled")
+#define REGSTR_VAL_WINOLDAPP_NOREALMODE TEXT("NoRealMode")
+#define REGSTR_VAL_NOENTIRENETWORK TEXT("NoEntireNetwork")
+#define REGSTR_VAL_NOWORKGROUPCONTENTS TEXT("NoWorkgroupContents")
+
+// REG_DWORD, 0=off, otherwise value is minimum # of chars to allow in password
+#define REGSTR_VAL_MINPWDLEN TEXT("MinPwdLen")
+// REG_DWORD, 0=off, otherwise value is # of days for pwd to expire
+#define REGSTR_VAL_PWDEXPIRATION TEXT("PwdExpiration")
+
+#define REGSTR_VAL_WIN31PROVIDER TEXT("Win31Provider") // REG_SZ
+
+// policies under SYSTEM key
+#define REGSTR_VAL_DISABLEREGTOOLS TEXT("DisableRegistryTools")
+
+#define REGSTR_PATH_WINLOGON TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Winlogon")
+#define REGSTR_VAL_LEGALNOTICECAPTION TEXT("LegalNoticeCaption") // REG_SZ
+#define REGSTR_VAL_LEGALNOTICETEXT TEXT("LegalNoticeText") // REG_SZ
+
+#define REGSTR_VAL_RESTRICTRUN TEXT("RestrictRun")
+//
+// Entries in policy file. (Won't be in local registry, only policy hive)
+#define REGSTR_KEY_POL_USERS TEXT("Users")
+#define REGSTR_KEY_POL_COMPUTERS TEXT("Computers")
+#define REGSTR_KEY_POL_USERGROUPS TEXT("UserGroups")
+#define REGSTR_KEY_POL_DEFAULT TEXT(".default")
+#define REGSTR_KEY_POL_USERGROUPDATA TEXT("GroupData\\UserGroups\\Priority")
+
+//
+// Entries for time zone information under LOCAL_MACHINE
+//
+#define REGSTR_PATH_TIMEZONE TEXT("System\\CurrentControlSet\\Control\\TimeZoneInformation")
+#define REGSTR_VAL_TZBIAS TEXT("Bias")
+#define REGSTR_VAL_TZDLTBIAS TEXT("DaylightBias")
+#define REGSTR_VAL_TZSTDBIAS TEXT("StandardBias")
+#define REGSTR_VAL_TZACTBIAS TEXT("ActiveTimeBias")
+#define REGSTR_VAL_TZDLTFLAG TEXT("DaylightFlag")
+#define REGSTR_VAL_TZSTDSTART TEXT("StandardStart")
+#define REGSTR_VAL_TZDLTSTART TEXT("DaylightStart")
+#define REGSTR_VAL_TZDLTNAME TEXT("DaylightName")
+#define REGSTR_VAL_TZSTDNAME TEXT("StandardName")
+#define REGSTR_VAL_TZNOCHANGESTART TEXT("NoChangeStart")
+#define REGSTR_VAL_TZNOCHANGEEND TEXT("NoChangeEnd")
+#define REGSTR_VAL_TZNOAUTOTIME TEXT("DisableAutoDaylightTimeSet")
+
+//
+// Entries for floating point processor existence under LOCAL_MACHINE
+//
+#define REGSTR_PATH_FLOATINGPOINTPROCESSOR TEXT("HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor")
+#define REGSTR_PATH_FLOATINGPOINTPROCESSOR0 TEXT("HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor\\0")
+
+
+//
+// Entries for computer name under LOCAL_MACHINE
+//
+#define REGSTR_PATH_COMPUTRNAME TEXT("System\\CurrentControlSet\\Control\\ComputerName\\ComputerName")
+#define REGSTR_VAL_COMPUTRNAME TEXT("ComputerName")
+
+// Entry so that we force a reboot on shutdown / single instance dos app
+#define REGSTR_PATH_SHUTDOWN TEXT("System\\CurrentControlSet\\Control\\Shutdown")
+#define REGSTR_VAL_FORCEREBOOT TEXT("ForceReboot")
+#define REGSTR_VAL_SETUPPROGRAMRAN TEXT("SetupProgramRan")
+#define REGSTR_VAL_DOES_POLLING TEXT("PollingSupportNeeded")
+
+//
+// Entries for known system DLLs under LOCAL_MACHINE
+//
+// The VAL keys here are the actual DLL names (FOO.DLL)
+//
+#define REGSTR_PATH_KNOWNDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\KnownDLLs")
+#define REGSTR_PATH_KNOWN16DLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\Known16DLLs")
+
+// Entries here for system dlls we need to version check in case overwritten
+#define REGSTR_PATH_CHECKVERDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\CheckVerDLLs")
+#define REGSTR_PATH_WARNVERDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\WarnVerDLLs")
+
+// Entries here for app ini files we (msgsrv32) need to hack
+#define REGSTR_PATH_HACKINIFILE TEXT("System\\CurrentControlSet\\Control\\SessionManager\\HackIniFiles")
+
+// Keys here for bad applications we want to warn the user about before running
+#define REGSTR_PATH_CHECKBADAPPS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\CheckBadApps")
+
+// Keys here for applications we need to patch
+#define REGSTR_PATH_APPPATCH TEXT("System\\CurrentControlSet\\Control\\SessionManager\\AppPatches")
+
+//
+// Entries for known system VxDs under LOCAL_MACHINE
+//
+// The VAL keys here are the full path names of VxDs (c:\app\vapp.vxd)
+// It is suggested that the keynames be the same as the module name of
+// the VxD.
+// This section is used to dyna-load VxDs with
+// CreateFile(\\.\vxd_regstr_keyname).
+//
+
+#define REGSTR_PATH_KNOWNVXDS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\KnownVxDs")
+
+//
+// Entries for values in uninstaller keys under REGSTR_PATH_UNINSTALL \ appname
+//
+#define REGSTR_VAL_UNINSTALLER_DISPLAYNAME TEXT("DisplayName")
+#define REGSTR_VAL_UNINSTALLER_COMMANDLINE TEXT("UninstallString")
+
+//
+// Entries for known per user settings: Under HKEY_CURRENT_USER
+//
+#define REGSTR_PATH_DESKTOP REGSTR_PATH_SCREENSAVE
+#define REGSTR_PATH_MOUSE TEXT("Control Panel\\Mouse")
+#define REGSTR_PATH_KEYBOARD TEXT("Control Panel\\Keyboard")
+#define REGSTR_PATH_COLORS TEXT("Control Panel\\Colors")
+#define REGSTR_PATH_SOUND TEXT("Control Panel\\Sound")
+#define REGSTR_PATH_METRICS TEXT("Control Panel\\Desktop\\WindowMetrics")
+#define REGSTR_PATH_ICONS TEXT("Control Panel\\Icons")
+#define REGSTR_PATH_CURSORS TEXT("Control Panel\\Cursors")
+#define REGSTR_PATH_CHECKDISK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive")
+#define REGSTR_PATH_CHECKDISKSET TEXT("Settings")
+#define REGSTR_PATH_CHECKDISKUDRVS TEXT("NoUnknownDDErrDrvs")
+//
+// Entries under REGSTR_PATH_FAULT
+//
+#define REGSTR_PATH_FAULT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Fault")
+#define REGSTR_VAL_FAULT_LOGFILE TEXT("LogFile")
+
+//
+// Entries under REGSTR_PATH_AEDEBUG
+//
+#define REGSTR_PATH_AEDEBUG TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug")
+#define REGSTR_VAL_AEDEBUG_DEBUGGER TEXT("Debugger")
+#define REGSTR_VAL_AEDEBUG_AUTO TEXT("Auto")
+
+//
+// Entries under REGSTR_PATH_GRPCONV
+//
+#define REGSTR_PATH_GRPCONV TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\GrpConv")
+
+//
+// Entries under the RegItem key in a shell namespace
+//
+#define REGSTR_VAL_REGITEMDELETEMESSAGE TEXT("Removal Message")
+
+//
+// Entries for the Drives Tools page
+//
+// NOTE that these items are not recorded for removable drives. These
+// keys record X=DSKTLSYSTEMTIME where X is the drive letter. Since
+// these tools actually work on the disk in the drive, as opposed to
+// the drive itself, it is pointless to record them on a removable media
+// since if a different disk is inserted in the drive, the data is
+// meaningless.
+//
+#define REGSTR_PATH_LASTCHECK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastCheck")
+#define REGSTR_PATH_LASTOPTIMIZE TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastOptimize")
+#define REGSTR_PATH_LASTBACKUP TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastBackup")
+//
+// The above 3 keys record with the registry value of the drive letter
+// a SYSTEMTIME structure
+//
+
+//
+// Entries under HKEY_LOCAL_MACHINE for Check Drive specific stuff
+//
+#define REGSTR_PATH_CHKLASTCHECK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastCheck")
+#define REGSTR_PATH_CHKLASTSURFAN TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastSurfaceAnalysis")
+
+#ifndef _KERNEL_PNPI_
+
+//
+// The above 2 keys record the following binary structure which is
+// a system time structure with the addition of a result code field.
+// Note that the time part of REGSTR_PATH_CHKLASTCHECK is effectively
+// identical to REGSTR_PATH_LASTCHECK under the explorer key
+//
+typedef struct _DSKTLSYSTEMTIME {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+ WORD wResult;
+} DSKTLSYSTEMTIME, *PDSKTLSYSTEMTIME, *LPDSKTLSYSTEMTIME;
+
+#endif
+
+//
+// The following are defines for the wResult field
+//
+#define DTRESULTOK 0 // Operation was successful, no errors
+#define DTRESULTFIX 1 // Operation was successful, errors were found
+ // but all were fixed.
+#define DTRESULTPROB 2 // Operation was not successful or errors
+ // were found and some or all were not fixed.
+#define DTRESULTPART 3 // Operation was partially completed but was
+ // terminated either by the user or an error.
+
+//
+// Entries for persistent shares
+//
+#define REGSTR_KEY_SHARES TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\LanMan")
+#define REGSTR_VAL_SHARES_FLAGS TEXT("Flags")
+#define REGSTR_VAL_SHARES_TYPE TEXT("Type")
+#define REGSTR_VAL_SHARES_PATH TEXT("Path")
+#define REGSTR_VAL_SHARES_REMARK TEXT("Remark")
+#define REGSTR_VAL_SHARES_RW_PASS TEXT("Parm1")
+#define REGSTR_VAL_SHARES_RO_PASS TEXT("Parm2")
+
+//
+// Entries for printer settings under LOCAL_MACHINE
+//
+#define REGSTR_PATH_PRINT TEXT("System\\CurrentControlSet\\Control\\Print")
+#define REGSTR_PATH_PRINTERS TEXT("System\\CurrentControlSet\\Control\\Print\\Printers")
+#define REGSTR_PATH_PROVIDERS TEXT("System\\CurrentControlSet\\Control\\Print\\Providers")
+#define REGSTR_PATH_MONITORS TEXT("System\\CurrentControlSet\\Control\\Print\\Monitors")
+#define REGSTR_PATH_ENVIRONMENTS TEXT("System\\CurrentControlSet\\Control\\Print\\Environments")
+#define REGSTR_VAL_START_ON_BOOT TEXT("StartOnBoot")
+#define REGSTR_VAL_PRINTERS_MASK TEXT("PrintersMask")
+#define REGSTR_VAL_DOS_SPOOL_MASK TEXT("DOSSpoolMask")
+#define REGSTR_KEY_CURRENT_ENV TEXT("\\Windows 4.0")
+#define REGSTR_KEY_DRIVERS TEXT("\\Drivers")
+#define REGSTR_KEY_PRINT_PROC TEXT("\\Print Processors")
+
+//
+// Entries for MultiMedia under HKEY_CURRENT_USER
+//
+#define REGSTR_PATH_EVENTLABELS TEXT("AppEvents\\EventLabels")
+#define REGSTR_PATH_SCHEMES TEXT("AppEvents\\Schemes")
+#define REGSTR_PATH_APPS REGSTR_PATH_SCHEMES TEXT("\\Apps")
+#define REGSTR_PATH_APPS_DEFAULT REGSTR_PATH_SCHEMES TEXT("\\Apps\\.Default")
+#define REGSTR_PATH_NAMES REGSTR_PATH_SCHEMES TEXT("\\Names")
+#define REGSTR_PATH_MULTIMEDIA REGSTR_PATH_SETUP TEXT("\\Multimedia")
+#define REGSTR_PATH_MULTIMEDIA_AUDIO TEXT("Software\\Microsoft\\Multimedia\\Audio")
+
+//
+// Entries for MultiMedia under HKEY_LOCAL_MACHINE
+//
+#define REGSTR_PATH_MEDIARESOURCES REGSTR_PATH_CURRENT_CONTROL_SET TEXT("\\MediaResources")
+#define REGSTR_PATH_MEDIAPROPERTIES REGSTR_PATH_CURRENT_CONTROL_SET TEXT("\\MediaProperties")
+#define REGSTR_PATH_PRIVATEPROPERTIES REGSTR_PATH_MEDIAPROPERTIES TEXT("\\PrivateProperties")
+#define REGSTR_PATH_PUBLICPROPERTIES REGSTR_PATH_MEDIAPROPERTIES TEXT("\\PublicProperties")
+
+// joysticks
+#define REGSTR_PATH_JOYOEM REGSTR_PATH_PRIVATEPROPERTIES TEXT("\\Joystick\\OEM")
+#define REGSTR_PATH_JOYCONFIG REGSTR_PATH_MEDIARESOURCES TEXT("\\Joystick")
+#define REGSTR_KEY_JOYCURR TEXT("CurrentJoystickSettings")
+#define REGSTR_KEY_JOYSETTINGS TEXT("JoystickSettings")
+
+// joystick values found under REGSTR_PATH_JOYCONFIG
+#define REGSTR_VAL_JOYUSERVALUES TEXT("JoystickUserValues")
+#define REGSTR_VAL_JOYCALLOUT TEXT("JoystickCallout")
+
+// joystick values found under REGSTR_KEY_JOYCURR and REGSTR_KEY_JOYSETTINGS
+#define REGSTR_VAL_JOYNCONFIG TEXT("Joystick%dConfiguration")
+#define REGSTR_VAL_JOYNOEMNAME TEXT("Joystick%dOEMName")
+#define REGSTR_VAL_JOYNOEMCALLOUT TEXT("Joystick%dOEMCallout")
+
+// joystick values found under keys under REGSTR_PATH_JOYOEM
+#define REGSTR_VAL_JOYOEMCALLOUT TEXT("OEMCallout")
+#define REGSTR_VAL_JOYOEMNAME TEXT("OEMName")
+#define REGSTR_VAL_JOYOEMDATA TEXT("OEMData")
+#define REGSTR_VAL_JOYOEMXYLABEL TEXT("OEMXYLabel")
+#define REGSTR_VAL_JOYOEMZLABEL TEXT("OEMZLabel")
+#define REGSTR_VAL_JOYOEMRLABEL TEXT("OEMRLabel")
+#define REGSTR_VAL_JOYOEMPOVLABEL TEXT("OEMPOVLabel")
+#define REGSTR_VAL_JOYOEMULABEL TEXT("OEMULabel")
+#define REGSTR_VAL_JOYOEMVLABEL TEXT("OEMVLabel")
+#define REGSTR_VAL_JOYOEMTESTMOVEDESC TEXT("OEMTestMoveDesc")
+#define REGSTR_VAL_JOYOEMTESTBUTTONDESC TEXT("OEMTestButtonDesc")
+#define REGSTR_VAL_JOYOEMTESTMOVECAP TEXT("OEMTestMoveCap")
+#define REGSTR_VAL_JOYOEMTESTBUTTONCAP TEXT("OEMTestButtonCap")
+#define REGSTR_VAL_JOYOEMTESTWINCAP TEXT("OEMTestWinCap")
+#define REGSTR_VAL_JOYOEMCALCAP TEXT("OEMCalCap")
+#define REGSTR_VAL_JOYOEMCALWINCAP TEXT("OEMCalWinCap")
+#define REGSTR_VAL_JOYOEMCAL1 TEXT("OEMCal1")
+#define REGSTR_VAL_JOYOEMCAL2 TEXT("OEMCal2")
+#define REGSTR_VAL_JOYOEMCAL3 TEXT("OEMCal3")
+#define REGSTR_VAL_JOYOEMCAL4 TEXT("OEMCal4")
+#define REGSTR_VAL_JOYOEMCAL5 TEXT("OEMCal5")
+#define REGSTR_VAL_JOYOEMCAL6 TEXT("OEMCal6")
+#define REGSTR_VAL_JOYOEMCAL7 TEXT("OEMCal7")
+#define REGSTR_VAL_JOYOEMCAL8 TEXT("OEMCal8")
+#define REGSTR_VAL_JOYOEMCAL9 TEXT("OEMCal9")
+#define REGSTR_VAL_JOYOEMCAL10 TEXT("OEMCal10")
+#define REGSTR_VAL_JOYOEMCAL11 TEXT("OEMCal11")
+#define REGSTR_VAL_JOYOEMCAL12 TEXT("OEMCal12")
+
+//
+// Stuff shared by kernel and user mode PnP components
+// BUGBUG - shielint. They should be moved to another file.
+//
+
+#define REGSTR_KEY_CONTROL TEXT("Control")
+#define REGSTR_VAL_ACTIVESERVICE TEXT("ActiveService")
+
+#endif //_INC_REGSTR
+
diff --git a/public/sdk/inc/replapi.h b/public/sdk/inc/replapi.h
new file mode 100644
index 000000000..de5eb7508
--- /dev/null
+++ b/public/sdk/inc/replapi.h
@@ -0,0 +1,94 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1993.
+//
+// File: ReplAPI.h
+//
+// Contents: Public Replication APIs and Structures.
+//
+// History: 15-jul-93 PeterCo created
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+#ifndef _REPLAPI_H_
+#define _REPLAPI_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EXPORTDEF STDAPI ReplCreateObject(
+ const WCHAR *pwszMachine,
+ const WCHAR *pwszOraRelativeName,
+ const CLSID& clsid,
+ REFIID itf,
+ PSECURITY_ATTRIBUTES psa,
+ void** ppitf);
+
+EXPORTDEF STDAPI ReplDeleteObject(
+ const WCHAR *pwszMachine,
+ const WCHAR *pwszOraRelativeName);
+
+#define REPL_REPLICATE_NONE (0x00)
+#define REPL_REPLICATE_ASYNC (0x01) // replicate asynchronously
+#define REPL_REPLICATE_META_DATA_ONLY (0x02) // replicate meta data only
+ // until all urgent changes
+ // have been applied.
+
+#define REPL_REPLICATE_ALL_FLAGS ( REPL_REPLICATE_ASYNC | \
+ REPL_REPLICATE_META_DATA_ONLY )
+
+EXPORTDEF STDAPI ReplReplicate(
+ const WCHAR *pwszMachine,
+ const WCHAR *pwszOraRelativeReplicaConnection,
+ DWORD options);
+
+EXPORTDEF STDAPI ReplReplicateSingleObject(
+ const WCHAR *pDfsPathOraMachine,
+ const WCHAR *pDfsPathSrcObj,
+ const WCHAR *pDfsPathSrcMachine,
+ const WCHAR *pDfsPathDstObject,
+ const WCHAR *pDfsPathDstMachine,
+ BOOL bCreateDstIfRequired);
+
+EXPORTDEF STDAPI ReplMetaDataReplicate(
+ const WCHAR *pwszMachine, // ORA to pull to
+ const WCHAR *pwszSource, // ORA to pull from
+ const WCHAR *pwszOraRelativeReplicaSet);
+
+#define REPL_URGENT_NONE (0x00) // no flags
+#define REPL_URGENT_NO_HYSTERESIS (0x01) // exclude from hysteresis calc.
+#define REPL_URGENT_TRIGGER_IMMEDIATE (0x02) // force immediate urgent cycle
+
+#define REPL_URGENT_ALL_FLAGS ( REPL_URGENT_NONE | \
+ REPL_URGENT_NO_HYSTERESIS | \
+ REPL_URGENT_TRIGGER_IMMEDIATE )
+
+EXPORTDEF STDAPI ReplUrgentChangeNotify(
+ REFCLSID clsid, // should match CLSID on root IStg
+ DWORD flags, // ORing of URGENT_NOTIFY_*
+ PVOID reserved, // must be NULL
+ IStorage *pRootStorage); // must have STGM_READWRITE access
+
+EXPORTDEF STDAPI ReplValidatePath(
+ const WCHAR *pDfsPathMachine, // in
+ const WCHAR *pLocalWin32Path, // in
+ WCHAR **ppDfsPath, // out - Dfs path to stuff into replica
+ // object's "root" field
+ HRESULT *phr); // out - S_OK indicates path is valid,
+ // FAILED(*phr) identifies why if invalid
+
+EXPORTDEF STDAPI ReplPropagateMetaData(
+ const WCHAR *pDfsPathMachine, // in - which ORA is to do the propagating
+ // i.e. machine where changes were made
+ const WCHAR *pwszRSet); // in - name of replica set where changes
+ // were made - NULL means check all RSets
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _REPLAPI_H_
diff --git a/public/sdk/inc/resource.hxx b/public/sdk/inc/resource.hxx
new file mode 100644
index 000000000..3b61133d5
--- /dev/null
+++ b/public/sdk/inc/resource.hxx
@@ -0,0 +1,211 @@
+//+-----------------------------------------------------------------------
+//
+// File: resource.hxx
+//
+// Contents: CResource, CReadLock, CWriteLock,
+// CSafeReadLock, CSafeWriteLock.
+//
+//
+// History: 8 Mar 93 WadeR Created.
+// 08-Jul-93 WadeR Moved from security to common
+// 18-Nov-93 WadeR Made inline, added Safe locks
+//
+//------------------------------------------------------------------------
+
+#ifndef _INC_RESOURCE_HXX_
+#define _INC_RESOURCE_HXX_
+
+extern "C"
+{
+#include <nt.h>
+#include <ntrtl.h>
+#include <nturtl.h>
+}
+#include <except.hxx>
+
+//+-----------------------------------------------------------------
+//
+// Class: CResource
+//
+// Purpose: Allows multiple readers or single writer at a resource.
+//
+// Interface: [CResource] --
+// [~CResource] --
+// [GetRead] --
+// [GetWrite] --
+// [ReadToWrite] --
+// [WriteToRead] --
+// [Release] --
+//
+// History: 24-Feb-93 WadeR Created.
+//
+// Notes: This wrapper will allow starving writers, since it just
+// passes everything through to the RTL Resource code, which
+// allows starving writers.
+//
+//------------------------------------------------------------------
+class CResource
+{
+ RTL_RESOURCE _rResource;
+public:
+ CResource();
+ ~CResource();
+ void Release();
+ void GetRead();
+ void GetWrite();
+ void ReadToWrite();
+ void WriteToRead();
+};
+
+
+inline
+CResource::CResource()
+{
+ RtlInitializeResource( &_rResource );
+}
+
+inline
+CResource::~CResource()
+{
+ RtlDeleteResource( &_rResource );
+}
+
+inline
+void CResource::Release()
+{
+ RtlReleaseResource( &_rResource );
+}
+
+inline
+void CResource::GetRead()
+{
+ RtlAcquireResourceShared( &_rResource, TRUE );
+}
+
+inline
+void CResource::GetWrite()
+{
+ RtlAcquireResourceExclusive( &_rResource, TRUE );
+}
+
+inline
+void CResource::ReadToWrite()
+{
+ RtlConvertSharedToExclusive( &_rResource );
+}
+
+inline
+void CResource::WriteToRead()
+{
+ RtlConvertExclusiveToShared( &_rResource );
+}
+
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CReadLock
+//
+// Purpose: Lock using a Resource monitor
+//
+// History: 24-Feb-93 WadeR Created.
+//
+// Notes: Simple lock object to be created on the stack.
+// The constructor acquires the resource, the destructor
+// (called when lock is going out of scope) releases it.
+//
+//----------------------------------------------------------------------------
+
+class CReadLock
+{
+public:
+ CReadLock ( CResource& r ) : _r(r)
+ { _r.GetRead(); };
+ ~CReadLock ()
+ { _r.Release(); };
+private:
+ CResource& _r;
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CWriteLock
+//
+// Purpose: Lock using a Resource monitor
+//
+// History: 24-Feb-93 WadeR Created.
+//
+// Notes: Simple lock object to be created on the stack.
+// The constructor acquires the resource, the destructor
+// (called when lock is going out of scope) releases it.
+//
+//----------------------------------------------------------------------------
+
+class CWriteLock
+{
+public:
+ CWriteLock ( CResource& r ) : _r(r)
+ { _r.GetWrite(); };
+ ~CWriteLock ()
+ { _r.Release(); };
+private:
+ CResource& _r;
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CSafeReadLock
+//
+// Purpose: Exception safe lock using a Resource monitor
+//
+// History: 24-Feb-93 WadeR Created.
+//
+// Notes: Simple lock object to be created on the stack.
+// The constructor acquires the resource, the destructor
+// (called when lock is going out of scope) releases it.
+//
+//----------------------------------------------------------------------------
+
+class CSafeReadLock : INHERIT_UNWIND
+{
+ INLINE_UNWIND(CSafeReadLock);
+
+public:
+ CSafeReadLock ( CResource& r ) : _r(r)
+ { _r.GetRead(); END_CONSTRUCTION (CSafeReadLock); };
+ ~CSafeReadLock ()
+ { _r.Release(); };
+private:
+ CResource& _r;
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Class: CSafeWriteLock
+//
+// Purpose: Exception safe lock using a Resource monitor
+//
+// History: 24-Feb-93 WadeR Created.
+//
+// Notes: Simple lock object to be created on the stack.
+// The constructor acquires the resource, the destructor
+// (called when lock is going out of scope) releases it.
+//
+//----------------------------------------------------------------------------
+
+class CSafeWriteLock : INHERIT_UNWIND
+{
+ INLINE_UNWIND(CSafeWriteLock);
+
+public:
+ CSafeWriteLock ( CResource& r ) : _r(r)
+ { _r.GetWrite(); END_CONSTRUCTION (CSafeWriteLock); };
+ ~CSafeWriteLock ()
+ { _r.Release(); };
+private:
+ CResource& _r;
+};
+#endif // _INC_RESOURCE_HXX_
diff --git a/public/sdk/inc/restrict.hxx b/public/sdk/inc/restrict.hxx
new file mode 100644
index 000000000..66af8acad
--- /dev/null
+++ b/public/sdk/inc/restrict.hxx
@@ -0,0 +1,1662 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: Restrict.hxx
+//
+// Contents: C++ wrapper(s) for restrictions.
+//
+// History: 31-Dec-93 KyleP Created
+// 28-Jul-94 KyleP Hand marshalling
+// 05-Apr-95 t-ColinB Added a SetValue to CPropertyRestriction
+//
+// Notes: These C++ wrappers are a bit of a hack. They are
+// dependent on the layout of the matching C structures.
+// Inheritance from C structures cannot be used directly
+// because MIDL doesn't support C++ style inheritance,
+// and these structures are defined along with their
+// respective Ole interfaces in .idl files.
+//
+// No virtual methods (even virtual destructors) are
+// allowed because they change the layout of the class
+// in C++. Luckily, the class hierarchies below are
+// quite flat. Virtual methods are simulated with
+// switch statements in parent classes.
+//
+// In C, all structures must be allocated via CoTaskMemAlloc.
+// This is the only common allocator for Ole.
+//
+//--------------------------------------------------------------------------
+
+#if !defined( __RESTRICT_HXX__ )
+#define __RESTRICT_HXX__
+
+#include <query.h>
+#include <stgvar.hxx>
+
+//
+// The OFFSETS_MATCH macro is used to verify structure offsets between
+// C++ structures and their corresponding C structures. 0 Cannot be used
+// as pointer because of special treatment of casts to 0 in C++
+//
+
+#define OFFSETS_MATCH( class1, field1, class2, field2 ) \
+ ( (int)&((class1 *)10)->field1 == \
+ (int)&((class2 *)10)->field2 )
+
+//
+// Forward declarations
+//
+
+class CNodeRestriction;
+class PSerStream;
+class PDeSerStream;
+
+//+-------------------------------------------------------------------------
+//
+// Class: CFullPropertySpec
+//
+// Purpose: Describes full (PropertySet\Property) name of a property.
+//
+// History: 08-Jan-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CFullPropSpec
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ CFullPropSpec();
+ CFullPropSpec( GUID const & guidPropSet, PROPID pidProperty );
+ CFullPropSpec( GUID const & guidPropSet, WCHAR const * wcsProperty );
+
+ //
+ // Validity check
+ //
+
+ inline BOOL IsValid() const;
+
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ CFullPropSpec( CFullPropSpec const & Property );
+ CFullPropSpec & operator=( CFullPropSpec const & Property );
+
+ //
+ // Destructor
+ //
+
+ ~CFullPropSpec();
+
+ //
+ // Memory allocation
+ //
+
+ void * operator new( size_t size );
+ inline void * operator new( size_t size, void * p );
+ void operator delete( void * p );
+
+ //
+ // C/C++ conversion
+ //
+
+ inline FULLPROPSPEC * CastToStruct();
+ inline FULLPROPSPEC const * CastToStruct() const;
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CFullPropSpec( PDeSerStream & stm );
+
+ //
+ // Comparators
+ //
+
+ int operator==( CFullPropSpec const & prop ) const;
+ int operator!=( CFullPropSpec const & prop ) const;
+
+ //
+ // Member variable access
+ //
+
+ inline void SetPropSet( GUID const & guidPropSet );
+ inline GUID const & GetPropSet() const;
+
+ void SetProperty( PROPID pidProperty );
+ BOOL SetProperty( WCHAR const * wcsProperty );
+ inline WCHAR const * GetPropertyName() const;
+ inline PROPID GetPropertyPropid() const;
+ inline PROPSPEC GetPropSpec() const;
+
+ inline BOOL IsPropertyName() const;
+ inline BOOL IsPropertyPropid() const;
+
+# ifdef KDEXTMODE
+ void OfsKdDump(void *krnlSelf);
+# endif
+
+
+private:
+
+ GUID _guidPropSet;
+ PROPSPEC _psProperty;
+};
+
+inline
+int CFullPropSpec::operator==( CFullPropSpec const & prop ) const
+{
+ if ( prop._psProperty.ulKind != _psProperty.ulKind )
+ return 0;
+
+ switch( _psProperty.ulKind )
+ {
+
+ case PRSPEC_PROPID:
+ if ( GetPropertyPropid() != prop.GetPropertyPropid() )
+ return 0;
+ break;
+
+ case PRSPEC_LPWSTR:
+ if ( _wcsicmp( GetPropertyName(), prop.GetPropertyName() ) != 0 )
+ return 0;
+ break;
+
+ default:
+ return 0;
+ }
+
+ return prop._guidPropSet == _guidPropSet;
+}
+
+inline
+int CFullPropSpec::operator!=( CFullPropSpec const & prop ) const
+{
+ if (*this == prop)
+ return( 0 );
+ else
+ return( 1 );
+}
+
+inline
+CFullPropSpec::~CFullPropSpec()
+{
+ if ( _psProperty.ulKind == PRSPEC_LPWSTR &&
+ _psProperty.lpwstr )
+ {
+ CoTaskMemFree( _psProperty.lpwstr );
+ }
+}
+
+inline void * operator new( size_t size, void * p )
+{
+ return( p );
+}
+
+//+-------------------------------------------------------------------------
+//
+// Member: CFullPropSpec::CFullPropSpec, public
+//
+// Synopsis: Construct name based propspec
+//
+// Arguments: [guidPropSet] -- Property set
+// [wcsProperty] -- Property
+//
+// History: 22-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+inline
+CFullPropSpec::CFullPropSpec( GUID const & guidPropSet,
+ WCHAR const * wcsProperty )
+ : _guidPropSet( guidPropSet )
+{
+ _psProperty.ulKind = PRSPEC_PROPID;
+ SetProperty( wcsProperty );
+}
+
+//+-------------------------------------------------------------------------
+//
+// Member: CFullPropSpec::CFullPropSpec, public
+//
+// Synopsis: Construct propid based propspec
+//
+// Arguments: [guidPropSet] -- Property set
+// [pidProperty] -- Property
+//
+// History: 22-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+inline
+CFullPropSpec::CFullPropSpec( GUID const & guidPropSet, PROPID pidProperty )
+ : _guidPropSet( guidPropSet )
+{
+ _psProperty.ulKind = PRSPEC_PROPID;
+ _psProperty.propid = pidProperty;
+}
+
+//+-------------------------------------------------------------------------
+//
+// Member: CFullPropSpec::CFullPropSpec, public
+//
+// Synopsis: Default constructor
+//
+// Effects: Defines property with null guid and propid 0
+//
+// History: 22-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+inline
+CFullPropSpec::CFullPropSpec()
+{
+ RtlZeroMemory( &_guidPropSet, sizeof(_guidPropSet) );
+ _psProperty.ulKind = PRSPEC_PROPID;
+ _psProperty.propid = 0;
+}
+
+
+//+-------------------------------------------------------------------------
+//
+// Member: CFullPropSpec::operator=, public
+//
+// Synopsis: Assignment operator
+//
+// Arguments: [Property] -- Source property
+//
+// History: 17-Jul-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+inline
+CFullPropSpec & CFullPropSpec::operator=( CFullPropSpec const & Property )
+{
+ //
+ // Clean up.
+ //
+
+ CFullPropSpec::~CFullPropSpec();
+
+ new (this) CFullPropSpec( Property );
+
+ return *this;
+}
+
+//+-------------------------------------------------------------------------
+//
+// Class: CColumns
+//
+// Purpose: C++ wrapper for COLUMNSET
+//
+// History: 22-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CColumns
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ CColumns( unsigned size = 0 );
+
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ CColumns( CColumns const & src );
+ CColumns & operator=( CColumns const & src );
+
+ //
+ // Destructor
+ //
+
+ ~CColumns();
+
+ //
+ // Memory allocation
+ //
+
+ void * operator new( size_t size );
+ void operator delete( void * p );
+
+ //
+ // Validity check
+ //
+
+ inline BOOL IsValid() const;
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CColumns( PDeSerStream & stm );
+
+ //
+ // C/C++ conversion
+ //
+
+ inline COLUMNSET * CastToStruct();
+
+ //
+ // Member variable access
+ //
+
+ BOOL Add( CFullPropSpec const & Property, unsigned pos );
+ void Remove( unsigned pos );
+ inline CFullPropSpec const & Get( unsigned pos ) const;
+
+ inline unsigned Count() const;
+
+
+private:
+
+ unsigned _cCol;
+ CFullPropSpec * _aCol;
+ unsigned _size;
+};
+
+//+-------------------------------------------------------------------------
+//
+// Structure: SortKey
+//
+// Purpose: wraper for SORTKEY class
+//
+//--------------------------------------------------------------------------
+
+class CSortKey
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ inline CSortKey();
+ inline CSortKey( CFullPropSpec const & ps, ULONG dwOrder );
+ inline CSortKey( CFullPropSpec const & ps, ULONG dwOrder, LCID locale );
+
+ //
+ // Memory allocation
+ //
+
+ void * operator new( size_t size );
+ void operator delete( void * p );
+
+ //
+ // Validity check
+ //
+
+ inline BOOL IsValid() const;
+
+ //
+ // Member variable access
+ //
+
+ inline void SetProperty( CFullPropSpec const & ps );
+ inline CFullPropSpec const & GetProperty() const;
+ inline ULONG GetOrder() const;
+ inline LCID GetLocale() const;
+ inline void SetLocale(LCID locale);
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CSortKey( PDeSerStream & stm );
+
+private:
+
+ CFullPropSpec _property;
+ ULONG _dwOrder;
+ LCID _locale;
+};
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CSort
+//
+// Purpose: C++ wrapper for SORTSET
+//
+// History: 22-Jun-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CSort
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ CSort( unsigned size = 0 );
+
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ CSort( CSort const & src );
+ CSort & operator=( CSort const & src );
+
+ //
+ // Destructor
+ //
+
+ ~CSort();
+
+ //
+ // Memory allocation
+ //
+
+ inline void * operator new( size_t size );
+ inline void operator delete( void * p );
+
+ //
+ // Validity check
+ //
+
+ inline BOOL IsValid() const;
+
+ //
+ // C/C++ conversion
+ //
+
+ inline SORTSET * CastToStruct();
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CSort( PDeSerStream & stm );
+
+ //
+ // Member variable access
+ //
+
+ BOOL Add( CSortKey const &sk, unsigned pos );
+ BOOL Add( CFullPropSpec const & Property, ULONG dwOrder, unsigned pos );
+ void Remove( unsigned pos );
+ inline CSortKey const & Get( unsigned pos ) const;
+
+ inline unsigned Count() const;
+
+private:
+
+ unsigned _csk;
+ CSortKey * _ask;
+ unsigned _size;
+};
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CRestriction
+//
+// Purpose: Base restriction class
+//
+// History: 31-Dec-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CRestriction
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ inline CRestriction();
+ inline CRestriction( ULONG RestrictionType, ULONG ulWeight );
+
+ //
+ // Copy constructors/assigment/clone
+ //
+
+ CRestriction * Clone();
+
+ //
+ // Destructor
+ //
+
+ ~CRestriction();
+
+ //
+ // Memory allocation
+ //
+
+ void * operator new( size_t size );
+ void operator delete( void * p );
+
+ //
+ // Validity check
+ //
+
+ BOOL IsValid() const;
+
+ //
+ // C/C++ conversion
+ //
+
+ inline RESTRICTION * CastToStruct() const;
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ static CRestriction * UnMarshall( PDeSerStream & stm );
+
+ //
+ // Member variable access
+ //
+
+ inline ULONG Type() const;
+ inline ULONG Weight() const;
+
+ inline void SetWeight( ULONG ulWeight );
+
+ inline CNodeRestriction * CastToNode() const;
+
+ BOOL IsLeaf() const;
+
+ ULONG TreeCount() const;
+
+
+# ifdef KDEXTMODE
+ void OfsKdDump(void *krnlSelf);
+# endif
+
+protected:
+
+ inline void SetType( ULONG RestrictionType );
+
+private:
+
+ ULONG _ulType;
+ ULONG _ulWeight;
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: CNodeRestriction
+//
+// Purpose: Boolean AND/OR/VECTOR restriction
+//
+// History: 31-Dec-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CNodeRestriction : public CRestriction
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ CNodeRestriction( ULONG NodeType, unsigned cInitAllocated = 2 );
+
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ CNodeRestriction( const CNodeRestriction& nodeRst );
+ CNodeRestriction * Clone();
+
+ //
+ // Destructor
+ //
+
+ ~CNodeRestriction();
+
+ //
+ // Validity check
+ //
+
+ BOOL IsValid() const;
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CNodeRestriction( ULONG ulType, ULONG ulWeight, PDeSerStream & stm );
+
+ //
+ // Node manipulation
+ //
+
+ BOOL AddChild( CRestriction * presChild, unsigned & pos );
+ inline BOOL AddChild( CRestriction * presChild );
+ CRestriction * RemoveChild( unsigned pos );
+
+ //
+ // Member variable access
+ //
+
+ inline void SetChild( CRestriction * presChild, unsigned pos );
+ inline CRestriction * GetChild( unsigned pos ) const;
+
+ inline unsigned Count() const;
+
+# ifdef KDEXTMODE
+ void OfsKdDump(void *krnlSelf);
+# endif
+
+private:
+
+ BOOL Grow();
+
+protected:
+
+ ULONG _cNode;
+ CRestriction ** _paNode;
+
+ //
+ // Members mapped to C structure end here. The following will
+ // be reserved in the C structure to maintain to C <--> C++
+ // facade.
+ //
+
+ ULONG _cNodeAllocated;
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: CNotRestriction
+//
+// Purpose: Boolean AND/OR/VECTOR restriction
+//
+// History: 31-Dec-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CNotRestriction : public CRestriction
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ inline CNotRestriction();
+ inline CNotRestriction( CRestriction * pres );
+ CNotRestriction( CNotRestriction& notRst );
+
+ CNotRestriction *Clone();
+
+ //
+ // Destructor
+ //
+
+ ~CNotRestriction();
+
+ //
+ // Validity check
+ //
+
+ inline BOOL IsValid() const;
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CNotRestriction( ULONG ulWeight, PDeSerStream & stm );
+
+ //
+ // Node manipulation
+ //
+
+ inline void SetChild( CRestriction * pres );
+ inline CRestriction * GetChild();
+ inline CRestriction * RemoveChild();
+
+# ifdef KDEXTMODE
+ void OfsKdDump(void *krnlSelf);
+# endif
+
+private:
+
+ CRestriction * _pres;
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: CVectorRestriction
+//
+// Purpose: Extended boolean (vector) restriction
+//
+// History: 08-Jan-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CVectorRestriction : public CNodeRestriction
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ inline CVectorRestriction( ULONG ulRankMethod,
+ unsigned cInitAllocated = 128 );
+
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ inline CVectorRestriction( CVectorRestriction& vecRst );
+ CVectorRestriction * Clone();
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CVectorRestriction( ULONG ulWeight, PDeSerStream & stm );
+
+ //
+ // Member variable access
+ //
+
+ inline void SetRankMethod( ULONG ulRankMethod );
+ inline ULONG RankMethod() const;
+
+# ifdef KDEXTMODE
+ void OfsKdDump(void *krnlSelf);
+# endif
+
+private:
+
+ ULONG _ulRankMethod;
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: CContentRestriction
+//
+// Purpose: Scope restriction
+//
+// History: 07-Jan-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CContentRestriction : public CRestriction
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ CContentRestriction( WCHAR const * pwcsPhrase,
+ CFullPropSpec const & Property,
+ ULONG ulFuzzy = 0,
+ LCID lcid = GetSystemDefaultLCID() );
+ CContentRestriction( CContentRestriction& contentRst );
+
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ CContentRestriction * Clone();
+
+ //
+ // Destructor
+ //
+
+ ~CContentRestriction();
+
+ //
+ // Validity check
+ //
+
+ inline BOOL IsValid() const;
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CContentRestriction( ULONG ulWeight, PDeSerStream & stm );
+
+ //
+ // Member variable access
+ //
+
+ void SetPhrase( WCHAR const * pwcsPhrase );
+ inline WCHAR const * GetPhrase() const;
+
+ inline void SetProperty( CFullPropSpec const & Property );
+ inline CFullPropSpec const & GetProperty() const;
+
+ LCID GetLocale() const { return _lcid; }
+
+ inline void SetFuzzyLevel( ULONG ulFuzzy );
+ inline ULONG FuzzyLevel();
+
+
+# ifdef KDEXTMODE
+ void OfsKdDump(void *krnlSelf);
+# endif
+
+private:
+
+ CFullPropSpec _Property; // Property Name
+ WCHAR * _pwcsPhrase; // content
+ LCID _lcid;
+ ULONG _ulFuzzyLevel; // Fuzzy search level.
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: CComplexContentRestriction
+//
+// Purpose: Supports scaffolding query language
+//
+// History: 08-Jan-93 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class CComplexContentRestriction : public CRestriction
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ CComplexContentRestriction( WCHAR * pwcsExpression,
+ LCID lcid = GetSystemDefaultLCID() );
+ CComplexContentRestriction( const CComplexContentRestriction& compRst );
+
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ CComplexContentRestriction * Clone();
+
+ //
+ // Destructors
+ //
+
+ ~CComplexContentRestriction();
+
+ //
+ // Validity check
+ //
+
+ BOOL IsValid() const;
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CComplexContentRestriction( ULONG ulWeight, PDeSerStream & stm );
+
+ //
+ // Member variable access
+ //
+
+ void SetExpression( WCHAR * pwcsExpression );
+
+ inline WCHAR * GetExpression();
+
+ LCID GetLocale() const { return _lcid; }
+
+# ifdef KDEXTMODE
+ void OfsKdDump(void *krnlSelf);
+# endif
+
+private:
+
+ WCHAR * _pwcsExpression;
+ LCID _lcid;
+};
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CNatLanguageRestriction
+//
+// Purpose: Supports natural language queries
+//
+// History: 18-Jan-95 SitaramR Created
+//
+//--------------------------------------------------------------------------
+
+class CNatLanguageRestriction : public CRestriction
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ CNatLanguageRestriction( WCHAR const * pwcsPhrase,
+ CFullPropSpec const & Property,
+ LCID lcid = GetSystemDefaultLCID() );
+
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ CNatLanguageRestriction * Clone();
+
+ //
+ // Destructors
+ //
+
+ ~CNatLanguageRestriction();
+
+ //
+ // Validity check
+ //
+
+ inline BOOL IsValid() const;
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CNatLanguageRestriction( ULONG ulWeight, PDeSerStream & stm );
+
+ //
+ // Member variable access
+ //
+
+ void SetPhrase( WCHAR const * pwcsPhrase );
+ inline WCHAR const * GetPhrase() const;
+
+ inline void SetProperty( CFullPropSpec const & Property );
+ inline CFullPropSpec const & GetProperty() const;
+
+ LCID GetLocale() const { return _lcid; }
+
+# ifdef KDEXTMODE
+ void OfsKdDump(void *krnlSelf);
+# endif
+
+private:
+
+ CFullPropSpec _Property; // Property Name
+ WCHAR * _pwcsPhrase; // content
+ LCID _lcid;
+};
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CPropertyRestriction
+//
+// Purpose: Property <relop> constant restriction
+//
+// History: 08-Jan-93 KyleP Created
+// 08-Nov-93 DwightKr Added new SetValue() methods
+//
+//--------------------------------------------------------------------------
+
+class CPropertyRestriction : public CRestriction
+{
+public:
+
+ //
+ // Constructors
+ //
+
+ CPropertyRestriction();
+
+ CPropertyRestriction( ULONG relop,
+ CFullPropSpec const & Property,
+ CStorageVariant const & prval );
+ //
+ // Copy constructors/assignment/clone
+ //
+
+ CPropertyRestriction * Clone();
+
+ //
+ // Destructors
+ //
+
+ ~CPropertyRestriction();
+
+ //
+ // Validity check
+ //
+
+ inline BOOL IsValid() const;
+
+ //
+ // Serialization
+ //
+
+ void Marshall( PSerStream & stm ) const;
+ CPropertyRestriction( ULONG ulWeight, PDeSerStream & stm );
+
+ //
+ // Member variable access
+ //
+
+ inline void SetRelation( ULONG relop );
+ inline ULONG Relation();
+
+ inline void SetProperty( CFullPropSpec const & Property );
+ inline CFullPropSpec const & GetProperty() const;
+
+ inline void SetValue( double dValue );
+ inline void SetUI4( ULONG ulValue );
+ inline void SetValue( ULONG ulValue );
+ inline void SetValue( LONG lValue );
+ inline void SetValue( LARGE_INTEGER llValue );
+ inline void SetValue( FILETIME ftValue );
+ inline void SetValue( CY CyValue );
+ inline void SetValue( float fValue );
+ inline void SetValue( SHORT sValue );
+ inline void SetValue( const CStorageVariant &prval );
+ inline void SetDate ( DATE dValue );
+ inline void SetBOOL( BOOL fValue );
+
+ void SetValue( BLOB & bValue );
+ void SetValue( WCHAR * pwcsValue );
+ void SetValue( GUID * pguidValue);
+
+ inline CStorageVariant const & Value();
+
+# ifdef KDEXTMODE
+ void OfsKdDump(void *krnlSelf);
+# endif
+
+private:
+
+ void _CleanValue();
+
+ ULONG _relop; // Relation
+ CFullPropSpec _Property; // Property Name
+ CStorageVariant _prval; // Constant value
+};
+
+//
+// Inline methods for CFullPropSpec
+//
+
+inline void * CFullPropSpec::operator new( size_t size )
+{
+ void * p = CoTaskMemAlloc( size );
+
+ return( p );
+}
+
+inline void * CFullPropSpec::operator new( size_t size, void * p )
+{
+ return( p );
+}
+
+inline void CFullPropSpec::operator delete( void * p )
+{
+ if ( p )
+ CoTaskMemFree( p );
+}
+
+inline BOOL CFullPropSpec::IsValid() const
+{
+ return ( _psProperty.ulKind == PRSPEC_PROPID ||
+ 0 != _psProperty.lpwstr );
+}
+
+inline void CFullPropSpec::SetPropSet( GUID const & guidPropSet )
+{
+ _guidPropSet = guidPropSet;
+}
+
+inline GUID const & CFullPropSpec::GetPropSet() const
+{
+ return( _guidPropSet );
+}
+
+inline PROPSPEC CFullPropSpec::GetPropSpec() const
+{
+ return( _psProperty );
+}
+
+inline WCHAR const * CFullPropSpec::GetPropertyName() const
+{
+ return( _psProperty.lpwstr );
+}
+
+inline PROPID CFullPropSpec::GetPropertyPropid() const
+{
+ return( _psProperty.propid );
+}
+
+inline BOOL CFullPropSpec::IsPropertyName() const
+{
+ return( _psProperty.ulKind == PRSPEC_LPWSTR );
+}
+
+inline BOOL CFullPropSpec::IsPropertyPropid() const
+{
+ return( _psProperty.ulKind == PRSPEC_PROPID );
+}
+
+inline BOOL CColumns::IsValid() const
+{
+ return ( 0 != _aCol );
+}
+
+inline CFullPropSpec const & CColumns::Get( unsigned pos ) const
+{
+ if ( pos < _cCol )
+ return( _aCol[pos] );
+ else
+ return( *(CFullPropSpec *)0 );
+}
+
+//
+// Inline methods for CColumns
+//
+
+inline void * CColumns::operator new( size_t size )
+{
+ void * p = CoTaskMemAlloc( size );
+
+ return( p );
+}
+
+inline void CColumns::operator delete( void * p )
+{
+ if ( p )
+ CoTaskMemFree( p );
+}
+
+inline unsigned CColumns::Count() const
+{
+ return( _cCol );
+}
+
+inline COLUMNSET * CColumns::CastToStruct()
+{
+ return( (COLUMNSET *)this );
+}
+
+//
+// Inline methods for CSortKey
+//
+
+inline CSortKey::CSortKey()
+{
+}
+
+inline CSortKey::CSortKey( CFullPropSpec const & ps, ULONG dwOrder )
+ : _property( ps ),
+ _dwOrder( dwOrder )
+{
+}
+
+inline CSortKey::CSortKey( CFullPropSpec const & ps, ULONG dwOrder, LCID locale )
+ : _property( ps ),
+ _dwOrder( dwOrder ),
+ _locale ( locale )
+{
+}
+
+inline void * CSortKey::operator new( size_t size )
+{
+ void * p = CoTaskMemAlloc( size );
+
+ return( p );
+}
+
+inline void CSortKey::operator delete( void * p )
+{
+ if ( p )
+ CoTaskMemFree( p );
+}
+
+inline BOOL CSortKey::IsValid() const
+{
+ return _property.IsValid();
+}
+
+inline void CSortKey::SetProperty( CFullPropSpec const & ps )
+{
+ _property = ps;
+}
+
+inline void CSortKey::SetLocale( LCID locale )
+{
+ _locale = locale;
+}
+
+
+inline CFullPropSpec const & CSortKey::GetProperty() const
+{
+ return( _property );
+}
+
+inline LCID CSortKey::GetLocale() const
+{
+ return( _locale );
+}
+
+
+inline ULONG CSortKey::GetOrder() const
+{
+ return( _dwOrder );
+}
+
+//
+// Inline methods of CSort
+//
+
+inline void * CSort::operator new( size_t size )
+{
+ void * p = CoTaskMemAlloc( size );
+
+ return( p );
+}
+
+inline void CSort::operator delete( void * p )
+{
+ if ( p )
+ CoTaskMemFree( p );
+}
+
+inline BOOL CSort::IsValid() const
+{
+ return ( 0 != _ask );
+}
+
+inline SORTSET * CSort::CastToStruct()
+{
+ return( (SORTSET *)this );
+}
+
+inline CSortKey const & CSort::Get( unsigned pos ) const
+{
+ if ( pos < _csk )
+ {
+ return( _ask[pos] );
+ }
+ else
+ {
+ return( *(CSortKey *)0 );
+ }
+}
+
+inline unsigned
+CSort::Count() const
+{
+ return( _csk );
+}
+
+
+//
+// Inline methods of CRestriction
+//
+
+inline CRestriction::CRestriction()
+ : _ulType( RTNone ),
+ _ulWeight( ulMaxRank )
+{
+}
+
+inline CRestriction::CRestriction( ULONG RestrictionType, ULONG ulWeight )
+ : _ulType( RestrictionType ),
+ _ulWeight( ulWeight )
+{
+}
+
+inline void * CRestriction::operator new( size_t size )
+{
+ void * p = CoTaskMemAlloc( size );
+
+ return( p );
+}
+
+inline void CRestriction::operator delete( void * p )
+{
+ if ( p )
+ CoTaskMemFree( p );
+}
+
+inline RESTRICTION * CRestriction::CastToStruct() const
+{
+ //
+ // It would be nice to assert valid _ulType here, but there is
+ // no published assert mechanism for external use.
+ //
+
+ return ( (RESTRICTION *)this );
+}
+
+inline FULLPROPSPEC * CFullPropSpec::CastToStruct()
+{
+ return((FULLPROPSPEC *) this);
+}
+
+inline FULLPROPSPEC const * CFullPropSpec::CastToStruct() const
+{
+ return((FULLPROPSPEC const *) this);
+}
+
+
+
+inline ULONG CRestriction::Type() const
+{
+ return ( _ulType );
+}
+
+inline ULONG CRestriction::Weight() const
+{
+ return ( _ulWeight );
+}
+
+inline void CRestriction::SetWeight( ULONG ulWeight )
+{
+ _ulWeight = ulWeight;
+}
+
+inline void CRestriction::SetType( ULONG RestrictionType )
+{
+ _ulType = RestrictionType;
+}
+
+//
+// Inline methods of CNodeRestriction
+//
+
+inline BOOL CNodeRestriction::AddChild( CRestriction * prst )
+{
+ unsigned pos;
+ return( AddChild( prst, pos ) );
+}
+
+inline unsigned CNodeRestriction::Count() const
+{
+ return( _cNode );
+}
+
+inline CNodeRestriction * CRestriction::CastToNode() const
+{
+ //
+ // It would be nice to assert node type here, but there is
+ // no published assert mechanism for external use.
+ //
+
+ return ( (CNodeRestriction *)this );
+}
+
+inline void CNodeRestriction::SetChild( CRestriction * presChild,
+ unsigned pos )
+{
+ if ( pos < _cNode )
+ _paNode[pos] = presChild;
+}
+
+inline CRestriction * CNodeRestriction::GetChild( unsigned pos ) const
+{
+ if ( pos < _cNode )
+ return( _paNode[pos] );
+ else
+ return( 0 );
+}
+
+//
+// Inline methods of CNotRestriction
+//
+
+inline CNotRestriction::CNotRestriction()
+ : CRestriction( RTNot, ulMaxRank ),
+ _pres(0)
+{
+}
+
+inline CNotRestriction::CNotRestriction( CRestriction * pres )
+ : CRestriction( RTNot, ulMaxRank ),
+ _pres( pres )
+{
+}
+
+inline BOOL CNotRestriction::IsValid() const
+{
+ return ( 0 != _pres && _pres->IsValid() );
+}
+
+inline void CNotRestriction::SetChild( CRestriction * pres )
+{
+ delete _pres;
+ _pres = pres;
+}
+
+inline CRestriction * CNotRestriction::GetChild()
+{
+ return( _pres );
+}
+
+inline CRestriction * CNotRestriction::RemoveChild()
+{
+ CRestriction *pRst = _pres;
+ _pres = 0;
+
+ return pRst;
+}
+
+//
+// Inline methods of CVectorRestriction
+//
+
+inline CVectorRestriction::CVectorRestriction( ULONG ulRankMethod,
+ unsigned cInitAllocated )
+ : CNodeRestriction( RTVector, cInitAllocated )
+{
+ SetRankMethod( ulRankMethod );
+}
+
+inline CVectorRestriction::CVectorRestriction( CVectorRestriction& vecRst )
+ : CNodeRestriction( vecRst ),
+ _ulRankMethod( vecRst.RankMethod() )
+{
+}
+
+inline void CVectorRestriction::SetRankMethod( ULONG ulRankMethod )
+{
+ if ( ulRankMethod >= VECTOR_RANK_MIN &&
+ ulRankMethod <= VECTOR_RANK_JACCARD )
+ {
+ _ulRankMethod = ulRankMethod;
+ }
+ else
+ {
+ _ulRankMethod = VECTOR_RANK_JACCARD;
+ }
+}
+
+inline ULONG CVectorRestriction::RankMethod() const
+{
+ return ( _ulRankMethod );
+}
+
+//
+// Inline methods of CContentRestriction
+//
+
+inline BOOL CContentRestriction::IsValid() const
+{
+ return ( _Property.IsValid() && 0 != _pwcsPhrase );
+}
+
+inline WCHAR const * CContentRestriction::GetPhrase() const
+{
+ return( _pwcsPhrase );
+}
+
+inline void CContentRestriction::SetProperty( CFullPropSpec const & Property )
+{
+ _Property = Property;
+}
+
+inline CFullPropSpec const & CContentRestriction::GetProperty() const
+{
+ return( _Property );
+}
+
+inline void CContentRestriction::SetFuzzyLevel( ULONG ulFuzzy )
+{
+ _ulFuzzyLevel = ulFuzzy;
+}
+
+inline ULONG CContentRestriction::FuzzyLevel()
+{
+ return( _ulFuzzyLevel );
+}
+
+//
+// Inline methods of CComplexContentRestriction
+//
+
+inline BOOL CComplexContentRestriction::IsValid() const
+{
+ return ( 0 != _pwcsExpression );
+}
+
+inline WCHAR * CComplexContentRestriction::GetExpression()
+{
+ return( _pwcsExpression );
+}
+
+//
+// Inline methods of CNatLanguageRestriction
+//
+
+inline BOOL CNatLanguageRestriction::IsValid() const
+{
+ return ( _Property.IsValid() && 0 != _pwcsPhrase );
+}
+
+inline WCHAR const * CNatLanguageRestriction::GetPhrase() const
+{
+ return( _pwcsPhrase );
+}
+
+inline void CNatLanguageRestriction::SetProperty( CFullPropSpec const & Property )
+{
+ _Property = Property;
+}
+
+inline CFullPropSpec const & CNatLanguageRestriction::GetProperty() const
+{
+ return( _Property );
+}
+
+
+//
+// Inline methods of CPropertyRestriction
+//
+
+inline BOOL CPropertyRestriction::IsValid() const
+{
+ return ( _Property.IsValid() && _prval.IsValid() );
+}
+
+inline void CPropertyRestriction::SetRelation( ULONG relop )
+{
+ _relop = relop;
+}
+
+inline ULONG CPropertyRestriction::Relation()
+{
+ return( _relop );
+}
+
+inline void CPropertyRestriction::SetProperty( CFullPropSpec const & Property )
+{
+ _Property = Property;
+}
+
+inline CFullPropSpec const & CPropertyRestriction::GetProperty() const
+{
+ return( _Property );
+}
+
+inline void CPropertyRestriction::SetValue( double dValue )
+{
+ _prval = dValue;
+}
+
+inline void CPropertyRestriction::SetValue( ULONG ulValue )
+{
+ _prval.SetUI4( ulValue );
+}
+
+inline void CPropertyRestriction::SetUI4( ULONG ulValue )
+{
+ _prval.SetUI4( ulValue );
+}
+
+inline void CPropertyRestriction::SetValue( LONG lValue )
+{
+ _prval = lValue;
+}
+
+inline void CPropertyRestriction::SetValue( LARGE_INTEGER llValue )
+{
+ _prval = llValue;
+}
+
+inline void CPropertyRestriction::SetValue( FILETIME ftValue )
+{
+ _prval = ftValue;
+}
+
+inline void CPropertyRestriction::SetValue( CY cyValue )
+{
+ _prval = cyValue;
+}
+
+inline void CPropertyRestriction::SetValue( float fValue )
+{
+ _prval = fValue;
+}
+
+inline void CPropertyRestriction::SetValue( SHORT sValue )
+{
+ _prval = sValue;
+}
+
+inline void CPropertyRestriction::SetValue( const CStorageVariant &prval )
+{
+ _prval = prval;
+}
+
+inline void CPropertyRestriction::SetBOOL( BOOL fValue )
+{
+ _prval.SetBOOL( fValue );
+}
+
+inline void CPropertyRestriction::SetDate( DATE dValue )
+{
+ _prval.SetDATE( dValue );
+}
+
+inline CStorageVariant const & CPropertyRestriction::Value()
+{
+ return( _prval );
+}
+
+#endif // __RESTRICT_HXX__
diff --git a/public/sdk/inc/richedit.h b/public/sdk/inc/richedit.h
new file mode 100644
index 000000000..1b3df86bf
--- /dev/null
+++ b/public/sdk/inc/richedit.h
@@ -0,0 +1,1028 @@
+/*
+ * RICHEDIT.H
+ *
+ * Purpose:
+ * RICHEDIT v2.0 public definitions. Note that there is additional
+ * functionality available for v2.0 that is not in the original
+ * Windows 95 release.
+ *
+ * Copyright (c) 1985-1996, Microsoft Corporation
+ */
+
+#ifndef _RICHEDIT_
+#define _RICHEDIT_
+
+#ifdef _WIN32
+#include <pshpack4.h>
+#elif !defined(RC_INVOKED)
+#pragma pack(4)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* To mimic RichEdit 1.0 behavior for Unicode apps, simply set _RICHEDIT_VER to 0x0100 */
+#ifndef _RICHEDIT_VER
+#define _RICHEDIT_VER 0x0200
+#endif
+
+/*
+ * To make some structures which can be passed between 16 and 32 bit windows
+ * almost compatible, padding is introduced to the 16 bit versions of the
+ * structure.
+ */
+#ifdef _WIN32
+# define _WPAD /##/
+#else
+# define _WPAD WORD
+#endif
+
+#define cchTextLimitDefault 32767
+
+/* Richedit2.0 Window Class. */
+
+#define RICHEDIT_CLASSA "RichEdit20A"
+#define RICHEDIT_CLASS10A "RICHEDIT" // Richedit 1.0
+
+#ifndef MACPORT
+#define RICHEDIT_CLASSW L"RichEdit20W"
+#else /*----------------------MACPORT */
+#define RICHEDIT_CLASSW TEXT("RichEdit20W") /* MACPORT change */
+#endif /* MACPORT */
+
+#if (_RICHEDIT_VER >= 0x0200 )
+#ifdef UNICODE
+#define RICHEDIT_CLASS RICHEDIT_CLASSW
+#else
+#define RICHEDIT_CLASS RICHEDIT_CLASSA
+#endif /* UNICODE */
+#else
+#define RICHEDIT_CLASS RICHEDIT_CLASS10A
+#endif /* _RICHEDIT_VER >= 0x0200 */
+
+/* RichEdit messages */
+
+#ifndef WM_CONTEXTMENU
+#define WM_CONTEXTMENU 0x007B
+#endif
+
+#ifndef WM_PRINTCLIENT
+#define WM_PRINTCLIENT 0x0318
+#endif
+
+#ifndef EM_GETLIMITTEXT
+#define EM_GETLIMITTEXT (WM_USER + 37)
+#endif
+
+#ifndef EM_POSFROMCHAR
+#define EM_POSFROMCHAR (WM_USER + 38)
+#define EM_CHARFROMPOS (WM_USER + 39)
+#endif
+
+#ifndef EM_SCROLLCARET
+#define EM_SCROLLCARET (WM_USER + 49)
+#endif
+#define EM_CANPASTE (WM_USER + 50)
+#define EM_DISPLAYBAND (WM_USER + 51)
+#define EM_EXGETSEL (WM_USER + 52)
+#define EM_EXLIMITTEXT (WM_USER + 53)
+#define EM_EXLINEFROMCHAR (WM_USER + 54)
+#define EM_EXSETSEL (WM_USER + 55)
+#define EM_FINDTEXT (WM_USER + 56)
+#define EM_FORMATRANGE (WM_USER + 57)
+#define EM_GETCHARFORMAT (WM_USER + 58)
+#define EM_GETEVENTMASK (WM_USER + 59)
+#define EM_GETOLEINTERFACE (WM_USER + 60)
+#define EM_GETPARAFORMAT (WM_USER + 61)
+#define EM_GETSELTEXT (WM_USER + 62)
+#define EM_HIDESELECTION (WM_USER + 63)
+#define EM_PASTESPECIAL (WM_USER + 64)
+#define EM_REQUESTRESIZE (WM_USER + 65)
+#define EM_SELECTIONTYPE (WM_USER + 66)
+#define EM_SETBKGNDCOLOR (WM_USER + 67)
+#define EM_SETCHARFORMAT (WM_USER + 68)
+#define EM_SETEVENTMASK (WM_USER + 69)
+#define EM_SETOLECALLBACK (WM_USER + 70)
+#define EM_SETPARAFORMAT (WM_USER + 71)
+#define EM_SETTARGETDEVICE (WM_USER + 72)
+#define EM_STREAMIN (WM_USER + 73)
+#define EM_STREAMOUT (WM_USER + 74)
+#define EM_GETTEXTRANGE (WM_USER + 75)
+#define EM_FINDWORDBREAK (WM_USER + 76)
+#define EM_SETOPTIONS (WM_USER + 77)
+#define EM_GETOPTIONS (WM_USER + 78)
+#define EM_FINDTEXTEX (WM_USER + 79)
+#ifdef _WIN32
+#define EM_GETWORDBREAKPROCEX (WM_USER + 80)
+#define EM_SETWORDBREAKPROCEX (WM_USER + 81)
+#endif
+
+/* Richedit v2.0 messages */
+#define EM_SETUNDOLIMIT (WM_USER + 82)
+#define EM_REDO (WM_USER + 84)
+#define EM_CANREDO (WM_USER + 85)
+#define EM_GETUNDONAME (WM_USER + 86)
+#define EM_GETREDONAME (WM_USER + 87)
+#define EM_STOPGROUPTYPING (WM_USER + 88)
+
+#define EM_SETTEXTMODE (WM_USER + 89)
+#define EM_GETTEXTMODE (WM_USER + 90)
+
+/* enum for use with EM_GET/SETTEXTMODE */
+typedef enum tagTextMode
+{
+ TM_PLAINTEXT = 1,
+ TM_RICHTEXT = 2, /* default behavior */
+ TM_SINGLELEVELUNDO = 4,
+ TM_MULTILEVELUNDO = 8, /* default behavior */
+ TM_SINGLECODEPAGE = 16,
+ TM_MULTICODEPAGE = 32 /* default behavior */
+} TEXTMODE;
+
+#define EM_AUTOURLDETECT (WM_USER + 91)
+#define EM_GETAUTOURLDETECT (WM_USER + 92)
+#define EM_SETPALETTE (WM_USER + 93)
+#define EM_GETTEXTEX (WM_USER + 94)
+#define EM_GETTEXTLENGTHEX (WM_USER + 95)
+
+/* Far East specific messages */
+#define EM_SETPUNCTUATION (WM_USER + 100)
+#define EM_GETPUNCTUATION (WM_USER + 101)
+#define EM_SETWORDWRAPMODE (WM_USER + 102)
+#define EM_GETWORDWRAPMODE (WM_USER + 103)
+#define EM_SETIMECOLOR (WM_USER + 104)
+#define EM_GETIMECOLOR (WM_USER + 105)
+#define EM_SETIMEOPTIONS (WM_USER + 106)
+#define EM_GETIMEOPTIONS (WM_USER + 107)
+#define EM_CONVPOSITION (WM_USER + 108)
+
+#define EM_SETLANGOPTIONS (WM_USER + 120)
+#define EM_GETLANGOPTIONS (WM_USER + 121)
+#define EM_GETIMECOMPMODE (WM_USER + 122)
+
+/* Options for EM_SETLANGOPTIONS and EM_GETLANGOPTIONS */
+#define IMF_AUTOKEYBOARD 0x0001
+#define IMF_AUTOFONT 0x0002
+#define IMF_IMECANCELCOMPLETE 0x0004 // high completes the comp string when aborting, low cancels.
+#define IMF_IMEALWAYSSENDNOTIFY 0x0008
+
+/* Values for EM_GETIMECOMPMODE */
+#define ICM_NOTOPEN 0x0000
+#define ICM_LEVEL3 0x0001
+#define ICM_LEVEL2 0x0002
+#define ICM_LEVEL2_5 0x0003
+#define ICM_LEVEL2_SUI 0x0004
+
+/* New notifications */
+
+#define EN_MSGFILTER 0x0700
+#define EN_REQUESTRESIZE 0x0701
+#define EN_SELCHANGE 0x0702
+#define EN_DROPFILES 0x0703
+#define EN_PROTECTED 0x0704
+#define EN_CORRECTTEXT 0x0705 /* PenWin specific */
+#define EN_STOPNOUNDO 0x0706
+#define EN_IMECHANGE 0x0707 /* Far East specific */
+#define EN_SAVECLIPBOARD 0x0708
+#define EN_OLEOPFAILED 0x0709
+#define EN_OBJECTPOSITIONS 0x070a
+#define EN_LINK 0x070b
+#define EN_DRAGDROPDONE 0x070c
+
+/* Event notification masks */
+
+#define ENM_NONE 0x00000000
+#define ENM_CHANGE 0x00000001
+#define ENM_UPDATE 0x00000002
+#define ENM_SCROLL 0x00000004
+#define ENM_KEYEVENTS 0x00010000
+#define ENM_MOUSEEVENTS 0x00020000
+#define ENM_REQUESTRESIZE 0x00040000
+#define ENM_SELCHANGE 0x00080000
+#define ENM_DROPFILES 0x00100000
+#define ENM_PROTECTED 0x00200000
+#define ENM_CORRECTTEXT 0x00400000 /* PenWin specific */
+#define ENM_SCROLLEVENTS 0x00000008
+#define ENM_DRAGDROPDONE 0x00000010
+
+/* Far East specific notification mask */
+#define ENM_IMECHANGE 0x00800000 /* unused by RE2.0 */
+#define ENM_LANGCHANGE 0x01000000
+#define ENM_OBJECTPOSITIONS 0x02000000
+#define ENM_LINK 0x04000000
+
+/* New edit control styles */
+
+#define ES_SAVESEL 0x00008000
+#define ES_SUNKEN 0x00004000
+#define ES_DISABLENOSCROLL 0x00002000
+/* same as WS_MAXIMIZE, but that doesn't make sense so we re-use the value */
+#define ES_SELECTIONBAR 0x01000000
+/* same as ES_UPPERCASE, but re-used to completely disable OLE drag'n'drop */
+#define ES_NOOLEDRAGDROP 0x00000008
+
+/* New edit control extended style */
+#ifdef _WIN32
+#define ES_EX_NOCALLOLEINIT 0x01000000
+#endif
+
+/* These flags are used in FE Windows */
+#define ES_VERTICAL 0x00400000
+#define ES_NOIME 0x00080000
+#define ES_SELFIME 0x00040000
+
+/* Edit control options */
+#define ECO_AUTOWORDSELECTION 0x00000001
+#define ECO_AUTOVSCROLL 0x00000040
+#define ECO_AUTOHSCROLL 0x00000080
+#define ECO_NOHIDESEL 0x00000100
+#define ECO_READONLY 0x00000800
+#define ECO_WANTRETURN 0x00001000
+#define ECO_SAVESEL 0x00008000
+#define ECO_SELECTIONBAR 0x01000000
+#define ECO_VERTICAL 0x00400000 /* FE specific */
+
+
+/* ECO operations */
+#define ECOOP_SET 0x0001
+#define ECOOP_OR 0x0002
+#define ECOOP_AND 0x0003
+#define ECOOP_XOR 0x0004
+
+/* new word break function actions */
+#define WB_CLASSIFY 3
+#define WB_MOVEWORDLEFT 4
+#define WB_MOVEWORDRIGHT 5
+#define WB_LEFTBREAK 6
+#define WB_RIGHTBREAK 7
+
+/* Far East specific flags */
+#define WB_MOVEWORDPREV 4
+#define WB_MOVEWORDNEXT 5
+#define WB_PREVBREAK 6
+#define WB_NEXTBREAK 7
+
+#define PC_FOLLOWING 1
+#define PC_LEADING 2
+#define PC_OVERFLOW 3
+#define PC_DELIMITER 4
+#define WBF_WORDWRAP 0x010
+#define WBF_WORDBREAK 0x020
+#define WBF_OVERFLOW 0x040
+#define WBF_LEVEL1 0x080
+#define WBF_LEVEL2 0x100
+#define WBF_CUSTOM 0x200
+
+/* Far East specific flags */
+#define IMF_FORCENONE 0x0001
+#define IMF_FORCEENABLE 0x0002
+#define IMF_FORCEDISABLE 0x0004
+#define IMF_CLOSESTATUSWINDOW 0x0008
+#define IMF_VERTICAL 0x0020
+#define IMF_FORCEACTIVE 0x0040
+#define IMF_FORCEINACTIVE 0x0080
+#define IMF_FORCEREMEMBER 0x0100
+#define IMF_MULTIPLEEDIT 0x0400
+
+/* Word break flags (used with WB_CLASSIFY) */
+#define WBF_CLASS ((BYTE) 0x0F)
+#define WBF_ISWHITE ((BYTE) 0x10)
+#define WBF_BREAKLINE ((BYTE) 0x20)
+#define WBF_BREAKAFTER ((BYTE) 0x40)
+
+
+/* new data types */
+
+#ifdef _WIN32
+/* extended edit word break proc (character set aware) */
+typedef LONG (*EDITWORDBREAKPROCEX)(char *pchText, LONG cchText, BYTE bCharSet, INT action);
+#endif
+
+/* all character format measurements are in twips */
+typedef struct _charformat
+{
+ UINT cbSize;
+ _WPAD _wPad1;
+ DWORD dwMask;
+ DWORD dwEffects;
+ LONG yHeight;
+ LONG yOffset;
+ COLORREF crTextColor;
+ BYTE bCharSet;
+ BYTE bPitchAndFamily;
+ char szFaceName[LF_FACESIZE];
+ _WPAD _wPad2;
+} CHARFORMATA;
+
+typedef struct _charformatw
+{
+ UINT cbSize;
+ _WPAD _wPad1;
+ DWORD dwMask;
+ DWORD dwEffects;
+ LONG yHeight;
+ LONG yOffset;
+ COLORREF crTextColor;
+ BYTE bCharSet;
+ BYTE bPitchAndFamily;
+ WCHAR szFaceName[LF_FACESIZE];
+ _WPAD _wPad2;
+} CHARFORMATW;
+
+#if (_RICHEDIT_VER >= 0x0200)
+#ifdef UNICODE
+#define CHARFORMAT CHARFORMATW
+#else
+#define CHARFORMAT CHARFORMATA
+#endif /* UNICODE */
+#else
+#define CHARFORMAT CHARFORMATA
+#endif /* _RICHEDIT_VER >= 0x0200 */
+
+/* CHARFORMAT masks */
+#define CFM_BOLD 0x00000001
+#define CFM_ITALIC 0x00000002
+#define CFM_UNDERLINE 0x00000004
+#define CFM_STRIKEOUT 0x00000008
+#define CFM_PROTECTED 0x00000010
+#define CFM_LINK 0x00000020 /* Exchange hyperlink extension */
+#define CFM_SIZE 0x80000000
+#define CFM_COLOR 0x40000000
+#define CFM_FACE 0x20000000
+#define CFM_OFFSET 0x10000000
+#define CFM_CHARSET 0x08000000
+
+/* CHARFORMAT effects */
+#define CFE_BOLD 0x0001
+#define CFE_ITALIC 0x0002
+#define CFE_UNDERLINE 0x0004
+#define CFE_STRIKEOUT 0x0008
+#define CFE_PROTECTED 0x0010
+#define CFE_LINK 0x0020
+#define CFE_AUTOCOLOR 0x40000000 /* NOTE: this corresponds to */
+ /* CFM_COLOR, which controls it */
+#define yHeightCharPtsMost 1638
+
+/* EM_SETCHARFORMAT wParam masks */
+#define SCF_SELECTION 0x0001
+#define SCF_WORD 0x0002
+#define SCF_DEFAULT 0x0000 // set the default charformat or paraformat
+#define SCF_ALL 0x0004 // not valid with SCF_SELECTION or SCF_WORD
+#define SCF_USEUIRULES 0x0008 // modifier for SCF_SELECTION; says that
+ // the format came from a toolbar, etc. and
+ // therefore UI formatting rules should be
+ // used instead of strictly formatting the
+ // selection.
+
+
+typedef struct _charrange
+{
+ LONG cpMin;
+ LONG cpMax;
+} CHARRANGE;
+
+typedef struct _textrange
+{
+ CHARRANGE chrg;
+ LPSTR lpstrText; /* allocated by caller, zero terminated by RichEdit */
+} TEXTRANGEA;
+
+typedef struct _textrangew
+{
+ CHARRANGE chrg;
+ LPWSTR lpstrText; /* allocated by caller, zero terminated by RichEdit */
+} TEXTRANGEW;
+
+#if (_RICHEDIT_VER >= 0x0200)
+#ifdef UNICODE
+#define TEXTRANGE TEXTRANGEW
+#else
+#define TEXTRANGE TEXTRANGEA
+#endif /* UNICODE */
+#else
+#define TEXTRANGE TEXTRANGEA
+#endif /* _RICHEDIT_VER >= 0x0200 */
+
+
+typedef DWORD (CALLBACK *EDITSTREAMCALLBACK)(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb);
+
+typedef struct _editstream
+{
+ DWORD dwCookie; /* user value passed to callback as first parameter */
+ DWORD dwError; /* last error */
+ EDITSTREAMCALLBACK pfnCallback;
+} EDITSTREAM;
+
+/* stream formats */
+
+#define SF_TEXT 0x0001
+#define SF_RTF 0x0002
+#define SF_RTFNOOBJS 0x0003 /* outbound only */
+#define SF_TEXTIZED 0x0004 /* outbound only */
+#define SF_UNICODE 0x0010 /* Unicode file of some kind */
+
+/* Flag telling stream operations to operate on the selection only */
+/* EM_STREAMIN will replace the current selection */
+/* EM_STREAMOUT will stream out the current selection */
+#define SFF_SELECTION 0x8000
+
+/* Flag telling stream operations to operate on the common RTF keyword only */
+/* EM_STREAMIN will accept the only common RTF keyword */
+/* EM_STREAMOUT will stream out the only common RTF keyword */
+#define SFF_PLAINRTF 0x4000
+
+typedef struct _findtext
+{
+ CHARRANGE chrg;
+ LPSTR lpstrText;
+} FINDTEXTA;
+
+typedef struct _findtextw
+{
+ CHARRANGE chrg;
+ LPWSTR lpstrText;
+} FINDTEXTW;
+
+#if (_RICHEDIT_VER >= 0x0200)
+#ifdef UNICODE
+#define FINDTEXT FINDTEXTW
+#else
+#define FINDTEXT FINDTEXTA
+#endif /* UNICODE */
+#else
+#define FINDTEXT FINDTEXTA
+#endif /* _RICHEDIT_VER >= 0x0200 */
+
+typedef struct _findtextexa
+{
+ CHARRANGE chrg;
+ LPSTR lpstrText;
+ CHARRANGE chrgText;
+} FINDTEXTEXA;
+
+typedef struct _findtextexw
+{
+ CHARRANGE chrg;
+ LPWSTR lpstrText;
+ CHARRANGE chrgText;
+} FINDTEXTEXW;
+
+#if (_RICHEDIT_VER >= 0x0200)
+#ifdef UNICODE
+#define FINDTEXTEX FINDTEXTEXW
+#else
+#define FINDTEXTEX FINDTEXTEXA
+#endif /* UNICODE */
+#else
+#define FINDTEXTEX FINDTEXTEXA
+#endif /* _RICHEDIT_VER >= 0x0200 */
+
+
+typedef struct _formatrange
+{
+ HDC hdc;
+ HDC hdcTarget;
+ RECT rc;
+ RECT rcPage;
+ CHARRANGE chrg;
+} FORMATRANGE;
+
+/* all paragraph measurements are in twips */
+
+#define MAX_TAB_STOPS 32
+#define lDefaultTab 720
+
+typedef struct _paraformat
+{
+ UINT cbSize;
+ _WPAD _wPad1;
+ DWORD dwMask;
+ WORD wNumbering;
+ WORD wReserved;
+ LONG dxStartIndent;
+ LONG dxRightIndent;
+ LONG dxOffset;
+ WORD wAlignment;
+ SHORT cTabCount;
+ LONG rgxTabs[MAX_TAB_STOPS];
+} PARAFORMAT;
+
+/* PARAFORMAT mask values */
+#define PFM_STARTINDENT 0x00000001
+#define PFM_RIGHTINDENT 0x00000002
+#define PFM_OFFSET 0x00000004
+#define PFM_ALIGNMENT 0x00000008
+#define PFM_TABSTOPS 0x00000010
+#define PFM_NUMBERING 0x00000020
+#define PFM_OFFSETINDENT 0x80000000
+
+/* PARAFORMAT numbering options */
+#define PFN_BULLET 0x0001
+
+/* PARAFORMAT alignment options */
+#define PFA_LEFT 0x0001
+#define PFA_RIGHT 0x0002
+#define PFA_CENTER 0x0003
+
+/* CHARFORMAT2 and PARAFORMAT2 structures */
+
+#ifdef __cplusplus
+
+struct CHARFORMAT2W : _charformatw
+{
+ WORD wWeight; /* Font weight (LOGFONT value) */
+ SHORT sSpacing; /* Amount to space between letters */
+ COLORREF crBackColor; /* Background color */
+ LCID lcid; /* Locale ID */
+ DWORD dwReserved; /* Reserved. Must be 0 */
+ SHORT sStyle; /* Style handle */
+ WORD wKerning; /* Twip size above which to kern char pair*/
+ BYTE bUnderlineType; /* Underline type */
+ BYTE bAnimation; /* Animated text like marching ants */
+ BYTE bRevAuthor; /* Revision author index */
+};
+
+struct CHARFORMAT2A : _charformat
+{
+ WORD wWeight; /* Font weight (LOGFONT value) */
+ SHORT sSpacing; /* Amount to space between letters */
+ COLORREF crBackColor; /* Background color */
+ LCID lcid; /* Locale ID */
+ DWORD dwReserved; /* Reserved. Must be 0 */
+ SHORT sStyle; /* Style handle */
+ WORD wKerning; /* Twip size above which to kern char pair*/
+ BYTE bUnderlineType; /* Underline type */
+ BYTE bAnimation; /* Animated text like marching ants */
+ BYTE bRevAuthor; /* Revision author index */
+};
+
+#else /* regular C-style */
+
+typedef struct _charformat2w
+{
+ UINT cbSize;
+ _WPAD _wPad1;
+ DWORD dwMask;
+ DWORD dwEffects;
+ LONG yHeight;
+ LONG yOffset; /* > 0 for superscript, < 0 for subscript */
+ COLORREF crTextColor;
+ BYTE bCharSet;
+ BYTE bPitchAndFamily;
+ WCHAR szFaceName[LF_FACESIZE];
+ _WPAD _wPad2;
+ WORD wWeight; /* Font weight (LOGFONT value) */
+ SHORT sSpacing; /* Amount to space between letters */
+ COLORREF crBackColor; /* Background color */
+ LCID lcid; /* Locale ID */
+ DWORD dwReserved; /* Reserved. Must be 0 */
+ SHORT sStyle; /* Style handle */
+ WORD wKerning; /* Twip size above which to kern char pair*/
+ BYTE bUnderlineType; /* Underline type */
+ BYTE bAnimation; /* Animated text like marching ants */
+ BYTE bRevAuthor; /* Revision author index */
+ BYTE bReserved1;
+} CHARFORMAT2W;
+
+typedef struct _charformat2a
+{
+ UINT cbSize;
+ _WPAD _wPad1;
+ DWORD dwMask;
+ DWORD dwEffects;
+ LONG yHeight;
+ LONG yOffset; /* > 0 for superscript, < 0 for subscript */
+ COLORREF crTextColor;
+ BYTE bCharSet;
+ BYTE bPitchAndFamily;
+ char szFaceName[LF_FACESIZE];
+ _WPAD _wPad2;
+ WORD wWeight; /* Font weight (LOGFONT value) */
+ SHORT sSpacing; /* Amount to space between letters */
+ COLORREF crBackColor; /* Background color */
+ LCID lcid; /* Locale ID */
+ DWORD dwReserved; /* Reserved. Must be 0 */
+ SHORT sStyle; /* Style handle */
+ WORD wKerning; /* Twip size above which to kern char pair*/
+ BYTE bUnderlineType; /* Underline type */
+ BYTE bAnimation; /* Animated text like marching ants */
+ BYTE bRevAuthor; /* Revision author index */
+} CHARFORMAT2A;
+
+#endif /* C++ */
+
+#ifdef UNICODE
+#define CHARFORMAT2 CHARFORMAT2W
+#else
+#define CHARFORMAT2 CHARFORMAT2A
+#endif
+
+#define CHARFORMATDELTA (sizeof(CHARFORMAT2) - sizeof(CHARFORMAT))
+
+
+/* CHARFORMAT and PARAFORMAT "ALL" masks
+ CFM_COLOR mirrors CFE_AUTOCOLOR, a little hack to easily deal with autocolor*/
+
+#define CFM_EFFECTS (CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR | \
+ CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK)
+#define CFM_ALL (CFM_EFFECTS | CFM_SIZE | CFM_FACE | CFM_OFFSET | CFM_CHARSET)
+
+#define PFM_ALL (PFM_STARTINDENT | PFM_RIGHTINDENT | PFM_OFFSET | \
+ PFM_ALIGNMENT | PFM_TABSTOPS | PFM_NUMBERING | \
+ PFM_OFFSETINDENT)
+
+/* New masks and effects -- a parenthesized asterisk indicates that
+ the data is stored by RichEdit2.0, but not displayed */
+
+#define CFM_SMALLCAPS 0x0040 /* (*) */
+#define CFM_ALLCAPS 0x0080 /* (*) */
+#define CFM_HIDDEN 0x0100 /* (*) */
+#define CFM_OUTLINE 0x0200 /* (*) */
+#define CFM_SHADOW 0x0400 /* (*) */
+#define CFM_EMBOSS 0x0800 /* (*) */
+#define CFM_IMPRINT 0x1000 /* (*) */
+#define CFM_DISABLED 0x2000
+#define CFM_REVISED 0x4000
+
+#define CFM_BACKCOLOR 0x04000000
+#define CFM_LCID 0x02000000
+#define CFM_UNDERLINETYPE 0x00800000 /* (*) */
+#define CFM_WEIGHT 0x00400000
+#define CFM_SPACING 0x00200000 /* (*) */
+#define CFM_KERNING 0x00100000 /* (*) */
+#define CFM_STYLE 0x00080000 /* (*) */
+#define CFM_ANIMATION 0x00040000 /* (*) */
+#define CFM_REVAUTHOR 0x00008000
+
+#define CFE_SUBSCRIPT 0x00010000 /* Superscript and subscript are */
+#define CFE_SUPERSCRIPT 0x00020000 /* mutually exclusive */
+
+#define CFM_SUBSCRIPT CFE_SUBSCRIPT | CFE_SUPERSCRIPT
+#define CFM_SUPERSCRIPT CFM_SUBSCRIPT
+
+#define CFM_EFFECTS2 (CFM_EFFECTS | CFM_DISABLED | CFM_SMALLCAPS | CFM_ALLCAPS \
+ | CFM_HIDDEN | CFM_OUTLINE | CFM_SHADOW | CFM_EMBOSS \
+ | CFM_IMPRINT | CFM_DISABLED | CFM_REVISED \
+ | CFM_SUBSCRIPT | CFM_SUPERSCRIPT | CFM_BACKCOLOR)
+
+#define CFM_ALL2 (CFM_ALL | CFM_EFFECTS2 | CFM_BACKCOLOR | CFM_LCID \
+ | CFM_UNDERLINETYPE | CFM_WEIGHT | CFM_REVAUTHOR \
+ | CFM_SPACING | CFM_KERNING | CFM_STYLE | CFM_ANIMATION)
+
+#define CFE_SMALLCAPS CFM_SMALLCAPS
+#define CFE_ALLCAPS CFM_ALLCAPS
+#define CFE_HIDDEN CFM_HIDDEN
+#define CFE_OUTLINE CFM_OUTLINE
+#define CFE_SHADOW CFM_SHADOW
+#define CFE_EMBOSS CFM_EMBOSS
+#define CFE_IMPRINT CFM_IMPRINT
+#define CFE_DISABLED CFM_DISABLED
+#define CFE_REVISED CFM_REVISED
+
+/* NOTE: CFE_AUTOCOLOR and CFE_AUTOBACKCOLOR correspond to CFM_COLOR and
+ CFM_BACKCOLOR, respectively, which control them */
+#define CFE_AUTOBACKCOLOR CFM_BACKCOLOR
+
+/* Underline types */
+#define CFU_CF1UNDERLINE 0xFF /* map charformat's bit underline to CF2.*/
+#define CFU_INVERT 0xFE /* For IME composition fake a selection.*/
+#define CFU_UNDERLINEDOTTED 0x4 /* (*) displayed as ordinary underline */
+#define CFU_UNDERLINEDOUBLE 0x3 /* (*) displayed as ordinary underline */
+#define CFU_UNDERLINEWORD 0x2 /* (*) displayed as ordinary underline */
+#define CFU_UNDERLINE 0x1
+#define CFU_UNDERLINENONE 0
+
+#ifdef __cplusplus
+struct PARAFORMAT2 : _paraformat
+{
+ LONG dySpaceBefore; /* Vertical spacing before para */
+ LONG dySpaceAfter; /* Vertical spacing after para */
+ LONG dyLineSpacing; /* Line spacing depending on Rule */
+ SHORT sStyle; /* Style handle */
+ BYTE bLineSpacingRule; /* Rule for line spacing (see tom.doc) */
+ BYTE bCRC; /* Reserved for CRC for rapid searching */
+ WORD wShadingWeight; /* Shading in hundredths of a per cent */
+ WORD wShadingStyle; /* Nibble 0: style, 1: cfpat, 2: cbpat */
+ WORD wNumberingStart; /* Starting value for numbering */
+ WORD wNumberingStyle; /* Alignment, roman/arabic, (), ), ., etc.*/
+ WORD wNumberingTab; /* Space bet FirstIndent and 1st-line text*/
+ WORD wBorderSpace; /* Space between border and text (twips)*/
+ WORD wBorderWidth; /* Border pen width (twips) */
+ WORD wBorders; /* Byte 0: bits specify which borders */
+ /* Nibble 2: border style, 3: color index*/
+};
+
+#else /* regular C-style */
+
+typedef struct _paraformat2
+{
+ UINT cbSize;
+ _WPAD _wPad1;
+ DWORD dwMask;
+ WORD wNumbering;
+ WORD wReserved;
+ LONG dxStartIndent;
+ LONG dxRightIndent;
+ LONG dxOffset;
+ WORD wAlignment;
+ SHORT cTabCount;
+ LONG rgxTabs[MAX_TAB_STOPS];
+ LONG dySpaceBefore; /* Vertical spacing before para */
+ LONG dySpaceAfter; /* Vertical spacing after para */
+ LONG dyLineSpacing; /* Line spacing depending on Rule */
+ SHORT sStyle; /* Style handle */
+ BYTE bLineSpacingRule; /* Rule for line spacing (see tom.doc) */
+ BYTE bCRC; /* Reserved for CRC for rapid searching */
+ WORD wShadingWeight; /* Shading in hundredths of a per cent */
+ WORD wShadingStyle; /* Nibble 0: style, 1: cfpat, 2: cbpat */
+ WORD wNumberingStart; /* Starting value for numbering */
+ WORD wNumberingStyle; /* Alignment, roman/arabic, (), ), ., etc.*/
+ WORD wNumberingTab; /* Space bet 1st indent and 1st-line text*/
+ WORD wBorderSpace; /* Space between border and text (twips)*/
+ WORD wBorderWidth; /* Border pen width (twips) */
+ WORD wBorders; /* Byte 0: bits specify which borders */
+ /* Nibble 2: border style, 3: color index*/
+} PARAFORMAT2;
+
+#endif /* C++ */
+
+/* this is a hack to make PARAFORMAT code more readable.
+ it applies to the wReserved field in PARAFORMAT, which
+ in PARAFORMAT2 is now used. */
+
+#define wEffects wReserved
+
+/* PARAFORMAT 2.0 masks and effects */
+
+#define PFM_SPACEBEFORE 0x00000040
+#define PFM_SPACEAFTER 0x00000080
+#define PFM_LINESPACING 0x00000100
+#define PFM_STYLE 0x00000400
+#define PFM_BORDER 0x00000800 /* (*) */
+#define PFM_SHADING 0x00001000 /* (*) */
+#define PFM_NUMBERINGSTYLE 0x00002000 /* (*) */
+#define PFM_NUMBERINGTAB 0x00004000 /* (*) */
+#define PFM_NUMBERINGSTART 0x00008000 /* (*) */
+
+#define PFM_RTLPARA 0x00010000
+#define PFM_KEEP 0x00020000 /* (*) */
+#define PFM_KEEPNEXT 0x00040000 /* (*) */
+#define PFM_PAGEBREAKBEFORE 0x00080000 /* (*) */
+#define PFM_NOLINENUMBER 0x00100000 /* (*) */
+#define PFM_NOWIDOWCONTROL 0x00200000 /* (*) */
+#define PFM_DONOTHYPHEN 0x00400000 /* (*) */
+#define PFM_SIDEBYSIDE 0x00800000 /* (*) */
+
+#define PFM_TABLE 0xc0000000 /* (*) */
+
+/* Note: PARAFORMAT has no effects */
+#define PFM_EFFECTS (PFM_RTLPARA | PFM_KEEP | PFM_KEEPNEXT | PFM_TABLE \
+ | PFM_PAGEBREAKBEFORE | PFM_NOLINENUMBER \
+ | PFM_NOWIDOWCONTROL | PFM_DONOTHYPHEN | PFM_SIDEBYSIDE \
+ | PFM_TABLE)
+
+#define PFM_ALL2 (PFM_ALL | PFM_EFFECTS | PFM_SPACEBEFORE | PFM_SPACEAFTER \
+ | PFM_LINESPACING | PFM_STYLE | PFM_SHADING | PFM_BORDER \
+ | PFM_NUMBERINGTAB | PFM_NUMBERINGSTART | PFM_NUMBERINGSTYLE)
+
+#define PFE_RTLPARA (PFM_RTLPARA >> 16)
+#define PFE_KEEP (PFM_KEEP >> 16) /* (*) */
+#define PFE_KEEPNEXT (PFM_KEEPNEXT >> 16) /* (*) */
+#define PFE_PAGEBREAKBEFORE (PFM_PAGEBREAKBEFORE >> 16) /* (*) */
+#define PFE_NOLINENUMBER (PFM_NOLINENUMBER >> 16) /* (*) */
+#define PFE_NOWIDOWCONTROL (PFM_NOWIDOWCONTROL >> 16) /* (*) */
+#define PFE_DONOTHYPHEN (PFM_DONOTHYPHEN >> 16) /* (*) */
+#define PFE_SIDEBYSIDE (PFM_SIDEBYSIDE >> 16) /* (*) */
+
+#define PFE_TABLEROW 0xc000 /* These 3 options are mutually */
+#define PFE_TABLECELLEND 0x8000 /* exclusive and each imply */
+#define PFE_TABLECELL 0x4000 /* that para is part of a table*/
+
+/*
+ * PARAFORMAT numbering options (values for wNumbering):
+ *
+ * Numbering Type Value Meaning
+ * tomNoNumbering 0 Turn off paragraph numbering
+ * tomNumberAsLCLetter 1 a, b, c, ...
+ * tomNumberAsUCLetter 2 A, B, C, ...
+ * tomNumberAsLCRoman 3 i, ii, iii, ...
+ * tomNumberAsUCRoman 4 I, II, III, ...
+ * tomNumberAsSymbols 5 default is bullet
+ * tomNumberAsNumber 6 0, 1, 2, ...
+ * tomNumberAsSequence 7 tomNumberingStart is first Unicode to use
+ *
+ * Other valid Unicode chars are Unicodes for bullets.
+ */
+
+
+#define PFA_JUSTIFY 4 /* New paragraph-alignment option 2.0 (*)
+
+
+/* notification structures */
+
+#ifndef WM_NOTIFY
+#define WM_NOTIFY 0x004E
+
+typedef struct _nmhdr
+{
+ HWND hwndFrom;
+ _WPAD _wPad1;
+ UINT idFrom;
+ _WPAD _wPad2;
+ UINT code;
+ _WPAD _wPad3;
+} NMHDR;
+#endif /* !WM_NOTIFY */
+
+typedef struct _msgfilter
+{
+ NMHDR nmhdr;
+ UINT msg;
+ _WPAD _wPad1;
+ WPARAM wParam;
+ _WPAD _wPad2;
+ LPARAM lParam;
+} MSGFILTER;
+
+typedef struct _reqresize
+{
+ NMHDR nmhdr;
+ RECT rc;
+} REQRESIZE;
+
+typedef struct _selchange
+{
+ NMHDR nmhdr;
+ CHARRANGE chrg;
+ WORD seltyp;
+} SELCHANGE;
+
+#define SEL_EMPTY 0x0000
+#define SEL_TEXT 0x0001
+#define SEL_OBJECT 0x0002
+#define SEL_MULTICHAR 0x0004
+#define SEL_MULTIOBJECT 0x0008
+
+/* used with IRichEditOleCallback::GetContextMenu, this flag will be
+ passed as a "selection type". It indicates that a context menu for
+ a right-mouse drag drop should be generated. The IOleObject parameter
+ will really be the IDataObject for the drop
+ */
+#define GCM_RIGHTMOUSEDROP 0x8000
+
+typedef struct _endropfiles
+{
+ NMHDR nmhdr;
+ HANDLE hDrop;
+ LONG cp;
+ BOOL fProtected;
+} ENDROPFILES;
+
+typedef struct _enprotected
+{
+ NMHDR nmhdr;
+ UINT msg;
+ _WPAD _wPad1;
+ WPARAM wParam;
+ _WPAD _wPad2;
+ LPARAM lParam;
+ CHARRANGE chrg;
+} ENPROTECTED;
+
+typedef struct _ensaveclipboard
+{
+ NMHDR nmhdr;
+ LONG cObjectCount;
+ LONG cch;
+} ENSAVECLIPBOARD;
+
+#ifndef MACPORT
+typedef struct _enoleopfailed
+{
+ NMHDR nmhdr;
+ LONG iob;
+ LONG lOper;
+ HRESULT hr;
+} ENOLEOPFAILED;
+#endif
+
+#define OLEOP_DOVERB 1
+
+typedef struct _objectpositions
+{
+ NMHDR nmhdr;
+ LONG cObjectCount;
+ LONG *pcpPositions;
+} OBJECTPOSITIONS;
+
+typedef struct _enlink
+{
+ NMHDR nmhdr;
+ UINT msg;
+ _WPAD _wPad1;
+ WPARAM wParam;
+ _WPAD _wPad2;
+ LPARAM lParam;
+ CHARRANGE chrg;
+} ENLINK;
+
+/* PenWin specific */
+typedef struct _encorrecttext
+{
+ NMHDR nmhdr;
+ CHARRANGE chrg;
+ WORD seltyp;
+} ENCORRECTTEXT;
+
+/* Far East specific */
+typedef struct _punctuation
+{
+ UINT iSize;
+ LPSTR szPunctuation;
+} PUNCTUATION;
+
+/* Far East specific */
+typedef struct _compcolor
+{
+ COLORREF crText;
+ COLORREF crBackground;
+ DWORD dwEffects;
+}COMPCOLOR;
+
+
+/* clipboard formats - use as parameter to RegisterClipboardFormat() */
+#define CF_RTF TEXT("Rich Text Format")
+#define CF_RTFNOOBJS TEXT("Rich Text Format Without Objects")
+#define CF_RETEXTOBJ TEXT("RichEdit Text and Objects")
+
+/* Paste Special */
+typedef struct _repastespecial
+{
+ DWORD dwAspect;
+ DWORD dwParam;
+} REPASTESPECIAL;
+
+/* UndoName info */
+typedef enum _undonameid
+{
+ UID_UNKNOWN = 0,
+ UID_TYPING = 1,
+ UID_DELETE = 2,
+ UID_DRAGDROP = 3,
+ UID_CUT = 4,
+ UID_PASTE = 5
+} UNDONAMEID;
+
+/* flags for the GETEXTEX data structure */
+#define GT_DEFAULT 0
+#define GT_USECRLF 1
+
+/* EM_GETTEXTEX info; this struct is passed in the wparam of the message */
+typedef struct _gettextex
+{
+ DWORD cb; /* count of bytes in the string */
+ DWORD flags; /* flags (see the GT_XXX defines */
+ UINT codepage; /* code page for translation (CP_ACP for default,
+ 1200 for Unicode */
+ LPCSTR lpDefaultChar; /* replacement for unmappable chars */
+ LPBOOL lpUsedDefChar; /* pointer to flag set when def char used */
+} GETTEXTEX;
+
+/* flags for the GETTEXTLENGTHEX data structure */
+#define GTL_DEFAULT 0 /* do the default (return # of chars) */
+#define GTL_USECRLF 1 /* compute answer using CRLFs for paragraphs*/
+#define GTL_PRECISE 2 /* compute a precise answer */
+#define GTL_CLOSE 4 /* fast computation of a "close" answer */
+#define GTL_NUMCHARS 8 /* return the number of characters */
+#define GTL_NUMBYTES 16 /* return the number of _bytes_ */
+
+/* EM_GETTEXTLENGTHEX info; this struct is passed in the wparam of the msg */
+typedef struct _gettextlengthex
+{
+ DWORD flags; /* flags (see GTL_XXX defines) */
+ UINT codepage; /* code page for translation (CP_ACP for default,
+ 1200 for Unicode */
+} GETTEXTLENGTHEX;
+
+
+/* UNICODE embedding character */
+#ifndef WCH_EMBEDDING
+#define WCH_EMBEDDING (WCHAR)0xFFFC
+#endif /* WCH_EMBEDDING */
+
+
+#undef _WPAD
+
+#ifdef _WIN32
+#include <poppack.h>
+#elif !defined(RC_INVOKED)
+#pragma pack()
+#endif
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* !_RICHEDIT_ */
+
diff --git a/public/sdk/inc/richole.h b/public/sdk/inc/richole.h
new file mode 100644
index 000000000..af2113a8f
--- /dev/null
+++ b/public/sdk/inc/richole.h
@@ -0,0 +1,160 @@
+#ifndef _RICHOLE_
+#define _RICHOLE_
+
+/*
+ * RICHOLE.H
+ *
+ * Purpose:
+ * OLE Extensions to the Rich Text Editor
+ *
+ * Copyright (c) 1985-1996, Microsoft Corporation
+ */
+
+// Structure passed to GetObject and InsertObject
+typedef struct _reobject
+{
+ DWORD cbStruct; // Size of structure
+ LONG cp; // Character position of object
+ CLSID clsid; // Class ID of object
+ LPOLEOBJECT poleobj; // OLE object interface
+ LPSTORAGE pstg; // Associated storage interface
+ LPOLECLIENTSITE polesite; // Associated client site interface
+ SIZEL sizel; // Size of object (may be 0,0)
+ DWORD dvaspect; // Display aspect to use
+ DWORD dwFlags; // Object status flags
+ DWORD dwUser; // Dword for user's use
+} REOBJECT;
+
+// Flags to specify which interfaces should be returned in the structure above
+#define REO_GETOBJ_NO_INTERFACES (0x00000000L)
+#define REO_GETOBJ_POLEOBJ (0x00000001L)
+#define REO_GETOBJ_PSTG (0x00000002L)
+#define REO_GETOBJ_POLESITE (0x00000004L)
+#define REO_GETOBJ_ALL_INTERFACES (0x00000007L)
+
+// Place object at selection
+#define REO_CP_SELECTION ((ULONG) -1L)
+
+// Use character position to specify object instead of index
+#define REO_IOB_SELECTION ((ULONG) -1L)
+#define REO_IOB_USE_CP ((ULONG) -2L)
+
+// Object flags
+#define REO_NULL (0x00000000L) // No flags
+#define REO_READWRITEMASK (0x0000003FL) // Mask out RO bits
+#define REO_DONTNEEDPALETTE (0x00000020L) // Object doesn't need palette
+#define REO_BLANK (0x00000010L) // Object is blank
+#define REO_DYNAMICSIZE (0x00000008L) // Object defines size always
+#define REO_INVERTEDSELECT (0x00000004L) // Object drawn all inverted if sel
+#define REO_BELOWBASELINE (0x00000002L) // Object sits below the baseline
+#define REO_RESIZABLE (0x00000001L) // Object may be resized
+#define REO_LINK (0x80000000L) // Object is a link (RO)
+#define REO_STATIC (0x40000000L) // Object is static (RO)
+#define REO_SELECTED (0x08000000L) // Object selected (RO)
+#define REO_OPEN (0x04000000L) // Object open in its server (RO)
+#define REO_INPLACEACTIVE (0x02000000L) // Object in place active (RO)
+#define REO_HILITED (0x01000000L) // Object is to be hilited (RO)
+#define REO_LINKAVAILABLE (0x00800000L) // Link believed available (RO)
+#define REO_GETMETAFILE (0x00400000L) // Object requires metafile (RO)
+
+// flags for IRichEditOle::GetClipboardData(),
+// IRichEditOleCallback::GetClipboardData() and
+// IRichEditOleCallback::QueryAcceptData()
+#define RECO_PASTE (0x00000000L) // paste from clipboard
+#define RECO_DROP (0x00000001L) // drop
+#define RECO_COPY (0x00000002L) // copy to the clipboard
+#define RECO_CUT (0x00000003L) // cut to the clipboard
+#define RECO_DRAG (0x00000004L) // drag
+
+/*
+ * IRichEditOle
+ *
+ * Purpose:
+ * Interface used by the client of RichEdit to perform OLE-related
+ * operations.
+ *
+ * //$ REVIEW:
+ * The methods herein may just want to be regular Windows messages.
+ */
+#undef INTERFACE
+#define INTERFACE IRichEditOle
+
+DECLARE_INTERFACE_(IRichEditOle, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lplpObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IRichEditOle methods ***
+ STDMETHOD(GetClientSite) (THIS_ LPOLECLIENTSITE FAR * lplpolesite) PURE;
+ STDMETHOD_(LONG,GetObjectCount) (THIS) PURE;
+ STDMETHOD_(LONG,GetLinkCount) (THIS) PURE;
+ STDMETHOD(GetObject) (THIS_ LONG iob, REOBJECT FAR * lpreobject,
+ DWORD dwFlags) PURE;
+ STDMETHOD(InsertObject) (THIS_ REOBJECT FAR * lpreobject) PURE;
+ STDMETHOD(ConvertObject) (THIS_ LONG iob, REFCLSID rclsidNew,
+ LPCSTR lpstrUserTypeNew) PURE;
+ STDMETHOD(ActivateAs) (THIS_ REFCLSID rclsid, REFCLSID rclsidAs) PURE;
+ STDMETHOD(SetHostNames) (THIS_ LPCSTR lpstrContainerApp,
+ LPCSTR lpstrContainerObj) PURE;
+ STDMETHOD(SetLinkAvailable) (THIS_ LONG iob, BOOL fAvailable) PURE;
+ STDMETHOD(SetDvaspect) (THIS_ LONG iob, DWORD dvaspect) PURE;
+ STDMETHOD(HandsOffStorage) (THIS_ LONG iob) PURE;
+ STDMETHOD(SaveCompleted) (THIS_ LONG iob, LPSTORAGE lpstg) PURE;
+ STDMETHOD(InPlaceDeactivate) (THIS) PURE;
+ STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
+ STDMETHOD(GetClipboardData) (THIS_ CHARRANGE FAR * lpchrg, DWORD reco,
+ LPDATAOBJECT FAR * lplpdataobj) PURE;
+ STDMETHOD(ImportDataObject) (THIS_ LPDATAOBJECT lpdataobj,
+ CLIPFORMAT cf, HGLOBAL hMetaPict) PURE;
+};
+typedef IRichEditOle FAR * LPRICHEDITOLE;
+
+/*
+ * IRichEditOleCallback
+ *
+ * Purpose:
+ * Interface used by the RichEdit to get OLE-related stuff from the
+ * application using RichEdit.
+ */
+#undef INTERFACE
+#define INTERFACE IRichEditOleCallback
+
+DECLARE_INTERFACE_(IRichEditOleCallback, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lplpObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IRichEditOleCallback methods ***
+ STDMETHOD(GetNewStorage) (THIS_ LPSTORAGE FAR * lplpstg) PURE;
+ STDMETHOD(GetInPlaceContext) (THIS_ LPOLEINPLACEFRAME FAR * lplpFrame,
+ LPOLEINPLACEUIWINDOW FAR * lplpDoc,
+ LPOLEINPLACEFRAMEINFO lpFrameInfo) PURE;
+ STDMETHOD(ShowContainerUI) (THIS_ BOOL fShow) PURE;
+ STDMETHOD(QueryInsertObject) (THIS_ LPCLSID lpclsid, LPSTORAGE lpstg,
+ LONG cp) PURE;
+ STDMETHOD(DeleteObject) (THIS_ LPOLEOBJECT lpoleobj) PURE;
+ STDMETHOD(QueryAcceptData) (THIS_ LPDATAOBJECT lpdataobj,
+ CLIPFORMAT FAR * lpcfFormat, DWORD reco,
+ BOOL fReally, HGLOBAL hMetaPict) PURE;
+ STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
+ STDMETHOD(GetClipboardData) (THIS_ CHARRANGE FAR * lpchrg, DWORD reco,
+ LPDATAOBJECT FAR * lplpdataobj) PURE;
+ STDMETHOD(GetDragDropEffect) (THIS_ BOOL fDrag, DWORD grfKeyState,
+ LPDWORD pdwEffect) PURE;
+ STDMETHOD(GetContextMenu) (THIS_ WORD seltype, LPOLEOBJECT lpoleobj,
+ CHARRANGE FAR * lpchrg,
+ HMENU FAR * lphmenu) PURE;
+};
+typedef IRichEditOleCallback FAR * LPRICHEDITOLECALLBACK;
+
+#ifndef MAC
+// RichEdit interface GUIDs
+DEFINE_GUID(IID_IRichEditOle, 0x00020D00, 0, 0, 0xC0,0,0,0,0,0,0,0x46);
+DEFINE_GUID(IID_IRichEditOleCallback, 0x00020D03, 0, 0, 0xC0,0,0,0,0,0,0,0x46);
+#endif // !MAC
+
+#endif // _RICHOLE_
diff --git a/public/sdk/inc/rot.h b/public/sdk/inc/rot.h
new file mode 100644
index 000000000..850f0a710
--- /dev/null
+++ b/public/sdk/inc/rot.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: rot.h
+//
+// Contents: Replacement for rot.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/rpc.h b/public/sdk/inc/rpc.h
new file mode 100644
index 000000000..2949f1122
--- /dev/null
+++ b/public/sdk/inc/rpc.h
@@ -0,0 +1,126 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpc.h
+
+Abstract:
+
+ Master include file for RPC applications.
+
+--*/
+
+#ifndef RPC_NO_WINDOWS_H
+#include <windows.h>
+#endif // RPC_NO_WINDOWS_H
+
+#ifndef __RPC_H__
+#define __RPC_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __RPC_WIN32__
+#define __RPC_NT__
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+typedef void * I_RPC_HANDLE;
+typedef long RPC_STATUS;
+
+#define RPC_UNICODE_SUPPORTED
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define __RPC_FAR
+#define __RPC_API __stdcall
+#define __RPC_USER __stdcall
+#define __RPC_STUB __stdcall
+#define RPC_ENTRY __stdcall
+#else
+#define __RPC_FAR
+#define __RPC_API
+#define __RPC_USER
+#define __RPC_STUB
+#define RPC_ENTRY
+#endif
+
+#ifdef IN
+#undef IN
+#undef OUT
+#undef OPTIONAL
+#endif /* IN */
+
+#include <rpcdce.h>
+#include <rpcnsi.h>
+#include <rpcnterr.h>
+
+
+#include <excpt.h>
+#include <winerror.h>
+
+#define RpcTryExcept \
+ __try \
+ {
+
+// trystmts
+
+#define RpcExcept(expr) \
+ } \
+ __except (expr) \
+ {
+
+// exceptstmts
+
+#define RpcEndExcept \
+ }
+
+#define RpcTryFinally \
+ __try \
+ {
+
+// trystmts
+
+#define RpcFinally \
+ } \
+ __finally \
+ {
+
+// finallystmts
+
+#define RpcEndFinally \
+ }
+
+#define RpcExceptionCode() GetExceptionCode()
+#define RpcAbnormalTermination() AbnormalTermination()
+
+RPC_STATUS RPC_ENTRY
+RpcImpersonateClient (
+ IN RPC_BINDING_HANDLE BindingHandle OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcRevertToSelfEx (
+ IN RPC_BINDING_HANDLE BindingHandle OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcRevertToSelf (
+ );
+
+long RPC_ENTRY
+I_RpcMapWin32Status (
+ IN RPC_STATUS Status
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __RPC_H__
+
diff --git a/public/sdk/inc/rpcdce.h b/public/sdk/inc/rpcdce.h
new file mode 100644
index 000000000..099457ea4
--- /dev/null
+++ b/public/sdk/inc/rpcdce.h
@@ -0,0 +1,1618 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcdce.h
+
+Abstract:
+
+ This module contains the DCE RPC runtime APIs.
+
+--*/
+
+#ifndef __RPCDCE_H__
+#define __RPCDCE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IN
+#define OUT
+#define OPTIONAL
+
+/*typedef char small;*/
+/*typedef unsigned char byte;*/
+/*typedef unsigned char boolean;*/
+
+typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
+typedef RPC_BINDING_HANDLE handle_t;
+#define rpc_binding_handle_t RPC_BINDING_HANDLE
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#ifndef UUID_DEFINED
+#define UUID_DEFINED
+typedef GUID UUID;
+#ifndef uuid_t
+#define uuid_t UUID
+#endif
+#endif
+
+typedef struct _RPC_BINDING_VECTOR
+{
+ unsigned long Count;
+ RPC_BINDING_HANDLE BindingH[1];
+} RPC_BINDING_VECTOR;
+#ifndef rpc_binding_vector_t
+#define rpc_binding_vector_t RPC_BINDING_VECTOR
+#endif
+
+typedef struct _UUID_VECTOR
+{
+ unsigned long Count;
+ UUID *Uuid[1];
+} UUID_VECTOR;
+#ifndef uuid_vector_t
+#define uuid_vector_t UUID_VECTOR
+#endif
+
+typedef void __RPC_FAR * RPC_IF_HANDLE;
+
+#ifndef IFID_DEFINED
+#define IFID_DEFINED
+typedef struct _RPC_IF_ID
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_IF_ID;
+#endif
+
+#define RPC_C_BINDING_INFINITE_TIMEOUT 10
+#define RPC_C_BINDING_MIN_TIMEOUT 0
+#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
+#define RPC_C_BINDING_MAX_TIMEOUT 9
+
+#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
+
+#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
+#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
+
+#define RPC_C_BIND_TO_ALL_NICS 1
+#define RPC_C_USE_INTERNET_PORT 1
+#define RPC_C_USE_INTRANET_PORT 2
+
+#ifdef RPC_UNICODE_SUPPORTED
+typedef struct _RPC_PROTSEQ_VECTORA
+{
+ unsigned int Count;
+ unsigned char __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTORA;
+
+typedef struct _RPC_PROTSEQ_VECTORW
+{
+ unsigned int Count;
+ unsigned short __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTORW;
+
+#ifdef UNICODE
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
+#else /* UNICODE */
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+typedef struct _RPC_PROTSEQ_VECTOR
+{
+ unsigned int Count;
+ unsigned char __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTOR;
+
+#endif /* RPC_UNICODE_SUPPORTED */
+typedef struct _RPC_POLICY {
+ unsigned int Length ;
+ unsigned long EndpointFlags ;
+ unsigned long NICFlags ;
+ } RPC_POLICY, __RPC_FAR *PRPC_POLICY ;
+
+typedef void __RPC_USER
+RPC_OBJECT_INQ_FN (
+ IN UUID __RPC_FAR * ObjectUuid,
+ OUT UUID __RPC_FAR * TypeUuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+typedef RPC_STATUS
+RPC_IF_CALLBACK_FN (
+ IN RPC_IF_HANDLE InterfaceUuid,
+ IN void *Context
+ ) ;
+
+#define RPC_MGR_EPV void
+
+typedef struct
+{
+ unsigned int Count;
+ unsigned long Stats[1];
+} RPC_STATS_VECTOR;
+
+#define RPC_C_STATS_CALLS_IN 0
+#define RPC_C_STATS_CALLS_OUT 1
+#define RPC_C_STATS_PKTS_IN 2
+#define RPC_C_STATS_PKTS_OUT 3
+
+typedef struct
+{
+ unsigned long Count;
+ RPC_IF_ID __RPC_FAR * IfId[1];
+} RPC_IF_ID_VECTOR;
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingCopy (
+ IN RPC_BINDING_HANDLE SourceBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingFree (
+ IN OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+/* client */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBindingA (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBindingW (
+ IN unsigned short __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#ifdef UNICODE
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingW
+#else /* UNICODE */
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBinding (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcBindingInqObject (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT UUID __RPC_FAR * ObjectUuid
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingReset (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* RpcBindingServerFromClient : UNSUPPORTED */
+/* RpcBindingSetAuthInfo */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingSetObject (
+ IN RPC_BINDING_HANDLE Binding,
+ IN UUID __RPC_FAR * ObjectUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqDefaultProtectLevel(
+ IN unsigned long AuthnSvc,
+ OUT unsigned long __RPC_FAR *AuthnLevel
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBindingA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBindingW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+#ifdef UNICODE
+#define RpcBindingToStringBinding RpcBindingToStringBindingW
+#else /* UNICODE */
+#define RpcBindingToStringBinding RpcBindingToStringBindingA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBinding (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcBindingVectorFree (
+ IN OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingComposeA (
+ IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned char __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned char __RPC_FAR * Options OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingComposeW (
+ IN unsigned short __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned short __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned short __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned short __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned short __RPC_FAR * Options OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcStringBindingCompose RpcStringBindingComposeW
+#else /* UNICODE */
+#define RpcStringBindingCompose RpcStringBindingComposeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingCompose (
+ IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned char __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned char __RPC_FAR * Options OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParseA (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParseW (
+ IN unsigned short __RPC_FAR * StringBinding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcStringBindingParse RpcStringBindingParseW
+#else /* UNICODE */
+#define RpcStringBindingParse RpcStringBindingParseA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParse (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringFreeA (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringFreeW (
+ IN OUT unsigned short __RPC_FAR * __RPC_FAR * String
+ );
+
+#ifdef UNICODE
+#define RpcStringFree RpcStringFreeW
+#else /* UNICODE */
+#define RpcStringFree RpcStringFreeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringFree (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcIfInqId (
+ IN RPC_IF_HANDLE RpcIfHandle,
+ OUT RPC_IF_ID __RPC_FAR * RpcIfId
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValidA (
+ IN unsigned char __RPC_FAR * Protseq
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValidW (
+ IN unsigned short __RPC_FAR * Protseq
+ );
+
+#ifdef UNICODE
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidW
+#else /* UNICODE */
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValid (
+ IN unsigned char __RPC_FAR * Protseq
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqComTimeout (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned int __RPC_FAR * Timeout
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetComTimeout (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned int Timeout
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetCancelTimeout(
+ long Timeout
+ );
+
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqsA (
+ OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqsW (
+ OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#ifdef UNICODE
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsW
+#else /* UNICODE */
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqs (
+ OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectInqType (
+ IN UUID __RPC_FAR * ObjUuid,
+ OUT UUID __RPC_FAR * TypeUuid OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectSetInqFn (
+ IN RPC_OBJECT_INQ_FN __RPC_FAR * InquiryFn
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectSetType (
+ IN UUID __RPC_FAR * ObjUuid,
+ IN UUID __RPC_FAR * TypeUuid OPTIONAL
+ );
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFreeA (
+ IN OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFreeW (
+ IN OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#ifdef UNICODE
+#define RpcProtseqVectorFree RpcProtseqVectorFreeW
+#else /* UNICODE */
+#define RpcProtseqVectorFree RpcProtseqVectorFreeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFree (
+ IN OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerInqBindings (
+ OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerInqIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
+ OUT RPC_MGR_EPV __RPC_FAR * __RPC_FAR * MgrEpv
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerListen (
+ IN unsigned int MinimumCallThreads,
+ IN unsigned int MaxCalls,
+ IN unsigned int DontWait
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid OPTIONAL,
+ IN RPC_MGR_EPV __RPC_FAR * MgrEpv OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterIfEx (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid,
+ IN RPC_MGR_EPV __RPC_FAR * MgrEpv,
+ IN unsigned int Flags,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_CALLBACK_FN __RPC_FAR *IfCallback
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUnregisterIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
+ IN unsigned int WaitForCallsToComplete
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqs (
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsEx (
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsIf (
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsIfEx (
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseq RpcServerUseProtseqW
+#define RpcServerUseProtseqEx RpcServerUseProtseqExW
+#else /* UNICODE */
+#define RpcServerUseProtseq RpcServerUseProtseqA
+#define RpcServerUseProtseqEx RpcServerUseProtseqExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseq (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned short __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned short __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpW
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExW
+#else /* UNICODE */
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpA
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEp (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfW
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExW
+#else /* UNICODE */
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfA
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIf (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtStatsVectorFree (
+ IN RPC_STATS_VECTOR ** StatsVector
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqStats (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT RPC_STATS_VECTOR ** Statistics
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtIsServerListening (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtStopServerListening (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtWaitServerListen (
+ void
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetServerStackSize (
+ IN unsigned long ThreadStackSize
+ );
+
+/* server */
+void RPC_ENTRY
+RpcSsDontSerializeContext (
+ void
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtEnableIdleCleanup (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqIfIds (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcIfIdVectorFree (
+ IN OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincNameA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincNameW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+#ifdef UNICODE
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameW
+#else /* UNICODE */
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincNameA (
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincNameW (
+ IN unsigned long AuthnSvc,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+#ifdef UNICODE
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameW
+#else /* UNICODE */
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincName (
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcEpResolveBinding (
+ IN RPC_BINDING_HANDLE Binding,
+ IN RPC_IF_HANDLE IfSpec
+ );
+
+/* client */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryNameA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryNameW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+#ifdef UNICODE
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameW
+#else /* UNICODE */
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+typedef void __RPC_FAR * RPC_AUTH_IDENTITY_HANDLE;
+typedef void __RPC_FAR * RPC_AUTHZ_HANDLE;
+
+#define RPC_C_AUTHN_LEVEL_DEFAULT 0
+#define RPC_C_AUTHN_LEVEL_NONE 1
+#define RPC_C_AUTHN_LEVEL_CONNECT 2
+#define RPC_C_AUTHN_LEVEL_CALL 3
+#define RPC_C_AUTHN_LEVEL_PKT 4
+#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
+#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
+
+#define RPC_C_IMP_LEVEL_ANONYMOUS 1
+#define RPC_C_IMP_LEVEL_IDENTIFY 2
+#define RPC_C_IMP_LEVEL_IMPERSONATE 3
+#define RPC_C_IMP_LEVEL_DELEGATE 4
+
+#define RPC_C_QOS_IDENTITY_STATIC 0
+#define RPC_C_QOS_IDENTITY_DYNAMIC 1
+
+#define RPC_C_QOS_CAPABILITIES_DEFAULT 0
+#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 1
+
+#define RPC_C_PROTECT_LEVEL_DEFAULT (RPC_C_AUTHN_LEVEL_DEFAULT)
+#define RPC_C_PROTECT_LEVEL_NONE (RPC_C_AUTHN_LEVEL_NONE)
+#define RPC_C_PROTECT_LEVEL_CONNECT (RPC_C_AUTHN_LEVEL_CONNECT)
+#define RPC_C_PROTECT_LEVEL_CALL (RPC_C_AUTHN_LEVEL_CALL)
+#define RPC_C_PROTECT_LEVEL_PKT (RPC_C_AUTHN_LEVEL_PKT)
+#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
+#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY (RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
+
+#define RPC_C_AUTHN_NONE 0
+#define RPC_C_AUTHN_DCE_PRIVATE 1
+#define RPC_C_AUTHN_DCE_PUBLIC 2
+#define RPC_C_AUTHN_DEC_PUBLIC 4
+#define RPC_C_AUTHN_WINNT 10
+#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFFL
+
+#define RPC_C_SECURITY_QOS_VERSION 1L
+
+typedef struct _RPC_SECURITY_QOS {
+ unsigned long Version;
+ unsigned long Capabilities;
+ unsigned long IdentityTracking;
+ unsigned long ImpersonationType;
+} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+typedef struct _SEC_WINNT_AUTH_IDENTITY
+{
+ char __RPC_FAR *User;
+ char __RPC_FAR *Domain;
+ char __RPC_FAR *Password;
+} SEC_WINNT_AUTH_IDENTITY;
+#else
+
+
+#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
+#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
+ unsigned short __RPC_FAR *User;
+ unsigned long UserLength;
+ unsigned short __RPC_FAR *Domain;
+ unsigned long DomainLength;
+ unsigned short __RPC_FAR *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
+ unsigned char __RPC_FAR *User;
+ unsigned long UserLength;
+ unsigned char __RPC_FAR *Domain;
+ unsigned long DomainLength;
+ unsigned char __RPC_FAR *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
+
+
+#ifdef UNICODE
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W
+#else // UNICODE
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_A
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_A
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_A
+#endif // UNICODE
+#endif // defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+
+#define RPC_C_AUTHZ_NONE 0
+#define RPC_C_AUTHZ_NAME 1
+#define RPC_C_AUTHZ_DCE 2
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClientA (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClientW (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoExA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc,
+ IN RPC_SECURITY_QOS *SecurityQos OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoExW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc, OPTIONAL
+ IN RPC_SECURITY_QOS *SecurityQOS
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoExA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc, OPTIONAL
+ IN unsigned long RpcQosVersion,
+ OUT RPC_SECURITY_QOS *SecurityQOS
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoExW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL,
+ IN unsigned long RpcQosVersion,
+ OUT RPC_SECURITY_QOS *SecurityQOS
+ );
+
+typedef void
+(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ IN void __RPC_FAR * Arg,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long KeyVer,
+ OUT void __RPC_FAR * __RPC_FAR * Key,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfoA (
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfoW (
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientW
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoW
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoW
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoW
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExW
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExW
+#else /* UNICODE */
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientA
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoA
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoA
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoA
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExA
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClient (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfo (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfo (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+typedef void
+(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ IN void __RPC_FAR * Arg,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long KeyVer,
+ OUT void __RPC_FAR * __RPC_FAR * Key,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfo (
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+typedef struct {
+ unsigned char __RPC_FAR * UserName;
+ unsigned char __RPC_FAR * ComputerName;
+ unsigned short Privilege;
+ unsigned long AuthFlags;
+} RPC_CLIENT_INFORMATION1, __RPC_FAR * PRPC_CLIENT_INFORMATION1;
+
+RPC_STATUS RPC_ENTRY
+RpcBindingServerFromClient (
+ IN RPC_BINDING_HANDLE ClientBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * ServerBinding
+ );
+
+void RPC_ENTRY
+RpcRaiseException (
+ IN RPC_STATUS exception
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcTestCancel(
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcCancelThread(
+ IN void * Thread
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidCreate (
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToStringA (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromStringA (
+ IN unsigned char __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToStringW (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromStringW (
+ IN unsigned short __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#ifdef UNICODE
+#define UuidFromString UuidFromStringW
+#define UuidToString UuidToStringW
+#else /* UNICODE */
+#define UuidFromString UuidFromStringA
+#define UuidToString UuidToStringA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToString (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromString (
+ IN unsigned char __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+signed int RPC_ENTRY
+UuidCompare (
+ IN UUID __RPC_FAR * Uuid1,
+ IN UUID __RPC_FAR * Uuid2,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+UuidCreateNil (
+ OUT UUID __RPC_FAR * NilUuid
+ );
+
+int RPC_ENTRY
+UuidEqual (
+ IN UUID __RPC_FAR * Uuid1,
+ IN UUID __RPC_FAR * Uuid2,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+unsigned short RPC_ENTRY
+UuidHash (
+ IN UUID __RPC_FAR * Uuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+int RPC_ENTRY
+UuidIsNil (
+ IN UUID __RPC_FAR * Uuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplaceA (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplaceW (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned short * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterA (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterW (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned short * Annotation
+ );
+
+#ifdef UNICODE
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceW
+#define RpcEpRegister RpcEpRegisterW
+#else /* UNICODE */
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceA
+#define RpcEpRegister RpcEpRegisterA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplace (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegister (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+
+RPC_STATUS RPC_ENTRY
+RpcEpUnregister(
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqTextA (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned char __RPC_FAR * ErrorText
+ );
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqTextW (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned short __RPC_FAR * ErrorText
+ );
+
+#ifdef UNICODE
+#define DceErrorInqText DceErrorInqTextW
+#else /* UNICODE */
+#define DceErrorInqText DceErrorInqTextA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqText (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned char __RPC_FAR * ErrorText
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+#define DCE_C_ERROR_STRING_LEN 256
+
+typedef I_RPC_HANDLE * RPC_EP_INQ_HANDLE;
+
+#define RPC_C_EP_ALL_ELTS 0
+#define RPC_C_EP_MATCH_BY_IF 1
+#define RPC_C_EP_MATCH_BY_OBJ 2
+#define RPC_C_EP_MATCH_BY_BOTH 3
+
+#define RPC_C_VERS_ALL 1
+#define RPC_C_VERS_COMPATIBLE 2
+#define RPC_C_VERS_EXACT 3
+#define RPC_C_VERS_MAJOR_ONLY 4
+#define RPC_C_VERS_UPTO 5
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqBegin (
+ IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption OPTIONAL,
+ IN UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqDone (
+ IN OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNextA (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNextW (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW
+#else /* UNICODE */
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNext (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpUnregister (
+ IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
+ IN RPC_IF_ID __RPC_FAR * IfId,
+ IN RPC_BINDING_HANDLE Binding,
+ IN UUID __RPC_FAR * ObjectUuid OPTIONAL
+ );
+
+typedef int
+(__RPC_API * RPC_MGMT_AUTHORIZATION_FN) (
+ IN RPC_BINDING_HANDLE ClientBinding,
+ IN unsigned long RequestedMgmtOperation,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+#define RPC_C_MGMT_INQ_IF_IDS 0
+#define RPC_C_MGMT_INQ_PRINC_NAME 1
+#define RPC_C_MGMT_INQ_STATS 2
+#define RPC_C_MGMT_IS_SERVER_LISTEN 3
+#define RPC_C_MGMT_STOP_SERVER_LISTEN 4
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetAuthorizationFn (
+ IN RPC_MGMT_AUTHORIZATION_FN AuthorizationFn
+ );
+
+
+#define RPC_C_PARM_MAX_PACKET_LENGTH 1
+#define RPC_C_PARM_BUFFER_LENGTH 2
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqParameter (
+ IN unsigned Parameter,
+ IN unsigned long __RPC_FAR * Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetParameter (
+ IN unsigned Parameter,
+ IN unsigned long Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtBindingInqParameter (
+ IN RPC_BINDING_HANDLE Handle,
+ IN unsigned Parameter,
+ IN unsigned long __RPC_FAR * Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtBindingSetParameter (
+ IN RPC_BINDING_HANDLE Handle,
+ IN unsigned Parameter,
+ IN unsigned long Value
+ );
+
+#define RPC_IF_AUTOLISTEN 0x0001
+#define RPC_IF_OLE 0x0002
+
+#include <rpcdcep.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RPCDCE_H__ */
diff --git a/public/sdk/inc/rpcdcep.h b/public/sdk/inc/rpcdcep.h
new file mode 100644
index 000000000..85ed0fd67
--- /dev/null
+++ b/public/sdk/inc/rpcdcep.h
@@ -0,0 +1,415 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcdcep.h
+
+Abstract:
+
+ This module contains the private RPC runtime APIs for use by the
+ stubs and by support libraries. Applications must not call these
+ routines.
+
+--*/
+
+#ifndef __RPCDCEP_H__
+#define __RPCDCEP_H__
+
+// Set the packing level for RPC structures for Dos and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack(2)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _RPC_VERSION {
+ unsigned short MajorVersion;
+ unsigned short MinorVersion;
+} RPC_VERSION;
+
+typedef struct _RPC_SYNTAX_IDENTIFIER {
+ GUID SyntaxGUID;
+ RPC_VERSION SyntaxVersion;
+} RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
+
+typedef struct _RPC_MESSAGE
+{
+ RPC_BINDING_HANDLE Handle;
+ unsigned long DataRepresentation;
+ void __RPC_FAR * Buffer;
+ unsigned int BufferLength;
+ unsigned int ProcNum;
+ PRPC_SYNTAX_IDENTIFIER TransferSyntax;
+ void __RPC_FAR * RpcInterfaceInformation;
+ void __RPC_FAR * ReservedForRuntime;
+ RPC_MGR_EPV __RPC_FAR * ManagerEpv;
+ void __RPC_FAR * ImportContext;
+ unsigned long RpcFlags;
+} RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
+
+
+typedef RPC_STATUS RPC_ENTRY RPC_FORWARD_FUNCTION(
+ IN UUID __RPC_FAR * InterfaceId,
+ IN RPC_VERSION __RPC_FAR * InterfaceVersion,
+ IN UUID __RPC_FAR * ObjectId,
+ IN unsigned char __RPC_FAR * Rpcpro,
+ IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
+
+/*
+ * Types of function calls for datagram rpc
+ */
+
+#define RPC_NCA_FLAGS_DEFAULT 0x00000000 /* 0b000...000 */
+#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001 /* 0b000...001 */
+#define RPC_NCA_FLAGS_BROADCAST 0x00000002 /* 0b000...010 */
+#define RPC_NCA_FLAGS_MAYBE 0x00000004 /* 0b000...100 */
+
+#define RPC_BUFFER_COMPLETE 0x00001000 /* used by pipes */
+#define RPC_BUFFER_PARTIAL 0x00002000 /* used by pipes */
+#define RPC_BUFFER_EXTRA 0x00004000 /* used by pipes */
+
+#define RPCFLG_NON_NDR 0x80000000UL
+#define RPCFLG_ASYNCHRONOUS 0x40000000UL
+#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000UL
+#define RPCFLG_LOCAL_CALL 0x10000000UL
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#define RPC_FLAGS_VALID_BIT 0x8000
+#endif
+
+#if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
+#define RPC_FLAGS_VALID_BIT 0x00008000
+#endif
+
+typedef
+void
+(__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
+ IN OUT PRPC_MESSAGE Message
+ );
+
+typedef struct {
+ unsigned int DispatchTableCount;
+ RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
+ int Reserved;
+} RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
+
+typedef struct _RPC_PROTSEQ_ENDPOINT
+{
+ unsigned char __RPC_FAR * RpcProtocolSequence;
+ unsigned char __RPC_FAR * Endpoint;
+} RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
+
+/*
+Both of these types MUST start with the InterfaceId and TransferSyntax.
+Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
+*/
+#define NT351_INTERFACE_SIZE 0x40
+#define RPC_INTERFACE_HAS_PIPES 0x0001
+
+typedef struct _RPC_SERVER_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
+ void const __RPC_FAR *InterpreterInfo;
+ unsigned int Flags ;
+} RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
+
+typedef struct _RPC_CLIENT_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ unsigned long Reserved;
+ void const __RPC_FAR * InterpreterInfo;
+ unsigned int Flags ;
+} RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSendReceive (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcFreeBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSend (
+ IN OUT PRPC_MESSAGE Message
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcReceive (
+ IN OUT PRPC_MESSAGE Message,
+ IN unsigned int Size
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcFreePipeBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcReallocPipeBuffer (
+ IN PRPC_MESSAGE Message,
+ IN unsigned int NewSize
+ ) ;
+
+typedef void * I_RPC_MUTEX;
+
+void RPC_ENTRY
+I_RpcRequestMutex (
+ IN OUT I_RPC_MUTEX * Mutex
+ );
+
+void RPC_ENTRY
+I_RpcClearMutex (
+ IN I_RPC_MUTEX Mutex
+ );
+
+void RPC_ENTRY
+I_RpcDeleteMutex (
+ IN I_RPC_MUTEX Mutex
+ );
+
+void __RPC_FAR * RPC_ENTRY
+I_RpcAllocate (
+ IN unsigned int Size
+ );
+
+void RPC_ENTRY
+I_RpcFree (
+ IN void __RPC_FAR * Object
+ );
+
+void RPC_ENTRY
+I_RpcPauseExecution (
+ IN unsigned long Milliseconds
+ );
+
+typedef
+void
+(__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
+ void __RPC_FAR * AssociationContext
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcMonitorAssociation (
+ IN RPC_BINDING_HANDLE Handle,
+ IN PRPC_RUNDOWN RundownRoutine,
+ IN void * Context
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcStopMonitorAssociation (
+ IN RPC_BINDING_HANDLE Handle
+ );
+
+RPC_BINDING_HANDLE RPC_ENTRY
+I_RpcGetCurrentCallHandle(
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetAssociationContext (
+ OUT void __RPC_FAR * __RPC_FAR * AssociationContext
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSetAssociationContext (
+ IN void __RPC_FAR * AssociationContext
+ );
+
+#ifdef __RPC_NT__
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsBindingSetEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+#else
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsBindingSetEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+#endif
+
+#ifdef __RPC_NT__
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqDynamicEndpoint (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
+ );
+
+#else
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqDynamicEndpoint (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
+ );
+
+#endif
+
+#define TRANSPORT_TYPE_CN 0x1
+#define TRANSPORT_TYPE_DG 0x2
+#define TRANSPORT_TYPE_LPC 0x4
+#define TRANSPORT_TYPE_WMSG 0x8
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqTransportType (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned int __RPC_FAR * Type
+ );
+
+typedef struct _RPC_TRANSFER_SYNTAX
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_TRANSFER_SYNTAX;
+
+RPC_STATUS RPC_ENTRY
+I_RpcIfInqTransferSyntaxes (
+ IN RPC_IF_HANDLE RpcIfHandle,
+ OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
+ IN unsigned int TransferSyntaxSize,
+ OUT unsigned int __RPC_FAR * TransferSyntaxCount
+ );
+
+RPC_STATUS RPC_ENTRY
+I_UuidCreate (
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingCopy (
+ IN RPC_BINDING_HANDLE SourceBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingIsClientLocal (
+ IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
+ OUT unsigned int __RPC_FAR * ClientLocalFlag
+ );
+
+void RPC_ENTRY
+I_RpcSsDontSerializeContext (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcLaunchDatagramReceiveThread(
+ void __RPC_FAR * pAddress
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerRegisterForwardFunction (
+ IN RPC_FORWARD_FUNCTION __RPC_FAR * pForwardFunction
+ );
+
+
+RPC_STATUS RPC_ENTRY
+I_RpcConnectionInqSockBuffSize(
+ OUT unsigned long __RPC_FAR * RecvBuffSize,
+ OUT unsigned long __RPC_FAR * SendBuffSize
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcConnectionSetSockBuffSize(
+ IN unsigned long RecvBuffSize,
+ IN unsigned long SendBuffSize
+ );
+
+
+#ifdef MSWMSG
+RPC_STATUS RPC_ENTRY
+I_RpcServerStartListening(
+ HWND hWnd
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerStopListening(
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetThreadWindowHandle(
+ OUT HWND *WindowHandle
+ ) ;
+
+typedef RPC_STATUS (*RPC_BLOCKING_FN) (
+ IN void *wnd,
+ IN void *Context,
+ IN HANDLE hSyncEvent
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcAsyncSendReceive(
+ IN OUT PRPC_MESSAGE pRpcMessage,
+ IN OPTIONAL void *Context,
+ HWND hWnd
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingSetAsync(
+ IN RPC_BINDING_HANDLE Binding,
+ IN RPC_BLOCKING_FN BlockingFn
+ ) ;
+
+LONG RPC_ENTRY
+I_RpcWindowProc(
+ IN HWND hWnd,
+ IN UINT Message,
+ IN WPARAM wParam,
+ IN LPARAM lParam
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcSetWMsgEndpoint (
+ IN WCHAR __RPC_FAR * Endpoint
+ ) ;
+#endif
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerInqTransportType(
+ OUT unsigned int __RPC_FAR * Type
+ ) ;
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for Dos and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack()
+#endif
+
+#endif /* __RPCDCEP_H__ */
diff --git a/public/sdk/inc/rpcndr.h b/public/sdk/inc/rpcndr.h
new file mode 100644
index 000000000..65d1cdbfe
--- /dev/null
+++ b/public/sdk/inc/rpcndr.h
@@ -0,0 +1,2630 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcndr.h
+
+Abstract:
+
+ Definitions for stub data structures and prototypes of helper functions.
+
+Author:
+
+ DonnaLi (01-01-91)
+
+Environment:
+
+ DOS, Win 3.X, and Win/NT.
+
+Revision History:
+
+ DONNALI 08-29-91 Start recording history
+ donnali 09-11-91 change conversion macros
+ donnali 09-18-91 check in files for moving
+ STEVEZ 10-15-91 Merge with NT tree
+ donnali 10-28-91 add prototype
+ donnali 11-19-91 bugfix for strings
+ MIKEMON 12-17-91 DCE runtime API conversion
+ donnali 03-24-92 change rpc public header f
+ STEVEZ 04-04-92 add nsi include
+ mikemon 04-18-92 security support and misc
+ DovhH 04-24-24 Changed signature of <int>_from_ndr
+ (to unsigned <int>)
+ Added <base_type>_array_from_ndr routines
+ RyszardK 06-17-93 Added support for hyper
+ VibhasC 09-11-93 Created rpcndrn.h
+ DKays 10-14-93 Fixed up rpcndrn.h MIDL 2.0
+ RyszardK 01-15-94 Merged in the midl 2.0 changes from rpcndrn.h
+ Stevebl 04-22-96 Hookole support changes to MIDL_*_INFO
+
+--*/
+
+#ifndef __RPCNDR_H__
+#define __RPCNDR_H__
+
+//
+// Set the packing level for RPC structures for Dos, Windows and Mac.
+//
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
+#pragma pack(2)
+#endif
+
+#if defined(__RPC_MAC__)
+#define _MAC_
+#endif
+
+#include <rpcnsip.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************************
+
+ Network Computing Architecture (NCA) definition:
+
+ Network Data Representation: (NDR) Label format:
+ An unsigned long (32 bits) with the following layout:
+
+ 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
+ +---------------+---------------+---------------+-------+-------+
+ | Reserved | Reserved |Floating point | Int | Char |
+ | | |Representation | Rep. | Rep. |
+ +---------------+---------------+---------------+-------+-------+
+
+ Where
+
+ Reserved:
+
+ Must be zero (0) for NCA 1.5 and NCA 2.0.
+
+ Floating point Representation is:
+
+ 0 - IEEE
+ 1 - VAX
+ 2 - Cray
+ 3 - IBM
+
+ Int Rep. is Integer Representation:
+
+ 0 - Big Endian
+ 1 - Little Endian
+
+ Char Rep. is Character Representation:
+
+ 0 - ASCII
+ 1 - EBCDIC
+
+ The Microsoft Local Data Representation (for all platforms which are
+ of interest currently is edefined below:
+
+ ****************************************************************************/
+
+#define NDR_CHAR_REP_MASK (unsigned long)0X0000000FL
+#define NDR_INT_REP_MASK (unsigned long)0X000000F0L
+#define NDR_FLOAT_REP_MASK (unsigned long)0X0000FF00L
+
+#define NDR_LITTLE_ENDIAN (unsigned long)0X00000010L
+#define NDR_BIG_ENDIAN (unsigned long)0X00000000L
+
+#define NDR_IEEE_FLOAT (unsigned long)0X00000000L
+#define NDR_VAX_FLOAT (unsigned long)0X00000100L
+
+#define NDR_ASCII_CHAR (unsigned long)0X00000000L
+#define NDR_EBCDIC_CHAR (unsigned long)0X00000001L
+
+#if defined(__RPC_MAC__)
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000000L
+#define NDR_LOCAL_ENDIAN NDR_BIG_ENDIAN
+#else
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000010L
+#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
+#endif
+
+
+/****************************************************************************
+ * Macros for targeted platforms
+ ****************************************************************************/
+
+#if (defined(_WIN32_DCOM) || 0x400 <= _WIN32_WINNT)
+#define TARGET_IS_NT40_OR_LATER 1
+#else
+#define TARGET_IS_NT40_OR_LATER 0
+#endif
+
+#if (0x400 <= WINVER)
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1
+#else
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 0
+#endif
+
+/****************************************************************************
+ * Other MIDL base types / predefined types:
+ ****************************************************************************/
+
+#define small char
+typedef unsigned char byte;
+typedef unsigned char boolean;
+
+#ifndef _HYPER_DEFINED
+#define _HYPER_DEFINED
+
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
+#define hyper __int64
+#define MIDL_uhyper unsigned __int64
+#else
+typedef double hyper;
+typedef double MIDL_uhyper;
+#endif
+
+#endif // _HYPER_DEFINED
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+#ifdef __RPC_DOS__
+#define __RPC_CALLEE __far __pascal
+#endif
+
+#ifdef __RPC_WIN16__
+#define __RPC_CALLEE __far __pascal __export
+#endif
+
+#ifdef __RPC_WIN32__
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define __RPC_CALLEE __stdcall
+#else
+#define __RPC_CALLEE
+#endif
+#endif
+
+#ifdef __RPC_MAC__
+#define __RPC_CALLEE __far
+#endif
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifdef __RPC_WIN16__
+#define RPC_VAR_ENTRY __export __cdecl
+#else
+#define RPC_VAR_ENTRY __cdecl
+#endif
+
+
+/* winnt only */
+#if defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA)
+#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport)
+#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport)
+#else
+#define __MIDL_DECLSPEC_DLLIMPORT
+#define __MIDL_DECLSPEC_DLLEXPORT
+#endif
+
+
+
+
+/****************************************************************************
+ * Context handle management related definitions:
+ *
+ * Client and Server Contexts.
+ *
+ ****************************************************************************/
+
+typedef void __RPC_FAR * NDR_CCONTEXT;
+
+typedef struct
+ {
+ void __RPC_FAR * pad[2];
+ void __RPC_FAR * userContext;
+ } __RPC_FAR * NDR_SCONTEXT;
+
+#define NDRSContextValue(hContext) (&(hContext)->userContext)
+
+#define cbNDRContext 20 /* size of context on WIRE */
+
+typedef void (__RPC_USER __RPC_FAR * NDR_RUNDOWN)(void __RPC_FAR * context);
+
+typedef struct _SCONTEXT_QUEUE {
+ unsigned long NumberOfObjects;
+ NDR_SCONTEXT * ArrayOfObjects;
+ } SCONTEXT_QUEUE, __RPC_FAR * PSCONTEXT_QUEUE;
+
+RPC_BINDING_HANDLE RPC_ENTRY
+NDRCContextBinding (
+ IN NDR_CCONTEXT CContext
+ );
+
+void RPC_ENTRY
+NDRCContextMarshall (
+ IN NDR_CCONTEXT CContext,
+ OUT void __RPC_FAR *pBuff
+ );
+
+void RPC_ENTRY
+NDRCContextUnmarshall (
+ OUT NDR_CCONTEXT __RPC_FAR *pCContext,
+ IN RPC_BINDING_HANDLE hBinding,
+ IN void __RPC_FAR *pBuff,
+ IN unsigned long DataRepresentation
+ );
+
+void RPC_ENTRY
+NDRSContextMarshall (
+ IN NDR_SCONTEXT CContext,
+ OUT void __RPC_FAR *pBuff,
+ IN NDR_RUNDOWN userRunDownIn
+ );
+
+NDR_SCONTEXT RPC_ENTRY
+NDRSContextUnmarshall (
+ IN void __RPC_FAR *pBuff,
+ IN unsigned long DataRepresentation
+ );
+
+void RPC_ENTRY
+RpcSsDestroyClientContext (
+ IN void __RPC_FAR * __RPC_FAR * ContextHandle
+ );
+
+
+/****************************************************************************
+ NDR conversion related definitions.
+ ****************************************************************************/
+
+#define byte_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+#define boolean_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+#define small_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define small_from_ndr_temp(source, target, format) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)(source))++; \
+ }
+
+#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+/****************************************************************************
+ Platform specific mapping of c-runtime functions.
+ ****************************************************************************/
+
+#ifdef __RPC_DOS__
+#define MIDL_ascii_strlen(string) \
+ _fstrlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ _fstrcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ _fmemset(s,c,n)
+#endif
+
+#ifdef __RPC_WIN16__
+#define MIDL_ascii_strlen(string) \
+ _fstrlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ _fstrcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ _fmemset(s,c,n)
+#endif
+
+#if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
+#define MIDL_ascii_strlen(string) \
+ strlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ strcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ memset(s,c,n)
+#endif
+
+/****************************************************************************
+ Ndr Library helper function prototypes for MIDL 1.0 ndr functions.
+ ****************************************************************************/
+
+void RPC_ENTRY
+NDRcopy (
+ IN void __RPC_FAR *pTarget,
+ IN void __RPC_FAR *pSource,
+ IN unsigned int size
+ );
+
+size_t RPC_ENTRY
+MIDL_wchar_strlen (
+ IN wchar_t __RPC_FAR * s
+ );
+
+void RPC_ENTRY
+MIDL_wchar_strcpy (
+ OUT void __RPC_FAR * t,
+ IN wchar_t __RPC_FAR * s
+ );
+
+void RPC_ENTRY
+char_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT unsigned char __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+char_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned char __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+short_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT unsigned short __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+short_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned short __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+short_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT unsigned short __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+long_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT unsigned long __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+long_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned long __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+long_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT unsigned long __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+enum_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT unsigned int __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+float_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+float_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+double_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+double_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+hyper_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT hyper __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+hyper_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT hyper __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+hyper_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT hyper __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+data_from_ndr (
+ PRPC_MESSAGE source,
+ void __RPC_FAR * target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+data_into_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_into_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+data_size_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_size_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_peek_ndr (
+ PRPC_MESSAGE source,
+ unsigned char __RPC_FAR * __RPC_FAR * buffer,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void __RPC_FAR * RPC_ENTRY
+midl_allocate (
+ size_t size
+ );
+
+/****************************************************************************
+ MIDL 2.0 ndr definitions.
+ ****************************************************************************/
+
+typedef unsigned long error_status_t;
+
+#define _midl_ma1( p, cast ) *(*( cast **)&p)++
+#define _midl_ma2( p, cast ) *(*( cast **)&p)++
+#define _midl_ma4( p, cast ) *(*( cast **)&p)++
+#define _midl_ma8( p, cast ) *(*( cast **)&p)++
+
+#define _midl_unma1( p, cast ) *(( cast *)p)++
+#define _midl_unma2( p, cast ) *(( cast *)p)++
+#define _midl_unma3( p, cast ) *(( cast *)p)++
+#define _midl_unma4( p, cast ) *(( cast *)p)++
+
+// Some alignment specific macros.
+
+
+#define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe))
+#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc))
+#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8))
+
+#define _midl_addp( p, n ) (p += n)
+
+// Marshalling macros
+
+#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++
+#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p
+#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++
+#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++)
+
+
+////////////////////////////////////////////////////////////////////////////
+// Ndr macros.
+////////////////////////////////////////////////////////////////////////////
+
+#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, \
+ _midl_ma4( p, unsigned long) = 0, \
+ _midl_ma4( p, unsigned long) = l)
+
+#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long),\
+ (_midl_addp(p,4)), \
+ (l=_midl_unma4(p,unsigned long))
+
+#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20)
+
+#define NdrUnMarshCCtxtHdl(pc,p,h,drep) \
+ (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20)
+
+#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep ))
+
+
+#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd)
+
+#define NdrFieldOffset(s,f) (long)(& (((s __RPC_FAR *)0)->f))
+#define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t))
+
+#if defined(__RPC_MAC__)
+#define NdrFcShort(s) (unsigned char)(s >> 8), (unsigned char)(s & 0xff)
+#define NdrFcLong(s) (unsigned char)(s >> 24), (unsigned char)((s & 0x00ff0000) >> 16), \
+ (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)(s & 0xff)
+#else
+#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
+#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \
+ (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
+#endif // Mac
+
+//
+// On the server side, the following exceptions are mapped to
+// the bad stub data exception if -error stub_data is used.
+//
+
+#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER \
+ ( (RpcExceptionCode() == STATUS_ACCESS_VIOLATION) || \
+ (RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \
+ (RpcExceptionCode() == RPC_X_BAD_STUB_DATA) )
+
+/////////////////////////////////////////////////////////////////////////////
+// Some stub helper functions.
+/////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////
+// Stub helper structures.
+////////////////////////////////////////////////////////////////////////////
+
+struct _MIDL_STUB_MESSAGE;
+struct _MIDL_STUB_DESC;
+struct _FULL_PTR_XLAT_TABLES;
+
+typedef unsigned char __RPC_FAR * RPC_BUFPTR;
+typedef unsigned long RPC_LENGTH;
+
+// Expression evaluation callback routine prototype.
+typedef void (__RPC_USER __RPC_FAR * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE __RPC_FAR * );
+
+typedef const unsigned char __RPC_FAR * PFORMAT_STRING;
+
+/*
+ * Multidimensional conformant/varying array struct.
+ */
+typedef struct
+ {
+ long Dimension;
+
+ /* These fields MUST be (unsigned long *) */
+ unsigned long __RPC_FAR * BufferConformanceMark;
+ unsigned long __RPC_FAR * BufferVarianceMark;
+
+ /* Count arrays, used for top level arrays in -Os stubs */
+ unsigned long __RPC_FAR * MaxCountArray;
+ unsigned long __RPC_FAR * OffsetArray;
+ unsigned long __RPC_FAR * ActualCountArray;
+ } ARRAY_INFO, __RPC_FAR *PARRAY_INFO;
+
+/*
+ * Pipe related definitions.
+ */
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_PULL_RTN)(
+ char __RPC_FAR * state,
+ void __RPC_FAR * buf,
+ unsigned long esize,
+ unsigned long __RPC_FAR * ecount );
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_PUSH_RTN)(
+ char __RPC_FAR * state,
+ void __RPC_FAR * buf,
+ unsigned long ecount );
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_ALLOC_RTN)(
+ char __RPC_FAR * state,
+ unsigned long bsize,
+ void __RPC_FAR * __RPC_FAR * buf,
+ unsigned long __RPC_FAR * bcount );
+
+
+typedef struct _GENERIC_PIPE_TYPE
+ {
+ NDR_PIPE_PULL_RTN pfnPull;
+ NDR_PIPE_PUSH_RTN pfnPush;
+ NDR_PIPE_ALLOC_RTN pfnAlloc;
+ char __RPC_FAR * pState;
+ } GENERIC_PIPE_TYPE;
+
+
+typedef struct {
+ int CurrentState;
+ int ElemsInChunk;
+ int ElemAlign;
+ int ElemWireSize;
+ int ElemMemSize;
+ int PartialBufferSize;
+ unsigned char __RPC_FAR * PartialElem;
+ int PartialElemSize;
+ int PartialOffset;
+ int EndOfPipe;
+ } NDR_PIPE_STATE;
+
+typedef struct _PIPE_MESSAGE
+ {
+ unsigned short Signature;
+ unsigned short PipeId;
+ GENERIC_PIPE_TYPE __RPC_FAR * pPipeType;
+ PFORMAT_STRING pTypeFormat;
+ unsigned short PipeStatus;
+ unsigned short PipeFlags;
+ struct _MIDL_STUB_MESSAGE __RPC_FAR * pStubMsg;
+ } NDR_PIPE_MESSAGE, __RPC_FAR * PNDR_PIPE_MESSAGE;
+
+typedef struct _NDR_PIPE_DESC
+ {
+ NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg;
+ short CurrentPipe;
+ short InPipes;
+ short OutPipes;
+ short TotalPipes;
+ short PipeVersion;
+ short Flags;
+ unsigned char __RPC_FAR * DispatchBuffer;
+ unsigned char __RPC_FAR * LastPartialBuffer;
+ unsigned long LastPartialSize;
+ unsigned char __RPC_FAR * BufferSave;
+ unsigned long LengthSave;
+ NDR_PIPE_STATE RuntimeState;
+ } NDR_PIPE_DESC, __RPC_FAR * PNDR_PIPE_DESC;
+
+
+/*
+ * MIDL Stub Message
+ */
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
+#include <pshpack4.h>
+#endif
+
+typedef struct _MIDL_STUB_MESSAGE
+ {
+ /* RPC message structure. */
+ PRPC_MESSAGE RpcMsg;
+
+ /* Pointer into RPC message buffer. */
+ unsigned char __RPC_FAR * Buffer;
+
+ /*
+ * These are used internally by the Ndr routines to mark the beginning
+ * and end of an incoming RPC buffer.
+ */
+ unsigned char __RPC_FAR * BufferStart;
+ unsigned char __RPC_FAR * BufferEnd;
+
+ /*
+ * Used internally by the Ndr routines as a place holder in the buffer.
+ * On the marshalling side it's used to mark the location where conformance
+ * size should be marshalled.
+ * On the unmarshalling side it's used to mark the location in the buffer
+ * used during pointer unmarshalling to base pointer offsets off of.
+ */
+ unsigned char __RPC_FAR * BufferMark;
+
+ /* Set by the buffer sizing routines. */
+ unsigned long BufferLength;
+
+ /* Set by the memory sizing routines. */
+ unsigned long MemorySize;
+
+ /* Pointer to user memory. */
+ unsigned char __RPC_FAR * Memory;
+
+ /* Is the Ndr routine begin called from a client side stub. */
+ int IsClient;
+
+ /* Can the buffer be re-used for memory on unmarshalling. */
+ int ReuseBuffer;
+
+ /* Holds the current pointer to an allocate all nodes memory block. */
+ unsigned char __RPC_FAR * AllocAllNodesMemory;
+
+ /* Used for debugging asserts only, remove later. */
+ unsigned char __RPC_FAR * AllocAllNodesMemoryEnd;
+
+ /*
+ * Stuff needed while handling complex structures
+ */
+
+ /* Ignore imbeded pointers while computing buffer or memory sizes. */
+ int IgnoreEmbeddedPointers;
+
+ /*
+ * This marks the location in the buffer where pointees of a complex
+ * struct reside.
+ */
+ unsigned char __RPC_FAR * PointerBufferMark;
+
+ /*
+ * Used to catch errors in SendReceive.
+ */
+ unsigned char fBufferValid;
+
+ /*
+ * Obsolete unused field (formerly MaxContextHandleNumber).
+ */
+ unsigned char Unused;
+
+ /*
+ * Used internally by the Ndr routines. Holds the max counts for
+ * a conformant array.
+ */
+ unsigned long MaxCount;
+
+ /*
+ * Used internally by the Ndr routines. Holds the offsets for a varying
+ * array.
+ */
+ unsigned long Offset;
+
+ /*
+ * Used internally by the Ndr routines. Holds the actual counts for
+ * a varying array.
+ */
+ unsigned long ActualCount;
+
+ /* Allocation and Free routine to be used by the Ndr routines. */
+ void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
+
+ /*
+ * Top of parameter stack. Used for "single call" stubs during marshalling
+ * to hold the beginning of the parameter list on the stack. Needed to
+ * extract parameters which hold attribute values for top level arrays and
+ * pointers.
+ */
+ unsigned char __RPC_FAR * StackTop;
+
+ /*
+ * Fields used for the transmit_as and represent_as objects.
+ * For represent_as the mapping is: presented=local, transmit=named.
+ */
+ unsigned char __RPC_FAR * pPresentedType;
+ unsigned char __RPC_FAR * pTransmitType;
+
+ /*
+ * When we first construct a binding on the client side, stick it
+ * in the rpcmessage and later call RpcGetBuffer, the handle field
+ * in the rpcmessage is changed. That's fine except that we need to
+ * have that original handle for use in unmarshalling context handles
+ * (the second argument in NDRCContextUnmarshall to be exact). So
+ * stash the contructed handle here and extract it when needed.
+ */
+ handle_t SavedHandle;
+
+ /*
+ * Pointer back to the stub descriptor. Use this to get all handle info.
+ */
+ const struct _MIDL_STUB_DESC __RPC_FAR * StubDesc;
+
+ /*
+ * Full pointer stuff.
+ */
+ struct _FULL_PTR_XLAT_TABLES __RPC_FAR * FullPtrXlatTables;
+
+ unsigned long FullPtrRefId;
+
+ /*
+ * flags
+ */
+
+ int fCheckBounds;
+
+ int fInDontFree :1;
+ int fDontCallFreeInst :1;
+ int fInOnlyParam :1;
+ int fHasReturn :1;
+
+ unsigned long dwDestContext;
+ void __RPC_FAR * pvDestContext;
+
+ NDR_SCONTEXT * SavedContextHandles;
+
+ long ParamNumber;
+
+ struct IRpcChannelBuffer __RPC_FAR * pRpcChannelBuffer;
+
+ PARRAY_INFO pArrayInfo;
+
+ /*
+ * This is where the Beta2 stub message ends.
+ */
+
+ unsigned long __RPC_FAR * SizePtrCountArray;
+ unsigned long __RPC_FAR * SizePtrOffsetArray;
+ unsigned long __RPC_FAR * SizePtrLengthArray;
+
+ /*
+ * Interpreter argument queue. Used on server side only.
+ */
+ void __RPC_FAR * pArgQueue;
+
+ unsigned long dwStubPhase;
+
+ /*
+ * Pipe descriptor, defined for the 4.0 release.
+ */
+
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc;
+
+ unsigned long Reserved[4];
+
+ /*
+ * Fields up to this point present since the 3.50 release.
+ */
+
+ } MIDL_STUB_MESSAGE, __RPC_FAR *PMIDL_STUB_MESSAGE;
+
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
+#include <poppack.h>
+#endif
+
+/*
+ * Generic handle bind/unbind routine pair.
+ */
+typedef void __RPC_FAR *
+ (__RPC_FAR __RPC_API * GENERIC_BINDING_ROUTINE)
+ (void __RPC_FAR *);
+typedef void
+ (__RPC_FAR __RPC_API * GENERIC_UNBIND_ROUTINE)
+ (void __RPC_FAR *, unsigned char __RPC_FAR *);
+
+typedef struct _GENERIC_BINDING_ROUTINE_PAIR
+ {
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_ROUTINE_PAIR, __RPC_FAR *PGENERIC_BINDING_ROUTINE_PAIR;
+
+typedef struct __GENERIC_BINDING_INFO
+ {
+ void __RPC_FAR * pObj;
+ unsigned int Size;
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_INFO, __RPC_FAR *PGENERIC_BINDING_INFO;
+
+// typedef EXPR_EVAL - see above
+// typedefs for xmit_as
+
+#if (defined(_MSC_VER)) && !defined(MIDL_PASS)
+// a Microsoft C++ compiler
+#define NDR_SHAREABLE __inline
+#else
+#define NDR_SHAREABLE static
+#endif
+
+
+typedef void (__RPC_FAR __RPC_USER * XMIT_HELPER_ROUTINE)
+ ( PMIDL_STUB_MESSAGE );
+
+typedef struct _XMIT_ROUTINE_QUINTUPLE
+ {
+ XMIT_HELPER_ROUTINE pfnTranslateToXmit;
+ XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
+ XMIT_HELPER_ROUTINE pfnFreeXmit;
+ XMIT_HELPER_ROUTINE pfnFreeInst;
+ } XMIT_ROUTINE_QUINTUPLE, __RPC_FAR *PXMIT_ROUTINE_QUINTUPLE;
+
+typedef unsigned long
+(__RPC_FAR __RPC_USER * USER_MARSHAL_SIZING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned long,
+ void __RPC_FAR * );
+
+typedef unsigned char __RPC_FAR *
+(__RPC_FAR __RPC_USER * USER_MARSHAL_MARSHALLING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR * ,
+ void __RPC_FAR * );
+
+typedef unsigned char __RPC_FAR *
+(__RPC_FAR __RPC_USER * USER_MARSHAL_UNMARSHALLING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR * ,
+ void __RPC_FAR * );
+
+typedef void (__RPC_FAR __RPC_USER * USER_MARSHAL_FREEING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ void __RPC_FAR * );
+
+typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
+ {
+ USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
+ USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
+ USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
+ USER_MARSHAL_FREEING_ROUTINE pfnFree;
+ } USER_MARSHAL_ROUTINE_QUADRUPLE;
+
+typedef struct _USER_MARSHAL_CB
+{
+ unsigned long Flags;
+ PMIDL_STUB_MESSAGE pStubMsg;
+ PFORMAT_STRING pReserve;
+} USER_MARSHAL_CB;
+
+
+#define USER_CALL_CTXT_MASK(f) ((f) & 0xff)
+#define GET_USER_DATA_REP(f) ((f) >> 16)
+
+typedef struct _MALLOC_FREE_STRUCT
+ {
+ void __RPC_FAR * (__RPC_FAR __RPC_USER * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_USER * pfnFree)(void __RPC_FAR *);
+ } MALLOC_FREE_STRUCT;
+
+typedef struct _COMM_FAULT_OFFSETS
+ {
+ short CommOffset;
+ short FaultOffset;
+ } COMM_FAULT_OFFSETS;
+
+/*
+ * MIDL Stub Descriptor
+ */
+
+typedef struct _MIDL_STUB_DESC
+ {
+
+ void __RPC_FAR * RpcInterfaceInformation;
+
+ void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
+
+ union
+ {
+ handle_t __RPC_FAR * pAutoHandle;
+ handle_t __RPC_FAR * pPrimitiveHandle;
+ PGENERIC_BINDING_INFO pGenericBindingInfo;
+ } IMPLICIT_HANDLE_INFO;
+
+ const NDR_RUNDOWN __RPC_FAR * apfnNdrRundownRoutines;
+ const GENERIC_BINDING_ROUTINE_PAIR __RPC_FAR * aGenericBindingRoutinePairs;
+
+ const EXPR_EVAL __RPC_FAR * apfnExprEval;
+
+ const XMIT_ROUTINE_QUINTUPLE __RPC_FAR * aXmitQuintuple;
+
+ const unsigned char __RPC_FAR * pFormatTypes;
+
+ int fCheckBounds;
+
+ /* Ndr library version. */
+ unsigned long Version;
+
+ /*
+ * Reserved for future use. (no reserves )
+ */
+
+ MALLOC_FREE_STRUCT __RPC_FAR * pMallocFreeStruct;
+
+ long MIDLVersion;
+
+ const COMM_FAULT_OFFSETS __RPC_FAR * CommFaultOffsets;
+
+ // New fields for version 3.0+
+
+ const USER_MARSHAL_ROUTINE_QUADRUPLE __RPC_FAR * aUserMarshalQuadruple;
+
+ long Reserved1;
+ long Reserved2;
+ long Reserved3;
+ long Reserved4;
+ long Reserved5;
+
+ } MIDL_STUB_DESC;
+
+typedef const MIDL_STUB_DESC __RPC_FAR * PMIDL_STUB_DESC;
+
+typedef void __RPC_FAR * PMIDL_XMIT_TYPE;
+
+/*
+ * MIDL Stub Format String. This is a const in the stub.
+ */
+#if !defined( RC_INVOKED )
+#pragma warning( disable:4200 )
+#endif
+typedef struct _MIDL_FORMAT_STRING
+ {
+ short Pad;
+ unsigned char Format[];
+ } MIDL_FORMAT_STRING;
+#if !defined( RC_INVOKED )
+#pragma warning( default:4200 )
+#endif
+
+/*
+ * Stub thunk used for some interpreted server stubs.
+ */
+typedef void (__RPC_FAR __RPC_API * STUB_THUNK)( PMIDL_STUB_MESSAGE );
+
+typedef long (__RPC_FAR __RPC_API * SERVER_ROUTINE)();
+
+/*
+ * Server Interpreter's information strucuture.
+ */
+typedef struct _MIDL_SERVER_INFO_
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ const SERVER_ROUTINE * DispatchTable;
+ PFORMAT_STRING ProcString;
+ const unsigned short * FmtStringOffset;
+ const STUB_THUNK * ThunkTable;
+ PFORMAT_STRING LocalFormatTypes;
+ PFORMAT_STRING LocalProcString;
+ const unsigned short * LocalFmtStringOffset;
+ } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
+
+/*
+ * Stubless object proxy information structure.
+ */
+typedef struct _MIDL_STUBLESS_PROXY_INFO
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ PFORMAT_STRING ProcFormatString;
+ const unsigned short __RPC_FAR * FormatStringOffset;
+ PFORMAT_STRING LocalFormatTypes;
+ PFORMAT_STRING LocalProcString;
+ const unsigned short __RPC_FAR * LocalFmtStringOffset;
+ } MIDL_STUBLESS_PROXY_INFO;
+
+typedef MIDL_STUBLESS_PROXY_INFO __RPC_FAR * PMIDL_STUBLESS_PROXY_INFO;
+
+/*
+ * This is the return value from NdrClientCall.
+ */
+typedef union _CLIENT_CALL_RETURN
+ {
+ void __RPC_FAR * Pointer;
+ long Simple;
+ } CLIENT_CALL_RETURN;
+
+/*
+ * Full pointer data structures.
+ */
+
+typedef enum
+ {
+ XLAT_SERVER = 1,
+ XLAT_CLIENT
+ } XLAT_SIDE;
+
+/*
+ * Stores the translation for the conversion from a full pointer into it's
+ * corresponding ref id.
+ */
+typedef struct _FULL_PTR_TO_REFID_ELEMENT
+ {
+ struct _FULL_PTR_TO_REFID_ELEMENT __RPC_FAR * Next;
+
+ void __RPC_FAR * Pointer;
+ unsigned long RefId;
+ unsigned char State;
+ } FULL_PTR_TO_REFID_ELEMENT, __RPC_FAR *PFULL_PTR_TO_REFID_ELEMENT;
+
+/*
+ * Full pointer translation tables.
+ */
+typedef struct _FULL_PTR_XLAT_TABLES
+ {
+ /*
+ * Ref id to pointer translation information.
+ */
+ struct
+ {
+ void __RPC_FAR *__RPC_FAR * XlatTable;
+ unsigned char __RPC_FAR * StateTable;
+ unsigned long NumberOfEntries;
+ } RefIdToPointer;
+
+ /*
+ * Pointer to ref id translation information.
+ */
+ struct
+ {
+ PFULL_PTR_TO_REFID_ELEMENT __RPC_FAR * XlatTable;
+ unsigned long NumberOfBuckets;
+ unsigned long HashMask;
+ } PointerToRefId;
+
+ /*
+ * Next ref id to use.
+ */
+ unsigned long NextRefId;
+
+ /*
+ * Keep track of the translation size we're handling : server or client.
+ * This tells us when we have to do reverse translations when we insert
+ * new translations. On the server we must insert a pointer-to-refid
+ * translation whenever we insert a refid-to-pointer translation, and
+ * vica versa for the client.
+ */
+ XLAT_SIDE XlatSide;
+ } FULL_PTR_XLAT_TABLES, __RPC_FAR *PFULL_PTR_XLAT_TABLES;
+
+/***************************************************************************
+ ** New MIDL 2.0 Ndr routine templates
+ ***************************************************************************/
+
+/*
+ * Marshall routines
+ */
+
+void RPC_ENTRY
+NdrSimpleTypeMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned char FormatChar
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSimpleStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrHardStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrFixedArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrByteCountPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrXmitOrRepAsMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo interface pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrInterfacePointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Context handles */
+
+void RPC_ENTRY
+NdrClientContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT ContextHandle,
+ int fCheck
+ );
+
+void RPC_ENTRY
+NdrServerContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_SCONTEXT ContextHandle,
+ NDR_RUNDOWN RundownRoutine
+ );
+
+/*
+ * Unmarshall routines
+ */
+
+void RPC_ENTRY
+NdrSimpleTypeUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned char FormatChar
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Structures */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSimpleStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrHardStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Arrays */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrFixedArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Strings */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Unions */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Byte count pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrByteCountPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Transmit as and represent as*/
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrXmitOrRepAsUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* User_marshal */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Cairo interface pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrInterfacePointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Context handles */
+
+void RPC_ENTRY
+NdrClientContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT __RPC_FAR * pContextHandle,
+ RPC_BINDING_HANDLE BindHandle
+ );
+
+NDR_SCONTEXT RPC_ENTRY
+NdrServerContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+/*
+ * Buffer sizing routines
+ */
+
+void RPC_ENTRY
+NdrPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+void RPC_ENTRY
+NdrSimpleStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrHardStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+void RPC_ENTRY
+NdrFixedArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+void RPC_ENTRY
+NdrConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+void RPC_ENTRY
+NdrEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count pointer */
+
+void RPC_ENTRY
+NdrByteCountPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+void RPC_ENTRY
+NdrXmitOrRepAsBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+void RPC_ENTRY
+NdrUserMarshalBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+void RPC_ENTRY
+NdrInterfacePointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+// Context Handle size
+//
+void RPC_ENTRY
+NdrContextHandleSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Memory sizing routines
+ */
+
+unsigned long RPC_ENTRY
+NdrPointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+unsigned long RPC_ENTRY
+NdrSimpleStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantVaryingStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrHardStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrComplexStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+unsigned long RPC_ENTRY
+NdrFixedArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrComplexArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+unsigned long RPC_ENTRY
+NdrConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrNonConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+unsigned long RPC_ENTRY
+NdrEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrNonEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+unsigned long RPC_ENTRY
+NdrXmitOrRepAsMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+unsigned long RPC_ENTRY
+NdrUserMarshalMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+unsigned long RPC_ENTRY
+NdrInterfacePointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Freeing routines
+ */
+
+void RPC_ENTRY
+NdrPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+void RPC_ENTRY
+NdrSimpleStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrHardStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+void RPC_ENTRY
+NdrFixedArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+void RPC_ENTRY
+NdrEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count */
+
+void RPC_ENTRY
+NdrByteCountPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+void RPC_ENTRY
+NdrXmitOrRepAsFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+void RPC_ENTRY
+NdrUserMarshalFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+void RPC_ENTRY
+NdrInterfacePointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Endian conversion routine.
+ */
+
+void RPC_ENTRY
+NdrConvert2(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ long NumberParams
+ );
+
+void RPC_ENTRY
+NdrConvert(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+#define USER_MARSHAL_FC_BYTE 1
+#define USER_MARSHAL_FC_CHAR 2
+#define USER_MARSHAL_FC_SMALL 3
+#define USER_MARSHAL_FC_USMALL 4
+#define USER_MARSHAL_FC_WCHAR 5
+#define USER_MARSHAL_FC_SHORT 6
+#define USER_MARSHAL_FC_USHORT 7
+#define USER_MARSHAL_FC_LONG 8
+#define USER_MARSHAL_FC_ULONG 9
+#define USER_MARSHAL_FC_FLOAT 10
+#define USER_MARSHAL_FC_HYPER 11
+#define USER_MARSHAL_FC_DOUBLE 12
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalSimpleTypeConvert(
+ unsigned long * pFlags,
+ unsigned char * pBuffer,
+ unsigned char FormatChar
+ );
+
+/*
+ * Auxilary routines
+ */
+
+void RPC_ENTRY
+NdrClientInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+void RPC_ENTRY
+NdrServerInitializePartial(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned long RequestedBufferSize
+ );
+
+void RPC_ENTRY
+NdrClientInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitializeUnmarshall (
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PRPC_MESSAGE pRpcMsg
+ );
+
+void RPC_ENTRY
+NdrServerInitializeMarshall (
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNsGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrGetPipeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle );
+
+void RPC_ENTRY
+NdrGetPartialBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR* pBufferEnd
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNsSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pBufferEnd,
+ RPC_BINDING_HANDLE __RPC_FAR * pAutoHandle
+ );
+
+void RPC_ENTRY
+NdrPipeSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_PIPE_DESC * pPipeDesc
+ );
+
+void RPC_ENTRY
+NdrFreeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+/*
+ * Pipe specific calls
+ */
+
+void RPC_ENTRY
+NdrPipesInitialize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pParamDesc,
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc,
+ NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg,
+ char __RPC_FAR * pStackTop,
+ unsigned long NumberParams );
+
+void
+NdrMarkNextActivePipe(
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc,
+ unsigned int DirectionMask );
+
+void RPC_ENTRY
+NdrPipePull(
+ char __RPC_FAR * pState,
+ void __RPC_FAR * buf,
+ unsigned long esize,
+ unsigned long __RPC_FAR * ecount );
+
+void RPC_ENTRY
+NdrPipePush(
+ char __RPC_FAR * pState,
+ void __RPC_FAR * buf,
+ unsigned long ecount );
+
+void RPC_ENTRY
+NdrIsAppDoneWithPipes(
+ NDR_PIPE_DESC * pPipeDesc
+ );
+
+void RPC_ENTRY
+NdrPipesDone(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+/*
+ * Interpeter calls.
+ */
+
+/* client */
+
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+NdrClientCall2(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+NdrClientCall(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+/* server */
+typedef enum {
+ STUB_UNMARSHAL,
+ STUB_CALL_SERVER,
+ STUB_MARSHAL,
+ STUB_CALL_SERVER_NO_HRESULT
+}STUB_PHASE;
+
+typedef enum {
+ PROXY_CALCSIZE,
+ PROXY_GETBUFFER,
+ PROXY_MARSHAL,
+ PROXY_SENDRECEIVE,
+ PROXY_UNMARSHAL
+}PROXY_PHASE;
+
+long RPC_ENTRY
+NdrStubCall2(
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long __RPC_FAR * pdwStubPhase
+ );
+
+void RPC_ENTRY
+NdrServerCall2(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+long RPC_ENTRY
+NdrStubCall (
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long __RPC_FAR * pdwStubPhase
+ );
+
+void RPC_ENTRY
+NdrServerCall(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+int RPC_ENTRY
+NdrServerUnmarshall(
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ void __RPC_FAR * pParamList
+ );
+
+void RPC_ENTRY
+NdrServerMarshall(
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Comm and Fault status */
+
+RPC_STATUS RPC_ENTRY
+NdrMapCommAndFaultStatus(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long __RPC_FAR * pCommStatus,
+ unsigned long __RPC_FAR * pFaultStatus,
+ RPC_STATUS Status
+ );
+
+/* Helper routines */
+
+int RPC_ENTRY
+NdrSH_UPDecision(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ RPC_BUFPTR pBuffer
+ );
+
+int RPC_ENTRY
+NdrSH_TLUPDecision(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem
+ );
+
+int RPC_ENTRY
+NdrSH_TLUPDecisionBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem
+ );
+
+int RPC_ENTRY
+NdrSH_IfAlloc(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+int RPC_ENTRY
+NdrSH_IfAllocRef(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+int RPC_ENTRY
+NdrSH_IfAllocSet(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_IfCopy(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_IfAllocCopy(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+unsigned long RPC_ENTRY
+NdrSH_Copy(
+ unsigned char __RPC_FAR * pStubMsg,
+ unsigned char __RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+void RPC_ENTRY
+NdrSH_IfFree(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR * pPtr );
+
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_StringMarshall(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned long Count,
+ int Size );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_StringUnMarshall(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR *__RPC_FAR * pMemory,
+ int Size );
+
+/****************************************************************************
+ MIDL 2.0 memory package: rpc_ss_* rpc_sm_*
+ ****************************************************************************/
+
+typedef void __RPC_FAR * RPC_SS_THREAD_HANDLE;
+
+typedef void __RPC_FAR * __RPC_API
+RPC_CLIENT_ALLOC (
+ IN size_t Size
+ );
+
+typedef void __RPC_API
+RPC_CLIENT_FREE (
+ IN void __RPC_FAR * Ptr
+ );
+
+/*++
+ RpcSs* package
+--*/
+
+void __RPC_FAR * RPC_ENTRY
+RpcSsAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+RpcSsDisableAllocate (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsEnableAllocate (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+RPC_SS_THREAD_HANDLE RPC_ENTRY
+RpcSsGetThreadHandle (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsSetClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
+ );
+
+void RPC_ENTRY
+RpcSsSetThreadHandle (
+ IN RPC_SS_THREAD_HANDLE Id
+ );
+
+void RPC_ENTRY
+RpcSsSwapClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
+ OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
+ OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
+ );
+
+/*++
+ RpcSm* package
+--*/
+
+void __RPC_FAR * RPC_ENTRY
+RpcSmAllocate (
+ IN size_t Size,
+ OUT RPC_STATUS __RPC_FAR * pStatus
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmClientFree (
+ IN void __RPC_FAR * pNodeToFree
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmDestroyClientContext (
+ IN void __RPC_FAR * __RPC_FAR * ContextHandle
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmDisableAllocate (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmEnableAllocate (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+RPC_SS_THREAD_HANDLE RPC_ENTRY
+RpcSmGetThreadHandle (
+ OUT RPC_STATUS __RPC_FAR * pStatus
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSetClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSetThreadHandle (
+ IN RPC_SS_THREAD_HANDLE Id
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSwapClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
+ OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
+ OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
+ );
+
+/*++
+ Ndr stub entry points
+--*/
+
+void RPC_ENTRY
+NdrRpcSsEnableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void RPC_ENTRY
+NdrRpcSsDisableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void RPC_ENTRY
+NdrRpcSmSetClientToOsf(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void __RPC_FAR * RPC_ENTRY
+NdrRpcSmClientAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrRpcSmClientFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+void __RPC_FAR * RPC_ENTRY
+NdrRpcSsDefaultAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrRpcSsDefaultFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+/****************************************************************************
+ end of memory package: rpc_ss_* rpc_sm_*
+ ****************************************************************************/
+
+/****************************************************************************
+ * Full Pointer APIs
+ ****************************************************************************/
+
+PFULL_PTR_XLAT_TABLES RPC_ENTRY
+NdrFullPointerXlatInit(
+ unsigned long NumberOfPointers,
+ XLAT_SIDE XlatSide
+ );
+
+void RPC_ENTRY
+NdrFullPointerXlatFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables
+ );
+
+int RPC_ENTRY
+NdrFullPointerQueryPointer(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ void __RPC_FAR * pPointer,
+ unsigned char QueryType,
+ unsigned long __RPC_FAR * pRefId
+ );
+
+int RPC_ENTRY
+NdrFullPointerQueryRefId(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ unsigned long RefId,
+ unsigned char QueryType,
+ void __RPC_FAR *__RPC_FAR * ppPointer
+ );
+
+void RPC_ENTRY
+NdrFullPointerInsertRefId(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ unsigned long RefId,
+ void __RPC_FAR * pPointer
+ );
+
+int RPC_ENTRY
+NdrFullPointerFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ void __RPC_FAR * Pointer
+ );
+
+void __RPC_FAR * RPC_ENTRY
+NdrAllocate(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ size_t Len
+ );
+
+void RPC_ENTRY
+NdrClearOutParameters(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ void __RPC_FAR * ArgAddr
+ );
+
+
+/****************************************************************************
+ * Proxy APIs
+ ****************************************************************************/
+
+void __RPC_FAR * RPC_ENTRY
+NdrOleAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrOleFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+#ifdef CONST_VTABLE
+#define CONST_VTBL const
+#else
+#define CONST_VTBL
+#endif
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for DOS, Windows and Mac.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
+#pragma pack()
+#endif
+
+#endif /* __RPCNDR_H__ */
+
+
+
+
+
diff --git a/public/sdk/inc/rpcnsi.h b/public/sdk/inc/rpcnsi.h
new file mode 100644
index 000000000..362b5bdb4
--- /dev/null
+++ b/public/sdk/inc/rpcnsi.h
@@ -0,0 +1,509 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcnsi.h
+
+Abstract:
+
+ This file contains the types and function definitions to use the
+ Name Service Independent APIs.
+
+--*/
+
+#ifndef __RPCNSI_H__
+#define __RPCNSI_H__
+
+typedef void __RPC_FAR * RPC_NS_HANDLE;
+
+#define RPC_C_NS_SYNTAX_DEFAULT 0
+#define RPC_C_NS_SYNTAX_DCE 3
+
+#define RPC_C_PROFILE_DEFAULT_ELT 0
+#define RPC_C_PROFILE_ALL_ELT 1
+#define RPC_C_PROFILE_MATCH_BY_IF 2
+#define RPC_C_PROFILE_MATCH_BY_MBR 3
+#define RPC_C_PROFILE_MATCH_BY_BOTH 4
+
+#define RPC_C_NS_DEFAULT_EXP_AGE -1
+
+/* Server APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingExportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN RPC_BINDING_VECTOR __RPC_FAR * BindingVec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingUnexportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingExportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN RPC_BINDING_VECTOR __RPC_FAR * BindingVec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingUnexportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+#endif
+
+/* Client APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned long BindingMaxCount OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned long BindingMaxCount OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupNext(
+ IN RPC_NS_HANDLE LookupContext,
+ OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVec
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+
+/* Group APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupDeleteA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrAddA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrRemoveA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqBeginA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqNextA(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupDeleteW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrAddW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrRemoveW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqBeginW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqNextW(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Profile APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileDeleteA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltAddA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName,
+ IN unsigned long Priority,
+ IN unsigned char __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltRemoveA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqBeginA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqNextA(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName,
+ OUT unsigned long __RPC_FAR * Priority,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileDeleteW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltAddW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName,
+ IN unsigned long Priority,
+ IN unsigned short __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltRemoveW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqBeginW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqNextW(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName,
+ OUT unsigned long __RPC_FAR * Priority,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Entry object APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqNext(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT UUID __RPC_FAR * ObjUuid
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Management and MISC APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryExpandNameA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ExpandedName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtBindingUnexportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryCreateA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryDeleteA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryInqIfIdsA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVec
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtHandleSetExpAge(
+ IN RPC_NS_HANDLE NsHandle,
+ IN unsigned long ExpirationAge
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtInqExpAge(
+ OUT unsigned long __RPC_FAR * ExpirationAge
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtSetExpAge(
+ IN unsigned long ExpirationAge
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryExpandNameW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ExpandedName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtBindingUnexportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryCreateW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryDeleteW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryInqIfIdsW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVec
+ );
+
+#endif
+
+/* Client API's implemented in wrappers. */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportNext(
+ IN RPC_NS_HANDLE ImportContext,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingSelect(
+ IN OUT RPC_BINDING_VECTOR __RPC_FAR * BindingVec,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#ifdef UNICODE
+
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginW
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginW
+#define RpcNsBindingExport RpcNsBindingExportW
+#define RpcNsBindingUnexport RpcNsBindingUnexportW
+#define RpcNsGroupDelete RpcNsGroupDeleteW
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddW
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveW
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginW
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextW
+#define RpcNsEntryExpandName RpcNsEntryExpandNameW
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginW
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportW
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateW
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteW
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsW
+#define RpcNsProfileDelete RpcNsProfileDeleteW
+#define RpcNsProfileEltAdd RpcNsProfileEltAddW
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveW
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginW
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextW
+
+#else
+
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginA
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginA
+#define RpcNsBindingExport RpcNsBindingExportA
+#define RpcNsBindingUnexport RpcNsBindingUnexportA
+#define RpcNsGroupDelete RpcNsGroupDeleteA
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddA
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveA
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginA
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextA
+#define RpcNsEntryExpandName RpcNsEntryExpandNameA
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginA
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportA
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateA
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteA
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsA
+#define RpcNsProfileDelete RpcNsProfileDeleteA
+#define RpcNsProfileEltAdd RpcNsProfileEltAddA
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveA
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginA
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextA
+
+#endif /* UNICODE */
+
+#endif /* __RPCNSI_H__ */
diff --git a/public/sdk/inc/rpcnsip.h b/public/sdk/inc/rpcnsip.h
new file mode 100644
index 000000000..0db0140b0
--- /dev/null
+++ b/public/sdk/inc/rpcnsip.h
@@ -0,0 +1,72 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcnsip.h
+
+Abstract:
+
+ This file contains the types and function definitions to use the
+ to implement the autohandle features of the runtime.
+
+--*/
+
+#ifndef __RPCNSIP_H__
+#define __RPCNSIP_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct
+{
+ RPC_NS_HANDLE LookupContext;
+ RPC_BINDING_HANDLE ProposedHandle;
+ RPC_BINDING_VECTOR * Bindings;
+
+} RPC_IMPORT_CONTEXT_P, * PRPC_IMPORT_CONTEXT_P;
+
+
+/* Stub Auto Binding routines. */
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsGetBuffer(
+ IN PRPC_MESSAGE Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsSendReceive(
+ IN PRPC_MESSAGE Message,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Handle
+ );
+
+void RPC_ENTRY
+I_RpcNsRaiseException(
+ IN PRPC_MESSAGE Message,
+ IN RPC_STATUS Status
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcReBindBuffer(
+ IN PRPC_MESSAGE Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_NsServerBindSearch(
+ );
+
+RPC_STATUS RPC_ENTRY
+I_NsClientBindSearch(
+ );
+
+void RPC_ENTRY
+I_NsClientBindDone(
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RPCNSIP_H__ */
diff --git a/public/sdk/inc/rpcnterr.h b/public/sdk/inc/rpcnterr.h
new file mode 100644
index 000000000..9dfa4fca5
--- /dev/null
+++ b/public/sdk/inc/rpcnterr.h
@@ -0,0 +1,33 @@
+/*********************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1987-1996 **/
+/** **/
+/** Rpc Error Codes from the compiler and runtime **/
+/** **/
+/*********************************************************/
+
+/*
+If you change this file, you must also change rpcerr.h.
+*/
+
+#ifndef __RPCNTERR_H__
+#define __RPCNTERR_H__
+
+#define RPC_S_OK ERROR_SUCCESS
+#define RPC_S_INVALID_ARG ERROR_INVALID_PARAMETER
+#define RPC_S_OUT_OF_MEMORY ERROR_OUTOFMEMORY
+#define RPC_S_OUT_OF_THREADS ERROR_MAX_THRDS_REACHED
+#define RPC_S_INVALID_LEVEL ERROR_INVALID_PARAMETER
+#define RPC_S_BUFFER_TOO_SMALL ERROR_INSUFFICIENT_BUFFER
+#define RPC_S_INVALID_SECURITY_DESC ERROR_INVALID_SECURITY_DESCR
+#define RPC_S_ACCESS_DENIED ERROR_ACCESS_DENIED
+#define RPC_S_SERVER_OUT_OF_MEMORY ERROR_NOT_ENOUGH_SERVER_MEMORY
+
+#define RPC_X_NO_MEMORY RPC_S_OUT_OF_MEMORY
+#define RPC_X_INVALID_BOUND RPC_S_INVALID_BOUND
+#define RPC_X_INVALID_TAG RPC_S_INVALID_TAG
+#define RPC_X_ENUM_VALUE_TOO_LARGE RPC_X_ENUM_VALUE_OUT_OF_RANGE
+#define RPC_X_SS_CONTEXT_MISMATCH ERROR_INVALID_HANDLE
+#define RPC_X_INVALID_BUFFER ERROR_INVALID_USER_BUFFER
+
+#endif /* __RPCNTERR_H__ */
diff --git a/public/sdk/inc/rpcproxy.h b/public/sdk/inc/rpcproxy.h
new file mode 100644
index 000000000..a10429632
--- /dev/null
+++ b/public/sdk/inc/rpcproxy.h
@@ -0,0 +1,586 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcproxy.h
+
+Abstract:
+
+ Definitions for rpc proxy stubs.
+
+Compiler switches:
+
+ -DREGISTER_PROXY_DLL
+ Generates DllMain, DllRegisterServer, and DllUnregisterServer functions
+ for automatically registering a proxy DLL.
+
+ -DPROXY_CLSID=clsid
+ Specifies a class ID to be used by the proxy DLL.
+
+ -DPROXY_CLSID_IS={0x6f11fe5c,0x2fc5,0x101b,{0x9e,0x45,0x00,0x00,0x0b,0x65,0xc7,0xef}}
+ Specifies the value of the class ID to be used by the proxy DLL.
+
+ -DNT35_STRICT
+ Specifies that the target platform is Windows NT 3.5. This switch disables
+ the new functions added after the Windows NT 3.5 release.
+
+--*/
+
+#ifndef __RPCPROXY_H__
+#define __RPCPROXY_H__
+#define __midl_proxy
+
+#ifndef INC_OLE2
+#define INC_OLE2
+#endif
+
+#if defined(WIN32) || defined(_MPPC_)
+
+//We need to define REFIID, REFCLSID, REFGUID, & REFFMTID here so that the
+//proxy code won't get the const GUID *const definition.
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#if !defined( __IID_DEFINED__ )
+ #define __IID_DEFINED__
+
+ typedef GUID IID;
+ typedef IID *LPIID;
+ #define IID_NULL GUID_NULL
+ #define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
+ typedef GUID CLSID;
+ typedef CLSID *LPCLSID;
+ #define CLSID_NULL GUID_NULL
+ #define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
+ typedef GUID FMTID;
+ typedef FMTID *LPFMTID;
+ #define FMTID_NULL GUID_NULL
+ #define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)
+
+ #ifndef _REFGUID_DEFINED
+ #define _REFGUID_DEFINED
+ typedef const GUID *REFGUID;
+ #endif // !_REFGUID_DEFINED
+
+ #ifndef _REFIID_DEFINED
+ #define _REFIID_DEFINED
+ typedef const IID *REFIID;
+ #endif // !_REFIID_DEFINED
+
+ #ifndef _REFCLSID_DEFINED
+ #define _REFCLSID_DEFINED
+ typedef const CLSID *REFCLSID;
+ #endif // !_REFCLSID_DEFINED
+
+ #ifndef _REFFMTID_DEFINED
+ #define _REFFMTID_DEFINED
+ typedef const FMTID *REFFMTID;
+ #endif // !_REFFMTID_DEFINED
+
+#endif // !__IID_DEFINED__
+
+// forward declarations
+struct tagCInterfaceStubVtbl;
+struct tagCInterfaceProxyVtbl;
+
+typedef struct tagCInterfaceStubVtbl * PCInterfaceStubVtblList;
+typedef struct tagCInterfaceProxyVtbl * PCInterfaceProxyVtblList;
+typedef const char * PCInterfaceName;
+typedef int __stdcall IIDLookupRtn( const IID * pIID, int * pIndex );
+typedef IIDLookupRtn * PIIDLookup;
+
+// pointers to arrays of CInterfaceProxyVtbl's and CInterfaceStubVtbls
+typedef struct tagProxyFileInfo
+{
+ const PCInterfaceProxyVtblList *pProxyVtblList;
+ const PCInterfaceStubVtblList *pStubVtblList;
+ const PCInterfaceName * pNamesArray;
+ const IID ** pDelegatedIIDs;
+ const PIIDLookup pIIDLookupRtn;
+ unsigned short TableSize;
+ unsigned short TableVersion;
+ unsigned long Filler1;
+ unsigned long Filler2;
+ unsigned long Filler3;
+ unsigned long Filler4;
+}ProxyFileInfo;
+
+// extended info with list of interface names
+typedef ProxyFileInfo ExtendedProxyFileInfo;
+
+#include <rpc.h>
+#include <rpcndr.h>
+#include <string.h>
+#include <memory.h>
+
+typedef struct tagCInterfaceProxyHeader
+{
+ //
+ // New fields should be added here, at the beginning of the structure.
+ //
+#ifdef USE_STUBLESS_PROXY
+ const void * pStublessProxyInfo;
+#endif
+ const IID * piid;
+} CInterfaceProxyHeader;
+
+// Macro used for ANSI compatible stubs.
+
+#if defined(_MPPC_)
+#define CINTERFACE_PROXY_VTABLE( n ) \
+struct \
+{ \
+ CInterfaceProxyHeader header; \
+ void * pDummyEntryForPowerMac; \
+ void *Vtbl[ n ]; \
+}
+#else
+#define CINTERFACE_PROXY_VTABLE( n ) \
+struct \
+{ \
+ CInterfaceProxyHeader header; \
+ void *Vtbl[ n ]; \
+}
+#endif
+
+#pragma warning( disable:4200 )
+typedef struct tagCInterfaceProxyVtbl
+{
+ CInterfaceProxyHeader header;
+#if defined(_MPPC_)
+ void * pDummyEntryForPowerMac;
+#endif
+#if defined( _MSC_VER )
+ void *Vtbl[];
+#else
+ void *Vtbl[1];
+#endif
+} CInterfaceProxyVtbl;
+#pragma warning( default:4200 )
+
+typedef
+void
+(__RPC_STUB __RPC_FAR * PRPC_STUB_FUNCTION) (
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer * _pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD __RPC_FAR *pdwStubPhase);
+
+typedef struct tagCInterfaceStubHeader
+{
+ //New fields should be added here, at the beginning of the structure.
+ const IID *piid;
+ const MIDL_SERVER_INFO *pServerInfo;
+ unsigned long DispatchTableCount;
+ const PRPC_STUB_FUNCTION *pDispatchTable;
+} CInterfaceStubHeader;
+
+typedef struct tagCInterfaceStubVtbl
+{
+ CInterfaceStubHeader header;
+ IRpcStubBufferVtbl Vtbl;
+} CInterfaceStubVtbl;
+
+typedef struct tagCStdStubBuffer
+{
+ const struct IRpcStubBufferVtbl * lpVtbl; //Points to Vtbl field in CInterfaceStubVtbl.
+ long RefCount;
+ struct IUnknown * pvServerObject;
+} CStdStubBuffer;
+
+typedef struct tagCStdPSFactoryBuffer
+{
+ const IPSFactoryBufferVtbl *lpVtbl;
+ long RefCount;
+ const ProxyFileInfo ** pProxyFileList;
+ long Filler1; //Reserved for future use.
+} CStdPSFactoryBuffer;
+
+void RPC_ENTRY
+NdrProxyInitialize(
+ void * This,
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum );
+
+void RPC_ENTRY
+NdrProxyGetBuffer(
+ void * This,
+ PMIDL_STUB_MESSAGE pStubMsg);
+
+void RPC_ENTRY
+NdrProxySendReceive(
+ void *This,
+ MIDL_STUB_MESSAGE *pStubMsg);
+
+void RPC_ENTRY
+NdrProxyFreeBuffer(
+ void *This,
+ MIDL_STUB_MESSAGE *pStubMsg);
+
+HRESULT RPC_ENTRY
+NdrProxyErrorHandler(
+ DWORD dwExceptionCode);
+
+void RPC_ENTRY
+NdrStubInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ IRpcChannelBuffer * pRpcChannelBuffer);
+
+void __RPC_STUB NdrStubForwardingFunction(
+ IN IRpcStubBuffer * This,
+ IN IRpcChannelBuffer * pChannel,
+ IN PRPC_MESSAGE pmsg,
+ OUT DWORD __RPC_FAR * pdwStubPhase);
+
+void RPC_ENTRY
+NdrStubGetBuffer(
+ IRpcStubBuffer * This,
+ IRpcChannelBuffer * pRpcChannelBuffer,
+ PMIDL_STUB_MESSAGE pStubMsg);
+
+HRESULT RPC_ENTRY
+NdrStubErrorHandler(
+ DWORD dwExceptionCode);
+
+HRESULT STDMETHODCALLTYPE
+CStdStubBuffer_QueryInterface(
+ IRpcStubBuffer *This,
+ REFIID riid,
+ void **ppvObject);
+
+ULONG STDMETHODCALLTYPE
+CStdStubBuffer_AddRef(
+ IRpcStubBuffer *This);
+
+ULONG STDMETHODCALLTYPE
+CStdStubBuffer_Release(
+ IRpcStubBuffer *This);
+
+ULONG STDMETHODCALLTYPE
+NdrCStdStubBuffer_Release(
+ IRpcStubBuffer *This,
+ IPSFactoryBuffer * pPSF);
+
+HRESULT STDMETHODCALLTYPE
+CStdStubBuffer_Connect(
+ IRpcStubBuffer *This,
+ IUnknown *pUnkServer);
+
+void STDMETHODCALLTYPE
+CStdStubBuffer_Disconnect(
+ IRpcStubBuffer *This);
+
+HRESULT STDMETHODCALLTYPE
+CStdStubBuffer_Invoke(
+ IRpcStubBuffer *This,
+ RPCOLEMESSAGE *pRpcMsg,
+ IRpcChannelBuffer *pRpcChannelBuffer);
+
+IRpcStubBuffer * STDMETHODCALLTYPE
+CStdStubBuffer_IsIIDSupported(
+ IRpcStubBuffer *This,
+ REFIID riid);
+
+ULONG STDMETHODCALLTYPE
+CStdStubBuffer_CountRefs(
+ IRpcStubBuffer *This);
+
+HRESULT STDMETHODCALLTYPE
+CStdStubBuffer_DebugServerQueryInterface(
+ IRpcStubBuffer *This,
+ void **ppv);
+
+void STDMETHODCALLTYPE
+CStdStubBuffer_DebugServerRelease(
+ IRpcStubBuffer *This,
+ void *pv);
+
+#if defined(_MPPC_)
+#define CStdStubBuffer_METHODS \
+ 0, /* a PowerMac dummy */ \
+ CStdStubBuffer_QueryInterface,\
+ CStdStubBuffer_AddRef, \
+ CStdStubBuffer_Release, \
+ CStdStubBuffer_Connect, \
+ CStdStubBuffer_Disconnect, \
+ CStdStubBuffer_Invoke, \
+ CStdStubBuffer_IsIIDSupported, \
+ CStdStubBuffer_CountRefs, \
+ CStdStubBuffer_DebugServerQueryInterface, \
+ CStdStubBuffer_DebugServerRelease
+#else
+#define CStdStubBuffer_METHODS \
+ CStdStubBuffer_QueryInterface,\
+ CStdStubBuffer_AddRef, \
+ CStdStubBuffer_Release, \
+ CStdStubBuffer_Connect, \
+ CStdStubBuffer_Disconnect, \
+ CStdStubBuffer_Invoke, \
+ CStdStubBuffer_IsIIDSupported, \
+ CStdStubBuffer_CountRefs, \
+ CStdStubBuffer_DebugServerQueryInterface, \
+ CStdStubBuffer_DebugServerRelease
+#endif
+
+//+-------------------------------------------------------------------------
+//
+// Macro definitions for the proxy file
+//
+//--------------------------------------------------------------------------
+
+#define IID_GENERIC_CHECK_IID(name,pIID,index) memcmp( pIID, name##_ProxyVtblList[ index ]->header.piid, 16 )
+
+#define IID_BS_LOOKUP_SETUP int result, low=-1;
+
+#define IID_BS_LOOKUP_INITIAL_TEST(name, sz, split) \
+ if ( ( result = name##_CHECK_IID( split ) ) > 0 ) \
+ { low = sz - split; } \
+ else if ( !result ) \
+ { low = split; goto found_label; }
+
+#define IID_BS_LOOKUP_NEXT_TEST(name, split ) \
+ if ( ( result = name##_CHECK_IID( low + split )) >= 0 ) \
+ { low = low + split; if ( !result ) goto found_label; }
+
+#define IID_BS_LOOKUP_RETURN_RESULT(name, sz, index ) \
+ low = low + 1; \
+ if ( ( low >= sz ) || (result = name##_CHECK_IID( low ) )) goto not_found_label; \
+ found_label: (index) = low; return 1; \
+ not_found_label: return 0;
+
+//+-------------------------------------------------------------------------
+//
+// Macro and routine definitions for the dlldata file
+//
+//--------------------------------------------------------------------------
+
+/****************************************************************************
+ * Proxy Dll APIs
+ ****************************************************************************/
+
+HRESULT RPC_ENTRY
+NdrDllGetClassObject (
+ IN REFCLSID rclsid,
+ IN REFIID riid,
+ OUT void ** ppv,
+ IN const ProxyFileInfo ** pProxyFileList,
+ IN const CLSID * pclsid,
+ IN CStdPSFactoryBuffer * pPSFactoryBuffer);
+
+HRESULT RPC_ENTRY
+NdrDllCanUnloadNow(
+ IN CStdPSFactoryBuffer * pPSFactoryBuffer);
+
+/*************************************************************************
+The following new functions were added after the Windows NT 3.5 release.
+Programs intended to run on Windows NT 3.5 should define NT35_STRICT to
+ensure that no new functions are used.
+*************************************************************************/
+#ifndef NT35_STRICT
+
+HRESULT RPC_ENTRY NdrDllRegisterProxy(
+ IN HMODULE hDll,
+ IN const ProxyFileInfo ** pProxyFileList,
+ IN const CLSID * pclsid);
+
+HRESULT RPC_ENTRY NdrDllUnregisterProxy(
+ IN HMODULE hDll,
+ IN const ProxyFileInfo ** pProxyFileList,
+ IN const CLSID * pclsid);
+
+
+#define REGISTER_PROXY_DLL_ROUTINES(pProxyFileList, pClsID) \
+ \
+ HINSTANCE hProxyDll = 0; \
+ \
+ /*DllMain saves the DLL module handle for later use by DllRegisterServer */ \
+ BOOL WINAPI DllMain( \
+ HINSTANCE hinstDLL, \
+ DWORD fdwReason, \
+ LPVOID lpvReserved) \
+ { \
+ if(fdwReason == DLL_PROCESS_ATTACH) \
+ hProxyDll = hinstDLL; \
+ return TRUE; \
+ } \
+ \
+ /* DllRegisterServer registers the interfaces contained in the proxy DLL. */ \
+ HRESULT STDAPICALLTYPE DllRegisterServer() \
+ { \
+ return NdrDllRegisterProxy(hProxyDll, pProxyFileList, pClsID); \
+ } \
+ \
+ /* DllUnregisterServer unregisters the interfaces contained in the proxy DLL. */ \
+ HRESULT STDAPICALLTYPE DllUnregisterServer() \
+ { \
+ return NdrDllUnregisterProxy(hProxyDll, pProxyFileList, pClsID); \
+ }
+
+//Delegation support.
+#define STUB_FORWARDING_FUNCTION NdrStubForwardingFunction
+
+ULONG STDMETHODCALLTYPE
+CStdStubBuffer2_Release(IRpcStubBuffer *This);
+
+ULONG STDMETHODCALLTYPE
+NdrCStdStubBuffer2_Release(IRpcStubBuffer *This,IPSFactoryBuffer * pPSF);
+
+#define CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0
+
+#endif //NT35_STRICT
+/*************************************************************************
+End of new functions.
+*************************************************************************/
+
+// PROXY_CLSID has precedence over PROXY_CLSID_IS
+
+#ifdef PROXY_CLSID
+
+#define CLSID_PSFACTORYBUFFER extern CLSID PROXY_CLSID;
+
+#else // PROXY_CLSID
+
+#ifdef PROXY_CLSID_IS
+#define CLSID_PSFACTORYBUFFER const CLSID CLSID_PSFactoryBuffer = PROXY_CLSID_IS;
+#define PROXY_CLSID CLSID_PSFactoryBuffer
+#else // PROXY_CLSID_IS
+#define CLSID_PSFACTORYBUFFER
+#endif //PROXY_CLSID_IS
+
+#endif //PROXY_CLSID
+
+// if the user specified an override for the class id, it is
+// PROXY_CLSID at this point
+
+#ifndef PROXY_CLSID
+#define GET_DLL_CLSID \
+ ( aProxyFileList[0]->pStubVtblList[0] != 0 ? \
+ aProxyFileList[0]->pStubVtblList[0]->header.piid : 0)
+#else //PROXY_CLSID
+#define GET_DLL_CLSID &PROXY_CLSID
+#endif //PROXY_CLSID
+
+
+
+
+#define EXTERN_PROXY_FILE(name) \
+ EXTERN_C const ProxyFileInfo name##_ProxyFileInfo;
+
+#define PROXYFILE_LIST_START \
+ const ProxyFileInfo * aProxyFileList[] = {
+
+#define REFERENCE_PROXY_FILE(name) \
+ & name##_ProxyFileInfo
+
+#define PROXYFILE_LIST_END \
+ 0 };
+
+// return pointers to the class information
+
+#define DLLDATA_GETPROXYDLLINFO(pPFList,pClsid) \
+ void RPC_ENTRY GetProxyDllInfo( const ProxyFileInfo*** pInfo, const CLSID ** pId ) \
+ { \
+ *pInfo = pPFList; \
+ *pId = pClsid; \
+ };
+
+// ole entry points:
+#define DLLGETCLASSOBJECTROUTINE(pPFlist, pClsid,pFactory) \
+ HRESULT STDAPICALLTYPE DllGetClassObject ( \
+ REFCLSID rclsid, \
+ REFIID riid, \
+ void ** ppv ) \
+ { \
+ return \
+ NdrDllGetClassObject(rclsid,riid,ppv,pPFlist,pClsid,pFactory ); \
+ }
+
+#define DLLCANUNLOADNOW(pFactory) \
+ HRESULT STDAPICALLTYPE DllCanUnloadNow() \
+ { \
+ return NdrDllCanUnloadNow( pFactory ); \
+ }
+
+
+#define DLLDUMMYPURECALL \
+ void __cdecl _purecall(void) \
+ { \
+ }
+
+#define CSTDSTUBBUFFERRELEASE(pFactory) \
+ULONG STDMETHODCALLTYPE CStdStubBuffer_Release(IRpcStubBuffer *This) \
+ { \
+ return NdrCStdStubBuffer_Release(This,(IPSFactoryBuffer *)pFactory); \
+ } \
+
+#ifdef PROXY_DELEGATION
+#define CSTDSTUBBUFFER2RELEASE(pFactory) \
+ULONG STDMETHODCALLTYPE CStdStubBuffer2_Release(IRpcStubBuffer *This) \
+ { \
+ return NdrCStdStubBuffer2_Release(This,(IPSFactoryBuffer *)pFactory); \
+ }
+#else
+#define CSTDSTUBBUFFER2RELEASE(pFactory)
+#endif //PROXY_DELEGATION
+
+
+#ifdef REGISTER_PROXY_DLL
+#define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID ) REGISTER_PROXY_DLL_ROUTINES(pProxyFileList,pClsID )
+#else
+#define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID )
+#endif //REGISTER_PROXY_DLL
+
+
+// the dll entry points that must be defined
+#define DLLDATA_ROUTINES(pProxyFileList,pClsID ) \
+ \
+ CLSID_PSFACTORYBUFFER \
+ \
+ CStdPSFactoryBuffer gPFactory = {0,0,0,0}; \
+ \
+ DLLDATA_GETPROXYDLLINFO(pProxyFileList,pClsID) \
+ \
+ DLLGETCLASSOBJECTROUTINE(pProxyFileList,pClsID,&gPFactory) \
+ \
+ DLLCANUNLOADNOW(&gPFactory) \
+ \
+ CSTDSTUBBUFFERRELEASE(&gPFactory) \
+ \
+ CSTDSTUBBUFFER2RELEASE(&gPFactory) \
+ \
+ DLLDUMMYPURECALL \
+ \
+ DLLREGISTRY_ROUTINES(pProxyFileList, pClsID) \
+ \
+
+ // more code goes here...
+
+
+#define DLLDATA_STANDARD_ROUTINES \
+ DLLDATA_ROUTINES( (const ProxyFileInfo**) pProxyFileList, &CLSID_PSFactoryBuffer ) \
+
+#else // !defined(__RPC_DOS__) && !defined(__RPC_WIN16__)
+
+//+-------------------------------------------------------------------------
+//
+// 16-bit definitions (all empty)
+//
+//--------------------------------------------------------------------------
+
+#endif // WIN32 or _MPPC_
+
+#endif // __RPCPROXY_H__
diff --git a/public/sdk/inc/rpcwdt.h b/public/sdk/inc/rpcwdt.h
new file mode 100644
index 000000000..58cdd1552
--- /dev/null
+++ b/public/sdk/inc/rpcwdt.h
@@ -0,0 +1,431 @@
+/*++
+
+Copyright (c) 1992 Microsoft Corporation
+
+Module Name:
+
+ rpcwdt.h
+
+Abstract:
+
+ Optional prototypes definitions for WDT.dll.
+
+Author:
+
+ RyszardK Mar 3, 1995
+
+Environment:
+
+ Win32
+
+Revision History:
+
+--*/
+
+#ifndef __RPCWDT_H__
+#define __RPCWDT_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Windows Data Type support */
+
+unsigned long __RPC_USER
+HGLOBAL_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ HGLOBAL __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HGLOBAL_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HGLOBAL __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HGLOBAL_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HGLOBAL __RPC_FAR * );
+
+void __RPC_USER
+HGLOBAL_UserFree(
+ unsigned long __RPC_FAR *,
+ HGLOBAL __RPC_FAR * );
+
+unsigned long __RPC_USER
+HBITMAP_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ HBITMAP __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HBITMAP_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HBITMAP __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HBITMAP_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HBITMAP __RPC_FAR * );
+
+void __RPC_USER
+HBITMAP_UserFree(
+ unsigned long __RPC_FAR *,
+ HBITMAP __RPC_FAR * );
+
+unsigned long __RPC_USER
+HENHMETAFILE_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ HENHMETAFILE __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HENHMETAFILE_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HENHMETAFILE __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HENHMETAFILE_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HENHMETAFILE __RPC_FAR * );
+
+void __RPC_USER
+HENHMETAFILE_UserFree(
+ unsigned long __RPC_FAR *,
+ HENHMETAFILE __RPC_FAR * );
+
+unsigned long __RPC_USER
+HMETAFILE_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ HMETAFILE __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HMETAFILE_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HMETAFILE __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HMETAFILE_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HMETAFILE __RPC_FAR * );
+
+void __RPC_USER
+HMETAFILE_UserFree(
+ unsigned long __RPC_FAR *,
+ HMETAFILE __RPC_FAR * );
+
+unsigned long __RPC_USER
+HMETAFILEPICT_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ HMETAFILEPICT __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HMETAFILEPICT_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HMETAFILEPICT __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HMETAFILEPICT_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HMETAFILEPICT __RPC_FAR * );
+
+void __RPC_USER
+HMETAFILEPICT_UserFree(
+ unsigned long __RPC_FAR *,
+ HMETAFILEPICT __RPC_FAR * );
+
+unsigned long __RPC_USER
+HPALETTE_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ HPALETTE __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HPALETTE_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HPALETTE __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HPALETTE_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HPALETTE __RPC_FAR * );
+
+void __RPC_USER
+HPALETTE_UserFree(
+ unsigned long __RPC_FAR *,
+ HPALETTE __RPC_FAR * );
+
+unsigned long __RPC_USER
+STGMEDIUM_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ STGMEDIUM __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+STGMEDIUM_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ STGMEDIUM __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+STGMEDIUM_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ STGMEDIUM __RPC_FAR * );
+
+void __RPC_USER
+STGMEDIUM_UserFree(
+ unsigned long __RPC_FAR *,
+ STGMEDIUM __RPC_FAR * );
+
+unsigned long __RPC_USER
+SNB_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ SNB __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+SNB_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ SNB __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+SNB_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ SNB __RPC_FAR * );
+
+/* OLE automation Data Type support */
+
+unsigned long __RPC_USER
+BSTR_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ BSTR __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+BSTR_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ BSTR __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+BSTR_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ BSTR __RPC_FAR * );
+
+void __RPC_USER
+BSTR_UserFree(
+ unsigned long __RPC_FAR *,
+ BSTR __RPC_FAR * );
+
+unsigned long __RPC_USER
+LPSAFEARRAY_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ LPSAFEARRAY __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+LPSAFEARRAY_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ LPSAFEARRAY __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+LPSAFEARRAY_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ LPSAFEARRAY __RPC_FAR * );
+
+void __RPC_USER
+LPSAFEARRAY_UserFree(
+ unsigned long __RPC_FAR *,
+ LPSAFEARRAY __RPC_FAR * );
+
+
+unsigned long __RPC_USER
+VARIANT_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ VARIANT __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+VARIANT_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ VARIANT __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+VARIANT_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ VARIANT __RPC_FAR * );
+
+void __RPC_USER
+VARIANT_UserFree(
+ unsigned long __RPC_FAR *,
+ VARIANT __RPC_FAR * );
+
+
+unsigned long __RPC_USER
+EXCEPINFO_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ EXCEPINFO __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+EXCEPINFO_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ EXCEPINFO __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+EXCEPINFO_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ EXCEPINFO __RPC_FAR * );
+
+void __RPC_USER
+EXCEPINFO_UserFree(
+ unsigned long __RPC_FAR *,
+ EXCEPINFO __RPC_FAR * );
+
+unsigned long __RPC_USER
+DISPPARAMS_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ DISPPARAMS __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+DISPPARAMS_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ DISPPARAMS __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+DISPPARAMS_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ DISPPARAMS __RPC_FAR * );
+
+void __RPC_USER
+DISPPARAMS_UserFree(
+ unsigned long __RPC_FAR *,
+ DISPPARAMS __RPC_FAR * );
+
+/* Other types: valid inproc only */
+
+unsigned long __RPC_USER
+HWND_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ HWND __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HWND_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HWND __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HWND_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HWND __RPC_FAR * );
+
+void __RPC_USER
+HWND_UserFree(
+ unsigned long __RPC_FAR *,
+ HWND __RPC_FAR * );
+
+unsigned long __RPC_USER
+HACCEL_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ HACCEL __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HACCEL_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HACCEL __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HACCEL_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HACCEL __RPC_FAR * );
+
+void __RPC_USER
+HACCEL_UserFree(
+ unsigned long __RPC_FAR *,
+ HACCEL __RPC_FAR * );
+
+unsigned long __RPC_USER
+HMENU_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ HMENU __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HMENU_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HMENU __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HMENU_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HMENU __RPC_FAR * );
+
+void __RPC_USER
+HMENU_UserFree(
+ unsigned long __RPC_FAR *,
+ HMENU __RPC_FAR * );
+
+unsigned long __RPC_USER
+HBRUSH_UserSize(
+ unsigned long __RPC_FAR *,
+ unsigned long,
+ HBRUSH __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HBRUSH_UserMarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HBRUSH __RPC_FAR * );
+
+unsigned char __RPC_FAR * __RPC_USER
+HBRUSH_UserUnmarshal(
+ unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR *,
+ HBRUSH __RPC_FAR * );
+
+void __RPC_USER
+HBRUSH_UserFree(
+ unsigned long __RPC_FAR *,
+ HBRUSH __RPC_FAR * );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/public/sdk/inc/rtstg.h b/public/sdk/inc/rtstg.h
new file mode 100644
index 000000000..40665bcd8
--- /dev/null
+++ b/public/sdk/inc/rtstg.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: rtstg.h
+//
+// Contents: Replacement for rtstg.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/runobj.h b/public/sdk/inc/runobj.h
new file mode 100644
index 000000000..1616a5c33
--- /dev/null
+++ b/public/sdk/inc/runobj.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: runobj.h
+//
+// Contents: Replacement for runobj.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/safepnt.hxx b/public/sdk/inc/safepnt.hxx
new file mode 100644
index 000000000..cc9bfd251
--- /dev/null
+++ b/public/sdk/inc/safepnt.hxx
@@ -0,0 +1,957 @@
+//+-------------------------------------------------------------------------
+//
+// Copyright (C) 1992, Microsoft Corporation.
+//
+// File: safepnt.hxx
+//
+// Contents: Safe pointers to interfaces and to memory
+//
+// Classes:
+//
+// Functions:
+//
+// History: 03-Mar-93 KevinRo Created
+// 07-Jul-94 MikeSe Rationalised with smartp.hxx
+// 19-Jul-94 KirtD Added SAFE_XXX_HANDLE
+// 03-Aug-93 DrewB/AdamS Added Set/Attach/Detach
+// 16-Oct-93 DrewB Added non-Cairo support
+//
+// Notes:
+//
+// This file contains a set of macros that define safe pointers to various
+// classes of memory. Memory that is reference counted (such as interfaces),
+// memory allocated using MemAlloc/MemFree, and memory allocated from
+// the local heap. The classes handle both pointers to structures and memory
+// by having versions that include the -> operator, or not.
+//
+//--------------------------------------------------------------------------
+
+#ifndef _SAFEPNT_HXX_
+#define _SAFEPNT_HXX_
+
+#include <except.hxx>
+#include <debnot.h>
+
+//+-------------------------------------------------------------------------
+//
+// The basic usage for all of these macros is:
+//
+// SAFE_xxx_PTR( NameOfSafePointerClass, TypeOfDataPointedTo)
+//
+// Each invocation of such macro declares a new class of the specified name
+// whose only member variable is a pointer (called the captured pointer)
+// to the specified type, and whose behaviour is largely indistiguishable from
+// a regular pointer to that type, except that it is leak-free (if used
+// correctly).
+//
+// For example, SAFE_INTERFACE_PTR( SafeUnknown, IUnknown)
+// SAFE_HEAP_MEMPTR( SafeWCHARPtr, WCHAR )
+//
+// The captured pointer is generally acquired during construction of the
+// safe pointer class, and acquisition may include invoking an operation on
+// the captured pointer.
+//
+// In addition, the pointer may be captured by being the output of a function
+// call. This is the only intended purpose of the & operator provided by
+// the safe pointer class.
+//
+// When the safe pointer instance go out of scope (either normally or as
+// the result of an exception), the captured pointer is "freed" by invoking
+// an appropriate operation on it.
+//
+// The captured pointer may be passed on elsewhere using the Transfer method
+// in which case destruction of the safe pointer becomes a nop. In particular
+// this can be used to tranfer the captured pointer from one safe pointer to
+// another, viz:
+//
+// sp1.Transfer ( &sp2 );
+//
+// The Transfer method is implemented in such a way that an exception on the
+// output pointer will not result in a leak.
+//
+// Safe pointers are intended to be used as resource containers. To that end,
+// the list of operators available is intentionally short. However, based on
+// experience, safe pointers can be used in most places that a normal
+// pointer would be used. The exception is that safe pointers do not allow
+// for arithmetic operations. For example:
+//
+// SpWCHARPtr spwz(new WCHAR[10]);
+//
+// spwz++; // Not allowed, since the pointer would change.
+//
+// wcscpy(spwz,L"Test"); // This is OK
+//
+//--------------------------------------------------------------------------
+
+//+-------------------------------------------------------------------------
+//
+// Macro: SAFE_INTERFACE_PTR
+//
+// Purpose: Safe pointer to any interface that supports AddRef/Release
+//
+// Notes: This works for classes that define AddRef/Release, or for
+// Cairole interfaces. It is not necessary that the class
+// be a derivative of IUnknown, so long as it supports
+// AddRef and Release methods which have the same semantics as
+// those in IUnknown.
+//
+// The constructor takes a parameter which specifies whether
+// the captured pointer should be AddRef'd, defaulting to TRUE.
+//
+// The Copy function creates a valid additional copy of
+// the captured pointer (following the AddRef/Release protocol)
+// so can be used to hand out copies from a safe pointer declared
+// as a member of some other class.
+//
+//--------------------------------------------------------------------------
+
+#define SAFE_INTERFACE_PTR(SpName,SpType) \
+class SpName INHERIT_UNWIND_IF_CAIRO \
+{ \
+ INLINE_UNWIND(SpName) \
+public: \
+ \
+inline SpName ( SpType * pinter=NULL,BOOL fInc=TRUE) \
+ : _p ( pinter ) \
+ { \
+ if (fInc && (_p != NULL)) \
+ { \
+ _p->AddRef(); \
+ } \
+ END_CONSTRUCTION (SpName) \
+ } \
+ \
+inline ~##SpName () \
+ { \
+ if (_p != NULL) \
+ { \
+ _p->Release(); \
+ _p = NULL; \
+ } \
+ } \
+ \
+inline void Transfer ( SpType **pxtmp) \
+ { \
+ *pxtmp = _p; \
+ _p = NULL; \
+ } \
+inline void Copy ( SpType **pxtmp) \
+ { \
+ *pxtmp = _p; \
+ if (_p != NULL) \
+ _p->AddRef(); \
+ } \
+inline void Set(SpType* p, BOOL fInc = TRUE) \
+ { \
+ if (_p) \
+ { \
+ _p->Release(); \
+ } \
+ _p = p; \
+ if (fInc && _p) \
+ { \
+ _p->AddRef(); \
+ } \
+ } \
+inline void Attach(SpType* p) \
+ { \
+ Win4Assert(_p == NULL); \
+ _p = p; \
+ } \
+inline void Detach(void) \
+ { \
+ _p = NULL; \
+ } \
+ \
+inline SpType * operator-> () { return _p; } \
+inline SpType& operator * () { return *_p; } \
+inline operator SpType *() { return _p; } \
+inline SpType ** operator &() \
+ { \
+ Win4Assert ( _p == NULL ); \
+ return &_p; \
+ } \
+ \
+inline SpType *Self(void) { return _p; } \
+ \
+private: \
+ SpType * _p; \
+ inline void operator = (const SpName &) {;} \
+ inline SpName ( const SpName &){;} \
+};
+
+//+-------------------------------------------------------------------------
+//
+// Macro: TRANSFER_INTERFACE
+//
+// Purpose: Transfers a specific interface from a safe object to an
+// interface pointer. Simple Transfer doesn't always work right
+// for safe objects that implement multiple interfaces; this
+// macro must be used
+//
+// Usage:
+// IStorage *pstg;
+// SafeFoo sfoo;
+// TRANSFER_INTERFACE(sfoo, IStorage, &pstg)
+//
+//--------------------------------------------------------------------------
+
+#define TRANSFER_INTERFACE(smart, iface, ppiface) \
+ (*(ppiface) = (iface *)((smart).Self()), (smart).Detach())
+
+//+-------------------------------------------------------------------------
+//
+// Macro: SAFE_MEMALLOC_PTR
+//
+// Purpose: Pointer to memory created by MemAlloc. Supports the
+// -> operator. Can point to a structure.
+//
+//--------------------------------------------------------------------------
+
+// Cairo only
+#if WIN32 == 300
+
+#define SAFE_MEMALLOC_PTR(SpName,SpType) \
+class SpName INHERIT_UNWIND_IF_CAIRO \
+{ \
+ INLINE_UNWIND(SpName) \
+public: \
+inline SpName ( SpType * pinter=NULL) \
+ : _p ( pinter ) \
+ { \
+ END_CONSTRUCTION (SpName) \
+ } \
+ \
+inline ~##SpName () \
+ { \
+ MemFree(_p); \
+ _p = NULL; \
+ } \
+inline void Transfer ( SpType **pxtmp) \
+ { \
+ *pxtmp = _p; \
+ _p = NULL; \
+ } \
+inline void Set(SpType* p) \
+ { \
+ MemFree(_p); \
+ _p = p; \
+ } \
+inline void Attach(SpType* p) \
+ { \
+ Win4Assert(_p == NULL); \
+ _p = p; \
+ } \
+inline void Detach(void) \
+ { \
+ _p = NULL; \
+ } \
+ \
+inline SpType * operator-> () { return _p; } \
+inline SpType & operator * () { return *_p; } \
+inline operator SpType *() { return _p; } \
+inline SpType ** operator &() \
+ { \
+ Win4Assert ( _p == NULL ); \
+ return &_p; \
+ } \
+ \
+private: \
+ SpType * _p; \
+ inline void operator = (const SpName &) {;} \
+ inline SpName ( const SpName &){;} \
+};
+
+//+-------------------------------------------------------------------------
+//
+// Macro: SAFE_MEMALLOC_MEMPTR
+//
+// Purpose: Pointer to memory created by MemAlloc. This class does
+// not supply a -> operator. Therefore, structure or class
+// members are not available.
+//
+//--------------------------------------------------------------------------
+
+#define SAFE_MEMALLOC_MEMPTR(SpName,SpType) \
+class SpName INHERIT_UNWIND_IF_CAIRO \
+{ \
+ INLINE_UNWIND(SpName) \
+public: \
+inline SpName ( SpType * pinter=NULL) \
+ : _p ( pinter ) \
+ { \
+ END_CONSTRUCTION (SpName) \
+ } \
+ \
+inline ~##SpName () \
+ { \
+ MemFree(_p); \
+ _p = NULL; \
+ } \
+inline void Transfer ( SpType **pxtmp) \
+ { \
+ *pxtmp = _p; \
+ _p = NULL; \
+ } \
+inline void Set(SpType* p) \
+ { \
+ MemFree(_p); \
+ _p = p; \
+ } \
+inline void Attach(SpType* p) \
+ { \
+ Win4Assert(_p == NULL); \
+ _p = p; \
+ } \
+inline void Detach(void) \
+ { \
+ _p = NULL; \
+ } \
+ \
+inline SpType & operator * () { return *_p; } \
+inline operator SpType *() { return _p; } \
+inline SpType ** operator &() \
+ { \
+ Win4Assert ( _p == NULL ); \
+ return &_p; \
+ } \
+ \
+private: \
+ SpType * _p; \
+ inline void operator = (const SpName &) {;} \
+ inline SpName ( const SpName &){;} \
+};
+
+#endif // Cairo
+
+//+-------------------------------------------------------------------------
+//
+// Macro: SAFE_COMEMALLOC_PTR
+//
+// Purpose: Pointer to memory created by COMEMALLOC. Supports the
+// -> operator. Can point to a structure.
+//
+//--------------------------------------------------------------------------
+
+#define SAFE_COMEMALLOC_PTR(SpName,SpType) \
+class SpName INHERIT_UNWIND_IF_CAIRO \
+{ \
+ INLINE_UNWIND(SpName) \
+public: \
+inline SpName ( SpType * pinter=NULL) \
+ : _p ( pinter ) \
+ { \
+ END_CONSTRUCTION (SpName) \
+ } \
+ \
+inline ~##SpName () \
+ { \
+ CoMemFree(_p); \
+ _p = NULL; \
+ } \
+inline void Transfer ( SpType **pxtmp) \
+ { \
+ *pxtmp = _p; \
+ _p = NULL; \
+ } \
+inline void Set(SpType* p) \
+ { \
+ CoMemFree(_p); \
+ _p = p; \
+ } \
+inline void Attach(SpType* p) \
+ { \
+ Win4Assert(_p == NULL); \
+ _p = p; \
+ } \
+inline void Detach(void) \
+ { \
+ _p = NULL; \
+ } \
+ \
+inline SpType * operator-> () { return _p; } \
+inline SpType & operator * () { return *_p; } \
+inline operator SpType *() { return _p; } \
+inline SpType ** operator &() \
+ { \
+ Win4Assert ( _p == NULL ); \
+ return &_p; \
+ } \
+ \
+private: \
+ SpType * _p; \
+ inline void operator = (const SpName &) {;} \
+ inline SpName ( const SpName &){;} \
+};
+
+//+-------------------------------------------------------------------------
+//
+// Macro: SAFE_COMEMALLOC_MEMPTR
+//
+// Purpose: Pointer to memory created by COMEMALLOC. This class does
+// not supply a -> operator. Therefore, structure or class
+// members are not available.
+//
+//--------------------------------------------------------------------------
+
+#define SAFE_COMEMALLOC_MEMPTR(SpName,SpType) \
+class SpName INHERIT_UNWIND_IF_CAIRO \
+{ \
+ INLINE_UNWIND(SpName) \
+public: \
+inline SpName ( SpType * pinter=NULL) \
+ : _p ( pinter ) \
+ { \
+ END_CONSTRUCTION (SpName) \
+ } \
+ \
+inline ~##SpName () \
+ { \
+ CoMemFree(_p); \
+ _p = NULL; \
+ } \
+inline void Transfer ( SpType **pxtmp) \
+ { \
+ *pxtmp = _p; \
+ _p = NULL; \
+ } \
+inline void Set(SpType* p) \
+ { \
+ CoMemFree(_p); \
+ _p = p; \
+ } \
+inline void Attach(SpType* p) \
+ { \
+ Win4Assert(_p == NULL); \
+ _p = p; \
+ } \
+inline void Detach(void) \
+ { \
+ _p = NULL; \
+ } \
+ \
+inline SpType & operator * () { return *_p; } \
+inline operator SpType *() { return _p; } \
+inline SpType ** operator &() \
+ { \
+ Win4Assert ( _p == NULL ); \
+ return &_p; \
+ } \
+ \
+private: \
+ SpType * _p; \
+ inline void operator = (const SpName &) {;} \
+ inline SpName ( const SpName &){;} \
+};
+
+
+
+
+
+
+//+-------------------------------------------------------------------------
+//
+// Macro: SAFE_HEAP_PTR
+//
+// Purpose: Pointer to memory created by operator new. Supports the
+// -> operator. Can point to a structure.
+//
+//--------------------------------------------------------------------------
+
+#define SAFE_HEAP_PTR(SpName,SpType) \
+class SpName INHERIT_UNWIND_IF_CAIRO \
+{ \
+ INLINE_UNWIND(SpName) \
+public: \
+inline SpName ( SpType * pinter=NULL) \
+ : _p ( pinter ) \
+ { \
+ END_CONSTRUCTION (SpName) \
+ } \
+ \
+inline ~##SpName () \
+ { \
+ delete _p; \
+ _p = NULL; \
+ } \
+inline void Transfer ( SpType **pxtmp) \
+ { \
+ *pxtmp = _p; \
+ _p = NULL; \
+ } \
+inline void Set(SpType* p) \
+ { \
+ delete _p; \
+ _p = p; \
+ } \
+inline void Attach(SpType* p) \
+ { \
+ Win4Assert(_p == NULL); \
+ _p = p; \
+ } \
+inline void Detach(void) \
+ { \
+ _p = NULL; \
+ } \
+ \
+inline SpType * operator-> () { return _p; } \
+inline SpType & operator * () { return *_p; } \
+inline operator SpType *() { return _p; } \
+inline SpType ** operator &() \
+ { \
+ Win4Assert ( _p == NULL ); \
+ return &_p; \
+ } \
+ \
+private: \
+ SpType * _p; \
+ inline void operator = (const SpName &) {;} \
+ inline SpName ( const SpName &){;} \
+};
+
+//+-------------------------------------------------------------------------
+//
+// Macro: SAFE_HEAP_MEMPTR
+//
+// Purpose: Pointer to memory created by operator new. This class does
+// not supply a -> operator. Therefore, structure or class
+// members are not available.
+//
+//--------------------------------------------------------------------------
+
+#define SAFE_HEAP_MEMPTR(SpName,SpType) \
+class SpName INHERIT_UNWIND_IF_CAIRO \
+{ \
+ INLINE_UNWIND(SpName) \
+public: \
+inline SpName ( SpType * pinter=NULL) \
+ : _p ( pinter ) \
+ { \
+ END_CONSTRUCTION (SpName) \
+ } \
+ \
+inline ~##SpName () \
+ { \
+ delete _p; \
+ _p = NULL; \
+ } \
+inline void Transfer ( SpType **pxtmp) \
+ { \
+ *pxtmp = _p; \
+ _p = NULL; \
+ } \
+inline void Set(SpType* p) \
+ { \
+ delete _p; \
+ _p = p; \
+ } \
+inline void Attach(SpType* p) \
+ { \
+ Win4Assert(_p == NULL); \
+ _p = p; \
+ } \
+inline void Detach(void) \
+ { \
+ _p = NULL; \
+ } \
+ \
+inline SpType & operator * () { return *_p; } \
+inline operator SpType *() { return _p; } \
+inline SpType ** operator &() \
+ { \
+ Win4Assert ( _p == NULL ); \
+ return &_p; \
+ } \
+ \
+private: \
+ SpType * _p; \
+ inline void operator = (const SpName &) {;} \
+ inline SpName ( const SpName &){;} \
+};
+
+//+-------------------------------------------------------------------------
+//
+// Macro: SAFE_XXX_HANDLE
+//
+// Purpose: Smart resource to a WIN 32, WIN 32 Find or NT HANDLE.
+//
+// Usage: SAFE_WIN32_HANDLE(XWIN32Handle)
+// SAFE_WIN32FIND_HANDLE(XWIN32FindHandle)
+// SAFE_NT_HANDLE(XNtHandle)
+//
+//--------------------------------------------------------------------------
+
+#ifdef WIN32
+
+#define SAFE_WIN32_HANDLE(ShName) \
+ \
+class ShName INHERIT_UNWIND_IF_CAIRO \
+{ \
+ INLINE_UNWIND(ShName) \
+public: \
+ \
+inline ShName (HANDLE handle = NULL) \
+ : _handle(handle) \
+ { \
+ END_CONSTRUCTION(ShName) \
+ } \
+ \
+inline ~##ShName () \
+ { \
+ if ((_handle != INVALID_HANDLE_VALUE) && (_handle != NULL)) \
+ { \
+ CloseHandle(_handle); \
+ } \
+ } \
+ \
+inline void Transfer(HANDLE *phandle) \
+ { \
+ *phandle = _handle; \
+ _handle = NULL; \
+ } \
+inline void Set(HANDLE h) \
+ { \
+ if (_handle != INVALID_HANDLE_VALUE && _handle != NULL) \
+ { \
+ CloseHandle(_handle); \
+ } \
+ _handle = h; \
+ } \
+inline void Attach(HANDLE h) \
+ { \
+ Win4Assert(_handle == NULL); \
+ _handle = h; \
+ } \
+inline void Detach(void) \
+ { \
+ _handle = NULL; \
+ } \
+ \
+inline operator HANDLE () \
+ { \
+ return(_handle); \
+ } \
+ \
+inline HANDLE operator= (HANDLE handle) \
+ { \
+ Set(handle); \
+ return(_handle); \
+ } \
+ \
+inline BOOL operator==(HANDLE handle) \
+ { \
+ if (_handle == handle) \
+ { \
+ return(TRUE); \
+ } \
+ return(FALSE); \
+ } \
+ \
+inline HANDLE *operator&() \
+ { \
+ Win4Assert((_handle==NULL) || (_handle==INVALID_HANDLE_VALUE));\
+ return(&_handle); \
+ } \
+ \
+private: \
+ \
+ HANDLE _handle; \
+ \
+inline VOID operator= (const ShName &) {;} \
+inline ShName (const ShName &) {;} \
+ \
+};
+
+#define SAFE_WIN32FIND_HANDLE(ShName) \
+ \
+class ShName INHERIT_UNWIND_IF_CAIRO \
+{ \
+ INLINE_UNWIND(ShName) \
+public: \
+ \
+inline ShName (HANDLE handle = NULL) \
+ : _handle(handle) \
+ { \
+ END_CONSTRUCTION(ShName) \
+ } \
+ \
+inline ~##ShName () \
+ { \
+ if ((_handle != INVALID_HANDLE_VALUE) && (_handle != NULL)) \
+ { \
+ FindClose(_handle); \
+ } \
+ } \
+ \
+inline void Transfer(HANDLE *phandle) \
+ { \
+ *phandle = _handle; \
+ _handle = NULL; \
+ } \
+inline void Set(HANDLE h) \
+ { \
+ if (_handle != INVALID_HANDLE_VALUE && _handle != NULL) \
+ { \
+ FindClose(_handle); \
+ } \
+ _handle = h; \
+ } \
+inline void Attach(HANDLE h) \
+ { \
+ Win4Assert(_handle == NULL); \
+ _handle = h; \
+ } \
+inline void Detach(void) \
+ { \
+ _handle = NULL; \
+ } \
+ \
+inline operator HANDLE () \
+ { \
+ return(_handle); \
+ } \
+ \
+inline HANDLE operator= (HANDLE handle) \
+ { \
+ Set(handle); \
+ return(_handle); \
+ } \
+ \
+inline BOOL operator==(HANDLE handle) \
+ { \
+ if (_handle == handle) \
+ { \
+ return(TRUE); \
+ } \
+ return(FALSE); \
+ } \
+ \
+inline HANDLE *operator&() \
+ { \
+ Win4Assert((_handle==NULL) || (_handle==INVALID_HANDLE_VALUE));\
+ return(&_handle); \
+ } \
+ \
+private: \
+ \
+ HANDLE _handle; \
+ \
+inline VOID operator= (const ShName &) {;} \
+inline ShName (const ShName &) {;} \
+ \
+};
+
+#endif // WIN32
+
+// Only available on NT platforms
+#if WIN32 == 100 || WIN32 == 300
+
+#define SAFE_NT_HANDLE(ShName) \
+ \
+class ShName INHERIT_UNWIND_IF_CAIRO \
+{ \
+ INLINE_UNWIND(ShName) \
+public: \
+ \
+inline ShName (HANDLE handle = NULL) \
+ : _handle(handle) \
+ { \
+ END_CONSTRUCTION(ShName) \
+ } \
+ \
+inline ~##ShName () \
+ { \
+ if ((_handle != INVALID_HANDLE_VALUE) && (_handle != NULL)) \
+ { \
+ NtClose(_handle); \
+ } \
+ } \
+ \
+inline void Transfer(HANDLE *phandle) \
+ { \
+ *phandle = _handle; \
+ _handle = NULL; \
+ } \
+inline void Set(HANDLE h) \
+ { \
+ if (_handle != INVALID_HANDLE_VALUE && _handle != NULL) \
+ { \
+ NtClose(_handle); \
+ } \
+ _handle = h; \
+ } \
+inline void Attach(HANDLE h) \
+ { \
+ Win4Assert(_handle == NULL); \
+ _handle = h; \
+ } \
+inline void Detach(void) \
+ { \
+ _handle = NULL; \
+ } \
+ \
+inline operator HANDLE () \
+ { \
+ return(_handle); \
+ } \
+ \
+inline HANDLE operator= (HANDLE handle) \
+ { \
+ Set(handle); \
+ return(_handle); \
+ } \
+ \
+inline BOOL operator==(HANDLE handle) \
+ { \
+ if (_handle == handle) \
+ { \
+ return(TRUE); \
+ } \
+ return(FALSE); \
+ } \
+ \
+inline HANDLE *operator&() \
+ { \
+ Win4Assert((_handle==NULL) || (_handle==INVALID_HANDLE_VALUE));\
+ return(&_handle); \
+ } \
+ \
+private: \
+ \
+ HANDLE _handle; \
+ \
+inline VOID operator= (const ShName &) {;} \
+inline ShName (const ShName &) {;} \
+ \
+};
+
+#define SAFE_NT_HANDLE_NO_UNWIND(ShName) \
+ \
+class ShName \
+{ \
+public: \
+ \
+inline ShName (HANDLE handle = NULL) \
+ : _handle(handle) \
+ { \
+ } \
+ \
+inline ~##ShName () \
+ { \
+ if ((_handle != INVALID_HANDLE_VALUE) && (_handle != NULL)) \
+ { \
+ NtClose(_handle); \
+ } \
+ } \
+ \
+inline void Transfer(HANDLE *phandle) \
+ { \
+ *phandle = _handle; \
+ _handle = NULL; \
+ } \
+inline void Set(HANDLE h) \
+ { \
+ if (_handle != INVALID_HANDLE_VALUE && _handle != NULL) \
+ { \
+ NtClose(_handle); \
+ } \
+ _handle = h; \
+ } \
+inline void Attach(HANDLE h) \
+ { \
+ Win4Assert(_handle == NULL); \
+ _handle = h; \
+ } \
+inline void Detach(void) \
+ { \
+ _handle = NULL; \
+ } \
+ \
+inline operator HANDLE () \
+ { \
+ return(_handle); \
+ } \
+ \
+inline HANDLE operator= (HANDLE handle) \
+ { \
+ Set(handle); \
+ return(_handle); \
+ } \
+ \
+inline BOOL operator==(HANDLE handle) \
+ { \
+ if (_handle == handle) \
+ { \
+ return(TRUE); \
+ } \
+ return(FALSE); \
+ } \
+ \
+inline HANDLE *operator&() \
+ { \
+ Win4Assert((_handle==NULL) || (_handle==INVALID_HANDLE_VALUE));\
+ return(&_handle); \
+ } \
+ \
+private: \
+ \
+ HANDLE _handle; \
+ \
+inline VOID operator= (const ShName &) {;} \
+inline ShName (const ShName &) {;} \
+ \
+};
+
+#endif // NT platforms
+
+//+-------------------------------------------------------------------------
+//
+// UNWINDABLE_WRAPPER allows you to declare an unwindable wrapper class
+// for an existing class to make it exception safe
+//
+// class Foo;
+// UNWINDABLE_WRAPPER(SafeCFoo, CFoo);
+//
+// UNWINDABLE_WRAPPER_ARGS is an alternate form that allows arguments to
+// the constructor
+//
+// class Foo;
+// Foo::Foo(int foo);
+// UNWINDABLE_WRAPPER_ARGS(SafeCFoo, CFoo, (int foo), (foo));
+//
+//--------------------------------------------------------------------------
+
+// Cairo only
+#if WIN32 == 300
+
+#define UNWINDABLE_WRAPPER(UwName, Class) \
+class UwName : INHERIT_UNWIND, public Class \
+{ \
+ INLINE_UNWIND(UwName) \
+public: \
+ inline UwName(void) \
+ { \
+ END_CONSTRUCTION(UwName); \
+ } \
+ inline ~##UwName(void) \
+ { \
+ } \
+}
+
+#define UNWINDABLE_WRAPPER_ARGS(UwName, Class, CtorDecl, CtorArgs) \
+class UwName : INHERIT_UNWIND, public Class \
+{ \
+ INLINE_UNWIND(UwName) \
+public: \
+ inline UwName CtorDecl : Class CtorArgs \
+ { \
+ END_CONSTRUCTION(UwName); \
+ } \
+ inline ~##UwName(void) \
+ { \
+ } \
+}
+
+#endif // Cairo only
+
+#endif // _SAFEPNT_HXX_
diff --git a/public/sdk/inc/scode.h b/public/sdk/inc/scode.h
new file mode 100644
index 000000000..b3900135f
--- /dev/null
+++ b/public/sdk/inc/scode.h
@@ -0,0 +1,18 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ scode.h
+
+Abstract:
+
+ Obsolete SCODE header file. Use WINERROR.H
+
+--*/
+
+#ifndef _WINERROR_
+#include <winerror.h>
+#endif
+
diff --git a/public/sdk/inc/scrnsave.h b/public/sdk/inc/scrnsave.h
new file mode 100644
index 000000000..de5f2778e
--- /dev/null
+++ b/public/sdk/inc/scrnsave.h
@@ -0,0 +1,192 @@
+/*****************************************************************************\
+* *
+* scrnsave.h Windows NT 3.1 screensaver defines and definitions. *
+* *
+* Version 1.0 *
+* *
+* NOTE: windows.h must be #included first *
+* *
+* Windows NT NOTE: (Differences from Win 3.1 Screensavers) *
+* *
+* All Screensavers are required to have a Description string *
+* of no more than 25 chars for display by the Control Panel's *
+* Desktop applet. This is string 1 in the resource string *
+* table of the Windows 32-bit screen saver .SCR (.EXE) file. *
+* *
+* Passwords for Windows NT Screen Savers are handled by the *
+* Winlogon process. If the registry value: *
+* *
+* HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaverIsSecure *
+* *
+* is nonzero, Winlogon will ask for the User's login password *
+* before allowing the Screen Saver to exit. All password data *
+* and dialogs have been removed from individual Screensavers. *
+* *
+* *
+* Copyright (c) 1992-1996, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+#ifndef _INC_SCRNSAVE
+#define _INC_SCRNSAVE
+
+#include <pshpack1.h> /* Assume byte packing throughout */
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+
+/* MANDATORY string required in .RC file
+ * This string should contain a less than 25 char name/description of the
+ * screen saver. This string is what will be seen by the user in the Control
+ * Panel's Desktop applet screen saver listbox.
+ */
+
+#define IDS_DESCRIPTION 1
+
+/* Icon resource ID.
+ *
+ * This should be the first icon used and must have this resource number.
+ * This is needed as the first icon in the file will be grabbed
+ */
+#define ID_APP 100
+#define DLG_SCRNSAVECONFIGURE 2003
+
+#define idsIsPassword 1000
+#define idsIniFile 1001
+#define idsScreenSaver 1002
+#define idsPassword 1003
+#define idsDifferentPW 1004
+#define idsChangePW 1005
+#define idsBadOldPW 1006
+#define idsAppName 1007
+#define idsNoHelpMemory 1008
+#define idsHelpFile 1009
+#define idsDefKeyword 1010
+
+/* This function is the Window Procedure for the screen saver. It is
+ * up to the programmer to handle any of the messages that wish to be
+ * interpretted. Any unused messages are then passed back to
+ * DefScreenSaverProc if desired which will take default action on any
+ * unprocessed message...
+ */
+#ifdef UNICODE
+LRESULT WINAPI ScreenSaverProcW (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
+# define ScreenSaverProc ScreenSaverProcW
+#else
+LRESULT WINAPI ScreenSaverProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
+#endif
+
+/* This function performs default message processing. Currently handles
+ * the following messages:
+ *
+ * WM_SYSCOMMAND: return FALSE if wParam is SC_SCREENSAVE or SC_CLOSE
+ *
+ * WM_DESTROY: PostQuitMessage(0)
+ *
+ * WM_SETCURSOR: By default, this will set the cursor to a null cursor,
+ * thereby removing it from the screen.
+ *
+ * WM_LBUTTONDOWN:
+ * WM_MBUTTONDOWN:
+ * WM_RBUTTONDOWN:
+ * WM_KEYDOWN:
+ * WM_KEYUP:
+ * WM_MOUSEMOVE: By default, these will cause the program to terminate.
+ * Unless the password option is enabled. In that case
+ * the DlgGetPassword() dialog box is brought up.
+ *
+ * WM_NCACTIVATE:
+ * WM_ACTIVATEAPP:
+ * WM_ACTIVATE: By default, if the wParam parameter is FALSE (signifying
+ * that transfer is being taken away from the application),
+ * then the program will terminate. Termination is
+ * accomplished by generating a WM_CLOSE message. This way,
+ * if the user sets something up in the WM_CREATE, a
+ * WM_DESTROY will be generated and it can be destroyed
+ * properly.
+ * This message is ignored, however is the password option
+ * is enabled.
+ */
+LRESULT WINAPI DefScreenSaverProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
+
+/* A function is also needed for configuring the screen saver. The function
+ * should be exactly like it is below and must be exported such that the
+ * program can use MAKEPROCINSTANCE on it and call up a dialog box. Further-
+ * more, the template used for the dialog must be called
+ * ScreenSaverConfigure to allow the main function to access it...
+ */
+BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
+
+/* To allow the programmer the ability to register child control windows, this
+ * function is called prior to the creation of the dialog box. Any
+ * registering that is required should be done here, or return TRUE if none
+ * is needed...
+ */
+BOOL WINAPI RegisterDialogClasses (HANDLE hInst);
+
+/* The following functions are called by DefScreenSaverProc and must
+ * be exported by all screensavers using this model.
+ */
+
+/*
+ * There are only three other points that should be of notice:
+ * 1) The screen saver must have a string declared as 'szAppName' contaning the
+ * name of the screen saver, and it must be declared as a global.
+ * 2) The screen saver EXE file should be renamed to a file with a SCR
+ * extension so that the screen saver dialog from the control panel can
+ * find it when is searches for screen savers.
+ */
+#define WS_GT (WS_GROUP | WS_TABSTOP)
+
+#define MAXFILELEN 13
+#define TITLEBARNAMELEN 40
+#define APPNAMEBUFFERLEN 40
+#define BUFFLEN 255
+
+/* The following globals are defined in scrnsave.lib */
+extern HINSTANCE hMainInstance;
+extern HWND hMainWindow;
+extern BOOL fChildPreview;
+extern TCHAR szName[TITLEBARNAMELEN];
+extern TCHAR szAppName[APPNAMEBUFFERLEN];
+extern TCHAR szIniFile[MAXFILELEN];
+extern TCHAR szScreenSaver[22];
+extern TCHAR szHelpFile[MAXFILELEN];
+extern TCHAR szNoHelpMemory[BUFFLEN];
+extern UINT MyHelpMessage;
+
+/* OPTIONAL - Win95 Only */
+
+#define SCRM_VERIFYPW WM_APP
+/*
+ * This message is sent to the main screen saver window when password
+ * protection is enabled and the user is trying to close the screen saver. You
+ * can process this message and provide your own validation technology. If you
+ * process this message, you should also support the ScreenSaverChangePassword
+ * function, described below. Return zero from this message if the password
+ * check failed. Return nonzero for success. If you run out of memory or
+ * encounter a similar class of error, return non-zero so the user isn't left
+ * out in the cold. The default action is to call the Windows Master
+ * Password Router to validate the user's password.
+ */
+
+void WINAPI ScreenSaverChangePassword( HWND hParent );
+/*
+ * You supply this if you provide your own authentication. Windows will call
+ * it when the user wants to change the password. An implementation of this
+ * function should present password change UI to the user.
+ * You should only supply this function if you also hook the SCRM_VERIFYPW
+ * message to validate passwords.
+ * The default action is to call the Windows Master Password Router.
+ */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#include <poppack.h>
+
+#endif /* !_INC_SCRNSAVE */
diff --git a/public/sdk/inc/secdes.hxx b/public/sdk/inc/secdes.hxx
new file mode 100644
index 000000000..678b59c8e
--- /dev/null
+++ b/public/sdk/inc/secdes.hxx
@@ -0,0 +1,43 @@
+//+-------------------------------------------------------------------
+//
+// File: secdes.hxx
+//
+// Contents: Encapsulates a Win32 security descriptor.
+//
+// Classes: CSecurityDescriptor
+//
+// Functions: none
+//
+// History: 07-Aug-92 randyd Created.
+//
+//--------------------------------------------------------------------
+
+#ifndef __SECDES_HXX__
+#define __SECDES_HXX__
+
+
+#include <windows.h>
+
+
+class CSecurityDescriptor
+{
+public:
+ // Default constructor creates a descriptor that allows all access.
+ CSecurityDescriptor()
+ {
+ InitializeSecurityDescriptor(&_sd, SECURITY_DESCRIPTOR_REVISION);
+ };
+
+ // Return a PSECURITY_DESCRIPTOR
+ operator PSECURITY_DESCRIPTOR() const {return((PSECURITY_DESCRIPTOR) &_sd); };
+
+private:
+ // The security descriptor.
+ SECURITY_DESCRIPTOR _sd;
+};
+
+
+
+
+#endif // __SECDES_HXX__
+
diff --git a/public/sdk/inc/secext.h b/public/sdk/inc/secext.h
new file mode 100644
index 000000000..a38290dd5
--- /dev/null
+++ b/public/sdk/inc/secext.h
@@ -0,0 +1,140 @@
+//+-----------------------------------------------------------------------
+//
+// Microsoft Windows
+//
+// Copyright (c) Microsoft Corporation 1991 - 1992
+//
+// File: secext.h
+//
+// Contents: Security function prototypes for functions not part of
+// the security support provider interface (secsuppr.h)
+//
+//
+// History: 22 Dec 92 RichardW Created
+//
+//------------------------------------------------------------------------
+
+#ifndef __SECEXT_H__
+#define __SECEXT_H__
+
+
+typedef struct _SecurityUserData {
+ SECURITY_STRING UserName; // User name
+ SECURITY_STRING LogonDomainName; // Domain the user logged on to
+ SECURITY_STRING LogonServer; // Server that logged the user on
+ PSID pSid; // SID of user
+} SecurityUserData, * PSecurityUserData;
+
+#define UNDERSTANDS_LONG_NAMES 1
+#define NO_LONG_NAMES 2
+
+
+HRESULT SEC_ENTRY
+GetSecurityUserInfo(
+ IN PLUID LogonId,
+ IN ULONG Flags,
+ OUT PSecurityUserData * UserInformation
+ );
+
+
+
+SECURITY_STATUS SEC_ENTRY
+IsLogonOkay(unsigned long fBlock);
+
+
+
+//
+// Credential Management types and APIs
+//
+
+//
+// SaveCredentials
+//
+
+SECURITY_STATUS SEC_ENTRY
+SaveCredentials (
+ PCredHandle pCredHandle,
+ unsigned long cbCredentials,
+ unsigned char * pbCredentials
+ );
+
+
+//
+// GetCredentials
+//
+
+SECURITY_STATUS SEC_ENTRY
+GetCredentials (
+ PCredHandle pCredHandle,
+ unsigned long * pcbCredentials,
+ unsigned char * ppbCredentials
+ );
+
+
+//
+// DeleteCredentials
+//
+
+SECURITY_STATUS SEC_ENTRY
+DeleteCredentials (
+ PCredHandle pCredHandle,
+ unsigned long cbKey,
+ unsigned char * pbKey
+ );
+
+
+//
+// FormatCredentials
+//
+
+SECURITY_STATUS SEC_ENTRY
+FormatCredentials(
+ LPWSTR pszPackageName,
+ ULONG cbCredentials,
+ PUCHAR pbCredentials,
+ PULONG pcbFormattedCreds,
+ PUCHAR * ppbFormattedCreds);
+
+typedef enum _SecStateDelta {
+ SecStateStatic, // The state is not changing
+ SecStateChange, // Req: change state
+ SecStateComplete, // Req: complete state change
+ SecStateAbort, // Req: abort state change (revert)
+ SecStateChanging // The state is changing
+} SecStateDelta, * PSecStateDelta;
+
+typedef enum _SecState {
+ SecStateStandalone, // Not connected to a domain
+ SecStateDisconnected, // Joined, but no active connection
+ SecStateJoined, // Joined, active connection
+ SecStateDC // Domain controller
+} SecurityState, * PSecurityState;
+
+SECURITY_STATUS SEC_ENTRY
+SecChangeState(
+ PWSTR pszDomainName, // Domain (for SecStateDelta)
+ SecStateDelta StateChange, // State change type
+ SecurityState State); // State type
+
+SECURITY_STATUS SEC_ENTRY
+SecQueryState(
+ PSecurityState pState,
+ PSecStateDelta pStateChange);
+
+#define SECURITY_CONTROL_NAME L"SPMgr"
+#define SECURITY_CONTROL_REFRESH 100
+#define SECURITY_CONTROL_UPDATE_MACHINE_JP_PROPS 101
+#define SECURITY_CONTROL_RELOAD_LOCAL_POLICY 102
+
+
+
+//
+// BUGBUG: this should map a SECURITY_STATUS to an NTSTATUS, but there is
+// no guarantee that NTSTATUS is defined. MMS 10/38/94
+//
+
+SECURITY_STATUS SEC_ENTRY
+MapSecurityError( SECURITY_STATUS hrValue );
+
+
+#endif // __SECEXT_H__
diff --git a/public/sdk/inc/secobjs.h b/public/sdk/inc/secobjs.h
new file mode 100644
index 000000000..8b2caf180
--- /dev/null
+++ b/public/sdk/inc/secobjs.h
@@ -0,0 +1,45 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: secobjs.h
+//
+// Contents: Security object-related defintions
+//
+// History: 27-Dec-93 MikeSe Created
+//
+// Notes: This file contains constant definitions used in properties
+// of security objects, which cannot (yet) be defined directly
+// in the TDL for the property sets.
+//
+// This file is never included directly. It is included from
+// security.h by defining SECURITY_OBJECTS.
+//
+//----------------------------------------------------------------------------
+
+#ifndef __SECOBJS_H__
+#define __SECOBJS_H__
+
+// Authentication options. These values can be set in either of
+//
+// PSDomainPolicy::AuthOptions
+// PSLoginParameters::AuthOptions
+
+#define AUTH_REQ_ALLOW_FORWARDABLE 0x40000000
+#define AUTH_REQ_ALLOW_PROXIABLE 0x10000000
+#define AUTH_REQ_ALLOW_POSTDATE 0x04000000
+#define AUTH_REQ_ALLOW_RENEWABLE 0x00800000
+#define AUTH_REQ_ALLOW_NOADDRESS 0x00100000
+#define AUTH_REQ_ALLOW_ENC_TKT_IN_SKEY 0x00000008
+#define AUTH_REQ_ALLOW_VALIDATE 0x00000001
+
+// Account attributes, in PSLoginParameters::AccountAttrs
+
+#define ACCOUNT_DISABLED 0x00000001
+#define ACCOUNT_PASSWORD_NOT_REQUIRED 0x00000002
+#define ACCOUNT_PASSWORD_CANNOT_CHANGE 0x00000004
+#define ACCOUNT_DONT_EXPIRE_PASSWORD 0x00000008
+
+#endif // of ifndef __SECOBJS_H__
+
diff --git a/public/sdk/inc/secpkg.h b/public/sdk/inc/secpkg.h
new file mode 100644
index 000000000..eff770db3
--- /dev/null
+++ b/public/sdk/inc/secpkg.h
@@ -0,0 +1,740 @@
+//+-----------------------------------------------------------------------
+//
+// Microsoft Windows
+//
+// Copyright (c) Microsoft Corporation 1991 - 1992
+//
+// File: secpkg.h
+//
+// Contents: Global definitions for security packages
+// This file will contain everything specific to writing
+// a security package.
+//
+//
+// History: 10 Mar 92 RichardW Created
+// 24-Mar-94 wader Changed EstablishCredentials to SystemLogon
+//
+//------------------------------------------------------------------------
+
+
+#ifndef __SECPKG_H__
+#define __SECPKG_H__
+
+#include <ntlsa.h> // SECURITY_LOGON_TYPE
+
+#ifdef SECURITY_KERNEL
+//
+// Can't use the windows.h def'ns in kernel mode.
+//
+typedef PVOID SEC_THREAD_START;
+typedef PVOID SEC_ATTRS;
+#else
+typedef LPTHREAD_START_ROUTINE SEC_THREAD_START;
+typedef LPSECURITY_ATTRIBUTES SEC_ATTRS;
+#endif
+
+
+
+
+//
+// The following structures are used by the helper functions
+//
+
+typedef struct _SECPKG_CLIENT_INFO {
+ LUID LogonId; // Effective Logon Id
+ ULONG ProcessID; // Process Id of caller
+ ULONG ThreadID; // Thread Id of caller
+ BOOLEAN HasTcbPrivilege; // Client has TCB
+ BOOLEAN Impersonating; // Client is impersonating
+} SECPKG_CLIENT_INFO, * PSECPKG_CLIENT_INFO;
+
+
+//
+// This flag is used for to indicate which buffers in the SPMgr are located
+// in the client's address space
+//
+
+#define SECBUFFER_UNMAPPED 0x40000000
+
+
+//////////////////////////////////////////////////////////////////////////
+//
+// The following prototypes are to functions that are provided by the SPMgr
+// to security packages.
+//
+//////////////////////////////////////////////////////////////////////////
+
+typedef NTSTATUS
+(NTAPI LSA_IMPERSONATE_CLIENT) (
+ );
+
+
+typedef NTSTATUS
+(NTAPI LSA_UNLOAD_PACKAGE)(
+ VOID
+ );
+
+typedef NTSTATUS
+(NTAPI LSA_DUPLICATE_HANDLE)(
+ IN HANDLE SourceHandle,
+ OUT PHANDLE DestionationHandle);
+
+
+typedef NTSTATUS
+(NTAPI LSA_SAVE_SUPPLEMENTAL_CREDENTIALS)(
+ IN PLUID LogonId,
+ IN ULONG SupplementalCredSize,
+ IN PVOID SupplementalCreds,
+ IN BOOLEAN Synchronous
+ );
+
+#ifdef _WINDEF_
+
+typedef NTSTATUS
+(NTAPI LSA_GET_WINDOW)(
+ OUT HWND * Window
+ );
+
+#else
+
+typedef NTSTATUS
+(NTAPI LSA_GET_WINDOW)(
+ OUT HANDLE * Window
+ );
+
+#endif
+
+typedef VOID
+(NTAPI LSA_RELEASE_WINDOW)(
+ VOID
+ );
+
+
+
+typedef HANDLE
+(NTAPI LSA_CREATE_THREAD)(
+ IN SEC_ATTRS SecurityAttributes,
+ IN ULONG StackSize,
+ IN SEC_THREAD_START StartFunction,
+ IN PVOID ThreadParameter,
+ IN ULONG CreationFlags,
+ OUT PULONG ThreadId
+ );
+
+
+typedef NTSTATUS
+(NTAPI LSA_GET_CLIENT_INFO)(
+ OUT PSECPKG_CLIENT_INFO ClientInfo
+ );
+
+
+
+typedef HANDLE
+(NTAPI LSA_REGISTER_NOTIFICATION)(
+ IN SEC_THREAD_START StartFunction,
+ IN PVOID Parameter,
+ IN ULONG NotificationType,
+ IN ULONG NotificationFlags,
+ IN ULONG IntervalMinutes,
+ IN OPTIONAL HANDLE WaitEvent
+ );
+
+
+typedef NTSTATUS
+(NTAPI LSA_CANCEL_NOTIFICATION)(
+ IN HANDLE NotifyHandle
+ );
+
+typedef NTSTATUS
+(NTAPI LSA_MAP_BUFFER)(
+ IN PSecBuffer InputBuffer,
+ OUT PSecBuffer OutputBuffer
+ );
+
+typedef NTSTATUS
+(NTAPI LSA_CREATE_TOKEN) (
+ IN PLUID LogonId,
+ IN PTOKEN_SOURCE TokenSource,
+ IN SECURITY_LOGON_TYPE LogonType,
+ IN LSA_TOKEN_INFORMATION_TYPE TokenInformationType,
+ IN PVOID TokenInformation,
+ IN PTOKEN_GROUPS TokenGroups,
+ IN PUNICODE_STRING AccountName,
+ IN PUNICODE_STRING AuthorityName,
+ IN PUNICODE_STRING Workstation,
+ OUT PHANDLE Token,
+ OUT PNTSTATUS SubStatus
+ );
+
+typedef VOID
+(NTAPI LSA_AUDIT_LOGON) (
+ IN NTSTATUS Status,
+ IN NTSTATUS SubStatus,
+ IN PUNICODE_STRING AccountName,
+ IN PUNICODE_STRING AuthenticatingAuthority,
+ IN PUNICODE_STRING WorkstationName,
+ IN OPTIONAL PSID UserSid,
+ IN SECURITY_LOGON_TYPE LogonType,
+ IN PTOKEN_SOURCE TokenSource,
+ IN PLUID LogonId
+ );
+
+#define NOTIFIER_FLAG_NEW_THREAD 0x00000001
+#define NOTIFIER_FLAG_ONE_SHOT 0x00000002
+#define NOTIFIER_FLAG_HANDLE_FREE 0x00000004
+#define NOTIFIER_FLAG_SECONDS 0x80000000
+
+#define NOTIFIER_TYPE_INTERVAL 1
+#define NOTIFIER_TYPE_HANDLE_WAIT 2
+#define NOTIFIER_TYPE_STATE_CHANGE 3
+#define NOTIFIER_TYPE_NOTIFY_EVENT 4
+#define NOTIFIER_TYPE_IMMEDIATE 16
+
+#define NOTIFY_CLASS_RENAME 1
+#define NOTIFY_CLASS_STATE 2
+
+typedef LSA_IMPERSONATE_CLIENT * PLSA_IMPERSONATE_CLIENT;
+typedef LSA_UNLOAD_PACKAGE * PLSA_UNLOAD_PACKAGE;
+typedef LSA_DUPLICATE_HANDLE * PLSA_DUPLICATE_HANDLE ;
+typedef LSA_SAVE_SUPPLEMENTAL_CREDENTIALS * PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS;
+typedef LSA_GET_WINDOW * PLSA_GET_WINDOW;
+typedef LSA_RELEASE_WINDOW * PLSA_RELEASE_WINDOW;
+typedef LSA_CREATE_THREAD * PLSA_CREATE_THREAD;
+typedef LSA_GET_CLIENT_INFO * PLSA_GET_CLIENT_INFO;
+typedef LSA_REGISTER_NOTIFICATION * PLSA_REGISTER_NOTIFICATION;
+typedef LSA_CANCEL_NOTIFICATION * PLSA_CANCEL_NOTIFICATION;
+typedef LSA_MAP_BUFFER * PLSA_MAP_BUFFER;
+typedef LSA_CREATE_TOKEN * PLSA_CREATE_TOKEN;
+typedef LSA_AUDIT_LOGON * PLSA_AUDIT_LOGON;
+
+
+// Functions provided by the SPM to the packages:
+typedef struct _LSA_SECPKG_FUNCTION_TABLE {
+ PLSA_CREATE_LOGON_SESSION CreateLogonSession;
+ PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
+ PLSA_ADD_CREDENTIAL AddCredential;
+ PLSA_GET_CREDENTIALS GetCredentials;
+ PLSA_DELETE_CREDENTIAL DeleteCredential;
+ PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
+ PLSA_FREE_LSA_HEAP FreeLsaHeap;
+ PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
+ PLSA_FREE_CLIENT_BUFFER FreeClientBuffer;
+ PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer;
+ PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer;
+ PLSA_IMPERSONATE_CLIENT ImpersonateClient;
+ PLSA_UNLOAD_PACKAGE UnloadPackage;
+ PLSA_DUPLICATE_HANDLE DuplicateHandle;
+ PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials;
+ PLSA_GET_WINDOW GetWindow;
+ PLSA_RELEASE_WINDOW ReleaseWindow;
+ PLSA_CREATE_THREAD CreateThread;
+ PLSA_GET_CLIENT_INFO GetClientInfo;
+ PLSA_REGISTER_NOTIFICATION RegisterNotification;
+ PLSA_CANCEL_NOTIFICATION CancelNotification;
+ PLSA_MAP_BUFFER MapBuffer;
+ PLSA_CREATE_TOKEN CreateToken;
+ PLSA_AUDIT_LOGON AuditLogon;
+} LSA_SECPKG_FUNCTION_TABLE, *PLSA_SECPKG_FUNCTION_TABLE;
+
+typedef struct _SECPKG_DLL_FUNCTIONS {
+ PLSA_ALLOCATE_LSA_HEAP AllocateHeap;
+ PLSA_FREE_LSA_HEAP FreeHeap;
+} SECPKG_DLL_FUNCTIONS, * PSECPKG_DLL_FUNCTIONS;
+
+
+
+#define PRIMARY_CRED_OWF_PASSWORD 0x1
+#define PRIMARY_CRED_CLEAR_PASSWORD 0x1
+
+typedef struct _SECPKG_PRIMARY_CRED {
+ LUID LogonId;
+ UNICODE_STRING DownlevelName;
+ UNICODE_STRING DomainName;
+ UNICODE_STRING Password;
+ PSID UserSid;
+ ULONG Flags;
+} SECPKG_PRIMARY_CRED, *PSECPKG_PRIMARY_CRED;
+
+//
+// Maximum size of stored credentials.
+//
+
+#define MAX_CRED_SIZE 1024
+
+typedef struct _SecPkg_EventNotify {
+ PVOID pvPackageParameter;
+ ULONG EventClass;
+ ULONG EventSource;
+ ULONG DataSize;
+ PVOID DataPointer;
+} SecPkg_EventNotify, * PSecPkg_EventNotify;
+
+
+typedef struct _SecPkg_StateChange {
+ PVOID pvPackageParameter;
+ ULONG OldState;
+ ULONG NewState;
+ ULONG Type;
+ ULONG Flags;
+} SecPkg_StateChange, * PSecPkg_StateChange;
+
+#define SPM_STATECHANGE_BEGIN 0
+#define SPM_STATECHANGE_COMPLETE 1
+#define SPM_STATECHANGE_REVERT 2
+
+typedef struct _SECPKG_PARAMETERS {
+ ULONG MachineState;
+ ULONG SetupMode;
+ UNICODE_STRING DomainName;
+ PSID DomainSid;
+} SECPKG_PARAMETERS, *PSECPKG_PARAMETERS;
+
+typedef struct _SECPKG_SUPPLEMENTAL_CRED {
+ UNICODE_STRING PackageName;
+ ULONG CredentialSize;
+ PUCHAR Credentials;
+} SECPKG_SUPPLEMENTAL_CRED, *PSECPKG_SUPPLEMENTAL_CRED;
+
+
+
+
+//
+// The following prototypes are to functions that will be called only while
+// in the Security Package Manager context.
+//
+
+typedef NTSTATUS
+(LSA_AP_INITIALIZE_PACKAGE) (
+ IN ULONG AuthenticationPackageId,
+ IN PLSA_DISPATCH_TABLE LsaDispatchTable,
+ IN PLSA_STRING Database OPTIONAL,
+ IN PLSA_STRING Confidentiality OPTIONAL,
+ OUT PLSA_STRING *AuthenticationPackageName
+ );
+
+typedef NTSTATUS
+(LSA_AP_LOGON_USER) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN SECURITY_LOGON_TYPE LogonType,
+ IN PVOID AuthenticationInformation,
+ IN PVOID ClientAuthenticationBase,
+ IN ULONG AuthenticationInformationLength,
+ OUT PVOID *ProfileBuffer,
+ OUT PULONG ProfileBufferLength,
+ OUT PLUID LogonId,
+ OUT PNTSTATUS SubStatus,
+ OUT PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
+ OUT PVOID *TokenInformation,
+ OUT PLSA_UNICODE_STRING *AccountName,
+ OUT PLSA_UNICODE_STRING *AuthenticatingAuthority
+ );
+
+typedef NTSTATUS
+(LSA_AP_LOGON_USER_EX) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN SECURITY_LOGON_TYPE LogonType,
+ IN PVOID AuthenticationInformation,
+ IN PVOID ClientAuthenticationBase,
+ IN ULONG AuthenticationInformationLength,
+ OUT PVOID *ProfileBuffer,
+ OUT PULONG ProfileBufferLength,
+ OUT PLUID LogonId,
+ OUT PNTSTATUS SubStatus,
+ OUT PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
+ OUT PVOID *TokenInformation,
+ OUT PUNICODE_STRING *AccountName,
+ OUT PUNICODE_STRING *AuthenticatingAuthority,
+ OUT PUNICODE_STRING *MachineName
+ );
+
+typedef NTSTATUS
+(LSA_AP_CALL_PACKAGE) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN PVOID ProtocolSubmitBuffer,
+ IN PVOID ClientBufferBase,
+ IN ULONG SubmitBufferLength,
+ OUT PVOID *ProtocolReturnBuffer,
+ OUT PULONG ReturnBufferLength,
+ OUT PNTSTATUS ProtocolStatus
+ );
+
+typedef VOID
+(LSA_AP_LOGON_TERMINATED) (
+ IN PLUID LogonId
+ );
+
+typedef LSA_AP_CALL_PACKAGE LSA_AP_CALL_PACKAGE_UNTRUSTED;
+
+
+typedef NTSTATUS
+(NTAPI SpInitializeFn)(
+ IN ULONG PackageId,
+ IN PSECPKG_PARAMETERS Parameters,
+ IN PLSA_SECPKG_FUNCTION_TABLE FunctionTable
+ );
+
+typedef NTSTATUS
+(NTAPI SpShutdownFn)(
+ VOID
+ );
+
+typedef NTSTATUS
+(NTAPI SpGetInfoFn)(
+ OUT PSecPkgInfo PackageInfo
+ );
+
+typedef NTSTATUS
+(LSA_AP_LOGON_USER_EX2) (
+ IN PLSA_CLIENT_REQUEST ClientRequest,
+ IN SECURITY_LOGON_TYPE LogonType,
+ IN PVOID AuthenticationInformation,
+ IN PVOID ClientAuthenticationBase,
+ IN ULONG AuthenticationInformationLength,
+ OUT PVOID *ProfileBuffer,
+ OUT PULONG ProfileBufferLength,
+ OUT PLUID LogonId,
+ OUT PNTSTATUS SubStatus,
+ OUT PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
+ OUT PVOID *TokenInformation,
+ OUT PUNICODE_STRING *AccountName,
+ OUT PUNICODE_STRING *AuthenticatingAuthority,
+ OUT PUNICODE_STRING *MachineName,
+ OUT PSECPKG_PRIMARY_CRED PrimaryCredentials,
+ OUT PULONG CachedCredentialCount,
+ OUT PSECPKG_SUPPLEMENTAL_CRED * CachedCredentials
+ );
+
+typedef LSA_AP_LOGON_USER_EX2 *PLSA_AP_LOGON_USER_EX2;
+#define LSA_AP_NAME_LOGON_USER_EX2 "LsaApLogonUserEx2\0"
+
+typedef NTSTATUS
+(NTAPI SpAcceptCredentialsFn)(
+ IN SECURITY_LOGON_TYPE LogonType,
+ IN PUNICODE_STRING AccountName,
+ IN PSECPKG_PRIMARY_CRED PrimaryCredentials,
+ IN PSECPKG_SUPPLEMENTAL_CRED SupplementalCredentials
+ );
+
+typedef NTSTATUS
+(NTAPI SpAcquireCredentialsHandleFn)(
+ IN OPTIONAL PUNICODE_STRING PrincipalName,
+ IN ULONG CredentialUseFlags,
+ IN OPTIONAL PLUID LogonId,
+ IN PVOID AuthorizationData,
+ IN PVOID GetKeyFunciton,
+ IN PVOID GetKeyArgument,
+ OUT PULONG CredentialHandle,
+ OUT PTimeStamp ExpirationTime
+ );
+
+typedef NTSTATUS
+(NTAPI SpFreeCredentialsHandleFn)(
+ IN ULONG CredentialHandle
+ );
+
+typedef NTSTATUS
+(NTAPI SpQueryCredentialsAttributesFn)(
+ IN ULONG CredentialHandle,
+ IN ULONG CredentialAttribute,
+ IN OUT PSecBuffer Buffer
+ );
+
+typedef NTSTATUS
+(NTAPI SpSaveCredentialsFn)(
+ IN ULONG CredentialHandle,
+ IN PSecBuffer Credentials);
+
+typedef NTSTATUS
+(NTAPI SpGetCredentialsFn)(
+ IN ULONG CredentialHandle,
+ IN OUT PSecBuffer Credentials
+ );
+
+typedef NTSTATUS
+(NTAPI SpDeleteCredentialsFn)(
+ IN ULONG CredentialHandle,
+ IN PSecBuffer Key
+ );
+
+typedef NTSTATUS
+(NTAPI SpInitLsaModeContextFn)(
+ IN OPTIONAL ULONG CredentialHandle,
+ IN OPTIONAL ULONG ContextHandle,
+ IN OPTIONAL PUNICODE_STRING TargetName,
+ IN ULONG ContextRequirements,
+ IN ULONG TargetDataRep,
+ IN PSecBufferDesc InputBuffers,
+ OUT PULONG NewContextHandle,
+ IN OUT PSecBufferDesc OutputBuffers,
+ OUT PULONG ContextAttributes,
+ OUT PTimeStamp ExpirationTime,
+ OUT PBOOLEAN MappedContext,
+ OUT PSecBuffer ContextData
+ );
+
+
+
+
+typedef NTSTATUS
+(NTAPI SpDeleteContextFn)(
+ IN ULONG ContextHandle
+ );
+
+typedef NTSTATUS
+(NTAPI SpApplyControlTokenFn)(
+ IN ULONG ContextHandle,
+ IN PSecBufferDesc ControlToken);
+
+
+typedef NTSTATUS
+(NTAPI SpAcceptLsaModeContextFn)(
+ IN OPTIONAL ULONG CredentialHandle,
+ IN OPTIONAL ULONG ContextHandle,
+ IN PSecBufferDesc InputBuffer,
+ IN ULONG ContextRequirements,
+ IN ULONG TargetDataRep,
+ OUT PULONG NewContextHandle,
+ OUT PSecBufferDesc OutputBuffer,
+ OUT PULONG ContextAttributes,
+ OUT PTimeStamp ExpirationTime,
+ OUT PBOOLEAN MappedContext,
+ OUT PSecBuffer ContextData
+ );
+
+
+
+
+typedef NTSTATUS
+(NTAPI SpGetUserInfoFn)(
+ IN PLUID LogonId,
+ IN ULONG Flags,
+ OUT PSecurityUserData * UserData
+ );
+
+
+typedef NTSTATUS
+(NTAPI SpGrantProxyFn)(
+ IN ULONG CredentialHandle,
+ IN OPTIONAL PUNICODE_STRING ProxyName,
+ IN PROXY_CLASS ProxyClass,
+ IN OPTIONAL PUNICODE_STRING TargetName,
+ IN ACCESS_MASK ContainerMask,
+ IN ACCESS_MASK ObjectMask,
+ IN PTimeStamp ExpirationTime,
+ IN PSecBuffer AccessInformation,
+ OUT PPROXY_REFERENCE ProxyReference
+ );
+
+typedef NTSTATUS
+(NTAPI SpRevokeProxyFn)(
+ IN ULONG CredentialHandle,
+ IN OPTIONAL PPROXY_REFERENCE ProxyReference,
+ IN OPTIONAL PUNICODE_STRING ProxyName
+ );
+
+typedef NTSTATUS
+(NTAPI SpInvokeProxyFn)(
+ IN ULONG CredentialHandle,
+ IN OPTIONAL PPROXY_REFERENCE ProxyReference,
+ IN OPTIONAL PUNICODE_STRING ProxyName,
+ OUT PULONG ContextHandle,
+ OUT PLUID LogonId,
+ OUT PULONG CachedCredentialCount,
+ OUT PSECPKG_SUPPLEMENTAL_CRED * CachedCredentials,
+ OUT PSecBuffer ContextData
+ );
+
+typedef NTSTATUS
+(NTAPI SpRenewProxyFn)(
+ IN ULONG CredentialHandle,
+ IN OPTIONAL PPROXY_REFERENCE ProxyReference,
+ IN OPTIONAL PUNICODE_STRING ProxyName,
+ IN PTimeStamp ExpirationTime
+ );
+
+
+typedef struct _SECPKG_FUNCTION_TABLE {
+ PLSA_AP_INITIALIZE_PACKAGE InitializePackage;
+ PLSA_AP_LOGON_USER LogonUser;
+ PLSA_AP_CALL_PACKAGE CallPackage;
+ PLSA_AP_LOGON_TERMINATED LogonTerminated;
+ PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted;
+ PLSA_AP_LOGON_USER_EX LogonUserEx;
+ PLSA_AP_LOGON_USER_EX2 LogonUserEx2;
+ SpInitializeFn * Initialize;
+ SpShutdownFn * Shutdown;
+ SpGetInfoFn * GetInfo;
+ SpAcceptCredentialsFn * AcceptCredentials;
+ SpAcquireCredentialsHandleFn * AcquireCredentialsHandle;
+ SpFreeCredentialsHandleFn * FreeCredentialsHandle;
+ SpSaveCredentialsFn * SaveCredentials;
+ SpGetCredentialsFn * GetCredentials;
+ SpDeleteCredentialsFn * DeleteCredentials;
+ SpInitLsaModeContextFn * InitLsaModeContext;
+ SpAcceptLsaModeContextFn * AcceptLsaModeContext;
+ SpDeleteContextFn * DeleteContext;
+ SpApplyControlTokenFn * ApplyControlToken;
+ SpGetUserInfoFn * GetUserInfo;
+ SpGrantProxyFn * GrantProxy;
+ SpRevokeProxyFn * RevokeProxy;
+ SpInvokeProxyFn * InvokeProxy;
+ SpRenewProxyFn * RenewProxy;
+} SECPKG_FUNCTION_TABLE, *PSECPKG_FUNCTION_TABLE;
+
+//
+// The following prototypes are to functions that will be called while in the
+// context of a user process that is using the functions through the security
+// DLL.
+//
+
+typedef NTSTATUS
+(NTAPI SpInstanceInitFn)(
+ IN ULONG Version,
+ IN PSECPKG_DLL_FUNCTIONS FunctionTable,
+ OUT PVOID * UserFunctions
+ );
+
+
+typedef NTSTATUS
+(NTAPI SpInitUserModeContextFn)(
+ IN ULONG ContextHandle,
+ IN PSecBuffer PackedContext
+ );
+
+typedef NTSTATUS
+(NTAPI SpMakeSignatureFn)(
+ IN ULONG ContextHandle,
+ IN ULONG QualityOfProtection,
+ IN PSecBufferDesc MessageBuffers,
+ IN ULONG MessageSequenceNumber
+ );
+
+typedef NTSTATUS
+(NTAPI SpVerifySignatureFn)(
+ IN ULONG ContextHandle,
+ IN PSecBufferDesc MessageBuffers,
+ IN ULONG MessageSequenceNumber,
+ OUT PULONG QualityOfProtection
+ );
+
+typedef NTSTATUS
+(NTAPI SpSealMessageFn)(
+ IN ULONG ContextHandle,
+ IN ULONG QualityOfProtection,
+ IN PSecBufferDesc MessageBuffers,
+ IN ULONG MessageSequenceNumber
+ );
+
+typedef NTSTATUS
+(NTAPI SpUnsealMessageFn)(
+ IN ULONG ContextHandle,
+ IN PSecBufferDesc MessageBuffers,
+ IN ULONG MessageSequenceNumber,
+ OUT PULONG QualityOfProtection
+ );
+
+
+typedef NTSTATUS
+(NTAPI SpGetContextTokenFn)(
+ IN ULONG ContextHandle,
+ OUT PHANDLE ImpersonationToken
+ );
+
+typedef NTSTATUS
+(NTAPI SpQueryContextAttributesFn)(
+ IN ULONG ContextHandle,
+ IN ULONG ContextAttribute,
+ IN OUT PVOID Buffer);
+
+
+typedef NTSTATUS
+(NTAPI SpCompleteAuthTokenFn)(
+ IN ULONG ContextHandle,
+ IN PSecBufferDesc InputBuffer
+ );
+
+
+typedef NTSTATUS
+(NTAPI SpFormatCredentialsFn)(
+ IN PSecBuffer Credentials,
+ OUT PSecBuffer FormattedCredentials
+ );
+
+typedef NTSTATUS
+(NTAPI SpMarshallSupplementalCredsFn)(
+ IN ULONG CredentialSize,
+ IN PUCHAR Credentials,
+ OUT PULONG MarshalledCredSize,
+ OUT PVOID * MarshalledCreds);
+
+
+typedef struct _SECPKG_USER_FUNCTION_TABLE {
+ SpInstanceInitFn * InstanceInit;
+ SpInitUserModeContextFn * InitUserModeContext;
+ SpMakeSignatureFn * MakeSignature;
+ SpVerifySignatureFn * VerifySignature;
+ SpSealMessageFn * SealMessage;
+ SpUnsealMessageFn * UnsealMessage;
+ SpGetContextTokenFn * GetContextToken;
+ SpQueryContextAttributesFn * QueryContextAttributes;
+ SpCompleteAuthTokenFn * CompleteAuthToken;
+ SpDeleteContextFn * DeleteUserModeContext;
+ SpFormatCredentialsFn * FormatCredentials;
+ SpMarshallSupplementalCredsFn * MarshallSupplementalCreds;
+} SECPKG_USER_FUNCTION_TABLE, *PSECPKG_USER_FUNCTION_TABLE;
+
+typedef NTSTATUS
+(SEC_ENTRY * SpLsaModeInitializeFn)(
+ IN ULONG LsaVersion,
+ OUT PULONG PackageVersion,
+ OUT PSECPKG_FUNCTION_TABLE * ppTables,
+ OUT PULONG pcTables);
+
+typedef NTSTATUS
+(SEC_ENTRY * SpUserModeInitializeFn)(
+ IN ULONG LsaVersion,
+ OUT PULONG PackageVersion,
+ OUT PSECPKG_USER_FUNCTION_TABLE *ppTables,
+ OUT PULONG pcTables
+ );
+
+
+#define SP_ORDINAL_LSA_INIT 0
+#define SP_ORDINAL_LOGONUSER 1
+#define SP_ORDINAL_CALLPACKAGE 2
+#define SP_ORDINAL_LOGONTERMINATED 3
+#define SP_ORDINAL_CALLPACKAGEUNTRUSTED 4
+#define SP_ORDINAL_LOGONUSEREX 5
+#define SP_ORDINAL_LOGONUSEREX2 6
+#define SP_ORDINAL_INITIALIZE 7
+#define SP_ORDINAL_SHUTDOWN 8
+#define SP_ORDINAL_GETINFO 9
+#define SP_ORDINAL_ACCEPTCREDS 10
+#define SP_ORDINAL_ACQUIRECREDHANDLE 11
+#define SP_ORDINAL_FREECREDHANDLE 12
+#define SP_ORDINAL_SAVECRED 13
+#define SP_ORDINAL_GETCRED 14
+#define SP_ORDINAL_DELETECRED 15
+#define SP_ORDINAL_INITLSAMODECTXT 16
+#define SP_ORDINAL_ACCEPTLSAMODECTXT 17
+#define SP_ORDINAL_DELETECTXT 18
+#define SP_ORDINAL_APPLYCONTROLTOKEN 19
+#define SP_ORDINAL_GETUSERINFO 20
+#define SP_ORDINAL_GRANTPROXY 21
+#define SP_ORDINAL_REVOKEPROXY 22
+#define SP_ORDINAL_INVOKEPROXY 23
+#define SP_ORDINAL_RENEWPROXY 24
+
+#define SP_MAX_TABLE_ORDINAL (SP_ORDINAL_RENEWPROXY + 1)
+#define SP_MAX_AUTHPKG_ORDINAL (SP_ORDINAL_LOGONUSEREX)
+
+#define SP_ORDINAL_INSTANCEINIT 32
+
+
+#define SECPKG_LSAMODEINIT_NAME "SpLsaModeInitialize"
+#define SECPKG_USERMODEINIT_NAME "SpUserModeInitialize"
+
+#define SECPKG_INTERFACE_VERSION 0x00010000
+
+
+#endif // __SECPKG_H__
diff --git a/public/sdk/inc/secpri.h b/public/sdk/inc/secpri.h
new file mode 100644
index 000000000..1bd829318
--- /dev/null
+++ b/public/sdk/inc/secpri.h
@@ -0,0 +1,43 @@
+//+-----------------------------------------------------------------------
+//
+// Microsoft Windows
+//
+// Copyright (c) Microsoft Corporation 1992 - 1995
+//
+// File: secpri.h
+//
+// Contents: private functions in security.dll
+//
+//
+// History: 6/9/95 MikeSw Created
+//
+//------------------------------------------------------------------------
+
+#ifndef __SECPRI_H__
+#define __SECPRI_H__
+
+HRESULT
+SecIStoreSecret(
+ IN PUNICODE_STRING SecretName,
+ IN OPTIONAL PUNICODE_STRING SecretValue,
+ IN OPTIONAL PUNICODE_STRING OldSecretValue,
+ IN OPTIONAL GUID * EmulatedDomainId
+ );
+
+HRESULT
+SecIRetrieveSecret(
+ IN PUNICODE_STRING SecretName,
+ OUT PUNICODE_STRING SecretValue,
+ OUT OPTIONAL PUNICODE_STRING OldSecretValue,
+ OUT OPTIONAL PLARGE_INTEGER LastSetTime,
+ IN OPTIONAL GUID * EmulatedDomainId
+ );
+
+HRESULT
+SecIEnumerateSecrets(
+ IN OPTIONAL GUID * EmulatedDomainId,
+ OUT PULONG CountOfSecrets,
+ OUT PUNICODE_STRING * SecretNames
+ );
+
+#endif
diff --git a/public/sdk/inc/security.h b/public/sdk/inc/security.h
new file mode 100644
index 000000000..5e00e71ef
--- /dev/null
+++ b/public/sdk/inc/security.h
@@ -0,0 +1,93 @@
+//+-----------------------------------------------------------------------
+//
+// Microsoft Windows
+//
+// Copyright (c) Microsoft Corporation 1991 - 1992
+//
+// File: Security.h
+//
+// Contents: Toplevel include file for security aware components
+//
+//
+// History: 06 Aug 92 RichardW Created
+// 23 Sep 92 PeterWi Add security object include files
+//
+//------------------------------------------------------------------------
+
+
+// This file will go out and pull in all the header files that you need,
+// based on defines that you issue. The following macros are used.
+
+// NOTE: Update this section if you add new files:
+//
+// SECURITY_KERNEL Use the kernel interface, not the usermode
+// SECURITY_PACKAGE Include defines necessary for security packages
+// SECURITY_KERBEROS Include everything needed to talk to the kerberos pkg.
+// SECURITY_NTLM Include everything to talk to ntlm package.
+// SECURITY_OBJECTS Include all Security Admin Object definitions.
+
+//
+// Each of the files included here are surrounded by guards, so you don't
+// need to worry about including this file multiple times with different
+// flags defined
+//
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#ifndef SSPI_PROXY_CLASS
+#define SSPI_PROXY_CLASS PROXY_CLASS
+#endif
+
+#include <sspi.h>
+
+#if defined(SECURITY_WIN32) || defined(SECURITY_KERNEL)
+#include <secext.h>
+#endif
+
+//
+// Include the error codes:
+//
+
+#if ISSP_LEVEL == 32
+#include <issperr.h>
+#endif
+
+#if ISSP_LEVEL == 16
+#include <issper16.h>
+#endif
+
+
+
+// Include security package headers:
+
+#ifdef SECURITY_PACKAGE
+
+#include <secpkg.h>
+
+#endif // SECURITY_PACKAGE
+
+
+#ifdef SECURITY_KERBEROS
+
+#include <kerbcon.h>
+#include <kerberos.h>
+
+#endif
+
+#ifdef SECURITY_NTLM
+
+#include <ntlmsp.h>
+
+#endif // SECURITY_NTLM
+
+
+// Include security object definitions
+
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/public/sdk/inc/sedapi.h b/public/sdk/inc/sedapi.h
new file mode 100644
index 000000000..f1e97f6aa
--- /dev/null
+++ b/public/sdk/inc/sedapi.h
@@ -0,0 +1,743 @@
+/**********************************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1990-1993 **/
+/**********************************************************************/
+
+/*
+ SEDAPI.h
+
+ This File contains the prototypes and descriptions for the interface to
+ the generic security editor dialogs for NT objects.
+
+ FILE HISTORY:
+ Johnl 02-Aug-1991 Created
+ Johnl 27-Dec-1991 Updated to reflect reality
+ JohnL 25-Feb-1992 Nuked NewObjValidMask (new obj use generic/stan.
+ only, Added GENERIC_MAPPING param.
+ Johnl 15-Jan-1993 Added CantRead flags, cleaned up comments
+
+*/
+
+#ifndef _SEDAPI_H_
+#define _SEDAPI_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// The following are status codes indicating the state of the permissions on
+// the resource we are setting permissions for.
+//
+#define SED_STATUS_MODIFIED (1)
+#define SED_STATUS_NOT_MODIFIED (2)
+#define SED_STATUS_NOT_ALL_MODIFIED (3)
+#define SED_STATUS_FAILED_TO_MODIFY (4)
+
+//
+// Current Security editor revision level.
+//
+#define SED_REVISION (1)
+
+#define SED_REVISION1 (1)
+
+//
+// The following structure is for user help in the various dialogs. Each
+// use of the security editor (whether for files/directories, Registry, Printer
+// stuff etc.) will have its own set of permission names/capabilities, thus
+// each will require its own help file. This structure allows the client
+// of the security editor to specify which help files and which help
+// contexts should be used for each dialog.
+//
+typedef struct _SED_HELP_INFO
+{
+ //
+ // The name of the ".hlp" file to be passed to the help engine APIs.
+ //
+ LPWSTR pszHelpFileName ;
+
+ //
+ // An array of help contexts corresponding to each dialog.
+ // Use the HC_ manifiests defined below to fill this array. The
+ // manifests correspond to the following dialogs:
+ //
+ // HC_MAIN_DLG - First dialog brought up by the ACL editor
+ // HC_SPECIAL_ACCESS_DLG - Container/object special access dialog
+ // HC_NEW_ITEM_SPECIAL_ACCESS_DLG - New item special access dialog
+ // (not needed for containers that do not support new item
+ // permissions).
+ // HC_ADD_USER_DLG - The "Add" dialog (brought up when the "Add..."
+ // button is pressed).
+ // HC_ADD_USER_MEMBERS_LG_DLG - The Local Group members dialog (brought
+ // up from the "Members" button in the "Add" dialog)
+ // HC_ADD_USER_MEMBERS_GG_DLG - The Global Group members dialog (brought
+ // up from the "Members" button in the "Add" dialog).
+ //
+ ULONG aulHelpContext[7] ;
+} SED_HELP_INFO, *PSED_HELP_INFO ;
+
+#define HC_MAIN_DLG 0
+#define HC_SPECIAL_ACCESS_DLG 1
+#define HC_NEW_ITEM_SPECIAL_ACCESS_DLG 2
+#define HC_ADD_USER_DLG 3
+#define HC_ADD_USER_MEMBERS_LG_DLG 4 // Members Local Group Dialog
+#define HC_ADD_USER_MEMBERS_GG_DLG 5 // Members Global Group Dialog
+#define HC_ADD_USER_SEARCH_DLG 6 // Search Dialog
+
+//
+// This data type defines information related to a single class of object.
+// For example, a FILE object, or PRINT_QUEUE object would have a structure
+// like this defined.
+//
+
+typedef struct _SED_OBJECT_TYPE_DESCRIPTOR
+{
+ //
+ // The current revision level being used by the client. This is for
+ // support in case structure definitions change. It should contain
+ // the current revision supported.
+ //
+ UCHAR Revision ;
+
+ //
+ // Defines whether the object is a container or not.
+ // TRUE indicates the object may contain other objects. Means the
+ // user can Tree apply the permissions if desired.
+ //
+ BOOLEAN IsContainer;
+
+ //
+ // Defines whether "New Object" permissions can be assigned (i.e.,
+ // a "New Object" is an object that will be created in the future).
+ //
+ // This field is ignored when editting Auditting information
+ //
+ BOOLEAN AllowNewObjectPerms ;
+
+ //
+ // This flag, if set to TRUE, will make the ACL editor map all specific
+ // permissions in the security descriptor to the corresponding generic
+ // permissions (using the passed generic mapping) and clear the mapped
+ // specific bits.
+ //
+ // * Note that specific bits for Generic All will always *
+ // * be mapped regardless of this flag (due to Full Control *
+ // * in the special access dialogs). *
+ //
+ // Clients who only expose the Generic and Standard permissions will
+ // generally set this flag to TRUE. If you are exposing the specific
+ // bits (note you should not expose both specific and generic except for
+ // Generic All) then this flag should be FALSE.
+ //
+ BOOLEAN MapSpecificPermsToGeneric ;
+
+ //
+ // The generic mapping for the container or object permissions.
+ //
+ // This is used for mapping the specific permissions to the generic
+ // flags.
+ //
+ PGENERIC_MAPPING GenericMapping ;
+
+ //
+ // The generic mapping for the New Object permissions.
+ //
+ // This is used for mapping the specific permissions to the generic
+ // flags for new object permissions (not used if AllowNewObjectPerms
+ // is FALSE).
+ //
+ PGENERIC_MAPPING GenericMappingNewObjects ;
+
+ //
+ // The (localized) name of the object type.
+ // For example, "File", "Print Job" or "Directory".
+ //
+ LPWSTR ObjectTypeName;
+
+ //
+ // The help information suitable for the type of object the Security
+ // Editor will be operating on.
+ //
+ PSED_HELP_INFO HelpInfo ;
+
+ //
+ // The (localized) title to display if protection/auditting can be applied
+ // to sub-objects/sub-containers. This is the Tree apply
+ // checkbox title.
+ //
+ // This string will be presented with a checkbox before it.
+ // If this box is checked, then the callback entry point
+ // will be called with the ApplyToSubContainers flag set to TRUE.
+ //
+ // This field is ignored if the IsContainer field is FALSE.
+ //
+ // As an example of how this field is used, the File Manager may
+ // specify the following string in the DIRECTORY object's
+ // descriptor:
+ //
+ // "R&eplace Permissions on Subdirectories"
+ //
+ LPWSTR ApplyToSubContainerTitle;
+
+ //
+ // The (localized) title to display if protection/auditting can be applied
+ // to sub-objects.
+ //
+ // This string will be presented with a checkbox before it.
+ // If this box is checked, then the callback entry point
+ // will be called with the ApplyTuSubObjects flag set to TRUE.
+ //
+ // This field is ignored if the IsContainer flag is FALSE or the
+ // AllowNewObjectPerms flag is FALSE.
+ //
+ // As an example of how this field is used, the File Manager may
+ // specify the following string in the DIRECTORY object's
+ // descriptor:
+ //
+ // "Replace Permissions on Existing &Files"
+ //
+ LPWSTR ApplyToObjectsTitle;
+
+ //
+ // The (localized) text is presented in a confirmation message box
+ // that is displayed to the user after the user has checked the
+ // "ApplyToSubContainer" checkbox.
+ //
+ // This field is ignored if the IsContainer field is FALSE.
+ //
+ // For directories, this text might be:
+ //
+ // "Do you want to replace the permissions on all existing
+ // files and subdirectories within %1?"
+ //
+ // %1 will be substituted by the Acl Editor with the object name
+ // field (i.e., "C:\MyDirectory")
+ //
+ LPWSTR ApplyToSubContainerConfirmation ;
+
+ //
+ // The (localized) title to display in the "Type of Access" combo
+ // that brings up the Special access dialog. This same title is
+ // used for the title of this dialog except the "..." is stripped
+ // from the end.
+ //
+ // This field is ignored if the System Acl editor was invoked.
+ //
+ // As an example of how this field is used, the File Manager may
+ // specify the following string in the DIRECTORY object's
+ // descriptor:
+ //
+ // "Special Directory Access..."
+ //
+ LPWSTR SpecialObjectAccessTitle ;
+
+ //
+ // The (localized) title to display in the "Type of Access" combo
+ // that brings up the Special new object access dialog. This same title
+ // is used for the title of this dialog except the "..." is stripped
+ // from the end.
+ //
+ // This item is required if AllowNewObjectPerms is TRUE, it is ignored
+ // if AllowNewObjectPerms is FALSE or we are editting a SACL.
+ //
+ // As an example of how this field is used, the file browser may
+ // specify the following string in the DIRECTORY object's
+ // descriptor:
+ //
+ // "Special File Access..."
+ //
+ LPWSTR SpecialNewObjectAccessTitle ;
+
+} SED_OBJECT_TYPE_DESCRIPTOR, *PSED_OBJECT_TYPE_DESCRIPTOR;
+
+
+//
+// It is desirable to display access names that are
+// meaningful in the context of the type of object whose ACL
+// is being worked on. For example, for a PRINT_QUEUE object type,
+// it may be desirable to display an access type named "Submit Print Jobs".
+// The following structures are used for defining these application defined
+// access groupings that appear in the "Type of access" combobox and the
+// Special Access dialogs.
+//
+
+//
+// The following are the different permission description types that the user
+// will manipulate for setting permissions.
+//
+// SED_DESC_TYPE_RESOURCE - The SED_APPLICATION_ACCESS structure is describing
+// an object or container permission that will be displayed in the main
+// permissions listbox. These should be the permissions that the
+// user will use all the time and will generally be a conglomeration
+// of permissions (for example, "Edit" which would include Read, Write
+// and possibly delete).
+//
+// SED_DESC_TYPE_CONT_AND_NEW_OBJECT - The structure is describing a container
+// and new object permission that will be shown in the main permissions
+// listbox. The Container permission is contained in AccessMask1 and
+// the New Object resource is in AccessMask2. When the permission name
+// is selected by the user, the container access permissions *and* the
+// new object access permissions will be set to the corresponding access
+// mask. This is useful when inherittance can be used to set the New
+// Object Access permissions.
+//
+// SED_DESC_TYPE_RESOURCE_SPECIAL - The structure is describing an object
+// or container permissions that will be displayed in the Special
+// access dialog. These are generally generic/standard permissions (such as
+// Read, Write, Execute, Set Permissions etc.). The permission names
+// will appear next to checkboxes, thus they should have the "&"
+// accelerator next to the appropriate letter.
+//
+// SED_DESC_TYPE_NEW_OBJECT_SPECIAL - The structure is describing a new object
+// permission that will be shown in the Special New Object access
+// dialog. This is used the same way the SED_DESC_TYPE_RESOURCE_SPECIAL
+// type is used, that is, the permissions should be the primitive, per
+// bit permissions. The permission names
+// will appear next to checkboxes, thus they should have the "&"
+// accelerator next to the appropriate letter.
+//
+// SED_DESC_TYPE_AUDIT - The structure is describing an Audit access mask.
+// AccessMask1 contains the audit mask to be associated with the
+// permission title string. The title string will appear next to
+// a checkbox, thus they should have the "&" accelerator next to
+// the appropriate letter in the title string.
+//
+// Note that they cannot be freely intermixed, use the following table
+// as a guide for which ones to use where:
+//
+// IsContainer AllowNewObjectPerms
+// False False RESOURCE, RESOURCE_SPECIAL
+// True False RESOURCE, RESOURCE_SPECIAL
+// True True RESOURCE_SPECIAL, CONT_AND_NEW_OBJECT,
+// NEW_OBJECT_SPECIAL
+// True False SED_DESC_TYPE_AUDIT
+//
+// Note that in the third case (IsContainer && AllowNewObjectPerms) you
+// *cannot* use the RESOURCE permission description type, you must always
+// associate the permission on the resource with new object permissions.
+//
+#define SED_DESC_TYPE_RESOURCE (1)
+#define SED_DESC_TYPE_RESOURCE_SPECIAL (2)
+
+#define SED_DESC_TYPE_CONT_AND_NEW_OBJECT (3)
+#define SED_DESC_TYPE_NEW_OBJECT_SPECIAL (4)
+
+#define SED_DESC_TYPE_AUDIT (5)
+
+
+//
+// To describe the permissions to the ACL Editor, build an array consisting
+// of SED_APPLICATION_ACCESS structures. The use of each field is as follows:
+//
+// Type - Contains one of the SED_DESC_TYPE_* manifests, determines what the
+// rest of the fields in this structure mean. Specifically, if Type
+// equals:
+//
+// AccessMask1 AccessMask2 PermissionTitle
+// ============================================
+//SED_DESC_TYPE_RESOURCE Perm Not Used Name of this Perm
+//SED_DESC_TYPE_RESOURCE_SPECIAL Special Perm Not Used Name of this Perm
+//SED_DESC_TYPE_CONT_AND_NEW_OBJECT Perm Special Perm Name of this Perm
+//SED_DESC_TYPE_NEW_OBJECT_SPECIAL Special Perm Not Used Name of this Perm
+//SED_DESC_TYPE_AUDIT Audit Mask Not Used Name of this Audit mask
+//
+// AccessMask1 - Access mask to be associated with the PermissionTitle string,
+// see the table under Type for what this field contains.
+//
+// AccessMask2 - Either used for Special permissions or ignored.
+//
+// PermissionTitle - Title string this permission set is being associated with.
+typedef struct _SED_APPLICATION_ACCESS
+{
+ UINT Type ;
+ ACCESS_MASK AccessMask1 ;
+ ACCESS_MASK AccessMask2 ;
+ LPWSTR PermissionTitle ;
+
+} SED_APPLICATION_ACCESS, *PSED_APPLICATION_ACCESS;
+
+//
+// This can be used for AccessMask2 when dealing with containers that support
+// new object permissions and you need a SED_DESC_TYPE_CONT_AND_NEW_OBJECT
+// that doesn't have a new object permission.
+//
+#define ACCESS_MASK_NEW_OBJ_NOT_SPECIFIED (0xffffffff)
+
+
+typedef struct _SED_APPLICATION_ACCESSES
+{
+ //
+ // The count field indicates how many application defined access groupings
+ // are defined by this data structure. The AccessGroup[] array then
+ // contains that number of elements.
+ //
+
+ ULONG Count;
+ PSED_APPLICATION_ACCESS AccessGroup ;
+
+ //
+ // The default permission that should be selected in in the
+ // "Type of Access" combobox of the "Add" dialog. Should be one of
+ // the SED_DESC_TYPE_RESOURCE permissions (i.e., what is shown in the
+ // main dialog).
+ //
+ // The default permission for "Files" & "Directories" for example might
+ // be:
+ //
+ // "Read"
+ //
+
+ LPWSTR DefaultPermName ;
+
+} SED_APPLICATION_ACCESSES, *PSED_APPLICATION_ACCESSES ;
+
+/*++
+
+Routine Description:
+
+ This routine is provided by a caller of the graphical ACL editor.
+
+ It is called by the ACL editor to apply security/auditting info to
+ target object(s) when requested by the user.
+
+ All error notification should be performed in this call. To dismiss
+ the ACL Editor, return 0, otherwise return a non-zero error code.
+
+Parameters:
+
+ hwndParent - Parent window handle to use for message boxes or subsequent
+ dialogs.
+
+ hInstance - Instance handle suitable for retrieving resources from the
+ applications .exe or .dll.
+
+ CallbackContext - This is the value passed as the CallbackContext argument
+ to the SedDiscretionaryAclEditor() or SedSystemAclEditor api when
+ the graphical editor was invoked.
+
+ SecDesc - This parameter points to a security descriptor
+ that should be applied to this object/container and optionally
+ sub-containers if the user selects the apply to tree option.
+
+ SecDescNewObjects - This parameter is used only when operating on a
+ resource that is a container and supports new objects (for
+ example, directories). If the user chooses the apply to tree option,
+ then this security descriptor will have all of the "New Object"
+ permission ACEs contained in the primary container and the inherit
+ bits will be set appropriately.
+
+ ApplyToSubContainers - When TRUE, indicates that Dacl/Sacl is to be applied
+ to sub-containers of the target container as well as the target container.
+ This will only be TRUE if the target object is a container object.
+
+ ApplyToSubObjects - When TRUE, indicates the Dacl/Sacl is to be applied to
+ sub-objects of the target object.
+ The SecDescNewObjects should be used for applying the permissions
+ in this instance.
+
+ StatusReturn - This status flag indicates what condition the
+ resources permissions were left in after an error occurred.
+
+ SED_STATUS_MODIFIED - This (success) status code indicates the
+ protection has successfully been modified.
+
+ SED_STATUS_NOT_ALL_MODIFIED - This (warning) status code
+ indicates an attempt to modify the resource permissions
+ has only partially succeeded.
+
+ SED_STATUS_FAILED_TO_MODIFY - This (error) status code indicates
+ an attempt to modify the permissions has failed completely.
+
+Return Status:
+
+ The return code is a standard Win32 error code. All errors that occur
+ must be reported inside this function. If the return code is NO_ERROR,
+ then the security editor will dismiss itself. If you do not wish the
+ security editor dismissed, return a non-zero value (the actual value is
+ ignored).
+
+--*/
+typedef DWORD (WINAPI *PSED_FUNC_APPLY_SEC_CALLBACK)(
+ HWND hwndParent,
+ HANDLE hInstance,
+ ULONG CallbackContext,
+ PSECURITY_DESCRIPTOR SecDesc,
+ PSECURITY_DESCRIPTOR SecDescNewObjects,
+ BOOLEAN ApplyToSubContainers,
+ BOOLEAN ApplyToSubObjects,
+ LPDWORD StatusReturn
+ ) ;
+
+/*++
+
+Routine Description:
+
+ This routine invokes the graphical Discretionary ACL editor DLL. The
+ graphical DACL editor may be used to modify or create:
+
+ - A default Discretionary ACL
+
+ - A Discretionary ACL for a particular type of object.
+
+ - A Discretionary ACL for a particular named instance of an
+ object.
+
+ Additionally, in the case where the ACl is that of a named object
+ instance, and that object may contain other object instances, the
+ user will be presented with the opportunity to apply the protection
+ to the entire sub-tree of objects.
+
+ If an error occurs, the user will be properly notified by the ACL
+ editor.
+
+
+Parameters:
+
+ Owner - Handle of the owner window the security editor should use for
+ dialog creation and error messages. This will lock down the passed
+ window.
+
+ Instance - Instance handle of the application. This will be passed
+ to the security editor callback where it can be used for retrieving
+ any necessary resources such as message strings, dialog boxes etc.
+
+ Server - The server name in the form "\\server" that the resource resides
+ on. This is used for adding users, groups and aliases to the
+ DACL and SACL. NULL indicates the local machine.
+
+ ObjectType - This parameter is used to specify information
+ about the type of object whose security is being edited.
+
+ ApplicationAccesses - This parameter is used to specify
+ groupings of access types when operating
+ on security for the specified object type. For example, it may be
+ useful to define an access type called "Submit Print Job" for a
+ PRINT_QUEUE class of object.
+
+ ObjectName - This optional parameter is used to pass the name of the
+ object whose security is being edited.
+
+ ApplySecurityCallbackRoutine - This parameter is used to provide the
+ address of a routine to be called to apply security to either the
+ object specified, or, in the case that the object is a container,
+ to sub-containers or sub-non-containers of that object.
+
+ CallbackContext - This value is opaque to the DACL editor. Its only
+ purpose is so that a context value may be passed back to the
+ application via the ApplySecurityCallbackRoutine when that routine
+ is invoked. This may be used by the application to re-locate
+ context related to the edit session. For example, it may be a
+ handle to the object whose security is being edited.
+
+ SecurityDescriptor - This parameter points to a security descriptor
+ containing the current discretionary ACL of the object. This
+ security descriptor may, but does not have to, contain the owner
+ and group of that object as well. Note that the security descriptor's
+ DaclPresent flag may be FALSE, indicating either that the object
+ had no protection, or that the user couldn't read the protection.
+ This security descriptor will not be modified by the ACL editor.
+ This may be NULL, in which case, the user will be presented with
+ an empty permission list.
+
+ CouldntReadDacl - This boolean flag is used to indicate that the
+ user does not have read access to the target object's discretionary
+ acl. In this case, a warning
+ to the user will be presented along with the option to continue
+ or cancel.
+
+ CantWriteDacl - This boolean flag is used to indicate that the user
+ does not have write acces to the target object's discretionary
+ acl (but does have read access). This invokes the editor in a
+ read only mode that allows the user to view the security but not
+ change it.
+
+ Note that SACL access is determined by the SeSecurity privilege.
+ If you have the privilege, then you can both read *and* write the
+ SACL, if you do not have the privilege, you cannot read or write the
+ SACL.
+
+ SEDStatusReturn - This status flag indicates what condition the
+ resources permissions were left in after the ACL editor was
+ dismissed. It may be one of:
+
+ SED_STATUS_MODIFIED - This (success) status code indicates the
+ editor has been exited and protection has successfully been
+ modified.
+
+ SED_STATUS_NOT_MODIFIED - This (success) status code indicates
+ the editor has been exited without attempting to modify the
+ protection.
+
+ SED_STATUS_NOT_ALL_MODIFIED - This (warning) status code indicates
+ the user requested the protection to be modified, but an attempt
+ to do so only partially succeeded. The user has been notified
+ of this situation.
+
+ SED_STATUS_FAILED_TO_MODIFY - This (error) status code indicates
+ the user requested the protection to be modified, but an
+ attempt to do so has failed. The user has been notified of
+ this situation.
+
+ Flags - Should be zero.
+
+Return Code:
+
+ A standard windows error return such as ERROR_NOT_ENOUGH_MEMORY. This
+ means the ACL editor was never displayed. The user will be notified
+ of the error before this procedure returns.
+
+--*/
+
+DWORD WINAPI
+SedDiscretionaryAclEditor(
+ HWND Owner,
+ HANDLE Instance,
+ LPWSTR Server,
+ PSED_OBJECT_TYPE_DESCRIPTOR ObjectType,
+ PSED_APPLICATION_ACCESSES ApplicationAccesses,
+ LPWSTR ObjectName,
+ PSED_FUNC_APPLY_SEC_CALLBACK ApplySecurityCallbackRoutine,
+ ULONG CallbackContext,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ BOOLEAN CouldntReadDacl,
+ BOOLEAN CantWriteDacl,
+ LPDWORD SEDStatusReturn,
+ DWORD Flags
+ ) ;
+
+//
+// The parameters for the SACL editor are exactly the same except where
+// noted as that of the SedDiscretionaryAclEditor.
+//
+
+DWORD WINAPI
+SedSystemAclEditor(
+ HWND Owner,
+ HANDLE Instance,
+ LPWSTR Server,
+ PSED_OBJECT_TYPE_DESCRIPTOR ObjectType,
+ PSED_APPLICATION_ACCESSES ApplicationAccesses,
+ LPWSTR ObjectName,
+ PSED_FUNC_APPLY_SEC_CALLBACK ApplySecurityCallbackRoutine,
+ ULONG CallbackContext,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ BOOLEAN CouldntEditSacl,
+ LPDWORD SEDStatusReturn,
+ DWORD Flags
+ ) ;
+
+/*++
+
+Routine Description:
+
+ This routine invokes the take ownership dialog which is used
+ to view and/or set the owner of a security descriptor. The current owner
+ is displayed along with an optional button for the currently logged
+ on user to take ownership.
+
+ If an error occurs, the user will be properly notified by the API.
+
+Parameters:
+
+ Owner - Handle of the owner window the security editor should use for
+ dialog creation and error messages. This will lock down the passed
+ window.
+
+ Instance - Instance handle of the application. This will be passed
+ to the security editor callback where it can be used for retrieving
+ any necessary resources such as message strings, dialog boxes etc.
+
+ Server - The server name in the form "\\server" that the resource resides
+ on. NULL indicates the local machine.
+
+ ObjectTypeName - NT Resource type of object the user wants to look
+ at the owner of.
+ Examples for this parameter would be "File", "Directory"
+ or "Files/Directories".
+
+ ObjectName - This parameter is used to pass the name of the
+ object whose security is being edited. This might be
+ "C:\status.doc" or some other qualified name.
+
+ CountOfObjects - The number of objects the user wants to change permissions
+ on. If this number is greater then one, then the ObjectName is
+ ignored and a message of the form "%d ObjectTypeName Selected".
+
+ ApplySecurityCallbackRoutine - This parameter is used to provide the
+ address of a routine to be called to apply the new security
+ descriptor. The flags in the PSED_FUNC_APPLY_SEC_CALLBACK
+ type are not used.
+
+ CallbackContext - This value is opaque to this API. Its only
+ purpose is so that a context value may be passed back to the
+ application via the ApplySecurityCallbackRoutine when that routine
+ is invoked. This may be used by the application to re-locate
+ context related to the edit session. For example, it may be a
+ handle to the object whose security is being edited.
+
+ SecurityDescriptor - This parameter points to a security descriptor
+ containing the current owner and group. May be NULL.
+
+ CouldntReadOwner - This boolean flag may be used to indicate that the
+ user does not have read access to the target object's owner/group
+ SID. In this case, a warning
+ to the user will be presented along with the option to continue
+ or cancel.
+
+ CantWriteOwner - The boolean flag may be used to indicate that the user
+ does not have write access to the target object's owner/group SID.
+
+ SEDStatusReturn - This status flag indicates what condition the
+ resources security descriptor were left in after the take ownership
+ dialog was dismissed. It may be one of:
+
+ SED_STATUS_MODIFIED - This (success) status code indicates the
+ dialog has been exited and the new owner has successfully been
+ modified.
+
+ SED_STATUS_NOT_MODIFIED - This (success) status code indicates
+ the dialog has been exited without attempting to modify the
+ owner.
+
+ SED_STATUS_NOT_ALL_MODIFIED - This (warning) status code indicates
+ the user requested the owner to be modified, but an attempt
+ to do so only partially succeeded. The user has been notified
+ of this situation.
+
+ SED_STATUS_FAILED_TO_MODIFY - This (error) status code indicates
+ the user requested the owner to be modified, but an
+ attempt to do so has failed. The user has been notified of
+ this situation.
+
+ Flags - Should be zero.
+Return Code:
+
+ A standard windows error return such as ERROR_NOT_ENOUGH_MEMORY. This
+ means the dialog was never displayed. The user will be notified
+ of the error before this procedure returns.
+
+--*/
+
+DWORD WINAPI
+SedTakeOwnership(
+ HWND Owner,
+ HANDLE Instance,
+ LPWSTR Server,
+ LPWSTR ObjectTypeName,
+ LPWSTR ObjectName,
+ UINT CountOfObjects,
+ PSED_FUNC_APPLY_SEC_CALLBACK ApplySecurityCallbackRoutine,
+ ULONG CallbackContext,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ BOOLEAN CouldntReadOwner,
+ BOOLEAN CantWriteOwner,
+ LPDWORD SEDStatusReturn,
+ PSED_HELP_INFO HelpInfo,
+ DWORD Flags
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_SEDAPI_H_
diff --git a/public/sdk/inc/sem.hxx b/public/sdk/inc/sem.hxx
new file mode 100644
index 000000000..60d637cd0
--- /dev/null
+++ b/public/sdk/inc/sem.hxx
@@ -0,0 +1,20 @@
+///+---------------------------------------------------------------------------
+//
+// File: Sem.Hxx
+//
+// Contents: Semaphore classes
+//
+// Classes: CMutexSem - Mutex semaphore class
+// CShareSem - Multiple Reader, Single Writer class
+// CEventSem - Event semaphore
+//
+// History: 21-Jun-91 AlexT Created.
+//
+//----------------------------------------------------------------------------
+
+#ifndef __SEM_HXX__
+#define __SEM_HXX__
+
+#include <sem32.hxx>
+
+#endif /* __SEM_HXX__ */
diff --git a/public/sdk/inc/sem32.hxx b/public/sdk/inc/sem32.hxx
new file mode 100644
index 000000000..a29e51e97
--- /dev/null
+++ b/public/sdk/inc/sem32.hxx
@@ -0,0 +1,661 @@
+///+---------------------------------------------------------------------------
+//
+// File: Sem.Hxx
+//
+// Contents: Semaphore classes
+//
+// Classes: CMutexSem - Mutex semaphore class
+// CShareSem - Multiple Reader, Single Writer class
+// CEventSem - Event semaphore
+//
+// History: 21-Jun-91 AlexT Created.
+//
+// Notes: No 32-bit implementation exists yet for these classes, it
+// will be provided when we have a 32-bit development
+// environment. In the meantime, the 16-bit implementations
+// provided here can be used to ensure your code not blocking
+// while you hold a semaphore.
+//
+//----------------------------------------------------------------------------
+
+#ifndef __SEM32_HXX__
+#define __SEM32_HXX__
+
+extern "C"
+{
+#include <windows.h>
+};
+#include <except.hxx>
+
+// This is temporary. To be moved to the appropriate error file
+// BUGBUG: use NT error codes. Conversion is expensive! (BartoszM)
+
+enum SEMRESULT
+{
+ SEMSUCCESS = 0,
+ SEMTIMEOUT,
+ SEMNOBLOCK,
+ SEMERROR
+};
+
+enum SEMSTATE
+{
+ SEMSHARED,
+ SEMSHAREDOWNED
+};
+
+// BUGBUG: inlcude winbase.h or some such
+// infinite timeout when requesting a semaphore
+
+#if !defined INFINITE
+#define INFINITE 0xFFFFFFFF
+#endif
+
+//+---------------------------------------------------------------------------
+//
+// Class: CMutexSem (mxs)
+//
+// Purpose: Mutex Semaphore services
+//
+// Interface: Init - initializer (two-step)
+// Request - acquire semaphore
+// Release - release semaphore
+//
+// History: 14-Jun-91 AlexT Created.
+// 30-oct-91 SethuR 32 bit implementation
+//
+// Notes: This class wraps a mutex semaphore. Mutex semaphores protect
+// access to resources by only allowing one client through at a
+// time. The client Requests the semaphore before accessing the
+// resource and Releases the semaphore when it is done. The
+// same client can Request the semaphore multiple times (a nest
+// count is maintained).
+// The mutex semaphore is a wrapper around a critical section
+// which does not support a timeout mechanism. Therefore the
+// usage of any value other than INFINITE is discouraged. It
+// is provided merely for compatibility.
+//
+//----------------------------------------------------------------------------
+
+class CMutexSem
+{
+public:
+ CMutexSem();
+ inline BOOL Init();
+ ~CMutexSem();
+
+ SEMRESULT Request(DWORD dwMilliseconds = INFINITE);
+ void Release();
+
+private:
+ CRITICAL_SECTION _cs;
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CLock (lck)
+//
+// Purpose: Lock using a Mutex Semaphore
+//
+// History: 02-Oct-91 BartoszM Created.
+//
+// Notes: Simple lock object to be created on the stack.
+// The constructor acquires the semaphor, the destructor
+// (called when lock is going out of scope) releases it.
+//
+//----------------------------------------------------------------------------
+
+class CLock INHERIT_UNWIND_IF_CAIRO
+{
+ EXPORTDEF DECLARE_UNWIND
+
+public:
+ CLock ( CMutexSem& mxs );
+ ~CLock ();
+private:
+ CMutexSem& _mxs;
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CEventSem (evs)
+//
+// Purpose: Event Semaphore services
+//
+// Interface: Wait - wait for semaphore to be signalled
+// Set - set signalled state
+// Reset - clear signalled state
+// Pulse - set and clear semaphore
+//
+// History: 21-Jun-91 AlexT Created.
+// 27-Feb-92 BartoszM Use exceptions for errors
+//
+// Notes: Used for communication between consumers and producers.
+// Consumer threads block by calling Wait. A producer
+// calls Set waking up all the consumers who go ahead
+// and consume until there's nothing left. They call
+// Reset, release whatever lock protected the resources,
+// and call Wait. There has to be a separate lock
+// to protect the shared resources.
+// Remember: call Reset under lock.
+// don't call Wait under lock.
+//
+//----------------------------------------------------------------------------
+
+class CEventSem
+{
+public:
+ inline CEventSem( BOOL fInitState=FALSE, const LPSECURITY_ATTRIBUTES lpsa=NULL );
+ inline CEventSem( HANDLE hEvent );
+ inline ~CEventSem();
+
+ inline ULONG Wait(DWORD dwMilliseconds = INFINITE,
+ BOOL fAlertable = FALSE );
+ inline void Set();
+ inline void Reset();
+ inline void Pulse();
+ inline const HANDLE GetHandle() const { return _hEvent; }
+
+private:
+ HANDLE _hEvent;
+};
+
+#if 0
+// BUGBUG: This class is superceded by CResource, in resource.hxx and
+// resource.cxx. It should be deleted by July 21, 1993
+// WadeR, July 8, 1883
+//+---------------------------------------------------------------------------
+//
+// Class: CShareSem (shs)
+//
+// Purpose: Shared Semaphore services
+//
+// Interface: RequestExclusive - acquire exclusive ownership
+// RequestShared - acquire shared access
+// RequestSharedOwned - acquire ownership, allowing shared access
+// Release - release semaphore
+// Upgrade - upgrade from SharedOwned to Exclusive
+// Downgrade - downgrade to SharedOwned or Shared
+//
+// History: 21-Jun-91 AlexT Created.
+//
+// Notes: Shared semaphores allow multiple readers/single writers
+// access to resources. Readers bracket their use of a resource
+// with calls to RequestShared and Release. Writers bracket
+// their use of a resource with calls to RequestExclusive and
+// Release.
+//
+// RequestSharedOwned gives a client ownership of the semaphore
+// but still allows other Readers to share the semaphore. At
+// some later point, the owning client can call Upgrade to get
+// Exclusive access to the semaphore. This is useful when a
+// client needs to examine a data structure before modifying it,
+// as it allows other clients to continue viewing the data
+// until the owning client actually needs to modify it.
+//
+// Downgrade allows a client to release ownership of a semaphore
+// without releasing access to it.
+//
+// For now, this just uses a mutex semaphore.
+//
+// BUGBUG -- Ownership related methods needs to be implemented.
+//
+//----------------------------------------------------------------------------
+
+class CShareSem
+{
+public:
+ CShareSem();
+ BOOL Init();
+ ~CShareSem();
+
+ SEMRESULT RequestExclusive(DWORD dwMilliseconds);
+ SEMRESULT RequestShared(DWORD dwMilliseconds);
+ SEMRESULT RequestSharedOwned(DWORD dwMilliseconds);
+ void Release();
+ SEMRESULT Upgrade(DWORD dwMilliseconds);
+ SEMRESULT Downgrade(SEMSTATE fl);
+
+private:
+
+ // Ownership related methods....
+ BOOL ClaimOwnership();
+ BOOL ReleaseOwnership();
+
+ // Private methods to facilitate code sharing
+ void EnableReaders();
+
+ CMutexSem _cmtx;
+ CEventSem _evsReaders;
+ CEventSem _evsWriters;
+ BOOL _fWrite;
+ ULONG _cReaders;
+ ULONG _cWaitingReaders;
+ ULONG _cWaitingWriters;
+};
+
+//+---------------------------------------------------------------------------
+//
+// Class: CShareSemObject
+//
+// Purpose: The Semaphore Object -- the constructor accquires the
+// semaphore and the destructor releases it.
+//
+// Interface:
+//
+// History: 05-July-91 SethuR Created.
+//
+//
+//----------------------------------------------------------------------------
+
+class CShareSemObject INHERIT_UNWIND_IF_CAIRO
+{
+ DECLARE_UNWIND
+
+public:
+ inline CShareSemObject(CShareSem& shs);
+ inline ~CShareSemObject();
+
+ inline void RequestExclusive(DWORD dw);
+ inline void RequestShared(DWORD dw);
+ inline void RequestSharedOwned(DWORD dw);
+ inline SEMRESULT Upgrade(DWORD dw);
+ inline void Downgrade(SEMSTATE ss);
+
+private:
+ CShareSem* _pshs;
+ BOOL _fAccquired;
+};
+
+
+//+---------------------------------------------------------------------------
+//
+// Member: CShareSemObject::CShareSemObject, public
+//
+// Synopsis: Constructor
+//
+// Arguments: [shs] -- shared semaphore
+//
+// History: 29-Aug-91 SethuR Created.
+//
+//----------------------------------------------------------------------------
+
+inline CShareSemObject::CShareSemObject(CShareSem& shs)
+{
+ _pshs = &shs;
+ _fAccquired = FALSE;
+ END_CONSTRUCTION(CShareSemObject)
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CShareSemObject::RequestExclusive, public
+//
+// Synopsis: Get Exclusive acess
+//
+// Arguments: [dwMilliseconds] -- Timeout value
+//
+// History: 29-Aug-91 SethuR Created.
+//
+//----------------------------------------------------------------------------
+
+inline void CShareSemObject::RequestExclusive(DWORD dw)
+{
+ if (_pshs->RequestExclusive(dw) == SEMSUCCESS)
+ _fAccquired = TRUE;
+ else
+ THROW (CException(Win4ErrSemaphoreInvalid));
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CShareSemObject::RequestShared, public
+//
+// Synopsis: Get allow shared access
+//
+// Arguments: [dwMilliseconds] -- Timeout value
+//
+// History: 29-Aug-91 SethuR Created.
+//
+//----------------------------------------------------------------------------
+
+inline void CShareSemObject::RequestShared(DWORD dw)
+{
+ if (_pshs->RequestSharedOwned(dw) == SEMSUCCESS)
+ _fAccquired = TRUE;
+ else
+ THROW (CException(Win4ErrSemaphoreInvalid));
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CShareSemObject::RequestSharedOwned, public
+//
+// Synopsis: Get ownership but allow shared access
+//
+// Arguments: [dwMilliseconds] -- Timeout value
+//
+// History: 29-Aug-91 SethuR Created.
+//
+//----------------------------------------------------------------------------
+
+inline void CShareSemObject::RequestSharedOwned(DWORD dw)
+{
+ if (_pshs->RequestSharedOwned(dw) == SEMSUCCESS)
+ _fAccquired = TRUE;
+ else
+ THROW (CException(Win4ErrSemaphoreInvalid));
+}
+
+
+//+---------------------------------------------------------------------------
+//
+// Member: CShareSemObject::~CShareSemObject, public
+//
+// Synopsis: Destructor -- Releases the semaphore if accquired
+//
+// History: 27-Aug-91 AlexT Created.
+//
+//----------------------------------------------------------------------------
+
+inline CShareSemObject::~CShareSemObject()
+{
+ if (_fAccquired)
+ _pshs->Release();
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CShareSemObject::Upgrade, public
+//
+// Synopsis: Get exclusive access (must have ownership already)
+//
+// Arguments: [dwMilliseconds] -- Timeout value
+//
+// History: 21-Jun-91 AlexT Created.
+//
+//----------------------------------------------------------------------------
+
+inline SEMRESULT CShareSemObject::Upgrade(DWORD dw)
+{
+ if (_fAccquired)
+ return _pshs->Upgrade(dw);
+ THROW (CException(Win4ErrSemaphoreInvalid));
+ return SEMTIMEOUT; // BUGBUG -- This is to satisfy compiler limitation
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CShareSemObject::Downgrade, public
+//
+// Synopsis: Release exclusive access (but keep access)
+//
+// Arguments: [fl] -- SEMSHARED or SEMSHAREDOWNED
+//
+// History: 21-Jun-91 AlexT Created.
+//
+//----------------------------------------------------------------------------
+
+inline void CShareSemObject::Downgrade(SEMSTATE ss)
+{
+ if (_fAccquired)
+ _pshs->Downgrade(ss);
+ else
+ THROW (CException(Win4ErrSemaphoreInvalid));
+ return;
+}
+#endif // 0 BUGBUG
+
+//+---------------------------------------------------------------------------
+//
+// Member: CMutexSem::CMutexSem, public
+//
+// Synopsis: Mutex semaphore constructor
+//
+// Effects: Initializes the semaphores data
+//
+// History: 14-Jun-91 AlexT Created.
+//
+//----------------------------------------------------------------------------
+
+inline CMutexSem::CMutexSem()
+{
+ Init();
+}
+
+inline CMutexSem::Init()
+{
+ InitializeCriticalSection(&_cs);
+ return TRUE;
+};
+
+//+---------------------------------------------------------------------------
+//
+// Member: CMutexSem::~CMutexSem, public
+//
+// Synopsis: Mutex semaphore destructor
+//
+// Effects: Releases semaphore data
+//
+// History: 14-Jun-91 AlexT Created.
+//
+//----------------------------------------------------------------------------
+
+inline CMutexSem::~CMutexSem()
+{
+ DeleteCriticalSection(&_cs);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CMutexSem::Request, public
+//
+// Synopsis: Acquire semaphore
+//
+// Effects: Asserts correct owner
+//
+// Arguments: [dwMilliseconds] -- Timeout value
+//
+// History: 14-Jun-91 AlexT Created.
+//
+// Notes: Uses GetCurrentTask to establish the semaphore owner, but
+// written to work even if GetCurrentTask fails.
+//
+//----------------------------------------------------------------------------
+
+inline SEMRESULT CMutexSem::Request(DWORD dwMilliseconds)
+{
+ dwMilliseconds;
+
+ EnterCriticalSection(&_cs);
+ return(SEMSUCCESS);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CMutexSem::Release, public
+//
+// Synopsis: Release semaphore
+//
+// Effects: Asserts correct owner
+//
+// History: 14-Jun-91 AlexT Created.
+//
+// Notes: Uses GetCurrentTask to establish the semaphore owner, but
+// written to work even if GetCurrentTask fails.
+//
+//----------------------------------------------------------------------------
+
+inline void CMutexSem::Release()
+{
+ LeaveCriticalSection(&_cs);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CLock::CLock
+//
+// Synopsis: Acquire semaphore
+//
+// History: 02-Oct-91 BartoszM Created.
+//
+//----------------------------------------------------------------------------
+
+inline CLock::CLock ( CMutexSem& mxs )
+: _mxs ( mxs )
+{
+ _mxs.Request ( INFINITE );
+ END_CONSTRUCTION (CLock);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CLock::~CLock
+//
+// Synopsis: Release semaphore
+//
+// History: 02-Oct-91 BartoszM Created.
+//
+//----------------------------------------------------------------------------
+
+inline CLock::~CLock ()
+{
+ _mxs.Release();
+}
+
+
+//+---------------------------------------------------------------------------
+//
+// Member: CEventSem::CEventSem
+//
+// Synopsis: Creates an event
+//
+// Arguments: [bInitState] -- TRUE: signaled state, FALSE non-signaled
+// [lpsa] -- security attributes
+//
+// History: 27-Feb-92 BartoszM Created
+//
+//----------------------------------------------------------------------------
+
+inline CEventSem::CEventSem ( BOOL bInitState, const LPSECURITY_ATTRIBUTES lpsa )
+{
+ _hEvent = CreateEvent ( lpsa, TRUE, bInitState, 0 );
+ if ( _hEvent == 0 )
+ {
+ THROW ( CSystemException ( GetLastError() ));
+ }
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CEventSem::CEventSem
+//
+// Synopsis: Opens an event
+//
+// Arguments: [hEvent] -- handle of event to open
+// [bInitState] -- TRUE: signaled state, FALSE non-signaled
+//
+// History: 02-Jul-94 DwightKr Created
+//
+//----------------------------------------------------------------------------
+
+inline CEventSem::CEventSem ( HANDLE hEvent ) : _hEvent( hEvent )
+{
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CEventSem::~CEventSem
+//
+// Synopsis: Releases event
+//
+// History: 27-Feb-92 BartoszM Created
+//
+//----------------------------------------------------------------------------
+
+inline CEventSem::~CEventSem ()
+{
+ if ( !CloseHandle ( _hEvent ) )
+ {
+ THROW ( CSystemException ( GetLastError() ));
+ }
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CEventSem::Set
+//
+// Synopsis: Set the state to signaled. Wake up waiting threads.
+// For manual events the state remains set
+// until Reset is called
+//
+// History: 27-Feb-92 BartoszM Created
+//
+//----------------------------------------------------------------------------
+
+inline void CEventSem::Set()
+{
+ if ( !SetEvent ( _hEvent ) )
+ {
+ THROW ( CSystemException ( GetLastError() ));
+ }
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CEventSem::Reset
+//
+// Synopsis: Reset the state to non-signaled. Threads will block.
+//
+// History: 27-Feb-92 BartoszM Created
+//
+//----------------------------------------------------------------------------
+
+inline void CEventSem::Reset()
+{
+ if ( !ResetEvent ( _hEvent ) )
+ {
+ THROW ( CSystemException ( GetLastError() ));
+ }
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CEventSem::Wait
+//
+// Synopsis: Block until event set
+//
+// History: 27-Feb-92 BartoszM Created
+//
+//----------------------------------------------------------------------------
+
+inline ULONG CEventSem::Wait( DWORD msec, BOOL fAlertable )
+{
+ DWORD res = WaitForSingleObjectEx ( _hEvent, msec, fAlertable );
+
+ if ( res < 0 )
+ {
+ THROW ( CSystemException ( GetLastError() ));
+ }
+ return(res);
+}
+
+//+---------------------------------------------------------------------------
+//
+// Member: CEventSem::Pulse
+//
+// Synopsis: Set the state to signaled. Wake up waiting threads.
+//
+// History: 27-Feb-92 BartoszM Created
+//
+//----------------------------------------------------------------------------
+
+inline void CEventSem::Pulse()
+{
+ if ( !PulseEvent ( _hEvent ) )
+ {
+ THROW ( CSystemException ( GetLastError() ));
+ }
+}
+
+#endif /* __SEM32_HXX__ */
diff --git a/public/sdk/inc/serialz.h b/public/sdk/inc/serialz.h
new file mode 100644
index 000000000..51702ba99
--- /dev/null
+++ b/public/sdk/inc/serialz.h
@@ -0,0 +1,145 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: serialz.h
+//
+// Contents: Standard serialisation/deserialisation functions, designed
+// as helpers for implementators of IPersistStream.
+//
+// Functions: SerializeToStream
+// DeserializeFromStream
+// SerializeSizeMax
+//
+// History: 19-May-93 MikeSe Created
+//
+// WARNING! The format in which the serialised data is written is highly
+// likely to change before ship.
+//
+//----------------------------------------------------------------------------
+
+#ifndef __SERIALZ_H__
+#define __SERIALZ_H__
+
+// BUGBUG: coming soon in COMPOBJ?
+# ifndef STDAPIV
+# define STDAPIV EXTERN_C HRESULT __export _cdecl
+# endif
+
+//+-------------------------------------------------------------------------
+//
+// Function: SerializeToStream
+//
+// Synopsis: printf-style serialisation function.
+//
+// Effects: Writes a set of arguments to a stream in serialised form.
+//
+// Arguments: [pstm] -- stream to write to
+// [pszFormat] -- format control string
+// ... -- arguments to serialise.
+//
+// Returns: storage errors (often STG_E_MEDIUMFULL)
+// E_INVALIDARG if the format string contains illegal characters
+//
+// Modifies: the stream pointer is advanced to exactly beyond the
+// last byte written.
+//
+// Notes: The format control string consists of a series of single
+// characters specifying the type of the corresponding argument
+// in the variable part of the argument list, as indicated in
+// the following table:
+//
+// control character argument type
+//
+// 1 char/unsigned char
+// 2 short/unsigned short
+// 4 long/unsigned long
+// 8 huge(LARGE_INTEGER/LONGLONG)
+// t FILETIME
+// f float
+// d double
+// w WCHAR * (null terminated)
+// s char * (null terminated)
+// g GUID *
+// b BLOB *
+//
+// Please note that FILETIME should not be treated as a 64 bit integer
+// (control "8") because of differing alignment requirements on
+// RISC platforms.
+//
+//--------------------------------------------------------------------------
+
+STDAPIV SerializeToStream ( IStream * pstm, const char * pszFormat, ... );
+
+//+-------------------------------------------------------------------------
+//
+// Function: DeserializeFromStream
+//
+// Synopsis: scanf-style deserialisation function.
+//
+// Effects: Reads a set of arguments from a stream.
+//
+// Arguments: [pstm] -- stream to read from
+// [pszFormat] -- format control string
+// ... -- outputs.
+//
+// Returns: storage errors
+// E_FAIL to indicate end of file
+// E_INVALIDARG if the format string contains illegal characters
+//
+// Modifies: the stream pointer is advanced to exactly beyond the
+// last byte read.
+//
+// Notes: The format control string consists of a series of single
+// characters specifying the type of the corresponding argument
+// in the variable part of the argument list, as indicated in
+// the following table:
+//
+// control character argument type
+//
+// 1 char*/unsigned char*
+// 2 short*/unsigned short*
+// 4 long*/unsigned long*
+// 8 huge*/FILETIME*
+// f float*
+// d double*
+// w WCHAR** (null terminated)
+// s char** (null terminated)
+// g GUID *
+// b BLOB *
+//
+// String arguments are callee-allocated via IMalloc.
+//
+// When deserialising BLOBs the BLOB structure is allocated
+// by the caller, and the callee allocates the memory
+// pointed to by the the BLOB::pBlobData field, unless the
+// byte count for the BLOB is zero, in which case pBlobData
+// is set to NULL.
+//
+//--------------------------------------------------------------------------
+
+STDAPIV DeserializeFromStream ( IStream * pstm, const char * pszFormat, ... );
+
+//+-------------------------------------------------------------------------
+//
+// Function: SerializeSizeMax
+//
+// Synopsis: returns an upper bound on the amount of space required
+// to serialise a set of data.
+//
+// Arguments: [pszFormat] -- format control string
+// [pcbSize] -- returned size
+// ... -- arguments to serialise.
+//
+// Returns: E_INVALIDARG if the format string contains illegal characters
+//
+// Notes: The format control string and variable arguments are exactly
+// as passed to SerializeToStream.
+//
+//--------------------------------------------------------------------------
+
+STDAPIV SerializeSizeMax ( const char * pszFormat, ULARGE_INTEGER *pcbSize, ... );
+
+#endif // of ifndef __SERIALZ_H__
+
diff --git a/public/sdk/inc/setupapi.h b/public/sdk/inc/setupapi.h
new file mode 100644
index 000000000..b0025c61d
--- /dev/null
+++ b/public/sdk/inc/setupapi.h
@@ -0,0 +1,3865 @@
+/*++
+
+Copyright (c) 1995-1996 Microsoft Corporation
+
+Module Name:
+
+ setupapi.h
+
+Abstract:
+
+ Public header file for Windows NT Setup services Dll.
+
+Author:
+
+ Ted Miller (tedm) 11-Jan-1995
+
+Revision History:
+
+--*/
+
+#ifndef _INC_SETUPAPI
+#define _INC_SETUPAPI
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+#if !defined(_SETUPAPI_)
+#define WINSETUPAPI DECLSPEC_IMPORT
+#else
+#define WINSETUPAPI
+#endif
+
+#include <pshpack1.h> // Assume byte packing throughout
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __LPGUID_DEFINED__
+#define __LPGUID_DEFINED__
+typedef GUID *LPGUID;
+#endif
+
+//
+// Include commctrl.h for our use of HIMAGELIST and wizard support.
+//
+#include <commctrl.h>
+
+
+//
+// Define maximum string length constants as specified by
+// Windows 95.
+//
+#define LINE_LEN 256 // Win95-compatible maximum for displayable
+ // strings coming from a device INF.
+#define MAX_INF_STRING_LENGTH 4096 // Actual maximum size of an INF string (including
+ // string substitutions).
+#define MAX_TITLE_LEN 60
+#define MAX_INSTRUCTION_LEN 256
+#define MAX_LABEL_LEN 30
+#define MAX_SERVICE_NAME_LEN 256
+
+//
+// Define type for reference to loaded inf file
+//
+typedef PVOID HINF;
+
+//
+// Inf context structure. Applications must not interpret or
+// overwrite values in these structures.
+//
+typedef struct _INFCONTEXT {
+ PVOID Inf;
+ PVOID CurrentInf;
+ UINT Section;
+ UINT Line;
+} INFCONTEXT, *PINFCONTEXT;
+
+//
+// Inf file information structure.
+//
+typedef struct _SP_INF_INFORMATION {
+ DWORD InfStyle;
+ DWORD InfCount;
+ BYTE VersionData[ANYSIZE_ARRAY];
+} SP_INF_INFORMATION, *PSP_INF_INFORMATION;
+
+//
+// SP_INF_INFORMATION.InfStyle values
+//
+#define INF_STYLE_NONE 0 // unrecognized or non-existent
+#define INF_STYLE_OLDNT 1 // winnt 3.x
+#define INF_STYLE_WIN4 2 // Win95
+
+//
+// Target directory specs.
+//
+#define DIRID_ABSOLUTE -1 // real 32-bit -1
+#define DIRID_ABSOLUTE_16BIT 0xffff // 16-bit -1 for compat w/setupx
+#define DIRID_NULL 0
+#define DIRID_SRCPATH 1
+#define DIRID_WINDOWS 10
+#define DIRID_SYSTEM 11 // system32
+#define DIRID_DRIVERS 12
+#define DIRID_IOSUBSYS DIRID_DRIVERS
+#define DIRID_INF 17
+#define DIRID_HELP 18
+#define DIRID_FONTS 20
+#define DIRID_VIEWERS 21
+#define DIRID_APPS 24
+#define DIRID_SHARED 25
+#define DIRID_BOOT 30
+
+#define DIRID_SYSTEM16 50
+#define DIRID_SPOOL 51
+#define DIRID_SPOOLDRIVERS 52
+#define DIRID_USERPROFILE 53
+#define DIRID_LOADER 54
+
+#define DIRID_DEFAULT DIRID_SYSTEM
+
+//
+// First user-definable dirid. See SetupSetDirectoryId().
+//
+#define DIRID_USER 0x8000
+
+
+//
+// Setup callback notification routine type
+//
+typedef UINT (CALLBACK* PSP_FILE_CALLBACK_A)(
+ IN PVOID Context,
+ IN UINT Notification,
+ IN UINT Param1,
+ IN UINT Param2
+ );
+
+typedef UINT (CALLBACK* PSP_FILE_CALLBACK_W)(
+ IN PVOID Context,
+ IN UINT Notification,
+ IN UINT Param1,
+ IN UINT Param2
+ );
+
+#ifdef UNICODE
+#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_W
+#else
+#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_A
+#endif
+
+
+//
+// Operation/queue start/end notification. These are ordinal values.
+//
+#define SPFILENOTIFY_STARTQUEUE 0x00000001
+#define SPFILENOTIFY_ENDQUEUE 0x00000002
+#define SPFILENOTIFY_STARTSUBQUEUE 0x00000003
+#define SPFILENOTIFY_ENDSUBQUEUE 0x00000004
+#define SPFILENOTIFY_STARTDELETE 0x00000005
+#define SPFILENOTIFY_ENDDELETE 0x00000006
+#define SPFILENOTIFY_DELETEERROR 0x00000007
+#define SPFILENOTIFY_STARTRENAME 0x00000008
+#define SPFILENOTIFY_ENDRENAME 0x00000009
+#define SPFILENOTIFY_RENAMEERROR 0x0000000a
+#define SPFILENOTIFY_STARTCOPY 0x0000000b
+#define SPFILENOTIFY_ENDCOPY 0x0000000c
+#define SPFILENOTIFY_COPYERROR 0x0000000d
+#define SPFILENOTIFY_NEEDMEDIA 0x0000000e
+#define SPFILENOTIFY_QUEUESCAN 0x0000000f
+//
+// These are used with SetupIterateCabinet().
+//
+#define SPFILENOTIFY_CABINETINFO 0x00000010
+#define SPFILENOTIFY_FILEINCABINET 0x00000011
+#define SPFILENOTIFY_NEEDNEWCABINET 0x00000012
+#define SPFILENOTIFY_FILEEXTRACTED 0x00000013
+
+#define SPFILENOTIFY_FILEOPDELAYED 0x00000014
+
+//
+// Copy notification. These are bit flags that may be combined.
+//
+#define SPFILENOTIFY_LANGMISMATCH 0x00010000
+#define SPFILENOTIFY_TARGETEXISTS 0x00020000
+#define SPFILENOTIFY_TARGETNEWER 0x00040000
+
+//
+// File operation codes and callback outcomes.
+//
+#define FILEOP_COPY 0
+#define FILEOP_RENAME 1
+#define FILEOP_DELETE 2
+
+#define FILEOP_ABORT 0
+#define FILEOP_DOIT 1
+#define FILEOP_SKIP 2
+#define FILEOP_RETRY FILEOP_DOIT
+#define FILEOP_NEWPATH 4
+
+//
+// Flags in inf copy sections
+//
+#define COPYFLG_WARN_IF_SKIP 0x00000001 // warn if user tries to skip file
+#define COPYFLG_NOSKIP 0x00000002 // disallow skipping this file
+#define COPYFLG_NOVERSIONCHECK 0x00000004 // ignore versions and overwrite target
+#define COPYFLG_FORCE_FILE_IN_USE 0x00000008 // force file-in-use behavior
+#define COPYFLG_NO_OVERWRITE 0x00000010 // do not copy if file exists on target
+#define COPYFLG_NO_VERSION_DIALOG 0x00000020 // do not copy if target is newer
+#define COPYFLG_REPLACEONLY 0x00000400 // copy only if file exists on target
+
+//
+// Flags in inf delete sections
+// New flags go in high word
+//
+#define DELFLG_IN_USE 0x00000001 // queue in-use file for delete
+#define DELFLG_IN_USE1 0x00010000 // high-word version of DELFLG_IN_USE
+
+//
+// Source and file paths. Used when notifying queue callback
+// of SPFILENOTIFY_STARTxxx, SPFILENOTIFY_ENDxxx, and SPFILENOTIFY_xxxERROR.
+//
+typedef struct _FILEPATHS_A {
+ PCSTR Target;
+ PCSTR Source; // not used for delete operations
+ UINT Win32Error;
+ DWORD Flags; // such as SP_COPY_NOSKIP for copy errors
+} FILEPATHS_A, *PFILEPATHS_A;
+
+typedef struct _FILEPATHS_W {
+ PCWSTR Target;
+ PCWSTR Source; // not used for delete operations
+ UINT Win32Error;
+ DWORD Flags; // such as SP_COPY_NOSKIP for copy errors
+} FILEPATHS_W, *PFILEPATHS_W;
+
+#ifdef UNICODE
+typedef FILEPATHS_W FILEPATHS;
+typedef PFILEPATHS_W PFILEPATHS;
+#else
+typedef FILEPATHS_A FILEPATHS;
+typedef PFILEPATHS_A PFILEPATHS;
+#endif
+
+
+//
+// Structure used with SPFILENOTIFY_NEEDMEDIA
+//
+typedef struct _SOURCE_MEDIA_A {
+ PCSTR Reserved;
+ PCSTR Tagfile; // may be NULL
+ PCSTR Description;
+ //
+ // Pathname part and filename part of source file
+ // that caused us to need the media.
+ //
+ PCSTR SourcePath;
+ PCSTR SourceFile;
+ DWORD Flags; // subset of SP_COPY_xxx
+} SOURCE_MEDIA_A, *PSOURCE_MEDIA_A;
+
+typedef struct _SOURCE_MEDIA_W {
+ PCWSTR Reserved;
+ PCWSTR Tagfile; // may be NULL
+ PCWSTR Description;
+ //
+ // Pathname part and filename part of source file
+ // that caused us to need the media.
+ //
+ PCWSTR SourcePath;
+ PCWSTR SourceFile;
+ DWORD Flags; // subset of SP_COPY_xxx
+} SOURCE_MEDIA_W, *PSOURCE_MEDIA_W;
+
+#ifdef UNICODE
+typedef SOURCE_MEDIA_W SOURCE_MEDIA;
+typedef PSOURCE_MEDIA_W PSOURCE_MEDIA;
+#else
+typedef SOURCE_MEDIA_A SOURCE_MEDIA;
+typedef PSOURCE_MEDIA_A PSOURCE_MEDIA;
+#endif
+
+//
+// Structure used with SPFILENOTIFY_CABINETINFO and
+// SPFILENOTIFY_NEEDNEWCABINET
+//
+typedef struct _CABINET_INFO_A {
+ PCSTR CabinetPath;
+ PCSTR CabinetFile;
+ PCSTR DiskName;
+ USHORT SetId;
+ USHORT CabinetNumber;
+} CABINET_INFO_A, *PCABINET_INFO_A;
+
+typedef struct _CABINET_INFO_W {
+ PCWSTR CabinetPath;
+ PCWSTR CabinetFile;
+ PCWSTR DiskName;
+ USHORT SetId;
+ USHORT CabinetNumber;
+} CABINET_INFO_W, *PCABINET_INFO_W;
+
+#ifdef UNICODE
+typedef CABINET_INFO_W CABINET_INFO;
+typedef PCABINET_INFO_W PCABINET_INFO;
+#else
+typedef CABINET_INFO_A CABINET_INFO;
+typedef PCABINET_INFO_A PCABINET_INFO;
+#endif
+
+//
+// Structure used with SPFILENOTIFY_FILEINCABINET
+//
+typedef struct _FILE_IN_CABINET_INFO_A {
+ PCSTR NameInCabinet;
+ DWORD FileSize;
+ DWORD Win32Error;
+ WORD DosDate;
+ WORD DosTime;
+ WORD DosAttribs;
+ CHAR FullTargetName[MAX_PATH];
+} FILE_IN_CABINET_INFO_A, *PFILE_IN_CABINET_INFO_A;
+
+typedef struct _FILE_IN_CABINET_INFO_W {
+ PCWSTR NameInCabinet;
+ DWORD FileSize;
+ DWORD Win32Error;
+ WORD DosDate;
+ WORD DosTime;
+ WORD DosAttribs;
+ WCHAR FullTargetName[MAX_PATH];
+} FILE_IN_CABINET_INFO_W, *PFILE_IN_CABINET_INFO_W;
+
+#ifdef UNICODE
+typedef FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO;
+typedef PFILE_IN_CABINET_INFO_W PFILE_IN_CABINET_INFO;
+#else
+typedef FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO;
+typedef PFILE_IN_CABINET_INFO_A PFILE_IN_CABINET_INFO;
+#endif
+
+
+//
+// Define type for setup file queue
+//
+typedef PVOID HSPFILEQ;
+
+//
+// Define type for reference to device information set
+//
+typedef PVOID HDEVINFO;
+
+//
+// Device information structure (references a device instance
+// that is a member of a device information set)
+//
+typedef struct _SP_DEVINFO_DATA {
+ DWORD cbSize;
+ GUID ClassGuid;
+ DWORD DevInst; // DEVINST handle
+ DWORD Reserved;
+} SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;
+
+
+//
+// Class installer function codes
+//
+#define DIF_SELECTDEVICE 0x00000001
+#define DIF_INSTALLDEVICE 0x00000002
+#define DIF_ASSIGNRESOURCES 0x00000003
+#define DIF_PROPERTIES 0x00000004
+#define DIF_REMOVE 0x00000005
+#define DIF_FIRSTTIMESETUP 0x00000006
+#define DIF_FOUNDDEVICE 0x00000007
+#define DIF_SELECTCLASSDRIVERS 0x00000008
+#define DIF_VALIDATECLASSDRIVERS 0x00000009
+#define DIF_INSTALLCLASSDRIVERS 0x0000000A
+#define DIF_CALCDISKSPACE 0x0000000B
+#define DIF_DESTROYPRIVATEDATA 0x0000000C
+#define DIF_VALIDATEDRIVER 0x0000000D
+#define DIF_MOVEDEVICE 0x0000000E
+#define DIF_DETECT 0x0000000F
+#define DIF_INSTALLWIZARD 0x00000010
+#define DIF_DESTROYWIZARDDATA 0x00000011
+#define DIF_PROPERTYCHANGE 0x00000012
+#define DIF_ENABLECLASS 0x00000013
+#define DIF_DETECTVERIFY 0x00000014
+#define DIF_INSTALLDEVICEFILES 0x00000015
+
+typedef UINT DI_FUNCTION; // Function type for device installer
+
+
+//
+// Device installation parameters structure (associated with a
+// particular device information element, or globally with a device
+// information set)
+//
+typedef struct _SP_DEVINSTALL_PARAMS_A {
+ DWORD cbSize;
+ DWORD Flags;
+ DWORD FlagsEx;
+ HWND hwndParent;
+ PSP_FILE_CALLBACK InstallMsgHandler;
+ PVOID InstallMsgHandlerContext;
+ HSPFILEQ FileQueue;
+ DWORD ClassInstallReserved;
+ DWORD Reserved;
+ CHAR DriverPath[MAX_PATH];
+} SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A;
+
+typedef struct _SP_DEVINSTALL_PARAMS_W {
+ DWORD cbSize;
+ DWORD Flags;
+ DWORD FlagsEx;
+ HWND hwndParent;
+ PSP_FILE_CALLBACK InstallMsgHandler;
+ PVOID InstallMsgHandlerContext;
+ HSPFILEQ FileQueue;
+ DWORD ClassInstallReserved;
+ DWORD Reserved;
+ WCHAR DriverPath[MAX_PATH];
+} SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;
+
+#ifdef UNICODE
+typedef SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS;
+typedef PSP_DEVINSTALL_PARAMS_W PSP_DEVINSTALL_PARAMS;
+#else
+typedef SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS;
+typedef PSP_DEVINSTALL_PARAMS_A PSP_DEVINSTALL_PARAMS;
+#endif
+
+
+//
+// SP_DEVINSTALL_PARAMS.Flags values
+//
+// Flags for choosing a device
+//
+#define DI_SHOWOEM 0x00000001L // support Other... button
+#define DI_SHOWCOMPAT 0x00000002L // show compatibility list
+#define DI_SHOWCLASS 0x00000004L // show class list
+#define DI_SHOWALL 0x00000007L // both class & compat list shown
+#define DI_NOVCP 0x00000008L // don't create a new copy queue--use
+ // caller-supplied FileQueue
+#define DI_DIDCOMPAT 0x00000010L // Searched for compatible devices
+#define DI_DIDCLASS 0x00000020L // Searched for class devices
+#define DI_AUTOASSIGNRES 0x00000040L // No UI for resources if possible
+
+// flags returned by DiInstallDevice to indicate need to reboot/restart
+#define DI_NEEDRESTART 0x00000080L // Reboot required to take effect
+#define DI_NEEDREBOOT 0x00000100L // ""
+
+// flags for device installation
+#define DI_NOBROWSE 0x00000200L // no Browse... in InsertDisk
+
+// Flags set by DiBuildDriverInfoList
+#define DI_MULTMFGS 0x00000400L // Set if multiple manufacturers in
+ // class driver list
+
+// Flag indicates that device is disabled
+#define DI_DISABLED 0x00000800L // Set if device disabled
+
+// Flags for Device/Class Properties
+#define DI_GENERALPAGE_ADDED 0x00001000L
+#define DI_RESOURCEPAGE_ADDED 0x00002000L
+
+// Flag to indicate the setting properties for this Device (or class) caused a change
+// so the Dev Mgr UI probably needs to be updatd.
+#define DI_PROPERTIES_CHANGE 0x00004000L
+
+// Flag to indicate that the sorting from the INF file should be used.
+#define DI_INF_IS_SORTED 0x00008000L
+
+// Flag to indicate that only the the INF specified by SP_DEVINSTALL_PARAMS.DriverPath
+// should be searched.
+#define DI_ENUMSINGLEINF 0x00010000L
+
+// Flag that prevents ConfigMgr from removing/re-enumerating devices during device
+// registration, installation, and deletion.
+#define DI_DONOTCALLCONFIGMG 0x00020000L
+
+// The following flag can be used to install a device disabled
+#define DI_INSTALLDISABLED 0x00040000L
+
+// Flag that causes SetupDiBuildDriverInfoList to build a device's compatible driver
+// list from its existing class driver list, instead of the normal INF search.
+#define DI_COMPAT_FROM_CLASS 0x00080000L
+
+// This flag is set if the Class Install params should be used.
+#define DI_CLASSINSTALLPARAMS 0x00100000L
+
+// This flag is set if the caller of DiCallClassInstaller does NOT
+// want the internal default action performed if the Class installer
+// returns ERROR_DI_DO_DEFAULT.
+#define DI_NODI_DEFAULTACTION 0x00200000L
+
+// The setupx flag, DI_NOSYNCPROCESSING (0x00400000L) is not support in the Setup APIs.
+
+// flags for device installation
+#define DI_QUIETINSTALL 0x00800000L // don't confuse the user with
+ // questions or excess info
+#define DI_NOFILECOPY 0x01000000L // No file Copy necessary
+#define DI_FORCECOPY 0x02000000L // Force files to be copied from install path
+#define DI_DRIVERPAGE_ADDED 0x04000000L // Prop provider added Driver page.
+#define DI_USECI_SELECTSTRINGS 0x08000000L // Use Class Installer Provided strings in the Select Device Dlg
+#define DI_OVERRIDE_INFFLAGS 0x10000000L // Override INF flags
+#define DI_PROPS_NOCHANGEUSAGE 0x20000000L // No Enable/Disable in General Props
+
+#define DI_NOSELECTICONS 0x40000000L // No small icons in select device dialogs
+
+#define DI_NOWRITE_IDS 0x80000000L // Don't write HW & Compat IDs on install
+
+
+//
+// SP_DEVINSTALL_PARAMS.FlagsEx values
+//
+#define DI_FLAGSEX_USEOLDINFSEARCH 0x00000001L // Inf Search functions should not use Index Search
+#define DI_FLAGSEX_AUTOSELECTRANK0 0x00000002L // SetupDiSelectDevice doesn't prompt user if rank 0 match
+#define DI_FLAGSEX_CI_FAILED 0x00000004L // Failed to Load/Call class installer
+
+#define DI_FLAGSEX_DIDINFOLIST 0x00000010L // Did the Class Info List
+#define DI_FLAGSEX_DIDCOMPATINFO 0x00000020L // Did the Compat Info List
+
+#define DI_FLAGSEX_FILTERCLASSES 0x00000040L
+#define DI_FLAGSEX_SETFAILEDINSTALL 0x00000080L
+#define DI_FLAGSEX_DEVICECHANGE 0x00000100L
+#define DI_FLAGSEX_ALWAYSWRITEIDS 0x00000200L
+#define DI_FLAGSEX_ALLOWEXCLUDEDDRVS 0x00000800L
+#define DI_FLAGSEX_NOUIONQUERYREMOVE 0x00001000L
+#define DI_FLAGSEX_USECLASSFORCOMPAT 0x00002000L // Use the device's class when building compat drv list.
+ // (Ignored if DI_COMPAT_FROM_CLASS flag is specified.)
+
+#define DI_FLAGSEX_OLDINF_IN_CLASSLIST 0x00004000L // Search legacy INFs when building class driver list.
+
+#define DI_FLAGSEX_NO_DRVREG_MODIFY 0x00008000L // Don't run AddReg and DelReg for device's software (driver) key.
+
+//
+// Class installation parameters header. This must be the first field of any class install
+// parameter structure. The InstallFunction field must be set to the function code
+// corresponding to the structure, and the cbSize field must be set to the size of the
+// header structure. E.g.,
+//
+// SP_ENABLECLASS_PARAMS EnableClassParams;
+//
+// EnableClassParams.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
+// EnableClassParams.ClassInstallHeader.InstallFunction = DIF_ENABLECLASS;
+//
+typedef struct _SP_CLASSINSTALL_HEADER {
+ DWORD cbSize;
+ DI_FUNCTION InstallFunction;
+} SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER;
+
+
+//
+// Structure corresponding to a DIF_ENABLECLASS install function.
+//
+typedef struct _SP_ENABLECLASS_PARAMS {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ GUID ClassGuid;
+ DWORD EnableMessage;
+} SP_ENABLECLASS_PARAMS, *PSP_ENABLECLASS_PARAMS;
+
+#define ENABLECLASS_QUERY 0
+#define ENABLECLASS_SUCCESS 1
+#define ENABLECLASS_FAILURE 2
+
+
+//
+// Structure corresponding to a DIF_MOVEDEVICE install function.
+//
+typedef struct _SP_MOVEDEV_PARAMS {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ SP_DEVINFO_DATA SourceDeviceInfoData;
+} SP_MOVEDEV_PARAMS, *PSP_MOVEDEV_PARAMS;
+
+
+//
+// Values indicating a change in a device's state
+//
+#define DICS_ENABLE 0x00000001
+#define DICS_DISABLE 0x00000002
+#define DICS_PROPCHANGE 0x00000003
+#define DICS_START 0x00000004
+#define DICS_STOP 0x00000005
+//
+// Values specifying the scope of a device property change
+//
+#define DICS_FLAG_GLOBAL 0x00000001 // make change in all hardware profiles
+#define DICS_FLAG_CONFIGSPECIFIC 0x00000002 // make change in specified profile only
+#define DICS_FLAG_CONFIGGENERAL 0x00000004 // 1 or more hardware profile-specific
+ // changes to follow.
+//
+// Structure corresponding to a DIF_PROPERTYCHANGE install function.
+//
+typedef struct _SP_PROPCHANGE_PARAMS {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ DWORD StateChange;
+ DWORD Scope;
+ DWORD HwProfile;
+} SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS;
+
+
+//
+// Structure corresponding to a DIF_REMOVE install function.
+//
+typedef struct _SP_REMOVEDEVICE_PARAMS {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ DWORD Scope;
+ DWORD HwProfile;
+} SP_REMOVEDEVICE_PARAMS, *PSP_REMOVEDEVICE_PARAMS;
+
+#define DI_REMOVEDEVICE_GLOBAL 0x00000001
+#define DI_REMOVEDEVICE_CONFIGSPECIFIC 0x00000002
+
+
+//
+// Structure corresponding to a DIF_SELECTDEVICE install function.
+//
+typedef struct _SP_SELECTDEVICE_PARAMS_A {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ CHAR Title[MAX_TITLE_LEN];
+ CHAR Instructions[MAX_INSTRUCTION_LEN];
+ CHAR ListLabel[MAX_LABEL_LEN];
+ BYTE Reserved[2]; // DWORD size alignment
+} SP_SELECTDEVICE_PARAMS_A, *PSP_SELECTDEVICE_PARAMS_A;
+
+typedef struct _SP_SELECTDEVICE_PARAMS_W {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ WCHAR Title[MAX_TITLE_LEN];
+ WCHAR Instructions[MAX_INSTRUCTION_LEN];
+ WCHAR ListLabel[MAX_LABEL_LEN];
+} SP_SELECTDEVICE_PARAMS_W, *PSP_SELECTDEVICE_PARAMS_W;
+
+#ifdef UNICODE
+typedef SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS;
+typedef PSP_SELECTDEVICE_PARAMS_W PSP_SELECTDEVICE_PARAMS;
+#else
+typedef SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS;
+typedef PSP_SELECTDEVICE_PARAMS_A PSP_SELECTDEVICE_PARAMS;
+#endif
+
+
+//
+// 'Add New Device' installation wizard structure
+//
+// Structure corresponding to a DIF_INSTALLWIZARD install function.
+// (NOTE: This structure is also applicable for DIF_DESTROYWIZARDDATA,
+// but DIF_INSTALLWIZARD is the associated function code in the class
+// installation parameter structure in both cases.)
+//
+// Define maximum number of dynamic wizard pages that can be added to
+// hardware install wizard.
+//
+#define MAX_INSTALLWIZARD_DYNAPAGES 20
+
+typedef struct _SP_INSTALLWIZARD_DATA {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ DWORD Flags;
+ HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
+ DWORD NumDynamicPages;
+ DWORD DynamicPageFlags;
+ DWORD PrivateFlags;
+ LPARAM PrivateData;
+ HWND hwndWizardDlg;
+} SP_INSTALLWIZARD_DATA, *PSP_INSTALLWIZARD_DATA;
+
+//
+// SP_INSTALLWIZARD_DATA.Flags values
+//
+#define NDW_INSTALLFLAG_DIDFACTDEFS 0x00000001
+#define NDW_INSTALLFLAG_HARDWAREALLREADYIN 0x00000002
+#define NDW_INSTALLFLAG_NEEDRESTART DI_NEEDRESTART
+#define NDW_INSTALLFLAG_NEEDREBOOT DI_NEEDREBOOT
+#define NDW_INSTALLFLAG_NEEDSHUTDOWN 0x00000200
+#define NDW_INSTALLFLAG_EXPRESSINTRO 0x00000400
+#define NDW_INSTALLFLAG_SKIPISDEVINSTALLED 0x00000800
+#define NDW_INSTALLFLAG_NODETECTEDDEVS 0x00001000
+#define NDW_INSTALLFLAG_INSTALLSPECIFIC 0x00002000
+#define NDW_INSTALLFLAG_SKIPCLASSLIST 0x00004000
+#define NDW_INSTALLFLAG_CI_PICKED_OEM 0x00008000
+#define NDW_INSTALLFLAG_PCMCIAMODE 0x00010000
+#define NDW_INSTALLFLAG_PCMCIADEVICE 0x00020000
+#define NDW_INSTALLFLAG_USERCANCEL 0x00040000
+#define NDW_INSTALLFLAG_KNOWNCLASS 0x00080000
+
+
+//
+// SP_INSTALLWIZARD_DATA.DynamicPageFlags values
+//
+// This flag is set if a Class installer has added pages to the
+// install wizard.
+//
+#define DYNAWIZ_FLAG_PAGESADDED 0x00000001
+
+//
+// The following flags will control the button states when displaying
+// the InstallDetectedDevs dialog.
+//
+#define DYNAWIZ_FLAG_INSTALLDET_NEXT 0x00000002
+#define DYNAWIZ_FLAG_INSTALLDET_PREV 0x00000004
+
+// Set this flag if you jump to the analyze page, and want it to
+// handle conflicts for you. NOTE. You will not get control back
+// in the event of a conflict if you set this flag.
+//
+// BUGBUG (lonnym): Not currently implemented!
+//
+#define DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT 0x00000008
+
+//
+// Define wizard page resource IDs to be used when adding custom pages
+// to the hardware install wizard.
+//
+// Resource ID for the first page that the install wizard will go to after
+// adding the class installer pages.
+//
+#define IDD_DYNAWIZ_FIRSTPAGE 10000
+
+//
+// Resource ID for the page that the Select Device page will go back to.
+//
+#define IDD_DYNAWIZ_SELECT_PREVPAGE 10001
+
+//
+// Resource ID for the page that the Select Device page will go forward to.
+//
+#define IDD_DYNAWIZ_SELECT_NEXTPAGE 10002
+
+//
+// Resource ID for the page that the Analyze dialog should go back to
+// This will only be used in the event that there is a problem, and the user
+// selects Back from the analyze proc.
+//
+#define IDD_DYNAWIZ_ANALYZE_PREVPAGE 10003
+
+//
+// Resource ID for the page that the Analyze dialog should go to if it
+// continue from the analyze proc. the wAnalyzeResult in the INSTALLDATA
+// struct will contain the anaysis results.
+//
+#define IDD_DYNAWIZ_ANALYZE_NEXTPAGE 10004
+
+//
+// Resource ID for that page that the Install detected devices page will go
+// back to.
+//
+#define IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE 10006
+
+//
+// Resource ID for the page that the Install detected devices page will go
+// forward to.
+//
+#define IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE 10007
+
+//
+// Resource ID for the page that the Install detected devices page will go
+// to in the event that no devices are detected.
+//
+#define IDD_DYNAWIZ_INSTALLDETECTED_NODEVS 10008
+
+//
+// Resource ID of the hardware install wizard's select device page.
+// This ID can be used to go directly to the hardware install wizard's select
+// device page.
+//
+#define IDD_DYNAWIZ_SELECTDEV_PAGE 10009
+
+//
+// Resource ID of the hardware install wizard's device analysis page.
+// This ID can be use to go directly to the hardware install wizard's analysis
+// page.
+//
+#define IDD_DYNAWIZ_ANALYZEDEV_PAGE 10010
+
+//
+// Resource ID of the hardware install wizard's install detected devices page.
+// This ID can be use to go directly to the hardware install wizard's install
+// detected devices page.
+//
+#define IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE 10011
+
+//
+// Resource ID of the hardware install wizard's select class page.
+// This ID can be use to go directly to the hardware install wizard's select
+// class page.
+//
+#define IDD_DYNAWIZ_SELECTCLASS_PAGE 10012
+
+
+//
+// Driver information structure (member of a driver info list that may be associated
+// with a particular device instance, or (globally) with a device information set)
+//
+typedef struct _SP_DRVINFO_DATA_A {
+ DWORD cbSize;
+ DWORD DriverType;
+ DWORD Reserved;
+ CHAR Description[LINE_LEN];
+ CHAR MfgName[LINE_LEN];
+ CHAR ProviderName[LINE_LEN];
+} SP_DRVINFO_DATA_A, *PSP_DRVINFO_DATA_A;
+
+typedef struct _SP_DRVINFO_DATA_W {
+ DWORD cbSize;
+ DWORD DriverType;
+ DWORD Reserved;
+ WCHAR Description[LINE_LEN];
+ WCHAR MfgName[LINE_LEN];
+ WCHAR ProviderName[LINE_LEN];
+} SP_DRVINFO_DATA_W, *PSP_DRVINFO_DATA_W;
+
+#ifdef UNICODE
+typedef SP_DRVINFO_DATA_W SP_DRVINFO_DATA;
+typedef PSP_DRVINFO_DATA_W PSP_DRVINFO_DATA;
+#else
+typedef SP_DRVINFO_DATA_A SP_DRVINFO_DATA;
+typedef PSP_DRVINFO_DATA_A PSP_DRVINFO_DATA;
+#endif
+
+
+//
+// Driver information details structure (provides detailed information about a
+// particular driver information structure)
+//
+typedef struct _SP_DRVINFO_DETAIL_DATA_A {
+ DWORD cbSize;
+ FILETIME InfDate;
+ DWORD CompatIDsOffset;
+ DWORD CompatIDsLength;
+ DWORD Reserved;
+ CHAR SectionName[LINE_LEN];
+ CHAR InfFileName[MAX_PATH];
+ CHAR DrvDescription[LINE_LEN];
+ CHAR HardwareID[ANYSIZE_ARRAY];
+} SP_DRVINFO_DETAIL_DATA_A, *PSP_DRVINFO_DETAIL_DATA_A;
+
+typedef struct _SP_DRVINFO_DETAIL_DATA_W {
+ DWORD cbSize;
+ FILETIME InfDate;
+ DWORD CompatIDsOffset;
+ DWORD CompatIDsLength;
+ DWORD Reserved;
+ WCHAR SectionName[LINE_LEN];
+ WCHAR InfFileName[MAX_PATH];
+ WCHAR DrvDescription[LINE_LEN];
+ WCHAR HardwareID[ANYSIZE_ARRAY];
+} SP_DRVINFO_DETAIL_DATA_W, *PSP_DRVINFO_DETAIL_DATA_W;
+
+#ifdef UNICODE
+typedef SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA;
+typedef PSP_DRVINFO_DETAIL_DATA_W PSP_DRVINFO_DETAIL_DATA;
+#else
+typedef SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA;
+typedef PSP_DRVINFO_DETAIL_DATA_A PSP_DRVINFO_DETAIL_DATA;
+#endif
+
+
+//
+// Driver installation parameters (associated with a particular driver
+// information element)
+//
+typedef struct _SP_DRVINSTALL_PARAMS {
+ DWORD cbSize;
+ DWORD Rank;
+ DWORD Flags;
+ DWORD PrivateData;
+ DWORD Reserved;
+} SP_DRVINSTALL_PARAMS, *PSP_DRVINSTALL_PARAMS;
+
+//
+// SP_DRVINSTALL_PARAMS.Flags values
+//
+#define DNF_DUPDESC 0x00000001 // Multiple providers have same desc
+#define DNF_OLDDRIVER 0x00000002 // Driver node specifies old/current driver
+#define DNF_EXCLUDEFROMLIST 0x00000004 // If set, this driver node will not be
+ // displayed in any driver select dialogs.
+#define DNF_NODRIVER 0x00000008 // if we want to install no driver
+ // (e.g no mouse drv)
+#define DNF_LEGACYINF 0x00000010 // this driver node comes from an old-style INF
+
+
+//
+// Setup callback routine for comparing detection signatures
+//
+typedef DWORD (CALLBACK* PSP_DETSIG_CMPPROC)(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA NewDeviceData,
+ IN PSP_DEVINFO_DATA ExistingDeviceData,
+ IN PVOID CompareContext OPTIONAL
+ );
+
+
+//
+// Structure containing class image list information.
+//
+typedef struct _SP_CLASSIMAGELIST_DATA {
+ DWORD cbSize;
+ HIMAGELIST ImageList;
+ DWORD Reserved;
+} SP_CLASSIMAGELIST_DATA, *PSP_CLASSIMAGELIST_DATA;
+
+
+//
+// Structure to be passed as first parameter (LPVOID lpv) to ExtensionPropSheetPageProc
+// entry point in setupapi.dll. Used to retrieve a handle for a specified property page.
+//
+typedef struct _SP_PROPSHEETPAGE_REQUEST {
+ DWORD cbSize;
+ DWORD PageRequested;
+ HDEVINFO DeviceInfoSet;
+ PSP_DEVINFO_DATA DeviceInfoData;
+} SP_PROPSHEETPAGE_REQUEST, *PSP_PROPSHEETPAGE_REQUEST;
+
+//
+// Property sheet codes used in SP_PROPSHEETPAGE_REQUEST.PageRequested
+//
+#define SPPSR_SELECT_DEVICE_RESOURCES 1
+
+
+//
+// Setupapi-specific error codes
+//
+// Inf parse outcomes
+//
+#define ERROR_EXPECTED_SECTION_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0)
+#define ERROR_BAD_SECTION_NAME_LINE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1)
+#define ERROR_SECTION_NAME_TOO_LONG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2)
+#define ERROR_GENERAL_SYNTAX (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3)
+//
+// Inf runtime errors
+//
+#define ERROR_WRONG_INF_STYLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100)
+#define ERROR_SECTION_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101)
+#define ERROR_LINE_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102)
+//
+// Device Installer errors
+//
+#define ERROR_NO_ASSOCIATED_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200)
+#define ERROR_CLASS_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201)
+#define ERROR_DUPLICATE_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202)
+#define ERROR_NO_DRIVER_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203)
+#define ERROR_KEY_DOES_NOT_EXIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204)
+#define ERROR_INVALID_DEVINST_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205)
+#define ERROR_INVALID_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206)
+#define ERROR_DEVINST_ALREADY_EXISTS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207)
+#define ERROR_DEVINFO_NOT_REGISTERED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208)
+#define ERROR_INVALID_REG_PROPERTY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209)
+#define ERROR_NO_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A)
+#define ERROR_NO_SUCH_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B)
+#define ERROR_CANT_LOAD_CLASS_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C)
+#define ERROR_INVALID_CLASS_INSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D)
+#define ERROR_DI_DO_DEFAULT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E)
+#define ERROR_DI_NOFILECOPY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F)
+#define ERROR_INVALID_HWPROFILE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210)
+#define ERROR_NO_DEVICE_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211)
+#define ERROR_DEVINFO_LIST_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212)
+#define ERROR_DEVINFO_DATA_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213)
+#define ERROR_DI_BAD_PATH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214)
+#define ERROR_NO_CLASSINSTALL_PARAMS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215)
+#define ERROR_FILEQUEUE_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216)
+#define ERROR_BAD_SERVICE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217)
+#define ERROR_NO_CLASS_DRIVER_LIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218)
+#define ERROR_NO_ASSOCIATED_SERVICE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219)
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetInfInformationA(
+ IN LPCVOID InfSpec,
+ IN DWORD SearchControl,
+ OUT PSP_INF_INFORMATION ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetInfInformationW(
+ IN LPCVOID InfSpec,
+ IN DWORD SearchControl,
+ OUT PSP_INF_INFORMATION ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+//
+// SearchControl flags for SetupGetInfInformation
+//
+#define INFINFO_INF_SPEC_IS_HINF 1
+#define INFINFO_INF_NAME_IS_ABSOLUTE 2
+#define INFINFO_DEFAULT_SEARCH 3
+#define INFINFO_REVERSE_DEFAULT_SEARCH 4
+#define INFINFO_INF_PATH_LIST_SEARCH 5
+
+#ifdef UNICODE
+#define SetupGetInfInformation SetupGetInfInformationW
+#else
+#define SetupGetInfInformation SetupGetInfInformationA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueryInfFileInformationA(
+ IN PSP_INF_INFORMATION InfInformation,
+ IN UINT InfIndex,
+ OUT PSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueryInfFileInformationW(
+ IN PSP_INF_INFORMATION InfInformation,
+ IN UINT InfIndex,
+ OUT PWSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupQueryInfFileInformation SetupQueryInfFileInformationW
+#else
+#define SetupQueryInfFileInformation SetupQueryInfFileInformationA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueryInfVersionInformationA(
+ IN PSP_INF_INFORMATION InfInformation,
+ IN UINT InfIndex,
+ IN PCSTR Key, OPTIONAL
+ OUT PSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueryInfVersionInformationW(
+ IN PSP_INF_INFORMATION InfInformation,
+ IN UINT InfIndex,
+ IN PCWSTR Key, OPTIONAL
+ OUT PWSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupQueryInfVersionInformation SetupQueryInfVersionInformationW
+#else
+#define SetupQueryInfVersionInformation SetupQueryInfVersionInformationA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetInfFileListA(
+ IN PCSTR DirectoryPath, OPTIONAL
+ IN DWORD InfStyle,
+ OUT PSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetInfFileListW(
+ IN PCWSTR DirectoryPath, OPTIONAL
+ IN DWORD InfStyle,
+ OUT PWSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupGetInfFileList SetupGetInfFileListW
+#else
+#define SetupGetInfFileList SetupGetInfFileListA
+#endif
+
+
+WINSETUPAPI
+HINF
+WINAPI
+SetupOpenInfFileW(
+ IN PCWSTR FileName,
+ IN PCWSTR InfClass, OPTIONAL
+ IN DWORD InfStyle,
+ OUT PUINT ErrorLine OPTIONAL
+ );
+
+WINSETUPAPI
+HINF
+WINAPI
+SetupOpenInfFileA(
+ IN PCSTR FileName,
+ IN PCSTR InfClass, OPTIONAL
+ IN DWORD InfStyle,
+ OUT PUINT ErrorLine OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupOpenInfFile SetupOpenInfFileW
+#else
+#define SetupOpenInfFile SetupOpenInfFileA
+#endif
+
+
+WINSETUPAPI
+HINF
+WINAPI
+SetupOpenMasterInf(
+ VOID
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupOpenAppendInfFileW(
+ IN PCWSTR FileName, OPTIONAL
+ IN HINF InfHandle,
+ OUT PUINT ErrorLine OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupOpenAppendInfFileA(
+ IN PCSTR FileName, OPTIONAL
+ IN HINF InfHandle,
+ OUT PUINT ErrorLine OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupOpenAppendInfFile SetupOpenAppendInfFileW
+#else
+#define SetupOpenAppendInfFile SetupOpenAppendInfFileA
+#endif
+
+
+WINSETUPAPI
+VOID
+WINAPI
+SetupCloseInfFile(
+ IN HINF InfHandle
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupFindFirstLineA(
+ IN HINF InfHandle,
+ IN PCSTR Section,
+ IN PCSTR Key, OPTIONAL
+ OUT PINFCONTEXT Context
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupFindFirstLineW(
+ IN HINF InfHandle,
+ IN PCWSTR Section,
+ IN PCWSTR Key, OPTIONAL
+ OUT PINFCONTEXT Context
+ );
+
+#ifdef UNICODE
+#define SetupFindFirstLine SetupFindFirstLineW
+#else
+#define SetupFindFirstLine SetupFindFirstLineA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupFindNextLine(
+ IN PINFCONTEXT ContextIn,
+ OUT PINFCONTEXT ContextOut
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupFindNextMatchLineA(
+ IN PINFCONTEXT ContextIn,
+ IN PCSTR Key, OPTIONAL
+ OUT PINFCONTEXT ContextOut
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupFindNextMatchLineW(
+ IN PINFCONTEXT ContextIn,
+ IN PCWSTR Key, OPTIONAL
+ OUT PINFCONTEXT ContextOut
+ );
+
+#ifdef UNICODE
+#define SetupFindNextMatchLine SetupFindNextMatchLineW
+#else
+#define SetupFindNextMatchLine SetupFindNextMatchLineA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetLineByIndexA(
+ IN HINF InfHandle,
+ IN PCSTR Section,
+ IN DWORD Index,
+ OUT PINFCONTEXT Context
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetLineByIndexW(
+ IN HINF InfHandle,
+ IN PCWSTR Section,
+ IN DWORD Index,
+ OUT PINFCONTEXT Context
+ );
+
+#ifdef UNICODE
+#define SetupGetLineByIndex SetupGetLineByIndexW
+#else
+#define SetupGetLineByIndex SetupGetLineByIndexA
+#endif
+
+
+WINSETUPAPI
+LONG
+WINAPI
+SetupGetLineCountA(
+ IN HINF InfHandle,
+ IN PCSTR Section
+ );
+
+WINSETUPAPI
+LONG
+WINAPI
+SetupGetLineCountW(
+ IN HINF InfHandle,
+ IN PCWSTR Section
+ );
+
+#ifdef UNICODE
+#define SetupGetLineCount SetupGetLineCountW
+#else
+#define SetupGetLineCount SetupGetLineCountA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetLineTextA(
+ IN PINFCONTEXT Context, OPTIONAL
+ IN HINF InfHandle, OPTIONAL
+ IN PCSTR Section, OPTIONAL
+ IN PCSTR Key, OPTIONAL
+ OUT PSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetLineTextW(
+ IN PINFCONTEXT Context, OPTIONAL
+ IN HINF InfHandle, OPTIONAL
+ IN PCWSTR Section, OPTIONAL
+ IN PCWSTR Key, OPTIONAL
+ OUT PWSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupGetLineText SetupGetLineTextW
+#else
+#define SetupGetLineText SetupGetLineTextA
+#endif
+
+
+WINSETUPAPI
+DWORD
+WINAPI
+SetupGetFieldCount(
+ IN PINFCONTEXT Context
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetStringFieldA(
+ IN PINFCONTEXT Context,
+ IN DWORD FieldIndex,
+ OUT PSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetStringFieldW(
+ IN PINFCONTEXT Context,
+ IN DWORD FieldIndex,
+ OUT PWSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupGetStringField SetupGetStringFieldW
+#else
+#define SetupGetStringField SetupGetStringFieldA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetIntField(
+ IN PINFCONTEXT Context,
+ IN DWORD FieldIndex,
+ OUT PINT IntegerValue
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetMultiSzFieldA(
+ IN PINFCONTEXT Context,
+ IN DWORD FieldIndex,
+ OUT PSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT LPDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetMultiSzFieldW(
+ IN PINFCONTEXT Context,
+ IN DWORD FieldIndex,
+ OUT PWSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT LPDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupGetMultiSzField SetupGetMultiSzFieldW
+#else
+#define SetupGetMultiSzField SetupGetMultiSzFieldA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetBinaryField(
+ IN PINFCONTEXT Context,
+ IN DWORD FieldIndex,
+ OUT PBYTE ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT LPDWORD RequiredSize OPTIONAL
+ );
+
+
+WINSETUPAPI
+DWORD
+WINAPI
+SetupGetFileCompressionInfoA(
+ IN PCSTR SourceFileName,
+ OUT PSTR *ActualSourceFileName,
+ OUT PDWORD SourceFileSize,
+ OUT PDWORD TargetFileSize,
+ OUT PUINT CompressionType
+ );
+
+WINSETUPAPI
+DWORD
+WINAPI
+SetupGetFileCompressionInfoW(
+ IN PCWSTR SourceFileName,
+ OUT PWSTR *ActualSourceFileName,
+ OUT PDWORD SourceFileSize,
+ OUT PDWORD TargetFileSize,
+ OUT PUINT CompressionType
+ );
+
+#ifdef UNICODE
+#define SetupGetFileCompressionInfo SetupGetFileCompressionInfoW
+#else
+#define SetupGetFileCompressionInfo SetupGetFileCompressionInfoA
+#endif
+
+
+//
+// Compression types
+//
+#define FILE_COMPRESSION_NONE 0
+#define FILE_COMPRESSION_WINLZA 1
+#define FILE_COMPRESSION_MSZIP 2
+
+
+WINSETUPAPI
+DWORD
+WINAPI
+SetupDecompressOrCopyFileA(
+ IN PCSTR SourceFileName,
+ IN PCSTR TargetFileName,
+ IN PUINT CompressionType OPTIONAL
+ );
+
+WINSETUPAPI
+DWORD
+WINAPI
+SetupDecompressOrCopyFileW(
+ IN PCWSTR SourceFileName,
+ IN PCWSTR TargetFileName,
+ IN PUINT CompressionType OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDecompressOrCopyFile SetupDecompressOrCopyFileW
+#else
+#define SetupDecompressOrCopyFile SetupDecompressOrCopyFileA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetSourceFileLocationA(
+ IN HINF InfHandle,
+ IN PINFCONTEXT InfContext, OPTIONAL
+ IN PCSTR FileName, OPTIONAL
+ OUT PUINT SourceId,
+ OUT PSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetSourceFileLocationW(
+ IN HINF InfHandle,
+ IN PINFCONTEXT InfContext, OPTIONAL
+ IN PCWSTR FileName, OPTIONAL
+ OUT PUINT SourceId,
+ OUT PWSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupGetSourceFileLocation SetupGetSourceFileLocationW
+#else
+#define SetupGetSourceFileLocation SetupGetSourceFileLocationA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetSourceFileSizeA(
+ IN HINF InfHandle,
+ IN PINFCONTEXT InfContext, OPTIONAL
+ IN PCSTR FileName, OPTIONAL
+ IN PCSTR Section, OPTIONAL
+ OUT PDWORD FileSize,
+ IN UINT RoundingFactor OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetSourceFileSizeW(
+ IN HINF InfHandle,
+ IN PINFCONTEXT InfContext, OPTIONAL
+ IN PCWSTR FileName, OPTIONAL
+ IN PCWSTR Section, OPTIONAL
+ OUT PDWORD FileSize,
+ IN UINT RoundingFactor OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupGetSourceFileSize SetupGetSourceFileSizeW
+#else
+#define SetupGetSourceFileSize SetupGetSourceFileSizeA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetTargetPathA(
+ IN HINF InfHandle,
+ IN PINFCONTEXT InfContext, OPTIONAL
+ IN PCSTR Section, OPTIONAL
+ OUT PSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetTargetPathW(
+ IN HINF InfHandle,
+ IN PINFCONTEXT InfContext, OPTIONAL
+ IN PCWSTR Section, OPTIONAL
+ OUT PWSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupGetTargetPath SetupGetTargetPathW
+#else
+#define SetupGetTargetPath SetupGetTargetPathA
+#endif
+
+
+//
+// Define flags for SourceList APIs.
+//
+#define SRCLIST_TEMPORARY 0x00000001
+#define SRCLIST_NOBROWSE 0x00000002
+#define SRCLIST_SYSTEM 0x00000010
+#define SRCLIST_USER 0x00000020
+#define SRCLIST_SYSIFADMIN 0x00000040
+#define SRCLIST_SUBDIRS 0x00000100
+#define SRCLIST_APPEND 0x00000200
+#define SRCLIST_NOSTRIPPLATFORM 0x00000400
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupSetSourceListA(
+ IN DWORD Flags,
+ IN PCSTR *SourceList,
+ IN UINT SourceCount
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupSetSourceListW(
+ IN DWORD Flags,
+ IN PCWSTR *SourceList,
+ IN UINT SourceCount
+ );
+
+#ifdef UNICODE
+#define SetupSetSourceList SetupSetSourceListW
+#else
+#define SetupSetSourceList SetupSetSourceListA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupCancelTemporarySourceList(
+ VOID
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupAddToSourceListA(
+ IN DWORD Flags,
+ IN PCSTR Source
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupAddToSourceListW(
+ IN DWORD Flags,
+ IN PCWSTR Source
+ );
+
+#ifdef UNICODE
+#define SetupAddToSourceList SetupAddToSourceListW
+#else
+#define SetupAddToSourceList SetupAddToSourceListA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupRemoveFromSourceListA(
+ IN DWORD Flags,
+ IN PCSTR Source
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupRemoveFromSourceListW(
+ IN DWORD Flags,
+ IN PCWSTR Source
+ );
+
+#ifdef UNICODE
+#define SetupRemoveFromSourceList SetupRemoveFromSourceListW
+#else
+#define SetupRemoveFromSourceList SetupRemoveFromSourceListA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQuerySourceListA(
+ IN DWORD Flags,
+ OUT PCSTR **List,
+ OUT PUINT Count
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQuerySourceListW(
+ IN DWORD Flags,
+ OUT PCWSTR **List,
+ OUT PUINT Count
+ );
+
+#ifdef UNICODE
+#define SetupQuerySourceList SetupQuerySourceListW
+#else
+#define SetupQuerySourceList SetupQuerySourceListA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupFreeSourceListA(
+ IN OUT PCSTR **List,
+ IN UINT Count
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupFreeSourceListW(
+ IN OUT PCWSTR **List,
+ IN UINT Count
+ );
+
+#ifdef UNICODE
+#define SetupFreeSourceList SetupFreeSourceListW
+#else
+#define SetupFreeSourceList SetupFreeSourceListA
+#endif
+
+
+WINSETUPAPI
+UINT
+WINAPI
+SetupPromptForDiskA(
+ IN HWND hwndParent,
+ IN PCSTR DialogTitle, OPTIONAL
+ IN PCSTR DiskName, OPTIONAL
+ IN PCSTR PathToSource, OPTIONAL
+ IN PCSTR FileSought,
+ IN PCSTR TagFile, OPTIONAL
+ IN DWORD DiskPromptStyle,
+ OUT PSTR PathBuffer,
+ IN DWORD PathBufferSize,
+ OUT PDWORD PathRequiredSize
+ );
+
+WINSETUPAPI
+UINT
+WINAPI
+SetupPromptForDiskW(
+ IN HWND hwndParent,
+ IN PCWSTR DialogTitle, OPTIONAL
+ IN PCWSTR DiskName, OPTIONAL
+ IN PCWSTR PathToSource, OPTIONAL
+ IN PCWSTR FileSought,
+ IN PCWSTR TagFile, OPTIONAL
+ IN DWORD DiskPromptStyle,
+ OUT PWSTR PathBuffer,
+ IN DWORD PathBufferSize,
+ OUT PDWORD PathRequiredSize
+ );
+
+#ifdef UNICODE
+#define SetupPromptForDisk SetupPromptForDiskW
+#else
+#define SetupPromptForDisk SetupPromptForDiskA
+#endif
+
+
+WINSETUPAPI
+UINT
+WINAPI
+SetupCopyErrorA(
+ IN HWND hwndParent,
+ IN PCSTR DialogTitle, OPTIONAL
+ IN PCSTR DiskName, OPTIONAL
+ IN PCSTR PathToSource,
+ IN PCSTR SourceFile,
+ IN PCSTR TargetPathFile, OPTIONAL
+ IN UINT Win32ErrorCode,
+ IN DWORD Style,
+ OUT PSTR PathBuffer, OPTIONAL
+ IN DWORD PathBufferSize,
+ OUT PDWORD PathRequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+UINT
+WINAPI
+SetupCopyErrorW(
+ IN HWND hwndParent,
+ IN PCWSTR DialogTitle, OPTIONAL
+ IN PCWSTR DiskName, OPTIONAL
+ IN PCWSTR PathToSource,
+ IN PCWSTR SourceFile,
+ IN PCWSTR TargetPathFile, OPTIONAL
+ IN UINT Win32ErrorCode,
+ IN DWORD Style,
+ OUT PWSTR PathBuffer, OPTIONAL
+ IN DWORD PathBufferSize,
+ OUT PDWORD PathRequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupCopyError SetupCopyErrorW
+#else
+#define SetupCopyError SetupCopyErrorA
+#endif
+
+
+WINSETUPAPI
+UINT
+WINAPI
+SetupRenameErrorA(
+ IN HWND hwndParent,
+ IN PCSTR DialogTitle, OPTIONAL
+ IN PCSTR SourceFile,
+ IN PCSTR TargetFile,
+ IN UINT Win32ErrorCode,
+ IN DWORD Style
+ );
+
+WINSETUPAPI
+UINT
+WINAPI
+SetupRenameErrorW(
+ IN HWND hwndParent,
+ IN PCWSTR DialogTitle, OPTIONAL
+ IN PCWSTR SourceFile,
+ IN PCWSTR TargetFile,
+ IN UINT Win32ErrorCode,
+ IN DWORD Style
+ );
+
+#ifdef UNICODE
+#define SetupRenameError SetupRenameErrorW
+#else
+#define SetupRenameError SetupRenameErrorA
+#endif
+
+
+WINSETUPAPI
+UINT
+WINAPI
+SetupDeleteErrorA(
+ IN HWND hwndParent,
+ IN PCSTR DialogTitle, OPTIONAL
+ IN PCSTR File,
+ IN UINT Win32ErrorCode,
+ IN DWORD Style
+ );
+
+WINSETUPAPI
+UINT
+WINAPI
+SetupDeleteErrorW(
+ IN HWND hwndParent,
+ IN PCWSTR DialogTitle, OPTIONAL
+ IN PCWSTR File,
+ IN UINT Win32ErrorCode,
+ IN DWORD Style
+ );
+
+#ifdef UNICODE
+#define SetupDeleteError SetupDeleteErrorW
+#else
+#define SetupDeleteError SetupDeleteErrorA
+#endif
+
+
+//
+// Styles for SetupPromptForDisk, SetupCopyError,
+// SetupRenameError, SetupDeleteError
+//
+#define IDF_NOBROWSE 0x00000001
+#define IDF_NOSKIP 0x00000002
+#define IDF_NODETAILS 0x00000004
+#define IDF_NOCOMPRESSED 0x00000008
+#define IDF_CHECKFIRST 0x00000100
+#define IDF_NOBEEP 0x00000200
+#define IDF_NOFOREGROUND 0x00000400
+#define IDF_WARNIFSKIP 0x00000800
+#define IDF_OEMDISK 0x80000000
+
+//
+// Return values for SetupPromptForDisk, SetupCopyError,
+// SetupRenameError, SetupDeleteError
+//
+#define DPROMPT_SUCCESS 0
+#define DPROMPT_CANCEL 1
+#define DPROMPT_SKIPFILE 2
+#define DPROMPT_BUFFERTOOSMALL 3
+#define DPROMPT_OUTOFMEMORY 4
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupSetDirectoryIdA(
+ IN HINF InfHandle,
+ IN DWORD Id, OPTIONAL
+ IN PCSTR Directory OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupSetDirectoryIdW(
+ IN HINF InfHandle,
+ IN DWORD Id, OPTIONAL
+ IN PCWSTR Directory OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupSetDirectoryId SetupSetDirectoryIdW
+#else
+#define SetupSetDirectoryId SetupSetDirectoryIdA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetSourceInfoA(
+ IN HINF InfHandle,
+ IN UINT SourceId,
+ IN UINT InfoDesired,
+ OUT PSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupGetSourceInfoW(
+ IN HINF InfHandle,
+ IN UINT SourceId,
+ IN UINT InfoDesired,
+ OUT PWSTR ReturnBuffer, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupGetSourceInfo SetupGetSourceInfoW
+#else
+#define SetupGetSourceInfo SetupGetSourceInfoA
+#endif
+
+//
+// InfoDesired values for SetupGetSourceInfo
+//
+#define SRCINFO_PATH 1
+#define SRCINFO_TAGFILE 2
+#define SRCINFO_DESCRIPTION 3
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupInstallFileA(
+ IN HINF InfHandle, OPTIONAL
+ IN PINFCONTEXT InfContext, OPTIONAL
+ IN PCSTR SourceFile, OPTIONAL
+ IN PCSTR SourcePathRoot, OPTIONAL
+ IN PCSTR DestinationName, OPTIONAL
+ IN DWORD CopyStyle,
+ IN PSP_FILE_CALLBACK_A CopyMsgHandler, OPTIONAL
+ IN PVOID Context OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupInstallFileW(
+ IN HINF InfHandle, OPTIONAL
+ IN PINFCONTEXT InfContext, OPTIONAL
+ IN PCWSTR SourceFile, OPTIONAL
+ IN PCWSTR SourcePathRoot, OPTIONAL
+ IN PCWSTR DestinationName, OPTIONAL
+ IN DWORD CopyStyle,
+ IN PSP_FILE_CALLBACK_W CopyMsgHandler, OPTIONAL
+ IN PVOID Context OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupInstallFile SetupInstallFileW
+#else
+#define SetupInstallFile SetupInstallFileA
+#endif
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupInstallFileExA(
+ IN HINF InfHandle, OPTIONAL
+ IN PINFCONTEXT InfContext, OPTIONAL
+ IN PCSTR SourceFile, OPTIONAL
+ IN PCSTR SourcePathRoot, OPTIONAL
+ IN PCSTR DestinationName, OPTIONAL
+ IN DWORD CopyStyle,
+ IN PSP_FILE_CALLBACK_A CopyMsgHandler, OPTIONAL
+ IN PVOID Context, OPTIONAL
+ OUT PBOOL FileWasInUse
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupInstallFileExW(
+ IN HINF InfHandle, OPTIONAL
+ IN PINFCONTEXT InfContext, OPTIONAL
+ IN PCWSTR SourceFile, OPTIONAL
+ IN PCWSTR SourcePathRoot, OPTIONAL
+ IN PCWSTR DestinationName, OPTIONAL
+ IN DWORD CopyStyle,
+ IN PSP_FILE_CALLBACK_W CopyMsgHandler, OPTIONAL
+ IN PVOID Context, OPTIONAL
+ OUT PBOOL FileWasInUse
+ );
+
+#ifdef UNICODE
+#define SetupInstallFileEx SetupInstallFileExW
+#else
+#define SetupInstallFileEx SetupInstallFileExA
+#endif
+
+//
+// CopyStyle values for copy and queue-related APIs
+//
+#define SP_COPY_DELETESOURCE 0x0000001 // delete source file on successful copy
+#define SP_COPY_REPLACEONLY 0x0000002 // copy only if target file already present
+#define SP_COPY_NEWER 0x0000004 // copy only if source file newer than target
+#define SP_COPY_NOOVERWRITE 0x0000008 // copy only if target doesn't exist
+#define SP_COPY_NODECOMP 0x0000010 // don't decompress source file while copying
+#define SP_COPY_LANGUAGEAWARE 0x0000020 // don't overwrite file of different language
+#define SP_COPY_SOURCE_ABSOLUTE 0x0000040 // SourceFile is a full source path
+#define SP_COPY_SOURCEPATH_ABSOLUTE 0x0000080 // SourcePathRoot is the full path
+#define SP_COPY_IN_USE_NEEDS_REBOOT 0x0000100 // System needs reboot if file in use
+#define SP_COPY_FORCE_IN_USE 0x0000200 // Force target-in-use behavior
+#define SP_COPY_NOSKIP 0x0000400 // Skip is disallowed for this file or section
+#define SP_FLAG_CABINETCONTINUATION 0x0000800 // Used with need media notification
+#define SP_COPY_FORCE_NOOVERWRITE 0x0001000 // like NOOVERWRITE but no callback nofitication
+#define SP_COPY_FORCE_NEWER 0x0002000 // like NEWER but no callback nofitication
+#define SP_COPY_WARNIFSKIP 0x0004000 // system critical file: warn if user tries to skip
+#define SP_COPY_NOBROWSE 0x0008000 // Browsing is disallowed for this file or section
+
+
+WINSETUPAPI
+HSPFILEQ
+WINAPI
+SetupOpenFileQueue(
+ VOID
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupCloseFileQueue(
+ IN HSPFILEQ QueueHandle
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupSetPlatformPathOverrideA(
+ IN PCSTR Override OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupSetPlatformPathOverrideW(
+ IN PCWSTR Override OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupSetPlatformPathOverride SetupSetPlatformPathOverrideW
+#else
+#define SetupSetPlatformPathOverride SetupSetPlatformPathOverrideA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueCopyA(
+ IN HSPFILEQ QueueHandle,
+ IN PCSTR SourceRootPath,
+ IN PCSTR SourcePath, OPTIONAL
+ IN PCSTR SourceFilename,
+ IN PCSTR SourceDescription, OPTIONAL
+ IN PCSTR SourceTagfile, OPTIONAL
+ IN PCSTR TargetDirectory,
+ IN PCSTR TargetFilename, OPTIONAL
+ IN DWORD CopyStyle
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueCopyW(
+ IN HSPFILEQ QueueHandle,
+ IN PCWSTR SourceRootPath,
+ IN PCWSTR SourcePath, OPTIONAL
+ IN PCWSTR SourceFilename,
+ IN PCWSTR SourceDescription, OPTIONAL
+ IN PCWSTR SourceTagfile, OPTIONAL
+ IN PCWSTR TargetDirectory,
+ IN PCWSTR TargetFilename, OPTIONAL
+ IN DWORD CopyStyle
+ );
+
+#ifdef UNICODE
+#define SetupQueueCopy SetupQueueCopyW
+#else
+#define SetupQueueCopy SetupQueueCopyA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueDefaultCopyA(
+ IN HSPFILEQ QueueHandle,
+ IN HINF InfHandle,
+ IN PCSTR SourceRootPath,
+ IN PCSTR SourceFilename,
+ IN PCSTR TargetFilename,
+ IN DWORD CopyStyle
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueDefaultCopyW(
+ IN HSPFILEQ QueueHandle,
+ IN HINF InfHandle,
+ IN PCWSTR SourceRootPath,
+ IN PCWSTR SourceFilename,
+ IN PCWSTR TargetFilename,
+ IN DWORD CopyStyle
+ );
+
+#ifdef UNICODE
+#define SetupQueueDefaultCopy SetupQueueDefaultCopyW
+#else
+#define SetupQueueDefaultCopy SetupQueueDefaultCopyA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueCopySectionA(
+ IN HSPFILEQ QueueHandle,
+ IN PCSTR SourceRootPath,
+ IN HINF InfHandle,
+ IN HINF ListInfHandle, OPTIONAL
+ IN PCSTR Section,
+ IN DWORD CopyStyle
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueCopySectionW(
+ IN HSPFILEQ QueueHandle,
+ IN PCWSTR SourceRootPath,
+ IN HINF InfHandle,
+ IN HINF ListInfHandle, OPTIONAL
+ IN PCWSTR Section,
+ IN DWORD CopyStyle
+ );
+
+#ifdef UNICODE
+#define SetupQueueCopySection SetupQueueCopySectionW
+#else
+#define SetupQueueCopySection SetupQueueCopySectionA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueDeleteA(
+ IN HSPFILEQ QueueHandle,
+ IN PCSTR PathPart1,
+ IN PCSTR PathPart2 OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueDeleteW(
+ IN HSPFILEQ QueueHandle,
+ IN PCWSTR PathPart1,
+ IN PCWSTR PathPart2 OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupQueueDelete SetupQueueDeleteW
+#else
+#define SetupQueueDelete SetupQueueDeleteA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueDeleteSectionA(
+ IN HSPFILEQ QueueHandle,
+ IN HINF InfHandle,
+ IN HINF ListInfHandle, OPTIONAL
+ IN PCSTR Section
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueDeleteSectionW(
+ IN HSPFILEQ QueueHandle,
+ IN HINF InfHandle,
+ IN HINF ListInfHandle, OPTIONAL
+ IN PCWSTR Section
+ );
+
+#ifdef UNICODE
+#define SetupQueueDeleteSection SetupQueueDeleteSectionW
+#else
+#define SetupQueueDeleteSection SetupQueueDeleteSectionA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueRenameA(
+ IN HSPFILEQ QueueHandle,
+ IN PCSTR SourcePath,
+ IN PCSTR SourceFilename, OPTIONAL
+ IN PCSTR TargetPath, OPTIONAL
+ IN PCSTR TargetFilename
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueRenameW(
+ IN HSPFILEQ QueueHandle,
+ IN PCWSTR SourcePath,
+ IN PCWSTR SourceFilename, OPTIONAL
+ IN PCWSTR TargetPath, OPTIONAL
+ IN PCWSTR TargetFilename
+ );
+
+#ifdef UNICODE
+#define SetupQueueRename SetupQueueRenameW
+#else
+#define SetupQueueRename SetupQueueRenameA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueRenameSectionA(
+ IN HSPFILEQ QueueHandle,
+ IN HINF InfHandle,
+ IN HINF ListInfHandle, OPTIONAL
+ IN PCSTR Section
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueueRenameSectionW(
+ IN HSPFILEQ QueueHandle,
+ IN HINF InfHandle,
+ IN HINF ListInfHandle, OPTIONAL
+ IN PCWSTR Section
+ );
+
+#ifdef UNICODE
+#define SetupQueueRenameSection SetupQueueRenameSectionW
+#else
+#define SetupQueueRenameSection SetupQueueRenameSectionA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupCommitFileQueueA(
+ IN HWND Owner, OPTIONAL
+ IN HSPFILEQ QueueHandle,
+ IN PSP_FILE_CALLBACK_A MsgHandler,
+ IN PVOID Context
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupCommitFileQueueW(
+ IN HWND Owner, OPTIONAL
+ IN HSPFILEQ QueueHandle,
+ IN PSP_FILE_CALLBACK_W MsgHandler,
+ IN PVOID Context
+ );
+
+#ifdef UNICODE
+#define SetupCommitFileQueue SetupCommitFileQueueW
+#else
+#define SetupCommitFileQueue SetupCommitFileQueueA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupScanFileQueueA(
+ IN HSPFILEQ FileQueue,
+ IN DWORD Flags,
+ IN HWND Window, OPTIONAL
+ IN PSP_FILE_CALLBACK_A CallbackRoutine, OPTIONAL
+ IN PVOID CallbackContext, OPTIONAL
+ OUT PDWORD Result
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupScanFileQueueW(
+ IN HSPFILEQ FileQueue,
+ IN DWORD Flags,
+ IN HWND Window, OPTIONAL
+ IN PSP_FILE_CALLBACK_W CallbackRoutine, OPTIONAL
+ IN PVOID CallbackContext, OPTIONAL
+ OUT PDWORD Result
+ );
+
+#ifdef UNICODE
+#define SetupScanFileQueue SetupScanFileQueueW
+#else
+#define SetupScanFileQueue SetupScanFileQueueA
+#endif
+
+//
+// Define flags for SetupScanFileQueue.
+//
+#define SPQ_SCAN_FILE_PRESENCE 0x00000001
+#define SPQ_SCAN_FILE_VALIDITY 0x00000002
+#define SPQ_SCAN_USE_CALLBACK 0x00000004
+#define SPQ_SCAN_INFORM_USER 0x00000010
+
+//
+// Define flags used with Param2 for SPFILENOTIFY_QUEUESCAN
+//
+#define SPQ_DELAYED_COPY 0x00000001 // file was in use; registered for delayed copy
+
+//
+// Cabinet APIs
+//
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupIterateCabinetA(
+ IN PCSTR CabinetFile,
+ IN DWORD Reserved,
+ IN PSP_FILE_CALLBACK_A MsgHandler,
+ IN PVOID Context
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupIterateCabinetW(
+ IN PCWSTR CabinetFile,
+ IN DWORD Reserved,
+ IN PSP_FILE_CALLBACK_W MsgHandler,
+ IN PVOID Context
+ );
+
+#ifdef UNICODE
+#define SetupIterateCabinet SetupIterateCabinetW
+#else
+#define SetupIterateCabinet SetupIterateCabinetA
+#endif
+
+
+WINSETUPAPI
+INT
+WINAPI
+SetupPromptReboot(
+ IN HSPFILEQ FileQueue, OPTIONAL
+ IN HWND Owner,
+ IN BOOL ScanOnly
+ );
+
+//
+// Define flags that are returned by SetupPromptReboot
+//
+#define SPFILEQ_FILE_IN_USE 0x00000001
+#define SPFILEQ_REBOOT_RECOMMENDED 0x00000002
+#define SPFILEQ_REBOOT_IN_PROGRESS 0x00000004
+
+
+WINSETUPAPI
+PVOID
+WINAPI
+SetupInitDefaultQueueCallback(
+ IN HWND OwnerWindow
+ );
+
+WINSETUPAPI
+PVOID
+WINAPI
+SetupInitDefaultQueueCallbackEx(
+ IN HWND OwnerWindow,
+ IN HWND AlternateProgressWindow, OPTIONAL
+ IN UINT ProgressMessage,
+ IN DWORD Reserved1,
+ IN PVOID Reserved2
+ );
+
+WINSETUPAPI
+VOID
+WINAPI
+SetupTermDefaultQueueCallback(
+ IN PVOID Context
+ );
+
+WINSETUPAPI
+UINT
+WINAPI
+SetupDefaultQueueCallbackA(
+ IN PVOID Context,
+ IN UINT Notification,
+ IN UINT Param1,
+ IN UINT Param2
+ );
+
+WINSETUPAPI
+UINT
+WINAPI
+SetupDefaultQueueCallbackW(
+ IN PVOID Context,
+ IN UINT Notification,
+ IN UINT Param1,
+ IN UINT Param2
+ );
+
+#ifdef UNICODE
+#define SetupDefaultQueueCallback SetupDefaultQueueCallbackW
+#else
+#define SetupDefaultQueueCallback SetupDefaultQueueCallbackA
+#endif
+
+
+//
+// Flags for AddReg section lines in INF. The corresponding value
+// is <ValueType> in the AddReg line format given below:
+//
+// <RegRootString>,<SubKey>,<ValueName>,<ValueType>,<Value>...
+//
+// The low word contains basic flags concerning the general data type
+// and AddReg action. The high word contains values that more specifically
+// identify the data type of the registry value. The high word is ignored
+// by the 16-bit Windows 95 SETUPX APIs.
+//
+#define FLG_ADDREG_BINVALUETYPE ( 0x00000001 )
+#define FLG_ADDREG_NOCLOBBER ( 0x00000002 )
+#define FLG_ADDREG_DELVAL ( 0x00000004 )
+#define FLG_ADDREG_APPEND ( 0x00000008 ) // Currently supported only
+ // for REG_MULTI_SZ values.
+
+#define FLG_ADDREG_TYPE_MASK ( 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE )
+#define FLG_ADDREG_TYPE_SZ ( 0x00000000 )
+#define FLG_ADDREG_TYPE_MULTI_SZ ( 0x00010000 )
+#define FLG_ADDREG_TYPE_EXPAND_SZ ( 0x00020000 )
+#define FLG_ADDREG_TYPE_BINARY ( 0x00000000 | FLG_ADDREG_BINVALUETYPE )
+#define FLG_ADDREG_TYPE_DWORD ( 0x00010000 | FLG_ADDREG_BINVALUETYPE )
+#define FLG_ADDREG_TYPE_NONE ( 0x00020000 | FLG_ADDREG_BINVALUETYPE )
+
+//
+// The INF may supply any arbitrary data type ordinal in the highword except
+// for the following: REG_NONE, REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ. If this
+// technique is used, then the data is given in binary format, one byte per
+// field.
+//
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupInstallFromInfSectionA(
+ IN HWND Owner,
+ IN HINF InfHandle,
+ IN PCSTR SectionName,
+ IN UINT Flags,
+ IN HKEY RelativeKeyRoot, OPTIONAL
+ IN PCSTR SourceRootPath, OPTIONAL
+ IN UINT CopyFlags,
+ IN PSP_FILE_CALLBACK_A MsgHandler,
+ IN PVOID Context,
+ IN HDEVINFO DeviceInfoSet, OPTIONAL
+ IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupInstallFromInfSectionW(
+ IN HWND Owner,
+ IN HINF InfHandle,
+ IN PCWSTR SectionName,
+ IN UINT Flags,
+ IN HKEY RelativeKeyRoot, OPTIONAL
+ IN PCWSTR SourceRootPath, OPTIONAL
+ IN UINT CopyFlags,
+ IN PSP_FILE_CALLBACK_W MsgHandler,
+ IN PVOID Context,
+ IN HDEVINFO DeviceInfoSet, OPTIONAL
+ IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupInstallFromInfSection SetupInstallFromInfSectionW
+#else
+#define SetupInstallFromInfSection SetupInstallFromInfSectionA
+#endif
+
+//
+// Flags for SetupInstallFromInfSection
+//
+#define SPINST_LOGCONFIG 0x00000001
+#define SPINST_INIFILES 0x00000002
+#define SPINST_REGISTRY 0x00000004
+#define SPINST_INI2REG 0x00000008
+#define SPINST_FILES 0x00000010
+#define SPINST_ALL 0x0000001f
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupInstallFilesFromInfSectionA(
+ IN HINF InfHandle,
+ IN HINF LayoutInfHandle, OPTIONAL
+ IN HSPFILEQ FileQueue,
+ IN PCSTR SectionName,
+ IN PCSTR SourceRootPath, OPTIONAL
+ IN UINT CopyFlags
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupInstallFilesFromInfSectionW(
+ IN HINF InfHandle,
+ IN HINF LayoutInfHandle, OPTIONAL
+ IN HSPFILEQ FileQueue,
+ IN PCWSTR SectionName,
+ IN PCWSTR SourceRootPath, OPTIONAL
+ IN UINT CopyFlags
+ );
+
+#ifdef UNICODE
+#define SetupInstallFilesFromInfSection SetupInstallFilesFromInfSectionW
+#else
+#define SetupInstallFilesFromInfSection SetupInstallFilesFromInfSectionA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupInstallServicesFromInfSectionA(
+ IN HINF InfHandle,
+ IN PCSTR SectionName,
+ IN DWORD Flags
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupInstallServicesFromInfSectionW(
+ IN HINF InfHandle,
+ IN PCWSTR SectionName,
+ IN DWORD Flags
+ );
+
+#ifdef UNICODE
+#define SetupInstallServicesFromInfSection SetupInstallServicesFromInfSectionW
+#else
+#define SetupInstallServicesFromInfSection SetupInstallServicesFromInfSectionA
+#endif
+
+//
+// Flags for SetupInstallServicesFromInfSection. These flags are also used in
+// the flags field of an AddService line in a device INF. However, in that case,
+// additional flags are permitted that are not used by this API. These flags
+// are marked as such below.
+//
+#define SPSVCINST_TAGTOFRONT (0x00000001) // move service's tag to front of its group order list
+#define SPSVCINST_ASSOCSERVICE (0x00000002) // associate this service with the device being installed
+ // (flag is ignored by SetupInstallServicesFromInfSection)
+
+//
+// Define handle type for Setup file log.
+//
+typedef PVOID HSPFILELOG;
+
+WINSETUPAPI
+HSPFILELOG
+WINAPI
+SetupInitializeFileLogA(
+ IN PCSTR LogFileName, OPTIONAL
+ IN DWORD Flags
+ );
+
+WINSETUPAPI
+HSPFILELOG
+WINAPI
+SetupInitializeFileLogW(
+ IN PCWSTR LogFileName, OPTIONAL
+ IN DWORD Flags
+ );
+
+#ifdef UNICODE
+#define SetupInitializeFileLog SetupInitializeFileLogW
+#else
+#define SetupInitializeFileLog SetupInitializeFileLogA
+#endif
+
+//
+// Flags for SetupInitializeFileLog
+//
+#define SPFILELOG_SYSTEMLOG 0x00000001 // use system log -- must be Administrator
+#define SPFILELOG_FORCENEW 0x00000002 // not valid with SPFILELOG_SYSTEMLOG
+#define SPFILELOG_QUERYONLY 0x00000004 // allows non-administrators to read system log
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupTerminateFileLog(
+ IN HSPFILELOG FileLogHandle
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupLogFileA(
+ IN HSPFILELOG FileLogHandle,
+ IN PCSTR LogSectionName, OPTIONAL
+ IN PCSTR SourceFilename,
+ IN PCSTR TargetFilename,
+ IN DWORD Checksum, OPTIONAL
+ IN PCSTR DiskTagfile, OPTIONAL
+ IN PCSTR DiskDescription, OPTIONAL
+ IN PCSTR OtherInfo, OPTIONAL
+ IN DWORD Flags
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupLogFileW(
+ IN HSPFILELOG FileLogHandle,
+ IN PCWSTR LogSectionName, OPTIONAL
+ IN PCWSTR SourceFilename,
+ IN PCWSTR TargetFilename,
+ IN DWORD Checksum, OPTIONAL
+ IN PCWSTR DiskTagfile, OPTIONAL
+ IN PCWSTR DiskDescription, OPTIONAL
+ IN PCWSTR OtherInfo, OPTIONAL
+ IN DWORD Flags
+ );
+
+#ifdef UNICODE
+#define SetupLogFile SetupLogFileW
+#else
+#define SetupLogFile SetupLogFileA
+#endif
+
+//
+// Flags for SetupLogFile
+//
+#define SPFILELOG_OEMFILE 0x00000001
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupRemoveFileLogEntryA(
+ IN HSPFILELOG FileLogHandle,
+ IN PCSTR LogSectionName, OPTIONAL
+ IN PCSTR TargetFilename OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupRemoveFileLogEntryW(
+ IN HSPFILELOG FileLogHandle,
+ IN PCWSTR LogSectionName, OPTIONAL
+ IN PCWSTR TargetFilename OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupRemoveFileLogEntry SetupRemoveFileLogEntryW
+#else
+#define SetupRemoveFileLogEntry SetupRemoveFileLogEntryA
+#endif
+
+
+//
+// Items retrievable from SetupQueryFileLog()
+//
+typedef enum {
+ SetupFileLogSourceFilename,
+ SetupFileLogChecksum,
+ SetupFileLogDiskTagfile,
+ SetupFileLogDiskDescription,
+ SetupFileLogOtherInfo,
+ SetupFileLogMax
+} SetupFileLogInfo;
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueryFileLogA(
+ IN HSPFILELOG FileLogHandle,
+ IN PCSTR LogSectionName, OPTIONAL
+ IN PCSTR TargetFilename,
+ IN SetupFileLogInfo DesiredInfo,
+ OUT PSTR DataOut, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupQueryFileLogW(
+ IN HSPFILELOG FileLogHandle,
+ IN PCWSTR LogSectionName, OPTIONAL
+ IN PCWSTR TargetFilename,
+ IN SetupFileLogInfo DesiredInfo,
+ OUT PWSTR DataOut, OPTIONAL
+ IN DWORD ReturnBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupQueryFileLog SetupQueryFileLogW
+#else
+#define SetupQueryFileLog SetupQueryFileLogA
+#endif
+
+
+//
+// Device Installer APIs
+//
+
+WINSETUPAPI
+HDEVINFO
+WINAPI
+SetupDiCreateDeviceInfoList(
+ IN LPGUID ClassGuid, OPTIONAL
+ IN HWND hwndParent OPTIONAL
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDeviceInfoListClass(
+ IN HDEVINFO DeviceInfoSet,
+ OUT LPGUID ClassGuid
+ );
+
+
+//
+// Flags for SetupDiCreateDeviceInfo
+//
+#define DICD_GENERATE_ID 0x00000001
+#define DICD_INHERIT_CLASSDRVS 0x00000002
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiCreateDeviceInfoA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PCSTR DeviceName,
+ IN LPGUID ClassGuid,
+ IN PCSTR DeviceDescription, OPTIONAL
+ IN HWND hwndParent, OPTIONAL
+ IN DWORD CreationFlags,
+ OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiCreateDeviceInfoW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PCWSTR DeviceName,
+ IN LPGUID ClassGuid,
+ IN PCWSTR DeviceDescription, OPTIONAL
+ IN HWND hwndParent, OPTIONAL
+ IN DWORD CreationFlags,
+ OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiCreateDeviceInfo SetupDiCreateDeviceInfoW
+#else
+#define SetupDiCreateDeviceInfo SetupDiCreateDeviceInfoA
+#endif
+
+
+//
+// Flags for SetupDiOpenDeviceInfo
+//
+#define DIOD_INHERIT_CLASSDRVS 0x00000002
+#define DIOD_CANCEL_REMOVE 0x00000004
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiOpenDeviceInfoA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PCSTR DeviceInstanceId,
+ IN HWND hwndParent, OPTIONAL
+ IN DWORD OpenFlags,
+ OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiOpenDeviceInfoW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PCWSTR DeviceInstanceId,
+ IN HWND hwndParent, OPTIONAL
+ IN DWORD OpenFlags,
+ OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiOpenDeviceInfo SetupDiOpenDeviceInfoW
+#else
+#define SetupDiOpenDeviceInfo SetupDiOpenDeviceInfoA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDeviceInstanceIdA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ OUT PSTR DeviceInstanceId,
+ IN DWORD DeviceInstanceIdSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDeviceInstanceIdW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ OUT PWSTR DeviceInstanceId,
+ IN DWORD DeviceInstanceIdSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiGetDeviceInstanceId SetupDiGetDeviceInstanceIdW
+#else
+#define SetupDiGetDeviceInstanceId SetupDiGetDeviceInstanceIdA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiDeleteDeviceInfo(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiEnumDeviceInfo(
+ IN HDEVINFO DeviceInfoSet,
+ IN DWORD MemberIndex,
+ OUT PSP_DEVINFO_DATA DeviceInfoData
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiDestroyDeviceInfoList(
+ IN HDEVINFO DeviceInfoSet
+ );
+
+
+//
+// Flags for SetupDiRegisterDeviceInfo
+//
+#define SPRDI_FIND_DUPS 0x00000001
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiRegisterDeviceInfo(
+ IN HDEVINFO DeviceInfoSet,
+ IN OUT PSP_DEVINFO_DATA DeviceInfoData,
+ IN DWORD Flags,
+ IN PSP_DETSIG_CMPPROC CompareProc, OPTIONAL
+ IN PVOID CompareContext, OPTIONAL
+ OUT PSP_DEVINFO_DATA DupDeviceInfoData OPTIONAL
+ );
+
+
+//
+// Ordinal values distinguishing between class drivers and
+// device drivers.
+// (Passed in 'DriverType' parameter of driver information list APIs)
+//
+#define SPDIT_NODRIVER 0x00000000
+#define SPDIT_CLASSDRIVER 0x00000001
+#define SPDIT_COMPATDRIVER 0x00000002
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiBuildDriverInfoList(
+ IN HDEVINFO DeviceInfoSet,
+ IN OUT PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN DWORD DriverType
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiCancelDriverInfoSearch(
+ IN HDEVINFO DeviceInfoSet
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiEnumDriverInfoA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN DWORD DriverType,
+ IN DWORD MemberIndex,
+ OUT PSP_DRVINFO_DATA_A DriverInfoData
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiEnumDriverInfoW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN DWORD DriverType,
+ IN DWORD MemberIndex,
+ OUT PSP_DRVINFO_DATA_W DriverInfoData
+ );
+
+#ifdef UNICODE
+#define SetupDiEnumDriverInfo SetupDiEnumDriverInfoW
+#else
+#define SetupDiEnumDriverInfo SetupDiEnumDriverInfoA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetSelectedDriverA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ OUT PSP_DRVINFO_DATA_A DriverInfoData
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetSelectedDriverW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ OUT PSP_DRVINFO_DATA_W DriverInfoData
+ );
+
+#ifdef UNICODE
+#define SetupDiGetSelectedDriver SetupDiGetSelectedDriverW
+#else
+#define SetupDiGetSelectedDriver SetupDiGetSelectedDriverA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetSelectedDriverA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN OUT PSP_DRVINFO_DATA_A DriverInfoData OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetSelectedDriverW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN OUT PSP_DRVINFO_DATA_W DriverInfoData OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiSetSelectedDriver SetupDiSetSelectedDriverW
+#else
+#define SetupDiSetSelectedDriver SetupDiSetSelectedDriverA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDriverInfoDetailA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_DRVINFO_DATA_A DriverInfoData,
+ OUT PSP_DRVINFO_DETAIL_DATA_A DriverInfoDetailData, OPTIONAL
+ IN DWORD DriverInfoDetailDataSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDriverInfoDetailW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_DRVINFO_DATA_W DriverInfoData,
+ OUT PSP_DRVINFO_DETAIL_DATA_W DriverInfoDetailData, OPTIONAL
+ IN DWORD DriverInfoDetailDataSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiGetDriverInfoDetail SetupDiGetDriverInfoDetailW
+#else
+#define SetupDiGetDriverInfoDetail SetupDiGetDriverInfoDetailA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiDestroyDriverInfoList(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN DWORD DriverType
+ );
+
+
+//
+// Flags controlling what is included in the device information set built
+// by SetupDiGetClassDevs
+//
+// #define DIGCF_DEFAULT 0x00000001 // defined but not implemented by setupx
+#define DIGCF_PRESENT 0x00000002
+#define DIGCF_ALLCLASSES 0x00000004
+#define DIGCF_PROFILE 0x00000008
+
+WINSETUPAPI
+HDEVINFO
+WINAPI
+SetupDiGetClassDevsA(
+ IN LPGUID ClassGuid, OPTIONAL
+ IN PCSTR Enumerator, OPTIONAL
+ IN HWND hwndParent, OPTIONAL
+ IN DWORD Flags
+ );
+
+WINSETUPAPI
+HDEVINFO
+WINAPI
+SetupDiGetClassDevsW(
+ IN LPGUID ClassGuid, OPTIONAL
+ IN PCWSTR Enumerator, OPTIONAL
+ IN HWND hwndParent, OPTIONAL
+ IN DWORD Flags
+ );
+
+#ifdef UNICODE
+#define SetupDiGetClassDevs SetupDiGetClassDevsW
+#else
+#define SetupDiGetClassDevs SetupDiGetClassDevsA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetINFClassA(
+ IN PCSTR InfName,
+ OUT LPGUID ClassGuid,
+ OUT PSTR ClassName,
+ IN DWORD ClassNameSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetINFClassW(
+ IN PCWSTR InfName,
+ OUT LPGUID ClassGuid,
+ OUT PWSTR ClassName,
+ IN DWORD ClassNameSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiGetINFClass SetupDiGetINFClassW
+#else
+#define SetupDiGetINFClass SetupDiGetINFClassA
+#endif
+
+
+//
+// Flags controlling exclusion from the class information list built
+// by SetupDiBuildClassInfoList
+//
+#define DIBCI_NOINSTALLCLASS 0x00000001
+#define DIBCI_NODISPLAYCLASS 0x00000002
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiBuildClassInfoList(
+ IN DWORD Flags,
+ OUT LPGUID ClassGuidList,
+ IN DWORD ClassGuidListSize,
+ OUT PDWORD RequiredSize
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetClassDescriptionA(
+ IN LPGUID ClassGuid,
+ OUT PSTR ClassDescription,
+ IN DWORD ClassDescriptionSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetClassDescriptionW(
+ IN LPGUID ClassGuid,
+ OUT PWSTR ClassDescription,
+ IN DWORD ClassDescriptionSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiGetClassDescription SetupDiGetClassDescriptionW
+#else
+#define SetupDiGetClassDescription SetupDiGetClassDescriptionA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiCallClassInstaller(
+ IN DI_FUNCTION InstallFunction,
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+
+//
+// Default install handler for DIF_SELECTDEVICE
+//
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSelectDevice(
+ IN HDEVINFO DeviceInfoSet,
+ IN OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+
+//
+// Default install handler for DIF_INSTALLDEVICE
+//
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiInstallDevice(
+ IN HDEVINFO DeviceInfoSet,
+ IN OUT PSP_DEVINFO_DATA DeviceInfoData
+ );
+
+
+//
+// Default install handler for DIF_INSTALLDEVICEFILES
+//
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiInstallDriverFiles(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+
+//
+// Default install handler for DIF_REMOVE
+//
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiRemoveDevice(
+ IN HDEVINFO DeviceInfoSet,
+ IN OUT PSP_DEVINFO_DATA DeviceInfoData
+ );
+
+
+//
+// Default install handler for DIF_MOVEDEVICE
+//
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiMoveDuplicateDevice(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DestinationDeviceInfoData
+ );
+
+
+//
+// Default install handler for DIF_PROPERTYCHANGE
+//
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiChangeState(
+ IN HDEVINFO DeviceInfoSet,
+ IN OUT PSP_DEVINFO_DATA DeviceInfoData
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiInstallClassA(
+ IN HWND hwndParent, OPTIONAL
+ IN PCSTR InfFileName,
+ IN DWORD Flags,
+ IN HSPFILEQ FileQueue OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiInstallClassW(
+ IN HWND hwndParent, OPTIONAL
+ IN PCWSTR InfFileName,
+ IN DWORD Flags,
+ IN HSPFILEQ FileQueue OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiInstallClass SetupDiInstallClassW
+#else
+#define SetupDiInstallClass SetupDiInstallClassA
+#endif
+
+
+WINSETUPAPI
+HKEY
+WINAPI
+SetupDiOpenClassRegKey(
+ IN LPGUID ClassGuid, OPTIONAL
+ IN REGSAM samDesired
+ );
+
+
+//
+// KeyType values for SetupDiCreateDevRegKey, SetupDiOpenDevRegKey, and
+// SetupDiDeleteDevRegKey.
+//
+#define DIREG_DEV 0x00000001 // Open/Create/Delete device key
+#define DIREG_DRV 0x00000002 // Open/Create/Delete driver key
+#define DIREG_BOTH 0x00000004 // Delete both driver and Device key
+
+WINSETUPAPI
+HKEY
+WINAPI
+SetupDiCreateDevRegKeyA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ IN DWORD Scope,
+ IN DWORD HwProfile,
+ IN DWORD KeyType,
+ IN HINF InfHandle, OPTIONAL
+ IN PCSTR InfSectionName OPTIONAL
+ );
+
+WINSETUPAPI
+HKEY
+WINAPI
+SetupDiCreateDevRegKeyW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ IN DWORD Scope,
+ IN DWORD HwProfile,
+ IN DWORD KeyType,
+ IN HINF InfHandle, OPTIONAL
+ IN PCWSTR InfSectionName OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiCreateDevRegKey SetupDiCreateDevRegKeyW
+#else
+#define SetupDiCreateDevRegKey SetupDiCreateDevRegKeyA
+#endif
+
+
+WINSETUPAPI
+HKEY
+WINAPI
+SetupDiOpenDevRegKey(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ IN DWORD Scope,
+ IN DWORD HwProfile,
+ IN DWORD KeyType,
+ IN REGSAM samDesired
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiDeleteDevRegKey(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ IN DWORD Scope,
+ IN DWORD HwProfile,
+ IN DWORD KeyType
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetHwProfileList(
+ OUT PDWORD HwProfileList,
+ IN DWORD HwProfileListSize,
+ OUT PDWORD RequiredSize,
+ OUT PDWORD CurrentlyActiveIndex OPTIONAL
+ );
+
+
+//
+// Device registry property codes
+// (Codes marked as read-only (R) may only be used for
+// SetupDiGetDeviceRegistryProperty)
+//
+// These values should cover the same set of registry properties
+// as defined by the CM_DRP codes in cfgmgr32.h.
+//
+#define SPDRP_DEVICEDESC (0x00000000) // DeviceDesc (R/W)
+#define SPDRP_HARDWAREID (0x00000001) // HardwareID (R/W)
+#define SPDRP_COMPATIBLEIDS (0x00000002) // CompatibleIDs (R/W)
+#define SPDRP_NTDEVICEPATHS (0x00000003) // NtDevicePaths (R)
+#define SPDRP_SERVICE (0x00000004) // Service (R/W)
+#define SPDRP_CONFIGURATION (0x00000005) // Configuration (R)
+#define SPDRP_CONFIGURATIONVECTOR (0x00000006) // ConfigurationVector (R)
+#define SPDRP_CLASS (0x00000007) // Class (R--tied to ClassGUID)
+#define SPDRP_CLASSGUID (0x00000008) // ClassGUID (R/W)
+#define SPDRP_DRIVER (0x00000009) // Driver (R/W)
+#define SPDRP_CONFIGFLAGS (0x0000000A) // ConfigFlags (R/W)
+#define SPDRP_MFG (0x0000000B) // Mfg (R/W)
+#define SPDRP_FRIENDLYNAME (0x0000000C) // FriendlyName (R/W)
+#define SPDRP_MAXIMUM_PROPERTY (0x0000000D) // Upper bound on ordinals
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDeviceRegistryPropertyA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ IN DWORD Property,
+ OUT PDWORD PropertyRegDataType, OPTIONAL
+ OUT PBYTE PropertyBuffer,
+ IN DWORD PropertyBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDeviceRegistryPropertyW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ IN DWORD Property,
+ OUT PDWORD PropertyRegDataType, OPTIONAL
+ OUT PBYTE PropertyBuffer,
+ IN DWORD PropertyBufferSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiGetDeviceRegistryProperty SetupDiGetDeviceRegistryPropertyW
+#else
+#define SetupDiGetDeviceRegistryProperty SetupDiGetDeviceRegistryPropertyA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetDeviceRegistryPropertyA(
+ IN HDEVINFO DeviceInfoSet,
+ IN OUT PSP_DEVINFO_DATA DeviceInfoData,
+ IN DWORD Property,
+ IN CONST BYTE* PropertyBuffer,
+ IN DWORD PropertyBufferSize
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetDeviceRegistryPropertyW(
+ IN HDEVINFO DeviceInfoSet,
+ IN OUT PSP_DEVINFO_DATA DeviceInfoData,
+ IN DWORD Property,
+ IN CONST BYTE* PropertyBuffer,
+ IN DWORD PropertyBufferSize
+ );
+
+#ifdef UNICODE
+#define SetupDiSetDeviceRegistryProperty SetupDiSetDeviceRegistryPropertyW
+#else
+#define SetupDiSetDeviceRegistryProperty SetupDiSetDeviceRegistryPropertyA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDeviceInstallParamsA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ OUT PSP_DEVINSTALL_PARAMS_A DeviceInstallParams
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDeviceInstallParamsW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ OUT PSP_DEVINSTALL_PARAMS_W DeviceInstallParams
+ );
+
+#ifdef UNICODE
+#define SetupDiGetDeviceInstallParams SetupDiGetDeviceInstallParamsW
+#else
+#define SetupDiGetDeviceInstallParams SetupDiGetDeviceInstallParamsA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetClassInstallParamsA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ OUT PSP_CLASSINSTALL_HEADER ClassInstallParams, OPTIONAL
+ IN DWORD ClassInstallParamsSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetClassInstallParamsW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ OUT PSP_CLASSINSTALL_HEADER ClassInstallParams, OPTIONAL
+ IN DWORD ClassInstallParamsSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiGetClassInstallParams SetupDiGetClassInstallParamsW
+#else
+#define SetupDiGetClassInstallParams SetupDiGetClassInstallParamsA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetDeviceInstallParamsA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_DEVINSTALL_PARAMS_A DeviceInstallParams
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetDeviceInstallParamsW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_DEVINSTALL_PARAMS_W DeviceInstallParams
+ );
+
+#ifdef UNICODE
+#define SetupDiSetDeviceInstallParams SetupDiSetDeviceInstallParamsW
+#else
+#define SetupDiSetDeviceInstallParams SetupDiSetDeviceInstallParamsA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetClassInstallParamsA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_CLASSINSTALL_HEADER ClassInstallParams, OPTIONAL
+ IN DWORD ClassInstallParamsSize
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetClassInstallParamsW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_CLASSINSTALL_HEADER ClassInstallParams, OPTIONAL
+ IN DWORD ClassInstallParamsSize
+ );
+
+#ifdef UNICODE
+#define SetupDiSetClassInstallParams SetupDiSetClassInstallParamsW
+#else
+#define SetupDiSetClassInstallParams SetupDiSetClassInstallParamsA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDriverInstallParamsA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_DRVINFO_DATA_A DriverInfoData,
+ OUT PSP_DRVINSTALL_PARAMS DriverInstallParams
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetDriverInstallParamsW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_DRVINFO_DATA_W DriverInfoData,
+ OUT PSP_DRVINSTALL_PARAMS DriverInstallParams
+ );
+
+#ifdef UNICODE
+#define SetupDiGetDriverInstallParams SetupDiGetDriverInstallParamsW
+#else
+#define SetupDiGetDriverInstallParams SetupDiGetDriverInstallParamsA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetDriverInstallParamsA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_DRVINFO_DATA_A DriverInfoData,
+ IN PSP_DRVINSTALL_PARAMS DriverInstallParams
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetDriverInstallParamsW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_DRVINFO_DATA_W DriverInfoData,
+ IN PSP_DRVINSTALL_PARAMS DriverInstallParams
+ );
+
+#ifdef UNICODE
+#define SetupDiSetDriverInstallParams SetupDiSetDriverInstallParamsW
+#else
+#define SetupDiSetDriverInstallParams SetupDiSetDriverInstallParamsA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiLoadClassIcon(
+ IN LPGUID ClassGuid,
+ OUT HICON *LargeIcon, OPTIONAL
+ OUT PINT MiniIconIndex OPTIONAL
+ );
+
+
+//
+// Flags controlling the drawing of mini-icons
+//
+#define DMI_MASK 0x00000001
+#define DMI_BKCOLOR 0x00000002
+#define DMI_USERECT 0x00000004
+
+WINSETUPAPI
+INT
+WINAPI
+SetupDiDrawMiniIcon(
+ IN HDC hdc,
+ IN RECT rc,
+ IN INT MiniIconIndex,
+ IN DWORD Flags
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetClassBitmapIndex(
+ IN LPGUID ClassGuid,
+ OUT PINT MiniIconIndex
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetClassImageList(
+ OUT PSP_CLASSIMAGELIST_DATA ClassImageListData
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetClassImageIndex(
+ IN PSP_CLASSIMAGELIST_DATA ClassImageListData,
+ IN LPGUID ClassGuid,
+ OUT PINT ImageIndex
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiDestroyClassImageList(
+ IN PSP_CLASSIMAGELIST_DATA ClassImageListData
+ );
+
+
+//
+// Flags for the SetupDiGetClassDevPropertySheets API
+//
+#define DIGCDP_FLAG_BASIC 0x00000001
+#define DIGCDP_FLAG_ADVANCED 0x00000002
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetClassDevPropertySheetsA(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN LPPROPSHEETHEADERA PropertySheetHeader,
+ IN DWORD Flags
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetClassDevPropertySheetsW(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN LPPROPSHEETHEADERW PropertySheetHeader,
+ IN DWORD Flags
+ );
+
+#ifdef UNICODE
+#define SetupDiGetClassDevPropertySheets SetupDiGetClassDevPropertySheetsW
+#else
+#define SetupDiGetClassDevPropertySheets SetupDiGetClassDevPropertySheetsA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiAskForOEMDisk(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSelectOEMDrv(
+ IN HWND hwndParent, OPTIONAL
+ IN HDEVINFO DeviceInfoSet,
+ IN OUT PSP_DEVINFO_DATA DeviceInfoData OPTIONAL
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiClassNameFromGuidA(
+ IN LPGUID ClassGuid,
+ OUT PSTR ClassName,
+ IN DWORD ClassNameSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiClassNameFromGuidW(
+ IN LPGUID ClassGuid,
+ OUT PWSTR ClassName,
+ IN DWORD ClassNameSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiClassNameFromGuid SetupDiClassNameFromGuidW
+#else
+#define SetupDiClassNameFromGuid SetupDiClassNameFromGuidA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiClassGuidsFromNameA(
+ IN PCSTR ClassName,
+ OUT LPGUID ClassGuidList,
+ IN DWORD ClassGuidListSize,
+ OUT PDWORD RequiredSize
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiClassGuidsFromNameW(
+ IN PCWSTR ClassName,
+ OUT LPGUID ClassGuidList,
+ IN DWORD ClassGuidListSize,
+ OUT PDWORD RequiredSize
+ );
+
+#ifdef UNICODE
+#define SetupDiClassGuidsFromName SetupDiClassGuidsFromNameW
+#else
+#define SetupDiClassGuidsFromName SetupDiClassGuidsFromNameA
+#endif
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetHwProfileFriendlyNameA(
+ IN DWORD HwProfile,
+ OUT PSTR FriendlyName,
+ IN DWORD FriendlyNameSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetHwProfileFriendlyNameW(
+ IN DWORD HwProfile,
+ OUT PWSTR FriendlyName,
+ IN DWORD FriendlyNameSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiGetHwProfileFriendlyName SetupDiGetHwProfileFriendlyNameW
+#else
+#define SetupDiGetHwProfileFriendlyName SetupDiGetHwProfileFriendlyNameA
+#endif
+
+
+//
+// PageType values for SetupDiGetWizardPage API
+//
+#define SPWPT_SELECTDEVICE 0x00000001
+
+//
+// Flags for SetupDiGetWizardPage API
+//
+#define SPWP_USE_DEVINFO_DATA 0x00000001
+
+WINSETUPAPI
+HPROPSHEETPAGE
+WINAPI
+SetupDiGetWizardPage(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
+ IN PSP_INSTALLWIZARD_DATA InstallWizardData,
+ IN DWORD PageType,
+ IN DWORD Flags
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetSelectedDevice(
+ IN HDEVINFO DeviceInfoSet,
+ OUT PSP_DEVINFO_DATA DeviceInfoData
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiSetSelectedDevice(
+ IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData
+ );
+
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetActualSectionToInstallA(
+ IN HINF InfHandle,
+ IN PCSTR InfSectionName,
+ OUT PSTR InfSectionWithExt, OPTIONAL
+ IN DWORD InfSectionWithExtSize,
+ OUT PDWORD RequiredSize, OPTIONAL
+ OUT PSTR *Extension OPTIONAL
+ );
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupDiGetActualSectionToInstallW(
+ IN HINF InfHandle,
+ IN PCWSTR InfSectionName,
+ OUT PWSTR InfSectionWithExt, OPTIONAL
+ IN DWORD InfSectionWithExtSize,
+ OUT PDWORD RequiredSize, OPTIONAL
+ OUT PWSTR *Extension OPTIONAL
+ );
+
+#ifdef UNICODE
+#define SetupDiGetActualSectionToInstall SetupDiGetActualSectionToInstallW
+#else
+#define SetupDiGetActualSectionToInstall SetupDiGetActualSectionToInstallA
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif // _INC_SETUPAPI
+
diff --git a/public/sdk/inc/setupbat.h b/public/sdk/inc/setupbat.h
new file mode 100644
index 000000000..f271ed141
--- /dev/null
+++ b/public/sdk/inc/setupbat.h
@@ -0,0 +1,479 @@
+/*++
+
+Copyright (c 1995 Microsoft Corporation
+
+Module Name:
+
+ setupbat.h
+
+Abstract:
+
+ Contains all of the definations for the various strings which
+ can occur in winnt.sif and its children. Any setup code which
+ read/writes to winnt.sif needs to include this file and use
+ the appropriate defines as the side effects can be numerous.
+
+Author:
+
+ Stephane Plante (t-stepl Oct 6 1995
+
+Revision History:
+
+--*/
+
+
+#ifndef _WINNT_SETUPBAT_
+#define _WINNT_SETUPBAT_
+
+//
+// The format of these defines is a blank line preceeding a section
+// header followed by all of the keys which may occur in that section
+//
+
+#define WINNT_DATA_W L"data"
+#define WINNT_DATA_A "data"
+#define WINNT_D_MSDOS_W L"msdosinitiated"
+#define WINNT_D_MSDOS_A "msdosinitiated"
+#define WINNT_D_FLOPPY_W L"floppyless"
+#define WINNT_D_FLOPPY_A "floppyless"
+#define WINNT_D_ORI_LOAD_W L"originalautoload"
+#define WINNT_D_ORI_LOAD_A "originalautoload"
+#define WINNT_D_ORI_COUNT_W L"originalcountdown"
+#define WINNT_D_ORI_COUNT_A "originalcountdown"
+#define WINNT_D_SOURCEPATH_W L"sourcepath"
+#define WINNT_D_SOURCEPATH_A "sourcepath"
+#define WINNT_D_INSTALL_W L"unattendedinstall"
+#define WINNT_D_INSTALL_A "unattendedinstall"
+#define WINNT_D_PRODUCT_W L"producttype"
+#define WINNT_D_PRODUCT_A "producttype"
+#define WINNT_D_SERVERUPGRADE_W L"standardserverupgrade"
+#define WINNT_D_SERVERUPGRADE_A "standardserverupgrade"
+#define WINNT_D_NTUPGRADE_W L"winntupgrade"
+#define WINNT_D_NTUPGRADE_A "winntupgrade"
+#define WINNT_D_WIN31UPGRADE_W L"win31upgrade"
+#define WINNT_D_WIN31UPGRADE_A "win31upgrade"
+#define WINNT_D_WIN95UPGRADE_W L"win95upgrade"
+#define WINNT_D_WIN95UPGRADE_A "win95upgrade"
+#define WINNT_D_UNIQUENESS_W L"uniqueness"
+#define WINNT_D_UNIQUENESS_A "uniqueness"
+#define WINNT_D_UNIQUEID_W L"uniqueid"
+#define WINNT_D_UNIQUEID_A "uniqueid"
+#define WINNT_D_BOOTPATH_W L"floppylessbootpath"
+#define WINNT_D_BOOTPATH_A "floppylessbootpath"
+#define WINNT_D_DOSPATH_W L"dospath"
+#define WINNT_D_DOSPATH_A "dospath"
+#define WINNT_D_SRCTYPE_W L"sourcetype"
+#define WINNT_D_SRCTYPE_A "sourcetype"
+#define WINNT_D_CWD_W L"cwd"
+#define WINNT_D_CWD_A "cwd"
+#define WINNT_D_ORI_SRCPATH_A "OriSrc"
+#define WINNT_D_ORI_SRCPATH_W L"OriSrc"
+#define WINNT_D_ORI_SRCTYPE_A "OriTyp"
+#define WINNT_D_ORI_SRCTYPE_W L"OriTyp"
+
+#define WINNT_SETUPPARAMS_W L"setupparams"
+#define WINNT_SETUPPARAMS_A "setupparams"
+#define WINNT_S_SKIPMISSING_W L"skipmissingfiles"
+#define WINNT_S_SKIPMISSING_A "skipmissingfiles"
+#define WINNT_S_USEREXECUTE_W L"userexecute"
+#define WINNT_S_USEREXECUTE_A "userexecute"
+#define WINNT_S_OPTIONALDIRS_W L"optionaldirs"
+#define WINNT_S_OPTIONALDIRS_A "optionaldirs"
+
+#define WINNT_UNATTENDED_W L"unattended"
+#define WINNT_UNATTENDED_A "unattended"
+#define WINNT_U_METHOD_W L"method"
+#define WINNT_U_METHOD_A "method"
+#define WINNT_U_CONFIRMHW_W L"confirmhardware"
+#define WINNT_U_CONFIRMHW_A "confirmhardware"
+#define WINNT_U_NTUPGRADE_W L"ntupgrade"
+#define WINNT_U_NTUPGRADE_A "ntupgrade"
+#define WINNT_U_WIN31UPGRADE_W L"win31upgrade"
+#define WINNT_U_WIN31UPGRADE_A "win31upgrade"
+#define WINNT_U_TARGETPATH_W L"targetpath"
+#define WINNT_U_TARGETPATH_A "targetpath"
+#define WINNT_U_OVERWRITEOEM_W L"overwriteoemfilesonupgrade"
+#define WINNT_U_OVERWRITEOEM_A "overwriteoemfilesonupgrade"
+// #define WINNT_U_OEMPREINSTALL_W L"oempreinstall"
+// #define WINNT_U_OEMPREINSTALL_A "oempreinstall"
+#define WINNT_U_COMPUTERTYPE_W L"computertype"
+#define WINNT_U_COMPUTERTYPE_A "computertype"
+#define WINNT_U_KEYBOARDLAYOUT_W L"keyboardlayout"
+#define WINNT_U_KEYBOARDLAYOUT_A "keyboardlayout"
+
+
+#define WINNT_DETECTEDSTORE_W L"detectedmassstorage"
+#define WINNT_DETECTEDSTORE_A "detectedmassstorage"
+
+#define WINNT_GUIUNATTENDED_W L"guiunattended"
+#define WINNT_GUIUNATTENDED_A "guiunattended"
+#define WINNT_G_UPGRADEDHCP_W L"!upgradeenabledhcp"
+#define WINNT_G_UPGRADEDHCP_A "!upgradeenabledhcp"
+#define WINNT_G_DETACHED_W L"detachedprogram"
+#define WINNT_G_DETACHED_A "detachedprogram"
+#define WINNT_G_ARGUMENTS_W L"arguments"
+#define WINNT_G_ARGUMENTS_A "arguments"
+#define WINNT_G_SETUPNETWORK_W L"!setupnetwork"
+#define WINNT_G_SETUPNETWORK_A "!setupnetwork"
+#define WINNT_G_SETUPAPPS_W L"!setupapplications"
+#define WINNT_G_SETUPAPPS_A "!setupapplications"
+#define WINNT_G_SERVERTYPE_W L"advservertype"
+#define WINNT_G_SERVERTYPE_A "advservertype"
+#define WINNT_G_TIMEZONE_W L"timezone"
+#define WINNT_G_TIMEZONE_A "timezone"
+
+#define WINNT_USERDATA_W L"userdata"
+#define WINNT_USERDATA_A "userdata"
+#define WINNT_US_FULLNAME_W L"fullname"
+#define WINNT_US_FULLNAME_A "fullname"
+#define WINNT_US_ORGNAME_W L"orgname"
+#define WINNT_US_ORGNAME_A "orgname"
+#define WINNT_US_COMPNAME_W L"computername"
+#define WINNT_US_COMPNAME_A "computername"
+#define WINNT_US_PRODUCTID_W L"productid"
+#define WINNT_US_PRODUCTID_A "productid"
+
+#define WINNT_LICENSEDATA_W L"licensefileprintdata"
+#define WINNT_LICENSEDATA_A "licensefileprintdata"
+#define WINNT_L_AUTOMODE_W L"automode"
+#define WINNT_L_AUTOMODE_A "automode"
+#define WINNT_L_AUTOUSERS_W L"autousers"
+#define WINNT_L_AUTOUSERS_A "autousers"
+
+//
+// Display related stuff
+//
+
+#define WINNT_DISPLAY_W L"Display"
+#define WINNT_DISPLAY_A "Display"
+#define WINNT_DISP_CONFIGATLOGON_W L"ConfigureAtLogon"
+#define WINNT_DISP_CONFIGATLOGON_A "ConfigureAtLogon"
+#define WINNT_DISP_BITSPERPEL_W L"BitsPerPel"
+#define WINNT_DISP_BITSPERPEL_A "BitsPerPel"
+#define WINNT_DISP_XRESOLUTION_W L"XResolution"
+#define WINNT_DISP_XRESOLUTION_A "XResolution"
+#define WINNT_DISP_YRESOLUTION_W L"YResolution"
+#define WINNT_DISP_YRESOLUTION_A "YResolution"
+#define WINNT_DISP_VREFRESH_W L"VRefresh"
+#define WINNT_DISP_VREFRESH_A "VRefresh"
+#define WINNT_DISP_FLAGS_W L"Flags"
+#define WINNT_DISP_FLAGS_A "Flags"
+#define WINNT_DISP_AUTOCONFIRM_W L"AutoConfirm"
+#define WINNT_DISP_AUTOCONFIRM_A "AutoConfirm"
+#define WINNT_DISP_INSTALL_W L"InstallDriver"
+#define WINNT_DISP_INSTALL_A "InstallDriver"
+#define WINNT_DISP_INF_FILE_W L"InfFile"
+#define WINNT_DISP_INF_FILE_A "InfFile"
+#define WINNT_DISP_INF_OPTION_W L"InfOption"
+#define WINNT_DISP_INF_OPTION_A "InfOption"
+
+//
+// The following are some of the various possible answer found associated
+// with the keys
+//
+#define WINNT_A_YES_W L"yes"
+#define WINNT_A_YES_A "yes"
+#define WINNT_A_NO_W L"no"
+#define WINNT_A_NO_A "no"
+#define WINNT_A_LANMANNT_W L"lanmannt"
+#define WINNT_A_LANMANNT_A "lanmannt"
+#define WINNT_A_LANSECNT_W L"lansecnt"
+#define WINNT_A_LANSECNT_A "lansecnt"
+#define WINNT_A_SERVERNT_W L"servernt"
+#define WINNT_A_SERVERNT_A "servernt"
+#define WINNT_A_WINNT_W L"winnt"
+#define WINNT_A_WINNT_A "winnt"
+#define WINNT_A_NULL_W L""
+#define WINNT_A_NULL_A ""
+#define WINNT_A_ZERO_W L"0"
+#define WINNT_A_ZERO_A "0"
+#define WINNT_A_ONE_W L"1"
+#define WINNT_A_ONE_A "1"
+#define WINNT_A_EXPRESS_W L"express"
+#define WINNT_A_EXPRESS_A "express"
+#define WINNT_A_TYPICAL_W L"typical"
+#define WINNT_A_TYPICAL_A "typical"
+#define WINNT_A_CUSTOM_W L"custom"
+#define WINNT_A_CUSTOM_A "custom"
+#define WINNT_A_NT_W L"nt"
+#define WINNT_A_NT_A "nt"
+#define WINNT_A_PERSEAT_W L"perseat"
+#define WINNT_A_PERSEAT_A "perseat"
+#define WINNT_A_PERSERVER_W L"perserver"
+#define WINNT_A_PERSERVER_A "perserver"
+
+//
+// Filenames
+//
+#define WINNT_GUI_FILE_W L"$winnt$.inf"
+#define WINNT_GUI_FILE_A "$winnt$.inf"
+#define WINNT_SIF_FILE_W L"winnt.sif"
+#define WINNT_SIF_FILE_A "winnt.sif"
+
+#define WINNT_UNIQUENESS_DB_W L"$unique$.udb"
+#define WINNT_UNIQUENESS_DB_A "$unique$.udb"
+
+//
+// Preinstallation-related stuff.
+//
+#define WINNT_OEM_DIR_A "$OEM$"
+#define WINNT_OEM_DIR_W L"$OEM$"
+#define WINNT_OEM_DEST_DIR_A "$"
+#define WINNT_OEM_DEST_DIR_W L"$"
+#define WINNT_OEM_TEXTMODE_DIR_A "$OEM$\\TEXTMODE"
+#define WINNT_OEM_TEXTMODE_DIR_W L"$OEM$\\TEXTMODE"
+#define WINNT_OEM_NETWORK_DIR_A "$OEM$\\NET"
+#define WINNT_OEM_NETWORK_DIR_W L"$OEM$\\NET"
+#define WINNT_OEM_DISPLAY_DIR_A "$OEM$\\DISPLAY"
+#define WINNT_OEM_DISPLAY_DIR_W L"$OEM$\\DISPLAY"
+#define WINNT_OEM_OPTIONAL_DIR_A "$OEMOPT$"
+#define WINNT_OEM_OPTIONAL_DIR_W L"$OEMOPT$"
+
+#define WINNT_OEM_FILES_SYSROOT_A "$$"
+#define WINNT_OEM_FILES_SYSROOT_W L"$$"
+#define WINNT_OEM_CMDLINE_LIST_A "CMDLINES.TXT"
+#define WINNT_OEM_CMDLINE_LIST_W L"CMDLINES.TXT"
+#define WINNT_OEM_LFNLIST_A "$$RENAME.TXT"
+#define WINNT_OEM_LFNLIST_W L"$$RENAME.TXT"
+
+#define WINNT_OEM_ROLLBACK_FILE_W L"ROLLBACK.INF"
+#define WINNT_OEM_ROLLBACK_FILE_A "ROLLBACK.INF"
+#define WINNT_OEMPREINSTALL_A "OemPreinstall"
+#define WINNT_U_OEMPREINSTALL_A WINNT_OEMPREINSTALL_A
+#define WINNT_OEMPREINSTALL_W L"OemPreinstall"
+#define WINNT_U_OEMPREINSTALL_W WINNT_OEMPREINSTALL_W
+#define WINNT_OEM_ADS L"OEM_Ads"
+#define WINNT_OEM_ADS_BANNER L"Banner"
+#define WINNT_OEM_ADS_LOGO L"Logo"
+#define WINNT_OEM_ADS_BACKGROUND L"Background"
+
+#define WINNT_OEMOPTIONAL_W L"oemoptional"
+#define WINNT_OEMOPTIONAL_A "oemoptional"
+#define WINNT_OEMBOOTFILES_W L"oembootfiles"
+#define WINNT_OEMBOOTFILES_A "oembootfiles"
+#define WINNT_OEMSCSIDRIVERS_W L"massstoragedrivers"
+#define WINNT_OEMSCSIDRIVERS_A "massstoragedrivers"
+#define WINNT_OEMDISPLAYDRIVERS_W L"displaydrivers"
+#define WINNT_OEMDISPLAYDRIVERS_A "displaydrivers"
+#define WINNT_OEMKEYBOARDDRIVERS_W L"keyboarddrivers"
+#define WINNT_OEMKEYBOARDDRIVERS_A "keyboarddrivers"
+#define WINNT_OEMPOINTERDRIVERS_W L"pointingdevicedrivers"
+#define WINNT_OEMPOINTERDRIVERS_A "pointingdevicedrivers"
+
+//
+// Now define the string which we are to use at compile time based upon
+// wether or not UNICODE is defined
+
+#ifdef UNICODE
+#define WINNT_DATA WINNT_DATA_W
+#define WINNT_D_MSDOS WINNT_D_MSDOS_W
+#define WINNT_D_FLOPPY WINNT_D_FLOPPY_W
+#define WINNT_D_ORI_LOAD WINNT_D_ORI_LOAD_W
+#define WINNT_D_ORI_COUNT WINNT_D_ORI_COUNT_W
+#define WINNT_D_SOURCEPATH WINNT_D_SOURCEPATH_W
+#define WINNT_D_INSTALL WINNT_D_INSTALL_W
+#define WINNT_D_PRODUCT WINNT_D_PRODUCT_W
+#define WINNT_D_SERVERUPGRADE WINNT_D_SERVERUPGRADE_W
+#define WINNT_D_NTUPGRADE WINNT_D_NTUPGRADE_W
+#define WINNT_D_WIN31UPGRADE WINNT_D_WIN31UPGRADE_W
+#define WINNT_D_WIN95UPGRADE WINNT_D_WIN95UPGRADE_W
+#define WINNT_D_UNIQUEID WINNT_D_UNIQUEID_W
+#define WINNT_D_UNIQUENESS WINNT_D_UNIQUENESS_W
+#define WINNT_D_BOOTPATH WINNT_D_BOOTPATH_W
+#define WINNT_D_DOSPATH WINNT_D_DOSPATH_W
+#define WINNT_D_SRCTYPE WINNT_D_SRCTYPE_W
+#define WINNT_D_CWD WINNT_D_CWD_W
+#define WINNT_D_ORI_SRCPATH WINNT_D_ORI_SRCPATH_W
+#define WINNT_D_ORI_SRCTYPE WINNT_D_ORI_SRCTYPE_W
+#define WINNT_SETUPPARAMS WINNT_SETUPPARAMS_W
+#define WINNT_S_SKIPMISSING WINNT_S_SKIPMISSING_W
+#define WINNT_S_USEREXECUTE WINNT_S_USEREXECUTE_W
+#define WINNT_S_OPTIONALDIRS WINNT_S_OPTIONALDIRS_W
+#define WINNT_UNATTENDED WINNT_UNATTENDED_W
+#define WINNT_U_METHOD WINNT_U_METHOD_W
+#define WINNT_U_CONFIRMHW WINNT_U_CONFIRMHW_W
+#define WINNT_U_NTUPGRADE WINNT_U_NTUPGRADE_W
+#define WINNT_U_WIN31UPGRADE WINNT_U_WIN31UPGRADE_W
+#define WINNT_U_TARGETPATH WINNT_U_TARGETPATH_W
+#define WINNT_U_OVERWRITEOEM WINNT_U_OVERWRITEOEM_W
+#define WINNT_U_OEMPREINSTALL WINNT_U_OEMPREINSTALL_W
+#define WINNT_U_COMPUTERTYPE WINNT_U_COMPUTERTYPE_W
+#define WINNT_U_KEYBOARDLAYOUT WINNT_U_KEYBOARDLAYOUT_W
+#define WINNT_DETECTEDSTORE WINNT_DETECTEDSTORE_W
+#define WINNT_GUIUNATTENDED WINNT_GUIUNATTENDED_W
+#define WINNT_G_UPGRADEDHCP WINNT_G_UPGRADEDHCP_W
+#define WINNT_G_DETACHED WINNT_G_DETACHED_W
+#define WINNT_G_ARGUMENTS WINNT_G_ARGUMENTS_W
+#define WINNT_G_SETUPNETWORK WINNT_G_SETUPNETWORK_W
+#define WINNT_G_SETUPAPPS WINNT_G_SETUPAPPS_W
+#define WINNT_G_SERVERTYPE WINNT_G_SERVERTYPE_W
+#define WINNT_G_TIMEZONE WINNT_G_TIMEZONE_W
+#define WINNT_USERDATA WINNT_USERDATA_W
+#define WINNT_US_FULLNAME WINNT_US_FULLNAME_W
+#define WINNT_US_ORGNAME WINNT_US_ORGNAME_W
+#define WINNT_US_COMPNAME WINNT_US_COMPNAME_W
+#define WINNT_US_PRODUCTID WINNT_US_PRODUCTID_W
+#define WINNT_LICENSEDATA WINNT_LICENSEDATA_W
+#define WINNT_L_AUTOMODE WINNT_L_AUTOMODE_W
+#define WINNT_L_AUTOUSERS WINNT_L_AUTOUSERS_W
+#define WINNT_A_YES WINNT_A_YES_W
+#define WINNT_A_NO WINNT_A_NO_W
+#define WINNT_A_ONE WINNT_A_ONE_W
+#define WINNT_A_ZERO WINNT_A_ZERO_W
+#define WINNT_A_LANMANNT WINNT_A_LANMANNT_W
+#define WINNT_A_LANSECNT WINNT_A_LANSECNT_W
+#define WINNT_A_SERVERNT WINNT_A_SERVERNT_W
+#define WINNT_A_WINNT WINNT_A_WINNT_W
+#define WINNT_A_NULL WINNT_A_NULL_W
+#define WINNT_A_EXPRESS WINNT_A_EXPRESS_W
+#define WINNT_A_TYPICAL WINNT_A_TYPICAL_W
+#define WINNT_A_CUSTOM WINNT_A_CUSTOM_W
+#define WINNT_A_NT WINNT_A_NT_W
+#define WINNT_GUI_FILE WINNT_GUI_FILE_W
+#define WINNT_SIF_FILE WINNT_SIF_FILE_W
+#define WINNT_UNIQUENESS_DB WINNT_UNIQUENESS_DB_W
+#define WINNT_A_PERSEAT WINNT_A_PERSEAT_W
+#define WINNT_A_PERSERVER WINNT_A_PERSERVER_W
+
+#define WINNT_OEMPREINSTALL WINNT_OEMPREINSTALL_W
+#define WINNT_OEM_DIR WINNT_OEM_DIR_W
+#define WINNT_OEM_DEST_DIR WINNT_OEM_DEST_DIR_W
+#define WINNT_OEM_FILES_DIR WINNT_OEM_FILES_DIR_W
+#define WINNT_OEM_TEXTMODE_DIR WINNT_OEM_TEXTMODE_DIR_W
+#define WINNT_OEM_NETWORK_DIR WINNT_OEM_NETWORK_DIR_W
+#define WINNT_OEM_DISPLAY_DIR WINNT_OEM_DISPLAY_DIR_W
+#define WINNT_OEM_OPTIONAL_DIR WINNT_OEM_OPTIONAL_DIR_W
+
+#define WINNT_OEMOPTIONAL WINNT_OEMOPTIONAL_W
+#define WINNT_OEMBOOTFILES WINNT_OEMBOOTFILES_W
+#define WINNT_OEMSCSIDRIVERS WINNT_OEMSCSIDRIVERS_W
+#define WINNT_OEMDISPLAYDRIVERS WINNT_OEMDISPLAYDRIVERS_W
+#define WINNT_OEMKEYBOARDDRIVERS WINNT_OEMKEYBOARDDRIVERS_W
+#define WINNT_OEMPOINTERDRIVERS WINNT_OEMPOINTERDRIVERS_W
+
+#define WINNT_OEM_FILES_SYSROOT WINNT_OEM_FILES_SYSROOT_W
+#define WINNT_OEM_FILES_DRVROOT WINNT_OEM_FILES_DRVROOT_W
+#define WINNT_OEM_CMDLINE_LIST WINNT_OEM_CMDLINE_LIST_W
+#define WINNT_OEM_LFNLIST WINNT_OEM_LFNLIST_W
+#define WINNT_OEM_ROLLBACK_FILE WINNT_OEM_ROLLBACK_FILE_W
+
+#define WINNT_DISPLAY WINNT_DISPLAY_W
+#define WINNT_DISP_CONFIGATLOGON WINNT_DISP_CONFIGATLOGON_W
+#define WINNT_DISP_BITSPERPEL WINNT_DISP_BITSPERPEL_W
+#define WINNT_DISP_XRESOLUTION WINNT_DISP_XRESOLUTION_W
+#define WINNT_DISP_YRESOLUTION WINNT_DISP_YRESOLUTION_W
+#define WINNT_DISP_VREFRESH WINNT_DISP_VREFRESH_W
+#define WINNT_DISP_FLAGS WINNT_DISP_FLAGS_W
+#define WINNT_DISP_AUTOCONFIRM WINNT_DISP_AUTOCONFIRM_W
+#define WINNT_DISP_INSTALL WINNT_DISP_INSTALL_W
+#define WINNT_DISP_INF_FILE WINNT_DISP_INF_FILE_W
+#define WINNT_DISP_INF_OPTION WINNT_DISP_INF_OPTION_W
+
+#else
+#define WINNT_DATA WINNT_DATA_A
+#define WINNT_D_MSDOS WINNT_D_MSDOS_A
+#define WINNT_D_FLOPPY WINNT_D_FLOPPY_A
+#define WINNT_D_ORI_LOAD WINNT_D_ORI_LOAD_A
+#define WINNT_D_ORI_COUNT WINNT_D_ORI_COUNT_A
+#define WINNT_D_SOURCEPATH WINNT_D_SOURCEPATH_A
+#define WINNT_D_INSTALL WINNT_D_INSTALL_A
+#define WINNT_D_PRODUCT WINNT_D_PRODUCT_A
+#define WINNT_D_SERVERUPGRADE WINNT_D_SERVERUPGRADE_A
+#define WINNT_D_NTUPGRADE WINNT_D_NTUPGRADE_A
+#define WINNT_D_WIN31UPGRADE WINNT_D_WIN31UPGRADE_A
+#define WINNT_D_WIN95UPGRADE WINNT_D_WIN95UPGRADE_A
+#define WINNT_D_UNIQUEID WINNT_D_UNIQUEID_A
+#define WINNT_D_UNIQUENESS WINNT_D_UNIQUENESS_A
+#define WINNT_D_BOOTPATH WINNT_D_BOOTPATH_A
+#define WINNT_D_DOSPATH WINNT_D_DOSPATH_W
+#define WINNT_D_SRCTYPE WINNT_D_SRCTYPE_A
+#define WINNT_D_CWD WINNT_D_CWD_A
+#define WINNT_D_ORI_SRCPATH WINNT_D_ORI_SRCPATH_A
+#define WINNT_D_ORI_SRCTYPE WINNT_D_ORI_SRCTYPE_A
+#define WINNT_SETUPPARAMS WINNT_SETUPPARAMS_A
+#define WINNT_S_SKIPMISSING WINNT_S_SKIPMISSING_A
+#define WINNT_S_USEREXECUTE WINNT_S_USEREXECUTE_A
+#define WINNT_S_OPTIONALDIRS WINNT_S_OPTIONALDIRS_A
+#define WINNT_UNATTENDED WINNT_UNATTENDED_A
+#define WINNT_U_METHOD WINNT_U_METHOD_A
+#define WINNT_U_CONFIRMHW WINNT_U_CONFIRMHW_A
+#define WINNT_U_NTUPGRADE WINNT_U_NTUPGRADE_A
+#define WINNT_U_WIN31UPGRADE WINNT_U_WIN31UPGRADE_A
+#define WINNT_U_TARGETPATH WINNT_U_TARGETPATH_A
+#define WINNT_U_OVERWRITEOEM WINNT_U_OVERWRITEOEM_A
+#define WINNT_U_OEMPREINSTALL WINNT_U_OEMPREINSTALL_A
+#define WINNT_U_COMPUTERTYPE WINNT_U_COMPUTERTYPE_A
+#define WINNT_U_KEYBOARDLAYOUT WINNT_U_KEYBOARDLAYOUT_A
+#define WINNT_DETECTEDSTORE WINNT_DETECTEDSTORE_A
+#define WINNT_GUIUNATTENDED WINNT_GUIUNATTENDED_A
+#define WINNT_G_UPGRADEDHCP WINNT_G_UPGRADEDHCP_A
+#define WINNT_G_DETACHED WINNT_G_DETACHED_A
+#define WINNT_G_ARGUMENTS WINNT_G_ARGUMENTS_A
+#define WINNT_G_SETUPNETWORK WINNT_G_SETUPNETWORK_A
+#define WINNT_G_SETUPAPPS WINNT_G_SETUPAPPS_A
+#define WINNT_G_SERVERTYPE WINNT_G_SERVERTYPE_A
+#define WINNT_G_TIMEZONE WINNT_G_TIMEZONE_A
+#define WINNT_USERDATA WINNT_USERDATA_A
+#define WINNT_US_FULLNAME WINNT_US_FULLNAME_A
+#define WINNT_US_ORGNAME WINNT_US_ORGNAME_A
+#define WINNT_US_COMPNAME WINNT_US_COMPNAME_A
+#define WINNT_US_PRODUCTID WINNT_US_PRODUCTID_A
+#define WINNT_LICENSEDATA WINNT_LICENSEDATA_A
+#define WINNT_L_AUTOMODE WINNT_L_AUTOMODE_A
+#define WINNT_L_AUTOUSERS WINNT_L_AUTOUSERS_A
+#define WINNT_A_YES WINNT_A_YES_A
+#define WINNT_A_NO WINNT_A_NO_A
+#define WINNT_A_ONE WINNT_A_ONE_A
+#define WINNT_A_ZERO WINNT_A_ZERO_A
+#define WINNT_A_LANMANNT WINNT_A_LANMANNT_A
+#define WINNT_A_LANSECNT WINNT_A_LANSECNT_A
+#define WINNT_A_SERVERNT WINNT_A_SERVERNT_A
+#define WINNT_A_WINNT WINNT_A_WINNT_A
+#define WINNT_A_NULL WINNT_A_NULL_A
+#define WINNT_A_EXPRESS WINNT_A_EXPRESS_A
+#define WINNT_A_TYPICAL WINNT_A_TYPICAL_A
+#define WINNT_A_CUSTOM WINNT_A_CUSTOM_A
+#define WINNT_A_NT WINNT_A_NT_A
+#define WINNT_GUI_FILE WINNT_GUI_FILE_A
+#define WINNT_SIF_FILE WINNT_SIF_FILE_A
+#define WINNT_UNIQUENESS_DB WINNT_UNIQUENESS_DB_A
+#define WINNT_A_PERSEAT WINNT_A_PERSEAT_A
+#define WINNT_A_PERSERVER WINNT_A_PERSERVER_A
+
+#define WINNT_OEMPREINSTALL WINNT_OEMPREINSTALL_A
+#define WINNT_OEM_DIR WINNT_OEM_DIR_A
+#define WINNT_OEM_DEST_DIR WINNT_OEM_DEST_DIR_A
+#define WINNT_OEM_FILES_DIR WINNT_OEM_FILES_DIR_A
+#define WINNT_OEM_TEXTMODE_DIR WINNT_OEM_TEXTMODE_DIR_A
+#define WINNT_OEM_NETWORK_DIR WINNT_OEM_NETWORK_DIR_A
+#define WINNT_OEM_DISPLAY_DIR WINNT_OEM_DISPLAY_DIR_A
+#define WINNT_OEM_OPTIONAL_DIR WINNT_OEM_OPTIONAL_DIR_A
+
+#define WINNT_OEMOPTIONAL WINNT_OEMOPTIONAL_A
+#define WINNT_OEMBOOTFILES WINNT_OEMBOOTFILES_A
+#define WINNT_OEMSCSIDRIVERS WINNT_OEMSCSIDRIVERS_A
+#define WINNT_OEMDISPLAYDRIVERS WINNT_OEMDISPLAYDRIVERS_A
+#define WINNT_OEMKEYBOARDDRIVERS WINNT_OEMKEYBOARDDRIVERS_A
+#define WINNT_OEMPOINTERDRIVERS WINNT_OEMPOINTERDRIVERS_A
+
+#define WINNT_OEM_FILES_SYSROOT WINNT_OEM_FILES_SYSROOT_A
+#define WINNT_OEM_FILES_DRVROOT WINNT_OEM_FILES_DRVROOT_A
+#define WINNT_OEM_CMDLINE_LIST WINNT_OEM_CMDLINE_LIST_A
+#define WINNT_OEM_LFNLIST WINNT_OEM_LFNLIST_A
+#define WINNT_OEM_ROLLBACK_FILE WINNT_OEM_ROLLBACK_FILE_A
+
+#define WINNT_DISPLAY WINNT_DISPLAY_A
+#define WINNT_DISP_CONFIGATLOGON WINNT_DISP_CONFIGATLOGON_A
+#define WINNT_DISP_BITSPERPEL WINNT_DISP_BITSPERPEL_A
+#define WINNT_DISP_XRESOLUTION WINNT_DISP_XRESOLUTION_A
+#define WINNT_DISP_YRESOLUTION WINNT_DISP_YRESOLUTION_A
+#define WINNT_DISP_VREFRESH WINNT_DISP_VREFRESH_A
+#define WINNT_DISP_FLAGS WINNT_DISP_FLAGS_A
+#define WINNT_DISP_AUTOCONFIRM WINNT_DISP_AUTOCONFIRM_A
+#define WINNT_DISP_INSTALL WINNT_DISP_INSTALL_A
+#define WINNT_DISP_INF_FILE WINNT_DISP_INF_FILE_A
+#define WINNT_DISP_INF_OPTION WINNT_DISP_INF_OPTION_A
+
+#endif // Unicode
+
+#endif // def _WINNT_SETUPBAT_
diff --git a/public/sdk/inc/setupxrc.h b/public/sdk/inc/setupxrc.h
new file mode 100644
index 000000000..b1fdf8f2a
--- /dev/null
+++ b/public/sdk/inc/setupxrc.h
@@ -0,0 +1,52 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1990-1993 Microsoft Corporation
+
+Module Name:
+
+ setupxrc.h
+
+Abstract:
+
+ This file contains resource IDs for any program that is run from
+ within Setup and wishes to set the current instruction text.
+
+ The IDs are for entries in the setup support dll string table.
+
+Author:
+
+ Ted Miller (tedm) 7-August-1990
+
+Revision History:
+
+--*/
+
+
+/*
+ Send the following message to Setup's main window to set
+ instruction text. wParam is the ID of a string in the
+ string table resource of setupdll.dll. lParam is unused.
+
+ [Note: see also uilstf.h (part of Setup).]
+*/
+
+#define STF_SET_INSTRUCTION_TEXT_RC (WM_USER + 0x8104)
+
+// IMPORTANT: keep FIRST_EXTERNAL_ID equate (see below) up to date!
+
+// resource IDs for Print Manager Setup instruction text
+
+#define IDS_PRINTMAN1 1001
+#define IDS_PRINTMAN2 1002
+#define IDS_PRINTMAN3 1003
+#define IDS_PRINTMAN4 1004
+#define IDS_PRINTMAN5 1005
+#define IDS_PRINTMAN6 1006
+#define IDS_PRINTMAN7 1007
+#define IDS_PRINTMAN8 1008
+#define IDS_PRINTMAN9 1009
+#define IDS_PRINTMAN10 1010
+
+// IMPORTANT: keep this equate up to date!
+#define FIRST_EXTERNAL_ID IDS_PRINTMAN1
+
diff --git a/public/sdk/inc/shellapi.h b/public/sdk/inc/shellapi.h
new file mode 100644
index 000000000..7168b105c
--- /dev/null
+++ b/public/sdk/inc/shellapi.h
@@ -0,0 +1,516 @@
+/*****************************************************************************\
+* *
+* shellapi.h - SHELL.DLL functions, types, and definitions *
+* *
+* Copyright (c) 1992-1996, Microsoft Corp. All rights reserved *
+* *
+\*****************************************************************************/
+
+#ifndef _INC_SHELLAPI
+#define _INC_SHELLAPI
+
+
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+#ifndef WINSHELLAPI
+#if !defined(_SHELL32_)
+#define WINSHELLAPI DECLSPEC_IMPORT
+#else
+#define WINSHELLAPI
+#endif
+#endif // WINSHELLAPI
+
+#include <pshpack1.h>
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+
+
+DECLARE_HANDLE(HDROP);
+
+WINSHELLAPI UINT APIENTRY DragQueryFileA(HDROP,UINT,LPSTR,UINT);
+WINSHELLAPI UINT APIENTRY DragQueryFileW(HDROP,UINT,LPWSTR,UINT);
+#ifdef UNICODE
+#define DragQueryFile DragQueryFileW
+#else
+#define DragQueryFile DragQueryFileA
+#endif // !UNICODE
+WINSHELLAPI BOOL APIENTRY DragQueryPoint(HDROP,LPPOINT);
+WINSHELLAPI VOID APIENTRY DragFinish(HDROP);
+WINSHELLAPI VOID APIENTRY DragAcceptFiles(HWND,BOOL);
+
+WINSHELLAPI HINSTANCE APIENTRY ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);
+WINSHELLAPI HINSTANCE APIENTRY ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);
+#ifdef UNICODE
+#define ShellExecute ShellExecuteW
+#else
+#define ShellExecute ShellExecuteA
+#endif // !UNICODE
+WINSHELLAPI HINSTANCE APIENTRY FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult);
+WINSHELLAPI HINSTANCE APIENTRY FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult);
+#ifdef UNICODE
+#define FindExecutable FindExecutableW
+#else
+#define FindExecutable FindExecutableA
+#endif // !UNICODE
+WINSHELLAPI LPWSTR * APIENTRY CommandLineToArgvW(LPCWSTR lpCmdLine, int*pNumArgs);
+
+WINSHELLAPI INT APIENTRY ShellAboutA(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon);
+WINSHELLAPI INT APIENTRY ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon);
+#ifdef UNICODE
+#define ShellAbout ShellAboutW
+#else
+#define ShellAbout ShellAboutA
+#endif // !UNICODE
+WINSHELLAPI HICON APIENTRY ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIconPath, LPWORD lpiIcon);
+WINSHELLAPI HICON APIENTRY ExtractAssociatedIconW(HINSTANCE hInst, LPWSTR lpIconPath, LPWORD lpiIcon);
+#ifdef UNICODE
+#define ExtractAssociatedIcon ExtractAssociatedIconW
+#else
+#define ExtractAssociatedIcon ExtractAssociatedIconA
+#endif // !UNICODE
+
+WINSHELLAPI HICON APIENTRY ExtractIconA(HINSTANCE hInst, LPCSTR lpszExeFileName, UINT nIconIndex);
+WINSHELLAPI HICON APIENTRY ExtractIconW(HINSTANCE hInst, LPCWSTR lpszExeFileName, UINT nIconIndex);
+#ifdef UNICODE
+#define ExtractIcon ExtractIconW
+#else
+#define ExtractIcon ExtractIconA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+
+////
+//// AppBar stuff
+////
+#define ABM_NEW 0x00000000
+#define ABM_REMOVE 0x00000001
+#define ABM_QUERYPOS 0x00000002
+#define ABM_SETPOS 0x00000003
+#define ABM_GETSTATE 0x00000004
+#define ABM_GETTASKBARPOS 0x00000005
+#define ABM_ACTIVATE 0x00000006 // lParam == TRUE/FALSE means activate/deactivate
+#define ABM_GETAUTOHIDEBAR 0x00000007
+#define ABM_SETAUTOHIDEBAR 0x00000008 // this can fail at any time. MUST check the result
+ // lParam = TRUE/FALSE Set/Unset
+ // uEdge = what edge
+#define ABM_WINDOWPOSCHANGED 0x0000009
+
+
+// these are put in the wparam of callback messages
+#define ABN_STATECHANGE 0x0000000
+#define ABN_POSCHANGED 0x0000001
+#define ABN_FULLSCREENAPP 0x0000002
+#define ABN_WINDOWARRANGE 0x0000003 // lParam == TRUE means hide
+
+// flags for get state
+#define ABS_AUTOHIDE 0x0000001
+#define ABS_ALWAYSONTOP 0x0000002
+
+#define ABE_LEFT 0
+#define ABE_TOP 1
+#define ABE_RIGHT 2
+#define ABE_BOTTOM 3
+
+typedef struct _AppBarData
+{
+ DWORD cbSize;
+ HWND hWnd;
+ UINT uCallbackMessage;
+ UINT uEdge;
+ RECT rc;
+ LPARAM lParam; // message specific
+} APPBARDATA, *PAPPBARDATA;
+
+WINSHELLAPI UINT APIENTRY SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pData);
+
+////
+//// EndAppBar
+////
+
+
+
+
+#define EIRESID(x) (-1 * (int)(x))
+WINSHELLAPI UINT WINAPI ExtractIconExA(LPCSTR lpszFile, int nIconIndex, HICON FAR *phiconLarge, HICON FAR *phiconSmall, UINT nIcons);
+WINSHELLAPI UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, int nIconIndex, HICON FAR *phiconLarge, HICON FAR *phiconSmall, UINT nIcons);
+#ifdef UNICODE
+#define ExtractIconEx ExtractIconExW
+#else
+#define ExtractIconEx ExtractIconExA
+#endif // !UNICODE
+
+
+
+////
+//// Shell File Operations
+////
+
+#ifndef FO_MOVE //these need to be kept in sync with the ones in shlobj.h
+
+#define FO_MOVE 0x0001
+#define FO_COPY 0x0002
+#define FO_DELETE 0x0003
+#define FO_RENAME 0x0004
+
+#define FOF_MULTIDESTFILES 0x0001
+#define FOF_CONFIRMMOUSE 0x0002
+#define FOF_SILENT 0x0004 // don't create progress/report
+#define FOF_RENAMEONCOLLISION 0x0008
+#define FOF_NOCONFIRMATION 0x0010 // Don't prompt the user.
+#define FOF_WANTMAPPINGHANDLE 0x0020 // Fill in SHFILEOPSTRUCT.hNameMappings
+ // Must be freed using SHFreeNameMappings
+#define FOF_ALLOWUNDO 0x0040
+#define FOF_FILESONLY 0x0080 // on *.*, do only files
+#define FOF_SIMPLEPROGRESS 0x0100 // means don't show names of files
+#define FOF_NOCONFIRMMKDIR 0x0200 // don't confirm making any needed dirs
+#define FOF_NOERRORUI 0x0400 // don't put up error UI
+typedef WORD FILEOP_FLAGS;
+
+#define PO_DELETE 0x0013 // printer is being deleted
+#define PO_RENAME 0x0014 // printer is being renamed
+#define PO_PORTCHANGE 0x0020 // port this printer connected to is being changed
+ // if this id is set, the strings received by
+ // the copyhook are a doubly-null terminated
+ // list of strings. The first is the printer
+ // name and the second is the printer port.
+#define PO_REN_PORT 0x0034 // PO_RENAME and PO_PORTCHANGE at same time.
+
+// no POF_ flags currently defined
+
+typedef WORD PRINTEROP_FLAGS;
+
+#endif // FO_MOVE
+
+// implicit parameters are:
+// if pFrom or pTo are unqualified names the current directories are
+// taken from the global current drive/directory settings managed
+// by Get/SetCurrentDrive/Directory
+//
+// the global confirmation settings
+
+typedef struct _SHFILEOPSTRUCTA
+{
+ HWND hwnd;
+ UINT wFunc;
+ LPCSTR pFrom;
+ LPCSTR pTo;
+ FILEOP_FLAGS fFlags;
+ BOOL fAnyOperationsAborted;
+ LPVOID hNameMappings;
+ LPCSTR lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS
+} SHFILEOPSTRUCTA, FAR *LPSHFILEOPSTRUCTA;
+typedef struct _SHFILEOPSTRUCTW
+{
+ HWND hwnd;
+ UINT wFunc;
+ LPCWSTR pFrom;
+ LPCWSTR pTo;
+ FILEOP_FLAGS fFlags;
+ BOOL fAnyOperationsAborted;
+ LPVOID hNameMappings;
+ LPCWSTR lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS
+} SHFILEOPSTRUCTW, FAR *LPSHFILEOPSTRUCTW;
+#ifdef UNICODE
+typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT;
+typedef LPSHFILEOPSTRUCTW LPSHFILEOPSTRUCT;
+#else
+typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT;
+typedef LPSHFILEOPSTRUCTA LPSHFILEOPSTRUCT;
+#endif // UNICODE
+
+WINSHELLAPI int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp);
+WINSHELLAPI int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp);
+#ifdef UNICODE
+#define SHFileOperation SHFileOperationW
+#else
+#define SHFileOperation SHFileOperationA
+#endif // !UNICODE
+
+WINSHELLAPI void WINAPI SHFreeNameMappings(HANDLE hNameMappings);
+
+typedef struct _SHNAMEMAPPINGA
+{
+ LPSTR pszOldPath;
+ LPSTR pszNewPath;
+ int cchOldPath;
+ int cchNewPath;
+} SHNAMEMAPPINGA, FAR *LPSHNAMEMAPPINGA;
+typedef struct _SHNAMEMAPPINGW
+{
+ LPWSTR pszOldPath;
+ LPWSTR pszNewPath;
+ int cchOldPath;
+ int cchNewPath;
+} SHNAMEMAPPINGW, FAR *LPSHNAMEMAPPINGW;
+#ifdef UNICODE
+typedef SHNAMEMAPPINGW SHNAMEMAPPING;
+typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
+#else
+typedef SHNAMEMAPPINGA SHNAMEMAPPING;
+typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
+#endif // UNICODE
+
+
+////
+//// End Shell File Operations
+////
+
+////
+//// Begin ShellExecuteEx and family
+////
+
+
+
+
+
+
+
+
+
+/* ShellExecute() and ShellExecuteEx() error codes */
+
+/* regular WinExec() codes */
+#define SE_ERR_FNF 2 // file not found
+#define SE_ERR_PNF 3 // path not found
+#define SE_ERR_ACCESSDENIED 5 // access denied
+#define SE_ERR_OOM 8 // out of memory
+#define SE_ERR_DLLNOTFOUND 32
+
+#endif /* WINVER >= 0x0400 */
+
+/* error values for ShellExecute() beyond the regular WinExec() codes */
+#define SE_ERR_SHARE 26
+#define SE_ERR_ASSOCINCOMPLETE 27
+#define SE_ERR_DDETIMEOUT 28
+#define SE_ERR_DDEFAIL 29
+#define SE_ERR_DDEBUSY 30
+#define SE_ERR_NOASSOC 31
+
+#if(WINVER >= 0x0400)
+
+
+
+// Note CLASSKEY overrides CLASSNAME
+#define SEE_MASK_CLASSNAME 0x00000001
+#define SEE_MASK_CLASSKEY 0x00000003
+// Note INVOKEIDLIST overrides IDLIST
+#define SEE_MASK_IDLIST 0x00000004
+#define SEE_MASK_INVOKEIDLIST 0x0000000c
+#define SEE_MASK_ICON 0x00000010
+#define SEE_MASK_HOTKEY 0x00000020
+#define SEE_MASK_NOCLOSEPROCESS 0x00000040
+#define SEE_MASK_CONNECTNETDRV 0x00000080
+#define SEE_MASK_FLAG_DDEWAIT 0x00000100
+#define SEE_MASK_DOENVSUBST 0x00000200
+#define SEE_MASK_FLAG_NO_UI 0x00000400
+#define SEE_MASK_UNICODE 0x00004000
+#define SEE_MASK_NO_CONSOLE 0x00008000
+#define SEE_MASK_ASYNCOK 0x00100000
+
+typedef struct _SHELLEXECUTEINFOA
+{
+ DWORD cbSize;
+ ULONG fMask;
+ HWND hwnd;
+ LPCSTR lpVerb;
+ LPCSTR lpFile;
+ LPCSTR lpParameters;
+ LPCSTR lpDirectory;
+ int nShow;
+ HINSTANCE hInstApp;
+ // Optional fields
+ LPVOID lpIDList;
+ LPCSTR lpClass;
+ HKEY hkeyClass;
+ DWORD dwHotKey;
+ HANDLE hIcon;
+ HANDLE hProcess;
+} SHELLEXECUTEINFOA, FAR *LPSHELLEXECUTEINFOA;
+typedef struct _SHELLEXECUTEINFOW
+{
+ DWORD cbSize;
+ ULONG fMask;
+ HWND hwnd;
+ LPCWSTR lpVerb;
+ LPCWSTR lpFile;
+ LPCWSTR lpParameters;
+ LPCWSTR lpDirectory;
+ int nShow;
+ HINSTANCE hInstApp;
+ // Optional fields
+ LPVOID lpIDList;
+ LPCWSTR lpClass;
+ HKEY hkeyClass;
+ DWORD dwHotKey;
+ HANDLE hIcon;
+ HANDLE hProcess;
+} SHELLEXECUTEINFOW, FAR *LPSHELLEXECUTEINFOW;
+#ifdef UNICODE
+typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO;
+typedef LPSHELLEXECUTEINFOW LPSHELLEXECUTEINFO;
+#else
+typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO;
+typedef LPSHELLEXECUTEINFOA LPSHELLEXECUTEINFO;
+#endif // UNICODE
+
+WINSHELLAPI BOOL WINAPI ShellExecuteExA(LPSHELLEXECUTEINFOA lpExecInfo);
+WINSHELLAPI BOOL WINAPI ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo);
+#ifdef UNICODE
+#define ShellExecuteEx ShellExecuteExW
+#else
+#define ShellExecuteEx ShellExecuteExA
+#endif // !UNICODE
+
+////
+//// End ShellExecuteEx and family
+////
+
+
+////
+//// Tray notification definitions
+////
+
+typedef struct _NOTIFYICONDATAA {
+ DWORD cbSize;
+ HWND hWnd;
+ UINT uID;
+ UINT uFlags;
+ UINT uCallbackMessage;
+ HICON hIcon;
+ CHAR szTip[64];
+} NOTIFYICONDATAA, *PNOTIFYICONDATAA;
+typedef struct _NOTIFYICONDATAW {
+ DWORD cbSize;
+ HWND hWnd;
+ UINT uID;
+ UINT uFlags;
+ UINT uCallbackMessage;
+ HICON hIcon;
+ WCHAR szTip[64];
+} NOTIFYICONDATAW, *PNOTIFYICONDATAW;
+#ifdef UNICODE
+typedef NOTIFYICONDATAW NOTIFYICONDATA;
+typedef PNOTIFYICONDATAW PNOTIFYICONDATA;
+#else
+typedef NOTIFYICONDATAA NOTIFYICONDATA;
+typedef PNOTIFYICONDATAA PNOTIFYICONDATA;
+#endif // UNICODE
+
+
+#define NIM_ADD 0x00000000
+#define NIM_MODIFY 0x00000001
+#define NIM_DELETE 0x00000002
+
+#define NIF_MESSAGE 0x00000001
+#define NIF_ICON 0x00000002
+#define NIF_TIP 0x00000004
+
+WINSHELLAPI BOOL WINAPI Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA lpData);
+WINSHELLAPI BOOL WINAPI Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW lpData);
+#ifdef UNICODE
+#define Shell_NotifyIcon Shell_NotifyIconW
+#else
+#define Shell_NotifyIcon Shell_NotifyIconA
+#endif // !UNICODE
+
+////
+//// End Tray Notification Icons
+////
+
+
+
+////
+//// Begin SHGetFileInfo
+////
+
+/*
+ * The SHGetFileInfo API provides an easy way to get attributes
+ * for a file given a pathname.
+ *
+ * PARAMETERS
+ *
+ * pszPath file name to get info about
+ * dwFileAttributes file attribs, only used with SHGFI_USEFILEATTRIBUTES
+ * psfi place to return file info
+ * cbFileInfo size of structure
+ * uFlags flags
+ *
+ * RETURN
+ * TRUE if things worked
+ */
+
+typedef struct _SHFILEINFOA
+{
+ HICON hIcon; // out: icon
+ int iIcon; // out: icon index
+ DWORD dwAttributes; // out: SFGAO_ flags
+ CHAR szDisplayName[MAX_PATH]; // out: display name (or path)
+ CHAR szTypeName[80]; // out: type name
+} SHFILEINFOA;
+typedef struct _SHFILEINFOW
+{
+ HICON hIcon; // out: icon
+ int iIcon; // out: icon index
+ DWORD dwAttributes; // out: SFGAO_ flags
+ WCHAR szDisplayName[MAX_PATH]; // out: display name (or path)
+ WCHAR szTypeName[80]; // out: type name
+} SHFILEINFOW;
+#ifdef UNICODE
+typedef SHFILEINFOW SHFILEINFO;
+#else
+typedef SHFILEINFOA SHFILEINFO;
+#endif // UNICODE
+
+#define SHGFI_ICON 0x000000100 // get icon
+#define SHGFI_DISPLAYNAME 0x000000200 // get display name
+#define SHGFI_TYPENAME 0x000000400 // get type name
+#define SHGFI_ATTRIBUTES 0x000000800 // get attributes
+#define SHGFI_ICONLOCATION 0x000001000 // get icon location
+#define SHGFI_EXETYPE 0x000002000 // return exe type
+#define SHGFI_SYSICONINDEX 0x000004000 // get system icon index
+#define SHGFI_LINKOVERLAY 0x000008000 // put a link overlay on icon
+#define SHGFI_SELECTED 0x000010000 // show icon in selected state
+#define SHGFI_LARGEICON 0x000000000 // get large icon
+#define SHGFI_SMALLICON 0x000000001 // get small icon
+#define SHGFI_OPENICON 0x000000002 // get open icon
+#define SHGFI_SHELLICONSIZE 0x000000004 // get shell size icon
+#define SHGFI_PIDL 0x000000008 // pszPath is a pidl
+#define SHGFI_USEFILEATTRIBUTES 0x000000010 // use passed dwFileAttribute
+
+WINSHELLAPI DWORD WINAPI SHGetFileInfoA(LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA FAR *psfi, UINT cbFileInfo, UINT uFlags);
+WINSHELLAPI DWORD WINAPI SHGetFileInfoW(LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW FAR *psfi, UINT cbFileInfo, UINT uFlags);
+#ifdef UNICODE
+#define SHGetFileInfo SHGetFileInfoW
+#else
+#define SHGetFileInfo SHGetFileInfoA
+#endif // !UNICODE
+
+
+#define SHGNLI_PIDL 0x000000001 // pszLinkTo is a pidl
+#define SHGNLI_PREFIXNAME 0x000000002 // Make name "Shortcut to xxx"
+#define SHGNLI_NOUNIQUE 0x000000004 // don't do the unique name generation
+
+
+////
+//// End SHGetFileInfo
+////
+
+
+
+
+
+
+#endif /* WINVER >= 0x0400 */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#include <poppack.h>
+
+#endif /* _INC_SHELLAPI */
diff --git a/public/sdk/inc/shlguid.h b/public/sdk/inc/shlguid.h
new file mode 100644
index 000000000..15a30c4d0
--- /dev/null
+++ b/public/sdk/inc/shlguid.h
@@ -0,0 +1,100 @@
+//
+// For shell-reserved GUID
+//
+// The Win95 Shell has been allocated a block of 256 GUIDs,
+// which follow the general format:
+//
+// 000214xx-0000-0000-C000-000000000046
+//
+//
+#define DEFINE_SHLGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
+
+//
+// Class IDs xx=00-9F
+//
+DEFINE_SHLGUID(CLSID_ShellDesktop, 0x00021400L, 0, 0);
+DEFINE_SHLGUID(CLSID_ShellLink, 0x00021401L, 0, 0);
+
+// Format IDs xx=A0-CF
+DEFINE_SHLGUID(FMTID_Intshcut, 0x000214A0L, 0, 0);
+DEFINE_SHLGUID(FMTID_InternetSite, 0x000214A1L, 0, 0);
+
+// command group ids xx=D0-DF
+DEFINE_SHLGUID(CGID_Explorer, 0x000214D0L, 0, 0);
+DEFINE_SHLGUID(CGID_ShellDocView, 0x000214D1L, 0, 0);
+
+//
+// Interface IDs xx=E0-FF
+//
+DEFINE_SHLGUID(IID_INewShortcutHookA, 0x000214E1L, 0, 0);
+DEFINE_SHLGUID(IID_IShellBrowser, 0x000214E2L, 0, 0);
+DEFINE_SHLGUID(IID_IShellView, 0x000214E3L, 0, 0);
+DEFINE_SHLGUID(IID_IContextMenu, 0x000214E4L, 0, 0);
+DEFINE_SHLGUID(IID_IShellIcon, 0x000214E5L, 0, 0);
+DEFINE_SHLGUID(IID_IShellFolder, 0x000214E6L, 0, 0);
+DEFINE_SHLGUID(IID_IShellExtInit, 0x000214E8L, 0, 0);
+DEFINE_SHLGUID(IID_IShellPropSheetExt, 0x000214E9L, 0, 0);
+DEFINE_SHLGUID(IID_IPersistFolder, 0x000214EAL, 0, 0);
+DEFINE_SHLGUID(IID_IExtractIconA, 0x000214EBL, 0, 0);
+DEFINE_SHLGUID(IID_IShellLinkA, 0x000214EEL, 0, 0);
+DEFINE_SHLGUID(IID_IShellCopyHookA, 0x000214EFL, 0, 0);
+DEFINE_SHLGUID(IID_IFileViewerA, 0x000214F0L, 0, 0);
+DEFINE_SHLGUID(IID_ICommDlgBrowser, 0x000214F1L, 0, 0);
+DEFINE_SHLGUID(IID_IEnumIDList, 0x000214F2L, 0, 0);
+DEFINE_SHLGUID(IID_IFileViewerSite, 0x000214F3L, 0, 0);
+DEFINE_SHLGUID(IID_IContextMenu2, 0x000214F4L, 0, 0);
+DEFINE_SHLGUID(IID_IShellExecuteHookA, 0x000214F5L, 0, 0);
+DEFINE_SHLGUID(IID_IPropSheetPage, 0x000214F6L, 0, 0);
+DEFINE_SHLGUID(IID_INewShortcutHookW, 0x000214F7L, 0, 0);
+DEFINE_SHLGUID(IID_IFileViewerW, 0x000214F8L, 0, 0);
+DEFINE_SHLGUID(IID_IShellLinkW, 0x000214F9L, 0, 0);
+DEFINE_SHLGUID(IID_IExtractIconW, 0x000214FAL, 0, 0);
+DEFINE_SHLGUID(IID_IShellExecuteHookW, 0x000214FBL, 0, 0);
+DEFINE_SHLGUID(IID_IShellCopyHookW, 0x000214FCL, 0, 0);
+
+DEFINE_GUID(IID_IShellView2, 0x88E39E80L, 0x3578, 0x11CF, 0xAE, 0x69, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62);
+
+
+#define SID_SShellBrowser IID_IShellBrowser
+
+#ifdef UNICODE
+#define IID_IFileViewer IID_IFileViewerW
+#define IID_IShellLink IID_IShellLinkW
+#define IID_IExtractIcon IID_IExtractIconW
+#define IID_IShellCopyHook IID_IShellCopyHookW
+#define IID_IShellExecuteHook IID_IShellExecuteHookW
+#define IID_INewShortcutHook IID_INewShortcutHookW
+#else
+#define IID_IFileViewer IID_IFileViewerA
+#define IID_IShellLink IID_IShellLinkA
+#define IID_IExtractIcon IID_IExtractIconA
+#define IID_IShellCopyHook IID_IShellCopyHookA
+#define IID_IShellExecuteHook IID_IShellExecuteHookA
+#define IID_INewShortcutHook IID_INewShortcutHookA
+#endif
+
+
+
+#ifndef CLSID_InternetShortcut
+DEFINE_GUID(CLSID_InternetShortcut, 0xFBF23B40L, 0xE3F0, 0x101B, 0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8);
+DEFINE_GUID(IID_IUniformResourceLocator, 0xFBF23B80L, 0xE3F0, 0x101B, 0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8);
+#endif
+
+#ifndef NO_SHDOCVW_GUIDS
+DEFINE_GUID(LIBID_SHDocVw,0xEAB22AC0,0x30C1,0x11CF,0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B);
+DEFINE_GUID(IID_IShellExplorer,0xEAB22AC1,0x30C1,0x11CF,0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B);
+DEFINE_GUID(DIID_DShellExplorerEvents,0xEAB22AC2,0x30C1,0x11CF,0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B);
+DEFINE_GUID(CLSID_ShellExplorer,0xEAB22AC3,0x30C1,0x11CF,0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B);
+DEFINE_GUID(IID_ISHItemOC,0xEAB22AC4,0x30C1,0x11CF,0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B);
+DEFINE_GUID(DIID_DSHItemOCEvents,0xEAB22AC5,0x30C1,0x11CF,0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B);
+DEFINE_GUID(CLSID_SHItemOC,0xEAB22AC6,0x30C1,0x11CF,0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B);
+DEFINE_GUID(IID_DHyperLink,0x0002DF07,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
+DEFINE_GUID(IID_DIExplorer,0x0002DF05,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
+DEFINE_GUID(DIID_DExplorerEvents,0x0002DF06,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
+DEFINE_GUID(CLSID_InternetExplorer,0x0002DF01,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
+DEFINE_GUID(CLSID_StdHyperLink,0x0002DF09,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
+#endif
+
+
+
+DEFINE_GUID(CLSID_FileTypes, 0xB091E540, 0x83E3, 0x11CF, 0xA7,0x13,0x00,0x20,0xAF,0xD7,0x97,0x62);
diff --git a/public/sdk/inc/shlobj.h b/public/sdk/inc/shlobj.h
new file mode 100644
index 000000000..d787d15ce
--- /dev/null
+++ b/public/sdk/inc/shlobj.h
@@ -0,0 +1,2508 @@
+//===========================================================================
+//
+// Copyright (c) Microsoft Corporation 1991-1996
+//
+// File: shlobj.h
+//
+//===========================================================================
+
+#ifndef _SHLOBJ_H_
+#define _SHLOBJ_H_
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+#ifndef WINSHELLAPI
+#if !defined(_SHELL32_)
+#define WINSHELLAPI DECLSPEC_IMPORT
+#else
+#define WINSHELLAPI
+#endif
+#endif // WINSHELLAPI
+
+
+#include <ole2.h>
+#ifndef _PRSHT_H_
+#include <prsht.h>
+#endif
+#ifndef _INC_COMMCTRL
+#include <commctrl.h> // for LPTBBUTTON
+#endif
+
+#ifndef INITGUID
+#include <shlguid.h>
+#endif /* !INITGUID */
+
+#ifndef RC_INVOKED
+#pragma pack(1) /* Assume byte packing throughout */
+#endif /* !RC_INVOKED */
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+//===========================================================================
+//
+// Object identifiers in the explorer's name space (ItemID and IDList)
+//
+// All the items that the user can browse with the explorer (such as files,
+// directories, servers, work-groups, etc.) has an identifier which is unique
+// among items within the parent folder. Those identifiers are called item
+// IDs (SHITEMID). Since all its parent folders have their own item IDs,
+// any items can be uniquely identified by a list of item IDs, which is called
+// an ID list (ITEMIDLIST).
+//
+// ID lists are almost always allocated by the task allocator (see some
+// description below as well as OLE 2.0 SDK) and may be passed across
+// some of shell interfaces (such as IShellFolder). Each item ID in an ID list
+// is only meaningful to its parent folder (which has generated it), and all
+// the clients must treat it as an opaque binary data except the first two
+// bytes, which indicates the size of the item ID.
+//
+// When a shell extension -- which implements the IShellFolder interace --
+// generates an item ID, it may put any information in it, not only the data
+// with that it needs to identifies the item, but also some additional
+// information, which would help implementing some other functions efficiently.
+// For example, the shell's IShellFolder implementation of file system items
+// stores the primary (long) name of a file or a directory as the item
+// identifier, but it also stores its alternative (short) name, size and date
+// etc.
+//
+// When an ID list is passed to one of shell APIs (such as SHGetPathFromIDList),
+// it is always an absolute path -- relative from the root of the name space,
+// which is the desktop folder. When an ID list is passed to one of IShellFolder
+// member function, it is always a relative path from the folder (unless it
+// is explicitly specified).
+//
+//===========================================================================
+
+//
+// SHITEMID -- Item ID
+//
+typedef struct _SHITEMID // mkid
+{
+ USHORT cb; // Size of the ID (including cb itself)
+ BYTE abID[1]; // The item ID (variable length)
+} SHITEMID;
+typedef UNALIGNED SHITEMID *LPSHITEMID;
+typedef const UNALIGNED SHITEMID *LPCSHITEMID;
+
+//
+// ITEMIDLIST -- List if item IDs (combined with 0-terminator)
+//
+typedef struct _ITEMIDLIST // idl
+{
+ SHITEMID mkid;
+} ITEMIDLIST;
+typedef UNALIGNED ITEMIDLIST * LPITEMIDLIST;
+typedef const UNALIGNED ITEMIDLIST * LPCITEMIDLIST;
+
+
+//===========================================================================
+//
+// Task allocator API
+//
+// All the shell extensions MUST use the task allocator (see OLE 2.0
+// programming guild for its definition) when they allocate or free
+// memory objects (mostly ITEMIDLIST) that are returned across any
+// shell interfaces. There are two ways to access the task allocator
+// from a shell extension depending on whether or not it is linked with
+// OLE32.DLL or not (purely for efficiency).
+//
+// (1) A shell extension which calls any OLE API (i.e., linked with
+// OLE32.DLL) should call OLE's task allocator (by retrieving
+// the task allocator by calling CoGetMalloc API).
+//
+// (2) A shell extension which does not call any OLE API (i.e., not linked
+// with OLE32.DLL) should call the shell task allocator API (defined
+// below), so that the shell can quickly loads it when OLE32.DLL is not
+// loaded by any application at that point.
+//
+// Notes:
+// In next version of Windowso release, SHGetMalloc will be replaced by
+// the following macro.
+//
+// #define SHGetMalloc(ppmem) CoGetMalloc(MEMCTX_TASK, ppmem)
+//
+//===========================================================================
+
+WINSHELLAPI HRESULT WINAPI SHGetMalloc(LPMALLOC * ppMalloc);
+
+
+
+//===========================================================================
+//
+// IContextMenu interface
+//
+// [OverView]
+//
+// The shell uses the IContextMenu interface in following three cases.
+//
+// case-1: The shell is loading context menu extensions.
+//
+// When the user clicks the right mouse button on an item within the shell's
+// name space (i.g., file, directory, server, work-group, etc.), it creates
+// the default context menu for its type, then loads context menu extensions
+// that are registered for that type (and its base type) so that they can
+// add extra menu items. Those context menu extensions are registered at
+// HKCR\{ProgID}\shellex\ContextMenuHandlers.
+//
+// case-2: The shell is retrieving a context menu of sub-folders in extended
+// name-space.
+//
+// When the explorer's name space is extended by name space extensions,
+// the shell calls their IShellFolder::GetUIObjectOf to get the IContextMenu
+// objects when it creates context menus for folders under those extended
+// name spaces.
+//
+// case-3: The shell is loading non-default drag and drop handler for directories.
+//
+// When the user performed a non-default drag and drop onto one of file
+// system folders (i.e., directories), it loads shell extensions that are
+// registered at HKCR\{ProgID}\DragDropHandlers.
+//
+//
+// [Member functions]
+//
+//
+// IContextMenu::QueryContextMenu
+//
+// This member function may insert one or more menuitems to the specified
+// menu (hmenu) at the specified location (indexMenu which is never be -1).
+// The IDs of those menuitem must be in the specified range (idCmdFirst and
+// idCmdLast). It returns the maximum menuitem ID offset (ushort) in the
+// 'code' field (low word) of the scode.
+//
+// The uFlags specify the context. It may have one or more of following
+// flags.
+//
+// CMF_DEFAULTONLY: This flag is passed if the user is invoking the default
+// action (typically by double-clicking, case 1 and 2 only). Context menu
+// extensions (case 1) should not add any menu items, and returns NOERROR.
+//
+// CMF_VERBSONLY: The explorer passes this flag if it is constructing
+// a context menu for a short-cut object (case 1 and case 2 only). If this
+// flag is passed, it should not add any menu-items that is not appropriate
+// from a short-cut.
+// A good example is the "Delete" menuitem, which confuses the user
+// because it is not clear whether it deletes the link source item or the
+// link itself.
+//
+// CMF_EXPLORER: The explorer passes this flag if it has the left-side pane
+// (case 1 and 2 only). Context menu extensions should ignore this flag.
+//
+// High word (16-bit) are reserved for context specific communications
+// and the rest of flags (13-bit) are reserved by the system.
+//
+//
+// IContextMenu::InvokeCommand
+//
+// This member is called when the user has selected one of menuitems that
+// are inserted by previous QueryContextMenu member. In this case, the
+// LOWORD(lpici->lpVerb) contains the menuitem ID offset (menuitem ID -
+// idCmdFirst).
+//
+// This member function may also be called programmatically. In such a case,
+// lpici->lpVerb specifies the canonical name of the command to be invoked,
+// which is typically retrieved by GetCommandString member previously.
+//
+// Parameters in lpci:
+// cbSize -- Specifies the size of this structure (sizeof(*lpci))
+// hwnd -- Specifies the owner window for any message/dialog box.
+// fMask -- Specifies whether or not dwHotkey/hIcon paramter is valid.
+// lpVerb -- Specifies the command to be invoked.
+// lpParameters -- Parameters (optional)
+// lpDirectory -- Working directory (optional)
+// nShow -- Specifies the flag to be passed to ShowWindow (SW_*).
+// dwHotKey -- Hot key to be assigned to the app after invoked (optional).
+// hIcon -- Specifies the icon (optional).
+//
+//
+// IContextMenu::GetCommandString
+//
+// This member function is called by the explorer either to get the
+// canonical (language independent) command name (uFlags == GCS_VERB) or
+// the help text ((uFlags & GCS_HELPTEXT) != 0) for the specified command.
+// The retrieved canonical string may be passed to its InvokeCommand
+// member function to invoke a command programmatically. The explorer
+// displays the help texts in its status bar; therefore, the length of
+// the help text should be reasonably short (<40 characters).
+//
+// Parameters:
+// idCmd -- Specifies menuitem ID offset (from idCmdFirst)
+// uFlags -- Either GCS_VERB or GCS_HELPTEXT
+// pwReserved -- Reserved (must pass NULL when calling, must ignore when called)
+// pszName -- Specifies the string buffer.
+// cchMax -- Specifies the size of the string buffer.
+//
+//===========================================================================
+
+// QueryContextMenu uFlags
+#define CMF_NORMAL 0x00000000
+#define CMF_DEFAULTONLY 0x00000001
+#define CMF_VERBSONLY 0x00000002
+#define CMF_EXPLORE 0x00000004
+#define CMF_NOVERBS 0x00000008
+#define CMF_CANRENAME 0x00000010
+#define CMF_NODEFAULT 0x00000020
+#define CMF_INCLUDESTATIC 0x00000040
+#define CMF_RESERVED 0xffff0000 // View specific
+
+// GetCommandString uFlags
+#define GCS_VERBA 0x00000000 // canonical verb
+#define GCS_HELPTEXTA 0x00000001 // help text (for status bar)
+#define GCS_VALIDATEA 0x00000002 // validate command exists
+#define GCS_VERBW 0x00000004 // canonical verb (unicode)
+#define GCS_HELPTEXTW 0x00000005 // help text (unicode version)
+#define GCS_VALIDATEW 0x00000006 // validate command exists (unicode)
+#define GCS_UNICODE 0x00000004 // for bit testing - Unicode string
+
+#ifdef UNICODE
+#define GCS_VERB GCS_VERBW
+#define GCS_HELPTEXT GCS_HELPTEXTW
+#define GCS_VALIDATE GCS_VALIDATEW
+#else
+#define GCS_VERB GCS_VERBA
+#define GCS_HELPTEXT GCS_HELPTEXTA
+#define GCS_VALIDATE GCS_VALIDATEA
+#endif
+
+#define CMDSTR_NEWFOLDERA "NewFolder"
+#define CMDSTR_VIEWLISTA "ViewList"
+#define CMDSTR_VIEWDETAILSA "ViewDetails"
+#define CMDSTR_NEWFOLDERW L"NewFolder"
+#define CMDSTR_VIEWLISTW L"ViewList"
+#define CMDSTR_VIEWDETAILSW L"ViewDetails"
+
+#ifdef UNICODE
+#define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDERW
+#define CMDSTR_VIEWLIST CMDSTR_VIEWLISTW
+#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILSW
+#else
+#define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDERA
+#define CMDSTR_VIEWLIST CMDSTR_VIEWLISTA
+#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILSA
+#endif
+
+#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY
+#define CMIC_MASK_ICON SEE_MASK_ICON
+#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI
+#define CMIC_MASK_UNICODE SEE_MASK_UNICODE
+#define CMIC_MASK_NO_CONSOLE SEE_MASK_NO_CONSOLE
+#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME
+#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM
+#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE
+#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK
+
+
+typedef struct _CMINVOKECOMMANDINFO {
+ DWORD cbSize; // sizeof(CMINVOKECOMMANDINFO)
+ DWORD fMask; // any combination of CMIC_MASK_*
+ HWND hwnd; // might be NULL (indicating no owner window)
+ LPCSTR lpVerb; // either a string or MAKEINTRESOURCE(idOffset)
+ LPCSTR lpParameters; // might be NULL (indicating no parameter)
+ LPCSTR lpDirectory; // might be NULL (indicating no specific directory)
+ int nShow; // one of SW_ values for ShowWindow() API
+
+ DWORD dwHotKey;
+ HANDLE hIcon;
+} CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO;
+
+typedef struct _CMInvokeCommandInfoEx {
+ DWORD cbSize; // must be sizeof(CMINVOKECOMMANDINFOEX)
+ DWORD fMask; // any combination of CMIC_MASK_*
+ HWND hwnd; // might be NULL (indicating no owner window)
+ LPCSTR lpVerb; // either a string or MAKEINTRESOURCE(idOffset)
+ LPCSTR lpParameters; // might be NULL (indicating no parameter)
+ LPCSTR lpDirectory; // might be NULL (indicating no specific directory)
+ int nShow; // one of SW_ values for ShowWindow() API
+
+ DWORD dwHotKey;
+ HANDLE hIcon;
+ LPCSTR lpTitle; // For CreateProcess-StartupInfo.lpTitle
+ LPCWSTR lpVerbW; // Unicode verb (for those who can use it)
+ LPCWSTR lpParametersW; // Unicode parameters (for those who can use it)
+ LPCWSTR lpDirectoryW; // Unicode directory (for those who can use it)
+ LPCWSTR lpTitleW; // Unicode title (for those who can use it)
+} CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
+
+#undef INTERFACE
+#define INTERFACE IContextMenu
+
+DECLARE_INTERFACE_(IContextMenu, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD(QueryContextMenu)(THIS_
+ HMENU hmenu,
+ UINT indexMenu,
+ UINT idCmdFirst,
+ UINT idCmdLast,
+ UINT uFlags) PURE;
+
+ STDMETHOD(InvokeCommand)(THIS_
+ LPCMINVOKECOMMANDINFO lpici) PURE;
+
+ STDMETHOD(GetCommandString)(THIS_
+ UINT idCmd,
+ UINT uType,
+ UINT * pwReserved,
+ LPSTR pszName,
+ UINT cchMax) PURE;
+};
+
+typedef IContextMenu * LPCONTEXTMENU;
+
+//
+// IContextMenu2 (IContextMenu with one new member)
+//
+// IContextMenu2::HandleMenuMsg
+//
+// This function is called, if the client of IContextMenu is aware of
+// IContextMenu2 interface and receives one of following messages while
+// it is calling TrackPopupMenu (in the window proc of hwndOwner):
+// WM_INITPOPUP, WM_DRAWITEM and WM_MEASUREITEM
+// The callee may handle these messages to draw owner draw menuitems.
+//
+
+#undef INTERFACE
+#define INTERFACE IContextMenu2
+
+DECLARE_INTERFACE_(IContextMenu2, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD(QueryContextMenu)(THIS_
+ HMENU hmenu,
+ UINT indexMenu,
+ UINT idCmdFirst,
+ UINT idCmdLast,
+ UINT uFlags) PURE;
+
+ STDMETHOD(InvokeCommand)(THIS_
+ LPCMINVOKECOMMANDINFO lpici) PURE;
+
+ STDMETHOD(GetCommandString)(THIS_
+ UINT idCmd,
+ UINT uType,
+ UINT * pwReserved,
+ LPSTR pszName,
+ UINT cchMax) PURE;
+ STDMETHOD(HandleMenuMsg)(THIS_
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam) PURE;
+};
+
+typedef IContextMenu2 * LPCONTEXTMENU2;
+
+
+
+
+//===========================================================================
+//
+// Interface: IShellExtInit
+//
+// The IShellExtInit interface is used by the explorer to initialize shell
+// extension objects. The explorer (1) calls CoCreateInstance (or equivalent)
+// with the registered CLSID and IID_IShellExtInit, (2) calls its Initialize
+// member, then (3) calls its QueryInterface to a particular interface (such
+// as IContextMenu or IPropSheetExt and (4) performs the rest of operation.
+//
+//
+// [Member functions]
+//
+// IShellExtInit::Initialize
+//
+// This member function is called when the explorer is initializing either
+// context menu extension, property sheet extension or non-default drag-drop
+// extension.
+//
+// Parameters: (context menu or property sheet extension)
+// pidlFolder -- Specifies the parent folder
+// lpdobj -- Spefifies the set of items selected in that folder.
+// hkeyProgID -- Specifies the type of the focused item in the selection.
+//
+// Parameters: (non-default drag-and-drop extension)
+// pidlFolder -- Specifies the target (destination) folder
+// lpdobj -- Specifies the items that are dropped (see the description
+// about shell's clipboard below for clipboard formats).
+// hkeyProgID -- Specifies the folder type.
+//
+//===========================================================================
+
+#undef INTERFACE
+#define INTERFACE IShellExtInit
+
+DECLARE_INTERFACE_(IShellExtInit, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IShellExtInit methods ***
+ STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST pidlFolder,
+ LPDATAOBJECT lpdobj, HKEY hkeyProgID) PURE;
+};
+
+typedef IShellExtInit * LPSHELLEXTINIT;
+
+
+//===========================================================================
+//
+// Interface: IShellPropSheetExt
+//
+// The explorer uses the IShellPropSheetExt to allow property sheet
+// extensions or control panel extensions to add additional property
+// sheet pages.
+//
+//
+// [Member functions]
+//
+// IShellPropSheetExt::AddPages
+//
+// The explorer calls this member function when it finds a registered
+// property sheet extension for a particular type of object. For each
+// additional page, the extension creates a page object by calling
+// CreatePropertySheetPage API and calls lpfnAddPage.
+//
+// Parameters:
+// lpfnAddPage -- Specifies the callback function.
+// lParam -- Specifies the opaque handle to be passed to the callback function.
+//
+//
+// IShellPropSheetExt::ReplacePage
+//
+// The explorer never calls this member of property sheet extensions. The
+// explorer calls this member of control panel extensions, so that they
+// can replace some of default control panel pages (such as a page of
+// mouse control panel).
+//
+// Parameters:
+// uPageID -- Specifies the page to be replaced.
+// lpfnReplace Specifies the callback function.
+// lParam -- Specifies the opaque handle to be passed to the callback function.
+//
+//===========================================================================
+
+#undef INTERFACE
+#define INTERFACE IShellPropSheetExt
+
+DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IShellPropSheetExt methods ***
+ STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam) PURE;
+ STDMETHOD(ReplacePage)(THIS_ UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam) PURE;
+};
+
+typedef IShellPropSheetExt * LPSHELLPROPSHEETEXT;
+
+
+//===========================================================================
+//
+// IPersistFolder Interface
+//
+// The IPersistFolder interface is used by the file system implementation of
+// IShellFolder::BindToObject when it is initializing a shell folder object.
+//
+//
+// [Member functions]
+//
+// IPersistFolder::Initialize
+//
+// This member function is called when the explorer is initializing a
+// shell folder object.
+//
+// Parameters:
+// pidl -- Specifies the absolute location of the folder.
+//
+//===========================================================================
+
+#undef INTERFACE
+#define INTERFACE IPersistFolder
+
+DECLARE_INTERFACE_(IPersistFolder, IPersist) // fld
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ // *** IPersist methods ***
+ STDMETHOD(GetClassID)(THIS_ LPCLSID lpClassID) PURE;
+
+ // *** IPersistFolder methods ***
+ STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST pidl) PURE;
+};
+
+typedef IPersistFolder *LPPERSISTFOLDER;
+
+
+//===========================================================================
+//
+// IExtractIcon interface
+//
+// This interface is used in two different places in the shell.
+//
+// Case-1: Icons of sub-folders for the scope-pane of the explorer.
+//
+// It is used by the explorer to get the "icon location" of
+// sub-folders from each shell folders. When the user expands a folder
+// in the scope pane of the explorer, the explorer does following:
+// (1) binds to the folder (gets IShellFolder),
+// (2) enumerates its sub-folders by calling its EnumObjects member,
+// (3) calls its GetUIObjectOf member to get IExtractIcon interface
+// for each sub-folders.
+// In this case, the explorer uses only IExtractIcon::GetIconLocation
+// member to get the location of the appropriate icon. An icon location
+// always consists of a file name (typically DLL or EXE) and either an icon
+// resource or an icon index.
+//
+//
+// Case-2: Extracting an icon image from a file
+//
+// It is used by the shell when it extracts an icon image
+// from a file. When the shell is extracting an icon from a file,
+// it does following:
+// (1) creates the icon extraction handler object (by getting its CLSID
+// under the {ProgID}\shell\ExtractIconHanler key and calling
+// CoCreateInstance requesting for IExtractIcon interface).
+// (2) Calls IExtractIcon::GetIconLocation.
+// (3) Then, calls IExtractIcon::ExtractIcon with the location/index pair.
+// (4) If (3) returns NOERROR, it uses the returned icon.
+// (5) Otherwise, it recursively calls this logic with new location
+// assuming that the location string contains a fully qualified path name.
+//
+// From extension programmer's point of view, there are only two cases
+// where they provide implementations of IExtractIcon:
+// Case-1) providing explorer extensions (i.e., IShellFolder).
+// Case-2) providing per-instance icons for some types of files.
+//
+// Because Case-1 is described above, we'll explain only Case-2 here.
+//
+// When the shell is about display an icon for a file, it does following:
+// (1) Finds its ProgID and ClassID.
+// (2) If the file has a ClassID, it gets the icon location string from the
+// "DefaultIcon" key under it. The string indicates either per-class
+// icon (e.g., "FOOBAR.DLL,2") or per-instance icon (e.g., "%1,1").
+// (3) If a per-instance icon is specified, the shell creates an icon
+// extraction handler object for it, and extracts the icon from it
+// (which is described above).
+//
+// It is important to note that the shell calls IExtractIcon::GetIconLocation
+// first, then calls IExtractIcon::Extract. Most application programs
+// that support per-instance icons will probably store an icon location
+// (DLL/EXE name and index/id) rather than an icon image in each file.
+// In those cases, a programmer needs to implement only the GetIconLocation
+// member and it Extract member simply returns S_FALSE. They need to
+// implement Extract member only if they decided to store the icon images
+// within files themselved or some other database (which is very rare).
+//
+//
+//
+// [Member functions]
+//
+//
+// IExtractIcon::GetIconLocation
+//
+// This function returns an icon location.
+//
+// Parameters:
+// uFlags [in] -- Specifies if it is opened or not (GIL_OPENICON or 0)
+// szIconFile [out] -- Specifies the string buffer buffer for a location name.
+// cchMax [in] -- Specifies the size of szIconFile (almost always MAX_PATH)
+// piIndex [out] -- Sepcifies the address of UINT for the index.
+// pwFlags [out] -- Returns GIL_* flags
+// Returns:
+// NOERROR, if it returns a valid location; S_FALSE, if the shell use a
+// default icon.
+//
+// Notes: The location may or may not be a path to a file. The caller can
+// not assume anything unless the subsequent Extract member call returns
+// S_FALSE.
+//
+// if the returned location is not a path to a file, GIL_NOTFILENAME should
+// be set in the returned flags.
+//
+// IExtractIcon::Extract
+//
+// This function extracts an icon image from a specified file.
+//
+// Parameters:
+// pszFile [in] -- Specifies the icon location (typically a path to a file).
+// nIconIndex [in] -- Specifies the icon index.
+// phiconLarge [out] -- Specifies the HICON variable for large icon.
+// phiconSmall [out] -- Specifies the HICON variable for small icon.
+// nIconSize [in] -- Specifies the size icon required (size of large icon)
+// LOWORD is the requested large icon size
+// HIWORD is the requested small icon size
+// Returns:
+// NOERROR, if it extracted the from the file.
+// S_FALSE, if the caller should extract from the file specified in the
+// location.
+//
+//===========================================================================
+
+// GetIconLocation() input flags
+
+#define GIL_OPENICON 0x0001 // allows containers to specify an "open" look
+#define GIL_FORSHELL 0x0002 // icon is to be displayed in a ShellFolder
+#define GIL_ASYNC 0x0020 // this is an async extract, return E_ASYNC
+
+// GetIconLocation() return flags
+
+#define GIL_SIMULATEDOC 0x0001 // simulate this document icon for this
+#define GIL_PERINSTANCE 0x0002 // icons from this class are per instance (each file has its own)
+#define GIL_PERCLASS 0x0004 // icons from this class per class (shared for all files of this type)
+#define GIL_NOTFILENAME 0x0008 // location is not a filename, must call ::ExtractIcon
+#define GIL_DONTCACHE 0x0010 // this icon should not be cached
+
+#undef INTERFACE
+#define INTERFACE IExtractIconA
+
+DECLARE_INTERFACE_(IExtractIconA, IUnknown) // exic
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExtractIcon methods ***
+ STDMETHOD(GetIconLocation)(THIS_
+ UINT uFlags,
+ LPSTR szIconFile,
+ UINT cchMax,
+ int * piIndex,
+ UINT * pwFlags) PURE;
+
+ STDMETHOD(Extract)(THIS_
+ LPCSTR pszFile,
+ UINT nIconIndex,
+ HICON *phiconLarge,
+ HICON *phiconSmall,
+ UINT nIconSize) PURE;
+};
+
+typedef IExtractIconA * LPEXTRACTICONA;
+
+#undef INTERFACE
+#define INTERFACE IExtractIconW
+
+DECLARE_INTERFACE_(IExtractIconW, IUnknown) // exic
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IExtractIcon methods ***
+ STDMETHOD(GetIconLocation)(THIS_
+ UINT uFlags,
+ LPWSTR szIconFile,
+ UINT cchMax,
+ int * piIndex,
+ UINT * pwFlags) PURE;
+
+ STDMETHOD(Extract)(THIS_
+ LPCWSTR pszFile,
+ UINT nIconIndex,
+ HICON *phiconLarge,
+ HICON *phiconSmall,
+ UINT nIconSize) PURE;
+};
+
+typedef IExtractIconW * LPEXTRACTICONW;
+
+#ifdef UNICODE
+#define IExtractIcon IExtractIconW
+#define IExtractIconVtbl IExtractIconWVtbl
+#define LPEXTRACTICON LPEXTRACTICONW
+#else
+#define IExtractIcon IExtractIconA
+#define IExtractIconVtbl IExtractIconAVtbl
+#define LPEXTRACTICON LPEXTRACTICONA
+#endif
+
+//===========================================================================
+//
+// IShellIcon Interface
+//
+// used to get a icon index for a IShellFolder object.
+//
+// this interface can be implemented by a IShellFolder, as a quick way to
+// return the icon for a object in the folder.
+//
+// a instance of this interface is only created once for the folder, unlike
+// IExtractIcon witch is created once for each object.
+//
+// if a ShellFolder does not implement this interface, the standard
+// GetUIObject(....IExtractIcon) method will be used to get a icon
+// for all objects.
+//
+// the following standard imagelist indexs can be returned:
+//
+// 0 document (blank page) (not associated)
+// 1 document (with stuff on the page)
+// 2 application (exe, com, bat)
+// 3 folder (plain)
+// 4 folder (open)
+//
+// IShellIcon:GetIconOf(pidl, flags, lpIconIndex)
+//
+// pidl object to get icon for.
+// flags GIL_* input flags (GIL_OPEN, ...)
+// lpIconIndex place to return icon index.
+//
+// returns:
+// NOERROR, if lpIconIndex contains the correct system imagelist index.
+// S_FALSE, if unable to get icon for this object, go through
+// GetUIObject, IExtractIcon, methods.
+//
+//===========================================================================
+
+#undef INTERFACE
+#define INTERFACE IShellIcon
+
+DECLARE_INTERFACE_(IShellIcon, IUnknown) // shi
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IShellIcon methods ***
+ STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl, UINT flags,
+ LPINT lpIconIndex) PURE;
+};
+
+typedef IShellIcon *LPSHELLICON;
+
+//===========================================================================
+//
+// IShellLink Interface
+//
+//===========================================================================
+
+#ifdef UNICODE
+#define IShellLink IShellLinkW
+#define IShellLinkVtbl IShellLinkWVtbl
+#else
+#define IShellLink IShellLinkA
+#define IShellLinkVtbl IShellLinkAVtbl
+#endif
+
+// IShellLink::Resolve fFlags
+typedef enum {
+ SLR_NO_UI = 0x0001,
+ SLR_ANY_MATCH = 0x0002,
+ SLR_UPDATE = 0x0004,
+} SLR_FLAGS;
+
+// IShellLink::GetPath fFlags
+typedef enum {
+ SLGP_SHORTPATH = 0x0001,
+ SLGP_UNCPRIORITY = 0x0002,
+} SLGP_FLAGS;
+
+#undef INTERFACE
+#define INTERFACE IShellLinkA
+
+DECLARE_INTERFACE_(IShellLinkA, IUnknown) // sl
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD(GetPath)(THIS_ LPSTR pszFile, int cchMaxPath, WIN32_FIND_DATAA *pfd, DWORD fFlags) PURE;
+
+ STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST * ppidl) PURE;
+ STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST pidl) PURE;
+
+ STDMETHOD(GetDescription)(THIS_ LPSTR pszName, int cchMaxName) PURE;
+ STDMETHOD(SetDescription)(THIS_ LPCSTR pszName) PURE;
+
+ STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR pszDir, int cchMaxPath) PURE;
+ STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR pszDir) PURE;
+
+ STDMETHOD(GetArguments)(THIS_ LPSTR pszArgs, int cchMaxPath) PURE;
+ STDMETHOD(SetArguments)(THIS_ LPCSTR pszArgs) PURE;
+
+ STDMETHOD(GetHotkey)(THIS_ WORD *pwHotkey) PURE;
+ STDMETHOD(SetHotkey)(THIS_ WORD wHotkey) PURE;
+
+ STDMETHOD(GetShowCmd)(THIS_ int *piShowCmd) PURE;
+ STDMETHOD(SetShowCmd)(THIS_ int iShowCmd) PURE;
+
+ STDMETHOD(GetIconLocation)(THIS_ LPSTR pszIconPath, int cchIconPath, int *piIcon) PURE;
+ STDMETHOD(SetIconLocation)(THIS_ LPCSTR pszIconPath, int iIcon) PURE;
+
+ STDMETHOD(SetRelativePath)(THIS_ LPCSTR pszPathRel, DWORD dwReserved) PURE;
+
+ STDMETHOD(Resolve)(THIS_ HWND hwnd, DWORD fFlags) PURE;
+
+ STDMETHOD(SetPath)(THIS_ LPCSTR pszFile) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IShellLinkW
+
+DECLARE_INTERFACE_(IShellLinkW, IUnknown) // sl
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD(GetPath)(THIS_ LPWSTR pszFile, int cchMaxPath, WIN32_FIND_DATAW *pfd, DWORD fFlags) PURE;
+
+ STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST * ppidl) PURE;
+ STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST pidl) PURE;
+
+ STDMETHOD(GetDescription)(THIS_ LPWSTR pszName, int cchMaxName) PURE;
+ STDMETHOD(SetDescription)(THIS_ LPCWSTR pszName) PURE;
+
+ STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR pszDir, int cchMaxPath) PURE;
+ STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR pszDir) PURE;
+
+ STDMETHOD(GetArguments)(THIS_ LPWSTR pszArgs, int cchMaxPath) PURE;
+ STDMETHOD(SetArguments)(THIS_ LPCWSTR pszArgs) PURE;
+
+ STDMETHOD(GetHotkey)(THIS_ WORD *pwHotkey) PURE;
+ STDMETHOD(SetHotkey)(THIS_ WORD wHotkey) PURE;
+
+ STDMETHOD(GetShowCmd)(THIS_ int *piShowCmd) PURE;
+ STDMETHOD(SetShowCmd)(THIS_ int iShowCmd) PURE;
+
+ STDMETHOD(GetIconLocation)(THIS_ LPWSTR pszIconPath, int cchIconPath, int *piIcon) PURE;
+ STDMETHOD(SetIconLocation)(THIS_ LPCWSTR pszIconPath, int iIcon) PURE;
+
+ STDMETHOD(SetRelativePath)(THIS_ LPCWSTR pszPathRel, DWORD dwReserved) PURE;
+
+ STDMETHOD(Resolve)(THIS_ HWND hwnd, DWORD fFlags) PURE;
+
+ STDMETHOD(SetPath)(THIS_ LPCWSTR pszFile) PURE;
+};
+
+#ifdef _INC_SHELLAPI /* for LPSHELLEXECUTEINFO */
+//===========================================================================
+//
+// IShellExecuteHook Interface
+//
+//===========================================================================
+
+#undef INTERFACE
+#define INTERFACE IShellExecuteHookA
+
+DECLARE_INTERFACE_(IShellExecuteHookA, IUnknown) // shexhk
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG, Release) (THIS) PURE;
+
+ // *** IShellExecuteHookA methods ***
+ STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA pei) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IShellExecuteHookW
+
+DECLARE_INTERFACE_(IShellExecuteHookW, IUnknown) // shexhk
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG, Release) (THIS) PURE;
+
+ // *** IShellExecuteHookW methods ***
+ STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW pei) PURE;
+};
+
+#ifdef UNICODE
+#define IShellExecuteHook IShellExecuteHookW
+#define IShellExecuteHookVtbl IShellExecuteHookWVtbl
+#else
+#define IShellExecuteHook IShellExecuteHookA
+#define IShellExecuteHookVtbl IShellExecuteHookAVtbl
+#endif
+#endif
+
+//===========================================================================
+//
+// INewShortcutHook Interface
+//
+//===========================================================================
+
+#undef INTERFACE
+#define INTERFACE INewShortcutHookA
+
+DECLARE_INTERFACE_(INewShortcutHookA, IUnknown) // nshhk
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG, Release) (THIS) PURE;
+
+ // *** INewShortcutHook methods ***
+ STDMETHOD(SetReferent)(THIS_ LPCSTR pcszReferent, HWND hwnd) PURE;
+ STDMETHOD(GetReferent)(THIS_ LPSTR pszReferent, int cchReferent) PURE;
+ STDMETHOD(SetFolder)(THIS_ LPCSTR pcszFolder) PURE;
+ STDMETHOD(GetFolder)(THIS_ LPSTR pszFolder, int cchFolder) PURE;
+ STDMETHOD(GetName)(THIS_ LPSTR pszName, int cchName) PURE;
+ STDMETHOD(GetExtension)(THIS_ LPSTR pszExtension, int cchExtension) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE INewShortcutHookW
+
+DECLARE_INTERFACE_(INewShortcutHookW, IUnknown) // nshhk
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG, Release) (THIS) PURE;
+
+ // *** INewShortcutHook methods ***
+ STDMETHOD(SetReferent)(THIS_ LPCWSTR pcszReferent, HWND hwnd) PURE;
+ STDMETHOD(GetReferent)(THIS_ LPWSTR pszReferent, int cchReferent) PURE;
+ STDMETHOD(SetFolder)(THIS_ LPCWSTR pcszFolder) PURE;
+ STDMETHOD(GetFolder)(THIS_ LPWSTR pszFolder, int cchFolder) PURE;
+ STDMETHOD(GetName)(THIS_ LPWSTR pszName, int cchName) PURE;
+ STDMETHOD(GetExtension)(THIS_ LPWSTR pszExtension, int cchExtension) PURE;
+};
+
+#ifdef UNICODE
+#define INewShortcutHook INewShortcutHookW
+#define INewShortcutHookVtbl INewShortcutHookWVtbl
+#else
+#define INewShortcutHook INewShortcutHookA
+#define INewShortcutHookVtbl INewShortcutHookAVtbl
+#endif
+
+//===========================================================================
+//
+// ICopyHook Interface
+//
+// The copy hook is called whenever file system directories are
+// copy/moved/deleted/renamed via the shell. It is also called by the shell
+// on changes of status of printers.
+//
+// Clients register their id under STRREG_SHEX_COPYHOOK for file system hooks
+// and STRREG_SHEx_PRNCOPYHOOK for printer hooks.
+// the CopyCallback is called prior to the action, so the hook has the chance
+// to allow, deny or cancel the operation by returning the falues:
+// IDYES - means allow the operation
+// IDNO - means disallow the operation on this file, but continue with
+// any other operations (eg. batch copy)
+// IDCANCEL - means disallow the current operation and cancel any pending
+// operations
+//
+// arguments to the CopyCallback
+// hwnd - window to use for any UI
+// wFunc - what operation is being done
+// wFlags - and flags (FOF_*) set in the initial call to the file operation
+// pszSrcFile - name of the source file
+// dwSrcAttribs - file attributes of the source file
+// pszDestFile - name of the destiation file (for move and renames)
+// dwDestAttribs - file attributes of the destination file
+//
+//
+//===========================================================================
+
+#ifndef FO_MOVE //these need to be kept in sync with the ones in shellapi.h
+
+// file operations
+
+#define FO_MOVE 0x0001
+#define FO_COPY 0x0002
+#define FO_DELETE 0x0003
+#define FO_RENAME 0x0004
+
+#define FOF_MULTIDESTFILES 0x0001
+#define FOF_CONFIRMMOUSE 0x0002
+#define FOF_SILENT 0x0004 // don't create progress/report
+#define FOF_RENAMEONCOLLISION 0x0008
+#define FOF_NOCONFIRMATION 0x0010 // Don't prompt the user.
+#define FOF_WANTMAPPINGHANDLE 0x0020 // Fill in SHFILEOPSTRUCT.hNameMappings
+ // Must be freed using SHFreeNameMappings
+#define FOF_ALLOWUNDO 0x0040
+#define FOF_FILESONLY 0x0080 // on *.*, do only files
+#define FOF_SIMPLEPROGRESS 0x0100 // means don't show names of files
+#define FOF_NOCONFIRMMKDIR 0x0200 // don't confirm making any needed dirs
+#define FOF_NOERRORUI 0x0400 // don't put up error UI
+
+typedef UINT FILEOP_FLAGS;
+
+// printer operations
+
+#define PO_DELETE 0x0013 // printer is being deleted
+#define PO_RENAME 0x0014 // printer is being renamed
+#define PO_PORTCHANGE 0x0020 // port this printer connected to is being changed
+ // if this id is set, the strings received by
+ // the copyhook are a doubly-null terminated
+ // list of strings. The first is the printer
+ // name and the second is the printer port.
+#define PO_REN_PORT 0x0034 // PO_RENAME and PO_PORTCHANGE at same time.
+
+// no POF_ flags currently defined
+
+typedef UINT PRINTEROP_FLAGS;
+
+#endif // FO_MOVE
+
+#undef INTERFACE
+#define INTERFACE ICopyHookA
+
+DECLARE_INTERFACE_(ICopyHookA, IUnknown) // sl
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD_(UINT,CopyCallback) (THIS_ HWND hwnd, UINT wFunc, UINT wFlags, LPCSTR pszSrcFile, DWORD dwSrcAttribs,
+ LPCSTR pszDestFile, DWORD dwDestAttribs) PURE;
+};
+
+typedef ICopyHookA * LPCOPYHOOKA;
+
+#undef INTERFACE
+#define INTERFACE ICopyHookW
+
+DECLARE_INTERFACE_(ICopyHookW, IUnknown) // sl
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD_(UINT,CopyCallback) (THIS_ HWND hwnd, UINT wFunc, UINT wFlags, LPCWSTR pszSrcFile, DWORD dwSrcAttribs,
+ LPCWSTR pszDestFile, DWORD dwDestAttribs) PURE;
+};
+
+typedef ICopyHookW * LPCOPYHOOKW;
+
+#ifdef UNICODE
+#define ICopyHook ICopyHookW
+#define ICopyHookVtbl ICopyHookWVtbl
+#define LPCOPYHOOK LPCOPYHOOKW
+#else
+#define ICopyHook ICopyHookA
+#define ICopyHookVtbl ICopyHookAVtbl
+#define LPCOPYHOOK LPCOPYHOOKA
+#endif
+
+//===========================================================================
+//
+// IFileViewerSite Interface
+//
+//===========================================================================
+
+#undef INTERFACE
+#define INTERFACE IFileViewerSite
+
+DECLARE_INTERFACE(IFileViewerSite)
+{
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD(SetPinnedWindow) (THIS_ HWND hwnd) PURE;
+ STDMETHOD(GetPinnedWindow) (THIS_ HWND *phwnd) PURE;
+};
+
+typedef IFileViewerSite * LPFILEVIEWERSITE;
+
+
+//===========================================================================
+//
+// IFileViewer Interface
+//
+// Implemented in a FileViewer component object. Used to tell a
+// FileViewer to PrintTo or to view, the latter happening though
+// ShowInitialize and Show. The filename is always given to the
+// viewer through IPersistFile.
+//
+//===========================================================================
+
+typedef struct
+{
+ // Stuff passed into viewer (in)
+ DWORD cbSize; // Size of structure for future expansion...
+ HWND hwndOwner; // who is the owner window.
+ int iShow; // The show command
+
+ // Passed in and updated (in/Out)
+ DWORD dwFlags; // flags
+ RECT rect; // Where to create the window may have defaults
+ LPUNKNOWN punkRel; // Relese this interface when window is visible
+
+ // Stuff that might be returned from viewer (out)
+ OLECHAR strNewFile[MAX_PATH]; // New File to view.
+
+} FVSHOWINFO, *LPFVSHOWINFO;
+
+ // Define File View Show Info Flags.
+#define FVSIF_RECT 0x00000001 // The rect variable has valid data.
+#define FVSIF_PINNED 0x00000002 // We should Initialize pinned
+
+#define FVSIF_NEWFAILED 0x08000000 // The new file passed back failed
+ // to be viewed.
+
+#define FVSIF_NEWFILE 0x80000000 // A new file to view has been returned
+#define FVSIF_CANVIEWIT 0x40000000 // The viewer can view it.
+
+#undef INTERFACE
+#define INTERFACE IFileViewerA
+
+DECLARE_INTERFACE(IFileViewerA)
+{
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD(ShowInitialize) (THIS_ LPFILEVIEWERSITE lpfsi) PURE;
+ STDMETHOD(Show) (THIS_ LPFVSHOWINFO pvsi) PURE;
+ STDMETHOD(PrintTo) (THIS_ LPSTR pszDriver, BOOL fSuppressUI) PURE;
+};
+
+typedef IFileViewerA * LPFILEVIEWERA;
+
+#undef INTERFACE
+#define INTERFACE IFileViewerW
+
+DECLARE_INTERFACE(IFileViewerW)
+{
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD(ShowInitialize) (THIS_ LPFILEVIEWERSITE lpfsi) PURE;
+ STDMETHOD(Show) (THIS_ LPFVSHOWINFO pvsi) PURE;
+ STDMETHOD(PrintTo) (THIS_ LPWSTR pszDriver, BOOL fSuppressUI) PURE;
+};
+
+typedef IFileViewerW * LPFILEVIEWERW;
+
+#ifdef UNICODE
+#define IFileViewer IFileViewerW
+#define LPFILEVIEWER LPFILEVIEWERW
+#else
+#define IFileViewer IFileViewerA
+#define LPFILEVIEWER LPFILEVIEWERA
+#endif
+
+
+
+// CommandTarget ids. for shell doc view wedge
+enum {
+ SHDVID_SETPROGRESSPOS,
+ SHDVID_SETPROGRESSRANGE,
+ SHDVID_SETSTATUSTEXT, // variantIn bstr
+
+ SHDVID_REFRESH,
+ SHDVID_STOP,
+ SHDVID_UPDATECOMMANDS, /// this forces a re-querystatus of the command targets.
+ /// the arg in can specify a specific one to update or NULL for evrything
+ SHDVID_SETTITLE, // variantIn bstr
+ SHDVID_FINALTITLEAVAIL, // variantIn bstr - sent after final SETTITLE is sent
+ SHDVID_STARTLOAD, // NULL for everything
+ SHDVID_STOPLOAD // NULL for everything
+#if MSOCT2
+ ,SHDVID_CCALLBACK, // callback to arbitrary C func
+ SHDVID_MENUEXEC, // do menu command
+ SHDVID_MENUQS // query menu commands
+#endif
+};
+
+
+
+//==========================================================================
+//
+// IShellBrowser/IShellView/IShellFolder interface
+//
+// These three interfaces are used when the shell communicates with
+// name space extensions. The shell (explorer) provides IShellBrowser
+// interface, and extensions implements IShellFolder and IShellView
+// interfaces.
+//
+//==========================================================================
+
+
+//--------------------------------------------------------------------------
+//
+// Command/menuitem IDs
+//
+// The explorer dispatches WM_COMMAND messages based on the range of
+// command/menuitem IDs. All the IDs of menuitems that the view (right
+// pane) inserts must be in FCIDM_SHVIEWFIRST/LAST (otherwise, the explorer
+// won't dispatch them). The view should not deal with any menuitems
+// in FCIDM_BROWSERFIRST/LAST (otherwise, it won't work with the future
+// version of the shell).
+//
+// FCIDM_SHVIEWFIRST/LAST for the right pane (IShellView)
+// FCIDM_BROWSERFIRST/LAST for the explorer frame (IShellBrowser)
+// FCIDM_GLOBAL/LAST for the explorer's submenu IDs
+//
+//--------------------------------------------------------------------------
+
+#define FCIDM_SHVIEWFIRST 0x0000
+#define FCIDM_SHVIEWLAST 0x7fff
+#define FCIDM_BROWSERFIRST 0xa000
+#define FCIDM_BROWSERLAST 0xbf00
+#define FCIDM_GLOBALFIRST 0x8000
+#define FCIDM_GLOBALLAST 0x9fff
+
+//
+// Global submenu IDs and separator IDs
+//
+#define FCIDM_MENU_FILE (FCIDM_GLOBALFIRST+0x0000)
+#define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
+#define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
+#define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
+#define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0)
+#define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1)
+#define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
+#define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
+#define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150)
+#define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170)
+
+//--------------------------------------------------------------------------
+// control IDs known to the view
+//--------------------------------------------------------------------------
+
+#define FCIDM_TOOLBAR (FCIDM_BROWSERFIRST + 0)
+#define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1)
+
+
+//--------------------------------------------------------------------------
+//
+// FOLDERSETTINGS
+//
+// FOLDERSETTINGS is a data structure that explorer passes from one folder
+// view to another, when the user is browsing. It calls ISV::GetCurrentInfo
+// member to get the current settings and pass it to ISV::CreateViewWindow
+// to allow the next folder view "inherit" it. These settings assumes a
+// particular UI (which the shell's folder view has), and shell extensions
+// may or may not use those settings.
+//
+//--------------------------------------------------------------------------
+
+typedef LPBYTE LPVIEWSETTINGS;
+
+// NB Bitfields.
+// FWF_DESKTOP implies FWF_TRANSPARENT/NOCLIENTEDGE/NOSCROLL
+typedef enum
+ {
+ FWF_AUTOARRANGE = 0x0001,
+ FWF_ABBREVIATEDNAMES = 0x0002,
+ FWF_SNAPTOGRID = 0x0004,
+ FWF_OWNERDATA = 0x0008,
+ FWF_BESTFITWINDOW = 0x0010,
+ FWF_DESKTOP = 0x0020,
+ FWF_SINGLESEL = 0x0040,
+ FWF_NOSUBFOLDERS = 0x0080,
+ FWF_TRANSPARENT = 0x0100,
+ FWF_NOCLIENTEDGE = 0x0200,
+ FWF_NOSCROLL = 0x0400,
+ FWF_ALIGNLEFT = 0x0800,
+ FWF_SINGLECLICKACTIVATE=0x8000 // TEMPORARY -- NO UI FOR THIS
+ } FOLDERFLAGS;
+
+typedef enum
+ {
+ FVM_ICON = 1,
+ FVM_SMALLICON = 2,
+ FVM_LIST = 3,
+ FVM_DETAILS = 4,
+ } FOLDERVIEWMODE;
+
+typedef struct
+ {
+ UINT ViewMode; // View mode (FOLDERVIEWMODE values)
+ UINT fFlags; // View options (FOLDERFLAGS bits)
+ } FOLDERSETTINGS, *LPFOLDERSETTINGS;
+
+typedef const FOLDERSETTINGS * LPCFOLDERSETTINGS;
+
+
+//--------------------------------------------------------------------------
+//
+// Interface: IShellBrowser
+//
+// IShellBrowser interface is the interface that is provided by the shell
+// explorer/folder frame window. When it creates the "contents pane" of
+// a shell folder (which provides IShellFolder interface), it calls its
+// CreateViewObject member function to create an IShellView object. Then,
+// it calls its CreateViewWindow member to create the "contents pane"
+// window. The pointer to the IShellBrowser interface is passed to
+// the IShellView object as a parameter to this CreateViewWindow member
+// function call.
+//
+// +--------------------------+ <-- Explorer window
+// | [] Explorer |
+// |--------------------------+ IShellBrowser
+// | File Edit View .. |
+// |--------------------------|
+// | | |
+// | | <-------- Content pane
+// | | |
+// | | | IShellView
+// | | |
+// | | |
+// +--------------------------+
+//
+//
+//
+// [Member functions]
+//
+//
+// IShellBrowser::GetWindow(phwnd)
+//
+// Inherited from IOleWindow::GetWindow.
+//
+//
+// IShellBrowser::ContextSensitiveHelp(fEnterMode)
+//
+// Inherited from IOleWindow::ContextSensitiveHelp.
+//
+//
+// IShellBrowser::InsertMenusSB(hmenuShared, lpMenuWidths)
+//
+// Similar to the IOleInPlaceFrame::InsertMenus. The explorer will put
+// "File" and "Edit" pulldown in the File menu group, "View" and "Tools"
+// in the Container menu group and "Help" in the Window menu group. Each
+// pulldown menu will have a uniqu ID, FCIDM_MENU_FILE/EDIT/VIEW/TOOLS/HELP.
+// The view is allowed to insert menuitems into those sub-menus by those
+// IDs must be between FCIDM_SHVIEWFIRST and FCIDM_SHVIEWLAST.
+//
+//
+// IShellBrowser::SetMenuSB(hmenuShared, holemenu, hwndActiveObject)
+//
+// Similar to the IOleInPlaceFrame::SetMenu. The explorer ignores the
+// holemenu parameter (reserved for future enhancement) and performs
+// menu-dispatch based on the menuitem IDs (see the description above).
+// It is important to note that the explorer will add different
+// set of menuitems depending on whether the view has a focus or not.
+// Therefore, it is very important to call ISB::OnViewWindowActivate
+// whenever the view window (or its children) gets the focus.
+//
+//
+// IShellBrowser::RemoveMenusSB(hmenuShared)
+//
+// Same as the IOleInPlaceFrame::RemoveMenus.
+//
+//
+// IShellBrowser::SetStatusTextSB(lpszStatusText)
+//
+// Same as the IOleInPlaceFrame::SetStatusText. It is also possible to
+// send messages directly to the status window via SendControlMsg.
+//
+//
+// IShellBrowser::EnableModelessSB(fEnable)
+//
+// Same as the IOleInPlaceFrame::EnableModeless.
+//
+//
+// IShellBrowser::TranslateAcceleratorSB(lpmsg, wID)
+//
+// Same as the IOleInPlaceFrame::TranslateAccelerator, but will be
+// never called because we don't support EXEs (i.e., the explorer has
+// the message loop). This member function is defined here for possible
+// future enhancement.
+//
+//
+// IShellBrowser::BrowseObject(pidl, wFlags)
+//
+// The view calls this member to let shell explorer browse to another
+// folder. The pidl and wFlags specifies the folder to be browsed.
+//
+// Following three flags specifies whether it creates another window or not.
+// SBSP_SAMEBROWSER -- Browse to another folder with the same window.
+// SBSP_NEWBROWSER -- Creates another window for the specified folder.
+// SBSP_DEFBROWSER -- Default behavior (respects the view option).
+//
+// Following three flags specifies open, explore, or default mode. These .
+// are ignored if SBSP_SAMEBROWSER or (SBSP_DEFBROWSER && (single window .
+// browser || explorer)). .
+// SBSP_OPENMODE -- Use a normal folder window
+// SBSP_EXPLOREMODE -- Use an explorer window
+// SBSP_DEFMODE -- Use the same as the current window
+//
+// Following three flags specifies the pidl.
+// SBSP_ABSOLUTE -- pidl is an absolute pidl (relative from desktop)
+// SBSP_RELATIVE -- pidl is relative from the current folder.
+// SBSP_PARENT -- Browse the parent folder (ignores the pidl)
+//
+//
+// IShellBrowser::GetViewStateStream(grfMode, ppstm)
+//
+// The browser returns an IStream interface as the storage for view
+// specific state information.
+//
+// grfMode -- Specifies the read/write access (STGM_READ/WRITE/READWRITE)
+// ppstm -- Specifies the LPSTREAM variable to be filled.
+//
+//
+// IShellBrowser::GetControlWindow(id, phwnd)
+//
+// The shell view may call this member function to get the window handle
+// of Explorer controls (toolbar or status winodw -- FCW_TOOLBAR or
+// FCW_STATUS).
+//
+//
+// IShellBrowser::SendControlMsg(id, uMsg, wParam, lParam, pret)
+//
+// The shell view calls this member function to send control messages to
+// one of Explorer controls (toolbar or status window -- FCW_TOOLBAR or
+// FCW_STATUS).
+//
+//
+// IShellBrowser::QueryActiveShellView(IShellView * ppshv)
+//
+// This member returns currently activated (displayed) shellview object.
+// A shellview never need to call this member function.
+//
+//
+// IShellBrowser::OnViewWindowActive(pshv)
+//
+// The shell view window calls this member function when the view window
+// (or one of its children) got the focus. It MUST call this member before
+// calling IShellBrowser::InsertMenus, because it will insert different
+// set of menu items depending on whether the view has the focus or not.
+//
+//
+// IShellBrowser::SetToolbarItems(lpButtons, nButtons, uFlags)
+//
+// The view calls this function to add toolbar items to the exporer's
+// toolbar. "lpButtons" and "nButtons" specifies the array of toolbar
+// items. "uFlags" must be one of FCT_MERGE, FCT_CONFIGABLE, FCT_ADDTOEND.
+//
+//-------------------------------------------------------------------------
+
+#undef INTERFACE
+#define INTERFACE IShellBrowser
+
+//
+// Values for wFlags parameter of ISB::BrowseObject() member.
+//
+#define SBSP_DEFBROWSER 0x0000
+#define SBSP_SAMEBROWSER 0x0001
+#define SBSP_NEWBROWSER 0x0002
+
+#define SBSP_DEFMODE 0x0000
+#define SBSP_OPENMODE 0x0010
+#define SBSP_EXPLOREMODE 0x0020
+
+#define SBSP_ABSOLUTE 0x0000
+#define SBSP_RELATIVE 0x1000
+#define SBSP_PARENT 0x2000
+
+#define SBSP_INITIATEDBYHLINKFRAME 0x80000000
+#define SBSP_REDIRECT 0x40000000
+
+//
+// Values for id parameter of ISB::GetWindow/SendControlMsg members.
+//
+// WARNING:
+// Any shell extensions which sends messages to those control windows
+// might not work in the future version of windows. If you really need
+// to send messages to them, (1) don't assume that those control window
+// always exist (i.e. GetControlWindow may fail) and (2) verify the window
+// class of the window before sending any messages.
+//
+#define FCW_STATUS 0x0001
+#define FCW_TOOLBAR 0x0002
+#define FCW_TREE 0x0003
+
+//
+// Values for uFlags paremeter of ISB::SetToolbarItems member.
+//
+#define FCT_MERGE 0x0001
+#define FCT_CONFIGABLE 0x0002
+#define FCT_ADDTOEND 0x0004
+
+
+DECLARE_INTERFACE_(IShellBrowser, IOleWindow)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleWindow methods ***
+ STDMETHOD(GetWindow) (THIS_ HWND * lphwnd) PURE;
+ STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
+
+ // *** IShellBrowser methods *** (same as IOleInPlaceFrame)
+ STDMETHOD(InsertMenusSB) (THIS_ HMENU hmenuShared,
+ LPOLEMENUGROUPWIDTHS lpMenuWidths) PURE;
+ STDMETHOD(SetMenuSB) (THIS_ HMENU hmenuShared, HOLEMENU holemenuReserved,
+ HWND hwndActiveObject) PURE;
+ STDMETHOD(RemoveMenusSB) (THIS_ HMENU hmenuShared) PURE;
+ STDMETHOD(SetStatusTextSB) (THIS_ LPCOLESTR lpszStatusText) PURE;
+ STDMETHOD(EnableModelessSB) (THIS_ BOOL fEnable) PURE;
+ STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG lpmsg, WORD wID) PURE;
+
+ // *** IShellBrowser methods ***
+ STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST pidl, UINT wFlags) PURE;
+ STDMETHOD(GetViewStateStream)(THIS_ DWORD grfMode,
+ LPSTREAM *ppStrm) PURE;
+ STDMETHOD(GetControlWindow)(THIS_ UINT id, HWND * lphwnd) PURE;
+ STDMETHOD(SendControlMsg)(THIS_ UINT id, UINT uMsg, WPARAM wParam,
+ LPARAM lParam, LRESULT * pret) PURE;
+ STDMETHOD(QueryActiveShellView)(THIS_ struct IShellView ** ppshv) PURE;
+ STDMETHOD(OnViewWindowActive)(THIS_ struct IShellView * ppshv) PURE;
+ STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON lpButtons, UINT nButtons,
+ UINT uFlags) PURE;
+};
+
+typedef IShellBrowser * LPSHELLBROWSER;
+
+enum {
+ SBSC_HIDE = 0,
+ SBSC_SHOW = 1,
+ SBSC_TOGGLE = 2,
+ SBSC_QUERY = 3
+};
+
+// CommandTarget ids.
+enum {
+ SBCMDID_ENABLESHOWTREE,
+ SBCMDID_SHOWCONTROL, // variant vt_i4 = loword = FCW_* hiword = SBSC_*
+ SBCMDID_CANCELNAVIGATION, // cancel last navigation
+ SBCMDID_MAYSAVECHANGES, // about to close and may save changes
+ SBCMDID_SETHLINKFRAME, // variant vt_i4 = phlinkframe
+ SBCMDID_ENABLESTOP, // variant vt_bool = fEnable
+ SBCMDID_OPTIONS, // the view.options page
+};
+
+
+//-------------------------------------------------------------------------
+// ICommDlgBrowser interface
+//
+// ICommDlgBrowser interface is the interface that is provided by the new
+// common dialog window to hook and modify the behavior of IShellView. When
+// a default view is created, it queries its parent IShellBrowser for the
+// ICommDlgBrowser interface. If supported, it calls out to that interface
+// in several cases that need to behave differently in a dialog.
+//
+// Member functions:
+//
+// ICommDlgBrowser::OnDefaultCommand()
+// Called when the user double-clicks in the view or presses Enter. The
+// browser should return S_OK if it processed the action itself, S_FALSE
+// to let the view perform the default action.
+//
+// ICommDlgBrowser::OnStateChange(ULONG uChange)
+// Called when some states in the view change. 'uChange' is one of the
+// CDBOSC_* values. This call is made after the state (selection, focus,
+// etc) has changed. There is no return value.
+//
+// ICommDlgBrowser::IncludeObject(LPCITEMIDLIST pidl)
+// Called when the view is enumerating objects. 'pidl' is a relative
+// IDLIST. The browser should return S_OK to include the object in the
+// view, S_FALSE to hide it
+//
+//-------------------------------------------------------------------------
+
+#undef INTERFACE
+#define INTERFACE ICommDlgBrowser
+
+#define CDBOSC_SETFOCUS 0x00000000
+#define CDBOSC_KILLFOCUS 0x00000001
+#define CDBOSC_SELCHANGE 0x00000002
+#define CDBOSC_RENAME 0x00000003
+
+DECLARE_INTERFACE_(ICommDlgBrowser, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** ICommDlgBrowser methods ***
+ STDMETHOD(OnDefaultCommand) (THIS_ struct IShellView * ppshv) PURE;
+ STDMETHOD(OnStateChange) (THIS_ struct IShellView * ppshv,
+ ULONG uChange) PURE;
+ STDMETHOD(IncludeObject) (THIS_ struct IShellView * ppshv,
+ LPCITEMIDLIST pidl) PURE;
+};
+
+typedef ICommDlgBrowser * LPCOMMDLGBROWSER;
+
+
+//==========================================================================
+//
+// Interface: IShellView
+//
+// IShellView::GetWindow(phwnd)
+//
+// Inherited from IOleWindow::GetWindow.
+//
+//
+// IShellView::ContextSensitiveHelp(fEnterMode)
+//
+// Inherited from IOleWindow::ContextSensitiveHelp.
+//
+//
+// IShellView::TranslateAccelerator(lpmsg)
+//
+// Similar to IOleInPlaceActiveObject::TranlateAccelerator. The explorer
+// calls this function BEFORE any other translation. Returning S_OK
+// indicates that the message was translated (eaten) and should not be
+// translated or dispatched by the explorer.
+//
+//
+// IShellView::EnableModeless(fEnable)
+// Similar to IOleInPlaceActiveObject::EnableModeless.
+//
+//
+// IShellView::UIActivate(uState)
+//
+// The explorer calls this member function whenever the activation
+// state of the view window is changed by a certain event that is
+// NOT caused by the shell view itself.
+//
+// SVUIA_DEACTIVATE will be passed when the explorer is about to
+// destroy the shell view window; the shell view is supposed to remove
+// all the extended UIs (typically merged menu and modeless popup windows).
+//
+// SVUIA_ACTIVATE_NOFOCUS will be passsed when the shell view is losing
+// the input focus or the shell view has been just created without the
+// input focus; the shell view is supposed to set menuitems appropriate
+// for non-focused state (no selection specific items should be added).
+//
+// SVUIA_ACTIVATE_FOCUS will be passed when the explorer has just
+// created the view window with the input focus; the shell view is
+// supposed to set menuitems appropriate for focused state.
+//
+// SVUIA_INPLACEACTIVATE(new) will be passed when the shell view is opened
+// within an ActiveX control, which is not a UI active. In this case,
+// the shell view should not merge menus or put toolbas. To be compatible
+// with Win95 client, we don't pass this value unless the view supports
+// IShellView2.
+//
+// The shell view should not change focus within this member function.
+// The shell view should not hook the WM_KILLFOCUS message to remerge
+// menuitems. However, the shell view typically hook the WM_SETFOCUS
+// message, and re-merge the menu after calling IShellBrowser::
+// OnViewWindowActivated.
+//
+//
+// IShellView::Refresh()
+//
+// The explorer calls this member when the view needs to refresh its
+// contents (such as when the user hits F5 key).
+//
+//
+// IShellView::CreateViewWindow
+//
+// This member creates the view window (right-pane of the explorer or the
+// client window of the folder window).
+//
+//
+// IShellView::DestroyViewWindow
+//
+// This member destroys the view window.
+//
+//
+// IShellView::GetCurrentInfo
+//
+// This member returns the folder settings.
+//
+//
+// IShellView::AddPropertySHeetPages
+//
+// The explorer calls this member when it is opening the option property
+// sheet. This allows the view to add additional pages to it.
+//
+//
+// IShellView::SaveViewState()
+//
+// The explorer calls this member when the shell view is supposed to
+// store its view settings. The shell view is supposed to get a view
+// stream by calling IShellBrowser::GetViewStateStream and store the
+// current view state into that stream.
+//
+//
+// IShellView::SelectItem(pidlItem, uFlags)
+//
+// The explorer calls this member to change the selection state of
+// item(s) within the shell view window. If pidlItem is NULL and uFlags
+// is SVSI_DESELECTOTHERS, all items should be deselected.
+//
+//-------------------------------------------------------------------------
+
+#undef INTERFACE
+#define INTERFACE IShellView
+
+//
+// shellview select item flags
+//
+#define SVSI_DESELECT 0x0000
+#define SVSI_SELECT 0x0001
+#define SVSI_EDIT 0x0003 // includes select
+#define SVSI_DESELECTOTHERS 0x0004
+#define SVSI_ENSUREVISIBLE 0x0008
+#define SVSI_FOCUSED 0x0010
+
+//
+// shellview get item object flags
+//
+#define SVGIO_BACKGROUND 0x00000000
+#define SVGIO_SELECTION 0x00000001
+#define SVGIO_ALLVIEW 0x00000002
+
+//
+// uState values for IShellView::UIActivate
+//
+typedef enum {
+ SVUIA_DEACTIVATE = 0,
+ SVUIA_ACTIVATE_NOFOCUS = 1,
+ SVUIA_ACTIVATE_FOCUS = 2,
+ SVUIA_INPLACEACTIVATE = 3 // new flag for IShellView2
+} SVUIA_STATUS;
+
+DECLARE_INTERFACE_(IShellView, IOleWindow)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleWindow methods ***
+ STDMETHOD(GetWindow) (THIS_ HWND * lphwnd) PURE;
+ STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
+
+ // *** IShellView methods ***
+ STDMETHOD(TranslateAccelerator) (THIS_ LPMSG lpmsg) PURE;
+#ifdef _FIX_ENABLEMODELESS_CONFLICT
+ STDMETHOD(EnableModelessSV) (THIS_ BOOL fEnable) PURE;
+#else
+ STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE;
+#endif
+ STDMETHOD(UIActivate) (THIS_ UINT uState) PURE;
+ STDMETHOD(Refresh) (THIS) PURE;
+
+ STDMETHOD(CreateViewWindow)(THIS_ IShellView *lpPrevView,
+ LPCFOLDERSETTINGS lpfs, IShellBrowser * psb,
+ RECT * prcView, HWND *phWnd) PURE;
+ STDMETHOD(DestroyViewWindow)(THIS) PURE;
+ STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS lpfs) PURE;
+ STDMETHOD(AddPropertySheetPages)(THIS_ DWORD dwReserved,
+ LPFNADDPROPSHEETPAGE lpfn, LPARAM lparam) PURE;
+ STDMETHOD(SaveViewState)(THIS) PURE;
+ STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST pidlItem, UINT uFlags) PURE;
+ STDMETHOD(GetItemObject)(THIS_ UINT uItem, REFIID riid,
+ LPVOID *ppv) PURE;
+};
+
+typedef IShellView * LPSHELLVIEW;
+
+typedef GUID SHELLVIEWID;
+
+#define SV2GV_CURRENTVIEW ((UINT)-1)
+#define SV2GV_DEFAULTVIEW ((UINT)-2)
+
+typedef struct _SV2CVW2_PARAMS
+{
+ DWORD cbSize;
+
+ IShellView *psvPrev;
+ FOLDERSETTINGS const *pfs;
+ IShellBrowser *psbOwner;
+ RECT *prcView;
+ SHELLVIEWID const *pvid;
+
+ HWND hwndView;
+} SV2CVW2_PARAMS;
+typedef SV2CVW2_PARAMS *LPSV2CVW2_PARAMS;
+
+#undef INTERFACE
+#define INTERFACE IShellView2
+
+DECLARE_INTERFACE_(IShellView2, IShellView)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IOleWindow methods ***
+ STDMETHOD(GetWindow) (THIS_ HWND * lphwnd) PURE;
+ STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
+
+ // *** IShellView methods ***
+ STDMETHOD(TranslateAccelerator) (THIS_ LPMSG lpmsg) PURE;
+#ifdef _FIX_ENABLEMODELESS_CONFLICT
+ STDMETHOD(EnableModelessSV) (THIS_ BOOL fEnable) PURE;
+#else
+ STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE;
+#endif
+ STDMETHOD(UIActivate) (THIS_ UINT uState) PURE;
+ STDMETHOD(Refresh) (THIS) PURE;
+
+ STDMETHOD(CreateViewWindow)(THIS_ IShellView *lpPrevView,
+ LPCFOLDERSETTINGS lpfs, IShellBrowser * psb,
+ RECT * prcView, HWND *phWnd) PURE;
+ STDMETHOD(DestroyViewWindow)(THIS) PURE;
+ STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS lpfs) PURE;
+ STDMETHOD(AddPropertySheetPages)(THIS_ DWORD dwReserved,
+ LPFNADDPROPSHEETPAGE lpfn, LPARAM lparam) PURE;
+ STDMETHOD(SaveViewState)(THIS) PURE;
+ STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST pidlItem, UINT uFlags) PURE;
+ STDMETHOD(GetItemObject)(THIS_ UINT uItem, REFIID riid,
+ LPVOID *ppv) PURE;
+
+ // *** IShellView2 methods ***
+ STDMETHOD(GetView)(THIS_ SHELLVIEWID* pvid, ULONG uView) PURE;
+ STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS lpParams) PURE;
+};
+
+//-------------------------------------------------------------------------
+//
+// struct STRRET
+//
+// structure for returning strings from IShellFolder member functions
+//
+//-------------------------------------------------------------------------
+#define STRRET_WSTR 0x0000 // Use STRRET.pOleStr
+#define STRRET_OFFSET 0x0001 // Use STRRET.uOffset to Ansi
+#define STRRET_CSTR 0x0002 // Use STRRET.cStr
+
+
+typedef struct _STRRET
+{
+ UINT uType; // One of the STRRET_* values
+ union
+ {
+ LPWSTR pOleStr; // OLESTR that will be freed
+ LPSTR pStr; // ANSI string that will be freed (needed?)
+ UINT uOffset; // Offset into SHITEMID
+ char cStr[MAX_PATH]; // Buffer to fill in (ANSI)
+ } DUMMYUNIONNAME;
+} STRRET, *LPSTRRET;
+
+
+//-------------------------------------------------------------------------
+//
+// SHGetPathFromIDList
+//
+// This function assumes the size of the buffer (MAX_PATH). The pidl
+// should point to a file system object.
+//
+//-------------------------------------------------------------------------
+
+WINSHELLAPI BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST pidl, LPSTR pszPath);
+WINSHELLAPI BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath);
+
+#ifdef UNICODE
+#define SHGetPathFromIDList SHGetPathFromIDListW
+#else
+#define SHGetPathFromIDList SHGetPathFromIDListA
+#endif
+
+
+//-------------------------------------------------------------------------
+//
+// SHGetSpecialFolderLocation
+//
+// Caller should call SHFree to free the returned pidl.
+//
+//-------------------------------------------------------------------------
+//
+// registry entries for special paths are kept in :
+#define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folders")
+
+
+
+#define CSIDL_DESKTOP 0x0000
+#define CSIDL_PROGRAMS 0x0002
+#define CSIDL_CONTROLS 0x0003
+#define CSIDL_PRINTERS 0x0004
+#define CSIDL_PERSONAL 0x0005
+#define CSIDL_FAVORITES 0x0006
+#define CSIDL_STARTUP 0x0007
+#define CSIDL_RECENT 0x0008
+#define CSIDL_SENDTO 0x0009
+#define CSIDL_BITBUCKET 0x000a
+#define CSIDL_STARTMENU 0x000b
+#define CSIDL_DESKTOPDIRECTORY 0x0010
+#define CSIDL_DRIVES 0x0011
+#define CSIDL_NETWORK 0x0012
+#define CSIDL_NETHOOD 0x0013
+#define CSIDL_FONTS 0x0014
+#define CSIDL_TEMPLATES 0x0015
+#define CSIDL_COMMON_STARTMENU 0x0016
+#define CSIDL_COMMON_PROGRAMS 0X0017
+#define CSIDL_COMMON_STARTUP 0x0018
+#define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019
+#define CSIDL_APPDATA 0x001a
+#define CSIDL_PRINTHOOD 0x001b
+
+WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST * ppidl);
+
+//-------------------------------------------------------------------------
+//
+// SHBrowseForFolder API
+//
+//-------------------------------------------------------------------------
+
+typedef int (CALLBACK* BFFCALLBACK)(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
+
+typedef struct _browseinfoA {
+ HWND hwndOwner;
+ LPCITEMIDLIST pidlRoot;
+ LPSTR pszDisplayName;// Return display name of item selected.
+ LPCSTR lpszTitle; // text to go in the banner over the tree.
+ UINT ulFlags; // Flags that control the return stuff
+ BFFCALLBACK lpfn;
+ LPARAM lParam; // extra info that's passed back in callbacks
+
+ int iImage; // output var: where to return the Image index.
+} BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA;
+
+typedef struct _browseinfoW {
+ HWND hwndOwner;
+ LPCITEMIDLIST pidlRoot;
+ LPWSTR pszDisplayName;// Return display name of item selected.
+ LPCWSTR lpszTitle; // text to go in the banner over the tree.
+ UINT ulFlags; // Flags that control the return stuff
+ BFFCALLBACK lpfn;
+ LPARAM lParam; // extra info that's passed back in callbacks
+
+ int iImage; // output var: where to return the Image index.
+} BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW;
+
+#ifdef UNICODE
+#define BROWSEINFO BROWSEINFOW
+#define PBROWSEINFO PBROWSEINFOW
+#define LPBROWSEINFO LPBROWSEINFOW
+#else
+#define BROWSEINFO BROWSEINFOA
+#define PBROWSEINFO PBROWSEINFOA
+#define LPBROWSEINFO LPBROWSEINFOA
+#endif
+
+// Browsing for directory.
+#define BIF_RETURNONLYFSDIRS 0x0001 // For finding a folder to start document searching
+#define BIF_DONTGOBELOWDOMAIN 0x0002 // For starting the Find Computer
+#define BIF_STATUSTEXT 0x0004
+#define BIF_RETURNFSANCESTORS 0x0008
+
+#define BIF_BROWSEFORCOMPUTER 0x1000 // Browsing for Computers.
+#define BIF_BROWSEFORPRINTER 0x2000 // Browsing for Printers
+#define BIF_BROWSEINCLUDEFILES 0x4000 // Browsing for Everything
+
+// message from browser
+#define BFFM_INITIALIZED 1
+#define BFFM_SELCHANGED 2
+
+// messages to browser
+#define BFFM_SETSTATUSTEXTA (WM_USER + 100)
+#define BFFM_ENABLEOK (WM_USER + 101)
+#define BFFM_SETSELECTIONA (WM_USER + 102)
+#define BFFM_SETSELECTIONW (WM_USER + 103)
+#define BFFM_SETSTATUSTEXTW (WM_USER + 104)
+
+
+WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolderA(LPBROWSEINFOA lpbi);
+WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi);
+
+#ifdef UNICODE
+#define SHBrowseForFolder SHBrowseForFolderW
+#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTW
+#define BFFM_SETSELECTION BFFM_SETSELECTIONW
+#else
+#define SHBrowseForFolder SHBrowseForFolderA
+#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTA
+#define BFFM_SETSELECTION BFFM_SETSELECTIONA
+#endif
+
+//-------------------------------------------------------------------------
+//
+// SHLoadInProc
+//
+// When this function is called, the shell calls CoCreateInstance
+// (or equivalent) with CLSCTX_INPROC_SERVER and the specified CLSID
+// from within the shell's process and release it immediately.
+//
+//-------------------------------------------------------------------------
+
+WINSHELLAPI HRESULT WINAPI SHLoadInProc(REFCLSID rclsid);
+
+
+//-------------------------------------------------------------------------
+//
+// IEnumIDList interface
+//
+// IShellFolder::EnumObjects member returns an IEnumIDList object.
+//
+//-------------------------------------------------------------------------
+
+typedef struct IEnumIDList *LPENUMIDLIST;
+
+#undef INTERFACE
+#define INTERFACE IEnumIDList
+
+DECLARE_INTERFACE_(IEnumIDList, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IEnumIDList methods ***
+ STDMETHOD(Next) (THIS_ ULONG celt,
+ LPITEMIDLIST *rgelt,
+ ULONG *pceltFetched) PURE;
+ STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
+ STDMETHOD(Reset) (THIS) PURE;
+ STDMETHOD(Clone) (THIS_ IEnumIDList **ppenum) PURE;
+};
+
+
+//-------------------------------------------------------------------------
+//
+// IShellFolder interface
+//
+//
+// [Member functions]
+//
+// IShellFolder::BindToObject(pidl, pbc, riid, ppvOut)
+// This function returns an instance of a sub-folder which is specified
+// by the IDList (pidl).
+//
+// IShellFolder::BindToStorage(pidl, pbc, riid, ppvObj)
+// This function returns a storage instance of a sub-folder which is
+// specified by the IDList (pidl). The shell never calls this member
+// function in the first release of Win95.
+//
+// IShellFolder::CompareIDs(lParam, pidl1, pidl2)
+// This function compares two IDLists and returns the result. The shell
+// explorer always passes 0 as lParam, which indicates "sort by name".
+// It should return 0 (as CODE of the scode), if two id indicates the
+// same object; negative value if pidl1 should be placed before pidl2;
+// positive value if pidl2 should be placed before pidl1.
+//
+// IShellFolder::CreateViewObject(hwndOwner, riid, ppvOut)
+// This function creates a view object of the folder itself. The view
+// object is a difference instance from the shell folder object.
+// "hwndOwner" can be used as the owner window of its dialog box or
+// menu during the lifetime of the view object.
+// instance which has only one reference count. The explorer may create
+// more than one instances of view object from one shell folder object
+// and treat them as separate instances.
+//
+// IShellFolder::GetAttributesOf(cidl, apidl, prgfInOut)
+// This function returns the attributes of specified objects in that
+// folder. "cidl" and "apidl" specifies objects. "apidl" contains only
+// simple IDLists. The explorer initializes *prgfInOut with a set of
+// flags to be evaluated. The shell folder may optimize the operation
+// by not returning unspecified flags.
+//
+// IShellFolder::GetUIObjectOf(hwndOwner, cidl, apidl, riid, prgfInOut, ppvOut)
+// This function creates a UI object to be used for specified objects.
+// The shell explorer passes either IID_IDataObject (for transfer operation)
+// or IID_IContextMenu (for context menu operation) as riid.
+//
+// IShellFolder::GetDisplayNameOf
+// This function returns the display name of the specified object.
+// If the ID contains the display name (in the locale character set),
+// it returns the offset to the name. Otherwise, it returns a pointer
+// to the display name string (UNICODE), which is allocated by the
+// task allocator, or fills in a buffer.
+//
+// IShellFolder::SetNameOf
+// This function sets the display name of the specified object.
+// If it changes the ID as well, it returns the new ID which is
+// alocated by the task allocator.
+//
+//-------------------------------------------------------------------------
+
+#undef INTERFACE
+#define INTERFACE IShellFolder
+
+// IShellFolder::GetDisplayNameOf/SetNameOf uFlags
+typedef enum tagSHGDN
+{
+ SHGDN_NORMAL = 0, // default (display purpose)
+ SHGDN_INFOLDER = 1, // displayed under a folder (relative)
+ SHGDN_FORADDRESSBAR = 0x4000, // for displaying in the address (drives dropdown) bar
+ SHGDN_FORPARSING = 0x8000, // for ParseDisplayName or path
+} SHGNO;
+
+// IShellFolder::EnumObjects
+typedef enum tagSHCONTF
+{
+ SHCONTF_FOLDERS = 32, // for shell browser
+ SHCONTF_NONFOLDERS = 64, // for default view
+ SHCONTF_INCLUDEHIDDEN = 128, // for hidden/system objects
+} SHCONTF;
+
+// IShellFolder::GetAttributesOf flags
+#define SFGAO_CANCOPY DROPEFFECT_COPY // Objects can be copied
+#define SFGAO_CANMOVE DROPEFFECT_MOVE // Objects can be moved
+#define SFGAO_CANLINK DROPEFFECT_LINK // Objects can be linked
+#define SFGAO_CANRENAME 0x00000010L // Objects can be renamed
+#define SFGAO_CANDELETE 0x00000020L // Objects can be deleted
+#define SFGAO_HASPROPSHEET 0x00000040L // Objects have property sheets
+#define SFGAO_DROPTARGET 0x00000100L // Objects are drop target
+#define SFGAO_CAPABILITYMASK 0x00000177L
+#define SFGAO_LINK 0x00010000L // Shortcut (link)
+#define SFGAO_SHARE 0x00020000L // shared
+#define SFGAO_READONLY 0x00040000L // read-only
+#define SFGAO_GHOSTED 0x00080000L // ghosted icon
+#define SFGAO_DISPLAYATTRMASK 0x000F0000L
+#define SFGAO_FILESYSANCESTOR 0x10000000L // It contains file system folder
+#define SFGAO_FOLDER 0x20000000L // It's a folder.
+#define SFGAO_FILESYSTEM 0x40000000L // is a file system thing (file/folder/root)
+#define SFGAO_HASSUBFOLDER 0x80000000L // Expandable in the map pane
+#define SFGAO_CONTENTSMASK 0x80000000L
+#define SFGAO_VALIDATE 0x01000000L // invalidate cached information
+#define SFGAO_REMOVABLE 0x02000000L // is this removeable media?
+#define SFGAO_COMPRESSED 0x04000000L // Object is compressed (use alt color)
+
+DECLARE_INTERFACE_(IShellFolder, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IShellFolder methods ***
+ STDMETHOD(ParseDisplayName) (THIS_ HWND hwndOwner,
+ LPBC pbcReserved, LPOLESTR lpszDisplayName,
+ ULONG * pchEaten, LPITEMIDLIST * ppidl, ULONG *pdwAttributes) PURE;
+
+ STDMETHOD(EnumObjects) ( THIS_ HWND hwndOwner, DWORD grfFlags, LPENUMIDLIST * ppenumIDList) PURE;
+
+ STDMETHOD(BindToObject) (THIS_ LPCITEMIDLIST pidl, LPBC pbcReserved,
+ REFIID riid, LPVOID * ppvOut) PURE;
+ STDMETHOD(BindToStorage) (THIS_ LPCITEMIDLIST pidl, LPBC pbcReserved,
+ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD(CompareIDs) (THIS_ LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) PURE;
+ STDMETHOD(CreateViewObject) (THIS_ HWND hwndOwner, REFIID riid, LPVOID * ppvOut) PURE;
+ STDMETHOD(GetAttributesOf) (THIS_ UINT cidl, LPCITEMIDLIST * apidl,
+ ULONG * rgfInOut) PURE;
+ STDMETHOD(GetUIObjectOf) (THIS_ HWND hwndOwner, UINT cidl, LPCITEMIDLIST * apidl,
+ REFIID riid, UINT * prgfInOut, LPVOID * ppvOut) PURE;
+ STDMETHOD(GetDisplayNameOf) (THIS_ LPCITEMIDLIST pidl, DWORD uFlags, LPSTRRET lpName) PURE;
+ STDMETHOD(SetNameOf) (THIS_ HWND hwndOwner, LPCITEMIDLIST pidl,
+ LPCOLESTR lpszName, DWORD uFlags,
+ LPITEMIDLIST * ppidlOut) PURE;
+};
+
+typedef IShellFolder * LPSHELLFOLDER;
+
+//
+// Helper function which returns a IShellFolder interface to the desktop
+// folder. This is equivalent to call CoCreateInstance with CLSID_ShellDesktop.
+//
+// CoCreateInstance(CLSID_Desktop, NULL,
+// CLSCTX_INPROC, IID_IShellFolder, &pshf);
+//
+WINSHELLAPI HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER *ppshf);
+
+
+
+
+//==========================================================================
+// Clipboard format which may be supported by IDataObject from system
+// defined shell folders (such as directories, network, ...).
+//==========================================================================
+
+#define CFSTR_SHELLIDLIST TEXT("Shell IDList Array") // CF_IDLIST
+#define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets") // CF_OBJECTPOSITIONS
+#define CFSTR_NETRESOURCES TEXT("Net Resource") // CF_NETRESOURCE
+#define CFSTR_FILEDESCRIPTORA TEXT("FileGroupDescriptor") // CF_FILEGROUPDESCRIPTORA
+#define CFSTR_FILEDESCRIPTORW TEXT("FileGroupDescriptorW") // CF_FILEGROUPDESCRIPTORW
+#define CFSTR_FILECONTENTS TEXT("FileContents") // CF_FILECONTENTS
+#define CFSTR_FILENAMEA TEXT("FileName") // CF_FILENAMEA
+#define CFSTR_FILENAMEW TEXT("FileNameW") // CF_FILENAMEW
+#define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName") // CF_PRINTERS
+#define CFSTR_FILENAMEMAPA TEXT("FileNameMap") // CF_FILENAMEMAPA
+#define CFSTR_FILENAMEMAPW TEXT("FileNameMapW") // CF_FILENAMEMAPW
+#define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect")
+
+#ifdef UNICODE
+#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORW
+#define CFSTR_FILENAME CFSTR_FILENAMEW
+#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPW
+#else
+#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORA
+#define CFSTR_FILENAME CFSTR_FILENAMEA
+#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPA
+#endif
+
+//
+// CF_OBJECTPOSITIONS
+//
+//
+
+
+
+#define DVASPECT_SHORTNAME 2 // use for CF_HDROP to get short name version
+//
+// format of CF_NETRESOURCE
+//
+typedef struct _NRESARRAY { // anr
+ UINT cItems;
+ NETRESOURCE nr[1];
+} NRESARRAY, * LPNRESARRAY;
+
+//
+// format of CF_IDLIST
+//
+typedef struct _IDA {
+ UINT cidl; // number of relative IDList
+ UINT aoffset[1]; // [0]: folder IDList, [1]-[cidl]: item IDList
+} CIDA, * LPIDA;
+
+//
+// FILEDESCRIPTOR.dwFlags field indicate which fields are to be used
+//
+typedef enum {
+ FD_CLSID = 0x0001,
+ FD_SIZEPOINT = 0x0002,
+ FD_ATTRIBUTES = 0x0004,
+ FD_CREATETIME = 0x0008,
+ FD_ACCESSTIME = 0x0010,
+ FD_WRITESTIME = 0x0020,
+ FD_FILESIZE = 0x0040,
+ FD_LINKUI = 0x8000, // 'link' UI is prefered
+} FD_FLAGS;
+
+typedef struct _FILEDESCRIPTORA { // fod
+ DWORD dwFlags;
+
+ CLSID clsid;
+ SIZEL sizel;
+ POINTL pointl;
+
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+ CHAR cFileName[ MAX_PATH ];
+} FILEDESCRIPTORA, *LPFILEDESCRIPTORA;
+
+typedef struct _FILEDESCRIPTORW { // fod
+ DWORD dwFlags;
+
+ CLSID clsid;
+ SIZEL sizel;
+ POINTL pointl;
+
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+ WCHAR cFileName[ MAX_PATH ];
+} FILEDESCRIPTORW, *LPFILEDESCRIPTORW;
+
+#ifdef UNICODE
+#define FILEDESCRIPTOR FILEDESCRIPTORW
+#define LPFILEDESCRIPTOR LPFILEDESCRIPTORW
+#else
+#define FILEDESCRIPTOR FILEDESCRIPTORA
+#define LPFILEDESCRIPTOR LPFILEDESCRIPTORA
+#endif
+
+//
+// format of CF_FILEGROUPDESCRIPTOR
+//
+typedef struct _FILEGROUPDESCRIPTORA { // fgd
+ UINT cItems;
+ FILEDESCRIPTORA fgd[1];
+} FILEGROUPDESCRIPTORA, * LPFILEGROUPDESCRIPTORA;
+
+typedef struct _FILEGROUPDESCRIPTORW { // fgd
+ UINT cItems;
+ FILEDESCRIPTORW fgd[1];
+} FILEGROUPDESCRIPTORW, * LPFILEGROUPDESCRIPTORW;
+
+#ifdef UNICODE
+#define FILEGROUPDESCRIPTOR FILEGROUPDESCRIPTORW
+#define LPFILEGROUPDESCRIPTOR LPFILEGROUPDESCRIPTORW
+#else
+#define FILEGROUPDESCRIPTOR FILEGROUPDESCRIPTORA
+#define LPFILEGROUPDESCRIPTOR LPFILEGROUPDESCRIPTORA
+#endif
+
+//
+// format of CF_HDROP and CF_PRINTERS, in the HDROP case the data that follows
+// is a double null terinated list of file names, for printers they are printer
+// friendly names
+//
+typedef struct _DROPFILES {
+ DWORD pFiles; // offset of file list
+ POINT pt; // drop point (client coords)
+ BOOL fNC; // is it on NonClient area
+ // and pt is in screen coords
+ BOOL fWide; // WIDE character switch
+} DROPFILES, FAR * LPDROPFILES;
+
+
+//====== File System Notification APIs ===============================
+//
+
+
+
+//
+// File System Notification flags
+//
+
+
+
+#define SHCNE_RENAMEITEM 0x00000001L
+#define SHCNE_CREATE 0x00000002L
+#define SHCNE_DELETE 0x00000004L
+#define SHCNE_MKDIR 0x00000008L
+#define SHCNE_RMDIR 0x00000010L
+#define SHCNE_MEDIAINSERTED 0x00000020L
+#define SHCNE_MEDIAREMOVED 0x00000040L
+#define SHCNE_DRIVEREMOVED 0x00000080L
+#define SHCNE_DRIVEADD 0x00000100L
+#define SHCNE_NETSHARE 0x00000200L
+#define SHCNE_NETUNSHARE 0x00000400L
+#define SHCNE_ATTRIBUTES 0x00000800L
+#define SHCNE_UPDATEDIR 0x00001000L
+#define SHCNE_UPDATEITEM 0x00002000L
+#define SHCNE_SERVERDISCONNECT 0x00004000L
+#define SHCNE_UPDATEIMAGE 0x00008000L
+#define SHCNE_DRIVEADDGUI 0x00010000L
+#define SHCNE_RENAMEFOLDER 0x00020000L
+#define SHCNE_FREESPACE 0x00040000L
+#define SHCNE_EXTENDED_EVENT 0x00080000L // Extended Event.
+
+#define SHCNE_ASSOCCHANGED 0x08000000L
+
+#define SHCNE_DISKEVENTS 0x0002381FL
+#define SHCNE_GLOBALEVENTS 0x0C0D81E0L // Events that dont match pidls first
+#define SHCNE_ALLEVENTS 0x7FFFFFFFL
+#define SHCNE_INTERRUPT 0x80000000L // The presence of this flag indicates
+ // that the event was generated by an
+ // interrupt. It is stripped out before
+ // the clients of SHCNNotify_ see it.
+
+#define SHCNEE_THEMECHANGED 0x00000001L // The theme changed
+
+
+// Flags
+// uFlags & SHCNF_TYPE is an ID which indicates what dwItem1 and dwItem2 mean
+#define SHCNF_IDLIST 0x0000 // LPITEMIDLIST
+#define SHCNF_PATHA 0x0001 // path name
+#define SHCNF_PRINTERA 0x0002 // printer friendly name
+#define SHCNF_DWORD 0x0003 // DWORD
+#define SHCNF_PATHW 0x0005 // path name
+#define SHCNF_PRINTERW 0x0006 // printer friendly name
+#define SHCNF_TYPE 0x00FF
+#define SHCNF_FLUSH 0x1000
+#define SHCNF_FLUSHNOWAIT 0x2000
+
+#ifdef UNICODE
+#define SHCNF_PATH SHCNF_PATHW
+#define SHCNF_PRINTER SHCNF_PRINTERW
+#else
+#define SHCNF_PATH SHCNF_PATHA
+#define SHCNF_PRINTER SHCNF_PRINTERA
+#endif
+
+
+
+//
+// APIs
+//
+WINSHELLAPI void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags,
+ LPCVOID dwItem1, LPCVOID dwItem2);
+
+//
+// SHAddToRecentDocs
+//
+#define SHARD_PIDL 0x00000001L
+#define SHARD_PATHA 0x00000002L
+#define SHARD_PATHW 0x00000003L
+
+#ifdef UNICODE
+#define SHARD_PATH SHARD_PATHW
+#else
+#define SHARD_PATH SHARD_PATHA
+#endif
+
+WINSHELLAPI void WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv);
+
+
+
+
+WINSHELLAPI HRESULT WINAPI SHGetInstanceExplorer(IUnknown **ppunk);
+
+//
+// SHGetDataFromIDListA/W
+//
+#define SHGDFIL_FINDDATA 1
+#define SHGDFIL_NETRESOURCE 2
+#define SHGDFIL_DESCRIPTIONID 3
+
+#define SHDID_ROOT_REGITEM 1
+#define SHDID_FS_FILE 2
+#define SHDID_FS_DIRECTORY 3
+#define SHDID_FS_OTHER 4
+#define SHDID_COMPUTER_DRIVE35 5
+#define SHDID_COMPUTER_DRIVE525 6
+#define SHDID_COMPUTER_REMOVABLE 7
+#define SHDID_COMPUTER_FIXED 8
+#define SHDID_COMPUTER_NETDRIVE 9
+#define SHDID_COMPUTER_CDROM 10
+#define SHDID_COMPUTER_RAMDISK 11
+#define SHDID_COMPUTER_OTHER 12
+#define SHDID_NET_DOMAIN 13
+#define SHDID_NET_SERVER 14
+#define SHDID_NET_SHARE 15
+#define SHDID_NET_RESTOFNET 16
+#define SHDID_NET_OTHER 17
+
+typedef struct _SHDESCRIPTIONID {
+ DWORD dwDescriptionId;
+ CLSID clsid;
+} SHDESCRIPTIONID, *LPSHDESCRIPTIONID;
+
+WINSHELLAPI HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl,
+ int nFormat, PVOID pv, int cb);
+WINSHELLAPI HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl,
+ int nFormat, PVOID pv, int cb);
+
+#ifdef UNICODE
+#define SHGetDataFromIDList SHGetDataFromIDListW
+#else
+#define SHGetDataFromIDList SHGetDataFromIDListA
+#endif
+
+#ifdef __cplusplus
+}
+
+#endif /* __cplusplus */
+
+#ifndef RC_INVOKED
+#pragma pack()
+#endif /* !RC_INVOKED */
+
+#endif // _SHLOBJ_H_
diff --git a/public/sdk/inc/shlwapi.h b/public/sdk/inc/shlwapi.h
new file mode 100644
index 000000000..94fec5a0b
--- /dev/null
+++ b/public/sdk/inc/shlwapi.h
@@ -0,0 +1,196 @@
+/*****************************************************************************\
+* *
+* shlwapi.h - Interface for the Windows light-weight utility APIs *
+* *
+* Version 1.0 *
+* *
+* Copyright (c) 1991-1996, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+
+#ifndef _INC_SHLWAPI
+#define _INC_SHLWAPI
+
+#ifndef NOSHLWAPI
+
+
+#include <objbase.h>
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+#ifndef WINSHLWAPI
+#if !defined(_SHLWAPI_)
+#define LWSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
+#define LWSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
+#else
+#define LWSTDAPI STDAPI
+#define LWSTDAPI_(type) STDAPI_(type)
+#endif
+#endif // WINSHLWAPI
+
+#ifdef _WIN32
+#include <pshpack1.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+//
+// Users of this header may define any number of these constants to avoid
+// the definitions of each functional group.
+//
+// NO_SHLWAPI_STRFCNS String functions
+
+
+#ifndef NO_SHLWAPI_STRFCNS
+//
+//=============== String Routines ===================================
+//
+
+LWSTDAPI_(LPSTR) StrChrA(LPCSTR lpStart, WORD wMatch);
+LWSTDAPI_(LPWSTR) StrChrW(LPCWSTR lpStart, WORD wMatch);
+LWSTDAPI_(LPSTR) StrRChrA(LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch);
+LWSTDAPI_(LPWSTR) StrRChrW(LPCWSTR lpStart, LPCWSTR lpEnd, WORD wMatch);
+LWSTDAPI_(LPSTR) StrChrIA(LPCSTR lpStart, WORD wMatch);
+LWSTDAPI_(LPWSTR) StrChrIW(LPCWSTR lpStart, WORD wMatch);
+LWSTDAPI_(LPSTR) StrRChrIA(LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch);
+LWSTDAPI_(LPWSTR) StrRChrIW(LPCWSTR lpStart, LPCWSTR lpEnd, WORD wMatch);
+LWSTDAPI_(int) StrCmpNA(LPCSTR lpStr1, LPCSTR lpStr2, int nChar);
+LWSTDAPI_(int) StrCmpNW(LPCWSTR lpStr1, LPCWSTR lpStr2, int nChar);
+LWSTDAPI_(int) StrCmpNIA(LPCSTR lpStr1, LPCSTR lpStr2, int nChar);
+LWSTDAPI_(int) StrCmpNIW(LPCWSTR lpStr1, LPCWSTR lpStr2, int nChar);
+LWSTDAPI_(LPSTR) StrStrA(LPCSTR lpFirst, LPCSTR lpSrch);
+LWSTDAPI_(LPWSTR) StrStrW(LPCWSTR lpFirst, LPCWSTR lpSrch);
+LWSTDAPI_(int) StrCmpW(LPCWSTR psz1, LPCWSTR psz2);
+LWSTDAPI_(LPWSTR) StrCpyW(LPWSTR psz1, LPCWSTR psz2);
+LWSTDAPI_(LPSTR) StrRStr(LPCSTR lpSource, LPCSTR lpLast, LPCSTR lpSrch);
+LWSTDAPI_(LPSTR) StrStrIA(LPCSTR lpFirst, LPCSTR lpSrch);
+LWSTDAPI_(LPWSTR) StrStrIW(LPCWSTR lpFirst, LPCWSTR lpSrch);
+LWSTDAPI_(LPWSTR) StrDupW(LPCWSTR lpSrch);
+LWSTDAPI_(LPSTR) StrDupA(LPCSTR lpSrch);
+LWSTDAPI_(LPSTR) StrRStrIA(LPCSTR lpSource, LPCSTR lpLast, LPCSTR lpSrch);
+LWSTDAPI_(LPWSTR) StrRStrIW(LPCWSTR lpSource, LPCWSTR lpLast, LPCWSTR lpSrch);
+LWSTDAPI_(int) StrCSpnA(LPCSTR lpStr, LPCSTR lpSet);
+LWSTDAPI_(int) StrCSpnW(LPCWSTR lpStr, LPCWSTR lpSet);
+LWSTDAPI_(int) StrCSpnIA(LPCSTR lpStr, LPCSTR lpSet);
+LWSTDAPI_(int) StrCSpnIW(LPCWSTR lpStr, LPCWSTR lpSet);
+LWSTDAPI_(int) StrSpnW(LPCWSTR psz, LPCWSTR pszSet);
+LWSTDAPI_(int) StrSpnA(LPCSTR psz, LPCSTR pszSet);
+LWSTDAPI_(int) StrToIntA(LPCSTR lpSrc);
+LWSTDAPI_(int) StrToIntW(LPCWSTR lpSrc);
+LWSTDAPI_(LPSTR) StrPBrkA(LPCSTR psz, LPCSTR pszSet);
+LWSTDAPI_(LPWSTR) StrPBrkW(LPCWSTR psz, LPCWSTR pszSet);
+
+LWSTDAPI_(BOOL) StrToIntExA(LPCSTR pszString, DWORD dwFlags, int FAR * piRet);
+LWSTDAPI_(BOOL) StrToIntExW(LPCWSTR pszString, DWORD dwFlags, int FAR * piRet);
+LWSTDAPI_(int) StrFromTimeIntervalW(LPWSTR pwszOut, UINT cchMax, DWORD dwTimeMS, int digits);
+LWSTDAPI_(int) StrFromTimeIntervalA(LPSTR pszOut, UINT cchMax, DWORD dwTimeMS, int digits);
+
+LWSTDAPI_(BOOL) IntlStrEqWorkerA(BOOL fCaseSens, LPCSTR lpString1, LPCSTR lpString2, int nChar);
+LWSTDAPI_(BOOL) IntlStrEqWorkerW(BOOL fCaseSens, LPCWSTR lpString1, LPCWSTR lpString2, int nChar);
+
+#define IntlStrEqNA( s1, s2, nChar) IntlStrEqWorkerA( TRUE, s1, s2, nChar)
+#define IntlStrEqNIA(s1, s2, nChar) IntlStrEqWorkerA(FALSE, s1, s2, nChar)
+
+#define IntlStrEqNW( s1, s2, nChar) IntlStrEqWorkerW( TRUE, s1, s2, nChar)
+#define IntlStrEqNIW(s1, s2, nChar) IntlStrEqWorkerW(FALSE, s1, s2, nChar)
+
+// Flags for StrToIntEx
+#define STIF_DEFAULT 0x00000000L
+#define STIF_SUPPORT_HEX 0x00000001L
+
+
+#ifdef UNICODE
+#define StrSpn StrSpnW
+#define StrPBrk StrPBrkW
+#define StrToIntEx StrToIntExW
+#define StrToInt StrToIntW
+#define StrChr StrChrW
+#define StrRChr StrRChrW
+#define StrChrI StrChrIW
+#define StrRChrI StrRChrIW
+#define StrCSpn StrCSpnW
+#define StrCSpnI StrCSpnIW
+#define StrCmpN StrCmpNW
+#define StrCmpNI StrCmpNIW
+#define StrStr StrStrW
+#define StrStrI StrStrIW
+#define StrRStrI StrRStrIW
+#define StrDup StrDupW
+#define StrCmp StrCmpW
+#define StrFromTimeInterval StrFromTimeIntervalW
+#define IntlStrEqN IntlStrEqNW
+#define IntlStrEqNI IntlStrEqNIW
+#else
+#define StrSpn StrSpnA
+#define StrPBrk StrPBrkA
+#define StrToIntEx StrToIntExA
+#define StrToInt StrToIntA
+#define StrChr StrChrA
+#define StrRChr StrRChrA
+#define StrChrI StrChrIA
+#define StrRChrI StrRChrIA
+#define StrCSpn StrCSpnA
+#define StrCSpnI StrCSpnIA
+#define StrCmpN StrCmpNA
+#define StrCmpNI StrCmpNIA
+#define StrStr StrStrA
+#define StrStrI StrStrIA
+#define StrRStrI StrRStrIA
+#define StrDup StrDupA
+#define StrFromTimeInterval StrFromTimeIntervalA
+#define IntlStrEqN IntlStrEqNA
+#define IntlStrEqNI IntlStrEqNIA
+#endif
+
+#define StrToLong StrToInt
+#define StrNCmp StrCmpN
+#define StrNCmpI StrCmpNI
+#define StrNCpy lstrcpyn
+#define StrCpyN lstrcpyn
+
+#endif // NO_SHLWAPI_STRFCNS
+
+
+//
+//====== DllGetVersion =======================================================
+//
+
+typedef struct _DllVersionInfo
+{
+ DWORD cbSize;
+ DWORD dwMajorVersion; // Major version
+ DWORD dwMinorVersion; // Minor version
+ DWORD dwBuildNumber; // Build number
+ DWORD dwPlatformID; // DLLVER_PLATFORM_*
+} DLLVERSIONINFO;
+
+// Platform IDs for DLLVERSIONINFO
+#define DLLVER_PLATFORM_WINDOWS 0x00000001 // Windows 95
+#define DLLVER_PLATFORM_NT 0x00000002 // Windows NT
+
+//
+// The caller should always GetProcAddress("DllGetVersion"), not
+// implicitly link to it.
+//
+
+typedef HRESULT (CALLBACK* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef _WIN32
+#include <poppack.h>
+#endif
+
+#endif
+
+
+#endif // _INC_SHLWAPI
diff --git a/public/sdk/inc/sifmt.h b/public/sdk/inc/sifmt.h
new file mode 100644
index 000000000..f18cd4e28
--- /dev/null
+++ b/public/sdk/inc/sifmt.h
@@ -0,0 +1,29 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: sifmt.h
+//
+// Declarations of the SummaryInformation Property Set Format IDs.
+//
+//--------------------------------------------------------------------------
+
+#ifndef __SIFMT_H__
+#define __SIFMT_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+extern const FMTID FMTID_SummaryInformation;
+extern const FMTID FMTID_DocSummaryInformation;
+extern const FMTID FMTID_UserDefinedProperties;
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // __SIFMT_H__
diff --git a/public/sdk/inc/sift.hxx b/public/sdk/inc/sift.hxx
new file mode 100644
index 000000000..c933dea2e
--- /dev/null
+++ b/public/sdk/inc/sift.hxx
@@ -0,0 +1,71 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: sift.hxx
+//
+// Contents: Definition of server side sift object
+//
+// Classes: ISift - sifting interface
+//
+// Functions: DbgDllSetSiftObject - sets the global sift pointer
+//
+// History: 6-01-94 t-chripi Created
+//
+//----------------------------------------------------------------------------
+
+#ifndef __SIFT_HXX__
+
+#define __SIFT_HXX__
+
+// Sift Resource types:
+
+#define SR_PRIVATE_MEMORY 1
+#define SR_PUBLIC_MEMORY 2
+#define SR_DISK_WRITE 16
+#define SR_RPC 256
+
+//+-------------------------------------------------------------
+//
+// Interface: ISift (sft)
+//
+// Purpose: Interface that defines general sift methods.
+//
+// Interface: Init - Initializes the object for each test run.
+// SiftOn - Enables the counting mechanism.
+// SiftOff - Disables the counting mechanism.
+// GetCount - Gets current allocation count.
+//
+// History: 24-May-94 t-chripi Created.
+// 6-14-94 t-chripi Generalized, moved to cinc
+//
+//--------------------------------------------------------------
+
+class ISift : public IUnknown
+{
+public:
+ virtual VOID Init(BOOL fPlay, LONG lFailCount) = 0;
+ virtual VOID SiftOn(DWORD dwResource) = 0;
+ virtual LONG SiftOff(DWORD dwResource) = 0;
+ virtual LONG GetCount(DWORD dwResource) = 0;
+ virtual BOOL SimFail(DWORD dwResource) = 0;
+
+};
+
+//+---------------------------------------------------------------------------
+//
+// Function: DbgDllSetSiftObject
+//
+// Synopsis: Sets up a sift object for use
+//
+// History: 6-14-94 t-chripi Created
+//
+//----------------------------------------------------------------------------
+
+STDAPI DbgDllSetSiftObject(ISift *psftSiftImpl);
+
+
+#endif // __SIFT_HXX__
+
+
diff --git a/public/sdk/inc/simbad.h b/public/sdk/inc/simbad.h
new file mode 100644
index 000000000..15ee25591
--- /dev/null
+++ b/public/sdk/inc/simbad.h
@@ -0,0 +1,177 @@
+/*++
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ simbad.h
+
+Abstract:
+
+ The SIMulated BAD sector utility allows a user to specify
+ bad physical sectors through the device control interface.
+ The device driver keeps an array of SIMBAD sectors and when
+ a request for a transfer includes one of these sectors the
+ driver returns the corresponding status and fails the transfer.
+
+Author:
+
+ Mike Glass (mglass) 2-Feb-1992
+ Bob Rinne (bobri)
+
+Revision History:
+
+ 09-Apr-92 - BobRi - Added specific control over errors (read,map,etc).
+ 12-May-94 - Venkat- Added code to drop of writes to DISK (CHKDSK testing)
+ 19-Nov-94 - KPeery- Added code to reset the system (restart testing)
+--*/
+
+#define MAXIMUM_SIMBAD_SECTORS 256
+
+
+//
+// This structure is used by the driver and application to
+// specify which sector is BAD and what status the driver
+// should return.
+//
+
+typedef struct _BAD_SECTOR {
+ ULONG BlockAddress;
+ ULONG AccessType;
+ NTSTATUS Status;
+} BAD_SECTOR, *PBAD_SECTOR;
+
+//
+// This structure is maintained by the device driver. It keeps a
+// count of how many sectors have been marked BAD and an array of
+// the BAD sectors.
+//
+
+typedef struct _SIMBAD_SECTORS {
+ BOOLEAN Enabled;
+ BOOLEAN Orphaned;
+ BOOLEAN RandomWriteDrop;
+ ULONG Seed;
+ BOOLEAN BugCheck;
+ BOOLEAN FirmwareReset;
+ ULONG Count;
+ BAD_SECTOR Sector[MAXIMUM_SIMBAD_SECTORS];
+} SIMBAD_SECTORS, *PSIMBAD_SECTORS;
+
+//
+// This structure is passed from the application to the device
+// driver through the device control interface to add and remove
+// bad sectors.
+//
+// If the function is add or remove sectors then the Count field
+// specifies how many sectors to add or remove.
+//
+// If the function is list sectors then the Count field returns
+// the number of sectors marked bad.
+// The bad sector array contains the sectors to add or remove
+// from the driver's array of bad sectors.
+//
+// If the function is list then the array returns all sectors
+// marked bad.
+//
+// This facility does not allow mixed adds and removes in a
+// single device control call.
+//
+// NOTE: if a request specifies a number of adds that will exceed
+// the array limit (MAXIMUM_SIMBAD_SECTORS), then sectors will be
+// added to fill the array and the count field will be adjusted to
+// the number of sectors successfully added.
+//
+
+typedef struct _SIMBAD_DATA {
+ ULONG Function;
+
+ ULONG Count;
+
+ BAD_SECTOR Sector[MAXIMUM_SIMBAD_SECTORS];
+} SIMBAD_DATA, *PSIMBAD_DATA;
+
+//
+// Simulated Bad Sector Functions
+//
+
+#define SIMBAD_ADD_SECTORS 0x00000000
+#define SIMBAD_REMOVE_SECTORS 0x00000001
+#define SIMBAD_LIST_BAD_SECTORS 0x00000002
+
+//
+// When the disable or enable function is specified,
+// the rest of the structure is ignored.
+// The SimBad function is disabled on driver startup.
+// The disable/enable status affects whether completing
+// transfers are checks against the bad sector array.
+// While the function is disabled, requests to manipulate
+// the driver's bad sector array are still allowed
+// (ie add sector, remove sector, list bad sectors).
+//
+
+#define SIMBAD_ENABLE 0x00000003
+#define SIMBAD_DISABLE 0x00000004
+
+//
+// This function cause all accesses to a driver
+// to return failure.
+//
+
+#define SIMBAD_ORPHAN 0x00000005
+
+//
+// This function clears the internal bad sector list in the driver.
+//
+
+#define SIMBAD_CLEAR 0x00000006
+
+//
+// Randomly drops of writes to the disk. Used for corrupting the DISK.
+// These corrupt disk are used to test CHKDSK.
+//
+
+#define SIMBAD_RANDOM_WRITE_FAIL 0x00000007
+
+
+//
+// Bug checks the system. Used for crash dump
+//
+
+#define SIMBAD_BUG_CHECK 0x00000008
+
+//
+// Call HalReturnToFirmware() to reset the system. Used for restart testing.
+//
+
+#define SIMBAD_FIRMWARE_RESET 0x00000009
+
+
+//
+// These are the access codes that will drive when simbad
+// returns failures on disks.
+//
+
+#define SIMBAD_ACCESS_READ 0x00000001
+#define SIMBAD_ACCESS_WRITE 0x00000002
+#define SIMBAD_ACCESS_VERIFY 0x00000004
+
+//
+// Error sector can be mapped via device control.
+//
+
+#define SIMBAD_ACCESS_CAN_REASSIGN_SECTOR 0x00000008
+
+//
+// When returning an error indicate Irp offset of zero
+// (simulates drivers that cannot tell where the error occured within
+// an I/O)
+//
+
+#define SIMBAD_ACCESS_ERROR_ZERO_OFFSET 0x00000010
+
+//
+// Fail calls to reassign bad sector IOCTL.
+//
+
+#define SIMBAD_ACCESS_FAIL_REASSIGN_SECTOR 0x00000020
diff --git a/public/sdk/inc/snmp.h b/public/sdk/inc/snmp.h
new file mode 100644
index 000000000..62c1b2b9b
--- /dev/null
+++ b/public/sdk/inc/snmp.h
@@ -0,0 +1,432 @@
+/*++
+
+Copyright (C) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ snmp.h
+
+Abstract:
+
+ Definitions for SNMP Extension Agent development.
+
+--*/
+
+#ifndef _INC_SNMP
+#define _INC_SNMP
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Additional header files //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// SNMP API return type definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMPAPI INT
+#define SNMP_FUNC_TYPE WINAPI
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// SNMP API return code definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMPAPI_NOERROR TRUE
+#define SNMPAPI_ERROR FALSE
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// SNMP API error code definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMP_MEM_ALLOC_ERROR 1
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// BER API error code definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMP_BERAPI_INVALID_LENGTH 10
+#define SNMP_BERAPI_INVALID_TAG 11
+#define SNMP_BERAPI_OVERFLOW 12
+#define SNMP_BERAPI_SHORT_BUFFER 13
+#define SNMP_BERAPI_INVALID_OBJELEM 14
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// PDU API error code definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMP_PDUAPI_UNRECOGNIZED_PDU 20
+#define SNMP_PDUAPI_INVALID_ES 21
+#define SNMP_PDUAPI_INVALID_GT 22
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// AUTH API error code definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMP_AUTHAPI_INVALID_VERSION 30
+#define SNMP_AUTHAPI_INVALID_MSG_TYPE 31
+#define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// SNMP PDU error status definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMP_ERRORSTATUS_NOERROR 0
+#define SNMP_ERRORSTATUS_TOOBIG 1
+#define SNMP_ERRORSTATUS_NOSUCHNAME 2
+#define SNMP_ERRORSTATUS_BADVALUE 3
+#define SNMP_ERRORSTATUS_READONLY 4
+#define SNMP_ERRORSTATUS_GENERR 5
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// SNMP PDU generic trap definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMP_GENERICTRAP_COLDSTART 0
+#define SNMP_GENERICTRAP_WARMSTART 1
+#define SNMP_GENERICTRAP_LINKDOWN 2
+#define SNMP_GENERICTRAP_LINKUP 3
+#define SNMP_GENERICTRAP_AUTHFAILURE 4
+#define SNMP_GENERICTRAP_EGPNEIGHLOSS 5
+#define SNMP_GENERICTRAP_ENTERSPECIFIC 6
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// BER encoding definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define ASN_UNIVERSAL 0x00
+#define ASN_APPLICATION 0x40
+#define ASN_CONTEXTSPECIFIC 0x80
+#define ASN_PRIVATE 0xC0
+
+#define ASN_PRIMATIVE 0x00
+#define ASN_CONSTRUCTOR 0x20
+
+//
+// For BER tags with a number ranging from 0 to 30 (inclusive), the
+// identifier octets consists of a single octet encoded as follows:
+//
+// 7 6 5 4 3 2 1 0
+// +---+-+---------+
+// |Cls|P| Tag Num |
+// +---+-+---------+
+//
+// where
+//
+// Cls - is the class of the tag
+//
+// 00 - universal
+// 01 - application
+// 10 - context-specific
+// 11 - private
+//
+// P - indicates whether encoding is primitive
+//
+// 0 - primitive
+// 1 - constructed
+//
+// Tag Num - is the number of the tag
+//
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// ASN.1 simple types //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define ASN_INTEGER (ASN_UNIVERSAL|ASN_PRIMATIVE|0x02)
+#define ASN_OCTETSTRING (ASN_UNIVERSAL|ASN_PRIMATIVE|0x04)
+#define ASN_NULL (ASN_UNIVERSAL|ASN_PRIMATIVE|0x05)
+#define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL|ASN_PRIMATIVE|0x06)
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// ASN.1 constructor types //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define ASN_SEQUENCE (ASN_UNIVERSAL|ASN_CONSTRUCTOR|0x10)
+#define ASN_SEQUENCEOF ASN_SEQUENCE
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// ASN.1 application specific primatives //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define ASN_RFC1155_IPADDRESS (ASN_APPLICATION|ASN_PRIMATIVE|0x00)
+#define ASN_RFC1155_COUNTER (ASN_APPLICATION|ASN_PRIMATIVE|0x01)
+#define ASN_RFC1155_GAUGE (ASN_APPLICATION|ASN_PRIMATIVE|0x02)
+#define ASN_RFC1155_TIMETICKS (ASN_APPLICATION|ASN_PRIMATIVE|0x03)
+#define ASN_RFC1155_OPAQUE (ASN_APPLICATION|ASN_PRIMATIVE|0x04)
+#define ASN_RFC1213_DISPSTRING ASN_OCTETSTRING
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// ASN.1 application specific constructors //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define ASN_RFC1157_GETREQUEST (ASN_CONTEXTSPECIFIC|ASN_CONSTRUCTOR|0x00)
+#define ASN_RFC1157_GETNEXTREQUEST (ASN_CONTEXTSPECIFIC|ASN_CONSTRUCTOR|0x01)
+#define ASN_RFC1157_GETRESPONSE (ASN_CONTEXTSPECIFIC|ASN_CONSTRUCTOR|0x02)
+#define ASN_RFC1157_SETREQUEST (ASN_CONTEXTSPECIFIC|ASN_CONSTRUCTOR|0x03)
+#define ASN_RFC1157_TRAP (ASN_CONTEXTSPECIFIC|ASN_CONSTRUCTOR|0x04)
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// SNMP ASN type definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+typedef struct {
+ BYTE * stream; // pointer to octet stream
+ UINT length; // number of octets in stream
+ BOOL dynamic; // true if octets must be freed
+} AsnOctetString;
+
+typedef struct {
+ UINT idLength; // number of integers in oid
+ UINT * ids; // pointer to integer stream
+} AsnObjectIdentifier;
+
+typedef LONG AsnInteger;
+typedef DWORD AsnCounter;
+typedef DWORD AsnGauge;
+typedef DWORD AsnTimeticks;
+
+typedef AsnOctetString AsnSequence;
+typedef AsnOctetString AsnImplicitSequence;
+typedef AsnOctetString AsnIPAddress;
+typedef AsnOctetString AsnDisplayString;
+typedef AsnOctetString AsnOpaque;
+
+typedef AsnObjectIdentifier AsnObjectName;
+typedef AsnIPAddress AsnNetworkAddress;
+
+typedef struct {
+ BYTE asnType;
+ union {
+ AsnInteger number;
+ AsnOctetString string;
+ AsnObjectIdentifier object;
+ AsnSequence sequence;
+ AsnIPAddress address;
+ AsnCounter counter;
+ AsnGauge gauge;
+ AsnTimeticks ticks;
+ AsnOpaque arbitrary;
+ } asnValue;
+} AsnAny;
+
+typedef AsnAny AsnObjectSyntax;
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// SNMP API type definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+typedef struct vb {
+ AsnObjectName name; // variable's object identifer
+ AsnObjectSyntax value; // variable's value (in asn terms)
+} RFC1157VarBind;
+
+typedef struct {
+ RFC1157VarBind * list; // array of variable bindings
+ UINT len; // number of bindings in array
+} RFC1157VarBindList;
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// SNMP API prototypes //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+SNMPAPI
+SNMP_FUNC_TYPE
+SnmpUtilOidCpy(
+ OUT AsnObjectIdentifier *DstObjId,
+ IN AsnObjectIdentifier *SrcObjId
+ );
+
+SNMPAPI
+SNMP_FUNC_TYPE
+SnmpUtilOidAppend(
+ IN OUT AsnObjectIdentifier *DstObjId,
+ IN AsnObjectIdentifier *SrcObjId
+ );
+
+SNMPAPI
+SNMP_FUNC_TYPE
+SnmpUtilOidNCmp(
+ IN AsnObjectIdentifier *ObjIdA,
+ IN AsnObjectIdentifier *ObjIdB,
+ IN UINT Len
+ );
+
+SNMPAPI
+SNMP_FUNC_TYPE
+SnmpUtilOidCmp(
+ IN AsnObjectIdentifier *ObjIdA,
+ IN AsnObjectIdentifier *ObjIdB
+ );
+
+VOID
+SNMP_FUNC_TYPE
+SnmpUtilOidFree(
+ IN OUT AsnObjectIdentifier *ObjId
+ );
+
+SNMPAPI
+SNMP_FUNC_TYPE
+SnmpUtilVarBindListCpy(
+ OUT RFC1157VarBindList *DstVarBindList,
+ IN RFC1157VarBindList *SrcVarBindList
+ );
+
+SNMPAPI
+SNMP_FUNC_TYPE
+SnmpUtilVarBindCpy(
+ OUT RFC1157VarBind *DstVarBind,
+ IN RFC1157VarBind *SrcVarBind
+ );
+
+VOID
+SNMP_FUNC_TYPE
+SnmpUtilVarBindListFree(
+ IN OUT RFC1157VarBindList *VarBindList
+ );
+
+VOID
+SNMP_FUNC_TYPE
+SnmpUtilVarBindFree(
+ IN OUT RFC1157VarBind *VarBind
+ );
+
+VOID
+SNMP_FUNC_TYPE
+SnmpUtilPrintAsnAny(
+ IN AsnAny *Any
+ );
+
+VOID
+SNMP_FUNC_TYPE
+SnmpUtilMemFree(
+ IN OUT LPVOID Addr
+ );
+
+LPVOID
+SNMP_FUNC_TYPE
+SnmpUtilMemAlloc(
+ IN UINT Size
+ );
+
+LPVOID
+SNMP_FUNC_TYPE
+SnmpUtilMemReAlloc(
+ IN LPVOID Addr,
+ IN UINT NewSize
+ );
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// SNMP debugging definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMP_LOG_SILENT 0x0
+#define SNMP_LOG_FATAL 0x1
+#define SNMP_LOG_ERROR 0x2
+#define SNMP_LOG_WARNING 0x3
+#define SNMP_LOG_TRACE 0x4
+#define SNMP_LOG_VERBOSE 0x5
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// SNMP debugging prototypes //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+VOID
+SNMP_FUNC_TYPE
+SnmpUtilDbgPrint(
+ IN INT nLogLevel, // see log levels above...
+ IN LPSTR szFormat,
+ IN ...
+ );
+
+#if DBG
+#define SNMPDBG(_x_) SnmpUtilDbgPrint _x_
+#else
+#define SNMPDBG(_x_)
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Miscellaneous definitions //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#define SNMP_MAX_OID_LEN 0x7f00 // max number of elements in oid
+
+///////////////////////////////////////////////////////////////////////////////
+// //
+// Support for old definitions (support disabled via SNMPSTRICT) //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef SNMPSTRICT
+
+#define SNMP_oidcpy SnmpUtilOidCpy
+#define SNMP_oidappend SnmpUtilOidAppend
+#define SNMP_oidncmp SnmpUtilOidNCmp
+#define SNMP_oidcmp SnmpUtilOidCmp
+#define SNMP_oidfree SnmpUtilOidFree
+
+#define SNMP_CopyVarBindList SnmpUtilVarBindListCpy
+#define SNMP_FreeVarBindList SnmpUtilVarBindListFree
+#define SNMP_CopyVarBind SnmpUtilVarBindCpy
+#define SNMP_FreeVarBind SnmpUtilVarBindFree
+
+#define SNMP_printany SnmpUtilPrintAsnAny
+
+#define SNMP_free SnmpUtilMemFree
+#define SNMP_malloc SnmpUtilMemAlloc
+#define SNMP_realloc SnmpUtilMemReAlloc
+
+#define SNMP_DBG_free SnmpUtilMemFree
+#define SNMP_DBG_malloc SnmpUtilMemAlloc
+#define SNMP_DBG_realloc SnmpUtilMemReAlloc
+
+#endif // SNMPSTRICT
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _INC_SNMP
diff --git a/public/sdk/inc/spseal.h b/public/sdk/inc/spseal.h
new file mode 100644
index 000000000..a72f637cf
--- /dev/null
+++ b/public/sdk/inc/spseal.h
@@ -0,0 +1,63 @@
+/*++
+
+Copyright (c) 1987-1994 Microsoft Corporation
+
+Module Name:
+
+ spseal.h
+
+Abstract:
+
+ This is a private header file defining function prototypes for security
+ provider encryption routines.
+
+Author:
+
+ Mike Swift (MikeSw) 18-Jul-1994
+
+Environment:
+
+ User mode only.
+ Contains NT-specific code.
+ Requires ANSI C extensions: slash-slash comments, long external names.
+ Requires security.h or sspi.h be included.
+
+Revision History:
+
+--*/
+
+#ifndef _SPSEAL_
+#define _SPSEAL_
+
+#ifdef SECURITY_DOS
+#pragma warning(disable:4147)
+#endif
+
+SECURITY_STATUS SEC_ENTRY
+SealMessage( PCtxtHandle phContext,
+ unsigned long fQOP,
+ PSecBufferDesc pMessage,
+ unsigned long MessageSeqNo);
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * SEAL_MESSAGE_FN)(
+ PCtxtHandle, unsigned long, PSecBufferDesc, unsigned long);
+
+
+SECURITY_STATUS SEC_ENTRY
+UnsealMessage( PCtxtHandle phContext,
+ PSecBufferDesc pMessage,
+ unsigned long MessageSeqNo,
+ unsigned long * pfQOP);
+
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * UNSEAL_MESSAGE_FN)(
+ PCtxtHandle, PSecBufferDesc, unsigned long,
+ unsigned long SEC_FAR *);
+
+#ifdef SECURITY_DOS
+#pragma warning(default:4147)
+#endif
+
+#endif // _SPSEAL_
diff --git a/public/sdk/inc/srvhdl.h b/public/sdk/inc/srvhdl.h
new file mode 100644
index 000000000..d135fb24d
--- /dev/null
+++ b/public/sdk/inc/srvhdl.h
@@ -0,0 +1,983 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:36:20 1996
+ */
+/* Compiler settings for srvhdl.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __srvhdl_h__
+#define __srvhdl_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IServerHandler_FWD_DEFINED__
+#define __IServerHandler_FWD_DEFINED__
+typedef interface IServerHandler IServerHandler;
+#endif /* __IServerHandler_FWD_DEFINED__ */
+
+
+#ifndef __IClientSiteHandler_FWD_DEFINED__
+#define __IClientSiteHandler_FWD_DEFINED__
+typedef interface IClientSiteHandler IClientSiteHandler;
+#endif /* __IClientSiteHandler_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oleidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifndef __IServerHandler_INTERFACE_DEFINED__
+#define __IServerHandler_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IServerHandler
+ * at Fri Nov 15 09:36:20 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1995.
+//
+//--------------------------------------------------------------------------
+typedef /* [unique] */ IServerHandler __RPC_FAR *LPSERVERHANDLER;
+
+typedef struct tagInSrvRun
+ {
+ DWORD dwOperation;
+ IMoniker __RPC_FAR *pMnk;
+ IOleContainer __RPC_FAR *pOCont;
+ IStorage __RPC_FAR *pStg;
+ LONG iVerb;
+ LPMSG lpmsg;
+ LONG lindex;
+ HWND hwndParent;
+ RECT __RPC_FAR *lprcPosRect;
+ DWORD dwInPlace;
+ DWORD dwInFlags;
+ DWORD dwInOptions;
+ LPOLESTR pszContainerApp;
+ LPOLESTR pszContainerObj;
+ IAdviseSink __RPC_FAR *pAS;
+ DWORD dwConnOle;
+ CLSID __RPC_FAR *pContClassID;
+ } INSRVRUN;
+
+typedef struct tagInSrvRun __RPC_FAR *PINSRVRUN;
+
+typedef struct tagOutSrvRunInit
+ {
+ DWORD dwOperation;
+ IOleObject __RPC_FAR *pOO;
+ IDataObject __RPC_FAR *pDO;
+ IPersistStorage __RPC_FAR *pPStg;
+ HRESULT hrSetHostNames;
+ HRESULT hrPStg;
+ HRESULT hrAdvise;
+ DWORD dwConnOle;
+ CLSID __RPC_FAR *pUserClassID;
+ DWORD dwOutFlag;
+ DWORD dwOutOptions;
+ } OUTSRVRUN;
+
+typedef struct tagOutSrvRunInit __RPC_FAR *POUTSRVRUN;
+
+typedef struct tagSrvRunDoVerb
+ {
+ IUnknown __RPC_FAR *pUnk;
+ } SRVRUNDOVERB;
+
+typedef struct tagSrvRunDoVerb __RPC_FAR *PSRVRUNDOVERB;
+
+typedef struct tagSrvDoVerb
+ {
+ IUnknown __RPC_FAR *pUnk;
+ } SRVDOVERB;
+
+typedef struct tagSrvDoVerb __RPC_FAR *PSRVDOVERB;
+
+
+EXTERN_C const IID IID_IServerHandler;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IServerHandler : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RunAndInitialize(
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RunAndDoVerb(
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DoVerb(
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CloseAndRelease(
+ /* [in] */ DWORD dwClose) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IServerHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IServerHandler __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IServerHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RunAndInitialize )(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RunAndDoVerb )(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DoVerb )(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CloseAndRelease )(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwClose);
+
+ END_INTERFACE
+ } IServerHandlerVtbl;
+
+ interface IServerHandler
+ {
+ CONST_VTBL struct IServerHandlerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IServerHandler_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IServerHandler_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IServerHandler_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IServerHandler_RunAndInitialize(This,pInSrvRun,pOutSrvRun) \
+ (This)->lpVtbl -> RunAndInitialize(This,pInSrvRun,pOutSrvRun)
+
+#define IServerHandler_RunAndDoVerb(This,pInSrvRun,pOutSrvRun) \
+ (This)->lpVtbl -> RunAndDoVerb(This,pInSrvRun,pOutSrvRun)
+
+#define IServerHandler_DoVerb(This,pInSrvRun,pOutSrvRun) \
+ (This)->lpVtbl -> DoVerb(This,pInSrvRun,pOutSrvRun)
+
+#define IServerHandler_CloseAndRelease(This,dwClose) \
+ (This)->lpVtbl -> CloseAndRelease(This,dwClose)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IServerHandler_RunAndInitialize_Proxy(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+
+void __RPC_STUB IServerHandler_RunAndInitialize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IServerHandler_RunAndDoVerb_Proxy(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+
+void __RPC_STUB IServerHandler_RunAndDoVerb_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IServerHandler_DoVerb_Proxy(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ INSRVRUN __RPC_FAR *pInSrvRun,
+ /* [out] */ OUTSRVRUN __RPC_FAR *__RPC_FAR *pOutSrvRun);
+
+
+void __RPC_STUB IServerHandler_DoVerb_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IServerHandler_CloseAndRelease_Proxy(
+ IServerHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwClose);
+
+
+void __RPC_STUB IServerHandler_CloseAndRelease_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IServerHandler_INTERFACE_DEFINED__ */
+
+
+#ifndef __IClientSiteHandler_INTERFACE_DEFINED__
+#define __IClientSiteHandler_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IClientSiteHandler
+ * at Fri Nov 15 09:36:20 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1995.
+//
+//--------------------------------------------------------------------------
+typedef /* [unique] */ IClientSiteHandler __RPC_FAR *LPCLIENTSITEHANDLER;
+
+typedef struct tagInSrvInPlace
+ {
+ DWORD dwOperation;
+ DWORD dwDelegateID;
+ DWORD dwInFlags;
+ DWORD dwInOptions;
+ DWORD dwDrawAspect;
+ SIZEL sizel;
+ IOleInPlaceObject __RPC_FAR *pOIPObj;
+ } INSRVINPLACE;
+
+typedef struct tagInSrvInPlace __RPC_FAR *PINSRVINPLACE;
+
+typedef struct tagOutSrvInPlace
+ {
+ DWORD dwOperation;
+ DWORD dwOutFlags;
+ DWORD dwOutOptions;
+ HWND hwnd;
+ IOleInPlaceFrame __RPC_FAR *pOIPFrame;
+ IOleInPlaceUIWindow __RPC_FAR *pOIPUIWnd;
+ LPRECT lprcPosRect;
+ LPRECT lprcClipRect;
+ LPOLEINPLACEFRAMEINFO lpFrameInfo;
+ RECT rcPosRect;
+ RECT rcClipRect;
+ OLEINPLACEFRAMEINFO FrameInfo;
+ HMENU hmenuShared;
+ OLEMENUGROUPWIDTHS MenuWidths;
+ LPOLESTR pszStatusText;
+ DWORD dwDrawAspect;
+ SIZEL sizel;
+ } OUTSRVINPLACE;
+
+typedef struct tagOutSrvInPlace __RPC_FAR *POUTSRVINPLACE;
+
+
+EXTERN_C const IID IID_IClientSiteHandler;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IClientSiteHandler : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT __stdcall PrivQueryInterface(
+ /* [in] */ DWORD dwId,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PrivAddRef(
+ /* [in] */ DWORD dwId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PrivRelease(
+ /* [in] */ DWORD dwId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveObject(
+ /* [in] */ DWORD dwId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+ /* [in] */ DWORD dwId,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetContainer(
+ /* [in] */ DWORD dwId,
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ShowObject(
+ /* [in] */ DWORD dwId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnShowWindow(
+ /* [in] */ DWORD dwId,
+ /* [in] */ BOOL fShow) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout(
+ /* [in] */ DWORD dwId) = 0;
+
+ virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetWindow(
+ /* [out] */ HWND __RPC_FAR *phwnd) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(
+ /* [in] */ BOOL fEnterMode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnUIActivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWindowContext(
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Scroll(
+ /* [in] */ SIZE scrollExtant) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(
+ /* [in] */ BOOL fUndoable) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DiscardUndoState( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(
+ /* [in] */ LPCRECT lprcPosRect) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GoInPlaceActivate(
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GoInPlace(
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UndoPlace(
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IClientSiteHandlerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *PrivQueryInterface )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PrivAddRef )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PrivRelease )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveObject )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMoniker )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetContainer )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ShowObject )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnShowWindow )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ BOOL fShow);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RequestNewObjectLayout )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+ /* [input_sync] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ContextSensitiveHelp )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CanInPlaceActivate )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceActivate )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIActivate )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindowContext )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Scroll )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ SIZE scrollExtant);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnUIDeactivate )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ BOOL fUndoable);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnInPlaceDeactivate )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DiscardUndoState )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *DeactivateAndUndo )(
+ IClientSiteHandler __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnPosRectChange )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GoInPlaceActivate )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GoInPlace )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UndoPlace )(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+ END_INTERFACE
+ } IClientSiteHandlerVtbl;
+
+ interface IClientSiteHandler
+ {
+ CONST_VTBL struct IClientSiteHandlerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IClientSiteHandler_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IClientSiteHandler_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IClientSiteHandler_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IClientSiteHandler_PrivQueryInterface(This,dwId,riidResult,ppvResult) \
+ (This)->lpVtbl -> PrivQueryInterface(This,dwId,riidResult,ppvResult)
+
+#define IClientSiteHandler_PrivAddRef(This,dwId) \
+ (This)->lpVtbl -> PrivAddRef(This,dwId)
+
+#define IClientSiteHandler_PrivRelease(This,dwId) \
+ (This)->lpVtbl -> PrivRelease(This,dwId)
+
+#define IClientSiteHandler_SaveObject(This,dwId) \
+ (This)->lpVtbl -> SaveObject(This,dwId)
+
+#define IClientSiteHandler_GetMoniker(This,dwId,dwAssign,dwWhichMoniker,ppmk) \
+ (This)->lpVtbl -> GetMoniker(This,dwId,dwAssign,dwWhichMoniker,ppmk)
+
+#define IClientSiteHandler_GetContainer(This,dwId,ppContainer) \
+ (This)->lpVtbl -> GetContainer(This,dwId,ppContainer)
+
+#define IClientSiteHandler_ShowObject(This,dwId) \
+ (This)->lpVtbl -> ShowObject(This,dwId)
+
+#define IClientSiteHandler_OnShowWindow(This,dwId,fShow) \
+ (This)->lpVtbl -> OnShowWindow(This,dwId,fShow)
+
+#define IClientSiteHandler_RequestNewObjectLayout(This,dwId) \
+ (This)->lpVtbl -> RequestNewObjectLayout(This,dwId)
+
+#define IClientSiteHandler_GetWindow(This,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,phwnd)
+
+#define IClientSiteHandler_ContextSensitiveHelp(This,fEnterMode) \
+ (This)->lpVtbl -> ContextSensitiveHelp(This,fEnterMode)
+
+#define IClientSiteHandler_CanInPlaceActivate(This) \
+ (This)->lpVtbl -> CanInPlaceActivate(This)
+
+#define IClientSiteHandler_OnInPlaceActivate(This) \
+ (This)->lpVtbl -> OnInPlaceActivate(This)
+
+#define IClientSiteHandler_OnUIActivate(This) \
+ (This)->lpVtbl -> OnUIActivate(This)
+
+#define IClientSiteHandler_GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo) \
+ (This)->lpVtbl -> GetWindowContext(This,ppFrame,ppDoc,lprcPosRect,lprcClipRect,lpFrameInfo)
+
+#define IClientSiteHandler_Scroll(This,scrollExtant) \
+ (This)->lpVtbl -> Scroll(This,scrollExtant)
+
+#define IClientSiteHandler_OnUIDeactivate(This,fUndoable) \
+ (This)->lpVtbl -> OnUIDeactivate(This,fUndoable)
+
+#define IClientSiteHandler_OnInPlaceDeactivate(This) \
+ (This)->lpVtbl -> OnInPlaceDeactivate(This)
+
+#define IClientSiteHandler_DiscardUndoState(This) \
+ (This)->lpVtbl -> DiscardUndoState(This)
+
+#define IClientSiteHandler_DeactivateAndUndo(This) \
+ (This)->lpVtbl -> DeactivateAndUndo(This)
+
+#define IClientSiteHandler_OnPosRectChange(This,lprcPosRect) \
+ (This)->lpVtbl -> OnPosRectChange(This,lprcPosRect)
+
+#define IClientSiteHandler_GoInPlaceActivate(This,pInSrvInPlace,pOutSrvInPlace) \
+ (This)->lpVtbl -> GoInPlaceActivate(This,pInSrvInPlace,pOutSrvInPlace)
+
+#define IClientSiteHandler_GoInPlace(This,pInSrvInPlace,pOutSrvInPlace) \
+ (This)->lpVtbl -> GoInPlace(This,pInSrvInPlace,pOutSrvInPlace)
+
+#define IClientSiteHandler_UndoPlace(This,pInSrvInPlace,pOutSrvInPlace) \
+ (This)->lpVtbl -> UndoPlace(This,pInSrvInPlace,pOutSrvInPlace)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT __stdcall IClientSiteHandler_RemotePrivQueryInterface_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvResult);
+
+
+void __RPC_STUB IClientSiteHandler_RemotePrivQueryInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_PrivAddRef_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+
+void __RPC_STUB IClientSiteHandler_PrivAddRef_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_PrivRelease_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+
+void __RPC_STUB IClientSiteHandler_PrivRelease_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_SaveObject_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+
+void __RPC_STUB IClientSiteHandler_SaveObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_GetMoniker_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ DWORD dwAssign,
+ /* [in] */ DWORD dwWhichMoniker,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB IClientSiteHandler_GetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_GetContainer_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer);
+
+
+void __RPC_STUB IClientSiteHandler_GetContainer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_ShowObject_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+
+void __RPC_STUB IClientSiteHandler_ShowObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnShowWindow_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ BOOL fShow);
+
+
+void __RPC_STUB IClientSiteHandler_OnShowWindow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_RequestNewObjectLayout_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId);
+
+
+void __RPC_STUB IClientSiteHandler_RequestNewObjectLayout_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [input_sync] */ HRESULT STDMETHODCALLTYPE IClientSiteHandler_GetWindow_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+
+void __RPC_STUB IClientSiteHandler_GetWindow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_ContextSensitiveHelp_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ BOOL fEnterMode);
+
+
+void __RPC_STUB IClientSiteHandler_ContextSensitiveHelp_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_CanInPlaceActivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_CanInPlaceActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnInPlaceActivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_OnInPlaceActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnUIActivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_OnUIActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_GetWindowContext_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame,
+ /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc,
+ /* [out] */ LPRECT lprcPosRect,
+ /* [out] */ LPRECT lprcClipRect,
+ /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo);
+
+
+void __RPC_STUB IClientSiteHandler_GetWindowContext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_Scroll_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ SIZE scrollExtant);
+
+
+void __RPC_STUB IClientSiteHandler_Scroll_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnUIDeactivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ BOOL fUndoable);
+
+
+void __RPC_STUB IClientSiteHandler_OnUIDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnInPlaceDeactivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_OnInPlaceDeactivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_DiscardUndoState_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_DiscardUndoState_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_DeactivateAndUndo_Proxy(
+ IClientSiteHandler __RPC_FAR * This);
+
+
+void __RPC_STUB IClientSiteHandler_DeactivateAndUndo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_OnPosRectChange_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ LPCRECT lprcPosRect);
+
+
+void __RPC_STUB IClientSiteHandler_OnPosRectChange_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_GoInPlaceActivate_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+
+void __RPC_STUB IClientSiteHandler_GoInPlaceActivate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_GoInPlace_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+
+void __RPC_STUB IClientSiteHandler_GoInPlace_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IClientSiteHandler_UndoPlace_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ INSRVINPLACE __RPC_FAR *pInSrvInPlace,
+ /* [out] */ OUTSRVINPLACE __RPC_FAR *__RPC_FAR *pOutSrvInPlace);
+
+
+void __RPC_STUB IClientSiteHandler_UndoPlace_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IClientSiteHandler_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER HACCEL_UserSize( unsigned long __RPC_FAR *, unsigned long , HACCEL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HACCEL_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HACCEL __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HACCEL_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HACCEL __RPC_FAR * );
+void __RPC_USER HACCEL_UserFree( unsigned long __RPC_FAR *, HACCEL __RPC_FAR * );
+
+unsigned long __RPC_USER HMENU_UserSize( unsigned long __RPC_FAR *, unsigned long , HMENU __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HMENU_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HMENU __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HMENU_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HMENU __RPC_FAR * );
+void __RPC_USER HMENU_UserFree( unsigned long __RPC_FAR *, HMENU __RPC_FAR * );
+
+unsigned long __RPC_USER HWND_UserSize( unsigned long __RPC_FAR *, unsigned long , HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HWND_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HWND __RPC_FAR * );
+void __RPC_USER HWND_UserFree( unsigned long __RPC_FAR *, HWND __RPC_FAR * );
+
+/* [local] */ HRESULT __stdcall IClientSiteHandler_PrivQueryInterface_Proxy(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult);
+
+
+/* [call_as] */ HRESULT __stdcall IClientSiteHandler_PrivQueryInterface_Stub(
+ IClientSiteHandler __RPC_FAR * This,
+ /* [in] */ DWORD dwId,
+ /* [in] */ REFIID riidResult,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvResult);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/srvhdl.idl b/public/sdk/inc/srvhdl.idl
new file mode 100644
index 000000000..e33fba12d
--- /dev/null
+++ b/public/sdk/inc/srvhdl.idl
@@ -0,0 +1,347 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1995.
+//
+// File: srvhndlr.idl
+//
+//--------------------------------------------------------------------------
+
+#ifndef DO_NO_IMPORTS
+import "oleidl.idl";
+import "unknwn.idl";
+#endif
+
+
+[
+ object,
+ uuid(F4F569D0-593B-101A-B569-08002B2DBF7A),
+ pointer_default(unique)
+]
+interface IServerHandler : IUnknown
+{
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1995.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+
+ typedef [unique] IServerHandler *LPSERVERHANDLER;
+
+ typedef struct tagInSrvRun
+ {
+ DWORD dwOperation;
+
+ // in parameter
+ // IUnknown *pUnk; // Unknown of object
+ IMoniker *pMnk; // Moniker
+ IOleContainer *pOCont; // container object
+
+ // optional clientsite of container
+ //IOleClientSite *pOContCS; // the client ole object
+
+ // Storage for IPersistStorage
+ IStorage *pStg;
+
+ // DoVerb stuff
+ LONG iVerb;
+ LPMSG lpmsg;
+ LONG lindex;
+ HWND hwndParent;
+ RECT *lprcPosRect;
+
+ // inplace stuff
+ DWORD dwInPlace; // inplace options
+ DWORD dwInFlags; // generic Flags
+ DWORD dwInOptions;
+
+ // SetHostName
+ LPOLESTR pszContainerApp;
+ LPOLESTR pszContainerObj;
+
+ // AdviseSink
+ IAdviseSink *pAS; // IAdviseSink
+ DWORD dwConnOle;
+
+ CLSID *pContClassID;
+
+
+ } INSRVRUN, *PINSRVRUN;
+
+ typedef struct tagOutSrvRunInit
+ {
+ DWORD dwOperation;
+ // out parameter
+ IOleObject *pOO; // IOleObject
+ IDataObject *pDO; // IDataObject
+ IPersistStorage *pPStg; // IPersistStorage
+
+ HRESULT hrSetHostNames;
+ HRESULT hrPStg;
+ HRESULT hrAdvise;
+ DWORD dwConnOle;
+
+ CLSID *pUserClassID; // the user class id
+
+ DWORD dwOutFlag;
+ DWORD dwOutOptions;
+ } OUTSRVRUN, *POUTSRVRUN;
+
+ typedef struct tagSrvRunDoVerb
+ {
+ IUnknown *pUnk;
+ } SRVRUNDOVERB, *PSRVRUNDOVERB;
+
+ typedef struct tagSrvDoVerb
+ {
+ IUnknown *pUnk;
+ } SRVDOVERB, *PSRVDOVERB;
+
+ HRESULT RunAndInitialize
+ (
+ [in] INSRVRUN *pInSrvRun,
+ [out] OUTSRVRUN **pOutSrvRun
+ );
+
+ HRESULT RunAndDoVerb
+ (
+ [in] INSRVRUN *pInSrvRun,
+ [out] OUTSRVRUN **pOutSrvRun
+
+ );
+
+ HRESULT DoVerb
+ (
+ [in] INSRVRUN *pInSrvRun,
+ [out] OUTSRVRUN **pOutSrvRun
+ );
+
+ HRESULT CloseAndRelease
+ (
+ [in] DWORD dwClose
+ );
+
+}
+
+
+[
+ object,
+ uuid(F4F569D1-593B-101A-B569-08002B2DBF7A),
+ pointer_default(unique)
+]
+
+//interface IClientSiteHandler : IOleClientSite
+interface IClientSiteHandler : IUnknown
+{
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1995.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+
+ typedef [unique] IClientSiteHandler *LPCLIENTSITEHANDLER;
+
+ typedef struct tagInSrvInPlace
+ {
+ DWORD dwOperation;
+ DWORD dwDelegateID;
+
+ DWORD dwInFlags; // generic Flags
+ DWORD dwInOptions;
+
+ // IOleObject::GetExtend
+ DWORD dwDrawAspect;
+ SIZEL sizel;
+
+ //
+ IOleInPlaceObject *pOIPObj;
+
+ } INSRVINPLACE, *PINSRVINPLACE;
+
+ typedef struct tagOutSrvInPlace
+ {
+ DWORD dwOperation;
+ DWORD dwOutFlags; // generic Flags
+ DWORD dwOutOptions;
+
+ HWND hwnd;
+
+ IOleInPlaceFrame *pOIPFrame;
+ IOleInPlaceUIWindow *pOIPUIWnd;
+
+ LPRECT lprcPosRect;
+ LPRECT lprcClipRect;
+ LPOLEINPLACEFRAMEINFO lpFrameInfo;
+
+ RECT rcPosRect;
+ RECT rcClipRect;
+ OLEINPLACEFRAMEINFO FrameInfo;
+
+
+ // menu stuff
+ HMENU hmenuShared;
+ OLEMENUGROUPWIDTHS MenuWidths;
+ //
+ LPOLESTR pszStatusText;
+
+ // IOleObject::SetExtend
+ DWORD dwDrawAspect;
+ SIZEL sizel;
+
+
+ } OUTSRVINPLACE, *POUTSRVINPLACE;
+
+
+ [local]
+ HRESULT __stdcall PrivQueryInterface(
+ [in] DWORD dwId,
+ [in] REFIID riidResult,
+ [out, iid_is(riidResult)] void **ppvResult);
+
+ [call_as(PrivQueryInterface)]
+ HRESULT __stdcall RemotePrivQueryInterface(
+ [in] DWORD dwId,
+ [in] REFIID riidResult,
+ [out, iid_is(riidResult)] IUnknown **ppvResult);
+
+
+ HRESULT PrivAddRef(
+ [in] DWORD dwId
+ );
+
+ HRESULT PrivRelease(
+ [in] DWORD dwId
+ );
+
+ // IOleClientSite methods
+ HRESULT SaveObject
+ (
+ [in] DWORD dwId
+ );
+
+ HRESULT GetMoniker
+ (
+ [in] DWORD dwId,
+ [in] DWORD dwAssign,
+ [in] DWORD dwWhichMoniker,
+ [out] IMoniker **ppmk
+ );
+
+ HRESULT GetContainer
+ (
+ [in] DWORD dwId,
+ [out] IOleContainer **ppContainer
+ );
+
+ HRESULT ShowObject
+ (
+ [in] DWORD dwId
+ );
+
+ HRESULT OnShowWindow
+ (
+ [in] DWORD dwId,
+ [in] BOOL fShow
+ );
+
+ HRESULT RequestNewObjectLayout
+ (
+ [in] DWORD dwId
+ );
+
+ // IOleInPlaceSite methods
+ [input_sync]
+ HRESULT GetWindow
+ (
+ [out] HWND *phwnd
+ );
+
+ HRESULT ContextSensitiveHelp
+ (
+ [in] BOOL fEnterMode
+ );
+
+
+ HRESULT CanInPlaceActivate
+ (
+ void
+ );
+
+ HRESULT OnInPlaceActivate
+ (
+ void
+ );
+
+ HRESULT OnUIActivate
+ (
+ void
+ );
+
+ HRESULT GetWindowContext
+ (
+ [out] IOleInPlaceFrame **ppFrame,
+ [out] IOleInPlaceUIWindow **ppDoc,
+ [out] LPRECT lprcPosRect,
+ [out] LPRECT lprcClipRect,
+ [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo
+ );
+
+ HRESULT Scroll
+ (
+ [in] SIZE scrollExtant
+ );
+
+ HRESULT OnUIDeactivate
+ (
+ [in] BOOL fUndoable
+ );
+
+ HRESULT OnInPlaceDeactivate
+ (
+ void
+ );
+
+ HRESULT DiscardUndoState
+ (
+ void
+ );
+
+ HRESULT DeactivateAndUndo
+ (
+ void
+ );
+
+ HRESULT OnPosRectChange
+ (
+ [in] LPCRECT lprcPosRect
+ );
+
+
+
+ HRESULT GoInPlaceActivate
+ (
+ [in] INSRVINPLACE *pInSrvInPlace,
+ [out] OUTSRVINPLACE **pOutSrvInPlace
+ );
+
+ HRESULT GoInPlace
+ (
+ [in] INSRVINPLACE *pInSrvInPlace,
+ [out] OUTSRVINPLACE **pOutSrvInPlace
+ );
+ HRESULT UndoPlace
+ (
+ [in] INSRVINPLACE *pInSrvInPlace,
+ [out] OUTSRVINPLACE **pOutSrvInPlace
+ );
+
+}
+
+
+
diff --git a/public/sdk/inc/sslsp.h b/public/sdk/inc/sslsp.h
new file mode 100644
index 000000000..610879543
--- /dev/null
+++ b/public/sdk/inc/sslsp.h
@@ -0,0 +1,149 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: sslsp.h
+//
+// Contents: Public Definitions for SCHANNEL Security Provider
+//
+// Classes:
+//
+// Functions:
+//
+// History
+//
+// 11 Jun 96 Merged SSL and PCT headers
+//
+//----------------------------------------------------------------------------
+
+#ifndef __SSLSP_H__
+#define __SSLSP_H__
+
+
+
+
+#define SSLSP_NAME_A "Microsoft SSL"
+#define SSLSP_NAME_W L"Microsoft SSL"
+
+#ifdef UNICODE
+#define SSLSP_NAME SSLSP_NAME_W
+#else
+#define SSLSP_NAME SSLSP_NAME_A
+#endif
+
+#define SSLSP_RPC_ID 12
+
+
+typedef struct _SSL_CREDENTIAL_CERTIFICATE {
+ DWORD cbPrivateKey;
+ PBYTE pPrivateKey;
+ DWORD cbCertificate;
+ PBYTE pCertificate;
+ PSTR pszPassword;
+} SSL_CREDENTIAL_CERTIFICATE, * PSSL_CREDENTIAL_CERTIFICATE;
+
+#define NETWORK_DREP 0x00000000
+
+
+
+#ifndef __SCHN_CERTIFICATE_DEFINED
+#define __SCHN_CERTIFICATE_DEFINED
+
+typedef struct _X509Certificate {
+ DWORD Version;
+ DWORD SerialNumber[4];
+ ALG_ID SignatureAlgorithm;
+ FILETIME ValidFrom;
+ FILETIME ValidUntil;
+ PSTR pszIssuer;
+ PSTR pszSubject;
+ PVOID pPublicKey;
+} X509Certificate, * PX509Certificate;
+
+
+#endif
+
+typedef struct _CtPublicPublicKey {
+ DWORD Type;
+ DWORD cbKey;
+ DWORD magic;
+ DWORD keylen;
+ DWORD bitlen;
+} CtPublicPublicKey, * LPPUBLIC_KEY;
+
+#define SERIALNUMBER_LENGTH 16
+
+#define CF_VERIFY_SIG 1
+#define CF_CERT_FROM_FILE 2
+
+#define CERT_HEADER_LEN 17
+
+
+BOOL
+WINAPI
+SslGenerateKeyPair(
+ PSSL_CREDENTIAL_CERTIFICATE pCerts,
+ PSTR pszDN,
+ PSTR pszPassword,
+ DWORD Bits );
+
+
+VOID
+WINAPI
+SslGenerateRandomBits(
+ PUCHAR pRandomData,
+ LONG cRandomData
+ );
+
+
+BOOL
+WINAPI
+SslLoadCertificate(
+ PUCHAR pbCertificate,
+ DWORD cbCertificate,
+ BOOL AddToWellKnownKeys);
+
+BOOL
+WINAPI
+SslCrackCertificate(
+ PUCHAR pbCertificate,
+ DWORD cbCertificate,
+ DWORD dwFlags,
+ PX509Certificate * ppCertificate);
+
+VOID
+WINAPI
+SslFreeCertificate(
+ PX509Certificate pCertificate);
+
+DWORD
+WINAPI
+SslGetMaximumKeySize(
+ DWORD Reserved );
+
+//
+// PCT Provider Information
+//
+
+#define PCTSP_NAME_A "Microsoft PCT"
+#define PCTSP_NAME_W L"Microsoft PCT"
+
+#ifdef UNICODE
+#define PCTSP_NAME PCTSP_NAME_W
+#else
+#define PCTSP_NAME PCTSP_NAME_A
+#endif
+
+#define PCTSP_RPC_ID 13
+
+
+typedef struct _PCT_CREDENTIAL_CERTIFICATE {
+ DWORD cbPrivateKey;
+ PBYTE pPrivateKey;
+ DWORD cbCertificate;
+ PBYTE pCertificate;
+ PCHAR pszPassword;
+} PCT_CREDENTIAL_CERTIFICATE, * PPCT_CREDENTIAL_CERTIFICATE;
+
+#endif
diff --git a/public/sdk/inc/sspi.h b/public/sdk/inc/sspi.h
new file mode 100644
index 000000000..9f02e8be2
--- /dev/null
+++ b/public/sdk/inc/sspi.h
@@ -0,0 +1,1601 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: sspi.h
+//
+// Contents: Security Support Provider Interface
+// Prototypes and structure definitions
+//
+// Functions: Security Support Provider API
+//
+// History: 11-24-93 RichardW Created
+//
+//----------------------------------------------------------------------------
+
+#ifndef __SSPI_H__
+#define __SSPI_H__
+
+//
+// Determine environment:
+//
+
+#ifdef SECURITY_WIN32
+#define ISSP_LEVEL 32
+#define ISSP_MODE 1
+#endif // SECURITY_WIN32
+
+#ifdef SECURITY_WIN16
+#define ISSP_LEVEL 16
+#define ISSP_MODE 1
+#endif // SECURITY_WIN16
+
+#ifdef SECURITY_KERNEL
+#define ISSP_LEVEL 32
+
+//
+// SECURITY_KERNEL trumps SECURITY_WIN32. Undefine ISSP_MODE so that
+// we don't get redefine errors.
+//
+#ifdef ISSP_MODE
+#undef ISSP_MODE
+#endif
+#define ISSP_MODE 0
+#endif // SECURITY_KERNEL
+
+#ifdef SECURITY_OS212
+#define ISSP_LEVEL 16
+#define ISSP_MODE 1
+#endif // SECURITY_OS212
+
+#ifdef SECURITY_DOS
+#define ISSP_LEVEL 16
+#define ISSP_MODE 1
+#endif // SECURITY_DOS
+
+#ifdef SECURITY_MAC
+#define ISSP_LEVEL 32
+#define ISSP_MODE 1
+#endif // SECURITY_MAC
+
+
+#ifndef ISSP_LEVEL
+#error You must define one of SECURITY_WIN32, SECURITY_WIN16, SECURITY_KERNEL
+#error SECURITY_DOS, SECURITY_MAC or SECURITY_OS212
+#endif // !ISSP_LEVEL
+
+
+//
+// Now, define platform specific mappings:
+//
+
+#if ISSP_LEVEL == 16
+
+typedef short SECURITY_STATUS;
+typedef short HRESULT;
+typedef unsigned short SEC_WCHAR;
+typedef char SEC_CHAR;
+#define SEC_TEXT(_x_) _x_
+
+#ifdef SECURITY_WIN16
+
+#define SEC_FAR __far
+#define SEC_ENTRY __pascal __far __export
+
+#else // SECURITY_WIN16
+
+#define SEC_FAR __far
+#define SEC_ENTRY __pascal __far __loadds
+#pragma warning(disable:4147)
+
+#endif // SECURITY_WIN16
+
+#elif defined(SECURITY_MAC) // ISSP_LEVEL == 16
+
+#define SEC_ENTRY
+#define SEC_TEXT(_X_) _X_
+#define SEC_FAR
+
+typedef unsigned short SEC_WCHAR;
+typedef char SEC_CHAR;
+typedef long HRESULT;
+typedef HRESULT SECURITY_STATUS;
+
+// No Unicode on the Mac
+
+typedef SEC_CHAR SEC_FAR * SECURITY_PSTR;
+typedef SEC_CHAR SEC_FAR * SECURITY_PCSTR;
+
+#else // ISSP_LEVEL == 16
+
+//
+// For NT-2 and up, wtypes will define HRESULT to be long.
+//
+
+typedef WCHAR SEC_WCHAR;
+typedef CHAR SEC_CHAR;
+
+#if !defined(__wtypes_h__) || defined(SECURITY_KERNEL)
+typedef long HRESULT;
+#endif // wtypes.h || security_kernel
+
+typedef HRESULT SECURITY_STATUS;
+
+#define SEC_TEXT TEXT
+#define SEC_FAR
+#define SEC_ENTRY __stdcall
+
+//
+// Decide what a string - 32 bits only since for 16 bits it is clear.
+//
+
+
+#ifdef UNICODE
+typedef SEC_WCHAR SEC_FAR * SECURITY_PSTR;
+typedef CONST SEC_WCHAR SEC_FAR * SECURITY_PCSTR;
+#else // UNICODE
+typedef SEC_CHAR SEC_FAR * SECURITY_PSTR;
+typedef CONST SEC_CHAR SEC_FAR * SECURITY_PCSTR;
+#endif // UNICODE
+
+
+#endif // ISSP_LEVEL == 16
+
+//
+// Equivalent string for rpcrt:
+//
+
+#define __SEC_FAR SEC_FAR
+
+
+//
+// Okay, security specific types:
+//
+
+
+typedef struct _SecHandle
+{
+ unsigned long dwLower;
+ unsigned long dwUpper;
+} SecHandle, SEC_FAR * PSecHandle;
+
+typedef SecHandle CredHandle;
+typedef PSecHandle PCredHandle;
+
+typedef SecHandle CtxtHandle;
+typedef PSecHandle PCtxtHandle;
+
+#if ISSP_LEVEL == 32
+
+
+# ifdef WIN32_CHICAGO
+
+typedef unsigned __int64 QWORD;
+typedef QWORD SECURITY_INTEGER, *PSECURITY_INTEGER;
+
+# elif defined(_NTDEF_) || defined(_WINNT_)
+
+typedef LARGE_INTEGER _SECURITY_INTEGER, SECURITY_INTEGER, *PSECURITY_INTEGER;
+
+# else // _NTDEF_ || _WINNT_
+
+// BUGBUG: Alignment for axp
+
+typedef struct _SECURITY_INTEGER
+{
+ unsigned long LowPart;
+ long HighPart;
+} SECURITY_INTEGER, *PSECURITY_INTEGER;
+
+# endif // _NTDEF_ || _WINNT_
+
+# ifndef SECURITY_MAC
+typedef SECURITY_INTEGER TimeStamp;
+typedef SECURITY_INTEGER SEC_FAR * PTimeStamp;
+# else // SECURITY_MAC
+typedef unsigned long TimeStamp;
+typedef unsigned long * PTimeStamp;
+# endif // SECUIRT_MAC
+
+#else // ISSP_LEVEL == 32
+
+typedef unsigned long TimeStamp;
+typedef unsigned long SEC_FAR * PTimeStamp;
+
+#endif // ISSP_LEVEL == 32
+
+
+//
+// If we are in 32 bit mode, define the SECURITY_STRING structure,
+// as a clone of the base UNICODE_STRING structure. This is used
+// internally in security components, an as the string interface
+// for kernel components (e.g. FSPs)
+//
+
+#if ISSP_LEVEL == 32
+# ifndef _NTDEF_
+typedef struct _SECURITY_STRING {
+ unsigned short Length;
+ unsigned short MaximumLength;
+# ifdef MIDL_PASS
+ [size_is(MaximumLength / 2), length_is(Length / 2)]
+# endif // MIDL_PASS
+ unsigned short * Buffer;
+} SECURITY_STRING, * PSECURITY_STRING;
+# else // _NTDEF_
+typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING;
+# endif // _NTDEF_
+#endif // ISSP_LEVEL == 32
+
+
+//
+// SecPkgInfo structure
+//
+// Provides general information about a security provider
+//
+
+typedef struct _SecPkgInfoW
+{
+ unsigned long fCapabilities; // Capability bitmask
+ unsigned short wVersion; // Version of driver
+ unsigned short wRPCID; // ID for RPC Runtime
+ unsigned long cbMaxToken; // Size of authentication token (max)
+#ifdef MIDL_PASS
+ [string]
+#endif
+ SEC_WCHAR SEC_FAR * Name; // Text name
+
+#ifdef MIDL_PASS
+ [string]
+#endif
+ SEC_WCHAR SEC_FAR * Comment; // Comment
+} SecPkgInfoW, SEC_FAR * PSecPkgInfoW;
+
+
+typedef struct _SecPkgInfoA
+{
+ unsigned long fCapabilities; // Capability bitmask
+ unsigned short wVersion; // Version of driver
+ unsigned short wRPCID; // ID for RPC Runtime
+ unsigned long cbMaxToken; // Size of authentication token (max)
+#ifdef MIDL_PASS
+ [string]
+#endif
+ SEC_CHAR SEC_FAR * Name; // Text name
+
+#ifdef MIDL_PASS
+ [string]
+#endif
+ SEC_CHAR SEC_FAR * Comment; // Comment
+} SecPkgInfoA, SEC_FAR * PSecPkgInfoA;
+
+#ifdef UNICODE
+# define SecPkgInfo SecPkgInfoW
+# define PSecPkgInfo PSecPkgInfoW
+#else
+# define SecPkgInfo SecPkgInfoA
+# define PSecPkgInfo PSecPkgInfoA
+#endif // !UNICODE
+
+//
+// Security Package Capabilities
+//
+#define SECPKG_FLAG_INTEGRITY 0x00000001 // Supports integrity on messages
+#define SECPKG_FLAG_PRIVACY 0x00000002 // Supports privacy (confidentiality)
+#define SECPKG_FLAG_TOKEN_ONLY 0x00000004 // Only security token needed
+#define SECPKG_FLAG_DATAGRAM 0x00000008 // Datagram RPC support
+#define SECPKG_FLAG_CONNECTION 0x00000010 // Connection oriented RPC support
+#define SECPKG_FLAG_MULTI_REQUIRED 0x00000020 // Full 3-leg required for re-auth.
+#define SECPKG_FLAG_CLIENT_ONLY 0x00000040 // Server side functionality not available
+#define SECPKG_FLAG_EXTENDED_ERROR 0x00000080 // Supports extended error msgs
+#define SECPKG_FLAG_IMPERSONATION 0x00000100 // Supports impersonation
+#define SECPKG_FLAG_ACCEPT_WIN32_NAME 0x00000200 // Accepts Win32 names
+#define SECPKG_FLAG_STREAM 0x00000400 // Supports stream semantics
+
+
+#define SECPKG_ID_NONE 0xFFFF
+
+
+//
+// SecBuffer
+//
+// Generic memory descriptors for buffers passed in to the security
+// API
+//
+
+typedef struct _SecBuffer {
+ unsigned long cbBuffer; // Size of the buffer, in bytes
+ unsigned long BufferType; // Type of the buffer (below)
+ void SEC_FAR * pvBuffer; // Pointer to the buffer
+} SecBuffer, SEC_FAR * PSecBuffer;
+
+typedef struct _SecBufferDesc {
+ unsigned long ulVersion; // Version number
+ unsigned long cBuffers; // Number of buffers
+#ifdef MIDL_PASS
+ [size_is(cBuffers)]
+#endif
+ PSecBuffer pBuffers; // Pointer to array of buffers
+} SecBufferDesc, SEC_FAR * PSecBufferDesc;
+
+#define SECBUFFER_VERSION 0
+
+#define SECBUFFER_EMPTY 0 // Undefined, replaced by provider
+#define SECBUFFER_DATA 1 // Packet data
+#define SECBUFFER_TOKEN 2 // Security token
+#define SECBUFFER_PKG_PARAMS 3 // Package specific parameters
+#define SECBUFFER_MISSING 4 // Missing Data indicator
+#define SECBUFFER_EXTRA 5 // Extra data
+#define SECBUFFER_STREAM_TRAILER 6 // Security Trailer
+#define SECBUFFER_STREAM_HEADER 7 // Security Header
+
+#define SECBUFFER_ATTRMASK 0xF0000000
+#define SECBUFFER_READONLY 0x80000000 // Buffer is read-only
+
+//
+// Data Representation Constant:
+//
+#define SECURITY_NATIVE_DREP 0x00000010
+
+//
+// Credential Use Flags
+//
+#define SECPKG_CRED_INBOUND 0x00000001
+#define SECPKG_CRED_OUTBOUND 0x00000002
+#define SECPKG_CRED_BOTH 0x00000003
+
+//
+// InitializeSecurityContext Requirement and return flags:
+//
+
+#define ISC_REQ_DELEGATE 0x00000001
+#define ISC_REQ_MUTUAL_AUTH 0x00000002
+#define ISC_REQ_REPLAY_DETECT 0x00000004
+#define ISC_REQ_SEQUENCE_DETECT 0x00000008
+#define ISC_REQ_CONFIDENTIALITY 0x00000010
+#define ISC_REQ_USE_SESSION_KEY 0x00000020
+#define ISC_REQ_PROMPT_FOR_CREDS 0x00000040
+#define ISC_REQ_USE_SUPPLIED_CREDS 0x00000080
+#define ISC_REQ_ALLOCATE_MEMORY 0x00000100
+#define ISC_REQ_USE_DCE_STYLE 0x00000200
+#define ISC_REQ_DATAGRAM 0x00000400
+#define ISC_REQ_CONNECTION 0x00000800
+#define ISC_REQ_CALL_LEVEL 0x00001000
+#define ISC_REQ_EXTENDED_ERROR 0x00004000
+#define ISC_REQ_STREAM 0x00008000
+#define ISC_REQ_INTEGRITY 0x00010000
+#define ISC_REQ_IDENTIFY 0x00020000
+
+#define ISC_RET_DELEGATE 0x00000001
+#define ISC_RET_MUTUAL_AUTH 0x00000002
+#define ISC_RET_REPLAY_DETECT 0x00000004
+#define ISC_RET_SEQUENCE_DETECT 0x00000008
+#define ISC_RET_CONFIDENTIALITY 0x00000010
+#define ISC_RET_USE_SESSION_KEY 0x00000020
+#define ISC_RET_USED_COLLECTED_CREDS 0x00000040
+#define ISC_RET_USED_SUPPLIED_CREDS 0x00000080
+#define ISC_RET_ALLOCATED_MEMORY 0x00000100
+#define ISC_RET_USED_DCE_STYLE 0x00000200
+#define ISC_RET_DATAGRAM 0x00000400
+#define ISC_RET_CONNECTION 0x00000800
+#define ISC_RET_INTERMEDIATE_RETURN 0x00001000
+#define ISC_RET_CALL_LEVEL 0x00002000
+#define ISC_RET_EXTENDED_ERROR 0x00004000
+#define ISC_RET_STREAM 0x00008000
+#define ISC_RET_INTEGRITY 0x00010000
+#define ISC_RET_IDENTIFY 0x00020000
+
+#define ASC_REQ_DELEGATE 0x00000001
+#define ASC_REQ_MUTUAL_AUTH 0x00000002
+#define ASC_REQ_REPLAY_DETECT 0x00000004
+#define ASC_REQ_SEQUENCE_DETECT 0x00000008
+#define ASC_REQ_CONFIDENTIALITY 0x00000010
+#define ASC_REQ_USE_SESSION_KEY 0x00000020
+#define ASC_REQ_ALLOCATE_MEMORY 0x00000100
+#define ASC_REQ_USE_DCE_STYLE 0x00000200
+#define ASC_REQ_DATAGRAM 0x00000400
+#define ASC_REQ_CONNECTION 0x00000800
+#define ASC_REQ_CALL_LEVEL 0x00001000
+#define ASC_REQ_EXTENDED_ERROR 0x00008000
+#define ASC_REQ_STREAM 0x00010000
+#define ASC_REQ_INTEGRITY 0x00020000
+#define ASC_REQ_LICENSING 0x00040000
+
+
+#define ASC_RET_DELEGATE 0x00000001
+#define ASC_RET_MUTUAL_AUTH 0x00000002
+#define ASC_RET_REPLAY_DETECT 0x00000004
+#define ASC_RET_SEQUENCE_DETECT 0x00000008
+#define ASC_RET_CONFIDENTIALITY 0x00000010
+#define ASC_RET_USE_SESSION_KEY 0x00000020
+#define ASC_RET_ALLOCATED_MEMORY 0x00000100
+#define ASC_RET_USED_DCE_STYLE 0x00000200
+#define ASC_RET_DATAGRAM 0x00000400
+#define ASC_RET_CONNECTION 0x00000800
+#define ASC_RET_CALL_LEVEL 0x00002000 // skipped 1000 to be like ISC_
+#define ASC_RET_THIRD_LEG_FAILED 0x00004000
+#define ASC_RET_EXTENDED_ERROR 0x00008000
+#define ASC_RET_STREAM 0x00010000
+#define ASC_RET_INTEGRITY 0x00020000
+#define ASC_RET_LICENSING 0x00040000
+
+//
+// Security Credentials Attributes:
+//
+
+#define SECPKG_CRED_ATTR_NAMES 1
+
+typedef struct _SecPkgCredentials_NamesW
+{
+ SEC_WCHAR SEC_FAR * sUserName;
+} SecPkgCredentials_NamesW, SEC_FAR * PSecPkgCredentials_NamesW;
+
+typedef struct _SecPkgCredentials_NamesA
+{
+ SEC_CHAR SEC_FAR * sUserName;
+} SecPkgCredentials_NamesA, SEC_FAR * PSecPkgCredentials_NamesA;
+
+#ifdef UNICODE
+# define SecPkgCredentials_Names SecPkgCredentials_NamesW
+# define PSecPkgCredentials_Names PSecPkgCredentials_NamesW
+#else
+# define SecPkgCredentials_Names SecPkgCredentials_NamesA
+# define PSecPkgCredentials_Names PSecPkgCredentials_NamesA
+#endif // !UNICODE
+
+//
+// Security Context Attributes:
+//
+
+#define SECPKG_ATTR_SIZES 0
+#define SECPKG_ATTR_NAMES 1
+#define SECPKG_ATTR_LIFESPAN 2
+#define SECPKG_ATTR_DCE_INFO 3
+#define SECPKG_ATTR_STREAM_SIZES 4
+#define SECPKG_ATTR_KEY_INFO 5
+#define SECPKG_ATTR_AUTHORITY 6
+#define SECPKG_ATTR_PROTO_INFO 7
+#define SECPKG_ATTR_PASSWORD_EXPIRY 8
+
+typedef struct _SecPkgContext_Sizes
+{
+ unsigned long cbMaxToken;
+ unsigned long cbMaxSignature;
+ unsigned long cbBlockSize;
+ unsigned long cbSecurityTrailer;
+} SecPkgContext_Sizes, SEC_FAR * PSecPkgContext_Sizes;
+
+typedef struct _SecPkgContext_StreamSizes
+{
+ unsigned long cbHeader;
+ unsigned long cbTrailer;
+ unsigned long cbMaximumMessage;
+ unsigned long cBuffers;
+ unsigned long cbBlockSize;
+} SecPkgContext_StreamSizes, * PSecPkgContext_StreamSizes;
+
+typedef struct _SecPkgContext_NamesW
+{
+ SEC_WCHAR SEC_FAR * sUserName;
+} SecPkgContext_NamesW, SEC_FAR * PSecPkgContext_NamesW;
+
+typedef struct _SecPkgContext_NamesA
+{
+ SEC_CHAR SEC_FAR * sUserName;
+} SecPkgContext_NamesA, SEC_FAR * PSecPkgContext_NamesA;
+
+#ifdef UNICODE
+# define SecPkgContext_Names SecPkgContext_NamesW
+# define PSecPkgContext_Names PSecPkgContext_NamesW
+#else
+# define SecPkgContext_Names SecPkgContext_NamesA
+# define PSecPkgContext_Names PSecPkgContext_NamesA
+#endif // !UNICODE
+
+typedef struct _SecPkgContext_Lifespan
+{
+ TimeStamp tsStart;
+ TimeStamp tsExpiry;
+} SecPkgContext_Lifespan, SEC_FAR * PSecPkgContext_Lifespan;
+
+typedef struct _SecPkgContext_DceInfo
+{
+ unsigned long AuthzSvc;
+ void SEC_FAR * pPac;
+} SecPkgContext_DceInfo, SEC_FAR * PSecPkgContext_DceInfo;
+
+typedef struct _SecPkgContext_KeyInfoA
+{
+ SEC_CHAR SEC_FAR * sSignatureAlgorithmName;
+ SEC_CHAR SEC_FAR * sEncryptAlgorithmName;
+ unsigned long KeySize;
+ unsigned long SignatureAlgorithm;
+ unsigned long EncryptAlgorithm;
+} SecPkgContext_KeyInfoA, SEC_FAR * PSecPkgContext_KeyInfoA;
+
+typedef struct _SecPkgContext_KeyInfoW
+{
+ SEC_WCHAR SEC_FAR * sSignatureAlgorithmName;
+ SEC_WCHAR SEC_FAR * sEncryptAlgorithmName;
+ unsigned long KeySize;
+ unsigned long SignatureAlgorithm;
+ unsigned long EncryptAlgorithm;
+} SecPkgContext_KeyInfoW, SEC_FAR * PSecPkgContext_KeyInfoW;
+
+#ifdef UNICODE
+#define SecPkgContext_KeyInfo SecPkgContext_KeyInfoW
+#define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoW
+#else
+#define SecPkgContext_KeyInfo SecPkgContext_KeyInfoA
+#define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoA
+#endif
+
+typedef struct _SecPkgContext_AuthorityA
+{
+ SEC_CHAR SEC_FAR * sAuthorityName;
+} SecPkgContext_AuthorityA, * PSecPkgContext_AuthorityA;
+
+typedef struct _SecPkgContext_AuthorityW
+{
+ SEC_WCHAR SEC_FAR * sAuthorityName;
+} SecPkgContext_AuthorityW, * PSecPkgContext_AuthorityW;
+
+#ifdef UNICODE
+#define SecPkgContext_Authority SecPkgContext_AuthorityW
+#define PSecPkgContext_Authority PSecPkgContext_AuthorityW
+#else
+#define SecPkgContext_Authority SecPkgContext_AuthorityA
+#define PSecPkgContext_Authority PSecPkgContext_AuthorityA
+#endif
+
+typedef struct _SecPkgContext_ProtoInfoA
+{
+ SEC_CHAR SEC_FAR * sProtocolName;
+ unsigned long majorVersion;
+ unsigned long minorVersion;
+} SecPkgContext_ProtoInfoA, SEC_FAR * PSecPkgContext_ProtoInfoA;
+
+typedef struct _SecPkgContext_ProtoInfoW
+{
+ SEC_WCHAR SEC_FAR * sProtocolName;
+ unsigned long majorVersion;
+ unsigned long minorVersion;
+} SecPkgContext_ProtoInfoW, SEC_FAR * PSecPkgContext_ProtoInfoW;
+
+#ifdef UNICODE
+#define SecPkgContext_ProtoInfo SecPkgContext_ProtoInfoW
+#define PSecPkgContext_ProtoInfo PSecPkgContext_ProtoInfoW
+#else
+#define SecPkgContext_ProtoInfo SecPkgContext_ProtoInfoA
+#define PSecPkgContext_ProtoInfo PSecPkgContext_ProtoInfoA
+#endif
+
+
+typedef struct _SecPkgContext_PasswordExpiry
+{
+ TimeStamp tsPasswordExpires;
+} SecPkgContext_PasswordExpiry, SEC_FAR * PSecPkgContext_PasswordExpiry;
+
+typedef void
+(SEC_ENTRY SEC_FAR * SEC_GET_KEY_FN) (
+ void SEC_FAR * Arg, // Argument passed in
+ void SEC_FAR * Principal, // Principal ID
+ unsigned long KeyVer, // Key Version
+ void SEC_FAR * SEC_FAR * Key, // Returned ptr to key
+ SECURITY_STATUS SEC_FAR * Status // returned status
+ );
+
+SECURITY_STATUS SEC_ENTRY
+AcquireCredentialsHandleW(
+#if ISSP_MODE == 0 // For Kernel mode
+ PSECURITY_STRING pPrincipal,
+ PSECURITY_STRING pPackage,
+#else
+ SEC_WCHAR SEC_FAR * pszPrincipal, // Name of principal
+ SEC_WCHAR SEC_FAR * pszPackage, // Name of package
+#endif
+ unsigned long fCredentialUse, // Flags indicating use
+ void SEC_FAR * pvLogonId, // Pointer to logon ID
+ void SEC_FAR * pAuthData, // Package specific data
+ SEC_GET_KEY_FN pGetKeyFn, // Pointer to GetKey() func
+ void SEC_FAR * pvGetKeyArgument, // Value to pass to GetKey()
+ PCredHandle phCredential, // (out) Cred Handle
+ PTimeStamp ptsExpiry // (out) Lifetime (optional)
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * ACQUIRE_CREDENTIALS_HANDLE_FN_W)(
+#if ISSP_MODE == 0
+ PSECURITY_STRING,
+ PSECURITY_STRING,
+#else
+ SEC_WCHAR SEC_FAR *,
+ SEC_WCHAR SEC_FAR *,
+#endif
+ unsigned long,
+ void SEC_FAR *,
+ void SEC_FAR *,
+ SEC_GET_KEY_FN,
+ void SEC_FAR *,
+ PCredHandle,
+ PTimeStamp);
+
+
+SECURITY_STATUS SEC_ENTRY
+AcquireCredentialsHandleA(
+ SEC_CHAR SEC_FAR * pszPrincipal, // Name of principal
+ SEC_CHAR SEC_FAR * pszPackage, // Name of package
+ unsigned long fCredentialUse, // Flags indicating use
+ void SEC_FAR * pvLogonId, // Pointer to logon ID
+ void SEC_FAR * pAuthData, // Package specific data
+ SEC_GET_KEY_FN pGetKeyFn, // Pointer to GetKey() func
+ void SEC_FAR * pvGetKeyArgument, // Value to pass to GetKey()
+ PCredHandle phCredential, // (out) Cred Handle
+ PTimeStamp ptsExpiry // (out) Lifetime (optional)
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * ACQUIRE_CREDENTIALS_HANDLE_FN_A)(
+ SEC_CHAR SEC_FAR *,
+ SEC_CHAR SEC_FAR *,
+ unsigned long,
+ void SEC_FAR *,
+ void SEC_FAR *,
+ SEC_GET_KEY_FN,
+ void SEC_FAR *,
+ PCredHandle,
+ PTimeStamp);
+
+#ifdef UNICODE
+# define AcquireCredentialsHandle AcquireCredentialsHandleW
+# define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_W
+#else
+# define AcquireCredentialsHandle AcquireCredentialsHandleA
+# define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_A
+#endif // !UNICODE
+
+
+
+SECURITY_STATUS SEC_ENTRY
+FreeCredentialsHandle(
+ PCredHandle phCredential // Handle to free
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * FREE_CREDENTIALS_HANDLE_FN)(
+ PCredHandle );
+
+
+
+////////////////////////////////////////////////////////////////////////
+///
+/// Context Management Functions
+///
+////////////////////////////////////////////////////////////////////////
+
+SECURITY_STATUS SEC_ENTRY
+InitializeSecurityContextW(
+ PCredHandle phCredential, // Cred to base context
+ PCtxtHandle phContext, // Existing context (OPT)
+#if ISSP_MODE == 0
+ PSECURITY_STRING pTargetName,
+#else
+ SEC_WCHAR SEC_FAR * pszTargetName, // Name of target
+#endif
+ unsigned long fContextReq, // Context Requirements
+ unsigned long Reserved1, // Reserved, MBZ
+ unsigned long TargetDataRep, // Data rep of target
+ PSecBufferDesc pInput, // Input Buffers
+ unsigned long Reserved2, // Reserved, MBZ
+ PCtxtHandle phNewContext, // (out) New Context handle
+ PSecBufferDesc pOutput, // (inout) Output Buffers
+ unsigned long SEC_FAR * pfContextAttr, // (out) Context attrs
+ PTimeStamp ptsExpiry // (out) Life span (OPT)
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * INITIALIZE_SECURITY_CONTEXT_FN_W)(
+ PCredHandle,
+ PCtxtHandle,
+#if ISSP_MODE == 0
+ PSECURITY_STRING,
+#else
+ SEC_WCHAR SEC_FAR *,
+#endif
+ unsigned long,
+ unsigned long,
+ unsigned long,
+ PSecBufferDesc,
+ unsigned long,
+ PCtxtHandle,
+ PSecBufferDesc,
+ unsigned long SEC_FAR *,
+ PTimeStamp);
+
+
+SECURITY_STATUS SEC_ENTRY
+InitializeSecurityContextA(
+ PCredHandle phCredential, // Cred to base context
+ PCtxtHandle phContext, // Existing context (OPT)
+ SEC_CHAR SEC_FAR * pszTargetName, // Name of target
+ unsigned long fContextReq, // Context Requirements
+ unsigned long Reserved1, // Reserved, MBZ
+ unsigned long TargetDataRep, // Data rep of target
+ PSecBufferDesc pInput, // Input Buffers
+ unsigned long Reserved2, // Reserved, MBZ
+ PCtxtHandle phNewContext, // (out) New Context handle
+ PSecBufferDesc pOutput, // (inout) Output Buffers
+ unsigned long SEC_FAR * pfContextAttr, // (out) Context attrs
+ PTimeStamp ptsExpiry // (out) Life span (OPT)
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * INITIALIZE_SECURITY_CONTEXT_FN_A)(
+ PCredHandle,
+ PCtxtHandle,
+ SEC_CHAR SEC_FAR *,
+ unsigned long,
+ unsigned long,
+ unsigned long,
+ PSecBufferDesc,
+ unsigned long,
+ PCtxtHandle,
+ PSecBufferDesc,
+ unsigned long SEC_FAR *,
+ PTimeStamp);
+
+#ifdef UNICODE
+# define InitializeSecurityContext InitializeSecurityContextW
+# define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_W
+#else
+# define InitializeSecurityContext InitializeSecurityContextA
+# define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_A
+#endif // !UNICODE
+
+
+
+SECURITY_STATUS SEC_ENTRY
+AcceptSecurityContext(
+ PCredHandle phCredential, // Cred to base context
+ PCtxtHandle phContext, // Existing context (OPT)
+ PSecBufferDesc pInput, // Input buffer
+ unsigned long fContextReq, // Context Requirements
+ unsigned long TargetDataRep, // Target Data Rep
+ PCtxtHandle phNewContext, // (out) New context handle
+ PSecBufferDesc pOutput, // (inout) Output buffers
+ unsigned long SEC_FAR * pfContextAttr, // (out) Context attributes
+ PTimeStamp ptsExpiry // (out) Life span (OPT)
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * ACCEPT_SECURITY_CONTEXT_FN)(
+ PCredHandle,
+ PCtxtHandle,
+ PSecBufferDesc,
+ unsigned long,
+ unsigned long,
+ PCtxtHandle,
+ PSecBufferDesc,
+ unsigned long SEC_FAR *,
+ PTimeStamp);
+
+
+
+SECURITY_STATUS SEC_ENTRY
+CompleteAuthToken(
+ PCtxtHandle phContext, // Context to complete
+ PSecBufferDesc pToken // Token to complete
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * COMPLETE_AUTH_TOKEN_FN)(
+ PCtxtHandle,
+ PSecBufferDesc);
+
+
+SECURITY_STATUS SEC_ENTRY
+ImpersonateSecurityContext(
+ PCtxtHandle phContext // Context to impersonate
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * IMPERSONATE_SECURITY_CONTEXT_FN)(
+ PCtxtHandle);
+
+
+
+SECURITY_STATUS SEC_ENTRY
+RevertSecurityContext(
+ PCtxtHandle phContext // Context from which to re
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * REVERT_SECURITY_CONTEXT_FN)(
+ PCtxtHandle);
+
+
+SECURITY_STATUS SEC_ENTRY
+QuerySecurityContextToken(
+ PCtxtHandle phContext,
+ void SEC_FAR * Token
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * QUERY_SECURITY_CONTEXT_TOKEN_FN)(
+ PCtxtHandle, void SEC_FAR *);
+
+
+
+SECURITY_STATUS SEC_ENTRY
+DeleteSecurityContext(
+ PCtxtHandle phContext // Context to delete
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * DELETE_SECURITY_CONTEXT_FN)(
+ PCtxtHandle);
+
+
+
+SECURITY_STATUS SEC_ENTRY
+ApplyControlToken(
+ PCtxtHandle phContext, // Context to modify
+ PSecBufferDesc pInput // Input token to apply
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * APPLY_CONTROL_TOKEN_FN)(
+ PCtxtHandle, PSecBufferDesc);
+
+
+
+SECURITY_STATUS SEC_ENTRY
+QueryContextAttributesW(
+ PCtxtHandle phContext, // Context to query
+ unsigned long ulAttribute, // Attribute to query
+ void SEC_FAR * pBuffer // Buffer for attributes
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * QUERY_CONTEXT_ATTRIBUTES_FN_W)(
+ PCtxtHandle,
+ unsigned long,
+ void SEC_FAR *);
+
+SECURITY_STATUS SEC_ENTRY
+QueryContextAttributesA(
+ PCtxtHandle phContext, // Context to query
+ unsigned long ulAttribute, // Attribute to query
+ void SEC_FAR * pBuffer // Buffer for attributes
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * QUERY_CONTEXT_ATTRIBUTES_FN_A)(
+ PCtxtHandle,
+ unsigned long,
+ void SEC_FAR *);
+
+#ifdef UNICODE
+# define QueryContextAttributes QueryContextAttributesW
+# define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_W
+#else
+# define QueryContextAttributes QueryContextAttributesA
+# define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_A
+#endif // !UNICODE
+
+
+SECURITY_STATUS SEC_ENTRY
+QueryCredentialsAttributesW(
+ PCredHandle phCredential, // Credential to query
+ unsigned long ulAttribute, // Attribute to query
+ void SEC_FAR * pBuffer // Buffer for attributes
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * QUERY_CREDENTIALS_ATTRIBUTES_FN_W)(
+ PCredHandle,
+ unsigned long,
+ void SEC_FAR *);
+
+SECURITY_STATUS SEC_ENTRY
+QueryCredentialsAttributesA(
+ PCredHandle phCredential, // Credential to query
+ unsigned long ulAttribute, // Attribute to query
+ void SEC_FAR * pBuffer // Buffer for attributes
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * QUERY_CREDENTIALS_ATTRIBUTES_FN_A)(
+ PCredHandle,
+ unsigned long,
+ void SEC_FAR *);
+
+#ifdef UNICODE
+# define QueryCredentialsAttributes QueryCredentialsAttributesW
+# define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_W
+#else
+# define QueryCredentialsAttributes QueryCredentialsAttributesA
+# define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_A
+#endif // !UNICODE
+
+
+
+SECURITY_STATUS SEC_ENTRY
+FreeContextBuffer(
+ void SEC_FAR * pvContextBuffer // buffer to free
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * FREE_CONTEXT_BUFFER_FN)(
+ void SEC_FAR *);
+
+
+
+///////////////////////////////////////////////////////////////////
+////
+//// Message Support API
+////
+//////////////////////////////////////////////////////////////////
+
+SECURITY_STATUS SEC_ENTRY
+MakeSignature(
+ PCtxtHandle phContext, // Context to use
+ unsigned long fQOP, // Quality of Protection
+ PSecBufferDesc pMessage, // Message to sign
+ unsigned long MessageSeqNo // Message Sequence Num.
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * MAKE_SIGNATURE_FN)(
+ PCtxtHandle,
+ unsigned long,
+ PSecBufferDesc,
+ unsigned long);
+
+
+
+SECURITY_STATUS SEC_ENTRY
+VerifySignature(
+ PCtxtHandle phContext, // Context to use
+ PSecBufferDesc pMessage, // Message to verify
+ unsigned long MessageSeqNo, // Sequence Num.
+ unsigned long SEC_FAR * pfQOP // QOP used
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * VERIFY_SIGNATURE_FN)(
+ PCtxtHandle,
+ PSecBufferDesc,
+ unsigned long,
+ unsigned long SEC_FAR *);
+
+
+
+
+
+///////////////////////////////////////////////////////////////////////////
+////
+//// Misc.
+////
+///////////////////////////////////////////////////////////////////////////
+
+
+SECURITY_STATUS SEC_ENTRY
+EnumerateSecurityPackagesW(
+ unsigned long SEC_FAR * pcPackages, // Receives num. packages
+ PSecPkgInfoW SEC_FAR * ppPackageInfo // Receives array of info
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * ENUMERATE_SECURITY_PACKAGES_FN_W)(
+ unsigned long SEC_FAR *,
+ PSecPkgInfoW SEC_FAR *);
+
+
+
+SECURITY_STATUS SEC_ENTRY
+EnumerateSecurityPackagesA(
+ unsigned long SEC_FAR * pcPackages, // Receives num. packages
+ PSecPkgInfoA SEC_FAR * ppPackageInfo // Receives array of info
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * ENUMERATE_SECURITY_PACKAGES_FN_A)(
+ unsigned long SEC_FAR *,
+ PSecPkgInfoA SEC_FAR *);
+
+#ifdef UNICODE
+# define EnumerateSecurityPackages EnumerateSecurityPackagesW
+# define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_W
+#else
+# define EnumerateSecurityPackages EnumerateSecurityPackagesA
+# define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_A
+#endif // !UNICODE
+
+
+
+SECURITY_STATUS SEC_ENTRY
+QuerySecurityPackageInfoW(
+#if ISSP_MODE == 0
+ PSECURITY_STRING pPackageName,
+#else
+ SEC_WCHAR SEC_FAR * pszPackageName, // Name of package
+#endif
+ PSecPkgInfoW SEC_FAR *ppPackageInfo // Receives package info
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * QUERY_SECURITY_PACKAGE_INFO_FN_W)(
+#if ISSP_MODE == 0
+ PSECURITY_STRING,
+#else
+ SEC_WCHAR SEC_FAR *,
+#endif
+ PSecPkgInfoW SEC_FAR *);
+
+
+
+SECURITY_STATUS SEC_ENTRY
+QuerySecurityPackageInfoA(
+ SEC_CHAR SEC_FAR * pszPackageName, // Name of package
+ PSecPkgInfoA SEC_FAR *ppPackageInfo // Receives package info
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * QUERY_SECURITY_PACKAGE_INFO_FN_A)(
+ SEC_CHAR SEC_FAR *,
+ PSecPkgInfoA SEC_FAR *);
+
+#ifdef UNICODE
+# define QuerySecurityPackageInfo QuerySecurityPackageInfoW
+# define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_W
+#else
+# define QuerySecurityPackageInfo QuerySecurityPackageInfoA
+# define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_A
+#endif // !UNICODE
+
+
+#if ISSP_MODE == 0
+
+//
+// Deferred mode calls for rdr
+//
+
+SECURITY_STATUS SEC_ENTRY
+DeleteSecurityContextDefer(
+ PCtxtHandle phContext);
+
+SECURITY_STATUS SEC_ENTRY
+FreeCredentialsHandleDefer(
+ PCredHandle phCreds);
+
+#endif
+
+typedef enum _SecDelegationType {
+ SecFull,
+ SecService,
+ SecTree,
+ SecDirectory,
+ SecObject
+} SecDelegationType, * PSecDelegationType;
+
+SECURITY_STATUS SEC_ENTRY
+DelegateSecurityContext(
+ PCtxtHandle phContext, // IN Active context to delegate
+#if ISSP_MODE == 0
+ PSECURITY_STRING pTarget, // IN Target path
+#else
+ SEC_CHAR SEC_FAR * pszTarget,
+#endif
+ SecDelegationType DelegationType, // IN Type of delegation
+ PTimeStamp pExpiry, // IN OPTIONAL time limit
+ PSecBuffer pPackageParameters, // IN OPTIONAL package specific
+ PSecBufferDesc pOutput); // OUT Token for applycontroltoken.
+
+
+///////////////////////////////////////////////////////////////////////////
+////
+//// Proxies
+////
+///////////////////////////////////////////////////////////////////////////
+
+
+//
+// Proxies are only available on NT platforms
+//
+
+#ifdef NT_INCLUDED
+
+typedef enum _SSPI_PROXY_CLASS_TAG {
+ SspiProxyFull,
+ SspiProxyService,
+ SspiProxyTree,
+ SspiProxyDirectory
+} _SSPI_PROXY_CLASS;
+
+#ifndef SSPI_PROXY_CLASS
+#define SSPI_PROXY_CLASS _SSPI_PROXY_CLASS
+#endif
+
+#ifndef _DWORD_DEFINED
+#define _DWORD_DEFINED
+typedef unsigned long DWORD;
+#endif // !_DWORD_DEFINED
+
+
+
+
+//
+// proxy access rights
+//
+#define PROXY_READ 0x01 // reading of proxy data
+#define PROXY_WRITE 0x02 // writing of proxy data
+#define PROXY_INVOKE 0x04 // invoking an existing proxy
+
+#define PROXY_ALL_ACCESS ( READ_CONTROL | WRITE_DAC | DELETE | 0x07 )
+
+#define PROXY_GENERIC_READ PROXY_READ
+#define PROXY_GENERIC_WRITE PROXY_WRITE
+#define PROXY_GENERIC_EXECUTE PROXY_INVOKE
+#define PROXY_GENERIC_ALL ( PROXY_READ | \
+ PROXY_WRITE | \
+ PROXY_INVOKE | \
+ WRITE_DAC | \
+ READ_CONTROL | \
+ DELETE )
+
+#define GRANTOR_DEFAULT_ACCESS ( WRITE_DAC | \
+ READ_CONTROL | \
+ DELETE | \
+ PROXY_READ | \
+ PROXY_WRITE )
+
+#define GRANTEE_DEFAULT_ACCESS ( PROXY_INVOKE )
+
+#define ADMIN_DEFAULT_ACCESS ( WRITE_DAC | \
+ READ_CONTROL | \
+ DELETE | \
+ PROXY_READ )
+
+
+//
+// Types available for use with proxy APIs
+//
+typedef enum _SECURITY_INFORMATION_TYPE {
+ GranteeList, // simple list of grantees' DN
+ ExplicitAccess, // list of EXPLICIT_ACCESSes
+ SecurityDescriptor // SECURITY_DESCRIPTOR
+} SECURITY_INFORMATION_TYPE;
+
+typedef struct _SECURITY_ACCESS_INFO {
+ SECURITY_INFORMATION_TYPE ulType;
+ VOID SEC_FAR * pvData;
+} SECURITY_ACCESS_INFO, SEC_FAR * PSECURITY_ACCESS_INFO;
+
+#if 0
+#include <accctrl.h>
+typedef struct _PROXY_ACCESS_LIST {
+ ULONG cAccesses;
+ EXPLICIT_ACCESS SEC_FAR * pAccesses;
+} PROXY_ACCESS_LIST, SEC_FAR * PPROXY_ACCESS_LIST;
+#endif
+
+typedef struct _PROXY_GRANTEE_LIST {
+ ULONG cGrantees;
+#if ISSP_MODE == 0
+ PSECURITY_STRING * ppssGrantees;
+#else
+ SEC_WCHAR SEC_FAR * SEC_FAR * ppwszGrantees;
+#endif
+} PROXY_GRANTEE_LIST, SEC_FAR * PPROXY_GRANTEE_LIST;
+
+typedef struct _PROXY_REFERENCE {
+ GUID gIssuingDomain;
+ GUID gProxyId;
+} PROXY_REFERENCE, SEC_FAR * PPROXY_REFERENCE;
+
+
+//
+// GrantProxy API
+//
+SECURITY_STATUS SEC_ENTRY
+GrantProxyW(
+ PCredHandle phCredential, // (in) Handle to base proxy on
+#if ISSP_MODE == 0
+ PSECURITY_STRING pssProxyName, // (in optional) proxy name
+#else
+ SEC_WCHAR SEC_FAR * pwszProxyName,
+#endif
+ SSPI_PROXY_CLASS ProxyClass, // (in) class requested
+#if ISSP_MODE == 0
+ PSECURITY_STRING pssTarget,
+#else
+ SEC_WCHAR SEC_FAR * pwszTarget, // (in) Target of proxy
+#endif
+ unsigned long ContainerMask, // (in) Access mask
+ unsigned long ObjectMask, // (in) Access mask
+ PTimeStamp tsExpiry, // (in) time proxy expires
+ PSECURITY_ACCESS_INFO pAccessInfo, // (in) grantees and accesses
+ PPROXY_REFERENCE phProxy // (out) proxy handle
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * GRANT_PROXY_FN_W)(
+ PCredHandle,
+#if ISSP_MODE == 0
+ PSECURITY_STRING,
+#else
+ SEC_WCHAR SEC_FAR *,
+#endif
+ SSPI_PROXY_CLASS,
+#if ISSP_MODE == 0
+ PSECURITY_STRING,
+#else
+ SEC_WCHAR SEC_FAR *,
+#endif
+ unsigned long,
+ unsigned long,
+ PTimeStamp,
+ PSECURITY_ACCESS_INFO,
+ PPROXY_REFERENCE );
+
+
+SECURITY_STATUS SEC_ENTRY
+GrantProxyA(
+ PCredHandle phCredential, // (in) Handle to base proxy on
+ SEC_CHAR SEC_FAR * pszProxyName, // (in optional) proxy name
+ SSPI_PROXY_CLASS ProxyClass, // (in) class requested
+ SEC_CHAR SEC_FAR * pszTarget, // (in) Target of proxy
+ unsigned long ContainerMask, // (in) Access mask
+ unsigned long ObjectMask, // (in) Access mask
+ PTimeStamp ptsExpiry, // (in) time proxy expires
+ PSECURITY_ACCESS_INFO pAccessInfo, // (in) grantees and accesses
+ PPROXY_REFERENCE phProxy // (out) proxy handle
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * GRANT_PROXY_FN_A)(
+ PCredHandle,
+ SEC_CHAR SEC_FAR *,
+ SSPI_PROXY_CLASS,
+ SEC_CHAR SEC_FAR *,
+ unsigned long,
+ unsigned long,
+ PTimeStamp,
+ PSECURITY_ACCESS_INFO,
+ PPROXY_REFERENCE );
+
+
+#ifdef UNICODE
+# define GrantProxy GrantProxyW
+# define GRANT_PROXY_FN GRANT_PROXY_FN_W
+#else
+# define GrantProxy GrantProxyA
+# define GRANT_PROXY_FN GRANT_PROXY_FN_A
+#endif // !UNICODE
+
+//
+// RevokeProxy API
+//
+SECURITY_STATUS SEC_ENTRY
+RevokeProxyW(
+ PCredHandle phCredential, // (in) credentials
+ PPROXY_REFERENCE phProxy, // (in) proxy handle
+#if ISSP_MODE == 0
+ PSECURITY_STRING pssProxyName
+#else
+ SEC_WCHAR SEC_FAR * pwszProxyName // (in optional) Proxy name
+#endif
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * REVOKE_PROXY_FN_W)(
+ PCredHandle,
+ PPROXY_REFERENCE,
+#if ISSP_MODE == 0
+ PSECURITY_STRING
+#else
+ SEC_WCHAR SEC_FAR *
+#endif
+ );
+
+SECURITY_STATUS SEC_ENTRY
+RevokeProxyA(
+ PCredHandle phCredential, // (in) credentials
+ PPROXY_REFERENCE phProxy, // (in) proxy handle
+ SEC_CHAR SEC_FAR * pszProxyName // (in) proxy name
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * REVOKE_PROXY_FN_A)(
+ PCredHandle,
+ PPROXY_REFERENCE,
+ SEC_CHAR SEC_FAR *
+ );
+
+#ifdef UNICODE
+# define RevokeProxy RevokeProxyW
+# define REVOKE_PROXY_FN REVOKE_PROXY_FN_W
+#else
+# define RevokeProxy RevokeProxyA
+# define REVOKE_PROXY_FN REVOKE_PROXY_FN_A
+#endif // !UNICODE
+
+
+//
+// InvokeProxy API
+//
+SECURITY_STATUS SEC_ENTRY
+InvokeProxyW(
+ PCredHandle phCredential, // (in) handle to base proxy on
+ PPROXY_REFERENCE phProxy, // (in) proxy handle
+#if ISSP_MODE == 0
+ PSECURITY_STRING pssProxyName,
+#else
+ SEC_WCHAR SEC_FAR * pwszProxyName, // (in optional) Proxy name
+#endif
+ PCtxtHandle phContext // (out) security context
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * INVOKE_PROXY_FN_W)(
+ PCredHandle,
+ PPROXY_REFERENCE,
+#if ISSP_MODE == 0
+ PSECURITY_STRING,
+#else
+ SEC_WCHAR SEC_FAR *,
+#endif
+ PCtxtHandle );
+
+SECURITY_STATUS SEC_ENTRY
+InvokeProxyA(
+ PCredHandle phCredential, // (in) handle to base proxy on
+ PPROXY_REFERENCE phProxy, // (in) proxy handle
+ SEC_CHAR SEC_FAR * pszProxyName, // (in optional) Proxy name
+ PCtxtHandle phContext // (out) security context
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * INVOKE_PROXY_FN_A)(
+ PCredHandle,
+ PPROXY_REFERENCE,
+ SEC_CHAR SEC_FAR *,
+ PCtxtHandle );
+
+#ifdef UNICODE
+# define InvokeProxy InvokeProxyW
+# define INVOKE_PROXY_FN INVOKE_PROXY_FN_W
+#else
+# define InvokeProxy InvokeProxyA
+# define INVOKE_PROXY_FN INVOKE_PROXY_FN_A
+#endif // !UNICODE
+
+
+//
+// RenewProxy API
+//
+SECURITY_STATUS SEC_ENTRY
+RenewProxyW(
+ PCredHandle phCredential, // (in) credentials
+ PPROXY_REFERENCE phProxy, // (in) proxy handle
+#if ISSP_MODE == 0
+ PSECURITY_STRING pssProxyName,
+#else
+ SEC_WCHAR SEC_FAR * pwszProxyName, // (in) proxy name
+#endif
+ PTimeStamp ptsExpiry // (in) new absolute expiry
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * RENEW_PROXY_FN_W)(
+ PCredHandle,
+ PPROXY_REFERENCE,
+#if ISSP_MODE == 0
+ PSECURITY_STRING,
+#else
+ SEC_WCHAR SEC_FAR *,
+#endif
+ PTimeStamp
+ );
+
+SECURITY_STATUS SEC_ENTRY
+RenewProxyA(
+ PCredHandle phCredential, // (in) credentials
+ PPROXY_REFERENCE phProxy, // (in) proxy handle
+ SEC_CHAR SEC_FAR * pszProxyName, // (in) proxy name
+ PTimeStamp ptsExpiry // (in) new expiry time
+ );
+
+typedef SECURITY_STATUS
+(SEC_ENTRY * RENEW_PROXY_FN_A)(
+ PCredHandle,
+ PPROXY_REFERENCE,
+ SEC_CHAR SEC_FAR *,
+ PTimeStamp
+ );
+
+#ifdef UNICODE
+# define RenewProxy RenewProxyW
+# define RENEW_PROXY_FN RENEW_PROXY_FN_W
+#else
+# define RenewProxy RenewProxyA
+# define RENEW_PROXY_FN RENEW_PROXY_FN_A
+#endif // !UNICODE
+
+
+#endif // NT_INCLUDED
+
+///////////////////////////////////////////////////////////////////////////////
+////
+//// Fast access for RPC:
+////
+///////////////////////////////////////////////////////////////////////////////
+
+#define SECURITY_ENTRYPOINTW SEC_TEXT("InitSecurityInterfaceW")
+#define SECURITY_ENTRYPOINTA SEC_TEXT("InitSecurityInterfaceA")
+#define SECURITY_ENTRYPOINT16 "INITSECURITYINTERFACEA"
+
+#ifdef SECURITY_WIN32
+# ifdef UNICODE
+# define SECURITY_ENTRYPOINT SECURITY_ENTRYPOINTW
+# else // UNICODE
+# define SECURITY_ENTRYPOINT SECURITY_ENTRYPOINTA
+# endif // UNICODE
+#else // SECURITY_WIN32
+# define SECURITY_ENTRYPOINT SECURITY_ENTRYPOINT16
+#endif // SECURITY_WIN32
+
+
+typedef struct _SECURITY_FUNCTION_TABLE_W {
+ unsigned long dwVersion;
+ ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW;
+ void SEC_FAR * Reserved1;
+// QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW;
+ ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW;
+ FREE_CREDENTIALS_HANDLE_FN FreeCredentialHandle;
+ void SEC_FAR * Reserved2;
+ INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW;
+ ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext;
+ COMPLETE_AUTH_TOKEN_FN CompleteAuthToken;
+ DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext;
+ APPLY_CONTROL_TOKEN_FN ApplyControlToken;
+ QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW;
+ IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext;
+ REVERT_SECURITY_CONTEXT_FN RevertSecurityContext;
+ MAKE_SIGNATURE_FN MakeSignature;
+ VERIFY_SIGNATURE_FN VerifySignature;
+ FREE_CONTEXT_BUFFER_FN FreeContextBuffer;
+ QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW;
+ void SEC_FAR * Reserved3;
+ void SEC_FAR * Reserved4;
+#ifdef NT_INCLUDED
+ GRANT_PROXY_FN_W GrantProxyW;
+ REVOKE_PROXY_FN_W RevokeProxy;
+ INVOKE_PROXY_FN_W InvokeProxy;
+ RENEW_PROXY_FN_W RenewProxy;
+#else
+ void SEC_FAR * GrantProxyW;
+ void SEC_FAR * RevokeProxy;
+ void SEC_FAR * InvokeProxy;
+ void SEC_FAR * RenewProxy;
+#endif
+ QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken;
+} SecurityFunctionTableW, SEC_FAR * PSecurityFunctionTableW;
+
+typedef struct _SECURITY_FUNCTION_TABLE_A {
+ unsigned long dwVersion;
+ ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA;
+ void SEC_FAR * Reserved1;
+// QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA;
+ ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA;
+ FREE_CREDENTIALS_HANDLE_FN FreeCredentialHandle;
+ void SEC_FAR * Reserved2;
+ INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA;
+ ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext;
+ COMPLETE_AUTH_TOKEN_FN CompleteAuthToken;
+ DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext;
+ APPLY_CONTROL_TOKEN_FN ApplyControlToken;
+ QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA;
+ IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext;
+ REVERT_SECURITY_CONTEXT_FN RevertSecurityContext;
+ MAKE_SIGNATURE_FN MakeSignature;
+ VERIFY_SIGNATURE_FN VerifySignature;
+ FREE_CONTEXT_BUFFER_FN FreeContextBuffer;
+ QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA;
+ void SEC_FAR * Reserved3;
+ void SEC_FAR * Reserved4;
+#ifdef NT_INCLUDED
+ GRANT_PROXY_FN_A GrantProxyA;
+ REVOKE_PROXY_FN_A RevokeProxy;
+ INVOKE_PROXY_FN_A InvokeProxy;
+ RENEW_PROXY_FN_A RenewProxy;
+#else
+ void SEC_FAR * GrantProxyA;
+ void SEC_FAR * RevokeProxy;
+ void SEC_FAR * InvokeProxy;
+ void SEC_FAR * RenewProxy;
+#endif
+ QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken;
+} SecurityFunctionTableA, SEC_FAR * PSecurityFunctionTableA;
+
+#ifdef UNICODE
+# define SecurityFunctionTable SecurityFunctionTableW
+# define PSecurityFunctionTable PSecurityFunctionTableW
+#else
+# define SecurityFunctionTable SecurityFunctionTableA
+# define PSecurityFunctionTable PSecurityFunctionTableA
+#endif // !UNICODE
+
+#define SECURITY_
+
+#define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION 1
+
+
+PSecurityFunctionTableA SEC_ENTRY
+InitSecurityInterfaceA(
+ void
+ );
+
+typedef PSecurityFunctionTableA
+(SEC_ENTRY * INIT_SECURITY_INTERFACE_A)(void);
+
+PSecurityFunctionTableW SEC_ENTRY
+InitSecurityInterfaceW(
+ void
+ );
+
+typedef PSecurityFunctionTableW
+(SEC_ENTRY * INIT_SECURITY_INTERFACE_W)(void);
+
+#ifdef UNICODE
+# define InitSecurityInterface InitSecurityInterfaceW
+# define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_W
+#else
+# define InitSecurityInterface InitSecurityInterfaceA
+# define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_A
+#endif // !UNICODE
+
+SECURITY_STATUS
+SEC_ENTRY
+AddSecurityPackageA(
+ SEC_CHAR SEC_FAR * pszPackageName,
+ void SEC_FAR * Reserved
+ );
+
+SECURITY_STATUS
+SEC_ENTRY
+AddSecurityPackageW(
+ SEC_WCHAR SEC_FAR * pszPackageName,
+ void SEC_FAR * Reserved
+ );
+
+#ifdef UNICODE
+#define AddSecurityPackage AddSecurityPackageW
+#else
+#define AddSecurityPackage AddSecurityPackageA
+#endif
+
+SECURITY_STATUS
+SEC_ENTRY
+DeleteSecurityPackageA(
+ SEC_CHAR SEC_FAR * pszPackageName );
+
+SECURITY_STATUS
+SEC_ENTRY
+DeleteSecurityPackageW(
+ SEC_WCHAR SEC_FAR * pszPackageName );
+
+#ifdef UNICODE
+#define DeleteSecurityPackage DeleteSecurityPackageW
+#else
+#define DeleteSecurityPackage DeleteSecurityPackageA
+#endif
+
+
+#ifdef SECURITY_DOS
+#pragma warning(default:4147)
+#endif
+
+#endif // __SSPI_H__
diff --git a/public/sdk/inc/sstream.hxx b/public/sdk/inc/sstream.hxx
new file mode 100644
index 000000000..a4723d768
--- /dev/null
+++ b/public/sdk/inc/sstream.hxx
@@ -0,0 +1,120 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: SStream.hxx
+//
+// Contents: Stream classes to serialize/deseriale C++ wrapper(s) for
+// restrictions, variants, etc.
+//
+// History: 01-Aug-94 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+#if !defined( __SSTREAM_HXX__ )
+#define __SSTREAM_HXX__
+
+//+-------------------------------------------------------------------------
+//
+// Class: PSerStream
+//
+// Purpose: Pure-virtual class used to serialize basic types.
+//
+// History: 28-Jul-94 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class PSerStream
+{
+public:
+
+ virtual ~PSerStream() {};
+
+ virtual void PutByte( BYTE b ) = 0;
+
+ virtual void PutChar( char const * pc, ULONG cc ) = 0;
+
+ virtual void PutWChar( WCHAR const * pwc, ULONG cc ) = 0;
+
+ virtual void PutUShort( USHORT us ) = 0;
+
+ virtual void PutULong( ULONG ul ) = 0;
+
+ virtual void PutLong( long l ) = 0;
+
+ virtual void PutFloat( float f ) = 0;
+
+ virtual void PutDouble( double d ) = 0;
+
+ virtual void PutString( char const * psz ) = 0;
+
+ virtual void PutWString( WCHAR const * pwsz ) = 0;
+
+ virtual void PutBlob( BYTE const * pb, ULONG cb ) = 0;
+
+ virtual void PutGUID( GUID const & guid ) = 0;
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: PDeSerStream
+//
+// Purpose: Pure-virtual class used to serialize basic types.
+//
+// History: 28-Jul-94 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+class PDeSerStream
+{
+public:
+
+ virtual ~PDeSerStream() {};
+
+ virtual BYTE GetByte() = 0;
+ virtual void SkipByte() = 0;
+
+ virtual void GetChar( char * pc, ULONG cc ) = 0;
+ virtual void SkipChar( ULONG cc ) = 0;
+
+ virtual void GetWChar( WCHAR * pwc, ULONG cc ) = 0;
+ virtual void SkipWChar( ULONG cc ) = 0;
+
+ virtual USHORT GetUShort() = 0;
+ virtual void SkipUShort() = 0;
+
+ virtual ULONG GetULong() = 0;
+ virtual void SkipULong() = 0;
+ virtual ULONG PeekULong() = 0;
+
+ virtual long GetLong() = 0;
+ virtual void SkipLong() = 0;
+
+#if defined(KERNEL) // Can not return floating point #'s in the kernel
+
+ virtual ULONG GetFloat() = 0;
+ virtual LONGLONG GetDouble() = 0;
+
+#else
+
+ virtual float GetFloat() = 0;
+ virtual double GetDouble() = 0;
+
+#endif
+
+ virtual void SkipFloat() = 0;
+ virtual void SkipDouble() = 0;
+
+ virtual char * GetString() = 0;
+
+ virtual WCHAR * GetWString() = 0;
+
+ virtual void GetBlob( BYTE * pb, ULONG cb ) = 0;
+ virtual void SkipBlob( ULONG cb ) = 0;
+
+ virtual void GetGUID( GUID & guid ) = 0;
+ virtual void SkipGUID() = 0;
+};
+
+#endif // __SSTREAM_HXX__
diff --git a/public/sdk/inc/stdclass.hxx b/public/sdk/inc/stdclass.hxx
new file mode 100644
index 000000000..e72a1ecb4
--- /dev/null
+++ b/public/sdk/inc/stdclass.hxx
@@ -0,0 +1,267 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: stdclass.hxx
+//
+// Contents: Helper class for implementing class factories.
+//
+// Macros: DECLARE_CLASSFACTORY
+// IMPLEMENT_CLASSFACTORY
+// DECLARE_CF_UNKNOWN_METHODS
+//
+// Classes: CStdFactory
+// CStdClassFactory
+//
+// Functions: DllAddRef
+// DllRelease
+//
+// History: 25-Mar-93 JohnEls Created.
+// 25-Apr-93 DavidBak Added dialog classes, message loop.
+// 28-May-93 MikeSe Split out from Pharos project
+// 2-Jul-93 ShannonC Split into CStdFactory and CStdClassFactory
+//
+// Summary of usage:
+//
+// 1. Declare your factory class as a subclass of CStdClassFactory
+// and implement the _CreateInstance method.
+//
+// If your class factory supports no interfaces other than
+// IClassFactory and has no instance data you can use the
+// DECLARE_CLASSFACTORY macro to do declare it.
+//
+// Otherwise you must do the declaration by hand. Then you
+// must implement the constructor for your class
+// including invoking the CStdClassFactory constructor in the
+// exact same way as DECLARE_CLASSFACTORY. In addition (if you
+// are supporting additional interfaces ) you must implement
+// the _QueryInterface method and also place an invocation
+// of DECLARE_CF_UNKNOWN_METHODS in your class definition.
+//
+// 2. Declare a single static instance of your class, in any
+// convenient source module (eg: the one containing the
+// implementation of _CreateInstance).
+//
+// 3. You DO NOT write implementations of DllGetClassObject or
+// DllCanUnloadNow; these are supplied automatically. However,
+// you must place exports for these functions in your .DEF file.
+// You can compose multiple classes into a single DLL simply
+// by linking the appropriate modules together. You must link
+// with $(COMMON)\SRC\STDCLASS\$(OBJDIR)\STDCLASS.LIB, which
+// should be listed in the LIBS line of FILELIST.MK *before*
+// $(CAIROLIB) [otherwise you will erroneously pick up
+// DllGetClassObject from ole2base.lib].
+//
+// If you are developing a LOCAL_SERVER rather than an
+// INPROC_SERVER you still need to link with the above library,
+// but you can safely ignore the Dll functions.
+//
+//
+//--------------------------------------------------------------------------
+
+#ifndef _STDCLASS_HXX_
+#define _STDCLASS_HXX_
+
+#include <windows.h>
+
+//+-------------------------------------------------------------------------
+//
+// Function: DllAddRef, DllRelease
+//
+// Synopsis: Bumps the DLL reference count
+//
+// Notes: These functions are used by INPROC_SERVER class implementors
+// whose class factories utilise the standard mechanism, and
+// hence inherit the standard implementations of DllGetClassObject
+// and DllCanUnloadNow.
+//
+// Call these functions to manipulate the reference count for
+// the DLL directly (as opposed to via AddRef/Release on a class
+// object).
+//
+//--------------------------------------------------------------------------
+
+STDAPI_(void) DllAddRef ( void );
+STDAPI_(void) DllRelease ( void );
+
+//+-------------------------------------------------------------------------
+//
+// Class: CStdClassFactory (cf)
+//
+// Synopsis: Standard implementation of a class factory. Class factory
+// implementations should inherit this class and implement the
+// method.
+//
+// Derivation: IClassFactory
+//
+// Notes: By deriving a class from this base class, you automatically
+// acquire implementations of DllGetClassObject and DllCanUnloadNow.
+// These can be ignored if implementing an LOCAL_SERVER.
+//
+//--------------------------------------------------------------------------
+
+class CStdClassFactory: public IClassFactory
+{
+public:
+ CStdClassFactory ( REFCLSID rcls );
+
+ //
+ // IUnknown methods
+ //
+
+ STDMETHOD(QueryInterface) ( REFIID iid, void** ppv );
+
+ STDMETHOD_(ULONG,AddRef) ( void );
+ STDMETHOD_(ULONG,Release) ( void );
+
+ //
+ // IClassFactory methods
+ //
+
+ STDMETHOD(CreateInstance) (
+ IUnknown* punkOuter,
+ REFIID iidInterface,
+ void** ppunkObject );
+
+ STDMETHOD(LockServer) ( BOOL fLock );
+
+protected:
+
+ friend HRESULT DllGetClassObject (
+ REFCLSID rclsid,
+ REFIID riid,
+ LPVOID FAR* ppv );
+ friend HRESULT DllCanUnloadNow ( void );
+ friend void DllAddRef ( void );
+ friend void DllRelease ( void );
+
+ // must be provided in subclass. Behaviour is as for CreateInstance.
+ STDMETHOD(_CreateInstance) (
+ IUnknown* punkOuter,
+ REFIID iidInterface,
+ void** ppunkObject ) PURE;
+
+ // overridden by subclass if the class supports interfaces
+ // other than IClassFactory. Behaviour is as for QueryInterface
+ // in respect of the additional interfaces. (Do not test for
+ // IClassFactory or IUnknown).
+ STDMETHOD(_QueryInterface) ( REFIID riid, void** ppv );
+
+ static ULONG _gcDllRefs;
+ static CStdClassFactory * _gpcfFirst;
+
+ REFCLSID _rcls;
+ CStdClassFactory * _pcfNext;
+ ULONG _cRefs;
+};
+
+//+-------------------------------------------------------------------------
+//
+// Macro: DECLARE_CLASSFACTORY
+//
+// Synopsis: Declares a class factory.
+//
+// Arguments: [cls] -- The class of object that the class factory creates.
+//
+// Note: Use this macro to declare a subclass of CStdClassFactory
+// which does not support any interfaces other than IClassFactory.
+// If your class object supports additional interfaces or has
+// any member variables you should duplicate the behaviour
+// of this macro (in respect of calling the base class
+// constructor) and also:
+//
+// - override the _QueryInterface method
+// - use the DECLARE_CF_UNKNOWN_METHODS macro within your
+// derived class declaration.
+//
+//--------------------------------------------------------------------------
+
+#define DECLARE_CLASSFACTORY(cls) \
+ \
+class cls##CF : public CStdClassFactory \
+{ \
+public: \
+ cls##CF() : \
+ CStdClassFactory(CLSID_##cls) {}; \
+protected: \
+ STDMETHOD(_CreateInstance)(IUnknown* pUnkOuter, \
+ REFIID iidInterface, \
+ void** ppv); \
+};
+
+//+-------------------------------------------------------------------------
+//
+// Macro: IMPLEMENT_CLASSFACTORY
+//
+// Synopsis: Implements the _CreateInstance method for a class factory.
+//
+// Arguments: [cls] -- The class of object that the class factory creates.
+// [ctrargs] -- A bracketed list of arguments to be passed
+// to the constructor of cls. Typically just ()
+//
+// Note: Use this macro when implementing a subclass of
+// CStdClassFactory that creates objects of a class derived
+// from CStdComponentObject.
+//
+//--------------------------------------------------------------------------
+
+#define IMPLEMENT_CLASSFACTORY(cls,ctrargs) \
+ \
+STDMETHODIMP cls##CF::_CreateInstance( \
+ IUnknown* punkOuter, \
+ REFIID riid, \
+ void** ppv) \
+{ \
+ cls* pInstance; \
+ HRESULT hr; \
+ \
+ pInstance = new cls ctrargs; \
+ if (pInstance == NULL) \
+ { \
+ hr = ResultFromScode(E_OUTOFMEMORY); \
+ } \
+ else \
+ { \
+ __try \
+ { \
+ hr = pInstance->InitInstance ( \
+ punkOuter, \
+ riid, \
+ ppv ); \
+ if ( FAILED(hr) ) \
+ { \
+ delete pInstance; \
+ } \
+ } \
+ __except(EXCEPTION_EXECUTE_HANDLER) \
+ { \
+ delete pInstance; \
+ hr = HRESULT_FROM_NT(GetExceptionCode()); \
+ } \
+ } \
+ return hr; \
+}
+
+//+-------------------------------------------------------------------------
+//
+// Macro: DECLARE_CF_UNKNOWN_METHODS
+//
+// Synopsis: Declares and implements the IUnknown methods in a derived
+// class which supports interfaces other than IClassFactory.
+//
+// Note: Place an invocation of this macro within the declaration
+// of the derived class.
+//
+//--------------------------------------------------------------------------
+
+#define DECLARE_CF_UNKNOWN_METHODS \
+ STDMETHOD(QueryInterface) ( REFIID riid, void ** ppv) \
+ { return CStdClassFactory::QueryInterface(riid,ppv);}; \
+ STDMETHOD_(ULONG,AddRef) ( void ) \
+ { return CStdClassFactory::AddRef();}; \
+ STDMETHOD_(ULONG,Release) ( void ) \
+ { return CStdClassFactory::Release();};
+
+#endif // _STDCLASS_HXX_
+
diff --git a/public/sdk/inc/stdobj.hxx b/public/sdk/inc/stdobj.hxx
new file mode 100644
index 000000000..6832ce55c
--- /dev/null
+++ b/public/sdk/inc/stdobj.hxx
@@ -0,0 +1,432 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: stdobj.hxx
+//
+// Contents: Standard component object support
+//
+// History: 3-June-93 MikeSe Created
+//
+// Notes: The contents of this file provide a standard infrastructure
+// for implementing (aggregatable) component objects, an amalgam
+// or work done by JohnEls and DonCl.
+//
+// The infrastructure supplies implementations of all the IUnknown
+// methods (both controlling and private), leaving the developer
+// to provide only the following:
+//
+// - initialisation
+// - destruction
+// - non-IUnknown methods of supported interfaces.
+//
+// The infrastructure assumes a static class factory object
+// (probably although not necessarily implemented using
+// CStdClassFactory) and a static description of the interfaces
+// supported or delegated through member variables.
+//
+// Summary of usage:
+//
+// 1. Declare your class as inheriting from CStdComponentObject.
+// Within the class definition, invoke the DECLARE_DELEGATED_UNKNOWN
+// macro to declare the required IUnknown methods. Do not include
+// IUnknown explicitly in the list of interface supported.
+//
+// 2. Use the BEGIN_CLASS, SUPPORTS(_EX), DELEGATES*
+// and END_CLASS macros to initialise the static class factory
+// and class descriptor for the class. This can be placed in any
+// convenient source file.
+//
+// These macros assume the following naming conventions, for
+// an implementation class named <cls>:
+//
+// - the class factory class is named <cls>CF.
+// - the class factory instance is named gcf<cls>Factory
+// - the class id for the class is named CLSID_<cls>
+// - the class descriptor for the class is named gcd<cls>Descriptor
+//
+// If you do not adhere to these conventions you will need to
+// duplicate the effect of the BEGIN_CLASS macro by hand, or
+// provide #define's of the above names to the actual names.
+//
+// 3. Implement class initialisation. A two-phase approach is used.
+// Any failure-free initialisation can be performed in the
+// constructor for the class, which *must* also invoke
+// the CStdComponentObject constructor, either through the
+// INIT_CLASS macro or an equivalent.
+//
+// If any of the initialisation is failure prone, provide an
+// implementation of the _InitInstance method which performs
+// this initialisation and returns an appropriate result code
+// in the contract of IClassFactory::CreateInstance.
+//
+// 4. Implement a destructor for your class, if you have any shutdown
+// requirements. The destructor should not assume that your
+// _InitInstance method (if any) has been called.
+//
+// 5. Implement the CreateInstance method for your class factory
+// (or _CreateInstance if using CStdClassFactory). This should
+// issue a 'new' on your class, and then invoke the (inherited)
+// InitInstance method.
+//
+// If you are using CStdClassFactory, you can use the
+// IMPLEMENT_CLASSFACTORY macro (defined in common\ih\stdclass.hxx)
+// to implement the _CreateInstance method, or in any case
+// you can look at the macro to get an idea of the general structure
+// you must follow.
+//
+//----------------------------------------------------------------------------
+
+#ifndef __STDOBJ_HXX__
+#define __STDOBJ_HXX__
+
+#include <windows.h>
+#include <ole2.h>
+#include <otrack.hxx>
+
+//+-------------------------------------------------------------------------
+//
+// Class: ITFDELTA
+//
+// Purpose: Defines an interface supported or delegated to.
+//
+// Notes: if piid is non-NULL
+// - a ulDelta with bit 31 set indicates a natively supported
+// interface, and (ulDelta&0x7FFFFFFF) gives the value which
+// must be added to the object's this pointer in order to
+// transform into the required interface pointer.
+// [in other words, the equivalent of doing (IFoo*)this]
+// - a ulDelta with bit 30 set indicates an interface pointer
+// which can be loaded directly from a member variable
+// at the offset (ulDelta&0x3FFFFFFF) from the object's this
+// pointer.
+// - otherwise ulDelta indicates an offset from the object's
+// this pointer to a member variable containing an IUnknown
+// pointer (a delegatee) which can be QI'd to get the interface
+// specified by piid.
+// if piid is NULL,
+// - ulDelta == 0x80000000L indicates the end of the table
+// for the class.
+// - otherwise, ulDelta gives the offset to an "else" delegatee
+// member variable. (See the DELEGATE_ELSE macro below).
+//
+//--------------------------------------------------------------------------
+
+class ITFDELTA
+{
+public:
+ const IID * piid;
+ ULONG ulDelta;
+};
+
+#define ITF_SUPPORTED 0x80000000L
+#define ITF_NO_QI 0x40000000L
+#define ITF_END 0x80000000L
+
+#define NOTDELEGATED(ulDelta) ((ulDelta & ITF_SUPPORTED)!=0)
+#define QIREQUIRED(ulDelta) ((ulDelta & ITF_NO_QI)==0)
+#define GETDELTA(ulDelta) (ulDelta & 0x3FFFFFFFL)
+#define MEMBEROFFSET(c,m) ((ULONG)&(((c *)0)->m))
+
+//+---------------------------------------------------------------------------
+//
+// Macros: SUPPORTS, SUPPORTS_EX, DELEGATES_DIRECT, DELEGATES_QI,
+// DELEGATES_ANY, END_INTERFACES
+//
+// These macros are used to declare ITFDELTA structures of various kinds.
+// They are intended to be used in conjunction with the BEGIN_CLASS and
+// END_CLASS macros (see below) and may not work correctly if used
+// otherwise.
+//
+// SUPPORTS is used to specify an interface that is supported directly
+// on the specified class.
+//
+// SUPPORTS_EX is used when an interface is inherited through more than one
+// parent, and you need to express which one to use.
+// SUPPORTS_EX(CFoo, IFoo, IPersist) says to use the IPersist inherited from
+// IFoo (as opposed to the one inherited from IPersistFile, say).
+//
+// DELEGATES_DIRECT specifies a member variable of the class which contains an
+// interface pointer to the specified interface.
+// IE: DELEGATES_DIRECT(CFoo,IFoo,_pmem) implies that _pmem is of type IFoo*.
+//
+// DELEGATES_QI is similar, except it specifies that the interface must be
+// obtained by issuing a QueryInterface on the pointer in the member variable.
+// (Thus the member variable can be of any type deriving from IUnknown). The
+// QueryInterface operation is permitted to fail.
+//
+// DELEGATES_ANY is similar to DELEGATES_QI except that any interface may
+// be requested from the referred to member variable. Thus it is a kind of
+// catchall.
+//
+// END_INTERFACES marks the end of the list. It is not used when END_CLASS
+// (see below) is used.
+//
+// Do not put semicolons at the ends of these statements.
+//
+// The built-in implementation of QueryInterface processes the ITFDELTA array
+// in the class descriptor in order, stopping as soon as the requested interface
+// is obtained. Thus DELEGATES_ANY entries, of which there may be several,
+// will normally appear last.
+//
+// If an interface which is part of a derivation chain is supported (eg:
+// IPersistStream, deriving from IPersist) then all the interfaces, except
+// IUnknown, must be listed. (i.e both IPersist and IPersistStream).
+//
+//----------------------------------------------------------------------------
+
+#define SUPPORTS(clsname, itfname) \
+ { \
+ &IID_##itfname, \
+ ((ULONG)((VOID *) ((itfname *)(clsname *) ITF_SUPPORTED))) \
+ },
+
+#define SUPPORTS_EX(clsname, itfprimary, itfname) \
+ { \
+ &IID_##itfname, \
+ ((ULONG)(VOID *)(itfname *)((itfprimary *)((clsname *) ITF_SUPPORTED))) \
+ },
+
+#define DELEGATES_DIRECT(clsname, itfname, iunkptr) \
+ { \
+ &IID_##itfname, \
+ MEMBEROFFSET(clsname, iunkptr)|ITF_NO_QI \
+ },
+
+#define DELEGATES_QI(clsname, itfname, iunkptr) \
+ { \
+ &IID_##itfname, \
+ MEMBEROFFSET(clsname, iunkptr) \
+ },
+
+#define DELEGATES_ANY(clsname, iunkptr) \
+{ \
+ NULL, \
+ MEMBEROFFSET(clsname, iunkptr) \
+},
+
+#define END_INTERFACES \
+ { \
+ NULL, \
+ ITF_END \
+ }
+
+//+-------------------------------------------------------------------------
+//
+// Class: CLASSDESCRIPTION
+//
+// Purpose: Static description of class required by infrastructure.
+//
+// Notes: When creating a CLASSDESCRIPTOR, use the SUPPORTS etc.
+// macros to declare the entries in the aitfd array (or
+// better still, use BEGIN_CLASS etc to create the whole
+// descriptor).
+//
+//--------------------------------------------------------------------------
+
+class CLASSDESCRIPTOR
+{
+public:
+ const CLSID * pcls; // the class id
+ char * pszClassName; // for object tracking, the
+ // printable name of the class
+ IClassFactory * pcf; // the class factory for the
+ // class, assumed static
+
+#pragma warning ( disable: 4200 ) // valid use of open struct
+ ITFDELTA aitfd[]; // supported/delegated interfaces
+#pragma warning ( default: 4200 )
+};
+
+//+-------------------------------------------------------------------------
+//
+// Macro: CLASSFACTORY_NAME, CLASSDESCRIPTOR_NAME
+//
+// Purpose: These macros generate the standard names for the class factory
+// and class descriptor instances for a class.
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+#define CLASSFACTORY_NAME(cls) gcf##cls##Factory
+#define CLASSDESCRIPTOR_NAME(cls) gcd##cls##Descriptor
+
+//+-------------------------------------------------------------------------
+//
+// Macro: BEGIN_CLASS
+//
+// Purpose: Declare the class factory and the first part of the
+// class descriptor.
+//
+// Notes: This macro is usually followed by zero or more ITFDELTA
+// declaration macros (SUPPORTS, etc) and then END_CLASS.
+//
+//--------------------------------------------------------------------------
+
+#define BEGIN_CLASS(cls) \
+ cls##CF CLASSFACTORY_NAME(cls); \
+ \
+ CLASSDESCRIPTOR CLASSDESCRIPTOR_NAME(cls) = { \
+ &CLSID_##cls, \
+ #cls, \
+ (IClassFactory*)&gcf##cls##Factory, \
+ {
+
+//+-------------------------------------------------------------------------
+//
+// Macro: END_CLASS
+//
+// Purpose: Complete the declaration of the class descriptor.
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+#define END_CLASS \
+ END_INTERFACES \
+ } \
+};
+
+//+-------------------------------------------------------------------------
+//
+// Class: CStdComponentObject
+//
+// Purpose: Standard base class from which to derive aggregatable component
+// classes.
+//
+// Interface: CStdComponentObject [constructor]
+// InitInstance [second phase initialisation,
+// do not override].
+// ~CStdComponentObject [virtual destructor]
+// _InitInstance [virtual, override to provide
+// class-specific second phase
+// initialisation].
+// _QueryInterface [virtual, override to provide last
+// ditch QueryInterface operation ].
+//
+// Notes: "Last ditch" QI operation means anything which cannot be
+// described in a static ITFDELTA. The _QueryInterface method
+// (if provided) is invoked only if the requested interface
+// cannot be satisfied via the ITFDELTA table.
+//
+// The order of the method declarations is important, because
+// it allows us to safely cast a CStdComponentObject to an IUnknown
+// without actually deriving from it.
+//
+//--------------------------------------------------------------------------
+
+class CStdComponentObject: INHERIT_TRACKING
+{
+private:
+ //
+ // pseudo-IUnknown methods
+ //
+
+ STDMETHOD(PrimaryQueryInterface) (REFIID riid, void** ppv);
+ STDMETHOD_(ULONG,PrimaryAddRef) (void);
+ STDMETHOD_(ULONG,PrimaryRelease) (void);
+
+ //
+ // Two-phase constructor.
+ //
+
+protected:
+ CStdComponentObject ( const CLASSDESCRIPTOR * pcd );
+public:
+ HRESULT InitInstance (
+ IUnknown* punkOuter,
+ REFIID riid,
+ void** ppv );
+
+ //
+ // Destructor
+ //
+
+ virtual ~CStdComponentObject(void);
+
+protected:
+
+ // Override the following method to provide last-ditch QueryInterface
+ // behaviour.
+ STDMETHOD(_QueryInterface) ( REFIID riid, void** ppv );
+
+ // Override the following method to provide class-specific failure-prone
+ // initialisation. Status codes returned must be in the set defined
+ // as valid for IClassFactory::CreateInstance.
+ STDMETHOD(_InitInstance) ( void );
+
+ const CLASSDESCRIPTOR* _pcd;
+ IUnknown* _punkControlling;
+
+};
+
+//+-------------------------------------------------------------------------
+//
+// Macro: DECLARE_DELEGATED_UNKNOWN
+//
+// Synopsis: Implements IUnknown methods that simply delegate to the
+// corresponding methods on the controlling IUnknown object.
+//
+// Note: Use this macro when declaring a subclass of CStdComponentObject.
+// Invoke it anywhere within the public portion of your class
+// definition. If you sub-subclass, you must invoke this macro
+// at each level. EG:
+//
+// class CMyMain: CStdComponentObject, IFoo
+//
+// class CMySub: CMyMain, IBar
+//
+// then both CMyMain and CMySub must DECLARE_DELEGATED_UNKNOWN.
+//
+//--------------------------------------------------------------------------
+
+#define DECLARE_DELEGATED_UNKNOWN \
+ \
+STDMETHOD(QueryInterface) (REFIID riid, void** ppv) \
+{ \
+ return _punkControlling->QueryInterface(riid, ppv); \
+}; \
+ \
+STDMETHOD_(ULONG,AddRef) () \
+{ \
+ return _punkControlling->AddRef(); \
+}; \
+ \
+STDMETHOD_(ULONG,Release) () \
+{ \
+ return _punkControlling->Release(); \
+};
+
+//+-------------------------------------------------------------------------
+//
+// Macro: INIT_CLASS
+//
+// Purpose: Call constructor of base class correctly.
+//
+// Notes: This macro should be invoked in the initialisation
+// phase of the constructor for the component class
+// deriving from CStdComponentObject, viz:
+//
+// CMyClass::CMyClass ()
+// :INIT_CLASS(CMyClass)
+// other initialisations
+// {...
+//
+// Use of this macro requires the class descriptor to
+// be named according to the convention described previously.
+// If this is not so (eg: you didn't use BEGIN_CLASS) you
+// must write your own equivalent invocation.
+//
+// If you sub-subclass, you must declare the constructor
+// for the subclass appropriately, so that the class descriptor
+// for the sub-subclass can be passed through to CStdComponentObject.
+//
+//--------------------------------------------------------------------------
+
+#define INIT_CLASS(cls) CStdComponentObject ( &CLASSDESCRIPTOR_NAME(cls) )
+
+#endif // of ifndef __STDOBJ_HXX__
+
+
diff --git a/public/sdk/inc/stgint.h b/public/sdk/inc/stgint.h
new file mode 100644
index 000000000..c6ffbb8fb
--- /dev/null
+++ b/public/sdk/inc/stgint.h
@@ -0,0 +1,68 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: stgint.h
+//
+// Contents: Internal storage APIs, collected here because
+// they are declared and used across projects
+// These APIs are not publicized and are not
+// for general use
+//
+// History: 23-Jul-93 DrewB Created
+// 12-May-95 HenryLee Add DfOpenDocfile
+//
+// Notes: All handles are NT handles
+//
+//----------------------------------------------------------------------------
+
+#ifndef __STGINT_H__
+#define __STGINT_H__
+
+// Storage-on-handle methods for replication
+STDAPI StgCreateStorageOnHandle(HANDLE h,
+ DWORD grfMode,
+ DWORD dwStgFmt,
+ IStorage **ppstg);
+STDAPI StgOpenStorageOnHandle(HANDLE h,
+ DWORD grfMode,
+ IStorage **ppstg);
+
+STDAPI DfIsDocfile(HANDLE h);
+
+// Summary catalog entry points
+STDAPI ScCreateStorage(HANDLE hParent,
+ WCHAR const *pwcsName,
+ HANDLE h,
+ DWORD grfMode,
+ LPSECURITY_ATTRIBUTES pssSecurity,
+ IStorage **ppstg);
+STDAPI ScOpenStorage(HANDLE hParent,
+ WCHAR const *pwcsName,
+ HANDLE h,
+ IStorage *pstgPriority,
+ DWORD grfMode,
+ SNB snbExclude,
+ IStorage **ppstg);
+
+DEFINE_GUID (IID_IStorageReplica,
+ 0x521a28f3,0xe40b,0x11ce,0xb2,0xc9,0x00,0xaa,0x00,0x68,0x09,0x37);
+
+DECLARE_INTERFACE_(IStorageReplica, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ //IStorageReplica
+ STDMETHOD(GetServerInfo) (THIS_
+ LPWSTR lpServerName,
+ LPDWORD lpcbServerName,
+ LPWSTR lpReplSpecificPath,
+ LPDWORD lpcbReplSpecificPath) PURE;
+
+};
+
+#endif // #ifndef __STGINT_H__
diff --git a/public/sdk/inc/stgprop.h b/public/sdk/inc/stgprop.h
new file mode 100644
index 000000000..7937eff01
--- /dev/null
+++ b/public/sdk/inc/stgprop.h
@@ -0,0 +1,49 @@
+//+---------------------------------------------------------------------------
+//
+// File: stgprop.h
+//
+// Contents: Standard storage provider property definitions;
+//
+// History: Jul-9-93 robertfe
+//
+//----------------------------------------------------------------------------
+
+#ifndef _STGPROP_H_
+#define _STGPROP_H_
+
+#define PSGUID_STORAGE { 0xb725f130, \
+ 0x47ef, 0x101a, \
+ { 0xa5, 0xf1, 0x02, 0x60, 0x8c, 0x9e, 0xeb, 0xac } }
+
+//#define PID_STG_DICTIONARY ((PROPID) 0x00000000) //reserved
+//#define PID_STG_CODEPAGE ((PROPID) 0x00000001) //reserved
+
+#define PID_STG_OBJECTID ((PROPID) 0x00000002)
+#define PID_STG_CLASSID ((PROPID) 0x00000003)
+
+#define PID_STG_STORAGETYPE ((PROPID) 0x00000004)
+#define PID_STG_OLESTATEBITS ((PROPID) 0x00000005)
+#define PID_STG_REPLICATIONUSN ((PROPID) 0x00000006)
+#define PID_STG_SECURITYCHANGETIME ((PROPID) 0x00000007)
+
+#define PID_STG_FILEINDEX ((PROPID) 0x00000008)
+#define PID_STG_LASTCHANGEUSN ((PROPID) 0x00000009)
+#define PID_STG_NAME ((PROPID) 0x0000000a)
+#define PID_STG_PATH ((PROPID) 0x0000000b)
+
+#define PID_STG_SIZE ((PROPID) 0x0000000c)
+#define PID_STG_ATTRIBUTES ((PROPID) 0x0000000d)
+#define PID_STG_WRITETIME ((PROPID) 0x0000000e)
+#define PID_STG_CREATETIME ((PROPID) 0x0000000f)
+#define PID_STG_ACCESSTIME ((PROPID) 0x00000010)
+#define PID_STG_CHANGETIME ((PROPID) 0x00000011)
+
+#define PID_STG_ALLOCSIZE ((PROPID) 0x00000012)
+#define PID_STG_CONTENTS ((PROPID) 0x00000013)
+#define PID_STG_SHORTNAME ((PROPID) 0x00000014)
+
+#define PID_STG_MAX PID_STG_SHORTNAME
+
+#define CSTORAGEPROPERTY 0x15
+
+#endif _STGPROP_H_
diff --git a/public/sdk/inc/stgvar.hxx b/public/sdk/inc/stgvar.hxx
new file mode 100644
index 000000000..e0160ab89
--- /dev/null
+++ b/public/sdk/inc/stgvar.hxx
@@ -0,0 +1,604 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: StgVar.hxx
+//
+// Contents: C++ wrapper for PROPVARIANT.
+//
+// History: 01-Aug-94 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+#if !defined(__STGVAR_HXX__)
+#define __STGVAR_HXX__
+
+#include <objbase.h>
+#include <stgvara.hxx>
+
+//+-------------------------------------------------------------------------
+//
+// Class: CStorageVariant
+//
+// Purpose: C++ wrapper for PROPVARIANT
+//
+// History: 01-Aug-94 KyleP Created
+//
+// Notes: A couple of variant arms are not implemented below.
+// VT_BSTR because its type signature is identical to that of
+// VT_LPSTR. VT_SAFEARRAY because I don't fully understand the
+// structure.
+//
+// Some types are duplicate base types with a different variant
+// tag. These include:
+// VARIANT_BOOL (short)
+// SCODE (long)
+// DATE (double)
+// We cannot create trivial constructors for the above because
+// of the type collision. You must use the Set methods.
+//
+// Some types will automatically coerce and cause confusion,
+// so they don't have constructors. You must use the Set
+// method. These include:
+// VT_UI2
+// VT_UI4
+// VT_UI8
+//
+//--------------------------------------------------------------------------
+
+
+class CCoTaskAllocator : public PMemoryAllocator
+{
+public:
+ virtual void *Allocate(ULONG cbSize);
+ virtual void Free(void *pv);
+};
+
+#ifndef COTASKDECLSPEC
+#define COTASKDECLSPEC __declspec(dllimport)
+#endif
+
+COTASKDECLSPEC CCoTaskAllocator CoTaskAllocator;
+
+
+class CStorageVariant : public CAllocStorageVariant
+{
+public:
+
+ //
+ // Simple types
+ //
+
+ CStorageVariant() { vt = VT_EMPTY; }
+ CStorageVariant(short i) { vt = VT_I2; iVal = i; }
+ CStorageVariant(long l) { vt = VT_I4; lVal = l; }
+ CStorageVariant(LARGE_INTEGER h) { vt = VT_I8; hVal = h; }
+ CStorageVariant(float flt) { vt = VT_R4; fltVal = flt; }
+ CStorageVariant(double dbl) { vt = VT_R8; dblVal = dbl; }
+ CStorageVariant(CY cy) { vt = VT_CY; cyVal = cy; }
+ CStorageVariant(FILETIME ft) { vt = VT_FILETIME; filetime = ft; }
+
+ inline CStorageVariant & operator =(CStorageVariant const &var);
+
+ inline CStorageVariant & operator =(short i);
+ inline CStorageVariant & operator =(USHORT ui);
+ inline CStorageVariant & operator =(long l);
+ inline CStorageVariant & operator =(ULONG ul);
+ inline CStorageVariant & operator =(LARGE_INTEGER h);
+ inline CStorageVariant & operator =(ULARGE_INTEGER uh);
+ inline CStorageVariant & operator =(float flt);
+ inline CStorageVariant & operator =(double dbl);
+ inline CStorageVariant & operator =(CY cy);
+ inline CStorageVariant & operator =(FILETIME ft);
+
+ //
+ // Types with indirection
+ //
+
+ CStorageVariant(BLOB b);
+ CStorageVariant(BYTE *pb, ULONG cb);
+ CStorageVariant(char const *psz);
+ CStorageVariant(WCHAR const *pwsz);
+ CStorageVariant(CLSID const *pcid);
+
+ inline CStorageVariant & operator =(BLOB b);
+ inline CStorageVariant & operator =(char const *psz);
+ inline CStorageVariant & operator =(WCHAR const *pwsz);
+ inline CStorageVariant & operator =(CLSID const *pcid);
+
+ //
+ // Interface types
+ //
+
+ CStorageVariant(IStream *pstr);
+ CStorageVariant(IStorage *pstor);
+
+ //
+ // Counted array types. Elements initially zeroed. Use Set/Get/Size
+ // for access.
+ //
+
+ CStorageVariant(VARENUM vt, ULONG cElements);
+
+ //
+ // To/From C style PROPVARIANT and copy constructor
+ //
+
+ inline CStorageVariant(CStorageVariant const &var);
+
+ CStorageVariant(PROPVARIANT &var);
+
+ //
+ // Destructor
+ //
+
+ ~CStorageVariant();
+
+
+ //
+ // Memory allocation. Uses CoTaskAllocator
+ //
+
+ inline void *operator new(size_t size);
+ inline void operator delete(void *p);
+ inline void *operator new(size_t size, void *p);
+
+ //
+ // Serialization
+ //
+
+ CStorageVariant(PDeSerStream &stm);
+
+ //
+ // Set/Get, all types including arrays.
+ //
+
+ inline void SetEMPTY();
+ inline void SetNULL();
+ inline void SetUI1(BYTE i);
+ inline void SetI2(short i);
+ inline void SetUI2(USHORT ui);
+ inline void SetI4(long l);
+ inline void SetUI4(ULONG ul);
+ inline void SetR4(float f);
+ inline void SetR8(double d);
+ inline void SetI8(LARGE_INTEGER li);
+ inline void SetUI8(ULARGE_INTEGER uli);
+ inline void SetBOOL(VARIANT_BOOL b);
+ inline void SetERROR(SCODE sc);
+ inline void SetCY(CY cy);
+ inline void SetDATE(DATE d);
+ inline void SetFILETIME(FILETIME ft);
+
+
+ inline void SetBSTR(BSTR b);
+
+// void SetSAFEARRAY(SAFEARRAY &sa);
+// SAFEARRAY GetSAFEARRAY();
+
+ inline void SetLPSTR(char const *psz);
+ inline void SetLPWSTR(WCHAR const *pwsz);
+ inline void SetBLOB(BLOB b);
+
+ inline void SetSTREAM(IStream *ps);
+ inline void SetSTREAMED_OBJECT(IStream *ps);
+ inline void SetSTORAGE(IStorage *ps);
+ inline void SetSTORED_OBJECT(IStorage *ps);
+ inline void SetCLSID(CLSID const *pc);
+
+ //
+ // Array access
+ //
+
+ void SetUI1(BYTE i, unsigned pos);
+ void SetI2(short i, unsigned pos);
+ void SetUI2(USHORT ui, unsigned pos);
+ void SetI4(long l, unsigned pos);
+ void SetUI4(ULONG ul, unsigned pos);
+ void SetI8(LARGE_INTEGER li, unsigned pos);
+ void SetUI8(ULARGE_INTEGER uli, unsigned pos);
+ void SetR4(float f, unsigned pos);
+ void SetR8(double d, unsigned pos);
+ void SetBOOL(VARIANT_BOOL b, unsigned pos);
+ void SetCY(CY c, unsigned pos);
+ void SetDATE(DATE d, unsigned pos);
+
+ void SetBSTR(BSTR b, unsigned pos);
+
+// void SetVARIANT(CStorageVariant var, unsigned pos);
+// CStorageVariant GetVARIANT(unsigned pos) const;
+
+ void SetLPSTR(char const *psz, unsigned pos);
+ void SetLPWSTR(WCHAR const *pwsz, unsigned pos);
+ void SetFILETIME(FILETIME f, unsigned pos);
+ void SetCLSID(CLSID c, unsigned pos);
+};
+
+
+inline
+CStorageVariant::CStorageVariant(BYTE *pb, ULONG cb) :
+ CAllocStorageVariant(pb, cb, CoTaskAllocator)
+{
+}
+
+
+inline
+CStorageVariant::CStorageVariant(char const *psz) :
+ CAllocStorageVariant(psz, CoTaskAllocator)
+{
+}
+
+
+inline
+CStorageVariant::CStorageVariant(WCHAR const *pwsz) :
+ CAllocStorageVariant(pwsz, CoTaskAllocator)
+{
+}
+
+
+inline
+CStorageVariant::CStorageVariant(CLSID const *pcid) :
+ CAllocStorageVariant(pcid, CoTaskAllocator)
+{
+}
+
+
+inline
+CStorageVariant::CStorageVariant(VARENUM v, ULONG cElements) :
+ CAllocStorageVariant(v, cElements, CoTaskAllocator)
+{
+}
+
+
+inline
+CStorageVariant::CStorageVariant(PROPVARIANT &var) :
+ CAllocStorageVariant(var, CoTaskAllocator)
+{
+}
+
+
+inline
+CStorageVariant::CStorageVariant(PDeSerStream &MemDeSerStream) :
+ CAllocStorageVariant(MemDeSerStream, CoTaskAllocator)
+{
+}
+
+
+inline
+CStorageVariant::~CStorageVariant()
+{
+ ResetType(CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetEMPTY()
+{
+ CAllocStorageVariant::SetEMPTY(CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetNULL()
+{
+ CAllocStorageVariant::SetNULL(CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetUI1(BYTE b)
+{
+ CAllocStorageVariant::SetUI1(b, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetI2(short i)
+{
+ CAllocStorageVariant::SetI2(i, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetUI2(USHORT ui)
+{
+ CAllocStorageVariant::SetUI2(ui, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetI4(long l)
+{
+ CAllocStorageVariant::SetI4(l, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetUI4(ULONG ul)
+{
+ CAllocStorageVariant::SetUI4(ul, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetR4(float f)
+{
+ CAllocStorageVariant::SetR4(f, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetR8(double d)
+{
+ CAllocStorageVariant::SetR8(d, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetI8(LARGE_INTEGER li)
+{
+ CAllocStorageVariant::SetI8(li, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetUI8(ULARGE_INTEGER uli)
+{
+ CAllocStorageVariant::SetUI8(uli, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetBOOL(VARIANT_BOOL b)
+{
+ CAllocStorageVariant::SetBOOL(b, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetERROR(SCODE sc)
+{
+ CAllocStorageVariant::SetERROR(sc, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetCY(CY cy)
+{
+ CAllocStorageVariant::SetCY(cy, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetDATE(DATE d)
+{
+ CAllocStorageVariant::SetDATE(d, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetFILETIME(FILETIME ft)
+{
+ CAllocStorageVariant::SetFILETIME(ft, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetSTREAM(IStream *ps)
+{
+ CAllocStorageVariant::SetSTREAM(ps, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetSTREAMED_OBJECT(IStream *ps)
+{
+ CAllocStorageVariant::SetSTREAMED_OBJECT(ps, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetSTORAGE(IStorage *ps)
+{
+ CAllocStorageVariant::SetSTORAGE(ps, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetSTORED_OBJECT(IStorage *ps)
+{
+ CAllocStorageVariant::SetSTORED_OBJECT(ps, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetCLSID(CLSID const *pc)
+{
+ CAllocStorageVariant::SetCLSID(pc, CoTaskAllocator);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(CStorageVariant const &var)
+{
+ ResetType(CoTaskAllocator);
+ new (this) CStorageVariant((PROPVARIANT &) var);
+
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(short i)
+{
+ CAllocStorageVariant::SetI2(i, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(USHORT ui)
+{
+ CAllocStorageVariant::SetUI2(ui, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline void
+CStorageVariant::SetBSTR(BSTR b)
+{
+ CAllocStorageVariant::SetBSTR( b, CoTaskAllocator );
+}
+
+
+inline void
+CStorageVariant::SetLPSTR(char const *psz)
+{
+ CAllocStorageVariant::SetLPSTR(psz, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetLPWSTR(WCHAR const *pwsz)
+{
+ CAllocStorageVariant::SetLPWSTR(pwsz, CoTaskAllocator);
+}
+
+
+inline void
+CStorageVariant::SetBLOB(BLOB b)
+{
+ CAllocStorageVariant::SetBLOB(b, CoTaskAllocator);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(long l)
+{
+ CAllocStorageVariant::SetI4(l, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(ULONG ul)
+{
+ CAllocStorageVariant::SetUI4(ul, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(LARGE_INTEGER h)
+{
+ CAllocStorageVariant::SetI8(h, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(ULARGE_INTEGER uh)
+{
+ CAllocStorageVariant::SetUI8(uh, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(float flt)
+{
+ CAllocStorageVariant::SetR4(flt, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(double dbl)
+{
+ CAllocStorageVariant::SetR8(dbl, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(CY cy)
+{
+ CAllocStorageVariant::SetCY(cy, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(FILETIME ft)
+{
+ CAllocStorageVariant::SetFILETIME(ft, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(BLOB b)
+{
+ CAllocStorageVariant::SetBLOB(b, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(char const *psz)
+{
+ CAllocStorageVariant::SetLPSTR(psz, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(WCHAR const *pwsz)
+{
+ CAllocStorageVariant::SetLPWSTR(pwsz, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline CStorageVariant &
+CStorageVariant::operator =(CLSID const *pcid)
+{
+ CAllocStorageVariant::SetCLSID(pcid, CoTaskAllocator);
+ return(*this);
+}
+
+
+inline void *
+CStorageVariant::operator new(size_t size)
+{
+ void *p = CoTaskMemAlloc(size);
+
+ return(p);
+}
+
+
+inline void *
+CStorageVariant::operator new(size_t size, void *p)
+{
+ return(p);
+}
+
+
+inline void
+CStorageVariant::operator delete(void *p)
+{
+ if (p != NULL)
+ {
+ CoTaskMemFree(p);
+ }
+}
+
+
+inline
+CStorageVariant::CStorageVariant(CStorageVariant const &var)
+{
+ new (this) CStorageVariant((PROPVARIANT &) var);
+}
+
+#endif // __STGVAR_HXX__
diff --git a/public/sdk/inc/stgvara.hxx b/public/sdk/inc/stgvara.hxx
new file mode 100644
index 000000000..e71090d9c
--- /dev/null
+++ b/public/sdk/inc/stgvara.hxx
@@ -0,0 +1,430 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: StgVarA.hxx - Storage Variant Class with/Allocation support
+//
+// Contents: C++ Alloc wrapper for PROPVARIANT.
+//
+// History: 01-Aug-94 KyleP Created
+// 09-May-96 MikeHill Use the 'boolVal' member of PropVariant,
+// rather than the member named 'bool'
+// (which is a reserved keyword).
+//
+//--------------------------------------------------------------------------
+
+#if !defined(__STGVARA_HXX__)
+#define __STGVARA_HXX__
+
+#include <stgvarb.hxx>
+
+//+-------------------------------------------------------------------------
+//
+// Class: CAllocStorageVariant
+//
+// Purpose: C++ wrapper for PROPVARIANT
+//
+// History: 01-Aug-94 KyleP Created
+//
+// Notes: This class should only be instantiated through subclasses that
+// define PMemoryAllocator. CStorageVariant is the most common
+// subclass, which uses CoTaskMemAlloc/Free inside its allocator.
+//
+// Constructors that allocate memory require a PMemoryAllocator.
+// The destructor is private to force use of the ResetType()
+// method, which also requires a PMemoryAllocator.
+//
+// A couple of variant arms are not implemented below.
+// VT_BSTR because its type signature is identical to that of
+// VT_LPSTR.
+//
+// Some types are duplicate base types with a different variant
+// tag. These include:
+// VARIANT_BOOL (short)
+// SCODE (long)
+// DATE (double)
+// We cannot create trivial constructors for the above because
+// of the type collision. You must use the Set methods.
+//
+//--------------------------------------------------------------------------
+
+class CAllocStorageVariant: public CBaseStorageVariant
+{
+public:
+
+ //
+ // Simple types
+ //
+
+ CAllocStorageVariant() { vt = VT_EMPTY; }
+ CAllocStorageVariant(short i) { vt = VT_I2; iVal = i; }
+ CAllocStorageVariant(long l) { vt = VT_I4; lVal = l; }
+ CAllocStorageVariant(LARGE_INTEGER h) { vt = VT_I8; hVal = h; }
+ CAllocStorageVariant(float flt) { vt = VT_R4; fltVal = flt; }
+ CAllocStorageVariant(double dbl) { vt = VT_R8; dblVal = dbl; }
+ CAllocStorageVariant(CY cy) { vt = VT_CY; cyVal = cy; }
+ CAllocStorageVariant(FILETIME ft) { vt = VT_FILETIME; filetime = ft; }
+
+ //
+ // Types with indirection
+ //
+
+ CAllocStorageVariant(BLOB b, PMemoryAllocator &ma)
+ {
+ new (this) CAllocStorageVariant(b.pBlobData, b.cbSize, ma);
+ }
+ CAllocStorageVariant(BYTE *pb, ULONG cb, PMemoryAllocator &ma);
+ CAllocStorageVariant(char const *psz, PMemoryAllocator &ma);
+ CAllocStorageVariant(WCHAR const *pwsz, PMemoryAllocator &ma);
+ CAllocStorageVariant(CLSID const *pcid, PMemoryAllocator &ma);
+
+ //
+ // Interface types
+ //
+
+ CAllocStorageVariant(IStream *pstr, PMemoryAllocator &ma);
+ CAllocStorageVariant(IStorage *pstor, PMemoryAllocator &ma);
+
+ //
+ // Counted array types. Elements initially zeroed. Use Set/Get/Size
+ // for access.
+ //
+
+ CAllocStorageVariant(VARENUM vt, ULONG cElements, PMemoryAllocator &ma);
+
+ //
+ // To/From C style PROPVARIANT and copy constructor
+ //
+
+ CAllocStorageVariant(PROPVARIANT &var, PMemoryAllocator &ma);
+
+ operator PROPVARIANT *() const { return((PROPVARIANT *) this); }
+ operator PROPVARIANT &() const { return(*(PROPVARIANT *) this); }
+
+ operator PROPVARIANT const *() { return((PROPVARIANT *) this); }
+ operator PROPVARIANT const &() { return(*(PROPVARIANT *) this); }
+
+
+ CAllocStorageVariant(PDeSerStream &stm, PMemoryAllocator &ma);
+
+ //
+ // Casts for simple types.
+ //
+
+ operator short() const { return(iVal); }
+ operator USHORT() const { return(uiVal); }
+ operator long() const { return(lVal); }
+ operator ULONG() const { return(ulVal); }
+ operator LARGE_INTEGER() const { return(hVal); }
+ operator ULARGE_INTEGER() const { return(uhVal); }
+ operator float() const { return(fltVal); }
+ operator double() const { return(dblVal); }
+ operator CY() const { return(cyVal); }
+ operator FILETIME() const { return(filetime); }
+ operator char const *() const { return(pszVal); }
+ operator WCHAR const *() const { return(pwszVal); }
+ operator IStream *() const { return(pStream); }
+ operator IStorage *() const { return(pStorage); }
+
+ BOOL IsValid() const;
+
+ //
+ // Member variable access
+ //
+
+ VARENUM Type() const { return((VARENUM) vt); }
+
+ //
+ // Set/Get, all types including arrays.
+ //
+
+ void SetEMPTY(PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_EMPTY;
+ }
+
+ void SetNULL(PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_NULL;
+ }
+
+ void SetUI1(BYTE b, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_UI1;
+ bVal = b;
+ }
+
+ BYTE GetUI1() const { return bVal; }
+
+ void SetI2(short i, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(i);
+ }
+ short GetI2() const { return(iVal); }
+
+ void SetUI2(USHORT ui, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_UI2;
+ uiVal = ui;
+ }
+ ULONG GetUI2() const { return(uiVal); }
+
+ void SetI4(long l, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(l);
+ }
+ long GetI4() const { return(lVal); }
+
+ void SetUI4(ULONG ul, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_UI4;
+ ulVal = ul;
+ }
+ ULONG GetUI4() const { return(ulVal); }
+
+ void SetR4(float f, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(f);
+ }
+ float GetR4() const { return(fltVal); }
+
+ void SetR8(double d, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(d);
+ }
+ double GetR8() const { return(dblVal); }
+
+ void SetI8(LARGE_INTEGER li, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(li);
+ }
+ LARGE_INTEGER GetI8() const { return(hVal); }
+
+ void SetUI8(ULARGE_INTEGER uli, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_UI8;
+ uhVal = uli;
+ }
+ ULARGE_INTEGER GetUI8() const { return(uhVal); }
+
+ void SetBOOL(VARIANT_BOOL b, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_BOOL;
+ boolVal = b;
+ }
+ VARIANT_BOOL GetBOOL() const { return(boolVal); }
+
+ void SetERROR(SCODE sc, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_ERROR;
+ scode = sc;
+ }
+ SCODE GetERROR() const { return(scode); }
+
+ void SetCY(CY cy, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(cy);
+ }
+ CY GetCY() const { return(cyVal); }
+
+ void SetDATE(DATE d, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_DATE;
+ date = d;
+ }
+ DATE GetDATE() const { return(date); }
+
+ void SetBSTR(BSTR b, PMemoryAllocator &ma);
+ BSTR GetBSTR() const { return(bstrVal); } // No ownership xfer!
+
+ void SetLPSTR(char const *psz, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(psz, ma);
+ }
+ char const *GetLPSTR() const { return(pszVal); } // No ownership xfer!
+
+ void SetLPWSTR(WCHAR const *pwsz, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(pwsz, ma);
+ }
+ WCHAR const *GetLPWSTR() const { return(pwszVal); } // No owner xfer!
+
+ void SetFILETIME(FILETIME ft, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(ft);
+ }
+ FILETIME GetFILETIME() const { return(filetime); }
+
+ void SetBLOB(BLOB b, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(b, ma);
+ }
+ BLOB GetBLOB() const { return(blob); } // No ownership xfer!
+
+ void SetSTREAM(IStream *ps, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_STREAM;
+ pStream = ps;
+ ps->AddRef();
+ }
+ IStream *GetSTREAM() const { return(pStream); }
+
+ void SetSTREAMED_OBJECT(IStream *ps, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_STREAMED_OBJECT;
+ pStream = ps;
+ ps->AddRef();
+ }
+ IStream *GetSTREAMED_OBJECT() const { return(pStream); }
+
+ void SetSTORAGE(IStorage *ps, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_STORAGE;
+ pStorage = ps;
+ ps->AddRef();
+ }
+ IStorage *GetSTORAGE() const { return(pStorage); }
+
+ void SetSTORED_OBJECT(IStorage *ps, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ vt = VT_STORED_OBJECT;
+ pStorage = ps;
+ ps->AddRef();
+ }
+ IStorage *GetSTORED_OBJECT() const { return(pStorage); }
+
+ void SetCLSID(CLSID const *pc, PMemoryAllocator &ma)
+ {
+ ResetType(ma);
+ new (this) CAllocStorageVariant(pc, ma);
+ }
+ CLSID const *GetCLSID() const { return(puuid); } // No ownership xfer!
+
+ //
+ // Array access
+ //
+
+ inline ULONG Count() const;
+
+ void SetUI1(BYTE b, unsigned pos, PMemoryAllocator &ma);
+ BYTE GetUI1(unsigned pos) const;
+
+ void SetI2(short i, unsigned pos, PMemoryAllocator &ma);
+ short GetI2(unsigned pos) const;
+
+ void SetUI2(USHORT ui, unsigned pos, PMemoryAllocator &ma);
+ USHORT GetUI2(unsigned pos) const;
+
+ void SetI4(long l, unsigned pos, PMemoryAllocator &ma);
+ long GetI4(unsigned pos) const;
+
+ void SetUI4(ULONG ul, unsigned pos, PMemoryAllocator &ma);
+ ULONG GetUI4(unsigned pos) const;
+
+ void SetI8(LARGE_INTEGER li, unsigned pos, PMemoryAllocator &ma);
+ LARGE_INTEGER GetI8(unsigned pos) const;
+
+ void SetUI8(ULARGE_INTEGER uli, unsigned pos, PMemoryAllocator &ma);
+ ULARGE_INTEGER GetUI8(unsigned pos) const;
+
+ void SetR4(float f, unsigned pos, PMemoryAllocator &ma);
+ float GetR4(unsigned pos) const;
+
+ void SetR8(double d, unsigned pos, PMemoryAllocator &ma);
+ double GetR8(unsigned pos) const;
+
+ void SetBOOL(VARIANT_BOOL b, unsigned pos, PMemoryAllocator &ma);
+ VARIANT_BOOL GetBOOL(unsigned pos) const;
+
+ void SetCY(CY c, unsigned pos, PMemoryAllocator &ma);
+ CY GetCY(unsigned pos) const;
+
+ void SetDATE(DATE d, unsigned pos, PMemoryAllocator &ma);
+ DATE GetDATE(unsigned pos) const;
+
+ void SetBSTR(BSTR b, unsigned pos, PMemoryAllocator &ma);
+ BSTR GetBSTR(unsigned pos) const { return cabstr.pElems[pos]; }
+
+// void SetVARIANT(CAllocStorageVariant var, unsigned pos, PMemoryAllocator &ma);
+ inline CAllocStorageVariant & GetVARIANT(unsigned pos) const;
+
+ void SetLPSTR(char const *psz, unsigned pos, PMemoryAllocator &ma);
+ char *GetLPSTR(unsigned pos) const;
+
+ void SetLPWSTR(WCHAR const *pwsz, unsigned pos, PMemoryAllocator &ma);
+ WCHAR *GetLPWSTR(unsigned pos) const;
+
+ void SetFILETIME(FILETIME f, unsigned pos, PMemoryAllocator &ma);
+ FILETIME GetFILETIME(unsigned pos) const;
+
+ void SetCLSID(CLSID c, unsigned pos, PMemoryAllocator &ma);
+ CLSID GetCLSID(unsigned pos) const;
+
+protected:
+
+ //
+ // Manual & Default Destructor
+ //
+
+ void ResetType(PMemoryAllocator &ma);
+
+ ~CAllocStorageVariant();
+
+ //
+ // Memory allocation. Returns passed parameter only.
+ //
+
+ void *operator new(size_t size, void *p)
+ {
+ return(p);
+ }
+
+private:
+ BOOLEAN _AddStringToVector(
+ unsigned pos,
+ VOID *pv,
+ ULONG cb,
+ PMemoryAllocator &ma);
+};
+
+
+inline ULONG
+CAllocStorageVariant::Count() const
+{
+ if (Type() & VT_VECTOR)
+ {
+ return( cai.cElems );
+ }
+ return( 0 );
+}
+
+inline CAllocStorageVariant & CAllocStorageVariant::GetVARIANT(unsigned pos) const
+{
+ return (CAllocStorageVariant &) capropvar.pElems[pos];
+}
+
+#endif // __STGVARA_HXX__
diff --git a/public/sdk/inc/stgvarb.hxx b/public/sdk/inc/stgvarb.hxx
new file mode 100644
index 000000000..d737fce4f
--- /dev/null
+++ b/public/sdk/inc/stgvarb.hxx
@@ -0,0 +1,95 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: StgVarB.hxx - Storage Variant Base Class
+//
+// Contents: C++ Base wrapper for PROPVARIANT.
+//
+// History: 01-Aug-94 KyleP Created
+//
+//--------------------------------------------------------------------------
+
+#if !defined(__STGVARB_HXX__)
+#define __STGVARB_HXX__
+
+class PSerStream;
+class PDeSerStream;
+
+class PMemoryAllocator
+{
+public:
+ virtual void *Allocate(ULONG cbSize) = 0;
+ virtual void Free(void *pv) = 0;
+};
+
+
+#if defined(OFSDBG) || defined(CIDBG)
+#define DBGPROP (OFSDBG || DBG || CIDBG)
+#else
+#define DBGPROP DBG
+#endif
+
+#if DBGPROP
+#if !defined(_NTDLLBUILD_)
+#define ENABLE_DISPLAY_VARIANT
+#endif
+#endif
+
+#if defined(_NTDLLBUILD_) && defined(_CAIRO_)
+#define OLDSUMCATAPI
+#endif
+
+#if !defined(_NTDLLBUILD_) || defined(OLDSUMCATAPI)
+#define ENABLE_MARSHAL_VARIANT
+#endif
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CBaseStorageVariant
+//
+// Purpose: C++ wrapper for PROPVARIANT
+//
+// History: 01-Aug-94 KyleP Created
+//
+// Notes: Only contains a static method to unmarshal from a stream.
+//
+//--------------------------------------------------------------------------
+
+class CBaseStorageVariant: public /* VC 5 fix - Was "protected" */ tagPROPVARIANT
+{
+#if defined(OLDSUMCATAPI)
+ friend void MarshallVariant(PSerStream &stm, PROPVARIANT &var);
+#endif
+
+public:
+ CBaseStorageVariant() {}
+ CBaseStorageVariant(PROPVARIANT& var): tagPROPVARIANT(var) {}
+
+#ifdef KERNEL
+ static NTSTATUS UnmarshalledSize( PDeSerStream &stm, ULONG & cb );
+#endif
+
+ static NTSTATUS Unmarshall(
+ PDeSerStream &stm,
+ PROPVARIANT &sv,
+ PMemoryAllocator &ma);
+
+#ifdef ENABLE_MARSHAL_VARIANT
+ void Marshall(PSerStream& stm) const;
+#endif
+
+#ifdef ENABLE_DISPLAY_VARIANT
+ VOID DisplayVariant(ULONG ulLevel, USHORT CodePage) const;
+#endif
+};
+
+
+#if defined(OLDSUMCATAPI)
+extern void MarshallVariant(PSerStream &stm, PROPVARIANT &var);
+#endif
+
+
+#endif // __STGVARB_HXX__
diff --git a/public/sdk/inc/storag.h b/public/sdk/inc/storag.h
new file mode 100644
index 000000000..877f1e1e6
--- /dev/null
+++ b/public/sdk/inc/storag.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: storag.h
+//
+// Contents: Replacement for storag.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/storage.h b/public/sdk/inc/storage.h
new file mode 100644
index 000000000..2c5b7eb64
--- /dev/null
+++ b/public/sdk/inc/storage.h
@@ -0,0 +1,15 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: storage.h
+//
+//----------------------------------------------------------------------------
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: your code should #include objbase.h instead of storage.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/storext.h b/public/sdk/inc/storext.h
new file mode 100644
index 000000000..0d7185858
--- /dev/null
+++ b/public/sdk/inc/storext.h
@@ -0,0 +1,476 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:36:32 1996
+ */
+/* Compiler settings for storext.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __storext_h__
+#define __storext_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IOverlappedCompletion_FWD_DEFINED__
+#define __IOverlappedCompletion_FWD_DEFINED__
+typedef interface IOverlappedCompletion IOverlappedCompletion;
+#endif /* __IOverlappedCompletion_FWD_DEFINED__ */
+
+
+#ifndef __IOverlappedStream_FWD_DEFINED__
+#define __IOverlappedStream_FWD_DEFINED__
+typedef interface IOverlappedStream IOverlappedStream;
+#endif /* __IOverlappedStream_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "wtypes.h"
+#include "unknwn.h"
+#include "objidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:36:32 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HEVENT;
+
+
+typedef struct _STGOVERLAPPED
+ {
+ DWORD Internal;
+ DWORD InternalHigh;
+ DWORD Offset;
+ DWORD OffsetHigh;
+ HEVENT hEvent;
+ IOverlappedCompletion __RPC_FAR *lpCompletion;
+ DWORD reserved;
+ } STGOVERLAPPED;
+
+typedef struct _STGOVERLAPPED __RPC_FAR *LPSTGOVERLAPPED;
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IOverlappedCompletion_INTERFACE_DEFINED__
+#define __IOverlappedCompletion_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOverlappedCompletion
+ * at Fri Nov 15 09:36:32 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IOverlappedCompletion;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOverlappedCompletion : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnComplete(
+ /* [in] */ HRESULT hr,
+ /* [in] */ DWORD pcbTransferred,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOverlappedCompletionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOverlappedCompletion __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOverlappedCompletion __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOverlappedCompletion __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnComplete )(
+ IOverlappedCompletion __RPC_FAR * This,
+ /* [in] */ HRESULT hr,
+ /* [in] */ DWORD pcbTransferred,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+ END_INTERFACE
+ } IOverlappedCompletionVtbl;
+
+ interface IOverlappedCompletion
+ {
+ CONST_VTBL struct IOverlappedCompletionVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOverlappedCompletion_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOverlappedCompletion_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOverlappedCompletion_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOverlappedCompletion_OnComplete(This,hr,pcbTransferred,lpOverlapped) \
+ (This)->lpVtbl -> OnComplete(This,hr,pcbTransferred,lpOverlapped)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IOverlappedCompletion_OnComplete_Proxy(
+ IOverlappedCompletion __RPC_FAR * This,
+ /* [in] */ HRESULT hr,
+ /* [in] */ DWORD pcbTransferred,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+void __RPC_STUB IOverlappedCompletion_OnComplete_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOverlappedCompletion_INTERFACE_DEFINED__ */
+
+
+#ifndef __IOverlappedStream_INTERFACE_DEFINED__
+#define __IOverlappedStream_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IOverlappedStream
+ * at Fri Nov 15 09:36:32 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IOverlappedStream;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IOverlappedStream : public IStream
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE ReadOverlapped(
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped) = 0;
+
+ virtual /* [local] */ HRESULT __stdcall WriteOverlapped(
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetOverlappedResult(
+ /* [out][in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped,
+ /* [out] */ DWORD __RPC_FAR *plcbTransfer,
+ /* [in] */ BOOL fWait) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IOverlappedStreamVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IOverlappedStream __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IOverlappedStream __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Read )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [length_is][size_is][out] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Write )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ const void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Seek )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ LARGE_INTEGER dlibMove,
+ /* [in] */ DWORD dwOrigin,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetSize )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libNewSize);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CopyTo )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [unique][in] */ IStream __RPC_FAR *pstm,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
+ /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ DWORD grfCommitFlags);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Revert )(
+ IOverlappedStream __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockRegion )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *UnlockRegion )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [in] */ ULARGE_INTEGER libOffset,
+ /* [in] */ ULARGE_INTEGER cb,
+ /* [in] */ DWORD dwLockType);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Stat )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [out] */ STATSTG __RPC_FAR *pstatstg,
+ /* [in] */ DWORD grfStatFlag);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReadOverlapped )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+ /* [local] */ HRESULT ( __stdcall __RPC_FAR *WriteOverlapped )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetOverlappedResult )(
+ IOverlappedStream __RPC_FAR * This,
+ /* [out][in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped,
+ /* [out] */ DWORD __RPC_FAR *plcbTransfer,
+ /* [in] */ BOOL fWait);
+
+ END_INTERFACE
+ } IOverlappedStreamVtbl;
+
+ interface IOverlappedStream
+ {
+ CONST_VTBL struct IOverlappedStreamVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IOverlappedStream_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IOverlappedStream_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IOverlappedStream_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IOverlappedStream_Read(This,pv,cb,pcbRead) \
+ (This)->lpVtbl -> Read(This,pv,cb,pcbRead)
+
+#define IOverlappedStream_Write(This,pv,cb,pcbWritten) \
+ (This)->lpVtbl -> Write(This,pv,cb,pcbWritten)
+
+
+#define IOverlappedStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) \
+ (This)->lpVtbl -> Seek(This,dlibMove,dwOrigin,plibNewPosition)
+
+#define IOverlappedStream_SetSize(This,libNewSize) \
+ (This)->lpVtbl -> SetSize(This,libNewSize)
+
+#define IOverlappedStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) \
+ (This)->lpVtbl -> CopyTo(This,pstm,cb,pcbRead,pcbWritten)
+
+#define IOverlappedStream_Commit(This,grfCommitFlags) \
+ (This)->lpVtbl -> Commit(This,grfCommitFlags)
+
+#define IOverlappedStream_Revert(This) \
+ (This)->lpVtbl -> Revert(This)
+
+#define IOverlappedStream_LockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> LockRegion(This,libOffset,cb,dwLockType)
+
+#define IOverlappedStream_UnlockRegion(This,libOffset,cb,dwLockType) \
+ (This)->lpVtbl -> UnlockRegion(This,libOffset,cb,dwLockType)
+
+#define IOverlappedStream_Stat(This,pstatstg,grfStatFlag) \
+ (This)->lpVtbl -> Stat(This,pstatstg,grfStatFlag)
+
+#define IOverlappedStream_Clone(This,ppstm) \
+ (This)->lpVtbl -> Clone(This,ppstm)
+
+
+#define IOverlappedStream_ReadOverlapped(This,pv,cb,pcbRead,lpOverlapped) \
+ (This)->lpVtbl -> ReadOverlapped(This,pv,cb,pcbRead,lpOverlapped)
+
+#define IOverlappedStream_WriteOverlapped(This,pv,cb,pcbWritten,lpOverlapped) \
+ (This)->lpVtbl -> WriteOverlapped(This,pv,cb,pcbWritten,lpOverlapped)
+
+#define IOverlappedStream_GetOverlappedResult(This,lpOverlapped,plcbTransfer,fWait) \
+ (This)->lpVtbl -> GetOverlappedResult(This,lpOverlapped,plcbTransfer,fWait)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOverlappedStream_RemoteReadOverlapped_Proxy(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+void __RPC_STUB IOverlappedStream_RemoteReadOverlapped_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT __stdcall IOverlappedStream_RemoteWriteOverlapped_Proxy(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+void __RPC_STUB IOverlappedStream_RemoteWriteOverlapped_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IOverlappedStream_GetOverlappedResult_Proxy(
+ IOverlappedStream __RPC_FAR * This,
+ /* [out][in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped,
+ /* [out] */ DWORD __RPC_FAR *plcbTransfer,
+ /* [in] */ BOOL fWait);
+
+
+void __RPC_STUB IOverlappedStream_GetOverlappedResult_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IOverlappedStream_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER HEVENT_UserSize( unsigned long __RPC_FAR *, unsigned long , HEVENT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HEVENT_UserMarshal( unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HEVENT __RPC_FAR * );
+unsigned char __RPC_FAR * __RPC_USER HEVENT_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, HEVENT __RPC_FAR * );
+void __RPC_USER HEVENT_UserFree( unsigned long __RPC_FAR *, HEVENT __RPC_FAR * );
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IOverlappedStream_ReadOverlapped_Proxy(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IOverlappedStream_ReadOverlapped_Stub(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbRead,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+/* [local] */ HRESULT __stdcall IOverlappedStream_WriteOverlapped_Proxy(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ void __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+/* [call_as] */ HRESULT __stdcall IOverlappedStream_WriteOverlapped_Stub(
+ IOverlappedStream __RPC_FAR * This,
+ /* [size_is][in] */ byte __RPC_FAR *pv,
+ /* [in] */ ULONG cb,
+ /* [out] */ ULONG __RPC_FAR *pcbWritten,
+ /* [in] */ STGOVERLAPPED __RPC_FAR *lpOverlapped);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/storext.idl b/public/sdk/inc/storext.idl
new file mode 100644
index 000000000..6207d850c
--- /dev/null
+++ b/public/sdk/inc/storext.idl
@@ -0,0 +1,108 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1995 - 1995.
+//
+// File: OleStor.idl Cairo only interfaces for OLE Storage
+//
+// Contents: IOverlappedStream interface definition
+//
+// History: 14-Sep-1995 HenryLee initial version
+//
+//--------------------------------------------------------------------------
+
+#ifndef DO_NO_IMPORTS
+import "wtypes.idl";
+import "unknwn.idl";
+import "objidl.idl";
+#endif
+
+typedef [wire_marshal(ULONG)] void * HEVENT;
+interface IOverlappedCompletion;
+
+typedef struct _STGOVERLAPPED {
+ DWORD Internal;
+ DWORD InternalHigh;
+ DWORD Offset;
+ DWORD OffsetHigh;
+ HEVENT hEvent;
+ IOverlappedCompletion * lpCompletion;
+ DWORD reserved;
+} STGOVERLAPPED, *LPSTGOVERLAPPED;
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1995 - 1995.
+//
+// Contents: IOverlappedCompletion interface definition
+//
+// History: 14-Sep-1995 HenryLee initial version
+//
+//--------------------------------------------------------------------------
+[
+ object,
+ uuid(521a28f0-e40b-11ce-b2c9-00aa00680937),
+ pointer_default(unique)
+]
+interface IOverlappedCompletion : IUnknown
+{
+ HRESULT OnComplete (
+ [in] HRESULT hr,
+ [in] DWORD pcbTransferred,
+ [in] STGOVERLAPPED *lpOverlapped);
+}
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1995 - 1995.
+//
+// Contents: IOverlappedStream interface definition
+//
+// History: 14-Sep-1995 HenryLee initial version
+//
+//--------------------------------------------------------------------------
+[
+ object,
+ uuid(49384070-e40a-11ce-b2c9-00aa00680937),
+ pointer_default(unique)
+]
+interface IOverlappedStream : IStream
+{
+
+ [local]
+ HRESULT ReadOverlapped (
+ [in, size_is(cb)] void * pv,
+ [in] ULONG cb,
+ [out] ULONG * pcbRead,
+ [in] STGOVERLAPPED *lpOverlapped);
+
+ [call_as(ReadOverlapped)]
+ HRESULT RemoteReadOverlapped (
+ [in, size_is(cb)] byte * pv,
+ [in] ULONG cb,
+ [out] ULONG * pcbRead,
+ [in] STGOVERLAPPED *lpOverlapped);
+
+
+ [local]
+ HRESULT __stdcall WriteOverlapped (
+ [in, size_is(cb)] void *pv,
+ [in] ULONG cb,
+ [out] ULONG * pcbWritten,
+ [in] STGOVERLAPPED *lpOverlapped);
+
+ [call_as(WriteOverlapped)]
+ HRESULT __stdcall RemoteWriteOverlapped (
+ [in, size_is(cb)] byte *pv,
+ [in] ULONG cb,
+ [out] ULONG * pcbWritten,
+ [in] STGOVERLAPPED *lpOverlapped);
+
+ HRESULT GetOverlappedResult (
+ [in, out] STGOVERLAPPED *lpOverlapped,
+ [out] DWORD * plcbTransfer,
+ [in] BOOL fWait);
+
+}
diff --git a/public/sdk/inc/stream.h b/public/sdk/inc/stream.h
new file mode 100644
index 000000000..d3a4809fe
--- /dev/null
+++ b/public/sdk/inc/stream.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: stream.h
+//
+// Contents: Replacement for stream.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/stubb.h b/public/sdk/inc/stubb.h
new file mode 100644
index 000000000..3881d7f6f
--- /dev/null
+++ b/public/sdk/inc/stubb.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: stubb.h
+//
+// Contents: Replacement for stubb.h
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes objbase.h.")
+#pragma message("The code needs to be changed to directly include objbase.h")
+#endif /* !RC_INVOKED */
+
+#include <objbase.h>
+
diff --git a/public/sdk/inc/subauth.h b/public/sdk/inc/subauth.h
new file mode 100644
index 000000000..b310c8c08
--- /dev/null
+++ b/public/sdk/inc/subauth.h
@@ -0,0 +1,271 @@
+/*++ BUILD Version: 0005 Increment this if a change has global effects
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ subauth.h
+
+Abstract:
+
+ This module defines types and macros for Subauthentication Packages.
+
+Revision History:
+
+--*/
+
+#ifndef _NTSUBAUTH_
+#define _NTSUBAUTH_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _NTDEF_
+typedef LONG NTSTATUS, *PNTSTATUS;
+
+typedef struct _UNICODE_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PWSTR Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+
+typedef struct _STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PCHAR Buffer;
+} STRING, *PSTRING;
+
+typedef LARGE_INTEGER OLD_LARGE_INTEGER;
+typedef LARGE_INTEGER POLD_LARGE_INTEGER;
+
+#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
+
+#endif
+
+
+//
+// User account control flags...
+//
+
+#define USER_ACCOUNT_DISABLED (0x00000001)
+#define USER_HOME_DIRECTORY_REQUIRED (0x00000002)
+#define USER_PASSWORD_NOT_REQUIRED (0x00000004)
+#define USER_TEMP_DUPLICATE_ACCOUNT (0x00000008)
+#define USER_NORMAL_ACCOUNT (0x00000010)
+#define USER_MNS_LOGON_ACCOUNT (0x00000020)
+#define USER_INTERDOMAIN_TRUST_ACCOUNT (0x00000040)
+#define USER_WORKSTATION_TRUST_ACCOUNT (0x00000080)
+#define USER_SERVER_TRUST_ACCOUNT (0x00000100)
+#define USER_DONT_EXPIRE_PASSWORD (0x00000200)
+#define USER_ACCOUNT_AUTO_LOCKED (0x00000400)
+
+
+#define USER_MACHINE_ACCOUNT_MASK \
+ ( USER_INTERDOMAIN_TRUST_ACCOUNT |\
+ USER_WORKSTATION_TRUST_ACCOUNT |\
+ USER_SERVER_TRUST_ACCOUNT)
+
+#define USER_ACCOUNT_TYPE_MASK \
+ ( USER_TEMP_DUPLICATE_ACCOUNT |\
+ USER_NORMAL_ACCOUNT |\
+ USER_MACHINE_ACCOUNT_MASK )
+
+
+//
+// Logon times may be expressed in day, hour, or minute granularity.
+//
+// Days per week = 7
+// Hours per week = 168
+// Minutes per week = 10080
+//
+
+#define SAM_DAYS_PER_WEEK (7)
+#define SAM_HOURS_PER_WEEK (24 * SAM_DAYS_PER_WEEK)
+#define SAM_MINUTES_PER_WEEK (60 * SAM_HOURS_PER_WEEK)
+
+typedef struct _LOGON_HOURS {
+
+ USHORT UnitsPerWeek;
+
+ //
+ // UnitsPerWeek is the number of equal length time units the week is
+ // divided into. This value is used to compute the length of the bit
+ // string in logon_hours. Must be less than or equal to
+ // SAM_UNITS_PER_WEEK (10080) for this release.
+ //
+ // LogonHours is a bit map of valid logon times. Each bit represents
+ // a unique division in a week. The largest bit map supported is 1260
+ // bytes (10080 bits), which represents minutes per week. In this case
+ // the first bit (bit 0, byte 0) is Sunday, 00:00:00 - 00-00:59; bit 1,
+ // byte 0 is Sunday, 00:01:00 - 00:01:59, etc. A NULL pointer means
+ // DONT_CHANGE for SamSetInformationUser() calls.
+ //
+
+ PUCHAR LogonHours;
+
+} LOGON_HOURS, *PLOGON_HOURS;
+
+typedef struct _SR_SECURITY_DESCRIPTOR {
+ ULONG Length;
+ PUCHAR SecurityDescriptor;
+} SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR;
+
+#include "pshpack4.h"
+typedef struct _USER_ALL_INFORMATION {
+ LARGE_INTEGER LastLogon;
+ LARGE_INTEGER LastLogoff;
+ LARGE_INTEGER PasswordLastSet;
+ LARGE_INTEGER AccountExpires;
+ LARGE_INTEGER PasswordCanChange;
+ LARGE_INTEGER PasswordMustChange;
+ UNICODE_STRING UserName;
+ UNICODE_STRING FullName;
+ UNICODE_STRING HomeDirectory;
+ UNICODE_STRING HomeDirectoryDrive;
+ UNICODE_STRING ScriptPath;
+ UNICODE_STRING ProfilePath;
+ UNICODE_STRING AdminComment;
+ UNICODE_STRING WorkStations;
+ UNICODE_STRING UserComment;
+ UNICODE_STRING Parameters;
+ UNICODE_STRING LmPassword;
+ UNICODE_STRING NtPassword;
+ UNICODE_STRING PrivateData;
+ SR_SECURITY_DESCRIPTOR SecurityDescriptor;
+ ULONG UserId;
+ ULONG PrimaryGroupId;
+ ULONG UserAccountControl;
+ ULONG WhichFields;
+ LOGON_HOURS LogonHours;
+ USHORT BadPasswordCount;
+ USHORT LogonCount;
+ USHORT CountryCode;
+ USHORT CodePage;
+ BOOLEAN LmPasswordPresent;
+ BOOLEAN NtPasswordPresent;
+ BOOLEAN PasswordExpired;
+ BOOLEAN PrivateDataSensitive;
+} USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION;
+#include "poppack.h"
+#define USER_ALL_PARAMETERS 0x00200000
+
+#define CLEAR_BLOCK_LENGTH 8
+
+typedef struct _CLEAR_BLOCK {
+ CHAR data[CLEAR_BLOCK_LENGTH];
+} CLEAR_BLOCK;
+typedef CLEAR_BLOCK * PCLEAR_BLOCK;
+
+#define CYPHER_BLOCK_LENGTH 8
+
+typedef struct _CYPHER_BLOCK {
+ CHAR data[CYPHER_BLOCK_LENGTH];
+} CYPHER_BLOCK;
+typedef CYPHER_BLOCK * PCYPHER_BLOCK;
+typedef struct _LM_OWF_PASSWORD {
+ CYPHER_BLOCK data[2];
+} LM_OWF_PASSWORD;
+typedef LM_OWF_PASSWORD * PLM_OWF_PASSWORD;
+typedef CLEAR_BLOCK LM_CHALLENGE;
+typedef LM_CHALLENGE * PLM_CHALLENGE;
+typedef LM_OWF_PASSWORD NT_OWF_PASSWORD;
+typedef NT_OWF_PASSWORD * PNT_OWF_PASSWORD;
+typedef LM_CHALLENGE NT_CHALLENGE;
+typedef NT_CHALLENGE * PNT_CHALLENGE;
+
+typedef enum _NETLOGON_LOGON_INFO_CLASS {
+ NetlogonInteractiveInformation = 1,
+ NetlogonNetworkInformation,
+ NetlogonServiceInformation
+} NETLOGON_LOGON_INFO_CLASS;
+
+#pragma pack(4)
+typedef struct _NETLOGON_LOGON_IDENTITY_INFO {
+ UNICODE_STRING LogonDomainName;
+ ULONG ParameterControl;
+ OLD_LARGE_INTEGER LogonId;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Workstation;
+} NETLOGON_LOGON_IDENTITY_INFO,
+ *PNETLOGON_LOGON_IDENTITY_INFO;
+#pragma pack()
+
+#pragma pack(4)
+typedef struct _NETLOGON_INTERACTIVE_INFO {
+ NETLOGON_LOGON_IDENTITY_INFO Identity;
+ LM_OWF_PASSWORD LmOwfPassword;
+ NT_OWF_PASSWORD NtOwfPassword;
+} NETLOGON_INTERACTIVE_INFO,
+ *PNETLOGON_INTERACTIVE_INFO;
+#pragma pack()
+
+#pragma pack(4)
+typedef struct _NETLOGON_SERVICE_INFO {
+ NETLOGON_LOGON_IDENTITY_INFO Identity;
+ LM_OWF_PASSWORD LmOwfPassword;
+ NT_OWF_PASSWORD NtOwfPassword;
+} NETLOGON_SERVICE_INFO, *PNETLOGON_SERVICE_INFO;
+#pragma pack()
+
+#pragma pack(4)
+typedef struct _NETLOGON_NETWORK_INFO {
+ NETLOGON_LOGON_IDENTITY_INFO Identity;
+ LM_CHALLENGE LmChallenge;
+ STRING NtChallengeResponse;
+ STRING LmChallengeResponse;
+} NETLOGON_NETWORK_INFO, *PNETLOGON_NETWORK_INFO;
+#pragma pack()
+
+// Values for Flags
+#define MSV1_0_PASSTHRU 0x01
+#define MSV1_0_GUEST_LOGON 0x02
+
+NTSTATUS NTAPI
+Msv1_0SubAuthenticationRoutine(
+ IN NETLOGON_LOGON_INFO_CLASS LogonLevel,
+ IN PVOID LogonInformation,
+ IN ULONG Flags,
+ IN PUSER_ALL_INFORMATION UserAll,
+ OUT PULONG WhichFields,
+ OUT PULONG UserFlags,
+ OUT PBOOLEAN Authoritative,
+ OUT PLARGE_INTEGER LogoffTime,
+ OUT PLARGE_INTEGER KickoffTime
+);
+
+NTSTATUS NTAPI
+Msv1_0SubAuthenticationFilter(
+ IN NETLOGON_LOGON_INFO_CLASS LogonLevel,
+ IN PVOID LogonInformation,
+ IN ULONG Flags,
+ IN PUSER_ALL_INFORMATION UserAll,
+ OUT PULONG WhichFields,
+ OUT PULONG UserFlags,
+ OUT PBOOLEAN Authoritative,
+ OUT PLARGE_INTEGER LogoffTime,
+ OUT PLARGE_INTEGER KickoffTime
+);
+
+#define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
+#define STATUS_INVALID_INFO_CLASS ((NTSTATUS)0xC0000003L)
+#define STATUS_ACCESS_VIOLATION ((NTSTATUS)0xC0000005L)
+#define STATUS_NO_SUCH_USER ((NTSTATUS)0xC0000064L)
+#define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006AL)
+#define STATUS_PASSWORD_RESTRICTION ((NTSTATUS)0xC000006CL)
+#define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006DL)
+#define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006EL)
+#define STATUS_INVALID_LOGON_HOURS ((NTSTATUS)0xC000006FL)
+#define STATUS_INVALID_WORKSTATION ((NTSTATUS)0xC0000070L)
+#define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071L)
+#define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072L)
+#define STATUS_INSUFFICIENT_RESOURCES ((NTSTATUS)0xC000009AL)
+#define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193L)
+#define STATUS_PASSWORD_MUST_CHANGE ((NTSTATUS)0xC0000224L)
+#define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234L)
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NTSUBAUTH_ */
+
diff --git a/public/sdk/inc/svcguid.h b/public/sdk/inc/svcguid.h
new file mode 100644
index 000000000..7208b46f3
--- /dev/null
+++ b/public/sdk/inc/svcguid.h
@@ -0,0 +1,342 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ svcguid.h
+
+Abstract:
+
+ Defines GUIDs for well-known services including:
+
+ HOSTNAME
+ RFC 1060 (Assigned Numbers) from IANA (All TCP/IP Services)
+ NetWare services
+
+Created:
+
+ May 8, 1994
+
+Revision History:
+
+--*/
+
+#ifndef _SVCGUID_
+#define _SVCGUID_
+
+#include <basetyps.h>
+
+//
+// HOSTNAME--special GUID which refers to the name of a host as opposed
+// to any particular service on that host.
+//
+
+#define SVCID_HOSTNAME { 0x0002a800, 0, 0, { 0xC0,0,0,0,0,0,0,0x46 } }
+
+//
+// GUIDs for dealing with AF_INET address spaces alone. These are
+// intended to be used when fetching hostent or servent information
+// from such a provider. These are not general-purpose types and
+// should be used only when the intent is getting at down-level
+// information.
+//
+
+#define SVCID_INET_HOSTADDRBYINETSTRING \
+ { 0x0002a801, 0, 0, { 0xC0,0,0,0,0,0,0,0x46 } }
+#define SVCID_INET_SERVICEBYNAME \
+ { 0x0002a802, 0, 0, { 0xC0,0,0,0,0,0,0,0x46 } }
+#define SVCID_INET_HOSTADDRBYNAME \
+ { 0x0002a803, 0, 0, { 0xC0,0,0,0,0,0,0,0x46 } }
+
+//
+// Macros for defining and testing TCP and UDP GUIDs from a well-known
+// port.
+//
+
+#define SVCID_TCP_RR(_Port, _RR) \
+ { (0x0009 << 16) | (_Port), 0, _RR, { 0xC0,0,0,0,0,0,0,0x46 } }
+
+#define SVCID_TCP(_Port) SVCID_TCP_RR(_Port, 0)
+
+#define IS_SVCID_TCP(_g) \
+ ( ((((_g)->Data1) & 0xFFFF0000) == 0x00090000) && \
+ (((_g)->Data2) == 0) && \
+ (((_g)->Data4[0]) == 0xC0) && \
+ (((_g)->Data4[1]) == 0) && \
+ (((_g)->Data4[2]) == 0) && \
+ (((_g)->Data4[3]) == 0) && \
+ (((_g)->Data4[4]) == 0) && \
+ (((_g)->Data4[5]) == 0) && \
+ (((_g)->Data4[6]) == 0) && \
+ (((_g)->Data4[7]) == 0x46) )
+
+#define PORT_FROM_SVCID_TCP(_g) \
+ ((WORD)(_g->Data1 & 0xFFFF))
+
+#define RR_FROM_SVCID(_RR) (_RR->Data3)
+
+
+#define SET_TCP_SVCID_RR(_g,_Port, _RR) { \
+ (_g)->Data1 = (0x0009 << 16 ) | (_Port); \
+ (_g)->Data2 = 0; \
+ (_g)->Data3 = _RR; \
+ (_g)->Data4[0] = 0xC0; \
+ (_g)->Data4[1] = 0x0; \
+ (_g)->Data4[2] = 0x0; \
+ (_g)->Data4[3] = 0x0; \
+ (_g)->Data4[4] = 0x0; \
+ (_g)->Data4[5] = 0x0; \
+ (_g)->Data4[6] = 0x0; \
+ (_g)->Data4[7] = 0x46; }
+
+#define SET_TCP_SVCID(_g,_Port) SET_TCP_SVCID_RR(_g, _Port, 0)
+
+#define SVCID_UDP_RR(_Port, _RR) \
+ { (0x0009 << 16) | (_Port), 0, _RR, { 0xC0,0,0,0,0,0,0,0x46 } }
+
+#define SVCID_UDP(_Port) SVCID_UDP(_Port) SVCID_UDP_RR(_Port, 0)
+
+#define IS_SVCID_UDP(_g) \
+ ( ((((_g)->Data1) & 0xFFFF0000) == 0x000A0000) && \
+ (((_g)->Data2) == 0) && \
+ (((_g)->Data4[0]) == 0xC0) && \
+ (((_g)->Data4[1]) == 0) && \
+ (((_g)->Data4[2]) == 0) && \
+ (((_g)->Data4[3]) == 0) && \
+ (((_g)->Data4[4]) == 0) && \
+ (((_g)->Data4[5]) == 0) && \
+ (((_g)->Data4[6]) == 0) && \
+ (((_g)->Data4[7]) == 0x46) )
+
+#define PORT_FROM_SVCID_UDP(_g) \
+ ((WORD)(_g->Data1 & 0xFFFF))
+
+#define SET_UDP_SVCID_RR(_g,_Port, _RR) { \
+ (_g)->Data1 = (0x000A << 16 ) | (_Port); \
+ (_g)->Data2 = 0; \
+ (_g)->Data3 = _RR; \
+ (_g)->Data4[0] = 0xC0; \
+ (_g)->Data4[1] = 0x0; \
+ (_g)->Data4[2] = 0x0; \
+ (_g)->Data4[3] = 0x0; \
+ (_g)->Data4[4] = 0x0; \
+ (_g)->Data4[5] = 0x0; \
+ (_g)->Data4[6] = 0x0; \
+ (_g)->Data4[7] = 0x46; }
+
+#define SET_UDP_SVCID(_g, _Port) SET_UDP_SVCID_RR(_g, _Port, 0)
+
+//
+// Macros for defining and testing Netware (SAP) services based on the
+// SAP ID.
+//
+
+#define SVCID_NETWARE(_SapId) \
+ { (0x000B << 16) | (_SapId), 0, 0, { 0xC0,0,0,0,0,0,0,0x46 } }
+
+#define IS_SVCID_NETWARE(_g) \
+ ( ((((_g)->Data1) & 0xFFFF0000) == 0x000B0000) && \
+ (((_g)->Data2) == 0) && \
+ (((_g)->Data3) == 0) && \
+ (((_g)->Data4[0]) == 0xC0) && \
+ (((_g)->Data4[1]) == 0) && \
+ (((_g)->Data4[2]) == 0) && \
+ (((_g)->Data4[3]) == 0) && \
+ (((_g)->Data4[4]) == 0) && \
+ (((_g)->Data4[5]) == 0) && \
+ (((_g)->Data4[6]) == 0) && \
+ (((_g)->Data4[7]) == 0x46) )
+
+#define SAPID_FROM_SVCID_NETWARE(_g) \
+ ((WORD)(_g->Data1 & 0xFFFF))
+
+#define SET_NETWARE_SVCID(_g,_SapId) { \
+ (_g)->Data1 = (0x000B << 16 ) | (_SapId); \
+ (_g)->Data2 = 0; \
+ (_g)->Data3 = 0; \
+ (_g)->Data4[0] = 0xC0; \
+ (_g)->Data4[1] = 0x0; \
+ (_g)->Data4[2] = 0x0; \
+ (_g)->Data4[3] = 0x0; \
+ (_g)->Data4[4] = 0x0; \
+ (_g)->Data4[5] = 0x0; \
+ (_g)->Data4[6] = 0x0; \
+ (_g)->Data4[7] = 0x46; }
+
+//
+// RFC 1060 services as defined by the IANA
+// GUID block = 0009xxxx-0000-0000-C0000-000000000046
+//
+
+#define SVCID_ECHO_TCP SVCID_TCP( 7 )
+#define SVCID_DISCARD_TCP SVCID_TCP( 9 )
+#define SVCID_SYSTAT_TCP SVCID_TCP( 11 )
+#define SVCID_SYSTAT_TCP SVCID_TCP( 11 )
+#define SVCID_DAYTIME_TCP SVCID_TCP( 13 )
+#define SVCID_NETSTAT_TCP SVCID_TCP( 15 )
+#define SVCID_QOTD_TCP SVCID_TCP( 17 )
+#define SVCID_CHARGEN_TCP SVCID_TCP( 19 )
+#define SVCID_FTP_DATA_TCP SVCID_TCP( 20 )
+#define SVCID_FTP_TCP SVCID_TCP( 21 )
+#define SVCID_TELNET_TCP SVCID_TCP( 23 )
+#define SVCID_SMTP_TCP SVCID_TCP( 25 )
+#define SVCID_TIME_TCP SVCID_TCP( 37 )
+#define SVCID_NAME_TCP SVCID_TCP( 42 )
+#define SVCID_WHOIS_TCP SVCID_TCP( 43 )
+#define SVCID_DOMAIN_TCP SVCID_TCP( 53 )
+#define SVCID_NAMESERVER_TCP SVCID_TCP( 53 )
+#define SVCID_MTP_TCP SVCID_TCP( 57 )
+#define SVCID_RJE_TCP SVCID_TCP( 77 )
+#define SVCID_FINGER_TCP SVCID_TCP( 79 )
+#define SVCID_LINK_TCP SVCID_TCP( 87 )
+#define SVCID_SUPDUP_TCP SVCID_TCP( 95 )
+#define SVCID_HOSTNAMES_TCP SVCID_TCP( 101 )
+#define SVCID_ISO_TSAP_TCP SVCID_TCP( 102 )
+#define SVCID_DICTIONARY_TCP SVCID_TCP( 103 )
+#define SVCID_X400_TCP SVCID_TCP( 103 )
+#define SVCID_X400_SND_TCP SVCID_TCP( 104 )
+#define SVCID_CSNET_NS_TCP SVCID_TCP( 105 )
+#define SVCID_POP_TCP SVCID_TCP( 109 )
+#define SVCID_POP2_TCP SVCID_TCP( 109 )
+#define SVCID_POP3_TCP SVCID_TCP( 110 )
+#define SVCID_PORTMAP_TCP SVCID_TCP( 111 )
+#define SVCID_SUNRPC_TCP SVCID_TCP( 111 )
+#define SVCID_AUTH_TCP SVCID_TCP( 113 )
+#define SVCID_SFTP_TCP SVCID_TCP( 115 )
+#define SVCID_PATH_TCP SVCID_TCP( 117 )
+#define SVCID_UUCP_PATH_TCP SVCID_TCP( 117 )
+#define SVCID_NNTP_TCP SVCID_TCP( 119 )
+#define SVCID_NBSESSION_TCP SVCID_TCP( 139 )
+#define SVCID_NEWS_TCP SVCID_TCP( 144 )
+#define SVCID_TCPREPO_TCP SVCID_TCP( 158 )
+#define SVCID_PRINT_SRV_TCP SVCID_TCP( 170 )
+#define SVCID_VMNET_TCP SVCID_TCP( 175 )
+#define SVCID_VMNET0_TCP SVCID_TCP( 400 )
+#define SVCID_EXEC_TCP SVCID_TCP( 512 )
+#define SVCID_LOGIN_TCP SVCID_TCP( 513 )
+#define SVCID_SHELL_TCP SVCID_TCP( 514 )
+#define SVCID_PRINTER_TCP SVCID_TCP( 515 )
+#define SVCID_EFS_TCP SVCID_TCP( 520 )
+#define SVCID_TEMPO_TCP SVCID_TCP( 526 )
+#define SVCID_COURIER_TCP SVCID_TCP( 530 )
+#define SVCID_CONFERENCE_TCP SVCID_TCP( 531 )
+#define SVCID_NETNEWS_TCP SVCID_TCP( 532 )
+#define SVCID_UUCP_TCP SVCID_TCP( 540 )
+#define SVCID_KLOGIN_TCP SVCID_TCP( 543 )
+#define SVCID_KSHELL_TCP SVCID_TCP( 544 )
+#define SVCID_REMOTEFS_TCP SVCID_TCP( 556 )
+#define SVCID_GARCON_TCP SVCID_TCP( 600 )
+#define SVCID_MAITRD_TCP SVCID_TCP( 601 )
+#define SVCID_BUSBOY_TCP SVCID_TCP( 602 )
+#define SVCID_KERBEROS_TCP SVCID_TCP( 750 )
+#define SVCID_KERBEROS_MASTER_TCP SVCID_TCP( 751 )
+#define SVCID_KRB_PROP_TCP SVCID_TCP( 754 )
+#define SVCID_ERLOGIN_TCP SVCID_TCP( 888 )
+#define SVCID_KPOP_TCP SVCID_TCP( 1109 )
+#define SVCID_INGRESLOCK_TCP SVCID_TCP( 1524 )
+#define SVCID_KNETD_TCP SVCID_TCP( 2053 )
+#define SVCID_EKLOGIN_TCP SVCID_TCP( 2105 )
+#define SVCID_RMT_TCP SVCID_TCP( 5555 )
+#define SVCID_MTB_TCP SVCID_TCP( 5556 )
+#define SVCID_MAN_TCP SVCID_TCP( 9535 )
+#define SVCID_W_TCP SVCID_TCP( 9536 )
+#define SVCID_MANTST_TCP SVCID_TCP( 9537 )
+#define SVCID_BNEWS_TCP SVCID_TCP( 10000 )
+#define SVCID_QUEUE_TCP SVCID_TCP( 10001 )
+#define SVCID_POKER_TCP SVCID_TCP( 10002 )
+#define SVCID_GATEWAY_TCP SVCID_TCP( 10003 )
+#define SVCID_REMP_TCP SVCID_TCP( 10004 )
+#define SVCID_QMASTER_TCP SVCID_TCP( 10012 )
+
+#define SVCID_ECHO_UDP SVCID_UDP( 7 )
+#define SVCID_DISCARD_UDP SVCID_UDP( 9 )
+#define SVCID_DAYTIME_UDP SVCID_UDP( 13 )
+#define SVCID_QOTD_UDP SVCID_UDP( 17 )
+#define SVCID_CHARGEN_UDP SVCID_UDP( 19 )
+#define SVCID_TIME_UDP SVCID_UDP( 37 )
+#define SVCID_RLP_UDP SVCID_UDP( 39 )
+#define SVCID_NAME_UDP SVCID_UDP( 42 )
+#define SVCID_DOMAIN_UDP SVCID_UDP( 53 )
+#define SVCID_NAMESERVER_UDP SVCID_UDP( 53 )
+#define SVCID_BOOTP_UDP SVCID_UDP( 67 )
+#define SVCID_TFTP_UDP SVCID_UDP( 69 )
+#define SVCID_PORTMAP_UDP SVCID_UDP( 111 )
+#define SVCID_SUNRPC_UDP SVCID_UDP( 111 )
+#define SVCID_NTP_UDP SVCID_UDP( 123 )
+#define SVCID_NBNAME_UDP SVCID_UDP( 137 )
+#define SVCID_NBDATAGRAM_UDP SVCID_UDP( 138 )
+#define SVCID_SGMP_UDP SVCID_UDP( 153 )
+#define SVCID_SNMP_UDP SVCID_UDP( 161 )
+#define SVCID_SNMP_TRAP_UDP SVCID_UDP( 162 )
+#define SVCID_LOAD_UDP SVCID_UDP( 315 )
+#define SVCID_SYTEK_UDP SVCID_UDP( 500 )
+#define SVCID_BIFF_UDP SVCID_UDP( 512 )
+#define SVCID_WHO_UDP SVCID_UDP( 513 )
+#define SVCID_SYSLOG_UDP SVCID_UDP( 514 )
+#define SVCID_TALK_UDP SVCID_UDP( 517 )
+#define SVCID_NTALK_UDP SVCID_UDP( 518 )
+#define SVCID_ROUTE_UDP SVCID_UDP( 520 )
+#define SVCID_TIMED_UDP SVCID_UDP( 525 )
+#define SVCID_RVD_CONTROL_UDP SVCID_UDP( 531 )
+#define SVCID_NETWALL_UDP SVCID_UDP( 533 )
+#define SVCID_NEW_RWHO_UDP SVCID_UDP( 550 )
+#define SVCID_RMONITOR_UDP SVCID_UDP( 560 )
+#define SVCID_MONITOR_UDP SVCID_UDP( 561 )
+#define SVCID_ACCTMASTER_UDP SVCID_UDP( 700 )
+#define SVCID_ACCTSLAVE_UDP SVCID_UDP( 701 )
+#define SVCID_ACCT_UDP SVCID_UDP( 702 )
+#define SVCID_ACCTLOGIN_UDP SVCID_UDP( 703 )
+#define SVCID_ACCTPRINTER_UDP SVCID_UDP( 704 )
+#define SVCID_ELCSD_UDP SVCID_UDP( 704 )
+#define SVCID_ACCTINFO_UDP SVCID_UDP( 705 )
+#define SVCID_ACCTSLAVE2_UDP SVCID_UDP( 706 )
+#define SVCID_ACCTDISK_UDP SVCID_UDP( 707 )
+#define SVCID_KERBEROS_UDP SVCID_UDP( 750 )
+#define SVCID_KERBEROS_MASTER_UDP SVCID_UDP( 751 )
+#define SVCID_PASSWD_SERVER_UDP SVCID_UDP( 752 )
+#define SVCID_USERREG_SERVER_UDP SVCID_UDP( 753 )
+#define SVCID_PHONE_UDP SVCID_UDP( 1167 )
+#define SVCID_MAZE_UDP SVCID_UDP( 1666 )
+#define SVCID_NFS_UDP SVCID_UDP( 2049 )
+#define SVCID_RSCS0_UDP SVCID_UDP( 10000 )
+#define SVCID_RSCS1_UDP SVCID_UDP( 10001 )
+#define SVCID_RSCS2_UDP SVCID_UDP( 10002 )
+#define SVCID_RSCS3_UDP SVCID_UDP( 10003 )
+#define SVCID_RSCS4_UDP SVCID_UDP( 10004 )
+#define SVCID_RSCS5_UDP SVCID_UDP( 10005 )
+#define SVCID_RSCS6_UDP SVCID_UDP( 10006 )
+#define SVCID_RSCS7_UDP SVCID_UDP( 10007 )
+#define SVCID_RSCS8_UDP SVCID_UDP( 10008 )
+#define SVCID_RSCS9_UDP SVCID_UDP( 10009 )
+#define SVCID_RSCSA_UDP SVCID_UDP( 10010 )
+#define SVCID_RSCSB_UDP SVCID_UDP( 10011 )
+#define SVCID_QMASTER_UDP SVCID_UDP( 10012 )
+
+//
+// NetWare services
+// GUID block = 000axxxx-0000-0000-C0000-000000000046
+//
+
+#define SVCID_PRINT_QUEUE SVCID_NETWARE( 0x3 )
+#define SVCID_FILE_SERVER SVCID_NETWARE( 0x4 )
+#define SVCID_JOB_SERVER SVCID_NETWARE( 0x5 )
+#define SVCID_GATEWAY SVCID_NETWARE( 0x6 )
+#define SVCID_PRINT_SERVER SVCID_NETWARE( 0x7 )
+#define SVCID_ARCHIVE_QUEUE SVCID_NETWARE( 0x8 )
+#define SVCID_ARCHIVE_SERVER SVCID_NETWARE( 0x9 )
+#define SVCID_JOB_QUEUE SVCID_NETWARE( 0xA )
+#define SVCID_ADMINISTRATION SVCID_NETWARE( 0xB )
+#define SVCID_NAS_SNA_GATEWAY SVCID_NETWARE( 0x21 )
+#define SVCID_REMOTE_BRIDGE_SERVER SVCID_NETWARE( 0x24 )
+#define SVCID_TIME_SYNCHRONIZATION_SERVER SVCID_NETWARE( 0x2D )
+#define SVCID_ARCHIVE_SERVER_DYNAMIC_SAP SVCID_NETWARE( 0x2E )
+#define SVCID_ADVERTISING_PRINT_SERVER SVCID_NETWARE( 0x47 )
+#define SVCID_BTRIEVE_VAP SVCID_NETWARE( 0x4B )
+#define SVCID_DIRECTORY_SERVER SVCID_NETWARE( 0x278 )
+#define SVCID_NETWARE_386 SVCID_NETWARE( 0x107 )
+#define SVCID_HP_PRINT_SERVER SVCID_NETWARE( 0x30C )
+#define SVCID_SNA_SERVER SVCID_NETWARE( 0x444 )
+#define SVCID_SAA_SERVER SVCID_NETWARE( 0x130 )
+
+#endif // _SVCGUID_
diff --git a/public/sdk/inc/sysmgmt.h b/public/sdk/inc/sysmgmt.h
new file mode 100644
index 000000000..dd8704b28
--- /dev/null
+++ b/public/sdk/inc/sysmgmt.h
@@ -0,0 +1,470 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:42:35 1996
+ */
+/* Compiler settings for sysmgmt.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __sysmgmt_h__
+#define __sysmgmt_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IAlertReport_FWD_DEFINED__
+#define __IAlertReport_FWD_DEFINED__
+typedef interface IAlertReport IAlertReport;
+#endif /* __IAlertReport_FWD_DEFINED__ */
+
+
+#ifndef __IAlertTarget_FWD_DEFINED__
+#define __IAlertTarget_FWD_DEFINED__
+typedef interface IAlertTarget IAlertTarget;
+#endif /* __IAlertTarget_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "oleidl.h"
+#include "oleext.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifndef __AlertDefs_INTERFACE_DEFINED__
+#define __AlertDefs_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: AlertDefs
+ * at Fri Nov 15 09:42:35 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][local] */
+
+
+#define ALERTSEVERITY_INFORMATION 0x0004
+#define ALERTSEVERITY_WARNING 0x0002
+#define ALERTSEVERITY_ERROR 0x0001
+#define ALERTSEVERITY_SEVERE_ERROR 0x0020
+#define ALERTSEVERITY_FATAL_ERROR 0x0040
+#define ALERTSEVERITY_NEGATIVE_MATCH 0x0080
+#define ALERTSEVERITY_STATUS ALERTSEVERITY_INFORMATION
+#define ALERTSEVERITY_NOTIFICATION ALERTSEVERITY_WARNING
+#define ALERTSEVERITY_SEVERE ALERTSEVERITY_SEVERE_ERROR
+#define ALERTSEVERITY_FATAL ALERTSEVERITY_FATAL_ERROR
+#define cAlertCategories (18)
+#define Category_SystemEvents (0)
+#define SystemEvents_Legacy (1)
+#define Category_UserNotification (1)
+#define UserNotification_PrintJobDone (1)
+#define UserNotification_Fax (2)
+#define Category_ApplicationNotification (2)
+#define ApplicationNotification_Memory (1)
+#define Category_ApplicationManagement (3)
+#define ApplicationManagement_TokenGranted (1)
+#define ApplicationManagement_TokenDenied (2)
+#define Category_PrintersAndSharedResources (4)
+#define PrintersAndSharedResources_Toner (1)
+#define PrintersAndSharedResources_DeviceDriver (2)
+#define PrintersAndSharedResources_Paper (3)
+#define Category_SecurityManagement (5)
+#define SecurityManagement_ACL (1)
+#define Category_UserAccounts (6)
+#define UserAccounts_Created (1)
+#define UserAccounts_Deleted (2)
+#define Category_Storage (7)
+#define Storage_Replication (1)
+#define Storage_Quotas (2)
+#define Storage_OFS (3)
+#define Storage_NTFS (4)
+#define Storage_FAT (5)
+#define Category_DistributedServices (8)
+#define DistributedServices_DFS (1)
+#define DistributedServices_DS (2)
+#define Category_LAN (9)
+#define LAN_Bridge (1)
+#define LAN_Cabling (2)
+#define Category_WAN (10)
+#define WAN_Router (1)
+#define WAN_Switch (2)
+#define WAN_Telephony (3)
+#define Category_Catalog (11)
+#define Catalog_Catalog (1)
+#define Category_BatchJob (12)
+#define BatchJob_FailedToStart (1)
+#define BatchJob_FailedTocomplete (2)
+#define Category_Backup (13)
+#define Backup_FailedToStart (1)
+#define Backup_Started (2)
+#define Backup_FailedToComplete (3)
+#define Backup_Completed (4)
+#define Category_SystemSoftware (14)
+#define SystemSoftware_Kernel (1)
+#define SystemSoftware_Drivers (2)
+#define Category_SystemHardware (15)
+#define SystemHardware_CD ROM (1)
+#define SystemHardware_Memory (2)
+#define SystemHardware_Bus (3)
+#define SystemHardware_SCSI (4)
+#define SystemHardware_IDE (5)
+#define SystemHardware_NIC (6)
+#define Category_SystemMonitoring (16)
+#define SystemMonitoring_SYSMON (1)
+#define SystemMonitoring_Bloodhound (2)
+#define Category_HelpdeskAndDiagnostics (17)
+#define HelpdeskAndDiagnostics_DrWatson (1)
+#define Category_AlertNotify (18)
+#define AlertNotify_ForwardIncomplete (1)
+#define AlertNotify_RegistrationCanceled (2)
+#define DISPID_SystemAlertReport_Category (1001)
+#define DISPID_SystemAlertReport_SubCategory (1002)
+#define DISPID_SystemAlertReport_Severity (1003)
+#define DISPID_SystemAlertReport_TitleText (1004)
+#define DISPID_SystemAlertReport_DescriptionText (1005)
+#define DISPID_SystemAlertReport_SourceDescription (1006)
+#define DISPID_SystemAlertReport_SourceMachine (1007)
+#define DISPID_SystemAlertReport_CreationTime (1008)
+#define DISPID_SystemAlertReport_TitleMessageNumber (1009)
+#define DISPID_SystemAlertReport_TitleMessageInserts (1010)
+#define DISPID_SystemAlertReport_DescrMessageNumber (1011)
+#define DISPID_SystemAlertReport_DescrMessageInserts (1012)
+#define DISPID_SystemAlertReport_ComponentID (1013)
+#define DISPID_SystemAlertReport_ReportClassID (1014)
+#define DISPID_SystemAlertReport_BinaryData (1015)
+#define DISPID_SystemAlertReport_SourceLanguageID (1016)
+#define DISPID_SystemAlertReport_UniqueID (1017)
+#define DISPID_SystemAlertReport_TargetCount (1018)
+#define DISPID_SystemAlertReport_TakeActionDLL (1019)
+#define DISPID_SystemAlertReport_Reserved (1200)
+#define DISPID_SystemAlertReport_GetTitle (1501)
+#define DISPID_SystemAlertReport_GetDescription (1502)
+#define DISPID_SystemAlertReport_Send (1503)
+#define DISPID_SystemAlertReport_Save (1504)
+#define DISPID_SystemAlertReport_GetVersion (1505)
+#define DISPID_SystemAlertReport_SetExpiration (1506)
+#define DISPID_SystemAlertReport_GetExpiration (1507)
+#define DISPID_SystemAlertReport_SetState (1508)
+#define DISPID_SystemAlertReport_GetState (1509)
+#define DISPID_SystemAlertReport_GetActions (1510)
+#define DISPID_SystemAlertReport_PerformAction (1511)
+#define DISPID_NTEventReport_EventCategory (2)
+#define DISPID_NTEventReport_LogFile (3)
+#define DISPID_RULES_BASE (2)
+#define DISPID_Rule_Collection (DISPID_RULES_BASE + 0)
+#define DISPID_Rule_Collection_Count (DISPID_RULES_BASE + 1)
+#define DISPID_Rule_Collection_Add (DISPID_RULES_BASE + 2)
+#define DISPID_Rule_Collection_Item (DISPID_RULES_BASE + 3)
+#define DISPID_Rule_Collection__NewEnum (DISPID_NEWENUM)
+#define DISPID_RULE_BASE (2)
+#define DISPID_Rule_Category (DISPID_RULE_BASE + 0)
+#define DISPID_Rule_Remove (DISPID_RULE_BASE + 1)
+#define DISPID_SubRule_Collection_Count (DISPID_RULE_BASE + 2)
+#define DISPID_SubRule_Collection_Add (DISPID_RULE_BASE + 3)
+#define DISPID_SubRule_Collection_Item (DISPID_RULE_BASE + 4)
+#define DISPID_SubRule_Collection__NewEnum (DISPID_RULE_BASE + 5)
+#define DISPID_SUBRULE_BASE (2)
+#define DISPID_SubRule_SubCategory (DISPID_SUBRULE_BASE + 0)
+#define DISPID_SubRule_Severity (DISPID_SUBRULE_BASE + 1)
+#define DISPID_REGISTRATION_BASE (2)
+#define DISPID_Registration_ID (DISPID_REGISTRATION_BASE + 0)
+#define DISPID_Registration_TargetPath (DISPID_REGISTRATION_BASE + 1)
+#define DISPID_Registration_ForwardingRules (DISPID_REGISTRATION_BASE + 2)
+#define DISPID_Registration_EnableForwarding (DISPID_REGISTRATION_BASE + 3)
+#define DISPID_Registration__FirstErrorTime (DISPID_REGISTRATION_BASE + 4)
+#define DISPID_Registration__ErrorCount (DISPID_REGISTRATION_BASE + 5)
+#define DISPID_Registration__Target (DISPID_REGISTRATION_BASE + 6)
+#define DISPID_Registration_Remove (DISPID_REGISTRATION_BASE + 7)
+#define DISPID_REG_COLLECTION_BASE (2)
+#define DISPID_Registration_Collection (DISPID_REG_COLLECTION_BASE + 0)
+#define DISPID_Registration_Collection_Count (DISPID_REG_COLLECTION_BASE + 1)
+#define DISPID_Registration_Collection_Add (DISPID_REG_COLLECTION_BASE + 2)
+#define DISPID_Registration_Collection_Item (DISPID_REG_COLLECTION_BASE + 3)
+#define DISPID_Registration_Collection__NewEnum (DISPID_NEWENUM)
+void DummyMethod( void);
+
+
+
+extern RPC_IF_HANDLE AlertDefs_v0_0_c_ifspec;
+extern RPC_IF_HANDLE AlertDefs_v0_0_s_ifspec;
+#endif /* __AlertDefs_INTERFACE_DEFINED__ */
+
+#ifndef __IAlertReport_INTERFACE_DEFINED__
+#define __IAlertReport_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAlertReport
+ * at Fri Nov 15 09:42:35 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IAlertReport;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAlertReport : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InitNew(
+ /* [in] */ DISPPARAMS __RPC_FAR *pdparams) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetReportData(
+ /* [out] */ DISPPARAMS __RPC_FAR *pdparams) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTitle(
+ /* [out] */ BSTR __RPC_FAR *pbstrTitle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTextualDescription(
+ /* [out] */ BSTR __RPC_FAR *pbstrDescr) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAlertReportVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAlertReport __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAlertReport __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAlertReport __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *InitNew )(
+ IAlertReport __RPC_FAR * This,
+ /* [in] */ DISPPARAMS __RPC_FAR *pdparams);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetReportData )(
+ IAlertReport __RPC_FAR * This,
+ /* [out] */ DISPPARAMS __RPC_FAR *pdparams);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTitle )(
+ IAlertReport __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pbstrTitle);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTextualDescription )(
+ IAlertReport __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pbstrDescr);
+
+ END_INTERFACE
+ } IAlertReportVtbl;
+
+ interface IAlertReport
+ {
+ CONST_VTBL struct IAlertReportVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAlertReport_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAlertReport_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAlertReport_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAlertReport_InitNew(This,pdparams) \
+ (This)->lpVtbl -> InitNew(This,pdparams)
+
+#define IAlertReport_GetReportData(This,pdparams) \
+ (This)->lpVtbl -> GetReportData(This,pdparams)
+
+#define IAlertReport_GetTitle(This,pbstrTitle) \
+ (This)->lpVtbl -> GetTitle(This,pbstrTitle)
+
+#define IAlertReport_GetTextualDescription(This,pbstrDescr) \
+ (This)->lpVtbl -> GetTextualDescription(This,pbstrDescr)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IAlertReport_InitNew_Proxy(
+ IAlertReport __RPC_FAR * This,
+ /* [in] */ DISPPARAMS __RPC_FAR *pdparams);
+
+
+void __RPC_STUB IAlertReport_InitNew_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAlertReport_GetReportData_Proxy(
+ IAlertReport __RPC_FAR * This,
+ /* [out] */ DISPPARAMS __RPC_FAR *pdparams);
+
+
+void __RPC_STUB IAlertReport_GetReportData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAlertReport_GetTitle_Proxy(
+ IAlertReport __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pbstrTitle);
+
+
+void __RPC_STUB IAlertReport_GetTitle_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IAlertReport_GetTextualDescription_Proxy(
+ IAlertReport __RPC_FAR * This,
+ /* [out] */ BSTR __RPC_FAR *pbstrDescr);
+
+
+void __RPC_STUB IAlertReport_GetTextualDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAlertReport_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAlertTarget_INTERFACE_DEFINED__
+#define __IAlertTarget_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAlertTarget
+ * at Fri Nov 15 09:42:35 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+
+EXTERN_C const IID IID_IAlertTarget;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAlertTarget : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Report(
+ /* [in] */ ULONG cbReportSize,
+ /* [size_is] */ BYTE __RPC_FAR *pbReport) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAlertTargetVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAlertTarget __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAlertTarget __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAlertTarget __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Report )(
+ IAlertTarget __RPC_FAR * This,
+ /* [in] */ ULONG cbReportSize,
+ /* [size_is] */ BYTE __RPC_FAR *pbReport);
+
+ END_INTERFACE
+ } IAlertTargetVtbl;
+
+ interface IAlertTarget
+ {
+ CONST_VTBL struct IAlertTargetVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAlertTarget_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAlertTarget_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAlertTarget_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAlertTarget_Report(This,cbReportSize,pbReport) \
+ (This)->lpVtbl -> Report(This,cbReportSize,pbReport)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IAlertTarget_Report_Proxy(
+ IAlertTarget __RPC_FAR * This,
+ /* [in] */ ULONG cbReportSize,
+ /* [size_is] */ BYTE __RPC_FAR *pbReport);
+
+
+void __RPC_STUB IAlertTarget_Report_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAlertTarget_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/syssetup.h b/public/sdk/inc/syssetup.h
new file mode 100644
index 000000000..9789d02c2
--- /dev/null
+++ b/public/sdk/inc/syssetup.h
@@ -0,0 +1,271 @@
+/*++
+
+Copyright (c) 1995 Microsoft Corporation
+
+Module Name:
+
+ syssetup.h
+
+Abstract:
+
+ Header file for internal-use routines exported from
+ syssetup.dll.
+
+ To use this file your code must #include setupapi.h first.
+
+Author:
+
+ Ted Miller (tedm) 15-Aug-1995
+
+Revision History:
+
+--*/
+
+
+#ifndef _WINNT_SYSSETUP_
+#define _WINNT_SYSSETUP_
+
+
+
+DWORD
+SetupChangeLocale(
+ IN HWND Window,
+ IN LCID NewLocale
+ );
+
+DWORD
+SetupChangeFontSize(
+ IN HWND Window,
+ IN PCWSTR SizeSpec
+ );
+
+DWORD
+ApplyAcls(
+ IN HWND OwnerWindow,
+ IN PCWSTR PermissionsInfFileName,
+ IN DWORD Flags,
+ IN PVOID Reserved
+ );
+
+BOOL
+SetupCreateOptionalComponentsPage(
+ IN LPFNADDPROPSHEETPAGE AddPageCallback,
+ IN LPARAM Context
+ );
+
+
+//
+// Define structure used by base and net setups to communicate
+// with each other.
+//
+typedef struct _INTERNAL_SETUP_DATA {
+ //
+ // Structure validity test
+ //
+ DWORD dwSizeOf;
+
+ //
+ // Custom, typical, laptop, minimal
+ //
+ DWORD SetupMode;
+
+ //
+ // Workstation, pdc, bdc, standalone
+ //
+ DWORD ProductType;
+
+ //
+ // Upgrade, unattended, etc.
+ //
+ DWORD OperationFlags;
+
+ //
+ // Title net setup wizard is supposed to use.
+ //
+ PCWSTR WizardTitle;
+
+ //
+ // Installation source path.
+ //
+ PCWSTR SourcePath;
+
+ //
+ // If SETUPOPER_BATCH is set, this is the fully qualified
+ // path of the unattend file.
+ //
+ PCWSTR UnattendFile;
+
+ //
+ // Installation source path to be used by legacy infs, etc.
+ // This path has the platform-specific dir stuck on the end
+ // because that's the way old-style infs and code expected it.
+ //
+ PCWSTR LegacySourcePath;
+
+ //
+ // The following generic data fields contain information that is
+ // specific to the particular callout being made by Windows NT
+ // Setup.
+ //
+ DWORD CallSpecificData1;
+ DWORD CallSpecificData2;
+
+} INTERNAL_SETUP_DATA, *PINTERNAL_SETUP_DATA;
+
+typedef CONST INTERNAL_SETUP_DATA *PCINTERNAL_SETUP_DATA;
+
+//
+// Setup mode (custom, typical, laptop, etc)
+// Do not change these values; the bit values are used with infs.
+// Used for SetupMode in INTERNAL_SETUP_DATA structure.
+//
+#define SETUPMODE_MINIMAL 0
+#define SETUPMODE_TYPICAL 1
+#define SETUPMODE_LAPTOP 2
+#define SETUPMODE_CUSTOM 3
+
+//
+// Operation flags. These may be or'ed together in some cases.
+// Used for OperationFlags in INTERNAL_SETUP_DATA structure.
+//
+#define SETUPOPER_WIN31UPGRADE 0x00000001
+#define SETUPOPER_WIN95UPGRADE 0x00000002
+#define SETUPOPER_NTUPGRADE 0x00000004
+#define SETUPOPER_BATCH 0x00000008
+#define SETUPOPER_POSTSYSINSTALL 0x00000010
+
+#define SETUPOPER_ALLPLATFORM_AVAIL 0x00008000
+
+#define SETUPOPER_NETINSTALLED 0x00010000
+#define SETUPOPER_INTERNETSERVER 0x00020000
+
+//
+// Product type flags.
+// Used for ProductType in INTERNAL_SETUP_DATA structure.
+//
+// Note that the flags are carefully constructed such that
+// if bit 0 is set, it's a DC.
+//
+#define PRODUCT_WORKSTATION 0
+#define PRODUCT_SERVER_PRIMARY 1
+#define PRODUCT_SERVER_SECONDARY 3
+#define PRODUCT_SERVER_STANDALONE 2
+#define ISDC(x) ((x) & 1)
+
+//
+// Maximum number of net setup wizard pages.
+//
+#define MAX_NETWIZ_PAGES 25
+
+//
+// API exported by net setup to give its wizard pages.
+//
+BOOL
+NetSetupRequestWizardPages(
+ OUT HPROPSHEETPAGE *Pages,
+ IN OUT PUINT PageCount,
+ IN OUT PINTERNAL_SETUP_DATA SetupData
+ );
+
+#define NETSETUPPAGEREQUESTPROCNAME "NetSetupRequestWizardPages"
+
+typedef
+BOOL
+(* NETSETUPPAGEREQUESTPROC) (
+ OUT HPROPSHEETPAGE *Pages,
+ OUT PUINT PageCount,
+ IN OUT PINTERNAL_SETUP_DATA SetupData
+ );
+
+//
+// API exported by net setup to allow post wizard software install
+//
+BOOL
+NetSetupInstallSoftware(
+ IN HWND Window,
+ IN OUT PINTERNAL_SETUP_DATA SetupData
+ );
+
+#define NETSETUPINSTALLSOFTWAREPROCNAME "NetSetupInstallSoftware"
+
+typedef
+BOOL
+(* NETSETUPINSTALLSOFTWAREPROC) (
+ IN HWND Window,
+ IN OUT PINTERNAL_SETUP_DATA SetupData
+ );
+
+//
+// API exported by net setup to allow final setup operations (BDC replication)
+//
+BOOL
+NetSetupFinishInstall(
+ IN HWND Window,
+ IN OUT PINTERNAL_SETUP_DATA SetupData
+ );
+
+#define NETSETUPFINISHINSTALLPROCNAME "NetSetupFinishInstall"
+
+typedef
+BOOL
+(* NETSETUPFINISHINSTALLPROC) (
+ IN HWND Window,
+ IN OUT PINTERNAL_SETUP_DATA SetupData
+ );
+
+//
+// API exported by printer setup to upgrade printer drivers
+//
+DWORD
+NtPrintUpgradePrinters(
+ IN HWND Window,
+ IN PCINTERNAL_SETUP_DATA SetupData
+ );
+
+#define UPGRADEPRINTERSPROCNAME ((LPCSTR)1)
+
+typedef
+DWORD
+(* UPGRADEPRINTERSPROC) (
+ IN HWND Window,
+ IN PCINTERNAL_SETUP_DATA SetupData
+ );
+
+//
+// Miscellaneous device installation 'helper' routines
+//
+DWORD
+GenerateScsiHwIdList(
+ IN PVOID ScsiPeripheralClassGuid, // this is actually an LPGUID
+ IN LPCWSTR ScsiMfg,
+ IN LPCWSTR ScsiProductId,
+ IN LPCWSTR ScsiRevisionLevel,
+ OUT LPWSTR HwIdList, OPTIONAL
+ IN DWORD HwIdListSize,
+ OUT PDWORD RequiredSize OPTIONAL
+ );
+
+//
+// Private device installer function codes for SCSI and TAPE
+//
+#define SCSIDIF_CREATEDEVICE 0x00010000
+#define TAPEDIF_CREATEDEVICE 0x00010000
+
+//
+// Define structure passed in via ClassInstallReserved field for the above function codes.
+//
+typedef struct _SCSIDEV_CREATEDEVICE_DATA {
+
+ BOOL AlreadyExists;
+
+ //
+ // Following 3 fields only used for TapeDrive devices.
+ //
+ PCWSTR ScsiMfg;
+ PCWSTR ScsiProductId;
+ PCWSTR ScsiRevisionLevel;
+
+} SCSIDEV_CREATEDEVICE_DATA, *PSCSIDEV_CREATEDEVICE_DATA;
+
+#endif // def _WINNT_SYSSETUP_
+
diff --git a/public/sdk/inc/tapi.h b/public/sdk/inc/tapi.h
new file mode 100644
index 000000000..9704a8533
--- /dev/null
+++ b/public/sdk/inc/tapi.h
@@ -0,0 +1,4713 @@
+/*++ BUILD Version: 0000 // Increment this if a change has global effects
+
+The Telephony API is jointly copyrighted by Intel and Microsoft. You are
+granted a royalty free worldwide, unlimited license to make copies, and use
+the API/SPI for making applications/drivers that interface with the
+specification provided that this paragraph and the Intel/Microsoft copyright
+statement is maintained as is in the text and source code files.
+
+Copyright 1995-96 Microsoft, all rights reserved.
+Portions copyright 1992, 1993 Intel/Microsoft, all rights reserved.
+
+Module Name:
+
+ tapi.h
+
+Notes:
+
+ Additions to the Telephony Application Programming Interface (TAPI) since
+ version 1.0 are noted by version number (e.g. "TAPI v1.4").
+
+--*/
+
+#ifndef TAPI_H
+#define TAPI_H
+
+
+
+//
+// -- TAPI VERSION INFO -- TAPI VERSION INFO -- TAPI VERSION INFO --
+// -- TAPI VERSION INFO -- TAPI VERSION INFO -- TAPI VERSION INFO --
+// -- TAPI VERSION INFO -- TAPI VERSION INFO -- TAPI VERSION INFO --
+//
+// To build a TAPI 1.4 application put a define as below in your source
+// file before you include TAPI.H:
+//
+// #define TAPI_CURRENT_VERSION 0x00010004
+//
+//
+#ifndef TAPI_CURRENT_VERSION
+#define TAPI_CURRENT_VERSION 0x00020000
+#endif
+
+#include <windows.h>
+
+#pragma pack(1)
+// Type definitions of the data types used in tapi
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+
+//
+// TAPI type definitions
+//
+
+#define DECLARE_OPAQUE32(name) struct name##__ { int unused; }; \
+ typedef const struct name##__ FAR* name
+
+DECLARE_OPAQUE32(HCALL);
+typedef HCALL FAR * LPHCALL;
+
+DECLARE_OPAQUE32(HLINE);
+typedef HLINE FAR * LPHLINE;
+
+DECLARE_OPAQUE32(HPHONE);
+typedef HPHONE FAR * LPHPHONE;
+
+DECLARE_OPAQUE32(HLINEAPP);
+typedef HLINEAPP FAR * LPHLINEAPP;
+
+DECLARE_OPAQUE32(HPHONEAPP);
+typedef HPHONEAPP FAR * LPHPHONEAPP;
+
+typedef HICON FAR * LPHICON;
+
+typedef void (CALLBACK * LINECALLBACK)(
+ DWORD hDevice,
+ DWORD dwMessage,
+ DWORD dwInstance,
+ DWORD dwParam1,
+ DWORD dwParam2,
+ DWORD dwParam3
+ );
+
+typedef void (CALLBACK * PHONECALLBACK)(
+ DWORD hDevice,
+ DWORD dwMessage,
+ DWORD dwInstance,
+ DWORD dwParam1,
+ DWORD dwParam2,
+ DWORD dwParam3
+ );
+
+
+// Messages for Phones and Lines
+
+#define LINE_ADDRESSSTATE 0L
+#define LINE_CALLINFO 1L
+#define LINE_CALLSTATE 2L
+#define LINE_CLOSE 3L
+#define LINE_DEVSPECIFIC 4L
+#define LINE_DEVSPECIFICFEATURE 5L
+#define LINE_GATHERDIGITS 6L
+#define LINE_GENERATE 7L
+#define LINE_LINEDEVSTATE 8L
+#define LINE_MONITORDIGITS 9L
+#define LINE_MONITORMEDIA 10L
+#define LINE_MONITORTONE 11L
+#define LINE_REPLY 12L
+#define LINE_REQUEST 13L
+#define PHONE_BUTTON 14L
+#define PHONE_CLOSE 15L
+#define PHONE_DEVSPECIFIC 16L
+#define PHONE_REPLY 17L
+#define PHONE_STATE 18L
+#define LINE_CREATE 19L // TAPI v1.4
+#define PHONE_CREATE 20L // TAPI v1.4
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINE_AGENTSPECIFIC 21L // TAPI v2.0
+#define LINE_AGENTSTATUS 22L // TAPI v2.0
+#define LINE_APPNEWCALL 23L // TAPI v2.0
+#define LINE_PROXYREQUEST 24L // TAPI v2.0
+#define LINE_REMOVE 25L // TAPI v2.0
+#define PHONE_REMOVE 26L // TAPI v2.0
+#endif
+
+
+#define INITIALIZE_NEGOTIATION 0xFFFFFFFFL
+
+#define LINEADDRCAPFLAGS_FWDNUMRINGS 0x00000001
+#define LINEADDRCAPFLAGS_PICKUPGROUPID 0x00000002
+#define LINEADDRCAPFLAGS_SECURE 0x00000004
+#define LINEADDRCAPFLAGS_BLOCKIDDEFAULT 0x00000008
+#define LINEADDRCAPFLAGS_BLOCKIDOVERRIDE 0x00000010
+#define LINEADDRCAPFLAGS_DIALED 0x00000020
+#define LINEADDRCAPFLAGS_ORIGOFFHOOK 0x00000040
+#define LINEADDRCAPFLAGS_DESTOFFHOOK 0x00000080
+#define LINEADDRCAPFLAGS_FWDCONSULT 0x00000100
+#define LINEADDRCAPFLAGS_SETUPCONFNULL 0x00000200
+#define LINEADDRCAPFLAGS_AUTORECONNECT 0x00000400
+#define LINEADDRCAPFLAGS_COMPLETIONID 0x00000800
+#define LINEADDRCAPFLAGS_TRANSFERHELD 0x00001000
+#define LINEADDRCAPFLAGS_TRANSFERMAKE 0x00002000
+#define LINEADDRCAPFLAGS_CONFERENCEHELD 0x00004000
+#define LINEADDRCAPFLAGS_CONFERENCEMAKE 0x00008000
+#define LINEADDRCAPFLAGS_PARTIALDIAL 0x00010000
+#define LINEADDRCAPFLAGS_FWDSTATUSVALID 0x00020000
+#define LINEADDRCAPFLAGS_FWDINTEXTADDR 0x00040000
+#define LINEADDRCAPFLAGS_FWDBUSYNAADDR 0x00080000
+#define LINEADDRCAPFLAGS_ACCEPTTOALERT 0x00100000
+#define LINEADDRCAPFLAGS_CONFDROP 0x00200000
+#define LINEADDRCAPFLAGS_PICKUPCALLWAIT 0x00400000
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEADDRCAPFLAGS_PREDICTIVEDIALER 0x00800000 // TAPI v2.0
+#define LINEADDRCAPFLAGS_QUEUE 0x01000000 // TAPI v2.0
+#define LINEADDRCAPFLAGS_ROUTEPOINT 0x02000000 // TAPI v2.0
+#define LINEADDRCAPFLAGS_HOLDMAKESNEW 0x04000000 // TAPI v2.0
+#define LINEADDRCAPFLAGS_NOINTERNALCALLS 0x08000000 // TAPI v2.0
+#define LINEADDRCAPFLAGS_NOEXTERNALCALLS 0x10000000 // TAPI v2.0
+#define LINEADDRCAPFLAGS_SETCALLINGID 0x20000000 // TAPI v2.0
+#endif
+
+#define LINEADDRESSMODE_ADDRESSID 0x00000001
+#define LINEADDRESSMODE_DIALABLEADDR 0x00000002
+
+#define LINEADDRESSSHARING_PRIVATE 0x00000001
+#define LINEADDRESSSHARING_BRIDGEDEXCL 0x00000002
+#define LINEADDRESSSHARING_BRIDGEDNEW 0x00000004
+#define LINEADDRESSSHARING_BRIDGEDSHARED 0x00000008
+#define LINEADDRESSSHARING_MONITORED 0x00000010
+
+#define LINEADDRESSSTATE_OTHER 0x00000001
+#define LINEADDRESSSTATE_DEVSPECIFIC 0x00000002
+#define LINEADDRESSSTATE_INUSEZERO 0x00000004
+#define LINEADDRESSSTATE_INUSEONE 0x00000008
+#define LINEADDRESSSTATE_INUSEMANY 0x00000010
+#define LINEADDRESSSTATE_NUMCALLS 0x00000020
+#define LINEADDRESSSTATE_FORWARD 0x00000040
+#define LINEADDRESSSTATE_TERMINALS 0x00000080
+#define LINEADDRESSSTATE_CAPSCHANGE 0x00000100 // TAPI v1.4
+
+#define LINEADDRFEATURE_FORWARD 0x00000001
+#define LINEADDRFEATURE_MAKECALL 0x00000002
+#define LINEADDRFEATURE_PICKUP 0x00000004
+#define LINEADDRFEATURE_SETMEDIACONTROL 0x00000008
+#define LINEADDRFEATURE_SETTERMINAL 0x00000010
+#define LINEADDRFEATURE_SETUPCONF 0x00000020
+#define LINEADDRFEATURE_UNCOMPLETECALL 0x00000040
+#define LINEADDRFEATURE_UNPARK 0x00000080
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEADDRFEATURE_PICKUPHELD 0x00000100 // TAPI v2.0
+#define LINEADDRFEATURE_PICKUPGROUP 0x00000200 // TAPI v2.0
+#define LINEADDRFEATURE_PICKUPDIRECT 0x00000400 // TAPI v2.0
+#define LINEADDRFEATURE_PICKUPWAITING 0x00000800 // TAPI v2.0
+#define LINEADDRFEATURE_FORWARDFWD 0x00001000 // TAPI v2.0
+#define LINEADDRFEATURE_FORWARDDND 0x00002000 // TAPI v2.0
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEAGENTFEATURE_SETAGENTGROUP 0x00000001 // TAPI v2.0
+#define LINEAGENTFEATURE_SETAGENTSTATE 0x00000002 // TAPI v2.0
+#define LINEAGENTFEATURE_SETAGENTACTIVITY 0x00000004 // TAPI v2.0
+#define LINEAGENTFEATURE_AGENTSPECIFIC 0x00000008 // TAPI v2.0
+#define LINEAGENTFEATURE_GETAGENTACTIVITYLIST 0x00000010 // TAPI v2.0
+#define LINEAGENTFEATURE_GETAGENTGROUP 0x00000020 // TAPI v2.0
+
+#define LINEAGENTSTATE_LOGGEDOFF 0x00000001 // TAPI v2.0
+#define LINEAGENTSTATE_NOTREADY 0x00000002 // TAPI v2.0
+#define LINEAGENTSTATE_READY 0x00000004 // TAPI v2.0
+#define LINEAGENTSTATE_BUSYACD 0x00000008 // TAPI v2.0
+#define LINEAGENTSTATE_BUSYINCOMING 0x00000010 // TAPI v2.0
+#define LINEAGENTSTATE_BUSYOUTBOUND 0x00000020 // TAPI v2.0
+#define LINEAGENTSTATE_BUSYOTHER 0x00000040 // TAPI v2.0
+#define LINEAGENTSTATE_WORKINGAFTERCALL 0x00000080 // TAPI v2.0
+#define LINEAGENTSTATE_UNKNOWN 0x00000100 // TAPI v2.0
+#define LINEAGENTSTATE_UNAVAIL 0x00000200 // TAPI v2.0
+
+#define LINEAGENTSTATUS_GROUP 0x00000001 // TAPI v2.0
+#define LINEAGENTSTATUS_STATE 0x00000002 // TAPI v2.0
+#define LINEAGENTSTATUS_NEXTSTATE 0x00000004 // TAPI v2.0
+#define LINEAGENTSTATUS_ACTIVITY 0x00000008 // TAPI v2.0
+#define LINEAGENTSTATUS_ACTIVITYLIST 0x00000010 // TAPI v2.0
+#define LINEAGENTSTATUS_GROUPLIST 0x00000020 // TAPI v2.0
+#define LINEAGENTSTATUS_CAPSCHANGE 0x00000040 // TAPI v2.0
+#define LINEAGENTSTATUS_VALIDSTATES 0x00000080 // TAPI v2.0
+#define LINEAGENTSTATUS_VALIDNEXTSTATES 0x00000100 // TAPI v2.0
+#endif
+
+
+#define LINEANSWERMODE_NONE 0x00000001
+#define LINEANSWERMODE_DROP 0x00000002
+#define LINEANSWERMODE_HOLD 0x00000004
+
+#define LINEBEARERMODE_VOICE 0x00000001
+#define LINEBEARERMODE_SPEECH 0x00000002
+#define LINEBEARERMODE_MULTIUSE 0x00000004
+#define LINEBEARERMODE_DATA 0x00000008
+#define LINEBEARERMODE_ALTSPEECHDATA 0x00000010
+#define LINEBEARERMODE_NONCALLSIGNALING 0x00000020
+#define LINEBEARERMODE_PASSTHROUGH 0x00000040 // TAPI v1.4
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEBEARERMODE_RESTRICTEDDATA 0x00000080 // TAPI v2.0
+#endif
+
+#define LINEBUSYMODE_STATION 0x00000001
+#define LINEBUSYMODE_TRUNK 0x00000002
+#define LINEBUSYMODE_UNKNOWN 0x00000004
+#define LINEBUSYMODE_UNAVAIL 0x00000008
+
+#define LINECALLCOMPLCOND_BUSY 0x00000001
+#define LINECALLCOMPLCOND_NOANSWER 0x00000002
+
+#define LINECALLCOMPLMODE_CAMPON 0x00000001
+#define LINECALLCOMPLMODE_CALLBACK 0x00000002
+#define LINECALLCOMPLMODE_INTRUDE 0x00000004
+#define LINECALLCOMPLMODE_MESSAGE 0x00000008
+
+#define LINECALLFEATURE_ACCEPT 0x00000001
+#define LINECALLFEATURE_ADDTOCONF 0x00000002
+#define LINECALLFEATURE_ANSWER 0x00000004
+#define LINECALLFEATURE_BLINDTRANSFER 0x00000008
+#define LINECALLFEATURE_COMPLETECALL 0x00000010
+#define LINECALLFEATURE_COMPLETETRANSF 0x00000020
+#define LINECALLFEATURE_DIAL 0x00000040
+#define LINECALLFEATURE_DROP 0x00000080
+#define LINECALLFEATURE_GATHERDIGITS 0x00000100
+#define LINECALLFEATURE_GENERATEDIGITS 0x00000200
+#define LINECALLFEATURE_GENERATETONE 0x00000400
+#define LINECALLFEATURE_HOLD 0x00000800
+#define LINECALLFEATURE_MONITORDIGITS 0x00001000
+#define LINECALLFEATURE_MONITORMEDIA 0x00002000
+#define LINECALLFEATURE_MONITORTONES 0x00004000
+#define LINECALLFEATURE_PARK 0x00008000
+#define LINECALLFEATURE_PREPAREADDCONF 0x00010000
+#define LINECALLFEATURE_REDIRECT 0x00020000
+#define LINECALLFEATURE_REMOVEFROMCONF 0x00040000
+#define LINECALLFEATURE_SECURECALL 0x00080000
+#define LINECALLFEATURE_SENDUSERUSER 0x00100000
+#define LINECALLFEATURE_SETCALLPARAMS 0x00200000
+#define LINECALLFEATURE_SETMEDIACONTROL 0x00400000
+#define LINECALLFEATURE_SETTERMINAL 0x00800000
+#define LINECALLFEATURE_SETUPCONF 0x01000000
+#define LINECALLFEATURE_SETUPTRANSFER 0x02000000
+#define LINECALLFEATURE_SWAPHOLD 0x04000000
+#define LINECALLFEATURE_UNHOLD 0x08000000
+#define LINECALLFEATURE_RELEASEUSERUSERINFO 0x10000000 // TAPI v1.4
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECALLFEATURE_SETTREATMENT 0x20000000 // TAPI v2.0
+#define LINECALLFEATURE_SETQOS 0x40000000 // TAPI v2.0
+#define LINECALLFEATURE_SETCALLDATA 0x80000000 // TAPI v2.0
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECALLFEATURE2_NOHOLDCONFERENCE 0x00000001 // TAPI v2.0
+#define LINECALLFEATURE2_ONESTEPTRANSFER 0x00000002 // TAPI v2.0
+#define LINECALLFEATURE2_COMPLCAMPON 0x00000004 // TAPI v2.0
+#define LINECALLFEATURE2_COMPLCALLBACK 0x00000008 // TAPI v2.0
+#define LINECALLFEATURE2_COMPLINTRUDE 0x00000010 // TAPI v2.0
+#define LINECALLFEATURE2_COMPLMESSAGE 0x00000020 // TAPI v2.0
+#define LINECALLFEATURE2_TRANSFERNORM 0x00000040 // TAPI v2.0
+#define LINECALLFEATURE2_TRANSFERCONF 0x00000080 // TAPI v2.0
+#define LINECALLFEATURE2_PARKDIRECT 0x00000100 // TAPI v2.0
+#define LINECALLFEATURE2_PARKNONDIRECT 0x00000200 // TAPI v2.0
+#endif
+
+#define LINECALLINFOSTATE_OTHER 0x00000001
+#define LINECALLINFOSTATE_DEVSPECIFIC 0x00000002
+#define LINECALLINFOSTATE_BEARERMODE 0x00000004
+#define LINECALLINFOSTATE_RATE 0x00000008
+#define LINECALLINFOSTATE_MEDIAMODE 0x00000010
+#define LINECALLINFOSTATE_APPSPECIFIC 0x00000020
+#define LINECALLINFOSTATE_CALLID 0x00000040
+#define LINECALLINFOSTATE_RELATEDCALLID 0x00000080
+#define LINECALLINFOSTATE_ORIGIN 0x00000100
+#define LINECALLINFOSTATE_REASON 0x00000200
+#define LINECALLINFOSTATE_COMPLETIONID 0x00000400
+#define LINECALLINFOSTATE_NUMOWNERINCR 0x00000800
+#define LINECALLINFOSTATE_NUMOWNERDECR 0x00001000
+#define LINECALLINFOSTATE_NUMMONITORS 0x00002000
+#define LINECALLINFOSTATE_TRUNK 0x00004000
+#define LINECALLINFOSTATE_CALLERID 0x00008000
+#define LINECALLINFOSTATE_CALLEDID 0x00010000
+#define LINECALLINFOSTATE_CONNECTEDID 0x00020000
+#define LINECALLINFOSTATE_REDIRECTIONID 0x00040000
+#define LINECALLINFOSTATE_REDIRECTINGID 0x00080000
+#define LINECALLINFOSTATE_DISPLAY 0x00100000
+#define LINECALLINFOSTATE_USERUSERINFO 0x00200000
+#define LINECALLINFOSTATE_HIGHLEVELCOMP 0x00400000
+#define LINECALLINFOSTATE_LOWLEVELCOMP 0x00800000
+#define LINECALLINFOSTATE_CHARGINGINFO 0x01000000
+#define LINECALLINFOSTATE_TERMINAL 0x02000000
+#define LINECALLINFOSTATE_DIALPARAMS 0x04000000
+#define LINECALLINFOSTATE_MONITORMODES 0x08000000
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECALLINFOSTATE_TREATMENT 0x10000000 // TAPI v2.0
+#define LINECALLINFOSTATE_QOS 0x20000000 // TAPI v2.0
+#define LINECALLINFOSTATE_CALLDATA 0x40000000 // TAPI v2.0
+#endif
+
+#define LINECALLORIGIN_OUTBOUND 0x00000001
+#define LINECALLORIGIN_INTERNAL 0x00000002
+#define LINECALLORIGIN_EXTERNAL 0x00000004
+#define LINECALLORIGIN_UNKNOWN 0x00000010
+#define LINECALLORIGIN_UNAVAIL 0x00000020
+#define LINECALLORIGIN_CONFERENCE 0x00000040
+#define LINECALLORIGIN_INBOUND 0x00000080 // TAPI v1.4
+
+#define LINECALLPARAMFLAGS_SECURE 0x00000001
+#define LINECALLPARAMFLAGS_IDLE 0x00000002
+#define LINECALLPARAMFLAGS_BLOCKID 0x00000004
+#define LINECALLPARAMFLAGS_ORIGOFFHOOK 0x00000008
+#define LINECALLPARAMFLAGS_DESTOFFHOOK 0x00000010
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECALLPARAMFLAGS_NOHOLDCONFERENCE 0x00000020 // TAPI v2.0
+#define LINECALLPARAMFLAGS_PREDICTIVEDIAL 0x00000040 // TAPI v2.0
+#define LINECALLPARAMFLAGS_ONESTEPTRANSFER 0x00000080 // TAPI v2.0
+#endif
+
+#define LINECALLPARTYID_BLOCKED 0x00000001
+#define LINECALLPARTYID_OUTOFAREA 0x00000002
+#define LINECALLPARTYID_NAME 0x00000004
+#define LINECALLPARTYID_ADDRESS 0x00000008
+#define LINECALLPARTYID_PARTIAL 0x00000010
+#define LINECALLPARTYID_UNKNOWN 0x00000020
+#define LINECALLPARTYID_UNAVAIL 0x00000040
+
+#define LINECALLPRIVILEGE_NONE 0x00000001
+#define LINECALLPRIVILEGE_MONITOR 0x00000002
+#define LINECALLPRIVILEGE_OWNER 0x00000004
+
+#define LINECALLREASON_DIRECT 0x00000001
+#define LINECALLREASON_FWDBUSY 0x00000002
+#define LINECALLREASON_FWDNOANSWER 0x00000004
+#define LINECALLREASON_FWDUNCOND 0x00000008
+#define LINECALLREASON_PICKUP 0x00000010
+#define LINECALLREASON_UNPARK 0x00000020
+#define LINECALLREASON_REDIRECT 0x00000040
+#define LINECALLREASON_CALLCOMPLETION 0x00000080
+#define LINECALLREASON_TRANSFER 0x00000100
+#define LINECALLREASON_REMINDER 0x00000200
+#define LINECALLREASON_UNKNOWN 0x00000400
+#define LINECALLREASON_UNAVAIL 0x00000800
+#define LINECALLREASON_INTRUDE 0x00001000 // TAPI v1.4
+#define LINECALLREASON_PARKED 0x00002000 // TAPI v1.4
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECALLREASON_CAMPEDON 0x00004000 // TAPI v2.0
+#define LINECALLREASON_ROUTEREQUEST 0x00008000 // TAPI v2.0
+#endif
+
+#define LINECALLSELECT_LINE 0x00000001
+#define LINECALLSELECT_ADDRESS 0x00000002
+#define LINECALLSELECT_CALL 0x00000004
+
+#define LINECALLSTATE_IDLE 0x00000001
+#define LINECALLSTATE_OFFERING 0x00000002
+#define LINECALLSTATE_ACCEPTED 0x00000004
+#define LINECALLSTATE_DIALTONE 0x00000008
+#define LINECALLSTATE_DIALING 0x00000010
+#define LINECALLSTATE_RINGBACK 0x00000020
+#define LINECALLSTATE_BUSY 0x00000040
+#define LINECALLSTATE_SPECIALINFO 0x00000080
+#define LINECALLSTATE_CONNECTED 0x00000100
+#define LINECALLSTATE_PROCEEDING 0x00000200
+#define LINECALLSTATE_ONHOLD 0x00000400
+#define LINECALLSTATE_CONFERENCED 0x00000800
+#define LINECALLSTATE_ONHOLDPENDCONF 0x00001000
+#define LINECALLSTATE_ONHOLDPENDTRANSFER 0x00002000
+#define LINECALLSTATE_DISCONNECTED 0x00004000
+#define LINECALLSTATE_UNKNOWN 0x00008000
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECALLTREATMENT_SILENCE 0x00000001 // TAPI v2.0
+#define LINECALLTREATMENT_RINGBACK 0x00000002 // TAPI v2.0
+#define LINECALLTREATMENT_BUSY 0x00000003 // TAPI v2.0
+#define LINECALLTREATMENT_MUSIC 0x00000004 // TAPI v2.0
+#endif
+
+#define LINECARDOPTION_PREDEFINED 0x00000001 // TAPI v1.4
+#define LINECARDOPTION_HIDDEN 0x00000002 // TAPI v1.4
+
+#define LINECONNECTEDMODE_ACTIVE 0x00000001 // TAPI v1.4
+#define LINECONNECTEDMODE_INACTIVE 0x00000002 // TAPI v1.4
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINECONNECTEDMODE_ACTIVEHELD 0x00000004 // TAPI v2.0
+#define LINECONNECTEDMODE_INACTIVEHELD 0x00000008 // TAPI v2.0
+#define LINECONNECTEDMODE_CONFIRMED 0x00000010 // TAPI v2.0
+#endif
+
+#define LINEDEVCAPFLAGS_CROSSADDRCONF 0x00000001
+#define LINEDEVCAPFLAGS_HIGHLEVCOMP 0x00000002
+#define LINEDEVCAPFLAGS_LOWLEVCOMP 0x00000004
+#define LINEDEVCAPFLAGS_MEDIACONTROL 0x00000008
+#define LINEDEVCAPFLAGS_MULTIPLEADDR 0x00000010
+#define LINEDEVCAPFLAGS_CLOSEDROP 0x00000020
+#define LINEDEVCAPFLAGS_DIALBILLING 0x00000040
+#define LINEDEVCAPFLAGS_DIALQUIET 0x00000080
+#define LINEDEVCAPFLAGS_DIALDIALTONE 0x00000100
+
+#define LINEDEVSTATE_OTHER 0x00000001
+#define LINEDEVSTATE_RINGING 0x00000002
+#define LINEDEVSTATE_CONNECTED 0x00000004
+#define LINEDEVSTATE_DISCONNECTED 0x00000008
+#define LINEDEVSTATE_MSGWAITON 0x00000010
+#define LINEDEVSTATE_MSGWAITOFF 0x00000020
+#define LINEDEVSTATE_INSERVICE 0x00000040
+#define LINEDEVSTATE_OUTOFSERVICE 0x00000080
+#define LINEDEVSTATE_MAINTENANCE 0x00000100
+#define LINEDEVSTATE_OPEN 0x00000200
+#define LINEDEVSTATE_CLOSE 0x00000400
+#define LINEDEVSTATE_NUMCALLS 0x00000800
+#define LINEDEVSTATE_NUMCOMPLETIONS 0x00001000
+#define LINEDEVSTATE_TERMINALS 0x00002000
+#define LINEDEVSTATE_ROAMMODE 0x00004000
+#define LINEDEVSTATE_BATTERY 0x00008000
+#define LINEDEVSTATE_SIGNAL 0x00010000
+#define LINEDEVSTATE_DEVSPECIFIC 0x00020000
+#define LINEDEVSTATE_REINIT 0x00040000
+#define LINEDEVSTATE_LOCK 0x00080000
+#define LINEDEVSTATE_CAPSCHANGE 0x00100000 // TAPI v1.4
+#define LINEDEVSTATE_CONFIGCHANGE 0x00200000 // TAPI v1.4
+#define LINEDEVSTATE_TRANSLATECHANGE 0x00400000 // TAPI v1.4
+#define LINEDEVSTATE_COMPLCANCEL 0x00800000 // TAPI v1.4
+#define LINEDEVSTATE_REMOVED 0x01000000 // TAPI v1.4
+
+#define LINEDEVSTATUSFLAGS_CONNECTED 0x00000001
+#define LINEDEVSTATUSFLAGS_MSGWAIT 0x00000002
+#define LINEDEVSTATUSFLAGS_INSERVICE 0x00000004
+#define LINEDEVSTATUSFLAGS_LOCKED 0x00000008
+
+#define LINEDIALTONEMODE_NORMAL 0x00000001
+#define LINEDIALTONEMODE_SPECIAL 0x00000002
+#define LINEDIALTONEMODE_INTERNAL 0x00000004
+#define LINEDIALTONEMODE_EXTERNAL 0x00000008
+#define LINEDIALTONEMODE_UNKNOWN 0x00000010
+#define LINEDIALTONEMODE_UNAVAIL 0x00000020
+
+#define LINEDIGITMODE_PULSE 0x00000001
+#define LINEDIGITMODE_DTMF 0x00000002
+#define LINEDIGITMODE_DTMFEND 0x00000004
+
+#define LINEDISCONNECTMODE_NORMAL 0x00000001
+#define LINEDISCONNECTMODE_UNKNOWN 0x00000002
+#define LINEDISCONNECTMODE_REJECT 0x00000004
+#define LINEDISCONNECTMODE_PICKUP 0x00000008
+#define LINEDISCONNECTMODE_FORWARDED 0x00000010
+#define LINEDISCONNECTMODE_BUSY 0x00000020
+#define LINEDISCONNECTMODE_NOANSWER 0x00000040
+#define LINEDISCONNECTMODE_BADADDRESS 0x00000080
+#define LINEDISCONNECTMODE_UNREACHABLE 0x00000100
+#define LINEDISCONNECTMODE_CONGESTION 0x00000200
+#define LINEDISCONNECTMODE_INCOMPATIBLE 0x00000400
+#define LINEDISCONNECTMODE_UNAVAIL 0x00000800
+#define LINEDISCONNECTMODE_NODIALTONE 0x00001000 // TAPI v1.4
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEDISCONNECTMODE_NUMBERCHANGED 0x00002000 // TAPI v2.0
+#define LINEDISCONNECTMODE_OUTOFORDER 0x00004000 // TAPI v2.0
+#define LINEDISCONNECTMODE_TEMPFAILURE 0x00008000 // TAPI v2.0
+#define LINEDISCONNECTMODE_QOSUNAVAIL 0x00010000 // TAPI v2.0
+#define LINEDISCONNECTMODE_BLOCKED 0x00020000 // TAPI v2.0
+#define LINEDISCONNECTMODE_DONOTDISTURB 0x00040000 // TAPI v2.0
+#define LINEDISCONNECTMODE_CANCELLED 0x00080000 // TAPI v2.0
+#endif
+
+#define LINEERR_ALLOCATED 0x80000001
+#define LINEERR_BADDEVICEID 0x80000002
+#define LINEERR_BEARERMODEUNAVAIL 0x80000003
+#define LINEERR_CALLUNAVAIL 0x80000005
+#define LINEERR_COMPLETIONOVERRUN 0x80000006
+#define LINEERR_CONFERENCEFULL 0x80000007
+#define LINEERR_DIALBILLING 0x80000008
+#define LINEERR_DIALDIALTONE 0x80000009
+#define LINEERR_DIALPROMPT 0x8000000A
+#define LINEERR_DIALQUIET 0x8000000B
+#define LINEERR_INCOMPATIBLEAPIVERSION 0x8000000C
+#define LINEERR_INCOMPATIBLEEXTVERSION 0x8000000D
+#define LINEERR_INIFILECORRUPT 0x8000000E
+#define LINEERR_INUSE 0x8000000F
+#define LINEERR_INVALADDRESS 0x80000010
+#define LINEERR_INVALADDRESSID 0x80000011
+#define LINEERR_INVALADDRESSMODE 0x80000012
+#define LINEERR_INVALADDRESSSTATE 0x80000013
+#define LINEERR_INVALAPPHANDLE 0x80000014
+#define LINEERR_INVALAPPNAME 0x80000015
+#define LINEERR_INVALBEARERMODE 0x80000016
+#define LINEERR_INVALCALLCOMPLMODE 0x80000017
+#define LINEERR_INVALCALLHANDLE 0x80000018
+#define LINEERR_INVALCALLPARAMS 0x80000019
+#define LINEERR_INVALCALLPRIVILEGE 0x8000001A
+#define LINEERR_INVALCALLSELECT 0x8000001B
+#define LINEERR_INVALCALLSTATE 0x8000001C
+#define LINEERR_INVALCALLSTATELIST 0x8000001D
+#define LINEERR_INVALCARD 0x8000001E
+#define LINEERR_INVALCOMPLETIONID 0x8000001F
+#define LINEERR_INVALCONFCALLHANDLE 0x80000020
+#define LINEERR_INVALCONSULTCALLHANDLE 0x80000021
+#define LINEERR_INVALCOUNTRYCODE 0x80000022
+#define LINEERR_INVALDEVICECLASS 0x80000023
+#define LINEERR_INVALDEVICEHANDLE 0x80000024
+#define LINEERR_INVALDIALPARAMS 0x80000025
+#define LINEERR_INVALDIGITLIST 0x80000026
+#define LINEERR_INVALDIGITMODE 0x80000027
+#define LINEERR_INVALDIGITS 0x80000028
+#define LINEERR_INVALEXTVERSION 0x80000029
+#define LINEERR_INVALGROUPID 0x8000002A
+#define LINEERR_INVALLINEHANDLE 0x8000002B
+#define LINEERR_INVALLINESTATE 0x8000002C
+#define LINEERR_INVALLOCATION 0x8000002D
+#define LINEERR_INVALMEDIALIST 0x8000002E
+#define LINEERR_INVALMEDIAMODE 0x8000002F
+#define LINEERR_INVALMESSAGEID 0x80000030
+#define LINEERR_INVALPARAM 0x80000032
+#define LINEERR_INVALPARKID 0x80000033
+#define LINEERR_INVALPARKMODE 0x80000034
+#define LINEERR_INVALPOINTER 0x80000035
+#define LINEERR_INVALPRIVSELECT 0x80000036
+#define LINEERR_INVALRATE 0x80000037
+#define LINEERR_INVALREQUESTMODE 0x80000038
+#define LINEERR_INVALTERMINALID 0x80000039
+#define LINEERR_INVALTERMINALMODE 0x8000003A
+#define LINEERR_INVALTIMEOUT 0x8000003B
+#define LINEERR_INVALTONE 0x8000003C
+#define LINEERR_INVALTONELIST 0x8000003D
+#define LINEERR_INVALTONEMODE 0x8000003E
+#define LINEERR_INVALTRANSFERMODE 0x8000003F
+#define LINEERR_LINEMAPPERFAILED 0x80000040
+#define LINEERR_NOCONFERENCE 0x80000041
+#define LINEERR_NODEVICE 0x80000042
+#define LINEERR_NODRIVER 0x80000043
+#define LINEERR_NOMEM 0x80000044
+#define LINEERR_NOREQUEST 0x80000045
+#define LINEERR_NOTOWNER 0x80000046
+#define LINEERR_NOTREGISTERED 0x80000047
+#define LINEERR_OPERATIONFAILED 0x80000048
+#define LINEERR_OPERATIONUNAVAIL 0x80000049
+#define LINEERR_RATEUNAVAIL 0x8000004A
+#define LINEERR_RESOURCEUNAVAIL 0x8000004B
+#define LINEERR_REQUESTOVERRUN 0x8000004C
+#define LINEERR_STRUCTURETOOSMALL 0x8000004D
+#define LINEERR_TARGETNOTFOUND 0x8000004E
+#define LINEERR_TARGETSELF 0x8000004F
+#define LINEERR_UNINITIALIZED 0x80000050
+#define LINEERR_USERUSERINFOTOOBIG 0x80000051
+#define LINEERR_REINIT 0x80000052
+#define LINEERR_ADDRESSBLOCKED 0x80000053
+#define LINEERR_BILLINGREJECTED 0x80000054
+#define LINEERR_INVALFEATURE 0x80000055
+#define LINEERR_NOMULTIPLEINSTANCE 0x80000056
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEERR_INVALAGENTID 0x80000057 // TAPI v2.0
+#define LINEERR_INVALAGENTGROUP 0x80000058 // TAPI v2.0
+#define LINEERR_INVALPASSWORD 0x80000059 // TAPI v2.0
+#define LINEERR_INVALAGENTSTATE 0x8000005A // TAPI v2.0
+#define LINEERR_INVALAGENTACTIVITY 0x8000005B // TAPI v2.0
+#define LINEERR_DIALVOICEDETECT 0x8000005C // TAPI v2.0
+
+
+#endif
+
+#define LINEFEATURE_DEVSPECIFIC 0x00000001
+#define LINEFEATURE_DEVSPECIFICFEAT 0x00000002
+#define LINEFEATURE_FORWARD 0x00000004
+#define LINEFEATURE_MAKECALL 0x00000008
+#define LINEFEATURE_SETMEDIACONTROL 0x00000010
+#define LINEFEATURE_SETTERMINAL 0x00000020
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEFEATURE_SETDEVSTATUS 0x00000040 // TAPI v2.0
+#define LINEFEATURE_FORWARDFWD 0x00000080 // TAPI v2.0
+#define LINEFEATURE_FORWARDDND 0x00000100 // TAPI v2.0
+#endif
+
+#define LINEFORWARDMODE_UNCOND 0x00000001
+#define LINEFORWARDMODE_UNCONDINTERNAL 0x00000002
+#define LINEFORWARDMODE_UNCONDEXTERNAL 0x00000004
+#define LINEFORWARDMODE_UNCONDSPECIFIC 0x00000008
+#define LINEFORWARDMODE_BUSY 0x00000010
+#define LINEFORWARDMODE_BUSYINTERNAL 0x00000020
+#define LINEFORWARDMODE_BUSYEXTERNAL 0x00000040
+#define LINEFORWARDMODE_BUSYSPECIFIC 0x00000080
+#define LINEFORWARDMODE_NOANSW 0x00000100
+#define LINEFORWARDMODE_NOANSWINTERNAL 0x00000200
+#define LINEFORWARDMODE_NOANSWEXTERNAL 0x00000400
+#define LINEFORWARDMODE_NOANSWSPECIFIC 0x00000800
+#define LINEFORWARDMODE_BUSYNA 0x00001000
+#define LINEFORWARDMODE_BUSYNAINTERNAL 0x00002000
+#define LINEFORWARDMODE_BUSYNAEXTERNAL 0x00004000
+#define LINEFORWARDMODE_BUSYNASPECIFIC 0x00008000
+#define LINEFORWARDMODE_UNKNOWN 0x00010000 // TAPI v1.4
+#define LINEFORWARDMODE_UNAVAIL 0x00020000 // TAPI v1.4
+
+#define LINEGATHERTERM_BUFFERFULL 0x00000001
+#define LINEGATHERTERM_TERMDIGIT 0x00000002
+#define LINEGATHERTERM_FIRSTTIMEOUT 0x00000004
+#define LINEGATHERTERM_INTERTIMEOUT 0x00000008
+#define LINEGATHERTERM_CANCEL 0x00000010
+
+#define LINEGENERATETERM_DONE 0x00000001
+#define LINEGENERATETERM_CANCEL 0x00000002
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+//
+// These constants are mutually exclusive - there's no way to specify more
+// than one at a time (and it doesn't make sense, either) so they're
+// ordinal rather than bits.
+//
+#define LINEINITIALIZEEXOPTION_USEHIDDENWINDOW 0x00000001 // TAPI v2.0
+#define LINEINITIALIZEEXOPTION_USEEVENT 0x00000002 // TAPI v2.0
+#define LINEINITIALIZEEXOPTION_USECOMPLETIONPORT 0x00000003 // TAPI v2.0
+#endif
+
+#define LINELOCATIONOPTION_PULSEDIAL 0x00000001 // TAPI v1.4
+
+#define LINEMAPPER 0xFFFFFFFF
+
+#define LINEMEDIACONTROL_NONE 0x00000001
+#define LINEMEDIACONTROL_START 0x00000002
+#define LINEMEDIACONTROL_RESET 0x00000004
+#define LINEMEDIACONTROL_PAUSE 0x00000008
+#define LINEMEDIACONTROL_RESUME 0x00000010
+#define LINEMEDIACONTROL_RATEUP 0x00000020
+#define LINEMEDIACONTROL_RATEDOWN 0x00000040
+#define LINEMEDIACONTROL_RATENORMAL 0x00000080
+#define LINEMEDIACONTROL_VOLUMEUP 0x00000100
+#define LINEMEDIACONTROL_VOLUMEDOWN 0x00000200
+#define LINEMEDIACONTROL_VOLUMENORMAL 0x00000400
+
+#define LINEMEDIAMODE_UNKNOWN 0x00000002
+#define LINEMEDIAMODE_INTERACTIVEVOICE 0x00000004
+#define LINEMEDIAMODE_AUTOMATEDVOICE 0x00000008
+#define LINEMEDIAMODE_DATAMODEM 0x00000010
+#define LINEMEDIAMODE_G3FAX 0x00000020
+#define LINEMEDIAMODE_TDD 0x00000040
+#define LINEMEDIAMODE_G4FAX 0x00000080
+#define LINEMEDIAMODE_DIGITALDATA 0x00000100
+#define LINEMEDIAMODE_TELETEX 0x00000200
+#define LINEMEDIAMODE_VIDEOTEX 0x00000400
+#define LINEMEDIAMODE_TELEX 0x00000800
+#define LINEMEDIAMODE_MIXED 0x00001000
+#define LINEMEDIAMODE_ADSI 0x00002000
+#define LINEMEDIAMODE_VOICEVIEW 0x00004000 // TAPI v1.4
+#define LAST_LINEMEDIAMODE 0x00004000
+
+#define LINEOFFERINGMODE_ACTIVE 0x00000001 // TAPI v1.4
+#define LINEOFFERINGMODE_INACTIVE 0x00000002 // TAPI v1.4
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEOPENOPTION_SINGLEADDRESS 0x80000000 // TAPI v2.0
+#define LINEOPENOPTION_PROXY 0x40000000 // TAPI v2.0
+#endif
+
+#define LINEPARKMODE_DIRECTED 0x00000001
+#define LINEPARKMODE_NONDIRECTED 0x00000002
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINEPROXYREQUEST_SETAGENTGROUP 0x00000001 // TAPI v2.0
+#define LINEPROXYREQUEST_SETAGENTSTATE 0x00000002 // TAPI v2.0
+#define LINEPROXYREQUEST_SETAGENTACTIVITY 0x00000003 // TAPI v2.0
+#define LINEPROXYREQUEST_GETAGENTCAPS 0x00000004 // TAPI v2.0
+#define LINEPROXYREQUEST_GETAGENTSTATUS 0x00000005 // TAPI v2.0
+#define LINEPROXYREQUEST_AGENTSPECIFIC 0x00000006 // TAPI v2.0
+#define LINEPROXYREQUEST_GETAGENTACTIVITYLIST 0x00000007 // TAPI v2.0
+#define LINEPROXYREQUEST_GETAGENTGROUPLIST 0x00000008 // TAPI v2.0
+#endif
+
+#define LINEREMOVEFROMCONF_NONE 0x00000001
+#define LINEREMOVEFROMCONF_LAST 0x00000002
+#define LINEREMOVEFROMCONF_ANY 0x00000003
+
+#define LINEREQUESTMODE_MAKECALL 0x00000001
+#define LINEREQUESTMODE_MEDIACALL 0x00000002
+#define LINEREQUESTMODE_DROP 0x00000004
+#define LAST_LINEREQUESTMODE LINEREQUESTMODE_MEDIACALL
+
+#define LINEROAMMODE_UNKNOWN 0x00000001
+#define LINEROAMMODE_UNAVAIL 0x00000002
+#define LINEROAMMODE_HOME 0x00000004
+#define LINEROAMMODE_ROAMA 0x00000008
+#define LINEROAMMODE_ROAMB 0x00000010
+
+#define LINESPECIALINFO_NOCIRCUIT 0x00000001
+#define LINESPECIALINFO_CUSTIRREG 0x00000002
+#define LINESPECIALINFO_REORDER 0x00000004
+#define LINESPECIALINFO_UNKNOWN 0x00000008
+#define LINESPECIALINFO_UNAVAIL 0x00000010
+
+#define LINETERMDEV_PHONE 0x00000001
+#define LINETERMDEV_HEADSET 0x00000002
+#define LINETERMDEV_SPEAKER 0x00000004
+
+#define LINETERMMODE_BUTTONS 0x00000001
+#define LINETERMMODE_LAMPS 0x00000002
+#define LINETERMMODE_DISPLAY 0x00000004
+#define LINETERMMODE_RINGER 0x00000008
+#define LINETERMMODE_HOOKSWITCH 0x00000010
+#define LINETERMMODE_MEDIATOLINE 0x00000020
+#define LINETERMMODE_MEDIAFROMLINE 0x00000040
+#define LINETERMMODE_MEDIABIDIRECT 0x00000080
+
+#define LINETERMSHARING_PRIVATE 0x00000001
+#define LINETERMSHARING_SHAREDEXCL 0x00000002
+#define LINETERMSHARING_SHAREDCONF 0x00000004
+
+#define LINETOLLLISTOPTION_ADD 0x00000001
+#define LINETOLLLISTOPTION_REMOVE 0x00000002
+
+#define LINETONEMODE_CUSTOM 0x00000001
+#define LINETONEMODE_RINGBACK 0x00000002
+#define LINETONEMODE_BUSY 0x00000004
+#define LINETONEMODE_BEEP 0x00000008
+#define LINETONEMODE_BILLING 0x00000010
+
+#define LINETRANSFERMODE_TRANSFER 0x00000001
+#define LINETRANSFERMODE_CONFERENCE 0x00000002
+
+#define LINETRANSLATEOPTION_CARDOVERRIDE 0x00000001
+#define LINETRANSLATEOPTION_CANCELCALLWAITING 0x00000002 // TAPI v1.4
+#define LINETRANSLATEOPTION_FORCELOCAL 0x00000004 // TAPI v1.4
+#define LINETRANSLATEOPTION_FORCELD 0x00000008 // TAPI v1.4
+
+#define LINETRANSLATERESULT_CANONICAL 0x00000001
+#define LINETRANSLATERESULT_INTERNATIONAL 0x00000002
+#define LINETRANSLATERESULT_LONGDISTANCE 0x00000004
+#define LINETRANSLATERESULT_LOCAL 0x00000008
+#define LINETRANSLATERESULT_INTOLLLIST 0x00000010
+#define LINETRANSLATERESULT_NOTINTOLLLIST 0x00000020
+#define LINETRANSLATERESULT_DIALBILLING 0x00000040
+#define LINETRANSLATERESULT_DIALQUIET 0x00000080
+#define LINETRANSLATERESULT_DIALDIALTONE 0x00000100
+#define LINETRANSLATERESULT_DIALPROMPT 0x00000200
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINETRANSLATERESULT_VOICEDETECT 0x00000400 // TAPI v2.0
+#endif
+
+#define PHONEBUTTONFUNCTION_UNKNOWN 0x00000000
+#define PHONEBUTTONFUNCTION_CONFERENCE 0x00000001
+#define PHONEBUTTONFUNCTION_TRANSFER 0x00000002
+#define PHONEBUTTONFUNCTION_DROP 0x00000003
+#define PHONEBUTTONFUNCTION_HOLD 0x00000004
+#define PHONEBUTTONFUNCTION_RECALL 0x00000005
+#define PHONEBUTTONFUNCTION_DISCONNECT 0x00000006
+#define PHONEBUTTONFUNCTION_CONNECT 0x00000007
+#define PHONEBUTTONFUNCTION_MSGWAITON 0x00000008
+#define PHONEBUTTONFUNCTION_MSGWAITOFF 0x00000009
+#define PHONEBUTTONFUNCTION_SELECTRING 0x0000000A
+#define PHONEBUTTONFUNCTION_ABBREVDIAL 0x0000000B
+#define PHONEBUTTONFUNCTION_FORWARD 0x0000000C
+#define PHONEBUTTONFUNCTION_PICKUP 0x0000000D
+#define PHONEBUTTONFUNCTION_RINGAGAIN 0x0000000E
+#define PHONEBUTTONFUNCTION_PARK 0x0000000F
+#define PHONEBUTTONFUNCTION_REJECT 0x00000010
+#define PHONEBUTTONFUNCTION_REDIRECT 0x00000011
+#define PHONEBUTTONFUNCTION_MUTE 0x00000012
+#define PHONEBUTTONFUNCTION_VOLUMEUP 0x00000013
+#define PHONEBUTTONFUNCTION_VOLUMEDOWN 0x00000014
+#define PHONEBUTTONFUNCTION_SPEAKERON 0x00000015
+#define PHONEBUTTONFUNCTION_SPEAKEROFF 0x00000016
+#define PHONEBUTTONFUNCTION_FLASH 0x00000017
+#define PHONEBUTTONFUNCTION_DATAON 0x00000018
+#define PHONEBUTTONFUNCTION_DATAOFF 0x00000019
+#define PHONEBUTTONFUNCTION_DONOTDISTURB 0x0000001A
+#define PHONEBUTTONFUNCTION_INTERCOM 0x0000001B
+#define PHONEBUTTONFUNCTION_BRIDGEDAPP 0x0000001C
+#define PHONEBUTTONFUNCTION_BUSY 0x0000001D
+#define PHONEBUTTONFUNCTION_CALLAPP 0x0000001E
+#define PHONEBUTTONFUNCTION_DATETIME 0x0000001F
+#define PHONEBUTTONFUNCTION_DIRECTORY 0x00000020
+#define PHONEBUTTONFUNCTION_COVER 0x00000021
+#define PHONEBUTTONFUNCTION_CALLID 0x00000022
+#define PHONEBUTTONFUNCTION_LASTNUM 0x00000023
+#define PHONEBUTTONFUNCTION_NIGHTSRV 0x00000024
+#define PHONEBUTTONFUNCTION_SENDCALLS 0x00000025
+#define PHONEBUTTONFUNCTION_MSGINDICATOR 0x00000026
+#define PHONEBUTTONFUNCTION_REPDIAL 0x00000027
+#define PHONEBUTTONFUNCTION_SETREPDIAL 0x00000028
+#define PHONEBUTTONFUNCTION_SYSTEMSPEED 0x00000029
+#define PHONEBUTTONFUNCTION_STATIONSPEED 0x0000002A
+#define PHONEBUTTONFUNCTION_CAMPON 0x0000002B
+#define PHONEBUTTONFUNCTION_SAVEREPEAT 0x0000002C
+#define PHONEBUTTONFUNCTION_QUEUECALL 0x0000002D
+#define PHONEBUTTONFUNCTION_NONE 0x0000002E
+
+#define PHONEBUTTONMODE_DUMMY 0x00000001
+#define PHONEBUTTONMODE_CALL 0x00000002
+#define PHONEBUTTONMODE_FEATURE 0x00000004
+#define PHONEBUTTONMODE_KEYPAD 0x00000008
+#define PHONEBUTTONMODE_LOCAL 0x00000010
+#define PHONEBUTTONMODE_DISPLAY 0x00000020
+
+#define PHONEBUTTONSTATE_UP 0x00000001
+#define PHONEBUTTONSTATE_DOWN 0x00000002
+#define PHONEBUTTONSTATE_UNKNOWN 0x00000004 // TAPI v1.4
+#define PHONEBUTTONSTATE_UNAVAIL 0x00000008 // TAPI v1.4
+
+#define PHONEERR_ALLOCATED 0x90000001
+#define PHONEERR_BADDEVICEID 0x90000002
+#define PHONEERR_INCOMPATIBLEAPIVERSION 0x90000003
+#define PHONEERR_INCOMPATIBLEEXTVERSION 0x90000004
+#define PHONEERR_INIFILECORRUPT 0x90000005
+#define PHONEERR_INUSE 0x90000006
+#define PHONEERR_INVALAPPHANDLE 0x90000007
+#define PHONEERR_INVALAPPNAME 0x90000008
+#define PHONEERR_INVALBUTTONLAMPID 0x90000009
+#define PHONEERR_INVALBUTTONMODE 0x9000000A
+#define PHONEERR_INVALBUTTONSTATE 0x9000000B
+#define PHONEERR_INVALDATAID 0x9000000C
+#define PHONEERR_INVALDEVICECLASS 0x9000000D
+#define PHONEERR_INVALEXTVERSION 0x9000000E
+#define PHONEERR_INVALHOOKSWITCHDEV 0x9000000F
+#define PHONEERR_INVALHOOKSWITCHMODE 0x90000010
+#define PHONEERR_INVALLAMPMODE 0x90000011
+#define PHONEERR_INVALPARAM 0x90000012
+#define PHONEERR_INVALPHONEHANDLE 0x90000013
+#define PHONEERR_INVALPHONESTATE 0x90000014
+#define PHONEERR_INVALPOINTER 0x90000015
+#define PHONEERR_INVALPRIVILEGE 0x90000016
+#define PHONEERR_INVALRINGMODE 0x90000017
+#define PHONEERR_NODEVICE 0x90000018
+#define PHONEERR_NODRIVER 0x90000019
+#define PHONEERR_NOMEM 0x9000001A
+#define PHONEERR_NOTOWNER 0x9000001B
+#define PHONEERR_OPERATIONFAILED 0x9000001C
+#define PHONEERR_OPERATIONUNAVAIL 0x9000001D
+#define PHONEERR_RESOURCEUNAVAIL 0x9000001F
+#define PHONEERR_REQUESTOVERRUN 0x90000020
+#define PHONEERR_STRUCTURETOOSMALL 0x90000021
+#define PHONEERR_UNINITIALIZED 0x90000022
+#define PHONEERR_REINIT 0x90000023
+
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define PHONEFEATURE_GETBUTTONINFO 0x00000001 // TAPI v2.0
+#define PHONEFEATURE_GETDATA 0x00000002 // TAPI v2.0
+#define PHONEFEATURE_GETDISPLAY 0x00000004 // TAPI v2.0
+#define PHONEFEATURE_GETGAINHANDSET 0x00000008 // TAPI v2.0
+#define PHONEFEATURE_GETGAINSPEAKER 0x00000010 // TAPI v2.0
+#define PHONEFEATURE_GETGAINHEADSET 0x00000020 // TAPI v2.0
+#define PHONEFEATURE_GETHOOKSWITCHHANDSET 0x00000040 // TAPI v2.0
+#define PHONEFEATURE_GETHOOKSWITCHSPEAKER 0x00000080 // TAPI v2.0
+#define PHONEFEATURE_GETHOOKSWITCHHEADSET 0x00000100 // TAPI v2.0
+#define PHONEFEATURE_GETLAMP 0x00000200 // TAPI v2.0
+#define PHONEFEATURE_GETRING 0x00000400 // TAPI v2.0
+#define PHONEFEATURE_GETVOLUMEHANDSET 0x00000800 // TAPI v2.0
+#define PHONEFEATURE_GETVOLUMESPEAKER 0x00001000 // TAPI v2.0
+#define PHONEFEATURE_GETVOLUMEHEADSET 0x00002000 // TAPI v2.0
+#define PHONEFEATURE_SETBUTTONINFO 0x00004000 // TAPI v2.0
+#define PHONEFEATURE_SETDATA 0x00008000 // TAPI v2.0
+#define PHONEFEATURE_SETDISPLAY 0x00010000 // TAPI v2.0
+#define PHONEFEATURE_SETGAINHANDSET 0x00020000 // TAPI v2.0
+#define PHONEFEATURE_SETGAINSPEAKER 0x00040000 // TAPI v2.0
+#define PHONEFEATURE_SETGAINHEADSET 0x00080000 // TAPI v2.0
+#define PHONEFEATURE_SETHOOKSWITCHHANDSET 0x00100000 // TAPI v2.0
+#define PHONEFEATURE_SETHOOKSWITCHSPEAKER 0x00200000 // TAPI v2.0
+#define PHONEFEATURE_SETHOOKSWITCHHEADSET 0x00400000 // TAPI v2.0
+#define PHONEFEATURE_SETLAMP 0x00800000 // TAPI v2.0
+#define PHONEFEATURE_SETRING 0x01000000 // TAPI v2.0
+#define PHONEFEATURE_SETVOLUMEHANDSET 0x02000000 // TAPI v2.0
+#define PHONEFEATURE_SETVOLUMESPEAKER 0x04000000 // TAPI v2.0
+#define PHONEFEATURE_SETVOLUMEHEADSET 0x08000000 // TAPI v2.0
+#endif
+
+#define PHONEHOOKSWITCHDEV_HANDSET 0x00000001
+#define PHONEHOOKSWITCHDEV_SPEAKER 0x00000002
+#define PHONEHOOKSWITCHDEV_HEADSET 0x00000004
+
+#define PHONEHOOKSWITCHMODE_ONHOOK 0x00000001
+#define PHONEHOOKSWITCHMODE_MIC 0x00000002
+#define PHONEHOOKSWITCHMODE_SPEAKER 0x00000004
+#define PHONEHOOKSWITCHMODE_MICSPEAKER 0x00000008
+#define PHONEHOOKSWITCHMODE_UNKNOWN 0x00000010
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define PHONEINITIALIZEEXOPTION_USEHIDDENWINDOW 0x00000001 // TAPI v2.0
+#define PHONEINITIALIZEEXOPTION_USEEVENT 0x00000002 // TAPI v2.0
+#define PHONEINITIALIZEEXOPTION_USECOMPLETIONPORT 0x00000003 // TAPI v2.0
+#endif
+
+#define PHONELAMPMODE_DUMMY 0x00000001
+#define PHONELAMPMODE_OFF 0x00000002
+#define PHONELAMPMODE_STEADY 0x00000004
+#define PHONELAMPMODE_WINK 0x00000008
+#define PHONELAMPMODE_FLASH 0x00000010
+#define PHONELAMPMODE_FLUTTER 0x00000020
+#define PHONELAMPMODE_BROKENFLUTTER 0x00000040
+#define PHONELAMPMODE_UNKNOWN 0x00000080
+
+#define PHONEPRIVILEGE_MONITOR 0x00000001
+#define PHONEPRIVILEGE_OWNER 0x00000002
+
+#define PHONESTATE_OTHER 0x00000001
+#define PHONESTATE_CONNECTED 0x00000002
+#define PHONESTATE_DISCONNECTED 0x00000004
+#define PHONESTATE_OWNER 0x00000008
+#define PHONESTATE_MONITORS 0x00000010
+#define PHONESTATE_DISPLAY 0x00000020
+#define PHONESTATE_LAMP 0x00000040
+#define PHONESTATE_RINGMODE 0x00000080
+#define PHONESTATE_RINGVOLUME 0x00000100
+#define PHONESTATE_HANDSETHOOKSWITCH 0x00000200
+#define PHONESTATE_HANDSETVOLUME 0x00000400
+#define PHONESTATE_HANDSETGAIN 0x00000800
+#define PHONESTATE_SPEAKERHOOKSWITCH 0x00001000
+#define PHONESTATE_SPEAKERVOLUME 0x00002000
+#define PHONESTATE_SPEAKERGAIN 0x00004000
+#define PHONESTATE_HEADSETHOOKSWITCH 0x00008000
+#define PHONESTATE_HEADSETVOLUME 0x00010000
+#define PHONESTATE_HEADSETGAIN 0x00020000
+#define PHONESTATE_SUSPEND 0x00040000
+#define PHONESTATE_RESUME 0x00080000
+#define PHONESTATE_DEVSPECIFIC 0x00100000
+#define PHONESTATE_REINIT 0x00200000
+#define PHONESTATE_CAPSCHANGE 0x00400000 // TAPI v1.4
+#define PHONESTATE_REMOVED 0x00800000 // TAPI v1.4
+
+#define PHONESTATUSFLAGS_CONNECTED 0x00000001
+#define PHONESTATUSFLAGS_SUSPENDED 0x00000002
+
+#define STRINGFORMAT_ASCII 0x00000001
+#define STRINGFORMAT_DBCS 0x00000002
+#define STRINGFORMAT_UNICODE 0x00000003
+#define STRINGFORMAT_BINARY 0x00000004
+
+#define TAPI_REPLY WM_USER + 99
+
+#define TAPIERR_CONNECTED 0L
+#define TAPIERR_DROPPED -1L
+#define TAPIERR_NOREQUESTRECIPIENT -2L
+#define TAPIERR_REQUESTQUEUEFULL -3L
+#define TAPIERR_INVALDESTADDRESS -4L
+#define TAPIERR_INVALWINDOWHANDLE -5L
+#define TAPIERR_INVALDEVICECLASS -6L
+#define TAPIERR_INVALDEVICEID -7L
+#define TAPIERR_DEVICECLASSUNAVAIL -8L
+#define TAPIERR_DEVICEIDUNAVAIL -9L
+#define TAPIERR_DEVICEINUSE -10L
+#define TAPIERR_DESTBUSY -11L
+#define TAPIERR_DESTNOANSWER -12L
+#define TAPIERR_DESTUNAVAIL -13L
+#define TAPIERR_UNKNOWNWINHANDLE -14L
+#define TAPIERR_UNKNOWNREQUESTID -15L
+#define TAPIERR_REQUESTFAILED -16L
+#define TAPIERR_REQUESTCANCELLED -17L
+#define TAPIERR_INVALPOINTER -18L
+
+
+#define TAPIMAXDESTADDRESSSIZE 80L
+#define TAPIMAXAPPNAMESIZE 40L
+#define TAPIMAXCALLEDPARTYSIZE 40L
+#define TAPIMAXCOMMENTSIZE 80L
+#define TAPIMAXDEVICECLASSSIZE 40L
+#define TAPIMAXDEVICEIDSIZE 40L
+
+
+
+typedef struct lineaddresscaps_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwLineDeviceID;
+ DWORD dwAddressSize;
+ DWORD dwAddressOffset;
+ DWORD dwDevSpecificSize;
+ DWORD dwDevSpecificOffset;
+ DWORD dwAddressSharing;
+ DWORD dwAddressStates;
+ DWORD dwCallInfoStates;
+ DWORD dwCallerIDFlags;
+ DWORD dwCalledIDFlags;
+ DWORD dwConnectedIDFlags;
+ DWORD dwRedirectionIDFlags;
+ DWORD dwRedirectingIDFlags;
+ DWORD dwCallStates;
+ DWORD dwDialToneModes;
+ DWORD dwBusyModes;
+ DWORD dwSpecialInfo;
+ DWORD dwDisconnectModes;
+ DWORD dwMaxNumActiveCalls;
+ DWORD dwMaxNumOnHoldCalls;
+ DWORD dwMaxNumOnHoldPendingCalls;
+ DWORD dwMaxNumConference;
+ DWORD dwMaxNumTransConf;
+ DWORD dwAddrCapFlags;
+ DWORD dwCallFeatures;
+ DWORD dwRemoveFromConfCaps;
+ DWORD dwRemoveFromConfState;
+ DWORD dwTransferModes;
+ DWORD dwParkModes;
+ DWORD dwForwardModes;
+ DWORD dwMaxForwardEntries;
+ DWORD dwMaxSpecificEntries;
+ DWORD dwMinFwdNumRings;
+ DWORD dwMaxFwdNumRings;
+ DWORD dwMaxCallCompletions;
+ DWORD dwCallCompletionConds;
+ DWORD dwCallCompletionModes;
+ DWORD dwNumCompletionMessages;
+ DWORD dwCompletionMsgTextEntrySize;
+ DWORD dwCompletionMsgTextSize;
+ DWORD dwCompletionMsgTextOffset;
+
+ DWORD dwAddressFeatures; // TAPI v1.4
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+ DWORD dwPredictiveAutoTransferStates; // TAPI v2.0
+ DWORD dwNumCallTreatments; // TAPI v2.0
+ DWORD dwCallTreatmentListSize; // TAPI v2.0
+ DWORD dwCallTreatmentListOffset; // TAPI v2.0
+ DWORD dwDeviceClassesSize; // TAPI v2.0
+ DWORD dwDeviceClassesOffset; // TAPI v2.0
+ DWORD dwMaxCallDataSize; // TAPI v2.0
+ DWORD dwCallFeatures2; // TAPI v2.0
+ DWORD dwMaxNoAnswerTimeout; // TAPI v2.0
+ DWORD dwConnectedModes; // TAPI v2.0
+ DWORD dwOfferingModes; // TAPI v2.0
+ DWORD dwAvailableMediaModes; // TAPI v2.0
+#endif
+
+} LINEADDRESSCAPS, FAR *LPLINEADDRESSCAPS;
+
+typedef struct lineaddressstatus_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwNumInUse;
+ DWORD dwNumActiveCalls;
+ DWORD dwNumOnHoldCalls;
+ DWORD dwNumOnHoldPendCalls;
+ DWORD dwAddressFeatures;
+ DWORD dwNumRingsNoAnswer;
+ DWORD dwForwardNumEntries;
+ DWORD dwForwardSize;
+ DWORD dwForwardOffset;
+ DWORD dwTerminalModesSize;
+ DWORD dwTerminalModesOffset;
+ DWORD dwDevSpecificSize;
+ DWORD dwDevSpecificOffset;
+
+} LINEADDRESSSTATUS, FAR *LPLINEADDRESSSTATUS;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+typedef struct lineagentactivityentry_tag
+{
+ DWORD dwID; // TAPI v2.0
+ DWORD dwNameSize; // TAPI v2.0
+ DWORD dwNameOffset; // TAPI v2.0
+
+} LINEAGENTACTIVITYENTRY, *LPLINEAGENTACTIVITYENTRY;
+
+typedef struct lineagentactivitylist_tag
+{
+ DWORD dwTotalSize; // TAPI v2.0
+ DWORD dwNeededSize; // TAPI v2.0
+ DWORD dwUsedSize; // TAPI v2.0
+ DWORD dwNumEntries; // TAPI v2.0
+ DWORD dwListSize; // TAPI v2.0
+ DWORD dwListOffset; // TAPI v2.0
+
+} LINEAGENTACTIVITYLIST, *LPLINEAGENTACTIVITYLIST;
+
+typedef struct lineagentcaps_tag
+{
+ DWORD dwTotalSize; // TAPI v2.0
+ DWORD dwNeededSize; // TAPI v2.0
+ DWORD dwUsedSize; // TAPI v2.0
+ DWORD dwAgentHandlerInfoSize; // TAPI v2.0
+ DWORD dwAgentHandlerInfoOffset; // TAPI v2.0
+ DWORD dwCapsVersion; // TAPI v2.0
+ DWORD dwFeatures; // TAPI v2.0
+ DWORD dwStates; // TAPI v2.0
+ DWORD dwNextStates; // TAPI v2.0
+ DWORD dwMaxNumGroupEntries; // TAPI v2.0
+ DWORD dwAgentStatusMessages; // TAPI v2.0
+ DWORD dwNumAgentExtensionIDs; // TAPI v2.0
+ DWORD dwAgentExtensionIDListSize; // TAPI v2.0
+ DWORD dwAgentExtensionIDListOffset; // TAPI v2.0
+
+} LINEAGENTCAPS, *LPLINEAGENTCAPS;
+
+typedef struct lineagentgroupentry_tag
+{
+ struct
+ {
+ DWORD dwGroupID1; // TAPI v2.0
+ DWORD dwGroupID2; // TAPI v2.0
+ DWORD dwGroupID3; // TAPI v2.0
+ DWORD dwGroupID4; // TAPI v2.0
+
+ } GroupID;
+
+ DWORD dwNameSize; // TAPI v2.0
+ DWORD dwNameOffset; // TAPI v2.0
+
+} LINEAGENTGROUPENTRY, *LPLINEAGENTGROUPENTRY;
+
+typedef struct lineagentgrouplist_tag
+{
+ DWORD dwTotalSize; // TAPI v2.0
+ DWORD dwNeededSize; // TAPI v2.0
+ DWORD dwUsedSize; // TAPI v2.0
+ DWORD dwNumEntries; // TAPI v2.0
+ DWORD dwListSize; // TAPI v2.0
+ DWORD dwListOffset; // TAPI v2.0
+
+} LINEAGENTGROUPLIST, *LPLINEAGENTGROUPLIST;
+
+typedef struct lineagentstatus_tag
+{
+ DWORD dwTotalSize; // TAPI v2.0
+ DWORD dwNeededSize; // TAPI v2.0
+ DWORD dwUsedSize; // TAPI v2.0
+ DWORD dwNumEntries; // TAPI v2.0
+ DWORD dwGroupListSize; // TAPI v2.0
+ DWORD dwGroupListOffset; // TAPI v2.0
+ DWORD dwState; // TAPI v2.0
+ DWORD dwNextState; // TAPI v2.0
+ DWORD dwActivityID; // TAPI v2.0
+ DWORD dwActivitySize; // TAPI v2.0
+ DWORD dwActivityOffset; // TAPI v2.0
+ DWORD dwAgentFeatures; // TAPI v2.0
+ DWORD dwValidStates; // TAPI v2.0
+ DWORD dwValidNextStates; // TAPI v2.0
+
+} LINEAGENTSTATUS, *LPLINEAGENTSTATUS;
+
+typedef struct lineappinfo_tag
+{
+ DWORD dwMachineNameSize; // TAPI v2.0
+ DWORD dwMachineNameOffset; // TAPI v2.0
+ DWORD dwUserNameSize; // TAPI v2.0
+ DWORD dwUserNameOffset; // TAPI v2.0
+ DWORD dwModuleFilenameSize; // TAPI v2.0
+ DWORD dwModuleFilenameOffset; // TAPI v2.0
+ DWORD dwFriendlyNameSize; // TAPI v2.0
+ DWORD dwFriendlyNameOffset; // TAPI v2.0
+ DWORD dwMediaModes; // TAPI v2.0
+ DWORD dwAddressID; // TAPI v2.0
+
+} LINEAPPINFO, *LPLINEAPPINFO;
+#endif
+
+
+typedef struct linedialparams_tag
+{
+ DWORD dwDialPause;
+ DWORD dwDialSpeed;
+ DWORD dwDigitDuration;
+ DWORD dwWaitForDialtone;
+
+} LINEDIALPARAMS, FAR *LPLINEDIALPARAMS;
+
+typedef struct linecallinfo_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ HLINE hLine;
+ DWORD dwLineDeviceID;
+ DWORD dwAddressID;
+ DWORD dwBearerMode;
+ DWORD dwRate;
+ DWORD dwMediaMode;
+ DWORD dwAppSpecific;
+ DWORD dwCallID;
+ DWORD dwRelatedCallID;
+ DWORD dwCallParamFlags;
+ DWORD dwCallStates;
+ DWORD dwMonitorDigitModes;
+ DWORD dwMonitorMediaModes;
+ LINEDIALPARAMS DialParams;
+ DWORD dwOrigin;
+ DWORD dwReason;
+ DWORD dwCompletionID;
+ DWORD dwNumOwners;
+ DWORD dwNumMonitors;
+ DWORD dwCountryCode;
+ DWORD dwTrunk;
+ DWORD dwCallerIDFlags;
+ DWORD dwCallerIDSize;
+ DWORD dwCallerIDOffset;
+ DWORD dwCallerIDNameSize;
+ DWORD dwCallerIDNameOffset;
+ DWORD dwCalledIDFlags;
+ DWORD dwCalledIDSize;
+ DWORD dwCalledIDOffset;
+ DWORD dwCalledIDNameSize;
+ DWORD dwCalledIDNameOffset;
+ DWORD dwConnectedIDFlags;
+ DWORD dwConnectedIDSize;
+ DWORD dwConnectedIDOffset;
+ DWORD dwConnectedIDNameSize;
+ DWORD dwConnectedIDNameOffset;
+ DWORD dwRedirectionIDFlags;
+ DWORD dwRedirectionIDSize;
+ DWORD dwRedirectionIDOffset;
+ DWORD dwRedirectionIDNameSize;
+ DWORD dwRedirectionIDNameOffset;
+ DWORD dwRedirectingIDFlags;
+ DWORD dwRedirectingIDSize;
+ DWORD dwRedirectingIDOffset;
+ DWORD dwRedirectingIDNameSize;
+ DWORD dwRedirectingIDNameOffset;
+ DWORD dwAppNameSize;
+ DWORD dwAppNameOffset;
+ DWORD dwDisplayableAddressSize;
+ DWORD dwDisplayableAddressOffset;
+ DWORD dwCalledPartySize;
+ DWORD dwCalledPartyOffset;
+ DWORD dwCommentSize;
+ DWORD dwCommentOffset;
+ DWORD dwDisplaySize;
+ DWORD dwDisplayOffset;
+ DWORD dwUserUserInfoSize;
+ DWORD dwUserUserInfoOffset;
+ DWORD dwHighLevelCompSize;
+ DWORD dwHighLevelCompOffset;
+ DWORD dwLowLevelCompSize;
+ DWORD dwLowLevelCompOffset;
+ DWORD dwChargingInfoSize;
+ DWORD dwChargingInfoOffset;
+ DWORD dwTerminalModesSize;
+ DWORD dwTerminalModesOffset;
+ DWORD dwDevSpecificSize;
+ DWORD dwDevSpecificOffset;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+ DWORD dwCallTreatment; // TAPI v2.0
+ DWORD dwCallDataSize; // TAPI v2.0
+ DWORD dwCallDataOffset; // TAPI v2.0
+ DWORD dwSendingFlowspecSize; // TAPI v2.0
+ DWORD dwSendingFlowspecOffset; // TAPI v2.0
+ DWORD dwReceivingFlowspecSize; // TAPI v2.0
+ DWORD dwReceivingFlowspecOffset; // TAPI v2.0
+#endif
+
+} LINECALLINFO, FAR *LPLINECALLINFO;
+
+typedef struct linecalllist_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwCallsNumEntries;
+ DWORD dwCallsSize;
+ DWORD dwCallsOffset;
+
+} LINECALLLIST, FAR *LPLINECALLLIST;
+
+typedef struct linecallparams_tag // Defaults:
+{
+ DWORD dwTotalSize; // ---------
+ DWORD dwBearerMode; // voice
+ DWORD dwMinRate; // (3.1kHz)
+ DWORD dwMaxRate; // (3.1kHz)
+ DWORD dwMediaMode; // interactiveVoice
+ DWORD dwCallParamFlags; // 0
+ DWORD dwAddressMode; // addressID
+ DWORD dwAddressID; // (any available)
+ LINEDIALPARAMS DialParams; // (0, 0, 0, 0)
+ DWORD dwOrigAddressSize; // 0
+ DWORD dwOrigAddressOffset;
+ DWORD dwDisplayableAddressSize;
+ DWORD dwDisplayableAddressOffset;
+ DWORD dwCalledPartySize; // 0
+ DWORD dwCalledPartyOffset;
+ DWORD dwCommentSize; // 0
+ DWORD dwCommentOffset;
+ DWORD dwUserUserInfoSize; // 0
+ DWORD dwUserUserInfoOffset;
+ DWORD dwHighLevelCompSize; // 0
+ DWORD dwHighLevelCompOffset;
+ DWORD dwLowLevelCompSize; // 0
+ DWORD dwLowLevelCompOffset;
+ DWORD dwDevSpecificSize; // 0
+ DWORD dwDevSpecificOffset;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+ DWORD dwPredictiveAutoTransferStates; // TAPI v2.0
+ DWORD dwTargetAddressSize; // TAPI v2.0
+ DWORD dwTargetAddressOffset; // TAPI v2.0
+ DWORD dwSendingFlowspecSize; // TAPI v2.0
+ DWORD dwSendingFlowspecOffset; // TAPI v2.0
+ DWORD dwReceivingFlowspecSize; // TAPI v2.0
+ DWORD dwReceivingFlowspecOffset; // TAPI v2.0
+ DWORD dwDeviceClassSize; // TAPI v2.0
+ DWORD dwDeviceClassOffset; // TAPI v2.0
+ DWORD dwDeviceConfigSize; // TAPI v2.0
+ DWORD dwDeviceConfigOffset; // TAPI v2.0
+ DWORD dwCallDataSize; // TAPI v2.0
+ DWORD dwCallDataOffset; // TAPI v2.0
+ DWORD dwNoAnswerTimeout; // TAPI v2.0
+ DWORD dwCallingPartyIDSize; // TAPI v2.0
+ DWORD dwCallingPartyIDOffset; // TAPI v2.0
+#endif
+
+} LINECALLPARAMS, FAR *LPLINECALLPARAMS;
+
+typedef struct linecallstatus_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwCallState;
+ DWORD dwCallStateMode;
+ DWORD dwCallPrivilege;
+ DWORD dwCallFeatures;
+ DWORD dwDevSpecificSize;
+ DWORD dwDevSpecificOffset;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+ DWORD dwCallFeatures2; // TAPI v2.0
+#if WIN32
+ SYSTEMTIME tStateEntryTime; // TAPI v2.0
+#else
+ WORD tStateEntryTime[8]; // TAPI v2.0
+#endif
+#endif
+
+} LINECALLSTATUS, FAR *LPLINECALLSTATUS;
+
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+typedef struct linecalltreatmententry_tag
+{
+ DWORD dwCallTreatmentID; // TAPI v2.0
+ DWORD dwCallTreatmentNameSize; // TAPI v2.0
+ DWORD dwCallTreatmentNameOffset; // TAPI v2.0
+
+} LINECALLTREATMENTENTRY, FAR *LPLINECALLTREATMENTENTRY;
+#endif
+
+
+typedef struct linecardentry_tag
+{
+ DWORD dwPermanentCardID;
+ DWORD dwCardNameSize;
+ DWORD dwCardNameOffset;
+ DWORD dwCardNumberDigits; // TAPI v1.4
+ DWORD dwSameAreaRuleSize; // TAPI v1.4
+ DWORD dwSameAreaRuleOffset; // TAPI v1.4
+ DWORD dwLongDistanceRuleSize; // TAPI v1.4
+ DWORD dwLongDistanceRuleOffset; // TAPI v1.4
+ DWORD dwInternationalRuleSize; // TAPI v1.4
+ DWORD dwInternationalRuleOffset; // TAPI v1.4
+ DWORD dwOptions; // TAPI v1.4
+
+} LINECARDENTRY, FAR *LPLINECARDENTRY;
+
+typedef struct linecountryentry_tag
+{
+ DWORD dwCountryID; // TAPI v1.4
+ DWORD dwCountryCode; // TAPI v1.4
+ DWORD dwNextCountryID; // TAPI v1.4
+ DWORD dwCountryNameSize; // TAPI v1.4
+ DWORD dwCountryNameOffset; // TAPI v1.4
+ DWORD dwSameAreaRuleSize; // TAPI v1.4
+ DWORD dwSameAreaRuleOffset; // TAPI v1.4
+ DWORD dwLongDistanceRuleSize; // TAPI v1.4
+ DWORD dwLongDistanceRuleOffset; // TAPI v1.4
+ DWORD dwInternationalRuleSize; // TAPI v1.4
+ DWORD dwInternationalRuleOffset; // TAPI v1.4
+
+} LINECOUNTRYENTRY, FAR *LPLINECOUNTRYENTRY;
+
+typedef struct linecountrylist_tag
+{
+ DWORD dwTotalSize; // TAPI v1.4
+ DWORD dwNeededSize; // TAPI v1.4
+ DWORD dwUsedSize; // TAPI v1.4
+ DWORD dwNumCountries; // TAPI v1.4
+ DWORD dwCountryListSize; // TAPI v1.4
+ DWORD dwCountryListOffset; // TAPI v1.4
+
+} LINECOUNTRYLIST, FAR *LPLINECOUNTRYLIST;
+
+typedef struct linedevcaps_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwProviderInfoSize;
+ DWORD dwProviderInfoOffset;
+ DWORD dwSwitchInfoSize;
+ DWORD dwSwitchInfoOffset;
+ DWORD dwPermanentLineID;
+ DWORD dwLineNameSize;
+ DWORD dwLineNameOffset;
+ DWORD dwStringFormat;
+ DWORD dwAddressModes;
+ DWORD dwNumAddresses;
+ DWORD dwBearerModes;
+ DWORD dwMaxRate;
+ DWORD dwMediaModes;
+ DWORD dwGenerateToneModes;
+ DWORD dwGenerateToneMaxNumFreq;
+ DWORD dwGenerateDigitModes;
+ DWORD dwMonitorToneMaxNumFreq;
+ DWORD dwMonitorToneMaxNumEntries;
+ DWORD dwMonitorDigitModes;
+ DWORD dwGatherDigitsMinTimeout;
+ DWORD dwGatherDigitsMaxTimeout;
+ DWORD dwMedCtlDigitMaxListSize;
+ DWORD dwMedCtlMediaMaxListSize;
+ DWORD dwMedCtlToneMaxListSize;
+ DWORD dwMedCtlCallStateMaxListSize;
+ DWORD dwDevCapFlags;
+ DWORD dwMaxNumActiveCalls;
+ DWORD dwAnswerMode;
+ DWORD dwRingModes;
+ DWORD dwLineStates;
+ DWORD dwUUIAcceptSize;
+ DWORD dwUUIAnswerSize;
+ DWORD dwUUIMakeCallSize;
+ DWORD dwUUIDropSize;
+ DWORD dwUUISendUserUserInfoSize;
+ DWORD dwUUICallInfoSize;
+ LINEDIALPARAMS MinDialParams;
+ LINEDIALPARAMS MaxDialParams;
+ LINEDIALPARAMS DefaultDialParams;
+ DWORD dwNumTerminals;
+ DWORD dwTerminalCapsSize;
+ DWORD dwTerminalCapsOffset;
+ DWORD dwTerminalTextEntrySize;
+ DWORD dwTerminalTextSize;
+ DWORD dwTerminalTextOffset;
+ DWORD dwDevSpecificSize;
+ DWORD dwDevSpecificOffset;
+
+ DWORD dwLineFeatures; // TAPI v1.4
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+ DWORD dwSettableDevStatus; // TAPI v2.0
+ DWORD dwDeviceClassesSize; // TAPI v2.0
+ DWORD dwDeviceClassesOffset; // TAPI v2.0
+#endif
+
+} LINEDEVCAPS, FAR *LPLINEDEVCAPS;
+
+typedef struct linedevstatus_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwNumOpens;
+ DWORD dwOpenMediaModes;
+ DWORD dwNumActiveCalls;
+ DWORD dwNumOnHoldCalls;
+ DWORD dwNumOnHoldPendCalls;
+ DWORD dwLineFeatures;
+ DWORD dwNumCallCompletions;
+ DWORD dwRingMode;
+ DWORD dwSignalLevel;
+ DWORD dwBatteryLevel;
+ DWORD dwRoamMode;
+ DWORD dwDevStatusFlags;
+ DWORD dwTerminalModesSize;
+ DWORD dwTerminalModesOffset;
+ DWORD dwDevSpecificSize;
+ DWORD dwDevSpecificOffset;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+ DWORD dwAvailableMediaModes; // TAPI v2.0
+ DWORD dwAppInfoSize; // TAPI v2.0
+ DWORD dwAppInfoOffset; // TAPI v2.0
+#endif
+
+} LINEDEVSTATUS, FAR *LPLINEDEVSTATUS;
+
+typedef struct lineextensionid_tag
+{
+ DWORD dwExtensionID0;
+ DWORD dwExtensionID1;
+ DWORD dwExtensionID2;
+ DWORD dwExtensionID3;
+
+} LINEEXTENSIONID, FAR *LPLINEEXTENSIONID;
+
+typedef struct lineforward_tag
+{
+ DWORD dwForwardMode;
+ DWORD dwCallerAddressSize;
+ DWORD dwCallerAddressOffset;
+ DWORD dwDestCountryCode;
+ DWORD dwDestAddressSize;
+ DWORD dwDestAddressOffset;
+
+} LINEFORWARD, FAR *LPLINEFORWARD;
+
+typedef struct lineforwardlist_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNumEntries;
+ LINEFORWARD ForwardList[1];
+
+} LINEFORWARDLIST, FAR *LPLINEFORWARDLIST;
+
+typedef struct linegeneratetone_tag
+{
+ DWORD dwFrequency;
+ DWORD dwCadenceOn;
+ DWORD dwCadenceOff;
+ DWORD dwVolume;
+
+} LINEGENERATETONE, FAR *LPLINEGENERATETONE;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+typedef struct lineinitializeexparams_tag
+{
+ DWORD dwTotalSize; // TAPI v2.0
+ DWORD dwNeededSize; // TAPI v2.0
+ DWORD dwUsedSize; // TAPI v2.0
+ DWORD dwOptions; // TAPI v2.0
+
+ union
+ {
+ HANDLE hEvent; // TAPI v2.0
+ HANDLE hCompletionPort; // TAPI v2.0
+
+ } Handles;
+
+ DWORD dwCompletionKey; // TAPI v2.0
+
+} LINEINITIALIZEEXPARAMS, FAR *LPLINEINITIALIZEEXPARAMS;
+#endif
+
+typedef struct linelocationentry_tag
+{
+ DWORD dwPermanentLocationID;
+ DWORD dwLocationNameSize;
+ DWORD dwLocationNameOffset;
+ DWORD dwCountryCode;
+ DWORD dwCityCodeSize;
+ DWORD dwCityCodeOffset;
+ DWORD dwPreferredCardID;
+
+ DWORD dwLocalAccessCodeSize; // TAPI v1.4
+ DWORD dwLocalAccessCodeOffset; // TAPI v1.4
+ DWORD dwLongDistanceAccessCodeSize; // TAPI v1.4
+ DWORD dwLongDistanceAccessCodeOffset; // TAPI v1.4
+ DWORD dwTollPrefixListSize; // TAPI v1.4
+ DWORD dwTollPrefixListOffset; // TAPI v1.4
+ DWORD dwCountryID; // TAPI v1.4
+ DWORD dwOptions; // TAPI v1.4
+ DWORD dwCancelCallWaitingSize; // TAPI v1.4
+ DWORD dwCancelCallWaitingOffset; // TAPI v1.4
+
+} LINELOCATIONENTRY, FAR *LPLINELOCATIONENTRY;
+
+typedef struct linemediacontrolcallstate_tag
+{
+ DWORD dwCallStates;
+ DWORD dwMediaControl;
+
+} LINEMEDIACONTROLCALLSTATE, FAR *LPLINEMEDIACONTROLCALLSTATE;
+
+typedef struct linemediacontroldigit_tag
+{
+ DWORD dwDigit;
+ DWORD dwDigitModes;
+ DWORD dwMediaControl;
+
+} LINEMEDIACONTROLDIGIT, FAR *LPLINEMEDIACONTROLDIGIT;
+
+typedef struct linemediacontrolmedia_tag
+{
+ DWORD dwMediaModes;
+ DWORD dwDuration;
+ DWORD dwMediaControl;
+
+} LINEMEDIACONTROLMEDIA, FAR *LPLINEMEDIACONTROLMEDIA;
+
+typedef struct linemediacontroltone_tag
+{
+ DWORD dwAppSpecific;
+ DWORD dwDuration;
+ DWORD dwFrequency1;
+ DWORD dwFrequency2;
+ DWORD dwFrequency3;
+ DWORD dwMediaControl;
+
+} LINEMEDIACONTROLTONE, FAR *LPLINEMEDIACONTROLTONE;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+typedef struct linemessage_tag
+{
+ DWORD hDevice; // TAPI v2.0
+ DWORD dwMessageID; // TAPI v2.0
+ DWORD dwCallbackInstance; // TAPI v2.0
+ DWORD dwParam1; // TAPI v2.0
+ DWORD dwParam2; // TAPI v2.0
+ DWORD dwParam3; // TAPI v2.0
+
+} LINEMESSAGE, FAR *LPLINEMESSAGE;
+#endif
+
+typedef struct linemonitortone_tag
+{
+ DWORD dwAppSpecific;
+ DWORD dwDuration;
+ DWORD dwFrequency1;
+ DWORD dwFrequency2;
+ DWORD dwFrequency3;
+
+} LINEMONITORTONE, FAR *LPLINEMONITORTONE;
+
+typedef struct lineproviderentry_tag
+{
+ DWORD dwPermanentProviderID; // TAPI v1.4
+ DWORD dwProviderFilenameSize; // TAPI v1.4
+ DWORD dwProviderFilenameOffset; // TAPI v1.4
+
+} LINEPROVIDERENTRY, FAR *LPLINEPROVIDERENTRY;
+
+typedef struct lineproviderlist_tag
+{
+ DWORD dwTotalSize; // TAPI v1.4
+ DWORD dwNeededSize; // TAPI v1.4
+ DWORD dwUsedSize; // TAPI v1.4
+ DWORD dwNumProviders; // TAPI v1.4
+ DWORD dwProviderListSize; // TAPI v1.4
+ DWORD dwProviderListOffset; // TAPI v1.4
+
+} LINEPROVIDERLIST, FAR *LPLINEPROVIDERLIST;
+
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+typedef struct lineproxyrequest_tag
+{
+ DWORD dwSize; // TAPI v2.0
+ DWORD dwClientMachineNameSize; // TAPI v2.0
+ DWORD dwClientMachineNameOffset; // TAPI v2.0
+ DWORD dwClientUserNameSize; // TAPI v2.0
+ DWORD dwClientUserNameOffset; // TAPI v2.0
+ DWORD dwClientAppAPIVersion; // TAPI v2.0
+ DWORD dwRequestType; // TAPI v2.0
+
+ union
+ {
+ struct
+ {
+ DWORD dwAddressID; // TAPI v2.0
+ LINEAGENTGROUPLIST GroupList; // TAPI v2.0
+
+ } SetAgentGroup;
+
+ struct
+ {
+ DWORD dwAddressID; // TAPI v2.0
+ DWORD dwAgentState; // TAPI v2.0
+ DWORD dwNextAgentState; // TAPI v2.0
+
+ } SetAgentState;
+
+ struct
+ {
+ DWORD dwAddressID; // TAPI v2.0
+ DWORD dwActivityID; // TAPI v2.0
+
+ } SetAgentActivity;
+
+ struct
+ {
+ DWORD dwAddressID; // TAPI v2.0
+ LINEAGENTCAPS AgentCaps; // TAPI v2.0
+
+ } GetAgentCaps;
+
+ struct
+ {
+ DWORD dwAddressID; // TAPI v2.0
+ LINEAGENTSTATUS AgentStatus; // TAPI v2.0
+
+ } GetAgentStatus;
+
+ struct
+ {
+ DWORD dwAddressID; // TAPI v2.0
+ DWORD dwAgentExtensionIDIndex; // TAPI v2.0
+ DWORD dwSize; // TAPI v2.0
+ BYTE Params[1]; // TAPI v2.0
+
+ } AgentSpecific;
+
+ struct
+ {
+ DWORD dwAddressID; // TAPI v2.0
+ LINEAGENTACTIVITYLIST ActivityList; // TAPI v2.0
+
+ } GetAgentActivityList;
+
+ struct
+ {
+ DWORD dwAddressID; // TAPI v2.0
+ LINEAGENTGROUPLIST GroupList; // TAPI v2.0
+
+ } GetAgentGroupList;
+ }; //ProxyRequestType;
+
+} LINEPROXYREQUEST, *LPLINEPROXYREQUEST;
+#endif
+
+
+typedef struct linereqmakecall_tag
+{
+ char szDestAddress[TAPIMAXDESTADDRESSSIZE];
+ char szAppName[TAPIMAXAPPNAMESIZE];
+ char szCalledParty[TAPIMAXCALLEDPARTYSIZE];
+ char szComment[TAPIMAXCOMMENTSIZE];
+
+} LINEREQMAKECALL, FAR *LPLINEREQMAKECALL;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+typedef struct linereqmakecallW_tag
+{
+ WCHAR szDestAddress[TAPIMAXDESTADDRESSSIZE];
+ WCHAR szAppName[TAPIMAXAPPNAMESIZE];
+ WCHAR szCalledParty[TAPIMAXCALLEDPARTYSIZE];
+ WCHAR szComment[TAPIMAXCOMMENTSIZE];
+
+} LINEREQMAKECALLW, FAR *LPLINEREQMAKECALLW;
+#endif
+
+#ifdef UNICODE
+#define LINEREQMAKECALL LINEREQMAKECALLW
+#endif
+
+typedef struct linereqmediacall_tag
+{
+ HWND hWnd;
+ WPARAM wRequestID;
+ char szDeviceClass[TAPIMAXDEVICECLASSSIZE];
+ unsigned char ucDeviceID[TAPIMAXDEVICEIDSIZE];
+ DWORD dwSize;
+ DWORD dwSecure;
+ char szDestAddress[TAPIMAXDESTADDRESSSIZE];
+ char szAppName[TAPIMAXAPPNAMESIZE];
+ char szCalledParty[TAPIMAXCALLEDPARTYSIZE];
+ char szComment[TAPIMAXCOMMENTSIZE];
+
+} LINEREQMEDIACALL, FAR *LPLINEREQMEDIACALL;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+typedef struct linereqmediacallW_tag
+{
+ HWND hWnd;
+ WPARAM wRequestID;
+ WCHAR szDeviceClass[TAPIMAXDEVICECLASSSIZE];
+ unsigned char ucDeviceID[TAPIMAXDEVICEIDSIZE];
+ DWORD dwSize;
+ DWORD dwSecure;
+ WCHAR szDestAddress[TAPIMAXDESTADDRESSSIZE];
+ WCHAR szAppName[TAPIMAXAPPNAMESIZE];
+ WCHAR szCalledParty[TAPIMAXCALLEDPARTYSIZE];
+ WCHAR szComment[TAPIMAXCOMMENTSIZE];
+
+} LINEREQMEDIACALLW, FAR *LPLINEREQMEDIACALLW;
+#endif
+
+#ifdef UNICODE
+#define LINEREQMEDIACALL LINEREQMEDIACALLW
+#endif
+
+
+typedef struct linetermcaps_tag
+{
+ DWORD dwTermDev;
+ DWORD dwTermModes;
+ DWORD dwTermSharing;
+
+} LINETERMCAPS, FAR *LPLINETERMCAPS;
+
+typedef struct linetranslatecaps_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwNumLocations;
+ DWORD dwLocationListSize;
+ DWORD dwLocationListOffset;
+ DWORD dwCurrentLocationID;
+ DWORD dwNumCards;
+ DWORD dwCardListSize;
+ DWORD dwCardListOffset;
+ DWORD dwCurrentPreferredCardID;
+
+} LINETRANSLATECAPS, FAR *LPLINETRANSLATECAPS;
+
+typedef struct linetranslateoutput_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwDialableStringSize;
+ DWORD dwDialableStringOffset;
+ DWORD dwDisplayableStringSize;
+ DWORD dwDisplayableStringOffset;
+ DWORD dwCurrentCountry;
+ DWORD dwDestCountry;
+ DWORD dwTranslateResults;
+
+} LINETRANSLATEOUTPUT, FAR *LPLINETRANSLATEOUTPUT;
+
+typedef struct phonebuttoninfo_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwButtonMode;
+ DWORD dwButtonFunction;
+ DWORD dwButtonTextSize;
+ DWORD dwButtonTextOffset;
+ DWORD dwDevSpecificSize;
+ DWORD dwDevSpecificOffset;
+
+ DWORD dwButtonState; // TAPI v1.4
+
+} PHONEBUTTONINFO, FAR *LPPHONEBUTTONINFO;
+
+typedef struct phonecaps_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwProviderInfoSize;
+ DWORD dwProviderInfoOffset;
+ DWORD dwPhoneInfoSize;
+ DWORD dwPhoneInfoOffset;
+ DWORD dwPermanentPhoneID;
+ DWORD dwPhoneNameSize;
+ DWORD dwPhoneNameOffset;
+ DWORD dwStringFormat;
+ DWORD dwPhoneStates;
+ DWORD dwHookSwitchDevs;
+ DWORD dwHandsetHookSwitchModes;
+ DWORD dwSpeakerHookSwitchModes;
+ DWORD dwHeadsetHookSwitchModes;
+ DWORD dwVolumeFlags;
+ DWORD dwGainFlags;
+ DWORD dwDisplayNumRows;
+ DWORD dwDisplayNumColumns;
+ DWORD dwNumRingModes;
+ DWORD dwNumButtonLamps;
+ DWORD dwButtonModesSize;
+ DWORD dwButtonModesOffset;
+ DWORD dwButtonFunctionsSize;
+ DWORD dwButtonFunctionsOffset;
+ DWORD dwLampModesSize;
+ DWORD dwLampModesOffset;
+ DWORD dwNumSetData;
+ DWORD dwSetDataSize;
+ DWORD dwSetDataOffset;
+ DWORD dwNumGetData;
+ DWORD dwGetDataSize;
+ DWORD dwGetDataOffset;
+ DWORD dwDevSpecificSize;
+ DWORD dwDevSpecificOffset;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+ DWORD dwDeviceClassesSize; // TAPI v2.0
+ DWORD dwDeviceClassesOffset; // TAPI v2.0
+ DWORD dwPhoneFeatures; // TAPI v2.0
+ DWORD dwSettableHandsetHookSwitchModes; // TAPI v2.0
+ DWORD dwSettableSpeakerHookSwitchModes; // TAPI v2.0
+ DWORD dwSettableHeadsetHookSwitchModes; // TAPI v2.0
+ DWORD dwMonitoredHandsetHookSwitchModes; // TAPI v2.0
+ DWORD dwMonitoredSpeakerHookSwitchModes; // TAPI v2.0
+ DWORD dwMonitoredHeadsetHookSwitchModes; // TAPI v2.0
+#endif
+
+} PHONECAPS, FAR *LPPHONECAPS;
+
+typedef struct phoneextensionid_tag
+{
+ DWORD dwExtensionID0;
+ DWORD dwExtensionID1;
+ DWORD dwExtensionID2;
+ DWORD dwExtensionID3;
+
+} PHONEEXTENSIONID, FAR *LPPHONEEXTENSIONID;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+typedef struct phoneinitializeexparams_tag
+{
+ DWORD dwTotalSize; // TAPI v2.0
+ DWORD dwNeededSize; // TAPI v2.0
+ DWORD dwUsedSize; // TAPI v2.0
+ DWORD dwOptions; // TAPI v2.0
+
+ union
+ {
+ HANDLE hEvent; // TAPI v2.0
+ HANDLE hCompletionPort; // TAPI v2.0
+
+ } Handles;
+
+ DWORD dwCompletionKey; // TAPI v2.0
+
+} PHONEINITIALIZEEXPARAMS, FAR *LPPHONEINITIALIZEEXPARAMS;
+
+typedef struct phonemessage_tag
+{
+ DWORD hDevice; // TAPI v2.0
+ DWORD dwMessageID; // TAPI v2.0
+ DWORD dwCallbackInstance; // TAPI v2.0
+ DWORD dwParam1; // TAPI v2.0
+ DWORD dwParam2; // TAPI v2.0
+ DWORD dwParam3; // TAPI v2.0
+
+} PHONEMESSAGE, FAR *LPPHONEMESSAGE;
+#endif
+
+typedef struct phonestatus_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwStatusFlags;
+ DWORD dwNumOwners;
+ DWORD dwNumMonitors;
+ DWORD dwRingMode;
+ DWORD dwRingVolume;
+ DWORD dwHandsetHookSwitchMode;
+ DWORD dwHandsetVolume;
+ DWORD dwHandsetGain;
+ DWORD dwSpeakerHookSwitchMode;
+ DWORD dwSpeakerVolume;
+ DWORD dwSpeakerGain;
+ DWORD dwHeadsetHookSwitchMode;
+ DWORD dwHeadsetVolume;
+ DWORD dwHeadsetGain;
+ DWORD dwDisplaySize;
+ DWORD dwDisplayOffset;
+ DWORD dwLampModesSize;
+ DWORD dwLampModesOffset;
+ DWORD dwOwnerNameSize;
+ DWORD dwOwnerNameOffset;
+ DWORD dwDevSpecificSize;
+ DWORD dwDevSpecificOffset;
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+ DWORD dwPhoneFeatures; // TAPI v2.0
+#endif
+
+} PHONESTATUS, FAR *LPPHONESTATUS;
+
+typedef struct varstring_tag
+{
+ DWORD dwTotalSize;
+ DWORD dwNeededSize;
+ DWORD dwUsedSize;
+ DWORD dwStringFormat;
+ DWORD dwStringSize;
+ DWORD dwStringOffset;
+
+} VARSTRING, FAR *LPVARSTRING;
+
+
+
+LONG
+WINAPI
+lineAccept(
+ HCALL hCall,
+ LPCSTR lpsUserUserInfo,
+ DWORD dwSize
+ );
+
+LONG
+WINAPI
+lineAddProvider( // TAPI v1.4
+ LPCSTR lpszProviderFilename,
+ HWND hwndOwner,
+ LPDWORD lpdwPermanentProviderID
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineAddProviderA( // TAPI v1.4
+ LPCSTR lpszProviderFilename,
+ HWND hwndOwner,
+ LPDWORD lpdwPermanentProviderID
+ );
+
+LONG
+WINAPI
+lineAddProviderW(
+ LPCWSTR lpszProviderFilename,
+ HWND hwndOwner,
+ LPDWORD lpdwPermanentProviderID
+ );
+
+#ifdef UNICODE
+#define lineAddProvider lineAddProviderW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineAddProvider lineAddProviderA
+#endif
+#endif
+
+#endif
+
+
+LONG
+WINAPI
+lineAddToConference(
+ HCALL hConfCall,
+ HCALL hConsultCall
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+lineAgentSpecific( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwAddressID,
+ DWORD dwAgentExtensionIDIndex,
+ LPVOID lpParams,
+ DWORD dwSize
+ );
+#endif
+
+LONG
+WINAPI
+lineAnswer(
+ HCALL hCall,
+ LPCSTR lpsUserUserInfo,
+ DWORD dwSize
+ );
+
+LONG
+WINAPI
+lineBlindTransfer(
+ HCALL hCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineBlindTransferA(
+ HCALL hCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+
+LONG
+WINAPI
+lineBlindTransferW(
+ HCALL hCall,
+ LPCWSTR lpszDestAddressW,
+ DWORD dwCountryCode
+ );
+
+#ifdef UNICODE
+#define lineBlindTransfer lineBlindTransferW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineBlindTransfer lineBlindTransferA
+#endif
+#endif
+
+#endif
+
+
+LONG
+WINAPI
+lineClose(
+ HLINE hLine
+ );
+
+LONG
+WINAPI
+lineCompleteCall(
+ HCALL hCall,
+ LPDWORD lpdwCompletionID,
+ DWORD dwCompletionMode,
+ DWORD dwMessageID
+ );
+
+LONG
+WINAPI
+lineCompleteTransfer(
+ HCALL hCall,
+ HCALL hConsultCall,
+ LPHCALL lphConfCall,
+ DWORD dwTransferMode
+ );
+
+LONG
+WINAPI
+lineConfigDialog(
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCSTR lpszDeviceClass
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineConfigDialogA(
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCSTR lpszDeviceClass
+ );
+
+LONG
+WINAPI
+lineConfigDialogW(
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCWSTR lpszDeviceClass
+ );
+
+#ifdef UNICODE
+#define lineConfigDialog lineConfigDialogW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineConfigDialog lineConfigDialogA
+#endif
+#endif
+
+#endif
+
+
+LONG
+WINAPI
+lineConfigDialogEdit( // TAPI v1.4
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCSTR lpszDeviceClass,
+ LPVOID const lpDeviceConfigIn,
+ DWORD dwSize,
+ LPVARSTRING lpDeviceConfigOut
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineConfigDialogEditA( // TAPI v1.4
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCSTR lpszDeviceClass,
+ LPVOID const lpDeviceConfigIn,
+ DWORD dwSize,
+ LPVARSTRING lpDeviceConfigOut
+ );
+
+LONG
+WINAPI
+lineConfigDialogEditW(
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCWSTR lpszDeviceClass,
+ LPVOID const lpDeviceConfigIn,
+ DWORD dwSize,
+ LPVARSTRING lpDeviceConfigOut
+ );
+
+#ifdef UNICODE
+#define lineConfigDialogEdit lineConfigDialogEditW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineConfigDialogEdit lineConfigDialogEditA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineConfigProvider( // TAPI v1.4
+ HWND hwndOwner,
+ DWORD dwPermanentProviderID
+ );
+
+LONG
+WINAPI
+lineDeallocateCall(
+ HCALL hCall
+ );
+
+LONG
+WINAPI
+lineDevSpecific(
+ HLINE hLine,
+ DWORD dwAddressID,
+ HCALL hCall,
+ LPVOID lpParams,
+ DWORD dwSize
+ );
+
+LONG
+WINAPI
+lineDevSpecificFeature(
+ HLINE hLine,
+ DWORD dwFeature,
+ LPVOID lpParams,
+ DWORD dwSize
+ );
+
+LONG
+WINAPI
+lineDial(
+ HCALL hCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineDialA(
+ HCALL hCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+
+LONG
+WINAPI
+lineDialW(
+ HCALL hCall,
+ LPCWSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+
+#ifdef UNICODE
+#define lineDial lineDialW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineDial lineDialA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineDrop(
+ HCALL hCall,
+ LPCSTR lpsUserUserInfo,
+ DWORD dwSize
+ );
+
+LONG
+WINAPI
+lineForward(
+ HLINE hLine,
+ DWORD bAllAddresses,
+ DWORD dwAddressID,
+ LPLINEFORWARDLIST const lpForwardList,
+ DWORD dwNumRingsNoAnswer,
+ LPHCALL lphConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineForwardA(
+ HLINE hLine,
+ DWORD bAllAddresses,
+ DWORD dwAddressID,
+ LPLINEFORWARDLIST const lpForwardList,
+ DWORD dwNumRingsNoAnswer,
+ LPHCALL lphConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+LONG
+WINAPI
+lineForwardW(
+ HLINE hLine,
+ DWORD bAllAddresses,
+ DWORD dwAddressID,
+ LPLINEFORWARDLIST const lpForwardList,
+ DWORD dwNumRingsNoAnswer,
+ LPHCALL lphConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#ifdef UNICODE
+#define lineForward lineForwardW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineForward lineForwardA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGatherDigits(
+ HCALL hCall,
+ DWORD dwDigitModes,
+ LPSTR lpsDigits,
+ DWORD dwNumDigits,
+ LPCSTR lpszTerminationDigits,
+ DWORD dwFirstDigitTimeout,
+ DWORD dwInterDigitTimeout
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGatherDigitsA(
+ HCALL hCall,
+ DWORD dwDigitModes,
+ LPSTR lpsDigits,
+ DWORD dwNumDigits,
+ LPCSTR lpszTerminationDigits,
+ DWORD dwFirstDigitTimeout,
+ DWORD dwInterDigitTimeout
+ );
+
+LONG
+WINAPI
+lineGatherDigitsW(
+ HCALL hCall,
+ DWORD dwDigitModes,
+ LPWSTR lpsDigits,
+ DWORD dwNumDigits,
+ LPCWSTR lpszTerminationDigits,
+ DWORD dwFirstDigitTimeout,
+ DWORD dwInterDigitTimeout
+ );
+
+#ifdef UNICODE
+#define lineGatherDigits lineGatherDigitsW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGatherDigits lineGatherDigitsA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGenerateDigits(
+ HCALL hCall,
+ DWORD dwDigitMode,
+ LPCSTR lpszDigits,
+ DWORD dwDuration
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGenerateDigitsA(
+ HCALL hCall,
+ DWORD dwDigitMode,
+ LPCSTR lpszDigits,
+ DWORD dwDuration
+ );
+
+LONG
+WINAPI
+lineGenerateDigitsW(
+ HCALL hCall,
+ DWORD dwDigitMode,
+ LPCWSTR lpszDigits,
+ DWORD dwDuration
+ );
+
+#ifdef UNICODE
+#define lineGenerateDigits lineGenerateDigitsW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGenerateDigits lineGenerateDigitsA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGenerateTone(
+ HCALL hCall,
+ DWORD dwToneMode,
+ DWORD dwDuration,
+ DWORD dwNumTones,
+ LPLINEGENERATETONE const lpTones
+ );
+
+LONG
+WINAPI
+lineGetAddressCaps(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAddressID,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ LPLINEADDRESSCAPS lpAddressCaps
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetAddressCapsA(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAddressID,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ LPLINEADDRESSCAPS lpAddressCaps
+ );
+
+LONG
+WINAPI
+lineGetAddressCapsW(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAddressID,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ LPLINEADDRESSCAPS lpAddressCaps
+ );
+
+#ifdef UNICODE
+#define lineGetAddressCaps lineGetAddressCapsW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetAddressCaps lineGetAddressCapsA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetAddressID(
+ HLINE hLine,
+ LPDWORD lpdwAddressID,
+ DWORD dwAddressMode,
+ LPCSTR lpsAddress,
+ DWORD dwSize
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetAddressIDA(
+ HLINE hLine,
+ LPDWORD lpdwAddressID,
+ DWORD dwAddressMode,
+ LPCSTR lpsAddress,
+ DWORD dwSize
+ );
+
+LONG
+WINAPI
+lineGetAddressIDW(
+ HLINE hLine,
+ LPDWORD lpdwAddressID,
+ DWORD dwAddressMode,
+ LPCWSTR lpsAddress,
+ DWORD dwSize
+ );
+
+#ifdef UNICODE
+#define lineGetAddressID lineGetAddressIDW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetAddressID lineGetAddressIDA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetAddressStatus(
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPLINEADDRESSSTATUS lpAddressStatus
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetAddressStatusA(
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPLINEADDRESSSTATUS lpAddressStatus
+ );
+
+LONG
+WINAPI
+lineGetAddressStatusW(
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPLINEADDRESSSTATUS lpAddressStatus
+ );
+
+#ifdef UNICODE
+#define lineGetAddressStatus lineGetAddressStatusW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetAddressStatus lineGetAddressStatusA
+#endif
+#endif
+
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+lineGetAgentActivityListA( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPLINEAGENTACTIVITYLIST lpAgentActivityList
+ );
+
+LONG
+WINAPI
+lineGetAgentActivityListW( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPLINEAGENTACTIVITYLIST lpAgentActivityList
+ );
+
+#ifdef UNICODE
+#define lineGetAgentActivityList lineGetAgentActivityListW
+#else
+#define lineGetAgentActivityList lineGetAgentActivityListA
+#endif
+
+
+LONG
+WINAPI
+lineGetAgentCapsA( // TAPI v2.0
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAddressID,
+ DWORD dwAppAPIVersion,
+ LPLINEAGENTCAPS lpAgentCaps
+ );
+
+LONG
+WINAPI
+lineGetAgentCapsW( // TAPI v2.0
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAddressID,
+ DWORD dwAppAPIVersion,
+ LPLINEAGENTCAPS lpAgentCaps
+ );
+
+#ifdef UNICODE
+#define lineGetAgentCaps lineGetAgentCapsW
+#else
+#define lineGetAgentCaps lineGetAgentCapsA
+#endif
+
+
+LONG
+WINAPI
+lineGetAgentGroupListA( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPLINEAGENTGROUPLIST lpAgentGroupList
+ );
+
+LONG
+WINAPI
+lineGetAgentGroupListW( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPLINEAGENTGROUPLIST lpAgentGroupList
+ );
+
+#ifdef UNICODE
+#define lineGetAgentGroupList lineGetAgentGroupListW
+#else
+#define lineGetAgentGroupList lineGetAgentGroupListA
+#endif
+
+LONG
+WINAPI
+lineGetAgentStatusA( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPLINEAGENTSTATUS lpAgentStatus
+ );
+
+LONG
+WINAPI
+lineGetAgentStatusW( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPLINEAGENTSTATUS lpAgentStatus
+ );
+
+#ifdef UNICODE
+#define lineGetAgentStatus lineGetAgentStatusW
+#else
+#define lineGetAgentStatus lineGetAgentStatusA
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetAppPriority( // TAPI v1.4
+ LPCSTR lpszAppFilename,
+ DWORD dwMediaMode,
+ LPLINEEXTENSIONID lpExtensionID,
+ DWORD dwRequestMode,
+ LPVARSTRING lpExtensionName,
+ LPDWORD lpdwPriority
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetAppPriorityA( // TAPI v1.4
+ LPCSTR lpszAppFilename,
+ DWORD dwMediaMode,
+ LPLINEEXTENSIONID lpExtensionID,
+ DWORD dwRequestMode,
+ LPVARSTRING lpExtensionName,
+ LPDWORD lpdwPriority
+ );
+
+LONG
+WINAPI
+lineGetAppPriorityW( // TAPI v1.4
+ LPCWSTR lpszAppFilename,
+ DWORD dwMediaMode,
+ LPLINEEXTENSIONID lpExtensionID,
+ DWORD dwRequestMode,
+ LPVARSTRING lpExtensionName,
+ LPDWORD lpdwPriority
+ );
+
+#ifdef UNICODE
+#define lineGetAppPriority lineGetAppPriorityW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetAppPriority lineGetAppPriorityA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetCallInfo(
+ HCALL hCall,
+ LPLINECALLINFO lpCallInfo
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetCallInfoA(
+ HCALL hCall,
+ LPLINECALLINFO lpCallInfo
+ );
+
+LONG
+WINAPI
+lineGetCallInfoW(
+ HCALL hCall,
+ LPLINECALLINFO lpCallInfo
+ );
+
+#ifdef UNICODE
+#define lineGetCallInfo lineGetCallInfoW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetCallInfo lineGetCallInfoA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetCallStatus(
+ HCALL hCall,
+ LPLINECALLSTATUS lpCallStatus
+ );
+
+LONG
+WINAPI
+lineGetConfRelatedCalls(
+ HCALL hCall,
+ LPLINECALLLIST lpCallList
+ );
+
+LONG
+WINAPI
+lineGetCountry( // TAPI v1.4
+ DWORD dwCountryID,
+ DWORD dwAPIVersion,
+ LPLINECOUNTRYLIST lpLineCountryList
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetCountryA( // TAPI v1.4
+ DWORD dwCountryID,
+ DWORD dwAPIVersion,
+ LPLINECOUNTRYLIST lpLineCountryList
+ );
+
+LONG
+WINAPI
+lineGetCountryW( // TAPI v1.4
+ DWORD dwCountryID,
+ DWORD dwAPIVersion,
+ LPLINECOUNTRYLIST lpLineCountryList
+ );
+
+#ifdef UNICODE
+#define lineGetCountry lineGetCountryW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetCountry lineGetCountryA
+#endif
+#endif
+
+#endif
+
+
+LONG
+WINAPI
+lineGetDevCaps(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ LPLINEDEVCAPS lpLineDevCaps
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetDevCapsA(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ LPLINEDEVCAPS lpLineDevCaps
+ );
+
+LONG
+WINAPI
+lineGetDevCapsW(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ LPLINEDEVCAPS lpLineDevCaps
+ );
+
+#ifdef UNICODE
+#define lineGetDevCaps lineGetDevCapsW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetDevCaps lineGetDevCapsA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetDevConfig(
+ DWORD dwDeviceID,
+ LPVARSTRING lpDeviceConfig,
+ LPCSTR lpszDeviceClass
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetDevConfigA(
+ DWORD dwDeviceID,
+ LPVARSTRING lpDeviceConfig,
+ LPCSTR lpszDeviceClass
+ );
+
+LONG
+WINAPI
+lineGetDevConfigW(
+ DWORD dwDeviceID,
+ LPVARSTRING lpDeviceConfig,
+ LPCWSTR lpszDeviceClass
+ );
+
+#ifdef UNICODE
+#define lineGetDevConfig lineGetDevConfigW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetDevConfig lineGetDevConfigA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetNewCalls(
+ HLINE hLine,
+ DWORD dwAddressID,
+ DWORD dwSelect,
+ LPLINECALLLIST lpCallList
+ );
+
+LONG
+WINAPI
+lineGetIcon(
+ DWORD dwDeviceID,
+ LPCSTR lpszDeviceClass,
+ LPHICON lphIcon
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetIconA(
+ DWORD dwDeviceID,
+ LPCSTR lpszDeviceClass,
+ LPHICON lphIcon
+ );
+
+LONG
+WINAPI
+lineGetIconW(
+ DWORD dwDeviceID,
+ LPCWSTR lpszDeviceClass,
+ LPHICON lphIcon
+ );
+
+#ifdef UNICODE
+#define lineGetIcon lineGetIconW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetIcon lineGetIconA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetID(
+ HLINE hLine,
+ DWORD dwAddressID,
+ HCALL hCall,
+ DWORD dwSelect,
+ LPVARSTRING lpDeviceID,
+ LPCSTR lpszDeviceClass
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetIDA(
+ HLINE hLine,
+ DWORD dwAddressID,
+ HCALL hCall,
+ DWORD dwSelect,
+ LPVARSTRING lpDeviceID,
+ LPCSTR lpszDeviceClass
+ );
+
+LONG
+WINAPI
+lineGetIDW(
+ HLINE hLine,
+ DWORD dwAddressID,
+ HCALL hCall,
+ DWORD dwSelect,
+ LPVARSTRING lpDeviceID,
+ LPCWSTR lpszDeviceClass
+ );
+
+#ifdef UNICODE
+#define lineGetID lineGetIDW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetID lineGetIDA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetLineDevStatus(
+ HLINE hLine,
+ LPLINEDEVSTATUS lpLineDevStatus
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetLineDevStatusA(
+ HLINE hLine,
+ LPLINEDEVSTATUS lpLineDevStatus
+ );
+
+LONG
+WINAPI
+lineGetLineDevStatusW(
+ HLINE hLine,
+ LPLINEDEVSTATUS lpLineDevStatus
+ );
+
+#ifdef UNICODE
+#define lineGetDevStatus lineGetDevStatusW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetDevStatus lineGetDevStatusA
+#endif
+#endif
+
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+lineGetMessage( // TAPI v2.0
+ HLINEAPP hLineApp,
+ LPLINEMESSAGE lpMessage,
+ DWORD dwTimeout
+ );
+#endif
+
+LONG
+WINAPI
+lineGetNumRings(
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPDWORD lpdwNumRings
+ );
+
+LONG
+WINAPI
+lineGetProviderList( // TAPI v1.4
+ DWORD dwAPIVersion,
+ LPLINEPROVIDERLIST lpProviderList
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetProviderListA(
+ DWORD dwAPIVersion,
+ LPLINEPROVIDERLIST lpProviderList
+ );
+
+LONG
+WINAPI
+lineGetProviderListW(
+ DWORD dwAPIVersion,
+ LPLINEPROVIDERLIST lpProviderList
+ );
+
+#ifdef UNICODE
+#define lineGetProviderList lineGetProviderListW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetProviderList lineGetProviderListA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetRequest(
+ HLINEAPP hLineApp,
+ DWORD dwRequestMode,
+ LPVOID lpRequestBuffer
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetRequestA(
+ HLINEAPP hLineApp,
+ DWORD dwRequestMode,
+ LPVOID lpRequestBuffer
+ );
+
+LONG
+WINAPI
+lineGetRequestW(
+ HLINEAPP hLineApp,
+ DWORD dwRequestMode,
+ LPVOID lpRequestBuffer
+ );
+
+#ifdef UNICODE
+#define lineGetRequest lineGetRequestW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetRequest lineGetRequestA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineGetStatusMessages(
+ HLINE hLine,
+ LPDWORD lpdwLineStates,
+ LPDWORD lpdwAddressStates
+ );
+
+LONG
+WINAPI
+lineGetTranslateCaps(
+ HLINEAPP hLineApp,
+ DWORD dwAPIVersion,
+ LPLINETRANSLATECAPS lpTranslateCaps
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineGetTranslateCapsA(
+ HLINEAPP hLineApp,
+ DWORD dwAPIVersion,
+ LPLINETRANSLATECAPS lpTranslateCaps
+ );
+
+LONG
+WINAPI
+lineGetTranslateCapsW(
+ HLINEAPP hLineApp,
+ DWORD dwAPIVersion,
+ LPLINETRANSLATECAPS lpTranslateCaps
+ );
+
+#ifdef UNICODE
+#define lineGetTranslateCaps lineGetTranslateCapsW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineGetTranslateCaps lineGetTranslateCapsA
+#endif
+#endif
+
+#endif
+
+
+LONG
+WINAPI
+lineHandoff(
+ HCALL hCall,
+ LPCSTR lpszFileName,
+ DWORD dwMediaMode
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineHandoffA(
+ HCALL hCall,
+ LPCSTR lpszFileName,
+ DWORD dwMediaMode
+ );
+
+LONG
+WINAPI
+lineHandoffW(
+ HCALL hCall,
+ LPCWSTR lpszFileName,
+ DWORD dwMediaMode
+ );
+
+#ifdef UNICODE
+#define lineHandoff lineHandoffW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineHandoff lineHandoffA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineHold(
+ HCALL hCall
+ );
+
+LONG
+WINAPI
+lineInitialize(
+ LPHLINEAPP lphLineApp,
+ HINSTANCE hInstance,
+ LINECALLBACK lpfnCallback,
+ LPCSTR lpszAppName,
+ LPDWORD lpdwNumDevs
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+lineInitializeExA( // TAPI v2.0
+ LPHLINEAPP lphLineApp,
+ HINSTANCE hInstance,
+ LINECALLBACK lpfnCallback,
+ LPCSTR lpszFriendlyAppName,
+ LPDWORD lpdwNumDevs,
+ LPDWORD lpdwAPIVersion,
+ LPLINEINITIALIZEEXPARAMS lpLineInitializeExParams
+ );
+
+LONG
+WINAPI
+lineInitializeExW( // TAPI v2.0
+ LPHLINEAPP lphLineApp,
+ HINSTANCE hInstance,
+ LINECALLBACK lpfnCallback,
+ LPCWSTR lpszFriendlyAppName,
+ LPDWORD lpdwNumDevs,
+ LPDWORD lpdwAPIVersion,
+ LPLINEINITIALIZEEXPARAMS lpLineInitializeExParams
+ );
+
+#ifdef UNICODE
+#define lineInitializeEx lineInitializeExW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineInitializeEx lineInitializeExA
+#endif
+#endif
+
+#endif
+
+
+LONG
+WINAPI
+lineMakeCall(
+ HLINE hLine,
+ LPHCALL lphCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineMakeCallA(
+ HLINE hLine,
+ LPHCALL lphCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+LONG
+WINAPI
+lineMakeCallW(
+ HLINE hLine,
+ LPHCALL lphCall,
+ LPCWSTR lpszDestAddress,
+ DWORD dwCountryCode,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#ifdef UNICODE
+#define lineMakeCall lineMakeCallW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineMakeCall lineMakeCallA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineMonitorDigits(
+ HCALL hCall,
+ DWORD dwDigitModes
+ );
+
+LONG
+WINAPI
+lineMonitorMedia(
+ HCALL hCall,
+ DWORD dwMediaModes
+ );
+
+LONG
+WINAPI
+lineMonitorTones(
+ HCALL hCall,
+ LPLINEMONITORTONE const lpToneList,
+ DWORD dwNumEntries
+ );
+
+LONG
+WINAPI
+lineNegotiateAPIVersion(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPILowVersion,
+ DWORD dwAPIHighVersion,
+ LPDWORD lpdwAPIVersion,
+ LPLINEEXTENSIONID lpExtensionID
+ );
+
+LONG
+WINAPI
+lineNegotiateExtVersion(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ DWORD dwExtLowVersion,
+ DWORD dwExtHighVersion,
+ LPDWORD lpdwExtVersion
+ );
+
+LONG
+WINAPI
+lineOpen(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ LPHLINE lphLine,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ DWORD dwCallbackInstance,
+ DWORD dwPrivileges,
+ DWORD dwMediaModes,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineOpenA(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ LPHLINE lphLine,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ DWORD dwCallbackInstance,
+ DWORD dwPrivileges,
+ DWORD dwMediaModes,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+LONG
+WINAPI
+lineOpenW(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ LPHLINE lphLine,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ DWORD dwCallbackInstance,
+ DWORD dwPrivileges,
+ DWORD dwMediaModes,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#ifdef UNICODE
+#define lineOpen lineOpenW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineOpen lineOpenA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+linePark(
+ HCALL hCall,
+ DWORD dwParkMode,
+ LPCSTR lpszDirAddress,
+ LPVARSTRING lpNonDirAddress
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineParkA(
+ HCALL hCall,
+ DWORD dwParkMode,
+ LPCSTR lpszDirAddress,
+ LPVARSTRING lpNonDirAddress
+ );
+
+LONG
+WINAPI
+lineParkW(
+ HCALL hCall,
+ DWORD dwParkMode,
+ LPCWSTR lpszDirAddress,
+ LPVARSTRING lpNonDirAddress
+ );
+
+#ifdef UNICODE
+#define linePark lineParkW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define linePark lineParkA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+linePickup(
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPHCALL lphCall,
+ LPCSTR lpszDestAddress,
+ LPCSTR lpszGroupID
+ );
+
+#if WIN32
+LONG
+WINAPI
+linePickupA(
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPHCALL lphCall,
+ LPCSTR lpszDestAddress,
+ LPCSTR lpszGroupID
+ );
+
+LONG
+WINAPI
+linePickupW(
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPHCALL lphCall,
+ LPCWSTR lpszDestAddress,
+ LPCWSTR lpszGroupID
+ );
+
+#ifdef UNICODE
+#define linePickup linePickupW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define linePickup linePickupA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+linePrepareAddToConference(
+ HCALL hConfCall,
+ LPHCALL lphConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#if WIN32
+LONG
+WINAPI
+linePrepareAddToConferenceA(
+ HCALL hConfCall,
+ LPHCALL lphConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+LONG
+WINAPI
+linePrepareAddToConferenceW(
+ HCALL hConfCall,
+ LPHCALL lphConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#ifdef UNICODE
+#define linePrepareAddToConference linePrepareAddToConferenceW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define linePrepareAddToConference linePrepareAddToConferenceA
+#endif
+#endif
+
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+lineProxyMessage( // TAPI v2.0
+ HLINE hLine,
+ HCALL hCall,
+ DWORD dwMsg,
+ DWORD dwParam1,
+ DWORD dwParam2,
+ DWORD dwParam3
+ );
+
+LONG
+WINAPI
+lineProxyResponse( // TAPI v2.0
+ HLINE hLine,
+ LPLINEPROXYREQUEST lpProxyRequest,
+ DWORD dwResult
+ );
+#endif
+
+LONG
+WINAPI
+lineRedirect(
+ HCALL hCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineRedirectA(
+ HCALL hCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+
+LONG
+WINAPI
+lineRedirectW(
+ HCALL hCall,
+ LPCWSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+
+#ifdef UNICODE
+#define lineRedirect lineRedirectW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineRedirect lineRedirectA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineRegisterRequestRecipient(
+ HLINEAPP hLineApp,
+ DWORD dwRegistrationInstance,
+ DWORD dwRequestMode,
+ DWORD bEnable
+ );
+
+LONG
+WINAPI
+lineReleaseUserUserInfo( // TAPI v1.4
+ HCALL hCall
+ );
+
+LONG
+WINAPI
+lineRemoveFromConference(
+ HCALL hCall
+ );
+
+LONG
+WINAPI
+lineRemoveProvider( // TAPI v1.4
+ DWORD dwPermanentProviderID,
+ HWND hwndOwner
+ );
+
+LONG
+WINAPI
+lineSecureCall(
+ HCALL hCall
+ );
+
+LONG
+WINAPI
+lineSendUserUserInfo(
+ HCALL hCall,
+ LPCSTR lpsUserUserInfo,
+ DWORD dwSize
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+lineSetAgentActivity( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwAddressID,
+ DWORD dwActivityID
+ );
+
+LONG
+WINAPI
+lineSetAgentGroup( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPLINEAGENTGROUPLIST lpAgentGroupList
+ );
+
+LONG
+WINAPI
+lineSetAgentState( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwAddressID,
+ DWORD dwAgentState,
+ DWORD dwNextAgentState
+ );
+#endif
+
+LONG
+WINAPI
+lineSetAppPriority( // TAPI v1.4
+ LPCSTR lpszAppFilename,
+ DWORD dwMediaMode,
+ LPLINEEXTENSIONID lpExtensionID,
+ DWORD dwRequestMode,
+ LPCSTR lpszExtensionName,
+ DWORD dwPriority
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineSetAppPriorityA( // TAPI v1.4
+ LPCSTR lpszAppFilename,
+ DWORD dwMediaMode,
+ LPLINEEXTENSIONID lpExtensionID,
+ DWORD dwRequestMode,
+ LPCSTR lpszExtensionName,
+ DWORD dwPriority
+ );
+
+LONG
+WINAPI
+lineSetAppPriorityW( // TAPI v1.4
+ LPCWSTR lpszAppFilename,
+ DWORD dwMediaMode,
+ LPLINEEXTENSIONID lpExtensionID,
+ DWORD dwRequestMode,
+ LPCWSTR lpszExtensionName,
+ DWORD dwPriority
+ );
+
+#ifdef UNICODE
+#define lineSetAppPriority lineSetAppPriorityW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineSetAppPriority lineSetAppPriorityA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineSetAppSpecific(
+ HCALL hCall,
+ DWORD dwAppSpecific
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+lineSetCallData( // TAPI v2.0
+ HCALL hCall,
+ LPVOID lpCallData,
+ DWORD dwSize
+ );
+#endif
+
+LONG
+WINAPI
+lineSetCallParams(
+ HCALL hCall,
+ DWORD dwBearerMode,
+ DWORD dwMinRate,
+ DWORD dwMaxRate,
+ LPLINEDIALPARAMS const lpDialParams
+ );
+
+LONG
+WINAPI
+lineSetCallPrivilege(
+ HCALL hCall,
+ DWORD dwCallPrivilege
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+lineSetCallQualityOfService( // TAPI v2.0
+ HCALL hCall,
+ LPVOID lpSendingFlowspec,
+ DWORD dwSendingFlowspecSize,
+ LPVOID lpReceivingFlowspec,
+ DWORD dwReceivingFlowspecSize
+ );
+
+LONG
+WINAPI
+lineSetCallTreatment( // TAPI v2.0
+ HCALL hCall,
+ DWORD dwTreatment
+ );
+#endif
+
+LONG
+WINAPI
+lineSetCurrentLocation(
+ HLINEAPP hLineApp,
+ DWORD dwLocation
+ );
+
+LONG
+WINAPI
+lineSetDevConfig(
+ DWORD dwDeviceID,
+ LPVOID const lpDeviceConfig,
+ DWORD dwSize,
+ LPCSTR lpszDeviceClass
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineSetDevConfigA(
+ DWORD dwDeviceID,
+ LPVOID const lpDeviceConfig,
+ DWORD dwSize,
+ LPCSTR lpszDeviceClass
+ );
+
+LONG
+WINAPI
+lineSetDevConfigW(
+ DWORD dwDeviceID,
+ LPVOID const lpDeviceConfig,
+ DWORD dwSize,
+ LPCWSTR lpszDeviceClass
+ );
+
+#ifdef UNICODE
+#define lineSetDevConfig lineSetDevConfigW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineSetDevConfig lineSetDevConfigA
+#endif
+#endif
+
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+lineSetLineDevStatus( // TAPI v2.0
+ HLINE hLine,
+ DWORD dwStatusToChange,
+ DWORD fStatus
+ );
+#endif
+
+LONG
+WINAPI
+lineSetMediaControl(
+ HLINE hLine,
+ DWORD dwAddressID,
+ HCALL hCall,
+ DWORD dwSelect,
+ LPLINEMEDIACONTROLDIGIT const lpDigitList,
+ DWORD dwDigitNumEntries,
+ LPLINEMEDIACONTROLMEDIA const lpMediaList,
+ DWORD dwMediaNumEntries,
+ LPLINEMEDIACONTROLTONE const lpToneList,
+ DWORD dwToneNumEntries,
+ LPLINEMEDIACONTROLCALLSTATE const lpCallStateList,
+ DWORD dwCallStateNumEntries
+ );
+
+LONG
+WINAPI
+lineSetMediaMode(
+ HCALL hCall,
+ DWORD dwMediaModes
+ );
+
+LONG
+WINAPI
+lineSetNumRings(
+ HLINE hLine,
+ DWORD dwAddressID,
+ DWORD dwNumRings
+ );
+
+LONG
+WINAPI
+lineSetStatusMessages(
+ HLINE hLine,
+ DWORD dwLineStates,
+ DWORD dwAddressStates
+ );
+
+LONG
+WINAPI
+lineSetTerminal(
+ HLINE hLine,
+ DWORD dwAddressID,
+ HCALL hCall,
+ DWORD dwSelect,
+ DWORD dwTerminalModes,
+ DWORD dwTerminalID,
+ DWORD bEnable
+ );
+
+LONG
+WINAPI
+lineSetTollList(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ LPCSTR lpszAddressIn,
+ DWORD dwTollListOption
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineSetTollListA(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ LPCSTR lpszAddressIn,
+ DWORD dwTollListOption
+ );
+
+LONG
+WINAPI
+lineSetTollListW(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ LPCWSTR lpszAddressInW,
+ DWORD dwTollListOption
+ );
+
+#ifdef UNICODE
+#define lineSetTollList lineSetTollListW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineSetTollList lineSetTollListA
+#endif
+#endif
+
+#endif
+
+
+LONG
+WINAPI
+lineSetupConference(
+ HCALL hCall,
+ HLINE hLine,
+ LPHCALL lphConfCall,
+ LPHCALL lphConsultCall,
+ DWORD dwNumParties,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineSetupConferenceA(
+ HCALL hCall,
+ HLINE hLine,
+ LPHCALL lphConfCall,
+ LPHCALL lphConsultCall,
+ DWORD dwNumParties,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+LONG
+WINAPI
+lineSetupConferenceW(
+ HCALL hCall,
+ HLINE hLine,
+ LPHCALL lphConfCall,
+ LPHCALL lphConsultCall,
+ DWORD dwNumParties,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#ifdef UNICODE
+#define lineSetupConference lineSetupConferenceW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineSetupConference lineSetupConferenceA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineSetupTransfer(
+ HCALL hCall,
+ LPHCALL lphConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineSetupTransferA(
+ HCALL hCall,
+ LPHCALL lphConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+LONG
+WINAPI
+lineSetupTransferW(
+ HCALL hCall,
+ LPHCALL lphConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#ifdef UNICODE
+#define lineSetupTransfer lineSetupTransferW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineSetupTransfer lineSetupTransferA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineShutdown(
+ HLINEAPP hLineApp
+ );
+
+LONG
+WINAPI
+lineSwapHold(
+ HCALL hActiveCall,
+ HCALL hHeldCall
+ );
+
+LONG
+WINAPI
+lineTranslateAddress(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ LPCSTR lpszAddressIn,
+ DWORD dwCard,
+ DWORD dwTranslateOptions,
+ LPLINETRANSLATEOUTPUT lpTranslateOutput
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineTranslateAddressA(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ LPCSTR lpszAddressIn,
+ DWORD dwCard,
+ DWORD dwTranslateOptions,
+ LPLINETRANSLATEOUTPUT lpTranslateOutput
+ );
+
+LONG
+WINAPI
+lineTranslateAddressW(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ LPCWSTR lpszAddressIn,
+ DWORD dwCard,
+ DWORD dwTranslateOptions,
+ LPLINETRANSLATEOUTPUT lpTranslateOutput
+ );
+
+#ifdef UNICODE
+#define lineTranslateAddress lineTranslateAddressW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineTranslateAddressA lineTranslateAddressA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineTranslateDialog( // TAPI v1.4
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ HWND hwndOwner,
+ LPCSTR lpszAddressIn
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineTranslateDialogA( // TAPI v1.4
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ HWND hwndOwner,
+ LPCSTR lpszAddressIn
+ );
+
+LONG
+WINAPI
+lineTranslateDialogW(
+ HLINEAPP hLineApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ HWND hwndOwner,
+ LPCWSTR lpszAddressIn
+ );
+
+#ifdef UNICODE
+#define lineTranslateDialog lineTranslateDialogW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineTranslateDialogA lineTranslateDialogA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+lineUncompleteCall(
+ HLINE hLine,
+ DWORD dwCompletionID
+ );
+
+LONG
+WINAPI
+lineUnhold(
+ HCALL hCall
+ );
+
+LONG
+WINAPI
+lineUnpark(
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPHCALL lphCall,
+ LPCSTR lpszDestAddress
+ );
+
+#if WIN32
+LONG
+WINAPI
+lineUnparkA(
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPHCALL lphCall,
+ LPCSTR lpszDestAddress
+ );
+
+LONG
+WINAPI
+lineUnparkW(
+ HLINE hLine,
+ DWORD dwAddressID,
+ LPHCALL lphCall,
+ LPCWSTR lpszDestAddress
+ );
+
+#ifdef UNICODE
+#define lineUnpark lineUnparkW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define lineUnpark lineUnparkA
+#endif
+#endif
+
+#endif
+
+
+
+LONG
+WINAPI
+phoneClose(
+ HPHONE hPhone
+ );
+
+LONG
+WINAPI
+phoneConfigDialog(
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCSTR lpszDeviceClass
+ );
+
+#if WIN32
+LONG
+WINAPI
+phoneConfigDialogA(
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCSTR lpszDeviceClass
+ );
+
+LONG
+WINAPI
+phoneConfigDialogW(
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCWSTR lpszDeviceClass
+ );
+
+#ifdef UNICODE
+#define phoneConfigDialog phoneConfigDialogW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define phoneConfigDialog phoneConfigDialogA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+phoneDevSpecific(
+ HPHONE hPhone,
+ LPVOID lpParams,
+ DWORD dwSize
+ );
+
+LONG
+WINAPI
+phoneGetButtonInfo(
+ HPHONE hPhone,
+ DWORD dwButtonLampID,
+ LPPHONEBUTTONINFO lpButtonInfo
+ );
+
+#if WIN32
+LONG
+WINAPI
+phoneGetButtonInfoA(
+ HPHONE hPhone,
+ DWORD dwButtonLampID,
+ LPPHONEBUTTONINFO lpButtonInfo
+ );
+
+LONG
+WINAPI
+phoneGetButtonInfoW(
+ HPHONE hPhone,
+ DWORD dwButtonLampID,
+ LPPHONEBUTTONINFO lpButtonInfo
+ );
+
+#ifdef UNICODE
+#define phoneGetButtonInfo phoneGetButtonInfoW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define phoneGetButtonInfo phoneGetButtonInfoA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+phoneGetData(
+ HPHONE hPhone,
+ DWORD dwDataID,
+ LPVOID lpData,
+ DWORD dwSize
+ );
+
+LONG
+WINAPI
+phoneGetDevCaps(
+ HPHONEAPP hPhoneApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ LPPHONECAPS lpPhoneCaps
+ );
+
+#if WIN32
+LONG
+WINAPI
+phoneGetDevCapsA(
+ HPHONEAPP hPhoneApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ LPPHONECAPS lpPhoneCaps
+ );
+
+LONG
+WINAPI
+phoneGetDevCapsW(
+ HPHONEAPP hPhoneApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ LPPHONECAPS lpPhoneCaps
+ );
+
+#ifdef UNICODE
+#define phoneGetDevCaps phoneGetDevCapsW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define phoneGetDevCaps phoneGetDevCapsA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+phoneGetDisplay(
+ HPHONE hPhone,
+ LPVARSTRING lpDisplay
+ );
+
+LONG
+WINAPI
+phoneGetGain(
+ HPHONE hPhone,
+ DWORD dwHookSwitchDev,
+ LPDWORD lpdwGain
+ );
+
+LONG
+WINAPI
+phoneGetHookSwitch(
+ HPHONE hPhone,
+ LPDWORD lpdwHookSwitchDevs
+ );
+
+LONG
+WINAPI
+phoneGetIcon(
+ DWORD dwDeviceID,
+ LPCSTR lpszDeviceClass,
+ LPHICON lphIcon
+ );
+
+#if WIN32
+LONG
+WINAPI
+phoneGetIconA(
+ DWORD dwDeviceID,
+ LPCSTR lpszDeviceClass,
+ LPHICON lphIcon
+ );
+
+LONG
+WINAPI
+phoneGetIconW(
+ DWORD dwDeviceID,
+ LPCWSTR lpszDeviceClass,
+ LPHICON lphIcon
+ );
+
+#ifdef UNICODE
+#define phoneGetIcon phoneGetIconW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define phoneGetIcon phoneGetIconA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+phoneGetID(
+ HPHONE hPhone,
+ LPVARSTRING lpDeviceID,
+ LPCSTR lpszDeviceClass
+ );
+
+#if WIN32
+LONG
+WINAPI
+phoneGetIDA(
+ HPHONE hPhone,
+ LPVARSTRING lpDeviceID,
+ LPCSTR lpszDeviceClass
+ );
+
+LONG
+WINAPI
+phoneGetIDW(
+ HPHONE hPhone,
+ LPVARSTRING lpDeviceID,
+ LPCWSTR lpszDeviceClass
+ );
+
+#ifdef UNICODE
+#define phoneGetID phoneGetIDW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define phoneGetID phoneGetIDA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+phoneGetLamp(
+ HPHONE hPhone,
+ DWORD dwButtonLampID,
+ LPDWORD lpdwLampMode
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+phoneGetMessage( // TAPI v2.0
+ HPHONEAPP hPhoneApp,
+ LPPHONEMESSAGE lpMessage,
+ DWORD dwTimeout
+ );
+#endif
+
+LONG
+WINAPI
+phoneGetRing(
+ HPHONE hPhone,
+ LPDWORD lpdwRingMode,
+ LPDWORD lpdwVolume
+ );
+
+LONG
+WINAPI
+phoneGetStatus(
+ HPHONE hPhone,
+ LPPHONESTATUS lpPhoneStatus
+ );
+
+#if WIN32
+LONG
+WINAPI
+phoneGetStatusA(
+ HPHONE hPhone,
+ LPPHONESTATUS lpPhoneStatus
+ );
+
+LONG
+WINAPI
+phoneGetStatusW(
+ HPHONE hPhone,
+ LPPHONESTATUS lpPhoneStatus
+ );
+
+
+#ifdef UNICODE
+#define phoneGetStatus phoneGetStatusW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define phoneGetStatus phoneGetStatusA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+phoneGetStatusMessages(
+ HPHONE hPhone,
+ LPDWORD lpdwPhoneStates,
+ LPDWORD lpdwButtonModes,
+ LPDWORD lpdwButtonStates
+ );
+
+LONG
+WINAPI
+phoneGetVolume(
+ HPHONE hPhone,
+ DWORD dwHookSwitchDev,
+ LPDWORD lpdwVolume
+ );
+
+LONG
+WINAPI
+phoneInitialize(
+ LPHPHONEAPP lphPhoneApp,
+ HINSTANCE hInstance,
+ PHONECALLBACK lpfnCallback,
+ LPCSTR lpszAppName,
+ LPDWORD lpdwNumDevs
+ );
+
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+WINAPI
+phoneInitializeExA( // TAPI v2.0
+ LPHPHONEAPP lphPhoneApp,
+ HINSTANCE hInstance,
+ PHONECALLBACK lpfnCallback,
+ LPCSTR lpszFriendlyAppName,
+ LPDWORD lpdwNumDevs,
+ LPDWORD lpdwAPIVersion,
+ LPPHONEINITIALIZEEXPARAMS lpPhoneInitializeExParams
+ );
+
+LONG
+WINAPI
+phoneInitializeExW( // TAPI v2.0
+ LPHPHONEAPP lphPhoneApp,
+ HINSTANCE hInstance,
+ PHONECALLBACK lpfnCallback,
+ LPCWSTR lpszFriendlyAppName,
+ LPDWORD lpdwNumDevs,
+ LPDWORD lpdwAPIVersion,
+ LPPHONEINITIALIZEEXPARAMS lpPhoneInitializeExParams
+ );
+
+#ifdef UNICODE
+#define phoneInitializeEx phoneInitializeExW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define phoneInitializeEx phoneInitializeExA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+phoneNegotiateAPIVersion(
+ HPHONEAPP hPhoneApp,
+ DWORD dwDeviceID,
+ DWORD dwAPILowVersion,
+ DWORD dwAPIHighVersion,
+ LPDWORD lpdwAPIVersion,
+ LPPHONEEXTENSIONID lpExtensionID
+ );
+
+LONG
+WINAPI
+phoneNegotiateExtVersion(
+ HPHONEAPP hPhoneApp,
+ DWORD dwDeviceID,
+ DWORD dwAPIVersion,
+ DWORD dwExtLowVersion,
+ DWORD dwExtHighVersion,
+ LPDWORD lpdwExtVersion
+ );
+
+LONG
+WINAPI
+phoneOpen(
+ HPHONEAPP hPhoneApp,
+ DWORD dwDeviceID,
+ LPHPHONE lphPhone,
+ DWORD dwAPIVersion,
+ DWORD dwExtVersion,
+ DWORD dwCallbackInstance,
+ DWORD dwPrivilege
+ );
+
+LONG
+WINAPI
+phoneSetButtonInfo(
+ HPHONE hPhone,
+ DWORD dwButtonLampID,
+ LPPHONEBUTTONINFO const lpButtonInfo
+ );
+
+#if WIN32
+LONG
+WINAPI
+phoneSetButtonInfoA(
+ HPHONE hPhone,
+ DWORD dwButtonLampID,
+ LPPHONEBUTTONINFO const lpButtonInfo
+ );
+
+LONG
+WINAPI
+phoneSetButtonInfoW(
+ HPHONE hPhone,
+ DWORD dwButtonLampID,
+ LPPHONEBUTTONINFO const lpButtonInfo
+ );
+
+#ifdef UNICODE
+#define phoneSetButtonInfo phoneSetButtonInfoW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define phoneSetButtonInfo phoneSetButtonInfoA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+phoneSetData(
+ HPHONE hPhone,
+ DWORD dwDataID,
+ LPVOID const lpData,
+ DWORD dwSize
+ );
+
+LONG
+WINAPI
+phoneSetDisplay(
+ HPHONE hPhone,
+ DWORD dwRow,
+ DWORD dwColumn,
+ LPCSTR lpsDisplay,
+ DWORD dwSize
+ );
+
+LONG
+WINAPI
+phoneSetGain(
+ HPHONE hPhone,
+ DWORD dwHookSwitchDev,
+ DWORD dwGain
+ );
+
+LONG
+WINAPI
+phoneSetHookSwitch(
+ HPHONE hPhone,
+ DWORD dwHookSwitchDevs,
+ DWORD dwHookSwitchMode
+ );
+
+LONG
+WINAPI
+phoneSetLamp(
+ HPHONE hPhone,
+ DWORD dwButtonLampID,
+ DWORD dwLampMode
+ );
+
+LONG
+WINAPI
+phoneSetRing(
+ HPHONE hPhone,
+ DWORD dwRingMode,
+ DWORD dwVolume
+ );
+
+LONG
+WINAPI
+phoneSetStatusMessages(
+ HPHONE hPhone,
+ DWORD dwPhoneStates,
+ DWORD dwButtonModes,
+ DWORD dwButtonStates
+ );
+
+LONG
+WINAPI
+phoneSetVolume(
+ HPHONE hPhone,
+ DWORD dwHookSwitchDev,
+ DWORD dwVolume
+ );
+
+LONG
+WINAPI
+phoneShutdown(
+ HPHONEAPP hPhoneApp
+ );
+
+
+
+LONG
+WINAPI
+tapiGetLocationInfo(
+ LPSTR lpszCountryCode,
+ LPSTR lpszCityCode
+ );
+
+#if WIN32
+LONG
+WINAPI
+tapiGetLocationInfoA(
+ LPSTR lpszCountryCode,
+ LPSTR lpszCityCode
+ );
+
+LONG
+WINAPI
+tapiGetLocationInfoW(
+ LPWSTR lpszCountryCodeW,
+ LPWSTR lpszCityCodeW
+ );
+
+#ifdef UNICODE
+#define tapiGetLocationInfo tapiGetLocationInfoW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define tapiGetLocationInfo tapiGetLocationInfoA
+#endif
+#endif
+
+#endif
+
+
+LONG
+WINAPI
+tapiRequestDrop(
+ HWND hwnd,
+ WPARAM wRequestID
+ );
+
+LONG
+WINAPI
+tapiRequestMakeCall(
+ LPCSTR lpszDestAddress,
+ LPCSTR lpszAppName,
+ LPCSTR lpszCalledParty,
+ LPCSTR lpszComment
+ );
+
+#if WIN32
+LONG
+WINAPI
+tapiRequestMakeCallA(
+ LPCSTR lpszDestAddress,
+ LPCSTR lpszAppName,
+ LPCSTR lpszCalledParty,
+ LPCSTR lpszComment
+ );
+
+LONG
+WINAPI
+tapiRequestMakeCallW(
+ LPCWSTR lpszDestAddress,
+ LPCWSTR lpszAppName,
+ LPCWSTR lpszCalledParty,
+ LPCWSTR lpszComment
+ );
+
+#ifdef UNICODE
+#define tapiRequestMakeCall tapiRequestMakeCallW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define tapiRequestMakeCall tapiRequestMakeCallA
+#endif
+#endif
+
+#endif
+
+LONG
+WINAPI
+tapiRequestMediaCall(
+ HWND hwnd,
+ WPARAM wRequestID,
+ LPCSTR lpszDeviceClass,
+ LPCSTR lpDeviceID,
+ DWORD dwSize,
+ DWORD dwSecure,
+ LPCSTR lpszDestAddress,
+ LPCSTR lpszAppName,
+ LPCSTR lpszCalledParty,
+ LPCSTR lpszComment
+ );
+
+#if WIN32
+LONG
+WINAPI
+tapiRequestMediaCallA(
+ HWND hwnd,
+ WPARAM wRequestID,
+ LPCSTR lpszDeviceClass,
+ LPCSTR lpDeviceID,
+ DWORD dwSize,
+ DWORD dwSecure,
+ LPCSTR lpszDestAddress,
+ LPCSTR lpszAppName,
+ LPCSTR lpszCalledParty,
+ LPCSTR lpszComment
+ );
+
+LONG
+WINAPI
+tapiRequestMediaCallW(
+ HWND hwnd,
+ WPARAM wRequestID,
+ LPCWSTR lpszDeviceClass,
+ LPCWSTR lpDeviceID,
+ DWORD dwSize,
+ DWORD dwSecure,
+ LPCWSTR lpszDestAddress,
+ LPCWSTR lpszAppName,
+ LPCWSTR lpszCalledParty,
+ LPCWSTR lpszComment
+ );
+
+#ifdef UNICODE
+#define tapiRequestMediaCall tapiRequestMediaCallW
+#else
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define tapiRequestMediaCall tapiRequestMediaCallA
+#endif
+#endif
+
+#endif
+
+/*
+
+TAPIERROR_FORMATMESSAGE - macro to convert a TAPI error constant
+ into a constant that FormatMessage will accept
+
+ TAPIERR : Negative numbers and 0
+ Map to : strip off high WORD
+ Example: 0xFFFFFFFF (-1) becomes 0x0000FFFF
+ LINEERR : Start at 0x80000000
+ Map to : strip off 0x80000000 and add 0xE000
+ Example: 0x80000004 becomes 0x0000E004
+ PHONEERR: Start at 0x90000000
+ Map to : strip off 0x90000000 and add 0xF000
+ Example: 0x9000000A becomes 0x0000F00A
+
+ pseudocode:
+
+ if (__ErrCode__ is a TAPIERR)
+ strip off high word
+
+ else if (__ErrCode__ is a PHONEERR)
+ strip off 0x90000000
+ add 0xE000
+
+ else
+ strip off 0x80000000
+ add 0xF000
+
+*/
+
+#define TAPIERROR_FORMATMESSAGE(__ErrCode__) \
+ \
+ ( ( (__ErrCode__) > 0xFFFF0000 ) ? \
+ \
+ ( (__ErrCode__) & 0x0000FFFF ) : \
+ \
+ ( ( (__ErrCode__) & 0x10000000 ) ? \
+ \
+ ( (__ErrCode__) - 0x90000000 + 0xF000 ) : \
+ \
+ ( (__ErrCode__) - 0x80000000 + 0xE000 ) ) )
+
+
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#pragma pack()
+
+#endif // TAPI_H
diff --git a/public/sdk/inc/textserv.h b/public/sdk/inc/textserv.h
new file mode 100644
index 000000000..b7fa91618
--- /dev/null
+++ b/public/sdk/inc/textserv.h
@@ -0,0 +1,441 @@
+/* @doc EXTERNAL
+ *
+ * @module TEXTSRV.H Text Service Interface |
+ *
+ * Define interfaces between the Text Services component and the host
+ *
+ * Original Author: <nl>
+ * Christian Fortini
+ *
+ * History: <nl>
+ * 8/1/95 ricksa Revised interface definition
+ */
+
+#ifndef _TEXTSERV_H
+#define _TEXTSERV_H
+
+
+#include <richedit.h>
+
+// BUGBUG: We need to get a definition for this
+interface IUndoActionManager;
+
+EXTERN_C const IID IID_ITextServices;
+EXTERN_C const IID IID_ITextHost;
+EXTERN_C const IID IID_ITextHost2;
+
+// BUGBUG: Need to figure out correct public place for this error.
+// Note: error code is first outside of range reserved for OLE.
+#define S_MSG_KEY_IGNORED \
+ MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0x201)
+
+// Enums used by property methods
+
+/*
+ * TXTBACKSTYLE
+ *
+ * @enum Defines different background styles control
+ */
+enum TXTBACKSTYLE {
+ TXTBACK_TRANSPARENT = 0, //@emem background should show through
+ TXTBACK_OPAQUE, //@emem erase background
+};
+
+
+/*
+ * TXTHITRESULT
+ *
+ * @enum Defines different hitresults
+ */
+enum TXTHITRESULT {
+ TXTHITRESULT_NOHIT = 0, //@emem no hit
+ TXTHITRESULT_TRANSPARENT = 1, //@emem point is within the text's rectangle, but
+ //in a transparent region
+ TXTHITRESULT_CLOSE = 2, //@emem point is close to the text
+ TXTHITRESULT_HIT = 3 //@emem dead-on hit
+};
+
+/*
+ * TXTNATURALSIZE
+ *
+ * @enum useful values for TxGetNaturalSize.
+ *
+ * @xref <mf CTxtEdit::TxGetNaturalSize>
+ */
+enum TXTNATURALSIZE {
+ TXTNS_FITTOCONTENT = 1, //@emem Get a size that fits the content
+ TXTNS_ROUNDTOLINE = 2 //@emem Round to the nearest whole line.
+};
+
+/*
+ * TXTVIEW
+ *
+ * @enum useful values for TxDraw lViewId parameter
+ *
+ * @xref <mf CTxtEdit::TxDraw>
+ */
+enum TXTVIEW {
+ TXTVIEW_ACTIVE = 0,
+ TXTVIEW_INACTIVE = -1
+};
+
+
+/*
+ * CHANGETYPE
+ *
+ * @enum used for CHANGENOTIFY.dwChangeType; indicates what happened
+ * for a particular change.
+ */
+enum CHANGETYPE
+{
+ CN_GENERIC = 0, //@emem Nothing special happened
+ CN_TEXTCHANGED = 1, //@emem the text changed
+ CN_NEWUNDO = 2, //@emem A new undo action was added
+ CN_NEWREDO = 4 //@emem A new redo action was added
+};
+
+/*
+ * @struct CHANGENOTIFY |
+ *
+ * passed during an EN_CHANGE notification; contains information about
+ * what actually happened for a change.
+ */
+struct CHANGENOTIFY {
+ DWORD dwChangeType; //@field TEXT changed, etc
+ DWORD dwUndoCookie; //@field cookie for the undo action
+ // associated with the change.
+};
+
+// The TxGetPropertyBits and OnTxPropertyBitsChange methods can pass the following bits:
+
+// NB!!! Do NOT rely on the ordering of these bits yet; the are subject
+// to change.
+#define TXTBIT_RICHTEXT 1 // rich-text control
+#define TXTBIT_MULTILINE 2 // single vs multi-line control
+#define TXTBIT_READONLY 4 // read only text
+#define TXTBIT_SHOWACCELERATOR 8 // underline accelerator character
+#define TXTBIT_USEPASSWORD 0x10 // use password char to display text
+#define TXTBIT_HIDESELECTION 0x20 // show selection when inactive
+#define TXTBIT_SAVESELECTION 0x40 // remember selection when inactive
+#define TXTBIT_AUTOWORDSEL 0x80 // auto-word selection
+#define TXTBIT_VERTICAL 0x100 // vertical
+#define TXTBIT_SELBARCHANGE 0x200 // notification that the selection bar width
+ // has changed.
+ // FUTURE: move this bit to the end to
+ // maintain the division between
+ // properties and notifications.
+#define TXTBIT_WORDWRAP 0x400 // if set, then multi-line controls
+ // should wrap words to fit the available
+ // display
+#define TXTBIT_ALLOWBEEP 0x800 // enable/disable beeping
+#define TXTBIT_DISABLEDRAG 0x1000 // disable/enable dragging
+#define TXTBIT_VIEWINSETCHANGE 0x2000 // the inset changed
+#define TXTBIT_BACKSTYLECHANGE 0x4000
+#define TXTBIT_MAXLENGTHCHANGE 0x8000
+#define TXTBIT_SCROLLBARCHANGE 0x10000
+#define TXTBIT_CHARFORMATCHANGE 0x20000
+#define TXTBIT_PARAFORMATCHANGE 0x40000
+#define TXTBIT_EXTENTCHANGE 0x80000
+#define TXTBIT_CLIENTRECTCHANGE 0x100000 // the client rectangle changed
+
+
+
+/*
+ * ITextServices
+ *
+ * @class An interface extending Microsoft's Text Object Model to provide
+ * extra functionality for windowless operation. In conjunction
+ * with ITextHost, ITextServices provides the means by which the
+ * the RichEdit control can be used *without* creating a window.
+ *
+ * @base public | IUnknown
+ */
+class ITextServices : public IUnknown
+{
+public:
+
+ //@cmember Generic Send Message interface
+ virtual HRESULT TxSendMessage(
+ UINT msg,
+ WPARAM wparam,
+ LPARAM lparam,
+ LRESULT *plresult) = 0;
+
+ //@cmember Rendering
+ virtual HRESULT TxDraw(
+ DWORD dwDrawAspect,
+ LONG lindex,
+ void * pvAspect,
+ DVTARGETDEVICE * ptd,
+ HDC hdcDraw,
+ HDC hicTargetDev,
+ LPCRECTL lprcBounds,
+ LPCRECTL lprcWBounds,
+ LPRECT lprcUpdate,
+ BOOL (CALLBACK * pfnContinue) (DWORD),
+ DWORD dwContinue,
+ LONG lViewId) = 0;
+
+ //@cmember Horizontal scrollbar support
+ virtual HRESULT TxGetHScroll(
+ LONG *plMin,
+ LONG *plMax,
+ LONG *plPos,
+ LONG *plPage,
+ BOOL * pfEnabled ) = 0;
+
+ //@cmember Horizontal scrollbar support
+ virtual HRESULT TxGetVScroll(
+ LONG *plMin,
+ LONG *plMax,
+ LONG *plPos,
+ LONG *plPage,
+ BOOL * pfEnabled ) = 0;
+
+ //@cmember Setcursor
+ virtual HRESULT OnTxSetCursor(
+ DWORD dwDrawAspect,
+ LONG lindex,
+ void * pvAspect,
+ DVTARGETDEVICE * ptd,
+ HDC hdcDraw,
+ HDC hicTargetDev,
+ LPCRECT lprcClient,
+ INT x,
+ INT y) = 0;
+
+ //@cmember Hit-test
+ virtual HRESULT TxQueryHitPoint(
+ DWORD dwDrawAspect,
+ LONG lindex,
+ void * pvAspect,
+ DVTARGETDEVICE * ptd,
+ HDC hdcDraw,
+ HDC hicTargetDev,
+ LPCRECT lprcClient,
+ INT x,
+ INT y,
+ DWORD * pHitResult) = 0;
+
+ //@cmember Inplace activate notification
+ virtual HRESULT OnTxInPlaceActivate(LPCRECT prcClient) = 0;
+
+ //@cmember Inplace deactivate notification
+ virtual HRESULT OnTxInPlaceDeactivate() = 0;
+
+ //@cmember UI activate notification
+ virtual HRESULT OnTxUIActivate() = 0;
+
+ //@cmember UI deactivate notification
+ virtual HRESULT OnTxUIDeactivate() = 0;
+
+ //@cmember Get text in control
+ virtual HRESULT TxGetText(BSTR *pbstrText) = 0;
+
+ //@cmember Set text in control
+ virtual HRESULT TxSetText(LPCWSTR pszText) = 0;
+
+ //@cmember Get x position of
+ virtual HRESULT TxGetCurTargetX(LONG *) = 0;
+ //@cmember Get baseline position
+ virtual HRESULT TxGetBaseLinePos(LONG *) = 0;
+
+ //@cmember Get Size to fit / Natural size
+ virtual HRESULT TxGetNaturalSize(
+ DWORD dwAspect,
+ HDC hdcDraw,
+ HDC hicTargetDev,
+ DVTARGETDEVICE *ptd,
+ DWORD dwMode,
+ const SIZEL *psizelExtent,
+ LONG *pwidth,
+ LONG *pheight) = 0;
+
+ //@cmember Drag & drop
+ virtual HRESULT TxGetDropTarget( IDropTarget **ppDropTarget ) = 0;
+
+ //@cmember Bulk bit property change notifications
+ virtual HRESULT OnTxPropertyBitsChange(DWORD dwMask, DWORD dwBits) = 0;
+
+ //@cmember Fetch the cached drawing size
+ virtual HRESULT TxGetCachedSize(DWORD *pdwWidth, DWORD *pdwHeight)=0;
+};
+
+
+/*
+ * ITextHost
+ *
+ * @class Interface to be used by text services to obtain text host services
+ *
+ * @base public | IUnknown
+ */
+class ITextHost : public IUnknown
+{
+public:
+
+ //@cmember Get the DC for the host
+ virtual HDC TxGetDC() = 0;
+
+ //@cmember Release the DC gotten from the host
+ virtual INT TxReleaseDC(HDC hdc) = 0;
+
+ //@cmember Show the scroll bar
+ virtual BOOL TxShowScrollBar(INT fnBar, BOOL fShow) = 0;
+
+ //@cmember Enable the scroll bar
+ virtual BOOL TxEnableScrollBar (INT fuSBFlags, INT fuArrowflags) = 0;
+
+ //@cmember Set the scroll range
+ virtual BOOL TxSetScrollRange(
+ INT fnBar,
+ LONG nMinPos,
+ INT nMaxPos,
+ BOOL fRedraw) = 0;
+
+ //@cmember Set the scroll position
+ virtual BOOL TxSetScrollPos (INT fnBar, INT nPos, BOOL fRedraw) = 0;
+
+ //@cmember InvalidateRect
+ virtual void TxInvalidateRect(LPCRECT prc, BOOL fMode) = 0;
+
+ //@cmember Send a WM_PAINT to the window
+ virtual void TxViewChange(BOOL fUpdate) = 0;
+
+ //@cmember Create the caret
+ virtual BOOL TxCreateCaret(HBITMAP hbmp, INT xWidth, INT yHeight) = 0;
+
+ //@cmember Show the caret
+ virtual BOOL TxShowCaret(BOOL fShow) = 0;
+
+ //@cmember Set the caret position
+ virtual BOOL TxSetCaretPos(INT x, INT y) = 0;
+
+ //@cmember Create a timer with the specified timeout
+ virtual BOOL TxSetTimer(UINT idTimer, UINT uTimeout) = 0;
+
+ //@cmember Destroy a timer
+ virtual void TxKillTimer(UINT idTimer) = 0;
+
+ //@cmember Scroll the content of the specified window's client area
+ virtual void TxScrollWindowEx (
+ INT dx,
+ INT dy,
+ LPCRECT lprcScroll,
+ LPCRECT lprcClip,
+ HRGN hrgnUpdate,
+ LPRECT lprcUpdate,
+ UINT fuScroll) = 0;
+
+ //@cmember Get mouse capture
+ virtual void TxSetCapture(BOOL fCapture) = 0;
+
+ //@cmember Set the focus to the text window
+ virtual void TxSetFocus() = 0;
+
+ //@cmember Establish a new cursor shape
+ virtual void TxSetCursor(HCURSOR hcur, BOOL fText) = 0;
+
+ //@cmember Converts screen coordinates of a specified point to the client coordinates
+ virtual BOOL TxScreenToClient (LPPOINT lppt) = 0;
+
+ //@cmember Converts the client coordinates of a specified point to screen coordinates
+ virtual BOOL TxClientToScreen (LPPOINT lppt) = 0;
+
+ //@cmember Request host to activate text services
+ virtual HRESULT TxActivate( LONG * plOldState ) = 0;
+
+ //@cmember Request host to deactivate text services
+ virtual HRESULT TxDeactivate( LONG lNewState ) = 0;
+
+ //@cmember Retrieves the coordinates of a window's client area
+ virtual HRESULT TxGetClientRect(LPRECT prc) = 0;
+
+ //@cmember Get the view rectangle relative to the inset
+ virtual HRESULT TxGetViewInset(LPRECT prc) = 0;
+
+ //@cmember Get the default character format for the text
+ virtual HRESULT TxGetCharFormat(const CHARFORMATW **ppCF ) = 0;
+
+ //@cmember Get the default paragraph format for the text
+ virtual HRESULT TxGetParaFormat(const PARAFORMAT **ppPF) = 0;
+
+ //@cmember Get the background color for the window
+ virtual COLORREF TxGetSysColor(int nIndex) = 0;
+
+ //@cmember Get the background (either opaque or transparent)
+ virtual HRESULT TxGetBackStyle(TXTBACKSTYLE *pstyle) = 0;
+
+ //@cmember Get the maximum length for the text
+ virtual HRESULT TxGetMaxLength(DWORD *plength) = 0;
+
+ //@cmember Get the bits representing requested scroll bars for the window
+ virtual HRESULT TxGetScrollBars(DWORD *pdwScrollBar) = 0;
+
+ //@cmember Get the character to display for password input
+ virtual HRESULT TxGetPasswordChar(TCHAR *pch) = 0;
+
+ //@cmember Get the accelerator character
+ virtual HRESULT TxGetAcceleratorPos(LONG *pcp) = 0;
+
+ //@cmember Get the native size
+ virtual HRESULT TxGetExtent(LPSIZEL lpExtent) = 0;
+
+ //@cmember Notify host that default character format has changed
+ virtual HRESULT OnTxCharFormatChange (const CHARFORMATW * pcf) = 0;
+
+ //@cmember Notify host that default paragraph format has changed
+ virtual HRESULT OnTxParaFormatChange (const PARAFORMAT * ppf) = 0;
+
+ //@cmember Bulk access to bit properties
+ virtual HRESULT TxGetPropertyBits(DWORD dwMask, DWORD *pdwBits) = 0;
+
+ //@cmember Notify host of events
+ virtual HRESULT TxNotify(DWORD iNotify, void *pv) = 0;
+
+ // Far East Methods for getting the Input Context
+//#ifdef WIN95_IME
+ virtual HIMC TxImmGetContext() = 0;
+ virtual void TxImmReleaseContext( HIMC himc ) = 0;
+//#endif
+
+ //@cmember Returns HIMETRIC size of the control bar.
+ virtual HRESULT TxGetSelectionBarWidth (LONG *lSelBarWidth) = 0;
+
+#if defined(_MAC) || defined(MACPORT)
+ virtual HRESULT TxSetDragDropSvs ( void **pfnRegisterDragDrop,
+ void **pfnRevokeDragDrop,
+ void **pfnDoDragDrop) = 0;
+#endif // _MAC
+};
+
+/*
+ * class ITextHost2
+ *
+ * @class An optional extension to ITextHost which provides functionality
+ * necessary to allow TextServices to embed OLE objects
+ */
+class ITextHost2 : public ITextHost
+{
+public: //@cmember Is a double click in the message queue?
+ virtual BOOL TxIsDoubleClickPending() = 0;
+ //@cmember Get the overall window for this control
+ virtual HRESULT TxGetWindow(HWND *phwnd) = 0;
+};
+
+
+//+-----------------------------------------------------------------------
+// Factories
+//------------------------------------------------------------------------
+
+// Text Services factory
+STDAPI CreateTextServices(
+ IUnknown *punkOuter,
+ ITextHost *pITextHost,
+ IUnknown **ppUnk);
+
+typedef HRESULT (STDAPICALLTYPE * PCreateTextServices)(
+ IUnknown *punkOuter,
+ ITextHost *pITextHost,
+ IUnknown **ppUnk);
+
+#endif // _TEXTSERV_H
diff --git a/public/sdk/inc/tnef.h b/public/sdk/inc/tnef.h
new file mode 100644
index 000000000..9b791be4c
--- /dev/null
+++ b/public/sdk/inc/tnef.h
@@ -0,0 +1,371 @@
+/*
+ * T N E F . H
+ *
+ *
+ * This file contains structure and function definitions for the
+ * MAPI implementation of the Transport Neutral Encapsilation Format
+ * used by MAPI providers for the neutral serialization of a MAPI
+ * message. This implementation sits on top of the IStream object as
+ * documented in the OLE 2 Specs.
+ *
+ * Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
+ */
+
+#ifndef TNEF_H
+#define TNEF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef BEGIN_INTERFACE
+#define BEGIN_INTERFACE
+#endif
+
+/* ------------------------------------ */
+/* TNEF Problem and TNEF Problem Arrays */
+/* ------------------------------------ */
+
+typedef struct _STnefProblem
+{
+ ULONG ulComponent;
+ ULONG ulAttribute;
+ ULONG ulPropTag;
+ SCODE scode;
+} STnefProblem;
+
+typedef struct _STnefProblemArray
+{
+ ULONG cProblem;
+ STnefProblem aProblem[MAPI_DIM];
+} STnefProblemArray, FAR * LPSTnefProblemArray;
+
+#define CbNewSTnefProblemArray(_cprob) \
+ (offsetof(STnefProblemArray,aProblem) + (_cprob)*sizeof(STnefProblem))
+#define CbSTnefProblemArray(_lparray) \
+ (offsetof(STnefProblemArray,aProblem) + \
+ (UINT) ((_lparray)->cProblem*sizeof(STnefProblem)))
+
+/* Pointers to TNEF Interface ---------------------------------------- */
+
+DECLARE_MAPI_INTERFACE_PTR(ITnef, LPITNEF);
+
+/* OpenTNEFStream */
+
+#define TNEF_DECODE ((ULONG) 0)
+#define TNEF_ENCODE ((ULONG) 2)
+
+#define TNEF_PURE ((ULONG) 0x00010000)
+#define TNEF_COMPATIBILITY ((ULONG) 0x00020000)
+#define TNEF_BEST_DATA ((ULONG) 0x00040000)
+#define TNEF_COMPONENT_ENCODING ((ULONG) 0x80000000)
+
+/* AddProps, ExtractProps */
+
+#define TNEF_PROP_INCLUDE ((ULONG) 0x00000001)
+#define TNEF_PROP_EXCLUDE ((ULONG) 0x00000002)
+#define TNEF_PROP_CONTAINED ((ULONG) 0x00000004)
+#define TNEF_PROP_MESSAGE_ONLY ((ULONG) 0x00000008)
+#define TNEF_PROP_ATTACHMENTS_ONLY ((ULONG) 0x00000010)
+#define TNEF_PROP_CONTAINED_TNEF ((ULONG) 0x00000040)
+
+/* FinishComponent */
+
+#define TNEF_COMPONENT_MESSAGE ((ULONG) 0x00001000)
+#define TNEF_COMPONENT_ATTACHMENT ((ULONG) 0x00002000)
+
+#define MAPI_ITNEF_METHODS(IPURE) \
+ MAPIMETHOD(AddProps) \
+ (THIS_ ULONG ulFlags, \
+ ULONG ulElemID, \
+ LPVOID lpvData, \
+ LPSPropTagArray lpPropList) IPURE; \
+ MAPIMETHOD(ExtractProps) \
+ (THIS_ ULONG ulFlags, \
+ LPSPropTagArray lpPropList, \
+ LPSTnefProblemArray FAR * lpProblems) IPURE; \
+ MAPIMETHOD(Finish) \
+ (THIS_ ULONG ulFlags, \
+ WORD FAR * lpKey, \
+ LPSTnefProblemArray FAR * lpProblems) IPURE; \
+ MAPIMETHOD(OpenTaggedBody) \
+ (THIS_ LPMESSAGE lpMessage, \
+ ULONG ulFlags, \
+ LPSTREAM FAR * lppStream) IPURE; \
+ MAPIMETHOD(SetProps) \
+ (THIS_ ULONG ulFlags, \
+ ULONG ulElemID, \
+ ULONG cValues, \
+ LPSPropValue lpProps) IPURE; \
+ MAPIMETHOD(EncodeRecips) \
+ (THIS_ ULONG ulFlags, \
+ LPMAPITABLE lpRecipientTable) IPURE; \
+ MAPIMETHOD(FinishComponent) \
+ (THIS_ ULONG ulFlags, \
+ ULONG ulComponentID, \
+ LPSPropTagArray lpCustomPropList, \
+ LPSPropValue lpCustomProps, \
+ LPSPropTagArray lpPropList, \
+ LPSTnefProblemArray FAR * lpProblems) IPURE; \
+
+#undef INTERFACE
+#define INTERFACE ITnef
+DECLARE_MAPI_INTERFACE_(ITnef, IUnknown)
+{
+ BEGIN_INTERFACE
+ MAPI_IUNKNOWN_METHODS(PURE)
+ MAPI_ITNEF_METHODS(PURE)
+};
+
+STDMETHODIMP OpenTnefStream(
+ LPVOID lpvSupport,
+ LPSTREAM lpStream,
+ LPTSTR lpszStreamName,
+ ULONG ulFlags,
+ LPMESSAGE lpMessage,
+ WORD wKeyVal,
+ LPITNEF FAR * lppTNEF);
+
+typedef HRESULT (STDMETHODCALLTYPE FAR * LPOPENTNEFSTREAM) (
+ LPVOID lpvSupport,
+ LPSTREAM lpStream,
+ LPTSTR lpszStreamName,
+ ULONG ulFlags,
+ LPMESSAGE lpMessage,
+ WORD wKeyVal,
+ LPITNEF FAR * lppTNEF);
+
+STDMETHODIMP OpenTnefStreamEx(
+ LPVOID lpvSupport,
+ LPSTREAM lpStream,
+ LPTSTR lpszStreamName,
+ ULONG ulFlags,
+ LPMESSAGE lpMessage,
+ WORD wKeyVal,
+ LPADRBOOK lpAdressBook,
+ LPITNEF FAR * lppTNEF);
+
+typedef HRESULT (STDMETHODCALLTYPE FAR * LPOPENTNEFSTREAMEX) (
+ LPVOID lpvSupport,
+ LPSTREAM lpStream,
+ LPTSTR lpszStreamName,
+ ULONG ulFlags,
+ LPMESSAGE lpMessage,
+ WORD wKeyVal,
+ LPADRBOOK lpAdressBook,
+ LPITNEF FAR * lppTNEF);
+
+STDMETHODIMP GetTnefStreamCodepage (
+ LPSTREAM lpStream,
+ ULONG FAR * lpulCodepage,
+ ULONG FAR * lpulSubCodepage);
+
+typedef HRESULT (STDMETHODCALLTYPE FAR * LPGETTNEFSTREAMCODEPAGE) (
+ LPSTREAM lpStream,
+ ULONG FAR * lpulCodepage,
+ ULONG FAR * lpulSubCodepage);
+
+#define OPENTNEFSTREAM "OpenTnefStream"
+#define OPENTNEFSTREAMEX "OpenTnefStreamEx"
+#define GETTNEFSTREAMCODEPAGE "GetTnefStreamCodePage"
+
+/* -------------------------- */
+/* TNEF Signature and Version */
+/* -------------------------- */
+
+#define MAKE_TNEF_VERSION(_mj,_mn) (((ULONG)(0x0000FFFF & _mj) << 16) | (ULONG)(0x0000FFFF & _mn))
+#define TNEF_SIGNATURE ((ULONG) 0x223E9F78)
+#define TNEF_VERSION ((ULONG) MAKE_TNEF_VERSION(1,0))
+
+
+/* ------------------------------------------- */
+/* TNEF Down-level Attachment Types/Structures */
+/* ------------------------------------------- */
+
+typedef WORD ATYP;
+enum { atypNull, atypFile, atypOle, atypPicture, atypMax };
+
+#define MAC_BINARY ((DWORD) 0x00000001)
+
+#pragma pack (1)
+typedef struct _renddata
+{
+ ATYP atyp;
+ ULONG ulPosition;
+ WORD dxWidth;
+ WORD dyHeight;
+ DWORD dwFlags;
+
+} RENDDATA, *PRENDDATA;
+#pragma pack ()
+
+
+/* ----------------------------------- */
+/* TNEF Down-level Date/Time Structure */
+/* ----------------------------------- */
+
+#pragma pack (1)
+typedef struct _dtr
+{
+ WORD wYear;
+ WORD wMonth;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wDayOfWeek;
+
+} DTR;
+#pragma pack ()
+
+
+/* ----------------------------- */
+/* TNEF Down-level Message Flags */
+/* ----------------------------- */
+
+#define fmsNull ((BYTE) 0x00)
+#define fmsModified ((BYTE) 0x01)
+#define fmsLocal ((BYTE) 0x02)
+#define fmsSubmitted ((BYTE) 0x04)
+#define fmsRead ((BYTE) 0x20)
+#define fmsHasAttach ((BYTE) 0x80)
+
+
+/* ----------------------------------------- */
+/* TNEF Down-level Triple Address Structures */
+/* ----------------------------------------- */
+
+#define trpidNull ((WORD) 0x0000)
+#define trpidUnresolved ((WORD) 0x0001)
+#define trpidResolvedNSID ((WORD) 0x0002)
+#define trpidResolvedAddress ((WORD) 0x0003)
+#define trpidOneOff ((WORD) 0x0004)
+#define trpidGroupNSID ((WORD) 0x0005)
+#define trpidOffline ((WORD) 0x0006)
+#define trpidIgnore ((WORD) 0x0007)
+#define trpidClassEntry ((WORD) 0x0008)
+#define trpidResolvedGroupAddress ((WORD) 0x0009)
+typedef struct _trp
+{
+ WORD trpid;
+ WORD cbgrtrp;
+ WORD cch;
+ WORD cbRgb;
+
+} TRP, *PTRP, *PGRTRP, FAR * LPTRP;
+#define CbOfTrp(_p) (sizeof(TRP) + (_p)->cch + (_p)->cbRgb)
+#define LpszOfTrp(_p) ((LPSTR)(((LPTRP) (_p)) + 1))
+#define LpbOfTrp(_p) (((LPBYTE)(((LPTRP)(_p)) + 1)) + (_p)->cch)
+#define LptrpNext(_p) ((LPTRP)((LPBYTE)(_p) + CbOfTrp(_p)))
+
+typedef DWORD XTYPE;
+#define xtypeUnknown ((XTYPE) 0)
+#define xtypeInternet ((XTYPE) 6)
+
+#define cbDisplayName 41
+#define cbEmailName 11
+#define cbSeverName 12
+typedef struct _ADDR_ALIAS
+{
+ char rgchName[cbDisplayName];
+ char rgchEName[cbEmailName];
+ char rgchSrvr[cbSeverName];
+ ULONG dibDetail;
+ WORD type;
+
+} ADDRALIAS, FAR * LPADDRALIAS;
+#define cbALIAS sizeof(ALIAS)
+
+#define cbTYPE 16
+#define cbMaxIdData 200
+typedef struct _NSID
+{
+ DWORD dwSize;
+ unsigned char uchType[cbTYPE];
+ XTYPE xtype;
+ LONG lTime;
+
+ union
+ {
+ ADDRALIAS alias;
+ char rgchInterNet[1];
+
+ } address;
+
+} NSID, * LPNSID;
+#define cbNSID sizeof(NSID)
+
+
+/* -------------------------- */
+/* TNEF Down-level Priorities */
+/* -------------------------- */
+
+#define prioLow 3
+#define prioNorm 2
+#define prioHigh 1
+
+
+/* ------------------------------------- */
+/* TNEF Down-level Attributes/Properties */
+/* ------------------------------------- */
+
+#define atpTriples ((WORD) 0x0000)
+#define atpString ((WORD) 0x0001)
+#define atpText ((WORD) 0x0002)
+#define atpDate ((WORD) 0x0003)
+#define atpShort ((WORD) 0x0004)
+#define atpLong ((WORD) 0x0005)
+#define atpByte ((WORD) 0x0006)
+#define atpWord ((WORD) 0x0007)
+#define atpDword ((WORD) 0x0008)
+#define atpMax ((WORD) 0x0009)
+
+#define LVL_MESSAGE ((BYTE) 0x01)
+#define LVL_ATTACHMENT ((BYTE) 0x02)
+
+#define ATT_ID(_att) ((WORD) ((_att) & 0x0000FFFF))
+#define ATT_TYPE(_att) ((WORD) (((_att) >> 16) & 0x0000FFFF))
+#define ATT(_atp, _id) ((((DWORD) (_atp)) << 16) | ((WORD) (_id)))
+
+#define attNull ATT( 0, 0x0000)
+#define attFrom ATT( atpTriples, 0x8000) /* PR_ORIGINATOR_RETURN_ADDRESS */
+#define attSubject ATT( atpString, 0x8004) /* PR_SUBJECT */
+#define attDateSent ATT( atpDate, 0x8005) /* PR_CLIENT_SUBMIT_TIME */
+#define attDateRecd ATT( atpDate, 0x8006) /* PR_MESSAGE_DELIVERY_TIME */
+#define attMessageStatus ATT( atpByte, 0x8007) /* PR_MESSAGE_FLAGS */
+#define attMessageClass ATT( atpWord, 0x8008) /* PR_MESSAGE_CLASS */
+#define attMessageID ATT( atpString, 0x8009) /* PR_MESSAGE_ID */
+#define attParentID ATT( atpString, 0x800A) /* PR_PARENT_ID */
+#define attConversationID ATT( atpString, 0x800B) /* PR_CONVERSATION_ID */
+#define attBody ATT( atpText, 0x800C) /* PR_BODY */
+#define attPriority ATT( atpShort, 0x800D) /* PR_IMPORTANCE */
+#define attAttachData ATT( atpByte, 0x800F) /* PR_ATTACH_DATA_xxx */
+#define attAttachTitle ATT( atpString, 0x8010) /* PR_ATTACH_FILENAME */
+#define attAttachMetaFile ATT( atpByte, 0x8011) /* PR_ATTACH_RENDERING */
+#define attAttachCreateDate ATT( atpDate, 0x8012) /* PR_CREATION_TIME */
+#define attAttachModifyDate ATT( atpDate, 0x8013) /* PR_LAST_MODIFICATION_TIME */
+#define attDateModified ATT( atpDate, 0x8020) /* PR_LAST_MODIFICATION_TIME */
+#define attAttachTransportFilename ATT( atpByte, 0x9001) /* PR_ATTACH_TRANSPORT_NAME */
+#define attAttachRenddata ATT( atpByte, 0x9002)
+#define attMAPIProps ATT( atpByte, 0x9003)
+#define attRecipTable ATT( atpByte, 0x9004) /* PR_MESSAGE_RECIPIENTS */
+#define attAttachment ATT( atpByte, 0x9005)
+#define attTnefVersion ATT( atpDword, 0x9006)
+#define attOemCodepage ATT( atpByte, 0x9007)
+#define attOriginalMessageClass ATT( atpWord, 0x0006) /* PR_ORIG_MESSAGE_CLASS */
+
+#define attOwner ATT( atpByte, 0x0000) /* PR_RCVD_REPRESENTING_xxx or
+ PR_SENT_REPRESENTING_xxx */
+#define attSentFor ATT( atpByte, 0x0001) /* PR_SENT_REPRESENTING_xxx */
+#define attDelegate ATT( atpByte, 0x0002) /* PR_RCVD_REPRESENTING_xxx */
+#define attDateStart ATT( atpDate, 0x0006) /* PR_DATE_START */
+#define attDateEnd ATT( atpDate, 0x0007) /* PR_DATE_END */
+#define attAidOwner ATT( atpLong, 0x0008) /* PR_OWNER_APPT_ID */
+#define attRequestRes ATT( atpShort, 0x0009) /* PR_RESPONSE_REQUESTED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* defined TNEF_H */
diff --git a/public/sdk/inc/tom.h b/public/sdk/inc/tom.h
new file mode 100644
index 000000000..bd0c0be10
--- /dev/null
+++ b/public/sdk/inc/tom.h
@@ -0,0 +1,694 @@
+/* This header file machine-generated by mktyplib.exe */
+/* Interface to type library: tom */
+
+#ifndef _tom_H_
+#define _tom_H_
+
+DEFINE_GUID(LIBID_tom,0x8CC497C9L,0xA1DF,0x11CE,0x80,0x98,0x00,0xAA,0x00,0x47,0xBE,0x5D);
+
+interface ITextSelection;
+
+interface ITextRange;
+
+interface ITextFont;
+
+interface ITextPara;
+
+interface ITextStoryRanges;
+
+interface IEnumRange;
+
+typedef enum {
+ tomFalse = 0,
+ tomTrue = -1,
+ tomUndefined = -9999999,
+ tomToggle = -9999998,
+ tomAutoColor = -9999997,
+ tomDefault = -9999996,
+ tomBackward = -1073741825,
+ tomForward = 1073741823,
+ tomMove = 0,
+ tomExtend = 1,
+ tomNoSelection = 0,
+ tomSelectionIP = 1,
+ tomSelectionNormal = 2,
+ tomSelectionObject = 3,
+ tomSelectionFrame = 4,
+ tomSelectionColumn = 5,
+ tomSelectionRow = 6,
+ tomSelectionBlock = 7,
+ tomSelectionPicture = 8,
+ tomSelectionShape = 9,
+ tomSelStartActive = 1,
+ tomSelAtEOL = 2,
+ tomSelOvertype = 4,
+ tomSelActive = 8,
+ tomSelReplace = 16,
+ tomEnd = 0,
+ tomStart = 32,
+ tomNone = 0,
+ tomSingle = 1,
+ tomWords = 2,
+ tomDouble = 3,
+ tomDotted = 4,
+ tomLineSpaceSingle = 0,
+ tomLineSpace1pt5 = 1,
+ tomLineSpaceDouble = 2,
+ tomLineSpaceAtLeast = 3,
+ tomLineSpaceExactly = 4,
+ tomLineSpaceMultiple = 5,
+ tomAlignLeft = 0,
+ tomAlignCenter = 1,
+ tomAlignRight = 2,
+ tomAlignJustify = 3,
+ tomAlignDecimal = 3,
+ tomAlignBar = 4,
+ tomSpaces = 0,
+ tomDots = 1,
+ tomDashes = 2,
+ tomLines = 3,
+ tomTabBack = -3,
+ tomTabNext = -2,
+ tomTabHere = -1,
+ tomListNone = 0,
+ tomListBullet = 1,
+ tomListNumberAsArabic = 2,
+ tomListNumberAsLCLetter = 3,
+ tomListNumberAsUCLetter = 4,
+ tomListNumberAsLCRoman = 5,
+ tomListNumberAsUCRoman = 6,
+ tomListNumberAsSequence = 7,
+ tomListParentheses = 65536,
+ tomListPeriod = 131072,
+ tomListPlain = 196608,
+ tomCharacter = 1,
+ tomWord = 2,
+ tomSentence = 3,
+ tomParagraph = 4,
+ tomLine = 5,
+ tomStory = 6,
+ tomScreen = 7,
+ tomSection = 8,
+ tomColumn = 9,
+ tomRow = 10,
+ tomWindow = 11,
+ tomCell = 12,
+ tomCharFormat = 13,
+ tomParaFormat = 14,
+ tomTable = 15,
+ tomObject = 16,
+ tomMatchWord = 2,
+ tomMatchCase = 4,
+ tomMatchPattern = 8,
+ tomUnknownStory = 0,
+ tomMainTextStory = 1,
+ tomFootnotesStory = 2,
+ tomEndnotesStory = 3,
+ tomCommentsStory = 4,
+ tomHeadersStory = 5,
+ tomFootersStory = 6,
+ tomTextboxStory = 7,
+ tomNoAnimation = 0,
+ tomBlinkingText = 1,
+ tomBlinkingBackground = 2,
+ tomSparkleText = 3,
+ tomBlackMarchingAnts = 4,
+ tomRedMarchingAnts = 5,
+ tomWipeDown = 6,
+ tomWipeRight = 7,
+ tomLasVegasLights = 8,
+ tomFadeOut = 9,
+ tomShimmer = 10,
+ tomScrollRight = 11,
+ tomScrollDown = 12,
+ tomMeltingText = 13,
+ tomShrinkingText = 14,
+ tomSquish = 15,
+ tomWave = 16,
+ tomFlameText = 17,
+ tomBlinkingColors = 18,
+ tomSentenceCase = 0,
+ tomLowerCase = 1,
+ tomUpperCase = 2,
+ tomTitleCase = 3,
+ tomToggleCase = 4,
+ tomReadOnly = 256,
+ tomShareDenyRead = 512,
+ tomShareDenyWrite = 1024,
+ tomPasteFile = 4096,
+ tomCreateNew = 16,
+ tomCreateAlways = 32,
+ tomOpenExisting = 48,
+ tomOpenAlways = 64,
+ tomTruncateExisting = 80,
+ tomRTF = 1,
+ tomText = 2,
+ tomHTML = 3,
+ tomWordDocument = 4
+} tomConstants;
+
+DEFINE_GUID(IID_ITextDocument,0x8CC497C0L,0xA1DF,0x11CE,0x80,0x98,0x00,0xAA,0x00,0x47,0xBE,0x5D);
+
+/* Definition of interface: ITextDocument */
+#undef INTERFACE
+#define INTERFACE ITextDocument
+
+DECLARE_INTERFACE_(ITextDocument, IDispatch)
+{
+#ifndef NO_BASEINTERFACE_FUNCS
+
+ /* IUnknown methods */
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ /* IDispatch methods */
+ STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;
+
+ STDMETHOD(GetTypeInfo)(
+ THIS_
+ UINT itinfo,
+ LCID lcid,
+ ITypeInfo FAR* FAR* pptinfo) PURE;
+
+ STDMETHOD(GetIDsOfNames)(
+ THIS_
+ REFIID riid,
+ OLECHAR FAR* FAR* rgszNames,
+ UINT cNames,
+ LCID lcid,
+ DISPID FAR* rgdispid) PURE;
+
+ STDMETHOD(Invoke)(
+ THIS_
+ DISPID dispidMember,
+ REFIID riid,
+ LCID lcid,
+ WORD wFlags,
+ DISPPARAMS FAR* pdispparams,
+ VARIANT FAR* pvarResult,
+ EXCEPINFO FAR* pexcepinfo,
+ UINT FAR* puArgErr) PURE;
+#endif
+
+ /* ITextDocument methods */
+ STDMETHOD(GetName)(THIS_ BSTR FAR* pName) PURE;
+ STDMETHOD(GetSelection)(THIS_ ITextSelection FAR* FAR* ppSel) PURE;
+ STDMETHOD(GetStoryCount)(THIS_ long FAR* pCount) PURE;
+ STDMETHOD(GetStoryRanges)(THIS_ ITextStoryRanges FAR* FAR* ppStories) PURE;
+ STDMETHOD(GetSaved)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetSaved)(THIS_ long Value) PURE;
+ STDMETHOD(GetDefaultTabStop)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(SetDefaultTabStop)(THIS_ float Value) PURE;
+ STDMETHOD(New)(THIS) PURE;
+ STDMETHOD(Open)(THIS_ VARIANT FAR* pVar, long Flags, long CodePage) PURE;
+ STDMETHOD(Save)(THIS_ VARIANT FAR* pVar, long Flags, long CodePage) PURE;
+ STDMETHOD(Freeze)(THIS_ long FAR* pCount) PURE;
+ STDMETHOD(Unfreeze)(THIS_ long FAR* pCount) PURE;
+ STDMETHOD(BeginEditCollection)(THIS) PURE;
+ STDMETHOD(EndEditCollection)(THIS) PURE;
+ STDMETHOD(Undo)(THIS_ long Count, long FAR* prop) PURE;
+ STDMETHOD(Redo)(THIS_ long Count, long FAR* prop) PURE;
+ STDMETHOD(Range)(THIS_ long cp1, long cp2, ITextRange FAR* FAR* ppRange) PURE;
+ STDMETHOD(RangeFromPoint)(THIS_ long x, long y, ITextRange FAR* FAR* ppRange) PURE;
+};
+
+DEFINE_GUID(IID_ITextRange,0x8CC497C2L,0xA1DF,0x11CE,0x80,0x98,0x00,0xAA,0x00,0x47,0xBE,0x5D);
+
+/* Definition of interface: ITextRange */
+#undef INTERFACE
+#define INTERFACE ITextRange
+
+DECLARE_INTERFACE_(ITextRange, IDispatch)
+{
+#ifndef NO_BASEINTERFACE_FUNCS
+
+ /* IUnknown methods */
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ /* IDispatch methods */
+ STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;
+
+ STDMETHOD(GetTypeInfo)(
+ THIS_
+ UINT itinfo,
+ LCID lcid,
+ ITypeInfo FAR* FAR* pptinfo) PURE;
+
+ STDMETHOD(GetIDsOfNames)(
+ THIS_
+ REFIID riid,
+ OLECHAR FAR* FAR* rgszNames,
+ UINT cNames,
+ LCID lcid,
+ DISPID FAR* rgdispid) PURE;
+
+ STDMETHOD(Invoke)(
+ THIS_
+ DISPID dispidMember,
+ REFIID riid,
+ LCID lcid,
+ WORD wFlags,
+ DISPPARAMS FAR* pdispparams,
+ VARIANT FAR* pvarResult,
+ EXCEPINFO FAR* pexcepinfo,
+ UINT FAR* puArgErr) PURE;
+#endif
+
+ /* ITextRange methods */
+ STDMETHOD(GetText)(THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(SetText)(THIS_ BSTR bstr) PURE;
+ STDMETHOD(GetChar)(THIS_ long FAR* pch) PURE;
+ STDMETHOD(SetChar)(THIS_ long ch) PURE;
+ STDMETHOD(GetDuplicate)(THIS_ ITextRange FAR* FAR* ppRange) PURE;
+ STDMETHOD(GetFormattedText)(THIS_ ITextRange FAR* FAR* ppRange) PURE;
+ STDMETHOD(SetFormattedText)(THIS_ ITextRange FAR* pRange) PURE;
+ STDMETHOD(GetStart)(THIS_ long FAR* pcpFirst) PURE;
+ STDMETHOD(SetStart)(THIS_ long cpFirst) PURE;
+ STDMETHOD(GetEnd)(THIS_ long FAR* pcpLim) PURE;
+ STDMETHOD(SetEnd)(THIS_ long cpLim) PURE;
+ STDMETHOD(GetFont)(THIS_ ITextFont FAR* FAR* pFont) PURE;
+ STDMETHOD(SetFont)(THIS_ ITextFont FAR* pFont) PURE;
+ STDMETHOD(GetPara)(THIS_ ITextPara FAR* FAR* pPara) PURE;
+ STDMETHOD(SetPara)(THIS_ ITextPara FAR* pPara) PURE;
+ STDMETHOD(GetStoryLength)(THIS_ long FAR* pcch) PURE;
+ STDMETHOD(GetStoryType)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(Collapse)(THIS_ long bStart) PURE;
+ STDMETHOD(Expand)(THIS_ long Unit, long FAR* pDelta) PURE;
+ STDMETHOD(GetIndex)(THIS_ long Unit, long FAR* pIndex) PURE;
+ STDMETHOD(SetIndex)(THIS_ long Unit, long Index, long Extend) PURE;
+ STDMETHOD(SetRange)(THIS_ long cpActive, long cpOther) PURE;
+ STDMETHOD(InRange)(THIS_ ITextRange FAR* pRange, long FAR* pb) PURE;
+ STDMETHOD(InStory)(THIS_ ITextRange FAR* pRange, long FAR* pb) PURE;
+ STDMETHOD(IsEqual)(THIS_ ITextRange FAR* pRange, long FAR* pb) PURE;
+ STDMETHOD(Select)(THIS) PURE;
+ STDMETHOD(StartOf)(THIS_ long Unit, long Extend, long FAR* pDelta) PURE;
+ STDMETHOD(EndOf)(THIS_ long Unit, long Extend, long FAR* pDelta) PURE;
+ STDMETHOD(Move)(THIS_ long Unit, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveStart)(THIS_ long Unit, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveEnd)(THIS_ long Unit, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveWhile)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveStartWhile)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveEndWhile)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveUntil)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveStartUntil)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveEndUntil)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(FindText)(THIS_ BSTR bstr, long cch, long Flags, long FAR* pLength) PURE;
+ STDMETHOD(FindTextStart)(THIS_ BSTR bstr, long cch, long Flags, long FAR* pLength) PURE;
+ STDMETHOD(FindTextEnd)(THIS_ BSTR bstr, long cch, long Flags, long FAR* pLength) PURE;
+ STDMETHOD(Delete)(THIS_ long Unit, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(Cut)(THIS_ VARIANT FAR* pVar) PURE;
+ STDMETHOD(Copy)(THIS_ VARIANT FAR* pVar) PURE;
+ STDMETHOD(Paste)(THIS_ VARIANT FAR* pVar, long Format) PURE;
+ STDMETHOD(CanPaste)(THIS_ VARIANT FAR* pVar, long Format, long FAR* pb) PURE;
+ STDMETHOD(CanEdit)(THIS_ long FAR* pbCanEdit) PURE;
+ STDMETHOD(ChangeCase)(THIS_ long Type) PURE;
+ STDMETHOD(GetPoint)(THIS_ long Type, long FAR* px, long FAR* py) PURE;
+ STDMETHOD(SetPoint)(THIS_ long x, long y, long Type, long Extend) PURE;
+ STDMETHOD(ScrollIntoView)(THIS_ long Value) PURE;
+ STDMETHOD(GetEmbeddedObject)(THIS_ IUnknown * FAR* ppv) PURE;
+};
+
+DEFINE_GUID(IID_ITextSelection,0x8CC497C1L,0xA1DF,0x11CE,0x80,0x98,0x00,0xAA,0x00,0x47,0xBE,0x5D);
+
+/* Definition of interface: ITextSelection */
+#undef INTERFACE
+#define INTERFACE ITextSelection
+
+DECLARE_INTERFACE_(ITextSelection, ITextRange)
+{
+#ifndef NO_BASEINTERFACE_FUNCS
+
+ /* IUnknown methods */
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ /* IDispatch methods */
+ STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;
+
+ STDMETHOD(GetTypeInfo)(
+ THIS_
+ UINT itinfo,
+ LCID lcid,
+ ITypeInfo FAR* FAR* pptinfo) PURE;
+
+ STDMETHOD(GetIDsOfNames)(
+ THIS_
+ REFIID riid,
+ OLECHAR FAR* FAR* rgszNames,
+ UINT cNames,
+ LCID lcid,
+ DISPID FAR* rgdispid) PURE;
+
+ STDMETHOD(Invoke)(
+ THIS_
+ DISPID dispidMember,
+ REFIID riid,
+ LCID lcid,
+ WORD wFlags,
+ DISPPARAMS FAR* pdispparams,
+ VARIANT FAR* pvarResult,
+ EXCEPINFO FAR* pexcepinfo,
+ UINT FAR* puArgErr) PURE;
+
+ /* ITextRange methods */
+ STDMETHOD(GetText)(THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(SetText)(THIS_ BSTR bstr) PURE;
+ STDMETHOD(GetChar)(THIS_ long FAR* pch) PURE;
+ STDMETHOD(SetChar)(THIS_ long ch) PURE;
+ STDMETHOD(GetDuplicate)(THIS_ ITextRange FAR* FAR* ppRange) PURE;
+ STDMETHOD(GetFormattedText)(THIS_ ITextRange FAR* FAR* ppRange) PURE;
+ STDMETHOD(SetFormattedText)(THIS_ ITextRange FAR* pRange) PURE;
+ STDMETHOD(GetStart)(THIS_ long FAR* pcpFirst) PURE;
+ STDMETHOD(SetStart)(THIS_ long cpFirst) PURE;
+ STDMETHOD(GetEnd)(THIS_ long FAR* pcpLim) PURE;
+ STDMETHOD(SetEnd)(THIS_ long cpLim) PURE;
+ STDMETHOD(GetFont)(THIS_ ITextFont FAR* FAR* pFont) PURE;
+ STDMETHOD(SetFont)(THIS_ ITextFont FAR* pFont) PURE;
+ STDMETHOD(GetPara)(THIS_ ITextPara FAR* FAR* pPara) PURE;
+ STDMETHOD(SetPara)(THIS_ ITextPara FAR* pPara) PURE;
+ STDMETHOD(GetStoryLength)(THIS_ long FAR* pcch) PURE;
+ STDMETHOD(GetStoryType)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(Collapse)(THIS_ long bStart) PURE;
+ STDMETHOD(Expand)(THIS_ long Unit, long FAR* pDelta) PURE;
+ STDMETHOD(GetIndex)(THIS_ long Unit, long FAR* pIndex) PURE;
+ STDMETHOD(SetIndex)(THIS_ long Unit, long Index, long Extend) PURE;
+ STDMETHOD(SetRange)(THIS_ long cpActive, long cpOther) PURE;
+ STDMETHOD(InRange)(THIS_ ITextRange FAR* pRange, long FAR* pb) PURE;
+ STDMETHOD(InStory)(THIS_ ITextRange FAR* pRange, long FAR* pb) PURE;
+ STDMETHOD(IsEqual)(THIS_ ITextRange FAR* pRange, long FAR* pb) PURE;
+ STDMETHOD(Select)(THIS) PURE;
+ STDMETHOD(StartOf)(THIS_ long Unit, long Extend, long FAR* pDelta) PURE;
+ STDMETHOD(EndOf)(THIS_ long Unit, long Extend, long FAR* pDelta) PURE;
+ STDMETHOD(Move)(THIS_ long Unit, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveStart)(THIS_ long Unit, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveEnd)(THIS_ long Unit, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveWhile)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveStartWhile)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveEndWhile)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveUntil)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveStartUntil)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(MoveEndUntil)(THIS_ VARIANT FAR* Cset, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(FindText)(THIS_ BSTR bstr, long cch, long Flags, long FAR* pLength) PURE;
+ STDMETHOD(FindTextStart)(THIS_ BSTR bstr, long cch, long Flags, long FAR* pLength) PURE;
+ STDMETHOD(FindTextEnd)(THIS_ BSTR bstr, long cch, long Flags, long FAR* pLength) PURE;
+ STDMETHOD(Delete)(THIS_ long Unit, long Count, long FAR* pDelta) PURE;
+ STDMETHOD(Cut)(THIS_ VARIANT FAR* pVar) PURE;
+ STDMETHOD(Copy)(THIS_ VARIANT FAR* pVar) PURE;
+ STDMETHOD(Paste)(THIS_ VARIANT FAR* pVar, long Format) PURE;
+ STDMETHOD(CanPaste)(THIS_ VARIANT FAR* pVar, long Format, long FAR* pb) PURE;
+ STDMETHOD(CanEdit)(THIS_ long FAR* pbCanEdit) PURE;
+ STDMETHOD(ChangeCase)(THIS_ long Type) PURE;
+ STDMETHOD(GetPoint)(THIS_ long Type, long FAR* px, long FAR* py) PURE;
+ STDMETHOD(SetPoint)(THIS_ long x, long y, long Type, long Extend) PURE;
+ STDMETHOD(ScrollIntoView)(THIS_ long Value) PURE;
+ STDMETHOD(GetEmbeddedObject)(THIS_ IUnknown * FAR* ppv) PURE;
+#endif
+
+ /* ITextSelection methods */
+ STDMETHOD(GetFlags)(THIS_ long FAR* pFlags) PURE;
+ STDMETHOD(SetFlags)(THIS_ long Flags) PURE;
+ STDMETHOD(GetType)(THIS_ long FAR* pType) PURE;
+ STDMETHOD(MoveLeft)(THIS_ long Unit, long Count, long Extend, long FAR* pDelta) PURE;
+ STDMETHOD(MoveRight)(THIS_ long Unit, long Count, long Extend, long FAR* pDelta) PURE;
+ STDMETHOD(MoveUp)(THIS_ long Unit, long Count, long Extend, long FAR* pDelta) PURE;
+ STDMETHOD(MoveDown)(THIS_ long Unit, long Count, long Extend, long FAR* pDelta) PURE;
+ STDMETHOD(HomeKey)(THIS_ long Unit, long Extend, long FAR* pDelta) PURE;
+ STDMETHOD(EndKey)(THIS_ long Unit, long Extend, long FAR* pDelta) PURE;
+ STDMETHOD(TypeText)(THIS_ BSTR bstr) PURE;
+};
+
+DEFINE_GUID(IID_ITextFont,0x8CC497C3L,0xA1DF,0x11CE,0x80,0x98,0x00,0xAA,0x00,0x47,0xBE,0x5D);
+
+/* Definition of interface: ITextFont */
+#undef INTERFACE
+#define INTERFACE ITextFont
+
+DECLARE_INTERFACE_(ITextFont, IDispatch)
+{
+#ifndef NO_BASEINTERFACE_FUNCS
+
+ /* IUnknown methods */
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ /* IDispatch methods */
+ STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;
+
+ STDMETHOD(GetTypeInfo)(
+ THIS_
+ UINT itinfo,
+ LCID lcid,
+ ITypeInfo FAR* FAR* pptinfo) PURE;
+
+ STDMETHOD(GetIDsOfNames)(
+ THIS_
+ REFIID riid,
+ OLECHAR FAR* FAR* rgszNames,
+ UINT cNames,
+ LCID lcid,
+ DISPID FAR* rgdispid) PURE;
+
+ STDMETHOD(Invoke)(
+ THIS_
+ DISPID dispidMember,
+ REFIID riid,
+ LCID lcid,
+ WORD wFlags,
+ DISPPARAMS FAR* pdispparams,
+ VARIANT FAR* pvarResult,
+ EXCEPINFO FAR* pexcepinfo,
+ UINT FAR* puArgErr) PURE;
+#endif
+
+ /* ITextFont methods */
+ STDMETHOD(GetDuplicate)(THIS_ ITextFont FAR* FAR* ppFont) PURE;
+ STDMETHOD(SetDuplicate)(THIS_ ITextFont FAR* pFont) PURE;
+ STDMETHOD(CanChange)(THIS_ long FAR* pB) PURE;
+ STDMETHOD(IsEqual)(THIS_ ITextFont FAR* pFont, long FAR* pB) PURE;
+ STDMETHOD(Reset)(THIS_ long Value) PURE;
+ STDMETHOD(GetStyle)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetStyle)(THIS_ long Value) PURE;
+ STDMETHOD(GetAllCaps)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetAllCaps)(THIS_ long Value) PURE;
+ STDMETHOD(GetAnimation)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetAnimation)(THIS_ long Value) PURE;
+ STDMETHOD(GetBackColor)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetBackColor)(THIS_ long Value) PURE;
+ STDMETHOD(GetBold)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetBold)(THIS_ long Value) PURE;
+ STDMETHOD(GetEmboss)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetEmboss)(THIS_ long Value) PURE;
+ STDMETHOD(GetForeColor)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetForeColor)(THIS_ long Value) PURE;
+ STDMETHOD(GetHidden)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetHidden)(THIS_ long Value) PURE;
+ STDMETHOD(GetImprint)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetImprint)(THIS_ long Value) PURE;
+ STDMETHOD(GetItalic)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetItalic)(THIS_ long Value) PURE;
+ STDMETHOD(GetKerning)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(SetKerning)(THIS_ float Value) PURE;
+ STDMETHOD(GetLanguageID)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetLanguageID)(THIS_ long Value) PURE;
+ STDMETHOD(GetName)(THIS_ BSTR FAR* pbstr) PURE;
+ STDMETHOD(SetName)(THIS_ BSTR bstr) PURE;
+ STDMETHOD(GetOutline)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetOutline)(THIS_ long Value) PURE;
+ STDMETHOD(GetPosition)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(SetPosition)(THIS_ float Value) PURE;
+ STDMETHOD(GetProtected)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetProtected)(THIS_ long Value) PURE;
+ STDMETHOD(GetShadow)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetShadow)(THIS_ long Value) PURE;
+ STDMETHOD(GetSize)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(SetSize)(THIS_ float Value) PURE;
+ STDMETHOD(GetSmallCaps)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetSmallCaps)(THIS_ long Value) PURE;
+ STDMETHOD(GetSpacing)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(SetSpacing)(THIS_ float Value) PURE;
+ STDMETHOD(GetStrikeThrough)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetStrikeThrough)(THIS_ long Value) PURE;
+ STDMETHOD(GetSubscript)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetSubscript)(THIS_ long Value) PURE;
+ STDMETHOD(GetSuperscript)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetSuperscript)(THIS_ long Value) PURE;
+ STDMETHOD(GetUnderline)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetUnderline)(THIS_ long Value) PURE;
+ STDMETHOD(GetWeight)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetWeight)(THIS_ long Value) PURE;
+};
+
+DEFINE_GUID(IID_ITextPara,0x8CC497C4L,0xA1DF,0x11CE,0x80,0x98,0x00,0xAA,0x00,0x47,0xBE,0x5D);
+
+/* Definition of interface: ITextPara */
+#undef INTERFACE
+#define INTERFACE ITextPara
+
+DECLARE_INTERFACE_(ITextPara, IDispatch)
+{
+#ifndef NO_BASEINTERFACE_FUNCS
+
+ /* IUnknown methods */
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ /* IDispatch methods */
+ STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;
+
+ STDMETHOD(GetTypeInfo)(
+ THIS_
+ UINT itinfo,
+ LCID lcid,
+ ITypeInfo FAR* FAR* pptinfo) PURE;
+
+ STDMETHOD(GetIDsOfNames)(
+ THIS_
+ REFIID riid,
+ OLECHAR FAR* FAR* rgszNames,
+ UINT cNames,
+ LCID lcid,
+ DISPID FAR* rgdispid) PURE;
+
+ STDMETHOD(Invoke)(
+ THIS_
+ DISPID dispidMember,
+ REFIID riid,
+ LCID lcid,
+ WORD wFlags,
+ DISPPARAMS FAR* pdispparams,
+ VARIANT FAR* pvarResult,
+ EXCEPINFO FAR* pexcepinfo,
+ UINT FAR* puArgErr) PURE;
+#endif
+
+ /* ITextPara methods */
+ STDMETHOD(GetDuplicate)(THIS_ ITextPara FAR* FAR* ppPara) PURE;
+ STDMETHOD(SetDuplicate)(THIS_ ITextPara FAR* pPara) PURE;
+ STDMETHOD(CanChange)(THIS_ long FAR* pB) PURE;
+ STDMETHOD(IsEqual)(THIS_ ITextPara FAR* pPara, long FAR* pB) PURE;
+ STDMETHOD(Reset)(THIS_ long Value) PURE;
+ STDMETHOD(GetStyle)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetStyle)(THIS_ long Value) PURE;
+ STDMETHOD(GetAlignment)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetAlignment)(THIS_ long Value) PURE;
+ STDMETHOD(GetDoNotHyphen)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetDoNotHyphen)(THIS_ long Value) PURE;
+ STDMETHOD(GetFirstIndent)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(GetKeepTogether)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetKeepTogether)(THIS_ long Value) PURE;
+ STDMETHOD(GetKeepWithNext)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetKeepWithNext)(THIS_ long Value) PURE;
+ STDMETHOD(GetLeftIndent)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(GetLineSpacing)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(GetLineSpacingRule)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(GetListAlignment)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetListAlignment)(THIS_ long Value) PURE;
+ STDMETHOD(GetListLevelIndex)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetListLevelIndex)(THIS_ long Value) PURE;
+ STDMETHOD(GetListStart)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetListStart)(THIS_ long Value) PURE;
+ STDMETHOD(GetListTab)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(SetListTab)(THIS_ float Value) PURE;
+ STDMETHOD(GetListType)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetListType)(THIS_ long Value) PURE;
+ STDMETHOD(GetNoLineNumber)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetNoLineNumber)(THIS_ long Value) PURE;
+ STDMETHOD(GetPageBreakBefore)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetPageBreakBefore)(THIS_ long Value) PURE;
+ STDMETHOD(GetRightIndent)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(SetRightIndent)(THIS_ float Value) PURE;
+ STDMETHOD(SetIndents)(THIS_ float StartIndent, float LeftIndent, float RightIndent) PURE;
+ STDMETHOD(SetLineSpacing)(THIS_ long LineSpacingRule, float LineSpacing) PURE;
+ STDMETHOD(GetSpaceAfter)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(SetSpaceAfter)(THIS_ float Value) PURE;
+ STDMETHOD(GetSpaceBefore)(THIS_ float FAR* pValue) PURE;
+ STDMETHOD(SetSpaceBefore)(THIS_ float Value) PURE;
+ STDMETHOD(GetWidowControl)(THIS_ long FAR* pValue) PURE;
+ STDMETHOD(SetWidowControl)(THIS_ long Value) PURE;
+ STDMETHOD(GetTabCount)(THIS_ long FAR* pCount) PURE;
+ STDMETHOD(AddTab)(THIS_ float tbPos, long tbAlign, long tbLeader) PURE;
+ STDMETHOD(ClearAllTabs)(THIS) PURE;
+ STDMETHOD(DeleteTab)(THIS_ float tbPos) PURE;
+ STDMETHOD(GetTab)(THIS_ long iTab, float FAR* ptbPos, long FAR* ptbAlign, long FAR* ptbLeader) PURE;
+};
+
+DEFINE_GUID(IID_ITextStoryRanges,0x8CC497C5L,0xA1DF,0x11CE,0x80,0x98,0x00,0xAA,0x00,0x47,0xBE,0x5D);
+
+/* Definition of interface: ITextStoryRanges */
+#undef INTERFACE
+#define INTERFACE ITextStoryRanges
+
+DECLARE_INTERFACE_(ITextStoryRanges, IDispatch)
+{
+#ifndef NO_BASEINTERFACE_FUNCS
+
+ /* IUnknown methods */
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ /* IDispatch methods */
+ STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;
+
+ STDMETHOD(GetTypeInfo)(
+ THIS_
+ UINT itinfo,
+ LCID lcid,
+ ITypeInfo FAR* FAR* pptinfo) PURE;
+
+ STDMETHOD(GetIDsOfNames)(
+ THIS_
+ REFIID riid,
+ OLECHAR FAR* FAR* rgszNames,
+ UINT cNames,
+ LCID lcid,
+ DISPID FAR* rgdispid) PURE;
+
+ STDMETHOD(Invoke)(
+ THIS_
+ DISPID dispidMember,
+ REFIID riid,
+ LCID lcid,
+ WORD wFlags,
+ DISPPARAMS FAR* pdispparams,
+ VARIANT FAR* pvarResult,
+ EXCEPINFO FAR* pexcepinfo,
+ UINT FAR* puArgErr) PURE;
+#endif
+
+ /* ITextStoryRanges methods */
+ STDMETHOD(_NewEnum)(THIS_ IEnumRange FAR* FAR* ppEnum) PURE;
+ STDMETHOD(Item)(THIS_ long Index, ITextRange FAR* FAR* ppRange) PURE;
+ STDMETHOD(GetCount)(THIS_ long FAR* pCount) PURE;
+};
+
+DEFINE_GUID(IID_IEnumRange,0x8CC497C6L,0xA1DF,0x11CE,0x80,0x98,0x00,0xAA,0x00,0x47,0xBE,0x5D);
+
+/* Definition of interface: IEnumRange */
+#undef INTERFACE
+#define INTERFACE IEnumRange
+
+DECLARE_INTERFACE_(IEnumRange, IUnknown)
+{
+#ifndef NO_BASEINTERFACE_FUNCS
+
+ /* IUnknown methods */
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+ /* IEnumRange methods */
+ STDMETHOD(Next)(THIS_ long cRange, ITextRange FAR* FAR* ppRange, long FAR* pcRangeFetched) PURE;
+ STDMETHOD(Skip)(THIS_ long cRange) PURE;
+ STDMETHOD(Reset)(THIS) PURE;
+ STDMETHOD(Clone)(THIS_ IEnumRange FAR* FAR* ppEnum) PURE;
+};
+
+#endif
diff --git a/public/sdk/inc/transact.h b/public/sdk/inc/transact.h
new file mode 100644
index 000000000..fb0d9d89c
--- /dev/null
+++ b/public/sdk/inc/transact.h
@@ -0,0 +1,3981 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:42:29 1996
+ */
+/* Compiler settings for transact.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __transact_h__
+#define __transact_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ITransaction_FWD_DEFINED__
+#define __ITransaction_FWD_DEFINED__
+typedef interface ITransaction ITransaction;
+#endif /* __ITransaction_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionNested_FWD_DEFINED__
+#define __ITransactionNested_FWD_DEFINED__
+typedef interface ITransactionNested ITransactionNested;
+#endif /* __ITransactionNested_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionDispenser_FWD_DEFINED__
+#define __ITransactionDispenser_FWD_DEFINED__
+typedef interface ITransactionDispenser ITransactionDispenser;
+#endif /* __ITransactionDispenser_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionDispenserAdmin_FWD_DEFINED__
+#define __ITransactionDispenserAdmin_FWD_DEFINED__
+typedef interface ITransactionDispenserAdmin ITransactionDispenserAdmin;
+#endif /* __ITransactionDispenserAdmin_FWD_DEFINED__ */
+
+
+#ifndef __IEnumTransaction_FWD_DEFINED__
+#define __IEnumTransaction_FWD_DEFINED__
+typedef interface IEnumTransaction IEnumTransaction;
+#endif /* __IEnumTransaction_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionAdmin_FWD_DEFINED__
+#define __ITransactionAdmin_FWD_DEFINED__
+typedef interface ITransactionAdmin ITransactionAdmin;
+#endif /* __ITransactionAdmin_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionControl_FWD_DEFINED__
+#define __ITransactionControl_FWD_DEFINED__
+typedef interface ITransactionControl ITransactionControl;
+#endif /* __ITransactionControl_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionAdjustEvents_FWD_DEFINED__
+#define __ITransactionAdjustEvents_FWD_DEFINED__
+typedef interface ITransactionAdjustEvents ITransactionAdjustEvents;
+#endif /* __ITransactionAdjustEvents_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionVetoEvents_FWD_DEFINED__
+#define __ITransactionVetoEvents_FWD_DEFINED__
+typedef interface ITransactionVetoEvents ITransactionVetoEvents;
+#endif /* __ITransactionVetoEvents_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionOutcomeEvents_FWD_DEFINED__
+#define __ITransactionOutcomeEvents_FWD_DEFINED__
+typedef interface ITransactionOutcomeEvents ITransactionOutcomeEvents;
+#endif /* __ITransactionOutcomeEvents_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionCompletionEvents_FWD_DEFINED__
+#define __ITransactionCompletionEvents_FWD_DEFINED__
+typedef interface ITransactionCompletionEvents ITransactionCompletionEvents;
+#endif /* __ITransactionCompletionEvents_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionCoordinator_FWD_DEFINED__
+#define __ITransactionCoordinator_FWD_DEFINED__
+typedef interface ITransactionCoordinator ITransactionCoordinator;
+#endif /* __ITransactionCoordinator_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionResourceRecover_FWD_DEFINED__
+#define __ITransactionResourceRecover_FWD_DEFINED__
+typedef interface ITransactionResourceRecover ITransactionResourceRecover;
+#endif /* __ITransactionResourceRecover_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionResourceManagement_FWD_DEFINED__
+#define __ITransactionResourceManagement_FWD_DEFINED__
+typedef interface ITransactionResourceManagement ITransactionResourceManagement;
+#endif /* __ITransactionResourceManagement_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionResource_FWD_DEFINED__
+#define __ITransactionResource_FWD_DEFINED__
+typedef interface ITransactionResource ITransactionResource;
+#endif /* __ITransactionResource_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionResourceAsync_FWD_DEFINED__
+#define __ITransactionResourceAsync_FWD_DEFINED__
+typedef interface ITransactionResourceAsync ITransactionResourceAsync;
+#endif /* __ITransactionResourceAsync_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionEnlistmentRecover_FWD_DEFINED__
+#define __ITransactionEnlistmentRecover_FWD_DEFINED__
+typedef interface ITransactionEnlistmentRecover ITransactionEnlistmentRecover;
+#endif /* __ITransactionEnlistmentRecover_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionEnlistment_FWD_DEFINED__
+#define __ITransactionEnlistment_FWD_DEFINED__
+typedef interface ITransactionEnlistment ITransactionEnlistment;
+#endif /* __ITransactionEnlistment_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionEnlistmentAsync_FWD_DEFINED__
+#define __ITransactionEnlistmentAsync_FWD_DEFINED__
+typedef interface ITransactionEnlistmentAsync ITransactionEnlistmentAsync;
+#endif /* __ITransactionEnlistmentAsync_FWD_DEFINED__ */
+
+
+#ifndef __IEnumXACTRE_FWD_DEFINED__
+#define __IEnumXACTRE_FWD_DEFINED__
+typedef interface IEnumXACTRE IEnumXACTRE;
+#endif /* __IEnumXACTRE_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionInProgressEvents_FWD_DEFINED__
+#define __ITransactionInProgressEvents_FWD_DEFINED__
+typedef interface ITransactionInProgressEvents ITransactionInProgressEvents;
+#endif /* __ITransactionInProgressEvents_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionExportFactory_FWD_DEFINED__
+#define __ITransactionExportFactory_FWD_DEFINED__
+typedef interface ITransactionExportFactory ITransactionExportFactory;
+#endif /* __ITransactionExportFactory_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionImportWhereabouts_FWD_DEFINED__
+#define __ITransactionImportWhereabouts_FWD_DEFINED__
+typedef interface ITransactionImportWhereabouts ITransactionImportWhereabouts;
+#endif /* __ITransactionImportWhereabouts_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionExport_FWD_DEFINED__
+#define __ITransactionExport_FWD_DEFINED__
+typedef interface ITransactionExport ITransactionExport;
+#endif /* __ITransactionExport_FWD_DEFINED__ */
+
+
+#ifndef __ITransactionImport_FWD_DEFINED__
+#define __ITransactionImport_FWD_DEFINED__
+typedef interface ITransactionImport ITransactionImport;
+#endif /* __ITransactionImport_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "unknwn.h"
+#include "objidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __BasicTransactionTypes_INTERFACE_DEFINED__
+#define __BasicTransactionTypes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: BasicTransactionTypes
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][local] */
+
+
+typedef struct BOID
+ {
+ BYTE rgb[ 16 ];
+ } BOID;
+
+#define BOID_NULL (*((BOID*)(&IID_NULL)))
+typedef BOID XACTUOW;
+
+typedef LONG ISOLEVEL;
+
+#if defined(_WIN32)
+typedef
+enum ISOLATIONLEVEL
+ { ISOLATIONLEVEL_UNSPECIFIED = 0xffffffff,
+ ISOLATIONLEVEL_CHAOS = 0x10,
+ ISOLATIONLEVEL_READUNCOMMITTED = 0x100,
+ ISOLATIONLEVEL_BROWSE = 0x100,
+ ISOLATIONLEVEL_CURSORSTABILITY = 0x1000,
+ ISOLATIONLEVEL_READCOMMITTED = 0x1000,
+ ISOLATIONLEVEL_REPEATABLEREAD = 0x10000,
+ ISOLATIONLEVEL_SERIALIZABLE = 0x100000,
+ ISOLATIONLEVEL_ISOLATED = 0x100000
+ } ISOLATIONLEVEL;
+
+#else
+#define ISOLATIONLEVEL_UNSPECIFIED 0xFFFFFFFF
+#define ISOLATIONLEVEL_CHAOS 0x00000010
+#define ISOLATIONLEVEL_READUNCOMMITTED 0x00000100
+#define ISOLATIONLEVEL_BROWSE 0x00000100
+#define ISOLATIONLEVEL_CURSORSTABILITY 0x00001000
+#define ISOLATIONLEVEL_READCOMMITTED 0x00001000
+#define ISOLATIONLEVEL_REPEATABLEREAD 0x00010000
+#define ISOLATIONLEVEL_SERIALIZABLE 0x00100000
+#define ISOLATIONLEVEL_ISOLATED 0x00100000
+#endif
+typedef struct XACTTRANSINFO
+ {
+ XACTUOW uow;
+ ISOLEVEL isoLevel;
+ ULONG isoFlags;
+ DWORD grfTCSupported;
+ DWORD grfRMSupported;
+ DWORD grfTCSupportedRetaining;
+ DWORD grfRMSupportedRetaining;
+ } XACTTRANSINFO;
+
+typedef struct XACTSTATS
+ {
+ ULONG cOpen;
+ ULONG cCommitting;
+ ULONG cCommitted;
+ ULONG cAborting;
+ ULONG cAborted;
+ ULONG cInDoubt;
+ ULONG cHeuristicDecision;
+ FILETIME timeTransactionsUp;
+ } XACTSTATS;
+
+typedef
+enum ISOFLAG
+ { ISOFLAG_RETAIN_COMMIT_DC = 1,
+ ISOFLAG_RETAIN_COMMIT = 2,
+ ISOFLAG_RETAIN_COMMIT_NO = 3,
+ ISOFLAG_RETAIN_ABORT_DC = 4,
+ ISOFLAG_RETAIN_ABORT = 8,
+ ISOFLAG_RETAIN_ABORT_NO = 12,
+ ISOFLAG_RETAIN_DONTCARE = ISOFLAG_RETAIN_COMMIT_DC | ISOFLAG_RETAIN_ABORT_DC,
+ ISOFLAG_RETAIN_BOTH = ISOFLAG_RETAIN_COMMIT | ISOFLAG_RETAIN_ABORT,
+ ISOFLAG_RETAIN_NONE = ISOFLAG_RETAIN_COMMIT_NO | ISOFLAG_RETAIN_ABORT_NO,
+ ISOFLAG_OPTIMISTIC = 16
+ } ISOFLAG;
+
+typedef
+enum XACTTC
+ { XACTTC_DONTAUTOABORT = 1,
+ XACTTC_TRYALLRESOURCES = 2,
+ XACTTC_ASYNC = 4,
+ XACTTC_SYNC_PHASEONE = 8,
+ XACTTC_SYNC_PHASETWO = 16,
+ XACTTC_SYNC = 16,
+ XACTTC_ASYNCPHASEONE = 128,
+ XACTTC_ASYNCPHASETWO = 256
+ } XACTTC;
+
+typedef
+enum XACTRM
+ { XACTRM_OPTIMISTICLASTWINS = 1,
+ XACTRM_NOREADONLYPREPARES = 2
+ } XACTRM;
+
+typedef
+enum XACTCONST
+ { XACTCONST_TIMEOUTINFINITE = 0
+ } XACTCONST;
+
+typedef
+enum XACTHEURISTIC
+ { XACTHEURISTIC_ABORT = 1,
+ XACTHEURISTIC_COMMIT = 2,
+ XACTHEURISTIC_DAMAGE = 3,
+ XACTHEURISTIC_DANGER = 4
+ } XACTHEURISTIC;
+
+#if defined(_WIN32)
+typedef
+enum XACTSTAT
+ { XACTSTAT_NONE = 0,
+ XACTSTAT_OPENNORMAL = 0x1,
+ XACTSTAT_OPENREFUSED = 0x2,
+ XACTSTAT_PREPARING = 0x4,
+ XACTSTAT_PREPARED = 0x8,
+ XACTSTAT_PREPARERETAINING = 0x10,
+ XACTSTAT_PREPARERETAINED = 0x20,
+ XACTSTAT_COMMITTING = 0x40,
+ XACTSTAT_COMMITRETAINING = 0x80,
+ XACTSTAT_ABORTING = 0x100,
+ XACTSTAT_ABORTED = 0x200,
+ XACTSTAT_COMMITTED = 0x400,
+ XACTSTAT_HEURISTIC_ABORT = 0x800,
+ XACTSTAT_HEURISTIC_COMMIT = 0x1000,
+ XACTSTAT_HEURISTIC_DAMAGE = 0x2000,
+ XACTSTAT_HEURISTIC_DANGER = 0x4000,
+ XACTSTAT_FORCED_ABORT = 0x8000,
+ XACTSTAT_FORCED_COMMIT = 0x10000,
+ XACTSTAT_INDOUBT = 0x20000,
+ XACTSTAT_CLOSED = 0x40000,
+ XACTSTAT_OPEN = 0x3,
+ XACTSTAT_NOTPREPARED = 0x7ffc3,
+ XACTSTAT_ALL = 0x7ffff
+ } XACTSTAT;
+
+#else
+#define XACTSTAT_NONE 0x00000000
+#define XACTSTAT_OPENNORMAL 0x00000001
+#define XACTSTAT_OPENREFUSED 0x00000002
+#define XACTSTAT_PREPARING 0x00000004
+#define XACTSTAT_PREPARED 0x00000008
+#define XACTSTAT_PREPARERETAINING 0x00000010
+#define XACTSTAT_PREPARERETAINED 0x00000020
+#define XACTSTAT_COMMITTING 0x00000040
+#define XACTSTAT_COMMITRETAINING 0x00000080
+#define XACTSTAT_ABORTING 0x00000100
+#define XACTSTAT_ABORTED 0x00000200
+#define XACTSTAT_COMMITTED 0x00000400
+#define XACTSTAT_HEURISTIC_ABORT 0x00000800
+#define XACTSTAT_HEURISTIC_COMMIT 0x00001000
+#define XACTSTAT_HEURISTIC_DAMAGE 0x00002000
+#define XACTSTAT_HEURISTIC_DANGER 0x00004000
+#define XACTSTAT_FORCED_ABORT 0x00008000
+#define XACTSTAT_FORCED_COMMIT 0x00010000
+#define XACTSTAT_INDOUBT 0x00020000
+#define XACTSTAT_CLOSED 0x00040000
+#define XACTSTAT_OPEN 0x00000003
+#define XACTSTAT_NOTPREPARED 0x0007FFC3
+#define XACTSTAT_ALL 0x0007FFFF
+#endif
+
+
+extern RPC_IF_HANDLE BasicTransactionTypes_v0_0_c_ifspec;
+extern RPC_IF_HANDLE BasicTransactionTypes_v0_0_s_ifspec;
+#endif /* __BasicTransactionTypes_INTERFACE_DEFINED__ */
+
+#ifndef __ITransaction_INTERFACE_DEFINED__
+#define __ITransaction_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransaction
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransaction;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransaction : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Commit(
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ DWORD grfTC,
+ /* [in] */ DWORD grfRM) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Abort(
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ BOOL fAsync) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetTransactionInfo(
+ /* [out] */ XACTTRANSINFO __RPC_FAR *pinfo) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransaction __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransaction __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransaction __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ ITransaction __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ DWORD grfTC,
+ /* [in] */ DWORD grfRM);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Abort )(
+ ITransaction __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ BOOL fAsync);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTransactionInfo )(
+ ITransaction __RPC_FAR * This,
+ /* [out] */ XACTTRANSINFO __RPC_FAR *pinfo);
+
+ END_INTERFACE
+ } ITransactionVtbl;
+
+ interface ITransaction
+ {
+ CONST_VTBL struct ITransactionVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransaction_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransaction_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransaction_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransaction_Commit(This,fRetaining,grfTC,grfRM) \
+ (This)->lpVtbl -> Commit(This,fRetaining,grfTC,grfRM)
+
+#define ITransaction_Abort(This,pboidReason,fRetaining,fAsync) \
+ (This)->lpVtbl -> Abort(This,pboidReason,fRetaining,fAsync)
+
+#define ITransaction_GetTransactionInfo(This,pinfo) \
+ (This)->lpVtbl -> GetTransactionInfo(This,pinfo)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransaction_Commit_Proxy(
+ ITransaction __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ DWORD grfTC,
+ /* [in] */ DWORD grfRM);
+
+
+void __RPC_STUB ITransaction_Commit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransaction_Abort_Proxy(
+ ITransaction __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ BOOL fAsync);
+
+
+void __RPC_STUB ITransaction_Abort_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransaction_GetTransactionInfo_Proxy(
+ ITransaction __RPC_FAR * This,
+ /* [out] */ XACTTRANSINFO __RPC_FAR *pinfo);
+
+
+void __RPC_STUB ITransaction_GetTransactionInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransaction_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionNested_INTERFACE_DEFINED__
+#define __ITransactionNested_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionNested
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionNested;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionNested : public ITransaction
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetParent(
+ /* [in] */ REFIID iid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvParent) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionNestedVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionNested __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionNested __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionNested __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ ITransactionNested __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ DWORD grfTC,
+ /* [in] */ DWORD grfRM);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Abort )(
+ ITransactionNested __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ BOOL fAsync);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTransactionInfo )(
+ ITransactionNested __RPC_FAR * This,
+ /* [out] */ XACTTRANSINFO __RPC_FAR *pinfo);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetParent )(
+ ITransactionNested __RPC_FAR * This,
+ /* [in] */ REFIID iid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvParent);
+
+ END_INTERFACE
+ } ITransactionNestedVtbl;
+
+ interface ITransactionNested
+ {
+ CONST_VTBL struct ITransactionNestedVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionNested_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionNested_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionNested_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionNested_Commit(This,fRetaining,grfTC,grfRM) \
+ (This)->lpVtbl -> Commit(This,fRetaining,grfTC,grfRM)
+
+#define ITransactionNested_Abort(This,pboidReason,fRetaining,fAsync) \
+ (This)->lpVtbl -> Abort(This,pboidReason,fRetaining,fAsync)
+
+#define ITransactionNested_GetTransactionInfo(This,pinfo) \
+ (This)->lpVtbl -> GetTransactionInfo(This,pinfo)
+
+
+#define ITransactionNested_GetParent(This,iid,ppvParent) \
+ (This)->lpVtbl -> GetParent(This,iid,ppvParent)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionNested_GetParent_Proxy(
+ ITransactionNested __RPC_FAR * This,
+ /* [in] */ REFIID iid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvParent);
+
+
+void __RPC_STUB ITransactionNested_GetParent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionNested_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionDispenser_INTERFACE_DEFINED__
+#define __ITransactionDispenser_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionDispenser
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionDispenser;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionDispenser : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE BeginTransaction(
+ /* [in] */ IUnknown __RPC_FAR *punkOuter,
+ /* [in] */ ISOLEVEL isoLevel,
+ /* [in] */ ULONG isoFlags,
+ /* [in] */ ULONG ulTimeout,
+ /* [in] */ IUnknown __RPC_FAR *punkTransactionCoord,
+ /* [out] */ ITransaction __RPC_FAR *__RPC_FAR *ppTransaction) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionDispenserVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionDispenser __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionDispenser __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionDispenser __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BeginTransaction )(
+ ITransactionDispenser __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *punkOuter,
+ /* [in] */ ISOLEVEL isoLevel,
+ /* [in] */ ULONG isoFlags,
+ /* [in] */ ULONG ulTimeout,
+ /* [in] */ IUnknown __RPC_FAR *punkTransactionCoord,
+ /* [out] */ ITransaction __RPC_FAR *__RPC_FAR *ppTransaction);
+
+ END_INTERFACE
+ } ITransactionDispenserVtbl;
+
+ interface ITransactionDispenser
+ {
+ CONST_VTBL struct ITransactionDispenserVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionDispenser_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionDispenser_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionDispenser_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionDispenser_BeginTransaction(This,punkOuter,isoLevel,isoFlags,ulTimeout,punkTransactionCoord,ppTransaction) \
+ (This)->lpVtbl -> BeginTransaction(This,punkOuter,isoLevel,isoFlags,ulTimeout,punkTransactionCoord,ppTransaction)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionDispenser_BeginTransaction_Proxy(
+ ITransactionDispenser __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *punkOuter,
+ /* [in] */ ISOLEVEL isoLevel,
+ /* [in] */ ULONG isoFlags,
+ /* [in] */ ULONG ulTimeout,
+ /* [in] */ IUnknown __RPC_FAR *punkTransactionCoord,
+ /* [out] */ ITransaction __RPC_FAR *__RPC_FAR *ppTransaction);
+
+
+void __RPC_STUB ITransactionDispenser_BeginTransaction_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionDispenser_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionDispenserAdmin_INTERFACE_DEFINED__
+#define __ITransactionDispenserAdmin_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionDispenserAdmin
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionDispenserAdmin;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionDispenserAdmin : public ITransactionDispenser
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE EnumTransactions(
+ /* [out] */ IEnumTransaction __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetStatistics(
+ /* [out] */ XACTSTATS __RPC_FAR *pStatistics) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionDispenserAdminVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionDispenserAdmin __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionDispenserAdmin __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionDispenserAdmin __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BeginTransaction )(
+ ITransactionDispenserAdmin __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *punkOuter,
+ /* [in] */ ISOLEVEL isoLevel,
+ /* [in] */ ULONG isoFlags,
+ /* [in] */ ULONG ulTimeout,
+ /* [in] */ IUnknown __RPC_FAR *punkTransactionCoord,
+ /* [out] */ ITransaction __RPC_FAR *__RPC_FAR *ppTransaction);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumTransactions )(
+ ITransactionDispenserAdmin __RPC_FAR * This,
+ /* [out] */ IEnumTransaction __RPC_FAR *__RPC_FAR *ppenum);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetStatistics )(
+ ITransactionDispenserAdmin __RPC_FAR * This,
+ /* [out] */ XACTSTATS __RPC_FAR *pStatistics);
+
+ END_INTERFACE
+ } ITransactionDispenserAdminVtbl;
+
+ interface ITransactionDispenserAdmin
+ {
+ CONST_VTBL struct ITransactionDispenserAdminVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionDispenserAdmin_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionDispenserAdmin_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionDispenserAdmin_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionDispenserAdmin_BeginTransaction(This,punkOuter,isoLevel,isoFlags,ulTimeout,punkTransactionCoord,ppTransaction) \
+ (This)->lpVtbl -> BeginTransaction(This,punkOuter,isoLevel,isoFlags,ulTimeout,punkTransactionCoord,ppTransaction)
+
+
+#define ITransactionDispenserAdmin_EnumTransactions(This,ppenum) \
+ (This)->lpVtbl -> EnumTransactions(This,ppenum)
+
+#define ITransactionDispenserAdmin_GetStatistics(This,pStatistics) \
+ (This)->lpVtbl -> GetStatistics(This,pStatistics)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionDispenserAdmin_EnumTransactions_Proxy(
+ ITransactionDispenserAdmin __RPC_FAR * This,
+ /* [out] */ IEnumTransaction __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB ITransactionDispenserAdmin_EnumTransactions_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionDispenserAdmin_GetStatistics_Proxy(
+ ITransactionDispenserAdmin __RPC_FAR * This,
+ /* [out] */ XACTSTATS __RPC_FAR *pStatistics);
+
+
+void __RPC_STUB ITransactionDispenserAdmin_GetStatistics_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionDispenserAdmin_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumTransaction_INTERFACE_DEFINED__
+#define __IEnumTransaction_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumTransaction
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IEnumTransaction;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumTransaction : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [out] */ ITransaction __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumTransaction __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumTransactionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumTransaction __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumTransaction __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumTransaction __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumTransaction __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [out] */ ITransaction __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumTransaction __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumTransaction __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumTransaction __RPC_FAR * This,
+ /* [out] */ IEnumTransaction __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumTransactionVtbl;
+
+ interface IEnumTransaction
+ {
+ CONST_VTBL struct IEnumTransactionVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumTransaction_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumTransaction_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumTransaction_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumTransaction_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumTransaction_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumTransaction_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumTransaction_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumTransaction_RemoteNext_Proxy(
+ IEnumTransaction __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ ITransaction __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumTransaction_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumTransaction_Skip_Proxy(
+ IEnumTransaction __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumTransaction_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumTransaction_Reset_Proxy(
+ IEnumTransaction __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumTransaction_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumTransaction_Clone_Proxy(
+ IEnumTransaction __RPC_FAR * This,
+ /* [out] */ IEnumTransaction __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumTransaction_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumTransaction_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionAdmin_INTERFACE_DEFINED__
+#define __ITransactionAdmin_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionAdmin
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionAdmin;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionAdmin : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ForceCommit( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ForceAbort( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDescription(
+ /* [in] */ LCID lcid,
+ /* [in] */ LPWSTR pswzDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDescription(
+ /* [in] */ LCID lcid,
+ /* [out] */ LPWSTR __RPC_FAR *ppswzDescription) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionAdminVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionAdmin __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionAdmin __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionAdmin __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ForceCommit )(
+ ITransactionAdmin __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ForceAbort )(
+ ITransactionAdmin __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetDescription )(
+ ITransactionAdmin __RPC_FAR * This,
+ /* [in] */ LCID lcid,
+ /* [in] */ LPWSTR pswzDescription);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDescription )(
+ ITransactionAdmin __RPC_FAR * This,
+ /* [in] */ LCID lcid,
+ /* [out] */ LPWSTR __RPC_FAR *ppswzDescription);
+
+ END_INTERFACE
+ } ITransactionAdminVtbl;
+
+ interface ITransactionAdmin
+ {
+ CONST_VTBL struct ITransactionAdminVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionAdmin_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionAdmin_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionAdmin_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionAdmin_ForceCommit(This) \
+ (This)->lpVtbl -> ForceCommit(This)
+
+#define ITransactionAdmin_ForceAbort(This) \
+ (This)->lpVtbl -> ForceAbort(This)
+
+#define ITransactionAdmin_SetDescription(This,lcid,pswzDescription) \
+ (This)->lpVtbl -> SetDescription(This,lcid,pswzDescription)
+
+#define ITransactionAdmin_GetDescription(This,lcid,ppswzDescription) \
+ (This)->lpVtbl -> GetDescription(This,lcid,ppswzDescription)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionAdmin_ForceCommit_Proxy(
+ ITransactionAdmin __RPC_FAR * This);
+
+
+void __RPC_STUB ITransactionAdmin_ForceCommit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionAdmin_ForceAbort_Proxy(
+ ITransactionAdmin __RPC_FAR * This);
+
+
+void __RPC_STUB ITransactionAdmin_ForceAbort_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionAdmin_SetDescription_Proxy(
+ ITransactionAdmin __RPC_FAR * This,
+ /* [in] */ LCID lcid,
+ /* [in] */ LPWSTR pswzDescription);
+
+
+void __RPC_STUB ITransactionAdmin_SetDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionAdmin_GetDescription_Proxy(
+ ITransactionAdmin __RPC_FAR * This,
+ /* [in] */ LCID lcid,
+ /* [out] */ LPWSTR __RPC_FAR *ppswzDescription);
+
+
+void __RPC_STUB ITransactionAdmin_GetDescription_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionAdmin_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionControl_INTERFACE_DEFINED__
+#define __ITransactionControl_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionControl
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionControl;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionControl : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetStatus(
+ /* [out] */ DWORD __RPC_FAR *pdwStatus) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTimeout(
+ /* [in] */ ULONG ulTimeout) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PreventCommit(
+ /* [in] */ BOOL fPrevent) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionControlVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionControl __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionControl __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionControl __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetStatus )(
+ ITransactionControl __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetTimeout )(
+ ITransactionControl __RPC_FAR * This,
+ /* [in] */ ULONG ulTimeout);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PreventCommit )(
+ ITransactionControl __RPC_FAR * This,
+ /* [in] */ BOOL fPrevent);
+
+ END_INTERFACE
+ } ITransactionControlVtbl;
+
+ interface ITransactionControl
+ {
+ CONST_VTBL struct ITransactionControlVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionControl_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionControl_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionControl_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionControl_GetStatus(This,pdwStatus) \
+ (This)->lpVtbl -> GetStatus(This,pdwStatus)
+
+#define ITransactionControl_SetTimeout(This,ulTimeout) \
+ (This)->lpVtbl -> SetTimeout(This,ulTimeout)
+
+#define ITransactionControl_PreventCommit(This,fPrevent) \
+ (This)->lpVtbl -> PreventCommit(This,fPrevent)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionControl_GetStatus_Proxy(
+ ITransactionControl __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *pdwStatus);
+
+
+void __RPC_STUB ITransactionControl_GetStatus_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionControl_SetTimeout_Proxy(
+ ITransactionControl __RPC_FAR * This,
+ /* [in] */ ULONG ulTimeout);
+
+
+void __RPC_STUB ITransactionControl_SetTimeout_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionControl_PreventCommit_Proxy(
+ ITransactionControl __RPC_FAR * This,
+ /* [in] */ BOOL fPrevent);
+
+
+void __RPC_STUB ITransactionControl_PreventCommit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionControl_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionAdjustEvents_INTERFACE_DEFINED__
+#define __ITransactionAdjustEvents_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionAdjustEvents
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionAdjustEvents;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionAdjustEvents : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnPrePrepareAdjust(
+ /* [in] */ BOOL fRetaining) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionAdjustEventsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionAdjustEvents __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionAdjustEvents __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionAdjustEvents __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnPrePrepareAdjust )(
+ ITransactionAdjustEvents __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining);
+
+ END_INTERFACE
+ } ITransactionAdjustEventsVtbl;
+
+ interface ITransactionAdjustEvents
+ {
+ CONST_VTBL struct ITransactionAdjustEventsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionAdjustEvents_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionAdjustEvents_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionAdjustEvents_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionAdjustEvents_OnPrePrepareAdjust(This,fRetaining) \
+ (This)->lpVtbl -> OnPrePrepareAdjust(This,fRetaining)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionAdjustEvents_OnPrePrepareAdjust_Proxy(
+ ITransactionAdjustEvents __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining);
+
+
+void __RPC_STUB ITransactionAdjustEvents_OnPrePrepareAdjust_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionAdjustEvents_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionVetoEvents_INTERFACE_DEFINED__
+#define __ITransactionVetoEvents_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionVetoEvents
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionVetoEvents;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionVetoEvents : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnPrePrepare(
+ /* [in] */ BOOL fRetaining) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionVetoEventsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionVetoEvents __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionVetoEvents __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionVetoEvents __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnPrePrepare )(
+ ITransactionVetoEvents __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining);
+
+ END_INTERFACE
+ } ITransactionVetoEventsVtbl;
+
+ interface ITransactionVetoEvents
+ {
+ CONST_VTBL struct ITransactionVetoEventsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionVetoEvents_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionVetoEvents_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionVetoEvents_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionVetoEvents_OnPrePrepare(This,fRetaining) \
+ (This)->lpVtbl -> OnPrePrepare(This,fRetaining)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionVetoEvents_OnPrePrepare_Proxy(
+ ITransactionVetoEvents __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining);
+
+
+void __RPC_STUB ITransactionVetoEvents_OnPrePrepare_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionVetoEvents_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionOutcomeEvents_INTERFACE_DEFINED__
+#define __ITransactionOutcomeEvents_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionOutcomeEvents
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionOutcomeEvents;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionOutcomeEvents : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnCommit(
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnAbort(
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnHeuristicDecision(
+ /* [in] */ DWORD dwDecision,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ HRESULT hr) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionOutcomeEventsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionOutcomeEvents __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionOutcomeEvents __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionOutcomeEvents __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnCommit )(
+ ITransactionOutcomeEvents __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnAbort )(
+ ITransactionOutcomeEvents __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnHeuristicDecision )(
+ ITransactionOutcomeEvents __RPC_FAR * This,
+ /* [in] */ DWORD dwDecision,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ HRESULT hr);
+
+ END_INTERFACE
+ } ITransactionOutcomeEventsVtbl;
+
+ interface ITransactionOutcomeEvents
+ {
+ CONST_VTBL struct ITransactionOutcomeEventsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionOutcomeEvents_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionOutcomeEvents_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionOutcomeEvents_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionOutcomeEvents_OnCommit(This,fRetaining,pNewUOW,hr) \
+ (This)->lpVtbl -> OnCommit(This,fRetaining,pNewUOW,hr)
+
+#define ITransactionOutcomeEvents_OnAbort(This,pboidReason,fRetaining,pNewUOW,hr) \
+ (This)->lpVtbl -> OnAbort(This,pboidReason,fRetaining,pNewUOW,hr)
+
+#define ITransactionOutcomeEvents_OnHeuristicDecision(This,dwDecision,pboidReason,hr) \
+ (This)->lpVtbl -> OnHeuristicDecision(This,dwDecision,pboidReason,hr)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionOutcomeEvents_OnCommit_Proxy(
+ ITransactionOutcomeEvents __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr);
+
+
+void __RPC_STUB ITransactionOutcomeEvents_OnCommit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionOutcomeEvents_OnAbort_Proxy(
+ ITransactionOutcomeEvents __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr);
+
+
+void __RPC_STUB ITransactionOutcomeEvents_OnAbort_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionOutcomeEvents_OnHeuristicDecision_Proxy(
+ ITransactionOutcomeEvents __RPC_FAR * This,
+ /* [in] */ DWORD dwDecision,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ HRESULT hr);
+
+
+void __RPC_STUB ITransactionOutcomeEvents_OnHeuristicDecision_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionOutcomeEvents_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionCompletionEvents_INTERFACE_DEFINED__
+#define __ITransactionCompletionEvents_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionCompletionEvents
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionCompletionEvents;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionCompletionEvents : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnCommit(
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnAbort(
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnHeuristicDecision(
+ /* [in] */ DWORD dwDecision,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ HRESULT hr) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionCompletionEventsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionCompletionEvents __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionCompletionEvents __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionCompletionEvents __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnCommit )(
+ ITransactionCompletionEvents __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnAbort )(
+ ITransactionCompletionEvents __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnHeuristicDecision )(
+ ITransactionCompletionEvents __RPC_FAR * This,
+ /* [in] */ DWORD dwDecision,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ HRESULT hr);
+
+ END_INTERFACE
+ } ITransactionCompletionEventsVtbl;
+
+ interface ITransactionCompletionEvents
+ {
+ CONST_VTBL struct ITransactionCompletionEventsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionCompletionEvents_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionCompletionEvents_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionCompletionEvents_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionCompletionEvents_OnCommit(This,fRetaining,pNewUOW,hr) \
+ (This)->lpVtbl -> OnCommit(This,fRetaining,pNewUOW,hr)
+
+#define ITransactionCompletionEvents_OnAbort(This,pboidReason,fRetaining,pNewUOW,hr) \
+ (This)->lpVtbl -> OnAbort(This,pboidReason,fRetaining,pNewUOW,hr)
+
+#define ITransactionCompletionEvents_OnHeuristicDecision(This,dwDecision,pboidReason,hr) \
+ (This)->lpVtbl -> OnHeuristicDecision(This,dwDecision,pboidReason,hr)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionCompletionEvents_OnCommit_Proxy(
+ ITransactionCompletionEvents __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr);
+
+
+void __RPC_STUB ITransactionCompletionEvents_OnCommit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionCompletionEvents_OnAbort_Proxy(
+ ITransactionCompletionEvents __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW,
+ /* [in] */ HRESULT hr);
+
+
+void __RPC_STUB ITransactionCompletionEvents_OnAbort_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionCompletionEvents_OnHeuristicDecision_Proxy(
+ ITransactionCompletionEvents __RPC_FAR * This,
+ /* [in] */ DWORD dwDecision,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ HRESULT hr);
+
+
+void __RPC_STUB ITransactionCompletionEvents_OnHeuristicDecision_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionCompletionEvents_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0017
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0017_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0017_v0_0_s_ifspec;
+
+#ifndef __TransactionCoordinationTypes_INTERFACE_DEFINED__
+#define __TransactionCoordinationTypes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: TransactionCoordinationTypes
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][local] */
+
+
+typedef BOID XACTRMGRID;
+
+typedef
+enum XACTTCRMENLIST
+ { XACTTCRMENLIST_IAMACTIVE = 1,
+ XACTTCRMENLIST_YOUBEACTIVE = 2
+ } XACTTCRMENLIST;
+
+typedef
+enum XACTRMTC
+ { XACTRMTC_CANBEACTIVE = 1,
+ XACTRMTC_CANNOTRACE = 2
+ } XACTRMTC;
+
+typedef struct XACTRE
+ {
+ IUnknown __RPC_FAR *pResource;
+ ULONG type;
+ ULONG status;
+ DWORD grfRMTC;
+ XACTRMGRID rmgrid;
+ BOID boidRefusedReason;
+ } XACTRE;
+
+typedef
+enum XACTRETY
+ { XACTRETY_ONEPHASE = 1,
+ XACTRETY_TWOPHASE = 2,
+ XACTRETY_THREEPHASE = 3
+ } XACTRETY;
+
+
+
+extern RPC_IF_HANDLE TransactionCoordinationTypes_v0_0_c_ifspec;
+extern RPC_IF_HANDLE TransactionCoordinationTypes_v0_0_s_ifspec;
+#endif /* __TransactionCoordinationTypes_INTERFACE_DEFINED__ */
+
+#ifndef __ITransactionCoordinator_INTERFACE_DEFINED__
+#define __ITransactionCoordinator_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionCoordinator
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionCoordinator;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionCoordinator : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Enlist(
+ /* [in] */ IUnknown __RPC_FAR *pResource,
+ /* [in] */ DWORD grfRMTC,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid,
+ /* [in] */ XACTTRANSINFO __RPC_FAR *pinfo,
+ /* [in] */ DWORD __RPC_FAR *pgrfTCRMENLIST,
+ /* [out] */ ITransactionEnlistment __RPC_FAR *__RPC_FAR *ppEnlist) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnlistSinglePhase(
+ /* [in] */ ITransaction __RPC_FAR *pResource,
+ /* [in] */ DWORD grfRMTC,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid,
+ /* [in] */ XACTTRANSINFO __RPC_FAR *pinfo,
+ /* [out] */ DWORD __RPC_FAR *pgrfTCRMENLIST,
+ /* [out] */ ITransactionEnlistment __RPC_FAR *__RPC_FAR *ppEnlist) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumResources(
+ /* [out] */ IEnumXACTRE __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionCoordinatorVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionCoordinator __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionCoordinator __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionCoordinator __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Enlist )(
+ ITransactionCoordinator __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pResource,
+ /* [in] */ DWORD grfRMTC,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid,
+ /* [in] */ XACTTRANSINFO __RPC_FAR *pinfo,
+ /* [in] */ DWORD __RPC_FAR *pgrfTCRMENLIST,
+ /* [out] */ ITransactionEnlistment __RPC_FAR *__RPC_FAR *ppEnlist);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnlistSinglePhase )(
+ ITransactionCoordinator __RPC_FAR * This,
+ /* [in] */ ITransaction __RPC_FAR *pResource,
+ /* [in] */ DWORD grfRMTC,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid,
+ /* [in] */ XACTTRANSINFO __RPC_FAR *pinfo,
+ /* [out] */ DWORD __RPC_FAR *pgrfTCRMENLIST,
+ /* [out] */ ITransactionEnlistment __RPC_FAR *__RPC_FAR *ppEnlist);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EnumResources )(
+ ITransactionCoordinator __RPC_FAR * This,
+ /* [out] */ IEnumXACTRE __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } ITransactionCoordinatorVtbl;
+
+ interface ITransactionCoordinator
+ {
+ CONST_VTBL struct ITransactionCoordinatorVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionCoordinator_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionCoordinator_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionCoordinator_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionCoordinator_Enlist(This,pResource,grfRMTC,prmgrid,pinfo,pgrfTCRMENLIST,ppEnlist) \
+ (This)->lpVtbl -> Enlist(This,pResource,grfRMTC,prmgrid,pinfo,pgrfTCRMENLIST,ppEnlist)
+
+#define ITransactionCoordinator_EnlistSinglePhase(This,pResource,grfRMTC,prmgrid,pinfo,pgrfTCRMENLIST,ppEnlist) \
+ (This)->lpVtbl -> EnlistSinglePhase(This,pResource,grfRMTC,prmgrid,pinfo,pgrfTCRMENLIST,ppEnlist)
+
+#define ITransactionCoordinator_EnumResources(This,ppenum) \
+ (This)->lpVtbl -> EnumResources(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionCoordinator_Enlist_Proxy(
+ ITransactionCoordinator __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *pResource,
+ /* [in] */ DWORD grfRMTC,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid,
+ /* [in] */ XACTTRANSINFO __RPC_FAR *pinfo,
+ /* [in] */ DWORD __RPC_FAR *pgrfTCRMENLIST,
+ /* [out] */ ITransactionEnlistment __RPC_FAR *__RPC_FAR *ppEnlist);
+
+
+void __RPC_STUB ITransactionCoordinator_Enlist_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionCoordinator_EnlistSinglePhase_Proxy(
+ ITransactionCoordinator __RPC_FAR * This,
+ /* [in] */ ITransaction __RPC_FAR *pResource,
+ /* [in] */ DWORD grfRMTC,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid,
+ /* [in] */ XACTTRANSINFO __RPC_FAR *pinfo,
+ /* [out] */ DWORD __RPC_FAR *pgrfTCRMENLIST,
+ /* [out] */ ITransactionEnlistment __RPC_FAR *__RPC_FAR *ppEnlist);
+
+
+void __RPC_STUB ITransactionCoordinator_EnlistSinglePhase_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionCoordinator_EnumResources_Proxy(
+ ITransactionCoordinator __RPC_FAR * This,
+ /* [out] */ IEnumXACTRE __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB ITransactionCoordinator_EnumResources_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionCoordinator_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionResourceRecover_INTERFACE_DEFINED__
+#define __ITransactionResourceRecover_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionResourceRecover
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionResourceRecover;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionResourceRecover : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReEnlist(
+ /* [in] */ ITransactionCoordinator __RPC_FAR *pEnlistment,
+ /* [in] */ XACTUOW __RPC_FAR *pUOWCur) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionResourceRecoverVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionResourceRecover __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionResourceRecover __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionResourceRecover __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMoniker )(
+ ITransactionResourceRecover __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReEnlist )(
+ ITransactionResourceRecover __RPC_FAR * This,
+ /* [in] */ ITransactionCoordinator __RPC_FAR *pEnlistment,
+ /* [in] */ XACTUOW __RPC_FAR *pUOWCur);
+
+ END_INTERFACE
+ } ITransactionResourceRecoverVtbl;
+
+ interface ITransactionResourceRecover
+ {
+ CONST_VTBL struct ITransactionResourceRecoverVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionResourceRecover_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionResourceRecover_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionResourceRecover_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionResourceRecover_GetMoniker(This,ppmk) \
+ (This)->lpVtbl -> GetMoniker(This,ppmk)
+
+#define ITransactionResourceRecover_ReEnlist(This,pEnlistment,pUOWCur) \
+ (This)->lpVtbl -> ReEnlist(This,pEnlistment,pUOWCur)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionResourceRecover_GetMoniker_Proxy(
+ ITransactionResourceRecover __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB ITransactionResourceRecover_GetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionResourceRecover_ReEnlist_Proxy(
+ ITransactionResourceRecover __RPC_FAR * This,
+ /* [in] */ ITransactionCoordinator __RPC_FAR *pEnlistment,
+ /* [in] */ XACTUOW __RPC_FAR *pUOWCur);
+
+
+void __RPC_STUB ITransactionResourceRecover_ReEnlist_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionResourceRecover_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionResourceManagement_INTERFACE_DEFINED__
+#define __ITransactionResourceManagement_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionResourceManagement
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionResourceManagement;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionResourceManagement : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Defect(
+ /* [in] */ BOOL fInformCoordinator) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionResourceManagementVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionResourceManagement __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionResourceManagement __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionResourceManagement __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Defect )(
+ ITransactionResourceManagement __RPC_FAR * This,
+ /* [in] */ BOOL fInformCoordinator);
+
+ END_INTERFACE
+ } ITransactionResourceManagementVtbl;
+
+ interface ITransactionResourceManagement
+ {
+ CONST_VTBL struct ITransactionResourceManagementVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionResourceManagement_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionResourceManagement_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionResourceManagement_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionResourceManagement_Defect(This,fInformCoordinator) \
+ (This)->lpVtbl -> Defect(This,fInformCoordinator)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionResourceManagement_Defect_Proxy(
+ ITransactionResourceManagement __RPC_FAR * This,
+ /* [in] */ BOOL fInformCoordinator);
+
+
+void __RPC_STUB ITransactionResourceManagement_Defect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionResourceManagement_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionResource_INTERFACE_DEFINED__
+#define __ITransactionResource_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionResource
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionResource;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionResource : public ITransactionResourceManagement
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Prepare(
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ DWORD grfRM,
+ /* [in] */ BOOL fSinglePhase,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk,
+ /* [out] */ BOID __RPC_FAR *__RPC_FAR *ppboidReason) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Commit(
+ /* [in] */ DWORD grfRM,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Abort(
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionResourceVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionResource __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionResource __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionResource __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Defect )(
+ ITransactionResource __RPC_FAR * This,
+ /* [in] */ BOOL fInformCoordinator);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Prepare )(
+ ITransactionResource __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ DWORD grfRM,
+ /* [in] */ BOOL fSinglePhase,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk,
+ /* [out] */ BOID __RPC_FAR *__RPC_FAR *ppboidReason);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
+ ITransactionResource __RPC_FAR * This,
+ /* [in] */ DWORD grfRM,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Abort )(
+ ITransactionResource __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW);
+
+ END_INTERFACE
+ } ITransactionResourceVtbl;
+
+ interface ITransactionResource
+ {
+ CONST_VTBL struct ITransactionResourceVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionResource_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionResource_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionResource_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionResource_Defect(This,fInformCoordinator) \
+ (This)->lpVtbl -> Defect(This,fInformCoordinator)
+
+
+#define ITransactionResource_Prepare(This,fRetaining,grfRM,fSinglePhase,ppmk,ppboidReason) \
+ (This)->lpVtbl -> Prepare(This,fRetaining,grfRM,fSinglePhase,ppmk,ppboidReason)
+
+#define ITransactionResource_Commit(This,grfRM,pNewUOW) \
+ (This)->lpVtbl -> Commit(This,grfRM,pNewUOW)
+
+#define ITransactionResource_Abort(This,pboidReason,fRetaining,pNewUOW) \
+ (This)->lpVtbl -> Abort(This,pboidReason,fRetaining,pNewUOW)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionResource_Prepare_Proxy(
+ ITransactionResource __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ DWORD grfRM,
+ /* [in] */ BOOL fSinglePhase,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk,
+ /* [out] */ BOID __RPC_FAR *__RPC_FAR *ppboidReason);
+
+
+void __RPC_STUB ITransactionResource_Prepare_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionResource_Commit_Proxy(
+ ITransactionResource __RPC_FAR * This,
+ /* [in] */ DWORD grfRM,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW);
+
+
+void __RPC_STUB ITransactionResource_Commit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionResource_Abort_Proxy(
+ ITransactionResource __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW);
+
+
+void __RPC_STUB ITransactionResource_Abort_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionResource_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionResourceAsync_INTERFACE_DEFINED__
+#define __ITransactionResourceAsync_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionResourceAsync
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionResourceAsync;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionResourceAsync : public ITransactionResourceManagement
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE PrepareRequest(
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ DWORD grfRM,
+ /* [in] */ BOOL fWantMoniker,
+ /* [in] */ BOOL fSinglePhase) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CommitRequest(
+ /* [in] */ DWORD grfRM,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AbortRequest(
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionResourceAsyncVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionResourceAsync __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionResourceAsync __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionResourceAsync __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Defect )(
+ ITransactionResourceAsync __RPC_FAR * This,
+ /* [in] */ BOOL fInformCoordinator);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PrepareRequest )(
+ ITransactionResourceAsync __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ DWORD grfRM,
+ /* [in] */ BOOL fWantMoniker,
+ /* [in] */ BOOL fSinglePhase);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CommitRequest )(
+ ITransactionResourceAsync __RPC_FAR * This,
+ /* [in] */ DWORD grfRM,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AbortRequest )(
+ ITransactionResourceAsync __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW);
+
+ END_INTERFACE
+ } ITransactionResourceAsyncVtbl;
+
+ interface ITransactionResourceAsync
+ {
+ CONST_VTBL struct ITransactionResourceAsyncVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionResourceAsync_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionResourceAsync_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionResourceAsync_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionResourceAsync_Defect(This,fInformCoordinator) \
+ (This)->lpVtbl -> Defect(This,fInformCoordinator)
+
+
+#define ITransactionResourceAsync_PrepareRequest(This,fRetaining,grfRM,fWantMoniker,fSinglePhase) \
+ (This)->lpVtbl -> PrepareRequest(This,fRetaining,grfRM,fWantMoniker,fSinglePhase)
+
+#define ITransactionResourceAsync_CommitRequest(This,grfRM,pNewUOW) \
+ (This)->lpVtbl -> CommitRequest(This,grfRM,pNewUOW)
+
+#define ITransactionResourceAsync_AbortRequest(This,pboidReason,fRetaining,pNewUOW) \
+ (This)->lpVtbl -> AbortRequest(This,pboidReason,fRetaining,pNewUOW)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionResourceAsync_PrepareRequest_Proxy(
+ ITransactionResourceAsync __RPC_FAR * This,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ DWORD grfRM,
+ /* [in] */ BOOL fWantMoniker,
+ /* [in] */ BOOL fSinglePhase);
+
+
+void __RPC_STUB ITransactionResourceAsync_PrepareRequest_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionResourceAsync_CommitRequest_Proxy(
+ ITransactionResourceAsync __RPC_FAR * This,
+ /* [in] */ DWORD grfRM,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW);
+
+
+void __RPC_STUB ITransactionResourceAsync_CommitRequest_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionResourceAsync_AbortRequest_Proxy(
+ ITransactionResourceAsync __RPC_FAR * This,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fRetaining,
+ /* [in] */ XACTUOW __RPC_FAR *pNewUOW);
+
+
+void __RPC_STUB ITransactionResourceAsync_AbortRequest_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionResourceAsync_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionEnlistmentRecover_INTERFACE_DEFINED__
+#define __ITransactionEnlistmentRecover_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionEnlistmentRecover
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionEnlistmentRecover;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionEnlistmentRecover : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetMoniker(
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ReEnlist(
+ /* [in] */ ITransactionResource __RPC_FAR *pUnkResource,
+ /* [in] */ XACTUOW __RPC_FAR *pUOWExpected,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RecoveryComplete(
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionEnlistmentRecoverVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionEnlistmentRecover __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionEnlistmentRecover __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionEnlistmentRecover __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetMoniker )(
+ ITransactionEnlistmentRecover __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ReEnlist )(
+ ITransactionEnlistmentRecover __RPC_FAR * This,
+ /* [in] */ ITransactionResource __RPC_FAR *pUnkResource,
+ /* [in] */ XACTUOW __RPC_FAR *pUOWExpected,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *RecoveryComplete )(
+ ITransactionEnlistmentRecover __RPC_FAR * This,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid);
+
+ END_INTERFACE
+ } ITransactionEnlistmentRecoverVtbl;
+
+ interface ITransactionEnlistmentRecover
+ {
+ CONST_VTBL struct ITransactionEnlistmentRecoverVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionEnlistmentRecover_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionEnlistmentRecover_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionEnlistmentRecover_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionEnlistmentRecover_GetMoniker(This,ppmk) \
+ (This)->lpVtbl -> GetMoniker(This,ppmk)
+
+#define ITransactionEnlistmentRecover_ReEnlist(This,pUnkResource,pUOWExpected,prmgrid) \
+ (This)->lpVtbl -> ReEnlist(This,pUnkResource,pUOWExpected,prmgrid)
+
+#define ITransactionEnlistmentRecover_RecoveryComplete(This,prmgrid) \
+ (This)->lpVtbl -> RecoveryComplete(This,prmgrid)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionEnlistmentRecover_GetMoniker_Proxy(
+ ITransactionEnlistmentRecover __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk);
+
+
+void __RPC_STUB ITransactionEnlistmentRecover_GetMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionEnlistmentRecover_ReEnlist_Proxy(
+ ITransactionEnlistmentRecover __RPC_FAR * This,
+ /* [in] */ ITransactionResource __RPC_FAR *pUnkResource,
+ /* [in] */ XACTUOW __RPC_FAR *pUOWExpected,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid);
+
+
+void __RPC_STUB ITransactionEnlistmentRecover_ReEnlist_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionEnlistmentRecover_RecoveryComplete_Proxy(
+ ITransactionEnlistmentRecover __RPC_FAR * This,
+ /* [in] */ XACTRMGRID __RPC_FAR *prmgrid);
+
+
+void __RPC_STUB ITransactionEnlistmentRecover_RecoveryComplete_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionEnlistmentRecover_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionEnlistment_INTERFACE_DEFINED__
+#define __ITransactionEnlistment_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionEnlistment
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionEnlistment;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionEnlistment : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetTransaction(
+ /* [out] */ ITransaction __RPC_FAR *__RPC_FAR *ppTransaction) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EarlyVote(
+ /* [in] */ BOOL fVote,
+ /* [in] */ BOID __RPC_FAR *pboidReason) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE HeuristicDecision(
+ /* [in] */ DWORD dwDecision,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fDefecting) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Defect( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionEnlistmentVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionEnlistment __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionEnlistment __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionEnlistment __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTransaction )(
+ ITransactionEnlistment __RPC_FAR * This,
+ /* [out] */ ITransaction __RPC_FAR *__RPC_FAR *ppTransaction);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *EarlyVote )(
+ ITransactionEnlistment __RPC_FAR * This,
+ /* [in] */ BOOL fVote,
+ /* [in] */ BOID __RPC_FAR *pboidReason);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *HeuristicDecision )(
+ ITransactionEnlistment __RPC_FAR * This,
+ /* [in] */ DWORD dwDecision,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fDefecting);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Defect )(
+ ITransactionEnlistment __RPC_FAR * This);
+
+ END_INTERFACE
+ } ITransactionEnlistmentVtbl;
+
+ interface ITransactionEnlistment
+ {
+ CONST_VTBL struct ITransactionEnlistmentVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionEnlistment_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionEnlistment_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionEnlistment_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionEnlistment_GetTransaction(This,ppTransaction) \
+ (This)->lpVtbl -> GetTransaction(This,ppTransaction)
+
+#define ITransactionEnlistment_EarlyVote(This,fVote,pboidReason) \
+ (This)->lpVtbl -> EarlyVote(This,fVote,pboidReason)
+
+#define ITransactionEnlistment_HeuristicDecision(This,dwDecision,pboidReason,fDefecting) \
+ (This)->lpVtbl -> HeuristicDecision(This,dwDecision,pboidReason,fDefecting)
+
+#define ITransactionEnlistment_Defect(This) \
+ (This)->lpVtbl -> Defect(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionEnlistment_GetTransaction_Proxy(
+ ITransactionEnlistment __RPC_FAR * This,
+ /* [out] */ ITransaction __RPC_FAR *__RPC_FAR *ppTransaction);
+
+
+void __RPC_STUB ITransactionEnlistment_GetTransaction_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionEnlistment_EarlyVote_Proxy(
+ ITransactionEnlistment __RPC_FAR * This,
+ /* [in] */ BOOL fVote,
+ /* [in] */ BOID __RPC_FAR *pboidReason);
+
+
+void __RPC_STUB ITransactionEnlistment_EarlyVote_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionEnlistment_HeuristicDecision_Proxy(
+ ITransactionEnlistment __RPC_FAR * This,
+ /* [in] */ DWORD dwDecision,
+ /* [in] */ BOID __RPC_FAR *pboidReason,
+ /* [in] */ BOOL fDefecting);
+
+
+void __RPC_STUB ITransactionEnlistment_HeuristicDecision_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionEnlistment_Defect_Proxy(
+ ITransactionEnlistment __RPC_FAR * This);
+
+
+void __RPC_STUB ITransactionEnlistment_Defect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionEnlistment_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionEnlistmentAsync_INTERFACE_DEFINED__
+#define __ITransactionEnlistmentAsync_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionEnlistmentAsync
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionEnlistmentAsync;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionEnlistmentAsync : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE PrepareRequestDone(
+ /* [in] */ HRESULT hr,
+ /* [in] */ IMoniker __RPC_FAR *pmk,
+ /* [in] */ BOID __RPC_FAR *pboidReason) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CommitRequestDone(
+ /* [in] */ HRESULT hr) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AbortRequestDone(
+ /* [in] */ HRESULT hr) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionEnlistmentAsyncVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionEnlistmentAsync __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionEnlistmentAsync __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionEnlistmentAsync __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *PrepareRequestDone )(
+ ITransactionEnlistmentAsync __RPC_FAR * This,
+ /* [in] */ HRESULT hr,
+ /* [in] */ IMoniker __RPC_FAR *pmk,
+ /* [in] */ BOID __RPC_FAR *pboidReason);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CommitRequestDone )(
+ ITransactionEnlistmentAsync __RPC_FAR * This,
+ /* [in] */ HRESULT hr);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AbortRequestDone )(
+ ITransactionEnlistmentAsync __RPC_FAR * This,
+ /* [in] */ HRESULT hr);
+
+ END_INTERFACE
+ } ITransactionEnlistmentAsyncVtbl;
+
+ interface ITransactionEnlistmentAsync
+ {
+ CONST_VTBL struct ITransactionEnlistmentAsyncVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionEnlistmentAsync_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionEnlistmentAsync_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionEnlistmentAsync_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionEnlistmentAsync_PrepareRequestDone(This,hr,pmk,pboidReason) \
+ (This)->lpVtbl -> PrepareRequestDone(This,hr,pmk,pboidReason)
+
+#define ITransactionEnlistmentAsync_CommitRequestDone(This,hr) \
+ (This)->lpVtbl -> CommitRequestDone(This,hr)
+
+#define ITransactionEnlistmentAsync_AbortRequestDone(This,hr) \
+ (This)->lpVtbl -> AbortRequestDone(This,hr)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionEnlistmentAsync_PrepareRequestDone_Proxy(
+ ITransactionEnlistmentAsync __RPC_FAR * This,
+ /* [in] */ HRESULT hr,
+ /* [in] */ IMoniker __RPC_FAR *pmk,
+ /* [in] */ BOID __RPC_FAR *pboidReason);
+
+
+void __RPC_STUB ITransactionEnlistmentAsync_PrepareRequestDone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionEnlistmentAsync_CommitRequestDone_Proxy(
+ ITransactionEnlistmentAsync __RPC_FAR * This,
+ /* [in] */ HRESULT hr);
+
+
+void __RPC_STUB ITransactionEnlistmentAsync_CommitRequestDone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionEnlistmentAsync_AbortRequestDone_Proxy(
+ ITransactionEnlistmentAsync __RPC_FAR * This,
+ /* [in] */ HRESULT hr);
+
+
+void __RPC_STUB ITransactionEnlistmentAsync_AbortRequestDone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionEnlistmentAsync_INTERFACE_DEFINED__ */
+
+
+#ifndef __IEnumXACTRE_INTERFACE_DEFINED__
+#define __IEnumXACTRE_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IEnumXACTRE
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_IEnumXACTRE;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IEnumXACTRE : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
+ /* [in] */ ULONG celt,
+ /* [out] */ XACTRE __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Skip(
+ /* [in] */ ULONG celt) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
+ /* [out] */ IEnumXACTRE __RPC_FAR *__RPC_FAR *ppenum) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IEnumXACTREVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IEnumXACTRE __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IEnumXACTRE __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IEnumXACTRE __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Next )(
+ IEnumXACTRE __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [out] */ XACTRE __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Skip )(
+ IEnumXACTRE __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Reset )(
+ IEnumXACTRE __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Clone )(
+ IEnumXACTRE __RPC_FAR * This,
+ /* [out] */ IEnumXACTRE __RPC_FAR *__RPC_FAR *ppenum);
+
+ END_INTERFACE
+ } IEnumXACTREVtbl;
+
+ interface IEnumXACTRE
+ {
+ CONST_VTBL struct IEnumXACTREVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IEnumXACTRE_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IEnumXACTRE_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IEnumXACTRE_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IEnumXACTRE_Next(This,celt,rgelt,pceltFetched) \
+ (This)->lpVtbl -> Next(This,celt,rgelt,pceltFetched)
+
+#define IEnumXACTRE_Skip(This,celt) \
+ (This)->lpVtbl -> Skip(This,celt)
+
+#define IEnumXACTRE_Reset(This) \
+ (This)->lpVtbl -> Reset(This)
+
+#define IEnumXACTRE_Clone(This,ppenum) \
+ (This)->lpVtbl -> Clone(This,ppenum)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumXACTRE_RemoteNext_Proxy(
+ IEnumXACTRE __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ XACTRE __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+void __RPC_STUB IEnumXACTRE_RemoteNext_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumXACTRE_Skip_Proxy(
+ IEnumXACTRE __RPC_FAR * This,
+ /* [in] */ ULONG celt);
+
+
+void __RPC_STUB IEnumXACTRE_Skip_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumXACTRE_Reset_Proxy(
+ IEnumXACTRE __RPC_FAR * This);
+
+
+void __RPC_STUB IEnumXACTRE_Reset_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IEnumXACTRE_Clone_Proxy(
+ IEnumXACTRE __RPC_FAR * This,
+ /* [out] */ IEnumXACTRE __RPC_FAR *__RPC_FAR *ppenum);
+
+
+void __RPC_STUB IEnumXACTRE_Clone_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IEnumXACTRE_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionInProgressEvents_INTERFACE_DEFINED__
+#define __ITransactionInProgressEvents_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionInProgressEvents
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionInProgressEvents;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionInProgressEvents : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnEarlyVote(
+ /* [in] */ XACTRE __RPC_FAR *pResourceInfo,
+ /* [in] */ BOOL fVote) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnDefected(
+ /* [in] */ XACTRE __RPC_FAR *pResourceInfo) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionInProgressEventsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionInProgressEvents __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionInProgressEvents __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionInProgressEvents __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnEarlyVote )(
+ ITransactionInProgressEvents __RPC_FAR * This,
+ /* [in] */ XACTRE __RPC_FAR *pResourceInfo,
+ /* [in] */ BOOL fVote);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnDefected )(
+ ITransactionInProgressEvents __RPC_FAR * This,
+ /* [in] */ XACTRE __RPC_FAR *pResourceInfo);
+
+ END_INTERFACE
+ } ITransactionInProgressEventsVtbl;
+
+ interface ITransactionInProgressEvents
+ {
+ CONST_VTBL struct ITransactionInProgressEventsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionInProgressEvents_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionInProgressEvents_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionInProgressEvents_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionInProgressEvents_OnEarlyVote(This,pResourceInfo,fVote) \
+ (This)->lpVtbl -> OnEarlyVote(This,pResourceInfo,fVote)
+
+#define ITransactionInProgressEvents_OnDefected(This,pResourceInfo) \
+ (This)->lpVtbl -> OnDefected(This,pResourceInfo)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionInProgressEvents_OnEarlyVote_Proxy(
+ ITransactionInProgressEvents __RPC_FAR * This,
+ /* [in] */ XACTRE __RPC_FAR *pResourceInfo,
+ /* [in] */ BOOL fVote);
+
+
+void __RPC_STUB ITransactionInProgressEvents_OnEarlyVote_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionInProgressEvents_OnDefected_Proxy(
+ ITransactionInProgressEvents __RPC_FAR * This,
+ /* [in] */ XACTRE __RPC_FAR *pResourceInfo);
+
+
+void __RPC_STUB ITransactionInProgressEvents_OnDefected_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionInProgressEvents_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionExportFactory_INTERFACE_DEFINED__
+#define __ITransactionExportFactory_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionExportFactory
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionExportFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionExportFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetRemoteClassId(
+ /* [out] */ CLSID __RPC_FAR *pclsid) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Create(
+ /* [in] */ ULONG cbWhereabouts,
+ /* [size_is][in] */ BYTE __RPC_FAR *rgbWhereabouts,
+ /* [out] */ ITransactionExport __RPC_FAR *__RPC_FAR *ppExport) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionExportFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionExportFactory __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionExportFactory __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionExportFactory __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRemoteClassId )(
+ ITransactionExportFactory __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pclsid);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Create )(
+ ITransactionExportFactory __RPC_FAR * This,
+ /* [in] */ ULONG cbWhereabouts,
+ /* [size_is][in] */ BYTE __RPC_FAR *rgbWhereabouts,
+ /* [out] */ ITransactionExport __RPC_FAR *__RPC_FAR *ppExport);
+
+ END_INTERFACE
+ } ITransactionExportFactoryVtbl;
+
+ interface ITransactionExportFactory
+ {
+ CONST_VTBL struct ITransactionExportFactoryVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionExportFactory_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionExportFactory_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionExportFactory_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionExportFactory_GetRemoteClassId(This,pclsid) \
+ (This)->lpVtbl -> GetRemoteClassId(This,pclsid)
+
+#define ITransactionExportFactory_Create(This,cbWhereabouts,rgbWhereabouts,ppExport) \
+ (This)->lpVtbl -> Create(This,cbWhereabouts,rgbWhereabouts,ppExport)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionExportFactory_GetRemoteClassId_Proxy(
+ ITransactionExportFactory __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pclsid);
+
+
+void __RPC_STUB ITransactionExportFactory_GetRemoteClassId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE ITransactionExportFactory_Create_Proxy(
+ ITransactionExportFactory __RPC_FAR * This,
+ /* [in] */ ULONG cbWhereabouts,
+ /* [size_is][in] */ BYTE __RPC_FAR *rgbWhereabouts,
+ /* [out] */ ITransactionExport __RPC_FAR *__RPC_FAR *ppExport);
+
+
+void __RPC_STUB ITransactionExportFactory_Create_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionExportFactory_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionImportWhereabouts_INTERFACE_DEFINED__
+#define __ITransactionImportWhereabouts_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionImportWhereabouts
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionImportWhereabouts;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionImportWhereabouts : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetWhereaboutsSize(
+ /* [out] */ ULONG __RPC_FAR *pcbWhereabouts) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetWhereabouts(
+ /* [in] */ ULONG cbWhereabouts,
+ /* [size_is][out] */ BYTE __RPC_FAR *rgbWhereabouts,
+ /* [out] */ ULONG __RPC_FAR *pcbUsed) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionImportWhereaboutsVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionImportWhereabouts __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionImportWhereabouts __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionImportWhereabouts __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWhereaboutsSize )(
+ ITransactionImportWhereabouts __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcbWhereabouts);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWhereabouts )(
+ ITransactionImportWhereabouts __RPC_FAR * This,
+ /* [in] */ ULONG cbWhereabouts,
+ /* [size_is][out] */ BYTE __RPC_FAR *rgbWhereabouts,
+ /* [out] */ ULONG __RPC_FAR *pcbUsed);
+
+ END_INTERFACE
+ } ITransactionImportWhereaboutsVtbl;
+
+ interface ITransactionImportWhereabouts
+ {
+ CONST_VTBL struct ITransactionImportWhereaboutsVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionImportWhereabouts_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionImportWhereabouts_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionImportWhereabouts_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionImportWhereabouts_GetWhereaboutsSize(This,pcbWhereabouts) \
+ (This)->lpVtbl -> GetWhereaboutsSize(This,pcbWhereabouts)
+
+#define ITransactionImportWhereabouts_GetWhereabouts(This,cbWhereabouts,rgbWhereabouts,pcbUsed) \
+ (This)->lpVtbl -> GetWhereabouts(This,cbWhereabouts,rgbWhereabouts,pcbUsed)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionImportWhereabouts_GetWhereaboutsSize_Proxy(
+ ITransactionImportWhereabouts __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcbWhereabouts);
+
+
+void __RPC_STUB ITransactionImportWhereabouts_GetWhereaboutsSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITransactionImportWhereabouts_RemoteGetWhereabouts_Proxy(
+ ITransactionImportWhereabouts __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcbUsed,
+ /* [in] */ ULONG cbWhereabouts,
+ /* [length_is][size_is][out] */ BYTE __RPC_FAR *rgbWhereabouts);
+
+
+void __RPC_STUB ITransactionImportWhereabouts_RemoteGetWhereabouts_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionImportWhereabouts_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionExport_INTERFACE_DEFINED__
+#define __ITransactionExport_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionExport
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionExport;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionExport : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Export(
+ /* [in] */ IUnknown __RPC_FAR *punkTransaction,
+ /* [out] */ ULONG __RPC_FAR *pcbTransactionCookie) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetTransactionCookie(
+ /* [in] */ IUnknown __RPC_FAR *punkTransaction,
+ /* [in] */ ULONG cbTransactionCookie,
+ /* [size_is][out] */ BYTE __RPC_FAR *rgbTransactionCookie,
+ /* [out] */ ULONG __RPC_FAR *pcbUsed) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionExportVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionExport __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionExport __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionExport __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Export )(
+ ITransactionExport __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *punkTransaction,
+ /* [out] */ ULONG __RPC_FAR *pcbTransactionCookie);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTransactionCookie )(
+ ITransactionExport __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *punkTransaction,
+ /* [in] */ ULONG cbTransactionCookie,
+ /* [size_is][out] */ BYTE __RPC_FAR *rgbTransactionCookie,
+ /* [out] */ ULONG __RPC_FAR *pcbUsed);
+
+ END_INTERFACE
+ } ITransactionExportVtbl;
+
+ interface ITransactionExport
+ {
+ CONST_VTBL struct ITransactionExportVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionExport_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionExport_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionExport_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionExport_Export(This,punkTransaction,pcbTransactionCookie) \
+ (This)->lpVtbl -> Export(This,punkTransaction,pcbTransactionCookie)
+
+#define ITransactionExport_GetTransactionCookie(This,punkTransaction,cbTransactionCookie,rgbTransactionCookie,pcbUsed) \
+ (This)->lpVtbl -> GetTransactionCookie(This,punkTransaction,cbTransactionCookie,rgbTransactionCookie,pcbUsed)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionExport_Export_Proxy(
+ ITransactionExport __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *punkTransaction,
+ /* [out] */ ULONG __RPC_FAR *pcbTransactionCookie);
+
+
+void __RPC_STUB ITransactionExport_Export_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITransactionExport_RemoteGetTransactionCookie_Proxy(
+ ITransactionExport __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *punkTransaction,
+ /* [out] */ ULONG __RPC_FAR *pcbUsed,
+ /* [in] */ ULONG cbTransactionCookie,
+ /* [length_is][size_is][out] */ BYTE __RPC_FAR *rgbTransactionCookie);
+
+
+void __RPC_STUB ITransactionExport_RemoteGetTransactionCookie_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionExport_INTERFACE_DEFINED__ */
+
+
+#ifndef __ITransactionImport_INTERFACE_DEFINED__
+#define __ITransactionImport_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ITransactionImport
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+
+EXTERN_C const IID IID_ITransactionImport;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ITransactionImport : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Import(
+ /* [in] */ ULONG cbTransactionCookie,
+ /* [size_is][in] */ BYTE __RPC_FAR *rgbTransactionCookie,
+ /* [in] */ IID __RPC_FAR *piid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvTransaction) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ITransactionImportVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ITransactionImport __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ITransactionImport __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ITransactionImport __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Import )(
+ ITransactionImport __RPC_FAR * This,
+ /* [in] */ ULONG cbTransactionCookie,
+ /* [size_is][in] */ BYTE __RPC_FAR *rgbTransactionCookie,
+ /* [in] */ IID __RPC_FAR *piid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvTransaction);
+
+ END_INTERFACE
+ } ITransactionImportVtbl;
+
+ interface ITransactionImport
+ {
+ CONST_VTBL struct ITransactionImportVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ITransactionImport_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITransactionImport_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ITransactionImport_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ITransactionImport_Import(This,cbTransactionCookie,rgbTransactionCookie,piid,ppvTransaction) \
+ (This)->lpVtbl -> Import(This,cbTransactionCookie,rgbTransactionCookie,piid,ppvTransaction)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ITransactionImport_Import_Proxy(
+ ITransactionImport __RPC_FAR * This,
+ /* [in] */ ULONG cbTransactionCookie,
+ /* [size_is][in] */ BYTE __RPC_FAR *rgbTransactionCookie,
+ /* [in] */ IID __RPC_FAR *piid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvTransaction);
+
+
+void __RPC_STUB ITransactionImport_Import_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ITransactionImport_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0082
+ * at Fri Nov 15 09:42:29 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+#define XACT_E_FIRST 0x8004D000
+#define XACT_E_LAST 0x8004D01D
+#define XACT_S_FIRST 0x0004D000
+#define XACT_S_LAST 0x0004D009
+
+#define XACT_E_ABORTED 0x8004D019
+#define XACT_E_ALREADYOTHERSINGLEPHASE 0x8004D000
+#define XACT_E_ALREADYINPROGRESS 0x8004D018
+#define XACT_E_CANTRETAIN 0x8004D001
+#define XACT_E_COMMITFAILED 0x8004D002
+#define XACT_E_COMMITPREVENTED 0x8004D003
+#define XACT_E_CONNECTION_DENIED 0x8004D01D
+#define XACT_E_CONNECTION_DOWN 0x8004D01C
+#define XACT_E_HEURISTICABORT 0x8004D004
+#define XACT_E_HEURISTICCOMMIT 0x8004D005
+#define XACT_E_HEURISTICDAMAGE 0x8004D006
+#define XACT_E_HEURISTICDANGER 0x8004D007
+#define XACT_E_INDOUBT 0x8004D016
+#define XACT_E_INVALIDCOOKIE 0x8004D015
+#define XACT_E_ISOLATIONLEVEL 0x8004D008
+#define XACT_E_LOGFULL 0x8004D01A
+#define XACT_E_NOASYNC 0x8004D009
+#define XACT_E_NOENLIST 0x8004D00A
+#define XACT_E_NOIMPORTOBJECT 0x8004D014
+#define XACT_E_NOISORETAIN 0x8004D00B
+#define XACT_E_NORESOURCE 0x8004D00C
+#define XACT_E_NOTCURRENT 0x8004D00D
+#define XACT_E_NOTIMEOUT 0x8004D017
+#define XACT_E_NOTRANSACTION 0x8004D00E
+#define XACT_E_NOTSUPPORTED 0x8004D00F
+#define XACT_E_TMNOTAVAILABLE 0x8004D01B
+#define XACT_E_UNKNOWNRMGRID 0x8004D010
+#define XACT_E_WRONGSTATE 0x8004D011
+#define XACT_E_WRONGUOW 0x8004D012
+#define XACT_E_XTIONEXISTS 0x8004D013
+
+#define XACT_S_ABORTING 0x0004D008
+#define XACT_S_ALLNORETAIN 0x0004D007
+#define XACT_S_ASYNC 0x0004D000
+#define XACT_S_DEFECT 0x0004D001
+#define XACT_S_OKINFORM 0x0004D004
+#define XACT_S_MADECHANGESCONTENT 0x0004D005
+#define XACT_S_MADECHANGESINFORM 0x0004D006
+#define XACT_S_READONLY 0x0004D002
+#define XACT_S_SINGLEPHASE 0x0004D009
+#define XACT_S_SOMENORETAIN 0x0004D003
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0082_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0082_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumTransaction_Next_Proxy(
+ IEnumTransaction __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [out] */ ITransaction __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumTransaction_Next_Stub(
+ IEnumTransaction __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ ITransaction __RPC_FAR *__RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IEnumXACTRE_Next_Proxy(
+ IEnumXACTRE __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [out] */ XACTRE __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumXACTRE_Next_Stub(
+ IEnumXACTRE __RPC_FAR * This,
+ /* [in] */ ULONG celt,
+ /* [length_is][size_is][out] */ XACTRE __RPC_FAR *rgelt,
+ /* [out] */ ULONG __RPC_FAR *pceltFetched);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITransactionImportWhereabouts_GetWhereabouts_Proxy(
+ ITransactionImportWhereabouts __RPC_FAR * This,
+ /* [in] */ ULONG cbWhereabouts,
+ /* [size_is][out] */ BYTE __RPC_FAR *rgbWhereabouts,
+ /* [out] */ ULONG __RPC_FAR *pcbUsed);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITransactionImportWhereabouts_GetWhereabouts_Stub(
+ ITransactionImportWhereabouts __RPC_FAR * This,
+ /* [out] */ ULONG __RPC_FAR *pcbUsed,
+ /* [in] */ ULONG cbWhereabouts,
+ /* [length_is][size_is][out] */ BYTE __RPC_FAR *rgbWhereabouts);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE ITransactionExport_GetTransactionCookie_Proxy(
+ ITransactionExport __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *punkTransaction,
+ /* [in] */ ULONG cbTransactionCookie,
+ /* [size_is][out] */ BYTE __RPC_FAR *rgbTransactionCookie,
+ /* [out] */ ULONG __RPC_FAR *pcbUsed);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE ITransactionExport_GetTransactionCookie_Stub(
+ ITransactionExport __RPC_FAR * This,
+ /* [in] */ IUnknown __RPC_FAR *punkTransaction,
+ /* [out] */ ULONG __RPC_FAR *pcbUsed,
+ /* [in] */ ULONG cbTransactionCookie,
+ /* [length_is][size_is][out] */ BYTE __RPC_FAR *rgbTransactionCookie);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/tspi.h b/public/sdk/inc/tspi.h
new file mode 100644
index 000000000..b8d078efe
--- /dev/null
+++ b/public/sdk/inc/tspi.h
@@ -0,0 +1,1552 @@
+/*++ BUILD Version: 0000 // Increment this if a change has global effects
+
+The Telephony API is jointly copyrighted by Intel and Microsoft. You are
+granted a royalty free worldwide, unlimited license to make copies, and use
+the API/SPI for making applications/drivers that interface with the
+specification provided that this paragraph and the Intel/Microsoft copyright
+statement is maintained as is in the text and source code files.
+
+Copyright (c) 1992-1996 Microsoft Corporation
+Portions copyright 1992, 1993 Intel/Microsoft, all rights reserved.
+
+Module Name:
+
+ tspi.h
+
+Notes:
+
+ Additions to the Telephony Service Provider Interface (TSPI) since
+ version 1.0 are noted by version number (i.e. "TSPI v1.4").
+
+--*/
+
+#ifndef TSPI_H
+#define TSPI_H
+
+
+#include <windows.h>
+
+#include "tapi.h"
+
+
+#if WIN32
+#if TAPI_CURRENT_VERSION < 0x00020000
+#error Building a 32bit 1.3 or 1.4 service provider is not supported.
+#endif
+#endif
+
+
+// tspi.h is only of use in conjunction with tapi.h. Very few types are
+// defined in tspi.h. Most types of procedure formal parameters are simply
+// passed through from corresponding procedures in tapi.h. A working knowledge
+// of the TAPI interface is required for an understanding of this interface.
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+#ifndef DECLARE_OPAQUE32
+#define DECLARE_OPAQUE32(name) struct name##__ { int unused; }; \
+ typedef const struct name##__ FAR* name
+#endif // DECLARE_OPAQUE32
+
+#ifndef TSPIAPI
+
+#define TSPIAPI PASCAL
+
+#endif
+
+DECLARE_OPAQUE32(HDRVCALL);
+DECLARE_OPAQUE32(HDRVLINE);
+DECLARE_OPAQUE32(HDRVPHONE);
+DECLARE_OPAQUE32(HDRVDIALOGINSTANCE);
+
+typedef HDRVCALL FAR * LPHDRVCALL;
+typedef HDRVLINE FAR * LPHDRVLINE;
+typedef HDRVPHONE FAR * LPHDRVPHONE;
+typedef HDRVDIALOGINSTANCE FAR * LPHDRVDIALOGINSTANCE;
+
+DECLARE_OPAQUE32(HTAPICALL);
+DECLARE_OPAQUE32(HTAPILINE);
+DECLARE_OPAQUE32(HTAPIPHONE);
+DECLARE_OPAQUE32(HTAPIDIALOGINSTANCE);
+
+typedef HTAPICALL FAR * LPHTAPICALL;
+typedef HTAPILINE FAR * LPHTAPILINE;
+typedef HTAPIPHONE FAR * LPHTAPIPHONE;
+typedef HTAPIDIALOGINSTANCE FAR * LPHTAPIDIALOGINSTANCE;
+
+
+DECLARE_OPAQUE32(HPROVIDER);
+typedef HPROVIDER FAR * LPHPROVIDER;
+
+typedef DWORD DRV_REQUESTID;
+
+typedef void (CALLBACK * ASYNC_COMPLETION)(
+ DRV_REQUESTID dwRequestID,
+ LONG lResult
+ );
+
+typedef void (CALLBACK * LINEEVENT)(
+ HTAPILINE htLine,
+ HTAPICALL htCall,
+ DWORD dwMsg,
+ DWORD dwParam1,
+ DWORD dwParam2,
+ DWORD dwParam3
+ );
+
+typedef void (CALLBACK * PHONEEVENT)(
+ HTAPIPHONE htPhone,
+ DWORD dwMsg,
+ DWORD dwParam1,
+ DWORD dwParam2,
+ DWORD dwParam3
+ );
+
+typedef LONG (CALLBACK * TUISPIDLLCALLBACK)(
+ DWORD dwObjectID,
+ DWORD dwObjectType,
+ LPVOID lpParams,
+ DWORD dwSize
+ );
+
+#if TAPI_CURRENT_VERSION >= 0x00020000
+typedef struct tuispicreatedialoginstanceparams_tag
+{
+ DRV_REQUESTID dwRequestID;
+
+ HDRVDIALOGINSTANCE hdDlgInst;
+
+ HTAPIDIALOGINSTANCE htDlgInst;
+
+ LPCWSTR lpszUIDLLName;
+
+ LPVOID lpParams;
+
+ DWORD dwSize;
+
+} TUISPICREATEDIALOGINSTANCEPARAMS, *LPTUISPICREATEDIALOGINSTANCEPARAMS;
+#endif
+
+
+#define TSPI_MESSAGE_BASE 500
+ // The lowest-numbered TSPI-specific message ID number
+
+#define LINE_NEWCALL ((long) TSPI_MESSAGE_BASE + 0)
+#define LINE_CALLDEVSPECIFIC ((long) TSPI_MESSAGE_BASE + 1)
+#define LINE_CALLDEVSPECIFICFEATURE ((long) TSPI_MESSAGE_BASE + 2)
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINE_CREATEDIALOGINSTANCE ((long) TSPI_MESSAGE_BASE + 3)
+ // TSPI v2.0
+#define LINE_SENDDIALOGINSTANCEDATA ((long) TSPI_MESSAGE_BASE + 4)
+ // TSPI v2.0
+#endif
+
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define LINETSPIOPTION_NONREENTRANT 0x00000001 // TSPI v2.0
+#endif
+
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+#define TUISPIDLL_OBJECT_LINEID 1L // TSPI v2.0
+#define TUISPIDLL_OBJECT_PHONEID 2L // TSPI v2.0
+#define TUISPIDLL_OBJECT_PROVIDERID 3L // TSPI v2.0
+#define TUISPIDLL_OBJECT_DIALOGINSTANCE 4L // TSPI v2.0
+#endif
+
+
+//
+// The following function prototypes pertain
+// to a service provider's core module
+//
+
+
+
+LONG
+TSPIAPI
+TSPI_lineAccept(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPCSTR lpsUserUserInfo,
+ DWORD dwSize
+ );
+
+LONG
+TSPIAPI
+TSPI_lineAddToConference(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdConfCall,
+ HDRVCALL hdConsultCall
+ );
+
+LONG
+TSPIAPI
+TSPI_lineAnswer(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPCSTR lpsUserUserInfo,
+ DWORD dwSize
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineBlindTransfer(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPCWSTR lpszDestAddress,
+ DWORD dwCountryCode);
+#else
+LONG
+TSPIAPI
+TSPI_lineBlindTransfer(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode);
+#endif
+
+LONG
+TSPIAPI
+TSPI_lineClose(
+ HDRVLINE hdLine
+ );
+
+LONG
+TSPIAPI
+TSPI_lineCloseCall(
+ HDRVCALL hdCall
+ );
+
+LONG
+TSPIAPI
+TSPI_lineCompleteCall(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPDWORD lpdwCompletionID,
+ DWORD dwCompletionMode,
+ DWORD dwMessageID
+ );
+
+LONG
+TSPIAPI
+TSPI_lineCompleteTransfer(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ HDRVCALL hdConsultCall,
+ HTAPICALL htConfCall,
+ LPHDRVCALL lphdConfCall,
+ DWORD dwTransferMode
+ );
+
+LONG
+TSPIAPI
+TSPI_lineConditionalMediaDetection(
+ HDRVLINE hdLine,
+ DWORD dwMediaModes,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+LONG
+TSPIAPI
+TSPI_lineDevSpecific(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ DWORD dwAddressID,
+ HDRVCALL hdCall,
+ LPVOID lpParams,
+ DWORD dwSize
+ );
+
+LONG
+TSPIAPI
+TSPI_lineDevSpecificFeature(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ DWORD dwFeature,
+ LPVOID lpParams,
+ DWORD dwSize
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineDial(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPCWSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineDial(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_lineDrop(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPCSTR lpsUserUserInfo,
+ DWORD dwSize
+ );
+
+LONG
+TSPIAPI
+TSPI_lineDropOnClose( // TSPI v1.4
+ HDRVCALL hdCall
+ );
+
+LONG
+TSPIAPI
+TSPI_lineDropNoOwner( // TSPI v1.4
+ HDRVCALL hdCall
+ );
+
+LONG
+TSPIAPI
+TSPI_lineForward(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ DWORD bAllAddresses,
+ DWORD dwAddressID,
+ LPLINEFORWARDLIST const lpForwardList,
+ DWORD dwNumRingsNoAnswer,
+ HTAPICALL htConsultCall,
+ LPHDRVCALL lphdConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineGatherDigits(
+ HDRVCALL hdCall,
+ DWORD dwEndToEndID,
+ DWORD dwDigitModes,
+ LPWSTR lpsDigits,
+ DWORD dwNumDigits,
+ LPCWSTR lpszTerminationDigits,
+ DWORD dwFirstDigitTimeout,
+ DWORD dwInterDigitTimeout
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineGatherDigits(
+ HDRVCALL hdCall,
+ DWORD dwEndToEndID,
+ DWORD dwDigitModes,
+ LPSTR lpsDigits,
+ DWORD dwNumDigits,
+ LPCSTR lpszTerminationDigits,
+ DWORD dwFirstDigitTimeout,
+ DWORD dwInterDigitTimeout
+ );
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineGenerateDigits(
+ HDRVCALL hdCall,
+ DWORD dwEndToEndID,
+ DWORD dwDigitMode,
+ LPCWSTR lpszDigits,
+ DWORD dwDuration
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineGenerateDigits(
+ HDRVCALL hdCall,
+ DWORD dwEndToEndID,
+ DWORD dwDigitMode,
+ LPCSTR lpszDigits,
+ DWORD dwDuration
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_lineGenerateTone(
+ HDRVCALL hdCall,
+ DWORD dwEndToEndID,
+ DWORD dwToneMode,
+ DWORD dwDuration,
+ DWORD dwNumTones,
+ LPLINEGENERATETONE const lpTones
+ );
+
+LONG
+TSPIAPI
+TSPI_lineGetAddressCaps(
+ DWORD dwDeviceID,
+ DWORD dwAddressID,
+ DWORD dwTSPIVersion,
+ DWORD dwExtVersion,
+ LPLINEADDRESSCAPS lpAddressCaps
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineGetAddressID(
+ HDRVLINE hdLine,
+ LPDWORD lpdwAddressID,
+ DWORD dwAddressMode,
+ LPCWSTR lpsAddress,
+ DWORD dwSize
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineGetAddressID(
+ HDRVLINE hdLine,
+ LPDWORD lpdwAddressID,
+ DWORD dwAddressMode,
+ LPCSTR lpsAddress,
+ DWORD dwSize
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_lineGetAddressStatus(
+ HDRVLINE hdLine,
+ DWORD dwAddressID,
+ LPLINEADDRESSSTATUS lpAddressStatus
+ );
+
+LONG
+TSPIAPI
+TSPI_lineGetCallAddressID(
+ HDRVCALL hdCall,
+ LPDWORD lpdwAddressID
+ );
+
+LONG
+TSPIAPI
+TSPI_lineGetCallInfo(
+ HDRVCALL hdCall,
+ LPLINECALLINFO lpCallInfo
+ );
+
+LONG
+TSPIAPI
+TSPI_lineGetCallStatus(
+ HDRVCALL hdCall,
+ LPLINECALLSTATUS lpCallStatus
+ );
+
+LONG
+TSPIAPI
+TSPI_lineGetDevCaps(
+ DWORD dwDeviceID,
+ DWORD dwTSPIVersion,
+ DWORD dwExtVersion,
+ LPLINEDEVCAPS lpLineDevCaps
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineGetDevConfig(
+ DWORD dwDeviceID,
+ LPVARSTRING lpDeviceConfig,
+ LPCWSTR lpszDeviceClass
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineGetDevConfig(
+ DWORD dwDeviceID,
+ LPVARSTRING lpDeviceConfig,
+ LPCSTR lpszDeviceClass
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_lineGetExtensionID(
+ DWORD dwDeviceID,
+ DWORD dwTSPIVersion,
+ LPLINEEXTENSIONID lpExtensionID
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineGetIcon(
+ DWORD dwDeviceID,
+ LPCWSTR lpszDeviceClass,
+ LPHICON lphIcon
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineGetIcon(
+ DWORD dwDeviceID,
+ LPCSTR lpszDeviceClass,
+ LPHICON lphIcon
+ );
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineGetID(
+ HDRVLINE hdLine,
+ DWORD dwAddressID,
+ HDRVCALL hdCall,
+ DWORD dwSelect,
+ LPVARSTRING lpDeviceID,
+ LPCWSTR lpszDeviceClass,
+ HANDLE hTargetProcess // TSPI v2.0
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineGetID(
+ HDRVLINE hdLine,
+ DWORD dwAddressID,
+ HDRVCALL hdCall,
+ DWORD dwSelect,
+ LPVARSTRING lpDeviceID,
+ LPCSTR lpszDeviceClass
+ );
+#endif
+
+
+LONG
+TSPIAPI
+TSPI_lineGetLineDevStatus(
+ HDRVLINE hdLine,
+ LPLINEDEVSTATUS lpLineDevStatus
+ );
+
+LONG
+TSPIAPI
+TSPI_lineGetNumAddressIDs(
+ HDRVLINE hdLine,
+ LPDWORD lpdwNumAddressIDs
+ );
+
+LONG
+TSPIAPI
+TSPI_lineHold(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineMakeCall(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ HTAPICALL htCall,
+ LPHDRVCALL lphdCall,
+ LPCWSTR lpszDestAddress,
+ DWORD dwCountryCode,
+ LPLINECALLPARAMS const lpCallParams
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineMakeCall(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ HTAPICALL htCall,
+ LPHDRVCALL lphdCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode,
+ LPLINECALLPARAMS const lpCallParams
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_lineMonitorDigits(
+ HDRVCALL hdCall,
+ DWORD dwDigitModes
+ );
+
+LONG
+TSPIAPI
+TSPI_lineMonitorMedia(
+ HDRVCALL hdCall,
+ DWORD dwMediaModes
+ );
+
+LONG
+TSPIAPI
+TSPI_lineMonitorTones(
+ HDRVCALL hdCall,
+ DWORD dwToneListID,
+ LPLINEMONITORTONE const lpToneList,
+ DWORD dwNumEntries
+ );
+
+LONG
+TSPIAPI
+TSPI_lineNegotiateExtVersion(
+ DWORD dwDeviceID,
+ DWORD dwTSPIVersion,
+ DWORD dwLowVersion,
+ DWORD dwHighVersion,
+ LPDWORD lpdwExtVersion
+ );
+
+LONG
+TSPIAPI
+TSPI_lineNegotiateTSPIVersion(
+ DWORD dwDeviceID,
+ DWORD dwLowVersion,
+ DWORD dwHighVersion,
+ LPDWORD lpdwTSPIVersion
+ );
+
+LONG
+TSPIAPI
+TSPI_lineOpen(
+ DWORD dwDeviceID,
+ HTAPILINE htLine,
+ LPHDRVLINE lphdLine,
+ DWORD dwTSPIVersion,
+ LINEEVENT lpfnEventProc
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_linePark(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ DWORD dwParkMode,
+ LPCWSTR lpszDirAddress,
+ LPVARSTRING lpNonDirAddress
+ );
+#else
+LONG
+TSPIAPI
+TSPI_linePark(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ DWORD dwParkMode,
+ LPCSTR lpszDirAddress,
+ LPVARSTRING lpNonDirAddress
+ );
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_linePickup(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ DWORD dwAddressID,
+ HTAPICALL htCall,
+ LPHDRVCALL lphdCall,
+ LPCWSTR lpszDestAddress,
+ LPCWSTR lpszGroupID
+ );
+#else
+LONG
+TSPIAPI
+TSPI_linePickup(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ DWORD dwAddressID,
+ HTAPICALL htCall,
+ LPHDRVCALL lphdCall,
+ LPCSTR lpszDestAddress,
+ LPCSTR lpszGroupID
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_linePrepareAddToConference(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdConfCall,
+ HTAPICALL htConsultCall,
+ LPHDRVCALL lphdConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineRedirect(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPCWSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineRedirect(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPCSTR lpszDestAddress,
+ DWORD dwCountryCode
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_lineReleaseUserUserInfo( // TSPI v1.4
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall
+ );
+
+LONG
+TSPIAPI
+TSPI_lineRemoveFromConference(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSecureCall(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSelectExtVersion(
+ HDRVLINE hdLine,
+ DWORD dwExtVersion
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSendUserUserInfo(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPCSTR lpsUserUserInfo,
+ DWORD dwSize
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSetAppSpecific(
+ HDRVCALL hdCall,
+ DWORD dwAppSpecific
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineSetCallData( // TSPI v2.0
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPVOID lpCallData,
+ DWORD dwSize
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_lineSetCallParams(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ DWORD dwBearerMode,
+ DWORD dwMinRate,
+ DWORD dwMaxRate,
+ LPLINEDIALPARAMS const lpDialParams
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineSetCallQualityOfService( // TSPI v2.0
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ LPVOID lpSendingFlowspec,
+ DWORD dwSendingFlowspecSize,
+ LPVOID lpReceivingFlowspec,
+ DWORD dwReceivingFlowspecSize
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSetCallTreatment( // TSPI v2.0
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ DWORD dwTreatment
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_lineSetCurrentLocation( // TSPI v1.4
+ DWORD dwLocation
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSetDefaultMediaDetection(
+ HDRVLINE hdLine,
+ DWORD dwMediaModes
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineSetDevConfig(
+ DWORD dwDeviceID,
+ LPVOID const lpDeviceConfig,
+ DWORD dwSize,
+ LPCWSTR lpszDeviceClass
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineSetDevConfig(
+ DWORD dwDeviceID,
+ LPVOID const lpDeviceConfig,
+ DWORD dwSize,
+ LPCSTR lpszDeviceClass
+ );
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineSetLineDevStatus( // TSPI v2.0
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ DWORD dwStatusToChange,
+ DWORD fStatus
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_lineSetMediaControl(
+ HDRVLINE hdLine,
+ DWORD dwAddressID,
+ HDRVCALL hdCall,
+ DWORD dwSelect,
+ LPLINEMEDIACONTROLDIGIT const lpDigitList,
+ DWORD dwDigitNumEntries,
+ LPLINEMEDIACONTROLMEDIA const lpMediaList,
+ DWORD dwMediaNumEntries,
+ LPLINEMEDIACONTROLTONE const lpToneList,
+ DWORD dwToneNumEntries,
+ LPLINEMEDIACONTROLCALLSTATE const lpCallStateList,
+ DWORD dwCallStateNumEntries
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSetMediaMode(
+ HDRVCALL hdCall,
+ DWORD dwMediaMode
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSetStatusMessages(
+ HDRVLINE hdLine,
+ DWORD dwLineStates,
+ DWORD dwAddressStates
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSetTerminal(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ DWORD dwAddressID,
+ HDRVCALL hdCall,
+ DWORD dwSelect,
+ DWORD dwTerminalModes,
+ DWORD dwTerminalID,
+ DWORD bEnable
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSetupConference(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ HDRVLINE hdLine,
+ HTAPICALL htConfCall,
+ LPHDRVCALL lphdConfCall,
+ HTAPICALL htConsultCall,
+ LPHDRVCALL lphdConsultCall,
+ DWORD dwNumParties,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSetupTransfer(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall,
+ HTAPICALL htConsultCall,
+ LPHDRVCALL lphdConsultCall,
+ LPLINECALLPARAMS const lpCallParams
+ );
+
+LONG
+TSPIAPI
+TSPI_lineSwapHold(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdActiveCall,
+ HDRVCALL hdHeldCall
+ );
+
+LONG
+TSPIAPI
+TSPI_lineUncompleteCall(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ DWORD dwCompletionID
+ );
+
+LONG
+TSPIAPI
+TSPI_lineUnhold(
+ DRV_REQUESTID dwRequestID,
+ HDRVCALL hdCall
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_lineUnpark(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ DWORD dwAddressID,
+ HTAPICALL htCall,
+ LPHDRVCALL lphdCall,
+ LPCWSTR lpszDestAddress
+ );
+#else
+LONG
+TSPIAPI
+TSPI_lineUnpark(
+ DRV_REQUESTID dwRequestID,
+ HDRVLINE hdLine,
+ DWORD dwAddressID,
+ HTAPICALL htCall,
+ LPHDRVCALL lphdCall,
+ LPCSTR lpszDestAddress
+ );
+#endif
+
+
+
+LONG
+TSPIAPI
+TSPI_phoneClose(
+ HDRVPHONE hdPhone
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneDevSpecific(
+ DRV_REQUESTID dwRequestID,
+ HDRVPHONE hdPhone,
+ LPVOID lpParams,
+ DWORD dwSize
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneGetButtonInfo(
+ HDRVPHONE hdPhone,
+ DWORD dwButtonLampID,
+ LPPHONEBUTTONINFO lpButtonInfo
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneGetData(
+ HDRVPHONE hdPhone,
+ DWORD dwDataID,
+ LPVOID lpData,
+ DWORD dwSize
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneGetDevCaps(
+ DWORD dwDeviceID,
+ DWORD dwTSPIVersion,
+ DWORD dwExtVersion,
+ LPPHONECAPS lpPhoneCaps
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneGetDisplay(
+ HDRVPHONE hdPhone,
+ LPVARSTRING lpDisplay
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneGetExtensionID(
+ DWORD dwDeviceID,
+ DWORD dwTSPIVersion,
+ LPPHONEEXTENSIONID lpExtensionID
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneGetGain(
+ HDRVPHONE hdPhone,
+ DWORD dwHookSwitchDev,
+ LPDWORD lpdwGain
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneGetHookSwitch(
+ HDRVPHONE hdPhone,
+ LPDWORD lpdwHookSwitchDevs
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_phoneGetIcon(
+ DWORD dwDeviceID,
+ LPCWSTR lpszDeviceClass,
+ LPHICON lphIcon
+ );
+#else
+LONG
+TSPIAPI
+TSPI_phoneGetIcon(
+ DWORD dwDeviceID,
+ LPCSTR lpszDeviceClass,
+ LPHICON lphIcon
+ );
+#endif
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_phoneGetID(
+ HDRVPHONE hdPhone,
+ LPVARSTRING lpDeviceID,
+ LPCWSTR lpszDeviceClass,
+ HANDLE hTargetProcess // TSPI v2.0
+ );
+#else
+LONG
+TSPIAPI
+TSPI_phoneGetID(
+ HDRVPHONE hdPhone,
+ LPVARSTRING lpDeviceID,
+ LPCSTR lpszDeviceClass
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_phoneGetLamp(
+ HDRVPHONE hdPhone,
+ DWORD dwButtonLampID,
+ LPDWORD lpdwLampMode
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneGetRing(
+ HDRVPHONE hdPhone,
+ LPDWORD lpdwRingMode,
+ LPDWORD lpdwVolume
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneGetStatus(
+ HDRVPHONE hdPhone,
+ LPPHONESTATUS lpPhoneStatus
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneGetVolume(
+ HDRVPHONE hdPhone,
+ DWORD dwHookSwitchDev,
+ LPDWORD lpdwVolume
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneNegotiateExtVersion(
+ DWORD dwDeviceID,
+ DWORD dwTSPIVersion,
+ DWORD dwLowVersion,
+ DWORD dwHighVersion,
+ LPDWORD lpdwExtVersion
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneNegotiateTSPIVersion(
+ DWORD dwDeviceID,
+ DWORD dwLowVersion,
+ DWORD dwHighVersion,
+ LPDWORD lpdwTSPIVersion
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneOpen(
+ DWORD dwDeviceID,
+ HTAPIPHONE htPhone,
+ LPHDRVPHONE lphdPhone,
+ DWORD dwTSPIVersion,
+ PHONEEVENT lpfnEventProc
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneSelectExtVersion(
+ HDRVPHONE hdPhone,
+ DWORD dwExtVersion
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneSetButtonInfo(
+ DRV_REQUESTID dwRequestID,
+ HDRVPHONE hdPhone,
+ DWORD dwButtonLampID,
+ LPPHONEBUTTONINFO const lpButtonInfo
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneSetData(
+ DRV_REQUESTID dwRequestID,
+ HDRVPHONE hdPhone,
+ DWORD dwDataID,
+ LPVOID const lpData,
+ DWORD dwSize
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_phoneSetDisplay(
+ DRV_REQUESTID dwRequestID,
+ HDRVPHONE hdPhone,
+ DWORD dwRow,
+ DWORD dwColumn,
+ LPCWSTR lpsDisplay,
+ DWORD dwSize
+ );
+#else
+LONG
+TSPIAPI
+TSPI_phoneSetDisplay(
+ DRV_REQUESTID dwRequestID,
+ HDRVPHONE hdPhone,
+ DWORD dwRow,
+ DWORD dwColumn,
+ LPCSTR lpsDisplay,
+ DWORD dwSize
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_phoneSetGain(
+ DRV_REQUESTID dwRequestID,
+ HDRVPHONE hdPhone,
+ DWORD dwHookSwitchDev,
+ DWORD dwGain
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneSetHookSwitch(
+ DRV_REQUESTID dwRequestID,
+ HDRVPHONE hdPhone,
+ DWORD dwHookSwitchDevs,
+ DWORD dwHookSwitchMode
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneSetLamp(
+ DRV_REQUESTID dwRequestID,
+ HDRVPHONE hdPhone,
+ DWORD dwButtonLampID,
+ DWORD dwLampMode
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneSetRing(
+ DRV_REQUESTID dwRequestID,
+ HDRVPHONE hdPhone,
+ DWORD dwRingMode,
+ DWORD dwVolume
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneSetStatusMessages(
+ HDRVPHONE hdPhone,
+ DWORD dwPhoneStates,
+ DWORD dwButtonModes,
+ DWORD dwButtonStates
+ );
+
+LONG
+TSPIAPI
+TSPI_phoneSetVolume(
+ DRV_REQUESTID dwRequestID,
+ HDRVPHONE hdPhone,
+ DWORD dwHookSwitchDev,
+ DWORD dwVolume
+ );
+
+
+
+LONG
+TSPIAPI
+TSPI_providerCreateLineDevice( // TSPI v1.4
+ DWORD dwTempID,
+ DWORD dwDeviceID
+ );
+
+LONG
+TSPIAPI
+TSPI_providerCreatePhoneDevice( // TSPI v1.4
+ DWORD dwTempID,
+ DWORD dwDeviceID
+ );
+
+LONG
+TSPIAPI
+TSPI_providerEnumDevices( // TSPI v1.4
+ DWORD dwPermanentProviderID,
+ LPDWORD lpdwNumLines,
+ LPDWORD lpdwNumPhones,
+ HPROVIDER hProvider,
+ LINEEVENT lpfnLineCreateProc,
+ PHONEEVENT lpfnPhoneCreateProc
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_providerFreeDialogInstance( // TSPI v2.0
+ HDRVDIALOGINSTANCE hdDlgInst
+ );
+
+LONG
+TSPIAPI
+TSPI_providerGenericDialogData( // TSPI v2.0
+ DWORD dwObjectID,
+ DWORD dwObjectType,
+ LPVOID lpParams,
+ DWORD dwSize
+ );
+#endif
+
+LONG
+TSPIAPI
+TSPI_providerInit(
+ DWORD dwTSPIVersion,
+ DWORD dwPermanentProviderID,
+ DWORD dwLineDeviceIDBase,
+ DWORD dwPhoneDeviceIDBase,
+ DWORD dwNumLines,
+ DWORD dwNumPhones,
+ ASYNC_COMPLETION lpfnCompletionProc
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+ ,
+ LPDWORD lpdwTSPIOptions // TSPI v2.0
+#endif
+ );
+
+LONG
+TSPIAPI
+TSPI_providerInstall(
+ HWND hwndOwner,
+ DWORD dwPermanentProviderID
+ );
+
+LONG
+TSPIAPI
+TSPI_providerRemove(
+ HWND hwndOwner,
+ DWORD dwPermanentProviderID
+ );
+
+LONG
+TSPIAPI
+TSPI_providerShutdown(
+ DWORD dwTSPIVersion
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+ ,
+ DWORD dwPermanentProviderID // TSPI v2.0
+#endif
+ );
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+LONG
+TSPIAPI
+TSPI_providerUIIdentify( // TSPI v2.0
+ LPWSTR lpszUIDLLName
+ );
+#endif
+
+
+
+#if (TAPI_CURRENT_VERSION >= 0x00020000)
+//
+// The following function prototypes pertain
+// to a service provider's UI module
+//
+
+LONG
+TSPIAPI
+TUISPI_lineConfigDialog( // TSPI v2.0
+ TUISPIDLLCALLBACK lpfnUIDLLCallback,
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCWSTR lpszDeviceClass
+ );
+
+LONG
+TSPIAPI
+TUISPI_lineConfigDialogEdit( // TSPI v2.0
+ TUISPIDLLCALLBACK lpfnUIDLLCallback,
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCWSTR lpszDeviceClass,
+ LPVOID const lpDeviceConfigIn,
+ DWORD dwSize,
+ LPVARSTRING lpDeviceConfigOut
+ );
+
+LONG
+TSPIAPI
+TUISPI_phoneConfigDialog( // TSPI v2.0
+ TUISPIDLLCALLBACK lpfnUIDLLCallback,
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCWSTR lpszDeviceClass
+ );
+
+LONG
+TSPIAPI
+TUISPI_providerConfig( // TSPI v2.0
+ TUISPIDLLCALLBACK lpfnUIDLLCallback,
+ HWND hwndOwner,
+ DWORD dwPermanentProviderID
+ );
+
+LONG
+TSPIAPI
+TUISPI_providerGenericDialog( // TSPI v2.0
+ TUISPIDLLCALLBACK lpfnUIDLLCallback,
+ HTAPIDIALOGINSTANCE htDlgInst,
+ LPVOID lpParams,
+ DWORD dwSize,
+ HANDLE hEvent
+ );
+
+LONG
+TSPIAPI
+TUISPI_providerGenericDialogData( // TSPI v2.0
+ HTAPIDIALOGINSTANCE htDlgInst,
+ LPVOID lpParams,
+ DWORD dwSize
+ );
+
+LONG
+TSPIAPI
+TUISPI_providerInstall( // TSPI v2.0
+ TUISPIDLLCALLBACK lpfnUIDLLCallback,
+ HWND hwndOwner,
+ DWORD dwPermanentProviderID
+ );
+
+LONG
+TSPIAPI
+TUISPI_providerRemove( // TSPI v2.0
+ TUISPIDLLCALLBACK lpfnUIDLLCallback,
+ HWND hwndOwner,
+ DWORD dwPermanentProviderID
+ );
+
+#else
+
+//
+// The following were obsoleted by the above (but are needed to build 1.4 SPs)
+//
+LONG TSPIAPI TSPI_lineConfigDialog(
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCSTR lpszDeviceClass);
+
+LONG TSPIAPI TSPI_lineConfigDialogEdit(
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCSTR lpszDeviceClass,
+ LPVOID const lpDeviceConfigIn,
+ DWORD dwSize,
+ LPVARSTRING lpDeviceConfigOut);
+
+LONG TSPIAPI TSPI_phoneConfigDialog(
+ DWORD dwDeviceID,
+ HWND hwndOwner,
+ LPCSTR lpszDeviceClass);
+
+LONG TSPIAPI TSPI_providerConfig(
+ HWND hwndOwner,
+ DWORD dwPermanentProviderID);
+
+
+#endif
+
+
+
+
+#if (TAPI_CURRENT_VERSION < 0x00020000)
+
+//
+// The following macros are the ordinal numbers of the exported tspi functions
+//
+
+#define TSPI_PROC_BASE 500
+
+#define TSPI_LINEACCEPT (TSPI_PROC_BASE + 0)
+#define TSPI_LINEADDTOCONFERENCE (TSPI_PROC_BASE + 1)
+#define TSPI_LINEANSWER (TSPI_PROC_BASE + 2)
+#define TSPI_LINEBLINDTRANSFER (TSPI_PROC_BASE + 3)
+#define TSPI_LINECLOSE (TSPI_PROC_BASE + 4)
+#define TSPI_LINECLOSECALL (TSPI_PROC_BASE + 5)
+#define TSPI_LINECOMPLETECALL (TSPI_PROC_BASE + 6)
+#define TSPI_LINECOMPLETETRANSFER (TSPI_PROC_BASE + 7)
+#define TSPI_LINECONDITIONALMEDIADETECTION (TSPI_PROC_BASE + 8)
+#define TSPI_LINECONFIGDIALOG (TSPI_PROC_BASE + 9)
+#define TSPI_LINEDEVSPECIFIC (TSPI_PROC_BASE + 10)
+#define TSPI_LINEDEVSPECIFICFEATURE (TSPI_PROC_BASE + 11)
+#define TSPI_LINEDIAL (TSPI_PROC_BASE + 12)
+#define TSPI_LINEDROP (TSPI_PROC_BASE + 13)
+#define TSPI_LINEFORWARD (TSPI_PROC_BASE + 14)
+#define TSPI_LINEGATHERDIGITS (TSPI_PROC_BASE + 15)
+#define TSPI_LINEGENERATEDIGITS (TSPI_PROC_BASE + 16)
+#define TSPI_LINEGENERATETONE (TSPI_PROC_BASE + 17)
+#define TSPI_LINEGETADDRESSCAPS (TSPI_PROC_BASE + 18)
+#define TSPI_LINEGETADDRESSID (TSPI_PROC_BASE + 19)
+#define TSPI_LINEGETADDRESSSTATUS (TSPI_PROC_BASE + 20)
+#define TSPI_LINEGETCALLADDRESSID (TSPI_PROC_BASE + 21)
+#define TSPI_LINEGETCALLINFO (TSPI_PROC_BASE + 22)
+#define TSPI_LINEGETCALLSTATUS (TSPI_PROC_BASE + 23)
+#define TSPI_LINEGETDEVCAPS (TSPI_PROC_BASE + 24)
+#define TSPI_LINEGETDEVCONFIG (TSPI_PROC_BASE + 25)
+#define TSPI_LINEGETEXTENSIONID (TSPI_PROC_BASE + 26)
+#define TSPI_LINEGETICON (TSPI_PROC_BASE + 27)
+#define TSPI_LINEGETID (TSPI_PROC_BASE + 28)
+#define TSPI_LINEGETLINEDEVSTATUS (TSPI_PROC_BASE + 29)
+#define TSPI_LINEGETNUMADDRESSIDS (TSPI_PROC_BASE + 30)
+#define TSPI_LINEHOLD (TSPI_PROC_BASE + 31)
+#define TSPI_LINEMAKECALL (TSPI_PROC_BASE + 32)
+#define TSPI_LINEMONITORDIGITS (TSPI_PROC_BASE + 33)
+#define TSPI_LINEMONITORMEDIA (TSPI_PROC_BASE + 34)
+#define TSPI_LINEMONITORTONES (TSPI_PROC_BASE + 35)
+#define TSPI_LINENEGOTIATEEXTVERSION (TSPI_PROC_BASE + 36)
+#define TSPI_LINENEGOTIATETSPIVERSION (TSPI_PROC_BASE + 37)
+#define TSPI_LINEOPEN (TSPI_PROC_BASE + 38)
+#define TSPI_LINEPARK (TSPI_PROC_BASE + 39)
+#define TSPI_LINEPICKUP (TSPI_PROC_BASE + 40)
+#define TSPI_LINEPREPAREADDTOCONFERENCE (TSPI_PROC_BASE + 41)
+#define TSPI_LINEREDIRECT (TSPI_PROC_BASE + 42)
+#define TSPI_LINEREMOVEFROMCONFERENCE (TSPI_PROC_BASE + 43)
+#define TSPI_LINESECURECALL (TSPI_PROC_BASE + 44)
+#define TSPI_LINESELECTEXTVERSION (TSPI_PROC_BASE + 45)
+#define TSPI_LINESENDUSERUSERINFO (TSPI_PROC_BASE + 46)
+#define TSPI_LINESETAPPSPECIFIC (TSPI_PROC_BASE + 47)
+#define TSPI_LINESETCALLPARAMS (TSPI_PROC_BASE + 48)
+#define TSPI_LINESETDEFAULTMEDIADETECTION (TSPI_PROC_BASE + 49)
+#define TSPI_LINESETDEVCONFIG (TSPI_PROC_BASE + 50)
+#define TSPI_LINESETMEDIACONTROL (TSPI_PROC_BASE + 51)
+#define TSPI_LINESETMEDIAMODE (TSPI_PROC_BASE + 52)
+#define TSPI_LINESETSTATUSMESSAGES (TSPI_PROC_BASE + 53)
+#define TSPI_LINESETTERMINAL (TSPI_PROC_BASE + 54)
+#define TSPI_LINESETUPCONFERENCE (TSPI_PROC_BASE + 55)
+#define TSPI_LINESETUPTRANSFER (TSPI_PROC_BASE + 56)
+#define TSPI_LINESWAPHOLD (TSPI_PROC_BASE + 57)
+#define TSPI_LINEUNCOMPLETECALL (TSPI_PROC_BASE + 58)
+#define TSPI_LINEUNHOLD (TSPI_PROC_BASE + 59)
+#define TSPI_LINEUNPARK (TSPI_PROC_BASE + 60)
+#define TSPI_PHONECLOSE (TSPI_PROC_BASE + 61)
+#define TSPI_PHONECONFIGDIALOG (TSPI_PROC_BASE + 62)
+#define TSPI_PHONEDEVSPECIFIC (TSPI_PROC_BASE + 63)
+#define TSPI_PHONEGETBUTTONINFO (TSPI_PROC_BASE + 64)
+#define TSPI_PHONEGETDATA (TSPI_PROC_BASE + 65)
+#define TSPI_PHONEGETDEVCAPS (TSPI_PROC_BASE + 66)
+#define TSPI_PHONEGETDISPLAY (TSPI_PROC_BASE + 67)
+#define TSPI_PHONEGETEXTENSIONID (TSPI_PROC_BASE + 68)
+#define TSPI_PHONEGETGAIN (TSPI_PROC_BASE + 69)
+#define TSPI_PHONEGETHOOKSWITCH (TSPI_PROC_BASE + 70)
+#define TSPI_PHONEGETICON (TSPI_PROC_BASE + 71)
+#define TSPI_PHONEGETID (TSPI_PROC_BASE + 72)
+#define TSPI_PHONEGETLAMP (TSPI_PROC_BASE + 73)
+#define TSPI_PHONEGETRING (TSPI_PROC_BASE + 74)
+#define TSPI_PHONEGETSTATUS (TSPI_PROC_BASE + 75)
+#define TSPI_PHONEGETVOLUME (TSPI_PROC_BASE + 76)
+#define TSPI_PHONENEGOTIATEEXTVERSION (TSPI_PROC_BASE + 77)
+#define TSPI_PHONENEGOTIATETSPIVERSION (TSPI_PROC_BASE + 78)
+#define TSPI_PHONEOPEN (TSPI_PROC_BASE + 79)
+#define TSPI_PHONESELECTEXTVERSION (TSPI_PROC_BASE + 80)
+#define TSPI_PHONESETBUTTONINFO (TSPI_PROC_BASE + 81)
+#define TSPI_PHONESETDATA (TSPI_PROC_BASE + 82)
+#define TSPI_PHONESETDISPLAY (TSPI_PROC_BASE + 83)
+#define TSPI_PHONESETGAIN (TSPI_PROC_BASE + 84)
+#define TSPI_PHONESETHOOKSWITCH (TSPI_PROC_BASE + 85)
+#define TSPI_PHONESETLAMP (TSPI_PROC_BASE + 86)
+#define TSPI_PHONESETRING (TSPI_PROC_BASE + 87)
+#define TSPI_PHONESETSTATUSMESSAGES (TSPI_PROC_BASE + 88)
+#define TSPI_PHONESETVOLUME (TSPI_PROC_BASE + 89)
+#define TSPI_PROVIDERCONFIG (TSPI_PROC_BASE + 90)
+#define TSPI_PROVIDERINIT (TSPI_PROC_BASE + 91)
+#define TSPI_PROVIDERINSTALL (TSPI_PROC_BASE + 92)
+#define TSPI_PROVIDERREMOVE (TSPI_PROC_BASE + 93)
+#define TSPI_PROVIDERSHUTDOWN (TSPI_PROC_BASE + 94)
+
+#define TSPI_PROVIDERENUMDEVICES (TSPI_PROC_BASE + 95) // TSPI v1.4
+#define TSPI_LINEDROPONCLOSE (TSPI_PROC_BASE + 96) // TSPI v1.4
+#define TSPI_LINEDROPNOOWNER (TSPI_PROC_BASE + 97) // TSPI v1.4
+#define TSPI_PROVIDERCREATELINEDEVICE (TSPI_PROC_BASE + 98) // TSPI v1.4
+#define TSPI_PROVIDERCREATEPHONEDEVICE (TSPI_PROC_BASE + 99) // TSPI v1.4
+#define TSPI_LINESETCURRENTLOCATION (TSPI_PROC_BASE + 100) // TSPI v1.4
+#define TSPI_LINECONFIGDIALOGEDIT (TSPI_PROC_BASE + 101) // TSPI v1.4
+#define TSPI_LINERELEASEUSERUSERINFO (TSPI_PROC_BASE + 102) // TSPI v1.4
+
+#endif
+
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif // TSPI_H
diff --git a/public/sdk/inc/tuple.h b/public/sdk/inc/tuple.h
new file mode 100644
index 000000000..81406c4de
--- /dev/null
+++ b/public/sdk/inc/tuple.h
@@ -0,0 +1,243 @@
+/*++
+
+Copyright (c) 1994 Microsoft Corporation
+
+Module Name:
+
+ 82365sl.h
+
+Abstract:
+
+ This module defines the PCMCIA tuple structures.
+
+Author(s):
+
+ Bob Rinne (BobRi) 2-Aug-1994
+ prototype from Jeff McLeman (mcleman@zso.dec.com)
+
+Notes:
+
+ Tuple codes and names derived from the "PCMCIA PC CARD STANDARD"
+ Release 2.01 CARD METAFORMAT section (Basic Compatibility Layer 1)
+
+Revisions:
+
+--*/
+
+//
+// Tuple codes
+//
+
+#define CISTPL_NULL 0x00
+#define CISTPL_DEVICE 0x01
+#define CISTPL_CHECKSUM 0x10
+#define CISTPL_LONGLINK_A 0x11
+#define CISTPL_LONGLINK_C 0x12
+#define CISTPL_LINKTARGET 0x13
+#define CISTPL_NO_LINK 0x14
+#define CISTPL_VERS_1 0x15
+#define CISTPL_ALTSTR 0x16
+#define CISTPL_DEVICE_A 0x17
+#define CISTPL_JEDEC_C 0x18
+#define CISTPL_JEDEC_A 0x19
+#define CISTPL_CONFIG 0x1a
+#define CISTPL_CFTABLE_ENTRY 0x1b
+#define CISTPL_DEVICE_OC 0x1c
+#define CISTPL_DEVICE_OA 0x1d
+#define CISTPL_GEODEVICE 0x1e
+#define CISTPL_GEODEVICE_A 0x1f
+#define CISTPL_MANFID 0x20
+#define CISTPL_FUNCID 0x21
+#define CISTPL_FUNCE 0x22
+#define CISTPL_VERS_2 0x40
+#define CISTPL_FORMAT 0x41
+#define CISTPL_GEOMETRY 0x42
+#define CISTPL_BYTEORDER 0x43
+#define CISTPL_DATE 0x44
+#define CISTPL_BATTERY 0x45
+#define CISTPL_ORG 0x46
+#define CISTPL_END 0xFF
+
+//
+// Tuple structures and offsets - used based on tuple code.
+//
+
+//
+// UCHAR
+// LinkByte(
+// IN PUCHAR TupleBase
+// );
+//
+// Routine Description:
+//
+// This returns the contents of the link byte for the tuple
+// pointer passed in.
+//
+// Arguments:
+//
+// TupleBase - a pointer to the current tuple.
+//
+// Return Values:
+//
+// The contents of the link byte in the tuple.
+//
+
+#define LinkByte(TUPLE_BASE) (*(TUPLE_BASE + 1))
+
+//
+// PUCHAR
+// NextTuple(
+// IN PUCHAR TupleBase
+// );
+//
+// Routine Description:
+//
+// This macro locates the next tuple in a stream of bytes given a pointer
+// to the current tuple. This is done by adding the appropriate
+// link value to the current pointer.
+//
+// Arguments:
+//
+// TupleBase - a pointer to the current tuple.
+//
+// Return Values:
+//
+// A pointer to the next tuple.
+//
+
+#define NextTuple(TUPLE_BASE) (*TUPLE_BASE ? \
+ /* there is a link pointer case */ \
+ (TUPLE_BASE + LinkByte(TUPLE_BASE) + 1 : \
+ /* this is a NULL tuple */ \
+ (TUPLE_BASE + 1)
+
+
+
+//
+// Device Tuple information.
+//
+
+#define DSPEED_MASK 0x07
+#define DeviceSpeedField(X) (X & DSPEED_MASK)
+#define WPS_MASK 0x08
+#define DeviceWPS(X) ((X & WPS_MASK) >> 3)
+#define DTYPE_MASK 0xF0
+#define DeviceTypeCode(X) ((X & DTYPE_MASK) >> 4)
+
+#define DTYPE_NULL 0x00
+#define DTYPE_ROM 0x01
+#define DTYPE_OTPROM 0x02
+#define DTYPE_EPROM 0x03
+#define DTYPE_EEPROM 0x04
+#define DTYPE_FLASH 0x05
+#define DTYPE_SRAM 0x06
+#define DTYPE_DRAM 0x07
+#define DTYPE_FUNCSPEC 0x0d
+#define DTYPE_EXTEND 0x0e
+
+#define DSPEED_NULL 0x00
+#define DSPEED_250NS 0x01
+#define DSPEED_200NS 0x02
+#define DSPEED_150NS 0x03
+#define DSPEED_100NS 0x04
+#define DSPEED_RES1 0x05
+#define DSPEED_RES2 0x06
+#define DSPEED_EXT 0x07
+
+
+//
+// extended speed definitions
+//
+
+#define SPEED_MANTISSA_MASK 0x78
+#define SpeedMantissa(X) ((X & SPEED_MANTISSA_MASK) > 3)
+#define SPEED_EXPONENT_MASK 0x07
+#define SpeedExponent(X) (X & SPEED_EXPONENT_MASK)
+#define SPEED_EXT_MASK 0x80
+#define SpeedEXT(X) ((X & SPEED_EXT_MASK) > 7)
+
+#define MANTISSA_RES1 0x00
+#define MANTISSA_1_0 0x01
+#define MANTISSA_1_2 0x02
+#define MANTISSA_1_3 0x03
+#define MANTISSA_1_5 0x04
+#define MANTISSA_2_0 0x05
+#define MANTISSA_2_5 0x06
+#define MANTISSA_3_0 0x07
+#define MANTISSA_3_5 0x08
+#define MANTISSA_4_0 0x09
+#define MANTISSA_4_5 0x0a
+#define MANTISSA_5_0 0x0b
+#define MANTISSA_5_5 0x0c
+#define MANTISSA_6_0 0x0d
+#define MANTISSA_7_0 0x0e
+#define MANTISSA_8_0 0x0f
+
+#define EXPONENT_1ns 0x00
+#define EXPONENT_10ns 0x01
+#define EXPONENT_100ns 0x02
+#define EXPONENT_1us 0x03
+#define EXPONENT_10us 0x04
+#define EXPONENT_100us 0x05
+#define EXPONENT_1ms 0x06
+#define EXPONENT_10ms 0x07
+
+//
+// Configuration tuple
+//
+
+#define TPCC_RFSZ_MASK 0xc0
+#define TpccRfsz(X) ((X & TPCC_RFSZ_MASK) >> 6)
+#define TPCC_RMSZ_MASK 0x3c
+#define TpccRmsz(X) ((X & TPCC_RMSZ_MASK) >> 2)
+#define TPCC_RASZ_MASK 0x03
+#define TpccRasz(X) (X & TPCC_RASZ_MASK)
+
+//
+// CFTABLE_ENTRY data items
+//
+
+#define IntFace(X) ((X & 0x80) >> 7)
+#define Default(X) ((X & 0x40) >> 6)
+#define ConfigEntryNumber(X) (X & 0x3f)
+
+#define PowerInformation(X) (X & 0x03)
+#define TimingInformation(X) ((X & 0x04) >> 2)
+#define IoSpaceInformation(X) ((X & 0x08) >> 3)
+#define IRQInformation(X) ((X & 0x10) >> 4)
+#define MemSpaceInformation(X) ((X & 0x60) >> 5)
+#define MiscInformation(X) ((X & 0x80) >> 7)
+
+//
+// Power information (part of CISTPL_CFTABLE_ENTRY) defines.
+//
+
+#define EXTENSION_BYTE_FOLLOWS 0x80
+
+//
+// Io Space information (part of CISTPL_CFTABLE_ENTRY) defines.
+//
+
+#define IO_ADDRESS_LINES_MASK 0x1f
+#define RANGE_MASK 0x0f
+
+#define Is8BitAccess(X) ((X & 0x20) >> 5)
+#define Is16BitAccess(X) ((X & 0x40) >> 6)
+#define HasRanges(X) ((X & 0x80) >> 7)
+
+#define GetAddressSize(X) ((X & 0x30) >> 4)
+#define GetLengthSize(X) ((X & 0xc0) >> 6)
+
+//
+// CISTPL_FUNCID function codes
+//
+
+#define PCCARD_TYPE_MULTIFUNCTION 0
+#define PCCARD_TYPE_MEMORY 1
+#define PCCARD_TYPE_SERIAL 2
+#define PCCARD_TYPE_PARALLEL 3
+#define PCCARD_TYPE_ATA 4
+#define PCCARD_TYPE_VIDEO 5
+#define PCCARD_TYPE_NETWORK 6
+#define PCCARD_TYPE_AIMS 7
+#define PCCARD_TYPE_RESERVED 0xff
diff --git a/public/sdk/inc/unknwn.h b/public/sdk/inc/unknwn.h
new file mode 100644
index 000000000..3f845e290
--- /dev/null
+++ b/public/sdk/inc/unknwn.h
@@ -0,0 +1,341 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:36:17 1996
+ */
+/* Compiler settings for unknwn.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __unknwn_h__
+#define __unknwn_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IUnknown_FWD_DEFINED__
+#define __IUnknown_FWD_DEFINED__
+typedef interface IUnknown IUnknown;
+#endif /* __IUnknown_FWD_DEFINED__ */
+
+
+#ifndef __IClassFactory_FWD_DEFINED__
+#define __IClassFactory_FWD_DEFINED__
+typedef interface IClassFactory IClassFactory;
+#endif /* __IClassFactory_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "wtypes.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:36:17 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IUnknown_INTERFACE_DEFINED__
+#define __IUnknown_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IUnknown
+ * at Fri Nov 15 09:36:17 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef /* [unique] */ IUnknown __RPC_FAR *LPUNKNOWN;
+
+//////////////////////////////////////////////////////////////////
+// IID_IUnknown and all other system IIDs are provided in UUID.LIB
+// Link that library in with your proxies, clients and servers
+//////////////////////////////////////////////////////////////////
+
+EXTERN_C const IID IID_IUnknown;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IUnknown
+ {
+ public:
+ BEGIN_INTERFACE
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE AddRef( void) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE Release( void) = 0;
+
+ END_INTERFACE
+ };
+
+#else /* C style interface */
+
+ typedef struct IUnknownVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IUnknown __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IUnknown __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IUnknown __RPC_FAR * This);
+
+ END_INTERFACE
+ } IUnknownVtbl;
+
+ interface IUnknown
+ {
+ CONST_VTBL struct IUnknownVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IUnknown_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IUnknown_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IUnknown_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(
+ IUnknown __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+
+void __RPC_STUB IUnknown_QueryInterface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(
+ IUnknown __RPC_FAR * This);
+
+
+void __RPC_STUB IUnknown_AddRef_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(
+ IUnknown __RPC_FAR * This);
+
+
+void __RPC_STUB IUnknown_Release_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IUnknown_INTERFACE_DEFINED__ */
+
+
+#ifndef __IClassFactory_INTERFACE_DEFINED__
+#define __IClassFactory_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IClassFactory
+ * at Fri Nov 15 09:36:17 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IClassFactory __RPC_FAR *LPCLASSFACTORY;
+
+
+EXTERN_C const IID IID_IClassFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IClassFactory : public IUnknown
+ {
+ public:
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE CreateInstance(
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE LockServer(
+ /* [in] */ BOOL fLock) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IClassFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IClassFactory __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IClassFactory __RPC_FAR * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateInstance )(
+ IClassFactory __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *LockServer )(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+ END_INTERFACE
+ } IClassFactoryVtbl;
+
+ interface IClassFactory
+ {
+ CONST_VTBL struct IClassFactoryVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IClassFactory_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IClassFactory_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IClassFactory_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IClassFactory_CreateInstance(This,pUnkOuter,riid,ppvObject) \
+ (This)->lpVtbl -> CreateInstance(This,pUnkOuter,riid,ppvObject)
+
+#define IClassFactory_LockServer(This,fLock) \
+ (This)->lpVtbl -> LockServer(This,fLock)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IClassFactory_RemoteCreateInstance_Proxy(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObject);
+
+
+void __RPC_STUB IClassFactory_RemoteCreateInstance_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT __stdcall IClassFactory_RemoteLockServer_Proxy(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+
+void __RPC_STUB IClassFactory_RemoteLockServer_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IClassFactory_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Proxy(
+ IClassFactory __RPC_FAR * This,
+ /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Stub(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObject);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Proxy(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+
+/* [call_as] */ HRESULT __stdcall IClassFactory_LockServer_Stub(
+ IClassFactory __RPC_FAR * This,
+ /* [in] */ BOOL fLock);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/unknwn.idl b/public/sdk/inc/unknwn.idl
new file mode 100644
index 000000000..d80bcac77
--- /dev/null
+++ b/public/sdk/inc/unknwn.idl
@@ -0,0 +1,75 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: unknwn.idl
+//
+// Contents: IUnknown interface definition
+//
+//
+//--------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "wtypes.idl";
+#endif
+
+[
+ local,
+ object,
+ uuid(00000000-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IUnknown
+{
+ typedef [unique] IUnknown *LPUNKNOWN;
+
+cpp_quote("//////////////////////////////////////////////////////////////////")
+cpp_quote("// IID_IUnknown and all other system IIDs are provided in UUID.LIB")
+cpp_quote("// Link that library in with your proxies, clients and servers")
+cpp_quote("//////////////////////////////////////////////////////////////////")
+
+ HRESULT QueryInterface(
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvObject);
+ ULONG AddRef();
+ ULONG Release();
+}
+
+[
+ object,
+ uuid(00000001-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IClassFactory : IUnknown
+{
+ typedef [unique] IClassFactory * LPCLASSFACTORY;
+
+ [local]
+ HRESULT CreateInstance(
+ [in, unique] IUnknown * pUnkOuter,
+ [in] REFIID riid,
+ [out, iid_is(riid)] void **ppvObject);
+
+ [call_as(CreateInstance)]
+ HRESULT RemoteCreateInstance(
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown ** ppvObject);
+
+ [local]
+ HRESULT LockServer(
+ [in] BOOL fLock);
+
+ [call_as(LockServer)]
+ HRESULT __stdcall RemoteLockServer(
+ [in] BOOL fLock);
+}
diff --git a/public/sdk/inc/urlmon.h b/public/sdk/inc/urlmon.h
new file mode 100644
index 000000000..21e768530
--- /dev/null
+++ b/public/sdk/inc/urlmon.h
@@ -0,0 +1,2362 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.15 */
+/* at Fri Jun 14 20:22:12 1996
+ */
+/* Compiler settings for urlmon.idl:
+ Oi, W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __urlmon_h__
+#define __urlmon_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IPersistMoniker_FWD_DEFINED__
+#define __IPersistMoniker_FWD_DEFINED__
+typedef interface IPersistMoniker IPersistMoniker;
+#endif /* __IPersistMoniker_FWD_DEFINED__ */
+
+
+#ifndef __IBindProtocol_FWD_DEFINED__
+#define __IBindProtocol_FWD_DEFINED__
+typedef interface IBindProtocol IBindProtocol;
+#endif /* __IBindProtocol_FWD_DEFINED__ */
+
+
+#ifndef __IBinding_FWD_DEFINED__
+#define __IBinding_FWD_DEFINED__
+typedef interface IBinding IBinding;
+#endif /* __IBinding_FWD_DEFINED__ */
+
+
+#ifndef __IBindStatusCallback_FWD_DEFINED__
+#define __IBindStatusCallback_FWD_DEFINED__
+typedef interface IBindStatusCallback IBindStatusCallback;
+#endif /* __IBindStatusCallback_FWD_DEFINED__ */
+
+
+#ifndef __IAuthenticate_FWD_DEFINED__
+#define __IAuthenticate_FWD_DEFINED__
+typedef interface IAuthenticate IAuthenticate;
+#endif /* __IAuthenticate_FWD_DEFINED__ */
+
+
+#ifndef __IHttpNegotiate_FWD_DEFINED__
+#define __IHttpNegotiate_FWD_DEFINED__
+typedef interface IHttpNegotiate IHttpNegotiate;
+#endif /* __IHttpNegotiate_FWD_DEFINED__ */
+
+
+#ifndef __IWindowForBindingUI_FWD_DEFINED__
+#define __IWindowForBindingUI_FWD_DEFINED__
+typedef interface IWindowForBindingUI IWindowForBindingUI;
+#endif /* __IWindowForBindingUI_FWD_DEFINED__ */
+
+
+#ifndef __ICodeInstall_FWD_DEFINED__
+#define __ICodeInstall_FWD_DEFINED__
+typedef interface ICodeInstall ICodeInstall;
+#endif /* __ICodeInstall_FWD_DEFINED__ */
+
+
+#ifndef __IWinInetInfo_FWD_DEFINED__
+#define __IWinInetInfo_FWD_DEFINED__
+typedef interface IWinInetInfo IWinInetInfo;
+#endif /* __IWinInetInfo_FWD_DEFINED__ */
+
+
+#ifndef __IHttpSecurity_FWD_DEFINED__
+#define __IHttpSecurity_FWD_DEFINED__
+typedef interface IHttpSecurity IHttpSecurity;
+#endif /* __IHttpSecurity_FWD_DEFINED__ */
+
+
+#ifndef __IWinInetHttpInfo_FWD_DEFINED__
+#define __IWinInetHttpInfo_FWD_DEFINED__
+typedef interface IWinInetHttpInfo IWinInetHttpInfo;
+#endif /* __IWinInetHttpInfo_FWD_DEFINED__ */
+
+
+#ifndef __IBindHost_FWD_DEFINED__
+#define __IBindHost_FWD_DEFINED__
+typedef interface IBindHost IBindHost;
+#endif /* __IBindHost_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+#include "oleidl.h"
+#include "servprov.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright 1995 - 1996 Microsoft Corporation. All Rights Reserved.
+//
+// File: urlmon.h
+
+#pragma comment(lib,"uuid3.lib")
+//
+//--------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+// These are for backwards compatibility with previous URLMON versions
+#define BINDF_DONTUSECACHE BINDF_GETNEWESTVERSION
+#define BINDF_DONTPUTINCACHE BINDF_NOWRITECACHE
+#define BINDF_NOCOPYDATA BINDF_PULLDATA
+EXTERN_C const IID IID_IAsyncMoniker;
+EXTERN_C const IID CLSID_StdURLMoniker;
+EXTERN_C const IID CLSID_HttpProtocol;
+EXTERN_C const IID CLSID_FtpProtocol;
+EXTERN_C const IID CLSID_GopherProtocol;
+EXTERN_C const IID CLSID_HttpSProtocol;
+EXTERN_C const IID CLSID_FileProtocol;
+EXTERN_C const IID CLSID_MkProtocol;
+
+#define SZ_URLCONTEXT OLESTR("URL Context")
+#define SZ_ASYNC_CALLEE OLESTR("AsyncCallee")
+#define MKSYS_URLMONIKER 6
+
+STDAPI CreateURLMoniker(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER FAR * ppmk);
+STDAPI GetClassURL(LPCWSTR szURL, CLSID *pClsID);
+STDAPI CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *pBSCb,
+ IEnumFORMATETC *pEFetc, IBindCtx **ppBC);
+STDAPI MkParseDisplayNameEx(IBindCtx *pbc, LPCWSTR szDisplayName, ULONG *pchEaten,
+ LPMONIKER *ppmk);
+STDAPI RegisterBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb,
+ IBindStatusCallback** ppBSCBPrev, DWORD dwReserved);
+STDAPI RevokeBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb);
+STDAPI GetClassFileOrMime(LPBC pBC, LPCWSTR szFilename, LPVOID pBuffer, DWORD cbSize, LPCWSTR szMime, DWORD dwReserved, CLSID *pclsid);
+STDAPI IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved);
+STDAPI CoGetClassObjectFromURL( REFCLSID rCLASSID,
+ LPCWSTR szCODE, DWORD dwFileVersionMS,
+ DWORD dwFileVersionLS, LPCWSTR szTYPE,
+ LPBINDCTX pBindCtx, DWORD dwClsContext,
+ LPVOID pvReserved, REFIID riid, LPVOID * ppv);
+
+//helper apis
+STDAPI IsAsyncMoniker(IMoniker* pmk);
+STDAPI CreateURLBinding(LPCWSTR lpszUrl, IBindCtx *pbc, IBinding **ppBdg);
+
+STDAPI RegisterMediaTypesW(UINT ctypes, const LPCWSTR* rgszTypes, CLIPFORMAT* rgcfTypes);
+STDAPI RegisterMediaTypes(UINT ctypes, const LPCSTR* rgszTypes, CLIPFORMAT* rgcfTypes);
+STDAPI FindMediaType(LPCSTR rgszTypes, CLIPFORMAT* rgcfTypes);
+STDAPI CreateFormatEnumerator( UINT cfmtetc, FORMATETC* rgfmtetc, IEnumFORMATETC** ppenumfmtetc);
+STDAPI RegisterFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc, DWORD reserved);
+STDAPI RevokeFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc);
+STDAPI RegisterMediaTypeClass(LPBC pBC,UINT ctypes, const LPCSTR* rgszTypes, CLSID *rgclsID, DWORD reserved);
+STDAPI FindMediaTypeClass(LPBC pBC, LPCSTR szType, CLSID *pclsID, DWORD reserved);
+STDAPI FindMediaTypeClass(LPBC pBC, LPCSTR szType, CLSID *pclsID, DWORD reserved);
+STDAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD dwReserved);
+
+// URLMON-specific defines for UrlMkSetSessionOption() above
+#define URLMON_OPTION_USERAGENT 0x10000001
+
+#define CF_NULL 0
+#define CFSTR_MIME_NULL NULL
+#define CFSTR_MIME_FRACTALS (TEXT("application/fractals"))
+#define CFSTR_MIME_RAWDATA (TEXT("application/octet"))
+#define CFSTR_MIME_POSTSCRIPT (TEXT("application/postscript"))
+#define CFSTR_MIME_AIFF (TEXT("audio/aiff"))
+#define CFSTR_MIME_BASICAUDIO (TEXT("audio/basic"))
+#define CFSTR_MIME_WAV (TEXT("audio/wav"))
+#define CFSTR_MIME_X_AIFF (TEXT("audio/x-aiff"))
+#define CFSTR_MIME_X_REALAUDIO (TEXT("audio/x-pn-realaudio"))
+#define CFSTR_MIME_X_WAV (TEXT("audio/x-wav"))
+#define CFSTR_MIME_BMP (TEXT("image/bmp"))
+#define CFSTR_MIME_GIF (TEXT("image/gif"))
+#define CFSTR_MIME_JPEG (TEXT("image/jpeg"))
+#define CFSTR_MIME_PJPEG (TEXT("image/pjpeg"))
+#define CFSTR_MIME_TIFF (TEXT("image/tiff"))
+#define CFSTR_MIME_XBM (TEXT("image/xbm"))
+#define CFSTR_MIME_X_BITMAP (TEXT("image/x-bitmap"))
+#define CFSTR_MIME_HTML (TEXT("text/html"))
+#define CFSTR_MIME_TEXT (TEXT("text/plain"))
+#define CFSTR_MIME_AVI (TEXT("video/avi"))
+#define CFSTR_MIME_MPEG (TEXT("video/mpeg"))
+#define CFSTR_MIME_QUICKTIME (TEXT("video/quicktime"))
+#define CFSTR_MIME_X_MSVIDEO (TEXT("video/x-msvideo"))
+#define CFSTR_MIME_X_SGI_MOVIE (TEXT("video/x-sgi-movie"))
+
+// MessageId: MK_S_ASYNCHRONOUS
+// MessageText: Operation is successful, but will complete asynchronously.
+//
+#define MK_S_ASYNCHRONOUS _HRESULT_TYPEDEF_(0x000401E8L)
+#define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS
+
+#ifndef E_PENDING
+#define E_PENDING _HRESULT_TYPEDEF_(0x8000000AL)
+#endif
+
+//
+// Internet specific error codes
+//
+//#define FACILITY_INTERNET A
+
+// WinINet and protocol specific errors are mapped to one of the following
+// error which are returned in IBSC::OnStopBinding
+//
+//
+#define INET_E_INVALID_URL _HRESULT_TYPEDEF_(0x800A0002L)
+#define INET_E_NO_SESSION _HRESULT_TYPEDEF_(0x800A0003L)
+#define INET_E_CANNOT_CONNECT _HRESULT_TYPEDEF_(0x800A0004L)
+#define INET_E_RESOURCE_NOT_FOUND _HRESULT_TYPEDEF_(0x800A0005L)
+#define INET_E_OBJECT_NOT_FOUND _HRESULT_TYPEDEF_(0x800A0006L)
+#define INET_E_DATA_NOT_AVAILABLE _HRESULT_TYPEDEF_(0x800A0007L)
+#define INET_E_DOWNLOAD_FAILURE _HRESULT_TYPEDEF_(0x800A0008L)
+#define INET_E_AUTHENTICATION_REQUIRED _HRESULT_TYPEDEF_(0x800A0009L)
+#define INET_E_NO_VALID_MEDIA _HRESULT_TYPEDEF_(0x800A000AL)
+#define INET_E_CONNECTION_TIMEOUT _HRESULT_TYPEDEF_(0x800A000BL)
+#define INET_E_INVALID_REQUEST _HRESULT_TYPEDEF_(0x800A000CL)
+#define INET_E_UNKNOWN_PROTOCOL _HRESULT_TYPEDEF_(0x800A000DL)
+#define INET_E_SECURITY_PROBLEM _HRESULT_TYPEDEF_(0x800A000EL)
+#define INET_E_CANNOT_LOAD_DATA _HRESULT_TYPEDEF_(0x800A000FL)
+#define INET_E_CANNOT_INSTANTIATE_OBJECT _HRESULT_TYPEDEF_(0x800A0010L)
+#define INET_E_CANNOT_INSTANCIATE_OBJECT _HRESULT_TYPEDEF_(0x800A0010L)
+#define INET_E_ERROR_FIRST _HRESULT_TYPEDEF_(0x800A0002L)
+#define INET_E_ERROR_LAST INET_E_CANNOT_INSTANCIATE_OBJECT
+#ifndef _LPPERSISTMONIKER_DEFINED
+#define _LPPERSISTMONIKER_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IPersistMoniker_INTERFACE_DEFINED__
+#define __IPersistMoniker_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IPersistMoniker
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IPersistMoniker __RPC_FAR *LPPERSISTMONIKER;
+
+
+EXTERN_C const IID IID_IPersistMoniker;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IPersistMoniker : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetClassID(
+ /* [out] */ CLSID __RPC_FAR *pClassID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Load(
+ /* [in] */ BOOL fFullyAvailable,
+ /* [in] */ IMoniker __RPC_FAR *pimkName,
+ /* [in] */ LPBC pibc,
+ /* [in] */ DWORD grfMode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Save(
+ /* [in] */ IMoniker __RPC_FAR *pimkName,
+ /* [in] */ LPBC pbc,
+ /* [in] */ BOOL fRemember) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SaveCompleted(
+ /* [in] */ IMoniker __RPC_FAR *pimkName,
+ /* [in] */ LPBC pibc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCurMoniker(
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppimkName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IPersistMonikerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IPersistMoniker __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IPersistMoniker __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IPersistMoniker __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetClassID )(
+ IPersistMoniker __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *IsDirty )(
+ IPersistMoniker __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Load )(
+ IPersistMoniker __RPC_FAR * This,
+ /* [in] */ BOOL fFullyAvailable,
+ /* [in] */ IMoniker __RPC_FAR *pimkName,
+ /* [in] */ LPBC pibc,
+ /* [in] */ DWORD grfMode);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Save )(
+ IPersistMoniker __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pimkName,
+ /* [in] */ LPBC pbc,
+ /* [in] */ BOOL fRemember);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SaveCompleted )(
+ IPersistMoniker __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pimkName,
+ /* [in] */ LPBC pibc);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCurMoniker )(
+ IPersistMoniker __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppimkName);
+
+ END_INTERFACE
+ } IPersistMonikerVtbl;
+
+ interface IPersistMoniker
+ {
+ CONST_VTBL struct IPersistMonikerVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IPersistMoniker_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IPersistMoniker_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IPersistMoniker_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IPersistMoniker_GetClassID(This,pClassID) \
+ (This)->lpVtbl -> GetClassID(This,pClassID)
+
+#define IPersistMoniker_IsDirty(This) \
+ (This)->lpVtbl -> IsDirty(This)
+
+#define IPersistMoniker_Load(This,fFullyAvailable,pimkName,pibc,grfMode) \
+ (This)->lpVtbl -> Load(This,fFullyAvailable,pimkName,pibc,grfMode)
+
+#define IPersistMoniker_Save(This,pimkName,pbc,fRemember) \
+ (This)->lpVtbl -> Save(This,pimkName,pbc,fRemember)
+
+#define IPersistMoniker_SaveCompleted(This,pimkName,pibc) \
+ (This)->lpVtbl -> SaveCompleted(This,pimkName,pibc)
+
+#define IPersistMoniker_GetCurMoniker(This,ppimkName) \
+ (This)->lpVtbl -> GetCurMoniker(This,ppimkName)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IPersistMoniker_GetClassID_Proxy(
+ IPersistMoniker __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pClassID);
+
+
+void __RPC_STUB IPersistMoniker_GetClassID_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistMoniker_IsDirty_Proxy(
+ IPersistMoniker __RPC_FAR * This);
+
+
+void __RPC_STUB IPersistMoniker_IsDirty_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistMoniker_Load_Proxy(
+ IPersistMoniker __RPC_FAR * This,
+ /* [in] */ BOOL fFullyAvailable,
+ /* [in] */ IMoniker __RPC_FAR *pimkName,
+ /* [in] */ LPBC pibc,
+ /* [in] */ DWORD grfMode);
+
+
+void __RPC_STUB IPersistMoniker_Load_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistMoniker_Save_Proxy(
+ IPersistMoniker __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pimkName,
+ /* [in] */ LPBC pbc,
+ /* [in] */ BOOL fRemember);
+
+
+void __RPC_STUB IPersistMoniker_Save_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistMoniker_SaveCompleted_Proxy(
+ IPersistMoniker __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pimkName,
+ /* [in] */ LPBC pibc);
+
+
+void __RPC_STUB IPersistMoniker_SaveCompleted_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IPersistMoniker_GetCurMoniker_Proxy(
+ IPersistMoniker __RPC_FAR * This,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppimkName);
+
+
+void __RPC_STUB IPersistMoniker_GetCurMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IPersistMoniker_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0086
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPBINDPROTOCOL_DEFINED
+#define _LPBINDPROTOCOL_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0086_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0086_v0_0_s_ifspec;
+
+#ifndef __IBindProtocol_INTERFACE_DEFINED__
+#define __IBindProtocol_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IBindProtocol
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef /* [unique] */ IBindProtocol __RPC_FAR *LPBINDPROTOCOL;
+
+
+EXTERN_C const IID IID_IBindProtocol;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IBindProtocol : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateBinding(
+ /* [in] */ LPCWSTR szUrl,
+ /* [in] */ IBindCtx __RPC_FAR *pbc,
+ /* [out] */ IBinding __RPC_FAR *__RPC_FAR *ppb) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IBindProtocolVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IBindProtocol __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IBindProtocol __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IBindProtocol __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateBinding )(
+ IBindProtocol __RPC_FAR * This,
+ /* [in] */ LPCWSTR szUrl,
+ /* [in] */ IBindCtx __RPC_FAR *pbc,
+ /* [out] */ IBinding __RPC_FAR *__RPC_FAR *ppb);
+
+ END_INTERFACE
+ } IBindProtocolVtbl;
+
+ interface IBindProtocol
+ {
+ CONST_VTBL struct IBindProtocolVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IBindProtocol_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IBindProtocol_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IBindProtocol_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IBindProtocol_CreateBinding(This,szUrl,pbc,ppb) \
+ (This)->lpVtbl -> CreateBinding(This,szUrl,pbc,ppb)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IBindProtocol_CreateBinding_Proxy(
+ IBindProtocol __RPC_FAR * This,
+ /* [in] */ LPCWSTR szUrl,
+ /* [in] */ IBindCtx __RPC_FAR *pbc,
+ /* [out] */ IBinding __RPC_FAR *__RPC_FAR *ppb);
+
+
+void __RPC_STUB IBindProtocol_CreateBinding_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IBindProtocol_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0087
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPBINDING_DEFINED
+#define _LPBINDING_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0087_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0087_v0_0_s_ifspec;
+
+#ifndef __IBinding_INTERFACE_DEFINED__
+#define __IBinding_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IBinding
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IBinding __RPC_FAR *LPBINDING;
+
+
+EXTERN_C const IID IID_IBinding;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IBinding : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Suspend( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPriority(
+ /* [in] */ LONG nPriority) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPriority(
+ /* [out] */ LONG __RPC_FAR *pnPriority) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBindResult(
+ /* [out] */ CLSID __RPC_FAR *pclsidProtocol,
+ /* [out] */ DWORD __RPC_FAR *pdwResult,
+ /* [out] */ LPWSTR __RPC_FAR *pszResult,
+ /* [out][in] */ DWORD __RPC_FAR *pdwReserved) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IBindingVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IBinding __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IBinding __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IBinding __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Abort )(
+ IBinding __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Suspend )(
+ IBinding __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Resume )(
+ IBinding __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetPriority )(
+ IBinding __RPC_FAR * This,
+ /* [in] */ LONG nPriority);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPriority )(
+ IBinding __RPC_FAR * This,
+ /* [out] */ LONG __RPC_FAR *pnPriority);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBindResult )(
+ IBinding __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pclsidProtocol,
+ /* [out] */ DWORD __RPC_FAR *pdwResult,
+ /* [out] */ LPWSTR __RPC_FAR *pszResult,
+ /* [out][in] */ DWORD __RPC_FAR *pdwReserved);
+
+ END_INTERFACE
+ } IBindingVtbl;
+
+ interface IBinding
+ {
+ CONST_VTBL struct IBindingVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IBinding_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IBinding_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IBinding_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IBinding_Abort(This) \
+ (This)->lpVtbl -> Abort(This)
+
+#define IBinding_Suspend(This) \
+ (This)->lpVtbl -> Suspend(This)
+
+#define IBinding_Resume(This) \
+ (This)->lpVtbl -> Resume(This)
+
+#define IBinding_SetPriority(This,nPriority) \
+ (This)->lpVtbl -> SetPriority(This,nPriority)
+
+#define IBinding_GetPriority(This,pnPriority) \
+ (This)->lpVtbl -> GetPriority(This,pnPriority)
+
+#define IBinding_GetBindResult(This,pclsidProtocol,pdwResult,pszResult,pdwReserved) \
+ (This)->lpVtbl -> GetBindResult(This,pclsidProtocol,pdwResult,pszResult,pdwReserved)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IBinding_Abort_Proxy(
+ IBinding __RPC_FAR * This);
+
+
+void __RPC_STUB IBinding_Abort_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBinding_Suspend_Proxy(
+ IBinding __RPC_FAR * This);
+
+
+void __RPC_STUB IBinding_Suspend_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBinding_Resume_Proxy(
+ IBinding __RPC_FAR * This);
+
+
+void __RPC_STUB IBinding_Resume_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBinding_SetPriority_Proxy(
+ IBinding __RPC_FAR * This,
+ /* [in] */ LONG nPriority);
+
+
+void __RPC_STUB IBinding_SetPriority_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBinding_GetPriority_Proxy(
+ IBinding __RPC_FAR * This,
+ /* [out] */ LONG __RPC_FAR *pnPriority);
+
+
+void __RPC_STUB IBinding_GetPriority_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBinding_GetBindResult_Proxy(
+ IBinding __RPC_FAR * This,
+ /* [out] */ CLSID __RPC_FAR *pclsidProtocol,
+ /* [out] */ DWORD __RPC_FAR *pdwResult,
+ /* [out] */ LPWSTR __RPC_FAR *pszResult,
+ /* [out][in] */ DWORD __RPC_FAR *pdwReserved);
+
+
+void __RPC_STUB IBinding_GetBindResult_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IBinding_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0088
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPBINDSTATUSCALLBACK_DEFINED
+#define _LPBINDSTATUSCALLBACK_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0088_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0088_v0_0_s_ifspec;
+
+#ifndef __IBindStatusCallback_INTERFACE_DEFINED__
+#define __IBindStatusCallback_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IBindStatusCallback
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IBindStatusCallback __RPC_FAR *LPBINDSTATUSCALLBACK;
+
+typedef /* [public] */
+enum __MIDL_IBindStatusCallback_0001
+ { BINDVERB_GET = 0,
+ BINDVERB_POST = 0x1,
+ BINDVERB_PUT = 0x2,
+ BINDVERB_CUSTOM = 0x3
+ } BINDVERB;
+
+typedef /* [public] */
+enum __MIDL_IBindStatusCallback_0002
+ { BINDINFOF_URLENCODESTGMEDDATA = 0x1,
+ BINDINFOF_URLENCODEDEXTRAINFO = 0x2
+ } BINDINFOF;
+
+typedef /* [public] */
+enum __MIDL_IBindStatusCallback_0003
+ { BINDF_ASYNCHRONOUS = 0x1,
+ BINDF_ASYNCSTORAGE = 0x2,
+ BINDF_NOPROGRESSIVERENDERING = 0x4,
+ BINDF_OFFLINEOPERATION = 0x8,
+ BINDF_GETNEWESTVERSION = 0x10,
+ BINDF_NOWRITECACHE = 0x20,
+ BINDF_PULLDATA = 0x80,
+ BINDF_IGNORESECURITYPROBLEM = 0x100
+ } BINDF;
+
+typedef struct _tagBINDINFO
+ {
+ ULONG cbSize;
+ LPWSTR szExtraInfo;
+ STGMEDIUM stgmedData;
+ DWORD grfBindInfoF;
+ DWORD dwBindVerb;
+ LPWSTR szCustomVerb;
+ DWORD cbstgmedData;
+ } BINDINFO;
+
+typedef struct _tagRemBINDINFO
+ {
+ ULONG cbSize;
+ LPWSTR szExtraInfo;
+ DWORD grfBindInfoF;
+ DWORD dwBindVerb;
+ LPWSTR szCustomVerb;
+ DWORD cbstgmedData;
+ } RemBINDINFO;
+
+typedef /* [public] */
+enum __MIDL_IBindStatusCallback_0004
+ { BSCF_FIRSTDATANOTIFICATION = 0x1,
+ BSCF_INTERMEDIATEDATANOTIFICATION = 0x2,
+ BSCF_LASTDATANOTIFICATION = 0x4
+ } BSCF;
+
+typedef
+enum tagBINDSTATUS
+ { BINDSTATUS_FINDINGRESOURCE = 1,
+ BINDSTATUS_CONNECTING = BINDSTATUS_FINDINGRESOURCE + 1,
+ BINDSTATUS_REDIRECTING = BINDSTATUS_CONNECTING + 1,
+ BINDSTATUS_BEGINDOWNLOADDATA = BINDSTATUS_REDIRECTING + 1,
+ BINDSTATUS_DOWNLOADINGDATA = BINDSTATUS_BEGINDOWNLOADDATA + 1,
+ BINDSTATUS_ENDDOWNLOADDATA = BINDSTATUS_DOWNLOADINGDATA + 1,
+ BINDSTATUS_BEGINDOWNLOADCOMPONENTS = BINDSTATUS_ENDDOWNLOADDATA + 1,
+ BINDSTATUS_INSTALLINGCOMPONENTS = BINDSTATUS_BEGINDOWNLOADCOMPONENTS + 1,
+ BINDSTATUS_ENDDOWNLOADCOMPONENTS = BINDSTATUS_INSTALLINGCOMPONENTS + 1,
+ BINDSTATUS_USINGCACHEDCOPY = BINDSTATUS_ENDDOWNLOADCOMPONENTS + 1,
+ BINDSTATUS_SENDINGREQUEST = BINDSTATUS_USINGCACHEDCOPY + 1,
+ BINDSTATUS_CLASSIDAVAILABLE = BINDSTATUS_SENDINGREQUEST + 1
+ } BINDSTATUS;
+
+
+EXTERN_C const IID IID_IBindStatusCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IBindStatusCallback : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnStartBinding(
+ /* [in] */ DWORD dwReserved,
+ /* [in] */ IBinding __RPC_FAR *pib) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPriority(
+ /* [out] */ LONG __RPC_FAR *pnPriority) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnLowResource(
+ /* [in] */ DWORD reserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnProgress(
+ /* [in] */ ULONG ulProgress,
+ /* [in] */ ULONG ulProgressMax,
+ /* [in] */ ULONG ulStatusCode,
+ /* [in] */ LPCWSTR szStatusText) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnStopBinding(
+ /* [in] */ HRESULT hresult,
+ /* [in] */ LPCWSTR szError) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetBindInfo(
+ /* [out] */ DWORD __RPC_FAR *grfBINDF,
+ /* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE OnDataAvailable(
+ /* [in] */ DWORD grfBSCF,
+ /* [in] */ DWORD dwSize,
+ /* [in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ STGMEDIUM __RPC_FAR *pstgmed) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnObjectAvailable(
+ /* [in] */ REFIID riid,
+ /* [iid_is][in] */ IUnknown __RPC_FAR *punk) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IBindStatusCallbackVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IBindStatusCallback __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IBindStatusCallback __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnStartBinding )(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved,
+ /* [in] */ IBinding __RPC_FAR *pib);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetPriority )(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [out] */ LONG __RPC_FAR *pnPriority);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnLowResource )(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ DWORD reserved);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnProgress )(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ ULONG ulProgress,
+ /* [in] */ ULONG ulProgressMax,
+ /* [in] */ ULONG ulStatusCode,
+ /* [in] */ LPCWSTR szStatusText);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnStopBinding )(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ HRESULT hresult,
+ /* [in] */ LPCWSTR szError);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetBindInfo )(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *grfBINDF,
+ /* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnDataAvailable )(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ DWORD grfBSCF,
+ /* [in] */ DWORD dwSize,
+ /* [in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ STGMEDIUM __RPC_FAR *pstgmed);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnObjectAvailable )(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][in] */ IUnknown __RPC_FAR *punk);
+
+ END_INTERFACE
+ } IBindStatusCallbackVtbl;
+
+ interface IBindStatusCallback
+ {
+ CONST_VTBL struct IBindStatusCallbackVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IBindStatusCallback_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IBindStatusCallback_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IBindStatusCallback_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IBindStatusCallback_OnStartBinding(This,dwReserved,pib) \
+ (This)->lpVtbl -> OnStartBinding(This,dwReserved,pib)
+
+#define IBindStatusCallback_GetPriority(This,pnPriority) \
+ (This)->lpVtbl -> GetPriority(This,pnPriority)
+
+#define IBindStatusCallback_OnLowResource(This,reserved) \
+ (This)->lpVtbl -> OnLowResource(This,reserved)
+
+#define IBindStatusCallback_OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText) \
+ (This)->lpVtbl -> OnProgress(This,ulProgress,ulProgressMax,ulStatusCode,szStatusText)
+
+#define IBindStatusCallback_OnStopBinding(This,hresult,szError) \
+ (This)->lpVtbl -> OnStopBinding(This,hresult,szError)
+
+#define IBindStatusCallback_GetBindInfo(This,grfBINDF,pbindinfo) \
+ (This)->lpVtbl -> GetBindInfo(This,grfBINDF,pbindinfo)
+
+#define IBindStatusCallback_OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed) \
+ (This)->lpVtbl -> OnDataAvailable(This,grfBSCF,dwSize,pformatetc,pstgmed)
+
+#define IBindStatusCallback_OnObjectAvailable(This,riid,punk) \
+ (This)->lpVtbl -> OnObjectAvailable(This,riid,punk)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnStartBinding_Proxy(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ DWORD dwReserved,
+ /* [in] */ IBinding __RPC_FAR *pib);
+
+
+void __RPC_STUB IBindStatusCallback_OnStartBinding_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_GetPriority_Proxy(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [out] */ LONG __RPC_FAR *pnPriority);
+
+
+void __RPC_STUB IBindStatusCallback_GetPriority_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnLowResource_Proxy(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ DWORD reserved);
+
+
+void __RPC_STUB IBindStatusCallback_OnLowResource_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnProgress_Proxy(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ ULONG ulProgress,
+ /* [in] */ ULONG ulProgressMax,
+ /* [in] */ ULONG ulStatusCode,
+ /* [in] */ LPCWSTR szStatusText);
+
+
+void __RPC_STUB IBindStatusCallback_OnProgress_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnStopBinding_Proxy(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ HRESULT hresult,
+ /* [in] */ LPCWSTR szError);
+
+
+void __RPC_STUB IBindStatusCallback_OnStopBinding_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindStatusCallback_RemoteGetBindInfo_Proxy(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *grfBINDF,
+ /* [unique][out][in] */ RemBINDINFO __RPC_FAR *pbindinfo,
+ /* [unique][out][in] */ RemSTGMEDIUM __RPC_FAR *pstgmed);
+
+
+void __RPC_STUB IBindStatusCallback_RemoteGetBindInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindStatusCallback_RemoteOnDataAvailable_Proxy(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ DWORD grfBSCF,
+ /* [in] */ DWORD dwSize,
+ /* [in] */ DWORD dwClFormat,
+ /* [in] */ RemSTGMEDIUM __RPC_FAR *pstgmed);
+
+
+void __RPC_STUB IBindStatusCallback_RemoteOnDataAvailable_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnObjectAvailable_Proxy(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][in] */ IUnknown __RPC_FAR *punk);
+
+
+void __RPC_STUB IBindStatusCallback_OnObjectAvailable_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IBindStatusCallback_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0089
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPAUTHENTICATION_DEFINED
+#define _LPAUTHENTICATION_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0089_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0089_v0_0_s_ifspec;
+
+#ifndef __IAuthenticate_INTERFACE_DEFINED__
+#define __IAuthenticate_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IAuthenticate
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef /* [unique] */ IAuthenticate __RPC_FAR *LPAUTHENTICATION;
+
+
+EXTERN_C const IID IID_IAuthenticate;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IAuthenticate : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Authenticate(
+ /* [out] */ HWND __RPC_FAR *phwnd,
+ /* [out] */ LPWSTR __RPC_FAR *pszUsername,
+ /* [out] */ LPWSTR __RPC_FAR *pszPassword) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAuthenticateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IAuthenticate __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IAuthenticate __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IAuthenticate __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Authenticate )(
+ IAuthenticate __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd,
+ /* [out] */ LPWSTR __RPC_FAR *pszUsername,
+ /* [out] */ LPWSTR __RPC_FAR *pszPassword);
+
+ END_INTERFACE
+ } IAuthenticateVtbl;
+
+ interface IAuthenticate
+ {
+ CONST_VTBL struct IAuthenticateVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAuthenticate_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IAuthenticate_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IAuthenticate_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IAuthenticate_Authenticate(This,phwnd,pszUsername,pszPassword) \
+ (This)->lpVtbl -> Authenticate(This,phwnd,pszUsername,pszPassword)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IAuthenticate_Authenticate_Proxy(
+ IAuthenticate __RPC_FAR * This,
+ /* [out] */ HWND __RPC_FAR *phwnd,
+ /* [out] */ LPWSTR __RPC_FAR *pszUsername,
+ /* [out] */ LPWSTR __RPC_FAR *pszPassword);
+
+
+void __RPC_STUB IAuthenticate_Authenticate_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IAuthenticate_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0090
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPHTTPNEGOTIATE_DEFINED
+#define _LPHTTPNEGOTIATE_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0090_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0090_v0_0_s_ifspec;
+
+#ifndef __IHttpNegotiate_INTERFACE_DEFINED__
+#define __IHttpNegotiate_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IHttpNegotiate
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IHttpNegotiate __RPC_FAR *LPHTTPNEGOTIATE;
+
+
+EXTERN_C const IID IID_IHttpNegotiate;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IHttpNegotiate : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE BeginningTransaction(
+ /* [in] */ LPCWSTR szURL,
+ /* [in] */ LPCWSTR szHeaders,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ LPWSTR __RPC_FAR *pszAdditionalHeaders) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE OnResponse(
+ /* [in] */ DWORD dwResponseCode,
+ /* [in] */ LPCWSTR szResponseHeaders,
+ /* [in] */ LPCWSTR szRequestHeaders,
+ /* [out] */ LPWSTR __RPC_FAR *pszAdditionalRequestHeaders) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IHttpNegotiateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IHttpNegotiate __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IHttpNegotiate __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IHttpNegotiate __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *BeginningTransaction )(
+ IHttpNegotiate __RPC_FAR * This,
+ /* [in] */ LPCWSTR szURL,
+ /* [in] */ LPCWSTR szHeaders,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ LPWSTR __RPC_FAR *pszAdditionalHeaders);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnResponse )(
+ IHttpNegotiate __RPC_FAR * This,
+ /* [in] */ DWORD dwResponseCode,
+ /* [in] */ LPCWSTR szResponseHeaders,
+ /* [in] */ LPCWSTR szRequestHeaders,
+ /* [out] */ LPWSTR __RPC_FAR *pszAdditionalRequestHeaders);
+
+ END_INTERFACE
+ } IHttpNegotiateVtbl;
+
+ interface IHttpNegotiate
+ {
+ CONST_VTBL struct IHttpNegotiateVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IHttpNegotiate_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IHttpNegotiate_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IHttpNegotiate_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IHttpNegotiate_BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders) \
+ (This)->lpVtbl -> BeginningTransaction(This,szURL,szHeaders,dwReserved,pszAdditionalHeaders)
+
+#define IHttpNegotiate_OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders) \
+ (This)->lpVtbl -> OnResponse(This,dwResponseCode,szResponseHeaders,szRequestHeaders,pszAdditionalRequestHeaders)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IHttpNegotiate_BeginningTransaction_Proxy(
+ IHttpNegotiate __RPC_FAR * This,
+ /* [in] */ LPCWSTR szURL,
+ /* [in] */ LPCWSTR szHeaders,
+ /* [in] */ DWORD dwReserved,
+ /* [out] */ LPWSTR __RPC_FAR *pszAdditionalHeaders);
+
+
+void __RPC_STUB IHttpNegotiate_BeginningTransaction_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IHttpNegotiate_OnResponse_Proxy(
+ IHttpNegotiate __RPC_FAR * This,
+ /* [in] */ DWORD dwResponseCode,
+ /* [in] */ LPCWSTR szResponseHeaders,
+ /* [in] */ LPCWSTR szRequestHeaders,
+ /* [out] */ LPWSTR __RPC_FAR *pszAdditionalRequestHeaders);
+
+
+void __RPC_STUB IHttpNegotiate_OnResponse_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IHttpNegotiate_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0091
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPWINDOWFORBINDINGUI_DEFINED
+#define _LPWINDOWFORBINDINGUI_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0091_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0091_v0_0_s_ifspec;
+
+#ifndef __IWindowForBindingUI_INTERFACE_DEFINED__
+#define __IWindowForBindingUI_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IWindowForBindingUI
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef /* [unique] */ IWindowForBindingUI __RPC_FAR *LPWINDOWFORBINDINGUI;
+
+
+EXTERN_C const IID IID_IWindowForBindingUI;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IWindowForBindingUI : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetWindow(
+ /* [in] */ REFGUID rguidReason,
+ /* [out] */ HWND __RPC_FAR *phwnd) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IWindowForBindingUIVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IWindowForBindingUI __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IWindowForBindingUI __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IWindowForBindingUI __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IWindowForBindingUI __RPC_FAR * This,
+ /* [in] */ REFGUID rguidReason,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ END_INTERFACE
+ } IWindowForBindingUIVtbl;
+
+ interface IWindowForBindingUI
+ {
+ CONST_VTBL struct IWindowForBindingUIVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IWindowForBindingUI_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IWindowForBindingUI_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IWindowForBindingUI_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IWindowForBindingUI_GetWindow(This,rguidReason,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,rguidReason,phwnd)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IWindowForBindingUI_GetWindow_Proxy(
+ IWindowForBindingUI __RPC_FAR * This,
+ /* [in] */ REFGUID rguidReason,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+
+void __RPC_STUB IWindowForBindingUI_GetWindow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IWindowForBindingUI_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0092
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPCODEINSTALL_DEFINED
+#define _LPCODEINSTALL_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0092_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0092_v0_0_s_ifspec;
+
+#ifndef __ICodeInstall_INTERFACE_DEFINED__
+#define __ICodeInstall_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: ICodeInstall
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef /* [unique] */ ICodeInstall __RPC_FAR *LPCODEINSTALL;
+
+typedef /* [public] */
+enum __MIDL_ICodeInstall_0001
+ { CIP_DISK_FULL = 0,
+ CIP_ACCESS_DENIED = CIP_DISK_FULL + 1,
+ CIP_NEWER_VERSION_EXISTS = CIP_ACCESS_DENIED + 1,
+ CIP_OLDER_VERSION_EXISTS = CIP_NEWER_VERSION_EXISTS + 1,
+ CIP_NAME_CONFLICT = CIP_OLDER_VERSION_EXISTS + 1,
+ CIP_TRUST_VERIFICATION_COMPONENT_MISSING = CIP_NAME_CONFLICT + 1,
+ CIP_EXE_SELF_REGISTERATION_TIMEOUT = CIP_TRUST_VERIFICATION_COMPONENT_MISSING + 1,
+ CIP_UNSAFE_TO_ABORT = CIP_EXE_SELF_REGISTERATION_TIMEOUT + 1
+ } CIP_STATUS;
+
+
+EXTERN_C const IID IID_ICodeInstall;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface ICodeInstall : public IWindowForBindingUI
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnCodeInstallProblem(
+ /* [in] */ ULONG ulStatusCode,
+ /* [in] */ LPCWSTR szDestination,
+ /* [in] */ LPCWSTR szSource,
+ /* [in] */ DWORD dwReserved) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICodeInstallVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ ICodeInstall __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ ICodeInstall __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ ICodeInstall __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ ICodeInstall __RPC_FAR * This,
+ /* [in] */ REFGUID rguidReason,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnCodeInstallProblem )(
+ ICodeInstall __RPC_FAR * This,
+ /* [in] */ ULONG ulStatusCode,
+ /* [in] */ LPCWSTR szDestination,
+ /* [in] */ LPCWSTR szSource,
+ /* [in] */ DWORD dwReserved);
+
+ END_INTERFACE
+ } ICodeInstallVtbl;
+
+ interface ICodeInstall
+ {
+ CONST_VTBL struct ICodeInstallVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICodeInstall_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICodeInstall_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICodeInstall_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICodeInstall_GetWindow(This,rguidReason,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,rguidReason,phwnd)
+
+
+#define ICodeInstall_OnCodeInstallProblem(This,ulStatusCode,szDestination,szSource,dwReserved) \
+ (This)->lpVtbl -> OnCodeInstallProblem(This,ulStatusCode,szDestination,szSource,dwReserved)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE ICodeInstall_OnCodeInstallProblem_Proxy(
+ ICodeInstall __RPC_FAR * This,
+ /* [in] */ ULONG ulStatusCode,
+ /* [in] */ LPCWSTR szDestination,
+ /* [in] */ LPCWSTR szSource,
+ /* [in] */ DWORD dwReserved);
+
+
+void __RPC_STUB ICodeInstall_OnCodeInstallProblem_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICodeInstall_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0093
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPWININETINFO_DEFINED
+#define _LPWININETINFO_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0093_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0093_v0_0_s_ifspec;
+
+#ifndef __IWinInetInfo_INTERFACE_DEFINED__
+#define __IWinInetInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IWinInetInfo
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef /* [unique] */ IWinInetInfo __RPC_FAR *LPWININETINFO;
+
+
+EXTERN_C const IID IID_IWinInetInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IWinInetInfo : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryOption(
+ /* [in] */ DWORD dwOption,
+ /* [out] */ LPVOID pBuffer,
+ /* [out][in] */ DWORD __RPC_FAR *pcbBuf) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IWinInetInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IWinInetInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IWinInetInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IWinInetInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryOption )(
+ IWinInetInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwOption,
+ /* [out] */ LPVOID pBuffer,
+ /* [out][in] */ DWORD __RPC_FAR *pcbBuf);
+
+ END_INTERFACE
+ } IWinInetInfoVtbl;
+
+ interface IWinInetInfo
+ {
+ CONST_VTBL struct IWinInetInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IWinInetInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IWinInetInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IWinInetInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IWinInetInfo_QueryOption(This,dwOption,pBuffer,pcbBuf) \
+ (This)->lpVtbl -> QueryOption(This,dwOption,pBuffer,pcbBuf)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IWinInetInfo_QueryOption_Proxy(
+ IWinInetInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwOption,
+ /* [out] */ LPVOID pBuffer,
+ /* [out][in] */ DWORD __RPC_FAR *pcbBuf);
+
+
+void __RPC_STUB IWinInetInfo_QueryOption_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IWinInetInfo_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0094
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPHTTPSECURITY_DEFINED
+#define _LPHTTPSECURITY_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0094_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0094_v0_0_s_ifspec;
+
+#ifndef __IHttpSecurity_INTERFACE_DEFINED__
+#define __IHttpSecurity_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IHttpSecurity
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef /* [unique] */ IHttpSecurity __RPC_FAR *LPHTTPSECURITY;
+
+
+EXTERN_C const IID IID_IHttpSecurity;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IHttpSecurity : public IWindowForBindingUI
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE OnSecurityProblem(
+ /* [in] */ DWORD dwProblem) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IHttpSecurityVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IHttpSecurity __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IHttpSecurity __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IHttpSecurity __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetWindow )(
+ IHttpSecurity __RPC_FAR * This,
+ /* [in] */ REFGUID rguidReason,
+ /* [out] */ HWND __RPC_FAR *phwnd);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *OnSecurityProblem )(
+ IHttpSecurity __RPC_FAR * This,
+ /* [in] */ DWORD dwProblem);
+
+ END_INTERFACE
+ } IHttpSecurityVtbl;
+
+ interface IHttpSecurity
+ {
+ CONST_VTBL struct IHttpSecurityVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IHttpSecurity_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IHttpSecurity_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IHttpSecurity_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IHttpSecurity_GetWindow(This,rguidReason,phwnd) \
+ (This)->lpVtbl -> GetWindow(This,rguidReason,phwnd)
+
+
+#define IHttpSecurity_OnSecurityProblem(This,dwProblem) \
+ (This)->lpVtbl -> OnSecurityProblem(This,dwProblem)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IHttpSecurity_OnSecurityProblem_Proxy(
+ IHttpSecurity __RPC_FAR * This,
+ /* [in] */ DWORD dwProblem);
+
+
+void __RPC_STUB IHttpSecurity_OnSecurityProblem_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IHttpSecurity_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0095
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#ifndef _LPWININETHTTPINFO_DEFINED
+#define _LPWININETHTTPINFO_DEFINED
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0095_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0095_v0_0_s_ifspec;
+
+#ifndef __IWinInetHttpInfo_INTERFACE_DEFINED__
+#define __IWinInetHttpInfo_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IWinInetHttpInfo
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object][local] */
+
+
+typedef /* [unique] */ IWinInetHttpInfo __RPC_FAR *LPWININETHTTPINFO;
+
+
+EXTERN_C const IID IID_IWinInetHttpInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IWinInetHttpInfo : public IWinInetInfo
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryInfo(
+ /* [in] */ DWORD dwOption,
+ /* [out] */ LPVOID pBuffer,
+ /* [out][in] */ DWORD __RPC_FAR *pcbBuf,
+ /* [out][in] */ DWORD __RPC_FAR *pdwFlags,
+ /* [out][in] */ DWORD __RPC_FAR *pdwReserved) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IWinInetHttpInfoVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IWinInetHttpInfo __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IWinInetHttpInfo __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IWinInetHttpInfo __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryOption )(
+ IWinInetHttpInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwOption,
+ /* [out] */ LPVOID pBuffer,
+ /* [out][in] */ DWORD __RPC_FAR *pcbBuf);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInfo )(
+ IWinInetHttpInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwOption,
+ /* [out] */ LPVOID pBuffer,
+ /* [out][in] */ DWORD __RPC_FAR *pcbBuf,
+ /* [out][in] */ DWORD __RPC_FAR *pdwFlags,
+ /* [out][in] */ DWORD __RPC_FAR *pdwReserved);
+
+ END_INTERFACE
+ } IWinInetHttpInfoVtbl;
+
+ interface IWinInetHttpInfo
+ {
+ CONST_VTBL struct IWinInetHttpInfoVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IWinInetHttpInfo_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IWinInetHttpInfo_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IWinInetHttpInfo_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IWinInetHttpInfo_QueryOption(This,dwOption,pBuffer,pcbBuf) \
+ (This)->lpVtbl -> QueryOption(This,dwOption,pBuffer,pcbBuf)
+
+
+#define IWinInetHttpInfo_QueryInfo(This,dwOption,pBuffer,pcbBuf,pdwFlags,pdwReserved) \
+ (This)->lpVtbl -> QueryInfo(This,dwOption,pBuffer,pcbBuf,pdwFlags,pdwReserved)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IWinInetHttpInfo_QueryInfo_Proxy(
+ IWinInetHttpInfo __RPC_FAR * This,
+ /* [in] */ DWORD dwOption,
+ /* [out] */ LPVOID pBuffer,
+ /* [out][in] */ DWORD __RPC_FAR *pcbBuf,
+ /* [out][in] */ DWORD __RPC_FAR *pdwFlags,
+ /* [out][in] */ DWORD __RPC_FAR *pdwReserved);
+
+
+void __RPC_STUB IWinInetHttpInfo_QueryInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IWinInetHttpInfo_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0096
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+#define SID_IBindHost IID_IBindHost
+#define SID_SBindHost IID_IBindHost
+#ifndef _LPBINDHOST_DEFINED
+#define _LPBINDHOST_DEFINED
+EXTERN_C const GUID SID_BindHost;
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0096_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0096_v0_0_s_ifspec;
+
+#ifndef __IBindHost_INTERFACE_DEFINED__
+#define __IBindHost_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IBindHost
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [unique][uuid][object] */
+
+
+typedef /* [unique] */ IBindHost __RPC_FAR *LPBINDHOST;
+
+
+EXTERN_C const IID IID_IBindHost;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ interface IBindHost : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateMoniker(
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ IBindCtx __RPC_FAR *pBC,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk,
+ /* [in] */ DWORD dwReserved) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE MonikerBindToStorage(
+ /* [in] */ IMoniker __RPC_FAR *pMk,
+ /* [in] */ IBindCtx __RPC_FAR *pBC,
+ /* [in] */ IBindStatusCallback __RPC_FAR *pBSC,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj) = 0;
+
+ virtual /* [local] */ HRESULT STDMETHODCALLTYPE MonikerBindToObject(
+ /* [in] */ IMoniker __RPC_FAR *pMk,
+ /* [in] */ IBindCtx __RPC_FAR *pBC,
+ /* [in] */ IBindStatusCallback __RPC_FAR *pBSC,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IBindHostVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
+ IBindHost __RPC_FAR * This,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
+ IBindHost __RPC_FAR * This);
+
+ ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
+ IBindHost __RPC_FAR * This);
+
+ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *CreateMoniker )(
+ IBindHost __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ IBindCtx __RPC_FAR *pBC,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk,
+ /* [in] */ DWORD dwReserved);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *MonikerBindToStorage )(
+ IBindHost __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pMk,
+ /* [in] */ IBindCtx __RPC_FAR *pBC,
+ /* [in] */ IBindStatusCallback __RPC_FAR *pBSC,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *MonikerBindToObject )(
+ IBindHost __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pMk,
+ /* [in] */ IBindCtx __RPC_FAR *pBC,
+ /* [in] */ IBindStatusCallback __RPC_FAR *pBSC,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+ END_INTERFACE
+ } IBindHostVtbl;
+
+ interface IBindHost
+ {
+ CONST_VTBL struct IBindHostVtbl __RPC_FAR *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IBindHost_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IBindHost_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IBindHost_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IBindHost_CreateMoniker(This,szName,pBC,ppmk,dwReserved) \
+ (This)->lpVtbl -> CreateMoniker(This,szName,pBC,ppmk,dwReserved)
+
+#define IBindHost_MonikerBindToStorage(This,pMk,pBC,pBSC,riid,ppvObj) \
+ (This)->lpVtbl -> MonikerBindToStorage(This,pMk,pBC,pBSC,riid,ppvObj)
+
+#define IBindHost_MonikerBindToObject(This,pMk,pBC,pBSC,riid,ppvObj) \
+ (This)->lpVtbl -> MonikerBindToObject(This,pMk,pBC,pBSC,riid,ppvObj)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IBindHost_CreateMoniker_Proxy(
+ IBindHost __RPC_FAR * This,
+ /* [in] */ LPOLESTR szName,
+ /* [in] */ IBindCtx __RPC_FAR *pBC,
+ /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk,
+ /* [in] */ DWORD dwReserved);
+
+
+void __RPC_STUB IBindHost_CreateMoniker_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindHost_RemoteMonikerBindToStorage_Proxy(
+ IBindHost __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pMk,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pBC,
+ /* [unique][in] */ IBindStatusCallback __RPC_FAR *pBSC,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+void __RPC_STUB IBindHost_RemoteMonikerBindToStorage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindHost_RemoteMonikerBindToObject_Proxy(
+ IBindHost __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pMk,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pBC,
+ /* [unique][in] */ IBindStatusCallback __RPC_FAR *pBSC,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+void __RPC_STUB IBindHost_RemoteMonikerBindToObject_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IBindHost_INTERFACE_DEFINED__ */
+
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0097
+ * at Fri Jun 14 20:22:12 1996
+ * using MIDL 3.00.15
+ ****************************************/
+/* [local] */
+
+
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0097_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0097_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IBindStatusCallback_GetBindInfo_Proxy(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *grfBINDF,
+ /* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindStatusCallback_GetBindInfo_Stub(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [out] */ DWORD __RPC_FAR *grfBINDF,
+ /* [unique][out][in] */ RemBINDINFO __RPC_FAR *pbindinfo,
+ /* [unique][out][in] */ RemSTGMEDIUM __RPC_FAR *pstgmed);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnDataAvailable_Proxy(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ DWORD grfBSCF,
+ /* [in] */ DWORD dwSize,
+ /* [in] */ FORMATETC __RPC_FAR *pformatetc,
+ /* [in] */ STGMEDIUM __RPC_FAR *pstgmed);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindStatusCallback_OnDataAvailable_Stub(
+ IBindStatusCallback __RPC_FAR * This,
+ /* [in] */ DWORD grfBSCF,
+ /* [in] */ DWORD dwSize,
+ /* [in] */ DWORD dwClFormat,
+ /* [in] */ RemSTGMEDIUM __RPC_FAR *pstgmed);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IBindHost_MonikerBindToStorage_Proxy(
+ IBindHost __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pMk,
+ /* [in] */ IBindCtx __RPC_FAR *pBC,
+ /* [in] */ IBindStatusCallback __RPC_FAR *pBSC,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindHost_MonikerBindToStorage_Stub(
+ IBindHost __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pMk,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pBC,
+ /* [unique][in] */ IBindStatusCallback __RPC_FAR *pBSC,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+/* [local] */ HRESULT STDMETHODCALLTYPE IBindHost_MonikerBindToObject_Proxy(
+ IBindHost __RPC_FAR * This,
+ /* [in] */ IMoniker __RPC_FAR *pMk,
+ /* [in] */ IBindCtx __RPC_FAR *pBC,
+ /* [in] */ IBindStatusCallback __RPC_FAR *pBSC,
+ /* [in] */ REFIID riid,
+ /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+/* [call_as] */ HRESULT STDMETHODCALLTYPE IBindHost_MonikerBindToObject_Stub(
+ IBindHost __RPC_FAR * This,
+ /* [unique][in] */ IMoniker __RPC_FAR *pMk,
+ /* [unique][in] */ IBindCtx __RPC_FAR *pBC,
+ /* [unique][in] */ IBindStatusCallback __RPC_FAR *pBSC,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
+
+
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/userenv.h b/public/sdk/inc/userenv.h
new file mode 100644
index 000000000..8699f0043
--- /dev/null
+++ b/public/sdk/inc/userenv.h
@@ -0,0 +1,154 @@
+//*************************************************************
+// userenv.h - Interface for the User Environment Manager
+//
+// Copyright (c) Microsoft Corporation 1995-1996
+// All rights reserved
+//
+//*************************************************************
+
+
+#ifndef _INC_USERENV
+#define _INC_USERENV
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+
+#if !defined(_USERENV_)
+#define USERENVAPI DECLSPEC_IMPORT
+#else
+#define USERENVAPI
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+#define PI_NOUI 0x00000001 // Prevents displaying of messages
+#define PI_APPLYPOLICY 0x00000002 // Apply policy
+
+typedef struct _PROFILEINFOA {
+ DWORD dwSize;
+ DWORD dwFlags;
+ LPSTR lpUserName;
+ LPSTR lpProfilePath;
+ LPSTR lpDefaultPath;
+ LPSTR lpServerName;
+ LPSTR lpPolicyPath;
+ HANDLE hProfile;
+} PROFILEINFOA, FAR * LPPROFILEINFOA;
+typedef struct _PROFILEINFOW {
+ DWORD dwSize;
+ DWORD dwFlags;
+ LPWSTR lpUserName;
+ LPWSTR lpProfilePath;
+ LPWSTR lpDefaultPath;
+ LPWSTR lpServerName;
+ LPWSTR lpPolicyPath;
+ HANDLE hProfile;
+} PROFILEINFOW, FAR * LPPROFILEINFOW;
+#ifdef UNICODE
+typedef PROFILEINFOW PROFILEINFO;
+typedef LPPROFILEINFOW LPPROFILEINFO;
+#else
+typedef PROFILEINFOA PROFILEINFO;
+typedef LPPROFILEINFOA LPPROFILEINFO;
+#endif // UNICODE
+
+
+
+USERENVAPI
+BOOL
+WINAPI
+LoadUserProfileA(
+ HANDLE hToken,
+ LPPROFILEINFOA lpProfileInfo);
+USERENVAPI
+BOOL
+WINAPI
+LoadUserProfileW(
+ HANDLE hToken,
+ LPPROFILEINFOW lpProfileInfo);
+#ifdef UNICODE
+#define LoadUserProfile LoadUserProfileW
+#else
+#define LoadUserProfile LoadUserProfileA
+#endif // !UNICODE
+
+
+
+USERENVAPI
+BOOL
+WINAPI
+UnloadUserProfile(
+ HANDLE hToken,
+ HANDLE hProfile);
+
+
+
+USERENVAPI
+BOOL
+WINAPI
+GetProfilesDirectoryA(
+ LPSTR lpProfilesDir,
+ LPDWORD lpcchSize);
+USERENVAPI
+BOOL
+WINAPI
+GetProfilesDirectoryW(
+ LPWSTR lpProfilesDir,
+ LPDWORD lpcchSize);
+#ifdef UNICODE
+#define GetProfilesDirectory GetProfilesDirectoryW
+#else
+#define GetProfilesDirectory GetProfilesDirectoryA
+#endif // !UNICODE
+
+
+USERENVAPI
+BOOL
+WINAPI
+GetUserProfileDirectoryA(
+ HANDLE hToken,
+ LPSTR lpProfileDir,
+ LPDWORD lpcchSize);
+USERENVAPI
+BOOL
+WINAPI
+GetUserProfileDirectoryW(
+ HANDLE hToken,
+ LPWSTR lpProfileDir,
+ LPDWORD lpcchSize);
+#ifdef UNICODE
+#define GetUserProfileDirectory GetUserProfileDirectoryW
+#else
+#define GetUserProfileDirectory GetUserProfileDirectoryA
+#endif // !UNICODE
+
+
+USERENVAPI
+BOOL
+WINAPI
+CreateEnvironmentBlock(
+ LPVOID *lpEnvironment,
+ HANDLE hToken,
+ BOOL bInherit);
+
+
+USERENVAPI
+BOOL
+WINAPI
+DestroyEnvironmentBlock(
+ LPVOID lpEnvironment);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+#endif // _INC_USERENV
diff --git a/public/sdk/inc/variant.h b/public/sdk/inc/variant.h
new file mode 100644
index 000000000..971f664f1
--- /dev/null
+++ b/public/sdk/inc/variant.h
@@ -0,0 +1,15 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992-1996.
+//
+// File: variant.h
+//
+//----------------------------------------------------------------------------
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: your code should #include oleauto.h instead of variant.h")
+#endif /* !RC_INVOKED */
+
+#include <oleauto.h>
+
diff --git a/public/sdk/inc/vddsvc.h b/public/sdk/inc/vddsvc.h
new file mode 100644
index 000000000..e23815da2
--- /dev/null
+++ b/public/sdk/inc/vddsvc.h
@@ -0,0 +1,349 @@
+/*++
+
+Copyright (c) 1992 Microsoft Corporation
+
+Module Name:
+
+ VDDSVC.H
+
+Abstract:
+
+ Include file contains VDM services provided for installable VDDs.
+
+
+--*/
+
+
+/**
+ * This file contains VDM services prototype defintions only; their
+ * related structures and macros are defined in NT_VDD.H.
+ * If we have not included the file yet, include it and set a signal
+ * to tell anybody the fact.
+**/
+
+#ifndef _NT_VDD
+#include "nt_vdd.h"
+#define _NT_VDD
+#endif
+
+
+/** Memory Accessing services **/
+
+#define GetVDMAddress(usSeg, usOff) (((ULONG)usSeg << 4) + (ULONG)usOff)
+
+#define GetVDMPointer(Address, Size, Mode) Sim32GetVDMPointer(\
+ Address, Size, Mode)
+
+#define FlushVDMPointer(Address, Size, Buffer, Mode) Sim32FlushVDMPointer(\
+ Address, Size, Buffer, Mode)
+
+#define FreeVDMPointer(Address, Size, Buffer, Mode) Sim32FreeVDMPointer(\
+ Address, Size, Buffer, Mode)
+
+/** interrupt simualtion services **/
+
+#define ICA_MASTER 0
+#define ICA_SLAVE 1
+#define VDDSimulateInterrupt(ms, line, count) (call_ica_hw_interrupt)(\
+ ms, line, 1)
+
+
+/** Register manipulation services **/
+
+#ifndef i386
+
+#define getEAX() (ULONG)c_getAX()
+#define getAX() c_getAX()
+#define getAL() c_getAL()
+#define getAH() c_getAH()
+#define getEBX() (ULONG)c_getBX()
+#define getBX() c_getBX()
+#define getBL() c_getBL()
+#define getBH() c_getBH()
+#define getECX() (ULONG)c_getCX()
+#define getCX() c_getCX()
+#define getCL() c_getCL()
+#define getCH() c_getCH()
+#define getEDX() (ULONG)c_getDX()
+#define getDX() c_getDX()
+#define getDL() c_getDL()
+#define getDH() c_getDH()
+#define getESP() (ULONG)c_getSP()
+#define getSP() c_getSP()
+#define getEBP() (ULONG)c_getBP()
+#define getBP() c_getBP()
+#define getESI() (ULONG)c_getSI()
+#define getSI() c_getSI()
+#define getEDI() (ULONG)c_getDI()
+#define getDI() c_getDI()
+#define getEIP() (ULONG)c_getIP()
+#define getIP() c_getIP()
+#define getCS() c_getCS()
+#define getSS() c_getSS()
+#define getDS() c_getDS()
+#define getES() c_getES()
+#define getCF() c_getCF()
+#define getPF() c_getPF()
+#define getAF() c_getAF()
+#define getZF() c_getZF()
+#define getSF() c_getSF()
+#define getIF() c_getIF()
+#define getDF() c_getDF()
+#define getOF() c_getOF()
+#define getMSW() c_getMSW()
+
+#define setEAX(value) c_setAX((WORD)value)
+#define setAX(value) c_setAX(value)
+#define setAH(value) c_setAH(value)
+#define setAL(value) c_setAL(value)
+#define setEBX(value) c_setBX((WORD)value)
+#define setBX(value) c_setBX(value)
+#define setBH(value) c_setBH(value)
+#define setBL(value) c_setBL(value)
+#define setECX(value) c_setCX((WORD)value)
+#define setCX(value) c_setCX(value)
+#define setCH(value) c_setCH(value)
+#define setCL(value) c_setCL(value)
+#define setEDX(value) c_setDX((WORD)value)
+#define setDX(value) c_setDX(value)
+#define setDH(value) c_setDH(value)
+#define setDL(value) c_setDL(value)
+#define setESP(value) c_setSP((WORD)value)
+#define setSP(value) c_setSP(value)
+#define setEBP(value) c_setBP((WORD)value)
+#define setBP(value) c_setBP(value)
+#define setESI(value) c_setSI((WORD)value)
+#define setSI(value) c_setSI(value)
+#define setEDI(value) c_setDI((WORD)value)
+#define setDI(value) c_setDI(value)
+#define setEIP(value) c_setIP((WORD)value)
+#define setIP(value) c_setIP(value)
+#define setCS(value) c_setCS(value)
+#define setSS(value) c_setSS(value)
+#define setDS(value) c_setDS(value)
+#define setES(value) c_setES(value)
+#define setCF(value) c_setCF(value)
+#define setPF(value) c_setPF(value)
+#define setAF(value) c_setAF(value)
+#define setZF(value) c_setZF(value)
+#define setSF(value) c_setSF(value)
+#define setIF(value) c_setIF(value)
+#define setDF(value) c_setDF(value)
+#define setOF(value) c_setOF(value)
+#define setMSW(value) c_setMSW(value)
+
+#endif
+
+
+/** Real function prototype declarations **/
+
+
+/** interrupt simulation functions **/
+
+VOID
+call_ica_hw_interrupt (
+ int ms,
+ BYTE line,
+ int count
+ );
+
+#define Sim32FreeVDMPointer(address, size, buffer, mode) TRUE
+
+/** memory address manipulation functions **/
+
+#ifdef i386
+
+#define Sim32GetVDMPointer(address, size, mode) MGetVdmPointer(address,\
+ size, mode)
+#define Sim32FlushVDMPointer(addess, size, buffer, mode) TRUE
+
+PBYTE
+MGetVdmPointer(
+ ULONG Address,
+ ULONG Size,
+ UCHAR ProtectedMode
+);
+
+#else
+
+PBYTE
+Sim32GetVDMPointer(
+ ULONG Address,
+ ULONG Size,
+ UCHAR ProtectedMode
+);
+
+BOOLEAN
+Sim32FlushVDMPointer(
+ ULONG Address,
+ USHORT Size,
+ PBYTE Buffer,
+ BOOLEAN ProtectedMode
+);
+
+#endif
+
+
+/** Register manipulation functions **/
+
+#ifdef i386
+ULONG getEAX(VOID);
+USHORT getAX(VOID);
+UCHAR getAL(VOID);
+UCHAR getAH(VOID);
+ULONG getEBX(VOID);
+USHORT getBX(VOID);
+UCHAR getBL(VOID);
+UCHAR getBH(VOID);
+ULONG getECX(VOID);
+USHORT getCX(VOID);
+UCHAR getCL(VOID);
+UCHAR getCH(VOID);
+ULONG getEDX(VOID);
+USHORT getDX(VOID);
+UCHAR getDL(VOID);
+UCHAR getDH(VOID);
+ULONG getESP(VOID);
+USHORT getSP(VOID);
+ULONG getEBP(VOID);
+USHORT getBP(VOID);
+ULONG getESI(VOID);
+USHORT getSI(VOID);
+ULONG getEDI(VOID);
+USHORT getDI(VOID);
+ULONG getEIP(VOID);
+USHORT getIP(VOID);
+USHORT getCS(VOID);
+USHORT getSS(VOID);
+USHORT getDS(VOID);
+USHORT getES(VOID);
+USHORT getFS(VOID);
+USHORT getGS(VOID);
+ULONG getCF(VOID);
+ULONG getPF(VOID);
+ULONG getAF(VOID);
+ULONG getZF(VOID);
+ULONG getSF(VOID);
+ULONG getIF(VOID);
+ULONG getDF(VOID);
+ULONG getOF(VOID);
+USHORT getMSW(VOID);
+
+VOID setEAX(ULONG);
+VOID setAX(USHORT);
+VOID setAH(UCHAR);
+VOID setAL(UCHAR);
+VOID setEBX(ULONG);
+VOID setBX(USHORT);
+VOID setBH(UCHAR);
+VOID setBL(UCHAR);
+VOID setECX(ULONG);
+VOID setCX(USHORT);
+VOID setCH(UCHAR);
+VOID setCL(UCHAR);
+VOID setEDX(ULONG);
+VOID setDX(USHORT);
+VOID setDH(UCHAR);
+VOID setDL(UCHAR);
+VOID setESP(ULONG);
+VOID setSP(USHORT);
+VOID setEBP(ULONG);
+VOID setBP(USHORT);
+VOID setESI(ULONG);
+VOID setSI(USHORT);
+VOID setEDI(ULONG);
+VOID setDI(USHORT);
+VOID setEIP(ULONG);
+VOID setIP(USHORT);
+VOID setCS(USHORT);
+VOID setSS(USHORT);
+VOID setDS(USHORT);
+VOID setES(USHORT);
+VOID setFS(USHORT);
+VOID setGS(USHORT);
+VOID setCF(ULONG);
+VOID setPF(ULONG);
+VOID setAF(ULONG);
+VOID setZF(ULONG);
+VOID setSF(ULONG);
+VOID setIF(ULONG);
+VOID setDF(ULONG);
+VOID setOF(ULONG);
+VOID setMSW(USHORT);
+
+
+#else
+
+UCHAR c_getAL(VOID);
+UCHAR c_getCL(VOID);
+UCHAR c_getDL(VOID);
+UCHAR c_getBL(VOID);
+UCHAR c_getAH(VOID);
+UCHAR c_getCH(VOID);
+UCHAR c_getDH(VOID);
+UCHAR c_getBH(VOID);
+
+USHORT c_getAX(VOID);
+USHORT c_getCX(VOID);
+USHORT c_getDX(VOID);
+USHORT c_getBX(VOID);
+USHORT c_getSP(VOID);
+USHORT c_getBP(VOID);
+USHORT c_getSI(VOID);
+USHORT c_getDI(VOID);
+USHORT c_getIP(VOID);
+USHORT c_getES(VOID);
+USHORT c_getCS(VOID);
+USHORT c_getSS(VOID);
+USHORT c_getDS(VOID);
+
+USHORT c_getMSW(VOID);
+
+ULONG c_getAF(VOID);
+ULONG c_getCF(VOID);
+ULONG c_getDF(VOID);
+ULONG c_getIF(VOID);
+ULONG c_getOF(VOID);
+ULONG c_getPF(VOID);
+ULONG c_getSF(VOID);
+ULONG c_getZF(VOID);
+
+VOID c_setAL(UCHAR val);
+VOID c_setCL(UCHAR val);
+VOID c_setDL(UCHAR val);
+VOID c_setBL(UCHAR val);
+VOID c_setAH(UCHAR val);
+VOID c_setCH(UCHAR val);
+VOID c_setDH(UCHAR val);
+VOID c_setBH(UCHAR val);
+
+VOID c_setAX(USHORT val);
+VOID c_setCX(USHORT val);
+VOID c_setDX(USHORT val);
+VOID c_setBX(USHORT val);
+VOID c_setSP(USHORT val);
+VOID c_setBP(USHORT val);
+VOID c_setSI(USHORT val);
+VOID c_setDI(USHORT val);
+VOID c_setIP(USHORT val);
+
+VOID c_setES(USHORT val);
+VOID c_setCS(USHORT val);
+VOID c_setSS(USHORT val);
+VOID c_setDS(USHORT val);
+
+VOID c_setMSW(USHORT val);
+
+VOID c_setAF(ULONG val);
+VOID c_setCF(ULONG val);
+VOID c_setDF(ULONG val);
+VOID c_setIF(ULONG val);
+VOID c_setOF(ULONG val);
+VOID c_setPF(ULONG val);
+VOID c_setSF(ULONG val);
+VOID c_setZF(ULONG val);
+
+#endif
+
+
+/* end of VDDSVC.H */
diff --git a/public/sdk/inc/vdmdbg.h b/public/sdk/inc/vdmdbg.h
new file mode 100644
index 000000000..0999b6fc8
--- /dev/null
+++ b/public/sdk/inc/vdmdbg.h
@@ -0,0 +1,529 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1985-1996, Microsoft Corporation
+
+Module Name:
+
+ vdmdbg.h
+
+Abstract:
+
+ Prodecure declarations, constant definitions, type definition and macros
+ for the VDMDBG.DLL VDM Debugger interface.
+
+--*/
+
+#ifndef _VDMDBG_
+#define _VDMDBG_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <pshpack4.h>
+
+#define STATUS_VDM_EVENT STATUS_SEGMENT_NOTIFICATION
+
+#ifndef DBG_SEGLOAD
+#define DBG_SEGLOAD 0
+#define DBG_SEGMOVE 1
+#define DBG_SEGFREE 2
+#define DBG_MODLOAD 3
+#define DBG_MODFREE 4
+#define DBG_SINGLESTEP 5
+#define DBG_BREAK 6
+#define DBG_GPFAULT 7
+#define DBG_DIVOVERFLOW 8
+#define DBG_INSTRFAULT 9
+#define DBG_TASKSTART 10
+#define DBG_TASKSTOP 11
+#define DBG_DLLSTART 12
+#define DBG_DLLSTOP 13
+#define DBG_ATTACH 14
+#endif
+
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+
+#define VDMCONTEXT_i386 0x00010000 // this assumes that i386 and
+#define VDMCONTEXT_i486 0x00010000 // i486 have identical context records
+
+#define VDMCONTEXT_CONTROL (VDMCONTEXT_i386 | 0x00000001L) // SS:SP, CS:IP, FLAGS, BP
+#define VDMCONTEXT_INTEGER (VDMCONTEXT_i386 | 0x00000002L) // AX, BX, CX, DX, SI, DI
+#define VDMCONTEXT_SEGMENTS (VDMCONTEXT_i386 | 0x00000004L) // DS, ES, FS, GS
+#define VDMCONTEXT_FLOATING_POINT (VDMCONTEXT_i386 | 0x00000008L) // 387 state
+#define VDMCONTEXT_DEBUG_REGISTERS (VDMCONTEXT_i386 | 0x00000010L) // DB 0-3,6,7
+
+#define VDMCONTEXT_FULL (VDMCONTEXT_CONTROL | VDMCONTEXT_INTEGER |\
+ VDMCONTEXT_SEGMENTS)
+
+
+#ifdef _X86_
+
+// On x86 machines, just copy the definition of the CONTEXT and LDT_ENTRY
+// structures.
+typedef struct _CONTEXT VDMCONTEXT;
+typedef struct _LDT_ENTRY VDMLDT_ENTRY;
+
+#else // _X86_
+
+//
+// Define the size of the 80387 save area, which is in the context frame.
+//
+
+#define SIZE_OF_80387_REGISTERS 80
+
+typedef struct _FLOATING_SAVE_AREA {
+ ULONG ControlWord;
+ ULONG StatusWord;
+ ULONG TagWord;
+ ULONG ErrorOffset;
+ ULONG ErrorSelector;
+ ULONG DataOffset;
+ ULONG DataSelector;
+ UCHAR RegisterArea[SIZE_OF_80387_REGISTERS];
+ ULONG Cr0NpxState;
+} FLOATING_SAVE_AREA;
+
+//
+// Simulated context structure for the 16-bit environment
+//
+
+typedef struct _VDMCONTEXT {
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a threads context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+ // CONTEXT_FULL on some systems (MIPS namely) does not contain the
+ // CONTEXT_SEGMENTS definition. VDMDBG assumes that CONTEXT_INTEGER also
+ // includes CONTEXT_SEGMENTS to account for this.
+ //
+
+ ULONG ContextFlags;
+
+ //
+ // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
+ // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
+ // included in CONTEXT_FULL.
+ //
+
+ ULONG Dr0;
+ ULONG Dr1;
+ ULONG Dr2;
+ ULONG Dr3;
+ ULONG Dr6;
+ ULONG Dr7;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_FLOATING_POINT.
+ //
+
+ FLOATING_SAVE_AREA FloatSave;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_SEGMENTS.
+ //
+
+ ULONG SegGs;
+ ULONG SegFs;
+ ULONG SegEs;
+ ULONG SegDs;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_INTEGER.
+ //
+
+ ULONG Edi;
+ ULONG Esi;
+ ULONG Ebx;
+ ULONG Edx;
+ ULONG Ecx;
+ ULONG Eax;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_CONTROL.
+ //
+
+ ULONG Ebp;
+ ULONG Eip;
+ ULONG SegCs; // MUST BE SANITIZED
+ ULONG EFlags; // MUST BE SANITIZED
+ ULONG Esp;
+ ULONG SegSs;
+
+} VDMCONTEXT;
+
+//
+// LDT descriptor entry
+//
+
+typedef struct _VDMLDT_ENTRY {
+ USHORT LimitLow;
+ USHORT BaseLow;
+ union {
+ struct {
+ UCHAR BaseMid;
+ UCHAR Flags1; // Declare as bytes to avoid alignment
+ UCHAR Flags2; // Problems.
+ UCHAR BaseHi;
+ } Bytes;
+ struct {
+ ULONG BaseMid : 8;
+ ULONG Type : 5;
+ ULONG Dpl : 2;
+ ULONG Pres : 1;
+ ULONG LimitHi : 4;
+ ULONG Sys : 1;
+ ULONG Reserved_0 : 1;
+ ULONG Default_Big : 1;
+ ULONG Granularity : 1;
+ ULONG BaseHi : 8;
+ } Bits;
+ } HighWord;
+} VDMLDT_ENTRY;
+
+
+#endif // _X86_
+
+typedef VDMCONTEXT *LPVDMCONTEXT;
+typedef VDMLDT_ENTRY *LPVDMLDT_ENTRY;
+
+#define VDMCONTEXT_TO_PROGRAM_COUNTER(Context) (PVOID)((Context)->Eip)
+
+#define VDMCONTEXT_LENGTH (sizeof(VDMCONTEXT))
+#define VDMCONTEXT_ALIGN (sizeof(ULONG))
+#define VDMCONTEXT_ROUND (VDMCONTEXT_ALIGN - 1)
+
+#define V86FLAGS_CARRY 0x00001
+#define V86FLAGS_PARITY 0x00004
+#define V86FLAGS_AUXCARRY 0x00010
+#define V86FLAGS_ZERO 0x00040
+#define V86FLAGS_SIGN 0x00080
+#define V86FLAGS_TRACE 0x00100
+#define V86FLAGS_INTERRUPT 0x00200
+#define V86FLAGS_DIRECTION 0x00400
+#define V86FLAGS_OVERFLOW 0x00800
+#define V86FLAGS_IOPL 0x03000
+#define V86FLAGS_IOPL_BITS 0x12
+#define V86FLAGS_RESUME 0x10000
+#define V86FLAGS_V86 0x20000 // Used to detect RealMode v. ProtMode
+#define V86FLAGS_ALIGNMENT 0x40000
+
+#define MAX_MODULE_NAME 8 + 1
+#define MAX_PATH16 255
+
+typedef struct _SEGMENT_NOTE {
+ WORD Selector1; // Selector of operation
+ WORD Selector2; // Dest. Sel. for moving segments
+ WORD Segment; // Segment within Module
+ CHAR Module[MAX_MODULE_NAME+1]; // Module name
+ CHAR FileName[MAX_PATH16+1]; // PathName to executable image
+ WORD Type; // Code / Data, etc.
+ DWORD Length; // Length of image
+} SEGMENT_NOTE;
+
+typedef struct _IMAGE_NOTE {
+ CHAR Module[MAX_MODULE_NAME+1]; // Module
+ CHAR FileName[MAX_PATH16+1]; // Path to executable image
+ WORD hModule; // 16-bit hModule
+ WORD hTask; // 16-bit hTask
+} IMAGE_NOTE;
+
+typedef struct {
+ DWORD dwSize;
+ char szModule[MAX_MODULE_NAME+1];
+ HANDLE hModule;
+ WORD wcUsage;
+ char szExePath[MAX_PATH16+1];
+ WORD wNext;
+} MODULEENTRY, *LPMODULEENTRY;
+
+/* GlobalFirst()/GlobalNext() flags */
+#define GLOBAL_ALL 0
+#define GLOBAL_LRU 1
+#define GLOBAL_FREE 2
+
+/* GLOBALENTRY.wType entries */
+#define GT_UNKNOWN 0
+#define GT_DGROUP 1
+#define GT_DATA 2
+#define GT_CODE 3
+#define GT_TASK 4
+#define GT_RESOURCE 5
+#define GT_MODULE 6
+#define GT_FREE 7
+#define GT_INTERNAL 8
+#define GT_SENTINEL 9
+#define GT_BURGERMASTER 10
+
+/* If GLOBALENTRY.wType==GT_RESOURCE, the following is GLOBALENTRY.wData: */
+#define GD_USERDEFINED 0
+#define GD_CURSORCOMPONENT 1
+#define GD_BITMAP 2
+#define GD_ICONCOMPONENT 3
+#define GD_MENU 4
+#define GD_DIALOG 5
+#define GD_STRING 6
+#define GD_FONTDIR 7
+#define GD_FONT 8
+#define GD_ACCELERATORS 9
+#define GD_RCDATA 10
+#define GD_ERRTABLE 11
+#define GD_CURSOR 12
+#define GD_ICON 14
+#define GD_NAMETABLE 15
+#define GD_MAX_RESOURCE 15
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwAddress;
+ DWORD dwBlockSize;
+ HANDLE hBlock;
+ WORD wcLock;
+ WORD wcPageLock;
+ WORD wFlags;
+ BOOL wHeapPresent;
+ HANDLE hOwner;
+ WORD wType;
+ WORD wData;
+ DWORD dwNext;
+ DWORD dwNextAlt;
+} GLOBALENTRY, *LPGLOBALENTRY;
+
+typedef DWORD (CALLBACK* DEBUGEVENTPROC)( LPDEBUG_EVENT, LPVOID );
+
+// Macros to access VDM_EVENT parameters
+#define W1(x) ((USHORT)(x.ExceptionInformation[0]))
+#define W2(x) ((USHORT)(x.ExceptionInformation[0] >> 16))
+#define W3(x) ((USHORT)(x.ExceptionInformation[1]))
+#define W4(x) ((USHORT)(x.ExceptionInformation[1] >> 16))
+#define DW3(x) (x.ExceptionInformation[2])
+#define DW4(x) (x.ExceptionInformation[3])
+
+#include <poppack.h>
+
+BOOL
+WINAPI
+VDMProcessException(
+ LPDEBUG_EVENT lpDebugEvent
+ );
+
+BOOL
+WINAPI
+VDMGetThreadSelectorEntry(
+ HANDLE hProcess,
+ HANDLE hThread,
+ WORD wSelector,
+ LPVDMLDT_ENTRY lpSelectorEntry
+ );
+
+ULONG
+WINAPI
+VDMGetPointer(
+ HANDLE hProcess,
+ HANDLE hThread,
+ WORD wSelector,
+ DWORD dwOffset,
+ BOOL fProtMode
+ );
+
+BOOL
+WINAPI
+VDMGetThreadContext(
+ LPDEBUG_EVENT lpDebugEvent,
+ LPVDMCONTEXT lpVDMContext
+);
+
+BOOL
+WINAPI
+VDMSetThreadContext(
+ LPDEBUG_EVENT lpDebugEvent,
+ LPVDMCONTEXT lpVDMContext
+);
+
+BOOL
+WINAPI
+VDMGetSelectorModule(
+ HANDLE hProcess,
+ HANDLE hThread,
+ WORD wSelector,
+ PUINT lpSegmentNumber,
+ LPSTR lpModuleName,
+ UINT nNameSize,
+ LPSTR lpModulePath,
+ UINT nPathSize
+);
+
+BOOL
+WINAPI
+VDMGetModuleSelector(
+ HANDLE hProcess,
+ HANDLE hThread,
+ UINT wSegmentNumber,
+ LPSTR lpModuleName,
+ LPWORD lpSelector
+);
+
+BOOL
+WINAPI
+VDMModuleFirst(
+ HANDLE hProcess,
+ HANDLE hThread,
+ LPMODULEENTRY lpModuleEntry,
+ DEBUGEVENTPROC lpEventProc,
+ LPVOID lpData
+);
+
+BOOL
+WINAPI
+VDMModuleNext(
+ HANDLE hProcess,
+ HANDLE hThread,
+ LPMODULEENTRY lpModuleEntry,
+ DEBUGEVENTPROC lpEventProc,
+ LPVOID lpData
+);
+
+BOOL
+WINAPI
+VDMGlobalFirst(
+ HANDLE hProcess,
+ HANDLE hThread,
+ LPGLOBALENTRY lpGlobalEntry,
+ WORD wFlags,
+ DEBUGEVENTPROC lpEventProc,
+ LPVOID lpData
+);
+
+BOOL
+WINAPI
+VDMGlobalNext(
+ HANDLE hProcess,
+ HANDLE hThread,
+ LPGLOBALENTRY lpGlobalEntry,
+ WORD wFlags,
+ DEBUGEVENTPROC lpEventProc,
+ LPVOID lpData
+);
+
+typedef BOOL (WINAPI *PROCESSENUMPROC)( DWORD dwProcessId, DWORD dwAttributes, LPARAM lpUserDefined );
+typedef BOOL (WINAPI *TASKENUMPROC)( DWORD dwThreadId, WORD hMod16, WORD hTask16, LPARAM lpUserDefined );
+typedef BOOL (WINAPI *TASKENUMPROCEX)( DWORD dwThreadId, WORD hMod16, WORD hTask16,
+ PSZ pszModName, PSZ pszFileName, LPARAM lpUserDefined );
+
+#define WOW_SYSTEM (DWORD)0x0001
+
+INT
+WINAPI
+VDMEnumProcessWOW(
+ PROCESSENUMPROC fp,
+ LPARAM lparam
+);
+
+INT
+WINAPI
+VDMEnumTaskWOW(
+ DWORD dwProcessId,
+ TASKENUMPROC fp,
+ LPARAM lparam
+);
+
+//
+// VDMEnumTaskWOWEx is the same as VDMEnumTaskWOW except
+// the callback procedure gets two more parameters,
+// the module name of the EXE and the full path to the
+// EXE.
+//
+
+INT
+WINAPI
+VDMEnumTaskWOWEx(
+ DWORD dwProcessId,
+ TASKENUMPROCEX fp,
+ LPARAM lparam
+);
+
+//
+// VDMTerminateTaskWOW rudely terminates a 16-bit WOW task
+// similar to the way TerminateProcess kills a Win32
+// process.
+//
+
+BOOL
+WINAPI
+VDMTerminateTaskWOW(
+ DWORD dwProcessId,
+ WORD htask
+);
+
+//
+// VDMStartTaskInWOW launches a Win16 task in a pre-existing
+// WOW VDM. Note that the caller is responsible for ensuring
+// the program is a 16-bit Windows program. If it is a DOS
+// or Win32 program, it will still be launched from within
+// the target WOW VDM.
+//
+// The supplied command line and show command are passed
+// unchanged to the 16-bit WinExec API in the target WOW VDM.
+//
+// Note this routine is ANSI-only.
+//
+
+BOOL
+VDMStartTaskInWOW(
+ DWORD dwProcessId,
+ LPSTR lpCommandLine,
+ WORD wShow
+);
+
+//
+// VDMKillWOW is not implemented.
+//
+
+BOOL
+WINAPI
+VDMKillWOW(
+ VOID
+);
+
+//
+// VDMDetectWOW is not implemented.
+//
+
+BOOL
+WINAPI
+VDMDetectWOW(
+ VOID
+);
+
+BOOL
+WINAPI
+VDMBreakThread(
+ HANDLE hProcess,
+ HANDLE hThread
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _VDMDBG_
diff --git a/public/sdk/inc/verinfo.h b/public/sdk/inc/verinfo.h
new file mode 100644
index 000000000..4267128fd
--- /dev/null
+++ b/public/sdk/inc/verinfo.h
@@ -0,0 +1,22 @@
+
+#ifdef RC_INVOKED
+
+#include <ver.h>
+
+#define VER_FILEVERSION_STR "2.01\0"
+#define VER_FILEVERSION 2,01,0100,06
+
+#define VER_PRODUCTNAME_STR "Microsoft OLE 2.01 for Windows\0"
+#define VER_COMPANYNAME_STR "Microsoft Corporation\0"
+#define VER_LEGALTRADEMARKS_STR "Microsoft\256 is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Corporation\0"
+#define VER_LEGALCOPYRIGHT_STR "Copyright \251 Microsoft Corp. 1992 - 1993\0"
+#define VER_PRODUCTVERSION_STR "2.01\0"
+#define VER_PRODUCTVERSION 2,01,0100,06
+#define VER_COMMENT_STR "Windows OLE DLLs\0"
+#define VER_FILETYPE VFT_DLL
+#define VER_FILESUBTYPE 0
+#define VER_FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#define VER_FILEFLAGS 0L
+#define VER_FILEOS VOS_DOS_WINDOWS16
+
+#endif /* RC_INVOKED */
diff --git a/public/sdk/inc/vfw.h b/public/sdk/inc/vfw.h
new file mode 100644
index 000000000..b46cdcbac
--- /dev/null
+++ b/public/sdk/inc/vfw.h
@@ -0,0 +1,3558 @@
+/*******************0000*****************************************************
+ *
+ * VfW.H - Video for windows include file for WIN32
+ *
+ * Copyright (c) 1991-1995, Microsoft Corp. All rights reserved.
+ *
+ * This include files defines interfaces to the following
+ * video components
+ *
+ * COMPMAN - Installable Compression Manager.
+ * DRAWDIB - Routines for drawing to the display.
+ * VIDEO - Video Capture Driver Interface
+ *
+ * AVIFMT - AVI File Format structure definitions.
+ * MMREG - FOURCC and other things
+ *
+ * AVIFile - Interface for reading AVI Files and AVI Streams
+ * MCIWND - MCI/AVI window class
+ * AVICAP - AVI Capture Window class
+ *
+ * MSACM - Audio compression manager.
+ *
+ * The following symbols control inclusion of various parts of this file:
+ *
+ * NOCOMPMAN - dont include COMPMAN
+ * NODRAWDIB - dont include DRAWDIB
+ * NOVIDEO - dont include video capture interface
+ *
+ * NOAVIFMT - dont include AVI file format structs
+ * NOMMREG - dont include MMREG
+ *
+ * NOAVIFILE - dont include AVIFile interface
+ * NOMCIWND - dont include AVIWnd class.
+ * NOAVICAP - dont include AVICap class.
+ *
+ * NOMSACM - dont include ACM stuff.
+ *
+ ****************************************************************************/
+
+#ifndef _INC_VFW
+#define _INC_VFW
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+/****************************************************************************
+ *
+ * types
+ *
+ ***************************************************************************/
+
+#define VFWAPI WINAPI
+#define VFWAPIV WINAPIV
+
+/****************************************************************************
+ *
+ * VideoForWindowsVersion() - returns version of VfW
+ *
+ ***************************************************************************/
+
+DWORD FAR PASCAL VideoForWindowsVersion(void);
+
+/****************************************************************************
+ *
+ * call these to start stop using VfW from your app.
+ *
+ ***************************************************************************/
+
+LONG VFWAPI InitVFW(void);
+LONG VFWAPI TermVFW(void);
+
+/****************************************************************************
+ *
+ * do we need MMSYSTEM?
+ *
+ ****************************************************************************/
+
+#if !defined(_INC_MMSYSTEM) && (!defined(NOVIDEO) || !defined(NOAVICAP))
+ #include <mmsystem.h>
+#endif
+
+/****************************************************************************/
+/* */
+/* Macros */
+/* */
+/* should we define this?? */
+/* */
+/****************************************************************************/
+
+#ifndef MKFOURCC
+#define MKFOURCC( ch0, ch1, ch2, ch3 ) \
+ ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
+ ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
+#endif
+
+#if !defined(_INC_MMSYSTEM)
+ #define mmioFOURCC MKFOURCC
+#endif
+
+/****************************************************************************
+ *
+ * COMPMAN - Installable Compression Manager.
+ *
+ ****************************************************************************/
+
+#ifndef NOCOMPMAN
+
+#define ICVERSION 0x0104
+
+DECLARE_HANDLE(HIC); /* Handle to a Installable Compressor */
+
+//
+// this code in biCompression means the DIB must be accesed via
+// 48 bit pointers! using *ONLY* the selector given.
+//
+#define BI_1632 0x32333631 // '1632'
+
+#ifndef mmioFOURCC
+#define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
+ ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
+ ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
+#endif
+
+#ifndef aviTWOCC
+#define aviTWOCC(ch0, ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
+#endif
+
+#ifndef ICTYPE_VIDEO
+#define ICTYPE_VIDEO mmioFOURCC('v', 'i', 'd', 'c')
+#define ICTYPE_AUDIO mmioFOURCC('a', 'u', 'd', 'c')
+#endif
+
+#ifndef ICERR_OK
+#define ICERR_OK 0L
+#define ICERR_DONTDRAW 1L
+#define ICERR_NEWPALETTE 2L
+#define ICERR_GOTOKEYFRAME 3L
+#define ICERR_STOPDRAWING 4L
+
+#define ICERR_UNSUPPORTED -1L
+#define ICERR_BADFORMAT -2L
+#define ICERR_MEMORY -3L
+#define ICERR_INTERNAL -4L
+#define ICERR_BADFLAGS -5L
+#define ICERR_BADPARAM -6L
+#define ICERR_BADSIZE -7L
+#define ICERR_BADHANDLE -8L
+#define ICERR_CANTUPDATE -9L
+#define ICERR_ABORT -10L
+#define ICERR_ERROR -100L
+#define ICERR_BADBITDEPTH -200L
+#define ICERR_BADIMAGESIZE -201L
+
+#define ICERR_CUSTOM -400L // errors less than ICERR_CUSTOM...
+#endif
+
+/* Values for dwFlags of ICOpen() */
+#ifndef ICMODE_COMPRESS
+#define ICMODE_COMPRESS 1
+#define ICMODE_DECOMPRESS 2
+#define ICMODE_FASTDECOMPRESS 3
+#define ICMODE_QUERY 4
+#define ICMODE_FASTCOMPRESS 5
+#define ICMODE_DRAW 8
+#endif
+#ifndef _WIN32 // ;Internal
+#define ICMODE_INTERNALF_FUNCTION32 0x8000 // ;Internal
+#define ICMODE_INTERNALF_MASK 0x8000 // ;Internal
+#endif // ;Internal
+
+/* Flags for AVI file index */
+#define AVIIF_LIST 0x00000001L
+#define AVIIF_TWOCC 0x00000002L
+#define AVIIF_KEYFRAME 0x00000010L
+
+/* quality flags */
+#define ICQUALITY_LOW 0
+#define ICQUALITY_HIGH 10000
+#define ICQUALITY_DEFAULT -1
+
+/************************************************************************
+************************************************************************/
+
+#define ICM_USER (DRV_USER+0x0000)
+
+#define ICM_RESERVED ICM_RESERVED_LOW
+#define ICM_RESERVED_LOW (DRV_USER+0x1000)
+#define ICM_RESERVED_HIGH (DRV_USER+0x2000)
+
+/************************************************************************
+
+ messages.
+
+************************************************************************/
+
+#define ICM_GETSTATE (ICM_RESERVED+0) // Get compressor state
+#define ICM_SETSTATE (ICM_RESERVED+1) // Set compressor state
+#define ICM_GETINFO (ICM_RESERVED+2) // Query info about the compressor
+
+#define ICM_CONFIGURE (ICM_RESERVED+10) // show the configure dialog
+#define ICM_ABOUT (ICM_RESERVED+11) // show the about box
+
+#define ICM_GETERRORTEXT (ICM_RESERVED+12) // get error text TBD ;Internal
+#define ICM_GETFORMATNAME (ICM_RESERVED+20) // get a name for a format ;Internal
+#define ICM_ENUMFORMATS (ICM_RESERVED+21) // cycle through formats ;Internal
+
+#define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30) // get the default value for quality
+#define ICM_GETQUALITY (ICM_RESERVED+31) // get the current value for quality
+#define ICM_SETQUALITY (ICM_RESERVED+32) // set the default value for quality
+
+#define ICM_SET (ICM_RESERVED+40) // Tell the driver something
+#define ICM_GET (ICM_RESERVED+41) // Ask the driver something
+
+// Constants for ICM_SET:
+#define ICM_FRAMERATE mmioFOURCC('F','r','m','R')
+#define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R')
+
+/************************************************************************
+
+ ICM specific messages.
+
+************************************************************************/
+
+#define ICM_COMPRESS_GET_FORMAT (ICM_USER+4) // get compress format or size
+#define ICM_COMPRESS_GET_SIZE (ICM_USER+5) // get output size
+#define ICM_COMPRESS_QUERY (ICM_USER+6) // query support for compress
+#define ICM_COMPRESS_BEGIN (ICM_USER+7) // begin a series of compress calls.
+#define ICM_COMPRESS (ICM_USER+8) // compress a frame
+#define ICM_COMPRESS_END (ICM_USER+9) // end of a series of compress calls.
+
+#define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10) // get decompress format or size
+#define ICM_DECOMPRESS_QUERY (ICM_USER+11) // query support for dempress
+#define ICM_DECOMPRESS_BEGIN (ICM_USER+12) // start a series of decompress calls
+#define ICM_DECOMPRESS (ICM_USER+13) // decompress a frame
+#define ICM_DECOMPRESS_END (ICM_USER+14) // end a series of decompress calls
+#define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29) // fill in the DIB color table
+#define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30) // fill in the DIB color table
+
+#define ICM_DRAW_QUERY (ICM_USER+31) // query support for dempress
+#define ICM_DRAW_BEGIN (ICM_USER+15) // start a series of draw calls
+#define ICM_DRAW_GET_PALETTE (ICM_USER+16) // get the palette needed for drawing
+#define ICM_DRAW_UPDATE (ICM_USER+17) // update screen with current frame ;Internal
+#define ICM_DRAW_START (ICM_USER+18) // start decompress clock
+#define ICM_DRAW_STOP (ICM_USER+19) // stop decompress clock
+#define ICM_DRAW_BITS (ICM_USER+20) // decompress a frame to screen ;Internal
+#define ICM_DRAW_END (ICM_USER+21) // end a series of draw calls
+#define ICM_DRAW_GETTIME (ICM_USER+32) // get value of decompress clock
+#define ICM_DRAW (ICM_USER+33) // generalized "render" message
+#define ICM_DRAW_WINDOW (ICM_USER+34) // drawing window has moved or hidden
+#define ICM_DRAW_SETTIME (ICM_USER+35) // set correct value for decompress clock
+#define ICM_DRAW_REALIZE (ICM_USER+36) // realize palette for drawing
+#define ICM_DRAW_FLUSH (ICM_USER+37) // clear out buffered frames
+#define ICM_DRAW_RENDERBUFFER (ICM_USER+38) // draw undrawn things in queue
+
+#define ICM_DRAW_START_PLAY (ICM_USER+39) // start of a play
+#define ICM_DRAW_STOP_PLAY (ICM_USER+40) // end of a play
+
+#define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50) // Like ICGetDisplayFormat
+#define ICM_DRAW_CHANGEPALETTE (ICM_USER+51) // for animating palette
+
+#define ICM_DRAW_IDLE (ICM_USER+52) // send each frame time ;Internal
+
+#define ICM_GETBUFFERSWANTED (ICM_USER+41) // ask about prebuffering
+
+#define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42) // get the default value for key frames
+
+
+#define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60) // start a series of decompress calls
+#define ICM_DECOMPRESSEX_QUERY (ICM_USER+61) // start a series of decompress calls
+#define ICM_DECOMPRESSEX (ICM_USER+62) // decompress a frame
+#define ICM_DECOMPRESSEX_END (ICM_USER+63) // end a series of decompress calls
+
+#define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70) // tell about compress to come
+#define ICM_COMPRESS_FRAMES (ICM_USER+71) // compress a bunch of frames ;Internal
+#define ICM_SET_STATUS_PROC (ICM_USER+72) // set status callback
+
+/************************************************************************
+************************************************************************/
+
+typedef struct {
+ DWORD dwSize; // sizeof(ICOPEN)
+ DWORD fccType; // 'vidc'
+ DWORD fccHandler; //
+ DWORD dwVersion; // version of compman opening you
+ DWORD dwFlags; // LOWORD is type specific
+ LRESULT dwError; // error return.
+ LPVOID pV1Reserved; // Reserved
+ LPVOID pV2Reserved; // Reserved
+ DWORD dnDevNode; // Devnode for PnP devices
+} ICOPEN;
+
+/************************************************************************
+************************************************************************/
+
+typedef struct {
+ DWORD dwSize; // sizeof(ICINFO)
+ DWORD fccType; // compressor type 'vidc' 'audc'
+ DWORD fccHandler; // compressor sub-type 'rle ' 'jpeg' 'pcm '
+ DWORD dwFlags; // flags LOWORD is type specific
+ DWORD dwVersion; // version of the driver
+ DWORD dwVersionICM; // version of the ICM used
+ //
+ // under Win32, the driver always returns UNICODE strings.
+ //
+ WCHAR szName[16]; // short name
+ WCHAR szDescription[128]; // long name
+ WCHAR szDriver[128]; // driver that contains compressor
+} ICINFO;
+
+/* Flags for the <dwFlags> field of the <ICINFO> structure. */
+#define VIDCF_QUALITY 0x0001 // supports quality
+#define VIDCF_CRUNCH 0x0002 // supports crunching to a frame size
+#define VIDCF_TEMPORAL 0x0004 // supports inter-frame compress
+#define VIDCF_COMPRESSFRAMES 0x0008 // wants the compress all frames message
+#define VIDCF_DRAW 0x0010 // supports drawing
+#define VIDCF_FASTTEMPORALC 0x0020 // does not need prev frame on compress
+#define VIDCF_FASTTEMPORALD 0x0080 // does not need prev frame on decompress
+//#define VIDCF_QUALITYTIME 0x0040 // supports temporal quality
+
+//#define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
+
+/************************************************************************
+************************************************************************/
+
+#define ICCOMPRESS_KEYFRAME 0x00000001L
+
+typedef struct {
+ DWORD dwFlags; // flags
+
+ LPBITMAPINFOHEADER lpbiOutput; // output format
+ LPVOID lpOutput; // output data
+
+ LPBITMAPINFOHEADER lpbiInput; // format of frame to compress
+ LPVOID lpInput; // frame data to compress
+
+ LPDWORD lpckid; // ckid for data in AVI file
+ LPDWORD lpdwFlags; // flags in the AVI index.
+ LONG lFrameNum; // frame number of seq.
+ DWORD dwFrameSize; // reqested size in bytes. (if non zero)
+
+ DWORD dwQuality; // quality
+
+ // these are new fields
+ LPBITMAPINFOHEADER lpbiPrev; // format of previous frame
+ LPVOID lpPrev; // previous frame
+
+} ICCOMPRESS;
+
+/************************************************************************
+************************************************************************/
+
+#define ICCOMPRESSFRAMES_PADDING 0x00000001
+
+typedef struct {
+ DWORD dwFlags; // flags
+
+ LPBITMAPINFOHEADER lpbiOutput; // output format
+ LPARAM lOutput; // output identifier
+
+ LPBITMAPINFOHEADER lpbiInput; // format of frame to compress
+ LPARAM lInput; // input identifier
+
+ LONG lStartFrame; // start frame
+ LONG lFrameCount; // # of frames
+
+ LONG lQuality; // quality
+ LONG lDataRate; // data rate
+ LONG lKeyRate; // key frame rate
+
+ DWORD dwRate; // frame rate, as always
+ DWORD dwScale;
+
+ DWORD dwOverheadPerFrame;
+ DWORD dwReserved2;
+
+ LONG (CALLBACK *GetData)(LPARAM lInput, LONG lFrame, LPVOID lpBits, LONG len);
+ LONG (CALLBACK *PutData)(LPARAM lOutput, LONG lFrame, LPVOID lpBits, LONG len);
+} ICCOMPRESSFRAMES;
+
+typedef struct {
+ DWORD dwFlags;
+ LPARAM lParam;
+
+ // messages for Status callback
+ #define ICSTATUS_START 0
+ #define ICSTATUS_STATUS 1 // l == % done
+ #define ICSTATUS_END 2
+ #define ICSTATUS_ERROR 3 // l == error string (LPSTR)
+ #define ICSTATUS_YIELD 4
+ // return nonzero means abort operation in progress
+
+ LONG (CALLBACK *Status) (LPARAM lParam, UINT message, LONG l);
+} ICSETSTATUSPROC;
+
+/************************************************************************
+************************************************************************/
+
+#define ICDECOMPRESS_HURRYUP 0x80000000L // don't draw just buffer (hurry up!)
+#define ICDECOMPRESS_UPDATE 0x40000000L // don't draw just update screen
+#define ICDECOMPRESS_PREROLL 0x20000000L // this frame is before real start
+#define ICDECOMPRESS_NULLFRAME 0x10000000L // repeat last frame
+#define ICDECOMPRESS_NOTKEYFRAME 0x08000000L // this frame is not a key frame
+
+typedef struct {
+ DWORD dwFlags; // flags (from AVI index...)
+
+ LPBITMAPINFOHEADER lpbiInput; // BITMAPINFO of compressed data
+ // biSizeImage has the chunk size
+ LPVOID lpInput; // compressed data
+
+ LPBITMAPINFOHEADER lpbiOutput; // DIB to decompress to
+ LPVOID lpOutput;
+ DWORD ckid; // ckid from AVI file
+} ICDECOMPRESS;
+
+typedef struct {
+ //
+ // same as ICM_DECOMPRESS
+ //
+ DWORD dwFlags;
+
+ LPBITMAPINFOHEADER lpbiSrc; // BITMAPINFO of compressed data
+ LPVOID lpSrc; // compressed data
+
+ LPBITMAPINFOHEADER lpbiDst; // DIB to decompress to
+ LPVOID lpDst; // output data
+
+ //
+ // new for ICM_DECOMPRESSEX
+ //
+ int xDst; // destination rectangle
+ int yDst;
+ int dxDst;
+ int dyDst;
+
+ int xSrc; // source rectangle
+ int ySrc;
+ int dxSrc;
+ int dySrc;
+
+} ICDECOMPRESSEX;
+
+/************************************************************************
+************************************************************************/
+
+#define ICDRAW_QUERY 0x00000001L // test for support
+#define ICDRAW_FULLSCREEN 0x00000002L // draw to full screen
+#define ICDRAW_HDC 0x00000004L // draw to a HDC/HWND
+#define ICDRAW_ANIMATE 0x00000008L // expect palette animation
+#define ICDRAW_CONTINUE 0x00000010L // draw is a continuation of previous draw
+#define ICDRAW_MEMORYDC 0x00000020L // DC is offscreen, by the way
+#define ICDRAW_UPDATING 0x00000040L // We're updating, as opposed to playing
+#define ICDRAW_RENDER 0x00000080L // used to render data not draw it
+#define ICDRAW_BUFFER 0x00000100L // please buffer this data offscreen, we will need to update it
+
+typedef struct {
+ DWORD dwFlags; // flags
+
+ HPALETTE hpal; // palette to draw with
+ HWND hwnd; // window to draw to
+ HDC hdc; // HDC to draw to
+
+ int xDst; // destination rectangle
+ int yDst;
+ int dxDst;
+ int dyDst;
+
+ LPBITMAPINFOHEADER lpbi; // format of frame to draw
+
+ int xSrc; // source rectangle
+ int ySrc;
+ int dxSrc;
+ int dySrc;
+
+ DWORD dwRate; // frames/second = (dwRate/dwScale)
+ DWORD dwScale;
+
+} ICDRAWBEGIN;
+
+/************************************************************************
+************************************************************************/
+
+#define ICDRAW_HURRYUP 0x80000000L // don't draw just buffer (hurry up!)
+#define ICDRAW_UPDATE 0x40000000L // don't draw just update screen
+#define ICDRAW_PREROLL 0x20000000L // this frame is before real start
+#define ICDRAW_NULLFRAME 0x10000000L // repeat last frame
+#define ICDRAW_NOTKEYFRAME 0x08000000L // this frame is not a key frame
+
+typedef struct {
+ DWORD dwFlags; // flags
+ LPVOID lpFormat; // format of frame to decompress
+ LPVOID lpData; // frame data to decompress
+ DWORD cbData;
+ LONG lTime; // time in drawbegin units (see dwRate and dwScale)
+} ICDRAW;
+
+typedef struct {
+ LPBITMAPINFOHEADER lpbiIn; // format to be drawn
+ LPBITMAPINFOHEADER lpbiSuggest; // location for suggested format (or NULL to get size)
+ int dxSrc; // source extent or 0
+ int dySrc;
+ int dxDst; // dest extent or 0
+ int dyDst;
+ HIC hicDecompressor;// decompressor you can talk to
+} ICDRAWSUGGEST;
+
+/************************************************************************
+************************************************************************/
+
+typedef struct {
+ DWORD dwFlags; // flags (from AVI index...)
+ int iStart; // first palette to change
+ int iLen; // count of entries to change.
+ LPPALETTEENTRY lppe; // palette
+} ICPALETTE;
+
+
+/************************************************************************
+
+ ICM function declarations
+
+************************************************************************/
+
+BOOL VFWAPI ICInfo(DWORD fccType, DWORD fccHandler, ICINFO FAR * lpicinfo);
+BOOL VFWAPI ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags);
+BOOL VFWAPI ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags);
+LRESULT VFWAPI ICGetInfo(HIC hic, ICINFO FAR *picinfo, DWORD cb);
+
+HIC VFWAPI ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode);
+HIC VFWAPI ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler);
+LRESULT VFWAPI ICClose(HIC hic);
+
+LRESULT VFWAPI ICSendMessage(HIC hic, UINT msg, DWORD dw1, DWORD dw2);
+#ifndef _WIN32
+//this function is unsupported on Win32 as it is non-portable.
+LRESULT VFWAPIV ICMessage(HIC hic, UINT msg, UINT cb, ...);
+#endif
+
+
+/* Values for wFlags of ICInstall() */
+#define ICINSTALL_UNICODE 0x8000
+
+#define ICINSTALL_FUNCTION 0x0001 // lParam is a DriverProc (function ptr)
+#define ICINSTALL_DRIVER 0x0002 // lParam is a driver name (string)
+#define ICINSTALL_HDRV 0x0004 // lParam is a HDRVR (driver handle)
+
+#define ICINSTALL_DRIVERW 0x8002 // lParam is a unicode driver name
+
+/************************************************************************
+
+ query macros
+
+************************************************************************/
+#define ICMF_CONFIGURE_QUERY 0x00000001
+#define ICMF_ABOUT_QUERY 0x00000001
+
+#define ICQueryAbout(hic) \
+ (ICSendMessage(hic, ICM_ABOUT, (DWORD) -1, ICMF_ABOUT_QUERY) == ICERR_OK)
+
+#define ICAbout(hic, hwnd) \
+ ICSendMessage(hic, ICM_ABOUT, (DWORD)(UINT)(hwnd), 0)
+
+#define ICQueryConfigure(hic) \
+ (ICSendMessage(hic, ICM_CONFIGURE, (DWORD) -1, ICMF_CONFIGURE_QUERY) == ICERR_OK)
+
+#define ICConfigure(hic, hwnd) \
+ ICSendMessage(hic, ICM_CONFIGURE, (DWORD)(UINT)(hwnd), 0)
+
+/************************************************************************
+
+ get/set state macros
+
+************************************************************************/
+
+#define ICGetState(hic, pv, cb) \
+ ICSendMessage(hic, ICM_GETSTATE, (DWORD)(LPVOID)(pv), (DWORD)(cb))
+
+#define ICSetState(hic, pv, cb) \
+ ICSendMessage(hic, ICM_SETSTATE, (DWORD)(LPVOID)(pv), (DWORD)(cb))
+
+#define ICGetStateSize(hic) \
+ ICGetState(hic, NULL, 0)
+
+/************************************************************************
+
+ get value macros
+
+************************************************************************/
+static DWORD dwICValue;
+
+#define ICGetDefaultQuality(hic) \
+ (ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD)), dwICValue)
+
+#define ICGetDefaultKeyFrameRate(hic) \
+ (ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD)), dwICValue)
+
+/************************************************************************
+
+ draw window macro
+
+************************************************************************/
+#define ICDrawWindow(hic, prc) \
+ ICSendMessage(hic, ICM_DRAW_WINDOW, (DWORD)(LPVOID)(prc), sizeof(RECT))
+
+/************************************************************************
+
+ compression functions
+
+************************************************************************/
+/*
+ * ICCompress()
+ *
+ * compress a single frame
+ *
+ */
+DWORD VFWAPIV ICCompress(
+ HIC hic,
+ DWORD dwFlags, // flags
+ LPBITMAPINFOHEADER lpbiOutput, // output format
+ LPVOID lpData, // output data
+ LPBITMAPINFOHEADER lpbiInput, // format of frame to compress
+ LPVOID lpBits, // frame data to compress
+ LPDWORD lpckid, // ckid for data in AVI file
+ LPDWORD lpdwFlags, // flags in the AVI index.
+ LONG lFrameNum, // frame number of seq.
+ DWORD dwFrameSize, // reqested size in bytes. (if non zero)
+ DWORD dwQuality, // quality within one frame
+ LPBITMAPINFOHEADER lpbiPrev, // format of previous frame
+ LPVOID lpPrev); // previous frame
+
+/*
+ * ICCompressBegin()
+ *
+ * start compression from a source format (lpbiInput) to a dest
+ * format (lpbiOuput) is supported.
+ *
+ */
+#define ICCompressBegin(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage(hic, ICM_COMPRESS_BEGIN, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
+
+/*
+ * ICCompressQuery()
+ *
+ * determines if compression from a source format (lpbiInput) to a dest
+ * format (lpbiOuput) is supported.
+ *
+ */
+#define ICCompressQuery(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage(hic, ICM_COMPRESS_QUERY, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
+
+/*
+ * ICCompressGetFormat()
+ *
+ * get the output format, (format of compressed data)
+ * if lpbiOutput is NULL return the size in bytes needed for format.
+ *
+ */
+#define ICCompressGetFormat(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
+
+#define ICCompressGetFormatSize(hic, lpbi) \
+ ICCompressGetFormat(hic, lpbi, NULL)
+
+/*
+ * ICCompressSize()
+ *
+ * return the maximal size of a compressed frame
+ *
+ */
+#define ICCompressGetSize(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
+
+#define ICCompressEnd(hic) \
+ ICSendMessage(hic, ICM_COMPRESS_END, 0, 0)
+
+/************************************************************************
+
+ decompression functions
+
+************************************************************************/
+
+/*
+ * ICDecompress()
+ *
+ * decompress a single frame
+ *
+ */
+#define ICDECOMPRESS_HURRYUP 0x80000000L // don't draw just buffer (hurry up!)
+
+DWORD VFWAPIV ICDecompress(
+ HIC hic,
+ DWORD dwFlags, // flags (from AVI index...)
+ LPBITMAPINFOHEADER lpbiFormat, // BITMAPINFO of compressed data
+ // biSizeImage has the chunk size
+ LPVOID lpData, // data
+ LPBITMAPINFOHEADER lpbi, // DIB to decompress to
+ LPVOID lpBits);
+
+/*
+ * ICDecompressBegin()
+ *
+ * start compression from a source format (lpbiInput) to a dest
+ * format (lpbiOutput) is supported.
+ *
+ */
+#define ICDecompressBegin(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
+
+/*
+ * ICDecompressQuery()
+ *
+ * determines if compression from a source format (lpbiInput) to a dest
+ * format (lpbiOutput) is supported.
+ *
+ */
+#define ICDecompressQuery(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage(hic, ICM_DECOMPRESS_QUERY, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
+
+/*
+ * ICDecompressGetFormat()
+ *
+ * get the output format, (format of un-compressed data)
+ * if lpbiOutput is NULL return the size in bytes needed for format.
+ *
+ */
+#define ICDecompressGetFormat(hic, lpbiInput, lpbiOutput) \
+ ((LONG) ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput)))
+
+#define ICDecompressGetFormatSize(hic, lpbi) \
+ ICDecompressGetFormat(hic, lpbi, NULL)
+
+/*
+ * ICDecompressGetPalette()
+ *
+ * get the output palette
+ *
+ */
+#define ICDecompressGetPalette(hic, lpbiInput, lpbiOutput) \
+ ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, (DWORD)(LPVOID)(lpbiInput), (DWORD)(LPVOID)(lpbiOutput))
+
+#define ICDecompressSetPalette(hic, lpbiPalette) \
+ ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, (DWORD)(LPVOID)(lpbiPalette), 0)
+
+#define ICDecompressEnd(hic) \
+ ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0)
+
+/************************************************************************
+
+ decompression (ex) functions
+
+************************************************************************/
+
+
+//
+// on Win16 these functions are macros that call ICMessage. ICMessage will
+// not work on NT. rather than add new entrypoints we have given
+// them as static inline functions
+//
+
+/*
+ * ICDecompressEx()
+ *
+ * decompress a single frame
+ *
+ */
+static __inline LRESULT VFWAPI
+ICDecompressEx(
+ HIC hic,
+ DWORD dwFlags,
+ LPBITMAPINFOHEADER lpbiSrc,
+ LPVOID lpSrc,
+ int xSrc,
+ int ySrc,
+ int dxSrc,
+ int dySrc,
+ LPBITMAPINFOHEADER lpbiDst,
+ LPVOID lpDst,
+ int xDst,
+ int yDst,
+ int dxDst,
+ int dyDst)
+{
+ ICDECOMPRESSEX ic;
+
+ ic.dwFlags = dwFlags;
+ ic.lpbiSrc = lpbiSrc;
+ ic.lpSrc = lpSrc;
+ ic.xSrc = xSrc;
+ ic.ySrc = ySrc;
+ ic.dxSrc = dxSrc;
+ ic.dySrc = dySrc;
+ ic.lpbiDst = lpbiDst;
+ ic.lpDst = lpDst;
+ ic.xDst = xDst;
+ ic.yDst = yDst;
+ ic.dxDst = dxDst;
+ ic.dyDst = dyDst;
+
+ // note that ICM swaps round the length and pointer
+ // length in lparam2, pointer in lparam1
+ return ICSendMessage(hic, ICM_DECOMPRESSEX, (DWORD)&ic, sizeof(ic));
+}
+
+
+/*
+ * ICDecompressExBegin()
+ *
+ * start compression from a source format (lpbiInput) to a dest
+ * format (lpbiOutput) is supported.
+ *
+ */
+static __inline LRESULT VFWAPI
+ICDecompressExBegin(
+ HIC hic,
+ DWORD dwFlags,
+ LPBITMAPINFOHEADER lpbiSrc,
+ LPVOID lpSrc,
+ int xSrc,
+ int ySrc,
+ int dxSrc,
+ int dySrc,
+ LPBITMAPINFOHEADER lpbiDst,
+ LPVOID lpDst,
+ int xDst,
+ int yDst,
+ int dxDst,
+ int dyDst)
+{
+ ICDECOMPRESSEX ic;
+
+ ic.dwFlags = dwFlags;
+ ic.lpbiSrc = lpbiSrc;
+ ic.lpSrc = lpSrc;
+ ic.xSrc = xSrc;
+ ic.ySrc = ySrc;
+ ic.dxSrc = dxSrc;
+ ic.dySrc = dySrc;
+ ic.lpbiDst = lpbiDst;
+ ic.lpDst = lpDst;
+ ic.xDst = xDst;
+ ic.yDst = yDst;
+ ic.dxDst = dxDst;
+ ic.dyDst = dyDst;
+
+ // note that ICM swaps round the length and pointer
+ // length in lparam2, pointer in lparam1
+ return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, (DWORD)&ic, sizeof(ic));
+}
+
+/*
+ * ICDecompressExQuery()
+ *
+ */
+static __inline LRESULT VFWAPI
+ICDecompressExQuery(
+ HIC hic,
+ DWORD dwFlags,
+ LPBITMAPINFOHEADER lpbiSrc,
+ LPVOID lpSrc,
+ int xSrc,
+ int ySrc,
+ int dxSrc,
+ int dySrc,
+ LPBITMAPINFOHEADER lpbiDst,
+ LPVOID lpDst,
+ int xDst,
+ int yDst,
+ int dxDst,
+ int dyDst)
+{
+ ICDECOMPRESSEX ic;
+
+ ic.dwFlags = dwFlags;
+ ic.lpbiSrc = lpbiSrc;
+ ic.lpSrc = lpSrc;
+ ic.xSrc = xSrc;
+ ic.ySrc = ySrc;
+ ic.dxSrc = dxSrc;
+ ic.dySrc = dySrc;
+ ic.lpbiDst = lpbiDst;
+ ic.lpDst = lpDst;
+ ic.xDst = xDst;
+ ic.yDst = yDst;
+ ic.dxDst = dxDst;
+ ic.dyDst = dyDst;
+
+ // note that ICM swaps round the length and pointer
+ // length in lparam2, pointer in lparam1
+ return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, (DWORD)&ic, sizeof(ic));
+}
+
+
+#define ICDecompressExEnd(hic) \
+ ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0)
+
+/************************************************************************
+
+ drawing functions
+
+************************************************************************/
+
+/*
+ * ICDrawBegin()
+ *
+ * start decompressing data with format (lpbiInput) directly to the screen
+ *
+ * return zero if the decompressor supports drawing.
+ *
+ */
+
+#define ICDRAW_QUERY 0x00000001L // test for support
+#define ICDRAW_FULLSCREEN 0x00000002L // draw to full screen
+#define ICDRAW_HDC 0x00000004L // draw to a HDC/HWND
+
+DWORD VFWAPIV ICDrawBegin(
+ HIC hic,
+ DWORD dwFlags, // flags
+ HPALETTE hpal, // palette to draw with
+ HWND hwnd, // window to draw to
+ HDC hdc, // HDC to draw to
+ int xDst, // destination rectangle
+ int yDst,
+ int dxDst,
+ int dyDst,
+ LPBITMAPINFOHEADER lpbi, // format of frame to draw
+ int xSrc, // source rectangle
+ int ySrc,
+ int dxSrc,
+ int dySrc,
+ DWORD dwRate, // frames/second = (dwRate/dwScale)
+ DWORD dwScale);
+
+/*
+ * ICDraw()
+ *
+ * decompress data directly to the screen
+ *
+ */
+
+#define ICDRAW_HURRYUP 0x80000000L // don't draw just buffer (hurry up!)
+#define ICDRAW_UPDATE 0x40000000L // don't draw just update screen
+
+DWORD VFWAPIV ICDraw(
+ HIC hic,
+ DWORD dwFlags, // flags
+ LPVOID lpFormat, // format of frame to decompress
+ LPVOID lpData, // frame data to decompress
+ DWORD cbData, // size of data
+ LONG lTime); // time to draw this frame
+
+
+// ICMessage is not supported on Win32, so provide a static inline function
+// to do the same job
+static __inline LRESULT VFWAPI
+ICDrawSuggestFormat(
+ HIC hic,
+ LPBITMAPINFOHEADER lpbiIn,
+ LPBITMAPINFOHEADER lpbiOut,
+ int dxSrc,
+ int dySrc,
+ int dxDst,
+ int dyDst,
+ HIC hicDecomp)
+{
+ ICDRAWSUGGEST ic;
+
+ ic.lpbiIn = lpbiIn;
+ ic.lpbiSuggest = lpbiOut;
+ ic.dxSrc = dxSrc;
+ ic.dySrc = dySrc;
+ ic.dxDst = dxDst;
+ ic.dyDst = dyDst;
+ ic.hicDecompressor = hicDecomp;
+
+ // note that ICM swaps round the length and pointer
+ // length in lparam2, pointer in lparam1
+ return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, (DWORD)&ic, sizeof(ic));
+}
+
+
+/*
+ * ICDrawQuery()
+ *
+ * determines if the compressor is willing to render the specified format.
+ *
+ */
+#define ICDrawQuery(hic, lpbiInput) \
+ ICSendMessage(hic, ICM_DRAW_QUERY, (DWORD)(LPVOID)(lpbiInput), 0L)
+
+#define ICDrawChangePalette(hic, lpbiInput) \
+ ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, (DWORD)(LPVOID)(lpbiInput), 0L)
+
+#define ICGetBuffersWanted(hic, lpdwBuffers) \
+ ICSendMessage(hic, ICM_GETBUFFERSWANTED, (DWORD)(LPVOID)(lpdwBuffers), 0)
+
+#define ICDrawEnd(hic) \
+ ICSendMessage(hic, ICM_DRAW_END, 0, 0)
+
+#define ICDrawStart(hic) \
+ ICSendMessage(hic, ICM_DRAW_START, 0, 0)
+
+#define ICDrawStartPlay(hic, lFrom, lTo) \
+ ICSendMessage(hic, ICM_DRAW_START_PLAY, (DWORD)(lFrom), (DWORD)(lTo))
+
+#define ICDrawStop(hic) \
+ ICSendMessage(hic, ICM_DRAW_STOP, 0, 0)
+
+#define ICDrawStopPlay(hic) \
+ ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0)
+
+#define ICDrawGetTime(hic, lplTime) \
+ ICSendMessage(hic, ICM_DRAW_GETTIME, (DWORD)(LPVOID)(lplTime), 0)
+
+#define ICDrawSetTime(hic, lTime) \
+ ICSendMessage(hic, ICM_DRAW_SETTIME, (DWORD)lTime, 0)
+
+#define ICDrawRealize(hic, hdc, fBackground) \
+ ICSendMessage(hic, ICM_DRAW_REALIZE, (DWORD)(UINT)(HDC)(hdc), (DWORD)(BOOL)(fBackground))
+
+#define ICDrawFlush(hic) \
+ ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0)
+
+#define ICDrawRenderBuffer(hic) \
+ ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0)
+
+/************************************************************************
+
+ Status callback functions
+
+************************************************************************/
+
+/*
+ * ICSetStatusProc()
+ *
+ * Set the status callback function
+ *
+ */
+
+
+// ICMessage is not supported on NT
+static __inline LRESULT VFWAPI
+ICSetStatusProc(
+ HIC hic,
+ DWORD dwFlags,
+ LRESULT lParam,
+ LONG (CALLBACK *fpfnStatus)(LPARAM, UINT, LONG) )
+{
+ ICSETSTATUSPROC ic;
+
+ ic.dwFlags = dwFlags;
+ ic.lParam = lParam;
+ ic.Status = fpfnStatus;
+
+ // note that ICM swaps round the length and pointer
+ // length in lparam2, pointer in lparam1
+ return ICSendMessage(hic, ICM_SET_STATUS_PROC, (DWORD)&ic, sizeof(ic));
+}
+
+
+/************************************************************************
+
+helper routines for DrawDib and MCIAVI...
+
+************************************************************************/
+
+#define ICDecompressOpen(fccType, fccHandler, lpbiIn, lpbiOut) \
+ ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS)
+
+#define ICDrawOpen(fccType, fccHandler, lpbiIn) \
+ ICLocate(fccType, fccHandler, lpbiIn, NULL, ICMODE_DRAW)
+
+HIC VFWAPI ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags);
+HIC VFWAPI ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy);
+
+/************************************************************************
+Higher level functions
+************************************************************************/
+
+HANDLE VFWAPI ICImageCompress(
+ HIC hic, // compressor to use
+ UINT uiFlags, // flags (none yet)
+ LPBITMAPINFO lpbiIn, // format to compress from
+ LPVOID lpBits, // data to compress
+ LPBITMAPINFO lpbiOut, // compress to this (NULL ==> default)
+ LONG lQuality, // quality to use
+ LONG FAR * plSize); // compress to this size (0=whatever)
+
+HANDLE VFWAPI ICImageDecompress(
+ HIC hic, // compressor to use
+ UINT uiFlags, // flags (none yet)
+ LPBITMAPINFO lpbiIn, // format to decompress from
+ LPVOID lpBits, // data to decompress
+ LPBITMAPINFO lpbiOut); // decompress to this (NULL ==> default)
+
+//
+// Structure used by ICSeqCompressFrame and ICCompressorChoose routines
+// Make sure this matches the autodoc in icm.c!
+//
+typedef struct {
+ LONG cbSize; // set to sizeof(COMPVARS) before
+ // calling ICCompressorChoose
+ DWORD dwFlags; // see below...
+ HIC hic; // HIC of chosen compressor
+ DWORD fccType; // basically ICTYPE_VIDEO
+ DWORD fccHandler; // handler of chosen compressor or
+ // "" or "DIB "
+ LPBITMAPINFO lpbiIn; // input format
+ LPBITMAPINFO lpbiOut; // output format - will compress to this
+ LPVOID lpBitsOut;
+ LPVOID lpBitsPrev;
+ LONG lFrame;
+ LONG lKey; // key frames how often?
+ LONG lDataRate; // desired data rate KB/Sec
+ LONG lQ; // desired quality
+ LONG lKeyCount;
+ LPVOID lpState; // state of compressor
+ LONG cbState; // size of the state
+} COMPVARS, FAR *PCOMPVARS;
+
+// FLAGS for dwFlags element of COMPVARS structure:
+// set this flag if you initialize COMPVARS before calling ICCompressorChoose
+#define ICMF_COMPVARS_VALID 0x00000001 // COMPVARS contains valid data
+
+//
+// allows user to choose compressor, quality etc...
+//
+BOOL VFWAPI ICCompressorChoose(
+ HWND hwnd, // parent window for dialog
+ UINT uiFlags, // flags
+ LPVOID pvIn, // input format (optional)
+ LPVOID lpData, // input data (optional)
+ PCOMPVARS pc, // data about the compressor/dlg
+ LPSTR lpszTitle); // dialog title (optional)
+
+// defines for uiFlags
+#define ICMF_CHOOSE_KEYFRAME 0x0001 // show KeyFrame Every box
+#define ICMF_CHOOSE_DATARATE 0x0002 // show DataRate box
+#define ICMF_CHOOSE_PREVIEW 0x0004 // allow expanded preview dialog
+#define ICMF_CHOOSE_ALLCOMPRESSORS 0x0008 // don't only show those that
+ // can handle the input format
+ // or input data
+
+BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn);
+void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS pc);
+
+LPVOID VFWAPI ICSeqCompressFrame(
+ PCOMPVARS pc, // set by ICCompressorChoose
+ UINT uiFlags, // flags
+ LPVOID lpBits, // input DIB bits
+ BOOL FAR *pfKey, // did it end up being a key frame?
+ LONG FAR *plSize); // size to compress to/of returned image
+
+void VFWAPI ICCompressorFree(PCOMPVARS pc);
+
+#endif /* NOCOMPMAN */
+
+/**************************************************************************
+ *
+ * DRAWDIB - Routines for drawing to the display.
+ *
+ *************************************************************************/
+
+#ifndef NODRAWDIB
+
+typedef HANDLE HDRAWDIB; /* hdd */
+
+/*********************************************************************
+
+ DrawDib Flags
+
+**********************************************************************/
+#define DDF_0001 0x0001 /* ;Internal */
+#define DDF_UPDATE 0x0002 /* re-draw the last DIB */
+#define DDF_SAME_HDC 0x0004 /* HDC same as last call (all setup) */
+#define DDF_SAME_DRAW 0x0008 /* draw params are the same */
+#define DDF_DONTDRAW 0x0010 /* dont draw frame, just decompress */
+#define DDF_ANIMATE 0x0020 /* allow palette animation */
+#define DDF_BUFFER 0x0040 /* always buffer image */
+#define DDF_JUSTDRAWIT 0x0080 /* just draw it with GDI */
+#define DDF_FULLSCREEN 0x0100 /* use DisplayDib */
+#define DDF_BACKGROUNDPAL 0x0200 /* Realize palette in background */
+#define DDF_NOTKEYFRAME 0x0400 /* this is a partial frame update, hint */
+#define DDF_HURRYUP 0x0800 /* hurry up please! */
+#define DDF_HALFTONE 0x1000 /* always halftone */
+#define DDF_2000 0x2000 /* ;Internal */
+
+#define DDF_PREROLL DDF_DONTDRAW /* Builing up a non-keyframe */
+#define DDF_SAME_DIB DDF_SAME_DRAW
+#define DDF_SAME_SIZE DDF_SAME_DRAW
+
+/*********************************************************************
+
+ DrawDib functions
+
+*********************************************************************/
+/* // ;Internal
+** DrawDibInit() // ;Internal
+** // ;Internal
+*/ // ;Internal
+extern BOOL VFWAPI DrawDibInit(void); // ;Internal
+ // ;Internal
+/*
+** DrawDibOpen()
+**
+*/
+extern HDRAWDIB VFWAPI DrawDibOpen(void);
+
+/*
+** DrawDibClose()
+**
+*/
+extern BOOL VFWAPI DrawDibClose(HDRAWDIB hdd);
+
+/*
+** DrawDibGetBuffer()
+**
+*/
+extern LPVOID VFWAPI DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags);
+
+/* // ;Internal
+** DrawDibError() // ;Internal
+*/ // ;Internal
+extern UINT VFWAPI DrawDibError(HDRAWDIB hdd); // ;Internal
+ // ;Internal
+/*
+** DrawDibGetPalette()
+**
+** get the palette used for drawing DIBs
+**
+*/
+extern HPALETTE VFWAPI DrawDibGetPalette(HDRAWDIB hdd);
+
+
+/*
+** DrawDibSetPalette()
+**
+** get the palette used for drawing DIBs
+**
+*/
+extern BOOL VFWAPI DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal);
+
+/*
+** DrawDibChangePalette()
+*/
+extern BOOL VFWAPI DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe);
+
+/*
+** DrawDibRealize()
+**
+** realize the palette in a HDD
+**
+*/
+extern UINT VFWAPI DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground);
+
+/*
+** DrawDibStart()
+**
+** start of streaming playback
+**
+*/
+extern BOOL VFWAPI DrawDibStart(HDRAWDIB hdd, DWORD rate);
+
+/*
+** DrawDibStop()
+**
+** start of streaming playback
+**
+*/
+extern BOOL VFWAPI DrawDibStop(HDRAWDIB hdd);
+
+/*
+** DrawDibBegin()
+**
+** prepare to draw
+**
+*/
+extern BOOL VFWAPI DrawDibBegin(HDRAWDIB hdd,
+ HDC hdc,
+ int dxDst,
+ int dyDst,
+ LPBITMAPINFOHEADER lpbi,
+ int dxSrc,
+ int dySrc,
+ UINT wFlags);
+/*
+** DrawDibDraw()
+**
+** actualy draw a DIB to the screen.
+**
+*/
+extern BOOL VFWAPI DrawDibDraw(HDRAWDIB hdd,
+ HDC hdc,
+ int xDst,
+ int yDst,
+ int dxDst,
+ int dyDst,
+ LPBITMAPINFOHEADER lpbi,
+ LPVOID lpBits,
+ int xSrc,
+ int ySrc,
+ int dxSrc,
+ int dySrc,
+ UINT wFlags);
+
+/*
+** DrawDibUpdate()
+**
+** redraw the last image (may only be valid with DDF_BUFFER)
+*/
+#define DrawDibUpdate(hdd, hdc, x, y) \
+ DrawDibDraw(hdd, hdc, x, y, 0, 0, NULL, NULL, 0, 0, 0, 0, DDF_UPDATE)
+
+/*
+** DrawDibEnd()
+*/
+extern BOOL VFWAPI DrawDibEnd(HDRAWDIB hdd);
+
+/*
+** DrawDibTime() [for debugging purposes only]
+*/
+typedef struct {
+ LONG timeCount;
+ LONG timeDraw;
+ LONG timeDecompress;
+ LONG timeDither;
+ LONG timeStretch;
+ LONG timeBlt;
+ LONG timeSetDIBits;
+} DRAWDIBTIME, FAR *LPDRAWDIBTIME;
+
+BOOL VFWAPI DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime);
+
+/* display profiling */
+#define PD_CAN_DRAW_DIB 0x0001 /* if you can draw at all */
+#define PD_CAN_STRETCHDIB 0x0002 /* basicly RC_STRETCHDIB */
+#define PD_STRETCHDIB_1_1_OK 0x0004 /* is it fast? */
+#define PD_STRETCHDIB_1_2_OK 0x0008 /* ... */
+#define PD_STRETCHDIB_1_N_OK 0x0010 /* ... */
+
+DWORD VFWAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi);
+
+#endif /* NODRAWDIB */
+
+/****************************************************************************
+ *
+ * AVIFMT - AVI file format definitions
+ *
+ ****************************************************************************/
+
+#ifndef NOAVIFMT
+ #ifndef _INC_MMSYSTEM
+ typedef DWORD FOURCC;
+ #endif
+#ifdef _MSC_VER
+#pragma warning(disable:4200)
+#endif
+
+/* The following is a short description of the AVI file format. Please
+ * see the accompanying documentation for a full explanation.
+ *
+ * An AVI file is the following RIFF form:
+ *
+ * RIFF('AVI'
+ * LIST('hdrl'
+ * avih(<MainAVIHeader>)
+ * LIST ('strl'
+ * strh(<Stream header>)
+ * strf(<Stream format>)
+ * ... additional header data
+ * LIST('movi'
+ * { LIST('rec'
+ * SubChunk...
+ * )
+ * | SubChunk } ....
+ * )
+ * [ <AVIIndex> ]
+ * )
+ *
+ * The main file header specifies how many streams are present. For
+ * each one, there must be a stream header chunk and a stream format
+ * chunk, enlosed in a 'strl' LIST chunk. The 'strf' chunk contains
+ * type-specific format information; for a video stream, this should
+ * be a BITMAPINFO structure, including palette. For an audio stream,
+ * this should be a WAVEFORMAT (or PCMWAVEFORMAT) structure.
+ *
+ * The actual data is contained in subchunks within the 'movi' LIST
+ * chunk. The first two characters of each data chunk are the
+ * stream number with which that data is associated.
+ *
+ * Some defined chunk types:
+ * Video Streams:
+ * ##db: RGB DIB bits
+ * ##dc: RLE8 compressed DIB bits
+ * ##pc: Palette Change
+ *
+ * Audio Streams:
+ * ##wb: waveform audio bytes
+ *
+ * The grouping into LIST 'rec' chunks implies only that the contents of
+ * the chunk should be read into memory at the same time. This
+ * grouping is used for files specifically intended to be played from
+ * CD-ROM.
+ *
+ * The index chunk at the end of the file should contain one entry for
+ * each data chunk in the file.
+ *
+ * Limitations for the current software:
+ * Only one video stream and one audio stream are allowed.
+ * The streams must start at the beginning of the file.
+ *
+ *
+ * To register codec types please obtain a copy of the Multimedia
+ * Developer Registration Kit from:
+ *
+ * Microsoft Corporation
+ * Multimedia Systems Group
+ * Product Marketing
+ * One Microsoft Way
+ * Redmond, WA 98052-6399
+ *
+ */
+
+
+#ifndef mmioFOURCC
+#define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
+ ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
+ ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
+#endif
+
+/* Macro to make a TWOCC out of two characters */
+#ifndef aviTWOCC
+#define aviTWOCC(ch0, ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
+#endif
+
+typedef WORD TWOCC;
+
+/* form types, list types, and chunk types */
+#define formtypeAVI mmioFOURCC('A', 'V', 'I', ' ')
+#define listtypeAVIHEADER mmioFOURCC('h', 'd', 'r', 'l')
+#define ckidAVIMAINHDR mmioFOURCC('a', 'v', 'i', 'h')
+#define listtypeSTREAMHEADER mmioFOURCC('s', 't', 'r', 'l')
+#define ckidSTREAMHEADER mmioFOURCC('s', 't', 'r', 'h')
+#define ckidSTREAMFORMAT mmioFOURCC('s', 't', 'r', 'f')
+#define ckidSTREAMHANDLERDATA mmioFOURCC('s', 't', 'r', 'd')
+#define ckidSTREAMNAME mmioFOURCC('s', 't', 'r', 'n')
+
+#define listtypeAVIMOVIE mmioFOURCC('m', 'o', 'v', 'i')
+#define listtypeAVIRECORD mmioFOURCC('r', 'e', 'c', ' ')
+
+#define ckidAVINEWINDEX mmioFOURCC('i', 'd', 'x', '1')
+
+/*
+** Stream types for the <fccType> field of the stream header.
+*/
+#define streamtypeVIDEO mmioFOURCC('v', 'i', 'd', 's')
+#define streamtypeAUDIO mmioFOURCC('a', 'u', 'd', 's')
+#define streamtypeMIDI mmioFOURCC('m', 'i', 'd', 's')
+#define streamtypeTEXT mmioFOURCC('t', 'x', 't', 's')
+
+/* Basic chunk types */
+#define cktypeDIBbits aviTWOCC('d', 'b')
+#define cktypeDIBcompressed aviTWOCC('d', 'c')
+#define cktypePALchange aviTWOCC('p', 'c')
+#define cktypeWAVEbytes aviTWOCC('w', 'b')
+
+/* Chunk id to use for extra chunks for padding. */
+#define ckidAVIPADDING mmioFOURCC('J', 'U', 'N', 'K')
+
+
+/*
+** Useful macros
+**
+** Warning: These are nasty macro, and MS C 6.0 compiles some of them
+** incorrectly if optimizations are on. Ack.
+*/
+
+/* Macro to get stream number out of a FOURCC ckid */
+#define FromHex(n) (((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0'))
+#define StreamFromFOURCC(fcc) ((WORD) ((FromHex(LOBYTE(LOWORD(fcc))) << 4) + \
+ (FromHex(HIBYTE(LOWORD(fcc))))))
+
+/* Macro to get TWOCC chunk type out of a FOURCC ckid */
+#define TWOCCFromFOURCC(fcc) HIWORD(fcc)
+
+/* Macro to make a ckid for a chunk out of a TWOCC and a stream number
+** from 0-255.
+*/
+#define ToHex(n) ((BYTE) (((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0')))
+#define MAKEAVICKID(tcc, stream) \
+ MAKELONG((ToHex((stream) & 0x0f) << 8) | \
+ (ToHex(((stream) & 0xf0) >> 4)), tcc)
+
+
+/*
+** Main AVI File Header
+*/
+
+/* flags for use in <dwFlags> in AVIFileHdr */
+#define AVIF_HASINDEX 0x00000010 // Index at end of file?
+#define AVIF_MUSTUSEINDEX 0x00000020
+#define AVIF_ISINTERLEAVED 0x00000100
+#define AVIF_WASCAPTUREFILE 0x00010000
+#define AVIF_COPYRIGHTED 0x00020000
+
+/* The AVI File Header LIST chunk should be padded to this size */
+#define AVI_HEADERSIZE 2048 // size of AVI header list
+
+typedef struct
+{
+ DWORD dwMicroSecPerFrame; // frame display rate (or 0L)
+ DWORD dwMaxBytesPerSec; // max. transfer rate
+ DWORD dwPaddingGranularity; // pad to multiples of this
+ // size; normally 2K.
+ DWORD dwFlags; // the ever-present flags
+ DWORD dwTotalFrames; // # frames in file
+ DWORD dwInitialFrames;
+ DWORD dwStreams;
+ DWORD dwSuggestedBufferSize;
+
+ DWORD dwWidth;
+ DWORD dwHeight;
+
+ DWORD dwReserved[4];
+} MainAVIHeader;
+
+
+/*
+** Stream header
+*/
+
+#define AVISF_DISABLED 0x00000001
+
+#define AVISF_VIDEO_PALCHANGES 0x00010000
+
+typedef struct {
+ FOURCC fccType;
+ FOURCC fccHandler;
+ DWORD dwFlags; /* Contains AVITF_* flags */
+ WORD wPriority;
+ WORD wLanguage;
+ DWORD dwInitialFrames;
+ DWORD dwScale;
+ DWORD dwRate; /* dwRate / dwScale == samples/second */
+ DWORD dwStart;
+ DWORD dwLength; /* In units above... */
+ DWORD dwSuggestedBufferSize;
+ DWORD dwQuality;
+ DWORD dwSampleSize;
+ RECT rcFrame;
+} AVIStreamHeader;
+
+/* Flags for index */
+#define AVIIF_LIST 0x00000001L // chunk is a 'LIST'
+#define AVIIF_KEYFRAME 0x00000010L // this frame is a key frame.
+#define AVIIF_FIRSTPART 0x00000020L // this frame is the start of a partial frame.
+#define AVIIF_LASTPART 0x00000040L // this frame is the end of a partial frame.
+#define AVIIF_MIDPART (AVIIF_LASTPART|AVIIF_FIRSTPART)
+
+#define AVIIF_NOTIME 0x00000100L // this frame doesn't take any time
+#define AVIIF_COMPUSE 0x0FFF0000L // these bits are for compressor use
+
+typedef struct
+{
+ DWORD ckid;
+ DWORD dwFlags;
+ DWORD dwChunkOffset; // Position of chunk
+ DWORD dwChunkLength; // Length of chunk
+} AVIINDEXENTRY;
+
+
+/*
+** Palette change chunk
+**
+** Used in video streams.
+*/
+typedef struct
+{
+ BYTE bFirstEntry; /* first entry to change */
+ BYTE bNumEntries; /* # entries to change (0 if 256) */
+ WORD wFlags; /* Mostly to preserve alignment... */
+ PALETTEENTRY peNew[]; /* New color specifications */
+} AVIPALCHANGE;
+
+#endif /* NOAVIFMT */
+
+/****************************************************************************
+ *
+ * MMREG.H (standard include file for MM defines, like FOURCC and things)
+ *
+ ***************************************************************************/
+
+#ifndef RC_INVOKED
+#include "pshpack8.h"
+#endif
+#ifndef NOMMREG
+ #include <mmreg.h>
+#endif
+
+/****************************************************************************
+ *
+ * AVIFile - routines for reading/writing standard AVI files
+ *
+ ***************************************************************************/
+
+#ifndef NOAVIFILE
+
+/*
+ * Ansi - Unicode thunking.
+ *
+ * Unicode or Ansi-only apps can call the avifile APIs.
+ * any Win32 app who wants to use
+ * any of the AVI COM interfaces must be UNICODE - the AVISTREAMINFO and
+ * AVIFILEINFO structures used in the Info methods of these interfaces are
+ * the unicode variants, and no thunking to or from ansi takes place
+ * except in the AVIFILE api entrypoints.
+ *
+ * For Ansi/Unicode thunking: for each entrypoint or structure that
+ * uses chars or strings, two versions are declared in the Win32 version,
+ * ApiNameW and ApiNameA. The default name ApiName is #defined to one or
+ * other of these depending on whether UNICODE is defined (during
+ * compilation of the app that is including this header). The source will
+ * contain ApiName and ApiNameA (with ApiName being the Win16 implementation,
+ * and also #defined to ApiNameW, and ApiNameA being the thunk entrypoint).
+ *
+ */
+
+#ifndef mmioFOURCC
+ #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
+ ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
+ ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
+#endif
+
+#ifndef streamtypeVIDEO
+#define streamtypeVIDEO mmioFOURCC('v', 'i', 'd', 's')
+#define streamtypeAUDIO mmioFOURCC('a', 'u', 'd', 's')
+#define streamtypeMIDI mmioFOURCC('m', 'i', 'd', 's')
+#define streamtypeTEXT mmioFOURCC('t', 'x', 't', 's')
+#endif
+
+#ifndef AVIIF_KEYFRAME
+#define AVIIF_KEYFRAME 0x00000010L // this frame is a key frame.
+#endif
+
+// For GetFrame::SetFormat - use the best format for the display
+#define AVIGETFRAMEF_BESTDISPLAYFMT 1
+
+//
+// Structures used by AVIStreamInfo & AVIFileInfo.
+//
+// These are related to, but not identical to, the header chunks
+// in an AVI file.
+//
+
+/*
+ *
+ * --- AVISTREAMINFO ------------------------------------------------
+ *
+ * for Unicode/Ansi thunking we need to declare three versions of this!
+ */
+typedef struct _AVISTREAMINFOW {
+ DWORD fccType;
+ DWORD fccHandler;
+ DWORD dwFlags; /* Contains AVITF_* flags */
+ DWORD dwCaps;
+ WORD wPriority;
+ WORD wLanguage;
+ DWORD dwScale;
+ DWORD dwRate; /* dwRate / dwScale == samples/second */
+ DWORD dwStart;
+ DWORD dwLength; /* In units above... */
+ DWORD dwInitialFrames;
+ DWORD dwSuggestedBufferSize;
+ DWORD dwQuality;
+ DWORD dwSampleSize;
+ RECT rcFrame;
+ DWORD dwEditCount;
+ DWORD dwFormatChangeCount;
+ WCHAR szName[64];
+} AVISTREAMINFOW, FAR * LPAVISTREAMINFOW;
+
+typedef struct _AVISTREAMINFOA {
+ DWORD fccType;
+ DWORD fccHandler;
+ DWORD dwFlags; /* Contains AVITF_* flags */
+ DWORD dwCaps;
+ WORD wPriority;
+ WORD wLanguage;
+ DWORD dwScale;
+ DWORD dwRate; /* dwRate / dwScale == samples/second */
+ DWORD dwStart;
+ DWORD dwLength; /* In units above... */
+ DWORD dwInitialFrames;
+ DWORD dwSuggestedBufferSize;
+ DWORD dwQuality;
+ DWORD dwSampleSize;
+ RECT rcFrame;
+ DWORD dwEditCount;
+ DWORD dwFormatChangeCount;
+ char szName[64];
+} AVISTREAMINFOA, FAR * LPAVISTREAMINFOA;
+
+#ifdef UNICODE
+#define AVISTREAMINFO AVISTREAMINFOW
+#define LPAVISTREAMINFO LPAVISTREAMINFOW
+#else
+#define AVISTREAMINFO AVISTREAMINFOA
+#define LPAVISTREAMINFO LPAVISTREAMINFOA
+#endif
+
+
+#define AVISTREAMINFO_DISABLED 0x00000001
+#define AVISTREAMINFO_FORMATCHANGES 0x00010000
+
+/*
+ * --- AVIFILEINFO ----------------------------------------------------
+ *
+ */
+
+
+typedef struct _AVIFILEINFOW {
+ DWORD dwMaxBytesPerSec; // max. transfer rate
+ DWORD dwFlags; // the ever-present flags
+ DWORD dwCaps;
+ DWORD dwStreams;
+ DWORD dwSuggestedBufferSize;
+
+ DWORD dwWidth;
+ DWORD dwHeight;
+
+ DWORD dwScale;
+ DWORD dwRate; /* dwRate / dwScale == samples/second */
+ DWORD dwLength;
+
+ DWORD dwEditCount;
+
+ WCHAR szFileType[64]; // descriptive string for file type?
+} AVIFILEINFOW, FAR * LPAVIFILEINFOW;
+
+typedef struct _AVIFILEINFOA {
+ DWORD dwMaxBytesPerSec; // max. transfer rate
+ DWORD dwFlags; // the ever-present flags
+ DWORD dwCaps;
+ DWORD dwStreams;
+ DWORD dwSuggestedBufferSize;
+
+ DWORD dwWidth;
+ DWORD dwHeight;
+
+ DWORD dwScale;
+ DWORD dwRate; /* dwRate / dwScale == samples/second */
+ DWORD dwLength;
+
+ DWORD dwEditCount;
+
+ char szFileType[64]; // descriptive string for file type?
+} AVIFILEINFOA, FAR * LPAVIFILEINFOA;
+
+#ifdef UNICODE
+#define AVIFILEINFO AVIFILEINFOW
+#define LPAVIFILEINFO LPAVIFILEINFOW
+#else
+#define AVIFILEINFO AVIFILEINFOA
+#define LPAVIFILEINFO LPAVIFILEINFOA
+#endif
+
+
+// Flags for dwFlags
+#define AVIFILEINFO_HASINDEX 0x00000010
+#define AVIFILEINFO_MUSTUSEINDEX 0x00000020
+#define AVIFILEINFO_ISINTERLEAVED 0x00000100
+#define AVIFILEINFO_WASCAPTUREFILE 0x00010000
+#define AVIFILEINFO_COPYRIGHTED 0x00020000
+
+// Flags for dwCaps
+#define AVIFILECAPS_CANREAD 0x00000001
+#define AVIFILECAPS_CANWRITE 0x00000002
+#define AVIFILECAPS_ALLKEYFRAMES 0x00000010
+#define AVIFILECAPS_NOCOMPRESSION 0x00000020
+
+typedef BOOL (FAR PASCAL * AVISAVECALLBACK)(int);
+
+/************************************************************************/
+/* Declaration for the AVICOMPRESSOPTIONS structure. Make sure it */
+/* matches the AutoDoc in avisave.c !!! */
+/************************************************************************/
+
+typedef struct {
+ DWORD fccType; /* stream type, for consistency */
+ DWORD fccHandler; /* compressor */
+ DWORD dwKeyFrameEvery; /* keyframe rate */
+ DWORD dwQuality; /* compress quality 0-10,000 */
+ DWORD dwBytesPerSecond; /* bytes per second */
+ DWORD dwFlags; /* flags... see below */
+ LPVOID lpFormat; /* save format */
+ DWORD cbFormat;
+ LPVOID lpParms; /* compressor options */
+ DWORD cbParms;
+ DWORD dwInterleaveEvery; /* for non-video streams only */
+} AVICOMPRESSOPTIONS, FAR *LPAVICOMPRESSOPTIONS;
+
+//
+// Defines for the dwFlags field of the AVICOMPRESSOPTIONS struct
+// Each of these flags determines if the appropriate field in the structure
+// (dwInterleaveEvery, dwBytesPerSecond, and dwKeyFrameEvery) is payed
+// attention to. See the autodoc in avisave.c for details.
+//
+#define AVICOMPRESSF_INTERLEAVE 0x00000001 // interleave
+#define AVICOMPRESSF_DATARATE 0x00000002 // use a data rate
+#define AVICOMPRESSF_KEYFRAMES 0x00000004 // use keyframes
+#define AVICOMPRESSF_VALID 0x00000008 // has valid data?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#include <ole2.h>
+
+/* - - - - - - - - */
+
+
+/****** AVI Stream Interface *******************************************/
+
+#undef INTERFACE
+#define INTERFACE IAVIStream
+
+DECLARE_INTERFACE_(IAVIStream, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IAVIStream methods ***
+ STDMETHOD(Create) (THIS_ LPARAM lParam1, LPARAM lParam2) PURE ;
+ STDMETHOD(Info) (THIS_ AVISTREAMINFOW FAR * psi, LONG lSize) PURE ;
+ STDMETHOD_(LONG, FindSample)(THIS_ LONG lPos, LONG lFlags) PURE ;
+ STDMETHOD(ReadFormat) (THIS_ LONG lPos,
+ LPVOID lpFormat, LONG FAR *lpcbFormat) PURE ;
+ STDMETHOD(SetFormat) (THIS_ LONG lPos,
+ LPVOID lpFormat, LONG cbFormat) PURE ;
+ STDMETHOD(Read) (THIS_ LONG lStart, LONG lSamples,
+ LPVOID lpBuffer, LONG cbBuffer,
+ LONG FAR * plBytes, LONG FAR * plSamples) PURE ;
+ STDMETHOD(Write) (THIS_ LONG lStart, LONG lSamples,
+ LPVOID lpBuffer, LONG cbBuffer,
+ DWORD dwFlags,
+ LONG FAR *plSampWritten,
+ LONG FAR *plBytesWritten) PURE ;
+ STDMETHOD(Delete) (THIS_ LONG lStart, LONG lSamples) PURE;
+ STDMETHOD(ReadData) (THIS_ DWORD fcc, LPVOID lp, LONG FAR *lpcb) PURE ;
+ STDMETHOD(WriteData) (THIS_ DWORD fcc, LPVOID lp, LONG cb) PURE ;
+#ifdef _WIN32
+ STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo,
+ LONG cbInfo) PURE;
+#else
+ STDMETHOD(Reserved1) (THIS) PURE;
+ STDMETHOD(Reserved2) (THIS) PURE;
+ STDMETHOD(Reserved3) (THIS) PURE;
+ STDMETHOD(Reserved4) (THIS) PURE;
+ STDMETHOD(Reserved5) (THIS) PURE;
+#endif
+};
+
+typedef IAVIStream FAR* PAVISTREAM;
+
+
+#undef INTERFACE
+#define INTERFACE IAVIStreaming
+
+DECLARE_INTERFACE_(IAVIStreaming, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IAVIStreaming methods ***
+ STDMETHOD(Begin) (THIS_
+ LONG lStart, // start of what we expect
+ // to play
+ LONG lEnd, // expected end, or -1
+ LONG lRate) PURE; // Should this be a float?
+ STDMETHOD(End) (THIS) PURE;
+};
+
+typedef IAVIStreaming FAR* PAVISTREAMING;
+
+
+#undef INTERFACE
+#define INTERFACE IAVIEditStream
+
+DECLARE_INTERFACE_(IAVIEditStream, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IAVIEditStream methods ***
+ STDMETHOD(Cut) (THIS_ LONG FAR *plStart,
+ LONG FAR *plLength,
+ PAVISTREAM FAR * ppResult) PURE;
+ STDMETHOD(Copy) (THIS_ LONG FAR *plStart,
+ LONG FAR *plLength,
+ PAVISTREAM FAR * ppResult) PURE;
+ STDMETHOD(Paste) (THIS_ LONG FAR *plPos,
+ LONG FAR *plLength,
+ PAVISTREAM pstream,
+ LONG lStart,
+ LONG lEnd) PURE;
+ STDMETHOD(Clone) (THIS_ PAVISTREAM FAR *ppResult) PURE;
+ STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo,
+ LONG cbInfo) PURE;
+};
+
+typedef IAVIEditStream FAR* PAVIEDITSTREAM;
+
+
+/****** AVI File Interface *******************************************/
+
+
+#undef INTERFACE
+#define INTERFACE IAVIFile
+#define PAVIFILE IAVIFile FAR*
+
+DECLARE_INTERFACE_(IAVIFile, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IAVIFile methods ***
+ STDMETHOD(Info) (THIS_
+ AVIFILEINFOW FAR * pfi,
+ LONG lSize) PURE;
+ STDMETHOD(GetStream) (THIS_
+ PAVISTREAM FAR * ppStream,
+ DWORD fccType,
+ LONG lParam) PURE;
+ STDMETHOD(CreateStream) (THIS_
+ PAVISTREAM FAR * ppStream,
+ AVISTREAMINFOW FAR * psi) PURE;
+ STDMETHOD(WriteData) (THIS_
+ DWORD ckid,
+ LPVOID lpData,
+ LONG cbData) PURE;
+ STDMETHOD(ReadData) (THIS_
+ DWORD ckid,
+ LPVOID lpData,
+ LONG FAR *lpcbData) PURE;
+ STDMETHOD(EndRecord) (THIS) PURE;
+ STDMETHOD(DeleteStream) (THIS_
+ DWORD fccType,
+ LONG lParam) PURE;
+};
+
+#undef PAVIFILE
+typedef IAVIFile FAR* PAVIFILE;
+
+/****** GetFrame Interface *******************************************/
+
+#undef INTERFACE
+#define INTERFACE IGetFrame
+#define PGETFRAME IGetFrame FAR*
+
+DECLARE_INTERFACE_(IGetFrame, IUnknown)
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IGetFrame methods ***
+
+ STDMETHOD_(LPVOID,GetFrame) (THIS_ LONG lPos) PURE;
+// STDMETHOD_(LPVOID,GetFrameData) (THIS_ LONG lPos) PURE;
+
+ STDMETHOD(Begin) (THIS_ LONG lStart, LONG lEnd, LONG lRate) PURE;
+ STDMETHOD(End) (THIS) PURE;
+
+ STDMETHOD(SetFormat) (THIS_ LPBITMAPINFOHEADER lpbi, LPVOID lpBits, int x, int y, int dx, int dy) PURE;
+
+// STDMETHOD(DrawFrameStart) (THIS) PURE;
+// STDMETHOD(DrawFrame) (THIS_ LONG lPos, HDC hdc, int x, int y, int dx, int dy) PURE;
+// STDMETHOD(DrawFrameEnd) (THIS) PURE;
+};
+
+#undef PGETFRAME
+typedef IGetFrame FAR* PGETFRAME;
+
+/****** GUIDs *******************************************/
+
+#define DEFINE_AVIGUID(name, l, w1, w2) \
+ DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
+
+DEFINE_AVIGUID(IID_IAVIFile, 0x00020020, 0, 0);
+DEFINE_AVIGUID(IID_IAVIStream, 0x00020021, 0, 0);
+DEFINE_AVIGUID(IID_IAVIStreaming, 0x00020022, 0, 0);
+DEFINE_AVIGUID(IID_IGetFrame, 0x00020023, 0, 0);
+DEFINE_AVIGUID(IID_IAVIEditStream, 0x00020024, 0, 0);
+#ifndef UNICODE
+DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal, 0x00020009, 0, 0);
+#endif
+
+DEFINE_AVIGUID(CLSID_AVIFile, 0x00020000, 0, 0);
+
+#define AVIFILEHANDLER_CANREAD 0x0001
+#define AVIFILEHANDLER_CANWRITE 0x0002
+#define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004
+
+//
+// functions
+//
+
+STDAPI_(void) AVIFileInit(void); // Call this first!
+STDAPI_(void) AVIFileExit(void);
+
+STDAPI_(ULONG) AVIFileAddRef (PAVIFILE pfile);
+STDAPI_(ULONG) AVIFileRelease (PAVIFILE pfile);
+
+#ifdef _WIN32
+STDAPI AVIFileOpenA (PAVIFILE FAR * ppfile, LPCSTR szFile,
+ UINT uMode, LPCLSID lpHandler);
+STDAPI AVIFileOpenW (PAVIFILE FAR * ppfile, LPCWSTR szFile,
+ UINT uMode, LPCLSID lpHandler);
+#ifdef UNICODE
+#define AVIFileOpen AVIFileOpenW
+#else
+#define AVIFileOpen AVIFileOpenA
+#endif
+#else // win16
+STDAPI AVIFileOpen (PAVIFILE FAR * ppfile, LPCSTR szFile,
+ UINT uMode, LPCLSID lpHandler);
+#define AVIFileOpenW AVIFileOpen /* ;Internal */
+#endif
+
+#ifdef _WIN32
+STDAPI AVIFileInfoW (PAVIFILE pfile, LPAVIFILEINFOW pfi, LONG lSize);
+STDAPI AVIFileInfoA (PAVIFILE pfile, LPAVIFILEINFOA pfi, LONG lSize);
+#ifdef UNICODE
+#define AVIFileInfo AVIFileInfoW
+#else
+#define AVIFileInfo AVIFileInfoA
+#endif
+#else //win16 version
+STDAPI AVIFileInfo (PAVIFILE pfile, LPAVIFILEINFO pfi, LONG lSize);
+#define AVIFileInfoW AVIFileInfo /* ;Internal */
+#endif
+
+
+STDAPI AVIFileGetStream (PAVIFILE pfile, PAVISTREAM FAR * ppavi, DWORD fccType, LONG lParam);
+
+
+#ifdef _WIN32
+STDAPI AVIFileCreateStreamW (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOW FAR * psi);
+STDAPI AVIFileCreateStreamA (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOA FAR * psi);
+#ifdef UNICODE
+#define AVIFileCreateStream AVIFileCreateStreamW
+#else
+#define AVIFileCreateStream AVIFileCreateStreamA
+#endif
+#else //win16 version
+STDAPI AVIFileCreateStream(PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFO FAR * psi);
+#define AVIFileCreateStreamW AVIFileCreateStream /* ;Internal */
+#endif
+
+STDAPI AVIFileWriteData (PAVIFILE pfile,
+ DWORD ckid,
+ LPVOID lpData,
+ LONG cbData);
+STDAPI AVIFileReadData (PAVIFILE pfile,
+ DWORD ckid,
+ LPVOID lpData,
+ LONG FAR *lpcbData);
+STDAPI AVIFileEndRecord (PAVIFILE pfile);
+
+STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi);
+STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi);
+
+STDAPI AVIStreamInfoW (PAVISTREAM pavi, LPAVISTREAMINFOW psi, LONG lSize);
+STDAPI AVIStreamInfoA (PAVISTREAM pavi, LPAVISTREAMINFOA psi, LONG lSize);
+#ifdef UNICODE
+#define AVIStreamInfo AVIStreamInfoW
+#else
+#define AVIStreamInfo AVIStreamInfoA
+#endif
+
+STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi, LONG lPos, LONG lFlags);
+STDAPI AVIStreamReadFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG FAR *lpcbFormat);
+STDAPI AVIStreamSetFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG cbFormat);
+STDAPI AVIStreamReadData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG FAR *lpcb);
+STDAPI AVIStreamWriteData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG cb);
+
+STDAPI AVIStreamRead (PAVISTREAM pavi,
+ LONG lStart,
+ LONG lSamples,
+ LPVOID lpBuffer,
+ LONG cbBuffer,
+ LONG FAR * plBytes,
+ LONG FAR * plSamples);
+#define AVISTREAMREAD_CONVENIENT (-1L)
+
+STDAPI AVIStreamWrite (PAVISTREAM pavi,
+ LONG lStart, LONG lSamples,
+ LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags,
+ LONG FAR *plSampWritten,
+ LONG FAR *plBytesWritten);
+
+// Right now, these just use AVIStreamInfo() to get information, then
+// return some of it. Can they be more efficient?
+STDAPI_(LONG) AVIStreamStart (PAVISTREAM pavi);
+STDAPI_(LONG) AVIStreamLength (PAVISTREAM pavi);
+STDAPI_(LONG) AVIStreamTimeToSample (PAVISTREAM pavi, LONG lTime);
+STDAPI_(LONG) AVIStreamSampleToTime (PAVISTREAM pavi, LONG lSample);
+
+
+STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart, LONG lEnd, LONG lRate);
+STDAPI AVIStreamEndStreaming(PAVISTREAM pavi);
+
+//
+// helper functions for using IGetFrame
+//
+STDAPI_(PGETFRAME) AVIStreamGetFrameOpen(PAVISTREAM pavi,
+ LPBITMAPINFOHEADER lpbiWanted);
+STDAPI_(LPVOID) AVIStreamGetFrame(PGETFRAME pg, LONG lPos);
+STDAPI AVIStreamGetFrameClose(PGETFRAME pg);
+
+
+// !!! We need some way to place an advise on a stream....
+// STDAPI AVIStreamHasChanged (PAVISTREAM pavi);
+
+
+
+// Shortcut function
+STDAPI AVIStreamOpenFromFileA(PAVISTREAM FAR *ppavi, LPCSTR szFile,
+ DWORD fccType, LONG lParam,
+ UINT mode, CLSID FAR *pclsidHandler);
+STDAPI AVIStreamOpenFromFileW(PAVISTREAM FAR *ppavi, LPCWSTR szFile,
+ DWORD fccType, LONG lParam,
+ UINT mode, CLSID FAR *pclsidHandler);
+#ifdef UNICODE
+#define AVIStreamOpenFromFile AVIStreamOpenFromFileW
+#else
+#define AVIStreamOpenFromFile AVIStreamOpenFromFileA
+#endif
+
+// Use to create disembodied streams
+STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2,
+ CLSID FAR *pclsidHandler);
+
+
+
+// PHANDLER AVIAPI AVIGetHandler (PAVISTREAM pavi, PAVISTREAMHANDLER psh);
+// PAVISTREAM AVIAPI AVIGetStream (PHANDLER p);
+
+//
+// flags for AVIStreamFindSample
+//
+#define FIND_DIR 0x0000000FL // direction
+#define FIND_NEXT 0x00000001L // go forward
+#define FIND_PREV 0x00000004L // go backward
+#define FIND_FROM_START 0x00000008L // start at the logical beginning
+
+#define FIND_TYPE 0x000000F0L // type mask
+#define FIND_KEY 0x00000010L // find key frame.
+#define FIND_ANY 0x00000020L // find any (non-empty) sample
+#define FIND_FORMAT 0x00000040L // find format change
+
+#define FIND_RET 0x0000F000L // return mask
+#define FIND_POS 0x00000000L // return logical position
+#define FIND_LENGTH 0x00001000L // return logical size
+#define FIND_OFFSET 0x00002000L // return physical position
+#define FIND_SIZE 0x00003000L // return physical size
+#define FIND_INDEX 0x00004000L // return physical index position
+
+
+//
+// stuff to support backward compat.
+//
+#define AVIStreamFindKeyFrame AVIStreamFindSample
+#define FindKeyFrame FindSample
+
+#define AVIStreamClose AVIStreamRelease
+#define AVIFileClose AVIFileRelease
+#define AVIStreamInit AVIFileInit
+#define AVIStreamExit AVIFileExit
+
+#define SEARCH_NEAREST FIND_PREV
+#define SEARCH_BACKWARD FIND_PREV
+#define SEARCH_FORWARD FIND_NEXT
+#define SEARCH_KEY FIND_KEY
+#define SEARCH_ANY FIND_ANY
+
+//
+// helper macros.
+//
+#define AVIStreamSampleToSample(pavi1, pavi2, l) \
+ AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2, l))
+
+#define AVIStreamNextSample(pavi, l) \
+ AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_ANY)
+
+#define AVIStreamPrevSample(pavi, l) \
+ AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_ANY)
+
+#define AVIStreamNearestSample(pavi, l) \
+ AVIStreamFindSample(pavi,l,FIND_PREV|FIND_ANY)
+
+#define AVIStreamNextKeyFrame(pavi,l) \
+ AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_KEY)
+
+#define AVIStreamPrevKeyFrame(pavi, l) \
+ AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_KEY)
+
+#define AVIStreamNearestKeyFrame(pavi, l) \
+ AVIStreamFindSample(pavi,l,FIND_PREV|FIND_KEY)
+
+#define AVIStreamIsKeyFrame(pavi, l) \
+ (AVIStreamNearestKeyFrame(pavi,l) == l)
+
+#define AVIStreamPrevSampleTime(pavi, t) \
+ AVIStreamSampleToTime(pavi, AVIStreamPrevSample(pavi,AVIStreamTimeToSample(pavi,t)))
+
+#define AVIStreamNextSampleTime(pavi, t) \
+ AVIStreamSampleToTime(pavi, AVIStreamNextSample(pavi,AVIStreamTimeToSample(pavi,t)))
+
+#define AVIStreamNearestSampleTime(pavi, t) \
+ AVIStreamSampleToTime(pavi, AVIStreamNearestSample(pavi,AVIStreamTimeToSample(pavi,t)))
+
+#define AVIStreamNextKeyFrameTime(pavi, t) \
+ AVIStreamSampleToTime(pavi, AVIStreamNextKeyFrame(pavi,AVIStreamTimeToSample(pavi, t)))
+
+#define AVIStreamPrevKeyFrameTime(pavi, t) \
+ AVIStreamSampleToTime(pavi, AVIStreamPrevKeyFrame(pavi,AVIStreamTimeToSample(pavi, t)))
+
+#define AVIStreamNearestKeyFrameTime(pavi, t) \
+ AVIStreamSampleToTime(pavi, AVIStreamNearestKeyFrame(pavi,AVIStreamTimeToSample(pavi, t)))
+
+#define AVIStreamStartTime(pavi) \
+ AVIStreamSampleToTime(pavi, AVIStreamStart(pavi))
+
+#define AVIStreamLengthTime(pavi) \
+ AVIStreamSampleToTime(pavi, AVIStreamLength(pavi))
+
+#define AVIStreamEnd(pavi) \
+ (AVIStreamStart(pavi) + AVIStreamLength(pavi))
+
+#define AVIStreamEndTime(pavi) \
+ AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi))
+
+#define AVIStreamSampleSize(pavi, lPos, plSize) \
+ AVIStreamRead(pavi,lPos,1,NULL,0,plSize,NULL)
+
+#define AVIStreamFormatSize(pavi, lPos, plSize) \
+ AVIStreamReadFormat(pavi,lPos,NULL,plSize)
+
+#define AVIStreamDataSize(pavi, fcc, plSize) \
+ AVIStreamReadData(pavi,fcc,NULL,plSize)
+
+/****************************************************************************
+ *
+ * AVISave routines and structures
+ *
+ ***************************************************************************/
+
+#ifndef comptypeDIB
+#define comptypeDIB mmioFOURCC('D', 'I', 'B', ' ')
+#endif
+
+STDAPI AVIMakeCompressedStream(
+ PAVISTREAM FAR * ppsCompressed,
+ PAVISTREAM ppsSource,
+ AVICOMPRESSOPTIONS FAR * lpOptions,
+ CLSID FAR *pclsidHandler);
+
+EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile,
+ CLSID FAR *pclsidHandler,
+ AVISAVECALLBACK lpfnCallback,
+ int nStreams,
+ PAVISTREAM pfile,
+ LPAVICOMPRESSOPTIONS lpOptions,
+ ...);
+
+STDAPI AVISaveVA(LPCSTR szFile,
+ CLSID FAR *pclsidHandler,
+ AVISAVECALLBACK lpfnCallback,
+ int nStreams,
+ PAVISTREAM FAR * ppavi,
+ LPAVICOMPRESSOPTIONS FAR *plpOptions);
+EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile,
+ CLSID FAR *pclsidHandler,
+ AVISAVECALLBACK lpfnCallback,
+ int nStreams,
+ PAVISTREAM pfile,
+ LPAVICOMPRESSOPTIONS lpOptions,
+ ...);
+
+STDAPI AVISaveVW(LPCWSTR szFile,
+ CLSID FAR *pclsidHandler,
+ AVISAVECALLBACK lpfnCallback,
+ int nStreams,
+ PAVISTREAM FAR * ppavi,
+ LPAVICOMPRESSOPTIONS FAR *plpOptions);
+#ifdef UNICODE
+#define AVISave AVISaveW
+#define AVISaveV AVISaveVW
+#else
+#define AVISave AVISaveA
+#define AVISaveV AVISaveVA
+#endif
+
+
+
+STDAPI_(BOOL) AVISaveOptions(HWND hwnd,
+ UINT uiFlags,
+ int nStreams,
+ PAVISTREAM FAR *ppavi,
+ LPAVICOMPRESSOPTIONS FAR *plpOptions);
+
+STDAPI AVISaveOptionsFree(int nStreams,
+ LPAVICOMPRESSOPTIONS FAR *plpOptions);
+
+// FLAGS FOR uiFlags:
+//
+// Same as the flags for ICCompressorChoose (see compman.h)
+// These determine what the compression options dialog for video streams
+// will look like.
+
+STDAPI AVIBuildFilterW(LPWSTR lpszFilter, LONG cbFilter, BOOL fSaving);
+STDAPI AVIBuildFilterA(LPSTR lpszFilter, LONG cbFilter, BOOL fSaving);
+#ifdef UNICODE
+#define AVIBuildFilter AVIBuildFilterW
+#else
+#define AVIBuildFilter AVIBuildFilterA
+#endif
+STDAPI AVIMakeFileFromStreams(PAVIFILE FAR * ppfile,
+ int nStreams,
+ PAVISTREAM FAR * papStreams);
+
+STDAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal, PAVISTREAM FAR *ppstream);
+
+/****************************************************************************
+ *
+ * Clipboard routines
+ *
+ ***************************************************************************/
+
+STDAPI AVIPutFileOnClipboard(PAVIFILE pf);
+
+STDAPI AVIGetFromClipboard(PAVIFILE FAR * lppf);
+
+STDAPI AVIClearClipboard(void);
+
+/****************************************************************************
+ *
+ * Editing routines
+ *
+ ***************************************************************************/
+STDAPI CreateEditableStream(
+ PAVISTREAM FAR * ppsEditable,
+ PAVISTREAM psSource);
+
+STDAPI EditStreamCut(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult);
+
+STDAPI EditStreamCopy(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult);
+
+STDAPI EditStreamPaste(PAVISTREAM pavi, LONG FAR *plPos, LONG FAR *plLength, PAVISTREAM pstream, LONG lStart, LONG lEnd);
+
+STDAPI EditStreamClone(PAVISTREAM pavi, PAVISTREAM FAR *ppResult);
+
+
+STDAPI EditStreamSetNameA(PAVISTREAM pavi, LPCSTR lpszName);
+STDAPI EditStreamSetNameW(PAVISTREAM pavi, LPCWSTR lpszName);
+STDAPI EditStreamSetInfoW(PAVISTREAM pavi, LPAVISTREAMINFOW lpInfo, LONG cbInfo);
+STDAPI EditStreamSetInfoA(PAVISTREAM pavi, LPAVISTREAMINFOA lpInfo, LONG cbInfo);
+#ifdef UNICODE
+#define EditStreamSetInfo EditStreamSetInfoW
+#define EditStreamSetName EditStreamSetNameW
+#else
+#define EditStreamSetInfo EditStreamSetInfoA
+#define EditStreamSetName EditStreamSetNameA
+#endif
+
+/* - - - - - - - - */
+
+#ifndef AVIERR_OK
+#define AVIERR_OK 0L
+
+#define MAKE_AVIERR(error) MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x4000 + error)
+
+// !!! Questions to be answered:
+// How can you get a string form of these errors?
+// Which of these errors should be replaced by errors in SCODE.H?
+#define AVIERR_UNSUPPORTED MAKE_AVIERR(101)
+#define AVIERR_BADFORMAT MAKE_AVIERR(102)
+#define AVIERR_MEMORY MAKE_AVIERR(103)
+#define AVIERR_INTERNAL MAKE_AVIERR(104)
+#define AVIERR_BADFLAGS MAKE_AVIERR(105)
+#define AVIERR_BADPARAM MAKE_AVIERR(106)
+#define AVIERR_BADSIZE MAKE_AVIERR(107)
+#define AVIERR_BADHANDLE MAKE_AVIERR(108)
+#define AVIERR_FILEREAD MAKE_AVIERR(109)
+#define AVIERR_FILEWRITE MAKE_AVIERR(110)
+#define AVIERR_FILEOPEN MAKE_AVIERR(111)
+#define AVIERR_COMPRESSOR MAKE_AVIERR(112)
+#define AVIERR_NOCOMPRESSOR MAKE_AVIERR(113)
+#define AVIERR_READONLY MAKE_AVIERR(114)
+#define AVIERR_NODATA MAKE_AVIERR(115)
+#define AVIERR_BUFFERTOOSMALL MAKE_AVIERR(116)
+#define AVIERR_CANTCOMPRESS MAKE_AVIERR(117)
+#define AVIERR_USERABORT MAKE_AVIERR(198)
+#define AVIERR_ERROR MAKE_AVIERR(199)
+#endif
+#endif /* NOAVIFILE */
+
+/****************************************************************************
+ *
+ * MCIWnd - Window class for MCI objects
+ *
+ ***************************************************************************/
+
+#ifndef NOMCIWND
+/*----------------------------------------------------------------------------*\
+ *
+ * MCIWnd
+ *
+ * MCIWnd window class header file.
+ *
+ * the MCIWnd window class is a window class for controling MCI devices
+ * MCI devices include, wave files, midi files, AVI Video, cd audio,
+ * vcr, video disc, and others..
+ *
+ * to learn more about MCI and mci command sets see the
+ * "Microsoft Multimedia Programmers's guide" in the Win31 SDK
+ *
+ * the easiest use of the MCIWnd class is like so:
+ *
+ * hwnd = MCIWndCreate(hwndParent, hInstance, 0, "chimes.wav");
+ * ...
+ * MCIWndPlay(hwnd);
+ * MCIWndStop(hwnd);
+ * MCIWndPause(hwnd);
+ * ....
+ * MCIWndDestroy(hwnd);
+ *
+ * this will create a window with a play/pause, stop and a playbar
+ * and start the wave file playing.
+ *
+ * mciwnd.h defines macros for all the most common MCI commands, but
+ * any string command can be used if needed.
+ *
+ * Note: unlike the mciSendString() API, no alias or file name needs
+ * to be specifed, since the device to use is implied by the window handle.
+ *
+ * MCIWndSendString(hwnd, "setaudio stream to 2");
+ *
+ * (C) Copyright Microsoft Corp. 1991-1995. All rights reserved.
+ *
+ * You have a royalty-free right to use, modify, reproduce and
+ * distribute the Sample Files (and/or any modified version) in
+ * any way you find useful, provided that you agree that
+ * Microsoft has no warranty obligations or liability for any
+ * Sample Application Files.
+ *
+ * If you did not get this from Microsoft Sources, then it may not be the
+ * most current version. This sample code in particular will be updated
+ * and include more documentation.
+ *
+ * Sources are:
+ * CompuServe: WINSDK forum, MDK section.
+ * Anonymous FTP from ftp.uu.net vendor\microsoft\multimedia
+ *
+ * WIN32:
+ *
+ * MCIWnd supports both ansi and unicode interfaces. For any message that
+ * takes or returns a text string, two versions of the message are defined,
+ * appended with A or W for Ansi or Wide Char. The message or api itself
+ * is defined to be one or other of these depending on whether you have
+ * UNICODE defined in your application.
+ * Thus for the api MCIWndCreate, there are in fact two apis,
+ * MCIWndCreateA and MCIWndCreateW. If you call MCIWndCreate, this will be
+ * re-routed to MCIWndCreateA unless UNICODE is defined when building your
+ * application. In any one application, you can mix calls to the
+ * Ansi and Unicode entrypoints.
+ *
+ * If you use SendMessage instead of the macros below such as MCIWndOpen(),
+ * you will see that the messages have changed for WIN32, to support Ansi
+ * and Unicode entrypoints. In particular, MCI_OPEN has been replaced by
+ * MCWNDM_OPENA, or MCIWNDM_OPENW (MCIWNDM_OPEN is defined to be one or
+ * other of these).
+ *
+ * Also, note that the WIN32 implementation of MCIWnd uses UNICODE
+ * so all apis and messages supporting ANSI strings do so by mapping them
+ * UNICODE strings and then calling the corresponding UNICODE entrypoint.
+ *
+ *----------------------------------------------------------------------------*/
+
+#ifdef __cplusplus
+// MFC Redefines SendMessage, so make sure we get the global one....
+#define MCIWndSM ::SendMessage /* SendMessage in C++*/
+#else
+#define MCIWndSM SendMessage /* SendMessage in C */
+#endif /* __cplusplus */
+#define MCIWND_WINDOW_CLASS TEXT("MCIWndClass")
+HWND VFWAPIV MCIWndCreateA(HWND hwndParent, HINSTANCE hInstance,
+ DWORD dwStyle,LPCSTR szFile);
+HWND VFWAPIV MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance,
+ DWORD dwStyle,LPCWSTR szFile);
+#ifdef UNICODE
+#define MCIWndCreate MCIWndCreateW
+#else
+#define MCIWndCreate MCIWndCreateA
+#endif
+BOOL VFWAPIV MCIWndRegisterClass(void);
+
+// Flags for the MCIWndOpen command
+#define MCIWNDOPENF_NEW 0x0001 // open a new file
+
+// window styles
+#define MCIWNDF_NOAUTOSIZEWINDOW 0x0001 // when movie size changes
+#define MCIWNDF_NOPLAYBAR 0x0002 // no toolbar
+#define MCIWNDF_NOAUTOSIZEMOVIE 0x0004 // when window size changes
+#define MCIWNDF_NOMENU 0x0008 // no popup menu from RBUTTONDOWN
+#define MCIWNDF_SHOWNAME 0x0010 // show name in caption
+#define MCIWNDF_SHOWPOS 0x0020 // show position in caption
+#define MCIWNDF_SHOWMODE 0x0040 // show mode in caption
+#define MCIWNDF_SHOWALL 0x0070 // show all
+
+#define MCIWNDF_NOTIFYMODE 0x0100 // tell parent of mode change
+#define MCIWNDF_NOTIFYPOS 0x0200 // tell parent of pos change
+#define MCIWNDF_NOTIFYSIZE 0x0400 // tell parent of size change
+#define MCIWNDF_NOTIFYERROR 0x1000 // tell parent of an error
+#define MCIWNDF_NOTIFYALL 0x1F00 // tell all
+
+#define MCIWNDF_NOTIFYANSI 0x0080
+
+
+// The MEDIA notification includes a text string.
+// To receive notifications in ANSI instead of unicode set the
+// MCIWNDF_NOTIFYANSI style bit. The macro below includes this bit
+// by default unless you define UNICODE in your application.
+
+#define MCIWNDF_NOTIFYMEDIAA 0x0880 // tell parent of media change
+#define MCIWNDF_NOTIFYMEDIAW 0x0800 // tell parent of media change
+
+#ifdef UNICODE
+#define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAW
+#else
+#define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAA
+#endif
+
+
+
+#define MCIWNDF_RECORD 0x2000 // Give a record button
+#define MCIWNDF_NOERRORDLG 0x4000 // Show Error Dlgs for MCI cmds?
+#define MCIWNDF_NOOPEN 0x8000 // Don't allow user to open things
+
+
+
+
+// can macros
+
+#define MCIWndCanPlay(hwnd) (BOOL)MCIWndSM(hwnd,MCIWNDM_CAN_PLAY,0,0)
+#define MCIWndCanRecord(hwnd) (BOOL)MCIWndSM(hwnd,MCIWNDM_CAN_RECORD,0,0)
+#define MCIWndCanSave(hwnd) (BOOL)MCIWndSM(hwnd,MCIWNDM_CAN_SAVE,0,0)
+#define MCIWndCanWindow(hwnd) (BOOL)MCIWndSM(hwnd,MCIWNDM_CAN_WINDOW,0,0)
+#define MCIWndCanEject(hwnd) (BOOL)MCIWndSM(hwnd,MCIWNDM_CAN_EJECT,0,0)
+#define MCIWndCanConfig(hwnd) (BOOL)MCIWndSM(hwnd,MCIWNDM_CAN_CONFIG,0,0)
+#define MCIWndPaletteKick(hwnd) (BOOL)MCIWndSM(hwnd,MCIWNDM_PALETTEKICK,0,0)
+
+#define MCIWndSave(hwnd, szFile) (LONG)MCIWndSM(hwnd, MCI_SAVE, 0, (LPARAM)(LPVOID)(szFile))
+#define MCIWndSaveDialog(hwnd) MCIWndSave(hwnd, -1)
+
+// if you dont give a device it will use the current device....
+#define MCIWndNew(hwnd, lp) (LONG)MCIWndSM(hwnd, MCIWNDM_NEW, 0, (LPARAM)(LPVOID)(lp))
+
+#define MCIWndRecord(hwnd) (LONG)MCIWndSM(hwnd, MCI_RECORD, 0, 0)
+#define MCIWndOpen(hwnd, sz, f) (LONG)MCIWndSM(hwnd, MCIWNDM_OPEN, (WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
+#define MCIWndOpenDialog(hwnd) MCIWndOpen(hwnd, -1, 0)
+#define MCIWndClose(hwnd) (LONG)MCIWndSM(hwnd, MCI_CLOSE, 0, 0)
+#define MCIWndPlay(hwnd) (LONG)MCIWndSM(hwnd, MCI_PLAY, 0, 0)
+#define MCIWndStop(hwnd) (LONG)MCIWndSM(hwnd, MCI_STOP, 0, 0)
+#define MCIWndPause(hwnd) (LONG)MCIWndSM(hwnd, MCI_PAUSE, 0, 0)
+#define MCIWndResume(hwnd) (LONG)MCIWndSM(hwnd, MCI_RESUME, 0, 0)
+#define MCIWndSeek(hwnd, lPos) (LONG)MCIWndSM(hwnd, MCI_SEEK, 0, (LPARAM)(LONG)(lPos))
+#define MCIWndEject(hwnd) (LONG)MCIWndSM(hwnd, MCIWNDM_EJECT, 0, 0)
+
+#define MCIWndHome(hwnd) MCIWndSeek(hwnd, MCIWND_START)
+#define MCIWndEnd(hwnd) MCIWndSeek(hwnd, MCIWND_END)
+
+#define MCIWndGetSource(hwnd, prc) (LONG)MCIWndSM(hwnd, MCIWNDM_GET_SOURCE, 0, (LPARAM)(LPRECT)(prc))
+#define MCIWndPutSource(hwnd, prc) (LONG)MCIWndSM(hwnd, MCIWNDM_PUT_SOURCE, 0, (LPARAM)(LPRECT)(prc))
+
+#define MCIWndGetDest(hwnd, prc) (LONG)MCIWndSM(hwnd, MCIWNDM_GET_DEST, 0, (LPARAM)(LPRECT)(prc))
+#define MCIWndPutDest(hwnd, prc) (LONG)MCIWndSM(hwnd, MCIWNDM_PUT_DEST, 0, (LPARAM)(LPRECT)(prc))
+
+#define MCIWndPlayReverse(hwnd) (LONG)MCIWndSM(hwnd, MCIWNDM_PLAYREVERSE, 0, 0)
+#define MCIWndPlayFrom(hwnd, lPos) (LONG)MCIWndSM(hwnd, MCIWNDM_PLAYFROM, 0, (LPARAM)(LONG)(lPos))
+#define MCIWndPlayTo(hwnd, lPos) (LONG)MCIWndSM(hwnd, MCIWNDM_PLAYTO, 0, (LPARAM)(LONG)(lPos))
+#define MCIWndPlayFromTo(hwnd, lStart, lEnd) (MCIWndSeek(hwnd, lStart), MCIWndPlayTo(hwnd, lEnd))
+
+#define MCIWndGetDeviceID(hwnd) (UINT)MCIWndSM(hwnd, MCIWNDM_GETDEVICEID, 0, 0)
+#define MCIWndGetAlias(hwnd) (UINT)MCIWndSM(hwnd, MCIWNDM_GETALIAS, 0, 0)
+#define MCIWndGetMode(hwnd, lp, len) (LONG)MCIWndSM(hwnd, MCIWNDM_GETMODE, (WPARAM)(UINT)(len), (LPARAM)(LPTSTR)(lp))
+#define MCIWndGetPosition(hwnd) (LONG)MCIWndSM(hwnd, MCIWNDM_GETPOSITION, 0, 0)
+#define MCIWndGetPositionString(hwnd, lp, len) (LONG)MCIWndSM(hwnd, MCIWNDM_GETPOSITION, (WPARAM)(UINT)(len), (LPARAM)(LPTSTR)(lp))
+#define MCIWndGetStart(hwnd) (LONG)MCIWndSM(hwnd, MCIWNDM_GETSTART, 0, 0)
+#define MCIWndGetLength(hwnd) (LONG)MCIWndSM(hwnd, MCIWNDM_GETLENGTH, 0, 0)
+#define MCIWndGetEnd(hwnd) (LONG)MCIWndSM(hwnd, MCIWNDM_GETEND, 0, 0)
+
+#define MCIWndStep(hwnd, n) (LONG)MCIWndSM(hwnd, MCI_STEP, 0,(LPARAM)(long)(n))
+
+#define MCIWndDestroy(hwnd) (VOID)MCIWndSM(hwnd, WM_CLOSE, 0, 0)
+#define MCIWndSetZoom(hwnd,iZoom) (VOID)MCIWndSM(hwnd, MCIWNDM_SETZOOM, 0, (LPARAM)(UINT)(iZoom))
+#define MCIWndGetZoom(hwnd) (UINT)MCIWndSM(hwnd, MCIWNDM_GETZOOM, 0, 0)
+#define MCIWndSetVolume(hwnd,iVol) (LONG)MCIWndSM(hwnd, MCIWNDM_SETVOLUME, 0, (LPARAM)(UINT)(iVol))
+#define MCIWndGetVolume(hwnd) (LONG)MCIWndSM(hwnd, MCIWNDM_GETVOLUME, 0, 0)
+#define MCIWndSetSpeed(hwnd,iSpeed) (LONG)MCIWndSM(hwnd, MCIWNDM_SETSPEED, 0, (LPARAM)(UINT)(iSpeed))
+#define MCIWndGetSpeed(hwnd) (LONG)MCIWndSM(hwnd, MCIWNDM_GETSPEED, 0, 0)
+#define MCIWndSetTimeFormat(hwnd, lp) (LONG)MCIWndSM(hwnd, MCIWNDM_SETTIMEFORMAT, 0, (LPARAM)(LPTSTR)(lp))
+#define MCIWndGetTimeFormat(hwnd, lp, len) (LONG)MCIWndSM(hwnd, MCIWNDM_GETTIMEFORMAT, (WPARAM)(UINT)(len), (LPARAM)(LPTSTR)(lp))
+#define MCIWndValidateMedia(hwnd) (VOID)MCIWndSM(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0)
+
+#define MCIWndSetRepeat(hwnd,f) (void)MCIWndSM(hwnd, MCIWNDM_SETREPEAT, 0, (LPARAM)(BOOL)(f))
+#define MCIWndGetRepeat(hwnd) (BOOL)MCIWndSM(hwnd, MCIWNDM_GETREPEAT, 0, 0)
+
+#define MCIWndUseFrames(hwnd) MCIWndSetTimeFormat(hwnd, TEXT("frames"))
+#define MCIWndUseTime(hwnd) MCIWndSetTimeFormat(hwnd, TEXT("ms"))
+
+#define MCIWndSetActiveTimer(hwnd, active) \
+ (VOID)MCIWndSM(hwnd, MCIWNDM_SETACTIVETIMER, \
+ (WPARAM)(UINT)(active), 0L)
+#define MCIWndSetInactiveTimer(hwnd, inactive) \
+ (VOID)MCIWndSM(hwnd, MCIWNDM_SETINACTIVETIMER, \
+ (WPARAM)(UINT)(inactive), 0L)
+#define MCIWndSetTimers(hwnd, active, inactive) \
+ (VOID)MCIWndSM(hwnd, MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active), \
+ (LPARAM)(UINT)(inactive))
+#define MCIWndGetActiveTimer(hwnd) \
+ (UINT)MCIWndSM(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0L);
+#define MCIWndGetInactiveTimer(hwnd) \
+ (UINT)MCIWndSM(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0L);
+
+#define MCIWndRealize(hwnd, fBkgnd) (LONG)MCIWndSM(hwnd, MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0)
+
+#define MCIWndSendString(hwnd, sz) (LONG)MCIWndSM(hwnd, MCIWNDM_SENDSTRING, 0, (LPARAM)(LPTSTR)(sz))
+#define MCIWndReturnString(hwnd, lp, len) (LONG)MCIWndSM(hwnd, MCIWNDM_RETURNSTRING, (WPARAM)(UINT)(len), (LPARAM)(LPVOID)(lp))
+#define MCIWndGetError(hwnd, lp, len) (LONG)MCIWndSM(hwnd, MCIWNDM_GETERROR, (WPARAM)(UINT)(len), (LPARAM)(LPVOID)(lp))
+
+//#define MCIWndActivate(hwnd, f) (void)MCIWndSM(hwnd, WM_ACTIVATE, (WPARAM)(BOOL)(f), 0)
+
+#define MCIWndGetPalette(hwnd) (HPALETTE)MCIWndSM(hwnd, MCIWNDM_GETPALETTE, 0, 0)
+#define MCIWndSetPalette(hwnd, hpal) (LONG)MCIWndSM(hwnd, MCIWNDM_SETPALETTE, (WPARAM)(HPALETTE)(hpal), 0)
+
+#define MCIWndGetFileName(hwnd, lp, len) (LONG)MCIWndSM(hwnd, MCIWNDM_GETFILENAME, (WPARAM)(UINT)(len), (LPARAM)(LPVOID)(lp))
+#define MCIWndGetDevice(hwnd, lp, len) (LONG)MCIWndSM(hwnd, MCIWNDM_GETDEVICE, (WPARAM)(UINT)(len), (LPARAM)(LPVOID)(lp))
+
+#define MCIWndGetStyles(hwnd) (UINT)MCIWndSM(hwnd, MCIWNDM_GETSTYLES, 0, 0L)
+#define MCIWndChangeStyles(hwnd, mask, value) (LONG)MCIWndSM(hwnd, MCIWNDM_CHANGESTYLES, (WPARAM)(UINT)(mask), (LPARAM)(LONG)(value))
+
+#define MCIWndOpenInterface(hwnd, pUnk) (LONG)MCIWndSM(hwnd, MCIWNDM_OPENINTERFACE, 0, (LPARAM)(LPUNKNOWN)(pUnk))
+
+#define MCIWndSetOwner(hwnd, hwndP) (LONG)MCIWndSM(hwnd, MCIWNDM_SETOWNER, (WPARAM)(hwndP), 0)
+
+
+// Messages an app will send to MCIWND
+
+// all the text-related messages are defined out of order above (they need
+// to be defined before the MCIWndOpen() macros
+
+#define MCIWNDM_GETDEVICEID (WM_USER + 100)
+#define MCIWNDM_GETSTART (WM_USER + 103)
+#define MCIWNDM_GETLENGTH (WM_USER + 104)
+#define MCIWNDM_GETEND (WM_USER + 105)
+#define MCIWNDM_EJECT (WM_USER + 107)
+#define MCIWNDM_SETZOOM (WM_USER + 108)
+#define MCIWNDM_GETZOOM (WM_USER + 109)
+#define MCIWNDM_SETVOLUME (WM_USER + 110)
+#define MCIWNDM_GETVOLUME (WM_USER + 111)
+#define MCIWNDM_SETSPEED (WM_USER + 112)
+#define MCIWNDM_GETSPEED (WM_USER + 113)
+#define MCIWNDM_SETREPEAT (WM_USER + 114)
+#define MCIWNDM_GETREPEAT (WM_USER + 115)
+#define MCIWNDM_REALIZE (WM_USER + 118)
+#define MCIWNDM_VALIDATEMEDIA (WM_USER + 121)
+#define MCIWNDM_PLAYFROM (WM_USER + 122)
+#define MCIWNDM_PLAYTO (WM_USER + 123)
+#define MCIWNDM_GETPALETTE (WM_USER + 126)
+#define MCIWNDM_SETPALETTE (WM_USER + 127)
+#define MCIWNDM_SETTIMERS (WM_USER + 129)
+#define MCIWNDM_SETACTIVETIMER (WM_USER + 130)
+#define MCIWNDM_SETINACTIVETIMER (WM_USER + 131)
+#define MCIWNDM_GETACTIVETIMER (WM_USER + 132)
+#define MCIWNDM_GETINACTIVETIMER (WM_USER + 133)
+#define MCIWNDM_CHANGESTYLES (WM_USER + 135)
+#define MCIWNDM_GETSTYLES (WM_USER + 136)
+#define MCIWNDM_GETALIAS (WM_USER + 137)
+#define MCIWNDM_PLAYREVERSE (WM_USER + 139)
+#define MCIWNDM_GET_SOURCE (WM_USER + 140)
+#define MCIWNDM_PUT_SOURCE (WM_USER + 141)
+#define MCIWNDM_GET_DEST (WM_USER + 142)
+#define MCIWNDM_PUT_DEST (WM_USER + 143)
+#define MCIWNDM_CAN_PLAY (WM_USER + 144)
+#define MCIWNDM_CAN_WINDOW (WM_USER + 145)
+#define MCIWNDM_CAN_RECORD (WM_USER + 146)
+#define MCIWNDM_CAN_SAVE (WM_USER + 147)
+#define MCIWNDM_CAN_EJECT (WM_USER + 148)
+#define MCIWNDM_CAN_CONFIG (WM_USER + 149)
+#define MCIWNDM_PALETTEKICK (WM_USER + 150)
+#define MCIWNDM_OPENINTERFACE (WM_USER + 151)
+#define MCIWNDM_SETOWNER (WM_USER + 152)
+
+
+
+//define both A and W messages
+#define MCIWNDM_SENDSTRINGA (WM_USER + 101)
+#define MCIWNDM_GETPOSITIONA (WM_USER + 102)
+#define MCIWNDM_GETMODEA (WM_USER + 106)
+#define MCIWNDM_SETTIMEFORMATA (WM_USER + 119)
+#define MCIWNDM_GETTIMEFORMATA (WM_USER + 120)
+#define MCIWNDM_GETFILENAMEA (WM_USER + 124)
+#define MCIWNDM_GETDEVICEA (WM_USER + 125)
+#define MCIWNDM_GETERRORA (WM_USER + 128)
+#define MCIWNDM_NEWA (WM_USER + 134)
+#define MCIWNDM_RETURNSTRINGA (WM_USER + 138)
+#define MCIWNDM_OPENA (WM_USER + 153)
+
+#define MCIWNDM_SENDSTRINGW (WM_USER + 201)
+#define MCIWNDM_GETPOSITIONW (WM_USER + 202)
+#define MCIWNDM_GETMODEW (WM_USER + 206)
+#define MCIWNDM_SETTIMEFORMATW (WM_USER + 219)
+#define MCIWNDM_GETTIMEFORMATW (WM_USER + 220)
+#define MCIWNDM_GETFILENAMEW (WM_USER + 224)
+#define MCIWNDM_GETDEVICEW (WM_USER + 225)
+#define MCIWNDM_GETERRORW (WM_USER + 228)
+#define MCIWNDM_NEWW (WM_USER + 234)
+#define MCIWNDM_RETURNSTRINGW (WM_USER + 238)
+#define MCIWNDM_OPENW (WM_USER + 252)
+
+// map defaults to A or W depending on app's UNICODE setting
+#ifdef UNICODE
+#define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGW
+#define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONW
+#define MCIWNDM_GETMODE MCIWNDM_GETMODEW
+#define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATW
+#define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATW
+#define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEW
+#define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEW
+#define MCIWNDM_GETERROR MCIWNDM_GETERRORW
+#define MCIWNDM_NEW MCIWNDM_NEWW
+#define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGW
+#define MCIWNDM_OPEN MCIWNDM_OPENW
+#else
+#define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGA
+#define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONA
+#define MCIWNDM_GETMODE MCIWNDM_GETMODEA
+#define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATA
+#define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATA
+#define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEA
+#define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEA
+#define MCIWNDM_GETERROR MCIWNDM_GETERRORA
+#define MCIWNDM_NEW MCIWNDM_NEWA
+#define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGA
+#define MCIWNDM_OPEN MCIWNDM_OPENA
+#endif
+
+// note that the source text for MCIWND will thus contain
+// support for eg MCIWNDM_SENDSTRING (both the 16-bit entrypoint and
+// in win32 mapped to MCIWNDM_SENDSTRINGW), and MCIWNDM_SENDSTRINGA (the
+// win32 ansi thunk).
+
+
+
+
+
+
+
+// Messages MCIWND will send to an app
+// !!! Use less messages and use a code instead to indicate the type of notify? /* ;Internal */
+#define MCIWNDM_NOTIFYMODE (WM_USER + 200) // wp = hwnd, lp = mode
+#define MCIWNDM_NOTIFYPOS (WM_USER + 201) // wp = hwnd, lp = pos
+#define MCIWNDM_NOTIFYSIZE (WM_USER + 202) // wp = hwnd
+#define MCIWNDM_NOTIFYMEDIA (WM_USER + 203) // wp = hwnd, lp = fn
+#define MCIWNDM_NOTIFYERROR (WM_USER + 205) // wp = hwnd, lp = error
+
+// special seek values for START and END
+#define MCIWND_START -1
+#define MCIWND_END -2
+
+#ifndef MCI_PLAY
+ /* MCI command message identifiers */
+#ifndef _WIN32
+ // win32 apps send MCIWNDM_OPEN
+ #define MCI_OPEN 0x0803
+#endif
+ #define MCI_CLOSE 0x0804
+ #define MCI_PLAY 0x0806
+ #define MCI_SEEK 0x0807
+ #define MCI_STOP 0x0808
+ #define MCI_PAUSE 0x0809
+ #define MCI_STEP 0x080E
+ #define MCI_RECORD 0x080F
+ #define MCI_SAVE 0x0813
+ #define MCI_CUT 0x0851
+ #define MCI_COPY 0x0852
+ #define MCI_PASTE 0x0853
+ #define MCI_RESUME 0x0855
+ #define MCI_DELETE 0x0856
+#endif
+
+#ifndef MCI_MODE_NOT_READY
+ /* return values for 'status mode' command */
+ #define MCI_MODE_NOT_READY (524)
+ #define MCI_MODE_STOP (525)
+ #define MCI_MODE_PLAY (526)
+ #define MCI_MODE_RECORD (527)
+ #define MCI_MODE_SEEK (528)
+ #define MCI_MODE_PAUSE (529)
+ #define MCI_MODE_OPEN (530)
+#endif
+
+#endif /* NOAVIFILE */
+
+/****************************************************************************
+ *
+ * VIDEO - Video Capture Driver Interface
+ *
+ ****************************************************************************/
+
+#if !defined(NOAVICAP) || !defined(NOVIDEO)
+
+#ifndef _RCINVOKED
+
+
+/* video data types */
+DECLARE_HANDLE(HVIDEO); // generic handle
+typedef HVIDEO FAR * LPHVIDEO;
+#endif // ifndef RCINVOKED
+
+/****************************************************************************
+
+ version api
+
+****************************************************************************/
+
+DWORD FAR PASCAL VideoForWindowsVersion(void);
+
+/****************************************************************************
+
+ Error Return Values
+
+****************************************************************************/
+#define DV_ERR_OK (0) /* No error */
+#define DV_ERR_BASE (1) /* Error Base */
+#define DV_ERR_NONSPECIFIC (DV_ERR_BASE)
+#define DV_ERR_BADFORMAT (DV_ERR_BASE + 1)
+ /* unsupported video format */
+#define DV_ERR_STILLPLAYING (DV_ERR_BASE + 2)
+ /* still something playing */
+#define DV_ERR_UNPREPARED (DV_ERR_BASE + 3)
+ /* header not prepared */
+#define DV_ERR_SYNC (DV_ERR_BASE + 4)
+ /* device is synchronous */
+#define DV_ERR_TOOMANYCHANNELS (DV_ERR_BASE + 5)
+ /* number of channels exceeded */
+#define DV_ERR_NOTDETECTED (DV_ERR_BASE + 6) /* HW not detected */
+#define DV_ERR_BADINSTALL (DV_ERR_BASE + 7) /* Can not get Profile */
+#define DV_ERR_CREATEPALETTE (DV_ERR_BASE + 8)
+#define DV_ERR_SIZEFIELD (DV_ERR_BASE + 9)
+#define DV_ERR_PARAM1 (DV_ERR_BASE + 10)
+#define DV_ERR_PARAM2 (DV_ERR_BASE + 11)
+#define DV_ERR_CONFIG1 (DV_ERR_BASE + 12)
+#define DV_ERR_CONFIG2 (DV_ERR_BASE + 13)
+#define DV_ERR_FLAGS (DV_ERR_BASE + 14)
+#define DV_ERR_13 (DV_ERR_BASE + 15)
+
+#define DV_ERR_NOTSUPPORTED (DV_ERR_BASE + 16) /* function not suported */
+#define DV_ERR_NOMEM (DV_ERR_BASE + 17) /* out of memory */
+#define DV_ERR_ALLOCATED (DV_ERR_BASE + 18) /* device is allocated */
+#define DV_ERR_BADDEVICEID (DV_ERR_BASE + 19)
+#define DV_ERR_INVALHANDLE (DV_ERR_BASE + 20)
+#define DV_ERR_BADERRNUM (DV_ERR_BASE + 21)
+#define DV_ERR_NO_BUFFERS (DV_ERR_BASE + 22) /* out of buffers */
+
+#define DV_ERR_MEM_CONFLICT (DV_ERR_BASE + 23) /* Mem conflict detected */
+#define DV_ERR_IO_CONFLICT (DV_ERR_BASE + 24) /* I/O conflict detected */
+#define DV_ERR_DMA_CONFLICT (DV_ERR_BASE + 25) /* DMA conflict detected */
+#define DV_ERR_INT_CONFLICT (DV_ERR_BASE + 26) /* Interrupt conflict detected */
+#define DV_ERR_PROTECT_ONLY (DV_ERR_BASE + 27) /* Can not run in standard mode */
+#define DV_ERR_LASTERROR (DV_ERR_BASE + 27)
+
+//#define DV_IDS_PROFILING (DV_ERR_BASE + 900)
+//#define DV_IDS_LISTBOX (DV_ERR_BASE + 901)
+
+#define DV_ERR_USER_MSG (DV_ERR_BASE + 1000) /* Hardware specific errors */
+
+/****************************************************************************
+
+ Callback Messages
+
+Note that the values for all installable driver callback messages are
+identical, (ie. MM_DRVM_DATA has the same value for capture drivers,
+installable video codecs, and the audio compression manager).
+****************************************************************************/
+#ifndef _RCINVOKED
+
+#ifndef MM_DRVM_OPEN
+#define MM_DRVM_OPEN 0x3D0
+#define MM_DRVM_CLOSE 0x3D1
+#define MM_DRVM_DATA 0x3D2
+#define MM_DRVM_ERROR 0x3D3
+#endif
+
+#define DV_VM_OPEN MM_DRVM_OPEN // Obsolete messages
+#define DV_VM_CLOSE MM_DRVM_CLOSE
+#define DV_VM_DATA MM_DRVM_DATA
+#define DV_VM_ERROR MM_DRVM_ERROR
+
+/****************************************************************************
+
+ Structures
+
+****************************************************************************/
+/* video data block header */
+typedef struct videohdr_tag {
+ LPBYTE lpData; /* pointer to locked data buffer */
+ DWORD dwBufferLength; /* Length of data buffer */
+ DWORD dwBytesUsed; /* Bytes actually used */
+ DWORD dwTimeCaptured; /* Milliseconds from start of stream */
+ DWORD dwUser; /* for client's use */
+ DWORD dwFlags; /* assorted flags (see defines) */
+ DWORD dwReserved[4]; /* reserved for driver */
+} VIDEOHDR, NEAR *PVIDEOHDR, FAR * LPVIDEOHDR;
+
+/* dwFlags field of VIDEOHDR */
+#define VHDR_DONE 0x00000001 /* Done bit */
+#define VHDR_PREPARED 0x00000002 /* Set if this header has been prepared */
+#define VHDR_INQUEUE 0x00000004 /* Reserved for driver */
+#define VHDR_KEYFRAME 0x00000008 /* Key Frame */
+#define VHDR_VALID 0x0000000F /* valid flags */ /* ;Internal */
+
+/* Channel capabilities structure */
+typedef struct channel_caps_tag {
+ DWORD dwFlags; /* Capability flags*/
+ DWORD dwSrcRectXMod; /* Granularity of src rect in x */
+ DWORD dwSrcRectYMod; /* Granularity of src rect in y */
+ DWORD dwSrcRectWidthMod; /* Granularity of src rect width */
+ DWORD dwSrcRectHeightMod; /* Granularity of src rect height */
+ DWORD dwDstRectXMod; /* Granularity of dst rect in x */
+ DWORD dwDstRectYMod; /* Granularity of dst rect in y */
+ DWORD dwDstRectWidthMod; /* Granularity of dst rect width */
+ DWORD dwDstRectHeightMod; /* Granularity of dst rect height */
+} CHANNEL_CAPS, NEAR *PCHANNEL_CAPS, FAR * LPCHANNEL_CAPS;
+
+/* dwFlags of CHANNEL_CAPS */
+#define VCAPS_OVERLAY 0x00000001 /* overlay channel */
+#define VCAPS_SRC_CAN_CLIP 0x00000002 /* src rect can clip */
+#define VCAPS_DST_CAN_CLIP 0x00000004 /* dst rect can clip */
+#define VCAPS_CAN_SCALE 0x00000008 /* allows src != dst */
+
+
+/****************************************************************************
+
+ API Flags
+
+****************************************************************************/
+
+// Types of channels to open with the videoOpen function
+#define VIDEO_EXTERNALIN 0x0001
+#define VIDEO_EXTERNALOUT 0x0002
+#define VIDEO_IN 0x0004
+#define VIDEO_OUT 0x0008
+
+// Is a driver dialog available for this channel?
+#define VIDEO_DLG_QUERY 0x0010
+
+// videoConfigure (both GET and SET)
+#define VIDEO_CONFIGURE_QUERY 0x8000
+
+// videoConfigure (SET only)
+#define VIDEO_CONFIGURE_SET 0x1000
+
+// videoConfigure (GET only)
+#define VIDEO_CONFIGURE_GET 0x2000
+#define VIDEO_CONFIGURE_QUERYSIZE 0x0001
+
+#define VIDEO_CONFIGURE_CURRENT 0x0010
+#define VIDEO_CONFIGURE_NOMINAL 0x0020
+#define VIDEO_CONFIGURE_MIN 0x0040
+#define VIDEO_CONFIGURE_MAX 0x0080
+
+/****************************************************************************
+
+ CONFIGURE MESSAGES
+
+****************************************************************************/
+#define DVM_USER 0X4000
+
+#define DVM_CONFIGURE_START 0x1000
+#define DVM_CONFIGURE_END 0x1FFF
+
+#define DVM_PALETTE (DVM_CONFIGURE_START + 1)
+#define DVM_FORMAT (DVM_CONFIGURE_START + 2)
+#define DVM_PALETTERGB555 (DVM_CONFIGURE_START + 3)
+#define DVM_SRC_RECT (DVM_CONFIGURE_START + 4)
+#define DVM_DST_RECT (DVM_CONFIGURE_START + 5)
+
+#endif /* ifndef _RCINVOKED */
+
+#endif /* NOVIDEO */
+
+/****************************************************************************
+ *
+ * AVICAP - Window class for AVI capture
+ *
+ ***************************************************************************/
+
+#ifndef NOAVICAP
+#ifdef __cplusplus
+/* SendMessage in C++*/
+#define AVICapSM(hwnd,m,w,l) ( (IsWindow(hwnd)) ? ::SendMessage(hwnd,m,w,l) : 0)
+#else
+/* SendMessage in C */
+#define AVICapSM(hwnd,m,w,l) ( (IsWindow(hwnd)) ? SendMessage(hwnd,m,w,l) : 0)
+#endif /* __cplusplus */
+
+#ifndef RC_INVOKED
+
+// ------------------------------------------------------------------
+// Window Messages WM_CAP... which can be sent to an AVICAP window
+// ------------------------------------------------------------------
+
+
+
+// UNICODE
+//
+// The Win32 version of AVICAP on NT supports UNICODE applications:
+// for each API or message that takes a char or string parameter, there are
+// two versions, ApiNameA and ApiNameW. The default name ApiName is #defined
+// to one or other depending on whether UNICODE is defined. Apps can call
+// the A and W apis directly, and mix them.
+//
+// The 32-bit AVICAP on NT uses unicode exclusively internally.
+// ApiNameA() will be implemented as a call to ApiNameW() together with
+// translation of strings.
+
+
+
+
+// Defines start of the message range
+#define WM_CAP_START WM_USER
+
+// start of unicode messages
+#define WM_CAP_UNICODE_START WM_USER+100
+
+#define WM_CAP_GET_CAPSTREAMPTR (WM_CAP_START+ 1)
+
+#define WM_CAP_SET_CALLBACK_ERRORW (WM_CAP_UNICODE_START+ 2)
+#define WM_CAP_SET_CALLBACK_STATUSW (WM_CAP_UNICODE_START+ 3)
+#define WM_CAP_SET_CALLBACK_ERRORA (WM_CAP_START+ 2)
+#define WM_CAP_SET_CALLBACK_STATUSA (WM_CAP_START+ 3)
+#ifdef UNICODE
+#define WM_CAP_SET_CALLBACK_ERROR WM_CAP_SET_CALLBACK_ERRORW
+#define WM_CAP_SET_CALLBACK_STATUS WM_CAP_SET_CALLBACK_STATUSW
+#else
+#define WM_CAP_SET_CALLBACK_ERROR WM_CAP_SET_CALLBACK_ERRORA
+#define WM_CAP_SET_CALLBACK_STATUS WM_CAP_SET_CALLBACK_STATUSA
+#endif
+
+
+#define WM_CAP_SET_CALLBACK_YIELD (WM_CAP_START+ 4)
+#define WM_CAP_SET_CALLBACK_FRAME (WM_CAP_START+ 5)
+#define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_CAP_START+ 6)
+#define WM_CAP_SET_CALLBACK_WAVESTREAM (WM_CAP_START+ 7)
+#define WM_CAP_GET_USER_DATA (WM_CAP_START+ 8)
+#define WM_CAP_SET_USER_DATA (WM_CAP_START+ 9)
+
+#define WM_CAP_DRIVER_CONNECT (WM_CAP_START+ 10)
+#define WM_CAP_DRIVER_DISCONNECT (WM_CAP_START+ 11)
+
+#define WM_CAP_DRIVER_GET_NAMEA (WM_CAP_START+ 12)
+#define WM_CAP_DRIVER_GET_VERSIONA (WM_CAP_START+ 13)
+#define WM_CAP_DRIVER_GET_NAMEW (WM_CAP_UNICODE_START+ 12)
+#define WM_CAP_DRIVER_GET_VERSIONW (WM_CAP_UNICODE_START+ 13)
+#ifdef UNICODE
+#define WM_CAP_DRIVER_GET_NAME WM_CAP_DRIVER_GET_NAMEW
+#define WM_CAP_DRIVER_GET_VERSION WM_CAP_DRIVER_GET_VERSIONW
+#else
+#define WM_CAP_DRIVER_GET_NAME WM_CAP_DRIVER_GET_NAMEA
+#define WM_CAP_DRIVER_GET_VERSION WM_CAP_DRIVER_GET_VERSIONA
+#endif
+
+#define WM_CAP_DRIVER_GET_CAPS (WM_CAP_START+ 14)
+
+#define WM_CAP_FILE_SET_CAPTURE_FILEA (WM_CAP_START+ 20)
+#define WM_CAP_FILE_GET_CAPTURE_FILEA (WM_CAP_START+ 21)
+#define WM_CAP_FILE_SAVEASA (WM_CAP_START+ 23)
+#define WM_CAP_FILE_SAVEDIBA (WM_CAP_START+ 25)
+#define WM_CAP_FILE_SET_CAPTURE_FILEW (WM_CAP_UNICODE_START+ 20)
+#define WM_CAP_FILE_GET_CAPTURE_FILEW (WM_CAP_UNICODE_START+ 21)
+#define WM_CAP_FILE_SAVEASW (WM_CAP_UNICODE_START+ 23)
+#define WM_CAP_FILE_SAVEDIBW (WM_CAP_UNICODE_START+ 25)
+#ifdef UNICODE
+#define WM_CAP_FILE_SET_CAPTURE_FILE WM_CAP_FILE_SET_CAPTURE_FILEW
+#define WM_CAP_FILE_GET_CAPTURE_FILE WM_CAP_FILE_GET_CAPTURE_FILEW
+#define WM_CAP_FILE_SAVEAS WM_CAP_FILE_SAVEASW
+#define WM_CAP_FILE_SAVEDIB WM_CAP_FILE_SAVEDIBW
+#else
+#define WM_CAP_FILE_SET_CAPTURE_FILE WM_CAP_FILE_SET_CAPTURE_FILEA
+#define WM_CAP_FILE_GET_CAPTURE_FILE WM_CAP_FILE_GET_CAPTURE_FILEA
+#define WM_CAP_FILE_SAVEAS WM_CAP_FILE_SAVEASA
+#define WM_CAP_FILE_SAVEDIB WM_CAP_FILE_SAVEDIBA
+#endif
+
+// out of order to save on ifdefs
+#define WM_CAP_FILE_ALLOCATE (WM_CAP_START+ 22)
+#define WM_CAP_FILE_SET_INFOCHUNK (WM_CAP_START+ 24)
+
+#define WM_CAP_EDIT_COPY (WM_CAP_START+ 30)
+
+#define WM_CAP_SET_AUDIOFORMAT (WM_CAP_START+ 35)
+#define WM_CAP_GET_AUDIOFORMAT (WM_CAP_START+ 36)
+
+#define WM_CAP_DLG_VIDEOFORMAT (WM_CAP_START+ 41)
+#define WM_CAP_DLG_VIDEOSOURCE (WM_CAP_START+ 42)
+#define WM_CAP_DLG_VIDEODISPLAY (WM_CAP_START+ 43)
+#define WM_CAP_GET_VIDEOFORMAT (WM_CAP_START+ 44)
+#define WM_CAP_SET_VIDEOFORMAT (WM_CAP_START+ 45)
+#define WM_CAP_DLG_VIDEOCOMPRESSION (WM_CAP_START+ 46)
+
+#define WM_CAP_SET_PREVIEW (WM_CAP_START+ 50)
+#define WM_CAP_SET_OVERLAY (WM_CAP_START+ 51)
+#define WM_CAP_SET_PREVIEWRATE (WM_CAP_START+ 52)
+#define WM_CAP_SET_SCALE (WM_CAP_START+ 53)
+#define WM_CAP_GET_STATUS (WM_CAP_START+ 54)
+#define WM_CAP_SET_SCROLL (WM_CAP_START+ 55)
+
+#define WM_CAP_GRAB_FRAME (WM_CAP_START+ 60)
+#define WM_CAP_GRAB_FRAME_NOSTOP (WM_CAP_START+ 61)
+
+#define WM_CAP_SEQUENCE (WM_CAP_START+ 62)
+#define WM_CAP_SEQUENCE_NOFILE (WM_CAP_START+ 63)
+#define WM_CAP_SET_SEQUENCE_SETUP (WM_CAP_START+ 64)
+#define WM_CAP_GET_SEQUENCE_SETUP (WM_CAP_START+ 65)
+
+#define WM_CAP_SET_MCI_DEVICEA (WM_CAP_START+ 66)
+#define WM_CAP_GET_MCI_DEVICEA (WM_CAP_START+ 67)
+#define WM_CAP_SET_MCI_DEVICEW (WM_CAP_UNICODE_START+ 66)
+#define WM_CAP_GET_MCI_DEVICEW (WM_CAP_UNICODE_START+ 67)
+#ifdef UNICODE
+#define WM_CAP_SET_MCI_DEVICE WM_CAP_SET_MCI_DEVICEW
+#define WM_CAP_GET_MCI_DEVICE WM_CAP_GET_MCI_DEVICEW
+#else
+#define WM_CAP_SET_MCI_DEVICE WM_CAP_SET_MCI_DEVICEA
+#define WM_CAP_GET_MCI_DEVICE WM_CAP_GET_MCI_DEVICEA
+#endif
+
+
+
+#define WM_CAP_STOP (WM_CAP_START+ 68)
+#define WM_CAP_ABORT (WM_CAP_START+ 69)
+
+#define WM_CAP_SINGLE_FRAME_OPEN (WM_CAP_START+ 70)
+#define WM_CAP_SINGLE_FRAME_CLOSE (WM_CAP_START+ 71)
+#define WM_CAP_SINGLE_FRAME (WM_CAP_START+ 72)
+
+#define WM_CAP_PAL_OPENA (WM_CAP_START+ 80)
+#define WM_CAP_PAL_SAVEA (WM_CAP_START+ 81)
+#define WM_CAP_PAL_OPENW (WM_CAP_UNICODE_START+ 80)
+#define WM_CAP_PAL_SAVEW (WM_CAP_UNICODE_START+ 81)
+#ifdef UNICODE
+#define WM_CAP_PAL_OPEN WM_CAP_PAL_OPENW
+#define WM_CAP_PAL_SAVE WM_CAP_PAL_SAVEW
+#else
+#define WM_CAP_PAL_OPEN WM_CAP_PAL_OPENA
+#define WM_CAP_PAL_SAVE WM_CAP_PAL_SAVEA
+#endif
+
+#define WM_CAP_PAL_PASTE (WM_CAP_START+ 82)
+#define WM_CAP_PAL_AUTOCREATE (WM_CAP_START+ 83)
+#define WM_CAP_PAL_MANUALCREATE (WM_CAP_START+ 84)
+
+// Following added post VFW 1.1
+#define WM_CAP_SET_CALLBACK_CAPCONTROL (WM_CAP_START+ 85)
+
+
+// Defines end of the message range
+#define WM_CAP_UNICODE_END WM_CAP_PAL_SAVEW
+#define WM_CAP_END WM_CAP_UNICODE_END
+
+// ------------------------------------------------------------------
+// Message crackers for above
+// ------------------------------------------------------------------
+
+// message wrapper macros are defined for the default messages only. Apps
+// that wish to mix Ansi and UNICODE message sending will have to
+// reference the _A and _W messages directly
+
+#define capSetCallbackOnError(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_ERROR, 0, (LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnStatus(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_STATUS, 0, (LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnYield(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_YIELD, 0, (LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnFrame(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_FRAME, 0, (LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnVideoStream(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, (LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnWaveStream(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, (LPARAM)(LPVOID)(fpProc)))
+#define capSetCallbackOnCapControl(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, (LPARAM)(LPVOID)(fpProc)))
+
+#define capSetUserData(hwnd, lUser) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_USER_DATA, 0, (LPARAM)lUser))
+#define capGetUserData(hwnd) (AVICapSM(hwnd, WM_CAP_GET_USER_DATA, 0, 0))
+
+#define capDriverConnect(hwnd, i) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_CONNECT, (WPARAM)(i), 0L))
+#define capDriverDisconnect(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_DISCONNECT, (WPARAM)0, 0L))
+#define capDriverGetName(hwnd, szName, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_GET_NAME, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capDriverGetVersion(hwnd, szVer, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_GET_VERSION, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPTSTR)(szVer)))
+#define capDriverGetCaps(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_GET_CAPS, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPDRIVERCAPS)(s)))
+
+#define capFileSetCaptureFile(hwnd, szName) ((BOOL)AVICapSM(hwnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, (LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capFileGetCaptureFile(hwnd, szName, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_FILE_GET_CAPTURE_FILE, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capFileAlloc(hwnd, dwSize) ((BOOL)AVICapSM(hwnd, WM_CAP_FILE_ALLOCATE, 0, (LPARAM)(DWORD)(dwSize)))
+#define capFileSaveAs(hwnd, szName) ((BOOL)AVICapSM(hwnd, WM_CAP_FILE_SAVEAS, 0, (LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capFileSetInfoChunk(hwnd, lpInfoChunk) ((BOOL)AVICapSM(hwnd, WM_CAP_FILE_SET_INFOCHUNK, (WPARAM)0, (LPARAM)(LPCAPINFOCHUNK)(lpInfoChunk)))
+#define capFileSaveDIB(hwnd, szName) ((BOOL)AVICapSM(hwnd, WM_CAP_FILE_SAVEDIB, 0, (LPARAM)(LPVOID)(LPTSTR)(szName)))
+
+#define capEditCopy(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_EDIT_COPY, 0, 0L))
+
+#define capSetAudioFormat(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_AUDIOFORMAT, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPWAVEFORMATEX)(s)))
+#define capGetAudioFormat(hwnd, s, wSize) ((DWORD)AVICapSM(hwnd, WM_CAP_GET_AUDIOFORMAT, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPWAVEFORMATEX)(s)))
+#define capGetAudioFormatSize(hwnd) ((DWORD)AVICapSM(hwnd, WM_CAP_GET_AUDIOFORMAT, (WPARAM)0, (LPARAM)0L))
+
+#define capDlgVideoFormat(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0L))
+#define capDlgVideoSource(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0L))
+#define capDlgVideoDisplay(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0L))
+#define capDlgVideoCompression(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0L))
+
+#define capGetVideoFormat(hwnd, s, wSize) ((DWORD)AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, (WPARAM)(wSize), (LPARAM)(LPVOID)(s)))
+#define capGetVideoFormatSize(hwnd) ((DWORD)AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, 0, 0L))
+#define capSetVideoFormat(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_VIDEOFORMAT, (WPARAM)(wSize), (LPARAM)(LPVOID)(s)))
+
+#define capPreview(hwnd, f) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_PREVIEW, (WPARAM)(BOOL)(f), 0L))
+#define capPreviewRate(hwnd, wMS) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_PREVIEWRATE, (WPARAM)(wMS), 0))
+#define capOverlay(hwnd, f) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_OVERLAY, (WPARAM)(BOOL)(f), 0L))
+#define capPreviewScale(hwnd, f) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_SCALE, (WPARAM)(BOOL)f, 0L))
+#define capGetStatus(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_GET_STATUS, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPSTATUS)(s)))
+#define capSetScrollPos(hwnd, lpP) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_SCROLL, (WPARAM)0, (LPARAM)(LPPOINT)(lpP)))
+
+#define capGrabFrame(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_GRAB_FRAME, (WPARAM)0, (LPARAM)0L))
+#define capGrabFrameNoStop(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_GRAB_FRAME_NOSTOP, (WPARAM)0, (LPARAM)0L))
+
+#define capCaptureSequence(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_SEQUENCE, (WPARAM)0, (LPARAM)0L))
+#define capCaptureSequenceNoFile(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_SEQUENCE_NOFILE, (WPARAM)0, (LPARAM)0L))
+#define capCaptureStop(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_STOP, (WPARAM)0, (LPARAM)0L))
+#define capCaptureAbort(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_ABORT, (WPARAM)0, (LPARAM)0L))
+
+#define capCaptureSingleFrameOpen(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_SINGLE_FRAME_OPEN, (WPARAM)0, (LPARAM)0L))
+#define capCaptureSingleFrameClose(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_SINGLE_FRAME_CLOSE, (WPARAM)0, (LPARAM)0L))
+#define capCaptureSingleFrame(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_SINGLE_FRAME, (WPARAM)0, (LPARAM)0L))
+
+#define capCaptureGetSetup(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_GET_SEQUENCE_SETUP, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))
+#define capCaptureSetSetup(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_SEQUENCE_SETUP, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))
+
+#define capSetMCIDeviceName(hwnd, szName) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_MCI_DEVICE, 0, (LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capGetMCIDeviceName(hwnd, szName, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_GET_MCI_DEVICE, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPTSTR)(szName)))
+
+#define capPaletteOpen(hwnd, szName) ((BOOL)AVICapSM(hwnd, WM_CAP_PAL_OPEN, 0, (LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capPaletteSave(hwnd, szName) ((BOOL)AVICapSM(hwnd, WM_CAP_PAL_SAVE, 0, (LPARAM)(LPVOID)(LPTSTR)(szName)))
+#define capPalettePaste(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_PAL_PASTE, (WPARAM) 0, (LPARAM)0L))
+#define capPaletteAuto(hwnd, iFrames, iColors) ((BOOL)AVICapSM(hwnd, WM_CAP_PAL_AUTOCREATE, (WPARAM)(iFrames), (LPARAM)(DWORD)(iColors)))
+#define capPaletteManual(hwnd, fGrab, iColors) ((BOOL)AVICapSM(hwnd, WM_CAP_PAL_MANUALCREATE, (WPARAM)(fGrab), (LPARAM)(DWORD)(iColors)))
+
+// ------------------------------------------------------------------
+// Structures
+// ------------------------------------------------------------------
+
+typedef struct tagCapDriverCaps {
+ UINT wDeviceIndex; // Driver index in system.ini
+ BOOL fHasOverlay; // Can device overlay?
+ BOOL fHasDlgVideoSource; // Has Video source dlg?
+ BOOL fHasDlgVideoFormat; // Has Format dlg?
+ BOOL fHasDlgVideoDisplay; // Has External out dlg?
+ BOOL fCaptureInitialized; // Driver ready to capture?
+ BOOL fDriverSuppliesPalettes; // Can driver make palettes?
+
+// following always NULL on Win32.
+ HANDLE hVideoIn; // Driver In channel
+ HANDLE hVideoOut; // Driver Out channel
+ HANDLE hVideoExtIn; // Driver Ext In channel
+ HANDLE hVideoExtOut; // Driver Ext Out channel
+} CAPDRIVERCAPS, *PCAPDRIVERCAPS, FAR *LPCAPDRIVERCAPS;
+
+typedef struct tagCapStatus {
+ UINT uiImageWidth; // Width of the image
+ UINT uiImageHeight; // Height of the image
+ BOOL fLiveWindow; // Now Previewing video?
+ BOOL fOverlayWindow; // Now Overlaying video?
+ BOOL fScale; // Scale image to client?
+ POINT ptScroll; // Scroll position
+ BOOL fUsingDefaultPalette; // Using default driver palette?
+ BOOL fAudioHardware; // Audio hardware present?
+ BOOL fCapFileExists; // Does capture file exist?
+ DWORD dwCurrentVideoFrame; // # of video frames cap'td
+ DWORD dwCurrentVideoFramesDropped;// # of video frames dropped
+ DWORD dwCurrentWaveSamples; // # of wave samples cap'td
+ DWORD dwCurrentTimeElapsedMS; // Elapsed capture duration
+ HPALETTE hPalCurrent; // Current palette in use
+ BOOL fCapturingNow; // Capture in progress?
+ DWORD dwReturn; // Error value after any operation
+ UINT wNumVideoAllocated; // Actual number of video buffers
+ UINT wNumAudioAllocated; // Actual number of audio buffers
+} CAPSTATUS, *PCAPSTATUS, FAR *LPCAPSTATUS;
+
+ // Default values in parenthesis
+typedef struct tagCaptureParms {
+ DWORD dwRequestMicroSecPerFrame; // Requested capture rate
+ BOOL fMakeUserHitOKToCapture; // Show "Hit OK to cap" dlg?
+ UINT wPercentDropForError; // Give error msg if > (10%)
+ BOOL fYield; // Capture via background task?
+ DWORD dwIndexSize; // Max index size in frames (32K)
+ UINT wChunkGranularity; // Junk chunk granularity (2K)
+ BOOL fUsingDOSMemory; // Use DOS buffers?
+ UINT wNumVideoRequested; // # video buffers, If 0, autocalc
+ BOOL fCaptureAudio; // Capture audio?
+ UINT wNumAudioRequested; // # audio buffers, If 0, autocalc
+ UINT vKeyAbort; // Virtual key causing abort
+ BOOL fAbortLeftMouse; // Abort on left mouse?
+ BOOL fAbortRightMouse; // Abort on right mouse?
+ BOOL fLimitEnabled; // Use wTimeLimit?
+ UINT wTimeLimit; // Seconds to capture
+ BOOL fMCIControl; // Use MCI video source?
+ BOOL fStepMCIDevice; // Step MCI device?
+ DWORD dwMCIStartTime; // Time to start in MS
+ DWORD dwMCIStopTime; // Time to stop in MS
+ BOOL fStepCaptureAt2x; // Perform spatial averaging 2x
+ UINT wStepCaptureAverageFrames; // Temporal average n Frames
+ DWORD dwAudioBufferSize; // Size of audio bufs (0 = default)
+ BOOL fDisableWriteCache; // Attempt to disable write cache
+ UINT AVStreamMaster; // Which stream controls length?
+} CAPTUREPARMS, *PCAPTUREPARMS, FAR *LPCAPTUREPARMS;
+
+// ------------------------------------------------------------------
+// AVStreamMaster
+// Since Audio and Video streams generally use non-synchronized capture
+// clocks, this flag determines whether the audio stream is to be considered
+// the master or controlling clock when writing the AVI file:
+//
+// AVSTREAMMASTER_AUDIO - Audio is master, video frame duration is forced
+// to match audio duration (VFW 1.0, 1.1 default)
+// AVSTREAMMASTER_NONE - No master, audio and video streams may be of
+// different lengths
+// ------------------------------------------------------------------
+#define AVSTREAMMASTER_AUDIO 0 /* Audio master (VFW 1.0, 1.1) */
+#define AVSTREAMMASTER_NONE 1 /* No master */
+
+typedef struct tagCapInfoChunk {
+ FOURCC fccInfoID; // Chunk ID, "ICOP" for copyright
+ LPVOID lpData; // pointer to data
+ LONG cbData; // size of lpData
+} CAPINFOCHUNK, *PCAPINFOCHUNK, FAR *LPCAPINFOCHUNK;
+
+
+// ------------------------------------------------------------------
+// Callback Definitions
+// ------------------------------------------------------------------
+
+typedef LRESULT (CALLBACK* CAPYIELDCALLBACK) (HWND hWnd);
+typedef LRESULT (CALLBACK* CAPSTATUSCALLBACKW) (HWND hWnd, int nID, LPCWSTR lpsz);
+typedef LRESULT (CALLBACK* CAPERRORCALLBACKW) (HWND hWnd, int nID, LPCWSTR lpsz);
+typedef LRESULT (CALLBACK* CAPSTATUSCALLBACKA) (HWND hWnd, int nID, LPCSTR lpsz);
+typedef LRESULT (CALLBACK* CAPERRORCALLBACKA) (HWND hWnd, int nID, LPCSTR lpsz);
+#ifdef UNICODE
+#define CAPSTATUSCALLBACK CAPSTATUSCALLBACKW
+#define CAPERRORCALLBACK CAPERRORCALLBACKW
+#else
+#define CAPSTATUSCALLBACK CAPSTATUSCALLBACKA
+#define CAPERRORCALLBACK CAPERRORCALLBACKA
+#endif
+typedef LRESULT (CALLBACK* CAPVIDEOCALLBACK) (HWND hWnd, LPVIDEOHDR lpVHdr);
+typedef LRESULT (CALLBACK* CAPWAVECALLBACK) (HWND hWnd, LPWAVEHDR lpWHdr);
+typedef LRESULT (CALLBACK* CAPCONTROLCALLBACK)(HWND hWnd, int nState);
+
+// ------------------------------------------------------------------
+// CapControlCallback states
+// ------------------------------------------------------------------
+#define CONTROLCALLBACK_PREROLL 1 /* Waiting to start capture */
+#define CONTROLCALLBACK_CAPTURING 2 /* Now capturing */
+
+// ------------------------------------------------------------------
+// The only exported functions from AVICAP.DLL
+// ------------------------------------------------------------------
+
+HWND VFWAPI capCreateCaptureWindowA (
+ LPCSTR lpszWindowName,
+ DWORD dwStyle,
+ int x, int y, int nWidth, int nHeight,
+ HWND hwndParent, int nID);
+
+BOOL VFWAPI capGetDriverDescriptionA (UINT wDriverIndex,
+ LPSTR lpszName, int cbName,
+ LPSTR lpszVer, int cbVer);
+
+HWND VFWAPI capCreateCaptureWindowW (
+ LPCWSTR lpszWindowName,
+ DWORD dwStyle,
+ int x, int y, int nWidth, int nHeight,
+ HWND hwndParent, int nID);
+
+BOOL VFWAPI capGetDriverDescriptionW (UINT wDriverIndex,
+ LPWSTR lpszName, int cbName,
+ LPWSTR lpszVer, int cbVer);
+#ifdef UNICODE
+#define capCreateCaptureWindow capCreateCaptureWindowW
+#define capGetDriverDescription capGetDriverDescriptionW
+#else
+#define capCreateCaptureWindow capCreateCaptureWindowA
+#define capGetDriverDescription capGetDriverDescriptionA
+#endif
+
+#endif /* RC_INVOKED */
+
+// ------------------------------------------------------------------
+// New Information chunk IDs
+// ------------------------------------------------------------------
+#define infotypeDIGITIZATION_TIME mmioFOURCC ('I','D','I','T')
+#define infotypeSMPTE_TIME mmioFOURCC ('I','S','M','P')
+
+// ------------------------------------------------------------------
+// String IDs from status and error callbacks
+// ------------------------------------------------------------------
+
+#define IDS_CAP_BEGIN 300 /* "Capture Start" */
+#define IDS_CAP_END 301 /* "Capture End" */
+
+#define IDS_CAP_INFO 401 /* "%s" */
+#define IDS_CAP_OUTOFMEM 402 /* "Out of memory" */
+#define IDS_CAP_FILEEXISTS 403 /* "File '%s' exists -- overwrite it?" */
+#define IDS_CAP_ERRORPALOPEN 404 /* "Error opening palette '%s'" */
+#define IDS_CAP_ERRORPALSAVE 405 /* "Error saving palette '%s'" */
+#define IDS_CAP_ERRORDIBSAVE 406 /* "Error saving frame '%s'" */
+#define IDS_CAP_DEFAVIEXT 407 /* "avi" */
+#define IDS_CAP_DEFPALEXT 408 /* "pal" */
+#define IDS_CAP_CANTOPEN 409 /* "Cannot open '%s'" */
+#define IDS_CAP_SEQ_MSGSTART 410 /* "Select OK to start capture\nof video sequence\nto %s." */
+#define IDS_CAP_SEQ_MSGSTOP 411 /* "Hit ESCAPE or click to end capture" */
+
+#define IDS_CAP_VIDEDITERR 412 /* "An error occurred while trying to run VidEdit." */
+#define IDS_CAP_READONLYFILE 413 /* "The file '%s' is a read-only file." */
+#define IDS_CAP_WRITEERROR 414 /* "Unable to write to file '%s'.\nDisk may be full." */
+#define IDS_CAP_NODISKSPACE 415 /* "There is no space to create a capture file on the specified device." */
+#define IDS_CAP_SETFILESIZE 416 /* "Set File Size" */
+#define IDS_CAP_SAVEASPERCENT 417 /* "SaveAs: %2ld%% Hit Escape to abort." */
+
+#define IDS_CAP_DRIVER_ERROR 418 /* Driver specific error message */
+
+#define IDS_CAP_WAVE_OPEN_ERROR 419 /* "Error: Cannot open the wave input device.\nCheck sample size, frequency, and channels." */
+#define IDS_CAP_WAVE_ALLOC_ERROR 420 /* "Error: Out of memory for wave buffers." */
+#define IDS_CAP_WAVE_PREPARE_ERROR 421 /* "Error: Cannot prepare wave buffers." */
+#define IDS_CAP_WAVE_ADD_ERROR 422 /* "Error: Cannot add wave buffers." */
+#define IDS_CAP_WAVE_SIZE_ERROR 423 /* "Error: Bad wave size." */
+
+#define IDS_CAP_VIDEO_OPEN_ERROR 424 /* "Error: Cannot open the video input device." */
+#define IDS_CAP_VIDEO_ALLOC_ERROR 425 /* "Error: Out of memory for video buffers." */
+#define IDS_CAP_VIDEO_PREPARE_ERROR 426 /* "Error: Cannot prepare video buffers." */
+#define IDS_CAP_VIDEO_ADD_ERROR 427 /* "Error: Cannot add video buffers." */
+#define IDS_CAP_VIDEO_SIZE_ERROR 428 /* "Error: Bad video size." */
+
+#define IDS_CAP_FILE_OPEN_ERROR 429 /* "Error: Cannot open capture file." */
+#define IDS_CAP_FILE_WRITE_ERROR 430 /* "Error: Cannot write to capture file. Disk may be full." */
+#define IDS_CAP_RECORDING_ERROR 431 /* "Error: Cannot write to capture file. Data rate too high or disk full." */
+#define IDS_CAP_RECORDING_ERROR2 432 /* "Error while recording" */
+#define IDS_CAP_AVI_INIT_ERROR 433 /* "Error: Unable to initialize for capture." */
+#define IDS_CAP_NO_FRAME_CAP_ERROR 434 /* "Warning: No frames captured.\nConfirm that vertical sync interrupts\nare configured and enabled." */
+#define IDS_CAP_NO_PALETTE_WARN 435 /* "Warning: Using default palette." */
+#define IDS_CAP_MCI_CONTROL_ERROR 436 /* "Error: Unable to access MCI device." */
+#define IDS_CAP_MCI_CANT_STEP_ERROR 437 /* "Error: Unable to step MCI device." */
+#define IDS_CAP_NO_AUDIO_CAP_ERROR 438 /* "Error: No audio data captured.\nCheck audio card settings." */
+#define IDS_CAP_AVI_DRAWDIB_ERROR 439 /* "Error: Unable to draw this data format." */
+#define IDS_CAP_COMPRESSOR_ERROR 440 /* "Error: Unable to initialize compressor." */
+#define IDS_CAP_AUDIO_DROP_ERROR 441 /* "Error: Audio data was lost during capture, reduce capture rate." */
+#define IDS_CAP_AUDIO_DROP_COMPERROR 442 /* "Error: Audio data was lost during capture. Try capturing without compressing." */
+
+/* status string IDs */
+#define IDS_CAP_STAT_LIVE_MODE 500 /* "Live window" */
+#define IDS_CAP_STAT_OVERLAY_MODE 501 /* "Overlay window" */
+#define IDS_CAP_STAT_CAP_INIT 502 /* "Setting up for capture - Please wait" */
+#define IDS_CAP_STAT_CAP_FINI 503 /* "Finished capture, now writing frame %ld" */
+#define IDS_CAP_STAT_PALETTE_BUILD 504 /* "Building palette map" */
+#define IDS_CAP_STAT_OPTPAL_BUILD 505 /* "Computing optimal palette" */
+#define IDS_CAP_STAT_I_FRAMES 506 /* "%d frames" */
+#define IDS_CAP_STAT_L_FRAMES 507 /* "%ld frames" */
+#define IDS_CAP_STAT_CAP_L_FRAMES 508 /* "Captured %ld frames" */
+#define IDS_CAP_STAT_CAP_AUDIO 509 /* "Capturing audio" */
+#define IDS_CAP_STAT_VIDEOCURRENT 510 /* "Captured %ld frames (%ld dropped) %d.%03d sec." */
+#define IDS_CAP_STAT_VIDEOAUDIO 511 /* "Captured %d.%03d sec. %ld frames (%ld dropped) (%d.%03d fps). %ld audio bytes (%d,%03d sps)" */
+#define IDS_CAP_STAT_VIDEOONLY 512 /* "Captured %d.%03d sec. %ld frames (%ld dropped) (%d.%03d fps)" */
+#define IDS_CAP_STAT_FRAMESDROPPED 513 /* "Dropped %ld of %ld frames (%d.%02d%%) during capture." */
+#endif /* NOAVIFILE */
+
+/****************************************************************************
+ *
+ * ACM (Audio compression manager)
+ *
+ ***************************************************************************/
+
+#ifndef NOMSACM
+ #include <msacm.h>
+#endif
+
+/****************************************************************************
+ *
+ * FilePreview dialog.
+ *
+ ***************************************************************************/
+#ifdef OFN_READONLY
+
+ BOOL VFWAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn);
+ BOOL VFWAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn);
+
+ BOOL VFWAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn);
+ BOOL VFWAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn);
+
+ #ifdef UNICODE
+ #define GetOpenFileNamePreview GetOpenFileNamePreviewW
+ #define GetSaveFileNamePreview GetSaveFileNamePreviewW
+ #else
+ #define GetOpenFileNamePreview GetOpenFileNamePreviewA
+ #define GetSaveFileNamePreview GetSaveFileNamePreviewA
+ #endif
+
+#endif // OFN_READONLY
+
+#ifndef RC_INVOKED
+#include "poppack.h"
+#endif
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* _INC_VFW */
diff --git a/public/sdk/inc/vquery.hxx b/public/sdk/inc/vquery.hxx
new file mode 100644
index 000000000..f45dc038f
--- /dev/null
+++ b/public/sdk/inc/vquery.hxx
@@ -0,0 +1,190 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1992.
+//
+// File: VQuery.hxx
+//
+// Contents: Temporary stubs to access query engine.
+//
+// History: 28-Sep-92 KyleP Added header
+// 06-Nov-95 DwightKr Added CiState
+//
+//--------------------------------------------------------------------------
+
+#ifndef __VQUERY_HXX__
+#define __VQUERY_HXX__
+
+#include <ntquery.h>
+
+struct IOldQuery;
+struct IQuery;
+struct ISearch;
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+//
+// Scope manipulation
+//
+
+SCODE AddScopeToDLCI ( WCHAR const * pwcsRoot, WCHAR const * pwcsCat );
+
+SCODE RemoveScopeFromDLCI ( WCHAR const * pwcsRoot, WCHAR const * pwcsCat );
+
+BOOL IsScopeInDLCI( WCHAR const * pwcsRoot, WCHAR const * pwcsCat );
+
+//
+// Virtual scope manipulation
+//
+
+SCODE AddVirtualScope( WCHAR const * pwcsVRoot, WCHAR const * pwcsRoot, WCHAR const * pwcsCat, BOOL fNNTP );
+
+SCODE RemoveVirtualScope( WCHAR const * pwcsVRoot, WCHAR const * pwcsRoot, WCHAR const * pwcsCat, BOOL fNNTP );
+
+//
+// Property cache manipulation.
+//
+
+
+SCODE BeginCacheTransaction( ULONG * pulToken,
+ WCHAR const * pwcsScope,
+ WCHAR const * pwcsCat );
+
+SCODE SetupCache( struct tagFULLPROPSPEC const * ps,
+ ULONG vt,
+ ULONG cbSoftMaxLen,
+ ULONG ulToken,
+ WCHAR const * pwcsScope,
+ WCHAR const * pwcsCat );
+
+SCODE EndCacheTransaction( ULONG ulToken,
+ BOOL fCommit,
+ WCHAR const * pwcsScope,
+ WCHAR const * pwcsCat );
+
+//
+// Administrative API
+//
+
+NTSTATUS ForceMasterMerge ( WCHAR const * wcsDrive,
+ WCHAR const * pwcsCat = 0,
+ ULONG partId = 1);
+
+NTSTATUS AbortMerges ( WCHAR const * wcsDrive,
+ WCHAR const * pwcsCat = 0,
+ ULONG partId = 1);
+
+
+NTSTATUS DLForceMasterMerge ( WCHAR const * wcsDrive,
+ WCHAR const * pwcsCat,
+ ULONG partId );
+
+NTSTATUS DLAbortMerge ( WCHAR const * wcsDrive,
+ WCHAR const * pwcsCat,
+ ULONG partId );
+
+
+//
+// CI State bits
+//
+
+#define CI_STATE_UPTODATE 0x0
+#define CI_STATE_SHADOW_MERGE 0x1
+#define CI_STATE_MASTER_MERGE 0x2
+#define CI_STATE_CONTENT_SCAN_REQUIRED 0x4
+#define CI_STATE_ANNEALING_MERGE 0x8
+#define CI_STATE_SCANNING 0x10
+#define CI_STATE_RECOVERING 0x20
+
+#pragma pack(4)
+typedef struct _CI_STATE
+{
+ DWORD cbStruct; // size of the struct passed
+ DWORD cWordList; // # of wordlists
+ DWORD cPersistentIndex; // # of persistent indexes
+ DWORD cQueries; // # of running queries
+ DWORD cDocuments; // # of documents to filter
+ DWORD cFreshTest; // # of entires in the fresh test
+ DWORD dwMergeProgress; // % done in current merge
+ DWORD eState; // bit array of state information
+ DWORD cFilteredDocuments; // # of documents filtered thus far
+ DWORD cTotalDocuments; // # of documents in corpus
+ DWORD cPendingScans; // # of pending directory scans
+ DWORD dwIndexSize; // Total size (in MB) of index
+ DWORD cUniqueKeys; // # of unique keys in index
+} CI_STATE;
+#pragma pack()
+
+NTSTATUS CiState( WCHAR const * wcsDrive,
+ WCHAR const * pwcsCat,
+ CI_STATE * pCiState );
+
+NTSTATUS DLCiState ( WCHAR const * wcsDrive,
+ WCHAR const * pwcsCat,
+ CI_STATE *pState );
+
+#if defined(__cplusplus)
+}
+#endif
+
+#if defined(__cplusplus)
+
+class CDbRestriction;
+class CFullPropSpec;
+
+enum CiMetaData
+{
+ CiNormal = 0,
+ CiVirtualRoots = 1,
+ CiPhysicalRoots = 2,
+ CiProperties = 3
+};
+
+IOldQuery * EvalQuery2( CiMetaData eType, WCHAR const * wcsCat );
+
+IOldQuery * EvalQuery4( WCHAR const * wcsScope,
+ WCHAR const * wcsCat = 0,
+ BOOL fVirtualPath = FALSE );
+
+IOldQuery * EvalQuery5( unsigned cScope,
+ WCHAR const * const * awcsScope,
+ WCHAR const * const * awcsCat = 0,
+ BOOL fVirtualPath = FALSE );
+
+IQuery * EvalQuery6( DWORD dwDepth,
+ ULONG cScope,
+ WCHAR const * const * awcsScope,
+ WCHAR const * const * awcsCat = 0 );
+
+IQuery * EvalQuery7( CiMetaData eType, WCHAR const * wcsCat );
+
+ISearch* EvalSearch ( CDbRestriction* pRst, WCHAR const * pwszPath = 0 );
+
+
+ULONG UpdateContentIndex ( WCHAR const * pwcsRoot,
+ WCHAR const * pwcsCat = 0,
+ BOOL fFull = TRUE );
+
+
+ULONG DeleteDocument( WCHAR const * pwcsDoc,
+ WCHAR const * pwcsCat = 0 );
+
+ULONG UpdateDocument( WCHAR const * pwcsDoc,
+ WCHAR const * pwcsCat = 0 );
+
+void CIShutdown();
+
+NTSTATUS DumpWorkId ( WCHAR const * wcsDrive,
+ ULONG wid,
+ BYTE * pb,
+ ULONG & cb,
+ WCHAR const * pwcsCat = 0,
+ ULONG iid = 0 );
+
+#endif // __cplusplus
+
+
+#endif // __VQUERY_HXX__
diff --git a/public/sdk/inc/vwobj.h b/public/sdk/inc/vwobj.h
new file mode 100644
index 000000000..991aed588
--- /dev/null
+++ b/public/sdk/inc/vwobj.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: vwobj.h
+//
+// Contents: Replacement for vwobj.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/vwobj2.h b/public/sdk/inc/vwobj2.h
new file mode 100644
index 000000000..c4c8573fc
--- /dev/null
+++ b/public/sdk/inc/vwobj2.h
@@ -0,0 +1,22 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: vwobj2.h
+//
+// Contents: Replacement for vwobj2.h.
+//
+// History: 6-15-94 GregJen Created
+//
+//----------------------------------------------------------------------------
+
+
+
+#ifndef RC_INVOKED
+#pragma message("WARNING: Only Includes ole2.h.")
+#pragma message("The code needs to be changed to directly include ole2.h")
+#endif /* !RC_INVOKED */
+
+#include <ole2.h>
+
diff --git a/public/sdk/inc/warning.h b/public/sdk/inc/warning.h
new file mode 100644
index 000000000..7d24b40f8
--- /dev/null
+++ b/public/sdk/inc/warning.h
@@ -0,0 +1,35 @@
+#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
+
+#pragma warning(disable:4237) // bool keyword reserved for future use
+
+#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
+
+#ifndef __cplusplus
+#undef try
+#undef except
+#undef finally
+#undef leave
+#define try __try
+#define except __except
+#define finally __finally
+#define leave __leave
+#endif
diff --git a/public/sdk/inc/wdbgexts.h b/public/sdk/inc/wdbgexts.h
new file mode 100644
index 000000000..56b8fe83d
--- /dev/null
+++ b/public/sdk/inc/wdbgexts.h
@@ -0,0 +1,519 @@
+/*++
+
+Copyright (c) 1992-1995 Microsoft Corporation
+
+Module Name:
+
+ wdbgexts.h
+
+Abstract:
+
+ This file contains the necessary prototypes and data types for a user
+ to write a debugger extension DLL. This header file is also included
+ by the NT debuggers (WINDBG & KD).
+
+ This header file must be included after "windows.h" and "imagehlp.h".
+
+ Please see the NT DDK documentation for specific information about
+ how to write your own debugger extension DLL.
+
+Environment:
+
+ Win32 only.
+
+Revision History:
+
+--*/
+
+#ifndef _WDBGEXTS_
+#define _WDBGEXTS_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if !defined(WDBGAPI)
+#define WDBGAPI __stdcall
+#endif
+
+#ifndef _WINDEF_
+typedef CONST void far *LPCVOID;
+#endif
+
+
+typedef
+VOID
+(WDBGAPI*PWINDBG_OUTPUT_ROUTINE)(
+ PCSTR lpFormat,
+ ...
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_GET_EXPRESSION)(
+ PCSTR lpExpression
+ );
+
+typedef
+VOID
+(WDBGAPI*PWINDBG_GET_SYMBOL)(
+ PVOID offset,
+ PUCHAR pchBuffer,
+ PULONG pDisplacement
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_DISASM)(
+ PULONG lpOffset,
+ PCSTR lpBuffer,
+ ULONG fShowEffectiveAddress
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_CHECK_CONTROL_C)(
+ VOID
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_READ_PROCESS_MEMORY_ROUTINE)(
+ ULONG offset,
+ PVOID lpBuffer,
+ ULONG cb,
+ PULONG lpcbBytesRead
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE)(
+ ULONG offset,
+ LPCVOID lpBuffer,
+ ULONG cb,
+ PULONG lpcbBytesWritten
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_GET_THREAD_CONTEXT_ROUTINE)(
+ ULONG Processor,
+ PCONTEXT lpContext,
+ ULONG cbSizeOfContext
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_SET_THREAD_CONTEXT_ROUTINE)(
+ ULONG Processor,
+ PCONTEXT lpContext,
+ ULONG cbSizeOfContext
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_IOCTL_ROUTINE)(
+ USHORT IoctlType,
+ PVOID lpvData,
+ ULONG cbSize
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_OLDKD_READ_PHYSICAL_MEMORY)(
+ LARGE_INTEGER address,
+ PVOID buffer,
+ ULONG count,
+ PULONG bytesread
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_OLDKD_WRITE_PHYSICAL_MEMORY)(
+ LARGE_INTEGER address,
+ PVOID buffer,
+ ULONG length,
+ PULONG byteswritten
+ );
+
+
+typedef struct _tagEXTSTACKTRACE {
+ ULONG FramePointer;
+ ULONG ProgramCounter;
+ ULONG ReturnAddress;
+ ULONG Args[4];
+} EXTSTACKTRACE, *PEXTSTACKTRACE;
+
+
+typedef
+ULONG
+(*PWINDBG_STACKTRACE_ROUTINE)(
+ ULONG FramePointer,
+ ULONG StackPointer,
+ ULONG ProgramCounter,
+ PEXTSTACKTRACE StackFrames,
+ ULONG Frames
+ );
+
+typedef struct _WINDBG_EXTENSION_APIS {
+ ULONG nSize;
+ PWINDBG_OUTPUT_ROUTINE lpOutputRoutine;
+ PWINDBG_GET_EXPRESSION lpGetExpressionRoutine;
+ PWINDBG_GET_SYMBOL lpGetSymbolRoutine;
+ PWINDBG_DISASM lpDisasmRoutine;
+ PWINDBG_CHECK_CONTROL_C lpCheckControlCRoutine;
+ PWINDBG_READ_PROCESS_MEMORY_ROUTINE lpReadProcessMemoryRoutine;
+ PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE lpWriteProcessMemoryRoutine;
+ PWINDBG_GET_THREAD_CONTEXT_ROUTINE lpGetThreadContextRoutine;
+ PWINDBG_SET_THREAD_CONTEXT_ROUTINE lpSetThreadContextRoutine;
+ PWINDBG_IOCTL_ROUTINE lpIoctlRoutine;
+ PWINDBG_STACKTRACE_ROUTINE lpStackTraceRoutine;
+} WINDBG_EXTENSION_APIS, *PWINDBG_EXTENSION_APIS;
+
+typedef struct _WINDBG_OLD_EXTENSION_APIS {
+ ULONG nSize;
+ PWINDBG_OUTPUT_ROUTINE lpOutputRoutine;
+ PWINDBG_GET_EXPRESSION lpGetExpressionRoutine;
+ PWINDBG_GET_SYMBOL lpGetSymbolRoutine;
+ PWINDBG_DISASM lpDisasmRoutine;
+ PWINDBG_CHECK_CONTROL_C lpCheckControlCRoutine;
+} WINDBG_OLD_EXTENSION_APIS, *PWINDBG_OLD_EXTENSION_APIS;
+
+typedef struct _WINDBG_OLDKD_EXTENSION_APIS {
+ ULONG nSize;
+ PWINDBG_OUTPUT_ROUTINE lpOutputRoutine;
+ PWINDBG_GET_EXPRESSION lpGetExpressionRoutine;
+ PWINDBG_GET_SYMBOL lpGetSymbolRoutine;
+ PWINDBG_DISASM lpDisasmRoutine;
+ PWINDBG_CHECK_CONTROL_C lpCheckControlCRoutine;
+ PWINDBG_READ_PROCESS_MEMORY_ROUTINE lpReadVirtualMemRoutine;
+ PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE lpWriteVirtualMemRoutine;
+ PWINDBG_OLDKD_READ_PHYSICAL_MEMORY lpReadPhysicalMemRoutine;
+ PWINDBG_OLDKD_WRITE_PHYSICAL_MEMORY lpWritePhysicalMemRoutine;
+} WINDBG_OLDKD_EXTENSION_APIS, *PWINDBG_OLDKD_EXTENSION_APIS;
+
+typedef
+VOID
+(WDBGAPI*PWINDBG_OLD_EXTENSION_ROUTINE)(
+ HANDLE hCurrentProcess,
+ HANDLE hCurrentThread,
+ ULONG dwCurrentPc,
+ PWINDBG_EXTENSION_APIS lpExtensionApis,
+ PCSTR lpArgumentString
+ );
+
+typedef
+VOID
+(WDBGAPI*PWINDBG_EXTENSION_ROUTINE)(
+ HANDLE hCurrentProcess,
+ HANDLE hCurrentThread,
+ ULONG dwCurrentPc,
+ ULONG dwProcessor,
+ PCSTR lpArgumentString
+ );
+
+typedef
+VOID
+(WDBGAPI*PWINDBG_OLDKD_EXTENSION_ROUTINE)(
+ ULONG dwCurrentPc,
+ PWINDBG_OLDKD_EXTENSION_APIS lpExtensionApis,
+ PCSTR lpArgumentString
+ );
+
+typedef
+VOID
+(WDBGAPI*PWINDBG_EXTENSION_DLL_INIT)(
+ PWINDBG_EXTENSION_APIS lpExtensionApis,
+ USHORT MajorVersion,
+ USHORT MinorVersion
+ );
+
+typedef
+ULONG
+(WDBGAPI*PWINDBG_CHECK_VERSION)(
+ VOID
+ );
+
+#define EXT_API_VERSION_NUMBER 5
+
+typedef struct EXT_API_VERSION {
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ USHORT Revision;
+ USHORT Reserved;
+} EXT_API_VERSION, *LPEXT_API_VERSION;
+
+typedef
+LPEXT_API_VERSION
+(WDBGAPI*PWINDBG_EXTENSION_API_VERSION)(
+ VOID
+ );
+
+#define IG_KD_CONTEXT 1
+#define IG_READ_CONTROL_SPACE 2
+#define IG_WRITE_CONTROL_SPACE 3
+#define IG_READ_IO_SPACE 4
+#define IG_WRITE_IO_SPACE 5
+#define IG_READ_PHYSICAL 6
+#define IG_WRITE_PHYSICAL 7
+#define IG_READ_IO_SPACE_EX 8
+#define IG_WRITE_IO_SPACE_EX 9
+#define IG_KSTACK_HELP 10
+#define IG_SET_THREAD 11
+#define IG_READ_MSR 12
+#define IG_WRITE_MSR 13
+
+typedef struct _tagPROCESSORINFO {
+ USHORT Processor; // current processor
+ USHORT NumberProcessors; // total number of processors
+} PROCESSORINFO, *PPROCESSORINFO;
+
+typedef struct _tagREADCONTROLSPACE {
+ USHORT Processor;
+ ULONG Address;
+ ULONG BufLen;
+ UCHAR Buf[1];
+} READCONTROLSPACE, *PREADCONTROLSPACE;
+
+typedef struct _tagIOSPACE {
+ ULONG Address;
+ ULONG Length; // 1, 2, or 4 bytes
+ ULONG Data;
+} IOSPACE, *PIOSPACE;
+
+typedef struct _tagIOSPACE_EX {
+ ULONG Address;
+ ULONG Length; // 1, 2, or 4 bytes
+ ULONG Data;
+ ULONG InterfaceType;
+ ULONG BusNumber;
+ ULONG AddressSpace;
+} IOSPACE_EX, *PIOSPACE_EX;
+
+typedef struct _tagPHYSICAL {
+ LARGE_INTEGER Address;
+ ULONG BufLen;
+ UCHAR Buf[1];
+} PHYSICAL, *PPHYSICAL;
+
+typedef struct _tagREAD_WRITE_MSR {
+ ULONG Msr;
+ LONGLONG Value;
+} READ_WRITE_MSR, *PREAD_WRITE_MSR;
+
+#ifdef __cplusplus
+#define CPPMOD extern "C"
+#else
+#define CPPMOD
+#endif
+
+
+#define DECLARE_API(s) \
+ CPPMOD VOID \
+ s( \
+ HANDLE hCurrentProcess, \
+ HANDLE hCurrentThread, \
+ ULONG dwCurrentPc, \
+ ULONG dwProcessor, \
+ PCSTR args \
+ )
+
+#ifndef NOEXTAPI
+
+#define dprintf (ExtensionApis.lpOutputRoutine)
+#define GetExpression (ExtensionApis.lpGetExpressionRoutine)
+#define GetSymbol (ExtensionApis.lpGetSymbolRoutine)
+#define Disassm (ExtensionApis.lpDisasmRoutine)
+#define CheckControlC (ExtensionApis.lpCheckControlCRoutine)
+#define ReadMemory (ExtensionApis.lpReadProcessMemoryRoutine)
+#define WriteMemory (ExtensionApis.lpWriteProcessMemoryRoutine)
+#define GetContext (ExtensionApis.lpGetThreadContextRoutine)
+#define SetContext (ExtensionApis.lpSetThreadContextRoutine)
+#define Ioctl (ExtensionApis.lpIoctlRoutine)
+#define StackTrace (ExtensionApis.lpStackTraceRoutine)
+
+
+#define GetKdContext(ppi) \
+ Ioctl( IG_KD_CONTEXT, (PVOID)ppi, sizeof(*ppi) )
+
+extern WINDBG_EXTENSION_APIS ExtensionApis;
+
+__inline VOID
+ReadControlSpace(
+ USHORT processor,
+ ULONG address,
+ PVOID buf,
+ ULONG size
+ )
+{
+ PREADCONTROLSPACE prc;
+ prc = (PREADCONTROLSPACE)LocalAlloc(LPTR, sizeof(*prc) + size );
+ ZeroMemory( prc->Buf, size );
+ prc->Processor = processor;
+ prc->Address = (ULONG)address;
+ prc->BufLen = size;
+ Ioctl( IG_READ_CONTROL_SPACE, (PVOID)prc, sizeof(*prc) + size );
+ CopyMemory( buf, prc->Buf, size );
+ LocalFree( prc );
+}
+
+__inline VOID
+ReadIoSpace(
+ ULONG address,
+ PULONG data,
+ PULONG size
+ )
+{
+ IOSPACE is;
+ is.Address = (ULONG)address;
+ is.Length = *size;
+ is.Data = 0;
+ Ioctl( IG_READ_IO_SPACE, (PVOID)&is, sizeof(is) );
+ *data = is.Data;
+ *size = is.Length;
+}
+
+__inline VOID
+WriteIoSpace(
+ ULONG address,
+ ULONG data,
+ PULONG size
+ )
+{
+ IOSPACE is;
+ is.Address = (ULONG)address;
+ is.Length = *size;
+ is.Data = data;
+ Ioctl( IG_WRITE_IO_SPACE, (PVOID)&is, sizeof(is) );
+ *size = is.Length;
+}
+
+__inline VOID
+ReadIoSpaceEx(
+ ULONG address,
+ PULONG data,
+ PULONG size,
+ ULONG interfacetype,
+ ULONG busnumber,
+ ULONG addressspace
+ )
+{
+ IOSPACE_EX is;
+ is.Address = (ULONG)address;
+ is.Length = *size;
+ is.Data = 0;
+ is.InterfaceType = interfacetype;
+ is.BusNumber = busnumber;
+ is.AddressSpace = addressspace;
+ Ioctl( IG_READ_IO_SPACE_EX, (PVOID)&is, sizeof(is) );
+ *data = is.Data;
+ *size = is.Length;
+}
+
+__inline VOID
+WriteIoSpaceEx(
+ ULONG address,
+ ULONG data,
+ PULONG size,
+ ULONG interfacetype,
+ ULONG busnumber,
+ ULONG addressspace
+ )
+{
+ IOSPACE_EX is;
+ is.Address = (ULONG)address;
+ is.Length = *size;
+ is.Data = data;
+ is.InterfaceType = interfacetype;
+ is.BusNumber = busnumber;
+ is.AddressSpace = addressspace;
+ Ioctl( IG_WRITE_IO_SPACE_EX, (PVOID)&is, sizeof(is) );
+ *size = is.Length;
+}
+
+__inline VOID
+ReadPhysical(
+ LARGE_INTEGER address,
+ PVOID buf,
+ ULONG size,
+ PULONG sizer
+ )
+{
+ PPHYSICAL phy;
+ phy = (PPHYSICAL)LocalAlloc(LPTR, sizeof(*phy) + size );
+ ZeroMemory( phy->Buf, size );
+ phy->Address = address;
+ phy->BufLen = size;
+ Ioctl( IG_READ_PHYSICAL, (PVOID)phy, sizeof(*phy) + size );
+ *sizer = phy->BufLen;
+ CopyMemory( buf, phy->Buf, *sizer );
+ LocalFree( phy );
+}
+
+__inline VOID
+WritePhysical(
+ LARGE_INTEGER address,
+ PVOID buf,
+ ULONG size,
+ PULONG sizew
+ )
+{
+ PPHYSICAL phy;
+ phy = (PPHYSICAL)LocalAlloc(LPTR, sizeof(*phy) + size );
+ ZeroMemory( phy->Buf, size );
+ phy->Address = address;
+ phy->BufLen = size;
+ CopyMemory( phy->Buf, buf, size );
+ Ioctl( IG_WRITE_PHYSICAL, (PVOID)phy, sizeof(*phy) + size );
+ *sizew = phy->BufLen;
+ LocalFree( phy );
+}
+
+__inline VOID
+SetThreadForOperation(
+ PULONG Thread
+ )
+{
+ Ioctl(IG_SET_THREAD, (PVOID)Thread, sizeof(ULONG));
+}
+
+__inline VOID
+ReadMsr(
+ ULONG MsrReg,
+ ULONGLONG *MsrValue
+ )
+{
+ PREAD_WRITE_MSR msr;
+ LARGE_INTEGER li;
+
+ msr = (PREAD_WRITE_MSR)LocalAlloc(LPTR, sizeof(*msr));
+ msr->Msr = MsrReg;
+ Ioctl( IG_READ_MSR, (PVOID)msr, sizeof(*msr) );
+
+ *MsrValue = msr->Value;
+ LocalFree( msr );
+}
+
+__inline VOID
+WriteMsr(
+ ULONG MsrReg,
+ ULONGLONG MsrValue
+ )
+{
+ PREAD_WRITE_MSR msr;
+
+ msr = (PREAD_WRITE_MSR)LocalAlloc(LPTR, sizeof(*msr));
+ msr->Msr = MsrReg;
+ msr->Value = MsrValue;
+ Ioctl( IG_WRITE_MSR, (PVOID)msr, sizeof(*msr) );
+ LocalFree( msr );
+}
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _WDBGEXTS_
diff --git a/public/sdk/inc/wfext.h b/public/sdk/inc/wfext.h
new file mode 100644
index 000000000..c7502065a
--- /dev/null
+++ b/public/sdk/inc/wfext.h
@@ -0,0 +1,185 @@
+/*****************************************************************************\
+* *
+* wfext.h - Windows File Manager Extensions definitions (Win32 variant) *
+* *
+* Version 3.10 *
+* *
+* Copyright (c) 1991-1996, Microsoft Corp. All rights reserved. *
+* *
+*******************************************************************************/
+
+#ifndef _INC_WFEXT
+#define _INC_WFEXT /* #defined if wfext.h has been included */
+
+#ifdef __cplusplus /* Assume C declaration for C++ */
+extern "C" {
+#endif /* __cplusplus */
+
+#define MENU_TEXT_LEN 40
+
+#define FMMENU_FIRST 1
+#define FMMENU_LAST 99
+
+#define FMEVENT_LOAD 100
+#define FMEVENT_UNLOAD 101
+#define FMEVENT_INITMENU 102
+#define FMEVENT_USER_REFRESH 103
+#define FMEVENT_SELCHANGE 104
+#define FMEVENT_TOOLBARLOAD 105
+#define FMEVENT_HELPSTRING 106
+#define FMEVENT_HELPMENUITEM 107
+
+#define FMFOCUS_DIR 1
+#define FMFOCUS_TREE 2
+#define FMFOCUS_DRIVES 3
+#define FMFOCUS_SEARCH 4
+
+#define FM_GETFOCUS (WM_USER + 0x0200)
+#define FM_GETSELCOUNT (WM_USER + 0x0202)
+#define FM_GETSELCOUNTLFN (WM_USER + 0x0203) /* LFN versions are odd */
+#define FM_REFRESH_WINDOWS (WM_USER + 0x0206)
+#define FM_RELOAD_EXTENSIONS (WM_USER + 0x0207)
+
+#define FM_GETDRIVEINFOA (WM_USER + 0x0201)
+#define FM_GETFILESELA (WM_USER + 0x0204)
+#define FM_GETFILESELLFNA (WM_USER + 0x0205) /* LFN versions are odd */
+
+#define FM_GETDRIVEINFOW (WM_USER + 0x0211)
+#define FM_GETFILESELW (WM_USER + 0x0214)
+#define FM_GETFILESELLFNW (WM_USER + 0x0215) /* LFN versions are odd */
+
+#ifdef UNICODE
+#define FM_GETDRIVEINFO FM_GETDRIVEINFOW
+#define FM_GETFILESEL FM_GETFILESELW
+#define FM_GETFILESELLFN FM_GETFILESELLFNW
+#else
+#define FM_GETDRIVEINFO FM_GETDRIVEINFOA
+#define FM_GETFILESEL FM_GETFILESELA
+#define FM_GETFILESELLFN FM_GETFILESELLFNA
+#endif
+
+
+typedef struct _FMS_GETFILESELA {
+ FILETIME ftTime;
+ DWORD dwSize;
+ BYTE bAttr;
+ CHAR szName[260]; // always fully qualified
+} FMS_GETFILESELA, FAR *LPFMS_GETFILESELA;
+
+typedef struct _FMS_GETFILESELW {
+ FILETIME ftTime ;
+ DWORD dwSize;
+ BYTE bAttr;
+ WCHAR szName[260]; // always fully qualified
+} FMS_GETFILESELW, FAR *LPFMS_GETFILESELW;
+
+#ifdef UNICODE
+#define FMS_GETFILESEL FMS_GETFILESELW
+#define LPFMS_GETFILESEL LPFMS_GETFILESELW
+#else
+#define FMS_GETFILESEL FMS_GETFILESELA
+#define LPFMS_GETFILESEL LPFMS_GETFILESELA
+#endif
+
+
+typedef struct _FMS_GETDRIVEINFOA { // for drive
+ DWORD dwTotalSpace;
+ DWORD dwFreeSpace;
+ CHAR szPath[260]; // current directory
+ CHAR szVolume[14]; // volume label
+ CHAR szShare[128]; // if this is a net drive
+} FMS_GETDRIVEINFOA, FAR *LPFMS_GETDRIVEINFOA;
+
+typedef struct _FMS_GETDRIVEINFOW { // for drive
+ DWORD dwTotalSpace;
+ DWORD dwFreeSpace;
+ WCHAR szPath[260]; // current directory
+ WCHAR szVolume[14]; // volume label
+ WCHAR szShare[128]; // if this is a net drive
+} FMS_GETDRIVEINFOW, FAR *LPFMS_GETDRIVEINFOW;
+
+#ifdef UNICODE
+#define FMS_GETDRIVEINFO FMS_GETDRIVEINFOW
+#define LPFMS_GETDRIVEINFO LPFMS_GETDRIVEINFOW
+#else
+#define FMS_GETDRIVEINFO FMS_GETDRIVEINFOA
+#define LPFMS_GETDRIVEINFO LPFMS_GETDRIVEINFOA
+#endif
+
+
+typedef struct _FMS_LOADA {
+ DWORD dwSize; // for version checks
+ CHAR szMenuName[MENU_TEXT_LEN]; // output
+ HMENU hMenu; // output
+ UINT wMenuDelta; // input
+} FMS_LOADA, FAR *LPFMS_LOADA;
+
+typedef struct _FMS_LOADW {
+ DWORD dwSize; // for version checks
+ WCHAR szMenuName[MENU_TEXT_LEN]; // output
+ HMENU hMenu; // output
+ UINT wMenuDelta; // input
+} FMS_LOADW, FAR *LPFMS_LOADW;
+
+#ifdef UNICODE
+#define FMS_LOAD FMS_LOADW
+#define LPFMS_LOAD LPFMS_LOADW
+#else
+#define FMS_LOAD FMS_LOADA
+#define LPFMS_LOAD LPFMS_LOADA
+#endif
+
+
+// Toolbar definitions
+
+typedef struct tagEXT_BUTTON {
+ WORD idCommand; /* menu command to trigger */
+ WORD idsHelp; /* help string ID */
+ WORD fsStyle; /* button style */
+} EXT_BUTTON, FAR *LPEXT_BUTTON;
+
+typedef struct tagFMS_TOOLBARLOAD {
+ DWORD dwSize; /* for version checks */
+ LPEXT_BUTTON lpButtons; /* output */
+ WORD cButtons; /* output, 0==>no buttons */
+ WORD cBitmaps; /* number of non-sep buttons */
+ WORD idBitmap; /* output */
+ HBITMAP hBitmap; /* output if idBitmap==0 */
+} FMS_TOOLBARLOAD, FAR *LPFMS_TOOLBARLOAD;
+
+typedef struct tagFMS_HELPSTRINGA {
+ INT idCommand; /* input, -1==>the menu was selected */
+ HMENU hMenu; /* input, the extensions menu */
+ CHAR szHelp[128]; /* output, the help string */
+} FMS_HELPSTRINGA, FAR *LPFMS_HELPSTRINGA;
+
+typedef struct tagFMS_HELPSTRINGW {
+ INT idCommand; /* input, -1==>the menu was selected */
+ HMENU hMenu; /* input, the extensions menu */
+ WCHAR szHelp[128]; /* output, the help string */
+} FMS_HELPSTRINGW, FAR *LPFMS_HELPSTRINGW;
+
+#ifdef UNICODE
+#define FMS_HELPSTRING FMS_HELPSTRINGW
+#define LPFMS_HELPSTRING LPFMS_HELPSTRINGW
+#else
+#define FMS_HELPSTRING FMS_HELPSTRINGA
+#define LPFMS_HELPSTRING LPFMS_HELPSTRINGA
+#endif
+
+
+typedef DWORD (APIENTRY *FM_EXT_PROC)(HWND, WORD, LONG);
+typedef DWORD (APIENTRY *FM_UNDELETE_PROC)(HWND, LPTSTR);
+
+#ifdef UNICODE
+LONG WINAPI FMExtensionProcW(HWND hwnd, WORD wEvent, LONG lParam);
+#else
+LONG WINAPI FMExtensionProc(HWND hwnd, WORD wEvent, LONG lParam);
+#endif
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* _INC_WFEXT */
+
diff --git a/public/sdk/inc/winbase.h b/public/sdk/inc/winbase.h
new file mode 100644
index 000000000..872d91382
--- /dev/null
+++ b/public/sdk/inc/winbase.h
@@ -0,0 +1,7745 @@
+/************************************************************************
+* *
+* winbase.h -- This module defines the 32-Bit Windows Base APIs *
+* *
+* Copyright (c) 1990-1996, Microsoft Corp. All rights reserved. *
+* *
+************************************************************************/
+#ifndef _WINBASE_
+#define _WINBASE_
+
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+
+#if !defined(_ADVAPI32_)
+#define WINADVAPI DECLSPEC_IMPORT
+#else
+#define WINADVAPI
+#endif
+
+#if !defined(_KERNEL32_)
+#define WINBASEAPI DECLSPEC_IMPORT
+#else
+#define WINBASEAPI
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Compatibility macros
+ */
+
+#define DefineHandleTable(w) ((w),TRUE)
+#define LimitEmsPages(dw)
+#define SetSwapAreaSize(w) (w)
+#define LockSegment(w) GlobalFix((HANDLE)(w))
+#define UnlockSegment(w) GlobalUnfix((HANDLE)(w))
+#define GetCurrentTime() GetTickCount()
+
+#define Yield()
+
+#define INVALID_HANDLE_VALUE (HANDLE)-1
+#define INVALID_FILE_SIZE (DWORD)0xFFFFFFFF
+
+#define FILE_BEGIN 0
+#define FILE_CURRENT 1
+#define FILE_END 2
+
+#define TIME_ZONE_ID_INVALID (DWORD)0xFFFFFFFF
+
+#define WAIT_FAILED (DWORD)0xFFFFFFFF
+#define WAIT_OBJECT_0 ((STATUS_WAIT_0 ) + 0 )
+
+#define WAIT_ABANDONED ((STATUS_ABANDONED_WAIT_0 ) + 0 )
+#define WAIT_ABANDONED_0 ((STATUS_ABANDONED_WAIT_0 ) + 0 )
+
+#define WAIT_TIMEOUT STATUS_TIMEOUT
+#define WAIT_IO_COMPLETION STATUS_USER_APC
+#define STILL_ACTIVE STATUS_PENDING
+#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION
+#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT
+#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT
+#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP
+#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED
+#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND
+#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO
+#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT
+#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION
+#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW
+#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK
+#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW
+#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO
+#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW
+#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION
+#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR
+#define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION
+#define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION
+#define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW
+#define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION
+#define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION
+#define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE
+#define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT
+#define MoveMemory RtlMoveMemory
+#define CopyMemory RtlCopyMemory
+#define FillMemory RtlFillMemory
+#define ZeroMemory RtlZeroMemory
+
+//
+// File creation flags must start at the high end since they
+// are combined with the attributes
+//
+
+#define FILE_FLAG_WRITE_THROUGH 0x80000000
+#define FILE_FLAG_OVERLAPPED 0x40000000
+#define FILE_FLAG_NO_BUFFERING 0x20000000
+#define FILE_FLAG_RANDOM_ACCESS 0x10000000
+#define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000
+#define FILE_FLAG_DELETE_ON_CLOSE 0x04000000
+#define FILE_FLAG_BACKUP_SEMANTICS 0x02000000
+#define FILE_FLAG_POSIX_SEMANTICS 0x01000000
+
+#define CREATE_NEW 1
+#define CREATE_ALWAYS 2
+#define OPEN_EXISTING 3
+#define OPEN_ALWAYS 4
+#define TRUNCATE_EXISTING 5
+
+#if(_WIN32_WINNT >= 0x0400)
+//
+// Define possible return codes from the CopyFileEx callback routine
+//
+
+#define PROGRESS_CONTINUE 0
+#define PROGRESS_CANCEL 1
+#define PROGRESS_STOP 2
+#define PROGRESS_QUIET 3
+
+//
+// Define CopyFileEx callback routine state change values
+//
+
+#define CALLBACK_CHUNK_FINISHED 0x00000000
+#define CALLBACK_STREAM_SWITCH 0x00000001
+
+//
+// Define CopyFileEx option flags
+//
+
+#define COPY_FILE_FAIL_IF_EXISTS 0x00000001
+#define COPY_FILE_RESTARTABLE 0x00000002
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+//
+// Define the NamedPipe definitions
+//
+
+
+//
+// Define the dwOpenMode values for CreateNamedPipe
+//
+
+#define PIPE_ACCESS_INBOUND 0x00000001
+#define PIPE_ACCESS_OUTBOUND 0x00000002
+#define PIPE_ACCESS_DUPLEX 0x00000003
+
+//
+// Define the Named Pipe End flags for GetNamedPipeInfo
+//
+
+#define PIPE_CLIENT_END 0x00000000
+#define PIPE_SERVER_END 0x00000001
+
+//
+// Define the dwPipeMode values for CreateNamedPipe
+//
+
+#define PIPE_WAIT 0x00000000
+#define PIPE_NOWAIT 0x00000001
+#define PIPE_READMODE_BYTE 0x00000000
+#define PIPE_READMODE_MESSAGE 0x00000002
+#define PIPE_TYPE_BYTE 0x00000000
+#define PIPE_TYPE_MESSAGE 0x00000004
+
+//
+// Define the well known values for CreateNamedPipe nMaxInstances
+//
+
+#define PIPE_UNLIMITED_INSTANCES 255
+
+//
+// Define the Security Quality of Service bits to be passed
+// into CreateFile
+//
+
+#define SECURITY_ANONYMOUS ( SecurityAnonymous << 16 )
+#define SECURITY_IDENTIFICATION ( SecurityIdentification << 16 )
+#define SECURITY_IMPERSONATION ( SecurityImpersonation << 16 )
+#define SECURITY_DELEGATION ( SecurityDelegation << 16 )
+
+#define SECURITY_CONTEXT_TRACKING 0x00040000
+#define SECURITY_EFFECTIVE_ONLY 0x00080000
+
+#define SECURITY_SQOS_PRESENT 0x00100000
+#define SECURITY_VALID_SQOS_FLAGS 0x001F0000
+
+//
+// File structures
+//
+
+typedef struct _OVERLAPPED {
+ DWORD Internal;
+ DWORD InternalHigh;
+ DWORD Offset;
+ DWORD OffsetHigh;
+ HANDLE hEvent;
+} OVERLAPPED, *LPOVERLAPPED;
+
+typedef struct _SECURITY_ATTRIBUTES {
+ DWORD nLength;
+ LPVOID lpSecurityDescriptor;
+ BOOL bInheritHandle;
+} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
+
+typedef struct _PROCESS_INFORMATION {
+ HANDLE hProcess;
+ HANDLE hThread;
+ DWORD dwProcessId;
+ DWORD dwThreadId;
+} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
+
+//
+// File System time stamps are represented with the following structure:
+//
+
+typedef struct _FILETIME {
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+} FILETIME, *PFILETIME, *LPFILETIME;
+
+//
+// System time is represented with the following structure:
+//
+
+typedef struct _SYSTEMTIME {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
+
+typedef DWORD (WINAPI *PTHREAD_START_ROUTINE)(
+ LPVOID lpThreadParameter
+ );
+typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
+
+#if(_WIN32_WINNT >= 0x0400)
+typedef VOID (WINAPI *PFIBER_START_ROUTINE)(
+ LPVOID lpFiberParameter
+ );
+typedef PFIBER_START_ROUTINE LPFIBER_START_ROUTINE;
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
+typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION;
+typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;
+
+typedef RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG;
+typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
+typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG;
+
+#ifdef _X86_
+typedef PLDT_ENTRY LPLDT_ENTRY;
+#else
+typedef LPVOID LPLDT_ENTRY;
+#endif
+
+#define MUTEX_MODIFY_STATE MUTANT_QUERY_STATE
+#define MUTEX_ALL_ACCESS MUTANT_ALL_ACCESS
+
+//
+// Serial provider type.
+//
+
+#define SP_SERIALCOMM ((DWORD)0x00000001)
+
+//
+// Provider SubTypes
+//
+
+#define PST_UNSPECIFIED ((DWORD)0x00000000)
+#define PST_RS232 ((DWORD)0x00000001)
+#define PST_PARALLELPORT ((DWORD)0x00000002)
+#define PST_RS422 ((DWORD)0x00000003)
+#define PST_RS423 ((DWORD)0x00000004)
+#define PST_RS449 ((DWORD)0x00000005)
+#define PST_MODEM ((DWORD)0x00000006)
+#define PST_FAX ((DWORD)0x00000021)
+#define PST_SCANNER ((DWORD)0x00000022)
+#define PST_NETWORK_BRIDGE ((DWORD)0x00000100)
+#define PST_LAT ((DWORD)0x00000101)
+#define PST_TCPIP_TELNET ((DWORD)0x00000102)
+#define PST_X25 ((DWORD)0x00000103)
+
+
+//
+// Provider capabilities flags.
+//
+
+#define PCF_DTRDSR ((DWORD)0x0001)
+#define PCF_RTSCTS ((DWORD)0x0002)
+#define PCF_RLSD ((DWORD)0x0004)
+#define PCF_PARITY_CHECK ((DWORD)0x0008)
+#define PCF_XONXOFF ((DWORD)0x0010)
+#define PCF_SETXCHAR ((DWORD)0x0020)
+#define PCF_TOTALTIMEOUTS ((DWORD)0x0040)
+#define PCF_INTTIMEOUTS ((DWORD)0x0080)
+#define PCF_SPECIALCHARS ((DWORD)0x0100)
+#define PCF_16BITMODE ((DWORD)0x0200)
+
+//
+// Comm provider settable parameters.
+//
+
+#define SP_PARITY ((DWORD)0x0001)
+#define SP_BAUD ((DWORD)0x0002)
+#define SP_DATABITS ((DWORD)0x0004)
+#define SP_STOPBITS ((DWORD)0x0008)
+#define SP_HANDSHAKING ((DWORD)0x0010)
+#define SP_PARITY_CHECK ((DWORD)0x0020)
+#define SP_RLSD ((DWORD)0x0040)
+
+//
+// Settable baud rates in the provider.
+//
+
+#define BAUD_075 ((DWORD)0x00000001)
+#define BAUD_110 ((DWORD)0x00000002)
+#define BAUD_134_5 ((DWORD)0x00000004)
+#define BAUD_150 ((DWORD)0x00000008)
+#define BAUD_300 ((DWORD)0x00000010)
+#define BAUD_600 ((DWORD)0x00000020)
+#define BAUD_1200 ((DWORD)0x00000040)
+#define BAUD_1800 ((DWORD)0x00000080)
+#define BAUD_2400 ((DWORD)0x00000100)
+#define BAUD_4800 ((DWORD)0x00000200)
+#define BAUD_7200 ((DWORD)0x00000400)
+#define BAUD_9600 ((DWORD)0x00000800)
+#define BAUD_14400 ((DWORD)0x00001000)
+#define BAUD_19200 ((DWORD)0x00002000)
+#define BAUD_38400 ((DWORD)0x00004000)
+#define BAUD_56K ((DWORD)0x00008000)
+#define BAUD_128K ((DWORD)0x00010000)
+#define BAUD_115200 ((DWORD)0x00020000)
+#define BAUD_57600 ((DWORD)0x00040000)
+#define BAUD_USER ((DWORD)0x10000000)
+
+//
+// Settable Data Bits
+//
+
+#define DATABITS_5 ((WORD)0x0001)
+#define DATABITS_6 ((WORD)0x0002)
+#define DATABITS_7 ((WORD)0x0004)
+#define DATABITS_8 ((WORD)0x0008)
+#define DATABITS_16 ((WORD)0x0010)
+#define DATABITS_16X ((WORD)0x0020)
+
+//
+// Settable Stop and Parity bits.
+//
+
+#define STOPBITS_10 ((WORD)0x0001)
+#define STOPBITS_15 ((WORD)0x0002)
+#define STOPBITS_20 ((WORD)0x0004)
+#define PARITY_NONE ((WORD)0x0100)
+#define PARITY_ODD ((WORD)0x0200)
+#define PARITY_EVEN ((WORD)0x0400)
+#define PARITY_MARK ((WORD)0x0800)
+#define PARITY_SPACE ((WORD)0x1000)
+
+typedef struct _COMMPROP {
+ WORD wPacketLength;
+ WORD wPacketVersion;
+ DWORD dwServiceMask;
+ DWORD dwReserved1;
+ DWORD dwMaxTxQueue;
+ DWORD dwMaxRxQueue;
+ DWORD dwMaxBaud;
+ DWORD dwProvSubType;
+ DWORD dwProvCapabilities;
+ DWORD dwSettableParams;
+ DWORD dwSettableBaud;
+ WORD wSettableData;
+ WORD wSettableStopParity;
+ DWORD dwCurrentTxQueue;
+ DWORD dwCurrentRxQueue;
+ DWORD dwProvSpec1;
+ DWORD dwProvSpec2;
+ WCHAR wcProvChar[1];
+} COMMPROP,*LPCOMMPROP;
+
+//
+// Set dwProvSpec1 to COMMPROP_INITIALIZED to indicate that wPacketLength
+// is valid before a call to GetCommProperties().
+//
+#define COMMPROP_INITIALIZED ((DWORD)0xE73CF52E)
+
+typedef struct _COMSTAT {
+ DWORD fCtsHold : 1;
+ DWORD fDsrHold : 1;
+ DWORD fRlsdHold : 1;
+ DWORD fXoffHold : 1;
+ DWORD fXoffSent : 1;
+ DWORD fEof : 1;
+ DWORD fTxim : 1;
+ DWORD fReserved : 25;
+ DWORD cbInQue;
+ DWORD cbOutQue;
+} COMSTAT, *LPCOMSTAT;
+
+//
+// DTR Control Flow Values.
+//
+#define DTR_CONTROL_DISABLE 0x00
+#define DTR_CONTROL_ENABLE 0x01
+#define DTR_CONTROL_HANDSHAKE 0x02
+
+//
+// RTS Control Flow Values
+//
+#define RTS_CONTROL_DISABLE 0x00
+#define RTS_CONTROL_ENABLE 0x01
+#define RTS_CONTROL_HANDSHAKE 0x02
+#define RTS_CONTROL_TOGGLE 0x03
+
+typedef struct _DCB {
+ DWORD DCBlength; /* sizeof(DCB) */
+ DWORD BaudRate; /* Baudrate at which running */
+ DWORD fBinary: 1; /* Binary Mode (skip EOF check) */
+ DWORD fParity: 1; /* Enable parity checking */
+ DWORD fOutxCtsFlow:1; /* CTS handshaking on output */
+ DWORD fOutxDsrFlow:1; /* DSR handshaking on output */
+ DWORD fDtrControl:2; /* DTR Flow control */
+ DWORD fDsrSensitivity:1; /* DSR Sensitivity */
+ DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */
+ DWORD fOutX: 1; /* Enable output X-ON/X-OFF */
+ DWORD fInX: 1; /* Enable input X-ON/X-OFF */
+ DWORD fErrorChar: 1; /* Enable Err Replacement */
+ DWORD fNull: 1; /* Enable Null stripping */
+ DWORD fRtsControl:2; /* Rts Flow control */
+ DWORD fAbortOnError:1; /* Abort all reads and writes on Error */
+ DWORD fDummy2:17; /* Reserved */
+ WORD wReserved; /* Not currently used */
+ WORD XonLim; /* Transmit X-ON threshold */
+ WORD XoffLim; /* Transmit X-OFF threshold */
+ BYTE ByteSize; /* Number of bits/byte, 4-8 */
+ BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */
+ BYTE StopBits; /* 0,1,2 = 1, 1.5, 2 */
+ char XonChar; /* Tx and Rx X-ON character */
+ char XoffChar; /* Tx and Rx X-OFF character */
+ char ErrorChar; /* Error replacement char */
+ char EofChar; /* End of Input character */
+ char EvtChar; /* Received Event character */
+ WORD wReserved1; /* Fill for now. */
+} DCB, *LPDCB;
+
+typedef struct _COMMTIMEOUTS {
+ DWORD ReadIntervalTimeout; /* Maximum time between read chars. */
+ DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */
+ DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */
+ DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */
+ DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */
+} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
+
+typedef struct _COMMCONFIG {
+ DWORD dwSize; /* Size of the entire struct */
+ WORD wVersion; /* version of the structure */
+ WORD wReserved; /* alignment */
+ DCB dcb; /* device control block */
+ DWORD dwProviderSubType; /* ordinal value for identifying
+ provider-defined data structure format*/
+ DWORD dwProviderOffset; /* Specifies the offset of provider specific
+ data field in bytes from the start */
+ DWORD dwProviderSize; /* size of the provider-specific data field */
+ WCHAR wcProviderData[1]; /* provider-specific data */
+} COMMCONFIG,*LPCOMMCONFIG;
+
+typedef struct _SYSTEM_INFO {
+ union {
+ DWORD dwOemId; // Obsolete field...do not use
+ struct {
+ WORD wProcessorArchitecture;
+ WORD wReserved;
+ };
+ };
+ DWORD dwPageSize;
+ LPVOID lpMinimumApplicationAddress;
+ LPVOID lpMaximumApplicationAddress;
+ DWORD dwActiveProcessorMask;
+ DWORD dwNumberOfProcessors;
+ DWORD dwProcessorType;
+ DWORD dwAllocationGranularity;
+ WORD wProcessorLevel;
+ WORD wProcessorRevision;
+} SYSTEM_INFO, *LPSYSTEM_INFO;
+
+//
+//
+
+
+#define FreeModule(hLibModule) FreeLibrary((hLibModule))
+#define MakeProcInstance(lpProc,hInstance) (lpProc)
+#define FreeProcInstance(lpProc) (lpProc)
+
+/* Global Memory Flags */
+#define GMEM_FIXED 0x0000
+#define GMEM_MOVEABLE 0x0002
+#define GMEM_NOCOMPACT 0x0010
+#define GMEM_NODISCARD 0x0020
+#define GMEM_ZEROINIT 0x0040
+#define GMEM_MODIFY 0x0080
+#define GMEM_DISCARDABLE 0x0100
+#define GMEM_NOT_BANKED 0x1000
+#define GMEM_SHARE 0x2000
+#define GMEM_DDESHARE 0x2000
+#define GMEM_NOTIFY 0x4000
+#define GMEM_LOWER GMEM_NOT_BANKED
+#define GMEM_VALID_FLAGS 0x7F72
+#define GMEM_INVALID_HANDLE 0x8000
+
+#define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT)
+#define GPTR (GMEM_FIXED | GMEM_ZEROINIT)
+
+#define GlobalLRUNewest( h ) (HANDLE)(h)
+#define GlobalLRUOldest( h ) (HANDLE)(h)
+#define GlobalDiscard( h ) GlobalReAlloc( (h), 0, GMEM_MOVEABLE )
+
+/* Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE) */
+#define GMEM_DISCARDED 0x4000
+#define GMEM_LOCKCOUNT 0x00FF
+
+typedef struct _MEMORYSTATUS {
+ DWORD dwLength;
+ DWORD dwMemoryLoad;
+ DWORD dwTotalPhys;
+ DWORD dwAvailPhys;
+ DWORD dwTotalPageFile;
+ DWORD dwAvailPageFile;
+ DWORD dwTotalVirtual;
+ DWORD dwAvailVirtual;
+} MEMORYSTATUS, *LPMEMORYSTATUS;
+
+/* Local Memory Flags */
+#define LMEM_FIXED 0x0000
+#define LMEM_MOVEABLE 0x0002
+#define LMEM_NOCOMPACT 0x0010
+#define LMEM_NODISCARD 0x0020
+#define LMEM_ZEROINIT 0x0040
+#define LMEM_MODIFY 0x0080
+#define LMEM_DISCARDABLE 0x0F00
+#define LMEM_VALID_FLAGS 0x0F72
+#define LMEM_INVALID_HANDLE 0x8000
+
+#define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT)
+#define LPTR (LMEM_FIXED | LMEM_ZEROINIT)
+
+#define NONZEROLHND (LMEM_MOVEABLE)
+#define NONZEROLPTR (LMEM_FIXED)
+
+#define LocalDiscard( h ) LocalReAlloc( (h), 0, LMEM_MOVEABLE )
+
+/* Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE) */
+#define LMEM_DISCARDED 0x4000
+#define LMEM_LOCKCOUNT 0x00FF
+
+//
+// dwCreationFlag values
+//
+
+#define DEBUG_PROCESS 0x00000001
+#define DEBUG_ONLY_THIS_PROCESS 0x00000002
+
+#define CREATE_SUSPENDED 0x00000004
+
+#define DETACHED_PROCESS 0x00000008
+
+#define CREATE_NEW_CONSOLE 0x00000010
+
+#define NORMAL_PRIORITY_CLASS 0x00000020
+#define IDLE_PRIORITY_CLASS 0x00000040
+#define HIGH_PRIORITY_CLASS 0x00000080
+#define REALTIME_PRIORITY_CLASS 0x00000100
+
+#define CREATE_NEW_PROCESS_GROUP 0x00000200
+#define CREATE_UNICODE_ENVIRONMENT 0x00000400
+
+#define CREATE_SEPARATE_WOW_VDM 0x00000800
+#define CREATE_SHARED_WOW_VDM 0x00001000
+#define CREATE_FORCEDOS 0x00002000
+
+#define CREATE_DEFAULT_ERROR_MODE 0x04000000
+#define CREATE_NO_WINDOW 0x08000000
+
+#define PROFILE_USER 0x10000000
+#define PROFILE_KERNEL 0x20000000
+#define PROFILE_SERVER 0x40000000
+
+#define THREAD_PRIORITY_LOWEST THREAD_BASE_PRIORITY_MIN
+#define THREAD_PRIORITY_BELOW_NORMAL (THREAD_PRIORITY_LOWEST+1)
+#define THREAD_PRIORITY_NORMAL 0
+#define THREAD_PRIORITY_HIGHEST THREAD_BASE_PRIORITY_MAX
+#define THREAD_PRIORITY_ABOVE_NORMAL (THREAD_PRIORITY_HIGHEST-1)
+#define THREAD_PRIORITY_ERROR_RETURN (MAXLONG)
+
+#define THREAD_PRIORITY_TIME_CRITICAL THREAD_BASE_PRIORITY_LOWRT
+#define THREAD_PRIORITY_IDLE THREAD_BASE_PRIORITY_IDLE
+
+//
+// Debug APIs
+//
+#define EXCEPTION_DEBUG_EVENT 1
+#define CREATE_THREAD_DEBUG_EVENT 2
+#define CREATE_PROCESS_DEBUG_EVENT 3
+#define EXIT_THREAD_DEBUG_EVENT 4
+#define EXIT_PROCESS_DEBUG_EVENT 5
+#define LOAD_DLL_DEBUG_EVENT 6
+#define UNLOAD_DLL_DEBUG_EVENT 7
+#define OUTPUT_DEBUG_STRING_EVENT 8
+#define RIP_EVENT 9
+
+typedef struct _EXCEPTION_DEBUG_INFO {
+ EXCEPTION_RECORD ExceptionRecord;
+ DWORD dwFirstChance;
+} EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO;
+
+typedef struct _CREATE_THREAD_DEBUG_INFO {
+ HANDLE hThread;
+ LPVOID lpThreadLocalBase;
+ LPTHREAD_START_ROUTINE lpStartAddress;
+} CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO;
+
+typedef struct _CREATE_PROCESS_DEBUG_INFO {
+ HANDLE hFile;
+ HANDLE hProcess;
+ HANDLE hThread;
+ LPVOID lpBaseOfImage;
+ DWORD dwDebugInfoFileOffset;
+ DWORD nDebugInfoSize;
+ LPVOID lpThreadLocalBase;
+ LPTHREAD_START_ROUTINE lpStartAddress;
+ LPVOID lpImageName;
+ WORD fUnicode;
+} CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
+
+typedef struct _EXIT_THREAD_DEBUG_INFO {
+ DWORD dwExitCode;
+} EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO;
+
+typedef struct _EXIT_PROCESS_DEBUG_INFO {
+ DWORD dwExitCode;
+} EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO;
+
+typedef struct _LOAD_DLL_DEBUG_INFO {
+ HANDLE hFile;
+ LPVOID lpBaseOfDll;
+ DWORD dwDebugInfoFileOffset;
+ DWORD nDebugInfoSize;
+ LPVOID lpImageName;
+ WORD fUnicode;
+} LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
+
+typedef struct _UNLOAD_DLL_DEBUG_INFO {
+ LPVOID lpBaseOfDll;
+} UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO;
+
+typedef struct _OUTPUT_DEBUG_STRING_INFO {
+ LPSTR lpDebugStringData;
+ WORD fUnicode;
+ WORD nDebugStringLength;
+} OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO;
+
+typedef struct _RIP_INFO {
+ DWORD dwError;
+ DWORD dwType;
+} RIP_INFO, *LPRIP_INFO;
+
+
+typedef struct _DEBUG_EVENT {
+ DWORD dwDebugEventCode;
+ DWORD dwProcessId;
+ DWORD dwThreadId;
+ union {
+ EXCEPTION_DEBUG_INFO Exception;
+ CREATE_THREAD_DEBUG_INFO CreateThread;
+ CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
+ EXIT_THREAD_DEBUG_INFO ExitThread;
+ EXIT_PROCESS_DEBUG_INFO ExitProcess;
+ LOAD_DLL_DEBUG_INFO LoadDll;
+ UNLOAD_DLL_DEBUG_INFO UnloadDll;
+ OUTPUT_DEBUG_STRING_INFO DebugString;
+ RIP_INFO RipInfo;
+ } u;
+} DEBUG_EVENT, *LPDEBUG_EVENT;
+
+#if !defined(MIDL_PASS)
+typedef PCONTEXT LPCONTEXT;
+typedef PEXCEPTION_RECORD LPEXCEPTION_RECORD;
+typedef PEXCEPTION_POINTERS LPEXCEPTION_POINTERS;
+#endif
+
+#define DRIVE_UNKNOWN 0
+#define DRIVE_NO_ROOT_DIR 1
+#define DRIVE_REMOVABLE 2
+#define DRIVE_FIXED 3
+#define DRIVE_REMOTE 4
+#define DRIVE_CDROM 5
+#define DRIVE_RAMDISK 6
+
+
+#define GetFreeSpace(w) (0x100000L)
+
+
+#define FILE_TYPE_UNKNOWN 0x0000
+#define FILE_TYPE_DISK 0x0001
+#define FILE_TYPE_CHAR 0x0002
+#define FILE_TYPE_PIPE 0x0003
+#define FILE_TYPE_REMOTE 0x8000
+
+
+#define STD_INPUT_HANDLE (DWORD)-10
+#define STD_OUTPUT_HANDLE (DWORD)-11
+#define STD_ERROR_HANDLE (DWORD)-12
+
+#define NOPARITY 0
+#define ODDPARITY 1
+#define EVENPARITY 2
+#define MARKPARITY 3
+#define SPACEPARITY 4
+
+#define ONESTOPBIT 0
+#define ONE5STOPBITS 1
+#define TWOSTOPBITS 2
+
+#define IGNORE 0 // Ignore signal
+#define INFINITE 0xFFFFFFFF // Infinite timeout
+
+//
+// Baud rates at which the communication device operates
+//
+
+#define CBR_110 110
+#define CBR_300 300
+#define CBR_600 600
+#define CBR_1200 1200
+#define CBR_2400 2400
+#define CBR_4800 4800
+#define CBR_9600 9600
+#define CBR_14400 14400
+#define CBR_19200 19200
+#define CBR_38400 38400
+#define CBR_56000 56000
+#define CBR_57600 57600
+#define CBR_115200 115200
+#define CBR_128000 128000
+#define CBR_256000 256000
+
+//
+// Error Flags
+//
+
+#define CE_RXOVER 0x0001 // Receive Queue overflow
+#define CE_OVERRUN 0x0002 // Receive Overrun Error
+#define CE_RXPARITY 0x0004 // Receive Parity Error
+#define CE_FRAME 0x0008 // Receive Framing error
+#define CE_BREAK 0x0010 // Break Detected
+#define CE_TXFULL 0x0100 // TX Queue is full
+#define CE_PTO 0x0200 // LPTx Timeout
+#define CE_IOE 0x0400 // LPTx I/O Error
+#define CE_DNS 0x0800 // LPTx Device not selected
+#define CE_OOP 0x1000 // LPTx Out-Of-Paper
+#define CE_MODE 0x8000 // Requested mode unsupported
+
+#define IE_BADID (-1) // Invalid or unsupported id
+#define IE_OPEN (-2) // Device Already Open
+#define IE_NOPEN (-3) // Device Not Open
+#define IE_MEMORY (-4) // Unable to allocate queues
+#define IE_DEFAULT (-5) // Error in default parameters
+#define IE_HARDWARE (-10) // Hardware Not Present
+#define IE_BYTESIZE (-11) // Illegal Byte Size
+#define IE_BAUDRATE (-12) // Unsupported BaudRate
+
+//
+// Events
+//
+
+#define EV_RXCHAR 0x0001 // Any Character received
+#define EV_RXFLAG 0x0002 // Received certain character
+#define EV_TXEMPTY 0x0004 // Transmitt Queue Empty
+#define EV_CTS 0x0008 // CTS changed state
+#define EV_DSR 0x0010 // DSR changed state
+#define EV_RLSD 0x0020 // RLSD changed state
+#define EV_BREAK 0x0040 // BREAK received
+#define EV_ERR 0x0080 // Line status error occurred
+#define EV_RING 0x0100 // Ring signal detected
+#define EV_PERR 0x0200 // Printer error occured
+#define EV_RX80FULL 0x0400 // Receive buffer is 80 percent full
+#define EV_EVENT1 0x0800 // Provider specific event 1
+#define EV_EVENT2 0x1000 // Provider specific event 2
+
+//
+// Escape Functions
+//
+
+#define SETXOFF 1 // Simulate XOFF received
+#define SETXON 2 // Simulate XON received
+#define SETRTS 3 // Set RTS high
+#define CLRRTS 4 // Set RTS low
+#define SETDTR 5 // Set DTR high
+#define CLRDTR 6 // Set DTR low
+#define RESETDEV 7 // Reset device if possible
+#define SETBREAK 8 // Set the device break line.
+#define CLRBREAK 9 // Clear the device break line.
+
+//
+// PURGE function flags.
+//
+#define PURGE_TXABORT 0x0001 // Kill the pending/current writes to the comm port.
+#define PURGE_RXABORT 0x0002 // Kill the pending/current reads to the comm port.
+#define PURGE_TXCLEAR 0x0004 // Kill the transmit queue if there.
+#define PURGE_RXCLEAR 0x0008 // Kill the typeahead buffer if there.
+
+#define LPTx 0x80 // Set if ID is for LPT device
+
+//
+// Modem Status Flags
+//
+#define MS_CTS_ON ((DWORD)0x0010)
+#define MS_DSR_ON ((DWORD)0x0020)
+#define MS_RING_ON ((DWORD)0x0040)
+#define MS_RLSD_ON ((DWORD)0x0080)
+
+//
+// WaitSoundState() Constants
+//
+
+#define S_QUEUEEMPTY 0
+#define S_THRESHOLD 1
+#define S_ALLTHRESHOLD 2
+
+//
+// Accent Modes
+//
+
+#define S_NORMAL 0
+#define S_LEGATO 1
+#define S_STACCATO 2
+
+//
+// SetSoundNoise() Sources
+//
+
+#define S_PERIOD512 0 // Freq = N/512 high pitch, less coarse hiss
+#define S_PERIOD1024 1 // Freq = N/1024
+#define S_PERIOD2048 2 // Freq = N/2048 low pitch, more coarse hiss
+#define S_PERIODVOICE 3 // Source is frequency from voice channel (3)
+#define S_WHITE512 4 // Freq = N/512 high pitch, less coarse hiss
+#define S_WHITE1024 5 // Freq = N/1024
+#define S_WHITE2048 6 // Freq = N/2048 low pitch, more coarse hiss
+#define S_WHITEVOICE 7 // Source is frequency from voice channel (3)
+
+#define S_SERDVNA (-1) // Device not available
+#define S_SEROFM (-2) // Out of memory
+#define S_SERMACT (-3) // Music active
+#define S_SERQFUL (-4) // Queue full
+#define S_SERBDNT (-5) // Invalid note
+#define S_SERDLN (-6) // Invalid note length
+#define S_SERDCC (-7) // Invalid note count
+#define S_SERDTP (-8) // Invalid tempo
+#define S_SERDVL (-9) // Invalid volume
+#define S_SERDMD (-10) // Invalid mode
+#define S_SERDSH (-11) // Invalid shape
+#define S_SERDPT (-12) // Invalid pitch
+#define S_SERDFQ (-13) // Invalid frequency
+#define S_SERDDR (-14) // Invalid duration
+#define S_SERDSR (-15) // Invalid source
+#define S_SERDST (-16) // Invalid state
+
+#define NMPWAIT_WAIT_FOREVER 0xffffffff
+#define NMPWAIT_NOWAIT 0x00000001
+#define NMPWAIT_USE_DEFAULT_WAIT 0x00000000
+
+#define FS_CASE_IS_PRESERVED FILE_CASE_PRESERVED_NAMES
+#define FS_CASE_SENSITIVE FILE_CASE_SENSITIVE_SEARCH
+#define FS_UNICODE_STORED_ON_DISK FILE_UNICODE_ON_DISK
+#define FS_PERSISTENT_ACLS FILE_PERSISTENT_ACLS
+#define FS_VOL_IS_COMPRESSED FILE_VOLUME_IS_COMPRESSED
+#define FS_FILE_COMPRESSION FILE_FILE_COMPRESSION
+
+
+
+
+
+
+#define FILE_MAP_COPY SECTION_QUERY
+#define FILE_MAP_WRITE SECTION_MAP_WRITE
+#define FILE_MAP_READ SECTION_MAP_READ
+#define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
+
+#define OF_READ 0x00000000
+#define OF_WRITE 0x00000001
+#define OF_READWRITE 0x00000002
+#define OF_SHARE_COMPAT 0x00000000
+#define OF_SHARE_EXCLUSIVE 0x00000010
+#define OF_SHARE_DENY_WRITE 0x00000020
+#define OF_SHARE_DENY_READ 0x00000030
+#define OF_SHARE_DENY_NONE 0x00000040
+#define OF_PARSE 0x00000100
+#define OF_DELETE 0x00000200
+#define OF_VERIFY 0x00000400
+#define OF_CANCEL 0x00000800
+#define OF_CREATE 0x00001000
+#define OF_PROMPT 0x00002000
+#define OF_EXIST 0x00004000
+#define OF_REOPEN 0x00008000
+
+#define OFS_MAXPATHNAME 128
+typedef struct _OFSTRUCT {
+ BYTE cBytes;
+ BYTE fFixedDisk;
+ WORD nErrCode;
+ WORD Reserved1;
+ WORD Reserved2;
+ CHAR szPathName[OFS_MAXPATHNAME];
+} OFSTRUCT, *LPOFSTRUCT, *POFSTRUCT;
+
+//
+// The MS-MIPS and Alpha compilers support intrinsic functions for interlocked
+// increment, decrement, and exchange.
+//
+
+#if (defined(_M_MRX000) || defined(_M_ALPHA) || (defined(_M_PPC) && (_MSC_VER >= 1000))) && !defined(RC_INVOKED)
+
+#define InterlockedIncrement _InterlockedIncrement
+#define InterlockedDecrement _InterlockedDecrement
+#define InterlockedExchange _InterlockedExchange
+#define InterlockedExchangeAdd _InterlockedExchangeAdd
+#define InterlockedCompareExchange _InterlockedCompareExchange
+
+LONG
+WINAPI
+InterlockedIncrement(
+ LPLONG lpAddend
+ );
+
+LONG
+WINAPI
+InterlockedDecrement(
+ LPLONG lpAddend
+ );
+
+LONG
+WINAPI
+InterlockedExchange(
+ LPLONG Target,
+ LONG Value
+ );
+
+PVOID
+WINAPI
+InterlockedCompareExchange (
+ PVOID *Destination,
+ PVOID Exchange,
+ PVOID Comperand
+ );
+
+LONG
+WINAPI
+InterlockedExchangeAdd(
+ LPLONG Addend,
+ LONG Value
+ );
+
+#pragma intrinsic(_InterlockedIncrement)
+#pragma intrinsic(_InterlockedDecrement)
+#pragma intrinsic(_InterlockedExchange)
+#pragma intrinsic(_InterlockedCompareExchange)
+#pragma intrinsic(_InterlockedExchangeAdd)
+
+#else
+
+#ifndef _NTOS_
+
+WINBASEAPI
+LONG
+WINAPI
+InterlockedIncrement(
+ LPLONG lpAddend
+ );
+
+WINBASEAPI
+LONG
+WINAPI
+InterlockedDecrement(
+ LPLONG lpAddend
+ );
+
+WINBASEAPI
+LONG
+WINAPI
+InterlockedExchange(
+ LPLONG Target,
+ LONG Value
+ );
+
+WINBASEAPI
+LONG
+WINAPI
+InterlockedExchangeAdd(
+ LPLONG Addend,
+ LONG Value
+ );
+
+WINBASEAPI
+PVOID
+WINAPI
+InterlockedCompareExchange (
+ PVOID *Destination,
+ PVOID Exchange,
+ PVOID Comperand
+ );
+
+#endif /* NT_INCLUDED */
+
+#endif
+
+WINBASEAPI
+BOOL
+WINAPI
+FreeResource(
+ HGLOBAL hResData
+ );
+
+WINBASEAPI
+LPVOID
+WINAPI
+LockResource(
+ HGLOBAL hResData
+ );
+
+#define UnlockResource(hResData) ((hResData), 0)
+#define MAXINTATOM 0xC000
+#define MAKEINTATOM(i) (LPTSTR)((DWORD)((WORD)(i)))
+#define INVALID_ATOM ((ATOM)0)
+
+int
+WINAPI
+WinMain(
+ HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nShowCmd
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FreeLibrary(
+ HMODULE hLibModule
+ );
+
+
+WINBASEAPI
+VOID
+WINAPI
+FreeLibraryAndExitThread(
+ HMODULE hLibModule,
+ DWORD dwExitCode
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+DisableThreadLibraryCalls(
+ HMODULE hLibModule
+ );
+
+WINBASEAPI
+FARPROC
+WINAPI
+GetProcAddress(
+ HMODULE hModule,
+ LPCSTR lpProcName
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetVersion( VOID );
+
+WINBASEAPI
+HGLOBAL
+WINAPI
+GlobalAlloc(
+ UINT uFlags,
+ DWORD dwBytes
+ );
+
+WINBASEAPI
+HGLOBAL
+WINAPI
+GlobalReAlloc(
+ HGLOBAL hMem,
+ DWORD dwBytes,
+ UINT uFlags
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GlobalSize(
+ HGLOBAL hMem
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+GlobalFlags(
+ HGLOBAL hMem
+ );
+
+
+WINBASEAPI
+LPVOID
+WINAPI
+GlobalLock(
+ HGLOBAL hMem
+ );
+
+//!!!MWH My version win31 = DWORD WINAPI GlobalHandle(UINT)
+WINBASEAPI
+HGLOBAL
+WINAPI
+GlobalHandle(
+ LPCVOID pMem
+ );
+
+
+WINBASEAPI
+BOOL
+WINAPI
+GlobalUnlock(
+ HGLOBAL hMem
+ );
+
+
+WINBASEAPI
+HGLOBAL
+WINAPI
+GlobalFree(
+ HGLOBAL hMem
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+GlobalCompact(
+ DWORD dwMinFree
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+GlobalFix(
+ HGLOBAL hMem
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+GlobalUnfix(
+ HGLOBAL hMem
+ );
+
+WINBASEAPI
+LPVOID
+WINAPI
+GlobalWire(
+ HGLOBAL hMem
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GlobalUnWire(
+ HGLOBAL hMem
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+GlobalMemoryStatus(
+ LPMEMORYSTATUS lpBuffer
+ );
+
+WINBASEAPI
+HLOCAL
+WINAPI
+LocalAlloc(
+ UINT uFlags,
+ UINT uBytes
+ );
+
+WINBASEAPI
+HLOCAL
+WINAPI
+LocalReAlloc(
+ HLOCAL hMem,
+ UINT uBytes,
+ UINT uFlags
+ );
+
+WINBASEAPI
+LPVOID
+WINAPI
+LocalLock(
+ HLOCAL hMem
+ );
+
+WINBASEAPI
+HLOCAL
+WINAPI
+LocalHandle(
+ LPCVOID pMem
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+LocalUnlock(
+ HLOCAL hMem
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+LocalSize(
+ HLOCAL hMem
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+LocalFlags(
+ HLOCAL hMem
+ );
+
+WINBASEAPI
+HLOCAL
+WINAPI
+LocalFree(
+ HLOCAL hMem
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+LocalShrink(
+ HLOCAL hMem,
+ UINT cbNewSize
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+LocalCompact(
+ UINT uMinFree
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FlushInstructionCache(
+ HANDLE hProcess,
+ LPCVOID lpBaseAddress,
+ DWORD dwSize
+ );
+
+WINBASEAPI
+LPVOID
+WINAPI
+VirtualAlloc(
+ LPVOID lpAddress,
+ DWORD dwSize,
+ DWORD flAllocationType,
+ DWORD flProtect
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+VirtualFree(
+ LPVOID lpAddress,
+ DWORD dwSize,
+ DWORD dwFreeType
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+VirtualProtect(
+ LPVOID lpAddress,
+ DWORD dwSize,
+ DWORD flNewProtect,
+ PDWORD lpflOldProtect
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+VirtualQuery(
+ LPCVOID lpAddress,
+ PMEMORY_BASIC_INFORMATION lpBuffer,
+ DWORD dwLength
+ );
+
+WINBASEAPI
+LPVOID
+WINAPI
+VirtualAllocEx(
+ HANDLE hProcess,
+ LPVOID lpAddress,
+ DWORD dwSize,
+ DWORD flAllocationType,
+ DWORD flProtect
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+VirtualFreeEx(
+ HANDLE hProcess,
+ LPVOID lpAddress,
+ DWORD dwSize,
+ DWORD dwFreeType
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+VirtualProtectEx(
+ HANDLE hProcess,
+ LPVOID lpAddress,
+ DWORD dwSize,
+ DWORD flNewProtect,
+ PDWORD lpflOldProtect
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+VirtualQueryEx(
+ HANDLE hProcess,
+ LPCVOID lpAddress,
+ PMEMORY_BASIC_INFORMATION lpBuffer,
+ DWORD dwLength
+ );
+
+WINBASEAPI
+HANDLE
+WINAPI
+HeapCreate(
+ DWORD flOptions,
+ DWORD dwInitialSize,
+ DWORD dwMaximumSize
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+HeapDestroy(
+ HANDLE hHeap
+ );
+
+
+WINBASEAPI
+LPVOID
+WINAPI
+HeapAlloc(
+ HANDLE hHeap,
+ DWORD dwFlags,
+ DWORD dwBytes
+ );
+
+WINBASEAPI
+LPVOID
+WINAPI
+HeapReAlloc(
+ HANDLE hHeap,
+ DWORD dwFlags,
+ LPVOID lpMem,
+ DWORD dwBytes
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+HeapFree(
+ HANDLE hHeap,
+ DWORD dwFlags,
+ LPVOID lpMem
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+HeapSize(
+ HANDLE hHeap,
+ DWORD dwFlags,
+ LPCVOID lpMem
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+HeapValidate(
+ HANDLE hHeap,
+ DWORD dwFlags,
+ LPCVOID lpMem
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+HeapCompact(
+ HANDLE hHeap,
+ DWORD dwFlags
+ );
+
+WINBASEAPI
+HANDLE
+WINAPI
+GetProcessHeap( VOID );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetProcessHeaps(
+ DWORD NumberOfHeaps,
+ PHANDLE ProcessHeaps
+ );
+
+typedef struct _PROCESS_HEAP_ENTRY {
+ PVOID lpData;
+ DWORD cbData;
+ BYTE cbOverhead;
+ BYTE iRegionIndex;
+ WORD wFlags;
+ union {
+ struct {
+ HANDLE hMem;
+ DWORD dwReserved[ 3 ];
+ } Block;
+ struct {
+ DWORD dwCommittedSize;
+ DWORD dwUnCommittedSize;
+ LPVOID lpFirstBlock;
+ LPVOID lpLastBlock;
+ } Region;
+ };
+} PROCESS_HEAP_ENTRY, *LPPROCESS_HEAP_ENTRY, *PPROCESS_HEAP_ENTRY;
+
+#define PROCESS_HEAP_REGION 0x0001
+#define PROCESS_HEAP_UNCOMMITTED_RANGE 0x0002
+#define PROCESS_HEAP_ENTRY_BUSY 0x0004
+#define PROCESS_HEAP_ENTRY_MOVEABLE 0x0010
+#define PROCESS_HEAP_ENTRY_DDESHARE 0x0020
+
+WINBASEAPI
+BOOL
+WINAPI
+HeapLock(
+ HANDLE hHeap
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+HeapUnlock(
+ HANDLE hHeap
+ );
+
+
+WINBASEAPI
+BOOL
+WINAPI
+HeapWalk(
+ HANDLE hHeap,
+ LPPROCESS_HEAP_ENTRY lpEntry
+ );
+
+// GetBinaryType return values.
+
+#define SCS_32BIT_BINARY 0
+#define SCS_DOS_BINARY 1
+#define SCS_WOW_BINARY 2
+#define SCS_PIF_BINARY 3
+#define SCS_POSIX_BINARY 4
+#define SCS_OS216_BINARY 5
+
+WINBASEAPI
+BOOL
+WINAPI
+GetBinaryTypeA(
+ LPCSTR lpApplicationName,
+ LPDWORD lpBinaryType
+ );
+WINBASEAPI
+BOOL
+WINAPI
+GetBinaryTypeW(
+ LPCWSTR lpApplicationName,
+ LPDWORD lpBinaryType
+ );
+#ifdef UNICODE
+#define GetBinaryType GetBinaryTypeW
+#else
+#define GetBinaryType GetBinaryTypeA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetShortPathNameA(
+ LPCSTR lpszLongPath,
+ LPSTR lpszShortPath,
+ DWORD cchBuffer
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetShortPathNameW(
+ LPCWSTR lpszLongPath,
+ LPWSTR lpszShortPath,
+ DWORD cchBuffer
+ );
+#ifdef UNICODE
+#define GetShortPathName GetShortPathNameW
+#else
+#define GetShortPathName GetShortPathNameA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+GetProcessAffinityMask(
+ HANDLE hProcess,
+ LPDWORD lpProcessAffinityMask,
+ LPDWORD lpSystemAffinityMask
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetProcessAffinityMask(
+ HANDLE hProcess,
+ DWORD dwProcessAffinityMask
+ );
+
+
+WINBASEAPI
+BOOL
+WINAPI
+GetProcessTimes(
+ HANDLE hProcess,
+ LPFILETIME lpCreationTime,
+ LPFILETIME lpExitTime,
+ LPFILETIME lpKernelTime,
+ LPFILETIME lpUserTime
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetProcessWorkingSetSize(
+ HANDLE hProcess,
+ LPDWORD lpMinimumWorkingSetSize,
+ LPDWORD lpMaximumWorkingSetSize
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetProcessWorkingSetSize(
+ HANDLE hProcess,
+ DWORD dwMinimumWorkingSetSize,
+ DWORD dwMaximumWorkingSetSize
+ );
+
+WINBASEAPI
+HANDLE
+WINAPI
+OpenProcess(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ DWORD dwProcessId
+ );
+
+WINBASEAPI
+HANDLE
+WINAPI
+GetCurrentProcess(
+ VOID
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetCurrentProcessId(
+ VOID
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+ExitProcess(
+ UINT uExitCode
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+TerminateProcess(
+ HANDLE hProcess,
+ UINT uExitCode
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetExitCodeProcess(
+ HANDLE hProcess,
+ LPDWORD lpExitCode
+ );
+
+
+WINBASEAPI
+VOID
+WINAPI
+FatalExit(
+ int ExitCode
+ );
+
+WINBASEAPI
+LPSTR
+WINAPI
+GetEnvironmentStrings(
+ VOID
+ );
+
+WINBASEAPI
+LPWSTR
+WINAPI
+GetEnvironmentStringsW(
+ VOID
+ );
+
+#ifdef UNICODE
+#define GetEnvironmentStrings GetEnvironmentStringsW
+#else
+#define GetEnvironmentStringsA GetEnvironmentStrings
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+FreeEnvironmentStringsA(
+ LPSTR
+ );
+WINBASEAPI
+BOOL
+WINAPI
+FreeEnvironmentStringsW(
+ LPWSTR
+ );
+#ifdef UNICODE
+#define FreeEnvironmentStrings FreeEnvironmentStringsW
+#else
+#define FreeEnvironmentStrings FreeEnvironmentStringsA
+#endif // !UNICODE
+
+WINBASEAPI
+VOID
+WINAPI
+RaiseException(
+ DWORD dwExceptionCode,
+ DWORD dwExceptionFlags,
+ DWORD nNumberOfArguments,
+ CONST DWORD *lpArguments
+ );
+
+WINBASEAPI
+LONG
+WINAPI
+UnhandledExceptionFilter(
+ struct _EXCEPTION_POINTERS *ExceptionInfo
+ );
+
+typedef LONG (WINAPI *PTOP_LEVEL_EXCEPTION_FILTER)(
+ struct _EXCEPTION_POINTERS *ExceptionInfo
+ );
+typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
+
+WINBASEAPI
+LPTOP_LEVEL_EXCEPTION_FILTER
+WINAPI
+SetUnhandledExceptionFilter(
+ LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
+ );
+
+#if(_WIN32_WINNT >= 0x0400)
+WINBASEAPI
+LPVOID
+WINAPI
+CreateFiber(
+ DWORD dwStackSize,
+ LPFIBER_START_ROUTINE lpStartAddress,
+ LPVOID lpParameter
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+DeleteFiber(
+ LPVOID lpFiber
+ );
+
+WINBASEAPI
+LPVOID
+WINAPI
+ConvertThreadToFiber(
+ LPVOID lpParameter
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+SwitchToFiber(
+ LPVOID lpFiber
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SwitchToThread(
+ VOID
+ );
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateThread(
+ LPSECURITY_ATTRIBUTES lpThreadAttributes,
+ DWORD dwStackSize,
+ LPTHREAD_START_ROUTINE lpStartAddress,
+ LPVOID lpParameter,
+ DWORD dwCreationFlags,
+ LPDWORD lpThreadId
+ );
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateRemoteThread(
+ HANDLE hProcess,
+ LPSECURITY_ATTRIBUTES lpThreadAttributes,
+ DWORD dwStackSize,
+ LPTHREAD_START_ROUTINE lpStartAddress,
+ LPVOID lpParameter,
+ DWORD dwCreationFlags,
+ LPDWORD lpThreadId
+ );
+
+WINBASEAPI
+HANDLE
+WINAPI
+GetCurrentThread(
+ VOID
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetCurrentThreadId(
+ VOID
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+SetThreadAffinityMask(
+ HANDLE hThread,
+ DWORD dwThreadAffinityMask
+ );
+
+#if(_WIN32_WINNT >= 0x0400)
+WINBASEAPI
+DWORD
+WINAPI
+SetThreadIdealProcessor(
+ HANDLE hThread,
+ DWORD dwIdealProcessor
+ );
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+WINBASEAPI
+BOOL
+WINAPI
+SetProcessPriorityBoost(
+ HANDLE hProcess,
+ BOOL bDisablePriorityBoost
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetProcessPriorityBoost(
+ HANDLE hProcess,
+ PBOOL pDisablePriorityBoost
+ );
+
+
+WINBASEAPI
+BOOL
+WINAPI
+SetThreadPriority(
+ HANDLE hThread,
+ int nPriority
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetThreadPriorityBoost(
+ HANDLE hThread,
+ BOOL bDisablePriorityBoost
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetThreadPriorityBoost(
+ HANDLE hThread,
+ PBOOL pDisablePriorityBoost
+ );
+
+WINBASEAPI
+int
+WINAPI
+GetThreadPriority(
+ HANDLE hThread
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetThreadTimes(
+ HANDLE hThread,
+ LPFILETIME lpCreationTime,
+ LPFILETIME lpExitTime,
+ LPFILETIME lpKernelTime,
+ LPFILETIME lpUserTime
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+ExitThread(
+ DWORD dwExitCode
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+TerminateThread(
+ HANDLE hThread,
+ DWORD dwExitCode
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetExitCodeThread(
+ HANDLE hThread,
+ LPDWORD lpExitCode
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetThreadSelectorEntry(
+ HANDLE hThread,
+ DWORD dwSelector,
+ LPLDT_ENTRY lpSelectorEntry
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetLastError(
+ VOID
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+SetLastError(
+ DWORD dwErrCode
+ );
+
+#define HasOverlappedIoCompleted(lpOverlapped) ((lpOverlapped)->Internal != STATUS_PENDING)
+
+WINBASEAPI
+BOOL
+WINAPI
+GetOverlappedResult(
+ HANDLE hFile,
+ LPOVERLAPPED lpOverlapped,
+ LPDWORD lpNumberOfBytesTransferred,
+ BOOL bWait
+ );
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateIoCompletionPort(
+ HANDLE FileHandle,
+ HANDLE ExistingCompletionPort,
+ DWORD CompletionKey,
+ DWORD NumberOfConcurrentThreads
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetQueuedCompletionStatus(
+ HANDLE CompletionPort,
+ LPDWORD lpNumberOfBytesTransferred,
+ LPDWORD lpCompletionKey,
+ LPOVERLAPPED *lpOverlapped,
+ DWORD dwMilliseconds
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+PostQueuedCompletionStatus(
+ HANDLE CompletionPort,
+ DWORD dwNumberOfBytesTransferred,
+ DWORD dwCompletionKey,
+ LPOVERLAPPED lpOverlapped
+ );
+
+#define SEM_FAILCRITICALERRORS 0x0001
+#define SEM_NOGPFAULTERRORBOX 0x0002
+#define SEM_NOALIGNMENTFAULTEXCEPT 0x0004
+#define SEM_NOOPENFILEERRORBOX 0x8000
+
+WINBASEAPI
+UINT
+WINAPI
+SetErrorMode(
+ UINT uMode
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+ReadProcessMemory(
+ HANDLE hProcess,
+ LPCVOID lpBaseAddress,
+ LPVOID lpBuffer,
+ DWORD nSize,
+ LPDWORD lpNumberOfBytesRead
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteProcessMemory(
+ HANDLE hProcess,
+ LPVOID lpBaseAddress,
+ LPVOID lpBuffer,
+ DWORD nSize,
+ LPDWORD lpNumberOfBytesWritten
+ );
+
+#if !defined(MIDL_PASS)
+WINBASEAPI
+BOOL
+WINAPI
+GetThreadContext(
+ HANDLE hThread,
+ LPCONTEXT lpContext
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetThreadContext(
+ HANDLE hThread,
+ CONST CONTEXT *lpContext
+ );
+#endif
+
+WINBASEAPI
+DWORD
+WINAPI
+SuspendThread(
+ HANDLE hThread
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+ResumeThread(
+ HANDLE hThread
+ );
+
+
+#if(_WIN32_WINNT >= 0x0400)
+typedef
+VOID
+(APIENTRY *PAPCFUNC)(
+ DWORD dwParam
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+QueueUserAPC(
+ PAPCFUNC pfnAPC,
+ HANDLE hThread,
+ DWORD dwData
+ );
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+WINBASEAPI
+VOID
+WINAPI
+DebugBreak(
+ VOID
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+WaitForDebugEvent(
+ LPDEBUG_EVENT lpDebugEvent,
+ DWORD dwMilliseconds
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+ContinueDebugEvent(
+ DWORD dwProcessId,
+ DWORD dwThreadId,
+ DWORD dwContinueStatus
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+DebugActiveProcess(
+ DWORD dwProcessId
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+InitializeCriticalSection(
+ LPCRITICAL_SECTION lpCriticalSection
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+EnterCriticalSection(
+ LPCRITICAL_SECTION lpCriticalSection
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+LeaveCriticalSection(
+ LPCRITICAL_SECTION lpCriticalSection
+ );
+
+#if(_WIN32_WINNT >= 0x0400)
+WINBASEAPI
+BOOL
+WINAPI
+TryEnterCriticalSection(
+ LPCRITICAL_SECTION lpCriticalSection
+ );
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+WINBASEAPI
+VOID
+WINAPI
+DeleteCriticalSection(
+ LPCRITICAL_SECTION lpCriticalSection
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetEvent(
+ HANDLE hEvent
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+ResetEvent(
+ HANDLE hEvent
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+PulseEvent(
+ HANDLE hEvent
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+ReleaseSemaphore(
+ HANDLE hSemaphore,
+ LONG lReleaseCount,
+ LPLONG lpPreviousCount
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+ReleaseMutex(
+ HANDLE hMutex
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+WaitForSingleObject(
+ HANDLE hHandle,
+ DWORD dwMilliseconds
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+WaitForMultipleObjects(
+ DWORD nCount,
+ CONST HANDLE *lpHandles,
+ BOOL bWaitAll,
+ DWORD dwMilliseconds
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+Sleep(
+ DWORD dwMilliseconds
+ );
+
+WINBASEAPI
+HGLOBAL
+WINAPI
+LoadResource(
+ HMODULE hModule,
+ HRSRC hResInfo
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+SizeofResource(
+ HMODULE hModule,
+ HRSRC hResInfo
+ );
+
+
+WINBASEAPI
+ATOM
+WINAPI
+GlobalDeleteAtom(
+ ATOM nAtom
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+InitAtomTable(
+ DWORD nSize
+ );
+
+WINBASEAPI
+ATOM
+WINAPI
+DeleteAtom(
+ ATOM nAtom
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+SetHandleCount(
+ UINT uNumber
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetLogicalDrives(
+ VOID
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+LockFile(
+ HANDLE hFile,
+ DWORD dwFileOffsetLow,
+ DWORD dwFileOffsetHigh,
+ DWORD nNumberOfBytesToLockLow,
+ DWORD nNumberOfBytesToLockHigh
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+UnlockFile(
+ HANDLE hFile,
+ DWORD dwFileOffsetLow,
+ DWORD dwFileOffsetHigh,
+ DWORD nNumberOfBytesToUnlockLow,
+ DWORD nNumberOfBytesToUnlockHigh
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+LockFileEx(
+ HANDLE hFile,
+ DWORD dwFlags,
+ DWORD dwReserved,
+ DWORD nNumberOfBytesToLockLow,
+ DWORD nNumberOfBytesToLockHigh,
+ LPOVERLAPPED lpOverlapped
+ );
+
+#define LOCKFILE_FAIL_IMMEDIATELY 0x00000001
+#define LOCKFILE_EXCLUSIVE_LOCK 0x00000002
+
+WINBASEAPI
+BOOL
+WINAPI
+UnlockFileEx(
+ HANDLE hFile,
+ DWORD dwReserved,
+ DWORD nNumberOfBytesToUnlockLow,
+ DWORD nNumberOfBytesToUnlockHigh,
+ LPOVERLAPPED lpOverlapped
+ );
+
+typedef struct _BY_HANDLE_FILE_INFORMATION {
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD dwVolumeSerialNumber;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+ DWORD nNumberOfLinks;
+ DWORD nFileIndexHigh;
+ DWORD nFileIndexLow;
+} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;
+
+WINBASEAPI
+BOOL
+WINAPI
+GetFileInformationByHandle(
+ HANDLE hFile,
+ LPBY_HANDLE_FILE_INFORMATION lpFileInformation
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetFileType(
+ HANDLE hFile
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetFileSize(
+ HANDLE hFile,
+ LPDWORD lpFileSizeHigh
+ );
+
+WINBASEAPI
+HANDLE
+WINAPI
+GetStdHandle(
+ DWORD nStdHandle
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetStdHandle(
+ DWORD nStdHandle,
+ HANDLE hHandle
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteFile(
+ HANDLE hFile,
+ LPCVOID lpBuffer,
+ DWORD nNumberOfBytesToWrite,
+ LPDWORD lpNumberOfBytesWritten,
+ LPOVERLAPPED lpOverlapped
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+ReadFile(
+ HANDLE hFile,
+ LPVOID lpBuffer,
+ DWORD nNumberOfBytesToRead,
+ LPDWORD lpNumberOfBytesRead,
+ LPOVERLAPPED lpOverlapped
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FlushFileBuffers(
+ HANDLE hFile
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+DeviceIoControl(
+ HANDLE hDevice,
+ DWORD dwIoControlCode,
+ LPVOID lpInBuffer,
+ DWORD nInBufferSize,
+ LPVOID lpOutBuffer,
+ DWORD nOutBufferSize,
+ LPDWORD lpBytesReturned,
+ LPOVERLAPPED lpOverlapped
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetEndOfFile(
+ HANDLE hFile
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+SetFilePointer(
+ HANDLE hFile,
+ LONG lDistanceToMove,
+ PLONG lpDistanceToMoveHigh,
+ DWORD dwMoveMethod
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FindClose(
+ HANDLE hFindFile
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetFileTime(
+ HANDLE hFile,
+ LPFILETIME lpCreationTime,
+ LPFILETIME lpLastAccessTime,
+ LPFILETIME lpLastWriteTime
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetFileTime(
+ HANDLE hFile,
+ CONST FILETIME *lpCreationTime,
+ CONST FILETIME *lpLastAccessTime,
+ CONST FILETIME *lpLastWriteTime
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+CloseHandle(
+ HANDLE hObject
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+DuplicateHandle(
+ HANDLE hSourceProcessHandle,
+ HANDLE hSourceHandle,
+ HANDLE hTargetProcessHandle,
+ LPHANDLE lpTargetHandle,
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ DWORD dwOptions
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetHandleInformation(
+ HANDLE hObject,
+ LPDWORD lpdwFlags
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetHandleInformation(
+ HANDLE hObject,
+ DWORD dwMask,
+ DWORD dwFlags
+ );
+
+#define HANDLE_FLAG_INHERIT 0x00000001
+#define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x00000002
+
+#define HINSTANCE_ERROR 32
+
+WINBASEAPI
+DWORD
+WINAPI
+LoadModule(
+ LPCSTR lpModuleName,
+ LPVOID lpParameterBlock
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+WinExec(
+ LPCSTR lpCmdLine,
+ UINT uCmdShow
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+ClearCommBreak(
+ HANDLE hFile
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+ClearCommError(
+ HANDLE hFile,
+ LPDWORD lpErrors,
+ LPCOMSTAT lpStat
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetupComm(
+ HANDLE hFile,
+ DWORD dwInQueue,
+ DWORD dwOutQueue
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+EscapeCommFunction(
+ HANDLE hFile,
+ DWORD dwFunc
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetCommConfig(
+ HANDLE hCommDev,
+ LPCOMMCONFIG lpCC,
+ LPDWORD lpdwSize
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetCommMask(
+ HANDLE hFile,
+ LPDWORD lpEvtMask
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetCommProperties(
+ HANDLE hFile,
+ LPCOMMPROP lpCommProp
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetCommModemStatus(
+ HANDLE hFile,
+ LPDWORD lpModemStat
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetCommState(
+ HANDLE hFile,
+ LPDCB lpDCB
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetCommTimeouts(
+ HANDLE hFile,
+ LPCOMMTIMEOUTS lpCommTimeouts
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+PurgeComm(
+ HANDLE hFile,
+ DWORD dwFlags
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetCommBreak(
+ HANDLE hFile
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetCommConfig(
+ HANDLE hCommDev,
+ LPCOMMCONFIG lpCC,
+ DWORD dwSize
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetCommMask(
+ HANDLE hFile,
+ DWORD dwEvtMask
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetCommState(
+ HANDLE hFile,
+ LPDCB lpDCB
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetCommTimeouts(
+ HANDLE hFile,
+ LPCOMMTIMEOUTS lpCommTimeouts
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+TransmitCommChar(
+ HANDLE hFile,
+ char cChar
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+WaitCommEvent(
+ HANDLE hFile,
+ LPDWORD lpEvtMask,
+ LPOVERLAPPED lpOverlapped
+ );
+
+
+WINBASEAPI
+DWORD
+WINAPI
+SetTapePosition(
+ HANDLE hDevice,
+ DWORD dwPositionMethod,
+ DWORD dwPartition,
+ DWORD dwOffsetLow,
+ DWORD dwOffsetHigh,
+ BOOL bImmediate
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetTapePosition(
+ HANDLE hDevice,
+ DWORD dwPositionType,
+ LPDWORD lpdwPartition,
+ LPDWORD lpdwOffsetLow,
+ LPDWORD lpdwOffsetHigh
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+PrepareTape(
+ HANDLE hDevice,
+ DWORD dwOperation,
+ BOOL bImmediate
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+EraseTape(
+ HANDLE hDevice,
+ DWORD dwEraseType,
+ BOOL bImmediate
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+CreateTapePartition(
+ HANDLE hDevice,
+ DWORD dwPartitionMethod,
+ DWORD dwCount,
+ DWORD dwSize
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+WriteTapemark(
+ HANDLE hDevice,
+ DWORD dwTapemarkType,
+ DWORD dwTapemarkCount,
+ BOOL bImmediate
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetTapeStatus(
+ HANDLE hDevice
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetTapeParameters(
+ HANDLE hDevice,
+ DWORD dwOperation,
+ LPDWORD lpdwSize,
+ LPVOID lpTapeInformation
+ );
+
+#define GET_TAPE_MEDIA_INFORMATION 0
+#define GET_TAPE_DRIVE_INFORMATION 1
+
+WINBASEAPI
+DWORD
+WINAPI
+SetTapeParameters(
+ HANDLE hDevice,
+ DWORD dwOperation,
+ LPVOID lpTapeInformation
+ );
+
+#define SET_TAPE_MEDIA_INFORMATION 0
+#define SET_TAPE_DRIVE_INFORMATION 1
+
+WINBASEAPI
+BOOL
+WINAPI
+Beep(
+ DWORD dwFreq,
+ DWORD dwDuration
+ );
+
+WINBASEAPI
+int
+WINAPI
+MulDiv(
+ int nNumber,
+ int nNumerator,
+ int nDenominator
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+GetSystemTime(
+ LPSYSTEMTIME lpSystemTime
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+GetSystemTimeAsFileTime(
+ LPFILETIME lpSystemTimeAsFileTime
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetSystemTime(
+ CONST SYSTEMTIME *lpSystemTime
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+GetLocalTime(
+ LPSYSTEMTIME lpSystemTime
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetLocalTime(
+ CONST SYSTEMTIME *lpSystemTime
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+GetSystemInfo(
+ LPSYSTEM_INFO lpSystemInfo
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+IsProcessorFeaturePresent(
+ DWORD ProcessorFeature
+ );
+
+typedef struct _TIME_ZONE_INFORMATION {
+ LONG Bias;
+ WCHAR StandardName[ 32 ];
+ SYSTEMTIME StandardDate;
+ LONG StandardBias;
+ WCHAR DaylightName[ 32 ];
+ SYSTEMTIME DaylightDate;
+ LONG DaylightBias;
+} TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
+
+WINBASEAPI
+BOOL
+WINAPI
+SystemTimeToTzSpecificLocalTime(
+ LPTIME_ZONE_INFORMATION lpTimeZoneInformation,
+ LPSYSTEMTIME lpUniversalTime,
+ LPSYSTEMTIME lpLocalTime
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetTimeZoneInformation(
+ LPTIME_ZONE_INFORMATION lpTimeZoneInformation
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetTimeZoneInformation(
+ CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation
+ );
+
+
+//
+// Routines to convert back and forth between system time and file time
+//
+
+WINBASEAPI
+BOOL
+WINAPI
+SystemTimeToFileTime(
+ CONST SYSTEMTIME *lpSystemTime,
+ LPFILETIME lpFileTime
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FileTimeToLocalFileTime(
+ CONST FILETIME *lpFileTime,
+ LPFILETIME lpLocalFileTime
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+LocalFileTimeToFileTime(
+ CONST FILETIME *lpLocalFileTime,
+ LPFILETIME lpFileTime
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FileTimeToSystemTime(
+ CONST FILETIME *lpFileTime,
+ LPSYSTEMTIME lpSystemTime
+ );
+
+WINBASEAPI
+LONG
+WINAPI
+CompareFileTime(
+ CONST FILETIME *lpFileTime1,
+ CONST FILETIME *lpFileTime2
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FileTimeToDosDateTime(
+ CONST FILETIME *lpFileTime,
+ LPWORD lpFatDate,
+ LPWORD lpFatTime
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+DosDateTimeToFileTime(
+ WORD wFatDate,
+ WORD wFatTime,
+ LPFILETIME lpFileTime
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetTickCount(
+ VOID
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetSystemTimeAdjustment(
+ DWORD dwTimeAdjustment,
+ BOOL bTimeAdjustmentDisabled
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetSystemTimeAdjustment(
+ PDWORD lpTimeAdjustment,
+ PDWORD lpTimeIncrement,
+ PBOOL lpTimeAdjustmentDisabled
+ );
+
+#if !defined(MIDL_PASS)
+WINBASEAPI
+DWORD
+WINAPI
+FormatMessageA(
+ DWORD dwFlags,
+ LPCVOID lpSource,
+ DWORD dwMessageId,
+ DWORD dwLanguageId,
+ LPSTR lpBuffer,
+ DWORD nSize,
+ va_list *Arguments
+ );
+WINBASEAPI
+DWORD
+WINAPI
+FormatMessageW(
+ DWORD dwFlags,
+ LPCVOID lpSource,
+ DWORD dwMessageId,
+ DWORD dwLanguageId,
+ LPWSTR lpBuffer,
+ DWORD nSize,
+ va_list *Arguments
+ );
+#ifdef UNICODE
+#define FormatMessage FormatMessageW
+#else
+#define FormatMessage FormatMessageA
+#endif // !UNICODE
+#endif
+
+#define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
+#define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200
+#define FORMAT_MESSAGE_FROM_STRING 0x00000400
+#define FORMAT_MESSAGE_FROM_HMODULE 0x00000800
+#define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000
+#define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000
+#define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF
+
+
+WINBASEAPI
+BOOL
+WINAPI
+CreatePipe(
+ PHANDLE hReadPipe,
+ PHANDLE hWritePipe,
+ LPSECURITY_ATTRIBUTES lpPipeAttributes,
+ DWORD nSize
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+ConnectNamedPipe(
+ HANDLE hNamedPipe,
+ LPOVERLAPPED lpOverlapped
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+DisconnectNamedPipe(
+ HANDLE hNamedPipe
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetNamedPipeHandleState(
+ HANDLE hNamedPipe,
+ LPDWORD lpMode,
+ LPDWORD lpMaxCollectionCount,
+ LPDWORD lpCollectDataTimeout
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetNamedPipeInfo(
+ HANDLE hNamedPipe,
+ LPDWORD lpFlags,
+ LPDWORD lpOutBufferSize,
+ LPDWORD lpInBufferSize,
+ LPDWORD lpMaxInstances
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+PeekNamedPipe(
+ HANDLE hNamedPipe,
+ LPVOID lpBuffer,
+ DWORD nBufferSize,
+ LPDWORD lpBytesRead,
+ LPDWORD lpTotalBytesAvail,
+ LPDWORD lpBytesLeftThisMessage
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+TransactNamedPipe(
+ HANDLE hNamedPipe,
+ LPVOID lpInBuffer,
+ DWORD nInBufferSize,
+ LPVOID lpOutBuffer,
+ DWORD nOutBufferSize,
+ LPDWORD lpBytesRead,
+ LPOVERLAPPED lpOverlapped
+ );
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateMailslotA(
+ LPCSTR lpName,
+ DWORD nMaxMessageSize,
+ DWORD lReadTimeout,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+CreateMailslotW(
+ LPCWSTR lpName,
+ DWORD nMaxMessageSize,
+ DWORD lReadTimeout,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes
+ );
+#ifdef UNICODE
+#define CreateMailslot CreateMailslotW
+#else
+#define CreateMailslot CreateMailslotA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+GetMailslotInfo(
+ HANDLE hMailslot,
+ LPDWORD lpMaxMessageSize,
+ LPDWORD lpNextSize,
+ LPDWORD lpMessageCount,
+ LPDWORD lpReadTimeout
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetMailslotInfo(
+ HANDLE hMailslot,
+ DWORD lReadTimeout
+ );
+
+WINBASEAPI
+LPVOID
+WINAPI
+MapViewOfFile(
+ HANDLE hFileMappingObject,
+ DWORD dwDesiredAccess,
+ DWORD dwFileOffsetHigh,
+ DWORD dwFileOffsetLow,
+ DWORD dwNumberOfBytesToMap
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FlushViewOfFile(
+ LPCVOID lpBaseAddress,
+ DWORD dwNumberOfBytesToFlush
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+UnmapViewOfFile(
+ LPCVOID lpBaseAddress
+ );
+
+
+//
+// _l Compat Functions
+//
+
+WINBASEAPI
+int
+WINAPI
+lstrcmpA(
+ LPCSTR lpString1,
+ LPCSTR lpString2
+ );
+WINBASEAPI
+int
+WINAPI
+lstrcmpW(
+ LPCWSTR lpString1,
+ LPCWSTR lpString2
+ );
+#ifdef UNICODE
+#define lstrcmp lstrcmpW
+#else
+#define lstrcmp lstrcmpA
+#endif // !UNICODE
+
+WINBASEAPI
+int
+WINAPI
+lstrcmpiA(
+ LPCSTR lpString1,
+ LPCSTR lpString2
+ );
+WINBASEAPI
+int
+WINAPI
+lstrcmpiW(
+ LPCWSTR lpString1,
+ LPCWSTR lpString2
+ );
+#ifdef UNICODE
+#define lstrcmpi lstrcmpiW
+#else
+#define lstrcmpi lstrcmpiA
+#endif // !UNICODE
+
+WINBASEAPI
+LPSTR
+WINAPI
+lstrcpynA(
+ LPSTR lpString1,
+ LPCSTR lpString2,
+ int iMaxLength
+ );
+WINBASEAPI
+LPWSTR
+WINAPI
+lstrcpynW(
+ LPWSTR lpString1,
+ LPCWSTR lpString2,
+ int iMaxLength
+ );
+#ifdef UNICODE
+#define lstrcpyn lstrcpynW
+#else
+#define lstrcpyn lstrcpynA
+#endif // !UNICODE
+
+WINBASEAPI
+LPSTR
+WINAPI
+lstrcpyA(
+ LPSTR lpString1,
+ LPCSTR lpString2
+ );
+WINBASEAPI
+LPWSTR
+WINAPI
+lstrcpyW(
+ LPWSTR lpString1,
+ LPCWSTR lpString2
+ );
+#ifdef UNICODE
+#define lstrcpy lstrcpyW
+#else
+#define lstrcpy lstrcpyA
+#endif // !UNICODE
+
+WINBASEAPI
+LPSTR
+WINAPI
+lstrcatA(
+ LPSTR lpString1,
+ LPCSTR lpString2
+ );
+WINBASEAPI
+LPWSTR
+WINAPI
+lstrcatW(
+ LPWSTR lpString1,
+ LPCWSTR lpString2
+ );
+#ifdef UNICODE
+#define lstrcat lstrcatW
+#else
+#define lstrcat lstrcatA
+#endif // !UNICODE
+
+WINBASEAPI
+int
+WINAPI
+lstrlenA(
+ LPCSTR lpString
+ );
+WINBASEAPI
+int
+WINAPI
+lstrlenW(
+ LPCWSTR lpString
+ );
+#ifdef UNICODE
+#define lstrlen lstrlenW
+#else
+#define lstrlen lstrlenA
+#endif // !UNICODE
+
+WINBASEAPI
+HFILE
+WINAPI
+OpenFile(
+ LPCSTR lpFileName,
+ LPOFSTRUCT lpReOpenBuff,
+ UINT uStyle
+ );
+
+WINBASEAPI
+HFILE
+WINAPI
+_lopen(
+ LPCSTR lpPathName,
+ int iReadWrite
+ );
+
+WINBASEAPI
+HFILE
+WINAPI
+_lcreat(
+ LPCSTR lpPathName,
+ int iAttribute
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+_lread(
+ HFILE hFile,
+ LPVOID lpBuffer,
+ UINT uBytes
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+_lwrite(
+ HFILE hFile,
+ LPCSTR lpBuffer,
+ UINT uBytes
+ );
+
+WINBASEAPI
+long
+WINAPI
+_hread(
+ HFILE hFile,
+ LPVOID lpBuffer,
+ long lBytes
+ );
+
+WINBASEAPI
+long
+WINAPI
+_hwrite(
+ HFILE hFile,
+ LPCSTR lpBuffer,
+ long lBytes
+ );
+
+WINBASEAPI
+HFILE
+WINAPI
+_lclose(
+ HFILE hFile
+ );
+
+WINBASEAPI
+LONG
+WINAPI
+_llseek(
+ HFILE hFile,
+ LONG lOffset,
+ int iOrigin
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+IsTextUnicode(
+ CONST LPVOID lpBuffer,
+ int cb,
+ LPINT lpi
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+TlsAlloc(
+ VOID
+ );
+
+#define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF
+
+WINBASEAPI
+LPVOID
+WINAPI
+TlsGetValue(
+ DWORD dwTlsIndex
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+TlsSetValue(
+ DWORD dwTlsIndex,
+ LPVOID lpTlsValue
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+TlsFree(
+ DWORD dwTlsIndex
+ );
+
+typedef
+VOID
+(WINAPI *LPOVERLAPPED_COMPLETION_ROUTINE)(
+ DWORD dwErrorCode,
+ DWORD dwNumberOfBytesTransfered,
+ LPOVERLAPPED lpOverlapped
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+SleepEx(
+ DWORD dwMilliseconds,
+ BOOL bAlertable
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+WaitForSingleObjectEx(
+ HANDLE hHandle,
+ DWORD dwMilliseconds,
+ BOOL bAlertable
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+WaitForMultipleObjectsEx(
+ DWORD nCount,
+ CONST HANDLE *lpHandles,
+ BOOL bWaitAll,
+ DWORD dwMilliseconds,
+ BOOL bAlertable
+ );
+
+#if(_WIN32_WINNT >= 0x0400)
+WINBASEAPI
+DWORD
+WINAPI
+SignalObjectAndWait(
+ HANDLE hObjectToSignal,
+ HANDLE hObjectToWaitOn,
+ DWORD dwMilliseconds,
+ BOOL bAlertable
+ );
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+WINBASEAPI
+BOOL
+WINAPI
+ReadFileEx(
+ HANDLE hFile,
+ LPVOID lpBuffer,
+ DWORD nNumberOfBytesToRead,
+ LPOVERLAPPED lpOverlapped,
+ LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteFileEx(
+ HANDLE hFile,
+ LPCVOID lpBuffer,
+ DWORD nNumberOfBytesToWrite,
+ LPOVERLAPPED lpOverlapped,
+ LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+BackupRead(
+ HANDLE hFile,
+ LPBYTE lpBuffer,
+ DWORD nNumberOfBytesToRead,
+ LPDWORD lpNumberOfBytesRead,
+ BOOL bAbort,
+ BOOL bProcessSecurity,
+ LPVOID *lpContext
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+BackupSeek(
+ HANDLE hFile,
+ DWORD dwLowBytesToSeek,
+ DWORD dwHighBytesToSeek,
+ LPDWORD lpdwLowByteSeeked,
+ LPDWORD lpdwHighByteSeeked,
+ LPVOID *lpContext
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+BackupWrite(
+ HANDLE hFile,
+ LPBYTE lpBuffer,
+ DWORD nNumberOfBytesToWrite,
+ LPDWORD lpNumberOfBytesWritten,
+ BOOL bAbort,
+ BOOL bProcessSecurity,
+ LPVOID *lpContext
+ );
+
+//
+// Stream id structure
+//
+typedef struct _WIN32_STREAM_ID {
+ DWORD dwStreamId ;
+ DWORD dwStreamAttributes ;
+ LARGE_INTEGER Size ;
+ DWORD dwStreamNameSize ;
+ WCHAR cStreamName[ ANYSIZE_ARRAY ] ;
+} WIN32_STREAM_ID, *LPWIN32_STREAM_ID ;
+
+//
+// Stream Ids
+//
+
+#define BACKUP_INVALID 0x00000000
+#define BACKUP_DATA 0x00000001
+#define BACKUP_EA_DATA 0x00000002
+#define BACKUP_SECURITY_DATA 0x00000003
+#define BACKUP_ALTERNATE_DATA 0x00000004
+#define BACKUP_LINK 0x00000005
+#define BACKUP_PROPERTY_DATA 0x00000006
+
+//
+// Stream Attributes
+//
+
+#define STREAM_NORMAL_ATTRIBUTE 0x00000000
+#define STREAM_MODIFIED_WHEN_READ 0x00000001
+#define STREAM_CONTAINS_SECURITY 0x00000002
+#define STREAM_CONTAINS_PROPERTIES 0x00000004
+
+WINBASEAPI
+BOOL
+WINAPI
+ReadFileScatter(
+ HANDLE hFile,
+ FILE_SEGMENT_ELEMENT aSegmentArray[],
+ DWORD nNumberOfBytesToRead,
+ LPDWORD lpReserved,
+ LPOVERLAPPED lpOverlapped
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteFileGather(
+ HANDLE hFile,
+ FILE_SEGMENT_ELEMENT aSegmentArray[],
+ DWORD nNumberOfBytesToWrite,
+ LPDWORD lpReserved,
+ LPOVERLAPPED lpOverlapped
+ );
+
+//
+// Dual Mode API below this line. Dual Mode Structures also included.
+//
+
+#define STARTF_USESHOWWINDOW 0x00000001
+#define STARTF_USESIZE 0x00000002
+#define STARTF_USEPOSITION 0x00000004
+#define STARTF_USECOUNTCHARS 0x00000008
+#define STARTF_USEFILLATTRIBUTE 0x00000010
+#define STARTF_RUNFULLSCREEN 0x00000020 // ignored for non-x86 platforms
+#define STARTF_FORCEONFEEDBACK 0x00000040
+#define STARTF_FORCEOFFFEEDBACK 0x00000080
+#define STARTF_USESTDHANDLES 0x00000100
+#if(WINVER >= 0x0400)
+#define STARTF_USEHOTKEY 0x00000200
+#endif /* WINVER >= 0x0400 */
+
+typedef struct _STARTUPINFOA {
+ DWORD cb;
+ LPSTR lpReserved;
+ LPSTR lpDesktop;
+ LPSTR lpTitle;
+ DWORD dwX;
+ DWORD dwY;
+ DWORD dwXSize;
+ DWORD dwYSize;
+ DWORD dwXCountChars;
+ DWORD dwYCountChars;
+ DWORD dwFillAttribute;
+ DWORD dwFlags;
+ WORD wShowWindow;
+ WORD cbReserved2;
+ LPBYTE lpReserved2;
+ HANDLE hStdInput;
+ HANDLE hStdOutput;
+ HANDLE hStdError;
+} STARTUPINFOA, *LPSTARTUPINFOA;
+typedef struct _STARTUPINFOW {
+ DWORD cb;
+ LPWSTR lpReserved;
+ LPWSTR lpDesktop;
+ LPWSTR lpTitle;
+ DWORD dwX;
+ DWORD dwY;
+ DWORD dwXSize;
+ DWORD dwYSize;
+ DWORD dwXCountChars;
+ DWORD dwYCountChars;
+ DWORD dwFillAttribute;
+ DWORD dwFlags;
+ WORD wShowWindow;
+ WORD cbReserved2;
+ LPBYTE lpReserved2;
+ HANDLE hStdInput;
+ HANDLE hStdOutput;
+ HANDLE hStdError;
+} STARTUPINFOW, *LPSTARTUPINFOW;
+#ifdef UNICODE
+typedef STARTUPINFOW STARTUPINFO;
+typedef LPSTARTUPINFOW LPSTARTUPINFO;
+#else
+typedef STARTUPINFOA STARTUPINFO;
+typedef LPSTARTUPINFOA LPSTARTUPINFO;
+#endif // UNICODE
+
+#define SHUTDOWN_NORETRY 0x00000001
+
+typedef struct _WIN32_FIND_DATAA {
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+ DWORD dwReserved0;
+ DWORD dwReserved1;
+ CHAR cFileName[ MAX_PATH ];
+ CHAR cAlternateFileName[ 14 ];
+} WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
+typedef struct _WIN32_FIND_DATAW {
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+ DWORD dwReserved0;
+ DWORD dwReserved1;
+ WCHAR cFileName[ MAX_PATH ];
+ WCHAR cAlternateFileName[ 14 ];
+} WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
+#ifdef UNICODE
+typedef WIN32_FIND_DATAW WIN32_FIND_DATA;
+typedef PWIN32_FIND_DATAW PWIN32_FIND_DATA;
+typedef LPWIN32_FIND_DATAW LPWIN32_FIND_DATA;
+#else
+typedef WIN32_FIND_DATAA WIN32_FIND_DATA;
+typedef PWIN32_FIND_DATAA PWIN32_FIND_DATA;
+typedef LPWIN32_FIND_DATAA LPWIN32_FIND_DATA;
+#endif // UNICODE
+
+typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+} WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA;
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateMutexA(
+ LPSECURITY_ATTRIBUTES lpMutexAttributes,
+ BOOL bInitialOwner,
+ LPCSTR lpName
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+CreateMutexW(
+ LPSECURITY_ATTRIBUTES lpMutexAttributes,
+ BOOL bInitialOwner,
+ LPCWSTR lpName
+ );
+#ifdef UNICODE
+#define CreateMutex CreateMutexW
+#else
+#define CreateMutex CreateMutexA
+#endif // !UNICODE
+
+WINBASEAPI
+HANDLE
+WINAPI
+OpenMutexA(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ LPCSTR lpName
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+OpenMutexW(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ LPCWSTR lpName
+ );
+#ifdef UNICODE
+#define OpenMutex OpenMutexW
+#else
+#define OpenMutex OpenMutexA
+#endif // !UNICODE
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateEventA(
+ LPSECURITY_ATTRIBUTES lpEventAttributes,
+ BOOL bManualReset,
+ BOOL bInitialState,
+ LPCSTR lpName
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+CreateEventW(
+ LPSECURITY_ATTRIBUTES lpEventAttributes,
+ BOOL bManualReset,
+ BOOL bInitialState,
+ LPCWSTR lpName
+ );
+#ifdef UNICODE
+#define CreateEvent CreateEventW
+#else
+#define CreateEvent CreateEventA
+#endif // !UNICODE
+
+WINBASEAPI
+HANDLE
+WINAPI
+OpenEventA(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ LPCSTR lpName
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+OpenEventW(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ LPCWSTR lpName
+ );
+#ifdef UNICODE
+#define OpenEvent OpenEventW
+#else
+#define OpenEvent OpenEventA
+#endif // !UNICODE
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateSemaphoreA(
+ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
+ LONG lInitialCount,
+ LONG lMaximumCount,
+ LPCSTR lpName
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+CreateSemaphoreW(
+ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
+ LONG lInitialCount,
+ LONG lMaximumCount,
+ LPCWSTR lpName
+ );
+#ifdef UNICODE
+#define CreateSemaphore CreateSemaphoreW
+#else
+#define CreateSemaphore CreateSemaphoreA
+#endif // !UNICODE
+
+WINBASEAPI
+HANDLE
+WINAPI
+OpenSemaphoreA(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ LPCSTR lpName
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+OpenSemaphoreW(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ LPCWSTR lpName
+ );
+#ifdef UNICODE
+#define OpenSemaphore OpenSemaphoreW
+#else
+#define OpenSemaphore OpenSemaphoreA
+#endif // !UNICODE
+
+#if(_WIN32_WINNT >= 0x0400)
+typedef
+VOID
+(APIENTRY *PTIMERAPCROUTINE)(
+ LPVOID lpArgToCompletionRoutine,
+ DWORD dwTimerLowValue,
+ DWORD dwTimerHighValue
+ );
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateWaitableTimerA(
+ LPSECURITY_ATTRIBUTES lpTimerAttributes,
+ BOOL bManualReset,
+ LPCSTR lpTimerName
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+CreateWaitableTimerW(
+ LPSECURITY_ATTRIBUTES lpTimerAttributes,
+ BOOL bManualReset,
+ LPCWSTR lpTimerName
+ );
+#ifdef UNICODE
+#define CreateWaitableTimer CreateWaitableTimerW
+#else
+#define CreateWaitableTimer CreateWaitableTimerA
+#endif // !UNICODE
+
+WINBASEAPI
+HANDLE
+WINAPI
+OpenWaitableTimerA(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ LPCSTR lpTimerName
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+OpenWaitableTimerW(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ LPCWSTR lpTimerName
+ );
+#ifdef UNICODE
+#define OpenWaitableTimer OpenWaitableTimerW
+#else
+#define OpenWaitableTimer OpenWaitableTimerA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetWaitableTimer(
+ HANDLE hTimer,
+ const LARGE_INTEGER *lpDueTime,
+ LONG lPeriod,
+ PTIMERAPCROUTINE pfnCompletionRoutine,
+ LPVOID lpArgToCompletionRoutine,
+ BOOL fResume
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+CancelWaitableTimer(
+ HANDLE hTimer
+ );
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateFileMappingA(
+ HANDLE hFile,
+ LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
+ DWORD flProtect,
+ DWORD dwMaximumSizeHigh,
+ DWORD dwMaximumSizeLow,
+ LPCSTR lpName
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+CreateFileMappingW(
+ HANDLE hFile,
+ LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
+ DWORD flProtect,
+ DWORD dwMaximumSizeHigh,
+ DWORD dwMaximumSizeLow,
+ LPCWSTR lpName
+ );
+#ifdef UNICODE
+#define CreateFileMapping CreateFileMappingW
+#else
+#define CreateFileMapping CreateFileMappingA
+#endif // !UNICODE
+
+WINBASEAPI
+HANDLE
+WINAPI
+OpenFileMappingA(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ LPCSTR lpName
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+OpenFileMappingW(
+ DWORD dwDesiredAccess,
+ BOOL bInheritHandle,
+ LPCWSTR lpName
+ );
+#ifdef UNICODE
+#define OpenFileMapping OpenFileMappingW
+#else
+#define OpenFileMapping OpenFileMappingA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetLogicalDriveStringsA(
+ DWORD nBufferLength,
+ LPSTR lpBuffer
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetLogicalDriveStringsW(
+ DWORD nBufferLength,
+ LPWSTR lpBuffer
+ );
+#ifdef UNICODE
+#define GetLogicalDriveStrings GetLogicalDriveStringsW
+#else
+#define GetLogicalDriveStrings GetLogicalDriveStringsA
+#endif // !UNICODE
+
+WINBASEAPI
+HMODULE
+WINAPI
+LoadLibraryA(
+ LPCSTR lpLibFileName
+ );
+WINBASEAPI
+HMODULE
+WINAPI
+LoadLibraryW(
+ LPCWSTR lpLibFileName
+ );
+#ifdef UNICODE
+#define LoadLibrary LoadLibraryW
+#else
+#define LoadLibrary LoadLibraryA
+#endif // !UNICODE
+
+WINBASEAPI
+HMODULE
+WINAPI
+LoadLibraryExA(
+ LPCSTR lpLibFileName,
+ HANDLE hFile,
+ DWORD dwFlags
+ );
+WINBASEAPI
+HMODULE
+WINAPI
+LoadLibraryExW(
+ LPCWSTR lpLibFileName,
+ HANDLE hFile,
+ DWORD dwFlags
+ );
+#ifdef UNICODE
+#define LoadLibraryEx LoadLibraryExW
+#else
+#define LoadLibraryEx LoadLibraryExA
+#endif // !UNICODE
+
+
+#define DONT_RESOLVE_DLL_REFERENCES 0x00000001
+#define LOAD_LIBRARY_AS_DATAFILE 0x00000002
+#define LOAD_WITH_ALTERED_SEARCH_PATH 0x00000008
+
+
+WINBASEAPI
+DWORD
+WINAPI
+GetModuleFileNameA(
+ HMODULE hModule,
+ LPSTR lpFilename,
+ DWORD nSize
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetModuleFileNameW(
+ HMODULE hModule,
+ LPWSTR lpFilename,
+ DWORD nSize
+ );
+#ifdef UNICODE
+#define GetModuleFileName GetModuleFileNameW
+#else
+#define GetModuleFileName GetModuleFileNameA
+#endif // !UNICODE
+
+WINBASEAPI
+HMODULE
+WINAPI
+GetModuleHandleA(
+ LPCSTR lpModuleName
+ );
+WINBASEAPI
+HMODULE
+WINAPI
+GetModuleHandleW(
+ LPCWSTR lpModuleName
+ );
+#ifdef UNICODE
+#define GetModuleHandle GetModuleHandleW
+#else
+#define GetModuleHandle GetModuleHandleA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+CreateProcessA(
+ LPCSTR lpApplicationName,
+ LPSTR lpCommandLine,
+ LPSECURITY_ATTRIBUTES lpProcessAttributes,
+ LPSECURITY_ATTRIBUTES lpThreadAttributes,
+ BOOL bInheritHandles,
+ DWORD dwCreationFlags,
+ LPVOID lpEnvironment,
+ LPCSTR lpCurrentDirectory,
+ LPSTARTUPINFOA lpStartupInfo,
+ LPPROCESS_INFORMATION lpProcessInformation
+ );
+WINBASEAPI
+BOOL
+WINAPI
+CreateProcessW(
+ LPCWSTR lpApplicationName,
+ LPWSTR lpCommandLine,
+ LPSECURITY_ATTRIBUTES lpProcessAttributes,
+ LPSECURITY_ATTRIBUTES lpThreadAttributes,
+ BOOL bInheritHandles,
+ DWORD dwCreationFlags,
+ LPVOID lpEnvironment,
+ LPCWSTR lpCurrentDirectory,
+ LPSTARTUPINFOW lpStartupInfo,
+ LPPROCESS_INFORMATION lpProcessInformation
+ );
+#ifdef UNICODE
+#define CreateProcess CreateProcessW
+#else
+#define CreateProcess CreateProcessA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetProcessShutdownParameters(
+ DWORD dwLevel,
+ DWORD dwFlags
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetProcessShutdownParameters(
+ LPDWORD lpdwLevel,
+ LPDWORD lpdwFlags
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetProcessVersion(
+ DWORD ProcessId
+ );
+
+WINBASEAPI
+VOID
+WINAPI
+FatalAppExitA(
+ UINT uAction,
+ LPCSTR lpMessageText
+ );
+WINBASEAPI
+VOID
+WINAPI
+FatalAppExitW(
+ UINT uAction,
+ LPCWSTR lpMessageText
+ );
+#ifdef UNICODE
+#define FatalAppExit FatalAppExitW
+#else
+#define FatalAppExit FatalAppExitA
+#endif // !UNICODE
+
+WINBASEAPI
+VOID
+WINAPI
+GetStartupInfoA(
+ LPSTARTUPINFOA lpStartupInfo
+ );
+WINBASEAPI
+VOID
+WINAPI
+GetStartupInfoW(
+ LPSTARTUPINFOW lpStartupInfo
+ );
+#ifdef UNICODE
+#define GetStartupInfo GetStartupInfoW
+#else
+#define GetStartupInfo GetStartupInfoA
+#endif // !UNICODE
+
+WINBASEAPI
+LPSTR
+WINAPI
+GetCommandLineA(
+ VOID
+ );
+WINBASEAPI
+LPWSTR
+WINAPI
+GetCommandLineW(
+ VOID
+ );
+#ifdef UNICODE
+#define GetCommandLine GetCommandLineW
+#else
+#define GetCommandLine GetCommandLineA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetEnvironmentVariableA(
+ LPCSTR lpName,
+ LPSTR lpBuffer,
+ DWORD nSize
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetEnvironmentVariableW(
+ LPCWSTR lpName,
+ LPWSTR lpBuffer,
+ DWORD nSize
+ );
+#ifdef UNICODE
+#define GetEnvironmentVariable GetEnvironmentVariableW
+#else
+#define GetEnvironmentVariable GetEnvironmentVariableA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetEnvironmentVariableA(
+ LPCSTR lpName,
+ LPCSTR lpValue
+ );
+WINBASEAPI
+BOOL
+WINAPI
+SetEnvironmentVariableW(
+ LPCWSTR lpName,
+ LPCWSTR lpValue
+ );
+#ifdef UNICODE
+#define SetEnvironmentVariable SetEnvironmentVariableW
+#else
+#define SetEnvironmentVariable SetEnvironmentVariableA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+ExpandEnvironmentStringsA(
+ LPCSTR lpSrc,
+ LPSTR lpDst,
+ DWORD nSize
+ );
+WINBASEAPI
+DWORD
+WINAPI
+ExpandEnvironmentStringsW(
+ LPCWSTR lpSrc,
+ LPWSTR lpDst,
+ DWORD nSize
+ );
+#ifdef UNICODE
+#define ExpandEnvironmentStrings ExpandEnvironmentStringsW
+#else
+#define ExpandEnvironmentStrings ExpandEnvironmentStringsA
+#endif // !UNICODE
+
+WINBASEAPI
+VOID
+WINAPI
+OutputDebugStringA(
+ LPCSTR lpOutputString
+ );
+WINBASEAPI
+VOID
+WINAPI
+OutputDebugStringW(
+ LPCWSTR lpOutputString
+ );
+#ifdef UNICODE
+#define OutputDebugString OutputDebugStringW
+#else
+#define OutputDebugString OutputDebugStringA
+#endif // !UNICODE
+
+WINBASEAPI
+HRSRC
+WINAPI
+FindResourceA(
+ HMODULE hModule,
+ LPCSTR lpName,
+ LPCSTR lpType
+ );
+WINBASEAPI
+HRSRC
+WINAPI
+FindResourceW(
+ HMODULE hModule,
+ LPCWSTR lpName,
+ LPCWSTR lpType
+ );
+#ifdef UNICODE
+#define FindResource FindResourceW
+#else
+#define FindResource FindResourceA
+#endif // !UNICODE
+
+WINBASEAPI
+HRSRC
+WINAPI
+FindResourceExA(
+ HMODULE hModule,
+ LPCSTR lpType,
+ LPCSTR lpName,
+ WORD wLanguage
+ );
+WINBASEAPI
+HRSRC
+WINAPI
+FindResourceExW(
+ HMODULE hModule,
+ LPCWSTR lpType,
+ LPCWSTR lpName,
+ WORD wLanguage
+ );
+#ifdef UNICODE
+#define FindResourceEx FindResourceExW
+#else
+#define FindResourceEx FindResourceExA
+#endif // !UNICODE
+
+#ifdef STRICT
+typedef BOOL (CALLBACK* ENUMRESTYPEPROC)(HMODULE hModule, LPTSTR lpType,
+ LONG lParam);
+typedef BOOL (CALLBACK* ENUMRESNAMEPROC)(HMODULE hModule, LPCTSTR lpType,
+ LPTSTR lpName, LONG lParam);
+typedef BOOL (CALLBACK* ENUMRESLANGPROC)(HMODULE hModule, LPCTSTR lpType,
+ LPCTSTR lpName, WORD wLanguage, LONG lParam);
+#else
+typedef FARPROC ENUMRESTYPEPROC;
+typedef FARPROC ENUMRESNAMEPROC;
+typedef FARPROC ENUMRESLANGPROC;
+#endif
+
+WINBASEAPI
+BOOL
+WINAPI
+EnumResourceTypesA(
+ HMODULE hModule,
+ ENUMRESTYPEPROC lpEnumFunc,
+ LONG lParam
+ );
+WINBASEAPI
+BOOL
+WINAPI
+EnumResourceTypesW(
+ HMODULE hModule,
+ ENUMRESTYPEPROC lpEnumFunc,
+ LONG lParam
+ );
+#ifdef UNICODE
+#define EnumResourceTypes EnumResourceTypesW
+#else
+#define EnumResourceTypes EnumResourceTypesA
+#endif // !UNICODE
+
+
+WINBASEAPI
+BOOL
+WINAPI
+EnumResourceNamesA(
+ HMODULE hModule,
+ LPCSTR lpType,
+ ENUMRESNAMEPROC lpEnumFunc,
+ LONG lParam
+ );
+WINBASEAPI
+BOOL
+WINAPI
+EnumResourceNamesW(
+ HMODULE hModule,
+ LPCWSTR lpType,
+ ENUMRESNAMEPROC lpEnumFunc,
+ LONG lParam
+ );
+#ifdef UNICODE
+#define EnumResourceNames EnumResourceNamesW
+#else
+#define EnumResourceNames EnumResourceNamesA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+EnumResourceLanguagesA(
+ HMODULE hModule,
+ LPCSTR lpType,
+ LPCSTR lpName,
+ ENUMRESLANGPROC lpEnumFunc,
+ LONG lParam
+ );
+WINBASEAPI
+BOOL
+WINAPI
+EnumResourceLanguagesW(
+ HMODULE hModule,
+ LPCWSTR lpType,
+ LPCWSTR lpName,
+ ENUMRESLANGPROC lpEnumFunc,
+ LONG lParam
+ );
+#ifdef UNICODE
+#define EnumResourceLanguages EnumResourceLanguagesW
+#else
+#define EnumResourceLanguages EnumResourceLanguagesA
+#endif // !UNICODE
+
+WINBASEAPI
+HANDLE
+WINAPI
+BeginUpdateResourceA(
+ LPCSTR pFileName,
+ BOOL bDeleteExistingResources
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+BeginUpdateResourceW(
+ LPCWSTR pFileName,
+ BOOL bDeleteExistingResources
+ );
+#ifdef UNICODE
+#define BeginUpdateResource BeginUpdateResourceW
+#else
+#define BeginUpdateResource BeginUpdateResourceA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+UpdateResourceA(
+ HANDLE hUpdate,
+ LPCSTR lpType,
+ LPCSTR lpName,
+ WORD wLanguage,
+ LPVOID lpData,
+ DWORD cbData
+ );
+WINBASEAPI
+BOOL
+WINAPI
+UpdateResourceW(
+ HANDLE hUpdate,
+ LPCWSTR lpType,
+ LPCWSTR lpName,
+ WORD wLanguage,
+ LPVOID lpData,
+ DWORD cbData
+ );
+#ifdef UNICODE
+#define UpdateResource UpdateResourceW
+#else
+#define UpdateResource UpdateResourceA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+EndUpdateResourceA(
+ HANDLE hUpdate,
+ BOOL fDiscard
+ );
+WINBASEAPI
+BOOL
+WINAPI
+EndUpdateResourceW(
+ HANDLE hUpdate,
+ BOOL fDiscard
+ );
+#ifdef UNICODE
+#define EndUpdateResource EndUpdateResourceW
+#else
+#define EndUpdateResource EndUpdateResourceA
+#endif // !UNICODE
+
+WINBASEAPI
+ATOM
+WINAPI
+GlobalAddAtomA(
+ LPCSTR lpString
+ );
+WINBASEAPI
+ATOM
+WINAPI
+GlobalAddAtomW(
+ LPCWSTR lpString
+ );
+#ifdef UNICODE
+#define GlobalAddAtom GlobalAddAtomW
+#else
+#define GlobalAddAtom GlobalAddAtomA
+#endif // !UNICODE
+
+WINBASEAPI
+ATOM
+WINAPI
+GlobalFindAtomA(
+ LPCSTR lpString
+ );
+WINBASEAPI
+ATOM
+WINAPI
+GlobalFindAtomW(
+ LPCWSTR lpString
+ );
+#ifdef UNICODE
+#define GlobalFindAtom GlobalFindAtomW
+#else
+#define GlobalFindAtom GlobalFindAtomA
+#endif // !UNICODE
+
+WINBASEAPI
+UINT
+WINAPI
+GlobalGetAtomNameA(
+ ATOM nAtom,
+ LPSTR lpBuffer,
+ int nSize
+ );
+WINBASEAPI
+UINT
+WINAPI
+GlobalGetAtomNameW(
+ ATOM nAtom,
+ LPWSTR lpBuffer,
+ int nSize
+ );
+#ifdef UNICODE
+#define GlobalGetAtomName GlobalGetAtomNameW
+#else
+#define GlobalGetAtomName GlobalGetAtomNameA
+#endif // !UNICODE
+
+WINBASEAPI
+ATOM
+WINAPI
+AddAtomA(
+ LPCSTR lpString
+ );
+WINBASEAPI
+ATOM
+WINAPI
+AddAtomW(
+ LPCWSTR lpString
+ );
+#ifdef UNICODE
+#define AddAtom AddAtomW
+#else
+#define AddAtom AddAtomA
+#endif // !UNICODE
+
+WINBASEAPI
+ATOM
+WINAPI
+FindAtomA(
+ LPCSTR lpString
+ );
+WINBASEAPI
+ATOM
+WINAPI
+FindAtomW(
+ LPCWSTR lpString
+ );
+#ifdef UNICODE
+#define FindAtom FindAtomW
+#else
+#define FindAtom FindAtomA
+#endif // !UNICODE
+
+WINBASEAPI
+UINT
+WINAPI
+GetAtomNameA(
+ ATOM nAtom,
+ LPSTR lpBuffer,
+ int nSize
+ );
+WINBASEAPI
+UINT
+WINAPI
+GetAtomNameW(
+ ATOM nAtom,
+ LPWSTR lpBuffer,
+ int nSize
+ );
+#ifdef UNICODE
+#define GetAtomName GetAtomNameW
+#else
+#define GetAtomName GetAtomNameA
+#endif // !UNICODE
+
+WINBASEAPI
+UINT
+WINAPI
+GetProfileIntA(
+ LPCSTR lpAppName,
+ LPCSTR lpKeyName,
+ INT nDefault
+ );
+WINBASEAPI
+UINT
+WINAPI
+GetProfileIntW(
+ LPCWSTR lpAppName,
+ LPCWSTR lpKeyName,
+ INT nDefault
+ );
+#ifdef UNICODE
+#define GetProfileInt GetProfileIntW
+#else
+#define GetProfileInt GetProfileIntA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetProfileStringA(
+ LPCSTR lpAppName,
+ LPCSTR lpKeyName,
+ LPCSTR lpDefault,
+ LPSTR lpReturnedString,
+ DWORD nSize
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetProfileStringW(
+ LPCWSTR lpAppName,
+ LPCWSTR lpKeyName,
+ LPCWSTR lpDefault,
+ LPWSTR lpReturnedString,
+ DWORD nSize
+ );
+#ifdef UNICODE
+#define GetProfileString GetProfileStringW
+#else
+#define GetProfileString GetProfileStringA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteProfileStringA(
+ LPCSTR lpAppName,
+ LPCSTR lpKeyName,
+ LPCSTR lpString
+ );
+WINBASEAPI
+BOOL
+WINAPI
+WriteProfileStringW(
+ LPCWSTR lpAppName,
+ LPCWSTR lpKeyName,
+ LPCWSTR lpString
+ );
+#ifdef UNICODE
+#define WriteProfileString WriteProfileStringW
+#else
+#define WriteProfileString WriteProfileStringA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetProfileSectionA(
+ LPCSTR lpAppName,
+ LPSTR lpReturnedString,
+ DWORD nSize
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetProfileSectionW(
+ LPCWSTR lpAppName,
+ LPWSTR lpReturnedString,
+ DWORD nSize
+ );
+#ifdef UNICODE
+#define GetProfileSection GetProfileSectionW
+#else
+#define GetProfileSection GetProfileSectionA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteProfileSectionA(
+ LPCSTR lpAppName,
+ LPCSTR lpString
+ );
+WINBASEAPI
+BOOL
+WINAPI
+WriteProfileSectionW(
+ LPCWSTR lpAppName,
+ LPCWSTR lpString
+ );
+#ifdef UNICODE
+#define WriteProfileSection WriteProfileSectionW
+#else
+#define WriteProfileSection WriteProfileSectionA
+#endif // !UNICODE
+
+WINBASEAPI
+UINT
+WINAPI
+GetPrivateProfileIntA(
+ LPCSTR lpAppName,
+ LPCSTR lpKeyName,
+ INT nDefault,
+ LPCSTR lpFileName
+ );
+WINBASEAPI
+UINT
+WINAPI
+GetPrivateProfileIntW(
+ LPCWSTR lpAppName,
+ LPCWSTR lpKeyName,
+ INT nDefault,
+ LPCWSTR lpFileName
+ );
+#ifdef UNICODE
+#define GetPrivateProfileInt GetPrivateProfileIntW
+#else
+#define GetPrivateProfileInt GetPrivateProfileIntA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetPrivateProfileStringA(
+ LPCSTR lpAppName,
+ LPCSTR lpKeyName,
+ LPCSTR lpDefault,
+ LPSTR lpReturnedString,
+ DWORD nSize,
+ LPCSTR lpFileName
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetPrivateProfileStringW(
+ LPCWSTR lpAppName,
+ LPCWSTR lpKeyName,
+ LPCWSTR lpDefault,
+ LPWSTR lpReturnedString,
+ DWORD nSize,
+ LPCWSTR lpFileName
+ );
+#ifdef UNICODE
+#define GetPrivateProfileString GetPrivateProfileStringW
+#else
+#define GetPrivateProfileString GetPrivateProfileStringA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+WritePrivateProfileStringA(
+ LPCSTR lpAppName,
+ LPCSTR lpKeyName,
+ LPCSTR lpString,
+ LPCSTR lpFileName
+ );
+WINBASEAPI
+BOOL
+WINAPI
+WritePrivateProfileStringW(
+ LPCWSTR lpAppName,
+ LPCWSTR lpKeyName,
+ LPCWSTR lpString,
+ LPCWSTR lpFileName
+ );
+#ifdef UNICODE
+#define WritePrivateProfileString WritePrivateProfileStringW
+#else
+#define WritePrivateProfileString WritePrivateProfileStringA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetPrivateProfileSectionA(
+ LPCSTR lpAppName,
+ LPSTR lpReturnedString,
+ DWORD nSize,
+ LPCSTR lpFileName
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetPrivateProfileSectionW(
+ LPCWSTR lpAppName,
+ LPWSTR lpReturnedString,
+ DWORD nSize,
+ LPCWSTR lpFileName
+ );
+#ifdef UNICODE
+#define GetPrivateProfileSection GetPrivateProfileSectionW
+#else
+#define GetPrivateProfileSection GetPrivateProfileSectionA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+WritePrivateProfileSectionA(
+ LPCSTR lpAppName,
+ LPCSTR lpString,
+ LPCSTR lpFileName
+ );
+WINBASEAPI
+BOOL
+WINAPI
+WritePrivateProfileSectionW(
+ LPCWSTR lpAppName,
+ LPCWSTR lpString,
+ LPCWSTR lpFileName
+ );
+#ifdef UNICODE
+#define WritePrivateProfileSection WritePrivateProfileSectionW
+#else
+#define WritePrivateProfileSection WritePrivateProfileSectionA
+#endif // !UNICODE
+
+
+WINBASEAPI
+DWORD
+WINAPI
+GetPrivateProfileSectionNamesA(
+ LPSTR lpszReturnBuffer,
+ DWORD nSize,
+ LPCSTR lpFileName
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetPrivateProfileSectionNamesW(
+ LPWSTR lpszReturnBuffer,
+ DWORD nSize,
+ LPCWSTR lpFileName
+ );
+#ifdef UNICODE
+#define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesW
+#else
+#define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+GetPrivateProfileStructA(
+ LPCSTR lpszSection,
+ LPCSTR lpszKey,
+ LPVOID lpStruct,
+ UINT uSizeStruct,
+ LPCSTR szFile
+ );
+WINBASEAPI
+BOOL
+WINAPI
+GetPrivateProfileStructW(
+ LPCWSTR lpszSection,
+ LPCWSTR lpszKey,
+ LPVOID lpStruct,
+ UINT uSizeStruct,
+ LPCWSTR szFile
+ );
+#ifdef UNICODE
+#define GetPrivateProfileStruct GetPrivateProfileStructW
+#else
+#define GetPrivateProfileStruct GetPrivateProfileStructA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+WritePrivateProfileStructA(
+ LPCSTR lpszSection,
+ LPCSTR lpszKey,
+ LPVOID lpStruct,
+ UINT uSizeStruct,
+ LPCSTR szFile
+ );
+WINBASEAPI
+BOOL
+WINAPI
+WritePrivateProfileStructW(
+ LPCWSTR lpszSection,
+ LPCWSTR lpszKey,
+ LPVOID lpStruct,
+ UINT uSizeStruct,
+ LPCWSTR szFile
+ );
+#ifdef UNICODE
+#define WritePrivateProfileStruct WritePrivateProfileStructW
+#else
+#define WritePrivateProfileStruct WritePrivateProfileStructA
+#endif // !UNICODE
+
+
+WINBASEAPI
+UINT
+WINAPI
+GetDriveTypeA(
+ LPCSTR lpRootPathName
+ );
+WINBASEAPI
+UINT
+WINAPI
+GetDriveTypeW(
+ LPCWSTR lpRootPathName
+ );
+#ifdef UNICODE
+#define GetDriveType GetDriveTypeW
+#else
+#define GetDriveType GetDriveTypeA
+#endif // !UNICODE
+
+WINBASEAPI
+UINT
+WINAPI
+GetSystemDirectoryA(
+ LPSTR lpBuffer,
+ UINT uSize
+ );
+WINBASEAPI
+UINT
+WINAPI
+GetSystemDirectoryW(
+ LPWSTR lpBuffer,
+ UINT uSize
+ );
+#ifdef UNICODE
+#define GetSystemDirectory GetSystemDirectoryW
+#else
+#define GetSystemDirectory GetSystemDirectoryA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetTempPathA(
+ DWORD nBufferLength,
+ LPSTR lpBuffer
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetTempPathW(
+ DWORD nBufferLength,
+ LPWSTR lpBuffer
+ );
+#ifdef UNICODE
+#define GetTempPath GetTempPathW
+#else
+#define GetTempPath GetTempPathA
+#endif // !UNICODE
+
+WINBASEAPI
+UINT
+WINAPI
+GetTempFileNameA(
+ LPCSTR lpPathName,
+ LPCSTR lpPrefixString,
+ UINT uUnique,
+ LPSTR lpTempFileName
+ );
+WINBASEAPI
+UINT
+WINAPI
+GetTempFileNameW(
+ LPCWSTR lpPathName,
+ LPCWSTR lpPrefixString,
+ UINT uUnique,
+ LPWSTR lpTempFileName
+ );
+#ifdef UNICODE
+#define GetTempFileName GetTempFileNameW
+#else
+#define GetTempFileName GetTempFileNameA
+#endif // !UNICODE
+
+WINBASEAPI
+UINT
+WINAPI
+GetWindowsDirectoryA(
+ LPSTR lpBuffer,
+ UINT uSize
+ );
+WINBASEAPI
+UINT
+WINAPI
+GetWindowsDirectoryW(
+ LPWSTR lpBuffer,
+ UINT uSize
+ );
+#ifdef UNICODE
+#define GetWindowsDirectory GetWindowsDirectoryW
+#else
+#define GetWindowsDirectory GetWindowsDirectoryA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetCurrentDirectoryA(
+ LPCSTR lpPathName
+ );
+WINBASEAPI
+BOOL
+WINAPI
+SetCurrentDirectoryW(
+ LPCWSTR lpPathName
+ );
+#ifdef UNICODE
+#define SetCurrentDirectory SetCurrentDirectoryW
+#else
+#define SetCurrentDirectory SetCurrentDirectoryA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetCurrentDirectoryA(
+ DWORD nBufferLength,
+ LPSTR lpBuffer
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetCurrentDirectoryW(
+ DWORD nBufferLength,
+ LPWSTR lpBuffer
+ );
+#ifdef UNICODE
+#define GetCurrentDirectory GetCurrentDirectoryW
+#else
+#define GetCurrentDirectory GetCurrentDirectoryA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+GetDiskFreeSpaceA(
+ LPCSTR lpRootPathName,
+ LPDWORD lpSectorsPerCluster,
+ LPDWORD lpBytesPerSector,
+ LPDWORD lpNumberOfFreeClusters,
+ LPDWORD lpTotalNumberOfClusters
+ );
+WINBASEAPI
+BOOL
+WINAPI
+GetDiskFreeSpaceW(
+ LPCWSTR lpRootPathName,
+ LPDWORD lpSectorsPerCluster,
+ LPDWORD lpBytesPerSector,
+ LPDWORD lpNumberOfFreeClusters,
+ LPDWORD lpTotalNumberOfClusters
+ );
+#ifdef UNICODE
+#define GetDiskFreeSpace GetDiskFreeSpaceW
+#else
+#define GetDiskFreeSpace GetDiskFreeSpaceA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+GetDiskFreeSpaceExA(
+ LPCSTR lpDirectoryName,
+ PULARGE_INTEGER lpFreeBytesAvailableToCaller,
+ PULARGE_INTEGER lpTotalNumberOfBytes,
+ PULARGE_INTEGER lpTotalNumberOfFreeBytes
+ );
+WINBASEAPI
+BOOL
+WINAPI
+GetDiskFreeSpaceExW(
+ LPCWSTR lpDirectoryName,
+ PULARGE_INTEGER lpFreeBytesAvailableToCaller,
+ PULARGE_INTEGER lpTotalNumberOfBytes,
+ PULARGE_INTEGER lpTotalNumberOfFreeBytes
+ );
+#ifdef UNICODE
+#define GetDiskFreeSpaceEx GetDiskFreeSpaceExW
+#else
+#define GetDiskFreeSpaceEx GetDiskFreeSpaceExA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+CreateDirectoryA(
+ LPCSTR lpPathName,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes
+ );
+WINBASEAPI
+BOOL
+WINAPI
+CreateDirectoryW(
+ LPCWSTR lpPathName,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes
+ );
+#ifdef UNICODE
+#define CreateDirectory CreateDirectoryW
+#else
+#define CreateDirectory CreateDirectoryA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+CreateDirectoryExA(
+ LPCSTR lpTemplateDirectory,
+ LPCSTR lpNewDirectory,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes
+ );
+WINBASEAPI
+BOOL
+WINAPI
+CreateDirectoryExW(
+ LPCWSTR lpTemplateDirectory,
+ LPCWSTR lpNewDirectory,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes
+ );
+#ifdef UNICODE
+#define CreateDirectoryEx CreateDirectoryExW
+#else
+#define CreateDirectoryEx CreateDirectoryExA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+RemoveDirectoryA(
+ LPCSTR lpPathName
+ );
+WINBASEAPI
+BOOL
+WINAPI
+RemoveDirectoryW(
+ LPCWSTR lpPathName
+ );
+#ifdef UNICODE
+#define RemoveDirectory RemoveDirectoryW
+#else
+#define RemoveDirectory RemoveDirectoryA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetFullPathNameA(
+ LPCSTR lpFileName,
+ DWORD nBufferLength,
+ LPSTR lpBuffer,
+ LPSTR *lpFilePart
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetFullPathNameW(
+ LPCWSTR lpFileName,
+ DWORD nBufferLength,
+ LPWSTR lpBuffer,
+ LPWSTR *lpFilePart
+ );
+#ifdef UNICODE
+#define GetFullPathName GetFullPathNameW
+#else
+#define GetFullPathName GetFullPathNameA
+#endif // !UNICODE
+
+
+#define DDD_RAW_TARGET_PATH 0x00000001
+#define DDD_REMOVE_DEFINITION 0x00000002
+#define DDD_EXACT_MATCH_ON_REMOVE 0x00000004
+#define DDD_NO_BROADCAST_SYSTEM 0x00000008
+
+WINBASEAPI
+BOOL
+WINAPI
+DefineDosDeviceA(
+ DWORD dwFlags,
+ LPCSTR lpDeviceName,
+ LPCSTR lpTargetPath
+ );
+WINBASEAPI
+BOOL
+WINAPI
+DefineDosDeviceW(
+ DWORD dwFlags,
+ LPCWSTR lpDeviceName,
+ LPCWSTR lpTargetPath
+ );
+#ifdef UNICODE
+#define DefineDosDevice DefineDosDeviceW
+#else
+#define DefineDosDevice DefineDosDeviceA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+QueryDosDeviceA(
+ LPCSTR lpDeviceName,
+ LPSTR lpTargetPath,
+ DWORD ucchMax
+ );
+WINBASEAPI
+DWORD
+WINAPI
+QueryDosDeviceW(
+ LPCWSTR lpDeviceName,
+ LPWSTR lpTargetPath,
+ DWORD ucchMax
+ );
+#ifdef UNICODE
+#define QueryDosDevice QueryDosDeviceW
+#else
+#define QueryDosDevice QueryDosDeviceA
+#endif // !UNICODE
+
+#define EXPAND_LOCAL_DRIVES
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateFileA(
+ LPCSTR lpFileName,
+ DWORD dwDesiredAccess,
+ DWORD dwShareMode,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+ DWORD dwCreationDisposition,
+ DWORD dwFlagsAndAttributes,
+ HANDLE hTemplateFile
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+CreateFileW(
+ LPCWSTR lpFileName,
+ DWORD dwDesiredAccess,
+ DWORD dwShareMode,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+ DWORD dwCreationDisposition,
+ DWORD dwFlagsAndAttributes,
+ HANDLE hTemplateFile
+ );
+#ifdef UNICODE
+#define CreateFile CreateFileW
+#else
+#define CreateFile CreateFileA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetFileAttributesA(
+ LPCSTR lpFileName,
+ DWORD dwFileAttributes
+ );
+WINBASEAPI
+BOOL
+WINAPI
+SetFileAttributesW(
+ LPCWSTR lpFileName,
+ DWORD dwFileAttributes
+ );
+#ifdef UNICODE
+#define SetFileAttributes SetFileAttributesW
+#else
+#define SetFileAttributes SetFileAttributesA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetFileAttributesA(
+ LPCSTR lpFileName
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetFileAttributesW(
+ LPCWSTR lpFileName
+ );
+#ifdef UNICODE
+#define GetFileAttributes GetFileAttributesW
+#else
+#define GetFileAttributes GetFileAttributesA
+#endif // !UNICODE
+
+typedef enum _GET_FILEEX_INFO_LEVELS {
+ GetFileExInfoStandard,
+ GetFileExMaxInfoLevel
+} GET_FILEEX_INFO_LEVELS;
+
+WINBASEAPI
+BOOL
+WINAPI
+GetFileAttributesExA(
+ LPCSTR lpFileName,
+ GET_FILEEX_INFO_LEVELS fInfoLevelId,
+ LPVOID lpFileInformation
+ );
+WINBASEAPI
+BOOL
+WINAPI
+GetFileAttributesExW(
+ LPCWSTR lpFileName,
+ GET_FILEEX_INFO_LEVELS fInfoLevelId,
+ LPVOID lpFileInformation
+ );
+#ifdef UNICODE
+#define GetFileAttributesEx GetFileAttributesExW
+#else
+#define GetFileAttributesEx GetFileAttributesExA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+GetCompressedFileSizeA(
+ LPCSTR lpFileName,
+ LPDWORD lpFileSizeHigh
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetCompressedFileSizeW(
+ LPCWSTR lpFileName,
+ LPDWORD lpFileSizeHigh
+ );
+#ifdef UNICODE
+#define GetCompressedFileSize GetCompressedFileSizeW
+#else
+#define GetCompressedFileSize GetCompressedFileSizeA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+DeleteFileA(
+ LPCSTR lpFileName
+ );
+WINBASEAPI
+BOOL
+WINAPI
+DeleteFileW(
+ LPCWSTR lpFileName
+ );
+#ifdef UNICODE
+#define DeleteFile DeleteFileW
+#else
+#define DeleteFile DeleteFileA
+#endif // !UNICODE
+
+#if(_WIN32_WINNT >= 0x0400)
+typedef enum _FINDEX_INFO_LEVELS {
+ FindExInfoStandard,
+ FindExInfoMaxInfoLevel
+} FINDEX_INFO_LEVELS;
+
+typedef enum _FINDEX_SEARCH_OPS {
+ FindExSearchNameMatch,
+ FindExSearchLimitToDirectories,
+ FindExSearchLimitToDevices,
+ FindExSearchMaxSearchOp
+} FINDEX_SEARCH_OPS;
+
+#define FIND_FIRST_EX_CASE_SENSITIVE 0x00000001
+
+WINBASEAPI
+HANDLE
+WINAPI
+FindFirstFileExA(
+ LPCSTR lpFileName,
+ FINDEX_INFO_LEVELS fInfoLevelId,
+ LPVOID lpFindFileData,
+ FINDEX_SEARCH_OPS fSearchOp,
+ LPVOID lpSearchFilter,
+ DWORD dwAdditionalFlags
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+FindFirstFileExW(
+ LPCWSTR lpFileName,
+ FINDEX_INFO_LEVELS fInfoLevelId,
+ LPVOID lpFindFileData,
+ FINDEX_SEARCH_OPS fSearchOp,
+ LPVOID lpSearchFilter,
+ DWORD dwAdditionalFlags
+ );
+#ifdef UNICODE
+#define FindFirstFileEx FindFirstFileExW
+#else
+#define FindFirstFileEx FindFirstFileExA
+#endif // !UNICODE
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+WINBASEAPI
+HANDLE
+WINAPI
+FindFirstFileA(
+ LPCSTR lpFileName,
+ LPWIN32_FIND_DATAA lpFindFileData
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+FindFirstFileW(
+ LPCWSTR lpFileName,
+ LPWIN32_FIND_DATAW lpFindFileData
+ );
+#ifdef UNICODE
+#define FindFirstFile FindFirstFileW
+#else
+#define FindFirstFile FindFirstFileA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+FindNextFileA(
+ HANDLE hFindFile,
+ LPWIN32_FIND_DATAA lpFindFileData
+ );
+WINBASEAPI
+BOOL
+WINAPI
+FindNextFileW(
+ HANDLE hFindFile,
+ LPWIN32_FIND_DATAW lpFindFileData
+ );
+#ifdef UNICODE
+#define FindNextFile FindNextFileW
+#else
+#define FindNextFile FindNextFileA
+#endif // !UNICODE
+
+WINBASEAPI
+DWORD
+WINAPI
+SearchPathA(
+ LPCSTR lpPath,
+ LPCSTR lpFileName,
+ LPCSTR lpExtension,
+ DWORD nBufferLength,
+ LPSTR lpBuffer,
+ LPSTR *lpFilePart
+ );
+WINBASEAPI
+DWORD
+WINAPI
+SearchPathW(
+ LPCWSTR lpPath,
+ LPCWSTR lpFileName,
+ LPCWSTR lpExtension,
+ DWORD nBufferLength,
+ LPWSTR lpBuffer,
+ LPWSTR *lpFilePart
+ );
+#ifdef UNICODE
+#define SearchPath SearchPathW
+#else
+#define SearchPath SearchPathA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+CopyFileA(
+ LPCSTR lpExistingFileName,
+ LPCSTR lpNewFileName,
+ BOOL bFailIfExists
+ );
+WINBASEAPI
+BOOL
+WINAPI
+CopyFileW(
+ LPCWSTR lpExistingFileName,
+ LPCWSTR lpNewFileName,
+ BOOL bFailIfExists
+ );
+#ifdef UNICODE
+#define CopyFile CopyFileW
+#else
+#define CopyFile CopyFileA
+#endif // !UNICODE
+
+#if(_WIN32_WINNT >= 0x0400)
+typedef
+DWORD
+(WINAPI *LPPROGRESS_ROUTINE)(
+ LARGE_INTEGER TotalFileSize,
+ LARGE_INTEGER TotalBytesTransferred,
+ LARGE_INTEGER StreamSize,
+ LARGE_INTEGER StreamBytesTransferred,
+ DWORD dwStreamNumber,
+ DWORD dwCallbackReason,
+ HANDLE hSourceFile,
+ HANDLE hDestinationFile,
+ LPVOID lpData OPTIONAL
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+CopyFileExA(
+ LPCSTR lpExistingFileName,
+ LPCSTR lpNewFileName,
+ LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
+ LPVOID lpData OPTIONAL,
+ LPBOOL pbCancel OPTIONAL,
+ DWORD dwCopyFlags
+ );
+WINBASEAPI
+BOOL
+WINAPI
+CopyFileExW(
+ LPCWSTR lpExistingFileName,
+ LPCWSTR lpNewFileName,
+ LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
+ LPVOID lpData OPTIONAL,
+ LPBOOL pbCancel OPTIONAL,
+ DWORD dwCopyFlags
+ );
+#ifdef UNICODE
+#define CopyFileEx CopyFileExW
+#else
+#define CopyFileEx CopyFileExA
+#endif // !UNICODE
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+WINBASEAPI
+BOOL
+WINAPI
+MoveFileA(
+ LPCSTR lpExistingFileName,
+ LPCSTR lpNewFileName
+ );
+WINBASEAPI
+BOOL
+WINAPI
+MoveFileW(
+ LPCWSTR lpExistingFileName,
+ LPCWSTR lpNewFileName
+ );
+#ifdef UNICODE
+#define MoveFile MoveFileW
+#else
+#define MoveFile MoveFileA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+MoveFileExA(
+ LPCSTR lpExistingFileName,
+ LPCSTR lpNewFileName,
+ DWORD dwFlags
+ );
+WINBASEAPI
+BOOL
+WINAPI
+MoveFileExW(
+ LPCWSTR lpExistingFileName,
+ LPCWSTR lpNewFileName,
+ DWORD dwFlags
+ );
+#ifdef UNICODE
+#define MoveFileEx MoveFileExW
+#else
+#define MoveFileEx MoveFileExA
+#endif // !UNICODE
+
+#define MOVEFILE_REPLACE_EXISTING 0x00000001
+#define MOVEFILE_COPY_ALLOWED 0x00000002
+#define MOVEFILE_DELAY_UNTIL_REBOOT 0x00000004
+#define MOVEFILE_WRITE_THROUGH 0x00000008
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateNamedPipeA(
+ LPCSTR lpName,
+ DWORD dwOpenMode,
+ DWORD dwPipeMode,
+ DWORD nMaxInstances,
+ DWORD nOutBufferSize,
+ DWORD nInBufferSize,
+ DWORD nDefaultTimeOut,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+CreateNamedPipeW(
+ LPCWSTR lpName,
+ DWORD dwOpenMode,
+ DWORD dwPipeMode,
+ DWORD nMaxInstances,
+ DWORD nOutBufferSize,
+ DWORD nInBufferSize,
+ DWORD nDefaultTimeOut,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes
+ );
+#ifdef UNICODE
+#define CreateNamedPipe CreateNamedPipeW
+#else
+#define CreateNamedPipe CreateNamedPipeA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+GetNamedPipeHandleStateA(
+ HANDLE hNamedPipe,
+ LPDWORD lpState,
+ LPDWORD lpCurInstances,
+ LPDWORD lpMaxCollectionCount,
+ LPDWORD lpCollectDataTimeout,
+ LPSTR lpUserName,
+ DWORD nMaxUserNameSize
+ );
+WINBASEAPI
+BOOL
+WINAPI
+GetNamedPipeHandleStateW(
+ HANDLE hNamedPipe,
+ LPDWORD lpState,
+ LPDWORD lpCurInstances,
+ LPDWORD lpMaxCollectionCount,
+ LPDWORD lpCollectDataTimeout,
+ LPWSTR lpUserName,
+ DWORD nMaxUserNameSize
+ );
+#ifdef UNICODE
+#define GetNamedPipeHandleState GetNamedPipeHandleStateW
+#else
+#define GetNamedPipeHandleState GetNamedPipeHandleStateA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+CallNamedPipeA(
+ LPCSTR lpNamedPipeName,
+ LPVOID lpInBuffer,
+ DWORD nInBufferSize,
+ LPVOID lpOutBuffer,
+ DWORD nOutBufferSize,
+ LPDWORD lpBytesRead,
+ DWORD nTimeOut
+ );
+WINBASEAPI
+BOOL
+WINAPI
+CallNamedPipeW(
+ LPCWSTR lpNamedPipeName,
+ LPVOID lpInBuffer,
+ DWORD nInBufferSize,
+ LPVOID lpOutBuffer,
+ DWORD nOutBufferSize,
+ LPDWORD lpBytesRead,
+ DWORD nTimeOut
+ );
+#ifdef UNICODE
+#define CallNamedPipe CallNamedPipeW
+#else
+#define CallNamedPipe CallNamedPipeA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+WaitNamedPipeA(
+ LPCSTR lpNamedPipeName,
+ DWORD nTimeOut
+ );
+WINBASEAPI
+BOOL
+WINAPI
+WaitNamedPipeW(
+ LPCWSTR lpNamedPipeName,
+ DWORD nTimeOut
+ );
+#ifdef UNICODE
+#define WaitNamedPipe WaitNamedPipeW
+#else
+#define WaitNamedPipe WaitNamedPipeA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetVolumeLabelA(
+ LPCSTR lpRootPathName,
+ LPCSTR lpVolumeName
+ );
+WINBASEAPI
+BOOL
+WINAPI
+SetVolumeLabelW(
+ LPCWSTR lpRootPathName,
+ LPCWSTR lpVolumeName
+ );
+#ifdef UNICODE
+#define SetVolumeLabel SetVolumeLabelW
+#else
+#define SetVolumeLabel SetVolumeLabelA
+#endif // !UNICODE
+
+WINBASEAPI
+VOID
+WINAPI
+SetFileApisToOEM( VOID );
+
+WINBASEAPI
+VOID
+WINAPI
+SetFileApisToANSI( VOID );
+
+WINBASEAPI
+BOOL
+WINAPI
+AreFileApisANSI( VOID );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetVolumeInformationA(
+ LPCSTR lpRootPathName,
+ LPSTR lpVolumeNameBuffer,
+ DWORD nVolumeNameSize,
+ LPDWORD lpVolumeSerialNumber,
+ LPDWORD lpMaximumComponentLength,
+ LPDWORD lpFileSystemFlags,
+ LPSTR lpFileSystemNameBuffer,
+ DWORD nFileSystemNameSize
+ );
+WINBASEAPI
+BOOL
+WINAPI
+GetVolumeInformationW(
+ LPCWSTR lpRootPathName,
+ LPWSTR lpVolumeNameBuffer,
+ DWORD nVolumeNameSize,
+ LPDWORD lpVolumeSerialNumber,
+ LPDWORD lpMaximumComponentLength,
+ LPDWORD lpFileSystemFlags,
+ LPWSTR lpFileSystemNameBuffer,
+ DWORD nFileSystemNameSize
+ );
+#ifdef UNICODE
+#define GetVolumeInformation GetVolumeInformationW
+#else
+#define GetVolumeInformation GetVolumeInformationA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+CancelIo(
+ HANDLE hFile
+ );
+
+//
+// Event logging APIs
+//
+
+WINADVAPI
+BOOL
+WINAPI
+ClearEventLogA (
+ HANDLE hEventLog,
+ LPCSTR lpBackupFileName
+ );
+WINADVAPI
+BOOL
+WINAPI
+ClearEventLogW (
+ HANDLE hEventLog,
+ LPCWSTR lpBackupFileName
+ );
+#ifdef UNICODE
+#define ClearEventLog ClearEventLogW
+#else
+#define ClearEventLog ClearEventLogA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+BackupEventLogA (
+ HANDLE hEventLog,
+ LPCSTR lpBackupFileName
+ );
+WINADVAPI
+BOOL
+WINAPI
+BackupEventLogW (
+ HANDLE hEventLog,
+ LPCWSTR lpBackupFileName
+ );
+#ifdef UNICODE
+#define BackupEventLog BackupEventLogW
+#else
+#define BackupEventLog BackupEventLogA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+CloseEventLog (
+ HANDLE hEventLog
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+DeregisterEventSource (
+ HANDLE hEventLog
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+NotifyChangeEventLog(
+ HANDLE hEventLog,
+ HANDLE hEvent
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+GetNumberOfEventLogRecords (
+ HANDLE hEventLog,
+ PDWORD NumberOfRecords
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+GetOldestEventLogRecord (
+ HANDLE hEventLog,
+ PDWORD OldestRecord
+ );
+
+WINADVAPI
+HANDLE
+WINAPI
+OpenEventLogA (
+ LPCSTR lpUNCServerName,
+ LPCSTR lpSourceName
+ );
+WINADVAPI
+HANDLE
+WINAPI
+OpenEventLogW (
+ LPCWSTR lpUNCServerName,
+ LPCWSTR lpSourceName
+ );
+#ifdef UNICODE
+#define OpenEventLog OpenEventLogW
+#else
+#define OpenEventLog OpenEventLogA
+#endif // !UNICODE
+
+WINADVAPI
+HANDLE
+WINAPI
+RegisterEventSourceA (
+ LPCSTR lpUNCServerName,
+ LPCSTR lpSourceName
+ );
+WINADVAPI
+HANDLE
+WINAPI
+RegisterEventSourceW (
+ LPCWSTR lpUNCServerName,
+ LPCWSTR lpSourceName
+ );
+#ifdef UNICODE
+#define RegisterEventSource RegisterEventSourceW
+#else
+#define RegisterEventSource RegisterEventSourceA
+#endif // !UNICODE
+
+WINADVAPI
+HANDLE
+WINAPI
+OpenBackupEventLogA (
+ LPCSTR lpUNCServerName,
+ LPCSTR lpFileName
+ );
+WINADVAPI
+HANDLE
+WINAPI
+OpenBackupEventLogW (
+ LPCWSTR lpUNCServerName,
+ LPCWSTR lpFileName
+ );
+#ifdef UNICODE
+#define OpenBackupEventLog OpenBackupEventLogW
+#else
+#define OpenBackupEventLog OpenBackupEventLogA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+ReadEventLogA (
+ HANDLE hEventLog,
+ DWORD dwReadFlags,
+ DWORD dwRecordOffset,
+ LPVOID lpBuffer,
+ DWORD nNumberOfBytesToRead,
+ DWORD *pnBytesRead,
+ DWORD *pnMinNumberOfBytesNeeded
+ );
+WINADVAPI
+BOOL
+WINAPI
+ReadEventLogW (
+ HANDLE hEventLog,
+ DWORD dwReadFlags,
+ DWORD dwRecordOffset,
+ LPVOID lpBuffer,
+ DWORD nNumberOfBytesToRead,
+ DWORD *pnBytesRead,
+ DWORD *pnMinNumberOfBytesNeeded
+ );
+#ifdef UNICODE
+#define ReadEventLog ReadEventLogW
+#else
+#define ReadEventLog ReadEventLogA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+ReportEventA (
+ HANDLE hEventLog,
+ WORD wType,
+ WORD wCategory,
+ DWORD dwEventID,
+ PSID lpUserSid,
+ WORD wNumStrings,
+ DWORD dwDataSize,
+ LPCSTR *lpStrings,
+ LPVOID lpRawData
+ );
+WINADVAPI
+BOOL
+WINAPI
+ReportEventW (
+ HANDLE hEventLog,
+ WORD wType,
+ WORD wCategory,
+ DWORD dwEventID,
+ PSID lpUserSid,
+ WORD wNumStrings,
+ DWORD dwDataSize,
+ LPCWSTR *lpStrings,
+ LPVOID lpRawData
+ );
+#ifdef UNICODE
+#define ReportEvent ReportEventW
+#else
+#define ReportEvent ReportEventA
+#endif // !UNICODE
+
+//
+//
+// Security APIs
+//
+
+
+WINADVAPI
+BOOL
+WINAPI
+DuplicateToken(
+ HANDLE ExistingTokenHandle,
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
+ PHANDLE DuplicateTokenHandle
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+GetKernelObjectSecurity (
+ HANDLE Handle,
+ SECURITY_INFORMATION RequestedInformation,
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ DWORD nLength,
+ LPDWORD lpnLengthNeeded
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+ImpersonateNamedPipeClient(
+ HANDLE hNamedPipe
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+ImpersonateSelf(
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+RevertToSelf (
+ VOID
+ );
+
+WINADVAPI
+BOOL
+APIENTRY
+SetThreadToken (
+ PHANDLE Thread,
+ HANDLE Token
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+AccessCheck (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ HANDLE ClientToken,
+ DWORD DesiredAccess,
+ PGENERIC_MAPPING GenericMapping,
+ PPRIVILEGE_SET PrivilegeSet,
+ LPDWORD PrivilegeSetLength,
+ LPDWORD GrantedAccess,
+ LPBOOL AccessStatus
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+OpenProcessToken (
+ HANDLE ProcessHandle,
+ DWORD DesiredAccess,
+ PHANDLE TokenHandle
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+OpenThreadToken (
+ HANDLE ThreadHandle,
+ DWORD DesiredAccess,
+ BOOL OpenAsSelf,
+ PHANDLE TokenHandle
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetTokenInformation (
+ HANDLE TokenHandle,
+ TOKEN_INFORMATION_CLASS TokenInformationClass,
+ LPVOID TokenInformation,
+ DWORD TokenInformationLength,
+ PDWORD ReturnLength
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+SetTokenInformation (
+ HANDLE TokenHandle,
+ TOKEN_INFORMATION_CLASS TokenInformationClass,
+ LPVOID TokenInformation,
+ DWORD TokenInformationLength
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+AdjustTokenPrivileges (
+ HANDLE TokenHandle,
+ BOOL DisableAllPrivileges,
+ PTOKEN_PRIVILEGES NewState,
+ DWORD BufferLength,
+ PTOKEN_PRIVILEGES PreviousState,
+ PDWORD ReturnLength
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+AdjustTokenGroups (
+ HANDLE TokenHandle,
+ BOOL ResetToDefault,
+ PTOKEN_GROUPS NewState,
+ DWORD BufferLength,
+ PTOKEN_GROUPS PreviousState,
+ PDWORD ReturnLength
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+PrivilegeCheck (
+ HANDLE ClientToken,
+ PPRIVILEGE_SET RequiredPrivileges,
+ LPBOOL pfResult
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+AccessCheckAndAuditAlarmA (
+ LPCSTR SubsystemName,
+ LPVOID HandleId,
+ LPSTR ObjectTypeName,
+ LPSTR ObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ DWORD DesiredAccess,
+ PGENERIC_MAPPING GenericMapping,
+ BOOL ObjectCreation,
+ LPDWORD GrantedAccess,
+ LPBOOL AccessStatus,
+ LPBOOL pfGenerateOnClose
+ );
+WINADVAPI
+BOOL
+WINAPI
+AccessCheckAndAuditAlarmW (
+ LPCWSTR SubsystemName,
+ LPVOID HandleId,
+ LPWSTR ObjectTypeName,
+ LPWSTR ObjectName,
+ PSECURITY_DESCRIPTOR SecurityDescriptor,
+ DWORD DesiredAccess,
+ PGENERIC_MAPPING GenericMapping,
+ BOOL ObjectCreation,
+ LPDWORD GrantedAccess,
+ LPBOOL AccessStatus,
+ LPBOOL pfGenerateOnClose
+ );
+#ifdef UNICODE
+#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmW
+#else
+#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+ObjectOpenAuditAlarmA (
+ LPCSTR SubsystemName,
+ LPVOID HandleId,
+ LPSTR ObjectTypeName,
+ LPSTR ObjectName,
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ HANDLE ClientToken,
+ DWORD DesiredAccess,
+ DWORD GrantedAccess,
+ PPRIVILEGE_SET Privileges,
+ BOOL ObjectCreation,
+ BOOL AccessGranted,
+ LPBOOL GenerateOnClose
+ );
+WINADVAPI
+BOOL
+WINAPI
+ObjectOpenAuditAlarmW (
+ LPCWSTR SubsystemName,
+ LPVOID HandleId,
+ LPWSTR ObjectTypeName,
+ LPWSTR ObjectName,
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ HANDLE ClientToken,
+ DWORD DesiredAccess,
+ DWORD GrantedAccess,
+ PPRIVILEGE_SET Privileges,
+ BOOL ObjectCreation,
+ BOOL AccessGranted,
+ LPBOOL GenerateOnClose
+ );
+#ifdef UNICODE
+#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmW
+#else
+#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+ObjectPrivilegeAuditAlarmA (
+ LPCSTR SubsystemName,
+ LPVOID HandleId,
+ HANDLE ClientToken,
+ DWORD DesiredAccess,
+ PPRIVILEGE_SET Privileges,
+ BOOL AccessGranted
+ );
+WINADVAPI
+BOOL
+WINAPI
+ObjectPrivilegeAuditAlarmW (
+ LPCWSTR SubsystemName,
+ LPVOID HandleId,
+ HANDLE ClientToken,
+ DWORD DesiredAccess,
+ PPRIVILEGE_SET Privileges,
+ BOOL AccessGranted
+ );
+#ifdef UNICODE
+#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmW
+#else
+#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+ObjectCloseAuditAlarmA (
+ LPCSTR SubsystemName,
+ LPVOID HandleId,
+ BOOL GenerateOnClose
+ );
+WINADVAPI
+BOOL
+WINAPI
+ObjectCloseAuditAlarmW (
+ LPCWSTR SubsystemName,
+ LPVOID HandleId,
+ BOOL GenerateOnClose
+ );
+#ifdef UNICODE
+#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmW
+#else
+#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+ObjectDeleteAuditAlarmA (
+ LPCSTR SubsystemName,
+ LPVOID HandleId,
+ BOOL GenerateOnClose
+ );
+WINADVAPI
+BOOL
+WINAPI
+ObjectDeleteAuditAlarmW (
+ LPCWSTR SubsystemName,
+ LPVOID HandleId,
+ BOOL GenerateOnClose
+ );
+#ifdef UNICODE
+#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmW
+#else
+#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+PrivilegedServiceAuditAlarmA (
+ LPCSTR SubsystemName,
+ LPCSTR ServiceName,
+ HANDLE ClientToken,
+ PPRIVILEGE_SET Privileges,
+ BOOL AccessGranted
+ );
+WINADVAPI
+BOOL
+WINAPI
+PrivilegedServiceAuditAlarmW (
+ LPCWSTR SubsystemName,
+ LPCWSTR ServiceName,
+ HANDLE ClientToken,
+ PPRIVILEGE_SET Privileges,
+ BOOL AccessGranted
+ );
+#ifdef UNICODE
+#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmW
+#else
+#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+IsValidSid (
+ PSID pSid
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+EqualSid (
+ PSID pSid1,
+ PSID pSid2
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+EqualPrefixSid (
+ PSID pSid1,
+ PSID pSid2
+ );
+
+
+WINADVAPI
+DWORD
+WINAPI
+GetSidLengthRequired (
+ UCHAR nSubAuthorityCount
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+AllocateAndInitializeSid (
+ PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
+ BYTE nSubAuthorityCount,
+ DWORD nSubAuthority0,
+ DWORD nSubAuthority1,
+ DWORD nSubAuthority2,
+ DWORD nSubAuthority3,
+ DWORD nSubAuthority4,
+ DWORD nSubAuthority5,
+ DWORD nSubAuthority6,
+ DWORD nSubAuthority7,
+ PSID *pSid
+ );
+
+WINADVAPI
+PVOID
+WINAPI
+FreeSid(
+ PSID pSid
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+InitializeSid (
+ PSID Sid,
+ PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
+ BYTE nSubAuthorityCount
+ );
+
+
+WINADVAPI
+PSID_IDENTIFIER_AUTHORITY
+WINAPI
+GetSidIdentifierAuthority (
+ PSID pSid
+ );
+
+
+WINADVAPI
+PDWORD
+WINAPI
+GetSidSubAuthority (
+ PSID pSid,
+ DWORD nSubAuthority
+ );
+
+
+WINADVAPI
+PUCHAR
+WINAPI
+GetSidSubAuthorityCount (
+ PSID pSid
+ );
+
+
+WINADVAPI
+DWORD
+WINAPI
+GetLengthSid (
+ PSID pSid
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+CopySid (
+ DWORD nDestinationSidLength,
+ PSID pDestinationSid,
+ PSID pSourceSid
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+AreAllAccessesGranted (
+ DWORD GrantedAccess,
+ DWORD DesiredAccess
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+AreAnyAccessesGranted (
+ DWORD GrantedAccess,
+ DWORD DesiredAccess
+ );
+
+
+WINADVAPI
+VOID
+WINAPI
+MapGenericMask (
+ PDWORD AccessMask,
+ PGENERIC_MAPPING GenericMapping
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+IsValidAcl (
+ PACL pAcl
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+InitializeAcl (
+ PACL pAcl,
+ DWORD nAclLength,
+ DWORD dwAclRevision
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetAclInformation (
+ PACL pAcl,
+ LPVOID pAclInformation,
+ DWORD nAclInformationLength,
+ ACL_INFORMATION_CLASS dwAclInformationClass
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+SetAclInformation (
+ PACL pAcl,
+ LPVOID pAclInformation,
+ DWORD nAclInformationLength,
+ ACL_INFORMATION_CLASS dwAclInformationClass
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+AddAce (
+ PACL pAcl,
+ DWORD dwAceRevision,
+ DWORD dwStartingAceIndex,
+ LPVOID pAceList,
+ DWORD nAceListLength
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+DeleteAce (
+ PACL pAcl,
+ DWORD dwAceIndex
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetAce (
+ PACL pAcl,
+ DWORD dwAceIndex,
+ LPVOID *pAce
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+AddAccessAllowedAce (
+ PACL pAcl,
+ DWORD dwAceRevision,
+ DWORD AccessMask,
+ PSID pSid
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+AddAccessDeniedAce (
+ PACL pAcl,
+ DWORD dwAceRevision,
+ DWORD AccessMask,
+ PSID pSid
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+AddAuditAccessAce(
+ PACL pAcl,
+ DWORD dwAceRevision,
+ DWORD dwAccessMask,
+ PSID pSid,
+ BOOL bAuditSuccess,
+ BOOL bAuditFailure
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+FindFirstFreeAce (
+ PACL pAcl,
+ LPVOID *pAce
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+InitializeSecurityDescriptor (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ DWORD dwRevision
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+IsValidSecurityDescriptor (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor
+ );
+
+
+WINADVAPI
+DWORD
+WINAPI
+GetSecurityDescriptorLength (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetSecurityDescriptorControl (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ PSECURITY_DESCRIPTOR_CONTROL pControl,
+ LPDWORD lpdwRevision
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+SetSecurityDescriptorDacl (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ BOOL bDaclPresent,
+ PACL pDacl,
+ BOOL bDaclDefaulted
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetSecurityDescriptorDacl (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ LPBOOL lpbDaclPresent,
+ PACL *pDacl,
+ LPBOOL lpbDaclDefaulted
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+SetSecurityDescriptorSacl (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ BOOL bSaclPresent,
+ PACL pSacl,
+ BOOL bSaclDefaulted
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetSecurityDescriptorSacl (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ LPBOOL lpbSaclPresent,
+ PACL *pSacl,
+ LPBOOL lpbSaclDefaulted
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+SetSecurityDescriptorOwner (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ PSID pOwner,
+ BOOL bOwnerDefaulted
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetSecurityDescriptorOwner (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ PSID *pOwner,
+ LPBOOL lpbOwnerDefaulted
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+SetSecurityDescriptorGroup (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ PSID pGroup,
+ BOOL bGroupDefaulted
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetSecurityDescriptorGroup (
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ PSID *pGroup,
+ LPBOOL lpbGroupDefaulted
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+CreatePrivateObjectSecurity (
+ PSECURITY_DESCRIPTOR ParentDescriptor,
+ PSECURITY_DESCRIPTOR CreatorDescriptor,
+ PSECURITY_DESCRIPTOR * NewDescriptor,
+ BOOL IsDirectoryObject,
+ HANDLE Token,
+ PGENERIC_MAPPING GenericMapping
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+SetPrivateObjectSecurity (
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR ModificationDescriptor,
+ PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
+ PGENERIC_MAPPING GenericMapping,
+ HANDLE Token
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetPrivateObjectSecurity (
+ PSECURITY_DESCRIPTOR ObjectDescriptor,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR ResultantDescriptor,
+ DWORD DescriptorLength,
+ PDWORD ReturnLength
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+DestroyPrivateObjectSecurity (
+ PSECURITY_DESCRIPTOR * ObjectDescriptor
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+MakeSelfRelativeSD (
+ PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
+ PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
+ LPDWORD lpdwBufferLength
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+MakeAbsoluteSD (
+ PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
+ PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
+ LPDWORD lpdwAbsoluteSecurityDescriptorSize,
+ PACL pDacl,
+ LPDWORD lpdwDaclSize,
+ PACL pSacl,
+ LPDWORD lpdwSaclSize,
+ PSID pOwner,
+ LPDWORD lpdwOwnerSize,
+ PSID pPrimaryGroup,
+ LPDWORD lpdwPrimaryGroupSize
+ );
+
+
+WINADVAPI
+BOOL
+WINAPI
+SetFileSecurityA (
+ LPCSTR lpFileName,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR pSecurityDescriptor
+ );
+WINADVAPI
+BOOL
+WINAPI
+SetFileSecurityW (
+ LPCWSTR lpFileName,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR pSecurityDescriptor
+ );
+#ifdef UNICODE
+#define SetFileSecurity SetFileSecurityW
+#else
+#define SetFileSecurity SetFileSecurityA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetFileSecurityA (
+ LPCSTR lpFileName,
+ SECURITY_INFORMATION RequestedInformation,
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ DWORD nLength,
+ LPDWORD lpnLengthNeeded
+ );
+WINADVAPI
+BOOL
+WINAPI
+GetFileSecurityW (
+ LPCWSTR lpFileName,
+ SECURITY_INFORMATION RequestedInformation,
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ DWORD nLength,
+ LPDWORD lpnLengthNeeded
+ );
+#ifdef UNICODE
+#define GetFileSecurity GetFileSecurityW
+#else
+#define GetFileSecurity GetFileSecurityA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+SetKernelObjectSecurity (
+ HANDLE Handle,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR SecurityDescriptor
+ );
+
+
+
+WINBASEAPI
+HANDLE
+WINAPI
+FindFirstChangeNotificationA(
+ LPCSTR lpPathName,
+ BOOL bWatchSubtree,
+ DWORD dwNotifyFilter
+ );
+WINBASEAPI
+HANDLE
+WINAPI
+FindFirstChangeNotificationW(
+ LPCWSTR lpPathName,
+ BOOL bWatchSubtree,
+ DWORD dwNotifyFilter
+ );
+#ifdef UNICODE
+#define FindFirstChangeNotification FindFirstChangeNotificationW
+#else
+#define FindFirstChangeNotification FindFirstChangeNotificationA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+FindNextChangeNotification(
+ HANDLE hChangeHandle
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FindCloseChangeNotification(
+ HANDLE hChangeHandle
+ );
+
+#if(_WIN32_WINNT >= 0x0400)
+WINBASEAPI
+BOOL
+WINAPI
+ReadDirectoryChangesW(
+ HANDLE hDirectory,
+ LPVOID lpBuffer,
+ DWORD nBufferLength,
+ BOOL bWatchSubtree,
+ DWORD dwNotifyFilter,
+ LPDWORD lpBytesReturned,
+ LPOVERLAPPED lpOverlapped,
+ LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+WINBASEAPI
+BOOL
+WINAPI
+VirtualLock(
+ LPVOID lpAddress,
+ DWORD dwSize
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+VirtualUnlock(
+ LPVOID lpAddress,
+ DWORD dwSize
+ );
+
+WINBASEAPI
+LPVOID
+WINAPI
+MapViewOfFileEx(
+ HANDLE hFileMappingObject,
+ DWORD dwDesiredAccess,
+ DWORD dwFileOffsetHigh,
+ DWORD dwFileOffsetLow,
+ DWORD dwNumberOfBytesToMap,
+ LPVOID lpBaseAddress
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetPriorityClass(
+ HANDLE hProcess,
+ DWORD dwPriorityClass
+ );
+
+WINBASEAPI
+DWORD
+WINAPI
+GetPriorityClass(
+ HANDLE hProcess
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+IsBadReadPtr(
+ CONST VOID *lp,
+ UINT ucb
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+IsBadWritePtr(
+ LPVOID lp,
+ UINT ucb
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+IsBadHugeReadPtr(
+ CONST VOID *lp,
+ UINT ucb
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+IsBadHugeWritePtr(
+ LPVOID lp,
+ UINT ucb
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+IsBadCodePtr(
+ FARPROC lpfn
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+IsBadStringPtrA(
+ LPCSTR lpsz,
+ UINT ucchMax
+ );
+WINBASEAPI
+BOOL
+WINAPI
+IsBadStringPtrW(
+ LPCWSTR lpsz,
+ UINT ucchMax
+ );
+#ifdef UNICODE
+#define IsBadStringPtr IsBadStringPtrW
+#else
+#define IsBadStringPtr IsBadStringPtrA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+LookupAccountSidA(
+ LPCSTR lpSystemName,
+ PSID Sid,
+ LPSTR Name,
+ LPDWORD cbName,
+ LPSTR ReferencedDomainName,
+ LPDWORD cbReferencedDomainName,
+ PSID_NAME_USE peUse
+ );
+WINADVAPI
+BOOL
+WINAPI
+LookupAccountSidW(
+ LPCWSTR lpSystemName,
+ PSID Sid,
+ LPWSTR Name,
+ LPDWORD cbName,
+ LPWSTR ReferencedDomainName,
+ LPDWORD cbReferencedDomainName,
+ PSID_NAME_USE peUse
+ );
+#ifdef UNICODE
+#define LookupAccountSid LookupAccountSidW
+#else
+#define LookupAccountSid LookupAccountSidA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+LookupAccountNameA(
+ LPCSTR lpSystemName,
+ LPCSTR lpAccountName,
+ PSID Sid,
+ LPDWORD cbSid,
+ LPSTR ReferencedDomainName,
+ LPDWORD cbReferencedDomainName,
+ PSID_NAME_USE peUse
+ );
+WINADVAPI
+BOOL
+WINAPI
+LookupAccountNameW(
+ LPCWSTR lpSystemName,
+ LPCWSTR lpAccountName,
+ PSID Sid,
+ LPDWORD cbSid,
+ LPWSTR ReferencedDomainName,
+ LPDWORD cbReferencedDomainName,
+ PSID_NAME_USE peUse
+ );
+#ifdef UNICODE
+#define LookupAccountName LookupAccountNameW
+#else
+#define LookupAccountName LookupAccountNameA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+LookupPrivilegeValueA(
+ LPCSTR lpSystemName,
+ LPCSTR lpName,
+ PLUID lpLuid
+ );
+WINADVAPI
+BOOL
+WINAPI
+LookupPrivilegeValueW(
+ LPCWSTR lpSystemName,
+ LPCWSTR lpName,
+ PLUID lpLuid
+ );
+#ifdef UNICODE
+#define LookupPrivilegeValue LookupPrivilegeValueW
+#else
+#define LookupPrivilegeValue LookupPrivilegeValueA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+LookupPrivilegeNameA(
+ LPCSTR lpSystemName,
+ PLUID lpLuid,
+ LPSTR lpName,
+ LPDWORD cbName
+ );
+WINADVAPI
+BOOL
+WINAPI
+LookupPrivilegeNameW(
+ LPCWSTR lpSystemName,
+ PLUID lpLuid,
+ LPWSTR lpName,
+ LPDWORD cbName
+ );
+#ifdef UNICODE
+#define LookupPrivilegeName LookupPrivilegeNameW
+#else
+#define LookupPrivilegeName LookupPrivilegeNameA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+LookupPrivilegeDisplayNameA(
+ LPCSTR lpSystemName,
+ LPCSTR lpName,
+ LPSTR lpDisplayName,
+ LPDWORD cbDisplayName,
+ LPDWORD lpLanguageId
+ );
+WINADVAPI
+BOOL
+WINAPI
+LookupPrivilegeDisplayNameW(
+ LPCWSTR lpSystemName,
+ LPCWSTR lpName,
+ LPWSTR lpDisplayName,
+ LPDWORD cbDisplayName,
+ LPDWORD lpLanguageId
+ );
+#ifdef UNICODE
+#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameW
+#else
+#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+AllocateLocallyUniqueId(
+ PLUID Luid
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+BuildCommDCBA(
+ LPCSTR lpDef,
+ LPDCB lpDCB
+ );
+WINBASEAPI
+BOOL
+WINAPI
+BuildCommDCBW(
+ LPCWSTR lpDef,
+ LPDCB lpDCB
+ );
+#ifdef UNICODE
+#define BuildCommDCB BuildCommDCBW
+#else
+#define BuildCommDCB BuildCommDCBA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+BuildCommDCBAndTimeoutsA(
+ LPCSTR lpDef,
+ LPDCB lpDCB,
+ LPCOMMTIMEOUTS lpCommTimeouts
+ );
+WINBASEAPI
+BOOL
+WINAPI
+BuildCommDCBAndTimeoutsW(
+ LPCWSTR lpDef,
+ LPDCB lpDCB,
+ LPCOMMTIMEOUTS lpCommTimeouts
+ );
+#ifdef UNICODE
+#define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsW
+#else
+#define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+CommConfigDialogA(
+ LPCSTR lpszName,
+ HWND hWnd,
+ LPCOMMCONFIG lpCC
+ );
+WINBASEAPI
+BOOL
+WINAPI
+CommConfigDialogW(
+ LPCWSTR lpszName,
+ HWND hWnd,
+ LPCOMMCONFIG lpCC
+ );
+#ifdef UNICODE
+#define CommConfigDialog CommConfigDialogW
+#else
+#define CommConfigDialog CommConfigDialogA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+GetDefaultCommConfigA(
+ LPCSTR lpszName,
+ LPCOMMCONFIG lpCC,
+ LPDWORD lpdwSize
+ );
+WINBASEAPI
+BOOL
+WINAPI
+GetDefaultCommConfigW(
+ LPCWSTR lpszName,
+ LPCOMMCONFIG lpCC,
+ LPDWORD lpdwSize
+ );
+#ifdef UNICODE
+#define GetDefaultCommConfig GetDefaultCommConfigW
+#else
+#define GetDefaultCommConfig GetDefaultCommConfigA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetDefaultCommConfigA(
+ LPCSTR lpszName,
+ LPCOMMCONFIG lpCC,
+ DWORD dwSize
+ );
+WINBASEAPI
+BOOL
+WINAPI
+SetDefaultCommConfigW(
+ LPCWSTR lpszName,
+ LPCOMMCONFIG lpCC,
+ DWORD dwSize
+ );
+#ifdef UNICODE
+#define SetDefaultCommConfig SetDefaultCommConfigW
+#else
+#define SetDefaultCommConfig SetDefaultCommConfigA
+#endif // !UNICODE
+
+#define MAX_COMPUTERNAME_LENGTH 15
+
+WINBASEAPI
+BOOL
+WINAPI
+GetComputerNameA (
+ LPSTR lpBuffer,
+ LPDWORD nSize
+ );
+WINBASEAPI
+BOOL
+WINAPI
+GetComputerNameW (
+ LPWSTR lpBuffer,
+ LPDWORD nSize
+ );
+#ifdef UNICODE
+#define GetComputerName GetComputerNameW
+#else
+#define GetComputerName GetComputerNameA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetComputerNameA (
+ LPCSTR lpComputerName
+ );
+WINBASEAPI
+BOOL
+WINAPI
+SetComputerNameW (
+ LPCWSTR lpComputerName
+ );
+#ifdef UNICODE
+#define SetComputerName SetComputerNameW
+#else
+#define SetComputerName SetComputerNameA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+GetUserNameA (
+ LPSTR lpBuffer,
+ LPDWORD nSize
+ );
+WINADVAPI
+BOOL
+WINAPI
+GetUserNameW (
+ LPWSTR lpBuffer,
+ LPDWORD nSize
+ );
+#ifdef UNICODE
+#define GetUserName GetUserNameW
+#else
+#define GetUserName GetUserNameA
+#endif // !UNICODE
+
+//
+// Logon Support APIs
+//
+
+#define LOGON32_LOGON_INTERACTIVE 2
+#define LOGON32_LOGON_NETWORK 3
+#define LOGON32_LOGON_BATCH 4
+#define LOGON32_LOGON_SERVICE 5
+
+#define LOGON32_PROVIDER_DEFAULT 0
+#define LOGON32_PROVIDER_WINNT35 1
+#if(_WIN32_WINNT >= 0x0400)
+#define LOGON32_PROVIDER_WINNT40 2
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+
+
+WINADVAPI
+BOOL
+WINAPI
+LogonUserA (
+ LPSTR lpszUsername,
+ LPSTR lpszDomain,
+ LPSTR lpszPassword,
+ DWORD dwLogonType,
+ DWORD dwLogonProvider,
+ PHANDLE phToken
+ );
+WINADVAPI
+BOOL
+WINAPI
+LogonUserW (
+ LPWSTR lpszUsername,
+ LPWSTR lpszDomain,
+ LPWSTR lpszPassword,
+ DWORD dwLogonType,
+ DWORD dwLogonProvider,
+ PHANDLE phToken
+ );
+#ifdef UNICODE
+#define LogonUser LogonUserW
+#else
+#define LogonUser LogonUserA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+ImpersonateLoggedOnUser(
+ HANDLE hToken
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+CreateProcessAsUserA (
+ HANDLE hToken,
+ LPCSTR lpApplicationName,
+ LPSTR lpCommandLine,
+ LPSECURITY_ATTRIBUTES lpProcessAttributes,
+ LPSECURITY_ATTRIBUTES lpThreadAttributes,
+ BOOL bInheritHandles,
+ DWORD dwCreationFlags,
+ LPVOID lpEnvironment,
+ LPCSTR lpCurrentDirectory,
+ LPSTARTUPINFOA lpStartupInfo,
+ LPPROCESS_INFORMATION lpProcessInformation
+ );
+WINADVAPI
+BOOL
+WINAPI
+CreateProcessAsUserW (
+ HANDLE hToken,
+ LPCWSTR lpApplicationName,
+ LPWSTR lpCommandLine,
+ LPSECURITY_ATTRIBUTES lpProcessAttributes,
+ LPSECURITY_ATTRIBUTES lpThreadAttributes,
+ BOOL bInheritHandles,
+ DWORD dwCreationFlags,
+ LPVOID lpEnvironment,
+ LPCWSTR lpCurrentDirectory,
+ LPSTARTUPINFOW lpStartupInfo,
+ LPPROCESS_INFORMATION lpProcessInformation
+ );
+#ifdef UNICODE
+#define CreateProcessAsUser CreateProcessAsUserW
+#else
+#define CreateProcessAsUser CreateProcessAsUserA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+DuplicateTokenEx(
+ HANDLE hExistingToken,
+ DWORD dwDesiredAccess,
+ LPSECURITY_ATTRIBUTES lpTokenAttributes,
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
+ TOKEN_TYPE TokenType,
+ PHANDLE phNewToken);
+
+
+#if(_WIN32_WINNT >= 0x0400)
+//
+// Plug-and-Play API's
+//
+
+#define HW_PROFILE_GUIDLEN 39 // 36-characters plus NULL terminator
+#define MAX_PROFILE_LEN 80
+
+#define DOCKINFO_UNDOCKED (0x1)
+#define DOCKINFO_DOCKED (0x2)
+#define DOCKINFO_USER_SUPPLIED (0x4)
+#define DOCKINFO_USER_UNDOCKED (DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED)
+#define DOCKINFO_USER_DOCKED (DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED)
+
+typedef struct tagHW_PROFILE_INFOA {
+ DWORD dwDockInfo;
+ CHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
+ CHAR szHwProfileName[MAX_PROFILE_LEN];
+} HW_PROFILE_INFOA, *LPHW_PROFILE_INFOA;
+typedef struct tagHW_PROFILE_INFOW {
+ DWORD dwDockInfo;
+ WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
+ WCHAR szHwProfileName[MAX_PROFILE_LEN];
+} HW_PROFILE_INFOW, *LPHW_PROFILE_INFOW;
+#ifdef UNICODE
+typedef HW_PROFILE_INFOW HW_PROFILE_INFO;
+typedef LPHW_PROFILE_INFOW LPHW_PROFILE_INFO;
+#else
+typedef HW_PROFILE_INFOA HW_PROFILE_INFO;
+typedef LPHW_PROFILE_INFOA LPHW_PROFILE_INFO;
+#endif // UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+GetCurrentHwProfileA (
+ OUT LPHW_PROFILE_INFOA lpHwProfileInfo
+ );
+WINADVAPI
+BOOL
+WINAPI
+GetCurrentHwProfileW (
+ OUT LPHW_PROFILE_INFOW lpHwProfileInfo
+ );
+#ifdef UNICODE
+#define GetCurrentHwProfile GetCurrentHwProfileW
+#else
+#define GetCurrentHwProfile GetCurrentHwProfileA
+#endif // !UNICODE
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+//
+// Performance counter API's
+//
+
+WINBASEAPI
+BOOL
+WINAPI
+QueryPerformanceCounter(
+ LARGE_INTEGER *lpPerformanceCount
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+QueryPerformanceFrequency(
+ LARGE_INTEGER *lpFrequency
+ );
+
+typedef struct _OSVERSIONINFOA {
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ CHAR szCSDVersion[ 128 ]; // Maintenance string for PSS usage
+} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
+typedef struct _OSVERSIONINFOW {
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ WCHAR szCSDVersion[ 128 ]; // Maintenance string for PSS usage
+} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW;
+#ifdef UNICODE
+typedef OSVERSIONINFOW OSVERSIONINFO;
+typedef POSVERSIONINFOW POSVERSIONINFO;
+typedef LPOSVERSIONINFOW LPOSVERSIONINFO;
+#else
+typedef OSVERSIONINFOA OSVERSIONINFO;
+typedef POSVERSIONINFOA POSVERSIONINFO;
+typedef LPOSVERSIONINFOA LPOSVERSIONINFO;
+#endif // UNICODE
+
+//
+// dwPlatformId defines:
+//
+
+#define VER_PLATFORM_WIN32s 0
+#define VER_PLATFORM_WIN32_WINDOWS 1
+#define VER_PLATFORM_WIN32_NT 2
+
+
+WINBASEAPI
+BOOL
+WINAPI
+GetVersionExA(
+ LPOSVERSIONINFOA lpVersionInformation
+ );
+WINBASEAPI
+BOOL
+WINAPI
+GetVersionExW(
+ LPOSVERSIONINFOW lpVersionInformation
+ );
+#ifdef UNICODE
+#define GetVersionEx GetVersionExW
+#else
+#define GetVersionEx GetVersionExA
+#endif // !UNICODE
+
+
+// DOS and OS/2 Compatible Error Code definitions returned by the Win32 Base
+// API functions.
+//
+
+#include <winerror.h>
+
+/* Abnormal termination codes */
+
+#define TC_NORMAL 0
+#define TC_HARDERR 1
+#define TC_GP_TRAP 2
+#define TC_SIGNAL 3
+
+#if(WINVER >= 0x0400)
+//
+// Power Management APIs
+//
+
+#define AC_LINE_OFFLINE 0x00
+#define AC_LINE_ONLINE 0x01
+#define AC_LINE_BACKUP_POWER 0x02
+#define AC_LINE_UNKNOWN 0xFF
+
+#define BATTERY_FLAG_HIGH 0x01
+#define BATTERY_FLAG_LOW 0x02
+#define BATTERY_FLAG_CRITICAL 0x04
+#define BATTERY_FLAG_CHARGING 0x08
+#define BATTERY_FLAG_NO_BATTERY 0x80
+#define BATTERY_FLAG_UNKNOWN 0xFF
+
+#define BATTERY_PERCENTAGE_UNKNOWN 0xFF
+
+#define BATTERY_LIFE_UNKNOWN 0xFFFFFFFF
+
+typedef struct _SYSTEM_POWER_STATUS {
+ BYTE ACLineStatus;
+ BYTE BatteryFlag;
+ BYTE BatteryLifePercent;
+ BYTE Reserved1;
+ DWORD BatteryLifeTime;
+ DWORD BatteryFullLifeTime;
+} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
+
+BOOL
+WINAPI
+GetSystemPowerStatus(
+ LPSYSTEM_POWER_STATUS lpSystemPowerStatus
+ );
+
+BOOL
+WINAPI
+SetSystemPowerState(
+ BOOL fSuspend,
+ BOOL fForce
+ );
+
+#endif /* WINVER >= 0x0400 */
+
+
+
+
+///////////////////////////////////////////////////////////////
+// //
+// Win Certificate API and Structures //
+// //
+///////////////////////////////////////////////////////////////
+
+//
+// Structures
+//
+
+typedef struct _WIN_CERTIFICATE {
+ DWORD dwLength;
+ WORD wRevision;
+ WORD wCertificateType; // WIN_CERT_TYPE_xxx
+ BYTE bCertificate[ANYSIZE_ARRAY];
+} WIN_CERTIFICATE, *LPWIN_CERTIFICATE;
+
+//
+// Currently, the only defined certificate revision is WIN_CERT_REVISION_1_0
+//
+
+#define WIN_CERT_REVISION_1_0 (0x0100)
+
+//
+// Possible certificate types are specified by the following values
+//
+
+#define WIN_CERT_TYPE_X509 (0x0001) // bCertificate contains an X.509 Certificate
+#define WIN_CERT_TYPE_PKCS_SIGNED_DATA (0x0002) // bCertificate contains a PKCS SignedData structure
+#define WIN_CERT_TYPE_RESERVED_1 (0x0003) // Reserved
+
+//
+// API
+//
+
+
+
+
+BOOL
+WINAPI
+WinSubmitCertificate(
+ LPWIN_CERTIFICATE lpCertificate
+ );
+
+
+
+///////////////////////////////////////////////////////////////
+// //
+// Trust API and Structures //
+// //
+///////////////////////////////////////////////////////////////
+
+LONG
+WINAPI
+WinVerifyTrust(
+ HWND hwnd,
+ GUID * ActionID,
+ LPVOID ActionData
+ );
+
+
+BOOL
+WINAPI
+WinLoadTrustProvider(
+ GUID * ActionID
+ );
+
+///////////////////////////////////////////////////////////////
+// //
+// Common Trust API Data Structures //
+// //
+///////////////////////////////////////////////////////////////
+
+
+//
+// Data type commonly used in ActionData structures
+//
+
+typedef LPVOID WIN_TRUST_SUBJECT;
+
+//
+// Two commonly used ActionData structures
+//
+
+typedef struct _WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT {
+
+ HANDLE hClientToken;
+ GUID * SubjectType;
+ WIN_TRUST_SUBJECT Subject;
+
+} WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT, *LPWIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT ;
+
+
+typedef struct _WIN_TRUST_ACTDATA_SUBJECT_ONLY {
+
+ GUID * SubjectType;
+ WIN_TRUST_SUBJECT Subject;
+
+} WIN_TRUST_ACTDATA_SUBJECT_ONLY, *LPWIN_TRUST_ACTDATA_SUBJECT_ONLY;
+
+
+////////////////////////////////////////////////////////////////////
+// /
+// SUBJECT FORM DEFINITIONS /
+// /
+////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////
+// /
+// Currently defined Subject Type Identifiers. All of the below /
+// use the WIN_TRUST_SUBJECT_FILE subject form, defined below. /
+// /
+////////////////////////////////////////////////////////////////////
+
+/* RawFile == 959dc450-8d9e-11cf-8736-00aa00a485eb */
+#define WIN_TRUST_SUBJTYPE_RAW_FILE \
+ { 0x959dc450, \
+ 0x8d9e, \
+ 0x11cf, \
+ {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb} \
+ }
+
+/* PeImage == 43c9a1e0-8da0-11cf-8736-00aa00a485eb */
+#define WIN_TRUST_SUBJTYPE_PE_IMAGE \
+ { 0x43c9a1e0, \
+ 0x8da0, \
+ 0x11cf, \
+ {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb} \
+ }
+
+
+/* JavaClass = 08ad3990-8da1-11cf-8736-00aa00a485eb */
+#define WIN_TRUST_SUBJTYPE_JAVA_CLASS \
+ { 0x08ad3990, \
+ 0x8da1, \
+ 0x11cf, \
+ {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb} \
+ }
+/* Cabinet = d17c5374-a392-11cf-9df5-00aa00c184e0 */
+#define WIN_TRUST_SUBJTYPE_CABINET \
+ { 0xd17c5374, \
+ 0xa392, \
+ 0x11cf, \
+ { 0x9d, 0xf5, 0x0, 0xaa, 0x0, 0xc1, 0x84, 0xe0 } \
+ }
+
+//
+// Associated Subject Data Structure:
+//
+
+typedef struct _WIN_TRUST_SUBJECT_FILE {
+
+ HANDLE hFile;
+ LPCWSTR lpPath;
+
+} WIN_TRUST_SUBJECT_FILE, *LPWIN_TRUST_SUBJECT_FILE;
+
+
+
+
+////////////////////////////////////////////////////////////////////
+// /
+// The following subject types use the /
+// WIN_TRUST_SUBJECT_FILE_AND_DISPLAY subject type, defined /
+// below. /
+// /
+////////////////////////////////////////////////////////////////////
+
+#define WIN_TRUST_SUBJTYPE_RAW_FILEEX \
+ { 0x6f458110, \
+ 0xc2f1, \
+ 0x11cf, \
+ { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 } \
+ }
+
+#define WIN_TRUST_SUBJTYPE_PE_IMAGEEX \
+ { 0x6f458111, \
+ 0xc2f1, \
+ 0x11cf, \
+ { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 } \
+ }
+
+#define WIN_TRUST_SUBJTYPE_JAVA_CLASSEX \
+ { 0x6f458113, \
+ 0xc2f1, \
+ 0x11cf, \
+ { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 } \
+ }
+
+#define WIN_TRUST_SUBJTYPE_CABINETEX \
+ { 0x6f458114, \
+ 0xc2f1, \
+ 0x11cf, \
+ { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 } \
+ }
+
+//
+// Associated Subject Data Structure:
+//
+
+typedef struct _WIN_TRUST_SUBJECT_FILE_AND_DISPLAY {
+
+ HANDLE hFile; // handle to the open file if you got it
+ LPCWSTR lpPath; // the path to open if you don't
+ LPCWSTR lpDisplayName; // (optional) display name to show to user
+ // in place of path
+
+} WIN_TRUST_SUBJECT_FILE_AND_DISPLAY, *LPWIN_TRUST_SUBJECT_FILE_AND_DISPLAY;
+
+
+////////////////////////////////////////////////////////////////////
+// /
+// Other subject types: /
+// /
+////////////////////////////////////////////////////////////////////
+
+/* OleStorage == c257e740-8da0-11cf-8736-00aa00a485eb */
+#define WIN_TRUST_SUBJTYPE_OLE_STORAGE \
+ { 0xc257e740, \
+ 0x8da0, \
+ 0x11cf, \
+ {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb} \
+ }
+
+
+////////////////////////////////////////////////////////////////////
+// /
+// TRUST PROVIDER SPECIFIC DEFINITIONS /
+// /
+// /
+// Each trust provider will have the following /
+// sections defined: /
+// /
+// Actions - What actions are supported by the trust /
+// provider. /
+// /
+// SubjectForms - Subjects that may be evaluated by this /
+// trust provider. /
+// /
+// and /
+// /
+// Data structures to support the subject forms. /
+// /
+// /
+////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////
+// /
+// Software Publisher Trust Provider /
+// /
+////////////////////////////////////////////////////////////////////
+
+//
+// Actions:
+//
+
+/* TrustedPublisher == 66426730-8da1-11cf-8736-00aa00a485eb */
+#define WIN_SPUB_ACTION_TRUSTED_PUBLISHER \
+ { 0x66426730, \
+ 0x8da1, \
+ 0x11cf, \
+ {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb} \
+ }
+
+/* NtActivateImage == 8bc96b00-8da1-11cf-8736-00aa00a485eb */
+#define WIN_SPUB_ACTION_NT_ACTIVATE_IMAGE \
+ { 0x8bc96b00, \
+ 0x8da1, \
+ 0x11cf, \
+ {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb} \
+ }
+
+/* PublishedSoftware == 64b9d180-8da2-11cf-8736-00aa00a485eb */
+#define WIN_SPUB_ACTION_PUBLISHED_SOFTWARE \
+ { 0x64b9d180, \
+ 0x8da2, \
+ 0x11cf, \
+ {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb} \
+ }
+
+//
+// Data Structures:
+//
+// WIN_SPUB_ACTION_TRUSTED_PUBLISHER:
+//
+// Uses WIN_SPUB_TRUSTED_PUBLISHER_DATA
+//
+// WIN_SPUB_ACTION_NT_ACTIVATE_IMAGE:
+//
+// Uses WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT
+//
+// WIN_SPUB_ACTION_PUBLISHED_SOFTWARE:
+//
+// Uses WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT
+//
+
+typedef struct _WIN_SPUB_TRUSTED_PUBLISHER_DATA {
+
+ HANDLE hClientToken;
+ LPWIN_CERTIFICATE lpCertificate;
+
+} WIN_SPUB_TRUSTED_PUBLISHER_DATA, *LPWIN_SPUB_TRUSTED_PUBLISHER_DATA;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+#endif // _WINBASE_
diff --git a/public/sdk/inc/wincon.h b/public/sdk/inc/wincon.h
new file mode 100644
index 000000000..04f6b3887
--- /dev/null
+++ b/public/sdk/inc/wincon.h
@@ -0,0 +1,726 @@
+/*++ BUILD Version: 0002 // Increment this if a change has global effects
+
+Copyright (c) 1989-1996 Microsoft Corporation
+
+Module Name:
+
+ wincon.h
+
+Abstract:
+
+ This module contains the public data structures, data types,
+ and procedures exported by the NT console subsystem.
+
+Created:
+
+ 26-Oct-1990
+
+Revision History:
+
+--*/
+
+#ifndef _WINCON_
+#define _WINCON_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _COORD {
+ SHORT X;
+ SHORT Y;
+} COORD, *PCOORD;
+
+typedef struct _SMALL_RECT {
+ SHORT Left;
+ SHORT Top;
+ SHORT Right;
+ SHORT Bottom;
+} SMALL_RECT, *PSMALL_RECT;
+
+typedef struct _KEY_EVENT_RECORD {
+ BOOL bKeyDown;
+ WORD wRepeatCount;
+ WORD wVirtualKeyCode;
+ WORD wVirtualScanCode;
+ union {
+ WCHAR UnicodeChar;
+ CHAR AsciiChar;
+ } uChar;
+ DWORD dwControlKeyState;
+} KEY_EVENT_RECORD, *PKEY_EVENT_RECORD;
+
+//
+// ControlKeyState flags
+//
+
+#define RIGHT_ALT_PRESSED 0x0001 // the right alt key is pressed.
+#define LEFT_ALT_PRESSED 0x0002 // the left alt key is pressed.
+#define RIGHT_CTRL_PRESSED 0x0004 // the right ctrl key is pressed.
+#define LEFT_CTRL_PRESSED 0x0008 // the left ctrl key is pressed.
+#define SHIFT_PRESSED 0x0010 // the shift key is pressed.
+#define NUMLOCK_ON 0x0020 // the numlock light is on.
+#define SCROLLLOCK_ON 0x0040 // the scrolllock light is on.
+#define CAPSLOCK_ON 0x0080 // the capslock light is on.
+#define ENHANCED_KEY 0x0100 // the key is enhanced.
+
+typedef struct _MOUSE_EVENT_RECORD {
+ COORD dwMousePosition;
+ DWORD dwButtonState;
+ DWORD dwControlKeyState;
+ DWORD dwEventFlags;
+} MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD;
+
+//
+// ButtonState flags
+//
+
+#define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001
+#define RIGHTMOST_BUTTON_PRESSED 0x0002
+#define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004
+#define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008
+#define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010
+
+//
+// EventFlags
+//
+
+#define MOUSE_MOVED 0x0001
+#define DOUBLE_CLICK 0x0002
+
+typedef struct _WINDOW_BUFFER_SIZE_RECORD {
+ COORD dwSize;
+} WINDOW_BUFFER_SIZE_RECORD, *PWINDOW_BUFFER_SIZE_RECORD;
+
+typedef struct _MENU_EVENT_RECORD {
+ UINT dwCommandId;
+} MENU_EVENT_RECORD, *PMENU_EVENT_RECORD;
+
+typedef struct _FOCUS_EVENT_RECORD {
+ BOOL bSetFocus;
+} FOCUS_EVENT_RECORD, *PFOCUS_EVENT_RECORD;
+
+typedef struct _INPUT_RECORD {
+ WORD EventType;
+ union {
+ KEY_EVENT_RECORD KeyEvent;
+ MOUSE_EVENT_RECORD MouseEvent;
+ WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
+ MENU_EVENT_RECORD MenuEvent;
+ FOCUS_EVENT_RECORD FocusEvent;
+ } Event;
+} INPUT_RECORD, *PINPUT_RECORD;
+
+//
+// EventType flags:
+//
+
+#define KEY_EVENT 0x0001 // Event contains key event record
+#define MOUSE_EVENT 0x0002 // Event contains mouse event record
+#define WINDOW_BUFFER_SIZE_EVENT 0x0004 // Event contains window change event record
+#define MENU_EVENT 0x0008 // Event contains menu event record
+#define FOCUS_EVENT 0x0010 // event contains focus change
+
+typedef struct _CHAR_INFO {
+ union {
+ WCHAR UnicodeChar;
+ CHAR AsciiChar;
+ } Char;
+ WORD Attributes;
+} CHAR_INFO, *PCHAR_INFO;
+
+//
+// Attributes flags:
+//
+
+#define FOREGROUND_BLUE 0x0001 // text color contains blue.
+#define FOREGROUND_GREEN 0x0002 // text color contains green.
+#define FOREGROUND_RED 0x0004 // text color contains red.
+#define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
+#define BACKGROUND_BLUE 0x0010 // background color contains blue.
+#define BACKGROUND_GREEN 0x0020 // background color contains green.
+#define BACKGROUND_RED 0x0040 // background color contains red.
+#define BACKGROUND_INTENSITY 0x0080 // background color is intensified.
+
+
+typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
+ COORD dwSize;
+ COORD dwCursorPosition;
+ WORD wAttributes;
+ SMALL_RECT srWindow;
+ COORD dwMaximumWindowSize;
+} CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO;
+
+typedef struct _CONSOLE_CURSOR_INFO {
+ DWORD dwSize;
+ BOOL bVisible;
+} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
+
+//
+// typedef for ctrl-c handler routines
+//
+
+typedef
+BOOL
+(WINAPI *PHANDLER_ROUTINE)(
+ DWORD CtrlType
+ );
+
+#define CTRL_C_EVENT 0
+#define CTRL_BREAK_EVENT 1
+#define CTRL_CLOSE_EVENT 2
+// 3 is reserved!
+// 4 is reserved!
+#define CTRL_LOGOFF_EVENT 5
+#define CTRL_SHUTDOWN_EVENT 6
+
+//
+// Input Mode flags:
+//
+
+#define ENABLE_PROCESSED_INPUT 0x0001
+#define ENABLE_LINE_INPUT 0x0002
+#define ENABLE_ECHO_INPUT 0x0004
+#define ENABLE_WINDOW_INPUT 0x0008
+#define ENABLE_MOUSE_INPUT 0x0010
+
+//
+// Output Mode flags:
+//
+
+#define ENABLE_PROCESSED_OUTPUT 0x0001
+#define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
+
+//
+// direct API definitions.
+//
+
+WINBASEAPI
+BOOL
+WINAPI
+PeekConsoleInputA(
+ HANDLE hConsoleInput,
+ PINPUT_RECORD lpBuffer,
+ DWORD nLength,
+ LPDWORD lpNumberOfEventsRead
+ );
+WINBASEAPI
+BOOL
+WINAPI
+PeekConsoleInputW(
+ HANDLE hConsoleInput,
+ PINPUT_RECORD lpBuffer,
+ DWORD nLength,
+ LPDWORD lpNumberOfEventsRead
+ );
+#ifdef UNICODE
+#define PeekConsoleInput PeekConsoleInputW
+#else
+#define PeekConsoleInput PeekConsoleInputA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+ReadConsoleInputA(
+ HANDLE hConsoleInput,
+ PINPUT_RECORD lpBuffer,
+ DWORD nLength,
+ LPDWORD lpNumberOfEventsRead
+ );
+WINBASEAPI
+BOOL
+WINAPI
+ReadConsoleInputW(
+ HANDLE hConsoleInput,
+ PINPUT_RECORD lpBuffer,
+ DWORD nLength,
+ LPDWORD lpNumberOfEventsRead
+ );
+#ifdef UNICODE
+#define ReadConsoleInput ReadConsoleInputW
+#else
+#define ReadConsoleInput ReadConsoleInputA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteConsoleInputA(
+ HANDLE hConsoleInput,
+ CONST INPUT_RECORD *lpBuffer,
+ DWORD nLength,
+ LPDWORD lpNumberOfEventsWritten
+ );
+WINBASEAPI
+BOOL
+WINAPI
+WriteConsoleInputW(
+ HANDLE hConsoleInput,
+ CONST INPUT_RECORD *lpBuffer,
+ DWORD nLength,
+ LPDWORD lpNumberOfEventsWritten
+ );
+#ifdef UNICODE
+#define WriteConsoleInput WriteConsoleInputW
+#else
+#define WriteConsoleInput WriteConsoleInputA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+ReadConsoleOutputA(
+ HANDLE hConsoleOutput,
+ PCHAR_INFO lpBuffer,
+ COORD dwBufferSize,
+ COORD dwBufferCoord,
+ PSMALL_RECT lpReadRegion
+ );
+WINBASEAPI
+BOOL
+WINAPI
+ReadConsoleOutputW(
+ HANDLE hConsoleOutput,
+ PCHAR_INFO lpBuffer,
+ COORD dwBufferSize,
+ COORD dwBufferCoord,
+ PSMALL_RECT lpReadRegion
+ );
+#ifdef UNICODE
+#define ReadConsoleOutput ReadConsoleOutputW
+#else
+#define ReadConsoleOutput ReadConsoleOutputA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteConsoleOutputA(
+ HANDLE hConsoleOutput,
+ CONST CHAR_INFO *lpBuffer,
+ COORD dwBufferSize,
+ COORD dwBufferCoord,
+ PSMALL_RECT lpWriteRegion
+ );
+WINBASEAPI
+BOOL
+WINAPI
+WriteConsoleOutputW(
+ HANDLE hConsoleOutput,
+ CONST CHAR_INFO *lpBuffer,
+ COORD dwBufferSize,
+ COORD dwBufferCoord,
+ PSMALL_RECT lpWriteRegion
+ );
+#ifdef UNICODE
+#define WriteConsoleOutput WriteConsoleOutputW
+#else
+#define WriteConsoleOutput WriteConsoleOutputA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+ReadConsoleOutputCharacterA(
+ HANDLE hConsoleOutput,
+ LPSTR lpCharacter,
+ DWORD nLength,
+ COORD dwReadCoord,
+ LPDWORD lpNumberOfCharsRead
+ );
+WINBASEAPI
+BOOL
+WINAPI
+ReadConsoleOutputCharacterW(
+ HANDLE hConsoleOutput,
+ LPWSTR lpCharacter,
+ DWORD nLength,
+ COORD dwReadCoord,
+ LPDWORD lpNumberOfCharsRead
+ );
+#ifdef UNICODE
+#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW
+#else
+#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+ReadConsoleOutputAttribute(
+ HANDLE hConsoleOutput,
+ LPWORD lpAttribute,
+ DWORD nLength,
+ COORD dwReadCoord,
+ LPDWORD lpNumberOfAttrsRead
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteConsoleOutputCharacterA(
+ HANDLE hConsoleOutput,
+ LPCSTR lpCharacter,
+ DWORD nLength,
+ COORD dwWriteCoord,
+ LPDWORD lpNumberOfCharsWritten
+ );
+WINBASEAPI
+BOOL
+WINAPI
+WriteConsoleOutputCharacterW(
+ HANDLE hConsoleOutput,
+ LPCWSTR lpCharacter,
+ DWORD nLength,
+ COORD dwWriteCoord,
+ LPDWORD lpNumberOfCharsWritten
+ );
+#ifdef UNICODE
+#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
+#else
+#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteConsoleOutputAttribute(
+ HANDLE hConsoleOutput,
+ CONST WORD *lpAttribute,
+ DWORD nLength,
+ COORD dwWriteCoord,
+ LPDWORD lpNumberOfAttrsWritten
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FillConsoleOutputCharacterA(
+ HANDLE hConsoleOutput,
+ CHAR cCharacter,
+ DWORD nLength,
+ COORD dwWriteCoord,
+ LPDWORD lpNumberOfCharsWritten
+ );
+WINBASEAPI
+BOOL
+WINAPI
+FillConsoleOutputCharacterW(
+ HANDLE hConsoleOutput,
+ WCHAR cCharacter,
+ DWORD nLength,
+ COORD dwWriteCoord,
+ LPDWORD lpNumberOfCharsWritten
+ );
+#ifdef UNICODE
+#define FillConsoleOutputCharacter FillConsoleOutputCharacterW
+#else
+#define FillConsoleOutputCharacter FillConsoleOutputCharacterA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+FillConsoleOutputAttribute(
+ HANDLE hConsoleOutput,
+ WORD wAttribute,
+ DWORD nLength,
+ COORD dwWriteCoord,
+ LPDWORD lpNumberOfAttrsWritten
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetConsoleMode(
+ HANDLE hConsoleHandle,
+ LPDWORD lpMode
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetNumberOfConsoleInputEvents(
+ HANDLE hConsoleInput,
+ LPDWORD lpNumberOfEvents
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetConsoleScreenBufferInfo(
+ HANDLE hConsoleOutput,
+ PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
+ );
+
+WINBASEAPI
+COORD
+WINAPI
+GetLargestConsoleWindowSize(
+ HANDLE hConsoleOutput
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetConsoleCursorInfo(
+ HANDLE hConsoleOutput,
+ PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GetNumberOfConsoleMouseButtons(
+ LPDWORD lpNumberOfMouseButtons
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleMode(
+ HANDLE hConsoleHandle,
+ DWORD dwMode
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleActiveScreenBuffer(
+ HANDLE hConsoleOutput
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+FlushConsoleInputBuffer(
+ HANDLE hConsoleInput
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleScreenBufferSize(
+ HANDLE hConsoleOutput,
+ COORD dwSize
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleCursorPosition(
+ HANDLE hConsoleOutput,
+ COORD dwCursorPosition
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleCursorInfo(
+ HANDLE hConsoleOutput,
+ CONST CONSOLE_CURSOR_INFO *lpConsoleCursorInfo
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+ScrollConsoleScreenBufferA(
+ HANDLE hConsoleOutput,
+ CONST SMALL_RECT *lpScrollRectangle,
+ CONST SMALL_RECT *lpClipRectangle,
+ COORD dwDestinationOrigin,
+ CONST CHAR_INFO *lpFill
+ );
+WINBASEAPI
+BOOL
+WINAPI
+ScrollConsoleScreenBufferW(
+ HANDLE hConsoleOutput,
+ CONST SMALL_RECT *lpScrollRectangle,
+ CONST SMALL_RECT *lpClipRectangle,
+ COORD dwDestinationOrigin,
+ CONST CHAR_INFO *lpFill
+ );
+#ifdef UNICODE
+#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW
+#else
+#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleWindowInfo(
+ HANDLE hConsoleOutput,
+ BOOL bAbsolute,
+ CONST SMALL_RECT *lpConsoleWindow
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleTextAttribute(
+ HANDLE hConsoleOutput,
+ WORD wAttributes
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleCtrlHandler(
+ PHANDLER_ROUTINE HandlerRoutine,
+ BOOL Add
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+GenerateConsoleCtrlEvent(
+ DWORD dwCtrlEvent,
+ DWORD dwProcessGroupId
+ );
+
+WINBASEAPI
+BOOL
+WINAPI
+AllocConsole( VOID );
+
+WINBASEAPI
+BOOL
+WINAPI
+FreeConsole( VOID );
+
+
+WINBASEAPI
+DWORD
+WINAPI
+GetConsoleTitleA(
+ LPSTR lpConsoleTitle,
+ DWORD nSize
+ );
+WINBASEAPI
+DWORD
+WINAPI
+GetConsoleTitleW(
+ LPWSTR lpConsoleTitle,
+ DWORD nSize
+ );
+#ifdef UNICODE
+#define GetConsoleTitle GetConsoleTitleW
+#else
+#define GetConsoleTitle GetConsoleTitleA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleTitleA(
+ LPCSTR lpConsoleTitle
+ );
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleTitleW(
+ LPCWSTR lpConsoleTitle
+ );
+#ifdef UNICODE
+#define SetConsoleTitle SetConsoleTitleW
+#else
+#define SetConsoleTitle SetConsoleTitleA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+ReadConsoleA(
+ HANDLE hConsoleInput,
+ LPVOID lpBuffer,
+ DWORD nNumberOfCharsToRead,
+ LPDWORD lpNumberOfCharsRead,
+ LPVOID lpReserved
+ );
+WINBASEAPI
+BOOL
+WINAPI
+ReadConsoleW(
+ HANDLE hConsoleInput,
+ LPVOID lpBuffer,
+ DWORD nNumberOfCharsToRead,
+ LPDWORD lpNumberOfCharsRead,
+ LPVOID lpReserved
+ );
+#ifdef UNICODE
+#define ReadConsole ReadConsoleW
+#else
+#define ReadConsole ReadConsoleA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+WriteConsoleA(
+ HANDLE hConsoleOutput,
+ CONST VOID *lpBuffer,
+ DWORD nNumberOfCharsToWrite,
+ LPDWORD lpNumberOfCharsWritten,
+ LPVOID lpReserved
+ );
+WINBASEAPI
+BOOL
+WINAPI
+WriteConsoleW(
+ HANDLE hConsoleOutput,
+ CONST VOID *lpBuffer,
+ DWORD nNumberOfCharsToWrite,
+ LPDWORD lpNumberOfCharsWritten,
+ LPVOID lpReserved
+ );
+#ifdef UNICODE
+#define WriteConsole WriteConsoleW
+#else
+#define WriteConsole WriteConsoleA
+#endif // !UNICODE
+
+#define CONSOLE_TEXTMODE_BUFFER 1
+
+WINBASEAPI
+HANDLE
+WINAPI
+CreateConsoleScreenBuffer(
+ DWORD dwDesiredAccess,
+ DWORD dwShareMode,
+ CONST SECURITY_ATTRIBUTES *lpSecurityAttributes,
+ DWORD dwFlags,
+ LPVOID lpScreenBufferData
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+GetConsoleCP( VOID );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleCP(
+ UINT wCodePageID
+ );
+
+WINBASEAPI
+UINT
+WINAPI
+GetConsoleOutputCP( VOID );
+
+WINBASEAPI
+BOOL
+WINAPI
+SetConsoleOutputCP(
+ UINT wCodePageID
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _WINCON_
diff --git a/public/sdk/inc/wincrypt.h b/public/sdk/inc/wincrypt.h
new file mode 100644
index 000000000..73fb65edb
--- /dev/null
+++ b/public/sdk/inc/wincrypt.h
@@ -0,0 +1,623 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: wincrypt.h
+//
+// Contents: Cryptographic API Prototypes and Definitions
+//
+//----------------------------------------------------------------------------
+
+#ifndef __WINCRYPT_H__
+#define __WINCRYPT_H__
+
+
+#if(_WIN32_WINNT >= 0x0400)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _HRESULT_DEFINED
+#define _HRESULT_DEFINED
+typedef LONG HRESULT;
+
+#endif // !_HRESULT_DEFINED
+
+//
+// Algorithm IDs and Flags
+//
+
+// ALG_ID crackers
+#define GET_ALG_CLASS(x) (x & (7 << 13))
+#define GET_ALG_TYPE(x) (x & (15 << 9))
+#define GET_ALG_SID(x) (x & (511))
+
+// Algorithm classes
+#define ALG_CLASS_ANY (0)
+#define ALG_CLASS_SIGNATURE (1 << 13)
+#define ALG_CLASS_MSG_ENCRYPT (2 << 13)
+#define ALG_CLASS_DATA_ENCRYPT (3 << 13)
+#define ALG_CLASS_HASH (4 << 13)
+#define ALG_CLASS_KEY_EXCHANGE (5 << 13)
+
+// Algorithm types
+#define ALG_TYPE_ANY (0)
+#define ALG_TYPE_DSS (1 << 9)
+#define ALG_TYPE_RSA (2 << 9)
+#define ALG_TYPE_BLOCK (3 << 9)
+#define ALG_TYPE_STREAM (4 << 9)
+#define ALG_TYPE_DH (5 << 9)
+
+// Generic sub-ids
+#define ALG_SID_ANY (0)
+
+// Some RSA sub-ids
+#define ALG_SID_RSA_ANY 0
+#define ALG_SID_RSA_PKCS 1
+#define ALG_SID_RSA_MSATWORK 2
+#define ALG_SID_RSA_ENTRUST 3
+#define ALG_SID_RSA_PGP 4
+
+// Some DSS sub-ids
+//
+#define ALG_SID_DSS_ANY 0
+#define ALG_SID_DSS_PKCS 1
+#define ALG_SID_DSS_DMS 2
+
+// Block cipher sub ids
+// DES sub_ids
+#define ALG_SID_DES 1
+#define ALG_SID_3DES 3
+#define ALG_SID_DESX 4
+#define ALG_SID_IDEA 5
+#define ALG_SID_CAST 6
+#define ALG_SID_SAFERSK64 7
+#define ALD_SID_SAFERSK128 8
+#define ALG_SID_3DES_112 9
+#define ALG_SID_CYLINK_MEK 12
+
+// Fortezza sub-ids
+#define ALG_SID_SKIPJACK 10
+#define ALG_SID_TEK 11
+
+// KP_MODE
+#define CRYPT_MODE_CBCI 6 // ANSI CBC Interleaved
+#define CRYPT_MODE_CFBP 7 // ANSI CFB Pipelined
+#define CRYPT_MODE_OFBP 8 // ANSI OFB Pipelined
+#define CRYPT_MODE_CBCOFM 9 // ANSI CBC + OF Masking
+#define CRYPT_MODE_CBCOFMI 10 // ANSI CBC + OFM Interleaved
+
+// RC2 sub-ids
+#define ALG_SID_RC2 2
+
+// Stream cipher sub-ids
+#define ALG_SID_RC4 1
+#define ALG_SID_SEAL 2
+
+// Diffie-Hellman sub-ids
+#define ALG_SID_DH_SANDF 1
+#define ALG_SID_DH_EPHEM 2
+#define ALG_SID_AGREED_KEY_ANY 3
+#define ALG_SID_KEA 4
+
+// Hash sub ids
+#define ALG_SID_MD2 1
+#define ALG_SID_MD4 2
+#define ALG_SID_MD5 3
+#define ALG_SID_SHA 4
+#define ALG_SID_SHA1 4
+#define ALG_SID_MAC 5
+#define ALG_SID_RIPEMD 6
+#define ALG_SID_RIPEMD160 7
+#define ALG_SID_SSL3SHAMD5 8
+
+
+// Our silly example sub-id
+#define ALG_SID_EXAMPLE 80
+
+#ifndef ALGIDDEF
+#define ALGIDDEF
+typedef unsigned int ALG_ID;
+#endif
+
+// algorithm identifier definitions
+#define CALG_MD2 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2)
+#define CALG_MD4 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4)
+#define CALG_MD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5)
+#define CALG_SHA (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA)
+#define CALG_SHA1 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA1)
+#define CALG_MAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC)
+#define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY)
+#define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY)
+#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
+#define CALG_DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES)
+#define CALG_3DES_112 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES_112)
+#define CALG_3DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES)
+#define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2)
+#define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4)
+#define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL)
+#define CALG_DH_SF (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_SANDF)
+#define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_EPHEM)
+#define CALG_AGREEDKEY_ANY (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_AGREED_KEY_ANY)
+#define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_KEA)
+#define CALG_SKIPJACK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_SKIPJACK)
+#define CALG_TEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_TEK)
+#define CALG_CYLINK_MEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_CYLINK_MEK)
+
+typedef struct _VTableProvStruc {
+ DWORD Version;
+ FARPROC FuncVerifyImage;
+ FARPROC FuncReturnhWnd;
+} VTableProvStruc, *PVTableProvStruc;
+
+typedef unsigned long HCRYPTPROV;
+typedef unsigned long HCRYPTKEY;
+typedef unsigned long HCRYPTHASH;
+
+// dwFlags definitions for CryptAcquireContext
+#define CRYPT_VERIFYCONTEXT 0xF0000000
+#define CRYPT_NEWKEYSET 0x00000008
+#define CRYPT_DELETEKEYSET 0x00000010
+#define CRYPT_MACHINE_KEYSET 0x00000020
+
+// dwFlag definitions for CryptGenKey
+#define CRYPT_EXPORTABLE 0x00000001
+#define CRYPT_USER_PROTECTED 0x00000002
+#define CRYPT_CREATE_SALT 0x00000004
+#define CRYPT_UPDATE_KEY 0x00000008
+#define CRYPT_NO_SALT 0x00000010
+#define CRYPT_PREGEN 0x00000040
+#define CRYPT_RECIPIENT 0x00000010
+#define CRYPT_INITIATOR 0x00000040
+
+#define KEY_LENGTH_MASK 0xFFFF0000
+
+// exported key blob definitions
+#define SIMPLEBLOB 0x1
+#define PUBLICKEYBLOB 0x6
+#define PRIVATEKEYBLOB 0x7
+
+#define AT_KEYEXCHANGE 1
+#define AT_SIGNATURE 2
+
+#define CRYPT_USERDATA 1
+
+// dwParam
+#define KP_IV 1 // Initialization vector
+#define KP_SALT 2 // Salt value
+#define KP_PADDING 3 // Padding values
+#define KP_MODE 4 // Mode of the cipher
+#define KP_MODE_BITS 5 // Number of bits to feedback
+#define KP_PERMISSIONS 6 // Key permissions DWORD
+#define KP_ALGID 7 // Key algorithm
+#define KP_BLOCKLEN 8 // Block size of the cipher
+#define KP_KEYLEN 9 // Length of key in bits
+#define KP_SALT_EX 10 // Length of salt in bytes
+#define KP_P 11 // DSS/Diffie-Hellman P value
+#define KP_G 12 // DSS/Diffie-Hellman G value
+#define KP_Q 13 // DSS Q value
+#define KP_X 14 // Diffie-Hellman X value
+#define KP_Y 15 // Y value
+#define KP_RA 16 // Fortezza RA value
+#define KP_RB 17 // Fortezza RB value
+#define KP_INFO 18 // for putting information into an RSA envelope
+
+// KP_PADDING
+#define PKCS5_PADDING 1 // PKCS 5 (sec 6.2) padding method
+
+// KP_MODE
+#define CRYPT_MODE_CBC 1 // Cipher block chaining
+#define CRYPT_MODE_ECB 2 // Electronic code book
+#define CRYPT_MODE_OFB 3 // Output feedback mode
+#define CRYPT_MODE_CFB 4 // Cipher feedback mode
+#define CRYPT_MODE_CTS 5 // Ciphertext stealing mode
+
+// KP_PERMISSIONS
+#define CRYPT_ENCRYPT 0x0001 // Allow encryption
+#define CRYPT_DECRYPT 0x0002 // Allow decryption
+#define CRYPT_EXPORT 0x0004 // Allow key to be exported
+#define CRYPT_READ 0x0008 // Allow parameters to be read
+#define CRYPT_WRITE 0x0010 // Allow parameters to be set
+#define CRYPT_MAC 0x0020 // Allow MACs to be used with key
+
+#define HP_ALGID 0x0001 // Hash algorithm
+#define HP_HASHVAL 0x0002 // Hash value
+#define HP_HASHSIZE 0x0004 // Hash value size
+
+
+#define CRYPT_FAILED FALSE
+#define CRYPT_SUCCEED TRUE
+
+#define RCRYPT_SUCCEEDED(rt) ((rt) == CRYPT_SUCCEED)
+#define RCRYPT_FAILED(rt) ((rt) == CRYPT_FAILED)
+
+
+//
+// CryptGetProvParam
+//
+#define PP_ENUMALGS 1
+#define PP_ENUMCONTAINERS 2
+#define PP_IMPTYPE 3
+#define PP_NAME 4
+#define PP_VERSION 5
+#define PP_CONTAINER 6
+#define PP_CHANGE_PASSWORD 7
+#define PP_KEYSET_SEC_DESCR 8 // get/set security descriptor of keyset
+
+#define CRYPT_FIRST 1
+#define CRYPT_NEXT 2
+
+#define CRYPT_IMPL_HARDWARE 1
+#define CRYPT_IMPL_SOFTWARE 2
+#define CRYPT_IMPL_MIXED 3
+#define CRYPT_IMPL_UNKNOWN 4
+
+//
+// CryptSetProvParam
+//
+#define PP_CLIENT_HWND 1
+
+#define PROV_RSA_FULL 1
+#define PROV_RSA_SIG 2
+#define PROV_DSS 3
+#define PROV_FORTEZZA 4
+#define PROV_MS_EXCHANGE 5
+#define PROV_SSL 6
+
+//
+// STT defined Providers
+//
+#define PROV_STT_MER 7
+#define PROV_STT_ACQ 8
+#define PROV_STT_BRND 9
+#define PROV_STT_ROOT 10
+#define PROV_STT_ISS 11
+
+//
+// Provider friendly names
+//
+#define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0"
+#define MS_DEF_PROV_W L"Microsoft Base Cryptographic Provider v1.0"
+#ifdef UNICODE
+#define MS_DEF_PROV MS_DEF_PROV_W
+#else
+#define MS_DEF_PROV MS_DEF_PROV_A
+#endif
+
+#define MS_ENHANCED_PROV_A "Microsoft Enhanced Cryptographic Provider v1.0"
+#define MS_ENHANCED_PROV_W L"Microsoft Enhanced Cryptographic Provider v1.0"
+#ifdef UNICODE
+#define MS_ENHANCED_PROV MS_ENHANCED_PROV_W
+#else
+#define MS_ENHANCED_PROV MS_ENHANCED_PROV_A
+#endif
+
+
+#define MAXUIDLEN 64
+
+#define CUR_BLOB_VERSION 2
+
+typedef struct _PROV_ENUMALGS {
+ ALG_ID aiAlgid;
+ DWORD dwBitLen;
+ DWORD dwNameLen;
+ CHAR szName[20];
+} PROV_ENUMALGS;
+
+typedef struct _PUBLICKEYSTRUC {
+ BYTE bType;
+ BYTE bVersion;
+ WORD reserved;
+ ALG_ID aiKeyAlg;
+} PUBLICKEYSTRUC, BLOBHEADER;
+
+typedef struct _RSAPUBKEY {
+ DWORD magic; // Has to be RSA1
+ DWORD bitlen; // # of bits in modulus
+ DWORD pubexp; // public exponent
+ // Modulus data follows
+} RSAPUBKEY;
+
+typedef struct _PUBKEY {
+ DWORD magic;
+ DWORD bitlen; // # of bits in modulus
+} DHPUBKEY, DSSPUBKEY, KEAPUBKEY, TEKPUBKEY;
+
+
+WINADVAPI
+BOOL
+WINAPI
+CryptAcquireContextA(
+ HCRYPTPROV *phProv,
+ LPCSTR pszContainer,
+ LPCSTR pszProvider,
+ DWORD dwProvType,
+ DWORD dwFlags);
+WINADVAPI
+BOOL
+WINAPI
+CryptAcquireContextW(
+ HCRYPTPROV *phProv,
+ LPCWSTR pszContainer,
+ LPCWSTR pszProvider,
+ DWORD dwProvType,
+ DWORD dwFlags);
+#ifdef UNICODE
+#define CryptAcquireContext CryptAcquireContextW
+#else
+#define CryptAcquireContext CryptAcquireContextA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+CryptReleaseContext(
+ HCRYPTPROV hProv,
+ DWORD dwFlags);
+
+
+WINADVAPI
+BOOL
+WINAPI
+CryptGenKey(
+ HCRYPTPROV hProv,
+ ALG_ID Algid,
+ DWORD dwFlags,
+ HCRYPTKEY *phKey);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptDeriveKey(
+ HCRYPTPROV hProv,
+ ALG_ID Algid,
+ HCRYPTHASH hBaseData,
+ DWORD dwFlags,
+ HCRYPTKEY *phKey);
+
+
+WINADVAPI
+BOOL
+WINAPI
+CryptDestroyKey(
+ HCRYPTKEY hKey);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptSetKeyParam(
+ HCRYPTKEY hKey,
+ DWORD dwParam,
+ BYTE *pbData,
+ DWORD dwFlags);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptGetKeyParam(
+ HCRYPTKEY hKey,
+ DWORD dwParam,
+ BYTE *pbData,
+ DWORD *pdwDataLen,
+ DWORD dwFlags);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptSetHashParam(
+ HCRYPTHASH hHash,
+ DWORD dwParam,
+ BYTE *pbData,
+ DWORD dwFlags);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptGetHashParam(
+ HCRYPTHASH hHash,
+ DWORD dwParam,
+ BYTE *pbData,
+ DWORD *pdwDataLen,
+ DWORD dwFlags);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptSetProvParam(
+ HCRYPTPROV hProv,
+ DWORD dwParam,
+ BYTE *pbData,
+ DWORD dwFlags);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptGetProvParam(
+ HCRYPTPROV hProv,
+ DWORD dwParam,
+ BYTE *pbData,
+ DWORD *pdwDataLen,
+ DWORD dwFlags);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptGenRandom(
+ HCRYPTPROV hProv,
+ DWORD dwLen,
+ BYTE *pbBuffer);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptGetUserKey(
+ HCRYPTPROV hProv,
+ DWORD dwKeySpec,
+ HCRYPTKEY *phUserKey);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptExportKey(
+ HCRYPTKEY hKey,
+ HCRYPTKEY hExpKey,
+ DWORD dwBlobType,
+ DWORD dwFlags,
+ BYTE *pbData,
+ DWORD *pdwDataLen);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptImportKey(
+ HCRYPTPROV hProv,
+ CONST BYTE *pbData,
+ DWORD dwDataLen,
+ HCRYPTKEY hPubKey,
+ DWORD dwFlags,
+ HCRYPTKEY *phKey);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptEncrypt(
+ HCRYPTKEY hKey,
+ HCRYPTHASH hHash,
+ BOOL Final,
+ DWORD dwFlags,
+ BYTE *pbData,
+ DWORD *pdwDataLen,
+ DWORD dwBufLen);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptDecrypt(
+ HCRYPTKEY hKey,
+ HCRYPTHASH hHash,
+ BOOL Final,
+ DWORD dwFlags,
+ BYTE *pbData,
+ DWORD *pdwDataLen);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptCreateHash(
+ HCRYPTPROV hProv,
+ ALG_ID Algid,
+ HCRYPTKEY hKey,
+ DWORD dwFlags,
+ HCRYPTHASH *phHash);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptHashData(
+ HCRYPTHASH hHash,
+ CONST BYTE *pbData,
+ DWORD dwDataLen,
+ DWORD dwFlags);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptHashSessionKey(
+ HCRYPTHASH hHash,
+ HCRYPTKEY hKey,
+ DWORD dwFlags);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptDestroyHash(
+ HCRYPTHASH hHash);
+
+WINADVAPI
+BOOL
+WINAPI
+CryptSignHashA(
+ HCRYPTHASH hHash,
+ DWORD dwKeySpec,
+ LPCSTR sDescription,
+ DWORD dwFlags,
+ BYTE *pbSignature,
+ DWORD *pdwSigLen);
+WINADVAPI
+BOOL
+WINAPI
+CryptSignHashW(
+ HCRYPTHASH hHash,
+ DWORD dwKeySpec,
+ LPCWSTR sDescription,
+ DWORD dwFlags,
+ BYTE *pbSignature,
+ DWORD *pdwSigLen);
+#ifdef UNICODE
+#define CryptSignHash CryptSignHashW
+#else
+#define CryptSignHash CryptSignHashA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+CryptVerifySignatureA(
+ HCRYPTHASH hHash,
+ CONST BYTE *pbSignature,
+ DWORD dwSigLen,
+ HCRYPTKEY hPubKey,
+ LPCSTR sDescription,
+ DWORD dwFlags);
+WINADVAPI
+BOOL
+WINAPI
+CryptVerifySignatureW(
+ HCRYPTHASH hHash,
+ CONST BYTE *pbSignature,
+ DWORD dwSigLen,
+ HCRYPTKEY hPubKey,
+ LPCWSTR sDescription,
+ DWORD dwFlags);
+#ifdef UNICODE
+#define CryptVerifySignature CryptVerifySignatureW
+#else
+#define CryptVerifySignature CryptVerifySignatureA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+CryptSetProviderA(
+ LPCSTR pszProvName,
+ DWORD dwProvType);
+WINADVAPI
+BOOL
+WINAPI
+CryptSetProviderW(
+ LPCWSTR pszProvName,
+ DWORD dwProvType);
+#ifdef UNICODE
+#define CryptSetProvider CryptSetProviderW
+#else
+#define CryptSetProvider CryptSetProviderA
+#endif // !UNICODE
+
+//+-------------------------------------------------------------------------
+// CRYPTOAPI BLOB definitions
+//--------------------------------------------------------------------------
+typedef struct _CRYPTOAPI_BLOB {
+ DWORD cbData;
+ BYTE *pbData;
+} DATA_BLOB, *PDATA_BLOB;
+
+#ifdef __cplusplus
+} // Balance extern "C" above
+#endif
+
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+#endif // __WINCRYPT_H__
diff --git a/public/sdk/inc/windbgkd.h b/public/sdk/inc/windbgkd.h
new file mode 100644
index 000000000..7e94d5eac
--- /dev/null
+++ b/public/sdk/inc/windbgkd.h
@@ -0,0 +1,881 @@
+/*++ BUILD Version: 0063 // Increment this if a change has global effects
+
+Copyright (c) 1990-1994 Microsoft Corporation
+
+Module Name:
+
+ windbgkd.h
+
+Abstract:
+
+ This module defines the 32-Bit Windows Kernel Debugger interface.
+
+Revision History:
+
+--*/
+
+#ifndef _WINDBGKD_
+#define _WINDBGKD_
+
+typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
+
+#ifdef _X86_
+
+//
+// DBGKD_CONTROL_REPORT
+//
+// This structure contains machine specific data passed to the debugger
+// when a Wait_State_Change message is sent. Idea is to allow debugger
+// to do what it needes without reading any more packets.
+// Structure is filled in by KdpSetControlReport
+//
+
+#define DBGKD_MAXSTREAM 16
+
+typedef struct _DBGKD_CONTROL_REPORT {
+ DWORD Dr6;
+ DWORD Dr7;
+ WORD InstructionCount;
+ WORD ReportFlags;
+ BYTE InstructionStream[DBGKD_MAXSTREAM];
+ WORD SegCs;
+ WORD SegDs;
+ WORD SegEs;
+ WORD SegFs;
+ DWORD EFlags;
+} DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+
+#define REPORT_INCLUDES_SEGS 0x0001 // this is for backward compatibility
+
+//
+// DBGKD_CONTROL_SET
+//
+// This structure control value the debugger wants to set on every
+// continue, and thus sets here to avoid packet traffic.
+//
+
+typedef struct _DBGKD_CONTROL_SET {
+ DWORD TraceFlag; // WARNING: This must NOT be a BOOLEAN,
+ // or host and target will end
+ // up with different alignments!
+ DWORD Dr7;
+ DWORD CurrentSymbolStart; // Range in which to trace locally
+ DWORD CurrentSymbolEnd;
+} DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
+
+#endif //_X86_
+
+
+typedef struct _DESCRIPTOR_TABLE_ENTRY {
+ DWORD Selector;
+ LDT_ENTRY Descriptor;
+} DESCRIPTOR_TABLE_ENTRY, *PDESCRIPTOR_TABLE_ENTRY;
+
+
+#if defined(_MIPS_)
+
+// end_ntddk end_nthal
+
+//
+// Define MIPS specific kernel debugger information.
+//
+// The following structure contains machine specific data passed to
+// the host system kernel debugger in a wait state change message.
+//
+
+#define DBGKD_MAXSTREAM 16
+
+typedef struct _DBGKD_CONTROL_REPORT {
+ DWORD InstructionCount;
+ BYTE InstructionStream[DBGKD_MAXSTREAM];
+} DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+
+//
+// The following structure contains information that the host system
+// kernel debugger wants to set on every continue operation and avoids
+// the need to send extra packets of information.
+//
+
+typedef DWORD DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
+
+#endif // ntddk nthal
+
+#ifdef _ALPHA_
+
+//
+// Define Alpha specific kernel debugger information.
+//
+// The following structure contains machine specific data passed to
+// the host system kernel debugger in a wait state change message.
+//
+
+#define DBGKD_MAXSTREAM 16
+
+typedef struct _DBGKD_CONTROL_REPORT {
+ DWORD InstructionCount;
+ BYTE InstructionStream[DBGKD_MAXSTREAM];
+} DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+
+//
+// The following structure contains information that the host system
+// kernel debugger wants to set on every continue operation and avoids
+// the need to send extra packets of information.
+//
+
+typedef DWORD DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
+
+#endif // _ALPHA_
+
+#if defined(_PPC_)
+
+
+//
+// Define PowerPC specific kernel debugger information.
+//
+// The following structure contains machine specific data passed to
+// the host system kernel debugger in a wait state change message.
+//
+// **FINISH** Copied without change from MIPS; may need modification
+
+#define DBGKD_MAXSTREAM 16
+
+typedef struct _DBGKD_CONTROL_REPORT {
+ DWORD InstructionCount;
+ BYTE InstructionStream[DBGKD_MAXSTREAM];
+} DBGKD_CONTROL_REPORT, *PDBGKD_CONTROL_REPORT;
+
+//
+// The following structure contains information that the host system
+// kernel debugger wants to set on every continue operation and avoids
+// the need to send extra packets of information.
+//
+
+typedef DWORD DBGKD_CONTROL_SET, *PDBGKD_CONTROL_SET;
+
+#endif // defined(_PPC_)
+
+#ifdef _PPC_
+//
+// Special Registers for PowerPC
+//
+
+typedef struct _KSPECIAL_REGISTERS {
+ DWORD KernelDr0;
+ DWORD KernelDr1;
+ DWORD KernelDr2;
+ DWORD KernelDr3;
+ DWORD KernelDr4;
+ DWORD KernelDr5;
+ DWORD KernelDr6;
+ DWORD KernelDr7;
+ DWORD Sprg0;
+ DWORD Sprg1;
+ DWORD Sr0;
+ DWORD Sr1;
+ DWORD Sr2;
+ DWORD Sr3;
+ DWORD Sr4;
+ DWORD Sr5;
+ DWORD Sr6;
+ DWORD Sr7;
+ DWORD Sr8;
+ DWORD Sr9;
+ DWORD Sr10;
+ DWORD Sr11;
+ DWORD Sr12;
+ DWORD Sr13;
+ DWORD Sr14;
+ DWORD Sr15;
+ DWORD DBAT0L;
+ DWORD DBAT0U;
+ DWORD DBAT1L;
+ DWORD DBAT1U;
+ DWORD DBAT2L;
+ DWORD DBAT2U;
+ DWORD DBAT3L;
+ DWORD DBAT3U;
+ DWORD IBAT0L;
+ DWORD IBAT0U;
+ DWORD IBAT1L;
+ DWORD IBAT1U;
+ DWORD IBAT2L;
+ DWORD IBAT2U;
+ DWORD IBAT3L;
+ DWORD IBAT3U;
+ DWORD Sdr1;
+ DWORD Reserved[9];
+} KSPECIAL_REGISTERS, *PKSPECIAL_REGISTERS;
+
+//
+// Processor State structure.
+//
+
+typedef struct _KPROCESSOR_STATE {
+ struct _CONTEXT ContextFrame;
+ struct _KSPECIAL_REGISTERS SpecialRegisters;
+} KPROCESSOR_STATE, *PKPROCESSOR_STATE;
+
+#endif // _PPC_
+
+#ifdef _X86_
+//
+// Special Registers for i386
+//
+
+typedef struct _DESCRIPTOR {
+ WORD Pad;
+ WORD Limit;
+ DWORD Base;
+} KDESCRIPTOR, *PKDESCRIPTOR;
+
+typedef struct _KSPECIAL_REGISTERS {
+ DWORD Cr0;
+ DWORD Cr2;
+ DWORD Cr3;
+ DWORD Cr4;
+ DWORD KernelDr0;
+ DWORD KernelDr1;
+ DWORD KernelDr2;
+ DWORD KernelDr3;
+ DWORD KernelDr6;
+ DWORD KernelDr7;
+ KDESCRIPTOR Gdtr;
+ KDESCRIPTOR Idtr;
+ WORD Tr;
+ WORD Ldtr;
+ DWORD Reserved[6];
+} KSPECIAL_REGISTERS, *PKSPECIAL_REGISTERS;
+
+//
+// Processor State frame: Before a processor freezes itself, it
+// dumps the processor state to the processor state frame for
+// debugger to examine.
+//
+
+typedef struct _KPROCESSOR_STATE {
+ struct _CONTEXT ContextFrame;
+ struct _KSPECIAL_REGISTERS SpecialRegisters;
+} KPROCESSOR_STATE, *PKPROCESSOR_STATE;
+#endif // _X86_
+
+typedef struct _DBGKM_EXCEPTION {
+ EXCEPTION_RECORD ExceptionRecord;
+ DWORD FirstChance;
+} DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
+
+
+//
+// DbgKd APIs are for the portable kernel debugger
+//
+
+//
+// KD_PACKETS are the low level data format used in KD. All packets
+// begin with a packet leader, byte count, packet type. The sequence
+// for accepting a packet is:
+//
+// - read 4 bytes to get packet leader. If read times out (10 seconds)
+// with a short read, or if packet leader is incorrect, then retry
+// the read.
+//
+// - next read 2 byte packet type. If read times out (10 seconds) with
+// a short read, or if packet type is bad, then start again looking
+// for a packet leader.
+//
+// - next read 4 byte packet Id. If read times out (10 seconds)
+// with a short read, or if packet Id is not what we expect, then
+// ask for resend and restart again looking for a packet leader.
+//
+// - next read 2 byte byte count. If read times out (10 seconds) with
+// a short read, or if byte count is greater than PACKET_MAX_SIZE,
+// then start again looking for a packet leader.
+//
+// - next read 4 byte packet data checksum.
+//
+// - The packet data immediately follows the packet. There should be
+// ByteCount bytes following the packet header. Read the packet
+// data, if read times out (10 seconds) then start again looking for
+// a packet leader.
+//
+
+
+typedef struct _KD_PACKET {
+ DWORD PacketLeader;
+ WORD PacketType;
+ WORD ByteCount;
+ DWORD PacketId;
+ DWORD Checksum;
+} KD_PACKET, *PKD_PACKET;
+
+
+#define PACKET_MAX_SIZE 4000
+#define INITIAL_PACKET_ID 0x80800000 // DON't use 0
+#define SYNC_PACKET_ID 0x00000800 // Or in with INITIAL_PACKET_ID
+ // to force a packet ID reset.
+
+//
+// BreakIn packet
+//
+
+#define BREAKIN_PACKET 0x62626262
+#define BREAKIN_PACKET_BYTE 0x62
+
+//
+// Packet lead in sequence
+//
+
+#define PACKET_LEADER 0x30303030 //0x77000077
+#define PACKET_LEADER_BYTE 0x30
+
+#define CONTROL_PACKET_LEADER 0x69696969
+#define CONTROL_PACKET_LEADER_BYTE 0x69
+
+//
+// Packet Trailing Byte
+//
+
+#define PACKET_TRAILING_BYTE 0xAA
+
+//
+// Packet Types
+//
+
+#define PACKET_TYPE_UNUSED 0
+#define PACKET_TYPE_KD_STATE_CHANGE 1
+#define PACKET_TYPE_KD_STATE_MANIPULATE 2
+#define PACKET_TYPE_KD_DEBUG_IO 3
+#define PACKET_TYPE_KD_ACKNOWLEDGE 4 // Packet-control type
+#define PACKET_TYPE_KD_RESEND 5 // Packet-control type
+#define PACKET_TYPE_KD_RESET 6 // Packet-control type
+#define PACKET_TYPE_MAX 7
+
+//
+// If the packet type is PACKET_TYPE_KD_STATE_CHANGE, then
+// the format of the packet data is as follows:
+//
+
+#define DbgKdExceptionStateChange 0x00003030L
+#define DbgKdLoadSymbolsStateChange 0x00003031L
+
+//
+// Pathname Data follows directly
+//
+
+typedef struct _DBGKD_LOAD_SYMBOLS {
+ DWORD PathNameLength;
+ PVOID BaseOfDll;
+ DWORD ProcessId;
+ DWORD CheckSum;
+ DWORD SizeOfImage;
+ BOOLEAN UnloadSymbols;
+} DBGKD_LOAD_SYMBOLS, *PDBGKD_LOAD_SYMBOLS;
+
+typedef struct _DBGKD_WAIT_STATE_CHANGE {
+ DWORD NewState;
+ WORD ProcessorLevel;
+ WORD Processor;
+ DWORD NumberProcessors;
+ PVOID Thread;
+ PVOID ProgramCounter;
+ union {
+ DBGKM_EXCEPTION Exception;
+ DBGKD_LOAD_SYMBOLS LoadSymbols;
+ } u;
+ DBGKD_CONTROL_REPORT ControlReport;
+ CONTEXT Context;
+} DBGKD_WAIT_STATE_CHANGE, *PDBGKD_WAIT_STATE_CHANGE;
+
+//
+// If the packet type is PACKET_TYPE_KD_STATE_MANIPULATE, then
+// the format of the packet data is as follows:
+//
+// Api Numbers for state manipulation
+//
+
+#define DbgKdReadVirtualMemoryApi 0x00003130L
+#define DbgKdWriteVirtualMemoryApi 0x00003131L
+#define DbgKdGetContextApi 0x00003132L
+#define DbgKdSetContextApi 0x00003133L
+#define DbgKdWriteBreakPointApi 0x00003134L
+#define DbgKdRestoreBreakPointApi 0x00003135L
+#define DbgKdContinueApi 0x00003136L
+#define DbgKdReadControlSpaceApi 0x00003137L
+#define DbgKdWriteControlSpaceApi 0x00003138L
+#define DbgKdReadIoSpaceApi 0x00003139L
+#define DbgKdWriteIoSpaceApi 0x0000313AL
+#define DbgKdRebootApi 0x0000313BL
+#define DbgKdContinueApi2 0x0000313CL
+#define DbgKdReadPhysicalMemoryApi 0x0000313DL
+#define DbgKdWritePhysicalMemoryApi 0x0000313EL
+#define DbgKdQuerySpecialCallsApi 0x0000313FL
+#define DbgKdSetSpecialCallApi 0x00003140L
+#define DbgKdClearSpecialCallsApi 0x00003141L
+#define DbgKdSetInternalBreakPointApi 0x00003142L
+#define DbgKdGetInternalBreakPointApi 0x00003143L
+#define DbgKdReadIoSpaceExtendedApi 0x00003144L
+#define DbgKdWriteIoSpaceExtendedApi 0x00003145L
+#define DbgKdGetVersionApi 0x00003146L
+#define DbgKdWriteBreakPointExApi 0x00003147L
+#define DbgKdRestoreBreakPointExApi 0x00003148L
+#define DbgKdCauseBugCheckApi 0x00003149L
+#define DbgKdSwitchProcessor 0x00003150L
+#define DbgKdPageInApi 0x00003151L
+#define DbgKdReadMachineSpecificRegister 0x00003152L
+#define DbgKdWriteMachineSpecificRegister 0x00003153L
+
+//
+// Response is a read memory message with data following
+//
+
+typedef struct _DBGKD_READ_MEMORY {
+ PVOID TargetBaseAddress;
+ DWORD TransferCount;
+ DWORD ActualBytesRead;
+} DBGKD_READ_MEMORY, *PDBGKD_READ_MEMORY;
+
+//
+// Data follows directly
+//
+
+typedef struct _DBGKD_WRITE_MEMORY {
+ PVOID TargetBaseAddress;
+ DWORD TransferCount;
+ DWORD ActualBytesWritten;
+} DBGKD_WRITE_MEMORY, *PDBGKD_WRITE_MEMORY;
+
+//
+// Response is a get context message with a full context record following
+//
+
+typedef struct _DBGKD_GET_CONTEXT {
+ DWORD ContextFlags;
+} DBGKD_GET_CONTEXT, *PDBGKD_GET_CONTEXT;
+
+//
+// Full Context record follows
+//
+
+typedef struct _DBGKD_SET_CONTEXT {
+ DWORD ContextFlags;
+} DBGKD_SET_CONTEXT, *PDBGKD_SET_CONTEXT;
+
+#define BREAKPOINT_TABLE_SIZE 32 // max number supported by kernel
+
+typedef struct _DBGKD_WRITE_BREAKPOINT {
+ PVOID BreakPointAddress;
+ DWORD BreakPointHandle;
+} DBGKD_WRITE_BREAKPOINT, *PDBGKD_WRITE_BREAKPOINT;
+
+typedef struct _DBGKD_RESTORE_BREAKPOINT {
+ DWORD BreakPointHandle;
+} DBGKD_RESTORE_BREAKPOINT, *PDBGKD_RESTORE_BREAKPOINT;
+
+typedef struct _DBGKD_BREAKPOINTEX {
+ DWORD BreakPointCount;
+ DWORD ContinueStatus;
+} DBGKD_BREAKPOINTEX, *PDBGKD_BREAKPOINTEX;
+
+typedef struct _DBGKD_CONTINUE {
+ DWORD ContinueStatus;
+} DBGKD_CONTINUE, *PDBGKD_CONTINUE;
+
+typedef struct _DBGKD_CONTINUE2 {
+ DWORD ContinueStatus;
+ DBGKD_CONTROL_SET ControlSet;
+} DBGKD_CONTINUE2, *PDBGKD_CONTINUE2;
+
+typedef struct _DBGKD_READ_WRITE_IO {
+ DWORD DataSize; // 1, 2, 4
+ PVOID IoAddress;
+ DWORD DataValue;
+} DBGKD_READ_WRITE_IO, *PDBGKD_READ_WRITE_IO;
+
+typedef struct _DBGKD_READ_WRITE_IO_EXTENDED {
+ DWORD DataSize; // 1, 2, 4
+ DWORD InterfaceType;
+ DWORD BusNumber;
+ DWORD AddressSpace;
+ PVOID IoAddress;
+ DWORD DataValue;
+} DBGKD_READ_WRITE_IO_EXTENDED, *PDBGKD_READ_WRITE_IO_EXTENDED;
+
+typedef struct _DBGKD_READ_WRITE_MSR {
+ DWORD Msr;
+ DWORD DataValueLow;
+ DWORD DataValueHigh;
+} DBGKD_READ_WRITE_MSR, *PDBGKD_READ_WRITE_MSR;
+
+
+typedef struct _DBGKD_QUERY_SPECIAL_CALLS {
+ DWORD NumberOfSpecialCalls;
+ // DWORD SpecialCalls[];
+} DBGKD_QUERY_SPECIAL_CALLS, *PDBGKD_QUERY_SPECIAL_CALLS;
+
+typedef struct _DBGKD_SET_SPECIAL_CALL {
+ DWORD SpecialCall;
+} DBGKD_SET_SPECIAL_CALL, *PDBGKD_SET_SPECIAL_CALL;
+
+typedef struct _DBGKD_SET_INTERNAL_BREAKPOINT {
+ DWORD BreakpointAddress;
+ DWORD Flags;
+} DBGKD_SET_INTERNAL_BREAKPOINT, *PDBGKD_SET_INTERNAL_BREAKPOINT;
+
+typedef struct _DBGKD_GET_INTERNAL_BREAKPOINT {
+ DWORD BreakpointAddress;
+ DWORD Flags;
+ DWORD Calls;
+ DWORD MaxCallsPerPeriod;
+ DWORD MinInstructions;
+ DWORD MaxInstructions;
+ DWORD TotalInstructions;
+} DBGKD_GET_INTERNAL_BREAKPOINT, *PDBGKD_GET_INTERNAL_BREAKPOINT;
+
+#define DBGKD_INTERNAL_BP_FLAG_COUNTONLY 0x00000001 // don't count instructions
+#define DBGKD_INTERNAL_BP_FLAG_INVALID 0x00000002 // disabled BP
+#define DBGKD_INTERNAL_BP_FLAG_SUSPENDED 0x00000004 // temporarily suspended
+#define DBGKD_INTERNAL_BP_FLAG_DYING 0x00000008 // kill on exit
+
+typedef struct _DBGKD_GET_VERSION {
+ WORD MajorVersion;
+ WORD MinorVersion;
+ WORD ProtocolVersion;
+ WORD Flags;
+ DWORD KernBase;
+ DWORD PsLoadedModuleList;
+ WORD MachineType;
+
+ //
+ // help for walking stacks with user callbacks:
+ //
+
+ //
+ // The address of the thread structure is provided in the
+ // WAIT_STATE_CHANGE packet. This is the offset from the base of
+ // the thread structure to the pointer to the kernel stack frame
+ // for the currently active usermode callback.
+ //
+
+ WORD ThCallbackStack; // offset in thread data
+
+ //
+ // these values are offsets into that frame:
+ //
+
+ WORD NextCallback; // saved pointer to next callback frame
+ WORD FramePointer; // saved frame pointer
+
+ //
+ // Address of the kernel callout routine.
+ //
+
+ DWORD KiCallUserMode; // kernel routine
+
+ //
+ // Address of the usermode entry point for callbacks.
+ //
+
+ DWORD KeUserCallbackDispatcher; // address in ntdll
+
+ //
+ // DbgBreakPointWithStatus is a function which takes an argument
+ // and hits a breakpoint. This field contains the address of the
+ // breakpoint instruction. When the debugger sees a breakpoint
+ // at this address, it may retrieve the argument from the first
+ // argument register, or on x86 the eax register.
+ //
+
+ DWORD BreakpointWithStatus; // address of breakpoint
+
+ DWORD Reserved4;
+} DBGKD_GET_VERSION, *PDBGKD_GET_VERSION;
+
+#define DBGKD_VERS_FLAG_MP 0x0001 // kernel is MP built
+
+typedef struct _DBGKD_PAGEIN {
+ DWORD Address;
+ DWORD ContinueStatus;
+} DBGKD_PAGEIN, *PDBGKD_PAGEIN;
+
+typedef struct _DBGKD_MANIPULATE_STATE {
+ DWORD ApiNumber;
+ WORD ProcessorLevel;
+ WORD Processor;
+ DWORD ReturnStatus;
+ union {
+ DBGKD_READ_MEMORY ReadMemory;
+ DBGKD_WRITE_MEMORY WriteMemory;
+ DBGKD_GET_CONTEXT GetContext;
+ DBGKD_SET_CONTEXT SetContext;
+ DBGKD_WRITE_BREAKPOINT WriteBreakPoint;
+ DBGKD_RESTORE_BREAKPOINT RestoreBreakPoint;
+ DBGKD_CONTINUE Continue;
+ DBGKD_CONTINUE2 Continue2;
+ DBGKD_READ_WRITE_IO ReadWriteIo;
+ DBGKD_READ_WRITE_IO_EXTENDED ReadWriteIoExtended;
+ DBGKD_QUERY_SPECIAL_CALLS QuerySpecialCalls;
+ DBGKD_SET_SPECIAL_CALL SetSpecialCall;
+ DBGKD_SET_INTERNAL_BREAKPOINT SetInternalBreakpoint;
+ DBGKD_GET_INTERNAL_BREAKPOINT GetInternalBreakpoint;
+ DBGKD_GET_VERSION GetVersion;
+ DBGKD_BREAKPOINTEX BreakPointEx;
+ DBGKD_PAGEIN PageIn;
+ DBGKD_READ_WRITE_MSR ReadWriteMsr;
+ } u;
+} DBGKD_MANIPULATE_STATE, *PDBGKD_MANIPULATE_STATE;
+
+//
+// This is the format for the trace data passed back from the kernel to
+// the debugger to describe multiple calls that have returned since the
+// last trip back. The basic format is that there are a bunch of these
+// (4 byte) unions stuck together. Each union is of one of two types: a
+// 4 byte unsigned long interger, or a three field struct, describing a
+// call (where "call" is delimited by returning or exiting the symbol
+// scope). If the number of instructions executed is too big to fit
+// into a WORD -1, then the Instructions field has
+// TRACE_DATA_INSTRUCTIONS_BIG and the next union is a LongNumber
+// containing the real number of instructions executed.
+//
+// The very first union returned in each callback is a LongNumber
+// containing the number of unions returned (including the "size"
+// record, os it's always at least 1 even if there's no data to return).
+//
+// This is all returned to the debugger when one of two things
+// happens:
+//
+// 1) The pc moves out of all defined symbol ranges
+// 2) The buffer of trace data entries is filled.
+//
+// The "trace done" case is hacked around on the debugger side. It
+// guarantees that the pc address that indicates a trace exit never
+// winds up in a defined symbol range.
+//
+// The only other complexity in this system is handling the SymbolNumber
+// table. This table is kept in parallel by the kernel and the
+// debugger. When the PC exits a known symbol range, the Begin and End
+// symbol ranges are set by the debugger and are allocated to the next
+// symbol slot upon return. "The next symbol slot" means the numerical
+// next slot number, unless we've filled all slots, in which case it is
+// #0. (ie., allocation is cyclic and not LRU or something). The
+// SymbolNumber table is flushed when a SpecialCalls call is made (ie.,
+// at the beginning of the WatchTrace).
+//
+
+typedef union _DBGKD_TRACE_DATA {
+ struct {
+ BYTE SymbolNumber;
+ CHAR LevelChange;
+ WORD Instructions;
+ } s;
+ DWORD LongNumber;
+} DBGKD_TRACE_DATA, *PDBGKD_TRACE_DATA;
+
+#define TRACE_DATA_INSTRUCTIONS_BIG 0xffff
+
+#define TRACE_DATA_BUFFER_MAX_SIZE 40
+
+//
+// If the packet type is PACKET_TYPE_KD_DEBUG_IO, then
+// the format of the packet data is as follows:
+//
+
+#define DbgKdPrintStringApi 0x00003230L
+#define DbgKdGetStringApi 0x00003231L
+
+//
+// For print string, the Null terminated string to print
+// immediately follows the message
+//
+typedef struct _DBGKD_PRINT_STRING {
+ DWORD LengthOfString;
+} DBGKD_PRINT_STRING, *PDBGKD_PRINT_STRING;
+
+//
+// For get string, the Null terminated promt string
+// immediately follows the message. The LengthOfStringRead
+// field initially contains the maximum number of characters
+// to read. Upon reply, this contains the number of bytes actually
+// read. The data read immediately follows the message.
+//
+//
+typedef struct _DBGKD_GET_STRING {
+ DWORD LengthOfPromptString;
+ DWORD LengthOfStringRead;
+} DBGKD_GET_STRING, *PDBGKD_GET_STRING;
+
+typedef struct _DBGKD_DEBUG_IO {
+ DWORD ApiNumber;
+ WORD ProcessorLevel;
+ WORD Processor;
+ union {
+ DBGKD_PRINT_STRING PrintString;
+ DBGKD_GET_STRING GetString;
+ } u;
+} DBGKD_DEBUG_IO, *PDBGKD_DEBUG_IO;
+
+
+VOID
+NTAPI
+DbgKdSendBreakIn(
+ VOID
+ );
+
+PBYTE
+NTAPI
+DbgKdGets(
+ PBYTE Buffer,
+ WORD Length
+ );
+
+DWORD
+NTAPI
+DbgKdWaitStateChange(
+ OUT PDBGKD_WAIT_STATE_CHANGE StateChange,
+ OUT PVOID Buffer,
+ IN DWORD BufferLength
+ );
+
+DWORD
+NTAPI
+DbgKdContinue (
+ IN DWORD ContinueStatus
+ );
+
+DWORD
+NTAPI
+DbgKdContinue2 (
+ IN DWORD ContinueStatus,
+ IN DBGKD_CONTROL_SET ControlSet
+ );
+
+DWORD
+NTAPI
+DbgKdReadVirtualMemory(
+ IN PVOID TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN DWORD TransferCount,
+ OUT PDWORD ActualBytesRead OPTIONAL
+ );
+
+DWORD
+NTAPI
+DbgKdWriteVirtualMemory(
+ IN PVOID TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN DWORD TransferCount,
+ OUT PDWORD ActualBytesWritten OPTIONAL
+ );
+
+DWORD
+NTAPI
+DbgKdReadPhysicalMemory(
+ IN PHYSICAL_ADDRESS TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN DWORD TransferCount,
+ OUT PDWORD ActualBytesRead OPTIONAL
+ );
+
+DWORD
+NTAPI
+DbgKdWritePhysicalMemory(
+ IN PHYSICAL_ADDRESS TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN DWORD TransferCount,
+ OUT PDWORD ActualBytesWritten OPTIONAL
+ );
+
+DWORD
+NTAPI
+DbgKdReadControlSpace(
+ IN WORD Processor,
+ IN PVOID TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN DWORD TransferCount,
+ OUT PDWORD ActualBytesRead OPTIONAL
+ );
+
+DWORD
+NTAPI
+DbgKdWriteControlSpace(
+ IN WORD Processor,
+ IN PVOID TargetBaseAddress,
+ OUT PVOID UserInterfaceBuffer,
+ IN DWORD TransferCount,
+ OUT PDWORD ActualBytesWritten OPTIONAL
+ );
+
+DWORD
+NTAPI
+DbgKdReadIoSpace(
+ IN PVOID IoAddress,
+ OUT PVOID ReturnedData,
+ IN DWORD DataSize
+ );
+
+DWORD
+NTAPI
+DbgKdWriteIoSpace(
+ IN PVOID IoAddress,
+ IN DWORD DataValue,
+ IN DWORD DataSize
+ );
+
+DWORD
+NTAPI
+DbgKdReadMsr(
+ IN DWORD MsrReg,
+ OUT PDWORDLONG MsrValue
+ );
+
+DWORD
+NTAPI
+DbgKdWriteMsr(
+ IN DWORD MsrReg,
+ IN DWORDLONG MsrValue
+ );
+
+
+DWORD
+NTAPI
+DbgKdGetContext(
+ IN WORD Processor,
+ IN OUT PCONTEXT Context
+ );
+
+DWORD
+NTAPI
+DbgKdSetContext(
+ IN WORD Processor,
+ IN PCONTEXT Context
+ );
+
+DWORD
+NTAPI
+DbgKdWriteBreakPoint(
+ IN PVOID BreakPointAddress,
+ OUT PDWORD BreakPointHandle
+ );
+
+DWORD
+NTAPI
+DbgKdRestoreBreakPoint(
+ IN DWORD BreakPointHandle
+ );
+
+DWORD
+NTAPI
+DbgKdReboot(
+ VOID
+ );
+
+#ifdef _X86_
+DWORD
+NTAPI
+DbgKdLookupSelector(
+ IN WORD Processor,
+ IN OUT PDESCRIPTOR_TABLE_ENTRY pDescriptorTableEntry
+ );
+#endif
+
+#define DBG_EXCEPTION_HANDLED ((DWORD )0x00010001L)
+
+#endif // _WINDBGKD_
+
diff --git a/public/sdk/inc/windef.h b/public/sdk/inc/windef.h
new file mode 100644
index 000000000..da582f09c
--- /dev/null
+++ b/public/sdk/inc/windef.h
@@ -0,0 +1,309 @@
+/****************************************************************************
+* *
+* windef.h -- Basic Windows Type Definitions *
+* *
+* Copyright (c) 1985-1996, Microsoft Corp. All rights reserved. *
+* *
+****************************************************************************/
+
+
+#ifndef _WINDEF_
+#define _WINDEF_
+
+#ifndef NO_STRICT
+#ifndef STRICT
+#define STRICT 1
+#endif
+#endif /* NO_STRICT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINVER
+#define WINVER 0x0400
+#endif /* WINVER */
+
+/*
+ * BASETYPES is defined in ntdef.h if these types are already defined
+ */
+
+#ifndef BASETYPES
+#define BASETYPES
+typedef unsigned long ULONG;
+typedef ULONG *PULONG;
+typedef unsigned short USHORT;
+typedef USHORT *PUSHORT;
+typedef unsigned char UCHAR;
+typedef UCHAR *PUCHAR;
+typedef char *PSZ;
+#endif /* !BASETYPES */
+
+#define MAX_PATH 260
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+#undef far
+#undef near
+#undef pascal
+
+#define far
+#define near
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define pascal __stdcall
+#else
+#define pascal
+#endif
+
+#ifdef DOSWIN32
+#define cdecl _cdecl
+#ifndef CDECL
+#define CDECL _cdecl
+#endif
+#else
+#define cdecl
+#ifndef CDECL
+#define CDECL
+#endif
+#endif
+
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define CALLBACK __stdcall
+#define WINAPI __stdcall
+#define WINAPIV __cdecl
+#define APIENTRY WINAPI
+#define APIPRIVATE __stdcall
+#define PASCAL __stdcall
+#else
+#define CALLBACK
+#define WINAPI
+#define WINAPIV
+#define APIENTRY WINAPI
+#define APIPRIVATE
+#define PASCAL pascal
+#endif
+
+#define FAR far
+#define NEAR near
+#ifndef CONST
+#define CONST const
+#endif
+
+typedef unsigned long DWORD;
+typedef int BOOL;
+typedef unsigned char BYTE;
+typedef unsigned short WORD;
+typedef float FLOAT;
+typedef FLOAT *PFLOAT;
+typedef BOOL near *PBOOL;
+typedef BOOL far *LPBOOL;
+typedef BYTE near *PBYTE;
+typedef BYTE far *LPBYTE;
+typedef int near *PINT;
+typedef int far *LPINT;
+typedef WORD near *PWORD;
+typedef WORD far *LPWORD;
+typedef long far *LPLONG;
+typedef DWORD near *PDWORD;
+typedef DWORD far *LPDWORD;
+typedef void far *LPVOID;
+typedef CONST void far *LPCVOID;
+
+typedef int INT;
+typedef unsigned int UINT;
+typedef unsigned int *PUINT;
+
+#ifndef NT_INCLUDED
+#include <winnt.h>
+#endif /* NT_INCLUDED */
+
+/* Types use for passing & returning polymorphic values */
+typedef UINT WPARAM;
+typedef LONG LPARAM;
+typedef LONG LRESULT;
+
+#ifndef NOMINMAX
+
+#ifndef max
+#define max(a,b) (((a) > (b)) ? (a) : (b))
+#endif
+
+#ifndef min
+#define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#endif /* NOMINMAX */
+
+#define MAKEWORD(a, b) ((WORD)(((BYTE)(a)) | ((WORD)((BYTE)(b))) << 8))
+#define MAKELONG(a, b) ((LONG)(((WORD)(a)) | ((DWORD)((WORD)(b))) << 16))
+#define LOWORD(l) ((WORD)(l))
+#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
+#define LOBYTE(w) ((BYTE)(w))
+#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xFF))
+
+
+#ifndef WIN_INTERNAL
+DECLARE_HANDLE (HWND);
+DECLARE_HANDLE (HHOOK);
+#endif
+
+typedef WORD ATOM;
+
+typedef HANDLE NEAR *SPHANDLE;
+typedef HANDLE FAR *LPHANDLE;
+typedef HANDLE HGLOBAL;
+typedef HANDLE HLOCAL;
+typedef HANDLE GLOBALHANDLE;
+typedef HANDLE LOCALHANDLE;
+typedef int (FAR WINAPI *FARPROC)();
+typedef int (NEAR WINAPI *NEARPROC)();
+typedef int (WINAPI *PROC)();
+
+#ifdef STRICT
+typedef void NEAR* HGDIOBJ;
+#else
+DECLARE_HANDLE(HGDIOBJ);
+#endif
+
+DECLARE_HANDLE(HACCEL);
+DECLARE_HANDLE(HBITMAP);
+DECLARE_HANDLE(HBRUSH);
+#if(WINVER >= 0x0400)
+DECLARE_HANDLE(HCOLORSPACE);
+#endif /* WINVER >= 0x0400 */
+DECLARE_HANDLE(HDC);
+DECLARE_HANDLE(HGLRC); // OpenGL
+DECLARE_HANDLE(HDESK);
+DECLARE_HANDLE(HENHMETAFILE);
+DECLARE_HANDLE(HFONT);
+DECLARE_HANDLE(HICON);
+DECLARE_HANDLE(HMENU);
+DECLARE_HANDLE(HMETAFILE);
+DECLARE_HANDLE(HINSTANCE);
+typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */
+DECLARE_HANDLE(HPALETTE);
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HRSRC);
+DECLARE_HANDLE(HSTR);
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HWINSTA);
+DECLARE_HANDLE(HKL);
+
+typedef int HFILE;
+typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */
+
+typedef DWORD COLORREF;
+typedef DWORD *LPCOLORREF;
+
+#define HFILE_ERROR ((HFILE)-1)
+
+typedef struct tagRECT
+{
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
+
+typedef const RECT FAR* LPCRECT;
+
+typedef struct _RECTL /* rcl */
+{
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECTL, *PRECTL, *LPRECTL;
+
+typedef const RECTL FAR* LPCRECTL;
+
+typedef struct tagPOINT
+{
+ LONG x;
+ LONG y;
+} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;
+
+typedef struct _POINTL /* ptl */
+{
+ LONG x;
+ LONG y;
+} POINTL, *PPOINTL;
+
+typedef struct tagSIZE
+{
+ LONG cx;
+ LONG cy;
+} SIZE, *PSIZE, *LPSIZE;
+
+typedef SIZE SIZEL;
+typedef SIZE *PSIZEL, *LPSIZEL;
+
+typedef struct tagPOINTS
+{
+ SHORT x;
+ SHORT y;
+} POINTS, *PPOINTS, *LPPOINTS;
+
+/* mode selections for the device mode function */
+#define DM_UPDATE 1
+#define DM_COPY 2
+#define DM_PROMPT 4
+#define DM_MODIFY 8
+
+#define DM_IN_BUFFER DM_MODIFY
+#define DM_IN_PROMPT DM_PROMPT
+#define DM_OUT_BUFFER DM_COPY
+#define DM_OUT_DEFAULT DM_UPDATE
+
+/* device capabilities indices */
+#define DC_FIELDS 1
+#define DC_PAPERS 2
+#define DC_PAPERSIZE 3
+#define DC_MINEXTENT 4
+#define DC_MAXEXTENT 5
+#define DC_BINS 6
+#define DC_DUPLEX 7
+#define DC_SIZE 8
+#define DC_EXTRA 9
+#define DC_VERSION 10
+#define DC_DRIVER 11
+#define DC_BINNAMES 12
+#define DC_ENUMRESOLUTIONS 13
+#define DC_FILEDEPENDENCIES 14
+#define DC_TRUETYPE 15
+#define DC_PAPERNAMES 16
+#define DC_ORIENTATION 17
+#define DC_COPIES 18
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINDEF_ */
diff --git a/public/sdk/inc/windows.h b/public/sdk/inc/windows.h
new file mode 100644
index 000000000..5cd32f337
--- /dev/null
+++ b/public/sdk/inc/windows.h
@@ -0,0 +1,180 @@
+/*++ BUILD Version: 0001 Increment this if a change has global effects
+
+Copyright (c) 1985-1996, Microsoft Corporation
+
+Module Name:
+
+
+ windows.h
+
+Abstract:
+
+ Master include file for Windows applications.
+
+--*/
+
+#ifndef _WINDOWS_
+#define _WINDOWS_
+
+
+#ifndef WINVER
+#define WINVER 0x0400
+#endif
+
+#ifndef _INC_WINDOWS
+#define _INC_WINDOWS
+
+/* If defined, the following flags inhibit definition
+ * of the indicated items.
+ *
+ * NOGDICAPMASKS - CC_*, LC_*, PC_*, CP_*, TC_*, RC_
+ * NOVIRTUALKEYCODES - VK_*
+ * NOWINMESSAGES - WM_*, EM_*, LB_*, CB_*
+ * NOWINSTYLES - WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_*
+ * NOSYSMETRICS - SM_*
+ * NOMENUS - MF_*
+ * NOICONS - IDI_*
+ * NOKEYSTATES - MK_*
+ * NOSYSCOMMANDS - SC_*
+ * NORASTEROPS - Binary and Tertiary raster ops
+ * NOSHOWWINDOW - SW_*
+ * OEMRESOURCE - OEM Resource values
+ * NOATOM - Atom Manager routines
+ * NOCLIPBOARD - Clipboard routines
+ * NOCOLOR - Screen colors
+ * NOCTLMGR - Control and Dialog routines
+ * NODRAWTEXT - DrawText() and DT_*
+ * NOGDI - All GDI defines and routines
+ * NOKERNEL - All KERNEL defines and routines
+ * NOUSER - All USER defines and routines
+ * NONLS - All NLS defines and routines
+ * NOMB - MB_* and MessageBox()
+ * NOMEMMGR - GMEM_*, LMEM_*, GHND, LHND, associated routines
+ * NOMETAFILE - typedef METAFILEPICT
+ * NOMINMAX - Macros min(a,b) and max(a,b)
+ * NOMSG - typedef MSG and associated routines
+ * NOOPENFILE - OpenFile(), OemToAnsi, AnsiToOem, and OF_*
+ * NOSCROLL - SB_* and scrolling routines
+ * NOSERVICE - All Service Controller routines, SERVICE_ equates, etc.
+ * NOSOUND - Sound driver routines
+ * NOTEXTMETRIC - typedef TEXTMETRIC and associated routines
+ * NOWH - SetWindowsHook and WH_*
+ * NOWINOFFSETS - GWL_*, GCL_*, associated routines
+ * NOCOMM - COMM driver routines
+ * NOKANJI - Kanji support stuff.
+ * NOHELP - Help engine interface.
+ * NOPROFILER - Profiler interface.
+ * NODEFERWINDOWPOS - DeferWindowPos routines
+ * NOMCX - Modem Configuration Extensions
+ */
+
+#ifdef RC_INVOKED
+
+/* Turn off a bunch of stuff to ensure that RC files compile OK. */
+#define NOATOM
+#define NOGDI
+#define NOGDICAPMASKS
+#define NOMETAFILE
+#define NOMINMAX
+#define NOMSG
+#define NOOPENFILE
+#define NORASTEROPS
+#define NOSCROLL
+#define NOSOUND
+#define NOSYSMETRICS
+#define NOTEXTMETRIC
+#define NOWH
+#define NOCOMM
+#define NOKANJI
+#define NOCRYPT
+#define NOMCX
+#endif /* RC_INVOKED */
+
+#if !defined(_PPC_) && !defined(_ALPHA_) && !defined(_MIPS_) && !defined(_X86_) && defined(_M_IX86)
+#define _X86_
+#endif
+
+#if !defined(_PPC_) && !defined(_ALPHA_) && !defined(_X86_) && !defined(_MIPS_) && defined(_M_MRX000)
+#define _MIPS_
+#endif
+
+#if !defined(_PPC_) && !defined(_ALPHA_) && !defined(_X86_) && !defined(_MIPS_) && defined(_M_ALPHA)
+#define _ALPHA_
+#endif
+
+#if !defined(_PPC_) && !defined(_ALPHA_) && !defined(_X86_) && !defined(_MIPS_) && defined(_M_PPC)
+#define _PPC_
+#endif
+
+#ifndef RC_INVOKED
+#if ( _MSC_VER >= 800 )
+#pragma warning(disable:4001)
+#endif
+#include <excpt.h>
+#include <stdarg.h>
+#endif /* RC_INVOKED */
+
+#include <windef.h>
+#include <winbase.h>
+#include <wingdi.h>
+#include <winuser.h>
+#include <winnls.h>
+#include <wincon.h>
+#include <winver.h>
+#include <winreg.h>
+#include <winnetwk.h>
+
+#ifndef WIN32_LEAN_AND_MEAN
+#include <cderr.h>
+#include <dde.h>
+#include <ddeml.h>
+#include <dlgs.h>
+#include <lzexpand.h>
+#include <mmsystem.h>
+#include <nb30.h>
+#include <rpc.h>
+#include <shellapi.h>
+#include <winperf.h>
+#include <winsock.h>
+
+#ifndef NOCRYPT
+#include <wincrypt.h>
+#endif
+
+#ifndef NOGDI
+#include <commdlg.h>
+#include <winspool.h>
+#ifdef INC_OLE1
+#include <ole.h>
+#else
+#include <ole2.h>
+#endif /* !INC_OLE1 */
+#endif /* !NOGDI */
+#endif /* WIN32_LEAN_AND_MEAN */
+
+#ifdef INC_OLE2
+#include <ole2.h>
+#endif /* INC_OLE2 */
+
+#ifndef NOSERVICE
+#include <winsvc.h>
+#endif
+
+#if(WINVER >= 0x0400)
+#ifndef NOMCX
+#include <mcx.h>
+#endif /* NOMCX */
+
+#ifndef NOIME
+#include <imm.h>
+#endif
+#endif /* WINVER >= 0x0400 */
+
+#ifndef RC_INVOKED
+#if ( _MSC_VER >= 800 )
+#pragma warning(default:4001)
+#endif
+#endif /* RC_INVOKED */
+
+#endif /* _INC_WINDOWS */
+#endif /* _WINDOWS_ */
diff --git a/public/sdk/inc/windowsx.h b/public/sdk/inc/windowsx.h
new file mode 100644
index 000000000..067110788
--- /dev/null
+++ b/public/sdk/inc/windowsx.h
@@ -0,0 +1,1284 @@
+/*****************************************************************************\
+* *
+* windowsx.h - Macro APIs, window message crackers, and control APIs *
+* *
+* Version Win32 / Windows NT *
+* *
+* Copyright (c) 1992-1996, Microsoft Corp. All rights reserved.*
+* *
+\*****************************************************************************/
+
+#ifndef _INC_WINDOWSX
+#define _INC_WINDOWSX
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+/****** KERNEL Macro APIs ****************************************************/
+
+#define GetInstanceModule(hInstance) (HMODULE)(hInstance)
+
+#define GlobalPtrHandle(lp) \
+ ((HGLOBAL)GlobalHandle(lp))
+
+#define GlobalLockPtr(lp) \
+ ((BOOL)GlobalLock(GlobalPtrHandle(lp)))
+#define GlobalUnlockPtr(lp) \
+ GlobalUnlock(GlobalPtrHandle(lp))
+
+#define GlobalAllocPtr(flags, cb) \
+ (GlobalLock(GlobalAlloc((flags), (cb))))
+#define GlobalReAllocPtr(lp, cbNew, flags) \
+ (GlobalUnlockPtr(lp), GlobalLock(GlobalReAlloc(GlobalPtrHandle(lp) , (cbNew), (flags))))
+#define GlobalFreePtr(lp) \
+ (GlobalUnlockPtr(lp), (BOOL)GlobalFree(GlobalPtrHandle(lp)))
+
+/****** GDI Macro APIs *******************************************************/
+
+#define DeletePen(hpen) DeleteObject((HGDIOBJ)(HPEN)(hpen))
+#define SelectPen(hdc, hpen) ((HPEN)SelectObject((hdc), (HGDIOBJ)(HPEN)(hpen)))
+#define GetStockPen(i) ((HPEN)GetStockObject(i))
+
+#define DeleteBrush(hbr) DeleteObject((HGDIOBJ)(HBRUSH)(hbr))
+#define SelectBrush(hdc, hbr) ((HBRUSH)SelectObject((hdc), (HGDIOBJ)(HBRUSH)(hbr)))
+#define GetStockBrush(i) ((HBRUSH)GetStockObject(i))
+
+#define DeleteRgn(hrgn) DeleteObject((HGDIOBJ)(HRGN)(hrgn))
+
+#define CopyRgn(hrgnDst, hrgnSrc) CombineRgn(hrgnDst, hrgnSrc, 0, RGN_COPY)
+#define IntersectRgn(hrgnResult, hrgnA, hrgnB) CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_AND)
+#define SubtractRgn(hrgnResult, hrgnA, hrgnB) CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_DIFF)
+#define UnionRgn(hrgnResult, hrgnA, hrgnB) CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_OR)
+#define XorRgn(hrgnResult, hrgnA, hrgnB) CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_XOR)
+
+#define DeletePalette(hpal) DeleteObject((HGDIOBJ)(HPALETTE)(hpal))
+
+#define DeleteFont(hfont) DeleteObject((HGDIOBJ)(HFONT)(hfont))
+#define SelectFont(hdc, hfont) ((HFONT)SelectObject((hdc), (HGDIOBJ)(HFONT)(hfont)))
+#define GetStockFont(i) ((HFONT)GetStockObject(i))
+
+#define DeleteBitmap(hbm) DeleteObject((HGDIOBJ)(HBITMAP)(hbm))
+#define SelectBitmap(hdc, hbm) ((HBITMAP)SelectObject((hdc), (HGDIOBJ)(HBITMAP)(hbm)))
+
+#define InsetRect(lprc, dx, dy) InflateRect((lprc), -(dx), -(dy))
+
+/****** USER Macro APIs ******************************************************/
+
+#define GetWindowInstance(hwnd) ((HMODULE)GetWindowLong(hwnd, GWL_HINSTANCE))
+
+#define GetWindowStyle(hwnd) ((DWORD)GetWindowLong(hwnd, GWL_STYLE))
+#define GetWindowExStyle(hwnd) ((DWORD)GetWindowLong(hwnd, GWL_EXSTYLE))
+
+#define GetWindowOwner(hwnd) GetWindow(hwnd, GW_OWNER)
+
+#define GetFirstChild(hwnd) GetTopWindow(hwnd)
+#define GetFirstSibling(hwnd) GetWindow(hwnd, GW_HWNDFIRST)
+#define GetLastSibling(hwnd) GetWindow(hwnd, GW_HWNDLAST)
+#define GetNextSibling(hwnd) GetWindow(hwnd, GW_HWNDNEXT)
+#define GetPrevSibling(hwnd) GetWindow(hwnd, GW_HWNDPREV)
+
+#define GetWindowID(hwnd) GetDlgCtrlID(hwnd)
+
+#define SetWindowRedraw(hwnd, fRedraw) \
+ ((void)SendMessage(hwnd, WM_SETREDRAW, (WPARAM)(BOOL)(fRedraw), 0L))
+
+#define SubclassWindow(hwnd, lpfn) \
+ ((WNDPROC)SetWindowLong((hwnd), GWL_WNDPROC, (LPARAM)(WNDPROC)(lpfn)))
+
+#define IsMinimized(hwnd) IsIconic(hwnd)
+#define IsMaximized(hwnd) IsZoomed(hwnd)
+#define IsRestored(hwnd) ((GetWindowStyle(hwnd) & (WS_MINIMIZE | WS_MAXIMIZE)) == 0L)
+
+#define SetWindowFont(hwnd, hfont, fRedraw) FORWARD_WM_SETFONT((hwnd), (hfont), (fRedraw), SendMessage)
+
+#define GetWindowFont(hwnd) FORWARD_WM_GETFONT((hwnd), SendMessage)
+#if (WINVER >= 0x030a)
+#define MapWindowRect(hwndFrom, hwndTo, lprc) \
+ MapWindowPoints((hwndFrom), (hwndTo), (POINT *)(lprc), 2)
+#endif
+#define IsLButtonDown() (GetKeyState(VK_LBUTTON) < 0)
+#define IsRButtonDown() (GetKeyState(VK_RBUTTON) < 0)
+#define IsMButtonDown() (GetKeyState(VK_MBUTTON) < 0)
+
+#define SubclassDialog(hwndDlg, lpfn) \
+ ((DLGPROC)SetWindowLong(hwndDlg, DWL_DLGPROC, (LPARAM)(DLGPROC)(lpfn)))
+
+#define SetDlgMsgResult(hwnd, msg, result) (( \
+ (msg) == WM_CTLCOLORMSGBOX || \
+ (msg) == WM_CTLCOLOREDIT || \
+ (msg) == WM_CTLCOLORLISTBOX || \
+ (msg) == WM_CTLCOLORBTN || \
+ (msg) == WM_CTLCOLORDLG || \
+ (msg) == WM_CTLCOLORSCROLLBAR || \
+ (msg) == WM_CTLCOLORSTATIC || \
+ (msg) == WM_COMPAREITEM || \
+ (msg) == WM_VKEYTOITEM || \
+ (msg) == WM_CHARTOITEM || \
+ (msg) == WM_QUERYDRAGICON || \
+ (msg) == WM_INITDIALOG \
+ ) ? (BOOL)(result) : (SetWindowLong((hwnd), DWL_MSGRESULT, (LPARAM)(LRESULT)(result)), TRUE))
+
+#define DefDlgProcEx(hwnd, msg, wParam, lParam, pfRecursion) \
+ (*(pfRecursion) = TRUE, DefDlgProc(hwnd, msg, wParam, lParam))
+
+#define CheckDefDlgRecursion(pfRecursion) \
+ if (*(pfRecursion)) { *(pfRecursion) = FALSE; return FALSE; }
+
+/****** Message crackers ****************************************************/
+
+#define HANDLE_MSG(hwnd, message, fn) \
+ case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))
+
+/* void Cls_OnCompacting(HWND hwnd, UINT compactRatio) */
+#define HANDLE_WM_COMPACTING(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam)), 0L)
+#define FORWARD_WM_COMPACTING(hwnd, compactRatio, fn) \
+ (void)(fn)((hwnd), WM_COMPACTING, (WPARAM)(UINT)(compactRatio), 0L)
+
+/* void Cls_OnWinIniChange(HWND hwnd, LPCTSTR lpszSectionName) */
+#define HANDLE_WM_WININICHANGE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (LPCTSTR)(lParam)), 0L)
+#define FORWARD_WM_WININICHANGE(hwnd, lpszSectionName, fn) \
+ (void)(fn)((hwnd), WM_WININICHANGE, 0L, (LPARAM)(LPCTSTR)(lpszSectionName))
+
+/* void Cls_OnSysColorChange(HWND hwnd) */
+#define HANDLE_WM_SYSCOLORCHANGE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_SYSCOLORCHANGE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_SYSCOLORCHANGE, 0L, 0L)
+
+/* BOOL Cls_OnQueryNewPalette(HWND hwnd) */
+#define HANDLE_WM_QUERYNEWPALETTE(hwnd, wParam, lParam, fn) \
+ MAKELRESULT((BOOL)(fn)(hwnd), 0L)
+#define FORWARD_WM_QUERYNEWPALETTE(hwnd, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_QUERYNEWPALETTE, 0L, 0L)
+
+/* void Cls_OnPaletteIsChanging(HWND hwnd, HWND hwndPaletteChange) */
+#define HANDLE_WM_PALETTEISCHANGING(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_PALETTEISCHANGING(hwnd, hwndPaletteChange, fn) \
+ (void)(fn)((hwnd), WM_PALETTEISCHANGING, (WPARAM)(HWND)(hwndPaletteChange), 0L)
+
+/* void Cls_OnPaletteChanged(HWND hwnd, HWND hwndPaletteChange) */
+#define HANDLE_WM_PALETTECHANGED(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_PALETTECHANGED(hwnd, hwndPaletteChange, fn) \
+ (void)(fn)((hwnd), WM_PALETTECHANGED, (WPARAM)(HWND)(hwndPaletteChange), 0L)
+
+/* void Cls_OnFontChange(HWND hwnd) */
+#define HANDLE_WM_FONTCHANGE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_FONTCHANGE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_FONTCHANGE, 0L, 0L)
+
+/* void Cls_OnSpoolerStatus(HWND hwnd, UINT status, int cJobInQueue) */
+#define HANDLE_WM_SPOOLERSTATUS(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (int)(short)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SPOOLERSTATUS(hwnd, status, cJobInQueue, fn) \
+ (void)(fn)((hwnd), WM_SPOOLERSTATUS, (WPARAM)(status), MAKELPARAM((cJobInQueue), 0))
+
+/* void Cls_OnDevModeChange(HWND hwnd, LPCTSTR lpszDeviceName) */
+#define HANDLE_WM_DEVMODECHANGE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (LPCTSTR)(lParam)), 0L)
+#define FORWARD_WM_DEVMODECHANGE(hwnd, lpszDeviceName, fn) \
+ (void)(fn)((hwnd), WM_DEVMODECHANGE, 0L, (LPARAM)(LPCTSTR)(lpszDeviceName))
+
+/* void Cls_OnTimeChange(HWND hwnd) */
+#define HANDLE_WM_TIMECHANGE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_TIMECHANGE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_TIMECHANGE, 0L, 0L)
+
+/* void Cls_OnPower(HWND hwnd, int code) */
+#define HANDLE_WM_POWER(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(wParam)), 0L)
+#define FORWARD_WM_POWER(hwnd, code, fn) \
+ (void)(fn)((hwnd), WM_POWER, (WPARAM)(int)(code), 0L)
+
+/* BOOL Cls_OnQueryEndSession(HWND hwnd) */
+#define HANDLE_WM_QUERYENDSESSION(hwnd, wParam, lParam, fn) \
+ MAKELRESULT((BOOL)(fn)(hwnd), 0L)
+#define FORWARD_WM_QUERYENDSESSION(hwnd, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_QUERYENDSESSION, 0L, 0L)
+
+/* void Cls_OnEndSession(HWND hwnd, BOOL fEnding) */
+#define HANDLE_WM_ENDSESSION(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam)), 0L)
+#define FORWARD_WM_ENDSESSION(hwnd, fEnding, fn) \
+ (void)(fn)((hwnd), WM_ENDSESSION, (WPARAM)(BOOL)(fEnding), 0L)
+
+/* void Cls_OnQuit(HWND hwnd, int exitCode) */
+#define HANDLE_WM_QUIT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(wParam)), 0L)
+#define FORWARD_WM_QUIT(hwnd, exitCode, fn) \
+ (void)(fn)((hwnd), WM_QUIT, (WPARAM)(exitCode), 0L)
+
+/* This message is in Windows 3.1 only */
+/* void Cls_OnSystemError(HWND hwnd, int errCode) */
+#define HANDLE_WM_SYSTEMERROR(hwnd, wParam, lParam, fn) 0L
+#define FORWARD_WM_SYSTEMERROR(hwnd, errCode, fn) 0L
+
+/* BOOL Cls_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct) */
+#define HANDLE_WM_CREATE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (LPCREATESTRUCT)(lParam)) ? 0L : (LRESULT)-1L)
+#define FORWARD_WM_CREATE(hwnd, lpCreateStruct, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_CREATE, 0L, (LPARAM)(LPCREATESTRUCT)(lpCreateStruct))
+
+/* BOOL Cls_OnNCCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct) */
+#define HANDLE_WM_NCCREATE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (LPCREATESTRUCT)(lParam))
+#define FORWARD_WM_NCCREATE(hwnd, lpCreateStruct, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_NCCREATE, 0L, (LPARAM)(LPCREATESTRUCT)(lpCreateStruct))
+
+/* void Cls_OnDestroy(HWND hwnd) */
+#define HANDLE_WM_DESTROY(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_DESTROY(hwnd, fn) \
+ (void)(fn)((hwnd), WM_DESTROY, 0L, 0L)
+
+/* void Cls_OnNCDestroy(HWND hwnd) */
+#define HANDLE_WM_NCDESTROY(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_NCDESTROY(hwnd, fn) \
+ (void)(fn)((hwnd), WM_NCDESTROY, 0L, 0L)
+
+/* void Cls_OnShowWindow(HWND hwnd, BOOL fShow, UINT status) */
+#define HANDLE_WM_SHOWWINDOW(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam), (UINT)(lParam)), 0L)
+#define FORWARD_WM_SHOWWINDOW(hwnd, fShow, status, fn) \
+ (void)(fn)((hwnd), WM_SHOWWINDOW, (WPARAM)(BOOL)(fShow), (LPARAM)(UINT)(status))
+
+/* void Cls_OnSetRedraw(HWND hwnd, BOOL fRedraw) */
+#define HANDLE_WM_SETREDRAW(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam)), 0L)
+#define FORWARD_WM_SETREDRAW(hwnd, fRedraw, fn) \
+ (void)(fn)((hwnd), WM_SETREDRAW, (WPARAM)(BOOL)(fRedraw), 0L)
+
+/* void Cls_OnEnable(HWND hwnd, BOOL fEnable) */
+#define HANDLE_WM_ENABLE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam)), 0L)
+#define FORWARD_WM_ENABLE(hwnd, fEnable, fn) \
+ (void)(fn)((hwnd), WM_ENABLE, (WPARAM)(BOOL)(fEnable), 0L)
+
+/* void Cls_OnSetText(HWND hwnd, LPCTSTR lpszText) */
+#define HANDLE_WM_SETTEXT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (LPCTSTR)(lParam)), 0L)
+#define FORWARD_WM_SETTEXT(hwnd, lpszText, fn) \
+ (void)(fn)((hwnd), WM_SETTEXT, 0L, (LPARAM)(LPCTSTR)(lpszText))
+
+/* INT Cls_OnGetText(HWND hwnd, int cchTextMax, LPTSTR lpszText) */
+#define HANDLE_WM_GETTEXT(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)((hwnd), (int)(wParam), (LPTSTR)(lParam))
+#define FORWARD_WM_GETTEXT(hwnd, cchTextMax, lpszText, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_GETTEXT, (WPARAM)(int)(cchTextMax), (LPARAM)(LPTSTR)(lpszText))
+
+/* INT Cls_OnGetTextLength(HWND hwnd) */
+#define HANDLE_WM_GETTEXTLENGTH(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)(hwnd)
+#define FORWARD_WM_GETTEXTLENGTH(hwnd, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_GETTEXTLENGTH, 0L, 0L)
+
+/* BOOL Cls_OnWindowPosChanging(HWND hwnd, LPWINDOWPOS lpwpos) */
+#define HANDLE_WM_WINDOWPOSCHANGING(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (LPWINDOWPOS)(lParam))
+#define FORWARD_WM_WINDOWPOSCHANGING(hwnd, lpwpos, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_WINDOWPOSCHANGING, 0L, (LPARAM)(LPWINDOWPOS)(lpwpos))
+
+/* void Cls_OnWindowPosChanged(HWND hwnd, const LPWINDOWPOS lpwpos) */
+#define HANDLE_WM_WINDOWPOSCHANGED(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (const LPWINDOWPOS)(lParam)), 0L)
+#define FORWARD_WM_WINDOWPOSCHANGED(hwnd, lpwpos, fn) \
+ (void)(fn)((hwnd), WM_WINDOWPOSCHANGED, 0L, (LPARAM)(const LPWINDOWPOS)(lpwpos))
+
+/* void Cls_OnMove(HWND hwnd, int x, int y) */
+#define HANDLE_WM_MOVE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L)
+#define FORWARD_WM_MOVE(hwnd, x, y, fn) \
+ (void)(fn)((hwnd), WM_MOVE, 0L, MAKELPARAM((x), (y)))
+
+/* void Cls_OnSize(HWND hwnd, UINT state, int cx, int cy) */
+#define HANDLE_WM_SIZE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SIZE(hwnd, state, cx, cy, fn) \
+ (void)(fn)((hwnd), WM_SIZE, (WPARAM)(UINT)(state), MAKELPARAM((cx), (cy)))
+
+/* void Cls_OnClose(HWND hwnd) */
+#define HANDLE_WM_CLOSE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_CLOSE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_CLOSE, 0L, 0L)
+
+/* BOOL Cls_OnQueryOpen(HWND hwnd) */
+#define HANDLE_WM_QUERYOPEN(hwnd, wParam, lParam, fn) \
+ MAKELRESULT((BOOL)(fn)(hwnd), 0L)
+#define FORWARD_WM_QUERYOPEN(hwnd, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_QUERYOPEN, 0L, 0L)
+
+/* void Cls_OnGetMinMaxInfo(HWND hwnd, LPMINMAXINFO lpMinMaxInfo) */
+#define HANDLE_WM_GETMINMAXINFO(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (LPMINMAXINFO)(lParam)), 0L)
+#define FORWARD_WM_GETMINMAXINFO(hwnd, lpMinMaxInfo, fn) \
+ (void)(fn)((hwnd), WM_GETMINMAXINFO, 0L, (LPARAM)(LPMINMAXINFO)(lpMinMaxInfo))
+
+/* void Cls_OnPaint(HWND hwnd) */
+#define HANDLE_WM_PAINT(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_PAINT(hwnd, fn) \
+ (void)(fn)((hwnd), WM_PAINT, 0L, 0L)
+
+/* BOOL Cls_OnEraseBkgnd(HWND hwnd, HDC hdc) */
+#define HANDLE_WM_ERASEBKGND(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (HDC)(wParam))
+#define FORWARD_WM_ERASEBKGND(hwnd, hdc, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_ERASEBKGND, (WPARAM)(HDC)(hdc), 0L)
+
+/* BOOL Cls_OnIconEraseBkgnd(HWND hwnd, HDC hdc) */
+#define HANDLE_WM_ICONERASEBKGND(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (HDC)(wParam))
+#define FORWARD_WM_ICONERASEBKGND(hwnd, hdc, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_ICONERASEBKGND, (WPARAM)(HDC)(hdc), 0L)
+
+/* void Cls_OnNCPaint(HWND hwnd, HRGN hrgn) */
+#define HANDLE_WM_NCPAINT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HRGN)(wParam)), 0L)
+#define FORWARD_WM_NCPAINT(hwnd, hrgn, fn) \
+ (void)(fn)((hwnd), WM_NCPAINT, (WPARAM)(HRGN)(hrgn), 0L)
+
+/* UINT Cls_OnNCCalcSize(HWND hwnd, BOOL fCalcValidRects, NCCALCSIZE_PARAMS * lpcsp) */
+#define HANDLE_WM_NCCALCSIZE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)((hwnd), (BOOL)(0), (NCCALCSIZE_PARAMS *)(lParam))
+#define FORWARD_WM_NCCALCSIZE(hwnd, fCalcValidRects, lpcsp, fn) \
+ (UINT)(DWORD)(fn)((hwnd), WM_NCCALCSIZE, 0L, (LPARAM)(NCCALCSIZE_PARAMS *)(lpcsp))
+
+/* UINT Cls_OnNCHitTest(HWND hwnd, int x, int y) */
+#define HANDLE_WM_NCHITTEST(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam))
+#define FORWARD_WM_NCHITTEST(hwnd, x, y, fn) \
+ (UINT)(DWORD)(fn)((hwnd), WM_NCHITTEST, 0L, MAKELPARAM((x), (y)))
+
+/* HICON Cls_OnQueryDragIcon(HWND hwnd) */
+#define HANDLE_WM_QUERYDRAGICON(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)(hwnd)
+#define FORWARD_WM_QUERYDRAGICON(hwnd, fn) \
+ (HICON)(UINT)(DWORD)(fn)((hwnd), WM_QUERYDRAGICON, 0L, 0L)
+
+#ifdef _INC_SHELLAPI
+/* void Cls_OnDropFiles(HWND hwnd, HDROP hdrop) */
+#define HANDLE_WM_DROPFILES(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HDROP)(wParam)), 0L)
+#define FORWARD_WM_DROPFILES(hwnd, hdrop, fn) \
+ (void)(fn)((hwnd), WM_DROPFILES, (WPARAM)(HDROP)(hdrop), 0L)
+#endif /* _INC_SHELLAPI */
+
+/* void Cls_OnActivate(HWND hwnd, UINT state, HWND hwndActDeact, BOOL fMinimized) */
+#define HANDLE_WM_ACTIVATE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)LOWORD(wParam), (HWND)(lParam), (BOOL)HIWORD(wParam)), 0L)
+#define FORWARD_WM_ACTIVATE(hwnd, state, hwndActDeact, fMinimized, fn) \
+ (void)(fn)((hwnd), WM_ACTIVATE, MAKEWPARAM((state), (fMinimized)), (LPARAM)(HWND)(hwndActDeact))
+
+/* void Cls_OnActivateApp(HWND hwnd, BOOL fActivate, DWORD dwThreadId) */
+#define HANDLE_WM_ACTIVATEAPP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam), (DWORD)(lParam)), 0L)
+#define FORWARD_WM_ACTIVATEAPP(hwnd, fActivate, dwThreadId, fn) \
+ (void)(fn)((hwnd), WM_ACTIVATEAPP, (WPARAM)(BOOL)(fActivate), (LPARAM)(dwThreadId))
+
+/* BOOL Cls_OnNCActivate(HWND hwnd, BOOL fActive, HWND hwndActDeact, BOOL fMinimized) */
+#define HANDLE_WM_NCACTIVATE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (BOOL)(wParam), 0L, 0L)
+#define FORWARD_WM_NCACTIVATE(hwnd, fActive, hwndActDeact, fMinimized, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_NCACTIVATE, (WPARAM)(BOOL)(fActive), 0L)
+
+/* void Cls_OnSetFocus(HWND hwnd, HWND hwndOldFocus) */
+#define HANDLE_WM_SETFOCUS(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_SETFOCUS(hwnd, hwndOldFocus, fn) \
+ (void)(fn)((hwnd), WM_SETFOCUS, (WPARAM)(HWND)(hwndOldFocus), 0L)
+
+/* void Cls_OnKillFocus(HWND hwnd, HWND hwndNewFocus) */
+#define HANDLE_WM_KILLFOCUS(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_KILLFOCUS(hwnd, hwndNewFocus, fn) \
+ (void)(fn)((hwnd), WM_KILLFOCUS, (WPARAM)(HWND)(hwndNewFocus), 0L)
+
+/* void Cls_OnKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_KEYDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), TRUE, (int)(short)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_KEYDOWN(hwnd, vk, cRepeat, flags, fn) \
+ (void)(fn)((hwnd), WM_KEYDOWN, (WPARAM)(UINT)(vk), MAKELPARAM((cRepeat), (flags)))
+
+/* void Cls_OnKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_KEYUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), FALSE, (int)(short)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_KEYUP(hwnd, vk, cRepeat, flags, fn) \
+ (void)(fn)((hwnd), WM_KEYUP, (WPARAM)(UINT)(vk), MAKELPARAM((cRepeat), (flags)))
+
+/* void Cls_OnChar(HWND hwnd, TCHAR ch, int cRepeat) */
+#define HANDLE_WM_CHAR(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (TCHAR)(wParam), (int)(short)LOWORD(lParam)), 0L)
+#define FORWARD_WM_CHAR(hwnd, ch, cRepeat, fn) \
+ (void)(fn)((hwnd), WM_CHAR, (WPARAM)(TCHAR)(ch), MAKELPARAM((cRepeat),0))
+
+/* void Cls_OnDeadChar(HWND hwnd, TCHAR ch, int cRepeat) */
+#define HANDLE_WM_DEADCHAR(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (TCHAR)(wParam), (int)(short)LOWORD(lParam)), 0L)
+#define FORWARD_WM_DEADCHAR(hwnd, ch, cRepeat, fn) \
+ (void)(fn)((hwnd), WM_DEADCHAR, (WPARAM)(TCHAR)(ch), MAKELPARAM((cRepeat),0))
+
+/* void Cls_OnSysKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_SYSKEYDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), TRUE, (int)(short)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SYSKEYDOWN(hwnd, vk, cRepeat, flags, fn) \
+ (void)(fn)((hwnd), WM_SYSKEYDOWN, (WPARAM)(UINT)(vk), MAKELPARAM((cRepeat), (flags)))
+
+/* void Cls_OnSysKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_SYSKEYUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), FALSE, (int)(short)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SYSKEYUP(hwnd, vk, cRepeat, flags, fn) \
+ (void)(fn)((hwnd), WM_SYSKEYUP, (WPARAM)(UINT)(vk), MAKELPARAM((cRepeat), (flags)))
+
+/* void Cls_OnSysChar(HWND hwnd, TCHAR ch, int cRepeat) */
+#define HANDLE_WM_SYSCHAR(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (TCHAR)(wParam), (int)(short)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SYSCHAR(hwnd, ch, cRepeat, fn) \
+ (void)(fn)((hwnd), WM_SYSCHAR, (WPARAM)(TCHAR)(ch), MAKELPARAM((cRepeat), 0))
+
+/* void Cls_OnSysDeadChar(HWND hwnd, TCHAR ch, int cRepeat) */
+#define HANDLE_WM_SYSDEADCHAR(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (TCHAR)(wParam), (int)(short)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SYSDEADCHAR(hwnd, ch, cRepeat, fn) \
+ (void)(fn)((hwnd), WM_SYSDEADCHAR, (WPARAM)(TCHAR)(ch), MAKELPARAM((cRepeat), 0))
+
+/* void Cls_OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_MOUSEMOVE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_MOUSEMOVE(hwnd, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), WM_MOUSEMOVE, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_LBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_LBUTTONDOWN(hwnd, fDoubleClick, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_LBUTTONDBLCLK : WM_LBUTTONDOWN, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_LBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnLButtonUp(HWND hwnd, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_LBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_LBUTTONUP(hwnd, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), WM_LBUTTONUP, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_RBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_RBUTTONDOWN(hwnd, fDoubleClick, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_RBUTTONDBLCLK : WM_RBUTTONDOWN, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_RBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnRButtonUp(HWND hwnd, int x, int y, UINT flags) */
+#define HANDLE_WM_RBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_RBUTTONUP(hwnd, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), WM_RBUTTONUP, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_MBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_MBUTTONDOWN(hwnd, fDoubleClick, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_MBUTTONDBLCLK : WM_MBUTTONDOWN, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_MBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnMButtonUp(HWND hwnd, int x, int y, UINT flags) */
+#define HANDLE_WM_MBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_MBUTTONUP(hwnd, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), WM_MBUTTONUP, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCMouseMove(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMOUSEMOVE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCMOUSEMOVE(hwnd, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), WM_NCMOUSEMOVE, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCLBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCLBUTTONDOWN(hwnd, fDoubleClick, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_NCLBUTTONDBLCLK : WM_NCLBUTTONDOWN, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCLBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnNCLButtonUp(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCLBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCLBUTTONUP(hwnd, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), WM_NCLBUTTONUP, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCRBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCRBUTTONDOWN(hwnd, fDoubleClick, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_NCRBUTTONDBLCLK : WM_NCRBUTTONDOWN, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* void Cls_OnNCRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCRBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnNCRButtonUp(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCRBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCRBUTTONUP(hwnd, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), WM_NCRBUTTONUP, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* void Cls_OnNCMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCMBUTTONDOWN(hwnd, fDoubleClick, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_NCMBUTTONDBLCLK : WM_NCMBUTTONDOWN, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* void Cls_OnNCMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnNCMButtonUp(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCMBUTTONUP(hwnd, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), WM_NCMBUTTONUP, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* int Cls_OnMouseActivate(HWND hwnd, HWND hwndTopLevel, UINT codeHitTest, UINT msg) */
+#define HANDLE_WM_MOUSEACTIVATE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (UINT)HIWORD(lParam))
+#define FORWARD_WM_MOUSEACTIVATE(hwnd, hwndTopLevel, codeHitTest, msg, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_MOUSEACTIVATE, (WPARAM)(HWND)(hwndTopLevel), MAKELPARAM((codeHitTest), (msg)))
+
+/* void Cls_OnCancelMode(HWND hwnd) */
+#define HANDLE_WM_CANCELMODE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_CANCELMODE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_CANCELMODE, 0L, 0L)
+
+/* void Cls_OnTimer(HWND hwnd, UINT id) */
+#define HANDLE_WM_TIMER(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam)), 0L)
+#define FORWARD_WM_TIMER(hwnd, id, fn) \
+ (void)(fn)((hwnd), WM_TIMER, (WPARAM)(UINT)(id), 0L)
+
+/* void Cls_OnInitMenu(HWND hwnd, HMENU hMenu) */
+#define HANDLE_WM_INITMENU(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HMENU)(wParam)), 0L)
+#define FORWARD_WM_INITMENU(hwnd, hMenu, fn) \
+ (void)(fn)((hwnd), WM_INITMENU, (WPARAM)(HMENU)(hMenu), 0L)
+
+/* void Cls_OnInitMenuPopup(HWND hwnd, HMENU hMenu, UINT item, BOOL fSystemMenu) */
+#define HANDLE_WM_INITMENUPOPUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HMENU)(wParam), (UINT)LOWORD(lParam), (BOOL)HIWORD(lParam)), 0L)
+#define FORWARD_WM_INITMENUPOPUP(hwnd, hMenu, item, fSystemMenu, fn) \
+ (void)(fn)((hwnd), WM_INITMENUPOPUP, (WPARAM)(HMENU)(hMenu), MAKELPARAM((item),(fSystemMenu)))
+
+/* void Cls_OnMenuSelect(HWND hwnd, HMENU hmenu, int item, HMENU hmenuPopup, UINT flags) */
+#define HANDLE_WM_MENUSELECT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HMENU)(lParam), \
+ (int)(LOWORD(wParam)), \
+ (HIWORD(wParam) & MF_POPUP) ? GetSubMenu((HMENU)lParam, LOWORD(wParam)) : 0L, \
+ (UINT)(((short)HIWORD(wParam) == -1) ? 0xFFFFFFFF : HIWORD(wParam))), 0L)
+#define FORWARD_WM_MENUSELECT(hwnd, hmenu, item, hmenuPopup, flags, fn) \
+ (void)(fn)((hwnd), WM_MENUSELECT, MAKEWPARAM((item), (flags)), (LPARAM)(HMENU)((hmenu) ? (hmenu) : (hmenuPopup)))
+
+/* DWORD Cls_OnMenuChar(HWND hwnd, UINT ch, UINT flags, HMENU hmenu) */
+#define HANDLE_WM_MENUCHAR(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(fn)((hwnd), (UINT)(LOWORD(wParam)), (UINT)HIWORD(wParam), (HMENU)(lParam))
+#define FORWARD_WM_MENUCHAR(hwnd, ch, flags, hmenu, fn) \
+ (DWORD)(fn)((hwnd), WM_MENUCHAR, MAKEWPARAM(flags, (WORD)(ch)), (LPARAM)(HMENU)(hmenu))
+
+/* void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) */
+#define HANDLE_WM_COMMAND(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(LOWORD(wParam)), (HWND)(lParam), (UINT)HIWORD(wParam)), 0L)
+#define FORWARD_WM_COMMAND(hwnd, id, hwndCtl, codeNotify, fn) \
+ (void)(fn)((hwnd), WM_COMMAND, MAKEWPARAM((UINT)(id),(UINT)(codeNotify)), (LPARAM)(HWND)(hwndCtl))
+
+/* void Cls_OnHScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos) */
+#define HANDLE_WM_HSCROLL(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(lParam), (UINT)(LOWORD(wParam)), (int)(short)HIWORD(wParam)), 0L)
+#define FORWARD_WM_HSCROLL(hwnd, hwndCtl, code, pos, fn) \
+ (void)(fn)((hwnd), WM_HSCROLL, MAKEWPARAM((UINT)(int)(code),(UINT)(int)(pos)), (LPARAM)(UINT)(hwndCtl))
+
+/* void Cls_OnVScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos) */
+#define HANDLE_WM_VSCROLL(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(lParam), (UINT)(LOWORD(wParam)), (int)(short)HIWORD(wParam)), 0L)
+#define FORWARD_WM_VSCROLL(hwnd, hwndCtl, code, pos, fn) \
+ (void)(fn)((hwnd), WM_VSCROLL, MAKEWPARAM((UINT)(int)(code),(UINT)(int)(pos)), (LPARAM)(HWND)(hwndCtl))
+
+/* void Cls_OnCut(HWND hwnd) */
+#define HANDLE_WM_CUT(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_CUT(hwnd, fn) \
+ (void)(fn)((hwnd), WM_CUT, 0L, 0L)
+
+/* void Cls_OnCopy(HWND hwnd) */
+#define HANDLE_WM_COPY(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_COPY(hwnd, fn) \
+ (void)(fn)((hwnd), WM_COPY, 0L, 0L)
+
+/* void Cls_OnPaste(HWND hwnd) */
+#define HANDLE_WM_PASTE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_PASTE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_PASTE, 0L, 0L)
+
+/* void Cls_OnClear(HWND hwnd) */
+#define HANDLE_WM_CLEAR(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_CLEAR(hwnd, fn) \
+ (void)(fn)((hwnd), WM_CLEAR, 0L, 0L)
+
+/* void Cls_OnUndo(HWND hwnd) */
+#define HANDLE_WM_UNDO(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_UNDO(hwnd, fn) \
+ (void)(fn)((hwnd), WM_UNDO, 0L, 0L)
+
+/* HANDLE Cls_OnRenderFormat(HWND hwnd, UINT fmt) */
+#define HANDLE_WM_RENDERFORMAT(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HANDLE)(fn)((hwnd), (UINT)(wParam))
+#define FORWARD_WM_RENDERFORMAT(hwnd, fmt, fn) \
+ (HANDLE)(UINT)(DWORD)(fn)((hwnd), WM_RENDERFORMAT, (WPARAM)(UINT)(fmt), 0L)
+
+/* void Cls_OnRenderAllFormats(HWND hwnd) */
+#define HANDLE_WM_RENDERALLFORMATS(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_RENDERALLFORMATS(hwnd, fn) \
+ (void)(fn)((hwnd), WM_RENDERALLFORMATS, 0L, 0L)
+
+/* void Cls_OnDestroyClipboard(HWND hwnd) */
+#define HANDLE_WM_DESTROYCLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_DESTROYCLIPBOARD(hwnd, fn) \
+ (void)(fn)((hwnd), WM_DESTROYCLIPBOARD, 0L, 0L)
+
+/* void Cls_OnDrawClipboard(HWND hwnd) */
+#define HANDLE_WM_DRAWCLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_DRAWCLIPBOARD(hwnd, fn) \
+ (void)(fn)((hwnd), WM_DRAWCLIPBOARD, 0L, 0L)
+
+/* void Cls_OnPaintClipboard(HWND hwnd, HWND hwndCBViewer, const LPPAINTSTRUCT lpPaintStruct) */
+#define HANDLE_WM_PAINTCLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), (const LPPAINTSTRUCT)GlobalLock((HGLOBAL)(lParam))), GlobalUnlock((HGLOBAL)(lParam)), 0L)
+#define FORWARD_WM_PAINTCLIPBOARD(hwnd, hwndCBViewer, lpPaintStruct, fn) \
+ (void)(fn)((hwnd), WM_PAINTCLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), (LPARAM)(LPPAINTSTRUCT)(lpPaintStruct))
+
+/* void Cls_OnSizeClipboard(HWND hwnd, HWND hwndCBViewer, const LPRECT lprc) */
+#define HANDLE_WM_SIZECLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), (const LPRECT)GlobalLock((HGLOBAL)(lParam))), GlobalUnlock((HGLOBAL)(lParam)), 0L)
+#define FORWARD_WM_SIZECLIPBOARD(hwnd, hwndCBViewer, lprc, fn) \
+ (void)(fn)((hwnd), WM_SIZECLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), (LPARAM)(LPRECT)(lprc))
+
+/* void Cls_OnVScrollClipboard(HWND hwnd, HWND hwndCBViewer, UINT code, int pos) */
+#define HANDLE_WM_VSCROLLCLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L)
+#define FORWARD_WM_VSCROLLCLIPBOARD(hwnd, hwndCBViewer, code, pos, fn) \
+ (void)(fn)((hwnd), WM_VSCROLLCLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), MAKELPARAM((code), (pos)))
+
+/* void Cls_OnHScrollClipboard(HWND hwnd, HWND hwndCBViewer, UINT code, int pos) */
+#define HANDLE_WM_HSCROLLCLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L)
+#define FORWARD_WM_HSCROLLCLIPBOARD(hwnd, hwndCBViewer, code, pos, fn) \
+ (void)(fn)((hwnd), WM_HSCROLLCLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), MAKELPARAM((code), (pos)))
+
+/* void Cls_OnAskCBFormatName(HWND hwnd, int cchMax, LPTSTR rgchName) */
+#define HANDLE_WM_ASKCBFORMATNAME(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(wParam), (LPTSTR)(lParam)), 0L)
+#define FORWARD_WM_ASKCBFORMATNAME(hwnd, cchMax, rgchName, fn) \
+ (void)(fn)((hwnd), WM_ASKCBFORMATNAME, (WPARAM)(int)(cchMax), (LPARAM)(rgchName))
+
+/* void Cls_OnChangeCBChain(HWND hwnd, HWND hwndRemove, HWND hwndNext) */
+#define HANDLE_WM_CHANGECBCHAIN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), (HWND)(lParam)), 0L)
+#define FORWARD_WM_CHANGECBCHAIN(hwnd, hwndRemove, hwndNext, fn) \
+ (void)(fn)((hwnd), WM_CHANGECBCHAIN, (WPARAM)(HWND)(hwndRemove), (LPARAM)(HWND)(hwndNext))
+
+/* BOOL Cls_OnSetCursor(HWND hwnd, HWND hwndCursor, UINT codeHitTest, UINT msg) */
+#define HANDLE_WM_SETCURSOR(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (UINT)HIWORD(lParam))
+#define FORWARD_WM_SETCURSOR(hwnd, hwndCursor, codeHitTest, msg, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_SETCURSOR, (WPARAM)(HWND)(hwndCursor), MAKELPARAM((codeHitTest), (msg)))
+
+/* void Cls_OnSysCommand(HWND hwnd, UINT cmd, int x, int y) */
+#define HANDLE_WM_SYSCOMMAND(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SYSCOMMAND(hwnd, cmd, x, y, fn) \
+ (void)(fn)((hwnd), WM_SYSCOMMAND, (WPARAM)(UINT)(cmd), MAKELPARAM((x), (y)))
+
+/* HWND Cls_MDICreate(HWND hwnd, const LPMDICREATESTRUCT lpmcs) */
+#define HANDLE_WM_MDICREATE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)((hwnd), (LPMDICREATESTRUCT)(lParam))
+#define FORWARD_WM_MDICREATE(hwnd, lpmcs, fn) \
+ (HWND)(UINT)(DWORD)(fn)((hwnd), WM_MDICREATE, 0L, (LPARAM)(LPMDICREATESTRUCT)(lpmcs))
+
+/* void Cls_MDIDestroy(HWND hwnd, HWND hwndDestroy) */
+#define HANDLE_WM_MDIDESTROY(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIDESTROY(hwnd, hwndDestroy, fn) \
+ (void)(fn)((hwnd), WM_MDIDESTROY, (WPARAM)(hwndDestroy), 0L)
+
+/* NOTE: Usable only by MDI client windows */
+/* void Cls_MDIActivate(HWND hwnd, BOOL fActive, HWND hwndActivate, HWND hwndDeactivate) */
+#define HANDLE_WM_MDIACTIVATE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(lParam == (LPARAM)hwnd), (HWND)(lParam), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIACTIVATE(hwnd, fActive, hwndActivate, hwndDeactivate, fn) \
+ (void)(fn)(hwnd, WM_MDIACTIVATE, (WPARAM)(hwndDeactivate), (LPARAM)(hwndActivate))
+
+/* void Cls_MDIRestore(HWND hwnd, HWND hwndRestore) */
+#define HANDLE_WM_MDIRESTORE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIRESTORE(hwnd, hwndRestore, fn) \
+ (void)(fn)((hwnd), WM_MDIRESTORE, (WPARAM)(hwndRestore), 0L)
+
+/* HWND Cls_MDINext(HWND hwnd, HWND hwndCur, BOOL fPrev) */
+#define HANDLE_WM_MDINEXT(hwnd, wParam, lParam, fn) \
+ (LRESULT)(HWND)(fn)((hwnd), (HWND)(wParam), (BOOL)lParam)
+#define FORWARD_WM_MDINEXT(hwnd, hwndCur, fPrev, fn) \
+ (HWND)(UINT)(DWORD)(fn)((hwnd), WM_MDINEXT, (WPARAM)(hwndCur), (LPARAM)(fPrev))
+
+/* void Cls_MDIMaximize(HWND hwnd, HWND hwndMaximize) */
+#define HANDLE_WM_MDIMAXIMIZE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIMAXIMIZE(hwnd, hwndMaximize, fn) \
+ (void)(fn)((hwnd), WM_MDIMAXIMIZE, (WPARAM)(hwndMaximize), 0L)
+
+/* BOOL Cls_MDITile(HWND hwnd, UINT cmd) */
+#define HANDLE_WM_MDITILE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(fn)((hwnd), (UINT)(wParam))
+#define FORWARD_WM_MDITILE(hwnd, cmd, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_MDITILE, (WPARAM)(cmd), 0L)
+
+/* BOOL Cls_MDICascade(HWND hwnd, UINT cmd) */
+#define HANDLE_WM_MDICASCADE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(fn)((hwnd), (UINT)(wParam))
+#define FORWARD_WM_MDICASCADE(hwnd, cmd, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_MDICASCADE, (WPARAM)(cmd), 0L)
+
+/* void Cls_MDIIconArrange(HWND hwnd) */
+#define HANDLE_WM_MDIICONARRANGE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_MDIICONARRANGE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_MDIICONARRANGE, 0L, 0L)
+
+/* HWND Cls_MDIGetActive(HWND hwnd) */
+#define HANDLE_WM_MDIGETACTIVE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)(hwnd)
+#define FORWARD_WM_MDIGETACTIVE(hwnd, fn) \
+ (HWND)(UINT)(DWORD)(fn)((hwnd), WM_MDIGETACTIVE, 0L, 0L)
+
+/* HMENU Cls_MDISetMenu(HWND hwnd, BOOL fRefresh, HMENU hmenuFrame, HMENU hmenuWindow) */
+#define HANDLE_WM_MDISETMENU(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)((hwnd), (BOOL)(wParam), (HMENU)(wParam), (HMENU)(lParam))
+#define FORWARD_WM_MDISETMENU(hwnd, fRefresh, hmenuFrame, hmenuWindow, fn) \
+ (HMENU)(UINT)(DWORD)(fn)((hwnd), WM_MDISETMENU, (WPARAM)((fRefresh) ? (hmenuFrame) : 0), (LPARAM)(hmenuWindow))
+
+/* void Cls_OnChildActivate(HWND hwnd) */
+#define HANDLE_WM_CHILDACTIVATE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_CHILDACTIVATE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_CHILDACTIVATE, 0L, 0L)
+
+/* BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) */
+#define HANDLE_WM_INITDIALOG(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(BOOL)(fn)((hwnd), (HWND)(wParam), lParam)
+#define FORWARD_WM_INITDIALOG(hwnd, hwndFocus, lParam, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_INITDIALOG, (WPARAM)(HWND)(hwndFocus), (lParam))
+
+/* HWND Cls_OnNextDlgCtl(HWND hwnd, HWND hwndSetFocus, BOOL fNext) */
+#define HANDLE_WM_NEXTDLGCTL(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HWND)(fn)((hwnd), (HWND)(wParam), (BOOL)(lParam))
+#define FORWARD_WM_NEXTDLGCTL(hwnd, hwndSetFocus, fNext, fn) \
+ (HWND)(UINT)(DWORD)(fn)((hwnd), WM_NEXTDLGCTL, (WPARAM)(HWND)(hwndSetFocus), (LPARAM)(fNext))
+
+/* void Cls_OnParentNotify(HWND hwnd, UINT msg, HWND hwndChild, int idChild) */
+#define HANDLE_WM_PARENTNOTIFY(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)LOWORD(wParam), (HWND)(lParam), (UINT)HIWORD(wParam)), 0L)
+#define FORWARD_WM_PARENTNOTIFY(hwnd, msg, hwndChild, idChild, fn) \
+ (void)(fn)((hwnd), WM_PARENTNOTIFY, MAKEWPARAM(msg, idChild), (LPARAM)(hwndChild))
+
+/* void Cls_OnEnterIdle(HWND hwnd, UINT source, HWND hwndSource) */
+#define HANDLE_WM_ENTERIDLE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (HWND)(lParam)), 0L)
+#define FORWARD_WM_ENTERIDLE(hwnd, source, hwndSource, fn) \
+ (void)(fn)((hwnd), WM_ENTERIDLE, (WPARAM)(UINT)(source), (LPARAM)(HWND)(hwndSource))
+
+/* UINT Cls_OnGetDlgCode(HWND hwnd, LPMSG lpmsg) */
+#define HANDLE_WM_GETDLGCODE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)(hwnd, (LPMSG)(lParam))
+#define FORWARD_WM_GETDLGCODE(hwnd, lpmsg, fn) \
+ (UINT)(DWORD)(fn)((hwnd), WM_GETDLGCODE, (lpmsg ? lpmsg->wParam : 0), (LPARAM)(LPMSG)(lpmsg))
+
+/* HBRUSH Cls_OnCtlColor(HWND hwnd, HDC hdc, HWND hwndChild, int type) */
+#define HANDLE_WM_CTLCOLORMSGBOX(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_MSGBOX)
+#define FORWARD_WM_CTLCOLORMSGBOX(hwnd, hdc, hwndChild, fn) \
+ (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORMSGBOX, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLOREDIT(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_EDIT)
+#define FORWARD_WM_CTLCOLOREDIT(hwnd, hdc, hwndChild, fn) \
+ (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLOREDIT, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLORLISTBOX(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_LISTBOX)
+#define FORWARD_WM_CTLCOLORLISTBOX(hwnd, hdc, hwndChild, fn) \
+ (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORLISTBOX, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLORBTN(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_BTN)
+#define FORWARD_WM_CTLCOLORBTN(hwnd, hdc, hwndChild, fn) \
+ (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORBTN, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLORDLG(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_DLG)
+#define FORWARD_WM_CTLCOLORDLG(hwnd, hdc, hwndChild, fn) \
+ (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORDLG, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLORSCROLLBAR(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_SCROLLBAR)
+#define FORWARD_WM_CTLCOLORSCROLLBAR(hwnd, hdc, hwndChild, fn) \
+ (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORSCROLLBAR, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+#define HANDLE_WM_CTLCOLORSTATIC(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)(lParam), CTLCOLOR_STATIC)
+#define FORWARD_WM_CTLCOLORSTATIC(hwnd, hdc, hwndChild, fn) \
+ (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLORSTATIC, (WPARAM)(HDC)(hdc), (LPARAM)(HWND)(hwndChild))
+
+/* void Cls_OnSetFont(HWND hwndCtl, HFONT hfont, BOOL fRedraw) */
+#define HANDLE_WM_SETFONT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HFONT)(wParam), (BOOL)(lParam)), 0L)
+#define FORWARD_WM_SETFONT(hwnd, hfont, fRedraw, fn) \
+ (void)(fn)((hwnd), WM_SETFONT, (WPARAM)(HFONT)(hfont), (LPARAM)(BOOL)(fRedraw))
+
+/* HFONT Cls_OnGetFont(HWND hwnd) */
+#define HANDLE_WM_GETFONT(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HFONT)(fn)(hwnd)
+#define FORWARD_WM_GETFONT(hwnd, fn) \
+ (HFONT)(UINT)(DWORD)(fn)((hwnd), WM_GETFONT, 0L, 0L)
+
+/* void Cls_OnDrawItem(HWND hwnd, const DRAWITEMSTRUCT * lpDrawItem) */
+#define HANDLE_WM_DRAWITEM(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (const DRAWITEMSTRUCT *)(lParam)), 0L)
+#define FORWARD_WM_DRAWITEM(hwnd, lpDrawItem, fn) \
+ (void)(fn)((hwnd), WM_DRAWITEM, (WPARAM)(((const DRAWITEMSTRUCT *)lpDrawItem)->CtlID), (LPARAM)(const DRAWITEMSTRUCT *)(lpDrawItem))
+
+/* void Cls_OnMeasureItem(HWND hwnd, MEASUREITEMSTRUCT * lpMeasureItem) */
+#define HANDLE_WM_MEASUREITEM(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (MEASUREITEMSTRUCT *)(lParam)), 0L)
+#define FORWARD_WM_MEASUREITEM(hwnd, lpMeasureItem, fn) \
+ (void)(fn)((hwnd), WM_MEASUREITEM, (WPARAM)(((MEASUREITEMSTRUCT *)lpMeasureItem)->CtlID), (LPARAM)(MEASUREITEMSTRUCT *)(lpMeasureItem))
+
+/* void Cls_OnDeleteItem(HWND hwnd, const DELETEITEMSTRUCT * lpDeleteItem) */
+#define HANDLE_WM_DELETEITEM(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (const DELETEITEMSTRUCT *)(lParam)), 0L)
+#define FORWARD_WM_DELETEITEM(hwnd, lpDeleteItem, fn) \
+ (void)(fn)((hwnd), WM_DELETEITEM, (WPARAM)(((const DELETEITEMSTRUCT *)(lpDeleteItem))->CtlID), (LPARAM)(const DELETEITEMSTRUCT *)(lpDeleteItem))
+
+/* int Cls_OnCompareItem(HWND hwnd, const COMPAREITEMSTRUCT * lpCompareItem) */
+#define HANDLE_WM_COMPAREITEM(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)((hwnd), (const COMPAREITEMSTRUCT *)(lParam))
+#define FORWARD_WM_COMPAREITEM(hwnd, lpCompareItem, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_COMPAREITEM, (WPARAM)(((const COMPAREITEMSTRUCT *)(lpCompareItem))->CtlID), (LPARAM)(const COMPAREITEMSTRUCT *)(lpCompareItem))
+
+/* int Cls_OnVkeyToItem(HWND hwnd, UINT vk, HWND hwndListbox, int iCaret) */
+#define HANDLE_WM_VKEYTOITEM(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)((hwnd), (UINT)LOWORD(wParam), (HWND)(lParam), (int)(short)HIWORD(wParam))
+#define FORWARD_WM_VKEYTOITEM(hwnd, vk, hwndListBox, iCaret, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_VKEYTOITEM, MAKEWPARAM((vk), (iCaret)), (LPARAM)(hwndListBox))
+
+/* int Cls_OnCharToItem(HWND hwnd, UINT ch, HWND hwndListbox, int iCaret) */
+#define HANDLE_WM_CHARTOITEM(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)((hwnd), (UINT)LOWORD(wParam), (HWND)(lParam), (int)(short)HIWORD(wParam))
+#define FORWARD_WM_CHARTOITEM(hwnd, ch, hwndListBox, iCaret, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_CHARTOITEM, MAKEWPARAM((UINT)(ch), (UINT)(iCaret)), (LPARAM)(hwndListBox))
+
+/* void Cls_OnQueueSync(HWND hwnd) */
+#define HANDLE_WM_QUEUESYNC(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_QUEUESYNC(hwnd, fn) \
+ (void)(fn)((hwnd), WM_QUEUESYNC, 0L, 0L)
+#if (WINVER >= 0x030a)
+/* void Cls_OnCommNotify(HWND hwnd, int cid, UINT flags) */
+#define HANDLE_WM_COMMNOTIFY(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(wParam), (UINT)LOWORD(lParam)), 0L)
+#define FORWARD_WM_COMMNOTIFY(hwnd, cid, flags, fn) \
+ (void)(fn)((hwnd), WM_COMMNOTIFY, (WPARAM)(cid), MAKELPARAM((flags), 0))
+#endif
+/****** Static control message APIs ******************************************/
+
+#define Static_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
+
+#define Static_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))
+#define Static_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Static_SetText(hwndCtl, lpsz) SetWindowText((hwndCtl), (lpsz))
+
+#define Static_SetIcon(hwndCtl, hIcon) ((HICON)(UINT)(DWORD)SendMessage((hwndCtl), STM_SETICON, (WPARAM)(HICON)(hIcon), 0L))
+#define Static_GetIcon(hwndCtl, hIcon) ((HICON)(UINT)(DWORD)SendMessage((hwndCtl), STM_GETICON, 0L, 0L))
+
+/****** Button control message APIs ******************************************/
+
+#define Button_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
+
+#define Button_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))
+#define Button_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Button_SetText(hwndCtl, lpsz) SetWindowText((hwndCtl), (lpsz))
+
+#define Button_GetCheck(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), BM_GETCHECK, 0L, 0L))
+#define Button_SetCheck(hwndCtl, check) ((void)SendMessage((hwndCtl), BM_SETCHECK, (WPARAM)(int)(check), 0L))
+
+#define Button_GetState(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), BM_GETSTATE, 0L, 0L))
+#define Button_SetState(hwndCtl, state) ((UINT)(DWORD)SendMessage((hwndCtl), BM_SETSTATE, (WPARAM)(int)(state), 0L))
+
+#define Button_SetStyle(hwndCtl, style, fRedraw) ((void)SendMessage((hwndCtl), BM_SETSTYLE, (WPARAM)LOWORD(style), MAKELPARAM(((fRedraw) ? TRUE : FALSE), 0)))
+
+/****** Edit control message APIs ********************************************/
+
+#define Edit_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
+
+#define Edit_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))
+#define Edit_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Edit_SetText(hwndCtl, lpsz) SetWindowText((hwndCtl), (lpsz))
+
+#define Edit_LimitText(hwndCtl, cchMax) ((void)SendMessage((hwndCtl), EM_LIMITTEXT, (WPARAM)(cchMax), 0L))
+
+#define Edit_GetLineCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), EM_GETLINECOUNT, 0L, 0L))
+#define Edit_GetLine(hwndCtl, line, lpch, cchMax) ((*((int *)(lpch)) = (cchMax)), ((int)(DWORD)SendMessage((hwndCtl), EM_GETLINE, (WPARAM)(int)(line), (LPARAM)(LPTSTR)(lpch))))
+
+#define Edit_GetRect(hwndCtl, lprc) ((void)SendMessage((hwndCtl), EM_GETRECT, 0L, (LPARAM)(RECT *)(lprc)))
+#define Edit_SetRect(hwndCtl, lprc) ((void)SendMessage((hwndCtl), EM_SETRECT, 0L, (LPARAM)(const RECT *)(lprc)))
+#define Edit_SetRectNoPaint(hwndCtl, lprc) ((void)SendMessage((hwndCtl), EM_SETRECTNP, 0L, (LPARAM)(const RECT *)(lprc)))
+
+#define Edit_GetSel(hwndCtl) ((DWORD)SendMessage((hwndCtl), EM_GETSEL, 0L, 0L))
+#define Edit_SetSel(hwndCtl, ichStart, ichEnd) ((void)SendMessage((hwndCtl), EM_SETSEL, (ichStart), (ichEnd)))
+#define Edit_ReplaceSel(hwndCtl, lpszReplace) ((void)SendMessage((hwndCtl), EM_REPLACESEL, 0L, (LPARAM)(LPCTSTR)(lpszReplace)))
+
+#define Edit_GetModify(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_GETMODIFY, 0L, 0L))
+#define Edit_SetModify(hwndCtl, fModified) ((void)SendMessage((hwndCtl), EM_SETMODIFY, (WPARAM)(UINT)(fModified), 0L))
+
+#define Edit_ScrollCaret(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_SCROLLCARET, 0, 0L))
+
+#define Edit_LineFromChar(hwndCtl, ich) ((int)(DWORD)SendMessage((hwndCtl), EM_LINEFROMCHAR, (WPARAM)(int)(ich), 0L))
+#define Edit_LineIndex(hwndCtl, line) ((int)(DWORD)SendMessage((hwndCtl), EM_LINEINDEX, (WPARAM)(int)(line), 0L))
+#define Edit_LineLength(hwndCtl, line) ((int)(DWORD)SendMessage((hwndCtl), EM_LINELENGTH, (WPARAM)(int)(line), 0L))
+
+#define Edit_Scroll(hwndCtl, dv, dh) ((void)SendMessage((hwndCtl), EM_LINESCROLL, (WPARAM)(dh), (LPARAM)(dv)))
+
+#define Edit_CanUndo(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_CANUNDO, 0L, 0L))
+#define Edit_Undo(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_UNDO, 0L, 0L))
+#define Edit_EmptyUndoBuffer(hwndCtl) ((void)SendMessage((hwndCtl), EM_EMPTYUNDOBUFFER, 0L, 0L))
+
+#define Edit_SetPasswordChar(hwndCtl, ch) ((void)SendMessage((hwndCtl), EM_SETPASSWORDCHAR, (WPARAM)(UINT)(ch), 0L))
+
+#define Edit_SetTabStops(hwndCtl, cTabs, lpTabs) ((void)SendMessage((hwndCtl), EM_SETTABSTOPS, (WPARAM)(int)(cTabs), (LPARAM)(const int *)(lpTabs)))
+
+#define Edit_FmtLines(hwndCtl, fAddEOL) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_FMTLINES, (WPARAM)(BOOL)(fAddEOL), 0L))
+
+#define Edit_GetHandle(hwndCtl) ((HLOCAL)(UINT)(DWORD)SendMessage((hwndCtl), EM_GETHANDLE, 0L, 0L))
+#define Edit_SetHandle(hwndCtl, h) ((void)SendMessage((hwndCtl), EM_SETHANDLE, (WPARAM)(UINT)(HLOCAL)(h), 0L))
+
+#if (WINVER >= 0x030a)
+#define Edit_GetFirstVisibleLine(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), EM_GETFIRSTVISIBLELINE, 0L, 0L))
+
+#define Edit_SetReadOnly(hwndCtl, fReadOnly) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_SETREADONLY, (WPARAM)(BOOL)(fReadOnly), 0L))
+
+#define Edit_GetPasswordChar(hwndCtl) ((TCHAR)(DWORD)SendMessage((hwndCtl), EM_GETPASSWORDCHAR, 0L, 0L))
+
+#define Edit_SetWordBreakProc(hwndCtl, lpfnWordBreak) ((void)SendMessage((hwndCtl), EM_SETWORDBREAKPROC, 0L, (LPARAM)(EDITWORDBREAKPROC)(lpfnWordBreak)))
+#define Edit_GetWordBreakProc(hwndCtl) ((EDITWORDBREAKPROC)SendMessage((hwndCtl), EM_GETWORDBREAKPROC, 0L, 0L))
+#endif /* WINVER >= 0x030a */
+
+/****** ScrollBar control message APIs ***************************************/
+
+/* NOTE: flags parameter is a collection of ESB_* values, NOT a boolean! */
+#define ScrollBar_Enable(hwndCtl, flags) EnableScrollBar((hwndCtl), SB_CTL, (flags))
+
+#define ScrollBar_Show(hwndCtl, fShow) ShowWindow((hwndCtl), (fShow) ? SW_SHOWNORMAL : SW_HIDE)
+
+#define ScrollBar_SetPos(hwndCtl, pos, fRedraw) SetScrollPos((hwndCtl), SB_CTL, (pos), (fRedraw))
+#define ScrollBar_GetPos(hwndCtl) GetScrollPos((hwndCtl), SB_CTL)
+
+#define ScrollBar_SetRange(hwndCtl, posMin, posMax, fRedraw) SetScrollRange((hwndCtl), SB_CTL, (posMin), (posMax), (fRedraw))
+#define ScrollBar_GetRange(hwndCtl, lpposMin, lpposMax) GetScrollRange((hwndCtl), SB_CTL, (lpposMin), (lpposMax))
+
+/****** ListBox control message APIs *****************************************/
+
+#define ListBox_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
+
+#define ListBox_GetCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETCOUNT, 0L, 0L))
+#define ListBox_ResetContent(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), LB_RESETCONTENT, 0L, 0L))
+
+#define ListBox_AddString(hwndCtl, lpsz) ((int)(DWORD)SendMessage((hwndCtl), LB_ADDSTRING, 0L, (LPARAM)(LPCTSTR)(lpsz)))
+#define ListBox_InsertString(hwndCtl, index, lpsz) ((int)(DWORD)SendMessage((hwndCtl), LB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(LPCTSTR)(lpsz)))
+
+#define ListBox_AddItemData(hwndCtl, data) ((int)(DWORD)SendMessage((hwndCtl), LB_ADDSTRING, 0L, (LPARAM)(data)))
+#define ListBox_InsertItemData(hwndCtl, index, data) ((int)(DWORD)SendMessage((hwndCtl), LB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(data)))
+
+#define ListBox_DeleteString(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_DELETESTRING, (WPARAM)(int)(index), 0L))
+
+#define ListBox_GetTextLen(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_GETTEXTLEN, (WPARAM)(int)(index), 0L))
+#define ListBox_GetText(hwndCtl, index, lpszBuffer) ((int)(DWORD)SendMessage((hwndCtl), LB_GETTEXT, (WPARAM)(int)(index), (LPARAM)(LPCTSTR)(lpszBuffer)))
+
+#define ListBox_GetItemData(hwndCtl, index) ((LRESULT)(DWORD)SendMessage((hwndCtl), LB_GETITEMDATA, (WPARAM)(int)(index), 0L))
+#define ListBox_SetItemData(hwndCtl, index, data) ((int)(DWORD)SendMessage((hwndCtl), LB_SETITEMDATA, (WPARAM)(int)(index), (LPARAM)(data)))
+
+#if (WINVER >= 0x030a)
+#define ListBox_FindString(hwndCtl, indexStart, lpszFind) ((int)(DWORD)SendMessage((hwndCtl), LB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
+#define ListBox_FindItemData(hwndCtl, indexStart, data) ((int)(DWORD)SendMessage((hwndCtl), LB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(data)))
+
+#define ListBox_SetSel(hwndCtl, fSelect, index) ((int)(DWORD)SendMessage((hwndCtl), LB_SETSEL, (WPARAM)(BOOL)(fSelect), (LPARAM)(index)))
+#define ListBox_SelItemRange(hwndCtl, fSelect, first, last) ((int)(DWORD)SendMessage((hwndCtl), LB_SELITEMRANGE, (WPARAM)(BOOL)(fSelect), MAKELPARAM((first), (last))))
+
+#define ListBox_GetCurSel(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETCURSEL, 0L, 0L))
+#define ListBox_SetCurSel(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_SETCURSEL, (WPARAM)(int)(index), 0L))
+
+#define ListBox_SelectString(hwndCtl, indexStart, lpszFind) ((int)(DWORD)SendMessage((hwndCtl), LB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
+#define ListBox_SelectItemData(hwndCtl, indexStart, data) ((int)(DWORD)SendMessage((hwndCtl), LB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(data)))
+
+#define ListBox_GetSel(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_GETSEL, (WPARAM)(int)(index), 0L))
+#define ListBox_GetSelCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETSELCOUNT, 0L, 0L))
+#define ListBox_GetTopIndex(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETTOPINDEX, 0L, 0L))
+#define ListBox_GetSelItems(hwndCtl, cItems, lpItems) ((int)(DWORD)SendMessage((hwndCtl), LB_GETSELITEMS, (WPARAM)(int)(cItems), (LPARAM)(int *)(lpItems)))
+
+#define ListBox_SetTopIndex(hwndCtl, indexTop) ((int)(DWORD)SendMessage((hwndCtl), LB_SETTOPINDEX, (WPARAM)(int)(indexTop), 0L))
+
+#define ListBox_SetColumnWidth(hwndCtl, cxColumn) ((void)SendMessage((hwndCtl), LB_SETCOLUMNWIDTH, (WPARAM)(int)(cxColumn), 0L))
+#define ListBox_GetHorizontalExtent(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETHORIZONTALEXTENT, 0L, 0L))
+#define ListBox_SetHorizontalExtent(hwndCtl, cxExtent) ((void)SendMessage((hwndCtl), LB_SETHORIZONTALEXTENT, (WPARAM)(int)(cxExtent), 0L))
+
+#define ListBox_SetTabStops(hwndCtl, cTabs, lpTabs) ((BOOL)(DWORD)SendMessage((hwndCtl), LB_SETTABSTOPS, (WPARAM)(int)(cTabs), (LPARAM)(int *)(lpTabs)))
+
+#define ListBox_GetItemRect(hwndCtl, index, lprc) ((int)(DWORD)SendMessage((hwndCtl), LB_GETITEMRECT, (WPARAM)(int)(index), (LPARAM)(RECT *)(lprc)))
+
+#define ListBox_SetCaretIndex(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_SETCARETINDEX, (WPARAM)(int)(index), 0L))
+#define ListBox_GetCaretIndex(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETCARETINDEX, 0L, 0L))
+
+#define ListBox_FindStringExact(hwndCtl, indexStart, lpszFind) ((int)(DWORD)SendMessage((hwndCtl), LB_FINDSTRINGEXACT, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
+
+#define ListBox_SetItemHeight(hwndCtl, index, cy) ((int)(DWORD)SendMessage((hwndCtl), LB_SETITEMHEIGHT, (WPARAM)(int)(index), MAKELPARAM((cy), 0)))
+#define ListBox_GetItemHeight(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_GETITEMHEIGHT, (WPARAM)(int)(index), 0L))
+#endif /* WINVER >= 0x030a */
+
+#define ListBox_Dir(hwndCtl, attrs, lpszFileSpec) ((int)(DWORD)SendMessage((hwndCtl), LB_DIR, (WPARAM)(UINT)(attrs), (LPARAM)(LPCTSTR)(lpszFileSpec)))
+
+/****** ComboBox control message APIs ****************************************/
+
+#define ComboBox_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
+
+#define ComboBox_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))
+#define ComboBox_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define ComboBox_SetText(hwndCtl, lpsz) SetWindowText((hwndCtl), (lpsz))
+
+#define ComboBox_LimitText(hwndCtl, cchLimit) ((int)(DWORD)SendMessage((hwndCtl), CB_LIMITTEXT, (WPARAM)(int)(cchLimit), 0L))
+
+#define ComboBox_GetEditSel(hwndCtl) ((DWORD)SendMessage((hwndCtl), CB_GETEDITSEL, 0L, 0L))
+#define ComboBox_SetEditSel(hwndCtl, ichStart, ichEnd) ((int)(DWORD)SendMessage((hwndCtl), CB_SETEDITSEL, 0L, MAKELPARAM((ichStart), (ichEnd))))
+
+#define ComboBox_GetCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), CB_GETCOUNT, 0L, 0L))
+#define ComboBox_ResetContent(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), CB_RESETCONTENT, 0L, 0L))
+
+#define ComboBox_AddString(hwndCtl, lpsz) ((int)(DWORD)SendMessage((hwndCtl), CB_ADDSTRING, 0L, (LPARAM)(LPCTSTR)(lpsz)))
+#define ComboBox_InsertString(hwndCtl, index, lpsz) ((int)(DWORD)SendMessage((hwndCtl), CB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(LPCTSTR)(lpsz)))
+
+#define ComboBox_AddItemData(hwndCtl, data) ((int)(DWORD)SendMessage((hwndCtl), CB_ADDSTRING, 0L, (LPARAM)(data)))
+#define ComboBox_InsertItemData(hwndCtl, index, data) ((int)(DWORD)SendMessage((hwndCtl), CB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(data)))
+
+#define ComboBox_DeleteString(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), CB_DELETESTRING, (WPARAM)(int)(index), 0L))
+
+#define ComboBox_GetLBTextLen(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), CB_GETLBTEXTLEN, (WPARAM)(int)(index), 0L))
+#define ComboBox_GetLBText(hwndCtl, index, lpszBuffer) ((int)(DWORD)SendMessage((hwndCtl), CB_GETLBTEXT, (WPARAM)(int)(index), (LPARAM)(LPCTSTR)(lpszBuffer)))
+
+#define ComboBox_GetItemData(hwndCtl, index) ((LRESULT)(DWORD)SendMessage((hwndCtl), CB_GETITEMDATA, (WPARAM)(int)(index), 0L))
+#define ComboBox_SetItemData(hwndCtl, index, data) ((int)(DWORD)SendMessage((hwndCtl), CB_SETITEMDATA, (WPARAM)(int)(index), (LPARAM)(data)))
+
+#define ComboBox_FindString(hwndCtl, indexStart, lpszFind) ((int)(DWORD)SendMessage((hwndCtl), CB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
+#define ComboBox_FindItemData(hwndCtl, indexStart, data) ((int)(DWORD)SendMessage((hwndCtl), CB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(data)))
+
+#define ComboBox_GetCurSel(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), CB_GETCURSEL, 0L, 0L))
+#define ComboBox_SetCurSel(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), CB_SETCURSEL, (WPARAM)(int)(index), 0L))
+
+#define ComboBox_SelectString(hwndCtl, indexStart, lpszSelect) ((int)(DWORD)SendMessage((hwndCtl), CB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszSelect)))
+#define ComboBox_SelectItemData(hwndCtl, indexStart, data) ((int)(DWORD)SendMessage((hwndCtl), CB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(data)))
+
+#define ComboBox_Dir(hwndCtl, attrs, lpszFileSpec) ((int)(DWORD)SendMessage((hwndCtl), CB_DIR, (WPARAM)(UINT)(attrs), (LPARAM)(LPCTSTR)(lpszFileSpec)))
+
+#define ComboBox_ShowDropdown(hwndCtl, fShow) ((BOOL)(DWORD)SendMessage((hwndCtl), CB_SHOWDROPDOWN, (WPARAM)(BOOL)(fShow), 0L))
+
+#if (WINVER >= 0x030a)
+#define ComboBox_FindStringExact(hwndCtl, indexStart, lpszFind) ((int)(DWORD)SendMessage((hwndCtl), CB_FINDSTRINGEXACT, (WPARAM)(int)(indexStart), (LPARAM)(LPCTSTR)(lpszFind)))
+
+#define ComboBox_GetDroppedState(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), CB_GETDROPPEDSTATE, 0L, 0L))
+#define ComboBox_GetDroppedControlRect(hwndCtl, lprc) ((void)SendMessage((hwndCtl), CB_GETDROPPEDCONTROLRECT, 0L, (LPARAM)(RECT *)(lprc)))
+
+#define ComboBox_GetItemHeight(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), CB_GETITEMHEIGHT, 0L, 0L))
+#define ComboBox_SetItemHeight(hwndCtl, index, cyItem) ((int)(DWORD)SendMessage((hwndCtl), CB_SETITEMHEIGHT, (WPARAM)(int)(index), (LPARAM)(int)cyItem))
+
+#define ComboBox_GetExtendedUI(hwndCtl) ((UINT)(DWORD)SendMessage((hwndCtl), CB_GETEXTENDEDUI, 0L, 0L))
+#define ComboBox_SetExtendedUI(hwndCtl, flags) ((int)(DWORD)SendMessage((hwndCtl), CB_SETEXTENDEDUI, (WPARAM)(UINT)(flags), 0L))
+#endif /* WINVER >= 0x030a */
+
+/****** Alternate porting layer macros ****************************************/
+
+/* USER MESSAGES: */
+
+#define GET_WPARAM(wp, lp) (wp)
+#define GET_LPARAM(wp, lp) (lp)
+
+#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
+#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(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)(short)LOWORD(lp)
+#define GET_WM_PARENTNOTIFY_Y(wp, lp) (int)(short)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)(short)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)
+
+/****** C runtime porting macros ****************************************/
+
+#define _ncalloc calloc
+#define _nexpand _expand
+#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 _fmsize _msize
+#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
+#define _nfree free
+#define _nmalloc malloc
+#define _nmsize _msize
+#define _nrealloc realloc
+#define _nstrdup _strdup
+#define hmemcpy MoveMemory
+
+#define DECLARE_HANDLE32 DECLARE_HANDLE
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* !_INC_WINDOWSX */
diff --git a/public/sdk/inc/windowsx.h16 b/public/sdk/inc/windowsx.h16
new file mode 100644
index 000000000..a17495e8a
--- /dev/null
+++ b/public/sdk/inc/windowsx.h16
@@ -0,0 +1,1208 @@
+/*****************************************************************************\
+* *
+* windowsx.h - Macro APIs, window message crackers, and control APIs *
+* *
+* Version 3.10 *
+* *
+* Copyright (c) 1992, Microsoft Corp. All rights reserved. *
+* *
+\*****************************************************************************/
+
+#ifndef _INC_WINDOWSX
+#define _INC_WINDOWSX
+
+#include "pshpack.h" /* Assume byte packing throughout */
+
+#ifdef __cplusplus
+extern "C" { /* Assume C declarations for C++ */
+#endif /* __cplusplus */
+
+/****** KERNEL Macro APIs ****************************************************/
+
+#define GetInstanceModule(hInstance) \
+ GetModuleHandle((LPCSTR)MAKELP(0, hInstance))
+
+#define GlobalPtrHandle(lp) \
+ ((HGLOBAL)LOWORD(GlobalHandle(SELECTOROF(lp))))
+
+#define GlobalLockPtr(lp) \
+ ((BOOL)SELECTOROF(GlobalLock(GlobalPtrHandle(lp))))
+#define GlobalUnlockPtr(lp) \
+ GlobalUnlock(GlobalPtrHandle(lp))
+
+#define GlobalAllocPtr(flags, cb) \
+ (GlobalLock(GlobalAlloc((flags), (cb))))
+#define GlobalReAllocPtr(lp, cbNew, flags) \
+ (GlobalUnlockPtr(lp), GlobalLock(GlobalReAlloc(GlobalPtrHandle(lp) , (cbNew), (flags))))
+#define GlobalFreePtr(lp) \
+ (GlobalUnlockPtr(lp), (BOOL)GlobalFree(GlobalPtrHandle(lp)))
+
+/****** GDI Macro APIs *******************************************************/
+
+#define DeletePen(hpen) DeleteObject((HGDIOBJ)(HPEN)(hpen))
+#define SelectPen(hdc, hpen) ((HPEN)SelectObject((hdc), (HGDIOBJ)(HPEN)(hpen)))
+#define GetStockPen(i) ((HPEN)GetStockObject(i))
+
+#define DeleteBrush(hbr) DeleteObject((HGDIOBJ)(HBRUSH)(hbr))
+#define SelectBrush(hdc, hbr) ((HBRUSH)SelectObject((hdc), (HGDIOBJ)(HBRUSH)(hbr)))
+#define GetStockBrush(i) ((HBRUSH)GetStockObject(i))
+
+#define DeleteRgn(hrgn) DeleteObject((HGDIOBJ)(HRGN)(hrgn))
+
+#define CopyRgn(hrgnDst, hrgnSrc) CombineRgn(hrgnDst, hrgnSrc, 0, RGN_COPY)
+#define IntersectRgn(hrgnResult, hrgnA, hrgnB) CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_AND)
+#define SubtractRgn(hrgnResult, hrgnA, hrgnB) CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_DIFF)
+#define UnionRgn(hrgnResult, hrgnA, hrgnB) CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_OR)
+#define XorRgn(hrgnResult, hrgnA, hrgnB) CombineRgn(hrgnResult, hrgnA, hrgnB, RGN_XOR)
+
+#define DeletePalette(hpal) DeleteObject((HGDIOBJ)(HPALETTE)(hpal))
+
+#define DeleteFont(hfont) DeleteObject((HGDIOBJ)(HFONT)(hfont))
+#define SelectFont(hdc, hfont) ((HFONT)SelectObject((hdc), (HGDIOBJ)(HFONT)(hfont)))
+#define GetStockFont(i) ((HFONT)GetStockObject(i))
+
+#define DeleteBitmap(hbm) DeleteObject((HGDIOBJ)(HBITMAP)(hbm))
+#define SelectBitmap(hdc, hbm) ((HBITMAP)SelectObject((hdc), (HGDIOBJ)(HBITMAP)(hbm)))
+
+#define InsetRect(lprc, dx, dy) InflateRect((lprc), -(dx), -(dy))
+
+/****** USER Macro APIs ******************************************************/
+
+#define GetWindowInstance(hwnd) ((HINSTANCE)GetWindowWord(hwnd, GWW_HINSTANCE))
+
+#define GetWindowStyle(hwnd) ((DWORD)GetWindowLong(hwnd, GWL_STYLE))
+#define GetWindowExStyle(hwnd) ((DWORD)GetWindowLong(hwnd, GWL_EXSTYLE))
+
+#define GetWindowOwner(hwnd) GetWindow(hwnd, GW_OWNER)
+
+#define GetFirstChild(hwnd) GetTopWindow(hwnd)
+#define GetFirstSibling(hwnd) GetWindow(hwnd, GW_HWNDFIRST)
+#define GetLastSibling(hwnd) GetWindow(hwnd, GW_HWNDLAST)
+#define GetNextSibling(hwnd) GetWindow(hwnd, GW_HWNDNEXT)
+#define GetPrevSibling(hwnd) GetWindow(hwnd, GW_HWNDPREV)
+
+#define GetWindowID(hwnd) GetDlgCtrlID(hwnd)
+
+#define SetWindowRedraw(hwnd, fRedraw) \
+ ((void)SendMessage(hwnd, WM_SETREDRAW, (WPARAM)(BOOL)(fRedraw), 0L))
+
+#define SubclassWindow(hwnd, lpfn) \
+ ((WNDPROC)SetWindowLong((hwnd), GWL_WNDPROC, (LPARAM)(WNDPROC)(lpfn)))
+
+#define IsMinimized(hwnd) IsIconic(hwnd)
+#define IsMaximized(hwnd) IsZoomed(hwnd)
+#define IsRestored(hwnd) ((GetWindowStyle(hwnd) & (WS_MINIMIZE | WS_MAXIMIZE)) == 0L)
+
+#define SetWindowFont(hwnd, hfont, fRedraw) FORWARD_WM_SETFONT((hwnd), (hfont), (fRedraw), SendMessage)
+
+#define GetWindowFont(hwnd) FORWARD_WM_GETFONT((hwnd), SendMessage)
+
+#if (WINVER >= 0x030a)
+#define MapWindowRect(hwndFrom, hwndTo, lprc) \
+ MapWindowPoints((hwndFrom), (hwndTo), (POINT FAR*)(lprc), 2)
+#endif /* WINVER >= 0x030a */
+
+#define IsLButtonDown() (GetKeyState(VK_LBUTTON) < 0)
+#define IsRButtonDown() (GetKeyState(VK_RBUTTON) < 0)
+#define IsMButtonDown() (GetKeyState(VK_MBUTTON) < 0)
+
+#define SubclassDialog(hwndDlg, lpfn) \
+ ((DLGPROC)SetWindowLong(hwndDlg, DWL_DLGPROC, (LPARAM)(DLGPROC)(lpfn)))
+
+#define SetDlgMsgResult(hwnd, msg, result) \
+ (((msg) == WM_CTLCOLOR || (msg) == WM_COMPAREITEM || (msg) == WM_VKEYTOITEM || \
+ (msg) == WM_CHARTOITEM || (msg) == WM_QUERYDRAGICON || (msg) == WM_INITDIALOG) \
+ ? (BOOL)LOWORD(result) : (SetWindowLong((hwnd), DWL_MSGRESULT, (LPARAM)(LRESULT)(result)), TRUE))
+
+#define DefDlgProcEx(hwnd, msg, wParam, lParam, pfRecursion) \
+ (*(pfRecursion) = TRUE, DefDlgProc(hwnd, msg, wParam, lParam))
+
+#define CheckDefDlgRecursion(pfRecursion) \
+ if (*(pfRecursion)) { *(pfRecursion) = FALSE; return FALSE; }
+
+/****** Message crackers ****************************************************/
+
+#define HANDLE_MSG(hwnd, message, fn) \
+ case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))
+
+/* void Cls_OnCompacting(HWND hwnd, UINT compactRatio) */
+#define HANDLE_WM_COMPACTING(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam)), 0L)
+#define FORWARD_WM_COMPACTING(hwnd, compactRatio, fn) \
+ (void)(fn)((hwnd), WM_COMPACTING, (WPARAM)(UINT)(compactRatio), 0L)
+
+/* void Cls_OnWinIniChange(HWND hwnd, LPCSTR lpszSectionName) */
+#define HANDLE_WM_WININICHANGE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (LPCSTR)(lParam)), 0L)
+#define FORWARD_WM_WININICHANGE(hwnd, lpszSectionName, fn) \
+ (void)(fn)((hwnd), WM_WININICHANGE, 0, (LPARAM)(LPCSTR)(lpszSectionName))
+
+/* void Cls_OnSysColorChange(HWND hwnd) */
+#define HANDLE_WM_SYSCOLORCHANGE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_SYSCOLORCHANGE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_SYSCOLORCHANGE, 0, 0L)
+
+/* BOOL Cls_OnQueryNewPalette(HWND hwnd) */
+#define HANDLE_WM_QUERYNEWPALETTE(hwnd, wParam, lParam, fn) \
+ MAKELRESULT((BOOL)(fn)(hwnd), 0)
+#define FORWARD_WM_QUERYNEWPALETTE(hwnd, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_QUERYNEWPALETTE, 0, 0L)
+
+/* void Cls_OnPaletteIsChanging(HWND hwnd, HWND hwndPaletteChange) */
+#define HANDLE_WM_PALETTEISCHANGING(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_PALETTEISCHANGING(hwnd, hwndPaletteChange, fn) \
+ (void)(fn)((hwnd), WM_PALETTEISCHANGING, (WPARAM)(HWND)(hwndPaletteChange), 0L)
+
+/* void Cls_OnPaletteChanged(HWND hwnd, HWND hwndPaletteChange) */
+#define HANDLE_WM_PALETTECHANGED(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_PALETTECHANGED(hwnd, hwndPaletteChange, fn) \
+ (void)(fn)((hwnd), WM_PALETTECHANGED, (WPARAM)(HWND)(hwndPaletteChange), 0L)
+
+/* void Cls_OnFontChange(HWND hwnd) */
+#define HANDLE_WM_FONTCHANGE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_FONTCHANGE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_FONTCHANGE, 0, 0L)
+
+/* void Cls_OnSpoolerStatus(HWND hwnd, UINT status, int cJobInQueue) */
+#define HANDLE_WM_SPOOLERSTATUS(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (int)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SPOOLERSTATUS(hwnd, status, cJobInQueue, fn) \
+ (void)(fn)((hwnd), WM_SPOOLERSTATUS, (WPARAM)(status), MAKELPARAM((UINT)(cJobInQueue), 0))
+
+/* void Cls_OnDevModeChange(HWND hwnd, LPCSTR lpszDeviceName) */
+#define HANDLE_WM_DEVMODECHANGE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (LPCSTR)(lParam)), 0L)
+#define FORWARD_WM_DEVMODECHANGE(hwnd, lpszDeviceName, fn) \
+ (void)(fn)((hwnd), WM_DEVMODECHANGE, 0,(LPARAM)(LPCSTR)(lpszDeviceName))
+
+/* void Cls_OnTimeChange(HWND hwnd) */
+#define HANDLE_WM_TIMECHANGE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_TIMECHANGE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_TIMECHANGE, 0, 0L)
+
+/* void Cls_OnPower(HWND hwnd, int code) */
+#define HANDLE_WM_POWER(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(wParam)), 0L)
+#define FORWARD_WM_POWER(hwnd, code, fn) \
+ (void)(fn)((hwnd), WM_POWER, (WPARAM)(code), 0L)
+
+/* BOOL Cls_OnQueryEndSession(HWND hwnd) */
+#define HANDLE_WM_QUERYENDSESSION(hwnd, wParam, lParam, fn) \
+ MAKELRESULT((BOOL)(fn)(hwnd), 0)
+#define FORWARD_WM_QUERYENDSESSION(hwnd, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_QUERYENDSESSION, 0, 0L)
+
+/* void Cls_OnEndSession(HWND hwnd, BOOL fEnding) */
+#define HANDLE_WM_ENDSESSION(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam)), 0L)
+#define FORWARD_WM_ENDSESSION(hwnd, fEnding, fn) \
+ (void)(fn)((hwnd), WM_ENDSESSION, (WPARAM)(BOOL)(fEnding), 0L)
+
+/* void Cls_OnQuit(HWND hwnd, int exitCode) */
+#define HANDLE_WM_QUIT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(wParam)), 0L)
+#define FORWARD_WM_QUIT(hwnd, exitCode, fn) \
+ (void)(fn)((hwnd), WM_QUIT, (WPARAM)(exitCode), 0L)
+
+/* void Cls_OnSystemError(HWND hwnd, int errCode) */
+#define HANDLE_WM_SYSTEMERROR(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(wParam)), 0L)
+#define FORWARD_WM_SYSTEMERROR(hwnd, errCode, fn) \
+ (void)(fn)((hwnd), WM_SYSTEMERROR, (WPARAM)(errCode), 0L)
+
+/* BOOL Cls_OnCreate(HWND hwnd, CREATESTRUCT FAR* lpCreateStruct) */
+#define HANDLE_WM_CREATE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (CREATESTRUCT FAR*)(lParam)) ? 0L : (LRESULT)-1L)
+#define FORWARD_WM_CREATE(hwnd, lpCreateStruct, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_CREATE, 0, (LPARAM)(CREATESTRUCT FAR*)(lpCreateStruct))
+
+/* BOOL Cls_OnNCCreate(HWND hwnd, CREATESTRUCT FAR* lpCreateStruct) */
+#define HANDLE_WM_NCCREATE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (CREATESTRUCT FAR*)(lParam))
+#define FORWARD_WM_NCCREATE(hwnd, lpCreateStruct, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_NCCREATE, 0, (LPARAM)(CREATESTRUCT FAR*)(lpCreateStruct))
+
+/* void Cls_OnDestroy(HWND hwnd) */
+#define HANDLE_WM_DESTROY(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_DESTROY(hwnd, fn) \
+ (void)(fn)((hwnd), WM_DESTROY, 0, 0L)
+
+/* void Cls_OnNCDestroy(HWND hwnd) */
+#define HANDLE_WM_NCDESTROY(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_NCDESTROY(hwnd, fn) \
+ (void)(fn)((hwnd), WM_NCDESTROY, 0, 0L)
+
+/* void Cls_OnShowWindow(HWND hwnd, BOOL fShow, UINT status) */
+#define HANDLE_WM_SHOWWINDOW(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam), LOWORD(lParam)), 0L)
+#define FORWARD_WM_SHOWWINDOW(hwnd, fShow, status, fn) \
+ (void)(fn)((hwnd), WM_SHOWWINDOW, (WPARAM)(BOOL)(fShow), MAKELPARAM((UINT)(status), 0))
+
+/* void Cls_OnSetRedraw(HWND hwnd, BOOL fRedraw) */
+#define HANDLE_WM_SETREDRAW(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam)), 0L)
+#define FORWARD_WM_SETREDRAW(hwnd, fRedraw, fn) \
+ (void)(fn)((hwnd), WM_SETREDRAW, (WPARAM)(fRedraw), 0L)
+
+/* void Cls_OnEnable(HWND hwnd, BOOL fEnable) */
+#define HANDLE_WM_ENABLE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam)), 0L)
+#define FORWARD_WM_ENABLE(hwnd, fEnable, fn) \
+ (void)(fn)((hwnd), WM_ENABLE, (WPARAM)(BOOL)(fEnable), 0L)
+
+/* void Cls_OnSetText(HWND hwnd, LPCSTR lpszText) */
+#define HANDLE_WM_SETTEXT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (LPCSTR)(lParam)), 0L)
+#define FORWARD_WM_SETTEXT(hwnd, lpszText, fn) \
+ (void)(fn)((hwnd), WM_SETTEXT, 0, (LPARAM)(LPCSTR)(lpszText))
+
+/* INT Cls_OnGetText(HWND hwnd, int cchTextMax, LPSTR lpszText) */
+#define HANDLE_WM_GETTEXT(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)((hwnd), (int)(wParam), (LPSTR)(lParam))
+#define FORWARD_WM_GETTEXT(hwnd, cchTextMax, lpszText, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_GETTEXT, (WPARAM)(int)(cchTextMax), (LPARAM)(LPSTR)(lpszText))
+
+/* INT Cls_OnGetTextLength(HWND hwnd) */
+#define HANDLE_WM_GETTEXTLENGTH(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)(hwnd)
+#define FORWARD_WM_GETTEXTLENGTH(hwnd, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_GETTEXTLENGTH, 0, 0L)
+
+/* BOOL Cls_OnWindowPosChanging(HWND hwnd, WINDOWPOS FAR* lpwpos) */
+#define HANDLE_WM_WINDOWPOSCHANGING(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (WINDOWPOS FAR*)(lParam))
+#define FORWARD_WM_WINDOWPOSCHANGING(hwnd, lpwpos, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_WINDOWPOSCHANGING, 0, (LPARAM)(WINDOWPOS FAR*)(lpwpos))
+
+/* void Cls_OnWindowPosChanged(HWND hwnd, const WINDOWPOS FAR* lpwpos) */
+#define HANDLE_WM_WINDOWPOSCHANGED(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (const WINDOWPOS FAR*)(lParam)), 0L)
+#define FORWARD_WM_WINDOWPOSCHANGED(hwnd, lpwpos, fn) \
+ (void)(fn)((hwnd), WM_WINDOWPOSCHANGED, 0, (LPARAM)(const WINDOWPOS FAR*)(lpwpos))
+
+/* void Cls_OnMove(HWND hwnd, int x, int y) */
+#define HANDLE_WM_MOVE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)LOWORD(lParam), (int)HIWORD(lParam)), 0L)
+#define FORWARD_WM_MOVE(hwnd, x, y, fn) \
+ (void)(fn)((hwnd), WM_MOVE, 0, MAKELPARAM((int)(x), (int)(y)))
+
+/* void Cls_OnSize(HWND hwnd, UINT state, int cx, int cy) */
+#define HANDLE_WM_SIZE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (int)LOWORD(lParam), (int)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SIZE(hwnd, state, cx, cy, fn) \
+ (void)(fn)((hwnd), WM_SIZE, (WPARAM)(UINT)(state), MAKELPARAM((int)(cx), (int)(cy)))
+
+/* void Cls_OnClose(HWND hwnd) */
+#define HANDLE_WM_CLOSE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_CLOSE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_CLOSE, 0, 0L)
+
+/* BOOL Cls_OnQueryOpen(HWND hwnd) */
+#define HANDLE_WM_QUERYOPEN(hwnd, wParam, lParam, fn) \
+ MAKELRESULT((BOOL)(fn)(hwnd), 0)
+#define FORWARD_WM_QUERYOPEN(hwnd, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_QUERYOPEN, 0, 0L)
+
+/* void Cls_OnGetMinMaxInfo(HWND hwnd, MINMAXINFO FAR* lpMinMaxInfo) */
+#define HANDLE_WM_GETMINMAXINFO(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (MINMAXINFO FAR*)(lParam)), 0L)
+#define FORWARD_WM_GETMINMAXINFO(hwnd, lpMinMaxInfo, fn) \
+ (void)(fn)((hwnd), WM_GETMINMAXINFO, 0, (LPARAM)(MINMAXINFO FAR*)(lpMinMaxInfo))
+
+/* void Cls_OnPaint(HWND hwnd) */
+#define HANDLE_WM_PAINT(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_PAINT(hwnd, fn) \
+ (void)(fn)((hwnd), WM_PAINT, 0, 0L)
+
+/* BOOL Cls_OnEraseBkgnd(HWND hwnd, HDC hdc) */
+#define HANDLE_WM_ERASEBKGND(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (HDC)(wParam))
+#define FORWARD_WM_ERASEBKGND(hwnd, hdc, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_ERASEBKGND, (WPARAM)(HDC)(hdc), 0L)
+
+/* BOOL Cls_OnIconEraseBkgnd(HWND hwnd, HDC hdc) */
+#define HANDLE_WM_ICONERASEBKGND(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (HDC)(wParam))
+#define FORWARD_WM_ICONERASEBKGND(hwnd, hdc, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_ICONERASEBKGND, (WPARAM)(HDC)(hdc), 0L)
+
+/* void Cls_OnNCPaint(HWND hwnd, HRGN hrgn) */
+#define HANDLE_WM_NCPAINT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HRGN)(wParam)), 0L)
+#define FORWARD_WM_NCPAINT(hwnd, hrgn, fn) \
+ (void)(fn)((hwnd), WM_NCPAINT, (WPARAM)(HRGN)(hrgn), 0L)
+
+/* UINT Cls_OnNCCalcSize(HWND hwnd, BOOL fCalcValidRects, NCCALCSIZE_PARAMS FAR* lpcsp) */
+#define HANDLE_WM_NCCALCSIZE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)((hwnd), (BOOL)(wParam), (NCCALCSIZE_PARAMS FAR*)(lParam))
+#define FORWARD_WM_NCCALCSIZE(hwnd, fCalcValidRects, lpcsp, fn) \
+ (UINT)(DWORD)(fn)((hwnd), WM_NCCALCSIZE, (WPARAM)(fCalcValidRects), (LPARAM)(NCCALCSIZE_PARAMS FAR*)(lpcsp))
+
+/* UINT Cls_OnNCHitTest(HWND hwnd, int x, int y) */
+#define HANDLE_WM_NCHITTEST(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)((hwnd), (int)LOWORD(lParam), (int)HIWORD(lParam))
+#define FORWARD_WM_NCHITTEST(hwnd, x, y, fn) \
+ (UINT)(DWORD)(fn)((hwnd), WM_NCHITTEST, 0, MAKELPARAM((int)(x), (int)(y)))
+
+/* HICON Cls_OnQueryDragIcon(HWND hwnd) */
+#define HANDLE_WM_QUERYDRAGICON(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)(hwnd)
+#define FORWARD_WM_QUERYDRAGICON(hwnd, fn) \
+ (HICON)(UINT)(DWORD)(fn)((hwnd), WM_QUERYDRAGICON, 0, 0L)
+
+#ifdef _INC_SHELLAPI
+/* void Cls_OnDropFiles(HWND hwnd, HDROP hdrop) */
+#define HANDLE_WM_DROPFILES(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HDROP)(wParam)), 0L)
+#define FORWARD_WM_DROPFILES(hwnd, hdrop, fn) \
+ (void)(fn)((hwnd), WM_DROPFILES, (WPARAM)(hdrop), 0L)
+#endif /* _INC_SHELLAPI */
+
+/* void Cls_OnActivate(HWND hwnd, UINT state, HWND hwndActDeact, BOOL fMinimized) */
+#define HANDLE_WM_ACTIVATE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (HWND)LOWORD(lParam), (BOOL)HIWORD(lParam)), 0L)
+#define FORWARD_WM_ACTIVATE(hwnd, state, hwndActDeact, fMinimized, fn) \
+ (void)(fn)((hwnd), WM_ACTIVATE, (WPARAM)(UINT)(state), MAKELPARAM((UINT)(HWND)(hwndActDeact), (UINT)(BOOL)(fMinimized)))
+
+/* void Cls_OnActivateApp(HWND hwnd, BOOL fActivate, HTASK htaskActDeact) */
+#define HANDLE_WM_ACTIVATEAPP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam), (HTASK)LOWORD(lParam)), 0L)
+#define FORWARD_WM_ACTIVATEAPP(hwnd, fActivate, htaskActDeact, fn) \
+ (void)(fn)((hwnd), WM_ACTIVATEAPP, (WPARAM)(BOOL)(fActivate), MAKELPARAM((htaskActDeact),0))
+
+/* BOOL Cls_OnNCActivate(HWND hwnd, BOOL fActive, HWND hwndActDeact, BOOL fMinimized) */
+#define HANDLE_WM_NCACTIVATE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (BOOL)(wParam), (HWND)LOWORD(lParam), (BOOL)HIWORD(lParam))
+#define FORWARD_WM_NCACTIVATE(hwnd, fActive, hwndActDeact, fMinimized, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_NCACTIVATE, (WPARAM)(BOOL)(fActive), MAKELPARAM((UINT)(HWND)(hwndActDeact), (UINT)(BOOL)(fMinimized)))
+
+/* void Cls_OnSetFocus(HWND hwnd, HWND hwndOldFocus) */
+#define HANDLE_WM_SETFOCUS(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_SETFOCUS(hwnd, hwndOldFocus, fn) \
+ (void)(fn)((hwnd), WM_SETFOCUS, (WPARAM)(HWND)(hwndOldFocus), 0L)
+
+/* void Cls_OnKillFocus(HWND hwnd, HWND hwndNewFocus) */
+#define HANDLE_WM_KILLFOCUS(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_KILLFOCUS(hwnd, hwndNewFocus, fn) \
+ (void)(fn)((hwnd), WM_KILLFOCUS, (WPARAM)(HWND)(hwndNewFocus), 0L)
+
+/* void Cls_OnKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_KEYDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), TRUE, (int)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_KEYDOWN(hwnd, vk, cRepeat, flags, fn) \
+ (void)(fn)((hwnd), WM_KEYDOWN, (WPARAM)(UINT)(vk), MAKELPARAM((UINT)(cRepeat), (UINT)(flags)))
+
+/* void Cls_OnKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_KEYUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), FALSE, (int)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_KEYUP(hwnd, vk, cRepeat, flags, fn) \
+ (void)(fn)((hwnd), WM_KEYUP, (WPARAM)(UINT)(vk), MAKELPARAM((UINT)(cRepeat), (UINT)(flags)))
+
+/* void Cls_OnChar(HWND hwnd, UINT ch, int cRepeat) */
+#define HANDLE_WM_CHAR(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (int)LOWORD(lParam)), 0L)
+#define FORWARD_WM_CHAR(hwnd, ch, cRepeat, fn) \
+ (void)(fn)((hwnd), WM_CHAR, (WPARAM)(UINT)(ch), MAKELPARAM((UINT)(cRepeat),0))
+
+/* void Cls_OnDeadChar(HWND hwnd, UINT ch, int cRepeat) */
+#define HANDLE_WM_DEADCHAR(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (int)LOWORD(lParam)), 0L)
+#define FORWARD_WM_DEADCHAR(hwnd, ch, cRepeat, fn) \
+ (void)(fn)((hwnd), WM_DEADCHAR, (WPARAM)(UINT)(ch), MAKELPARAM((UINT)(cRepeat),0))
+
+/* void Cls_OnSysKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_SYSKEYDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), TRUE, (int)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SYSKEYDOWN(hwnd, vk, cRepeat, flags, fn) \
+ (void)(fn)((hwnd), WM_SYSKEYDOWN, (WPARAM)(UINT)(vk), MAKELPARAM((UINT)(cRepeat), (UINT)(flags)))
+
+/* void Cls_OnSysKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */
+#define HANDLE_WM_SYSKEYUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), FALSE, (int)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SYSKEYUP(hwnd, vk, cRepeat, flags, fn) \
+ (void)(fn)((hwnd), WM_SYSKEYUP, (WPARAM)(UINT)(vk), MAKELPARAM((UINT)(cRepeat), (UINT)(flags)))
+
+/* void Cls_OnSysChar(HWND hwnd, UINT ch, int cRepeat) */
+#define HANDLE_WM_SYSCHAR(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (int)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SYSCHAR(hwnd, ch, cRepeat, fn) \
+ (void)(fn)((hwnd), WM_SYSCHAR, (WPARAM)(UINT)(ch), MAKELPARAM((UINT)(cRepeat), 0))
+
+/* void Cls_OnSysDeadChar(HWND hwnd, UINT ch, int cRepeat) */
+#define HANDLE_WM_SYSDEADCHAR(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (int)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SYSDEADCHAR(hwnd, ch, cRepeat, fn) \
+ (void)(fn)((hwnd), WM_SYSDEADCHAR, (WPARAM)(UINT)(ch), MAKELPARAM((UINT)(cRepeat), 0))
+
+/* void Cls_OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_MOUSEMOVE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_MOUSEMOVE(hwnd, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), WM_MOUSEMOVE, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_LBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_LBUTTONDOWN(hwnd, fDoubleClick, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_LBUTTONDBLCLK : WM_LBUTTONDOWN, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_LBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnLButtonUp(HWND hwnd, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_LBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_LBUTTONUP(hwnd, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), WM_LBUTTONUP, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_RBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_RBUTTONDOWN(hwnd, fDoubleClick, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_RBUTTONDBLCLK : WM_RBUTTONDOWN, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_RBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnRButtonUp(HWND hwnd, int x, int y, UINT flags) */
+#define HANDLE_WM_RBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_RBUTTONUP(hwnd, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), WM_RBUTTONUP, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_MBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_MBUTTONDOWN(hwnd, fDoubleClick, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_MBUTTONDBLCLK : WM_MBUTTONDOWN, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags) */
+#define HANDLE_WM_MBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnMButtonUp(HWND hwnd, int x, int y, UINT flags) */
+#define HANDLE_WM_MBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_MBUTTONUP(hwnd, x, y, keyFlags, fn) \
+ (void)(fn)((hwnd), WM_MBUTTONUP, (WPARAM)(UINT)(keyFlags), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCMouseMove(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMOUSEMOVE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCMOUSEMOVE(hwnd, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), WM_NCMOUSEMOVE, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCLBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCLBUTTONDOWN(hwnd, fDoubleClick, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_NCLBUTTONDBLCLK : WM_NCLBUTTONDOWN, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)))
+
+/* void Cls_OnNCLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCLBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnNCLButtonUp(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCLBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCLBUTTONUP(hwnd, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), WM_NCLBUTTONUP, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* void Cls_OnNCRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCRBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCRBUTTONDOWN(hwnd, fDoubleClick, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_NCRBUTTONDBLCLK : WM_NCRBUTTONDOWN, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* void Cls_OnNCRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCRBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnNCRButtonUp(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCRBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCRBUTTONUP(hwnd, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), WM_NCRBUTTONUP, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* void Cls_OnNCMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMBUTTONDOWN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), FALSE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCMBUTTONDOWN(hwnd, fDoubleClick, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), (fDoubleClick) ? WM_NCMBUTTONDBLCLK : WM_NCMBUTTONDOWN, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* void Cls_OnNCMButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), TRUE, (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+
+/* void Cls_OnNCMButtonUp(HWND hwnd, int x, int y, UINT codeHitTest) */
+#define HANDLE_WM_NCMBUTTONUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)LOWORD(lParam), (int)HIWORD(lParam), (UINT)(wParam)), 0L)
+#define FORWARD_WM_NCMBUTTONUP(hwnd, x, y, codeHitTest, fn) \
+ (void)(fn)((hwnd), WM_NCMBUTTONUP, (WPARAM)(UINT)(codeHitTest), MAKELPARAM((x), (y)) )
+
+/* int Cls_OnMouseActivate(HWND hwnd, HWND hwndTopLevel, UINT codeHitTest, UINT msg) */
+#define HANDLE_WM_MOUSEACTIVATE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (UINT)HIWORD(lParam))
+#define FORWARD_WM_MOUSEACTIVATE(hwnd, hwndTopLevel, codeHitTest, msg, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_MOUSEACTIVATE, (WPARAM)(HWND)(hwndTopLevel), MAKELPARAM((codeHitTest), (msg)))
+
+/* void Cls_OnCancelMode(HWND hwnd) */
+#define HANDLE_WM_CANCELMODE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_CANCELMODE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_CANCELMODE, 0, 0L)
+
+/* void Cls_OnTimer(HWND hwnd, UINT id) */
+#define HANDLE_WM_TIMER(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam)), 0L)
+#define FORWARD_WM_TIMER(hwnd, id, fn) \
+ (void)(fn)((hwnd), WM_TIMER, (WPARAM)(UINT)(id), 0L)
+
+/* void Cls_OnInitMenu(HWND hwnd, HMENU hMenu) */
+#define HANDLE_WM_INITMENU(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HMENU)(wParam)), 0L)
+#define FORWARD_WM_INITMENU(hwnd, hMenu, fn) \
+ (void)(fn)((hwnd), WM_INITMENU, (WPARAM)(HMENU)(hMenu), 0L)
+
+/* void Cls_OnInitMenuPopup(HWND hwnd, HMENU hMenu, int item, BOOL fSystemMenu) */
+#define HANDLE_WM_INITMENUPOPUP(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HMENU)(wParam), (int)LOWORD(lParam), (BOOL)HIWORD(lParam)), 0L)
+#define FORWARD_WM_INITMENUPOPUP(hwnd, hMenu, item, fSystemMenu, fn) \
+ (void)(fn)((hwnd), WM_INITMENUPOPUP, (WPARAM)(HMENU)(hMenu), MAKELPARAM((item),(fSystemMenu)))
+
+/* void Cls_OnMenuSelect(HWND hwnd, HMENU hmenu, int item, HMENU hmenuPopup, UINT flags) */
+#define HANDLE_WM_MENUSELECT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HMENU)HIWORD(lParam), (LOWORD(lParam) & MF_POPUP) ? 0 : (int)(wParam), \
+ (LOWORD(lParam) & MF_POPUP) ? (HMENU)(wParam) : 0, LOWORD(lParam)), 0L)
+#define FORWARD_WM_MENUSELECT(hwnd, hmenu, item, hmenuPopup, flags, fn) \
+ (void)(fn)((hwnd), WM_MENUSELECT, ((flags) & MF_POPUP) ? (WPARAM)(HMENU)(hmenuPopup) : (WPARAM)(int)(item), MAKELPARAM((flags), (hmenu)))
+
+/* DWORD Cls_OnMenuChar(HWND hwnd, UINT ch, UINT flags, HMENU hmenu) */
+#define HANDLE_WM_MENUCHAR(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(fn)((hwnd), (UINT)(wParam), LOWORD(lParam), (HMENU)HIWORD(lParam))
+#define FORWARD_WM_MENUCHAR(hwnd, ch, flags, hmenu, fn) \
+ (DWORD)(fn)((hwnd), WM_MENUCHAR, (WPARAM)(UINT)(ch), MAKELPARAM((flags), (UINT)(hmenu)))
+
+/* void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) */
+#define HANDLE_WM_COMMAND(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(wParam), (HWND)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_COMMAND(hwnd, id, hwndCtl, codeNotify, fn) \
+ (void)(fn)((hwnd), WM_COMMAND, (WPARAM)(int)(id), MAKELPARAM((UINT)(hwndCtl), (codeNotify)))
+
+/* void Cls_OnHScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos) */
+#define HANDLE_WM_HSCROLL(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)HIWORD(lParam), (UINT)(wParam), (int)LOWORD(lParam)), 0L)
+#define FORWARD_WM_HSCROLL(hwnd, hwndCtl, code, pos, fn) \
+ (void)(fn)((hwnd), WM_HSCROLL, (WPARAM)(UINT)(code), MAKELPARAM((pos), (UINT)(hwndCtl)))
+
+/* void Cls_OnVScroll(HWND hwnd, HWND hwndCtl, UINT code, int pos) */
+#define HANDLE_WM_VSCROLL(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)HIWORD(lParam), (UINT)(wParam), (int)LOWORD(lParam)), 0L)
+#define FORWARD_WM_VSCROLL(hwnd, hwndCtl, code, pos, fn) \
+ (void)(fn)((hwnd), WM_VSCROLL, (WPARAM)(UINT)(code), MAKELPARAM((pos), (UINT)(hwndCtl)))
+
+/* void Cls_OnCut(HWND hwnd) */
+#define HANDLE_WM_CUT(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_CUT(hwnd, fn) \
+ (void)(fn)((hwnd), WM_CUT, 0, 0L)
+
+/* void Cls_OnCopy(HWND hwnd) */
+#define HANDLE_WM_COPY(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_COPY(hwnd, fn) \
+ (void)(fn)((hwnd), WM_COPY, 0, 0L)
+
+/* void Cls_OnPaste(HWND hwnd) */
+#define HANDLE_WM_PASTE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_PASTE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_PASTE, 0, 0L)
+
+/* void Cls_OnClear(HWND hwnd) */
+#define HANDLE_WM_CLEAR(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_CLEAR(hwnd, fn) \
+ (void)(fn)((hwnd), WM_CLEAR, 0, 0L)
+
+/* void Cls_OnUndo(HWND hwnd) */
+#define HANDLE_WM_UNDO(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_UNDO(hwnd, fn) \
+ (void)(fn)((hwnd), WM_UNDO, 0, 0L)
+
+/* HANDLE Cls_OnRenderFormat(HWND hwnd, UINT fmt) */
+#define HANDLE_WM_RENDERFORMAT(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HANDLE)(fn)((hwnd), (UINT)(wParam))
+#define FORWARD_WM_RENDERFORMAT(hwnd, fmt, fn) \
+ (HANDLE)(UINT)(DWORD)(fn)((hwnd), WM_RENDERFORMAT, (WPARAM)(UINT)(fmt), 0L)
+
+/* void Cls_OnRenderAllFormats(HWND hwnd) */
+#define HANDLE_WM_RENDERALLFORMATS(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_RENDERALLFORMATS(hwnd, fn) \
+ (void)(fn)((hwnd), WM_RENDERALLFORMATS, 0, 0L)
+
+/* void Cls_OnDestroyClipboard(HWND hwnd) */
+#define HANDLE_WM_DESTROYCLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_DESTROYCLIPBOARD(hwnd, fn) \
+ (void)(fn)((hwnd), WM_DESTROYCLIPBOARD, 0, 0L)
+
+/* void Cls_OnDrawClipboard(HWND hwnd) */
+#define HANDLE_WM_DRAWCLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_DRAWCLIPBOARD(hwnd, fn) \
+ (void)(fn)((hwnd), WM_DRAWCLIPBOARD, 0, 0L)
+
+/* void Cls_OnPaintClipboard(HWND hwnd, HWND hwndCBViewer, const PAINTSTRUCT FAR* lpPaintStruct) */
+#define HANDLE_WM_PAINTCLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), (const PAINTSTRUCT FAR*)GlobalLock((HGLOBAL)LOWORD(lParam))), GlobalUnlock((HGLOBAL)LOWORD(lParam)), 0L)
+#define FORWARD_WM_PAINTCLIPBOARD(hwnd, hwndCBViewer, lpPaintStruct, fn) \
+ (void)(fn)((hwnd), WM_PAINTCLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), (LPARAM)(lpPaintStruct))
+
+/* void Cls_OnSizeClipboard(HWND hwnd, HWND hwndCBViewer, const RECT FAR* lprc) */
+#define HANDLE_WM_SIZECLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), (const RECT FAR*)GlobalLock((HGLOBAL)LOWORD(lParam))), GlobalUnlock((HGLOBAL)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SIZECLIPBOARD(hwnd, hwndCBViewer, lprc, fn) \
+ (void)(fn)((hwnd), WM_SIZECLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), (LPARAM)(lprc))
+
+/* void Cls_OnVScrollClipboard(HWND hwnd, HWND hwndCBViewer, UINT code, int pos) */
+#define HANDLE_WM_VSCROLLCLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), LOWORD(lParam), (int)HIWORD(lParam)), 0L)
+#define FORWARD_WM_VSCROLLCLIPBOARD(hwnd, hwndCBViewer, code, pos, fn) \
+ (void)(fn)((hwnd), WM_VSCROLLCLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), MAKELPARAM((code), (pos)))
+
+/* void Cls_OnHScrollClipboard(HWND hwnd, HWND hwndCBViewer, UINT code, int pos) */
+#define HANDLE_WM_HSCROLLCLIPBOARD(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), LOWORD(lParam), (int)HIWORD(lParam)), 0L)
+#define FORWARD_WM_HSCROLLCLIPBOARD(hwnd, hwndCBViewer, code, pos, fn) \
+ (void)(fn)((hwnd), WM_HSCROLLCLIPBOARD, (WPARAM)(HWND)(hwndCBViewer), MAKELPARAM((code), (pos)))
+
+/* void Cls_OnAskCBFormatName(HWND hwnd, int cchMax, LPSTR rgchName) */
+#define HANDLE_WM_ASKCBFORMATNAME(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(wParam), (LPSTR)(lParam)), 0L)
+#define FORWARD_WM_ASKCBFORMATNAME(hwnd, cchMax, rgchName, fn) \
+ (void)(fn)((hwnd), WM_ASKCBFORMATNAME, (WPARAM)(int)(cchMax), (LPARAM)(rgchName))
+
+/* void Cls_OnChangeCBChain(HWND hwnd, HWND hwndRemove, HWND hwndNext) */
+#define HANDLE_WM_CHANGECBCHAIN(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), (HWND)LOWORD(lParam)), 0L)
+#define FORWARD_WM_CHANGECBCHAIN(hwnd, hwndRemove, hwndNext, fn) \
+ (void)(fn)((hwnd), WM_CHANGECBCHAIN, (WPARAM)(HWND)(hwndRemove), MAKELPARAM((UINT)(hwndNext), 0))
+
+/* BOOL Cls_OnSetCursor(HWND hwnd, HWND hwndCursor, UINT codeHitTest, UINT msg) */
+#define HANDLE_WM_SETCURSOR(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (HWND)(wParam), (UINT)LOWORD(lParam), (UINT)HIWORD(lParam))
+#define FORWARD_WM_SETCURSOR(hwnd, hwndCursor, codeHitTest, msg, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_SETCURSOR, (WPARAM)(HWND)(hwndCursor), MAKELPARAM((codeHitTest), (msg)))
+
+/* void Cls_OnSysCommand(HWND hwnd, UINT cmd, int x, int y) */
+#define HANDLE_WM_SYSCOMMAND(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (int)LOWORD(lParam), (int)HIWORD(lParam)), 0L)
+#define FORWARD_WM_SYSCOMMAND(hwnd, cmd, x, y, fn) \
+ (void)(fn)((hwnd), WM_SYSCOMMAND, (WPARAM)(UINT)(cmd), MAKELPARAM((x), (y)))
+
+/* HWND Cls_MDICreate(HWND hwnd, const MDICREATESTRUCT FAR* lpmcs) */
+#define HANDLE_WM_MDICREATE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)((hwnd), (MDICREATESTRUCT FAR*)(lParam))
+#define FORWARD_WM_MDICREATE(hwnd, lpmcs, fn) \
+ (HWND)(UINT)(DWORD)(fn)((hwnd), WM_MDICREATE, 0, (LPARAM)(lpmcs))
+
+/* void Cls_MDIDestroy(HWND hwnd, HWND hwndDestroy) */
+#define HANDLE_WM_MDIDESTROY(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIDESTROY(hwnd, hwndDestroy, fn) \
+ (void)(fn)((hwnd), WM_MDIDESTROY, (WPARAM)(hwndDestroy), 0L)
+
+/* NOTE: Usable only by MDI client windows */
+/* void Cls_MDIActivate(HWND hwnd, BOOL fActive, HWND hwndActivate, HWND hwndDeactivate) */
+#define HANDLE_WM_MDIACTIVATE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (BOOL)(wParam), (HWND)LOWORD(lParam), (HWND)HIWORD(lParam)), 0L)
+#define FORWARD_WM_MDIACTIVATE(hwnd, fActive, hwndActivate, hwndDeactivate, fn) \
+ (void)(fn)(hwnd, WM_MDIACTIVATE, (WPARAM)(fActive), MAKELPARAM((hwndActivate), (hwndDeactivate)))
+
+/* void Cls_MDIRestore(HWND hwnd, HWND hwndRestore) */
+#define HANDLE_WM_MDIRESTORE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIRESTORE(hwnd, hwndRestore, fn) \
+ (void)(fn)((hwnd), WM_MDIRESTORE, (WPARAM)(hwndRestore), 0L)
+
+/* HWND Cls_MDINext(HWND hwnd, HWND hwndCur, BOOL fPrev) */
+#define HANDLE_WM_MDINEXT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam), (BOOL)LOWORD(lParam)), 0L)
+#define FORWARD_WM_MDINEXT(hwnd, hwndCur, fPrev, fn) \
+ (HWND)(UINT)(DWORD)(fn)((hwnd), WM_MDINEXT, (WPARAM)(hwndCur), MAKELPARAM((fPrev), 0))
+
+/* void Cls_MDIMaximize(HWND hwnd, HWND hwndMaximize) */
+#define HANDLE_WM_MDIMAXIMIZE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HWND)(wParam)), 0L)
+#define FORWARD_WM_MDIMAXIMIZE(hwnd, hwndMaximize, fn) \
+ (void)(fn)((hwnd), WM_MDIMAXIMIZE, (WPARAM)(hwndMaximize), 0L)
+
+/* BOOL Cls_MDITile(HWND hwnd, UINT cmd) */
+#define HANDLE_WM_MDITILE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(fn)((hwnd), (UINT)(wParam))
+#define FORWARD_WM_MDITILE(hwnd, cmd, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_MDITILE, (WPARAM)(cmd), 0L)
+
+/* BOOL Cls_MDICascade(HWND hwnd, UINT cmd) */
+#define HANDLE_WM_MDICASCADE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(fn)((hwnd), (UINT)(wParam))
+#define FORWARD_WM_MDICASCADE(hwnd, cmd, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_MDICASCADE, (WPARAM)(cmd), 0L)
+
+/* void Cls_MDIIconArrange(HWND hwnd) */
+#define HANDLE_WM_MDIICONARRANGE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_MDIICONARRANGE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_MDIICONARRANGE, 0, 0L)
+
+/* HWND Cls_MDIGetActive(HWND hwnd) */
+#define HANDLE_WM_MDIGETACTIVE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)(hwnd)
+#define FORWARD_WM_MDIGETACTIVE(hwnd, fn) \
+ (HWND)(UINT)(DWORD)(fn)((hwnd), WM_MDIGETACTIVE, 0, 0L)
+
+/* HMENU Cls_MDISetMenu(HWND hwnd, BOOL fRefresh, HMENU hmenuFrame, HMENU hmenuWindow) */
+#define HANDLE_WM_MDISETMENU(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)((hwnd), (BOOL)(wParam), (HMENU)LOWORD(lParam), (HMENU)HIWORD(lParam))
+#define FORWARD_WM_MDISETMENU(hwnd, fRefresh, hmenuFrame, hmenuWindow, fn) \
+ (HMENU)(UINT)(DWORD)(fn)((hwnd), WM_MDISETMENU, (WPARAM)(fRefresh), MAKELPARAM((hmenuFrame), (hmenuWindow)))
+
+/* void Cls_OnChildActivate(HWND hwnd) */
+#define HANDLE_WM_CHILDACTIVATE(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_CHILDACTIVATE(hwnd, fn) \
+ (void)(fn)((hwnd), WM_CHILDACTIVATE, 0, 0L)
+
+/* BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) */
+#define HANDLE_WM_INITDIALOG(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(BOOL)(fn)((hwnd), (HWND)(wParam), lParam)
+#define FORWARD_WM_INITDIALOG(hwnd, hwndFocus, lParam, fn) \
+ (BOOL)(DWORD)(fn)((hwnd), WM_INITDIALOG, (WPARAM)(HWND)(hwndFocus), (lParam))
+
+/* HWND Cls_OnNextDlgCtl(HWND hwnd, HWND hwndSetFocus, BOOL fNext) */
+#define HANDLE_WM_NEXTDLGCTL(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HWND)(fn)((hwnd), (HWND)(wParam), (BOOL)LOWORD(lParam))
+#define FORWARD_WM_NEXTDLGCTL(hwnd, hwndSetFocus, fNext, fn) \
+ (HWND)(UINT)(DWORD)(fn)((hwnd), WM_NEXTDLGCTL, (WPARAM)(HWND)(hwndSetFocus), MAKELPARAM((fNext), 0))
+
+/* void Cls_OnParentNotify(HWND hwnd, UINT msg, HWND hwndChild, int idChild) */
+#define HANDLE_WM_PARENTNOTIFY(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (HWND)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L)
+#define FORWARD_WM_PARENTNOTIFY(hwnd, msg, hwndChild, idChild, fn) \
+ (void)(fn)((hwnd), WM_PARENTNOTIFY, (WPARAM)(UINT)(msg), MAKELPARAM((UINT)(HWND)(hwndChild), (UINT)(idChild)))
+
+/* void Cls_OnEnterIdle(HWND hwnd, UINT source, HWND hwndSource) */
+#define HANDLE_WM_ENTERIDLE(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (UINT)(wParam), (HWND)LOWORD(lParam)), 0L)
+#define FORWARD_WM_ENTERIDLE(hwnd, source, hwndSource, fn) \
+ (void)(fn)((hwnd), WM_ENTERIDLE, (WPARAM)(UINT)(source), MAKELPARAM((UINT)(HWND)(hwndSource), 0))
+
+/* UINT Cls_OnGetDlgCode(HWND hwnd, MSG FAR* lpmsg) */
+#define HANDLE_WM_GETDLGCODE(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(fn)(hwnd, (MSG FAR*)(lParam))
+#define FORWARD_WM_GETDLGCODE(hwnd, lpmsg, fn) \
+ (UINT)(DWORD)(fn)((hwnd), WM_GETDLGCODE, (SELECTOROF(lpmsg) ? lpmsg->wParam : 0), (LPARAM)(lpmsg))
+
+/* HBRUSH Cls_OnCtlColor(HWND hwnd, HDC hdc, HWND hwndChild, int type) */
+#define HANDLE_WM_CTLCOLOR(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd), (HDC)(wParam), (HWND)LOWORD(lParam), (int)(HIWORD(lParam)))
+#define FORWARD_WM_CTLCOLOR(hwnd, hdc, hwndChild, type, fn) \
+ (HBRUSH)(UINT)(DWORD)(fn)((hwnd), WM_CTLCOLOR, (WPARAM)(HDC)(hdc), MAKELPARAM((UINT)(HWND)(hwndChild), (UINT)(int)(type)))
+
+/* void Cls_OnSetFont(HWND hwndCtl, HFONT hfont, BOOL fRedraw) */
+#define HANDLE_WM_SETFONT(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (HFONT)(wParam), (BOOL)LOWORD(lParam)), 0L)
+#define FORWARD_WM_SETFONT(hwnd, hfont, fRedraw, fn) \
+ (void)(fn)((hwnd), WM_SETFONT, (WPARAM)(HFONT)(hfont), MAKELPARAM((UINT)(BOOL)(fRedraw), 0))
+
+/* HFONT Cls_OnGetFont(HWND hwnd) */
+#define HANDLE_WM_GETFONT(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(UINT)(HFONT)(fn)(hwnd)
+#define FORWARD_WM_GETFONT(hwnd, fn) \
+ (HFONT)(UINT)(DWORD)(fn)((hwnd), WM_GETFONT, 0, 0L)
+
+/* void Cls_OnDrawItem(HWND hwnd, const DRAWITEMSTRUCT FAR* lpDrawItem) */
+#define HANDLE_WM_DRAWITEM(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (const DRAWITEMSTRUCT FAR*)(lParam)), 0L)
+#define FORWARD_WM_DRAWITEM(hwnd, lpDrawItem, fn) \
+ (void)(fn)((hwnd), WM_DRAWITEM, 0, (LPARAM)(const DRAWITEMSTRUCT FAR*)(lpDrawItem))
+
+/* void Cls_OnMeasureItem(HWND hwnd, MEASUREITEMSTRUCT FAR* lpMeasureItem) */
+#define HANDLE_WM_MEASUREITEM(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (MEASUREITEMSTRUCT FAR*)(lParam)), 0L)
+#define FORWARD_WM_MEASUREITEM(hwnd, lpMeasureItem, fn) \
+ (void)(fn)((hwnd), WM_MEASUREITEM, 0, (LPARAM)(MEASUREITEMSTRUCT FAR*)(lpMeasureItem))
+
+/* void Cls_OnDeleteItem(HWND hwnd, const DELETEITEMSTRUCT FAR* lpDeleteItem) */
+#define HANDLE_WM_DELETEITEM(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (const DELETEITEMSTRUCT FAR*)(lParam)), 0L)
+#define FORWARD_WM_DELETEITEM(hwnd, lpDeleteItem, fn) \
+ (void)(fn)((hwnd), WM_DELETEITEM, 0, (LPARAM)(const DELETEITEMSTRUCT FAR*)(lpDeleteItem))
+
+/* int Cls_OnCompareItem(HWND hwnd, const COMPAREITEMSTRUCT FAR* lpCompareItem) */
+#define HANDLE_WM_COMPAREITEM(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)((hwnd), (const COMPAREITEMSTRUCT FAR*)(lParam))
+#define FORWARD_WM_COMPAREITEM(hwnd, lpCompareItem, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_COMPAREITEM, 0, (LPARAM)(const COMPAREITEMSTRUCT FAR*)(lpCompareItem))
+
+/* int Cls_OnVkeyToItem(HWND hwnd, UINT vk, HWND hwndListbox, int iCaret) */
+#define HANDLE_WM_VKEYTOITEM(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)((hwnd), (UINT)(wParam), (HWND)LOWORD(lParam), (int)HIWORD(lParam))
+#define FORWARD_WM_VKEYTOITEM(hwnd, vk, hwndListBox, iCaret, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_VKEYTOITEM, (WPARAM)(UINT)(vk), MAKELPARAM((UINT)(hwndListBox), (UINT)(iCaret)))
+
+/* int Cls_OnCharToItem(HWND hwnd, UINT ch, HWND hwndListbox, int iCaret) */
+#define HANDLE_WM_CHARTOITEM(hwnd, wParam, lParam, fn) \
+ (LRESULT)(DWORD)(int)(fn)((hwnd), (UINT)(wParam), (HWND)LOWORD(lParam), (int)HIWORD(lParam))
+#define FORWARD_WM_CHARTOITEM(hwnd, ch, hwndListBox, iCaret, fn) \
+ (int)(DWORD)(fn)((hwnd), WM_CHARTOITEM, (WPARAM)(UINT)(ch), MAKELPARAM((UINT)(hwndListBox), (UINT)(iCaret)))
+
+/* void Cls_OnQueueSync(HWND hwnd) */
+#define HANDLE_WM_QUEUESYNC(hwnd, wParam, lParam, fn) \
+ ((fn)(hwnd), 0L)
+#define FORWARD_WM_QUEUESYNC(hwnd, fn) \
+ (void)(fn)((hwnd), WM_QUEUESYNC, 0, 0L)
+
+/* void Cls_OnCommNotify(HWND hwnd, int cid, UINT flags) */
+#define HANDLE_WM_COMMNOTIFY(hwnd, wParam, lParam, fn) \
+ ((fn)((hwnd), (int)(wParam), LOWORD(lParam)), 0L)
+#define FORWARD_WM_COMMNOTIFY(hwnd, cid, flags, fn) \
+ (void)(fn)((hwnd), WM_COMMNOTIFY, (WPARAM)(cid), MAKELPARAM((flags), 0))
+
+/****** Static control message APIs ******************************************/
+
+#define Static_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
+
+#define Static_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))
+#define Static_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Static_SetText(hwndCtl, lpsz) SetWindowText((hwndCtl), (lpsz))
+
+#define Static_SetIcon(hwndCtl, hIcon) ((HICON)(UINT)(DWORD)SendMessage((hwndCtl), STM_SETICON, (WPARAM)(HICON)(hIcon), 0L))
+#define Static_GetIcon(hwndCtl, hIcon) ((HICON)(UINT)(DWORD)SendMessage((hwndCtl), STM_GETICON, 0, 0L))
+
+/****** Button control message APIs ******************************************/
+
+#define Button_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
+
+#define Button_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))
+#define Button_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Button_SetText(hwndCtl, lpsz) SetWindowText((hwndCtl), (lpsz))
+
+#define Button_GetCheck(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), BM_GETCHECK, 0, 0L))
+#define Button_SetCheck(hwndCtl, check) ((void)SendMessage((hwndCtl), BM_SETCHECK, (WPARAM)(int)(check), 0L))
+
+#define Button_GetState(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), BM_GETSTATE, 0, 0L))
+#define Button_SetState(hwndCtl, state) ((UINT)(DWORD)SendMessage((hwndCtl), BM_SETSTATE, (WPARAM)(int)(state), 0L))
+
+#define Button_SetStyle(hwndCtl, style, fRedraw) ((void)SendMessage((hwndCtl), BM_SETSTYLE, (WPARAM)LOWORD(style), MAKELPARAM(((fRedraw) ? TRUE : FALSE), 0)))
+
+/****** Edit control message APIs ********************************************/
+
+#define Edit_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
+
+#define Edit_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))
+#define Edit_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Edit_SetText(hwndCtl, lpsz) SetWindowText((hwndCtl), (lpsz))
+
+#define Edit_LimitText(hwndCtl, cchMax) ((void)SendMessage((hwndCtl), EM_LIMITTEXT, (WPARAM)(cchMax), 0L))
+
+#define Edit_GetLineCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), EM_GETLINECOUNT, 0, 0L))
+#define Edit_GetLine(hwndCtl, line, lpch, cchMax) ((*((int FAR*)(lpch)) = (cchMax)), ((int)(DWORD)SendMessage((hwndCtl), EM_GETLINE, (WPARAM)(int)(line), (LPARAM)(LPSTR)(lpch))))
+
+#define Edit_GetRect(hwndCtl, lprc) ((void)SendMessage((hwndCtl), EM_GETRECT, 0, (LPARAM)(RECT FAR*)(lprc)))
+#define Edit_SetRect(hwndCtl, lprc) ((void)SendMessage((hwndCtl), EM_SETRECT, 0, (LPARAM)(const RECT FAR*)(lprc)))
+#define Edit_SetRectNoPaint(hwndCtl, lprc) ((void)SendMessage((hwndCtl), EM_SETRECTNP, 0, (LPARAM)(const RECT FAR*)(lprc)))
+
+#define Edit_GetSel(hwndCtl) ((DWORD)SendMessage((hwndCtl), EM_GETSEL, 0, 0L))
+#define Edit_SetSel(hwndCtl, ichStart, ichEnd) ((void)SendMessage((hwndCtl), EM_SETSEL, 0, MAKELPARAM((ichStart), (ichEnd))))
+#define Edit_ReplaceSel(hwndCtl, lpszReplace) ((void)SendMessage((hwndCtl), EM_REPLACESEL, 0, (LPARAM)(LPCSTR)(lpszReplace)))
+
+#define Edit_GetModify(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_GETMODIFY, 0, 0L))
+#define Edit_SetModify(hwndCtl, fModified) ((void)SendMessage((hwndCtl), EM_SETMODIFY, (WPARAM)(UINT)(fModified), 0L))
+
+#define Edit_LineFromChar(hwndCtl, ich) ((int)(DWORD)SendMessage((hwndCtl), EM_LINEFROMCHAR, (WPARAM)(int)(ich), 0L))
+#define Edit_LineIndex(hwndCtl, line) ((int)(DWORD)SendMessage((hwndCtl), EM_LINEINDEX, (WPARAM)(int)(line), 0L))
+#define Edit_LineLength(hwndCtl, line) ((int)(DWORD)SendMessage((hwndCtl), EM_LINELENGTH, (WPARAM)(int)(line), 0L))
+
+#define Edit_Scroll(hwndCtl, dv, dh) ((void)SendMessage((hwndCtl), EM_LINESCROLL, 0, MAKELPARAM((dv), (dh))))
+
+#define Edit_CanUndo(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_CANUNDO, 0, 0L))
+#define Edit_Undo(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_UNDO, 0, 0L))
+#define Edit_EmptyUndoBuffer(hwndCtl) ((void)SendMessage((hwndCtl), EM_EMPTYUNDOBUFFER, 0, 0L))
+
+#define Edit_SetPasswordChar(hwndCtl, ch) ((void)SendMessage((hwndCtl), EM_SETPASSWORDCHAR, (WPARAM)(UINT)(ch), 0L))
+
+#define Edit_SetTabStops(hwndCtl, cTabs, lpTabs) ((void)SendMessage((hwndCtl), EM_SETTABSTOPS, (WPARAM)(int)(cTabs), (LPARAM)(const int FAR*)(lpTabs)))
+
+#define Edit_FmtLines(hwndCtl, fAddEOL) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_FMTLINES, (WPARAM)(BOOL)(fAddEOL), 0L))
+
+#define Edit_GetHandle(hwndCtl) ((HLOCAL)(UINT)(DWORD)SendMessage((hwndCtl), EM_GETHANDLE, 0, 0L))
+#define Edit_SetHandle(hwndCtl, h) ((void)SendMessage((hwndCtl), EM_SETHANDLE, (WPARAM)(UINT)(HLOCAL)(h), 0L))
+
+#if (WINVER >= 0x030a)
+#define Edit_GetFirstVisibleLine(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), EM_GETFIRSTVISIBLELINE, 0, 0L))
+
+#define Edit_SetReadOnly(hwndCtl, fReadOnly) ((BOOL)(DWORD)SendMessage((hwndCtl), EM_SETREADONLY, (WPARAM)(BOOL)(fReadOnly), 0L))
+
+#define Edit_GetPasswordChar(hwndCtl) ((char)(DWORD)SendMessage((hwndCtl), EM_GETPASSWORDCHAR, 0, 0L))
+
+#define Edit_SetWordBreakProc(hwndCtl, lpfnWordBreak) ((void)SendMessage((hwndCtl), EM_SETWORDBREAKPROC, 0, (LPARAM)(EDITWORDBREAKPROC)(lpfnWordBreak)))
+#define Edit_GetWordBreakProc(hwndCtl) ((EDITWORDBREAKPROC)SendMessage((hwndCtl), EM_GETWORDBREAKPROC, 0, 0L))
+#endif /* WINVER >= 0x030a */
+
+/****** ScrollBar control message APIs ***************************************/
+
+/* NOTE: flags parameter is a collection of ESB_* values, NOT a boolean! */
+#define ScrollBar_Enable(hwndCtl, flags) EnableScrollBar((hwndCtl), SB_CTL, (flags))
+
+#define ScrollBar_Show(hwndCtl, fShow) ShowWindow((hwndCtl), (fShow) ? SW_SHOWNORMAL : SW_HIDE)
+
+#define ScrollBar_SetPos(hwndCtl, pos, fRedraw) SetScrollPos((hwndCtl), SB_CTL, (pos), (fRedraw))
+#define ScrollBar_GetPos(hwndCtl) GetScrollPos((hwndCtl), SB_CTL)
+
+#define ScrollBar_SetRange(hwndCtl, posMin, posMax, fRedraw) SetScrollRange((hwndCtl), SB_CTL, (posMin), (posMax), (fRedraw))
+#define ScrollBar_GetRange(hwndCtl, lpposMin, lpposMax) GetScrollRange((hwndCtl), SB_CTL, (lpposMin), (lpposMax))
+
+/****** ListBox control message APIs *****************************************/
+
+#define ListBox_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
+
+#define ListBox_GetCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETCOUNT, 0, 0L))
+#define ListBox_ResetContent(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), LB_RESETCONTENT, 0, 0L))
+
+#define ListBox_AddString(hwndCtl, lpsz) ((int)(DWORD)SendMessage((hwndCtl), LB_ADDSTRING, 0, (LPARAM)(LPCSTR)(lpsz)))
+#define ListBox_InsertString(hwndCtl, index, lpsz) ((int)(DWORD)SendMessage((hwndCtl), LB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(LPCSTR)(lpsz)))
+
+#define ListBox_AddItemData(hwndCtl, data) ((int)(DWORD)SendMessage((hwndCtl), LB_ADDSTRING, 0, (LPARAM)(data)))
+#define ListBox_InsertItemData(hwndCtl, index, data) ((int)(DWORD)SendMessage((hwndCtl), LB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(data)))
+
+#define ListBox_DeleteString(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_DELETESTRING, (WPARAM)(int)(index), 0L))
+
+#define ListBox_GetTextLen(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_GETTEXTLEN, (WPARAM)(int)(index), 0L))
+#define ListBox_GetText(hwndCtl, index, lpszBuffer) ((int)(DWORD)SendMessage((hwndCtl), LB_GETTEXT, (WPARAM)(int)(index), (LPARAM)(LPCSTR)(lpszBuffer)))
+
+#define ListBox_GetItemData(hwndCtl, index) ((LRESULT)(DWORD)SendMessage((hwndCtl), LB_GETITEMDATA, (WPARAM)(int)(index), 0L))
+#define ListBox_SetItemData(hwndCtl, index, data) ((int)(DWORD)SendMessage((hwndCtl), LB_SETITEMDATA, (WPARAM)(int)(index), (LPARAM)(data)))
+
+#define ListBox_FindString(hwndCtl, indexStart, lpszFind) ((int)(DWORD)SendMessage((hwndCtl), LB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCSTR)(lpszFind)))
+#define ListBox_FindItemData(hwndCtl, indexStart, data) ((int)(DWORD)SendMessage((hwndCtl), LB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(data)))
+
+#define ListBox_SetSel(hwndCtl, fSelect, index) ((int)(DWORD)SendMessage((hwndCtl), LB_SETSEL, (WPARAM)(BOOL)(fSelect), MAKELPARAM((index), 0)))
+#define ListBox_SelItemRange(hwndCtl, fSelect, first, last) ((int)(DWORD)SendMessage((hwndCtl), LB_SELITEMRANGE, (WPARAM)(BOOL)(fSelect), MAKELPARAM((first), (last))))
+
+#define ListBox_GetCurSel(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETCURSEL, 0, 0L))
+#define ListBox_SetCurSel(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_SETCURSEL, (WPARAM)(int)(index), 0L))
+
+#define ListBox_SelectString(hwndCtl, indexStart, lpszFind) ((int)(DWORD)SendMessage((hwndCtl), LB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCSTR)(lpszFind)))
+#define ListBox_SelectItemData(hwndCtl, indexStart, data) ((int)(DWORD)SendMessage((hwndCtl), LB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(data)))
+
+#define ListBox_GetSel(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_GETSEL, (WPARAM)(int)(index), 0L))
+#define ListBox_GetSelCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETSELCOUNT, 0, 0L))
+#define ListBox_GetTopIndex(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETTOPINDEX, 0, 0L))
+#define ListBox_GetSelItems(hwndCtl, cItems, lpItems) ((int)(DWORD)SendMessage((hwndCtl), LB_GETSELITEMS, (WPARAM)(int)(cItems), (LPARAM)(int FAR*)(lpItems)))
+
+#define ListBox_SetTopIndex(hwndCtl, indexTop) ((int)(DWORD)SendMessage((hwndCtl), LB_SETTOPINDEX, (WPARAM)(int)(indexTop), 0L))
+
+#define ListBox_SetColumnWidth(hwndCtl, cxColumn) ((void)SendMessage((hwndCtl), LB_SETCOLUMNWIDTH, (WPARAM)(int)(cxColumn), 0L))
+#define ListBox_GetHorizontalExtent(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETHORIZONTALEXTENT, 0, 0L))
+#define ListBox_SetHorizontalExtent(hwndCtl, cxExtent) ((void)SendMessage((hwndCtl), LB_SETHORIZONTALEXTENT, (WPARAM)(int)(cxExtent), 0L))
+
+#define ListBox_SetTabStops(hwndCtl, cTabs, lpTabs) ((BOOL)(DWORD)SendMessage((hwndCtl), LB_SETTABSTOPS, (WPARAM)(int)(cTabs), (LPARAM)(int FAR*)(lpTabs)))
+
+#define ListBox_GetItemRect(hwndCtl, index, lprc) ((int)(DWORD)SendMessage((hwndCtl), LB_GETITEMRECT, (WPARAM)(int)(index), (LPARAM)(RECT FAR*)(lprc)))
+
+#define ListBox_SetCaretIndex(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_SETCARETINDEX, (WPARAM)(int)(index), 0L))
+#define ListBox_GetCaretIndex(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETCARETINDEX, 0, 0L))
+
+#define ListBox_SetAnchorIndex(hwndCtl, index) ((void)SendMessage((hwndCtl), LB_SETANCHORINDEX, (WPARAM)(int)(index), 0L)) /* ;Internal */
+#define ListBox_GetAnchorIndex(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), LB_GETANCHORINDEX, 0, 0L)) /* ;Internal */
+
+#if (WINVER >= 0x030a)
+#define ListBox_FindStringExact(hwndCtl, indexStart, lpszFind) ((int)(DWORD)SendMessage((hwndCtl), LB_FINDSTRINGEXACT, (WPARAM)(int)(indexStart), (LPARAM)(LPCSTR)(lpszFind)))
+
+#define ListBox_SetItemHeight(hwndCtl, index, cy) ((int)(DWORD)SendMessage((hwndCtl), LB_SETITEMHEIGHT, (WPARAM)(int)(index), MAKELPARAM((cy), 0)))
+#define ListBox_GetItemHeight(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), LB_GETITEMHEIGHT, (WPARAM)(int)(index), 0L))
+#endif /* WINVER >= 0x030a */
+
+#define ListBox_Dir(hwndCtl, attrs, lpszFileSpec) ((int)(DWORD)SendMessage((hwndCtl), LB_DIR, (WPARAM)(UINT)(attrs), (LPARAM)(LPCSTR)(lpszFileSpec)))
+#define ListBox_AddFile(hwndCtl, lpszFilename) ((int)(DWORD)SendMessage((hwndCtl), LB_ADDFILE, 0, (LPARAM)(LPCSTR)(lpszFilename))) /* ;Internal */
+
+/****** ComboBox control message APIs ****************************************/
+
+#define ComboBox_Enable(hwndCtl, fEnable) EnableWindow((hwndCtl), (fEnable))
+
+#define ComboBox_GetText(hwndCtl, lpch, cchMax) GetWindowText((hwndCtl), (lpch), (cchMax))
+#define ComboBox_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define ComboBox_SetText(hwndCtl, lpsz) SetWindowText((hwndCtl), (lpsz))
+
+#define ComboBox_LimitText(hwndCtl, cchLimit) ((int)(DWORD)SendMessage((hwndCtl), CB_LIMITTEXT, (WPARAM)(int)(cchLimit), 0L))
+
+#define ComboBox_GetEditSel(hwndCtl) ((DWORD)SendMessage((hwndCtl), CB_GETEDITSEL, 0, 0L))
+#define ComboBox_SetEditSel(hwndCtl, ichStart, ichEnd) ((int)(DWORD)SendMessage((hwndCtl), CB_SETEDITSEL, 0, MAKELPARAM((ichStart), (ichEnd))))
+
+#define ComboBox_GetCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), CB_GETCOUNT, 0, 0L))
+#define ComboBox_ResetContent(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), CB_RESETCONTENT, 0, 0L))
+
+#define ComboBox_AddString(hwndCtl, lpsz) ((int)(DWORD)SendMessage((hwndCtl), CB_ADDSTRING, 0, (LPARAM)(LPCSTR)(lpsz)))
+#define ComboBox_InsertString(hwndCtl, index, lpsz) ((int)(DWORD)SendMessage((hwndCtl), CB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(LPCSTR)(lpsz)))
+
+#define ComboBox_AddItemData(hwndCtl, data) ((int)(DWORD)SendMessage((hwndCtl), CB_ADDSTRING, 0, (LPARAM)(data)))
+#define ComboBox_InsertItemData(hwndCtl, index, data) ((int)(DWORD)SendMessage((hwndCtl), CB_INSERTSTRING, (WPARAM)(int)(index), (LPARAM)(data)))
+
+#define ComboBox_DeleteString(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), CB_DELETESTRING, (WPARAM)(int)(index), 0L))
+
+#define ComboBox_GetLBTextLen(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), CB_GETLBTEXTLEN, (WPARAM)(int)(index), 0L))
+#define ComboBox_GetLBText(hwndCtl, index, lpszBuffer) ((int)(DWORD)SendMessage((hwndCtl), CB_GETLBTEXT, (WPARAM)(int)(index), (LPARAM)(LPCSTR)(lpszBuffer)))
+
+#define ComboBox_GetItemData(hwndCtl, index) ((LRESULT)(DWORD)SendMessage((hwndCtl), CB_GETITEMDATA, (WPARAM)(int)(index), 0L))
+#define ComboBox_SetItemData(hwndCtl, index, data) ((int)(DWORD)SendMessage((hwndCtl), CB_SETITEMDATA, (WPARAM)(int)(index), (LPARAM)(data)))
+
+#define ComboBox_FindString(hwndCtl, indexStart, lpszFind) ((int)(DWORD)SendMessage((hwndCtl), CB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCSTR)(lpszFind)))
+#define ComboBox_FindItemData(hwndCtl, indexStart, data) ((int)(DWORD)SendMessage((hwndCtl), CB_FINDSTRING, (WPARAM)(int)(indexStart), (LPARAM)(data)))
+
+#define ComboBox_GetCurSel(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), CB_GETCURSEL, 0, 0L))
+#define ComboBox_SetCurSel(hwndCtl, index) ((int)(DWORD)SendMessage((hwndCtl), CB_SETCURSEL, (WPARAM)(int)(index), 0L))
+
+#define ComboBox_SelectString(hwndCtl, indexStart, lpszSelect) ((int)(DWORD)SendMessage((hwndCtl), CB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(LPCSTR)(lpszSelect)))
+#define ComboBox_SelectItemData(hwndCtl, indexStart, data) ((int)(DWORD)SendMessage((hwndCtl), CB_SELECTSTRING, (WPARAM)(int)(indexStart), (LPARAM)(data)))
+
+#define ComboBox_Dir(hwndCtl, attrs, lpszFileSpec) ((int)(DWORD)SendMessage((hwndCtl), CB_DIR, (WPARAM)(UINT)(attrs), (LPARAM)(LPCSTR)(lpszFileSpec)))
+
+#define ComboBox_ShowDropdown(hwndCtl, fShow) ((BOOL)(DWORD)SendMessage((hwndCtl), CB_SHOWDROPDOWN, (WPARAM)(BOOL)(fShow), 0L))
+
+#if (WINVER >= 0x030a)
+#define ComboBox_FindStringExact(hwndCtl, indexStart, lpszFind) ((int)(DWORD)SendMessage((hwndCtl), CB_FINDSTRINGEXACT, (WPARAM)(int)(indexStart), (LPARAM)(LPCSTR)(lpszFind)))
+
+#define ComboBox_GetDroppedState(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl), CB_GETDROPPEDSTATE, 0, 0L))
+#define ComboBox_GetDroppedControlRect(hwndCtl, lprc) ((void)SendMessage((hwndCtl), CB_GETDROPPEDCONTROLRECT, 0, (LPARAM)(RECT FAR*)(lprc)))
+
+#define ComboBox_GetItemHeight(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl), CB_GETITEMHEIGHT, 0, 0L))
+#define ComboBox_SetItemHeight(hwndCtl, cyItem) ((int)(DWORD)SendMessage((hwndCtl), CB_SETITEMHEIGHT, (WPARAM)(int)(index), 0L))
+
+#define ComboBox_GetExtendedUI(hwndCtl) ((UINT)(DWORD)SendMessage((hwndCtl), CB_GETEXTENDEDUI, 0, 0L))
+#define ComboBox_SetExtendedUI(hwndCtl, flags) ((int)(DWORD)SendMessage((hwndCtl), CB_SETEXTENDEDUI, (WPARAM)(UINT)(flags), 0L))
+#endif /* WINVER >= 0x030a */
+
+/****** Alternate porting layer macros ****************************************/
+
+/* USER MESSAGES: */
+
+#define GET_WPARAM(wp, lp) (wp)
+#define GET_LPARAM(wp, lp) (lp)
+
+#define GET_WM_ACTIVATE_STATE(wp, lp) (wp)
+#define GET_WM_ACTIVATE_FMINIMIZED(wp, lp) (BOOL)HIWORD(lp)
+#define GET_WM_ACTIVATE_HWND(wp, lp) (HWND)LOWORD(lp)
+#define GET_WM_ACTIVATE_MPS(s, fmin, hwnd) \
+ (WPARAM)(s), MAKELONG(hwnd, fmin)
+
+#define GET_WM_CHARTOITEM_CHAR(wp, lp) (CHAR)(wp)
+#define GET_WM_CHARTOITEM_POS(wp, lp) HIWORD(lp)
+#define GET_WM_CHARTOITEM_HWND(wp, lp) (HWND)LOWORD(lp)
+#define GET_WM_CHARTOITEM_MPS(ch, pos, hwnd) \
+ (WPARAM)(ch), MAKELONG(hwnd, pos)
+
+#define GET_WM_COMMAND_ID(wp, lp) (wp)
+#define GET_WM_COMMAND_HWND(wp, lp) (HWND)LOWORD(lp)
+#define GET_WM_COMMAND_CMD(wp, lp) HIWORD(lp)
+#define GET_WM_COMMAND_MPS(id, hwnd, cmd) \
+ (WPARAM)(id), MAKELONG(hwnd, cmd)
+
+#define WM_CTLCOLORMSGBOX 0x0132
+#define WM_CTLCOLOREDIT 0x0133
+#define WM_CTLCOLORLISTBOX 0x0134
+#define WM_CTLCOLORBTN 0x0135
+#define WM_CTLCOLORDLG 0x0136
+#define WM_CTLCOLORSCROLLBAR 0x0137
+#define WM_CTLCOLORSTATIC 0x0138
+
+#define GET_WM_CTLCOLOR_HDC(wp, lp, msg) (HDC)(wp)
+#define GET_WM_CTLCOLOR_HWND(wp, lp, msg) (HWND)LOWORD(lp)
+#define GET_WM_CTLCOLOR_TYPE(wp, lp, msg) HIWORD(lp)
+#define GET_WM_CTLCOLOR_MPS(hdc, hwnd, type) \
+ (WPARAM)(hdc), MAKELONG(hwnd, type)
+
+
+#define GET_WM_MENUSELECT_CMD(wp, lp) (wp)
+#define GET_WM_MENUSELECT_FLAGS(wp, lp) LOWORD(lp)
+#define GET_WM_MENUSELECT_HMENU(wp, lp) (HMENU)HIWORD(lp)
+#define GET_WM_MENUSELECT_MPS(cmd, f, hmenu) \
+ (WPARAM)(cmd), MAKELONG(f, hmenu)
+
+// Note: the following are for interpreting MDIclient to MDI child messages.
+#define GET_WM_MDIACTIVATE_FACTIVATE(hwnd, wp, lp) (BOOL)(wp)
+#define GET_WM_MDIACTIVATE_HWNDDEACT(wp, lp) (HWND)HIWORD(lp)
+#define GET_WM_MDIACTIVATE_HWNDACTIVATE(wp, lp) (HWND)LOWORD(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) 0, MAKELONG(hmenuF, hmenuW)
+
+#define GET_WM_MENUCHAR_CHAR(wp, lp) (CHAR)(wp)
+#define GET_WM_MENUCHAR_HMENU(wp, lp) (HMENU)LOWORD(lp)
+#define GET_WM_MENUCHAR_FMENU(wp, lp) (BOOL)HIWORD(lp)
+#define GET_WM_MENUCHAR_MPS(ch, hmenu, f) \
+ (WPARAM)(ch), MAKELONG(hmenu, f)
+
+#define GET_WM_PARENTNOTIFY_MSG(wp, lp) (wp)
+#define GET_WM_PARENTNOTIFY_ID(wp, lp) HIWORD(lp)
+#define GET_WM_PARENTNOTIFY_HWNDCHILD(wp, lp) (HWND)LOWORD(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)(msg), MAKELONG(hwnd, id)
+#define GET_WM_PARENTNOTIFY2_MPS(msg, x, y) \
+ (WPARAM)(msg), MAKELONG(x, y)
+
+#define GET_WM_VKEYTOITEM_CODE(wp, lp) (wp)
+#define GET_WM_VKEYTOITEM_ITEM(wp, lp) (INT)HIWORD(lp)
+#define GET_WM_VKEYTOITEM_HWND(wp, lp) (HWND)LOWORD(lp)
+#define GET_WM_VKEYTOITEM_MPS(code, item, hwnd) \
+ (WPARAM)(code), MAKELONG(hwnd, item)
+
+#define GET_EM_SETSEL_START(wp, lp) LOWORD(lp)
+#define GET_EM_SETSEL_END(wp, lp) HIWORD(lp)
+#define GET_EM_SETSEL_MPS(iStart, iEnd) \
+ 0, MAKELONG(iStart, iEnd)
+
+#define GET_EM_LINESCROLL_MPS(vert, horz) \
+ 0, MAKELONG(vert, horz)
+
+#define GET_WM_CHANGECBCHAIN_HWNDNEXT(wp, lp) (HWND)LOWORD(lp)
+
+#define GET_WM_HSCROLL_CODE(wp, lp) (wp)
+#define GET_WM_HSCROLL_POS(wp, lp) LOWORD(lp)
+#define GET_WM_HSCROLL_HWND(wp, lp) (HWND)HIWORD(lp)
+#define GET_WM_HSCROLL_MPS(code, pos, hwnd) \
+ (WPARAM)(code), MAKELONG(pos, hwnd)
+
+#define GET_WM_VSCROLL_CODE(wp, lp) (wp)
+#define GET_WM_VSCROLL_POS(wp, lp) LOWORD(lp)
+#define GET_WM_VSCROLL_HWND(wp, lp) (HWND)HIWORD(lp)
+#define GET_WM_VSCROLL_MPS(code, pos, hwnd) \
+ (WPARAM)(code), MAKELONG(pos, hwnd)
+
+#include "poppack.h" /* Revert to default packing */
+
+#ifdef __cplusplus
+} /* End of extern "C" { */
+#endif /* __cplusplus */
+
+#endif /* !_INC_WINDOWSX */
diff --git a/public/sdk/inc/winerror.dbg b/public/sdk/inc/winerror.dbg
new file mode 100644
index 000000000..bcde37185
--- /dev/null
+++ b/public/sdk/inc/winerror.dbg
@@ -0,0 +1,1077 @@
+//
+// This file maps message Id values in to a text string that contains
+// the symbolic name used for the message Id. Useful for debugging
+// output.
+//
+
+struct {
+ DWORD MessageId;
+ char *SymbolicName;
+} winerrorSymbolicNames[] = {
+ (DWORD) ERROR_SUCCESS, "ERROR_SUCCESS",
+ (DWORD) ERROR_INVALID_FUNCTION, "ERROR_INVALID_FUNCTION",
+ (DWORD) ERROR_FILE_NOT_FOUND, "ERROR_FILE_NOT_FOUND",
+ (DWORD) ERROR_PATH_NOT_FOUND, "ERROR_PATH_NOT_FOUND",
+ (DWORD) ERROR_TOO_MANY_OPEN_FILES, "ERROR_TOO_MANY_OPEN_FILES",
+ (DWORD) ERROR_ACCESS_DENIED, "ERROR_ACCESS_DENIED",
+ (DWORD) ERROR_INVALID_HANDLE, "ERROR_INVALID_HANDLE",
+ (DWORD) ERROR_ARENA_TRASHED, "ERROR_ARENA_TRASHED",
+ (DWORD) ERROR_NOT_ENOUGH_MEMORY, "ERROR_NOT_ENOUGH_MEMORY",
+ (DWORD) ERROR_INVALID_BLOCK, "ERROR_INVALID_BLOCK",
+ (DWORD) ERROR_BAD_ENVIRONMENT, "ERROR_BAD_ENVIRONMENT",
+ (DWORD) ERROR_BAD_FORMAT, "ERROR_BAD_FORMAT",
+ (DWORD) ERROR_INVALID_ACCESS, "ERROR_INVALID_ACCESS",
+ (DWORD) ERROR_INVALID_DATA, "ERROR_INVALID_DATA",
+ (DWORD) ERROR_OUTOFMEMORY, "ERROR_OUTOFMEMORY",
+ (DWORD) ERROR_INVALID_DRIVE, "ERROR_INVALID_DRIVE",
+ (DWORD) ERROR_CURRENT_DIRECTORY, "ERROR_CURRENT_DIRECTORY",
+ (DWORD) ERROR_NOT_SAME_DEVICE, "ERROR_NOT_SAME_DEVICE",
+ (DWORD) ERROR_NO_MORE_FILES, "ERROR_NO_MORE_FILES",
+ (DWORD) ERROR_WRITE_PROTECT, "ERROR_WRITE_PROTECT",
+ (DWORD) ERROR_BAD_UNIT, "ERROR_BAD_UNIT",
+ (DWORD) ERROR_NOT_READY, "ERROR_NOT_READY",
+ (DWORD) ERROR_BAD_COMMAND, "ERROR_BAD_COMMAND",
+ (DWORD) ERROR_CRC, "ERROR_CRC",
+ (DWORD) ERROR_BAD_LENGTH, "ERROR_BAD_LENGTH",
+ (DWORD) ERROR_SEEK, "ERROR_SEEK",
+ (DWORD) ERROR_NOT_DOS_DISK, "ERROR_NOT_DOS_DISK",
+ (DWORD) ERROR_SECTOR_NOT_FOUND, "ERROR_SECTOR_NOT_FOUND",
+ (DWORD) ERROR_OUT_OF_PAPER, "ERROR_OUT_OF_PAPER",
+ (DWORD) ERROR_WRITE_FAULT, "ERROR_WRITE_FAULT",
+ (DWORD) ERROR_READ_FAULT, "ERROR_READ_FAULT",
+ (DWORD) ERROR_GEN_FAILURE, "ERROR_GEN_FAILURE",
+ (DWORD) ERROR_SHARING_VIOLATION, "ERROR_SHARING_VIOLATION",
+ (DWORD) ERROR_LOCK_VIOLATION, "ERROR_LOCK_VIOLATION",
+ (DWORD) ERROR_WRONG_DISK, "ERROR_WRONG_DISK",
+ (DWORD) ERROR_SHARING_BUFFER_EXCEEDED, "ERROR_SHARING_BUFFER_EXCEEDED",
+ (DWORD) ERROR_HANDLE_EOF, "ERROR_HANDLE_EOF",
+ (DWORD) ERROR_HANDLE_DISK_FULL, "ERROR_HANDLE_DISK_FULL",
+ (DWORD) ERROR_NOT_SUPPORTED, "ERROR_NOT_SUPPORTED",
+ (DWORD) ERROR_REM_NOT_LIST, "ERROR_REM_NOT_LIST",
+ (DWORD) ERROR_DUP_NAME, "ERROR_DUP_NAME",
+ (DWORD) ERROR_BAD_NETPATH, "ERROR_BAD_NETPATH",
+ (DWORD) ERROR_NETWORK_BUSY, "ERROR_NETWORK_BUSY",
+ (DWORD) ERROR_DEV_NOT_EXIST, "ERROR_DEV_NOT_EXIST",
+ (DWORD) ERROR_TOO_MANY_CMDS, "ERROR_TOO_MANY_CMDS",
+ (DWORD) ERROR_ADAP_HDW_ERR, "ERROR_ADAP_HDW_ERR",
+ (DWORD) ERROR_BAD_NET_RESP, "ERROR_BAD_NET_RESP",
+ (DWORD) ERROR_UNEXP_NET_ERR, "ERROR_UNEXP_NET_ERR",
+ (DWORD) ERROR_BAD_REM_ADAP, "ERROR_BAD_REM_ADAP",
+ (DWORD) ERROR_PRINTQ_FULL, "ERROR_PRINTQ_FULL",
+ (DWORD) ERROR_NO_SPOOL_SPACE, "ERROR_NO_SPOOL_SPACE",
+ (DWORD) ERROR_PRINT_CANCELLED, "ERROR_PRINT_CANCELLED",
+ (DWORD) ERROR_NETNAME_DELETED, "ERROR_NETNAME_DELETED",
+ (DWORD) ERROR_NETWORK_ACCESS_DENIED, "ERROR_NETWORK_ACCESS_DENIED",
+ (DWORD) ERROR_BAD_DEV_TYPE, "ERROR_BAD_DEV_TYPE",
+ (DWORD) ERROR_BAD_NET_NAME, "ERROR_BAD_NET_NAME",
+ (DWORD) ERROR_TOO_MANY_NAMES, "ERROR_TOO_MANY_NAMES",
+ (DWORD) ERROR_TOO_MANY_SESS, "ERROR_TOO_MANY_SESS",
+ (DWORD) ERROR_SHARING_PAUSED, "ERROR_SHARING_PAUSED",
+ (DWORD) ERROR_REQ_NOT_ACCEP, "ERROR_REQ_NOT_ACCEP",
+ (DWORD) ERROR_REDIR_PAUSED, "ERROR_REDIR_PAUSED",
+ (DWORD) ERROR_FILE_EXISTS, "ERROR_FILE_EXISTS",
+ (DWORD) ERROR_CANNOT_MAKE, "ERROR_CANNOT_MAKE",
+ (DWORD) ERROR_FAIL_I24, "ERROR_FAIL_I24",
+ (DWORD) ERROR_OUT_OF_STRUCTURES, "ERROR_OUT_OF_STRUCTURES",
+ (DWORD) ERROR_ALREADY_ASSIGNED, "ERROR_ALREADY_ASSIGNED",
+ (DWORD) ERROR_INVALID_PASSWORD, "ERROR_INVALID_PASSWORD",
+ (DWORD) ERROR_INVALID_PARAMETER, "ERROR_INVALID_PARAMETER",
+ (DWORD) ERROR_NET_WRITE_FAULT, "ERROR_NET_WRITE_FAULT",
+ (DWORD) ERROR_NO_PROC_SLOTS, "ERROR_NO_PROC_SLOTS",
+ (DWORD) ERROR_TOO_MANY_SEMAPHORES, "ERROR_TOO_MANY_SEMAPHORES",
+ (DWORD) ERROR_EXCL_SEM_ALREADY_OWNED, "ERROR_EXCL_SEM_ALREADY_OWNED",
+ (DWORD) ERROR_SEM_IS_SET, "ERROR_SEM_IS_SET",
+ (DWORD) ERROR_TOO_MANY_SEM_REQUESTS, "ERROR_TOO_MANY_SEM_REQUESTS",
+ (DWORD) ERROR_INVALID_AT_INTERRUPT_TIME, "ERROR_INVALID_AT_INTERRUPT_TIME",
+ (DWORD) ERROR_SEM_OWNER_DIED, "ERROR_SEM_OWNER_DIED",
+ (DWORD) ERROR_SEM_USER_LIMIT, "ERROR_SEM_USER_LIMIT",
+ (DWORD) ERROR_DISK_CHANGE, "ERROR_DISK_CHANGE",
+ (DWORD) ERROR_DRIVE_LOCKED, "ERROR_DRIVE_LOCKED",
+ (DWORD) ERROR_BROKEN_PIPE, "ERROR_BROKEN_PIPE",
+ (DWORD) ERROR_OPEN_FAILED, "ERROR_OPEN_FAILED",
+ (DWORD) ERROR_BUFFER_OVERFLOW, "ERROR_BUFFER_OVERFLOW",
+ (DWORD) ERROR_DISK_FULL, "ERROR_DISK_FULL",
+ (DWORD) ERROR_NO_MORE_SEARCH_HANDLES, "ERROR_NO_MORE_SEARCH_HANDLES",
+ (DWORD) ERROR_INVALID_TARGET_HANDLE, "ERROR_INVALID_TARGET_HANDLE",
+ (DWORD) ERROR_INVALID_CATEGORY, "ERROR_INVALID_CATEGORY",
+ (DWORD) ERROR_INVALID_VERIFY_SWITCH, "ERROR_INVALID_VERIFY_SWITCH",
+ (DWORD) ERROR_BAD_DRIVER_LEVEL, "ERROR_BAD_DRIVER_LEVEL",
+ (DWORD) ERROR_CALL_NOT_IMPLEMENTED, "ERROR_CALL_NOT_IMPLEMENTED",
+ (DWORD) ERROR_SEM_TIMEOUT, "ERROR_SEM_TIMEOUT",
+ (DWORD) ERROR_INSUFFICIENT_BUFFER, "ERROR_INSUFFICIENT_BUFFER",
+ (DWORD) ERROR_INVALID_NAME, "ERROR_INVALID_NAME",
+ (DWORD) ERROR_INVALID_LEVEL, "ERROR_INVALID_LEVEL",
+ (DWORD) ERROR_NO_VOLUME_LABEL, "ERROR_NO_VOLUME_LABEL",
+ (DWORD) ERROR_MOD_NOT_FOUND, "ERROR_MOD_NOT_FOUND",
+ (DWORD) ERROR_PROC_NOT_FOUND, "ERROR_PROC_NOT_FOUND",
+ (DWORD) ERROR_WAIT_NO_CHILDREN, "ERROR_WAIT_NO_CHILDREN",
+ (DWORD) ERROR_CHILD_NOT_COMPLETE, "ERROR_CHILD_NOT_COMPLETE",
+ (DWORD) ERROR_DIRECT_ACCESS_HANDLE, "ERROR_DIRECT_ACCESS_HANDLE",
+ (DWORD) ERROR_NEGATIVE_SEEK, "ERROR_NEGATIVE_SEEK",
+ (DWORD) ERROR_SEEK_ON_DEVICE, "ERROR_SEEK_ON_DEVICE",
+ (DWORD) ERROR_IS_JOIN_TARGET, "ERROR_IS_JOIN_TARGET",
+ (DWORD) ERROR_IS_JOINED, "ERROR_IS_JOINED",
+ (DWORD) ERROR_IS_SUBSTED, "ERROR_IS_SUBSTED",
+ (DWORD) ERROR_NOT_JOINED, "ERROR_NOT_JOINED",
+ (DWORD) ERROR_NOT_SUBSTED, "ERROR_NOT_SUBSTED",
+ (DWORD) ERROR_JOIN_TO_JOIN, "ERROR_JOIN_TO_JOIN",
+ (DWORD) ERROR_SUBST_TO_SUBST, "ERROR_SUBST_TO_SUBST",
+ (DWORD) ERROR_JOIN_TO_SUBST, "ERROR_JOIN_TO_SUBST",
+ (DWORD) ERROR_SUBST_TO_JOIN, "ERROR_SUBST_TO_JOIN",
+ (DWORD) ERROR_BUSY_DRIVE, "ERROR_BUSY_DRIVE",
+ (DWORD) ERROR_SAME_DRIVE, "ERROR_SAME_DRIVE",
+ (DWORD) ERROR_DIR_NOT_ROOT, "ERROR_DIR_NOT_ROOT",
+ (DWORD) ERROR_DIR_NOT_EMPTY, "ERROR_DIR_NOT_EMPTY",
+ (DWORD) ERROR_IS_SUBST_PATH, "ERROR_IS_SUBST_PATH",
+ (DWORD) ERROR_IS_JOIN_PATH, "ERROR_IS_JOIN_PATH",
+ (DWORD) ERROR_PATH_BUSY, "ERROR_PATH_BUSY",
+ (DWORD) ERROR_IS_SUBST_TARGET, "ERROR_IS_SUBST_TARGET",
+ (DWORD) ERROR_SYSTEM_TRACE, "ERROR_SYSTEM_TRACE",
+ (DWORD) ERROR_INVALID_EVENT_COUNT, "ERROR_INVALID_EVENT_COUNT",
+ (DWORD) ERROR_TOO_MANY_MUXWAITERS, "ERROR_TOO_MANY_MUXWAITERS",
+ (DWORD) ERROR_INVALID_LIST_FORMAT, "ERROR_INVALID_LIST_FORMAT",
+ (DWORD) ERROR_LABEL_TOO_LONG, "ERROR_LABEL_TOO_LONG",
+ (DWORD) ERROR_TOO_MANY_TCBS, "ERROR_TOO_MANY_TCBS",
+ (DWORD) ERROR_SIGNAL_REFUSED, "ERROR_SIGNAL_REFUSED",
+ (DWORD) ERROR_DISCARDED, "ERROR_DISCARDED",
+ (DWORD) ERROR_NOT_LOCKED, "ERROR_NOT_LOCKED",
+ (DWORD) ERROR_BAD_THREADID_ADDR, "ERROR_BAD_THREADID_ADDR",
+ (DWORD) ERROR_BAD_ARGUMENTS, "ERROR_BAD_ARGUMENTS",
+ (DWORD) ERROR_BAD_PATHNAME, "ERROR_BAD_PATHNAME",
+ (DWORD) ERROR_SIGNAL_PENDING, "ERROR_SIGNAL_PENDING",
+ (DWORD) ERROR_MAX_THRDS_REACHED, "ERROR_MAX_THRDS_REACHED",
+ (DWORD) ERROR_LOCK_FAILED, "ERROR_LOCK_FAILED",
+ (DWORD) ERROR_BUSY, "ERROR_BUSY",
+ (DWORD) ERROR_CANCEL_VIOLATION, "ERROR_CANCEL_VIOLATION",
+ (DWORD) ERROR_ATOMIC_LOCKS_NOT_SUPPORTED, "ERROR_ATOMIC_LOCKS_NOT_SUPPORTED",
+ (DWORD) ERROR_INVALID_SEGMENT_NUMBER, "ERROR_INVALID_SEGMENT_NUMBER",
+ (DWORD) ERROR_INVALID_ORDINAL, "ERROR_INVALID_ORDINAL",
+ (DWORD) ERROR_ALREADY_EXISTS, "ERROR_ALREADY_EXISTS",
+ (DWORD) ERROR_INVALID_FLAG_NUMBER, "ERROR_INVALID_FLAG_NUMBER",
+ (DWORD) ERROR_SEM_NOT_FOUND, "ERROR_SEM_NOT_FOUND",
+ (DWORD) ERROR_INVALID_STARTING_CODESEG, "ERROR_INVALID_STARTING_CODESEG",
+ (DWORD) ERROR_INVALID_STACKSEG, "ERROR_INVALID_STACKSEG",
+ (DWORD) ERROR_INVALID_MODULETYPE, "ERROR_INVALID_MODULETYPE",
+ (DWORD) ERROR_INVALID_EXE_SIGNATURE, "ERROR_INVALID_EXE_SIGNATURE",
+ (DWORD) ERROR_EXE_MARKED_INVALID, "ERROR_EXE_MARKED_INVALID",
+ (DWORD) ERROR_BAD_EXE_FORMAT, "ERROR_BAD_EXE_FORMAT",
+ (DWORD) ERROR_ITERATED_DATA_EXCEEDS_64k, "ERROR_ITERATED_DATA_EXCEEDS_64k",
+ (DWORD) ERROR_INVALID_MINALLOCSIZE, "ERROR_INVALID_MINALLOCSIZE",
+ (DWORD) ERROR_DYNLINK_FROM_INVALID_RING, "ERROR_DYNLINK_FROM_INVALID_RING",
+ (DWORD) ERROR_IOPL_NOT_ENABLED, "ERROR_IOPL_NOT_ENABLED",
+ (DWORD) ERROR_INVALID_SEGDPL, "ERROR_INVALID_SEGDPL",
+ (DWORD) ERROR_AUTODATASEG_EXCEEDS_64k, "ERROR_AUTODATASEG_EXCEEDS_64k",
+ (DWORD) ERROR_RING2SEG_MUST_BE_MOVABLE, "ERROR_RING2SEG_MUST_BE_MOVABLE",
+ (DWORD) ERROR_RELOC_CHAIN_XEEDS_SEGLIM, "ERROR_RELOC_CHAIN_XEEDS_SEGLIM",
+ (DWORD) ERROR_INFLOOP_IN_RELOC_CHAIN, "ERROR_INFLOOP_IN_RELOC_CHAIN",
+ (DWORD) ERROR_ENVVAR_NOT_FOUND, "ERROR_ENVVAR_NOT_FOUND",
+ (DWORD) ERROR_NO_SIGNAL_SENT, "ERROR_NO_SIGNAL_SENT",
+ (DWORD) ERROR_FILENAME_EXCED_RANGE, "ERROR_FILENAME_EXCED_RANGE",
+ (DWORD) ERROR_RING2_STACK_IN_USE, "ERROR_RING2_STACK_IN_USE",
+ (DWORD) ERROR_META_EXPANSION_TOO_LONG, "ERROR_META_EXPANSION_TOO_LONG",
+ (DWORD) ERROR_INVALID_SIGNAL_NUMBER, "ERROR_INVALID_SIGNAL_NUMBER",
+ (DWORD) ERROR_THREAD_1_INACTIVE, "ERROR_THREAD_1_INACTIVE",
+ (DWORD) ERROR_LOCKED, "ERROR_LOCKED",
+ (DWORD) ERROR_TOO_MANY_MODULES, "ERROR_TOO_MANY_MODULES",
+ (DWORD) ERROR_NESTING_NOT_ALLOWED, "ERROR_NESTING_NOT_ALLOWED",
+ (DWORD) ERROR_EXE_MACHINE_TYPE_MISMATCH, "ERROR_EXE_MACHINE_TYPE_MISMATCH",
+ (DWORD) ERROR_BAD_PIPE, "ERROR_BAD_PIPE",
+ (DWORD) ERROR_PIPE_BUSY, "ERROR_PIPE_BUSY",
+ (DWORD) ERROR_NO_DATA, "ERROR_NO_DATA",
+ (DWORD) ERROR_PIPE_NOT_CONNECTED, "ERROR_PIPE_NOT_CONNECTED",
+ (DWORD) ERROR_MORE_DATA, "ERROR_MORE_DATA",
+ (DWORD) ERROR_VC_DISCONNECTED, "ERROR_VC_DISCONNECTED",
+ (DWORD) ERROR_INVALID_EA_NAME, "ERROR_INVALID_EA_NAME",
+ (DWORD) ERROR_EA_LIST_INCONSISTENT, "ERROR_EA_LIST_INCONSISTENT",
+ (DWORD) ERROR_NO_MORE_ITEMS, "ERROR_NO_MORE_ITEMS",
+ (DWORD) ERROR_CANNOT_COPY, "ERROR_CANNOT_COPY",
+ (DWORD) ERROR_DIRECTORY, "ERROR_DIRECTORY",
+ (DWORD) ERROR_EAS_DIDNT_FIT, "ERROR_EAS_DIDNT_FIT",
+ (DWORD) ERROR_EA_FILE_CORRUPT, "ERROR_EA_FILE_CORRUPT",
+ (DWORD) ERROR_EA_TABLE_FULL, "ERROR_EA_TABLE_FULL",
+ (DWORD) ERROR_INVALID_EA_HANDLE, "ERROR_INVALID_EA_HANDLE",
+ (DWORD) ERROR_EAS_NOT_SUPPORTED, "ERROR_EAS_NOT_SUPPORTED",
+ (DWORD) ERROR_NOT_OWNER, "ERROR_NOT_OWNER",
+ (DWORD) ERROR_TOO_MANY_POSTS, "ERROR_TOO_MANY_POSTS",
+ (DWORD) ERROR_PARTIAL_COPY, "ERROR_PARTIAL_COPY",
+ (DWORD) ERROR_MR_MID_NOT_FOUND, "ERROR_MR_MID_NOT_FOUND",
+ (DWORD) ERROR_INVALID_ADDRESS, "ERROR_INVALID_ADDRESS",
+ (DWORD) ERROR_ARITHMETIC_OVERFLOW, "ERROR_ARITHMETIC_OVERFLOW",
+ (DWORD) ERROR_PIPE_CONNECTED, "ERROR_PIPE_CONNECTED",
+ (DWORD) ERROR_PIPE_LISTENING, "ERROR_PIPE_LISTENING",
+ (DWORD) ERROR_EA_ACCESS_DENIED, "ERROR_EA_ACCESS_DENIED",
+ (DWORD) ERROR_OPERATION_ABORTED, "ERROR_OPERATION_ABORTED",
+ (DWORD) ERROR_IO_INCOMPLETE, "ERROR_IO_INCOMPLETE",
+ (DWORD) ERROR_IO_PENDING, "ERROR_IO_PENDING",
+ (DWORD) ERROR_NOACCESS, "ERROR_NOACCESS",
+ (DWORD) ERROR_SWAPERROR, "ERROR_SWAPERROR",
+ (DWORD) ERROR_STACK_OVERFLOW, "ERROR_STACK_OVERFLOW",
+ (DWORD) ERROR_INVALID_MESSAGE, "ERROR_INVALID_MESSAGE",
+ (DWORD) ERROR_CAN_NOT_COMPLETE, "ERROR_CAN_NOT_COMPLETE",
+ (DWORD) ERROR_INVALID_FLAGS, "ERROR_INVALID_FLAGS",
+ (DWORD) ERROR_UNRECOGNIZED_VOLUME, "ERROR_UNRECOGNIZED_VOLUME",
+ (DWORD) ERROR_FILE_INVALID, "ERROR_FILE_INVALID",
+ (DWORD) ERROR_FULLSCREEN_MODE, "ERROR_FULLSCREEN_MODE",
+ (DWORD) ERROR_NO_TOKEN, "ERROR_NO_TOKEN",
+ (DWORD) ERROR_BADDB, "ERROR_BADDB",
+ (DWORD) ERROR_BADKEY, "ERROR_BADKEY",
+ (DWORD) ERROR_CANTOPEN, "ERROR_CANTOPEN",
+ (DWORD) ERROR_CANTREAD, "ERROR_CANTREAD",
+ (DWORD) ERROR_CANTWRITE, "ERROR_CANTWRITE",
+ (DWORD) ERROR_REGISTRY_RECOVERED, "ERROR_REGISTRY_RECOVERED",
+ (DWORD) ERROR_REGISTRY_CORRUPT, "ERROR_REGISTRY_CORRUPT",
+ (DWORD) ERROR_REGISTRY_IO_FAILED, "ERROR_REGISTRY_IO_FAILED",
+ (DWORD) ERROR_NOT_REGISTRY_FILE, "ERROR_NOT_REGISTRY_FILE",
+ (DWORD) ERROR_KEY_DELETED, "ERROR_KEY_DELETED",
+ (DWORD) ERROR_NO_LOG_SPACE, "ERROR_NO_LOG_SPACE",
+ (DWORD) ERROR_KEY_HAS_CHILDREN, "ERROR_KEY_HAS_CHILDREN",
+ (DWORD) ERROR_CHILD_MUST_BE_VOLATILE, "ERROR_CHILD_MUST_BE_VOLATILE",
+ (DWORD) ERROR_NOTIFY_ENUM_DIR, "ERROR_NOTIFY_ENUM_DIR",
+ (DWORD) ERROR_DEPENDENT_SERVICES_RUNNING, "ERROR_DEPENDENT_SERVICES_RUNNING",
+ (DWORD) ERROR_INVALID_SERVICE_CONTROL, "ERROR_INVALID_SERVICE_CONTROL",
+ (DWORD) ERROR_SERVICE_REQUEST_TIMEOUT, "ERROR_SERVICE_REQUEST_TIMEOUT",
+ (DWORD) ERROR_SERVICE_NO_THREAD, "ERROR_SERVICE_NO_THREAD",
+ (DWORD) ERROR_SERVICE_DATABASE_LOCKED, "ERROR_SERVICE_DATABASE_LOCKED",
+ (DWORD) ERROR_SERVICE_ALREADY_RUNNING, "ERROR_SERVICE_ALREADY_RUNNING",
+ (DWORD) ERROR_INVALID_SERVICE_ACCOUNT, "ERROR_INVALID_SERVICE_ACCOUNT",
+ (DWORD) ERROR_SERVICE_DISABLED, "ERROR_SERVICE_DISABLED",
+ (DWORD) ERROR_CIRCULAR_DEPENDENCY, "ERROR_CIRCULAR_DEPENDENCY",
+ (DWORD) ERROR_SERVICE_DOES_NOT_EXIST, "ERROR_SERVICE_DOES_NOT_EXIST",
+ (DWORD) ERROR_SERVICE_CANNOT_ACCEPT_CTRL, "ERROR_SERVICE_CANNOT_ACCEPT_CTRL",
+ (DWORD) ERROR_SERVICE_NOT_ACTIVE, "ERROR_SERVICE_NOT_ACTIVE",
+ (DWORD) ERROR_FAILED_SERVICE_CONTROLLER_CONNECT, "ERROR_FAILED_SERVICE_CONTROLLER_CONNECT",
+ (DWORD) ERROR_EXCEPTION_IN_SERVICE, "ERROR_EXCEPTION_IN_SERVICE",
+ (DWORD) ERROR_DATABASE_DOES_NOT_EXIST, "ERROR_DATABASE_DOES_NOT_EXIST",
+ (DWORD) ERROR_SERVICE_SPECIFIC_ERROR, "ERROR_SERVICE_SPECIFIC_ERROR",
+ (DWORD) ERROR_PROCESS_ABORTED, "ERROR_PROCESS_ABORTED",
+ (DWORD) ERROR_SERVICE_DEPENDENCY_FAIL, "ERROR_SERVICE_DEPENDENCY_FAIL",
+ (DWORD) ERROR_SERVICE_LOGON_FAILED, "ERROR_SERVICE_LOGON_FAILED",
+ (DWORD) ERROR_SERVICE_START_HANG, "ERROR_SERVICE_START_HANG",
+ (DWORD) ERROR_INVALID_SERVICE_LOCK, "ERROR_INVALID_SERVICE_LOCK",
+ (DWORD) ERROR_SERVICE_MARKED_FOR_DELETE, "ERROR_SERVICE_MARKED_FOR_DELETE",
+ (DWORD) ERROR_SERVICE_EXISTS, "ERROR_SERVICE_EXISTS",
+ (DWORD) ERROR_ALREADY_RUNNING_LKG, "ERROR_ALREADY_RUNNING_LKG",
+ (DWORD) ERROR_SERVICE_DEPENDENCY_DELETED, "ERROR_SERVICE_DEPENDENCY_DELETED",
+ (DWORD) ERROR_BOOT_ALREADY_ACCEPTED, "ERROR_BOOT_ALREADY_ACCEPTED",
+ (DWORD) ERROR_SERVICE_NEVER_STARTED, "ERROR_SERVICE_NEVER_STARTED",
+ (DWORD) ERROR_DUPLICATE_SERVICE_NAME, "ERROR_DUPLICATE_SERVICE_NAME",
+ (DWORD) ERROR_DIFFERENT_SERVICE_ACCOUNT, "ERROR_DIFFERENT_SERVICE_ACCOUNT",
+ (DWORD) ERROR_END_OF_MEDIA, "ERROR_END_OF_MEDIA",
+ (DWORD) ERROR_FILEMARK_DETECTED, "ERROR_FILEMARK_DETECTED",
+ (DWORD) ERROR_BEGINNING_OF_MEDIA, "ERROR_BEGINNING_OF_MEDIA",
+ (DWORD) ERROR_SETMARK_DETECTED, "ERROR_SETMARK_DETECTED",
+ (DWORD) ERROR_NO_DATA_DETECTED, "ERROR_NO_DATA_DETECTED",
+ (DWORD) ERROR_PARTITION_FAILURE, "ERROR_PARTITION_FAILURE",
+ (DWORD) ERROR_INVALID_BLOCK_LENGTH, "ERROR_INVALID_BLOCK_LENGTH",
+ (DWORD) ERROR_DEVICE_NOT_PARTITIONED, "ERROR_DEVICE_NOT_PARTITIONED",
+ (DWORD) ERROR_UNABLE_TO_LOCK_MEDIA, "ERROR_UNABLE_TO_LOCK_MEDIA",
+ (DWORD) ERROR_UNABLE_TO_UNLOAD_MEDIA, "ERROR_UNABLE_TO_UNLOAD_MEDIA",
+ (DWORD) ERROR_MEDIA_CHANGED, "ERROR_MEDIA_CHANGED",
+ (DWORD) ERROR_BUS_RESET, "ERROR_BUS_RESET",
+ (DWORD) ERROR_NO_MEDIA_IN_DRIVE, "ERROR_NO_MEDIA_IN_DRIVE",
+ (DWORD) ERROR_NO_UNICODE_TRANSLATION, "ERROR_NO_UNICODE_TRANSLATION",
+ (DWORD) ERROR_DLL_INIT_FAILED, "ERROR_DLL_INIT_FAILED",
+ (DWORD) ERROR_SHUTDOWN_IN_PROGRESS, "ERROR_SHUTDOWN_IN_PROGRESS",
+ (DWORD) ERROR_NO_SHUTDOWN_IN_PROGRESS, "ERROR_NO_SHUTDOWN_IN_PROGRESS",
+ (DWORD) ERROR_IO_DEVICE, "ERROR_IO_DEVICE",
+ (DWORD) ERROR_SERIAL_NO_DEVICE, "ERROR_SERIAL_NO_DEVICE",
+ (DWORD) ERROR_IRQ_BUSY, "ERROR_IRQ_BUSY",
+ (DWORD) ERROR_MORE_WRITES, "ERROR_MORE_WRITES",
+ (DWORD) ERROR_COUNTER_TIMEOUT, "ERROR_COUNTER_TIMEOUT",
+ (DWORD) ERROR_FLOPPY_ID_MARK_NOT_FOUND, "ERROR_FLOPPY_ID_MARK_NOT_FOUND",
+ (DWORD) ERROR_FLOPPY_WRONG_CYLINDER, "ERROR_FLOPPY_WRONG_CYLINDER",
+ (DWORD) ERROR_FLOPPY_UNKNOWN_ERROR, "ERROR_FLOPPY_UNKNOWN_ERROR",
+ (DWORD) ERROR_FLOPPY_BAD_REGISTERS, "ERROR_FLOPPY_BAD_REGISTERS",
+ (DWORD) ERROR_DISK_RECALIBRATE_FAILED, "ERROR_DISK_RECALIBRATE_FAILED",
+ (DWORD) ERROR_DISK_OPERATION_FAILED, "ERROR_DISK_OPERATION_FAILED",
+ (DWORD) ERROR_DISK_RESET_FAILED, "ERROR_DISK_RESET_FAILED",
+ (DWORD) ERROR_EOM_OVERFLOW, "ERROR_EOM_OVERFLOW",
+ (DWORD) ERROR_NOT_ENOUGH_SERVER_MEMORY, "ERROR_NOT_ENOUGH_SERVER_MEMORY",
+ (DWORD) ERROR_POSSIBLE_DEADLOCK, "ERROR_POSSIBLE_DEADLOCK",
+ (DWORD) ERROR_MAPPED_ALIGNMENT, "ERROR_MAPPED_ALIGNMENT",
+ (DWORD) ERROR_SET_POWER_STATE_VETOED, "ERROR_SET_POWER_STATE_VETOED",
+ (DWORD) ERROR_SET_POWER_STATE_FAILED, "ERROR_SET_POWER_STATE_FAILED",
+ (DWORD) ERROR_TOO_MANY_LINKS, "ERROR_TOO_MANY_LINKS",
+ (DWORD) ERROR_OLD_WIN_VERSION, "ERROR_OLD_WIN_VERSION",
+ (DWORD) ERROR_APP_WRONG_OS, "ERROR_APP_WRONG_OS",
+ (DWORD) ERROR_SINGLE_INSTANCE_APP, "ERROR_SINGLE_INSTANCE_APP",
+ (DWORD) ERROR_RMODE_APP, "ERROR_RMODE_APP",
+ (DWORD) ERROR_INVALID_DLL, "ERROR_INVALID_DLL",
+ (DWORD) ERROR_NO_ASSOCIATION, "ERROR_NO_ASSOCIATION",
+ (DWORD) ERROR_DDE_FAIL, "ERROR_DDE_FAIL",
+ (DWORD) ERROR_DLL_NOT_FOUND, "ERROR_DLL_NOT_FOUND",
+ (DWORD) ERROR_BAD_USERNAME, "ERROR_BAD_USERNAME",
+ (DWORD) ERROR_NOT_CONNECTED, "ERROR_NOT_CONNECTED",
+ (DWORD) ERROR_OPEN_FILES, "ERROR_OPEN_FILES",
+ (DWORD) ERROR_ACTIVE_CONNECTIONS, "ERROR_ACTIVE_CONNECTIONS",
+ (DWORD) ERROR_DEVICE_IN_USE, "ERROR_DEVICE_IN_USE",
+ (DWORD) ERROR_BAD_DEVICE, "ERROR_BAD_DEVICE",
+ (DWORD) ERROR_CONNECTION_UNAVAIL, "ERROR_CONNECTION_UNAVAIL",
+ (DWORD) ERROR_DEVICE_ALREADY_REMEMBERED, "ERROR_DEVICE_ALREADY_REMEMBERED",
+ (DWORD) ERROR_NO_NET_OR_BAD_PATH, "ERROR_NO_NET_OR_BAD_PATH",
+ (DWORD) ERROR_BAD_PROVIDER, "ERROR_BAD_PROVIDER",
+ (DWORD) ERROR_CANNOT_OPEN_PROFILE, "ERROR_CANNOT_OPEN_PROFILE",
+ (DWORD) ERROR_BAD_PROFILE, "ERROR_BAD_PROFILE",
+ (DWORD) ERROR_NOT_CONTAINER, "ERROR_NOT_CONTAINER",
+ (DWORD) ERROR_EXTENDED_ERROR, "ERROR_EXTENDED_ERROR",
+ (DWORD) ERROR_INVALID_GROUPNAME, "ERROR_INVALID_GROUPNAME",
+ (DWORD) ERROR_INVALID_COMPUTERNAME, "ERROR_INVALID_COMPUTERNAME",
+ (DWORD) ERROR_INVALID_EVENTNAME, "ERROR_INVALID_EVENTNAME",
+ (DWORD) ERROR_INVALID_DOMAINNAME, "ERROR_INVALID_DOMAINNAME",
+ (DWORD) ERROR_INVALID_SERVICENAME, "ERROR_INVALID_SERVICENAME",
+ (DWORD) ERROR_INVALID_NETNAME, "ERROR_INVALID_NETNAME",
+ (DWORD) ERROR_INVALID_SHARENAME, "ERROR_INVALID_SHARENAME",
+ (DWORD) ERROR_INVALID_PASSWORDNAME, "ERROR_INVALID_PASSWORDNAME",
+ (DWORD) ERROR_INVALID_MESSAGENAME, "ERROR_INVALID_MESSAGENAME",
+ (DWORD) ERROR_INVALID_MESSAGEDEST, "ERROR_INVALID_MESSAGEDEST",
+ (DWORD) ERROR_SESSION_CREDENTIAL_CONFLICT, "ERROR_SESSION_CREDENTIAL_CONFLICT",
+ (DWORD) ERROR_REMOTE_SESSION_LIMIT_EXCEEDED, "ERROR_REMOTE_SESSION_LIMIT_EXCEEDED",
+ (DWORD) ERROR_DUP_DOMAINNAME, "ERROR_DUP_DOMAINNAME",
+ (DWORD) ERROR_NO_NETWORK, "ERROR_NO_NETWORK",
+ (DWORD) ERROR_CANCELLED, "ERROR_CANCELLED",
+ (DWORD) ERROR_USER_MAPPED_FILE, "ERROR_USER_MAPPED_FILE",
+ (DWORD) ERROR_CONNECTION_REFUSED, "ERROR_CONNECTION_REFUSED",
+ (DWORD) ERROR_GRACEFUL_DISCONNECT, "ERROR_GRACEFUL_DISCONNECT",
+ (DWORD) ERROR_ADDRESS_ALREADY_ASSOCIATED, "ERROR_ADDRESS_ALREADY_ASSOCIATED",
+ (DWORD) ERROR_ADDRESS_NOT_ASSOCIATED, "ERROR_ADDRESS_NOT_ASSOCIATED",
+ (DWORD) ERROR_CONNECTION_INVALID, "ERROR_CONNECTION_INVALID",
+ (DWORD) ERROR_CONNECTION_ACTIVE, "ERROR_CONNECTION_ACTIVE",
+ (DWORD) ERROR_NETWORK_UNREACHABLE, "ERROR_NETWORK_UNREACHABLE",
+ (DWORD) ERROR_HOST_UNREACHABLE, "ERROR_HOST_UNREACHABLE",
+ (DWORD) ERROR_PROTOCOL_UNREACHABLE, "ERROR_PROTOCOL_UNREACHABLE",
+ (DWORD) ERROR_PORT_UNREACHABLE, "ERROR_PORT_UNREACHABLE",
+ (DWORD) ERROR_REQUEST_ABORTED, "ERROR_REQUEST_ABORTED",
+ (DWORD) ERROR_CONNECTION_ABORTED, "ERROR_CONNECTION_ABORTED",
+ (DWORD) ERROR_RETRY, "ERROR_RETRY",
+ (DWORD) ERROR_CONNECTION_COUNT_LIMIT, "ERROR_CONNECTION_COUNT_LIMIT",
+ (DWORD) ERROR_LOGIN_TIME_RESTRICTION, "ERROR_LOGIN_TIME_RESTRICTION",
+ (DWORD) ERROR_LOGIN_WKSTA_RESTRICTION, "ERROR_LOGIN_WKSTA_RESTRICTION",
+ (DWORD) ERROR_INCORRECT_ADDRESS, "ERROR_INCORRECT_ADDRESS",
+ (DWORD) ERROR_ALREADY_REGISTERED, "ERROR_ALREADY_REGISTERED",
+ (DWORD) ERROR_SERVICE_NOT_FOUND, "ERROR_SERVICE_NOT_FOUND",
+ (DWORD) ERROR_NOT_AUTHENTICATED, "ERROR_NOT_AUTHENTICATED",
+ (DWORD) ERROR_NOT_LOGGED_ON, "ERROR_NOT_LOGGED_ON",
+ (DWORD) ERROR_CONTINUE, "ERROR_CONTINUE",
+ (DWORD) ERROR_ALREADY_INITIALIZED, "ERROR_ALREADY_INITIALIZED",
+ (DWORD) ERROR_NO_MORE_DEVICES, "ERROR_NO_MORE_DEVICES",
+ (DWORD) ERROR_NOT_ALL_ASSIGNED, "ERROR_NOT_ALL_ASSIGNED",
+ (DWORD) ERROR_SOME_NOT_MAPPED, "ERROR_SOME_NOT_MAPPED",
+ (DWORD) ERROR_NO_QUOTAS_FOR_ACCOUNT, "ERROR_NO_QUOTAS_FOR_ACCOUNT",
+ (DWORD) ERROR_LOCAL_USER_SESSION_KEY, "ERROR_LOCAL_USER_SESSION_KEY",
+ (DWORD) ERROR_NULL_LM_PASSWORD, "ERROR_NULL_LM_PASSWORD",
+ (DWORD) ERROR_UNKNOWN_REVISION, "ERROR_UNKNOWN_REVISION",
+ (DWORD) ERROR_REVISION_MISMATCH, "ERROR_REVISION_MISMATCH",
+ (DWORD) ERROR_INVALID_OWNER, "ERROR_INVALID_OWNER",
+ (DWORD) ERROR_INVALID_PRIMARY_GROUP, "ERROR_INVALID_PRIMARY_GROUP",
+ (DWORD) ERROR_NO_IMPERSONATION_TOKEN, "ERROR_NO_IMPERSONATION_TOKEN",
+ (DWORD) ERROR_CANT_DISABLE_MANDATORY, "ERROR_CANT_DISABLE_MANDATORY",
+ (DWORD) ERROR_NO_LOGON_SERVERS, "ERROR_NO_LOGON_SERVERS",
+ (DWORD) ERROR_NO_SUCH_LOGON_SESSION, "ERROR_NO_SUCH_LOGON_SESSION",
+ (DWORD) ERROR_NO_SUCH_PRIVILEGE, "ERROR_NO_SUCH_PRIVILEGE",
+ (DWORD) ERROR_PRIVILEGE_NOT_HELD, "ERROR_PRIVILEGE_NOT_HELD",
+ (DWORD) ERROR_INVALID_ACCOUNT_NAME, "ERROR_INVALID_ACCOUNT_NAME",
+ (DWORD) ERROR_USER_EXISTS, "ERROR_USER_EXISTS",
+ (DWORD) ERROR_NO_SUCH_USER, "ERROR_NO_SUCH_USER",
+ (DWORD) ERROR_GROUP_EXISTS, "ERROR_GROUP_EXISTS",
+ (DWORD) ERROR_NO_SUCH_GROUP, "ERROR_NO_SUCH_GROUP",
+ (DWORD) ERROR_MEMBER_IN_GROUP, "ERROR_MEMBER_IN_GROUP",
+ (DWORD) ERROR_MEMBER_NOT_IN_GROUP, "ERROR_MEMBER_NOT_IN_GROUP",
+ (DWORD) ERROR_LAST_ADMIN, "ERROR_LAST_ADMIN",
+ (DWORD) ERROR_WRONG_PASSWORD, "ERROR_WRONG_PASSWORD",
+ (DWORD) ERROR_ILL_FORMED_PASSWORD, "ERROR_ILL_FORMED_PASSWORD",
+ (DWORD) ERROR_PASSWORD_RESTRICTION, "ERROR_PASSWORD_RESTRICTION",
+ (DWORD) ERROR_LOGON_FAILURE, "ERROR_LOGON_FAILURE",
+ (DWORD) ERROR_ACCOUNT_RESTRICTION, "ERROR_ACCOUNT_RESTRICTION",
+ (DWORD) ERROR_INVALID_LOGON_HOURS, "ERROR_INVALID_LOGON_HOURS",
+ (DWORD) ERROR_INVALID_WORKSTATION, "ERROR_INVALID_WORKSTATION",
+ (DWORD) ERROR_PASSWORD_EXPIRED, "ERROR_PASSWORD_EXPIRED",
+ (DWORD) ERROR_ACCOUNT_DISABLED, "ERROR_ACCOUNT_DISABLED",
+ (DWORD) ERROR_NONE_MAPPED, "ERROR_NONE_MAPPED",
+ (DWORD) ERROR_TOO_MANY_LUIDS_REQUESTED, "ERROR_TOO_MANY_LUIDS_REQUESTED",
+ (DWORD) ERROR_LUIDS_EXHAUSTED, "ERROR_LUIDS_EXHAUSTED",
+ (DWORD) ERROR_INVALID_SUB_AUTHORITY, "ERROR_INVALID_SUB_AUTHORITY",
+ (DWORD) ERROR_INVALID_ACL, "ERROR_INVALID_ACL",
+ (DWORD) ERROR_INVALID_SID, "ERROR_INVALID_SID",
+ (DWORD) ERROR_INVALID_SECURITY_DESCR, "ERROR_INVALID_SECURITY_DESCR",
+ (DWORD) ERROR_BAD_INHERITANCE_ACL, "ERROR_BAD_INHERITANCE_ACL",
+ (DWORD) ERROR_SERVER_DISABLED, "ERROR_SERVER_DISABLED",
+ (DWORD) ERROR_SERVER_NOT_DISABLED, "ERROR_SERVER_NOT_DISABLED",
+ (DWORD) ERROR_INVALID_ID_AUTHORITY, "ERROR_INVALID_ID_AUTHORITY",
+ (DWORD) ERROR_ALLOTTED_SPACE_EXCEEDED, "ERROR_ALLOTTED_SPACE_EXCEEDED",
+ (DWORD) ERROR_INVALID_GROUP_ATTRIBUTES, "ERROR_INVALID_GROUP_ATTRIBUTES",
+ (DWORD) ERROR_BAD_IMPERSONATION_LEVEL, "ERROR_BAD_IMPERSONATION_LEVEL",
+ (DWORD) ERROR_CANT_OPEN_ANONYMOUS, "ERROR_CANT_OPEN_ANONYMOUS",
+ (DWORD) ERROR_BAD_VALIDATION_CLASS, "ERROR_BAD_VALIDATION_CLASS",
+ (DWORD) ERROR_BAD_TOKEN_TYPE, "ERROR_BAD_TOKEN_TYPE",
+ (DWORD) ERROR_NO_SECURITY_ON_OBJECT, "ERROR_NO_SECURITY_ON_OBJECT",
+ (DWORD) ERROR_CANT_ACCESS_DOMAIN_INFO, "ERROR_CANT_ACCESS_DOMAIN_INFO",
+ (DWORD) ERROR_INVALID_SERVER_STATE, "ERROR_INVALID_SERVER_STATE",
+ (DWORD) ERROR_INVALID_DOMAIN_STATE, "ERROR_INVALID_DOMAIN_STATE",
+ (DWORD) ERROR_INVALID_DOMAIN_ROLE, "ERROR_INVALID_DOMAIN_ROLE",
+ (DWORD) ERROR_NO_SUCH_DOMAIN, "ERROR_NO_SUCH_DOMAIN",
+ (DWORD) ERROR_DOMAIN_EXISTS, "ERROR_DOMAIN_EXISTS",
+ (DWORD) ERROR_DOMAIN_LIMIT_EXCEEDED, "ERROR_DOMAIN_LIMIT_EXCEEDED",
+ (DWORD) ERROR_INTERNAL_DB_CORRUPTION, "ERROR_INTERNAL_DB_CORRUPTION",
+ (DWORD) ERROR_INTERNAL_ERROR, "ERROR_INTERNAL_ERROR",
+ (DWORD) ERROR_GENERIC_NOT_MAPPED, "ERROR_GENERIC_NOT_MAPPED",
+ (DWORD) ERROR_BAD_DESCRIPTOR_FORMAT, "ERROR_BAD_DESCRIPTOR_FORMAT",
+ (DWORD) ERROR_NOT_LOGON_PROCESS, "ERROR_NOT_LOGON_PROCESS",
+ (DWORD) ERROR_LOGON_SESSION_EXISTS, "ERROR_LOGON_SESSION_EXISTS",
+ (DWORD) ERROR_NO_SUCH_PACKAGE, "ERROR_NO_SUCH_PACKAGE",
+ (DWORD) ERROR_BAD_LOGON_SESSION_STATE, "ERROR_BAD_LOGON_SESSION_STATE",
+ (DWORD) ERROR_LOGON_SESSION_COLLISION, "ERROR_LOGON_SESSION_COLLISION",
+ (DWORD) ERROR_INVALID_LOGON_TYPE, "ERROR_INVALID_LOGON_TYPE",
+ (DWORD) ERROR_CANNOT_IMPERSONATE, "ERROR_CANNOT_IMPERSONATE",
+ (DWORD) ERROR_RXACT_INVALID_STATE, "ERROR_RXACT_INVALID_STATE",
+ (DWORD) ERROR_RXACT_COMMIT_FAILURE, "ERROR_RXACT_COMMIT_FAILURE",
+ (DWORD) ERROR_SPECIAL_ACCOUNT, "ERROR_SPECIAL_ACCOUNT",
+ (DWORD) ERROR_SPECIAL_GROUP, "ERROR_SPECIAL_GROUP",
+ (DWORD) ERROR_SPECIAL_USER, "ERROR_SPECIAL_USER",
+ (DWORD) ERROR_MEMBERS_PRIMARY_GROUP, "ERROR_MEMBERS_PRIMARY_GROUP",
+ (DWORD) ERROR_TOKEN_ALREADY_IN_USE, "ERROR_TOKEN_ALREADY_IN_USE",
+ (DWORD) ERROR_NO_SUCH_ALIAS, "ERROR_NO_SUCH_ALIAS",
+ (DWORD) ERROR_MEMBER_NOT_IN_ALIAS, "ERROR_MEMBER_NOT_IN_ALIAS",
+ (DWORD) ERROR_MEMBER_IN_ALIAS, "ERROR_MEMBER_IN_ALIAS",
+ (DWORD) ERROR_ALIAS_EXISTS, "ERROR_ALIAS_EXISTS",
+ (DWORD) ERROR_LOGON_NOT_GRANTED, "ERROR_LOGON_NOT_GRANTED",
+ (DWORD) ERROR_TOO_MANY_SECRETS, "ERROR_TOO_MANY_SECRETS",
+ (DWORD) ERROR_SECRET_TOO_LONG, "ERROR_SECRET_TOO_LONG",
+ (DWORD) ERROR_INTERNAL_DB_ERROR, "ERROR_INTERNAL_DB_ERROR",
+ (DWORD) ERROR_TOO_MANY_CONTEXT_IDS, "ERROR_TOO_MANY_CONTEXT_IDS",
+ (DWORD) ERROR_LOGON_TYPE_NOT_GRANTED, "ERROR_LOGON_TYPE_NOT_GRANTED",
+ (DWORD) ERROR_NT_CROSS_ENCRYPTION_REQUIRED, "ERROR_NT_CROSS_ENCRYPTION_REQUIRED",
+ (DWORD) ERROR_NO_SUCH_MEMBER, "ERROR_NO_SUCH_MEMBER",
+ (DWORD) ERROR_INVALID_MEMBER, "ERROR_INVALID_MEMBER",
+ (DWORD) ERROR_TOO_MANY_SIDS, "ERROR_TOO_MANY_SIDS",
+ (DWORD) ERROR_LM_CROSS_ENCRYPTION_REQUIRED, "ERROR_LM_CROSS_ENCRYPTION_REQUIRED",
+ (DWORD) ERROR_NO_INHERITANCE, "ERROR_NO_INHERITANCE",
+ (DWORD) ERROR_FILE_CORRUPT, "ERROR_FILE_CORRUPT",
+ (DWORD) ERROR_DISK_CORRUPT, "ERROR_DISK_CORRUPT",
+ (DWORD) ERROR_NO_USER_SESSION_KEY, "ERROR_NO_USER_SESSION_KEY",
+ (DWORD) ERROR_LICENSE_QUOTA_EXCEEDED, "ERROR_LICENSE_QUOTA_EXCEEDED",
+ (DWORD) ERROR_INVALID_WINDOW_HANDLE, "ERROR_INVALID_WINDOW_HANDLE",
+ (DWORD) ERROR_INVALID_MENU_HANDLE, "ERROR_INVALID_MENU_HANDLE",
+ (DWORD) ERROR_INVALID_CURSOR_HANDLE, "ERROR_INVALID_CURSOR_HANDLE",
+ (DWORD) ERROR_INVALID_ACCEL_HANDLE, "ERROR_INVALID_ACCEL_HANDLE",
+ (DWORD) ERROR_INVALID_HOOK_HANDLE, "ERROR_INVALID_HOOK_HANDLE",
+ (DWORD) ERROR_INVALID_DWP_HANDLE, "ERROR_INVALID_DWP_HANDLE",
+ (DWORD) ERROR_TLW_WITH_WSCHILD, "ERROR_TLW_WITH_WSCHILD",
+ (DWORD) ERROR_CANNOT_FIND_WND_CLASS, "ERROR_CANNOT_FIND_WND_CLASS",
+ (DWORD) ERROR_WINDOW_OF_OTHER_THREAD, "ERROR_WINDOW_OF_OTHER_THREAD",
+ (DWORD) ERROR_HOTKEY_ALREADY_REGISTERED, "ERROR_HOTKEY_ALREADY_REGISTERED",
+ (DWORD) ERROR_CLASS_ALREADY_EXISTS, "ERROR_CLASS_ALREADY_EXISTS",
+ (DWORD) ERROR_CLASS_DOES_NOT_EXIST, "ERROR_CLASS_DOES_NOT_EXIST",
+ (DWORD) ERROR_CLASS_HAS_WINDOWS, "ERROR_CLASS_HAS_WINDOWS",
+ (DWORD) ERROR_INVALID_INDEX, "ERROR_INVALID_INDEX",
+ (DWORD) ERROR_INVALID_ICON_HANDLE, "ERROR_INVALID_ICON_HANDLE",
+ (DWORD) ERROR_PRIVATE_DIALOG_INDEX, "ERROR_PRIVATE_DIALOG_INDEX",
+ (DWORD) ERROR_LISTBOX_ID_NOT_FOUND, "ERROR_LISTBOX_ID_NOT_FOUND",
+ (DWORD) ERROR_NO_WILDCARD_CHARACTERS, "ERROR_NO_WILDCARD_CHARACTERS",
+ (DWORD) ERROR_CLIPBOARD_NOT_OPEN, "ERROR_CLIPBOARD_NOT_OPEN",
+ (DWORD) ERROR_HOTKEY_NOT_REGISTERED, "ERROR_HOTKEY_NOT_REGISTERED",
+ (DWORD) ERROR_WINDOW_NOT_DIALOG, "ERROR_WINDOW_NOT_DIALOG",
+ (DWORD) ERROR_CONTROL_ID_NOT_FOUND, "ERROR_CONTROL_ID_NOT_FOUND",
+ (DWORD) ERROR_INVALID_COMBOBOX_MESSAGE, "ERROR_INVALID_COMBOBOX_MESSAGE",
+ (DWORD) ERROR_WINDOW_NOT_COMBOBOX, "ERROR_WINDOW_NOT_COMBOBOX",
+ (DWORD) ERROR_INVALID_EDIT_HEIGHT, "ERROR_INVALID_EDIT_HEIGHT",
+ (DWORD) ERROR_DC_NOT_FOUND, "ERROR_DC_NOT_FOUND",
+ (DWORD) ERROR_INVALID_HOOK_FILTER, "ERROR_INVALID_HOOK_FILTER",
+ (DWORD) ERROR_INVALID_FILTER_PROC, "ERROR_INVALID_FILTER_PROC",
+ (DWORD) ERROR_HOOK_NEEDS_HMOD, "ERROR_HOOK_NEEDS_HMOD",
+ (DWORD) ERROR_GLOBAL_ONLY_HOOK, "ERROR_GLOBAL_ONLY_HOOK",
+ (DWORD) ERROR_JOURNAL_HOOK_SET, "ERROR_JOURNAL_HOOK_SET",
+ (DWORD) ERROR_HOOK_NOT_INSTALLED, "ERROR_HOOK_NOT_INSTALLED",
+ (DWORD) ERROR_INVALID_LB_MESSAGE, "ERROR_INVALID_LB_MESSAGE",
+ (DWORD) ERROR_SETCOUNT_ON_BAD_LB, "ERROR_SETCOUNT_ON_BAD_LB",
+ (DWORD) ERROR_LB_WITHOUT_TABSTOPS, "ERROR_LB_WITHOUT_TABSTOPS",
+ (DWORD) ERROR_DESTROY_OBJECT_OF_OTHER_THREAD, "ERROR_DESTROY_OBJECT_OF_OTHER_THREAD",
+ (DWORD) ERROR_CHILD_WINDOW_MENU, "ERROR_CHILD_WINDOW_MENU",
+ (DWORD) ERROR_NO_SYSTEM_MENU, "ERROR_NO_SYSTEM_MENU",
+ (DWORD) ERROR_INVALID_MSGBOX_STYLE, "ERROR_INVALID_MSGBOX_STYLE",
+ (DWORD) ERROR_INVALID_SPI_VALUE, "ERROR_INVALID_SPI_VALUE",
+ (DWORD) ERROR_SCREEN_ALREADY_LOCKED, "ERROR_SCREEN_ALREADY_LOCKED",
+ (DWORD) ERROR_HWNDS_HAVE_DIFF_PARENT, "ERROR_HWNDS_HAVE_DIFF_PARENT",
+ (DWORD) ERROR_NOT_CHILD_WINDOW, "ERROR_NOT_CHILD_WINDOW",
+ (DWORD) ERROR_INVALID_GW_COMMAND, "ERROR_INVALID_GW_COMMAND",
+ (DWORD) ERROR_INVALID_THREAD_ID, "ERROR_INVALID_THREAD_ID",
+ (DWORD) ERROR_NON_MDICHILD_WINDOW, "ERROR_NON_MDICHILD_WINDOW",
+ (DWORD) ERROR_POPUP_ALREADY_ACTIVE, "ERROR_POPUP_ALREADY_ACTIVE",
+ (DWORD) ERROR_NO_SCROLLBARS, "ERROR_NO_SCROLLBARS",
+ (DWORD) ERROR_INVALID_SCROLLBAR_RANGE, "ERROR_INVALID_SCROLLBAR_RANGE",
+ (DWORD) ERROR_INVALID_SHOWWIN_COMMAND, "ERROR_INVALID_SHOWWIN_COMMAND",
+ (DWORD) ERROR_NO_SYSTEM_RESOURCES, "ERROR_NO_SYSTEM_RESOURCES",
+ (DWORD) ERROR_NONPAGED_SYSTEM_RESOURCES, "ERROR_NONPAGED_SYSTEM_RESOURCES",
+ (DWORD) ERROR_PAGED_SYSTEM_RESOURCES, "ERROR_PAGED_SYSTEM_RESOURCES",
+ (DWORD) ERROR_WORKING_SET_QUOTA, "ERROR_WORKING_SET_QUOTA",
+ (DWORD) ERROR_PAGEFILE_QUOTA, "ERROR_PAGEFILE_QUOTA",
+ (DWORD) ERROR_COMMITMENT_LIMIT, "ERROR_COMMITMENT_LIMIT",
+ (DWORD) ERROR_MENU_ITEM_NOT_FOUND, "ERROR_MENU_ITEM_NOT_FOUND",
+ (DWORD) ERROR_INVALID_KEYBOARD_HANDLE, "ERROR_INVALID_KEYBOARD_HANDLE",
+ (DWORD) ERROR_HOOK_TYPE_NOT_ALLOWED, "ERROR_HOOK_TYPE_NOT_ALLOWED",
+ (DWORD) ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION, "ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION",
+ (DWORD) ERROR_TIMEOUT, "ERROR_TIMEOUT",
+ (DWORD) ERROR_INVALID_MONITOR_HANDLE, "ERROR_INVALID_MONITOR_HANDLE",
+ (DWORD) ERROR_EVENTLOG_FILE_CORRUPT, "ERROR_EVENTLOG_FILE_CORRUPT",
+ (DWORD) ERROR_EVENTLOG_CANT_START, "ERROR_EVENTLOG_CANT_START",
+ (DWORD) ERROR_LOG_FILE_FULL, "ERROR_LOG_FILE_FULL",
+ (DWORD) ERROR_EVENTLOG_FILE_CHANGED, "ERROR_EVENTLOG_FILE_CHANGED",
+ (DWORD) RPC_S_INVALID_STRING_BINDING, "RPC_S_INVALID_STRING_BINDING",
+ (DWORD) RPC_S_WRONG_KIND_OF_BINDING, "RPC_S_WRONG_KIND_OF_BINDING",
+ (DWORD) RPC_S_INVALID_BINDING, "RPC_S_INVALID_BINDING",
+ (DWORD) RPC_S_PROTSEQ_NOT_SUPPORTED, "RPC_S_PROTSEQ_NOT_SUPPORTED",
+ (DWORD) RPC_S_INVALID_RPC_PROTSEQ, "RPC_S_INVALID_RPC_PROTSEQ",
+ (DWORD) RPC_S_INVALID_STRING_UUID, "RPC_S_INVALID_STRING_UUID",
+ (DWORD) RPC_S_INVALID_ENDPOINT_FORMAT, "RPC_S_INVALID_ENDPOINT_FORMAT",
+ (DWORD) RPC_S_INVALID_NET_ADDR, "RPC_S_INVALID_NET_ADDR",
+ (DWORD) RPC_S_NO_ENDPOINT_FOUND, "RPC_S_NO_ENDPOINT_FOUND",
+ (DWORD) RPC_S_INVALID_TIMEOUT, "RPC_S_INVALID_TIMEOUT",
+ (DWORD) RPC_S_OBJECT_NOT_FOUND, "RPC_S_OBJECT_NOT_FOUND",
+ (DWORD) RPC_S_ALREADY_REGISTERED, "RPC_S_ALREADY_REGISTERED",
+ (DWORD) RPC_S_TYPE_ALREADY_REGISTERED, "RPC_S_TYPE_ALREADY_REGISTERED",
+ (DWORD) RPC_S_ALREADY_LISTENING, "RPC_S_ALREADY_LISTENING",
+ (DWORD) RPC_S_NO_PROTSEQS_REGISTERED, "RPC_S_NO_PROTSEQS_REGISTERED",
+ (DWORD) RPC_S_NOT_LISTENING, "RPC_S_NOT_LISTENING",
+ (DWORD) RPC_S_UNKNOWN_MGR_TYPE, "RPC_S_UNKNOWN_MGR_TYPE",
+ (DWORD) RPC_S_UNKNOWN_IF, "RPC_S_UNKNOWN_IF",
+ (DWORD) RPC_S_NO_BINDINGS, "RPC_S_NO_BINDINGS",
+ (DWORD) RPC_S_NO_PROTSEQS, "RPC_S_NO_PROTSEQS",
+ (DWORD) RPC_S_CANT_CREATE_ENDPOINT, "RPC_S_CANT_CREATE_ENDPOINT",
+ (DWORD) RPC_S_OUT_OF_RESOURCES, "RPC_S_OUT_OF_RESOURCES",
+ (DWORD) RPC_S_SERVER_UNAVAILABLE, "RPC_S_SERVER_UNAVAILABLE",
+ (DWORD) RPC_S_SERVER_TOO_BUSY, "RPC_S_SERVER_TOO_BUSY",
+ (DWORD) RPC_S_INVALID_NETWORK_OPTIONS, "RPC_S_INVALID_NETWORK_OPTIONS",
+ (DWORD) RPC_S_NO_CALL_ACTIVE, "RPC_S_NO_CALL_ACTIVE",
+ (DWORD) RPC_S_CALL_FAILED, "RPC_S_CALL_FAILED",
+ (DWORD) RPC_S_CALL_FAILED_DNE, "RPC_S_CALL_FAILED_DNE",
+ (DWORD) RPC_S_PROTOCOL_ERROR, "RPC_S_PROTOCOL_ERROR",
+ (DWORD) RPC_S_UNSUPPORTED_TRANS_SYN, "RPC_S_UNSUPPORTED_TRANS_SYN",
+ (DWORD) RPC_S_UNSUPPORTED_TYPE, "RPC_S_UNSUPPORTED_TYPE",
+ (DWORD) RPC_S_INVALID_TAG, "RPC_S_INVALID_TAG",
+ (DWORD) RPC_S_INVALID_BOUND, "RPC_S_INVALID_BOUND",
+ (DWORD) RPC_S_NO_ENTRY_NAME, "RPC_S_NO_ENTRY_NAME",
+ (DWORD) RPC_S_INVALID_NAME_SYNTAX, "RPC_S_INVALID_NAME_SYNTAX",
+ (DWORD) RPC_S_UNSUPPORTED_NAME_SYNTAX, "RPC_S_UNSUPPORTED_NAME_SYNTAX",
+ (DWORD) RPC_S_UUID_NO_ADDRESS, "RPC_S_UUID_NO_ADDRESS",
+ (DWORD) RPC_S_DUPLICATE_ENDPOINT, "RPC_S_DUPLICATE_ENDPOINT",
+ (DWORD) RPC_S_UNKNOWN_AUTHN_TYPE, "RPC_S_UNKNOWN_AUTHN_TYPE",
+ (DWORD) RPC_S_MAX_CALLS_TOO_SMALL, "RPC_S_MAX_CALLS_TOO_SMALL",
+ (DWORD) RPC_S_STRING_TOO_LONG, "RPC_S_STRING_TOO_LONG",
+ (DWORD) RPC_S_PROTSEQ_NOT_FOUND, "RPC_S_PROTSEQ_NOT_FOUND",
+ (DWORD) RPC_S_PROCNUM_OUT_OF_RANGE, "RPC_S_PROCNUM_OUT_OF_RANGE",
+ (DWORD) RPC_S_BINDING_HAS_NO_AUTH, "RPC_S_BINDING_HAS_NO_AUTH",
+ (DWORD) RPC_S_UNKNOWN_AUTHN_SERVICE, "RPC_S_UNKNOWN_AUTHN_SERVICE",
+ (DWORD) RPC_S_UNKNOWN_AUTHN_LEVEL, "RPC_S_UNKNOWN_AUTHN_LEVEL",
+ (DWORD) RPC_S_INVALID_AUTH_IDENTITY, "RPC_S_INVALID_AUTH_IDENTITY",
+ (DWORD) RPC_S_UNKNOWN_AUTHZ_SERVICE, "RPC_S_UNKNOWN_AUTHZ_SERVICE",
+ (DWORD) EPT_S_INVALID_ENTRY, "EPT_S_INVALID_ENTRY",
+ (DWORD) EPT_S_CANT_PERFORM_OP, "EPT_S_CANT_PERFORM_OP",
+ (DWORD) EPT_S_NOT_REGISTERED, "EPT_S_NOT_REGISTERED",
+ (DWORD) RPC_S_NOTHING_TO_EXPORT, "RPC_S_NOTHING_TO_EXPORT",
+ (DWORD) RPC_S_INCOMPLETE_NAME, "RPC_S_INCOMPLETE_NAME",
+ (DWORD) RPC_S_INVALID_VERS_OPTION, "RPC_S_INVALID_VERS_OPTION",
+ (DWORD) RPC_S_NO_MORE_MEMBERS, "RPC_S_NO_MORE_MEMBERS",
+ (DWORD) RPC_S_NOT_ALL_OBJS_UNEXPORTED, "RPC_S_NOT_ALL_OBJS_UNEXPORTED",
+ (DWORD) RPC_S_INTERFACE_NOT_FOUND, "RPC_S_INTERFACE_NOT_FOUND",
+ (DWORD) RPC_S_ENTRY_ALREADY_EXISTS, "RPC_S_ENTRY_ALREADY_EXISTS",
+ (DWORD) RPC_S_ENTRY_NOT_FOUND, "RPC_S_ENTRY_NOT_FOUND",
+ (DWORD) RPC_S_NAME_SERVICE_UNAVAILABLE, "RPC_S_NAME_SERVICE_UNAVAILABLE",
+ (DWORD) RPC_S_INVALID_NAF_ID, "RPC_S_INVALID_NAF_ID",
+ (DWORD) RPC_S_CANNOT_SUPPORT, "RPC_S_CANNOT_SUPPORT",
+ (DWORD) RPC_S_NO_CONTEXT_AVAILABLE, "RPC_S_NO_CONTEXT_AVAILABLE",
+ (DWORD) RPC_S_INTERNAL_ERROR, "RPC_S_INTERNAL_ERROR",
+ (DWORD) RPC_S_ZERO_DIVIDE, "RPC_S_ZERO_DIVIDE",
+ (DWORD) RPC_S_ADDRESS_ERROR, "RPC_S_ADDRESS_ERROR",
+ (DWORD) RPC_S_FP_DIV_ZERO, "RPC_S_FP_DIV_ZERO",
+ (DWORD) RPC_S_FP_UNDERFLOW, "RPC_S_FP_UNDERFLOW",
+ (DWORD) RPC_S_FP_OVERFLOW, "RPC_S_FP_OVERFLOW",
+ (DWORD) RPC_X_NO_MORE_ENTRIES, "RPC_X_NO_MORE_ENTRIES",
+ (DWORD) RPC_X_SS_CHAR_TRANS_OPEN_FAIL, "RPC_X_SS_CHAR_TRANS_OPEN_FAIL",
+ (DWORD) RPC_X_SS_CHAR_TRANS_SHORT_FILE, "RPC_X_SS_CHAR_TRANS_SHORT_FILE",
+ (DWORD) RPC_X_SS_IN_NULL_CONTEXT, "RPC_X_SS_IN_NULL_CONTEXT",
+ (DWORD) RPC_X_SS_CONTEXT_DAMAGED, "RPC_X_SS_CONTEXT_DAMAGED",
+ (DWORD) RPC_X_SS_HANDLES_MISMATCH, "RPC_X_SS_HANDLES_MISMATCH",
+ (DWORD) RPC_X_SS_CANNOT_GET_CALL_HANDLE, "RPC_X_SS_CANNOT_GET_CALL_HANDLE",
+ (DWORD) RPC_X_NULL_REF_POINTER, "RPC_X_NULL_REF_POINTER",
+ (DWORD) RPC_X_ENUM_VALUE_OUT_OF_RANGE, "RPC_X_ENUM_VALUE_OUT_OF_RANGE",
+ (DWORD) RPC_X_BYTE_COUNT_TOO_SMALL, "RPC_X_BYTE_COUNT_TOO_SMALL",
+ (DWORD) RPC_X_BAD_STUB_DATA, "RPC_X_BAD_STUB_DATA",
+ (DWORD) ERROR_INVALID_USER_BUFFER, "ERROR_INVALID_USER_BUFFER",
+ (DWORD) ERROR_UNRECOGNIZED_MEDIA, "ERROR_UNRECOGNIZED_MEDIA",
+ (DWORD) ERROR_NO_TRUST_LSA_SECRET, "ERROR_NO_TRUST_LSA_SECRET",
+ (DWORD) ERROR_NO_TRUST_SAM_ACCOUNT, "ERROR_NO_TRUST_SAM_ACCOUNT",
+ (DWORD) ERROR_TRUSTED_DOMAIN_FAILURE, "ERROR_TRUSTED_DOMAIN_FAILURE",
+ (DWORD) ERROR_TRUSTED_RELATIONSHIP_FAILURE, "ERROR_TRUSTED_RELATIONSHIP_FAILURE",
+ (DWORD) ERROR_TRUST_FAILURE, "ERROR_TRUST_FAILURE",
+ (DWORD) RPC_S_CALL_IN_PROGRESS, "RPC_S_CALL_IN_PROGRESS",
+ (DWORD) ERROR_NETLOGON_NOT_STARTED, "ERROR_NETLOGON_NOT_STARTED",
+ (DWORD) ERROR_ACCOUNT_EXPIRED, "ERROR_ACCOUNT_EXPIRED",
+ (DWORD) ERROR_REDIRECTOR_HAS_OPEN_HANDLES, "ERROR_REDIRECTOR_HAS_OPEN_HANDLES",
+ (DWORD) ERROR_PRINTER_DRIVER_ALREADY_INSTALLED, "ERROR_PRINTER_DRIVER_ALREADY_INSTALLED",
+ (DWORD) ERROR_UNKNOWN_PORT, "ERROR_UNKNOWN_PORT",
+ (DWORD) ERROR_UNKNOWN_PRINTER_DRIVER, "ERROR_UNKNOWN_PRINTER_DRIVER",
+ (DWORD) ERROR_UNKNOWN_PRINTPROCESSOR, "ERROR_UNKNOWN_PRINTPROCESSOR",
+ (DWORD) ERROR_INVALID_SEPARATOR_FILE, "ERROR_INVALID_SEPARATOR_FILE",
+ (DWORD) ERROR_INVALID_PRIORITY, "ERROR_INVALID_PRIORITY",
+ (DWORD) ERROR_INVALID_PRINTER_NAME, "ERROR_INVALID_PRINTER_NAME",
+ (DWORD) ERROR_PRINTER_ALREADY_EXISTS, "ERROR_PRINTER_ALREADY_EXISTS",
+ (DWORD) ERROR_INVALID_PRINTER_COMMAND, "ERROR_INVALID_PRINTER_COMMAND",
+ (DWORD) ERROR_INVALID_DATATYPE, "ERROR_INVALID_DATATYPE",
+ (DWORD) ERROR_INVALID_ENVIRONMENT, "ERROR_INVALID_ENVIRONMENT",
+ (DWORD) RPC_S_NO_MORE_BINDINGS, "RPC_S_NO_MORE_BINDINGS",
+ (DWORD) ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, "ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT",
+ (DWORD) ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT, "ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT",
+ (DWORD) ERROR_NOLOGON_SERVER_TRUST_ACCOUNT, "ERROR_NOLOGON_SERVER_TRUST_ACCOUNT",
+ (DWORD) ERROR_DOMAIN_TRUST_INCONSISTENT, "ERROR_DOMAIN_TRUST_INCONSISTENT",
+ (DWORD) ERROR_SERVER_HAS_OPEN_HANDLES, "ERROR_SERVER_HAS_OPEN_HANDLES",
+ (DWORD) ERROR_RESOURCE_DATA_NOT_FOUND, "ERROR_RESOURCE_DATA_NOT_FOUND",
+ (DWORD) ERROR_RESOURCE_TYPE_NOT_FOUND, "ERROR_RESOURCE_TYPE_NOT_FOUND",
+ (DWORD) ERROR_RESOURCE_NAME_NOT_FOUND, "ERROR_RESOURCE_NAME_NOT_FOUND",
+ (DWORD) ERROR_RESOURCE_LANG_NOT_FOUND, "ERROR_RESOURCE_LANG_NOT_FOUND",
+ (DWORD) ERROR_NOT_ENOUGH_QUOTA, "ERROR_NOT_ENOUGH_QUOTA",
+ (DWORD) RPC_S_NO_INTERFACES, "RPC_S_NO_INTERFACES",
+ (DWORD) RPC_S_CALL_CANCELLED, "RPC_S_CALL_CANCELLED",
+ (DWORD) RPC_S_BINDING_INCOMPLETE, "RPC_S_BINDING_INCOMPLETE",
+ (DWORD) RPC_S_COMM_FAILURE, "RPC_S_COMM_FAILURE",
+ (DWORD) RPC_S_UNSUPPORTED_AUTHN_LEVEL, "RPC_S_UNSUPPORTED_AUTHN_LEVEL",
+ (DWORD) RPC_S_NO_PRINC_NAME, "RPC_S_NO_PRINC_NAME",
+ (DWORD) RPC_S_NOT_RPC_ERROR, "RPC_S_NOT_RPC_ERROR",
+ (DWORD) RPC_S_UUID_LOCAL_ONLY, "RPC_S_UUID_LOCAL_ONLY",
+ (DWORD) RPC_S_SEC_PKG_ERROR, "RPC_S_SEC_PKG_ERROR",
+ (DWORD) RPC_S_NOT_CANCELLED, "RPC_S_NOT_CANCELLED",
+ (DWORD) RPC_X_INVALID_ES_ACTION, "RPC_X_INVALID_ES_ACTION",
+ (DWORD) RPC_X_WRONG_ES_VERSION, "RPC_X_WRONG_ES_VERSION",
+ (DWORD) RPC_X_WRONG_STUB_VERSION, "RPC_X_WRONG_STUB_VERSION",
+ (DWORD) RPC_X_INVALID_PIPE_OBJECT, "RPC_X_INVALID_PIPE_OBJECT",
+ (DWORD) RPC_X_INVALID_PIPE_OPERATION, "RPC_X_INVALID_PIPE_OPERATION",
+ (DWORD) RPC_X_WRONG_PIPE_VERSION, "RPC_X_WRONG_PIPE_VERSION",
+ (DWORD) RPC_S_GROUP_MEMBER_NOT_FOUND, "RPC_S_GROUP_MEMBER_NOT_FOUND",
+ (DWORD) EPT_S_CANT_CREATE, "EPT_S_CANT_CREATE",
+ (DWORD) RPC_S_INVALID_OBJECT, "RPC_S_INVALID_OBJECT",
+ (DWORD) ERROR_INVALID_TIME, "ERROR_INVALID_TIME",
+ (DWORD) ERROR_INVALID_FORM_NAME, "ERROR_INVALID_FORM_NAME",
+ (DWORD) ERROR_INVALID_FORM_SIZE, "ERROR_INVALID_FORM_SIZE",
+ (DWORD) ERROR_ALREADY_WAITING, "ERROR_ALREADY_WAITING",
+ (DWORD) ERROR_PRINTER_DELETED, "ERROR_PRINTER_DELETED",
+ (DWORD) ERROR_INVALID_PRINTER_STATE, "ERROR_INVALID_PRINTER_STATE",
+ (DWORD) ERROR_PASSWORD_MUST_CHANGE, "ERROR_PASSWORD_MUST_CHANGE",
+ (DWORD) ERROR_DOMAIN_CONTROLLER_NOT_FOUND, "ERROR_DOMAIN_CONTROLLER_NOT_FOUND",
+ (DWORD) ERROR_ACCOUNT_LOCKED_OUT, "ERROR_ACCOUNT_LOCKED_OUT",
+ (DWORD) OR_INVALID_OXID, "OR_INVALID_OXID",
+ (DWORD) OR_INVALID_OID, "OR_INVALID_OID",
+ (DWORD) OR_INVALID_SET, "OR_INVALID_SET",
+ (DWORD) RPC_S_SEND_INCOMPLETE, "RPC_S_SEND_INCOMPLETE",
+ (DWORD) ERROR_NO_BROWSER_SERVERS_FOUND, "ERROR_NO_BROWSER_SERVERS_FOUND",
+ (DWORD) ERROR_INVALID_PIXEL_FORMAT, "ERROR_INVALID_PIXEL_FORMAT",
+ (DWORD) ERROR_BAD_DRIVER, "ERROR_BAD_DRIVER",
+ (DWORD) ERROR_INVALID_WINDOW_STYLE, "ERROR_INVALID_WINDOW_STYLE",
+ (DWORD) ERROR_METAFILE_NOT_SUPPORTED, "ERROR_METAFILE_NOT_SUPPORTED",
+ (DWORD) ERROR_TRANSFORM_NOT_SUPPORTED, "ERROR_TRANSFORM_NOT_SUPPORTED",
+ (DWORD) ERROR_CLIPPING_NOT_SUPPORTED, "ERROR_CLIPPING_NOT_SUPPORTED",
+ (DWORD) ERROR_UNKNOWN_PRINT_MONITOR, "ERROR_UNKNOWN_PRINT_MONITOR",
+ (DWORD) ERROR_PRINTER_DRIVER_IN_USE, "ERROR_PRINTER_DRIVER_IN_USE",
+ (DWORD) ERROR_SPOOL_FILE_NOT_FOUND, "ERROR_SPOOL_FILE_NOT_FOUND",
+ (DWORD) ERROR_SPL_NO_STARTDOC, "ERROR_SPL_NO_STARTDOC",
+ (DWORD) ERROR_SPL_NO_ADDJOB, "ERROR_SPL_NO_ADDJOB",
+ (DWORD) ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED, "ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED",
+ (DWORD) ERROR_PRINT_MONITOR_ALREADY_INSTALLED, "ERROR_PRINT_MONITOR_ALREADY_INSTALLED",
+ (DWORD) ERROR_INVALID_PRINT_MONITOR, "ERROR_INVALID_PRINT_MONITOR",
+ (DWORD) ERROR_PRINT_MONITOR_IN_USE, "ERROR_PRINT_MONITOR_IN_USE",
+ (DWORD) ERROR_PRINTER_HAS_JOBS_QUEUED, "ERROR_PRINTER_HAS_JOBS_QUEUED",
+ (DWORD) ERROR_SUCCESS_REBOOT_REQUIRED, "ERROR_SUCCESS_REBOOT_REQUIRED",
+ (DWORD) ERROR_SUCCESS_RESTART_REQUIRED, "ERROR_SUCCESS_RESTART_REQUIRED",
+ (DWORD) ERROR_WINS_INTERNAL, "ERROR_WINS_INTERNAL",
+ (DWORD) ERROR_CAN_NOT_DEL_LOCAL_WINS, "ERROR_CAN_NOT_DEL_LOCAL_WINS",
+ (DWORD) ERROR_STATIC_INIT, "ERROR_STATIC_INIT",
+ (DWORD) ERROR_INC_BACKUP, "ERROR_INC_BACKUP",
+ (DWORD) ERROR_FULL_BACKUP, "ERROR_FULL_BACKUP",
+ (DWORD) ERROR_REC_NON_EXISTENT, "ERROR_REC_NON_EXISTENT",
+ (DWORD) ERROR_RPL_NOT_ALLOWED, "ERROR_RPL_NOT_ALLOWED",
+ (DWORD) ERROR_DHCP_ADDRESS_CONFLICT, "ERROR_DHCP_ADDRESS_CONFLICT",
+ (DWORD) E_UNEXPECTED, "E_UNEXPECTED",
+ (DWORD) E_NOTIMPL, "E_NOTIMPL",
+ (DWORD) E_OUTOFMEMORY, "E_OUTOFMEMORY",
+ (DWORD) E_INVALIDARG, "E_INVALIDARG",
+ (DWORD) E_NOINTERFACE, "E_NOINTERFACE",
+ (DWORD) E_POINTER, "E_POINTER",
+ (DWORD) E_HANDLE, "E_HANDLE",
+ (DWORD) E_ABORT, "E_ABORT",
+ (DWORD) E_FAIL, "E_FAIL",
+ (DWORD) E_ACCESSDENIED, "E_ACCESSDENIED",
+ (DWORD) E_NOTIMPL, "E_NOTIMPL",
+ (DWORD) E_OUTOFMEMORY, "E_OUTOFMEMORY",
+ (DWORD) E_INVALIDARG, "E_INVALIDARG",
+ (DWORD) E_NOINTERFACE, "E_NOINTERFACE",
+ (DWORD) E_POINTER, "E_POINTER",
+ (DWORD) E_HANDLE, "E_HANDLE",
+ (DWORD) E_ABORT, "E_ABORT",
+ (DWORD) E_FAIL, "E_FAIL",
+ (DWORD) E_ACCESSDENIED, "E_ACCESSDENIED",
+ (DWORD) E_PENDING, "E_PENDING",
+ (DWORD) CO_E_INIT_TLS, "CO_E_INIT_TLS",
+ (DWORD) CO_E_INIT_SHARED_ALLOCATOR, "CO_E_INIT_SHARED_ALLOCATOR",
+ (DWORD) CO_E_INIT_MEMORY_ALLOCATOR, "CO_E_INIT_MEMORY_ALLOCATOR",
+ (DWORD) CO_E_INIT_CLASS_CACHE, "CO_E_INIT_CLASS_CACHE",
+ (DWORD) CO_E_INIT_RPC_CHANNEL, "CO_E_INIT_RPC_CHANNEL",
+ (DWORD) CO_E_INIT_TLS_SET_CHANNEL_CONTROL, "CO_E_INIT_TLS_SET_CHANNEL_CONTROL",
+ (DWORD) CO_E_INIT_TLS_CHANNEL_CONTROL, "CO_E_INIT_TLS_CHANNEL_CONTROL",
+ (DWORD) CO_E_INIT_UNACCEPTED_USER_ALLOCATOR, "CO_E_INIT_UNACCEPTED_USER_ALLOCATOR",
+ (DWORD) CO_E_INIT_SCM_MUTEX_EXISTS, "CO_E_INIT_SCM_MUTEX_EXISTS",
+ (DWORD) CO_E_INIT_SCM_FILE_MAPPING_EXISTS, "CO_E_INIT_SCM_FILE_MAPPING_EXISTS",
+ (DWORD) CO_E_INIT_SCM_MAP_VIEW_OF_FILE, "CO_E_INIT_SCM_MAP_VIEW_OF_FILE",
+ (DWORD) CO_E_INIT_SCM_EXEC_FAILURE, "CO_E_INIT_SCM_EXEC_FAILURE",
+ (DWORD) CO_E_INIT_ONLY_SINGLE_THREADED, "CO_E_INIT_ONLY_SINGLE_THREADED",
+ (DWORD) CO_E_CANT_REMOTE, "CO_E_CANT_REMOTE",
+ (DWORD) CO_E_BAD_SERVER_NAME, "CO_E_BAD_SERVER_NAME",
+ (DWORD) CO_E_WRONG_SERVER_IDENTITY, "CO_E_WRONG_SERVER_IDENTITY",
+ (DWORD) CO_E_OLE1DDE_DISABLED, "CO_E_OLE1DDE_DISABLED",
+ (DWORD) CO_E_RUNAS_SYNTAX, "CO_E_RUNAS_SYNTAX",
+ (DWORD) CO_E_CREATEPROCESS_FAILURE, "CO_E_CREATEPROCESS_FAILURE",
+ (DWORD) CO_E_RUNAS_CREATEPROCESS_FAILURE, "CO_E_RUNAS_CREATEPROCESS_FAILURE",
+ (DWORD) CO_E_RUNAS_LOGON_FAILURE, "CO_E_RUNAS_LOGON_FAILURE",
+ (DWORD) CO_E_LAUNCH_PERMSSION_DENIED, "CO_E_LAUNCH_PERMSSION_DENIED",
+ (DWORD) CO_E_START_SERVICE_FAILURE, "CO_E_START_SERVICE_FAILURE",
+ (DWORD) CO_E_REMOTE_COMMUNICATION_FAILURE, "CO_E_REMOTE_COMMUNICATION_FAILURE",
+ (DWORD) CO_E_SERVER_START_TIMEOUT, "CO_E_SERVER_START_TIMEOUT",
+ (DWORD) CO_E_CLSREG_INCONSISTENT, "CO_E_CLSREG_INCONSISTENT",
+ (DWORD) CO_E_IIDREG_INCONSISTENT, "CO_E_IIDREG_INCONSISTENT",
+ (DWORD) CO_E_NOT_SUPPORTED, "CO_E_NOT_SUPPORTED",
+ (DWORD) OLE_E_OLEVERB, "OLE_E_OLEVERB",
+ (DWORD) OLE_E_ADVF, "OLE_E_ADVF",
+ (DWORD) OLE_E_ENUM_NOMORE, "OLE_E_ENUM_NOMORE",
+ (DWORD) OLE_E_ADVISENOTSUPPORTED, "OLE_E_ADVISENOTSUPPORTED",
+ (DWORD) OLE_E_NOCONNECTION, "OLE_E_NOCONNECTION",
+ (DWORD) OLE_E_NOTRUNNING, "OLE_E_NOTRUNNING",
+ (DWORD) OLE_E_NOCACHE, "OLE_E_NOCACHE",
+ (DWORD) OLE_E_BLANK, "OLE_E_BLANK",
+ (DWORD) OLE_E_CLASSDIFF, "OLE_E_CLASSDIFF",
+ (DWORD) OLE_E_CANT_GETMONIKER, "OLE_E_CANT_GETMONIKER",
+ (DWORD) OLE_E_CANT_BINDTOSOURCE, "OLE_E_CANT_BINDTOSOURCE",
+ (DWORD) OLE_E_STATIC, "OLE_E_STATIC",
+ (DWORD) OLE_E_PROMPTSAVECANCELLED, "OLE_E_PROMPTSAVECANCELLED",
+ (DWORD) OLE_E_INVALIDRECT, "OLE_E_INVALIDRECT",
+ (DWORD) OLE_E_WRONGCOMPOBJ, "OLE_E_WRONGCOMPOBJ",
+ (DWORD) OLE_E_INVALIDHWND, "OLE_E_INVALIDHWND",
+ (DWORD) OLE_E_NOT_INPLACEACTIVE, "OLE_E_NOT_INPLACEACTIVE",
+ (DWORD) OLE_E_CANTCONVERT, "OLE_E_CANTCONVERT",
+ (DWORD) OLE_E_NOSTORAGE, "OLE_E_NOSTORAGE",
+ (DWORD) DV_E_FORMATETC, "DV_E_FORMATETC",
+ (DWORD) DV_E_DVTARGETDEVICE, "DV_E_DVTARGETDEVICE",
+ (DWORD) DV_E_STGMEDIUM, "DV_E_STGMEDIUM",
+ (DWORD) DV_E_STATDATA, "DV_E_STATDATA",
+ (DWORD) DV_E_LINDEX, "DV_E_LINDEX",
+ (DWORD) DV_E_TYMED, "DV_E_TYMED",
+ (DWORD) DV_E_CLIPFORMAT, "DV_E_CLIPFORMAT",
+ (DWORD) DV_E_DVASPECT, "DV_E_DVASPECT",
+ (DWORD) DV_E_DVTARGETDEVICE_SIZE, "DV_E_DVTARGETDEVICE_SIZE",
+ (DWORD) DV_E_NOIVIEWOBJECT, "DV_E_NOIVIEWOBJECT",
+ (DWORD) DRAGDROP_E_NOTREGISTERED, "DRAGDROP_E_NOTREGISTERED",
+ (DWORD) DRAGDROP_E_ALREADYREGISTERED, "DRAGDROP_E_ALREADYREGISTERED",
+ (DWORD) DRAGDROP_E_INVALIDHWND, "DRAGDROP_E_INVALIDHWND",
+ (DWORD) CLASS_E_NOAGGREGATION, "CLASS_E_NOAGGREGATION",
+ (DWORD) CLASS_E_CLASSNOTAVAILABLE, "CLASS_E_CLASSNOTAVAILABLE",
+ (DWORD) VIEW_E_DRAW, "VIEW_E_DRAW",
+ (DWORD) REGDB_E_READREGDB, "REGDB_E_READREGDB",
+ (DWORD) REGDB_E_WRITEREGDB, "REGDB_E_WRITEREGDB",
+ (DWORD) REGDB_E_KEYMISSING, "REGDB_E_KEYMISSING",
+ (DWORD) REGDB_E_INVALIDVALUE, "REGDB_E_INVALIDVALUE",
+ (DWORD) REGDB_E_CLASSNOTREG, "REGDB_E_CLASSNOTREG",
+ (DWORD) REGDB_E_IIDNOTREG, "REGDB_E_IIDNOTREG",
+ (DWORD) CACHE_E_NOCACHE_UPDATED, "CACHE_E_NOCACHE_UPDATED",
+ (DWORD) OLEOBJ_E_NOVERBS, "OLEOBJ_E_NOVERBS",
+ (DWORD) OLEOBJ_E_INVALIDVERB, "OLEOBJ_E_INVALIDVERB",
+ (DWORD) INPLACE_E_NOTUNDOABLE, "INPLACE_E_NOTUNDOABLE",
+ (DWORD) INPLACE_E_NOTOOLSPACE, "INPLACE_E_NOTOOLSPACE",
+ (DWORD) CONVERT10_E_OLESTREAM_GET, "CONVERT10_E_OLESTREAM_GET",
+ (DWORD) CONVERT10_E_OLESTREAM_PUT, "CONVERT10_E_OLESTREAM_PUT",
+ (DWORD) CONVERT10_E_OLESTREAM_FMT, "CONVERT10_E_OLESTREAM_FMT",
+ (DWORD) CONVERT10_E_OLESTREAM_BITMAP_TO_DIB, "CONVERT10_E_OLESTREAM_BITMAP_TO_DIB",
+ (DWORD) CONVERT10_E_STG_FMT, "CONVERT10_E_STG_FMT",
+ (DWORD) CONVERT10_E_STG_NO_STD_STREAM, "CONVERT10_E_STG_NO_STD_STREAM",
+ (DWORD) CONVERT10_E_STG_DIB_TO_BITMAP, "CONVERT10_E_STG_DIB_TO_BITMAP",
+ (DWORD) CLIPBRD_E_CANT_OPEN, "CLIPBRD_E_CANT_OPEN",
+ (DWORD) CLIPBRD_E_CANT_EMPTY, "CLIPBRD_E_CANT_EMPTY",
+ (DWORD) CLIPBRD_E_CANT_SET, "CLIPBRD_E_CANT_SET",
+ (DWORD) CLIPBRD_E_BAD_DATA, "CLIPBRD_E_BAD_DATA",
+ (DWORD) CLIPBRD_E_CANT_CLOSE, "CLIPBRD_E_CANT_CLOSE",
+ (DWORD) MK_E_CONNECTMANUALLY, "MK_E_CONNECTMANUALLY",
+ (DWORD) MK_E_EXCEEDEDDEADLINE, "MK_E_EXCEEDEDDEADLINE",
+ (DWORD) MK_E_NEEDGENERIC, "MK_E_NEEDGENERIC",
+ (DWORD) MK_E_UNAVAILABLE, "MK_E_UNAVAILABLE",
+ (DWORD) MK_E_SYNTAX, "MK_E_SYNTAX",
+ (DWORD) MK_E_NOOBJECT, "MK_E_NOOBJECT",
+ (DWORD) MK_E_INVALIDEXTENSION, "MK_E_INVALIDEXTENSION",
+ (DWORD) MK_E_INTERMEDIATEINTERFACENOTSUPPORTED, "MK_E_INTERMEDIATEINTERFACENOTSUPPORTED",
+ (DWORD) MK_E_NOTBINDABLE, "MK_E_NOTBINDABLE",
+ (DWORD) MK_E_NOTBOUND, "MK_E_NOTBOUND",
+ (DWORD) MK_E_CANTOPENFILE, "MK_E_CANTOPENFILE",
+ (DWORD) MK_E_MUSTBOTHERUSER, "MK_E_MUSTBOTHERUSER",
+ (DWORD) MK_E_NOINVERSE, "MK_E_NOINVERSE",
+ (DWORD) MK_E_NOSTORAGE, "MK_E_NOSTORAGE",
+ (DWORD) MK_E_NOPREFIX, "MK_E_NOPREFIX",
+ (DWORD) MK_E_ENUMERATION_FAILED, "MK_E_ENUMERATION_FAILED",
+ (DWORD) CO_E_NOTINITIALIZED, "CO_E_NOTINITIALIZED",
+ (DWORD) CO_E_ALREADYINITIALIZED, "CO_E_ALREADYINITIALIZED",
+ (DWORD) CO_E_CANTDETERMINECLASS, "CO_E_CANTDETERMINECLASS",
+ (DWORD) CO_E_CLASSSTRING, "CO_E_CLASSSTRING",
+ (DWORD) CO_E_IIDSTRING, "CO_E_IIDSTRING",
+ (DWORD) CO_E_APPNOTFOUND, "CO_E_APPNOTFOUND",
+ (DWORD) CO_E_APPSINGLEUSE, "CO_E_APPSINGLEUSE",
+ (DWORD) CO_E_ERRORINAPP, "CO_E_ERRORINAPP",
+ (DWORD) CO_E_DLLNOTFOUND, "CO_E_DLLNOTFOUND",
+ (DWORD) CO_E_ERRORINDLL, "CO_E_ERRORINDLL",
+ (DWORD) CO_E_WRONGOSFORAPP, "CO_E_WRONGOSFORAPP",
+ (DWORD) CO_E_OBJNOTREG, "CO_E_OBJNOTREG",
+ (DWORD) CO_E_OBJISREG, "CO_E_OBJISREG",
+ (DWORD) CO_E_OBJNOTCONNECTED, "CO_E_OBJNOTCONNECTED",
+ (DWORD) CO_E_APPDIDNTREG, "CO_E_APPDIDNTREG",
+ (DWORD) CO_E_RELEASED, "CO_E_RELEASED",
+ (DWORD) CO_E_FAILEDTOIMPERSONATE, "CO_E_FAILEDTOIMPERSONATE",
+ (DWORD) CO_E_FAILEDTOGETSECCTX, "CO_E_FAILEDTOGETSECCTX",
+ (DWORD) CO_E_FAILEDTOOPENTHREADTOKEN, "CO_E_FAILEDTOOPENTHREADTOKEN",
+ (DWORD) CO_E_FAILEDTOGETTOKENINFO, "CO_E_FAILEDTOGETTOKENINFO",
+ (DWORD) CO_E_TRUSTEEDOESNTMATCHCLIENT, "CO_E_TRUSTEEDOESNTMATCHCLIENT",
+ (DWORD) CO_E_FAILEDTOQUERYCLIENTBLANKET, "CO_E_FAILEDTOQUERYCLIENTBLANKET",
+ (DWORD) CO_E_FAILEDTOSETDACL, "CO_E_FAILEDTOSETDACL",
+ (DWORD) CO_E_ACCESSCHECKFAILED, "CO_E_ACCESSCHECKFAILED",
+ (DWORD) CO_E_NETACCESSAPIFAILED, "CO_E_NETACCESSAPIFAILED",
+ (DWORD) CO_E_WRONGTRUSTEENAMESYNTAX, "CO_E_WRONGTRUSTEENAMESYNTAX",
+ (DWORD) CO_E_INVALIDSID, "CO_E_INVALIDSID",
+ (DWORD) CO_E_CONVERSIONFAILED, "CO_E_CONVERSIONFAILED",
+ (DWORD) CO_E_NOMATCHINGSIDFOUND, "CO_E_NOMATCHINGSIDFOUND",
+ (DWORD) CO_E_LOOKUPACCSIDFAILED, "CO_E_LOOKUPACCSIDFAILED",
+ (DWORD) CO_E_NOMATCHINGNAMEFOUND, "CO_E_NOMATCHINGNAMEFOUND",
+ (DWORD) CO_E_LOOKUPACCNAMEFAILED, "CO_E_LOOKUPACCNAMEFAILED",
+ (DWORD) CO_E_SETSERLHNDLFAILED, "CO_E_SETSERLHNDLFAILED",
+ (DWORD) CO_E_FAILEDTOGETWINDIR, "CO_E_FAILEDTOGETWINDIR",
+ (DWORD) CO_E_PATHTOOLONG, "CO_E_PATHTOOLONG",
+ (DWORD) CO_E_FAILEDTOGENUUID, "CO_E_FAILEDTOGENUUID",
+ (DWORD) CO_E_FAILEDTOCREATEFILE, "CO_E_FAILEDTOCREATEFILE",
+ (DWORD) CO_E_FAILEDTOCLOSEHANDLE, "CO_E_FAILEDTOCLOSEHANDLE",
+ (DWORD) CO_E_EXCEEDSYSACLLIMIT, "CO_E_EXCEEDSYSACLLIMIT",
+ (DWORD) CO_E_ACESINWRONGORDER, "CO_E_ACESINWRONGORDER",
+ (DWORD) CO_E_INCOMPATIBLESTREAMVERSION, "CO_E_INCOMPATIBLESTREAMVERSION",
+ (DWORD) CO_E_FAILEDTOOPENPROCESSTOKEN, "CO_E_FAILEDTOOPENPROCESSTOKEN",
+ (DWORD) CO_E_DECODEFAILED, "CO_E_DECODEFAILED",
+ (DWORD) CO_E_ACNOTINITIALIZED, "CO_E_ACNOTINITIALIZED",
+ (DWORD) OLE_S_USEREG, "OLE_S_USEREG",
+ (DWORD) OLE_S_STATIC, "OLE_S_STATIC",
+ (DWORD) OLE_S_MAC_CLIPFORMAT, "OLE_S_MAC_CLIPFORMAT",
+ (DWORD) DRAGDROP_S_DROP, "DRAGDROP_S_DROP",
+ (DWORD) DRAGDROP_S_CANCEL, "DRAGDROP_S_CANCEL",
+ (DWORD) DRAGDROP_S_USEDEFAULTCURSORS, "DRAGDROP_S_USEDEFAULTCURSORS",
+ (DWORD) DATA_S_SAMEFORMATETC, "DATA_S_SAMEFORMATETC",
+ (DWORD) VIEW_S_ALREADY_FROZEN, "VIEW_S_ALREADY_FROZEN",
+ (DWORD) CACHE_S_FORMATETC_NOTSUPPORTED, "CACHE_S_FORMATETC_NOTSUPPORTED",
+ (DWORD) CACHE_S_SAMECACHE, "CACHE_S_SAMECACHE",
+ (DWORD) CACHE_S_SOMECACHES_NOTUPDATED, "CACHE_S_SOMECACHES_NOTUPDATED",
+ (DWORD) OLEOBJ_S_INVALIDVERB, "OLEOBJ_S_INVALIDVERB",
+ (DWORD) OLEOBJ_S_CANNOT_DOVERB_NOW, "OLEOBJ_S_CANNOT_DOVERB_NOW",
+ (DWORD) OLEOBJ_S_INVALIDHWND, "OLEOBJ_S_INVALIDHWND",
+ (DWORD) INPLACE_S_TRUNCATED, "INPLACE_S_TRUNCATED",
+ (DWORD) CONVERT10_S_NO_PRESENTATION, "CONVERT10_S_NO_PRESENTATION",
+ (DWORD) MK_S_REDUCED_TO_SELF, "MK_S_REDUCED_TO_SELF",
+ (DWORD) MK_S_ME, "MK_S_ME",
+ (DWORD) MK_S_HIM, "MK_S_HIM",
+ (DWORD) MK_S_US, "MK_S_US",
+ (DWORD) MK_S_MONIKERALREADYREGISTERED, "MK_S_MONIKERALREADYREGISTERED",
+ (DWORD) CO_E_CLASS_CREATE_FAILED, "CO_E_CLASS_CREATE_FAILED",
+ (DWORD) CO_E_SCM_ERROR, "CO_E_SCM_ERROR",
+ (DWORD) CO_E_SCM_RPC_FAILURE, "CO_E_SCM_RPC_FAILURE",
+ (DWORD) CO_E_BAD_PATH, "CO_E_BAD_PATH",
+ (DWORD) CO_E_SERVER_EXEC_FAILURE, "CO_E_SERVER_EXEC_FAILURE",
+ (DWORD) CO_E_OBJSRV_RPC_FAILURE, "CO_E_OBJSRV_RPC_FAILURE",
+ (DWORD) MK_E_NO_NORMALIZED, "MK_E_NO_NORMALIZED",
+ (DWORD) CO_E_SERVER_STOPPING, "CO_E_SERVER_STOPPING",
+ (DWORD) MEM_E_INVALID_ROOT, "MEM_E_INVALID_ROOT",
+ (DWORD) MEM_E_INVALID_LINK, "MEM_E_INVALID_LINK",
+ (DWORD) MEM_E_INVALID_SIZE, "MEM_E_INVALID_SIZE",
+ (DWORD) CO_S_NOTALLINTERFACES, "CO_S_NOTALLINTERFACES",
+ (DWORD) DISP_E_UNKNOWNINTERFACE, "DISP_E_UNKNOWNINTERFACE",
+ (DWORD) DISP_E_MEMBERNOTFOUND, "DISP_E_MEMBERNOTFOUND",
+ (DWORD) DISP_E_PARAMNOTFOUND, "DISP_E_PARAMNOTFOUND",
+ (DWORD) DISP_E_TYPEMISMATCH, "DISP_E_TYPEMISMATCH",
+ (DWORD) DISP_E_UNKNOWNNAME, "DISP_E_UNKNOWNNAME",
+ (DWORD) DISP_E_NONAMEDARGS, "DISP_E_NONAMEDARGS",
+ (DWORD) DISP_E_BADVARTYPE, "DISP_E_BADVARTYPE",
+ (DWORD) DISP_E_EXCEPTION, "DISP_E_EXCEPTION",
+ (DWORD) DISP_E_OVERFLOW, "DISP_E_OVERFLOW",
+ (DWORD) DISP_E_BADINDEX, "DISP_E_BADINDEX",
+ (DWORD) DISP_E_UNKNOWNLCID, "DISP_E_UNKNOWNLCID",
+ (DWORD) DISP_E_ARRAYISLOCKED, "DISP_E_ARRAYISLOCKED",
+ (DWORD) DISP_E_BADPARAMCOUNT, "DISP_E_BADPARAMCOUNT",
+ (DWORD) DISP_E_PARAMNOTOPTIONAL, "DISP_E_PARAMNOTOPTIONAL",
+ (DWORD) DISP_E_BADCALLEE, "DISP_E_BADCALLEE",
+ (DWORD) DISP_E_NOTACOLLECTION, "DISP_E_NOTACOLLECTION",
+ (DWORD) TYPE_E_BUFFERTOOSMALL, "TYPE_E_BUFFERTOOSMALL",
+ (DWORD) TYPE_E_INVDATAREAD, "TYPE_E_INVDATAREAD",
+ (DWORD) TYPE_E_UNSUPFORMAT, "TYPE_E_UNSUPFORMAT",
+ (DWORD) TYPE_E_REGISTRYACCESS, "TYPE_E_REGISTRYACCESS",
+ (DWORD) TYPE_E_LIBNOTREGISTERED, "TYPE_E_LIBNOTREGISTERED",
+ (DWORD) TYPE_E_UNDEFINEDTYPE, "TYPE_E_UNDEFINEDTYPE",
+ (DWORD) TYPE_E_QUALIFIEDNAMEDISALLOWED, "TYPE_E_QUALIFIEDNAMEDISALLOWED",
+ (DWORD) TYPE_E_INVALIDSTATE, "TYPE_E_INVALIDSTATE",
+ (DWORD) TYPE_E_WRONGTYPEKIND, "TYPE_E_WRONGTYPEKIND",
+ (DWORD) TYPE_E_ELEMENTNOTFOUND, "TYPE_E_ELEMENTNOTFOUND",
+ (DWORD) TYPE_E_AMBIGUOUSNAME, "TYPE_E_AMBIGUOUSNAME",
+ (DWORD) TYPE_E_NAMECONFLICT, "TYPE_E_NAMECONFLICT",
+ (DWORD) TYPE_E_UNKNOWNLCID, "TYPE_E_UNKNOWNLCID",
+ (DWORD) TYPE_E_DLLFUNCTIONNOTFOUND, "TYPE_E_DLLFUNCTIONNOTFOUND",
+ (DWORD) TYPE_E_BADMODULEKIND, "TYPE_E_BADMODULEKIND",
+ (DWORD) TYPE_E_SIZETOOBIG, "TYPE_E_SIZETOOBIG",
+ (DWORD) TYPE_E_DUPLICATEID, "TYPE_E_DUPLICATEID",
+ (DWORD) TYPE_E_INVALIDID, "TYPE_E_INVALIDID",
+ (DWORD) TYPE_E_TYPEMISMATCH, "TYPE_E_TYPEMISMATCH",
+ (DWORD) TYPE_E_OUTOFBOUNDS, "TYPE_E_OUTOFBOUNDS",
+ (DWORD) TYPE_E_IOERROR, "TYPE_E_IOERROR",
+ (DWORD) TYPE_E_CANTCREATETMPFILE, "TYPE_E_CANTCREATETMPFILE",
+ (DWORD) TYPE_E_CANTLOADLIBRARY, "TYPE_E_CANTLOADLIBRARY",
+ (DWORD) TYPE_E_INCONSISTENTPROPFUNCS, "TYPE_E_INCONSISTENTPROPFUNCS",
+ (DWORD) TYPE_E_CIRCULARTYPE, "TYPE_E_CIRCULARTYPE",
+ (DWORD) STG_E_INVALIDFUNCTION, "STG_E_INVALIDFUNCTION",
+ (DWORD) STG_E_FILENOTFOUND, "STG_E_FILENOTFOUND",
+ (DWORD) STG_E_PATHNOTFOUND, "STG_E_PATHNOTFOUND",
+ (DWORD) STG_E_TOOMANYOPENFILES, "STG_E_TOOMANYOPENFILES",
+ (DWORD) STG_E_ACCESSDENIED, "STG_E_ACCESSDENIED",
+ (DWORD) STG_E_INVALIDHANDLE, "STG_E_INVALIDHANDLE",
+ (DWORD) STG_E_INSUFFICIENTMEMORY, "STG_E_INSUFFICIENTMEMORY",
+ (DWORD) STG_E_INVALIDPOINTER, "STG_E_INVALIDPOINTER",
+ (DWORD) STG_E_NOMOREFILES, "STG_E_NOMOREFILES",
+ (DWORD) STG_E_DISKISWRITEPROTECTED, "STG_E_DISKISWRITEPROTECTED",
+ (DWORD) STG_E_SEEKERROR, "STG_E_SEEKERROR",
+ (DWORD) STG_E_WRITEFAULT, "STG_E_WRITEFAULT",
+ (DWORD) STG_E_READFAULT, "STG_E_READFAULT",
+ (DWORD) STG_E_SHAREVIOLATION, "STG_E_SHAREVIOLATION",
+ (DWORD) STG_E_LOCKVIOLATION, "STG_E_LOCKVIOLATION",
+ (DWORD) STG_E_FILEALREADYEXISTS, "STG_E_FILEALREADYEXISTS",
+ (DWORD) STG_E_INVALIDPARAMETER, "STG_E_INVALIDPARAMETER",
+ (DWORD) STG_E_MEDIUMFULL, "STG_E_MEDIUMFULL",
+ (DWORD) STG_E_PROPSETMISMATCHED, "STG_E_PROPSETMISMATCHED",
+ (DWORD) STG_E_ABNORMALAPIEXIT, "STG_E_ABNORMALAPIEXIT",
+ (DWORD) STG_E_INVALIDHEADER, "STG_E_INVALIDHEADER",
+ (DWORD) STG_E_INVALIDNAME, "STG_E_INVALIDNAME",
+ (DWORD) STG_E_UNKNOWN, "STG_E_UNKNOWN",
+ (DWORD) STG_E_UNIMPLEMENTEDFUNCTION, "STG_E_UNIMPLEMENTEDFUNCTION",
+ (DWORD) STG_E_INVALIDFLAG, "STG_E_INVALIDFLAG",
+ (DWORD) STG_E_INUSE, "STG_E_INUSE",
+ (DWORD) STG_E_NOTCURRENT, "STG_E_NOTCURRENT",
+ (DWORD) STG_E_REVERTED, "STG_E_REVERTED",
+ (DWORD) STG_E_CANTSAVE, "STG_E_CANTSAVE",
+ (DWORD) STG_E_OLDFORMAT, "STG_E_OLDFORMAT",
+ (DWORD) STG_E_OLDDLL, "STG_E_OLDDLL",
+ (DWORD) STG_E_SHAREREQUIRED, "STG_E_SHAREREQUIRED",
+ (DWORD) STG_E_NOTFILEBASEDSTORAGE, "STG_E_NOTFILEBASEDSTORAGE",
+ (DWORD) STG_E_EXTANTMARSHALLINGS, "STG_E_EXTANTMARSHALLINGS",
+ (DWORD) STG_E_DOCFILECORRUPT, "STG_E_DOCFILECORRUPT",
+ (DWORD) STG_E_BADBASEADDRESS, "STG_E_BADBASEADDRESS",
+ (DWORD) STG_E_INCOMPLETE, "STG_E_INCOMPLETE",
+ (DWORD) STG_E_TERMINATED, "STG_E_TERMINATED",
+ (DWORD) STG_S_CONVERTED, "STG_S_CONVERTED",
+ (DWORD) STG_S_BLOCK, "STG_S_BLOCK",
+ (DWORD) STG_S_RETRYNOW, "STG_S_RETRYNOW",
+ (DWORD) STG_S_MONITORING, "STG_S_MONITORING",
+ (DWORD) RPC_E_CALL_REJECTED, "RPC_E_CALL_REJECTED",
+ (DWORD) RPC_E_CALL_CANCELED, "RPC_E_CALL_CANCELED",
+ (DWORD) RPC_E_CANTPOST_INSENDCALL, "RPC_E_CANTPOST_INSENDCALL",
+ (DWORD) RPC_E_CANTCALLOUT_INASYNCCALL, "RPC_E_CANTCALLOUT_INASYNCCALL",
+ (DWORD) RPC_E_CANTCALLOUT_INEXTERNALCALL, "RPC_E_CANTCALLOUT_INEXTERNALCALL",
+ (DWORD) RPC_E_CONNECTION_TERMINATED, "RPC_E_CONNECTION_TERMINATED",
+ (DWORD) RPC_E_SERVER_DIED, "RPC_E_SERVER_DIED",
+ (DWORD) RPC_E_CLIENT_DIED, "RPC_E_CLIENT_DIED",
+ (DWORD) RPC_E_INVALID_DATAPACKET, "RPC_E_INVALID_DATAPACKET",
+ (DWORD) RPC_E_CANTTRANSMIT_CALL, "RPC_E_CANTTRANSMIT_CALL",
+ (DWORD) RPC_E_CLIENT_CANTMARSHAL_DATA, "RPC_E_CLIENT_CANTMARSHAL_DATA",
+ (DWORD) RPC_E_CLIENT_CANTUNMARSHAL_DATA, "RPC_E_CLIENT_CANTUNMARSHAL_DATA",
+ (DWORD) RPC_E_SERVER_CANTMARSHAL_DATA, "RPC_E_SERVER_CANTMARSHAL_DATA",
+ (DWORD) RPC_E_SERVER_CANTUNMARSHAL_DATA, "RPC_E_SERVER_CANTUNMARSHAL_DATA",
+ (DWORD) RPC_E_INVALID_DATA, "RPC_E_INVALID_DATA",
+ (DWORD) RPC_E_INVALID_PARAMETER, "RPC_E_INVALID_PARAMETER",
+ (DWORD) RPC_E_CANTCALLOUT_AGAIN, "RPC_E_CANTCALLOUT_AGAIN",
+ (DWORD) RPC_E_SERVER_DIED_DNE, "RPC_E_SERVER_DIED_DNE",
+ (DWORD) RPC_E_SYS_CALL_FAILED, "RPC_E_SYS_CALL_FAILED",
+ (DWORD) RPC_E_OUT_OF_RESOURCES, "RPC_E_OUT_OF_RESOURCES",
+ (DWORD) RPC_E_ATTEMPTED_MULTITHREAD, "RPC_E_ATTEMPTED_MULTITHREAD",
+ (DWORD) RPC_E_NOT_REGISTERED, "RPC_E_NOT_REGISTERED",
+ (DWORD) RPC_E_FAULT, "RPC_E_FAULT",
+ (DWORD) RPC_E_SERVERFAULT, "RPC_E_SERVERFAULT",
+ (DWORD) RPC_E_CHANGED_MODE, "RPC_E_CHANGED_MODE",
+ (DWORD) RPC_E_INVALIDMETHOD, "RPC_E_INVALIDMETHOD",
+ (DWORD) RPC_E_DISCONNECTED, "RPC_E_DISCONNECTED",
+ (DWORD) RPC_E_RETRY, "RPC_E_RETRY",
+ (DWORD) RPC_E_SERVERCALL_RETRYLATER, "RPC_E_SERVERCALL_RETRYLATER",
+ (DWORD) RPC_E_SERVERCALL_REJECTED, "RPC_E_SERVERCALL_REJECTED",
+ (DWORD) RPC_E_INVALID_CALLDATA, "RPC_E_INVALID_CALLDATA",
+ (DWORD) RPC_E_CANTCALLOUT_ININPUTSYNCCALL, "RPC_E_CANTCALLOUT_ININPUTSYNCCALL",
+ (DWORD) RPC_E_WRONG_THREAD, "RPC_E_WRONG_THREAD",
+ (DWORD) RPC_E_THREAD_NOT_INIT, "RPC_E_THREAD_NOT_INIT",
+ (DWORD) RPC_E_VERSION_MISMATCH, "RPC_E_VERSION_MISMATCH",
+ (DWORD) RPC_E_INVALID_HEADER, "RPC_E_INVALID_HEADER",
+ (DWORD) RPC_E_INVALID_EXTENSION, "RPC_E_INVALID_EXTENSION",
+ (DWORD) RPC_E_INVALID_IPID, "RPC_E_INVALID_IPID",
+ (DWORD) RPC_E_INVALID_OBJECT, "RPC_E_INVALID_OBJECT",
+ (DWORD) RPC_S_CALLPENDING, "RPC_S_CALLPENDING",
+ (DWORD) RPC_S_WAITONTIMER, "RPC_S_WAITONTIMER",
+ (DWORD) RPC_E_CALL_COMPLETE, "RPC_E_CALL_COMPLETE",
+ (DWORD) RPC_E_UNSECURE_CALL, "RPC_E_UNSECURE_CALL",
+ (DWORD) RPC_E_TOO_LATE, "RPC_E_TOO_LATE",
+ (DWORD) RPC_E_NO_GOOD_SECURITY_PACKAGES, "RPC_E_NO_GOOD_SECURITY_PACKAGES",
+ (DWORD) RPC_E_ACCESS_DENIED, "RPC_E_ACCESS_DENIED",
+ (DWORD) RPC_E_REMOTE_DISABLED, "RPC_E_REMOTE_DISABLED",
+ (DWORD) RPC_E_INVALID_OBJREF, "RPC_E_INVALID_OBJREF",
+ (DWORD) RPC_E_UNEXPECTED, "RPC_E_UNEXPECTED",
+ (DWORD) NTE_BAD_UID, "NTE_BAD_UID",
+ (DWORD) NTE_BAD_HASH, "NTE_BAD_HASH",
+ (DWORD) NTE_BAD_KEY, "NTE_BAD_KEY",
+ (DWORD) NTE_BAD_LEN, "NTE_BAD_LEN",
+ (DWORD) NTE_BAD_DATA, "NTE_BAD_DATA",
+ (DWORD) NTE_BAD_SIGNATURE, "NTE_BAD_SIGNATURE",
+ (DWORD) NTE_BAD_VER, "NTE_BAD_VER",
+ (DWORD) NTE_BAD_ALGID, "NTE_BAD_ALGID",
+ (DWORD) NTE_BAD_FLAGS, "NTE_BAD_FLAGS",
+ (DWORD) NTE_BAD_TYPE, "NTE_BAD_TYPE",
+ (DWORD) NTE_BAD_KEY_STATE, "NTE_BAD_KEY_STATE",
+ (DWORD) NTE_BAD_HASH_STATE, "NTE_BAD_HASH_STATE",
+ (DWORD) NTE_NO_KEY, "NTE_NO_KEY",
+ (DWORD) NTE_NO_MEMORY, "NTE_NO_MEMORY",
+ (DWORD) NTE_EXISTS, "NTE_EXISTS",
+ (DWORD) NTE_PERM, "NTE_PERM",
+ (DWORD) NTE_NOT_FOUND, "NTE_NOT_FOUND",
+ (DWORD) NTE_DOUBLE_ENCRYPT, "NTE_DOUBLE_ENCRYPT",
+ (DWORD) NTE_BAD_PROVIDER, "NTE_BAD_PROVIDER",
+ (DWORD) NTE_BAD_PROV_TYPE, "NTE_BAD_PROV_TYPE",
+ (DWORD) NTE_BAD_PUBLIC_KEY, "NTE_BAD_PUBLIC_KEY",
+ (DWORD) NTE_BAD_KEYSET, "NTE_BAD_KEYSET",
+ (DWORD) NTE_PROV_TYPE_NOT_DEF, "NTE_PROV_TYPE_NOT_DEF",
+ (DWORD) NTE_PROV_TYPE_ENTRY_BAD, "NTE_PROV_TYPE_ENTRY_BAD",
+ (DWORD) NTE_KEYSET_NOT_DEF, "NTE_KEYSET_NOT_DEF",
+ (DWORD) NTE_KEYSET_ENTRY_BAD, "NTE_KEYSET_ENTRY_BAD",
+ (DWORD) NTE_PROV_TYPE_NO_MATCH, "NTE_PROV_TYPE_NO_MATCH",
+ (DWORD) NTE_SIGNATURE_FILE_BAD, "NTE_SIGNATURE_FILE_BAD",
+ (DWORD) NTE_PROVIDER_DLL_FAIL, "NTE_PROVIDER_DLL_FAIL",
+ (DWORD) NTE_PROV_DLL_NOT_FOUND, "NTE_PROV_DLL_NOT_FOUND",
+ (DWORD) NTE_BAD_KEYSET_PARAM, "NTE_BAD_KEYSET_PARAM",
+ (DWORD) NTE_FAIL, "NTE_FAIL",
+ (DWORD) NTE_SYS_ERR, "NTE_SYS_ERR",
+ (DWORD) TRUST_E_PROVIDER_UNKNOWN, "TRUST_E_PROVIDER_UNKNOWN",
+ (DWORD) TRUST_E_ACTION_UNKNOWN, "TRUST_E_ACTION_UNKNOWN",
+ (DWORD) TRUST_E_SUBJECT_FORM_UNKNOWN, "TRUST_E_SUBJECT_FORM_UNKNOWN",
+ (DWORD) TRUST_E_SUBJECT_NOT_TRUSTED, "TRUST_E_SUBJECT_NOT_TRUSTED",
+ (DWORD) DIGSIG_E_ENCODE, "DIGSIG_E_ENCODE",
+ (DWORD) DIGSIG_E_DECODE, "DIGSIG_E_DECODE",
+ (DWORD) DIGSIG_E_EXTENSIBILITY, "DIGSIG_E_EXTENSIBILITY",
+ (DWORD) DIGSIG_E_CRYPTO, "DIGSIG_E_CRYPTO",
+ (DWORD) PERSIST_E_SIZEDEFINITE, "PERSIST_E_SIZEDEFINITE",
+ (DWORD) PERSIST_E_SIZEINDEFINITE, "PERSIST_E_SIZEINDEFINITE",
+ (DWORD) PERSIST_E_NOTSELFSIZING, "PERSIST_E_NOTSELFSIZING",
+ (DWORD) TRUST_E_NOSIGNATURE, "TRUST_E_NOSIGNATURE",
+ (DWORD) CERT_E_EXPIRED, "CERT_E_EXPIRED",
+ (DWORD) CERT_E_VALIDIYPERIODNESTING, "CERT_E_VALIDIYPERIODNESTING",
+ (DWORD) CERT_E_ROLE, "CERT_E_ROLE",
+ (DWORD) CERT_E_PATHLENCONST, "CERT_E_PATHLENCONST",
+ (DWORD) CERT_E_CRITICAL, "CERT_E_CRITICAL",
+ (DWORD) CERT_E_PURPOSE, "CERT_E_PURPOSE",
+ (DWORD) CERT_E_ISSUERCHAINING, "CERT_E_ISSUERCHAINING",
+ (DWORD) CERT_E_MALFORMED, "CERT_E_MALFORMED",
+ (DWORD) CERT_E_UNTRUSTEDROOT, "CERT_E_UNTRUSTEDROOT",
+ (DWORD) CERT_E_CHAINING, "CERT_E_CHAINING",
+ (DWORD) 0xFFFFFFFF, NULL
+};
diff --git a/public/sdk/inc/winerror.h b/public/sdk/inc/winerror.h
new file mode 100644
index 000000000..f5c99c24c
--- /dev/null
+++ b/public/sdk/inc/winerror.h
@@ -0,0 +1,10179 @@
+/************************************************************************
+* *
+* winerror.h -- error code definitions for the Win32 API functions *
+* *
+* Copyright (c) 1991-1996, Microsoft Corp. All rights reserved. *
+* *
+************************************************************************/
+
+#ifndef _WINERROR_
+#define _WINERROR_
+
+
+//
+// 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_WINDOWS 8
+#define FACILITY_STORAGE 3
+#define FACILITY_RPC 1
+#define FACILITY_SSPI 9
+#define FACILITY_WIN32 7
+#define FACILITY_CONTROL 10
+#define FACILITY_NULL 0
+#define FACILITY_INTERNET 12
+#define FACILITY_ITF 4
+#define FACILITY_DISPATCH 2
+#define FACILITY_CERT 11
+
+
+//
+// Define the severity codes
+//
+
+
+//
+// MessageId: ERROR_SUCCESS
+//
+// MessageText:
+//
+// The operation completed successfully.
+//
+#define ERROR_SUCCESS 0L
+
+#define NO_ERROR 0L // dderror
+
+//
+// MessageId: ERROR_INVALID_FUNCTION
+//
+// MessageText:
+//
+// Incorrect function.
+//
+#define ERROR_INVALID_FUNCTION 1L // dderror
+
+//
+// MessageId: ERROR_FILE_NOT_FOUND
+//
+// MessageText:
+//
+// The system cannot find the file specified.
+//
+#define ERROR_FILE_NOT_FOUND 2L
+
+//
+// MessageId: ERROR_PATH_NOT_FOUND
+//
+// MessageText:
+//
+// The system cannot find the path specified.
+//
+#define ERROR_PATH_NOT_FOUND 3L
+
+//
+// MessageId: ERROR_TOO_MANY_OPEN_FILES
+//
+// MessageText:
+//
+// The system cannot open the file.
+//
+#define ERROR_TOO_MANY_OPEN_FILES 4L
+
+//
+// MessageId: ERROR_ACCESS_DENIED
+//
+// MessageText:
+//
+// Access is denied.
+//
+#define ERROR_ACCESS_DENIED 5L
+
+//
+// MessageId: ERROR_INVALID_HANDLE
+//
+// MessageText:
+//
+// The handle is invalid.
+//
+#define ERROR_INVALID_HANDLE 6L
+
+//
+// MessageId: ERROR_ARENA_TRASHED
+//
+// MessageText:
+//
+// The storage control blocks were destroyed.
+//
+#define ERROR_ARENA_TRASHED 7L
+
+//
+// MessageId: ERROR_NOT_ENOUGH_MEMORY
+//
+// MessageText:
+//
+// Not enough storage is available to process this command.
+//
+#define ERROR_NOT_ENOUGH_MEMORY 8L // dderror
+
+//
+// MessageId: ERROR_INVALID_BLOCK
+//
+// MessageText:
+//
+// The storage control block address is invalid.
+//
+#define ERROR_INVALID_BLOCK 9L
+
+//
+// MessageId: ERROR_BAD_ENVIRONMENT
+//
+// MessageText:
+//
+// The environment is incorrect.
+//
+#define ERROR_BAD_ENVIRONMENT 10L
+
+//
+// MessageId: ERROR_BAD_FORMAT
+//
+// MessageText:
+//
+// An attempt was made to load a program with an
+// incorrect format.
+//
+#define ERROR_BAD_FORMAT 11L
+
+//
+// MessageId: ERROR_INVALID_ACCESS
+//
+// MessageText:
+//
+// The access code is invalid.
+//
+#define ERROR_INVALID_ACCESS 12L
+
+//
+// MessageId: ERROR_INVALID_DATA
+//
+// MessageText:
+//
+// The data is invalid.
+//
+#define ERROR_INVALID_DATA 13L
+
+//
+// MessageId: ERROR_OUTOFMEMORY
+//
+// MessageText:
+//
+// Not enough storage is available to complete this operation.
+//
+#define ERROR_OUTOFMEMORY 14L
+
+//
+// MessageId: ERROR_INVALID_DRIVE
+//
+// MessageText:
+//
+// The system cannot find the drive specified.
+//
+#define ERROR_INVALID_DRIVE 15L
+
+//
+// MessageId: ERROR_CURRENT_DIRECTORY
+//
+// MessageText:
+//
+// The directory cannot be removed.
+//
+#define ERROR_CURRENT_DIRECTORY 16L
+
+//
+// MessageId: ERROR_NOT_SAME_DEVICE
+//
+// MessageText:
+//
+// The system cannot move the file
+// to a different disk drive.
+//
+#define ERROR_NOT_SAME_DEVICE 17L
+
+//
+// MessageId: ERROR_NO_MORE_FILES
+//
+// MessageText:
+//
+// There are no more files.
+//
+#define ERROR_NO_MORE_FILES 18L
+
+//
+// MessageId: ERROR_WRITE_PROTECT
+//
+// MessageText:
+//
+// The media is write protected.
+//
+#define ERROR_WRITE_PROTECT 19L
+
+//
+// MessageId: ERROR_BAD_UNIT
+//
+// MessageText:
+//
+// The system cannot find the device specified.
+//
+#define ERROR_BAD_UNIT 20L
+
+//
+// MessageId: ERROR_NOT_READY
+//
+// MessageText:
+//
+// The device is not ready.
+//
+#define ERROR_NOT_READY 21L
+
+//
+// MessageId: ERROR_BAD_COMMAND
+//
+// MessageText:
+//
+// The device does not recognize the command.
+//
+#define ERROR_BAD_COMMAND 22L
+
+//
+// MessageId: ERROR_CRC
+//
+// MessageText:
+//
+// Data error (cyclic redundancy check)
+//
+#define ERROR_CRC 23L
+
+//
+// MessageId: ERROR_BAD_LENGTH
+//
+// MessageText:
+//
+// The program issued a command but the
+// command length is incorrect.
+//
+#define ERROR_BAD_LENGTH 24L
+
+//
+// MessageId: ERROR_SEEK
+//
+// MessageText:
+//
+// The drive cannot locate a specific
+// area or track on the disk.
+//
+#define ERROR_SEEK 25L
+
+//
+// MessageId: ERROR_NOT_DOS_DISK
+//
+// MessageText:
+//
+// The specified disk or diskette cannot be accessed.
+//
+#define ERROR_NOT_DOS_DISK 26L
+
+//
+// MessageId: ERROR_SECTOR_NOT_FOUND
+//
+// MessageText:
+//
+// The drive cannot find the sector requested.
+//
+#define ERROR_SECTOR_NOT_FOUND 27L
+
+//
+// MessageId: ERROR_OUT_OF_PAPER
+//
+// MessageText:
+//
+// The printer is out of paper.
+//
+#define ERROR_OUT_OF_PAPER 28L
+
+//
+// MessageId: ERROR_WRITE_FAULT
+//
+// MessageText:
+//
+// The system cannot write to the specified device.
+//
+#define ERROR_WRITE_FAULT 29L
+
+//
+// MessageId: ERROR_READ_FAULT
+//
+// MessageText:
+//
+// The system cannot read from the specified device.
+//
+#define ERROR_READ_FAULT 30L
+
+//
+// MessageId: ERROR_GEN_FAILURE
+//
+// MessageText:
+//
+// A device attached to the system is not functioning.
+//
+#define ERROR_GEN_FAILURE 31L
+
+//
+// MessageId: ERROR_SHARING_VIOLATION
+//
+// MessageText:
+//
+// The process cannot access the file because
+// it is being used by another process.
+//
+#define ERROR_SHARING_VIOLATION 32L
+
+//
+// MessageId: ERROR_LOCK_VIOLATION
+//
+// MessageText:
+//
+// The process cannot access the file because
+// another process has locked a portion of the file.
+//
+#define ERROR_LOCK_VIOLATION 33L
+
+//
+// MessageId: ERROR_WRONG_DISK
+//
+// MessageText:
+//
+// The wrong diskette is in the drive.
+// Insert %2 (Volume Serial Number: %3)
+// into drive %1.
+//
+#define ERROR_WRONG_DISK 34L
+
+//
+// MessageId: ERROR_SHARING_BUFFER_EXCEEDED
+//
+// MessageText:
+//
+// Too many files opened for sharing.
+//
+#define ERROR_SHARING_BUFFER_EXCEEDED 36L
+
+//
+// MessageId: ERROR_HANDLE_EOF
+//
+// MessageText:
+//
+// Reached end of file.
+//
+#define ERROR_HANDLE_EOF 38L
+
+//
+// MessageId: ERROR_HANDLE_DISK_FULL
+//
+// MessageText:
+//
+// The disk is full.
+//
+#define ERROR_HANDLE_DISK_FULL 39L
+
+//
+// MessageId: ERROR_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The network request is not supported.
+//
+#define ERROR_NOT_SUPPORTED 50L
+
+//
+// MessageId: ERROR_REM_NOT_LIST
+//
+// MessageText:
+//
+// The remote computer is not available.
+//
+#define ERROR_REM_NOT_LIST 51L
+
+//
+// MessageId: ERROR_DUP_NAME
+//
+// MessageText:
+//
+// A duplicate name exists on the network.
+//
+#define ERROR_DUP_NAME 52L
+
+//
+// MessageId: ERROR_BAD_NETPATH
+//
+// MessageText:
+//
+// The network path was not found.
+//
+#define ERROR_BAD_NETPATH 53L
+
+//
+// MessageId: ERROR_NETWORK_BUSY
+//
+// MessageText:
+//
+// The network is busy.
+//
+#define ERROR_NETWORK_BUSY 54L
+
+//
+// MessageId: ERROR_DEV_NOT_EXIST
+//
+// MessageText:
+//
+// The specified network resource or device is no longer
+// available.
+//
+#define ERROR_DEV_NOT_EXIST 55L // dderror
+
+//
+// MessageId: ERROR_TOO_MANY_CMDS
+//
+// MessageText:
+//
+// The network BIOS command limit has been reached.
+//
+#define ERROR_TOO_MANY_CMDS 56L
+
+//
+// MessageId: ERROR_ADAP_HDW_ERR
+//
+// MessageText:
+//
+// A network adapter hardware error occurred.
+//
+#define ERROR_ADAP_HDW_ERR 57L
+
+//
+// MessageId: ERROR_BAD_NET_RESP
+//
+// MessageText:
+//
+// The specified server cannot perform the requested
+// operation.
+//
+#define ERROR_BAD_NET_RESP 58L
+
+//
+// MessageId: ERROR_UNEXP_NET_ERR
+//
+// MessageText:
+//
+// An unexpected network error occurred.
+//
+#define ERROR_UNEXP_NET_ERR 59L
+
+//
+// MessageId: ERROR_BAD_REM_ADAP
+//
+// MessageText:
+//
+// The remote adapter is not compatible.
+//
+#define ERROR_BAD_REM_ADAP 60L
+
+//
+// MessageId: ERROR_PRINTQ_FULL
+//
+// MessageText:
+//
+// The printer queue is full.
+//
+#define ERROR_PRINTQ_FULL 61L
+
+//
+// MessageId: ERROR_NO_SPOOL_SPACE
+//
+// MessageText:
+//
+// Space to store the file waiting to be printed is
+// not available on the server.
+//
+#define ERROR_NO_SPOOL_SPACE 62L
+
+//
+// MessageId: ERROR_PRINT_CANCELLED
+//
+// MessageText:
+//
+// Your file waiting to be printed was deleted.
+//
+#define ERROR_PRINT_CANCELLED 63L
+
+//
+// MessageId: ERROR_NETNAME_DELETED
+//
+// MessageText:
+//
+// The specified network name is no longer available.
+//
+#define ERROR_NETNAME_DELETED 64L
+
+//
+// MessageId: ERROR_NETWORK_ACCESS_DENIED
+//
+// MessageText:
+//
+// Network access is denied.
+//
+#define ERROR_NETWORK_ACCESS_DENIED 65L
+
+//
+// MessageId: ERROR_BAD_DEV_TYPE
+//
+// MessageText:
+//
+// The network resource type is not correct.
+//
+#define ERROR_BAD_DEV_TYPE 66L
+
+//
+// MessageId: ERROR_BAD_NET_NAME
+//
+// MessageText:
+//
+// The network name cannot be found.
+//
+#define ERROR_BAD_NET_NAME 67L
+
+//
+// MessageId: ERROR_TOO_MANY_NAMES
+//
+// MessageText:
+//
+// The name limit for the local computer network
+// adapter card was exceeded.
+//
+#define ERROR_TOO_MANY_NAMES 68L
+
+//
+// MessageId: ERROR_TOO_MANY_SESS
+//
+// MessageText:
+//
+// The network BIOS session limit was exceeded.
+//
+#define ERROR_TOO_MANY_SESS 69L
+
+//
+// MessageId: ERROR_SHARING_PAUSED
+//
+// MessageText:
+//
+// The remote server has been paused or is in the
+// process of being started.
+//
+#define ERROR_SHARING_PAUSED 70L
+
+//
+// MessageId: ERROR_REQ_NOT_ACCEP
+//
+// MessageText:
+//
+// No more connections can be made to this remote computer at this time
+// because there are already as many connections as the computer can accept.
+//
+#define ERROR_REQ_NOT_ACCEP 71L
+
+//
+// MessageId: ERROR_REDIR_PAUSED
+//
+// MessageText:
+//
+// The specified printer or disk device has been paused.
+//
+#define ERROR_REDIR_PAUSED 72L
+
+//
+// MessageId: ERROR_FILE_EXISTS
+//
+// MessageText:
+//
+// The file exists.
+//
+#define ERROR_FILE_EXISTS 80L
+
+//
+// MessageId: ERROR_CANNOT_MAKE
+//
+// MessageText:
+//
+// The directory or file cannot be created.
+//
+#define ERROR_CANNOT_MAKE 82L
+
+//
+// MessageId: ERROR_FAIL_I24
+//
+// MessageText:
+//
+// Fail on INT 24
+//
+#define ERROR_FAIL_I24 83L
+
+//
+// MessageId: ERROR_OUT_OF_STRUCTURES
+//
+// MessageText:
+//
+// Storage to process this request is not available.
+//
+#define ERROR_OUT_OF_STRUCTURES 84L
+
+//
+// MessageId: ERROR_ALREADY_ASSIGNED
+//
+// MessageText:
+//
+// The local device name is already in use.
+//
+#define ERROR_ALREADY_ASSIGNED 85L
+
+//
+// MessageId: ERROR_INVALID_PASSWORD
+//
+// MessageText:
+//
+// The specified network password is not correct.
+//
+#define ERROR_INVALID_PASSWORD 86L
+
+//
+// MessageId: ERROR_INVALID_PARAMETER
+//
+// MessageText:
+//
+// The parameter is incorrect.
+//
+#define ERROR_INVALID_PARAMETER 87L // dderror
+
+//
+// MessageId: ERROR_NET_WRITE_FAULT
+//
+// MessageText:
+//
+// A write fault occurred on the network.
+//
+#define ERROR_NET_WRITE_FAULT 88L
+
+//
+// MessageId: ERROR_NO_PROC_SLOTS
+//
+// MessageText:
+//
+// The system cannot start another process at
+// this time.
+//
+#define ERROR_NO_PROC_SLOTS 89L
+
+//
+// MessageId: ERROR_TOO_MANY_SEMAPHORES
+//
+// MessageText:
+//
+// Cannot create another system semaphore.
+//
+#define ERROR_TOO_MANY_SEMAPHORES 100L
+
+//
+// MessageId: ERROR_EXCL_SEM_ALREADY_OWNED
+//
+// MessageText:
+//
+// The exclusive semaphore is owned by another process.
+//
+#define ERROR_EXCL_SEM_ALREADY_OWNED 101L
+
+//
+// MessageId: ERROR_SEM_IS_SET
+//
+// MessageText:
+//
+// The semaphore is set and cannot be closed.
+//
+#define ERROR_SEM_IS_SET 102L
+
+//
+// MessageId: ERROR_TOO_MANY_SEM_REQUESTS
+//
+// MessageText:
+//
+// The semaphore cannot be set again.
+//
+#define ERROR_TOO_MANY_SEM_REQUESTS 103L
+
+//
+// MessageId: ERROR_INVALID_AT_INTERRUPT_TIME
+//
+// MessageText:
+//
+// Cannot request exclusive semaphores at interrupt time.
+//
+#define ERROR_INVALID_AT_INTERRUPT_TIME 104L
+
+//
+// MessageId: ERROR_SEM_OWNER_DIED
+//
+// MessageText:
+//
+// The previous ownership of this semaphore has ended.
+//
+#define ERROR_SEM_OWNER_DIED 105L
+
+//
+// MessageId: ERROR_SEM_USER_LIMIT
+//
+// MessageText:
+//
+// Insert the diskette for drive %1.
+//
+#define ERROR_SEM_USER_LIMIT 106L
+
+//
+// MessageId: ERROR_DISK_CHANGE
+//
+// MessageText:
+//
+// Program stopped because alternate diskette was not inserted.
+//
+#define ERROR_DISK_CHANGE 107L
+
+//
+// MessageId: ERROR_DRIVE_LOCKED
+//
+// MessageText:
+//
+// The disk is in use or locked by
+// another process.
+//
+#define ERROR_DRIVE_LOCKED 108L
+
+//
+// MessageId: ERROR_BROKEN_PIPE
+//
+// MessageText:
+//
+// The pipe has been ended.
+//
+#define ERROR_BROKEN_PIPE 109L
+
+//
+// MessageId: ERROR_OPEN_FAILED
+//
+// MessageText:
+//
+// The system cannot open the
+// device or file specified.
+//
+#define ERROR_OPEN_FAILED 110L
+
+//
+// MessageId: ERROR_BUFFER_OVERFLOW
+//
+// MessageText:
+//
+// The file name is too long.
+//
+#define ERROR_BUFFER_OVERFLOW 111L
+
+//
+// MessageId: ERROR_DISK_FULL
+//
+// MessageText:
+//
+// There is not enough space on the disk.
+//
+#define ERROR_DISK_FULL 112L
+
+//
+// MessageId: ERROR_NO_MORE_SEARCH_HANDLES
+//
+// MessageText:
+//
+// No more internal file identifiers available.
+//
+#define ERROR_NO_MORE_SEARCH_HANDLES 113L
+
+//
+// MessageId: ERROR_INVALID_TARGET_HANDLE
+//
+// MessageText:
+//
+// The target internal file identifier is incorrect.
+//
+#define ERROR_INVALID_TARGET_HANDLE 114L
+
+//
+// MessageId: ERROR_INVALID_CATEGORY
+//
+// MessageText:
+//
+// The IOCTL call made by the application program is
+// not correct.
+//
+#define ERROR_INVALID_CATEGORY 117L
+
+//
+// MessageId: ERROR_INVALID_VERIFY_SWITCH
+//
+// MessageText:
+//
+// The verify-on-write switch parameter value is not
+// correct.
+//
+#define ERROR_INVALID_VERIFY_SWITCH 118L
+
+//
+// MessageId: ERROR_BAD_DRIVER_LEVEL
+//
+// MessageText:
+//
+// The system does not support the command requested.
+//
+#define ERROR_BAD_DRIVER_LEVEL 119L
+
+//
+// MessageId: ERROR_CALL_NOT_IMPLEMENTED
+//
+// MessageText:
+//
+// This function is only valid in Windows NT mode.
+//
+#define ERROR_CALL_NOT_IMPLEMENTED 120L
+
+//
+// MessageId: ERROR_SEM_TIMEOUT
+//
+// MessageText:
+//
+// The semaphore timeout period has expired.
+//
+#define ERROR_SEM_TIMEOUT 121L
+
+//
+// MessageId: ERROR_INSUFFICIENT_BUFFER
+//
+// MessageText:
+//
+// The data area passed to a system call is too
+// small.
+//
+#define ERROR_INSUFFICIENT_BUFFER 122L // dderror
+
+//
+// MessageId: ERROR_INVALID_NAME
+//
+// MessageText:
+//
+// The filename, directory name, or volume label syntax is incorrect.
+//
+#define ERROR_INVALID_NAME 123L
+
+//
+// MessageId: ERROR_INVALID_LEVEL
+//
+// MessageText:
+//
+// The system call level is not correct.
+//
+#define ERROR_INVALID_LEVEL 124L
+
+//
+// MessageId: ERROR_NO_VOLUME_LABEL
+//
+// MessageText:
+//
+// The disk has no volume label.
+//
+#define ERROR_NO_VOLUME_LABEL 125L
+
+//
+// MessageId: ERROR_MOD_NOT_FOUND
+//
+// MessageText:
+//
+// The specified module could not be found.
+//
+#define ERROR_MOD_NOT_FOUND 126L
+
+//
+// MessageId: ERROR_PROC_NOT_FOUND
+//
+// MessageText:
+//
+// The specified procedure could not be found.
+//
+#define ERROR_PROC_NOT_FOUND 127L
+
+//
+// MessageId: ERROR_WAIT_NO_CHILDREN
+//
+// MessageText:
+//
+// There are no child processes to wait for.
+//
+#define ERROR_WAIT_NO_CHILDREN 128L
+
+//
+// MessageId: ERROR_CHILD_NOT_COMPLETE
+//
+// MessageText:
+//
+// The %1 application cannot be run in Windows NT mode.
+//
+#define ERROR_CHILD_NOT_COMPLETE 129L
+
+//
+// MessageId: ERROR_DIRECT_ACCESS_HANDLE
+//
+// MessageText:
+//
+// Attempt to use a file handle to an open disk partition for an
+// operation other than raw disk I/O.
+//
+#define ERROR_DIRECT_ACCESS_HANDLE 130L
+
+//
+// MessageId: ERROR_NEGATIVE_SEEK
+//
+// MessageText:
+//
+// An attempt was made to move the file pointer before the beginning of the file.
+//
+#define ERROR_NEGATIVE_SEEK 131L
+
+//
+// MessageId: ERROR_SEEK_ON_DEVICE
+//
+// MessageText:
+//
+// The file pointer cannot be set on the specified device or file.
+//
+#define ERROR_SEEK_ON_DEVICE 132L
+
+//
+// MessageId: ERROR_IS_JOIN_TARGET
+//
+// MessageText:
+//
+// A JOIN or SUBST command
+// cannot be used for a drive that
+// contains previously joined drives.
+//
+#define ERROR_IS_JOIN_TARGET 133L
+
+//
+// MessageId: ERROR_IS_JOINED
+//
+// MessageText:
+//
+// An attempt was made to use a
+// JOIN or SUBST command on a drive that has
+// already been joined.
+//
+#define ERROR_IS_JOINED 134L
+
+//
+// MessageId: ERROR_IS_SUBSTED
+//
+// MessageText:
+//
+// An attempt was made to use a
+// JOIN or SUBST command on a drive that has
+// already been substituted.
+//
+#define ERROR_IS_SUBSTED 135L
+
+//
+// MessageId: ERROR_NOT_JOINED
+//
+// MessageText:
+//
+// The system tried to delete
+// the JOIN of a drive that is not joined.
+//
+#define ERROR_NOT_JOINED 136L
+
+//
+// MessageId: ERROR_NOT_SUBSTED
+//
+// MessageText:
+//
+// The system tried to delete the
+// substitution of a drive that is not substituted.
+//
+#define ERROR_NOT_SUBSTED 137L
+
+//
+// MessageId: ERROR_JOIN_TO_JOIN
+//
+// MessageText:
+//
+// The system tried to join a drive
+// to a directory on a joined drive.
+//
+#define ERROR_JOIN_TO_JOIN 138L
+
+//
+// MessageId: ERROR_SUBST_TO_SUBST
+//
+// MessageText:
+//
+// The system tried to substitute a
+// drive to a directory on a substituted drive.
+//
+#define ERROR_SUBST_TO_SUBST 139L
+
+//
+// MessageId: ERROR_JOIN_TO_SUBST
+//
+// MessageText:
+//
+// The system tried to join a drive to
+// a directory on a substituted drive.
+//
+#define ERROR_JOIN_TO_SUBST 140L
+
+//
+// MessageId: ERROR_SUBST_TO_JOIN
+//
+// MessageText:
+//
+// The system tried to SUBST a drive
+// to a directory on a joined drive.
+//
+#define ERROR_SUBST_TO_JOIN 141L
+
+//
+// MessageId: ERROR_BUSY_DRIVE
+//
+// MessageText:
+//
+// The system cannot perform a JOIN or SUBST at this time.
+//
+#define ERROR_BUSY_DRIVE 142L
+
+//
+// MessageId: ERROR_SAME_DRIVE
+//
+// MessageText:
+//
+// The system cannot join or substitute a
+// drive to or for a directory on the same drive.
+//
+#define ERROR_SAME_DRIVE 143L
+
+//
+// MessageId: ERROR_DIR_NOT_ROOT
+//
+// MessageText:
+//
+// The directory is not a subdirectory of the root directory.
+//
+#define ERROR_DIR_NOT_ROOT 144L
+
+//
+// MessageId: ERROR_DIR_NOT_EMPTY
+//
+// MessageText:
+//
+// The directory is not empty.
+//
+#define ERROR_DIR_NOT_EMPTY 145L
+
+//
+// MessageId: ERROR_IS_SUBST_PATH
+//
+// MessageText:
+//
+// The path specified is being used in
+// a substitute.
+//
+#define ERROR_IS_SUBST_PATH 146L
+
+//
+// MessageId: ERROR_IS_JOIN_PATH
+//
+// MessageText:
+//
+// Not enough resources are available to
+// process this command.
+//
+#define ERROR_IS_JOIN_PATH 147L
+
+//
+// MessageId: ERROR_PATH_BUSY
+//
+// MessageText:
+//
+// The path specified cannot be used at this time.
+//
+#define ERROR_PATH_BUSY 148L
+
+//
+// MessageId: ERROR_IS_SUBST_TARGET
+//
+// MessageText:
+//
+// An attempt was made to join
+// or substitute a drive for which a directory
+// on the drive is the target of a previous
+// substitute.
+//
+#define ERROR_IS_SUBST_TARGET 149L
+
+//
+// MessageId: ERROR_SYSTEM_TRACE
+//
+// MessageText:
+//
+// System trace information was not specified in your
+// CONFIG.SYS file, or tracing is disallowed.
+//
+#define ERROR_SYSTEM_TRACE 150L
+
+//
+// MessageId: ERROR_INVALID_EVENT_COUNT
+//
+// MessageText:
+//
+// The number of specified semaphore events for
+// DosMuxSemWait is not correct.
+//
+#define ERROR_INVALID_EVENT_COUNT 151L
+
+//
+// MessageId: ERROR_TOO_MANY_MUXWAITERS
+//
+// MessageText:
+//
+// DosMuxSemWait did not execute; too many semaphores
+// are already set.
+//
+#define ERROR_TOO_MANY_MUXWAITERS 152L
+
+//
+// MessageId: ERROR_INVALID_LIST_FORMAT
+//
+// MessageText:
+//
+// The DosMuxSemWait list is not correct.
+//
+#define ERROR_INVALID_LIST_FORMAT 153L
+
+//
+// MessageId: ERROR_LABEL_TOO_LONG
+//
+// MessageText:
+//
+// The volume label you entered exceeds the label character
+// limit of the target file system.
+//
+#define ERROR_LABEL_TOO_LONG 154L
+
+//
+// MessageId: ERROR_TOO_MANY_TCBS
+//
+// MessageText:
+//
+// Cannot create another thread.
+//
+#define ERROR_TOO_MANY_TCBS 155L
+
+//
+// MessageId: ERROR_SIGNAL_REFUSED
+//
+// MessageText:
+//
+// The recipient process has refused the signal.
+//
+#define ERROR_SIGNAL_REFUSED 156L
+
+//
+// MessageId: ERROR_DISCARDED
+//
+// MessageText:
+//
+// The segment is already discarded and cannot be locked.
+//
+#define ERROR_DISCARDED 157L
+
+//
+// MessageId: ERROR_NOT_LOCKED
+//
+// MessageText:
+//
+// The segment is already unlocked.
+//
+#define ERROR_NOT_LOCKED 158L
+
+//
+// MessageId: ERROR_BAD_THREADID_ADDR
+//
+// MessageText:
+//
+// The address for the thread ID is not correct.
+//
+#define ERROR_BAD_THREADID_ADDR 159L
+
+//
+// MessageId: ERROR_BAD_ARGUMENTS
+//
+// MessageText:
+//
+// The argument string passed to DosExecPgm is not correct.
+//
+#define ERROR_BAD_ARGUMENTS 160L
+
+//
+// MessageId: ERROR_BAD_PATHNAME
+//
+// MessageText:
+//
+// The specified path is invalid.
+//
+#define ERROR_BAD_PATHNAME 161L
+
+//
+// MessageId: ERROR_SIGNAL_PENDING
+//
+// MessageText:
+//
+// A signal is already pending.
+//
+#define ERROR_SIGNAL_PENDING 162L
+
+//
+// MessageId: ERROR_MAX_THRDS_REACHED
+//
+// MessageText:
+//
+// No more threads can be created in the system.
+//
+#define ERROR_MAX_THRDS_REACHED 164L
+
+//
+// MessageId: ERROR_LOCK_FAILED
+//
+// MessageText:
+//
+// Unable to lock a region of a file.
+//
+#define ERROR_LOCK_FAILED 167L
+
+//
+// MessageId: ERROR_BUSY
+//
+// MessageText:
+//
+// The requested resource is in use.
+//
+#define ERROR_BUSY 170L
+
+//
+// MessageId: ERROR_CANCEL_VIOLATION
+//
+// MessageText:
+//
+// A lock request was not outstanding for the supplied cancel region.
+//
+#define ERROR_CANCEL_VIOLATION 173L
+
+//
+// MessageId: ERROR_ATOMIC_LOCKS_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The file system does not support atomic changes to the lock type.
+//
+#define ERROR_ATOMIC_LOCKS_NOT_SUPPORTED 174L
+
+//
+// MessageId: ERROR_INVALID_SEGMENT_NUMBER
+//
+// MessageText:
+//
+// The system detected a segment number that was not correct.
+//
+#define ERROR_INVALID_SEGMENT_NUMBER 180L
+
+//
+// MessageId: ERROR_INVALID_ORDINAL
+//
+// MessageText:
+//
+// The operating system cannot run %1.
+//
+#define ERROR_INVALID_ORDINAL 182L
+
+//
+// MessageId: ERROR_ALREADY_EXISTS
+//
+// MessageText:
+//
+// Cannot create a file when that file already exists.
+//
+#define ERROR_ALREADY_EXISTS 183L
+
+//
+// MessageId: ERROR_INVALID_FLAG_NUMBER
+//
+// MessageText:
+//
+// The flag passed is not correct.
+//
+#define ERROR_INVALID_FLAG_NUMBER 186L
+
+//
+// MessageId: ERROR_SEM_NOT_FOUND
+//
+// MessageText:
+//
+// The specified system semaphore name was not found.
+//
+#define ERROR_SEM_NOT_FOUND 187L
+
+//
+// MessageId: ERROR_INVALID_STARTING_CODESEG
+//
+// MessageText:
+//
+// The operating system cannot run %1.
+//
+#define ERROR_INVALID_STARTING_CODESEG 188L
+
+//
+// MessageId: ERROR_INVALID_STACKSEG
+//
+// MessageText:
+//
+// The operating system cannot run %1.
+//
+#define ERROR_INVALID_STACKSEG 189L
+
+//
+// MessageId: ERROR_INVALID_MODULETYPE
+//
+// MessageText:
+//
+// The operating system cannot run %1.
+//
+#define ERROR_INVALID_MODULETYPE 190L
+
+//
+// MessageId: ERROR_INVALID_EXE_SIGNATURE
+//
+// MessageText:
+//
+// Cannot run %1 in Windows NT mode.
+//
+#define ERROR_INVALID_EXE_SIGNATURE 191L
+
+//
+// MessageId: ERROR_EXE_MARKED_INVALID
+//
+// MessageText:
+//
+// The operating system cannot run %1.
+//
+#define ERROR_EXE_MARKED_INVALID 192L
+
+//
+// MessageId: ERROR_BAD_EXE_FORMAT
+//
+// MessageText:
+//
+// %1 is not a valid Windows NT application.
+//
+#define ERROR_BAD_EXE_FORMAT 193L
+
+//
+// MessageId: ERROR_ITERATED_DATA_EXCEEDS_64k
+//
+// MessageText:
+//
+// The operating system cannot run %1.
+//
+#define ERROR_ITERATED_DATA_EXCEEDS_64k 194L
+
+//
+// MessageId: ERROR_INVALID_MINALLOCSIZE
+//
+// MessageText:
+//
+// The operating system cannot run %1.
+//
+#define ERROR_INVALID_MINALLOCSIZE 195L
+
+//
+// MessageId: ERROR_DYNLINK_FROM_INVALID_RING
+//
+// MessageText:
+//
+// The operating system cannot run this
+// application program.
+//
+#define ERROR_DYNLINK_FROM_INVALID_RING 196L
+
+//
+// MessageId: ERROR_IOPL_NOT_ENABLED
+//
+// MessageText:
+//
+// The operating system is not presently
+// configured to run this application.
+//
+#define ERROR_IOPL_NOT_ENABLED 197L
+
+//
+// MessageId: ERROR_INVALID_SEGDPL
+//
+// MessageText:
+//
+// The operating system cannot run %1.
+//
+#define ERROR_INVALID_SEGDPL 198L
+
+//
+// MessageId: ERROR_AUTODATASEG_EXCEEDS_64k
+//
+// MessageText:
+//
+// The operating system cannot run this
+// application program.
+//
+#define ERROR_AUTODATASEG_EXCEEDS_64k 199L
+
+//
+// MessageId: ERROR_RING2SEG_MUST_BE_MOVABLE
+//
+// MessageText:
+//
+// The code segment cannot be greater than or equal to 64KB.
+//
+#define ERROR_RING2SEG_MUST_BE_MOVABLE 200L
+
+//
+// MessageId: ERROR_RELOC_CHAIN_XEEDS_SEGLIM
+//
+// MessageText:
+//
+// The operating system cannot run %1.
+//
+#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM 201L
+
+//
+// MessageId: ERROR_INFLOOP_IN_RELOC_CHAIN
+//
+// MessageText:
+//
+// The operating system cannot run %1.
+//
+#define ERROR_INFLOOP_IN_RELOC_CHAIN 202L
+
+//
+// MessageId: ERROR_ENVVAR_NOT_FOUND
+//
+// MessageText:
+//
+// The system could not find the environment
+// option that was entered.
+//
+#define ERROR_ENVVAR_NOT_FOUND 203L
+
+//
+// MessageId: ERROR_NO_SIGNAL_SENT
+//
+// MessageText:
+//
+// No process in the command subtree has a
+// signal handler.
+//
+#define ERROR_NO_SIGNAL_SENT 205L
+
+//
+// MessageId: ERROR_FILENAME_EXCED_RANGE
+//
+// MessageText:
+//
+// The filename or extension is too long.
+//
+#define ERROR_FILENAME_EXCED_RANGE 206L
+
+//
+// MessageId: ERROR_RING2_STACK_IN_USE
+//
+// MessageText:
+//
+// The ring 2 stack is in use.
+//
+#define ERROR_RING2_STACK_IN_USE 207L
+
+//
+// MessageId: ERROR_META_EXPANSION_TOO_LONG
+//
+// MessageText:
+//
+// The global filename characters, * or ?, are entered
+// incorrectly or too many global filename characters are specified.
+//
+#define ERROR_META_EXPANSION_TOO_LONG 208L
+
+//
+// MessageId: ERROR_INVALID_SIGNAL_NUMBER
+//
+// MessageText:
+//
+// The signal being posted is not correct.
+//
+#define ERROR_INVALID_SIGNAL_NUMBER 209L
+
+//
+// MessageId: ERROR_THREAD_1_INACTIVE
+//
+// MessageText:
+//
+// The signal handler cannot be set.
+//
+#define ERROR_THREAD_1_INACTIVE 210L
+
+//
+// MessageId: ERROR_LOCKED
+//
+// MessageText:
+//
+// The segment is locked and cannot be reallocated.
+//
+#define ERROR_LOCKED 212L
+
+//
+// MessageId: ERROR_TOO_MANY_MODULES
+//
+// MessageText:
+//
+// Too many dynamic link modules are attached to this
+// program or dynamic link module.
+//
+#define ERROR_TOO_MANY_MODULES 214L
+
+//
+// MessageId: ERROR_NESTING_NOT_ALLOWED
+//
+// MessageText:
+//
+// Can't nest calls to LoadModule.
+//
+#define ERROR_NESTING_NOT_ALLOWED 215L
+
+//
+// MessageId: ERROR_EXE_MACHINE_TYPE_MISMATCH
+//
+// MessageText:
+//
+// The image file %1 is valid, but is for a machine type other
+// than the current machine.
+//
+#define ERROR_EXE_MACHINE_TYPE_MISMATCH 216L
+
+//
+// MessageId: ERROR_BAD_PIPE
+//
+// MessageText:
+//
+// The pipe state is invalid.
+//
+#define ERROR_BAD_PIPE 230L
+
+//
+// MessageId: ERROR_PIPE_BUSY
+//
+// MessageText:
+//
+// All pipe instances are busy.
+//
+#define ERROR_PIPE_BUSY 231L
+
+//
+// MessageId: ERROR_NO_DATA
+//
+// MessageText:
+//
+// The pipe is being closed.
+//
+#define ERROR_NO_DATA 232L
+
+//
+// MessageId: ERROR_PIPE_NOT_CONNECTED
+//
+// MessageText:
+//
+// No process is on the other end of the pipe.
+//
+#define ERROR_PIPE_NOT_CONNECTED 233L
+
+//
+// MessageId: ERROR_MORE_DATA
+//
+// MessageText:
+//
+// More data is available.
+//
+#define ERROR_MORE_DATA 234L // dderror
+
+//
+// MessageId: ERROR_VC_DISCONNECTED
+//
+// MessageText:
+//
+// The session was cancelled.
+//
+#define ERROR_VC_DISCONNECTED 240L
+
+//
+// MessageId: ERROR_INVALID_EA_NAME
+//
+// MessageText:
+//
+// The specified extended attribute name was invalid.
+//
+#define ERROR_INVALID_EA_NAME 254L
+
+//
+// MessageId: ERROR_EA_LIST_INCONSISTENT
+//
+// MessageText:
+//
+// The extended attributes are inconsistent.
+//
+#define ERROR_EA_LIST_INCONSISTENT 255L
+
+//
+// MessageId: ERROR_NO_MORE_ITEMS
+//
+// MessageText:
+//
+// No more data is available.
+//
+#define ERROR_NO_MORE_ITEMS 259L
+
+//
+// MessageId: ERROR_CANNOT_COPY
+//
+// MessageText:
+//
+// The Copy API cannot be used.
+//
+#define ERROR_CANNOT_COPY 266L
+
+//
+// MessageId: ERROR_DIRECTORY
+//
+// MessageText:
+//
+// The directory name is invalid.
+//
+#define ERROR_DIRECTORY 267L
+
+//
+// MessageId: ERROR_EAS_DIDNT_FIT
+//
+// MessageText:
+//
+// The extended attributes did not fit in the buffer.
+//
+#define ERROR_EAS_DIDNT_FIT 275L
+
+//
+// MessageId: ERROR_EA_FILE_CORRUPT
+//
+// MessageText:
+//
+// The extended attribute file on the mounted file system is corrupt.
+//
+#define ERROR_EA_FILE_CORRUPT 276L
+
+//
+// MessageId: ERROR_EA_TABLE_FULL
+//
+// MessageText:
+//
+// The extended attribute table file is full.
+//
+#define ERROR_EA_TABLE_FULL 277L
+
+//
+// MessageId: ERROR_INVALID_EA_HANDLE
+//
+// MessageText:
+//
+// The specified extended attribute handle is invalid.
+//
+#define ERROR_INVALID_EA_HANDLE 278L
+
+//
+// MessageId: ERROR_EAS_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The mounted file system does not support extended attributes.
+//
+#define ERROR_EAS_NOT_SUPPORTED 282L
+
+//
+// MessageId: ERROR_NOT_OWNER
+//
+// MessageText:
+//
+// Attempt to release mutex not owned by caller.
+//
+#define ERROR_NOT_OWNER 288L
+
+//
+// MessageId: ERROR_TOO_MANY_POSTS
+//
+// MessageText:
+//
+// Too many posts were made to a semaphore.
+//
+#define ERROR_TOO_MANY_POSTS 298L
+
+//
+// MessageId: ERROR_PARTIAL_COPY
+//
+// MessageText:
+//
+// Only part of a Read/WriteProcessMemory request was completed.
+//
+#define ERROR_PARTIAL_COPY 299L
+
+//
+// MessageId: ERROR_MR_MID_NOT_FOUND
+//
+// MessageText:
+//
+// The system cannot find message for message number 0x%1
+// in message file for %2.
+//
+#define ERROR_MR_MID_NOT_FOUND 317L
+
+//
+// MessageId: ERROR_INVALID_ADDRESS
+//
+// MessageText:
+//
+// Attempt to access invalid address.
+//
+#define ERROR_INVALID_ADDRESS 487L
+
+//
+// MessageId: ERROR_ARITHMETIC_OVERFLOW
+//
+// MessageText:
+//
+// Arithmetic result exceeded 32 bits.
+//
+#define ERROR_ARITHMETIC_OVERFLOW 534L
+
+//
+// MessageId: ERROR_PIPE_CONNECTED
+//
+// MessageText:
+//
+// There is a process on other end of the pipe.
+//
+#define ERROR_PIPE_CONNECTED 535L
+
+//
+// MessageId: ERROR_PIPE_LISTENING
+//
+// MessageText:
+//
+// Waiting for a process to open the other end of the pipe.
+//
+#define ERROR_PIPE_LISTENING 536L
+
+//
+// MessageId: ERROR_EA_ACCESS_DENIED
+//
+// MessageText:
+//
+// Access to the extended attribute was denied.
+//
+#define ERROR_EA_ACCESS_DENIED 994L
+
+//
+// MessageId: ERROR_OPERATION_ABORTED
+//
+// MessageText:
+//
+// The I/O operation has been aborted because of either a thread exit
+// or an application request.
+//
+#define ERROR_OPERATION_ABORTED 995L
+
+//
+// MessageId: ERROR_IO_INCOMPLETE
+//
+// MessageText:
+//
+// Overlapped I/O event is not in a signalled state.
+//
+#define ERROR_IO_INCOMPLETE 996L
+
+//
+// MessageId: ERROR_IO_PENDING
+//
+// MessageText:
+//
+// Overlapped I/O operation is in progress.
+//
+#define ERROR_IO_PENDING 997L // dderror
+
+//
+// MessageId: ERROR_NOACCESS
+//
+// MessageText:
+//
+// Invalid access to memory location.
+//
+#define ERROR_NOACCESS 998L
+
+//
+// MessageId: ERROR_SWAPERROR
+//
+// MessageText:
+//
+// Error performing inpage operation.
+//
+#define ERROR_SWAPERROR 999L
+
+//
+// MessageId: ERROR_STACK_OVERFLOW
+//
+// MessageText:
+//
+// Recursion too deep, stack overflowed.
+//
+#define ERROR_STACK_OVERFLOW 1001L
+
+//
+// MessageId: ERROR_INVALID_MESSAGE
+//
+// MessageText:
+//
+// The window cannot act on the sent message.
+//
+#define ERROR_INVALID_MESSAGE 1002L
+
+//
+// MessageId: ERROR_CAN_NOT_COMPLETE
+//
+// MessageText:
+//
+// Cannot complete this function.
+//
+#define ERROR_CAN_NOT_COMPLETE 1003L
+
+//
+// MessageId: ERROR_INVALID_FLAGS
+//
+// MessageText:
+//
+// Invalid flags.
+//
+#define ERROR_INVALID_FLAGS 1004L
+
+//
+// MessageId: ERROR_UNRECOGNIZED_VOLUME
+//
+// MessageText:
+//
+// The volume does not contain a recognized file system.
+// Please make sure that all required file system drivers are loaded and that the
+// volume is not corrupt.
+//
+#define ERROR_UNRECOGNIZED_VOLUME 1005L
+
+//
+// MessageId: ERROR_FILE_INVALID
+//
+// MessageText:
+//
+// The volume for a file has been externally altered such that the
+// opened file is no longer valid.
+//
+#define ERROR_FILE_INVALID 1006L
+
+//
+// MessageId: ERROR_FULLSCREEN_MODE
+//
+// MessageText:
+//
+// The requested operation cannot be performed in full-screen mode.
+//
+#define ERROR_FULLSCREEN_MODE 1007L
+
+//
+// MessageId: ERROR_NO_TOKEN
+//
+// MessageText:
+//
+// An attempt was made to reference a token that does not exist.
+//
+#define ERROR_NO_TOKEN 1008L
+
+//
+// MessageId: ERROR_BADDB
+//
+// MessageText:
+//
+// The configuration registry database is corrupt.
+//
+#define ERROR_BADDB 1009L
+
+//
+// MessageId: ERROR_BADKEY
+//
+// MessageText:
+//
+// The configuration registry key is invalid.
+//
+#define ERROR_BADKEY 1010L
+
+//
+// MessageId: ERROR_CANTOPEN
+//
+// MessageText:
+//
+// The configuration registry key could not be opened.
+//
+#define ERROR_CANTOPEN 1011L
+
+//
+// MessageId: ERROR_CANTREAD
+//
+// MessageText:
+//
+// The configuration registry key could not be read.
+//
+#define ERROR_CANTREAD 1012L
+
+//
+// MessageId: ERROR_CANTWRITE
+//
+// MessageText:
+//
+// The configuration registry key could not be written.
+//
+#define ERROR_CANTWRITE 1013L
+
+//
+// MessageId: ERROR_REGISTRY_RECOVERED
+//
+// MessageText:
+//
+// One of the files in the Registry database had to be recovered
+// by use of a log or alternate copy. The recovery was successful.
+//
+#define ERROR_REGISTRY_RECOVERED 1014L
+
+//
+// MessageId: ERROR_REGISTRY_CORRUPT
+//
+// MessageText:
+//
+// The Registry is corrupt. The structure of one of the files that contains
+// Registry data is corrupt, or the system's image of the file in memory
+// is corrupt, or the file could not be recovered because the alternate
+// copy or log was absent or corrupt.
+//
+#define ERROR_REGISTRY_CORRUPT 1015L
+
+//
+// MessageId: ERROR_REGISTRY_IO_FAILED
+//
+// MessageText:
+//
+// An I/O operation initiated by the Registry failed unrecoverably.
+// The Registry could not read in, or write out, or flush, one of the files
+// that contain the system's image of the Registry.
+//
+#define ERROR_REGISTRY_IO_FAILED 1016L
+
+//
+// MessageId: ERROR_NOT_REGISTRY_FILE
+//
+// MessageText:
+//
+// The system has attempted to load or restore a file into the Registry, but the
+// specified file is not in a Registry file format.
+//
+#define ERROR_NOT_REGISTRY_FILE 1017L
+
+//
+// MessageId: ERROR_KEY_DELETED
+//
+// MessageText:
+//
+// Illegal operation attempted on a Registry key which has been marked for deletion.
+//
+#define ERROR_KEY_DELETED 1018L
+
+//
+// MessageId: ERROR_NO_LOG_SPACE
+//
+// MessageText:
+//
+// System could not allocate the required space in a Registry log.
+//
+#define ERROR_NO_LOG_SPACE 1019L
+
+//
+// MessageId: ERROR_KEY_HAS_CHILDREN
+//
+// MessageText:
+//
+// Cannot create a symbolic link in a Registry key that already
+// has subkeys or values.
+//
+#define ERROR_KEY_HAS_CHILDREN 1020L
+
+//
+// MessageId: ERROR_CHILD_MUST_BE_VOLATILE
+//
+// MessageText:
+//
+// Cannot create a stable subkey under a volatile parent key.
+//
+#define ERROR_CHILD_MUST_BE_VOLATILE 1021L
+
+//
+// MessageId: ERROR_NOTIFY_ENUM_DIR
+//
+// MessageText:
+//
+// A notify change request is being completed and the information
+// is not being returned in the caller's buffer. The caller now
+// needs to enumerate the files to find the changes.
+//
+#define ERROR_NOTIFY_ENUM_DIR 1022L
+
+//
+// MessageId: ERROR_DEPENDENT_SERVICES_RUNNING
+//
+// MessageText:
+//
+// A stop control has been sent to a service which other running services
+// are dependent on.
+//
+#define ERROR_DEPENDENT_SERVICES_RUNNING 1051L
+
+//
+// MessageId: ERROR_INVALID_SERVICE_CONTROL
+//
+// MessageText:
+//
+// The requested control is not valid for this service
+//
+#define ERROR_INVALID_SERVICE_CONTROL 1052L
+
+//
+// MessageId: ERROR_SERVICE_REQUEST_TIMEOUT
+//
+// MessageText:
+//
+// The service did not respond to the start or control request in a timely
+// fashion.
+//
+#define ERROR_SERVICE_REQUEST_TIMEOUT 1053L
+
+//
+// MessageId: ERROR_SERVICE_NO_THREAD
+//
+// MessageText:
+//
+// A thread could not be created for the service.
+//
+#define ERROR_SERVICE_NO_THREAD 1054L
+
+//
+// MessageId: ERROR_SERVICE_DATABASE_LOCKED
+//
+// MessageText:
+//
+// The service database is locked.
+//
+#define ERROR_SERVICE_DATABASE_LOCKED 1055L
+
+//
+// MessageId: ERROR_SERVICE_ALREADY_RUNNING
+//
+// MessageText:
+//
+// An instance of the service is already running.
+//
+#define ERROR_SERVICE_ALREADY_RUNNING 1056L
+
+//
+// MessageId: ERROR_INVALID_SERVICE_ACCOUNT
+//
+// MessageText:
+//
+// The account name is invalid or does not exist.
+//
+#define ERROR_INVALID_SERVICE_ACCOUNT 1057L
+
+//
+// MessageId: ERROR_SERVICE_DISABLED
+//
+// MessageText:
+//
+// The specified service is disabled and cannot be started.
+//
+#define ERROR_SERVICE_DISABLED 1058L
+
+//
+// MessageId: ERROR_CIRCULAR_DEPENDENCY
+//
+// MessageText:
+//
+// Circular service dependency was specified.
+//
+#define ERROR_CIRCULAR_DEPENDENCY 1059L
+
+//
+// MessageId: ERROR_SERVICE_DOES_NOT_EXIST
+//
+// MessageText:
+//
+// The specified service does not exist as an installed service.
+//
+#define ERROR_SERVICE_DOES_NOT_EXIST 1060L
+
+//
+// MessageId: ERROR_SERVICE_CANNOT_ACCEPT_CTRL
+//
+// MessageText:
+//
+// The service cannot accept control messages at this time.
+//
+#define ERROR_SERVICE_CANNOT_ACCEPT_CTRL 1061L
+
+//
+// MessageId: ERROR_SERVICE_NOT_ACTIVE
+//
+// MessageText:
+//
+// The service has not been started.
+//
+#define ERROR_SERVICE_NOT_ACTIVE 1062L
+
+//
+// MessageId: ERROR_FAILED_SERVICE_CONTROLLER_CONNECT
+//
+// MessageText:
+//
+// The service process could not connect to the service controller.
+//
+#define ERROR_FAILED_SERVICE_CONTROLLER_CONNECT 1063L
+
+//
+// MessageId: ERROR_EXCEPTION_IN_SERVICE
+//
+// MessageText:
+//
+// An exception occurred in the service when handling the control request.
+//
+#define ERROR_EXCEPTION_IN_SERVICE 1064L
+
+//
+// MessageId: ERROR_DATABASE_DOES_NOT_EXIST
+//
+// MessageText:
+//
+// The database specified does not exist.
+//
+#define ERROR_DATABASE_DOES_NOT_EXIST 1065L
+
+//
+// MessageId: ERROR_SERVICE_SPECIFIC_ERROR
+//
+// MessageText:
+//
+// The service has returned a service-specific error code.
+//
+#define ERROR_SERVICE_SPECIFIC_ERROR 1066L
+
+//
+// MessageId: ERROR_PROCESS_ABORTED
+//
+// MessageText:
+//
+// The process terminated unexpectedly.
+//
+#define ERROR_PROCESS_ABORTED 1067L
+
+//
+// MessageId: ERROR_SERVICE_DEPENDENCY_FAIL
+//
+// MessageText:
+//
+// The dependency service or group failed to start.
+//
+#define ERROR_SERVICE_DEPENDENCY_FAIL 1068L
+
+//
+// MessageId: ERROR_SERVICE_LOGON_FAILED
+//
+// MessageText:
+//
+// The service did not start due to a logon failure.
+//
+#define ERROR_SERVICE_LOGON_FAILED 1069L
+
+//
+// MessageId: ERROR_SERVICE_START_HANG
+//
+// MessageText:
+//
+// After starting, the service hung in a start-pending state.
+//
+#define ERROR_SERVICE_START_HANG 1070L
+
+//
+// MessageId: ERROR_INVALID_SERVICE_LOCK
+//
+// MessageText:
+//
+// The specified service database lock is invalid.
+//
+#define ERROR_INVALID_SERVICE_LOCK 1071L
+
+//
+// MessageId: ERROR_SERVICE_MARKED_FOR_DELETE
+//
+// MessageText:
+//
+// The specified service has been marked for deletion.
+//
+#define ERROR_SERVICE_MARKED_FOR_DELETE 1072L
+
+//
+// MessageId: ERROR_SERVICE_EXISTS
+//
+// MessageText:
+//
+// The specified service already exists.
+//
+#define ERROR_SERVICE_EXISTS 1073L
+
+//
+// MessageId: ERROR_ALREADY_RUNNING_LKG
+//
+// MessageText:
+//
+// The system is currently running with the last-known-good configuration.
+//
+#define ERROR_ALREADY_RUNNING_LKG 1074L
+
+//
+// MessageId: ERROR_SERVICE_DEPENDENCY_DELETED
+//
+// MessageText:
+//
+// The dependency service does not exist or has been marked for
+// deletion.
+//
+#define ERROR_SERVICE_DEPENDENCY_DELETED 1075L
+
+//
+// MessageId: ERROR_BOOT_ALREADY_ACCEPTED
+//
+// MessageText:
+//
+// The current boot has already been accepted for use as the
+// last-known-good control set.
+//
+#define ERROR_BOOT_ALREADY_ACCEPTED 1076L
+
+//
+// MessageId: ERROR_SERVICE_NEVER_STARTED
+//
+// MessageText:
+//
+// No attempts to start the service have been made since the last boot.
+//
+#define ERROR_SERVICE_NEVER_STARTED 1077L
+
+//
+// MessageId: ERROR_DUPLICATE_SERVICE_NAME
+//
+// MessageText:
+//
+// The name is already in use as either a service name or a service display
+// name.
+//
+#define ERROR_DUPLICATE_SERVICE_NAME 1078L
+
+//
+// MessageId: ERROR_DIFFERENT_SERVICE_ACCOUNT
+//
+// MessageText:
+//
+// The account specified for this service is different from the account
+// specified for other services running in the same process.
+//
+#define ERROR_DIFFERENT_SERVICE_ACCOUNT 1079L
+
+//
+// MessageId: ERROR_END_OF_MEDIA
+//
+// MessageText:
+//
+// The physical end of the tape has been reached.
+//
+#define ERROR_END_OF_MEDIA 1100L
+
+//
+// MessageId: ERROR_FILEMARK_DETECTED
+//
+// MessageText:
+//
+// A tape access reached a filemark.
+//
+#define ERROR_FILEMARK_DETECTED 1101L
+
+//
+// MessageId: ERROR_BEGINNING_OF_MEDIA
+//
+// MessageText:
+//
+// Beginning of tape or partition was encountered.
+//
+#define ERROR_BEGINNING_OF_MEDIA 1102L
+
+//
+// MessageId: ERROR_SETMARK_DETECTED
+//
+// MessageText:
+//
+// A tape access reached the end of a set of files.
+//
+#define ERROR_SETMARK_DETECTED 1103L
+
+//
+// MessageId: ERROR_NO_DATA_DETECTED
+//
+// MessageText:
+//
+// No more data is on the tape.
+//
+#define ERROR_NO_DATA_DETECTED 1104L
+
+//
+// MessageId: ERROR_PARTITION_FAILURE
+//
+// MessageText:
+//
+// Tape could not be partitioned.
+//
+#define ERROR_PARTITION_FAILURE 1105L
+
+//
+// MessageId: ERROR_INVALID_BLOCK_LENGTH
+//
+// MessageText:
+//
+// When accessing a new tape of a multivolume partition, the current
+// blocksize is incorrect.
+//
+#define ERROR_INVALID_BLOCK_LENGTH 1106L
+
+//
+// MessageId: ERROR_DEVICE_NOT_PARTITIONED
+//
+// MessageText:
+//
+// Tape partition information could not be found when loading a tape.
+//
+#define ERROR_DEVICE_NOT_PARTITIONED 1107L
+
+//
+// MessageId: ERROR_UNABLE_TO_LOCK_MEDIA
+//
+// MessageText:
+//
+// Unable to lock the media eject mechanism.
+//
+#define ERROR_UNABLE_TO_LOCK_MEDIA 1108L
+
+//
+// MessageId: ERROR_UNABLE_TO_UNLOAD_MEDIA
+//
+// MessageText:
+//
+// Unable to unload the media.
+//
+#define ERROR_UNABLE_TO_UNLOAD_MEDIA 1109L
+
+//
+// MessageId: ERROR_MEDIA_CHANGED
+//
+// MessageText:
+//
+// Media in drive may have changed.
+//
+#define ERROR_MEDIA_CHANGED 1110L
+
+//
+// MessageId: ERROR_BUS_RESET
+//
+// MessageText:
+//
+// The I/O bus was reset.
+//
+#define ERROR_BUS_RESET 1111L
+
+//
+// MessageId: ERROR_NO_MEDIA_IN_DRIVE
+//
+// MessageText:
+//
+// No media in drive.
+//
+#define ERROR_NO_MEDIA_IN_DRIVE 1112L
+
+//
+// MessageId: ERROR_NO_UNICODE_TRANSLATION
+//
+// MessageText:
+//
+// No mapping for the Unicode character exists in the target multi-byte code page.
+//
+#define ERROR_NO_UNICODE_TRANSLATION 1113L
+
+//
+// MessageId: ERROR_DLL_INIT_FAILED
+//
+// MessageText:
+//
+// A dynamic link library (DLL) initialization routine failed.
+//
+#define ERROR_DLL_INIT_FAILED 1114L
+
+//
+// MessageId: ERROR_SHUTDOWN_IN_PROGRESS
+//
+// MessageText:
+//
+// A system shutdown is in progress.
+//
+#define ERROR_SHUTDOWN_IN_PROGRESS 1115L
+
+//
+// MessageId: ERROR_NO_SHUTDOWN_IN_PROGRESS
+//
+// MessageText:
+//
+// Unable to abort the system shutdown because no shutdown was in progress.
+//
+#define ERROR_NO_SHUTDOWN_IN_PROGRESS 1116L
+
+//
+// MessageId: ERROR_IO_DEVICE
+//
+// MessageText:
+//
+// The request could not be performed because of an I/O device error.
+//
+#define ERROR_IO_DEVICE 1117L
+
+//
+// MessageId: ERROR_SERIAL_NO_DEVICE
+//
+// MessageText:
+//
+// No serial device was successfully initialized. The serial driver will unload.
+//
+#define ERROR_SERIAL_NO_DEVICE 1118L
+
+//
+// MessageId: ERROR_IRQ_BUSY
+//
+// MessageText:
+//
+// Unable to open a device that was sharing an interrupt request (IRQ)
+// with other devices. At least one other device that uses that IRQ
+// was already opened.
+//
+#define ERROR_IRQ_BUSY 1119L
+
+//
+// MessageId: ERROR_MORE_WRITES
+//
+// MessageText:
+//
+// A serial I/O operation was completed by another write to the serial port.
+// (The IOCTL_SERIAL_XOFF_COUNTER reached zero.)
+//
+#define ERROR_MORE_WRITES 1120L
+
+//
+// MessageId: ERROR_COUNTER_TIMEOUT
+//
+// MessageText:
+//
+// A serial I/O operation completed because the time-out period expired.
+// (The IOCTL_SERIAL_XOFF_COUNTER did not reach zero.)
+//
+#define ERROR_COUNTER_TIMEOUT 1121L
+
+//
+// MessageId: ERROR_FLOPPY_ID_MARK_NOT_FOUND
+//
+// MessageText:
+//
+// No ID address mark was found on the floppy disk.
+//
+#define ERROR_FLOPPY_ID_MARK_NOT_FOUND 1122L
+
+//
+// MessageId: ERROR_FLOPPY_WRONG_CYLINDER
+//
+// MessageText:
+//
+// Mismatch between the floppy disk sector ID field and the floppy disk
+// controller track address.
+//
+#define ERROR_FLOPPY_WRONG_CYLINDER 1123L
+
+//
+// MessageId: ERROR_FLOPPY_UNKNOWN_ERROR
+//
+// MessageText:
+//
+// The floppy disk controller reported an error that is not recognized
+// by the floppy disk driver.
+//
+#define ERROR_FLOPPY_UNKNOWN_ERROR 1124L
+
+//
+// MessageId: ERROR_FLOPPY_BAD_REGISTERS
+//
+// MessageText:
+//
+// The floppy disk controller returned inconsistent results in its registers.
+//
+#define ERROR_FLOPPY_BAD_REGISTERS 1125L
+
+//
+// MessageId: ERROR_DISK_RECALIBRATE_FAILED
+//
+// MessageText:
+//
+// While accessing the hard disk, a recalibrate operation failed, even after retries.
+//
+#define ERROR_DISK_RECALIBRATE_FAILED 1126L
+
+//
+// MessageId: ERROR_DISK_OPERATION_FAILED
+//
+// MessageText:
+//
+// While accessing the hard disk, a disk operation failed even after retries.
+//
+#define ERROR_DISK_OPERATION_FAILED 1127L
+
+//
+// MessageId: ERROR_DISK_RESET_FAILED
+//
+// MessageText:
+//
+// While accessing the hard disk, a disk controller reset was needed, but
+// even that failed.
+//
+#define ERROR_DISK_RESET_FAILED 1128L
+
+//
+// MessageId: ERROR_EOM_OVERFLOW
+//
+// MessageText:
+//
+// Physical end of tape encountered.
+//
+#define ERROR_EOM_OVERFLOW 1129L
+
+//
+// MessageId: ERROR_NOT_ENOUGH_SERVER_MEMORY
+//
+// MessageText:
+//
+// Not enough server storage is available to process this command.
+//
+#define ERROR_NOT_ENOUGH_SERVER_MEMORY 1130L
+
+//
+// MessageId: ERROR_POSSIBLE_DEADLOCK
+//
+// MessageText:
+//
+// A potential deadlock condition has been detected.
+//
+#define ERROR_POSSIBLE_DEADLOCK 1131L
+
+//
+// MessageId: ERROR_MAPPED_ALIGNMENT
+//
+// MessageText:
+//
+// The base address or the file offset specified does not have the proper
+// alignment.
+//
+#define ERROR_MAPPED_ALIGNMENT 1132L
+
+//
+// MessageId: ERROR_SET_POWER_STATE_VETOED
+//
+// MessageText:
+//
+// An attempt to change the system power state was vetoed by another
+// application or driver.
+//
+#define ERROR_SET_POWER_STATE_VETOED 1140L
+
+//
+// MessageId: ERROR_SET_POWER_STATE_FAILED
+//
+// MessageText:
+//
+// The system BIOS failed an attempt to change the system power state.
+//
+#define ERROR_SET_POWER_STATE_FAILED 1141L
+
+//
+// MessageId: ERROR_TOO_MANY_LINKS
+//
+// MessageText:
+//
+// An attempt was made to create more links on a file than
+// the file system supports.
+//
+#define ERROR_TOO_MANY_LINKS 1142L
+
+//
+// MessageId: ERROR_OLD_WIN_VERSION
+//
+// MessageText:
+//
+// The specified program requires a newer version of Windows.
+//
+#define ERROR_OLD_WIN_VERSION 1150L
+
+//
+// MessageId: ERROR_APP_WRONG_OS
+//
+// MessageText:
+//
+// The specified program is not a Windows or MS-DOS program.
+//
+#define ERROR_APP_WRONG_OS 1151L
+
+//
+// MessageId: ERROR_SINGLE_INSTANCE_APP
+//
+// MessageText:
+//
+// Cannot start more than one instance of the specified program.
+//
+#define ERROR_SINGLE_INSTANCE_APP 1152L
+
+//
+// MessageId: ERROR_RMODE_APP
+//
+// MessageText:
+//
+// The specified program was written for an older version of Windows.
+//
+#define ERROR_RMODE_APP 1153L
+
+//
+// MessageId: ERROR_INVALID_DLL
+//
+// MessageText:
+//
+// One of the library files needed to run this application is damaged.
+//
+#define ERROR_INVALID_DLL 1154L
+
+//
+// MessageId: ERROR_NO_ASSOCIATION
+//
+// MessageText:
+//
+// No application is associated with the specified file for this operation.
+//
+#define ERROR_NO_ASSOCIATION 1155L
+
+//
+// MessageId: ERROR_DDE_FAIL
+//
+// MessageText:
+//
+// An error occurred in sending the command to the application.
+//
+#define ERROR_DDE_FAIL 1156L
+
+//
+// MessageId: ERROR_DLL_NOT_FOUND
+//
+// MessageText:
+//
+// One of the library files needed to run this application cannot be found.
+//
+#define ERROR_DLL_NOT_FOUND 1157L
+
+
+
+
+///////////////////////////
+// //
+// Winnet32 Status Codes //
+// //
+///////////////////////////
+
+
+//
+// MessageId: ERROR_BAD_USERNAME
+//
+// MessageText:
+//
+// The specified username is invalid.
+//
+#define ERROR_BAD_USERNAME 2202L
+
+//
+// MessageId: ERROR_NOT_CONNECTED
+//
+// MessageText:
+//
+// This network connection does not exist.
+//
+#define ERROR_NOT_CONNECTED 2250L
+
+//
+// MessageId: ERROR_OPEN_FILES
+//
+// MessageText:
+//
+// This network connection has files open or requests pending.
+//
+#define ERROR_OPEN_FILES 2401L
+
+//
+// MessageId: ERROR_ACTIVE_CONNECTIONS
+//
+// MessageText:
+//
+// Active connections still exist.
+//
+#define ERROR_ACTIVE_CONNECTIONS 2402L
+
+//
+// MessageId: ERROR_DEVICE_IN_USE
+//
+// MessageText:
+//
+// The device is in use by an active process and cannot be disconnected.
+//
+#define ERROR_DEVICE_IN_USE 2404L
+
+//
+// MessageId: ERROR_BAD_DEVICE
+//
+// MessageText:
+//
+// The specified device name is invalid.
+//
+#define ERROR_BAD_DEVICE 1200L
+
+//
+// MessageId: ERROR_CONNECTION_UNAVAIL
+//
+// MessageText:
+//
+// The device is not currently connected but it is a remembered connection.
+//
+#define ERROR_CONNECTION_UNAVAIL 1201L
+
+//
+// MessageId: ERROR_DEVICE_ALREADY_REMEMBERED
+//
+// MessageText:
+//
+// An attempt was made to remember a device that had previously been remembered.
+//
+#define ERROR_DEVICE_ALREADY_REMEMBERED 1202L
+
+//
+// MessageId: ERROR_NO_NET_OR_BAD_PATH
+//
+// MessageText:
+//
+// No network provider accepted the given network path.
+//
+#define ERROR_NO_NET_OR_BAD_PATH 1203L
+
+//
+// MessageId: ERROR_BAD_PROVIDER
+//
+// MessageText:
+//
+// The specified network provider name is invalid.
+//
+#define ERROR_BAD_PROVIDER 1204L
+
+//
+// MessageId: ERROR_CANNOT_OPEN_PROFILE
+//
+// MessageText:
+//
+// Unable to open the network connection profile.
+//
+#define ERROR_CANNOT_OPEN_PROFILE 1205L
+
+//
+// MessageId: ERROR_BAD_PROFILE
+//
+// MessageText:
+//
+// The network connection profile is corrupt.
+//
+#define ERROR_BAD_PROFILE 1206L
+
+//
+// MessageId: ERROR_NOT_CONTAINER
+//
+// MessageText:
+//
+// Cannot enumerate a non-container.
+//
+#define ERROR_NOT_CONTAINER 1207L
+
+//
+// MessageId: ERROR_EXTENDED_ERROR
+//
+// MessageText:
+//
+// An extended error has occurred.
+//
+#define ERROR_EXTENDED_ERROR 1208L
+
+//
+// MessageId: ERROR_INVALID_GROUPNAME
+//
+// MessageText:
+//
+// The format of the specified group name is invalid.
+//
+#define ERROR_INVALID_GROUPNAME 1209L
+
+//
+// MessageId: ERROR_INVALID_COMPUTERNAME
+//
+// MessageText:
+//
+// The format of the specified computer name is invalid.
+//
+#define ERROR_INVALID_COMPUTERNAME 1210L
+
+//
+// MessageId: ERROR_INVALID_EVENTNAME
+//
+// MessageText:
+//
+// The format of the specified event name is invalid.
+//
+#define ERROR_INVALID_EVENTNAME 1211L
+
+//
+// MessageId: ERROR_INVALID_DOMAINNAME
+//
+// MessageText:
+//
+// The format of the specified domain name is invalid.
+//
+#define ERROR_INVALID_DOMAINNAME 1212L
+
+//
+// MessageId: ERROR_INVALID_SERVICENAME
+//
+// MessageText:
+//
+// The format of the specified service name is invalid.
+//
+#define ERROR_INVALID_SERVICENAME 1213L
+
+//
+// MessageId: ERROR_INVALID_NETNAME
+//
+// MessageText:
+//
+// The format of the specified network name is invalid.
+//
+#define ERROR_INVALID_NETNAME 1214L
+
+//
+// MessageId: ERROR_INVALID_SHARENAME
+//
+// MessageText:
+//
+// The format of the specified share name is invalid.
+//
+#define ERROR_INVALID_SHARENAME 1215L
+
+//
+// MessageId: ERROR_INVALID_PASSWORDNAME
+//
+// MessageText:
+//
+// The format of the specified password is invalid.
+//
+#define ERROR_INVALID_PASSWORDNAME 1216L
+
+//
+// MessageId: ERROR_INVALID_MESSAGENAME
+//
+// MessageText:
+//
+// The format of the specified message name is invalid.
+//
+#define ERROR_INVALID_MESSAGENAME 1217L
+
+//
+// MessageId: ERROR_INVALID_MESSAGEDEST
+//
+// MessageText:
+//
+// The format of the specified message destination is invalid.
+//
+#define ERROR_INVALID_MESSAGEDEST 1218L
+
+//
+// MessageId: ERROR_SESSION_CREDENTIAL_CONFLICT
+//
+// MessageText:
+//
+// The credentials supplied conflict with an existing set of credentials.
+//
+#define ERROR_SESSION_CREDENTIAL_CONFLICT 1219L
+
+//
+// MessageId: ERROR_REMOTE_SESSION_LIMIT_EXCEEDED
+//
+// MessageText:
+//
+// An attempt was made to establish a session to a network server, but there
+// are already too many sessions established to that server.
+//
+#define ERROR_REMOTE_SESSION_LIMIT_EXCEEDED 1220L
+
+//
+// MessageId: ERROR_DUP_DOMAINNAME
+//
+// MessageText:
+//
+// The workgroup or domain name is already in use by another computer on the
+// network.
+//
+#define ERROR_DUP_DOMAINNAME 1221L
+
+//
+// MessageId: ERROR_NO_NETWORK
+//
+// MessageText:
+//
+// The network is not present or not started.
+//
+#define ERROR_NO_NETWORK 1222L
+
+//
+// MessageId: ERROR_CANCELLED
+//
+// MessageText:
+//
+// The operation was cancelled by the user.
+//
+#define ERROR_CANCELLED 1223L
+
+//
+// MessageId: ERROR_USER_MAPPED_FILE
+//
+// MessageText:
+//
+// The requested operation cannot be performed on a file with a user mapped section open.
+//
+#define ERROR_USER_MAPPED_FILE 1224L
+
+//
+// MessageId: ERROR_CONNECTION_REFUSED
+//
+// MessageText:
+//
+// The remote system refused the network connection.
+//
+#define ERROR_CONNECTION_REFUSED 1225L
+
+//
+// MessageId: ERROR_GRACEFUL_DISCONNECT
+//
+// MessageText:
+//
+// The network connection was gracefully closed.
+//
+#define ERROR_GRACEFUL_DISCONNECT 1226L
+
+//
+// MessageId: ERROR_ADDRESS_ALREADY_ASSOCIATED
+//
+// MessageText:
+//
+// The network transport endpoint already has an address associated with it.
+//
+#define ERROR_ADDRESS_ALREADY_ASSOCIATED 1227L
+
+//
+// MessageId: ERROR_ADDRESS_NOT_ASSOCIATED
+//
+// MessageText:
+//
+// An address has not yet been associated with the network endpoint.
+//
+#define ERROR_ADDRESS_NOT_ASSOCIATED 1228L
+
+//
+// MessageId: ERROR_CONNECTION_INVALID
+//
+// MessageText:
+//
+// An operation was attempted on a non-existent network connection.
+//
+#define ERROR_CONNECTION_INVALID 1229L
+
+//
+// MessageId: ERROR_CONNECTION_ACTIVE
+//
+// MessageText:
+//
+// An invalid operation was attempted on an active network connection.
+//
+#define ERROR_CONNECTION_ACTIVE 1230L
+
+//
+// MessageId: ERROR_NETWORK_UNREACHABLE
+//
+// MessageText:
+//
+// The remote network is not reachable by the transport.
+//
+#define ERROR_NETWORK_UNREACHABLE 1231L
+
+//
+// MessageId: ERROR_HOST_UNREACHABLE
+//
+// MessageText:
+//
+// The remote system is not reachable by the transport.
+//
+#define ERROR_HOST_UNREACHABLE 1232L
+
+//
+// MessageId: ERROR_PROTOCOL_UNREACHABLE
+//
+// MessageText:
+//
+// The remote system does not support the transport protocol.
+//
+#define ERROR_PROTOCOL_UNREACHABLE 1233L
+
+//
+// MessageId: ERROR_PORT_UNREACHABLE
+//
+// MessageText:
+//
+// No service is operating at the destination network endpoint
+// on the remote system.
+//
+#define ERROR_PORT_UNREACHABLE 1234L
+
+//
+// MessageId: ERROR_REQUEST_ABORTED
+//
+// MessageText:
+//
+// The request was aborted.
+//
+#define ERROR_REQUEST_ABORTED 1235L
+
+//
+// MessageId: ERROR_CONNECTION_ABORTED
+//
+// MessageText:
+//
+// The network connection was aborted by the local system.
+//
+#define ERROR_CONNECTION_ABORTED 1236L
+
+//
+// MessageId: ERROR_RETRY
+//
+// MessageText:
+//
+// The operation could not be completed. A retry should be performed.
+//
+#define ERROR_RETRY 1237L
+
+//
+// MessageId: ERROR_CONNECTION_COUNT_LIMIT
+//
+// MessageText:
+//
+// A connection to the server could not be made because the limit on the number of
+// concurrent connections for this account has been reached.
+//
+#define ERROR_CONNECTION_COUNT_LIMIT 1238L
+
+//
+// MessageId: ERROR_LOGIN_TIME_RESTRICTION
+//
+// MessageText:
+//
+// Attempting to login during an unauthorized time of day for this account.
+//
+#define ERROR_LOGIN_TIME_RESTRICTION 1239L
+
+//
+// MessageId: ERROR_LOGIN_WKSTA_RESTRICTION
+//
+// MessageText:
+//
+// The account is not authorized to login from this station.
+//
+#define ERROR_LOGIN_WKSTA_RESTRICTION 1240L
+
+//
+// MessageId: ERROR_INCORRECT_ADDRESS
+//
+// MessageText:
+//
+// The network address could not be used for the operation requested.
+//
+#define ERROR_INCORRECT_ADDRESS 1241L
+
+//
+// MessageId: ERROR_ALREADY_REGISTERED
+//
+// MessageText:
+//
+// The service is already registered.
+//
+#define ERROR_ALREADY_REGISTERED 1242L
+
+//
+// MessageId: ERROR_SERVICE_NOT_FOUND
+//
+// MessageText:
+//
+// The specified service does not exist.
+//
+#define ERROR_SERVICE_NOT_FOUND 1243L
+
+//
+// MessageId: ERROR_NOT_AUTHENTICATED
+//
+// MessageText:
+//
+// The operation being requested was not performed because the user
+// has not been authenticated.
+//
+#define ERROR_NOT_AUTHENTICATED 1244L
+
+//
+// MessageId: ERROR_NOT_LOGGED_ON
+//
+// MessageText:
+//
+// The operation being requested was not performed because the user
+// has not logged on to the network.
+// The specified service does not exist.
+//
+#define ERROR_NOT_LOGGED_ON 1245L
+
+//
+// MessageId: ERROR_CONTINUE
+//
+// MessageText:
+//
+// Return that wants caller to continue with work in progress.
+//
+#define ERROR_CONTINUE 1246L
+
+//
+// MessageId: ERROR_ALREADY_INITIALIZED
+//
+// MessageText:
+//
+// An attempt was made to perform an initialization operation when
+// initialization has already been completed.
+//
+#define ERROR_ALREADY_INITIALIZED 1247L
+
+//
+// MessageId: ERROR_NO_MORE_DEVICES
+//
+// MessageText:
+//
+// No more local devices.
+//
+#define ERROR_NO_MORE_DEVICES 1248L
+
+
+
+
+///////////////////////////
+// //
+// Security Status Codes //
+// //
+///////////////////////////
+
+
+//
+// MessageId: ERROR_NOT_ALL_ASSIGNED
+//
+// MessageText:
+//
+// Not all privileges referenced are assigned to the caller.
+//
+#define ERROR_NOT_ALL_ASSIGNED 1300L
+
+//
+// MessageId: ERROR_SOME_NOT_MAPPED
+//
+// MessageText:
+//
+// Some mapping between account names and security IDs was not done.
+//
+#define ERROR_SOME_NOT_MAPPED 1301L
+
+//
+// MessageId: ERROR_NO_QUOTAS_FOR_ACCOUNT
+//
+// MessageText:
+//
+// No system quota limits are specifically set for this account.
+//
+#define ERROR_NO_QUOTAS_FOR_ACCOUNT 1302L
+
+//
+// MessageId: ERROR_LOCAL_USER_SESSION_KEY
+//
+// MessageText:
+//
+// No encryption key is available. A well-known encryption key was returned.
+//
+#define ERROR_LOCAL_USER_SESSION_KEY 1303L
+
+//
+// MessageId: ERROR_NULL_LM_PASSWORD
+//
+// MessageText:
+//
+// The NT password is too complex to be converted to a LAN Manager
+// password. The LAN Manager password returned is a NULL string.
+//
+#define ERROR_NULL_LM_PASSWORD 1304L
+
+//
+// MessageId: ERROR_UNKNOWN_REVISION
+//
+// MessageText:
+//
+// The revision level is unknown.
+//
+#define ERROR_UNKNOWN_REVISION 1305L
+
+//
+// MessageId: ERROR_REVISION_MISMATCH
+//
+// MessageText:
+//
+// Indicates two revision levels are incompatible.
+//
+#define ERROR_REVISION_MISMATCH 1306L
+
+//
+// MessageId: ERROR_INVALID_OWNER
+//
+// MessageText:
+//
+// This security ID may not be assigned as the owner of this object.
+//
+#define ERROR_INVALID_OWNER 1307L
+
+//
+// MessageId: ERROR_INVALID_PRIMARY_GROUP
+//
+// MessageText:
+//
+// This security ID may not be assigned as the primary group of an object.
+//
+#define ERROR_INVALID_PRIMARY_GROUP 1308L
+
+//
+// MessageId: ERROR_NO_IMPERSONATION_TOKEN
+//
+// MessageText:
+//
+// An attempt has been made to operate on an impersonation token
+// by a thread that is not currently impersonating a client.
+//
+#define ERROR_NO_IMPERSONATION_TOKEN 1309L
+
+//
+// MessageId: ERROR_CANT_DISABLE_MANDATORY
+//
+// MessageText:
+//
+// The group may not be disabled.
+//
+#define ERROR_CANT_DISABLE_MANDATORY 1310L
+
+//
+// MessageId: ERROR_NO_LOGON_SERVERS
+//
+// MessageText:
+//
+// There are currently no logon servers available to service the logon
+// request.
+//
+#define ERROR_NO_LOGON_SERVERS 1311L
+
+//
+// MessageId: ERROR_NO_SUCH_LOGON_SESSION
+//
+// MessageText:
+//
+// A specified logon session does not exist. It may already have
+// been terminated.
+//
+#define ERROR_NO_SUCH_LOGON_SESSION 1312L
+
+//
+// MessageId: ERROR_NO_SUCH_PRIVILEGE
+//
+// MessageText:
+//
+// A specified privilege does not exist.
+//
+#define ERROR_NO_SUCH_PRIVILEGE 1313L
+
+//
+// MessageId: ERROR_PRIVILEGE_NOT_HELD
+//
+// MessageText:
+//
+// A required privilege is not held by the client.
+//
+#define ERROR_PRIVILEGE_NOT_HELD 1314L
+
+//
+// MessageId: ERROR_INVALID_ACCOUNT_NAME
+//
+// MessageText:
+//
+// The name provided is not a properly formed account name.
+//
+#define ERROR_INVALID_ACCOUNT_NAME 1315L
+
+//
+// MessageId: ERROR_USER_EXISTS
+//
+// MessageText:
+//
+// The specified user already exists.
+//
+#define ERROR_USER_EXISTS 1316L
+
+//
+// MessageId: ERROR_NO_SUCH_USER
+//
+// MessageText:
+//
+// The specified user does not exist.
+//
+#define ERROR_NO_SUCH_USER 1317L
+
+//
+// MessageId: ERROR_GROUP_EXISTS
+//
+// MessageText:
+//
+// The specified group already exists.
+//
+#define ERROR_GROUP_EXISTS 1318L
+
+//
+// MessageId: ERROR_NO_SUCH_GROUP
+//
+// MessageText:
+//
+// The specified group does not exist.
+//
+#define ERROR_NO_SUCH_GROUP 1319L
+
+//
+// MessageId: ERROR_MEMBER_IN_GROUP
+//
+// MessageText:
+//
+// Either the specified user account is already a member of the specified
+// group, or the specified group cannot be deleted because it contains
+// a member.
+//
+#define ERROR_MEMBER_IN_GROUP 1320L
+
+//
+// MessageId: ERROR_MEMBER_NOT_IN_GROUP
+//
+// MessageText:
+//
+// The specified user account is not a member of the specified group account.
+//
+#define ERROR_MEMBER_NOT_IN_GROUP 1321L
+
+//
+// MessageId: ERROR_LAST_ADMIN
+//
+// MessageText:
+//
+// The last remaining administration account cannot be disabled
+// or deleted.
+//
+#define ERROR_LAST_ADMIN 1322L
+
+//
+// MessageId: ERROR_WRONG_PASSWORD
+//
+// MessageText:
+//
+// Unable to update the password. The value provided as the current
+// password is incorrect.
+//
+#define ERROR_WRONG_PASSWORD 1323L
+
+//
+// MessageId: ERROR_ILL_FORMED_PASSWORD
+//
+// MessageText:
+//
+// Unable to update the password. The value provided for the new password
+// contains values that are not allowed in passwords.
+//
+#define ERROR_ILL_FORMED_PASSWORD 1324L
+
+//
+// MessageId: ERROR_PASSWORD_RESTRICTION
+//
+// MessageText:
+//
+// Unable to update the password because a password update rule has been
+// violated.
+//
+#define ERROR_PASSWORD_RESTRICTION 1325L
+
+//
+// MessageId: ERROR_LOGON_FAILURE
+//
+// MessageText:
+//
+// Logon failure: unknown user name or bad password.
+//
+#define ERROR_LOGON_FAILURE 1326L
+
+//
+// MessageId: ERROR_ACCOUNT_RESTRICTION
+//
+// MessageText:
+//
+// Logon failure: user account restriction.
+//
+#define ERROR_ACCOUNT_RESTRICTION 1327L
+
+//
+// MessageId: ERROR_INVALID_LOGON_HOURS
+//
+// MessageText:
+//
+// Logon failure: account logon time restriction violation.
+//
+#define ERROR_INVALID_LOGON_HOURS 1328L
+
+//
+// MessageId: ERROR_INVALID_WORKSTATION
+//
+// MessageText:
+//
+// Logon failure: user not allowed to log on to this computer.
+//
+#define ERROR_INVALID_WORKSTATION 1329L
+
+//
+// MessageId: ERROR_PASSWORD_EXPIRED
+//
+// MessageText:
+//
+// Logon failure: the specified account password has expired.
+//
+#define ERROR_PASSWORD_EXPIRED 1330L
+
+//
+// MessageId: ERROR_ACCOUNT_DISABLED
+//
+// MessageText:
+//
+// Logon failure: account currently disabled.
+//
+#define ERROR_ACCOUNT_DISABLED 1331L
+
+//
+// MessageId: ERROR_NONE_MAPPED
+//
+// MessageText:
+//
+// No mapping between account names and security IDs was done.
+//
+#define ERROR_NONE_MAPPED 1332L
+
+//
+// MessageId: ERROR_TOO_MANY_LUIDS_REQUESTED
+//
+// MessageText:
+//
+// Too many local user identifiers (LUIDs) were requested at one time.
+//
+#define ERROR_TOO_MANY_LUIDS_REQUESTED 1333L
+
+//
+// MessageId: ERROR_LUIDS_EXHAUSTED
+//
+// MessageText:
+//
+// No more local user identifiers (LUIDs) are available.
+//
+#define ERROR_LUIDS_EXHAUSTED 1334L
+
+//
+// MessageId: ERROR_INVALID_SUB_AUTHORITY
+//
+// MessageText:
+//
+// The subauthority part of a security ID is invalid for this particular use.
+//
+#define ERROR_INVALID_SUB_AUTHORITY 1335L
+
+//
+// MessageId: ERROR_INVALID_ACL
+//
+// MessageText:
+//
+// The access control list (ACL) structure is invalid.
+//
+#define ERROR_INVALID_ACL 1336L
+
+//
+// MessageId: ERROR_INVALID_SID
+//
+// MessageText:
+//
+// The security ID structure is invalid.
+//
+#define ERROR_INVALID_SID 1337L
+
+//
+// MessageId: ERROR_INVALID_SECURITY_DESCR
+//
+// MessageText:
+//
+// The security descriptor structure is invalid.
+//
+#define ERROR_INVALID_SECURITY_DESCR 1338L
+
+//
+// MessageId: ERROR_BAD_INHERITANCE_ACL
+//
+// MessageText:
+//
+// The inherited access control list (ACL) or access control entry (ACE)
+// could not be built.
+//
+#define ERROR_BAD_INHERITANCE_ACL 1340L
+
+//
+// MessageId: ERROR_SERVER_DISABLED
+//
+// MessageText:
+//
+// The server is currently disabled.
+//
+#define ERROR_SERVER_DISABLED 1341L
+
+//
+// MessageId: ERROR_SERVER_NOT_DISABLED
+//
+// MessageText:
+//
+// The server is currently enabled.
+//
+#define ERROR_SERVER_NOT_DISABLED 1342L
+
+//
+// MessageId: ERROR_INVALID_ID_AUTHORITY
+//
+// MessageText:
+//
+// The value provided was an invalid value for an identifier authority.
+//
+#define ERROR_INVALID_ID_AUTHORITY 1343L
+
+//
+// MessageId: ERROR_ALLOTTED_SPACE_EXCEEDED
+//
+// MessageText:
+//
+// No more memory is available for security information updates.
+//
+#define ERROR_ALLOTTED_SPACE_EXCEEDED 1344L
+
+//
+// MessageId: ERROR_INVALID_GROUP_ATTRIBUTES
+//
+// MessageText:
+//
+// The specified attributes are invalid, or incompatible with the
+// attributes for the group as a whole.
+//
+#define ERROR_INVALID_GROUP_ATTRIBUTES 1345L
+
+//
+// MessageId: ERROR_BAD_IMPERSONATION_LEVEL
+//
+// MessageText:
+//
+// Either a required impersonation level was not provided, or the
+// provided impersonation level is invalid.
+//
+#define ERROR_BAD_IMPERSONATION_LEVEL 1346L
+
+//
+// MessageId: ERROR_CANT_OPEN_ANONYMOUS
+//
+// MessageText:
+//
+// Cannot open an anonymous level security token.
+//
+#define ERROR_CANT_OPEN_ANONYMOUS 1347L
+
+//
+// MessageId: ERROR_BAD_VALIDATION_CLASS
+//
+// MessageText:
+//
+// The validation information class requested was invalid.
+//
+#define ERROR_BAD_VALIDATION_CLASS 1348L
+
+//
+// MessageId: ERROR_BAD_TOKEN_TYPE
+//
+// MessageText:
+//
+// The type of the token is inappropriate for its attempted use.
+//
+#define ERROR_BAD_TOKEN_TYPE 1349L
+
+//
+// MessageId: ERROR_NO_SECURITY_ON_OBJECT
+//
+// MessageText:
+//
+// Unable to perform a security operation on an object
+// which has no associated security.
+//
+#define ERROR_NO_SECURITY_ON_OBJECT 1350L
+
+//
+// MessageId: ERROR_CANT_ACCESS_DOMAIN_INFO
+//
+// MessageText:
+//
+// Indicates a Windows NT Server could not be contacted or that
+// objects within the domain are protected such that necessary
+// information could not be retrieved.
+//
+#define ERROR_CANT_ACCESS_DOMAIN_INFO 1351L
+
+//
+// MessageId: ERROR_INVALID_SERVER_STATE
+//
+// MessageText:
+//
+// The security account manager (SAM) or local security
+// authority (LSA) server was in the wrong state to perform
+// the security operation.
+//
+#define ERROR_INVALID_SERVER_STATE 1352L
+
+//
+// MessageId: ERROR_INVALID_DOMAIN_STATE
+//
+// MessageText:
+//
+// The domain was in the wrong state to perform the security operation.
+//
+#define ERROR_INVALID_DOMAIN_STATE 1353L
+
+//
+// MessageId: ERROR_INVALID_DOMAIN_ROLE
+//
+// MessageText:
+//
+// This operation is only allowed for the Primary Domain Controller of the domain.
+//
+#define ERROR_INVALID_DOMAIN_ROLE 1354L
+
+//
+// MessageId: ERROR_NO_SUCH_DOMAIN
+//
+// MessageText:
+//
+// The specified domain did not exist.
+//
+#define ERROR_NO_SUCH_DOMAIN 1355L
+
+//
+// MessageId: ERROR_DOMAIN_EXISTS
+//
+// MessageText:
+//
+// The specified domain already exists.
+//
+#define ERROR_DOMAIN_EXISTS 1356L
+
+//
+// MessageId: ERROR_DOMAIN_LIMIT_EXCEEDED
+//
+// MessageText:
+//
+// An attempt was made to exceed the limit on the number of domains per server.
+//
+#define ERROR_DOMAIN_LIMIT_EXCEEDED 1357L
+
+//
+// MessageId: ERROR_INTERNAL_DB_CORRUPTION
+//
+// MessageText:
+//
+// Unable to complete the requested operation because of either a
+// catastrophic media failure or a data structure corruption on the disk.
+//
+#define ERROR_INTERNAL_DB_CORRUPTION 1358L
+
+//
+// MessageId: ERROR_INTERNAL_ERROR
+//
+// MessageText:
+//
+// The security account database contains an internal inconsistency.
+//
+#define ERROR_INTERNAL_ERROR 1359L
+
+//
+// MessageId: ERROR_GENERIC_NOT_MAPPED
+//
+// MessageText:
+//
+// Generic access types were contained in an access mask which should
+// already be mapped to non-generic types.
+//
+#define ERROR_GENERIC_NOT_MAPPED 1360L
+
+//
+// MessageId: ERROR_BAD_DESCRIPTOR_FORMAT
+//
+// MessageText:
+//
+// A security descriptor is not in the right format (absolute or self-relative).
+//
+#define ERROR_BAD_DESCRIPTOR_FORMAT 1361L
+
+//
+// MessageId: ERROR_NOT_LOGON_PROCESS
+//
+// MessageText:
+//
+// The requested action is restricted for use by logon processes
+// only. The calling process has not registered as a logon process.
+//
+#define ERROR_NOT_LOGON_PROCESS 1362L
+
+//
+// MessageId: ERROR_LOGON_SESSION_EXISTS
+//
+// MessageText:
+//
+// Cannot start a new logon session with an ID that is already in use.
+//
+#define ERROR_LOGON_SESSION_EXISTS 1363L
+
+//
+// MessageId: ERROR_NO_SUCH_PACKAGE
+//
+// MessageText:
+//
+// A specified authentication package is unknown.
+//
+#define ERROR_NO_SUCH_PACKAGE 1364L
+
+//
+// MessageId: ERROR_BAD_LOGON_SESSION_STATE
+//
+// MessageText:
+//
+// The logon session is not in a state that is consistent with the
+// requested operation.
+//
+#define ERROR_BAD_LOGON_SESSION_STATE 1365L
+
+//
+// MessageId: ERROR_LOGON_SESSION_COLLISION
+//
+// MessageText:
+//
+// The logon session ID is already in use.
+//
+#define ERROR_LOGON_SESSION_COLLISION 1366L
+
+//
+// MessageId: ERROR_INVALID_LOGON_TYPE
+//
+// MessageText:
+//
+// A logon request contained an invalid logon type value.
+//
+#define ERROR_INVALID_LOGON_TYPE 1367L
+
+//
+// MessageId: ERROR_CANNOT_IMPERSONATE
+//
+// MessageText:
+//
+// Unable to impersonate via a named pipe until data has been read
+// from that pipe.
+//
+#define ERROR_CANNOT_IMPERSONATE 1368L
+
+//
+// MessageId: ERROR_RXACT_INVALID_STATE
+//
+// MessageText:
+//
+// The transaction state of a Registry subtree is incompatible with the
+// requested operation.
+//
+#define ERROR_RXACT_INVALID_STATE 1369L
+
+//
+// MessageId: ERROR_RXACT_COMMIT_FAILURE
+//
+// MessageText:
+//
+// An internal security database corruption has been encountered.
+//
+#define ERROR_RXACT_COMMIT_FAILURE 1370L
+
+//
+// MessageId: ERROR_SPECIAL_ACCOUNT
+//
+// MessageText:
+//
+// Cannot perform this operation on built-in accounts.
+//
+#define ERROR_SPECIAL_ACCOUNT 1371L
+
+//
+// MessageId: ERROR_SPECIAL_GROUP
+//
+// MessageText:
+//
+// Cannot perform this operation on this built-in special group.
+//
+#define ERROR_SPECIAL_GROUP 1372L
+
+//
+// MessageId: ERROR_SPECIAL_USER
+//
+// MessageText:
+//
+// Cannot perform this operation on this built-in special user.
+//
+#define ERROR_SPECIAL_USER 1373L
+
+//
+// MessageId: ERROR_MEMBERS_PRIMARY_GROUP
+//
+// MessageText:
+//
+// The user cannot be removed from a group because the group
+// is currently the user's primary group.
+//
+#define ERROR_MEMBERS_PRIMARY_GROUP 1374L
+
+//
+// MessageId: ERROR_TOKEN_ALREADY_IN_USE
+//
+// MessageText:
+//
+// The token is already in use as a primary token.
+//
+#define ERROR_TOKEN_ALREADY_IN_USE 1375L
+
+//
+// MessageId: ERROR_NO_SUCH_ALIAS
+//
+// MessageText:
+//
+// The specified local group does not exist.
+//
+#define ERROR_NO_SUCH_ALIAS 1376L
+
+//
+// MessageId: ERROR_MEMBER_NOT_IN_ALIAS
+//
+// MessageText:
+//
+// The specified account name is not a member of the local group.
+//
+#define ERROR_MEMBER_NOT_IN_ALIAS 1377L
+
+//
+// MessageId: ERROR_MEMBER_IN_ALIAS
+//
+// MessageText:
+//
+// The specified account name is already a member of the local group.
+//
+#define ERROR_MEMBER_IN_ALIAS 1378L
+
+//
+// MessageId: ERROR_ALIAS_EXISTS
+//
+// MessageText:
+//
+// The specified local group already exists.
+//
+#define ERROR_ALIAS_EXISTS 1379L
+
+//
+// MessageId: ERROR_LOGON_NOT_GRANTED
+//
+// MessageText:
+//
+// Logon failure: the user has not been granted the requested
+// logon type at this computer.
+//
+#define ERROR_LOGON_NOT_GRANTED 1380L
+
+//
+// MessageId: ERROR_TOO_MANY_SECRETS
+//
+// MessageText:
+//
+// The maximum number of secrets that may be stored in a single system has been
+// exceeded.
+//
+#define ERROR_TOO_MANY_SECRETS 1381L
+
+//
+// MessageId: ERROR_SECRET_TOO_LONG
+//
+// MessageText:
+//
+// The length of a secret exceeds the maximum length allowed.
+//
+#define ERROR_SECRET_TOO_LONG 1382L
+
+//
+// MessageId: ERROR_INTERNAL_DB_ERROR
+//
+// MessageText:
+//
+// The local security authority database contains an internal inconsistency.
+//
+#define ERROR_INTERNAL_DB_ERROR 1383L
+
+//
+// MessageId: ERROR_TOO_MANY_CONTEXT_IDS
+//
+// MessageText:
+//
+// During a logon attempt, the user's security context accumulated too many
+// security IDs.
+//
+#define ERROR_TOO_MANY_CONTEXT_IDS 1384L
+
+//
+// MessageId: ERROR_LOGON_TYPE_NOT_GRANTED
+//
+// MessageText:
+//
+// Logon failure: the user has not been granted the requested logon type
+// at this computer.
+//
+#define ERROR_LOGON_TYPE_NOT_GRANTED 1385L
+
+//
+// MessageId: ERROR_NT_CROSS_ENCRYPTION_REQUIRED
+//
+// MessageText:
+//
+// A cross-encrypted password is necessary to change a user password.
+//
+#define ERROR_NT_CROSS_ENCRYPTION_REQUIRED 1386L
+
+//
+// MessageId: ERROR_NO_SUCH_MEMBER
+//
+// MessageText:
+//
+// A new member could not be added to a local group because the member does
+// not exist.
+//
+#define ERROR_NO_SUCH_MEMBER 1387L
+
+//
+// MessageId: ERROR_INVALID_MEMBER
+//
+// MessageText:
+//
+// A new member could not be added to a local group because the member has the
+// wrong account type.
+//
+#define ERROR_INVALID_MEMBER 1388L
+
+//
+// MessageId: ERROR_TOO_MANY_SIDS
+//
+// MessageText:
+//
+// Too many security IDs have been specified.
+//
+#define ERROR_TOO_MANY_SIDS 1389L
+
+//
+// MessageId: ERROR_LM_CROSS_ENCRYPTION_REQUIRED
+//
+// MessageText:
+//
+// A cross-encrypted password is necessary to change this user password.
+//
+#define ERROR_LM_CROSS_ENCRYPTION_REQUIRED 1390L
+
+//
+// MessageId: ERROR_NO_INHERITANCE
+//
+// MessageText:
+//
+// Indicates an ACL contains no inheritable components
+//
+#define ERROR_NO_INHERITANCE 1391L
+
+//
+// MessageId: ERROR_FILE_CORRUPT
+//
+// MessageText:
+//
+// The file or directory is corrupt and non-readable.
+//
+#define ERROR_FILE_CORRUPT 1392L
+
+//
+// MessageId: ERROR_DISK_CORRUPT
+//
+// MessageText:
+//
+// The disk structure is corrupt and non-readable.
+//
+#define ERROR_DISK_CORRUPT 1393L
+
+//
+// MessageId: ERROR_NO_USER_SESSION_KEY
+//
+// MessageText:
+//
+// There is no user session key for the specified logon session.
+//
+#define ERROR_NO_USER_SESSION_KEY 1394L
+
+//
+// MessageId: ERROR_LICENSE_QUOTA_EXCEEDED
+//
+// MessageText:
+//
+// The service being accessed is licensed for a particular number of connections.
+// No more connections can be made to the service at this time
+// because there are already as many connections as the service can accept.
+//
+#define ERROR_LICENSE_QUOTA_EXCEEDED 1395L
+
+// End of security error codes
+
+
+
+///////////////////////////
+// //
+// WinUser Error Codes //
+// //
+///////////////////////////
+
+
+//
+// MessageId: ERROR_INVALID_WINDOW_HANDLE
+//
+// MessageText:
+//
+// Invalid window handle.
+//
+#define ERROR_INVALID_WINDOW_HANDLE 1400L
+
+//
+// MessageId: ERROR_INVALID_MENU_HANDLE
+//
+// MessageText:
+//
+// Invalid menu handle.
+//
+#define ERROR_INVALID_MENU_HANDLE 1401L
+
+//
+// MessageId: ERROR_INVALID_CURSOR_HANDLE
+//
+// MessageText:
+//
+// Invalid cursor handle.
+//
+#define ERROR_INVALID_CURSOR_HANDLE 1402L
+
+//
+// MessageId: ERROR_INVALID_ACCEL_HANDLE
+//
+// MessageText:
+//
+// Invalid accelerator table handle.
+//
+#define ERROR_INVALID_ACCEL_HANDLE 1403L
+
+//
+// MessageId: ERROR_INVALID_HOOK_HANDLE
+//
+// MessageText:
+//
+// Invalid hook handle.
+//
+#define ERROR_INVALID_HOOK_HANDLE 1404L
+
+//
+// MessageId: ERROR_INVALID_DWP_HANDLE
+//
+// MessageText:
+//
+// Invalid handle to a multiple-window position structure.
+//
+#define ERROR_INVALID_DWP_HANDLE 1405L
+
+//
+// MessageId: ERROR_TLW_WITH_WSCHILD
+//
+// MessageText:
+//
+// Cannot create a top-level child window.
+//
+#define ERROR_TLW_WITH_WSCHILD 1406L
+
+//
+// MessageId: ERROR_CANNOT_FIND_WND_CLASS
+//
+// MessageText:
+//
+// Cannot find window class.
+//
+#define ERROR_CANNOT_FIND_WND_CLASS 1407L
+
+//
+// MessageId: ERROR_WINDOW_OF_OTHER_THREAD
+//
+// MessageText:
+//
+// Invalid window, belongs to other thread.
+//
+#define ERROR_WINDOW_OF_OTHER_THREAD 1408L
+
+//
+// MessageId: ERROR_HOTKEY_ALREADY_REGISTERED
+//
+// MessageText:
+//
+// Hot key is already registered.
+//
+#define ERROR_HOTKEY_ALREADY_REGISTERED 1409L
+
+//
+// MessageId: ERROR_CLASS_ALREADY_EXISTS
+//
+// MessageText:
+//
+// Class already exists.
+//
+#define ERROR_CLASS_ALREADY_EXISTS 1410L
+
+//
+// MessageId: ERROR_CLASS_DOES_NOT_EXIST
+//
+// MessageText:
+//
+// Class does not exist.
+//
+#define ERROR_CLASS_DOES_NOT_EXIST 1411L
+
+//
+// MessageId: ERROR_CLASS_HAS_WINDOWS
+//
+// MessageText:
+//
+// Class still has open windows.
+//
+#define ERROR_CLASS_HAS_WINDOWS 1412L
+
+//
+// MessageId: ERROR_INVALID_INDEX
+//
+// MessageText:
+//
+// Invalid index.
+//
+#define ERROR_INVALID_INDEX 1413L
+
+//
+// MessageId: ERROR_INVALID_ICON_HANDLE
+//
+// MessageText:
+//
+// Invalid icon handle.
+//
+#define ERROR_INVALID_ICON_HANDLE 1414L
+
+//
+// MessageId: ERROR_PRIVATE_DIALOG_INDEX
+//
+// MessageText:
+//
+// Using private DIALOG window words.
+//
+#define ERROR_PRIVATE_DIALOG_INDEX 1415L
+
+//
+// MessageId: ERROR_LISTBOX_ID_NOT_FOUND
+//
+// MessageText:
+//
+// The listbox identifier was not found.
+//
+#define ERROR_LISTBOX_ID_NOT_FOUND 1416L
+
+//
+// MessageId: ERROR_NO_WILDCARD_CHARACTERS
+//
+// MessageText:
+//
+// No wildcards were found.
+//
+#define ERROR_NO_WILDCARD_CHARACTERS 1417L
+
+//
+// MessageId: ERROR_CLIPBOARD_NOT_OPEN
+//
+// MessageText:
+//
+// Thread does not have a clipboard open.
+//
+#define ERROR_CLIPBOARD_NOT_OPEN 1418L
+
+//
+// MessageId: ERROR_HOTKEY_NOT_REGISTERED
+//
+// MessageText:
+//
+// Hot key is not registered.
+//
+#define ERROR_HOTKEY_NOT_REGISTERED 1419L
+
+//
+// MessageId: ERROR_WINDOW_NOT_DIALOG
+//
+// MessageText:
+//
+// The window is not a valid dialog window.
+//
+#define ERROR_WINDOW_NOT_DIALOG 1420L
+
+//
+// MessageId: ERROR_CONTROL_ID_NOT_FOUND
+//
+// MessageText:
+//
+// Control ID not found.
+//
+#define ERROR_CONTROL_ID_NOT_FOUND 1421L
+
+//
+// MessageId: ERROR_INVALID_COMBOBOX_MESSAGE
+//
+// MessageText:
+//
+// Invalid message for a combo box because it does not have an edit control.
+//
+#define ERROR_INVALID_COMBOBOX_MESSAGE 1422L
+
+//
+// MessageId: ERROR_WINDOW_NOT_COMBOBOX
+//
+// MessageText:
+//
+// The window is not a combo box.
+//
+#define ERROR_WINDOW_NOT_COMBOBOX 1423L
+
+//
+// MessageId: ERROR_INVALID_EDIT_HEIGHT
+//
+// MessageText:
+//
+// Height must be less than 256.
+//
+#define ERROR_INVALID_EDIT_HEIGHT 1424L
+
+//
+// MessageId: ERROR_DC_NOT_FOUND
+//
+// MessageText:
+//
+// Invalid device context (DC) handle.
+//
+#define ERROR_DC_NOT_FOUND 1425L
+
+//
+// MessageId: ERROR_INVALID_HOOK_FILTER
+//
+// MessageText:
+//
+// Invalid hook procedure type.
+//
+#define ERROR_INVALID_HOOK_FILTER 1426L
+
+//
+// MessageId: ERROR_INVALID_FILTER_PROC
+//
+// MessageText:
+//
+// Invalid hook procedure.
+//
+#define ERROR_INVALID_FILTER_PROC 1427L
+
+//
+// MessageId: ERROR_HOOK_NEEDS_HMOD
+//
+// MessageText:
+//
+// Cannot set non-local hook without a module handle.
+//
+#define ERROR_HOOK_NEEDS_HMOD 1428L
+
+//
+// MessageId: ERROR_GLOBAL_ONLY_HOOK
+//
+// MessageText:
+//
+// This hook procedure can only be set globally.
+//
+#define ERROR_GLOBAL_ONLY_HOOK 1429L
+
+//
+// MessageId: ERROR_JOURNAL_HOOK_SET
+//
+// MessageText:
+//
+// The journal hook procedure is already installed.
+//
+#define ERROR_JOURNAL_HOOK_SET 1430L
+
+//
+// MessageId: ERROR_HOOK_NOT_INSTALLED
+//
+// MessageText:
+//
+// The hook procedure is not installed.
+//
+#define ERROR_HOOK_NOT_INSTALLED 1431L
+
+//
+// MessageId: ERROR_INVALID_LB_MESSAGE
+//
+// MessageText:
+//
+// Invalid message for single-selection listbox.
+//
+#define ERROR_INVALID_LB_MESSAGE 1432L
+
+//
+// MessageId: ERROR_SETCOUNT_ON_BAD_LB
+//
+// MessageText:
+//
+// LB_SETCOUNT sent to non-lazy listbox.
+//
+#define ERROR_SETCOUNT_ON_BAD_LB 1433L
+
+//
+// MessageId: ERROR_LB_WITHOUT_TABSTOPS
+//
+// MessageText:
+//
+// This list box does not support tab stops.
+//
+#define ERROR_LB_WITHOUT_TABSTOPS 1434L
+
+//
+// MessageId: ERROR_DESTROY_OBJECT_OF_OTHER_THREAD
+//
+// MessageText:
+//
+// Cannot destroy object created by another thread.
+//
+#define ERROR_DESTROY_OBJECT_OF_OTHER_THREAD 1435L
+
+//
+// MessageId: ERROR_CHILD_WINDOW_MENU
+//
+// MessageText:
+//
+// Child windows cannot have menus.
+//
+#define ERROR_CHILD_WINDOW_MENU 1436L
+
+//
+// MessageId: ERROR_NO_SYSTEM_MENU
+//
+// MessageText:
+//
+// The window does not have a system menu.
+//
+#define ERROR_NO_SYSTEM_MENU 1437L
+
+//
+// MessageId: ERROR_INVALID_MSGBOX_STYLE
+//
+// MessageText:
+//
+// Invalid message box style.
+//
+#define ERROR_INVALID_MSGBOX_STYLE 1438L
+
+//
+// MessageId: ERROR_INVALID_SPI_VALUE
+//
+// MessageText:
+//
+// Invalid system-wide (SPI_*) parameter.
+//
+#define ERROR_INVALID_SPI_VALUE 1439L
+
+//
+// MessageId: ERROR_SCREEN_ALREADY_LOCKED
+//
+// MessageText:
+//
+// Screen already locked.
+//
+#define ERROR_SCREEN_ALREADY_LOCKED 1440L
+
+//
+// MessageId: ERROR_HWNDS_HAVE_DIFF_PARENT
+//
+// MessageText:
+//
+// All handles to windows in a multiple-window position structure must
+// have the same parent.
+//
+#define ERROR_HWNDS_HAVE_DIFF_PARENT 1441L
+
+//
+// MessageId: ERROR_NOT_CHILD_WINDOW
+//
+// MessageText:
+//
+// The window is not a child window.
+//
+#define ERROR_NOT_CHILD_WINDOW 1442L
+
+//
+// MessageId: ERROR_INVALID_GW_COMMAND
+//
+// MessageText:
+//
+// Invalid GW_* command.
+//
+#define ERROR_INVALID_GW_COMMAND 1443L
+
+//
+// MessageId: ERROR_INVALID_THREAD_ID
+//
+// MessageText:
+//
+// Invalid thread identifier.
+//
+#define ERROR_INVALID_THREAD_ID 1444L
+
+//
+// MessageId: ERROR_NON_MDICHILD_WINDOW
+//
+// MessageText:
+//
+// Cannot process a message from a window that is not a multiple document
+// interface (MDI) window.
+//
+#define ERROR_NON_MDICHILD_WINDOW 1445L
+
+//
+// MessageId: ERROR_POPUP_ALREADY_ACTIVE
+//
+// MessageText:
+//
+// Popup menu already active.
+//
+#define ERROR_POPUP_ALREADY_ACTIVE 1446L
+
+//
+// MessageId: ERROR_NO_SCROLLBARS
+//
+// MessageText:
+//
+// The window does not have scroll bars.
+//
+#define ERROR_NO_SCROLLBARS 1447L
+
+//
+// MessageId: ERROR_INVALID_SCROLLBAR_RANGE
+//
+// MessageText:
+//
+// Scroll bar range cannot be greater than 0x7FFF.
+//
+#define ERROR_INVALID_SCROLLBAR_RANGE 1448L
+
+//
+// MessageId: ERROR_INVALID_SHOWWIN_COMMAND
+//
+// MessageText:
+//
+// Cannot show or remove the window in the way specified.
+//
+#define ERROR_INVALID_SHOWWIN_COMMAND 1449L
+
+//
+// MessageId: ERROR_NO_SYSTEM_RESOURCES
+//
+// MessageText:
+//
+// Insufficient system resources exist to complete the requested service.
+//
+#define ERROR_NO_SYSTEM_RESOURCES 1450L
+
+//
+// MessageId: ERROR_NONPAGED_SYSTEM_RESOURCES
+//
+// MessageText:
+//
+// Insufficient system resources exist to complete the requested service.
+//
+#define ERROR_NONPAGED_SYSTEM_RESOURCES 1451L
+
+//
+// MessageId: ERROR_PAGED_SYSTEM_RESOURCES
+//
+// MessageText:
+//
+// Insufficient system resources exist to complete the requested service.
+//
+#define ERROR_PAGED_SYSTEM_RESOURCES 1452L
+
+//
+// MessageId: ERROR_WORKING_SET_QUOTA
+//
+// MessageText:
+//
+// Insufficient quota to complete the requested service.
+//
+#define ERROR_WORKING_SET_QUOTA 1453L
+
+//
+// MessageId: ERROR_PAGEFILE_QUOTA
+//
+// MessageText:
+//
+// Insufficient quota to complete the requested service.
+//
+#define ERROR_PAGEFILE_QUOTA 1454L
+
+//
+// MessageId: ERROR_COMMITMENT_LIMIT
+//
+// MessageText:
+//
+// The paging file is too small for this operation to complete.
+//
+#define ERROR_COMMITMENT_LIMIT 1455L
+
+//
+// MessageId: ERROR_MENU_ITEM_NOT_FOUND
+//
+// MessageText:
+//
+// A menu item was not found.
+//
+#define ERROR_MENU_ITEM_NOT_FOUND 1456L
+
+//
+// MessageId: ERROR_INVALID_KEYBOARD_HANDLE
+//
+// MessageText:
+//
+// Invalid keyboard layout handle.
+//
+#define ERROR_INVALID_KEYBOARD_HANDLE 1457L
+
+//
+// MessageId: ERROR_HOOK_TYPE_NOT_ALLOWED
+//
+// MessageText:
+//
+// Hook type not allowed.
+//
+#define ERROR_HOOK_TYPE_NOT_ALLOWED 1458L
+
+//
+// MessageId: ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION
+//
+// MessageText:
+//
+// This operation requires an interactive windowstation.
+//
+#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION 1459L
+
+//
+// MessageId: ERROR_TIMEOUT
+//
+// MessageText:
+//
+// This operation returned because the timeout period expired.
+//
+#define ERROR_TIMEOUT 1460L
+
+//
+// MessageId: ERROR_INVALID_MONITOR_HANDLE
+//
+// MessageText:
+//
+// Invalid monitor handle.
+//
+#define ERROR_INVALID_MONITOR_HANDLE 1461L
+
+// End of WinUser error codes
+
+
+
+///////////////////////////
+// //
+// Eventlog Status Codes //
+// //
+///////////////////////////
+
+
+//
+// MessageId: ERROR_EVENTLOG_FILE_CORRUPT
+//
+// MessageText:
+//
+// The event log file is corrupt.
+//
+#define ERROR_EVENTLOG_FILE_CORRUPT 1500L
+
+//
+// MessageId: ERROR_EVENTLOG_CANT_START
+//
+// MessageText:
+//
+// No event log file could be opened, so the event logging service did not start.
+//
+#define ERROR_EVENTLOG_CANT_START 1501L
+
+//
+// MessageId: ERROR_LOG_FILE_FULL
+//
+// MessageText:
+//
+// The event log file is full.
+//
+#define ERROR_LOG_FILE_FULL 1502L
+
+//
+// MessageId: ERROR_EVENTLOG_FILE_CHANGED
+//
+// MessageText:
+//
+// The event log file has changed between reads.
+//
+#define ERROR_EVENTLOG_FILE_CHANGED 1503L
+
+// End of eventlog error codes
+
+
+
+///////////////////////////
+// //
+// RPC Status Codes //
+// //
+///////////////////////////
+
+
+//
+// MessageId: RPC_S_INVALID_STRING_BINDING
+//
+// MessageText:
+//
+// The string binding is invalid.
+//
+#define RPC_S_INVALID_STRING_BINDING 1700L
+
+//
+// MessageId: RPC_S_WRONG_KIND_OF_BINDING
+//
+// MessageText:
+//
+// The binding handle is not the correct type.
+//
+#define RPC_S_WRONG_KIND_OF_BINDING 1701L
+
+//
+// MessageId: RPC_S_INVALID_BINDING
+//
+// MessageText:
+//
+// The binding handle is invalid.
+//
+#define RPC_S_INVALID_BINDING 1702L
+
+//
+// MessageId: RPC_S_PROTSEQ_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The RPC protocol sequence is not supported.
+//
+#define RPC_S_PROTSEQ_NOT_SUPPORTED 1703L
+
+//
+// MessageId: RPC_S_INVALID_RPC_PROTSEQ
+//
+// MessageText:
+//
+// The RPC protocol sequence is invalid.
+//
+#define RPC_S_INVALID_RPC_PROTSEQ 1704L
+
+//
+// MessageId: RPC_S_INVALID_STRING_UUID
+//
+// MessageText:
+//
+// The string universal unique identifier (UUID) is invalid.
+//
+#define RPC_S_INVALID_STRING_UUID 1705L
+
+//
+// MessageId: RPC_S_INVALID_ENDPOINT_FORMAT
+//
+// MessageText:
+//
+// The endpoint format is invalid.
+//
+#define RPC_S_INVALID_ENDPOINT_FORMAT 1706L
+
+//
+// MessageId: RPC_S_INVALID_NET_ADDR
+//
+// MessageText:
+//
+// The network address is invalid.
+//
+#define RPC_S_INVALID_NET_ADDR 1707L
+
+//
+// MessageId: RPC_S_NO_ENDPOINT_FOUND
+//
+// MessageText:
+//
+// No endpoint was found.
+//
+#define RPC_S_NO_ENDPOINT_FOUND 1708L
+
+//
+// MessageId: RPC_S_INVALID_TIMEOUT
+//
+// MessageText:
+//
+// The timeout value is invalid.
+//
+#define RPC_S_INVALID_TIMEOUT 1709L
+
+//
+// MessageId: RPC_S_OBJECT_NOT_FOUND
+//
+// MessageText:
+//
+// The object universal unique identifier (UUID) was not found.
+//
+#define RPC_S_OBJECT_NOT_FOUND 1710L
+
+//
+// MessageId: RPC_S_ALREADY_REGISTERED
+//
+// MessageText:
+//
+// The object universal unique identifier (UUID) has already been registered.
+//
+#define RPC_S_ALREADY_REGISTERED 1711L
+
+//
+// MessageId: RPC_S_TYPE_ALREADY_REGISTERED
+//
+// MessageText:
+//
+// The type universal unique identifier (UUID) has already been registered.
+//
+#define RPC_S_TYPE_ALREADY_REGISTERED 1712L
+
+//
+// MessageId: RPC_S_ALREADY_LISTENING
+//
+// MessageText:
+//
+// The RPC server is already listening.
+//
+#define RPC_S_ALREADY_LISTENING 1713L
+
+//
+// MessageId: RPC_S_NO_PROTSEQS_REGISTERED
+//
+// MessageText:
+//
+// No protocol sequences have been registered.
+//
+#define RPC_S_NO_PROTSEQS_REGISTERED 1714L
+
+//
+// MessageId: RPC_S_NOT_LISTENING
+//
+// MessageText:
+//
+// The RPC server is not listening.
+//
+#define RPC_S_NOT_LISTENING 1715L
+
+//
+// MessageId: RPC_S_UNKNOWN_MGR_TYPE
+//
+// MessageText:
+//
+// The manager type is unknown.
+//
+#define RPC_S_UNKNOWN_MGR_TYPE 1716L
+
+//
+// MessageId: RPC_S_UNKNOWN_IF
+//
+// MessageText:
+//
+// The interface is unknown.
+//
+#define RPC_S_UNKNOWN_IF 1717L
+
+//
+// MessageId: RPC_S_NO_BINDINGS
+//
+// MessageText:
+//
+// There are no bindings.
+//
+#define RPC_S_NO_BINDINGS 1718L
+
+//
+// MessageId: RPC_S_NO_PROTSEQS
+//
+// MessageText:
+//
+// There are no protocol sequences.
+//
+#define RPC_S_NO_PROTSEQS 1719L
+
+//
+// MessageId: RPC_S_CANT_CREATE_ENDPOINT
+//
+// MessageText:
+//
+// The endpoint cannot be created.
+//
+#define RPC_S_CANT_CREATE_ENDPOINT 1720L
+
+//
+// MessageId: RPC_S_OUT_OF_RESOURCES
+//
+// MessageText:
+//
+// Not enough resources are available to complete this operation.
+//
+#define RPC_S_OUT_OF_RESOURCES 1721L
+
+//
+// MessageId: RPC_S_SERVER_UNAVAILABLE
+//
+// MessageText:
+//
+// The RPC server is unavailable.
+//
+#define RPC_S_SERVER_UNAVAILABLE 1722L
+
+//
+// MessageId: RPC_S_SERVER_TOO_BUSY
+//
+// MessageText:
+//
+// The RPC server is too busy to complete this operation.
+//
+#define RPC_S_SERVER_TOO_BUSY 1723L
+
+//
+// MessageId: RPC_S_INVALID_NETWORK_OPTIONS
+//
+// MessageText:
+//
+// The network options are invalid.
+//
+#define RPC_S_INVALID_NETWORK_OPTIONS 1724L
+
+//
+// MessageId: RPC_S_NO_CALL_ACTIVE
+//
+// MessageText:
+//
+// There is not a remote procedure call active in this thread.
+//
+#define RPC_S_NO_CALL_ACTIVE 1725L
+
+//
+// MessageId: RPC_S_CALL_FAILED
+//
+// MessageText:
+//
+// The remote procedure call failed.
+//
+#define RPC_S_CALL_FAILED 1726L
+
+//
+// MessageId: RPC_S_CALL_FAILED_DNE
+//
+// MessageText:
+//
+// The remote procedure call failed and did not execute.
+//
+#define RPC_S_CALL_FAILED_DNE 1727L
+
+//
+// MessageId: RPC_S_PROTOCOL_ERROR
+//
+// MessageText:
+//
+// A remote procedure call (RPC) protocol error occurred.
+//
+#define RPC_S_PROTOCOL_ERROR 1728L
+
+//
+// MessageId: RPC_S_UNSUPPORTED_TRANS_SYN
+//
+// MessageText:
+//
+// The transfer syntax is not supported by the RPC server.
+//
+#define RPC_S_UNSUPPORTED_TRANS_SYN 1730L
+
+//
+// MessageId: RPC_S_UNSUPPORTED_TYPE
+//
+// MessageText:
+//
+// The universal unique identifier (UUID) type is not supported.
+//
+#define RPC_S_UNSUPPORTED_TYPE 1732L
+
+//
+// MessageId: RPC_S_INVALID_TAG
+//
+// MessageText:
+//
+// The tag is invalid.
+//
+#define RPC_S_INVALID_TAG 1733L
+
+//
+// MessageId: RPC_S_INVALID_BOUND
+//
+// MessageText:
+//
+// The array bounds are invalid.
+//
+#define RPC_S_INVALID_BOUND 1734L
+
+//
+// MessageId: RPC_S_NO_ENTRY_NAME
+//
+// MessageText:
+//
+// The binding does not contain an entry name.
+//
+#define RPC_S_NO_ENTRY_NAME 1735L
+
+//
+// MessageId: RPC_S_INVALID_NAME_SYNTAX
+//
+// MessageText:
+//
+// The name syntax is invalid.
+//
+#define RPC_S_INVALID_NAME_SYNTAX 1736L
+
+//
+// MessageId: RPC_S_UNSUPPORTED_NAME_SYNTAX
+//
+// MessageText:
+//
+// The name syntax is not supported.
+//
+#define RPC_S_UNSUPPORTED_NAME_SYNTAX 1737L
+
+//
+// MessageId: RPC_S_UUID_NO_ADDRESS
+//
+// MessageText:
+//
+// No network address is available to use to construct a universal
+// unique identifier (UUID).
+//
+#define RPC_S_UUID_NO_ADDRESS 1739L
+
+//
+// MessageId: RPC_S_DUPLICATE_ENDPOINT
+//
+// MessageText:
+//
+// The endpoint is a duplicate.
+//
+#define RPC_S_DUPLICATE_ENDPOINT 1740L
+
+//
+// MessageId: RPC_S_UNKNOWN_AUTHN_TYPE
+//
+// MessageText:
+//
+// The authentication type is unknown.
+//
+#define RPC_S_UNKNOWN_AUTHN_TYPE 1741L
+
+//
+// MessageId: RPC_S_MAX_CALLS_TOO_SMALL
+//
+// MessageText:
+//
+// The maximum number of calls is too small.
+//
+#define RPC_S_MAX_CALLS_TOO_SMALL 1742L
+
+//
+// MessageId: RPC_S_STRING_TOO_LONG
+//
+// MessageText:
+//
+// The string is too long.
+//
+#define RPC_S_STRING_TOO_LONG 1743L
+
+//
+// MessageId: RPC_S_PROTSEQ_NOT_FOUND
+//
+// MessageText:
+//
+// The RPC protocol sequence was not found.
+//
+#define RPC_S_PROTSEQ_NOT_FOUND 1744L
+
+//
+// MessageId: RPC_S_PROCNUM_OUT_OF_RANGE
+//
+// MessageText:
+//
+// The procedure number is out of range.
+//
+#define RPC_S_PROCNUM_OUT_OF_RANGE 1745L
+
+//
+// MessageId: RPC_S_BINDING_HAS_NO_AUTH
+//
+// MessageText:
+//
+// The binding does not contain any authentication information.
+//
+#define RPC_S_BINDING_HAS_NO_AUTH 1746L
+
+//
+// MessageId: RPC_S_UNKNOWN_AUTHN_SERVICE
+//
+// MessageText:
+//
+// The authentication service is unknown.
+//
+#define RPC_S_UNKNOWN_AUTHN_SERVICE 1747L
+
+//
+// MessageId: RPC_S_UNKNOWN_AUTHN_LEVEL
+//
+// MessageText:
+//
+// The authentication level is unknown.
+//
+#define RPC_S_UNKNOWN_AUTHN_LEVEL 1748L
+
+//
+// MessageId: RPC_S_INVALID_AUTH_IDENTITY
+//
+// MessageText:
+//
+// The security context is invalid.
+//
+#define RPC_S_INVALID_AUTH_IDENTITY 1749L
+
+//
+// MessageId: RPC_S_UNKNOWN_AUTHZ_SERVICE
+//
+// MessageText:
+//
+// The authorization service is unknown.
+//
+#define RPC_S_UNKNOWN_AUTHZ_SERVICE 1750L
+
+//
+// MessageId: EPT_S_INVALID_ENTRY
+//
+// MessageText:
+//
+// The entry is invalid.
+//
+#define EPT_S_INVALID_ENTRY 1751L
+
+//
+// MessageId: EPT_S_CANT_PERFORM_OP
+//
+// MessageText:
+//
+// The server endpoint cannot perform the operation.
+//
+#define EPT_S_CANT_PERFORM_OP 1752L
+
+//
+// MessageId: EPT_S_NOT_REGISTERED
+//
+// MessageText:
+//
+// There are no more endpoints available from the endpoint mapper.
+//
+#define EPT_S_NOT_REGISTERED 1753L
+
+//
+// MessageId: RPC_S_NOTHING_TO_EXPORT
+//
+// MessageText:
+//
+// No interfaces have been exported.
+//
+#define RPC_S_NOTHING_TO_EXPORT 1754L
+
+//
+// MessageId: RPC_S_INCOMPLETE_NAME
+//
+// MessageText:
+//
+// The entry name is incomplete.
+//
+#define RPC_S_INCOMPLETE_NAME 1755L
+
+//
+// MessageId: RPC_S_INVALID_VERS_OPTION
+//
+// MessageText:
+//
+// The version option is invalid.
+//
+#define RPC_S_INVALID_VERS_OPTION 1756L
+
+//
+// MessageId: RPC_S_NO_MORE_MEMBERS
+//
+// MessageText:
+//
+// There are no more members.
+//
+#define RPC_S_NO_MORE_MEMBERS 1757L
+
+//
+// MessageId: RPC_S_NOT_ALL_OBJS_UNEXPORTED
+//
+// MessageText:
+//
+// There is nothing to unexport.
+//
+#define RPC_S_NOT_ALL_OBJS_UNEXPORTED 1758L
+
+//
+// MessageId: RPC_S_INTERFACE_NOT_FOUND
+//
+// MessageText:
+//
+// The interface was not found.
+//
+#define RPC_S_INTERFACE_NOT_FOUND 1759L
+
+//
+// MessageId: RPC_S_ENTRY_ALREADY_EXISTS
+//
+// MessageText:
+//
+// The entry already exists.
+//
+#define RPC_S_ENTRY_ALREADY_EXISTS 1760L
+
+//
+// MessageId: RPC_S_ENTRY_NOT_FOUND
+//
+// MessageText:
+//
+// The entry is not found.
+//
+#define RPC_S_ENTRY_NOT_FOUND 1761L
+
+//
+// MessageId: RPC_S_NAME_SERVICE_UNAVAILABLE
+//
+// MessageText:
+//
+// The name service is unavailable.
+//
+#define RPC_S_NAME_SERVICE_UNAVAILABLE 1762L
+
+//
+// MessageId: RPC_S_INVALID_NAF_ID
+//
+// MessageText:
+//
+// The network address family is invalid.
+//
+#define RPC_S_INVALID_NAF_ID 1763L
+
+//
+// MessageId: RPC_S_CANNOT_SUPPORT
+//
+// MessageText:
+//
+// The requested operation is not supported.
+//
+#define RPC_S_CANNOT_SUPPORT 1764L
+
+//
+// MessageId: RPC_S_NO_CONTEXT_AVAILABLE
+//
+// MessageText:
+//
+// No security context is available to allow impersonation.
+//
+#define RPC_S_NO_CONTEXT_AVAILABLE 1765L
+
+//
+// MessageId: RPC_S_INTERNAL_ERROR
+//
+// MessageText:
+//
+// An internal error occurred in a remote procedure call (RPC).
+//
+#define RPC_S_INTERNAL_ERROR 1766L
+
+//
+// MessageId: RPC_S_ZERO_DIVIDE
+//
+// MessageText:
+//
+// The RPC server attempted an integer division by zero.
+//
+#define RPC_S_ZERO_DIVIDE 1767L
+
+//
+// MessageId: RPC_S_ADDRESS_ERROR
+//
+// MessageText:
+//
+// An addressing error occurred in the RPC server.
+//
+#define RPC_S_ADDRESS_ERROR 1768L
+
+//
+// MessageId: RPC_S_FP_DIV_ZERO
+//
+// MessageText:
+//
+// A floating-point operation at the RPC server caused a division by zero.
+//
+#define RPC_S_FP_DIV_ZERO 1769L
+
+//
+// MessageId: RPC_S_FP_UNDERFLOW
+//
+// MessageText:
+//
+// A floating-point underflow occurred at the RPC server.
+//
+#define RPC_S_FP_UNDERFLOW 1770L
+
+//
+// MessageId: RPC_S_FP_OVERFLOW
+//
+// MessageText:
+//
+// A floating-point overflow occurred at the RPC server.
+//
+#define RPC_S_FP_OVERFLOW 1771L
+
+//
+// MessageId: RPC_X_NO_MORE_ENTRIES
+//
+// MessageText:
+//
+// The list of RPC servers available for the binding of auto handles
+// has been exhausted.
+//
+#define RPC_X_NO_MORE_ENTRIES 1772L
+
+//
+// MessageId: RPC_X_SS_CHAR_TRANS_OPEN_FAIL
+//
+// MessageText:
+//
+// Unable to open the character translation table file.
+//
+#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL 1773L
+
+//
+// MessageId: RPC_X_SS_CHAR_TRANS_SHORT_FILE
+//
+// MessageText:
+//
+// The file containing the character translation table has fewer than
+// 512 bytes.
+//
+#define RPC_X_SS_CHAR_TRANS_SHORT_FILE 1774L
+
+//
+// MessageId: RPC_X_SS_IN_NULL_CONTEXT
+//
+// MessageText:
+//
+// A null context handle was passed from the client to the host during
+// a remote procedure call.
+//
+#define RPC_X_SS_IN_NULL_CONTEXT 1775L
+
+//
+// MessageId: RPC_X_SS_CONTEXT_DAMAGED
+//
+// MessageText:
+//
+// The context handle changed during a remote procedure call.
+//
+#define RPC_X_SS_CONTEXT_DAMAGED 1777L
+
+//
+// MessageId: RPC_X_SS_HANDLES_MISMATCH
+//
+// MessageText:
+//
+// The binding handles passed to a remote procedure call do not match.
+//
+#define RPC_X_SS_HANDLES_MISMATCH 1778L
+
+//
+// MessageId: RPC_X_SS_CANNOT_GET_CALL_HANDLE
+//
+// MessageText:
+//
+// The stub is unable to get the remote procedure call handle.
+//
+#define RPC_X_SS_CANNOT_GET_CALL_HANDLE 1779L
+
+//
+// MessageId: RPC_X_NULL_REF_POINTER
+//
+// MessageText:
+//
+// A null reference pointer was passed to the stub.
+//
+#define RPC_X_NULL_REF_POINTER 1780L
+
+//
+// MessageId: RPC_X_ENUM_VALUE_OUT_OF_RANGE
+//
+// MessageText:
+//
+// The enumeration value is out of range.
+//
+#define RPC_X_ENUM_VALUE_OUT_OF_RANGE 1781L
+
+//
+// MessageId: RPC_X_BYTE_COUNT_TOO_SMALL
+//
+// MessageText:
+//
+// The byte count is too small.
+//
+#define RPC_X_BYTE_COUNT_TOO_SMALL 1782L
+
+//
+// MessageId: RPC_X_BAD_STUB_DATA
+//
+// MessageText:
+//
+// The stub received bad data.
+//
+#define RPC_X_BAD_STUB_DATA 1783L
+
+//
+// MessageId: ERROR_INVALID_USER_BUFFER
+//
+// MessageText:
+//
+// The supplied user buffer is not valid for the requested operation.
+//
+#define ERROR_INVALID_USER_BUFFER 1784L
+
+//
+// MessageId: ERROR_UNRECOGNIZED_MEDIA
+//
+// MessageText:
+//
+// The disk media is not recognized. It may not be formatted.
+//
+#define ERROR_UNRECOGNIZED_MEDIA 1785L
+
+//
+// MessageId: ERROR_NO_TRUST_LSA_SECRET
+//
+// MessageText:
+//
+// The workstation does not have a trust secret.
+//
+#define ERROR_NO_TRUST_LSA_SECRET 1786L
+
+//
+// MessageId: ERROR_NO_TRUST_SAM_ACCOUNT
+//
+// MessageText:
+//
+// The SAM database on the Windows NT Server does not have a computer
+// account for this workstation trust relationship.
+//
+#define ERROR_NO_TRUST_SAM_ACCOUNT 1787L
+
+//
+// MessageId: ERROR_TRUSTED_DOMAIN_FAILURE
+//
+// MessageText:
+//
+// The trust relationship between the primary domain and the trusted
+// domain failed.
+//
+#define ERROR_TRUSTED_DOMAIN_FAILURE 1788L
+
+//
+// MessageId: ERROR_TRUSTED_RELATIONSHIP_FAILURE
+//
+// MessageText:
+//
+// The trust relationship between this workstation and the primary
+// domain failed.
+//
+#define ERROR_TRUSTED_RELATIONSHIP_FAILURE 1789L
+
+//
+// MessageId: ERROR_TRUST_FAILURE
+//
+// MessageText:
+//
+// The network logon failed.
+//
+#define ERROR_TRUST_FAILURE 1790L
+
+//
+// MessageId: RPC_S_CALL_IN_PROGRESS
+//
+// MessageText:
+//
+// A remote procedure call is already in progress for this thread.
+//
+#define RPC_S_CALL_IN_PROGRESS 1791L
+
+//
+// MessageId: ERROR_NETLOGON_NOT_STARTED
+//
+// MessageText:
+//
+// An attempt was made to logon, but the network logon service was not started.
+//
+#define ERROR_NETLOGON_NOT_STARTED 1792L
+
+//
+// MessageId: ERROR_ACCOUNT_EXPIRED
+//
+// MessageText:
+//
+// The user's account has expired.
+//
+#define ERROR_ACCOUNT_EXPIRED 1793L
+
+//
+// MessageId: ERROR_REDIRECTOR_HAS_OPEN_HANDLES
+//
+// MessageText:
+//
+// The redirector is in use and cannot be unloaded.
+//
+#define ERROR_REDIRECTOR_HAS_OPEN_HANDLES 1794L
+
+//
+// MessageId: ERROR_PRINTER_DRIVER_ALREADY_INSTALLED
+//
+// MessageText:
+//
+// The specified printer driver is already installed.
+//
+#define ERROR_PRINTER_DRIVER_ALREADY_INSTALLED 1795L
+
+//
+// MessageId: ERROR_UNKNOWN_PORT
+//
+// MessageText:
+//
+// The specified port is unknown.
+//
+#define ERROR_UNKNOWN_PORT 1796L
+
+//
+// MessageId: ERROR_UNKNOWN_PRINTER_DRIVER
+//
+// MessageText:
+//
+// The printer driver is unknown.
+//
+#define ERROR_UNKNOWN_PRINTER_DRIVER 1797L
+
+//
+// MessageId: ERROR_UNKNOWN_PRINTPROCESSOR
+//
+// MessageText:
+//
+// The print processor is unknown.
+//
+#define ERROR_UNKNOWN_PRINTPROCESSOR 1798L
+
+//
+// MessageId: ERROR_INVALID_SEPARATOR_FILE
+//
+// MessageText:
+//
+// The specified separator file is invalid.
+//
+#define ERROR_INVALID_SEPARATOR_FILE 1799L
+
+//
+// MessageId: ERROR_INVALID_PRIORITY
+//
+// MessageText:
+//
+// The specified priority is invalid.
+//
+#define ERROR_INVALID_PRIORITY 1800L
+
+//
+// MessageId: ERROR_INVALID_PRINTER_NAME
+//
+// MessageText:
+//
+// The printer name is invalid.
+//
+#define ERROR_INVALID_PRINTER_NAME 1801L
+
+//
+// MessageId: ERROR_PRINTER_ALREADY_EXISTS
+//
+// MessageText:
+//
+// The printer already exists.
+//
+#define ERROR_PRINTER_ALREADY_EXISTS 1802L
+
+//
+// MessageId: ERROR_INVALID_PRINTER_COMMAND
+//
+// MessageText:
+//
+// The printer command is invalid.
+//
+#define ERROR_INVALID_PRINTER_COMMAND 1803L
+
+//
+// MessageId: ERROR_INVALID_DATATYPE
+//
+// MessageText:
+//
+// The specified datatype is invalid.
+//
+#define ERROR_INVALID_DATATYPE 1804L
+
+//
+// MessageId: ERROR_INVALID_ENVIRONMENT
+//
+// MessageText:
+//
+// The Environment specified is invalid.
+//
+#define ERROR_INVALID_ENVIRONMENT 1805L
+
+//
+// MessageId: RPC_S_NO_MORE_BINDINGS
+//
+// MessageText:
+//
+// There are no more bindings.
+//
+#define RPC_S_NO_MORE_BINDINGS 1806L
+
+//
+// MessageId: ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT
+//
+// MessageText:
+//
+// The account used is an interdomain trust account. Use your global user account or local user account to access this server.
+//
+#define ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT 1807L
+
+//
+// MessageId: ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT
+//
+// MessageText:
+//
+// The account used is a Computer Account. Use your global user account or local user account to access this server.
+//
+#define ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT 1808L
+
+//
+// MessageId: ERROR_NOLOGON_SERVER_TRUST_ACCOUNT
+//
+// MessageText:
+//
+// The account used is an server trust account. Use your global user account or local user account to access this server.
+//
+#define ERROR_NOLOGON_SERVER_TRUST_ACCOUNT 1809L
+
+//
+// MessageId: ERROR_DOMAIN_TRUST_INCONSISTENT
+//
+// MessageText:
+//
+// The name or security ID (SID) of the domain specified is inconsistent
+// with the trust information for that domain.
+//
+#define ERROR_DOMAIN_TRUST_INCONSISTENT 1810L
+
+//
+// MessageId: ERROR_SERVER_HAS_OPEN_HANDLES
+//
+// MessageText:
+//
+// The server is in use and cannot be unloaded.
+//
+#define ERROR_SERVER_HAS_OPEN_HANDLES 1811L
+
+//
+// MessageId: ERROR_RESOURCE_DATA_NOT_FOUND
+//
+// MessageText:
+//
+// The specified image file did not contain a resource section.
+//
+#define ERROR_RESOURCE_DATA_NOT_FOUND 1812L
+
+//
+// MessageId: ERROR_RESOURCE_TYPE_NOT_FOUND
+//
+// MessageText:
+//
+// The specified resource type can not be found in the image file.
+//
+#define ERROR_RESOURCE_TYPE_NOT_FOUND 1813L
+
+//
+// MessageId: ERROR_RESOURCE_NAME_NOT_FOUND
+//
+// MessageText:
+//
+// The specified resource name can not be found in the image file.
+//
+#define ERROR_RESOURCE_NAME_NOT_FOUND 1814L
+
+//
+// MessageId: ERROR_RESOURCE_LANG_NOT_FOUND
+//
+// MessageText:
+//
+// The specified resource language ID cannot be found in the image file.
+//
+#define ERROR_RESOURCE_LANG_NOT_FOUND 1815L
+
+//
+// MessageId: ERROR_NOT_ENOUGH_QUOTA
+//
+// MessageText:
+//
+// Not enough quota is available to process this command.
+//
+#define ERROR_NOT_ENOUGH_QUOTA 1816L
+
+//
+// MessageId: RPC_S_NO_INTERFACES
+//
+// MessageText:
+//
+// No interfaces have been registered.
+//
+#define RPC_S_NO_INTERFACES 1817L
+
+//
+// MessageId: RPC_S_CALL_CANCELLED
+//
+// MessageText:
+//
+// The server was altered while processing this call.
+//
+#define RPC_S_CALL_CANCELLED 1818L
+
+//
+// MessageId: RPC_S_BINDING_INCOMPLETE
+//
+// MessageText:
+//
+// The binding handle does not contain all required information.
+//
+#define RPC_S_BINDING_INCOMPLETE 1819L
+
+//
+// MessageId: RPC_S_COMM_FAILURE
+//
+// MessageText:
+//
+// Communications failure.
+//
+#define RPC_S_COMM_FAILURE 1820L
+
+//
+// MessageId: RPC_S_UNSUPPORTED_AUTHN_LEVEL
+//
+// MessageText:
+//
+// The requested authentication level is not supported.
+//
+#define RPC_S_UNSUPPORTED_AUTHN_LEVEL 1821L
+
+//
+// MessageId: RPC_S_NO_PRINC_NAME
+//
+// MessageText:
+//
+// No principal name registered.
+//
+#define RPC_S_NO_PRINC_NAME 1822L
+
+//
+// MessageId: RPC_S_NOT_RPC_ERROR
+//
+// MessageText:
+//
+// The error specified is not a valid Windows NT RPC error code.
+//
+#define RPC_S_NOT_RPC_ERROR 1823L
+
+//
+// MessageId: RPC_S_UUID_LOCAL_ONLY
+//
+// MessageText:
+//
+// A UUID that is valid only on this computer has been allocated.
+//
+#define RPC_S_UUID_LOCAL_ONLY 1824L
+
+//
+// MessageId: RPC_S_SEC_PKG_ERROR
+//
+// MessageText:
+//
+// A security package specific error occurred.
+//
+#define RPC_S_SEC_PKG_ERROR 1825L
+
+//
+// MessageId: RPC_S_NOT_CANCELLED
+//
+// MessageText:
+//
+// Thread is not cancelled.
+//
+#define RPC_S_NOT_CANCELLED 1826L
+
+//
+// MessageId: RPC_X_INVALID_ES_ACTION
+//
+// MessageText:
+//
+// Invalid operation on the encoding/decoding handle.
+//
+#define RPC_X_INVALID_ES_ACTION 1827L
+
+//
+// MessageId: RPC_X_WRONG_ES_VERSION
+//
+// MessageText:
+//
+// Incompatible version of the serializing package.
+//
+#define RPC_X_WRONG_ES_VERSION 1828L
+
+//
+// MessageId: RPC_X_WRONG_STUB_VERSION
+//
+// MessageText:
+//
+// Incompatible version of the RPC stub.
+//
+#define RPC_X_WRONG_STUB_VERSION 1829L
+
+//
+// MessageId: RPC_X_INVALID_PIPE_OBJECT
+//
+// MessageText:
+//
+// The idl pipe object is invalid or corrupted.
+//
+#define RPC_X_INVALID_PIPE_OBJECT 1830L
+
+//
+// MessageId: RPC_X_INVALID_PIPE_OPERATION
+//
+// MessageText:
+//
+// The operation is invalid for a given idl pipe object.
+//
+#define RPC_X_INVALID_PIPE_OPERATION 1831L
+
+//
+// MessageId: RPC_X_WRONG_PIPE_VERSION
+//
+// MessageText:
+//
+// The idl pipe version is not supported.
+//
+#define RPC_X_WRONG_PIPE_VERSION 1832L
+
+//
+// MessageId: RPC_S_GROUP_MEMBER_NOT_FOUND
+//
+// MessageText:
+//
+// The group member was not found.
+//
+#define RPC_S_GROUP_MEMBER_NOT_FOUND 1898L
+
+//
+// MessageId: EPT_S_CANT_CREATE
+//
+// MessageText:
+//
+// The endpoint mapper database could not be created.
+//
+#define EPT_S_CANT_CREATE 1899L
+
+//
+// MessageId: RPC_S_INVALID_OBJECT
+//
+// MessageText:
+//
+// The object universal unique identifier (UUID) is the nil UUID.
+//
+#define RPC_S_INVALID_OBJECT 1900L
+
+//
+// MessageId: ERROR_INVALID_TIME
+//
+// MessageText:
+//
+// The specified time is invalid.
+//
+#define ERROR_INVALID_TIME 1901L
+
+//
+// MessageId: ERROR_INVALID_FORM_NAME
+//
+// MessageText:
+//
+// The specified Form name is invalid.
+//
+#define ERROR_INVALID_FORM_NAME 1902L
+
+//
+// MessageId: ERROR_INVALID_FORM_SIZE
+//
+// MessageText:
+//
+// The specified Form size is invalid
+//
+#define ERROR_INVALID_FORM_SIZE 1903L
+
+//
+// MessageId: ERROR_ALREADY_WAITING
+//
+// MessageText:
+//
+// The specified Printer handle is already being waited on
+//
+#define ERROR_ALREADY_WAITING 1904L
+
+//
+// MessageId: ERROR_PRINTER_DELETED
+//
+// MessageText:
+//
+// The specified Printer has been deleted
+//
+#define ERROR_PRINTER_DELETED 1905L
+
+//
+// MessageId: ERROR_INVALID_PRINTER_STATE
+//
+// MessageText:
+//
+// The state of the Printer is invalid
+//
+#define ERROR_INVALID_PRINTER_STATE 1906L
+
+//
+// MessageId: ERROR_PASSWORD_MUST_CHANGE
+//
+// MessageText:
+//
+// The user must change his password before he logs on the first time.
+//
+#define ERROR_PASSWORD_MUST_CHANGE 1907L
+
+//
+// MessageId: ERROR_DOMAIN_CONTROLLER_NOT_FOUND
+//
+// MessageText:
+//
+// Could not find the domain controller for this domain.
+//
+#define ERROR_DOMAIN_CONTROLLER_NOT_FOUND 1908L
+
+//
+// MessageId: ERROR_ACCOUNT_LOCKED_OUT
+//
+// MessageText:
+//
+// The referenced account is currently locked out and may not be logged on to.
+//
+#define ERROR_ACCOUNT_LOCKED_OUT 1909L
+
+//
+// MessageId: OR_INVALID_OXID
+//
+// MessageText:
+//
+// The object exporter specified was not found.
+//
+#define OR_INVALID_OXID 1910L
+
+//
+// MessageId: OR_INVALID_OID
+//
+// MessageText:
+//
+// The object specified was not found.
+//
+#define OR_INVALID_OID 1911L
+
+//
+// MessageId: OR_INVALID_SET
+//
+// MessageText:
+//
+// The object resolver set specified was not found.
+//
+#define OR_INVALID_SET 1912L
+
+//
+// MessageId: RPC_S_SEND_INCOMPLETE
+//
+// MessageText:
+//
+// Some data remains to be sent in the request buffer.
+//
+#define RPC_S_SEND_INCOMPLETE 1913L
+
+//
+// MessageId: ERROR_NO_BROWSER_SERVERS_FOUND
+//
+// MessageText:
+//
+// The list of servers for this workgroup is not currently available
+//
+#define ERROR_NO_BROWSER_SERVERS_FOUND 6118L
+
+
+
+
+///////////////////////////
+// //
+// OpenGL Error Code //
+// //
+///////////////////////////
+
+
+//
+// MessageId: ERROR_INVALID_PIXEL_FORMAT
+//
+// MessageText:
+//
+// The pixel format is invalid.
+//
+#define ERROR_INVALID_PIXEL_FORMAT 2000L
+
+//
+// MessageId: ERROR_BAD_DRIVER
+//
+// MessageText:
+//
+// The specified driver is invalid.
+//
+#define ERROR_BAD_DRIVER 2001L
+
+//
+// MessageId: ERROR_INVALID_WINDOW_STYLE
+//
+// MessageText:
+//
+// The window style or class attribute is invalid for this operation.
+//
+#define ERROR_INVALID_WINDOW_STYLE 2002L
+
+//
+// MessageId: ERROR_METAFILE_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The requested metafile operation is not supported.
+//
+#define ERROR_METAFILE_NOT_SUPPORTED 2003L
+
+//
+// MessageId: ERROR_TRANSFORM_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The requested transformation operation is not supported.
+//
+#define ERROR_TRANSFORM_NOT_SUPPORTED 2004L
+
+//
+// MessageId: ERROR_CLIPPING_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The requested clipping operation is not supported.
+//
+#define ERROR_CLIPPING_NOT_SUPPORTED 2005L
+
+// End of OpenGL error codes
+
+
+
+////////////////////////////////////
+// //
+// Win32 Spooler Error Codes //
+// //
+////////////////////////////////////
+//
+// MessageId: ERROR_UNKNOWN_PRINT_MONITOR
+//
+// MessageText:
+//
+// The specified print monitor is unknown.
+//
+#define ERROR_UNKNOWN_PRINT_MONITOR 3000L
+
+//
+// MessageId: ERROR_PRINTER_DRIVER_IN_USE
+//
+// MessageText:
+//
+// The specified printer driver is currently in use.
+//
+#define ERROR_PRINTER_DRIVER_IN_USE 3001L
+
+//
+// MessageId: ERROR_SPOOL_FILE_NOT_FOUND
+//
+// MessageText:
+//
+// The spool file was not found.
+//
+#define ERROR_SPOOL_FILE_NOT_FOUND 3002L
+
+//
+// MessageId: ERROR_SPL_NO_STARTDOC
+//
+// MessageText:
+//
+// A StartDocPrinter call was not issued.
+//
+#define ERROR_SPL_NO_STARTDOC 3003L
+
+//
+// MessageId: ERROR_SPL_NO_ADDJOB
+//
+// MessageText:
+//
+// An AddJob call was not issued.
+//
+#define ERROR_SPL_NO_ADDJOB 3004L
+
+//
+// MessageId: ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED
+//
+// MessageText:
+//
+// The specified print processor has already been installed.
+//
+#define ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED 3005L
+
+//
+// MessageId: ERROR_PRINT_MONITOR_ALREADY_INSTALLED
+//
+// MessageText:
+//
+// The specified print monitor has already been installed.
+//
+#define ERROR_PRINT_MONITOR_ALREADY_INSTALLED 3006L
+
+//
+// MessageId: ERROR_INVALID_PRINT_MONITOR
+//
+// MessageText:
+//
+// The specified print monitor does not have the required functions.
+//
+#define ERROR_INVALID_PRINT_MONITOR 3007L
+
+//
+// MessageId: ERROR_PRINT_MONITOR_IN_USE
+//
+// MessageText:
+//
+// The specified print monitor is currently in use.
+//
+#define ERROR_PRINT_MONITOR_IN_USE 3008L
+
+//
+// MessageId: ERROR_PRINTER_HAS_JOBS_QUEUED
+//
+// MessageText:
+//
+// The requested operation is not allowed when there are jobs queued to the printer.
+//
+#define ERROR_PRINTER_HAS_JOBS_QUEUED 3009L
+
+//
+// MessageId: ERROR_SUCCESS_REBOOT_REQUIRED
+//
+// MessageText:
+//
+// The requested operation is successful. Changes will not be effective until the system is rebooted.
+//
+#define ERROR_SUCCESS_REBOOT_REQUIRED 3010L
+
+//
+// MessageId: ERROR_SUCCESS_RESTART_REQUIRED
+//
+// MessageText:
+//
+// The requested operation is successful. Changes will not be effective until the service is restarted.
+//
+#define ERROR_SUCCESS_RESTART_REQUIRED 3011L
+
+////////////////////////////////////
+// //
+// Wins Error Codes //
+// //
+////////////////////////////////////
+//
+// MessageId: ERROR_WINS_INTERNAL
+//
+// MessageText:
+//
+// WINS encountered an error while processing the command.
+//
+#define ERROR_WINS_INTERNAL 4000L
+
+//
+// MessageId: ERROR_CAN_NOT_DEL_LOCAL_WINS
+//
+// MessageText:
+//
+// The local WINS can not be deleted.
+//
+#define ERROR_CAN_NOT_DEL_LOCAL_WINS 4001L
+
+//
+// MessageId: ERROR_STATIC_INIT
+//
+// MessageText:
+//
+// The importation from the file failed.
+//
+#define ERROR_STATIC_INIT 4002L
+
+//
+// MessageId: ERROR_INC_BACKUP
+//
+// MessageText:
+//
+// The backup Failed. Was a full backup done before ?
+//
+#define ERROR_INC_BACKUP 4003L
+
+//
+// MessageId: ERROR_FULL_BACKUP
+//
+// MessageText:
+//
+// The backup Failed. Check the directory that you are backing the database to.
+//
+#define ERROR_FULL_BACKUP 4004L
+
+//
+// MessageId: ERROR_REC_NON_EXISTENT
+//
+// MessageText:
+//
+// The name does not exist in the WINS database.
+//
+#define ERROR_REC_NON_EXISTENT 4005L
+
+//
+// MessageId: ERROR_RPL_NOT_ALLOWED
+//
+// MessageText:
+//
+// Replication with a non-configured partner is not allowed.
+//
+#define ERROR_RPL_NOT_ALLOWED 4006L
+
+////////////////////////////////////
+// //
+// DHCP Error Codes //
+// //
+////////////////////////////////////
+//
+// MessageId: ERROR_DHCP_ADDRESS_CONFLICT
+//
+// MessageText:
+//
+// The DHCP client has obtained an IP address that is already in use on the network. The local interface will be disabled until the DHCP client can obtain a new address.
+//
+#define ERROR_DHCP_ADDRESS_CONFLICT 4100L
+
+////////////////////////////////////
+// //
+// OLE Error Codes //
+// //
+////////////////////////////////////
+
+//
+// OLE error definitions and values
+//
+// The return value of OLE APIs and methods is an HRESULT.
+// This is not a handle to anything, but is merely a 32-bit value
+// with several fields encoded in the value. The parts of an
+// HRESULT are shown below.
+//
+// Many of the macros and functions below were orginally defined to
+// operate on SCODEs. SCODEs are no longer used. The macros are
+// still present for compatibility and easy porting of Win16 code.
+// Newly written code should use the HRESULT macros and functions.
+//
+
+//
+// HRESULTs 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
+// +-+-+-+-+-+---------------------+-------------------------------+
+// |S|R|C|N|r| Facility | Code |
+// +-+-+-+-+-+---------------------+-------------------------------+
+//
+// where
+//
+// S - Severity - indicates success/fail
+//
+// 0 - Success
+// 1 - Fail (COERROR)
+//
+// R - reserved portion of the facility code, corresponds to NT's
+// second severity bit.
+//
+// C - reserved portion of the facility code, corresponds to NT's
+// C field.
+//
+// N - reserved portion of the facility code. Used to indicate a
+// mapped NT status value.
+//
+// r - reserved portion of the facility code. Reserved for internal
+// use. Used to indicate HRESULT values that are not status
+// values, but are instead message ids for display strings.
+//
+// Facility - is the facility code
+//
+// Code - is the facility's status code
+//
+
+//
+// Severity values
+//
+
+#define SEVERITY_SUCCESS 0
+#define SEVERITY_ERROR 1
+
+
+//
+// Generic test for success on any status value (non-negative numbers
+// indicate success).
+//
+
+#define SUCCEEDED(Status) ((HRESULT)(Status) >= 0)
+
+//
+// and the inverse
+//
+
+#define FAILED(Status) ((HRESULT)(Status)<0)
+
+
+//
+// Generic test for error on any status value.
+//
+
+#define IS_ERROR(Status) ((unsigned long)(Status) >> 31 == SEVERITY_ERROR)
+
+//
+// Return the code
+//
+
+#define HRESULT_CODE(hr) ((hr) & 0xFFFF)
+#define SCODE_CODE(sc) ((sc) & 0xFFFF)
+
+//
+// Return the facility
+//
+
+#define HRESULT_FACILITY(hr) (((hr) >> 16) & 0x1fff)
+#define SCODE_FACILITY(sc) (((sc) >> 16) & 0x1fff)
+
+//
+// Return the severity
+//
+
+#define HRESULT_SEVERITY(hr) (((hr) >> 31) & 0x1)
+#define SCODE_SEVERITY(sc) (((sc) >> 31) & 0x1)
+
+//
+// Create an HRESULT value from component pieces
+//
+
+#define MAKE_HRESULT(sev,fac,code) \
+ ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) )
+#define MAKE_SCODE(sev,fac,code) \
+ ((SCODE) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) )
+
+
+//
+// Map a WIN32 error value into a HRESULT
+// Note: This assumes that WIN32 errors fall in the range -32k to 32k.
+//
+// Define bits here so macros are guaranteed to work
+
+#define FACILITY_NT_BIT 0x10000000
+#define HRESULT_FROM_WIN32(x) (x ? ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000)) : 0 )
+
+//
+// Map an NT status value into a HRESULT
+//
+
+#define HRESULT_FROM_NT(x) ((HRESULT) ((x) | FACILITY_NT_BIT))
+
+
+// ****** OBSOLETE functions
+
+// HRESULT functions
+// As noted above, these functions are obsolete and should not be used.
+
+
+// Extract the SCODE from a HRESULT
+
+#define GetScode(hr) ((SCODE) (hr))
+
+// Convert an SCODE into an HRESULT.
+
+#define ResultFromScode(sc) ((HRESULT) (sc))
+
+
+// PropagateResult is a noop
+#define PropagateResult(hrPrevious, scBase) ((HRESULT) scBase)
+
+
+// ****** End of OBSOLETE functions.
+
+
+// ---------------------- HRESULT value definitions -----------------
+//
+// HRESULT definitions
+//
+
+#ifdef RC_INVOKED
+#define _HRESULT_TYPEDEF_(_sc) _sc
+#else // RC_INVOKED
+#define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc)
+#endif // RC_INVOKED
+
+#define NOERROR 0
+
+//
+// Error definitions follow
+//
+
+//
+// Codes 0x4000-0x40ff are reserved for OLE
+//
+//
+// Error codes
+//
+//
+// MessageId: E_UNEXPECTED
+//
+// MessageText:
+//
+// Catastrophic failure
+//
+#define E_UNEXPECTED _HRESULT_TYPEDEF_(0x8000FFFFL)
+
+#if defined(_WIN32) && !defined(_MAC)
+//
+// MessageId: E_NOTIMPL
+//
+// MessageText:
+//
+// Not implemented
+//
+#define E_NOTIMPL _HRESULT_TYPEDEF_(0x80004001L)
+
+//
+// MessageId: E_OUTOFMEMORY
+//
+// MessageText:
+//
+// Ran out of memory
+//
+#define E_OUTOFMEMORY _HRESULT_TYPEDEF_(0x8007000EL)
+
+//
+// MessageId: E_INVALIDARG
+//
+// MessageText:
+//
+// One or more arguments are invalid
+//
+#define E_INVALIDARG _HRESULT_TYPEDEF_(0x80070057L)
+
+//
+// MessageId: E_NOINTERFACE
+//
+// MessageText:
+//
+// No such interface supported
+//
+#define E_NOINTERFACE _HRESULT_TYPEDEF_(0x80004002L)
+
+//
+// MessageId: E_POINTER
+//
+// MessageText:
+//
+// Invalid pointer
+//
+#define E_POINTER _HRESULT_TYPEDEF_(0x80004003L)
+
+//
+// MessageId: E_HANDLE
+//
+// MessageText:
+//
+// Invalid handle
+//
+#define E_HANDLE _HRESULT_TYPEDEF_(0x80070006L)
+
+//
+// MessageId: E_ABORT
+//
+// MessageText:
+//
+// Operation aborted
+//
+#define E_ABORT _HRESULT_TYPEDEF_(0x80004004L)
+
+//
+// MessageId: E_FAIL
+//
+// MessageText:
+//
+// Unspecified error
+//
+#define E_FAIL _HRESULT_TYPEDEF_(0x80004005L)
+
+//
+// MessageId: E_ACCESSDENIED
+//
+// MessageText:
+//
+// General access denied error
+//
+#define E_ACCESSDENIED _HRESULT_TYPEDEF_(0x80070005L)
+
+#else
+//
+// MessageId: E_NOTIMPL
+//
+// MessageText:
+//
+// Not implemented
+//
+#define E_NOTIMPL _HRESULT_TYPEDEF_(0x80000001L)
+
+//
+// MessageId: E_OUTOFMEMORY
+//
+// MessageText:
+//
+// Ran out of memory
+//
+#define E_OUTOFMEMORY _HRESULT_TYPEDEF_(0x80000002L)
+
+//
+// MessageId: E_INVALIDARG
+//
+// MessageText:
+//
+// One or more arguments are invalid
+//
+#define E_INVALIDARG _HRESULT_TYPEDEF_(0x80000003L)
+
+//
+// MessageId: E_NOINTERFACE
+//
+// MessageText:
+//
+// No such interface supported
+//
+#define E_NOINTERFACE _HRESULT_TYPEDEF_(0x80000004L)
+
+//
+// MessageId: E_POINTER
+//
+// MessageText:
+//
+// Invalid pointer
+//
+#define E_POINTER _HRESULT_TYPEDEF_(0x80000005L)
+
+//
+// MessageId: E_HANDLE
+//
+// MessageText:
+//
+// Invalid handle
+//
+#define E_HANDLE _HRESULT_TYPEDEF_(0x80000006L)
+
+//
+// MessageId: E_ABORT
+//
+// MessageText:
+//
+// Operation aborted
+//
+#define E_ABORT _HRESULT_TYPEDEF_(0x80000007L)
+
+//
+// MessageId: E_FAIL
+//
+// MessageText:
+//
+// Unspecified error
+//
+#define E_FAIL _HRESULT_TYPEDEF_(0x80000008L)
+
+//
+// MessageId: E_ACCESSDENIED
+//
+// MessageText:
+//
+// General access denied error
+//
+#define E_ACCESSDENIED _HRESULT_TYPEDEF_(0x80000009L)
+
+#endif //WIN32
+//
+// MessageId: E_PENDING
+//
+// MessageText:
+//
+// The data necessary to complete this operation is not yet available.
+//
+#define E_PENDING _HRESULT_TYPEDEF_(0x8000000AL)
+
+//
+// MessageId: CO_E_INIT_TLS
+//
+// MessageText:
+//
+// Thread local storage failure
+//
+#define CO_E_INIT_TLS _HRESULT_TYPEDEF_(0x80004006L)
+
+//
+// MessageId: CO_E_INIT_SHARED_ALLOCATOR
+//
+// MessageText:
+//
+// Get shared memory allocator failure
+//
+#define CO_E_INIT_SHARED_ALLOCATOR _HRESULT_TYPEDEF_(0x80004007L)
+
+//
+// MessageId: CO_E_INIT_MEMORY_ALLOCATOR
+//
+// MessageText:
+//
+// Get memory allocator failure
+//
+#define CO_E_INIT_MEMORY_ALLOCATOR _HRESULT_TYPEDEF_(0x80004008L)
+
+//
+// MessageId: CO_E_INIT_CLASS_CACHE
+//
+// MessageText:
+//
+// Unable to initialize class cache
+//
+#define CO_E_INIT_CLASS_CACHE _HRESULT_TYPEDEF_(0x80004009L)
+
+//
+// MessageId: CO_E_INIT_RPC_CHANNEL
+//
+// MessageText:
+//
+// Unable to initialize RPC services
+//
+#define CO_E_INIT_RPC_CHANNEL _HRESULT_TYPEDEF_(0x8000400AL)
+
+//
+// MessageId: CO_E_INIT_TLS_SET_CHANNEL_CONTROL
+//
+// MessageText:
+//
+// Cannot set thread local storage channel control
+//
+#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL _HRESULT_TYPEDEF_(0x8000400BL)
+
+//
+// MessageId: CO_E_INIT_TLS_CHANNEL_CONTROL
+//
+// MessageText:
+//
+// Could not allocate thread local storage channel control
+//
+#define CO_E_INIT_TLS_CHANNEL_CONTROL _HRESULT_TYPEDEF_(0x8000400CL)
+
+//
+// MessageId: CO_E_INIT_UNACCEPTED_USER_ALLOCATOR
+//
+// MessageText:
+//
+// The user supplied memory allocator is unacceptable
+//
+#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR _HRESULT_TYPEDEF_(0x8000400DL)
+
+//
+// MessageId: CO_E_INIT_SCM_MUTEX_EXISTS
+//
+// MessageText:
+//
+// The OLE service mutex already exists
+//
+#define CO_E_INIT_SCM_MUTEX_EXISTS _HRESULT_TYPEDEF_(0x8000400EL)
+
+//
+// MessageId: CO_E_INIT_SCM_FILE_MAPPING_EXISTS
+//
+// MessageText:
+//
+// The OLE service file mapping already exists
+//
+#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS _HRESULT_TYPEDEF_(0x8000400FL)
+
+//
+// MessageId: CO_E_INIT_SCM_MAP_VIEW_OF_FILE
+//
+// MessageText:
+//
+// Unable to map view of file for OLE service
+//
+#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE _HRESULT_TYPEDEF_(0x80004010L)
+
+//
+// MessageId: CO_E_INIT_SCM_EXEC_FAILURE
+//
+// MessageText:
+//
+// Failure attempting to launch OLE service
+//
+#define CO_E_INIT_SCM_EXEC_FAILURE _HRESULT_TYPEDEF_(0x80004011L)
+
+//
+// MessageId: CO_E_INIT_ONLY_SINGLE_THREADED
+//
+// MessageText:
+//
+// There was an attempt to call CoInitialize a second time while single threaded
+//
+#define CO_E_INIT_ONLY_SINGLE_THREADED _HRESULT_TYPEDEF_(0x80004012L)
+
+//
+// MessageId: CO_E_CANT_REMOTE
+//
+// MessageText:
+//
+// A Remote activation was necessary but was not allowed
+//
+#define CO_E_CANT_REMOTE _HRESULT_TYPEDEF_(0x80004013L)
+
+//
+// MessageId: CO_E_BAD_SERVER_NAME
+//
+// MessageText:
+//
+// A Remote activation was necessary but the server name provided was invalid
+//
+#define CO_E_BAD_SERVER_NAME _HRESULT_TYPEDEF_(0x80004014L)
+
+//
+// MessageId: CO_E_WRONG_SERVER_IDENTITY
+//
+// MessageText:
+//
+// The class is configured to run as a security id different from the caller
+//
+#define CO_E_WRONG_SERVER_IDENTITY _HRESULT_TYPEDEF_(0x80004015L)
+
+//
+// MessageId: CO_E_OLE1DDE_DISABLED
+//
+// MessageText:
+//
+// Use of Ole1 services requiring DDE windows is disabled
+//
+#define CO_E_OLE1DDE_DISABLED _HRESULT_TYPEDEF_(0x80004016L)
+
+//
+// MessageId: CO_E_RUNAS_SYNTAX
+//
+// MessageText:
+//
+// A RunAs specification must be <domain name>\<user name> or simply <user name>
+//
+#define CO_E_RUNAS_SYNTAX _HRESULT_TYPEDEF_(0x80004017L)
+
+//
+// MessageId: CO_E_CREATEPROCESS_FAILURE
+//
+// MessageText:
+//
+// The server process could not be started. The pathname may be incorrect.
+//
+#define CO_E_CREATEPROCESS_FAILURE _HRESULT_TYPEDEF_(0x80004018L)
+
+//
+// MessageId: CO_E_RUNAS_CREATEPROCESS_FAILURE
+//
+// MessageText:
+//
+// The server process could not be started as the configured identity. The pathname may be incorrect or unavailable.
+//
+#define CO_E_RUNAS_CREATEPROCESS_FAILURE _HRESULT_TYPEDEF_(0x80004019L)
+
+//
+// MessageId: CO_E_RUNAS_LOGON_FAILURE
+//
+// MessageText:
+//
+// The server process could not be started because the configured identity is incorrect. Check the username and password.
+//
+#define CO_E_RUNAS_LOGON_FAILURE _HRESULT_TYPEDEF_(0x8000401AL)
+
+//
+// MessageId: CO_E_LAUNCH_PERMSSION_DENIED
+//
+// MessageText:
+//
+// The client is not allowed to launch this server.
+//
+#define CO_E_LAUNCH_PERMSSION_DENIED _HRESULT_TYPEDEF_(0x8000401BL)
+
+//
+// MessageId: CO_E_START_SERVICE_FAILURE
+//
+// MessageText:
+//
+// The service providing this server could not be started.
+//
+#define CO_E_START_SERVICE_FAILURE _HRESULT_TYPEDEF_(0x8000401CL)
+
+//
+// MessageId: CO_E_REMOTE_COMMUNICATION_FAILURE
+//
+// MessageText:
+//
+// This computer was unable to communicate with the computer providing the server.
+//
+#define CO_E_REMOTE_COMMUNICATION_FAILURE _HRESULT_TYPEDEF_(0x8000401DL)
+
+//
+// MessageId: CO_E_SERVER_START_TIMEOUT
+//
+// MessageText:
+//
+// The server did not respond after being launched.
+//
+#define CO_E_SERVER_START_TIMEOUT _HRESULT_TYPEDEF_(0x8000401EL)
+
+//
+// MessageId: CO_E_CLSREG_INCONSISTENT
+//
+// MessageText:
+//
+// The registration information for this server is inconsistent or incomplete.
+//
+#define CO_E_CLSREG_INCONSISTENT _HRESULT_TYPEDEF_(0x8000401FL)
+
+//
+// MessageId: CO_E_IIDREG_INCONSISTENT
+//
+// MessageText:
+//
+// The registration information for this interface is inconsistent or incomplete.
+//
+#define CO_E_IIDREG_INCONSISTENT _HRESULT_TYPEDEF_(0x80004020L)
+
+//
+// MessageId: CO_E_NOT_SUPPORTED
+//
+// MessageText:
+//
+// The operation attempted is not supported.
+//
+#define CO_E_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80004021L)
+
+
+//
+// Success codes
+//
+#define S_OK ((HRESULT)0x00000000L)
+#define S_FALSE ((HRESULT)0x00000001L)
+
+// ******************
+// FACILITY_ITF
+// ******************
+
+//
+// Codes 0x0-0x01ff are reserved for the OLE group of
+// interfaces.
+//
+
+
+//
+// Generic OLE errors that may be returned by many inerfaces
+//
+
+#define OLE_E_FIRST ((HRESULT)0x80040000L)
+#define OLE_E_LAST ((HRESULT)0x800400FFL)
+#define OLE_S_FIRST ((HRESULT)0x00040000L)
+#define OLE_S_LAST ((HRESULT)0x000400FFL)
+
+//
+// Old OLE errors
+//
+//
+// MessageId: OLE_E_OLEVERB
+//
+// MessageText:
+//
+// Invalid OLEVERB structure
+//
+#define OLE_E_OLEVERB _HRESULT_TYPEDEF_(0x80040000L)
+
+//
+// MessageId: OLE_E_ADVF
+//
+// MessageText:
+//
+// Invalid advise flags
+//
+#define OLE_E_ADVF _HRESULT_TYPEDEF_(0x80040001L)
+
+//
+// MessageId: OLE_E_ENUM_NOMORE
+//
+// MessageText:
+//
+// Can't enumerate any more, because the associated data is missing
+//
+#define OLE_E_ENUM_NOMORE _HRESULT_TYPEDEF_(0x80040002L)
+
+//
+// MessageId: OLE_E_ADVISENOTSUPPORTED
+//
+// MessageText:
+//
+// This implementation doesn't take advises
+//
+#define OLE_E_ADVISENOTSUPPORTED _HRESULT_TYPEDEF_(0x80040003L)
+
+//
+// MessageId: OLE_E_NOCONNECTION
+//
+// MessageText:
+//
+// There is no connection for this connection ID
+//
+#define OLE_E_NOCONNECTION _HRESULT_TYPEDEF_(0x80040004L)
+
+//
+// MessageId: OLE_E_NOTRUNNING
+//
+// MessageText:
+//
+// Need to run the object to perform this operation
+//
+#define OLE_E_NOTRUNNING _HRESULT_TYPEDEF_(0x80040005L)
+
+//
+// MessageId: OLE_E_NOCACHE
+//
+// MessageText:
+//
+// There is no cache to operate on
+//
+#define OLE_E_NOCACHE _HRESULT_TYPEDEF_(0x80040006L)
+
+//
+// MessageId: OLE_E_BLANK
+//
+// MessageText:
+//
+// Uninitialized object
+//
+#define OLE_E_BLANK _HRESULT_TYPEDEF_(0x80040007L)
+
+//
+// MessageId: OLE_E_CLASSDIFF
+//
+// MessageText:
+//
+// Linked object's source class has changed
+//
+#define OLE_E_CLASSDIFF _HRESULT_TYPEDEF_(0x80040008L)
+
+//
+// MessageId: OLE_E_CANT_GETMONIKER
+//
+// MessageText:
+//
+// Not able to get the moniker of the object
+//
+#define OLE_E_CANT_GETMONIKER _HRESULT_TYPEDEF_(0x80040009L)
+
+//
+// MessageId: OLE_E_CANT_BINDTOSOURCE
+//
+// MessageText:
+//
+// Not able to bind to the source
+//
+#define OLE_E_CANT_BINDTOSOURCE _HRESULT_TYPEDEF_(0x8004000AL)
+
+//
+// MessageId: OLE_E_STATIC
+//
+// MessageText:
+//
+// Object is static; operation not allowed
+//
+#define OLE_E_STATIC _HRESULT_TYPEDEF_(0x8004000BL)
+
+//
+// MessageId: OLE_E_PROMPTSAVECANCELLED
+//
+// MessageText:
+//
+// User cancelled out of save dialog
+//
+#define OLE_E_PROMPTSAVECANCELLED _HRESULT_TYPEDEF_(0x8004000CL)
+
+//
+// MessageId: OLE_E_INVALIDRECT
+//
+// MessageText:
+//
+// Invalid rectangle
+//
+#define OLE_E_INVALIDRECT _HRESULT_TYPEDEF_(0x8004000DL)
+
+//
+// MessageId: OLE_E_WRONGCOMPOBJ
+//
+// MessageText:
+//
+// compobj.dll is too old for the ole2.dll initialized
+//
+#define OLE_E_WRONGCOMPOBJ _HRESULT_TYPEDEF_(0x8004000EL)
+
+//
+// MessageId: OLE_E_INVALIDHWND
+//
+// MessageText:
+//
+// Invalid window handle
+//
+#define OLE_E_INVALIDHWND _HRESULT_TYPEDEF_(0x8004000FL)
+
+//
+// MessageId: OLE_E_NOT_INPLACEACTIVE
+//
+// MessageText:
+//
+// Object is not in any of the inplace active states
+//
+#define OLE_E_NOT_INPLACEACTIVE _HRESULT_TYPEDEF_(0x80040010L)
+
+//
+// MessageId: OLE_E_CANTCONVERT
+//
+// MessageText:
+//
+// Not able to convert object
+//
+#define OLE_E_CANTCONVERT _HRESULT_TYPEDEF_(0x80040011L)
+
+//
+// MessageId: OLE_E_NOSTORAGE
+//
+// MessageText:
+//
+// Not able to perform the operation because object is not given storage yet
+//
+//
+#define OLE_E_NOSTORAGE _HRESULT_TYPEDEF_(0x80040012L)
+
+//
+// MessageId: DV_E_FORMATETC
+//
+// MessageText:
+//
+// Invalid FORMATETC structure
+//
+#define DV_E_FORMATETC _HRESULT_TYPEDEF_(0x80040064L)
+
+//
+// MessageId: DV_E_DVTARGETDEVICE
+//
+// MessageText:
+//
+// Invalid DVTARGETDEVICE structure
+//
+#define DV_E_DVTARGETDEVICE _HRESULT_TYPEDEF_(0x80040065L)
+
+//
+// MessageId: DV_E_STGMEDIUM
+//
+// MessageText:
+//
+// Invalid STDGMEDIUM structure
+//
+#define DV_E_STGMEDIUM _HRESULT_TYPEDEF_(0x80040066L)
+
+//
+// MessageId: DV_E_STATDATA
+//
+// MessageText:
+//
+// Invalid STATDATA structure
+//
+#define DV_E_STATDATA _HRESULT_TYPEDEF_(0x80040067L)
+
+//
+// MessageId: DV_E_LINDEX
+//
+// MessageText:
+//
+// Invalid lindex
+//
+#define DV_E_LINDEX _HRESULT_TYPEDEF_(0x80040068L)
+
+//
+// MessageId: DV_E_TYMED
+//
+// MessageText:
+//
+// Invalid tymed
+//
+#define DV_E_TYMED _HRESULT_TYPEDEF_(0x80040069L)
+
+//
+// MessageId: DV_E_CLIPFORMAT
+//
+// MessageText:
+//
+// Invalid clipboard format
+//
+#define DV_E_CLIPFORMAT _HRESULT_TYPEDEF_(0x8004006AL)
+
+//
+// MessageId: DV_E_DVASPECT
+//
+// MessageText:
+//
+// Invalid aspect(s)
+//
+#define DV_E_DVASPECT _HRESULT_TYPEDEF_(0x8004006BL)
+
+//
+// MessageId: DV_E_DVTARGETDEVICE_SIZE
+//
+// MessageText:
+//
+// tdSize parameter of the DVTARGETDEVICE structure is invalid
+//
+#define DV_E_DVTARGETDEVICE_SIZE _HRESULT_TYPEDEF_(0x8004006CL)
+
+//
+// MessageId: DV_E_NOIVIEWOBJECT
+//
+// MessageText:
+//
+// Object doesn't support IViewObject interface
+//
+#define DV_E_NOIVIEWOBJECT _HRESULT_TYPEDEF_(0x8004006DL)
+
+#define DRAGDROP_E_FIRST 0x80040100L
+#define DRAGDROP_E_LAST 0x8004010FL
+#define DRAGDROP_S_FIRST 0x00040100L
+#define DRAGDROP_S_LAST 0x0004010FL
+//
+// MessageId: DRAGDROP_E_NOTREGISTERED
+//
+// MessageText:
+//
+// Trying to revoke a drop target that has not been registered
+//
+#define DRAGDROP_E_NOTREGISTERED _HRESULT_TYPEDEF_(0x80040100L)
+
+//
+// MessageId: DRAGDROP_E_ALREADYREGISTERED
+//
+// MessageText:
+//
+// This window has already been registered as a drop target
+//
+#define DRAGDROP_E_ALREADYREGISTERED _HRESULT_TYPEDEF_(0x80040101L)
+
+//
+// MessageId: DRAGDROP_E_INVALIDHWND
+//
+// MessageText:
+//
+// Invalid window handle
+//
+#define DRAGDROP_E_INVALIDHWND _HRESULT_TYPEDEF_(0x80040102L)
+
+#define CLASSFACTORY_E_FIRST 0x80040110L
+#define CLASSFACTORY_E_LAST 0x8004011FL
+#define CLASSFACTORY_S_FIRST 0x00040110L
+#define CLASSFACTORY_S_LAST 0x0004011FL
+//
+// MessageId: CLASS_E_NOAGGREGATION
+//
+// MessageText:
+//
+// Class does not support aggregation (or class object is remote)
+//
+#define CLASS_E_NOAGGREGATION _HRESULT_TYPEDEF_(0x80040110L)
+
+//
+// MessageId: CLASS_E_CLASSNOTAVAILABLE
+//
+// MessageText:
+//
+// ClassFactory cannot supply requested class
+//
+#define CLASS_E_CLASSNOTAVAILABLE _HRESULT_TYPEDEF_(0x80040111L)
+
+#define MARSHAL_E_FIRST 0x80040120L
+#define MARSHAL_E_LAST 0x8004012FL
+#define MARSHAL_S_FIRST 0x00040120L
+#define MARSHAL_S_LAST 0x0004012FL
+#define DATA_E_FIRST 0x80040130L
+#define DATA_E_LAST 0x8004013FL
+#define DATA_S_FIRST 0x00040130L
+#define DATA_S_LAST 0x0004013FL
+#define VIEW_E_FIRST 0x80040140L
+#define VIEW_E_LAST 0x8004014FL
+#define VIEW_S_FIRST 0x00040140L
+#define VIEW_S_LAST 0x0004014FL
+//
+// MessageId: VIEW_E_DRAW
+//
+// MessageText:
+//
+// Error drawing view
+//
+#define VIEW_E_DRAW _HRESULT_TYPEDEF_(0x80040140L)
+
+#define REGDB_E_FIRST 0x80040150L
+#define REGDB_E_LAST 0x8004015FL
+#define REGDB_S_FIRST 0x00040150L
+#define REGDB_S_LAST 0x0004015FL
+//
+// MessageId: REGDB_E_READREGDB
+//
+// MessageText:
+//
+// Could not read key from registry
+//
+#define REGDB_E_READREGDB _HRESULT_TYPEDEF_(0x80040150L)
+
+//
+// MessageId: REGDB_E_WRITEREGDB
+//
+// MessageText:
+//
+// Could not write key to registry
+//
+#define REGDB_E_WRITEREGDB _HRESULT_TYPEDEF_(0x80040151L)
+
+//
+// MessageId: REGDB_E_KEYMISSING
+//
+// MessageText:
+//
+// Could not find the key in the registry
+//
+#define REGDB_E_KEYMISSING _HRESULT_TYPEDEF_(0x80040152L)
+
+//
+// MessageId: REGDB_E_INVALIDVALUE
+//
+// MessageText:
+//
+// Invalid value for registry
+//
+#define REGDB_E_INVALIDVALUE _HRESULT_TYPEDEF_(0x80040153L)
+
+//
+// MessageId: REGDB_E_CLASSNOTREG
+//
+// MessageText:
+//
+// Class not registered
+//
+#define REGDB_E_CLASSNOTREG _HRESULT_TYPEDEF_(0x80040154L)
+
+//
+// MessageId: REGDB_E_IIDNOTREG
+//
+// MessageText:
+//
+// Interface not registered
+//
+#define REGDB_E_IIDNOTREG _HRESULT_TYPEDEF_(0x80040155L)
+
+#define CACHE_E_FIRST 0x80040170L
+#define CACHE_E_LAST 0x8004017FL
+#define CACHE_S_FIRST 0x00040170L
+#define CACHE_S_LAST 0x0004017FL
+//
+// MessageId: CACHE_E_NOCACHE_UPDATED
+//
+// MessageText:
+//
+// Cache not updated
+//
+#define CACHE_E_NOCACHE_UPDATED _HRESULT_TYPEDEF_(0x80040170L)
+
+#define OLEOBJ_E_FIRST 0x80040180L
+#define OLEOBJ_E_LAST 0x8004018FL
+#define OLEOBJ_S_FIRST 0x00040180L
+#define OLEOBJ_S_LAST 0x0004018FL
+//
+// MessageId: OLEOBJ_E_NOVERBS
+//
+// MessageText:
+//
+// No verbs for OLE object
+//
+#define OLEOBJ_E_NOVERBS _HRESULT_TYPEDEF_(0x80040180L)
+
+//
+// MessageId: OLEOBJ_E_INVALIDVERB
+//
+// MessageText:
+//
+// Invalid verb for OLE object
+//
+#define OLEOBJ_E_INVALIDVERB _HRESULT_TYPEDEF_(0x80040181L)
+
+#define CLIENTSITE_E_FIRST 0x80040190L
+#define CLIENTSITE_E_LAST 0x8004019FL
+#define CLIENTSITE_S_FIRST 0x00040190L
+#define CLIENTSITE_S_LAST 0x0004019FL
+//
+// MessageId: INPLACE_E_NOTUNDOABLE
+//
+// MessageText:
+//
+// Undo is not available
+//
+#define INPLACE_E_NOTUNDOABLE _HRESULT_TYPEDEF_(0x800401A0L)
+
+//
+// MessageId: INPLACE_E_NOTOOLSPACE
+//
+// MessageText:
+//
+// Space for tools is not available
+//
+#define INPLACE_E_NOTOOLSPACE _HRESULT_TYPEDEF_(0x800401A1L)
+
+#define INPLACE_E_FIRST 0x800401A0L
+#define INPLACE_E_LAST 0x800401AFL
+#define INPLACE_S_FIRST 0x000401A0L
+#define INPLACE_S_LAST 0x000401AFL
+#define ENUM_E_FIRST 0x800401B0L
+#define ENUM_E_LAST 0x800401BFL
+#define ENUM_S_FIRST 0x000401B0L
+#define ENUM_S_LAST 0x000401BFL
+#define CONVERT10_E_FIRST 0x800401C0L
+#define CONVERT10_E_LAST 0x800401CFL
+#define CONVERT10_S_FIRST 0x000401C0L
+#define CONVERT10_S_LAST 0x000401CFL
+//
+// MessageId: CONVERT10_E_OLESTREAM_GET
+//
+// MessageText:
+//
+// OLESTREAM Get method failed
+//
+#define CONVERT10_E_OLESTREAM_GET _HRESULT_TYPEDEF_(0x800401C0L)
+
+//
+// MessageId: CONVERT10_E_OLESTREAM_PUT
+//
+// MessageText:
+//
+// OLESTREAM Put method failed
+//
+#define CONVERT10_E_OLESTREAM_PUT _HRESULT_TYPEDEF_(0x800401C1L)
+
+//
+// MessageId: CONVERT10_E_OLESTREAM_FMT
+//
+// MessageText:
+//
+// Contents of the OLESTREAM not in correct format
+//
+#define CONVERT10_E_OLESTREAM_FMT _HRESULT_TYPEDEF_(0x800401C2L)
+
+//
+// MessageId: CONVERT10_E_OLESTREAM_BITMAP_TO_DIB
+//
+// MessageText:
+//
+// There was an error in a Windows GDI call while converting the bitmap to a DIB
+//
+#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB _HRESULT_TYPEDEF_(0x800401C3L)
+
+//
+// MessageId: CONVERT10_E_STG_FMT
+//
+// MessageText:
+//
+// Contents of the IStorage not in correct format
+//
+#define CONVERT10_E_STG_FMT _HRESULT_TYPEDEF_(0x800401C4L)
+
+//
+// MessageId: CONVERT10_E_STG_NO_STD_STREAM
+//
+// MessageText:
+//
+// Contents of IStorage is missing one of the standard streams
+//
+#define CONVERT10_E_STG_NO_STD_STREAM _HRESULT_TYPEDEF_(0x800401C5L)
+
+//
+// MessageId: CONVERT10_E_STG_DIB_TO_BITMAP
+//
+// MessageText:
+//
+// There was an error in a Windows GDI call while converting the DIB to a bitmap.
+//
+//
+#define CONVERT10_E_STG_DIB_TO_BITMAP _HRESULT_TYPEDEF_(0x800401C6L)
+
+#define CLIPBRD_E_FIRST 0x800401D0L
+#define CLIPBRD_E_LAST 0x800401DFL
+#define CLIPBRD_S_FIRST 0x000401D0L
+#define CLIPBRD_S_LAST 0x000401DFL
+//
+// MessageId: CLIPBRD_E_CANT_OPEN
+//
+// MessageText:
+//
+// OpenClipboard Failed
+//
+#define CLIPBRD_E_CANT_OPEN _HRESULT_TYPEDEF_(0x800401D0L)
+
+//
+// MessageId: CLIPBRD_E_CANT_EMPTY
+//
+// MessageText:
+//
+// EmptyClipboard Failed
+//
+#define CLIPBRD_E_CANT_EMPTY _HRESULT_TYPEDEF_(0x800401D1L)
+
+//
+// MessageId: CLIPBRD_E_CANT_SET
+//
+// MessageText:
+//
+// SetClipboard Failed
+//
+#define CLIPBRD_E_CANT_SET _HRESULT_TYPEDEF_(0x800401D2L)
+
+//
+// MessageId: CLIPBRD_E_BAD_DATA
+//
+// MessageText:
+//
+// Data on clipboard is invalid
+//
+#define CLIPBRD_E_BAD_DATA _HRESULT_TYPEDEF_(0x800401D3L)
+
+//
+// MessageId: CLIPBRD_E_CANT_CLOSE
+//
+// MessageText:
+//
+// CloseClipboard Failed
+//
+#define CLIPBRD_E_CANT_CLOSE _HRESULT_TYPEDEF_(0x800401D4L)
+
+#define MK_E_FIRST 0x800401E0L
+#define MK_E_LAST 0x800401EFL
+#define MK_S_FIRST 0x000401E0L
+#define MK_S_LAST 0x000401EFL
+//
+// MessageId: MK_E_CONNECTMANUALLY
+//
+// MessageText:
+//
+// Moniker needs to be connected manually
+//
+#define MK_E_CONNECTMANUALLY _HRESULT_TYPEDEF_(0x800401E0L)
+
+//
+// MessageId: MK_E_EXCEEDEDDEADLINE
+//
+// MessageText:
+//
+// Operation exceeded deadline
+//
+#define MK_E_EXCEEDEDDEADLINE _HRESULT_TYPEDEF_(0x800401E1L)
+
+//
+// MessageId: MK_E_NEEDGENERIC
+//
+// MessageText:
+//
+// Moniker needs to be generic
+//
+#define MK_E_NEEDGENERIC _HRESULT_TYPEDEF_(0x800401E2L)
+
+//
+// MessageId: MK_E_UNAVAILABLE
+//
+// MessageText:
+//
+// Operation unavailable
+//
+#define MK_E_UNAVAILABLE _HRESULT_TYPEDEF_(0x800401E3L)
+
+//
+// MessageId: MK_E_SYNTAX
+//
+// MessageText:
+//
+// Invalid syntax
+//
+#define MK_E_SYNTAX _HRESULT_TYPEDEF_(0x800401E4L)
+
+//
+// MessageId: MK_E_NOOBJECT
+//
+// MessageText:
+//
+// No object for moniker
+//
+#define MK_E_NOOBJECT _HRESULT_TYPEDEF_(0x800401E5L)
+
+//
+// MessageId: MK_E_INVALIDEXTENSION
+//
+// MessageText:
+//
+// Bad extension for file
+//
+#define MK_E_INVALIDEXTENSION _HRESULT_TYPEDEF_(0x800401E6L)
+
+//
+// MessageId: MK_E_INTERMEDIATEINTERFACENOTSUPPORTED
+//
+// MessageText:
+//
+// Intermediate operation failed
+//
+#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED _HRESULT_TYPEDEF_(0x800401E7L)
+
+//
+// MessageId: MK_E_NOTBINDABLE
+//
+// MessageText:
+//
+// Moniker is not bindable
+//
+#define MK_E_NOTBINDABLE _HRESULT_TYPEDEF_(0x800401E8L)
+
+//
+// MessageId: MK_E_NOTBOUND
+//
+// MessageText:
+//
+// Moniker is not bound
+//
+#define MK_E_NOTBOUND _HRESULT_TYPEDEF_(0x800401E9L)
+
+//
+// MessageId: MK_E_CANTOPENFILE
+//
+// MessageText:
+//
+// Moniker cannot open file
+//
+#define MK_E_CANTOPENFILE _HRESULT_TYPEDEF_(0x800401EAL)
+
+//
+// MessageId: MK_E_MUSTBOTHERUSER
+//
+// MessageText:
+//
+// User input required for operation to succeed
+//
+#define MK_E_MUSTBOTHERUSER _HRESULT_TYPEDEF_(0x800401EBL)
+
+//
+// MessageId: MK_E_NOINVERSE
+//
+// MessageText:
+//
+// Moniker class has no inverse
+//
+#define MK_E_NOINVERSE _HRESULT_TYPEDEF_(0x800401ECL)
+
+//
+// MessageId: MK_E_NOSTORAGE
+//
+// MessageText:
+//
+// Moniker does not refer to storage
+//
+#define MK_E_NOSTORAGE _HRESULT_TYPEDEF_(0x800401EDL)
+
+//
+// MessageId: MK_E_NOPREFIX
+//
+// MessageText:
+//
+// No common prefix
+//
+#define MK_E_NOPREFIX _HRESULT_TYPEDEF_(0x800401EEL)
+
+//
+// MessageId: MK_E_ENUMERATION_FAILED
+//
+// MessageText:
+//
+// Moniker could not be enumerated
+//
+#define MK_E_ENUMERATION_FAILED _HRESULT_TYPEDEF_(0x800401EFL)
+
+#define CO_E_FIRST 0x800401F0L
+#define CO_E_LAST 0x800401FFL
+#define CO_S_FIRST 0x000401F0L
+#define CO_S_LAST 0x000401FFL
+//
+// MessageId: CO_E_NOTINITIALIZED
+//
+// MessageText:
+//
+// CoInitialize has not been called.
+//
+#define CO_E_NOTINITIALIZED _HRESULT_TYPEDEF_(0x800401F0L)
+
+//
+// MessageId: CO_E_ALREADYINITIALIZED
+//
+// MessageText:
+//
+// CoInitialize has already been called.
+//
+#define CO_E_ALREADYINITIALIZED _HRESULT_TYPEDEF_(0x800401F1L)
+
+//
+// MessageId: CO_E_CANTDETERMINECLASS
+//
+// MessageText:
+//
+// Class of object cannot be determined
+//
+#define CO_E_CANTDETERMINECLASS _HRESULT_TYPEDEF_(0x800401F2L)
+
+//
+// MessageId: CO_E_CLASSSTRING
+//
+// MessageText:
+//
+// Invalid class string
+//
+#define CO_E_CLASSSTRING _HRESULT_TYPEDEF_(0x800401F3L)
+
+//
+// MessageId: CO_E_IIDSTRING
+//
+// MessageText:
+//
+// Invalid interface string
+//
+#define CO_E_IIDSTRING _HRESULT_TYPEDEF_(0x800401F4L)
+
+//
+// MessageId: CO_E_APPNOTFOUND
+//
+// MessageText:
+//
+// Application not found
+//
+#define CO_E_APPNOTFOUND _HRESULT_TYPEDEF_(0x800401F5L)
+
+//
+// MessageId: CO_E_APPSINGLEUSE
+//
+// MessageText:
+//
+// Application cannot be run more than once
+//
+#define CO_E_APPSINGLEUSE _HRESULT_TYPEDEF_(0x800401F6L)
+
+//
+// MessageId: CO_E_ERRORINAPP
+//
+// MessageText:
+//
+// Some error in application program
+//
+#define CO_E_ERRORINAPP _HRESULT_TYPEDEF_(0x800401F7L)
+
+//
+// MessageId: CO_E_DLLNOTFOUND
+//
+// MessageText:
+//
+// DLL for class not found
+//
+#define CO_E_DLLNOTFOUND _HRESULT_TYPEDEF_(0x800401F8L)
+
+//
+// MessageId: CO_E_ERRORINDLL
+//
+// MessageText:
+//
+// Error in the DLL
+//
+#define CO_E_ERRORINDLL _HRESULT_TYPEDEF_(0x800401F9L)
+
+//
+// MessageId: CO_E_WRONGOSFORAPP
+//
+// MessageText:
+//
+// Wrong OS or OS version for application
+//
+#define CO_E_WRONGOSFORAPP _HRESULT_TYPEDEF_(0x800401FAL)
+
+//
+// MessageId: CO_E_OBJNOTREG
+//
+// MessageText:
+//
+// Object is not registered
+//
+#define CO_E_OBJNOTREG _HRESULT_TYPEDEF_(0x800401FBL)
+
+//
+// MessageId: CO_E_OBJISREG
+//
+// MessageText:
+//
+// Object is already registered
+//
+#define CO_E_OBJISREG _HRESULT_TYPEDEF_(0x800401FCL)
+
+//
+// MessageId: CO_E_OBJNOTCONNECTED
+//
+// MessageText:
+//
+// Object is not connected to server
+//
+#define CO_E_OBJNOTCONNECTED _HRESULT_TYPEDEF_(0x800401FDL)
+
+//
+// MessageId: CO_E_APPDIDNTREG
+//
+// MessageText:
+//
+// Application was launched but it didn't register a class factory
+//
+#define CO_E_APPDIDNTREG _HRESULT_TYPEDEF_(0x800401FEL)
+
+//
+// MessageId: CO_E_RELEASED
+//
+// MessageText:
+//
+// Object has been released
+//
+#define CO_E_RELEASED _HRESULT_TYPEDEF_(0x800401FFL)
+
+//
+// MessageId: CO_E_FAILEDTOIMPERSONATE
+//
+// MessageText:
+//
+// Unable to impersonate DCOM client
+//
+#define CO_E_FAILEDTOIMPERSONATE _HRESULT_TYPEDEF_(0x80040200L)
+
+//
+// MessageId: CO_E_FAILEDTOGETSECCTX
+//
+// MessageText:
+//
+// Unable to obtain server's security context
+//
+#define CO_E_FAILEDTOGETSECCTX _HRESULT_TYPEDEF_(0x80040201L)
+
+//
+// MessageId: CO_E_FAILEDTOOPENTHREADTOKEN
+//
+// MessageText:
+//
+// Unable to open the access token of the current thread
+//
+#define CO_E_FAILEDTOOPENTHREADTOKEN _HRESULT_TYPEDEF_(0x80040202L)
+
+//
+// MessageId: CO_E_FAILEDTOGETTOKENINFO
+//
+// MessageText:
+//
+// Unable to obtain user info from an access token
+//
+#define CO_E_FAILEDTOGETTOKENINFO _HRESULT_TYPEDEF_(0x80040203L)
+
+//
+// MessageId: CO_E_TRUSTEEDOESNTMATCHCLIENT
+//
+// MessageText:
+//
+// The client who called IAccessControl::IsAccessPermitted was the trustee provided tot he method
+//
+#define CO_E_TRUSTEEDOESNTMATCHCLIENT _HRESULT_TYPEDEF_(0x80040204L)
+
+//
+// MessageId: CO_E_FAILEDTOQUERYCLIENTBLANKET
+//
+// MessageText:
+//
+// Unable to obtain the client's security blanket
+//
+#define CO_E_FAILEDTOQUERYCLIENTBLANKET _HRESULT_TYPEDEF_(0x80040205L)
+
+//
+// MessageId: CO_E_FAILEDTOSETDACL
+//
+// MessageText:
+//
+// Unable to set a discretionary ACL into a security descriptor
+//
+#define CO_E_FAILEDTOSETDACL _HRESULT_TYPEDEF_(0x80040206L)
+
+//
+// MessageId: CO_E_ACCESSCHECKFAILED
+//
+// MessageText:
+//
+// The system function, AccessCheck, returned false
+//
+#define CO_E_ACCESSCHECKFAILED _HRESULT_TYPEDEF_(0x80040207L)
+
+//
+// MessageId: CO_E_NETACCESSAPIFAILED
+//
+// MessageText:
+//
+// Either NetAccessDel or NetAccessAdd returned an error code.
+//
+#define CO_E_NETACCESSAPIFAILED _HRESULT_TYPEDEF_(0x80040208L)
+
+//
+// MessageId: CO_E_WRONGTRUSTEENAMESYNTAX
+//
+// MessageText:
+//
+// One of the trustee strings provided by the user did not conform to the <Domain>\<Name> syntax and it was not the "*" string
+//
+#define CO_E_WRONGTRUSTEENAMESYNTAX _HRESULT_TYPEDEF_(0x80040209L)
+
+//
+// MessageId: CO_E_INVALIDSID
+//
+// MessageText:
+//
+// One of the security identifiers provided by the user was invalid
+//
+#define CO_E_INVALIDSID _HRESULT_TYPEDEF_(0x8004020AL)
+
+//
+// MessageId: CO_E_CONVERSIONFAILED
+//
+// MessageText:
+//
+// Unable to convert a wide character trustee string to a multibyte trustee string
+//
+#define CO_E_CONVERSIONFAILED _HRESULT_TYPEDEF_(0x8004020BL)
+
+//
+// MessageId: CO_E_NOMATCHINGSIDFOUND
+//
+// MessageText:
+//
+// Unable to find a security identifier that corresponds to a trustee string provided by the user
+//
+#define CO_E_NOMATCHINGSIDFOUND _HRESULT_TYPEDEF_(0x8004020CL)
+
+//
+// MessageId: CO_E_LOOKUPACCSIDFAILED
+//
+// MessageText:
+//
+// The system function, LookupAccountSID, failed
+//
+#define CO_E_LOOKUPACCSIDFAILED _HRESULT_TYPEDEF_(0x8004020DL)
+
+//
+// MessageId: CO_E_NOMATCHINGNAMEFOUND
+//
+// MessageText:
+//
+// Unable to find a trustee name that corresponds to a security identifier provided by the user
+//
+#define CO_E_NOMATCHINGNAMEFOUND _HRESULT_TYPEDEF_(0x8004020EL)
+
+//
+// MessageId: CO_E_LOOKUPACCNAMEFAILED
+//
+// MessageText:
+//
+// The system function, LookupAccountName, failed
+//
+#define CO_E_LOOKUPACCNAMEFAILED _HRESULT_TYPEDEF_(0x8004020FL)
+
+//
+// MessageId: CO_E_SETSERLHNDLFAILED
+//
+// MessageText:
+//
+// Unable to set or reset a serialization handle
+//
+#define CO_E_SETSERLHNDLFAILED _HRESULT_TYPEDEF_(0x80040210L)
+
+//
+// MessageId: CO_E_FAILEDTOGETWINDIR
+//
+// MessageText:
+//
+// Unable to obtain the Windows directory
+//
+#define CO_E_FAILEDTOGETWINDIR _HRESULT_TYPEDEF_(0x80040211L)
+
+//
+// MessageId: CO_E_PATHTOOLONG
+//
+// MessageText:
+//
+// Path too long
+//
+#define CO_E_PATHTOOLONG _HRESULT_TYPEDEF_(0x80040212L)
+
+//
+// MessageId: CO_E_FAILEDTOGENUUID
+//
+// MessageText:
+//
+// Unable to generate a uuid.
+//
+#define CO_E_FAILEDTOGENUUID _HRESULT_TYPEDEF_(0x80040213L)
+
+//
+// MessageId: CO_E_FAILEDTOCREATEFILE
+//
+// MessageText:
+//
+// Unable to create file
+//
+#define CO_E_FAILEDTOCREATEFILE _HRESULT_TYPEDEF_(0x80040214L)
+
+//
+// MessageId: CO_E_FAILEDTOCLOSEHANDLE
+//
+// MessageText:
+//
+// Unable to close a serialization handle or a file handle.
+//
+#define CO_E_FAILEDTOCLOSEHANDLE _HRESULT_TYPEDEF_(0x80040215L)
+
+//
+// MessageId: CO_E_EXCEEDSYSACLLIMIT
+//
+// MessageText:
+//
+// The number of ACEs in an ACL exceeds the system limit
+//
+#define CO_E_EXCEEDSYSACLLIMIT _HRESULT_TYPEDEF_(0x80040216L)
+
+//
+// MessageId: CO_E_ACESINWRONGORDER
+//
+// MessageText:
+//
+// Not all the DENY_ACCESS ACEs are arranged in front of the GRANT_ACCESS ACEs in the stream
+//
+#define CO_E_ACESINWRONGORDER _HRESULT_TYPEDEF_(0x80040217L)
+
+//
+// MessageId: CO_E_INCOMPATIBLESTREAMVERSION
+//
+// MessageText:
+//
+// The version of ACL format in the stream is not supported by this implementation of IAccessControl
+//
+#define CO_E_INCOMPATIBLESTREAMVERSION _HRESULT_TYPEDEF_(0x80040218L)
+
+//
+// MessageId: CO_E_FAILEDTOOPENPROCESSTOKEN
+//
+// MessageText:
+//
+// Unable to open the access token of the server process
+//
+#define CO_E_FAILEDTOOPENPROCESSTOKEN _HRESULT_TYPEDEF_(0x80040219L)
+
+//
+// MessageId: CO_E_DECODEFAILED
+//
+// MessageText:
+//
+// Unable to decode the ACL in the stream provided by the user
+//
+#define CO_E_DECODEFAILED _HRESULT_TYPEDEF_(0x8004021AL)
+
+//
+// MessageId: CO_E_ACNOTINITIALIZED
+//
+// MessageText:
+//
+// The COM IAccessControl object is not initialized
+//
+#define CO_E_ACNOTINITIALIZED _HRESULT_TYPEDEF_(0x8004021BL)
+
+//
+// Old OLE Success Codes
+//
+//
+// MessageId: OLE_S_USEREG
+//
+// MessageText:
+//
+// Use the registry database to provide the requested information
+//
+#define OLE_S_USEREG _HRESULT_TYPEDEF_(0x00040000L)
+
+//
+// MessageId: OLE_S_STATIC
+//
+// MessageText:
+//
+// Success, but static
+//
+#define OLE_S_STATIC _HRESULT_TYPEDEF_(0x00040001L)
+
+//
+// MessageId: OLE_S_MAC_CLIPFORMAT
+//
+// MessageText:
+//
+// Macintosh clipboard format
+//
+#define OLE_S_MAC_CLIPFORMAT _HRESULT_TYPEDEF_(0x00040002L)
+
+//
+// MessageId: DRAGDROP_S_DROP
+//
+// MessageText:
+//
+// Successful drop took place
+//
+#define DRAGDROP_S_DROP _HRESULT_TYPEDEF_(0x00040100L)
+
+//
+// MessageId: DRAGDROP_S_CANCEL
+//
+// MessageText:
+//
+// Drag-drop operation canceled
+//
+#define DRAGDROP_S_CANCEL _HRESULT_TYPEDEF_(0x00040101L)
+
+//
+// MessageId: DRAGDROP_S_USEDEFAULTCURSORS
+//
+// MessageText:
+//
+// Use the default cursor
+//
+#define DRAGDROP_S_USEDEFAULTCURSORS _HRESULT_TYPEDEF_(0x00040102L)
+
+//
+// MessageId: DATA_S_SAMEFORMATETC
+//
+// MessageText:
+//
+// Data has same FORMATETC
+//
+#define DATA_S_SAMEFORMATETC _HRESULT_TYPEDEF_(0x00040130L)
+
+//
+// MessageId: VIEW_S_ALREADY_FROZEN
+//
+// MessageText:
+//
+// View is already frozen
+//
+#define VIEW_S_ALREADY_FROZEN _HRESULT_TYPEDEF_(0x00040140L)
+
+//
+// MessageId: CACHE_S_FORMATETC_NOTSUPPORTED
+//
+// MessageText:
+//
+// FORMATETC not supported
+//
+#define CACHE_S_FORMATETC_NOTSUPPORTED _HRESULT_TYPEDEF_(0x00040170L)
+
+//
+// MessageId: CACHE_S_SAMECACHE
+//
+// MessageText:
+//
+// Same cache
+//
+#define CACHE_S_SAMECACHE _HRESULT_TYPEDEF_(0x00040171L)
+
+//
+// MessageId: CACHE_S_SOMECACHES_NOTUPDATED
+//
+// MessageText:
+//
+// Some cache(s) not updated
+//
+#define CACHE_S_SOMECACHES_NOTUPDATED _HRESULT_TYPEDEF_(0x00040172L)
+
+//
+// MessageId: OLEOBJ_S_INVALIDVERB
+//
+// MessageText:
+//
+// Invalid verb for OLE object
+//
+#define OLEOBJ_S_INVALIDVERB _HRESULT_TYPEDEF_(0x00040180L)
+
+//
+// MessageId: OLEOBJ_S_CANNOT_DOVERB_NOW
+//
+// MessageText:
+//
+// Verb number is valid but verb cannot be done now
+//
+#define OLEOBJ_S_CANNOT_DOVERB_NOW _HRESULT_TYPEDEF_(0x00040181L)
+
+//
+// MessageId: OLEOBJ_S_INVALIDHWND
+//
+// MessageText:
+//
+// Invalid window handle passed
+//
+#define OLEOBJ_S_INVALIDHWND _HRESULT_TYPEDEF_(0x00040182L)
+
+//
+// MessageId: INPLACE_S_TRUNCATED
+//
+// MessageText:
+//
+// Message is too long; some of it had to be truncated before displaying
+//
+#define INPLACE_S_TRUNCATED _HRESULT_TYPEDEF_(0x000401A0L)
+
+//
+// MessageId: CONVERT10_S_NO_PRESENTATION
+//
+// MessageText:
+//
+// Unable to convert OLESTREAM to IStorage
+//
+#define CONVERT10_S_NO_PRESENTATION _HRESULT_TYPEDEF_(0x000401C0L)
+
+//
+// MessageId: MK_S_REDUCED_TO_SELF
+//
+// MessageText:
+//
+// Moniker reduced to itself
+//
+#define MK_S_REDUCED_TO_SELF _HRESULT_TYPEDEF_(0x000401E2L)
+
+//
+// MessageId: MK_S_ME
+//
+// MessageText:
+//
+// Common prefix is this moniker
+//
+#define MK_S_ME _HRESULT_TYPEDEF_(0x000401E4L)
+
+//
+// MessageId: MK_S_HIM
+//
+// MessageText:
+//
+// Common prefix is input moniker
+//
+#define MK_S_HIM _HRESULT_TYPEDEF_(0x000401E5L)
+
+//
+// MessageId: MK_S_US
+//
+// MessageText:
+//
+// Common prefix is both monikers
+//
+#define MK_S_US _HRESULT_TYPEDEF_(0x000401E6L)
+
+//
+// MessageId: MK_S_MONIKERALREADYREGISTERED
+//
+// MessageText:
+//
+// Moniker is already registered in running object table
+//
+#define MK_S_MONIKERALREADYREGISTERED _HRESULT_TYPEDEF_(0x000401E7L)
+
+// ******************
+// FACILITY_WINDOWS
+// ******************
+//
+// Codes 0x0-0x01ff are reserved for the OLE group of
+// interfaces.
+//
+//
+// MessageId: CO_E_CLASS_CREATE_FAILED
+//
+// MessageText:
+//
+// Attempt to create a class object failed
+//
+#define CO_E_CLASS_CREATE_FAILED _HRESULT_TYPEDEF_(0x80080001L)
+
+//
+// MessageId: CO_E_SCM_ERROR
+//
+// MessageText:
+//
+// OLE service could not bind object
+//
+#define CO_E_SCM_ERROR _HRESULT_TYPEDEF_(0x80080002L)
+
+//
+// MessageId: CO_E_SCM_RPC_FAILURE
+//
+// MessageText:
+//
+// RPC communication failed with OLE service
+//
+#define CO_E_SCM_RPC_FAILURE _HRESULT_TYPEDEF_(0x80080003L)
+
+//
+// MessageId: CO_E_BAD_PATH
+//
+// MessageText:
+//
+// Bad path to object
+//
+#define CO_E_BAD_PATH _HRESULT_TYPEDEF_(0x80080004L)
+
+//
+// MessageId: CO_E_SERVER_EXEC_FAILURE
+//
+// MessageText:
+//
+// Server execution failed
+//
+#define CO_E_SERVER_EXEC_FAILURE _HRESULT_TYPEDEF_(0x80080005L)
+
+//
+// MessageId: CO_E_OBJSRV_RPC_FAILURE
+//
+// MessageText:
+//
+// OLE service could not communicate with the object server
+//
+#define CO_E_OBJSRV_RPC_FAILURE _HRESULT_TYPEDEF_(0x80080006L)
+
+//
+// MessageId: MK_E_NO_NORMALIZED
+//
+// MessageText:
+//
+// Moniker path could not be normalized
+//
+#define MK_E_NO_NORMALIZED _HRESULT_TYPEDEF_(0x80080007L)
+
+//
+// MessageId: CO_E_SERVER_STOPPING
+//
+// MessageText:
+//
+// Object server is stopping when OLE service contacts it
+//
+#define CO_E_SERVER_STOPPING _HRESULT_TYPEDEF_(0x80080008L)
+
+//
+// MessageId: MEM_E_INVALID_ROOT
+//
+// MessageText:
+//
+// An invalid root block pointer was specified
+//
+#define MEM_E_INVALID_ROOT _HRESULT_TYPEDEF_(0x80080009L)
+
+//
+// MessageId: MEM_E_INVALID_LINK
+//
+// MessageText:
+//
+// An allocation chain contained an invalid link pointer
+//
+#define MEM_E_INVALID_LINK _HRESULT_TYPEDEF_(0x80080010L)
+
+//
+// MessageId: MEM_E_INVALID_SIZE
+//
+// MessageText:
+//
+// The requested allocation size was too large
+//
+#define MEM_E_INVALID_SIZE _HRESULT_TYPEDEF_(0x80080011L)
+
+//
+// MessageId: CO_S_NOTALLINTERFACES
+//
+// MessageText:
+//
+// Not all the requested interfaces were available
+//
+#define CO_S_NOTALLINTERFACES _HRESULT_TYPEDEF_(0x00080012L)
+
+// ******************
+// FACILITY_DISPATCH
+// ******************
+//
+// MessageId: DISP_E_UNKNOWNINTERFACE
+//
+// MessageText:
+//
+// Unknown interface.
+//
+#define DISP_E_UNKNOWNINTERFACE _HRESULT_TYPEDEF_(0x80020001L)
+
+//
+// MessageId: DISP_E_MEMBERNOTFOUND
+//
+// MessageText:
+//
+// Member not found.
+//
+#define DISP_E_MEMBERNOTFOUND _HRESULT_TYPEDEF_(0x80020003L)
+
+//
+// MessageId: DISP_E_PARAMNOTFOUND
+//
+// MessageText:
+//
+// Parameter not found.
+//
+#define DISP_E_PARAMNOTFOUND _HRESULT_TYPEDEF_(0x80020004L)
+
+//
+// MessageId: DISP_E_TYPEMISMATCH
+//
+// MessageText:
+//
+// Type mismatch.
+//
+#define DISP_E_TYPEMISMATCH _HRESULT_TYPEDEF_(0x80020005L)
+
+//
+// MessageId: DISP_E_UNKNOWNNAME
+//
+// MessageText:
+//
+// Unknown name.
+//
+#define DISP_E_UNKNOWNNAME _HRESULT_TYPEDEF_(0x80020006L)
+
+//
+// MessageId: DISP_E_NONAMEDARGS
+//
+// MessageText:
+//
+// No named arguments.
+//
+#define DISP_E_NONAMEDARGS _HRESULT_TYPEDEF_(0x80020007L)
+
+//
+// MessageId: DISP_E_BADVARTYPE
+//
+// MessageText:
+//
+// Bad variable type.
+//
+#define DISP_E_BADVARTYPE _HRESULT_TYPEDEF_(0x80020008L)
+
+//
+// MessageId: DISP_E_EXCEPTION
+//
+// MessageText:
+//
+// Exception occurred.
+//
+#define DISP_E_EXCEPTION _HRESULT_TYPEDEF_(0x80020009L)
+
+//
+// MessageId: DISP_E_OVERFLOW
+//
+// MessageText:
+//
+// Out of present range.
+//
+#define DISP_E_OVERFLOW _HRESULT_TYPEDEF_(0x8002000AL)
+
+//
+// MessageId: DISP_E_BADINDEX
+//
+// MessageText:
+//
+// Invalid index.
+//
+#define DISP_E_BADINDEX _HRESULT_TYPEDEF_(0x8002000BL)
+
+//
+// MessageId: DISP_E_UNKNOWNLCID
+//
+// MessageText:
+//
+// Unknown language.
+//
+#define DISP_E_UNKNOWNLCID _HRESULT_TYPEDEF_(0x8002000CL)
+
+//
+// MessageId: DISP_E_ARRAYISLOCKED
+//
+// MessageText:
+//
+// Memory is locked.
+//
+#define DISP_E_ARRAYISLOCKED _HRESULT_TYPEDEF_(0x8002000DL)
+
+//
+// MessageId: DISP_E_BADPARAMCOUNT
+//
+// MessageText:
+//
+// Invalid number of parameters.
+//
+#define DISP_E_BADPARAMCOUNT _HRESULT_TYPEDEF_(0x8002000EL)
+
+//
+// MessageId: DISP_E_PARAMNOTOPTIONAL
+//
+// MessageText:
+//
+// Parameter not optional.
+//
+#define DISP_E_PARAMNOTOPTIONAL _HRESULT_TYPEDEF_(0x8002000FL)
+
+//
+// MessageId: DISP_E_BADCALLEE
+//
+// MessageText:
+//
+// Invalid callee.
+//
+#define DISP_E_BADCALLEE _HRESULT_TYPEDEF_(0x80020010L)
+
+//
+// MessageId: DISP_E_NOTACOLLECTION
+//
+// MessageText:
+//
+// Does not support a collection.
+//
+#define DISP_E_NOTACOLLECTION _HRESULT_TYPEDEF_(0x80020011L)
+
+//
+// MessageId: TYPE_E_BUFFERTOOSMALL
+//
+// MessageText:
+//
+// Buffer too small.
+//
+#define TYPE_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80028016L)
+
+//
+// MessageId: TYPE_E_INVDATAREAD
+//
+// MessageText:
+//
+// Old format or invalid type library.
+//
+#define TYPE_E_INVDATAREAD _HRESULT_TYPEDEF_(0x80028018L)
+
+//
+// MessageId: TYPE_E_UNSUPFORMAT
+//
+// MessageText:
+//
+// Old format or invalid type library.
+//
+#define TYPE_E_UNSUPFORMAT _HRESULT_TYPEDEF_(0x80028019L)
+
+//
+// MessageId: TYPE_E_REGISTRYACCESS
+//
+// MessageText:
+//
+// Error accessing the OLE registry.
+//
+#define TYPE_E_REGISTRYACCESS _HRESULT_TYPEDEF_(0x8002801CL)
+
+//
+// MessageId: TYPE_E_LIBNOTREGISTERED
+//
+// MessageText:
+//
+// Library not registered.
+//
+#define TYPE_E_LIBNOTREGISTERED _HRESULT_TYPEDEF_(0x8002801DL)
+
+//
+// MessageId: TYPE_E_UNDEFINEDTYPE
+//
+// MessageText:
+//
+// Bound to unknown type.
+//
+#define TYPE_E_UNDEFINEDTYPE _HRESULT_TYPEDEF_(0x80028027L)
+
+//
+// MessageId: TYPE_E_QUALIFIEDNAMEDISALLOWED
+//
+// MessageText:
+//
+// Qualified name disallowed.
+//
+#define TYPE_E_QUALIFIEDNAMEDISALLOWED _HRESULT_TYPEDEF_(0x80028028L)
+
+//
+// MessageId: TYPE_E_INVALIDSTATE
+//
+// MessageText:
+//
+// Invalid forward reference, or reference to uncompiled type.
+//
+#define TYPE_E_INVALIDSTATE _HRESULT_TYPEDEF_(0x80028029L)
+
+//
+// MessageId: TYPE_E_WRONGTYPEKIND
+//
+// MessageText:
+//
+// Type mismatch.
+//
+#define TYPE_E_WRONGTYPEKIND _HRESULT_TYPEDEF_(0x8002802AL)
+
+//
+// MessageId: TYPE_E_ELEMENTNOTFOUND
+//
+// MessageText:
+//
+// Element not found.
+//
+#define TYPE_E_ELEMENTNOTFOUND _HRESULT_TYPEDEF_(0x8002802BL)
+
+//
+// MessageId: TYPE_E_AMBIGUOUSNAME
+//
+// MessageText:
+//
+// Ambiguous name.
+//
+#define TYPE_E_AMBIGUOUSNAME _HRESULT_TYPEDEF_(0x8002802CL)
+
+//
+// MessageId: TYPE_E_NAMECONFLICT
+//
+// MessageText:
+//
+// Name already exists in the library.
+//
+#define TYPE_E_NAMECONFLICT _HRESULT_TYPEDEF_(0x8002802DL)
+
+//
+// MessageId: TYPE_E_UNKNOWNLCID
+//
+// MessageText:
+//
+// Unknown LCID.
+//
+#define TYPE_E_UNKNOWNLCID _HRESULT_TYPEDEF_(0x8002802EL)
+
+//
+// MessageId: TYPE_E_DLLFUNCTIONNOTFOUND
+//
+// MessageText:
+//
+// Function not defined in specified DLL.
+//
+#define TYPE_E_DLLFUNCTIONNOTFOUND _HRESULT_TYPEDEF_(0x8002802FL)
+
+//
+// MessageId: TYPE_E_BADMODULEKIND
+//
+// MessageText:
+//
+// Wrong module kind for the operation.
+//
+#define TYPE_E_BADMODULEKIND _HRESULT_TYPEDEF_(0x800288BDL)
+
+//
+// MessageId: TYPE_E_SIZETOOBIG
+//
+// MessageText:
+//
+// Size may not exceed 64K.
+//
+#define TYPE_E_SIZETOOBIG _HRESULT_TYPEDEF_(0x800288C5L)
+
+//
+// MessageId: TYPE_E_DUPLICATEID
+//
+// MessageText:
+//
+// Duplicate ID in inheritance hierarchy.
+//
+#define TYPE_E_DUPLICATEID _HRESULT_TYPEDEF_(0x800288C6L)
+
+//
+// MessageId: TYPE_E_INVALIDID
+//
+// MessageText:
+//
+// Incorrect inheritance depth in standard OLE hmember.
+//
+#define TYPE_E_INVALIDID _HRESULT_TYPEDEF_(0x800288CFL)
+
+//
+// MessageId: TYPE_E_TYPEMISMATCH
+//
+// MessageText:
+//
+// Type mismatch.
+//
+#define TYPE_E_TYPEMISMATCH _HRESULT_TYPEDEF_(0x80028CA0L)
+
+//
+// MessageId: TYPE_E_OUTOFBOUNDS
+//
+// MessageText:
+//
+// Invalid number of arguments.
+//
+#define TYPE_E_OUTOFBOUNDS _HRESULT_TYPEDEF_(0x80028CA1L)
+
+//
+// MessageId: TYPE_E_IOERROR
+//
+// MessageText:
+//
+// I/O Error.
+//
+#define TYPE_E_IOERROR _HRESULT_TYPEDEF_(0x80028CA2L)
+
+//
+// MessageId: TYPE_E_CANTCREATETMPFILE
+//
+// MessageText:
+//
+// Error creating unique tmp file.
+//
+#define TYPE_E_CANTCREATETMPFILE _HRESULT_TYPEDEF_(0x80028CA3L)
+
+//
+// MessageId: TYPE_E_CANTLOADLIBRARY
+//
+// MessageText:
+//
+// Error loading type library/DLL.
+//
+#define TYPE_E_CANTLOADLIBRARY _HRESULT_TYPEDEF_(0x80029C4AL)
+
+//
+// MessageId: TYPE_E_INCONSISTENTPROPFUNCS
+//
+// MessageText:
+//
+// Inconsistent property functions.
+//
+#define TYPE_E_INCONSISTENTPROPFUNCS _HRESULT_TYPEDEF_(0x80029C83L)
+
+//
+// MessageId: TYPE_E_CIRCULARTYPE
+//
+// MessageText:
+//
+// Circular dependency between types/modules.
+//
+#define TYPE_E_CIRCULARTYPE _HRESULT_TYPEDEF_(0x80029C84L)
+
+// ******************
+// FACILITY_STORAGE
+// ******************
+//
+// MessageId: STG_E_INVALIDFUNCTION
+//
+// MessageText:
+//
+// Unable to perform requested operation.
+//
+#define STG_E_INVALIDFUNCTION _HRESULT_TYPEDEF_(0x80030001L)
+
+//
+// MessageId: STG_E_FILENOTFOUND
+//
+// MessageText:
+//
+// %1 could not be found.
+//
+#define STG_E_FILENOTFOUND _HRESULT_TYPEDEF_(0x80030002L)
+
+//
+// MessageId: STG_E_PATHNOTFOUND
+//
+// MessageText:
+//
+// The path %1 could not be found.
+//
+#define STG_E_PATHNOTFOUND _HRESULT_TYPEDEF_(0x80030003L)
+
+//
+// MessageId: STG_E_TOOMANYOPENFILES
+//
+// MessageText:
+//
+// There are insufficient resources to open another file.
+//
+#define STG_E_TOOMANYOPENFILES _HRESULT_TYPEDEF_(0x80030004L)
+
+//
+// MessageId: STG_E_ACCESSDENIED
+//
+// MessageText:
+//
+// Access Denied.
+//
+#define STG_E_ACCESSDENIED _HRESULT_TYPEDEF_(0x80030005L)
+
+//
+// MessageId: STG_E_INVALIDHANDLE
+//
+// MessageText:
+//
+// Attempted an operation on an invalid object.
+//
+#define STG_E_INVALIDHANDLE _HRESULT_TYPEDEF_(0x80030006L)
+
+//
+// MessageId: STG_E_INSUFFICIENTMEMORY
+//
+// MessageText:
+//
+// There is insufficient memory available to complete operation.
+//
+#define STG_E_INSUFFICIENTMEMORY _HRESULT_TYPEDEF_(0x80030008L)
+
+//
+// MessageId: STG_E_INVALIDPOINTER
+//
+// MessageText:
+//
+// Invalid pointer error.
+//
+#define STG_E_INVALIDPOINTER _HRESULT_TYPEDEF_(0x80030009L)
+
+//
+// MessageId: STG_E_NOMOREFILES
+//
+// MessageText:
+//
+// There are no more entries to return.
+//
+#define STG_E_NOMOREFILES _HRESULT_TYPEDEF_(0x80030012L)
+
+//
+// MessageId: STG_E_DISKISWRITEPROTECTED
+//
+// MessageText:
+//
+// Disk is write-protected.
+//
+#define STG_E_DISKISWRITEPROTECTED _HRESULT_TYPEDEF_(0x80030013L)
+
+//
+// MessageId: STG_E_SEEKERROR
+//
+// MessageText:
+//
+// An error occurred during a seek operation.
+//
+#define STG_E_SEEKERROR _HRESULT_TYPEDEF_(0x80030019L)
+
+//
+// MessageId: STG_E_WRITEFAULT
+//
+// MessageText:
+//
+// A disk error occurred during a write operation.
+//
+#define STG_E_WRITEFAULT _HRESULT_TYPEDEF_(0x8003001DL)
+
+//
+// MessageId: STG_E_READFAULT
+//
+// MessageText:
+//
+// A disk error occurred during a read operation.
+//
+#define STG_E_READFAULT _HRESULT_TYPEDEF_(0x8003001EL)
+
+//
+// MessageId: STG_E_SHAREVIOLATION
+//
+// MessageText:
+//
+// A share violation has occurred.
+//
+#define STG_E_SHAREVIOLATION _HRESULT_TYPEDEF_(0x80030020L)
+
+//
+// MessageId: STG_E_LOCKVIOLATION
+//
+// MessageText:
+//
+// A lock violation has occurred.
+//
+#define STG_E_LOCKVIOLATION _HRESULT_TYPEDEF_(0x80030021L)
+
+//
+// MessageId: STG_E_FILEALREADYEXISTS
+//
+// MessageText:
+//
+// %1 already exists.
+//
+#define STG_E_FILEALREADYEXISTS _HRESULT_TYPEDEF_(0x80030050L)
+
+//
+// MessageId: STG_E_INVALIDPARAMETER
+//
+// MessageText:
+//
+// Invalid parameter error.
+//
+#define STG_E_INVALIDPARAMETER _HRESULT_TYPEDEF_(0x80030057L)
+
+//
+// MessageId: STG_E_MEDIUMFULL
+//
+// MessageText:
+//
+// There is insufficient disk space to complete operation.
+//
+#define STG_E_MEDIUMFULL _HRESULT_TYPEDEF_(0x80030070L)
+
+//
+// MessageId: STG_E_PROPSETMISMATCHED
+//
+// MessageText:
+//
+// Illegal write of non-simple property to simple property set.
+//
+#define STG_E_PROPSETMISMATCHED _HRESULT_TYPEDEF_(0x800300F0L)
+
+//
+// MessageId: STG_E_ABNORMALAPIEXIT
+//
+// MessageText:
+//
+// An API call exited abnormally.
+//
+#define STG_E_ABNORMALAPIEXIT _HRESULT_TYPEDEF_(0x800300FAL)
+
+//
+// MessageId: STG_E_INVALIDHEADER
+//
+// MessageText:
+//
+// The file %1 is not a valid compound file.
+//
+#define STG_E_INVALIDHEADER _HRESULT_TYPEDEF_(0x800300FBL)
+
+//
+// MessageId: STG_E_INVALIDNAME
+//
+// MessageText:
+//
+// The name %1 is not valid.
+//
+#define STG_E_INVALIDNAME _HRESULT_TYPEDEF_(0x800300FCL)
+
+//
+// MessageId: STG_E_UNKNOWN
+//
+// MessageText:
+//
+// An unexpected error occurred.
+//
+#define STG_E_UNKNOWN _HRESULT_TYPEDEF_(0x800300FDL)
+
+//
+// MessageId: STG_E_UNIMPLEMENTEDFUNCTION
+//
+// MessageText:
+//
+// That function is not implemented.
+//
+#define STG_E_UNIMPLEMENTEDFUNCTION _HRESULT_TYPEDEF_(0x800300FEL)
+
+//
+// MessageId: STG_E_INVALIDFLAG
+//
+// MessageText:
+//
+// Invalid flag error.
+//
+#define STG_E_INVALIDFLAG _HRESULT_TYPEDEF_(0x800300FFL)
+
+//
+// MessageId: STG_E_INUSE
+//
+// MessageText:
+//
+// Attempted to use an object that is busy.
+//
+#define STG_E_INUSE _HRESULT_TYPEDEF_(0x80030100L)
+
+//
+// MessageId: STG_E_NOTCURRENT
+//
+// MessageText:
+//
+// The storage has been changed since the last commit.
+//
+#define STG_E_NOTCURRENT _HRESULT_TYPEDEF_(0x80030101L)
+
+//
+// MessageId: STG_E_REVERTED
+//
+// MessageText:
+//
+// Attempted to use an object that has ceased to exist.
+//
+#define STG_E_REVERTED _HRESULT_TYPEDEF_(0x80030102L)
+
+//
+// MessageId: STG_E_CANTSAVE
+//
+// MessageText:
+//
+// Can't save.
+//
+#define STG_E_CANTSAVE _HRESULT_TYPEDEF_(0x80030103L)
+
+//
+// MessageId: STG_E_OLDFORMAT
+//
+// MessageText:
+//
+// The compound file %1 was produced with an incompatible version of storage.
+//
+#define STG_E_OLDFORMAT _HRESULT_TYPEDEF_(0x80030104L)
+
+//
+// MessageId: STG_E_OLDDLL
+//
+// MessageText:
+//
+// The compound file %1 was produced with a newer version of storage.
+//
+#define STG_E_OLDDLL _HRESULT_TYPEDEF_(0x80030105L)
+
+//
+// MessageId: STG_E_SHAREREQUIRED
+//
+// MessageText:
+//
+// Share.exe or equivalent is required for operation.
+//
+#define STG_E_SHAREREQUIRED _HRESULT_TYPEDEF_(0x80030106L)
+
+//
+// MessageId: STG_E_NOTFILEBASEDSTORAGE
+//
+// MessageText:
+//
+// Illegal operation called on non-file based storage.
+//
+#define STG_E_NOTFILEBASEDSTORAGE _HRESULT_TYPEDEF_(0x80030107L)
+
+//
+// MessageId: STG_E_EXTANTMARSHALLINGS
+//
+// MessageText:
+//
+// Illegal operation called on object with extant marshallings.
+//
+#define STG_E_EXTANTMARSHALLINGS _HRESULT_TYPEDEF_(0x80030108L)
+
+//
+// MessageId: STG_E_DOCFILECORRUPT
+//
+// MessageText:
+//
+// The docfile has been corrupted.
+//
+#define STG_E_DOCFILECORRUPT _HRESULT_TYPEDEF_(0x80030109L)
+
+//
+// MessageId: STG_E_BADBASEADDRESS
+//
+// MessageText:
+//
+// OLE32.DLL has been loaded at the wrong address.
+//
+#define STG_E_BADBASEADDRESS _HRESULT_TYPEDEF_(0x80030110L)
+
+//
+// MessageId: STG_E_INCOMPLETE
+//
+// MessageText:
+//
+// The file download was aborted abnormally. The file is incomplete.
+//
+#define STG_E_INCOMPLETE _HRESULT_TYPEDEF_(0x80030201L)
+
+//
+// MessageId: STG_E_TERMINATED
+//
+// MessageText:
+//
+// The file download has been terminated.
+//
+#define STG_E_TERMINATED _HRESULT_TYPEDEF_(0x80030202L)
+
+//
+// MessageId: STG_S_CONVERTED
+//
+// MessageText:
+//
+// The underlying file was converted to compound file format.
+//
+#define STG_S_CONVERTED _HRESULT_TYPEDEF_(0x00030200L)
+
+//
+// MessageId: STG_S_BLOCK
+//
+// MessageText:
+//
+// The storage operation should block until more data is available.
+//
+#define STG_S_BLOCK _HRESULT_TYPEDEF_(0x00030201L)
+
+//
+// MessageId: STG_S_RETRYNOW
+//
+// MessageText:
+//
+// The storage operation should retry immediately.
+//
+#define STG_S_RETRYNOW _HRESULT_TYPEDEF_(0x00030202L)
+
+//
+// MessageId: STG_S_MONITORING
+//
+// MessageText:
+//
+// The notified event sink will not influence the storage operation.
+//
+#define STG_S_MONITORING _HRESULT_TYPEDEF_(0x00030203L)
+
+// ******************
+// FACILITY_RPC
+// ******************
+//
+// Codes 0x0-0x11 are propogated from 16 bit OLE.
+//
+//
+// MessageId: RPC_E_CALL_REJECTED
+//
+// MessageText:
+//
+// Call was rejected by callee.
+//
+#define RPC_E_CALL_REJECTED _HRESULT_TYPEDEF_(0x80010001L)
+
+//
+// MessageId: RPC_E_CALL_CANCELED
+//
+// MessageText:
+//
+// Call was canceled by the message filter.
+//
+#define RPC_E_CALL_CANCELED _HRESULT_TYPEDEF_(0x80010002L)
+
+//
+// MessageId: RPC_E_CANTPOST_INSENDCALL
+//
+// MessageText:
+//
+// The caller is dispatching an intertask SendMessage call and
+// cannot call out via PostMessage.
+//
+#define RPC_E_CANTPOST_INSENDCALL _HRESULT_TYPEDEF_(0x80010003L)
+
+//
+// MessageId: RPC_E_CANTCALLOUT_INASYNCCALL
+//
+// MessageText:
+//
+// The caller is dispatching an asynchronous call and cannot
+// make an outgoing call on behalf of this call.
+//
+#define RPC_E_CANTCALLOUT_INASYNCCALL _HRESULT_TYPEDEF_(0x80010004L)
+
+//
+// MessageId: RPC_E_CANTCALLOUT_INEXTERNALCALL
+//
+// MessageText:
+//
+// It is illegal to call out while inside message filter.
+//
+#define RPC_E_CANTCALLOUT_INEXTERNALCALL _HRESULT_TYPEDEF_(0x80010005L)
+
+//
+// MessageId: RPC_E_CONNECTION_TERMINATED
+//
+// MessageText:
+//
+// The connection terminated or is in a bogus state
+// and cannot be used any more. Other connections
+// are still valid.
+//
+#define RPC_E_CONNECTION_TERMINATED _HRESULT_TYPEDEF_(0x80010006L)
+
+//
+// MessageId: RPC_E_SERVER_DIED
+//
+// MessageText:
+//
+// The callee (server [not server application]) is not available
+// and disappeared; all connections are invalid. The call may
+// have executed.
+//
+#define RPC_E_SERVER_DIED _HRESULT_TYPEDEF_(0x80010007L)
+
+//
+// MessageId: RPC_E_CLIENT_DIED
+//
+// MessageText:
+//
+// The caller (client) disappeared while the callee (server) was
+// processing a call.
+//
+#define RPC_E_CLIENT_DIED _HRESULT_TYPEDEF_(0x80010008L)
+
+//
+// MessageId: RPC_E_INVALID_DATAPACKET
+//
+// MessageText:
+//
+// The data packet with the marshalled parameter data is incorrect.
+//
+#define RPC_E_INVALID_DATAPACKET _HRESULT_TYPEDEF_(0x80010009L)
+
+//
+// MessageId: RPC_E_CANTTRANSMIT_CALL
+//
+// MessageText:
+//
+// The call was not transmitted properly; the message queue
+// was full and was not emptied after yielding.
+//
+#define RPC_E_CANTTRANSMIT_CALL _HRESULT_TYPEDEF_(0x8001000AL)
+
+//
+// MessageId: RPC_E_CLIENT_CANTMARSHAL_DATA
+//
+// MessageText:
+//
+// The client (caller) cannot marshall the parameter data - low memory, etc.
+//
+#define RPC_E_CLIENT_CANTMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000BL)
+
+//
+// MessageId: RPC_E_CLIENT_CANTUNMARSHAL_DATA
+//
+// MessageText:
+//
+// The client (caller) cannot unmarshall the return data - low memory, etc.
+//
+#define RPC_E_CLIENT_CANTUNMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000CL)
+
+//
+// MessageId: RPC_E_SERVER_CANTMARSHAL_DATA
+//
+// MessageText:
+//
+// The server (callee) cannot marshall the return data - low memory, etc.
+//
+#define RPC_E_SERVER_CANTMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000DL)
+
+//
+// MessageId: RPC_E_SERVER_CANTUNMARSHAL_DATA
+//
+// MessageText:
+//
+// The server (callee) cannot unmarshall the parameter data - low memory, etc.
+//
+#define RPC_E_SERVER_CANTUNMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000EL)
+
+//
+// MessageId: RPC_E_INVALID_DATA
+//
+// MessageText:
+//
+// Received data is invalid; could be server or client data.
+//
+#define RPC_E_INVALID_DATA _HRESULT_TYPEDEF_(0x8001000FL)
+
+//
+// MessageId: RPC_E_INVALID_PARAMETER
+//
+// MessageText:
+//
+// A particular parameter is invalid and cannot be (un)marshalled.
+//
+#define RPC_E_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80010010L)
+
+//
+// MessageId: RPC_E_CANTCALLOUT_AGAIN
+//
+// MessageText:
+//
+// There is no second outgoing call on same channel in DDE conversation.
+//
+#define RPC_E_CANTCALLOUT_AGAIN _HRESULT_TYPEDEF_(0x80010011L)
+
+//
+// MessageId: RPC_E_SERVER_DIED_DNE
+//
+// MessageText:
+//
+// The callee (server [not server application]) is not available
+// and disappeared; all connections are invalid. The call did not execute.
+//
+#define RPC_E_SERVER_DIED_DNE _HRESULT_TYPEDEF_(0x80010012L)
+
+//
+// MessageId: RPC_E_SYS_CALL_FAILED
+//
+// MessageText:
+//
+// System call failed.
+//
+#define RPC_E_SYS_CALL_FAILED _HRESULT_TYPEDEF_(0x80010100L)
+
+//
+// MessageId: RPC_E_OUT_OF_RESOURCES
+//
+// MessageText:
+//
+// Could not allocate some required resource (memory, events, ...)
+//
+#define RPC_E_OUT_OF_RESOURCES _HRESULT_TYPEDEF_(0x80010101L)
+
+//
+// MessageId: RPC_E_ATTEMPTED_MULTITHREAD
+//
+// MessageText:
+//
+// Attempted to make calls on more than one thread in single threaded mode.
+//
+#define RPC_E_ATTEMPTED_MULTITHREAD _HRESULT_TYPEDEF_(0x80010102L)
+
+//
+// MessageId: RPC_E_NOT_REGISTERED
+//
+// MessageText:
+//
+// The requested interface is not registered on the server object.
+//
+#define RPC_E_NOT_REGISTERED _HRESULT_TYPEDEF_(0x80010103L)
+
+//
+// MessageId: RPC_E_FAULT
+//
+// MessageText:
+//
+// RPC could not call the server or could not return the results of calling the server.
+//
+#define RPC_E_FAULT _HRESULT_TYPEDEF_(0x80010104L)
+
+//
+// MessageId: RPC_E_SERVERFAULT
+//
+// MessageText:
+//
+// The server threw an exception.
+//
+#define RPC_E_SERVERFAULT _HRESULT_TYPEDEF_(0x80010105L)
+
+//
+// MessageId: RPC_E_CHANGED_MODE
+//
+// MessageText:
+//
+// Cannot change thread mode after it is set.
+//
+#define RPC_E_CHANGED_MODE _HRESULT_TYPEDEF_(0x80010106L)
+
+//
+// MessageId: RPC_E_INVALIDMETHOD
+//
+// MessageText:
+//
+// The method called does not exist on the server.
+//
+#define RPC_E_INVALIDMETHOD _HRESULT_TYPEDEF_(0x80010107L)
+
+//
+// MessageId: RPC_E_DISCONNECTED
+//
+// MessageText:
+//
+// The object invoked has disconnected from its clients.
+//
+#define RPC_E_DISCONNECTED _HRESULT_TYPEDEF_(0x80010108L)
+
+//
+// MessageId: RPC_E_RETRY
+//
+// MessageText:
+//
+// The object invoked chose not to process the call now. Try again later.
+//
+#define RPC_E_RETRY _HRESULT_TYPEDEF_(0x80010109L)
+
+//
+// MessageId: RPC_E_SERVERCALL_RETRYLATER
+//
+// MessageText:
+//
+// The message filter indicated that the application is busy.
+//
+#define RPC_E_SERVERCALL_RETRYLATER _HRESULT_TYPEDEF_(0x8001010AL)
+
+//
+// MessageId: RPC_E_SERVERCALL_REJECTED
+//
+// MessageText:
+//
+// The message filter rejected the call.
+//
+#define RPC_E_SERVERCALL_REJECTED _HRESULT_TYPEDEF_(0x8001010BL)
+
+//
+// MessageId: RPC_E_INVALID_CALLDATA
+//
+// MessageText:
+//
+// A call control interfaces was called with invalid data.
+//
+#define RPC_E_INVALID_CALLDATA _HRESULT_TYPEDEF_(0x8001010CL)
+
+//
+// MessageId: RPC_E_CANTCALLOUT_ININPUTSYNCCALL
+//
+// MessageText:
+//
+// An outgoing call cannot be made since the application is dispatching an input-synchronous call.
+//
+#define RPC_E_CANTCALLOUT_ININPUTSYNCCALL _HRESULT_TYPEDEF_(0x8001010DL)
+
+//
+// MessageId: RPC_E_WRONG_THREAD
+//
+// MessageText:
+//
+// The application called an interface that was marshalled for a different thread.
+//
+#define RPC_E_WRONG_THREAD _HRESULT_TYPEDEF_(0x8001010EL)
+
+//
+// MessageId: RPC_E_THREAD_NOT_INIT
+//
+// MessageText:
+//
+// CoInitialize has not been called on the current thread.
+//
+#define RPC_E_THREAD_NOT_INIT _HRESULT_TYPEDEF_(0x8001010FL)
+
+//
+// MessageId: RPC_E_VERSION_MISMATCH
+//
+// MessageText:
+//
+// The version of OLE on the client and server machines does not match.
+//
+#define RPC_E_VERSION_MISMATCH _HRESULT_TYPEDEF_(0x80010110L)
+
+//
+// MessageId: RPC_E_INVALID_HEADER
+//
+// MessageText:
+//
+// OLE received a packet with an invalid header.
+//
+#define RPC_E_INVALID_HEADER _HRESULT_TYPEDEF_(0x80010111L)
+
+//
+// MessageId: RPC_E_INVALID_EXTENSION
+//
+// MessageText:
+//
+// OLE received a packet with an invalid extension.
+//
+#define RPC_E_INVALID_EXTENSION _HRESULT_TYPEDEF_(0x80010112L)
+
+//
+// MessageId: RPC_E_INVALID_IPID
+//
+// MessageText:
+//
+// The requested object or interface does not exist.
+//
+#define RPC_E_INVALID_IPID _HRESULT_TYPEDEF_(0x80010113L)
+
+//
+// MessageId: RPC_E_INVALID_OBJECT
+//
+// MessageText:
+//
+// The requested object does not exist.
+//
+#define RPC_E_INVALID_OBJECT _HRESULT_TYPEDEF_(0x80010114L)
+
+//
+// MessageId: RPC_S_CALLPENDING
+//
+// MessageText:
+//
+// OLE has sent a request and is waiting for a reply.
+//
+#define RPC_S_CALLPENDING _HRESULT_TYPEDEF_(0x80010115L)
+
+//
+// MessageId: RPC_S_WAITONTIMER
+//
+// MessageText:
+//
+// OLE is waiting before retrying a request.
+//
+#define RPC_S_WAITONTIMER _HRESULT_TYPEDEF_(0x80010116L)
+
+//
+// MessageId: RPC_E_CALL_COMPLETE
+//
+// MessageText:
+//
+// Call context cannot be accessed after call completed.
+//
+#define RPC_E_CALL_COMPLETE _HRESULT_TYPEDEF_(0x80010117L)
+
+//
+// MessageId: RPC_E_UNSECURE_CALL
+//
+// MessageText:
+//
+// Impersonate on unsecure calls is not supported.
+//
+#define RPC_E_UNSECURE_CALL _HRESULT_TYPEDEF_(0x80010118L)
+
+//
+// MessageId: RPC_E_TOO_LATE
+//
+// MessageText:
+//
+// Security must be initialized before any interfaces are marshalled or
+// unmarshalled. It cannot be changed once initialized.
+//
+#define RPC_E_TOO_LATE _HRESULT_TYPEDEF_(0x80010119L)
+
+//
+// MessageId: RPC_E_NO_GOOD_SECURITY_PACKAGES
+//
+// MessageText:
+//
+// No security packages are installed on this machine or the user is not logged
+// on or there are no compatible security packages between the client and server.
+//
+#define RPC_E_NO_GOOD_SECURITY_PACKAGES _HRESULT_TYPEDEF_(0x8001011AL)
+
+//
+// MessageId: RPC_E_ACCESS_DENIED
+//
+// MessageText:
+//
+// Access is denied.
+//
+#define RPC_E_ACCESS_DENIED _HRESULT_TYPEDEF_(0x8001011BL)
+
+//
+// MessageId: RPC_E_REMOTE_DISABLED
+//
+// MessageText:
+//
+// Remote calls are not allowed for this process.
+//
+#define RPC_E_REMOTE_DISABLED _HRESULT_TYPEDEF_(0x8001011CL)
+
+//
+// MessageId: RPC_E_INVALID_OBJREF
+//
+// MessageText:
+//
+// The marshaled interface data packet (OBJREF) has an invalid or unknown format.
+//
+#define RPC_E_INVALID_OBJREF _HRESULT_TYPEDEF_(0x8001011DL)
+
+//
+// MessageId: RPC_E_UNEXPECTED
+//
+// MessageText:
+//
+// An internal error occurred.
+//
+#define RPC_E_UNEXPECTED _HRESULT_TYPEDEF_(0x8001FFFFL)
+
+
+ /////////////////
+ //
+ // FACILITY_SSPI
+ //
+ /////////////////
+
+//
+// MessageId: NTE_BAD_UID
+//
+// MessageText:
+//
+// Bad UID.
+//
+#define NTE_BAD_UID _HRESULT_TYPEDEF_(0x80090001L)
+
+//
+// MessageId: NTE_BAD_HASH
+//
+// MessageText:
+//
+// Bad Hash.
+//
+#define NTE_BAD_HASH _HRESULT_TYPEDEF_(0x80090002L)
+
+//
+// MessageId: NTE_BAD_KEY
+//
+// MessageText:
+//
+// Bad Key.
+//
+#define NTE_BAD_KEY _HRESULT_TYPEDEF_(0x80090003L)
+
+//
+// MessageId: NTE_BAD_LEN
+//
+// MessageText:
+//
+// Bad Length.
+//
+#define NTE_BAD_LEN _HRESULT_TYPEDEF_(0x80090004L)
+
+//
+// MessageId: NTE_BAD_DATA
+//
+// MessageText:
+//
+// Bad Data.
+//
+#define NTE_BAD_DATA _HRESULT_TYPEDEF_(0x80090005L)
+
+//
+// MessageId: NTE_BAD_SIGNATURE
+//
+// MessageText:
+//
+// Invalid Signature.
+//
+#define NTE_BAD_SIGNATURE _HRESULT_TYPEDEF_(0x80090006L)
+
+//
+// MessageId: NTE_BAD_VER
+//
+// MessageText:
+//
+// Bad Version of provider.
+//
+#define NTE_BAD_VER _HRESULT_TYPEDEF_(0x80090007L)
+
+//
+// MessageId: NTE_BAD_ALGID
+//
+// MessageText:
+//
+// Invalid algorithm specified.
+//
+#define NTE_BAD_ALGID _HRESULT_TYPEDEF_(0x80090008L)
+
+//
+// MessageId: NTE_BAD_FLAGS
+//
+// MessageText:
+//
+// Invalid flags specified.
+//
+#define NTE_BAD_FLAGS _HRESULT_TYPEDEF_(0x80090009L)
+
+//
+// MessageId: NTE_BAD_TYPE
+//
+// MessageText:
+//
+// Invalid type specified.
+//
+#define NTE_BAD_TYPE _HRESULT_TYPEDEF_(0x8009000AL)
+
+//
+// MessageId: NTE_BAD_KEY_STATE
+//
+// MessageText:
+//
+// Key not valid for use in specified state.
+//
+#define NTE_BAD_KEY_STATE _HRESULT_TYPEDEF_(0x8009000BL)
+
+//
+// MessageId: NTE_BAD_HASH_STATE
+//
+// MessageText:
+//
+// Hash not valid for use in specified state.
+//
+#define NTE_BAD_HASH_STATE _HRESULT_TYPEDEF_(0x8009000CL)
+
+//
+// MessageId: NTE_NO_KEY
+//
+// MessageText:
+//
+// Key does not exist.
+//
+#define NTE_NO_KEY _HRESULT_TYPEDEF_(0x8009000DL)
+
+//
+// MessageId: NTE_NO_MEMORY
+//
+// MessageText:
+//
+// Insufficient memory available for the operation.
+//
+#define NTE_NO_MEMORY _HRESULT_TYPEDEF_(0x8009000EL)
+
+//
+// MessageId: NTE_EXISTS
+//
+// MessageText:
+//
+// Object already exists.
+//
+#define NTE_EXISTS _HRESULT_TYPEDEF_(0x8009000FL)
+
+//
+// MessageId: NTE_PERM
+//
+// MessageText:
+//
+// Access denied.
+//
+#define NTE_PERM _HRESULT_TYPEDEF_(0x80090010L)
+
+//
+// MessageId: NTE_NOT_FOUND
+//
+// MessageText:
+//
+// Object was not found.
+//
+#define NTE_NOT_FOUND _HRESULT_TYPEDEF_(0x80090011L)
+
+//
+// MessageId: NTE_DOUBLE_ENCRYPT
+//
+// MessageText:
+//
+// Data already encrypted.
+//
+#define NTE_DOUBLE_ENCRYPT _HRESULT_TYPEDEF_(0x80090012L)
+
+//
+// MessageId: NTE_BAD_PROVIDER
+//
+// MessageText:
+//
+// Invalid provider specified.
+//
+#define NTE_BAD_PROVIDER _HRESULT_TYPEDEF_(0x80090013L)
+
+//
+// MessageId: NTE_BAD_PROV_TYPE
+//
+// MessageText:
+//
+// Invalid provider type specified.
+//
+#define NTE_BAD_PROV_TYPE _HRESULT_TYPEDEF_(0x80090014L)
+
+//
+// MessageId: NTE_BAD_PUBLIC_KEY
+//
+// MessageText:
+//
+// Provider's public key is invalid.
+//
+#define NTE_BAD_PUBLIC_KEY _HRESULT_TYPEDEF_(0x80090015L)
+
+//
+// MessageId: NTE_BAD_KEYSET
+//
+// MessageText:
+//
+// Keyset does not exist
+//
+#define NTE_BAD_KEYSET _HRESULT_TYPEDEF_(0x80090016L)
+
+//
+// MessageId: NTE_PROV_TYPE_NOT_DEF
+//
+// MessageText:
+//
+// Provider type not defined.
+//
+#define NTE_PROV_TYPE_NOT_DEF _HRESULT_TYPEDEF_(0x80090017L)
+
+//
+// MessageId: NTE_PROV_TYPE_ENTRY_BAD
+//
+// MessageText:
+//
+// Provider type as registered is invalid.
+//
+#define NTE_PROV_TYPE_ENTRY_BAD _HRESULT_TYPEDEF_(0x80090018L)
+
+//
+// MessageId: NTE_KEYSET_NOT_DEF
+//
+// MessageText:
+//
+// The keyset is not defined.
+//
+#define NTE_KEYSET_NOT_DEF _HRESULT_TYPEDEF_(0x80090019L)
+
+//
+// MessageId: NTE_KEYSET_ENTRY_BAD
+//
+// MessageText:
+//
+// Keyset as registered is invalid.
+//
+#define NTE_KEYSET_ENTRY_BAD _HRESULT_TYPEDEF_(0x8009001AL)
+
+//
+// MessageId: NTE_PROV_TYPE_NO_MATCH
+//
+// MessageText:
+//
+// Provider type does not match registered value.
+//
+#define NTE_PROV_TYPE_NO_MATCH _HRESULT_TYPEDEF_(0x8009001BL)
+
+//
+// MessageId: NTE_SIGNATURE_FILE_BAD
+//
+// MessageText:
+//
+// The digital signature file is corrupt.
+//
+#define NTE_SIGNATURE_FILE_BAD _HRESULT_TYPEDEF_(0x8009001CL)
+
+//
+// MessageId: NTE_PROVIDER_DLL_FAIL
+//
+// MessageText:
+//
+// Provider DLL failed to initialize correctly.
+//
+#define NTE_PROVIDER_DLL_FAIL _HRESULT_TYPEDEF_(0x8009001DL)
+
+//
+// MessageId: NTE_PROV_DLL_NOT_FOUND
+//
+// MessageText:
+//
+// Provider DLL could not be found.
+//
+#define NTE_PROV_DLL_NOT_FOUND _HRESULT_TYPEDEF_(0x8009001EL)
+
+//
+// MessageId: NTE_BAD_KEYSET_PARAM
+//
+// MessageText:
+//
+// The Keyset parameter is invalid.
+//
+#define NTE_BAD_KEYSET_PARAM _HRESULT_TYPEDEF_(0x8009001FL)
+
+//
+// MessageId: NTE_FAIL
+//
+// MessageText:
+//
+// An internal error occurred.
+//
+#define NTE_FAIL _HRESULT_TYPEDEF_(0x80090020L)
+
+//
+// MessageId: NTE_SYS_ERR
+//
+// MessageText:
+//
+// A base error occurred.
+//
+#define NTE_SYS_ERR _HRESULT_TYPEDEF_(0x80090021L)
+
+#define NTE_OP_OK 0
+
+//
+// Note that additional FACILITY_SSPI errors are in issperr.h
+//
+// ******************
+// FACILITY_CERT
+// ******************
+//
+// MessageId: TRUST_E_PROVIDER_UNKNOWN
+//
+// MessageText:
+//
+// The specified trust provider is not known on this system.
+//
+#define TRUST_E_PROVIDER_UNKNOWN _HRESULT_TYPEDEF_(0x800B0001L)
+
+//
+// MessageId: TRUST_E_ACTION_UNKNOWN
+//
+// MessageText:
+//
+// The trust verification action specified is not supported by the specified trust provider.
+//
+#define TRUST_E_ACTION_UNKNOWN _HRESULT_TYPEDEF_(0x800B0002L)
+
+//
+// MessageId: TRUST_E_SUBJECT_FORM_UNKNOWN
+//
+// MessageText:
+//
+// The form specified for the subject is not one supported or known by the specified trust provider.
+//
+#define TRUST_E_SUBJECT_FORM_UNKNOWN _HRESULT_TYPEDEF_(0x800B0003L)
+
+//
+// MessageId: TRUST_E_SUBJECT_NOT_TRUSTED
+//
+// MessageText:
+//
+// The subject is not trusted for the specified action.
+//
+#define TRUST_E_SUBJECT_NOT_TRUSTED _HRESULT_TYPEDEF_(0x800B0004L)
+
+//
+// MessageId: DIGSIG_E_ENCODE
+//
+// MessageText:
+//
+// Error due to problem in ASN.1 encoding process.
+//
+#define DIGSIG_E_ENCODE _HRESULT_TYPEDEF_(0x800B0005L)
+
+//
+// MessageId: DIGSIG_E_DECODE
+//
+// MessageText:
+//
+// Error due to problem in ASN.1 decoding process.
+//
+#define DIGSIG_E_DECODE _HRESULT_TYPEDEF_(0x800B0006L)
+
+//
+// MessageId: DIGSIG_E_EXTENSIBILITY
+//
+// MessageText:
+//
+// Reading / writing Extensions where Attributes are appropriate, and visa versa.
+//
+#define DIGSIG_E_EXTENSIBILITY _HRESULT_TYPEDEF_(0x800B0007L)
+
+//
+// MessageId: DIGSIG_E_CRYPTO
+//
+// MessageText:
+//
+// Unspecified cryptographic failure.
+//
+#define DIGSIG_E_CRYPTO _HRESULT_TYPEDEF_(0x800B0008L)
+
+//
+// MessageId: PERSIST_E_SIZEDEFINITE
+//
+// MessageText:
+//
+// The size of the data could not be determined.
+//
+#define PERSIST_E_SIZEDEFINITE _HRESULT_TYPEDEF_(0x800B0009L)
+
+//
+// MessageId: PERSIST_E_SIZEINDEFINITE
+//
+// MessageText:
+//
+// The size of the indefinite-sized data could not be determined.
+//
+#define PERSIST_E_SIZEINDEFINITE _HRESULT_TYPEDEF_(0x800B000AL)
+
+//
+// MessageId: PERSIST_E_NOTSELFSIZING
+//
+// MessageText:
+//
+// This object does not read and write self-sizing data.
+//
+#define PERSIST_E_NOTSELFSIZING _HRESULT_TYPEDEF_(0x800B000BL)
+
+//
+// MessageId: TRUST_E_NOSIGNATURE
+//
+// MessageText:
+//
+// No signature was present in the subject.
+//
+#define TRUST_E_NOSIGNATURE _HRESULT_TYPEDEF_(0x800B0100L)
+
+//
+// MessageId: CERT_E_EXPIRED
+//
+// MessageText:
+//
+// A required certificate is not within its validity period.
+//
+#define CERT_E_EXPIRED _HRESULT_TYPEDEF_(0x800B0101L)
+
+//
+// MessageId: CERT_E_VALIDIYPERIODNESTING
+//
+// MessageText:
+//
+// The validity periods of the certification chain do not nest correctly.
+//
+#define CERT_E_VALIDIYPERIODNESTING _HRESULT_TYPEDEF_(0x800B0102L)
+
+//
+// MessageId: CERT_E_ROLE
+//
+// MessageText:
+//
+// A certificate that can only be used as an end-entity is being used as a CA or visa versa.
+//
+#define CERT_E_ROLE _HRESULT_TYPEDEF_(0x800B0103L)
+
+//
+// MessageId: CERT_E_PATHLENCONST
+//
+// MessageText:
+//
+// A path length constraint in the certification chain has been violated.
+//
+#define CERT_E_PATHLENCONST _HRESULT_TYPEDEF_(0x800B0104L)
+
+//
+// MessageId: CERT_E_CRITICAL
+//
+// MessageText:
+//
+// An extension of unknown type that is labeled 'critical' is present in a certificate.
+//
+#define CERT_E_CRITICAL _HRESULT_TYPEDEF_(0x800B0105L)
+
+//
+// MessageId: CERT_E_PURPOSE
+//
+// MessageText:
+//
+// A certificate is being used for a purpose other than that for which it is permitted.
+//
+#define CERT_E_PURPOSE _HRESULT_TYPEDEF_(0x800B0106L)
+
+//
+// MessageId: CERT_E_ISSUERCHAINING
+//
+// MessageText:
+//
+// A parent of a given certificate in fact did not issue that child certificate.
+//
+#define CERT_E_ISSUERCHAINING _HRESULT_TYPEDEF_(0x800B0107L)
+
+//
+// MessageId: CERT_E_MALFORMED
+//
+// MessageText:
+//
+// A certificate is missing or has an empty value for an important field, such as a subject or issuer name.
+//
+#define CERT_E_MALFORMED _HRESULT_TYPEDEF_(0x800B0108L)
+
+//
+// MessageId: CERT_E_UNTRUSTEDROOT
+//
+// MessageText:
+//
+// A certification chain processed correctly, but terminated in a root certificate which isn't trusted by the trust provider.
+//
+#define CERT_E_UNTRUSTEDROOT _HRESULT_TYPEDEF_(0x800B0109L)
+
+//
+// MessageId: CERT_E_CHAINING
+//
+// MessageText:
+//
+// A chain of certs didn't chain as they should in a certain application of chaining.
+//
+#define CERT_E_CHAINING _HRESULT_TYPEDEF_(0x800B010AL)
+
+#endif // _WINERROR_
diff --git a/public/sdk/inc/wingdi.h b/public/sdk/inc/wingdi.h
new file mode 100644
index 000000000..59c0f8553
--- /dev/null
+++ b/public/sdk/inc/wingdi.h
@@ -0,0 +1,4005 @@
+/**************************************************************************
+* *
+* wingdi.h -- GDI procedure declarations, constant definitions and macros *
+* *
+* Copyright (c) 1985-1996, Microsoft Corp. All rights reserved. *
+* *
+**************************************************************************/
+
+#ifndef _WINGDI_
+#define _WINGDI_
+
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+
+#if !defined(_GDI32_)
+#define WINGDIAPI DECLSPEC_IMPORT
+#else
+#define WINGDIAPI
+#endif
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+
+#if !defined(_SPOOL32_)
+#define WINSPOOLAPI DECLSPEC_IMPORT
+#else
+#define WINSPOOLAPI
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINVER
+#define WINVER 0x0400 // version 4.0
+#endif /* WINVER */
+
+#ifndef NOGDI
+
+#ifndef NORASTEROPS
+
+/* Binary raster ops */
+#define R2_BLACK 1 /* 0 */
+#define R2_NOTMERGEPEN 2 /* DPon */
+#define R2_MASKNOTPEN 3 /* DPna */
+#define R2_NOTCOPYPEN 4 /* PN */
+#define R2_MASKPENNOT 5 /* PDna */
+#define R2_NOT 6 /* Dn */
+#define R2_XORPEN 7 /* DPx */
+#define R2_NOTMASKPEN 8 /* DPan */
+#define R2_MASKPEN 9 /* DPa */
+#define R2_NOTXORPEN 10 /* DPxn */
+#define R2_NOP 11 /* D */
+#define R2_MERGENOTPEN 12 /* DPno */
+#define R2_COPYPEN 13 /* P */
+#define R2_MERGEPENNOT 14 /* PDno */
+#define R2_MERGEPEN 15 /* DPo */
+#define R2_WHITE 16 /* 1 */
+#define R2_LAST 16
+
+/* Ternary raster operations */
+#define SRCCOPY (DWORD)0x00CC0020 /* dest = source */
+#define SRCPAINT (DWORD)0x00EE0086 /* dest = source OR dest */
+#define SRCAND (DWORD)0x008800C6 /* dest = source AND dest */
+#define SRCINVERT (DWORD)0x00660046 /* dest = source XOR dest */
+#define SRCERASE (DWORD)0x00440328 /* dest = source AND (NOT dest ) */
+#define NOTSRCCOPY (DWORD)0x00330008 /* dest = (NOT source) */
+#define NOTSRCERASE (DWORD)0x001100A6 /* dest = (NOT src) AND (NOT dest) */
+#define MERGECOPY (DWORD)0x00C000CA /* dest = (source AND pattern) */
+#define MERGEPAINT (DWORD)0x00BB0226 /* dest = (NOT source) OR dest */
+#define PATCOPY (DWORD)0x00F00021 /* dest = pattern */
+#define PATPAINT (DWORD)0x00FB0A09 /* dest = DPSnoo */
+#define PATINVERT (DWORD)0x005A0049 /* dest = pattern XOR dest */
+#define DSTINVERT (DWORD)0x00550009 /* dest = (NOT dest) */
+#define BLACKNESS (DWORD)0x00000042 /* dest = BLACK */
+#define WHITENESS (DWORD)0x00FF0062 /* dest = WHITE */
+
+/* Quaternary raster codes */
+#define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))
+
+#endif /* NORASTEROPS */
+
+#define GDI_ERROR (0xFFFFFFFFL)
+#define HGDI_ERROR ((HANDLE)(0xFFFFFFFFL))
+
+/* Region Flags */
+#define ERROR 0
+#define NULLREGION 1
+#define SIMPLEREGION 2
+#define COMPLEXREGION 3
+#define RGN_ERROR ERROR
+
+/* CombineRgn() Styles */
+#define RGN_AND 1
+#define RGN_OR 2
+#define RGN_XOR 3
+#define RGN_DIFF 4
+#define RGN_COPY 5
+#define RGN_MIN RGN_AND
+#define RGN_MAX RGN_COPY
+
+/* StretchBlt() Modes */
+#define BLACKONWHITE 1
+#define WHITEONBLACK 2
+#define COLORONCOLOR 3
+#define HALFTONE 4
+#define MAXSTRETCHBLTMODE 4
+
+#if(WINVER >= 0x0400)
+/* New StretchBlt() Modes */
+#define STRETCH_ANDSCANS BLACKONWHITE
+#define STRETCH_ORSCANS WHITEONBLACK
+#define STRETCH_DELETESCANS COLORONCOLOR
+#define STRETCH_HALFTONE HALFTONE
+#endif /* WINVER >= 0x0400 */
+
+/* PolyFill() Modes */
+#define ALTERNATE 1
+#define WINDING 2
+#define POLYFILL_LAST 2
+
+/* Text Alignment Options */
+#define TA_NOUPDATECP 0
+#define TA_UPDATECP 1
+
+#define TA_LEFT 0
+#define TA_RIGHT 2
+#define TA_CENTER 6
+
+#define TA_TOP 0
+#define TA_BOTTOM 8
+#define TA_BASELINE 24
+#if (WINVER >= 0x0400)
+#define TA_RTLREADING 256
+#define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING)
+#else
+#define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP)
+#endif
+
+#define VTA_BASELINE TA_BASELINE
+#define VTA_LEFT TA_BOTTOM
+#define VTA_RIGHT TA_TOP
+#define VTA_CENTER TA_CENTER
+#define VTA_BOTTOM TA_RIGHT
+#define VTA_TOP TA_LEFT
+
+#define ETO_OPAQUE 0x0002
+#define ETO_CLIPPED 0x0004
+#if(WINVER >= 0x0400)
+#define ETO_GLYPH_INDEX 0x0010
+#define ETO_RTLREADING 0x0080
+#define ETO_IGNORELANGUAGE 0x1000
+#endif /* WINVER >= 0x0400 */
+
+#define ASPECT_FILTERING 0x0001
+
+/* Bounds Accumulation APIs */
+
+#define DCB_RESET 0x0001
+#define DCB_ACCUMULATE 0x0002
+#define DCB_DIRTY DCB_ACCUMULATE
+#define DCB_SET (DCB_RESET | DCB_ACCUMULATE)
+#define DCB_ENABLE 0x0004
+#define DCB_DISABLE 0x0008
+
+#ifndef NOMETAFILE
+
+/* Metafile Functions */
+#define META_SETBKCOLOR 0x0201
+#define META_SETBKMODE 0x0102
+#define META_SETMAPMODE 0x0103
+#define META_SETROP2 0x0104
+#define META_SETRELABS 0x0105
+#define META_SETPOLYFILLMODE 0x0106
+#define META_SETSTRETCHBLTMODE 0x0107
+#define META_SETTEXTCHAREXTRA 0x0108
+#define META_SETTEXTCOLOR 0x0209
+#define META_SETTEXTJUSTIFICATION 0x020A
+#define META_SETWINDOWORG 0x020B
+#define META_SETWINDOWEXT 0x020C
+#define META_SETVIEWPORTORG 0x020D
+#define META_SETVIEWPORTEXT 0x020E
+#define META_OFFSETWINDOWORG 0x020F
+#define META_SCALEWINDOWEXT 0x0410
+#define META_OFFSETVIEWPORTORG 0x0211
+#define META_SCALEVIEWPORTEXT 0x0412
+#define META_LINETO 0x0213
+#define META_MOVETO 0x0214
+#define META_EXCLUDECLIPRECT 0x0415
+#define META_INTERSECTCLIPRECT 0x0416
+#define META_ARC 0x0817
+#define META_ELLIPSE 0x0418
+#define META_FLOODFILL 0x0419
+#define META_PIE 0x081A
+#define META_RECTANGLE 0x041B
+#define META_ROUNDRECT 0x061C
+#define META_PATBLT 0x061D
+#define META_SAVEDC 0x001E
+#define META_SETPIXEL 0x041F
+#define META_OFFSETCLIPRGN 0x0220
+#define META_TEXTOUT 0x0521
+#define META_BITBLT 0x0922
+#define META_STRETCHBLT 0x0B23
+#define META_POLYGON 0x0324
+#define META_POLYLINE 0x0325
+#define META_ESCAPE 0x0626
+#define META_RESTOREDC 0x0127
+#define META_FILLREGION 0x0228
+#define META_FRAMEREGION 0x0429
+#define META_INVERTREGION 0x012A
+#define META_PAINTREGION 0x012B
+#define META_SELECTCLIPREGION 0x012C
+#define META_SELECTOBJECT 0x012D
+#define META_SETTEXTALIGN 0x012E
+#define META_CHORD 0x0830
+#define META_SETMAPPERFLAGS 0x0231
+#define META_EXTTEXTOUT 0x0a32
+#define META_SETDIBTODEV 0x0d33
+#define META_SELECTPALETTE 0x0234
+#define META_REALIZEPALETTE 0x0035
+#define META_ANIMATEPALETTE 0x0436
+#define META_SETPALENTRIES 0x0037
+#define META_POLYPOLYGON 0x0538
+#define META_RESIZEPALETTE 0x0139
+#define META_DIBBITBLT 0x0940
+#define META_DIBSTRETCHBLT 0x0b41
+#define META_DIBCREATEPATTERNBRUSH 0x0142
+#define META_STRETCHDIB 0x0f43
+#define META_EXTFLOODFILL 0x0548
+#define META_DELETEOBJECT 0x01f0
+#define META_CREATEPALETTE 0x00f7
+#define META_CREATEPATTERNBRUSH 0x01F9
+#define META_CREATEPENINDIRECT 0x02FA
+#define META_CREATEFONTINDIRECT 0x02FB
+#define META_CREATEBRUSHINDIRECT 0x02FC
+#define META_CREATEREGION 0x06FF
+
+#endif /* NOMETAFILE */
+
+/* GDI Escapes */
+#define NEWFRAME 1
+#define ABORTDOC 2
+#define NEXTBAND 3
+#define SETCOLORTABLE 4
+#define GETCOLORTABLE 5
+#define FLUSHOUTPUT 6
+#define DRAFTMODE 7
+#define QUERYESCSUPPORT 8
+#define SETABORTPROC 9
+#define STARTDOC 10
+#define ENDDOC 11
+#define GETPHYSPAGESIZE 12
+#define GETPRINTINGOFFSET 13
+#define GETSCALINGFACTOR 14
+#define MFCOMMENT 15
+#define GETPENWIDTH 16
+#define SETCOPYCOUNT 17
+#define SELECTPAPERSOURCE 18
+#define DEVICEDATA 19
+#define PASSTHROUGH 19
+#define GETTECHNOLGY 20
+#define GETTECHNOLOGY 20
+#define SETLINECAP 21
+#define SETLINEJOIN 22
+#define SETMITERLIMIT 23
+#define BANDINFO 24
+#define DRAWPATTERNRECT 25
+#define GETVECTORPENSIZE 26
+#define GETVECTORBRUSHSIZE 27
+#define ENABLEDUPLEX 28
+#define GETSETPAPERBINS 29
+#define GETSETPRINTORIENT 30
+#define ENUMPAPERBINS 31
+#define SETDIBSCALING 32
+#define EPSPRINTING 33
+#define ENUMPAPERMETRICS 34
+#define GETSETPAPERMETRICS 35
+#define POSTSCRIPT_DATA 37
+#define POSTSCRIPT_IGNORE 38
+#define MOUSETRAILS 39
+#define GETDEVICEUNITS 42
+
+#define GETEXTENDEDTEXTMETRICS 256
+#define GETEXTENTTABLE 257
+#define GETPAIRKERNTABLE 258
+#define GETTRACKKERNTABLE 259
+#define EXTTEXTOUT 512
+#define GETFACENAME 513
+#define DOWNLOADFACE 514
+#define ENABLERELATIVEWIDTHS 768
+#define ENABLEPAIRKERNING 769
+#define SETKERNTRACK 770
+#define SETALLJUSTVALUES 771
+#define SETCHARSET 772
+
+#define STRETCHBLT 2048
+#define GETSETSCREENPARAMS 3072
+#define QUERYDIBSUPPORT 3073
+#define BEGIN_PATH 4096
+#define CLIP_TO_PATH 4097
+#define END_PATH 4098
+#define EXT_DEVICE_CAPS 4099
+#define RESTORE_CTM 4100
+#define SAVE_CTM 4101
+#define SET_ARC_DIRECTION 4102
+#define SET_BACKGROUND_COLOR 4103
+#define SET_POLY_MODE 4104
+#define SET_SCREEN_ANGLE 4105
+#define SET_SPREAD 4106
+#define TRANSFORM_CTM 4107
+#define SET_CLIP_BOX 4108
+#define SET_BOUNDS 4109
+#define SET_MIRROR_MODE 4110
+#define OPENCHANNEL 4110
+#define DOWNLOADHEADER 4111
+#define CLOSECHANNEL 4112
+#define POSTSCRIPT_PASSTHROUGH 4115
+#define ENCAPSULATED_POSTSCRIPT 4116
+
+/* Flag returned from QUERYDIBSUPPORT */
+#define QDI_SETDIBITS 1
+#define QDI_GETDIBITS 2
+#define QDI_DIBTOSCREEN 4
+#define QDI_STRETCHDIB 8
+
+/* Spooler Error Codes */
+#define SP_NOTREPORTED 0x4000
+#define SP_ERROR (-1)
+#define SP_APPABORT (-2)
+#define SP_USERABORT (-3)
+#define SP_OUTOFDISK (-4)
+#define SP_OUTOFMEMORY (-5)
+
+#define PR_JOBSTATUS 0x0000
+
+/* Object Definitions for EnumObjects() */
+#define OBJ_PEN 1
+#define OBJ_BRUSH 2
+#define OBJ_DC 3
+#define OBJ_METADC 4
+#define OBJ_PAL 5
+#define OBJ_FONT 6
+#define OBJ_BITMAP 7
+#define OBJ_REGION 8
+#define OBJ_METAFILE 9
+#define OBJ_MEMDC 10
+#define OBJ_EXTPEN 11
+#define OBJ_ENHMETADC 12
+#define OBJ_ENHMETAFILE 13
+
+/* xform stuff */
+#define MWT_IDENTITY 1
+#define MWT_LEFTMULTIPLY 2
+#define MWT_RIGHTMULTIPLY 3
+
+#define MWT_MIN MWT_IDENTITY
+#define MWT_MAX MWT_RIGHTMULTIPLY
+
+#define _XFORM_
+typedef struct tagXFORM
+ {
+ FLOAT eM11;
+ FLOAT eM12;
+ FLOAT eM21;
+ FLOAT eM22;
+ FLOAT eDx;
+ FLOAT eDy;
+ } XFORM, *PXFORM, FAR *LPXFORM;
+
+/* Bitmap Header Definition */
+typedef struct tagBITMAP
+ {
+ LONG bmType;
+ LONG bmWidth;
+ LONG bmHeight;
+ LONG bmWidthBytes;
+ WORD bmPlanes;
+ WORD bmBitsPixel;
+ LPVOID bmBits;
+ } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
+
+#include <pshpack1.h>
+typedef struct tagRGBTRIPLE {
+ BYTE rgbtBlue;
+ BYTE rgbtGreen;
+ BYTE rgbtRed;
+} RGBTRIPLE;
+#include <poppack.h>
+
+typedef struct tagRGBQUAD {
+ BYTE rgbBlue;
+ BYTE rgbGreen;
+ BYTE rgbRed;
+ BYTE rgbReserved;
+} RGBQUAD;
+typedef RGBQUAD FAR* LPRGBQUAD;
+
+#if(WINVER >= 0x0400)
+
+/* Image Color Matching color definitions */
+
+typedef LONG LCSCSTYPE;
+#define LCS_CALIBRATED_RGB 0x00000000L
+#define LCS_DEVICE_RGB 0x00000001L
+#define LCS_DEVICE_CMYK 0x00000002L
+
+typedef LONG LCSGAMUTMATCH;
+#define LCS_GM_BUSINESS 0x00000001L
+#define LCS_GM_GRAPHICS 0x00000002L
+#define LCS_GM_IMAGES 0x00000004L
+
+/* ICM Defines for results from CheckColorInGamut() */
+#define CM_OUT_OF_GAMUT 255
+#define CM_IN_GAMUT 0
+
+/* Macros to retrieve CMYK values from a COLORREF */
+#define GetKValue(cmyk) ((BYTE)(cmyk))
+#define GetYValue(cmyk) ((BYTE)((cmyk)>> 8))
+#define GetMValue(cmyk) ((BYTE)((cmyk)>>16))
+#define GetCValue(cmyk) ((BYTE)((cmyk)>>24))
+
+#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24)))
+
+typedef long FXPT16DOT16, FAR *LPFXPT16DOT16;
+typedef long FXPT2DOT30, FAR *LPFXPT2DOT30;
+
+/* ICM Color Definitions */
+// The following two structures are used for defining RGB's in terms of
+// CIEXYZ. The values are fixed point 16.16.
+
+typedef struct tagCIEXYZ
+{
+ FXPT2DOT30 ciexyzX;
+ FXPT2DOT30 ciexyzY;
+ FXPT2DOT30 ciexyzZ;
+} CIEXYZ;
+typedef CIEXYZ FAR *LPCIEXYZ;
+
+typedef struct tagICEXYZTRIPLE
+{
+ CIEXYZ ciexyzRed;
+ CIEXYZ ciexyzGreen;
+ CIEXYZ ciexyzBlue;
+} CIEXYZTRIPLE;
+typedef CIEXYZTRIPLE FAR *LPCIEXYZTRIPLE;
+
+// The next structures the logical color space. Unlike pens and brushes,
+// but like palettes, there is only one way to create a LogColorSpace.
+// A pointer to it must be passed, its elements can't be pushed as
+// arguments.
+
+typedef struct tagLOGCOLORSPACEA {
+ DWORD lcsSignature;
+ DWORD lcsVersion;
+ DWORD lcsSize;
+ LCSCSTYPE lcsCSType;
+ LCSGAMUTMATCH lcsIntent;
+ CIEXYZTRIPLE lcsEndpoints;
+ DWORD lcsGammaRed;
+ DWORD lcsGammaGreen;
+ DWORD lcsGammaBlue;
+ CHAR lcsFilename[MAX_PATH];
+} LOGCOLORSPACEA, *LPLOGCOLORSPACEA;
+typedef struct tagLOGCOLORSPACEW {
+ DWORD lcsSignature;
+ DWORD lcsVersion;
+ DWORD lcsSize;
+ LCSCSTYPE lcsCSType;
+ LCSGAMUTMATCH lcsIntent;
+ CIEXYZTRIPLE lcsEndpoints;
+ DWORD lcsGammaRed;
+ DWORD lcsGammaGreen;
+ DWORD lcsGammaBlue;
+ WCHAR lcsFilename[MAX_PATH];
+} LOGCOLORSPACEW, *LPLOGCOLORSPACEW;
+#ifdef UNICODE
+typedef LOGCOLORSPACEW LOGCOLORSPACE;
+typedef LPLOGCOLORSPACEW LPLOGCOLORSPACE;
+#else
+typedef LOGCOLORSPACEA LOGCOLORSPACE;
+typedef LPLOGCOLORSPACEA LPLOGCOLORSPACE;
+#endif // UNICODE
+
+#endif /* WINVER >= 0x0400 */
+
+
+/* structures for defining DIBs */
+typedef struct tagBITMAPCOREHEADER {
+ DWORD bcSize; /* used to get to color table */
+ WORD bcWidth;
+ WORD bcHeight;
+ WORD bcPlanes;
+ WORD bcBitCount;
+} BITMAPCOREHEADER, FAR *LPBITMAPCOREHEADER, *PBITMAPCOREHEADER;
+
+
+typedef struct tagBITMAPINFOHEADER{
+ DWORD biSize;
+ LONG biWidth;
+ LONG biHeight;
+ WORD biPlanes;
+ WORD biBitCount;
+ DWORD biCompression;
+ DWORD biSizeImage;
+ LONG biXPelsPerMeter;
+ LONG biYPelsPerMeter;
+ DWORD biClrUsed;
+ DWORD biClrImportant;
+} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
+
+
+#if(WINVER >= 0x0400)
+typedef struct {
+ DWORD bV4Size;
+ LONG bV4Width;
+ LONG bV4Height;
+ WORD bV4Planes;
+ WORD bV4BitCount;
+ DWORD bV4V4Compression;
+ DWORD bV4SizeImage;
+ LONG bV4XPelsPerMeter;
+ LONG bV4YPelsPerMeter;
+ DWORD bV4ClrUsed;
+ DWORD bV4ClrImportant;
+ DWORD bV4RedMask;
+ DWORD bV4GreenMask;
+ DWORD bV4BlueMask;
+ DWORD bV4AlphaMask;
+ DWORD bV4CSType;
+ CIEXYZTRIPLE bV4Endpoints;
+ DWORD bV4GammaRed;
+ DWORD bV4GammaGreen;
+ DWORD bV4GammaBlue;
+} BITMAPV4HEADER, FAR *LPBITMAPV4HEADER, *PBITMAPV4HEADER;
+#endif /* WINVER >= 0x0400 */
+
+/* constants for the biCompression field */
+#define BI_RGB 0L
+#define BI_RLE8 1L
+#define BI_RLE4 2L
+#define BI_BITFIELDS 3L
+
+typedef struct tagBITMAPINFO {
+ BITMAPINFOHEADER bmiHeader;
+ RGBQUAD bmiColors[1];
+} BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
+
+typedef struct tagBITMAPCOREINFO {
+ BITMAPCOREHEADER bmciHeader;
+ RGBTRIPLE bmciColors[1];
+} BITMAPCOREINFO, FAR *LPBITMAPCOREINFO, *PBITMAPCOREINFO;
+
+#include <pshpack2.h>
+typedef struct tagBITMAPFILEHEADER {
+ WORD bfType;
+ DWORD bfSize;
+ WORD bfReserved1;
+ WORD bfReserved2;
+ DWORD bfOffBits;
+} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
+#include <poppack.h>
+
+#define MAKEPOINTS(l) (*((POINTS FAR *)&(l)))
+
+#if(WINVER >= 0x0400)
+#ifndef NOFONTSIG
+typedef struct tagFONTSIGNATURE
+{
+ DWORD fsUsb[4];
+ DWORD fsCsb[2];
+} FONTSIGNATURE, *PFONTSIGNATURE,FAR *LPFONTSIGNATURE;
+
+typedef struct tagCHARSETINFO
+{
+ UINT ciCharset;
+ UINT ciACP;
+ FONTSIGNATURE fs;
+} CHARSETINFO, *PCHARSETINFO, NEAR *NPCHARSETINFO, FAR *LPCHARSETINFO;
+
+#define TCI_SRCCHARSET 1
+#define TCI_SRCCODEPAGE 2
+#define TCI_SRCFONTSIG 3
+
+typedef struct tagLOCALESIGNATURE
+{
+ DWORD lsUsb[4];
+ DWORD lsCsbDefault[2];
+ DWORD lsCsbSupported[2];
+} LOCALESIGNATURE, *PLOCALESIGNATURE,FAR *LPLOCALESIGNATURE;
+
+#endif
+#endif /* WINVER >= 0x0400 */
+#ifndef NOMETAFILE
+
+/* Clipboard Metafile Picture Structure */
+typedef struct tagHANDLETABLE
+ {
+ HGDIOBJ objectHandle[1];
+ } HANDLETABLE, *PHANDLETABLE, FAR *LPHANDLETABLE;
+
+typedef struct tagMETARECORD
+ {
+ DWORD rdSize;
+ WORD rdFunction;
+ WORD rdParm[1];
+ } METARECORD;
+typedef struct tagMETARECORD UNALIGNED *PMETARECORD;
+typedef struct tagMETARECORD UNALIGNED FAR *LPMETARECORD;
+
+typedef struct tagMETAFILEPICT
+ {
+ LONG mm;
+ LONG xExt;
+ LONG yExt;
+ HMETAFILE hMF;
+ } METAFILEPICT, FAR *LPMETAFILEPICT;
+
+#include <pshpack2.h>
+typedef struct tagMETAHEADER
+{
+ WORD mtType;
+ WORD mtHeaderSize;
+ WORD mtVersion;
+ DWORD mtSize;
+ WORD mtNoObjects;
+ DWORD mtMaxRecord;
+ WORD mtNoParameters;
+} METAHEADER;
+typedef struct tagMETAHEADER UNALIGNED *PMETAHEADER;
+typedef struct tagMETAHEADER UNALIGNED FAR *LPMETAHEADER;
+
+#include <poppack.h>
+
+/* Enhanced Metafile structures */
+typedef struct tagENHMETARECORD
+{
+ DWORD iType; // Record type EMR_XXX
+ DWORD nSize; // Record size in bytes
+ DWORD dParm[1]; // Parameters
+} ENHMETARECORD, *PENHMETARECORD, *LPENHMETARECORD;
+
+typedef struct tagENHMETAHEADER
+{
+ DWORD iType; // Record type EMR_HEADER
+ DWORD nSize; // Record size in bytes. This may be greater
+ // than the sizeof(ENHMETAHEADER).
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ RECTL rclFrame; // Inclusive-inclusive Picture Frame of metafile in .01 mm units
+ DWORD dSignature; // Signature. Must be ENHMETA_SIGNATURE.
+ DWORD nVersion; // Version number
+ DWORD nBytes; // Size of the metafile in bytes
+ DWORD nRecords; // Number of records in the metafile
+ WORD nHandles; // Number of handles in the handle table
+ // Handle index zero is reserved.
+ WORD sReserved; // Reserved. Must be zero.
+ DWORD nDescription; // Number of chars in the unicode description string
+ // This is 0 if there is no description string
+ DWORD offDescription; // Offset to the metafile description record.
+ // This is 0 if there is no description string
+ DWORD nPalEntries; // Number of entries in the metafile palette.
+ SIZEL szlDevice; // Size of the reference device in pels
+ SIZEL szlMillimeters; // Size of the reference device in millimeters
+ DWORD cbPixelFormat; // Size of PIXELFORMATDESCRIPTOR information
+ // This is 0 if no pixel format is set
+ DWORD offPixelFormat; // Offset to PIXELFORMATDESCRIPTOR
+ // This is 0 if no pixel format is set
+ DWORD bOpenGL; // TRUE if OpenGL commands are present in
+ // the metafile, otherwise FALSE
+} ENHMETAHEADER, *PENHMETAHEADER, *LPENHMETAHEADER;
+
+#endif /* NOMETAFILE */
+
+#ifndef NOTEXTMETRIC
+
+/* tmPitchAndFamily flags */
+#define TMPF_FIXED_PITCH 0x01
+#define TMPF_VECTOR 0x02
+#define TMPF_DEVICE 0x08
+#define TMPF_TRUETYPE 0x04
+
+//
+// BCHAR definition for APPs
+//
+#ifdef UNICODE
+ typedef WCHAR BCHAR;
+#else
+ typedef BYTE BCHAR;
+#endif
+
+
+typedef struct tagTEXTMETRICA
+{
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ BYTE tmFirstChar;
+ BYTE tmLastChar;
+ BYTE tmDefaultChar;
+ BYTE tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+} TEXTMETRICA, *PTEXTMETRICA, NEAR *NPTEXTMETRICA, FAR *LPTEXTMETRICA;
+typedef struct tagTEXTMETRICW
+{
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ WCHAR tmFirstChar;
+ WCHAR tmLastChar;
+ WCHAR tmDefaultChar;
+ WCHAR tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+} TEXTMETRICW, *PTEXTMETRICW, NEAR *NPTEXTMETRICW, FAR *LPTEXTMETRICW;
+#ifdef UNICODE
+typedef TEXTMETRICW TEXTMETRIC;
+typedef PTEXTMETRICW PTEXTMETRIC;
+typedef NPTEXTMETRICW NPTEXTMETRIC;
+typedef LPTEXTMETRICW LPTEXTMETRIC;
+#else
+typedef TEXTMETRICA TEXTMETRIC;
+typedef PTEXTMETRICA PTEXTMETRIC;
+typedef NPTEXTMETRICA NPTEXTMETRIC;
+typedef LPTEXTMETRICA LPTEXTMETRIC;
+#endif // UNICODE
+
+/* ntmFlags field flags */
+#define NTM_REGULAR 0x00000040L
+#define NTM_BOLD 0x00000020L
+#define NTM_ITALIC 0x00000001L
+
+#include <pshpack4.h>
+typedef struct tagNEWTEXTMETRICA
+{
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ BYTE tmFirstChar;
+ BYTE tmLastChar;
+ BYTE tmDefaultChar;
+ BYTE tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+ DWORD ntmFlags;
+ UINT ntmSizeEM;
+ UINT ntmCellHeight;
+ UINT ntmAvgWidth;
+} NEWTEXTMETRICA, *PNEWTEXTMETRICA, NEAR *NPNEWTEXTMETRICA, FAR *LPNEWTEXTMETRICA;
+typedef struct tagNEWTEXTMETRICW
+{
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ WCHAR tmFirstChar;
+ WCHAR tmLastChar;
+ WCHAR tmDefaultChar;
+ WCHAR tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+ DWORD ntmFlags;
+ UINT ntmSizeEM;
+ UINT ntmCellHeight;
+ UINT ntmAvgWidth;
+} NEWTEXTMETRICW, *PNEWTEXTMETRICW, NEAR *NPNEWTEXTMETRICW, FAR *LPNEWTEXTMETRICW;
+#ifdef UNICODE
+typedef NEWTEXTMETRICW NEWTEXTMETRIC;
+typedef PNEWTEXTMETRICW PNEWTEXTMETRIC;
+typedef NPNEWTEXTMETRICW NPNEWTEXTMETRIC;
+typedef LPNEWTEXTMETRICW LPNEWTEXTMETRIC;
+#else
+typedef NEWTEXTMETRICA NEWTEXTMETRIC;
+typedef PNEWTEXTMETRICA PNEWTEXTMETRIC;
+typedef NPNEWTEXTMETRICA NPNEWTEXTMETRIC;
+typedef LPNEWTEXTMETRICA LPNEWTEXTMETRIC;
+#endif // UNICODE
+#include <poppack.h>
+
+#if(WINVER >= 0x0400)
+typedef struct tagNEWTEXTMETRICEXA
+{
+ NEWTEXTMETRICA ntmTm;
+ FONTSIGNATURE ntmFontSig;
+}NEWTEXTMETRICEXA;
+typedef struct tagNEWTEXTMETRICEXW
+{
+ NEWTEXTMETRICW ntmTm;
+ FONTSIGNATURE ntmFontSig;
+}NEWTEXTMETRICEXW;
+#ifdef UNICODE
+typedef NEWTEXTMETRICEXW NEWTEXTMETRICEX;
+#else
+typedef NEWTEXTMETRICEXA NEWTEXTMETRICEX;
+#endif // UNICODE
+#endif /* WINVER >= 0x0400 */
+
+#endif /* NOTEXTMETRIC */
+/* GDI Logical Objects: */
+
+/* Pel Array */
+typedef struct tagPELARRAY
+ {
+ LONG paXCount;
+ LONG paYCount;
+ LONG paXExt;
+ LONG paYExt;
+ BYTE paRGBs;
+ } PELARRAY, *PPELARRAY, NEAR *NPPELARRAY, FAR *LPPELARRAY;
+
+/* Logical Brush (or Pattern) */
+typedef struct tagLOGBRUSH
+ {
+ UINT lbStyle;
+ COLORREF lbColor;
+ LONG lbHatch;
+ } LOGBRUSH, *PLOGBRUSH, NEAR *NPLOGBRUSH, FAR *LPLOGBRUSH;
+
+typedef LOGBRUSH PATTERN;
+typedef PATTERN *PPATTERN;
+typedef PATTERN NEAR *NPPATTERN;
+typedef PATTERN FAR *LPPATTERN;
+
+/* Logical Pen */
+typedef struct tagLOGPEN
+ {
+ UINT lopnStyle;
+ POINT lopnWidth;
+ COLORREF lopnColor;
+ } LOGPEN, *PLOGPEN, NEAR *NPLOGPEN, FAR *LPLOGPEN;
+
+typedef struct tagEXTLOGPEN {
+ DWORD elpPenStyle;
+ DWORD elpWidth;
+ UINT elpBrushStyle;
+ COLORREF elpColor;
+ LONG elpHatch;
+ DWORD elpNumEntries;
+ DWORD elpStyleEntry[1];
+} EXTLOGPEN, *PEXTLOGPEN, NEAR *NPEXTLOGPEN, FAR *LPEXTLOGPEN;
+
+typedef struct tagPALETTEENTRY {
+ BYTE peRed;
+ BYTE peGreen;
+ BYTE peBlue;
+ BYTE peFlags;
+} PALETTEENTRY, *PPALETTEENTRY, FAR *LPPALETTEENTRY;
+
+/* Logical Palette */
+typedef struct tagLOGPALETTE {
+ WORD palVersion;
+ WORD palNumEntries;
+ PALETTEENTRY palPalEntry[1];
+} LOGPALETTE, *PLOGPALETTE, NEAR *NPLOGPALETTE, FAR *LPLOGPALETTE;
+
+
+/* Logical Font */
+#define LF_FACESIZE 32
+
+typedef struct tagLOGFONTA
+{
+ LONG lfHeight;
+ LONG lfWidth;
+ LONG lfEscapement;
+ LONG lfOrientation;
+ LONG lfWeight;
+ BYTE lfItalic;
+ BYTE lfUnderline;
+ BYTE lfStrikeOut;
+ BYTE lfCharSet;
+ BYTE lfOutPrecision;
+ BYTE lfClipPrecision;
+ BYTE lfQuality;
+ BYTE lfPitchAndFamily;
+ CHAR lfFaceName[LF_FACESIZE];
+} LOGFONTA, *PLOGFONTA, NEAR *NPLOGFONTA, FAR *LPLOGFONTA;
+typedef struct tagLOGFONTW
+{
+ LONG lfHeight;
+ LONG lfWidth;
+ LONG lfEscapement;
+ LONG lfOrientation;
+ LONG lfWeight;
+ BYTE lfItalic;
+ BYTE lfUnderline;
+ BYTE lfStrikeOut;
+ BYTE lfCharSet;
+ BYTE lfOutPrecision;
+ BYTE lfClipPrecision;
+ BYTE lfQuality;
+ BYTE lfPitchAndFamily;
+ WCHAR lfFaceName[LF_FACESIZE];
+} LOGFONTW, *PLOGFONTW, NEAR *NPLOGFONTW, FAR *LPLOGFONTW;
+#ifdef UNICODE
+typedef LOGFONTW LOGFONT;
+typedef PLOGFONTW PLOGFONT;
+typedef NPLOGFONTW NPLOGFONT;
+typedef LPLOGFONTW LPLOGFONT;
+#else
+typedef LOGFONTA LOGFONT;
+typedef PLOGFONTA PLOGFONT;
+typedef NPLOGFONTA NPLOGFONT;
+typedef LPLOGFONTA LPLOGFONT;
+#endif // UNICODE
+
+#define LF_FULLFACESIZE 64
+
+/* Structure passed to FONTENUMPROC */
+typedef struct tagENUMLOGFONTA
+{
+ LOGFONTA elfLogFont;
+ BYTE elfFullName[LF_FULLFACESIZE];
+ BYTE elfStyle[LF_FACESIZE];
+} ENUMLOGFONTA, FAR* LPENUMLOGFONTA;
+/* Structure passed to FONTENUMPROC */
+typedef struct tagENUMLOGFONTW
+{
+ LOGFONTW elfLogFont;
+ WCHAR elfFullName[LF_FULLFACESIZE];
+ WCHAR elfStyle[LF_FACESIZE];
+} ENUMLOGFONTW, FAR* LPENUMLOGFONTW;
+#ifdef UNICODE
+typedef ENUMLOGFONTW ENUMLOGFONT;
+typedef LPENUMLOGFONTW LPENUMLOGFONT;
+#else
+typedef ENUMLOGFONTA ENUMLOGFONT;
+typedef LPENUMLOGFONTA LPENUMLOGFONT;
+#endif // UNICODE
+
+#if(WINVER >= 0x0400)
+typedef struct tagENUMLOGFONTEXA
+{
+ LOGFONTA elfLogFont;
+ BYTE elfFullName[LF_FULLFACESIZE];
+ BYTE elfStyle[LF_FACESIZE];
+ BYTE elfScript[LF_FACESIZE];
+} ENUMLOGFONTEXA, FAR *LPENUMLOGFONTEXA;
+typedef struct tagENUMLOGFONTEXW
+{
+ LOGFONTW elfLogFont;
+ WCHAR elfFullName[LF_FULLFACESIZE];
+ WCHAR elfStyle[LF_FACESIZE];
+ WCHAR elfScript[LF_FACESIZE];
+} ENUMLOGFONTEXW, FAR *LPENUMLOGFONTEXW;
+#ifdef UNICODE
+typedef ENUMLOGFONTEXW ENUMLOGFONTEX;
+typedef LPENUMLOGFONTEXW LPENUMLOGFONTEX;
+#else
+typedef ENUMLOGFONTEXA ENUMLOGFONTEX;
+typedef LPENUMLOGFONTEXA LPENUMLOGFONTEX;
+#endif // UNICODE
+#endif /* WINVER >= 0x0400 */
+
+#define OUT_DEFAULT_PRECIS 0
+#define OUT_STRING_PRECIS 1
+#define OUT_CHARACTER_PRECIS 2
+#define OUT_STROKE_PRECIS 3
+#define OUT_TT_PRECIS 4
+#define OUT_DEVICE_PRECIS 5
+#define OUT_RASTER_PRECIS 6
+#define OUT_TT_ONLY_PRECIS 7
+#define OUT_OUTLINE_PRECIS 8
+#define OUT_SCREEN_OUTLINE_PRECIS 9
+
+#define CLIP_DEFAULT_PRECIS 0
+#define CLIP_CHARACTER_PRECIS 1
+#define CLIP_STROKE_PRECIS 2
+#define CLIP_MASK 0xf
+#define CLIP_LH_ANGLES (1<<4)
+#define CLIP_TT_ALWAYS (2<<4)
+#define CLIP_EMBEDDED (8<<4)
+
+#define DEFAULT_QUALITY 0
+#define DRAFT_QUALITY 1
+#define PROOF_QUALITY 2
+#if(WINVER >= 0x0400)
+#define NONANTIALIASED_QUALITY 3
+#define ANTIALIASED_QUALITY 4
+#endif /* WINVER >= 0x0400 */
+
+#define DEFAULT_PITCH 0
+#define FIXED_PITCH 1
+#define VARIABLE_PITCH 2
+#if(WINVER >= 0x0400)
+#define MONO_FONT 8
+#endif /* WINVER >= 0x0400 */
+
+#define ANSI_CHARSET 0
+#define DEFAULT_CHARSET 1
+#define SYMBOL_CHARSET 2
+#define SHIFTJIS_CHARSET 128
+#define HANGEUL_CHARSET 129
+#define GB2312_CHARSET 134
+#define CHINESEBIG5_CHARSET 136
+#define OEM_CHARSET 255
+#if(WINVER >= 0x0400)
+#define JOHAB_CHARSET 130
+#define HEBREW_CHARSET 177
+#define ARABIC_CHARSET 178
+#define GREEK_CHARSET 161
+#define TURKISH_CHARSET 162
+#define VIETNAMESE_CHARSET 163
+#define THAI_CHARSET 222
+#define EASTEUROPE_CHARSET 238
+#define RUSSIAN_CHARSET 204
+
+#define MAC_CHARSET 77
+#define BALTIC_CHARSET 186
+
+#define FS_LATIN1 0x00000001L
+#define FS_LATIN2 0x00000002L
+#define FS_CYRILLIC 0x00000004L
+#define FS_GREEK 0x00000008L
+#define FS_TURKISH 0x00000010L
+#define FS_HEBREW 0x00000020L
+#define FS_ARABIC 0x00000040L
+#define FS_BALTIC 0x00000080L
+#define FS_VIETNAMESE 0x00000100L
+#define FS_THAI 0x00010000L
+#define FS_JISJAPAN 0x00020000L
+#define FS_CHINESESIMP 0x00040000L
+#define FS_WANSUNG 0x00080000L
+#define FS_CHINESETRAD 0x00100000L
+#define FS_JOHAB 0x00200000L
+#define FS_SYMBOL 0x80000000L
+#endif /* WINVER >= 0x0400 */
+
+/* Font Families */
+#define FF_DONTCARE (0<<4) /* Don't care or don't know. */
+#define FF_ROMAN (1<<4) /* Variable stroke width, serifed. */
+ /* Times Roman, Century Schoolbook, etc. */
+#define FF_SWISS (2<<4) /* Variable stroke width, sans-serifed. */
+ /* Helvetica, Swiss, etc. */
+#define FF_MODERN (3<<4) /* Constant stroke width, serifed or sans-serifed. */
+ /* Pica, Elite, Courier, etc. */
+#define FF_SCRIPT (4<<4) /* Cursive, etc. */
+#define FF_DECORATIVE (5<<4) /* Old English, etc. */
+
+/* Font Weights */
+#define FW_DONTCARE 0
+#define FW_THIN 100
+#define FW_EXTRALIGHT 200
+#define FW_LIGHT 300
+#define FW_NORMAL 400
+#define FW_MEDIUM 500
+#define FW_SEMIBOLD 600
+#define FW_BOLD 700
+#define FW_EXTRABOLD 800
+#define FW_HEAVY 900
+
+#define FW_ULTRALIGHT FW_EXTRALIGHT
+#define FW_REGULAR FW_NORMAL
+#define FW_DEMIBOLD FW_SEMIBOLD
+#define FW_ULTRABOLD FW_EXTRABOLD
+#define FW_BLACK FW_HEAVY
+
+#define PANOSE_COUNT 10
+#define PAN_FAMILYTYPE_INDEX 0
+#define PAN_SERIFSTYLE_INDEX 1
+#define PAN_WEIGHT_INDEX 2
+#define PAN_PROPORTION_INDEX 3
+#define PAN_CONTRAST_INDEX 4
+#define PAN_STROKEVARIATION_INDEX 5
+#define PAN_ARMSTYLE_INDEX 6
+#define PAN_LETTERFORM_INDEX 7
+#define PAN_MIDLINE_INDEX 8
+#define PAN_XHEIGHT_INDEX 9
+
+#define PAN_CULTURE_LATIN 0
+
+typedef struct tagPANOSE
+{
+ BYTE bFamilyType;
+ BYTE bSerifStyle;
+ BYTE bWeight;
+ BYTE bProportion;
+ BYTE bContrast;
+ BYTE bStrokeVariation;
+ BYTE bArmStyle;
+ BYTE bLetterform;
+ BYTE bMidline;
+ BYTE bXHeight;
+} PANOSE, * LPPANOSE;
+
+#define PAN_ANY 0 /* Any */
+#define PAN_NO_FIT 1 /* No Fit */
+
+#define PAN_FAMILY_TEXT_DISPLAY 2 /* Text and Display */
+#define PAN_FAMILY_SCRIPT 3 /* Script */
+#define PAN_FAMILY_DECORATIVE 4 /* Decorative */
+#define PAN_FAMILY_PICTORIAL 5 /* Pictorial */
+
+#define PAN_SERIF_COVE 2 /* Cove */
+#define PAN_SERIF_OBTUSE_COVE 3 /* Obtuse Cove */
+#define PAN_SERIF_SQUARE_COVE 4 /* Square Cove */
+#define PAN_SERIF_OBTUSE_SQUARE_COVE 5 /* Obtuse Square Cove */
+#define PAN_SERIF_SQUARE 6 /* Square */
+#define PAN_SERIF_THIN 7 /* Thin */
+#define PAN_SERIF_BONE 8 /* Bone */
+#define PAN_SERIF_EXAGGERATED 9 /* Exaggerated */
+#define PAN_SERIF_TRIANGLE 10 /* Triangle */
+#define PAN_SERIF_NORMAL_SANS 11 /* Normal Sans */
+#define PAN_SERIF_OBTUSE_SANS 12 /* Obtuse Sans */
+#define PAN_SERIF_PERP_SANS 13 /* Prep Sans */
+#define PAN_SERIF_FLARED 14 /* Flared */
+#define PAN_SERIF_ROUNDED 15 /* Rounded */
+
+#define PAN_WEIGHT_VERY_LIGHT 2 /* Very Light */
+#define PAN_WEIGHT_LIGHT 3 /* Light */
+#define PAN_WEIGHT_THIN 4 /* Thin */
+#define PAN_WEIGHT_BOOK 5 /* Book */
+#define PAN_WEIGHT_MEDIUM 6 /* Medium */
+#define PAN_WEIGHT_DEMI 7 /* Demi */
+#define PAN_WEIGHT_BOLD 8 /* Bold */
+#define PAN_WEIGHT_HEAVY 9 /* Heavy */
+#define PAN_WEIGHT_BLACK 10 /* Black */
+#define PAN_WEIGHT_NORD 11 /* Nord */
+
+#define PAN_PROP_OLD_STYLE 2 /* Old Style */
+#define PAN_PROP_MODERN 3 /* Modern */
+#define PAN_PROP_EVEN_WIDTH 4 /* Even Width */
+#define PAN_PROP_EXPANDED 5 /* Expanded */
+#define PAN_PROP_CONDENSED 6 /* Condensed */
+#define PAN_PROP_VERY_EXPANDED 7 /* Very Expanded */
+#define PAN_PROP_VERY_CONDENSED 8 /* Very Condensed */
+#define PAN_PROP_MONOSPACED 9 /* Monospaced */
+
+#define PAN_CONTRAST_NONE 2 /* None */
+#define PAN_CONTRAST_VERY_LOW 3 /* Very Low */
+#define PAN_CONTRAST_LOW 4 /* Low */
+#define PAN_CONTRAST_MEDIUM_LOW 5 /* Medium Low */
+#define PAN_CONTRAST_MEDIUM 6 /* Medium */
+#define PAN_CONTRAST_MEDIUM_HIGH 7 /* Mediim High */
+#define PAN_CONTRAST_HIGH 8 /* High */
+#define PAN_CONTRAST_VERY_HIGH 9 /* Very High */
+
+#define PAN_STROKE_GRADUAL_DIAG 2 /* Gradual/Diagonal */
+#define PAN_STROKE_GRADUAL_TRAN 3 /* Gradual/Transitional */
+#define PAN_STROKE_GRADUAL_VERT 4 /* Gradual/Vertical */
+#define PAN_STROKE_GRADUAL_HORZ 5 /* Gradual/Horizontal */
+#define PAN_STROKE_RAPID_VERT 6 /* Rapid/Vertical */
+#define PAN_STROKE_RAPID_HORZ 7 /* Rapid/Horizontal */
+#define PAN_STROKE_INSTANT_VERT 8 /* Instant/Vertical */
+
+#define PAN_STRAIGHT_ARMS_HORZ 2 /* Straight Arms/Horizontal */
+#define PAN_STRAIGHT_ARMS_WEDGE 3 /* Straight Arms/Wedge */
+#define PAN_STRAIGHT_ARMS_VERT 4 /* Straight Arms/Vertical */
+#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5 /* Straight Arms/Single-Serif */
+#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6 /* Straight Arms/Double-Serif */
+#define PAN_BENT_ARMS_HORZ 7 /* Non-Straight Arms/Horizontal */
+#define PAN_BENT_ARMS_WEDGE 8 /* Non-Straight Arms/Wedge */
+#define PAN_BENT_ARMS_VERT 9 /* Non-Straight Arms/Vertical */
+#define PAN_BENT_ARMS_SINGLE_SERIF 10 /* Non-Straight Arms/Single-Serif */
+#define PAN_BENT_ARMS_DOUBLE_SERIF 11 /* Non-Straight Arms/Double-Serif */
+
+#define PAN_LETT_NORMAL_CONTACT 2 /* Normal/Contact */
+#define PAN_LETT_NORMAL_WEIGHTED 3 /* Normal/Weighted */
+#define PAN_LETT_NORMAL_BOXED 4 /* Normal/Boxed */
+#define PAN_LETT_NORMAL_FLATTENED 5 /* Normal/Flattened */
+#define PAN_LETT_NORMAL_ROUNDED 6 /* Normal/Rounded */
+#define PAN_LETT_NORMAL_OFF_CENTER 7 /* Normal/Off Center */
+#define PAN_LETT_NORMAL_SQUARE 8 /* Normal/Square */
+#define PAN_LETT_OBLIQUE_CONTACT 9 /* Oblique/Contact */
+#define PAN_LETT_OBLIQUE_WEIGHTED 10 /* Oblique/Weighted */
+#define PAN_LETT_OBLIQUE_BOXED 11 /* Oblique/Boxed */
+#define PAN_LETT_OBLIQUE_FLATTENED 12 /* Oblique/Flattened */
+#define PAN_LETT_OBLIQUE_ROUNDED 13 /* Oblique/Rounded */
+#define PAN_LETT_OBLIQUE_OFF_CENTER 14 /* Oblique/Off Center */
+#define PAN_LETT_OBLIQUE_SQUARE 15 /* Oblique/Square */
+
+#define PAN_MIDLINE_STANDARD_TRIMMED 2 /* Standard/Trimmed */
+#define PAN_MIDLINE_STANDARD_POINTED 3 /* Standard/Pointed */
+#define PAN_MIDLINE_STANDARD_SERIFED 4 /* Standard/Serifed */
+#define PAN_MIDLINE_HIGH_TRIMMED 5 /* High/Trimmed */
+#define PAN_MIDLINE_HIGH_POINTED 6 /* High/Pointed */
+#define PAN_MIDLINE_HIGH_SERIFED 7 /* High/Serifed */
+#define PAN_MIDLINE_CONSTANT_TRIMMED 8 /* Constant/Trimmed */
+#define PAN_MIDLINE_CONSTANT_POINTED 9 /* Constant/Pointed */
+#define PAN_MIDLINE_CONSTANT_SERIFED 10 /* Constant/Serifed */
+#define PAN_MIDLINE_LOW_TRIMMED 11 /* Low/Trimmed */
+#define PAN_MIDLINE_LOW_POINTED 12 /* Low/Pointed */
+#define PAN_MIDLINE_LOW_SERIFED 13 /* Low/Serifed */
+
+#define PAN_XHEIGHT_CONSTANT_SMALL 2 /* Constant/Small */
+#define PAN_XHEIGHT_CONSTANT_STD 3 /* Constant/Standard */
+#define PAN_XHEIGHT_CONSTANT_LARGE 4 /* Constant/Large */
+#define PAN_XHEIGHT_DUCKING_SMALL 5 /* Ducking/Small */
+#define PAN_XHEIGHT_DUCKING_STD 6 /* Ducking/Standard */
+#define PAN_XHEIGHT_DUCKING_LARGE 7 /* Ducking/Large */
+
+
+#define ELF_VENDOR_SIZE 4
+
+/* The extended logical font */
+/* An extension of the ENUMLOGFONT */
+
+typedef struct tagEXTLOGFONTA {
+ LOGFONTA elfLogFont;
+ BYTE elfFullName[LF_FULLFACESIZE];
+ BYTE elfStyle[LF_FACESIZE];
+ DWORD elfVersion; /* 0 for the first release of NT */
+ DWORD elfStyleSize;
+ DWORD elfMatch;
+ DWORD elfReserved;
+ BYTE elfVendorId[ELF_VENDOR_SIZE];
+ DWORD elfCulture; /* 0 for Latin */
+ PANOSE elfPanose;
+} EXTLOGFONTA, *PEXTLOGFONTA, NEAR *NPEXTLOGFONTA, FAR *LPEXTLOGFONTA;
+typedef struct tagEXTLOGFONTW {
+ LOGFONTW elfLogFont;
+ WCHAR elfFullName[LF_FULLFACESIZE];
+ WCHAR elfStyle[LF_FACESIZE];
+ DWORD elfVersion; /* 0 for the first release of NT */
+ DWORD elfStyleSize;
+ DWORD elfMatch;
+ DWORD elfReserved;
+ BYTE elfVendorId[ELF_VENDOR_SIZE];
+ DWORD elfCulture; /* 0 for Latin */
+ PANOSE elfPanose;
+} EXTLOGFONTW, *PEXTLOGFONTW, NEAR *NPEXTLOGFONTW, FAR *LPEXTLOGFONTW;
+#ifdef UNICODE
+typedef EXTLOGFONTW EXTLOGFONT;
+typedef PEXTLOGFONTW PEXTLOGFONT;
+typedef NPEXTLOGFONTW NPEXTLOGFONT;
+typedef LPEXTLOGFONTW LPEXTLOGFONT;
+#else
+typedef EXTLOGFONTA EXTLOGFONT;
+typedef PEXTLOGFONTA PEXTLOGFONT;
+typedef NPEXTLOGFONTA NPEXTLOGFONT;
+typedef LPEXTLOGFONTA LPEXTLOGFONT;
+#endif // UNICODE
+
+
+#define ELF_VERSION 0
+#define ELF_CULTURE_LATIN 0
+
+/* EnumFonts Masks */
+#define RASTER_FONTTYPE 0x0001
+#define DEVICE_FONTTYPE 0x002
+#define TRUETYPE_FONTTYPE 0x004
+
+#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
+#define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b))
+#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
+
+/* palette entry flags */
+
+#define PC_RESERVED 0x01 /* palette index used for animation */
+#define PC_EXPLICIT 0x02 /* palette index is explicit to device */
+#define PC_NOCOLLAPSE 0x04 /* do not match color to system palette */
+
+#define GetRValue(rgb) ((BYTE)(rgb))
+#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
+#define GetBValue(rgb) ((BYTE)((rgb)>>16))
+
+/* Background Modes */
+#define TRANSPARENT 1
+#define OPAQUE 2
+#define BKMODE_LAST 2
+
+/* Graphics Modes */
+
+#define GM_COMPATIBLE 1
+#define GM_ADVANCED 2
+#define GM_LAST 2
+
+/* PolyDraw and GetPath point types */
+#define PT_CLOSEFIGURE 0x01
+#define PT_LINETO 0x02
+#define PT_BEZIERTO 0x04
+#define PT_MOVETO 0x06
+
+/* Mapping Modes */
+#define MM_TEXT 1
+#define MM_LOMETRIC 2
+#define MM_HIMETRIC 3
+#define MM_LOENGLISH 4
+#define MM_HIENGLISH 5
+#define MM_TWIPS 6
+#define MM_ISOTROPIC 7
+#define MM_ANISOTROPIC 8
+
+/* Min and Max Mapping Mode values */
+#define MM_MIN MM_TEXT
+#define MM_MAX MM_ANISOTROPIC
+#define MM_MAX_FIXEDSCALE MM_TWIPS
+
+/* Coordinate Modes */
+#define ABSOLUTE 1
+#define RELATIVE 2
+
+/* Stock Logical Objects */
+#define WHITE_BRUSH 0
+#define LTGRAY_BRUSH 1
+#define GRAY_BRUSH 2
+#define DKGRAY_BRUSH 3
+#define BLACK_BRUSH 4
+#define NULL_BRUSH 5
+#define HOLLOW_BRUSH NULL_BRUSH
+#define WHITE_PEN 6
+#define BLACK_PEN 7
+#define NULL_PEN 8
+#define OEM_FIXED_FONT 10
+#define ANSI_FIXED_FONT 11
+#define ANSI_VAR_FONT 12
+#define SYSTEM_FONT 13
+#define DEVICE_DEFAULT_FONT 14
+#define DEFAULT_PALETTE 15
+#define SYSTEM_FIXED_FONT 16
+#if(WINVER >= 0x0400)
+#define DEFAULT_GUI_FONT 17
+#endif /* WINVER >= 0x0400 */
+
+#if (WINVER >= 0x0400)
+#define STOCK_LAST 17
+#else
+#define STOCK_LAST 16
+#endif
+
+#define CLR_INVALID 0xFFFFFFFF
+
+/* Brush Styles */
+#define BS_SOLID 0
+#define BS_NULL 1
+#define BS_HOLLOW BS_NULL
+#define BS_HATCHED 2
+#define BS_PATTERN 3
+#define BS_INDEXED 4
+#define BS_DIBPATTERN 5
+#define BS_DIBPATTERNPT 6
+#define BS_PATTERN8X8 7
+#define BS_DIBPATTERN8X8 8
+#define BS_MONOPATTERN 9
+
+/* Hatch Styles */
+#define HS_HORIZONTAL 0 /* ----- */
+#define HS_VERTICAL 1 /* ||||| */
+#define HS_FDIAGONAL 2 /* \\\\\ */
+#define HS_BDIAGONAL 3 /* ///// */
+#define HS_CROSS 4 /* +++++ */
+#define HS_DIAGCROSS 5 /* xxxxx */
+
+/* Pen Styles */
+#define PS_SOLID 0
+#define PS_DASH 1 /* ------- */
+#define PS_DOT 2 /* ....... */
+#define PS_DASHDOT 3 /* _._._._ */
+#define PS_DASHDOTDOT 4 /* _.._.._ */
+#define PS_NULL 5
+#define PS_INSIDEFRAME 6
+#define PS_USERSTYLE 7
+#define PS_ALTERNATE 8
+#define PS_STYLE_MASK 0x0000000F
+
+#define PS_ENDCAP_ROUND 0x00000000
+#define PS_ENDCAP_SQUARE 0x00000100
+#define PS_ENDCAP_FLAT 0x00000200
+#define PS_ENDCAP_MASK 0x00000F00
+
+#define PS_JOIN_ROUND 0x00000000
+#define PS_JOIN_BEVEL 0x00001000
+#define PS_JOIN_MITER 0x00002000
+#define PS_JOIN_MASK 0x0000F000
+
+#define PS_COSMETIC 0x00000000
+#define PS_GEOMETRIC 0x00010000
+#define PS_TYPE_MASK 0x000F0000
+
+#define AD_COUNTERCLOCKWISE 1
+#define AD_CLOCKWISE 2
+
+/* Device Parameters for GetDeviceCaps() */
+#define DRIVERVERSION 0 /* Device driver version */
+#define TECHNOLOGY 2 /* Device classification */
+#define HORZSIZE 4 /* Horizontal size in millimeters */
+#define VERTSIZE 6 /* Vertical size in millimeters */
+#define HORZRES 8 /* Horizontal width in pixels */
+#define VERTRES 10 /* Vertical height in pixels */
+#define BITSPIXEL 12 /* Number of bits per pixel */
+#define PLANES 14 /* Number of planes */
+#define NUMBRUSHES 16 /* Number of brushes the device has */
+#define NUMPENS 18 /* Number of pens the device has */
+#define NUMMARKERS 20 /* Number of markers the device has */
+#define NUMFONTS 22 /* Number of fonts the device has */
+#define NUMCOLORS 24 /* Number of colors the device supports */
+#define PDEVICESIZE 26 /* Size required for device descriptor */
+#define CURVECAPS 28 /* Curve capabilities */
+#define LINECAPS 30 /* Line capabilities */
+#define POLYGONALCAPS 32 /* Polygonal capabilities */
+#define TEXTCAPS 34 /* Text capabilities */
+#define CLIPCAPS 36 /* Clipping capabilities */
+#define RASTERCAPS 38 /* Bitblt capabilities */
+#define ASPECTX 40 /* Length of the X leg */
+#define ASPECTY 42 /* Length of the Y leg */
+#define ASPECTXY 44 /* Length of the hypotenuse */
+
+#define LOGPIXELSX 88 /* Logical pixels/inch in X */
+#define LOGPIXELSY 90 /* Logical pixels/inch in Y */
+
+#define SIZEPALETTE 104 /* Number of entries in physical palette */
+#define NUMRESERVED 106 /* Number of reserved entries in palette */
+#define COLORRES 108 /* Actual color resolution */
+
+
+// Printing related DeviceCaps. These replace the appropriate Escapes
+
+#define PHYSICALWIDTH 110 /* Physical Width in device units */
+#define PHYSICALHEIGHT 111 /* Physical Height in device units */
+#define PHYSICALOFFSETX 112 /* Physical Printable Area x margin */
+#define PHYSICALOFFSETY 113 /* Physical Printable Area y margin */
+#define SCALINGFACTORX 114 /* Scaling factor x */
+#define SCALINGFACTORY 115 /* Scaling factor y */
+
+// Display driver specific
+
+#define VREFRESH 116 /* Current vertical refresh rate of the */
+ /* display device (for displays only) in Hz*/
+#define DESKTOPVERTRES 117 /* Horizontal width of entire desktop in */
+ /* pixels */
+#define DESKTOPHORZRES 118 /* Vertical height of entire desktop in */
+ /* pixels */
+#define BLTALIGNMENT 119 /* Preferred blt alignment */
+
+#ifndef NOGDICAPMASKS
+
+/* Device Capability Masks: */
+
+/* Device Technologies */
+#define DT_PLOTTER 0 /* Vector plotter */
+#define DT_RASDISPLAY 1 /* Raster display */
+#define DT_RASPRINTER 2 /* Raster printer */
+#define DT_RASCAMERA 3 /* Raster camera */
+#define DT_CHARSTREAM 4 /* Character-stream, PLP */
+#define DT_METAFILE 5 /* Metafile, VDM */
+#define DT_DISPFILE 6 /* Display-file */
+
+/* Curve Capabilities */
+#define CC_NONE 0 /* Curves not supported */
+#define CC_CIRCLES 1 /* Can do circles */
+#define CC_PIE 2 /* Can do pie wedges */
+#define CC_CHORD 4 /* Can do chord arcs */
+#define CC_ELLIPSES 8 /* Can do ellipese */
+#define CC_WIDE 16 /* Can do wide lines */
+#define CC_STYLED 32 /* Can do styled lines */
+#define CC_WIDESTYLED 64 /* Can do wide styled lines */
+#define CC_INTERIORS 128 /* Can do interiors */
+#define CC_ROUNDRECT 256 /* */
+
+/* Line Capabilities */
+#define LC_NONE 0 /* Lines not supported */
+#define LC_POLYLINE 2 /* Can do polylines */
+#define LC_MARKER 4 /* Can do markers */
+#define LC_POLYMARKER 8 /* Can do polymarkers */
+#define LC_WIDE 16 /* Can do wide lines */
+#define LC_STYLED 32 /* Can do styled lines */
+#define LC_WIDESTYLED 64 /* Can do wide styled lines */
+#define LC_INTERIORS 128 /* Can do interiors */
+
+/* Polygonal Capabilities */
+#define PC_NONE 0 /* Polygonals not supported */
+#define PC_POLYGON 1 /* Can do polygons */
+#define PC_RECTANGLE 2 /* Can do rectangles */
+#define PC_WINDPOLYGON 4 /* Can do winding polygons */
+#define PC_TRAPEZOID 4 /* Can do trapezoids */
+#define PC_SCANLINE 8 /* Can do scanlines */
+#define PC_WIDE 16 /* Can do wide borders */
+#define PC_STYLED 32 /* Can do styled borders */
+#define PC_WIDESTYLED 64 /* Can do wide styled borders */
+#define PC_INTERIORS 128 /* Can do interiors */
+#define PC_POLYPOLYGON 256 /* Can do polypolygons */
+#define PC_PATHS 512 /* Can do paths */
+
+/* Clipping Capabilities */
+#define CP_NONE 0 /* No clipping of output */
+#define CP_RECTANGLE 1 /* Output clipped to rects */
+#define CP_REGION 2 /* obsolete */
+
+/* Text Capabilities */
+#define TC_OP_CHARACTER 0x00000001 /* Can do OutputPrecision CHARACTER */
+#define TC_OP_STROKE 0x00000002 /* Can do OutputPrecision STROKE */
+#define TC_CP_STROKE 0x00000004 /* Can do ClipPrecision STROKE */
+#define TC_CR_90 0x00000008 /* Can do CharRotAbility 90 */
+#define TC_CR_ANY 0x00000010 /* Can do CharRotAbility ANY */
+#define TC_SF_X_YINDEP 0x00000020 /* Can do ScaleFreedom X_YINDEPENDENT */
+#define TC_SA_DOUBLE 0x00000040 /* Can do ScaleAbility DOUBLE */
+#define TC_SA_INTEGER 0x00000080 /* Can do ScaleAbility INTEGER */
+#define TC_SA_CONTIN 0x00000100 /* Can do ScaleAbility CONTINUOUS */
+#define TC_EA_DOUBLE 0x00000200 /* Can do EmboldenAbility DOUBLE */
+#define TC_IA_ABLE 0x00000400 /* Can do ItalisizeAbility ABLE */
+#define TC_UA_ABLE 0x00000800 /* Can do UnderlineAbility ABLE */
+#define TC_SO_ABLE 0x00001000 /* Can do StrikeOutAbility ABLE */
+#define TC_RA_ABLE 0x00002000 /* Can do RasterFontAble ABLE */
+#define TC_VA_ABLE 0x00004000 /* Can do VectorFontAble ABLE */
+#define TC_RESERVED 0x00008000
+#define TC_SCROLLBLT 0x00010000 /* Don't do text scroll with blt */
+
+#endif /* NOGDICAPMASKS */
+
+/* Raster Capabilities */
+#define RC_NONE
+#define RC_BITBLT 1 /* Can do standard BLT. */
+#define RC_BANDING 2 /* Device requires banding support */
+#define RC_SCALING 4 /* Device requires scaling support */
+#define RC_BITMAP64 8 /* Device can support >64K bitmap */
+#define RC_GDI20_OUTPUT 0x0010 /* has 2.0 output calls */
+#define RC_GDI20_STATE 0x0020
+#define RC_SAVEBITMAP 0x0040
+#define RC_DI_BITMAP 0x0080 /* supports DIB to memory */
+#define RC_PALETTE 0x0100 /* supports a palette */
+#define RC_DIBTODEV 0x0200 /* supports DIBitsToDevice */
+#define RC_BIGFONT 0x0400 /* supports >64K fonts */
+#define RC_STRETCHBLT 0x0800 /* supports StretchBlt */
+#define RC_FLOODFILL 0x1000 /* supports FloodFill */
+#define RC_STRETCHDIB 0x2000 /* supports StretchDIBits */
+#define RC_OP_DX_OUTPUT 0x4000
+#define RC_DEVBITS 0x8000
+
+
+/* DIB color table identifiers */
+
+#define DIB_RGB_COLORS 0 /* color table in RGBs */
+#define DIB_PAL_COLORS 1 /* color table in palette indices */
+
+/* constants for Get/SetSystemPaletteUse() */
+
+#define SYSPAL_ERROR 0
+#define SYSPAL_STATIC 1
+#define SYSPAL_NOSTATIC 2
+
+/* constants for CreateDIBitmap */
+#define CBM_INIT 0x04L /* initialize bitmap */
+
+/* ExtFloodFill style flags */
+#define FLOODFILLBORDER 0
+#define FLOODFILLSURFACE 1
+
+/* size of a device name string */
+#define CCHDEVICENAME 32
+
+/* size of a form name string */
+#define CCHFORMNAME 32
+
+typedef struct _devicemodeA {
+ BYTE dmDeviceName[CCHDEVICENAME];
+ WORD dmSpecVersion;
+ WORD dmDriverVersion;
+ WORD dmSize;
+ WORD dmDriverExtra;
+ DWORD dmFields;
+ short dmOrientation;
+ short dmPaperSize;
+ short dmPaperLength;
+ short dmPaperWidth;
+ short dmScale;
+ short dmCopies;
+ short dmDefaultSource;
+ short dmPrintQuality;
+ short dmColor;
+ short dmDuplex;
+ short dmYResolution;
+ short dmTTOption;
+ short dmCollate;
+ BYTE dmFormName[CCHFORMNAME];
+ WORD dmLogPixels;
+ DWORD dmBitsPerPel;
+ DWORD dmPelsWidth;
+ DWORD dmPelsHeight;
+ DWORD dmDisplayFlags;
+ DWORD dmDisplayFrequency;
+ DWORD dmICMMethod;
+ DWORD dmICMIntent;
+ DWORD dmMediaType;
+ DWORD dmDitherType;
+ DWORD dmICCManufacturer;
+ DWORD dmICCModel;
+ DWORD dmPanningWidth;
+ DWORD dmPanningHeight;
+} DEVMODEA, *PDEVMODEA, *NPDEVMODEA, *LPDEVMODEA;
+typedef struct _devicemodeW {
+ WCHAR dmDeviceName[CCHDEVICENAME];
+ WORD dmSpecVersion;
+ WORD dmDriverVersion;
+ WORD dmSize;
+ WORD dmDriverExtra;
+ DWORD dmFields;
+ short dmOrientation;
+ short dmPaperSize;
+ short dmPaperLength;
+ short dmPaperWidth;
+ short dmScale;
+ short dmCopies;
+ short dmDefaultSource;
+ short dmPrintQuality;
+ short dmColor;
+ short dmDuplex;
+ short dmYResolution;
+ short dmTTOption;
+ short dmCollate;
+ WCHAR dmFormName[CCHFORMNAME];
+ WORD dmLogPixels;
+ DWORD dmBitsPerPel;
+ DWORD dmPelsWidth;
+ DWORD dmPelsHeight;
+ DWORD dmDisplayFlags;
+ DWORD dmDisplayFrequency;
+ DWORD dmICMMethod;
+ DWORD dmICMIntent;
+ DWORD dmMediaType;
+ DWORD dmDitherType;
+ DWORD dmICCManufacturer;
+ DWORD dmICCModel;
+ DWORD dmPanningWidth;
+ DWORD dmPanningHeight;
+} DEVMODEW, *PDEVMODEW, *NPDEVMODEW, *LPDEVMODEW;
+#ifdef UNICODE
+typedef DEVMODEW DEVMODE;
+typedef PDEVMODEW PDEVMODE;
+typedef NPDEVMODEW NPDEVMODE;
+typedef LPDEVMODEW LPDEVMODE;
+#else
+typedef DEVMODEA DEVMODE;
+typedef PDEVMODEA PDEVMODE;
+typedef NPDEVMODEA NPDEVMODE;
+typedef LPDEVMODEA LPDEVMODE;
+#endif // UNICODE
+
+#define DM_SPECVERSION 0x0401
+
+/* field selection bits */
+#define DM_ORIENTATION 0x00000001L
+#define DM_PAPERSIZE 0x00000002L
+#define DM_PAPERLENGTH 0x00000004L
+#define DM_PAPERWIDTH 0x00000008L
+#define DM_SCALE 0x00000010L
+#define DM_COPIES 0x00000100L
+#define DM_DEFAULTSOURCE 0x00000200L
+#define DM_PRINTQUALITY 0x00000400L
+#define DM_COLOR 0x00000800L
+#define DM_DUPLEX 0x00001000L
+#define DM_YRESOLUTION 0x00002000L
+#define DM_TTOPTION 0x00004000L
+#define DM_COLLATE 0x00008000L
+#define DM_FORMNAME 0x00010000L
+#define DM_LOGPIXELS 0x00020000L
+#define DM_BITSPERPEL 0x00040000L
+#define DM_PELSWIDTH 0x00080000L
+#define DM_PELSHEIGHT 0x00100000L
+#define DM_DISPLAYFLAGS 0x00200000L
+#define DM_DISPLAYFREQUENCY 0x00400000L
+#define DM_PANNINGWIDTH 0x00800000L
+#define DM_PANNINGHEIGHT 0x01000000L
+#define DM_ICMMETHOD 0x02000000L
+#define DM_ICMINTENT 0x04000000L
+#define DM_MEDIATYPE 0x08000000L
+#define DM_DITHERTYPE 0x10000000L
+#define DM_ICCMANUFACTURER 0x20000000L
+#define DM_ICCMODEL 0x40000000L
+
+/* orientation selections */
+#define DMORIENT_PORTRAIT 1
+#define DMORIENT_LANDSCAPE 2
+
+/* paper selections */
+#define DMPAPER_FIRST DMPAPER_LETTER
+#define DMPAPER_LETTER 1 /* Letter 8 1/2 x 11 in */
+#define DMPAPER_LETTERSMALL 2 /* Letter Small 8 1/2 x 11 in */
+#define DMPAPER_TABLOID 3 /* Tabloid 11 x 17 in */
+#define DMPAPER_LEDGER 4 /* Ledger 17 x 11 in */
+#define DMPAPER_LEGAL 5 /* Legal 8 1/2 x 14 in */
+#define DMPAPER_STATEMENT 6 /* Statement 5 1/2 x 8 1/2 in */
+#define DMPAPER_EXECUTIVE 7 /* Executive 7 1/4 x 10 1/2 in */
+#define DMPAPER_A3 8 /* A3 297 x 420 mm */
+#define DMPAPER_A4 9 /* A4 210 x 297 mm */
+#define DMPAPER_A4SMALL 10 /* A4 Small 210 x 297 mm */
+#define DMPAPER_A5 11 /* A5 148 x 210 mm */
+#define DMPAPER_B4 12 /* B4 (JIS) 250 x 354 */
+#define DMPAPER_B5 13 /* B5 (JIS) 182 x 257 mm */
+#define DMPAPER_FOLIO 14 /* Folio 8 1/2 x 13 in */
+#define DMPAPER_QUARTO 15 /* Quarto 215 x 275 mm */
+#define DMPAPER_10X14 16 /* 10x14 in */
+#define DMPAPER_11X17 17 /* 11x17 in */
+#define DMPAPER_NOTE 18 /* Note 8 1/2 x 11 in */
+#define DMPAPER_ENV_9 19 /* Envelope #9 3 7/8 x 8 7/8 */
+#define DMPAPER_ENV_10 20 /* Envelope #10 4 1/8 x 9 1/2 */
+#define DMPAPER_ENV_11 21 /* Envelope #11 4 1/2 x 10 3/8 */
+#define DMPAPER_ENV_12 22 /* Envelope #12 4 \276 x 11 */
+#define DMPAPER_ENV_14 23 /* Envelope #14 5 x 11 1/2 */
+#define DMPAPER_CSHEET 24 /* C size sheet */
+#define DMPAPER_DSHEET 25 /* D size sheet */
+#define DMPAPER_ESHEET 26 /* E size sheet */
+#define DMPAPER_ENV_DL 27 /* Envelope DL 110 x 220mm */
+#define DMPAPER_ENV_C5 28 /* Envelope C5 162 x 229 mm */
+#define DMPAPER_ENV_C3 29 /* Envelope C3 324 x 458 mm */
+#define DMPAPER_ENV_C4 30 /* Envelope C4 229 x 324 mm */
+#define DMPAPER_ENV_C6 31 /* Envelope C6 114 x 162 mm */
+#define DMPAPER_ENV_C65 32 /* Envelope C65 114 x 229 mm */
+#define DMPAPER_ENV_B4 33 /* Envelope B4 250 x 353 mm */
+#define DMPAPER_ENV_B5 34 /* Envelope B5 176 x 250 mm */
+#define DMPAPER_ENV_B6 35 /* Envelope B6 176 x 125 mm */
+#define DMPAPER_ENV_ITALY 36 /* Envelope 110 x 230 mm */
+#define DMPAPER_ENV_MONARCH 37 /* Envelope Monarch 3.875 x 7.5 in */
+#define DMPAPER_ENV_PERSONAL 38 /* 6 3/4 Envelope 3 5/8 x 6 1/2 in */
+#define DMPAPER_FANFOLD_US 39 /* US Std Fanfold 14 7/8 x 11 in */
+#define DMPAPER_FANFOLD_STD_GERMAN 40 /* German Std Fanfold 8 1/2 x 12 in */
+#define DMPAPER_FANFOLD_LGL_GERMAN 41 /* German Legal Fanfold 8 1/2 x 13 in */
+#if(WINVER >= 0x0400)
+#define DMPAPER_ISO_B4 42 /* B4 (ISO) 250 x 353 mm */
+#define DMPAPER_JAPANESE_POSTCARD 43 /* Japanese Postcard 100 x 148 mm */
+#define DMPAPER_9X11 44 /* 9 x 11 in */
+#define DMPAPER_10X11 45 /* 10 x 11 in */
+#define DMPAPER_15X11 46 /* 15 x 11 in */
+#define DMPAPER_ENV_INVITE 47 /* Envelope Invite 220 x 220 mm */
+#define DMPAPER_RESERVED_48 48 /* RESERVED--DO NOT USE */
+#define DMPAPER_RESERVED_49 49 /* RESERVED--DO NOT USE */
+#define DMPAPER_LETTER_EXTRA 50 /* Letter Extra 9 \275 x 12 in */
+#define DMPAPER_LEGAL_EXTRA 51 /* Legal Extra 9 \275 x 15 in */
+#define DMPAPER_TABLOID_EXTRA 52 /* Tabloid Extra 11.69 x 18 in */
+#define DMPAPER_A4_EXTRA 53 /* A4 Extra 9.27 x 12.69 in */
+#define DMPAPER_LETTER_TRANSVERSE 54 /* Letter Transverse 8 \275 x 11 in */
+#define DMPAPER_A4_TRANSVERSE 55 /* A4 Transverse 210 x 297 mm */
+#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56 /* Letter Extra Transverse 9\275 x 12 in */
+#define DMPAPER_A_PLUS 57 /* SuperA/SuperA/A4 227 x 356 mm */
+#define DMPAPER_B_PLUS 58 /* SuperB/SuperB/A3 305 x 487 mm */
+#define DMPAPER_LETTER_PLUS 59 /* Letter Plus 8.5 x 12.69 in */
+#define DMPAPER_A4_PLUS 60 /* A4 Plus 210 x 330 mm */
+#define DMPAPER_A5_TRANSVERSE 61 /* A5 Transverse 148 x 210 mm */
+#define DMPAPER_B5_TRANSVERSE 62 /* B5 (JIS) Transverse 182 x 257 mm */
+#define DMPAPER_A3_EXTRA 63 /* A3 Extra 322 x 445 mm */
+#define DMPAPER_A5_EXTRA 64 /* A5 Extra 174 x 235 mm */
+#define DMPAPER_B5_EXTRA 65 /* B5 (ISO) Extra 201 x 276 mm */
+#define DMPAPER_A2 66 /* A2 420 x 594 mm */
+#define DMPAPER_A3_TRANSVERSE 67 /* A3 Transverse 297 x 420 mm */
+#define DMPAPER_A3_EXTRA_TRANSVERSE 68 /* A3 Extra Transverse 322 x 445 mm */
+#endif /* WINVER >= 0x0400 */
+
+#if (WINVER >= 0x0400)
+#define DMPAPER_LAST DMPAPER_A3_EXTRA_TRANSVERSE
+#else
+#define DMPAPER_LAST DMPAPER_FANFOLD_LGL_GERMAN
+#endif
+
+#define DMPAPER_USER 256
+
+/* bin selections */
+#define DMBIN_FIRST DMBIN_UPPER
+#define DMBIN_UPPER 1
+#define DMBIN_ONLYONE 1
+#define DMBIN_LOWER 2
+#define DMBIN_MIDDLE 3
+#define DMBIN_MANUAL 4
+#define DMBIN_ENVELOPE 5
+#define DMBIN_ENVMANUAL 6
+#define DMBIN_AUTO 7
+#define DMBIN_TRACTOR 8
+#define DMBIN_SMALLFMT 9
+#define DMBIN_LARGEFMT 10
+#define DMBIN_LARGECAPACITY 11
+#define DMBIN_CASSETTE 14
+#define DMBIN_FORMSOURCE 15
+#define DMBIN_LAST DMBIN_FORMSOURCE
+
+#define DMBIN_USER 256 /* device specific bins start here */
+
+/* print qualities */
+#define DMRES_DRAFT (-1)
+#define DMRES_LOW (-2)
+#define DMRES_MEDIUM (-3)
+#define DMRES_HIGH (-4)
+
+/* color enable/disable for color printers */
+#define DMCOLOR_MONOCHROME 1
+#define DMCOLOR_COLOR 2
+
+/* duplex enable */
+#define DMDUP_SIMPLEX 1
+#define DMDUP_VERTICAL 2
+#define DMDUP_HORIZONTAL 3
+
+/* TrueType options */
+#define DMTT_BITMAP 1 /* print TT fonts as graphics */
+#define DMTT_DOWNLOAD 2 /* download TT fonts as soft fonts */
+#define DMTT_SUBDEV 3 /* substitute device fonts for TT fonts */
+#if(WINVER >= 0x0400)
+#define DMTT_DOWNLOAD_OUTLINE 4 /* download TT fonts as outline soft fonts */
+#endif /* WINVER >= 0x0400 */
+
+/* Collation selections */
+#define DMCOLLATE_FALSE 0
+#define DMCOLLATE_TRUE 1
+
+/* DEVMODE dmDisplayFlags flags */
+
+//#define DM_GRAYSCALE 0x00000001 /* This flag is no longer valid */
+//#define DM_INTERLACED 0x00000002 /* This flag is no longer valid */
+#define DMDISPLAYFLAGS_TEXTMODE 0x00000004
+
+#if(WINVER >= 0x0400)
+/* ICM methods */
+#define DMICMMETHOD_NONE 1 /* ICM disabled */
+#define DMICMMETHOD_SYSTEM 2 /* ICM handled by system */
+#define DMICMMETHOD_DRIVER 3 /* ICM handled by driver */
+#define DMICMMETHOD_DEVICE 4 /* ICM handled by device */
+
+#define DMICMMETHOD_USER 256 /* Device-specific methods start here */
+
+/* ICM Intents */
+#define DMICM_SATURATE 1 /* Maximize color saturation */
+#define DMICM_CONTRAST 2 /* Maximize color contrast */
+#define DMICM_COLORMETRIC 3 /* Use specific color metric */
+
+#define DMICM_USER 256 /* Device-specific intents start here */
+
+/* Media types */
+
+#define DMMEDIA_STANDARD 1 /* Standard paper */
+#define DMMEDIA_TRANSPARENCY 2 /* Transparency */
+#define DMMEDIA_GLOSSY 3 /* Glossy paper */
+
+#define DMMEDIA_USER 256 /* Device-specific media start here */
+
+/* Dither types */
+#define DMDITHER_NONE 1 /* No dithering */
+#define DMDITHER_COARSE 2 /* Dither with a coarse brush */
+#define DMDITHER_FINE 3 /* Dither with a fine brush */
+#define DMDITHER_LINEART 4 /* LineArt dithering */
+#define DMDITHER_GRAYSCALE 5 /* Device does grayscaling */
+
+#define DMDITHER_USER 256 /* Device-specific dithers start here */
+#endif /* WINVER >= 0x0400 */
+
+/* GetRegionData/ExtCreateRegion */
+
+#define RDH_RECTANGLES 1
+
+typedef struct _RGNDATAHEADER {
+ DWORD dwSize;
+ DWORD iType;
+ DWORD nCount;
+ DWORD nRgnSize;
+ RECT rcBound;
+} RGNDATAHEADER, *PRGNDATAHEADER;
+
+typedef struct _RGNDATA {
+ RGNDATAHEADER rdh;
+ char Buffer[1];
+} RGNDATA, *PRGNDATA, NEAR *NPRGNDATA, FAR *LPRGNDATA;
+
+
+typedef struct _ABC {
+ int abcA;
+ UINT abcB;
+ int abcC;
+} ABC, *PABC, NEAR *NPABC, FAR *LPABC;
+
+typedef struct _ABCFLOAT {
+ FLOAT abcfA;
+ FLOAT abcfB;
+ FLOAT abcfC;
+} ABCFLOAT, *PABCFLOAT, NEAR *NPABCFLOAT, FAR *LPABCFLOAT;
+
+#ifndef NOTEXTMETRIC
+
+typedef struct _OUTLINETEXTMETRICA {
+ UINT otmSize;
+ TEXTMETRICA otmTextMetrics;
+ BYTE otmFiller;
+ PANOSE otmPanoseNumber;
+ UINT otmfsSelection;
+ UINT otmfsType;
+ int otmsCharSlopeRise;
+ int otmsCharSlopeRun;
+ int otmItalicAngle;
+ UINT otmEMSquare;
+ int otmAscent;
+ int otmDescent;
+ UINT otmLineGap;
+ UINT otmsCapEmHeight;
+ UINT otmsXHeight;
+ RECT otmrcFontBox;
+ int otmMacAscent;
+ int otmMacDescent;
+ UINT otmMacLineGap;
+ UINT otmusMinimumPPEM;
+ POINT otmptSubscriptSize;
+ POINT otmptSubscriptOffset;
+ POINT otmptSuperscriptSize;
+ POINT otmptSuperscriptOffset;
+ UINT otmsStrikeoutSize;
+ int otmsStrikeoutPosition;
+ int otmsUnderscoreSize;
+ int otmsUnderscorePosition;
+ PSTR otmpFamilyName;
+ PSTR otmpFaceName;
+ PSTR otmpStyleName;
+ PSTR otmpFullName;
+} OUTLINETEXTMETRICA, *POUTLINETEXTMETRICA, NEAR *NPOUTLINETEXTMETRICA, FAR *LPOUTLINETEXTMETRICA;
+typedef struct _OUTLINETEXTMETRICW {
+ UINT otmSize;
+ TEXTMETRICW otmTextMetrics;
+ BYTE otmFiller;
+ PANOSE otmPanoseNumber;
+ UINT otmfsSelection;
+ UINT otmfsType;
+ int otmsCharSlopeRise;
+ int otmsCharSlopeRun;
+ int otmItalicAngle;
+ UINT otmEMSquare;
+ int otmAscent;
+ int otmDescent;
+ UINT otmLineGap;
+ UINT otmsCapEmHeight;
+ UINT otmsXHeight;
+ RECT otmrcFontBox;
+ int otmMacAscent;
+ int otmMacDescent;
+ UINT otmMacLineGap;
+ UINT otmusMinimumPPEM;
+ POINT otmptSubscriptSize;
+ POINT otmptSubscriptOffset;
+ POINT otmptSuperscriptSize;
+ POINT otmptSuperscriptOffset;
+ UINT otmsStrikeoutSize;
+ int otmsStrikeoutPosition;
+ int otmsUnderscoreSize;
+ int otmsUnderscorePosition;
+ PSTR otmpFamilyName;
+ PSTR otmpFaceName;
+ PSTR otmpStyleName;
+ PSTR otmpFullName;
+} OUTLINETEXTMETRICW, *POUTLINETEXTMETRICW, NEAR *NPOUTLINETEXTMETRICW, FAR *LPOUTLINETEXTMETRICW;
+#ifdef UNICODE
+typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC;
+typedef POUTLINETEXTMETRICW POUTLINETEXTMETRIC;
+typedef NPOUTLINETEXTMETRICW NPOUTLINETEXTMETRIC;
+typedef LPOUTLINETEXTMETRICW LPOUTLINETEXTMETRIC;
+#else
+typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC;
+typedef POUTLINETEXTMETRICA POUTLINETEXTMETRIC;
+typedef NPOUTLINETEXTMETRICA NPOUTLINETEXTMETRIC;
+typedef LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC;
+#endif // UNICODE
+
+#endif /* NOTEXTMETRIC */
+
+
+typedef struct tagPOLYTEXTA
+{
+ int x;
+ int y;
+ UINT n;
+ LPCSTR lpstr;
+ UINT uiFlags;
+ RECT rcl;
+ int *pdx;
+} POLYTEXTA, *PPOLYTEXTA, NEAR *NPPOLYTEXTA, FAR *LPPOLYTEXTA;
+typedef struct tagPOLYTEXTW
+{
+ int x;
+ int y;
+ UINT n;
+ LPCWSTR lpstr;
+ UINT uiFlags;
+ RECT rcl;
+ int *pdx;
+} POLYTEXTW, *PPOLYTEXTW, NEAR *NPPOLYTEXTW, FAR *LPPOLYTEXTW;
+#ifdef UNICODE
+typedef POLYTEXTW POLYTEXT;
+typedef PPOLYTEXTW PPOLYTEXT;
+typedef NPPOLYTEXTW NPPOLYTEXT;
+typedef LPPOLYTEXTW LPPOLYTEXT;
+#else
+typedef POLYTEXTA POLYTEXT;
+typedef PPOLYTEXTA PPOLYTEXT;
+typedef NPPOLYTEXTA NPPOLYTEXT;
+typedef LPPOLYTEXTA LPPOLYTEXT;
+#endif // UNICODE
+
+typedef struct _FIXED {
+ WORD fract;
+ short value;
+} FIXED;
+
+
+typedef struct _MAT2 {
+ FIXED eM11;
+ FIXED eM12;
+ FIXED eM21;
+ FIXED eM22;
+} MAT2, FAR *LPMAT2;
+
+
+
+typedef struct _GLYPHMETRICS {
+ UINT gmBlackBoxX;
+ UINT gmBlackBoxY;
+ POINT gmptGlyphOrigin;
+ short gmCellIncX;
+ short gmCellIncY;
+} GLYPHMETRICS, FAR *LPGLYPHMETRICS;
+
+// GetGlyphOutline constants
+
+#define GGO_METRICS 0
+#define GGO_BITMAP 1
+#define GGO_NATIVE 2
+
+#if(WINVER >= 0x0400)
+#define GGO_GRAY2_BITMAP 4
+#define GGO_GRAY4_BITMAP 5
+#define GGO_GRAY8_BITMAP 6
+#define GGO_GLYPH_INDEX 0x0080
+#endif /* WINVER >= 0x0400 */
+
+#define TT_POLYGON_TYPE 24
+
+#define TT_PRIM_LINE 1
+#define TT_PRIM_QSPLINE 2
+
+typedef struct tagPOINTFX
+{
+ FIXED x;
+ FIXED y;
+} POINTFX, FAR* LPPOINTFX;
+
+typedef struct tagTTPOLYCURVE
+{
+ WORD wType;
+ WORD cpfx;
+ POINTFX apfx[1];
+} TTPOLYCURVE, FAR* LPTTPOLYCURVE;
+
+typedef struct tagTTPOLYGONHEADER
+{
+ DWORD cb;
+ DWORD dwType;
+ POINTFX pfxStart;
+} TTPOLYGONHEADER, FAR* LPTTPOLYGONHEADER;
+
+
+#if(WINVER >= 0x0400)
+#define GCP_DBCS 0x0001
+#define GCP_REORDER 0x0002
+#define GCP_USEKERNING 0x0008
+#define GCP_GLYPHSHAPE 0x0010
+#define GCP_LIGATE 0x0020
+////#define GCP_GLYPHINDEXING 0x0080
+#define GCP_DIACRITIC 0x0100
+#define GCP_KASHIDA 0x0400
+#define GCP_ERROR 0x8000
+#define FLI_MASK 0x103B
+
+#define GCP_JUSTIFY 0x00010000L
+////#define GCP_NODIACRITICS 0x00020000L
+#define FLI_GLYPHS 0x00040000L
+#define GCP_CLASSIN 0x00080000L
+#define GCP_MAXEXTENT 0x00100000L
+#define GCP_JUSTIFYIN 0x00200000L
+#define GCP_DISPLAYZWG 0x00400000L
+#define GCP_SYMSWAPOFF 0x00800000L
+#define GCP_NUMERICOVERRIDE 0x01000000L
+#define GCP_NEUTRALOVERRIDE 0x02000000L
+#define GCP_NUMERICSLATIN 0x04000000L
+#define GCP_NUMERICSLOCAL 0x08000000L
+
+#define GCPCLASS_LATIN 1
+#define GCPCLASS_HEBREW 2
+#define GCPCLASS_ARABIC 2
+#define GCPCLASS_NEUTRAL 3
+#define GCPCLASS_LOCALNUMBER 4
+#define GCPCLASS_LATINNUMBER 5
+#define GCPCLASS_LATINNUMERICTERMINATOR 6
+#define GCPCLASS_LATINNUMERICSEPARATOR 7
+#define GCPCLASS_NUMERICSEPARATOR 8
+#define GCPCLASS_PREBOUNDLTR 0x80
+#define GCPCLASS_PREBOUNDRTL 0x40
+#define GCPCLASS_POSTBOUNDLTR 0x20
+#define GCPCLASS_POSTBOUNDRTL 0x10
+
+#define GCPGLYPH_LINKBEFORE 0x8000
+#define GCPGLYPH_LINKAFTER 0x4000
+
+
+typedef struct tagGCP_RESULTSA
+ {
+ DWORD lStructSize;
+ LPSTR lpOutString;
+ UINT FAR *lpOrder;
+ int FAR *lpDx;
+ int FAR *lpCaretPos;
+ LPSTR lpClass;
+ LPWSTR lpGlyphs;
+ UINT nGlyphs;
+ int nMaxFit;
+ } GCP_RESULTSA, FAR* LPGCP_RESULTSA;
+typedef struct tagGCP_RESULTSW
+ {
+ DWORD lStructSize;
+ LPWSTR lpOutString;
+ UINT FAR *lpOrder;
+ int FAR *lpDx;
+ int FAR *lpCaretPos;
+ LPSTR lpClass;
+ LPWSTR lpGlyphs;
+ UINT nGlyphs;
+ int nMaxFit;
+ } GCP_RESULTSW, FAR* LPGCP_RESULTSW;
+#ifdef UNICODE
+typedef GCP_RESULTSW GCP_RESULTS;
+typedef LPGCP_RESULTSW LPGCP_RESULTS;
+#else
+typedef GCP_RESULTSA GCP_RESULTS;
+typedef LPGCP_RESULTSA LPGCP_RESULTS;
+#endif // UNICODE
+#endif /* WINVER >= 0x0400 */
+
+typedef struct _RASTERIZER_STATUS {
+ short nSize;
+ short wFlags;
+ short nLanguageID;
+} RASTERIZER_STATUS, FAR *LPRASTERIZER_STATUS;
+
+/* bits defined in wFlags of RASTERIZER_STATUS */
+#define TT_AVAILABLE 0x0001
+#define TT_ENABLED 0x0002
+
+/* Pixel format descriptor */
+typedef struct tagPIXELFORMATDESCRIPTOR
+{
+ WORD nSize;
+ WORD nVersion;
+ DWORD dwFlags;
+ BYTE iPixelType;
+ BYTE cColorBits;
+ BYTE cRedBits;
+ BYTE cRedShift;
+ BYTE cGreenBits;
+ BYTE cGreenShift;
+ BYTE cBlueBits;
+ BYTE cBlueShift;
+ BYTE cAlphaBits;
+ BYTE cAlphaShift;
+ BYTE cAccumBits;
+ BYTE cAccumRedBits;
+ BYTE cAccumGreenBits;
+ BYTE cAccumBlueBits;
+ BYTE cAccumAlphaBits;
+ BYTE cDepthBits;
+ BYTE cStencilBits;
+ BYTE cAuxBuffers;
+ BYTE iLayerType;
+ BYTE bReserved;
+ DWORD dwLayerMask;
+ DWORD dwVisibleMask;
+ DWORD dwDamageMask;
+} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, FAR *LPPIXELFORMATDESCRIPTOR;
+
+/* pixel types */
+#define PFD_TYPE_RGBA 0
+#define PFD_TYPE_COLORINDEX 1
+
+/* layer types */
+#define PFD_MAIN_PLANE 0
+#define PFD_OVERLAY_PLANE 1
+#define PFD_UNDERLAY_PLANE (-1)
+
+/* PIXELFORMATDESCRIPTOR flags */
+#define PFD_DOUBLEBUFFER 0x00000001
+#define PFD_STEREO 0x00000002
+#define PFD_DRAW_TO_WINDOW 0x00000004
+#define PFD_DRAW_TO_BITMAP 0x00000008
+#define PFD_SUPPORT_GDI 0x00000010
+#define PFD_SUPPORT_OPENGL 0x00000020
+#define PFD_GENERIC_FORMAT 0x00000040
+#define PFD_NEED_PALETTE 0x00000080
+#define PFD_NEED_SYSTEM_PALETTE 0x00000100
+#define PFD_SWAP_EXCHANGE 0x00000200
+#define PFD_SWAP_COPY 0x00000400
+#define PFD_SWAP_LAYER_BUFFERS 0x00000800
+#define PFD_GENERIC_ACCELERATED 0x00001000
+
+/* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */
+#define PFD_DEPTH_DONTCARE 0x20000000
+#define PFD_DOUBLEBUFFER_DONTCARE 0x40000000
+#define PFD_STEREO_DONTCARE 0x80000000
+
+#ifdef STRICT
+#if !defined(NOTEXTMETRIC)
+typedef int (CALLBACK* OLDFONTENUMPROCA)(CONST LOGFONTA *, CONST TEXTMETRICA *, DWORD, LPARAM);
+typedef int (CALLBACK* OLDFONTENUMPROCW)(CONST LOGFONTW *, CONST TEXTMETRICW *, DWORD, LPARAM);
+#ifdef UNICODE
+#define OLDFONTENUMPROC OLDFONTENUMPROCW
+#else
+#define OLDFONTENUMPROC OLDFONTENUMPROCA
+#endif // !UNICODE
+#else
+typedef int (CALLBACK* OLDFONTENUMPROCA)(CONST LOGFONTA * ,CONST VOID *, DWORD, LPARAM);
+typedef int (CALLBACK* OLDFONTENUMPROCW)(CONST LOGFONTW * ,CONST VOID *, DWORD, LPARAM);
+#ifdef UNICODE
+#define OLDFONTENUMPROC OLDFONTENUMPROCW
+#else
+#define OLDFONTENUMPROC OLDFONTENUMPROCA
+#endif // !UNICODE
+#endif
+
+typedef OLDFONTENUMPROCA FONTENUMPROCA;
+typedef OLDFONTENUMPROCW FONTENUMPROCW;
+#ifdef UNICODE
+typedef FONTENUMPROCW FONTENUMPROC;
+#else
+typedef FONTENUMPROCA FONTENUMPROC;
+#endif // UNICODE
+
+typedef int (CALLBACK* GOBJENUMPROC)(LPVOID, LPARAM);
+typedef VOID (CALLBACK* LINEDDAPROC)(int, int, LPARAM);
+#else
+typedef FARPROC OLDFONTENUMPROC;
+typedef FARPROC FONTENUMPROCA;
+typedef FARPROC FONTENUMPROCW;
+#ifdef UNICODE
+typedef FONTENUMPROCW FONTENUMPROC;
+#else
+typedef FONTENUMPROCA FONTENUMPROC;
+#endif // UNICODE
+typedef FARPROC GOBJENUMPROC;
+typedef FARPROC LINEDDAPROC;
+#endif
+
+WINGDIAPI int WINAPI AddFontResourceA(LPCSTR);
+WINGDIAPI int WINAPI AddFontResourceW(LPCWSTR);
+#ifdef UNICODE
+#define AddFontResource AddFontResourceW
+#else
+#define AddFontResource AddFontResourceA
+#endif // !UNICODE
+
+WINGDIAPI BOOL WINAPI AnimatePalette(HPALETTE, UINT, UINT, CONST PALETTEENTRY *);
+WINGDIAPI BOOL WINAPI Arc(HDC, int, int, int, int, int, int, int, int);
+WINGDIAPI BOOL WINAPI BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
+WINGDIAPI BOOL WINAPI CancelDC(HDC);
+WINGDIAPI BOOL WINAPI Chord(HDC, int, int, int, int, int, int, int, int);
+WINGDIAPI int WINAPI ChoosePixelFormat(HDC, CONST PIXELFORMATDESCRIPTOR *);
+WINGDIAPI HMETAFILE WINAPI CloseMetaFile(HDC);
+WINGDIAPI int WINAPI CombineRgn(HRGN, HRGN, HRGN, int);
+WINGDIAPI HMETAFILE WINAPI CopyMetaFileA(HMETAFILE, LPCSTR);
+WINGDIAPI HMETAFILE WINAPI CopyMetaFileW(HMETAFILE, LPCWSTR);
+#ifdef UNICODE
+#define CopyMetaFile CopyMetaFileW
+#else
+#define CopyMetaFile CopyMetaFileA
+#endif // !UNICODE
+WINGDIAPI HBITMAP WINAPI CreateBitmap(int, int, UINT, UINT, CONST VOID *);
+WINGDIAPI HBITMAP WINAPI CreateBitmapIndirect(CONST BITMAP *);
+WINGDIAPI HBRUSH WINAPI CreateBrushIndirect(CONST LOGBRUSH *);
+WINGDIAPI HBITMAP WINAPI CreateCompatibleBitmap(HDC, int, int);
+WINGDIAPI HBITMAP WINAPI CreateDiscardableBitmap(HDC, int, int);
+WINGDIAPI HDC WINAPI CreateCompatibleDC(HDC);
+WINGDIAPI HDC WINAPI CreateDCA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA *);
+WINGDIAPI HDC WINAPI CreateDCW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW *);
+#ifdef UNICODE
+#define CreateDC CreateDCW
+#else
+#define CreateDC CreateDCA
+#endif // !UNICODE
+WINGDIAPI HBITMAP WINAPI CreateDIBitmap(HDC, CONST BITMAPINFOHEADER *, DWORD, CONST VOID *, CONST BITMAPINFO *, UINT);
+WINGDIAPI HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL, UINT);
+WINGDIAPI HBRUSH WINAPI CreateDIBPatternBrushPt(CONST VOID *, UINT);
+WINGDIAPI HRGN WINAPI CreateEllipticRgn(int, int, int, int);
+WINGDIAPI HRGN WINAPI CreateEllipticRgnIndirect(CONST RECT *);
+WINGDIAPI HFONT WINAPI CreateFontIndirectA(CONST LOGFONTA *);
+WINGDIAPI HFONT WINAPI CreateFontIndirectW(CONST LOGFONTW *);
+#ifdef UNICODE
+#define CreateFontIndirect CreateFontIndirectW
+#else
+#define CreateFontIndirect CreateFontIndirectA
+#endif // !UNICODE
+WINGDIAPI HFONT WINAPI CreateFontA(int, int, int, int, int, DWORD,
+ DWORD, DWORD, DWORD, DWORD, DWORD,
+ DWORD, DWORD, LPCSTR);
+WINGDIAPI HFONT WINAPI CreateFontW(int, int, int, int, int, DWORD,
+ DWORD, DWORD, DWORD, DWORD, DWORD,
+ DWORD, DWORD, LPCWSTR);
+#ifdef UNICODE
+#define CreateFont CreateFontW
+#else
+#define CreateFont CreateFontA
+#endif // !UNICODE
+
+WINGDIAPI HBRUSH WINAPI CreateHatchBrush(int, COLORREF);
+WINGDIAPI HDC WINAPI CreateICA(LPCSTR, LPCSTR , LPCSTR , CONST DEVMODEA *);
+WINGDIAPI HDC WINAPI CreateICW(LPCWSTR, LPCWSTR , LPCWSTR , CONST DEVMODEW *);
+#ifdef UNICODE
+#define CreateIC CreateICW
+#else
+#define CreateIC CreateICA
+#endif // !UNICODE
+WINGDIAPI HDC WINAPI CreateMetaFileA(LPCSTR);
+WINGDIAPI HDC WINAPI CreateMetaFileW(LPCWSTR);
+#ifdef UNICODE
+#define CreateMetaFile CreateMetaFileW
+#else
+#define CreateMetaFile CreateMetaFileA
+#endif // !UNICODE
+WINGDIAPI HPALETTE WINAPI CreatePalette(CONST LOGPALETTE *);
+WINGDIAPI HPEN WINAPI CreatePen(int, int, COLORREF);
+WINGDIAPI HPEN WINAPI CreatePenIndirect(CONST LOGPEN *);
+WINGDIAPI HRGN WINAPI CreatePolyPolygonRgn(CONST POINT *, CONST INT *, int, int);
+WINGDIAPI HBRUSH WINAPI CreatePatternBrush(HBITMAP);
+WINGDIAPI HRGN WINAPI CreateRectRgn(int, int, int, int);
+WINGDIAPI HRGN WINAPI CreateRectRgnIndirect(CONST RECT *);
+WINGDIAPI HRGN WINAPI CreateRoundRectRgn(int, int, int, int, int, int);
+WINGDIAPI BOOL WINAPI CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR);
+WINGDIAPI BOOL WINAPI CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR);
+#ifdef UNICODE
+#define CreateScalableFontResource CreateScalableFontResourceW
+#else
+#define CreateScalableFontResource CreateScalableFontResourceA
+#endif // !UNICODE
+WINGDIAPI HBRUSH WINAPI CreateSolidBrush(COLORREF);
+
+WINGDIAPI BOOL WINAPI DeleteDC(HDC);
+WINGDIAPI BOOL WINAPI DeleteMetaFile(HMETAFILE);
+WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ);
+WINGDIAPI int WINAPI DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
+
+/* define types of pointers to ExtDeviceMode() and DeviceCapabilities()
+ * functions for Win 3.1 compatibility
+ */
+
+typedef UINT (CALLBACK* LPFNDEVMODE)(HWND, HMODULE, LPDEVMODE, LPSTR, LPSTR, LPDEVMODE, LPSTR, UINT);
+
+typedef DWORD (CALLBACK* LPFNDEVCAPS)(LPSTR, LPSTR, UINT, LPSTR, LPDEVMODE);
+
+/* mode selections for the device mode function */
+#define DM_UPDATE 1
+#define DM_COPY 2
+#define DM_PROMPT 4
+#define DM_MODIFY 8
+
+#define DM_IN_BUFFER DM_MODIFY
+#define DM_IN_PROMPT DM_PROMPT
+#define DM_OUT_BUFFER DM_COPY
+#define DM_OUT_DEFAULT DM_UPDATE
+
+/* device capabilities indices */
+#define DC_FIELDS 1
+#define DC_PAPERS 2
+#define DC_PAPERSIZE 3
+#define DC_MINEXTENT 4
+#define DC_MAXEXTENT 5
+#define DC_BINS 6
+#define DC_DUPLEX 7
+#define DC_SIZE 8
+#define DC_EXTRA 9
+#define DC_VERSION 10
+#define DC_DRIVER 11
+#define DC_BINNAMES 12
+#define DC_ENUMRESOLUTIONS 13
+#define DC_FILEDEPENDENCIES 14
+#define DC_TRUETYPE 15
+#define DC_PAPERNAMES 16
+#define DC_ORIENTATION 17
+#define DC_COPIES 18
+#if(WINVER >= 0x0400)
+#define DC_BINADJUST 19
+#define DC_EMF_COMPLIANT 20
+#define DC_DATATYPE_PRODUCED 21
+#define DC_COLLATE 22
+#endif /* WINVER >= 0x0400 */
+
+/* bit fields of the return value (DWORD) for DC_TRUETYPE */
+#define DCTT_BITMAP 0x0000001L
+#define DCTT_DOWNLOAD 0x0000002L
+#define DCTT_SUBDEV 0x0000004L
+#if(WINVER >= 0x0400)
+#define DCTT_DOWNLOAD_OUTLINE 0x0000008L
+
+/* return values for DC_BINADJUST */
+#define DCBA_FACEUPNONE 0x0000
+#define DCBA_FACEUPCENTER 0x0001
+#define DCBA_FACEUPLEFT 0x0002
+#define DCBA_FACEUPRIGHT 0x0003
+#define DCBA_FACEDOWNNONE 0x0100
+#define DCBA_FACEDOWNCENTER 0x0101
+#define DCBA_FACEDOWNLEFT 0x0102
+#define DCBA_FACEDOWNRIGHT 0x0103
+#endif /* WINVER >= 0x0400 */
+
+WINSPOOLAPI int WINAPI DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD,
+ LPSTR, CONST DEVMODEA *);
+WINSPOOLAPI int WINAPI DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD,
+ LPWSTR, CONST DEVMODEW *);
+#ifdef UNICODE
+#define DeviceCapabilities DeviceCapabilitiesW
+#else
+#define DeviceCapabilities DeviceCapabilitiesA
+#endif // !UNICODE
+
+WINGDIAPI int WINAPI DrawEscape(HDC, int, int, LPCSTR);
+WINGDIAPI BOOL WINAPI Ellipse(HDC, int, int, int, int);
+
+#if(WINVER >= 0x0400)
+WINGDIAPI int WINAPI EnumFontFamiliesExA(HDC, LPLOGFONTA,FONTENUMPROCA, LPARAM,DWORD);
+WINGDIAPI int WINAPI EnumFontFamiliesExW(HDC, LPLOGFONTW,FONTENUMPROCW, LPARAM,DWORD);
+#ifdef UNICODE
+#define EnumFontFamiliesEx EnumFontFamiliesExW
+#else
+#define EnumFontFamiliesEx EnumFontFamiliesExA
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+
+WINGDIAPI int WINAPI EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM);
+WINGDIAPI int WINAPI EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM);
+#ifdef UNICODE
+#define EnumFontFamilies EnumFontFamiliesW
+#else
+#define EnumFontFamilies EnumFontFamiliesA
+#endif // !UNICODE
+WINGDIAPI int WINAPI EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM);
+WINGDIAPI int WINAPI EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM);
+#ifdef UNICODE
+#define EnumFonts EnumFontsW
+#else
+#define EnumFonts EnumFontsA
+#endif // !UNICODE
+
+#ifdef STRICT
+WINGDIAPI int WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPARAM);
+#else
+WINGDIAPI int WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPVOID);
+#endif
+
+
+WINGDIAPI BOOL WINAPI EqualRgn(HRGN, HRGN);
+WINGDIAPI int WINAPI Escape(HDC, int, int, LPCSTR, LPVOID);
+WINGDIAPI int WINAPI ExtEscape(HDC, int, int, LPCSTR, int, LPSTR);
+WINGDIAPI int WINAPI ExcludeClipRect(HDC, int, int, int, int);
+WINGDIAPI HRGN WINAPI ExtCreateRegion(CONST XFORM *, DWORD, CONST RGNDATA *);
+WINGDIAPI BOOL WINAPI ExtFloodFill(HDC, int, int, COLORREF, UINT);
+WINGDIAPI BOOL WINAPI FillRgn(HDC, HRGN, HBRUSH);
+WINGDIAPI BOOL WINAPI FloodFill(HDC, int, int, COLORREF);
+WINGDIAPI BOOL WINAPI FrameRgn(HDC, HRGN, HBRUSH, int, int);
+WINGDIAPI int WINAPI GetROP2(HDC);
+WINGDIAPI BOOL WINAPI GetAspectRatioFilterEx(HDC, LPSIZE);
+WINGDIAPI COLORREF WINAPI GetBkColor(HDC);
+WINGDIAPI int WINAPI GetBkMode(HDC);
+WINGDIAPI LONG WINAPI GetBitmapBits(HBITMAP, LONG, LPVOID);
+WINGDIAPI BOOL WINAPI GetBitmapDimensionEx(HBITMAP, LPSIZE);
+WINGDIAPI UINT WINAPI GetBoundsRect(HDC, LPRECT, UINT);
+
+WINGDIAPI BOOL WINAPI GetBrushOrgEx(HDC, LPPOINT);
+
+WINGDIAPI BOOL WINAPI GetCharWidthA(HDC, UINT, UINT, LPINT);
+WINGDIAPI BOOL WINAPI GetCharWidthW(HDC, UINT, UINT, LPINT);
+#ifdef UNICODE
+#define GetCharWidth GetCharWidthW
+#else
+#define GetCharWidth GetCharWidthA
+#endif // !UNICODE
+WINGDIAPI BOOL WINAPI GetCharWidth32A(HDC, UINT, UINT, LPINT);
+WINGDIAPI BOOL WINAPI GetCharWidth32W(HDC, UINT, UINT, LPINT);
+#ifdef UNICODE
+#define GetCharWidth32 GetCharWidth32W
+#else
+#define GetCharWidth32 GetCharWidth32A
+#endif // !UNICODE
+WINGDIAPI BOOL APIENTRY GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT);
+WINGDIAPI BOOL APIENTRY GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT);
+#ifdef UNICODE
+#define GetCharWidthFloat GetCharWidthFloatW
+#else
+#define GetCharWidthFloat GetCharWidthFloatA
+#endif // !UNICODE
+
+WINGDIAPI BOOL APIENTRY GetCharABCWidthsA(HDC, UINT, UINT, LPABC);
+WINGDIAPI BOOL APIENTRY GetCharABCWidthsW(HDC, UINT, UINT, LPABC);
+#ifdef UNICODE
+#define GetCharABCWidths GetCharABCWidthsW
+#else
+#define GetCharABCWidths GetCharABCWidthsA
+#endif // !UNICODE
+WINGDIAPI BOOL APIENTRY GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT);
+WINGDIAPI BOOL APIENTRY GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT);
+#ifdef UNICODE
+#define GetCharABCWidthsFloat GetCharABCWidthsFloatW
+#else
+#define GetCharABCWidthsFloat GetCharABCWidthsFloatA
+#endif // !UNICODE
+
+WINGDIAPI int WINAPI GetClipBox(HDC, LPRECT);
+WINGDIAPI int WINAPI GetClipRgn(HDC, HRGN);
+WINGDIAPI int WINAPI GetMetaRgn(HDC, HRGN);
+WINGDIAPI HGDIOBJ WINAPI GetCurrentObject(HDC, UINT);
+WINGDIAPI BOOL WINAPI GetCurrentPositionEx(HDC, LPPOINT);
+WINGDIAPI int WINAPI GetDeviceCaps(HDC, int);
+WINGDIAPI int WINAPI GetDIBits(HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT);
+WINGDIAPI DWORD WINAPI GetFontData(HDC, DWORD, DWORD, LPVOID, DWORD);
+WINGDIAPI DWORD WINAPI GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST MAT2 *);
+WINGDIAPI DWORD WINAPI GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, CONST MAT2 *);
+#ifdef UNICODE
+#define GetGlyphOutline GetGlyphOutlineW
+#else
+#define GetGlyphOutline GetGlyphOutlineA
+#endif // !UNICODE
+WINGDIAPI int WINAPI GetGraphicsMode(HDC);
+WINGDIAPI int WINAPI GetMapMode(HDC);
+WINGDIAPI UINT WINAPI GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID);
+WINGDIAPI HMETAFILE WINAPI GetMetaFileA(LPCSTR);
+WINGDIAPI HMETAFILE WINAPI GetMetaFileW(LPCWSTR);
+#ifdef UNICODE
+#define GetMetaFile GetMetaFileW
+#else
+#define GetMetaFile GetMetaFileA
+#endif // !UNICODE
+WINGDIAPI COLORREF WINAPI GetNearestColor(HDC, COLORREF);
+WINGDIAPI UINT WINAPI GetNearestPaletteIndex(HPALETTE, COLORREF);
+WINGDIAPI DWORD WINAPI GetObjectType(HGDIOBJ h);
+
+#ifndef NOTEXTMETRIC
+
+WINGDIAPI UINT APIENTRY GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA);
+WINGDIAPI UINT APIENTRY GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW);
+#ifdef UNICODE
+#define GetOutlineTextMetrics GetOutlineTextMetricsW
+#else
+#define GetOutlineTextMetrics GetOutlineTextMetricsA
+#endif // !UNICODE
+
+#endif /* NOTEXTMETRIC */
+
+WINGDIAPI UINT WINAPI GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY);
+WINGDIAPI COLORREF WINAPI GetPixel(HDC, int, int);
+WINGDIAPI int WINAPI GetPixelFormat(HDC);
+WINGDIAPI int WINAPI GetPolyFillMode(HDC);
+WINGDIAPI BOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS, UINT);
+WINGDIAPI DWORD WINAPI GetRegionData(HRGN, DWORD, LPRGNDATA);
+WINGDIAPI int WINAPI GetRgnBox(HRGN, LPRECT);
+WINGDIAPI HGDIOBJ WINAPI GetStockObject(int);
+WINGDIAPI int WINAPI GetStretchBltMode(HDC);
+WINGDIAPI UINT WINAPI GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY);
+WINGDIAPI UINT WINAPI GetSystemPaletteUse(HDC);
+WINGDIAPI int WINAPI GetTextCharacterExtra(HDC);
+WINGDIAPI UINT WINAPI GetTextAlign(HDC);
+WINGDIAPI COLORREF WINAPI GetTextColor(HDC);
+
+WINGDIAPI BOOL APIENTRY GetTextExtentPointA(
+ HDC,
+ LPCSTR,
+ int,
+ LPSIZE
+ );
+WINGDIAPI BOOL APIENTRY GetTextExtentPointW(
+ HDC,
+ LPCWSTR,
+ int,
+ LPSIZE
+ );
+#ifdef UNICODE
+#define GetTextExtentPoint GetTextExtentPointW
+#else
+#define GetTextExtentPoint GetTextExtentPointA
+#endif // !UNICODE
+
+WINGDIAPI BOOL APIENTRY GetTextExtentPoint32A(
+ HDC,
+ LPCSTR,
+ int,
+ LPSIZE
+ );
+WINGDIAPI BOOL APIENTRY GetTextExtentPoint32W(
+ HDC,
+ LPCWSTR,
+ int,
+ LPSIZE
+ );
+#ifdef UNICODE
+#define GetTextExtentPoint32 GetTextExtentPoint32W
+#else
+#define GetTextExtentPoint32 GetTextExtentPoint32A
+#endif // !UNICODE
+
+WINGDIAPI BOOL APIENTRY GetTextExtentExPointA(
+ HDC,
+ LPCSTR,
+ int,
+ int,
+ LPINT,
+ LPINT,
+ LPSIZE
+ );
+WINGDIAPI BOOL APIENTRY GetTextExtentExPointW(
+ HDC,
+ LPCWSTR,
+ int,
+ int,
+ LPINT,
+ LPINT,
+ LPSIZE
+ );
+#ifdef UNICODE
+#define GetTextExtentExPoint GetTextExtentExPointW
+#else
+#define GetTextExtentExPoint GetTextExtentExPointA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+WINGDIAPI int WINAPI GetTextCharset(HDC hdc);
+WINGDIAPI int WINAPI GetTextCharsetInfo(HDC hdc, LPFONTSIGNATURE lpSig, DWORD dwFlags);
+WINGDIAPI BOOL WINAPI TranslateCharsetInfo( DWORD FAR *lpSrc, LPCHARSETINFO lpCs, DWORD dwFlags);
+WINGDIAPI DWORD WINAPI GetFontLanguageInfo( HDC );
+WINGDIAPI DWORD WINAPI GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD);
+WINGDIAPI DWORD WINAPI GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD);
+#ifdef UNICODE
+#define GetCharacterPlacement GetCharacterPlacementW
+#else
+#define GetCharacterPlacement GetCharacterPlacementA
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+
+WINGDIAPI BOOL WINAPI GetViewportExtEx(HDC, LPSIZE);
+WINGDIAPI BOOL WINAPI GetViewportOrgEx(HDC, LPPOINT);
+WINGDIAPI BOOL WINAPI GetWindowExtEx(HDC, LPSIZE);
+WINGDIAPI BOOL WINAPI GetWindowOrgEx(HDC, LPPOINT);
+
+WINGDIAPI int WINAPI IntersectClipRect(HDC, int, int, int, int);
+WINGDIAPI BOOL WINAPI InvertRgn(HDC, HRGN);
+WINGDIAPI BOOL WINAPI LineDDA(int, int, int, int, LINEDDAPROC, LPARAM);
+WINGDIAPI BOOL WINAPI LineTo(HDC, int, int);
+WINGDIAPI BOOL WINAPI MaskBlt(HDC, int, int, int, int,
+ HDC, int, int, HBITMAP, int, int, DWORD);
+WINGDIAPI BOOL WINAPI PlgBlt(HDC, CONST POINT *, HDC, int, int, int,
+ int, HBITMAP, int, int);
+
+WINGDIAPI int WINAPI OffsetClipRgn(HDC, int, int);
+WINGDIAPI int WINAPI OffsetRgn(HRGN, int, int);
+WINGDIAPI BOOL WINAPI PatBlt(HDC, int, int, int, int, DWORD);
+WINGDIAPI BOOL WINAPI Pie(HDC, int, int, int, int, int, int, int, int);
+WINGDIAPI BOOL WINAPI PlayMetaFile(HDC, HMETAFILE);
+WINGDIAPI BOOL WINAPI PaintRgn(HDC, HRGN);
+WINGDIAPI BOOL WINAPI PolyPolygon(HDC, CONST POINT *, CONST INT *, int);
+WINGDIAPI BOOL WINAPI PtInRegion(HRGN, int, int);
+WINGDIAPI BOOL WINAPI PtVisible(HDC, int, int);
+WINGDIAPI BOOL WINAPI RectInRegion(HRGN, CONST RECT *);
+WINGDIAPI BOOL WINAPI RectVisible(HDC, CONST RECT *);
+WINGDIAPI BOOL WINAPI Rectangle(HDC, int, int, int, int);
+WINGDIAPI BOOL WINAPI RestoreDC(HDC, int);
+WINGDIAPI HDC WINAPI ResetDCA(HDC, CONST DEVMODEA *);
+WINGDIAPI HDC WINAPI ResetDCW(HDC, CONST DEVMODEW *);
+#ifdef UNICODE
+#define ResetDC ResetDCW
+#else
+#define ResetDC ResetDCA
+#endif // !UNICODE
+WINGDIAPI UINT WINAPI RealizePalette(HDC);
+WINGDIAPI BOOL WINAPI RemoveFontResourceA(LPCSTR);
+WINGDIAPI BOOL WINAPI RemoveFontResourceW(LPCWSTR);
+#ifdef UNICODE
+#define RemoveFontResource RemoveFontResourceW
+#else
+#define RemoveFontResource RemoveFontResourceA
+#endif // !UNICODE
+WINGDIAPI BOOL WINAPI RoundRect(HDC, int, int, int, int, int, int);
+WINGDIAPI BOOL WINAPI ResizePalette(HPALETTE, UINT);
+
+WINGDIAPI int WINAPI SaveDC(HDC);
+WINGDIAPI int WINAPI SelectClipRgn(HDC, HRGN);
+WINGDIAPI int WINAPI ExtSelectClipRgn(HDC, HRGN, int);
+WINGDIAPI int WINAPI SetMetaRgn(HDC);
+WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);
+WINGDIAPI HPALETTE WINAPI SelectPalette(HDC, HPALETTE, BOOL);
+WINGDIAPI COLORREF WINAPI SetBkColor(HDC, COLORREF);
+WINGDIAPI int WINAPI SetBkMode(HDC, int);
+WINGDIAPI LONG WINAPI SetBitmapBits(HBITMAP, DWORD, CONST VOID *);
+
+WINGDIAPI UINT WINAPI SetBoundsRect(HDC, CONST RECT *, UINT);
+WINGDIAPI int WINAPI SetDIBits(HDC, HBITMAP, UINT, UINT, CONST VOID *, CONST BITMAPINFO *, UINT);
+WINGDIAPI int WINAPI SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int,
+ int, UINT, UINT, CONST VOID *, CONST BITMAPINFO *, UINT);
+WINGDIAPI DWORD WINAPI SetMapperFlags(HDC, DWORD);
+WINGDIAPI int WINAPI SetGraphicsMode(HDC hdc, int iMode);
+WINGDIAPI int WINAPI SetMapMode(HDC, int);
+WINGDIAPI HMETAFILE WINAPI SetMetaFileBitsEx(UINT, CONST BYTE *);
+WINGDIAPI UINT WINAPI SetPaletteEntries(HPALETTE, UINT, UINT, CONST PALETTEENTRY *);
+WINGDIAPI COLORREF WINAPI SetPixel(HDC, int, int, COLORREF);
+WINGDIAPI BOOL WINAPI SetPixelV(HDC, int, int, COLORREF);
+WINGDIAPI BOOL WINAPI SetPixelFormat(HDC, int, CONST PIXELFORMATDESCRIPTOR *);
+WINGDIAPI int WINAPI SetPolyFillMode(HDC, int);
+WINGDIAPI BOOL WINAPI StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
+WINGDIAPI BOOL WINAPI SetRectRgn(HRGN, int, int, int, int);
+WINGDIAPI int WINAPI StretchDIBits(HDC, int, int, int, int, int, int, int, int, CONST
+ VOID *, CONST BITMAPINFO *, UINT, DWORD);
+WINGDIAPI int WINAPI SetROP2(HDC, int);
+WINGDIAPI int WINAPI SetStretchBltMode(HDC, int);
+WINGDIAPI UINT WINAPI SetSystemPaletteUse(HDC, UINT);
+WINGDIAPI int WINAPI SetTextCharacterExtra(HDC, int);
+WINGDIAPI COLORREF WINAPI SetTextColor(HDC, COLORREF);
+WINGDIAPI UINT WINAPI SetTextAlign(HDC, UINT);
+WINGDIAPI BOOL WINAPI SetTextJustification(HDC, int, int);
+WINGDIAPI BOOL WINAPI UpdateColors(HDC);
+
+#ifndef NOMETAFILE
+
+WINGDIAPI BOOL WINAPI PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT);
+typedef int (CALLBACK* MFENUMPROC)(HDC, HANDLETABLE FAR*, METARECORD FAR*, int, LPARAM);
+WINGDIAPI BOOL WINAPI EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM);
+
+typedef int (CALLBACK* ENHMFENUMPROC)(HDC, HANDLETABLE FAR*, CONST ENHMETARECORD *, int, LPARAM);
+
+// Enhanced Metafile Function Declarations
+
+WINGDIAPI HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
+WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE, LPCSTR);
+WINGDIAPI HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR);
+#ifdef UNICODE
+#define CopyEnhMetaFile CopyEnhMetaFileW
+#else
+#define CopyEnhMetaFile CopyEnhMetaFileA
+#endif // !UNICODE
+WINGDIAPI HDC WINAPI CreateEnhMetaFileA(HDC, LPCSTR, CONST RECT *, LPCSTR);
+WINGDIAPI HDC WINAPI CreateEnhMetaFileW(HDC, LPCWSTR, CONST RECT *, LPCWSTR);
+#ifdef UNICODE
+#define CreateEnhMetaFile CreateEnhMetaFileW
+#else
+#define CreateEnhMetaFile CreateEnhMetaFileA
+#endif // !UNICODE
+WINGDIAPI BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE);
+WINGDIAPI BOOL WINAPI EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC,
+ LPVOID, CONST RECT *);
+WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
+WINGDIAPI HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
+#ifdef UNICODE
+#define GetEnhMetaFile GetEnhMetaFileW
+#else
+#define GetEnhMetaFile GetEnhMetaFileA
+#endif // !UNICODE
+WINGDIAPI UINT WINAPI GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE);
+WINGDIAPI UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR );
+WINGDIAPI UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR );
+#ifdef UNICODE
+#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionW
+#else
+#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionA
+#endif // !UNICODE
+WINGDIAPI UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER );
+WINGDIAPI UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY );
+WINGDIAPI UINT WINAPI GetEnhMetaFilePixelFormat(HENHMETAFILE, UINT,
+ PIXELFORMATDESCRIPTOR *);
+WINGDIAPI UINT WINAPI GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC);
+WINGDIAPI BOOL WINAPI PlayEnhMetaFile(HDC, HENHMETAFILE, CONST RECT *);
+WINGDIAPI BOOL WINAPI PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, CONST ENHMETARECORD *, UINT);
+WINGDIAPI HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT, CONST BYTE *);
+WINGDIAPI HENHMETAFILE WINAPI SetWinMetaFileBits(UINT, CONST BYTE *, HDC, CONST METAFILEPICT *);
+WINGDIAPI BOOL WINAPI GdiComment(HDC, UINT, CONST BYTE *);
+
+#endif /* NOMETAFILE */
+
+#ifndef NOTEXTMETRIC
+
+WINGDIAPI BOOL WINAPI GetTextMetricsA(HDC, LPTEXTMETRICA);
+WINGDIAPI BOOL WINAPI GetTextMetricsW(HDC, LPTEXTMETRICW);
+#ifdef UNICODE
+#define GetTextMetrics GetTextMetricsW
+#else
+#define GetTextMetrics GetTextMetricsA
+#endif // !UNICODE
+
+#endif
+
+/* new GDI */
+
+typedef struct tagDIBSECTION {
+ BITMAP dsBm;
+ BITMAPINFOHEADER dsBmih;
+ DWORD dsBitfields[3];
+ HANDLE dshSection;
+ DWORD dsOffset;
+} DIBSECTION, FAR *LPDIBSECTION, *PDIBSECTION;
+
+WINGDIAPI BOOL WINAPI AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT);
+WINGDIAPI BOOL WINAPI PolyPolyline(HDC, CONST POINT *, CONST DWORD *, DWORD);
+WINGDIAPI BOOL WINAPI GetWorldTransform(HDC, LPXFORM);
+WINGDIAPI BOOL WINAPI SetWorldTransform(HDC, CONST XFORM *);
+WINGDIAPI BOOL WINAPI ModifyWorldTransform(HDC, CONST XFORM *, DWORD);
+WINGDIAPI BOOL WINAPI CombineTransform(LPXFORM, CONST XFORM *, CONST XFORM *);
+WINGDIAPI HBITMAP WINAPI CreateDIBSection(HDC, CONST BITMAPINFO *, UINT, VOID **, HANDLE, DWORD);
+WINGDIAPI UINT WINAPI GetDIBColorTable(HDC, UINT, UINT, RGBQUAD *);
+WINGDIAPI UINT WINAPI SetDIBColorTable(HDC, UINT, UINT, CONST RGBQUAD *);
+
+/* Flags value for COLORADJUSTMENT */
+#define CA_NEGATIVE 0x0001
+#define CA_LOG_FILTER 0x0002
+
+/* IlluminantIndex values */
+#define ILLUMINANT_DEVICE_DEFAULT 0
+#define ILLUMINANT_A 1
+#define ILLUMINANT_B 2
+#define ILLUMINANT_C 3
+#define ILLUMINANT_D50 4
+#define ILLUMINANT_D55 5
+#define ILLUMINANT_D65 6
+#define ILLUMINANT_D75 7
+#define ILLUMINANT_F2 8
+#define ILLUMINANT_MAX_INDEX ILLUMINANT_F2
+
+#define ILLUMINANT_TUNGSTEN ILLUMINANT_A
+#define ILLUMINANT_DAYLIGHT ILLUMINANT_C
+#define ILLUMINANT_FLUORESCENT ILLUMINANT_F2
+#define ILLUMINANT_NTSC ILLUMINANT_C
+
+/* Min and max for RedGamma, GreenGamma, BlueGamma */
+#define RGB_GAMMA_MIN (WORD)02500
+#define RGB_GAMMA_MAX (WORD)65000
+
+/* Min and max for ReferenceBlack and ReferenceWhite */
+#define REFERENCE_WHITE_MIN (WORD)6000
+#define REFERENCE_WHITE_MAX (WORD)10000
+#define REFERENCE_BLACK_MIN (WORD)0
+#define REFERENCE_BLACK_MAX (WORD)4000
+
+/* Min and max for Contrast, Brightness, Colorfulness, RedGreenTint */
+#define COLOR_ADJ_MIN (SHORT)-100
+#define COLOR_ADJ_MAX (SHORT)100
+
+typedef struct tagCOLORADJUSTMENT {
+ WORD caSize;
+ WORD caFlags;
+ WORD caIlluminantIndex;
+ WORD caRedGamma;
+ WORD caGreenGamma;
+ WORD caBlueGamma;
+ WORD caReferenceBlack;
+ WORD caReferenceWhite;
+ SHORT caContrast;
+ SHORT caBrightness;
+ SHORT caColorfulness;
+ SHORT caRedGreenTint;
+} COLORADJUSTMENT, *PCOLORADJUSTMENT, FAR *LPCOLORADJUSTMENT;
+
+WINGDIAPI BOOL WINAPI SetColorAdjustment(HDC, CONST COLORADJUSTMENT *);
+WINGDIAPI BOOL WINAPI GetColorAdjustment(HDC, LPCOLORADJUSTMENT);
+WINGDIAPI HPALETTE WINAPI CreateHalftonePalette(HDC);
+
+#ifdef STRICT
+typedef BOOL (CALLBACK* ABORTPROC)(HDC, int);
+#else
+typedef FARPROC ABORTPROC;
+#endif
+
+typedef struct _DOCINFOA {
+ int cbSize;
+ LPCSTR lpszDocName;
+ LPCSTR lpszOutput;
+#if (WINVER >= 0x0400)
+ LPCSTR lpszDatatype;
+ DWORD fwType;
+#endif /* WINVER */
+} DOCINFOA, *LPDOCINFOA;
+typedef struct _DOCINFOW {
+ int cbSize;
+ LPCWSTR lpszDocName;
+ LPCWSTR lpszOutput;
+#if (WINVER >= 0x0400)
+ LPCWSTR lpszDatatype;
+ DWORD fwType;
+#endif /* WINVER */
+} DOCINFOW, *LPDOCINFOW;
+#ifdef UNICODE
+typedef DOCINFOW DOCINFO;
+typedef LPDOCINFOW LPDOCINFO;
+#else
+typedef DOCINFOA DOCINFO;
+typedef LPDOCINFOA LPDOCINFO;
+#endif // UNICODE
+
+#if(WINVER >= 0x0400)
+#define DI_APPBANDING 0x0001
+#endif /* WINVER >= 0x0400 */
+
+WINGDIAPI int WINAPI StartDocA(HDC, CONST DOCINFOA *);
+WINGDIAPI int WINAPI StartDocW(HDC, CONST DOCINFOW *);
+#ifdef UNICODE
+#define StartDoc StartDocW
+#else
+#define StartDoc StartDocA
+#endif // !UNICODE
+WINGDIAPI int WINAPI EndDoc(HDC);
+WINGDIAPI int WINAPI StartPage(HDC);
+WINGDIAPI int WINAPI EndPage(HDC);
+WINGDIAPI int WINAPI AbortDoc(HDC);
+WINGDIAPI int WINAPI SetAbortProc(HDC, ABORTPROC);
+
+WINGDIAPI BOOL WINAPI AbortPath(HDC);
+WINGDIAPI BOOL WINAPI ArcTo(HDC, int, int, int, int, int, int,int, int);
+WINGDIAPI BOOL WINAPI BeginPath(HDC);
+WINGDIAPI BOOL WINAPI CloseFigure(HDC);
+WINGDIAPI BOOL WINAPI EndPath(HDC);
+WINGDIAPI BOOL WINAPI FillPath(HDC);
+WINGDIAPI BOOL WINAPI FlattenPath(HDC);
+WINGDIAPI int WINAPI GetPath(HDC, LPPOINT, LPBYTE, int);
+WINGDIAPI HRGN WINAPI PathToRegion(HDC);
+WINGDIAPI BOOL WINAPI PolyDraw(HDC, CONST POINT *, CONST BYTE *, int);
+WINGDIAPI BOOL WINAPI SelectClipPath(HDC, int);
+WINGDIAPI int WINAPI SetArcDirection(HDC, int);
+WINGDIAPI BOOL WINAPI SetMiterLimit(HDC, FLOAT, PFLOAT);
+WINGDIAPI BOOL WINAPI StrokeAndFillPath(HDC);
+WINGDIAPI BOOL WINAPI StrokePath(HDC);
+WINGDIAPI BOOL WINAPI WidenPath(HDC);
+WINGDIAPI HPEN WINAPI ExtCreatePen(DWORD, DWORD, CONST LOGBRUSH *, DWORD, CONST DWORD *);
+WINGDIAPI BOOL WINAPI GetMiterLimit(HDC, PFLOAT);
+WINGDIAPI int WINAPI GetArcDirection(HDC);
+
+WINGDIAPI int WINAPI GetObjectA(HGDIOBJ, int, LPVOID);
+WINGDIAPI int WINAPI GetObjectW(HGDIOBJ, int, LPVOID);
+#ifdef UNICODE
+#define GetObject GetObjectW
+#else
+#define GetObject GetObjectA
+#endif // !UNICODE
+WINGDIAPI BOOL WINAPI MoveToEx(HDC, int, int, LPPOINT);
+WINGDIAPI BOOL WINAPI TextOutA(HDC, int, int, LPCSTR, int);
+WINGDIAPI BOOL WINAPI TextOutW(HDC, int, int, LPCWSTR, int);
+#ifdef UNICODE
+#define TextOut TextOutW
+#else
+#define TextOut TextOutA
+#endif // !UNICODE
+WINGDIAPI BOOL WINAPI ExtTextOutA(HDC, int, int, UINT, CONST RECT *,LPCSTR, UINT, CONST INT *);
+WINGDIAPI BOOL WINAPI ExtTextOutW(HDC, int, int, UINT, CONST RECT *,LPCWSTR, UINT, CONST INT *);
+#ifdef UNICODE
+#define ExtTextOut ExtTextOutW
+#else
+#define ExtTextOut ExtTextOutA
+#endif // !UNICODE
+WINGDIAPI BOOL WINAPI PolyTextOutA(HDC, CONST POLYTEXTA *, int);
+WINGDIAPI BOOL WINAPI PolyTextOutW(HDC, CONST POLYTEXTW *, int);
+#ifdef UNICODE
+#define PolyTextOut PolyTextOutW
+#else
+#define PolyTextOut PolyTextOutA
+#endif // !UNICODE
+
+WINGDIAPI HRGN WINAPI CreatePolygonRgn(CONST POINT *, int, int);
+WINGDIAPI BOOL WINAPI DPtoLP(HDC, LPPOINT, int);
+WINGDIAPI BOOL WINAPI LPtoDP(HDC, LPPOINT, int);
+WINGDIAPI BOOL WINAPI Polygon(HDC, CONST POINT *, int);
+WINGDIAPI BOOL WINAPI Polyline(HDC, CONST POINT *, int);
+
+WINGDIAPI BOOL WINAPI PolyBezier(HDC, CONST POINT *, DWORD);
+WINGDIAPI BOOL WINAPI PolyBezierTo(HDC, CONST POINT *, DWORD);
+WINGDIAPI BOOL WINAPI PolylineTo(HDC, CONST POINT *, DWORD);
+
+WINGDIAPI BOOL WINAPI SetViewportExtEx(HDC, int, int, LPSIZE);
+WINGDIAPI BOOL WINAPI SetViewportOrgEx(HDC, int, int, LPPOINT);
+WINGDIAPI BOOL WINAPI SetWindowExtEx(HDC, int, int, LPSIZE);
+WINGDIAPI BOOL WINAPI SetWindowOrgEx(HDC, int, int, LPPOINT);
+
+WINGDIAPI BOOL WINAPI OffsetViewportOrgEx(HDC, int, int, LPPOINT);
+WINGDIAPI BOOL WINAPI OffsetWindowOrgEx(HDC, int, int, LPPOINT);
+WINGDIAPI BOOL WINAPI ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE);
+WINGDIAPI BOOL WINAPI ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE);
+WINGDIAPI BOOL WINAPI SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE);
+WINGDIAPI BOOL WINAPI SetBrushOrgEx(HDC, int, int, LPPOINT);
+
+WINGDIAPI int WINAPI GetTextFaceA(HDC, int, LPSTR);
+WINGDIAPI int WINAPI GetTextFaceW(HDC, int, LPWSTR);
+#ifdef UNICODE
+#define GetTextFace GetTextFaceW
+#else
+#define GetTextFace GetTextFaceA
+#endif // !UNICODE
+
+#define FONTMAPPER_MAX 10
+
+typedef struct tagKERNINGPAIR {
+ WORD wFirst;
+ WORD wSecond;
+ int iKernAmount;
+} KERNINGPAIR, *LPKERNINGPAIR;
+
+WINGDIAPI DWORD WINAPI GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR);
+WINGDIAPI DWORD WINAPI GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR);
+#ifdef UNICODE
+#define GetKerningPairs GetKerningPairsW
+#else
+#define GetKerningPairs GetKerningPairsA
+#endif // !UNICODE
+
+WINGDIAPI BOOL WINAPI GetDCOrgEx(HDC,LPPOINT);
+WINGDIAPI BOOL WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT);
+WINGDIAPI BOOL WINAPI UnrealizeObject(HGDIOBJ);
+
+WINGDIAPI BOOL WINAPI GdiFlush();
+WINGDIAPI DWORD WINAPI GdiSetBatchLimit(DWORD);
+WINGDIAPI DWORD WINAPI GdiGetBatchLimit();
+
+#if(WINVER >= 0x0400)
+
+#define ICM_OFF 1
+#define ICM_ON 2
+#define ICM_QUERY 3
+
+int WINAPI SetICMMode(HDC, int);
+BOOL WINAPI CheckColorsInGamut(HDC,LPVOID,LPVOID,DWORD);
+HANDLE WINAPI GetColorSpace(HDC);
+BOOL WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD);
+BOOL WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD);
+#ifdef UNICODE
+#define GetLogColorSpace GetLogColorSpaceW
+#else
+#define GetLogColorSpace GetLogColorSpaceA
+#endif // !UNICODE
+HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
+HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
+#ifdef UNICODE
+#define CreateColorSpace CreateColorSpaceW
+#else
+#define CreateColorSpace CreateColorSpaceA
+#endif // !UNICODE
+BOOL WINAPI SetColorSpace(HDC,HCOLORSPACE);
+BOOL WINAPI DeleteColorSpace(HCOLORSPACE);
+BOOL WINAPI GetICMProfileA(HDC,DWORD,LPSTR);
+BOOL WINAPI GetICMProfileW(HDC,DWORD,LPWSTR);
+#ifdef UNICODE
+#define GetICMProfile GetICMProfileW
+#else
+#define GetICMProfile GetICMProfileA
+#endif // !UNICODE
+BOOL WINAPI SetICMProfileA(HDC,LPSTR);
+BOOL WINAPI SetICMProfileW(HDC,LPWSTR);
+#ifdef UNICODE
+#define SetICMProfile SetICMProfileW
+#else
+#define SetICMProfile SetICMProfileA
+#endif // !UNICODE
+BOOL WINAPI GetDeviceGammaRamp(HDC,LPVOID);
+BOOL WINAPI SetDeviceGammaRamp(HDC,LPVOID);
+BOOL WINAPI ColorMatchToTarget(HDC,HDC,DWORD);
+typedef int (CALLBACK* ICMENUMPROCA)(LPSTR, LPARAM);
+typedef int (CALLBACK* ICMENUMPROCW)(LPWSTR, LPARAM);
+#ifdef UNICODE
+#define ICMENUMPROC ICMENUMPROCW
+#else
+#define ICMENUMPROC ICMENUMPROCA
+#endif // !UNICODE
+int WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM);
+int WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM);
+#ifdef UNICODE
+#define EnumICMProfiles EnumICMProfilesW
+#else
+#define EnumICMProfiles EnumICMProfilesA
+#endif // !UNICODE
+
+#endif /* WINVER >= 0x0400 */
+#ifndef NOMETAFILE
+
+// Enhanced metafile constants.
+
+#define ENHMETA_SIGNATURE 0x464D4520
+
+// Stock object flag used in the object handle index in the enhanced
+// metafile records.
+// E.g. The object handle index (META_STOCK_OBJECT | BLACK_BRUSH)
+// represents the stock object BLACK_BRUSH.
+
+#define ENHMETA_STOCK_OBJECT 0x80000000
+
+// Enhanced metafile record types.
+
+#define EMR_HEADER 1
+#define EMR_POLYBEZIER 2
+#define EMR_POLYGON 3
+#define EMR_POLYLINE 4
+#define EMR_POLYBEZIERTO 5
+#define EMR_POLYLINETO 6
+#define EMR_POLYPOLYLINE 7
+#define EMR_POLYPOLYGON 8
+#define EMR_SETWINDOWEXTEX 9
+#define EMR_SETWINDOWORGEX 10
+#define EMR_SETVIEWPORTEXTEX 11
+#define EMR_SETVIEWPORTORGEX 12
+#define EMR_SETBRUSHORGEX 13
+#define EMR_EOF 14
+#define EMR_SETPIXELV 15
+#define EMR_SETMAPPERFLAGS 16
+#define EMR_SETMAPMODE 17
+#define EMR_SETBKMODE 18
+#define EMR_SETPOLYFILLMODE 19
+#define EMR_SETROP2 20
+#define EMR_SETSTRETCHBLTMODE 21
+#define EMR_SETTEXTALIGN 22
+#define EMR_SETCOLORADJUSTMENT 23
+#define EMR_SETTEXTCOLOR 24
+#define EMR_SETBKCOLOR 25
+#define EMR_OFFSETCLIPRGN 26
+#define EMR_MOVETOEX 27
+#define EMR_SETMETARGN 28
+#define EMR_EXCLUDECLIPRECT 29
+#define EMR_INTERSECTCLIPRECT 30
+#define EMR_SCALEVIEWPORTEXTEX 31
+#define EMR_SCALEWINDOWEXTEX 32
+#define EMR_SAVEDC 33
+#define EMR_RESTOREDC 34
+#define EMR_SETWORLDTRANSFORM 35
+#define EMR_MODIFYWORLDTRANSFORM 36
+#define EMR_SELECTOBJECT 37
+#define EMR_CREATEPEN 38
+#define EMR_CREATEBRUSHINDIRECT 39
+#define EMR_DELETEOBJECT 40
+#define EMR_ANGLEARC 41
+#define EMR_ELLIPSE 42
+#define EMR_RECTANGLE 43
+#define EMR_ROUNDRECT 44
+#define EMR_ARC 45
+#define EMR_CHORD 46
+#define EMR_PIE 47
+#define EMR_SELECTPALETTE 48
+#define EMR_CREATEPALETTE 49
+#define EMR_SETPALETTEENTRIES 50
+#define EMR_RESIZEPALETTE 51
+#define EMR_REALIZEPALETTE 52
+#define EMR_EXTFLOODFILL 53
+#define EMR_LINETO 54
+#define EMR_ARCTO 55
+#define EMR_POLYDRAW 56
+#define EMR_SETARCDIRECTION 57
+#define EMR_SETMITERLIMIT 58
+#define EMR_BEGINPATH 59
+#define EMR_ENDPATH 60
+#define EMR_CLOSEFIGURE 61
+#define EMR_FILLPATH 62
+#define EMR_STROKEANDFILLPATH 63
+#define EMR_STROKEPATH 64
+#define EMR_FLATTENPATH 65
+#define EMR_WIDENPATH 66
+#define EMR_SELECTCLIPPATH 67
+#define EMR_ABORTPATH 68
+
+#define EMR_GDICOMMENT 70
+#define EMR_FILLRGN 71
+#define EMR_FRAMERGN 72
+#define EMR_INVERTRGN 73
+#define EMR_PAINTRGN 74
+#define EMR_EXTSELECTCLIPRGN 75
+#define EMR_BITBLT 76
+#define EMR_STRETCHBLT 77
+#define EMR_MASKBLT 78
+#define EMR_PLGBLT 79
+#define EMR_SETDIBITSTODEVICE 80
+#define EMR_STRETCHDIBITS 81
+#define EMR_EXTCREATEFONTINDIRECTW 82
+#define EMR_EXTTEXTOUTA 83
+#define EMR_EXTTEXTOUTW 84
+#define EMR_POLYBEZIER16 85
+#define EMR_POLYGON16 86
+#define EMR_POLYLINE16 87
+#define EMR_POLYBEZIERTO16 88
+#define EMR_POLYLINETO16 89
+#define EMR_POLYPOLYLINE16 90
+#define EMR_POLYPOLYGON16 91
+#define EMR_POLYDRAW16 92
+#define EMR_CREATEMONOBRUSH 93
+#define EMR_CREATEDIBPATTERNBRUSHPT 94
+#define EMR_EXTCREATEPEN 95
+#define EMR_POLYTEXTOUTA 96
+#define EMR_POLYTEXTOUTW 97
+#if(WINVER >= 0x0400)
+#define EMR_SETICMMODE 98
+#define EMR_CREATECOLORSPACE 99
+#define EMR_SETCOLORSPACE 100
+#define EMR_DELETECOLORSPACE 101
+#define EMR_GLSRECORD 102
+#define EMR_GLSBOUNDEDRECORD 103
+#define EMR_PIXELFORMAT 104
+#endif /* WINVER >= 0x0400 */
+
+#define EMR_MIN 1
+
+#if (WINVER >= 0x0400)
+#define EMR_MAX 104
+#else
+#define EMR_MAX 97
+#endif
+
+// Base record type for the enhanced metafile.
+
+typedef struct tagEMR
+{
+ DWORD iType; // Enhanced metafile record type
+ DWORD nSize; // Length of the record in bytes.
+ // This must be a multiple of 4.
+} EMR, *PEMR;
+
+// Base text record type for the enhanced metafile.
+
+typedef struct tagEMRTEXT
+{
+ POINTL ptlReference;
+ DWORD nChars;
+ DWORD offString; // Offset to the string
+ DWORD fOptions;
+ RECTL rcl;
+ DWORD offDx; // Offset to the inter-character spacing array.
+ // This is always given.
+} EMRTEXT, *PEMRTEXT;
+
+// Record structures for the enhanced metafile.
+
+typedef struct tagABORTPATH
+{
+ EMR emr;
+} EMRABORTPATH, *PEMRABORTPATH,
+ EMRBEGINPATH, *PEMRBEGINPATH,
+ EMRENDPATH, *PEMRENDPATH,
+ EMRCLOSEFIGURE, *PEMRCLOSEFIGURE,
+ EMRFLATTENPATH, *PEMRFLATTENPATH,
+ EMRWIDENPATH, *PEMRWIDENPATH,
+ EMRSETMETARGN, *PEMRSETMETARGN,
+ EMRSAVEDC, *PEMRSAVEDC,
+ EMRREALIZEPALETTE, *PEMRREALIZEPALETTE;
+
+typedef struct tagEMRSELECTCLIPPATH
+{
+ EMR emr;
+ DWORD iMode;
+} EMRSELECTCLIPPATH, *PEMRSELECTCLIPPATH,
+ EMRSETBKMODE, *PEMRSETBKMODE,
+ EMRSETMAPMODE, *PEMRSETMAPMODE,
+ EMRSETPOLYFILLMODE, *PEMRSETPOLYFILLMODE,
+ EMRSETROP2, *PEMRSETROP2,
+ EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
+ EMRSETICMMODE, *PEMRSETICMMODE,
+ EMRSETTEXTALIGN, *PEMRSETTEXTALIGN;
+
+typedef struct tagEMRSETMITERLIMIT
+{
+ EMR emr;
+ FLOAT eMiterLimit;
+} EMRSETMITERLIMIT, *PEMRSETMITERLIMIT;
+
+typedef struct tagEMRRESTOREDC
+{
+ EMR emr;
+ LONG iRelative; // Specifies a relative instance
+} EMRRESTOREDC, *PEMRRESTOREDC;
+
+typedef struct tagEMRSETARCDIRECTION
+{
+ EMR emr;
+ DWORD iArcDirection; // Specifies the arc direction in the
+ // advanced graphics mode.
+} EMRSETARCDIRECTION, *PEMRSETARCDIRECTION;
+
+typedef struct tagEMRSETMAPPERFLAGS
+{
+ EMR emr;
+ DWORD dwFlags;
+} EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS;
+
+typedef struct tagEMRSETTEXTCOLOR
+{
+ EMR emr;
+ COLORREF crColor;
+} EMRSETBKCOLOR, *PEMRSETBKCOLOR,
+ EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR;
+
+typedef struct tagEMRSELECTOBJECT
+{
+ EMR emr;
+ DWORD ihObject; // Object handle index
+} EMRSELECTOBJECT, *PEMRSELECTOBJECT,
+ EMRDELETEOBJECT, *PEMRDELETEOBJECT;
+
+#if(WINVER >= 0x0400)
+typedef struct tagEMRSELECTCOLORSPACE
+{
+ EMR emr;
+ DWORD ihCS; // ColorSpace handle index
+} EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE,
+ EMRDELETECOLORSPACE, *PEMRDELETECOLORSPACE;
+#endif /* WINVER >= 0x0400 */
+
+typedef struct tagEMRSELECTPALETTE
+{
+ EMR emr;
+ DWORD ihPal; // Palette handle index, background mode only
+} EMRSELECTPALETTE, *PEMRSELECTPALETTE;
+
+typedef struct tagEMRRESIZEPALETTE
+{
+ EMR emr;
+ DWORD ihPal; // Palette handle index
+ DWORD cEntries;
+} EMRRESIZEPALETTE, *PEMRRESIZEPALETTE;
+
+typedef struct tagEMRSETPALETTEENTRIES
+{
+ EMR emr;
+ DWORD ihPal; // Palette handle index
+ DWORD iStart;
+ DWORD cEntries;
+ PALETTEENTRY aPalEntries[1];// The peFlags fields do not contain any flags
+} EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES;
+
+typedef struct tagEMRSETCOLORADJUSTMENT
+{
+ EMR emr;
+ COLORADJUSTMENT ColorAdjustment;
+} EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT;
+
+typedef struct tagEMRGDICOMMENT
+{
+ EMR emr;
+ DWORD cbData; // Size of data in bytes
+ BYTE Data[1];
+} EMRGDICOMMENT, *PEMRGDICOMMENT;
+
+typedef struct tagEMREOF
+{
+ EMR emr;
+ DWORD nPalEntries; // Number of palette entries
+ DWORD offPalEntries; // Offset to the palette entries
+ DWORD nSizeLast; // Same as nSize and must be the last DWORD
+ // of the record. The palette entries,
+ // if exist, precede this field.
+} EMREOF, *PEMREOF;
+
+typedef struct tagEMRLINETO
+{
+ EMR emr;
+ POINTL ptl;
+} EMRLINETO, *PEMRLINETO,
+ EMRMOVETOEX, *PEMRMOVETOEX;
+
+typedef struct tagEMROFFSETCLIPRGN
+{
+ EMR emr;
+ POINTL ptlOffset;
+} EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN;
+
+typedef struct tagEMRFILLPATH
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+} EMRFILLPATH, *PEMRFILLPATH,
+ EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH,
+ EMRSTROKEPATH, *PEMRSTROKEPATH;
+
+typedef struct tagEMREXCLUDECLIPRECT
+{
+ EMR emr;
+ RECTL rclClip;
+} EMREXCLUDECLIPRECT, *PEMREXCLUDECLIPRECT,
+ EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT;
+
+typedef struct tagEMRSETVIEWPORTORGEX
+{
+ EMR emr;
+ POINTL ptlOrigin;
+} EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX,
+ EMRSETWINDOWORGEX, *PEMRSETWINDOWORGEX,
+ EMRSETBRUSHORGEX, *PEMRSETBRUSHORGEX;
+
+typedef struct tagEMRSETVIEWPORTEXTEX
+{
+ EMR emr;
+ SIZEL szlExtent;
+} EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX,
+ EMRSETWINDOWEXTEX, *PEMRSETWINDOWEXTEX;
+
+typedef struct tagEMRSCALEVIEWPORTEXTEX
+{
+ EMR emr;
+ LONG xNum;
+ LONG xDenom;
+ LONG yNum;
+ LONG yDenom;
+} EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX,
+ EMRSCALEWINDOWEXTEX, *PEMRSCALEWINDOWEXTEX;
+
+typedef struct tagEMRSETWORLDTRANSFORM
+{
+ EMR emr;
+ XFORM xform;
+} EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM;
+
+typedef struct tagEMRMODIFYWORLDTRANSFORM
+{
+ EMR emr;
+ XFORM xform;
+ DWORD iMode;
+} EMRMODIFYWORLDTRANSFORM, *PEMRMODIFYWORLDTRANSFORM;
+
+typedef struct tagEMRSETPIXELV
+{
+ EMR emr;
+ POINTL ptlPixel;
+ COLORREF crColor;
+} EMRSETPIXELV, *PEMRSETPIXELV;
+
+typedef struct tagEMREXTFLOODFILL
+{
+ EMR emr;
+ POINTL ptlStart;
+ COLORREF crColor;
+ DWORD iMode;
+} EMREXTFLOODFILL, *PEMREXTFLOODFILL;
+
+typedef struct tagEMRELLIPSE
+{
+ EMR emr;
+ RECTL rclBox; // Inclusive-inclusive bounding rectangle
+} EMRELLIPSE, *PEMRELLIPSE,
+ EMRRECTANGLE, *PEMRRECTANGLE;
+
+typedef struct tagEMRROUNDRECT
+{
+ EMR emr;
+ RECTL rclBox; // Inclusive-inclusive bounding rectangle
+ SIZEL szlCorner;
+} EMRROUNDRECT, *PEMRROUNDRECT;
+
+typedef struct tagEMRARC
+{
+ EMR emr;
+ RECTL rclBox; // Inclusive-inclusive bounding rectangle
+ POINTL ptlStart;
+ POINTL ptlEnd;
+} EMRARC, *PEMRARC,
+ EMRARCTO, *PEMRARCTO,
+ EMRCHORD, *PEMRCHORD,
+ EMRPIE, *PEMRPIE;
+
+typedef struct tagEMRANGLEARC
+{
+ EMR emr;
+ POINTL ptlCenter;
+ DWORD nRadius;
+ FLOAT eStartAngle;
+ FLOAT eSweepAngle;
+} EMRANGLEARC, *PEMRANGLEARC;
+
+typedef struct tagEMRPOLYLINE
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD cptl;
+ POINTL aptl[1];
+} EMRPOLYLINE, *PEMRPOLYLINE,
+ EMRPOLYBEZIER, *PEMRPOLYBEZIER,
+ EMRPOLYGON, *PEMRPOLYGON,
+ EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO,
+ EMRPOLYLINETO, *PEMRPOLYLINETO;
+
+typedef struct tagEMRPOLYLINE16
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD cpts;
+ POINTS apts[1];
+} EMRPOLYLINE16, *PEMRPOLYLINE16,
+ EMRPOLYBEZIER16, *PEMRPOLYBEZIER16,
+ EMRPOLYGON16, *PEMRPOLYGON16,
+ EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16,
+ EMRPOLYLINETO16, *PEMRPOLYLINETO16;
+
+typedef struct tagEMRPOLYDRAW
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD cptl; // Number of points
+ POINTL aptl[1]; // Array of points
+ BYTE abTypes[1]; // Array of point types
+} EMRPOLYDRAW, *PEMRPOLYDRAW;
+
+typedef struct tagEMRPOLYDRAW16
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD cpts; // Number of points
+ POINTS apts[1]; // Array of points
+ BYTE abTypes[1]; // Array of point types
+} EMRPOLYDRAW16, *PEMRPOLYDRAW16;
+
+typedef struct tagEMRPOLYPOLYLINE
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD nPolys; // Number of polys
+ DWORD cptl; // Total number of points in all polys
+ DWORD aPolyCounts[1]; // Array of point counts for each poly
+ POINTL aptl[1]; // Array of points
+} EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE,
+ EMRPOLYPOLYGON, *PEMRPOLYPOLYGON;
+
+typedef struct tagEMRPOLYPOLYLINE16
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD nPolys; // Number of polys
+ DWORD cpts; // Total number of points in all polys
+ DWORD aPolyCounts[1]; // Array of point counts for each poly
+ POINTS apts[1]; // Array of points
+} EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16,
+ EMRPOLYPOLYGON16, *PEMRPOLYPOLYGON16;
+
+typedef struct tagEMRINVERTRGN
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD cbRgnData; // Size of region data in bytes
+ BYTE RgnData[1];
+} EMRINVERTRGN, *PEMRINVERTRGN,
+ EMRPAINTRGN, *PEMRPAINTRGN;
+
+typedef struct tagEMRFILLRGN
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD cbRgnData; // Size of region data in bytes
+ DWORD ihBrush; // Brush handle index
+ BYTE RgnData[1];
+} EMRFILLRGN, *PEMRFILLRGN;
+
+typedef struct tagEMRFRAMERGN
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD cbRgnData; // Size of region data in bytes
+ DWORD ihBrush; // Brush handle index
+ SIZEL szlStroke;
+ BYTE RgnData[1];
+} EMRFRAMERGN, *PEMRFRAMERGN;
+
+typedef struct tagEMREXTSELECTCLIPRGN
+{
+ EMR emr;
+ DWORD cbRgnData; // Size of region data in bytes
+ DWORD iMode;
+ BYTE RgnData[1];
+} EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN;
+
+typedef struct tagEMREXTTEXTOUTA
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD iGraphicsMode; // Current graphics mode
+ FLOAT exScale; // X and Y scales from Page units to .01mm units
+ FLOAT eyScale; // if graphics mode is GM_COMPATIBLE.
+ EMRTEXT emrtext; // This is followed by the string and spacing
+ // array
+} EMREXTTEXTOUTA, *PEMREXTTEXTOUTA,
+ EMREXTTEXTOUTW, *PEMREXTTEXTOUTW;
+
+typedef struct tagEMRPOLYTEXTOUTA
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ DWORD iGraphicsMode; // Current graphics mode
+ FLOAT exScale; // X and Y scales from Page units to .01mm units
+ FLOAT eyScale; // if graphics mode is GM_COMPATIBLE.
+ LONG cStrings;
+ EMRTEXT aemrtext[1]; // Array of EMRTEXT structures. This is
+ // followed by the strings and spacing arrays.
+} EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA,
+ EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW;
+
+typedef struct tagEMRBITBLT
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ LONG xDest;
+ LONG yDest;
+ LONG cxDest;
+ LONG cyDest;
+ DWORD dwRop;
+ LONG xSrc;
+ LONG ySrc;
+ XFORM xformSrc; // Source DC transform
+ COLORREF crBkColorSrc; // Source DC BkColor in RGB
+ DWORD iUsageSrc; // Source bitmap info color table usage
+ // (DIB_RGB_COLORS)
+ DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
+ DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
+ DWORD offBitsSrc; // Offset to the source bitmap bits
+ DWORD cbBitsSrc; // Size of the source bitmap bits
+} EMRBITBLT, *PEMRBITBLT;
+
+typedef struct tagEMRSTRETCHBLT
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ LONG xDest;
+ LONG yDest;
+ LONG cxDest;
+ LONG cyDest;
+ DWORD dwRop;
+ LONG xSrc;
+ LONG ySrc;
+ XFORM xformSrc; // Source DC transform
+ COLORREF crBkColorSrc; // Source DC BkColor in RGB
+ DWORD iUsageSrc; // Source bitmap info color table usage
+ // (DIB_RGB_COLORS)
+ DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
+ DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
+ DWORD offBitsSrc; // Offset to the source bitmap bits
+ DWORD cbBitsSrc; // Size of the source bitmap bits
+ LONG cxSrc;
+ LONG cySrc;
+} EMRSTRETCHBLT, *PEMRSTRETCHBLT;
+
+typedef struct tagEMRMASKBLT
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ LONG xDest;
+ LONG yDest;
+ LONG cxDest;
+ LONG cyDest;
+ DWORD dwRop;
+ LONG xSrc;
+ LONG ySrc;
+ XFORM xformSrc; // Source DC transform
+ COLORREF crBkColorSrc; // Source DC BkColor in RGB
+ DWORD iUsageSrc; // Source bitmap info color table usage
+ // (DIB_RGB_COLORS)
+ DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
+ DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
+ DWORD offBitsSrc; // Offset to the source bitmap bits
+ DWORD cbBitsSrc; // Size of the source bitmap bits
+ LONG xMask;
+ LONG yMask;
+ DWORD iUsageMask; // Mask bitmap info color table usage
+ DWORD offBmiMask; // Offset to the mask BITMAPINFO structure if any
+ DWORD cbBmiMask; // Size of the mask BITMAPINFO structure if any
+ DWORD offBitsMask; // Offset to the mask bitmap bits if any
+ DWORD cbBitsMask; // Size of the mask bitmap bits if any
+} EMRMASKBLT, *PEMRMASKBLT;
+
+typedef struct tagEMRPLGBLT
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ POINTL aptlDest[3];
+ LONG xSrc;
+ LONG ySrc;
+ LONG cxSrc;
+ LONG cySrc;
+ XFORM xformSrc; // Source DC transform
+ COLORREF crBkColorSrc; // Source DC BkColor in RGB
+ DWORD iUsageSrc; // Source bitmap info color table usage
+ // (DIB_RGB_COLORS)
+ DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
+ DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
+ DWORD offBitsSrc; // Offset to the source bitmap bits
+ DWORD cbBitsSrc; // Size of the source bitmap bits
+ LONG xMask;
+ LONG yMask;
+ DWORD iUsageMask; // Mask bitmap info color table usage
+ DWORD offBmiMask; // Offset to the mask BITMAPINFO structure if any
+ DWORD cbBmiMask; // Size of the mask BITMAPINFO structure if any
+ DWORD offBitsMask; // Offset to the mask bitmap bits if any
+ DWORD cbBitsMask; // Size of the mask bitmap bits if any
+} EMRPLGBLT, *PEMRPLGBLT;
+
+typedef struct tagEMRSETDIBITSTODEVICE
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ LONG xDest;
+ LONG yDest;
+ LONG xSrc;
+ LONG ySrc;
+ LONG cxSrc;
+ LONG cySrc;
+ DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
+ DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
+ DWORD offBitsSrc; // Offset to the source bitmap bits
+ DWORD cbBitsSrc; // Size of the source bitmap bits
+ DWORD iUsageSrc; // Source bitmap info color table usage
+ DWORD iStartScan;
+ DWORD cScans;
+} EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE;
+
+typedef struct tagEMRSTRETCHDIBITS
+{
+ EMR emr;
+ RECTL rclBounds; // Inclusive-inclusive bounds in device units
+ LONG xDest;
+ LONG yDest;
+ LONG xSrc;
+ LONG ySrc;
+ LONG cxSrc;
+ LONG cySrc;
+ DWORD offBmiSrc; // Offset to the source BITMAPINFO structure
+ DWORD cbBmiSrc; // Size of the source BITMAPINFO structure
+ DWORD offBitsSrc; // Offset to the source bitmap bits
+ DWORD cbBitsSrc; // Size of the source bitmap bits
+ DWORD iUsageSrc; // Source bitmap info color table usage
+ DWORD dwRop;
+ LONG cxDest;
+ LONG cyDest;
+} EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;
+
+typedef struct tagEMREXTCREATEFONTINDIRECTW
+{
+ EMR emr;
+ DWORD ihFont; // Font handle index
+ EXTLOGFONTW elfw;
+} EMREXTCREATEFONTINDIRECTW, *PEMREXTCREATEFONTINDIRECTW;
+
+typedef struct tagEMRCREATEPALETTE
+{
+ EMR emr;
+ DWORD ihPal; // Palette handle index
+ LOGPALETTE lgpl; // The peFlags fields in the palette entries
+ // do not contain any flags
+} EMRCREATEPALETTE, *PEMRCREATEPALETTE;
+
+#if(WINVER >= 0x0400)
+
+typedef struct tagEMRCREATECOLORSPACE
+{
+ EMR emr;
+ DWORD ihCS; // ColorSpace handle index
+ LOGCOLORSPACEW lcs;
+} EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE;
+
+#endif /* WINVER >= 0x0400 */
+
+typedef struct tagEMRCREATEPEN
+{
+ EMR emr;
+ DWORD ihPen; // Pen handle index
+ LOGPEN lopn;
+} EMRCREATEPEN, *PEMRCREATEPEN;
+
+typedef struct tagEMREXTCREATEPEN
+{
+ EMR emr;
+ DWORD ihPen; // Pen handle index
+ DWORD offBmi; // Offset to the BITMAPINFO structure if any
+ DWORD cbBmi; // Size of the BITMAPINFO structure if any
+ // The bitmap info is followed by the bitmap
+ // bits to form a packed DIB.
+ DWORD offBits; // Offset to the brush bitmap bits if any
+ DWORD cbBits; // Size of the brush bitmap bits if any
+ EXTLOGPEN elp; // The extended pen with the style array.
+} EMREXTCREATEPEN, *PEMREXTCREATEPEN;
+
+typedef struct tagEMRCREATEBRUSHINDIRECT
+{
+ EMR emr;
+ DWORD ihBrush; // Brush handle index
+ LOGBRUSH lb; // The style must be BS_SOLID, BS_HOLLOW,
+ // BS_NULL or BS_HATCHED.
+} EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT;
+
+typedef struct tagEMRCREATEMONOBRUSH
+{
+ EMR emr;
+ DWORD ihBrush; // Brush handle index
+ DWORD iUsage; // Bitmap info color table usage
+ DWORD offBmi; // Offset to the BITMAPINFO structure
+ DWORD cbBmi; // Size of the BITMAPINFO structure
+ DWORD offBits; // Offset to the bitmap bits
+ DWORD cbBits; // Size of the bitmap bits
+} EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH;
+
+typedef struct tagEMRCREATEDIBPATTERNBRUSHPT
+{
+ EMR emr;
+ DWORD ihBrush; // Brush handle index
+ DWORD iUsage; // Bitmap info color table usage
+ DWORD offBmi; // Offset to the BITMAPINFO structure
+ DWORD cbBmi; // Size of the BITMAPINFO structure
+ // The bitmap info is followed by the bitmap
+ // bits to form a packed DIB.
+ DWORD offBits; // Offset to the bitmap bits
+ DWORD cbBits; // Size of the bitmap bits
+} EMRCREATEDIBPATTERNBRUSHPT, *PEMRCREATEDIBPATTERNBRUSHPT;
+
+typedef struct tagEMRFORMAT
+{
+ DWORD dSignature; // Format signature, e.g. ENHMETA_SIGNATURE.
+ DWORD nVersion; // Format version number.
+ DWORD cbData; // Size of data in bytes.
+ DWORD offData; // Offset to data from GDICOMMENT_IDENTIFIER.
+ // It must begin at a DWORD offset.
+} EMRFORMAT, *PEMRFORMAT;
+
+typedef struct tagEMRGLSRECORD
+{
+ EMR emr;
+ DWORD cbData; // Size of data in bytes
+ BYTE Data[1];
+} EMRGLSRECORD, *PEMRGLSRECORD;
+
+typedef struct tagEMRGLSBOUNDEDRECORD
+{
+ EMR emr;
+ RECTL rclBounds; // Bounds in recording coordinates
+ DWORD cbData; // Size of data in bytes
+ BYTE Data[1];
+} EMRGLSBOUNDEDRECORD, *PEMRGLSBOUNDEDRECORD;
+
+typedef struct tagEMRPIXELFORMAT
+{
+ EMR emr;
+ PIXELFORMATDESCRIPTOR pfd;
+} EMRPIXELFORMAT, *PEMRPIXELFORMAT;
+
+#define GDICOMMENT_IDENTIFIER 0x43494447
+#define GDICOMMENT_WINDOWS_METAFILE 0x80000001
+#define GDICOMMENT_BEGINGROUP 0x00000002
+#define GDICOMMENT_ENDGROUP 0x00000003
+#define GDICOMMENT_MULTIFORMATS 0x40000004
+#define EPS_SIGNATURE 0x46535045
+
+#endif /* NOMETAFILE */
+
+
+// OpenGL wgl prototypes
+
+WINGDIAPI BOOL WINAPI wglCopyContext(HGLRC, HGLRC, UINT);
+WINGDIAPI HGLRC WINAPI wglCreateContext(HDC);
+WINGDIAPI HGLRC WINAPI wglCreateLayerContext(HDC, int);
+WINGDIAPI BOOL WINAPI wglDeleteContext(HGLRC);
+WINGDIAPI HGLRC WINAPI wglGetCurrentContext(VOID);
+WINGDIAPI HDC WINAPI wglGetCurrentDC(VOID);
+WINGDIAPI PROC WINAPI wglGetProcAddress(LPCSTR);
+WINGDIAPI BOOL WINAPI wglMakeCurrent(HDC, HGLRC);
+WINGDIAPI BOOL WINAPI wglShareLists(HGLRC, HGLRC);
+WINGDIAPI BOOL WINAPI wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD);
+WINGDIAPI BOOL WINAPI wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD);
+#ifdef UNICODE
+#define wglUseFontBitmaps wglUseFontBitmapsW
+#else
+#define wglUseFontBitmaps wglUseFontBitmapsA
+#endif // !UNICODE
+WINGDIAPI BOOL WINAPI SwapBuffers(HDC);
+
+typedef struct _POINTFLOAT {
+ FLOAT x;
+ FLOAT y;
+} POINTFLOAT, *PPOINTFLOAT;
+
+typedef struct _GLYPHMETRICSFLOAT {
+ FLOAT gmfBlackBoxX;
+ FLOAT gmfBlackBoxY;
+ POINTFLOAT gmfptGlyphOrigin;
+ FLOAT gmfCellIncX;
+ FLOAT gmfCellIncY;
+} GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, FAR *LPGLYPHMETRICSFLOAT;
+
+#define WGL_FONT_LINES 0
+#define WGL_FONT_POLYGONS 1
+WINGDIAPI BOOL WINAPI wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT,
+ FLOAT, int, LPGLYPHMETRICSFLOAT);
+WINGDIAPI BOOL WINAPI wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT,
+ FLOAT, int, LPGLYPHMETRICSFLOAT);
+#ifdef UNICODE
+#define wglUseFontOutlines wglUseFontOutlinesW
+#else
+#define wglUseFontOutlines wglUseFontOutlinesA
+#endif // !UNICODE
+
+/* Layer plane descriptor */
+typedef struct tagLAYERPLANEDESCRIPTOR { // lpd
+ WORD nSize;
+ WORD nVersion;
+ DWORD dwFlags;
+ BYTE iPixelType;
+ BYTE cColorBits;
+ BYTE cRedBits;
+ BYTE cRedShift;
+ BYTE cGreenBits;
+ BYTE cGreenShift;
+ BYTE cBlueBits;
+ BYTE cBlueShift;
+ BYTE cAlphaBits;
+ BYTE cAlphaShift;
+ BYTE cAccumBits;
+ BYTE cAccumRedBits;
+ BYTE cAccumGreenBits;
+ BYTE cAccumBlueBits;
+ BYTE cAccumAlphaBits;
+ BYTE cDepthBits;
+ BYTE cStencilBits;
+ BYTE cAuxBuffers;
+ BYTE iLayerPlane;
+ BYTE bReserved;
+ COLORREF crTransparent;
+} LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, FAR *LPLAYERPLANEDESCRIPTOR;
+
+/* LAYERPLANEDESCRIPTOR flags */
+#define LPD_DOUBLEBUFFER 0x00000001
+#define LPD_STEREO 0x00000002
+#define LPD_SUPPORT_GDI 0x00000010
+#define LPD_SUPPORT_OPENGL 0x00000020
+#define LPD_SHARE_DEPTH 0x00000040
+#define LPD_SHARE_STENCIL 0x00000080
+#define LPD_SHARE_ACCUM 0x00000100
+#define LPD_SWAP_EXCHANGE 0x00000200
+#define LPD_SWAP_COPY 0x00000400
+#define LPD_TRANSPARENT 0x00001000
+
+#define LPD_TYPE_RGBA 0
+#define LPD_TYPE_COLORINDEX 1
+
+/* wglSwapLayerBuffers flags */
+#define WGL_SWAP_MAIN_PLANE 0x00000001
+#define WGL_SWAP_OVERLAY1 0x00000002
+#define WGL_SWAP_OVERLAY2 0x00000004
+#define WGL_SWAP_OVERLAY3 0x00000008
+#define WGL_SWAP_OVERLAY4 0x00000010
+#define WGL_SWAP_OVERLAY5 0x00000020
+#define WGL_SWAP_OVERLAY6 0x00000040
+#define WGL_SWAP_OVERLAY7 0x00000080
+#define WGL_SWAP_OVERLAY8 0x00000100
+#define WGL_SWAP_OVERLAY9 0x00000200
+#define WGL_SWAP_OVERLAY10 0x00000400
+#define WGL_SWAP_OVERLAY11 0x00000800
+#define WGL_SWAP_OVERLAY12 0x00001000
+#define WGL_SWAP_OVERLAY13 0x00002000
+#define WGL_SWAP_OVERLAY14 0x00004000
+#define WGL_SWAP_OVERLAY15 0x00008000
+#define WGL_SWAP_UNDERLAY1 0x00010000
+#define WGL_SWAP_UNDERLAY2 0x00020000
+#define WGL_SWAP_UNDERLAY3 0x00040000
+#define WGL_SWAP_UNDERLAY4 0x00080000
+#define WGL_SWAP_UNDERLAY5 0x00100000
+#define WGL_SWAP_UNDERLAY6 0x00200000
+#define WGL_SWAP_UNDERLAY7 0x00400000
+#define WGL_SWAP_UNDERLAY8 0x00800000
+#define WGL_SWAP_UNDERLAY9 0x01000000
+#define WGL_SWAP_UNDERLAY10 0x02000000
+#define WGL_SWAP_UNDERLAY11 0x04000000
+#define WGL_SWAP_UNDERLAY12 0x08000000
+#define WGL_SWAP_UNDERLAY13 0x10000000
+#define WGL_SWAP_UNDERLAY14 0x20000000
+#define WGL_SWAP_UNDERLAY15 0x40000000
+
+WINGDIAPI BOOL WINAPI wglDescribeLayerPlane(HDC, int, int, UINT,
+ LPLAYERPLANEDESCRIPTOR);
+WINGDIAPI int WINAPI wglSetLayerPaletteEntries(HDC, int, int, int,
+ CONST COLORREF *);
+WINGDIAPI int WINAPI wglGetLayerPaletteEntries(HDC, int, int, int,
+ COLORREF *);
+WINGDIAPI BOOL WINAPI wglRealizeLayerPalette(HDC, int, BOOL);
+WINGDIAPI BOOL WINAPI wglSwapLayerBuffers(HDC, UINT);
+
+#endif /* NOGDI */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+
+#endif /* _WINGDI_ */
diff --git a/public/sdk/inc/wininet.h b/public/sdk/inc/wininet.h
new file mode 100644
index 000000000..8329a2ef4
--- /dev/null
+++ b/public/sdk/inc/wininet.h
@@ -0,0 +1,2510 @@
+/*++
+
+Copyright (c) 1995-1996 Microsoft Corporation
+
+Module Name:
+
+ wininet.h
+
+Abstract:
+
+ Contains manifests, macros, types and prototypes for Microsoft Windows
+ Internet Extensions
+
+--*/
+
+#if !defined(_WININET_)
+#define _WININET_
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#if !defined(_WINX32_)
+#define INTERNETAPI DECLSPEC_IMPORT
+#else
+#define INTERNETAPI
+#endif
+
+//
+// internet types
+//
+
+typedef LPVOID HINTERNET;
+typedef HINTERNET * LPHINTERNET;
+
+typedef WORD INTERNET_PORT;
+typedef INTERNET_PORT * LPINTERNET_PORT;
+
+//
+// Internet APIs
+//
+
+//
+// manifests
+//
+
+#define INTERNET_INVALID_PORT_NUMBER 0 // use the protocol-specific default
+
+#define INTERNET_DEFAULT_FTP_PORT 21 // default for FTP servers
+#define INTERNET_DEFAULT_GOPHER_PORT 70 // " " gopher "
+#define INTERNET_DEFAULT_HTTP_PORT 80 // " " HTTP "
+#define INTERNET_DEFAULT_HTTPS_PORT 443 // " " HTTPS "
+
+#define MAX_CACHE_ENTRY_INFO_SIZE 4096
+
+//
+// maximum field lengths (arbitrary)
+//
+
+#define INTERNET_MAX_HOST_NAME_LENGTH 256
+#define INTERNET_MAX_USER_NAME_LENGTH 128
+#define INTERNET_MAX_PASSWORD_LENGTH 128
+#define INTERNET_MAX_PORT_NUMBER_LENGTH 5 // INTERNET_PORT is unsigned short
+#define INTERNET_MAX_PORT_NUMBER_VALUE 65535 // maximum unsigned short value
+#define INTERNET_MAX_PATH_LENGTH 1024
+#define INTERNET_MAX_PROTOCOL_NAME "gopher" // longest protocol name
+#define INTERNET_MAX_URL_LENGTH ((sizeof(INTERNET_MAX_PROTOCOL_NAME) - 1) \
+ + sizeof("://") \
+ + INTERNET_MAX_PATH_LENGTH)
+
+//
+// values returned by InternetQueryOption() with INTERNET_OPTION_KEEP_CONNECTION:
+//
+
+#define INTERNET_KEEP_ALIVE_UNKNOWN ((DWORD)-1)
+#define INTERNET_KEEP_ALIVE_ENABLED 1
+#define INTERNET_KEEP_ALIVE_DISABLED 0
+
+//
+// flags returned by InternetQueryOption() with INTERNET_OPTION_REQUEST_FLAGS
+//
+
+#define INTERNET_REQFLAG_FROM_CACHE 0x00000001
+#define INTERNET_REQFLAG_ASYNC 0x00000002
+
+//
+// flags common to open functions (not InternetOpen()):
+//
+
+#define INTERNET_FLAG_RELOAD 0x80000000 // retrieve the original item
+
+//
+// flags for InternetOpenUrl():
+//
+
+#define INTERNET_FLAG_RAW_DATA 0x40000000 // receive the item as raw data
+#define INTERNET_FLAG_EXISTING_CONNECT 0x20000000 // do not create new connection object
+
+//
+// flags for InternetOpen():
+//
+
+#define INTERNET_FLAG_ASYNC 0x10000000 // this request is asynchronous (where supported)
+
+//
+// protocol-specific flags:
+//
+
+#define INTERNET_FLAG_PASSIVE 0x08000000 // used for FTP connections
+
+//
+// additional cache flags
+//
+
+#define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000 // don't write this item to the cache
+#define INTERNET_FLAG_DONT_CACHE INTERNET_FLAG_NO_CACHE_WRITE
+
+#define INTERNET_FLAG_MAKE_PERSISTENT 0x02000000 // make this item persistent in cache
+
+#define INTERNET_FLAG_OFFLINE 0x01000000 // use offline semantics
+
+//
+// additional flags
+//
+
+#define INTERNET_FLAG_SECURE 0x00800000 // use PCT/SSL if applicable (HTTP)
+
+#define INTERNET_FLAG_KEEP_CONNECTION 0x00400000 // use keep-alive semantics
+
+#define INTERNET_FLAG_NO_AUTO_REDIRECT 0x00200000 // don't handle redirections automatically
+
+#define INTERNET_FLAG_READ_PREFETCH 0x00100000 // do background read prefetch
+
+//
+// Security Ignore Flags, Allow HttpOpenRequest to overide
+// Secure Channel (SSL/PCT) failures of the following types.
+//
+
+#define INTERNET_FLAG_IGNORE_CERT_CN_INVALID 0x00001000 // bad common name in X509 Cert.
+
+#define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 0x00002000 // expired X509 Cert.
+
+#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS 0x00004000 // ex: http:// to https://
+
+#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP 0x00008000 // ex: https:// to http://
+
+//
+// flags for FTP
+//
+
+#define INTERNET_FLAG_TRANSFER_ASCII FTP_TRANSFER_TYPE_ASCII
+#define INTERNET_FLAG_TRANSFER_BINARY FTP_TRANSFER_TYPE_BINARY
+
+//
+// flags field masks
+//
+
+#define SECURITY_INTERNET_MASK (INTERNET_FLAG_IGNORE_CERT_CN_INVALID | \
+ INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | \
+ INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS | \
+ INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP )
+
+#define SECURITY_SET_MASK SECURITY_INTERNET_MASK
+
+#define INTERNET_FLAGS_MASK (INTERNET_FLAG_RELOAD \
+ | INTERNET_FLAG_RAW_DATA \
+ | INTERNET_FLAG_EXISTING_CONNECT \
+ | INTERNET_FLAG_ASYNC \
+ | INTERNET_FLAG_PASSIVE \
+ | INTERNET_FLAG_DONT_CACHE \
+ | INTERNET_FLAG_MAKE_PERSISTENT \
+ | INTERNET_FLAG_OFFLINE \
+ | INTERNET_FLAG_SECURE \
+ | INTERNET_FLAG_KEEP_CONNECTION \
+ | INTERNET_FLAG_NO_AUTO_REDIRECT \
+ | INTERNET_FLAG_READ_PREFETCH \
+ | SECURITY_INTERNET_MASK \
+ | INTERNET_FLAG_TRANSFER_ASCII \
+ | INTERNET_FLAG_TRANSFER_BINARY \
+ )
+
+#define INTERNET_OPTIONS_MASK (~INTERNET_FLAGS_MASK)
+
+//
+// INTERNET_NO_CALLBACK - if this value is presented as the dwContext parameter
+// then no call-backs will be made for that API
+//
+
+#define INTERNET_NO_CALLBACK 0
+
+//
+// structures/types
+//
+
+//
+// INTERNET_SCHEME - enumerated URL scheme type
+//
+
+typedef enum {
+ INTERNET_SCHEME_PARTIAL = -2,
+ INTERNET_SCHEME_UNKNOWN = -1,
+ INTERNET_SCHEME_DEFAULT = 0,
+ INTERNET_SCHEME_FTP,
+ INTERNET_SCHEME_GOPHER,
+ INTERNET_SCHEME_HTTP,
+ INTERNET_SCHEME_HTTPS,
+ INTERNET_SCHEME_FILE,
+ INTERNET_SCHEME_NEWS,
+ INTERNET_SCHEME_MAILTO,
+ INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP,
+ INTERNET_SCHEME_LAST = INTERNET_SCHEME_MAILTO
+} INTERNET_SCHEME, * LPINTERNET_SCHEME;
+
+//
+// INTERNET_ASYNC_RESULT - this structure is returned to the application via
+// the callback with INTERNET_STATUS_REQUEST_COMPLETE. It is not sufficient to
+// just return the result of the async operation. If the API failed then the
+// app cannot call GetLastError() because the thread context will be incorrect.
+// Both the value returned by the async API and any resultant error code are
+// made available. The app need not check dwError if dwResult indicates that
+// the API succeeded (in this case dwError will be ERROR_SUCCESS)
+//
+
+typedef struct {
+
+ //
+ // dwResult - the HINTERNET, DWORD or BOOL return code from an async API
+ //
+
+ DWORD dwResult;
+
+ //
+ // dwError - the error code if the API failed
+ //
+
+ DWORD dwError;
+} INTERNET_ASYNC_RESULT, * LPINTERNET_ASYNC_RESULT;
+
+//
+// INTERNET_PREFETCH_STATUS -
+//
+
+typedef struct {
+
+ //
+ // dwStatus - status of download. See INTERNET_PREFETCH_ flags
+ //
+
+ DWORD dwStatus;
+
+ //
+ // dwSize - size of file downloaded so far
+ //
+
+ DWORD dwSize;
+} INTERNET_PREFETCH_STATUS, * LPINTERNET_PREFETCH_STATUS;
+
+//
+// INTERNET_PREFETCH_STATUS - dwStatus values
+//
+
+#define INTERNET_PREFETCH_PROGRESS 0
+#define INTERNET_PREFETCH_COMPLETE 1
+#define INTERNET_PREFETCH_ABORTED 2
+
+//
+// INTERNET_PROXY_INFO - structure supplied with INTERNET_OPTION_PROXY to get/
+// set proxy information on a InternetOpen() handle
+//
+
+typedef struct {
+
+ //
+ // dwAccessType - INTERNET_OPEN_TYPE_DIRECT, INTERNET_OPEN_TYPE_PROXY, or
+ // INTERNET_OPEN_TYPE_PRECONFIG (set only)
+ //
+
+ DWORD dwAccessType;
+
+ //
+ // lpszProxy - proxy server list
+ //
+
+ LPCTSTR lpszProxy;
+
+ //
+ // lpszProxyBypass - proxy bypass list
+ //
+
+ LPCTSTR lpszProxyBypass;
+} INTERNET_PROXY_INFO, * LPINTERNET_PROXY_INFO;
+
+//
+// URL_COMPONENTS - the constituent parts of an URL. Used in InternetCrackUrl()
+// and InternetCreateUrl()
+//
+// For InternetCrackUrl(), if a pointer field and its corresponding length field
+// are both 0 then that component is not returned; If the pointer field is NULL
+// but the length field is not zero, then both the pointer and length fields are
+// returned; if both pointer and corresponding length fields are non-zero then
+// the pointer field points to a buffer where the component is copied. The
+// component may be un-escaped, depending on dwFlags
+//
+// For InternetCreateUrl(), the pointer fields should be NULL if the component
+// is not required. If the corresponding length field is zero then the pointer
+// field is the address of a zero-terminated string. If the length field is not
+// zero then it is the string length of the corresponding pointer field
+//
+
+typedef struct {
+ DWORD dwStructSize; // size of this structure. Used in version check
+ LPTSTR lpszScheme; // pointer to scheme name
+ DWORD dwSchemeLength; // length of scheme name
+ INTERNET_SCHEME nScheme; // enumerated scheme type (if known)
+ LPTSTR lpszHostName; // pointer to host name
+ DWORD dwHostNameLength; // length of host name
+ INTERNET_PORT nPort; // converted port number
+ LPTSTR lpszUserName; // pointer to user name
+ DWORD dwUserNameLength; // length of user name
+ LPTSTR lpszPassword; // pointer to password
+ DWORD dwPasswordLength; // length of password
+ LPTSTR lpszUrlPath; // pointer to URL-path
+ DWORD dwUrlPathLength; // length of URL-path
+ LPTSTR lpszExtraInfo; // pointer to extra information (e.g. ?foo or #foo)
+ DWORD dwExtraInfoLength; // length of extra information
+} URL_COMPONENTS, * LPURL_COMPONENTS;
+
+//
+// INTERNET_CERTIFICATE_INFO lpBuffer - contains the certificate returned from
+// the server
+//
+
+typedef struct {
+
+ //
+ // ftExpiry - date the certificate expires.
+ //
+
+ FILETIME ftExpiry;
+
+ //
+ // ftStart - date the certificate becomes valid.
+ //
+
+ FILETIME ftStart;
+
+ //
+ // lpszSubjectInfo - the name of organization, site, and server
+ // the cert. was issued for.
+ //
+
+ LPTSTR lpszSubjectInfo;
+
+ //
+ // lpszIssuerInfo - the name of orgainzation, site, and server
+ // the cert was issues by.
+ //
+
+ LPTSTR lpszIssuerInfo;
+
+ //
+ // lpszProtocolName - the name of the protocol used to provide the secure
+ // connection.
+ //
+
+ LPTSTR lpszProtocolName;
+
+ //
+ // lpszSignatureAlgName - the name of the algorithm used for signing
+ // the certificate.
+ //
+
+ LPTSTR lpszSignatureAlgName;
+
+ //
+ // lpszEncryptionAlgName - the name of the algorithm used for
+ // doing encryption over the secure channel (SSL/PCT) connection.
+ //
+
+ LPTSTR lpszEncryptionAlgName;
+
+ //
+ // dwKeySize - size of the key.
+ //
+
+ DWORD dwKeySize;
+
+} INTERNET_CERTIFICATE_INFO, * LPINTERNET_CERTIFICATE_INFO;
+
+//
+// prototypes
+//
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetTimeFromSystemTime(
+ IN CONST SYSTEMTIME *pst, // input GMT time
+ IN DWORD dwRFC, // RFC format
+ OUT LPSTR lpszTime, // output string buffer
+ IN DWORD cbTime // output buffer size
+ );
+
+//
+// constants for InternetTimeFromSystemTime
+//
+
+#define INTERNET_RFC1123_FORMAT 0
+#define INTERNET_RFC1123_BUFSIZE 30
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetCrackUrlA(
+ IN LPCSTR lpszUrl,
+ IN DWORD dwUrlLength,
+ IN DWORD dwFlags,
+ IN OUT LPURL_COMPONENTS lpUrlComponents
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetCrackUrlW(
+ IN LPCWSTR lpszUrl,
+ IN DWORD dwUrlLength,
+ IN DWORD dwFlags,
+ IN OUT LPURL_COMPONENTS lpUrlComponents
+ );
+#ifdef UNICODE
+#define InternetCrackUrl InternetCrackUrlW
+#else
+#define InternetCrackUrl InternetCrackUrlA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetCreateUrlA(
+ IN LPURL_COMPONENTS lpUrlComponents,
+ IN DWORD dwFlags,
+ OUT LPSTR lpszUrl,
+ IN OUT LPDWORD lpdwUrlLength
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetCreateUrlW(
+ IN LPURL_COMPONENTS lpUrlComponents,
+ IN DWORD dwFlags,
+ OUT LPWSTR lpszUrl,
+ IN OUT LPDWORD lpdwUrlLength
+ );
+#ifdef UNICODE
+#define InternetCreateUrl InternetCreateUrlW
+#else
+#define InternetCreateUrl InternetCreateUrlA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetCanonicalizeUrlA(
+ IN LPCSTR lpszUrl,
+ OUT LPSTR lpszBuffer,
+ IN OUT LPDWORD lpdwBufferLength,
+ IN DWORD dwFlags
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetCanonicalizeUrlW(
+ IN LPCWSTR lpszUrl,
+ OUT LPWSTR lpszBuffer,
+ IN OUT LPDWORD lpdwBufferLength,
+ IN DWORD dwFlags
+ );
+#ifdef UNICODE
+#define InternetCanonicalizeUrl InternetCanonicalizeUrlW
+#else
+#define InternetCanonicalizeUrl InternetCanonicalizeUrlA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetCombineUrlA(
+ IN LPCSTR lpszBaseUrl,
+ IN LPCSTR lpszRelativeUrl,
+ OUT LPSTR lpszBuffer,
+ IN OUT LPDWORD lpdwBufferLength,
+ IN DWORD dwFlags
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetCombineUrlW(
+ IN LPCWSTR lpszBaseUrl,
+ IN LPCWSTR lpszRelativeUrl,
+ OUT LPWSTR lpszBuffer,
+ IN OUT LPDWORD lpdwBufferLength,
+ IN DWORD dwFlags
+ );
+#ifdef UNICODE
+#define InternetCombineUrl InternetCombineUrlW
+#else
+#define InternetCombineUrl InternetCombineUrlA
+#endif // !UNICODE
+
+//
+// flags for InternetCrackUrl() and InternetCreateUrl()
+//
+
+#define ICU_ESCAPE 0x80000000 // (un)escape URL characters
+#define ICU_USERNAME 0x40000000 // use internal username & password
+
+//
+// flags for InternetCanonicalizeUrl() and InternetCombineUrl()
+//
+
+#define ICU_NO_ENCODE 0x20000000 // Don't convert unsafe characters to escape sequence
+#define ICU_DECODE 0x10000000 // Convert %XX escape sequences to characters
+#define ICU_NO_META 0x08000000 // Don't convert .. etc. meta path sequences
+#define ICU_ENCODE_SPACES_ONLY 0x04000000 // Encode spaces only
+
+INTERNETAPI
+HINTERNET
+WINAPI
+InternetOpenA(
+ IN LPCSTR lpszAgent,
+ IN DWORD dwAccessType,
+ IN LPCSTR lpszProxy OPTIONAL,
+ IN LPCSTR lpszProxyBypass OPTIONAL,
+ IN DWORD dwFlags
+ );
+INTERNETAPI
+HINTERNET
+WINAPI
+InternetOpenW(
+ IN LPCWSTR lpszAgent,
+ IN DWORD dwAccessType,
+ IN LPCWSTR lpszProxy OPTIONAL,
+ IN LPCWSTR lpszProxyBypass OPTIONAL,
+ IN DWORD dwFlags
+ );
+#ifdef UNICODE
+#define InternetOpen InternetOpenW
+#else
+#define InternetOpen InternetOpenA
+#endif // !UNICODE
+
+//
+// access types for InternetOpen()
+//
+
+#define INTERNET_OPEN_TYPE_PRECONFIG 0 // use registry configuration
+#define INTERNET_OPEN_TYPE_DIRECT 1 // direct to net
+#define INTERNET_OPEN_TYPE_PROXY 3 // via named proxy
+
+#define PRE_CONFIG_INTERNET_ACCESS INTERNET_OPEN_TYPE_PRECONFIG
+#define LOCAL_INTERNET_ACCESS INTERNET_OPEN_TYPE_DIRECT
+#define GATEWAY_INTERNET_ACCESS 2 // Internet via gateway
+#define CERN_PROXY_INTERNET_ACCESS INTERNET_OPEN_TYPE_PROXY
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetCloseHandle(
+ IN HINTERNET hInternet
+ );
+
+INTERNETAPI
+HINTERNET
+WINAPI
+InternetConnectA(
+ IN HINTERNET hInternet,
+ IN LPCSTR lpszServerName,
+ IN INTERNET_PORT nServerPort,
+ IN LPCSTR lpszUserName OPTIONAL,
+ IN LPCSTR lpszPassword OPTIONAL,
+ IN DWORD dwService,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+HINTERNET
+WINAPI
+InternetConnectW(
+ IN HINTERNET hInternet,
+ IN LPCWSTR lpszServerName,
+ IN INTERNET_PORT nServerPort,
+ IN LPCWSTR lpszUserName OPTIONAL,
+ IN LPCWSTR lpszPassword OPTIONAL,
+ IN DWORD dwService,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define InternetConnect InternetConnectW
+#else
+#define InternetConnect InternetConnectA
+#endif // !UNICODE
+
+//
+// service types for InternetConnect()
+//
+
+#define INTERNET_SERVICE_FTP 1
+#define INTERNET_SERVICE_GOPHER 2
+#define INTERNET_SERVICE_HTTP 3
+
+INTERNETAPI
+HINTERNET
+WINAPI
+InternetOpenUrlA(
+ IN HINTERNET hInternet,
+ IN LPCSTR lpszUrl,
+ IN LPCSTR lpszHeaders OPTIONAL,
+ IN DWORD dwHeadersLength,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+HINTERNET
+WINAPI
+InternetOpenUrlW(
+ IN HINTERNET hInternet,
+ IN LPCWSTR lpszUrl,
+ IN LPCWSTR lpszHeaders OPTIONAL,
+ IN DWORD dwHeadersLength,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define InternetOpenUrl InternetOpenUrlW
+#else
+#define InternetOpenUrl InternetOpenUrlA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetReadFile(
+ IN HINTERNET hFile,
+ IN LPVOID lpBuffer,
+ IN DWORD dwNumberOfBytesToRead,
+ OUT LPDWORD lpdwNumberOfBytesRead
+ );
+
+INTERNETAPI
+DWORD
+WINAPI
+InternetSetFilePointer(
+ IN HINTERNET hFile,
+ IN LONG lDistanceToMove,
+ IN PVOID pReserved,
+ IN DWORD dwMoveMethod,
+ IN DWORD dwContext
+ );
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetWriteFile(
+ IN HINTERNET hFile,
+ IN LPCVOID lpBuffer,
+ IN DWORD dwNumberOfBytesToWrite,
+ OUT LPDWORD lpdwNumberOfBytesWritten
+ );
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetQueryDataAvailable(
+ IN HINTERNET hFile,
+ OUT LPDWORD lpdwNumberOfBytesAvailable,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetFindNextFileA(
+ IN HINTERNET hFind,
+ OUT LPVOID lpvFindData
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetFindNextFileW(
+ IN HINTERNET hFind,
+ OUT LPVOID lpvFindData
+ );
+#ifdef UNICODE
+#define InternetFindNextFile InternetFindNextFileW
+#else
+#define InternetFindNextFile InternetFindNextFileA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetQueryOptionA(
+ IN HINTERNET hInternet OPTIONAL,
+ IN DWORD dwOption,
+ OUT LPVOID lpBuffer OPTIONAL,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetQueryOptionW(
+ IN HINTERNET hInternet OPTIONAL,
+ IN DWORD dwOption,
+ OUT LPVOID lpBuffer OPTIONAL,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+#ifdef UNICODE
+#define InternetQueryOption InternetQueryOptionW
+#else
+#define InternetQueryOption InternetQueryOptionA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetSetOptionA(
+ IN HINTERNET hInternet OPTIONAL,
+ IN DWORD dwOption,
+ IN LPVOID lpBuffer,
+ IN DWORD dwBufferLength
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetSetOptionW(
+ IN HINTERNET hInternet OPTIONAL,
+ IN DWORD dwOption,
+ IN LPVOID lpBuffer,
+ IN DWORD dwBufferLength
+ );
+#ifdef UNICODE
+#define InternetSetOption InternetSetOptionW
+#else
+#define InternetSetOption InternetSetOptionA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetSetOptionExA(
+ IN HINTERNET hInternet OPTIONAL,
+ IN DWORD dwOption,
+ IN LPVOID lpBuffer,
+ IN DWORD dwBufferLength,
+ IN DWORD dwFlags
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetSetOptionExW(
+ IN HINTERNET hInternet OPTIONAL,
+ IN DWORD dwOption,
+ IN LPVOID lpBuffer,
+ IN DWORD dwBufferLength,
+ IN DWORD dwFlags
+ );
+#ifdef UNICODE
+#define InternetSetOptionEx InternetSetOptionExW
+#else
+#define InternetSetOptionEx InternetSetOptionExA
+#endif // !UNICODE
+
+//
+// flags for InternetSetOptionEx()
+//
+
+#define ISO_GLOBAL 0x00000001 // modify option globally
+#define ISO_REGISTRY 0x00000002 // write option to registry (where applicable)
+
+#define ISO_VALID_FLAGS (ISO_GLOBAL | ISO_REGISTRY)
+
+//
+// options manifests for Internet{Query|Set}Option
+//
+
+#define INTERNET_OPTION_CALLBACK 1
+#define INTERNET_OPTION_CONNECT_TIMEOUT 2
+#define INTERNET_OPTION_CONNECT_RETRIES 3
+#define INTERNET_OPTION_CONNECT_BACKOFF 4
+#define INTERNET_OPTION_SEND_TIMEOUT 5
+#define INTERNET_OPTION_CONTROL_SEND_TIMEOUT INTERNET_OPTION_SEND_TIMEOUT
+#define INTERNET_OPTION_RECEIVE_TIMEOUT 6
+#define INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT INTERNET_OPTION_RECEIVE_TIMEOUT
+#define INTERNET_OPTION_DATA_SEND_TIMEOUT 7
+#define INTERNET_OPTION_DATA_RECEIVE_TIMEOUT 8
+#define INTERNET_OPTION_HANDLE_TYPE 9
+#define INTERNET_OPTION_CONTEXT_VALUE 10
+
+#define INTERNET_OPTION_READ_BUFFER_SIZE 12
+#define INTERNET_OPTION_WRITE_BUFFER_SIZE 13
+
+#define INTERNET_OPTION_ASYNC_ID 15
+#define INTERNET_OPTION_ASYNC_PRIORITY 16
+
+#define INTERNET_OPTION_PARENT_HANDLE 21
+#define INTERNET_OPTION_KEEP_CONNECTION 22
+#define INTERNET_OPTION_REQUEST_FLAGS 23
+#define INTERNET_OPTION_EXTENDED_ERROR 24
+
+#define INTERNET_OPTION_OFFLINE_MODE 26
+#define INTERNET_OPTION_CACHE_STREAM_HANDLE 27
+#define INTERNET_OPTION_USERNAME 28
+#define INTERNET_OPTION_PASSWORD 29
+#define INTERNET_OPTION_ASYNC 30
+#define INTERNET_OPTION_SECURITY_FLAGS 31
+#define INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT 32
+#define INTERNET_OPTION_DATAFILE_NAME 33
+#define INTERNET_OPTION_URL 34
+#define INTERNET_OPTION_SECURITY_CERTIFICATE 35
+#define INTERNET_OPTION_SECURITY_KEY_BITNESS 36
+#define INTERNET_OPTION_REFRESH 37
+#define INTERNET_OPTION_PROXY 38
+
+#define INTERNET_FIRST_OPTION INTERNET_OPTION_CALLBACK
+#define INTERNET_LAST_OPTION INTERNET_OPTION_PROXY
+
+//
+// values for INTERNET_OPTION_PRIORITY
+//
+
+#define INTERNET_PRIORITY_FOREGROUND 1000
+
+//
+// handle types
+//
+
+#define INTERNET_HANDLE_TYPE_INTERNET 1
+#define INTERNET_HANDLE_TYPE_CONNECT_FTP 2
+#define INTERNET_HANDLE_TYPE_CONNECT_GOPHER 3
+#define INTERNET_HANDLE_TYPE_CONNECT_HTTP 4
+#define INTERNET_HANDLE_TYPE_FTP_FIND 5
+#define INTERNET_HANDLE_TYPE_FTP_FIND_HTML 6
+#define INTERNET_HANDLE_TYPE_FTP_FILE 7
+#define INTERNET_HANDLE_TYPE_FTP_FILE_HTML 8
+#define INTERNET_HANDLE_TYPE_GOPHER_FIND 9
+#define INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML 10
+#define INTERNET_HANDLE_TYPE_GOPHER_FILE 11
+#define INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML 12
+#define INTERNET_HANDLE_TYPE_HTTP_REQUEST 13
+
+//
+// values for INTERNET_OPTION_SECURITY_FLAGS
+//
+
+#define SECURITY_FLAG_SECURE 0x00000001 // can query only
+#define SECURITY_FLAG_SSL 0x00000002
+#define SECURITY_FLAG_SSL3 0x00000004
+#define SECURITY_FLAG_PCT 0x00000008
+#define SECURITY_FLAG_PCT4 0x00000010
+#define SECURITY_FLAG_IETFSSL4 0x00000020
+
+#define SECURITY_FLAG_40BIT 0x10000000
+#define SECURITY_FLAG_128BIT 0x20000000
+#define SECURITY_FLAG_56BIT 0x40000000
+#define SECURITY_FLAG_UNKNOWNBIT 0x80000000
+#define SECURITY_FLAG_NORMALBITNESS SECURITY_FLAG_40BIT
+
+#define SECURITY_FLAG_IGNORE_CERT_CN_INVALID INTERNET_FLAG_IGNORE_CERT_CN_INVALID
+#define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
+#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
+#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetGetLastResponseInfoA(
+ OUT LPDWORD lpdwError,
+ OUT LPSTR lpszBuffer OPTIONAL,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetGetLastResponseInfoW(
+ OUT LPDWORD lpdwError,
+ OUT LPWSTR lpszBuffer OPTIONAL,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+#ifdef UNICODE
+#define InternetGetLastResponseInfo InternetGetLastResponseInfoW
+#else
+#define InternetGetLastResponseInfo InternetGetLastResponseInfoA
+#endif // !UNICODE
+
+//
+// callback function for InternetSetStatusCallback
+//
+
+typedef
+VOID
+(CALLBACK * INTERNET_STATUS_CALLBACK)(
+ IN HINTERNET hInternet,
+ IN DWORD dwContext,
+ IN DWORD dwInternetStatus,
+ IN LPVOID lpvStatusInformation OPTIONAL,
+ IN DWORD dwStatusInformationLength
+ );
+
+typedef INTERNET_STATUS_CALLBACK * LPINTERNET_STATUS_CALLBACK;
+
+INTERNETAPI
+INTERNET_STATUS_CALLBACK
+WINAPI
+InternetSetStatusCallback(
+ IN HINTERNET hInternet,
+ IN INTERNET_STATUS_CALLBACK lpfnInternetCallback
+ );
+
+//
+// status manifests for Internet status callback
+//
+
+#define INTERNET_STATUS_RESOLVING_NAME 10
+#define INTERNET_STATUS_NAME_RESOLVED 11
+#define INTERNET_STATUS_CONNECTING_TO_SERVER 20
+#define INTERNET_STATUS_CONNECTED_TO_SERVER 21
+#define INTERNET_STATUS_SENDING_REQUEST 30
+#define INTERNET_STATUS_REQUEST_SENT 31
+#define INTERNET_STATUS_RECEIVING_RESPONSE 40
+#define INTERNET_STATUS_RESPONSE_RECEIVED 41
+#define INTERNET_STATUS_CTL_RESPONSE_RECEIVED 42
+#define INTERNET_STATUS_PREFETCH 43
+#define INTERNET_STATUS_CLOSING_CONNECTION 50
+#define INTERNET_STATUS_CONNECTION_CLOSED 51
+#define INTERNET_STATUS_HANDLE_CREATED 60
+#define INTERNET_STATUS_HANDLE_CLOSING 70
+#define INTERNET_STATUS_REQUEST_COMPLETE 100
+#define INTERNET_STATUS_REDIRECT 110
+
+//
+// if the following value is returned by InternetSetStatusCallback, then
+// probably an invalid (non-code) address was supplied for the callback
+//
+
+#define INTERNET_INVALID_STATUS_CALLBACK ((INTERNET_STATUS_CALLBACK)(-1L))
+
+//
+// FTP
+//
+
+//
+// manifests
+//
+
+#define FTP_TRANSFER_TYPE_UNKNOWN 0x00000000
+#define FTP_TRANSFER_TYPE_ASCII 0x00000001
+#define FTP_TRANSFER_TYPE_BINARY 0x00000002
+
+#define FTP_TRANSFER_TYPE_MASK (FTP_TRANSFER_TYPE_ASCII | FTP_TRANSFER_TYPE_BINARY)
+
+//
+// prototypes
+//
+
+INTERNETAPI
+HINTERNET
+WINAPI
+FtpFindFirstFileA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszSearchFile OPTIONAL,
+ OUT LPWIN32_FIND_DATA lpFindFileData OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+HINTERNET
+WINAPI
+FtpFindFirstFileW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszSearchFile OPTIONAL,
+ OUT LPWIN32_FIND_DATA lpFindFileData OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define FtpFindFirstFile FtpFindFirstFileW
+#else
+#define FtpFindFirstFile FtpFindFirstFileA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+FtpGetFileA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszRemoteFile,
+ IN LPCSTR lpszNewFile,
+ IN BOOL fFailIfExists,
+ IN DWORD dwFlagsAndAttributes,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+BOOL
+WINAPI
+FtpGetFileW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszRemoteFile,
+ IN LPCWSTR lpszNewFile,
+ IN BOOL fFailIfExists,
+ IN DWORD dwFlagsAndAttributes,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define FtpGetFile FtpGetFileW
+#else
+#define FtpGetFile FtpGetFileA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+FtpPutFileA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszLocalFile,
+ IN LPCSTR lpszNewRemoteFile,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+BOOL
+WINAPI
+FtpPutFileW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszLocalFile,
+ IN LPCWSTR lpszNewRemoteFile,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define FtpPutFile FtpPutFileW
+#else
+#define FtpPutFile FtpPutFileA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+FtpDeleteFileA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszFileName
+ );
+INTERNETAPI
+BOOL
+WINAPI
+FtpDeleteFileW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszFileName
+ );
+#ifdef UNICODE
+#define FtpDeleteFile FtpDeleteFileW
+#else
+#define FtpDeleteFile FtpDeleteFileA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+FtpRenameFileA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszExisting,
+ IN LPCSTR lpszNew
+ );
+INTERNETAPI
+BOOL
+WINAPI
+FtpRenameFileW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszExisting,
+ IN LPCWSTR lpszNew
+ );
+#ifdef UNICODE
+#define FtpRenameFile FtpRenameFileW
+#else
+#define FtpRenameFile FtpRenameFileA
+#endif // !UNICODE
+
+INTERNETAPI
+HINTERNET
+WINAPI
+FtpOpenFileA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszFileName,
+ IN DWORD dwAccess,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+HINTERNET
+WINAPI
+FtpOpenFileW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszFileName,
+ IN DWORD dwAccess,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define FtpOpenFile FtpOpenFileW
+#else
+#define FtpOpenFile FtpOpenFileA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+FtpCreateDirectoryA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszDirectory
+ );
+INTERNETAPI
+BOOL
+WINAPI
+FtpCreateDirectoryW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszDirectory
+ );
+#ifdef UNICODE
+#define FtpCreateDirectory FtpCreateDirectoryW
+#else
+#define FtpCreateDirectory FtpCreateDirectoryA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+FtpRemoveDirectoryA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszDirectory
+ );
+INTERNETAPI
+BOOL
+WINAPI
+FtpRemoveDirectoryW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszDirectory
+ );
+#ifdef UNICODE
+#define FtpRemoveDirectory FtpRemoveDirectoryW
+#else
+#define FtpRemoveDirectory FtpRemoveDirectoryA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+FtpSetCurrentDirectoryA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszDirectory
+ );
+INTERNETAPI
+BOOL
+WINAPI
+FtpSetCurrentDirectoryW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszDirectory
+ );
+#ifdef UNICODE
+#define FtpSetCurrentDirectory FtpSetCurrentDirectoryW
+#else
+#define FtpSetCurrentDirectory FtpSetCurrentDirectoryA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+FtpGetCurrentDirectoryA(
+ IN HINTERNET hConnect,
+ OUT LPSTR lpszCurrentDirectory,
+ IN OUT LPDWORD lpdwCurrentDirectory
+ );
+INTERNETAPI
+BOOL
+WINAPI
+FtpGetCurrentDirectoryW(
+ IN HINTERNET hConnect,
+ OUT LPWSTR lpszCurrentDirectory,
+ IN OUT LPDWORD lpdwCurrentDirectory
+ );
+#ifdef UNICODE
+#define FtpGetCurrentDirectory FtpGetCurrentDirectoryW
+#else
+#define FtpGetCurrentDirectory FtpGetCurrentDirectoryA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+FtpCommandA(
+ IN HINTERNET hConnect,
+ IN BOOL fExpectResponse,
+ IN DWORD dwFlags,
+ IN LPCSTR lpszCommand,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+BOOL
+WINAPI
+FtpCommandW(
+ IN HINTERNET hConnect,
+ IN BOOL fExpectResponse,
+ IN DWORD dwFlags,
+ IN LPCWSTR lpszCommand,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define FtpCommand FtpCommandW
+#else
+#define FtpCommand FtpCommandA
+#endif // !UNICODE
+
+//
+// Gopher
+//
+
+//
+// manifests
+//
+
+//
+// string field lengths (in characters, not bytes)
+//
+
+#define MAX_GOPHER_DISPLAY_TEXT 128
+#define MAX_GOPHER_SELECTOR_TEXT 256
+#define MAX_GOPHER_HOST_NAME INTERNET_MAX_HOST_NAME_LENGTH
+#define MAX_GOPHER_LOCATOR_LENGTH (1 \
+ + MAX_GOPHER_DISPLAY_TEXT \
+ + 1 \
+ + MAX_GOPHER_SELECTOR_TEXT \
+ + 1 \
+ + MAX_GOPHER_HOST_NAME \
+ + 1 \
+ + INTERNET_MAX_PORT_NUMBER_LENGTH \
+ + 1 \
+ + 1 \
+ + 2 \
+ )
+
+//
+// structures/types
+//
+
+//
+// GOPHER_FIND_DATA - returns the results of a GopherFindFirstFile()/
+// InternetFindNextFile() request
+//
+
+typedef struct {
+ CHAR DisplayString[MAX_GOPHER_DISPLAY_TEXT + 1];
+ DWORD GopherType; // GOPHER_TYPE_, if known
+ DWORD SizeLow;
+ DWORD SizeHigh;
+ FILETIME LastModificationTime;
+ CHAR Locator[MAX_GOPHER_LOCATOR_LENGTH + 1];
+} GOPHER_FIND_DATAA, * LPGOPHER_FIND_DATAA;
+typedef struct {
+ WCHAR DisplayString[MAX_GOPHER_DISPLAY_TEXT + 1];
+ DWORD GopherType; // GOPHER_TYPE_, if known
+ DWORD SizeLow;
+ DWORD SizeHigh;
+ FILETIME LastModificationTime;
+ WCHAR Locator[MAX_GOPHER_LOCATOR_LENGTH + 1];
+} GOPHER_FIND_DATAW, * LPGOPHER_FIND_DATAW;
+#ifdef UNICODE
+typedef GOPHER_FIND_DATAW GOPHER_FIND_DATA;
+typedef LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA;
+#else
+typedef GOPHER_FIND_DATAA GOPHER_FIND_DATA;
+typedef LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA;
+#endif // UNICODE
+
+//
+// manifests for GopherType
+//
+
+#define GOPHER_TYPE_TEXT_FILE 0x00000001
+#define GOPHER_TYPE_DIRECTORY 0x00000002
+#define GOPHER_TYPE_CSO 0x00000004
+#define GOPHER_TYPE_ERROR 0x00000008
+#define GOPHER_TYPE_MAC_BINHEX 0x00000010
+#define GOPHER_TYPE_DOS_ARCHIVE 0x00000020
+#define GOPHER_TYPE_UNIX_UUENCODED 0x00000040
+#define GOPHER_TYPE_INDEX_SERVER 0x00000080
+#define GOPHER_TYPE_TELNET 0x00000100
+#define GOPHER_TYPE_BINARY 0x00000200
+#define GOPHER_TYPE_REDUNDANT 0x00000400
+#define GOPHER_TYPE_TN3270 0x00000800
+#define GOPHER_TYPE_GIF 0x00001000
+#define GOPHER_TYPE_IMAGE 0x00002000
+#define GOPHER_TYPE_BITMAP 0x00004000
+#define GOPHER_TYPE_MOVIE 0x00008000
+#define GOPHER_TYPE_SOUND 0x00010000
+#define GOPHER_TYPE_HTML 0x00020000
+#define GOPHER_TYPE_PDF 0x00040000
+#define GOPHER_TYPE_CALENDAR 0x00080000
+#define GOPHER_TYPE_INLINE 0x00100000
+#define GOPHER_TYPE_UNKNOWN 0x20000000
+#define GOPHER_TYPE_ASK 0x40000000
+#define GOPHER_TYPE_GOPHER_PLUS 0x80000000
+
+//
+// gopher type macros
+//
+
+#define IS_GOPHER_FILE(type) (BOOL)(((type) & GOPHER_TYPE_FILE_MASK) ? TRUE : FALSE)
+#define IS_GOPHER_DIRECTORY(type) (BOOL)(((type) & GOPHER_TYPE_DIRECTORY) ? TRUE : FALSE)
+#define IS_GOPHER_PHONE_SERVER(type) (BOOL)(((type) & GOPHER_TYPE_CSO) ? TRUE : FALSE)
+#define IS_GOPHER_ERROR(type) (BOOL)(((type) & GOPHER_TYPE_ERROR) ? TRUE : FALSE)
+#define IS_GOPHER_INDEX_SERVER(type) (BOOL)(((type) & GOPHER_TYPE_INDEX_SERVER) ? TRUE : FALSE)
+#define IS_GOPHER_TELNET_SESSION(type) (BOOL)(((type) & GOPHER_TYPE_TELNET) ? TRUE : FALSE)
+#define IS_GOPHER_BACKUP_SERVER(type) (BOOL)(((type) & GOPHER_TYPE_REDUNDANT) ? TRUE : FALSE)
+#define IS_GOPHER_TN3270_SESSION(type) (BOOL)(((type) & GOPHER_TYPE_TN3270) ? TRUE : FALSE)
+#define IS_GOPHER_ASK(type) (BOOL)(((type) & GOPHER_TYPE_ASK) ? TRUE : FALSE)
+#define IS_GOPHER_PLUS(type) (BOOL)(((type) & GOPHER_TYPE_GOPHER_PLUS) ? TRUE : FALSE)
+
+#define IS_GOPHER_TYPE_KNOWN(type) (BOOL)(((type) & GOPHER_TYPE_UNKNOWN) ? FALSE : TRUE)
+
+//
+// GOPHER_TYPE_FILE_MASK - use this to determine if a locator identifies a
+// (known) file type
+//
+
+#define GOPHER_TYPE_FILE_MASK (GOPHER_TYPE_TEXT_FILE \
+ | GOPHER_TYPE_MAC_BINHEX \
+ | GOPHER_TYPE_DOS_ARCHIVE \
+ | GOPHER_TYPE_UNIX_UUENCODED \
+ | GOPHER_TYPE_BINARY \
+ | GOPHER_TYPE_GIF \
+ | GOPHER_TYPE_IMAGE \
+ | GOPHER_TYPE_BITMAP \
+ | GOPHER_TYPE_MOVIE \
+ | GOPHER_TYPE_SOUND \
+ | GOPHER_TYPE_HTML \
+ | GOPHER_TYPE_PDF \
+ | GOPHER_TYPE_CALENDAR \
+ | GOPHER_TYPE_INLINE \
+ )
+
+//
+// structured gopher attributes (as defined in gopher+ protocol document)
+//
+
+typedef struct {
+ LPCTSTR Comment;
+ LPCTSTR EmailAddress;
+} GOPHER_ADMIN_ATTRIBUTE_TYPE, * LPGOPHER_ADMIN_ATTRIBUTE_TYPE;
+
+typedef struct {
+ FILETIME DateAndTime;
+} GOPHER_MOD_DATE_ATTRIBUTE_TYPE, * LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE;
+
+typedef struct {
+ DWORD Ttl;
+} GOPHER_TTL_ATTRIBUTE_TYPE, * LPGOPHER_TTL_ATTRIBUTE_TYPE;
+
+typedef struct {
+ INT Score;
+} GOPHER_SCORE_ATTRIBUTE_TYPE, * LPGOPHER_SCORE_ATTRIBUTE_TYPE;
+
+typedef struct {
+ INT LowerBound;
+ INT UpperBound;
+} GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, * LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE;
+
+typedef struct {
+ LPCTSTR Site;
+} GOPHER_SITE_ATTRIBUTE_TYPE, * LPGOPHER_SITE_ATTRIBUTE_TYPE;
+
+typedef struct {
+ LPCTSTR Organization;
+} GOPHER_ORGANIZATION_ATTRIBUTE_TYPE, * LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE;
+
+typedef struct {
+ LPCTSTR Location;
+} GOPHER_LOCATION_ATTRIBUTE_TYPE, * LPGOPHER_LOCATION_ATTRIBUTE_TYPE;
+
+typedef struct {
+ INT DegreesNorth;
+ INT MinutesNorth;
+ INT SecondsNorth;
+ INT DegreesEast;
+ INT MinutesEast;
+ INT SecondsEast;
+} GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, * LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE;
+
+typedef struct {
+ INT Zone;
+} GOPHER_TIMEZONE_ATTRIBUTE_TYPE, * LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE;
+
+typedef struct {
+ LPCTSTR Provider;
+} GOPHER_PROVIDER_ATTRIBUTE_TYPE, * LPGOPHER_PROVIDER_ATTRIBUTE_TYPE;
+
+typedef struct {
+ LPCTSTR Version;
+} GOPHER_VERSION_ATTRIBUTE_TYPE, * LPGOPHER_VERSION_ATTRIBUTE_TYPE;
+
+typedef struct {
+ LPCTSTR ShortAbstract;
+ LPCTSTR AbstractFile;
+} GOPHER_ABSTRACT_ATTRIBUTE_TYPE, * LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE;
+
+typedef struct {
+ LPCTSTR ContentType;
+ LPCTSTR Language;
+ DWORD Size;
+} GOPHER_VIEW_ATTRIBUTE_TYPE, * LPGOPHER_VIEW_ATTRIBUTE_TYPE;
+
+typedef struct {
+ BOOL TreeWalk;
+} GOPHER_VERONICA_ATTRIBUTE_TYPE, * LPGOPHER_VERONICA_ATTRIBUTE_TYPE;
+
+typedef struct {
+ LPCTSTR QuestionType;
+ LPCTSTR QuestionText;
+} GOPHER_ASK_ATTRIBUTE_TYPE, * LPGOPHER_ASK_ATTRIBUTE_TYPE;
+
+//
+// GOPHER_UNKNOWN_ATTRIBUTE_TYPE - this is returned if we retrieve an attribute
+// that is not specified in the current gopher/gopher+ documentation. It is up
+// to the application to parse the information
+//
+
+typedef struct {
+ LPCTSTR Text;
+} GOPHER_UNKNOWN_ATTRIBUTE_TYPE, * LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE;
+
+//
+// GOPHER_ATTRIBUTE_TYPE - returned in the user's buffer when an enumerated
+// GopherGetAttribute call is made
+//
+
+typedef struct {
+ DWORD CategoryId; // e.g. GOPHER_CATEGORY_ID_ADMIN
+ DWORD AttributeId; // e.g. GOPHER_ATTRIBUTE_ID_ADMIN
+ union {
+ GOPHER_ADMIN_ATTRIBUTE_TYPE Admin;
+ GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate;
+ GOPHER_TTL_ATTRIBUTE_TYPE Ttl;
+ GOPHER_SCORE_ATTRIBUTE_TYPE Score;
+ GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange;
+ GOPHER_SITE_ATTRIBUTE_TYPE Site;
+ GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization;
+ GOPHER_LOCATION_ATTRIBUTE_TYPE Location;
+ GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation;
+ GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone;
+ GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider;
+ GOPHER_VERSION_ATTRIBUTE_TYPE Version;
+ GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract;
+ GOPHER_VIEW_ATTRIBUTE_TYPE View;
+ GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica;
+ GOPHER_ASK_ATTRIBUTE_TYPE Ask;
+ GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown;
+ } AttributeType;
+} GOPHER_ATTRIBUTE_TYPE, * LPGOPHER_ATTRIBUTE_TYPE;
+
+#define MAX_GOPHER_CATEGORY_NAME 128 // arbitrary
+#define MAX_GOPHER_ATTRIBUTE_NAME 128 // "
+#define MIN_GOPHER_ATTRIBUTE_LENGTH 256 // "
+
+//
+// known gopher attribute categories. See below for ordinals
+//
+
+#define GOPHER_INFO_CATEGORY TEXT("+INFO")
+#define GOPHER_ADMIN_CATEGORY TEXT("+ADMIN")
+#define GOPHER_VIEWS_CATEGORY TEXT("+VIEWS")
+#define GOPHER_ABSTRACT_CATEGORY TEXT("+ABSTRACT")
+#define GOPHER_VERONICA_CATEGORY TEXT("+VERONICA")
+
+//
+// known gopher attributes. These are the attribute names as defined in the
+// gopher+ protocol document
+//
+
+#define GOPHER_ADMIN_ATTRIBUTE TEXT("Admin")
+#define GOPHER_MOD_DATE_ATTRIBUTE TEXT("Mod-Date")
+#define GOPHER_TTL_ATTRIBUTE TEXT("TTL")
+#define GOPHER_SCORE_ATTRIBUTE TEXT("Score")
+#define GOPHER_RANGE_ATTRIBUTE TEXT("Score-range")
+#define GOPHER_SITE_ATTRIBUTE TEXT("Site")
+#define GOPHER_ORG_ATTRIBUTE TEXT("Org")
+#define GOPHER_LOCATION_ATTRIBUTE TEXT("Loc")
+#define GOPHER_GEOG_ATTRIBUTE TEXT("Geog")
+#define GOPHER_TIMEZONE_ATTRIBUTE TEXT("TZ")
+#define GOPHER_PROVIDER_ATTRIBUTE TEXT("Provider")
+#define GOPHER_VERSION_ATTRIBUTE TEXT("Version")
+#define GOPHER_ABSTRACT_ATTRIBUTE TEXT("Abstract")
+#define GOPHER_VIEW_ATTRIBUTE TEXT("View")
+#define GOPHER_TREEWALK_ATTRIBUTE TEXT("treewalk")
+
+//
+// identifiers for attribute strings
+//
+
+#define GOPHER_ATTRIBUTE_ID_BASE 0xabcccc00
+
+#define GOPHER_CATEGORY_ID_ALL (GOPHER_ATTRIBUTE_ID_BASE + 1)
+
+#define GOPHER_CATEGORY_ID_INFO (GOPHER_ATTRIBUTE_ID_BASE + 2)
+#define GOPHER_CATEGORY_ID_ADMIN (GOPHER_ATTRIBUTE_ID_BASE + 3)
+#define GOPHER_CATEGORY_ID_VIEWS (GOPHER_ATTRIBUTE_ID_BASE + 4)
+#define GOPHER_CATEGORY_ID_ABSTRACT (GOPHER_ATTRIBUTE_ID_BASE + 5)
+#define GOPHER_CATEGORY_ID_VERONICA (GOPHER_ATTRIBUTE_ID_BASE + 6)
+#define GOPHER_CATEGORY_ID_ASK (GOPHER_ATTRIBUTE_ID_BASE + 7)
+
+#define GOPHER_CATEGORY_ID_UNKNOWN (GOPHER_ATTRIBUTE_ID_BASE + 8)
+
+#define GOPHER_ATTRIBUTE_ID_ALL (GOPHER_ATTRIBUTE_ID_BASE + 9)
+
+#define GOPHER_ATTRIBUTE_ID_ADMIN (GOPHER_ATTRIBUTE_ID_BASE + 10)
+#define GOPHER_ATTRIBUTE_ID_MOD_DATE (GOPHER_ATTRIBUTE_ID_BASE + 11)
+#define GOPHER_ATTRIBUTE_ID_TTL (GOPHER_ATTRIBUTE_ID_BASE + 12)
+#define GOPHER_ATTRIBUTE_ID_SCORE (GOPHER_ATTRIBUTE_ID_BASE + 13)
+#define GOPHER_ATTRIBUTE_ID_RANGE (GOPHER_ATTRIBUTE_ID_BASE + 14)
+#define GOPHER_ATTRIBUTE_ID_SITE (GOPHER_ATTRIBUTE_ID_BASE + 15)
+#define GOPHER_ATTRIBUTE_ID_ORG (GOPHER_ATTRIBUTE_ID_BASE + 16)
+#define GOPHER_ATTRIBUTE_ID_LOCATION (GOPHER_ATTRIBUTE_ID_BASE + 17)
+#define GOPHER_ATTRIBUTE_ID_GEOG (GOPHER_ATTRIBUTE_ID_BASE + 18)
+#define GOPHER_ATTRIBUTE_ID_TIMEZONE (GOPHER_ATTRIBUTE_ID_BASE + 19)
+#define GOPHER_ATTRIBUTE_ID_PROVIDER (GOPHER_ATTRIBUTE_ID_BASE + 20)
+#define GOPHER_ATTRIBUTE_ID_VERSION (GOPHER_ATTRIBUTE_ID_BASE + 21)
+#define GOPHER_ATTRIBUTE_ID_ABSTRACT (GOPHER_ATTRIBUTE_ID_BASE + 22)
+#define GOPHER_ATTRIBUTE_ID_VIEW (GOPHER_ATTRIBUTE_ID_BASE + 23)
+#define GOPHER_ATTRIBUTE_ID_TREEWALK (GOPHER_ATTRIBUTE_ID_BASE + 24)
+
+#define GOPHER_ATTRIBUTE_ID_UNKNOWN (GOPHER_ATTRIBUTE_ID_BASE + 25)
+
+//
+// prototypes
+//
+
+INTERNETAPI
+BOOL
+WINAPI
+GopherCreateLocatorA(
+ IN LPCSTR lpszHost,
+ IN INTERNET_PORT nServerPort,
+ IN LPCSTR lpszDisplayString OPTIONAL,
+ IN LPCSTR lpszSelectorString OPTIONAL,
+ IN DWORD dwGopherType,
+ OUT LPSTR lpszLocator OPTIONAL,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+INTERNETAPI
+BOOL
+WINAPI
+GopherCreateLocatorW(
+ IN LPCWSTR lpszHost,
+ IN INTERNET_PORT nServerPort,
+ IN LPCWSTR lpszDisplayString OPTIONAL,
+ IN LPCWSTR lpszSelectorString OPTIONAL,
+ IN DWORD dwGopherType,
+ OUT LPWSTR lpszLocator OPTIONAL,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+#ifdef UNICODE
+#define GopherCreateLocator GopherCreateLocatorW
+#else
+#define GopherCreateLocator GopherCreateLocatorA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+GopherGetLocatorTypeA(
+ IN LPCSTR lpszLocator,
+ OUT LPDWORD lpdwGopherType
+ );
+INTERNETAPI
+BOOL
+WINAPI
+GopherGetLocatorTypeW(
+ IN LPCWSTR lpszLocator,
+ OUT LPDWORD lpdwGopherType
+ );
+#ifdef UNICODE
+#define GopherGetLocatorType GopherGetLocatorTypeW
+#else
+#define GopherGetLocatorType GopherGetLocatorTypeA
+#endif // !UNICODE
+
+INTERNETAPI
+HINTERNET
+WINAPI
+GopherFindFirstFileA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszLocator OPTIONAL,
+ IN LPCSTR lpszSearchString OPTIONAL,
+ OUT LPGOPHER_FIND_DATAA lpFindData OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+HINTERNET
+WINAPI
+GopherFindFirstFileW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszLocator OPTIONAL,
+ IN LPCWSTR lpszSearchString OPTIONAL,
+ OUT LPGOPHER_FIND_DATAW lpFindData OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define GopherFindFirstFile GopherFindFirstFileW
+#else
+#define GopherFindFirstFile GopherFindFirstFileA
+#endif // !UNICODE
+
+INTERNETAPI
+HINTERNET
+WINAPI
+GopherOpenFileA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszLocator,
+ IN LPCSTR lpszView OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+HINTERNET
+WINAPI
+GopherOpenFileW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszLocator,
+ IN LPCWSTR lpszView OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define GopherOpenFile GopherOpenFileW
+#else
+#define GopherOpenFile GopherOpenFileA
+#endif // !UNICODE
+
+typedef
+BOOL
+(CALLBACK * GOPHER_ATTRIBUTE_ENUMERATOR)(
+ LPGOPHER_ATTRIBUTE_TYPE lpAttributeInfo,
+ DWORD dwError
+ );
+
+INTERNETAPI
+BOOL
+WINAPI
+GopherGetAttributeA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszLocator,
+ IN LPCSTR lpszAttributeName OPTIONAL,
+ OUT LPBYTE lpBuffer,
+ IN DWORD dwBufferLength,
+ OUT LPDWORD lpdwCharactersReturned,
+ IN GOPHER_ATTRIBUTE_ENUMERATOR lpfnEnumerator OPTIONAL,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+BOOL
+WINAPI
+GopherGetAttributeW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszLocator,
+ IN LPCWSTR lpszAttributeName OPTIONAL,
+ OUT LPBYTE lpBuffer,
+ IN DWORD dwBufferLength,
+ OUT LPDWORD lpdwCharactersReturned,
+ IN GOPHER_ATTRIBUTE_ENUMERATOR lpfnEnumerator OPTIONAL,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define GopherGetAttribute GopherGetAttributeW
+#else
+#define GopherGetAttribute GopherGetAttributeA
+#endif // !UNICODE
+
+//
+// HTTP
+//
+
+//
+// manifests
+//
+
+//
+// the default major/minor HTTP version numbers
+//
+
+#define HTTP_MAJOR_VERSION 1
+#define HTTP_MINOR_VERSION 0
+
+#define HTTP_VERSION TEXT("HTTP/1.0")
+
+//
+// HttpQueryInfo info levels. Generally, there is one info level
+// for each potential RFC822/HTTP/MIME header that an HTTP server
+// may send as part of a request response.
+//
+// The HTTP_QUERY_RAW_HEADERS info level is provided for clients
+// that choose to perform their own header parsing.
+//
+
+#define HTTP_QUERY_MIME_VERSION 0
+#define HTTP_QUERY_CONTENT_TYPE 1
+#define HTTP_QUERY_CONTENT_TRANSFER_ENCODING 2
+#define HTTP_QUERY_CONTENT_ID 3
+#define HTTP_QUERY_CONTENT_DESCRIPTION 4
+#define HTTP_QUERY_CONTENT_LENGTH 5
+#define HTTP_QUERY_CONTENT_LANGUAGE 6
+#define HTTP_QUERY_ALLOW 7
+#define HTTP_QUERY_PUBLIC 8
+#define HTTP_QUERY_DATE 9
+#define HTTP_QUERY_EXPIRES 10
+#define HTTP_QUERY_LAST_MODIFIED 11
+#define HTTP_QUERY_MESSAGE_ID 12
+#define HTTP_QUERY_URI 13
+#define HTTP_QUERY_DERIVED_FROM 14
+#define HTTP_QUERY_COST 15
+#define HTTP_QUERY_LINK 16
+#define HTTP_QUERY_PRAGMA 17
+#define HTTP_QUERY_VERSION 18 // special: part of status line
+#define HTTP_QUERY_STATUS_CODE 19 // special: part of status line
+#define HTTP_QUERY_STATUS_TEXT 20 // special: part of status line
+#define HTTP_QUERY_RAW_HEADERS 21 // special: all headers as ASCIIZ
+#define HTTP_QUERY_RAW_HEADERS_CRLF 22 // special: all headers
+#define HTTP_QUERY_CONNECTION 23
+#define HTTP_QUERY_ACCEPT 24
+#define HTTP_QUERY_ACCEPT_CHARSET 25
+#define HTTP_QUERY_ACCEPT_ENCODING 26
+#define HTTP_QUERY_ACCEPT_LANGUAGE 27
+#define HTTP_QUERY_AUTHORIZATION 28
+#define HTTP_QUERY_CONTENT_ENCODING 29
+#define HTTP_QUERY_FORWARDED 30
+#define HTTP_QUERY_FROM 31
+#define HTTP_QUERY_IF_MODIFIED_SINCE 32
+#define HTTP_QUERY_LOCATION 33
+#define HTTP_QUERY_ORIG_URI 34
+#define HTTP_QUERY_REFERER 35
+#define HTTP_QUERY_RETRY_AFTER 36
+#define HTTP_QUERY_SERVER 37
+#define HTTP_QUERY_TITLE 38
+#define HTTP_QUERY_USER_AGENT 39
+#define HTTP_QUERY_WWW_AUTHENTICATE 40
+#define HTTP_QUERY_PROXY_AUTHENTICATE 41
+#define HTTP_QUERY_ACCEPT_RANGES 42
+#define HTTP_QUERY_SET_COOKIE 43
+#define HTTP_QUERY_COOKIE 44
+
+#define HTTP_QUERY_MAX 44
+
+//
+// HTTP_QUERY_CUSTOM - if this special value is supplied as the dwInfoLevel
+// parameter of HttpQueryInfo() then the lpBuffer parameter contains the name
+// of the header we are to query
+//
+
+#define HTTP_QUERY_CUSTOM 65535
+
+//
+// HTTP_QUERY_FLAG_REQUEST_HEADERS - if this bit is set in the dwInfoLevel
+// parameter of HttpQueryInfo() then the request headers will be queried for the
+// request information
+//
+
+#define HTTP_QUERY_FLAG_REQUEST_HEADERS 0x80000000
+
+//
+// HTTP_QUERY_FLAG_SYSTEMTIME - if this bit is set in the dwInfoLevel parameter
+// of HttpQueryInfo() AND the header being queried contains date information,
+// e.g. the "Expires:" header then lpBuffer will contain a SYSTEMTIME structure
+// containing the date and time information converted from the header string
+//
+
+#define HTTP_QUERY_FLAG_SYSTEMTIME 0x40000000
+
+//
+// HTTP_QUERY_FLAG_NUMBER - if this bit is set in the dwInfoLevel parameter of
+// HttpQueryInfo(), then the value of the header will be converted to a number
+// before being returned to the caller, if applicable
+//
+
+#define HTTP_QUERY_FLAG_NUMBER 0x20000000
+
+//
+// HTTP_QUERY_FLAG_COALESCE - combine the values from several headers of the
+// same name into the output buffer
+//
+
+#define HTTP_QUERY_FLAG_COALESCE 0x10000000
+
+#define HTTP_QUERY_MODIFIER_FLAGS_MASK (HTTP_QUERY_FLAG_REQUEST_HEADERS \
+ | HTTP_QUERY_FLAG_SYSTEMTIME \
+ | HTTP_QUERY_FLAG_NUMBER \
+ | HTTP_QUERY_FLAG_COALESCE \
+ )
+
+#define HTTP_QUERY_HEADER_MASK (~HTTP_QUERY_MODIFIER_FLAGS_MASK)
+
+//
+// HTTP Response Status Codes:
+//
+
+#define HTTP_STATUS_OK 200 // request completed
+#define HTTP_STATUS_CREATED 201 // object created, reason = new URI
+#define HTTP_STATUS_ACCEPTED 202 // async completion (TBS)
+#define HTTP_STATUS_PARTIAL 203 // partial completion
+#define HTTP_STATUS_NO_CONTENT 204 // no info to return
+
+#define HTTP_STATUS_AMBIGUOUS 300 // server couldn't decide what to return
+#define HTTP_STATUS_MOVED 301 // object permanently moved
+#define HTTP_STATUS_REDIRECT 302 // object temporarily moved
+#define HTTP_STATUS_REDIRECT_METHOD 303 // redirection w/ new access method
+#define HTTP_STATUS_NOT_MODIFIED 304 // if-modified-since was not modified
+
+#define HTTP_STATUS_BAD_REQUEST 400 // invalid syntax
+#define HTTP_STATUS_DENIED 401 // access denied
+#define HTTP_STATUS_PAYMENT_REQ 402 // payment required
+#define HTTP_STATUS_FORBIDDEN 403 // request forbidden
+#define HTTP_STATUS_NOT_FOUND 404 // object not found
+#define HTTP_STATUS_BAD_METHOD 405 // method is not allowed
+#define HTTP_STATUS_NONE_ACCEPTABLE 406 // no response acceptable to client found
+#define HTTP_STATUS_PROXY_AUTH_REQ 407 // proxy authentication required
+#define HTTP_STATUS_REQUEST_TIMEOUT 408 // server timed out waiting for request
+#define HTTP_STATUS_CONFLICT 409 // user should resubmit with more info
+#define HTTP_STATUS_GONE 410 // the resource is no longer available
+#define HTTP_STATUS_AUTH_REFUSED 411 // couldn't authorize client
+
+#define HTTP_STATUS_SERVER_ERROR 500 // internal server error
+#define HTTP_STATUS_NOT_SUPPORTED 501 // required not supported
+#define HTTP_STATUS_BAD_GATEWAY 502 // error response received from gateway
+#define HTTP_STATUS_SERVICE_UNAVAIL 503 // temporarily overloaded
+#define HTTP_STATUS_GATEWAY_TIMEOUT 504 // timed out waiting for gateway
+
+//
+// prototypes
+//
+
+INTERNETAPI
+HINTERNET
+WINAPI
+HttpOpenRequestA(
+ IN HINTERNET hConnect,
+ IN LPCSTR lpszVerb,
+ IN LPCSTR lpszObjectName,
+ IN LPCSTR lpszVersion,
+ IN LPCSTR lpszReferrer OPTIONAL,
+ IN LPCSTR FAR * lplpszAcceptTypes OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+INTERNETAPI
+HINTERNET
+WINAPI
+HttpOpenRequestW(
+ IN HINTERNET hConnect,
+ IN LPCWSTR lpszVerb,
+ IN LPCWSTR lpszObjectName,
+ IN LPCWSTR lpszVersion,
+ IN LPCWSTR lpszReferrer OPTIONAL,
+ IN LPCWSTR FAR * lplpszAcceptTypes OPTIONAL,
+ IN DWORD dwFlags,
+ IN DWORD dwContext
+ );
+#ifdef UNICODE
+#define HttpOpenRequest HttpOpenRequestW
+#else
+#define HttpOpenRequest HttpOpenRequestA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+HttpAddRequestHeadersA(
+ IN HINTERNET hRequest,
+ IN LPCSTR lpszHeaders,
+ IN DWORD dwHeadersLength,
+ IN DWORD dwModifiers
+ );
+INTERNETAPI
+BOOL
+WINAPI
+HttpAddRequestHeadersW(
+ IN HINTERNET hRequest,
+ IN LPCWSTR lpszHeaders,
+ IN DWORD dwHeadersLength,
+ IN DWORD dwModifiers
+ );
+#ifdef UNICODE
+#define HttpAddRequestHeaders HttpAddRequestHeadersW
+#else
+#define HttpAddRequestHeaders HttpAddRequestHeadersA
+#endif // !UNICODE
+
+//
+// values for dwModifiers parameter of HttpAddRequestHeaders()
+//
+
+#define HTTP_ADDREQ_INDEX_MASK 0x0000FFFF
+#define HTTP_ADDREQ_FLAGS_MASK 0xFFFF0000
+
+//
+// HTTP_ADDREQ_FLAG_ADD_IF_NEW - the header will only be added if it doesn't
+// already exist
+//
+
+#define HTTP_ADDREQ_FLAG_ADD_IF_NEW 0x10000000
+
+//
+// HTTP_ADDREQ_FLAG_ADD - if HTTP_ADDREQ_FLAG_REPLACE is set but the header is
+// not found then if this flag is set, the header is added anyway, so long as
+// there is a valid header-value
+//
+
+#define HTTP_ADDREQ_FLAG_ADD 0x20000000
+
+//
+// HTTP_ADDREQ_FLAG_COALESCE - coalesce headers with same name. e.g.
+// "Accept: text/*" and "Accept: audio/*" with this flag results in a single
+// header: "Accept: text/*, audio/*"
+//
+
+//
+// HTTP_ADDREQ_FLAG_COALESCE - coalesce headers with same name. e.g.
+// "Accept: text/*" and "Accept: audio/*" with this flag results in a single
+// header: "Accept: text/*, audio/*"
+//
+
+#define HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA 0x40000000
+
+#define HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON 0x01000000
+
+#define HTTP_ADDREQ_FLAG_COALESCE HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA
+
+//
+// HTTP_ADDREQ_FLAG_REPLACE - replaces the specified header. Only one header can
+// be supplied in the buffer. If the header to be replaced is not the first
+// in a list of headers with the same name, then the relative index should be
+// supplied in the low 8 bits of the dwModifiers parameter. If the header-value
+// part is missing, then the header is removed
+//
+
+#define HTTP_ADDREQ_FLAG_REPLACE 0x80000000
+
+INTERNETAPI
+BOOL
+WINAPI
+HttpSendRequestA(
+ IN HINTERNET hRequest,
+ IN LPCSTR lpszHeaders OPTIONAL,
+ IN DWORD dwHeadersLength,
+ IN LPVOID lpOptional OPTIONAL,
+ IN DWORD dwOptionalLength
+ );
+INTERNETAPI
+BOOL
+WINAPI
+HttpSendRequestW(
+ IN HINTERNET hRequest,
+ IN LPCWSTR lpszHeaders OPTIONAL,
+ IN DWORD dwHeadersLength,
+ IN LPVOID lpOptional OPTIONAL,
+ IN DWORD dwOptionalLength
+ );
+#ifdef UNICODE
+#define HttpSendRequest HttpSendRequestW
+#else
+#define HttpSendRequest HttpSendRequestA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+HttpQueryInfoA(
+ IN HINTERNET hRequest,
+ IN DWORD dwInfoLevel,
+ IN OUT LPVOID lpBuffer OPTIONAL,
+ IN OUT LPDWORD lpdwBufferLength,
+ IN OUT LPDWORD lpdwIndex OPTIONAL
+ );
+INTERNETAPI
+BOOL
+WINAPI
+HttpQueryInfoW(
+ IN HINTERNET hRequest,
+ IN DWORD dwInfoLevel,
+ IN OUT LPVOID lpBuffer OPTIONAL,
+ IN OUT LPDWORD lpdwBufferLength,
+ IN OUT LPDWORD lpdwIndex OPTIONAL
+ );
+#ifdef UNICODE
+#define HttpQueryInfo HttpQueryInfoW
+#else
+#define HttpQueryInfo HttpQueryInfoA
+#endif // !UNICODE
+
+//
+// Cookie APIs
+//
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetSetCookieA(
+ IN LPCSTR lpszUrl,
+ IN LPCSTR lpszCookieName,
+ IN LPCSTR lpszCookieData
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetSetCookieW(
+ IN LPCSTR lpszUrl,
+ IN LPCWSTR lpszCookieName,
+ IN LPCWSTR lpszCookieData
+ );
+#ifdef UNICODE
+#define InternetSetCookie InternetSetCookieW
+#else
+#define InternetSetCookie InternetSetCookieA
+#endif // !UNICODE
+
+INTERNETAPI
+BOOL
+WINAPI
+InternetGetCookieA(
+ IN LPCSTR lpszUrl,
+ IN LPCSTR lpszCookieName,
+ OUT LPSTR lpCookieData,
+ IN OUT LPDWORD lpdwSize
+ );
+INTERNETAPI
+BOOL
+WINAPI
+InternetGetCookieW(
+ IN LPCSTR lpszUrl,
+ IN LPCWSTR lpszCookieName,
+ OUT LPWSTR lpCookieData,
+ IN OUT LPDWORD lpdwSize
+ );
+#ifdef UNICODE
+#define InternetGetCookie InternetGetCookieW
+#else
+#define InternetGetCookie InternetGetCookieA
+#endif // !UNICODE
+
+//
+// Internet UI
+//
+
+//
+// InternetErrorDlg - Provides UI for certain Errors.
+//
+
+#define FLAGS_ERROR_UI_FILTER_FOR_ERRORS 0x01
+#define FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS 0x02
+#define FLAGS_ERROR_UI_FLAGS_GENERATE_DATA 0x04
+#define FLAGS_ERROR_UI_FLAGS_NO_UI 0x08
+
+INTERNETAPI
+DWORD
+WINAPI
+InternetErrorDlg(
+ IN HWND hWnd,
+ IN OUT HINTERNET hRequest,
+ IN DWORD dwError,
+ IN DWORD dwFlags,
+ IN OUT LPVOID * lppvData
+ );
+
+INTERNETAPI
+DWORD
+WINAPI
+InternetConfirmZoneCrossing(
+ IN HWND hWnd,
+ IN LPSTR szUrlPrev,
+ IN LPSTR szUrlNew,
+ IN BOOL bPost
+ );
+
+//#if !defined(_WINERROR_)
+
+//
+// Internet API error returns
+//
+
+#define INTERNET_ERROR_BASE 12000
+
+#define ERROR_INTERNET_OUT_OF_HANDLES (INTERNET_ERROR_BASE + 1)
+#define ERROR_INTERNET_TIMEOUT (INTERNET_ERROR_BASE + 2)
+#define ERROR_INTERNET_EXTENDED_ERROR (INTERNET_ERROR_BASE + 3)
+#define ERROR_INTERNET_INTERNAL_ERROR (INTERNET_ERROR_BASE + 4)
+#define ERROR_INTERNET_INVALID_URL (INTERNET_ERROR_BASE + 5)
+#define ERROR_INTERNET_UNRECOGNIZED_SCHEME (INTERNET_ERROR_BASE + 6)
+#define ERROR_INTERNET_NAME_NOT_RESOLVED (INTERNET_ERROR_BASE + 7)
+#define ERROR_INTERNET_PROTOCOL_NOT_FOUND (INTERNET_ERROR_BASE + 8)
+#define ERROR_INTERNET_INVALID_OPTION (INTERNET_ERROR_BASE + 9)
+#define ERROR_INTERNET_BAD_OPTION_LENGTH (INTERNET_ERROR_BASE + 10)
+#define ERROR_INTERNET_OPTION_NOT_SETTABLE (INTERNET_ERROR_BASE + 11)
+#define ERROR_INTERNET_SHUTDOWN (INTERNET_ERROR_BASE + 12)
+#define ERROR_INTERNET_INCORRECT_USER_NAME (INTERNET_ERROR_BASE + 13)
+#define ERROR_INTERNET_INCORRECT_PASSWORD (INTERNET_ERROR_BASE + 14)
+#define ERROR_INTERNET_LOGIN_FAILURE (INTERNET_ERROR_BASE + 15)
+#define ERROR_INTERNET_INVALID_OPERATION (INTERNET_ERROR_BASE + 16)
+#define ERROR_INTERNET_OPERATION_CANCELLED (INTERNET_ERROR_BASE + 17)
+#define ERROR_INTERNET_INCORRECT_HANDLE_TYPE (INTERNET_ERROR_BASE + 18)
+#define ERROR_INTERNET_INCORRECT_HANDLE_STATE (INTERNET_ERROR_BASE + 19)
+#define ERROR_INTERNET_NOT_PROXY_REQUEST (INTERNET_ERROR_BASE + 20)
+#define ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND (INTERNET_ERROR_BASE + 21)
+#define ERROR_INTERNET_BAD_REGISTRY_PARAMETER (INTERNET_ERROR_BASE + 22)
+#define ERROR_INTERNET_NO_DIRECT_ACCESS (INTERNET_ERROR_BASE + 23)
+#define ERROR_INTERNET_NO_CONTEXT (INTERNET_ERROR_BASE + 24)
+#define ERROR_INTERNET_NO_CALLBACK (INTERNET_ERROR_BASE + 25)
+#define ERROR_INTERNET_REQUEST_PENDING (INTERNET_ERROR_BASE + 26)
+#define ERROR_INTERNET_INCORRECT_FORMAT (INTERNET_ERROR_BASE + 27)
+#define ERROR_INTERNET_ITEM_NOT_FOUND (INTERNET_ERROR_BASE + 28)
+#define ERROR_INTERNET_CANNOT_CONNECT (INTERNET_ERROR_BASE + 29)
+#define ERROR_INTERNET_CONNECTION_ABORTED (INTERNET_ERROR_BASE + 30)
+#define ERROR_INTERNET_CONNECTION_RESET (INTERNET_ERROR_BASE + 31)
+#define ERROR_INTERNET_FORCE_RETRY (INTERNET_ERROR_BASE + 32)
+#define ERROR_INTERNET_INVALID_PROXY_REQUEST (INTERNET_ERROR_BASE + 33)
+
+#define ERROR_INTERNET_HANDLE_EXISTS (INTERNET_ERROR_BASE + 36)
+#define ERROR_INTERNET_SEC_CERT_DATE_INVALID (INTERNET_ERROR_BASE + 37)
+#define ERROR_INTERNET_SEC_CERT_CN_INVALID (INTERNET_ERROR_BASE + 38)
+#define ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR (INTERNET_ERROR_BASE + 39)
+#define ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR (INTERNET_ERROR_BASE + 40)
+#define ERROR_INTERNET_MIXED_SECURITY (INTERNET_ERROR_BASE + 41)
+#define ERROR_INTERNET_CHG_POST_IS_NON_SECURE (INTERNET_ERROR_BASE + 42)
+#define ERROR_INTERNET_POST_IS_NON_SECURE (INTERNET_ERROR_BASE + 43)
+
+//
+// FTP API errors
+//
+
+#define ERROR_FTP_TRANSFER_IN_PROGRESS (INTERNET_ERROR_BASE + 110)
+#define ERROR_FTP_DROPPED (INTERNET_ERROR_BASE + 111)
+
+//
+// gopher API errors
+//
+
+#define ERROR_GOPHER_PROTOCOL_ERROR (INTERNET_ERROR_BASE + 130)
+#define ERROR_GOPHER_NOT_FILE (INTERNET_ERROR_BASE + 131)
+#define ERROR_GOPHER_DATA_ERROR (INTERNET_ERROR_BASE + 132)
+#define ERROR_GOPHER_END_OF_DATA (INTERNET_ERROR_BASE + 133)
+#define ERROR_GOPHER_INVALID_LOCATOR (INTERNET_ERROR_BASE + 134)
+#define ERROR_GOPHER_INCORRECT_LOCATOR_TYPE (INTERNET_ERROR_BASE + 135)
+#define ERROR_GOPHER_NOT_GOPHER_PLUS (INTERNET_ERROR_BASE + 136)
+#define ERROR_GOPHER_ATTRIBUTE_NOT_FOUND (INTERNET_ERROR_BASE + 137)
+#define ERROR_GOPHER_UNKNOWN_LOCATOR (INTERNET_ERROR_BASE + 138)
+
+//
+// HTTP API errors
+//
+
+#define ERROR_HTTP_HEADER_NOT_FOUND (INTERNET_ERROR_BASE + 150)
+#define ERROR_HTTP_DOWNLEVEL_SERVER (INTERNET_ERROR_BASE + 151)
+#define ERROR_HTTP_INVALID_SERVER_RESPONSE (INTERNET_ERROR_BASE + 152)
+#define ERROR_HTTP_INVALID_HEADER (INTERNET_ERROR_BASE + 153)
+#define ERROR_HTTP_INVALID_QUERY_REQUEST (INTERNET_ERROR_BASE + 154)
+#define ERROR_HTTP_HEADER_ALREADY_EXISTS (INTERNET_ERROR_BASE + 155)
+#define ERROR_HTTP_REDIRECT_FAILED (INTERNET_ERROR_BASE + 156)
+
+#define INTERNET_ERROR_LAST ERROR_HTTP_REDIRECT_FAILED
+
+//#endif // !defined(_WINERROR_)
+
+//
+// URLCACHE APIs
+//
+
+#if !defined(_WINX32_) && !defined(_URLCACHEAPI_)
+#define URLCACHEAPI DECLSPEC_IMPORT
+#else
+#define URLCACHEAPI
+#endif
+
+//
+// datatype definitions.
+//
+
+//
+// cache entry type flags.
+//
+
+#define NORMAL_CACHE_ENTRY 0x00000001
+#define STABLE_CACHE_ENTRY 0x00000002
+#define STICKY_CACHE_ENTRY 0x00000004
+
+#define SPARSE_CACHE_ENTRY 0x00010000
+#define OCX_CACHE_ENTRY 0x00020000
+
+//
+// INTERNET_CACHE_ENTRY_INFO -
+//
+
+typedef struct _INTERNET_CACHE_ENTRY_INFOA {
+ DWORD dwStructSize; // version of cache system. ?? do we need this for all entries?
+ LPSTR lpszSourceUrlName; // embedded pointer to the URL name string.
+ LPSTR lpszLocalFileName; // embedded pointer to the local file name.
+ DWORD CacheEntryType; // cache type bit mask.
+ DWORD dwUseCount; // current users count of the cache entry.
+ DWORD dwHitRate; // num of times the cache entry was retrieved.
+ DWORD dwSizeLow; // low DWORD of the file size.
+ DWORD dwSizeHigh; // high DWORD of the file size.
+ FILETIME LastModifiedTime; // last modified time of the file in GMT format.
+ FILETIME ExpireTime; // expire time of the file in GMT format
+ FILETIME LastAccessTime; // last accessed time in GMT format
+ FILETIME LastSyncTime; // last time the URL was synchronized
+ // with the source
+ LPBYTE lpHeaderInfo; // embedded pointer to the header info.
+ DWORD dwHeaderInfoSize; // size of the above header.
+ LPSTR lpszFileExtension; // File extension used to retrive the urldata as a file.
+ DWORD dwReserved; // reserved for future use.
+} INTERNET_CACHE_ENTRY_INFOA, * LPINTERNET_CACHE_ENTRY_INFOA;
+typedef struct _INTERNET_CACHE_ENTRY_INFOW {
+ DWORD dwStructSize; // version of cache system. ?? do we need this for all entries?
+ LPSTR lpszSourceUrlName; // embedded pointer to the URL name string.
+ LPWSTR lpszLocalFileName; // embedded pointer to the local file name.
+ DWORD CacheEntryType; // cache type bit mask.
+ DWORD dwUseCount; // current users count of the cache entry.
+ DWORD dwHitRate; // num of times the cache entry was retrieved.
+ DWORD dwSizeLow; // low DWORD of the file size.
+ DWORD dwSizeHigh; // high DWORD of the file size.
+ FILETIME LastModifiedTime; // last modified time of the file in GMT format.
+ FILETIME ExpireTime; // expire time of the file in GMT format
+ FILETIME LastAccessTime; // last accessed time in GMT format
+ FILETIME LastSyncTime; // last time the URL was synchronized
+ // with the source
+ LPBYTE lpHeaderInfo; // embedded pointer to the header info.
+ DWORD dwHeaderInfoSize; // size of the above header.
+ LPWSTR lpszFileExtension; // File extension used to retrive the urldata as a file.
+ DWORD dwReserved; // reserved for future use.
+} INTERNET_CACHE_ENTRY_INFOW, * LPINTERNET_CACHE_ENTRY_INFOW;
+#ifdef UNICODE
+typedef INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO;
+typedef LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO;
+#else
+typedef INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO;
+typedef LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO;
+#endif // UNICODE
+
+//
+// Cache APIs
+//
+
+URLCACHEAPI
+BOOL
+WINAPI
+CreateUrlCacheEntryA(
+ IN LPCSTR lpszUrlName,
+ IN DWORD dwExpectedFileSize,
+ IN LPCSTR lpszFileExtension,
+ OUT LPSTR lpszFileName,
+ IN DWORD dwReserved
+ );
+URLCACHEAPI
+BOOL
+WINAPI
+CreateUrlCacheEntryW(
+ IN LPCSTR lpszUrlName,
+ IN DWORD dwExpectedFileSize,
+ IN LPCSTR lpszFileExtension,
+ OUT LPWSTR lpszFileName,
+ IN DWORD dwReserved
+ );
+#ifdef UNICODE
+#define CreateUrlCacheEntry CreateUrlCacheEntryW
+#else
+#define CreateUrlCacheEntry CreateUrlCacheEntryA
+#endif // !UNICODE
+
+URLCACHEAPI
+BOOL
+WINAPI
+CommitUrlCacheEntryA(
+ IN LPCSTR lpszUrlName,
+ IN LPCSTR lpszLocalFileName,
+ IN FILETIME ExpireTime,
+ IN FILETIME LastModifiedTime,
+ IN DWORD CacheEntryType,
+ IN LPBYTE lpHeaderInfo,
+ IN DWORD dwHeaderSize,
+ IN LPCTSTR lpszFileExtension,
+ IN DWORD dwReserved
+ );
+URLCACHEAPI
+BOOL
+WINAPI
+CommitUrlCacheEntryW(
+ IN LPCSTR lpszUrlName,
+ IN LPCWSTR lpszLocalFileName,
+ IN FILETIME ExpireTime,
+ IN FILETIME LastModifiedTime,
+ IN DWORD CacheEntryType,
+ IN LPBYTE lpHeaderInfo,
+ IN DWORD dwHeaderSize,
+ IN LPCTSTR lpszFileExtension,
+ IN DWORD dwReserved
+ );
+#ifdef UNICODE
+#define CommitUrlCacheEntry CommitUrlCacheEntryW
+#else
+#define CommitUrlCacheEntry CommitUrlCacheEntryA
+#endif // !UNICODE
+
+URLCACHEAPI
+BOOL
+WINAPI
+RetrieveUrlCacheEntryFileA(
+ IN LPCSTR lpszUrlName,
+ OUT LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
+ IN OUT LPDWORD lpdwCacheEntryInfoBufferSize,
+ IN DWORD dwReserved
+ );
+URLCACHEAPI
+BOOL
+WINAPI
+RetrieveUrlCacheEntryFileW(
+ IN LPCSTR lpszUrlName,
+ OUT LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
+ IN OUT LPDWORD lpdwCacheEntryInfoBufferSize,
+ IN DWORD dwReserved
+ );
+#ifdef UNICODE
+#define RetrieveUrlCacheEntryFile RetrieveUrlCacheEntryFileW
+#else
+#define RetrieveUrlCacheEntryFile RetrieveUrlCacheEntryFileA
+#endif // !UNICODE
+
+URLCACHEAPI
+BOOL
+WINAPI
+UnlockUrlCacheEntryFile(
+ IN LPCSTR lpszUrlName,
+ IN DWORD dwReserved
+ );
+
+URLCACHEAPI
+HANDLE
+WINAPI
+RetrieveUrlCacheEntryStreamA(
+ IN LPCSTR lpszUrlName,
+ OUT LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
+ IN OUT LPDWORD lpdwCacheEntryInfoBufferSize,
+ IN BOOL fRandomRead,
+ IN DWORD dwReserved
+ );
+URLCACHEAPI
+HANDLE
+WINAPI
+RetrieveUrlCacheEntryStreamW(
+ IN LPCSTR lpszUrlName,
+ OUT LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
+ IN OUT LPDWORD lpdwCacheEntryInfoBufferSize,
+ IN BOOL fRandomRead,
+ IN DWORD dwReserved
+ );
+#ifdef UNICODE
+#define RetrieveUrlCacheEntryStream RetrieveUrlCacheEntryStreamW
+#else
+#define RetrieveUrlCacheEntryStream RetrieveUrlCacheEntryStreamA
+#endif // !UNICODE
+
+URLCACHEAPI
+BOOL
+WINAPI
+ReadUrlCacheEntryStream(
+ IN HANDLE hUrlCacheStream,
+ IN DWORD dwLocation,
+ IN OUT LPVOID lpBuffer,
+ IN OUT LPDWORD lpdwLen,
+ IN DWORD Reserved
+ );
+
+URLCACHEAPI
+BOOL
+WINAPI
+UnlockUrlCacheEntryStream(
+ IN HANDLE hUrlCacheStream,
+ IN DWORD Reserved
+ );
+
+URLCACHEAPI
+BOOL
+WINAPI
+GetUrlCacheEntryInfoA(
+ IN LPCSTR lpszUrlName,
+ OUT LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
+ IN OUT LPDWORD lpdwCacheEntryInfoBufferSize
+ );
+URLCACHEAPI
+BOOL
+WINAPI
+GetUrlCacheEntryInfoW(
+ IN LPCSTR lpszUrlName,
+ OUT LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
+ IN OUT LPDWORD lpdwCacheEntryInfoBufferSize
+ );
+#ifdef UNICODE
+#define GetUrlCacheEntryInfo GetUrlCacheEntryInfoW
+#else
+#define GetUrlCacheEntryInfo GetUrlCacheEntryInfoA
+#endif // !UNICODE
+
+#define CACHE_ENTRY_ATTRIBUTE_FC 0x00000004
+#define CACHE_ENTRY_HITRATE_FC 0x00000010
+#define CACHE_ENTRY_MODTIME_FC 0x00000040
+#define CACHE_ENTRY_EXPTIME_FC 0x00000080
+#define CACHE_ENTRY_ACCTIME_FC 0x00000100
+#define CACHE_ENTRY_SYNCTIME_FC 0x00000200
+#define CACHE_ENTRY_HEADERINFO_FC 0x00000400
+
+URLCACHEAPI
+BOOL
+WINAPI
+SetUrlCacheEntryInfoA(
+ IN LPCSTR lpszUrlName,
+ IN LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
+ IN DWORD dwFieldControl
+ );
+URLCACHEAPI
+BOOL
+WINAPI
+SetUrlCacheEntryInfoW(
+ IN LPCSTR lpszUrlName,
+ IN LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo,
+ IN DWORD dwFieldControl
+ );
+#ifdef UNICODE
+#define SetUrlCacheEntryInfo SetUrlCacheEntryInfoW
+#else
+#define SetUrlCacheEntryInfo SetUrlCacheEntryInfoA
+#endif // !UNICODE
+
+URLCACHEAPI
+HANDLE
+WINAPI
+FindFirstUrlCacheEntryA(
+ IN LPCSTR lpszUrlSearchPattern,
+ OUT LPINTERNET_CACHE_ENTRY_INFO lpFirstCacheEntryInfo,
+ IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize
+ );
+URLCACHEAPI
+HANDLE
+WINAPI
+FindFirstUrlCacheEntryW(
+ IN LPCSTR lpszUrlSearchPattern,
+ OUT LPINTERNET_CACHE_ENTRY_INFO lpFirstCacheEntryInfo,
+ IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize
+ );
+#ifdef UNICODE
+#define FindFirstUrlCacheEntry FindFirstUrlCacheEntryW
+#else
+#define FindFirstUrlCacheEntry FindFirstUrlCacheEntryA
+#endif // !UNICODE
+
+URLCACHEAPI
+BOOL
+WINAPI
+FindNextUrlCacheEntryA(
+ IN HANDLE hEnumHandle,
+ OUT LPINTERNET_CACHE_ENTRY_INFO lpNextCacheEntryInfo,
+ IN OUT LPDWORD lpdwNextCacheEntryInfoBufferSize
+ );
+URLCACHEAPI
+BOOL
+WINAPI
+FindNextUrlCacheEntryW(
+ IN HANDLE hEnumHandle,
+ OUT LPINTERNET_CACHE_ENTRY_INFO lpNextCacheEntryInfo,
+ IN OUT LPDWORD lpdwNextCacheEntryInfoBufferSize
+ );
+#ifdef UNICODE
+#define FindNextUrlCacheEntry FindNextUrlCacheEntryW
+#else
+#define FindNextUrlCacheEntry FindNextUrlCacheEntryA
+#endif // !UNICODE
+
+URLCACHEAPI
+BOOL
+WINAPI
+FindCloseUrlCache(
+ IN HANDLE hEnumHandle
+ );
+
+URLCACHEAPI
+BOOL
+WINAPI
+DeleteUrlCacheEntry(
+ IN LPCSTR lpszUrlName
+ );
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif // !defined(_WININET_)
diff --git a/public/sdk/inc/winioctl.h b/public/sdk/inc/winioctl.h
new file mode 100644
index 000000000..f63ee4240
--- /dev/null
+++ b/public/sdk/inc/winioctl.h
@@ -0,0 +1,822 @@
+/*++ BUILD Version: 0013 // Increment this if a change has global effects
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ winioctl.h
+
+Abstract:
+
+ This module defines the 32-Bit Windows Device I/O control codes.
+
+Revision History:
+
+--*/
+
+#ifndef _WINIOCTL_
+#define _WINIOCTL_
+
+
+#ifndef _DEVIOCTL_
+#define _DEVIOCTL_
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// Define the various device type values. Note that values used by Microsoft
+// Corporation are in the range 0-32767, and 32768-65535 are reserved for use
+// by customers.
+//
+
+#define DEVICE_TYPE DWORD
+
+#define FILE_DEVICE_BEEP 0x00000001
+#define FILE_DEVICE_CD_ROM 0x00000002
+#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
+#define FILE_DEVICE_CONTROLLER 0x00000004
+#define FILE_DEVICE_DATALINK 0x00000005
+#define FILE_DEVICE_DFS 0x00000006
+#define FILE_DEVICE_DISK 0x00000007
+#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
+#define FILE_DEVICE_FILE_SYSTEM 0x00000009
+#define FILE_DEVICE_INPORT_PORT 0x0000000a
+#define FILE_DEVICE_KEYBOARD 0x0000000b
+#define FILE_DEVICE_MAILSLOT 0x0000000c
+#define FILE_DEVICE_MIDI_IN 0x0000000d
+#define FILE_DEVICE_MIDI_OUT 0x0000000e
+#define FILE_DEVICE_MOUSE 0x0000000f
+#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
+#define FILE_DEVICE_NAMED_PIPE 0x00000011
+#define FILE_DEVICE_NETWORK 0x00000012
+#define FILE_DEVICE_NETWORK_BROWSER 0x00000013
+#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
+#define FILE_DEVICE_NULL 0x00000015
+#define FILE_DEVICE_PARALLEL_PORT 0x00000016
+#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
+#define FILE_DEVICE_PRINTER 0x00000018
+#define FILE_DEVICE_SCANNER 0x00000019
+#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
+#define FILE_DEVICE_SERIAL_PORT 0x0000001b
+#define FILE_DEVICE_SCREEN 0x0000001c
+#define FILE_DEVICE_SOUND 0x0000001d
+#define FILE_DEVICE_STREAMS 0x0000001e
+#define FILE_DEVICE_TAPE 0x0000001f
+#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
+#define FILE_DEVICE_TRANSPORT 0x00000021
+#define FILE_DEVICE_UNKNOWN 0x00000022
+#define FILE_DEVICE_VIDEO 0x00000023
+#define FILE_DEVICE_VIRTUAL_DISK 0x00000024
+#define FILE_DEVICE_WAVE_IN 0x00000025
+#define FILE_DEVICE_WAVE_OUT 0x00000026
+#define FILE_DEVICE_8042_PORT 0x00000027
+#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
+#define FILE_DEVICE_BATTERY 0x00000029
+#define FILE_DEVICE_BUS_EXTENDER 0x0000002a
+#define FILE_DEVICE_MODEM 0x0000002b
+#define FILE_DEVICE_VDM 0x0000002c
+#define FILE_DEVICE_MASS_STORAGE 0x0000002d
+
+//
+// Macro definition for defining IOCTL and FSCTL function control codes. Note
+// that function codes 0-2047 are reserved for Microsoft Corporation, and
+// 2048-4095 are reserved for customers.
+//
+
+#define CTL_CODE( DeviceType, Function, Method, Access ) ( \
+ ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
+)
+
+//
+// Define the method codes for how buffers are passed for I/O and FS controls
+//
+
+#define METHOD_BUFFERED 0
+#define METHOD_IN_DIRECT 1
+#define METHOD_OUT_DIRECT 2
+#define METHOD_NEITHER 3
+
+//
+// Define the access check value for any access
+//
+//
+// The FILE_READ_ACCESS and FILE_WRITE_ACCESS constants are also defined in
+// ntioapi.h as FILE_READ_DATA and FILE_WRITE_DATA. The values for these
+// constants *MUST* always be in sync.
+//
+
+
+#define FILE_ANY_ACCESS 0
+#define FILE_READ_ACCESS ( 0x0001 ) // file & pipe
+#define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe
+
+// end_ntddk end_nthal end_ntifs
+
+#endif // _DEVIOCTL_
+
+
+#ifndef _NTDDSTOR_H_
+#define _NTDDSTOR_H_
+
+
+//
+// IoControlCode values for disk devices.
+//
+
+#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
+
+//
+// The following device control codes are common for all class drivers. They
+// should be used in place of the older IOCTL_DISK, IOCTL_CDROM and IOCTL_TAPE
+// common codes
+//
+
+#define IOCTL_STORAGE_CHECK_VERIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_RESERVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_RELEASE CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_STORAGE_FIND_NEW_DEVICES CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_STORAGE_GET_MEDIA_TYPES CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+//
+// Define the structures for scsi resets
+//
+
+typedef struct _STORAGE_BUS_RESET_REQUEST {
+ BYTE PathId;
+} STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST;
+
+//
+// IOCTL_STORAGE_MEDIA_REMOVAL disables the mechanism
+// on a storage device that ejects media. This function
+// may or may not be supported on storage devices that
+// support removable media.
+//
+// TRUE means prevent media from being removed.
+// FALSE means allow media removal.
+//
+
+typedef struct _PREVENT_MEDIA_REMOVAL {
+ BOOLEAN PreventMediaRemoval;
+} PREVENT_MEDIA_REMOVAL, *PPREVENT_MEDIA_REMOVAL;
+
+#endif // _NTDDSTOR_H_
+
+//
+// IoControlCode values for disk devices.
+//
+
+#define IOCTL_DISK_BASE FILE_DEVICE_DISK
+#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_VERIFY CTL_CODE(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE, 0x000a, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(IOCTL_DISK_BASE, 0x000b, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE, 0x000c, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE, 0x000d, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE, 0x000e, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE, 0x000f, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#if(_WIN32_WINNT >= 0x0400)
+#define IOCTL_DISK_CONTROLLER_NUMBER CTL_CODE(IOCTL_DISK_BASE, 0x0011, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// IOCTL support for SMART drive fault prediction.
+//
+
+#define SMART_GET_VERSION CTL_CODE(IOCTL_DISK_BASE, 0x0020, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define SMART_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define SMART_RCV_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+
+//
+// The following device control codes are common for all class drivers. The
+// functions codes defined here must match all of the other class drivers.
+//
+// Warning: these codes will be replaced in the future by equivalent
+// IOCTL_STORAGE codes
+//
+
+#define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+//
+// Define the partition types returnable by known disk drivers.
+//
+
+#define PARTITION_ENTRY_UNUSED 0x00 // Entry unused
+#define PARTITION_FAT_12 0x01 // 12-bit FAT entries
+#define PARTITION_XENIX_1 0x02 // Xenix
+#define PARTITION_XENIX_2 0x03 // Xenix
+#define PARTITION_FAT_16 0x04 // 16-bit FAT entries
+#define PARTITION_EXTENDED 0x05 // Extended partition entry
+#define PARTITION_HUGE 0x06 // Huge partition MS-DOS V4
+#define PARTITION_IFS 0x07 // IFS Partition
+#define PARTITION_FAT32 0x0B // FAT32
+#define PARTITION_FAT32_XINT13 0x0C // FAT32 using extended int13 services
+#define PARTITION_XINT13 0x0E // Win95 partition using extended int13 services
+#define PARTITION_XINT13_EXTENDED 0x0F // Same as type 5 but uses extended int13 services
+#define PARTITION_PREP 0x41 // PowerPC Reference Platform (PReP) Boot Partition
+#define PARTITION_UNIX 0x63 // Unix
+
+#define VALID_NTFT 0xC0 // NTFT uses high order bits
+
+//
+// The high bit of the partition type code indicates that a partition
+// is part of an NTFT mirror or striped array.
+//
+
+#define PARTITION_NTFT 0x80 // NTFT partition
+
+//
+// The following macro is used to determine which partitions should be
+// assigned drive letters.
+//
+
+//++
+//
+// BOOLEAN
+// IsRecognizedPartition(
+// IN DWORD PartitionType
+// )
+//
+// Routine Description:
+//
+// This macro is used to determine to which partitions drive letters
+// should be assigned.
+//
+// Arguments:
+//
+// PartitionType - Supplies the type of the partition being examined.
+//
+// Return Value:
+//
+// The return value is TRUE if the partition type is recognized,
+// otherwise FALSE is returned.
+//
+//--
+
+#define IsRecognizedPartition( PartitionType ) ( \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_FAT_12)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_FAT_16)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_IFS)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_HUGE)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_FAT32)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_FAT32_XINT13)) || \
+ ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0) == PARTITION_XINT13)) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_FAT_12) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_FAT_16) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_IFS) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_HUGE) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_FAT32) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_FAT32_XINT13) || \
+ ((PartitionType & ~PARTITION_NTFT) == PARTITION_XINT13) )
+
+//++
+//
+// BOOLEAN
+// IsContainerPartition(
+// IN DWORD PartitionType
+// )
+//
+// Routine Description:
+//
+// This macro is used to determine to which partition types are actually
+// containers for other partitions (ie, extended partitions).
+//
+// Arguments:
+//
+// PartitionType - Supplies the type of the partition being examined.
+//
+// Return Value:
+//
+// The return value is TRUE if the partition type is a container,
+// otherwise FALSE is returned.
+//
+//--
+
+#define IsContainerPartition( PartitionType ) \
+ ((PartitionType == PARTITION_EXTENDED) || (PartitionType == PARTITION_XINT13_EXTENDED))
+
+//
+// Define the media types supported by the driver.
+//
+
+typedef enum _MEDIA_TYPE {
+ Unknown, // Format is unknown
+ F5_1Pt2_512, // 5.25", 1.2MB, 512 bytes/sector
+ F3_1Pt44_512, // 3.5", 1.44MB, 512 bytes/sector
+ F3_2Pt88_512, // 3.5", 2.88MB, 512 bytes/sector
+ F3_20Pt8_512, // 3.5", 20.8MB, 512 bytes/sector
+ F3_720_512, // 3.5", 720KB, 512 bytes/sector
+ F5_360_512, // 5.25", 360KB, 512 bytes/sector
+ F5_320_512, // 5.25", 320KB, 512 bytes/sector
+ F5_320_1024, // 5.25", 320KB, 1024 bytes/sector
+ F5_180_512, // 5.25", 180KB, 512 bytes/sector
+ F5_160_512, // 5.25", 160KB, 512 bytes/sector
+ RemovableMedia, // Removable media other than floppy
+ FixedMedia, // Fixed hard disk media
+ F3_120M_512 // 3.5", 120M Floppy
+} MEDIA_TYPE, *PMEDIA_TYPE;
+
+//
+// Define the input buffer structure for the driver, when
+// it is called with IOCTL_DISK_FORMAT_TRACKS.
+//
+
+typedef struct _FORMAT_PARAMETERS {
+ MEDIA_TYPE MediaType;
+ DWORD StartCylinderNumber;
+ DWORD EndCylinderNumber;
+ DWORD StartHeadNumber;
+ DWORD EndHeadNumber;
+} FORMAT_PARAMETERS, *PFORMAT_PARAMETERS;
+
+//
+// Define the BAD_TRACK_NUMBER type. An array of elements of this type is
+// returned by the driver on IOCTL_DISK_FORMAT_TRACKS requests, to indicate
+// what tracks were bad during formatting. The length of that array is
+// reported in the `Information' field of the I/O Status Block.
+//
+
+typedef WORD BAD_TRACK_NUMBER;
+typedef WORD *PBAD_TRACK_NUMBER;
+
+//
+// Define the input buffer structure for the driver, when
+// it is called with IOCTL_DISK_FORMAT_TRACKS_EX.
+//
+
+typedef struct _FORMAT_EX_PARAMETERS {
+ MEDIA_TYPE MediaType;
+ DWORD StartCylinderNumber;
+ DWORD EndCylinderNumber;
+ DWORD StartHeadNumber;
+ DWORD EndHeadNumber;
+ WORD FormatGapLength;
+ WORD SectorsPerTrack;
+ WORD SectorNumber[1];
+} FORMAT_EX_PARAMETERS, *PFORMAT_EX_PARAMETERS;
+
+//
+// The following structure is returned on an IOCTL_DISK_GET_DRIVE_GEOMETRY
+// request and an array of them is returned on an IOCTL_DISK_GET_MEDIA_TYPES
+// request.
+//
+
+typedef struct _DISK_GEOMETRY {
+ LARGE_INTEGER Cylinders;
+ MEDIA_TYPE MediaType;
+ DWORD TracksPerCylinder;
+ DWORD SectorsPerTrack;
+ DWORD BytesPerSector;
+} DISK_GEOMETRY, *PDISK_GEOMETRY;
+
+//
+// The following structure is returned on an IOCTL_DISK_GET_PARTITION_INFO
+// and an IOCTL_DISK_GET_DRIVE_LAYOUT request. It is also used in a request
+// to change the drive layout, IOCTL_DISK_SET_DRIVE_LAYOUT.
+//
+
+typedef struct _PARTITION_INFORMATION {
+ LARGE_INTEGER StartingOffset;
+ LARGE_INTEGER PartitionLength;
+ DWORD HiddenSectors;
+ DWORD PartitionNumber;
+ BYTE PartitionType;
+ BOOLEAN BootIndicator;
+ BOOLEAN RecognizedPartition;
+ BOOLEAN RewritePartition;
+} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
+
+//
+// The following structure is used to change the partition type of a
+// specified disk partition using an IOCTL_DISK_SET_PARTITION_INFO
+// request.
+//
+
+typedef struct _SET_PARTITION_INFORMATION {
+ BYTE PartitionType;
+} SET_PARTITION_INFORMATION, *PSET_PARTITION_INFORMATION;
+
+//
+// The following structures is returned on an IOCTL_DISK_GET_DRIVE_LAYOUT
+// request and given as input to an IOCTL_DISK_SET_DRIVE_LAYOUT request.
+//
+
+typedef struct _DRIVE_LAYOUT_INFORMATION {
+ DWORD PartitionCount;
+ DWORD Signature;
+ PARTITION_INFORMATION PartitionEntry[1];
+} DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION;
+
+//
+// The following structure is passed in on an IOCTL_DISK_VERIFY request.
+// The offset and length parameters are both given in bytes.
+//
+
+typedef struct _VERIFY_INFORMATION {
+ LARGE_INTEGER StartingOffset;
+ DWORD Length;
+} VERIFY_INFORMATION, *PVERIFY_INFORMATION;
+
+//
+// The following structure is passed in on an IOCTL_DISK_REASSIGN_BLOCKS
+// request.
+//
+
+typedef struct _REASSIGN_BLOCKS {
+ WORD Reserved;
+ WORD Count;
+ DWORD BlockNumber[1];
+} REASSIGN_BLOCKS, *PREASSIGN_BLOCKS;
+
+#if(_WIN32_WINNT >= 0x0400)
+//
+// IOCTL_DISK_CONTROLLER_NUMBER returns the controller and disk
+// number for the handle. This is used to determine if a disk
+// is attached to the primary or secondary IDE controller.
+//
+
+typedef struct _DISK_CONTROLLER_NUMBER {
+ DWORD ControllerNumber;
+ DWORD DiskNumber;
+} DISK_CONTROLLER_NUMBER, *PDISK_CONTROLLER_NUMBER;
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+///////////////////////////////////////////////////////
+// //
+// The following structures define disk performance //
+// statistics: specifically the locations of all the //
+// reads and writes which have occured on the disk. //
+// //
+// To use these structures, you must issue an IOCTL_ //
+// DISK_HIST_STRUCTURE (with a DISK_HISTOGRAM) to //
+// obtain the basic histogram information. The //
+// number of buckets which must allocated is part of //
+// this structure. Allocate the required number of //
+// buckets and call an IOCTL_DISK_HIST_DATA to fill //
+// in the data //
+// //
+///////////////////////////////////////////////////////
+
+#define HIST_NO_OF_BUCKETS 24
+
+typedef struct _HISTOGRAM_BUCKET {
+ DWORD Reads;
+ DWORD Writes;
+} HISTOGRAM_BUCKET, *PHISTOGRAM_BUCKET;
+
+#define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET)
+
+typedef struct _DISK_HISTOGRAM {
+ LARGE_INTEGER DiskSize;
+ LARGE_INTEGER Start;
+ LARGE_INTEGER End;
+ LARGE_INTEGER Average;
+ LARGE_INTEGER AverageRead;
+ LARGE_INTEGER AverageWrite;
+ DWORD Granularity;
+ DWORD Size;
+ DWORD ReadCount;
+ DWORD WriteCount;
+ PHISTOGRAM_BUCKET Histogram;
+} DISK_HISTOGRAM, *PDISK_HISTOGRAM;
+
+#define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM)
+
+///////////////////////////////////////////////////////
+// //
+// The following structures define disk debugging //
+// capabilities. The IOCTLs are directed to one of //
+// the two disk filter drivers. //
+// //
+// DISKPERF is a utilty for collecting disk request //
+// statistics. //
+// //
+// SIMBAD is a utility for injecting faults in //
+// IO requests to disks. //
+// //
+///////////////////////////////////////////////////////
+
+//
+// The following structure is exchanged on an IOCTL_DISK_GET_PERFORMANCE
+// request. This ioctl collects summary disk request statistics used
+// in measuring performance.
+//
+
+typedef struct _DISK_PERFORMANCE {
+ LARGE_INTEGER BytesRead;
+ LARGE_INTEGER BytesWritten;
+ LARGE_INTEGER ReadTime;
+ LARGE_INTEGER WriteTime;
+ DWORD ReadCount;
+ DWORD WriteCount;
+ DWORD QueueDepth;
+} DISK_PERFORMANCE, *PDISK_PERFORMANCE;
+
+//
+// This structure defines the disk logging record. When disk logging
+// is enabled, one of these is written to an internal buffer for each
+// disk request.
+//
+
+typedef struct _DISK_RECORD {
+ LARGE_INTEGER ByteOffset;
+ LARGE_INTEGER StartTime;
+ LARGE_INTEGER EndTime;
+ PVOID VirtualAddress;
+ DWORD NumberOfBytes;
+ BYTE DeviceNumber;
+ BOOLEAN ReadRequest;
+} DISK_RECORD, *PDISK_RECORD;
+
+//
+// The following structure is exchanged on an IOCTL_DISK_LOG request.
+// Not all fields are valid with each function type.
+//
+
+typedef struct _DISK_LOGGING {
+ BYTE Function;
+ PVOID BufferAddress;
+ DWORD BufferSize;
+} DISK_LOGGING, *PDISK_LOGGING;
+
+//
+// Disk logging functions
+//
+// Start disk logging. Only the Function and BufferSize fields are valid.
+//
+
+#define DISK_LOGGING_START 0
+
+//
+// Stop disk logging. Only the Function field is valid.
+//
+
+#define DISK_LOGGING_STOP 1
+
+//
+// Return disk log. All fields are valid. Data will be copied from internal
+// buffer to buffer specified for the number of bytes requested.
+//
+
+#define DISK_LOGGING_DUMP 2
+
+//
+// DISK BINNING
+//
+// DISKPERF will keep counters for IO that falls in each of these ranges.
+// The application determines the number and size of the ranges.
+// Joe Lin wanted me to keep it flexible as possible, for instance, IO
+// sizes are interesting in ranges like 0-4096, 4097-16384, 16385-65536, 65537+.
+//
+
+#define DISK_BINNING 3
+
+//
+// Bin types
+//
+
+typedef enum _BIN_TYPES {
+ RequestSize,
+ RequestLocation
+} BIN_TYPES;
+
+//
+// Bin ranges
+//
+
+typedef struct _BIN_RANGE {
+ LARGE_INTEGER StartValue;
+ LARGE_INTEGER Length;
+} BIN_RANGE, *PBIN_RANGE;
+
+//
+// Bin definition
+//
+
+typedef struct _PERF_BIN {
+ DWORD NumberOfBins;
+ DWORD TypeOfBin;
+ BIN_RANGE BinsRanges[1];
+} PERF_BIN, *PPERF_BIN ;
+
+//
+// Bin count
+//
+
+typedef struct _BIN_COUNT {
+ BIN_RANGE BinRange;
+ DWORD BinCount;
+} BIN_COUNT, *PBIN_COUNT;
+
+//
+// Bin results
+//
+
+typedef struct _BIN_RESULTS {
+ DWORD NumberOfBins;
+ BIN_COUNT BinCounts[1];
+} BIN_RESULTS, *PBIN_RESULTS;
+
+#if(_WIN32_WINNT >= 0x0400)
+//
+// Data structures for SMART drive fault prediction.
+//
+// GETVERSIONINPARAMS contains the data returned from the
+// Get Driver Version function.
+//
+
+#pragma pack(1)
+typedef struct _GETVERSIONINPARAMS {
+ BYTE bVersion; // Binary driver version.
+ BYTE bRevision; // Binary driver revision.
+ BYTE bReserved; // Not used.
+ BYTE bIDEDeviceMap; // Bit map of IDE devices.
+ DWORD fCapabilities; // Bit mask of driver capabilities.
+ DWORD dwReserved[4]; // For future use.
+} GETVERSIONINPARAMS, *PGETVERSIONINPARAMS, *LPGETVERSIONINPARAMS;
+#pragma pack()
+
+//
+// Bits returned in the fCapabilities member of GETVERSIONINPARAMS
+//
+
+#define CAP_ATA_ID_CMD 1 // ATA ID command supported
+#define CAP_ATAPI_ID_CMD 2 // ATAPI ID command supported
+#define CAP_SMART_CMD 4 // SMART commannds supported
+
+//
+// IDE registers
+//
+
+#pragma pack(1)
+typedef struct _IDEREGS {
+ BYTE bFeaturesReg; // Used for specifying SMART "commands".
+ BYTE bSectorCountReg; // IDE sector count register
+ BYTE bSectorNumberReg; // IDE sector number register
+ BYTE bCylLowReg; // IDE low order cylinder value
+ BYTE bCylHighReg; // IDE high order cylinder value
+ BYTE bDriveHeadReg; // IDE drive/head register
+ BYTE bCommandReg; // Actual IDE command.
+ BYTE bReserved; // reserved for future use. Must be zero.
+} IDEREGS, *PIDEREGS, *LPIDEREGS;
+#pragma pack()
+
+//
+// Valid values for the bCommandReg member of IDEREGS.
+//
+
+#define ATAPI_ID_CMD 0xA1 // Returns ID sector for ATAPI.
+#define ID_CMD 0xEC // Returns ID sector for ATA.
+#define SMART_CMD 0xB0 // Performs SMART cmd.
+ // Requires valid bFeaturesReg,
+ // bCylLowReg, and bCylHighReg
+
+//
+// Cylinder register defines for SMART command
+//
+
+#define SMART_CYL_LOW 0x4F
+#define SMART_CYL_HI 0xC2
+
+
+//
+// SENDCMDINPARAMS contains the input parameters for the
+// Send Command to Drive function.
+//
+
+#pragma pack(1)
+typedef struct _SENDCMDINPARAMS {
+ DWORD cBufferSize; // Buffer size in bytes
+ IDEREGS irDriveRegs; // Structure with drive register values.
+ BYTE bDriveNumber; // Physical drive number to send
+ // command to (0,1,2,3).
+ BYTE bReserved[3]; // Reserved for future expansion.
+ DWORD dwReserved[4]; // For future use.
+ BYTE bBuffer[1]; // Input buffer.
+} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;
+#pragma pack()
+
+//
+// Status returned from driver
+//
+
+#pragma pack(1)
+typedef struct _DRIVERSTATUS {
+ BYTE bDriverError; // Error code from driver,
+ // or 0 if no error.
+ BYTE bIDEError; // Contents of IDE Error register.
+ // Only valid when bDriverError
+ // is SMART_IDE_ERROR.
+ BYTE bReserved[2]; // Reserved for future expansion.
+ DWORD dwReserved[2]; // Reserved for future expansion.
+} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS;
+#pragma pack()
+
+//
+// bDriverError values
+//
+
+#define SMART_NO_ERROR 0 // No error
+#define SMART_IDE_ERROR 1 // Error from IDE controller
+#define SMART_INVALID_FLAG 2 // Invalid command flag
+#define SMART_INVALID_COMMAND 3 // Invalid command byte
+#define SMART_INVALID_BUFFER 4 // Bad buffer (null, invalid addr..)
+#define SMART_INVALID_DRIVE 5 // Drive number not valid
+#define SMART_INVALID_IOCTL 6 // Invalid IOCTL
+#define SMART_ERROR_NO_MEM 7 // Could not lock user's buffer
+#define SMART_INVALID_REGISTER 8 // Some IDE Register not valid
+#define SMART_NOT_SUPPORTED 9 // Invalid cmd flag set
+#define SMART_NO_IDE_DEVICE 10 // Cmd issued to device not present
+ // although drive number is valid
+
+#pragma pack(1)
+typedef struct _SENDCMDOUTPARAMS {
+ DWORD cBufferSize; // Size of bBuffer in bytes
+ DRIVERSTATUS DriverStatus; // Driver status structure.
+ BYTE bBuffer[1]; // Buffer of arbitrary length in which to store the data read from the // drive.
+} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;
+#pragma pack()
+
+
+#define READ_ATTRIBUTE_BUFFER_SIZE 512
+#define IDENTIFY_BUFFER_SIZE 512
+#define READ_THRESHOLD_BUFFER_SIZE 512
+
+//
+// Feature register defines for SMART "sub commands"
+//
+
+#define READ_ATTRIBUTES 0xD0
+#define READ_THRESHOLDS 0xD1
+#define ENABLE_DISABLE_AUTOSAVE 0xD2
+#define SAVE_ATTRIBUTE_VALUES 0xD3
+#define EXECUTE_OFFLINE_DIAGS 0xD4
+#define ENABLE_SMART 0xD8
+#define DISABLE_SMART 0xD9
+#define RETURN_SMART_STATUS 0xDA
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+
+
+#define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+
+//
+// The following values follow the escape designator in the
+// data stream if the LSRMST_INSERT mode has been turned on.
+//
+#define SERIAL_LSRMST_ESCAPE ((BYTE )0x00)
+
+//
+// Following this value is the contents of the line status
+// register, and then the character in the RX hardware when
+// the line status register was encountered.
+//
+#define SERIAL_LSRMST_LSR_DATA ((BYTE )0x01)
+
+//
+// Following this value is the contents of the line status
+// register. No error character follows
+//
+#define SERIAL_LSRMST_LSR_NODATA ((BYTE )0x02)
+
+//
+// Following this value is the contents of the modem status
+// register.
+//
+#define SERIAL_LSRMST_MST ((BYTE )0x03)
+
+#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_MOUNT_DBLS_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,13, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17, METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18, METHOD_NEITHER, FILE_WRITE_DATA)
+
+#endif // _WINIOCTL_
+
diff --git a/public/sdk/inc/winmm.h b/public/sdk/inc/winmm.h
new file mode 100644
index 000000000..01b9b0a6b
--- /dev/null
+++ b/public/sdk/inc/winmm.h
@@ -0,0 +1,14 @@
+/*++ BUILD Version: 0002 Increment this if a change has global effects
+
+Copyright (c) 1990-1995, Microsoft Corporation
+
+Module Name:
+
+ winmm.h
+
+Abstract:
+
+ This include file defines all the support for Multimedia applications.
+
+--*/
+
diff --git a/public/sdk/inc/winnetwk.h b/public/sdk/inc/winnetwk.h
new file mode 100644
index 000000000..809d320ac
--- /dev/null
+++ b/public/sdk/inc/winnetwk.h
@@ -0,0 +1,820 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ winnetwk.h
+
+Abstract:
+
+ Standard WINNET Header File for WIN32
+
+Environment:
+
+ User Mode -Win32
+
+Notes:
+
+ optional-notes
+
+--*/
+
+#ifndef _WINNETWK_
+#define _WINNETWK_
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+//
+// Network types
+//
+
+#define WNNC_NET_MSNET 0x00010000
+#define WNNC_NET_LANMAN 0x00020000
+#define WNNC_NET_NETWARE 0x00030000
+#define WNNC_NET_VINES 0x00040000
+#define WNNC_NET_10NET 0x00050000
+#define WNNC_NET_LOCUS 0x00060000
+#define WNNC_NET_SUN_PC_NFS 0x00070000
+#define WNNC_NET_LANSTEP 0x00080000
+#define WNNC_NET_9TILES 0x00090000
+#define WNNC_NET_LANTASTIC 0x000A0000
+#define WNNC_NET_AS400 0x000B0000
+#define WNNC_NET_FTP_NFS 0x000C0000
+#define WNNC_NET_PATHWORKS 0x000D0000
+#define WNNC_NET_LIFENET 0x000E0000
+#define WNNC_NET_POWERLAN 0x000F0000
+#define WNNC_NET_BWNFS 0x00100000
+#define WNNC_NET_COGENT 0x00110000
+#define WNNC_NET_FARALLON 0x00120000
+#define WNNC_NET_APPLETALK 0x00130000
+#define WNNC_NET_INTERGRAPH 0x00140000
+#define WNNC_NET_SYMFONET 0x00150000
+#define WNNC_NET_CLEARCASE 0x00160000
+
+
+//
+// Network Resources.
+//
+
+#define RESOURCE_CONNECTED 0x00000001
+#define RESOURCE_GLOBALNET 0x00000002
+#define RESOURCE_REMEMBERED 0x00000003
+#if(WINVER >= 0x0400)
+#define RESOURCE_RECENT 0x00000004
+#define RESOURCE_CONTEXT 0x00000005
+#endif /* WINVER >= 0x0400 */
+
+#define RESOURCETYPE_ANY 0x00000000
+#define RESOURCETYPE_DISK 0x00000001
+#define RESOURCETYPE_PRINT 0x00000002
+#if(WINVER >= 0x0400)
+#define RESOURCETYPE_RESERVED 0x00000008
+#endif /* WINVER >= 0x0400 */
+#define RESOURCETYPE_UNKNOWN 0xFFFFFFFF
+
+#define RESOURCEUSAGE_CONNECTABLE 0x00000001
+#define RESOURCEUSAGE_CONTAINER 0x00000002
+#if(WINVER >= 0x0400)
+#define RESOURCEUSAGE_NOLOCALDEVICE 0x00000004
+#define RESOURCEUSAGE_SIBLING 0x00000008
+#define RESOURCEUSAGE_ATTACHED 0x00000010
+#define RESOURCEUSAGE_ALL (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED)
+#endif /* WINVER >= 0x0400 */
+#define RESOURCEUSAGE_RESERVED 0x80000000
+
+#define RESOURCEDISPLAYTYPE_GENERIC 0x00000000
+#define RESOURCEDISPLAYTYPE_DOMAIN 0x00000001
+#define RESOURCEDISPLAYTYPE_SERVER 0x00000002
+#define RESOURCEDISPLAYTYPE_SHARE 0x00000003
+#define RESOURCEDISPLAYTYPE_FILE 0x00000004
+#define RESOURCEDISPLAYTYPE_GROUP 0x00000005
+#if(WINVER >= 0x0400)
+#define RESOURCEDISPLAYTYPE_NETWORK 0x00000006
+#define RESOURCEDISPLAYTYPE_ROOT 0x00000007
+#define RESOURCEDISPLAYTYPE_SHAREADMIN 0x00000008
+#define RESOURCEDISPLAYTYPE_DIRECTORY 0x00000009
+#endif /* WINVER >= 0x0400 */
+#define RESOURCEDISPLAYTYPE_TREE 0x0000000A
+#if(WINVER >= 0x0400)
+#define RESOURCEDISPLAYTYPE_NDSCONTAINER 0x0000000B
+#endif /* WINVER >= 0x0400 */
+
+typedef struct _NETRESOURCEA {
+ DWORD dwScope;
+ DWORD dwType;
+ DWORD dwDisplayType;
+ DWORD dwUsage;
+ LPSTR lpLocalName;
+ LPSTR lpRemoteName;
+ LPSTR lpComment ;
+ LPSTR lpProvider;
+}NETRESOURCEA, *LPNETRESOURCEA;
+typedef struct _NETRESOURCEW {
+ DWORD dwScope;
+ DWORD dwType;
+ DWORD dwDisplayType;
+ DWORD dwUsage;
+ LPWSTR lpLocalName;
+ LPWSTR lpRemoteName;
+ LPWSTR lpComment ;
+ LPWSTR lpProvider;
+}NETRESOURCEW, *LPNETRESOURCEW;
+#ifdef UNICODE
+typedef NETRESOURCEW NETRESOURCE;
+typedef LPNETRESOURCEW LPNETRESOURCE;
+#else
+typedef NETRESOURCEA NETRESOURCE;
+typedef LPNETRESOURCEA LPNETRESOURCE;
+#endif // UNICODE
+
+
+//
+// Network Connections.
+//
+
+#define NETPROPERTY_PERSISTENT 1
+
+#define CONNECT_UPDATE_PROFILE 0x00000001
+#define CONNECT_UPDATE_RECENT 0x00000002
+#define CONNECT_TEMPORARY 0x00000004
+#define CONNECT_INTERACTIVE 0x00000008
+#define CONNECT_PROMPT 0x00000010
+#define CONNECT_NEED_DRIVE 0x00000020
+#if(WINVER >= 0x0400)
+#define CONNECT_REFCOUNT 0x00000040
+#define CONNECT_REDIRECT 0x00000080
+#define CONNECT_LOCALDRIVE 0x00000100
+#define CONNECT_CURRENT_MEDIA 0x00000200
+#define CONNECT_DEFERRED 0x00000400
+#define CONNECT_RESERVED 0xFF000000
+#endif /* WINVER >= 0x0400 */
+
+
+DWORD APIENTRY
+WNetAddConnectionA(
+ LPCSTR lpRemoteName,
+ LPCSTR lpPassword,
+ LPCSTR lpLocalName
+ );
+DWORD APIENTRY
+WNetAddConnectionW(
+ LPCWSTR lpRemoteName,
+ LPCWSTR lpPassword,
+ LPCWSTR lpLocalName
+ );
+#ifdef UNICODE
+#define WNetAddConnection WNetAddConnectionW
+#else
+#define WNetAddConnection WNetAddConnectionA
+#endif // !UNICODE
+
+DWORD APIENTRY
+WNetAddConnection2A(
+ LPNETRESOURCEA lpNetResource,
+ LPCSTR lpPassword,
+ LPCSTR lpUserName,
+ DWORD dwFlags
+ );
+DWORD APIENTRY
+WNetAddConnection2W(
+ LPNETRESOURCEW lpNetResource,
+ LPCWSTR lpPassword,
+ LPCWSTR lpUserName,
+ DWORD dwFlags
+ );
+#ifdef UNICODE
+#define WNetAddConnection2 WNetAddConnection2W
+#else
+#define WNetAddConnection2 WNetAddConnection2A
+#endif // !UNICODE
+
+DWORD APIENTRY
+WNetAddConnection3A(
+ HWND hwndOwner,
+ LPNETRESOURCEA lpNetResource,
+ LPCSTR lpPassword,
+ LPCSTR lpUserName,
+ DWORD dwFlags
+ );
+DWORD APIENTRY
+WNetAddConnection3W(
+ HWND hwndOwner,
+ LPNETRESOURCEW lpNetResource,
+ LPCWSTR lpPassword,
+ LPCWSTR lpUserName,
+ DWORD dwFlags
+ );
+#ifdef UNICODE
+#define WNetAddConnection3 WNetAddConnection3W
+#else
+#define WNetAddConnection3 WNetAddConnection3A
+#endif // !UNICODE
+
+DWORD APIENTRY
+WNetCancelConnectionA(
+ LPCSTR lpName,
+ BOOL fForce
+ );
+DWORD APIENTRY
+WNetCancelConnectionW(
+ LPCWSTR lpName,
+ BOOL fForce
+ );
+#ifdef UNICODE
+#define WNetCancelConnection WNetCancelConnectionW
+#else
+#define WNetCancelConnection WNetCancelConnectionA
+#endif // !UNICODE
+
+DWORD APIENTRY
+WNetCancelConnection2A(
+ LPCSTR lpName,
+ DWORD dwFlags,
+ BOOL fForce
+ );
+DWORD APIENTRY
+WNetCancelConnection2W(
+ LPCWSTR lpName,
+ DWORD dwFlags,
+ BOOL fForce
+ );
+#ifdef UNICODE
+#define WNetCancelConnection2 WNetCancelConnection2W
+#else
+#define WNetCancelConnection2 WNetCancelConnection2A
+#endif // !UNICODE
+
+DWORD APIENTRY
+WNetGetConnectionA(
+ LPCSTR lpLocalName,
+ LPSTR lpRemoteName,
+ LPDWORD lpnLength
+ );
+DWORD APIENTRY
+WNetGetConnectionW(
+ LPCWSTR lpLocalName,
+ LPWSTR lpRemoteName,
+ LPDWORD lpnLength
+ );
+#ifdef UNICODE
+#define WNetGetConnection WNetGetConnectionW
+#else
+#define WNetGetConnection WNetGetConnectionA
+#endif // !UNICODE
+
+
+#if(WINVER >= 0x0400)
+DWORD APIENTRY
+WNetUseConnectionA(
+ HWND hwndOwner,
+ LPNETRESOURCEA lpNetResource,
+ LPCSTR lpUserID,
+ LPCSTR lpPassword,
+ DWORD dwFlags,
+ LPSTR lpAccessName,
+ LPDWORD lpBufferSize,
+ LPDWORD lpResult
+ );
+DWORD APIENTRY
+WNetUseConnectionW(
+ HWND hwndOwner,
+ LPNETRESOURCEW lpNetResource,
+ LPCWSTR lpUserID,
+ LPCWSTR lpPassword,
+ DWORD dwFlags,
+ LPWSTR lpAccessName,
+ LPDWORD lpBufferSize,
+ LPDWORD lpResult
+ );
+#ifdef UNICODE
+#define WNetUseConnection WNetUseConnectionW
+#else
+#define WNetUseConnection WNetUseConnectionA
+#endif // !UNICODE
+
+DWORD APIENTRY
+WNetSetConnectionA(
+ LPCSTR lpName,
+ DWORD dwProperties,
+ LPVOID pvValues
+ );
+DWORD APIENTRY
+WNetSetConnectionW(
+ LPCWSTR lpName,
+ DWORD dwProperties,
+ LPVOID pvValues
+ );
+#ifdef UNICODE
+#define WNetSetConnection WNetSetConnectionW
+#else
+#define WNetSetConnection WNetSetConnectionA
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+
+
+//
+// Network Connection Dialogs.
+//
+
+DWORD APIENTRY
+WNetConnectionDialog(
+ HWND hwnd,
+ DWORD dwType
+ );
+
+DWORD APIENTRY
+WNetDisconnectDialog(
+ HWND hwnd,
+ DWORD dwType
+ );
+
+#if(WINVER >= 0x0400)
+typedef struct _CONNECTDLGSTRUCTA{
+ DWORD cbStructure; /* size of this structure in bytes */
+ HWND hwndOwner; /* owner window for the dialog */
+ LPNETRESOURCEA lpConnRes;/* Requested Resource info */
+ DWORD dwFlags; /* flags (see below) */
+ DWORD dwDevNum; /* number of devices connected to */
+} CONNECTDLGSTRUCTA, FAR *LPCONNECTDLGSTRUCTA;
+typedef struct _CONNECTDLGSTRUCTW{
+ DWORD cbStructure; /* size of this structure in bytes */
+ HWND hwndOwner; /* owner window for the dialog */
+ LPNETRESOURCEW lpConnRes;/* Requested Resource info */
+ DWORD dwFlags; /* flags (see below) */
+ DWORD dwDevNum; /* number of devices connected to */
+} CONNECTDLGSTRUCTW, FAR *LPCONNECTDLGSTRUCTW;
+#ifdef UNICODE
+typedef CONNECTDLGSTRUCTW CONNECTDLGSTRUCT;
+typedef LPCONNECTDLGSTRUCTW LPCONNECTDLGSTRUCT;
+#else
+typedef CONNECTDLGSTRUCTA CONNECTDLGSTRUCT;
+typedef LPCONNECTDLGSTRUCTA LPCONNECTDLGSTRUCT;
+#endif // UNICODE
+
+#define CONNDLG_RO_PATH 0x00000001 /* Resource path should be read-only */
+#define CONNDLG_CONN_POINT 0x00000002 /* Netware -style movable connection point enabled */
+#define CONNDLG_USE_MRU 0x00000004 /* Use MRU combobox */
+#define CONNDLG_HIDE_BOX 0x00000008 /* Hide persistent connect checkbox */
+
+/*
+ * NOTE: Set at most ONE of the below flags. If neither flag is set,
+ * then the persistence is set to whatever the user chose during
+ * a previous connection
+ */
+#define CONNDLG_PERSIST 0x00000010 /* Force persistent connection */
+#define CONNDLG_NOT_PERSIST 0x00000020 /* Force connection NOT persistent */
+
+DWORD APIENTRY
+WNetConnectionDialog1A(
+ LPCONNECTDLGSTRUCTA lpConnDlgStruct
+ );
+DWORD APIENTRY
+WNetConnectionDialog1W(
+ LPCONNECTDLGSTRUCTW lpConnDlgStruct
+ );
+#ifdef UNICODE
+#define WNetConnectionDialog1 WNetConnectionDialog1W
+#else
+#define WNetConnectionDialog1 WNetConnectionDialog1A
+#endif // !UNICODE
+
+typedef struct _DISCDLGSTRUCTA{
+ DWORD cbStructure; /* size of this structure in bytes */
+ HWND hwndOwner; /* owner window for the dialog */
+ LPSTR lpLocalName; /* local device name */
+ LPSTR lpRemoteName; /* network resource name */
+ DWORD dwFlags; /* flags */
+} DISCDLGSTRUCTA, FAR *LPDISCDLGSTRUCTA;
+typedef struct _DISCDLGSTRUCTW{
+ DWORD cbStructure; /* size of this structure in bytes */
+ HWND hwndOwner; /* owner window for the dialog */
+ LPWSTR lpLocalName; /* local device name */
+ LPWSTR lpRemoteName; /* network resource name */
+ DWORD dwFlags; /* flags */
+} DISCDLGSTRUCTW, FAR *LPDISCDLGSTRUCTW;
+#ifdef UNICODE
+typedef DISCDLGSTRUCTW DISCDLGSTRUCT;
+typedef LPDISCDLGSTRUCTW LPDISCDLGSTRUCT;
+#else
+typedef DISCDLGSTRUCTA DISCDLGSTRUCT;
+typedef LPDISCDLGSTRUCTA LPDISCDLGSTRUCT;
+#endif // UNICODE
+
+#define DISC_UPDATE_PROFILE 0x00000001
+#define DISC_NO_FORCE 0x00000040
+
+DWORD APIENTRY
+WNetDisconnectDialog1A(
+ LPDISCDLGSTRUCTA lpConnDlgStruct
+ );
+DWORD APIENTRY
+WNetDisconnectDialog1W(
+ LPDISCDLGSTRUCTW lpConnDlgStruct
+ );
+#ifdef UNICODE
+#define WNetDisconnectDialog1 WNetDisconnectDialog1W
+#else
+#define WNetDisconnectDialog1 WNetDisconnectDialog1A
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+
+
+//
+// Network Browsing.
+//
+
+DWORD APIENTRY
+WNetOpenEnumA(
+ DWORD dwScope,
+ DWORD dwType,
+ DWORD dwUsage,
+ LPNETRESOURCEA lpNetResource,
+ LPHANDLE lphEnum
+ );
+DWORD APIENTRY
+WNetOpenEnumW(
+ DWORD dwScope,
+ DWORD dwType,
+ DWORD dwUsage,
+ LPNETRESOURCEW lpNetResource,
+ LPHANDLE lphEnum
+ );
+#ifdef UNICODE
+#define WNetOpenEnum WNetOpenEnumW
+#else
+#define WNetOpenEnum WNetOpenEnumA
+#endif // !UNICODE
+
+DWORD APIENTRY
+WNetEnumResourceA(
+ HANDLE hEnum,
+ LPDWORD lpcCount,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+DWORD APIENTRY
+WNetEnumResourceW(
+ HANDLE hEnum,
+ LPDWORD lpcCount,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+#ifdef UNICODE
+#define WNetEnumResource WNetEnumResourceW
+#else
+#define WNetEnumResource WNetEnumResourceA
+#endif // !UNICODE
+
+DWORD APIENTRY
+WNetCloseEnum(
+ HANDLE hEnum
+ );
+
+
+
+//
+// Universal Naming.
+//
+
+#define UNIVERSAL_NAME_INFO_LEVEL 0x00000001
+#define REMOTE_NAME_INFO_LEVEL 0x00000002
+
+typedef struct _UNIVERSAL_NAME_INFOA {
+ LPSTR lpUniversalName;
+}UNIVERSAL_NAME_INFOA, *LPUNIVERSAL_NAME_INFOA;
+typedef struct _UNIVERSAL_NAME_INFOW {
+ LPWSTR lpUniversalName;
+}UNIVERSAL_NAME_INFOW, *LPUNIVERSAL_NAME_INFOW;
+#ifdef UNICODE
+typedef UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO;
+typedef LPUNIVERSAL_NAME_INFOW LPUNIVERSAL_NAME_INFO;
+#else
+typedef UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO;
+typedef LPUNIVERSAL_NAME_INFOA LPUNIVERSAL_NAME_INFO;
+#endif // UNICODE
+
+typedef struct _REMOTE_NAME_INFOA {
+ LPSTR lpUniversalName;
+ LPSTR lpConnectionName;
+ LPSTR lpRemainingPath;
+}REMOTE_NAME_INFOA, *LPREMOTE_NAME_INFOA;
+typedef struct _REMOTE_NAME_INFOW {
+ LPWSTR lpUniversalName;
+ LPWSTR lpConnectionName;
+ LPWSTR lpRemainingPath;
+}REMOTE_NAME_INFOW, *LPREMOTE_NAME_INFOW;
+#ifdef UNICODE
+typedef REMOTE_NAME_INFOW REMOTE_NAME_INFO;
+typedef LPREMOTE_NAME_INFOW LPREMOTE_NAME_INFO;
+#else
+typedef REMOTE_NAME_INFOA REMOTE_NAME_INFO;
+typedef LPREMOTE_NAME_INFOA LPREMOTE_NAME_INFO;
+#endif // UNICODE
+
+DWORD APIENTRY
+WNetGetUniversalNameA(
+ LPCSTR lpLocalPath,
+ DWORD dwInfoLevel,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+DWORD APIENTRY
+WNetGetUniversalNameW(
+ LPCWSTR lpLocalPath,
+ DWORD dwInfoLevel,
+ LPVOID lpBuffer,
+ LPDWORD lpBufferSize
+ );
+#ifdef UNICODE
+#define WNetGetUniversalName WNetGetUniversalNameW
+#else
+#define WNetGetUniversalName WNetGetUniversalNameA
+#endif // !UNICODE
+
+//
+// Authentication and Logon/Logoff.
+//
+
+DWORD APIENTRY
+WNetGetUserA(
+ LPCSTR lpName,
+ LPSTR lpUserName,
+ LPDWORD lpnLength
+ );
+DWORD APIENTRY
+WNetGetUserW(
+ LPCWSTR lpName,
+ LPWSTR lpUserName,
+ LPDWORD lpnLength
+ );
+#ifdef UNICODE
+#define WNetGetUser WNetGetUserW
+#else
+#define WNetGetUser WNetGetUserA
+#endif // !UNICODE
+
+
+
+
+//
+// Other.
+//
+
+#if(WINVER >= 0x0400)
+#define WNFMT_MULTILINE 0x01
+#define WNFMT_ABBREVIATED 0x02
+#define WNFMT_INENUM 0x10
+#define WNFMT_CONNECTION 0x20
+#endif /* WINVER >= 0x0400 */
+
+
+#if(WINVER >= 0x0400)
+DWORD APIENTRY
+WNetGetProviderNameA(
+ DWORD dwNetType,
+ LPSTR lpProviderName,
+ LPDWORD lpBufferSize
+ );
+DWORD APIENTRY
+WNetGetProviderNameW(
+ DWORD dwNetType,
+ LPWSTR lpProviderName,
+ LPDWORD lpBufferSize
+ );
+#ifdef UNICODE
+#define WNetGetProviderName WNetGetProviderNameW
+#else
+#define WNetGetProviderName WNetGetProviderNameA
+#endif // !UNICODE
+
+typedef struct _NETINFOSTRUCT{
+ DWORD cbStructure;
+ DWORD dwProviderVersion;
+ DWORD dwStatus;
+ DWORD dwCharacteristics;
+ DWORD dwHandle;
+ WORD wNetType;
+ DWORD dwPrinters;
+ DWORD dwDrives;
+} NETINFOSTRUCT, FAR *LPNETINFOSTRUCT;
+
+#define NETINFO_DLL16 0x00000001 /* Provider running as 16 bit Winnet Driver */
+#define NETINFO_DISKRED 0x00000004 /* Provider requires disk redirections to connect */
+#define NETINFO_PRINTERRED 0x00000008 /* Provider requires printer redirections to connect */
+
+DWORD APIENTRY
+WNetGetNetworkInformationA(
+ LPCSTR lpProvider,
+ LPNETINFOSTRUCT lpNetInfoStruct
+ );
+DWORD APIENTRY
+WNetGetNetworkInformationW(
+ LPCWSTR lpProvider,
+ LPNETINFOSTRUCT lpNetInfoStruct
+ );
+#ifdef UNICODE
+#define WNetGetNetworkInformation WNetGetNetworkInformationW
+#else
+#define WNetGetNetworkInformation WNetGetNetworkInformationA
+#endif // !UNICODE
+
+//
+// User Profiles.
+//
+
+typedef UINT (FAR PASCAL *PFNGETPROFILEPATHA) (
+ LPCSTR pszUsername,
+ LPSTR pszBuffer,
+ UINT cbBuffer
+ );
+typedef UINT (FAR PASCAL *PFNGETPROFILEPATHW) (
+ LPCWSTR pszUsername,
+ LPWSTR pszBuffer,
+ UINT cbBuffer
+ );
+#ifdef UNICODE
+#define PFNGETPROFILEPATH PFNGETPROFILEPATHW
+#else
+#define PFNGETPROFILEPATH PFNGETPROFILEPATHA
+#endif // !UNICODE
+
+typedef UINT (FAR PASCAL *PFNRECONCILEPROFILEA) (
+ LPCSTR pszCentralFile,
+ LPCSTR pszLocalFile,
+ DWORD dwFlags
+ );
+typedef UINT (FAR PASCAL *PFNRECONCILEPROFILEW) (
+ LPCWSTR pszCentralFile,
+ LPCWSTR pszLocalFile,
+ DWORD dwFlags
+ );
+#ifdef UNICODE
+#define PFNRECONCILEPROFILE PFNRECONCILEPROFILEW
+#else
+#define PFNRECONCILEPROFILE PFNRECONCILEPROFILEA
+#endif // !UNICODE
+
+#define RP_LOGON 0x01 /* if set, do for logon, else for logoff */
+#define RP_INIFILE 0x02 /* if set, reconcile .INI file, else reg. hive */
+
+
+//
+// Policies.
+//
+
+typedef BOOL (FAR PASCAL *PFNPROCESSPOLICIESA) (
+ HWND hwnd,
+ LPCSTR pszPath,
+ LPCSTR pszUsername,
+ LPCSTR pszComputerName,
+ DWORD dwFlags
+ );
+typedef BOOL (FAR PASCAL *PFNPROCESSPOLICIESW) (
+ HWND hwnd,
+ LPCWSTR pszPath,
+ LPCWSTR pszUsername,
+ LPCWSTR pszComputerName,
+ DWORD dwFlags
+ );
+#ifdef UNICODE
+#define PFNPROCESSPOLICIES PFNPROCESSPOLICIESW
+#else
+#define PFNPROCESSPOLICIES PFNPROCESSPOLICIESA
+#endif // !UNICODE
+
+#define PP_DISPLAYERRORS 0x01 /* if set, display error messages, else fail silently if error */
+#endif /* WINVER >= 0x0400 */
+
+
+//
+// Error handling.
+//
+
+DWORD APIENTRY
+WNetGetLastErrorA(
+ LPDWORD lpError,
+ LPSTR lpErrorBuf,
+ DWORD nErrorBufSize,
+ LPSTR lpNameBuf,
+ DWORD nNameBufSize
+ );
+DWORD APIENTRY
+WNetGetLastErrorW(
+ LPDWORD lpError,
+ LPWSTR lpErrorBuf,
+ DWORD nErrorBufSize,
+ LPWSTR lpNameBuf,
+ DWORD nNameBufSize
+ );
+#ifdef UNICODE
+#define WNetGetLastError WNetGetLastErrorW
+#else
+#define WNetGetLastError WNetGetLastErrorA
+#endif // !UNICODE
+
+//
+// STATUS CODES
+//
+
+// General
+
+#define WN_SUCCESS NO_ERROR
+#define WN_NO_ERROR NO_ERROR
+#define WN_NOT_SUPPORTED ERROR_NOT_SUPPORTED
+#define WN_CANCEL ERROR_CANCELLED
+#define WN_RETRY ERROR_RETRY
+#define WN_NET_ERROR ERROR_UNEXP_NET_ERR
+#define WN_MORE_DATA ERROR_MORE_DATA
+#define WN_BAD_POINTER ERROR_INVALID_ADDRESS
+#define WN_BAD_VALUE ERROR_INVALID_PARAMETER
+#define WN_BAD_USER ERROR_BAD_USERNAME
+#define WN_BAD_PASSWORD ERROR_INVALID_PASSWORD
+#define WN_ACCESS_DENIED ERROR_ACCESS_DENIED
+#define WN_FUNCTION_BUSY ERROR_BUSY
+#define WN_WINDOWS_ERROR ERROR_UNEXP_NET_ERR
+#define WN_OUT_OF_MEMORY ERROR_NOT_ENOUGH_MEMORY
+#define WN_NO_NETWORK ERROR_NO_NETWORK
+#define WN_EXTENDED_ERROR ERROR_EXTENDED_ERROR
+#define WN_BAD_LEVEL ERROR_INVALID_LEVEL
+#define WN_BAD_HANDLE ERROR_INVALID_HANDLE
+#if(WINVER >= 0x0400)
+#define WN_NOT_INITIALIZING ERROR_ALREADY_INITIALIZED
+#define WN_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES
+#endif /* WINVER >= 0x0400 */
+
+// Connection
+
+#define WN_NOT_CONNECTED ERROR_NOT_CONNECTED
+#define WN_OPEN_FILES ERROR_OPEN_FILES
+#define WN_DEVICE_IN_USE ERROR_DEVICE_IN_USE
+#define WN_BAD_NETNAME ERROR_BAD_NET_NAME
+#define WN_BAD_LOCALNAME ERROR_BAD_DEVICE
+#define WN_ALREADY_CONNECTED ERROR_ALREADY_ASSIGNED
+#define WN_DEVICE_ERROR ERROR_GEN_FAILURE
+#define WN_CONNECTION_CLOSED ERROR_CONNECTION_UNAVAIL
+#define WN_NO_NET_OR_BAD_PATH ERROR_NO_NET_OR_BAD_PATH
+#define WN_BAD_PROVIDER ERROR_BAD_PROVIDER
+#define WN_CANNOT_OPEN_PROFILE ERROR_CANNOT_OPEN_PROFILE
+#define WN_BAD_PROFILE ERROR_BAD_PROFILE
+#define WN_BAD_DEV_TYPE ERROR_BAD_DEV_TYPE
+#define WN_DEVICE_ALREADY_REMEMBERED ERROR_DEVICE_ALREADY_REMEMBERED
+
+// Enumeration
+
+#define WN_NO_MORE_ENTRIES ERROR_NO_MORE_ITEMS
+#define WN_NOT_CONTAINER ERROR_NOT_CONTAINER
+
+#if(WINVER >= 0x0400)
+// Authentication
+
+#define WN_NOT_AUTHENTICATED ERROR_NOT_AUTHENTICATED
+#define WN_NOT_LOGGED_ON ERROR_NOT_LOGGED_ON
+#define WN_NOT_VALIDATED ERROR_NO_LOGON_SERVERS
+#endif /* WINVER >= 0x0400 */
+
+
+//
+// For Shell
+//
+
+#if(WINVER >= 0x0400)
+typedef struct _NETCONNECTINFOSTRUCT{
+ DWORD cbStructure;
+ DWORD dwFlags;
+ DWORD dwSpeed;
+ DWORD dwDelay;
+ DWORD dwOptDataSize;
+} NETCONNECTINFOSTRUCT, *LPNETCONNECTINFOSTRUCT;
+
+#define WNCON_FORNETCARD 0x00000001
+#define WNCON_NOTROUTED 0x00000002
+#define WNCON_SLOWLINK 0x00000004
+#define WNCON_DYNAMIC 0x00000008
+
+DWORD APIENTRY
+MultinetGetConnectionPerformanceA(
+ LPNETRESOURCEA lpNetResource,
+ LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct
+ );
+DWORD APIENTRY
+MultinetGetConnectionPerformanceW(
+ LPNETRESOURCEW lpNetResource,
+ LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct
+ );
+#ifdef UNICODE
+#define MultinetGetConnectionPerformance MultinetGetConnectionPerformanceW
+#else
+#define MultinetGetConnectionPerformance MultinetGetConnectionPerformanceA
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _WINNETWK_
diff --git a/public/sdk/inc/winnls.h b/public/sdk/inc/winnls.h
new file mode 100644
index 000000000..c92fe9b90
--- /dev/null
+++ b/public/sdk/inc/winnls.h
@@ -0,0 +1,1141 @@
+/**************************************************************************
+* *
+* winnls.h -- NLS procedure declarations, constant definitions and macros *
+* *
+* Copyright (c) 1991-1996, Microsoft Corp. All rights reserved. *
+* *
+**************************************************************************/
+
+
+#ifndef _WINNLS_
+#define _WINNLS_
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef NONLS
+
+
+/***************************************************************************\
+* Constants
+*
+* Define all constants for the NLS component here.
+\***************************************************************************/
+
+
+/*
+ * String Length Maximums.
+ */
+#define MAX_LEADBYTES 12 /* 5 ranges, 2 bytes ea., 0 term. */
+#define MAX_DEFAULTCHAR 2 /* single or double byte */
+
+
+/*
+ * MBCS and Unicode Translation Flags.
+ */
+#define MB_PRECOMPOSED 0x00000001 /* use precomposed chars */
+#define MB_COMPOSITE 0x00000002 /* use composite chars */
+#define MB_USEGLYPHCHARS 0x00000004 /* use glyph chars, not ctrl chars */
+#define MB_ERR_INVALID_CHARS 0x00000008 /* error for invalid chars */
+
+#define WC_DEFAULTCHECK 0x00000100 /* check for default char */
+#define WC_COMPOSITECHECK 0x00000200 /* convert composite to precomposed */
+#define WC_DISCARDNS 0x00000010 /* discard non-spacing chars */
+#define WC_SEPCHARS 0x00000020 /* generate separate chars */
+#define WC_DEFAULTCHAR 0x00000040 /* replace w/ default char */
+
+
+
+/*
+ * Character Type Flags.
+ */
+#define CT_CTYPE1 0x00000001 /* ctype 1 information */
+#define CT_CTYPE2 0x00000002 /* ctype 2 information */
+#define CT_CTYPE3 0x00000004 /* ctype 3 information */
+
+/*
+ * CType 1 Flag Bits.
+ */
+#define C1_UPPER 0x0001 /* upper case */
+#define C1_LOWER 0x0002 /* lower case */
+#define C1_DIGIT 0x0004 /* decimal digits */
+#define C1_SPACE 0x0008 /* spacing characters */
+#define C1_PUNCT 0x0010 /* punctuation characters */
+#define C1_CNTRL 0x0020 /* control characters */
+#define C1_BLANK 0x0040 /* blank characters */
+#define C1_XDIGIT 0x0080 /* other digits */
+#define C1_ALPHA 0x0100 /* any linguistic character */
+
+/*
+ * CType 2 Flag Bits.
+ */
+#define C2_LEFTTORIGHT 0x0001 /* left to right */
+#define C2_RIGHTTOLEFT 0x0002 /* right to left */
+
+#define C2_EUROPENUMBER 0x0003 /* European number, digit */
+#define C2_EUROPESEPARATOR 0x0004 /* European numeric separator */
+#define C2_EUROPETERMINATOR 0x0005 /* European numeric terminator */
+#define C2_ARABICNUMBER 0x0006 /* Arabic number */
+#define C2_COMMONSEPARATOR 0x0007 /* common numeric separator */
+
+#define C2_BLOCKSEPARATOR 0x0008 /* block separator */
+#define C2_SEGMENTSEPARATOR 0x0009 /* segment separator */
+#define C2_WHITESPACE 0x000A /* white space */
+#define C2_OTHERNEUTRAL 0x000B /* other neutrals */
+
+#define C2_NOTAPPLICABLE 0x0000 /* no implicit directionality */
+
+/*
+ * CType 3 Flag Bits.
+ */
+#define C3_NONSPACING 0x0001 /* nonspacing character */
+#define C3_DIACRITIC 0x0002 /* diacritic mark */
+#define C3_VOWELMARK 0x0004 /* vowel mark */
+#define C3_SYMBOL 0x0008 /* symbols */
+
+#define C3_KATAKANA 0x0010 /* katakana character */
+#define C3_HIRAGANA 0x0020 /* hiragana character */
+#define C3_HALFWIDTH 0x0040 /* half width character */
+#define C3_FULLWIDTH 0x0080 /* full width character */
+#define C3_IDEOGRAPH 0x0100 /* ideographic character */
+#define C3_KASHIDA 0x0200 /* Arabic kashida character */
+#define C3_LEXICAL 0x0400 /* lexical character */
+
+#define C3_ALPHA 0x8000 /* any linguistic char (C1_ALPHA) */
+
+#define C3_NOTAPPLICABLE 0x0000 /* ctype 3 is not applicable */
+
+
+/*
+ * String Flags.
+ */
+#define NORM_IGNORECASE 0x00000001 /* ignore case */
+#define NORM_IGNORENONSPACE 0x00000002 /* ignore nonspacing chars */
+#define NORM_IGNORESYMBOLS 0x00000004 /* ignore symbols */
+
+#define NORM_IGNOREKANATYPE 0x00010000 /* ignore kanatype */
+#define NORM_IGNOREWIDTH 0x00020000 /* ignore width */
+
+
+
+/*
+ * Locale Independent Mapping Flags.
+ */
+#define MAP_FOLDCZONE 0x00000010 /* fold compatibility zone chars */
+#define MAP_PRECOMPOSED 0x00000020 /* convert to precomposed chars */
+#define MAP_COMPOSITE 0x00000040 /* convert to composite chars */
+#define MAP_FOLDDIGITS 0x00000080 /* all digits to ASCII 0-9 */
+
+
+/*
+ * Locale Dependent Mapping Flags.
+ */
+#define LCMAP_LOWERCASE 0x00000100 /* lower case letters */
+#define LCMAP_UPPERCASE 0x00000200 /* upper case letters */
+#define LCMAP_SORTKEY 0x00000400 /* WC sort key (normalize) */
+#define LCMAP_BYTEREV 0x00000800 /* byte reversal */
+
+#define LCMAP_HIRAGANA 0x00100000 /* map katakana to hiragana */
+#define LCMAP_KATAKANA 0x00200000 /* map hiragana to katakana */
+#define LCMAP_HALFWIDTH 0x00400000 /* map double byte to single byte */
+#define LCMAP_FULLWIDTH 0x00800000 /* map single byte to double byte */
+
+#define LCMAP_LINGUISTIC_CASING 0x01000000 /* use linguistic rules for casing */
+
+#define LCMAP_SIMPLIFIED_CHINESE 0x02000000 /* map traditional chinese to simplified chinese */
+#define LCMAP_TRADITIONAL_CHINESE 0x04000000 /* map simplified chinese to traditional chinese */
+
+
+
+/*
+ * Locale Enumeration Flags.
+ */
+#define LCID_INSTALLED 0x00000001 /* installed locale ids */
+#define LCID_SUPPORTED 0x00000002 /* supported locale ids */
+
+
+/*
+ * Code Page Enumeration Flags.
+ */
+#define CP_INSTALLED 0x00000001 /* installed code page ids */
+#define CP_SUPPORTED 0x00000002 /* supported code page ids */
+
+
+/*
+ * Sorting Flags.
+ *
+ * WORD Sort: culturally correct sort
+ * hyphen and apostrophe are special cased
+ * example: "coop" and "co-op" will sort together in a list
+ *
+ * co_op <------- underscore (symbol)
+ * coat
+ * comb
+ * coop
+ * co-op <------- hyphen (punctuation)
+ * cork
+ * went
+ * were
+ * we're <------- apostrophe (punctuation)
+ *
+ *
+ * STRING Sort: hyphen and apostrophe will sort with all other symbols
+ *
+ * co-op <------- hyphen (punctuation)
+ * co_op <------- underscore (symbol)
+ * coat
+ * comb
+ * coop
+ * cork
+ * we're <------- apostrophe (punctuation)
+ * went
+ * were
+ */
+#define SORT_STRINGSORT 0x00001000 /* use string sort method */
+
+
+/*
+ * Code Page Default Values.
+ */
+#define CP_ACP 0 /* default to ANSI code page */
+#define CP_OEMCP 1 /* default to OEM code page */
+#define CP_MACCP 2 /* default to MAC code page */
+
+#define CP_UTF7 65000 /* UTF-7 translation */
+#define CP_UTF8 65001 /* UTF-8 translation */
+
+
+/*
+ * Country Codes.
+ */
+#define CTRY_DEFAULT 0
+
+#define CTRY_AUSTRALIA 61 /* Australia */
+#define CTRY_AUSTRIA 43 /* Austria */
+#define CTRY_BELGIUM 32 /* Belgium */
+#define CTRY_BRAZIL 55 /* Brazil */
+#define CTRY_BULGARIA 359 /* Bulgaria */
+#define CTRY_CANADA 2 /* Canada */
+#define CTRY_CROATIA 385 /* Croatia */
+#define CTRY_CZECH 42 /* Czech Republic */
+#define CTRY_DENMARK 45 /* Denmark */
+#define CTRY_FINLAND 358 /* Finland */
+#define CTRY_FRANCE 33 /* France */
+#define CTRY_GERMANY 49 /* Germany */
+#define CTRY_GREECE 30 /* Greece */
+#define CTRY_HONG_KONG 852 /* Hong Kong */
+#define CTRY_HUNGARY 36 /* Hungary */
+#define CTRY_ICELAND 354 /* Iceland */
+#define CTRY_IRELAND 353 /* Ireland */
+#define CTRY_ITALY 39 /* Italy */
+#define CTRY_JAPAN 81 /* Japan */
+#define CTRY_MEXICO 52 /* Mexico */
+#define CTRY_NETHERLANDS 31 /* Netherlands */
+#define CTRY_NEW_ZEALAND 64 /* New Zealand */
+#define CTRY_NORWAY 47 /* Norway */
+#define CTRY_POLAND 48 /* Poland */
+#define CTRY_PORTUGAL 351 /* Portugal */
+#define CTRY_PRCHINA 86 /* Peoples' Republic of China */
+#define CTRY_ROMANIA 40 /* Romania */
+#define CTRY_RUSSIA 7 /* Russia */
+#define CTRY_SINGAPORE 65 /* Singapore */
+#define CTRY_SLOVAK 42 /* Slovak Republic */
+#define CTRY_SLOVENIA 386 /* Slovenia */
+#define CTRY_SOUTH_KOREA 82 /* South Korea */
+#define CTRY_SPAIN 34 /* Spain */
+#define CTRY_SWEDEN 46 /* Sweden */
+#define CTRY_SWITZERLAND 41 /* Switzerland */
+#define CTRY_TAIWAN 886 /* Taiwan */
+#define CTRY_TURKEY 90 /* Turkey */
+#define CTRY_UNITED_KINGDOM 44 /* United Kingdom */
+#define CTRY_UNITED_STATES 1 /* United States */
+
+
+/*
+ * Locale Types.
+ *
+ * These types are used for the GetLocaleInfoW NLS API routine.
+ *
+ * LOCALE_NOUSEROVERRIDE is also used in GetTimeFormatW and GetDateFormatW.
+ *
+ * LOCALE_USE_CP_ACP is used in many of the A (Ansi) apis that need to do
+ * string translation.
+ */
+#define LOCALE_NOUSEROVERRIDE 0x80000000 /* do not use user overrides */
+#define LOCALE_USE_CP_ACP 0x40000000 /* use the system ACP */
+
+#define LOCALE_ILANGUAGE 0x00000001 /* language id */
+#define LOCALE_SLANGUAGE 0x00000002 /* localized name of language */
+#define LOCALE_SENGLANGUAGE 0x00001001 /* English name of language */
+#define LOCALE_SABBREVLANGNAME 0x00000003 /* abbreviated language name */
+#define LOCALE_SNATIVELANGNAME 0x00000004 /* native name of language */
+
+#define LOCALE_ICOUNTRY 0x00000005 /* country code */
+#define LOCALE_SCOUNTRY 0x00000006 /* localized name of country */
+#define LOCALE_SENGCOUNTRY 0x00001002 /* English name of country */
+#define LOCALE_SABBREVCTRYNAME 0x00000007 /* abbreviated country name */
+#define LOCALE_SNATIVECTRYNAME 0x00000008 /* native name of country */
+
+#define LOCALE_IDEFAULTLANGUAGE 0x00000009 /* default language id */
+#define LOCALE_IDEFAULTCOUNTRY 0x0000000A /* default country code */
+#define LOCALE_IDEFAULTCODEPAGE 0x0000000B /* default oem code page */
+#define LOCALE_IDEFAULTANSICODEPAGE 0x00001004 /* default ansi code page */
+#define LOCALE_IDEFAULTMACCODEPAGE 0x00001011 /* default mac code page */
+
+#define LOCALE_SLIST 0x0000000C /* list item separator */
+#define LOCALE_IMEASURE 0x0000000D /* 0 = metric, 1 = US */
+
+#define LOCALE_SDECIMAL 0x0000000E /* decimal separator */
+#define LOCALE_STHOUSAND 0x0000000F /* thousand separator */
+#define LOCALE_SGROUPING 0x00000010 /* digit grouping */
+#define LOCALE_IDIGITS 0x00000011 /* number of fractional digits */
+#define LOCALE_ILZERO 0x00000012 /* leading zeros for decimal */
+#define LOCALE_INEGNUMBER 0x00001010 /* negative number mode */
+#define LOCALE_SNATIVEDIGITS 0x00000013 /* native ascii 0-9 */
+
+#define LOCALE_SCURRENCY 0x00000014 /* local monetary symbol */
+#define LOCALE_SINTLSYMBOL 0x00000015 /* intl monetary symbol */
+#define LOCALE_SMONDECIMALSEP 0x00000016 /* monetary decimal separator */
+#define LOCALE_SMONTHOUSANDSEP 0x00000017 /* monetary thousand separator */
+#define LOCALE_SMONGROUPING 0x00000018 /* monetary grouping */
+#define LOCALE_ICURRDIGITS 0x00000019 /* # local monetary digits */
+#define LOCALE_IINTLCURRDIGITS 0x0000001A /* # intl monetary digits */
+#define LOCALE_ICURRENCY 0x0000001B /* positive currency mode */
+#define LOCALE_INEGCURR 0x0000001C /* negative currency mode */
+
+#define LOCALE_SDATE 0x0000001D /* date separator */
+#define LOCALE_STIME 0x0000001E /* time separator */
+#define LOCALE_SSHORTDATE 0x0000001F /* short date format string */
+#define LOCALE_SLONGDATE 0x00000020 /* long date format string */
+#define LOCALE_STIMEFORMAT 0x00001003 /* time format string */
+#define LOCALE_IDATE 0x00000021 /* short date format ordering */
+#define LOCALE_ILDATE 0x00000022 /* long date format ordering */
+#define LOCALE_ITIME 0x00000023 /* time format specifier */
+#define LOCALE_ITIMEMARKPOSN 0x00001005 /* time marker position */
+#define LOCALE_ICENTURY 0x00000024 /* century format specifier (short date) */
+#define LOCALE_ITLZERO 0x00000025 /* leading zeros in time field */
+#define LOCALE_IDAYLZERO 0x00000026 /* leading zeros in day field (short date) */
+#define LOCALE_IMONLZERO 0x00000027 /* leading zeros in month field (short date) */
+#define LOCALE_S1159 0x00000028 /* AM designator */
+#define LOCALE_S2359 0x00000029 /* PM designator */
+
+#define LOCALE_ICALENDARTYPE 0x00001009 /* type of calendar specifier */
+#define LOCALE_IOPTIONALCALENDAR 0x0000100B /* additional calendar types specifier */
+#define LOCALE_IFIRSTDAYOFWEEK 0x0000100C /* first day of week specifier */
+#define LOCALE_IFIRSTWEEKOFYEAR 0x0000100D /* first week of year specifier */
+
+#define LOCALE_SDAYNAME1 0x0000002A /* long name for Monday */
+#define LOCALE_SDAYNAME2 0x0000002B /* long name for Tuesday */
+#define LOCALE_SDAYNAME3 0x0000002C /* long name for Wednesday */
+#define LOCALE_SDAYNAME4 0x0000002D /* long name for Thursday */
+#define LOCALE_SDAYNAME5 0x0000002E /* long name for Friday */
+#define LOCALE_SDAYNAME6 0x0000002F /* long name for Saturday */
+#define LOCALE_SDAYNAME7 0x00000030 /* long name for Sunday */
+#define LOCALE_SABBREVDAYNAME1 0x00000031 /* abbreviated name for Monday */
+#define LOCALE_SABBREVDAYNAME2 0x00000032 /* abbreviated name for Tuesday */
+#define LOCALE_SABBREVDAYNAME3 0x00000033 /* abbreviated name for Wednesday */
+#define LOCALE_SABBREVDAYNAME4 0x00000034 /* abbreviated name for Thursday */
+#define LOCALE_SABBREVDAYNAME5 0x00000035 /* abbreviated name for Friday */
+#define LOCALE_SABBREVDAYNAME6 0x00000036 /* abbreviated name for Saturday */
+#define LOCALE_SABBREVDAYNAME7 0x00000037 /* abbreviated name for Sunday */
+#define LOCALE_SMONTHNAME1 0x00000038 /* long name for January */
+#define LOCALE_SMONTHNAME2 0x00000039 /* long name for February */
+#define LOCALE_SMONTHNAME3 0x0000003A /* long name for March */
+#define LOCALE_SMONTHNAME4 0x0000003B /* long name for April */
+#define LOCALE_SMONTHNAME5 0x0000003C /* long name for May */
+#define LOCALE_SMONTHNAME6 0x0000003D /* long name for June */
+#define LOCALE_SMONTHNAME7 0x0000003E /* long name for July */
+#define LOCALE_SMONTHNAME8 0x0000003F /* long name for August */
+#define LOCALE_SMONTHNAME9 0x00000040 /* long name for September */
+#define LOCALE_SMONTHNAME10 0x00000041 /* long name for October */
+#define LOCALE_SMONTHNAME11 0x00000042 /* long name for November */
+#define LOCALE_SMONTHNAME12 0x00000043 /* long name for December */
+#define LOCALE_SMONTHNAME13 0x0000100E /* long name for 13th month (if exists) */
+#define LOCALE_SABBREVMONTHNAME1 0x00000044 /* abbreviated name for January */
+#define LOCALE_SABBREVMONTHNAME2 0x00000045 /* abbreviated name for February */
+#define LOCALE_SABBREVMONTHNAME3 0x00000046 /* abbreviated name for March */
+#define LOCALE_SABBREVMONTHNAME4 0x00000047 /* abbreviated name for April */
+#define LOCALE_SABBREVMONTHNAME5 0x00000048 /* abbreviated name for May */
+#define LOCALE_SABBREVMONTHNAME6 0x00000049 /* abbreviated name for June */
+#define LOCALE_SABBREVMONTHNAME7 0x0000004A /* abbreviated name for July */
+#define LOCALE_SABBREVMONTHNAME8 0x0000004B /* abbreviated name for August */
+#define LOCALE_SABBREVMONTHNAME9 0x0000004C /* abbreviated name for September */
+#define LOCALE_SABBREVMONTHNAME10 0x0000004D /* abbreviated name for October */
+#define LOCALE_SABBREVMONTHNAME11 0x0000004E /* abbreviated name for November */
+#define LOCALE_SABBREVMONTHNAME12 0x0000004F /* abbreviated name for December */
+#define LOCALE_SABBREVMONTHNAME13 0x0000100F /* abbreviated name for 13th month (if exists) */
+
+#define LOCALE_SPOSITIVESIGN 0x00000050 /* positive sign */
+#define LOCALE_SNEGATIVESIGN 0x00000051 /* negative sign */
+#define LOCALE_IPOSSIGNPOSN 0x00000052 /* positive sign position */
+#define LOCALE_INEGSIGNPOSN 0x00000053 /* negative sign position */
+#define LOCALE_IPOSSYMPRECEDES 0x00000054 /* mon sym precedes pos amt */
+#define LOCALE_IPOSSEPBYSPACE 0x00000055 /* mon sym sep by space from pos amt */
+#define LOCALE_INEGSYMPRECEDES 0x00000056 /* mon sym precedes neg amt */
+#define LOCALE_INEGSEPBYSPACE 0x00000057 /* mon sym sep by space from neg amt */
+
+#if(WINVER >= 0x0400)
+#define LOCALE_FONTSIGNATURE 0x00000058 /* font signature */
+#define LOCALE_SISO639LANGNAME 0x00000059 /* ISO abbreviated language name */
+#define LOCALE_SISO3166CTRYNAME 0x0000005A /* ISO abbreviated country name */
+#endif /* WINVER >= 0x0400 */
+
+/*
+ * Time Flags for GetTimeFormatW.
+ */
+#define TIME_NOMINUTESORSECONDS 0x00000001 /* do not use minutes or seconds */
+#define TIME_NOSECONDS 0x00000002 /* do not use seconds */
+#define TIME_NOTIMEMARKER 0x00000004 /* do not use time marker */
+#define TIME_FORCE24HOURFORMAT 0x00000008 /* always use 24 hour format */
+
+
+/*
+ * Date Flags for GetDateFormatW.
+ */
+#define DATE_SHORTDATE 0x00000001 /* use short date picture */
+#define DATE_LONGDATE 0x00000002 /* use long date picture */
+#define DATE_USE_ALT_CALENDAR 0x00000004 /* use alternate calendar (if any) */
+
+
+/*
+ * Calendar Types.
+ *
+ * These types are used for the GetALTCalendarInfoW NLS API routine.
+ */
+#define CAL_ICALINTVALUE 0x00000001 /* calendar type */
+#define CAL_SCALNAME 0x00000002 /* native name of calendar */
+#define CAL_IYEAROFFSETRANGE 0x00000003 /* starting years of eras */
+#define CAL_SERASTRING 0x00000004 /* era name for IYearOffsetRanges */
+#define CAL_SSHORTDATE 0x00000005 /* short date format string */
+#define CAL_SLONGDATE 0x00000006 /* long date format string */
+#define CAL_SDAYNAME1 0x00000007 /* native name for Monday */
+#define CAL_SDAYNAME2 0x00000008 /* native name for Tuesday */
+#define CAL_SDAYNAME3 0x00000009 /* native name for Wednesday */
+#define CAL_SDAYNAME4 0x0000000a /* native name for Thursday */
+#define CAL_SDAYNAME5 0x0000000b /* native name for Friday */
+#define CAL_SDAYNAME6 0x0000000c /* native name for Saturday */
+#define CAL_SDAYNAME7 0x0000000d /* native name for Sunday */
+#define CAL_SABBREVDAYNAME1 0x0000000e /* abbreviated name for Monday */
+#define CAL_SABBREVDAYNAME2 0x0000000f /* abbreviated name for Tuesday */
+#define CAL_SABBREVDAYNAME3 0x00000010 /* abbreviated name for Wednesday */
+#define CAL_SABBREVDAYNAME4 0x00000011 /* abbreviated name for Thursday */
+#define CAL_SABBREVDAYNAME5 0x00000012 /* abbreviated name for Friday */
+#define CAL_SABBREVDAYNAME6 0x00000013 /* abbreviated name for Saturday */
+#define CAL_SABBREVDAYNAME7 0x00000014 /* abbreviated name for Sunday */
+#define CAL_SMONTHNAME1 0x00000015 /* native name for January */
+#define CAL_SMONTHNAME2 0x00000016 /* native name for February */
+#define CAL_SMONTHNAME3 0x00000017 /* native name for March */
+#define CAL_SMONTHNAME4 0x00000018 /* native name for April */
+#define CAL_SMONTHNAME5 0x00000019 /* native name for May */
+#define CAL_SMONTHNAME6 0x0000001a /* native name for June */
+#define CAL_SMONTHNAME7 0x0000001b /* native name for July */
+#define CAL_SMONTHNAME8 0x0000001c /* native name for August */
+#define CAL_SMONTHNAME9 0x0000001d /* native name for September */
+#define CAL_SMONTHNAME10 0x0000001e /* native name for October */
+#define CAL_SMONTHNAME11 0x0000001f /* native name for November */
+#define CAL_SMONTHNAME12 0x00000020 /* native name for December */
+#define CAL_SMONTHNAME13 0x00000021 /* native name for 13th month (if any) */
+#define CAL_SABBREVMONTHNAME1 0x00000022 /* abbreviated name for January */
+#define CAL_SABBREVMONTHNAME2 0x00000023 /* abbreviated name for February */
+#define CAL_SABBREVMONTHNAME3 0x00000024 /* abbreviated name for March */
+#define CAL_SABBREVMONTHNAME4 0x00000025 /* abbreviated name for April */
+#define CAL_SABBREVMONTHNAME5 0x00000026 /* abbreviated name for May */
+#define CAL_SABBREVMONTHNAME6 0x00000027 /* abbreviated name for June */
+#define CAL_SABBREVMONTHNAME7 0x00000028 /* abbreviated name for July */
+#define CAL_SABBREVMONTHNAME8 0x00000029 /* abbreviated name for August */
+#define CAL_SABBREVMONTHNAME9 0x0000002a /* abbreviated name for September */
+#define CAL_SABBREVMONTHNAME10 0x0000002b /* abbreviated name for October */
+#define CAL_SABBREVMONTHNAME11 0x0000002c /* abbreviated name for November */
+#define CAL_SABBREVMONTHNAME12 0x0000002d /* abbreviated name for December */
+#define CAL_SABBREVMONTHNAME13 0x0000002e /* abbreviated name for 13th month (if any) */
+
+
+/*
+ * Calendar Enumeration Value.
+ */
+#define ENUM_ALL_CALENDARS 0xffffffff /* enumerate all calendars */
+
+
+/*
+ * Calendar ID Values.
+ */
+#define CAL_GREGORIAN 1 /* Gregorian (localized) calendar */
+#define CAL_GREGORIAN_US 2 /* Gregorian (U.S.) calendar */
+#define CAL_JAPAN 3 /* Japanese Emperor Era calendar */
+#define CAL_TAIWAN 4 /* Republic of China Era calendar */
+#define CAL_KOREA 5 /* Korean Tangun Era calendar */
+#define CAL_HIJRI 6 /* Hijri (Arabic Lunar) calendar */
+#define CAL_THAI 7 /* Thai calendar */
+#define CAL_HEBREW 8 /* Hebrew calendar */
+
+
+
+
+/***************************************************************************\
+* Typedefs
+*
+* Define all types for the NLS component here.
+\***************************************************************************/
+
+/*
+ * Locale type constant.
+ */
+typedef DWORD LCTYPE;
+
+/*
+ * Calendar type constant.
+ */
+typedef DWORD CALTYPE;
+
+/*
+ * Calendar ID.
+ */
+typedef DWORD CALID;
+
+
+/*
+ * CP Info.
+ */
+
+typedef struct _cpinfo {
+ UINT MaxCharSize; /* max length (bytes) of a char */
+ BYTE DefaultChar[MAX_DEFAULTCHAR]; /* default character */
+ BYTE LeadByte[MAX_LEADBYTES]; /* lead byte ranges */
+} CPINFO, *LPCPINFO;
+
+
+/*
+ * Number format.
+ */
+
+typedef struct _numberfmtA {
+ UINT NumDigits; /* number of decimal digits */
+ UINT LeadingZero; /* if leading zero in decimal fields */
+ UINT Grouping; /* group size left of decimal */
+ LPSTR lpDecimalSep; /* ptr to decimal separator string */
+ LPSTR lpThousandSep; /* ptr to thousand separator string */
+ UINT NegativeOrder; /* negative number ordering */
+} NUMBERFMTA, *LPNUMBERFMTA;
+typedef struct _numberfmtW {
+ UINT NumDigits; /* number of decimal digits */
+ UINT LeadingZero; /* if leading zero in decimal fields */
+ UINT Grouping; /* group size left of decimal */
+ LPWSTR lpDecimalSep; /* ptr to decimal separator string */
+ LPWSTR lpThousandSep; /* ptr to thousand separator string */
+ UINT NegativeOrder; /* negative number ordering */
+} NUMBERFMTW, *LPNUMBERFMTW;
+#ifdef UNICODE
+typedef NUMBERFMTW NUMBERFMT;
+typedef LPNUMBERFMTW LPNUMBERFMT;
+#else
+typedef NUMBERFMTA NUMBERFMT;
+typedef LPNUMBERFMTA LPNUMBERFMT;
+#endif // UNICODE
+
+
+/*
+ * Currency format.
+ */
+
+typedef struct _currencyfmtA {
+ UINT NumDigits; /* number of decimal digits */
+ UINT LeadingZero; /* if leading zero in decimal fields */
+ UINT Grouping; /* group size left of decimal */
+ LPSTR lpDecimalSep; /* ptr to decimal separator string */
+ LPSTR lpThousandSep; /* ptr to thousand separator string */
+ UINT NegativeOrder; /* negative currency ordering */
+ UINT PositiveOrder; /* positive currency ordering */
+ LPSTR lpCurrencySymbol; /* ptr to currency symbol string */
+} CURRENCYFMTA, *LPCURRENCYFMTA;
+typedef struct _currencyfmtW {
+ UINT NumDigits; /* number of decimal digits */
+ UINT LeadingZero; /* if leading zero in decimal fields */
+ UINT Grouping; /* group size left of decimal */
+ LPWSTR lpDecimalSep; /* ptr to decimal separator string */
+ LPWSTR lpThousandSep; /* ptr to thousand separator string */
+ UINT NegativeOrder; /* negative currency ordering */
+ UINT PositiveOrder; /* positive currency ordering */
+ LPWSTR lpCurrencySymbol; /* ptr to currency symbol string */
+} CURRENCYFMTW, *LPCURRENCYFMTW;
+#ifdef UNICODE
+typedef CURRENCYFMTW CURRENCYFMT;
+typedef LPCURRENCYFMTW LPCURRENCYFMT;
+#else
+typedef CURRENCYFMTA CURRENCYFMT;
+typedef LPCURRENCYFMTA LPCURRENCYFMT;
+#endif // UNICODE
+
+
+
+/*
+ * Enumeration function constants.
+ */
+
+#ifdef STRICT
+
+typedef BOOL (CALLBACK* LOCALE_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK* CODEPAGE_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK* DATEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK* TIMEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK* CALINFO_ENUMPROCA)(LPSTR);
+
+typedef BOOL (CALLBACK* LOCALE_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK* CODEPAGE_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK* DATEFMT_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK* TIMEFMT_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK* CALINFO_ENUMPROCW)(LPWSTR);
+
+#else /* !STRICT */
+
+typedef FARPROC LOCALE_ENUMPROCA;
+typedef FARPROC CODEPAGE_ENUMPROCA;
+typedef FARPROC DATEFMT_ENUMPROCA;
+typedef FARPROC TIMEFMT_ENUMPROCA;
+typedef FARPROC CALINFO_ENUMPROCA;
+
+typedef FARPROC LOCALE_ENUMPROCW;
+typedef FARPROC CODEPAGE_ENUMPROCW;
+typedef FARPROC DATEFMT_ENUMPROCW;
+typedef FARPROC TIMEFMT_ENUMPROCW;
+typedef FARPROC CALINFO_ENUMPROCW;
+
+#endif /* !STRICT */
+
+#ifdef UNICODE
+
+#define LOCALE_ENUMPROC LOCALE_ENUMPROCW
+#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW
+#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW
+#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW
+#define CALINFO_ENUMPROC CALINFO_ENUMPROCW
+
+#else
+
+#define LOCALE_ENUMPROC LOCALE_ENUMPROCA
+#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
+#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
+#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
+#define CALINFO_ENUMPROC CALINFO_ENUMPROCA
+
+#endif // !UNICODE
+
+
+
+/***************************************************************************\
+* Macros
+*
+* Define all macros for the NLS component here.
+\***************************************************************************/
+
+
+
+/***************************************************************************\
+* Function Prototypes
+*
+* Only prototypes for the NLS APIs should go here.
+\***************************************************************************/
+
+/*
+ * Code Page Dependent APIs.
+ */
+
+WINBASEAPI
+BOOL
+WINAPI
+IsValidCodePage(
+ UINT CodePage);
+
+WINBASEAPI
+UINT
+WINAPI
+GetACP(void);
+
+WINBASEAPI
+UINT
+WINAPI
+GetOEMCP(void);
+
+WINBASEAPI
+BOOL
+WINAPI
+GetCPInfo(
+ UINT CodePage,
+ LPCPINFO lpCPInfo);
+
+WINBASEAPI
+BOOL
+WINAPI
+IsDBCSLeadByte(
+ BYTE TestChar);
+
+WINBASEAPI
+BOOL
+WINAPI
+IsDBCSLeadByteEx(
+ UINT CodePage,
+ BYTE TestChar);
+
+WINBASEAPI
+int
+WINAPI
+MultiByteToWideChar(
+ UINT CodePage,
+ DWORD dwFlags,
+ LPCSTR lpMultiByteStr,
+ int cchMultiByte,
+ LPWSTR lpWideCharStr,
+ int cchWideChar);
+
+WINBASEAPI
+int
+WINAPI
+WideCharToMultiByte(
+ UINT CodePage,
+ DWORD dwFlags,
+ LPCWSTR lpWideCharStr,
+ int cchWideChar,
+ LPSTR lpMultiByteStr,
+ int cchMultiByte,
+ LPCSTR lpDefaultChar,
+ LPBOOL lpUsedDefaultChar);
+
+
+/*
+ * Locale Dependent APIs.
+ */
+
+WINBASEAPI
+int
+WINAPI
+CompareStringA(
+ LCID Locale,
+ DWORD dwCmpFlags,
+ LPCSTR lpString1,
+ int cchCount1,
+ LPCSTR lpString2,
+ int cchCount2);
+WINBASEAPI
+int
+WINAPI
+CompareStringW(
+ LCID Locale,
+ DWORD dwCmpFlags,
+ LPCWSTR lpString1,
+ int cchCount1,
+ LPCWSTR lpString2,
+ int cchCount2);
+#ifdef UNICODE
+#define CompareString CompareStringW
+#else
+#define CompareString CompareStringA
+#endif // !UNICODE
+
+WINBASEAPI
+int
+WINAPI
+LCMapStringA(
+ LCID Locale,
+ DWORD dwMapFlags,
+ LPCSTR lpSrcStr,
+ int cchSrc,
+ LPSTR lpDestStr,
+ int cchDest);
+WINBASEAPI
+int
+WINAPI
+LCMapStringW(
+ LCID Locale,
+ DWORD dwMapFlags,
+ LPCWSTR lpSrcStr,
+ int cchSrc,
+ LPWSTR lpDestStr,
+ int cchDest);
+#ifdef UNICODE
+#define LCMapString LCMapStringW
+#else
+#define LCMapString LCMapStringA
+#endif // !UNICODE
+
+WINBASEAPI
+int
+WINAPI
+GetLocaleInfoA(
+ LCID Locale,
+ LCTYPE LCType,
+ LPSTR lpLCData,
+ int cchData);
+WINBASEAPI
+int
+WINAPI
+GetLocaleInfoW(
+ LCID Locale,
+ LCTYPE LCType,
+ LPWSTR lpLCData,
+ int cchData);
+#ifdef UNICODE
+#define GetLocaleInfo GetLocaleInfoW
+#else
+#define GetLocaleInfo GetLocaleInfoA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+SetLocaleInfoA(
+ LCID Locale,
+ LCTYPE LCType,
+ LPCSTR lpLCData);
+WINBASEAPI
+BOOL
+WINAPI
+SetLocaleInfoW(
+ LCID Locale,
+ LCTYPE LCType,
+ LPCWSTR lpLCData);
+#ifdef UNICODE
+#define SetLocaleInfo SetLocaleInfoW
+#else
+#define SetLocaleInfo SetLocaleInfoA
+#endif // !UNICODE
+
+WINBASEAPI
+int
+WINAPI
+GetTimeFormatA(
+ LCID Locale,
+ DWORD dwFlags,
+ CONST SYSTEMTIME *lpTime,
+ LPCSTR lpFormat,
+ LPSTR lpTimeStr,
+ int cchTime);
+WINBASEAPI
+int
+WINAPI
+GetTimeFormatW(
+ LCID Locale,
+ DWORD dwFlags,
+ CONST SYSTEMTIME *lpTime,
+ LPCWSTR lpFormat,
+ LPWSTR lpTimeStr,
+ int cchTime);
+#ifdef UNICODE
+#define GetTimeFormat GetTimeFormatW
+#else
+#define GetTimeFormat GetTimeFormatA
+#endif // !UNICODE
+
+WINBASEAPI
+int
+WINAPI
+GetDateFormatA(
+ LCID Locale,
+ DWORD dwFlags,
+ CONST SYSTEMTIME *lpDate,
+ LPCSTR lpFormat,
+ LPSTR lpDateStr,
+ int cchDate);
+WINBASEAPI
+int
+WINAPI
+GetDateFormatW(
+ LCID Locale,
+ DWORD dwFlags,
+ CONST SYSTEMTIME *lpDate,
+ LPCWSTR lpFormat,
+ LPWSTR lpDateStr,
+ int cchDate);
+#ifdef UNICODE
+#define GetDateFormat GetDateFormatW
+#else
+#define GetDateFormat GetDateFormatA
+#endif // !UNICODE
+
+WINBASEAPI
+int
+WINAPI
+GetNumberFormatA(
+ LCID Locale,
+ DWORD dwFlags,
+ LPCSTR lpValue,
+ CONST NUMBERFMTA *lpFormat,
+ LPSTR lpNumberStr,
+ int cchNumber);
+WINBASEAPI
+int
+WINAPI
+GetNumberFormatW(
+ LCID Locale,
+ DWORD dwFlags,
+ LPCWSTR lpValue,
+ CONST NUMBERFMTW *lpFormat,
+ LPWSTR lpNumberStr,
+ int cchNumber);
+#ifdef UNICODE
+#define GetNumberFormat GetNumberFormatW
+#else
+#define GetNumberFormat GetNumberFormatA
+#endif // !UNICODE
+
+WINBASEAPI
+int
+WINAPI
+GetCurrencyFormatA(
+ LCID Locale,
+ DWORD dwFlags,
+ LPCSTR lpValue,
+ CONST CURRENCYFMTA *lpFormat,
+ LPSTR lpCurrencyStr,
+ int cchCurrency);
+WINBASEAPI
+int
+WINAPI
+GetCurrencyFormatW(
+ LCID Locale,
+ DWORD dwFlags,
+ LPCWSTR lpValue,
+ CONST CURRENCYFMTW *lpFormat,
+ LPWSTR lpCurrencyStr,
+ int cchCurrency);
+#ifdef UNICODE
+#define GetCurrencyFormat GetCurrencyFormatW
+#else
+#define GetCurrencyFormat GetCurrencyFormatA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+EnumCalendarInfoA(
+ CALINFO_ENUMPROCA lpCalInfoEnumProc,
+ LCID Locale,
+ CALID Calendar,
+ CALTYPE CalType);
+WINBASEAPI
+BOOL
+WINAPI
+EnumCalendarInfoW(
+ CALINFO_ENUMPROCW lpCalInfoEnumProc,
+ LCID Locale,
+ CALID Calendar,
+ CALTYPE CalType);
+#ifdef UNICODE
+#define EnumCalendarInfo EnumCalendarInfoW
+#else
+#define EnumCalendarInfo EnumCalendarInfoA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+EnumTimeFormatsA(
+ TIMEFMT_ENUMPROCA lpTimeFmtEnumProc,
+ LCID Locale,
+ DWORD dwFlags);
+WINBASEAPI
+BOOL
+WINAPI
+EnumTimeFormatsW(
+ TIMEFMT_ENUMPROCW lpTimeFmtEnumProc,
+ LCID Locale,
+ DWORD dwFlags);
+#ifdef UNICODE
+#define EnumTimeFormats EnumTimeFormatsW
+#else
+#define EnumTimeFormats EnumTimeFormatsA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+EnumDateFormatsA(
+ DATEFMT_ENUMPROCA lpDateFmtEnumProc,
+ LCID Locale,
+ DWORD dwFlags);
+WINBASEAPI
+BOOL
+WINAPI
+EnumDateFormatsW(
+ DATEFMT_ENUMPROCW lpDateFmtEnumProc,
+ LCID Locale,
+ DWORD dwFlags);
+#ifdef UNICODE
+#define EnumDateFormats EnumDateFormatsW
+#else
+#define EnumDateFormats EnumDateFormatsA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+IsValidLocale(
+ LCID Locale,
+ DWORD dwFlags);
+
+WINBASEAPI
+LCID
+WINAPI
+ConvertDefaultLocale(
+ LCID Locale);
+
+WINBASEAPI
+LCID
+WINAPI
+GetThreadLocale(void);
+
+WINBASEAPI
+BOOL
+WINAPI
+SetThreadLocale(
+ LCID Locale
+ );
+
+WINBASEAPI
+LANGID
+WINAPI
+GetSystemDefaultLangID(void);
+
+WINBASEAPI
+LANGID
+WINAPI
+GetUserDefaultLangID(void);
+
+WINBASEAPI
+LCID
+WINAPI
+GetSystemDefaultLCID(void);
+
+WINBASEAPI
+LCID
+WINAPI
+GetUserDefaultLCID(void);
+
+/*
+ * Locale Independent APIs.
+ */
+
+WINBASEAPI
+BOOL
+WINAPI
+GetStringTypeExA(
+ LCID Locale,
+ DWORD dwInfoType,
+ LPCSTR lpSrcStr,
+ int cchSrc,
+ LPWORD lpCharType);
+WINBASEAPI
+BOOL
+WINAPI
+GetStringTypeExW(
+ LCID Locale,
+ DWORD dwInfoType,
+ LPCWSTR lpSrcStr,
+ int cchSrc,
+ LPWORD lpCharType);
+#ifdef UNICODE
+#define GetStringTypeEx GetStringTypeExW
+#else
+#define GetStringTypeEx GetStringTypeExA
+#endif // !UNICODE
+
+/*
+ * NOTE: The parameters for GetStringTypeA and GetStringTypeW are
+ * NOT the same. The W version was shipped in NT 3.1. The
+ * A version was then shipped in 16-bit OLE with the wrong
+ * parameters (ported from Win95). To be compatible, we
+ * must break the relationship between the A and W versions
+ * of GetStringType. There will be NO function call for the
+ * generic GetStringType.
+ *
+ * GetStringTypeEx (above) should be used instead.
+ */
+WINBASEAPI
+BOOL
+WINAPI
+GetStringTypeA(
+ LCID Locale,
+ DWORD dwInfoType,
+ LPCSTR lpSrcStr,
+ int cchSrc,
+ LPWORD lpCharType);
+
+WINBASEAPI
+BOOL
+WINAPI
+GetStringTypeW(
+ DWORD dwInfoType,
+ LPCWSTR lpSrcStr,
+ int cchSrc,
+ LPWORD lpCharType);
+
+
+WINBASEAPI
+int
+WINAPI
+FoldStringA(
+ DWORD dwMapFlags,
+ LPCSTR lpSrcStr,
+ int cchSrc,
+ LPSTR lpDestStr,
+ int cchDest);
+WINBASEAPI
+int
+WINAPI
+FoldStringW(
+ DWORD dwMapFlags,
+ LPCWSTR lpSrcStr,
+ int cchSrc,
+ LPWSTR lpDestStr,
+ int cchDest);
+#ifdef UNICODE
+#define FoldString FoldStringW
+#else
+#define FoldString FoldStringA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+EnumSystemLocalesA(
+ LOCALE_ENUMPROCA lpLocaleEnumProc,
+ DWORD dwFlags);
+WINBASEAPI
+BOOL
+WINAPI
+EnumSystemLocalesW(
+ LOCALE_ENUMPROCW lpLocaleEnumProc,
+ DWORD dwFlags);
+#ifdef UNICODE
+#define EnumSystemLocales EnumSystemLocalesW
+#else
+#define EnumSystemLocales EnumSystemLocalesA
+#endif // !UNICODE
+
+WINBASEAPI
+BOOL
+WINAPI
+EnumSystemCodePagesA(
+ CODEPAGE_ENUMPROCA lpCodePageEnumProc,
+ DWORD dwFlags);
+WINBASEAPI
+BOOL
+WINAPI
+EnumSystemCodePagesW(
+ CODEPAGE_ENUMPROCW lpCodePageEnumProc,
+ DWORD dwFlags);
+#ifdef UNICODE
+#define EnumSystemCodePages EnumSystemCodePagesW
+#else
+#define EnumSystemCodePages EnumSystemCodePagesA
+#endif // !UNICODE
+
+
+
+#endif // NONLS
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _WINNLS_
diff --git a/public/sdk/inc/winnls32.h b/public/sdk/inc/winnls32.h
new file mode 100644
index 000000000..e5772cdf2
--- /dev/null
+++ b/public/sdk/inc/winnls32.h
@@ -0,0 +1,124 @@
+/*++ BUILD Version: 0003 // Increment this if a change has global effects
+
+Copyright (c) 1985-96, Microsoft Corporation
+
+Module Name:
+
+ winnls32.h
+
+Abstract:
+
+ Procedure declarations, constant definitions and macros for the NLS
+ component.
+
+--*/
+
+#ifndef _WINNLS32_
+#define _WINNLS32_
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+typedef struct _tagDATETIME {
+ WORD year;
+ WORD month;
+ WORD day;
+ WORD hour;
+ WORD min;
+ WORD sec;
+} DATETIME;
+
+typedef struct _tagIMEPROA {
+ HWND hWnd;
+ DATETIME InstDate;
+ UINT wVersion;
+ BYTE szDescription[50];
+ BYTE szName[80];
+ BYTE szOptions[30];
+#if defined(TAIWAN)
+ BYTE szUsrFontName[80];
+ BOOL fEnable;
+#endif
+} IMEPROA,*PIMEPROA,NEAR *NPIMEPROA,FAR *LPIMEPROA;
+typedef struct _tagIMEPROW {
+ HWND hWnd;
+ DATETIME InstDate;
+ UINT wVersion;
+ WCHAR szDescription[50];
+ WCHAR szName[80];
+ WCHAR szOptions[30];
+#if defined(TAIWAN)
+ WCHAR szUsrFontName[80];
+ BOOL fEnable;
+#endif
+} IMEPROW,*PIMEPROW,NEAR *NPIMEPROW,FAR *LPIMEPROW;
+#ifdef UNICODE
+typedef IMEPROW IMEPRO;
+typedef PIMEPROW PIMEPRO;
+typedef NPIMEPROW NPIMEPRO;
+typedef LPIMEPROW LPIMEPRO;
+#else
+typedef IMEPROA IMEPRO;
+typedef PIMEPROA PIMEPRO;
+typedef NPIMEPROA NPIMEPRO;
+typedef LPIMEPROA LPIMEPRO;
+#endif // UNICODE
+
+BOOL WINAPI IMPGetIMEA(HWND, LPIMEPROA);
+BOOL WINAPI IMPGetIMEW(HWND, LPIMEPROW);
+#ifdef UNICODE
+#define IMPGetIME IMPGetIMEW
+#else
+#define IMPGetIME IMPGetIMEA
+#endif // !UNICODE
+
+BOOL WINAPI IMPQueryIMEA(LPIMEPROA);
+BOOL WINAPI IMPQueryIMEW(LPIMEPROW);
+#ifdef UNICODE
+#define IMPQueryIME IMPQueryIMEW
+#else
+#define IMPQueryIME IMPQueryIMEA
+#endif // !UNICODE
+
+BOOL WINAPI IMPSetIMEA(HWND, LPIMEPROA);
+BOOL WINAPI IMPSetIMEW(HWND, LPIMEPROW);
+#ifdef UNICODE
+#define IMPSetIME IMPSetIMEW
+#else
+#define IMPSetIME IMPSetIMEA
+#endif // !UNICODE
+
+#if defined(TAIWAN) //dchiang 022894 update for $(SDKINC)\winnls32.h
+
+BOOL WINAPI IMPRetrieveIMEA(LPIMEPROA, DWORD);
+BOOL WINAPI IMPRetrieveIMEW(LPIMEPROW, DWORD);
+#ifdef UNICODE
+#define IMPRetrieveIME IMPRetrieveIMEW
+#else
+#define IMPRetrieveIME IMPRetrieveIMEA
+#endif // !UNICODE
+BOOL WINAPI WINNLSDefIMEProc(HWND, HDC, DWORD, DWORD, DWORD, DWORD);
+BOOL WINAPI ControlIMEMessageA(HWND, LPIMEPROA, DWORD, DWORD, DWORD);
+BOOL WINAPI ControlIMEMessageW(HWND, LPIMEPROW, DWORD, DWORD, DWORD);
+#ifdef UNICODE
+#define ControlIMEMessage ControlIMEMessageW
+#else
+#define ControlIMEMessage ControlIMEMessageA
+#endif // !UNICODE
+
+#endif //dchiang 022894 TAIWAN
+
+UINT WINAPI WINNLSGetIMEHotkey(HWND);
+BOOL WINAPI WINNLSEnableIME(HWND, BOOL);
+BOOL WINAPI WINNLSGetEnableStatus(HWND);
+
+//
+//
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif // _WINNLS32_
diff --git a/public/sdk/inc/winnt.h b/public/sdk/inc/winnt.h
new file mode 100644
index 000000000..7d308def3
--- /dev/null
+++ b/public/sdk/inc/winnt.h
@@ -0,0 +1,5133 @@
+/*++ BUILD Version: 0093 Increment this if a change has global effects
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ winnt.h
+
+Abstract:
+
+ This module defines the 32-Bit Windows types and constants that are
+ defined by NT, but exposed through the Win32 API.
+
+Revision History:
+
+--*/
+
+#ifndef _WINNT_
+#define _WINNT_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ctype.h>
+#define ANYSIZE_ARRAY 1
+
+#if defined(_M_MRX000) && !(defined(MIDL_PASS) || defined(RC_INVOKED)) && defined(ENABLE_RESTRICTED)
+#define RESTRICTED_POINTER __restrict
+#else
+#define RESTRICTED_POINTER
+#endif
+
+#if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC)
+#define UNALIGNED __unaligned
+#else
+#define UNALIGNED
+#endif
+
+
+#if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
+#define DECLSPEC_IMPORT __declspec(dllimport)
+#else
+#define DECLSPEC_IMPORT
+#endif
+
+typedef void *PVOID;
+
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define NTAPI __stdcall
+#else
+#define _cdecl
+#define NTAPI
+#endif
+
+//
+// Define API decoration for direct importing system DLL references.
+//
+
+#if !defined(_NTSYSTEM_)
+#define NTSYSAPI DECLSPEC_IMPORT
+#else
+#define NTSYSAPI
+#endif
+
+
+//
+// Basics
+//
+
+#ifndef VOID
+#define VOID void
+typedef char CHAR;
+typedef short SHORT;
+typedef long LONG;
+#endif
+
+//
+// UNICODE (Wide Character) types
+//
+
+typedef wchar_t WCHAR; // wc, 16-bit UNICODE character
+
+typedef WCHAR *PWCHAR;
+typedef WCHAR *LPWCH, *PWCH;
+typedef CONST WCHAR *LPCWCH, *PCWCH;
+typedef WCHAR *NWPSTR;
+typedef WCHAR *LPWSTR, *PWSTR;
+
+typedef CONST WCHAR *LPCWSTR, *PCWSTR;
+
+//
+// ANSI (Multi-byte Character) types
+//
+typedef CHAR *PCHAR;
+typedef CHAR *LPCH, *PCH;
+
+typedef CONST CHAR *LPCCH, *PCCH;
+typedef CHAR *NPSTR;
+typedef CHAR *LPSTR, *PSTR;
+typedef CONST CHAR *LPCSTR, *PCSTR;
+
+//
+// Neutral ANSI/UNICODE types and macros
+//
+#ifdef UNICODE // r_winnt
+
+#ifndef _TCHAR_DEFINED
+typedef WCHAR TCHAR, *PTCHAR;
+typedef WCHAR TBYTE , *PTBYTE ;
+#define _TCHAR_DEFINED
+#endif /* !_TCHAR_DEFINED */
+
+typedef LPWSTR LPTCH, PTCH;
+typedef LPWSTR PTSTR, LPTSTR;
+typedef LPCWSTR LPCTSTR;
+typedef LPWSTR LP;
+#define __TEXT(quote) L##quote // r_winnt
+
+#else /* UNICODE */ // r_winnt
+
+#ifndef _TCHAR_DEFINED
+typedef char TCHAR, *PTCHAR;
+typedef unsigned char TBYTE , *PTBYTE ;
+#define _TCHAR_DEFINED
+#endif /* !_TCHAR_DEFINED */
+
+typedef LPSTR LPTCH, PTCH;
+typedef LPSTR PTSTR, LPTSTR;
+typedef LPCSTR LPCTSTR;
+#define __TEXT(quote) quote // r_winnt
+
+#endif /* UNICODE */ // r_winnt
+#define TEXT(quote) __TEXT(quote) // r_winnt
+
+
+typedef SHORT *PSHORT;
+typedef LONG *PLONG;
+
+#ifdef STRICT
+typedef void *HANDLE;
+#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
+#else
+typedef PVOID HANDLE;
+#define DECLARE_HANDLE(name) typedef HANDLE name
+#endif
+typedef HANDLE *PHANDLE;
+
+//
+// Flag (bit) fields
+//
+
+typedef BYTE FCHAR;
+typedef WORD FSHORT;
+typedef DWORD FLONG;
+
+typedef char CCHAR;
+typedef DWORD LCID;
+typedef PDWORD PLCID;
+typedef WORD LANGID;
+/*lint -e624 */
+/*lint +e624 */
+#define APPLICATION_ERROR_MASK 0x20000000
+#define ERROR_SEVERITY_SUCCESS 0x00000000
+#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
+#define ERROR_SEVERITY_WARNING 0x80000000
+#define ERROR_SEVERITY_ERROR 0xC0000000
+
+//
+// __int64 is only supported by 2.0 and later midl.
+// __midl is set by the 2.0 midl and not by 1.0 midl.
+//
+
+#define _DWORDLONG_
+#if (!defined(MIDL_PASS) || defined(__midl)) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
+typedef __int64 LONGLONG;
+typedef unsigned __int64 DWORDLONG;
+
+#define MAXLONGLONG (0x7fffffffffffffff)
+#else
+typedef double LONGLONG;
+typedef double DWORDLONG;
+#endif
+
+typedef LONGLONG *PLONGLONG;
+typedef DWORDLONG *PDWORDLONG;
+
+// Update Sequence Number
+
+typedef LONGLONG USN;
+
+#if defined(MIDL_PASS)
+typedef struct _LARGE_INTEGER {
+#else // MIDL_PASS
+typedef union _LARGE_INTEGER {
+ struct {
+ DWORD LowPart;
+ LONG HighPart;
+ };
+ struct {
+ DWORD LowPart;
+ LONG HighPart;
+ } u;
+#endif //MIDL_PASS
+ LONGLONG QuadPart;
+} LARGE_INTEGER;
+
+typedef LARGE_INTEGER *PLARGE_INTEGER;
+
+
+#if defined(MIDL_PASS)
+typedef struct _ULARGE_INTEGER {
+#else // MIDL_PASS
+typedef union _ULARGE_INTEGER {
+ struct {
+ DWORD LowPart;
+ DWORD HighPart;
+ };
+ struct {
+ DWORD LowPart;
+ DWORD HighPart;
+ } u;
+#endif //MIDL_PASS
+ DWORDLONG QuadPart;
+} ULARGE_INTEGER;
+
+typedef ULARGE_INTEGER *PULARGE_INTEGER;
+
+// end_ntminiport end_ntndis end_ntminitape
+
+//
+// Locally Unique Identifier
+//
+
+typedef struct _LUID {
+ DWORD LowPart;
+ LONG HighPart;
+} LUID, *PLUID;
+
+
+//
+// Define operations to logically shift an int64 by 0..31 bits and to multiply
+// 32-bits by 32-bits to form a 64-bit product.
+//
+
+#if defined(MIDL_PASS) || defined(RC_INVOKED)
+
+//
+// Midl does not understand inline assembler. Therefore, the Rtl functions
+// are used for shifts by 0.31 and multiplies of 32-bits times 32-bits to
+// form a 64-bit product.
+//
+
+#define Int32x32To64(a, b) ((LONGLONG)((LONG)(a)) * (LONGLONG)((LONG)(b)))
+#define UInt32x32To64(a, b) ((DWORDLONG)((DWORD)(a)) * (DWORDLONG)((DWORD)(b)))
+
+#define Int64ShllMod32(a, b) ((DWORDLONG)(a) << (b))
+#define Int64ShraMod32(a, b) ((LONGLONG)(a) >> (b))
+#define Int64ShrlMod32(a, b) ((DWORDLONG)(a) >> (b))
+
+#elif defined(_M_MRX000)
+
+//
+// MIPS uses intrinsic functions to perform shifts by 0..31 and multiplies of
+// 32-bits times 32-bits to 64-bits.
+//
+
+#define Int32x32To64 __emul
+#define UInt32x32To64 __emulu
+
+#define Int64ShllMod32 __ll_lshift
+#define Int64ShraMod32 __ll_rshift
+#define Int64ShrlMod32 __ull_rshift
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+LONGLONG
+NTAPI
+Int32x32To64 (
+ LONG Multiplier,
+ LONG Multiplicand
+ );
+
+DWORDLONG
+NTAPI
+UInt32x32To64 (
+ DWORD Multiplier,
+ DWORD Multiplicand
+ );
+
+DWORDLONG
+NTAPI
+Int64ShllMod32 (
+ DWORDLONG Value,
+ DWORD ShiftCount
+ );
+
+LONGLONG
+NTAPI
+Int64ShraMod32 (
+ LONGLONG Value,
+ DWORD ShiftCount
+ );
+
+DWORDLONG
+NTAPI
+Int64ShrlMod32 (
+ DWORDLONG Value,
+ DWORD ShiftCount
+ );
+
+#if defined (__cplusplus)
+};
+#endif
+
+#pragma intrinsic(__emul)
+#pragma intrinsic(__emulu)
+
+#pragma intrinsic(__ll_lshift)
+#pragma intrinsic(__ll_rshift)
+#pragma intrinsic(__ull_rshift)
+
+#elif defined(_M_IX86)
+
+//
+// The x86 C compiler understands inline assembler. Therefore, inline functions
+// that employ inline assembler are used for shifts of 0..31. The multiplies
+// rely on the compiler recognizing the cast of the multiplicand to int64 to
+// generate the optimal code inline.
+//
+
+#define Int32x32To64( a, b ) (LONGLONG)((LONGLONG)(LONG)(a) * (LONG)(b))
+#define UInt32x32To64( a, b ) (DWORDLONG)((DWORDLONG)(DWORD)(a) * (DWORD)(b))
+
+DWORDLONG
+NTAPI
+Int64ShllMod32 (
+ DWORDLONG Value,
+ DWORD ShiftCount
+ );
+
+LONGLONG
+NTAPI
+Int64ShraMod32 (
+ LONGLONG Value,
+ DWORD ShiftCount
+ );
+
+DWORDLONG
+NTAPI
+Int64ShrlMod32 (
+ DWORDLONG Value,
+ DWORD ShiftCount
+ );
+
+#pragma warning(disable:4035) // re-enable below
+
+__inline DWORDLONG
+NTAPI
+Int64ShllMod32 (
+ DWORDLONG Value,
+ DWORD ShiftCount
+ )
+{
+ __asm {
+ mov ecx, ShiftCount
+ mov eax, dword ptr [Value]
+ mov edx, dword ptr [Value+4]
+ shld edx, eax, cl
+ shl eax, cl
+ }
+}
+
+__inline LONGLONG
+NTAPI
+Int64ShraMod32 (
+ LONGLONG Value,
+ DWORD ShiftCount
+ )
+{
+ __asm {
+ mov ecx, ShiftCount
+ mov eax, dword ptr [Value]
+ mov edx, dword ptr [Value+4]
+ shrd eax, edx, cl
+ sar edx, cl
+ }
+}
+
+__inline DWORDLONG
+NTAPI
+Int64ShrlMod32 (
+ DWORDLONG Value,
+ DWORD ShiftCount
+ )
+{
+ __asm {
+ mov ecx, ShiftCount
+ mov eax, dword ptr [Value]
+ mov edx, dword ptr [Value+4]
+ shrd eax, edx, cl
+ shr edx, cl
+ }
+}
+
+#pragma warning(default:4035)
+
+#elif defined(_M_ALPHA)
+
+//
+// Alpha has native 64-bit operations that are just as fast as their 32-bit
+// counter parts. Therefore, the int64 data type is used directly to form
+// shifts of 0..31 and multiplies of 32-bits times 32-bits to form a 64-bit
+// product.
+//
+
+#define Int32x32To64(a, b) ((LONGLONG)((LONG)(a)) * (LONGLONG)((LONG)(b)))
+#define UInt32x32To64(a, b) ((DWORDLONG)((DWORD)(a)) * (DWORDLONG)((DWORD)(b)))
+
+#define Int64ShllMod32(a, b) ((DWORDLONG)(a) << (b))
+#define Int64ShraMod32(a, b) ((LONGLONG)(a) >> (b))
+#define Int64ShrlMod32(a, b) ((DWORDLONG)(a) >> (b))
+
+
+#elif defined(_M_PPC)
+
+#define Int32x32To64(a, b) ((LONGLONG)((LONG)(a)) * (LONGLONG)((LONG)(b)))
+#define UInt32x32To64(a, b) ((DWORDLONG)((DWORD)(a)) * (DWORDLONG)((DWORD)(b)))
+
+#define Int64ShllMod32(a, b) ((DWORDLONG)(a) << (b))
+#define Int64ShraMod32(a, b) ((LONGLONG)(a) >> (b))
+#define Int64ShrlMod32(a, b) ((DWORDLONG)(a) >> (b))
+
+#else
+
+#error Must define a target architecture.
+
+#endif
+
+#define UNICODE_NULL ((WCHAR)0)
+typedef BYTE BOOLEAN;
+typedef BOOLEAN *PBOOLEAN;
+//
+// Doubly linked list structure. Can be used as either a list head, or
+// as link words.
+//
+
+typedef struct _LIST_ENTRY {
+ struct _LIST_ENTRY * volatile Flink;
+ struct _LIST_ENTRY * volatile Blink;
+} LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;
+
+//
+// Singly linked list structure. Can be used as either a list head, or
+// as link words.
+//
+
+typedef struct _SINGLE_LIST_ENTRY {
+ struct _SINGLE_LIST_ENTRY *Next;
+} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
+
+//
+// Base data structures for OLE support
+//
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+
+typedef struct _GUID { // size is 16
+ DWORD Data1;
+ WORD Data2;
+ WORD Data3;
+ BYTE Data4[8];
+} GUID;
+
+#endif // !GUID_DEFINED
+
+#ifndef __OBJECTID_DEFINED
+#define __OBJECTID_DEFINED
+
+typedef struct _OBJECTID { // size is 20
+ GUID Lineage;
+ DWORD Uniquifier;
+} OBJECTID;
+#endif // !_OBJECTID_DEFINED
+
+#define MINCHAR 0x80
+#define MAXCHAR 0x7f
+#define MINSHORT 0x8000
+#define MAXSHORT 0x7fff
+#define MINLONG 0x80000000
+#define MAXLONG 0x7fffffff
+#define MAXBYTE 0xff
+#define MAXWORD 0xffff
+#define MAXDWORD 0xffffffff
+//
+// Calculate the byte offset of a field in a structure of type type.
+//
+
+#define FIELD_OFFSET(type, field) ((LONG)&(((type *)0)->field))
+
+
+//
+// Calculate the address of the base of the structure given its type, and an
+// address of a field within the structure.
+//
+
+#define CONTAINING_RECORD(address, type, field) ((type *)( \
+ (PCHAR)(address) - \
+ (PCHAR)(&((type *)0)->field)))
+
+//
+// Language IDs.
+//
+// The following two combinations of primary language ID and
+// sublanguage ID have special semantics:
+//
+// Primary Language ID Sublanguage ID Result
+// ------------------- --------------- ------------------------
+// LANG_NEUTRAL SUBLANG_NEUTRAL Language neutral
+// LANG_NEUTRAL SUBLANG_DEFAULT User default language
+// LANG_NEUTRAL SUBLANG_SYS_DEFAULT System default language
+//
+
+//
+// Primary language IDs.
+//
+
+#define LANG_NEUTRAL 0x00
+
+#define LANG_AFRIKAANS 0x36
+#define LANG_ALBANIAN 0x1c
+#define LANG_ARABIC 0x01
+#define LANG_BASQUE 0x2d
+#define LANG_BELARUSIAN 0x23
+#define LANG_BULGARIAN 0x02
+#define LANG_CATALAN 0x03
+#define LANG_CHINESE 0x04
+#define LANG_CROATIAN 0x1a
+#define LANG_CZECH 0x05
+#define LANG_DANISH 0x06
+#define LANG_DUTCH 0x13
+#define LANG_ENGLISH 0x09
+#define LANG_ESTONIAN 0x25
+#define LANG_FAEROESE 0x38
+#define LANG_FARSI 0x29
+#define LANG_FINNISH 0x0b
+#define LANG_FRENCH 0x0c
+#define LANG_GERMAN 0x07
+#define LANG_GREEK 0x08
+#define LANG_HEBREW 0x0d
+#define LANG_HUNGARIAN 0x0e
+#define LANG_ICELANDIC 0x0f
+#define LANG_INDONESIAN 0x21
+#define LANG_ITALIAN 0x10
+#define LANG_JAPANESE 0x11
+#define LANG_KOREAN 0x12
+#define LANG_LATVIAN 0x26
+#define LANG_LITHUANIAN 0x27
+#define LANG_NORWEGIAN 0x14
+#define LANG_POLISH 0x15
+#define LANG_PORTUGUESE 0x16
+#define LANG_ROMANIAN 0x18
+#define LANG_RUSSIAN 0x19
+#define LANG_SERBIAN 0x1a
+#define LANG_SLOVAK 0x1b
+#define LANG_SLOVENIAN 0x24
+#define LANG_SPANISH 0x0a
+#define LANG_SWEDISH 0x1d
+#define LANG_THAI 0x1e
+#define LANG_TURKISH 0x1f
+#define LANG_UKRAINIAN 0x22
+#define LANG_VIETNAMESE 0x2a
+
+//
+// Sublanguage IDs.
+//
+// The name immediately following SUBLANG_ dictates which primary
+// language ID that sublanguage ID can be combined with to form a
+// valid language ID.
+//
+
+#define SUBLANG_NEUTRAL 0x00 // language neutral
+#define SUBLANG_DEFAULT 0x01 // user default
+#define SUBLANG_SYS_DEFAULT 0x02 // system default
+
+#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 // Arabic (Saudi Arabia)
+#define SUBLANG_ARABIC_IRAQ 0x02 // Arabic (Iraq)
+#define SUBLANG_ARABIC_EGYPT 0x03 // Arabic (Egypt)
+#define SUBLANG_ARABIC_LIBYA 0x04 // Arabic (Libya)
+#define SUBLANG_ARABIC_ALGERIA 0x05 // Arabic (Algeria)
+#define SUBLANG_ARABIC_MOROCCO 0x06 // Arabic (Morocco)
+#define SUBLANG_ARABIC_TUNISIA 0x07 // Arabic (Tunisia)
+#define SUBLANG_ARABIC_OMAN 0x08 // Arabic (Oman)
+#define SUBLANG_ARABIC_YEMEN 0x09 // Arabic (Yemen)
+#define SUBLANG_ARABIC_SYRIA 0x0a // Arabic (Syria)
+#define SUBLANG_ARABIC_JORDAN 0x0b // Arabic (Jordan)
+#define SUBLANG_ARABIC_LEBANON 0x0c // Arabic (Lebanon)
+#define SUBLANG_ARABIC_KUWAIT 0x0d // Arabic (Kuwait)
+#define SUBLANG_ARABIC_UAE 0x0e // Arabic (U.A.E)
+#define SUBLANG_ARABIC_BAHRAIN 0x0f // Arabic (Bahrain)
+#define SUBLANG_ARABIC_QATAR 0x10 // Arabic (Qatar)
+#define SUBLANG_CHINESE_TRADITIONAL 0x01 // Chinese (Taiwan)
+#define SUBLANG_CHINESE_SIMPLIFIED 0x02 // Chinese (PR China)
+#define SUBLANG_CHINESE_HONGKONG 0x03 // Chinese (Hong Kong)
+#define SUBLANG_CHINESE_SINGAPORE 0x04 // Chinese (Singapore)
+#define SUBLANG_DUTCH 0x01 // Dutch
+#define SUBLANG_DUTCH_BELGIAN 0x02 // Dutch (Belgian)
+#define SUBLANG_ENGLISH_US 0x01 // English (USA)
+#define SUBLANG_ENGLISH_UK 0x02 // English (UK)
+#define SUBLANG_ENGLISH_AUS 0x03 // English (Australian)
+#define SUBLANG_ENGLISH_CAN 0x04 // English (Canadian)
+#define SUBLANG_ENGLISH_NZ 0x05 // English (New Zealand)
+#define SUBLANG_ENGLISH_EIRE 0x06 // English (Irish)
+#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 // English (South Africa)
+#define SUBLANG_ENGLISH_JAMAICA 0x08 // English (Jamaica)
+#define SUBLANG_ENGLISH_CARIBBEAN 0x09 // English (Caribbean)
+#define SUBLANG_ENGLISH_BELIZE 0x0a // English (Belize)
+#define SUBLANG_ENGLISH_TRINIDAD 0x0b // English (Trinidad)
+#define SUBLANG_FRENCH 0x01 // French
+#define SUBLANG_FRENCH_BELGIAN 0x02 // French (Belgian)
+#define SUBLANG_FRENCH_CANADIAN 0x03 // French (Canadian)
+#define SUBLANG_FRENCH_SWISS 0x04 // French (Swiss)
+#define SUBLANG_FRENCH_LUXEMBOURG 0x05 // French (Luxembourg)
+#define SUBLANG_GERMAN 0x01 // German
+#define SUBLANG_GERMAN_SWISS 0x02 // German (Swiss)
+#define SUBLANG_GERMAN_AUSTRIAN 0x03 // German (Austrian)
+#define SUBLANG_GERMAN_LUXEMBOURG 0x04 // German (Luxembourg)
+#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 // German (Liechtenstein)
+#define SUBLANG_ITALIAN 0x01 // Italian
+#define SUBLANG_ITALIAN_SWISS 0x02 // Italian (Swiss)
+#define SUBLANG_KOREAN 0x01 // Korean (Extended Wansung)
+#define SUBLANG_KOREAN_JOHAB 0x02 // Korean (Johab)
+#define SUBLANG_NORWEGIAN_BOKMAL 0x01 // Norwegian (Bokmal)
+#define SUBLANG_NORWEGIAN_NYNORSK 0x02 // Norwegian (Nynorsk)
+#define SUBLANG_PORTUGUESE 0x02 // Portuguese
+#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 // Portuguese (Brazilian)
+#define SUBLANG_SERBIAN_LATIN 0x02 // Serbian (Latin)
+#define SUBLANG_SERBIAN_CYRILLIC 0x03 // Serbian (Cyrillic)
+#define SUBLANG_SPANISH 0x01 // Spanish (Castilian)
+#define SUBLANG_SPANISH_MEXICAN 0x02 // Spanish (Mexican)
+#define SUBLANG_SPANISH_MODERN 0x03 // Spanish (Modern)
+#define SUBLANG_SPANISH_GUATEMALA 0x04 // Spanish (Guatemala)
+#define SUBLANG_SPANISH_COSTA_RICA 0x05 // Spanish (Costa Rica)
+#define SUBLANG_SPANISH_PANAMA 0x06 // Spanish (Panama)
+#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 // Spanish (Dominican Republic)
+#define SUBLANG_SPANISH_VENEZUELA 0x08 // Spanish (Venezuela)
+#define SUBLANG_SPANISH_COLOMBIA 0x09 // Spanish (Colombia)
+#define SUBLANG_SPANISH_PERU 0x0a // Spanish (Peru)
+#define SUBLANG_SPANISH_ARGENTINA 0x0b // Spanish (Argentina)
+#define SUBLANG_SPANISH_ECUADOR 0x0c // Spanish (Ecuador)
+#define SUBLANG_SPANISH_CHILE 0x0d // Spanish (Chile)
+#define SUBLANG_SPANISH_URUGUAY 0x0e // Spanish (Uruguay)
+#define SUBLANG_SPANISH_PARAGUAY 0x0f // Spanish (Paraguay)
+#define SUBLANG_SPANISH_BOLIVIA 0x10 // Spanish (Bolivia)
+#define SUBLANG_SPANISH_EL_SALVADOR 0x11 // Spanish (El Salvador)
+#define SUBLANG_SPANISH_HONDURAS 0x12 // Spanish (Honduras)
+#define SUBLANG_SPANISH_NICARAGUA 0x13 // Spanish (Nicaragua)
+#define SUBLANG_SPANISH_PUERTO_RICO 0x14 // Spanish (Puerto Rico)
+#define SUBLANG_SWEDISH 0x01 // Swedish
+#define SUBLANG_SWEDISH_FINLAND 0x02 // Swedish (Finland)
+
+//
+// Sorting IDs.
+//
+
+#define SORT_DEFAULT 0x0 // sorting default
+
+#define SORT_JAPANESE_XJIS 0x0 // Japanese XJIS order
+#define SORT_JAPANESE_UNICODE 0x1 // Japanese Unicode order
+
+#define SORT_CHINESE_BIG5 0x0 // Chinese BIG5 order
+#define SORT_CHINESE_PRCP 0x0 // PRC Chinese Phonetic order
+#define SORT_CHINESE_UNICODE 0x1 // Chinese Unicode order
+#define SORT_CHINESE_PRC 0x2 // PRC Chinese Stroke Count order
+
+#define SORT_KOREAN_KSC 0x0 // Korean KSC order
+#define SORT_KOREAN_UNICODE 0x1 // Korean Unicode order
+
+#define SORT_GERMAN_PHONE_BOOK 0x1 // German Phone Book order
+
+// end_r_winnt
+
+//
+// A language ID is a 16 bit value which is the combination of a
+// primary language ID and a secondary language ID. The bits are
+// allocated as follows:
+//
+// +-----------------------+-------------------------+
+// | Sublanguage ID | Primary Language ID |
+// +-----------------------+-------------------------+
+// 15 10 9 0 bit
+//
+//
+// Language ID creation/extraction macros:
+//
+// MAKELANGID - construct language id from a primary language id and
+// a sublanguage id.
+// PRIMARYLANGID - extract primary language id from a language id.
+// SUBLANGID - extract sublanguage id from a language id.
+//
+
+#define MAKELANGID(p, s) ((((WORD )(s)) << 10) | (WORD )(p))
+#define PRIMARYLANGID(lgid) ((WORD )(lgid) & 0x3ff)
+#define SUBLANGID(lgid) ((WORD )(lgid) >> 10)
+
+
+//
+// A locale ID is a 32 bit value which is the combination of a
+// language ID, a sort ID, and a reserved area. The bits are
+// allocated as follows:
+//
+// +-------------+---------+-------------------------+
+// | Reserved | Sort ID | Language ID |
+// +-------------+---------+-------------------------+
+// 31 20 19 16 15 0 bit
+//
+//
+// Locale ID creation/extraction macros:
+//
+// MAKELCID - construct locale id from a language id and a sort id.
+// LANGIDFROMLCID - extract language id from a locale id.
+// SORTIDFROMLCID - extract sort id from a locale id.
+//
+
+#define NLS_VALID_LOCALE_MASK 0x000fffff
+
+#define MAKELCID(lgid, srtid) ((DWORD)((((DWORD)((WORD )(srtid))) << 16) | \
+ ((DWORD)((WORD )(lgid)))))
+#define LANGIDFROMLCID(lcid) ((WORD )(lcid))
+#define SORTIDFROMLCID(lcid) ((WORD )((((DWORD)(lcid)) & NLS_VALID_LOCALE_MASK) >> 16))
+
+
+//
+// Default System and User IDs for language and locale.
+//
+
+#define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT))
+#define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
+
+#define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT))
+#define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT))
+
+#define LOCALE_NEUTRAL \
+ (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), SORT_DEFAULT))
+
+
+// begin_ntminiport begin_ntndis begin_ntminitape
+
+//
+// Macros used to eliminate compiler warning generated when formal
+// parameters or local variables are not declared.
+//
+// Use DBG_UNREFERENCED_PARAMETER() when a parameter is not yet
+// referenced but will be once the module is completely developed.
+//
+// Use DBG_UNREFERENCED_LOCAL_VARIABLE() when a local variable is not yet
+// referenced but will be once the module is completely developed.
+//
+// Use UNREFERENCED_PARAMETER() if a parameter will never be referenced.
+//
+// DBG_UNREFERENCED_PARAMETER and DBG_UNREFERENCED_LOCAL_VARIABLE will
+// eventually be made into a null macro to help determine whether there
+// is unfinished work.
+//
+
+#if ! (defined(lint) || defined(_lint))
+#define UNREFERENCED_PARAMETER(P) (P)
+#define DBG_UNREFERENCED_PARAMETER(P) (P)
+#define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V)
+
+#else // lint or _lint
+
+// Note: lint -e530 says don't complain about uninitialized variables for
+// this. line +e530 turns that checking back on. Error 527 has to do with
+// unreachable code.
+
+#define UNREFERENCED_PARAMETER(P) \
+ /*lint -e527 -e530 */ \
+ { \
+ (P) = (P); \
+ } \
+ /*lint +e527 +e530 */
+#define DBG_UNREFERENCED_PARAMETER(P) \
+ /*lint -e527 -e530 */ \
+ { \
+ (P) = (P); \
+ } \
+ /*lint +e527 +e530 */
+#define DBG_UNREFERENCED_LOCAL_VARIABLE(V) \
+ /*lint -e527 -e530 */ \
+ { \
+ (V) = (V); \
+ } \
+ /*lint +e527 +e530 */
+
+#endif // lint or _lint
+
+
+#ifndef WIN32_NO_STATUS
+/*lint -save -e767 */
+#define STATUS_WAIT_0 ((DWORD )0x00000000L)
+#define STATUS_ABANDONED_WAIT_0 ((DWORD )0x00000080L)
+#define STATUS_USER_APC ((DWORD )0x000000C0L)
+#define STATUS_TIMEOUT ((DWORD )0x00000102L)
+#define STATUS_PENDING ((DWORD )0x00000103L)
+#define STATUS_SEGMENT_NOTIFICATION ((DWORD )0x40000005L)
+#define STATUS_GUARD_PAGE_VIOLATION ((DWORD )0x80000001L)
+#define STATUS_DATATYPE_MISALIGNMENT ((DWORD )0x80000002L)
+#define STATUS_BREAKPOINT ((DWORD )0x80000003L)
+#define STATUS_SINGLE_STEP ((DWORD )0x80000004L)
+#define STATUS_ACCESS_VIOLATION ((DWORD )0xC0000005L)
+#define STATUS_IN_PAGE_ERROR ((DWORD )0xC0000006L)
+#define STATUS_INVALID_HANDLE ((DWORD )0xC0000008L)
+#define STATUS_NO_MEMORY ((DWORD )0xC0000017L)
+#define STATUS_ILLEGAL_INSTRUCTION ((DWORD )0xC000001DL)
+#define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD )0xC0000025L)
+#define STATUS_INVALID_DISPOSITION ((DWORD )0xC0000026L)
+#define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD )0xC000008CL)
+#define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD )0xC000008DL)
+#define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD )0xC000008EL)
+#define STATUS_FLOAT_INEXACT_RESULT ((DWORD )0xC000008FL)
+#define STATUS_FLOAT_INVALID_OPERATION ((DWORD )0xC0000090L)
+#define STATUS_FLOAT_OVERFLOW ((DWORD )0xC0000091L)
+#define STATUS_FLOAT_STACK_CHECK ((DWORD )0xC0000092L)
+#define STATUS_FLOAT_UNDERFLOW ((DWORD )0xC0000093L)
+#define STATUS_INTEGER_DIVIDE_BY_ZERO ((DWORD )0xC0000094L)
+#define STATUS_INTEGER_OVERFLOW ((DWORD )0xC0000095L)
+#define STATUS_PRIVILEGED_INSTRUCTION ((DWORD )0xC0000096L)
+#define STATUS_STACK_OVERFLOW ((DWORD )0xC00000FDL)
+#define STATUS_CONTROL_C_EXIT ((DWORD )0xC000013AL)
+/*lint -restore */
+#endif
+#define MAXIMUM_WAIT_OBJECTS 64 // Maximum number of wait objects
+
+#define MAXIMUM_SUSPEND_COUNT MAXCHAR // Maximum times thread can be suspended
+typedef DWORD KSPIN_LOCK;
+
+#ifdef _ALPHA_ // winnt
+void *_rdteb(void); // winnt
+#if defined(_M_ALPHA) // winnt
+#pragma intrinsic(_rdteb) // winnt
+#endif // winnt
+#endif // winnt
+
+#if defined(_M_ALPHA)
+#define NtCurrentTeb() ((struct _TEB *)_rdteb())
+#else
+struct _TEB *
+NtCurrentTeb(void);
+#endif
+
+//
+// Define function to return the current Thread Environment Block
+//
+
+#ifdef _ALPHA_
+
+
+
+//
+// Define functions to get the address of the current fiber and the
+// current fiber data.
+//
+
+#define GetCurrentFiber() (((PNT_TIB)NtCurrentTeb())->FiberData)
+#define GetFiberData() (*(PVOID *)(GetCurrentFiber()))
+
+// begin_ntddk begin_nthal
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+
+#if !defined(RC_INVOKED)
+
+#define CONTEXT_PORTABLE_32BIT 0x00100000
+#define CONTEXT_ALPHA 0x00020000
+
+#define CONTEXT_CONTROL (CONTEXT_ALPHA | 0x00000001L)
+#define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA | 0x00000002L)
+#define CONTEXT_INTEGER (CONTEXT_ALPHA | 0x00000004L)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+#endif
+
+#ifndef _PORTABLE_32BIT_CONTEXT
+
+//
+// Context Frame
+//
+// This frame has a several purposes: 1) it is used as an argument to
+// NtContinue, 2) it is used to construct a call frame for APC delivery,
+// 3) it is used to construct a call frame for exception dispatching
+// in user mode, 4) it is used in the user level thread creation
+// routines, and 5) it is used to to pass thread state to debuggers.
+//
+// N.B. Because this record is used as a call frame, it must be EXACTLY
+// a multiple of 16 bytes in length.
+//
+// There are two variations of the context structure. This is the real one.
+//
+
+typedef struct _CONTEXT {
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+
+ DWORDLONG FltF0;
+ DWORDLONG FltF1;
+ DWORDLONG FltF2;
+ DWORDLONG FltF3;
+ DWORDLONG FltF4;
+ DWORDLONG FltF5;
+ DWORDLONG FltF6;
+ DWORDLONG FltF7;
+ DWORDLONG FltF8;
+ DWORDLONG FltF9;
+ DWORDLONG FltF10;
+ DWORDLONG FltF11;
+ DWORDLONG FltF12;
+ DWORDLONG FltF13;
+ DWORDLONG FltF14;
+ DWORDLONG FltF15;
+ DWORDLONG FltF16;
+ DWORDLONG FltF17;
+ DWORDLONG FltF18;
+ DWORDLONG FltF19;
+ DWORDLONG FltF20;
+ DWORDLONG FltF21;
+ DWORDLONG FltF22;
+ DWORDLONG FltF23;
+ DWORDLONG FltF24;
+ DWORDLONG FltF25;
+ DWORDLONG FltF26;
+ DWORDLONG FltF27;
+ DWORDLONG FltF28;
+ DWORDLONG FltF29;
+ DWORDLONG FltF30;
+ DWORDLONG FltF31;
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_INTEGER.
+ //
+ // N.B. The registers gp, sp, and ra are defined in this section, but are
+ // considered part of the control context rather than part of the integer
+ // context.
+ //
+
+ DWORDLONG IntV0; // $0: return value register, v0
+ DWORDLONG IntT0; // $1: temporary registers, t0 - t7
+ DWORDLONG IntT1; // $2:
+ DWORDLONG IntT2; // $3:
+ DWORDLONG IntT3; // $4:
+ DWORDLONG IntT4; // $5:
+ DWORDLONG IntT5; // $6:
+ DWORDLONG IntT6; // $7:
+ DWORDLONG IntT7; // $8:
+ DWORDLONG IntS0; // $9: nonvolatile registers, s0 - s5
+ DWORDLONG IntS1; // $10:
+ DWORDLONG IntS2; // $11:
+ DWORDLONG IntS3; // $12:
+ DWORDLONG IntS4; // $13:
+ DWORDLONG IntS5; // $14:
+ DWORDLONG IntFp; // $15: frame pointer register, fp/s6
+ DWORDLONG IntA0; // $16: argument registers, a0 - a5
+ DWORDLONG IntA1; // $17:
+ DWORDLONG IntA2; // $18:
+ DWORDLONG IntA3; // $19:
+ DWORDLONG IntA4; // $20:
+ DWORDLONG IntA5; // $21:
+ DWORDLONG IntT8; // $22: temporary registers, t8 - t11
+ DWORDLONG IntT9; // $23:
+ DWORDLONG IntT10; // $24:
+ DWORDLONG IntT11; // $25:
+ DWORDLONG IntRa; // $26: return address register, ra
+ DWORDLONG IntT12; // $27: temporary register, t12
+ DWORDLONG IntAt; // $28: assembler temp register, at
+ DWORDLONG IntGp; // $29: global pointer register, gp
+ DWORDLONG IntSp; // $30: stack pointer register, sp
+ DWORDLONG IntZero; // $31: zero register, zero
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+
+ DWORDLONG Fpcr; // floating point control register
+ DWORDLONG SoftFpcr; // software extension to FPCR
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_CONTROL.
+ //
+ // N.B. The registers gp, sp, and ra are defined in the integer section,
+ // but are considered part of the control context rather than part of
+ // the integer context.
+ //
+
+ DWORDLONG Fir; // (fault instruction) continuation address
+ DWORD Psr; // processor status
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a thread's context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+
+ DWORD ContextFlags;
+ DWORD Fill[4]; // padding for 16-byte stack frame alignment
+
+} CONTEXT, *PCONTEXT;
+
+#else
+
+//
+// 32-bit Context Frame
+//
+// This alternate version of the Alpha context structure parallels that
+// of MIPS and IX86 in style for the first 64 entries: 32-bit machines
+// can operate on the fields, and a value declared as a pointer to an
+// array of int's can be used to index into the fields. This makes life
+// with windbg and ntsd vastly easier.
+//
+// There are two parts: the first contains the lower 32-bits of each
+// element in the 64-bit definition above. The second part contains
+// the upper 32-bits of each 64-bit element above.
+//
+// The names in the first part are identical to the 64-bit names.
+// The second part names are prefixed with "High".
+//
+// 1st half: at 32 bits each, (containing the low parts of 64-bit values)
+// 32 floats, 32 ints, fpcrs, fir, psr, contextflags
+// 2nd half: at 32 bits each
+// 32 floats, 32 ints, fpcrs, fir, fill
+//
+// There is no external support for the 32-bit version of the context
+// structure. It is only used internally by windbg and ntsd.
+//
+// This structure must be the same size as the 64-bit version above.
+//
+
+typedef struct _CONTEXT {
+
+ DWORD FltF0;
+ DWORD FltF1;
+ DWORD FltF2;
+ DWORD FltF3;
+ DWORD FltF4;
+ DWORD FltF5;
+ DWORD FltF6;
+ DWORD FltF7;
+ DWORD FltF8;
+ DWORD FltF9;
+ DWORD FltF10;
+ DWORD FltF11;
+ DWORD FltF12;
+ DWORD FltF13;
+ DWORD FltF14;
+ DWORD FltF15;
+ DWORD FltF16;
+ DWORD FltF17;
+ DWORD FltF18;
+ DWORD FltF19;
+ DWORD FltF20;
+ DWORD FltF21;
+ DWORD FltF22;
+ DWORD FltF23;
+ DWORD FltF24;
+ DWORD FltF25;
+ DWORD FltF26;
+ DWORD FltF27;
+ DWORD FltF28;
+ DWORD FltF29;
+ DWORD FltF30;
+ DWORD FltF31;
+
+ DWORD IntV0; // $0: return value register, v0
+ DWORD IntT0; // $1: temporary registers, t0 - t7
+ DWORD IntT1; // $2:
+ DWORD IntT2; // $3:
+ DWORD IntT3; // $4:
+ DWORD IntT4; // $5:
+ DWORD IntT5; // $6:
+ DWORD IntT6; // $7:
+ DWORD IntT7; // $8:
+ DWORD IntS0; // $9: nonvolatile registers, s0 - s5
+ DWORD IntS1; // $10:
+ DWORD IntS2; // $11:
+ DWORD IntS3; // $12:
+ DWORD IntS4; // $13:
+ DWORD IntS5; // $14:
+ DWORD IntFp; // $15: frame pointer register, fp/s6
+ DWORD IntA0; // $16: argument registers, a0 - a5
+ DWORD IntA1; // $17:
+ DWORD IntA2; // $18:
+ DWORD IntA3; // $19:
+ DWORD IntA4; // $20:
+ DWORD IntA5; // $21:
+ DWORD IntT8; // $22: temporary registers, t8 - t11
+ DWORD IntT9; // $23:
+ DWORD IntT10; // $24:
+ DWORD IntT11; // $25:
+ DWORD IntRa; // $26: return address register, ra
+ DWORD IntT12; // $27: temporary register, t12
+ DWORD IntAt; // $28: assembler temp register, at
+ DWORD IntGp; // $29: global pointer register, gp
+ DWORD IntSp; // $30: stack pointer register, sp
+ DWORD IntZero; // $31: zero register, zero
+
+ DWORD Fpcr; // floating point control register
+ DWORD SoftFpcr; // software extension to FPCR
+
+ DWORD Fir; // (fault instruction) continuation address
+
+ DWORD Psr; // processor status
+ DWORD ContextFlags;
+
+ //
+ // Beginning of the "second half".
+ // The name "High" parallels the HighPart of a LargeInteger.
+ //
+
+ DWORD HighFltF0;
+ DWORD HighFltF1;
+ DWORD HighFltF2;
+ DWORD HighFltF3;
+ DWORD HighFltF4;
+ DWORD HighFltF5;
+ DWORD HighFltF6;
+ DWORD HighFltF7;
+ DWORD HighFltF8;
+ DWORD HighFltF9;
+ DWORD HighFltF10;
+ DWORD HighFltF11;
+ DWORD HighFltF12;
+ DWORD HighFltF13;
+ DWORD HighFltF14;
+ DWORD HighFltF15;
+ DWORD HighFltF16;
+ DWORD HighFltF17;
+ DWORD HighFltF18;
+ DWORD HighFltF19;
+ DWORD HighFltF20;
+ DWORD HighFltF21;
+ DWORD HighFltF22;
+ DWORD HighFltF23;
+ DWORD HighFltF24;
+ DWORD HighFltF25;
+ DWORD HighFltF26;
+ DWORD HighFltF27;
+ DWORD HighFltF28;
+ DWORD HighFltF29;
+ DWORD HighFltF30;
+ DWORD HighFltF31;
+
+ DWORD HighIntV0; // $0: return value register, v0
+ DWORD HighIntT0; // $1: temporary registers, t0 - t7
+ DWORD HighIntT1; // $2:
+ DWORD HighIntT2; // $3:
+ DWORD HighIntT3; // $4:
+ DWORD HighIntT4; // $5:
+ DWORD HighIntT5; // $6:
+ DWORD HighIntT6; // $7:
+ DWORD HighIntT7; // $8:
+ DWORD HighIntS0; // $9: nonvolatile registers, s0 - s5
+ DWORD HighIntS1; // $10:
+ DWORD HighIntS2; // $11:
+ DWORD HighIntS3; // $12:
+ DWORD HighIntS4; // $13:
+ DWORD HighIntS5; // $14:
+ DWORD HighIntFp; // $15: frame pointer register, fp/s6
+ DWORD HighIntA0; // $16: argument registers, a0 - a5
+ DWORD HighIntA1; // $17:
+ DWORD HighIntA2; // $18:
+ DWORD HighIntA3; // $19:
+ DWORD HighIntA4; // $20:
+ DWORD HighIntA5; // $21:
+ DWORD HighIntT8; // $22: temporary registers, t8 - t11
+ DWORD HighIntT9; // $23:
+ DWORD HighIntT10; // $24:
+ DWORD HighIntT11; // $25:
+ DWORD HighIntRa; // $26: return address register, ra
+ DWORD HighIntT12; // $27: temporary register, t12
+ DWORD HighIntAt; // $28: assembler temp register, at
+ DWORD HighIntGp; // $29: global pointer register, gp
+ DWORD HighIntSp; // $30: stack pointer register, sp
+ DWORD HighIntZero; // $31: zero register, zero
+
+ DWORD HighFpcr; // floating point control register
+ DWORD HighSoftFpcr; // software extension to FPCR
+ DWORD HighFir; // processor status
+
+ double DoNotUseThisField; // to force quadword structure alignment
+ DWORD HighFill[2]; // padding for 16-byte stack frame alignment
+
+} CONTEXT, *PCONTEXT;
+
+//
+// These should name the fields in the _PORTABLE_32BIT structure
+// that overlay the Psr and ContextFlags in the normal structure.
+//
+
+#define _QUAD_PSR_OFFSET HighSoftFpcr
+#define _QUAD_FLAGS_OFFSET HighFir
+
+#endif // _PORTABLE_32BIT_CONTEXT
+
+// end_ntddk end_nthal
+
+#endif // _ALPHA_
+
+
+#ifdef _ALPHA_
+
+VOID
+__jump_unwind (
+ PVOID VirtualFramePointer,
+ PVOID TargetPc
+ );
+
+#endif // _ALPHA_
+
+
+#ifdef _X86_
+
+//
+// Disable these two pramas that evaluate to "sti" "cli" on x86 so that driver
+// writers to not leave them inadvertantly in their code.
+//
+
+#if !defined(MIDL_PASS)
+#if !defined(RC_INVOKED)
+
+#pragma warning(disable:4164) // disable C4164 warning so that apps that
+ // build with /Od don't get weird errors !
+#ifdef _M_IX86
+#pragma function(_enable)
+#pragma function(_disable)
+#endif
+
+#pragma warning(default:4164) // reenable C4164 warning
+
+#endif
+#endif
+
+
+#if !defined(MIDL_PASS) && defined(_M_IX86)
+#pragma warning (disable:4035) // disable 4035 (function must return something)
+_inline PVOID GetFiberData( void ) { __asm {
+ mov eax, fs:[0x10]
+ mov eax,[eax]
+ }
+ }
+_inline PVOID GetCurrentFiber( void ) { __asm mov eax, fs:[0x10] }
+
+#pragma warning (default:4035) // Reenable it
+#endif
+
+// begin_wx86
+
+//
+// Define the size of the 80387 save area, which is in the context frame.
+//
+
+#define SIZE_OF_80387_REGISTERS 80
+
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+
+#if !defined(RC_INVOKED)
+
+#define CONTEXT_i386 0x00010000 // this assumes that i386 and
+#define CONTEXT_i486 0x00010000 // i486 have identical context records
+
+// end_wx86
+
+#define CONTEXT_CONTROL (CONTEXT_i386 | 0x00000001L) // SS:SP, CS:IP, FLAGS, BP
+#define CONTEXT_INTEGER (CONTEXT_i386 | 0x00000002L) // AX, BX, CX, DX, SI, DI
+#define CONTEXT_SEGMENTS (CONTEXT_i386 | 0x00000004L) // DS, ES, FS, GS
+#define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 0x00000008L) // 387 state
+#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x00000010L) // DB 0-3,6,7
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER |\
+ CONTEXT_SEGMENTS)
+
+// begin_wx86
+
+#endif
+
+typedef struct _FLOATING_SAVE_AREA {
+ DWORD ControlWord;
+ DWORD StatusWord;
+ DWORD TagWord;
+ DWORD ErrorOffset;
+ DWORD ErrorSelector;
+ DWORD DataOffset;
+ DWORD DataSelector;
+ BYTE RegisterArea[SIZE_OF_80387_REGISTERS];
+ DWORD Cr0NpxState;
+} FLOATING_SAVE_AREA;
+
+typedef FLOATING_SAVE_AREA *PFLOATING_SAVE_AREA;
+
+//
+// Context Frame
+//
+// This frame has a several purposes: 1) it is used as an argument to
+// NtContinue, 2) is is used to constuct a call frame for APC delivery,
+// and 3) it is used in the user level thread creation routines.
+//
+// The layout of the record conforms to a standard call frame.
+//
+
+typedef struct _CONTEXT {
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a threads context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+
+ DWORD ContextFlags;
+
+ //
+ // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
+ // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
+ // included in CONTEXT_FULL.
+ //
+
+ DWORD Dr0;
+ DWORD Dr1;
+ DWORD Dr2;
+ DWORD Dr3;
+ DWORD Dr6;
+ DWORD Dr7;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_FLOATING_POINT.
+ //
+
+ FLOATING_SAVE_AREA FloatSave;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_SEGMENTS.
+ //
+
+ DWORD SegGs;
+ DWORD SegFs;
+ DWORD SegEs;
+ DWORD SegDs;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_INTEGER.
+ //
+
+ DWORD Edi;
+ DWORD Esi;
+ DWORD Ebx;
+ DWORD Edx;
+ DWORD Ecx;
+ DWORD Eax;
+
+ //
+ // This section is specified/returned if the
+ // ContextFlags word contians the flag CONTEXT_CONTROL.
+ //
+
+ DWORD Ebp;
+ DWORD Eip;
+ DWORD SegCs; // MUST BE SANITIZED
+ DWORD EFlags; // MUST BE SANITIZED
+ DWORD Esp;
+ DWORD SegSs;
+
+} CONTEXT;
+
+
+
+typedef CONTEXT *PCONTEXT;
+
+// begin_ntminiport
+
+#endif //_X86_
+
+
+typedef struct _LDT_ENTRY {
+ WORD LimitLow;
+ WORD BaseLow;
+ union {
+ struct {
+ BYTE BaseMid;
+ BYTE Flags1; // Declare as bytes to avoid alignment
+ BYTE Flags2; // Problems.
+ BYTE BaseHi;
+ } Bytes;
+ struct {
+ DWORD BaseMid : 8;
+ DWORD Type : 5;
+ DWORD Dpl : 2;
+ DWORD Pres : 1;
+ DWORD LimitHi : 4;
+ DWORD Sys : 1;
+ DWORD Reserved_0 : 1;
+ DWORD Default_Big : 1;
+ DWORD Granularity : 1;
+ DWORD BaseHi : 8;
+ } Bits;
+ } HighWord;
+} LDT_ENTRY, *PLDT_ENTRY;
+
+
+#if defined(_MIPS_)
+
+//
+// Define functions to get the address of the current fiber and the
+// current fiber data.
+//
+
+#define GetCurrentFiber() ((*(PNT_TIB *)0x7ffff4a8)->FiberData)
+#define GetFiberData() (*(PVOID *)(GetCurrentFiber()))
+
+// begin_ntddk begin_nthal
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+
+#if !defined(RC_INVOKED)
+
+#define CONTEXT_R4000 0x00010000 // r4000 context
+
+#define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001)
+#define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002)
+#define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004)
+#define CONTEXT_EXTENDED_FLOAT (CONTEXT_FLOATING_POINT | 0x00000008)
+#define CONTEXT_EXTENDED_INTEGER (CONTEXT_INTEGER | 0x00000010)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | \
+ CONTEXT_INTEGER | CONTEXT_EXTENDED_INTEGER)
+
+#endif
+
+//
+// Context Frame
+//
+// N.B. This frame must be exactly a multiple of 16 bytes in length.
+//
+// This frame has a several purposes: 1) it is used as an argument to
+// NtContinue, 2) it is used to constuct a call frame for APC delivery,
+// 3) it is used to construct a call frame for exception dispatching
+// in user mode, and 4) it is used in the user level thread creation
+// routines.
+//
+// The layout of the record conforms to a standard call frame.
+//
+
+typedef struct _CONTEXT {
+
+ //
+ // This section is always present and is used as an argument build
+ // area.
+ //
+ // N.B. Context records are 0 mod 8 aligned starting with NT 4.0.
+ //
+
+ union {
+ DWORD Argument[4];
+ DWORDLONG Alignment;
+ };
+
+ //
+ // The following union defines the 32-bit and 64-bit register context.
+ //
+
+ union {
+
+ //
+ // 32-bit context.
+ //
+
+ struct {
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+ // N.B. This section contains the 16 double floating registers f0,
+ // f2, ..., f30.
+ //
+
+ DWORD FltF0;
+ DWORD FltF1;
+ DWORD FltF2;
+ DWORD FltF3;
+ DWORD FltF4;
+ DWORD FltF5;
+ DWORD FltF6;
+ DWORD FltF7;
+ DWORD FltF8;
+ DWORD FltF9;
+ DWORD FltF10;
+ DWORD FltF11;
+ DWORD FltF12;
+ DWORD FltF13;
+ DWORD FltF14;
+ DWORD FltF15;
+ DWORD FltF16;
+ DWORD FltF17;
+ DWORD FltF18;
+ DWORD FltF19;
+ DWORD FltF20;
+ DWORD FltF21;
+ DWORD FltF22;
+ DWORD FltF23;
+ DWORD FltF24;
+ DWORD FltF25;
+ DWORD FltF26;
+ DWORD FltF27;
+ DWORD FltF28;
+ DWORD FltF29;
+ DWORD FltF30;
+ DWORD FltF31;
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_INTEGER.
+ //
+ // N.B. The registers gp, sp, and ra are defined in this section,
+ // but are considered part of the control context rather than
+ // part of the integer context.
+ //
+ // N.B. Register zero is not stored in the frame.
+ //
+
+ DWORD IntZero;
+ DWORD IntAt;
+ DWORD IntV0;
+ DWORD IntV1;
+ DWORD IntA0;
+ DWORD IntA1;
+ DWORD IntA2;
+ DWORD IntA3;
+ DWORD IntT0;
+ DWORD IntT1;
+ DWORD IntT2;
+ DWORD IntT3;
+ DWORD IntT4;
+ DWORD IntT5;
+ DWORD IntT6;
+ DWORD IntT7;
+ DWORD IntS0;
+ DWORD IntS1;
+ DWORD IntS2;
+ DWORD IntS3;
+ DWORD IntS4;
+ DWORD IntS5;
+ DWORD IntS6;
+ DWORD IntS7;
+ DWORD IntT8;
+ DWORD IntT9;
+ DWORD IntK0;
+ DWORD IntK1;
+ DWORD IntGp;
+ DWORD IntSp;
+ DWORD IntS8;
+ DWORD IntRa;
+ DWORD IntLo;
+ DWORD IntHi;
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+
+ DWORD Fsr;
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_CONTROL.
+ //
+ // N.B. The registers gp, sp, and ra are defined in the integer section,
+ // but are considered part of the control context rather than part of
+ // the integer context.
+ //
+
+ DWORD Fir;
+ DWORD Psr;
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a thread's context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+
+ DWORD ContextFlags;
+ };
+
+ //
+ // 64-bit context.
+ //
+
+ struct {
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_EXTENDED_FLOAT.
+ //
+ // N.B. This section contains the 32 double floating registers f0,
+ // f1, ..., f31.
+ //
+
+ DWORDLONG XFltF0;
+ DWORDLONG XFltF1;
+ DWORDLONG XFltF2;
+ DWORDLONG XFltF3;
+ DWORDLONG XFltF4;
+ DWORDLONG XFltF5;
+ DWORDLONG XFltF6;
+ DWORDLONG XFltF7;
+ DWORDLONG XFltF8;
+ DWORDLONG XFltF9;
+ DWORDLONG XFltF10;
+ DWORDLONG XFltF11;
+ DWORDLONG XFltF12;
+ DWORDLONG XFltF13;
+ DWORDLONG XFltF14;
+ DWORDLONG XFltF15;
+ DWORDLONG XFltF16;
+ DWORDLONG XFltF17;
+ DWORDLONG XFltF18;
+ DWORDLONG XFltF19;
+ DWORDLONG XFltF20;
+ DWORDLONG XFltF21;
+ DWORDLONG XFltF22;
+ DWORDLONG XFltF23;
+ DWORDLONG XFltF24;
+ DWORDLONG XFltF25;
+ DWORDLONG XFltF26;
+ DWORDLONG XFltF27;
+ DWORDLONG XFltF28;
+ DWORDLONG XFltF29;
+ DWORDLONG XFltF30;
+ DWORDLONG XFltF31;
+
+ //
+ // The following sections must exactly overlay the 32-bit context.
+ //
+
+ DWORD Fill1;
+ DWORD Fill2;
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+
+ DWORD XFsr;
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_CONTROL.
+ //
+ // N.B. The registers gp, sp, and ra are defined in the integer
+ // section, but are considered part of the control context
+ // rather than part of the integer context.
+ //
+
+ DWORD XFir;
+ DWORD XPsr;
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a thread's context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+
+ DWORD XContextFlags;
+
+ //
+ // This section is specified/returned if the ContextFlags contains
+ // the flag CONTEXT_EXTENDED_INTEGER.
+ //
+ // N.B. The registers gp, sp, and ra are defined in this section,
+ // but are considered part of the control context rather than
+ // part of the integer context.
+ //
+ // N.B. Register zero is not stored in the frame.
+ //
+
+ DWORDLONG XIntZero;
+ DWORDLONG XIntAt;
+ DWORDLONG XIntV0;
+ DWORDLONG XIntV1;
+ DWORDLONG XIntA0;
+ DWORDLONG XIntA1;
+ DWORDLONG XIntA2;
+ DWORDLONG XIntA3;
+ DWORDLONG XIntT0;
+ DWORDLONG XIntT1;
+ DWORDLONG XIntT2;
+ DWORDLONG XIntT3;
+ DWORDLONG XIntT4;
+ DWORDLONG XIntT5;
+ DWORDLONG XIntT6;
+ DWORDLONG XIntT7;
+ DWORDLONG XIntS0;
+ DWORDLONG XIntS1;
+ DWORDLONG XIntS2;
+ DWORDLONG XIntS3;
+ DWORDLONG XIntS4;
+ DWORDLONG XIntS5;
+ DWORDLONG XIntS6;
+ DWORDLONG XIntS7;
+ DWORDLONG XIntT8;
+ DWORDLONG XIntT9;
+ DWORDLONG XIntK0;
+ DWORDLONG XIntK1;
+ DWORDLONG XIntGp;
+ DWORDLONG XIntSp;
+ DWORDLONG XIntS8;
+ DWORDLONG XIntRa;
+ DWORDLONG XIntLo;
+ DWORDLONG XIntHi;
+ };
+ };
+} CONTEXT, *PCONTEXT;
+
+// end_ntddk end_nthal
+
+#define CONTEXT32_LENGTH 0x130 // The original 32-bit Context length (pre NT 4.0)
+
+#endif // MIPS
+
+
+#if defined(_MIPS_)
+
+VOID
+__jump_unwind (
+ PVOID Fp,
+ PVOID TargetPc
+ );
+
+#endif // MIPS
+
+
+#if defined(_PPC_)
+
+
+//
+// The address of the TEB is placed into GPR 13 at context switch time
+// and should never be destroyed. To get the address of the TEB use
+// the compiler intrinsic to access it directly from GPR 13.
+//
+
+#if defined(_M_PPC) && defined(_MSC_VER) && (_MSC_VER>=1000)
+unsigned __gregister_get( unsigned const regnum );
+#define NtCurrentTeb() ((struct _TEB *)__gregister_get(13))
+#elif defined(_M_PPC)
+struct _TEB * __builtin_get_gpr13(VOID);
+#define NtCurrentTeb() ((struct _TEB *)__builtin_get_gpr13())
+#endif
+
+
+//
+// Define functions to get the address of the current fiber and the
+// current fiber data.
+//
+
+#define GetCurrentFiber() (((PNT_TIB)NtCurrentTeb())->FiberData)
+#define GetFiberData() (*(PVOID *)(GetCurrentFiber()))
+
+// begin_ntddk begin_nthal
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+
+#if !defined(RC_INVOKED)
+
+#define CONTEXT_CONTROL 0x00000001L
+#define CONTEXT_FLOATING_POINT 0x00000002L
+#define CONTEXT_INTEGER 0x00000004L
+#define CONTEXT_DEBUG_REGISTERS 0x00000008L
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+#endif
+
+//
+// Context Frame
+//
+// N.B. This frame must be exactly a multiple of 16 bytes in length.
+//
+// This frame has a several purposes: 1) it is used as an argument to
+// NtContinue, 2) it is used to constuct a call frame for APC delivery,
+// 3) it is used to construct a call frame for exception dispatching
+// in user mode, and 4) it is used in the user level thread creation
+// routines.
+//
+// Requires at least 8-byte alignment (double)
+//
+
+typedef struct _CONTEXT {
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_FLOATING_POINT.
+ //
+
+ double Fpr0; // Floating registers 0..31
+ double Fpr1;
+ double Fpr2;
+ double Fpr3;
+ double Fpr4;
+ double Fpr5;
+ double Fpr6;
+ double Fpr7;
+ double Fpr8;
+ double Fpr9;
+ double Fpr10;
+ double Fpr11;
+ double Fpr12;
+ double Fpr13;
+ double Fpr14;
+ double Fpr15;
+ double Fpr16;
+ double Fpr17;
+ double Fpr18;
+ double Fpr19;
+ double Fpr20;
+ double Fpr21;
+ double Fpr22;
+ double Fpr23;
+ double Fpr24;
+ double Fpr25;
+ double Fpr26;
+ double Fpr27;
+ double Fpr28;
+ double Fpr29;
+ double Fpr30;
+ double Fpr31;
+ double Fpscr; // Floating point status/control reg
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_INTEGER.
+ //
+
+ DWORD Gpr0; // General registers 0..31
+ DWORD Gpr1;
+ DWORD Gpr2;
+ DWORD Gpr3;
+ DWORD Gpr4;
+ DWORD Gpr5;
+ DWORD Gpr6;
+ DWORD Gpr7;
+ DWORD Gpr8;
+ DWORD Gpr9;
+ DWORD Gpr10;
+ DWORD Gpr11;
+ DWORD Gpr12;
+ DWORD Gpr13;
+ DWORD Gpr14;
+ DWORD Gpr15;
+ DWORD Gpr16;
+ DWORD Gpr17;
+ DWORD Gpr18;
+ DWORD Gpr19;
+ DWORD Gpr20;
+ DWORD Gpr21;
+ DWORD Gpr22;
+ DWORD Gpr23;
+ DWORD Gpr24;
+ DWORD Gpr25;
+ DWORD Gpr26;
+ DWORD Gpr27;
+ DWORD Gpr28;
+ DWORD Gpr29;
+ DWORD Gpr30;
+ DWORD Gpr31;
+
+ DWORD Cr; // Condition register
+ DWORD Xer; // Fixed point exception register
+
+ //
+ // This section is specified/returned if the ContextFlags word contains
+ // the flag CONTEXT_CONTROL.
+ //
+
+ DWORD Msr; // Machine status register
+ DWORD Iar; // Instruction address register
+ DWORD Lr; // Link register
+ DWORD Ctr; // Count register
+
+ //
+ // The flags values within this flag control the contents of
+ // a CONTEXT record.
+ //
+ // If the context record is used as an input parameter, then
+ // for each portion of the context record controlled by a flag
+ // whose value is set, it is assumed that that portion of the
+ // context record contains valid context. If the context record
+ // is being used to modify a thread's context, then only that
+ // portion of the threads context will be modified.
+ //
+ // If the context record is used as an IN OUT parameter to capture
+ // the context of a thread, then only those portions of the thread's
+ // context corresponding to set flags will be returned.
+ //
+ // The context record is never used as an OUT only parameter.
+ //
+
+ DWORD ContextFlags;
+
+ DWORD Fill[3]; // Pad out to multiple of 16 bytes
+
+ //
+ // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
+ // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
+ // included in CONTEXT_FULL.
+ //
+ DWORD Dr0; // Breakpoint Register 1
+ DWORD Dr1; // Breakpoint Register 2
+ DWORD Dr2; // Breakpoint Register 3
+ DWORD Dr3; // Breakpoint Register 4
+ DWORD Dr4; // Breakpoint Register 5
+ DWORD Dr5; // Breakpoint Register 6
+ DWORD Dr6; // Debug Status Register
+ DWORD Dr7; // Debug Control Register
+
+} CONTEXT, *PCONTEXT;
+
+// end_ntddk end_nthal
+
+
+//
+// Stack frame header
+//
+// Order of appearance in stack frame:
+// Header (six words)
+// Parameters (at least eight words)
+// Local variables
+// Saved GPRs
+// Saved FPRs
+//
+// Minimum alignment is 8 bytes
+
+typedef struct _STACK_FRAME_HEADER { // GPR 1 points here
+ DWORD BackChain; // Addr of previous frame
+ DWORD GlueSaved1; // Used by glue code
+ DWORD GlueSaved2;
+ DWORD Reserved1; // Reserved
+ DWORD Spare1; // Used by tracing, profiling, ...
+ DWORD Spare2;
+
+ DWORD Parameter0; // First 8 parameter words are
+ DWORD Parameter1; // always present
+ DWORD Parameter2;
+ DWORD Parameter3;
+ DWORD Parameter4;
+ DWORD Parameter5;
+ DWORD Parameter6;
+ DWORD Parameter7;
+
+} STACK_FRAME_HEADER,*PSTACK_FRAME_HEADER;
+
+
+VOID
+__jump_unwind (
+ PVOID Fp,
+ PVOID TargetPc
+ );
+
+#endif // defined(_PPC_)
+#define EXCEPTION_NONCONTINUABLE 0x1 // Noncontinuable exception
+#define EXCEPTION_MAXIMUM_PARAMETERS 15 // maximum number of exception parameters
+
+//
+// Exception record definition.
+//
+
+typedef struct _EXCEPTION_RECORD {
+ /*lint -e18 */ // Don't complain about different definitions
+ DWORD ExceptionCode;
+ /*lint +e18 */ // Resume checking for different definitions
+ DWORD ExceptionFlags;
+ struct _EXCEPTION_RECORD *ExceptionRecord;
+ PVOID ExceptionAddress;
+ DWORD NumberParameters;
+ DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+ } EXCEPTION_RECORD;
+
+typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
+
+//
+// Typedef for pointer returned by exception_info()
+//
+
+typedef struct _EXCEPTION_POINTERS {
+ PEXCEPTION_RECORD ExceptionRecord;
+ PCONTEXT ContextRecord;
+} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
+#define PROCESS_TERMINATE (0x0001)
+#define PROCESS_CREATE_THREAD (0x0002)
+#define PROCESS_VM_OPERATION (0x0008)
+#define PROCESS_VM_READ (0x0010)
+#define PROCESS_VM_WRITE (0x0020)
+#define PROCESS_DUP_HANDLE (0x0040)
+#define PROCESS_CREATE_PROCESS (0x0080)
+#define PROCESS_SET_QUOTA (0x0100)
+#define PROCESS_SET_INFORMATION (0x0200)
+#define PROCESS_QUERY_INFORMATION (0x0400)
+#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
+ 0xFFF)
+
+
+#define MAXIMUM_PROCESSORS 32
+
+#define THREAD_TERMINATE (0x0001)
+#define THREAD_SUSPEND_RESUME (0x0002)
+#define THREAD_GET_CONTEXT (0x0008)
+#define THREAD_SET_CONTEXT (0x0010)
+#define THREAD_SET_INFORMATION (0x0020)
+#define THREAD_QUERY_INFORMATION (0x0040)
+#define THREAD_SET_THREAD_TOKEN (0x0080)
+#define THREAD_IMPERSONATE (0x0100)
+#define THREAD_DIRECT_IMPERSONATION (0x0200)
+// begin_ntddk
+
+#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
+ 0x3FF)
+
+// end_ntddk
+#define TLS_MINIMUM_AVAILABLE 64
+
+typedef struct _NT_TIB {
+ struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+ PVOID StackBase;
+ PVOID StackLimit;
+ PVOID SubSystemTib;
+ union {
+ PVOID FiberData;
+ DWORD Version;
+ };
+ PVOID ArbitraryUserPointer;
+ struct _NT_TIB *Self;
+} NT_TIB;
+typedef NT_TIB *PNT_TIB;
+#define THREAD_BASE_PRIORITY_LOWRT 15 // value that gets a thread to LowRealtime-1
+#define THREAD_BASE_PRIORITY_MAX 2 // maximum thread base priority boost
+#define THREAD_BASE_PRIORITY_MIN -2 // minimum thread base priority boost
+#define THREAD_BASE_PRIORITY_IDLE -15 // value that gets a thread to idle
+
+typedef struct _QUOTA_LIMITS {
+ DWORD PagedPoolLimit;
+ DWORD NonPagedPoolLimit;
+ DWORD MinimumWorkingSetSize;
+ DWORD MaximumWorkingSetSize;
+ DWORD PagefileLimit;
+ LARGE_INTEGER TimeLimit;
+} QUOTA_LIMITS;
+typedef QUOTA_LIMITS *PQUOTA_LIMITS;
+
+#define EVENT_MODIFY_STATE 0x0002
+#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
+#define MUTANT_QUERY_STATE 0x0001
+
+#define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\
+ MUTANT_QUERY_STATE)
+#define SEMAPHORE_MODIFY_STATE 0x0002
+#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
+#define TIME_ZONE_ID_UNKNOWN 0
+#define TIME_ZONE_ID_STANDARD 1
+#define TIME_ZONE_ID_DAYLIGHT 2
+
+#define PROCESSOR_INTEL_386 386
+#define PROCESSOR_INTEL_486 486
+#define PROCESSOR_INTEL_PENTIUM 586
+#define PROCESSOR_MIPS_R4000 4000
+#define PROCESSOR_ALPHA_21064 21064
+
+#define PROCESSOR_ARCHITECTURE_INTEL 0
+#define PROCESSOR_ARCHITECTURE_MIPS 1
+#define PROCESSOR_ARCHITECTURE_ALPHA 2
+#define PROCESSOR_ARCHITECTURE_PPC 3
+#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
+
+#define PF_FLOATING_POINT_PRECISION_ERRATA 0
+#define PF_FLOATING_POINT_EMULATED 1
+#define PF_COMPARE_EXCHANGE_DOUBLE 2
+#define PF_MMX_INSTRUCTIONS_AVAILABLE 3
+typedef struct _MEMORY_BASIC_INFORMATION {
+ PVOID BaseAddress;
+ PVOID AllocationBase;
+ DWORD AllocationProtect;
+ DWORD RegionSize;
+ DWORD State;
+ DWORD Protect;
+ DWORD Type;
+} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
+#define SECTION_QUERY 0x0001
+#define SECTION_MAP_WRITE 0x0002
+#define SECTION_MAP_READ 0x0004
+#define SECTION_MAP_EXECUTE 0x0008
+#define SECTION_EXTEND_SIZE 0x0010
+
+#define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY|\
+ SECTION_MAP_WRITE | \
+ SECTION_MAP_READ | \
+ SECTION_MAP_EXECUTE | \
+ SECTION_EXTEND_SIZE)
+#define PAGE_NOACCESS 0x01
+#define PAGE_READONLY 0x02
+#define PAGE_READWRITE 0x04
+#define PAGE_WRITECOPY 0x08
+#define PAGE_EXECUTE 0x10
+#define PAGE_EXECUTE_READ 0x20
+#define PAGE_EXECUTE_READWRITE 0x40
+#define PAGE_EXECUTE_WRITECOPY 0x80
+#define PAGE_GUARD 0x100
+#define PAGE_NOCACHE 0x200
+#define MEM_COMMIT 0x1000
+#define MEM_RESERVE 0x2000
+#define MEM_DECOMMIT 0x4000
+#define MEM_RELEASE 0x8000
+#define MEM_FREE 0x10000
+#define MEM_PRIVATE 0x20000
+#define MEM_MAPPED 0x40000
+#define MEM_RESET 0x80000
+#define MEM_TOP_DOWN 0x100000
+#define SEC_FILE 0x800000
+#define SEC_IMAGE 0x1000000
+#define SEC_RESERVE 0x4000000
+#define SEC_COMMIT 0x8000000
+#define SEC_NOCACHE 0x10000000
+#define MEM_IMAGE SEC_IMAGE
+
+//
+// Define access rights to files and directories
+//
+
+//
+// The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in
+// devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these
+// constants *MUST* always be in sync.
+// The values are redefined in devioctl.h because they must be available to
+// both DOS and NT.
+//
+
+#define FILE_READ_DATA ( 0x0001 ) // file & pipe
+#define FILE_LIST_DIRECTORY ( 0x0001 ) // directory
+
+#define FILE_WRITE_DATA ( 0x0002 ) // file & pipe
+#define FILE_ADD_FILE ( 0x0002 ) // directory
+
+#define FILE_APPEND_DATA ( 0x0004 ) // file
+#define FILE_ADD_SUBDIRECTORY ( 0x0004 ) // directory
+#define FILE_CREATE_PIPE_INSTANCE ( 0x0004 ) // named pipe
+
+#define FILE_READ_EA ( 0x0008 ) // file & directory
+
+#define FILE_WRITE_EA ( 0x0010 ) // file & directory
+
+#define FILE_EXECUTE ( 0x0020 ) // file
+#define FILE_TRAVERSE ( 0x0020 ) // directory
+
+#define FILE_DELETE_CHILD ( 0x0040 ) // directory
+
+#define FILE_READ_ATTRIBUTES ( 0x0080 ) // all
+
+#define FILE_WRITE_ATTRIBUTES ( 0x0100 ) // all
+
+#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
+
+#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ |\
+ FILE_READ_DATA |\
+ FILE_READ_ATTRIBUTES |\
+ FILE_READ_EA |\
+ SYNCHRONIZE)
+
+
+#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\
+ FILE_WRITE_DATA |\
+ FILE_WRITE_ATTRIBUTES |\
+ FILE_WRITE_EA |\
+ FILE_APPEND_DATA |\
+ SYNCHRONIZE)
+
+
+#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ FILE_READ_ATTRIBUTES |\
+ FILE_EXECUTE |\
+ SYNCHRONIZE)
+
+#define FILE_SHARE_READ 0x00000001
+#define FILE_SHARE_WRITE 0x00000002
+#define FILE_SHARE_DELETE 0x00000004
+#define FILE_ATTRIBUTE_READONLY 0x00000001
+#define FILE_ATTRIBUTE_HIDDEN 0x00000002
+#define FILE_ATTRIBUTE_SYSTEM 0x00000004
+#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
+#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
+#define FILE_ATTRIBUTE_NORMAL 0x00000080
+#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
+#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
+#define FILE_ATTRIBUTE_OFFLINE 0x00001000
+#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
+#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
+#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
+#define FILE_NOTIFY_CHANGE_SIZE 0x00000008
+#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
+#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
+#define FILE_NOTIFY_CHANGE_CREATION 0x00000040
+#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
+#define FILE_ACTION_ADDED 0x00000001
+#define FILE_ACTION_REMOVED 0x00000002
+#define FILE_ACTION_MODIFIED 0x00000003
+#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
+#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
+#define MAILSLOT_NO_MESSAGE ((DWORD)-1)
+#define MAILSLOT_WAIT_FOREVER ((DWORD)-1)
+#define FILE_CASE_SENSITIVE_SEARCH 0x00000001
+#define FILE_CASE_PRESERVED_NAMES 0x00000002
+#define FILE_UNICODE_ON_DISK 0x00000004
+#define FILE_PERSISTENT_ACLS 0x00000008
+#define FILE_FILE_COMPRESSION 0x00000010
+#define FILE_VOLUME_IS_COMPRESSED 0x00008000
+
+//
+// Define the file notification information structure
+//
+
+typedef struct _FILE_NOTIFY_INFORMATION {
+ DWORD NextEntryOffset;
+ DWORD Action;
+ DWORD FileNameLength;
+ WCHAR FileName[1];
+} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
+
+
+//
+// Define segement buffer structure for scatter/gather read/write.
+//
+
+typedef union _FILE_SEGMENT_ELEMENT {
+ PVOID Buffer;
+ DWORDLONG Alignment;
+}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
+
+#define IO_COMPLETION_MODIFY_STATE 0x0002
+#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
+#define DUPLICATE_CLOSE_SOURCE 0x00000001
+#define DUPLICATE_SAME_ACCESS 0x00000002
+typedef PVOID PACCESS_TOKEN;
+typedef PVOID PSECURITY_DESCRIPTOR;
+typedef PVOID PSID;
+////////////////////////////////////////////////////////////////////////
+// //
+// ACCESS MASK //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// Define the access mask as a longword sized structure divided up 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
+// +---------------+---------------+-------------------------------+
+// |G|G|G|G|Res'd|A| StandardRights| SpecificRights |
+// |R|W|E|A| |S| | |
+// +-+-------------+---------------+-------------------------------+
+//
+// typedef struct _ACCESS_MASK {
+// WORD SpecificRights;
+// BYTE StandardRights;
+// BYTE AccessSystemAcl : 1;
+// BYTE Reserved : 3;
+// BYTE GenericAll : 1;
+// BYTE GenericExecute : 1;
+// BYTE GenericWrite : 1;
+// BYTE GenericRead : 1;
+// } ACCESS_MASK;
+// typedef ACCESS_MASK *PACCESS_MASK;
+//
+// but to make life simple for programmer's we'll allow them to specify
+// a desired access mask by simply OR'ing together mulitple single rights
+// and treat an access mask as a DWORD. For example
+//
+// DesiredAccess = DELETE | READ_CONTROL
+//
+// So we'll declare ACCESS_MASK as DWORD
+//
+
+// begin_ntddk begin_nthal begin_ntifs
+typedef DWORD ACCESS_MASK;
+typedef ACCESS_MASK *PACCESS_MASK;
+
+////////////////////////////////////////////////////////////////////////
+// //
+// ACCESS TYPES //
+// //
+////////////////////////////////////////////////////////////////////////
+
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// The following are masks for the predefined standard access types
+//
+
+#define DELETE (0x00010000L)
+#define READ_CONTROL (0x00020000L)
+#define WRITE_DAC (0x00040000L)
+#define WRITE_OWNER (0x00080000L)
+#define SYNCHRONIZE (0x00100000L)
+
+#define STANDARD_RIGHTS_REQUIRED (0x000F0000L)
+
+#define STANDARD_RIGHTS_READ (READ_CONTROL)
+#define STANDARD_RIGHTS_WRITE (READ_CONTROL)
+#define STANDARD_RIGHTS_EXECUTE (READ_CONTROL)
+
+#define STANDARD_RIGHTS_ALL (0x001F0000L)
+
+#define SPECIFIC_RIGHTS_ALL (0x0000FFFFL)
+
+//
+// AccessSystemAcl access type
+//
+
+#define ACCESS_SYSTEM_SECURITY (0x01000000L)
+
+//
+// MaximumAllowed access type
+//
+
+#define MAXIMUM_ALLOWED (0x02000000L)
+
+//
+// These are the generic rights.
+//
+
+#define GENERIC_READ (0x80000000L)
+#define GENERIC_WRITE (0x40000000L)
+#define GENERIC_EXECUTE (0x20000000L)
+#define GENERIC_ALL (0x10000000L)
+
+
+//
+// Define the generic mapping array. This is used to denote the
+// mapping of each generic access right to a specific access mask.
+//
+
+typedef struct _GENERIC_MAPPING {
+ ACCESS_MASK GenericRead;
+ ACCESS_MASK GenericWrite;
+ ACCESS_MASK GenericExecute;
+ ACCESS_MASK GenericAll;
+} GENERIC_MAPPING;
+typedef GENERIC_MAPPING *PGENERIC_MAPPING;
+
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// LUID_AND_ATTRIBUTES //
+// //
+////////////////////////////////////////////////////////////////////////
+//
+//
+
+
+#include <pshpack4.h>
+
+typedef struct _LUID_AND_ATTRIBUTES {
+ LUID Luid;
+ DWORD Attributes;
+ } LUID_AND_ATTRIBUTES, * PLUID_AND_ATTRIBUTES;
+typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
+
+#include <poppack.h>
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Security Id (SID) //
+// //
+////////////////////////////////////////////////////////////////////////
+//
+//
+// Pictorially the structure of an SID is as follows:
+//
+// 1 1 1 1 1 1
+// 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+// +---------------------------------------------------------------+
+// | SubAuthorityCount |Reserved1 (SBZ)| Revision |
+// +---------------------------------------------------------------+
+// | IdentifierAuthority[0] |
+// +---------------------------------------------------------------+
+// | IdentifierAuthority[1] |
+// +---------------------------------------------------------------+
+// | IdentifierAuthority[2] |
+// +---------------------------------------------------------------+
+// | |
+// +- - - - - - - - SubAuthority[] - - - - - - - - -+
+// | |
+// +---------------------------------------------------------------+
+//
+//
+
+
+// begin_ntifs
+
+#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
+#define SID_IDENTIFIER_AUTHORITY_DEFINED
+typedef struct _SID_IDENTIFIER_AUTHORITY {
+ BYTE Value[6];
+} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
+#endif
+
+
+#ifndef SID_DEFINED
+#define SID_DEFINED
+typedef struct _SID {
+ BYTE Revision;
+ BYTE SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+#ifdef MIDL_PASS
+ [size_is(SubAuthorityCount)] DWORD SubAuthority[*];
+#else // MIDL_PASS
+ DWORD SubAuthority[ANYSIZE_ARRAY];
+#endif // MIDL_PASS
+} SID, *PISID;
+#endif
+
+#define SID_REVISION (1) // Current revision level
+#define SID_MAX_SUB_AUTHORITIES (15)
+#define SID_RECOMMENDED_SUB_AUTHORITIES (1) // Will change to around 6
+ // in a future release.
+
+typedef enum _SID_NAME_USE {
+ SidTypeUser = 1,
+ SidTypeGroup,
+ SidTypeDomain,
+ SidTypeAlias,
+ SidTypeWellKnownGroup,
+ SidTypeDeletedAccount,
+ SidTypeInvalid,
+ SidTypeUnknown
+} SID_NAME_USE, *PSID_NAME_USE;
+
+typedef struct _SID_AND_ATTRIBUTES {
+ PSID Sid;
+ DWORD Attributes;
+ } SID_AND_ATTRIBUTES, * PSID_AND_ATTRIBUTES;
+
+typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// Universal well-known SIDs //
+// //
+// Null SID S-1-0-0 //
+// World S-1-1-0 //
+// Local S-1-2-0 //
+// Creator Owner ID S-1-3-0 //
+// Creator Group ID S-1-3-1 //
+// Creator Owner Server ID S-1-3-2 //
+// Creator Group Server ID S-1-3-3 //
+// //
+// (Non-unique IDs) S-1-4 //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
+#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
+#define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
+#define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
+#define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
+
+#define SECURITY_NULL_RID (0x00000000L)
+#define SECURITY_WORLD_RID (0x00000000L)
+#define SECURITY_LOCAL_RID (0X00000000L)
+
+#define SECURITY_CREATOR_OWNER_RID (0x00000000L)
+#define SECURITY_CREATOR_GROUP_RID (0x00000001L)
+
+#define SECURITY_CREATOR_OWNER_SERVER_RID (0x00000002L)
+#define SECURITY_CREATOR_GROUP_SERVER_RID (0x00000003L)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// NT well-known SIDs //
+// //
+// NT Authority S-1-5 //
+// Dialup S-1-5-1 //
+// //
+// Network S-1-5-2 //
+// Batch S-1-5-3 //
+// Interactive S-1-5-4 //
+// Service S-1-5-6 //
+// AnonymousLogon S-1-5-7 (aka null logon session) //
+// Proxy S-1-5-8 //
+// ServerLogon S-1-5-8 (aka domain controller account) //
+// //
+// (Logon IDs) S-1-5-5-X-Y //
+// //
+// (NT non-unique IDs) S-1-5-0x15-... //
+// //
+// (Built-in domain) s-1-5-0x20 //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+
+#define SECURITY_NT_AUTHORITY {0,0,0,0,0,5} // ntifs
+
+#define SECURITY_DIALUP_RID (0x00000001L)
+#define SECURITY_NETWORK_RID (0x00000002L)
+#define SECURITY_BATCH_RID (0x00000003L)
+#define SECURITY_INTERACTIVE_RID (0x00000004L)
+#define SECURITY_SERVICE_RID (0x00000006L)
+#define SECURITY_ANONYMOUS_LOGON_RID (0x00000007L)
+#define SECURITY_PROXY_RID (0x00000008L)
+#define SECURITY_SERVER_LOGON_RID (0x00000009L)
+
+#define SECURITY_LOGON_IDS_RID (0x00000005L)
+#define SECURITY_LOGON_IDS_RID_COUNT (3L)
+
+#define SECURITY_LOCAL_SYSTEM_RID (0x00000012L)
+
+#define SECURITY_NT_NON_UNIQUE (0x00000015L)
+
+#define SECURITY_BUILTIN_DOMAIN_RID (0x00000020L)
+
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// //
+// well-known domain relative sub-authority values (RIDs)... //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+// Well-known users ...
+
+#define DOMAIN_USER_RID_ADMIN (0x000001F4L)
+#define DOMAIN_USER_RID_GUEST (0x000001F5L)
+
+
+
+// well-known groups ...
+
+#define DOMAIN_GROUP_RID_ADMINS (0x00000200L)
+#define DOMAIN_GROUP_RID_USERS (0x00000201L)
+#define DOMAIN_GROUP_RID_GUESTS (0x00000202L)
+
+
+
+
+// well-known aliases ...
+
+#define DOMAIN_ALIAS_RID_ADMINS (0x00000220L)
+#define DOMAIN_ALIAS_RID_USERS (0x00000221L)
+#define DOMAIN_ALIAS_RID_GUESTS (0x00000222L)
+#define DOMAIN_ALIAS_RID_POWER_USERS (0x00000223L)
+
+#define DOMAIN_ALIAS_RID_ACCOUNT_OPS (0x00000224L)
+#define DOMAIN_ALIAS_RID_SYSTEM_OPS (0x00000225L)
+#define DOMAIN_ALIAS_RID_PRINT_OPS (0x00000226L)
+#define DOMAIN_ALIAS_RID_BACKUP_OPS (0x00000227L)
+
+#define DOMAIN_ALIAS_RID_REPLICATOR (0x00000228L)
+
+
+
+
+
+
+//
+// Allocate the System Luid. The first 1000 LUIDs are reserved.
+// Use #999 here (0x3E7 = 999)
+//
+
+#define SYSTEM_LUID { 0x3E7, 0x0 }
+
+// end_ntifs
+
+////////////////////////////////////////////////////////////////////////
+// //
+// User and Group related SID attributes //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// Group attributes
+//
+
+#define SE_GROUP_MANDATORY (0x00000001L)
+#define SE_GROUP_ENABLED_BY_DEFAULT (0x00000002L)
+#define SE_GROUP_ENABLED (0x00000004L)
+#define SE_GROUP_OWNER (0x00000008L)
+#define SE_GROUP_LOGON_ID (0xC0000000L)
+
+
+
+//
+// User attributes
+//
+
+// (None yet defined.)
+
+
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// ACL and ACE //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// Define an ACL and the ACE format. The structure of an ACL header
+// followed by one or more ACEs. Pictorally the structure of an ACL header
+// is 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
+// +-------------------------------+---------------+---------------+
+// | AclSize | Sbz1 | AclRevision |
+// +-------------------------------+---------------+---------------+
+// | Sbz2 | AceCount |
+// +-------------------------------+-------------------------------+
+//
+// The current AclRevision is defined to be ACL_REVISION.
+//
+// AclSize is the size, in bytes, allocated for the ACL. This includes
+// the ACL header, ACES, and remaining free space in the buffer.
+//
+// AceCount is the number of ACES in the ACL.
+//
+
+// begin_ntddk begin_ntifs
+// This is the *current* ACL revision
+
+#define ACL_REVISION (2)
+
+// This is the history of ACL revisions. Add a new one whenever
+// ACL_REVISION is updated
+
+#define ACL_REVISION1 (1)
+#define ACL_REVISION2 (2)
+#define ACL_REVISION3 (3)
+
+typedef struct _ACL {
+ BYTE AclRevision;
+ BYTE Sbz1;
+ WORD AclSize;
+ WORD AceCount;
+ WORD Sbz2;
+} ACL;
+typedef ACL *PACL;
+
+// end_ntddk
+
+//
+// The structure of an ACE is a common ace header followed by ace type
+// specific data. Pictorally the structure of the common ace header is
+// 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
+// +---------------+-------+-------+---------------+---------------+
+// | AceSize | AceFlags | AceType |
+// +---------------+-------+-------+---------------+---------------+
+//
+// AceType denotes the type of the ace, there are some predefined ace
+// types
+//
+// AceSize is the size, in bytes, of ace.
+//
+// AceFlags are the Ace flags for audit and inheritance, defined shortly.
+
+typedef struct _ACE_HEADER {
+ BYTE AceType;
+ BYTE AceFlags;
+ WORD AceSize;
+} ACE_HEADER;
+typedef ACE_HEADER *PACE_HEADER;
+
+//
+// The following are the predefined ace types that go into the AceType
+// field of an Ace header.
+//
+
+#define ACCESS_ALLOWED_ACE_TYPE (0x0)
+#define ACCESS_DENIED_ACE_TYPE (0x1)
+#define SYSTEM_AUDIT_ACE_TYPE (0x2)
+#define SYSTEM_ALARM_ACE_TYPE (0x3)
+
+//
+// The following are the inherit flags that go into the AceFlags field
+// of an Ace header.
+//
+
+#define OBJECT_INHERIT_ACE (0x1)
+#define CONTAINER_INHERIT_ACE (0x2)
+#define NO_PROPAGATE_INHERIT_ACE (0x4)
+#define INHERIT_ONLY_ACE (0x8)
+#define VALID_INHERIT_FLAGS (0xF)
+
+
+// The following are the currently defined ACE flags that go into the
+// AceFlags field of an ACE header. Each ACE type has its own set of
+// AceFlags.
+//
+// SUCCESSFUL_ACCESS_ACE_FLAG - used only with system audit and alarm ACE
+// types to indicate that a message is generated for successful accesses.
+//
+// FAILED_ACCESS_ACE_FLAG - used only with system audit and alarm ACE types
+// to indicate that a message is generated for failed accesses.
+//
+
+//
+// SYSTEM_AUDIT and SYSTEM_ALARM AceFlags
+//
+// These control the signaling of audit and alarms for success or failure.
+//
+
+#define SUCCESSFUL_ACCESS_ACE_FLAG (0x40)
+#define FAILED_ACCESS_ACE_FLAG (0x80)
+
+
+//
+// We'll define the structure of the predefined ACE types. Pictorally
+// the structure of the predefined ACE's is 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
+// +---------------+-------+-------+---------------+---------------+
+// | AceFlags | Resd |Inherit| AceSize | AceType |
+// +---------------+-------+-------+---------------+---------------+
+// | Mask |
+// +---------------------------------------------------------------+
+// | |
+// + +
+// | |
+// + Sid +
+// | |
+// + +
+// | |
+// +---------------------------------------------------------------+
+//
+// Mask is the access mask associated with the ACE. This is either the
+// access allowed, access denied, audit, or alarm mask.
+//
+// Sid is the Sid associated with the ACE.
+//
+
+// The following are the four predefined ACE types.
+
+// Examine the AceType field in the Header to determine
+// which structure is appropriate to use for casting.
+
+
+typedef struct _ACCESS_ALLOWED_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD SidStart;
+} ACCESS_ALLOWED_ACE;
+
+typedef ACCESS_ALLOWED_ACE *PACCESS_ALLOWED_ACE;
+
+typedef struct _ACCESS_DENIED_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD SidStart;
+} ACCESS_DENIED_ACE;
+typedef ACCESS_DENIED_ACE *PACCESS_DENIED_ACE;
+
+typedef struct _SYSTEM_AUDIT_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD SidStart;
+} SYSTEM_AUDIT_ACE;
+typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
+
+typedef struct _SYSTEM_ALARM_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD SidStart;
+} SYSTEM_ALARM_ACE;
+typedef SYSTEM_ALARM_ACE *PSYSTEM_ALARM_ACE;
+
+// end_ntifs
+
+
+
+//
+// The following declarations are used for setting and querying information
+// about and ACL. First are the various information classes available to
+// the user.
+//
+
+typedef enum _ACL_INFORMATION_CLASS {
+ AclRevisionInformation = 1,
+ AclSizeInformation
+} ACL_INFORMATION_CLASS;
+
+//
+// This record is returned/sent if the user is requesting/setting the
+// AclRevisionInformation
+//
+
+typedef struct _ACL_REVISION_INFORMATION {
+ DWORD AclRevision;
+} ACL_REVISION_INFORMATION;
+typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION;
+
+//
+// This record is returned if the user is requesting AclSizeInformation
+//
+
+typedef struct _ACL_SIZE_INFORMATION {
+ DWORD AceCount;
+ DWORD AclBytesInUse;
+ DWORD AclBytesFree;
+} ACL_SIZE_INFORMATION;
+typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION;
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// SECURITY_DESCRIPTOR //
+// //
+////////////////////////////////////////////////////////////////////////
+//
+// Define the Security Descriptor and related data types.
+// This is an opaque data structure.
+//
+
+// begin_ntddk begin_ntifs
+//
+// Current security descriptor revision value
+//
+
+#define SECURITY_DESCRIPTOR_REVISION (1)
+#define SECURITY_DESCRIPTOR_REVISION1 (1)
+
+// end_ntddk
+
+//
+// Minimum length, in bytes, needed to build a security descriptor
+// (NOTE: This must manually be kept consistent with the)
+// (sizeof(SECURITY_DESCRIPTOR) )
+//
+
+#define SECURITY_DESCRIPTOR_MIN_LENGTH (20)
+
+
+typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
+
+#define SE_OWNER_DEFAULTED (0x0001)
+#define SE_GROUP_DEFAULTED (0x0002)
+#define SE_DACL_PRESENT (0x0004)
+#define SE_DACL_DEFAULTED (0x0008)
+#define SE_SACL_PRESENT (0x0010)
+#define SE_SACL_DEFAULTED (0x0020)
+#define SE_SELF_RELATIVE (0x8000)
+
+//
+// Where:
+//
+// SE_OWNER_DEFAULTED - This boolean flag, when set, indicates that the
+// SID pointed to by the Owner field was provided by a
+// defaulting mechanism rather than explicitly provided by the
+// original provider of the security descriptor. This may
+// affect the treatment of the SID with respect to inheritence
+// of an owner.
+//
+// SE_GROUP_DEFAULTED - This boolean flag, when set, indicates that the
+// SID in the Group field was provided by a defaulting mechanism
+// rather than explicitly provided by the original provider of
+// the security descriptor. This may affect the treatment of
+// the SID with respect to inheritence of a primary group.
+//
+// SE_DACL_PRESENT - This boolean flag, when set, indicates that the
+// security descriptor contains a discretionary ACL. If this
+// flag is set and the Dacl field of the SECURITY_DESCRIPTOR is
+// null, then a null ACL is explicitly being specified.
+//
+// SE_DACL_DEFAULTED - This boolean flag, when set, indicates that the
+// ACL pointed to by the Dacl field was provided by a defaulting
+// mechanism rather than explicitly provided by the original
+// provider of the security descriptor. This may affect the
+// treatment of the ACL with respect to inheritence of an ACL.
+// This flag is ignored if the DaclPresent flag is not set.
+//
+// SE_SACL_PRESENT - This boolean flag, when set, indicates that the
+// security descriptor contains a system ACL pointed to by the
+// Sacl field. If this flag is set and the Sacl field of the
+// SECURITY_DESCRIPTOR is null, then an empty (but present)
+// ACL is being specified.
+//
+// SE_SACL_DEFAULTED - This boolean flag, when set, indicates that the
+// ACL pointed to by the Sacl field was provided by a defaulting
+// mechanism rather than explicitly provided by the original
+// provider of the security descriptor. This may affect the
+// treatment of the ACL with respect to inheritence of an ACL.
+// This flag is ignored if the SaclPresent flag is not set.
+//
+// SE_SELF_RELATIVE - This boolean flag, when set, indicates that the
+// security descriptor is in self-relative form. In this form,
+// all fields of the security descriptor are contiguous in memory
+// and all pointer fields are expressed as offsets from the
+// beginning of the security descriptor. This form is useful
+// for treating security descriptors as opaque data structures
+// for transmission in communication protocol or for storage on
+// secondary media.
+//
+//
+//
+// Pictorially the structure of a security descriptor is 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
+// +---------------------------------------------------------------+
+// | Control |Reserved1 (SBZ)| Revision |
+// +---------------------------------------------------------------+
+// | Owner |
+// +---------------------------------------------------------------+
+// | Group |
+// +---------------------------------------------------------------+
+// | Sacl |
+// +---------------------------------------------------------------+
+// | Dacl |
+// +---------------------------------------------------------------+
+//
+// In general, this data structure should be treated opaquely to ensure future
+// compatibility.
+//
+//
+
+typedef struct _SECURITY_DESCRIPTOR {
+ BYTE Revision;
+ BYTE Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+ } SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
+
+// end_ntifs
+
+// Where:
+//
+// Revision - Contains the revision level of the security
+// descriptor. This allows this structure to be passed between
+// systems or stored on disk even though it is expected to
+// change in the future.
+//
+// Control - A set of flags which qualify the meaning of the
+// security descriptor or individual fields of the security
+// descriptor.
+//
+// Owner - is a pointer to an SID representing an object's owner.
+// If this field is null, then no owner SID is present in the
+// security descriptor. If the security descriptor is in
+// self-relative form, then this field contains an offset to
+// the SID, rather than a pointer.
+//
+// Group - is a pointer to an SID representing an object's primary
+// group. If this field is null, then no primary group SID is
+// present in the security descriptor. If the security descriptor
+// is in self-relative form, then this field contains an offset to
+// the SID, rather than a pointer.
+//
+// Sacl - is a pointer to a system ACL. This field value is only
+// valid if the DaclPresent control flag is set. If the
+// SaclPresent flag is set and this field is null, then a null
+// ACL is specified. If the security descriptor is in
+// self-relative form, then this field contains an offset to
+// the ACL, rather than a pointer.
+//
+// Dacl - is a pointer to a discretionary ACL. This field value is
+// only valid if the DaclPresent control flag is set. If the
+// DaclPresent flag is set and this field is null, then a null
+// ACL (unconditionally granting access) is specified. If the
+// security descriptor is in self-relative form, then this field
+// contains an offset to the ACL, rather than a pointer.
+//
+
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Privilege Related Data Structures //
+// //
+////////////////////////////////////////////////////////////////////////
+
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// Privilege attributes
+//
+
+#define SE_PRIVILEGE_ENABLED_BY_DEFAULT (0x00000001L)
+#define SE_PRIVILEGE_ENABLED (0x00000002L)
+#define SE_PRIVILEGE_USED_FOR_ACCESS (0x80000000L)
+
+//
+// Privilege Set Control flags
+//
+
+#define PRIVILEGE_SET_ALL_NECESSARY (1)
+
+//
+// Privilege Set - This is defined for a privilege set of one.
+// If more than one privilege is needed, then this structure
+// will need to be allocated with more space.
+//
+// Note: don't change this structure without fixing the INITIAL_PRIVILEGE_SET
+// structure (defined in se.h)
+//
+
+typedef struct _PRIVILEGE_SET {
+ DWORD PrivilegeCount;
+ DWORD Control;
+ LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
+ } PRIVILEGE_SET, * PPRIVILEGE_SET;
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// NT Defined Privileges //
+// //
+////////////////////////////////////////////////////////////////////////
+
+#define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege")
+#define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege")
+#define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege")
+#define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege")
+#define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege")
+#define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
+#define SE_TCB_NAME TEXT("SeTcbPrivilege")
+#define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
+#define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege")
+#define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege")
+#define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege")
+#define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
+#define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege")
+#define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege")
+#define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
+#define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege")
+#define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
+#define SE_RESTORE_NAME TEXT("SeRestorePrivilege")
+#define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")
+#define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
+#define SE_AUDIT_NAME TEXT("SeAuditPrivilege")
+#define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege")
+#define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege")
+#define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege")
+
+
+////////////////////////////////////////////////////////////////////
+// //
+// Security Quality Of Service //
+// //
+// //
+////////////////////////////////////////////////////////////////////
+
+// begin_ntddk begin_nthal begin_ntifs
+//
+// Impersonation Level
+//
+// Impersonation level is represented by a pair of bits in Windows.
+// If a new impersonation level is added or lowest value is changed from
+// 0 to something else, fix the Windows CreateFile call.
+//
+
+typedef enum _SECURITY_IMPERSONATION_LEVEL {
+ SecurityAnonymous,
+ SecurityIdentification,
+ SecurityImpersonation,
+ SecurityDelegation
+ } SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL;
+
+#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
+
+#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
+
+
+////////////////////////////////////////////////////////////////////
+// //
+// Token Object Definitions //
+// //
+// //
+////////////////////////////////////////////////////////////////////
+
+
+//
+// Token Specific Access Rights.
+//
+
+#define TOKEN_ASSIGN_PRIMARY (0x0001)
+#define TOKEN_DUPLICATE (0x0002)
+#define TOKEN_IMPERSONATE (0x0004)
+#define TOKEN_QUERY (0x0008)
+#define TOKEN_QUERY_SOURCE (0x0010)
+#define TOKEN_ADJUST_PRIVILEGES (0x0020)
+#define TOKEN_ADJUST_GROUPS (0x0040)
+#define TOKEN_ADJUST_DEFAULT (0x0080)
+
+#define TOKEN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ TOKEN_ASSIGN_PRIMARY |\
+ TOKEN_DUPLICATE |\
+ TOKEN_IMPERSONATE |\
+ TOKEN_QUERY |\
+ TOKEN_QUERY_SOURCE |\
+ TOKEN_ADJUST_PRIVILEGES |\
+ TOKEN_ADJUST_GROUPS |\
+ TOKEN_ADJUST_DEFAULT)
+
+
+#define TOKEN_READ (STANDARD_RIGHTS_READ |\
+ TOKEN_QUERY)
+
+
+#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\
+ TOKEN_ADJUST_PRIVILEGES |\
+ TOKEN_ADJUST_GROUPS |\
+ TOKEN_ADJUST_DEFAULT)
+
+#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE)
+
+
+//
+//
+// Token Types
+//
+
+typedef enum _TOKEN_TYPE {
+ TokenPrimary = 1,
+ TokenImpersonation
+ } TOKEN_TYPE;
+typedef TOKEN_TYPE *PTOKEN_TYPE;
+
+
+//
+// Token Information Classes.
+//
+
+
+typedef enum _TOKEN_INFORMATION_CLASS {
+ TokenUser = 1,
+ TokenGroups,
+ TokenPrivileges,
+ TokenOwner,
+ TokenPrimaryGroup,
+ TokenDefaultDacl,
+ TokenSource,
+ TokenType,
+ TokenImpersonationLevel,
+ TokenStatistics
+} TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS;
+// end_ntifs
+
+//
+// Token information class structures
+//
+
+
+typedef struct _TOKEN_USER {
+ SID_AND_ATTRIBUTES User;
+} TOKEN_USER, *PTOKEN_USER;
+
+// begin_ntifs
+
+typedef struct _TOKEN_GROUPS {
+ DWORD GroupCount;
+ SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
+} TOKEN_GROUPS, *PTOKEN_GROUPS;
+
+
+typedef struct _TOKEN_PRIVILEGES {
+ DWORD PrivilegeCount;
+ LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
+} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
+
+// end_ntifs
+
+typedef struct _TOKEN_OWNER {
+ PSID Owner;
+} TOKEN_OWNER, *PTOKEN_OWNER;
+
+
+typedef struct _TOKEN_PRIMARY_GROUP {
+ PSID PrimaryGroup;
+} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;
+
+
+typedef struct _TOKEN_DEFAULT_DACL {
+ PACL DefaultDacl;
+} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
+
+
+
+#define TOKEN_SOURCE_LENGTH 8
+
+typedef struct _TOKEN_SOURCE {
+ CHAR SourceName[TOKEN_SOURCE_LENGTH];
+ LUID SourceIdentifier;
+} TOKEN_SOURCE, *PTOKEN_SOURCE;
+
+// end_ntifs
+
+typedef struct _TOKEN_STATISTICS {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LARGE_INTEGER ExpirationTime;
+ TOKEN_TYPE TokenType;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ DWORD DynamicCharged;
+ DWORD DynamicAvailable;
+ DWORD GroupCount;
+ DWORD PrivilegeCount;
+ LUID ModifiedId;
+} TOKEN_STATISTICS, *PTOKEN_STATISTICS;
+
+
+// begin_ntifs
+
+typedef struct _TOKEN_CONTROL {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LUID ModifiedId;
+ TOKEN_SOURCE TokenSource;
+ } TOKEN_CONTROL, *PTOKEN_CONTROL;
+
+//
+// Security Tracking Mode
+//
+
+#define SECURITY_DYNAMIC_TRACKING (TRUE)
+#define SECURITY_STATIC_TRACKING (FALSE)
+
+typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,
+ * PSECURITY_CONTEXT_TRACKING_MODE;
+
+
+
+//
+// Quality Of Service
+//
+
+typedef struct _SECURITY_QUALITY_OF_SERVICE {
+ DWORD Length;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
+ BOOLEAN EffectiveOnly;
+ } SECURITY_QUALITY_OF_SERVICE, * PSECURITY_QUALITY_OF_SERVICE;
+
+
+//
+// Used to represent information related to a thread impersonation
+//
+
+typedef struct _SE_IMPERSONATION_STATE {
+ PACCESS_TOKEN Token;
+ BOOLEAN CopyOnOpen;
+ BOOLEAN EffectiveOnly;
+ SECURITY_IMPERSONATION_LEVEL Level;
+} SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE;
+
+
+typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
+
+#define OWNER_SECURITY_INFORMATION (0X00000001L)
+#define GROUP_SECURITY_INFORMATION (0X00000002L)
+#define DACL_SECURITY_INFORMATION (0X00000004L)
+#define SACL_SECURITY_INFORMATION (0X00000008L)
+
+
+//
+// Image Format
+//
+
+#include "pshpack4.h" // 4 byte packing is the default
+
+#define IMAGE_DOS_SIGNATURE 0x5A4D // MZ
+#define IMAGE_OS2_SIGNATURE 0x454E // NE
+#define IMAGE_OS2_SIGNATURE_LE 0x454C // LE
+#define IMAGE_VXD_SIGNATURE 0x454C // LE
+#define IMAGE_NT_SIGNATURE 0x00004550 // PE00
+
+#include "pshpack2.h" // 16 bit headers are 2 byte packed
+
+typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
+ WORD e_magic; // Magic number
+ WORD e_cblp; // Bytes on last page of file
+ WORD e_cp; // Pages in file
+ WORD e_crlc; // Relocations
+ WORD e_cparhdr; // Size of header in paragraphs
+ WORD e_minalloc; // Minimum extra paragraphs needed
+ WORD e_maxalloc; // Maximum extra paragraphs needed
+ WORD e_ss; // Initial (relative) SS value
+ WORD e_sp; // Initial SP value
+ WORD e_csum; // Checksum
+ WORD e_ip; // Initial IP value
+ WORD e_cs; // Initial (relative) CS value
+ WORD e_lfarlc; // File address of relocation table
+ WORD e_ovno; // Overlay number
+ WORD e_res[4]; // Reserved words
+ WORD e_oemid; // OEM identifier (for e_oeminfo)
+ WORD e_oeminfo; // OEM information; e_oemid specific
+ WORD e_res2[10]; // Reserved words
+ LONG e_lfanew; // File address of new exe header
+ } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
+
+typedef struct _IMAGE_OS2_HEADER { // OS/2 .EXE header
+ WORD ne_magic; // Magic number
+ CHAR ne_ver; // Version number
+ CHAR ne_rev; // Revision number
+ WORD ne_enttab; // Offset of Entry Table
+ WORD ne_cbenttab; // Number of bytes in Entry Table
+ LONG ne_crc; // Checksum of whole file
+ WORD ne_flags; // Flag word
+ WORD ne_autodata; // Automatic data segment number
+ WORD ne_heap; // Initial heap allocation
+ WORD ne_stack; // Initial stack allocation
+ LONG ne_csip; // Initial CS:IP setting
+ LONG ne_sssp; // Initial SS:SP setting
+ WORD ne_cseg; // Count of file segments
+ WORD ne_cmod; // Entries in Module Reference Table
+ WORD ne_cbnrestab; // Size of non-resident name table
+ WORD ne_segtab; // Offset of Segment Table
+ WORD ne_rsrctab; // Offset of Resource Table
+ WORD ne_restab; // Offset of resident name table
+ WORD ne_modtab; // Offset of Module Reference Table
+ WORD ne_imptab; // Offset of Imported Names Table
+ LONG ne_nrestab; // Offset of Non-resident Names Table
+ WORD ne_cmovent; // Count of movable entries
+ WORD ne_align; // Segment alignment shift count
+ WORD ne_cres; // Count of resource segments
+ BYTE ne_exetyp; // Target Operating system
+ BYTE ne_flagsothers; // Other .EXE flags
+ WORD ne_pretthunks; // offset to return thunks
+ WORD ne_psegrefbytes; // offset to segment ref. bytes
+ WORD ne_swaparea; // Minimum code swap area size
+ WORD ne_expver; // Expected Windows version number
+ } IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER;
+
+typedef struct _IMAGE_VXD_HEADER { // Windows VXD header
+ WORD e32_magic; // Magic number
+ BYTE e32_border; // The byte ordering for the VXD
+ BYTE e32_worder; // The word ordering for the VXD
+ DWORD e32_level; // The EXE format level for now = 0
+ WORD e32_cpu; // The CPU type
+ WORD e32_os; // The OS type
+ DWORD e32_ver; // Module version
+ DWORD e32_mflags; // Module flags
+ DWORD e32_mpages; // Module # pages
+ DWORD e32_startobj; // Object # for instruction pointer
+ DWORD e32_eip; // Extended instruction pointer
+ DWORD e32_stackobj; // Object # for stack pointer
+ DWORD e32_esp; // Extended stack pointer
+ DWORD e32_pagesize; // VXD page size
+ DWORD e32_lastpagesize; // Last page size in VXD
+ DWORD e32_fixupsize; // Fixup section size
+ DWORD e32_fixupsum; // Fixup section checksum
+ DWORD e32_ldrsize; // Loader section size
+ DWORD e32_ldrsum; // Loader section checksum
+ DWORD e32_objtab; // Object table offset
+ DWORD e32_objcnt; // Number of objects in module
+ DWORD e32_objmap; // Object page map offset
+ DWORD e32_itermap; // Object iterated data map offset
+ DWORD e32_rsrctab; // Offset of Resource Table
+ DWORD e32_rsrccnt; // Number of resource entries
+ DWORD e32_restab; // Offset of resident name table
+ DWORD e32_enttab; // Offset of Entry Table
+ DWORD e32_dirtab; // Offset of Module Directive Table
+ DWORD e32_dircnt; // Number of module directives
+ DWORD e32_fpagetab; // Offset of Fixup Page Table
+ DWORD e32_frectab; // Offset of Fixup Record Table
+ DWORD e32_impmod; // Offset of Import Module Name Table
+ DWORD e32_impmodcnt; // Number of entries in Import Module Name Table
+ DWORD e32_impproc; // Offset of Import Procedure Name Table
+ DWORD e32_pagesum; // Offset of Per-Page Checksum Table
+ DWORD e32_datapage; // Offset of Enumerated Data Pages
+ DWORD e32_preload; // Number of preload pages
+ DWORD e32_nrestab; // Offset of Non-resident Names Table
+ DWORD e32_cbnrestab; // Size of Non-resident Name Table
+ DWORD e32_nressum; // Non-resident Name Table Checksum
+ DWORD e32_autodata; // Object # for automatic data object
+ DWORD e32_debuginfo; // Offset of the debugging information
+ DWORD e32_debuglen; // The length of the debugging info. in bytes
+ DWORD e32_instpreload; // Number of instance pages in preload section of VXD file
+ DWORD e32_instdemand; // Number of instance pages in demand load section of VXD file
+ DWORD e32_heapsize; // Size of heap - for 16-bit apps
+ BYTE e32_res3[12]; // Reserved words
+ DWORD e32_winresoff;
+ DWORD e32_winreslen;
+ WORD e32_devid; // Device ID for VxD
+ WORD e32_ddkver; // DDK version for VxD
+ } IMAGE_VXD_HEADER, *PIMAGE_VXD_HEADER;
+
+#include "poppack.h" // Back to 4 byte packing
+
+//
+// File header format.
+//
+
+typedef struct _IMAGE_FILE_HEADER {
+ WORD Machine;
+ WORD NumberOfSections;
+ DWORD TimeDateStamp;
+ DWORD PointerToSymbolTable;
+ DWORD NumberOfSymbols;
+ WORD SizeOfOptionalHeader;
+ WORD Characteristics;
+} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
+
+#define IMAGE_SIZEOF_FILE_HEADER 20
+
+#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file.
+#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved externel references).
+#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file.
+#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file.
+#define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 // Agressively trim working set
+#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed.
+#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine.
+#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file
+#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 // If Image is on removable media, copy and run from the swap file.
+#define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 // If Image is on Net, copy and run from the swap file.
+#define IMAGE_FILE_SYSTEM 0x1000 // System File.
+#define IMAGE_FILE_DLL 0x2000 // File is a DLL.
+#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 // File should only be run on a UP machine
+#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed.
+
+#define IMAGE_FILE_MACHINE_UNKNOWN 0
+#define IMAGE_FILE_MACHINE_I386 0x14c // Intel 386.
+#define IMAGE_FILE_MACHINE_R3000 0x162 // MIPS little-endian, 0x160 big-endian
+#define IMAGE_FILE_MACHINE_R4000 0x166 // MIPS little-endian
+#define IMAGE_FILE_MACHINE_R10000 0x168 // MIPS little-endian
+#define IMAGE_FILE_MACHINE_ALPHA 0x184 // Alpha_AXP
+#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian
+
+//
+// Directory format.
+//
+
+typedef struct _IMAGE_DATA_DIRECTORY {
+ DWORD VirtualAddress;
+ DWORD Size;
+} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
+
+#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
+
+//
+// Optional header format.
+//
+
+typedef struct _IMAGE_OPTIONAL_HEADER {
+ //
+ // Standard fields.
+ //
+
+ WORD Magic;
+ BYTE MajorLinkerVersion;
+ BYTE MinorLinkerVersion;
+ DWORD SizeOfCode;
+ DWORD SizeOfInitializedData;
+ DWORD SizeOfUninitializedData;
+ DWORD AddressOfEntryPoint;
+ DWORD BaseOfCode;
+ DWORD BaseOfData;
+
+ //
+ // NT additional fields.
+ //
+
+ DWORD ImageBase;
+ DWORD SectionAlignment;
+ DWORD FileAlignment;
+ WORD MajorOperatingSystemVersion;
+ WORD MinorOperatingSystemVersion;
+ WORD MajorImageVersion;
+ WORD MinorImageVersion;
+ WORD MajorSubsystemVersion;
+ WORD MinorSubsystemVersion;
+ DWORD Win32VersionValue;
+ DWORD SizeOfImage;
+ DWORD SizeOfHeaders;
+ DWORD CheckSum;
+ WORD Subsystem;
+ WORD DllCharacteristics;
+ DWORD SizeOfStackReserve;
+ DWORD SizeOfStackCommit;
+ DWORD SizeOfHeapReserve;
+ DWORD SizeOfHeapCommit;
+ DWORD LoaderFlags;
+ DWORD NumberOfRvaAndSizes;
+ IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
+
+typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
+ WORD Magic;
+ BYTE MajorLinkerVersion;
+ BYTE MinorLinkerVersion;
+ DWORD SizeOfCode;
+ DWORD SizeOfInitializedData;
+ DWORD SizeOfUninitializedData;
+ DWORD AddressOfEntryPoint;
+ DWORD BaseOfCode;
+ DWORD BaseOfData;
+ DWORD BaseOfBss;
+ DWORD GprMask;
+ DWORD CprMask[4];
+ DWORD GpValue;
+} IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER;
+
+#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
+#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
+
+#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
+#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
+
+typedef struct _IMAGE_NT_HEADERS {
+ DWORD Signature;
+ IMAGE_FILE_HEADER FileHeader;
+ IMAGE_OPTIONAL_HEADER OptionalHeader;
+} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;
+
+typedef struct _IMAGE_ROM_HEADERS {
+ IMAGE_FILE_HEADER FileHeader;
+ IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
+} IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS;
+
+#define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) \
+ ((DWORD)ntheader + \
+ FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \
+ ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader \
+ ))
+
+
+// Subsystem Values
+
+#define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem.
+#define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem.
+#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem.
+#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem.
+#define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 character subsystem.
+#define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image run in the Posix character subsystem.
+#define IMAGE_SUBSYSTEM_RESERVED8 8 // image run in the 8 subsystem.
+
+
+// Directory Entries
+
+#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory
+#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory
+#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory
+#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory
+#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory
+#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table
+#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory
+#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // Description String
+#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // Machine Value (MIPS GP)
+#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory
+#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory
+#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 // Bound Import Directory in headers
+#define IMAGE_DIRECTORY_ENTRY_IAT 12 // Import Address Table
+
+//
+// Section header format.
+//
+
+#define IMAGE_SIZEOF_SHORT_NAME 8
+
+typedef struct _IMAGE_SECTION_HEADER {
+ BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
+ union {
+ DWORD PhysicalAddress;
+ DWORD VirtualSize;
+ } Misc;
+ DWORD VirtualAddress;
+ DWORD SizeOfRawData;
+ DWORD PointerToRawData;
+ DWORD PointerToRelocations;
+ DWORD PointerToLinenumbers;
+ WORD NumberOfRelocations;
+ WORD NumberOfLinenumbers;
+ DWORD Characteristics;
+} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
+
+#define IMAGE_SIZEOF_SECTION_HEADER 40
+
+//
+// Section characteristics.
+//
+
+// IMAGE_SCN_TYPE_REG 0x00000000 // Reserved.
+// IMAGE_SCN_TYPE_DSECT 0x00000001 // Reserved.
+// IMAGE_SCN_TYPE_NOLOAD 0x00000002 // Reserved.
+// IMAGE_SCN_TYPE_GROUP 0x00000004 // Reserved.
+#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 // Reserved.
+// IMAGE_SCN_TYPE_COPY 0x00000010 // Reserved.
+
+#define IMAGE_SCN_CNT_CODE 0x00000020 // Section contains code.
+#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 // Section contains initialized data.
+#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 // Section contains uninitialized data.
+
+#define IMAGE_SCN_LNK_OTHER 0x00000100 // Reserved.
+#define IMAGE_SCN_LNK_INFO 0x00000200 // Section contains comments or some other type of information.
+// IMAGE_SCN_TYPE_OVER 0x00000400 // Reserved.
+#define IMAGE_SCN_LNK_REMOVE 0x00000800 // Section contents will not become part of image.
+#define IMAGE_SCN_LNK_COMDAT 0x00001000 // Section contents comdat.
+// 0x00002000 // Reserved.
+
+// IMAGE_SCN_MEM_PROTECTED - Obsolete 0x00004000
+#define IMAGE_SCN_MEM_FARDATA 0x00008000
+// IMAGE_SCN_MEM_SYSHEAP - Obsolete 0x00010000
+#define IMAGE_SCN_MEM_PURGEABLE 0x00020000
+#define IMAGE_SCN_MEM_16BIT 0x00020000
+#define IMAGE_SCN_MEM_LOCKED 0x00040000
+#define IMAGE_SCN_MEM_PRELOAD 0x00080000
+
+#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 //
+#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 //
+#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 //
+#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 //
+#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default alignment if no others are specified.
+#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 //
+#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 //
+// Unused 0x00800000
+
+#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 // Section contains extended relocations.
+#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 // Section can be discarded.
+#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 // Section is not cachable.
+#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 // Section is not pageable.
+#define IMAGE_SCN_MEM_SHARED 0x10000000 // Section is shareable.
+#define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable.
+#define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable.
+#define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable.
+
+
+//
+// TLS Chaacteristic Flags
+//
+#define IMAGE_SCN_SCALE_INDEX 0x00000001 // Tls index is scaled
+
+#include "pshpack2.h" // Symbols, relocs, and linenumbers are 2 byte packed
+
+//
+// Symbol format.
+//
+
+typedef struct _IMAGE_SYMBOL {
+ union {
+ BYTE ShortName[8];
+ struct {
+ DWORD Short; // if 0, use LongName
+ DWORD Long; // offset into string table
+ } Name;
+ PBYTE LongName[2];
+ } N;
+ DWORD Value;
+ SHORT SectionNumber;
+ WORD Type;
+ BYTE StorageClass;
+ BYTE NumberOfAuxSymbols;
+} IMAGE_SYMBOL;
+typedef IMAGE_SYMBOL UNALIGNED *PIMAGE_SYMBOL;
+
+
+#define IMAGE_SIZEOF_SYMBOL 18
+
+//
+// Section values.
+//
+// Symbols have a section number of the section in which they are
+// defined. Otherwise, section numbers have the following meanings:
+//
+
+#define IMAGE_SYM_UNDEFINED (SHORT)0 // Symbol is undefined or is common.
+#define IMAGE_SYM_ABSOLUTE (SHORT)-1 // Symbol is an absolute value.
+#define IMAGE_SYM_DEBUG (SHORT)-2 // Symbol is a special debug item.
+
+//
+// Type (fundamental) values.
+//
+
+#define IMAGE_SYM_TYPE_NULL 0x0000 // no type.
+#define IMAGE_SYM_TYPE_VOID 0x0001 //
+#define IMAGE_SYM_TYPE_CHAR 0x0002 // type character.
+#define IMAGE_SYM_TYPE_SHORT 0x0003 // type short integer.
+#define IMAGE_SYM_TYPE_INT 0x0004 //
+#define IMAGE_SYM_TYPE_LONG 0x0005 //
+#define IMAGE_SYM_TYPE_FLOAT 0x0006 //
+#define IMAGE_SYM_TYPE_DOUBLE 0x0007 //
+#define IMAGE_SYM_TYPE_STRUCT 0x0008 //
+#define IMAGE_SYM_TYPE_UNION 0x0009 //
+#define IMAGE_SYM_TYPE_ENUM 0x000A // enumeration.
+#define IMAGE_SYM_TYPE_MOE 0x000B // member of enumeration.
+#define IMAGE_SYM_TYPE_BYTE 0x000C //
+#define IMAGE_SYM_TYPE_WORD 0x000D //
+#define IMAGE_SYM_TYPE_UINT 0x000E //
+#define IMAGE_SYM_TYPE_DWORD 0x000F //
+#define IMAGE_SYM_TYPE_PCODE 0x8000 //
+
+//
+// Type (derived) values.
+//
+
+#define IMAGE_SYM_DTYPE_NULL 0 // no derived type.
+#define IMAGE_SYM_DTYPE_POINTER 1 // pointer.
+#define IMAGE_SYM_DTYPE_FUNCTION 2 // function.
+#define IMAGE_SYM_DTYPE_ARRAY 3 // array.
+
+//
+// Storage classes.
+//
+
+#define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE )-1
+#define IMAGE_SYM_CLASS_NULL 0x0000
+#define IMAGE_SYM_CLASS_AUTOMATIC 0x0001
+#define IMAGE_SYM_CLASS_EXTERNAL 0x0002
+#define IMAGE_SYM_CLASS_STATIC 0x0003
+#define IMAGE_SYM_CLASS_REGISTER 0x0004
+#define IMAGE_SYM_CLASS_EXTERNAL_DEF 0x0005
+#define IMAGE_SYM_CLASS_LABEL 0x0006
+#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 0x0007
+#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 0x0008
+#define IMAGE_SYM_CLASS_ARGUMENT 0x0009
+#define IMAGE_SYM_CLASS_STRUCT_TAG 0x000A
+#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 0x000B
+#define IMAGE_SYM_CLASS_UNION_TAG 0x000C
+#define IMAGE_SYM_CLASS_TYPE_DEFINITION 0x000D
+#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 0x000E
+#define IMAGE_SYM_CLASS_ENUM_TAG 0x000F
+#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 0x0010
+#define IMAGE_SYM_CLASS_REGISTER_PARAM 0x0011
+#define IMAGE_SYM_CLASS_BIT_FIELD 0x0012
+
+#define IMAGE_SYM_CLASS_FAR_EXTERNAL 0x0044 //
+
+#define IMAGE_SYM_CLASS_BLOCK 0x0064
+#define IMAGE_SYM_CLASS_FUNCTION 0x0065
+#define IMAGE_SYM_CLASS_END_OF_STRUCT 0x0066
+#define IMAGE_SYM_CLASS_FILE 0x0067
+// new
+#define IMAGE_SYM_CLASS_SECTION 0x0068
+#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 0x0069
+
+// type packing constants
+
+#define N_BTMASK 0x000F
+#define N_TMASK 0x0030
+#define N_TMASK1 0x00C0
+#define N_TMASK2 0x00F0
+#define N_BTSHFT 4
+#define N_TSHIFT 2
+
+// MACROS
+
+// Basic Type of x
+#define BTYPE(x) ((x) & N_BTMASK)
+
+// Is x a pointer?
+#ifndef ISPTR
+#define ISPTR(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT))
+#endif
+
+// Is x a function?
+#ifndef ISFCN
+#define ISFCN(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT))
+#endif
+
+// Is x an array?
+
+#ifndef ISARY
+#define ISARY(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT))
+#endif
+
+// Is x a structure, union, or enumeration TAG?
+#ifndef ISTAG
+#define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG)
+#endif
+
+#ifndef INCREF
+#define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
+#endif
+#ifndef DECREF
+#define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
+#endif
+
+//
+// Auxiliary entry format.
+//
+
+typedef union _IMAGE_AUX_SYMBOL {
+ struct {
+ DWORD TagIndex; // struct, union, or enum tag index
+ union {
+ struct {
+ WORD Linenumber; // declaration line number
+ WORD Size; // size of struct, union, or enum
+ } LnSz;
+ DWORD TotalSize;
+ } Misc;
+ union {
+ struct { // if ISFCN, tag, or .bb
+ DWORD PointerToLinenumber;
+ DWORD PointerToNextFunction;
+ } Function;
+ struct { // if ISARY, up to 4 dimen.
+ WORD Dimension[4];
+ } Array;
+ } FcnAry;
+ WORD TvIndex; // tv index
+ } Sym;
+ struct {
+ BYTE Name[IMAGE_SIZEOF_SYMBOL];
+ } File;
+ struct {
+ DWORD Length; // section length
+ WORD NumberOfRelocations; // number of relocation entries
+ WORD NumberOfLinenumbers; // number of line numbers
+ DWORD CheckSum; // checksum for communal
+ SHORT Number; // section number to associate with
+ BYTE Selection; // communal selection type
+ } Section;
+} IMAGE_AUX_SYMBOL;
+typedef IMAGE_AUX_SYMBOL UNALIGNED *PIMAGE_AUX_SYMBOL;
+
+#define IMAGE_SIZEOF_AUX_SYMBOL 18
+
+//
+// Communal selection types.
+//
+
+#define IMAGE_COMDAT_SELECT_NODUPLICATES 1
+#define IMAGE_COMDAT_SELECT_ANY 2
+#define IMAGE_COMDAT_SELECT_SAME_SIZE 3
+#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
+#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
+#define IMAGE_COMDAT_SELECT_LARGEST 6
+#define IMAGE_COMDAT_SELECT_NEWEST 7
+
+#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
+#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
+#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
+
+//
+// Relocation format.
+//
+
+typedef struct _IMAGE_RELOCATION {
+ union {
+ DWORD VirtualAddress;
+ DWORD RelocCount; // Set to the real count when IMAGE_SCN_LNK_NRELOC_OVFL is set
+ };
+ DWORD SymbolTableIndex;
+ WORD Type;
+} IMAGE_RELOCATION;
+typedef IMAGE_RELOCATION UNALIGNED *PIMAGE_RELOCATION;
+
+#define IMAGE_SIZEOF_RELOCATION 10
+
+//
+// I386 relocation types.
+//
+
+#define IMAGE_REL_I386_ABSOLUTE 0x0000 // Reference is absolute, no relocation is necessary
+#define IMAGE_REL_I386_DIR16 0x0001 // Direct 16-bit reference to the symbols virtual address
+#define IMAGE_REL_I386_REL16 0x0002 // PC-relative 16-bit reference to the symbols virtual address
+#define IMAGE_REL_I386_DIR32 0x0006 // Direct 32-bit reference to the symbols virtual address
+#define IMAGE_REL_I386_DIR32NB 0x0007 // Direct 32-bit reference to the symbols virtual address, base not included
+#define IMAGE_REL_I386_SEG12 0x0009 // Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address
+#define IMAGE_REL_I386_SECTION 0x000A
+#define IMAGE_REL_I386_SECREL 0x000B
+#define IMAGE_REL_I386_REL32 0x0014 // PC-relative 32-bit reference to the symbols virtual address
+
+//
+// MIPS relocation types.
+//
+
+#define IMAGE_REL_MIPS_ABSOLUTE 0x0000 // Reference is absolute, no relocation is necessary
+#define IMAGE_REL_MIPS_REFHALF 0x0001
+#define IMAGE_REL_MIPS_REFWORD 0x0002
+#define IMAGE_REL_MIPS_JMPADDR 0x0003
+#define IMAGE_REL_MIPS_REFHI 0x0004
+#define IMAGE_REL_MIPS_REFLO 0x0005
+#define IMAGE_REL_MIPS_GPREL 0x0006
+#define IMAGE_REL_MIPS_LITERAL 0x0007
+#define IMAGE_REL_MIPS_SECTION 0x000A
+#define IMAGE_REL_MIPS_SECREL 0x000B
+#define IMAGE_REL_MIPS_SECRELLO 0x000C // Low 16-bit section relative referemce (used for >32k TLS)
+#define IMAGE_REL_MIPS_SECRELHI 0x000D // High 16-bit section relative reference (used for >32k TLS)
+#define IMAGE_REL_MIPS_REFWORDNB 0x0022
+#define IMAGE_REL_MIPS_PAIR 0x0025
+
+//
+// Alpha Relocation types.
+//
+
+#define IMAGE_REL_ALPHA_ABSOLUTE 0x0000
+#define IMAGE_REL_ALPHA_REFLONG 0x0001
+#define IMAGE_REL_ALPHA_REFQUAD 0x0002
+#define IMAGE_REL_ALPHA_GPREL32 0x0003
+#define IMAGE_REL_ALPHA_LITERAL 0x0004
+#define IMAGE_REL_ALPHA_LITUSE 0x0005
+#define IMAGE_REL_ALPHA_GPDISP 0x0006
+#define IMAGE_REL_ALPHA_BRADDR 0x0007
+#define IMAGE_REL_ALPHA_HINT 0x0008
+#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009
+#define IMAGE_REL_ALPHA_REFHI 0x000A
+#define IMAGE_REL_ALPHA_REFLO 0x000B
+#define IMAGE_REL_ALPHA_PAIR 0x000C
+#define IMAGE_REL_ALPHA_MATCH 0x000D
+#define IMAGE_REL_ALPHA_SECTION 0x000E
+#define IMAGE_REL_ALPHA_SECREL 0x000F
+#define IMAGE_REL_ALPHA_REFLONGNB 0x0010
+#define IMAGE_REL_ALPHA_SECRELLO 0x0011 // Low 16-bit section relative reference
+#define IMAGE_REL_ALPHA_SECRELHI 0x0012 // High 16-bit section relative reference
+
+//
+// IBM PowerPC relocation types.
+//
+
+#define IMAGE_REL_PPC_ABSOLUTE 0x0000 // NOP
+#define IMAGE_REL_PPC_ADDR64 0x0001 // 64-bit address
+#define IMAGE_REL_PPC_ADDR32 0x0002 // 32-bit address
+#define IMAGE_REL_PPC_ADDR24 0x0003 // 26-bit address, shifted left 2 (branch absolute)
+#define IMAGE_REL_PPC_ADDR16 0x0004 // 16-bit address
+#define IMAGE_REL_PPC_ADDR14 0x0005 // 16-bit address, shifted left 2 (load doubleword)
+#define IMAGE_REL_PPC_REL24 0x0006 // 26-bit PC-relative offset, shifted left 2 (branch relative)
+#define IMAGE_REL_PPC_REL14 0x0007 // 16-bit PC-relative offset, shifted left 2 (br cond relative)
+#define IMAGE_REL_PPC_TOCREL16 0x0008 // 16-bit offset from TOC base
+#define IMAGE_REL_PPC_TOCREL14 0x0009 // 16-bit offset from TOC base, shifted left 2 (load doubleword)
+
+#define IMAGE_REL_PPC_ADDR32NB 0x000A // 32-bit addr w/o image base
+#define IMAGE_REL_PPC_SECREL 0x000B // va of containing section (as in an image sectionhdr)
+#define IMAGE_REL_PPC_SECTION 0x000C // sectionheader number
+#define IMAGE_REL_PPC_IFGLUE 0x000D // substitute TOC restore instruction iff symbol is glue code
+#define IMAGE_REL_PPC_IMGLUE 0x000E // symbol is glue code; virtual address is TOC restore instruction
+#define IMAGE_REL_PPC_SECREL16 0x000F // va of containing section (limited to 16 bits)
+#define IMAGE_REL_PPC_REFHI 0x0010
+#define IMAGE_REL_PPC_REFLO 0x0011
+#define IMAGE_REL_PPC_PAIR 0x0012
+#define IMAGE_REL_PPC_SECRELLO 0x0013 // Low 16-bit section relative reference (used for >32k TLS)
+#define IMAGE_REL_PPC_SECRELHI 0x0014 // High 16-bit section relative reference (used for >32k TLS)
+
+#define IMAGE_REL_PPC_TYPEMASK 0x00FF // mask to isolate above values in IMAGE_RELOCATION.Type
+
+// Flag bits in IMAGE_RELOCATION.TYPE
+
+#define IMAGE_REL_PPC_NEG 0x0100 // subtract reloc value rather than adding it
+#define IMAGE_REL_PPC_BRTAKEN 0x0200 // fix branch prediction bit to predict branch taken
+#define IMAGE_REL_PPC_BRNTAKEN 0x0400 // fix branch prediction bit to predict branch not taken
+#define IMAGE_REL_PPC_TOCDEFN 0x0800 // toc slot defined in file (or, data in toc)
+
+//
+// Line number format.
+//
+
+typedef struct _IMAGE_LINENUMBER {
+ union {
+ DWORD SymbolTableIndex; // Symbol table index of function name if Linenumber is 0.
+ DWORD VirtualAddress; // Virtual address of line number.
+ } Type;
+ WORD Linenumber; // Line number.
+} IMAGE_LINENUMBER;
+typedef IMAGE_LINENUMBER UNALIGNED *PIMAGE_LINENUMBER;
+
+#define IMAGE_SIZEOF_LINENUMBER 6
+
+#include "poppack.h" // Back to 4 byte packing
+
+//
+// Based relocation format.
+//
+
+typedef struct _IMAGE_BASE_RELOCATION {
+ DWORD VirtualAddress;
+ DWORD SizeOfBlock;
+// WORD TypeOffset[1];
+} IMAGE_BASE_RELOCATION;
+typedef IMAGE_BASE_RELOCATION UNALIGNED * PIMAGE_BASE_RELOCATION;
+
+#define IMAGE_SIZEOF_BASE_RELOCATION 8
+
+//
+// Based relocation types.
+//
+
+#define IMAGE_REL_BASED_ABSOLUTE 0
+#define IMAGE_REL_BASED_HIGH 1
+#define IMAGE_REL_BASED_LOW 2
+#define IMAGE_REL_BASED_HIGHLOW 3
+#define IMAGE_REL_BASED_HIGHADJ 4
+#define IMAGE_REL_BASED_MIPS_JMPADDR 5
+#define IMAGE_REL_BASED_SECTION 6
+#define IMAGE_REL_BASED_REL32 7
+
+//
+// Archive format.
+//
+
+#define IMAGE_ARCHIVE_START_SIZE 8
+#define IMAGE_ARCHIVE_START "!<arch>\n"
+#define IMAGE_ARCHIVE_END "`\n"
+#define IMAGE_ARCHIVE_PAD "\n"
+#define IMAGE_ARCHIVE_LINKER_MEMBER "/ "
+#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// "
+
+typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
+ BYTE Name[16]; // File member name - `/' terminated.
+ BYTE Date[12]; // File member date - decimal.
+ BYTE UserID[6]; // File member user id - decimal.
+ BYTE GroupID[6]; // File member group id - decimal.
+ BYTE Mode[8]; // File member mode - octal.
+ BYTE Size[10]; // File member size - decimal.
+ BYTE EndHeader[2]; // String to end header.
+} IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER;
+
+#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
+
+//
+// DLL support.
+//
+
+//
+// Export Format
+//
+
+typedef struct _IMAGE_EXPORT_DIRECTORY {
+ DWORD Characteristics;
+ DWORD TimeDateStamp;
+ WORD MajorVersion;
+ WORD MinorVersion;
+ DWORD Name;
+ DWORD Base;
+ DWORD NumberOfFunctions;
+ DWORD NumberOfNames;
+ PDWORD *AddressOfFunctions;
+ PDWORD *AddressOfNames;
+ PWORD *AddressOfNameOrdinals;
+} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
+
+//
+// Import Format
+//
+
+typedef struct _IMAGE_IMPORT_BY_NAME {
+ WORD Hint;
+ BYTE Name[1];
+} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
+
+typedef struct _IMAGE_THUNK_DATA {
+ union {
+ PBYTE ForwarderString;
+ PDWORD Function;
+ DWORD Ordinal;
+ PIMAGE_IMPORT_BY_NAME AddressOfData;
+ } u1;
+} IMAGE_THUNK_DATA;
+typedef IMAGE_THUNK_DATA * PIMAGE_THUNK_DATA;
+
+#define IMAGE_ORDINAL_FLAG 0x80000000
+#define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0)
+#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff)
+
+typedef struct _IMAGE_IMPORT_DESCRIPTOR {
+ union {
+ DWORD Characteristics; // 0 for terminating null import descriptor
+ PIMAGE_THUNK_DATA OriginalFirstThunk; // RVA to original unbound IAT
+ };
+ DWORD TimeDateStamp; // 0 if not bound,
+ // -1 if bound, and real date\time stamp
+ // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
+ // O.W. date/time stamp of DLL bound to (Old BIND)
+
+ DWORD ForwarderChain; // -1 if no forwarders
+ DWORD Name;
+ PIMAGE_THUNK_DATA FirstThunk; // RVA to IAT (if bound this IAT has actual addresses)
+} IMAGE_IMPORT_DESCRIPTOR;
+typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR;
+
+//
+// New format import descriptors pointed to by DataDirectory[ IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT ]
+//
+
+typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
+ DWORD TimeDateStamp;
+ WORD OffsetModuleName;
+ WORD NumberOfModuleForwarderRefs;
+// Array of zero or more IMAGE_BOUND_FORWARDER_REF follows
+} IMAGE_BOUND_IMPORT_DESCRIPTOR, *PIMAGE_BOUND_IMPORT_DESCRIPTOR;
+
+typedef struct _IMAGE_BOUND_FORWARDER_REF {
+ DWORD TimeDateStamp;
+ WORD OffsetModuleName;
+ WORD Reserved;
+} IMAGE_BOUND_FORWARDER_REF, *PIMAGE_BOUND_FORWARDER_REF;
+
+
+//
+// Thread Local Storage
+//
+
+typedef VOID
+(NTAPI *PIMAGE_TLS_CALLBACK) (
+ PVOID DllHandle,
+ DWORD Reason,
+ PVOID Reserved
+ );
+
+typedef struct _IMAGE_TLS_DIRECTORY {
+ DWORD StartAddressOfRawData;
+ DWORD EndAddressOfRawData;
+ PDWORD AddressOfIndex;
+ PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
+ DWORD SizeOfZeroFill;
+ DWORD Characteristics;
+} IMAGE_TLS_DIRECTORY, *PIMAGE_TLS_DIRECTORY;
+
+
+//
+// Resource Format.
+//
+
+//
+// Resource directory consists of two counts, following by a variable length
+// array of directory entries. The first count is the number of entries at
+// beginning of the array that have actual names associated with each entry.
+// The entries are in ascending order, case insensitive strings. The second
+// count is the number of entries that immediately follow the named entries.
+// This second count identifies the number of entries that have 16-bit integer
+// Ids as their name. These entries are also sorted in ascending order.
+//
+// This structure allows fast lookup by either name or number, but for any
+// given resource entry only one form of lookup is supported, not both.
+// This is consistant with the syntax of the .RC file and the .RES file.
+//
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY {
+ DWORD Characteristics;
+ DWORD TimeDateStamp;
+ WORD MajorVersion;
+ WORD MinorVersion;
+ WORD NumberOfNamedEntries;
+ WORD NumberOfIdEntries;
+// IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];
+} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;
+
+#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
+#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
+
+//
+// Each directory contains the 32-bit Name of the entry and an offset,
+// relative to the beginning of the resource directory of the data associated
+// with this directory entry. If the name of the entry is an actual text
+// string instead of an integer Id, then the high order bit of the name field
+// is set to one and the low order 31-bits are an offset, relative to the
+// beginning of the resource directory of the string, which is of type
+// IMAGE_RESOURCE_DIRECTORY_STRING. Otherwise the high bit is clear and the
+// low-order 16-bits are the integer Id that identify this resource directory
+// entry. If the directory entry is yet another resource directory (i.e. a
+// subdirectory), then the high order bit of the offset field will be
+// set to indicate this. Otherwise the high bit is clear and the offset
+// field points to a resource data entry.
+//
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
+ union {
+ struct {
+ DWORD NameOffset:31;
+ DWORD NameIsString:1;
+ };
+ DWORD Name;
+ WORD Id;
+ };
+ union {
+ DWORD OffsetToData;
+ struct {
+ DWORD OffsetToDirectory:31;
+ DWORD DataIsDirectory:1;
+ };
+ };
+} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY;
+
+//
+// For resource directory entries that have actual string names, the Name
+// field of the directory entry points to an object of the following type.
+// All of these string objects are stored together after the last resource
+// directory entry and before the first resource data object. This minimizes
+// the impact of these variable length objects on the alignment of the fixed
+// size directory entry objects.
+//
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
+ WORD Length;
+ CHAR NameString[ 1 ];
+} IMAGE_RESOURCE_DIRECTORY_STRING, *PIMAGE_RESOURCE_DIRECTORY_STRING;
+
+
+typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
+ WORD Length;
+ WCHAR NameString[ 1 ];
+} IMAGE_RESOURCE_DIR_STRING_U, *PIMAGE_RESOURCE_DIR_STRING_U;
+
+
+//
+// Each resource data entry describes a leaf node in the resource directory
+// tree. It contains an offset, relative to the beginning of the resource
+// directory of the data for the resource, a size field that gives the number
+// of bytes of data at that offset, a CodePage that should be used when
+// decoding code point values within the resource data. Typically for new
+// applications the code page would be the unicode code page.
+//
+
+typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
+ DWORD OffsetToData;
+ DWORD Size;
+ DWORD CodePage;
+ DWORD Reserved;
+} IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY;
+
+//
+// Load Configuration Directory Entry
+//
+
+typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
+ DWORD Characteristics;
+ DWORD TimeDateStamp;
+ WORD MajorVersion;
+ WORD MinorVersion;
+ DWORD GlobalFlagsClear;
+ DWORD GlobalFlagsSet;
+ DWORD CriticalSectionDefaultTimeout;
+ DWORD DeCommitFreeBlockThreshold;
+ DWORD DeCommitTotalFreeThreshold;
+ PVOID LockPrefixTable;
+ DWORD MaximumAllocationSize;
+ DWORD VirtualMemoryThreshold;
+ DWORD ProcessHeapFlags;
+ DWORD ProcessAffinityMask;
+ DWORD Reserved[ 3 ];
+} IMAGE_LOAD_CONFIG_DIRECTORY, *PIMAGE_LOAD_CONFIG_DIRECTORY;
+
+
+//
+// Function table entry format for MIPS/ALPHA images. Function table is
+// pointed to by the IMAGE_DIRECTORY_ENTRY_EXCEPTION directory entry.
+// This definition duplicates ones in ntmips.h and ntalpha.h for use
+// by portable image file mungers.
+//
+
+typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
+ DWORD BeginAddress;
+ DWORD EndAddress;
+ PVOID ExceptionHandler;
+ PVOID HandlerData;
+ DWORD PrologEndAddress;
+} IMAGE_RUNTIME_FUNCTION_ENTRY, *PIMAGE_RUNTIME_FUNCTION_ENTRY;
+
+//
+// Debug Format
+//
+
+typedef struct _IMAGE_DEBUG_DIRECTORY {
+ DWORD Characteristics;
+ DWORD TimeDateStamp;
+ WORD MajorVersion;
+ WORD MinorVersion;
+ DWORD Type;
+ DWORD SizeOfData;
+ DWORD AddressOfRawData;
+ DWORD PointerToRawData;
+} IMAGE_DEBUG_DIRECTORY, *PIMAGE_DEBUG_DIRECTORY;
+
+#define IMAGE_DEBUG_TYPE_UNKNOWN 0
+#define IMAGE_DEBUG_TYPE_COFF 1
+#define IMAGE_DEBUG_TYPE_CODEVIEW 2
+#define IMAGE_DEBUG_TYPE_FPO 3
+#define IMAGE_DEBUG_TYPE_MISC 4
+#define IMAGE_DEBUG_TYPE_EXCEPTION 5
+#define IMAGE_DEBUG_TYPE_FIXUP 6
+#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
+#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
+
+
+typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
+ DWORD NumberOfSymbols;
+ DWORD LvaToFirstSymbol;
+ DWORD NumberOfLinenumbers;
+ DWORD LvaToFirstLinenumber;
+ DWORD RvaToFirstByteOfCode;
+ DWORD RvaToLastByteOfCode;
+ DWORD RvaToFirstByteOfData;
+ DWORD RvaToLastByteOfData;
+} IMAGE_COFF_SYMBOLS_HEADER, *PIMAGE_COFF_SYMBOLS_HEADER;
+
+#define FRAME_FPO 0
+#define FRAME_TRAP 1
+#define FRAME_TSS 2
+#define FRAME_NONFPO 3
+
+typedef struct _FPO_DATA {
+ DWORD ulOffStart; // offset 1st byte of function code
+ DWORD cbProcSize; // # bytes in function
+ DWORD cdwLocals; // # bytes in locals/4
+ WORD cdwParams; // # bytes in params/4
+ WORD cbProlog : 8; // # bytes in prolog
+ WORD cbRegs : 3; // # regs saved
+ WORD fHasSEH : 1; // TRUE if SEH in func
+ WORD fUseBP : 1; // TRUE if EBP has been allocated
+ WORD reserved : 1; // reserved for future use
+ WORD cbFrame : 2; // frame type
+} FPO_DATA, *PFPO_DATA;
+#define SIZEOF_RFPO_DATA 16
+
+
+#define IMAGE_DEBUG_MISC_EXENAME 1
+
+typedef struct _IMAGE_DEBUG_MISC {
+ DWORD DataType; // type of misc data, see defines
+ DWORD Length; // total length of record, rounded to four
+ // byte multiple.
+ BOOLEAN Unicode; // TRUE if data is unicode string
+ BYTE Reserved[ 3 ];
+ BYTE Data[ 1 ]; // Actual data
+} IMAGE_DEBUG_MISC, *PIMAGE_DEBUG_MISC;
+
+
+//
+// Function table extracted from MIPS/ALPHA images. Does not contain
+// information needed only for runtime support. Just those fields for
+// each entry needed by a debugger.
+//
+
+typedef struct _IMAGE_FUNCTION_ENTRY {
+ DWORD StartingAddress;
+ DWORD EndingAddress;
+ DWORD EndOfPrologue;
+} IMAGE_FUNCTION_ENTRY, *PIMAGE_FUNCTION_ENTRY;
+
+//
+// Debugging information can be stripped from an image file and placed
+// in a separate .DBG file, whose file name part is the same as the
+// image file name part (e.g. symbols for CMD.EXE could be stripped
+// and placed in CMD.DBG). This is indicated by the IMAGE_FILE_DEBUG_STRIPPED
+// flag in the Characteristics field of the file header. The beginning of
+// the .DBG file contains the following structure which captures certain
+// information from the image file. This allows a debug to proceed even if
+// the original image file is not accessable. This header is followed by
+// zero of more IMAGE_SECTION_HEADER structures, followed by zero or more
+// IMAGE_DEBUG_DIRECTORY structures. The latter structures and those in
+// the image file contain file offsets relative to the beginning of the
+// .DBG file.
+//
+// If symbols have been stripped from an image, the IMAGE_DEBUG_MISC structure
+// is left in the image file, but not mapped. This allows a debugger to
+// compute the name of the .DBG file, from the name of the image in the
+// IMAGE_DEBUG_MISC structure.
+//
+
+typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
+ WORD Signature;
+ WORD Flags;
+ WORD Machine;
+ WORD Characteristics;
+ DWORD TimeDateStamp;
+ DWORD CheckSum;
+ DWORD ImageBase;
+ DWORD SizeOfImage;
+ DWORD NumberOfSections;
+ DWORD ExportedNamesSize;
+ DWORD DebugDirectorySize;
+ DWORD SectionAlignment;
+ DWORD Reserved[2];
+} IMAGE_SEPARATE_DEBUG_HEADER, *PIMAGE_SEPARATE_DEBUG_HEADER;
+
+#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
+
+#define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000
+#define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 // when DBG was updated, the
+ // old checksum didn't match.
+
+#include "poppack.h" // Return to the default
+
+//
+// End Image Format
+//
+
+//
+// for move macros
+//
+#include <string.h>
+#define HEAP_NO_SERIALIZE 0x00000001
+#define HEAP_GROWABLE 0x00000002
+#define HEAP_GENERATE_EXCEPTIONS 0x00000004
+#define HEAP_ZERO_MEMORY 0x00000008
+#define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010
+#define HEAP_TAIL_CHECKING_ENABLED 0x00000020
+#define HEAP_FREE_CHECKING_ENABLED 0x00000040
+#define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080
+#define HEAP_CREATE_ALIGN_16 0x00010000
+#define HEAP_CREATE_ENABLE_TRACING 0x00020000
+#define HEAP_MAXIMUM_TAG 0x0FFF
+#define HEAP_PSEUDO_TAG_FLAG 0x8000
+#define HEAP_TAG_SHIFT 16
+#define HEAP_MAKE_TAG_FLAGS( b, o ) ((DWORD)((b) + ((o) << 16)))
+
+#define IS_TEXT_UNICODE_ASCII16 0x0001
+#define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010
+
+#define IS_TEXT_UNICODE_STATISTICS 0x0002
+#define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020
+
+#define IS_TEXT_UNICODE_CONTROLS 0x0004
+#define IS_TEXT_UNICODE_REVERSE_CONTROLS 0x0040
+
+#define IS_TEXT_UNICODE_SIGNATURE 0x0008
+#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080
+
+#define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100
+#define IS_TEXT_UNICODE_ODD_LENGTH 0x0200
+#define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x0400
+#define IS_TEXT_UNICODE_NULL_BYTES 0x1000
+
+#define IS_TEXT_UNICODE_UNICODE_MASK 0x000F
+#define IS_TEXT_UNICODE_REVERSE_MASK 0x00F0
+#define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00
+#define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000
+
+#define COMPRESSION_FORMAT_NONE (0x0000)
+#define COMPRESSION_FORMAT_DEFAULT (0x0001)
+#define COMPRESSION_FORMAT_LZNT1 (0x0002)
+#define COMPRESSION_ENGINE_STANDARD (0x0000)
+#define COMPRESSION_ENGINE_MAXIMUM (0x0100)
+#if defined(_M_IX86) || defined(_M_MRX000) || defined(_M_ALPHA)
+
+#if defined(_M_MRX000)
+NTSYSAPI
+DWORD
+NTAPI
+RtlEqualMemory (
+ CONST VOID *Source1,
+ CONST VOID *Source2,
+ DWORD Length
+ );
+
+#else
+#define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length)))
+#endif
+
+#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
+#define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
+#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
+#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
+
+#else // _M_PPC
+
+NTSYSAPI
+DWORD
+NTAPI
+RtlEqualMemory (
+ CONST VOID *Source1,
+ CONST VOID *Source2,
+ DWORD Length
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlCopyMemory (
+ VOID UNALIGNED *Destination,
+ CONST VOID UNALIGNED *Source,
+ DWORD Length
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlCopyMemory32 (
+ VOID UNALIGNED *Destination,
+ CONST VOID UNALIGNED *Source,
+ DWORD Length
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlMoveMemory (
+ VOID UNALIGNED *Destination,
+ CONST VOID UNALIGNED *Source,
+ DWORD Length
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlFillMemory (
+ VOID UNALIGNED *Destination,
+ DWORD Length,
+ BYTE Fill
+ );
+
+NTSYSAPI
+VOID
+NTAPI
+RtlZeroMemory (
+ VOID UNALIGNED *Destination,
+ DWORD Length
+ );
+#endif
+
+typedef struct _MESSAGE_RESOURCE_ENTRY {
+ WORD Length;
+ WORD Flags;
+ BYTE Text[ 1 ];
+} MESSAGE_RESOURCE_ENTRY, *PMESSAGE_RESOURCE_ENTRY;
+
+#define MESSAGE_RESOURCE_UNICODE 0x0001
+
+typedef struct _MESSAGE_RESOURCE_BLOCK {
+ DWORD LowId;
+ DWORD HighId;
+ DWORD OffsetToEntries;
+} MESSAGE_RESOURCE_BLOCK, *PMESSAGE_RESOURCE_BLOCK;
+
+typedef struct _MESSAGE_RESOURCE_DATA {
+ DWORD NumberOfBlocks;
+ MESSAGE_RESOURCE_BLOCK Blocks[ 1 ];
+} MESSAGE_RESOURCE_DATA, *PMESSAGE_RESOURCE_DATA;
+
+
+typedef struct _RTL_CRITICAL_SECTION_DEBUG {
+ WORD Type;
+ WORD CreatorBackTraceIndex;
+ struct _RTL_CRITICAL_SECTION *CriticalSection;
+ LIST_ENTRY ProcessLocksList;
+ DWORD EntryCount;
+ DWORD ContentionCount;
+ DWORD Spare[ 2 ];
+} RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG;
+
+#define RTL_CRITSECT_TYPE 0
+#define RTL_RESOURCE_TYPE 1
+
+typedef struct _RTL_CRITICAL_SECTION {
+ PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
+
+ //
+ // The following three fields control entering and exiting the critical
+ // section for the resource
+ //
+
+ LONG LockCount;
+ LONG RecursionCount;
+ HANDLE OwningThread; // from the thread's ClientId->UniqueThread
+ HANDLE LockSemaphore;
+ DWORD Reserved;
+} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
+#define DLL_PROCESS_ATTACH 1
+#define DLL_THREAD_ATTACH 2
+#define DLL_THREAD_DETACH 3
+#define DLL_PROCESS_DETACH 0
+
+//
+// Defines for the READ flags for Eventlogging
+//
+#define EVENTLOG_SEQUENTIAL_READ 0X0001
+#define EVENTLOG_SEEK_READ 0X0002
+#define EVENTLOG_FORWARDS_READ 0X0004
+#define EVENTLOG_BACKWARDS_READ 0X0008
+
+//
+// The types of events that can be logged.
+//
+#define EVENTLOG_SUCCESS 0X0000
+#define EVENTLOG_ERROR_TYPE 0x0001
+#define EVENTLOG_WARNING_TYPE 0x0002
+#define EVENTLOG_INFORMATION_TYPE 0x0004
+#define EVENTLOG_AUDIT_SUCCESS 0x0008
+#define EVENTLOG_AUDIT_FAILURE 0x0010
+
+//
+// Defines for the WRITE flags used by Auditing for paired events
+// These are not implemented in Product 1
+//
+
+#define EVENTLOG_START_PAIRED_EVENT 0x0001
+#define EVENTLOG_END_PAIRED_EVENT 0x0002
+#define EVENTLOG_END_ALL_PAIRED_EVENTS 0x0004
+#define EVENTLOG_PAIRED_EVENT_ACTIVE 0x0008
+#define EVENTLOG_PAIRED_EVENT_INACTIVE 0x0010
+
+//
+// Structure that defines the header of the Eventlog record. This is the
+// fixed-sized portion before all the variable-length strings, binary
+// data and pad bytes.
+//
+// TimeGenerated is the time it was generated at the client.
+// TimeWritten is the time it was put into the log at the server end.
+//
+
+typedef struct _EVENTLOGRECORD {
+ DWORD Length; // Length of full record
+ DWORD Reserved; // Used by the service
+ DWORD RecordNumber; // Absolute record number
+ DWORD TimeGenerated; // Seconds since 1-1-1970
+ DWORD TimeWritten; // Seconds since 1-1-1970
+ DWORD EventID;
+ WORD EventType;
+ WORD NumStrings;
+ WORD EventCategory;
+ WORD ReservedFlags; // For use with paired events (auditing)
+ DWORD ClosingRecordNumber; // For use with paired events (auditing)
+ DWORD StringOffset; // Offset from beginning of record
+ DWORD UserSidLength;
+ DWORD UserSidOffset;
+ DWORD DataLength;
+ DWORD DataOffset; // Offset from beginning of record
+ //
+ // Then follow:
+ //
+ // WCHAR SourceName[]
+ // WCHAR Computername[]
+ // SID UserSid
+ // WCHAR Strings[]
+ // BYTE Data[]
+ // CHAR Pad[]
+ // DWORD Length;
+ //
+} EVENTLOGRECORD, *PEVENTLOGRECORD;
+
+#define DBG_CONTINUE ((DWORD )0x00010002L)
+#define DBG_TERMINATE_THREAD ((DWORD )0x40010003L)
+#define DBG_TERMINATE_PROCESS ((DWORD )0x40010004L)
+#define DBG_CONTROL_C ((DWORD )0x40010005L)
+#define DBG_CONTROL_BREAK ((DWORD )0x40010008L)
+#define DBG_EXCEPTION_NOT_HANDLED ((DWORD )0x80010001L)
+//
+
+// begin_ntddk begin_nthal
+//
+// Registry Specific Access Rights.
+//
+
+#define KEY_QUERY_VALUE (0x0001)
+#define KEY_SET_VALUE (0x0002)
+#define KEY_CREATE_SUB_KEY (0x0004)
+#define KEY_ENUMERATE_SUB_KEYS (0x0008)
+#define KEY_NOTIFY (0x0010)
+#define KEY_CREATE_LINK (0x0020)
+
+#define KEY_READ ((STANDARD_RIGHTS_READ |\
+ KEY_QUERY_VALUE |\
+ KEY_ENUMERATE_SUB_KEYS |\
+ KEY_NOTIFY) \
+ & \
+ (~SYNCHRONIZE))
+
+
+#define KEY_WRITE ((STANDARD_RIGHTS_WRITE |\
+ KEY_SET_VALUE |\
+ KEY_CREATE_SUB_KEY) \
+ & \
+ (~SYNCHRONIZE))
+
+#define KEY_EXECUTE ((KEY_READ) \
+ & \
+ (~SYNCHRONIZE))
+
+#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\
+ KEY_QUERY_VALUE |\
+ KEY_SET_VALUE |\
+ KEY_CREATE_SUB_KEY |\
+ KEY_ENUMERATE_SUB_KEYS |\
+ KEY_NOTIFY |\
+ KEY_CREATE_LINK) \
+ & \
+ (~SYNCHRONIZE))
+
+//
+// Open/Create Options
+//
+
+#define REG_OPTION_RESERVED (0x00000000L) // Parameter is reserved
+
+#define REG_OPTION_NON_VOLATILE (0x00000000L) // Key is preserved
+ // when system is rebooted
+
+#define REG_OPTION_VOLATILE (0x00000001L) // Key is not preserved
+ // when system is rebooted
+
+#define REG_OPTION_CREATE_LINK (0x00000002L) // Created key is a
+ // symbolic link
+
+#define REG_OPTION_BACKUP_RESTORE (0x00000004L) // open for backup or restore
+ // special access rules
+ // privilege required
+
+#define REG_OPTION_OPEN_LINK (0x00000008L) // Open symbolic link
+
+#define REG_LEGAL_OPTION \
+ (REG_OPTION_RESERVED |\
+ REG_OPTION_NON_VOLATILE |\
+ REG_OPTION_VOLATILE |\
+ REG_OPTION_CREATE_LINK |\
+ REG_OPTION_BACKUP_RESTORE |\
+ REG_OPTION_OPEN_LINK)
+
+//
+// Key creation/open disposition
+//
+
+#define REG_CREATED_NEW_KEY (0x00000001L) // New Registry Key created
+#define REG_OPENED_EXISTING_KEY (0x00000002L) // Existing Key opened
+
+//
+// Key restore flags
+//
+
+#define REG_WHOLE_HIVE_VOLATILE (0x00000001L) // Restore whole hive volatile
+#define REG_REFRESH_HIVE (0x00000002L) // Unwind changes to last flush
+#define REG_NO_LAZY_FLUSH (0x00000004L) // Never lazy flush this hive
+
+// end_ntddk end_nthal
+
+//
+// Notify filter values
+//
+#define REG_NOTIFY_CHANGE_NAME (0x00000001L) // Create or delete (child)
+#define REG_NOTIFY_CHANGE_ATTRIBUTES (0x00000002L)
+#define REG_NOTIFY_CHANGE_LAST_SET (0x00000004L) // time stamp
+#define REG_NOTIFY_CHANGE_SECURITY (0x00000008L)
+
+#define REG_LEGAL_CHANGE_FILTER \
+ (REG_NOTIFY_CHANGE_NAME |\
+ REG_NOTIFY_CHANGE_ATTRIBUTES |\
+ REG_NOTIFY_CHANGE_LAST_SET |\
+ REG_NOTIFY_CHANGE_SECURITY)
+
+//
+//
+// Predefined Value Types.
+//
+
+#define REG_NONE ( 0 ) // No value type
+#define REG_SZ ( 1 ) // Unicode nul terminated string
+#define REG_EXPAND_SZ ( 2 ) // Unicode nul terminated string
+ // (with environment variable references)
+#define REG_BINARY ( 3 ) // Free form binary
+#define REG_DWORD ( 4 ) // 32-bit number
+#define REG_DWORD_LITTLE_ENDIAN ( 4 ) // 32-bit number (same as REG_DWORD)
+#define REG_DWORD_BIG_ENDIAN ( 5 ) // 32-bit number
+#define REG_LINK ( 6 ) // Symbolic Link (unicode)
+#define REG_MULTI_SZ ( 7 ) // Multiple Unicode strings
+#define REG_RESOURCE_LIST ( 8 ) // Resource list in the resource map
+#define REG_FULL_RESOURCE_DESCRIPTOR ( 9 ) // Resource list in the hardware description
+#define REG_RESOURCE_REQUIREMENTS_LIST ( 10 )
+
+// end_ntddk end_nthal
+
+// begin_ntddk begin_nthal
+//
+// Service Types (Bit Mask)
+//
+#define SERVICE_KERNEL_DRIVER 0x00000001
+#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
+#define SERVICE_ADAPTER 0x00000004
+#define SERVICE_RECOGNIZER_DRIVER 0x00000008
+
+#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | \
+ SERVICE_FILE_SYSTEM_DRIVER | \
+ SERVICE_RECOGNIZER_DRIVER)
+
+#define SERVICE_WIN32_OWN_PROCESS 0x00000010
+#define SERVICE_WIN32_SHARE_PROCESS 0x00000020
+#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | \
+ SERVICE_WIN32_SHARE_PROCESS)
+
+#define SERVICE_INTERACTIVE_PROCESS 0x00000100
+
+#define SERVICE_TYPE_ALL (SERVICE_WIN32 | \
+ SERVICE_ADAPTER | \
+ SERVICE_DRIVER | \
+ SERVICE_INTERACTIVE_PROCESS)
+
+//
+// Start Type
+//
+
+#define SERVICE_BOOT_START 0x00000000
+#define SERVICE_SYSTEM_START 0x00000001
+#define SERVICE_AUTO_START 0x00000002
+#define SERVICE_DEMAND_START 0x00000003
+#define SERVICE_DISABLED 0x00000004
+
+//
+// Error control type
+//
+#define SERVICE_ERROR_IGNORE 0x00000000
+#define SERVICE_ERROR_NORMAL 0x00000001
+#define SERVICE_ERROR_SEVERE 0x00000002
+#define SERVICE_ERROR_CRITICAL 0x00000003
+
+//
+//
+// Define the registry driver node enumerations
+//
+
+typedef enum _CM_SERVICE_NODE_TYPE {
+ DriverType = SERVICE_KERNEL_DRIVER,
+ FileSystemType = SERVICE_FILE_SYSTEM_DRIVER,
+ Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS,
+ Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,
+ AdapterType = SERVICE_ADAPTER,
+ RecognizerType = SERVICE_RECOGNIZER_DRIVER
+} SERVICE_NODE_TYPE;
+
+typedef enum _CM_SERVICE_LOAD_TYPE {
+ BootLoad = SERVICE_BOOT_START,
+ SystemLoad = SERVICE_SYSTEM_START,
+ AutoLoad = SERVICE_AUTO_START,
+ DemandLoad = SERVICE_DEMAND_START,
+ DisableLoad = SERVICE_DISABLED
+} SERVICE_LOAD_TYPE;
+
+typedef enum _CM_ERROR_CONTROL_TYPE {
+ IgnoreError = SERVICE_ERROR_IGNORE,
+ NormalError = SERVICE_ERROR_NORMAL,
+ SevereError = SERVICE_ERROR_SEVERE,
+ CriticalError = SERVICE_ERROR_CRITICAL
+} SERVICE_ERROR_TYPE;
+
+
+//
+// IOCTL_TAPE_ERASE definitions
+//
+
+#define TAPE_ERASE_SHORT 0L
+#define TAPE_ERASE_LONG 1L
+
+typedef struct _TAPE_ERASE {
+ DWORD Type;
+ BOOLEAN Immediate;
+} TAPE_ERASE, *PTAPE_ERASE;
+
+//
+// IOCTL_TAPE_PREPARE definitions
+//
+
+#define TAPE_LOAD 0L
+#define TAPE_UNLOAD 1L
+#define TAPE_TENSION 2L
+#define TAPE_LOCK 3L
+#define TAPE_UNLOCK 4L
+#define TAPE_FORMAT 5L
+
+typedef struct _TAPE_PREPARE {
+ DWORD Operation;
+ BOOLEAN Immediate;
+} TAPE_PREPARE, *PTAPE_PREPARE;
+
+//
+// IOCTL_TAPE_WRITE_MARKS definitions
+//
+
+#define TAPE_SETMARKS 0L
+#define TAPE_FILEMARKS 1L
+#define TAPE_SHORT_FILEMARKS 2L
+#define TAPE_LONG_FILEMARKS 3L
+
+typedef struct _TAPE_WRITE_MARKS {
+ DWORD Type;
+ DWORD Count;
+ BOOLEAN Immediate;
+} TAPE_WRITE_MARKS, *PTAPE_WRITE_MARKS;
+
+//
+// IOCTL_TAPE_GET_POSITION definitions
+//
+
+#define TAPE_ABSOLUTE_POSITION 0L
+#define TAPE_LOGICAL_POSITION 1L
+#define TAPE_PSEUDO_LOGICAL_POSITION 2L
+
+typedef struct _TAPE_GET_POSITION {
+ DWORD Type;
+ DWORD Partition;
+ LARGE_INTEGER Offset;
+} TAPE_GET_POSITION, *PTAPE_GET_POSITION;
+
+//
+// IOCTL_TAPE_SET_POSITION definitions
+//
+
+#define TAPE_REWIND 0L
+#define TAPE_ABSOLUTE_BLOCK 1L
+#define TAPE_LOGICAL_BLOCK 2L
+#define TAPE_PSEUDO_LOGICAL_BLOCK 3L
+#define TAPE_SPACE_END_OF_DATA 4L
+#define TAPE_SPACE_RELATIVE_BLOCKS 5L
+#define TAPE_SPACE_FILEMARKS 6L
+#define TAPE_SPACE_SEQUENTIAL_FMKS 7L
+#define TAPE_SPACE_SETMARKS 8L
+#define TAPE_SPACE_SEQUENTIAL_SMKS 9L
+
+typedef struct _TAPE_SET_POSITION {
+ DWORD Method;
+ DWORD Partition;
+ LARGE_INTEGER Offset;
+ BOOLEAN Immediate;
+} TAPE_SET_POSITION, *PTAPE_SET_POSITION;
+
+//
+// IOCTL_TAPE_GET_DRIVE_PARAMS definitions
+//
+
+//
+// Definitions for FeaturesLow parameter
+//
+
+#define TAPE_DRIVE_FIXED 0x00000001
+#define TAPE_DRIVE_SELECT 0x00000002
+#define TAPE_DRIVE_INITIATOR 0x00000004
+
+#define TAPE_DRIVE_ERASE_SHORT 0x00000010
+#define TAPE_DRIVE_ERASE_LONG 0x00000020
+#define TAPE_DRIVE_ERASE_BOP_ONLY 0x00000040
+#define TAPE_DRIVE_ERASE_IMMEDIATE 0x00000080
+
+#define TAPE_DRIVE_TAPE_CAPACITY 0x00000100
+#define TAPE_DRIVE_TAPE_REMAINING 0x00000200
+#define TAPE_DRIVE_FIXED_BLOCK 0x00000400
+#define TAPE_DRIVE_VARIABLE_BLOCK 0x00000800
+
+#define TAPE_DRIVE_WRITE_PROTECT 0x00001000
+#define TAPE_DRIVE_EOT_WZ_SIZE 0x00002000
+
+#define TAPE_DRIVE_ECC 0x00010000
+#define TAPE_DRIVE_COMPRESSION 0x00020000
+#define TAPE_DRIVE_PADDING 0x00040000
+#define TAPE_DRIVE_REPORT_SMKS 0x00080000
+
+#define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x00100000
+#define TAPE_DRIVE_GET_LOGICAL_BLK 0x00200000
+#define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x00400000
+
+#define TAPE_DRIVE_EJECT_MEDIA 0x01000000
+
+#define TAPE_DRIVE_RESERVED_BIT 0x80000000 //don't use this bit!
+// //can't be a low features bit!
+// //reserved; high features only
+
+//
+// Definitions for FeaturesHigh parameter
+//
+
+#define TAPE_DRIVE_LOAD_UNLOAD 0x80000001
+#define TAPE_DRIVE_TENSION 0x80000002
+#define TAPE_DRIVE_LOCK_UNLOCK 0x80000004
+#define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008
+
+#define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010
+#define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020
+#define TAPE_DRIVE_TENSION_IMMED 0x80000040
+#define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080
+
+#define TAPE_DRIVE_SET_ECC 0x80000100
+#define TAPE_DRIVE_SET_COMPRESSION 0x80000200
+#define TAPE_DRIVE_SET_PADDING 0x80000400
+#define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800
+
+#define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000
+#define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000
+#define TAPE_DRIVE_LOGICAL_BLK 0x80004000
+#define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000
+
+#define TAPE_DRIVE_END_OF_DATA 0x80010000
+#define TAPE_DRIVE_RELATIVE_BLKS 0x80020000
+#define TAPE_DRIVE_FILEMARKS 0x80040000
+#define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000
+
+#define TAPE_DRIVE_SETMARKS 0x80100000
+#define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000
+#define TAPE_DRIVE_REVERSE_POSITION 0x80400000
+#define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000
+
+#define TAPE_DRIVE_WRITE_SETMARKS 0x81000000
+#define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000
+#define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000
+#define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000
+
+#define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000
+#define TAPE_DRIVE_FORMAT 0xA0000000
+#define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000
+#define TAPE_DRIVE_HIGH_FEATURES 0x80000000 //mask for high features flag
+
+typedef struct _TAPE_GET_DRIVE_PARAMETERS {
+ BOOLEAN ECC;
+ BOOLEAN Compression;
+ BOOLEAN DataPadding;
+ BOOLEAN ReportSetmarks;
+ DWORD DefaultBlockSize;
+ DWORD MaximumBlockSize;
+ DWORD MinimumBlockSize;
+ DWORD MaximumPartitionCount;
+ DWORD FeaturesLow;
+ DWORD FeaturesHigh;
+ DWORD EOTWarningZoneSize;
+} TAPE_GET_DRIVE_PARAMETERS, *PTAPE_GET_DRIVE_PARAMETERS;
+
+//
+// IOCTL_TAPE_SET_DRIVE_PARAMETERS definitions
+//
+
+typedef struct _TAPE_SET_DRIVE_PARAMETERS {
+ BOOLEAN ECC;
+ BOOLEAN Compression;
+ BOOLEAN DataPadding;
+ BOOLEAN ReportSetmarks;
+ DWORD EOTWarningZoneSize;
+} TAPE_SET_DRIVE_PARAMETERS, *PTAPE_SET_DRIVE_PARAMETERS;
+
+//
+// IOCTL_TAPE_GET_MEDIA_PARAMETERS definitions
+//
+
+typedef struct _TAPE_GET_MEDIA_PARAMETERS {
+ LARGE_INTEGER Capacity;
+ LARGE_INTEGER Remaining;
+ DWORD BlockSize;
+ DWORD PartitionCount;
+ BOOLEAN WriteProtected;
+} TAPE_GET_MEDIA_PARAMETERS, *PTAPE_GET_MEDIA_PARAMETERS;
+
+//
+// IOCTL_TAPE_SET_MEDIA_PARAMETERS definitions
+//
+
+typedef struct _TAPE_SET_MEDIA_PARAMETERS {
+ DWORD BlockSize;
+} TAPE_SET_MEDIA_PARAMETERS, *PTAPE_SET_MEDIA_PARAMETERS;
+
+//
+// IOCTL_TAPE_CREATE_PARTITION definitions
+//
+
+#define TAPE_FIXED_PARTITIONS 0L
+#define TAPE_SELECT_PARTITIONS 1L
+#define TAPE_INITIATOR_PARTITIONS 2L
+
+typedef struct _TAPE_CREATE_PARTITION {
+ DWORD Method;
+ DWORD Count;
+ DWORD Size;
+} TAPE_CREATE_PARTITION, *PTAPE_CREATE_PARTITION;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINNT_ */
+
diff --git a/public/sdk/inc/winntos2.sed b/public/sdk/inc/winntos2.sed
new file mode 100644
index 000000000..2d3143a91
--- /dev/null
+++ b/public/sdk/inc/winntos2.sed
@@ -0,0 +1,2 @@
+\?// winntos2$?s?//.*??p
+\?^// begin_winntos2$?,\?^// end_winntos2$?p
diff --git a/public/sdk/inc/winperf.h b/public/sdk/inc/winperf.h
new file mode 100644
index 000000000..bbc7666b7
--- /dev/null
+++ b/public/sdk/inc/winperf.h
@@ -0,0 +1,561 @@
+/*++
+
+Copyright (C) 1993-1996 Microsoft Corporation
+
+Module Name:
+
+ winperf.h
+
+Abstract:
+
+ Header file for the Performance Monitor data.
+
+ This file contains the definitions of the data structures returned
+ by the Configuration Registry in response to a request for
+ performance data. This file is used by both the Configuration
+ Registry and the Performance Monitor to define their interface.
+ The complete interface is described here, except for the name
+ of the node to query in the registry. It is
+
+ HKEY_PERFORMANCE_DATA.
+
+ By querying that node with a subkey of "Global" the caller will
+ retrieve the structures described here.
+
+ There is no need to RegOpenKey() the reserved handle HKEY_PERFORMANCE_DATA,
+ but the caller should RegCloseKey() the handle so that network transports
+ and drivers can be removed or installed (which cannot happen while
+ they are open for monitoring.) Remote requests must first
+ RegConnectRegistry().
+
+--*/
+
+#ifndef _WINPERF_
+#define _WINPERF_
+
+// Data structure definitions.
+
+// In order for data to be returned through the Configuration Registry
+// in a system-independent fashion, it must be self-describing.
+
+// In the following, all offsets are in bytes.
+
+//
+// Data is returned through the Configuration Registry in a
+// a data block which begins with a _PERF_DATA_BLOCK structure.
+//
+
+#define PERF_DATA_VERSION 1
+#define PERF_DATA_REVISION 1
+
+
+typedef struct _PERF_DATA_BLOCK {
+ WCHAR Signature[4]; // Signature: Unicode "PERF"
+ DWORD LittleEndian; // 0 = Big Endian, 1 = Little Endian
+ DWORD Version; // Version of these data structures
+ // starting at 1
+ DWORD Revision; // Revision of these data structures
+ // starting at 0 for each Version
+ DWORD TotalByteLength; // Total length of data block
+ DWORD HeaderLength; // Length of this structure
+ DWORD NumObjectTypes; // Number of types of objects
+ // being reported
+ LONG DefaultObject; // Object Title Index of default
+ // object to display when data from
+ // this system is retrieved (-1 =
+ // none, but this is not expected to
+ // be used)
+ SYSTEMTIME SystemTime; // Time at the system under
+ // measurement
+ LARGE_INTEGER PerfTime; // Performance counter value
+ // at the system under measurement
+ LARGE_INTEGER PerfFreq; // Performance counter frequency
+ // at the system under measurement
+ LARGE_INTEGER PerfTime100nSec; // Performance counter time in 100 nsec
+ // units at the system under measurement
+ DWORD SystemNameLength; // Length of the system name
+ DWORD SystemNameOffset; // Offset, from beginning of this
+ // structure, to name of system
+ // being measured
+} PERF_DATA_BLOCK, *PPERF_DATA_BLOCK;
+
+
+//
+// The _PERF_DATA_BLOCK structure is followed by NumObjectTypes of
+// data sections, one for each type of object measured. Each object
+// type section begins with a _PERF_OBJECT_TYPE structure.
+//
+
+
+typedef struct _PERF_OBJECT_TYPE {
+ DWORD TotalByteLength; // Length of this object definition
+ // including this structure, the
+ // counter definitions, and the
+ // instance definitions and the
+ // counter blocks for each instance:
+ // This is the offset from this
+ // structure to the next object, if
+ // any
+ DWORD DefinitionLength; // Length of object definition,
+ // which includes this structure
+ // and the counter definition
+ // structures for this object: this
+ // is the offset of the first
+ // instance or of the counters
+ // for this object if there is
+ // no instance
+ DWORD HeaderLength; // Length of this structure: this
+ // is the offset to the first
+ // counter definition for this
+ // object
+ DWORD ObjectNameTitleIndex;
+ // Index to name in Title Database
+ LPWSTR ObjectNameTitle; // Initially NULL, for use by
+ // analysis program to point to
+ // retrieved title string
+ DWORD ObjectHelpTitleIndex;
+ // Index to Help in Title Database
+ LPWSTR ObjectHelpTitle; // Initially NULL, for use by
+ // analysis program to point to
+ // retrieved title string
+ DWORD DetailLevel; // Object level of detail (for
+ // controlling display complexity);
+ // will be min of detail levels
+ // for all this object's counters
+ DWORD NumCounters; // Number of counters in each
+ // counter block (one counter
+ // block per instance)
+ LONG DefaultCounter; // Default counter to display when
+ // this object is selected, index
+ // starting at 0 (-1 = none, but
+ // this is not expected to be used)
+ LONG NumInstances; // Number of object instances
+ // for which counters are being
+ // returned from the system under
+ // measurement. If the object defined
+ // will never have any instance data
+ // structures (PERF_INSTANCE_DEFINITION)
+ // then this value should be -1, if the
+ // object can have 0 or more instances,
+ // but has none present, then this
+ // should be 0, otherwise this field
+ // contains the number of instances of
+ // this counter.
+ DWORD CodePage; // 0 if instance strings are in
+ // UNICODE, else the Code Page of
+ // the instance names
+ LARGE_INTEGER PerfTime; // Sample Time in "Object" units
+ //
+ LARGE_INTEGER PerfFreq; // Frequency of "Object" units in
+ // counts per second.
+} PERF_OBJECT_TYPE, *PPERF_OBJECT_TYPE;
+
+#define PERF_NO_INSTANCES -1 // no instances (see NumInstances above)
+//
+// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+//
+// PERF_COUNTER_DEFINITION.CounterType field values
+//
+//
+// Counter ID Field Definition:
+//
+// 3 2 2 2 2 1 1 1
+// 1 8 4 2 0 6 2 0 8 0
+// +--------+--------+----+----+--------+--------+----+----+----------------+
+// |Display |Calculation |Time|Counter | |Ctr |Size| |
+// |Flags |Modifiers |Base|SubType |Reserved|Type|Fld | Reserved |
+// +--------+--------+----+----+--------+--------+----+----+----------------+
+//
+//
+// The counter type is the "or" of the following values as described below
+//
+// select one of the following to indicate the counter's data size
+//
+#define PERF_SIZE_DWORD 0x00000000
+#define PERF_SIZE_LARGE 0x00000100
+#define PERF_SIZE_ZERO 0x00000200 // for Zero Length fields
+#define PERF_SIZE_VARIABLE_LEN 0x00000300 // length is in CounterLength field
+ // of Counter Definition struct
+//
+// select one of the following values to indicate the counter field usage
+//
+#define PERF_TYPE_NUMBER 0x00000000 // a number (not a counter)
+#define PERF_TYPE_COUNTER 0x00000400 // an increasing numeric value
+#define PERF_TYPE_TEXT 0x00000800 // a text field
+#define PERF_TYPE_ZERO 0x00000C00 // displays a zero
+//
+// If the PERF_TYPE_NUMBER field was selected, then select one of the
+// following to describe the Number
+//
+#define PERF_NUMBER_HEX 0x00000000 // display as HEX value
+#define PERF_NUMBER_DECIMAL 0x00010000 // display as a decimal integer
+#define PERF_NUMBER_DEC_1000 0x00020000 // display as a decimal/1000
+//
+// If the PERF_TYPE_COUNTER value was selected then select one of the
+// following to indicate the type of counter
+//
+#define PERF_COUNTER_VALUE 0x00000000 // display counter value
+#define PERF_COUNTER_RATE 0x00010000 // divide ctr / delta time
+#define PERF_COUNTER_FRACTION 0x00020000 // divide ctr / base
+#define PERF_COUNTER_BASE 0x00030000 // base value used in fractions
+#define PERF_COUNTER_ELAPSED 0x00040000 // subtract counter from current time
+#define PERF_COUNTER_QUEUELEN 0x00050000 // Use Queuelen processing func.
+#define PERF_COUNTER_HISTOGRAM 0x00060000 // Counter begins or ends a histogram
+//
+// If the PERF_TYPE_TEXT value was selected, then select one of the
+// following to indicate the type of TEXT data.
+//
+#define PERF_TEXT_UNICODE 0x00000000 // type of text in text field
+#define PERF_TEXT_ASCII 0x00010000 // ASCII using the CodePage field
+//
+// Timer SubTypes
+//
+#define PERF_TIMER_TICK 0x00000000 // use system perf. freq for base
+#define PERF_TIMER_100NS 0x00100000 // use 100 NS timer time base units
+#define PERF_OBJECT_TIMER 0x00200000 // use the object timer freq
+//
+// Any types that have calculations performed can use one or more of
+// the following calculation modification flags listed here
+//
+#define PERF_DELTA_COUNTER 0x00400000 // compute difference first
+#define PERF_DELTA_BASE 0x00800000 // compute base diff as well
+#define PERF_INVERSE_COUNTER 0x01000000 // show as 1.00-value (assumes:
+#define PERF_MULTI_COUNTER 0x02000000 // sum of multiple instances
+//
+// Select one of the following values to indicate the display suffix (if any)
+//
+#define PERF_DISPLAY_NO_SUFFIX 0x00000000 // no suffix
+#define PERF_DISPLAY_PER_SEC 0x10000000 // "/sec"
+#define PERF_DISPLAY_PERCENT 0x20000000 // "%"
+#define PERF_DISPLAY_SECONDS 0x30000000 // "secs"
+#define PERF_DISPLAY_NOSHOW 0x40000000 // value is not displayed
+//
+// Predefined counter types
+//
+
+// 32-bit Counter. Divide delta by delta time. Display suffix: "/sec"
+#define PERF_COUNTER_COUNTER \
+ (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_RATE |\
+ PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PER_SEC)
+
+
+// 64-bit Timer. Divide delta by delta time. Display suffix: "%"
+#define PERF_COUNTER_TIMER \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE |\
+ PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT)
+
+// Queue Length Space-Time Product. Divide delta by delta time. No Display Suffix.
+#define PERF_COUNTER_QUEUELEN_TYPE \
+ (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_QUEUELEN |\
+ PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
+
+// Queue Length Space-Time Product. Divide delta by delta time. No Display Suffix.
+#define PERF_COUNTER_LARGE_QUEUELEN_TYPE \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_QUEUELEN |\
+ PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
+
+// 64-bit Counter. Divide delta by delta time. Display Suffix: "/sec"
+#define PERF_COUNTER_BULK_COUNT \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE |\
+ PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PER_SEC)
+
+// Indicates the counter is not a counter but rather Unicode text Display as text.
+#define PERF_COUNTER_TEXT \
+ (PERF_SIZE_VARIABLE_LEN | PERF_TYPE_TEXT | PERF_TEXT_UNICODE |\
+ PERF_DISPLAY_NO_SUFFIX)
+
+// Indicates the data is a counter which should not be
+// time averaged on display (such as an error counter on a serial line)
+// Display as is. No Display Suffix.
+#define PERF_COUNTER_RAWCOUNT \
+ (PERF_SIZE_DWORD | PERF_TYPE_NUMBER | PERF_NUMBER_DECIMAL |\
+ PERF_DISPLAY_NO_SUFFIX)
+
+// Same as PERF_COUNTER_RAWCOUNT except its size is a large integer
+#define PERF_COUNTER_LARGE_RAWCOUNT \
+ (PERF_SIZE_LARGE | PERF_TYPE_NUMBER | PERF_NUMBER_DECIMAL |\
+ PERF_DISPLAY_NO_SUFFIX)
+
+// Special case for RAWCOUNT that want to be displayed in hex
+// Indicates the data is a counter which should not be
+// time averaged on display (such as an error counter on a serial line)
+// Display as is. No Display Suffix.
+#define PERF_COUNTER_RAWCOUNT_HEX \
+ (PERF_SIZE_DWORD | PERF_TYPE_NUMBER | PERF_NUMBER_HEX |\
+ PERF_DISPLAY_NO_SUFFIX)
+
+// Same as PERF_COUNTER_RAWCOUNT_HEX except its size is a large integer
+#define PERF_COUNTER_LARGE_RAWCOUNT_HEX \
+ (PERF_SIZE_LARGE | PERF_TYPE_NUMBER | PERF_NUMBER_HEX |\
+ PERF_DISPLAY_NO_SUFFIX)
+
+
+// A count which is either 1 or 0 on each sampling interrupt (% busy)
+// Divide delta by delta base. Display Suffix: "%"
+#define PERF_SAMPLE_FRACTION \
+ (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION |\
+ PERF_DELTA_COUNTER | PERF_DELTA_BASE | PERF_DISPLAY_PERCENT)
+
+// A count which is sampled on each sampling interrupt (queue length)
+// Divide delta by delta time. No Display Suffix.
+#define PERF_SAMPLE_COUNTER \
+ (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_RATE |\
+ PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
+
+// A label: no data is associated with this counter (it has 0 length)
+// Do not display.
+#define PERF_COUNTER_NODATA \
+ (PERF_SIZE_ZERO | PERF_DISPLAY_NOSHOW)
+
+// 64-bit Timer inverse (e.g., idle is measured, but display busy %)
+// Display 100 - delta divided by delta time. Display suffix: "%"
+#define PERF_COUNTER_TIMER_INV \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE |\
+ PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_INVERSE_COUNTER | \
+ PERF_DISPLAY_PERCENT)
+
+// The divisor for a sample, used with the previous counter to form a
+// sampled %. You must check for >0 before dividing by this! This
+// counter will directly follow the numerator counter. It should not
+// be displayed to the user.
+#define PERF_SAMPLE_BASE \
+ (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_BASE |\
+ PERF_DISPLAY_NOSHOW |\
+ 0x00000001) // for compatibility with pre-beta versions
+
+// A timer which, when divided by an average base, produces a time
+// in seconds which is the average time of some operation. This
+// timer times total operations, and the base is the number of opera-
+// tions. Display Suffix: "sec"
+#define PERF_AVERAGE_TIMER \
+ (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION |\
+ PERF_DISPLAY_SECONDS)
+
+// Used as the denominator in the computation of time or count
+// averages. Must directly follow the numerator counter. Not dis-
+// played to the user.
+#define PERF_AVERAGE_BASE \
+ (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_BASE |\
+ PERF_DISPLAY_NOSHOW |\
+ 0x00000002) // for compatibility with pre-beta versions
+
+
+// A bulk count which, when divided (typically) by the number of
+// operations, gives (typically) the number of bytes per operation.
+// No Display Suffix.
+#define PERF_AVERAGE_BULK \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION |\
+ PERF_DISPLAY_NOSHOW)
+
+// 64-bit Timer in 100 nsec units. Display delta divided by
+// delta time. Display suffix: "%"
+#define PERF_100NSEC_TIMER \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE |\
+ PERF_TIMER_100NS | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT)
+
+// 64-bit Timer inverse (e.g., idle is measured, but display busy %)
+// Display 100 - delta divided by delta time. Display suffix: "%"
+#define PERF_100NSEC_TIMER_INV \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE |\
+ PERF_TIMER_100NS | PERF_DELTA_COUNTER | PERF_INVERSE_COUNTER |\
+ PERF_DISPLAY_PERCENT)
+
+// 64-bit Timer. Divide delta by delta time. Display suffix: "%"
+// Timer for multiple instances, so result can exceed 100%.
+#define PERF_COUNTER_MULTI_TIMER \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE |\
+ PERF_DELTA_COUNTER | PERF_TIMER_TICK | PERF_MULTI_COUNTER |\
+ PERF_DISPLAY_PERCENT)
+
+// 64-bit Timer inverse (e.g., idle is measured, but display busy %)
+// Display 100 * _MULTI_BASE - delta divided by delta time.
+// Display suffix: "%" Timer for multiple instances, so result
+// can exceed 100%. Followed by a counter of type _MULTI_BASE.
+#define PERF_COUNTER_MULTI_TIMER_INV \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE |\
+ PERF_DELTA_COUNTER | PERF_MULTI_COUNTER | PERF_TIMER_TICK |\
+ PERF_INVERSE_COUNTER | PERF_DISPLAY_PERCENT)
+
+// Number of instances to which the preceding _MULTI_..._INV counter
+// applies. Used as a factor to get the percentage.
+#define PERF_COUNTER_MULTI_BASE \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_BASE |\
+ PERF_MULTI_COUNTER | PERF_DISPLAY_NOSHOW)
+
+// 64-bit Timer in 100 nsec units. Display delta divided by delta time.
+// Display suffix: "%" Timer for multiple instances, so result can exceed 100%.
+#define PERF_100NSEC_MULTI_TIMER \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_DELTA_COUNTER |\
+ PERF_COUNTER_RATE | PERF_TIMER_100NS | PERF_MULTI_COUNTER |\
+ PERF_DISPLAY_PERCENT)
+
+// 64-bit Timer inverse (e.g., idle is measured, but display busy %)
+// Display 100 * _MULTI_BASE - delta divided by delta time.
+// Display suffix: "%" Timer for multiple instances, so result
+// can exceed 100%. Followed by a counter of type _MULTI_BASE.
+#define PERF_100NSEC_MULTI_TIMER_INV \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_DELTA_COUNTER |\
+ PERF_COUNTER_RATE | PERF_TIMER_100NS | PERF_MULTI_COUNTER |\
+ PERF_INVERSE_COUNTER | PERF_DISPLAY_PERCENT)
+
+// Indicates the data is a fraction of the following counter which
+// should not be time averaged on display (such as free space over
+// total space.) Display as is. Display the quotient as "%".
+#define PERF_RAW_FRACTION \
+ (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION |\
+ PERF_DISPLAY_PERCENT)
+
+// Indicates the data is a base for the preceding counter which should
+// not be time averaged on display (such as free space over total space.)
+#define PERF_RAW_BASE \
+ (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_BASE |\
+ PERF_DISPLAY_NOSHOW |\
+ 0x00000003) // for compatibility with pre-beta versions
+
+// The data collected in this counter is actually the start time of the
+// item being measured. For display, this data is subtracted from the
+// sample time to yield the elapsed time as the difference between the two.
+// In the definition below, the PerfTime field of the Object contains
+// the sample time as indicated by the PERF_OBJECT_TIMER bit and the
+// difference is scaled by the PerfFreq of the Object to convert the time
+// units into seconds.
+#define PERF_ELAPSED_TIME \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_ELAPSED |\
+ PERF_OBJECT_TIMER | PERF_DISPLAY_SECONDS)
+//
+// The following counter type can be used with the preceding types to
+// define a range of values to be displayed in a histogram.
+//
+
+#define PERF_COUNTER_HISTOGRAM_TYPE 0x80000000
+ // Counter begins or ends a histogram
+//
+// This counter is used to display the difference from one sample
+// to the next. The counter value is a constantly increasing number
+// and the value displayed is the difference between the current
+// value and the previous value. Negative numbers are not allowed
+// which shouldn't be a problem as long as the counter value is
+// increasing or unchanged.
+//
+#define PERF_COUNTER_DELTA \
+ (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_VALUE |\
+ PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
+
+#define PERF_COUNTER_LARGE_DELTA \
+ (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_VALUE |\
+ PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
+//
+// The following are used to determine the level of detail associated
+// with the counter. The user will be setting the level of detail
+// that should be displayed at any given time.
+//
+
+#define PERF_DETAIL_NOVICE 100 // The uninformed can understand it
+#define PERF_DETAIL_ADVANCED 200 // For the advanced user
+#define PERF_DETAIL_EXPERT 300 // For the expert user
+#define PERF_DETAIL_WIZARD 400 // For the system designer
+
+//
+// There is one of the following for each of the
+// PERF_OBJECT_TYPE.NumCounters. The Unicode names in this structure MUST
+// come from a message file.
+//
+
+typedef struct _PERF_COUNTER_DEFINITION {
+ DWORD ByteLength; // Length in bytes of this structure
+ DWORD CounterNameTitleIndex;
+ // Index of Counter name into
+ // Title Database
+ LPWSTR CounterNameTitle; // Initially NULL, for use by
+ // analysis program to point to
+ // retrieved title string
+ DWORD CounterHelpTitleIndex;
+ // Index of Counter Help into
+ // Title Database
+ LPWSTR CounterHelpTitle; // Initially NULL, for use by
+ // analysis program to point to
+ // retrieved title string
+ LONG DefaultScale; // Power of 10 by which to scale
+ // chart line if vertical axis is 100
+ // 0 ==> 1, 1 ==> 10, -1 ==>1/10, etc.
+ DWORD DetailLevel; // Counter level of detail (for
+ // controlling display complexity)
+ DWORD CounterType; // Type of counter
+ DWORD CounterSize; // Size of counter in bytes
+ DWORD CounterOffset; // Offset from the start of the
+ // PERF_COUNTER_BLOCK to the first
+ // byte of this counter
+} PERF_COUNTER_DEFINITION, *PPERF_COUNTER_DEFINITION;
+
+//
+// If (PERF_DATA_BLOCK.NumInstances >= 0) then there will be
+// PERF_DATA_BLOCK.NumInstances of a (PERF_INSTANCE_DEFINITION
+// followed by a PERF_COUNTER_BLOCK followed by the counter data fields)
+// for each instance.
+//
+// If (PERF_DATA_BLOCK.NumInstances < 0) then the counter definition
+// strucutre above will be followed by only a PERF_COUNTER_BLOCK and the
+// counter data for that COUNTER.
+//
+
+#define PERF_NO_UNIQUE_ID -1
+
+typedef struct _PERF_INSTANCE_DEFINITION {
+ DWORD ByteLength; // Length in bytes of this structure,
+ // including the subsequent name
+ DWORD ParentObjectTitleIndex;
+ // Title Index to name of "parent"
+ // object (e.g., if thread, then
+ // process is parent object type);
+ // if logical drive, the physical
+ // drive is parent object type
+ DWORD ParentObjectInstance;
+ // Index to instance of parent object
+ // type which is the parent of this
+ // instance.
+ LONG UniqueID; // A unique ID used instead of
+ // matching the name to identify
+ // this instance, -1 = none
+ DWORD NameOffset; // Offset from beginning of
+ // this struct to the Unicode name
+ // of this instance
+ DWORD NameLength; // Length in bytes of name; 0 = none
+ // this length includes the characters
+ // in the string plus the size of the
+ // terminating NULL char. It does not
+ // include any additional pad bytes to
+ // correct structure alignment
+} PERF_INSTANCE_DEFINITION, *PPERF_INSTANCE_DEFINITION;
+//
+// If .ParentObjectName is 0, there
+// is no parent-child hierarchy for this object type. Otherwise,
+// the .ParentObjectInstance is an index, starting at 0, into the
+// instances reported for the parent object type. It is only
+// meaningful if .ParentObjectName is not 0. The purpose of all this
+// is to permit reporting/summation of object instances like threads
+// within processes, and logical drives within physical drives.
+//
+//
+// The PERF_INSTANCE_DEFINITION will be followed by a PERF_COUNTER_BLOCK.
+//
+
+typedef struct _PERF_COUNTER_BLOCK {
+ DWORD ByteLength; // Length in bytes of this structure,
+ // including the following counters
+} PERF_COUNTER_BLOCK, *PPERF_COUNTER_BLOCK;
+
+//
+// The PERF_COUNTER_BLOCK is followed by PERF_OBJECT_TYPE.NumCounters
+// number of counters.
+//
+
+//
+// function typedefs for extensible counter function prototypes
+//
+typedef DWORD (APIENTRY PM_OPEN_PROC) (LPWSTR);
+typedef DWORD (APIENTRY PM_COLLECT_PROC) (LPWSTR, LPVOID *, LPDWORD, LPDWORD);
+typedef DWORD (APIENTRY PM_CLOSE_PROC) (void);
+
+#endif // _WINPERF_
+
+
diff --git a/public/sdk/inc/winreg.h b/public/sdk/inc/winreg.h
new file mode 100644
index 000000000..0eb8fe06f
--- /dev/null
+++ b/public/sdk/inc/winreg.h
@@ -0,0 +1,779 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ Winreg.h
+
+Abstract:
+
+ This module contains the function prototypes and constant, type and
+ structure definitions for the Windows 32-Bit Registry API.
+
+--*/
+
+#ifndef _WINREG_
+#define _WINREG_
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINVER
+#define WINVER 0x0400 // version 4.0
+#endif /* !WINVER */
+
+//
+// Requested Key access mask type.
+//
+
+typedef ACCESS_MASK REGSAM;
+
+//
+// Type definitions.
+//
+
+DECLARE_HANDLE(HKEY);
+typedef HKEY *PHKEY;
+
+//
+// Reserved Key Handles.
+//
+
+#define HKEY_CLASSES_ROOT (( HKEY ) 0x80000000 )
+#define HKEY_CURRENT_USER (( HKEY ) 0x80000001 )
+#define HKEY_LOCAL_MACHINE (( HKEY ) 0x80000002 )
+#define HKEY_USERS (( HKEY ) 0x80000003 )
+#define HKEY_PERFORMANCE_DATA (( HKEY ) 0x80000004 )
+#if(WINVER >= 0x0400)
+#define HKEY_CURRENT_CONFIG (( HKEY ) 0x80000005 )
+#define HKEY_DYN_DATA (( HKEY ) 0x80000006 )
+
+/*NOINC*/
+#ifndef _PROVIDER_STRUCTS_DEFINED
+#define _PROVIDER_STRUCTS_DEFINED
+
+#define PROVIDER_KEEPS_VALUE_LENGTH 0x1
+struct val_context {
+ int valuelen; // the total length of this value
+ LPVOID value_context; // provider's context
+ LPVOID val_buff_ptr; // where in the ouput buffer the value is.
+};
+
+typedef struct val_context FAR *PVALCONTEXT;
+
+typedef struct pvalueA { // Provider supplied value/context.
+ LPSTR pv_valuename; // The value name pointer
+ int pv_valuelen;
+ LPVOID pv_value_context;
+ DWORD pv_type;
+}PVALUEA, FAR *PPVALUEA;
+typedef struct pvalueW { // Provider supplied value/context.
+ LPWSTR pv_valuename; // The value name pointer
+ int pv_valuelen;
+ LPVOID pv_value_context;
+ DWORD pv_type;
+}PVALUEW, FAR *PPVALUEW;
+#ifdef UNICODE
+typedef PVALUEW PVALUE;
+typedef PPVALUEW PPVALUE;
+#else
+typedef PVALUEA PVALUE;
+typedef PPVALUEA PPVALUE;
+#endif // UNICODE
+
+typedef
+DWORD _cdecl
+QUERYHANDLER (LPVOID keycontext, PVALCONTEXT val_list, DWORD num_vals,
+ LPVOID outputbuffer, DWORD FAR *total_outlen, DWORD input_blen);
+
+typedef QUERYHANDLER FAR *PQUERYHANDLER;
+
+typedef struct provider_info {
+ PQUERYHANDLER pi_R0_1val;
+ PQUERYHANDLER pi_R0_allvals;
+ PQUERYHANDLER pi_R3_1val;
+ PQUERYHANDLER pi_R3_allvals;
+ DWORD pi_flags; // capability flags (none defined yet).
+ LPVOID pi_key_context;
+}REG_PROVIDER;
+
+typedef struct provider_info FAR *PPROVIDER;
+
+typedef struct value_entA {
+ LPSTR ve_valuename;
+ DWORD ve_valuelen;
+ DWORD ve_valueptr;
+ DWORD ve_type;
+}VALENTA, FAR *PVALENTA;
+typedef struct value_entW {
+ LPWSTR ve_valuename;
+ DWORD ve_valuelen;
+ DWORD ve_valueptr;
+ DWORD ve_type;
+}VALENTW, FAR *PVALENTW;
+#ifdef UNICODE
+typedef VALENTW VALENT;
+typedef PVALENTW PVALENT;
+#else
+typedef VALENTA VALENT;
+typedef PVALENTA PVALENT;
+#endif // UNICODE
+
+#endif // not(_PROVIDER_STRUCTS_DEFINED)
+/*INC*/
+
+#endif /* WINVER >= 0x0400 */
+
+//
+// Default values for parameters that do not exist in the Win 3.1
+// compatible APIs.
+//
+
+#define WIN31_CLASS NULL
+
+//
+// API Prototypes.
+//
+
+
+WINADVAPI
+LONG
+APIENTRY
+RegCloseKey (
+ HKEY hKey
+ );
+
+WINADVAPI
+LONG
+APIENTRY
+RegConnectRegistryA (
+ LPSTR lpMachineName,
+ HKEY hKey,
+ PHKEY phkResult
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegConnectRegistryW (
+ LPWSTR lpMachineName,
+ HKEY hKey,
+ PHKEY phkResult
+ );
+#ifdef UNICODE
+#define RegConnectRegistry RegConnectRegistryW
+#else
+#define RegConnectRegistry RegConnectRegistryA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegCreateKeyA (
+ HKEY hKey,
+ LPCSTR lpSubKey,
+ PHKEY phkResult
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegCreateKeyW (
+ HKEY hKey,
+ LPCWSTR lpSubKey,
+ PHKEY phkResult
+ );
+#ifdef UNICODE
+#define RegCreateKey RegCreateKeyW
+#else
+#define RegCreateKey RegCreateKeyA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegCreateKeyExA (
+ HKEY hKey,
+ LPCSTR lpSubKey,
+ DWORD Reserved,
+ LPSTR lpClass,
+ DWORD dwOptions,
+ REGSAM samDesired,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+ PHKEY phkResult,
+ LPDWORD lpdwDisposition
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegCreateKeyExW (
+ HKEY hKey,
+ LPCWSTR lpSubKey,
+ DWORD Reserved,
+ LPWSTR lpClass,
+ DWORD dwOptions,
+ REGSAM samDesired,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
+ PHKEY phkResult,
+ LPDWORD lpdwDisposition
+ );
+#ifdef UNICODE
+#define RegCreateKeyEx RegCreateKeyExW
+#else
+#define RegCreateKeyEx RegCreateKeyExA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegDeleteKeyA (
+ HKEY hKey,
+ LPCSTR lpSubKey
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegDeleteKeyW (
+ HKEY hKey,
+ LPCWSTR lpSubKey
+ );
+#ifdef UNICODE
+#define RegDeleteKey RegDeleteKeyW
+#else
+#define RegDeleteKey RegDeleteKeyA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegDeleteValueA (
+ HKEY hKey,
+ LPCSTR lpValueName
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegDeleteValueW (
+ HKEY hKey,
+ LPCWSTR lpValueName
+ );
+#ifdef UNICODE
+#define RegDeleteValue RegDeleteValueW
+#else
+#define RegDeleteValue RegDeleteValueA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegEnumKeyA (
+ HKEY hKey,
+ DWORD dwIndex,
+ LPSTR lpName,
+ DWORD cbName
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegEnumKeyW (
+ HKEY hKey,
+ DWORD dwIndex,
+ LPWSTR lpName,
+ DWORD cbName
+ );
+#ifdef UNICODE
+#define RegEnumKey RegEnumKeyW
+#else
+#define RegEnumKey RegEnumKeyA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegEnumKeyExA (
+ HKEY hKey,
+ DWORD dwIndex,
+ LPSTR lpName,
+ LPDWORD lpcbName,
+ LPDWORD lpReserved,
+ LPSTR lpClass,
+ LPDWORD lpcbClass,
+ PFILETIME lpftLastWriteTime
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegEnumKeyExW (
+ HKEY hKey,
+ DWORD dwIndex,
+ LPWSTR lpName,
+ LPDWORD lpcbName,
+ LPDWORD lpReserved,
+ LPWSTR lpClass,
+ LPDWORD lpcbClass,
+ PFILETIME lpftLastWriteTime
+ );
+#ifdef UNICODE
+#define RegEnumKeyEx RegEnumKeyExW
+#else
+#define RegEnumKeyEx RegEnumKeyExA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegEnumValueA (
+ HKEY hKey,
+ DWORD dwIndex,
+ LPSTR lpValueName,
+ LPDWORD lpcbValueName,
+ LPDWORD lpReserved,
+ LPDWORD lpType,
+ LPBYTE lpData,
+ LPDWORD lpcbData
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegEnumValueW (
+ HKEY hKey,
+ DWORD dwIndex,
+ LPWSTR lpValueName,
+ LPDWORD lpcbValueName,
+ LPDWORD lpReserved,
+ LPDWORD lpType,
+ LPBYTE lpData,
+ LPDWORD lpcbData
+ );
+#ifdef UNICODE
+#define RegEnumValue RegEnumValueW
+#else
+#define RegEnumValue RegEnumValueA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegFlushKey (
+ HKEY hKey
+ );
+
+WINADVAPI
+LONG
+APIENTRY
+RegGetKeySecurity (
+ HKEY hKey,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR pSecurityDescriptor,
+ LPDWORD lpcbSecurityDescriptor
+ );
+
+WINADVAPI
+LONG
+APIENTRY
+RegLoadKeyA (
+ HKEY hKey,
+ LPCSTR lpSubKey,
+ LPCSTR lpFile
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegLoadKeyW (
+ HKEY hKey,
+ LPCWSTR lpSubKey,
+ LPCWSTR lpFile
+ );
+#ifdef UNICODE
+#define RegLoadKey RegLoadKeyW
+#else
+#define RegLoadKey RegLoadKeyA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegNotifyChangeKeyValue (
+ HKEY hKey,
+ BOOL bWatchSubtree,
+ DWORD dwNotifyFilter,
+ HANDLE hEvent,
+ BOOL fAsynchronus
+ );
+
+WINADVAPI
+LONG
+APIENTRY
+RegOpenKeyA (
+ HKEY hKey,
+ LPCSTR lpSubKey,
+ PHKEY phkResult
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegOpenKeyW (
+ HKEY hKey,
+ LPCWSTR lpSubKey,
+ PHKEY phkResult
+ );
+#ifdef UNICODE
+#define RegOpenKey RegOpenKeyW
+#else
+#define RegOpenKey RegOpenKeyA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegOpenKeyExA (
+ HKEY hKey,
+ LPCSTR lpSubKey,
+ DWORD ulOptions,
+ REGSAM samDesired,
+ PHKEY phkResult
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegOpenKeyExW (
+ HKEY hKey,
+ LPCWSTR lpSubKey,
+ DWORD ulOptions,
+ REGSAM samDesired,
+ PHKEY phkResult
+ );
+#ifdef UNICODE
+#define RegOpenKeyEx RegOpenKeyExW
+#else
+#define RegOpenKeyEx RegOpenKeyExA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegQueryInfoKeyA (
+ HKEY hKey,
+ LPSTR lpClass,
+ LPDWORD lpcbClass,
+ LPDWORD lpReserved,
+ LPDWORD lpcSubKeys,
+ LPDWORD lpcbMaxSubKeyLen,
+ LPDWORD lpcbMaxClassLen,
+ LPDWORD lpcValues,
+ LPDWORD lpcbMaxValueNameLen,
+ LPDWORD lpcbMaxValueLen,
+ LPDWORD lpcbSecurityDescriptor,
+ PFILETIME lpftLastWriteTime
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegQueryInfoKeyW (
+ HKEY hKey,
+ LPWSTR lpClass,
+ LPDWORD lpcbClass,
+ LPDWORD lpReserved,
+ LPDWORD lpcSubKeys,
+ LPDWORD lpcbMaxSubKeyLen,
+ LPDWORD lpcbMaxClassLen,
+ LPDWORD lpcValues,
+ LPDWORD lpcbMaxValueNameLen,
+ LPDWORD lpcbMaxValueLen,
+ LPDWORD lpcbSecurityDescriptor,
+ PFILETIME lpftLastWriteTime
+ );
+#ifdef UNICODE
+#define RegQueryInfoKey RegQueryInfoKeyW
+#else
+#define RegQueryInfoKey RegQueryInfoKeyA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegQueryValueA (
+ HKEY hKey,
+ LPCSTR lpSubKey,
+ LPSTR lpValue,
+ PLONG lpcbValue
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegQueryValueW (
+ HKEY hKey,
+ LPCWSTR lpSubKey,
+ LPWSTR lpValue,
+ PLONG lpcbValue
+ );
+#ifdef UNICODE
+#define RegQueryValue RegQueryValueW
+#else
+#define RegQueryValue RegQueryValueA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+WINADVAPI
+LONG
+APIENTRY
+RegQueryMultipleValuesA (
+ HKEY hKey,
+ PVALENTA val_list,
+ DWORD num_vals,
+ LPSTR lpValueBuf,
+ LPDWORD ldwTotsize
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegQueryMultipleValuesW (
+ HKEY hKey,
+ PVALENTW val_list,
+ DWORD num_vals,
+ LPWSTR lpValueBuf,
+ LPDWORD ldwTotsize
+ );
+#ifdef UNICODE
+#define RegQueryMultipleValues RegQueryMultipleValuesW
+#else
+#define RegQueryMultipleValues RegQueryMultipleValuesA
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+
+WINADVAPI
+LONG
+APIENTRY
+RegQueryValueExA (
+ HKEY hKey,
+ LPCSTR lpValueName,
+ LPDWORD lpReserved,
+ LPDWORD lpType,
+ LPBYTE lpData,
+ LPDWORD lpcbData
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegQueryValueExW (
+ HKEY hKey,
+ LPCWSTR lpValueName,
+ LPDWORD lpReserved,
+ LPDWORD lpType,
+ LPBYTE lpData,
+ LPDWORD lpcbData
+ );
+#ifdef UNICODE
+#define RegQueryValueEx RegQueryValueExW
+#else
+#define RegQueryValueEx RegQueryValueExA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegReplaceKeyA (
+ HKEY hKey,
+ LPCSTR lpSubKey,
+ LPCSTR lpNewFile,
+ LPCSTR lpOldFile
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegReplaceKeyW (
+ HKEY hKey,
+ LPCWSTR lpSubKey,
+ LPCWSTR lpNewFile,
+ LPCWSTR lpOldFile
+ );
+#ifdef UNICODE
+#define RegReplaceKey RegReplaceKeyW
+#else
+#define RegReplaceKey RegReplaceKeyA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegRestoreKeyA (
+ HKEY hKey,
+ LPCSTR lpFile,
+ DWORD dwFlags
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegRestoreKeyW (
+ HKEY hKey,
+ LPCWSTR lpFile,
+ DWORD dwFlags
+ );
+#ifdef UNICODE
+#define RegRestoreKey RegRestoreKeyW
+#else
+#define RegRestoreKey RegRestoreKeyA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegSaveKeyA (
+ HKEY hKey,
+ LPCSTR lpFile,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegSaveKeyW (
+ HKEY hKey,
+ LPCWSTR lpFile,
+ LPSECURITY_ATTRIBUTES lpSecurityAttributes
+ );
+#ifdef UNICODE
+#define RegSaveKey RegSaveKeyW
+#else
+#define RegSaveKey RegSaveKeyA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegSetKeySecurity (
+ HKEY hKey,
+ SECURITY_INFORMATION SecurityInformation,
+ PSECURITY_DESCRIPTOR pSecurityDescriptor
+ );
+
+WINADVAPI
+LONG
+APIENTRY
+RegSetValueA (
+ HKEY hKey,
+ LPCSTR lpSubKey,
+ DWORD dwType,
+ LPCSTR lpData,
+ DWORD cbData
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegSetValueW (
+ HKEY hKey,
+ LPCWSTR lpSubKey,
+ DWORD dwType,
+ LPCWSTR lpData,
+ DWORD cbData
+ );
+#ifdef UNICODE
+#define RegSetValue RegSetValueW
+#else
+#define RegSetValue RegSetValueA
+#endif // !UNICODE
+
+
+WINADVAPI
+LONG
+APIENTRY
+RegSetValueExA (
+ HKEY hKey,
+ LPCSTR lpValueName,
+ DWORD Reserved,
+ DWORD dwType,
+ CONST BYTE* lpData,
+ DWORD cbData
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegSetValueExW (
+ HKEY hKey,
+ LPCWSTR lpValueName,
+ DWORD Reserved,
+ DWORD dwType,
+ CONST BYTE* lpData,
+ DWORD cbData
+ );
+#ifdef UNICODE
+#define RegSetValueEx RegSetValueExW
+#else
+#define RegSetValueEx RegSetValueExA
+#endif // !UNICODE
+
+WINADVAPI
+LONG
+APIENTRY
+RegUnLoadKeyA (
+ HKEY hKey,
+ LPCSTR lpSubKey
+ );
+WINADVAPI
+LONG
+APIENTRY
+RegUnLoadKeyW (
+ HKEY hKey,
+ LPCWSTR lpSubKey
+ );
+#ifdef UNICODE
+#define RegUnLoadKey RegUnLoadKeyW
+#else
+#define RegUnLoadKey RegUnLoadKeyA
+#endif // !UNICODE
+
+//
+// Remoteable System Shutdown APIs
+//
+
+WINADVAPI
+BOOL
+APIENTRY
+InitiateSystemShutdownA(
+ LPSTR lpMachineName,
+ LPSTR lpMessage,
+ DWORD dwTimeout,
+ BOOL bForceAppsClosed,
+ BOOL bRebootAfterShutdown
+ );
+WINADVAPI
+BOOL
+APIENTRY
+InitiateSystemShutdownW(
+ LPWSTR lpMachineName,
+ LPWSTR lpMessage,
+ DWORD dwTimeout,
+ BOOL bForceAppsClosed,
+ BOOL bRebootAfterShutdown
+ );
+#ifdef UNICODE
+#define InitiateSystemShutdown InitiateSystemShutdownW
+#else
+#define InitiateSystemShutdown InitiateSystemShutdownA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+APIENTRY
+AbortSystemShutdownA(
+ LPSTR lpMachineName
+ );
+WINADVAPI
+BOOL
+APIENTRY
+AbortSystemShutdownW(
+ LPWSTR lpMachineName
+ );
+#ifdef UNICODE
+#define AbortSystemShutdown AbortSystemShutdownW
+#else
+#define AbortSystemShutdown AbortSystemShutdownA
+#endif // !UNICODE
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif // _WINREG_
diff --git a/public/sdk/inc/winsock.h b/public/sdk/inc/winsock.h
new file mode 100644
index 000000000..fcd69d26e
--- /dev/null
+++ b/public/sdk/inc/winsock.h
@@ -0,0 +1,959 @@
+/* WINSOCK.H--definitions to be used with the WINSOCK.DLL
+ * Copyright (c) 1993-1996, Microsoft Corp. All rights reserved.
+ *
+ * This header file corresponds to version 1.1 of the Windows Sockets specification.
+ *
+ * This file includes parts which are Copyright (c) 1982-1986 Regents
+ * of the University of California. All rights reserved. The
+ * Berkeley Software License Agreement specifies the terms and
+ * conditions for redistribution.
+ *
+ */
+
+#ifndef _WINSOCKAPI_
+#define _WINSOCKAPI_
+
+/*
+ * Pull in WINDOWS.H if necessary
+ */
+#ifndef _INC_WINDOWS
+#include <windows.h>
+#endif /* _INC_WINDOWS */
+
+/*
+ * Basic system type definitions, taken from the BSD file sys/types.h.
+ */
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+
+/*
+ * The new type to be used in all
+ * instances which refer to sockets.
+ */
+typedef u_int SOCKET;
+
+/*
+ * Select uses arrays of SOCKETs. These macros manipulate such
+ * arrays. FD_SETSIZE may be defined by the user before including
+ * this file, but the default here should be >= 64.
+ *
+ * CAVEAT IMPLEMENTOR and USER: THESE MACROS AND TYPES MUST BE
+ * INCLUDED IN WINSOCK.H EXACTLY AS SHOWN HERE.
+ */
+#ifndef FD_SETSIZE
+#define FD_SETSIZE 64
+#endif /* FD_SETSIZE */
+
+typedef struct fd_set {
+ u_int fd_count; /* how many are SET? */
+ SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */
+} fd_set;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#define FD_CLR(fd, set) do { \
+ u_int __i; \
+ for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { \
+ if (((fd_set FAR *)(set))->fd_array[__i] == fd) { \
+ while (__i < ((fd_set FAR *)(set))->fd_count-1) { \
+ ((fd_set FAR *)(set))->fd_array[__i] = \
+ ((fd_set FAR *)(set))->fd_array[__i+1]; \
+ __i++; \
+ } \
+ ((fd_set FAR *)(set))->fd_count--; \
+ break; \
+ } \
+ } \
+} while(0)
+
+#define FD_SET(fd, set) do { \
+ if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) \
+ ((fd_set FAR *)(set))->fd_array[((fd_set FAR *)(set))->fd_count++]=(fd);\
+} while(0)
+
+#define FD_ZERO(set) (((fd_set FAR *)(set))->fd_count=0)
+
+#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set))
+
+/*
+ * Structure used in select() call, taken from the BSD file sys/time.h.
+ */
+struct timeval {
+ long tv_sec; /* seconds */
+ long tv_usec; /* and microseconds */
+};
+
+/*
+ * Operations on timevals.
+ *
+ * NB: timercmp does not work for >= or <=.
+ */
+#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+#define timercmp(tvp, uvp, cmp) \
+ ((tvp)->tv_sec cmp (uvp)->tv_sec || \
+ (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
+#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
+
+/*
+ * Commands for ioctlsocket(), taken from the BSD file fcntl.h.
+ *
+ *
+ * Ioctl's have the command encoded in the lower word,
+ * and the size of any in or out parameters in the upper
+ * word. The high 2 bits of the upper word are used
+ * to encode the in/out status of the parameter; for now
+ * we restrict parameters to at most 128 bytes.
+ */
+#define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */
+#define IOC_VOID 0x20000000 /* no parameters */
+#define IOC_OUT 0x40000000 /* copy out parameters */
+#define IOC_IN 0x80000000 /* copy in parameters */
+#define IOC_INOUT (IOC_IN|IOC_OUT)
+ /* 0x20000000 distinguishes new &
+ old ioctl's */
+#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
+
+#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+
+#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+
+#define FIONREAD _IOR('f', 127, u_long) /* get # bytes to read */
+#define FIONBIO _IOW('f', 126, u_long) /* set/clear non-blocking i/o */
+#define FIOASYNC _IOW('f', 125, u_long) /* set/clear async i/o */
+
+/* Socket I/O Controls */
+#define SIOCSHIWAT _IOW('s', 0, u_long) /* set high watermark */
+#define SIOCGHIWAT _IOR('s', 1, u_long) /* get high watermark */
+#define SIOCSLOWAT _IOW('s', 2, u_long) /* set low watermark */
+#define SIOCGLOWAT _IOR('s', 3, u_long) /* get low watermark */
+#define SIOCATMARK _IOR('s', 7, u_long) /* at oob mark? */
+
+/*
+ * Structures returned by network data base library, taken from the
+ * BSD file netdb.h. All addresses are supplied in host order, and
+ * returned in network order (suitable for use in system calls).
+ */
+
+struct hostent {
+ char FAR * h_name; /* official name of host */
+ char FAR * FAR * h_aliases; /* alias list */
+ short h_addrtype; /* host address type */
+ short h_length; /* length of address */
+ char FAR * FAR * h_addr_list; /* list of addresses */
+#define h_addr h_addr_list[0] /* address, for backward compat */
+};
+
+/*
+ * It is assumed here that a network number
+ * fits in 32 bits.
+ */
+struct netent {
+ char FAR * n_name; /* official name of net */
+ char FAR * FAR * n_aliases; /* alias list */
+ short n_addrtype; /* net address type */
+ u_long n_net; /* network # */
+};
+
+struct servent {
+ char FAR * s_name; /* official service name */
+ char FAR * FAR * s_aliases; /* alias list */
+ short s_port; /* port # */
+ char FAR * s_proto; /* protocol to use */
+};
+
+struct protoent {
+ char FAR * p_name; /* official protocol name */
+ char FAR * FAR * p_aliases; /* alias list */
+ short p_proto; /* protocol # */
+};
+
+/*
+ * Constants and structures defined by the internet system,
+ * Per RFC 790, September 1981, taken from the BSD file netinet/in.h.
+ */
+
+/*
+ * Protocols
+ */
+#define IPPROTO_IP 0 /* dummy for IP */
+#define IPPROTO_ICMP 1 /* control message protocol */
+#define IPPROTO_IGMP 2 /* group management protocol */
+#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
+#define IPPROTO_TCP 6 /* tcp */
+#define IPPROTO_PUP 12 /* pup */
+#define IPPROTO_UDP 17 /* user datagram protocol */
+#define IPPROTO_IDP 22 /* xns idp */
+#define IPPROTO_ND 77 /* UNOFFICIAL net disk proto */
+
+#define IPPROTO_RAW 255 /* raw IP packet */
+#define IPPROTO_MAX 256
+
+/*
+ * Port/socket numbers: network standard functions
+ */
+#define IPPORT_ECHO 7
+#define IPPORT_DISCARD 9
+#define IPPORT_SYSTAT 11
+#define IPPORT_DAYTIME 13
+#define IPPORT_NETSTAT 15
+#define IPPORT_FTP 21
+#define IPPORT_TELNET 23
+#define IPPORT_SMTP 25
+#define IPPORT_TIMESERVER 37
+#define IPPORT_NAMESERVER 42
+#define IPPORT_WHOIS 43
+#define IPPORT_MTP 57
+
+/*
+ * Port/socket numbers: host specific functions
+ */
+#define IPPORT_TFTP 69
+#define IPPORT_RJE 77
+#define IPPORT_FINGER 79
+#define IPPORT_TTYLINK 87
+#define IPPORT_SUPDUP 95
+
+/*
+ * UNIX TCP sockets
+ */
+#define IPPORT_EXECSERVER 512
+#define IPPORT_LOGINSERVER 513
+#define IPPORT_CMDSERVER 514
+#define IPPORT_EFSSERVER 520
+
+/*
+ * UNIX UDP sockets
+ */
+#define IPPORT_BIFFUDP 512
+#define IPPORT_WHOSERVER 513
+#define IPPORT_ROUTESERVER 520
+ /* 520+1 also used */
+
+/*
+ * Ports < IPPORT_RESERVED are reserved for
+ * privileged processes (e.g. root).
+ */
+#define IPPORT_RESERVED 1024
+
+/*
+ * Link numbers
+ */
+#define IMPLINK_IP 155
+#define IMPLINK_LOWEXPER 156
+#define IMPLINK_HIGHEXPER 158
+
+/*
+ * Internet address (old style... should be updated)
+ */
+struct in_addr {
+ union {
+ struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
+ struct { u_short s_w1,s_w2; } S_un_w;
+ u_long S_addr;
+ } S_un;
+#define s_addr S_un.S_addr
+ /* can be used for most tcp & ip code */
+#define s_host S_un.S_un_b.s_b2
+ /* host on imp */
+#define s_net S_un.S_un_b.s_b1
+ /* network */
+#define s_imp S_un.S_un_w.s_w2
+ /* imp */
+#define s_impno S_un.S_un_b.s_b4
+ /* imp # */
+#define s_lh S_un.S_un_b.s_b3
+ /* logical host */
+};
+
+/*
+ * Definitions of bits in internet address integers.
+ * On subnets, the decomposition of addresses to host and net parts
+ * is done according to subnet mask, not the masks here.
+ */
+#define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)
+#define IN_CLASSA_NET 0xff000000
+#define IN_CLASSA_NSHIFT 24
+#define IN_CLASSA_HOST 0x00ffffff
+#define IN_CLASSA_MAX 128
+
+#define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000)
+#define IN_CLASSB_NET 0xffff0000
+#define IN_CLASSB_NSHIFT 16
+#define IN_CLASSB_HOST 0x0000ffff
+#define IN_CLASSB_MAX 65536
+
+#define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000)
+#define IN_CLASSC_NET 0xffffff00
+#define IN_CLASSC_NSHIFT 8
+#define IN_CLASSC_HOST 0x000000ff
+
+#define INADDR_ANY (u_long)0x00000000
+#define INADDR_LOOPBACK 0x7f000001
+#define INADDR_BROADCAST (u_long)0xffffffff
+#define INADDR_NONE 0xffffffff
+
+/*
+ * Socket address, internet style.
+ */
+struct sockaddr_in {
+ short sin_family;
+ u_short sin_port;
+ struct in_addr sin_addr;
+ char sin_zero[8];
+};
+
+#define WSADESCRIPTION_LEN 256
+#define WSASYS_STATUS_LEN 128
+
+typedef struct WSAData {
+ WORD wVersion;
+ WORD wHighVersion;
+ char szDescription[WSADESCRIPTION_LEN+1];
+ char szSystemStatus[WSASYS_STATUS_LEN+1];
+ unsigned short iMaxSockets;
+ unsigned short iMaxUdpDg;
+ char FAR * lpVendorInfo;
+} WSADATA;
+
+typedef WSADATA FAR *LPWSADATA;
+
+/*
+ * Options for use with [gs]etsockopt at the IP level.
+ */
+#define IP_OPTIONS 1 /* set/get IP per-packet options */
+#define IP_MULTICAST_IF 2 /* set/get IP multicast interface */
+#define IP_MULTICAST_TTL 3 /* set/get IP multicast timetolive */
+#define IP_MULTICAST_LOOP 4 /* set/get IP multicast loopback */
+#define IP_ADD_MEMBERSHIP 5 /* add an IP group membership */
+#define IP_DROP_MEMBERSHIP 6 /* drop an IP group membership */
+#define IP_TTL 7 /* set/get IP Time To Live */
+#define IP_TOS 8 /* set/get IP Type Of Service */
+#define IP_DONTFRAGMENT 9 /* set/get IP Don't Fragment flag */
+
+
+#define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */
+#define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
+#define IP_MAX_MEMBERSHIPS 20 /* per socket; must fit in one mbuf */
+
+/*
+ * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
+ */
+struct ip_mreq {
+ struct in_addr imr_multiaddr; /* IP multicast address of group */
+ struct in_addr imr_interface; /* local IP address of interface */
+};
+
+/*
+ * Definitions related to sockets: types, address families, options,
+ * taken from the BSD file sys/socket.h.
+ */
+
+/*
+ * This is used instead of -1, since the
+ * SOCKET type is unsigned.
+ */
+#define INVALID_SOCKET (SOCKET)(~0)
+#define SOCKET_ERROR (-1)
+
+/*
+ * Types
+ */
+#define SOCK_STREAM 1 /* stream socket */
+#define SOCK_DGRAM 2 /* datagram socket */
+#define SOCK_RAW 3 /* raw-protocol interface */
+#define SOCK_RDM 4 /* reliably-delivered message */
+#define SOCK_SEQPACKET 5 /* sequenced packet stream */
+
+/*
+ * Option flags per-socket.
+ */
+#define SO_DEBUG 0x0001 /* turn on debugging info recording */
+#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */
+#define SO_REUSEADDR 0x0004 /* allow local address reuse */
+#define SO_KEEPALIVE 0x0008 /* keep connections alive */
+#define SO_DONTROUTE 0x0010 /* just use interface addresses */
+#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */
+#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */
+#define SO_LINGER 0x0080 /* linger on close if data present */
+#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */
+
+#define SO_DONTLINGER (u_int)(~SO_LINGER)
+
+/*
+ * Additional options.
+ */
+#define SO_SNDBUF 0x1001 /* send buffer size */
+#define SO_RCVBUF 0x1002 /* receive buffer size */
+#define SO_SNDLOWAT 0x1003 /* send low-water mark */
+#define SO_RCVLOWAT 0x1004 /* receive low-water mark */
+#define SO_SNDTIMEO 0x1005 /* send timeout */
+#define SO_RCVTIMEO 0x1006 /* receive timeout */
+#define SO_ERROR 0x1007 /* get error status and clear */
+#define SO_TYPE 0x1008 /* get socket type */
+
+/*
+ * Options for connect and disconnect data and options. Used only by
+ * non-TCP/IP transports such as DECNet, OSI TP4, etc.
+ */
+#define SO_CONNDATA 0x7000
+#define SO_CONNOPT 0x7001
+#define SO_DISCDATA 0x7002
+#define SO_DISCOPT 0x7003
+#define SO_CONNDATALEN 0x7004
+#define SO_CONNOPTLEN 0x7005
+#define SO_DISCDATALEN 0x7006
+#define SO_DISCOPTLEN 0x7007
+
+/*
+ * Option for opening sockets for synchronous access.
+ */
+#define SO_OPENTYPE 0x7008
+
+#define SO_SYNCHRONOUS_ALERT 0x10
+#define SO_SYNCHRONOUS_NONALERT 0x20
+
+/*
+ * Other NT-specific options.
+ */
+#define SO_MAXDG 0x7009
+#define SO_MAXPATHDG 0x700A
+#define SO_UPDATE_ACCEPT_CONTEXT 0x700B
+#define SO_CONNECT_TIME 0x700C
+
+/*
+ * TCP options.
+ */
+#define TCP_NODELAY 0x0001
+#define TCP_BSDURGENT 0x7000
+
+/*
+ * Address families.
+ */
+#define AF_UNSPEC 0 /* unspecified */
+#define AF_UNIX 1 /* local to host (pipes, portals) */
+#define AF_INET 2 /* internetwork: UDP, TCP, etc. */
+#define AF_IMPLINK 3 /* arpanet imp addresses */
+#define AF_PUP 4 /* pup protocols: e.g. BSP */
+#define AF_CHAOS 5 /* mit CHAOS protocols */
+#define AF_IPX 6 /* IPX and SPX */
+#define AF_NS 6 /* XEROX NS protocols */
+#define AF_ISO 7 /* ISO protocols */
+#define AF_OSI AF_ISO /* OSI is ISO */
+#define AF_ECMA 8 /* european computer manufacturers */
+#define AF_DATAKIT 9 /* datakit protocols */
+#define AF_CCITT 10 /* CCITT protocols, X.25 etc */
+#define AF_SNA 11 /* IBM SNA */
+#define AF_DECnet 12 /* DECnet */
+#define AF_DLI 13 /* Direct data link interface */
+#define AF_LAT 14 /* LAT */
+#define AF_HYLINK 15 /* NSC Hyperchannel */
+#define AF_APPLETALK 16 /* AppleTalk */
+#define AF_NETBIOS 17 /* NetBios-style addresses */
+#define AF_VOICEVIEW 18 /* VoiceView */
+#define AF_FIREFOX 19 /* FireFox */
+#define AF_UNKNOWN1 20 /* Somebody is using this! */
+#define AF_BAN 21 /* Banyan */
+
+#define AF_MAX 22
+
+/*
+ * Structure used by kernel to store most
+ * addresses.
+ */
+struct sockaddr {
+ u_short sa_family; /* address family */
+ char sa_data[14]; /* up to 14 bytes of direct address */
+};
+
+/*
+ * Structure used by kernel to pass protocol
+ * information in raw sockets.
+ */
+struct sockproto {
+ u_short sp_family; /* address family */
+ u_short sp_protocol; /* protocol */
+};
+
+/*
+ * Protocol families, same as address families for now.
+ */
+#define PF_UNSPEC AF_UNSPEC
+#define PF_UNIX AF_UNIX
+#define PF_INET AF_INET
+#define PF_IMPLINK AF_IMPLINK
+#define PF_PUP AF_PUP
+#define PF_CHAOS AF_CHAOS
+#define PF_NS AF_NS
+#define PF_IPX AF_IPX
+#define PF_ISO AF_ISO
+#define PF_OSI AF_OSI
+#define PF_ECMA AF_ECMA
+#define PF_DATAKIT AF_DATAKIT
+#define PF_CCITT AF_CCITT
+#define PF_SNA AF_SNA
+#define PF_DECnet AF_DECnet
+#define PF_DLI AF_DLI
+#define PF_LAT AF_LAT
+#define PF_HYLINK AF_HYLINK
+#define PF_APPLETALK AF_APPLETALK
+#define PF_VOICEVIEW AF_VOICEVIEW
+#define PF_FIREFOX AF_FIREFOX
+#define PF_UNKNOWN1 AF_UNKNOWN1
+#define PF_BAN AF_BAN
+
+#define PF_MAX AF_MAX
+
+/*
+ * Structure used for manipulating linger option.
+ */
+struct linger {
+ u_short l_onoff; /* option on/off */
+ u_short l_linger; /* linger time */
+};
+
+/*
+ * Level number for (get/set)sockopt() to apply to socket itself.
+ */
+#define SOL_SOCKET 0xffff /* options for socket level */
+
+/*
+ * Maximum queue length specifiable by listen.
+ */
+#define SOMAXCONN 5
+
+#define MSG_OOB 0x1 /* process out-of-band data */
+#define MSG_PEEK 0x2 /* peek at incoming message */
+#define MSG_DONTROUTE 0x4 /* send without using routing tables */
+
+#define MSG_MAXIOVLEN 16
+
+#define MSG_PARTIAL 0x8000 /* partial send or recv for message xport */
+
+/*
+ * Define constant based on rfc883, used by gethostbyxxxx() calls.
+ */
+#define MAXGETHOSTSTRUCT 1024
+
+/*
+ * Define flags to be used with the WSAAsyncSelect() call.
+ */
+#define FD_READ 0x01
+#define FD_WRITE 0x02
+#define FD_OOB 0x04
+#define FD_ACCEPT 0x08
+#define FD_CONNECT 0x10
+#define FD_CLOSE 0x20
+
+/*
+ * All Windows Sockets error constants are biased by WSABASEERR from
+ * the "normal"
+ */
+#define WSABASEERR 10000
+/*
+ * Windows Sockets definitions of regular Microsoft C error constants
+ */
+#define WSAEINTR (WSABASEERR+4)
+#define WSAEBADF (WSABASEERR+9)
+#define WSAEACCES (WSABASEERR+13)
+#define WSAEFAULT (WSABASEERR+14)
+#define WSAEINVAL (WSABASEERR+22)
+#define WSAEMFILE (WSABASEERR+24)
+
+/*
+ * Windows Sockets definitions of regular Berkeley error constants
+ */
+#define WSAEWOULDBLOCK (WSABASEERR+35)
+#define WSAEINPROGRESS (WSABASEERR+36)
+#define WSAEALREADY (WSABASEERR+37)
+#define WSAENOTSOCK (WSABASEERR+38)
+#define WSAEDESTADDRREQ (WSABASEERR+39)
+#define WSAEMSGSIZE (WSABASEERR+40)
+#define WSAEPROTOTYPE (WSABASEERR+41)
+#define WSAENOPROTOOPT (WSABASEERR+42)
+#define WSAEPROTONOSUPPORT (WSABASEERR+43)
+#define WSAESOCKTNOSUPPORT (WSABASEERR+44)
+#define WSAEOPNOTSUPP (WSABASEERR+45)
+#define WSAEPFNOSUPPORT (WSABASEERR+46)
+#define WSAEAFNOSUPPORT (WSABASEERR+47)
+#define WSAEADDRINUSE (WSABASEERR+48)
+#define WSAEADDRNOTAVAIL (WSABASEERR+49)
+#define WSAENETDOWN (WSABASEERR+50)
+#define WSAENETUNREACH (WSABASEERR+51)
+#define WSAENETRESET (WSABASEERR+52)
+#define WSAECONNABORTED (WSABASEERR+53)
+#define WSAECONNRESET (WSABASEERR+54)
+#define WSAENOBUFS (WSABASEERR+55)
+#define WSAEISCONN (WSABASEERR+56)
+#define WSAENOTCONN (WSABASEERR+57)
+#define WSAESHUTDOWN (WSABASEERR+58)
+#define WSAETOOMANYREFS (WSABASEERR+59)
+#define WSAETIMEDOUT (WSABASEERR+60)
+#define WSAECONNREFUSED (WSABASEERR+61)
+#define WSAELOOP (WSABASEERR+62)
+#define WSAENAMETOOLONG (WSABASEERR+63)
+#define WSAEHOSTDOWN (WSABASEERR+64)
+#define WSAEHOSTUNREACH (WSABASEERR+65)
+#define WSAENOTEMPTY (WSABASEERR+66)
+#define WSAEPROCLIM (WSABASEERR+67)
+#define WSAEUSERS (WSABASEERR+68)
+#define WSAEDQUOT (WSABASEERR+69)
+#define WSAESTALE (WSABASEERR+70)
+#define WSAEREMOTE (WSABASEERR+71)
+
+#define WSAEDISCON (WSABASEERR+101)
+
+/*
+ * Extended Windows Sockets error constant definitions
+ */
+#define WSASYSNOTREADY (WSABASEERR+91)
+#define WSAVERNOTSUPPORTED (WSABASEERR+92)
+#define WSANOTINITIALISED (WSABASEERR+93)
+
+/*
+ * Error return codes from gethostbyname() and gethostbyaddr()
+ * (when using the resolver). Note that these errors are
+ * retrieved via WSAGetLastError() and must therefore follow
+ * the rules for avoiding clashes with error numbers from
+ * specific implementations or language run-time systems.
+ * For this reason the codes are based at WSABASEERR+1001.
+ * Note also that [WSA]NO_ADDRESS is defined only for
+ * compatibility purposes.
+ */
+
+#define h_errno WSAGetLastError()
+
+/* Authoritative Answer: Host not found */
+#define WSAHOST_NOT_FOUND (WSABASEERR+1001)
+#define HOST_NOT_FOUND WSAHOST_NOT_FOUND
+
+/* Non-Authoritative: Host not found, or SERVERFAIL */
+#define WSATRY_AGAIN (WSABASEERR+1002)
+#define TRY_AGAIN WSATRY_AGAIN
+
+/* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
+#define WSANO_RECOVERY (WSABASEERR+1003)
+#define NO_RECOVERY WSANO_RECOVERY
+
+/* Valid name, no data record of requested type */
+#define WSANO_DATA (WSABASEERR+1004)
+#define NO_DATA WSANO_DATA
+
+/* no address, look for MX record */
+#define WSANO_ADDRESS WSANO_DATA
+#define NO_ADDRESS WSANO_ADDRESS
+
+/*
+ * Windows Sockets errors redefined as regular Berkeley error constants.
+ * These are commented out in Windows NT to avoid conflicts with errno.h.
+ * Use the WSA constants instead.
+ */
+#if 0
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define EINPROGRESS WSAEINPROGRESS
+#define EALREADY WSAEALREADY
+#define ENOTSOCK WSAENOTSOCK
+#define EDESTADDRREQ WSAEDESTADDRREQ
+#define EMSGSIZE WSAEMSGSIZE
+#define EPROTOTYPE WSAEPROTOTYPE
+#define ENOPROTOOPT WSAENOPROTOOPT
+#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
+#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
+#define EOPNOTSUPP WSAEOPNOTSUPP
+#define EPFNOSUPPORT WSAEPFNOSUPPORT
+#define EAFNOSUPPORT WSAEAFNOSUPPORT
+#define EADDRINUSE WSAEADDRINUSE
+#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+#define ENETDOWN WSAENETDOWN
+#define ENETUNREACH WSAENETUNREACH
+#define ENETRESET WSAENETRESET
+#define ECONNABORTED WSAECONNABORTED
+#define ECONNRESET WSAECONNRESET
+#define ENOBUFS WSAENOBUFS
+#define EISCONN WSAEISCONN
+#define ENOTCONN WSAENOTCONN
+#define ESHUTDOWN WSAESHUTDOWN
+#define ETOOMANYREFS WSAETOOMANYREFS
+#define ETIMEDOUT WSAETIMEDOUT
+#define ECONNREFUSED WSAECONNREFUSED
+#define ELOOP WSAELOOP
+#define ENAMETOOLONG WSAENAMETOOLONG
+#define EHOSTDOWN WSAEHOSTDOWN
+#define EHOSTUNREACH WSAEHOSTUNREACH
+#define ENOTEMPTY WSAENOTEMPTY
+#define EPROCLIM WSAEPROCLIM
+#define EUSERS WSAEUSERS
+#define EDQUOT WSAEDQUOT
+#define ESTALE WSAESTALE
+#define EREMOTE WSAEREMOTE
+#endif
+
+/* Socket function prototypes */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SOCKET PASCAL FAR accept (SOCKET s, struct sockaddr FAR *addr,
+ int FAR *addrlen);
+
+int PASCAL FAR bind (SOCKET s, const struct sockaddr FAR *addr, int namelen);
+
+int PASCAL FAR closesocket (SOCKET s);
+
+int PASCAL FAR connect (SOCKET s, const struct sockaddr FAR *name, int namelen);
+
+int PASCAL FAR ioctlsocket (SOCKET s, long cmd, u_long FAR *argp);
+
+int PASCAL FAR getpeername (SOCKET s, struct sockaddr FAR *name,
+ int FAR * namelen);
+
+int PASCAL FAR getsockname (SOCKET s, struct sockaddr FAR *name,
+ int FAR * namelen);
+
+int PASCAL FAR getsockopt (SOCKET s, int level, int optname,
+ char FAR * optval, int FAR *optlen);
+
+u_long PASCAL FAR htonl (u_long hostlong);
+
+u_short PASCAL FAR htons (u_short hostshort);
+
+unsigned long PASCAL FAR inet_addr (const char FAR * cp);
+
+char FAR * PASCAL FAR inet_ntoa (struct in_addr in);
+
+int PASCAL FAR listen (SOCKET s, int backlog);
+
+u_long PASCAL FAR ntohl (u_long netlong);
+
+u_short PASCAL FAR ntohs (u_short netshort);
+
+int PASCAL FAR recv (SOCKET s, char FAR * buf, int len, int flags);
+
+int PASCAL FAR recvfrom (SOCKET s, char FAR * buf, int len, int flags,
+ struct sockaddr FAR *from, int FAR * fromlen);
+
+int PASCAL FAR select (int nfds, fd_set FAR *readfds, fd_set FAR *writefds,
+ fd_set FAR *exceptfds, const struct timeval FAR *timeout);
+
+int PASCAL FAR send (SOCKET s, const char FAR * buf, int len, int flags);
+
+int PASCAL FAR sendto (SOCKET s, const char FAR * buf, int len, int flags,
+ const struct sockaddr FAR *to, int tolen);
+
+int PASCAL FAR setsockopt (SOCKET s, int level, int optname,
+ const char FAR * optval, int optlen);
+
+int PASCAL FAR shutdown (SOCKET s, int how);
+
+SOCKET PASCAL FAR socket (int af, int type, int protocol);
+
+/* Database function prototypes */
+
+struct hostent FAR * PASCAL FAR gethostbyaddr(const char FAR * addr,
+ int len, int type);
+
+struct hostent FAR * PASCAL FAR gethostbyname(const char FAR * name);
+
+int PASCAL FAR gethostname (char FAR * name, int namelen);
+
+struct servent FAR * PASCAL FAR getservbyport(int port, const char FAR * proto);
+
+struct servent FAR * PASCAL FAR getservbyname(const char FAR * name,
+ const char FAR * proto);
+
+struct protoent FAR * PASCAL FAR getprotobynumber(int proto);
+
+struct protoent FAR * PASCAL FAR getprotobyname(const char FAR * name);
+
+/* Microsoft Windows Extension function prototypes */
+
+int PASCAL FAR WSAStartup(WORD wVersionRequired, LPWSADATA lpWSAData);
+
+int PASCAL FAR WSACleanup(void);
+
+void PASCAL FAR WSASetLastError(int iError);
+
+int PASCAL FAR WSAGetLastError(void);
+
+BOOL PASCAL FAR WSAIsBlocking(void);
+
+int PASCAL FAR WSAUnhookBlockingHook(void);
+
+FARPROC PASCAL FAR WSASetBlockingHook(FARPROC lpBlockFunc);
+
+int PASCAL FAR WSACancelBlockingCall(void);
+
+HANDLE PASCAL FAR WSAAsyncGetServByName(HWND hWnd, u_int wMsg,
+ const char FAR * name,
+ const char FAR * proto,
+ char FAR * buf, int buflen);
+
+HANDLE PASCAL FAR WSAAsyncGetServByPort(HWND hWnd, u_int wMsg, int port,
+ const char FAR * proto, char FAR * buf,
+ int buflen);
+
+HANDLE PASCAL FAR WSAAsyncGetProtoByName(HWND hWnd, u_int wMsg,
+ const char FAR * name, char FAR * buf,
+ int buflen);
+
+HANDLE PASCAL FAR WSAAsyncGetProtoByNumber(HWND hWnd, u_int wMsg,
+ int number, char FAR * buf,
+ int buflen);
+
+HANDLE PASCAL FAR WSAAsyncGetHostByName(HWND hWnd, u_int wMsg,
+ const char FAR * name, char FAR * buf,
+ int buflen);
+
+HANDLE PASCAL FAR WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg,
+ const char FAR * addr, int len, int type,
+ char FAR * buf, int buflen);
+
+int PASCAL FAR WSACancelAsyncRequest(HANDLE hAsyncTaskHandle);
+
+int PASCAL FAR WSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg,
+ long lEvent);
+
+int PASCAL FAR WSARecvEx (SOCKET s, char FAR * buf, int len, int FAR *flags);
+
+typedef struct _TRANSMIT_FILE_BUFFERS {
+ PVOID Head;
+ DWORD HeadLength;
+ PVOID Tail;
+ DWORD TailLength;
+} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
+
+#define TF_DISCONNECT 0x01
+#define TF_REUSE_SOCKET 0x02
+#define TF_WRITE_BEHIND 0x04
+
+BOOL
+PASCAL FAR
+TransmitFile (
+ IN SOCKET hSocket,
+ IN HANDLE hFile,
+ IN DWORD nNumberOfBytesToWrite,
+ IN DWORD nNumberOfBytesPerSend,
+ IN LPOVERLAPPED lpOverlapped,
+ IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
+ IN DWORD dwReserved
+ );
+
+BOOL
+PASCAL FAR
+AcceptEx (
+ IN SOCKET sListenSocket,
+ IN SOCKET sAcceptSocket,
+ IN PVOID lpOutputBuffer,
+ IN DWORD dwReceiveDataLength,
+ IN DWORD dwLocalAddressLength,
+ IN DWORD dwRemoteAddressLength,
+ OUT LPDWORD lpdwBytesReceived,
+ IN LPOVERLAPPED lpOverlapped
+ );
+
+VOID
+PASCAL FAR
+GetAcceptExSockaddrs (
+ IN PVOID lpOutputBuffer,
+ IN DWORD dwReceiveDataLength,
+ IN DWORD dwLocalAddressLength,
+ IN DWORD dwRemoteAddressLength,
+ OUT struct sockaddr **LocalSockaddr,
+ OUT LPINT LocalSockaddrLength,
+ OUT struct sockaddr **RemoteSockaddr,
+ OUT LPINT RemoteSockaddrLength
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Microsoft Windows Extended data types */
+typedef struct sockaddr SOCKADDR;
+typedef struct sockaddr *PSOCKADDR;
+typedef struct sockaddr FAR *LPSOCKADDR;
+
+typedef struct sockaddr_in SOCKADDR_IN;
+typedef struct sockaddr_in *PSOCKADDR_IN;
+typedef struct sockaddr_in FAR *LPSOCKADDR_IN;
+
+typedef struct linger LINGER;
+typedef struct linger *PLINGER;
+typedef struct linger FAR *LPLINGER;
+
+typedef struct in_addr IN_ADDR;
+typedef struct in_addr *PIN_ADDR;
+typedef struct in_addr FAR *LPIN_ADDR;
+
+typedef struct fd_set FD_SET;
+typedef struct fd_set *PFD_SET;
+typedef struct fd_set FAR *LPFD_SET;
+
+typedef struct hostent HOSTENT;
+typedef struct hostent *PHOSTENT;
+typedef struct hostent FAR *LPHOSTENT;
+
+typedef struct servent SERVENT;
+typedef struct servent *PSERVENT;
+typedef struct servent FAR *LPSERVENT;
+
+typedef struct protoent PROTOENT;
+typedef struct protoent *PPROTOENT;
+typedef struct protoent FAR *LPPROTOENT;
+
+typedef struct timeval TIMEVAL;
+typedef struct timeval *PTIMEVAL;
+typedef struct timeval FAR *LPTIMEVAL;
+
+/*
+ * Windows message parameter composition and decomposition
+ * macros.
+ *
+ * WSAMAKEASYNCREPLY is intended for use by the Windows Sockets implementation
+ * when constructing the response to a WSAAsyncGetXByY() routine.
+ */
+#define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
+/*
+ * WSAMAKESELECTREPLY is intended for use by the Windows Sockets implementation
+ * when constructing the response to WSAAsyncSelect().
+ */
+#define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
+/*
+ * WSAGETASYNCBUFLEN is intended for use by the Windows Sockets application
+ * to extract the buffer length from the lParam in the response
+ * to a WSAGetXByY().
+ */
+#define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
+/*
+ * WSAGETASYNCERROR is intended for use by the Windows Sockets application
+ * to extract the error code from the lParam in the response
+ * to a WSAGetXByY().
+ */
+#define WSAGETASYNCERROR(lParam) HIWORD(lParam)
+/*
+ * WSAGETSELECTEVENT is intended for use by the Windows Sockets application
+ * to extract the event code from the lParam in the response
+ * to a WSAAsyncSelect().
+ */
+#define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
+/*
+ * WSAGETSELECTERROR is intended for use by the Windows Sockets application
+ * to extract the error code from the lParam in the response
+ * to a WSAAsyncSelect().
+ */
+#define WSAGETSELECTERROR(lParam) HIWORD(lParam)
+
+#endif /* _WINSOCKAPI_ */
+
+
diff --git a/public/sdk/inc/winsock2.h b/public/sdk/inc/winsock2.h
new file mode 100644
index 000000000..4c5515927
--- /dev/null
+++ b/public/sdk/inc/winsock2.h
@@ -0,0 +1,3597 @@
+/* Winsock2.h -- definitions to be used with the WinSock 2 DLL and
+ * WinSock 2 applications.
+ *
+ * This header file corresponds to version 2.2.x of the WinSock API
+ * specification.
+ *
+ * This file includes parts which are Copyright (c) 1982-1986 Regents
+ * of the University of California. All rights reserved. The
+ * Berkeley Software License Agreement specifies the terms and
+ * conditions for redistribution.
+ */
+
+#ifndef _WINSOCK2API_
+#define _WINSOCK2API_
+#define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */
+
+/*
+ * Ensure structures are packed consistently.
+ */
+
+#include <pshpack4.h>
+
+/*
+ * Default: include function prototypes, don't include function typedefs.
+ */
+
+#ifndef INCL_WINSOCK_API_PROTOTYPES
+#define INCL_WINSOCK_API_PROTOTYPES 1
+#endif
+
+#ifndef INCL_WINSOCK_API_TYPEDEFS
+#define INCL_WINSOCK_API_TYPEDEFS 0
+#endif
+
+/*
+ * Pull in WINDOWS.H if necessary
+ */
+#ifndef _INC_WINDOWS
+#include <windows.h>
+#endif /* _INC_WINDOWS */
+
+/*
+ * Establish DLL function linkage if supported by the current build
+ * environment and not previously defined.
+ */
+
+#ifndef WINSOCK_API_LINKAGE
+#ifdef DECLSPEC_IMPORT
+#define WINSOCK_API_LINKAGE DECLSPEC_IMPORT
+#else
+#define WINSOCK_API_LINKAGE
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Basic system type definitions, taken from the BSD file sys/types.h.
+ */
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+
+/*
+ * The new type to be used in all
+ * instances which refer to sockets.
+ */
+typedef u_int SOCKET;
+
+/*
+ * Select uses arrays of SOCKETs. These macros manipulate such
+ * arrays. FD_SETSIZE may be defined by the user before including
+ * this file, but the default here should be >= 64.
+ *
+ * CAVEAT IMPLEMENTOR and USER: THESE MACROS AND TYPES MUST BE
+ * INCLUDED IN WINSOCK2.H EXACTLY AS SHOWN HERE.
+ */
+#ifndef FD_SETSIZE
+#define FD_SETSIZE 64
+#endif /* FD_SETSIZE */
+
+typedef struct fd_set {
+ u_int fd_count; /* how many are SET? */
+ SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */
+} fd_set;
+
+extern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *);
+
+#define FD_CLR(fd, set) do { \
+ u_int __i; \
+ for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { \
+ if (((fd_set FAR *)(set))->fd_array[__i] == fd) { \
+ while (__i < ((fd_set FAR *)(set))->fd_count-1) { \
+ ((fd_set FAR *)(set))->fd_array[__i] = \
+ ((fd_set FAR *)(set))->fd_array[__i+1]; \
+ __i++; \
+ } \
+ ((fd_set FAR *)(set))->fd_count--; \
+ break; \
+ } \
+ } \
+} while(0)
+
+#define FD_SET(fd, set) do { \
+ u_int __i; \
+ for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
+ if (((fd_set FAR *)(set))->fd_array[__i] == (fd)) { \
+ break; \
+ } \
+ } \
+ if (__i == ((fd_set FAR *)(set))->fd_count) { \
+ if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) { \
+ ((fd_set FAR *)(set))->fd_array[__i] = (fd); \
+ ((fd_set FAR *)(set))->fd_count++; \
+ } \
+ } \
+} while(0)
+
+#define FD_ZERO(set) (((fd_set FAR *)(set))->fd_count=0)
+
+#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set))
+
+/*
+ * Structure used in select() call, taken from the BSD file sys/time.h.
+ */
+struct timeval {
+ long tv_sec; /* seconds */
+ long tv_usec; /* and microseconds */
+};
+
+/*
+ * Operations on timevals.
+ *
+ * NB: timercmp does not work for >= or <=.
+ */
+#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+#define timercmp(tvp, uvp, cmp) \
+ ((tvp)->tv_sec cmp (uvp)->tv_sec || \
+ (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
+#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
+
+/*
+ * Commands for ioctlsocket(), taken from the BSD file fcntl.h.
+ *
+ *
+ * Ioctl's have the command encoded in the lower word,
+ * and the size of any in or out parameters in the upper
+ * word. The high 2 bits of the upper word are used
+ * to encode the in/out status of the parameter; for now
+ * we restrict parameters to at most 128 bytes.
+ */
+#define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */
+#define IOC_VOID 0x20000000 /* no parameters */
+#define IOC_OUT 0x40000000 /* copy out parameters */
+#define IOC_IN 0x80000000 /* copy in parameters */
+#define IOC_INOUT (IOC_IN|IOC_OUT)
+ /* 0x20000000 distinguishes new &
+ old ioctl's */
+#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
+
+#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+
+#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+
+#define FIONREAD _IOR('f', 127, u_long) /* get # bytes to read */
+#define FIONBIO _IOW('f', 126, u_long) /* set/clear non-blocking i/o */
+#define FIOASYNC _IOW('f', 125, u_long) /* set/clear async i/o */
+
+/* Socket I/O Controls */
+#define SIOCSHIWAT _IOW('s', 0, u_long) /* set high watermark */
+#define SIOCGHIWAT _IOR('s', 1, u_long) /* get high watermark */
+#define SIOCSLOWAT _IOW('s', 2, u_long) /* set low watermark */
+#define SIOCGLOWAT _IOR('s', 3, u_long) /* get low watermark */
+#define SIOCATMARK _IOR('s', 7, u_long) /* at oob mark? */
+
+/*
+ * Structures returned by network data base library, taken from the
+ * BSD file netdb.h. All addresses are supplied in host order, and
+ * returned in network order (suitable for use in system calls).
+ */
+
+struct hostent {
+ char FAR * h_name; /* official name of host */
+ char FAR * FAR * h_aliases; /* alias list */
+ short h_addrtype; /* host address type */
+ short h_length; /* length of address */
+ char FAR * FAR * h_addr_list; /* list of addresses */
+#define h_addr h_addr_list[0] /* address, for backward compat */
+};
+
+/*
+ * It is assumed here that a network number
+ * fits in 32 bits.
+ */
+struct netent {
+ char FAR * n_name; /* official name of net */
+ char FAR * FAR * n_aliases; /* alias list */
+ short n_addrtype; /* net address type */
+ u_long n_net; /* network # */
+};
+
+struct servent {
+ char FAR * s_name; /* official service name */
+ char FAR * FAR * s_aliases; /* alias list */
+ short s_port; /* port # */
+ char FAR * s_proto; /* protocol to use */
+};
+
+struct protoent {
+ char FAR * p_name; /* official protocol name */
+ char FAR * FAR * p_aliases; /* alias list */
+ short p_proto; /* protocol # */
+};
+
+/*
+ * Constants and structures defined by the internet system,
+ * Per RFC 790, September 1981, taken from the BSD file netinet/in.h.
+ */
+
+/*
+ * Protocols
+ */
+#define IPPROTO_IP 0 /* dummy for IP */
+#define IPPROTO_ICMP 1 /* control message protocol */
+#define IPPROTO_IGMP 2 /* internet group management protocol */
+#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
+#define IPPROTO_TCP 6 /* tcp */
+#define IPPROTO_PUP 12 /* pup */
+#define IPPROTO_UDP 17 /* user datagram protocol */
+#define IPPROTO_IDP 22 /* xns idp */
+#define IPPROTO_ND 77 /* UNOFFICIAL net disk proto */
+
+#define IPPROTO_RAW 255 /* raw IP packet */
+#define IPPROTO_MAX 256
+
+/*
+ * Port/socket numbers: network standard functions
+ */
+#define IPPORT_ECHO 7
+#define IPPORT_DISCARD 9
+#define IPPORT_SYSTAT 11
+#define IPPORT_DAYTIME 13
+#define IPPORT_NETSTAT 15
+#define IPPORT_FTP 21
+#define IPPORT_TELNET 23
+#define IPPORT_SMTP 25
+#define IPPORT_TIMESERVER 37
+#define IPPORT_NAMESERVER 42
+#define IPPORT_WHOIS 43
+#define IPPORT_MTP 57
+
+/*
+ * Port/socket numbers: host specific functions
+ */
+#define IPPORT_TFTP 69
+#define IPPORT_RJE 77
+#define IPPORT_FINGER 79
+#define IPPORT_TTYLINK 87
+#define IPPORT_SUPDUP 95
+
+/*
+ * UNIX TCP sockets
+ */
+#define IPPORT_EXECSERVER 512
+#define IPPORT_LOGINSERVER 513
+#define IPPORT_CMDSERVER 514
+#define IPPORT_EFSSERVER 520
+
+/*
+ * UNIX UDP sockets
+ */
+#define IPPORT_BIFFUDP 512
+#define IPPORT_WHOSERVER 513
+#define IPPORT_ROUTESERVER 520
+ /* 520+1 also used */
+
+/*
+ * Ports < IPPORT_RESERVED are reserved for
+ * privileged processes (e.g. root).
+ */
+#define IPPORT_RESERVED 1024
+
+/*
+ * Link numbers
+ */
+#define IMPLINK_IP 155
+#define IMPLINK_LOWEXPER 156
+#define IMPLINK_HIGHEXPER 158
+
+/*
+ * Internet address (old style... should be updated)
+ */
+struct in_addr {
+ union {
+ struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
+ struct { u_short s_w1,s_w2; } S_un_w;
+ u_long S_addr;
+ } S_un;
+#define s_addr S_un.S_addr
+ /* can be used for most tcp & ip code */
+#define s_host S_un.S_un_b.s_b2
+ /* host on imp */
+#define s_net S_un.S_un_b.s_b1
+ /* network */
+#define s_imp S_un.S_un_w.s_w2
+ /* imp */
+#define s_impno S_un.S_un_b.s_b4
+ /* imp # */
+#define s_lh S_un.S_un_b.s_b3
+ /* logical host */
+};
+
+/*
+ * Definitions of bits in internet address integers.
+ * On subnets, the decomposition of addresses to host and net parts
+ * is done according to subnet mask, not the masks here.
+ */
+#define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)
+#define IN_CLASSA_NET 0xff000000
+#define IN_CLASSA_NSHIFT 24
+#define IN_CLASSA_HOST 0x00ffffff
+#define IN_CLASSA_MAX 128
+
+#define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000)
+#define IN_CLASSB_NET 0xffff0000
+#define IN_CLASSB_NSHIFT 16
+#define IN_CLASSB_HOST 0x0000ffff
+#define IN_CLASSB_MAX 65536
+
+#define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000)
+#define IN_CLASSC_NET 0xffffff00
+#define IN_CLASSC_NSHIFT 8
+#define IN_CLASSC_HOST 0x000000ff
+
+#define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
+#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
+#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
+#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
+#define IN_MULTICAST(i) IN_CLASSD(i)
+
+#define INADDR_ANY (u_long)0x00000000
+#define INADDR_LOOPBACK 0x7f000001
+#define INADDR_BROADCAST (u_long)0xffffffff
+#define INADDR_NONE 0xffffffff
+
+#define ADDR_ANY INADDR_ANY
+
+/*
+ * Socket address, internet style.
+ */
+struct sockaddr_in {
+ short sin_family;
+ u_short sin_port;
+ struct in_addr sin_addr;
+ char sin_zero[8];
+};
+
+#define WSADESCRIPTION_LEN 256
+#define WSASYS_STATUS_LEN 128
+
+typedef struct WSAData {
+ WORD wVersion;
+ WORD wHighVersion;
+ char szDescription[WSADESCRIPTION_LEN+1];
+ char szSystemStatus[WSASYS_STATUS_LEN+1];
+ unsigned short iMaxSockets;
+ unsigned short iMaxUdpDg;
+ char FAR * lpVendorInfo;
+} WSADATA, FAR * LPWSADATA;
+
+#if !defined(MAKEWORD)
+#define MAKEWORD(low,high) \
+ ((WORD)((BYTE)(low)) | (((WORD)(BYTE)(high))<<8)))
+#endif
+
+/*
+ * Definitions related to sockets: types, address families, options,
+ * taken from the BSD file sys/socket.h.
+ */
+
+/*
+ * This is used instead of -1, since the
+ * SOCKET type is unsigned.
+ */
+#define INVALID_SOCKET (SOCKET)(~0)
+#define SOCKET_ERROR (-1)
+
+/*
+ * The following may be used in place of the address family, socket type, or
+ * protocol in a call to WSASocket to indicate that the corresponding value
+ * should be taken from the supplied WSAPROTOCOL_INFO structure instead of the
+ * parameter itself.
+ */
+#define FROM_PROTOCOL_INFO (-1)
+
+/*
+ * Types
+ */
+#define SOCK_STREAM 1 /* stream socket */
+#define SOCK_DGRAM 2 /* datagram socket */
+#define SOCK_RAW 3 /* raw-protocol interface */
+#define SOCK_RDM 4 /* reliably-delivered message */
+#define SOCK_SEQPACKET 5 /* sequenced packet stream */
+
+/*
+ * Option flags per-socket.
+ */
+#define SO_DEBUG 0x0001 /* turn on debugging info recording */
+#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */
+#define SO_REUSEADDR 0x0004 /* allow local address reuse */
+#define SO_KEEPALIVE 0x0008 /* keep connections alive */
+#define SO_DONTROUTE 0x0010 /* just use interface addresses */
+#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */
+#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */
+#define SO_LINGER 0x0080 /* linger on close if data present */
+#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */
+
+#define SO_DONTLINGER (int)(~SO_LINGER)
+
+/*
+ * Additional options.
+ */
+#define SO_SNDBUF 0x1001 /* send buffer size */
+#define SO_RCVBUF 0x1002 /* receive buffer size */
+#define SO_SNDLOWAT 0x1003 /* send low-water mark */
+#define SO_RCVLOWAT 0x1004 /* receive low-water mark */
+#define SO_SNDTIMEO 0x1005 /* send timeout */
+#define SO_RCVTIMEO 0x1006 /* receive timeout */
+#define SO_ERROR 0x1007 /* get error status and clear */
+#define SO_TYPE 0x1008 /* get socket type */
+
+/*
+ * WinSock 2 extension -- new options
+ */
+#define SO_GROUP_ID 0x2001 /* ID of a socket group */
+#define SO_GROUP_PRIORITY 0x2002 /* the relative priority within a group*/
+#define SO_MAX_MSG_SIZE 0x2003 /* maximum message size */
+#define SO_PROTOCOL_INFOA 0x2004 /* WSAPROTOCOL_INFOA structure */
+#define SO_PROTOCOL_INFOW 0x2005 /* WSAPROTOCOL_INFOW structure */
+#ifdef UNICODE
+#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW
+#else
+#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
+#endif /* UNICODE */
+#define PVD_CONFIG 0x3001 /* configuration info for service provider */
+
+/*
+ * TCP options.
+ */
+#define TCP_NODELAY 0x0001
+
+/*
+ * Address families.
+ */
+#define AF_UNSPEC 0 /* unspecified */
+/*
+ * Although AF_UNSPEC is defined for backwards compatibility, using
+ * AF_UNSPEC for the "af" parameter when creating a socket is STRONGLY
+ * DISCOURAGED. The interpretation of the "protocol" parameter
+ * depends on the actual address family chosen. As environments grow
+ * to include more and more address families that use overlapping
+ * protocol values there is more and more chance of choosing an
+ * undesired address family when AF_UNSPEC is used.
+ */
+#define AF_UNIX 1 /* local to host (pipes, portals) */
+#define AF_INET 2 /* internetwork: UDP, TCP, etc. */
+#define AF_IMPLINK 3 /* arpanet imp addresses */
+#define AF_PUP 4 /* pup protocols: e.g. BSP */
+#define AF_CHAOS 5 /* mit CHAOS protocols */
+#define AF_NS 6 /* XEROX NS protocols */
+#define AF_IPX AF_NS /* IPX protocols: IPX, SPX, etc. */
+#define AF_ISO 7 /* ISO protocols */
+#define AF_OSI AF_ISO /* OSI is ISO */
+#define AF_ECMA 8 /* european computer manufacturers */
+#define AF_DATAKIT 9 /* datakit protocols */
+#define AF_CCITT 10 /* CCITT protocols, X.25 etc */
+#define AF_SNA 11 /* IBM SNA */
+#define AF_DECnet 12 /* DECnet */
+#define AF_DLI 13 /* Direct data link interface */
+#define AF_LAT 14 /* LAT */
+#define AF_HYLINK 15 /* NSC Hyperchannel */
+#define AF_APPLETALK 16 /* AppleTalk */
+#define AF_NETBIOS 17 /* NetBios-style addresses */
+#define AF_VOICEVIEW 18 /* VoiceView */
+#define AF_FIREFOX 19 /* Protocols from Firefox */
+#define AF_UNKNOWN1 20 /* Somebody is using this! */
+#define AF_BAN 21 /* Banyan */
+#define AF_ATM 22 /* Native ATM Services */
+#define AF_INET6 23 /* Internetwork Version 6 */
+
+#define AF_MAX 24
+
+/*
+ * Structure used by kernel to store most
+ * addresses.
+ */
+struct sockaddr {
+ u_short sa_family; /* address family */
+ char sa_data[14]; /* up to 14 bytes of direct address */
+};
+
+/*
+ * Structure used by kernel to pass protocol
+ * information in raw sockets.
+ */
+struct sockproto {
+ u_short sp_family; /* address family */
+ u_short sp_protocol; /* protocol */
+};
+
+/*
+ * Protocol families, same as address families for now.
+ */
+#define PF_UNSPEC AF_UNSPEC
+#define PF_UNIX AF_UNIX
+#define PF_INET AF_INET
+#define PF_IMPLINK AF_IMPLINK
+#define PF_PUP AF_PUP
+#define PF_CHAOS AF_CHAOS
+#define PF_NS AF_NS
+#define PF_IPX AF_IPX
+#define PF_ISO AF_ISO
+#define PF_OSI AF_OSI
+#define PF_ECMA AF_ECMA
+#define PF_DATAKIT AF_DATAKIT
+#define PF_CCITT AF_CCITT
+#define PF_SNA AF_SNA
+#define PF_DECnet AF_DECnet
+#define PF_DLI AF_DLI
+#define PF_LAT AF_LAT
+#define PF_HYLINK AF_HYLINK
+#define PF_APPLETALK AF_APPLETALK
+#define PF_VOICEVIEW AF_VOICEVIEW
+#define PF_FIREFOX AF_FIREFOX
+#define PF_UNKNOWN1 AF_UNKNOWN1
+#define PF_BAN AF_BAN
+#define PF_ATM AF_ATM
+#define PF_INET6 AF_INET6
+
+#define PF_MAX AF_MAX
+
+/*
+ * Structure used for manipulating linger option.
+ */
+struct linger {
+ u_short l_onoff; /* option on/off */
+ u_short l_linger; /* linger time */
+};
+
+/*
+ * Level number for (get/set)sockopt() to apply to socket itself.
+ */
+#define SOL_SOCKET 0xffff /* options for socket level */
+
+/*
+ * Maximum queue length specifiable by listen.
+ */
+#define SOMAXCONN 0x7fffffff
+
+#define MSG_OOB 0x1 /* process out-of-band data */
+#define MSG_PEEK 0x2 /* peek at incoming message */
+#define MSG_DONTROUTE 0x4 /* send without using routing tables */
+
+#define MSG_PARTIAL 0x8000 /* partial send or recv for message xport */
+
+/*
+ * WinSock 2 extension -- new flags for WSASend(), WSASendTo(), WSARecv() and
+ * WSARecvFrom()
+ */
+#define MSG_INTERRUPT 0x10 /* send/recv in the interrupt context */
+
+#define MSG_MAXIOVLEN 16
+
+/*
+ * Define constant based on rfc883, used by gethostbyxxxx() calls.
+ */
+#define MAXGETHOSTSTRUCT 1024
+
+/*
+ * WinSock 2 extension -- bit values and indices for FD_XXX network events
+ */
+#define FD_READ_BIT 0
+#define FD_READ (1 << FD_READ_BIT)
+
+#define FD_WRITE_BIT 1
+#define FD_WRITE (1 << FD_WRITE_BIT)
+
+#define FD_OOB_BIT 2
+#define FD_OOB (1 << FD_OOB_BIT)
+
+#define FD_ACCEPT_BIT 3
+#define FD_ACCEPT (1 << FD_ACCEPT_BIT)
+
+#define FD_CONNECT_BIT 4
+#define FD_CONNECT (1 << FD_CONNECT_BIT)
+
+#define FD_CLOSE_BIT 5
+#define FD_CLOSE (1 << FD_CLOSE_BIT)
+
+#define FD_QOS_BIT 6
+#define FD_QOS (1 << FD_QOS_BIT)
+
+#define FD_GROUP_QOS_BIT 7
+#define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
+
+#define FD_MAX_EVENTS 8
+#define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
+
+
+/*
+ * All Windows Sockets error constants are biased by WSABASEERR from
+ * the "normal"
+ */
+#define WSABASEERR 10000
+/*
+ * Windows Sockets definitions of regular Microsoft C error constants
+ */
+#define WSAEINTR (WSABASEERR+4)
+#define WSAEBADF (WSABASEERR+9)
+#define WSAEACCES (WSABASEERR+13)
+#define WSAEFAULT (WSABASEERR+14)
+#define WSAEINVAL (WSABASEERR+22)
+#define WSAEMFILE (WSABASEERR+24)
+
+/*
+ * Windows Sockets definitions of regular Berkeley error constants
+ */
+#define WSAEWOULDBLOCK (WSABASEERR+35)
+#define WSAEINPROGRESS (WSABASEERR+36)
+#define WSAEALREADY (WSABASEERR+37)
+#define WSAENOTSOCK (WSABASEERR+38)
+#define WSAEDESTADDRREQ (WSABASEERR+39)
+#define WSAEMSGSIZE (WSABASEERR+40)
+#define WSAEPROTOTYPE (WSABASEERR+41)
+#define WSAENOPROTOOPT (WSABASEERR+42)
+#define WSAEPROTONOSUPPORT (WSABASEERR+43)
+#define WSAESOCKTNOSUPPORT (WSABASEERR+44)
+#define WSAEOPNOTSUPP (WSABASEERR+45)
+#define WSAEPFNOSUPPORT (WSABASEERR+46)
+#define WSAEAFNOSUPPORT (WSABASEERR+47)
+#define WSAEADDRINUSE (WSABASEERR+48)
+#define WSAEADDRNOTAVAIL (WSABASEERR+49)
+#define WSAENETDOWN (WSABASEERR+50)
+#define WSAENETUNREACH (WSABASEERR+51)
+#define WSAENETRESET (WSABASEERR+52)
+#define WSAECONNABORTED (WSABASEERR+53)
+#define WSAECONNRESET (WSABASEERR+54)
+#define WSAENOBUFS (WSABASEERR+55)
+#define WSAEISCONN (WSABASEERR+56)
+#define WSAENOTCONN (WSABASEERR+57)
+#define WSAESHUTDOWN (WSABASEERR+58)
+#define WSAETOOMANYREFS (WSABASEERR+59)
+#define WSAETIMEDOUT (WSABASEERR+60)
+#define WSAECONNREFUSED (WSABASEERR+61)
+#define WSAELOOP (WSABASEERR+62)
+#define WSAENAMETOOLONG (WSABASEERR+63)
+#define WSAEHOSTDOWN (WSABASEERR+64)
+#define WSAEHOSTUNREACH (WSABASEERR+65)
+#define WSAENOTEMPTY (WSABASEERR+66)
+#define WSAEPROCLIM (WSABASEERR+67)
+#define WSAEUSERS (WSABASEERR+68)
+#define WSAEDQUOT (WSABASEERR+69)
+#define WSAESTALE (WSABASEERR+70)
+#define WSAEREMOTE (WSABASEERR+71)
+
+/*
+ * Extended Windows Sockets error constant definitions
+ */
+#define WSASYSNOTREADY (WSABASEERR+91)
+#define WSAVERNOTSUPPORTED (WSABASEERR+92)
+#define WSANOTINITIALISED (WSABASEERR+93)
+#define WSAEDISCON (WSABASEERR+101)
+#define WSAENOMORE (WSABASEERR+102)
+#define WSAECANCELLED (WSABASEERR+103)
+#define WSAEINVALIDPROCTABLE (WSABASEERR+104)
+#define WSAEINVALIDPROVIDER (WSABASEERR+105)
+#define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
+#define WSASYSCALLFAILURE (WSABASEERR+107)
+#define WSASERVICE_NOT_FOUND (WSABASEERR+108)
+#define WSATYPE_NOT_FOUND (WSABASEERR+109)
+#define WSA_E_NO_MORE (WSABASEERR+110)
+#define WSA_E_CANCELLED (WSABASEERR+111)
+#define WSAEREFUSED (WSABASEERR+112)
+
+/*
+ * Error return codes from gethostbyname() and gethostbyaddr()
+ * (when using the resolver). Note that these errors are
+ * retrieved via WSAGetLastError() and must therefore follow
+ * the rules for avoiding clashes with error numbers from
+ * specific implementations or language run-time systems.
+ * For this reason the codes are based at WSABASEERR+1001.
+ * Note also that [WSA]NO_ADDRESS is defined only for
+ * compatibility purposes.
+ */
+
+#define h_errno WSAGetLastError()
+
+/* Authoritative Answer: Host not found */
+#define WSAHOST_NOT_FOUND (WSABASEERR+1001)
+#define HOST_NOT_FOUND WSAHOST_NOT_FOUND
+
+/* Non-Authoritative: Host not found, or SERVERFAIL */
+#define WSATRY_AGAIN (WSABASEERR+1002)
+#define TRY_AGAIN WSATRY_AGAIN
+
+/* Non-recoverable errors, FORMERR, REFUSED, NOTIMP */
+#define WSANO_RECOVERY (WSABASEERR+1003)
+#define NO_RECOVERY WSANO_RECOVERY
+
+/* Valid name, no data record of requested type */
+#define WSANO_DATA (WSABASEERR+1004)
+#define NO_DATA WSANO_DATA
+
+/* no address, look for MX record */
+#define WSANO_ADDRESS WSANO_DATA
+#define NO_ADDRESS WSANO_ADDRESS
+
+/*
+ * Windows Sockets errors redefined as regular Berkeley error constants.
+ * These are commented out in Windows NT to avoid conflicts with errno.h.
+ * Use the WSA constants instead.
+ */
+#if 0
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define EINPROGRESS WSAEINPROGRESS
+#define EALREADY WSAEALREADY
+#define ENOTSOCK WSAENOTSOCK
+#define EDESTADDRREQ WSAEDESTADDRREQ
+#define EMSGSIZE WSAEMSGSIZE
+#define EPROTOTYPE WSAEPROTOTYPE
+#define ENOPROTOOPT WSAENOPROTOOPT
+#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
+#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
+#define EOPNOTSUPP WSAEOPNOTSUPP
+#define EPFNOSUPPORT WSAEPFNOSUPPORT
+#define EAFNOSUPPORT WSAEAFNOSUPPORT
+#define EADDRINUSE WSAEADDRINUSE
+#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+#define ENETDOWN WSAENETDOWN
+#define ENETUNREACH WSAENETUNREACH
+#define ENETRESET WSAENETRESET
+#define ECONNABORTED WSAECONNABORTED
+#define ECONNRESET WSAECONNRESET
+#define ENOBUFS WSAENOBUFS
+#define EISCONN WSAEISCONN
+#define ENOTCONN WSAENOTCONN
+#define ESHUTDOWN WSAESHUTDOWN
+#define ETOOMANYREFS WSAETOOMANYREFS
+#define ETIMEDOUT WSAETIMEDOUT
+#define ECONNREFUSED WSAECONNREFUSED
+#define ELOOP WSAELOOP
+#define ENAMETOOLONG WSAENAMETOOLONG
+#define EHOSTDOWN WSAEHOSTDOWN
+#define EHOSTUNREACH WSAEHOSTUNREACH
+#define ENOTEMPTY WSAENOTEMPTY
+#define EPROCLIM WSAEPROCLIM
+#define EUSERS WSAEUSERS
+#define EDQUOT WSAEDQUOT
+#define ESTALE WSAESTALE
+#define EREMOTE WSAEREMOTE
+#endif
+
+/*
+ * WinSock 2 extension -- new error codes and type definition
+ */
+
+#ifdef WIN32
+
+#define WSAAPI FAR PASCAL
+#define WSAEVENT HANDLE
+#define LPWSAEVENT LPHANDLE
+#define WSAOVERLAPPED OVERLAPPED
+typedef struct _OVERLAPPED * LPWSAOVERLAPPED;
+
+#define WSA_IO_PENDING (ERROR_IO_PENDING)
+#define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
+#define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
+#define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
+#define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
+#define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
+
+#define WSA_INVALID_EVENT ((WSAEVENT)NULL)
+#define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
+#define WSA_WAIT_FAILED ((DWORD)-1L)
+#define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
+#define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
+#define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
+#define WSA_INFINITE (INFINITE)
+
+#else /* WIN16 */
+
+#define WSAAPI FAR PASCAL
+typedef DWORD WSAEVENT, FAR * LPWSAEVENT;
+
+typedef struct _WSAOVERLAPPED {
+ DWORD Internal;
+ DWORD InternalHigh;
+ DWORD Offset;
+ DWORD OffsetHigh;
+ WSAEVENT hEvent;
+} WSAOVERLAPPED, FAR * LPWSAOVERLAPPED;
+
+#define WSA_IO_PENDING (WSAEWOULDBLOCK)
+#define WSA_IO_INCOMPLETE (WSAEWOULDBLOCK)
+#define WSA_INVALID_HANDLE (WSAENOTSOCK)
+#define WSA_INVALID_PARAMETER (WSAEINVAL)
+#define WSA_NOT_ENOUGH_MEMORY (WSAENOBUFS)
+#define WSA_OPERATION_ABORTED (WSAEINTR)
+
+#define WSA_INVALID_EVENT ((WSAEVENT)NULL)
+#define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
+#define WSA_WAIT_FAILED ((DWORD)-1L)
+#define WSA_WAIT_EVENT_0 ((DWORD)0)
+#define WSA_WAIT_TIMEOUT ((DWORD)0x102L)
+#define WSA_INFINITE ((DWORD)-1L)
+
+#endif /* WIN32 */
+
+/*
+ * WinSock 2 extension -- WSABUF and QOS struct
+ */
+
+typedef struct _WSABUF {
+ u_long len; /* the length of the buffer */
+ char FAR * buf; /* the pointer to the buffer */
+} WSABUF, FAR * LPWSABUF;
+
+typedef enum
+{
+ BestEffortService,
+ ControlledLoadService,
+ PredictiveService,
+ GuaranteedDelayService,
+ GuaranteedService
+} GUARANTEE;
+
+typedef long int32;
+
+typedef struct _flowspec
+{
+ int32 TokenRate; /* In Bytes/sec */
+ int32 TokenBucketSize; /* In Bytes */
+ int32 PeakBandwidth; /* In Bytes/sec */
+ int32 Latency; /* In microseconds */
+ int32 DelayVariation; /* In microseconds */
+ GUARANTEE LevelOfGuarantee; /* Guaranteed, Predictive */
+ /* or Best Effort */
+ int32 CostOfCall; /* Reserved for future use, */
+ /* must be set to 0 now */
+ int32 NetworkAvailability; /* read-only: */
+ /* 1 if accessible, */
+ /* 0 if not */
+} FLOWSPEC, FAR * LPFLOWSPEC;
+
+typedef struct _QualityOfService
+{
+ FLOWSPEC SendingFlowspec; /* the flow spec for data sending */
+ FLOWSPEC ReceivingFlowspec; /* the flow spec for data receiving */
+ WSABUF ProviderSpecific; /* additional provider specific stuff */
+} QOS, FAR * LPQOS;
+
+/*
+ * WinSock 2 extension -- manifest constants for return values of the condition function
+ */
+#define CF_ACCEPT 0x0000
+#define CF_REJECT 0x0001
+#define CF_DEFER 0x0002
+
+/*
+ * WinSock 2 extension -- manifest constants for shutdown()
+ */
+#define SD_RECEIVE 0x00
+#define SD_SEND 0x01
+#define SD_BOTH 0x02
+
+/*
+ * WinSock 2 extension -- data type and manifest constants for socket groups
+ */
+typedef unsigned int GROUP;
+
+#define SG_UNCONSTRAINED_GROUP 0x01
+#define SG_CONSTRAINED_GROUP 0x02
+
+/*
+ * WinSock 2 extension -- data type for WSAEnumNetworkEvents()
+ */
+typedef struct _WSANETWORKEVENTS {
+ long lNetworkEvents;
+ int iErrorCode[FD_MAX_EVENTS];
+} WSANETWORKEVENTS, FAR * LPWSANETWORKEVENTS;
+
+/*
+ * WinSock 2 extension -- WSAPROTOCOL_INFO structure and associated
+ * manifest constants
+ */
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#ifndef __LPGUID_DEFINED__
+#define __LPGUID_DEFINED__
+typedef GUID *LPGUID;
+#endif
+
+#define MAX_PROTOCOL_CHAIN 7
+
+#define BASE_PROTOCOL 1
+#define LAYERED_PROTOCOL 0
+
+typedef struct _WSAPROTOCOLCHAIN {
+ int ChainLen; /* the length of the chain, */
+ /* length = 0 means layered protocol, */
+ /* length = 1 means base protocol, */
+ /* length > 1 means protocol chain */
+ DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; /* a list of dwCatalogEntryIds */
+} WSAPROTOCOLCHAIN, FAR * LPWSAPROTOCOLCHAIN;
+
+#define WSAPROTOCOL_LEN 255
+
+typedef struct _WSAPROTOCOL_INFOA {
+ DWORD dwServiceFlags1;
+ DWORD dwServiceFlags2;
+ DWORD dwServiceFlags3;
+ DWORD dwServiceFlags4;
+ DWORD dwProviderFlags;
+ GUID ProviderId;
+ DWORD dwCatalogEntryId;
+ WSAPROTOCOLCHAIN ProtocolChain;
+ int iVersion;
+ int iAddressFamily;
+ int iMaxSockAddr;
+ int iMinSockAddr;
+ int iSocketType;
+ int iProtocol;
+ int iProtocolMaxOffset;
+ int iNetworkByteOrder;
+ int iSecurityScheme;
+ DWORD dwMessageSize;
+ DWORD dwProviderReserved;
+ CHAR szProtocol[WSAPROTOCOL_LEN+1];
+} WSAPROTOCOL_INFOA, FAR * LPWSAPROTOCOL_INFOA;
+typedef struct _WSAPROTOCOL_INFOW {
+ DWORD dwServiceFlags1;
+ DWORD dwServiceFlags2;
+ DWORD dwServiceFlags3;
+ DWORD dwServiceFlags4;
+ DWORD dwProviderFlags;
+ GUID ProviderId;
+ DWORD dwCatalogEntryId;
+ WSAPROTOCOLCHAIN ProtocolChain;
+ int iVersion;
+ int iAddressFamily;
+ int iMaxSockAddr;
+ int iMinSockAddr;
+ int iSocketType;
+ int iProtocol;
+ int iProtocolMaxOffset;
+ int iNetworkByteOrder;
+ int iSecurityScheme;
+ DWORD dwMessageSize;
+ DWORD dwProviderReserved;
+ WCHAR szProtocol[WSAPROTOCOL_LEN+1];
+} WSAPROTOCOL_INFOW, FAR * LPWSAPROTOCOL_INFOW;
+#ifdef UNICODE
+typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO;
+typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO;
+#else
+typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
+typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
+#endif // UNICODE
+
+/* Flag bit definitions for dwProviderFlags */
+#define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
+#define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
+#define PFL_HIDDEN 0x00000004
+#define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
+
+/* Flag bit definitions for dwServiceFlags1 */
+#define XP1_CONNECTIONLESS 0x00000001
+#define XP1_GUARANTEED_DELIVERY 0x00000002
+#define XP1_GUARANTEED_ORDER 0x00000004
+#define XP1_MESSAGE_ORIENTED 0x00000008
+#define XP1_PSEUDO_STREAM 0x00000010
+#define XP1_GRACEFUL_CLOSE 0x00000020
+#define XP1_EXPEDITED_DATA 0x00000040
+#define XP1_CONNECT_DATA 0x00000080
+#define XP1_DISCONNECT_DATA 0x00000100
+#define XP1_SUPPORT_BROADCAST 0x00000200
+#define XP1_SUPPORT_MULTIPOINT 0x00000400
+#define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
+#define XP1_MULTIPOINT_DATA_PLANE 0x00001000
+#define XP1_QOS_SUPPORTED 0x00002000
+#define XP1_INTERRUPT 0x00004000
+#define XP1_UNI_SEND 0x00008000
+#define XP1_UNI_RECV 0x00010000
+#define XP1_IFS_HANDLES 0x00020000
+#define XP1_PARTIAL_MESSAGE 0x00040000
+
+#define BIGENDIAN 0x0000
+#define LITTLEENDIAN 0x0001
+
+#define SECURITY_PROTOCOL_NONE 0x0000
+
+/*
+ * WinSock 2 extension -- manifest constants for WSAJoinLeaf()
+ */
+#define JL_SENDER_ONLY 0x01
+#define JL_RECEIVER_ONLY 0x02
+#define JL_BOTH 0x04
+
+/*
+ * WinSock 2 extension -- manifest constants for WSASocket()
+ */
+#define WSA_FLAG_OVERLAPPED 0x01
+#define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
+#define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
+#define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
+#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
+
+/*
+ * WinSock 2 extension -- manifest constants for WSAIoctl()
+ */
+#define IOC_UNIX 0x00000000
+#define IOC_WS2 0x08000000
+#define IOC_PROTOCOL 0x10000000
+#define IOC_VENDOR 0x18000000
+
+#define _WSAIO(x,y) (IOC_VOID|(x)|(y))
+#define _WSAIOR(x,y) (IOC_OUT|(x)|(y))
+#define _WSAIOW(x,y) (IOC_IN|(x)|(y))
+#define _WSAIORW(x,y) (IOC_INOUT|(x)|(y))
+
+#define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1)
+#define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2)
+#define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3)
+#define SIO_FLUSH _WSAIO(IOC_WS2,4)
+#define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5)
+#define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6)
+#define SIO_GET_QOS _WSAIORW(IOC_WS2,7)
+#define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8)
+#define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9)
+#define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10)
+#define SIO_SET_QOS _WSAIOW(IOC_WS2,11)
+#define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12)
+#define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13)
+
+/*
+ * WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl
+ */
+#define TH_NETDEV 0x00000001
+#define TH_TAPI 0x00000002
+
+
+/*
+ * Microsoft Windows Extended data types required for the functions to
+ * convert back and forth between binary and string forms of
+ * addresses.
+ */
+typedef struct sockaddr SOCKADDR;
+typedef struct sockaddr *PSOCKADDR;
+typedef struct sockaddr FAR *LPSOCKADDR;
+
+/*
+ * Manifest constants and type definitions related to name resolution and
+ * registration (RNR) API
+ */
+
+#ifndef _tagBLOB_DEFINED
+#define _tagBLOB_DEFINED
+#define _BLOB_DEFINED
+#define _LPBLOB_DEFINED
+typedef struct _BLOB {
+ ULONG cbSize ;
+#ifdef MIDL_PASS
+ [size_is(cbSize)] BYTE *pBlobData;
+#else /* MIDL_PASS */
+ BYTE *pBlobData ;
+#endif /* MIDL_PASS */
+} BLOB, *LPBLOB ;
+#endif
+
+/*
+ * Service Install Flags
+ */
+
+#define SERVICE_MULTIPLE (0x00000001)
+
+/*
+ *& Name Spaces
+ */
+
+#define NS_ALL (0)
+
+#define NS_SAP (1)
+#define NS_NDS (2)
+#define NS_PEER_BROWSE (3)
+
+#define NS_TCPIP_LOCAL (10)
+#define NS_TCPIP_HOSTS (11)
+#define NS_DNS (12)
+#define NS_NETBT (13)
+#define NS_WINS (14)
+
+#define NS_NBP (20)
+
+#define NS_MS (30)
+#define NS_STDA (31)
+#define NS_CAIRO (32)
+
+#define NS_X500 (40)
+#define NS_NIS (41)
+#define NS_NISPLUS (42)
+
+#define NS_WRQ (50)
+
+/*
+ * Resolution flags for WSAGetAddressByName().
+ * Note these are also used by the 1.1 API GetAddressByName, so
+ * leave them around.
+ */
+#define RES_UNUSED_1 (0x00000001)
+#define RES_FLUSH_CACHE (0x00000002)
+#ifndef RES_SERVICE
+#define RES_SERVICE (0x00000004)
+#endif /* RES_SERVICE */
+
+/*
+ * Well known value names for Service Types
+ */
+
+#define SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket"
+#define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket"
+#define SERVICE_TYPE_VALUE_SAPIDA "SapId"
+#define SERVICE_TYPE_VALUE_SAPIDW L"SapId"
+
+#define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
+#define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
+
+#define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
+#define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
+
+#define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId"
+#define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId"
+
+#ifdef UNICODE
+
+#define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDW
+#define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTW
+#define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTW
+#define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDW
+
+#else /* not UNICODE */
+
+#define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDA
+#define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTA
+#define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTA
+#define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDA
+
+#endif
+
+#ifndef __CSADDR_DEFINED__
+#define __CSADDR_DEFINED__
+
+
+/*
+ * SockAddr Information
+ */
+typedef struct _SOCKET_ADDRESS {
+ LPSOCKADDR lpSockaddr ;
+ INT iSockaddrLength ;
+} SOCKET_ADDRESS, *PSOCKET_ADDRESS, FAR * LPSOCKET_ADDRESS ;
+
+/*
+ * CSAddr Information
+ */
+typedef struct _CSADDR_INFO {
+ SOCKET_ADDRESS LocalAddr ;
+ SOCKET_ADDRESS RemoteAddr ;
+ INT iSocketType ;
+ INT iProtocol ;
+} CSADDR_INFO, *PCSADDR_INFO, FAR * LPCSADDR_INFO ;
+#endif // __CSADDR_DEFINED__
+
+/*
+ * Address Family/Protocol Tuples
+ */
+typedef struct _AFPROTOCOLS {
+ INT iAddressFamily;
+ INT iProtocol;
+} AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
+
+/*
+ * Client Query API Typedefs
+ */
+
+/*
+ * The comparators
+ */
+typedef enum _WSAEcomparator
+{
+ COMP_EQUAL = 0,
+ COMP_NOTLESS
+} WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
+
+typedef struct _WSAVersion
+{
+ DWORD dwVersion;
+ WSAECOMPARATOR ecHow;
+}WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
+
+typedef struct _WSAQuerySetA
+{
+ DWORD dwSize;
+ LPSTR lpszServiceInstanceName;
+ LPGUID lpServiceClassId;
+ LPWSAVERSION lpVersion;
+ LPSTR lpszComment;
+ DWORD dwNameSpace;
+ LPGUID lpNSProviderId;
+ LPSTR lpszContext;
+ DWORD dwNumberOfProtocols;
+ LPAFPROTOCOLS lpafpProtocols;
+ LPSTR lpszQueryString;
+ DWORD dwNumberOfCsAddrs;
+ LPCSADDR_INFO lpcsaBuffer;
+ DWORD dwOutputFlags;
+ LPBLOB lpBlob;
+} WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
+typedef struct _WSAQuerySetW
+{
+ DWORD dwSize;
+ LPWSTR lpszServiceInstanceName;
+ LPGUID lpServiceClassId;
+ LPWSAVERSION lpVersion;
+ LPWSTR lpszComment;
+ DWORD dwNameSpace;
+ LPGUID lpNSProviderId;
+ LPWSTR lpszContext;
+ DWORD dwNumberOfProtocols;
+ LPAFPROTOCOLS lpafpProtocols;
+ LPWSTR lpszQueryString;
+ DWORD dwNumberOfCsAddrs;
+ LPCSADDR_INFO lpcsaBuffer;
+ DWORD dwOutputFlags;
+ LPBLOB lpBlob;
+} WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;
+#ifdef UNICODE
+typedef WSAQUERYSETW WSAQUERYSET;
+typedef PWSAQUERYSETW PWSAQUERYSET;
+typedef LPWSAQUERYSETW LPWSAQUERYSET;
+#else
+typedef WSAQUERYSETA WSAQUERYSET;
+typedef PWSAQUERYSETA PWSAQUERYSET;
+typedef LPWSAQUERYSETA LPWSAQUERYSET;
+#endif // UNICODE
+
+#define LUP_DEEP 0x0001
+#define LUP_CONTAINERS 0x0002
+#define LUP_NOCONTAINERS 0x0004
+#define LUP_NEAREST 0x0008
+#define LUP_RETURN_NAME 0x0010
+#define LUP_RETURN_TYPE 0x0020
+#define LUP_RETURN_VERSION 0x0040
+#define LUP_RETURN_COMMENT 0x0080
+#define LUP_RETURN_ADDR 0x0100
+#define LUP_RETURN_BLOB 0x0200
+#define LUP_RETURN_ALIASES 0x0400
+#define LUP_RETURN_QUERY_STRING 0x0800
+#define LUP_RETURN_ALL 0x0FF0
+#define LUP_RES_SERVICE 0x8000
+
+#define LUP_FLUSHCACHE 0x1000
+#define LUP_FLUSHPREVIOUS 0x2000
+
+
+//
+// Return flags
+//
+
+#define RESULT_IS_ALIAS 0x0001
+
+/*
+ * Service Address Registration and Deregistration Data Types.
+ */
+
+typedef enum _WSAESETSERVICEOP
+{
+ RNRSERVICE_REGISTER=0,
+ RNRSERVICE_DEREGISTER,
+ RNRSERVICE_DELETE
+} WSAESETSERVICEOP, *PWSAESETSERVICEOP, *LPWSAESETSERVICEOP;
+
+/*
+ * Service Installation/Removal Data Types.
+ */
+
+typedef struct _WSANSClassInfoA
+{
+ LPSTR lpszName;
+ DWORD dwNameSpace;
+ DWORD dwValueType;
+ DWORD dwValueSize;
+ LPVOID lpValue;
+}WSANSCLASSINFOA, *PWSANSCLASSINFOA, *LPWSANSCLASSINFOA;
+typedef struct _WSANSClassInfoW
+{
+ LPWSTR lpszName;
+ DWORD dwNameSpace;
+ DWORD dwValueType;
+ DWORD dwValueSize;
+ LPVOID lpValue;
+}WSANSCLASSINFOW, *PWSANSCLASSINFOW, *LPWSANSCLASSINFOW;
+#ifdef UNICODE
+typedef WSANSCLASSINFOW WSANSCLASSINFO;
+typedef PWSANSCLASSINFOW PWSANSCLASSINFO;
+typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO;
+#else
+typedef WSANSCLASSINFOA WSANSCLASSINFO;
+typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
+typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
+#endif // UNICODE
+
+typedef struct _WSAServiceClassInfoA
+{
+ LPGUID lpServiceClassId;
+ LPSTR lpszServiceClassName;
+ DWORD dwCount;
+ LPWSANSCLASSINFOA lpClassInfos;
+}WSASERVICECLASSINFOA, *PWSASERVICECLASSINFOA, *LPWSASERVICECLASSINFOA;
+typedef struct _WSAServiceClassInfoW
+{
+ LPGUID lpServiceClassId;
+ LPWSTR lpszServiceClassName;
+ DWORD dwCount;
+ LPWSANSCLASSINFOW lpClassInfos;
+}WSASERVICECLASSINFOW, *PWSASERVICECLASSINFOW, *LPWSASERVICECLASSINFOW;
+#ifdef UNICODE
+typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO;
+typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO;
+typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO;
+#else
+typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO;
+typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
+typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
+#endif // UNICODE
+
+typedef struct _WSANAMESPACE_INFOA {
+ GUID NSProviderId;
+ DWORD dwNameSpace;
+ BOOL fActive;
+ DWORD dwVersion;
+ LPSTR lpszIdentifier;
+} WSANAMESPACE_INFOA, *PWSANAMESPACE_INFOA, *LPWSANAMESPACE_INFOA;
+typedef struct _WSANAMESPACE_INFOW {
+ GUID NSProviderId;
+ DWORD dwNameSpace;
+ BOOL fActive;
+ DWORD dwVersion;
+ LPWSTR lpszIdentifier;
+} WSANAMESPACE_INFOW, *PWSANAMESPACE_INFOW, *LPWSANAMESPACE_INFOW;
+#ifdef UNICODE
+typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO;
+typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO;
+typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO;
+#else
+typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO;
+typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
+typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
+#endif // UNICODE
+
+/* Socket function prototypes */
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+SOCKET
+WSAAPI
+accept(
+ SOCKET s,
+ struct sockaddr FAR * addr,
+ int FAR * addrlen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+SOCKET
+(WSAAPI * LPFN_ACCEPT)(
+ SOCKET s,
+ struct sockaddr FAR * addr,
+ int FAR * addrlen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+bind(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_BIND)(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+closesocket(
+ SOCKET s
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_CLOSESOCKET)(
+ SOCKET s
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+connect(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_CONNECT)(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+ioctlsocket(
+ SOCKET s,
+ long cmd,
+ u_long FAR * argp
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_IOCTLSOCKET)(
+ SOCKET s,
+ long cmd,
+ u_long FAR * argp
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+getpeername(
+ SOCKET s,
+ struct sockaddr FAR * name,
+ int FAR * namelen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_GETPEERNAME)(
+ SOCKET s,
+ struct sockaddr FAR * name,
+ int FAR * namelen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+getsockname(
+ SOCKET s,
+ struct sockaddr FAR * name,
+ int FAR * namelen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_GETSOCKNAME)(
+ SOCKET s,
+ struct sockaddr FAR * name,
+ int FAR * namelen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+getsockopt(
+ SOCKET s,
+ int level,
+ int optname,
+ char FAR * optval,
+ int FAR * optlen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_GETSOCKOPT)(
+ SOCKET s,
+ int level,
+ int optname,
+ char FAR * optval,
+ int FAR * optlen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+u_long
+WSAAPI
+htonl(
+ u_long hostlong
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+u_long
+(WSAAPI * LPFN_HTONL)(
+ u_long hostlong
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+u_short
+WSAAPI
+htons(
+ u_short hostshort
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+u_short
+(WSAAPI * LPFN_HTONS)(
+ u_short hostshort
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+unsigned long
+WSAAPI
+inet_addr(
+ const char FAR * cp
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+unsigned long
+(WSAAPI * LPFN_INET_ADDR)(
+ const char FAR * cp
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+char FAR *
+WSAAPI
+inet_ntoa(
+ struct in_addr in
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+char FAR *
+(WSAAPI * LPFN_INET_NTOA)(
+ struct in_addr in
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+listen(
+ SOCKET s,
+ int backlog
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_LISTEN)(
+ SOCKET s,
+ int backlog
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+u_long
+WSAAPI
+ntohl(
+ u_long netlong
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+u_long
+(WSAAPI * LPFN_NTOHL)(
+ u_long netlong
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+u_short
+WSAAPI
+ntohs(
+ u_short netshort
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+u_short
+(WSAAPI * LPFN_NTOHS)(
+ u_short netshort
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+recv(
+ SOCKET s,
+ char FAR * buf,
+ int len,
+ int flags
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_RECV)(
+ SOCKET s,
+ char FAR * buf,
+ int len,
+ int flags
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+recvfrom(
+ SOCKET s,
+ char FAR * buf,
+ int len,
+ int flags,
+ struct sockaddr FAR * from,
+ int FAR * fromlen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_RECVFROM)(
+ SOCKET s,
+ char FAR * buf,
+ int len,
+ int flags,
+ struct sockaddr FAR * from,
+ int FAR * fromlen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+select(
+ int nfds,
+ fd_set FAR * readfds,
+ fd_set FAR * writefds,
+ fd_set FAR *exceptfds,
+ const struct timeval FAR * timeout
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_SELECT)(
+ int nfds,
+ fd_set FAR * readfds,
+ fd_set FAR * writefds,
+ fd_set FAR *exceptfds,
+ const struct timeval FAR * timeout
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+send(
+ SOCKET s,
+ const char FAR * buf,
+ int len,
+ int flags
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_SEND)(
+ SOCKET s,
+ const char FAR * buf,
+ int len,
+ int flags
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+sendto(
+ SOCKET s,
+ const char FAR * buf,
+ int len,
+ int flags,
+ const struct sockaddr FAR * to,
+ int tolen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_SENDTO)(
+ SOCKET s,
+ const char FAR * buf,
+ int len,
+ int flags,
+ const struct sockaddr FAR * to,
+ int tolen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+setsockopt(
+ SOCKET s,
+ int level,
+ int optname,
+ const char FAR * optval,
+ int optlen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_SETSOCKOPT)(
+ SOCKET s,
+ int level,
+ int optname,
+ const char FAR * optval,
+ int optlen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+shutdown(
+ SOCKET s,
+ int how
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_SHUTDOWN)(
+ SOCKET s,
+ int how
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+SOCKET
+WSAAPI
+socket(
+ int af,
+ int type,
+ int protocol
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+SOCKET
+(WSAAPI * LPFN_SOCKET)(
+ int af,
+ int type,
+ int protocol
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+/* Database function prototypes */
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+struct hostent FAR *
+WSAAPI
+gethostbyaddr(
+ const char FAR * addr,
+ int len,
+ int type
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+struct hostent FAR *
+(WSAAPI * LPFN_GETHOSTBYADDR)(
+ const char FAR * addr,
+ int len,
+ int type
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+struct hostent FAR *
+WSAAPI
+gethostbyname(
+ const char FAR * name
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+struct hostent FAR *
+(WSAAPI * LPFN_GETHOSTBYNAME)(
+ const char FAR * name
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+gethostname(
+ char FAR * name,
+ int namelen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_GETHOSTNAME)(
+ char FAR * name,
+ int namelen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+struct servent FAR *
+WSAAPI
+getservbyport(
+ int port,
+ const char FAR * proto
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+struct servent FAR *
+(WSAAPI * LPFN_GETSERVBYPORT)(
+ int port,
+ const char FAR * proto
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+struct servent FAR *
+WSAAPI
+getservbyname(
+ const char FAR * name,
+ const char FAR * proto
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+struct servent FAR *
+(WSAAPI * LPFN_GETSERVBYNAME)(
+ const char FAR * name,
+ const char FAR * proto
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+struct protoent FAR *
+WSAAPI
+getprotobynumber(
+ int number
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+struct protoent FAR *
+(WSAAPI * LPFN_GETPROTOBYNUMBER)(
+ int number
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+struct protoent FAR *
+WSAAPI
+getprotobyname(
+ const char FAR * name
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+struct protoent FAR *
+(WSAAPI * LPFN_GETPROTOBYNAME)(
+ const char FAR * name
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+/* Microsoft Windows Extension function prototypes */
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAStartup(
+ WORD wVersionRequested,
+ LPWSADATA lpWSAData
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSASTARTUP)(
+ WORD wVersionRequested,
+ LPWSADATA lpWSAData
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSACleanup(
+ void
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSACLEANUP)(
+ void
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+void
+WSAAPI
+WSASetLastError(
+ int iError
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+void
+(WSAAPI * LPFN_WSASETLASTERROR)(
+ int iError
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAGetLastError(
+ void
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSAGETLASTERROR)(
+ void
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+BOOL
+WSAAPI
+WSAIsBlocking(
+ void
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+BOOL
+(WSAAPI * LPFN_WSAISBLOCKING)(
+ void
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAUnhookBlockingHook(
+ void
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSAUNHOOKBLOCKINGHOOK)(
+ void
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+FARPROC
+WSAAPI
+WSASetBlockingHook(
+ FARPROC lpBlockFunc
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+FARPROC
+(WSAAPI * LPFN_WSASETBLOCKINGHOOK)(
+ FARPROC lpBlockFunc
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSACancelBlockingCall(
+ void
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSACANCELBLOCKINGCALL)(
+ void
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+HANDLE
+WSAAPI
+WSAAsyncGetServByName(
+ HWND hWnd,
+ u_int wMsg,
+ const char FAR * name,
+ const char FAR * proto,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+HANDLE
+(WSAAPI * LPFN_WSAASYNCGETSERVBYNAME)(
+ HWND hWnd,
+ u_int wMsg,
+ const char FAR * name,
+ const char FAR * proto,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+HANDLE
+WSAAPI
+WSAAsyncGetServByPort(
+ HWND hWnd,
+ u_int wMsg,
+ int port,
+ const char FAR * proto,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+HANDLE
+(WSAAPI * LPFN_WSAASYNCGETSERVBYPORT)(
+ HWND hWnd,
+ u_int wMsg,
+ int port,
+ const char FAR * proto,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+HANDLE
+WSAAPI
+WSAAsyncGetProtoByName(
+ HWND hWnd,
+ u_int wMsg,
+ const char FAR * name,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+HANDLE
+(WSAAPI * LPFN_WSAASYNCGETPROTOBYNAME)(
+ HWND hWnd,
+ u_int wMsg,
+ const char FAR * name,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+HANDLE
+WSAAPI
+WSAAsyncGetProtoByNumber(
+ HWND hWnd,
+ u_int wMsg,
+ int number,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+HANDLE
+(WSAAPI * LPFN_WSAASYNCGETPROTOBYNUMBER)(
+ HWND hWnd,
+ u_int wMsg,
+ int number,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+HANDLE
+WSAAPI
+WSAAsyncGetHostByName(
+ HWND hWnd,
+ u_int wMsg,
+ const char FAR * name,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+HANDLE
+(WSAAPI * LPFN_WSAASYNCGETHOSTBYNAME)(
+ HWND hWnd,
+ u_int wMsg,
+ const char FAR * name,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+HANDLE
+WSAAPI
+WSAAsyncGetHostByAddr(
+ HWND hWnd,
+ u_int wMsg,
+ const char FAR * addr,
+ int len,
+ int type,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+HANDLE
+(WSAAPI * LPFN_WSAASYNCGETHOSTBYADDR)(
+ HWND hWnd,
+ u_int wMsg,
+ const char FAR * addr,
+ int len,
+ int type,
+ char FAR * buf,
+ int buflen
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSACancelAsyncRequest(
+ HANDLE hAsyncTaskHandle
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSACANCELASYNCREQUEST)(
+ HANDLE hAsyncTaskHandle
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAAsyncSelect(
+ SOCKET s,
+ HWND hWnd,
+ u_int wMsg,
+ long lEvent
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSAASYNCSELECT)(
+ SOCKET s,
+ HWND hWnd,
+ u_int wMsg,
+ long lEvent
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+/*
+ * WinSock 2 extensions -- data types for the condition function in
+ * WSAAccept() and overlapped I/O completion routine.
+ */
+
+typedef
+int
+(CALLBACK * LPCONDITIONPROC)(
+ LPWSABUF lpCallerId,
+ LPWSABUF lpCallerData,
+ LPQOS lpSQOS,
+ LPQOS lpGQOS,
+ LPWSABUF lpCalleeId,
+ LPWSABUF lpCalleeData,
+ GROUP FAR * g,
+ DWORD dwCallbackData
+ );
+
+typedef
+void
+(CALLBACK * LPWSAOVERLAPPED_COMPLETION_ROUTINE)(
+ DWORD dwError,
+ DWORD cbTransferred,
+ LPWSAOVERLAPPED lpOverlapped,
+ DWORD dwFlags
+ );
+
+/* WinSock 2 API new function prototypes */
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+SOCKET
+WSAAPI
+WSAAccept(
+ SOCKET s,
+ struct sockaddr FAR * addr,
+ LPINT addrlen,
+ LPCONDITIONPROC lpfnCondition,
+ DWORD dwCallbackData
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+SOCKET
+(WSAAPI * LPFN_WSAACCEPT)(
+ SOCKET s,
+ struct sockaddr FAR * addr,
+ LPINT addrlen,
+ LPCONDITIONPROC lpfnCondition,
+ DWORD dwCallbackData
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+BOOL
+WSAAPI
+WSACloseEvent(
+ WSAEVENT hEvent
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+BOOL
+(WSAAPI * LPFN_WSACLOSEEVENT)(
+ WSAEVENT hEvent
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAConnect(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen,
+ LPWSABUF lpCallerData,
+ LPWSABUF lpCalleeData,
+ LPQOS lpSQOS,
+ LPQOS lpGQOS
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSACONNECT)(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen,
+ LPWSABUF lpCallerData,
+ LPWSABUF lpCalleeData,
+ LPQOS lpSQOS,
+ LPQOS lpGQOS
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+WSAEVENT
+WSAAPI
+WSACreateEvent(
+ void
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+WSAEVENT
+(WSAAPI * LPFN_WSACREATEEVENT)(
+ void
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSADuplicateSocketA(
+ SOCKET s,
+ DWORD dwProcessId,
+ LPWSAPROTOCOL_INFOA lpProtocolInfo
+ );
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSADuplicateSocketW(
+ SOCKET s,
+ DWORD dwProcessId,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo
+ );
+#ifdef UNICODE
+#define WSADuplicateSocket WSADuplicateSocketW
+#else
+#define WSADuplicateSocket WSADuplicateSocketA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSADUPLICATESOCKETA)(
+ SOCKET s,
+ DWORD dwProcessId,
+ LPWSAPROTOCOL_INFOA lpProtocolInfo
+ );
+typedef
+int
+(WSAAPI * LPFN_WSADUPLICATESOCKETW)(
+ SOCKET s,
+ DWORD dwProcessId,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo
+ );
+#ifdef UNICODE
+#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETW
+#else
+#define LPFN_WSADUPLICATESOCKET LPFN_WSADUPLICATESOCKETA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAEnumNetworkEvents(
+ SOCKET s,
+ WSAEVENT hEventObject,
+ LPWSANETWORKEVENTS lpNetworkEvents
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSAENUMNETWORKEVENTS)(
+ SOCKET s,
+ WSAEVENT hEventObject,
+ LPWSANETWORKEVENTS lpNetworkEvents
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAEnumProtocolsA(
+ LPINT lpiProtocols,
+ LPWSAPROTOCOL_INFOA lpProtocolBuffer,
+ LPDWORD lpdwBufferLength
+ );
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAEnumProtocolsW(
+ LPINT lpiProtocols,
+ LPWSAPROTOCOL_INFOW lpProtocolBuffer,
+ LPDWORD lpdwBufferLength
+ );
+#ifdef UNICODE
+#define WSAEnumProtocols WSAEnumProtocolsW
+#else
+#define WSAEnumProtocols WSAEnumProtocolsA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSAENUMPROTOCOLSA)(
+ LPINT lpiProtocols,
+ LPWSAPROTOCOL_INFOA lpProtocolBuffer,
+ LPDWORD lpdwBufferLength
+ );
+typedef
+int
+(WSAAPI * LPFN_WSAENUMPROTOCOLSW)(
+ LPINT lpiProtocols,
+ LPWSAPROTOCOL_INFOW lpProtocolBuffer,
+ LPDWORD lpdwBufferLength
+ );
+#ifdef UNICODE
+#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSW
+#else
+#define LPFN_WSAENUMPROTOCOLS LPFN_WSAENUMPROTOCOLSA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAEventSelect(
+ SOCKET s,
+ WSAEVENT hEventObject,
+ long lNetworkEvents
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSAEVENTSELECT)(
+ SOCKET s,
+ WSAEVENT hEventObject,
+ long lNetworkEvents
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+BOOL
+WSAAPI
+WSAGetOverlappedResult(
+ SOCKET s,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPDWORD lpcbTransfer,
+ BOOL fWait,
+ LPDWORD lpdwFlags
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+BOOL
+(WSAAPI * LPFN_WSAGETOVERLAPPEDRESULT)(
+ SOCKET s,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPDWORD lpcbTransfer,
+ BOOL fWait,
+ LPDWORD lpdwFlags
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+BOOL
+WSAAPI
+WSAGetQOSByName(
+ SOCKET s,
+ LPWSABUF lpQOSName,
+ LPQOS lpQOS
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+BOOL
+(WSAAPI * LPFN_WSAGETQOSBYNAME)(
+ SOCKET s,
+ LPWSABUF lpQOSName,
+ LPQOS lpQOS
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAHtonl(
+ SOCKET s,
+ u_long hostlong,
+ u_long FAR * lpnetlong
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSAHTONL)(
+ SOCKET s,
+ u_long hostlong,
+ u_long FAR * lpnetlong
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAHtons(
+ SOCKET s,
+ u_short hostshort,
+ u_short FAR * lpnetshort
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSAHTONS)(
+ SOCKET s,
+ u_short hostshort,
+ u_short FAR * lpnetshort
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSAIoctl(
+ SOCKET s,
+ DWORD dwIoControlCode,
+ LPVOID lpvInBuffer,
+ DWORD cbInBuffer,
+ LPVOID lpvOutBuffer,
+ DWORD cbOutBuffer,
+ LPDWORD lpcbBytesReturned,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSAIOCTL)(
+ SOCKET s,
+ DWORD dwIoControlCode,
+ LPVOID lpvInBuffer,
+ DWORD cbInBuffer,
+ LPVOID lpvOutBuffer,
+ DWORD cbOutBuffer,
+ LPDWORD lpcbBytesReturned,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+SOCKET
+WSAAPI
+WSAJoinLeaf(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen,
+ LPWSABUF lpCallerData,
+ LPWSABUF lpCalleeData,
+ LPQOS lpSQOS,
+ LPQOS lpGQOS,
+ DWORD dwFlags
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+SOCKET
+(WSAAPI * LPFN_WSAJOINLEAF)(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen,
+ LPWSABUF lpCallerData,
+ LPWSABUF lpCalleeData,
+ LPQOS lpSQOS,
+ LPQOS lpGQOS,
+ DWORD dwFlags
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSANtohl(
+ SOCKET s,
+ u_long netlong,
+ u_long FAR * lphostlong
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSANTOHL)(
+ SOCKET s,
+ u_long netlong,
+ u_long FAR * lphostlong
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSANtohs(
+ SOCKET s,
+ u_short netshort,
+ u_short FAR * lphostshort
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSANTOHS)(
+ SOCKET s,
+ u_short netshort,
+ u_short FAR * lphostshort
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSARecv(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesRecvd,
+ LPDWORD lpFlags,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSARECV)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesRecvd,
+ LPDWORD lpFlags,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSARecvDisconnect(
+ SOCKET s,
+ LPWSABUF lpInboundDisconnectData
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSARECVDISCONNECT)(
+ SOCKET s,
+ LPWSABUF lpInboundDisconnectData
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSARecvFrom(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesRecvd,
+ LPDWORD lpFlags,
+ struct sockaddr FAR * lpFrom,
+ LPINT lpFromlen,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSARECVFROM)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesRecvd,
+ LPDWORD lpFlags,
+ struct sockaddr FAR * lpFrom,
+ LPINT lpFromlen,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+BOOL
+WSAAPI
+WSAResetEvent(
+ WSAEVENT hEvent
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+BOOL
+(WSAAPI * LPFN_WSARESETEVENT)(
+ WSAEVENT hEvent
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSASend(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesSent,
+ DWORD dwFlags,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSASEND)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesSent,
+ DWORD dwFlags,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSASendDisconnect(
+ SOCKET s,
+ LPWSABUF lpOutboundDisconnectData
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSASENDDISCONNECT)(
+ SOCKET s,
+ LPWSABUF lpOutboundDisconnectData
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+int
+WSAAPI
+WSASendTo(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesSent,
+ DWORD dwFlags,
+ const struct sockaddr FAR * lpTo,
+ int iTolen,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+int
+(WSAAPI * LPFN_WSASENDTO)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesSent,
+ DWORD dwFlags,
+ const struct sockaddr FAR * lpTo,
+ int iTolen,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+BOOL
+WSAAPI
+WSASetEvent(
+ WSAEVENT hEvent
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+BOOL
+(WSAAPI * LPFN_WSASETEVENT)(
+ WSAEVENT hEvent
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+SOCKET
+WSAAPI
+WSASocketA(
+ int af,
+ int type,
+ int protocol,
+ LPWSAPROTOCOL_INFOA lpProtocolInfo,
+ GROUP g,
+ DWORD dwFlags
+ );
+WINSOCK_API_LINKAGE
+SOCKET
+WSAAPI
+WSASocketW(
+ int af,
+ int type,
+ int protocol,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ GROUP g,
+ DWORD dwFlags
+ );
+#ifdef UNICODE
+#define WSASocket WSASocketW
+#else
+#define WSASocket WSASocketA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+SOCKET
+(WSAAPI * LPFN_WSASOCKETA)(
+ int af,
+ int type,
+ int protocol,
+ LPWSAPROTOCOL_INFOA lpProtocolInfo,
+ GROUP g,
+ DWORD dwFlags
+ );
+typedef
+SOCKET
+(WSAAPI * LPFN_WSASOCKETW)(
+ int af,
+ int type,
+ int protocol,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ GROUP g,
+ DWORD dwFlags
+ );
+#ifdef UNICODE
+#define LPFN_WSASOCKET LPFN_WSASOCKETW
+#else
+#define LPFN_WSASOCKET LPFN_WSASOCKETA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+DWORD
+WSAAPI
+WSAWaitForMultipleEvents(
+ DWORD cEvents,
+ const WSAEVENT FAR * lphEvents,
+ BOOL fWaitAll,
+ DWORD dwTimeout,
+ BOOL fAlertable
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+DWORD
+(WSAAPI * LPFN_WSAWAITFORMULTIPLEEVENTS)(
+ DWORD cEvents,
+ const WSAEVENT FAR * lphEvents,
+ BOOL fWaitAll,
+ DWORD dwTimeout,
+ BOOL fAlertable
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAAddressToStringA(
+ IN LPSOCKADDR lpsaAddress,
+ IN DWORD dwAddressLength,
+ IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
+ IN OUT LPSTR lpszAddressString,
+ IN OUT LPDWORD lpdwAddressStringLength
+ );
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAAddressToStringW(
+ IN LPSOCKADDR lpsaAddress,
+ IN DWORD dwAddressLength,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ IN OUT LPWSTR lpszAddressString,
+ IN OUT LPDWORD lpdwAddressStringLength
+ );
+#ifdef UNICODE
+#define WSAAddressToString WSAAddressToStringW
+#else
+#define WSAAddressToString WSAAddressToStringA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSAADDRESSTOSTRINGA)(
+ IN LPSOCKADDR lpsaAddress,
+ IN DWORD dwAddressLength,
+ IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
+ IN OUT LPSTR lpszAddressString,
+ IN OUT LPDWORD lpdwAddressStringLength
+ );
+typedef
+INT
+(WSAAPI * LPFN_WSAADDRESSTOSTRINGW)(
+ IN LPSOCKADDR lpsaAddress,
+ IN DWORD dwAddressLength,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ IN OUT LPWSTR lpszAddressString,
+ IN OUT LPDWORD lpdwAddressStringLength
+ );
+#ifdef UNICODE
+#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGW
+#else
+#define LPFN_WSAADDRESSTOSTRING LPFN_WSAADDRESSTOSTRINGA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAStringToAddressA(
+ IN LPSTR AddressString,
+ IN INT AddressFamily,
+ IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
+ IN OUT LPSOCKADDR lpAddress,
+ IN OUT LPINT lpAddressLength
+ );
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAStringToAddressW(
+ IN LPWSTR AddressString,
+ IN INT AddressFamily,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ IN OUT LPSOCKADDR lpAddress,
+ IN OUT LPINT lpAddressLength
+ );
+#ifdef UNICODE
+#define WSAStringToAddress WSAStringToAddressW
+#else
+#define WSAStringToAddress WSAStringToAddressA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSASTRINGTOADDRESSA)(
+ IN LPSTR AddressString,
+ IN INT AddressFamily,
+ IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
+ IN OUT LPSOCKADDR lpAddress,
+ IN OUT LPINT lpAddressLength
+ );
+typedef
+INT
+(WSAAPI * LPFN_WSASTRINGTOADDRESSW)(
+ IN LPWSTR AddressString,
+ IN INT AddressFamily,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ IN OUT LPSOCKADDR lpAddress,
+ IN OUT LPINT lpAddressLength
+ );
+#ifdef UNICODE
+#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSW
+#else
+#define LPFN_WSASTRINGTOADDRESS LPFN_WSASTRINGTOADDRESSA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+/* Registration and Name Resolution API functions */
+
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSALookupServiceBeginA(
+ IN LPWSAQUERYSETA lpqsRestrictions,
+ IN DWORD dwControlFlags,
+ OUT LPHANDLE lphLookup
+ );
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSALookupServiceBeginW(
+ IN LPWSAQUERYSETW lpqsRestrictions,
+ IN DWORD dwControlFlags,
+ OUT LPHANDLE lphLookup
+ );
+#ifdef UNICODE
+#define WSALookupServiceBegin WSALookupServiceBeginW
+#else
+#define WSALookupServiceBegin WSALookupServiceBeginA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSALOOKUPSERVICEBEGINA)(
+ IN LPWSAQUERYSETA lpqsRestrictions,
+ IN DWORD dwControlFlags,
+ OUT LPHANDLE lphLookup
+ );
+typedef
+INT
+(WSAAPI * LPFN_WSALOOKUPSERVICEBEGINW)(
+ IN LPWSAQUERYSETW lpqsRestrictions,
+ IN DWORD dwControlFlags,
+ OUT LPHANDLE lphLookup
+ );
+#ifdef UNICODE
+#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINW
+#else
+#define LPFN_WSALOOKUPSERVICEBEGIN LPFN_WSALOOKUPSERVICEBEGINA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSALookupServiceNextA(
+ IN HANDLE hLookup,
+ IN DWORD dwControlFlags,
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPWSAQUERYSETA lpqsResults
+ );
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSALookupServiceNextW(
+ IN HANDLE hLookup,
+ IN DWORD dwControlFlags,
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPWSAQUERYSETW lpqsResults
+ );
+#ifdef UNICODE
+#define WSALookupServiceNext WSALookupServiceNextW
+#else
+#define WSALookupServiceNext WSALookupServiceNextA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSALOOKUPSERVICENEXTA)(
+ IN HANDLE hLookup,
+ IN DWORD dwControlFlags,
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPWSAQUERYSETA lpqsResults
+ );
+typedef
+INT
+(WSAAPI * LPFN_WSALOOKUPSERVICENEXTW)(
+ IN HANDLE hLookup,
+ IN DWORD dwControlFlags,
+ IN OUT LPDWORD lpdwBufferLength,
+ OUT LPWSAQUERYSETW lpqsResults
+ );
+#ifdef UNICODE
+#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTW
+#else
+#define LPFN_WSALOOKUPSERVICENEXT LPFN_WSALOOKUPSERVICENEXTA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSALookupServiceEnd(
+ IN HANDLE hLookup
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSALOOKUPSERVICEEND)(
+ IN HANDLE hLookup
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAInstallServiceClassA(
+ IN LPWSASERVICECLASSINFOA lpServiceClassInfo
+ );
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAInstallServiceClassW(
+ IN LPWSASERVICECLASSINFOW lpServiceClassInfo
+ );
+#ifdef UNICODE
+#define WSAInstallServiceClass WSAInstallServiceClassW
+#else
+#define WSAInstallServiceClass WSAInstallServiceClassA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSAINSTALLSERVICECLASSA)(
+ IN LPWSASERVICECLASSINFOA lpServiceClassInfo
+ );
+typedef
+INT
+(WSAAPI * LPFN_WSAINSTALLSERVICECLASSW)(
+ IN LPWSASERVICECLASSINFOW lpServiceClassInfo
+ );
+#ifdef UNICODE
+#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSW
+#else
+#define LPFN_WSAINSTALLSERVICECLASS LPFN_WSAINSTALLSERVICECLASSA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSARemoveServiceClass(
+ IN LPGUID lpServiceClassId
+ );
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSAREMOVESERVICECLASS)(
+ IN LPGUID lpServiceClassId
+ );
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAGetServiceClassInfoA(
+ IN LPGUID lpProviderId,
+ IN LPGUID lpServiceClassId,
+ IN OUT LPDWORD lpdwBufSize,
+ OUT LPWSASERVICECLASSINFOA lpServiceClassInfo
+ );
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAGetServiceClassInfoW(
+ IN LPGUID lpProviderId,
+ IN LPGUID lpServiceClassId,
+ IN OUT LPDWORD lpdwBufSize,
+ OUT LPWSASERVICECLASSINFOW lpServiceClassInfo
+ );
+#ifdef UNICODE
+#define WSAGetServiceClassInfo WSAGetServiceClassInfoW
+#else
+#define WSAGetServiceClassInfo WSAGetServiceClassInfoA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSAGETSERVICECLASSINFOA)(
+ IN LPGUID lpProviderId,
+ IN LPGUID lpServiceClassId,
+ IN OUT LPDWORD lpdwBufSize,
+ OUT LPWSASERVICECLASSINFOA lpServiceClassInfo
+ );
+typedef
+INT
+(WSAAPI * LPFN_WSAGETSERVICECLASSINFOW)(
+ IN LPGUID lpProviderId,
+ IN LPGUID lpServiceClassId,
+ IN OUT LPDWORD lpdwBufSize,
+ OUT LPWSASERVICECLASSINFOW lpServiceClassInfo
+ );
+#ifdef UNICODE
+#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOW
+#else
+#define LPFN_WSAGETSERVICECLASSINFO LPFN_WSAGETSERVICECLASSINFOA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAEnumNameSpaceProvidersA(
+ IN OUT LPDWORD lpdwBufferLength,
+ IN LPWSANAMESPACE_INFOA lpnspBuffer
+ );
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAEnumNameSpaceProvidersW(
+ IN OUT LPDWORD lpdwBufferLength,
+ IN LPWSANAMESPACE_INFOW lpnspBuffer
+ );
+#ifdef UNICODE
+#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
+#else
+#define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSAENUMNAMESPACEPROVIDERSA)(
+ IN OUT LPDWORD lpdwBufferLength,
+ IN LPWSANAMESPACE_INFOA lpnspBuffer
+ );
+typedef
+INT
+(WSAAPI * LPFN_WSAENUMNAMESPACEPROVIDERSW)(
+ IN OUT LPDWORD lpdwBufferLength,
+ IN LPWSANAMESPACE_INFOW lpnspBuffer
+ );
+#ifdef UNICODE
+#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
+#else
+#define LPFN_WSAENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAGetServiceClassNameByClassIdA(
+ IN LPGUID lpServiceClassId,
+ OUT LPSTR lpszServiceClassName,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSAGetServiceClassNameByClassIdW(
+ IN LPGUID lpServiceClassId,
+ OUT LPWSTR lpszServiceClassName,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+#ifdef UNICODE
+#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
+#else
+#define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA)(
+ IN LPGUID lpServiceClassId,
+ OUT LPSTR lpszServiceClassName,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+typedef
+INT
+(WSAAPI * LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW)(
+ IN LPGUID lpServiceClassId,
+ OUT LPWSTR lpszServiceClassName,
+ IN OUT LPDWORD lpdwBufferLength
+ );
+#ifdef UNICODE
+#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
+#else
+#define LPFN_WSAGETSERVICECLASSNAMEBYCLASSID LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+#if INCL_WINSOCK_API_PROTOTYPES
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSASetServiceA(
+ IN LPWSAQUERYSETA lpqsRegInfo,
+ IN WSAESETSERVICEOP essoperation,
+ IN DWORD dwControlFlags
+ );
+WINSOCK_API_LINKAGE
+INT
+WSAAPI
+WSASetServiceW(
+ IN LPWSAQUERYSETW lpqsRegInfo,
+ IN WSAESETSERVICEOP essoperation,
+ IN DWORD dwControlFlags
+ );
+#ifdef UNICODE
+#define WSASetService WSASetServiceW
+#else
+#define WSASetService WSASetServiceA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_PROTOTYPES
+
+#if INCL_WINSOCK_API_TYPEDEFS
+typedef
+INT
+(WSAAPI * LPFN_WSASETSERVICEA)(
+ IN LPWSAQUERYSETA lpqsRegInfo,
+ IN WSAESETSERVICEOP essoperation,
+ IN DWORD dwControlFlags
+ );
+typedef
+INT
+(WSAAPI * LPFN_WSASETSERVICEW)(
+ IN LPWSAQUERYSETW lpqsRegInfo,
+ IN WSAESETSERVICEOP essoperation,
+ IN DWORD dwControlFlags
+ );
+#ifdef UNICODE
+#define LPFN_WSASETSERVICE LPFN_WSASETSERVICEW
+#else
+#define LPFN_WSASETSERVICE LPFN_WSASETSERVICEA
+#endif // !UNICODE
+#endif // INCL_WINSOCK_API_TYPEDEFS
+
+/* Microsoft Windows Extended data types */
+typedef struct sockaddr_in SOCKADDR_IN;
+typedef struct sockaddr_in *PSOCKADDR_IN;
+typedef struct sockaddr_in FAR *LPSOCKADDR_IN;
+
+typedef struct linger LINGER;
+typedef struct linger *PLINGER;
+typedef struct linger FAR *LPLINGER;
+
+typedef struct in_addr IN_ADDR;
+typedef struct in_addr *PIN_ADDR;
+typedef struct in_addr FAR *LPIN_ADDR;
+
+typedef struct fd_set FD_SET;
+typedef struct fd_set *PFD_SET;
+typedef struct fd_set FAR *LPFD_SET;
+
+typedef struct hostent HOSTENT;
+typedef struct hostent *PHOSTENT;
+typedef struct hostent FAR *LPHOSTENT;
+
+typedef struct servent SERVENT;
+typedef struct servent *PSERVENT;
+typedef struct servent FAR *LPSERVENT;
+
+typedef struct protoent PROTOENT;
+typedef struct protoent *PPROTOENT;
+typedef struct protoent FAR *LPPROTOENT;
+
+typedef struct timeval TIMEVAL;
+typedef struct timeval *PTIMEVAL;
+typedef struct timeval FAR *LPTIMEVAL;
+
+/*
+ * Windows message parameter composition and decomposition
+ * macros.
+ *
+ * WSAMAKEASYNCREPLY is intended for use by the Windows Sockets implementation
+ * when constructing the response to a WSAAsyncGetXByY() routine.
+ */
+#define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
+/*
+ * WSAMAKESELECTREPLY is intended for use by the Windows Sockets implementation
+ * when constructing the response to WSAAsyncSelect().
+ */
+#define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
+/*
+ * WSAGETASYNCBUFLEN is intended for use by the Windows Sockets application
+ * to extract the buffer length from the lParam in the response
+ * to a WSAAsyncGetXByY().
+ */
+#define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
+/*
+ * WSAGETASYNCERROR is intended for use by the Windows Sockets application
+ * to extract the error code from the lParam in the response
+ * to a WSAGetXByY().
+ */
+#define WSAGETASYNCERROR(lParam) HIWORD(lParam)
+/*
+ * WSAGETSELECTEVENT is intended for use by the Windows Sockets application
+ * to extract the event code from the lParam in the response
+ * to a WSAAsyncSelect().
+ */
+#define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
+/*
+ * WSAGETSELECTERROR is intended for use by the Windows Sockets application
+ * to extract the error code from the lParam in the response
+ * to a WSAAsyncSelect().
+ */
+#define WSAGETSELECTERROR(lParam) HIWORD(lParam)
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+#endif /* _WINSOCK2API_ */
+
diff --git a/public/sdk/inc/winspool.h b/public/sdk/inc/winspool.h
new file mode 100644
index 000000000..ca60d523e
--- /dev/null
+++ b/public/sdk/inc/winspool.h
@@ -0,0 +1,2136 @@
+/*++
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ WinSpool.h
+
+Abstract:
+
+ Header file for Print APIs
+
+Revision History:
+
+--*/
+
+#ifndef _WINSPOOL_
+#define _WINSPOOL_
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _WINUSER_
+#include <prsht.h>
+#endif
+
+typedef struct _PRINTER_INFO_1A {
+ DWORD Flags;
+ LPSTR pDescription;
+ LPSTR pName;
+ LPSTR pComment;
+} PRINTER_INFO_1A, *PPRINTER_INFO_1A, *LPPRINTER_INFO_1A;
+typedef struct _PRINTER_INFO_1W {
+ DWORD Flags;
+ LPWSTR pDescription;
+ LPWSTR pName;
+ LPWSTR pComment;
+} PRINTER_INFO_1W, *PPRINTER_INFO_1W, *LPPRINTER_INFO_1W;
+#ifdef UNICODE
+typedef PRINTER_INFO_1W PRINTER_INFO_1;
+typedef PPRINTER_INFO_1W PPRINTER_INFO_1;
+typedef LPPRINTER_INFO_1W LPPRINTER_INFO_1;
+#else
+typedef PRINTER_INFO_1A PRINTER_INFO_1;
+typedef PPRINTER_INFO_1A PPRINTER_INFO_1;
+typedef LPPRINTER_INFO_1A LPPRINTER_INFO_1;
+#endif // UNICODE
+
+typedef struct _PRINTER_INFO_2A {
+ LPSTR pServerName;
+ LPSTR pPrinterName;
+ LPSTR pShareName;
+ LPSTR pPortName;
+ LPSTR pDriverName;
+ LPSTR pComment;
+ LPSTR pLocation;
+ LPDEVMODEA pDevMode;
+ LPSTR pSepFile;
+ LPSTR pPrintProcessor;
+ LPSTR pDatatype;
+ LPSTR pParameters;
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+ DWORD Attributes;
+ DWORD Priority;
+ DWORD DefaultPriority;
+ DWORD StartTime;
+ DWORD UntilTime;
+ DWORD Status;
+ DWORD cJobs;
+ DWORD AveragePPM;
+} PRINTER_INFO_2A, *PPRINTER_INFO_2A, *LPPRINTER_INFO_2A;
+typedef struct _PRINTER_INFO_2W {
+ LPWSTR pServerName;
+ LPWSTR pPrinterName;
+ LPWSTR pShareName;
+ LPWSTR pPortName;
+ LPWSTR pDriverName;
+ LPWSTR pComment;
+ LPWSTR pLocation;
+ LPDEVMODEW pDevMode;
+ LPWSTR pSepFile;
+ LPWSTR pPrintProcessor;
+ LPWSTR pDatatype;
+ LPWSTR pParameters;
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+ DWORD Attributes;
+ DWORD Priority;
+ DWORD DefaultPriority;
+ DWORD StartTime;
+ DWORD UntilTime;
+ DWORD Status;
+ DWORD cJobs;
+ DWORD AveragePPM;
+} PRINTER_INFO_2W, *PPRINTER_INFO_2W, *LPPRINTER_INFO_2W;
+#ifdef UNICODE
+typedef PRINTER_INFO_2W PRINTER_INFO_2;
+typedef PPRINTER_INFO_2W PPRINTER_INFO_2;
+typedef LPPRINTER_INFO_2W LPPRINTER_INFO_2;
+#else
+typedef PRINTER_INFO_2A PRINTER_INFO_2;
+typedef PPRINTER_INFO_2A PPRINTER_INFO_2;
+typedef LPPRINTER_INFO_2A LPPRINTER_INFO_2;
+#endif // UNICODE
+
+typedef struct _PRINTER_INFO_3 {
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+} PRINTER_INFO_3, *PPRINTER_INFO_3, *LPPRINTER_INFO_3;
+
+typedef struct _PRINTER_INFO_4A {
+ LPSTR pPrinterName;
+ LPSTR pServerName;
+ DWORD Attributes;
+} PRINTER_INFO_4A, *PPRINTER_INFO_4A, *LPPRINTER_INFO_4A;
+typedef struct _PRINTER_INFO_4W {
+ LPWSTR pPrinterName;
+ LPWSTR pServerName;
+ DWORD Attributes;
+} PRINTER_INFO_4W, *PPRINTER_INFO_4W, *LPPRINTER_INFO_4W;
+#ifdef UNICODE
+typedef PRINTER_INFO_4W PRINTER_INFO_4;
+typedef PPRINTER_INFO_4W PPRINTER_INFO_4;
+typedef LPPRINTER_INFO_4W LPPRINTER_INFO_4;
+#else
+typedef PRINTER_INFO_4A PRINTER_INFO_4;
+typedef PPRINTER_INFO_4A PPRINTER_INFO_4;
+typedef LPPRINTER_INFO_4A LPPRINTER_INFO_4;
+#endif // UNICODE
+
+typedef struct _PRINTER_INFO_5A {
+ LPSTR pPrinterName;
+ LPSTR pPortName;
+ DWORD Attributes;
+ DWORD DeviceNotSelectedTimeout;
+ DWORD TransmissionRetryTimeout;
+} PRINTER_INFO_5A, *PPRINTER_INFO_5A, *LPPRINTER_INFO_5A;
+typedef struct _PRINTER_INFO_5W {
+ LPWSTR pPrinterName;
+ LPWSTR pPortName;
+ DWORD Attributes;
+ DWORD DeviceNotSelectedTimeout;
+ DWORD TransmissionRetryTimeout;
+} PRINTER_INFO_5W, *PPRINTER_INFO_5W, *LPPRINTER_INFO_5W;
+#ifdef UNICODE
+typedef PRINTER_INFO_5W PRINTER_INFO_5;
+typedef PPRINTER_INFO_5W PPRINTER_INFO_5;
+typedef LPPRINTER_INFO_5W LPPRINTER_INFO_5;
+#else
+typedef PRINTER_INFO_5A PRINTER_INFO_5;
+typedef PPRINTER_INFO_5A PPRINTER_INFO_5;
+typedef LPPRINTER_INFO_5A LPPRINTER_INFO_5;
+#endif // UNICODE
+
+typedef struct _PRINTER_INFO_6 {
+ DWORD dwStatus;
+} PRINTER_INFO_6, *PPRINTER_INFO_6, *LPPRINTER_INFO_6;
+
+
+
+#define PRINTER_CONTROL_PAUSE 1
+#define PRINTER_CONTROL_RESUME 2
+#define PRINTER_CONTROL_PURGE 3
+#define PRINTER_CONTROL_SET_STATUS 4
+
+#define PRINTER_STATUS_PAUSED 0x00000001
+#define PRINTER_STATUS_ERROR 0x00000002
+#define PRINTER_STATUS_PENDING_DELETION 0x00000004
+#define PRINTER_STATUS_PAPER_JAM 0x00000008
+#define PRINTER_STATUS_PAPER_OUT 0x00000010
+#define PRINTER_STATUS_MANUAL_FEED 0x00000020
+#define PRINTER_STATUS_PAPER_PROBLEM 0x00000040
+#define PRINTER_STATUS_OFFLINE 0x00000080
+#define PRINTER_STATUS_IO_ACTIVE 0x00000100
+#define PRINTER_STATUS_BUSY 0x00000200
+#define PRINTER_STATUS_PRINTING 0x00000400
+#define PRINTER_STATUS_OUTPUT_BIN_FULL 0x00000800
+#define PRINTER_STATUS_NOT_AVAILABLE 0x00001000
+#define PRINTER_STATUS_WAITING 0x00002000
+#define PRINTER_STATUS_PROCESSING 0x00004000
+#define PRINTER_STATUS_INITIALIZING 0x00008000
+#define PRINTER_STATUS_WARMING_UP 0x00010000
+#define PRINTER_STATUS_TONER_LOW 0x00020000
+#define PRINTER_STATUS_NO_TONER 0x00040000
+#define PRINTER_STATUS_PAGE_PUNT 0x00080000
+#define PRINTER_STATUS_USER_INTERVENTION 0x00100000
+#define PRINTER_STATUS_OUT_OF_MEMORY 0x00200000
+#define PRINTER_STATUS_DOOR_OPEN 0x00400000
+#define PRINTER_STATUS_SERVER_UNKNOWN 0x00800000
+#define PRINTER_STATUS_POWER_SAVE 0x01000000
+
+
+#define PRINTER_ATTRIBUTE_QUEUED 0x00000001
+#define PRINTER_ATTRIBUTE_DIRECT 0x00000002
+#define PRINTER_ATTRIBUTE_DEFAULT 0x00000004
+#define PRINTER_ATTRIBUTE_SHARED 0x00000008
+#define PRINTER_ATTRIBUTE_NETWORK 0x00000010
+#define PRINTER_ATTRIBUTE_HIDDEN 0x00000020
+#define PRINTER_ATTRIBUTE_LOCAL 0x00000040
+
+#define PRINTER_ATTRIBUTE_ENABLE_DEVQ 0x00000080
+#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS 0x00000100
+#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200
+
+#define PRINTER_ATTRIBUTE_WORK_OFFLINE 0x00000400
+#define PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800
+#define PRINTER_ATTRIBUTE_RAW_ONLY 0x00001000
+
+
+#define NO_PRIORITY 0
+#define MAX_PRIORITY 99
+#define MIN_PRIORITY 1
+#define DEF_PRIORITY 1
+
+typedef struct _JOB_INFO_1A {
+ DWORD JobId;
+ LPSTR pPrinterName;
+ LPSTR pMachineName;
+ LPSTR pUserName;
+ LPSTR pDocument;
+ LPSTR pDatatype;
+ LPSTR pStatus;
+ DWORD Status;
+ DWORD Priority;
+ DWORD Position;
+ DWORD TotalPages;
+ DWORD PagesPrinted;
+ SYSTEMTIME Submitted;
+} JOB_INFO_1A, *PJOB_INFO_1A, *LPJOB_INFO_1A;
+typedef struct _JOB_INFO_1W {
+ DWORD JobId;
+ LPWSTR pPrinterName;
+ LPWSTR pMachineName;
+ LPWSTR pUserName;
+ LPWSTR pDocument;
+ LPWSTR pDatatype;
+ LPWSTR pStatus;
+ DWORD Status;
+ DWORD Priority;
+ DWORD Position;
+ DWORD TotalPages;
+ DWORD PagesPrinted;
+ SYSTEMTIME Submitted;
+} JOB_INFO_1W, *PJOB_INFO_1W, *LPJOB_INFO_1W;
+#ifdef UNICODE
+typedef JOB_INFO_1W JOB_INFO_1;
+typedef PJOB_INFO_1W PJOB_INFO_1;
+typedef LPJOB_INFO_1W LPJOB_INFO_1;
+#else
+typedef JOB_INFO_1A JOB_INFO_1;
+typedef PJOB_INFO_1A PJOB_INFO_1;
+typedef LPJOB_INFO_1A LPJOB_INFO_1;
+#endif // UNICODE
+
+typedef struct _JOB_INFO_2A {
+ DWORD JobId;
+ LPSTR pPrinterName;
+ LPSTR pMachineName;
+ LPSTR pUserName;
+ LPSTR pDocument;
+ LPSTR pNotifyName;
+ LPSTR pDatatype;
+ LPSTR pPrintProcessor;
+ LPSTR pParameters;
+ LPSTR pDriverName;
+ LPDEVMODEA pDevMode;
+ LPSTR pStatus;
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+ DWORD Status;
+ DWORD Priority;
+ DWORD Position;
+ DWORD StartTime;
+ DWORD UntilTime;
+ DWORD TotalPages;
+ DWORD Size;
+ SYSTEMTIME Submitted; // Time the job was spooled
+ DWORD Time; // How many seconds the job has been printing
+ DWORD PagesPrinted;
+} JOB_INFO_2A, *PJOB_INFO_2A, *LPJOB_INFO_2A;
+typedef struct _JOB_INFO_2W {
+ DWORD JobId;
+ LPWSTR pPrinterName;
+ LPWSTR pMachineName;
+ LPWSTR pUserName;
+ LPWSTR pDocument;
+ LPWSTR pNotifyName;
+ LPWSTR pDatatype;
+ LPWSTR pPrintProcessor;
+ LPWSTR pParameters;
+ LPWSTR pDriverName;
+ LPDEVMODEW pDevMode;
+ LPWSTR pStatus;
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+ DWORD Status;
+ DWORD Priority;
+ DWORD Position;
+ DWORD StartTime;
+ DWORD UntilTime;
+ DWORD TotalPages;
+ DWORD Size;
+ SYSTEMTIME Submitted; // Time the job was spooled
+ DWORD Time; // How many seconds the job has been printing
+ DWORD PagesPrinted;
+} JOB_INFO_2W, *PJOB_INFO_2W, *LPJOB_INFO_2W;
+#ifdef UNICODE
+typedef JOB_INFO_2W JOB_INFO_2;
+typedef PJOB_INFO_2W PJOB_INFO_2;
+typedef LPJOB_INFO_2W LPJOB_INFO_2;
+#else
+typedef JOB_INFO_2A JOB_INFO_2;
+typedef PJOB_INFO_2A PJOB_INFO_2;
+typedef LPJOB_INFO_2A LPJOB_INFO_2;
+#endif // UNICODE
+
+typedef struct _JOB_INFO_3 {
+ DWORD JobId;
+ DWORD NextJobId;
+ DWORD Reserved;
+} JOB_INFO_3, *PJOB_INFO_3, *LPJOB_INFO_3;
+
+#define JOB_CONTROL_PAUSE 1
+#define JOB_CONTROL_RESUME 2
+#define JOB_CONTROL_CANCEL 3
+#define JOB_CONTROL_RESTART 4
+#define JOB_CONTROL_DELETE 5
+#define JOB_CONTROL_SENT_TO_PRINTER 6
+#define JOB_CONTROL_LAST_PAGE_EJECTED 7
+
+#define JOB_STATUS_PAUSED 0x00000001
+#define JOB_STATUS_ERROR 0x00000002
+#define JOB_STATUS_DELETING 0x00000004
+#define JOB_STATUS_SPOOLING 0x00000008
+#define JOB_STATUS_PRINTING 0x00000010
+#define JOB_STATUS_OFFLINE 0x00000020
+#define JOB_STATUS_PAPEROUT 0x00000040
+#define JOB_STATUS_PRINTED 0x00000080
+#define JOB_STATUS_DELETED 0x00000100
+#define JOB_STATUS_BLOCKED_DEVQ 0x00000200
+#define JOB_STATUS_USER_INTERVENTION 0x00000400
+#define JOB_STATUS_RESTART 0x00000800
+
+#define JOB_POSITION_UNSPECIFIED 0
+
+typedef struct _ADDJOB_INFO_1A {
+ LPSTR Path;
+ DWORD JobId;
+} ADDJOB_INFO_1A, *PADDJOB_INFO_1A, *LPADDJOB_INFO_1A;
+typedef struct _ADDJOB_INFO_1W {
+ LPWSTR Path;
+ DWORD JobId;
+} ADDJOB_INFO_1W, *PADDJOB_INFO_1W, *LPADDJOB_INFO_1W;
+#ifdef UNICODE
+typedef ADDJOB_INFO_1W ADDJOB_INFO_1;
+typedef PADDJOB_INFO_1W PADDJOB_INFO_1;
+typedef LPADDJOB_INFO_1W LPADDJOB_INFO_1;
+#else
+typedef ADDJOB_INFO_1A ADDJOB_INFO_1;
+typedef PADDJOB_INFO_1A PADDJOB_INFO_1;
+typedef LPADDJOB_INFO_1A LPADDJOB_INFO_1;
+#endif // UNICODE
+
+typedef struct _DRIVER_INFO_1A {
+ LPSTR pName; // QMS 810
+} DRIVER_INFO_1A, *PDRIVER_INFO_1A, *LPDRIVER_INFO_1A;
+typedef struct _DRIVER_INFO_1W {
+ LPWSTR pName; // QMS 810
+} DRIVER_INFO_1W, *PDRIVER_INFO_1W, *LPDRIVER_INFO_1W;
+#ifdef UNICODE
+typedef DRIVER_INFO_1W DRIVER_INFO_1;
+typedef PDRIVER_INFO_1W PDRIVER_INFO_1;
+typedef LPDRIVER_INFO_1W LPDRIVER_INFO_1;
+#else
+typedef DRIVER_INFO_1A DRIVER_INFO_1;
+typedef PDRIVER_INFO_1A PDRIVER_INFO_1;
+typedef LPDRIVER_INFO_1A LPDRIVER_INFO_1;
+#endif // UNICODE
+
+typedef struct _DRIVER_INFO_2A {
+ DWORD cVersion;
+ LPSTR pName; // QMS 810
+ LPSTR pEnvironment; // Win32 x86
+ LPSTR pDriverPath; // c:\drivers\pscript.dll
+ LPSTR pDataFile; // c:\drivers\QMS810.PPD
+ LPSTR pConfigFile; // c:\drivers\PSCRPTUI.DLL
+} DRIVER_INFO_2A, *PDRIVER_INFO_2A, *LPDRIVER_INFO_2A;
+typedef struct _DRIVER_INFO_2W {
+ DWORD cVersion;
+ LPWSTR pName; // QMS 810
+ LPWSTR pEnvironment; // Win32 x86
+ LPWSTR pDriverPath; // c:\drivers\pscript.dll
+ LPWSTR pDataFile; // c:\drivers\QMS810.PPD
+ LPWSTR pConfigFile; // c:\drivers\PSCRPTUI.DLL
+} DRIVER_INFO_2W, *PDRIVER_INFO_2W, *LPDRIVER_INFO_2W;
+#ifdef UNICODE
+typedef DRIVER_INFO_2W DRIVER_INFO_2;
+typedef PDRIVER_INFO_2W PDRIVER_INFO_2;
+typedef LPDRIVER_INFO_2W LPDRIVER_INFO_2;
+#else
+typedef DRIVER_INFO_2A DRIVER_INFO_2;
+typedef PDRIVER_INFO_2A PDRIVER_INFO_2;
+typedef LPDRIVER_INFO_2A LPDRIVER_INFO_2;
+#endif // UNICODE
+
+typedef struct _DRIVER_INFO_3A {
+ DWORD cVersion;
+ LPSTR pName; // QMS 810
+ LPSTR pEnvironment; // Win32 x86
+ LPSTR pDriverPath; // c:\drivers\pscript.dll
+ LPSTR pDataFile; // c:\drivers\QMS810.PPD
+ LPSTR pConfigFile; // c:\drivers\PSCRPTUI.DLL
+ LPSTR pHelpFile; // c:\drivers\PSCRPTUI.HLP
+ LPSTR pDependentFiles; // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
+ LPSTR pMonitorName; // "PJL monitor"
+ LPSTR pDefaultDataType; // "EMF"
+} DRIVER_INFO_3A, *PDRIVER_INFO_3A, *LPDRIVER_INFO_3A;
+typedef struct _DRIVER_INFO_3W {
+ DWORD cVersion;
+ LPWSTR pName; // QMS 810
+ LPWSTR pEnvironment; // Win32 x86
+ LPWSTR pDriverPath; // c:\drivers\pscript.dll
+ LPWSTR pDataFile; // c:\drivers\QMS810.PPD
+ LPWSTR pConfigFile; // c:\drivers\PSCRPTUI.DLL
+ LPWSTR pHelpFile; // c:\drivers\PSCRPTUI.HLP
+ LPWSTR pDependentFiles; // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
+ LPWSTR pMonitorName; // "PJL monitor"
+ LPWSTR pDefaultDataType; // "EMF"
+} DRIVER_INFO_3W, *PDRIVER_INFO_3W, *LPDRIVER_INFO_3W;
+#ifdef UNICODE
+typedef DRIVER_INFO_3W DRIVER_INFO_3;
+typedef PDRIVER_INFO_3W PDRIVER_INFO_3;
+typedef LPDRIVER_INFO_3W LPDRIVER_INFO_3;
+#else
+typedef DRIVER_INFO_3A DRIVER_INFO_3;
+typedef PDRIVER_INFO_3A PDRIVER_INFO_3;
+typedef LPDRIVER_INFO_3A LPDRIVER_INFO_3;
+#endif // UNICODE
+
+typedef struct _DOC_INFO_1A {
+ LPSTR pDocName;
+ LPSTR pOutputFile;
+ LPSTR pDatatype;
+} DOC_INFO_1A, *PDOC_INFO_1A, *LPDOC_INFO_1A;
+typedef struct _DOC_INFO_1W {
+ LPWSTR pDocName;
+ LPWSTR pOutputFile;
+ LPWSTR pDatatype;
+} DOC_INFO_1W, *PDOC_INFO_1W, *LPDOC_INFO_1W;
+#ifdef UNICODE
+typedef DOC_INFO_1W DOC_INFO_1;
+typedef PDOC_INFO_1W PDOC_INFO_1;
+typedef LPDOC_INFO_1W LPDOC_INFO_1;
+#else
+typedef DOC_INFO_1A DOC_INFO_1;
+typedef PDOC_INFO_1A PDOC_INFO_1;
+typedef LPDOC_INFO_1A LPDOC_INFO_1;
+#endif // UNICODE
+
+typedef struct _FORM_INFO_1A {
+ DWORD Flags;
+ LPSTR pName;
+ SIZEL Size;
+ RECTL ImageableArea;
+} FORM_INFO_1A, *PFORM_INFO_1A, *LPFORM_INFO_1A;
+typedef struct _FORM_INFO_1W {
+ DWORD Flags;
+ LPWSTR pName;
+ SIZEL Size;
+ RECTL ImageableArea;
+} FORM_INFO_1W, *PFORM_INFO_1W, *LPFORM_INFO_1W;
+#ifdef UNICODE
+typedef FORM_INFO_1W FORM_INFO_1;
+typedef PFORM_INFO_1W PFORM_INFO_1;
+typedef LPFORM_INFO_1W LPFORM_INFO_1;
+#else
+typedef FORM_INFO_1A FORM_INFO_1;
+typedef PFORM_INFO_1A PFORM_INFO_1;
+typedef LPFORM_INFO_1A LPFORM_INFO_1;
+#endif // UNICODE
+
+typedef struct _DOC_INFO_2A {
+ LPSTR pDocName;
+ LPSTR pOutputFile;
+ LPSTR pDatatype;
+ DWORD dwMode;
+ DWORD JobId;
+} DOC_INFO_2A, *PDOC_INFO_2A, *LPDOC_INFO_2A;
+typedef struct _DOC_INFO_2W {
+ LPWSTR pDocName;
+ LPWSTR pOutputFile;
+ LPWSTR pDatatype;
+ DWORD dwMode;
+ DWORD JobId;
+} DOC_INFO_2W, *PDOC_INFO_2W, *LPDOC_INFO_2W;
+#ifdef UNICODE
+typedef DOC_INFO_2W DOC_INFO_2;
+typedef PDOC_INFO_2W PDOC_INFO_2;
+typedef LPDOC_INFO_2W LPDOC_INFO_2;
+#else
+typedef DOC_INFO_2A DOC_INFO_2;
+typedef PDOC_INFO_2A PDOC_INFO_2;
+typedef LPDOC_INFO_2A LPDOC_INFO_2;
+#endif // UNICODE
+
+#define DI_CHANNEL 1 // start direct read/write channel,
+
+
+#define DI_READ_SPOOL_JOB 3
+
+
+#define FORM_USER 0x00000000
+#define FORM_BUILTIN 0x00000001
+#define FORM_PRINTER 0x00000002
+
+typedef struct _PRINTPROCESSOR_INFO_1A {
+ LPSTR pName;
+} PRINTPROCESSOR_INFO_1A, *PPRINTPROCESSOR_INFO_1A, *LPPRINTPROCESSOR_INFO_1A;
+typedef struct _PRINTPROCESSOR_INFO_1W {
+ LPWSTR pName;
+} PRINTPROCESSOR_INFO_1W, *PPRINTPROCESSOR_INFO_1W, *LPPRINTPROCESSOR_INFO_1W;
+#ifdef UNICODE
+typedef PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1;
+typedef PPRINTPROCESSOR_INFO_1W PPRINTPROCESSOR_INFO_1;
+typedef LPPRINTPROCESSOR_INFO_1W LPPRINTPROCESSOR_INFO_1;
+#else
+typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1;
+typedef PPRINTPROCESSOR_INFO_1A PPRINTPROCESSOR_INFO_1;
+typedef LPPRINTPROCESSOR_INFO_1A LPPRINTPROCESSOR_INFO_1;
+#endif // UNICODE
+
+typedef struct _PORT_INFO_1A {
+ LPSTR pName;
+} PORT_INFO_1A, *PPORT_INFO_1A, *LPPORT_INFO_1A;
+typedef struct _PORT_INFO_1W {
+ LPWSTR pName;
+} PORT_INFO_1W, *PPORT_INFO_1W, *LPPORT_INFO_1W;
+#ifdef UNICODE
+typedef PORT_INFO_1W PORT_INFO_1;
+typedef PPORT_INFO_1W PPORT_INFO_1;
+typedef LPPORT_INFO_1W LPPORT_INFO_1;
+#else
+typedef PORT_INFO_1A PORT_INFO_1;
+typedef PPORT_INFO_1A PPORT_INFO_1;
+typedef LPPORT_INFO_1A LPPORT_INFO_1;
+#endif // UNICODE
+
+typedef struct _PORT_INFO_2A {
+ LPSTR pPortName;
+ LPSTR pMonitorName;
+ LPSTR pDescription;
+ DWORD fPortType;
+ DWORD Reserved;
+} PORT_INFO_2A, *PPORT_INFO_2A, *LPPORT_INFO_2A;
+typedef struct _PORT_INFO_2W {
+ LPWSTR pPortName;
+ LPWSTR pMonitorName;
+ LPWSTR pDescription;
+ DWORD fPortType;
+ DWORD Reserved;
+} PORT_INFO_2W, *PPORT_INFO_2W, *LPPORT_INFO_2W;
+#ifdef UNICODE
+typedef PORT_INFO_2W PORT_INFO_2;
+typedef PPORT_INFO_2W PPORT_INFO_2;
+typedef LPPORT_INFO_2W LPPORT_INFO_2;
+#else
+typedef PORT_INFO_2A PORT_INFO_2;
+typedef PPORT_INFO_2A PPORT_INFO_2;
+typedef LPPORT_INFO_2A LPPORT_INFO_2;
+#endif // UNICODE
+
+#define PORT_TYPE_WRITE 0x0001
+#define PORT_TYPE_READ 0x0002
+#define PORT_TYPE_REDIRECTED 0x0004
+#define PORT_TYPE_NET_ATTACHED 0x0008
+
+typedef struct _PORT_INFO_3A {
+ DWORD dwStatus;
+ LPSTR pszStatus;
+ DWORD dwSeverity;
+} PORT_INFO_3A, *PPORT_INFO_3A, *LPPORT_INFO_3A;
+typedef struct _PORT_INFO_3W {
+ DWORD dwStatus;
+ LPWSTR pszStatus;
+ DWORD dwSeverity;
+} PORT_INFO_3W, *PPORT_INFO_3W, *LPPORT_INFO_3W;
+#ifdef UNICODE
+typedef PORT_INFO_3W PORT_INFO_3;
+typedef PPORT_INFO_3W PPORT_INFO_3;
+typedef LPPORT_INFO_3W LPPORT_INFO_3;
+#else
+typedef PORT_INFO_3A PORT_INFO_3;
+typedef PPORT_INFO_3A PPORT_INFO_3;
+typedef LPPORT_INFO_3A LPPORT_INFO_3;
+#endif // UNICODE
+
+#define PORT_STATUS_TYPE_ERROR 1
+#define PORT_STATUS_TYPE_WARNING 2
+#define PORT_STATUS_TYPE_INFO 3
+
+#define PORT_STATUS_OFFLINE 1
+#define PORT_STATUS_PAPER_JAM 2
+#define PORT_STATUS_PAPER_OUT 3
+#define PORT_STATUS_OUTPUT_BIN_FULL 4
+#define PORT_STATUS_PAPER_PROBLEM 5
+#define PORT_STATUS_NO_TONER 6
+#define PORT_STATUS_DOOR_OPEN 7
+#define PORT_STATUS_USER_INTERVENTION 8
+#define PORT_STATUS_OUT_OF_MEMORY 9
+
+#define PORT_STATUS_TONER_LOW 10
+
+#define PORT_STATUS_WARMING_UP 11
+#define PORT_STATUS_POWER_SAVE 12
+
+
+typedef struct _MONITOR_INFO_1A{
+ LPSTR pName;
+} MONITOR_INFO_1A, *PMONITOR_INFO_1A, *LPMONITOR_INFO_1A;
+typedef struct _MONITOR_INFO_1W{
+ LPWSTR pName;
+} MONITOR_INFO_1W, *PMONITOR_INFO_1W, *LPMONITOR_INFO_1W;
+#ifdef UNICODE
+typedef MONITOR_INFO_1W MONITOR_INFO_1;
+typedef PMONITOR_INFO_1W PMONITOR_INFO_1;
+typedef LPMONITOR_INFO_1W LPMONITOR_INFO_1;
+#else
+typedef MONITOR_INFO_1A MONITOR_INFO_1;
+typedef PMONITOR_INFO_1A PMONITOR_INFO_1;
+typedef LPMONITOR_INFO_1A LPMONITOR_INFO_1;
+#endif // UNICODE
+
+typedef struct _MONITOR_INFO_2A{
+ LPSTR pName;
+ LPSTR pEnvironment;
+ LPSTR pDLLName;
+} MONITOR_INFO_2A, *PMONITOR_INFO_2A, *LPMONITOR_INFO_2A;
+typedef struct _MONITOR_INFO_2W{
+ LPWSTR pName;
+ LPWSTR pEnvironment;
+ LPWSTR pDLLName;
+} MONITOR_INFO_2W, *PMONITOR_INFO_2W, *LPMONITOR_INFO_2W;
+#ifdef UNICODE
+typedef MONITOR_INFO_2W MONITOR_INFO_2;
+typedef PMONITOR_INFO_2W PMONITOR_INFO_2;
+typedef LPMONITOR_INFO_2W LPMONITOR_INFO_2;
+#else
+typedef MONITOR_INFO_2A MONITOR_INFO_2;
+typedef PMONITOR_INFO_2A PMONITOR_INFO_2;
+typedef LPMONITOR_INFO_2A LPMONITOR_INFO_2;
+#endif // UNICODE
+
+typedef struct _DATATYPES_INFO_1A{
+ LPSTR pName;
+} DATATYPES_INFO_1A, *PDATATYPES_INFO_1A, *LPDATATYPES_INFO_1A;
+typedef struct _DATATYPES_INFO_1W{
+ LPWSTR pName;
+} DATATYPES_INFO_1W, *PDATATYPES_INFO_1W, *LPDATATYPES_INFO_1W;
+#ifdef UNICODE
+typedef DATATYPES_INFO_1W DATATYPES_INFO_1;
+typedef PDATATYPES_INFO_1W PDATATYPES_INFO_1;
+typedef LPDATATYPES_INFO_1W LPDATATYPES_INFO_1;
+#else
+typedef DATATYPES_INFO_1A DATATYPES_INFO_1;
+typedef PDATATYPES_INFO_1A PDATATYPES_INFO_1;
+typedef LPDATATYPES_INFO_1A LPDATATYPES_INFO_1;
+#endif // UNICODE
+
+typedef struct _PRINTER_DEFAULTSA{
+ LPSTR pDatatype;
+ LPDEVMODEA pDevMode;
+ ACCESS_MASK DesiredAccess;
+} PRINTER_DEFAULTSA, *PPRINTER_DEFAULTSA, *LPPRINTER_DEFAULTSA;
+typedef struct _PRINTER_DEFAULTSW{
+ LPWSTR pDatatype;
+ LPDEVMODEW pDevMode;
+ ACCESS_MASK DesiredAccess;
+} PRINTER_DEFAULTSW, *PPRINTER_DEFAULTSW, *LPPRINTER_DEFAULTSW;
+#ifdef UNICODE
+typedef PRINTER_DEFAULTSW PRINTER_DEFAULTS;
+typedef PPRINTER_DEFAULTSW PPRINTER_DEFAULTS;
+typedef LPPRINTER_DEFAULTSW LPPRINTER_DEFAULTS;
+#else
+typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS;
+typedef PPRINTER_DEFAULTSA PPRINTER_DEFAULTS;
+typedef LPPRINTER_DEFAULTSA LPPRINTER_DEFAULTS;
+#endif // UNICODE
+
+BOOL
+WINAPI
+EnumPrintersA(
+ DWORD Flags,
+ LPSTR Name,
+ DWORD Level,
+ LPBYTE pPrinterEnum,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumPrintersW(
+ DWORD Flags,
+ LPWSTR Name,
+ DWORD Level,
+ LPBYTE pPrinterEnum,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumPrinters EnumPrintersW
+#else
+#define EnumPrinters EnumPrintersA
+#endif // !UNICODE
+
+#define PRINTER_ENUM_DEFAULT 0x00000001
+#define PRINTER_ENUM_LOCAL 0x00000002
+#define PRINTER_ENUM_CONNECTIONS 0x00000004
+#define PRINTER_ENUM_FAVORITE 0x00000004
+#define PRINTER_ENUM_NAME 0x00000008
+#define PRINTER_ENUM_REMOTE 0x00000010
+#define PRINTER_ENUM_SHARED 0x00000020
+#define PRINTER_ENUM_NETWORK 0x00000040
+
+#define PRINTER_ENUM_EXPAND 0x00004000
+#define PRINTER_ENUM_CONTAINER 0x00008000
+
+#define PRINTER_ENUM_ICONMASK 0x00ff0000
+#define PRINTER_ENUM_ICON1 0x00010000
+#define PRINTER_ENUM_ICON2 0x00020000
+#define PRINTER_ENUM_ICON3 0x00040000
+#define PRINTER_ENUM_ICON4 0x00080000
+#define PRINTER_ENUM_ICON5 0x00100000
+#define PRINTER_ENUM_ICON6 0x00200000
+#define PRINTER_ENUM_ICON7 0x00400000
+#define PRINTER_ENUM_ICON8 0x00800000
+
+BOOL
+WINAPI
+OpenPrinterA(
+ LPSTR pPrinterName,
+ LPHANDLE phPrinter,
+ LPPRINTER_DEFAULTSA pDefault
+);
+BOOL
+WINAPI
+OpenPrinterW(
+ LPWSTR pPrinterName,
+ LPHANDLE phPrinter,
+ LPPRINTER_DEFAULTSW pDefault
+);
+#ifdef UNICODE
+#define OpenPrinter OpenPrinterW
+#else
+#define OpenPrinter OpenPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+ResetPrinterA(
+ HANDLE hPrinter,
+ LPPRINTER_DEFAULTSA pDefault
+);
+BOOL
+WINAPI
+ResetPrinterW(
+ HANDLE hPrinter,
+ LPPRINTER_DEFAULTSW pDefault
+);
+#ifdef UNICODE
+#define ResetPrinter ResetPrinterW
+#else
+#define ResetPrinter ResetPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+SetJobA(
+ HANDLE hPrinter,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD Command
+);
+BOOL
+WINAPI
+SetJobW(
+ HANDLE hPrinter,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD Command
+);
+#ifdef UNICODE
+#define SetJob SetJobW
+#else
+#define SetJob SetJobA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+GetJobA(
+ HANDLE hPrinter,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetJobW(
+ HANDLE hPrinter,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetJob GetJobW
+#else
+#define GetJob GetJobA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+EnumJobsA(
+ HANDLE hPrinter,
+ DWORD FirstJob,
+ DWORD NoJobs,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumJobsW(
+ HANDLE hPrinter,
+ DWORD FirstJob,
+ DWORD NoJobs,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumJobs EnumJobsW
+#else
+#define EnumJobs EnumJobsA
+#endif // !UNICODE
+
+HANDLE
+WINAPI
+AddPrinterA(
+ LPSTR pName,
+ DWORD Level,
+ LPBYTE pPrinter
+);
+HANDLE
+WINAPI
+AddPrinterW(
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pPrinter
+);
+#ifdef UNICODE
+#define AddPrinter AddPrinterW
+#else
+#define AddPrinter AddPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+DeletePrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+SetPrinterA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pPrinter,
+ DWORD Command
+);
+BOOL
+WINAPI
+SetPrinterW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pPrinter,
+ DWORD Command
+);
+#ifdef UNICODE
+#define SetPrinter SetPrinterW
+#else
+#define SetPrinter SetPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+GetPrinterA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pPrinter,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetPrinterW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pPrinter,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetPrinter GetPrinterW
+#else
+#define GetPrinter GetPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+AddPrinterDriverA(
+ LPSTR pName,
+ DWORD Level,
+ LPBYTE pDriverInfo
+);
+BOOL
+WINAPI
+AddPrinterDriverW(
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pDriverInfo
+);
+#ifdef UNICODE
+#define AddPrinterDriver AddPrinterDriverW
+#else
+#define AddPrinterDriver AddPrinterDriverA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+EnumPrinterDriversA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumPrinterDriversW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumPrinterDrivers EnumPrinterDriversW
+#else
+#define EnumPrinterDrivers EnumPrinterDriversA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+GetPrinterDriverA(
+ HANDLE hPrinter,
+ LPSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetPrinterDriverW(
+ HANDLE hPrinter,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetPrinterDriver GetPrinterDriverW
+#else
+#define GetPrinterDriver GetPrinterDriverA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+GetPrinterDriverDirectoryA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverDirectory,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetPrinterDriverDirectoryW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverDirectory,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetPrinterDriverDirectory GetPrinterDriverDirectoryW
+#else
+#define GetPrinterDriverDirectory GetPrinterDriverDirectoryA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+DeletePrinterDriverA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ LPSTR pDriverName
+);
+BOOL
+WINAPI
+DeletePrinterDriverW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pDriverName
+);
+#ifdef UNICODE
+#define DeletePrinterDriver DeletePrinterDriverW
+#else
+#define DeletePrinterDriver DeletePrinterDriverA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+AddPrintProcessorA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ LPSTR pPathName,
+ LPSTR pPrintProcessorName
+);
+BOOL
+WINAPI
+AddPrintProcessorW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pPathName,
+ LPWSTR pPrintProcessorName
+);
+#ifdef UNICODE
+#define AddPrintProcessor AddPrintProcessorW
+#else
+#define AddPrintProcessor AddPrintProcessorA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+EnumPrintProcessorsA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumPrintProcessorsW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumPrintProcessors EnumPrintProcessorsW
+#else
+#define EnumPrintProcessors EnumPrintProcessorsA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+GetPrintProcessorDirectoryA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetPrintProcessorDirectoryW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetPrintProcessorDirectory GetPrintProcessorDirectoryW
+#else
+#define GetPrintProcessorDirectory GetPrintProcessorDirectoryA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+EnumPrintProcessorDatatypesA(
+ LPSTR pName,
+ LPSTR pPrintProcessorName,
+ DWORD Level,
+ LPBYTE pDatatypes,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumPrintProcessorDatatypesW(
+ LPWSTR pName,
+ LPWSTR pPrintProcessorName,
+ DWORD Level,
+ LPBYTE pDatatypes,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesW
+#else
+#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+DeletePrintProcessorA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ LPSTR pPrintProcessorName
+);
+BOOL
+WINAPI
+DeletePrintProcessorW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pPrintProcessorName
+);
+#ifdef UNICODE
+#define DeletePrintProcessor DeletePrintProcessorW
+#else
+#define DeletePrintProcessor DeletePrintProcessorA
+#endif // !UNICODE
+
+DWORD
+WINAPI
+StartDocPrinterA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pDocInfo
+);
+DWORD
+WINAPI
+StartDocPrinterW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pDocInfo
+);
+#ifdef UNICODE
+#define StartDocPrinter StartDocPrinterW
+#else
+#define StartDocPrinter StartDocPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+StartPagePrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+WritePrinter(
+ HANDLE hPrinter,
+ LPVOID pBuf,
+ DWORD cbBuf,
+ LPDWORD pcWritten
+);
+
+BOOL
+WINAPI
+EndPagePrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+AbortPrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+ReadPrinter(
+ HANDLE hPrinter,
+ LPVOID pBuf,
+ DWORD cbBuf,
+ LPDWORD pNoBytesRead
+);
+
+BOOL
+WINAPI
+EndDocPrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+AddJobA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pData,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+AddJobW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pData,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define AddJob AddJobW
+#else
+#define AddJob AddJobA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+ScheduleJob(
+ HANDLE hPrinter,
+ DWORD JobId
+);
+
+BOOL
+WINAPI
+PrinterProperties(
+ HWND hWnd,
+ HANDLE hPrinter
+);
+
+LONG
+WINAPI
+DocumentPropertiesA(
+ HWND hWnd,
+ HANDLE hPrinter,
+ LPSTR pDeviceName,
+ PDEVMODEA pDevModeOutput,
+ PDEVMODEA pDevModeInput,
+ DWORD fMode
+);
+LONG
+WINAPI
+DocumentPropertiesW(
+ HWND hWnd,
+ HANDLE hPrinter,
+ LPWSTR pDeviceName,
+ PDEVMODEW pDevModeOutput,
+ PDEVMODEW pDevModeInput,
+ DWORD fMode
+);
+#ifdef UNICODE
+#define DocumentProperties DocumentPropertiesW
+#else
+#define DocumentProperties DocumentPropertiesA
+#endif // !UNICODE
+
+LONG
+WINAPI
+AdvancedDocumentPropertiesA(
+ HWND hWnd,
+ HANDLE hPrinter,
+ LPSTR pDeviceName,
+ PDEVMODEA pDevModeOutput,
+ PDEVMODEA pDevModeInput
+);
+LONG
+WINAPI
+AdvancedDocumentPropertiesW(
+ HWND hWnd,
+ HANDLE hPrinter,
+ LPWSTR pDeviceName,
+ PDEVMODEW pDevModeOutput,
+ PDEVMODEW pDevModeInput
+);
+#ifdef UNICODE
+#define AdvancedDocumentProperties AdvancedDocumentPropertiesW
+#else
+#define AdvancedDocumentProperties AdvancedDocumentPropertiesA
+#endif // !UNICODE
+
+
+
+DWORD
+WINAPI
+GetPrinterDataA(
+ HANDLE hPrinter,
+ LPSTR pValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD nSize,
+ LPDWORD pcbNeeded
+);
+DWORD
+WINAPI
+GetPrinterDataW(
+ HANDLE hPrinter,
+ LPWSTR pValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD nSize,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetPrinterData GetPrinterDataW
+#else
+#define GetPrinterData GetPrinterDataA
+#endif // !UNICODE
+
+DWORD
+WINAPI
+EnumPrinterDataA(
+ HANDLE hPrinter,
+ DWORD dwIndex,
+ LPSTR pValueName,
+ DWORD cbValueName,
+ LPDWORD pcbValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD cbData,
+ LPDWORD pcbData
+);
+DWORD
+WINAPI
+EnumPrinterDataW(
+ HANDLE hPrinter,
+ DWORD dwIndex,
+ LPWSTR pValueName,
+ DWORD cbValueName,
+ LPDWORD pcbValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD cbData,
+ LPDWORD pcbData
+);
+#ifdef UNICODE
+#define EnumPrinterData EnumPrinterDataW
+#else
+#define EnumPrinterData EnumPrinterDataA
+#endif // !UNICODE
+
+
+DWORD
+WINAPI
+SetPrinterDataA(
+ HANDLE hPrinter,
+ LPSTR pValueName,
+ DWORD Type,
+ LPBYTE pData,
+ DWORD cbData
+);
+DWORD
+WINAPI
+SetPrinterDataW(
+ HANDLE hPrinter,
+ LPWSTR pValueName,
+ DWORD Type,
+ LPBYTE pData,
+ DWORD cbData
+);
+#ifdef UNICODE
+#define SetPrinterData SetPrinterDataW
+#else
+#define SetPrinterData SetPrinterDataA
+#endif // !UNICODE
+
+
+DWORD
+WINAPI
+DeletePrinterDataA(
+ HANDLE hPrinter,
+ LPSTR pValueName
+);
+DWORD
+WINAPI
+DeletePrinterDataW(
+ HANDLE hPrinter,
+ LPWSTR pValueName
+);
+#ifdef UNICODE
+#define DeletePrinterData DeletePrinterDataW
+#else
+#define DeletePrinterData DeletePrinterDataA
+#endif // !UNICODE
+
+#define PRINTER_NOTIFY_TYPE 0x00
+#define JOB_NOTIFY_TYPE 0x01
+
+#define PRINTER_NOTIFY_FIELD_SERVER_NAME 0x00
+#define PRINTER_NOTIFY_FIELD_PRINTER_NAME 0x01
+#define PRINTER_NOTIFY_FIELD_SHARE_NAME 0x02
+#define PRINTER_NOTIFY_FIELD_PORT_NAME 0x03
+#define PRINTER_NOTIFY_FIELD_DRIVER_NAME 0x04
+#define PRINTER_NOTIFY_FIELD_COMMENT 0x05
+#define PRINTER_NOTIFY_FIELD_LOCATION 0x06
+#define PRINTER_NOTIFY_FIELD_DEVMODE 0x07
+#define PRINTER_NOTIFY_FIELD_SEPFILE 0x08
+#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR 0x09
+#define PRINTER_NOTIFY_FIELD_PARAMETERS 0x0A
+#define PRINTER_NOTIFY_FIELD_DATATYPE 0x0B
+#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0C
+#define PRINTER_NOTIFY_FIELD_ATTRIBUTES 0x0D
+#define PRINTER_NOTIFY_FIELD_PRIORITY 0x0E
+#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY 0x0F
+#define PRINTER_NOTIFY_FIELD_START_TIME 0x10
+#define PRINTER_NOTIFY_FIELD_UNTIL_TIME 0x11
+#define PRINTER_NOTIFY_FIELD_STATUS 0x12
+#define PRINTER_NOTIFY_FIELD_STATUS_STRING 0x13
+#define PRINTER_NOTIFY_FIELD_CJOBS 0x14
+#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM 0x15
+#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES 0x16
+#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED 0x17
+#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES 0x18
+#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED 0x19
+
+#define JOB_NOTIFY_FIELD_PRINTER_NAME 0x00
+#define JOB_NOTIFY_FIELD_MACHINE_NAME 0x01
+#define JOB_NOTIFY_FIELD_PORT_NAME 0x02
+#define JOB_NOTIFY_FIELD_USER_NAME 0x03
+#define JOB_NOTIFY_FIELD_NOTIFY_NAME 0x04
+#define JOB_NOTIFY_FIELD_DATATYPE 0x05
+#define JOB_NOTIFY_FIELD_PRINT_PROCESSOR 0x06
+#define JOB_NOTIFY_FIELD_PARAMETERS 0x07
+#define JOB_NOTIFY_FIELD_DRIVER_NAME 0x08
+#define JOB_NOTIFY_FIELD_DEVMODE 0x09
+#define JOB_NOTIFY_FIELD_STATUS 0x0A
+#define JOB_NOTIFY_FIELD_STATUS_STRING 0x0B
+#define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0C
+#define JOB_NOTIFY_FIELD_DOCUMENT 0x0D
+#define JOB_NOTIFY_FIELD_PRIORITY 0x0E
+#define JOB_NOTIFY_FIELD_POSITION 0x0F
+#define JOB_NOTIFY_FIELD_SUBMITTED 0x10
+#define JOB_NOTIFY_FIELD_START_TIME 0x11
+#define JOB_NOTIFY_FIELD_UNTIL_TIME 0x12
+#define JOB_NOTIFY_FIELD_TIME 0x13
+#define JOB_NOTIFY_FIELD_TOTAL_PAGES 0x14
+#define JOB_NOTIFY_FIELD_PAGES_PRINTED 0x15
+#define JOB_NOTIFY_FIELD_TOTAL_BYTES 0x16
+#define JOB_NOTIFY_FIELD_BYTES_PRINTED 0x17
+
+
+typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
+ WORD Type;
+ WORD Reserved0;
+ DWORD Reserved1;
+ DWORD Reserved2;
+ DWORD Count;
+ PWORD pFields;
+} PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE, *LPPRINTER_NOTIFY_OPTIONS_TYPE;
+
+
+#define PRINTER_NOTIFY_OPTIONS_REFRESH 0x01
+
+typedef struct _PRINTER_NOTIFY_OPTIONS {
+ DWORD Version;
+ DWORD Flags;
+ DWORD Count;
+ PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
+} PRINTER_NOTIFY_OPTIONS, *PPRINTER_NOTIFY_OPTIONS, *LPPRINTER_NOTIFY_OPTIONS;
+
+
+
+#define PRINTER_NOTIFY_INFO_DISCARDED 0x01
+
+typedef struct _PRINTER_NOTIFY_INFO_DATA {
+ WORD Type;
+ WORD Field;
+ DWORD Reserved;
+ DWORD Id;
+ union {
+ DWORD adwData[2];
+ struct {
+ DWORD cbBuf;
+ LPVOID pBuf;
+ } Data;
+ } NotifyData;
+} PRINTER_NOTIFY_INFO_DATA, *PPRINTER_NOTIFY_INFO_DATA, *LPPRINTER_NOTIFY_INFO_DATA;
+
+typedef struct _PRINTER_NOTIFY_INFO {
+ DWORD Version;
+ DWORD Flags;
+ DWORD Count;
+ PRINTER_NOTIFY_INFO_DATA aData[1];
+} PRINTER_NOTIFY_INFO, *PPRINTER_NOTIFY_INFO, *LPPRINTER_NOTIFY_INFO;
+
+DWORD
+WINAPI
+WaitForPrinterChange(
+ HANDLE hPrinter,
+ DWORD Flags
+);
+
+HANDLE
+WINAPI
+FindFirstPrinterChangeNotification(
+ HANDLE hPrinter,
+ DWORD fdwFlags,
+ DWORD fdwOptions,
+ LPVOID pPrinterNotifyOptions
+);
+
+
+BOOL
+WINAPI
+FindNextPrinterChangeNotification(
+ HANDLE hChange,
+ PDWORD pdwChange,
+ LPVOID pvReserved,
+ LPVOID *ppPrinterNotifyInfo
+);
+
+BOOL
+WINAPI
+FreePrinterNotifyInfo(
+ PPRINTER_NOTIFY_INFO pPrinterNotifyInfo
+);
+
+BOOL
+WINAPI
+FindClosePrinterChangeNotification(
+ HANDLE hChange
+);
+
+#define PRINTER_CHANGE_ADD_PRINTER 0x00000001
+#define PRINTER_CHANGE_SET_PRINTER 0x00000002
+#define PRINTER_CHANGE_DELETE_PRINTER 0x00000004
+#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 0x00000008
+#define PRINTER_CHANGE_PRINTER 0x000000FF
+#define PRINTER_CHANGE_ADD_JOB 0x00000100
+#define PRINTER_CHANGE_SET_JOB 0x00000200
+#define PRINTER_CHANGE_DELETE_JOB 0x00000400
+#define PRINTER_CHANGE_WRITE_JOB 0x00000800
+#define PRINTER_CHANGE_JOB 0x0000FF00
+#define PRINTER_CHANGE_ADD_FORM 0x00010000
+#define PRINTER_CHANGE_SET_FORM 0x00020000
+#define PRINTER_CHANGE_DELETE_FORM 0x00040000
+#define PRINTER_CHANGE_FORM 0x00070000
+#define PRINTER_CHANGE_ADD_PORT 0x00100000
+#define PRINTER_CHANGE_CONFIGURE_PORT 0x00200000
+#define PRINTER_CHANGE_DELETE_PORT 0x00400000
+#define PRINTER_CHANGE_PORT 0x00700000
+#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR 0x01000000
+#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR 0x04000000
+#define PRINTER_CHANGE_PRINT_PROCESSOR 0x07000000
+#define PRINTER_CHANGE_ADD_PRINTER_DRIVER 0x10000000
+#define PRINTER_CHANGE_SET_PRINTER_DRIVER 0x20000000
+#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER 0x40000000
+#define PRINTER_CHANGE_PRINTER_DRIVER 0x70000000
+#define PRINTER_CHANGE_TIMEOUT 0x80000000
+#define PRINTER_CHANGE_ALL 0x7777FFFF
+
+DWORD
+WINAPI
+PrinterMessageBoxA(
+ HANDLE hPrinter,
+ DWORD Error,
+ HWND hWnd,
+ LPSTR pText,
+ LPSTR pCaption,
+ DWORD dwType
+);
+DWORD
+WINAPI
+PrinterMessageBoxW(
+ HANDLE hPrinter,
+ DWORD Error,
+ HWND hWnd,
+ LPWSTR pText,
+ LPWSTR pCaption,
+ DWORD dwType
+);
+#ifdef UNICODE
+#define PrinterMessageBox PrinterMessageBoxW
+#else
+#define PrinterMessageBox PrinterMessageBoxA
+#endif // !UNICODE
+
+
+
+#define PRINTER_ERROR_INFORMATION 0x80000000
+#define PRINTER_ERROR_WARNING 0x40000000
+#define PRINTER_ERROR_SEVERE 0x20000000
+
+#define PRINTER_ERROR_OUTOFPAPER 0x00000001
+#define PRINTER_ERROR_JAM 0x00000002
+#define PRINTER_ERROR_OUTOFTONER 0x00000004
+
+BOOL
+WINAPI
+ClosePrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+AddFormA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm
+);
+BOOL
+WINAPI
+AddFormW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm
+);
+#ifdef UNICODE
+#define AddForm AddFormW
+#else
+#define AddForm AddFormA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+DeleteFormA(
+ HANDLE hPrinter,
+ LPSTR pFormName
+);
+BOOL
+WINAPI
+DeleteFormW(
+ HANDLE hPrinter,
+ LPWSTR pFormName
+);
+#ifdef UNICODE
+#define DeleteForm DeleteFormW
+#else
+#define DeleteForm DeleteFormA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+GetFormA(
+ HANDLE hPrinter,
+ LPSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetFormW(
+ HANDLE hPrinter,
+ LPWSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetForm GetFormW
+#else
+#define GetForm GetFormA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+SetFormA(
+ HANDLE hPrinter,
+ LPSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm
+);
+BOOL
+WINAPI
+SetFormW(
+ HANDLE hPrinter,
+ LPWSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm
+);
+#ifdef UNICODE
+#define SetForm SetFormW
+#else
+#define SetForm SetFormA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+EnumFormsA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumFormsW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumForms EnumFormsW
+#else
+#define EnumForms EnumFormsA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+EnumMonitorsA(
+ LPSTR pName,
+ DWORD Level,
+ LPBYTE pMonitors,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumMonitorsW(
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pMonitors,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumMonitors EnumMonitorsW
+#else
+#define EnumMonitors EnumMonitorsA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+AddMonitorA(
+ LPSTR pName,
+ DWORD Level,
+ LPBYTE pMonitors
+);
+BOOL
+WINAPI
+AddMonitorW(
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pMonitors
+);
+#ifdef UNICODE
+#define AddMonitor AddMonitorW
+#else
+#define AddMonitor AddMonitorA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+DeleteMonitorA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ LPSTR pMonitorName
+);
+BOOL
+WINAPI
+DeleteMonitorW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pMonitorName
+);
+#ifdef UNICODE
+#define DeleteMonitor DeleteMonitorW
+#else
+#define DeleteMonitor DeleteMonitorA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+EnumPortsA(
+ LPSTR pName,
+ DWORD Level,
+ LPBYTE pPorts,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumPortsW(
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pPorts,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumPorts EnumPortsW
+#else
+#define EnumPorts EnumPortsA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+AddPortA(
+ LPSTR pName,
+ HWND hWnd,
+ LPSTR pMonitorName
+);
+BOOL
+WINAPI
+AddPortW(
+ LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pMonitorName
+);
+#ifdef UNICODE
+#define AddPort AddPortW
+#else
+#define AddPort AddPortA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+ConfigurePortA(
+ LPSTR pName,
+ HWND hWnd,
+ LPSTR pPortName
+);
+BOOL
+WINAPI
+ConfigurePortW(
+ LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pPortName
+);
+#ifdef UNICODE
+#define ConfigurePort ConfigurePortW
+#else
+#define ConfigurePort ConfigurePortA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+DeletePortA(
+ LPSTR pName,
+ HWND hWnd,
+ LPSTR pPortName
+);
+BOOL
+WINAPI
+DeletePortW(
+ LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pPortName
+);
+#ifdef UNICODE
+#define DeletePort DeletePortW
+#else
+#define DeletePort DeletePortA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+SetPortA(
+ LPSTR pName,
+ LPSTR pPortName,
+ DWORD dwLevel,
+ LPBYTE pPortInfo
+);
+BOOL
+WINAPI
+SetPortW(
+ LPWSTR pName,
+ LPWSTR pPortName,
+ DWORD dwLevel,
+ LPBYTE pPortInfo
+);
+#ifdef UNICODE
+#define SetPort SetPortW
+#else
+#define SetPort SetPortA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+AddPrinterConnectionA(
+ LPSTR pName
+);
+BOOL
+WINAPI
+AddPrinterConnectionW(
+ LPWSTR pName
+);
+#ifdef UNICODE
+#define AddPrinterConnection AddPrinterConnectionW
+#else
+#define AddPrinterConnection AddPrinterConnectionA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+DeletePrinterConnectionA(
+ LPSTR pName
+);
+BOOL
+WINAPI
+DeletePrinterConnectionW(
+ LPWSTR pName
+);
+#ifdef UNICODE
+#define DeletePrinterConnection DeletePrinterConnectionW
+#else
+#define DeletePrinterConnection DeletePrinterConnectionA
+#endif // !UNICODE
+
+
+
+HANDLE
+WINAPI
+ConnectToPrinterDlg(
+ HWND hwnd,
+ DWORD Flags
+);
+
+typedef struct _PROVIDOR_INFO_1A{
+ LPSTR pName;
+ LPSTR pEnvironment;
+ LPSTR pDLLName;
+} PROVIDOR_INFO_1A, *PPROVIDOR_INFO_1A, *LPPROVIDOR_INFO_1A;
+typedef struct _PROVIDOR_INFO_1W{
+ LPWSTR pName;
+ LPWSTR pEnvironment;
+ LPWSTR pDLLName;
+} PROVIDOR_INFO_1W, *PPROVIDOR_INFO_1W, *LPPROVIDOR_INFO_1W;
+#ifdef UNICODE
+typedef PROVIDOR_INFO_1W PROVIDOR_INFO_1;
+typedef PPROVIDOR_INFO_1W PPROVIDOR_INFO_1;
+typedef LPPROVIDOR_INFO_1W LPPROVIDOR_INFO_1;
+#else
+typedef PROVIDOR_INFO_1A PROVIDOR_INFO_1;
+typedef PPROVIDOR_INFO_1A PPROVIDOR_INFO_1;
+typedef LPPROVIDOR_INFO_1A LPPROVIDOR_INFO_1;
+#endif // UNICODE
+
+
+
+BOOL
+WINAPI
+AddPrintProvidorA(
+ LPSTR pName,
+ DWORD level,
+ LPBYTE pProvidorInfo
+);
+BOOL
+WINAPI
+AddPrintProvidorW(
+ LPWSTR pName,
+ DWORD level,
+ LPBYTE pProvidorInfo
+);
+#ifdef UNICODE
+#define AddPrintProvidor AddPrintProvidorW
+#else
+#define AddPrintProvidor AddPrintProvidorA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+DeletePrintProvidorA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ LPSTR pPrintProvidorName
+);
+BOOL
+WINAPI
+DeletePrintProvidorW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pPrintProvidorName
+);
+#ifdef UNICODE
+#define DeletePrintProvidor DeletePrintProvidorW
+#else
+#define DeletePrintProvidor DeletePrintProvidorA
+#endif // !UNICODE
+
+
+
+/*
+ * SetPrinterData and GetPrinterData Server Handle Key values
+ */
+
+#define SPLREG_DEFAULT_SPOOL_DIRECTORY TEXT("DefaultSpoolDirectory")
+#define SPLREG_PORT_THREAD_PRIORITY_DEFAULT TEXT("PortThreadPriorityDefault")
+#define SPLREG_PORT_THREAD_PRIORITY TEXT("PortThreadPriority")
+#define SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT TEXT("SchedulerThreadPriorityDefault")
+#define SPLREG_SCHEDULER_THREAD_PRIORITY TEXT("SchedulerThreadPriority")
+#define SPLREG_BEEP_ENABLED TEXT("BeepEnabled")
+#define SPLREG_NET_POPUP TEXT("NetPopup")
+#define SPLREG_EVENT_LOG TEXT("EventLog")
+#define SPLREG_MAJOR_VERSION TEXT("MajorVersion")
+#define SPLREG_MINOR_VERSION TEXT("MinorVersion")
+#define SPLREG_ARCHITECTURE TEXT("Architecture")
+
+
+#define SERVER_ACCESS_ADMINISTER 0x00000001
+#define SERVER_ACCESS_ENUMERATE 0x00000002
+
+#define PRINTER_ACCESS_ADMINISTER 0x00000004
+#define PRINTER_ACCESS_USE 0x00000008
+
+#define JOB_ACCESS_ADMINISTER 0x00000010
+
+
+/*
+ * Access rights for print servers
+ */
+
+#define SERVER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ SERVER_ACCESS_ADMINISTER |\
+ SERVER_ACCESS_ENUMERATE)
+
+#define SERVER_READ (STANDARD_RIGHTS_READ |\
+ SERVER_ACCESS_ENUMERATE)
+
+#define SERVER_WRITE (STANDARD_RIGHTS_WRITE |\
+ SERVER_ACCESS_ADMINISTER |\
+ SERVER_ACCESS_ENUMERATE)
+
+#define SERVER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ SERVER_ACCESS_ENUMERATE)
+
+/*
+ * Access rights for printers
+ */
+
+#define PRINTER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ PRINTER_ACCESS_ADMINISTER |\
+ PRINTER_ACCESS_USE)
+
+#define PRINTER_READ (STANDARD_RIGHTS_READ |\
+ PRINTER_ACCESS_USE)
+
+#define PRINTER_WRITE (STANDARD_RIGHTS_WRITE |\
+ PRINTER_ACCESS_USE)
+
+#define PRINTER_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ PRINTER_ACCESS_USE)
+
+/*
+ * Access rights for jobs
+ */
+
+#define JOB_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ JOB_ACCESS_ADMINISTER)
+
+#define JOB_READ (STANDARD_RIGHTS_READ |\
+ JOB_ACCESS_ADMINISTER)
+
+#define JOB_WRITE (STANDARD_RIGHTS_WRITE |\
+ JOB_ACCESS_ADMINISTER)
+
+#define JOB_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ JOB_ACCESS_ADMINISTER)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _WINSPOOL_
diff --git a/public/sdk/inc/winsvc.h b/public/sdk/inc/winsvc.h
new file mode 100644
index 000000000..56039e2d9
--- /dev/null
+++ b/public/sdk/inc/winsvc.h
@@ -0,0 +1,751 @@
+/*++ BUILD Version: 0010 // Increment this if a change has global effects
+
+Copyright (c) 1995-1996 Microsoft Corporation
+
+Module Name:
+
+ winsvc.h
+
+Abstract:
+
+ Header file for the Service Control Manager
+
+Environment:
+
+ User Mode - Win32
+
+--*/
+#ifndef _WINSVC_
+#define _WINSVC_
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+
+#if !defined(WINADVAPI)
+#if !defined(_ADVAPI32_)
+#define WINADVAPI DECLSPEC_IMPORT
+#else
+#define WINADVAPI
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Constants
+//
+
+//
+// Service database names
+//
+
+#define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
+#define SERVICES_FAILED_DATABASEW L"ServicesFailed"
+
+#define SERVICES_ACTIVE_DATABASEA "ServicesActive"
+#define SERVICES_FAILED_DATABASEA "ServicesFailed"
+
+//
+// Character to designate that a name is a group
+//
+
+#define SC_GROUP_IDENTIFIERW L'+'
+#define SC_GROUP_IDENTIFIERA '+'
+
+#ifdef UNICODE
+
+#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
+#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
+
+
+#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
+
+#else // ndef UNICODE
+
+#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
+#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
+
+#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
+#endif // ndef UNICODE
+
+
+//
+// Value to indicate no change to an optional parameter
+//
+#define SERVICE_NO_CHANGE 0xffffffff
+
+//
+// Service State -- for Enum Requests (Bit Mask)
+//
+#define SERVICE_ACTIVE 0x00000001
+#define SERVICE_INACTIVE 0x00000002
+#define SERVICE_STATE_ALL (SERVICE_ACTIVE | \
+ SERVICE_INACTIVE)
+
+//
+// Controls
+//
+#define SERVICE_CONTROL_STOP 0x00000001
+#define SERVICE_CONTROL_PAUSE 0x00000002
+#define SERVICE_CONTROL_CONTINUE 0x00000003
+#define SERVICE_CONTROL_INTERROGATE 0x00000004
+#define SERVICE_CONTROL_SHUTDOWN 0x00000005
+
+//
+// Service State -- for CurrentState
+//
+#define SERVICE_STOPPED 0x00000001
+#define SERVICE_START_PENDING 0x00000002
+#define SERVICE_STOP_PENDING 0x00000003
+#define SERVICE_RUNNING 0x00000004
+#define SERVICE_CONTINUE_PENDING 0x00000005
+#define SERVICE_PAUSE_PENDING 0x00000006
+#define SERVICE_PAUSED 0x00000007
+
+//
+// Controls Accepted (Bit Mask)
+//
+#define SERVICE_ACCEPT_STOP 0x00000001
+#define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002
+#define SERVICE_ACCEPT_SHUTDOWN 0x00000004
+
+//
+// Service Control Manager object specific access types
+//
+#define SC_MANAGER_CONNECT 0x0001
+#define SC_MANAGER_CREATE_SERVICE 0x0002
+#define SC_MANAGER_ENUMERATE_SERVICE 0x0004
+#define SC_MANAGER_LOCK 0x0008
+#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010
+#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
+
+#define SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
+ SC_MANAGER_CONNECT | \
+ SC_MANAGER_CREATE_SERVICE | \
+ SC_MANAGER_ENUMERATE_SERVICE | \
+ SC_MANAGER_LOCK | \
+ SC_MANAGER_QUERY_LOCK_STATUS | \
+ SC_MANAGER_MODIFY_BOOT_CONFIG)
+
+
+
+//
+// Service object specific access type
+//
+#define SERVICE_QUERY_CONFIG 0x0001
+#define SERVICE_CHANGE_CONFIG 0x0002
+#define SERVICE_QUERY_STATUS 0x0004
+#define SERVICE_ENUMERATE_DEPENDENTS 0x0008
+#define SERVICE_START 0x0010
+#define SERVICE_STOP 0x0020
+#define SERVICE_PAUSE_CONTINUE 0x0040
+#define SERVICE_INTERROGATE 0x0080
+#define SERVICE_USER_DEFINED_CONTROL 0x0100
+
+#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
+ SERVICE_QUERY_CONFIG | \
+ SERVICE_CHANGE_CONFIG | \
+ SERVICE_QUERY_STATUS | \
+ SERVICE_ENUMERATE_DEPENDENTS | \
+ SERVICE_START | \
+ SERVICE_STOP | \
+ SERVICE_PAUSE_CONTINUE | \
+ SERVICE_INTERROGATE | \
+ SERVICE_USER_DEFINED_CONTROL)
+
+
+//
+// Handle Types
+//
+
+typedef HANDLE SC_HANDLE;
+typedef SC_HANDLE *LPSC_HANDLE;
+
+typedef DWORD SERVICE_STATUS_HANDLE;
+
+//
+// Service Status Structure
+//
+
+typedef struct _SERVICE_STATUS {
+ DWORD dwServiceType;
+ DWORD dwCurrentState;
+ DWORD dwControlsAccepted;
+ DWORD dwWin32ExitCode;
+ DWORD dwServiceSpecificExitCode;
+ DWORD dwCheckPoint;
+ DWORD dwWaitHint;
+} SERVICE_STATUS, *LPSERVICE_STATUS;
+
+
+
+//
+// Service Status Enumeration Structure
+//
+
+typedef struct _ENUM_SERVICE_STATUSA {
+ LPSTR lpServiceName;
+ LPSTR lpDisplayName;
+ SERVICE_STATUS ServiceStatus;
+} ENUM_SERVICE_STATUSA, *LPENUM_SERVICE_STATUSA;
+typedef struct _ENUM_SERVICE_STATUSW {
+ LPWSTR lpServiceName;
+ LPWSTR lpDisplayName;
+ SERVICE_STATUS ServiceStatus;
+} ENUM_SERVICE_STATUSW, *LPENUM_SERVICE_STATUSW;
+#ifdef UNICODE
+typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS;
+typedef LPENUM_SERVICE_STATUSW LPENUM_SERVICE_STATUS;
+#else
+typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS;
+typedef LPENUM_SERVICE_STATUSA LPENUM_SERVICE_STATUS;
+#endif // UNICODE
+
+
+//
+// Structures for the Lock API functions
+//
+
+typedef LPVOID SC_LOCK;
+
+typedef struct _QUERY_SERVICE_LOCK_STATUSA {
+ DWORD fIsLocked;
+ LPSTR lpLockOwner;
+ DWORD dwLockDuration;
+} QUERY_SERVICE_LOCK_STATUSA, *LPQUERY_SERVICE_LOCK_STATUSA;
+typedef struct _QUERY_SERVICE_LOCK_STATUSW {
+ DWORD fIsLocked;
+ LPWSTR lpLockOwner;
+ DWORD dwLockDuration;
+} QUERY_SERVICE_LOCK_STATUSW, *LPQUERY_SERVICE_LOCK_STATUSW;
+#ifdef UNICODE
+typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS;
+typedef LPQUERY_SERVICE_LOCK_STATUSW LPQUERY_SERVICE_LOCK_STATUS;
+#else
+typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS;
+typedef LPQUERY_SERVICE_LOCK_STATUSA LPQUERY_SERVICE_LOCK_STATUS;
+#endif // UNICODE
+
+
+
+//
+// Query Service Configuration Structure
+//
+
+typedef struct _QUERY_SERVICE_CONFIGA {
+ DWORD dwServiceType;
+ DWORD dwStartType;
+ DWORD dwErrorControl;
+ LPSTR lpBinaryPathName;
+ LPSTR lpLoadOrderGroup;
+ DWORD dwTagId;
+ LPSTR lpDependencies;
+ LPSTR lpServiceStartName;
+ LPSTR lpDisplayName;
+} QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA;
+typedef struct _QUERY_SERVICE_CONFIGW {
+ DWORD dwServiceType;
+ DWORD dwStartType;
+ DWORD dwErrorControl;
+ LPWSTR lpBinaryPathName;
+ LPWSTR lpLoadOrderGroup;
+ DWORD dwTagId;
+ LPWSTR lpDependencies;
+ LPWSTR lpServiceStartName;
+ LPWSTR lpDisplayName;
+} QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;
+#ifdef UNICODE
+typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG;
+typedef LPQUERY_SERVICE_CONFIGW LPQUERY_SERVICE_CONFIG;
+#else
+typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG;
+typedef LPQUERY_SERVICE_CONFIGA LPQUERY_SERVICE_CONFIG;
+#endif // UNICODE
+
+
+
+//
+// Function Prototype for the Service Main Function
+//
+
+typedef VOID (WINAPI *LPSERVICE_MAIN_FUNCTIONW)(
+ DWORD dwNumServicesArgs,
+ LPWSTR *lpServiceArgVectors
+ );
+
+typedef VOID (WINAPI *LPSERVICE_MAIN_FUNCTIONA)(
+ DWORD dwNumServicesArgs,
+ LPSTR *lpServiceArgVectors
+ );
+
+#ifdef UNICODE
+#define LPSERVICE_MAIN_FUNCTION LPSERVICE_MAIN_FUNCTIONW
+#else
+#define LPSERVICE_MAIN_FUNCTION LPSERVICE_MAIN_FUNCTIONA
+#endif //UNICODE
+
+
+//
+// Service Start Table
+//
+
+typedef struct _SERVICE_TABLE_ENTRYA {
+ LPSTR lpServiceName;
+ LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
+}SERVICE_TABLE_ENTRYA, *LPSERVICE_TABLE_ENTRYA;
+typedef struct _SERVICE_TABLE_ENTRYW {
+ LPWSTR lpServiceName;
+ LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
+}SERVICE_TABLE_ENTRYW, *LPSERVICE_TABLE_ENTRYW;
+#ifdef UNICODE
+typedef SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY;
+typedef LPSERVICE_TABLE_ENTRYW LPSERVICE_TABLE_ENTRY;
+#else
+typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY;
+typedef LPSERVICE_TABLE_ENTRYA LPSERVICE_TABLE_ENTRY;
+#endif // UNICODE
+
+//
+// Prototype for the Service Control Handler Function
+//
+
+typedef VOID (WINAPI *LPHANDLER_FUNCTION)(
+ DWORD dwControl
+ );
+
+
+
+///////////////////////////////////////////////////////////////////////////
+// API Function Prototypes
+///////////////////////////////////////////////////////////////////////////
+
+WINADVAPI
+BOOL
+WINAPI
+ChangeServiceConfigA(
+ SC_HANDLE hService,
+ DWORD dwServiceType,
+ DWORD dwStartType,
+ DWORD dwErrorControl,
+ LPCSTR lpBinaryPathName,
+ LPCSTR lpLoadOrderGroup,
+ LPDWORD lpdwTagId,
+ LPCSTR lpDependencies,
+ LPCSTR lpServiceStartName,
+ LPCSTR lpPassword,
+ LPCSTR lpDisplayName
+ );
+WINADVAPI
+BOOL
+WINAPI
+ChangeServiceConfigW(
+ SC_HANDLE hService,
+ DWORD dwServiceType,
+ DWORD dwStartType,
+ DWORD dwErrorControl,
+ LPCWSTR lpBinaryPathName,
+ LPCWSTR lpLoadOrderGroup,
+ LPDWORD lpdwTagId,
+ LPCWSTR lpDependencies,
+ LPCWSTR lpServiceStartName,
+ LPCWSTR lpPassword,
+ LPCWSTR lpDisplayName
+ );
+#ifdef UNICODE
+#define ChangeServiceConfig ChangeServiceConfigW
+#else
+#define ChangeServiceConfig ChangeServiceConfigA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+CloseServiceHandle(
+ SC_HANDLE hSCObject
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+ControlService(
+ SC_HANDLE hService,
+ DWORD dwControl,
+ LPSERVICE_STATUS lpServiceStatus
+ );
+
+WINADVAPI
+SC_HANDLE
+WINAPI
+CreateServiceA(
+ SC_HANDLE hSCManager,
+ LPCSTR lpServiceName,
+ LPCSTR lpDisplayName,
+ DWORD dwDesiredAccess,
+ DWORD dwServiceType,
+ DWORD dwStartType,
+ DWORD dwErrorControl,
+ LPCSTR lpBinaryPathName,
+ LPCSTR lpLoadOrderGroup,
+ LPDWORD lpdwTagId,
+ LPCSTR lpDependencies,
+ LPCSTR lpServiceStartName,
+ LPCSTR lpPassword
+ );
+WINADVAPI
+SC_HANDLE
+WINAPI
+CreateServiceW(
+ SC_HANDLE hSCManager,
+ LPCWSTR lpServiceName,
+ LPCWSTR lpDisplayName,
+ DWORD dwDesiredAccess,
+ DWORD dwServiceType,
+ DWORD dwStartType,
+ DWORD dwErrorControl,
+ LPCWSTR lpBinaryPathName,
+ LPCWSTR lpLoadOrderGroup,
+ LPDWORD lpdwTagId,
+ LPCWSTR lpDependencies,
+ LPCWSTR lpServiceStartName,
+ LPCWSTR lpPassword
+ );
+#ifdef UNICODE
+#define CreateService CreateServiceW
+#else
+#define CreateService CreateServiceA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+DeleteService(
+ SC_HANDLE hService
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+EnumDependentServicesA(
+ SC_HANDLE hService,
+ DWORD dwServiceState,
+ LPENUM_SERVICE_STATUSA lpServices,
+ DWORD cbBufSize,
+ LPDWORD pcbBytesNeeded,
+ LPDWORD lpServicesReturned
+ );
+WINADVAPI
+BOOL
+WINAPI
+EnumDependentServicesW(
+ SC_HANDLE hService,
+ DWORD dwServiceState,
+ LPENUM_SERVICE_STATUSW lpServices,
+ DWORD cbBufSize,
+ LPDWORD pcbBytesNeeded,
+ LPDWORD lpServicesReturned
+ );
+#ifdef UNICODE
+#define EnumDependentServices EnumDependentServicesW
+#else
+#define EnumDependentServices EnumDependentServicesA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+EnumServicesStatusA(
+ SC_HANDLE hSCManager,
+ DWORD dwServiceType,
+ DWORD dwServiceState,
+ LPENUM_SERVICE_STATUSA lpServices,
+ DWORD cbBufSize,
+ LPDWORD pcbBytesNeeded,
+ LPDWORD lpServicesReturned,
+ LPDWORD lpResumeHandle
+ );
+WINADVAPI
+BOOL
+WINAPI
+EnumServicesStatusW(
+ SC_HANDLE hSCManager,
+ DWORD dwServiceType,
+ DWORD dwServiceState,
+ LPENUM_SERVICE_STATUSW lpServices,
+ DWORD cbBufSize,
+ LPDWORD pcbBytesNeeded,
+ LPDWORD lpServicesReturned,
+ LPDWORD lpResumeHandle
+ );
+#ifdef UNICODE
+#define EnumServicesStatus EnumServicesStatusW
+#else
+#define EnumServicesStatus EnumServicesStatusA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+GetServiceKeyNameA(
+ SC_HANDLE hSCManager,
+ LPCSTR lpDisplayName,
+ LPSTR lpServiceName,
+ LPDWORD lpcchBuffer
+ );
+WINADVAPI
+BOOL
+WINAPI
+GetServiceKeyNameW(
+ SC_HANDLE hSCManager,
+ LPCWSTR lpDisplayName,
+ LPWSTR lpServiceName,
+ LPDWORD lpcchBuffer
+ );
+#ifdef UNICODE
+#define GetServiceKeyName GetServiceKeyNameW
+#else
+#define GetServiceKeyName GetServiceKeyNameA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+GetServiceDisplayNameA(
+ SC_HANDLE hSCManager,
+ LPCSTR lpServiceName,
+ LPSTR lpDisplayName,
+ LPDWORD lpcchBuffer
+ );
+WINADVAPI
+BOOL
+WINAPI
+GetServiceDisplayNameW(
+ SC_HANDLE hSCManager,
+ LPCWSTR lpServiceName,
+ LPWSTR lpDisplayName,
+ LPDWORD lpcchBuffer
+ );
+#ifdef UNICODE
+#define GetServiceDisplayName GetServiceDisplayNameW
+#else
+#define GetServiceDisplayName GetServiceDisplayNameA
+#endif // !UNICODE
+
+WINADVAPI
+SC_LOCK
+WINAPI
+LockServiceDatabase(
+ SC_HANDLE hSCManager
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+NotifyBootConfigStatus(
+ BOOL BootAcceptable
+ );
+
+WINADVAPI
+SC_HANDLE
+WINAPI
+OpenSCManagerA(
+ LPCSTR lpMachineName,
+ LPCSTR lpDatabaseName,
+ DWORD dwDesiredAccess
+ );
+WINADVAPI
+SC_HANDLE
+WINAPI
+OpenSCManagerW(
+ LPCWSTR lpMachineName,
+ LPCWSTR lpDatabaseName,
+ DWORD dwDesiredAccess
+ );
+#ifdef UNICODE
+#define OpenSCManager OpenSCManagerW
+#else
+#define OpenSCManager OpenSCManagerA
+#endif // !UNICODE
+
+WINADVAPI
+SC_HANDLE
+WINAPI
+OpenServiceA(
+ SC_HANDLE hSCManager,
+ LPCSTR lpServiceName,
+ DWORD dwDesiredAccess
+ );
+WINADVAPI
+SC_HANDLE
+WINAPI
+OpenServiceW(
+ SC_HANDLE hSCManager,
+ LPCWSTR lpServiceName,
+ DWORD dwDesiredAccess
+ );
+#ifdef UNICODE
+#define OpenService OpenServiceW
+#else
+#define OpenService OpenServiceA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+QueryServiceConfigA(
+ SC_HANDLE hService,
+ LPQUERY_SERVICE_CONFIGA lpServiceConfig,
+ DWORD cbBufSize,
+ LPDWORD pcbBytesNeeded
+ );
+WINADVAPI
+BOOL
+WINAPI
+QueryServiceConfigW(
+ SC_HANDLE hService,
+ LPQUERY_SERVICE_CONFIGW lpServiceConfig,
+ DWORD cbBufSize,
+ LPDWORD pcbBytesNeeded
+ );
+#ifdef UNICODE
+#define QueryServiceConfig QueryServiceConfigW
+#else
+#define QueryServiceConfig QueryServiceConfigA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+QueryServiceLockStatusA(
+ SC_HANDLE hSCManager,
+ LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus,
+ DWORD cbBufSize,
+ LPDWORD pcbBytesNeeded
+ );
+WINADVAPI
+BOOL
+WINAPI
+QueryServiceLockStatusW(
+ SC_HANDLE hSCManager,
+ LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus,
+ DWORD cbBufSize,
+ LPDWORD pcbBytesNeeded
+ );
+#ifdef UNICODE
+#define QueryServiceLockStatus QueryServiceLockStatusW
+#else
+#define QueryServiceLockStatus QueryServiceLockStatusA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+QueryServiceObjectSecurity(
+ SC_HANDLE hService,
+ SECURITY_INFORMATION dwSecurityInformation,
+ PSECURITY_DESCRIPTOR lpSecurityDescriptor,
+ DWORD cbBufSize,
+ LPDWORD pcbBytesNeeded
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+QueryServiceStatus(
+ SC_HANDLE hService,
+ LPSERVICE_STATUS lpServiceStatus
+ );
+
+WINADVAPI
+SERVICE_STATUS_HANDLE
+WINAPI
+RegisterServiceCtrlHandlerA(
+ LPCSTR lpServiceName,
+ LPHANDLER_FUNCTION lpHandlerProc
+ );
+WINADVAPI
+SERVICE_STATUS_HANDLE
+WINAPI
+RegisterServiceCtrlHandlerW(
+ LPCWSTR lpServiceName,
+ LPHANDLER_FUNCTION lpHandlerProc
+ );
+#ifdef UNICODE
+#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW
+#else
+#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+SetServiceObjectSecurity(
+ SC_HANDLE hService,
+ SECURITY_INFORMATION dwSecurityInformation,
+ PSECURITY_DESCRIPTOR lpSecurityDescriptor
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+SetServiceStatus(
+ SERVICE_STATUS_HANDLE hServiceStatus,
+ LPSERVICE_STATUS lpServiceStatus
+ );
+
+WINADVAPI
+BOOL
+WINAPI
+StartServiceCtrlDispatcherA(
+ LPSERVICE_TABLE_ENTRYA lpServiceStartTable
+ );
+WINADVAPI
+BOOL
+WINAPI
+StartServiceCtrlDispatcherW(
+ LPSERVICE_TABLE_ENTRYW lpServiceStartTable
+ );
+#ifdef UNICODE
+#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW
+#else
+#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA
+#endif // !UNICODE
+
+
+WINADVAPI
+BOOL
+WINAPI
+StartServiceA(
+ SC_HANDLE hService,
+ DWORD dwNumServiceArgs,
+ LPCSTR *lpServiceArgVectors
+ );
+WINADVAPI
+BOOL
+WINAPI
+StartServiceW(
+ SC_HANDLE hService,
+ DWORD dwNumServiceArgs,
+ LPCWSTR *lpServiceArgVectors
+ );
+#ifdef UNICODE
+#define StartService StartServiceW
+#else
+#define StartService StartServiceA
+#endif // !UNICODE
+
+WINADVAPI
+BOOL
+WINAPI
+UnlockServiceDatabase(
+ SC_LOCK ScLock
+ );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _WINSVC_
diff --git a/public/sdk/inc/wintrust.h b/public/sdk/inc/wintrust.h
new file mode 100644
index 000000000..d7af52e96
--- /dev/null
+++ b/public/sdk/inc/wintrust.h
@@ -0,0 +1,311 @@
+/************************************************************************
+* *
+* wintrust.h -- This module defines the 32-Bit WinTrust definitions *
+* needed to build Trust Providers and / Subject *
+* Interface Packages. *
+* *
+* Copyright (c) 1990-1996, Microsoft Corp. All rights reserved. *
+* *
+************************************************************************/
+#ifndef _WINTRUST_
+#define _WINTRUST_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+/***********************************************************************
+* *
+* This section contains definitions related to: *
+* *
+* WinTrust in general *
+* *
+************************************************************************/
+
+
+//
+// WinTrust Revisioning
+//
+#define WIN_TRUST_MAJOR_REVISION_MASK 0xFFFF0000
+#define WIN_TRUST_MINOR_REVISION_MASK 0x0000FFFF
+#define WIN_TRUST_REVISION_1_0 0x00010000
+
+
+
+
+/***********************************************************************
+* *
+* This section contains definitions related to: *
+* *
+* Subject Interface Packages *
+* *
+************************************************************************/
+
+//
+// Allows passing of subject and type material.
+//
+
+typedef struct _WIN_TRUST_SIP_SUBJECT {
+ GUID * SubjectType;
+ WIN_TRUST_SUBJECT Subject;
+} WIN_TRUST_SIP_SUBJECT, *LPWIN_TRUST_SIP_SUBJECT;
+
+//
+// Templates of services that must be EXPORTED by SIPs
+// FOR USE by Trust Providers (calling through WinTrust).
+//
+
+typedef BOOL
+(WINAPI *LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO)(
+ IN LPWIN_TRUST_SIP_SUBJECT lpSubject, // pointer to subject info
+ IN LPWIN_CERTIFICATE lpSignedData // PKCS #7 Signed Data
+ );
+
+typedef BOOL
+(WINAPI *LPWINTRUST_SUBJECT_ENUM_CERTIFICATES)(
+ IN LPWIN_TRUST_SIP_SUBJECT lpSubject, // pointer to subject info
+ IN DWORD dwTypeFilter, // 0 or WIN_CERT_TYPE_xxx
+ OUT LPDWORD lpCertificateCount,
+ IN OUT LPDWORD lpIndices, // Rcvs WIN_CERT_TYPE_
+ IN DWORD dwIndexCount
+ );
+
+typedef BOOL
+(WINAPI *LPWINTRUST_SUBJECT_GET_CERTIFICATE)(
+ IN LPWIN_TRUST_SIP_SUBJECT lpSubject,
+ IN DWORD dwCertificateIndex,
+ OUT LPWIN_CERTIFICATE lpCertificate,
+ IN OUT LPDWORD lpRequiredLength
+ );
+
+typedef BOOL
+(WINAPI *LPWINTRUST_SUBJECT_GET_CERT_HEADER)(
+ IN LPWIN_TRUST_SIP_SUBJECT lpSubject,
+ IN DWORD dwCertificateIndex,
+ OUT LPWIN_CERTIFICATE lpCertificateHeader
+ );
+
+typedef BOOL
+(WINAPI *LPWINTRUST_SUBJECT_GET_NAME)(
+ IN LPWIN_TRUST_SIP_SUBJECT lpSubject,
+ IN LPWIN_CERTIFICATE lpSignedData,
+ IN OUT LPWSTR lpBuffer,
+ IN OUT LPDWORD lpRequiredLength
+ );
+
+typedef DWORD
+(WINAPI *LPWINTRUST_PROVIDER_PING) (
+ IN LPWSTR lpProviderName,
+ IN DWORD dwClientParameter,
+ OUT LPDWORD lpdwServerReturnValue
+ );
+
+
+typedef struct _WINTRUST_SIP_DISPATCH_TABLE
+{
+ LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO CheckSubjectContentInfo;
+ LPWINTRUST_SUBJECT_ENUM_CERTIFICATES EnumSubjectCertificates;
+ LPWINTRUST_SUBJECT_GET_CERTIFICATE GetSubjectCertificate;
+ LPWINTRUST_SUBJECT_GET_CERT_HEADER GetSubjectCertHeader;
+ LPWINTRUST_SUBJECT_GET_NAME GetSubjectName;
+
+} WINTRUST_SIP_DISPATCH_TABLE, *LPWINTRUST_SIP_DISPATCH_TABLE;
+
+
+
+//
+// Structure describing an individual SIP.
+//
+// This structure is passed back to WinTrust from a Subject Interface Package
+// initialization call.
+//
+typedef struct _WINTRUST_SIP_INFO {
+ DWORD dwRevision;
+ LPWINTRUST_SIP_DISPATCH_TABLE lpServices;
+ DWORD dwSubjectTypeCount;
+ GUID * lpSubjectTypeArray;
+} WINTRUST_SIP_INFO, *LPWINTRUST_SIP_INFO;
+
+
+
+//
+// SIP Intialization routine.
+// SIP DLLs are required to have a routine named:
+//
+// WinTrustSipInitialize.
+//
+// This initialization routine must have the following
+// definition:
+//
+
+typedef BOOL
+(WINAPI *LPWINTRUST_SUBJECT_PACKAGE_INITIALIZE)(
+ IN DWORD dwWinTrustRevision,
+ OUT LPWINTRUST_SIP_INFO *lpSipInfo
+ );
+
+
+
+
+/***********************************************************************
+* *
+* This section contains definitions related to: *
+* *
+* Trust Providers *
+* *
+************************************************************************/
+
+//
+// Dispatch table of WinTrust services available to Trust Providers
+//
+// Client side...
+
+typedef struct _WINTRUST_CLIENT_TP_DISPATCH_TABLE
+{
+ LPWINTRUST_PROVIDER_PING ServerPing;
+ LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO CheckSubjectContentInfo;
+ LPWINTRUST_SUBJECT_ENUM_CERTIFICATES EnumSubjectCertificates;
+ LPWINTRUST_SUBJECT_GET_CERTIFICATE GetSubjectCertificate;
+ LPWINTRUST_SUBJECT_GET_CERT_HEADER GetSubjectCertHeader;
+ LPWINTRUST_SUBJECT_GET_NAME GetSubjectName;
+
+} WINTRUST_CLIENT_TP_DISPATCH_TABLE, *LPWINTRUST_CLIENT_TP_DISPATCH_TABLE;
+
+
+// Server side...
+
+typedef struct _WINTRUST_SERVER_TP_DISPATCH_TABLE
+{
+ LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO CheckSubjectContentInfo;
+ LPWINTRUST_SUBJECT_ENUM_CERTIFICATES EnumSubectCertificates;
+ LPWINTRUST_SUBJECT_GET_CERTIFICATE GetSubjectCertificate;
+ LPWINTRUST_SUBJECT_GET_CERT_HEADER GetSubjectCertHeader;
+ LPWINTRUST_SUBJECT_GET_NAME GetSubjectName;
+
+} WINTRUST_SERVER_TP_DISPATCH_TABLE, *LPWINTRUST_SERVER_TP_DISPATCH_TABLE;
+
+
+//
+// The following structures are passed by WinTrust to a
+// Trust Provider being initialized.
+//
+// Client side...
+
+typedef struct _WINTRUST_CLIENT_TP_INFO {
+ DWORD dwRevision;
+ LPWINTRUST_CLIENT_TP_DISPATCH_TABLE lpServices;
+} WINTRUST_CLIENT_TP_INFO, *LPWINTRUST_CLIENT_TP_INFO;
+
+// Server side
+typedef struct _WINTRUST_SERVER_TP_INFO {
+ DWORD dwRevision;
+ LPWINTRUST_SERVER_TP_DISPATCH_TABLE lpServices;
+} WINTRUST_SERVER_TP_INFO, *LPWINTRUST_SERVER_TP_INFO;
+
+
+//
+// Templates of Trust Provider services available to WinTrust
+//
+typedef LONG
+(WINAPI *LPWINTRUST_PROVIDER_VERIFY_TRUST) (
+ IN HWND hwnd,
+ IN GUID * ActionID,
+ IN LPVOID ActionData
+ );
+
+typedef VOID
+(WINAPI *LPWINTRUST_PROVIDER_SUBMIT_CERTIFICATE) (
+ IN LPWIN_CERTIFICATE lpCertificate
+ );
+
+typedef VOID
+(WINAPI *LPWINTRUST_PROVIDER_CLIENT_UNLOAD) (
+ IN LPVOID lpTrustProviderInfo
+ );
+
+typedef VOID
+(WINAPI *LPWINTRUST_PROVIDER_SERVER_UNLOAD) (
+ IN LPVOID lpTrustProviderInfo
+ );
+
+//
+// Dispatch table of Trust provider services available for use by WinTrust
+//
+// Client side...
+
+typedef struct _WINTRUST_PROVIDER_CLIENT_SERVICES
+{
+ LPWINTRUST_PROVIDER_CLIENT_UNLOAD Unload;
+ LPWINTRUST_PROVIDER_VERIFY_TRUST VerifyTrust;
+ LPWINTRUST_PROVIDER_SUBMIT_CERTIFICATE SubmitCertificate;
+
+} WINTRUST_PROVIDER_CLIENT_SERVICES, *LPWINTRUST_PROVIDER_CLIENT_SERVICES;
+
+
+typedef struct _WINTRUST_PROVIDER_SERVER_SERVICES
+{
+ LPWINTRUST_PROVIDER_SERVER_UNLOAD Unload;
+ LPWINTRUST_PROVIDER_PING Ping;
+
+} WINTRUST_PROVIDER_SERVER_SERVICES, *LPWINTRUST_PROVIDER_SERVER_SERVICES;
+
+
+//
+// This structure is passed back from the client-side Trust Provider
+// following initialization of that Trust Provider.
+//
+typedef struct _WINTRUST_PROVIDER_CLIENT_INFO {
+ DWORD dwRevision;
+ LPWINTRUST_PROVIDER_CLIENT_SERVICES lpServices;
+ DWORD dwActionIdCount;
+ GUID * lpActionIdArray;
+} WINTRUST_PROVIDER_CLIENT_INFO, *LPWINTRUST_PROVIDER_CLIENT_INFO;
+
+//
+// This structure is passed back from the server-side trust provider following
+// initialization of that trust provider.
+//
+typedef struct _WINTRUST_PROVIDER_SERVER_INFO {
+ DWORD dwRevision;
+ LPWINTRUST_PROVIDER_SERVER_SERVICES lpServices;
+} WINTRUST_PROVIDER_SERVER_INFO, *LPWINTRUST_PROVIDER_SERVER_INFO;
+
+
+
+
+
+//
+// Trust Provider Initialization Routines
+// Each Trust Provider DLL must have a client and server side initialization
+// routine. The routines must be named:
+//
+// WinTrustProviderClientInitialize()
+// and
+// WinTrustProviderServerInitialize()
+//
+// and must be defined to match the following templates...
+//
+typedef BOOL
+(WINAPI *LPWINTRUST_PROVIDER_CLIENT_INITIALIZE)(
+ IN DWORD dwWinTrustRevision,
+ IN LPWINTRUST_CLIENT_TP_INFO lpWinTrustInfo,
+ IN LPWSTR lpProviderName,
+ OUT LPWINTRUST_PROVIDER_CLIENT_INFO *lpTrustProviderInfo
+ );
+
+typedef BOOL
+(WINAPI *LPWINTRUST_PROVIDER_SERVER_INITIALIZE) (
+ IN DWORD dwWinTrustRevision,
+ IN LPWINTRUST_SERVER_TP_INFO lpWinTrustInfo,
+ IN LPWSTR lpProviderName,
+ OUT LPWINTRUST_PROVIDER_SERVER_INFO *lpTrustProviderInfo
+ );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _WINTRUST_
diff --git a/public/sdk/inc/winuser.h b/public/sdk/inc/winuser.h
new file mode 100644
index 000000000..d79ad62d4
--- /dev/null
+++ b/public/sdk/inc/winuser.h
@@ -0,0 +1,8676 @@
+/****************************************************************************
+* *
+* winuser.h -- USER procedure declarations, constant definitions and macros *
+* *
+* Copyright (c) 1985-1996, Microsoft Corp. All rights reserved. *
+* *
+****************************************************************************/
+
+
+#ifndef _WINUSER_
+#define _WINUSER_
+
+//
+// Define API decoration for direct importing of DLL references.
+//
+
+#if !defined(_USER32_)
+#define WINUSERAPI DECLSPEC_IMPORT
+#else
+#define WINUSERAPI
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#ifndef WINVER
+#define WINVER 0x0400 /* version 4.0 */
+#endif /* !WINVER */
+
+#include <stdarg.h>
+
+#ifndef NOUSER
+
+typedef HANDLE HDWP;
+typedef VOID MENUTEMPLATEA;
+typedef VOID MENUTEMPLATEW;
+#ifdef UNICODE
+typedef MENUTEMPLATEW MENUTEMPLATE;
+#else
+typedef MENUTEMPLATEA MENUTEMPLATE;
+#endif // UNICODE
+typedef PVOID LPMENUTEMPLATEA;
+typedef PVOID LPMENUTEMPLATEW;
+#ifdef UNICODE
+typedef LPMENUTEMPLATEW LPMENUTEMPLATE;
+#else
+typedef LPMENUTEMPLATEA LPMENUTEMPLATE;
+#endif // UNICODE
+
+typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
+
+#ifdef STRICT
+
+typedef BOOL (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);
+typedef VOID (CALLBACK* TIMERPROC)(HWND, UINT, UINT, DWORD);
+typedef BOOL (CALLBACK* GRAYSTRINGPROC)(HDC, LPARAM, int);
+typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM);
+typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam);
+typedef VOID (CALLBACK* SENDASYNCPROC)(HWND, UINT, DWORD, LRESULT);
+
+typedef BOOL (CALLBACK* PROPENUMPROCA)(HWND, LPCSTR, HANDLE);
+typedef BOOL (CALLBACK* PROPENUMPROCW)(HWND, LPCWSTR, HANDLE);
+
+typedef BOOL (CALLBACK* PROPENUMPROCEXA)(HWND, LPSTR, HANDLE, DWORD);
+typedef BOOL (CALLBACK* PROPENUMPROCEXW)(HWND, LPWSTR, HANDLE, DWORD);
+
+typedef int (CALLBACK* EDITWORDBREAKPROCA)(LPSTR lpch, int ichCurrent, int cch, int code);
+typedef int (CALLBACK* EDITWORDBREAKPROCW)(LPWSTR lpch, int ichCurrent, int cch, int code);
+
+#if(WINVER >= 0x0400)
+typedef BOOL (CALLBACK* DRAWSTATEPROC)(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy);
+#endif /* WINVER >= 0x0400 */
+#else /* !STRICT */
+
+typedef FARPROC DLGPROC;
+typedef FARPROC TIMERPROC;
+typedef FARPROC GRAYSTRINGPROC;
+typedef FARPROC WNDENUMPROC;
+typedef FARPROC HOOKPROC;
+typedef FARPROC SENDASYNCPROC;
+
+typedef FARPROC EDITWORDBREAKPROCA;
+typedef FARPROC EDITWORDBREAKPROCW;
+
+typedef FARPROC PROPENUMPROCA;
+typedef FARPROC PROPENUMPROCW;
+
+typedef FARPROC PROPENUMPROCEXA;
+typedef FARPROC PROPENUMPROCEXW;
+
+#if(WINVER >= 0x0400)
+typedef FARPROC DRAWSTATEPROC;
+#endif /* WINVER >= 0x0400 */
+#endif /* !STRICT */
+
+#ifdef UNICODE
+typedef PROPENUMPROCW PROPENUMPROC;
+typedef PROPENUMPROCEXW PROPENUMPROCEX;
+typedef EDITWORDBREAKPROCW EDITWORDBREAKPROC;
+#else /* !UNICODE */
+typedef PROPENUMPROCA PROPENUMPROC;
+typedef PROPENUMPROCEXA PROPENUMPROCEX;
+typedef EDITWORDBREAKPROCA EDITWORDBREAKPROC;
+#endif /* UNICODE */
+
+#ifdef STRICT
+
+typedef BOOL (CALLBACK* NAMEENUMPROCA)(LPSTR, LPARAM);
+typedef BOOL (CALLBACK* NAMEENUMPROCW)(LPWSTR, LPARAM);
+
+typedef NAMEENUMPROCA WINSTAENUMPROCA;
+typedef NAMEENUMPROCA DESKTOPENUMPROCA;
+typedef NAMEENUMPROCW WINSTAENUMPROCW;
+typedef NAMEENUMPROCW DESKTOPENUMPROCW;
+
+#else /* !STRICT */
+
+typedef FARPROC NAMEENUMPROCA;
+typedef FARPROC NAMEENUMPROCW;
+typedef FARPROC WINSTAENUMPROCA;
+typedef FARPROC DESKTOPENUMPROCA;
+typedef FARPROC WINSTAENUMPROCW;
+typedef FARPROC DESKTOPENUMPROCW;
+
+#endif /* !STRICT */
+
+#ifdef UNICODE
+typedef WINSTAENUMPROCW WINSTAENUMPROC;
+typedef DESKTOPENUMPROCW DESKTOPENUMPROC;
+#else /* !UNICODE */
+typedef WINSTAENUMPROCA WINSTAENUMPROC;
+typedef DESKTOPENUMPROCA DESKTOPENUMPROC;
+#endif /* UNICODE */
+
+#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
+#ifdef UNICODE
+#define MAKEINTRESOURCE MAKEINTRESOURCEW
+#else
+#define MAKEINTRESOURCE MAKEINTRESOURCEA
+#endif // !UNICODE
+
+#ifndef NORESOURCE
+
+/*
+ * Predefined Resource Types
+ */
+#define RT_CURSOR MAKEINTRESOURCE(1)
+#define RT_BITMAP MAKEINTRESOURCE(2)
+#define RT_ICON MAKEINTRESOURCE(3)
+#define RT_MENU MAKEINTRESOURCE(4)
+#define RT_DIALOG MAKEINTRESOURCE(5)
+#define RT_STRING MAKEINTRESOURCE(6)
+#define RT_FONTDIR MAKEINTRESOURCE(7)
+#define RT_FONT MAKEINTRESOURCE(8)
+#define RT_ACCELERATOR MAKEINTRESOURCE(9)
+#define RT_RCDATA MAKEINTRESOURCE(10)
+#define RT_MESSAGETABLE MAKEINTRESOURCE(11)
+
+#define DIFFERENCE 11
+#define RT_GROUP_CURSOR MAKEINTRESOURCE((DWORD)RT_CURSOR + DIFFERENCE)
+#define RT_GROUP_ICON MAKEINTRESOURCE((DWORD)RT_ICON + DIFFERENCE)
+#define RT_VERSION MAKEINTRESOURCE(16)
+#define RT_DLGINCLUDE MAKEINTRESOURCE(17)
+#if(WINVER >= 0x0400)
+#define RT_PLUGPLAY MAKEINTRESOURCE(19)
+#define RT_VXD MAKEINTRESOURCE(20)
+#define RT_ANICURSOR MAKEINTRESOURCE(21)
+#define RT_ANIICON MAKEINTRESOURCE(22)
+#endif /* WINVER >= 0x0400 */
+
+#endif /* !NORESOURCE */
+
+WINUSERAPI
+int
+WINAPI
+wvsprintfA(
+ LPSTR,
+ LPCSTR,
+ va_list arglist);
+WINUSERAPI
+int
+WINAPI
+wvsprintfW(
+ LPWSTR,
+ LPCWSTR,
+ va_list arglist);
+#ifdef UNICODE
+#define wvsprintf wvsprintfW
+#else
+#define wvsprintf wvsprintfA
+#endif // !UNICODE
+
+WINUSERAPI int WINAPIV wsprintfA(LPSTR, LPCSTR, ...);
+WINUSERAPI int WINAPIV wsprintfW(LPWSTR, LPCWSTR, ...);
+#ifdef UNICODE
+#define wsprintf wsprintfW
+#else
+#define wsprintf wsprintfA
+#endif // !UNICODE
+
+#ifndef NOSCROLL
+
+/*
+ * Scroll Bar Constants
+ */
+#define SB_HORZ 0
+#define SB_VERT 1
+#define SB_CTL 2
+#define SB_BOTH 3
+
+/*
+ * Scroll Bar Commands
+ */
+#define SB_LINEUP 0
+#define SB_LINELEFT 0
+#define SB_LINEDOWN 1
+#define SB_LINERIGHT 1
+#define SB_PAGEUP 2
+#define SB_PAGELEFT 2
+#define SB_PAGEDOWN 3
+#define SB_PAGERIGHT 3
+#define SB_THUMBPOSITION 4
+#define SB_THUMBTRACK 5
+#define SB_TOP 6
+#define SB_LEFT 6
+#define SB_BOTTOM 7
+#define SB_RIGHT 7
+#define SB_ENDSCROLL 8
+
+#endif /* !NOSCROLL */
+
+#ifndef NOSHOWWINDOW
+
+// begin_r_winuser
+
+/*
+ * ShowWindow() Commands
+ */
+#define SW_HIDE 0
+#define SW_SHOWNORMAL 1
+#define SW_NORMAL 1
+#define SW_SHOWMINIMIZED 2
+#define SW_SHOWMAXIMIZED 3
+#define SW_MAXIMIZE 3
+#define SW_SHOWNOACTIVATE 4
+#define SW_SHOW 5
+#define SW_MINIMIZE 6
+#define SW_SHOWMINNOACTIVE 7
+#define SW_SHOWNA 8
+#define SW_RESTORE 9
+#define SW_SHOWDEFAULT 10
+#define SW_MAX 10
+
+/*
+ * Old ShowWindow() Commands
+ */
+#define HIDE_WINDOW 0
+#define SHOW_OPENWINDOW 1
+#define SHOW_ICONWINDOW 2
+#define SHOW_FULLSCREEN 3
+#define SHOW_OPENNOACTIVATE 4
+
+/*
+ * Identifiers for the WM_SHOWWINDOW message
+ */
+#define SW_PARENTCLOSING 1
+#define SW_OTHERZOOM 2
+#define SW_PARENTOPENING 3
+#define SW_OTHERUNZOOM 4
+
+// end_r_winuser
+
+#endif /* !NOSHOWWINDOW */
+
+/*
+ * WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags
+ */
+#define KF_EXTENDED 0x0100
+#define KF_DLGMODE 0x0800
+#define KF_MENUMODE 0x1000
+#define KF_ALTDOWN 0x2000
+#define KF_REPEAT 0x4000
+#define KF_UP 0x8000
+
+#ifndef NOVIRTUALKEYCODES
+
+// begin_r_winuser
+
+/*
+ * Virtual Keys, Standard Set
+ */
+#define VK_LBUTTON 0x01
+#define VK_RBUTTON 0x02
+#define VK_CANCEL 0x03
+#define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */
+
+#define VK_BACK 0x08
+#define VK_TAB 0x09
+
+#define VK_CLEAR 0x0C
+#define VK_RETURN 0x0D
+
+#define VK_SHIFT 0x10
+#define VK_CONTROL 0x11
+#define VK_MENU 0x12
+#define VK_PAUSE 0x13
+#define VK_CAPITAL 0x14
+
+
+#define VK_ESCAPE 0x1B
+
+#define VK_SPACE 0x20
+#define VK_PRIOR 0x21
+#define VK_NEXT 0x22
+#define VK_END 0x23
+#define VK_HOME 0x24
+#define VK_LEFT 0x25
+#define VK_UP 0x26
+#define VK_RIGHT 0x27
+#define VK_DOWN 0x28
+#define VK_SELECT 0x29
+#define VK_PRINT 0x2A
+#define VK_EXECUTE 0x2B
+#define VK_SNAPSHOT 0x2C
+#define VK_INSERT 0x2D
+#define VK_DELETE 0x2E
+#define VK_HELP 0x2F
+
+/* VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */
+/* VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */
+
+#define VK_LWIN 0x5B
+#define VK_RWIN 0x5C
+#define VK_APPS 0x5D
+
+#define VK_NUMPAD0 0x60
+#define VK_NUMPAD1 0x61
+#define VK_NUMPAD2 0x62
+#define VK_NUMPAD3 0x63
+#define VK_NUMPAD4 0x64
+#define VK_NUMPAD5 0x65
+#define VK_NUMPAD6 0x66
+#define VK_NUMPAD7 0x67
+#define VK_NUMPAD8 0x68
+#define VK_NUMPAD9 0x69
+#define VK_MULTIPLY 0x6A
+#define VK_ADD 0x6B
+#define VK_SEPARATOR 0x6C
+#define VK_SUBTRACT 0x6D
+#define VK_DECIMAL 0x6E
+#define VK_DIVIDE 0x6F
+#define VK_F1 0x70
+#define VK_F2 0x71
+#define VK_F3 0x72
+#define VK_F4 0x73
+#define VK_F5 0x74
+#define VK_F6 0x75
+#define VK_F7 0x76
+#define VK_F8 0x77
+#define VK_F9 0x78
+#define VK_F10 0x79
+#define VK_F11 0x7A
+#define VK_F12 0x7B
+#define VK_F13 0x7C
+#define VK_F14 0x7D
+#define VK_F15 0x7E
+#define VK_F16 0x7F
+#define VK_F17 0x80
+#define VK_F18 0x81
+#define VK_F19 0x82
+#define VK_F20 0x83
+#define VK_F21 0x84
+#define VK_F22 0x85
+#define VK_F23 0x86
+#define VK_F24 0x87
+
+#define VK_NUMLOCK 0x90
+#define VK_SCROLL 0x91
+
+/*
+ * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
+ * Used only as parameters to GetAsyncKeyState() and GetKeyState().
+ * No other API or message will distinguish left and right keys in this way.
+ */
+#define VK_LSHIFT 0xA0
+#define VK_RSHIFT 0xA1
+#define VK_LCONTROL 0xA2
+#define VK_RCONTROL 0xA3
+#define VK_LMENU 0xA4
+#define VK_RMENU 0xA5
+
+#if(WINVER >= 0x0400)
+#define VK_PROCESSKEY 0xE5
+#endif /* WINVER >= 0x0400 */
+
+#define VK_ATTN 0xF6
+#define VK_CRSEL 0xF7
+#define VK_EXSEL 0xF8
+#define VK_EREOF 0xF9
+#define VK_PLAY 0xFA
+#define VK_ZOOM 0xFB
+#define VK_NONAME 0xFC
+#define VK_PA1 0xFD
+#define VK_OEM_CLEAR 0xFE
+
+// end_r_winuser
+
+#endif /* !NOVIRTUALKEYCODES */
+
+#ifndef NOWH
+
+/*
+ * SetWindowsHook() codes
+ */
+#define WH_MIN (-1)
+#define WH_MSGFILTER (-1)
+#define WH_JOURNALRECORD 0
+#define WH_JOURNALPLAYBACK 1
+#define WH_KEYBOARD 2
+#define WH_GETMESSAGE 3
+#define WH_CALLWNDPROC 4
+#define WH_CBT 5
+#define WH_SYSMSGFILTER 6
+#define WH_MOUSE 7
+#define WH_HARDWARE 8
+#define WH_DEBUG 9
+#define WH_SHELL 10
+#define WH_FOREGROUNDIDLE 11
+#if(WINVER >= 0x0400)
+#define WH_CALLWNDPROCRET 12
+#endif /* WINVER >= 0x0400 */
+#if(WINVER >= 0x0400)
+#define WH_MAX 12
+#else
+#define WH_MAX 11
+#endif
+#define WH_MINHOOK WH_MIN
+#define WH_MAXHOOK WH_MAX
+
+/*
+ * Hook Codes
+ */
+#define HC_ACTION 0
+#define HC_GETNEXT 1
+#define HC_SKIP 2
+#define HC_NOREMOVE 3
+#define HC_NOREM HC_NOREMOVE
+#define HC_SYSMODALON 4
+#define HC_SYSMODALOFF 5
+
+/*
+ * CBT Hook Codes
+ */
+#define HCBT_MOVESIZE 0
+#define HCBT_MINMAX 1
+#define HCBT_QS 2
+#define HCBT_CREATEWND 3
+#define HCBT_DESTROYWND 4
+#define HCBT_ACTIVATE 5
+#define HCBT_CLICKSKIPPED 6
+#define HCBT_KEYSKIPPED 7
+#define HCBT_SYSCOMMAND 8
+#define HCBT_SETFOCUS 9
+
+/*
+ * HCBT_CREATEWND parameters pointed to by lParam
+ */
+typedef struct tagCBT_CREATEWNDA
+{
+ struct tagCREATESTRUCTA *lpcs;
+ HWND hwndInsertAfter;
+} CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
+/*
+ * HCBT_CREATEWND parameters pointed to by lParam
+ */
+typedef struct tagCBT_CREATEWNDW
+{
+ struct tagCREATESTRUCTW *lpcs;
+ HWND hwndInsertAfter;
+} CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
+#ifdef UNICODE
+typedef CBT_CREATEWNDW CBT_CREATEWND;
+typedef LPCBT_CREATEWNDW LPCBT_CREATEWND;
+#else
+typedef CBT_CREATEWNDA CBT_CREATEWND;
+typedef LPCBT_CREATEWNDA LPCBT_CREATEWND;
+#endif // UNICODE
+
+/*
+ * HCBT_ACTIVATE structure pointed to by lParam
+ */
+typedef struct tagCBTACTIVATESTRUCT
+{
+ BOOL fMouse;
+ HWND hWndActive;
+} CBTACTIVATESTRUCT, *LPCBTACTIVATESTRUCT;
+
+/*
+ * WH_MSGFILTER Filter Proc Codes
+ */
+#define MSGF_DIALOGBOX 0
+#define MSGF_MESSAGEBOX 1
+#define MSGF_MENU 2
+#define MSGF_MOVE 3
+#define MSGF_SIZE 4
+#define MSGF_SCROLLBAR 5
+#define MSGF_NEXTWINDOW 6
+#define MSGF_MAINLOOP 8
+#define MSGF_MAX 8
+#define MSGF_USER 4096
+
+/*
+ * Shell support
+ */
+#define HSHELL_WINDOWCREATED 1
+#define HSHELL_WINDOWDESTROYED 2
+#define HSHELL_ACTIVATESHELLWINDOW 3
+
+#if(WINVER >= 0x0400)
+#define HSHELL_WINDOWACTIVATED 4
+#define HSHELL_GETMINRECT 5
+#define HSHELL_REDRAW 6
+#define HSHELL_TASKMAN 7
+#define HSHELL_LANGUAGE 8
+#endif /* WINVER >= 0x0400 */
+
+
+/*
+ * Message Structure used in Journaling
+ */
+typedef struct tagEVENTMSG {
+ UINT message;
+ UINT paramL;
+ UINT paramH;
+ DWORD time;
+ HWND hwnd;
+} EVENTMSG, *PEVENTMSGMSG, NEAR *NPEVENTMSGMSG, FAR *LPEVENTMSGMSG;
+
+typedef struct tagEVENTMSG *PEVENTMSG, NEAR *NPEVENTMSG, FAR *LPEVENTMSG;
+
+/*
+ * Message structure used by WH_CALLWNDPROC
+ */
+typedef struct tagCWPSTRUCT {
+ LPARAM lParam;
+ WPARAM wParam;
+ UINT message;
+ HWND hwnd;
+} CWPSTRUCT, *PCWPSTRUCT, NEAR *NPCWPSTRUCT, FAR *LPCWPSTRUCT;
+
+#if(WINVER >= 0x0400)
+/*
+ * Message structure used by WH_CALLWNDPROCRET
+ */
+typedef struct tagCWPRETSTRUCT {
+ LRESULT lResult;
+ LPARAM lParam;
+ WPARAM wParam;
+ UINT message;
+ HWND hwnd;
+} CWPRETSTRUCT, *PCWPRETSTRUCT, NEAR *NPCWPRETSTRUCT, FAR *LPCWPRETSTRUCT;
+#endif /* WINVER >= 0x0400 */
+
+/*
+ * Structure used by WH_DEBUG
+ */
+typedef struct tagDEBUGHOOKINFO
+{
+ DWORD idThread;
+ DWORD idThreadInstaller;
+ LPARAM lParam;
+ WPARAM wParam;
+ int code;
+} DEBUGHOOKINFO, *PDEBUGHOOKINFO, NEAR *NPDEBUGHOOKINFO, FAR* LPDEBUGHOOKINFO;
+
+/*
+ * Structure used by WH_MOUSE
+ */
+typedef struct tagMOUSEHOOKSTRUCT {
+ POINT pt;
+ HWND hwnd;
+ UINT wHitTestCode;
+ DWORD dwExtraInfo;
+} MOUSEHOOKSTRUCT, FAR *LPMOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT;
+#if(WINVER >= 0x0400)
+/*
+ * Structure used by WH_HARDWARE
+ */
+typedef struct tagHARDWAREHOOKSTRUCT {
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+} HARDWAREHOOKSTRUCT, FAR *LPHARDWAREHOOKSTRUCT, *PHARDWAREHOOKSTRUCT;
+#endif /* WINVER >= 0x0400 */
+#endif /* !NOWH */
+
+/*
+ * Keyboard Layout API
+ */
+#define HKL_PREV 0
+#define HKL_NEXT 1
+
+
+#define KLF_ACTIVATE 0x00000001
+#define KLF_SUBSTITUTE_OK 0x00000002
+#define KLF_UNLOADPREVIOUS 0x00000004
+#define KLF_REORDER 0x00000008
+#if(WINVER >= 0x0400)
+#define KLF_REPLACELANG 0x00000010
+#define KLF_NOTELLSHELL 0x00000080
+#endif /* WINVER >= 0x0400 */
+
+/*
+ * Size of KeyboardLayoutName (number of characters), including nul terminator
+ */
+#define KL_NAMELENGTH 9
+
+WINUSERAPI
+HKL
+WINAPI
+LoadKeyboardLayoutA(
+ LPCSTR pwszKLID,
+ UINT Flags);
+WINUSERAPI
+HKL
+WINAPI
+LoadKeyboardLayoutW(
+ LPCWSTR pwszKLID,
+ UINT Flags);
+#ifdef UNICODE
+#define LoadKeyboardLayout LoadKeyboardLayoutW
+#else
+#define LoadKeyboardLayout LoadKeyboardLayoutA
+#endif // !UNICODE
+
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+HKL
+WINAPI
+ActivateKeyboardLayout(
+ HKL hkl,
+ UINT Flags);
+#else
+WINUSERAPI
+BOOL
+WINAPI
+ActivateKeyboardLayout(
+ HKL hkl,
+ UINT Flags);
+#endif /* WINVER >= 0x0400 */
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+int
+WINAPI
+ToUnicodeEx(
+ UINT wVirtKey,
+ UINT wScanCode,
+ PBYTE lpKeyState,
+ LPWSTR pwszBuff,
+ int cchBuff,
+ UINT wFlags,
+ HKL dwhkl);
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+BOOL
+WINAPI
+UnloadKeyboardLayout(
+ HKL hkl);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetKeyboardLayoutNameA(
+ LPSTR pwszKLID);
+WINUSERAPI
+BOOL
+WINAPI
+GetKeyboardLayoutNameW(
+ LPWSTR pwszKLID);
+#ifdef UNICODE
+#define GetKeyboardLayoutName GetKeyboardLayoutNameW
+#else
+#define GetKeyboardLayoutName GetKeyboardLayoutNameA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+int
+WINAPI
+GetKeyboardLayoutList(
+ int nBuff,
+ HKL FAR *lpList);
+
+WINUSERAPI
+HKL
+WINAPI
+GetKeyboardLayout(
+ DWORD dwLayout
+);
+#endif /* WINVER >= 0x0400 */
+
+#ifndef NODESKTOP
+/*
+ * Desktop-specific access flags
+ */
+#define DESKTOP_READOBJECTS 0x0001L
+#define DESKTOP_CREATEWINDOW 0x0002L
+#define DESKTOP_CREATEMENU 0x0004L
+#define DESKTOP_HOOKCONTROL 0x0008L
+#define DESKTOP_JOURNALRECORD 0x0010L
+#define DESKTOP_JOURNALPLAYBACK 0x0020L
+#define DESKTOP_ENUMERATE 0x0040L
+#define DESKTOP_WRITEOBJECTS 0x0080L
+#define DESKTOP_SWITCHDESKTOP 0x0100L
+
+/*
+ * Desktop-specific control flags
+ */
+#define DF_ALLOWOTHERACCOUNTHOOK 0x0001L
+
+#ifdef _WINGDI_
+#ifndef NOGDI
+
+WINUSERAPI
+HDESK
+WINAPI
+CreateDesktopA(
+ LPSTR lpszDesktop,
+ LPSTR lpszDevice,
+ LPDEVMODEA pDevmode,
+ DWORD dwFlags,
+ DWORD dwDesiredAccess,
+ LPSECURITY_ATTRIBUTES lpsa);
+WINUSERAPI
+HDESK
+WINAPI
+CreateDesktopW(
+ LPWSTR lpszDesktop,
+ LPWSTR lpszDevice,
+ LPDEVMODEW pDevmode,
+ DWORD dwFlags,
+ DWORD dwDesiredAccess,
+ LPSECURITY_ATTRIBUTES lpsa);
+#ifdef UNICODE
+#define CreateDesktop CreateDesktopW
+#else
+#define CreateDesktop CreateDesktopA
+#endif // !UNICODE
+
+#endif /* NOGDI */
+#endif /* _WINGDI_ */
+
+WINUSERAPI
+HDESK
+WINAPI
+OpenDesktopA(
+ LPSTR lpszDesktop,
+ DWORD dwFlags,
+ BOOL fInherit,
+ DWORD dwDesiredAccess);
+WINUSERAPI
+HDESK
+WINAPI
+OpenDesktopW(
+ LPWSTR lpszDesktop,
+ DWORD dwFlags,
+ BOOL fInherit,
+ DWORD dwDesiredAccess);
+#ifdef UNICODE
+#define OpenDesktop OpenDesktopW
+#else
+#define OpenDesktop OpenDesktopA
+#endif // !UNICODE
+
+WINUSERAPI
+HDESK
+WINAPI
+OpenInputDesktop(
+ DWORD dwFlags,
+ BOOL fInherit,
+ DWORD dwDesiredAccess);
+
+WINUSERAPI
+BOOL
+WINAPI
+EnumDesktopsA(
+ HWINSTA hwinsta,
+ DESKTOPENUMPROCA lpEnumFunc,
+ LPARAM lParam);
+WINUSERAPI
+BOOL
+WINAPI
+EnumDesktopsW(
+ HWINSTA hwinsta,
+ DESKTOPENUMPROCW lpEnumFunc,
+ LPARAM lParam);
+#ifdef UNICODE
+#define EnumDesktops EnumDesktopsW
+#else
+#define EnumDesktops EnumDesktopsA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+EnumDesktopWindows(
+ HDESK hDesktop,
+ WNDENUMPROC lpfn,
+ LPARAM lParam);
+
+WINUSERAPI
+BOOL
+WINAPI
+SwitchDesktop(
+ HDESK hDesktop);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetThreadDesktop(
+ HDESK hDesktop);
+
+WINUSERAPI
+BOOL
+WINAPI
+CloseDesktop(
+ HDESK hDesktop);
+
+WINUSERAPI
+HDESK
+WINAPI
+GetThreadDesktop(
+ DWORD dwThreadId);
+
+#endif /* !NODESKTOP */
+
+#ifndef NOWINDOWSTATION
+/*
+ * Windowstation-specific access flags
+ */
+#define WINSTA_ENUMDESKTOPS 0x0001L
+#define WINSTA_READATTRIBUTES 0x0002L
+#define WINSTA_ACCESSCLIPBOARD 0x0004L
+#define WINSTA_CREATEDESKTOP 0x0008L
+#define WINSTA_WRITEATTRIBUTES 0x0010L
+#define WINSTA_ACCESSGLOBALATOMS 0x0020L
+#define WINSTA_EXITWINDOWS 0x0040L
+#define WINSTA_ENUMERATE 0x0100L
+#define WINSTA_READSCREEN 0x0200L
+
+/*
+ * Windowstation-specific attribute flags
+ */
+#define WSF_VISIBLE 0x0001L
+
+WINUSERAPI
+HWINSTA
+WINAPI
+CreateWindowStationA(
+ LPSTR lpwinsta,
+ DWORD dwReserved,
+ DWORD dwDesiredAccess,
+ LPSECURITY_ATTRIBUTES lpsa);
+WINUSERAPI
+HWINSTA
+WINAPI
+CreateWindowStationW(
+ LPWSTR lpwinsta,
+ DWORD dwReserved,
+ DWORD dwDesiredAccess,
+ LPSECURITY_ATTRIBUTES lpsa);
+#ifdef UNICODE
+#define CreateWindowStation CreateWindowStationW
+#else
+#define CreateWindowStation CreateWindowStationA
+#endif // !UNICODE
+
+WINUSERAPI
+HWINSTA
+WINAPI
+OpenWindowStationA(
+ LPSTR lpszWinSta,
+ BOOL fInherit,
+ DWORD dwDesiredAccess);
+WINUSERAPI
+HWINSTA
+WINAPI
+OpenWindowStationW(
+ LPWSTR lpszWinSta,
+ BOOL fInherit,
+ DWORD dwDesiredAccess);
+#ifdef UNICODE
+#define OpenWindowStation OpenWindowStationW
+#else
+#define OpenWindowStation OpenWindowStationA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+EnumWindowStationsA(
+ WINSTAENUMPROCA lpEnumFunc,
+ LPARAM lParam);
+WINUSERAPI
+BOOL
+WINAPI
+EnumWindowStationsW(
+ WINSTAENUMPROCW lpEnumFunc,
+ LPARAM lParam);
+#ifdef UNICODE
+#define EnumWindowStations EnumWindowStationsW
+#else
+#define EnumWindowStations EnumWindowStationsA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+CloseWindowStation(
+ HWINSTA hWinSta);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetProcessWindowStation(
+ HWINSTA hWinSta);
+
+WINUSERAPI
+HWINSTA
+WINAPI
+GetProcessWindowStation(
+ VOID);
+#endif /* !NOWINDOWSTATION */
+
+#ifndef NOSECURITY
+
+WINUSERAPI
+BOOL
+WINAPI
+SetUserObjectSecurity(
+ HANDLE hObj,
+ PSECURITY_INFORMATION pSIRequested,
+ PSECURITY_DESCRIPTOR pSID);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetUserObjectSecurity(
+ HANDLE hObj,
+ PSECURITY_INFORMATION pSIRequested,
+ PSECURITY_DESCRIPTOR pSID,
+ DWORD nLength,
+ LPDWORD lpnLengthNeeded);
+
+#define UOI_FLAGS 1
+#define UOI_NAME 2
+#define UOI_TYPE 3
+#define UOI_USER_SID 4
+
+typedef struct tagUSEROBJECTFLAGS {
+ BOOL fInherit;
+ BOOL fReserved;
+ DWORD dwFlags;
+} USEROBJECTFLAGS, *PUSEROBJECTFLAGS;
+
+WINUSERAPI
+BOOL
+WINAPI
+GetUserObjectInformationA(
+ HANDLE hObj,
+ int nIndex,
+ PVOID pvInfo,
+ DWORD nLength,
+ LPDWORD lpnLengthNeeded);
+WINUSERAPI
+BOOL
+WINAPI
+GetUserObjectInformationW(
+ HANDLE hObj,
+ int nIndex,
+ PVOID pvInfo,
+ DWORD nLength,
+ LPDWORD lpnLengthNeeded);
+#ifdef UNICODE
+#define GetUserObjectInformation GetUserObjectInformationW
+#else
+#define GetUserObjectInformation GetUserObjectInformationA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+SetUserObjectInformationA(
+ HANDLE hObj,
+ int nIndex,
+ PVOID pvInfo,
+ DWORD nLength);
+WINUSERAPI
+BOOL
+WINAPI
+SetUserObjectInformationW(
+ HANDLE hObj,
+ int nIndex,
+ PVOID pvInfo,
+ DWORD nLength);
+#ifdef UNICODE
+#define SetUserObjectInformation SetUserObjectInformationW
+#else
+#define SetUserObjectInformation SetUserObjectInformationA
+#endif // !UNICODE
+
+#endif /* !NOSECURITY */
+
+#if(WINVER >= 0x0400)
+typedef struct tagWNDCLASSEXA {
+ UINT cbSize;
+ /* Win 3.x */
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCSTR lpszMenuName;
+ LPCSTR lpszClassName;
+ /* Win 4.0 */
+ HICON hIconSm;
+} WNDCLASSEXA, *PWNDCLASSEXA, NEAR *NPWNDCLASSEXA, FAR *LPWNDCLASSEXA;
+typedef struct tagWNDCLASSEXW {
+ UINT cbSize;
+ /* Win 3.x */
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCWSTR lpszMenuName;
+ LPCWSTR lpszClassName;
+ /* Win 4.0 */
+ HICON hIconSm;
+} WNDCLASSEXW, *PWNDCLASSEXW, NEAR *NPWNDCLASSEXW, FAR *LPWNDCLASSEXW;
+#ifdef UNICODE
+typedef WNDCLASSEXW WNDCLASSEX;
+typedef PWNDCLASSEXW PWNDCLASSEX;
+typedef NPWNDCLASSEXW NPWNDCLASSEX;
+typedef LPWNDCLASSEXW LPWNDCLASSEX;
+#else
+typedef WNDCLASSEXA WNDCLASSEX;
+typedef PWNDCLASSEXA PWNDCLASSEX;
+typedef NPWNDCLASSEXA NPWNDCLASSEX;
+typedef LPWNDCLASSEXA LPWNDCLASSEX;
+#endif // UNICODE
+#endif /* WINVER >= 0x0400 */
+
+typedef struct tagWNDCLASSA {
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCSTR lpszMenuName;
+ LPCSTR lpszClassName;
+} WNDCLASSA, *PWNDCLASSA, NEAR *NPWNDCLASSA, FAR *LPWNDCLASSA;
+typedef struct tagWNDCLASSW {
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCWSTR lpszMenuName;
+ LPCWSTR lpszClassName;
+} WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;
+#ifdef UNICODE
+typedef WNDCLASSW WNDCLASS;
+typedef PWNDCLASSW PWNDCLASS;
+typedef NPWNDCLASSW NPWNDCLASS;
+typedef LPWNDCLASSW LPWNDCLASS;
+#else
+typedef WNDCLASSA WNDCLASS;
+typedef PWNDCLASSA PWNDCLASS;
+typedef NPWNDCLASSA NPWNDCLASS;
+typedef LPWNDCLASSA LPWNDCLASS;
+#endif // UNICODE
+
+
+
+#ifndef NOMSG
+
+/*
+ * Message structure
+ */
+typedef struct tagMSG {
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+ DWORD time;
+ POINT pt;
+} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
+
+#define POINTSTOPOINT(pt, pts) \
+ { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts); \
+ (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
+
+#define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x), (short)((pt).y)))
+#define MAKEWPARAM(l, h) (WPARAM)MAKELONG(l, h)
+#define MAKELPARAM(l, h) (LPARAM)MAKELONG(l, h)
+#define MAKELRESULT(l, h) (LRESULT)MAKELONG(l, h)
+
+
+#endif /* !NOMSG */
+
+#ifndef NOWINOFFSETS
+
+/*
+ * Window field offsets for GetWindowLong()
+ */
+#define GWL_WNDPROC (-4)
+#define GWL_HINSTANCE (-6)
+#define GWL_HWNDPARENT (-8)
+#define GWL_STYLE (-16)
+#define GWL_EXSTYLE (-20)
+#define GWL_USERDATA (-21)
+#define GWL_ID (-12)
+
+/*
+ * Class field offsets for GetClassLong()
+ */
+#define GCL_MENUNAME (-8)
+#define GCL_HBRBACKGROUND (-10)
+#define GCL_HCURSOR (-12)
+#define GCL_HICON (-14)
+#define GCL_HMODULE (-16)
+#define GCL_CBWNDEXTRA (-18)
+#define GCL_CBCLSEXTRA (-20)
+#define GCL_WNDPROC (-24)
+#define GCL_STYLE (-26)
+#define GCW_ATOM (-32)
+
+#if(WINVER >= 0x0400)
+#define GCL_HICONSM (-34)
+#endif /* WINVER >= 0x0400 */
+
+#endif /* !NOWINOFFSETS */
+
+#ifndef NOWINMESSAGES
+
+// begin_r_winuser
+
+/*
+ * Window Messages
+ */
+
+#define WM_NULL 0x0000
+#define WM_CREATE 0x0001
+#define WM_DESTROY 0x0002
+#define WM_MOVE 0x0003
+#define WM_SIZE 0x0005
+
+#define WM_ACTIVATE 0x0006
+/*
+ * WM_ACTIVATE state values
+ */
+#define WA_INACTIVE 0
+#define WA_ACTIVE 1
+#define WA_CLICKACTIVE 2
+
+#define WM_SETFOCUS 0x0007
+#define WM_KILLFOCUS 0x0008
+#define WM_ENABLE 0x000A
+#define WM_SETREDRAW 0x000B
+#define WM_SETTEXT 0x000C
+#define WM_GETTEXT 0x000D
+#define WM_GETTEXTLENGTH 0x000E
+#define WM_PAINT 0x000F
+#define WM_CLOSE 0x0010
+#define WM_QUERYENDSESSION 0x0011
+#define WM_QUIT 0x0012
+#define WM_QUERYOPEN 0x0013
+#define WM_ERASEBKGND 0x0014
+#define WM_SYSCOLORCHANGE 0x0015
+#define WM_ENDSESSION 0x0016
+#define WM_SHOWWINDOW 0x0018
+#define WM_WININICHANGE 0x001A
+#if(WINVER >= 0x0400)
+#define WM_SETTINGCHANGE WM_WININICHANGE
+#endif /* WINVER >= 0x0400 */
+
+
+#define WM_DEVMODECHANGE 0x001B
+#define WM_ACTIVATEAPP 0x001C
+#define WM_FONTCHANGE 0x001D
+#define WM_TIMECHANGE 0x001E
+#define WM_CANCELMODE 0x001F
+#define WM_SETCURSOR 0x0020
+#define WM_MOUSEACTIVATE 0x0021
+#define WM_CHILDACTIVATE 0x0022
+#define WM_QUEUESYNC 0x0023
+
+#define WM_GETMINMAXINFO 0x0024
+// end_r_winuser
+/*
+ * Struct pointed to by WM_GETMINMAXINFO lParam
+ */
+typedef struct tagMINMAXINFO {
+ POINT ptReserved;
+ POINT ptMaxSize;
+ POINT ptMaxPosition;
+ POINT ptMinTrackSize;
+ POINT ptMaxTrackSize;
+} MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;
+
+// begin_r_winuser
+#define WM_PAINTICON 0x0026
+#define WM_ICONERASEBKGND 0x0027
+#define WM_NEXTDLGCTL 0x0028
+#define WM_SPOOLERSTATUS 0x002A
+#define WM_DRAWITEM 0x002B
+#define WM_MEASUREITEM 0x002C
+#define WM_DELETEITEM 0x002D
+#define WM_VKEYTOITEM 0x002E
+#define WM_CHARTOITEM 0x002F
+#define WM_SETFONT 0x0030
+#define WM_GETFONT 0x0031
+#define WM_SETHOTKEY 0x0032
+#define WM_GETHOTKEY 0x0033
+#define WM_QUERYDRAGICON 0x0037
+#define WM_COMPAREITEM 0x0039
+
+#define WM_COMPACTING 0x0041
+#define WM_COMMNOTIFY 0x0044 /* no longer suported */
+#define WM_WINDOWPOSCHANGING 0x0046
+#define WM_WINDOWPOSCHANGED 0x0047
+
+#define WM_POWER 0x0048
+/*
+ * wParam for WM_POWER window message and DRV_POWER driver notification
+ */
+#define PWR_OK 1
+#define PWR_FAIL (-1)
+#define PWR_SUSPENDREQUEST 1
+#define PWR_SUSPENDRESUME 2
+#define PWR_CRITICALRESUME 3
+
+#define WM_COPYDATA 0x004A
+#define WM_CANCELJOURNAL 0x004B
+
+// end_r_winuser
+
+/*
+ * lParam of WM_COPYDATA message points to...
+ */
+typedef struct tagCOPYDATASTRUCT {
+ DWORD dwData;
+ DWORD cbData;
+ PVOID lpData;
+} COPYDATASTRUCT, *PCOPYDATASTRUCT;
+
+// begin_r_winuser
+
+#if(WINVER >= 0x0400)
+#define WM_NOTIFY 0x004E
+#define WM_INPUTLANGCHANGEREQUEST 0x0050
+#define WM_INPUTLANGCHANGE 0x0051
+#define WM_TCARD 0x0052
+#define WM_HELP 0x0053
+#define WM_USERCHANGED 0x0054
+#define WM_NOTIFYFORMAT 0x0055
+
+#define NFR_ANSI 1
+#define NFR_UNICODE 2
+#define NF_QUERY 3
+#define NF_REQUERY 4
+
+#define WM_CONTEXTMENU 0x007B
+#define WM_STYLECHANGING 0x007C
+#define WM_STYLECHANGED 0x007D
+#define WM_DISPLAYCHANGE 0x007E
+#define WM_GETICON 0x007F
+#define WM_SETICON 0x0080
+#endif /* WINVER >= 0x0400 */
+
+
+#define WM_NCCREATE 0x0081
+#define WM_NCDESTROY 0x0082
+#define WM_NCCALCSIZE 0x0083
+#define WM_NCHITTEST 0x0084
+#define WM_NCPAINT 0x0085
+#define WM_NCACTIVATE 0x0086
+#define WM_GETDLGCODE 0x0087
+
+#define WM_NCMOUSEMOVE 0x00A0
+#define WM_NCLBUTTONDOWN 0x00A1
+#define WM_NCLBUTTONUP 0x00A2
+#define WM_NCLBUTTONDBLCLK 0x00A3
+#define WM_NCRBUTTONDOWN 0x00A4
+#define WM_NCRBUTTONUP 0x00A5
+#define WM_NCRBUTTONDBLCLK 0x00A6
+#define WM_NCMBUTTONDOWN 0x00A7
+#define WM_NCMBUTTONUP 0x00A8
+#define WM_NCMBUTTONDBLCLK 0x00A9
+
+#define WM_KEYFIRST 0x0100
+#define WM_KEYDOWN 0x0100
+#define WM_KEYUP 0x0101
+#define WM_CHAR 0x0102
+#define WM_DEADCHAR 0x0103
+#define WM_SYSKEYDOWN 0x0104
+#define WM_SYSKEYUP 0x0105
+#define WM_SYSCHAR 0x0106
+#define WM_SYSDEADCHAR 0x0107
+#define WM_KEYLAST 0x0108
+
+#if(WINVER >= 0x0400)
+#define WM_IME_STARTCOMPOSITION 0x010D
+#define WM_IME_ENDCOMPOSITION 0x010E
+#define WM_IME_COMPOSITION 0x010F
+#define WM_IME_KEYLAST 0x010F
+#endif /* WINVER >= 0x0400 */
+
+#define WM_INITDIALOG 0x0110
+#define WM_COMMAND 0x0111
+#define WM_SYSCOMMAND 0x0112
+#define WM_TIMER 0x0113
+#define WM_HSCROLL 0x0114
+#define WM_VSCROLL 0x0115
+#define WM_INITMENU 0x0116
+#define WM_INITMENUPOPUP 0x0117
+#define WM_MENUSELECT 0x011F
+#define WM_MENUCHAR 0x0120
+#define WM_ENTERIDLE 0x0121
+
+#define WM_CTLCOLORMSGBOX 0x0132
+#define WM_CTLCOLOREDIT 0x0133
+#define WM_CTLCOLORLISTBOX 0x0134
+#define WM_CTLCOLORBTN 0x0135
+#define WM_CTLCOLORDLG 0x0136
+#define WM_CTLCOLORSCROLLBAR 0x0137
+#define WM_CTLCOLORSTATIC 0x0138
+
+
+
+#define WM_MOUSEFIRST 0x0200
+#define WM_MOUSEMOVE 0x0200
+#define WM_LBUTTONDOWN 0x0201
+#define WM_LBUTTONUP 0x0202
+#define WM_LBUTTONDBLCLK 0x0203
+#define WM_RBUTTONDOWN 0x0204
+#define WM_RBUTTONUP 0x0205
+#define WM_RBUTTONDBLCLK 0x0206
+#define WM_MBUTTONDOWN 0x0207
+#define WM_MBUTTONUP 0x0208
+#define WM_MBUTTONDBLCLK 0x0209
+#if(_WIN32_WINNT >= 0x0400)
+#define WM_MOUSEWHEEL 0x020A
+#endif /* _WIN32_WINNT >= 0x0400 */
+#if (_WIN32_WINNT < 0x0400)
+#define WM_MOUSELAST 0x0209
+#else
+#define WM_MOUSELAST 0x020A
+#endif /* if (_WIN32_WINNT < 0x0400) */
+
+#if(_WIN32_WINNT >= 0x0400)
+#define WHEEL_DELTA 120 /* Value for rolling one detent */
+#endif /* _WIN32_WINNT >= 0x0400 */
+#if(_WIN32_WINNT >= 0x0400)
+#define WHEEL_PAGESCROLL (UINT_MAX) /* Scroll one page */
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+#define WM_PARENTNOTIFY 0x0210
+#define MENULOOP_WINDOW 0
+#define MENULOOP_POPUP 1
+#define WM_ENTERMENULOOP 0x0211
+#define WM_EXITMENULOOP 0x0212
+
+#if(WINVER >= 0x0400)
+#define WM_NEXTMENU 0x0213
+// end_r_winuser
+
+typedef struct tagMDINEXTMENU
+{
+ HMENU hmenuIn;
+ HMENU hmenuNext;
+ HWND hwndNext;
+} MDINEXTMENU, * PMDINEXTMENU, FAR * LPMDINEXTMENU;
+
+// begin_r_winuser
+#define WM_SIZING 0x0214
+#define WM_CAPTURECHANGED 0x0215
+#define WM_MOVING 0x0216
+#define WM_POWERBROADCAST 0x0218
+#define WM_DEVICECHANGE 0x0219
+
+#define WM_IME_SETCONTEXT 0x0281
+#define WM_IME_NOTIFY 0x0282
+#define WM_IME_CONTROL 0x0283
+#define WM_IME_COMPOSITIONFULL 0x0284
+#define WM_IME_SELECT 0x0285
+#define WM_IME_CHAR 0x0286
+#define WM_IME_KEYDOWN 0x0290
+#define WM_IME_KEYUP 0x0291
+#endif /* WINVER >= 0x0400 */
+
+#define WM_MDICREATE 0x0220
+#define WM_MDIDESTROY 0x0221
+#define WM_MDIACTIVATE 0x0222
+#define WM_MDIRESTORE 0x0223
+#define WM_MDINEXT 0x0224
+#define WM_MDIMAXIMIZE 0x0225
+#define WM_MDITILE 0x0226
+#define WM_MDICASCADE 0x0227
+#define WM_MDIICONARRANGE 0x0228
+#define WM_MDIGETACTIVE 0x0229
+
+
+
+#define WM_MDISETMENU 0x0230
+#define WM_ENTERSIZEMOVE 0x0231
+#define WM_EXITSIZEMOVE 0x0232
+#define WM_DROPFILES 0x0233
+#define WM_MDIREFRESHMENU 0x0234
+
+
+#if(_WIN32_WINNT >= 0x0400)
+#define WM_MOUSEHOVER 0x02A1
+#define WM_MOUSELEAVE 0x02A3
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+#define WM_CUT 0x0300
+#define WM_COPY 0x0301
+#define WM_PASTE 0x0302
+#define WM_CLEAR 0x0303
+#define WM_UNDO 0x0304
+#define WM_RENDERFORMAT 0x0305
+#define WM_RENDERALLFORMATS 0x0306
+#define WM_DESTROYCLIPBOARD 0x0307
+#define WM_DRAWCLIPBOARD 0x0308
+#define WM_PAINTCLIPBOARD 0x0309
+#define WM_VSCROLLCLIPBOARD 0x030A
+#define WM_SIZECLIPBOARD 0x030B
+#define WM_ASKCBFORMATNAME 0x030C
+#define WM_CHANGECBCHAIN 0x030D
+#define WM_HSCROLLCLIPBOARD 0x030E
+#define WM_QUERYNEWPALETTE 0x030F
+#define WM_PALETTEISCHANGING 0x0310
+#define WM_PALETTECHANGED 0x0311
+#define WM_HOTKEY 0x0312
+
+#if(WINVER >= 0x0400)
+#define WM_PRINT 0x0317
+#define WM_PRINTCLIENT 0x0318
+
+#define WM_HANDHELDFIRST 0x0358
+#define WM_HANDHELDLAST 0x035F
+
+#define WM_AFXFIRST 0x0360
+#define WM_AFXLAST 0x037F
+#endif /* WINVER >= 0x0400 */
+
+#define WM_PENWINFIRST 0x0380
+#define WM_PENWINLAST 0x038F
+
+
+
+
+#if(WINVER >= 0x0400)
+#define WM_APP 0x8000
+#endif /* WINVER >= 0x0400 */
+
+
+
+
+
+
+/*
+ * NOTE: All Message Numbers below 0x0400 are RESERVED.
+ *
+ * Private Window Messages Start Here:
+ */
+#define WM_USER 0x0400
+
+#if(WINVER >= 0x0400)
+
+/* wParam for WM_SIZING message */
+#define WMSZ_LEFT 1
+#define WMSZ_RIGHT 2
+#define WMSZ_TOP 3
+#define WMSZ_TOPLEFT 4
+#define WMSZ_TOPRIGHT 5
+#define WMSZ_BOTTOM 6
+#define WMSZ_BOTTOMLEFT 7
+#define WMSZ_BOTTOMRIGHT 8
+#endif /* WINVER >= 0x0400 */
+
+#ifndef NONCMESSAGES
+
+/*
+ * WM_SYNCTASK Commands
+ */
+#define ST_BEGINSWP 0
+#define ST_ENDSWP 1
+
+/*
+ * WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes
+ */
+#define HTERROR (-2)
+#define HTTRANSPARENT (-1)
+#define HTNOWHERE 0
+#define HTCLIENT 1
+#define HTCAPTION 2
+#define HTSYSMENU 3
+#define HTGROWBOX 4
+#define HTSIZE HTGROWBOX
+#define HTMENU 5
+#define HTHSCROLL 6
+#define HTVSCROLL 7
+#define HTMINBUTTON 8
+#define HTMAXBUTTON 9
+#define HTLEFT 10
+#define HTRIGHT 11
+#define HTTOP 12
+#define HTTOPLEFT 13
+#define HTTOPRIGHT 14
+#define HTBOTTOM 15
+#define HTBOTTOMLEFT 16
+#define HTBOTTOMRIGHT 17
+#define HTBORDER 18
+#define HTREDUCE HTMINBUTTON
+#define HTZOOM HTMAXBUTTON
+#define HTSIZEFIRST HTLEFT
+#define HTSIZELAST HTBOTTOMRIGHT
+#if(WINVER >= 0x0400)
+#define HTOBJECT 19
+#define HTCLOSE 20
+#define HTHELP 21
+#endif /* WINVER >= 0x0400 */
+
+/*
+ * SendMessageTimeout values
+ */
+#define SMTO_NORMAL 0x0000
+#define SMTO_BLOCK 0x0001
+#define SMTO_ABORTIFHUNG 0x0002
+
+#endif /* !NONCMESSAGES */
+
+/*
+ * WM_MOUSEACTIVATE Return Codes
+ */
+#define MA_ACTIVATE 1
+#define MA_ACTIVATEANDEAT 2
+#define MA_NOACTIVATE 3
+#define MA_NOACTIVATEANDEAT 4
+
+/*
+ * WM_SETICON / WM_GETICON Type Codes
+ */
+#define ICON_SMALL 0
+#define ICON_BIG 1
+
+// end_r_winuser
+
+WINUSERAPI
+UINT
+WINAPI
+RegisterWindowMessageA(
+ LPCSTR lpString);
+WINUSERAPI
+UINT
+WINAPI
+RegisterWindowMessageW(
+ LPCWSTR lpString);
+#ifdef UNICODE
+#define RegisterWindowMessage RegisterWindowMessageW
+#else
+#define RegisterWindowMessage RegisterWindowMessageA
+#endif // !UNICODE
+
+// begin_r_winuser
+
+/*
+ * WM_SIZE message wParam values
+ */
+#define SIZE_RESTORED 0
+#define SIZE_MINIMIZED 1
+#define SIZE_MAXIMIZED 2
+#define SIZE_MAXSHOW 3
+#define SIZE_MAXHIDE 4
+
+/*
+ * Obsolete constant names
+ */
+#define SIZENORMAL SIZE_RESTORED
+#define SIZEICONIC SIZE_MINIMIZED
+#define SIZEFULLSCREEN SIZE_MAXIMIZED
+#define SIZEZOOMSHOW SIZE_MAXSHOW
+#define SIZEZOOMHIDE SIZE_MAXHIDE
+
+// end_r_winuser
+/*
+ * WM_WINDOWPOSCHANGING/CHANGED struct pointed to by lParam
+ */
+typedef struct tagWINDOWPOS {
+ HWND hwnd;
+ HWND hwndInsertAfter;
+ int x;
+ int y;
+ int cx;
+ int cy;
+ UINT flags;
+} WINDOWPOS, *LPWINDOWPOS, *PWINDOWPOS;
+
+/*
+ * WM_NCCALCSIZE parameter structure
+ */
+typedef struct tagNCCALCSIZE_PARAMS {
+ RECT rgrc[3];
+ PWINDOWPOS lppos;
+} NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;
+
+// begin_r_winuser
+/*
+ * WM_NCCALCSIZE "window valid rect" return values
+ */
+#define WVR_ALIGNTOP 0x0010
+#define WVR_ALIGNLEFT 0x0020
+#define WVR_ALIGNBOTTOM 0x0040
+#define WVR_ALIGNRIGHT 0x0080
+#define WVR_HREDRAW 0x0100
+#define WVR_VREDRAW 0x0200
+#define WVR_REDRAW (WVR_HREDRAW | \
+ WVR_VREDRAW)
+#define WVR_VALIDRECTS 0x0400
+
+
+#ifndef NOKEYSTATES
+
+/*
+ * Key State Masks for Mouse Messages
+ */
+#define MK_LBUTTON 0x0001
+#define MK_RBUTTON 0x0002
+#define MK_SHIFT 0x0004
+#define MK_CONTROL 0x0008
+#define MK_MBUTTON 0x0010
+
+#endif /* !NOKEYSTATES */
+
+#if(_WIN32_WINNT >= 0x0400)
+#ifndef NOTRACKMOUSEEVENT
+
+#define TME_HOVER 0x00000001
+#define TME_LEAVE 0x00000002
+#define TME_QUERY 0x40000000
+#define TME_CANCEL 0x80000000
+
+
+#define HOVER_DEFAULT 0xFFFFFFFF
+// end_r_winuser
+
+typedef struct tagTRACKMOUSEEVENT {
+ DWORD cbSize;
+ DWORD dwFlags;
+ HWND hwndTrack;
+ DWORD dwHoverTime;
+} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
+
+WINUSERAPI
+BOOL
+WINAPI
+TrackMouseEvent(
+ LPTRACKMOUSEEVENT lpEventTrack);
+
+// begin_r_winuser
+
+#endif /* !NOTRACKMOUSEEVENT */
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+// end_r_winuser
+
+#endif /* !NOWINMESSAGES */
+
+#ifndef NOWINSTYLES
+
+// begin_r_winuser
+
+/*
+ * Window Styles
+ */
+#define WS_OVERLAPPED 0x00000000L
+#define WS_POPUP 0x80000000L
+#define WS_CHILD 0x40000000L
+#define WS_MINIMIZE 0x20000000L
+#define WS_VISIBLE 0x10000000L
+#define WS_DISABLED 0x08000000L
+#define WS_CLIPSIBLINGS 0x04000000L
+#define WS_CLIPCHILDREN 0x02000000L
+#define WS_MAXIMIZE 0x01000000L
+#define WS_CAPTION 0x00C00000L /* WS_BORDER | WS_DLGFRAME */
+#define WS_BORDER 0x00800000L
+#define WS_DLGFRAME 0x00400000L
+#define WS_VSCROLL 0x00200000L
+#define WS_HSCROLL 0x00100000L
+#define WS_SYSMENU 0x00080000L
+#define WS_THICKFRAME 0x00040000L
+#define WS_GROUP 0x00020000L
+#define WS_TABSTOP 0x00010000L
+
+#define WS_MINIMIZEBOX 0x00020000L
+#define WS_MAXIMIZEBOX 0x00010000L
+
+#define WS_TILED WS_OVERLAPPED
+#define WS_ICONIC WS_MINIMIZE
+#define WS_SIZEBOX WS_THICKFRAME
+#define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
+
+/*
+ * Common Window Styles
+ */
+#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | \
+ WS_CAPTION | \
+ WS_SYSMENU | \
+ WS_THICKFRAME | \
+ WS_MINIMIZEBOX | \
+ WS_MAXIMIZEBOX)
+
+#define WS_POPUPWINDOW (WS_POPUP | \
+ WS_BORDER | \
+ WS_SYSMENU)
+
+#define WS_CHILDWINDOW (WS_CHILD)
+
+/*
+ * Extended Window Styles
+ */
+#define WS_EX_DLGMODALFRAME 0x00000001L
+#define WS_EX_NOPARENTNOTIFY 0x00000004L
+#define WS_EX_TOPMOST 0x00000008L
+#define WS_EX_ACCEPTFILES 0x00000010L
+#define WS_EX_TRANSPARENT 0x00000020L
+#if(WINVER >= 0x0400)
+#define WS_EX_MDICHILD 0x00000040L
+#define WS_EX_TOOLWINDOW 0x00000080L
+#define WS_EX_WINDOWEDGE 0x00000100L
+#define WS_EX_CLIENTEDGE 0x00000200L
+#define WS_EX_CONTEXTHELP 0x00000400L
+
+#define WS_EX_RIGHT 0x00001000L
+#define WS_EX_LEFT 0x00000000L
+#define WS_EX_RTLREADING 0x00002000L
+#define WS_EX_LTRREADING 0x00000000L
+#define WS_EX_LEFTSCROLLBAR 0x00004000L
+#define WS_EX_RIGHTSCROLLBAR 0x00000000L
+
+#define WS_EX_CONTROLPARENT 0x00010000L
+#define WS_EX_STATICEDGE 0x00020000L
+#define WS_EX_APPWINDOW 0x00040000L
+
+
+#define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
+#define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
+
+#endif /* WINVER >= 0x0400 */
+
+
+
+/*
+ * Class styles
+ */
+#define CS_VREDRAW 0x0001
+#define CS_HREDRAW 0x0002
+#define CS_KEYCVTWINDOW 0x0004
+#define CS_DBLCLKS 0x0008
+#define CS_OWNDC 0x0020
+#define CS_CLASSDC 0x0040
+#define CS_PARENTDC 0x0080
+#define CS_NOKEYCVT 0x0100
+#define CS_NOCLOSE 0x0200
+#define CS_SAVEBITS 0x0800
+#define CS_BYTEALIGNCLIENT 0x1000
+#define CS_BYTEALIGNWINDOW 0x2000
+#define CS_GLOBALCLASS 0x4000
+
+#if(WINVER >= 0x0400)
+#define CS_IME 0x00010000
+#endif /* WINVER >= 0x0400 */
+
+
+// end_r_winuser
+
+#endif /* !NOWINSTYLES */
+#if(WINVER >= 0x0400)
+/* WM_PRINT flags */
+#define PRF_CHECKVISIBLE 0x00000001L
+#define PRF_NONCLIENT 0x00000002L
+#define PRF_CLIENT 0x00000004L
+#define PRF_ERASEBKGND 0x00000008L
+#define PRF_CHILDREN 0x00000010L
+#define PRF_OWNED 0x00000020L
+
+/* 3D border styles */
+#define BDR_RAISEDOUTER 0x0001
+#define BDR_SUNKENOUTER 0x0002
+#define BDR_RAISEDINNER 0x0004
+#define BDR_SUNKENINNER 0x0008
+
+#define BDR_OUTER 0x0003
+#define BDR_INNER 0x000c
+#define BDR_RAISED 0x0005
+#define BDR_SUNKEN 0x000a
+
+
+#define EDGE_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
+#define EDGE_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
+#define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER)
+#define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER)
+
+/* Border flags */
+#define BF_LEFT 0x0001
+#define BF_TOP 0x0002
+#define BF_RIGHT 0x0004
+#define BF_BOTTOM 0x0008
+
+#define BF_TOPLEFT (BF_TOP | BF_LEFT)
+#define BF_TOPRIGHT (BF_TOP | BF_RIGHT)
+#define BF_BOTTOMLEFT (BF_BOTTOM | BF_LEFT)
+#define BF_BOTTOMRIGHT (BF_BOTTOM | BF_RIGHT)
+#define BF_RECT (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
+
+#define BF_DIAGONAL 0x0010
+
+// For diagonal lines, the BF_RECT flags specify the end point of the
+// vector bounded by the rectangle parameter.
+#define BF_DIAGONAL_ENDTOPRIGHT (BF_DIAGONAL | BF_TOP | BF_RIGHT)
+#define BF_DIAGONAL_ENDTOPLEFT (BF_DIAGONAL | BF_TOP | BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMLEFT (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMRIGHT (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
+
+
+#define BF_MIDDLE 0x0800 /* Fill in the middle */
+#define BF_SOFT 0x1000 /* For softer buttons */
+#define BF_ADJUST 0x2000 /* Calculate the space left over */
+#define BF_FLAT 0x4000 /* For flat rather than 3D borders */
+#define BF_MONO 0x8000 /* For monochrome borders */
+
+
+WINUSERAPI BOOL WINAPI DrawEdge(HDC hdc, LPRECT qrc, UINT edge, UINT grfFlags);
+
+/* flags for DrawFrameControl */
+
+#define DFC_CAPTION 1
+#define DFC_MENU 2
+#define DFC_SCROLL 3
+#define DFC_BUTTON 4
+
+#define DFCS_CAPTIONCLOSE 0x0000
+#define DFCS_CAPTIONMIN 0x0001
+#define DFCS_CAPTIONMAX 0x0002
+#define DFCS_CAPTIONRESTORE 0x0003
+#define DFCS_CAPTIONHELP 0x0004
+
+#define DFCS_MENUARROW 0x0000
+#define DFCS_MENUCHECK 0x0001
+#define DFCS_MENUBULLET 0x0002
+#define DFCS_MENUARROWRIGHT 0x0004
+
+#define DFCS_SCROLLUP 0x0000
+#define DFCS_SCROLLDOWN 0x0001
+#define DFCS_SCROLLLEFT 0x0002
+#define DFCS_SCROLLRIGHT 0x0003
+#define DFCS_SCROLLCOMBOBOX 0x0005
+#define DFCS_SCROLLSIZEGRIP 0x0008
+#define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
+
+#define DFCS_BUTTONCHECK 0x0000
+#define DFCS_BUTTONRADIOIMAGE 0x0001
+#define DFCS_BUTTONRADIOMASK 0x0002
+#define DFCS_BUTTONRADIO 0x0004
+#define DFCS_BUTTON3STATE 0x0008
+#define DFCS_BUTTONPUSH 0x0010
+
+#define DFCS_INACTIVE 0x0100
+#define DFCS_PUSHED 0x0200
+#define DFCS_CHECKED 0x0400
+#define DFCS_ADJUSTRECT 0x2000
+#define DFCS_FLAT 0x4000
+#define DFCS_MONO 0x8000
+
+WINUSERAPI BOOL WINAPI DrawFrameControl(HDC, LPRECT, UINT, UINT);
+
+
+/* flags for DrawCaption */
+#define DC_ACTIVE 0x0001
+#define DC_SMALLCAP 0x0002
+#define DC_ICON 0x0004
+#define DC_TEXT 0x0008
+#define DC_INBUTTON 0x0010
+
+WINUSERAPI BOOL WINAPI DrawCaption(HWND, HDC, CONST RECT *, UINT);
+
+#define IDANI_OPEN 1
+#define IDANI_CLOSE 2
+#define IDANI_CAPTION 3
+
+
+WINUSERAPI BOOL WINAPI DrawAnimatedRects(HWND hwnd, int idAni, CONST RECT * lprcFrom, CONST RECT * lprcTo);
+
+#endif /* WINVER >= 0x0400 */
+
+#ifndef NOCLIPBOARD
+
+// begin_r_winuser
+
+/*
+ * Predefined Clipboard Formats
+ */
+#define CF_TEXT 1
+#define CF_BITMAP 2
+#define CF_METAFILEPICT 3
+#define CF_SYLK 4
+#define CF_DIF 5
+#define CF_TIFF 6
+#define CF_OEMTEXT 7
+#define CF_DIB 8
+#define CF_PALETTE 9
+#define CF_PENDATA 10
+#define CF_RIFF 11
+#define CF_WAVE 12
+#define CF_UNICODETEXT 13
+#define CF_ENHMETAFILE 14
+#if(WINVER >= 0x0400)
+#define CF_HDROP 15
+#define CF_LOCALE 16
+#define CF_MAX 17
+#endif /* WINVER >= 0x0400 */
+
+#define CF_OWNERDISPLAY 0x0080
+#define CF_DSPTEXT 0x0081
+#define CF_DSPBITMAP 0x0082
+#define CF_DSPMETAFILEPICT 0x0083
+#define CF_DSPENHMETAFILE 0x008E
+
+/*
+ * "Private" formats don't get GlobalFree()'d
+ */
+#define CF_PRIVATEFIRST 0x0200
+#define CF_PRIVATELAST 0x02FF
+
+/*
+ * "GDIOBJ" formats do get DeleteObject()'d
+ */
+#define CF_GDIOBJFIRST 0x0300
+#define CF_GDIOBJLAST 0x03FF
+
+// end_r_winuser
+
+#endif /* !NOCLIPBOARD */
+
+/*
+ * Defines for the fVirt field of the Accelerator table structure.
+ */
+#define FVIRTKEY TRUE /* Assumed to be == TRUE */
+#define FNOINVERT 0x02
+#define FSHIFT 0x04
+#define FCONTROL 0x08
+#define FALT 0x10
+
+typedef struct tagACCEL {
+ BYTE fVirt; /* Also called the flags field */
+ WORD key;
+ WORD cmd;
+} ACCEL, *LPACCEL;
+
+typedef struct tagPAINTSTRUCT {
+ HDC hdc;
+ BOOL fErase;
+ RECT rcPaint;
+ BOOL fRestore;
+ BOOL fIncUpdate;
+ BYTE rgbReserved[32];
+} PAINTSTRUCT, *PPAINTSTRUCT, *NPPAINTSTRUCT, *LPPAINTSTRUCT;
+
+typedef struct tagCREATESTRUCTA {
+ LPVOID lpCreateParams;
+ HINSTANCE hInstance;
+ HMENU hMenu;
+ HWND hwndParent;
+ int cy;
+ int cx;
+ int y;
+ int x;
+ LONG style;
+ LPCSTR lpszName;
+ LPCSTR lpszClass;
+ DWORD dwExStyle;
+} CREATESTRUCTA, *LPCREATESTRUCTA;
+typedef struct tagCREATESTRUCTW {
+ LPVOID lpCreateParams;
+ HINSTANCE hInstance;
+ HMENU hMenu;
+ HWND hwndParent;
+ int cy;
+ int cx;
+ int y;
+ int x;
+ LONG style;
+ LPCWSTR lpszName;
+ LPCWSTR lpszClass;
+ DWORD dwExStyle;
+} CREATESTRUCTW, *LPCREATESTRUCTW;
+#ifdef UNICODE
+typedef CREATESTRUCTW CREATESTRUCT;
+typedef LPCREATESTRUCTW LPCREATESTRUCT;
+#else
+typedef CREATESTRUCTA CREATESTRUCT;
+typedef LPCREATESTRUCTA LPCREATESTRUCT;
+#endif // UNICODE
+
+typedef struct tagWINDOWPLACEMENT {
+ UINT length;
+ UINT flags;
+ UINT showCmd;
+ POINT ptMinPosition;
+ POINT ptMaxPosition;
+ RECT rcNormalPosition;
+} WINDOWPLACEMENT;
+typedef WINDOWPLACEMENT *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT;
+
+#define WPF_SETMINPOSITION 0x0001
+#define WPF_RESTORETOMAXIMIZED 0x0002
+#if(WINVER >= 0x0400)
+typedef struct tagNMHDR
+{
+ HWND hwndFrom;
+ UINT idFrom;
+ UINT code; // NM_ code
+} NMHDR;
+typedef NMHDR FAR * LPNMHDR;
+
+typedef struct tagSTYLESTRUCT
+{
+ DWORD styleOld;
+ DWORD styleNew;
+} STYLESTRUCT, * LPSTYLESTRUCT;
+#endif /* WINVER >= 0x0400 */
+
+
+/*
+ * Owner draw control types
+ */
+#define ODT_MENU 1
+#define ODT_LISTBOX 2
+#define ODT_COMBOBOX 3
+#define ODT_BUTTON 4
+#if(WINVER >= 0x0400)
+#define ODT_STATIC 5
+#endif /* WINVER >= 0x0400 */
+
+/*
+ * Owner draw actions
+ */
+#define ODA_DRAWENTIRE 0x0001
+#define ODA_SELECT 0x0002
+#define ODA_FOCUS 0x0004
+
+/*
+ * Owner draw state
+ */
+#define ODS_SELECTED 0x0001
+#define ODS_GRAYED 0x0002
+#define ODS_DISABLED 0x0004
+#define ODS_CHECKED 0x0008
+#define ODS_FOCUS 0x0010
+#if(WINVER >= 0x0400)
+#define ODS_DEFAULT 0x0020
+#define ODS_COMBOBOXEDIT 0x1000
+#endif /* WINVER >= 0x0400 */
+
+/*
+ * MEASUREITEMSTRUCT for ownerdraw
+ */
+typedef struct tagMEASUREITEMSTRUCT {
+ UINT CtlType;
+ UINT CtlID;
+ UINT itemID;
+ UINT itemWidth;
+ UINT itemHeight;
+ DWORD itemData;
+} MEASUREITEMSTRUCT, NEAR *PMEASUREITEMSTRUCT, FAR *LPMEASUREITEMSTRUCT;
+
+
+
+/*
+ * DRAWITEMSTRUCT for ownerdraw
+ */
+typedef struct tagDRAWITEMSTRUCT {
+ UINT CtlType;
+ UINT CtlID;
+ UINT itemID;
+ UINT itemAction;
+ UINT itemState;
+ HWND hwndItem;
+ HDC hDC;
+ RECT rcItem;
+ DWORD itemData;
+} DRAWITEMSTRUCT, NEAR *PDRAWITEMSTRUCT, FAR *LPDRAWITEMSTRUCT;
+
+/*
+ * DELETEITEMSTRUCT for ownerdraw
+ */
+typedef struct tagDELETEITEMSTRUCT {
+ UINT CtlType;
+ UINT CtlID;
+ UINT itemID;
+ HWND hwndItem;
+ UINT itemData;
+} DELETEITEMSTRUCT, NEAR *PDELETEITEMSTRUCT, FAR *LPDELETEITEMSTRUCT;
+
+/*
+ * COMPAREITEMSTUCT for ownerdraw sorting
+ */
+typedef struct tagCOMPAREITEMSTRUCT {
+ UINT CtlType;
+ UINT CtlID;
+ HWND hwndItem;
+ UINT itemID1;
+ DWORD itemData1;
+ UINT itemID2;
+ DWORD itemData2;
+ DWORD dwLocaleId;
+} COMPAREITEMSTRUCT, NEAR *PCOMPAREITEMSTRUCT, FAR *LPCOMPAREITEMSTRUCT;
+
+#ifndef NOMSG
+
+/*
+ * Message Function Templates
+ */
+
+WINUSERAPI
+BOOL
+WINAPI
+GetMessageA(
+ LPMSG lpMsg,
+ HWND hWnd ,
+ UINT wMsgFilterMin,
+ UINT wMsgFilterMax);
+WINUSERAPI
+BOOL
+WINAPI
+GetMessageW(
+ LPMSG lpMsg,
+ HWND hWnd ,
+ UINT wMsgFilterMin,
+ UINT wMsgFilterMax);
+#ifdef UNICODE
+#define GetMessage GetMessageW
+#else
+#define GetMessage GetMessageA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+TranslateMessage(
+ CONST MSG *lpMsg);
+
+WINUSERAPI
+LONG
+WINAPI
+DispatchMessageA(
+ CONST MSG *lpMsg);
+WINUSERAPI
+LONG
+WINAPI
+DispatchMessageW(
+ CONST MSG *lpMsg);
+#ifdef UNICODE
+#define DispatchMessage DispatchMessageW
+#else
+#define DispatchMessage DispatchMessageA
+#endif // !UNICODE
+
+
+WINUSERAPI
+BOOL
+WINAPI
+SetMessageQueue(
+ int cMessagesMax);
+
+WINUSERAPI
+BOOL
+WINAPI
+PeekMessageA(
+ LPMSG lpMsg,
+ HWND hWnd ,
+ UINT wMsgFilterMin,
+ UINT wMsgFilterMax,
+ UINT wRemoveMsg);
+WINUSERAPI
+BOOL
+WINAPI
+PeekMessageW(
+ LPMSG lpMsg,
+ HWND hWnd ,
+ UINT wMsgFilterMin,
+ UINT wMsgFilterMax,
+ UINT wRemoveMsg);
+#ifdef UNICODE
+#define PeekMessage PeekMessageW
+#else
+#define PeekMessage PeekMessageA
+#endif // !UNICODE
+
+/*
+ * PeekMessage() Options
+ */
+#define PM_NOREMOVE 0x0000
+#define PM_REMOVE 0x0001
+#define PM_NOYIELD 0x0002
+
+#endif /* !NOMSG */
+
+WINUSERAPI
+BOOL
+WINAPI
+RegisterHotKey(
+ HWND hWnd ,
+ int id,
+ UINT fsModifiers,
+ UINT vk);
+
+WINUSERAPI
+BOOL
+WINAPI
+UnregisterHotKey(
+ HWND hWnd,
+ int id);
+
+#define MOD_ALT 0x0001
+#define MOD_CONTROL 0x0002
+#define MOD_SHIFT 0x0004
+#define MOD_WIN 0x0008
+
+
+#define IDHOT_SNAPWINDOW (-1) /* SHIFT-PRINTSCRN */
+#define IDHOT_SNAPDESKTOP (-2) /* PRINTSCRN */
+
+#ifdef WIN_INTERNAL
+ #ifndef LSTRING
+ #define NOLSTRING
+ #endif /* LSTRING */
+ #ifndef LFILEIO
+ #define NOLFILEIO
+ #endif /* LFILEIO */
+#endif /* WIN_INTERNAL */
+
+#if(WINVER >= 0x0400)
+#define EW_RESTARTWINDOWS 0x0042L
+#define EW_REBOOTSYSTEM 0x0043L
+#define EW_EXITANDEXECAPP 0x0044L
+
+#define ENDSESSION_LOGOFF 0x80000000
+#endif /* WINVER >= 0x0400 */
+
+#define EWX_LOGOFF 0
+#define EWX_SHUTDOWN 1
+#define EWX_REBOOT 2
+#define EWX_FORCE 4
+#define EWX_POWEROFF 8
+
+
+#define ExitWindows(dwReserved, Code) ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF)
+
+WINUSERAPI
+BOOL
+WINAPI
+ExitWindowsEx(
+ UINT uFlags,
+ DWORD dwReserved);
+
+WINUSERAPI
+BOOL
+WINAPI
+SwapMouseButton(
+ BOOL fSwap);
+
+WINUSERAPI
+DWORD
+WINAPI
+GetMessagePos(
+ VOID);
+
+WINUSERAPI
+LONG
+WINAPI
+GetMessageTime(
+ VOID);
+
+WINUSERAPI
+LONG
+WINAPI
+GetMessageExtraInfo(
+ VOID);
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+LPARAM
+WINAPI
+SetMessageExtraInfo(
+ LPARAM lParam);
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+LRESULT
+WINAPI
+SendMessageA(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+LRESULT
+WINAPI
+SendMessageW(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define SendMessage SendMessageW
+#else
+#define SendMessage SendMessageA
+#endif // !UNICODE
+
+WINUSERAPI
+LRESULT
+WINAPI
+SendMessageTimeoutA(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam,
+ UINT fuFlags,
+ UINT uTimeout,
+ LPDWORD lpdwResult);
+WINUSERAPI
+LRESULT
+WINAPI
+SendMessageTimeoutW(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam,
+ UINT fuFlags,
+ UINT uTimeout,
+ LPDWORD lpdwResult);
+#ifdef UNICODE
+#define SendMessageTimeout SendMessageTimeoutW
+#else
+#define SendMessageTimeout SendMessageTimeoutA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+SendNotifyMessageA(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+BOOL
+WINAPI
+SendNotifyMessageW(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define SendNotifyMessage SendNotifyMessageW
+#else
+#define SendNotifyMessage SendNotifyMessageA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+SendMessageCallbackA(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam,
+ SENDASYNCPROC lpResultCallBack,
+ DWORD dwData);
+WINUSERAPI
+BOOL
+WINAPI
+SendMessageCallbackW(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam,
+ SENDASYNCPROC lpResultCallBack,
+ DWORD dwData);
+#ifdef UNICODE
+#define SendMessageCallback SendMessageCallbackW
+#else
+#define SendMessageCallback SendMessageCallbackA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+WINUSERAPI long WINAPI BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM);
+WINUSERAPI long WINAPI BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM);
+#ifdef UNICODE
+#define BroadcastSystemMessage BroadcastSystemMessageW
+#else
+#define BroadcastSystemMessage BroadcastSystemMessageA
+#endif // !UNICODE
+//Broadcast Special Message Recipient list
+#define BSM_ALLCOMPONENTS 0x00000000
+#define BSM_VXDS 0x00000001
+#define BSM_NETDRIVER 0x00000002
+#define BSM_INSTALLABLEDRIVERS 0x00000004
+#define BSM_APPLICATIONS 0x00000008
+#define BSM_ALLDESKTOPS 0x00000010
+
+//Broadcast Special Message Flags
+#define BSF_QUERY 0x00000001
+#define BSF_IGNORECURRENTTASK 0x00000002
+#define BSF_FLUSHDISK 0x00000004
+#define BSF_NOHANG 0x00000008
+#define BSF_POSTMESSAGE 0x00000010
+#define BSF_FORCEIFHUNG 0x00000020
+#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
+
+typedef struct tagBROADCASTSYSMSG
+{
+ UINT uiMessage;
+ WPARAM wParam;
+ LPARAM lParam;
+} BROADCASTSYSMSG;
+typedef BROADCASTSYSMSG FAR *LPBROADCASTSYSMSG;
+
+#define BROADCAST_QUERY_DENY 0x424D5144 // Return this value to deny a query.
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+BOOL
+WINAPI
+PostMessageA(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+BOOL
+WINAPI
+PostMessageW(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define PostMessage PostMessageW
+#else
+#define PostMessage PostMessageA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+PostThreadMessageA(
+ DWORD idThread,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+BOOL
+WINAPI
+PostThreadMessageW(
+ DWORD idThread,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define PostThreadMessage PostThreadMessageW
+#else
+#define PostThreadMessage PostThreadMessageA
+#endif // !UNICODE
+
+#define PostAppMessageA(idThread, wMsg, wParam, lParam)\
+ PostThreadMessageA((DWORD)idThread, wMsg, wParam, lParam)
+#define PostAppMessageW(idThread, wMsg, wParam, lParam)\
+ PostThreadMessageW((DWORD)idThread, wMsg, wParam, lParam)
+#ifdef UNICODE
+#define PostAppMessage PostAppMessageW
+#else
+#define PostAppMessage PostAppMessageA
+#endif // !UNICODE
+
+/*
+ * Special HWND value for use with PostMessage() and SendMessage()
+ */
+#define HWND_BROADCAST ((HWND)0xffff)
+
+WINUSERAPI
+BOOL
+WINAPI
+AttachThreadInput(
+ DWORD idAttach,
+ DWORD idAttachTo,
+ BOOL fAttach);
+
+
+WINUSERAPI
+BOOL
+WINAPI
+ReplyMessage(
+ LRESULT lResult);
+
+WINUSERAPI
+BOOL
+WINAPI
+WaitMessage(
+ VOID);
+
+WINUSERAPI
+DWORD
+WINAPI
+WaitForInputIdle(
+ HANDLE hProcess,
+ DWORD dwMilliseconds);
+
+WINUSERAPI
+LRESULT
+WINAPI
+DefWindowProcA(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+LRESULT
+WINAPI
+DefWindowProcW(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define DefWindowProc DefWindowProcW
+#else
+#define DefWindowProc DefWindowProcA
+#endif // !UNICODE
+
+WINUSERAPI
+VOID
+WINAPI
+PostQuitMessage(
+ int nExitCode);
+
+#ifdef STRICT
+
+WINUSERAPI
+LRESULT
+WINAPI
+CallWindowProcA(
+ WNDPROC lpPrevWndFunc,
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+LRESULT
+WINAPI
+CallWindowProcW(
+ WNDPROC lpPrevWndFunc,
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define CallWindowProc CallWindowProcW
+#else
+#define CallWindowProc CallWindowProcA
+#endif // !UNICODE
+
+#else /* !STRICT */
+
+WINUSERAPI
+LRESULT
+WINAPI
+CallWindowProcA(
+ FARPROC lpPrevWndFunc,
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+LRESULT
+WINAPI
+CallWindowProcW(
+ FARPROC lpPrevWndFunc,
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define CallWindowProc CallWindowProcW
+#else
+#define CallWindowProc CallWindowProcA
+#endif // !UNICODE
+
+#endif /* !STRICT */
+
+WINUSERAPI
+BOOL
+WINAPI
+InSendMessage(
+ VOID);
+
+WINUSERAPI
+UINT
+WINAPI
+GetDoubleClickTime(
+ VOID);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetDoubleClickTime(
+ UINT);
+
+WINUSERAPI
+ATOM
+WINAPI
+RegisterClassA(
+ CONST WNDCLASSA *lpWndClass);
+WINUSERAPI
+ATOM
+WINAPI
+RegisterClassW(
+ CONST WNDCLASSW *lpWndClass);
+#ifdef UNICODE
+#define RegisterClass RegisterClassW
+#else
+#define RegisterClass RegisterClassA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+UnregisterClassA(
+ LPCSTR lpClassName,
+ HINSTANCE hInstance);
+WINUSERAPI
+BOOL
+WINAPI
+UnregisterClassW(
+ LPCWSTR lpClassName,
+ HINSTANCE hInstance);
+#ifdef UNICODE
+#define UnregisterClass UnregisterClassW
+#else
+#define UnregisterClass UnregisterClassA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+GetClassInfoA(
+ HINSTANCE hInstance ,
+ LPCSTR lpClassName,
+ LPWNDCLASSA lpWndClass);
+WINUSERAPI
+BOOL
+WINAPI
+GetClassInfoW(
+ HINSTANCE hInstance ,
+ LPCWSTR lpClassName,
+ LPWNDCLASSW lpWndClass);
+#ifdef UNICODE
+#define GetClassInfo GetClassInfoW
+#else
+#define GetClassInfo GetClassInfoA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+ATOM
+WINAPI
+RegisterClassExA(CONST WNDCLASSEXA *);
+WINUSERAPI
+ATOM
+WINAPI
+RegisterClassExW(CONST WNDCLASSEXW *);
+#ifdef UNICODE
+#define RegisterClassEx RegisterClassExW
+#else
+#define RegisterClassEx RegisterClassExA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+GetClassInfoExA(HINSTANCE, LPCSTR, LPWNDCLASSEXA);
+WINUSERAPI
+BOOL
+WINAPI
+GetClassInfoExW(HINSTANCE, LPCWSTR, LPWNDCLASSEXW);
+#ifdef UNICODE
+#define GetClassInfoEx GetClassInfoExW
+#else
+#define GetClassInfoEx GetClassInfoExA
+#endif // !UNICODE
+
+#endif /* WINVER >= 0x0400 */
+
+#define CW_USEDEFAULT ((int)0x80000000)
+
+/*
+ * Special value for CreateWindow, et al.
+ */
+#define HWND_DESKTOP ((HWND)0)
+
+WINUSERAPI
+HWND
+WINAPI
+CreateWindowExA(
+ DWORD dwExStyle,
+ LPCSTR lpClassName,
+ LPCSTR lpWindowName,
+ DWORD dwStyle,
+ int X,
+ int Y,
+ int nWidth,
+ int nHeight,
+ HWND hWndParent ,
+ HMENU hMenu,
+ HINSTANCE hInstance,
+ LPVOID lpParam);
+WINUSERAPI
+HWND
+WINAPI
+CreateWindowExW(
+ DWORD dwExStyle,
+ LPCWSTR lpClassName,
+ LPCWSTR lpWindowName,
+ DWORD dwStyle,
+ int X,
+ int Y,
+ int nWidth,
+ int nHeight,
+ HWND hWndParent ,
+ HMENU hMenu,
+ HINSTANCE hInstance,
+ LPVOID lpParam);
+#ifdef UNICODE
+#define CreateWindowEx CreateWindowExW
+#else
+#define CreateWindowEx CreateWindowExA
+#endif // !UNICODE
+
+#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,\
+nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
+CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,\
+nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
+#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y,\
+nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
+CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y,\
+nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
+#ifdef UNICODE
+#define CreateWindow CreateWindowW
+#else
+#define CreateWindow CreateWindowA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+IsWindow(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+IsMenu(
+ HMENU hMenu);
+
+WINUSERAPI
+BOOL
+WINAPI
+IsChild(
+ HWND hWndParent,
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+DestroyWindow(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+ShowWindow(
+ HWND hWnd,
+ int nCmdShow);
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+BOOL
+WINAPI
+ShowWindowAsync(
+ HWND hWnd,
+ int nCmdShow);
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+BOOL
+WINAPI
+FlashWindow(
+ HWND hWnd,
+ BOOL bInvert);
+
+WINUSERAPI
+BOOL
+WINAPI
+ShowOwnedPopups(
+ HWND hWnd,
+ BOOL fShow);
+
+WINUSERAPI
+BOOL
+WINAPI
+OpenIcon(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+CloseWindow(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+MoveWindow(
+ HWND hWnd,
+ int X,
+ int Y,
+ int nWidth,
+ int nHeight,
+ BOOL bRepaint);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetWindowPos(
+ HWND hWnd,
+ HWND hWndInsertAfter ,
+ int X,
+ int Y,
+ int cx,
+ int cy,
+ UINT uFlags);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetWindowPlacement(
+ HWND hWnd,
+ WINDOWPLACEMENT *lpwndpl);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetWindowPlacement(
+ HWND hWnd,
+ CONST WINDOWPLACEMENT *lpwndpl);
+
+
+#ifndef NODEFERWINDOWPOS
+
+WINUSERAPI
+HDWP
+WINAPI
+BeginDeferWindowPos(
+ int nNumWindows);
+
+WINUSERAPI
+HDWP
+WINAPI
+DeferWindowPos(
+ HDWP hWinPosInfo,
+ HWND hWnd,
+ HWND hWndInsertAfter ,
+ int x,
+ int y,
+ int cx,
+ int cy,
+ UINT uFlags);
+
+WINUSERAPI
+BOOL
+WINAPI
+EndDeferWindowPos(
+ HDWP hWinPosInfo);
+
+#endif /* !NODEFERWINDOWPOS */
+
+WINUSERAPI
+BOOL
+WINAPI
+IsWindowVisible(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+IsIconic(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+AnyPopup(
+ VOID);
+
+WINUSERAPI
+BOOL
+WINAPI
+BringWindowToTop(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+IsZoomed(
+ HWND hWnd);
+
+/*
+ * SetWindowPos Flags
+ */
+#define SWP_NOSIZE 0x0001
+#define SWP_NOMOVE 0x0002
+#define SWP_NOZORDER 0x0004
+#define SWP_NOREDRAW 0x0008
+#define SWP_NOACTIVATE 0x0010
+#define SWP_FRAMECHANGED 0x0020 /* The frame changed: send WM_NCCALCSIZE */
+#define SWP_SHOWWINDOW 0x0040
+#define SWP_HIDEWINDOW 0x0080
+#define SWP_NOCOPYBITS 0x0100
+#define SWP_NOOWNERZORDER 0x0200 /* Don't do owner Z ordering */
+#define SWP_NOSENDCHANGING 0x0400 /* Don't send WM_WINDOWPOSCHANGING */
+
+#define SWP_DRAWFRAME SWP_FRAMECHANGED
+#define SWP_NOREPOSITION SWP_NOOWNERZORDER
+
+#if(WINVER >= 0x0400)
+#define SWP_DEFERERASE 0x2000
+#define SWP_ASYNCWINDOWPOS 0x4000
+#endif /* WINVER >= 0x0400 */
+
+
+#define HWND_TOP ((HWND)0)
+#define HWND_BOTTOM ((HWND)1)
+#define HWND_TOPMOST ((HWND)-1)
+#define HWND_NOTOPMOST ((HWND)-2)
+
+
+#ifndef NOCTLMGR
+
+/*
+ * WARNING:
+ * The following structures must NOT be DWORD padded because they are
+ * followed by strings, etc that do not have to be DWORD aligned.
+ */
+#include <pshpack2.h>
+
+/*
+ * original NT 32 bit dialog template:
+ */
+typedef struct {
+ DWORD style;
+ DWORD dwExtendedStyle;
+ WORD cdit;
+ short x;
+ short y;
+ short cx;
+ short cy;
+} DLGTEMPLATE;
+typedef DLGTEMPLATE *LPDLGTEMPLATEA;
+typedef DLGTEMPLATE *LPDLGTEMPLATEW;
+#ifdef UNICODE
+typedef LPDLGTEMPLATEW LPDLGTEMPLATE;
+#else
+typedef LPDLGTEMPLATEA LPDLGTEMPLATE;
+#endif // UNICODE
+typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEA;
+typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEW;
+#ifdef UNICODE
+typedef LPCDLGTEMPLATEW LPCDLGTEMPLATE;
+#else
+typedef LPCDLGTEMPLATEA LPCDLGTEMPLATE;
+#endif // UNICODE
+
+/*
+ * 32 bit Dialog item template.
+ */
+typedef struct {
+ DWORD style;
+ DWORD dwExtendedStyle;
+ short x;
+ short y;
+ short cx;
+ short cy;
+ WORD id;
+} DLGITEMTEMPLATE;
+typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;
+typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;
+#ifdef UNICODE
+typedef PDLGITEMTEMPLATEW PDLGITEMTEMPLATE;
+#else
+typedef PDLGITEMTEMPLATEA PDLGITEMTEMPLATE;
+#endif // UNICODE
+typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
+typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
+#ifdef UNICODE
+typedef LPDLGITEMTEMPLATEW LPDLGITEMTEMPLATE;
+#else
+typedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE;
+#endif // UNICODE
+
+
+#include <poppack.h> /* Resume normal packing */
+
+WINUSERAPI
+HWND
+WINAPI
+CreateDialogParamA(
+ HINSTANCE hInstance,
+ LPCSTR lpTemplateName,
+ HWND hWndParent ,
+ DLGPROC lpDialogFunc,
+ LPARAM dwInitParam);
+WINUSERAPI
+HWND
+WINAPI
+CreateDialogParamW(
+ HINSTANCE hInstance,
+ LPCWSTR lpTemplateName,
+ HWND hWndParent ,
+ DLGPROC lpDialogFunc,
+ LPARAM dwInitParam);
+#ifdef UNICODE
+#define CreateDialogParam CreateDialogParamW
+#else
+#define CreateDialogParam CreateDialogParamA
+#endif // !UNICODE
+
+WINUSERAPI
+HWND
+WINAPI
+CreateDialogIndirectParamA(
+ HINSTANCE hInstance,
+ LPCDLGTEMPLATEA lpTemplate,
+ HWND hWndParent,
+ DLGPROC lpDialogFunc,
+ LPARAM dwInitParam);
+WINUSERAPI
+HWND
+WINAPI
+CreateDialogIndirectParamW(
+ HINSTANCE hInstance,
+ LPCDLGTEMPLATEW lpTemplate,
+ HWND hWndParent,
+ DLGPROC lpDialogFunc,
+ LPARAM dwInitParam);
+#ifdef UNICODE
+#define CreateDialogIndirectParam CreateDialogIndirectParamW
+#else
+#define CreateDialogIndirectParam CreateDialogIndirectParamA
+#endif // !UNICODE
+
+#define CreateDialogA(hInstance, lpName, hWndParent, lpDialogFunc) \
+CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0L)
+#define CreateDialogW(hInstance, lpName, hWndParent, lpDialogFunc) \
+CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0L)
+#ifdef UNICODE
+#define CreateDialog CreateDialogW
+#else
+#define CreateDialog CreateDialogA
+#endif // !UNICODE
+
+#define CreateDialogIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
+CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
+#define CreateDialogIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
+CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
+#ifdef UNICODE
+#define CreateDialogIndirect CreateDialogIndirectW
+#else
+#define CreateDialogIndirect CreateDialogIndirectA
+#endif // !UNICODE
+
+WINUSERAPI
+int
+WINAPI
+DialogBoxParamA(
+ HINSTANCE hInstance,
+ LPCSTR lpTemplateName,
+ HWND hWndParent ,
+ DLGPROC lpDialogFunc,
+ LPARAM dwInitParam);
+WINUSERAPI
+int
+WINAPI
+DialogBoxParamW(
+ HINSTANCE hInstance,
+ LPCWSTR lpTemplateName,
+ HWND hWndParent ,
+ DLGPROC lpDialogFunc,
+ LPARAM dwInitParam);
+#ifdef UNICODE
+#define DialogBoxParam DialogBoxParamW
+#else
+#define DialogBoxParam DialogBoxParamA
+#endif // !UNICODE
+
+WINUSERAPI
+int
+WINAPI
+DialogBoxIndirectParamA(
+ HINSTANCE hInstance,
+ LPCDLGTEMPLATEA hDialogTemplate,
+ HWND hWndParent ,
+ DLGPROC lpDialogFunc,
+ LPARAM dwInitParam);
+WINUSERAPI
+int
+WINAPI
+DialogBoxIndirectParamW(
+ HINSTANCE hInstance,
+ LPCDLGTEMPLATEW hDialogTemplate,
+ HWND hWndParent ,
+ DLGPROC lpDialogFunc,
+ LPARAM dwInitParam);
+#ifdef UNICODE
+#define DialogBoxIndirectParam DialogBoxIndirectParamW
+#else
+#define DialogBoxIndirectParam DialogBoxIndirectParamA
+#endif // !UNICODE
+
+#define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
+DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
+#define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
+DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
+#ifdef UNICODE
+#define DialogBox DialogBoxW
+#else
+#define DialogBox DialogBoxA
+#endif // !UNICODE
+
+#define DialogBoxIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
+DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
+#define DialogBoxIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
+DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
+#ifdef UNICODE
+#define DialogBoxIndirect DialogBoxIndirectW
+#else
+#define DialogBoxIndirect DialogBoxIndirectA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+EndDialog(
+ HWND hDlg,
+ int nResult);
+
+WINUSERAPI
+HWND
+WINAPI
+GetDlgItem(
+ HWND hDlg,
+ int nIDDlgItem);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetDlgItemInt(
+ HWND hDlg,
+ int nIDDlgItem,
+ UINT uValue,
+ BOOL bSigned);
+
+WINUSERAPI
+UINT
+WINAPI
+GetDlgItemInt(
+ HWND hDlg,
+ int nIDDlgItem,
+ BOOL *lpTranslated,
+ BOOL bSigned);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetDlgItemTextA(
+ HWND hDlg,
+ int nIDDlgItem,
+ LPCSTR lpString);
+WINUSERAPI
+BOOL
+WINAPI
+SetDlgItemTextW(
+ HWND hDlg,
+ int nIDDlgItem,
+ LPCWSTR lpString);
+#ifdef UNICODE
+#define SetDlgItemText SetDlgItemTextW
+#else
+#define SetDlgItemText SetDlgItemTextA
+#endif // !UNICODE
+
+WINUSERAPI
+UINT
+WINAPI
+GetDlgItemTextA(
+ HWND hDlg,
+ int nIDDlgItem,
+ LPSTR lpString,
+ int nMaxCount);
+WINUSERAPI
+UINT
+WINAPI
+GetDlgItemTextW(
+ HWND hDlg,
+ int nIDDlgItem,
+ LPWSTR lpString,
+ int nMaxCount);
+#ifdef UNICODE
+#define GetDlgItemText GetDlgItemTextW
+#else
+#define GetDlgItemText GetDlgItemTextA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+CheckDlgButton(
+ HWND hDlg,
+ int nIDButton,
+ UINT uCheck);
+
+WINUSERAPI
+BOOL
+WINAPI
+CheckRadioButton(
+ HWND hDlg,
+ int nIDFirstButton,
+ int nIDLastButton,
+ int nIDCheckButton);
+
+WINUSERAPI
+UINT
+WINAPI
+IsDlgButtonChecked(
+ HWND hDlg,
+ int nIDButton);
+
+WINUSERAPI
+LONG
+WINAPI
+SendDlgItemMessageA(
+ HWND hDlg,
+ int nIDDlgItem,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+LONG
+WINAPI
+SendDlgItemMessageW(
+ HWND hDlg,
+ int nIDDlgItem,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define SendDlgItemMessage SendDlgItemMessageW
+#else
+#define SendDlgItemMessage SendDlgItemMessageA
+#endif // !UNICODE
+
+WINUSERAPI
+HWND
+WINAPI
+GetNextDlgGroupItem(
+ HWND hDlg,
+ HWND hCtl,
+ BOOL bPrevious);
+
+WINUSERAPI
+HWND
+WINAPI
+GetNextDlgTabItem(
+ HWND hDlg,
+ HWND hCtl,
+ BOOL bPrevious);
+
+WINUSERAPI
+int
+WINAPI
+GetDlgCtrlID(
+ HWND hWnd);
+
+WINUSERAPI
+long
+WINAPI
+GetDialogBaseUnits(VOID);
+
+WINUSERAPI
+LRESULT
+WINAPI
+DefDlgProcA(
+ HWND hDlg,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+LRESULT
+WINAPI
+DefDlgProcW(
+ HWND hDlg,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define DefDlgProc DefDlgProcW
+#else
+#define DefDlgProc DefDlgProcA
+#endif // !UNICODE
+
+/*
+ * Window extra byted needed for private dialog classes.
+ */
+#define DLGWINDOWEXTRA 30
+
+#endif /* !NOCTLMGR */
+
+#ifndef NOMSG
+
+WINUSERAPI
+BOOL
+WINAPI
+CallMsgFilterA(
+ LPMSG lpMsg,
+ int nCode);
+WINUSERAPI
+BOOL
+WINAPI
+CallMsgFilterW(
+ LPMSG lpMsg,
+ int nCode);
+#ifdef UNICODE
+#define CallMsgFilter CallMsgFilterW
+#else
+#define CallMsgFilter CallMsgFilterA
+#endif // !UNICODE
+
+#endif /* !NOMSG */
+
+#ifndef NOCLIPBOARD
+
+/*
+ * Clipboard Manager Functions
+ */
+
+WINUSERAPI
+BOOL
+WINAPI
+OpenClipboard(
+ HWND hWndNewOwner);
+
+WINUSERAPI
+BOOL
+WINAPI
+CloseClipboard(
+ VOID);
+
+WINUSERAPI
+HWND
+WINAPI
+GetClipboardOwner(
+ VOID);
+
+WINUSERAPI
+HWND
+WINAPI
+SetClipboardViewer(
+ HWND hWndNewViewer);
+
+WINUSERAPI
+HWND
+WINAPI
+GetClipboardViewer(
+ VOID);
+
+WINUSERAPI
+BOOL
+WINAPI
+ChangeClipboardChain(
+ HWND hWndRemove,
+ HWND hWndNewNext);
+
+WINUSERAPI
+HANDLE
+WINAPI
+SetClipboardData(
+ UINT uFormat,
+ HANDLE hMem);
+
+WINUSERAPI
+HANDLE
+WINAPI
+ GetClipboardData(
+ UINT uFormat);
+
+WINUSERAPI
+UINT
+WINAPI
+RegisterClipboardFormatA(
+ LPCSTR lpszFormat);
+WINUSERAPI
+UINT
+WINAPI
+RegisterClipboardFormatW(
+ LPCWSTR lpszFormat);
+#ifdef UNICODE
+#define RegisterClipboardFormat RegisterClipboardFormatW
+#else
+#define RegisterClipboardFormat RegisterClipboardFormatA
+#endif // !UNICODE
+
+WINUSERAPI
+int
+WINAPI
+CountClipboardFormats(
+ VOID);
+
+WINUSERAPI
+UINT
+WINAPI
+EnumClipboardFormats(
+ UINT format);
+
+WINUSERAPI
+int
+WINAPI
+GetClipboardFormatNameA(
+ UINT format,
+ LPSTR lpszFormatName,
+ int cchMaxCount);
+WINUSERAPI
+int
+WINAPI
+GetClipboardFormatNameW(
+ UINT format,
+ LPWSTR lpszFormatName,
+ int cchMaxCount);
+#ifdef UNICODE
+#define GetClipboardFormatName GetClipboardFormatNameW
+#else
+#define GetClipboardFormatName GetClipboardFormatNameA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+EmptyClipboard(
+ VOID);
+
+WINUSERAPI
+BOOL
+WINAPI
+IsClipboardFormatAvailable(
+ UINT format);
+
+WINUSERAPI
+int
+WINAPI
+GetPriorityClipboardFormat(
+ UINT *paFormatPriorityList,
+ int cFormats);
+
+WINUSERAPI
+HWND
+WINAPI
+GetOpenClipboardWindow(
+ VOID);
+
+#endif /* !NOCLIPBOARD */
+
+/*
+ * Character Translation Routines
+ */
+
+WINUSERAPI
+BOOL
+WINAPI
+CharToOemA(
+ LPCSTR lpszSrc,
+ LPSTR lpszDst);
+WINUSERAPI
+BOOL
+WINAPI
+CharToOemW(
+ LPCWSTR lpszSrc,
+ LPSTR lpszDst);
+#ifdef UNICODE
+#define CharToOem CharToOemW
+#else
+#define CharToOem CharToOemA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+OemToCharA(
+ LPCSTR lpszSrc,
+ LPSTR lpszDst);
+WINUSERAPI
+BOOL
+WINAPI
+OemToCharW(
+ LPCSTR lpszSrc,
+ LPWSTR lpszDst);
+#ifdef UNICODE
+#define OemToChar OemToCharW
+#else
+#define OemToChar OemToCharA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+CharToOemBuffA(
+ LPCSTR lpszSrc,
+ LPSTR lpszDst,
+ DWORD cchDstLength);
+WINUSERAPI
+BOOL
+WINAPI
+CharToOemBuffW(
+ LPCWSTR lpszSrc,
+ LPSTR lpszDst,
+ DWORD cchDstLength);
+#ifdef UNICODE
+#define CharToOemBuff CharToOemBuffW
+#else
+#define CharToOemBuff CharToOemBuffA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+OemToCharBuffA(
+ LPCSTR lpszSrc,
+ LPSTR lpszDst,
+ DWORD cchDstLength);
+WINUSERAPI
+BOOL
+WINAPI
+OemToCharBuffW(
+ LPCSTR lpszSrc,
+ LPWSTR lpszDst,
+ DWORD cchDstLength);
+#ifdef UNICODE
+#define OemToCharBuff OemToCharBuffW
+#else
+#define OemToCharBuff OemToCharBuffA
+#endif // !UNICODE
+
+WINUSERAPI
+LPSTR
+WINAPI
+CharUpperA(
+ LPSTR lpsz);
+WINUSERAPI
+LPWSTR
+WINAPI
+CharUpperW(
+ LPWSTR lpsz);
+#ifdef UNICODE
+#define CharUpper CharUpperW
+#else
+#define CharUpper CharUpperA
+#endif // !UNICODE
+
+WINUSERAPI
+DWORD
+WINAPI
+CharUpperBuffA(
+ LPSTR lpsz,
+ DWORD cchLength);
+WINUSERAPI
+DWORD
+WINAPI
+CharUpperBuffW(
+ LPWSTR lpsz,
+ DWORD cchLength);
+#ifdef UNICODE
+#define CharUpperBuff CharUpperBuffW
+#else
+#define CharUpperBuff CharUpperBuffA
+#endif // !UNICODE
+
+WINUSERAPI
+LPSTR
+WINAPI
+CharLowerA(
+ LPSTR lpsz);
+WINUSERAPI
+LPWSTR
+WINAPI
+CharLowerW(
+ LPWSTR lpsz);
+#ifdef UNICODE
+#define CharLower CharLowerW
+#else
+#define CharLower CharLowerA
+#endif // !UNICODE
+
+WINUSERAPI
+DWORD
+WINAPI
+CharLowerBuffA(
+ LPSTR lpsz,
+ DWORD cchLength);
+WINUSERAPI
+DWORD
+WINAPI
+CharLowerBuffW(
+ LPWSTR lpsz,
+ DWORD cchLength);
+#ifdef UNICODE
+#define CharLowerBuff CharLowerBuffW
+#else
+#define CharLowerBuff CharLowerBuffA
+#endif // !UNICODE
+
+WINUSERAPI
+LPSTR
+WINAPI
+CharNextA(
+ LPCSTR lpsz);
+WINUSERAPI
+LPWSTR
+WINAPI
+CharNextW(
+ LPCWSTR lpsz);
+#ifdef UNICODE
+#define CharNext CharNextW
+#else
+#define CharNext CharNextA
+#endif // !UNICODE
+
+WINUSERAPI
+LPSTR
+WINAPI
+CharPrevA(
+ LPCSTR lpszStart,
+ LPCSTR lpszCurrent);
+WINUSERAPI
+LPWSTR
+WINAPI
+CharPrevW(
+ LPCWSTR lpszStart,
+ LPCWSTR lpszCurrent);
+#ifdef UNICODE
+#define CharPrev CharPrevW
+#else
+#define CharPrev CharPrevA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+LPSTR
+WINAPI
+CharNextExA(
+ WORD CodePage,
+ LPCSTR lpCurrentChar,
+ DWORD dwFlags);
+
+WINUSERAPI
+LPSTR
+WINAPI
+CharPrevExA(
+ WORD CodePage,
+ LPCSTR lpStart,
+ LPCSTR lpCurrentChar,
+ DWORD dwFlags);
+#endif /* WINVER >= 0x0400 */
+
+/*
+ * Compatibility defines for character translation routines
+ */
+#define AnsiToOem CharToOemA
+#define OemToAnsi OemToCharA
+#define AnsiToOemBuff CharToOemBuffA
+#define OemToAnsiBuff OemToCharBuffA
+#define AnsiUpper CharUpperA
+#define AnsiUpperBuff CharUpperBuffA
+#define AnsiLower CharLowerA
+#define AnsiLowerBuff CharLowerBuffA
+#define AnsiNext CharNextA
+#define AnsiPrev CharPrevA
+
+#ifndef NOLANGUAGE
+/*
+ * Language dependent Routines
+ */
+
+WINUSERAPI
+BOOL
+WINAPI
+IsCharAlphaA(
+ CHAR ch);
+WINUSERAPI
+BOOL
+WINAPI
+IsCharAlphaW(
+ WCHAR ch);
+#ifdef UNICODE
+#define IsCharAlpha IsCharAlphaW
+#else
+#define IsCharAlpha IsCharAlphaA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+IsCharAlphaNumericA(
+ CHAR ch);
+WINUSERAPI
+BOOL
+WINAPI
+IsCharAlphaNumericW(
+ WCHAR ch);
+#ifdef UNICODE
+#define IsCharAlphaNumeric IsCharAlphaNumericW
+#else
+#define IsCharAlphaNumeric IsCharAlphaNumericA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+IsCharUpperA(
+ CHAR ch);
+WINUSERAPI
+BOOL
+WINAPI
+IsCharUpperW(
+ WCHAR ch);
+#ifdef UNICODE
+#define IsCharUpper IsCharUpperW
+#else
+#define IsCharUpper IsCharUpperA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+IsCharLowerA(
+ CHAR ch);
+WINUSERAPI
+BOOL
+WINAPI
+IsCharLowerW(
+ WCHAR ch);
+#ifdef UNICODE
+#define IsCharLower IsCharLowerW
+#else
+#define IsCharLower IsCharLowerA
+#endif // !UNICODE
+
+#endif /* !NOLANGUAGE */
+
+WINUSERAPI
+HWND
+WINAPI
+SetFocus(
+ HWND hWnd);
+
+WINUSERAPI
+HWND
+WINAPI
+GetActiveWindow(
+ VOID);
+
+WINUSERAPI
+HWND
+WINAPI
+GetFocus(
+ VOID);
+
+WINUSERAPI
+UINT
+WINAPI
+GetKBCodePage(
+ VOID);
+
+WINUSERAPI
+SHORT
+WINAPI
+GetKeyState(
+ int nVirtKey);
+
+WINUSERAPI
+SHORT
+WINAPI
+GetAsyncKeyState(
+ int vKey);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetKeyboardState(
+ PBYTE lpKeyState);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetKeyboardState(
+ LPBYTE lpKeyState);
+
+WINUSERAPI
+int
+WINAPI
+GetKeyNameTextA(
+ LONG lParam,
+ LPSTR lpString,
+ int nSize
+ );
+WINUSERAPI
+int
+WINAPI
+GetKeyNameTextW(
+ LONG lParam,
+ LPWSTR lpString,
+ int nSize
+ );
+#ifdef UNICODE
+#define GetKeyNameText GetKeyNameTextW
+#else
+#define GetKeyNameText GetKeyNameTextA
+#endif // !UNICODE
+
+WINUSERAPI
+int
+WINAPI
+GetKeyboardType(
+ int nTypeFlag);
+
+WINUSERAPI
+int
+WINAPI
+ToAscii(
+ UINT uVirtKey,
+ UINT uScanCode,
+ PBYTE lpKeyState,
+ LPWORD lpChar,
+ UINT uFlags);
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+int
+WINAPI
+ToAsciiEx(
+ UINT uVirtKey,
+ UINT uScanCode,
+ PBYTE lpKeyState,
+ LPWORD lpChar,
+ UINT uFlags,
+ HKL dwhkl);
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+int
+WINAPI
+ToUnicode(
+ UINT wVirtKey,
+ UINT wScanCode,
+ PBYTE lpKeyState,
+ LPWSTR pwszBuff,
+ int cchBuff,
+ UINT wFlags);
+
+WINUSERAPI
+DWORD
+WINAPI
+OemKeyScan(
+ WORD wOemChar);
+
+WINUSERAPI
+SHORT
+WINAPI
+VkKeyScanA(
+ CHAR ch);
+WINUSERAPI
+SHORT
+WINAPI
+VkKeyScanW(
+ WCHAR ch);
+#ifdef UNICODE
+#define VkKeyScan VkKeyScanW
+#else
+#define VkKeyScan VkKeyScanA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+SHORT
+WINAPI VkKeyScanExA(
+ CHAR ch,
+ HKL dwhkl);
+WINUSERAPI
+SHORT
+WINAPI VkKeyScanExW(
+ WCHAR ch,
+ HKL dwhkl);
+#ifdef UNICODE
+#define VkKeyScanEx VkKeyScanExW
+#else
+#define VkKeyScanEx VkKeyScanExA
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+#define KEYEVENTF_EXTENDEDKEY 0x0001
+#define KEYEVENTF_KEYUP 0x0002
+
+WINUSERAPI
+VOID
+WINAPI
+keybd_event(
+ BYTE bVk,
+ BYTE bScan,
+ DWORD dwFlags,
+ DWORD dwExtraInfo);
+
+#define MOUSEEVENTF_MOVE 0x0001 /* mouse move */
+#define MOUSEEVENTF_LEFTDOWN 0x0002 /* left button down */
+#define MOUSEEVENTF_LEFTUP 0x0004 /* left button up */
+#define MOUSEEVENTF_RIGHTDOWN 0x0008 /* right button down */
+#define MOUSEEVENTF_RIGHTUP 0x0010 /* right button up */
+#define MOUSEEVENTF_MIDDLEDOWN 0x0020 /* middle button down */
+#define MOUSEEVENTF_MIDDLEUP 0x0040 /* middle button up */
+#define MOUSEEVENTF_WHEEL 0x0800 /* wheel button rolled */
+#define MOUSEEVENTF_ABSOLUTE 0x8000 /* absolute move */
+
+WINUSERAPI
+VOID
+WINAPI
+mouse_event(
+ DWORD dwFlags,
+ DWORD dx,
+ DWORD dy,
+ DWORD dwData,
+ DWORD dwExtraInfo);
+
+WINUSERAPI
+UINT
+WINAPI
+MapVirtualKeyA(
+ UINT uCode,
+ UINT uMapType);
+WINUSERAPI
+UINT
+WINAPI
+MapVirtualKeyW(
+ UINT uCode,
+ UINT uMapType);
+#ifdef UNICODE
+#define MapVirtualKey MapVirtualKeyW
+#else
+#define MapVirtualKey MapVirtualKeyA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+UINT
+WINAPI
+MapVirtualKeyExA(
+ UINT uCode,
+ UINT uMapType,
+ HKL dwhkl);
+WINUSERAPI
+UINT
+WINAPI
+MapVirtualKeyExW(
+ UINT uCode,
+ UINT uMapType,
+ HKL dwhkl);
+#ifdef UNICODE
+#define MapVirtualKeyEx MapVirtualKeyExW
+#else
+#define MapVirtualKeyEx MapVirtualKeyExA
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+BOOL
+WINAPI
+GetInputState(
+ VOID);
+
+WINUSERAPI
+DWORD
+WINAPI
+GetQueueStatus(
+ UINT flags);
+
+WINUSERAPI
+HWND
+WINAPI
+GetCapture(
+ VOID);
+
+WINUSERAPI
+HWND
+WINAPI
+SetCapture(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+ReleaseCapture(
+ VOID);
+
+WINUSERAPI
+DWORD
+WINAPI
+MsgWaitForMultipleObjects(
+ DWORD nCount,
+ LPHANDLE pHandles,
+ BOOL fWaitAll,
+ DWORD dwMilliseconds,
+ DWORD dwWakeMask);
+
+WINUSERAPI
+DWORD
+WINAPI
+MsgWaitForMultipleObjectsEx(
+ DWORD nCount,
+ LPHANDLE pHandles,
+ DWORD dwMilliseconds,
+ DWORD dwWakeMask,
+ DWORD dwFlags);
+
+#define MWMO_WAITALL 0x0001
+#define MWMO_ALERTABLE 0x0002
+
+/*
+ * Queue status flags for GetQueueStatus() and MsgWaitForMultipleObjects()
+ */
+#define QS_KEY 0x0001
+#define QS_MOUSEMOVE 0x0002
+#define QS_MOUSEBUTTON 0x0004
+#define QS_POSTMESSAGE 0x0008
+#define QS_TIMER 0x0010
+#define QS_PAINT 0x0020
+#define QS_SENDMESSAGE 0x0040
+#define QS_HOTKEY 0x0080
+#define QS_ALLPOSTMESSAGE 0x0100
+
+
+
+#define QS_MOUSE (QS_MOUSEMOVE | \
+ QS_MOUSEBUTTON)
+
+#define QS_INPUT (QS_MOUSE | \
+ QS_KEY)
+
+#define QS_ALLEVENTS (QS_INPUT | \
+ QS_POSTMESSAGE | \
+ QS_TIMER | \
+ QS_PAINT | \
+ QS_HOTKEY)
+
+#define QS_ALLINPUT (QS_INPUT | \
+ QS_POSTMESSAGE | \
+ QS_TIMER | \
+ QS_PAINT | \
+ QS_HOTKEY | \
+ QS_SENDMESSAGE)
+
+
+/*
+ * Windows Functions
+ */
+
+WINUSERAPI
+UINT
+WINAPI
+SetTimer(
+ HWND hWnd ,
+ UINT nIDEvent,
+ UINT uElapse,
+ TIMERPROC lpTimerFunc);
+
+WINUSERAPI
+BOOL
+WINAPI
+KillTimer(
+ HWND hWnd,
+ UINT uIDEvent);
+
+WINUSERAPI
+BOOL
+WINAPI
+IsWindowUnicode(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+EnableWindow(
+ HWND hWnd,
+ BOOL bEnable);
+
+WINUSERAPI
+BOOL
+WINAPI
+IsWindowEnabled(
+ HWND hWnd);
+
+WINUSERAPI
+HACCEL
+WINAPI
+LoadAcceleratorsA(
+ HINSTANCE hInstance,
+ LPCSTR lpTableName);
+WINUSERAPI
+HACCEL
+WINAPI
+LoadAcceleratorsW(
+ HINSTANCE hInstance,
+ LPCWSTR lpTableName);
+#ifdef UNICODE
+#define LoadAccelerators LoadAcceleratorsW
+#else
+#define LoadAccelerators LoadAcceleratorsA
+#endif // !UNICODE
+
+WINUSERAPI
+HACCEL
+WINAPI
+CreateAcceleratorTableA(
+ LPACCEL, int);
+WINUSERAPI
+HACCEL
+WINAPI
+CreateAcceleratorTableW(
+ LPACCEL, int);
+#ifdef UNICODE
+#define CreateAcceleratorTable CreateAcceleratorTableW
+#else
+#define CreateAcceleratorTable CreateAcceleratorTableA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+DestroyAcceleratorTable(
+ HACCEL hAccel);
+
+WINUSERAPI
+int
+WINAPI
+CopyAcceleratorTableA(
+ HACCEL hAccelSrc,
+ LPACCEL lpAccelDst,
+ int cAccelEntries);
+WINUSERAPI
+int
+WINAPI
+CopyAcceleratorTableW(
+ HACCEL hAccelSrc,
+ LPACCEL lpAccelDst,
+ int cAccelEntries);
+#ifdef UNICODE
+#define CopyAcceleratorTable CopyAcceleratorTableW
+#else
+#define CopyAcceleratorTable CopyAcceleratorTableA
+#endif // !UNICODE
+
+#ifndef NOMSG
+
+WINUSERAPI
+int
+WINAPI
+TranslateAcceleratorA(
+ HWND hWnd,
+ HACCEL hAccTable,
+ LPMSG lpMsg);
+WINUSERAPI
+int
+WINAPI
+TranslateAcceleratorW(
+ HWND hWnd,
+ HACCEL hAccTable,
+ LPMSG lpMsg);
+#ifdef UNICODE
+#define TranslateAccelerator TranslateAcceleratorW
+#else
+#define TranslateAccelerator TranslateAcceleratorA
+#endif // !UNICODE
+
+#endif /* !NOMSG */
+
+#ifndef NOSYSMETRICS
+
+/*
+ * GetSystemMetrics() codes
+ */
+#define SM_CXSCREEN 0
+#define SM_CYSCREEN 1
+#define SM_CXVSCROLL 2
+#define SM_CYHSCROLL 3
+#define SM_CYCAPTION 4
+#define SM_CXBORDER 5
+#define SM_CYBORDER 6
+#define SM_CXDLGFRAME 7
+#define SM_CYDLGFRAME 8
+#define SM_CYVTHUMB 9
+#define SM_CXHTHUMB 10
+#define SM_CXICON 11
+#define SM_CYICON 12
+#define SM_CXCURSOR 13
+#define SM_CYCURSOR 14
+#define SM_CYMENU 15
+#define SM_CXFULLSCREEN 16
+#define SM_CYFULLSCREEN 17
+#define SM_CYKANJIWINDOW 18
+#define SM_MOUSEPRESENT 19
+#define SM_CYVSCROLL 20
+#define SM_CXHSCROLL 21
+#define SM_DEBUG 22
+#define SM_SWAPBUTTON 23
+#define SM_RESERVED1 24
+#define SM_RESERVED2 25
+#define SM_RESERVED3 26
+#define SM_RESERVED4 27
+#define SM_CXMIN 28
+#define SM_CYMIN 29
+#define SM_CXSIZE 30
+#define SM_CYSIZE 31
+#define SM_CXFRAME 32
+#define SM_CYFRAME 33
+#define SM_CXMINTRACK 34
+#define SM_CYMINTRACK 35
+#define SM_CXDOUBLECLK 36
+#define SM_CYDOUBLECLK 37
+#define SM_CXICONSPACING 38
+#define SM_CYICONSPACING 39
+#define SM_MENUDROPALIGNMENT 40
+#define SM_PENWINDOWS 41
+#define SM_DBCSENABLED 42
+#define SM_CMOUSEBUTTONS 43
+
+#if(WINVER >= 0x0400)
+#define SM_CXFIXEDFRAME SM_CXDLGFRAME /* ;win40 name change */
+#define SM_CYFIXEDFRAME SM_CYDLGFRAME /* ;win40 name change */
+#define SM_CXSIZEFRAME SM_CXFRAME /* ;win40 name change */
+#define SM_CYSIZEFRAME SM_CYFRAME /* ;win40 name change */
+
+#define SM_SECURE 44
+#define SM_CXEDGE 45
+#define SM_CYEDGE 46
+#define SM_CXMINSPACING 47
+#define SM_CYMINSPACING 48
+#define SM_CXSMICON 49
+#define SM_CYSMICON 50
+#define SM_CYSMCAPTION 51
+#define SM_CXSMSIZE 52
+#define SM_CYSMSIZE 53
+#define SM_CXMENUSIZE 54
+#define SM_CYMENUSIZE 55
+#define SM_ARRANGE 56
+#define SM_CXMINIMIZED 57
+#define SM_CYMINIMIZED 58
+#define SM_CXMAXTRACK 59
+#define SM_CYMAXTRACK 60
+#define SM_CXMAXIMIZED 61
+#define SM_CYMAXIMIZED 62
+#define SM_NETWORK 63
+#define SM_CLEANBOOT 67
+#define SM_CXDRAG 68
+#define SM_CYDRAG 69
+#endif /* WINVER >= 0x0400 */
+#define SM_SHOWSOUNDS 70
+#if(WINVER >= 0x0400)
+#define SM_CXMENUCHECK 71 /* Use instead of GetMenuCheckMarkDimensions()! */
+#define SM_CYMENUCHECK 72
+#define SM_SLOWMACHINE 73
+#define SM_MIDEASTENABLED 74
+#endif /* WINVER >= 0x0400 */
+#if(_WIN32_WINNT >= 0x0400)
+#define SM_MOUSEWHEELPRESENT 75
+#endif /* _WIN32_WINNT >= 0x0400 */
+#if (_WIN32_WINNT < 0x0400)
+#define SM_CMETRICS 75
+#else
+#define SM_CMETRICS 76
+#endif
+
+
+
+WINUSERAPI
+int
+WINAPI
+GetSystemMetrics(
+ int nIndex);
+
+#endif /* !NOSYSMETRICS */
+
+#ifndef NOMENUS
+
+WINUSERAPI
+HMENU
+WINAPI
+LoadMenuA(
+ HINSTANCE hInstance,
+ LPCSTR lpMenuName);
+WINUSERAPI
+HMENU
+WINAPI
+LoadMenuW(
+ HINSTANCE hInstance,
+ LPCWSTR lpMenuName);
+#ifdef UNICODE
+#define LoadMenu LoadMenuW
+#else
+#define LoadMenu LoadMenuA
+#endif // !UNICODE
+
+WINUSERAPI
+HMENU
+WINAPI
+LoadMenuIndirectA(
+ CONST MENUTEMPLATEA *lpMenuTemplate);
+WINUSERAPI
+HMENU
+WINAPI
+LoadMenuIndirectW(
+ CONST MENUTEMPLATEW *lpMenuTemplate);
+#ifdef UNICODE
+#define LoadMenuIndirect LoadMenuIndirectW
+#else
+#define LoadMenuIndirect LoadMenuIndirectA
+#endif // !UNICODE
+
+WINUSERAPI
+HMENU
+WINAPI
+GetMenu(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetMenu(
+ HWND hWnd,
+ HMENU hMenu);
+
+WINUSERAPI
+BOOL
+WINAPI
+ChangeMenuA(
+ HMENU hMenu,
+ UINT cmd,
+ LPCSTR lpszNewItem,
+ UINT cmdInsert,
+ UINT flags);
+WINUSERAPI
+BOOL
+WINAPI
+ChangeMenuW(
+ HMENU hMenu,
+ UINT cmd,
+ LPCWSTR lpszNewItem,
+ UINT cmdInsert,
+ UINT flags);
+#ifdef UNICODE
+#define ChangeMenu ChangeMenuW
+#else
+#define ChangeMenu ChangeMenuA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+HiliteMenuItem(
+ HWND hWnd,
+ HMENU hMenu,
+ UINT uIDHiliteItem,
+ UINT uHilite);
+
+WINUSERAPI
+int
+WINAPI
+GetMenuStringA(
+ HMENU hMenu,
+ UINT uIDItem,
+ LPSTR lpString,
+ int nMaxCount,
+ UINT uFlag);
+WINUSERAPI
+int
+WINAPI
+GetMenuStringW(
+ HMENU hMenu,
+ UINT uIDItem,
+ LPWSTR lpString,
+ int nMaxCount,
+ UINT uFlag);
+#ifdef UNICODE
+#define GetMenuString GetMenuStringW
+#else
+#define GetMenuString GetMenuStringA
+#endif // !UNICODE
+
+WINUSERAPI
+UINT
+WINAPI
+GetMenuState(
+ HMENU hMenu,
+ UINT uId,
+ UINT uFlags);
+
+WINUSERAPI
+BOOL
+WINAPI
+DrawMenuBar(
+ HWND hWnd);
+
+
+WINUSERAPI
+HMENU
+WINAPI
+GetSystemMenu(
+ HWND hWnd,
+ BOOL bRevert);
+
+
+
+WINUSERAPI
+HMENU
+WINAPI
+CreateMenu(
+ VOID);
+
+WINUSERAPI
+HMENU
+WINAPI
+CreatePopupMenu(
+ VOID);
+
+WINUSERAPI
+BOOL
+WINAPI
+DestroyMenu(
+ HMENU hMenu);
+
+WINUSERAPI
+DWORD
+WINAPI
+CheckMenuItem(
+ HMENU hMenu,
+ UINT uIDCheckItem,
+ UINT uCheck);
+
+WINUSERAPI
+BOOL
+WINAPI
+EnableMenuItem(
+ HMENU hMenu,
+ UINT uIDEnableItem,
+ UINT uEnable);
+
+WINUSERAPI
+HMENU
+WINAPI
+GetSubMenu(
+ HMENU hMenu,
+ int nPos);
+
+WINUSERAPI
+UINT
+WINAPI
+GetMenuItemID(
+ HMENU hMenu,
+ int nPos);
+
+WINUSERAPI
+int
+WINAPI
+GetMenuItemCount(
+ HMENU hMenu);
+
+WINUSERAPI
+BOOL
+WINAPI
+InsertMenuA(
+ HMENU hMenu,
+ UINT uPosition,
+ UINT uFlags,
+ UINT uIDNewItem,
+ LPCSTR lpNewItem
+ );
+WINUSERAPI
+BOOL
+WINAPI
+InsertMenuW(
+ HMENU hMenu,
+ UINT uPosition,
+ UINT uFlags,
+ UINT uIDNewItem,
+ LPCWSTR lpNewItem
+ );
+#ifdef UNICODE
+#define InsertMenu InsertMenuW
+#else
+#define InsertMenu InsertMenuA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+AppendMenuA(
+ HMENU hMenu,
+ UINT uFlags,
+ UINT uIDNewItem,
+ LPCSTR lpNewItem
+ );
+WINUSERAPI
+BOOL
+WINAPI
+AppendMenuW(
+ HMENU hMenu,
+ UINT uFlags,
+ UINT uIDNewItem,
+ LPCWSTR lpNewItem
+ );
+#ifdef UNICODE
+#define AppendMenu AppendMenuW
+#else
+#define AppendMenu AppendMenuA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+ModifyMenuA(
+ HMENU hMnu,
+ UINT uPosition,
+ UINT uFlags,
+ UINT uIDNewItem,
+ LPCSTR lpNewItem
+ );
+WINUSERAPI
+BOOL
+WINAPI
+ModifyMenuW(
+ HMENU hMnu,
+ UINT uPosition,
+ UINT uFlags,
+ UINT uIDNewItem,
+ LPCWSTR lpNewItem
+ );
+#ifdef UNICODE
+#define ModifyMenu ModifyMenuW
+#else
+#define ModifyMenu ModifyMenuA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI RemoveMenu(
+ HMENU hMenu,
+ UINT uPosition,
+ UINT uFlags);
+
+WINUSERAPI
+BOOL
+WINAPI
+DeleteMenu(
+ HMENU hMenu,
+ UINT uPosition,
+ UINT uFlags);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetMenuItemBitmaps(
+ HMENU hMenu,
+ UINT uPosition,
+ UINT uFlags,
+ HBITMAP hBitmapUnchecked,
+ HBITMAP hBitmapChecked);
+
+WINUSERAPI
+LONG
+WINAPI
+GetMenuCheckMarkDimensions(
+ VOID);
+
+WINUSERAPI
+BOOL
+WINAPI
+TrackPopupMenu(
+ HMENU hMenu,
+ UINT uFlags,
+ int x,
+ int y,
+ int nReserved,
+ HWND hWnd,
+ CONST RECT *prcRect);
+
+#if(WINVER >= 0x0400)
+/* return codes for WM_MENUCHAR */
+#define MNC_IGNORE 0
+#define MNC_CLOSE 1
+#define MNC_EXECUTE 2
+#define MNC_SELECT 3
+
+typedef struct tagTPMPARAMS
+{
+ UINT cbSize; /* Size of structure */
+ RECT rcExclude; /* Screen coordinates of rectangle to exclude when positioning */
+} TPMPARAMS;
+typedef TPMPARAMS FAR *LPTPMPARAMS;
+
+WINUSERAPI BOOL WINAPI TrackPopupMenuEx(HMENU, UINT, int, int, HWND, LPTPMPARAMS);
+#endif /* WINVER >= 0x0400 */
+
+
+#if(WINVER >= 0x0400)
+#define MIIM_STATE 0x00000001
+#define MIIM_ID 0x00000002
+#define MIIM_SUBMENU 0x00000004
+#define MIIM_CHECKMARKS 0x00000008
+#define MIIM_TYPE 0x00000010
+#define MIIM_DATA 0x00000020
+#endif /* WINVER >= 0x0400 */
+
+
+#if(WINVER >= 0x0400)
+typedef struct tagMENUITEMINFOA
+{
+ UINT cbSize;
+ UINT fMask;
+ UINT fType; // used if MIIM_TYPE
+ UINT fState; // used if MIIM_STATE
+ UINT wID; // used if MIIM_ID
+ HMENU hSubMenu; // used if MIIM_SUBMENU
+ HBITMAP hbmpChecked; // used if MIIM_CHECKMARKS
+ HBITMAP hbmpUnchecked; // used if MIIM_CHECKMARKS
+ DWORD dwItemData; // used if MIIM_DATA
+ LPSTR dwTypeData; // used if MIIM_TYPE
+ UINT cch; // used if MIIM_TYPE
+} MENUITEMINFOA, FAR *LPMENUITEMINFOA;
+typedef struct tagMENUITEMINFOW
+{
+ UINT cbSize;
+ UINT fMask;
+ UINT fType; // used if MIIM_TYPE
+ UINT fState; // used if MIIM_STATE
+ UINT wID; // used if MIIM_ID
+ HMENU hSubMenu; // used if MIIM_SUBMENU
+ HBITMAP hbmpChecked; // used if MIIM_CHECKMARKS
+ HBITMAP hbmpUnchecked; // used if MIIM_CHECKMARKS
+ DWORD dwItemData; // used if MIIM_DATA
+ LPWSTR dwTypeData; // used if MIIM_TYPE
+ UINT cch; // used if MIIM_TYPE
+} MENUITEMINFOW, FAR *LPMENUITEMINFOW;
+#ifdef UNICODE
+typedef MENUITEMINFOW MENUITEMINFO;
+typedef LPMENUITEMINFOW LPMENUITEMINFO;
+#else
+typedef MENUITEMINFOA MENUITEMINFO;
+typedef LPMENUITEMINFOA LPMENUITEMINFO;
+#endif // UNICODE
+typedef MENUITEMINFOA CONST FAR *LPCMENUITEMINFOA;
+typedef MENUITEMINFOW CONST FAR *LPCMENUITEMINFOW;
+#ifdef UNICODE
+typedef LPCMENUITEMINFOW LPCMENUITEMINFO;
+#else
+typedef LPCMENUITEMINFOA LPCMENUITEMINFO;
+#endif // UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+InsertMenuItemA(
+ HMENU,
+ UINT,
+ BOOL,
+ LPCMENUITEMINFOA
+ );
+WINUSERAPI
+BOOL
+WINAPI
+InsertMenuItemW(
+ HMENU,
+ UINT,
+ BOOL,
+ LPCMENUITEMINFOW
+ );
+#ifdef UNICODE
+#define InsertMenuItem InsertMenuItemW
+#else
+#define InsertMenuItem InsertMenuItemA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+GetMenuItemInfoA(
+ HMENU,
+ UINT,
+ BOOL,
+ LPMENUITEMINFOA
+ );
+WINUSERAPI
+BOOL
+WINAPI
+GetMenuItemInfoW(
+ HMENU,
+ UINT,
+ BOOL,
+ LPMENUITEMINFOW
+ );
+#ifdef UNICODE
+#define GetMenuItemInfo GetMenuItemInfoW
+#else
+#define GetMenuItemInfo GetMenuItemInfoA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+SetMenuItemInfoA(
+ HMENU,
+ UINT,
+ BOOL,
+ LPCMENUITEMINFOA
+ );
+WINUSERAPI
+BOOL
+WINAPI
+SetMenuItemInfoW(
+ HMENU,
+ UINT,
+ BOOL,
+ LPCMENUITEMINFOW
+ );
+#ifdef UNICODE
+#define SetMenuItemInfo SetMenuItemInfoW
+#else
+#define SetMenuItemInfo SetMenuItemInfoA
+#endif // !UNICODE
+
+
+#define GMDI_USEDISABLED 0x0001L
+#define GMDI_GOINTOPOPUPS 0x0002L
+
+WINUSERAPI UINT WINAPI GetMenuDefaultItem(HMENU hMenu, UINT fByPos, UINT gmdiFlags);
+WINUSERAPI BOOL WINAPI SetMenuDefaultItem(HMENU hMenu, UINT uItem, UINT fByPos);
+
+WINUSERAPI BOOL WINAPI GetMenuItemRect(HWND hWnd, HMENU hMenu, UINT uItem, LPRECT lprcItem);
+WINUSERAPI int WINAPI MenuItemFromPoint(HWND hWnd, HMENU hMenu, POINT ptScreen);
+#endif /* WINVER >= 0x0400 */
+
+/*
+ * Flags for TrackPopupMenu
+ */
+#define TPM_LEFTBUTTON 0x0000L
+#define TPM_RIGHTBUTTON 0x0002L
+#define TPM_LEFTALIGN 0x0000L
+#define TPM_CENTERALIGN 0x0004L
+#define TPM_RIGHTALIGN 0x0008L
+#if(WINVER >= 0x0400)
+#define TPM_TOPALIGN 0x0000L
+#define TPM_VCENTERALIGN 0x0010L
+#define TPM_BOTTOMALIGN 0x0020L
+
+#define TPM_HORIZONTAL 0x0000L /* Horz alignment matters more */
+#define TPM_VERTICAL 0x0040L /* Vert alignment matters more */
+#define TPM_NONOTIFY 0x0080L /* Don't send any notification msgs */
+#define TPM_RETURNCMD 0x0100L
+#endif /* WINVER >= 0x0400 */
+
+
+#endif /* !NOMENUS */
+
+
+#if(WINVER >= 0x0400)
+//
+// Drag-and-drop support
+//
+
+typedef struct tagDROPSTRUCT
+{
+ HWND hwndSource;
+ HWND hwndSink;
+ DWORD wFmt;
+ DWORD dwData;
+ POINT ptDrop;
+ DWORD dwControlData;
+} DROPSTRUCT, *PDROPSTRUCT, *LPDROPSTRUCT;
+
+#define DOF_EXECUTABLE 0x8001
+#define DOF_DOCUMENT 0x8002
+#define DOF_DIRECTORY 0x8003
+#define DOF_MULTIPLE 0x8004
+#define DOF_PROGMAN 0x0001
+#define DOF_SHELLDATA 0x0002
+
+#define DO_DROPFILE 0x454C4946L
+#define DO_PRINTFILE 0x544E5250L
+
+WINUSERAPI
+DWORD
+WINAPI
+DragObject(HWND, HWND, UINT, DWORD, HCURSOR);
+
+WINUSERAPI
+BOOL
+WINAPI
+DragDetect(HWND, POINT);
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+BOOL
+WINAPI
+DrawIcon(
+ HDC hDC,
+ int X,
+ int Y,
+ HICON hIcon);
+
+#ifndef NODRAWTEXT
+
+/*
+ * DrawText() Format Flags
+ */
+#define DT_TOP 0x00000000
+#define DT_LEFT 0x00000000
+#define DT_CENTER 0x00000001
+#define DT_RIGHT 0x00000002
+#define DT_VCENTER 0x00000004
+#define DT_BOTTOM 0x00000008
+#define DT_WORDBREAK 0x00000010
+#define DT_SINGLELINE 0x00000020
+#define DT_EXPANDTABS 0x00000040
+#define DT_TABSTOP 0x00000080
+#define DT_NOCLIP 0x00000100
+#define DT_EXTERNALLEADING 0x00000200
+#define DT_CALCRECT 0x00000400
+#define DT_NOPREFIX 0x00000800
+#define DT_INTERNAL 0x00001000
+
+#if(WINVER >= 0x0400)
+#define DT_EDITCONTROL 0x00002000
+#define DT_PATH_ELLIPSIS 0x00004000
+#define DT_END_ELLIPSIS 0x00008000
+#define DT_MODIFYSTRING 0x00010000
+#define DT_RTLREADING 0x00020000
+#define DT_WORD_ELLIPSIS 0x00040000
+
+
+
+typedef struct tagDRAWTEXTPARAMS
+{
+ UINT cbSize;
+ int iTabLength;
+ int iLeftMargin;
+ int iRightMargin;
+ UINT uiLengthDrawn;
+} DRAWTEXTPARAMS, FAR *LPDRAWTEXTPARAMS;
+#endif /* WINVER >= 0x0400 */
+
+
+
+
+
+WINUSERAPI
+int
+WINAPI
+DrawTextA(
+ HDC hDC,
+ LPCSTR lpString,
+ int nCount,
+ LPRECT lpRect,
+ UINT uFormat);
+WINUSERAPI
+int
+WINAPI
+DrawTextW(
+ HDC hDC,
+ LPCWSTR lpString,
+ int nCount,
+ LPRECT lpRect,
+ UINT uFormat);
+#ifdef UNICODE
+#define DrawText DrawTextW
+#else
+#define DrawText DrawTextA
+#endif // !UNICODE
+
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+int
+WINAPI
+DrawTextExA(HDC, LPSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);
+WINUSERAPI
+int
+WINAPI
+DrawTextExW(HDC, LPWSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);
+#ifdef UNICODE
+#define DrawTextEx DrawTextExW
+#else
+#define DrawTextEx DrawTextExA
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+
+#endif /* !NODRAWTEXT */
+
+WINUSERAPI
+BOOL
+WINAPI
+GrayStringA(
+ HDC hDC,
+ HBRUSH hBrush,
+ GRAYSTRINGPROC lpOutputFunc,
+ LPARAM lpData,
+ int nCount,
+ int X,
+ int Y,
+ int nWidth,
+ int nHeight);
+WINUSERAPI
+BOOL
+WINAPI
+GrayStringW(
+ HDC hDC,
+ HBRUSH hBrush,
+ GRAYSTRINGPROC lpOutputFunc,
+ LPARAM lpData,
+ int nCount,
+ int X,
+ int Y,
+ int nWidth,
+ int nHeight);
+#ifdef UNICODE
+#define GrayString GrayStringW
+#else
+#define GrayString GrayStringA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+/* Monolithic state-drawing routine */
+/* Image type */
+#define DST_COMPLEX 0x0000
+#define DST_TEXT 0x0001
+#define DST_PREFIXTEXT 0x0002
+#define DST_ICON 0x0003
+#define DST_BITMAP 0x0004
+
+/* State type */
+#define DSS_NORMAL 0x0000
+#define DSS_UNION 0x0010 /* Gray string appearance */
+#define DSS_DISABLED 0x0020
+#define DSS_MONO 0x0080
+#define DSS_RIGHT 0x8000
+
+WINUSERAPI BOOL WINAPI DrawStateA(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT);
+WINUSERAPI BOOL WINAPI DrawStateW(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT);
+#ifdef UNICODE
+#define DrawState DrawStateW
+#else
+#define DrawState DrawStateA
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+
+
+WINUSERAPI
+LONG
+WINAPI
+TabbedTextOutA(
+ HDC hDC,
+ int X,
+ int Y,
+ LPCSTR lpString,
+ int nCount,
+ int nTabPositions,
+ LPINT lpnTabStopPositions,
+ int nTabOrigin);
+WINUSERAPI
+LONG
+WINAPI
+TabbedTextOutW(
+ HDC hDC,
+ int X,
+ int Y,
+ LPCWSTR lpString,
+ int nCount,
+ int nTabPositions,
+ LPINT lpnTabStopPositions,
+ int nTabOrigin);
+#ifdef UNICODE
+#define TabbedTextOut TabbedTextOutW
+#else
+#define TabbedTextOut TabbedTextOutA
+#endif // !UNICODE
+
+WINUSERAPI
+DWORD
+WINAPI
+GetTabbedTextExtentA(
+ HDC hDC,
+ LPCSTR lpString,
+ int nCount,
+ int nTabPositions,
+ LPINT lpnTabStopPositions);
+WINUSERAPI
+DWORD
+WINAPI
+GetTabbedTextExtentW(
+ HDC hDC,
+ LPCWSTR lpString,
+ int nCount,
+ int nTabPositions,
+ LPINT lpnTabStopPositions);
+#ifdef UNICODE
+#define GetTabbedTextExtent GetTabbedTextExtentW
+#else
+#define GetTabbedTextExtent GetTabbedTextExtentA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+UpdateWindow(
+ HWND hWnd);
+
+WINUSERAPI
+HWND
+WINAPI
+SetActiveWindow(
+ HWND hWnd);
+
+WINUSERAPI
+HWND
+WINAPI
+GetForegroundWindow(
+ VOID);
+
+#if(WINVER >= 0x0400)
+WINUSERAPI BOOL WINAPI PaintDesktop(HDC hdc);
+
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+BOOL
+WINAPI
+SetForegroundWindow(
+ HWND hWnd);
+
+WINUSERAPI
+HWND
+WINAPI
+WindowFromDC(
+ HDC hDC);
+
+WINUSERAPI
+HDC
+WINAPI
+GetDC(
+ HWND hWnd);
+
+WINUSERAPI
+HDC
+WINAPI
+GetDCEx(
+ HWND hWnd ,
+ HRGN hrgnClip,
+ DWORD flags);
+
+/*
+ * GetDCEx() flags
+ */
+#define DCX_WINDOW 0x00000001L
+#define DCX_CACHE 0x00000002L
+#define DCX_NORESETATTRS 0x00000004L
+#define DCX_CLIPCHILDREN 0x00000008L
+#define DCX_CLIPSIBLINGS 0x00000010L
+#define DCX_PARENTCLIP 0x00000020L
+
+#define DCX_EXCLUDERGN 0x00000040L
+#define DCX_INTERSECTRGN 0x00000080L
+
+#define DCX_EXCLUDEUPDATE 0x00000100L
+#define DCX_INTERSECTUPDATE 0x00000200L
+
+#define DCX_LOCKWINDOWUPDATE 0x00000400L
+
+#define DCX_VALIDATE 0x00200000L
+
+
+
+
+WINUSERAPI
+HDC
+WINAPI
+GetWindowDC(
+ HWND hWnd);
+
+WINUSERAPI
+int
+WINAPI
+ReleaseDC(
+ HWND hWnd,
+ HDC hDC);
+
+WINUSERAPI
+HDC
+WINAPI
+BeginPaint(
+ HWND hWnd,
+ LPPAINTSTRUCT lpPaint);
+
+WINUSERAPI
+BOOL
+WINAPI
+EndPaint(
+ HWND hWnd,
+ CONST PAINTSTRUCT *lpPaint);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetUpdateRect(
+ HWND hWnd,
+ LPRECT lpRect,
+ BOOL bErase);
+
+WINUSERAPI
+int
+WINAPI
+GetUpdateRgn(
+ HWND hWnd,
+ HRGN hRgn,
+ BOOL bErase);
+
+WINUSERAPI
+int
+WINAPI
+SetWindowRgn(
+ HWND hWnd,
+ HRGN hRgn,
+ BOOL bRedraw);
+
+WINUSERAPI
+int
+WINAPI
+GetWindowRgn(
+ HWND hWnd,
+ HRGN hRgn);
+
+WINUSERAPI
+int
+WINAPI
+ExcludeUpdateRgn(
+ HDC hDC,
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+InvalidateRect(
+ HWND hWnd ,
+ CONST RECT *lpRect,
+ BOOL bErase);
+
+WINUSERAPI
+BOOL
+WINAPI
+ValidateRect(
+ HWND hWnd ,
+ CONST RECT *lpRect);
+
+WINUSERAPI
+BOOL
+WINAPI
+InvalidateRgn(
+ HWND hWnd,
+ HRGN hRgn,
+ BOOL bErase);
+
+WINUSERAPI
+BOOL
+WINAPI
+ValidateRgn(
+ HWND hWnd,
+ HRGN hRgn);
+
+
+WINUSERAPI
+BOOL
+WINAPI
+RedrawWindow(
+ HWND hWnd,
+ CONST RECT *lprcUpdate,
+ HRGN hrgnUpdate,
+ UINT flags);
+
+/*
+ * RedrawWindow() flags
+ */
+#define RDW_INVALIDATE 0x0001
+#define RDW_INTERNALPAINT 0x0002
+#define RDW_ERASE 0x0004
+
+#define RDW_VALIDATE 0x0008
+#define RDW_NOINTERNALPAINT 0x0010
+#define RDW_NOERASE 0x0020
+
+#define RDW_NOCHILDREN 0x0040
+#define RDW_ALLCHILDREN 0x0080
+
+#define RDW_UPDATENOW 0x0100
+#define RDW_ERASENOW 0x0200
+
+#define RDW_FRAME 0x0400
+#define RDW_NOFRAME 0x0800
+
+
+
+/*
+ * LockWindowUpdate API
+ */
+
+WINUSERAPI
+BOOL
+WINAPI
+LockWindowUpdate(
+ HWND hWndLock);
+
+WINUSERAPI
+BOOL
+WINAPI
+ScrollWindow(
+ HWND hWnd,
+ int XAmount,
+ int YAmount,
+ CONST RECT *lpRect,
+ CONST RECT *lpClipRect);
+
+WINUSERAPI
+BOOL
+WINAPI
+ScrollDC(
+ HDC hDC,
+ int dx,
+ int dy,
+ CONST RECT *lprcScroll,
+ CONST RECT *lprcClip ,
+ HRGN hrgnUpdate,
+ LPRECT lprcUpdate);
+
+WINUSERAPI
+int
+WINAPI
+ScrollWindowEx(
+ HWND hWnd,
+ int dx,
+ int dy,
+ CONST RECT *prcScroll,
+ CONST RECT *prcClip ,
+ HRGN hrgnUpdate,
+ LPRECT prcUpdate,
+ UINT flags);
+
+#define SW_SCROLLCHILDREN 0x0001 /* Scroll children within *lprcScroll. */
+#define SW_INVALIDATE 0x0002 /* Invalidate after scrolling */
+#define SW_ERASE 0x0004 /* If SW_INVALIDATE, don't send WM_ERASEBACKGROUND */
+
+
+
+#ifndef NOSCROLL
+
+WINUSERAPI
+int
+WINAPI
+SetScrollPos(
+ HWND hWnd,
+ int nBar,
+ int nPos,
+ BOOL bRedraw);
+
+WINUSERAPI
+int
+WINAPI
+GetScrollPos(
+ HWND hWnd,
+ int nBar);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetScrollRange(
+ HWND hWnd,
+ int nBar,
+ int nMinPos,
+ int nMaxPos,
+ BOOL bRedraw);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetScrollRange(
+ HWND hWnd,
+ int nBar,
+ LPINT lpMinPos,
+ LPINT lpMaxPos);
+
+WINUSERAPI
+BOOL
+WINAPI
+ShowScrollBar(
+ HWND hWnd,
+ int wBar,
+ BOOL bShow);
+
+WINUSERAPI
+BOOL
+WINAPI
+EnableScrollBar(
+ HWND hWnd,
+ UINT wSBflags,
+ UINT wArrows);
+
+
+/*
+ * EnableScrollBar() flags
+ */
+#define ESB_ENABLE_BOTH 0x0000
+#define ESB_DISABLE_BOTH 0x0003
+
+#define ESB_DISABLE_LEFT 0x0001
+#define ESB_DISABLE_RIGHT 0x0002
+
+#define ESB_DISABLE_UP 0x0001
+#define ESB_DISABLE_DOWN 0x0002
+
+#define ESB_DISABLE_LTUP ESB_DISABLE_LEFT
+#define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT
+
+
+#endif /* !NOSCROLL */
+
+WINUSERAPI
+BOOL
+WINAPI
+SetPropA(
+ HWND hWnd,
+ LPCSTR lpString,
+ HANDLE hData);
+WINUSERAPI
+BOOL
+WINAPI
+SetPropW(
+ HWND hWnd,
+ LPCWSTR lpString,
+ HANDLE hData);
+#ifdef UNICODE
+#define SetProp SetPropW
+#else
+#define SetProp SetPropA
+#endif // !UNICODE
+
+WINUSERAPI
+HANDLE
+WINAPI
+GetPropA(
+ HWND hWnd,
+ LPCSTR lpString);
+WINUSERAPI
+HANDLE
+WINAPI
+GetPropW(
+ HWND hWnd,
+ LPCWSTR lpString);
+#ifdef UNICODE
+#define GetProp GetPropW
+#else
+#define GetProp GetPropA
+#endif // !UNICODE
+
+WINUSERAPI
+HANDLE
+WINAPI
+RemovePropA(
+ HWND hWnd,
+ LPCSTR lpString);
+WINUSERAPI
+HANDLE
+WINAPI
+RemovePropW(
+ HWND hWnd,
+ LPCWSTR lpString);
+#ifdef UNICODE
+#define RemoveProp RemovePropW
+#else
+#define RemoveProp RemovePropA
+#endif // !UNICODE
+
+WINUSERAPI
+int
+WINAPI
+EnumPropsExA(
+ HWND hWnd,
+ PROPENUMPROCEXA lpEnumFunc,
+ LPARAM lParam);
+WINUSERAPI
+int
+WINAPI
+EnumPropsExW(
+ HWND hWnd,
+ PROPENUMPROCEXW lpEnumFunc,
+ LPARAM lParam);
+#ifdef UNICODE
+#define EnumPropsEx EnumPropsExW
+#else
+#define EnumPropsEx EnumPropsExA
+#endif // !UNICODE
+
+WINUSERAPI
+int
+WINAPI
+EnumPropsA(
+ HWND hWnd,
+ PROPENUMPROCA lpEnumFunc);
+WINUSERAPI
+int
+WINAPI
+EnumPropsW(
+ HWND hWnd,
+ PROPENUMPROCW lpEnumFunc);
+#ifdef UNICODE
+#define EnumProps EnumPropsW
+#else
+#define EnumProps EnumPropsA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+SetWindowTextA(
+ HWND hWnd,
+ LPCSTR lpString);
+WINUSERAPI
+BOOL
+WINAPI
+SetWindowTextW(
+ HWND hWnd,
+ LPCWSTR lpString);
+#ifdef UNICODE
+#define SetWindowText SetWindowTextW
+#else
+#define SetWindowText SetWindowTextA
+#endif // !UNICODE
+
+WINUSERAPI
+int
+WINAPI
+GetWindowTextA(
+ HWND hWnd,
+ LPSTR lpString,
+ int nMaxCount);
+WINUSERAPI
+int
+WINAPI
+GetWindowTextW(
+ HWND hWnd,
+ LPWSTR lpString,
+ int nMaxCount);
+#ifdef UNICODE
+#define GetWindowText GetWindowTextW
+#else
+#define GetWindowText GetWindowTextA
+#endif // !UNICODE
+
+WINUSERAPI
+int
+WINAPI
+GetWindowTextLengthA(
+ HWND hWnd);
+WINUSERAPI
+int
+WINAPI
+GetWindowTextLengthW(
+ HWND hWnd);
+#ifdef UNICODE
+#define GetWindowTextLength GetWindowTextLengthW
+#else
+#define GetWindowTextLength GetWindowTextLengthA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+GetClientRect(
+ HWND hWnd,
+ LPRECT lpRect);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetWindowRect(
+ HWND hWnd,
+ LPRECT lpRect);
+
+WINUSERAPI
+BOOL
+WINAPI
+AdjustWindowRect(
+ LPRECT lpRect,
+ DWORD dwStyle,
+ BOOL bMenu);
+
+WINUSERAPI
+BOOL
+WINAPI
+AdjustWindowRectEx(
+ LPRECT lpRect,
+ DWORD dwStyle,
+ BOOL bMenu,
+ DWORD dwExStyle);
+
+#if(WINVER >= 0x0400)
+#define HELPINFO_WINDOW 0x0001
+#define HELPINFO_MENUITEM 0x0002
+typedef struct tagHELPINFO /* Structure pointed to by lParam of WM_HELP */
+{
+ UINT cbSize; /* Size in bytes of this struct */
+ int iContextType; /* Either HELPINFO_WINDOW or HELPINFO_MENUITEM */
+ int iCtrlId; /* Control Id or a Menu item Id. */
+ HANDLE hItemHandle; /* hWnd of control or hMenu. */
+ DWORD dwContextId; /* Context Id associated with this item */
+ POINT MousePos; /* Mouse Position in screen co-ordinates */
+} HELPINFO, FAR *LPHELPINFO;
+
+WINUSERAPI BOOL WINAPI SetWindowContextHelpId(HWND, DWORD);
+WINUSERAPI DWORD WINAPI GetWindowContextHelpId(HWND);
+WINUSERAPI BOOL WINAPI SetMenuContextHelpId(HMENU, DWORD);
+WINUSERAPI DWORD WINAPI GetMenuContextHelpId(HMENU);
+
+#endif /* WINVER >= 0x0400 */
+
+
+
+#ifndef NOMB
+
+/*
+ * MessageBox() Flags
+ */
+#define MB_OK 0x00000000L
+#define MB_OKCANCEL 0x00000001L
+#define MB_ABORTRETRYIGNORE 0x00000002L
+#define MB_YESNOCANCEL 0x00000003L
+#define MB_YESNO 0x00000004L
+#define MB_RETRYCANCEL 0x00000005L
+
+
+#define MB_ICONHAND 0x00000010L
+#define MB_ICONQUESTION 0x00000020L
+#define MB_ICONEXCLAMATION 0x00000030L
+#define MB_ICONASTERISK 0x00000040L
+
+#if(WINVER >= 0x0400)
+#define MB_USERICON 0x00000080L
+#define MB_ICONWARNING MB_ICONEXCLAMATION
+#define MB_ICONERROR MB_ICONHAND
+#endif /* WINVER >= 0x0400 */
+
+#define MB_ICONINFORMATION MB_ICONASTERISK
+#define MB_ICONSTOP MB_ICONHAND
+
+#define MB_DEFBUTTON1 0x00000000L
+#define MB_DEFBUTTON2 0x00000100L
+#define MB_DEFBUTTON3 0x00000200L
+#if(WINVER >= 0x0400)
+#define MB_DEFBUTTON4 0x00000300L
+#endif /* WINVER >= 0x0400 */
+
+#define MB_APPLMODAL 0x00000000L
+#define MB_SYSTEMMODAL 0x00001000L
+#define MB_TASKMODAL 0x00002000L
+#if(WINVER >= 0x0400)
+#define MB_HELP 0x00004000L // Help Button
+#endif /* WINVER >= 0x0400 */
+
+#define MB_NOFOCUS 0x00008000L
+#define MB_SETFOREGROUND 0x00010000L
+#define MB_DEFAULT_DESKTOP_ONLY 0x00020000L
+
+#if(WINVER >= 0x0400)
+#define MB_TOPMOST 0x00040000L
+#define MB_RIGHT 0x00080000L
+#define MB_RTLREADING 0x00100000L
+
+
+#endif /* WINVER >= 0x0400 */
+
+
+#ifdef _WIN32_WINNT
+#if (_WIN32_WINNT >= 0x0400)
+#define MB_SERVICE_NOTIFICATION 0x00200000L
+#else
+#define MB_SERVICE_NOTIFICATION 0x00040000L
+#endif
+#define MB_SERVICE_NOTIFICATION_NT3X 0x00040000L
+#endif
+
+#define MB_TYPEMASK 0x0000000FL
+#define MB_ICONMASK 0x000000F0L
+#define MB_DEFMASK 0x00000F00L
+#define MB_MODEMASK 0x00003000L
+#define MB_MISCMASK 0x0000C000L
+
+WINUSERAPI
+int
+WINAPI
+MessageBoxA(
+ HWND hWnd ,
+ LPCSTR lpText,
+ LPCSTR lpCaption,
+ UINT uType);
+WINUSERAPI
+int
+WINAPI
+MessageBoxW(
+ HWND hWnd ,
+ LPCWSTR lpText,
+ LPCWSTR lpCaption,
+ UINT uType);
+#ifdef UNICODE
+#define MessageBox MessageBoxW
+#else
+#define MessageBox MessageBoxA
+#endif // !UNICODE
+
+WINUSERAPI
+int
+WINAPI
+MessageBoxExA(
+ HWND hWnd ,
+ LPCSTR lpText,
+ LPCSTR lpCaption,
+ UINT uType,
+ WORD wLanguageId);
+WINUSERAPI
+int
+WINAPI
+MessageBoxExW(
+ HWND hWnd ,
+ LPCWSTR lpText,
+ LPCWSTR lpCaption,
+ UINT uType,
+ WORD wLanguageId);
+#ifdef UNICODE
+#define MessageBoxEx MessageBoxExW
+#else
+#define MessageBoxEx MessageBoxExA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+
+typedef void (CALLBACK *MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo);
+
+typedef struct tagMSGBOXPARAMSA
+{
+ UINT cbSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCSTR lpszText;
+ LPCSTR lpszCaption;
+ DWORD dwStyle;
+ LPCSTR lpszIcon;
+ DWORD dwContextHelpId;
+ MSGBOXCALLBACK lpfnMsgBoxCallback;
+ DWORD dwLanguageId;
+} MSGBOXPARAMSA, *PMSGBOXPARAMSA, *LPMSGBOXPARAMSA;
+typedef struct tagMSGBOXPARAMSW
+{
+ UINT cbSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCWSTR lpszText;
+ LPCWSTR lpszCaption;
+ DWORD dwStyle;
+ LPCWSTR lpszIcon;
+ DWORD dwContextHelpId;
+ MSGBOXCALLBACK lpfnMsgBoxCallback;
+ DWORD dwLanguageId;
+} MSGBOXPARAMSW, *PMSGBOXPARAMSW, *LPMSGBOXPARAMSW;
+#ifdef UNICODE
+typedef MSGBOXPARAMSW MSGBOXPARAMS;
+typedef PMSGBOXPARAMSW PMSGBOXPARAMS;
+typedef LPMSGBOXPARAMSW LPMSGBOXPARAMS;
+#else
+typedef MSGBOXPARAMSA MSGBOXPARAMS;
+typedef PMSGBOXPARAMSA PMSGBOXPARAMS;
+typedef LPMSGBOXPARAMSA LPMSGBOXPARAMS;
+#endif // UNICODE
+
+
+WINUSERAPI int WINAPI MessageBoxIndirectA(LPMSGBOXPARAMSA);
+WINUSERAPI int WINAPI MessageBoxIndirectW(LPMSGBOXPARAMSW);
+#ifdef UNICODE
+#define MessageBoxIndirect MessageBoxIndirectW
+#else
+#define MessageBoxIndirect MessageBoxIndirectA
+#endif // !UNICODE
+#endif /* WINVER >= 0x0400 */
+
+
+
+WINUSERAPI
+BOOL
+WINAPI
+MessageBeep(
+ UINT uType);
+
+#endif /* !NOMB */
+
+WINUSERAPI
+int
+WINAPI
+ShowCursor(
+ BOOL bShow);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetCursorPos(
+ int X,
+ int Y);
+
+WINUSERAPI
+HCURSOR
+WINAPI
+SetCursor(
+ HCURSOR hCursor);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetCursorPos(
+ LPPOINT lpPoint);
+
+WINUSERAPI
+BOOL
+WINAPI
+ClipCursor(
+ CONST RECT *lpRect);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetClipCursor(
+ LPRECT lpRect);
+
+WINUSERAPI
+HCURSOR
+WINAPI
+GetCursor(
+ VOID);
+
+WINUSERAPI
+BOOL
+WINAPI
+CreateCaret(
+ HWND hWnd,
+ HBITMAP hBitmap ,
+ int nWidth,
+ int nHeight);
+
+WINUSERAPI
+UINT
+WINAPI
+GetCaretBlinkTime(
+ VOID);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetCaretBlinkTime(
+ UINT uMSeconds);
+
+WINUSERAPI
+BOOL
+WINAPI
+DestroyCaret(
+ VOID);
+
+WINUSERAPI
+BOOL
+WINAPI
+HideCaret(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+ShowCaret(
+ HWND hWnd);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetCaretPos(
+ int X,
+ int Y);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetCaretPos(
+ LPPOINT lpPoint);
+
+WINUSERAPI
+BOOL
+WINAPI
+ClientToScreen(
+ HWND hWnd,
+ LPPOINT lpPoint);
+
+WINUSERAPI
+BOOL
+WINAPI
+ScreenToClient(
+ HWND hWnd,
+ LPPOINT lpPoint);
+
+WINUSERAPI
+int
+WINAPI
+MapWindowPoints(
+ HWND hWndFrom,
+ HWND hWndTo,
+ LPPOINT lpPoints,
+ UINT cPoints);
+
+WINUSERAPI
+HWND
+WINAPI
+WindowFromPoint(
+ POINT Point);
+
+WINUSERAPI
+HWND
+WINAPI
+ChildWindowFromPoint(
+ HWND hWndParent,
+ POINT Point);
+
+#if(WINVER >= 0x0400)
+#define CWP_ALL 0x0000
+#define CWP_SKIPINVISIBLE 0x0001
+#define CWP_SKIPDISABLED 0x0002
+#define CWP_SKIPTRANSPARENT 0x0004
+
+WINUSERAPI HWND WINAPI ChildWindowFromPointEx(HWND, POINT, UINT);
+#endif /* WINVER >= 0x0400 */
+
+#ifndef NOCOLOR
+
+/*
+ * Color Types
+ */
+#define CTLCOLOR_MSGBOX 0
+#define CTLCOLOR_EDIT 1
+#define CTLCOLOR_LISTBOX 2
+#define CTLCOLOR_BTN 3
+#define CTLCOLOR_DLG 4
+#define CTLCOLOR_SCROLLBAR 5
+#define CTLCOLOR_STATIC 6
+#define CTLCOLOR_MAX 7
+
+#define COLOR_SCROLLBAR 0
+#define COLOR_BACKGROUND 1
+#define COLOR_ACTIVECAPTION 2
+#define COLOR_INACTIVECAPTION 3
+#define COLOR_MENU 4
+#define COLOR_WINDOW 5
+#define COLOR_WINDOWFRAME 6
+#define COLOR_MENUTEXT 7
+#define COLOR_WINDOWTEXT 8
+#define COLOR_CAPTIONTEXT 9
+#define COLOR_ACTIVEBORDER 10
+#define COLOR_INACTIVEBORDER 11
+#define COLOR_APPWORKSPACE 12
+#define COLOR_HIGHLIGHT 13
+#define COLOR_HIGHLIGHTTEXT 14
+#define COLOR_BTNFACE 15
+#define COLOR_BTNSHADOW 16
+#define COLOR_GRAYTEXT 17
+#define COLOR_BTNTEXT 18
+#define COLOR_INACTIVECAPTIONTEXT 19
+#define COLOR_BTNHIGHLIGHT 20
+
+#if(WINVER >= 0x0400)
+#define COLOR_3DDKSHADOW 21
+#define COLOR_3DLIGHT 22
+#define COLOR_INFOTEXT 23
+#define COLOR_INFOBK 24
+
+#define COLOR_DESKTOP COLOR_BACKGROUND
+#define COLOR_3DFACE COLOR_BTNFACE
+#define COLOR_3DSHADOW COLOR_BTNSHADOW
+#define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT
+#define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT
+#define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT
+#endif /* WINVER >= 0x0400 */
+
+
+WINUSERAPI
+DWORD
+WINAPI
+GetSysColor(
+ int nIndex);
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+HBRUSH
+WINAPI
+GetSysColorBrush(
+ int nIndex);
+
+
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+BOOL
+WINAPI
+SetSysColors(
+ int cElements,
+ CONST INT * lpaElements,
+ CONST COLORREF * lpaRgbValues);
+
+#endif /* !NOCOLOR */
+
+WINUSERAPI
+BOOL
+WINAPI
+DrawFocusRect(
+ HDC hDC,
+ CONST RECT * lprc);
+
+WINUSERAPI
+int
+WINAPI
+FillRect(
+ HDC hDC,
+ CONST RECT *lprc,
+ HBRUSH hbr);
+
+WINUSERAPI
+int
+WINAPI
+FrameRect(
+ HDC hDC,
+ CONST RECT *lprc,
+ HBRUSH hbr);
+
+WINUSERAPI
+BOOL
+WINAPI
+InvertRect(
+ HDC hDC,
+ CONST RECT *lprc);
+
+WINUSERAPI
+BOOL
+WINAPI
+SetRect(
+ LPRECT lprc,
+ int xLeft,
+ int yTop,
+ int xRight,
+ int yBottom);
+
+WINUSERAPI
+BOOL
+WINAPI
+ SetRectEmpty(
+ LPRECT lprc);
+
+WINUSERAPI
+BOOL
+WINAPI
+CopyRect(
+ LPRECT lprcDst,
+ CONST RECT *lprcSrc);
+
+WINUSERAPI
+BOOL
+WINAPI
+InflateRect(
+ LPRECT lprc,
+ int dx,
+ int dy);
+
+WINUSERAPI
+BOOL
+WINAPI
+IntersectRect(
+ LPRECT lprcDst,
+ CONST RECT *lprcSrc1,
+ CONST RECT *lprcSrc2);
+
+WINUSERAPI
+BOOL
+WINAPI
+UnionRect(
+ LPRECT lprcDst,
+ CONST RECT *lprcSrc1,
+ CONST RECT *lprcSrc2);
+
+WINUSERAPI
+BOOL
+WINAPI
+SubtractRect(
+ LPRECT lprcDst,
+ CONST RECT *lprcSrc1,
+ CONST RECT *lprcSrc2);
+
+WINUSERAPI
+BOOL
+WINAPI
+OffsetRect(
+ LPRECT lprc,
+ int dx,
+ int dy);
+
+WINUSERAPI
+BOOL
+WINAPI
+IsRectEmpty(
+ CONST RECT *lprc);
+
+WINUSERAPI
+BOOL
+WINAPI
+EqualRect(
+ CONST RECT *lprc1,
+ CONST RECT *lprc2);
+
+WINUSERAPI
+BOOL
+WINAPI
+PtInRect(
+ CONST RECT *lprc,
+ POINT pt);
+
+#ifndef NOWINOFFSETS
+
+WINUSERAPI
+WORD
+WINAPI
+GetWindowWord(
+ HWND hWnd,
+ int nIndex);
+
+WINUSERAPI
+WORD
+WINAPI
+SetWindowWord(
+ HWND hWnd,
+ int nIndex,
+ WORD wNewWord);
+
+WINUSERAPI
+LONG
+WINAPI
+GetWindowLongA(
+ HWND hWnd,
+ int nIndex);
+WINUSERAPI
+LONG
+WINAPI
+GetWindowLongW(
+ HWND hWnd,
+ int nIndex);
+#ifdef UNICODE
+#define GetWindowLong GetWindowLongW
+#else
+#define GetWindowLong GetWindowLongA
+#endif // !UNICODE
+
+WINUSERAPI
+LONG
+WINAPI
+SetWindowLongA(
+ HWND hWnd,
+ int nIndex,
+ LONG dwNewLong);
+WINUSERAPI
+LONG
+WINAPI
+SetWindowLongW(
+ HWND hWnd,
+ int nIndex,
+ LONG dwNewLong);
+#ifdef UNICODE
+#define SetWindowLong SetWindowLongW
+#else
+#define SetWindowLong SetWindowLongA
+#endif // !UNICODE
+
+WINUSERAPI
+WORD
+WINAPI
+GetClassWord(
+ HWND hWnd,
+ int nIndex);
+
+WINUSERAPI
+WORD
+WINAPI
+SetClassWord(
+ HWND hWnd,
+ int nIndex,
+ WORD wNewWord);
+
+WINUSERAPI
+DWORD
+WINAPI
+GetClassLongA(
+ HWND hWnd,
+ int nIndex);
+WINUSERAPI
+DWORD
+WINAPI
+GetClassLongW(
+ HWND hWnd,
+ int nIndex);
+#ifdef UNICODE
+#define GetClassLong GetClassLongW
+#else
+#define GetClassLong GetClassLongA
+#endif // !UNICODE
+
+WINUSERAPI
+DWORD
+WINAPI
+SetClassLongA(
+ HWND hWnd,
+ int nIndex,
+ LONG dwNewLong);
+WINUSERAPI
+DWORD
+WINAPI
+SetClassLongW(
+ HWND hWnd,
+ int nIndex,
+ LONG dwNewLong);
+#ifdef UNICODE
+#define SetClassLong SetClassLongW
+#else
+#define SetClassLong SetClassLongA
+#endif // !UNICODE
+
+#endif /* !NOWINOFFSETS */
+
+WINUSERAPI
+HWND
+WINAPI
+GetDesktopWindow(
+ VOID);
+
+
+WINUSERAPI
+HWND
+WINAPI
+GetParent(
+ HWND hWnd);
+
+WINUSERAPI
+HWND
+WINAPI
+SetParent(
+ HWND hWndChild,
+ HWND hWndNewParent);
+
+WINUSERAPI
+BOOL
+WINAPI
+EnumChildWindows(
+ HWND hWndParent,
+ WNDENUMPROC lpEnumFunc,
+ LPARAM lParam);
+
+WINUSERAPI
+HWND
+WINAPI
+FindWindowA(
+ LPCSTR lpClassName ,
+ LPCSTR lpWindowName);
+WINUSERAPI
+HWND
+WINAPI
+FindWindowW(
+ LPCWSTR lpClassName ,
+ LPCWSTR lpWindowName);
+#ifdef UNICODE
+#define FindWindow FindWindowW
+#else
+#define FindWindow FindWindowA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+WINUSERAPI HWND WINAPI FindWindowExA(HWND, HWND, LPCSTR, LPCSTR);
+WINUSERAPI HWND WINAPI FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR);
+#ifdef UNICODE
+#define FindWindowEx FindWindowExW
+#else
+#define FindWindowEx FindWindowExA
+#endif // !UNICODE
+
+#endif /* WINVER >= 0x0400 */
+
+
+WINUSERAPI
+BOOL
+WINAPI
+EnumWindows(
+ WNDENUMPROC lpEnumFunc,
+ LPARAM lParam);
+
+WINUSERAPI
+BOOL
+WINAPI
+EnumThreadWindows(
+ DWORD dwThreadId,
+ WNDENUMPROC lpfn,
+ LPARAM lParam);
+
+#define EnumTaskWindows(hTask, lpfn, lParam) EnumThreadWindows((DWORD)hTask, lpfn, lParam)
+
+WINUSERAPI
+int
+WINAPI
+GetClassNameA(
+ HWND hWnd,
+ LPSTR lpClassName,
+ int nMaxCount);
+WINUSERAPI
+int
+WINAPI
+GetClassNameW(
+ HWND hWnd,
+ LPWSTR lpClassName,
+ int nMaxCount);
+#ifdef UNICODE
+#define GetClassName GetClassNameW
+#else
+#define GetClassName GetClassNameA
+#endif // !UNICODE
+
+WINUSERAPI
+HWND
+WINAPI
+GetTopWindow(
+ HWND hWnd);
+
+#define GetNextWindow(hWnd, wCmd) GetWindow(hWnd, wCmd)
+#define GetSysModalWindow() (NULL)
+#define SetSysModalWindow(hWnd) (NULL)
+
+WINUSERAPI
+DWORD
+WINAPI
+GetWindowThreadProcessId(
+ HWND hWnd,
+ LPDWORD lpdwProcessId);
+
+#define GetWindowTask(hWnd) \
+ ((HANDLE)GetWindowThreadProcessId(hWnd, NULL))
+
+WINUSERAPI
+HWND
+WINAPI
+GetLastActivePopup(
+ HWND hWnd);
+
+/*
+ * GetWindow() Constants
+ */
+#define GW_HWNDFIRST 0
+#define GW_HWNDLAST 1
+#define GW_HWNDNEXT 2
+#define GW_HWNDPREV 3
+#define GW_OWNER 4
+#define GW_CHILD 5
+#define GW_MAX 5
+
+WINUSERAPI
+HWND
+WINAPI
+GetWindow(
+ HWND hWnd,
+ UINT uCmd);
+
+
+
+#ifndef NOWH
+
+#ifdef STRICT
+
+WINUSERAPI
+HHOOK
+WINAPI
+SetWindowsHookA(
+ int nFilterType,
+ HOOKPROC pfnFilterProc);
+WINUSERAPI
+HHOOK
+WINAPI
+SetWindowsHookW(
+ int nFilterType,
+ HOOKPROC pfnFilterProc);
+#ifdef UNICODE
+#define SetWindowsHook SetWindowsHookW
+#else
+#define SetWindowsHook SetWindowsHookA
+#endif // !UNICODE
+
+#else /* !STRICT */
+
+WINUSERAPI
+HOOKPROC
+WINAPI
+SetWindowsHookA(
+ int nFilterType,
+ HOOKPROC pfnFilterProc);
+WINUSERAPI
+HOOKPROC
+WINAPI
+SetWindowsHookW(
+ int nFilterType,
+ HOOKPROC pfnFilterProc);
+#ifdef UNICODE
+#define SetWindowsHook SetWindowsHookW
+#else
+#define SetWindowsHook SetWindowsHookA
+#endif // !UNICODE
+
+#endif /* !STRICT */
+
+WINUSERAPI
+BOOL
+WINAPI
+UnhookWindowsHook(
+ int nCode,
+ HOOKPROC pfnFilterProc);
+
+WINUSERAPI
+HHOOK
+WINAPI
+SetWindowsHookExA(
+ int idHook,
+ HOOKPROC lpfn,
+ HINSTANCE hmod,
+ DWORD dwThreadId);
+WINUSERAPI
+HHOOK
+WINAPI
+SetWindowsHookExW(
+ int idHook,
+ HOOKPROC lpfn,
+ HINSTANCE hmod,
+ DWORD dwThreadId);
+#ifdef UNICODE
+#define SetWindowsHookEx SetWindowsHookExW
+#else
+#define SetWindowsHookEx SetWindowsHookExA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+UnhookWindowsHookEx(
+ HHOOK hhk);
+
+WINUSERAPI
+LRESULT
+WINAPI
+CallNextHookEx(
+ HHOOK hhk,
+ int nCode,
+ WPARAM wParam,
+ LPARAM lParam);
+
+/*
+ * Macros for source-level compatibility with old functions.
+ */
+#ifdef STRICT
+#define DefHookProc(nCode, wParam, lParam, phhk)\
+ CallNextHookEx(*phhk, nCode, wParam, lParam)
+#else
+#define DefHookProc(nCode, wParam, lParam, phhk)\
+ CallNextHookEx((HHOOK)*phhk, nCode, wParam, lParam)
+#endif /* STRICT */
+
+#endif /* !NOWH */
+
+#ifndef NOMENUS
+
+// begin_r_winuser
+
+/* ;win40 -- A lot of MF_* flags have been renamed as MFT_* and MFS_* flags */
+/*
+ * Menu flags for Add/Check/EnableMenuItem()
+ */
+#define MF_INSERT 0x00000000L
+#define MF_CHANGE 0x00000080L
+#define MF_APPEND 0x00000100L
+#define MF_DELETE 0x00000200L
+#define MF_REMOVE 0x00001000L
+
+#define MF_BYCOMMAND 0x00000000L
+#define MF_BYPOSITION 0x00000400L
+
+#define MF_SEPARATOR 0x00000800L
+
+#define MF_ENABLED 0x00000000L
+#define MF_GRAYED 0x00000001L
+#define MF_DISABLED 0x00000002L
+
+#define MF_UNCHECKED 0x00000000L
+#define MF_CHECKED 0x00000008L
+#define MF_USECHECKBITMAPS 0x00000200L
+
+#define MF_STRING 0x00000000L
+#define MF_BITMAP 0x00000004L
+#define MF_OWNERDRAW 0x00000100L
+
+#define MF_POPUP 0x00000010L
+#define MF_MENUBARBREAK 0x00000020L
+#define MF_MENUBREAK 0x00000040L
+
+#define MF_UNHILITE 0x00000000L
+#define MF_HILITE 0x00000080L
+
+#if(WINVER >= 0x0400)
+#define MF_DEFAULT 0x00001000L
+#endif /* WINVER >= 0x0400 */
+#define MF_SYSMENU 0x00002000L
+#define MF_HELP 0x00004000L
+#if(WINVER >= 0x0400)
+#define MF_RIGHTJUSTIFY 0x00004000L
+#endif /* WINVER >= 0x0400 */
+
+#define MF_MOUSESELECT 0x00008000L
+#if(WINVER >= 0x0400)
+#define MF_END 0x00000080L /* Obsolete -- only used by old RES files */
+#endif /* WINVER >= 0x0400 */
+
+
+#if(WINVER >= 0x0400)
+#define MFT_STRING MF_STRING
+#define MFT_BITMAP MF_BITMAP
+#define MFT_MENUBARBREAK MF_MENUBARBREAK
+#define MFT_MENUBREAK MF_MENUBREAK
+#define MFT_OWNERDRAW MF_OWNERDRAW
+#define MFT_RADIOCHECK 0x00000200L
+#define MFT_SEPARATOR MF_SEPARATOR
+#define MFT_RIGHTORDER 0x00002000L
+#define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY
+
+/* Menu flags for Add/Check/EnableMenuItem() */
+#define MFS_GRAYED 0x00000003L
+#define MFS_DISABLED MFS_GRAYED
+#define MFS_CHECKED MF_CHECKED
+#define MFS_HILITE MF_HILITE
+#define MFS_ENABLED MF_ENABLED
+#define MFS_UNCHECKED MF_UNCHECKED
+#define MFS_UNHILITE MF_UNHILITE
+#define MFS_DEFAULT MF_DEFAULT
+
+
+
+#endif /* WINVER >= 0x0400 */
+
+// end_r_winuser
+
+#if(WINVER >= 0x0400)
+
+WINUSERAPI
+BOOL
+WINAPI
+CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT);
+#endif /* WINVER >= 0x0400 */
+
+
+
+/*
+ * Menu item resource format
+ */
+typedef struct {
+ WORD versionNumber;
+ WORD offset;
+} MENUITEMTEMPLATEHEADER, *PMENUITEMTEMPLATEHEADER;
+
+typedef struct { // version 0
+ WORD mtOption;
+ WORD mtID;
+ WCHAR mtString[1];
+} MENUITEMTEMPLATE, *PMENUITEMTEMPLATE;
+#define MF_END 0x00000080L // r_winuser
+
+#endif /* !NOMENUS */
+
+#ifndef NOSYSCOMMANDS
+
+// begin_r_winuser
+/*
+ * System Menu Command Values
+ */
+#define SC_SIZE 0xF000
+#define SC_MOVE 0xF010
+#define SC_MINIMIZE 0xF020
+#define SC_MAXIMIZE 0xF030
+#define SC_NEXTWINDOW 0xF040
+#define SC_PREVWINDOW 0xF050
+#define SC_CLOSE 0xF060
+#define SC_VSCROLL 0xF070
+#define SC_HSCROLL 0xF080
+#define SC_MOUSEMENU 0xF090
+#define SC_KEYMENU 0xF100
+#define SC_ARRANGE 0xF110
+#define SC_RESTORE 0xF120
+#define SC_TASKLIST 0xF130
+#define SC_SCREENSAVE 0xF140
+#define SC_HOTKEY 0xF150
+#if(WINVER >= 0x0400)
+#define SC_DEFAULT 0xF160
+#define SC_MONITORPOWER 0xF170
+#define SC_CONTEXTHELP 0xF180
+#define SC_SEPARATOR 0xF00F
+#endif /* WINVER >= 0x0400 */
+/*
+ * Obsolete names
+ */
+#define SC_ICON SC_MINIMIZE
+#define SC_ZOOM SC_MAXIMIZE
+
+// end_r_winuser
+#endif /* !NOSYSCOMMANDS */
+
+/*
+ * Resource Loading Routines
+ */
+
+WINUSERAPI
+HBITMAP
+WINAPI
+LoadBitmapA(
+ HINSTANCE hInstance,
+ LPCSTR lpBitmapName);
+WINUSERAPI
+HBITMAP
+WINAPI
+LoadBitmapW(
+ HINSTANCE hInstance,
+ LPCWSTR lpBitmapName);
+#ifdef UNICODE
+#define LoadBitmap LoadBitmapW
+#else
+#define LoadBitmap LoadBitmapA
+#endif // !UNICODE
+
+WINUSERAPI
+HCURSOR
+WINAPI
+LoadCursorA(
+ HINSTANCE hInstance,
+ LPCSTR lpCursorName);
+WINUSERAPI
+HCURSOR
+WINAPI
+LoadCursorW(
+ HINSTANCE hInstance,
+ LPCWSTR lpCursorName);
+#ifdef UNICODE
+#define LoadCursor LoadCursorW
+#else
+#define LoadCursor LoadCursorA
+#endif // !UNICODE
+
+WINUSERAPI
+HCURSOR
+WINAPI
+LoadCursorFromFileA(
+ LPCSTR lpFileName);
+WINUSERAPI
+HCURSOR
+WINAPI
+LoadCursorFromFileW(
+ LPCWSTR lpFileName);
+#ifdef UNICODE
+#define LoadCursorFromFile LoadCursorFromFileW
+#else
+#define LoadCursorFromFile LoadCursorFromFileA
+#endif // !UNICODE
+
+WINUSERAPI
+HCURSOR
+WINAPI
+CreateCursor(
+ HINSTANCE hInst,
+ int xHotSpot,
+ int yHotSpot,
+ int nWidth,
+ int nHeight,
+ CONST VOID *pvANDPlane,
+ CONST VOID *pvXORPlane);
+
+WINUSERAPI
+BOOL
+WINAPI
+DestroyCursor(
+ HCURSOR hCursor);
+
+#define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur)))
+
+/*
+ * Standard Cursor IDs
+ */
+#define IDC_ARROW MAKEINTRESOURCE(32512)
+#define IDC_IBEAM MAKEINTRESOURCE(32513)
+#define IDC_WAIT MAKEINTRESOURCE(32514)
+#define IDC_CROSS MAKEINTRESOURCE(32515)
+#define IDC_UPARROW MAKEINTRESOURCE(32516)
+#define IDC_SIZE MAKEINTRESOURCE(32640) /* OBSOLETE: use IDC_SIZEALL */
+#define IDC_ICON MAKEINTRESOURCE(32641) /* OBSOLETE: use IDC_ARROW */
+#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
+#define IDC_SIZENESW MAKEINTRESOURCE(32643)
+#define IDC_SIZEWE MAKEINTRESOURCE(32644)
+#define IDC_SIZENS MAKEINTRESOURCE(32645)
+#define IDC_SIZEALL MAKEINTRESOURCE(32646)
+#define IDC_NO MAKEINTRESOURCE(32648) /*not in win3.1 */
+#define IDC_APPSTARTING MAKEINTRESOURCE(32650) /*not in win3.1 */
+#if(WINVER >= 0x0400)
+#define IDC_HELP MAKEINTRESOURCE(32651)
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+BOOL
+WINAPI
+SetSystemCursor(
+ HCURSOR hcur,
+ DWORD id);
+
+typedef struct _ICONINFO {
+ BOOL fIcon;
+ DWORD xHotspot;
+ DWORD yHotspot;
+ HBITMAP hbmMask;
+ HBITMAP hbmColor;
+} ICONINFO;
+typedef ICONINFO *PICONINFO;
+
+WINUSERAPI
+HICON
+WINAPI
+LoadIconA(
+ HINSTANCE hInstance,
+ LPCSTR lpIconName);
+WINUSERAPI
+HICON
+WINAPI
+LoadIconW(
+ HINSTANCE hInstance,
+ LPCWSTR lpIconName);
+#ifdef UNICODE
+#define LoadIcon LoadIconW
+#else
+#define LoadIcon LoadIconA
+#endif // !UNICODE
+
+
+WINUSERAPI
+HICON
+WINAPI
+CreateIcon(
+ HINSTANCE hInstance,
+ int nWidth,
+ int nHeight,
+ BYTE cPlanes,
+ BYTE cBitsPixel,
+ CONST BYTE *lpbANDbits,
+ CONST BYTE *lpbXORbits);
+
+WINUSERAPI
+BOOL
+WINAPI
+DestroyIcon(
+ HICON hIcon);
+
+WINUSERAPI
+int
+WINAPI
+LookupIconIdFromDirectory(
+ PBYTE presbits,
+ BOOL fIcon);
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+int
+WINAPI
+LookupIconIdFromDirectoryEx(
+ PBYTE presbits,
+ BOOL fIcon,
+ int cxDesired,
+ int cyDesired,
+ UINT Flags);
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+HICON
+WINAPI
+CreateIconFromResource(
+ PBYTE presbits,
+ DWORD dwResSize,
+ BOOL fIcon,
+ DWORD dwVer);
+
+#if(WINVER >= 0x0400)
+WINUSERAPI
+HICON
+WINAPI
+CreateIconFromResourceEx(
+ PBYTE presbits,
+ DWORD dwResSize,
+ BOOL fIcon,
+ DWORD dwVer,
+ int cxDesired,
+ int cyDesired,
+ UINT Flags);
+
+/* Icon/Cursor header */
+typedef struct tagCURSORSHAPE
+{
+ int xHotSpot;
+ int yHotSpot;
+ int cx;
+ int cy;
+ int cbWidth;
+ BYTE Planes;
+ BYTE BitsPixel;
+} CURSORSHAPE, FAR *LPCURSORSHAPE;
+#endif /* WINVER >= 0x0400 */
+
+#define IMAGE_BITMAP 0
+#define IMAGE_ICON 1
+#define IMAGE_CURSOR 2
+#if(WINVER >= 0x0400)
+#define IMAGE_ENHMETAFILE 3
+
+#define LR_DEFAULTCOLOR 0x0000
+#define LR_MONOCHROME 0x0001
+#define LR_COLOR 0x0002
+#define LR_COPYRETURNORG 0x0004
+#define LR_COPYDELETEORG 0x0008
+#define LR_LOADFROMFILE 0x0010
+#define LR_LOADTRANSPARENT 0x0020
+#define LR_DEFAULTSIZE 0x0040
+#define LR_VGACOLOR 0x0080
+#define LR_LOADMAP3DCOLORS 0x1000
+#define LR_CREATEDIBSECTION 0x2000
+#define LR_COPYFROMRESOURCE 0x4000
+#define LR_SHARED 0x8000
+
+WINUSERAPI
+HANDLE
+WINAPI
+LoadImageA(
+ HINSTANCE,
+ LPCSTR,
+ UINT,
+ int,
+ int,
+ UINT);
+WINUSERAPI
+HANDLE
+WINAPI
+LoadImageW(
+ HINSTANCE,
+ LPCWSTR,
+ UINT,
+ int,
+ int,
+ UINT);
+#ifdef UNICODE
+#define LoadImage LoadImageW
+#else
+#define LoadImage LoadImageA
+#endif // !UNICODE
+
+WINUSERAPI
+HANDLE
+WINAPI
+CopyImage(
+ HANDLE,
+ UINT,
+ int,
+ int,
+ UINT);
+
+#define DI_MASK 0x0001
+#define DI_IMAGE 0x0002
+#define DI_NORMAL 0x0003
+#define DI_COMPAT 0x0004
+#define DI_DEFAULTSIZE 0x0008
+
+
+WINUSERAPI BOOL WINAPI DrawIconEx(HDC hdc, int xLeft, int yTop,
+ HICON hIcon, int cxWidth, int cyWidth,
+ UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags);
+#endif /* WINVER >= 0x0400 */
+
+WINUSERAPI
+HICON
+WINAPI
+CreateIconIndirect(
+ PICONINFO piconinfo);
+
+WINUSERAPI
+HICON
+WINAPI
+CopyIcon(
+ HICON hIcon);
+
+WINUSERAPI
+BOOL
+WINAPI
+GetIconInfo(
+ HICON hIcon,
+ PICONINFO piconinfo);
+
+#if(WINVER >= 0x0400)
+#define RES_ICON 1
+#define RES_CURSOR 2
+#endif /* WINVER >= 0x0400 */
+
+#ifdef OEMRESOURCE
+
+// begin_r_winuser
+
+/*
+ * OEM Resource Ordinal Numbers
+ */
+#define OBM_CLOSE 32754
+#define OBM_UPARROW 32753
+#define OBM_DNARROW 32752
+#define OBM_RGARROW 32751
+#define OBM_LFARROW 32750
+#define OBM_REDUCE 32749
+#define OBM_ZOOM 32748
+#define OBM_RESTORE 32747
+#define OBM_REDUCED 32746
+#define OBM_ZOOMD 32745
+#define OBM_RESTORED 32744
+#define OBM_UPARROWD 32743
+#define OBM_DNARROWD 32742
+#define OBM_RGARROWD 32741
+#define OBM_LFARROWD 32740
+#define OBM_MNARROW 32739
+#define OBM_COMBO 32738
+#define OBM_UPARROWI 32737
+#define OBM_DNARROWI 32736
+#define OBM_RGARROWI 32735
+#define OBM_LFARROWI 32734
+
+#define OBM_OLD_CLOSE 32767
+#define OBM_SIZE 32766
+#define OBM_OLD_UPARROW 32765
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_LFARROW 32762
+#define OBM_BTSIZE 32761
+#define OBM_CHECK 32760
+#define OBM_CHECKBOXES 32759
+#define OBM_BTNCORNERS 32758
+#define OBM_OLD_REDUCE 32757
+#define OBM_OLD_ZOOM 32756
+#define OBM_OLD_RESTORE 32755
+
+#define OCR_NORMAL 32512
+#define OCR_IBEAM 32513
+#define OCR_WAIT 32514
+#define OCR_CROSS 32515
+#define OCR_UP 32516
+#define OCR_SIZE 32640 /* OBSOLETE: use OCR_SIZEALL */
+#define OCR_ICON 32641 /* OBSOLETE: use OCR_NORMAL */
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_ICOCUR 32647 /* OBSOLETE: use OIC_WINLOGO */
+#define OCR_NO 32648
+#if(WINVER >= 0x0400)
+#define OCR_APPSTARTING 32650
+#endif /* WINVER >= 0x0400 */
+
+
+
+#define OIC_SAMPLE 32512
+#define OIC_HAND 32513
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_NOTE 32516
+#if(WINVER >= 0x0400)
+#define OIC_WINLOGO 32517
+#define OIC_WARNING OIC_BANG
+#define OIC_ERROR OIC_HAND
+#define OIC_INFORMATION OIC_NOTE
+#endif /* WINVER >= 0x0400 */
+
+
+// end_r_winuser
+
+#endif /* OEMRESOURCE */
+
+#define ORD_LANGDRIVER 1 /* The ordinal number for the entry point of
+ ** language drivers.
+ */
+
+#ifndef NOICONS
+
+// begin_r_winuser
+/*
+ * Standard Icon IDs
+ */
+#ifdef RC_INVOKED
+#define IDI_APPLICATION 32512
+#define IDI_HAND 32513
+#define IDI_QUESTION 32514
+#define IDI_EXCLAMATION 32515
+#define IDI_ASTERISK 32516
+#if(WINVER >= 0x0400)
+#define IDI_WINLOGO 32517
+#endif /* WINVER >= 0x0400 */
+#else
+#define IDI_APPLICATION MAKEINTRESOURCE(32512)
+#define IDI_HAND MAKEINTRESOURCE(32513)
+#define IDI_QUESTION MAKEINTRESOURCE(32514)
+#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
+#define IDI_ASTERISK MAKEINTRESOURCE(32516)
+#if(WINVER >= 0x0400)
+#define IDI_WINLOGO MAKEINTRESOURCE(32517)
+#endif /* WINVER >= 0x0400 */
+#endif /* RC_INVOKED */
+
+#if(WINVER >= 0x0400)
+#define IDI_WARNING IDI_EXCLAMATION
+#define IDI_ERROR IDI_HAND
+#define IDI_INFORMATION IDI_ASTERISK
+#endif /* WINVER >= 0x0400 */
+
+// end_r_winuser
+
+#endif /* !NOICONS */
+
+WINUSERAPI
+int
+WINAPI
+LoadStringA(
+ HINSTANCE hInstance,
+ UINT uID,
+ LPSTR lpBuffer,
+ int nBufferMax);
+WINUSERAPI
+int
+WINAPI
+LoadStringW(
+ HINSTANCE hInstance,
+ UINT uID,
+ LPWSTR lpBuffer,
+ int nBufferMax);
+#ifdef UNICODE
+#define LoadString LoadStringW
+#else
+#define LoadString LoadStringA
+#endif // !UNICODE
+
+// begin_r_winuser
+
+/*
+ * Dialog Box Command IDs
+ */
+#define IDOK 1
+#define IDCANCEL 2
+#define IDABORT 3
+#define IDRETRY 4
+#define IDIGNORE 5
+#define IDYES 6
+#define IDNO 7
+#if(WINVER >= 0x0400)
+#define IDCLOSE 8
+#define IDHELP 9
+#endif /* WINVER >= 0x0400 */
+
+// end_r_winuser
+
+#ifndef NOCTLMGR
+
+/*
+ * Control Manager Structures and Definitions
+ */
+
+#ifndef NOWINSTYLES
+
+// begin_r_winuser
+
+/*
+ * Edit Control Styles
+ */
+#define ES_LEFT 0x0000L
+#define ES_CENTER 0x0001L
+#define ES_RIGHT 0x0002L
+#define ES_MULTILINE 0x0004L
+#define ES_UPPERCASE 0x0008L
+#define ES_LOWERCASE 0x0010L
+#define ES_PASSWORD 0x0020L
+#define ES_AUTOVSCROLL 0x0040L
+#define ES_AUTOHSCROLL 0x0080L
+#define ES_NOHIDESEL 0x0100L
+#define ES_OEMCONVERT 0x0400L
+#define ES_READONLY 0x0800L
+#define ES_WANTRETURN 0x1000L
+#if(WINVER >= 0x0400)
+#define ES_NUMBER 0x2000L
+#endif /* WINVER >= 0x0400 */
+
+// end_r_winuser
+
+#endif /* !NOWINSTYLES */
+
+/*
+ * Edit Control Notification Codes
+ */
+#define EN_SETFOCUS 0x0100
+#define EN_KILLFOCUS 0x0200
+#define EN_CHANGE 0x0300
+#define EN_UPDATE 0x0400
+#define EN_ERRSPACE 0x0500
+#define EN_MAXTEXT 0x0501
+#define EN_HSCROLL 0x0601
+#define EN_VSCROLL 0x0602
+
+#if(WINVER >= 0x0400)
+/* Edit control EM_SETMARGIN parameters */
+#define EC_LEFTMARGIN 0x0001
+#define EC_RIGHTMARGIN 0x0002
+#define EC_USEFONTINFO 0xffff
+#endif /* WINVER >= 0x0400 */
+
+#ifndef NOWINMESSAGES
+
+// begin_r_winuser
+
+/*
+ * Edit Control Messages
+ */
+#define EM_GETSEL 0x00B0
+#define EM_SETSEL 0x00B1
+#define EM_GETRECT 0x00B2
+#define EM_SETRECT 0x00B3
+#define EM_SETRECTNP 0x00B4
+#define EM_SCROLL 0x00B5
+#define EM_LINESCROLL 0x00B6
+#define EM_SCROLLCARET 0x00B7
+#define EM_GETMODIFY 0x00B8
+#define EM_SETMODIFY 0x00B9
+#define EM_GETLINECOUNT 0x00BA
+#define EM_LINEINDEX 0x00BB
+#define EM_SETHANDLE 0x00BC
+#define EM_GETHANDLE 0x00BD
+#define EM_GETTHUMB 0x00BE
+#define EM_LINELENGTH 0x00C1
+#define EM_REPLACESEL 0x00C2
+#define EM_GETLINE 0x00C4
+#define EM_LIMITTEXT 0x00C5
+#define EM_CANUNDO 0x00C6
+#define EM_UNDO 0x00C7
+#define EM_FMTLINES 0x00C8
+#define EM_LINEFROMCHAR 0x00C9
+#define EM_SETTABSTOPS 0x00CB
+#define EM_SETPASSWORDCHAR 0x00CC
+#define EM_EMPTYUNDOBUFFER 0x00CD
+#define EM_GETFIRSTVISIBLELINE 0x00CE
+#define EM_SETREADONLY 0x00CF
+#define EM_SETWORDBREAKPROC 0x00D0
+#define EM_GETWORDBREAKPROC 0x00D1
+#define EM_GETPASSWORDCHAR 0x00D2
+#if(WINVER >= 0x0400)
+#define EM_SETMARGINS 0x00D3
+#define EM_GETMARGINS 0x00D4
+#define EM_SETLIMITTEXT EM_LIMITTEXT /* ;win40 Name change */
+#define EM_GETLIMITTEXT 0x00D5
+#define EM_POSFROMCHAR 0x00D6
+#define EM_CHARFROMPOS 0x00D7
+#endif /* WINVER >= 0x0400 */
+
+
+// end_r_winuser
+#endif /* !NOWINMESSAGES */
+
+/*
+ * EDITWORDBREAKPROC code values
+ */
+#define WB_LEFT 0
+#define WB_RIGHT 1
+#define WB_ISDELIMITER 2
+
+// begin_r_winuser
+
+/*
+ * Button Control Styles
+ */
+#define BS_PUSHBUTTON 0x00000000L
+#define BS_DEFPUSHBUTTON 0x00000001L
+#define BS_CHECKBOX 0x00000002L
+#define BS_AUTOCHECKBOX 0x00000003L
+#define BS_RADIOBUTTON 0x00000004L
+#define BS_3STATE 0x00000005L
+#define BS_AUTO3STATE 0x00000006L
+#define BS_GROUPBOX 0x00000007L
+#define BS_USERBUTTON 0x00000008L
+#define BS_AUTORADIOBUTTON 0x00000009L
+#define BS_OWNERDRAW 0x0000000BL
+#define BS_LEFTTEXT 0x00000020L
+#if(WINVER >= 0x0400)
+#define BS_TEXT 0x00000000L
+#define BS_ICON 0x00000040L
+#define BS_BITMAP 0x00000080L
+#define BS_LEFT 0x00000100L
+#define BS_RIGHT 0x00000200L
+#define BS_CENTER 0x00000300L
+#define BS_TOP 0x00000400L
+#define BS_BOTTOM 0x00000800L
+#define BS_VCENTER 0x00000C00L
+#define BS_PUSHLIKE 0x00001000L
+#define BS_MULTILINE 0x00002000L
+#define BS_NOTIFY 0x00004000L
+#define BS_FLAT 0x00008000L
+#define BS_RIGHTBUTTON BS_LEFTTEXT
+#endif /* WINVER >= 0x0400 */
+
+
+/*
+ * User Button Notification Codes
+ */
+#define BN_CLICKED 0
+#define BN_PAINT 1
+#define BN_HILITE 2
+#define BN_UNHILITE 3
+#define BN_DISABLE 4
+#define BN_DOUBLECLICKED 5
+#if(WINVER >= 0x0400)
+#define BN_PUSHED BN_HILITE
+#define BN_UNPUSHED BN_UNHILITE
+#define BN_DBLCLK BN_DOUBLECLICKED
+#define BN_SETFOCUS 6
+#define BN_KILLFOCUS 7
+#endif /* WINVER >= 0x0400 */
+
+/*
+ * Button Control Messages
+ */
+#define BM_GETCHECK 0x00F0
+#define BM_SETCHECK 0x00F1
+#define BM_GETSTATE 0x00F2
+#define BM_SETSTATE 0x00F3
+#define BM_SETSTYLE 0x00F4
+#if(WINVER >= 0x0400)
+#define BM_CLICK 0x00F5
+#define BM_GETIMAGE 0x00F6
+#define BM_SETIMAGE 0x00F7
+
+#define BST_UNCHECKED 0x0000
+#define BST_CHECKED 0x0001
+#define BST_INDETERMINATE 0x0002
+#define BST_PUSHED 0x0004
+#define BST_FOCUS 0x0008
+#endif /* WINVER >= 0x0400 */
+
+/*
+ * Static Control Constants
+ */
+#define SS_LEFT 0x00000000L
+#define SS_CENTER 0x00000001L
+#define SS_RIGHT 0x00000002L
+#define SS_ICON 0x00000003L
+#define SS_BLACKRECT 0x00000004L
+#define SS_GRAYRECT 0x00000005L
+#define SS_WHITERECT 0x00000006L
+#define SS_BLACKFRAME 0x00000007L
+#define SS_GRAYFRAME 0x00000008L
+#define SS_WHITEFRAME 0x00000009L
+#define SS_USERITEM 0x0000000AL
+#define SS_SIMPLE 0x0000000BL
+#define SS_LEFTNOWORDWRAP 0x0000000CL
+#if(WINVER >= 0x0400)
+#define SS_OWNERDRAW 0x0000000DL
+#define SS_BITMAP 0x0000000EL
+#define SS_ENHMETAFILE 0x0000000FL
+#define SS_ETCHEDHORZ 0x00000010L
+#define SS_ETCHEDVERT 0x00000011L
+#define SS_ETCHEDFRAME 0x00000012L
+#define SS_TYPEMASK 0x0000001FL
+#endif /* WINVER >= 0x0400 */
+#define SS_NOPREFIX 0x00000080L /* Don't do "&" character translation */
+#if(WINVER >= 0x0400)
+#define SS_NOTIFY 0x00000100L
+#define SS_CENTERIMAGE 0x00000200L
+#define SS_RIGHTJUST 0x00000400L
+#define SS_REALSIZEIMAGE 0x00000800L
+#define SS_SUNKEN 0x00001000L
+#define SS_ENDELLIPSIS 0x00004000L
+#define SS_PATHELLIPSIS 0x00008000L
+#define SS_WORDELLIPSIS 0x0000C000L
+#define SS_ELLIPSISMASK 0x0000C000L
+#endif /* WINVER >= 0x0400 */
+
+// end_r_winuser
+
+#ifndef NOWINMESSAGES
+/*
+ * Static Control Mesages
+ */
+#define STM_SETICON 0x0170
+#define STM_GETICON 0x0171
+#if(WINVER >= 0x0400)
+#define STM_SETIMAGE 0x0172
+#define STM_GETIMAGE 0x0173
+#define STN_CLICKED 0
+#define STN_DBLCLK 1
+#define STN_ENABLE 2
+#define STN_DISABLE 3
+#endif /* WINVER >= 0x0400 */
+#define STM_MSGMAX 0x0174
+#endif /* !NOWINMESSAGES */
+
+/*
+ * Dialog window class
+ */
+#define WC_DIALOG (MAKEINTATOM(0x8002))
+
+/*
+ * Get/SetWindowWord/Long offsets for use with WC_DIALOG windows
+ */
+#define DWL_MSGRESULT 0
+#define DWL_DLGPROC 4
+#define DWL_USER 8
+
+/*
+ * Dialog Manager Routines
+ */
+
+#ifndef NOMSG
+
+WINUSERAPI
+BOOL
+WINAPI
+IsDialogMessageA(
+ HWND hDlg,
+ LPMSG lpMsg);
+WINUSERAPI
+BOOL
+WINAPI
+IsDialogMessageW(
+ HWND hDlg,
+ LPMSG lpMsg);
+#ifdef UNICODE
+#define IsDialogMessage IsDialogMessageW
+#else
+#define IsDialogMessage IsDialogMessageA
+#endif // !UNICODE
+
+#endif /* !NOMSG */
+
+WINUSERAPI
+BOOL
+WINAPI
+MapDialogRect(
+ HWND hDlg,
+ LPRECT lpRect);
+
+WINUSERAPI
+int
+WINAPI
+DlgDirListA(
+ HWND hDlg,
+ LPSTR lpPathSpec,
+ int nIDListBox,
+ int nIDStaticPath,
+ UINT uFileType);
+WINUSERAPI
+int
+WINAPI
+DlgDirListW(
+ HWND hDlg,
+ LPWSTR lpPathSpec,
+ int nIDListBox,
+ int nIDStaticPath,
+ UINT uFileType);
+#ifdef UNICODE
+#define DlgDirList DlgDirListW
+#else
+#define DlgDirList DlgDirListA
+#endif // !UNICODE
+
+/*
+ * DlgDirList, DlgDirListComboBox flags values
+ */
+#define DDL_READWRITE 0x0000
+#define DDL_READONLY 0x0001
+#define DDL_HIDDEN 0x0002
+#define DDL_SYSTEM 0x0004
+#define DDL_DIRECTORY 0x0010
+#define DDL_ARCHIVE 0x0020
+
+#define DDL_POSTMSGS 0x2000
+#define DDL_DRIVES 0x4000
+#define DDL_EXCLUSIVE 0x8000
+
+WINUSERAPI
+BOOL
+WINAPI
+DlgDirSelectExA(
+ HWND hDlg,
+ LPSTR lpString,
+ int nCount,
+ int nIDListBox);
+WINUSERAPI
+BOOL
+WINAPI
+DlgDirSelectExW(
+ HWND hDlg,
+ LPWSTR lpString,
+ int nCount,
+ int nIDListBox);
+#ifdef UNICODE
+#define DlgDirSelectEx DlgDirSelectExW
+#else
+#define DlgDirSelectEx DlgDirSelectExA
+#endif // !UNICODE
+
+WINUSERAPI
+int
+WINAPI
+DlgDirListComboBoxA(
+ HWND hDlg,
+ LPSTR lpPathSpec,
+ int nIDComboBox,
+ int nIDStaticPath,
+ UINT uFiletype);
+WINUSERAPI
+int
+WINAPI
+DlgDirListComboBoxW(
+ HWND hDlg,
+ LPWSTR lpPathSpec,
+ int nIDComboBox,
+ int nIDStaticPath,
+ UINT uFiletype);
+#ifdef UNICODE
+#define DlgDirListComboBox DlgDirListComboBoxW
+#else
+#define DlgDirListComboBox DlgDirListComboBoxA
+#endif // !UNICODE
+
+WINUSERAPI
+BOOL
+WINAPI
+DlgDirSelectComboBoxExA(
+ HWND hDlg,
+ LPSTR lpString,
+ int nCount,
+ int nIDComboBox);
+WINUSERAPI
+BOOL
+WINAPI
+DlgDirSelectComboBoxExW(
+ HWND hDlg,
+ LPWSTR lpString,
+ int nCount,
+ int nIDComboBox);
+#ifdef UNICODE
+#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExW
+#else
+#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExA
+#endif // !UNICODE
+
+
+// begin_r_winuser
+
+/*
+ * Dialog Styles
+ */
+#define DS_ABSALIGN 0x01L
+#define DS_SYSMODAL 0x02L
+#define DS_LOCALEDIT 0x20L /* Edit items get Local storage. */
+#define DS_SETFONT 0x40L /* User specified font for Dlg controls */
+#define DS_MODALFRAME 0x80L /* Can be combined with WS_CAPTION */
+#define DS_NOIDLEMSG 0x100L /* WM_ENTERIDLE message will not be sent */
+#define DS_SETFOREGROUND 0x200L /* not in win3.1 */
+
+
+
+#if(WINVER >= 0x0400)
+#define DS_3DLOOK 0x0004L
+#define DS_FIXEDSYS 0x0008L
+#define DS_NOFAILCREATE 0x0010L
+#define DS_CONTROL 0x0400L
+#define DS_CENTER 0x0800L
+#define DS_CENTERMOUSE 0x1000L
+#define DS_CONTEXTHELP 0x2000L
+
+
+#endif /* WINVER >= 0x0400 */
+
+// end_r_winuser
+
+#define DM_GETDEFID (WM_USER+0)
+#define DM_SETDEFID (WM_USER+1)
+
+#if(WINVER >= 0x0400)
+#define DM_REPOSITION (WM_USER+2)
+
+#define PSM_PAGEINFO (WM_USER+100)
+#define PSM_SHEETINFO (WM_USER+101)
+
+#define PSI_SETACTIVE 0x0001L
+#define PSI_KILLACTIVE 0x0002L
+#define PSI_APPLY 0x0003L
+#define PSI_RESET 0x0004L
+#define PSI_HASHELP 0x0005L
+#define PSI_HELP 0x0006L
+
+#define PSI_CHANGED 0x0001L
+#define PSI_GUISTART 0x0002L
+#define PSI_REBOOT 0x0003L
+#define PSI_GETSIBLINGS 0x0004L
+#endif /* WINVER >= 0x0400 */
+/*
+ * Returned in HIWORD() of DM_GETDEFID result if msg is supported
+ */
+#define DC_HASDEFID 0x534B
+
+/*
+ * Dialog Codes
+ */
+#define DLGC_WANTARROWS 0x0001 /* Control wants arrow keys */
+#define DLGC_WANTTAB 0x0002 /* Control wants tab keys */
+#define DLGC_WANTALLKEYS 0x0004 /* Control wants all keys */
+#define DLGC_WANTMESSAGE 0x0004 /* Pass message to control */
+#define DLGC_HASSETSEL 0x0008 /* Understands EM_SETSEL message */
+#define DLGC_DEFPUSHBUTTON 0x0010 /* Default pushbutton */
+#define DLGC_UNDEFPUSHBUTTON 0x0020 /* Non-default pushbutton */
+#define DLGC_RADIOBUTTON 0x0040 /* Radio button */
+#define DLGC_WANTCHARS 0x0080 /* Want WM_CHAR messages */
+#define DLGC_STATIC 0x0100 /* Static item: don't include */
+#define DLGC_BUTTON 0x2000 /* Button item: can be checked */
+
+#define LB_CTLCODE 0L
+
+/*
+ * Listbox Return Values
+ */
+#define LB_OKAY 0
+#define LB_ERR (-1)
+#define LB_ERRSPACE (-2)
+
+/*
+** The idStaticPath parameter to DlgDirList can have the following values
+** ORed if the list box should show other details of the files along with
+** the name of the files;
+*/
+ /* all other details also will be returned */
+
+
+/*
+ * Listbox Notification Codes
+ */
+#define LBN_ERRSPACE (-2)
+#define LBN_SELCHANGE 1
+#define LBN_DBLCLK 2
+#define LBN_SELCANCEL 3
+#define LBN_SETFOCUS 4
+#define LBN_KILLFOCUS 5
+
+
+
+#ifndef NOWINMESSAGES
+
+/*
+ * Listbox messages
+ */
+#define LB_ADDSTRING 0x0180
+#define LB_INSERTSTRING 0x0181
+#define LB_DELETESTRING 0x0182
+#define LB_SELITEMRANGEEX 0x0183
+#define LB_RESETCONTENT 0x0184
+#define LB_SETSEL 0x0185
+#define LB_SETCURSEL 0x0186
+#define LB_GETSEL 0x0187
+#define LB_GETCURSEL 0x0188
+#define LB_GETTEXT 0x0189
+#define LB_GETTEXTLEN 0x018A
+#define LB_GETCOUNT 0x018B
+#define LB_SELECTSTRING 0x018C
+#define LB_DIR 0x018D
+#define LB_GETTOPINDEX 0x018E
+#define LB_FINDSTRING 0x018F
+#define LB_GETSELCOUNT 0x0190
+#define LB_GETSELITEMS 0x0191
+#define LB_SETTABSTOPS 0x0192
+#define LB_GETHORIZONTALEXTENT 0x0193
+#define LB_SETHORIZONTALEXTENT 0x0194
+#define LB_SETCOLUMNWIDTH 0x0195
+#define LB_ADDFILE 0x0196
+#define LB_SETTOPINDEX 0x0197
+#define LB_GETITEMRECT 0x0198
+#define LB_GETITEMDATA 0x0199
+#define LB_SETITEMDATA 0x019A
+#define LB_SELITEMRANGE 0x019B
+#define LB_SETANCHORINDEX 0x019C
+#define LB_GETANCHORINDEX 0x019D
+#define LB_SETCARETINDEX 0x019E
+#define LB_GETCARETINDEX 0x019F
+#define LB_SETITEMHEIGHT 0x01A0
+#define LB_GETITEMHEIGHT 0x01A1
+#define LB_FINDSTRINGEXACT 0x01A2
+#define LB_SETLOCALE 0x01A5
+#define LB_GETLOCALE 0x01A6
+#define LB_SETCOUNT 0x01A7
+#if(WINVER >= 0x0400)
+#define LB_INITSTORAGE 0x01A8
+#define LB_ITEMFROMPOINT 0x01A9
+#endif /* WINVER >= 0x0400 */
+#if(WINVER >= 0x0400)
+#define LB_MSGMAX 0x01B0
+#else
+#define LB_MSGMAX 0x01A8
+#endif
+
+#endif /* !NOWINMESSAGES */
+
+#ifndef NOWINSTYLES
+
+// begin_r_winuser
+
+/*
+ * Listbox Styles
+ */
+#define LBS_NOTIFY 0x0001L
+#define LBS_SORT 0x0002L
+#define LBS_NOREDRAW 0x0004L
+#define LBS_MULTIPLESEL 0x0008L
+#define LBS_OWNERDRAWFIXED 0x0010L
+#define LBS_OWNERDRAWVARIABLE 0x0020L
+#define LBS_HASSTRINGS 0x0040L
+#define LBS_USETABSTOPS 0x0080L
+#define LBS_NOINTEGRALHEIGHT 0x0100L
+#define LBS_MULTICOLUMN 0x0200L
+#define LBS_WANTKEYBOARDINPUT 0x0400L
+#define LBS_EXTENDEDSEL 0x0800L
+#define LBS_DISABLENOSCROLL 0x1000L
+#define LBS_NODATA 0x2000L
+#if(WINVER >= 0x0400)
+#define LBS_NOSEL 0x4000L
+#endif /* WINVER >= 0x0400 */
+#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
+
+// end_r_winuser
+
+#endif /* !NOWINSTYLES */
+
+
+/*
+ * Combo Box return Values
+ */
+#define CB_OKAY 0
+#define CB_ERR (-1)
+#define CB_ERRSPACE (-2)
+
+
+/*
+ * Combo Box Notification Codes
+ */
+#define CBN_ERRSPACE (-1)
+#define CBN_SELCHANGE 1
+#define CBN_DBLCLK 2
+#define CBN_SETFOCUS 3
+#define CBN_KILLFOCUS 4
+#define CBN_EDITCHANGE 5
+#define CBN_EDITUPDATE 6
+#define CBN_DROPDOWN 7
+#define CBN_CLOSEUP 8
+#define CBN_SELENDOK 9
+#define CBN_SELENDCANCEL 10
+
+#ifndef NOWINSTYLES
+// begin_r_winuser
+
+/*
+ * Combo Box styles
+ */
+#define CBS_SIMPLE 0x0001L
+#define CBS_DROPDOWN 0x0002L
+#define CBS_DROPDOWNLIST 0x0003L
+#define CBS_OWNERDRAWFIXED 0x0010L
+#define CBS_OWNERDRAWVARIABLE 0x0020L
+#define CBS_AUTOHSCROLL 0x0040L
+#define CBS_OEMCONVERT 0x0080L
+#define CBS_SORT 0x0100L
+#define CBS_HASSTRINGS 0x0200L
+#define CBS_NOINTEGRALHEIGHT 0x0400L
+#define CBS_DISABLENOSCROLL 0x0800L
+#if(WINVER >= 0x0400)
+#define CBS_UPPERCASE 0x2000L
+#define CBS_LOWERCASE 0x4000L
+#endif /* WINVER >= 0x0400 */
+
+// end_r_winuser
+#endif /* !NOWINSTYLES */
+
+
+/*
+ * Combo Box messages
+ */
+#ifndef NOWINMESSAGES
+#define CB_GETEDITSEL 0x0140
+#define CB_LIMITTEXT 0x0141
+#define CB_SETEDITSEL 0x0142
+#define CB_ADDSTRING 0x0143
+#define CB_DELETESTRING 0x0144
+#define CB_DIR 0x0145
+#define CB_GETCOUNT 0x0146
+#define CB_GETCURSEL 0x0147
+#define CB_GETLBTEXT 0x0148
+#define CB_GETLBTEXTLEN 0x0149
+#define CB_INSERTSTRING 0x014A
+#define CB_RESETCONTENT 0x014B
+#define CB_FINDSTRING 0x014C
+#define CB_SELECTSTRING 0x014D
+#define CB_SETCURSEL 0x014E
+#define CB_SHOWDROPDOWN 0x014F
+#define CB_GETITEMDATA 0x0150
+#define CB_SETITEMDATA 0x0151
+#define CB_GETDROPPEDCONTROLRECT 0x0152
+#define CB_SETITEMHEIGHT 0x0153
+#define CB_GETITEMHEIGHT 0x0154
+#define CB_SETEXTENDEDUI 0x0155
+#define CB_GETEXTENDEDUI 0x0156
+#define CB_GETDROPPEDSTATE 0x0157
+#define CB_FINDSTRINGEXACT 0x0158
+#define CB_SETLOCALE 0x0159
+#define CB_GETLOCALE 0x015A
+#if(WINVER >= 0x0400)
+#define CB_GETTOPINDEX 0x015b
+#define CB_SETTOPINDEX 0x015c
+#define CB_GETHORIZONTALEXTENT 0x015d
+#define CB_SETHORIZONTALEXTENT 0x015e
+#define CB_GETDROPPEDWIDTH 0x015f
+#define CB_SETDROPPEDWIDTH 0x0160
+#define CB_INITSTORAGE 0x0161
+#endif /* WINVER >= 0x0400 */
+#if(WINVER >= 0x0400)
+#define CB_MSGMAX 0x0162
+#else
+#define CB_MSGMAX 0x015B
+#endif
+#endif /* !NOWINMESSAGES */
+
+
+
+#ifndef NOWINSTYLES
+
+// begin_r_winuser
+
+/*
+ * Scroll Bar Styles
+ */
+#define SBS_HORZ 0x0000L
+#define SBS_VERT 0x0001L
+#define SBS_TOPALIGN 0x0002L
+#define SBS_LEFTALIGN 0x0002L
+#define SBS_BOTTOMALIGN 0x0004L
+#define SBS_RIGHTALIGN 0x0004L
+#define SBS_SIZEBOXTOPLEFTALIGN 0x0002L
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
+#define SBS_SIZEBOX 0x0008L
+#if(WINVER >= 0x0400)
+#define SBS_SIZEGRIP 0x0010L
+#endif /* WINVER >= 0x0400 */
+
+// end_r_winuser
+
+#endif /* !NOWINSTYLES */
+
+/*
+ * Scroll bar messages
+ */
+#ifndef NOWINMESSAGES
+#define SBM_SETPOS 0x00E0 /*not in win3.1 */
+#define SBM_GETPOS 0x00E1 /*not in win3.1 */
+#define SBM_SETRANGE 0x00E2 /*not in win3.1 */
+#define SBM_SETRANGEREDRAW 0x00E6 /*not in win3.1 */
+#define SBM_GETRANGE 0x00E3 /*not in win3.1 */
+#define SBM_ENABLE_ARROWS 0x00E4 /*not in win3.1 */
+#if(WINVER >= 0x0400)
+#define SBM_SETSCROLLINFO 0x00E9
+#define SBM_GETSCROLLINFO 0x00EA
+
+#define SIF_RANGE 0x0001
+#define SIF_PAGE 0x0002
+#define SIF_POS 0x0004
+#define SIF_DISABLENOSCROLL 0x0008
+#define SIF_TRACKPOS 0x0010
+#define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
+
+typedef struct tagSCROLLINFO
+{
+ UINT cbSize;
+ UINT fMask;
+ int nMin;
+ int nMax;
+ UINT nPage;
+ int nPos;
+ int nTrackPos;
+} SCROLLINFO, FAR *LPSCROLLINFO;
+typedef SCROLLINFO CONST FAR *LPCSCROLLINFO;
+
+WINUSERAPI int WINAPI SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL);
+WINUSERAPI BOOL WINAPI GetScrollInfo(HWND, int, LPSCROLLINFO);
+#endif /* WINVER >= 0x0400 */
+#endif /* !NOWINMESSAGES */
+#endif /* !NOCTLMGR */
+
+#ifndef NOMDI
+
+/*
+ * MDI client style bits
+ */
+#define MDIS_ALLCHILDSTYLES 0x0001
+
+/*
+ * wParam Flags for WM_MDITILE and WM_MDICASCADE messages.
+ */
+#define MDITILE_VERTICAL 0x0000 /*not in win3.1 */
+#define MDITILE_HORIZONTAL 0x0001 /*not in win3.1 */
+#define MDITILE_SKIPDISABLED 0x0002 /*not in win3.1 */
+
+typedef struct tagMDICREATESTRUCTA {
+ LPCSTR szClass;
+ LPCSTR szTitle;
+ HANDLE hOwner;
+ int x;
+ int y;
+ int cx;
+ int cy;
+ DWORD style;
+ LPARAM lParam; /* app-defined stuff */
+} MDICREATESTRUCTA, *LPMDICREATESTRUCTA;
+typedef struct tagMDICREATESTRUCTW {
+ LPCWSTR szClass;
+ LPCWSTR szTitle;
+ HANDLE hOwner;
+ int x;
+ int y;
+ int cx;
+ int cy;
+ DWORD style;
+ LPARAM lParam; /* app-defined stuff */
+} MDICREATESTRUCTW, *LPMDICREATESTRUCTW;
+#ifdef UNICODE
+typedef MDICREATESTRUCTW MDICREATESTRUCT;
+typedef LPMDICREATESTRUCTW LPMDICREATESTRUCT;
+#else
+typedef MDICREATESTRUCTA MDICREATESTRUCT;
+typedef LPMDICREATESTRUCTA LPMDICREATESTRUCT;
+#endif // UNICODE
+
+typedef struct tagCLIENTCREATESTRUCT {
+ HANDLE hWindowMenu;
+ UINT idFirstChild;
+} CLIENTCREATESTRUCT, *LPCLIENTCREATESTRUCT;
+
+WINUSERAPI
+LRESULT
+WINAPI
+DefFrameProcA(
+ HWND hWnd,
+ HWND hWndMDIClient ,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+LRESULT
+WINAPI
+DefFrameProcW(
+ HWND hWnd,
+ HWND hWndMDIClient ,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define DefFrameProc DefFrameProcW
+#else
+#define DefFrameProc DefFrameProcA
+#endif // !UNICODE
+
+WINUSERAPI
+LRESULT
+WINAPI
+DefMDIChildProcA(
+ HWND hWnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam);
+WINUSERAPI
+LRESULT
+WINAPI
+DefMDIChildProcW(
+ HWND hWnd,
+ UINT uMsg,
+ WPARAM wParam,
+ LPARAM lParam);
+#ifdef UNICODE
+#define DefMDIChildProc DefMDIChildProcW
+#else
+#define DefMDIChildProc DefMDIChildProcA
+#endif // !UNICODE
+
+#ifndef NOMSG
+
+WINUSERAPI
+BOOL
+WINAPI
+TranslateMDISysAccel(
+ HWND hWndClient,
+ LPMSG lpMsg);
+
+#endif /* !NOMSG */
+
+WINUSERAPI
+UINT
+WINAPI
+ArrangeIconicWindows(
+ HWND hWnd);
+
+WINUSERAPI
+HWND
+WINAPI
+CreateMDIWindowA(
+ LPSTR lpClassName,
+ LPSTR lpWindowName,
+ DWORD dwStyle,
+ int X,
+ int Y,
+ int nWidth,
+ int nHeight,
+ HWND hWndParent,
+ HINSTANCE hInstance,
+ LPARAM lParam
+ );
+WINUSERAPI
+HWND
+WINAPI
+CreateMDIWindowW(
+ LPWSTR lpClassName,
+ LPWSTR lpWindowName,
+ DWORD dwStyle,
+ int X,
+ int Y,
+ int nWidth,
+ int nHeight,
+ HWND hWndParent,
+ HINSTANCE hInstance,
+ LPARAM lParam
+ );
+#ifdef UNICODE
+#define CreateMDIWindow CreateMDIWindowW
+#else
+#define CreateMDIWindow CreateMDIWindowA
+#endif // !UNICODE
+
+#if(WINVER >= 0x0400)
+WINUSERAPI WORD WINAPI TileWindows(HWND hwndParent, UINT wHow, CONST RECT * lpRect, UINT cKids, const HWND FAR * lpKids);
+WINUSERAPI WORD WINAPI CascadeWindows(HWND hwndParent, UINT wHow, CONST RECT * lpRect, UINT cKids, const HWND FAR * lpKids);
+#endif /* WINVER >= 0x0400 */
+#endif /* !NOMDI */
+
+#endif /* !NOUSER */
+
+/****** Help support ********************************************************/
+
+#ifndef NOHELP
+
+typedef DWORD HELPPOLY;
+typedef struct tagMULTIKEYHELPA {
+ DWORD mkSize;
+ CHAR mkKeylist;
+ CHAR szKeyphrase[1];
+} MULTIKEYHELPA, *PMULTIKEYHELPA, *LPMULTIKEYHELPA;
+typedef struct tagMULTIKEYHELPW {
+ DWORD mkSize;
+ WCHAR mkKeylist;
+ WCHAR szKeyphrase[1];
+} MULTIKEYHELPW, *PMULTIKEYHELPW, *LPMULTIKEYHELPW;
+#ifdef UNICODE
+typedef MULTIKEYHELPW MULTIKEYHELP;
+typedef PMULTIKEYHELPW PMULTIKEYHELP;
+typedef LPMULTIKEYHELPW LPMULTIKEYHELP;
+#else
+typedef MULTIKEYHELPA MULTIKEYHELP;
+typedef PMULTIKEYHELPA PMULTIKEYHELP;
+typedef LPMULTIKEYHELPA LPMULTIKEYHELP;
+#endif // UNICODE
+
+typedef struct tagHELPWININFOA {
+ int wStructSize;
+ int x;
+ int y;
+ int dx;
+ int dy;
+ int wMax;
+ CHAR rgchMember[2];
+} HELPWININFOA, *PHELPWININFOA, *LPHELPWININFOA;
+typedef struct tagHELPWININFOW {
+ int wStructSize;
+ int x;
+ int y;
+ int dx;
+ int dy;
+ int wMax;
+ WCHAR rgchMember[2];
+} HELPWININFOW, *PHELPWININFOW, *LPHELPWININFOW;
+#ifdef UNICODE
+typedef HELPWININFOW HELPWININFO;
+typedef PHELPWININFOW PHELPWININFO;
+typedef LPHELPWININFOW LPHELPWININFO;
+#else
+typedef HELPWININFOA HELPWININFO;
+typedef PHELPWININFOA PHELPWININFO;
+typedef LPHELPWININFOA LPHELPWININFO;
+#endif // UNICODE
+
+// begin_r_winuser
+
+/*
+ * Commands to pass to WinHelp()
+ */
+#define HELP_CONTEXT 0x0001L /* Display topic in ulTopic */
+#define HELP_QUIT 0x0002L /* Terminate help */
+#define HELP_INDEX 0x0003L /* Display index */
+#define HELP_CONTENTS 0x0003L
+#define HELP_HELPONHELP 0x0004L /* Display help on using help */
+#define HELP_SETINDEX 0x0005L /* Set current Index for multi index help */
+#define HELP_SETCONTENTS 0x0005L
+#define HELP_CONTEXTPOPUP 0x0008L
+#define HELP_FORCEFILE 0x0009L
+#define HELP_KEY 0x0101L /* Display topic for keyword in offabData */
+#define HELP_COMMAND 0x0102L
+#define HELP_PARTIALKEY 0x0105L
+#define HELP_MULTIKEY 0x0201L
+#define HELP_SETWINPOS 0x0203L
+#if(WINVER >= 0x0400)
+#define HELP_CONTEXTMENU 0x000a
+#define HELP_FINDER 0x000b
+#define HELP_WM_HELP 0x000c
+#define HELP_SETPOPUP_POS 0x000d
+
+#define HELP_TCARD 0x8000
+#define HELP_TCARD_DATA 0x0010
+#define HELP_TCARD_OTHER_CALLER 0x0011
+
+// These are in winhelp.h in Win95.
+#define IDH_NO_HELP 28440
+#define IDH_MISSING_CONTEXT 28441 // Control doesn't have matching help context
+#define IDH_GENERIC_HELP_BUTTON 28442 // Property sheet help button
+#define IDH_OK 28443
+#define IDH_CANCEL 28444
+#define IDH_HELP 28445
+
+#endif /* WINVER >= 0x0400 */
+
+// end_r_winuser
+
+
+WINUSERAPI
+BOOL
+WINAPI
+WinHelpA(
+ HWND hWndMain,
+ LPCSTR lpszHelp,
+ UINT uCommand,
+ DWORD dwData
+ );
+WINUSERAPI
+BOOL
+WINAPI
+WinHelpW(
+ HWND hWndMain,
+ LPCWSTR lpszHelp,
+ UINT uCommand,
+ DWORD dwData
+ );
+#ifdef UNICODE
+#define WinHelp WinHelpW
+#else
+#define WinHelp WinHelpA
+#endif // !UNICODE
+
+#endif /* !NOHELP */
+
+#ifndef NOSYSPARAMSINFO
+
+/*
+ * Parameter for SystemParametersInfo()
+ */
+
+#define SPI_GETBEEP 1
+#define SPI_SETBEEP 2
+#define SPI_GETMOUSE 3
+#define SPI_SETMOUSE 4
+#define SPI_GETBORDER 5
+#define SPI_SETBORDER 6
+#define SPI_GETKEYBOARDSPEED 10
+#define SPI_SETKEYBOARDSPEED 11
+#define SPI_LANGDRIVER 12
+#define SPI_ICONHORIZONTALSPACING 13
+#define SPI_GETSCREENSAVETIMEOUT 14
+#define SPI_SETSCREENSAVETIMEOUT 15
+#define SPI_GETSCREENSAVEACTIVE 16
+#define SPI_SETSCREENSAVEACTIVE 17
+#define SPI_GETGRIDGRANULARITY 18
+#define SPI_SETGRIDGRANULARITY 19
+#define SPI_SETDESKWALLPAPER 20
+#define SPI_SETDESKPATTERN 21
+#define SPI_GETKEYBOARDDELAY 22
+#define SPI_SETKEYBOARDDELAY 23
+#define SPI_ICONVERTICALSPACING 24
+#define SPI_GETICONTITLEWRAP 25
+#define SPI_SETICONTITLEWRAP 26
+#define SPI_GETMENUDROPALIGNMENT 27
+#define SPI_SETMENUDROPALIGNMENT 28
+#define SPI_SETDOUBLECLKWIDTH 29
+#define SPI_SETDOUBLECLKHEIGHT 30
+#define SPI_GETICONTITLELOGFONT 31
+#define SPI_SETDOUBLECLICKTIME 32
+#define SPI_SETMOUSEBUTTONSWAP 33
+#define SPI_SETICONTITLELOGFONT 34
+#define SPI_GETFASTTASKSWITCH 35
+#define SPI_SETFASTTASKSWITCH 36
+#if(WINVER >= 0x0400)
+#define SPI_SETDRAGFULLWINDOWS 37
+#define SPI_GETDRAGFULLWINDOWS 38
+#define SPI_GETNONCLIENTMETRICS 41
+#define SPI_SETNONCLIENTMETRICS 42
+#define SPI_GETMINIMIZEDMETRICS 43
+#define SPI_SETMINIMIZEDMETRICS 44
+#define SPI_GETICONMETRICS 45
+#define SPI_SETICONMETRICS 46
+#define SPI_SETWORKAREA 47
+#define SPI_GETWORKAREA 48
+#define SPI_SETPENWINDOWS 49
+
+#define SPI_GETHIGHCONTRAST 66
+#define SPI_SETHIGHCONTRAST 67
+#define SPI_GETKEYBOARDPREF 68
+#define SPI_SETKEYBOARDPREF 69
+#define SPI_GETSCREENREADER 70
+#define SPI_SETSCREENREADER 71
+#define SPI_GETANIMATION 72
+#define SPI_SETANIMATION 73
+#define SPI_GETFONTSMOOTHING 74
+#define SPI_SETFONTSMOOTHING 75
+#define SPI_SETDRAGWIDTH 76
+#define SPI_SETDRAGHEIGHT 77
+#define SPI_SETHANDHELD 78
+#define SPI_GETLOWPOWERTIMEOUT 79
+#define SPI_GETPOWEROFFTIMEOUT 80
+#define SPI_SETLOWPOWERTIMEOUT 81
+#define SPI_SETPOWEROFFTIMEOUT 82
+#define SPI_GETLOWPOWERACTIVE 83
+#define SPI_GETPOWEROFFACTIVE 84
+#define SPI_SETLOWPOWERACTIVE 85
+#define SPI_SETPOWEROFFACTIVE 86
+#define SPI_SETCURSORS 87
+#define SPI_SETICONS 88
+#define SPI_GETDEFAULTINPUTLANG 89
+#define SPI_SETDEFAULTINPUTLANG 90
+#define SPI_SETLANGTOGGLE 91
+#define SPI_GETWINDOWSEXTENSION 92
+#define SPI_SETMOUSETRAILS 93
+#define SPI_GETMOUSETRAILS 94
+#define SPI_SCREENSAVERRUNNING 97
+#endif /* WINVER >= 0x0400 */
+#define SPI_GETFILTERKEYS 50
+#define SPI_SETFILTERKEYS 51
+#define SPI_GETTOGGLEKEYS 52
+#define SPI_SETTOGGLEKEYS 53
+#define SPI_GETMOUSEKEYS 54
+#define SPI_SETMOUSEKEYS 55
+#define SPI_GETSHOWSOUNDS 56
+#define SPI_SETSHOWSOUNDS 57
+#define SPI_GETSTICKYKEYS 58
+#define SPI_SETSTICKYKEYS 59
+#define SPI_GETACCESSTIMEOUT 60
+#define SPI_SETACCESSTIMEOUT 61
+#if(WINVER >= 0x0400)
+#define SPI_GETSERIALKEYS 62
+#define SPI_SETSERIALKEYS 63
+#endif /* WINVER >= 0x0400 */
+#define SPI_GETSOUNDSENTRY 64
+#define SPI_SETSOUNDSENTRY 65
+#if(_WIN32_WINNT >= 0x0400)
+#define SPI_GETMOUSEHOVERWIDTH 98
+#define SPI_SETMOUSEHOVERWIDTH 99
+#define SPI_GETMOUSEHOVERHEIGHT 100
+#define SPI_SETMOUSEHOVERHEIGHT 101
+#define SPI_GETMOUSEHOVERTIME 102
+#define SPI_SETMOUSEHOVERTIME 103
+#define SPI_GETWHEELSCROLLLINES 104
+#define SPI_SETWHEELSCROLLLINES 105
+
+#endif /* _WIN32_WINNT >= 0x0400 */
+
+/*
+ * SPI User Preferences.
+ */
+
+/*
+ * Flags
+ */
+#define SPIF_UPDATEINIFILE 0x0001
+#define SPIF_SENDWININICHANGE 0x0002
+#define SPIF_SENDCHANGE SPIF_SENDWININICHANGE
+
+
+#define METRICS_USEDEFAULT -1
+#ifdef _WINGDI_
+#ifndef NOGDI
+typedef struct tagNONCLIENTMETRICSA
+{
+ UINT cbSize;
+ int iBorderWidth;
+ int iScrollWidth;
+ int iScrollHeight;
+ int iCaptionWidth;
+ int iCaptionHeight;
+ LOGFONTA lfCaptionFont;
+ int iSmCaptionWidth;
+ int iSmCaptionHeight;
+ LOGFONTA lfSmCaptionFont;
+ int iMenuWidth;
+ int iMenuHeight;
+ LOGFONTA lfMenuFont;
+ LOGFONTA lfStatusFont;
+ LOGFONTA lfMessageFont;
+} NONCLIENTMETRICSA, *PNONCLIENTMETRICSA, FAR* LPNONCLIENTMETRICSA;
+typedef struct tagNONCLIENTMETRICSW
+{
+ UINT cbSize;
+ int iBorderWidth;
+ int iScrollWidth;
+ int iScrollHeight;
+ int iCaptionWidth;
+ int iCaptionHeight;
+ LOGFONTW lfCaptionFont;
+ int iSmCaptionWidth;
+ int iSmCaptionHeight;
+ LOGFONTW lfSmCaptionFont;
+ int iMenuWidth;
+ int iMenuHeight;
+ LOGFONTW lfMenuFont;
+ LOGFONTW lfStatusFont;
+ LOGFONTW lfMessageFont;
+} NONCLIENTMETRICSW, *PNONCLIENTMETRICSW, FAR* LPNONCLIENTMETRICSW;
+#ifdef UNICODE
+typedef NONCLIENTMETRICSW NONCLIENTMETRICS;
+typedef PNONCLIENTMETRICSW PNONCLIENTMETRICS;
+typedef LPNONCLIENTMETRICSW LPNONCLIENTMETRICS;
+#else
+typedef NONCLIENTMETRICSA NONCLIENTMETRICS;
+typedef PNONCLIENTMETRICSA PNONCLIENTMETRICS;
+typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS;
+#endif // UNICODE
+#endif /* NOGDI */
+#endif /* _WINGDI_ */
+
+#define ARW_BOTTOMLEFT 0x0000L
+#define ARW_BOTTOMRIGHT 0x0001L
+#define ARW_TOPLEFT 0x0002L
+#define ARW_TOPRIGHT 0x0003L
+#define ARW_STARTMASK 0x0003L
+#define ARW_STARTRIGHT 0x0001L
+#define ARW_STARTTOP 0x0002L
+
+#define ARW_LEFT 0x0000L
+#define ARW_RIGHT 0x0000L
+#define ARW_UP 0x0004L
+#define ARW_DOWN 0x0004L
+#define ARW_HIDE 0x0008L
+#define ARW_VALID 0x000FL
+
+typedef struct tagMINIMIZEDMETRICS
+{
+ UINT cbSize;
+ int iWidth;
+ int iHorzGap;
+ int iVertGap;
+ int iArrange;
+} MINIMIZEDMETRICS, *PMINIMIZEDMETRICS, *LPMINIMIZEDMETRICS;
+
+#ifdef _WINGDI_
+#ifndef NOGDI
+typedef struct tagICONMETRICSA
+{
+ UINT cbSize;
+ int iHorzSpacing;
+ int iVertSpacing;
+ int iTitleWrap;
+ LOGFONTA lfFont;
+} ICONMETRICSA, *PICONMETRICSA, *LPICONMETRICSA;
+typedef struct tagICONMETRICSW
+{
+ UINT cbSize;
+ int iHorzSpacing;
+ int iVertSpacing;
+ int iTitleWrap;
+ LOGFONTW lfFont;
+} ICONMETRICSW, *PICONMETRICSW, *LPICONMETRICSW;
+#ifdef UNICODE
+typedef ICONMETRICSW ICONMETRICS;
+typedef PICONMETRICSW PICONMETRICS;
+typedef LPICONMETRICSW LPICONMETRICS;
+#else
+typedef ICONMETRICSA ICONMETRICS;
+typedef PICONMETRICSA PICONMETRICS;
+typedef LPICONMETRICSA LPICONMETRICS;
+#endif // UNICODE
+#endif /* NOGDI */
+#endif /* _WINGDI_ */
+
+typedef struct tagANIMATIONINFO
+{
+ UINT cbSize;
+ int iMinAnimate;
+} ANIMATIONINFO, *LPANIMATIONINFO;
+
+typedef struct tagSERIALKEYSA
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ LPSTR lpszActivePort;
+ LPSTR lpszPort;
+ UINT iBaudRate;
+ UINT iPortState;
+ UINT iActive;
+} SERIALKEYSA, *LPSERIALKEYSA;
+typedef struct tagSERIALKEYSW
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ LPWSTR lpszActivePort;
+ LPWSTR lpszPort;
+ UINT iBaudRate;
+ UINT iPortState;
+ UINT iActive;
+} SERIALKEYSW, *LPSERIALKEYSW;
+#ifdef UNICODE
+typedef SERIALKEYSW SERIALKEYS;
+typedef LPSERIALKEYSW LPSERIALKEYS;
+#else
+typedef SERIALKEYSA SERIALKEYS;
+typedef LPSERIALKEYSA LPSERIALKEYS;
+#endif // UNICODE
+
+/* flags for SERIALKEYS dwFlags field */
+#define SERKF_SERIALKEYSON 0x00000001
+#define SERKF_AVAILABLE 0x00000002
+#define SERKF_INDICATOR 0x00000004
+
+
+typedef struct tagHIGHCONTRASTA
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ LPSTR lpszDefaultScheme;
+} HIGHCONTRASTA, *LPHIGHCONTRASTA;
+typedef struct tagHIGHCONTRASTW
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ LPWSTR lpszDefaultScheme;
+} HIGHCONTRASTW, *LPHIGHCONTRASTW;
+#ifdef UNICODE
+typedef HIGHCONTRASTW HIGHCONTRAST;
+typedef LPHIGHCONTRASTW LPHIGHCONTRAST;
+#else
+typedef HIGHCONTRASTA HIGHCONTRAST;
+typedef LPHIGHCONTRASTA LPHIGHCONTRAST;
+#endif // UNICODE
+
+/* flags for HIGHCONTRAST dwFlags field */
+#define HCF_HIGHCONTRASTON 0x00000001
+#define HCF_AVAILABLE 0x00000002
+#define HCF_HOTKEYACTIVE 0x00000004
+#define HCF_CONFIRMHOTKEY 0x00000008
+#define HCF_HOTKEYSOUND 0x00000010
+#define HCF_INDICATOR 0x00000020
+#define HCF_HOTKEYAVAILABLE 0x00000040
+
+/* Flags for ChangeDisplaySettings */
+#define CDS_UPDATEREGISTRY 0x00000001
+#define CDS_TEST 0x00000002
+#define CDS_FULLSCREEN 0x00000004
+#define CDS_GLOBAL 0x00000008
+#define CDS_SET_PRIMARY 0x00000010
+#define CDS_RESET 0x40000000
+#define CDS_SETRECT 0x20000000
+#define CDS_NORESET 0x10000000
+
+/* Return values for ChangeDisplaySettings */
+#define DISP_CHANGE_SUCCESSFUL 0
+#define DISP_CHANGE_RESTART 1
+#define DISP_CHANGE_FAILED -1
+#define DISP_CHANGE_BADMODE -2
+#define DISP_CHANGE_NOTUPDATED -3
+#define DISP_CHANGE_BADFLAGS -4
+#define DISP_CHANGE_BADPARAM -5
+
+#ifdef _WINGDI_
+#ifndef NOGDI
+
+WINUSERAPI
+LONG
+WINAPI
+ChangeDisplaySettingsA(
+ LPDEVMODEA lpDevMode,
+ DWORD dwFlags);
+WINUSERAPI
+LONG
+WINAPI
+ChangeDisplaySettingsW(
+ LPDEVMODEW lpDevMode,
+ DWORD dwFlags);
+#ifdef UNICODE
+#define ChangeDisplaySettings ChangeDisplaySettingsW
+#else
+#define ChangeDisplaySettings ChangeDisplaySettingsA
+#endif // !UNICODE
+
+WINUSERAPI
+LONG
+WINAPI
+ChangeDisplaySettingsExA(
+ LPCSTR lpszDeviceName,
+ LPDEVMODEA lpDevMode,
+ HWND hwnd,
+ DWORD dwflags,
+ LPVOID lParam);
+WINUSERAPI
+LONG
+WINAPI
+ChangeDisplaySettingsExW(
+ LPCWSTR lpszDeviceName,
+ LPDEVMODEW lpDevMode,
+ HWND hwnd,
+ DWORD dwflags,
+ LPVOID lParam);
+#ifdef UNICODE
+#define ChangeDisplaySettingsEx ChangeDisplaySettingsExW
+#else
+#define ChangeDisplaySettingsEx ChangeDisplaySettingsExA
+#endif // !UNICODE
+
+#define ENUM_CURRENT_SETTINGS ((DWORD)-1)
+#define ENUM_REGISTRY_SETTINGS ((DWORD)-2)
+
+WINUSERAPI
+BOOL
+WINAPI
+EnumDisplaySettingsA(
+ LPCSTR lpszDeviceName,
+ DWORD iModeNum,
+ LPDEVMODEA lpDevMode);
+WINUSERAPI
+BOOL
+WINAPI
+EnumDisplaySettingsW(
+ LPCWSTR lpszDeviceName,
+ DWORD iModeNum,
+ LPDEVMODEW lpDevMode);
+#ifdef UNICODE
+#define EnumDisplaySettings EnumDisplaySettingsW
+#else
+#define EnumDisplaySettings EnumDisplaySettingsA
+#endif // !UNICODE
+
+
+#endif /* NOGDI */
+#endif /* _WINGDI_ */
+
+
+WINUSERAPI
+BOOL
+WINAPI
+SystemParametersInfoA(
+ UINT uiAction,
+ UINT uiParam,
+ PVOID pvParam,
+ UINT fWinIni);
+WINUSERAPI
+BOOL
+WINAPI
+SystemParametersInfoW(
+ UINT uiAction,
+ UINT uiParam,
+ PVOID pvParam,
+ UINT fWinIni);
+#ifdef UNICODE
+#define SystemParametersInfo SystemParametersInfoW
+#else
+#define SystemParametersInfo SystemParametersInfoA
+#endif // !UNICODE
+
+#endif /* !NOSYSPARAMSINFO */
+
+/*
+ * Accessibility support
+ */
+typedef struct tagFILTERKEYS
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iWaitMSec; // Acceptance Delay
+ DWORD iDelayMSec; // Delay Until Repeat
+ DWORD iRepeatMSec; // Repeat Rate
+ DWORD iBounceMSec; // Debounce Time
+} FILTERKEYS, *LPFILTERKEYS;
+
+/*
+ * FILTERKEYS dwFlags field
+ */
+#define FKF_FILTERKEYSON 0x00000001
+#define FKF_AVAILABLE 0x00000002
+#define FKF_HOTKEYACTIVE 0x00000004
+#define FKF_CONFIRMHOTKEY 0x00000008
+#define FKF_HOTKEYSOUND 0x00000010
+#define FKF_INDICATOR 0x00000020
+#define FKF_CLICKON 0x00000040
+
+typedef struct tagSTICKYKEYS
+{
+ UINT cbSize;
+ DWORD dwFlags;
+} STICKYKEYS, *LPSTICKYKEYS;
+
+/*
+ * STICKYKEYS dwFlags field
+ */
+#define SKF_STICKYKEYSON 0x00000001
+#define SKF_AVAILABLE 0x00000002
+#define SKF_HOTKEYACTIVE 0x00000004
+#define SKF_CONFIRMHOTKEY 0x00000008
+#define SKF_HOTKEYSOUND 0x00000010
+#define SKF_INDICATOR 0x00000020
+#define SKF_AUDIBLEFEEDBACK 0x00000040
+#define SKF_TRISTATE 0x00000080
+#define SKF_TWOKEYSOFF 0x00000100
+
+typedef struct tagMOUSEKEYS
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iMaxSpeed;
+ DWORD iTimeToMaxSpeed;
+ DWORD iCtrlSpeed;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} MOUSEKEYS, *LPMOUSEKEYS;
+
+/*
+ * MOUSEKEYS dwFlags field
+ */
+#define MKF_MOUSEKEYSON 0x00000001
+#define MKF_AVAILABLE 0x00000002
+#define MKF_HOTKEYACTIVE 0x00000004
+#define MKF_CONFIRMHOTKEY 0x00000008
+#define MKF_HOTKEYSOUND 0x00000010
+#define MKF_INDICATOR 0x00000020
+#define MKF_MODIFIERS 0x00000040
+#define MKF_REPLACENUMBERS 0x00000080
+
+typedef struct tagACCESSTIMEOUT
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iTimeOutMSec;
+} ACCESSTIMEOUT, *LPACCESSTIMEOUT;
+
+/*
+ * ACCESSTIMEOUT dwFlags field
+ */
+#define ATF_TIMEOUTON 0x00000001
+#define ATF_ONOFFFEEDBACK 0x00000002
+
+/* values for SOUNDSENTRY iFSGrafEffect field */
+#define SSGF_NONE 0
+#define SSGF_DISPLAY 3
+
+/* values for SOUNDSENTRY iFSTextEffect field */
+#define SSTF_NONE 0
+#define SSTF_CHARS 1
+#define SSTF_BORDER 2
+#define SSTF_DISPLAY 3
+
+/* values for SOUNDSENTRY iWindowsEffect field */
+#define SSWF_NONE 0
+#define SSWF_TITLE 1
+#define SSWF_WINDOW 2
+#define SSWF_DISPLAY 3
+#define SSWF_CUSTOM 4
+
+typedef struct tagSOUNDSENTRYA
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iFSTextEffect;
+ DWORD iFSTextEffectMSec;
+ DWORD iFSTextEffectColorBits;
+ DWORD iFSGrafEffect;
+ DWORD iFSGrafEffectMSec;
+ DWORD iFSGrafEffectColor;
+ DWORD iWindowsEffect;
+ DWORD iWindowsEffectMSec;
+ LPSTR lpszWindowsEffectDLL;
+ DWORD iWindowsEffectOrdinal;
+} SOUNDSENTRYA, *LPSOUNDSENTRYA;
+typedef struct tagSOUNDSENTRYW
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iFSTextEffect;
+ DWORD iFSTextEffectMSec;
+ DWORD iFSTextEffectColorBits;
+ DWORD iFSGrafEffect;
+ DWORD iFSGrafEffectMSec;
+ DWORD iFSGrafEffectColor;
+ DWORD iWindowsEffect;
+ DWORD iWindowsEffectMSec;
+ LPWSTR lpszWindowsEffectDLL;
+ DWORD iWindowsEffectOrdinal;
+} SOUNDSENTRYW, *LPSOUNDSENTRYW;
+#ifdef UNICODE
+typedef SOUNDSENTRYW SOUNDSENTRY;
+typedef LPSOUNDSENTRYW LPSOUNDSENTRY;
+#else
+typedef SOUNDSENTRYA SOUNDSENTRY;
+typedef LPSOUNDSENTRYA LPSOUNDSENTRY;
+#endif // UNICODE
+
+/*
+ * SOUNDSENTRY dwFlags field
+ */
+#define SSF_SOUNDSENTRYON 0x00000001
+#define SSF_AVAILABLE 0x00000002
+#define SSF_INDICATOR 0x00000004
+
+typedef struct tagTOGGLEKEYS
+{
+ UINT cbSize;
+ DWORD dwFlags;
+} TOGGLEKEYS, *LPTOGGLEKEYS;
+
+/*
+ * TOGGLEKEYS dwFlags field
+ */
+#define TKF_TOGGLEKEYSON 0x00000001
+#define TKF_AVAILABLE 0x00000002
+#define TKF_HOTKEYACTIVE 0x00000004
+#define TKF_CONFIRMHOTKEY 0x00000008
+#define TKF_HOTKEYSOUND 0x00000010
+#define TKF_INDICATOR 0x00000020
+
+
+
+
+/*
+ * Set debug level
+ */
+
+WINUSERAPI
+VOID
+WINAPI
+SetDebugErrorLevel(
+ DWORD dwLevel
+ );
+
+/*
+ * SetLastErrorEx() types.
+ */
+
+#define SLE_ERROR 0x00000001
+#define SLE_MINORERROR 0x00000002
+#define SLE_WARNING 0x00000003
+
+WINUSERAPI
+VOID
+WINAPI
+SetLastErrorEx(
+ DWORD dwErrCode,
+ DWORD dwType
+ );
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* !_WINUSER_ */
diff --git a/public/sdk/inc/winver.h b/public/sdk/inc/winver.h
new file mode 100644
index 000000000..fe38a73cb
--- /dev/null
+++ b/public/sdk/inc/winver.h
@@ -0,0 +1,295 @@
+/*****************************************************************************\
+* *
+* winver.h - Version management functions, types, and definitions *
+* *
+* Include file for VER.DLL. This library is *
+* designed to allow version stamping of Windows executable files*
+* and of special .VER files for DOS executable files. *
+* *
+* Copyright (c) 1993-1996, Microsoft Corp. All rights reserved *
+* *
+\*****************************************************************************/
+
+#ifndef VER_H
+#define VER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ----- Symbols ----- */
+#define VS_FILE_INFO RT_VERSION
+#define VS_VERSION_INFO 1
+#define VS_USER_DEFINED 100
+
+/* ----- VS_VERSION.dwFileFlags ----- */
+#define VS_FFI_SIGNATURE 0xFEEF04BDL
+#define VS_FFI_STRUCVERSION 0x00010000L
+#define VS_FFI_FILEFLAGSMASK 0x0000003FL
+
+/* ----- VS_VERSION.dwFileFlags ----- */
+#define VS_FF_DEBUG 0x00000001L
+#define VS_FF_PRERELEASE 0x00000002L
+#define VS_FF_PATCHED 0x00000004L
+#define VS_FF_PRIVATEBUILD 0x00000008L
+#define VS_FF_INFOINFERRED 0x00000010L
+#define VS_FF_SPECIALBUILD 0x00000020L
+
+/* ----- VS_VERSION.dwFileOS ----- */
+#define VOS_UNKNOWN 0x00000000L
+#define VOS_DOS 0x00010000L
+#define VOS_OS216 0x00020000L
+#define VOS_OS232 0x00030000L
+#define VOS_NT 0x00040000L
+
+#define VOS__BASE 0x00000000L
+#define VOS__WINDOWS16 0x00000001L
+#define VOS__PM16 0x00000002L
+#define VOS__PM32 0x00000003L
+#define VOS__WINDOWS32 0x00000004L
+
+#define VOS_DOS_WINDOWS16 0x00010001L
+#define VOS_DOS_WINDOWS32 0x00010004L
+#define VOS_OS216_PM16 0x00020002L
+#define VOS_OS232_PM32 0x00030003L
+#define VOS_NT_WINDOWS32 0x00040004L
+
+/* ----- VS_VERSION.dwFileType ----- */
+#define VFT_UNKNOWN 0x00000000L
+#define VFT_APP 0x00000001L
+#define VFT_DLL 0x00000002L
+#define VFT_DRV 0x00000003L
+#define VFT_FONT 0x00000004L
+#define VFT_VXD 0x00000005L
+#define VFT_STATIC_LIB 0x00000007L
+
+/* ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_DRV ----- */
+#define VFT2_UNKNOWN 0x00000000L
+#define VFT2_DRV_PRINTER 0x00000001L
+#define VFT2_DRV_KEYBOARD 0x00000002L
+#define VFT2_DRV_LANGUAGE 0x00000003L
+#define VFT2_DRV_DISPLAY 0x00000004L
+#define VFT2_DRV_MOUSE 0x00000005L
+#define VFT2_DRV_NETWORK 0x00000006L
+#define VFT2_DRV_SYSTEM 0x00000007L
+#define VFT2_DRV_INSTALLABLE 0x00000008L
+#define VFT2_DRV_SOUND 0x00000009L
+#define VFT2_DRV_COMM 0x0000000AL
+#define VFT2_DRV_INPUTMETHOD 0x0000000BL
+
+/* ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_FONT ----- */
+#define VFT2_FONT_RASTER 0x00000001L
+#define VFT2_FONT_VECTOR 0x00000002L
+#define VFT2_FONT_TRUETYPE 0x00000003L
+
+/* ----- VerFindFile() flags ----- */
+#define VFFF_ISSHAREDFILE 0x0001
+
+#define VFF_CURNEDEST 0x0001
+#define VFF_FILEINUSE 0x0002
+#define VFF_BUFFTOOSMALL 0x0004
+
+/* ----- VerInstallFile() flags ----- */
+#define VIFF_FORCEINSTALL 0x0001
+#define VIFF_DONTDELETEOLD 0x0002
+
+#define VIF_TEMPFILE 0x00000001L
+#define VIF_MISMATCH 0x00000002L
+#define VIF_SRCOLD 0x00000004L
+
+#define VIF_DIFFLANG 0x00000008L
+#define VIF_DIFFCODEPG 0x00000010L
+#define VIF_DIFFTYPE 0x00000020L
+
+#define VIF_WRITEPROT 0x00000040L
+#define VIF_FILEINUSE 0x00000080L
+#define VIF_OUTOFSPACE 0x00000100L
+#define VIF_ACCESSVIOLATION 0x00000200L
+#define VIF_SHARINGVIOLATION 0x00000400L
+#define VIF_CANNOTCREATE 0x00000800L
+#define VIF_CANNOTDELETE 0x00001000L
+#define VIF_CANNOTRENAME 0x00002000L
+#define VIF_CANNOTDELETECUR 0x00004000L
+#define VIF_OUTOFMEMORY 0x00008000L
+
+#define VIF_CANNOTREADSRC 0x00010000L
+#define VIF_CANNOTREADDST 0x00020000L
+
+#define VIF_BUFFTOOSMALL 0x00040000L
+
+#ifndef RC_INVOKED /* RC doesn't need to see the rest of this */
+
+/* ----- Types and structures ----- */
+
+typedef struct tagVS_FIXEDFILEINFO
+{
+ DWORD dwSignature; /* e.g. 0xfeef04bd */
+ DWORD dwStrucVersion; /* e.g. 0x00000042 = "0.42" */
+ DWORD dwFileVersionMS; /* e.g. 0x00030075 = "3.75" */
+ DWORD dwFileVersionLS; /* e.g. 0x00000031 = "0.31" */
+ DWORD dwProductVersionMS; /* e.g. 0x00030010 = "3.10" */
+ DWORD dwProductVersionLS; /* e.g. 0x00000031 = "0.31" */
+ DWORD dwFileFlagsMask; /* = 0x3F for version "0.42" */
+ DWORD dwFileFlags; /* e.g. VFF_DEBUG | VFF_PRERELEASE */
+ DWORD dwFileOS; /* e.g. VOS_DOS_WINDOWS16 */
+ DWORD dwFileType; /* e.g. VFT_DRIVER */
+ DWORD dwFileSubtype; /* e.g. VFT2_DRV_KEYBOARD */
+ DWORD dwFileDateMS; /* e.g. 0 */
+ DWORD dwFileDateLS; /* e.g. 0 */
+} VS_FIXEDFILEINFO;
+
+/* ----- Function prototypes ----- */
+
+DWORD
+APIENTRY
+VerFindFileA(
+ DWORD uFlags,
+ LPSTR szFileName,
+ LPSTR szWinDir,
+ LPSTR szAppDir,
+ LPSTR szCurDir,
+ PUINT lpuCurDirLen,
+ LPSTR szDestDir,
+ PUINT lpuDestDirLen
+ );
+DWORD
+APIENTRY
+VerFindFileW(
+ DWORD uFlags,
+ LPWSTR szFileName,
+ LPWSTR szWinDir,
+ LPWSTR szAppDir,
+ LPWSTR szCurDir,
+ PUINT lpuCurDirLen,
+ LPWSTR szDestDir,
+ PUINT lpuDestDirLen
+ );
+#ifdef UNICODE
+#define VerFindFile VerFindFileW
+#else
+#define VerFindFile VerFindFileA
+#endif // !UNICODE
+
+DWORD
+APIENTRY
+VerInstallFileA(
+ DWORD uFlags,
+ LPSTR szSrcFileName,
+ LPSTR szDestFileName,
+ LPSTR szSrcDir,
+ LPSTR szDestDir,
+ LPSTR szCurDir,
+ LPSTR szTmpFile,
+ PUINT lpuTmpFileLen
+ );
+DWORD
+APIENTRY
+VerInstallFileW(
+ DWORD uFlags,
+ LPWSTR szSrcFileName,
+ LPWSTR szDestFileName,
+ LPWSTR szSrcDir,
+ LPWSTR szDestDir,
+ LPWSTR szCurDir,
+ LPWSTR szTmpFile,
+ PUINT lpuTmpFileLen
+ );
+#ifdef UNICODE
+#define VerInstallFile VerInstallFileW
+#else
+#define VerInstallFile VerInstallFileA
+#endif // !UNICODE
+
+/* Returns size of version info in bytes */
+DWORD
+APIENTRY
+GetFileVersionInfoSizeA(
+ LPSTR lptstrFilename, /* Filename of version stamped file */
+ LPDWORD lpdwHandle
+ ); /* Information for use by GetFileVersionInfo */
+/* Returns size of version info in bytes */
+DWORD
+APIENTRY
+GetFileVersionInfoSizeW(
+ LPWSTR lptstrFilename, /* Filename of version stamped file */
+ LPDWORD lpdwHandle
+ ); /* Information for use by GetFileVersionInfo */
+#ifdef UNICODE
+#define GetFileVersionInfoSize GetFileVersionInfoSizeW
+#else
+#define GetFileVersionInfoSize GetFileVersionInfoSizeA
+#endif // !UNICODE
+
+/* Read version info into buffer */
+BOOL
+APIENTRY
+GetFileVersionInfoA(
+ LPSTR lptstrFilename, /* Filename of version stamped file */
+ DWORD dwHandle, /* Information from GetFileVersionSize */
+ DWORD dwLen, /* Length of buffer for info */
+ LPVOID lpData
+ ); /* Buffer to place the data structure */
+/* Read version info into buffer */
+BOOL
+APIENTRY
+GetFileVersionInfoW(
+ LPWSTR lptstrFilename, /* Filename of version stamped file */
+ DWORD dwHandle, /* Information from GetFileVersionSize */
+ DWORD dwLen, /* Length of buffer for info */
+ LPVOID lpData
+ ); /* Buffer to place the data structure */
+#ifdef UNICODE
+#define GetFileVersionInfo GetFileVersionInfoW
+#else
+#define GetFileVersionInfo GetFileVersionInfoA
+#endif // !UNICODE
+
+DWORD
+APIENTRY
+VerLanguageNameA(
+ DWORD wLang,
+ LPSTR szLang,
+ DWORD nSize
+ );
+DWORD
+APIENTRY
+VerLanguageNameW(
+ DWORD wLang,
+ LPWSTR szLang,
+ DWORD nSize
+ );
+#ifdef UNICODE
+#define VerLanguageName VerLanguageNameW
+#else
+#define VerLanguageName VerLanguageNameA
+#endif // !UNICODE
+
+BOOL
+APIENTRY
+VerQueryValueA(
+ const LPVOID pBlock,
+ LPSTR lpSubBlock,
+ LPVOID * lplpBuffer,
+ PUINT puLen
+ );
+BOOL
+APIENTRY
+VerQueryValueW(
+ const LPVOID pBlock,
+ LPWSTR lpSubBlock,
+ LPVOID * lplpBuffer,
+ PUINT puLen
+ );
+#ifdef UNICODE
+#define VerQueryValue VerQueryValueW
+#else
+#define VerQueryValue VerQueryValueA
+#endif // !UNICODE
+
+#endif /* !RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !VER_H */
diff --git a/public/sdk/inc/winwlx.h b/public/sdk/inc/winwlx.h
new file mode 100644
index 000000000..b64f4103e
--- /dev/null
+++ b/public/sdk/inc/winwlx.h
@@ -0,0 +1,698 @@
+/*++ BUILD Version: 0001 Increment this if a change has global effects
+
+Copyright (c) 1985-1996, Microsoft Corporation
+
+Module Name:
+
+ winwlx.h
+
+Abstract:
+
+ WLX == WinLogon eXtension
+
+ This file contains definitions, data types, and routine prototypes
+ necessary to produce a replacement Graphical Identification aNd
+ Authentication (GINA) DLL for Winlogon.
+
+Author:
+
+ Richard Ward (RichardW) and Jim Kelly (JimK) May-1994
+
+Revision History:
+
+
+
+--*/
+
+#ifndef _WINWLX_
+#define _WINWLX_
+
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// #defines //
+// //
+////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////
+//
+// Revisions of Winlogon API available for use by GINAs
+// Version is two parts: Major revision and minor revision.
+// Major revision is the upper 16-bits, minor is the lower
+// 16-bits.
+//
+
+#define WLX_VERSION_1_0 (0X00010000)
+#define WLX_VERSION_1_1 (0X00010001)
+#define WLX_CURRENT_VERSION (WLX_VERSION_1_1)
+
+
+/////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////
+//
+// Secure attention sequence types
+// These values are passed to routines that have a dwSasType
+// parameter.
+//
+// ALL VALUES FROM 0 TO 127 ARE RESERVED FOR MICROSOFT DEFINITION.
+// VALUES ABOVE 127 ARE RESERVED FOR CUSTOMER DEFINITION.
+//
+// CTRL_ALT_DEL - used to indicate that the standard ctrl-alt-del
+// secure attention sequence has been entered.
+//
+// SCRNSVR_TIMEOUT - used to indicate that keyboard/mouse inactivity
+// has lead to a screensaver activation. It is up to the GINA
+// DLL whether this constitutes a workstation locking event.
+//
+// SCRNSVR_ACTIVITY - used to indicate that keyboard or mouse
+// activity occured while a secure screensaver was active.
+//
+
+#define WLX_SAS_TYPE_TIMEOUT (0)
+#define WLX_SAS_TYPE_CTRL_ALT_DEL (1)
+#define WLX_SAS_TYPE_SCRNSVR_TIMEOUT (2)
+#define WLX_SAS_TYPE_SCRNSVR_ACTIVITY (3)
+#define WLX_SAS_TYPE_USER_LOGOFF (4)
+#define WLX_SAS_TYPE_MAX_MSFT_VALUE (127)
+
+
+
+
+
+/////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////
+//
+// Upon successful logon, the GINA DLL may specify any of the following
+// options to Winlogon (via the dwOptions parameter of the WlxLoggedOutSas()
+// api). When set, these options specify:
+//
+// NO_PROFILE - Winlogon must NOT load a profile for the logged
+// on user. Either the GINA DLL will take care of
+// this activity, or the user does not need a profile.
+//
+
+#define WLX_LOGON_OPT_NO_PROFILE (0x00000001)
+
+
+
+/////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////
+//
+// GINA DLLs are expected to return account information to Winlogon
+// following a successful logon. This information allows Winlogon
+// to support profile loading and supplemental network providers.
+//
+// To allow different sets of profile information to be returned
+// by GINAs over time, the first DWORD of each profile structure
+// is expected to contain a type-identifier. The following constants
+// are the defined profile type identifiers.
+//
+
+//
+// Standard profile is V2_0
+//
+
+#define WLX_PROFILE_TYPE_V1_0 (1)
+#define WLX_PROFILE_TYPE_V2_0 (2)
+
+
+
+
+/////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////
+//
+// WlxLoggedOnSas() and WlxWkstaLockedSas() return an action
+// value to Winlogon directing Winlogon to either remain unchanged
+// or to perform some action (such as force-log the user off).
+// These are the values that may be returned. Note, however, that
+// not all of the values may be returned by both of these api. See
+// the description of each api to see which values are expected from
+// each.
+//
+// LOGON - User has logged on
+// NONE - Don't change the state of the window station.
+// LOCK_WKSTA - Lock the workstation, wait for next SAS.
+// LOGOFF - Log the user off of the workstation.
+// SHUTDOWN - Log the user off and shutdown the machine.
+// PWD_CHANGED - Indicates that the user changed their password. Notify network providers.
+// TASKLIST - Invoke the task list.
+// UNLOCK_WKSTA - Unlock the workstation.
+// FORCE_LOGOFF - Forcibly log the user off.
+//
+
+#define WLX_SAS_ACTION_LOGON (1)
+#define WLX_SAS_ACTION_NONE (2)
+#define WLX_SAS_ACTION_LOCK_WKSTA (3)
+#define WLX_SAS_ACTION_LOGOFF (4)
+#define WLX_SAS_ACTION_SHUTDOWN (5)
+#define WLX_SAS_ACTION_PWD_CHANGED (6)
+#define WLX_SAS_ACTION_TASKLIST (7)
+#define WLX_SAS_ACTION_UNLOCK_WKSTA (8)
+#define WLX_SAS_ACTION_FORCE_LOGOFF (9)
+#define WLX_SAS_ACTION_SHUTDOWN_POWER_OFF (10)
+#define WLX_SAS_ACTION_SHUTDOWN_REBOOT (11)
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Window Messages //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// The WM_SAS is defined as follows
+//
+// The wParam parameter has the SAS Type (above)
+
+#define WLX_WM_SAS (WM_USER + 601)
+
+
+//
+// Dialog return values
+//
+// These may be returned by dialogs started by a GINA dll.
+//
+#define WLX_DLG_SAS 101
+#define WLX_DLG_INPUT_TIMEOUT 102 // Input (keys, etc) timed out
+#define WLX_DLG_SCREEN_SAVER_TIMEOUT 103 // Screen Saver activated
+#define WLX_DLG_USER_LOGOFF 104 // User logged off
+
+
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// #data types //
+// //
+////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////
+//
+// The WLX_PROFILE_* structure is returned from a GINA DLL
+// following authentication. This information is used by Winlogon
+// to support supplemental Network Providers and to load the
+// newly logged-on user's profile.
+//
+// Winlogon is responsible for freeing both the profile structure
+// and the fields within the structure that are marked as separately
+// deallocatable.
+//
+
+typedef struct _WLX_PROFILE_V1_0 {
+
+ //
+ // This field identifies the type of profile being returned by a
+ // GINA DLL. Profile types are defined with the prefix
+ // WLX_PROFILE_TYPE_xxx. It allows Winlogon to typecast the
+ // structure so the remainder of the structure may be referenced.
+ //
+
+ DWORD dwType;
+
+
+
+ //
+ // pathname of profile to load for user.
+ //
+ // The buffer pointed to by this field must be separately allocated.
+ // Winlogon will free the buffer when it is no longer needed.
+ //
+ //
+ PWSTR pszProfile;
+
+} WLX_PROFILE_V1_0, * PWLX_PROFILE_V1_0;
+
+
+typedef struct _WLX_PROFILE_V2_0 {
+
+ //
+ // This field identifies the type of profile being returned by a
+ // GINA DLL. Profile types are defined with the prefix
+ // WLX_PROFILE_TYPE_xxx. It allows Winlogon to typecast the
+ // structure so the remainder of the structure may be referenced.
+ //
+
+ DWORD dwType;
+
+
+
+ //
+ // pathname of profile to load for user.
+ //
+ // This parameter can be NULL. If so, the user has a local
+ // profile only.
+ //
+ // The buffer pointed to by this field must be separately allocated.
+ // Winlogon will free the buffer when it is no longer needed.
+ //
+ //
+
+ PWSTR pszProfile;
+
+
+
+ //
+ // pathname of policy to load for user.
+ //
+ // This parameter can be NULL which prevents network wide policy
+ // from being applied.
+ //
+ // The buffer pointed to by this field must be separately allocated.
+ // Winlogon will free the buffer when it is no longer needed.
+ //
+ //
+
+ PWSTR pszPolicy;
+
+
+ //
+ // pathname of network default user profile
+ //
+ // This parameter can be NULL, which causes the Default User
+ // profile on the local machine to be used.
+ //
+ // The buffer pointed to by this field must be separately allocated.
+ // Winlogon will free the buffer when it is no longer needed.
+ //
+ //
+
+ PWSTR pszNetworkDefaultUserProfile;
+
+
+ //
+ // name of the server which validated the user account
+ //
+ // This is used to enumerate globals groups the user belongs
+ // to for policy support. This parameter can be NULL.
+ //
+ // The buffer pointed to by this field must be separately allocated.
+ // Winlogon will free the buffer when it is no longer needed.
+ //
+ //
+
+ PWSTR pszServerName;
+
+
+ //
+ // pointer to a series of null terminated environment variables
+ //
+ // envname=environment variable value
+ // - or -
+ // envname=%OtherVar%\more text
+ //
+ // Each environment variable is NULL terminated with the last
+ // environment variable double NULL terminated. These variables
+ // are set into the user's initial environment. The environment
+ // variable value can contain other environment variables wrapped
+ // in "%" signs. This parameter can be NULL.
+ //
+ // The buffer pointed to by this field must be separately allocated.
+ // Winlogon will free the buffer when it is no longer needed.
+ //
+ //
+
+ PWSTR pszEnvironment;
+
+} WLX_PROFILE_V2_0, * PWLX_PROFILE_V2_0;
+
+
+
+/////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////
+//
+// The WLX_NPR_NOTIFICATION_INFO structure is returned
+// from a GINA DLL following successful authentication.
+// This information is used by Winlogon to provide
+// identification and authentication information already
+// collected to network providers. Winlogon is
+// responsible for freeing both the main structure and all
+// string and other buffers pointed to from within the
+// structure.
+//
+
+typedef struct _WLX_MPR_NOTIFY_INFO {
+
+ //
+ // The name of the account logged onto (e.g. REDMOND\Joe).
+ // The string pointed to by this field must be separately
+ // allocated and will be separately deallocated by Winlogon.
+ //
+
+ PWSTR pszUserName;
+
+ //
+ // The string pointed to by this field must be separately
+ // allocated and will be separately deallocated by Winlogon.
+ //
+
+ PWSTR pszDomain;
+
+ //
+ // Cleartext password of the user account. If the OldPassword
+ // field is non-null, then this field contains the new password
+ // in a password change operation. The string pointed to by
+ // this field must be separately allocated and will be seperately
+ // deallocated by Winlogon.
+ //
+
+ PWSTR pszPassword;
+
+ //
+ // Cleartext old password of the user account whose password
+ // has just been changed. The Password field contains the new
+ // password. The string pointed to by this field must be
+ // separately allocated and will be separately deallocated by
+ // Winlogon.
+ //
+
+ PWSTR pszOldPassword;
+
+} WLX_MPR_NOTIFY_INFO, * PWLX_MPR_NOTIFY_INFO;
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Services that replacement GINAs ** MUST ** provide //
+// //
+////////////////////////////////////////////////////////////////////////
+
+
+
+BOOL
+WINAPI
+WlxNegotiate(
+ DWORD dwWinlogonVersion,
+ PDWORD pdwDllVersion
+ );
+
+BOOL
+WINAPI
+WlxInitialize(
+ LPWSTR lpWinsta,
+ HANDLE hWlx,
+ PVOID pvReserved,
+ PVOID pWinlogonFunctions,
+ PVOID * pWlxContext
+ );
+
+VOID
+WINAPI
+WlxDisplaySASNotice(
+ PVOID pWlxContext
+ );
+
+
+int
+WINAPI
+WlxLoggedOutSAS(
+ PVOID pWlxContext,
+ DWORD dwSasType,
+ PLUID pAuthenticationId,
+ PSID pLogonSid,
+ PDWORD pdwOptions,
+ PHANDLE phToken,
+ PWLX_MPR_NOTIFY_INFO pNprNotifyInfo,
+ PVOID * pProfile
+ );
+
+BOOL
+WINAPI
+WlxActivateUserShell(
+ PVOID pWlxContext,
+ PWSTR pszDesktopName,
+ PWSTR pszMprLogonScript,
+ PVOID pEnvironment
+ );
+
+int
+WINAPI
+WlxLoggedOnSAS(
+ PVOID pWlxContext,
+ DWORD dwSasType,
+ PVOID pReserved
+ );
+
+VOID
+WINAPI
+WlxDisplayLockedNotice(
+ PVOID pWlxContext
+ );
+
+int
+WINAPI
+WlxWkstaLockedSAS(
+ PVOID pWlxContext,
+ DWORD dwSasType
+ );
+
+BOOL
+WINAPI
+WlxIsLockOk(
+ PVOID pWlxContext
+ );
+
+BOOL
+WINAPI
+WlxIsLogoffOk(
+ PVOID pWlxContext
+ );
+
+VOID
+WINAPI
+WlxLogoff(
+ PVOID pWlxContext
+ );
+
+
+VOID
+WINAPI
+WlxShutdown(
+ PVOID pWlxContext,
+ DWORD ShutdownType
+ );
+
+
+//
+// NEW for version 1.1
+//
+BOOL
+WINAPI
+WlxScreenSaverNotify(
+ PVOID pWlxContext,
+ BOOL * pSecure);
+
+BOOL
+WINAPI
+WlxStartApplication(
+ PVOID pWlxContext,
+ PWSTR pszDesktopName,
+ PVOID pEnvironment,
+ PWSTR pszCmdLine
+ );
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Services that Winlogon provides //
+// //
+////////////////////////////////////////////////////////////////////////
+
+typedef struct _WLX_DESKTOP {
+ DWORD Size;
+ DWORD Flags;
+ HDESK hDesktop;
+ PWSTR pszDesktopName;
+} WLX_DESKTOP, * PWLX_DESKTOP;
+
+#define WLX_DESKTOP_NAME 0x00000001 // Name present
+#define WLX_DESKTOP_HANDLE 0x00000002 // Handle present
+
+
+
+typedef VOID
+(WINAPI * PWLX_USE_CTRL_ALT_DEL)(
+ HANDLE hWlx
+ );
+
+typedef VOID
+(WINAPI * PWLX_SET_CONTEXT_POINTER)(
+ HANDLE hWlx,
+ PVOID pWlxContext
+ );
+
+typedef VOID
+(WINAPI * PWLX_SAS_NOTIFY)(
+ HANDLE hWlx,
+ DWORD dwSasType
+ );
+
+typedef BOOL
+(WINAPI * PWLX_SET_TIMEOUT)(
+ HANDLE hWlx,
+ DWORD Timeout);
+
+typedef int
+(WINAPI * PWLX_ASSIGN_SHELL_PROTECTION)(
+ HANDLE hWlx,
+ HANDLE hToken,
+ HANDLE hProcess,
+ HANDLE hThread
+ );
+
+typedef int
+(WINAPI * PWLX_MESSAGE_BOX)(
+ HANDLE hWlx,
+ HWND hwndOwner,
+ LPWSTR lpszText,
+ LPWSTR lpszTitle,
+ UINT fuStyle
+ );
+
+typedef int
+(WINAPI * PWLX_DIALOG_BOX)(
+ HANDLE hWlx,
+ HANDLE hInst,
+ LPWSTR lpszTemplate,
+ HWND hwndOwner,
+ DLGPROC dlgprc
+ );
+
+typedef int
+(WINAPI * PWLX_DIALOG_BOX_INDIRECT)(
+ HANDLE hWlx,
+ HANDLE hInst,
+ LPCDLGTEMPLATE hDialogTemplate,
+ HWND hwndOwner,
+ DLGPROC dlgprc
+ );
+
+typedef int
+(WINAPI * PWLX_DIALOG_BOX_PARAM)(
+ HANDLE hWlx,
+ HANDLE hInst,
+ LPWSTR lpszTemplate,
+ HWND hwndOwner,
+ DLGPROC dlgprc,
+ LPARAM dwInitParam
+ );
+
+typedef int
+(WINAPI * PWLX_DIALOG_BOX_INDIRECT_PARAM)(
+ HANDLE hWlx,
+ HANDLE hInst,
+ LPCDLGTEMPLATE hDialogTemplate,
+ HWND hwndOwner,
+ DLGPROC dlgprc,
+ LPARAM dwInitParam
+ );
+
+typedef int
+(WINAPI * PWLX_SWITCH_DESKTOP_TO_USER)(
+ HANDLE hWlx);
+
+typedef int
+(WINAPI * PWLX_SWITCH_DESKTOP_TO_WINLOGON)(
+ HANDLE hWlx);
+
+
+typedef int
+(WINAPI * PWLX_CHANGE_PASSWORD_NOTIFY)(
+ HANDLE hWlx,
+ PWLX_MPR_NOTIFY_INFO pMprInfo,
+ DWORD dwChangeInfo
+ );
+
+typedef BOOL
+(WINAPI * PWLX_GET_SOURCE_DESKTOP)(
+ HANDLE hWlx,
+ PWLX_DESKTOP * ppDesktop);
+
+typedef BOOL
+(WINAPI * PWLX_SET_RETURN_DESKTOP)(
+ HANDLE hWlx,
+ PWLX_DESKTOP pDesktop);
+
+typedef BOOL
+(WINAPI * PWLX_CREATE_USER_DESKTOP)(
+ HANDLE hWlx,
+ HANDLE hToken,
+ DWORD Flags,
+ PWSTR pszDesktopName,
+ PWLX_DESKTOP * ppDesktop);
+
+#define WLX_CREATE_INSTANCE_ONLY 0x00000001
+#define WLX_CREATE_USER 0x00000002
+
+typedef int
+(WINAPI * PWLX_CHANGE_PASSWORD_NOTIFY_EX)(
+ HANDLE hWlx,
+ PWLX_MPR_NOTIFY_INFO pMprInfo,
+ DWORD dwChangeInfo,
+ PWSTR ProviderName,
+ PVOID Reserved);
+
+
+////////////////////////////////////////////////////////////////////////
+// //
+// Function dispatch tables. //
+// One of the following tables will be passed to the GINA DLL //
+// in the WlxInitialize() call during initialization. //
+// //
+// NOTE: FOR THIS REVISION THERE IS ONLY ONE TABLE. DEVELOPERS //
+// SHOULD EXPECT MORE IN FUTURE RELEASE. //
+// //
+////////////////////////////////////////////////////////////////////////
+
+//
+// Dispatch table for version WLX_VERSION_1_0
+//
+
+typedef struct _WLX_DISPATCH_VERSION_1_0 {
+ PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
+ PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
+ PWLX_SAS_NOTIFY WlxSasNotify;
+ PWLX_SET_TIMEOUT WlxSetTimeout;
+ PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
+ PWLX_MESSAGE_BOX WlxMessageBox;
+ PWLX_DIALOG_BOX WlxDialogBox;
+ PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
+ PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
+ PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
+ PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
+ PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
+ PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
+} WLX_DISPATCH_VERSION_1_0, *PWLX_DISPATCH_VERSION_1_0;
+
+typedef struct _WLX_DISPATCH_VERSION_1_1 {
+ PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
+ PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
+ PWLX_SAS_NOTIFY WlxSasNotify;
+ PWLX_SET_TIMEOUT WlxSetTimeout;
+ PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
+ PWLX_MESSAGE_BOX WlxMessageBox;
+ PWLX_DIALOG_BOX WlxDialogBox;
+ PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
+ PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
+ PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
+ PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
+ PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
+ PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
+ PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
+ PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
+ PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
+ PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
+} WLX_DISPATCH_VERSION_1_1, * PWLX_DISPATCH_VERSION_1_1;
+
+
+
+#endif /* _WINWLX_ */
diff --git a/public/sdk/inc/wnapidec.inc b/public/sdk/inc/wnapidec.inc
new file mode 100644
index 000000000..2ec9a8853
--- /dev/null
+++ b/public/sdk/inc/wnapidec.inc
@@ -0,0 +1,88 @@
+' ------------------------------------------------------------------------
+' WNAPIDEC.INC -- Windows 3.0 API Declarations for 32-bit FastTest
+'
+' Copyright (C) 1991-1992 Microsoft Corporation
+'
+' The following are provided for sample purposes only. You should only
+' copy the ones you use into your code in order to save code space and
+' parse time.
+'
+' You have a royalty-free right to use, modify, reproduce and distribute
+' this file (and/or any modified version) in any way you find useful,
+' provided that you agree Microsoft has no warranty, obligation or
+' liability for its contents. Refer to the Microsoft Windows Programmer's
+' Reference for further information.
+'
+' ------------------------------------------------------------------------
+'$define _WNAPIDEC ' Define this so other includes don't redefine
+ ' stuff defined in this include file
+
+'$ifndef _WINUSER
+
+' Definitions stolen from WINUSER.INC
+'-----------------------------------------------------------------------------
+Type RECT
+ wleft As Integer
+ top As Integer
+ wright As Integer
+ bottom As Integer
+End Type
+
+Type POINT
+ x As Integer
+ y As Integer
+End Type
+
+Declare Function FindWindow Lib "User32" ALIAS "FindWindowA" (lpClassName As Any, lpWindowName As Any) As Integer
+Declare Function GetActiveWindow Lib "User32" ALIAS "GetActiveWindow" () As Integer
+Declare Sub GetClientRect Lib "User32" ALIAS "GetClientRect" (hWnd%, lpRect As RECT)
+Declare Function GetDesktopWindow Lib "User32" ALIAS "GetDesktopWindow" () As Integer
+Declare Function GetFocus Lib "User32" ALIAS "GetFocus" () As Integer
+Declare Function GetForegroundWindow Lib "User32" ALIAS "GetForegroundWindow" () As Integer
+Declare Function GetSystemMetrics Lib "User32" ALIAS "GetSystemMetrics" (nIndex%) As Integer
+Declare Function GetWindowLong Lib "User32" ALIAS "GetWindowLongA" (hWnd%, nIndex%) As Long
+Declare Sub GetWindowRect Lib "User32" ALIAS "GetWindowRect" (hWnd%, lpRect As RECT)
+Declare Function GetWindowText Lib "User32" ALIAS "GetWindowTextA" (hWnd%, lpString$, nMaxCount%) As Integer
+Declare Function IsZoomed Lib "User32" ALIAS "IsZoomed" (hWnd%) As Integer
+Declare Function MessageBox Lib "User32" ALIAS "MessageBoxA" (hWndParent%, lpText$, lpCaption$, wType%) As Integer
+Declare Function SendMessage Lib "User32" ALIAS "SendMessageA" (hWnd%, wMsg%, wParam%, lParam As Any) As Long
+Declare Function SetActiveWindow Lib "User32" ALIAS "SetActiveWindow" (hWnd%) As Integer
+Declare Function SetFocus Lib "User32" ALIAS "SetFocus" (hWnd%) As Integer
+Declare Function SetForegroundWindow Lib "User32" ALIAS "SetForegroundWindow" (hWnd%) As Integer
+Declare Function SetWindowPos Lib "User32" ALIAS "SetWindowPos" (h%, ha%, x%, y%, cx%, cy%, f%) As Integer
+Declare Function ShowWindow Lib "User32" ALIAS "ShowWindow" (hWnd%, nCmdShow%) As Integer
+
+
+' ShowWindow() Commands
+Const SW_HIDE = 0
+Const SW_SHOWNORMAL = 1
+Const SW_NORMAL = 1
+Const SW_SHOWMINIMIZED = 2
+Const SW_SHOWMAXIMIZED = 3
+Const SW_MAXIMIZE = 3
+Const SW_SHOWNOACTIVATE = 4
+Const SW_SHOW = 5
+Const SW_MINIMIZE = 6
+Const SW_SHOWMINNOACTIVE = 7
+Const SW_SHOWNA = 8
+Const SW_RESTORE = 9
+
+' Window Styles
+Const WS_MINIMIZE = &H20000000
+Const WS_MAXIMIZE = &H1000000
+
+
+' Window field offsets for GetWindowLong()
+Const GWL_WNDPROC = (-4)
+Const GWL_STYLE = (-16)
+Const GWL_EXSTYLE = (-20)
+
+'$endif
+
+'$ifndef _WINKERN
+
+' Definitions stolen from WINKERN.INC
+'-----------------------------------------------------------------------------
+Declare Function WinExec Lib "Kernel32" ALIAS "WinExec" (lpCmdLine$, nCmdShow%) As Integer
+
+'$endif
diff --git a/public/sdk/inc/wownt16.h b/public/sdk/inc/wownt16.h
new file mode 100644
index 000000000..f6520ef74
--- /dev/null
+++ b/public/sdk/inc/wownt16.h
@@ -0,0 +1,120 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1995-1996, Microsoft Corporation
+
+Module Name:
+
+ wownt16.h
+
+Abstract:
+
+ Procedure declarations for functions in WOW32.DLL callable by
+ 3rd-party 16-bit thunking code.
+
+--*/
+
+#ifndef _WOWNT16_
+#define _WOWNT16_
+
+//
+// 16:16 -> 0:32 Pointer translation.
+//
+// GetVDMPointer32W will convert the passed in 16-bit address
+// to the equivalent 32-bit flat pointer. The upper 16 bits
+// of the address are treated according to the value passed in
+// fMode: if fMode = 1, then the hiword of vp is used as a
+// protected mode selector. Otherwise it is used as a real mode
+// segment value.
+// The lower 16 bits are treated as the offset.
+//
+// The return value is 0 if the selector is invalid.
+//
+// NOTE: Limit checking is not performed in the retail build
+// of Windows NT. It is performed in the checked (debug) build
+// of WOW32.DLL, which will cause 0 to be returned when the
+// limit is exceeded by the supplied offset.
+//
+
+DWORD FAR PASCAL GetVDMPointer32W(LPVOID vp, UINT fMode);
+
+
+//
+// Win32 module management.
+//
+// The following routines accept parameters that correspond directly
+// to the respective Win32 API function calls that they invoke. Refer
+// to the Win32 reference documentation for more detail.
+
+DWORD FAR PASCAL LoadLibraryEx32W(LPCSTR lpszLibFile, DWORD hFile, DWORD dwFlags);
+DWORD FAR PASCAL GetProcAddress32W(DWORD hModule, LPCSTR lpszProc);
+DWORD FAR PASCAL FreeLibrary32W(DWORD hLibModule);
+
+//
+// Generic Thunk Routine:
+//
+// CallProc32W
+//
+// Transitions to 32 bits and calls specified routine
+//
+// This routine can pass a variable number of arguments, up to 32, to the
+// target 32-bit routine. These arguments are given to CallProc32W following
+// the 3 required parameters.
+//
+// DWORD cParams - Number of optional DWORD parameters (0-32)
+//
+// LPVOID fAddressConvert - Bit Field, for 16:16 address Convertion. The
+// optional parameters can be automatically converted
+// from a 16:16 address format to flat by specifying
+// a 1 bit in the corresponding position in this mask.
+// eg (bit 1 means convert parameter 1 from 16:16
+// to flat address before calling routine)
+//
+// DWORD lpProcAddress - 32 bit native address to call (use LoadLibraryEx32W
+// and GetProcAddress32W to get this address).
+//
+// Returns:
+// What ever the API returned on 32 bit side in AX:DX
+//
+// Error Returns:
+// AX = 0, more than 32 parameters.
+//
+//
+// The function prototype must be declared by the application source code
+// in the following format:
+//
+// DWORD FAR PASCAL CallProc32W( DWORD p1, ... , DWORD lpProcAddress,
+// DWORD fAddressConvert, DWORD cParams);
+//
+// where the value in cParams must match the actual number of optional
+// parameters (p1-pn) given AND the "DWORD p1, ..." must be replaced by
+// the correct number of parameters being passed. For example, passing 3
+// parameter would simply require the removal of the ... and it insertion of
+// "DWORD p2, DWORD p3" instead. The fAddressConvert parameter uses bit 1
+// for the last parameter (p3 in our example), with bit 2 for the next to last,
+// etc.
+//
+// Generic Thunk Routine:
+//
+// CallProcEx32W
+//
+// Transitions to 32 bits and calls specified routine
+//
+// Similar to the CallProc32W function, the CallProcEx32W is an equivalent
+// function that is C calling convention and allows easier and more flexible
+// prototyping. See the prototype below. The fAddressConvert parameter uses
+// bit 1 for the 1st parameter, bit 2 for the 2nd parameter, etc.
+//
+// Both CallProc32W and CallProcEx32W accept a flag OR'd with the parameter
+// count to indicate the calling convention of the function in 32 bits.
+// For example, to call a cdecl function in 32-bits with 1 parameter, it would
+// look like this:
+//
+// dwResult = CallProcEx32W( CPEX_DEST_CDECL | 1, 0, dwfn32, p1 );
+//
+
+DWORD FAR CDECL CallProcEx32W( DWORD, DWORD, DWORD, ... );
+
+#define CPEX_DEST_STDCALL 0x00000000L
+#define CPEX_DEST_CDECL 0x80000000L
+
+#endif /* !_WOWNT16_ */
diff --git a/public/sdk/inc/wownt32.h b/public/sdk/inc/wownt32.h
new file mode 100644
index 000000000..8a0e2a59f
--- /dev/null
+++ b/public/sdk/inc/wownt32.h
@@ -0,0 +1,254 @@
+/*++ BUILD Version: 0001 // Increment this if a change has global effects
+
+Copyright (c) 1995-1996, Microsoft Corporation
+
+Module Name:
+
+ wownt32.h
+
+Abstract:
+
+ Procedure declarations for functions in WOW32.DLL callable by
+ 3rd-party 32-bit thunking code.
+
+--*/
+
+#ifndef _WOWNT32_
+#define _WOWNT32_
+
+//
+// 16:16 -> 0:32 Pointer translation.
+//
+// WOWGetVDMPointer will convert the passed in 16-bit address
+// to the equivalent 32-bit flat pointer. If fProtectedMode
+// is TRUE, the function treats the upper 16 bits as a selector
+// in the local descriptor table. If fProtectedMode is FALSE,
+// the upper 16 bits are treated as a real-mode segment value.
+// In either case the lower 16 bits are treated as the offset.
+//
+// The return value is NULL if the selector is invalid.
+//
+// NOTE: Limit checking is not performed in the retail build
+// of Windows NT. It is performed in the checked (debug) build
+// of WOW32.DLL, which will cause NULL to be returned when the
+// limit is exceeded by the supplied offset.
+//
+
+LPVOID WINAPI WOWGetVDMPointer(DWORD vp, DWORD dwBytes,
+ BOOL fProtectedMode);
+
+//
+// The following two functions are here for compatibility with
+// Windows 95. On Win95, the global heap can be rearranged,
+// invalidating flat pointers returned by WOWGetVDMPointer, while
+// a thunk is executing. On Windows NT, the 16-bit VDM is completely
+// halted while a thunk executes, so the only way the heap will
+// be rearranged is if a callback is made to Win16 code.
+//
+// The Win95 versions of these functions call GlobalFix to
+// lock down a segment's flat address, and GlobalUnfix to
+// release the segment.
+//
+// The Windows NT implementations of these functions do *not*
+// call GlobalFix/GlobalUnfix on the segment, because there
+// will not be any heap motion unless a callback occurs.
+// If your thunk does callback to the 16-bit side, be sure
+// to discard flat pointers and call WOWGetVDMPointer again
+// to be sure the flat address is correct.
+//
+
+LPVOID WINAPI WOWGetVDMPointerFix(DWORD vp, DWORD dwBytes,
+ BOOL fProtectedMode);
+VOID WINAPI WOWGetVDMPointerUnfix(DWORD vp);
+
+
+//
+// Win16 memory management.
+//
+// These functions can be used to manage memory in the Win16
+// heap. The following four functions are identical to their
+// Win16 counterparts, except that they are called from Win32
+// code.
+//
+
+WORD WINAPI WOWGlobalAlloc16(WORD wFlags, DWORD cb);
+WORD WINAPI WOWGlobalFree16(WORD hMem);
+DWORD WINAPI WOWGlobalLock16(WORD hMem);
+BOOL WINAPI WOWGlobalUnlock16(WORD hMem);
+
+//
+// The following three functions combine two common operations in
+// one switch to 16-bit mode.
+//
+
+DWORD WINAPI WOWGlobalAllocLock16(WORD wFlags, DWORD cb, WORD *phMem);
+WORD WINAPI WOWGlobalUnlockFree16(DWORD vpMem);
+DWORD WINAPI WOWGlobalLockSize16(WORD hMem, PDWORD pcb);
+
+//
+// Yielding the Win16 nonpreemptive scheduler
+//
+// The following two functions are provided for Win32 code called
+// via Generic Thunks which needs to yield the Win16 scheduler so
+// that tasks in that VDM can execute while the thunk waits for
+// something to complete. These two functions are functionally
+// identical to calling back to 16-bit code which calls Yield or
+// DirectedYield.
+//
+
+VOID WINAPI WOWYield16(VOID);
+VOID WINAPI WOWDirectedYield16(WORD htask16);
+
+
+//
+// 16 <--> 32 Handle mapping functions.
+//
+// NOTE: While some of these functions perform trivial
+// conversions, these functions must be used to maintain
+// compatibility with future versions of Windows NT which
+// may require different handle mapping.
+//
+
+typedef enum _WOW_HANDLE_TYPE { /* WOW */
+ WOW_TYPE_HWND,
+ WOW_TYPE_HMENU,
+ WOW_TYPE_HDWP,
+ WOW_TYPE_HDROP,
+ WOW_TYPE_HDC,
+ WOW_TYPE_HFONT,
+ WOW_TYPE_HMETAFILE,
+ WOW_TYPE_HRGN,
+ WOW_TYPE_HBITMAP,
+ WOW_TYPE_HBRUSH,
+ WOW_TYPE_HPALETTE,
+ WOW_TYPE_HPEN,
+ WOW_TYPE_HACCEL,
+ WOW_TYPE_HTASK,
+ WOW_TYPE_FULLHWND
+} WOW_HANDLE_TYPE;
+
+HANDLE WINAPI WOWHandle32 (WORD, WOW_HANDLE_TYPE);
+WORD WINAPI WOWHandle16 (HANDLE, WOW_HANDLE_TYPE);
+
+#define HWND_32(h16) ((HWND) (WOWHandle32(h16, WOW_TYPE_HWND)))
+#define HMENU_32(h16) ((HMENU) (WOWHandle32(h16, WOW_TYPE_HMENU)))
+#define HDWP_32(h16) ((HDWP) (WOWHandle32(h16, WOW_TYPE_HDWP)))
+#define HDROP_32(h16) ((HDROP) (WOWHandle32(h16, WOW_TYPE_HDROP)))
+#define HDC_32(h16) ((HDC) (WOWHandle32(h16, WOW_TYPE_HDC)))
+#define HFONT_32(h16) ((HFONT) (WOWHandle32(h16, WOW_TYPE_HFONT)))
+#define HMETAFILE_32(h16) ((HMETAFILE) (WOWHandle32(h16, WOW_TYPE_HMETAFILE)))
+#define HRGN_32(h16) ((HRGN) (WOWHandle32(h16, WOW_TYPE_HRGN)))
+#define HBITMAP_32(h16) ((HBITMAP) (WOWHandle32(h16, WOW_TYPE_HBITMAP)))
+#define HBRUSH_32(h16) ((HBRUSH) (WOWHandle32(h16, WOW_TYPE_HBRUSH)))
+#define HPALETTE_32(h16) ((HPALETTE) (WOWHandle32(h16, WOW_TYPE_HPALETTE)))
+#define HPEN_32(h16) ((HPEN) (WOWHandle32(h16, WOW_TYPE_HPEN)))
+#define HACCEL_32(h16) ((HACCEL) (WOWHandle32(h16, WOW_TYPE_HACCEL)))
+#define HTASK_32(h16) ((DWORD) (WOWHandle32(h16, WOW_TYPE_HTASK)))
+#define FULLHWND_32(h16) ((HWND) (WOWHandle32(h16, WOW_TYPE_FULLHWND)))
+
+#define HWND_16(h32) (WOWHandle16(h32, WOW_TYPE_HWND))
+#define HMENU_16(h32) (WOWHandle16(h32, WOW_TYPE_HMENU))
+#define HDWP_16(h32) (WOWHandle16(h32, WOW_TYPE_HDWP))
+#define HDROP_16(h32) (WOWHandle16(h32, WOW_TYPE_HDROP))
+#define HDC_16(h32) (WOWHandle16(h32, WOW_TYPE_HDC))
+#define HFONT_16(h32) (WOWHandle16(h32, WOW_TYPE_HFONT))
+#define HMETAFILE_16(h32) (WOWHandle16(h32, WOW_TYPE_HMETAFILE))
+#define HRGN_16(h32) (WOWHandle16(h32, WOW_TYPE_HRGN))
+#define HBITMAP_16(h32) (WOWHandle16(h32, WOW_TYPE_HBITMAP))
+#define HBRUSH_16(h32) (WOWHandle16(h32, WOW_TYPE_HBRUSH))
+#define HPALETTE_16(h32) (WOWHandle16(h32, WOW_TYPE_HPALETTE))
+#define HPEN_16(h32) (WOWHandle16(h32, WOW_TYPE_HPEN))
+#define HACCEL_16(h32) (WOWHandle16(h32, WOW_TYPE_HACCEL))
+#define HTASK_16(h32) (WOWHandle16(h32, WOW_TYPE_HTASK))
+
+//
+// Generic Callbacks.
+//
+// WOWCallback16 can be used in Win32 code called
+// from 16-bit (such as by using Generic Thunks) to call back to
+// the 16-bit side. The function called must be declared similarly
+// to the following:
+//
+// LONG FAR PASCAL CallbackRoutine(DWORD dwParam);
+//
+// If you are passing a pointer, declare the parameter as such:
+//
+// LONG FAR PASCAL CallbackRoutine(VOID FAR *vp);
+//
+// NOTE: If you are passing a pointer, you'll need to get the
+// pointer using WOWGlobalAlloc16 or WOWGlobalAllocLock16
+//
+// If the function called returns a WORD instead of a DWORD, the
+// upper 16 bits of the return value is undefined. Similarly, if
+// the function called has no return value, the entire return value
+// is undefined.
+//
+// WOWCallback16Ex allows any combination of arguments up to
+// WCB16_MAX_CBARGS bytes total to be passed to the 16-bit routine.
+// cbArgs is used to properly clean up the 16-bit stack after calling
+// the routine. Regardless of the value of cbArgs, WCB16_MAX_CBARGS
+// bytes will always be copied from pArgs to the 16-bit stack. If
+// pArgs is less than WCB16_MAX_CBARGS bytes from the end of a page,
+// and the next page is inaccessible, WOWCallback16Ex will incur an
+// access violation.
+//
+// If cbArgs is larger than the WCB16_MAX_ARGS which the running
+// system supports, the function returns FALSE and GetLastError
+// returns ERROR_INVALID_PARAMETER. Otherwise the function
+// returns TRUE and the DWORD pointed to by pdwRetCode contains
+// the return code from the callback routine. If the callback
+// routine returns a WORD, the HIWORD of the return code is
+// undefined and should be ignored using LOWORD(dwRetCode).
+//
+// WOWCallback16Ex can call routines using the PASCAL and CDECL
+// calling conventions. The default is to use the PASCAL
+// calling convention. To use CDECL, pass WCB16_CDECL in the
+// dwFlags parameter.
+//
+// The arguments pointed to by pArgs must be in the correct
+// order for the callback routine's calling convention.
+// To call the PASCAL routine SetWindowText,
+//
+// LONG FAR PASCAL SetWindowText(HWND hwnd, LPCSTR lpsz);
+//
+// pArgs would point to an array of words:
+//
+// WORD SetWindowTextArgs[] = {OFFSETOF(lpsz), SELECTOROF(lpsz), hwnd};
+//
+// In other words, the arguments are placed in the array in reverse
+// order with the least significant word first for DWORDs and offset
+// first for FAR pointers.
+//
+// To call the CDECL routine wsprintf, for example
+//
+// LPSTR lpszFormat = "%d %s";
+// int _cdecl wsprintf(lpsz, lpszFormat, nValue. lpszString);
+//
+// pArgs would point to the array:
+//
+// WORD wsprintfArgs[] = {OFFSETOF(lpsz), SELECTOROF(lpsz),
+// OFFSETOF(lpszFormat), SELECTOROF(lpszFormat),
+// nValue,
+// OFFSETOF(lpszString), SELECTOROF(lpszString)};
+//
+// In other words, the arguments are placed in the array in the order
+// listed in the function prototype with the least significant word
+// first for DWORDs and offset first for FAR pointers.
+//
+
+DWORD WINAPI WOWCallback16(DWORD vpfn16, DWORD dwParam);
+
+#define WCB16_MAX_CBARGS (16)
+
+#define WCB16_PASCAL (0x0)
+#define WCB16_CDECL (0x1)
+
+BOOL WINAPI WOWCallback16Ex(
+ DWORD vpfn16,
+ DWORD dwFlags,
+ DWORD cbArgs,
+ PVOID pArgs,
+ PDWORD pdwRetCode
+ );
+
+#endif /* !_WOWNT32_ */
diff --git a/public/sdk/inc/ws2spi.h b/public/sdk/inc/ws2spi.h
new file mode 100644
index 000000000..7855ba327
--- /dev/null
+++ b/public/sdk/inc/ws2spi.h
@@ -0,0 +1,955 @@
+/* WS2SPI.H -- definitions to be used with the WinSock service provider.
+ *
+ * This header file corresponds to version 2.2.x of the WinSock SPI
+ * specification.
+ *
+ * This file includes parts which are Copyright (c) 1982-1986 Regents
+ * of the University of California. All rights reserved. The
+ * Berkeley Software License Agreement specifies the terms and
+ * conditions for redistribution.
+ */
+
+#ifndef _WINSOCK2SPI_
+#define _WINSOCK2SPI_
+
+/*
+ * Ensure structures are packed consistently.
+ */
+
+#include <pshpack4.h>
+
+/*
+ * Pull in WINSOCK2.H if necessary
+ */
+
+#ifndef _WINSOCK2API_
+#include <winsock2.h>
+#endif /* _WINSOCK2API_ */
+
+#define WSPDESCRIPTION_LEN 255
+
+typedef struct WSPData {
+ WORD wVersion;
+ WORD wHighVersion;
+ WCHAR szDescription[WSPDESCRIPTION_LEN+1];
+} WSPDATA, FAR * LPWSPDATA;
+
+typedef struct _WSATHREADID {
+ HANDLE ThreadHandle;
+ DWORD Reserved;
+} WSATHREADID, FAR * LPWSATHREADID;
+
+/*
+ * SPI function linkage.
+ */
+
+#define WSPAPI WSAAPI
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pointer to a blocking callback. A pointer to a blocking callback is
+ * returned from the WPUQueryBlockingCallback() upcall. Note that this
+ * function's signature is not identical to an application's blocking
+ * hook function.
+ */
+
+typedef
+BOOL
+(CALLBACK FAR * LPBLOCKINGCALLBACK)(
+ DWORD dwContext
+ );
+
+/*
+ * Pointer to a user APC function. This is used as a parameter to the
+ * WPUQueueUserApc() upcall. Note that this function's signature is not
+ * identical to an application's completion routine.
+ */
+
+typedef
+VOID
+(CALLBACK FAR * LPWSAUSERAPC)(
+ DWORD dwContext
+ );
+
+/*
+ * Pointers to the individual entries in a service provider's proc table.
+ */
+
+typedef
+SOCKET
+(WSPAPI * LPWSPACCEPT)(
+ SOCKET s,
+ struct sockaddr FAR * addr,
+ LPINT addrlen,
+ LPCONDITIONPROC lpfnCondition,
+ DWORD dwCallbackData,
+ LPINT lpErrno
+ );
+
+typedef
+INT
+(WSPAPI * LPWSPADDRESSTOSTRING)(
+ LPSOCKADDR lpsaAddress,
+ DWORD dwAddressLength,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ LPWSTR lpszAddressString,
+ LPDWORD lpdwAddressStringLength,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPASYNCSELECT)(
+ SOCKET s,
+ HWND hWnd,
+ unsigned int wMsg,
+ long lEvent,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPBIND)(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPCANCELBLOCKINGCALL)(
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPCLEANUP)(
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPCLOSESOCKET)(
+ SOCKET s,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPCONNECT)(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen,
+ LPWSABUF lpCallerData,
+ LPWSABUF lpCalleeData,
+ LPQOS lpSQOS,
+ LPQOS lpGQOS,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPDUPLICATESOCKET)(
+ SOCKET s,
+ DWORD dwProcessId,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPENUMNETWORKEVENTS)(
+ SOCKET s,
+ WSAEVENT hEventObject,
+ LPWSANETWORKEVENTS lpNetworkEvents,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPEVENTSELECT)(
+ SOCKET s,
+ WSAEVENT hEventObject,
+ long lNetworkEvents,
+ LPINT lpErrno
+ );
+
+typedef
+BOOL
+(WSPAPI * LPWSPGETOVERLAPPEDRESULT)(
+ SOCKET s,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPDWORD lpcbTransfer,
+ BOOL fWait,
+ LPDWORD lpdwFlags,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPGETPEERNAME)(
+ SOCKET s,
+ struct sockaddr FAR * name,
+ LPINT namelen,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPGETSOCKNAME)(
+ SOCKET s,
+ struct sockaddr FAR * name,
+ LPINT namelen,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPGETSOCKOPT)(
+ SOCKET s,
+ int level,
+ int optname,
+ char FAR * optval,
+ LPINT optlen,
+ LPINT lpErrno
+ );
+
+typedef
+BOOL
+(WSPAPI * LPWSPGETQOSBYNAME)(
+ SOCKET s,
+ LPWSABUF lpQOSName,
+ LPQOS lpQOS,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPIOCTL)(
+ SOCKET s,
+ DWORD dwIoControlCode,
+ LPVOID lpvInBuffer,
+ DWORD cbInBuffer,
+ LPVOID lpvOutBuffer,
+ DWORD cbOutBuffer,
+ LPDWORD lpcbBytesReturned,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+SOCKET
+(WSPAPI * LPWSPJOINLEAF)(
+ SOCKET s,
+ const struct sockaddr FAR * name,
+ int namelen,
+ LPWSABUF lpCallerData,
+ LPWSABUF lpCalleeData,
+ LPQOS lpSQOS,
+ LPQOS lpGQOS,
+ DWORD dwFlags,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPLISTEN)(
+ SOCKET s,
+ int backlog,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPRECV)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesRecvd,
+ LPDWORD lpFlags,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPRECVDISCONNECT)(
+ SOCKET s,
+ LPWSABUF lpInboundDisconnectData,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPRECVFROM)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesRecvd,
+ LPDWORD lpFlags,
+ struct sockaddr FAR * lpFrom,
+ LPINT lpFromlen,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSELECT)(
+ int nfds,
+ fd_set FAR * readfds,
+ fd_set FAR * writefds,
+ fd_set FAR * exceptfds,
+ const struct timeval FAR * timeout,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSEND)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesSent,
+ DWORD dwFlags,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSENDDISCONNECT)(
+ SOCKET s,
+ LPWSABUF lpOutboundDisconnectData,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSENDTO)(
+ SOCKET s,
+ LPWSABUF lpBuffers,
+ DWORD dwBufferCount,
+ LPDWORD lpNumberOfBytesSent,
+ DWORD dwFlags,
+ const struct sockaddr FAR * lpTo,
+ int iTolen,
+ LPWSAOVERLAPPED lpOverlapped,
+ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSETSOCKOPT)(
+ SOCKET s,
+ int level,
+ int optname,
+ const char FAR * optval,
+ int optlen,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSHUTDOWN)(
+ SOCKET s,
+ int how,
+ LPINT lpErrno
+ );
+
+typedef
+SOCKET
+(WSPAPI * LPWSPSOCKET)(
+ int af,
+ int type,
+ int protocol,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ GROUP g,
+ DWORD dwFlags,
+ LPINT lpErrno
+ );
+
+typedef
+INT
+(WSPAPI * LPWSPSTRINGTOADDRESS)(
+ LPWSTR AddressString,
+ INT AddressFamily,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ LPSOCKADDR lpAddress,
+ LPINT lpAddressLength,
+ LPINT lpErrno
+ );
+
+/*
+ * A service provider proc table. This structure is returned by value
+ * from the service provider's WSPStartup() entrypoint.
+ */
+
+typedef struct _WSPPROC_TABLE {
+
+ LPWSPACCEPT lpWSPAccept;
+ LPWSPADDRESSTOSTRING lpWSPAddressToString;
+ LPWSPASYNCSELECT lpWSPAsyncSelect;
+ LPWSPBIND lpWSPBind;
+ LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
+ LPWSPCLEANUP lpWSPCleanup;
+ LPWSPCLOSESOCKET lpWSPCloseSocket;
+ LPWSPCONNECT lpWSPConnect;
+ LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
+ LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
+ LPWSPEVENTSELECT lpWSPEventSelect;
+ LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
+ LPWSPGETPEERNAME lpWSPGetPeerName;
+ LPWSPGETSOCKNAME lpWSPGetSockName;
+ LPWSPGETSOCKOPT lpWSPGetSockOpt;
+ LPWSPGETQOSBYNAME lpWSPGetQOSByName;
+ LPWSPIOCTL lpWSPIoctl;
+ LPWSPJOINLEAF lpWSPJoinLeaf;
+ LPWSPLISTEN lpWSPListen;
+ LPWSPRECV lpWSPRecv;
+ LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
+ LPWSPRECVFROM lpWSPRecvFrom;
+ LPWSPSELECT lpWSPSelect;
+ LPWSPSEND lpWSPSend;
+ LPWSPSENDDISCONNECT lpWSPSendDisconnect;
+ LPWSPSENDTO lpWSPSendTo;
+ LPWSPSETSOCKOPT lpWSPSetSockOpt;
+ LPWSPSHUTDOWN lpWSPShutdown;
+ LPWSPSOCKET lpWSPSocket;
+ LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
+
+} WSPPROC_TABLE, FAR * LPWSPPROC_TABLE;
+
+/*
+ * Pointers to the individual entries in the upcall table.
+ */
+
+typedef
+BOOL
+(WSPAPI * LPWPUCLOSEEVENT)(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUCLOSESOCKETHANDLE)(
+ SOCKET s,
+ LPINT lpErrno
+ );
+
+typedef
+WSAEVENT
+(WSPAPI * LPWPUCREATEEVENT)(
+ LPINT lpErrno
+ );
+
+typedef
+SOCKET
+(WSPAPI * LPWPUCREATESOCKETHANDLE)(
+ DWORD dwCatalogEntryId,
+ DWORD dwContext,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUFDISSET)(
+ SOCKET s,
+ fd_set FAR * set
+ );
+
+typedef
+int
+(WSPAPI * LPWPUGETPROVIDERPATH)(
+ LPGUID lpProviderId,
+ WCHAR FAR * lpszProviderDllPath,
+ LPINT lpProviderDllPathLen,
+ LPINT lpErrno
+ );
+
+typedef
+SOCKET
+(WSPAPI * LPWPUMODIFYIFSHANDLE)(
+ DWORD dwCatalogEntryId,
+ SOCKET ProposedHandle,
+ LPINT lpErrno
+ );
+
+typedef
+BOOL
+(WSPAPI * LPWPUPOSTMESSAGE)(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam
+ );
+
+typedef
+int
+(WSPAPI * LPWPUQUERYBLOCKINGCALLBACK)(
+ DWORD dwCatalogEntryId,
+ LPBLOCKINGCALLBACK FAR * lplpfnCallback,
+ LPDWORD lpdwContext,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUQUERYSOCKETHANDLECONTEXT)(
+ SOCKET s,
+ LPDWORD lpContext,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUQUEUEAPC)(
+ LPWSATHREADID lpThreadId,
+ LPWSAUSERAPC lpfnUserApc,
+ DWORD dwContext,
+ LPINT lpErrno
+ );
+
+typedef
+BOOL
+(WSPAPI * LPWPURESETEVENT)(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+typedef
+BOOL
+(WSPAPI * LPWPUSETEVENT)(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUOPENCURRENTTHREAD)(
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWPUCLOSETHREAD)(
+ LPWSATHREADID lpThreadId,
+ LPINT lpErrno
+ );
+
+/*
+ * The upcall table. This structure is passed by value to the service
+ * provider's WSPStartup() entrypoint.
+ */
+
+typedef struct _WSPUPCALLTABLE {
+
+ LPWPUCLOSEEVENT lpWPUCloseEvent;
+ LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
+ LPWPUCREATEEVENT lpWPUCreateEvent;
+ LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
+ LPWPUFDISSET lpWPUFDIsSet;
+ LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
+ LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
+ LPWPUPOSTMESSAGE lpWPUPostMessage;
+ LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
+ LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
+ LPWPUQUEUEAPC lpWPUQueueApc;
+ LPWPURESETEVENT lpWPUResetEvent;
+ LPWPUSETEVENT lpWPUSetEvent;
+ LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
+ LPWPUCLOSETHREAD lpWPUCloseThread;
+
+} WSPUPCALLTABLE, FAR * LPWSPUPCALLTABLE;
+
+/*
+ * WinSock 2 SPI socket function prototypes
+ */
+
+int
+WSPAPI
+WSPStartup(
+ WORD wVersionRequested,
+ LPWSPDATA lpWSPData,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ WSPUPCALLTABLE UpcallTable,
+ LPWSPPROC_TABLE lpProcTable
+ );
+
+typedef
+int
+(WSPAPI * LPWSPSTARTUP)(
+ WORD wVersionRequested,
+ LPWSPDATA lpWSPData,
+ LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ WSPUPCALLTABLE UpcallTable,
+ LPWSPPROC_TABLE lpProcTable
+ );
+
+/*
+ * Installation and configuration entrypoints.
+ */
+
+int
+WSPAPI
+WSCEnumProtocols(
+ LPINT lpiProtocols,
+ LPWSAPROTOCOL_INFOW lpProtocolBuffer,
+ LPDWORD lpdwBufferLength,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSCENUMPROTOCOLS)(
+ LPINT lpiProtocols,
+ LPWSAPROTOCOL_INFOW lpProtocolBuffer,
+ LPDWORD lpdwBufferLength,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WSCDeinstallProvider(
+ LPGUID lpProviderId,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSCDEINSTALLPROVIDER)(
+ LPGUID lpProviderId,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WSCInstallProvider(
+ LPGUID lpProviderId,
+ const WCHAR FAR * lpszProviderDllPath,
+ const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ DWORD dwNumberOfEntries,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSCINSTALLPROVIDER)(
+ LPGUID lpProviderId,
+ const WCHAR FAR * lpszProviderDllPath,
+ const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
+ DWORD dwNumberOfEntries,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WSCGetProviderPath(
+ LPGUID lpProviderId,
+ WCHAR FAR * lpszProviderDllPath,
+ LPINT lpProviderDllPathLen,
+ LPINT lpErrno
+ );
+
+typedef
+int
+(WSPAPI * LPWSCGETPROVIDERPATH)(
+ LPGUID lpProviderId,
+ WCHAR FAR * lpszProviderDllPath,
+ LPINT lpProviderDllPathLen,
+ LPINT lpErrno
+ );
+
+/*
+ * The following upcall function prototypes are only used by WinSock 2 DLL and
+ * should not be used by any service providers.
+ */
+
+BOOL
+WSPAPI
+WPUCloseEvent(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WPUCloseSocketHandle(
+ SOCKET s,
+ LPINT lpErrno
+ );
+
+WSAEVENT
+WSPAPI
+WPUCreateEvent(
+ LPINT lpErrno
+ );
+
+SOCKET
+WSPAPI
+WPUCreateSocketHandle(
+ DWORD dwCatalogEntryId,
+ DWORD dwContext,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WPUFDIsSet(
+ SOCKET s,
+ fd_set FAR * set
+ );
+
+int
+WSPAPI
+WPUGetProviderPath(
+ LPGUID lpProviderId,
+ WCHAR FAR * lpszProviderDllPath,
+ LPINT lpProviderDllPathLen,
+ LPINT lpErrno
+ );
+
+SOCKET
+WSPAPI
+WPUModifyIFSHandle(
+ DWORD dwCatalogEntryId,
+ SOCKET ProposedHandle,
+ LPINT lpErrno
+ );
+
+BOOL
+WSPAPI
+WPUPostMessage(
+ HWND hWnd,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam
+ );
+
+int
+WSPAPI
+WPUQueryBlockingCallback(
+ DWORD dwCatalogEntryId,
+ LPBLOCKINGCALLBACK FAR * lplpfnCallback,
+ LPDWORD lpdwContext,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WPUQuerySocketHandleContext(
+ SOCKET s,
+ LPDWORD lpContext,
+ LPINT lpErrno
+ );
+
+int
+WSPAPI
+WPUQueueApc(
+ LPWSATHREADID lpThreadId,
+ LPWSAUSERAPC lpfnUserApc,
+ DWORD dwContext,
+ LPINT lpErrno
+ );
+
+BOOL
+WSPAPI
+WPUResetEvent(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+BOOL
+WSPAPI
+WPUSetEvent(
+ WSAEVENT hEvent,
+ LPINT lpErrno
+ );
+
+/*
+ * Installing and uninstalling name space providers.
+ */
+
+INT
+WSPAPI
+WSCInstallNameSpace (
+ LPWSTR lpszIdentifier,
+ LPWSTR lpszPathName,
+ DWORD dwNameSpace,
+ DWORD dwVersion,
+ LPGUID lpProviderId
+ );
+
+typedef
+INT
+(WSPAPI * LPWSCINSTALLNAMESPACE)(
+ LPWSTR lpszIdentifier,
+ LPWSTR lpszPathName,
+ DWORD dwNameSpace,
+ DWORD dwVersion,
+ LPGUID lpProviderId
+ );
+
+INT
+WSPAPI
+WSCUnInstallNameSpace (
+ LPGUID lpProviderId
+ );
+
+typedef
+INT
+(WSPAPI * LPWSCUNINSTALLNAMESPACE)(
+ LPGUID lpProviderId
+ );
+
+INT
+WSPAPI
+WSCEnableNSProvider (
+ LPGUID lpProviderId,
+ BOOL fEnable
+ );
+
+typedef
+INT
+(WSPAPI * LPWSCENABLENSPROVIDER)(
+ LPGUID lpProviderId,
+ BOOL fEnable
+ );
+
+/*
+ * Pointers to the individual entries in the namespace proc table.
+ */
+
+typedef
+INT
+(WSAAPI * LPNSPCLEANUP)(
+ LPGUID lpProviderId
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPLOOKUPSERVICEBEGIN)(
+ LPGUID lpProviderId,
+ LPWSAQUERYSETW lpqsRestrictions,
+ LPWSASERVICECLASSINFOW lpServiceClassInfo,
+ DWORD dwControlFlags,
+ LPHANDLE lphLookup
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPLOOKUPSERVICENEXT)(
+ HANDLE hLookup,
+ DWORD dwControlFlags,
+ LPDWORD lpdwBufferLength,
+ LPWSAQUERYSETW lpqsResults
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPLOOKUPSERVICEEND)(
+ HANDLE hLookup
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPSETSERVICE)(
+ LPGUID lpProviderId,
+ LPWSASERVICECLASSINFOW lpServiceClassInfo,
+ LPWSAQUERYSETW lpqsRegInfo,
+ WSAESETSERVICEOP essOperation,
+ DWORD dwControlFlags
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPINSTALLSERVICECLASS)(
+ LPGUID lpProviderId,
+ LPWSASERVICECLASSINFOW lpServiceClassInfo
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPREMOVESERVICECLASS)(
+ LPGUID lpProviderId,
+ LPGUID lpServiceClassId
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPGETSERVICECLASSINFO)(
+ LPGUID lpProviderId,
+ LPDWORD lpdwBufSize,
+ LPWSASERVICECLASSINFOW lpServiceClassInfo
+ );
+
+/*
+ * The name space service provider procedure table.
+ */
+
+typedef struct _NSP_ROUTINE {
+
+ /* Structure version information: */
+ DWORD cbSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+
+ /* Procedure-pointer table: */
+
+ LPNSPCLEANUP NSPCleanup;
+ LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
+ LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
+ LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
+ LPNSPSETSERVICE NSPSetService;
+ LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
+ LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
+ LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
+
+} NSP_ROUTINE, FAR * LPNSP_ROUTINE;
+
+/*
+ * Startup procedures.
+ */
+
+INT
+WSAAPI
+NSPStartup(
+ LPGUID lpProviderId,
+ LPNSP_ROUTINE lpnspRoutines
+ );
+
+typedef
+INT
+(WSAAPI * LPNSPSTARTUP)(
+ LPGUID lpProviderId,
+ LPNSP_ROUTINE lpnspRoutines
+ );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#include <poppack.h>
+
+
+#endif /* _WINSOCK2SPI_ */
+
diff --git a/public/sdk/inc/ws2tcpip.h b/public/sdk/inc/ws2tcpip.h
new file mode 100644
index 000000000..e462bb091
--- /dev/null
+++ b/public/sdk/inc/ws2tcpip.h
@@ -0,0 +1,71 @@
+/*
+** WS2TCPIP.H - WinSock2 Extension for TCP/IP protocols
+**
+** This file contains TCP/IP specific information for use
+** by WinSock2 compatible applications.
+**
+** To provide the backward compatibility, all the TCP/IP
+** specific definitions that were included in the WINSOCK.H
+** file are now included in WINSOCK2.H file. WS2TCPIP.H
+** file includes only the definitions introduced in the
+** WinSock 2 Protocol-Specific Annex document.
+**
+** Rev 0.2 Aug 10, 1995
+*/
+
+#ifndef _WS2TCPIP_H_
+#define _WS2TCPIP_H_
+
+
+/* Structure to keep interface specific information */
+
+typedef struct _INTERFACE_INFO
+{
+ u_long iiFlags; /* Interface flags */
+ struct sockaddr iiAddress; /* Interface address */
+ struct sockaddr iiBroadcastAddress; /* Broadcast address */
+ struct sockaddr iiNetmask; /* Network mask */
+} INTERFACE_INFO, FAR * LPINTERFACE_INFO;
+
+/* Possible flags for the iiFlags - bitmask */
+
+#define IFF_UP 0x00000001 /* Interface is up */
+#define IFF_BROADCAST 0x00000002 /* Broadcast is supported */
+#define IFF_LOOPBACK 0x00000004 /* this is loopback interface */
+#define IFF_POINTTOPOINT 0x00000008 /*this is point-to-point interface*/
+#define IFF_MULTICAST 0x00000010 /* multicast is supported */
+
+/* Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP */
+
+struct ip_mreq {
+ struct in_addr imr_multiaddr; /* IP multicast address of group */
+ struct in_addr imr_interface; /* local IP address of interface */
+};
+
+/* TCP/IP specific Ioctl codes */
+
+#define SIO_GET_INTERFACE_LIST _IOR('t', 127, u_long) // <TBD>
+
+/* Option to use with [gs]etsockopt at the IPPROTO_IP level */
+
+#define IP_OPTIONS 1 /* set/get IP options */
+#define IP_HDRINCL 2 /* header is included with data */
+#define IP_TOS 3 /* IP type of service and preced*/
+#define IP_TTL 4 /* IP time to live */
+#define IP_MULTICAST_IF 9 /* set/get IP multicast i/f */
+#define IP_MULTICAST_TTL 10 /* set/get IP multicast ttl */
+#define IP_MULTICAST_LOOP 11 /*set/get IP multicast loopback */
+#define IP_ADD_MEMBERSHIP 12 /* add an IP group membership */
+#define IP_DROP_MEMBERSHIP 13 /* drop an IP group membership */
+#define IP_DONTFRAGMENT 14 /* don't fragment IP datagrams */
+
+/* Option to use with [gs]etsockopt at the IPPROTO_UDP level */
+
+#define UDP_NOCHECKSUM 1
+
+/* Option to use with [gs]etsockopt at the IPPROTO_TCP level */
+
+#define TCP_EXPEDITED_1122 0x0002
+
+#endif /* _WS2TCPIP_H_ */
+
diff --git a/public/sdk/inc/wshisotp.h b/public/sdk/inc/wshisotp.h
new file mode 100644
index 000000000..66f77598c
--- /dev/null
+++ b/public/sdk/inc/wshisotp.h
@@ -0,0 +1,91 @@
+/* File: .streams.include.src/mod wshisotp.h Version: Initial */
+/*
+ * wshisotp.h
+ * Copyright (c) 1994-1996, Microsoft Corp. All rights reserved.
+ *
+ * Windows Sockets include file for ISO TP4. This file contains all
+ * standardized ISO TP4 information. Include this header file after
+ * winsock.h.
+ *
+ * The information contained in this header file was originally
+ * created by Alcatel TITN Inc.
+ */
+
+#ifndef _WSHISOTP_
+#define _WSHISOTP_
+
+/*
+ * Protocol values for ISO transport protocols.
+ */
+
+#define ISOPROTO_TP0 25 /* connection orientated transport protocol */
+#define ISOPROTO_TP1 26 /* not implemented */
+#define ISOPROTO_TP2 27 /* not implemented */
+#define ISOPROTO_TP3 28 /* not implemented */
+#define ISOPROTO_TP4 29 /* connection orientated transport protocol */
+#define ISOPROTO_TP ISOPROTO_TP4
+#define ISOPROTO_CLTP 30 /* connectionless transport */
+#define ISOPROTO_CLNP 31 /* connectionless internetworking protocol */
+#define ISOPROTO_X25 32 /* cons */
+#define ISOPROTO_INACT_NL 33 /* inactive network layer */
+#define ISOPROTO_ESIS 34 /* ES-IS protocol */
+#define ISOPROTO_INTRAISIS 35 /* IS-IS protocol */
+
+#define IPPROTO_RAW 255 /* raw clnp */
+#define IPPROTO_MAX 256
+
+/*
+ * The maximum size of the tranport address (tp_addr field of a
+ * sockaddr_tp structure) is 64.
+ */
+
+#define ISO_MAX_ADDR_LENGTH 64
+
+/*
+ * There are two types of ISO addresses, hierarchical and
+ * non-hierarchical. For hierarchical addresses, the tp_addr
+ * field contains both the transport selector and the network
+ * address. For non-hierarchical addresses, tp_addr contains only
+ * the transport address, which must be translated by the ISO TP4
+ * transport provider into the transport selector and network address.
+ */
+
+#define ISO_HIERARCHICAL 0
+#define ISO_NON_HIERARCHICAL 1
+
+/*
+ * The format of the address structure (sockaddr) to pass to Windows
+ * Sockets APIs.
+ *
+ */
+
+typedef struct sockaddr_tp {
+ u_short tp_family; /* Always AF_ISO */
+ u_short tp_addr_type; /* ISO_HIERARCHICAL or ISO_NON_HIERARCHICAL
+*/
+ u_short tp_taddr_len; /* Length of transport address, <= 52 */
+ u_short tp_tsel_len; /* Length of transport selector, <= 32 */
+ /* 0 if ISO_NON_HIERARCHICAL */
+ u_char tp_addr[ISO_MAX_ADDR_LENGTH];
+} SOCKADDR_TP, *PSOCKADDR_TP, *LPSOCKADDR_TP;
+
+#define ISO_SET_TP_ADDR(sa_tp, port, portlen, node, nodelen) \
+ (sa_tp)->tp_family = AF_ISO; \
+ (sa_tp)->tp_addr_type = ISO_HIERARCHICAL; \
+ (sa_tp)->tp_tsel_len = (portlen); \
+ (sa_tp)->tp_taddr_len = (portlen) + (nodelen); \
+ memcpy(&(sa_tp)->tp_addr, (port), (portlen)); \
+ memcpy(&(sa_tp)->tp_addr[portlen], (node), (nodelen));
+
+
+/*
+ * Expedited Data Usage Negotiation option.
+ * Default when the option is not present is be EXP_DATA_USE
+ * as per ISO 8073
+ */
+
+#define ISO_EXP_DATA_USE 00 /* Use of Expedited Data */
+#define ISO_EXP_DATA_NUSE 01 /* Non-use of Expedited Data */
+
+#endif
+
diff --git a/public/sdk/inc/wsipx.h b/public/sdk/inc/wsipx.h
new file mode 100644
index 000000000..ede59eba3
--- /dev/null
+++ b/public/sdk/inc/wsipx.h
@@ -0,0 +1,58 @@
+/*
+ * wsipx.h
+ *
+ * Microsoft Windows
+ * Copyright (C) Microsoft Corporation, 1992-1996.
+ *
+ * Windows Sockets include file for IPX/SPX. This file contains all
+ * standardized IPX/SPX information. Include this header file after
+ * winsock.h.
+ *
+ * To open an IPX socket, call socket() with an address family of
+ * AF_IPX, a socket type of SOCK_DGRAM, and protocol NSPROTO_IPX.
+ * Note that the protocol value must be specified, it cannot be 0.
+ * All IPX packets are sent with the packet type field of the IPX
+ * header set to 0.
+ *
+ * To open an SPX or SPXII socket, call socket() with an address
+ * family of AF_IPX, socket type of SOCK_SEQPACKET or SOCK_STREAM,
+ * and protocol of NSPROTO_SPX or NSPROTO_SPXII. If SOCK_SEQPACKET
+ * is specified, then the end of message bit is respected, and
+ * recv() calls are not completed until a packet is received with
+ * the end of message bit set. If SOCK_STREAM is specified, then
+ * the end of message bit is not respected, and recv() completes
+ * as soon as any data is received, regardless of the setting of the
+ * end of message bit. Send coalescing is never performed, and sends
+ * smaller than a single packet are always sent with the end of
+ * message bit set. Sends larger than a single packet are packetized
+ * with the end of message bit set on only the last packet of the
+ * send.
+ *
+ */
+
+#ifndef _WSIPX_
+#define _WSIPX_
+
+/*
+ * This is the structure of the SOCKADDR structure for IPX and SPX.
+ *
+ */
+
+typedef struct sockaddr_ipx {
+ short sa_family;
+ char sa_netnum[4];
+ char sa_nodenum[6];
+ unsigned short sa_socket;
+} SOCKADDR_IPX, *PSOCKADDR_IPX,FAR *LPSOCKADDR_IPX;
+
+/*
+ * Protocol families used in the "protocol" parameter of the socket() API.
+ *
+ */
+
+#define NSPROTO_IPX 1000
+#define NSPROTO_SPX 1256
+#define NSPROTO_SPXII 1257
+
+#endif
+
diff --git a/public/sdk/inc/wsnetbs.h b/public/sdk/inc/wsnetbs.h
new file mode 100644
index 000000000..b2cb400f8
--- /dev/null
+++ b/public/sdk/inc/wsnetbs.h
@@ -0,0 +1,69 @@
+/*
+ * wsnetbs.h
+ * Copyright (c) 1994-1996, Microsoft Corp. All rights reserved.
+ *
+ * Windows Sockets include file for NETBIOS. This file contains all
+ * standardized NETBIOS information. Include this header file after
+ * winsock.h.
+ *
+ */
+
+#ifndef _WSNETBS_
+#define _WSNETBS_
+
+/*
+ * This is the structure of the SOCKADDR structure for NETBIOS.
+ *
+ */
+
+#define NETBIOS_NAME_LENGTH 16
+
+typedef struct sockaddr_nb {
+ short snb_family;
+ u_short snb_type;
+ char snb_name[NETBIOS_NAME_LENGTH];
+} SOCKADDR_NB, *PSOCKADDR_NB,FAR *LPSOCKADDR_NB;
+
+/*
+ * Bit values for the snb_type field of SOCKADDR_NB.
+ *
+ */
+
+#define NETBIOS_UNIQUE_NAME (0x0000)
+#define NETBIOS_GROUP_NAME (0x0001)
+#define NETBIOS_TYPE_QUICK_UNIQUE (0x0002)
+#define NETBIOS_TYPE_QUICK_GROUP (0x0003)
+
+/*
+ * A macro convenient for setting up NETBIOS SOCKADDRs.
+ *
+ */
+
+#define SET_NETBIOS_SOCKADDR(_snb,_type,_name,_port) \
+ { \
+ int _i; \
+ (_snb)->snb_family = AF_NETBIOS; \
+ (_snb)->snb_type = (_type); \
+ for (_i=0; _i<NETBIOS_NAME_LENGTH-1; _i++) { \
+ (_snb)->snb_name[_i] = ' '; \
+ } \
+ for (_i=0; *((_name)+_i) != '\0' && _i<NETBIOS_NAME_LENGTH-1; _i++) { \
+ (_snb)->snb_name[_i] = *((_name)+_i); \
+ } \
+ (_snb)->snb_name[NETBIOS_NAME_LENGTH-1] = (_port); \
+ }
+
+/*
+ * To open a NetBIOS socket, call the socket() function as follows:
+ *
+ * s = socket( AF_NETBIOS, {SOCK_SEQPACKET|SOCK_DGRAM}, -Lana );
+ *
+ * where Lana is the NetBIOS Lana number of interest. For example, to
+ * open a socket for Lana 2, specify -2 as the "protocol" parameter
+ * to the socket() function.
+ *
+ */
+
+
+#endif
+
diff --git a/public/sdk/inc/wsnwlink.h b/public/sdk/inc/wsnwlink.h
new file mode 100644
index 000000000..8f3024192
--- /dev/null
+++ b/public/sdk/inc/wsnwlink.h
@@ -0,0 +1,279 @@
+/*
+ * wsnwlink.h
+ *
+ *
+ * Microsoft Windows
+ * Copyright (C) Microsoft Corporation, 1992-1996.
+ * Microsoft-specific extensions to the Windows NT IPX/SPX Windows
+ * Sockets interface. These extensions are provided for use as
+ * necessary for compatibility with existing applications. They are
+ * otherwise not recommended for use, as they are only guaranteed to
+ * work * over the Microsoft IPX/SPX stack. An application which
+ * uses these * extensions may not work over other IPX/SPX
+ * implementations. Include this header file after winsock.h and
+ * wsipx.h.
+ *
+ * To open an IPX socket where a particular packet type is sent in
+ * the IPX header, specify NSPROTO_IPX + n as the protocol parameter
+ * of the socket() API. For example, to open an IPX socket that
+ * sets the packet type to 34, use the following socket() call:
+ *
+ * s = socket(AF_IPX, SOCK_DGRAM, NSPROTO_IPX + 34);
+ *
+ * Below are socket option that may be set or retrieved by specifying
+ * the appropriate manifest in the "optname" parameter of getsockopt()
+ * or setsockopt(). Use NSPROTO_IPX as the "level" argument for the
+ * call.
+ *
+ */
+
+#ifndef _WSNWLINK_
+#define _WSNWLINK_
+
+
+/*
+ * Set/get the IPX packet type. The value specified in the
+ * optval argument will be set as the packet type on every IPX
+ * packet sent from this socket. The optval parameter of
+ * getsockopt()/setsockopt() points to an int.
+ *
+ */
+
+#define IPX_PTYPE 0x4000
+
+
+/*
+ * Set/get the receive filter packet type. Only IPX packets with
+ * a packet type equal to the value specified in the optval
+ * argument will be returned; packets with a packet type that
+ * does not match are discarded. optval points to an int.
+ *
+ */
+
+#define IPX_FILTERPTYPE 0x4001
+
+
+/*
+ * Stop filtering on packet type set with IPX_FILTERPTYPE.
+ *
+ */
+
+#define IPX_STOPFILTERPTYPE 0x4003
+
+
+/*
+ * Set/get the value of the datastream field in the SPX header on
+ * every packet sent. optval points to an int.
+ *
+ */
+
+#define IPX_DSTYPE 0x4002
+
+
+/*
+ * Enable extended addressing. On sends, adds the element
+ * "unsigned char sa_ptype" to the SOCKADDR_IPX structure,
+ * making the total length 15 bytes. On receives, add both
+ * the sa_ptype and "unsigned char sa_flags" to the SOCKADDR_IPX
+ * structure, making the total length 16 bytes. The current
+ * bits defined in sa_flags are:
+ *
+ * 0x01 - the received frame was sent as a broadcast
+ * 0x02 - the received frame was sent from this machine
+ *
+ * optval points to a BOOL.
+ *
+ */
+
+#define IPX_EXTENDED_ADDRESS 0x4004
+
+
+/*
+ * Send protocol header up on all receive packets. optval points
+ * to a BOOL.
+ *
+ */
+
+#define IPX_RECVHDR 0x4005
+
+
+/*
+ * Get the maximum data size that can be sent. Not valid with
+ * setsockopt(). optval points to an int where the value is
+ * returned.
+ *
+ */
+
+#define IPX_MAXSIZE 0x4006
+
+
+/*
+ * Query information about a specific adapter that IPX is bound
+ * to. In a system with n adapters they are numbered 0 through n-1.
+ * Callers can issue the IPX_MAX_ADAPTER_NUM getsockopt() to find
+ * out the number of adapters present, or call IPX_ADDRESS with
+ * increasing values of adapternum until it fails. Not valid
+ * with setsockopt(). optval points to an instance of the
+ * IPX_ADDRESS_DATA structure with the adapternum filled in.
+ *
+ */
+
+#define IPX_ADDRESS 0x4007
+
+typedef struct _IPX_ADDRESS_DATA {
+ INT adapternum; /* input: 0-based adapter number */
+ UCHAR netnum[4]; /* output: IPX network number */
+ UCHAR nodenum[6]; /* output: IPX node address */
+ BOOLEAN wan; /* output: TRUE = adapter is on a wan link */
+ BOOLEAN status; /* output: TRUE = wan link is up (or adapter is not wan) */
+ INT maxpkt; /* output: max packet size, not including IPX header */
+ ULONG linkspeed; /* output: link speed in 100 bytes/sec (i.e. 96 == 9600 bps) */
+} IPX_ADDRESS_DATA, *PIPX_ADDRESS_DATA;
+
+
+/*
+ * Query information about a specific IPX network number. If the
+ * network is in IPX's cache it will return the information directly,
+ * otherwise it will issue RIP requests to find it. Not valid with
+ * setsockopt(). optval points to an instance of the IPX_NETNUM_DATA
+ * structure with the netnum filled in.
+ *
+ */
+
+#define IPX_GETNETINFO 0x4008
+
+typedef struct _IPX_NETNUM_DATA {
+ UCHAR netnum[4]; /* input: IPX network number */
+ USHORT hopcount; /* output: hop count to this network, in machine order */
+ USHORT netdelay; /* output: tick count to this network, in machine order */
+ INT cardnum; /* output: 0-based adapter number used to route to this net;
+ /* can be used as adapternum input to IPX_ADDRESS */
+ UCHAR router[6]; /* output: MAC address of the next hop router, zeroed if
+ /* the network is directly attached */
+} IPX_NETNUM_DATA, *PIPX_NETNUM_DATA;
+
+
+/*
+ * Like IPX_GETNETINFO except it *does not* issue RIP requests. If the
+ * network is in IPX's cache it will return the information, otherwise
+ * it will fail (see also IPX_RERIPNETNUMBER which *always* forces a
+ * re-RIP). Not valid with setsockopt(). optval points to an instance of
+ * the IPX_NETNUM_DATA structure with the netnum filled in.
+ *
+ */
+
+#define IPX_GETNETINFO_NORIP 0x4009
+
+
+/*
+ * Get information on a connected SPX socket. optval points
+ * to an instance of the IPX_SPXCONNSTATUS_DATA structure.
+ *
+ * All numbers are in Novell (high-low) order.
+ *
+ */
+
+#define IPX_SPXGETCONNECTIONSTATUS 0x400B
+
+typedef struct _IPX_SPXCONNSTATUS_DATA {
+ UCHAR ConnectionState;
+ UCHAR WatchDogActive;
+ USHORT LocalConnectionId;
+ USHORT RemoteConnectionId;
+ USHORT LocalSequenceNumber;
+ USHORT LocalAckNumber;
+ USHORT LocalAllocNumber;
+ USHORT RemoteAckNumber;
+ USHORT RemoteAllocNumber;
+ USHORT LocalSocket;
+ UCHAR ImmediateAddress[6];
+ UCHAR RemoteNetwork[4];
+ UCHAR RemoteNode[6];
+ USHORT RemoteSocket;
+ USHORT RetransmissionCount;
+ USHORT EstimatedRoundTripDelay; /* In milliseconds */
+ USHORT RetransmittedPackets;
+ USHORT SuppressedPacket;
+} IPX_SPXCONNSTATUS_DATA, *PIPX_SPXCONNSTATUS_DATA;
+
+
+/*
+ * Get notification when the status of an adapter that IPX is
+ * bound to changes. Typically this will happen when a wan line
+ * goes up or down. Not valid with setsockopt(). optval points
+ * to a buffer which contains an IPX_ADDRESS_DATA structure
+ * followed immediately by a HANDLE to an unsignaled event.
+ *
+ * When the getsockopt() query is submitted, it will complete
+ * successfully. However, the IPX_ADDRESS_DATA pointed to by
+ * optval will not be updated at that point. Instead the
+ * request is queued internally inside the transport.
+ *
+ * When the status of an adapter changes, IPX will locate a
+ * queued getsockopt() query and fill in all the fields in the
+ * IPX_ADDRESS_DATA structure. It will then signal the event
+ * pointed to by the HANDLE in the optval buffer. This handle
+ * should be obtained before calling getsockopt() by calling
+ * CreateEvent(). If multiple getsockopts() are submitted at
+ * once, different events must be used.
+ *
+ * The event is used because the call needs to be asynchronous
+ * but currently getsockopt() does not support this.
+ *
+ * WARNING: In the current implementation, the transport will
+ * only signal one queued query for each status change. Therefore
+ * only one service which uses this query should be running at
+ * once.
+ *
+ */
+
+#define IPX_ADDRESS_NOTIFY 0x400C
+
+
+/*
+ * Get the maximum number of adapters present. If this call returns
+ * n then the adapters are numbered 0 through n-1. Not valid
+ * with setsockopt(). optval points to an int where the value
+ * is returned.
+ *
+ */
+
+#define IPX_MAX_ADAPTER_NUM 0x400D
+
+
+/*
+ * Like IPX_GETNETINFO except it forces IPX to re-RIP even if the
+ * network is in its cache (but not if it is directly attached to).
+ * Not valid with setsockopt(). optval points to an instance of
+ * the IPX_NETNUM_DATA structure with the netnum filled in.
+ *
+ */
+
+#define IPX_RERIPNETNUMBER 0x400E
+
+
+/*
+ * A hint that broadcast packets may be received. The default is
+ * TRUE. Applications that do not need to receive broadcast packets
+ * should set this sockopt to FALSE which may cause better system
+ * performance (note that it does not necessarily cause broadcasts
+ * to be filtered for the application). Not valid with getsockopt().
+ * optval points to a BOOL.
+ *
+ */
+
+#define IPX_RECEIVE_BROADCAST 0x400F
+
+
+/*
+ * On SPX connections, don't delay before sending ack. Applications
+ * that do not tend to have back-and-forth traffic over SPX should
+ * set this; it will increase the number of acks sent but will remove
+ * delays in sending acks. optval points to a BOOL.
+ *
+ */
+
+#define IPX_IMMEDIATESPXACK 0x4010
+
+#endif
+
diff --git a/public/sdk/inc/wsvns.h b/public/sdk/inc/wsvns.h
new file mode 100644
index 000000000..e04287531
--- /dev/null
+++ b/public/sdk/inc/wsvns.h
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ *
+ * wsvns.h
+ *
+ * Windows Sockets include file for VINES IP. This file contains all
+ * standardized VINES IP information. Include this header file after
+ * winsock.h.
+ *
+ * To open an VINES IP socket, call socket() with an address family of
+ * AF_BAN, a socket type of SOCK_DGRAM, SOCK_STREAM, or SOCK_SEQPACKET,
+ * and protocol of 0.
+ *
+ ******************************************************************************/
+
+#ifndef _WSVNS_
+#define _WSVNS_
+
+/*
+ * Socket address, VINES IP style. Address fields and port field are defined
+ * as a sequence of bytes. This is done because they are byte ordered
+ * BIG ENDIAN, ala most significant byte first.
+ */
+typedef struct sockaddr_vns {
+ u_short sin_family; // = AF_BAN
+ u_char net_address[4]; // network address
+ u_char subnet_addr[2]; // subnet address
+ u_char port[2]; // msb=port[0], lsb=port[1]
+ u_char hops; // # hops for broadcasts
+ u_char filler[5]; // filler, zeros
+} SOCKADDR_VNS, *PSOCKADDR_VNS, FAR *LPSOCKADDR_VNS;
+
+#define VNSPROTO_IPC 1
+#define VNSPROTO_RELIABLE_IPC 2
+#define VNSPROTO_SPP 3
+
+
+#endif _WSVNS_
+
+
diff --git a/public/sdk/inc/wtypes.h b/public/sdk/inc/wtypes.h
new file mode 100644
index 000000000..c7cedcbee
--- /dev/null
+++ b/public/sdk/inc/wtypes.h
@@ -0,0 +1,1287 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 3.00.44 */
+/* at Fri Nov 15 09:36:16 1996
+ */
+/* Compiler settings for wtypes.idl:
+ Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
+ error checks: none
+*/
+//@@MIDL_FILE_HEADING( )
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __wtypes_h__
+#define __wtypes_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 * );
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0000
+ * at Fri Nov 15 09:36:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+//--------------------------------------------------------------------------
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0000_v0_0_s_ifspec;
+
+#ifndef __IWinTypes_INTERFACE_DEFINED__
+#define __IWinTypes_INTERFACE_DEFINED__
+
+/****************************************
+ * Generated header for interface: IWinTypes
+ * at Fri Nov 15 09:36:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [auto_handle][unique][version][uuid] */
+
+
+typedef struct tagRemHGLOBAL
+ {
+ long fNullHGlobal;
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHGLOBAL;
+
+typedef struct tagRemHMETAFILEPICT
+ {
+ long mm;
+ long xExt;
+ long yExt;
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHMETAFILEPICT;
+
+typedef struct tagRemHENHMETAFILE
+ {
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHENHMETAFILE;
+
+typedef struct tagRemHBITMAP
+ {
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHBITMAP;
+
+typedef struct tagRemHPALETTE
+ {
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHPALETTE;
+
+typedef struct tagRemBRUSH
+ {
+ unsigned long cbData;
+ /* [size_is] */ byte data[ 1 ];
+ } RemHBRUSH;
+
+#if !defined(_WIN32) && !defined(_MPPC_)
+// The following code is for Win16 only
+#ifndef WINAPI // If not included with 3.1 headers...
+#define FAR _far
+#define PASCAL _pascal
+#define CDECL _cdecl
+#define VOID void
+#define WINAPI FAR PASCAL
+#define CALLBACK FAR PASCAL
+#ifndef FALSE
+#define FALSE 0
+#define TRUE 1
+#endif // !FALSE
+#ifndef _BYTE_DEFINED
+#define _BYTE_DEFINED
+typedef unsigned char BYTE;
+
+#endif // !_BYTE_DEFINED
+#ifndef _WORD_DEFINED
+#define _WORD_DEFINED
+typedef unsigned short WORD;
+
+#endif // !_WORD_DEFINED
+typedef unsigned int UINT;
+
+typedef int INT;
+
+typedef long BOOL;
+
+#ifndef _LONG_DEFINED
+#define _LONG_DEFINED
+typedef long LONG;
+
+#endif // !_LONG_DEFINED
+#ifndef _WPARAM_DEFINED
+#define _WPARAM_DEFINED
+typedef UINT WPARAM;
+
+#endif // _WPARAM_DEFINED
+#ifndef _DWORD_DEFINED
+#define _DWORD_DEFINED
+typedef unsigned long DWORD;
+
+#endif // !_DWORD_DEFINED
+#ifndef _LPARAM_DEFINED
+#define _LPARAM_DEFINED
+typedef LONG LPARAM;
+
+#endif // !_LPARAM_DEFINED
+#ifndef _LRESULT_DEFINED
+#define _LRESULT_DEFINED
+typedef LONG LRESULT;
+
+#endif // !_LRESULT_DEFINED
+typedef void __RPC_FAR *HANDLE;
+
+typedef void __RPC_FAR *HMODULE;
+
+typedef void __RPC_FAR *HINSTANCE;
+
+typedef void __RPC_FAR *HRGN;
+
+typedef void __RPC_FAR *HTASK;
+
+typedef void __RPC_FAR *HKEY;
+
+typedef void __RPC_FAR *HDESK;
+
+typedef void __RPC_FAR *HMF;
+
+typedef void __RPC_FAR *HEMF;
+
+typedef void __RPC_FAR *HPEN;
+
+typedef void __RPC_FAR *HRSRC;
+
+typedef void __RPC_FAR *HSTR;
+
+typedef void __RPC_FAR *HWINSTA;
+
+typedef void __RPC_FAR *HKL;
+
+typedef void __RPC_FAR *HGDIOBJ;
+
+typedef HANDLE HDWP;
+
+#ifndef _HFILE_DEFINED
+#define _HFILE_DEFINED
+typedef INT HFILE;
+
+#endif // !_HFILE_DEFINED
+#ifndef _LPWORD_DEFINED
+#define _LPWORD_DEFINED
+typedef WORD __RPC_FAR *LPWORD;
+
+#endif // !_LPWORD_DEFINED
+#ifndef _LPDWORD_DEFINED
+#define _LPDWORD_DEFINED
+typedef DWORD __RPC_FAR *LPDWORD;
+
+#endif // !_LPDWORD_DEFINED
+typedef char CHAR;
+
+typedef /* [string] */ CHAR __RPC_FAR *LPSTR;
+
+typedef /* [string] */ const CHAR __RPC_FAR *LPCSTR;
+
+#ifndef _WCHAR_DEFINED
+#define _WCHAR_DEFINED
+typedef wchar_t WCHAR;
+
+typedef WCHAR TCHAR;
+
+#endif // !_WCHAR_DEFINED
+typedef /* [string] */ WCHAR __RPC_FAR *LPWSTR;
+
+typedef /* [string] */ TCHAR __RPC_FAR *LPTSTR;
+
+typedef /* [string] */ const WCHAR __RPC_FAR *LPCWSTR;
+
+typedef /* [string] */ const TCHAR __RPC_FAR *LPCTSTR;
+
+typedef struct tagPALETTEENTRY
+ {
+ BYTE peRed;
+ BYTE peGreen;
+ BYTE peBlue;
+ BYTE peFlags;
+ } PALETTEENTRY;
+
+typedef struct tagPALETTEENTRY __RPC_FAR *PPALETTEENTRY;
+
+typedef struct tagPALETTEENTRY __RPC_FAR *LPPALETTEENTRY;
+
+#if 0
+typedef struct tagLOGPALETTE
+ {
+ WORD palVersion;
+ WORD palNumEntries;
+ /* [size_is] */ PALETTEENTRY palPalEntry[ 1 ];
+ } LOGPALETTE;
+
+typedef struct tagLOGPALETTE __RPC_FAR *PLOGPALETTE;
+
+typedef struct tagLOGPALETTE __RPC_FAR *LPLOGPALETTE;
+
+#else
+typedef struct tagLOGPALETTE {
+ WORD palVersion;
+ WORD palNumEntries;
+ PALETTEENTRY palPalEntry[1];
+} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
+#endif
+#ifndef _COLORREF_DEFINED
+#define _COLORREF_DEFINED
+typedef DWORD COLORREF;
+
+#endif // !_COLORREF_DEFINED
+#ifndef _LPCOLORREF_DEFINED
+#define _LPCOLORREF_DEFINED
+typedef DWORD __RPC_FAR *LPCOLORREF;
+
+#endif // !_LPCOLORREF_DEFINED
+typedef HANDLE __RPC_FAR *LPHANDLE;
+
+typedef struct _RECTL
+ {
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+ } RECTL;
+
+typedef struct _RECTL __RPC_FAR *PRECTL;
+
+typedef struct _RECTL __RPC_FAR *LPRECTL;
+
+typedef struct tagPOINT
+ {
+ LONG x;
+ LONG y;
+ } POINT;
+
+typedef struct tagPOINT __RPC_FAR *PPOINT;
+
+typedef struct tagPOINT __RPC_FAR *LPPOINT;
+
+typedef struct _POINTL
+ {
+ LONG x;
+ LONG y;
+ } POINTL;
+
+typedef struct _POINTL __RPC_FAR *PPOINTL;
+
+#ifndef WIN16
+typedef struct tagSIZE
+ {
+ LONG cx;
+ LONG cy;
+ } SIZE;
+
+typedef struct tagSIZE __RPC_FAR *PSIZE;
+
+typedef struct tagSIZE __RPC_FAR *LPSIZE;
+
+#else // WIN16
+typedef struct tagSIZE
+{
+ INT cx;
+ INT cy;
+} SIZE, *PSIZE, *LPSIZE;
+#endif // WIN16
+typedef struct tagSIZEL
+ {
+ LONG cx;
+ LONG cy;
+ } SIZEL;
+
+typedef struct tagSIZEL __RPC_FAR *PSIZEL;
+
+typedef struct tagSIZEL __RPC_FAR *LPSIZEL;
+
+#endif //WINAPI
+#endif //!WIN32 && !MPPC
+#if defined(_WIN32) && !defined(OLE2ANSI)
+typedef WCHAR OLECHAR;
+
+typedef /* [string] */ OLECHAR __RPC_FAR *LPOLESTR;
+
+typedef /* [string] */ const OLECHAR __RPC_FAR *LPCOLESTR;
+
+#define OLESTR(str) L##str
+
+#else
+
+typedef char OLECHAR;
+typedef LPSTR LPOLESTR;
+typedef LPCSTR LPCOLESTR;
+#define OLESTR(str) str
+#endif
+#ifndef _WINDEF_
+typedef const RECTL __RPC_FAR *LPCRECTL;
+
+typedef void __RPC_FAR *PVOID;
+
+typedef void __RPC_FAR *LPVOID;
+
+typedef float FLOAT;
+
+typedef struct tagRECT
+ {
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+ } RECT;
+
+typedef struct tagRECT __RPC_FAR *PRECT;
+
+typedef struct tagRECT __RPC_FAR *LPRECT;
+
+typedef const RECT __RPC_FAR *LPCRECT;
+
+#endif //_WINDEF_
+typedef unsigned char UCHAR;
+
+typedef short SHORT;
+
+typedef unsigned short USHORT;
+
+typedef DWORD ULONG;
+
+typedef double DOUBLE;
+
+#ifndef _DWORDLONG_
+typedef MIDL_uhyper DWORDLONG;
+
+typedef DWORDLONG __RPC_FAR *PDWORDLONG;
+
+#endif // !_DWORDLONG_
+#ifndef _ULONGLONG_
+typedef hyper LONGLONG;
+
+typedef MIDL_uhyper ULONGLONG;
+
+typedef LONGLONG __RPC_FAR *PLONGLONG;
+
+typedef ULONGLONG __RPC_FAR *PULONGLONG;
+
+#endif // _ULONGLONG_
+#if 0
+typedef struct _LARGE_INTEGER
+ {
+ LONGLONG QuadPart;
+ } LARGE_INTEGER;
+
+typedef LARGE_INTEGER __RPC_FAR *PLARGE_INTEGER;
+
+typedef struct _ULARGE_INTEGER
+ {
+ ULONGLONG QuadPart;
+ } ULARGE_INTEGER;
+
+#endif // 0
+#ifndef _WINBASE_
+#ifndef _FILETIME_
+#define _FILETIME_
+typedef struct _FILETIME
+ {
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+ } FILETIME;
+
+typedef struct _FILETIME __RPC_FAR *PFILETIME;
+
+typedef struct _FILETIME __RPC_FAR *LPFILETIME;
+
+#endif // !_FILETIME
+#ifndef _SYSTEMTIME_
+#define _SYSTEMTIME_
+typedef struct _SYSTEMTIME
+ {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+ } SYSTEMTIME;
+
+typedef struct _SYSTEMTIME __RPC_FAR *PSYSTEMTIME;
+
+typedef struct _SYSTEMTIME __RPC_FAR *LPSYSTEMTIME;
+
+#endif // !_SYSTEMTIME
+#ifndef _SECURITY_ATTRIBUTES_
+#define _SECURITY_ATTRIBUTES_
+typedef struct _SECURITY_ATTRIBUTES
+ {
+ DWORD nLength;
+ /* [size_is] */ LPVOID lpSecurityDescriptor;
+ BOOL bInheritHandle;
+ } SECURITY_ATTRIBUTES;
+
+typedef struct _SECURITY_ATTRIBUTES __RPC_FAR *PSECURITY_ATTRIBUTES;
+
+typedef struct _SECURITY_ATTRIBUTES __RPC_FAR *LPSECURITY_ATTRIBUTES;
+
+#endif // !_SECURITY_ATTRIBUTES_
+#ifndef SECURITY_DESCRIPTOR_REVISION
+typedef USHORT SECURITY_DESCRIPTOR_CONTROL;
+
+typedef USHORT __RPC_FAR *PSECURITY_DESCRIPTOR_CONTROL;
+
+typedef PVOID PSID;
+
+typedef struct _ACL
+ {
+ UCHAR AclRevision;
+ UCHAR Sbz1;
+ USHORT AclSize;
+ USHORT AceCount;
+ USHORT Sbz2;
+ } ACL;
+
+typedef ACL __RPC_FAR *PACL;
+
+typedef struct _SECURITY_DESCRIPTOR
+ {
+ UCHAR Revision;
+ UCHAR Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+ } SECURITY_DESCRIPTOR;
+
+typedef struct _SECURITY_DESCRIPTOR __RPC_FAR *PISECURITY_DESCRIPTOR;
+
+#endif // !SECURITY_DESCRIPTOR_REVISION
+#endif //_WINBASE_
+typedef struct _COAUTHIDENTITY
+ {
+ /* [size_is] */ USHORT __RPC_FAR *User;
+ ULONG UserLength;
+ /* [size_is] */ USHORT __RPC_FAR *Domain;
+ ULONG DomainLength;
+ /* [size_is] */ USHORT __RPC_FAR *Password;
+ ULONG PasswordLength;
+ ULONG Flags;
+ } COAUTHIDENTITY;
+
+typedef struct _COAUTHINFO
+ {
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ LPWSTR pwszServerPrincName;
+ DWORD dwAuthnLevel;
+ DWORD dwImpersonationLevel;
+ COAUTHIDENTITY __RPC_FAR *pAuthIdentityData;
+ DWORD dwCapabilities;
+ } COAUTHINFO;
+
+typedef struct _COSERVERINFO
+ {
+ DWORD dwReserved1;
+ LPWSTR pwszName;
+ COAUTHINFO __RPC_FAR *pAuthInfo;
+ DWORD dwReserved2;
+ } COSERVERINFO;
+
+typedef LONG SCODE;
+
+#ifndef _HRESULT_DEFINED
+#define _HRESULT_DEFINED
+typedef LONG HRESULT;
+
+#endif // !_HRESULT_DEFINED
+typedef SCODE __RPC_FAR *PSCODE;
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+ {
+ DWORD Data1;
+ WORD Data2;
+ WORD Data3;
+ BYTE Data4[ 8 ];
+ } GUID;
+
+#endif // !GUID_DEFINED
+#if !defined( __LPGUID_DEFINED__ )
+#define __LPGUID_DEFINED__
+typedef GUID __RPC_FAR *LPGUID;
+
+#endif // !__LPGUID_DEFINED__
+#ifndef __OBJECTID_DEFINED
+#define __OBJECTID_DEFINED
+#define _OBJECTID_DEFINED
+typedef struct _OBJECTID
+ {
+ GUID Lineage;
+ unsigned long Uniquifier;
+ } OBJECTID;
+
+#endif // !_OBJECTID_DEFINED
+#if !defined( __IID_DEFINED__ )
+#define __IID_DEFINED__
+typedef GUID IID;
+
+typedef IID __RPC_FAR *LPIID;
+
+#define IID_NULL GUID_NULL
+#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
+typedef GUID CLSID;
+
+typedef CLSID __RPC_FAR *LPCLSID;
+
+#define CLSID_NULL GUID_NULL
+#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
+typedef GUID FMTID;
+
+typedef FMTID __RPC_FAR *LPFMTID;
+
+#define FMTID_NULL GUID_NULL
+#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)
+#if 0
+typedef GUID __RPC_FAR *REFGUID;
+
+typedef IID __RPC_FAR *REFIID;
+
+typedef CLSID __RPC_FAR *REFCLSID;
+
+typedef FMTID __RPC_FAR *REFFMTID;
+
+#endif // 0
+#if defined(__cplusplus)
+#ifndef _REFGUID_DEFINED
+#define _REFGUID_DEFINED
+#define REFGUID const GUID &
+#endif // !_REFGUID_DEFINED
+#ifndef _REFIID_DEFINED
+#define _REFIID_DEFINED
+#define REFIID const IID &
+#endif // !_REFIID_DEFINED
+#ifndef _REFCLSID_DEFINED
+#define _REFCLSID_DEFINED
+#define REFCLSID const CLSID &
+#endif // !_REFCLSID_DEFINED
+#ifndef _REFFMTID_DEFINED
+#define _REFFMTID_DEFINED
+#define REFFMTID const FMTID &
+#endif // !_REFFMTID_DEFINED
+#else // !__cplusplus
+#ifndef _REFGUID_DEFINED
+#define _REFGUID_DEFINED
+#define REFGUID const GUID * const
+#endif // !_REFGUID_DEFINED
+#ifndef _REFIID_DEFINED
+#define _REFIID_DEFINED
+#define REFIID const IID * const
+#endif // !_REFIID_DEFINED
+#ifndef _REFCLSID_DEFINED
+#define _REFCLSID_DEFINED
+#define REFCLSID const CLSID * const
+#endif // !_REFCLSID_DEFINED
+#ifndef _REFFMTID_DEFINED
+#define _REFFMTID_DEFINED
+#define REFFMTID const FMTID * const
+#endif // !_REFFMTID_DEFINED
+#endif // !__cplusplus
+#endif // !__IID_DEFINED__
+typedef
+enum tagMEMCTX
+ { MEMCTX_TASK = 1,
+ MEMCTX_SHARED = 2,
+ MEMCTX_MACSYSTEM = 3,
+ MEMCTX_UNKNOWN = -1,
+ MEMCTX_SAME = -2
+ } MEMCTX;
+
+#ifndef _ROTFLAGS_DEFINED
+#define _ROTFLAGS_DEFINED
+#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
+#define ROTFLAGS_ALLOWANYCLIENT 0x2
+#endif // !_ROTFLAGS_DEFINED
+#ifndef _ROT_COMPARE_MAX_DEFINED
+#define _ROT_COMPARE_MAX_DEFINED
+#define ROT_COMPARE_MAX 2048
+#endif // !_ROT_COMPARE_MAX_DEFINED
+typedef
+enum tagCLSCTX
+ { CLSCTX_INPROC_SERVER = 0x1,
+ CLSCTX_INPROC_HANDLER = 0x2,
+ CLSCTX_LOCAL_SERVER = 0x4,
+ CLSCTX_INPROC_SERVER16 = 0x8,
+ CLSCTX_REMOTE_SERVER = 0x10,
+ CLSCTX_INPROC_HANDLER16 = 0x20,
+ CLSCTX_INPROC_SERVERX86 = 0x40,
+ CLSCTX_INPROC_HANDLERX86 = 0x80
+ } CLSCTX;
+
+typedef
+enum tagMSHLFLAGS
+ { MSHLFLAGS_NORMAL = 0,
+ MSHLFLAGS_TABLESTRONG = 1,
+ MSHLFLAGS_TABLEWEAK = 2,
+ MSHLFLAGS_NOPING = 4
+ } MSHLFLAGS;
+
+typedef
+enum tagMSHCTX
+ { MSHCTX_LOCAL = 0,
+ MSHCTX_NOSHAREDMEM = 1,
+ MSHCTX_DIFFERENTMACHINE = 2,
+ MSHCTX_INPROC = 3
+ } MSHCTX;
+
+typedef
+enum tagDVASPECT
+ { DVASPECT_CONTENT = 1,
+ DVASPECT_THUMBNAIL = 2,
+ DVASPECT_ICON = 4,
+ DVASPECT_DOCPRINT = 8
+ } DVASPECT;
+
+typedef
+enum tagSTGC
+ { STGC_DEFAULT = 0,
+ STGC_OVERWRITE = 1,
+ STGC_ONLYIFCURRENT = 2,
+ STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
+ } STGC;
+
+typedef
+enum tagSTGMOVE
+ { STGMOVE_MOVE = 0,
+ STGMOVE_COPY = 1,
+ STGMOVE_SHALLOWCOPY = 2
+ } STGMOVE;
+
+typedef
+enum tagSTATFLAG
+ { STATFLAG_DEFAULT = 0,
+ STATFLAG_NONAME = 1,
+ STATFLAG_NOOPEN = 2
+ } STATFLAG;
+
+typedef /* [context_handle] */ void __RPC_FAR *HCONTEXT;
+
+#ifndef _LCID_DEFINED
+#define _LCID_DEFINED
+typedef DWORD LCID;
+
+#endif // !_LCID_DEFINED
+typedef struct _BYTE_BLOB
+ {
+ unsigned long clSize;
+ /* [size_is] */ byte abData[ 1 ];
+ } BYTE_BLOB;
+
+typedef /* [unique] */ BYTE_BLOB __RPC_FAR *UP_BYTE_BLOB;
+
+typedef struct _WORD_BLOB
+ {
+ unsigned long clSize;
+ /* [size_is] */ unsigned short asData[ 1 ];
+ } WORD_BLOB;
+
+typedef /* [unique] */ WORD_BLOB __RPC_FAR *UP_WORD_BLOB;
+
+typedef struct _DWORD_BLOB
+ {
+ unsigned long clSize;
+ /* [size_is] */ unsigned long alData[ 1 ];
+ } DWORD_BLOB;
+
+typedef /* [unique] */ DWORD_BLOB __RPC_FAR *UP_DWORD_BLOB;
+
+typedef struct _FLAGGED_BYTE_BLOB
+ {
+ unsigned long fFlags;
+ unsigned long clSize;
+ /* [size_is] */ byte abData[ 1 ];
+ } FLAGGED_BYTE_BLOB;
+
+typedef /* [unique] */ FLAGGED_BYTE_BLOB __RPC_FAR *UP_FLAGGED_BYTE_BLOB;
+
+typedef struct _FLAGGED_WORD_BLOB
+ {
+ unsigned long fFlags;
+ unsigned long clSize;
+ /* [size_is] */ unsigned short asData[ 1 ];
+ } FLAGGED_WORD_BLOB;
+
+typedef /* [unique] */ FLAGGED_WORD_BLOB __RPC_FAR *UP_FLAGGED_WORD_BLOB;
+
+typedef struct _BYTE_SIZEDARR
+ {
+ unsigned long clSize;
+ /* [size_is] */ byte __RPC_FAR *pData;
+ } BYTE_SIZEDARR;
+
+typedef struct _SHORT_SIZEDARR
+ {
+ unsigned long clSize;
+ /* [size_is] */ unsigned short __RPC_FAR *pData;
+ } WORD_SIZEDARR;
+
+typedef struct _LONG_SIZEDARR
+ {
+ unsigned long clSize;
+ /* [size_is] */ unsigned long __RPC_FAR *pData;
+ } DWORD_SIZEDARR;
+
+typedef struct _HYPER_SIZEDARR
+ {
+ unsigned long clSize;
+ /* [size_is] */ hyper __RPC_FAR *pData;
+ } HYPER_SIZEDARR;
+
+#define WDT_INPROC_CALL ( 0x48746457 )
+
+#define WDT_REMOTE_CALL ( 0x52746457 )
+
+typedef struct _userCLIPFORMAT
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0001
+ {
+ /* [case()] */ DWORD dwValue;
+ /* [case()][string] */ wchar_t __RPC_FAR *pwszName;
+ } u;
+ } userCLIPFORMAT;
+
+typedef /* [unique] */ userCLIPFORMAT __RPC_FAR *wireCLIPFORMAT;
+
+typedef /* [wire_marshal] */ WORD CLIPFORMAT;
+
+typedef struct _GDI_NONREMOTE
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0002
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ DWORD_BLOB __RPC_FAR *hRemote;
+ } u;
+ } GDI_NONREMOTE;
+
+typedef struct _userHGLOBAL
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0003
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ FLAGGED_BYTE_BLOB __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHGLOBAL;
+
+typedef /* [unique] */ userHGLOBAL __RPC_FAR *wireHGLOBAL;
+
+typedef struct _userHMETAFILE
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0004
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ BYTE_BLOB __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHMETAFILE;
+
+typedef struct _remoteMETAFILEPICT
+ {
+ long mm;
+ long xExt;
+ long yExt;
+ userHMETAFILE __RPC_FAR *hMF;
+ } remoteMETAFILEPICT;
+
+typedef struct _userHMETAFILEPICT
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0005
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ remoteMETAFILEPICT __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHMETAFILEPICT;
+
+typedef struct _userHENHMETAFILE
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0006
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ BYTE_BLOB __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHENHMETAFILE;
+
+typedef struct _userBITMAP
+ {
+ LONG bmType;
+ LONG bmWidth;
+ LONG bmHeight;
+ LONG bmWidthBytes;
+ WORD bmPlanes;
+ WORD bmBitsPixel;
+ ULONG cbSize;
+ /* [size_is] */ byte pBuffer[ 1 ];
+ } userBITMAP;
+
+typedef struct _userHBITMAP
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0007
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ userBITMAP __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHBITMAP;
+
+typedef struct tagrpcLOGPALETTE
+ {
+ WORD palVersion;
+ WORD palNumEntries;
+ /* [size_is] */ PALETTEENTRY palPalEntry[ 1 ];
+ } rpcLOGPALETTE;
+
+typedef struct _userHPALETTE
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0008
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ rpcLOGPALETTE __RPC_FAR *hRemote;
+ /* [default] */ long hGlobal;
+ } u;
+ } userHPALETTE;
+
+typedef struct _RemotableHandle
+ {
+ long fContext;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0009
+ {
+ /* [case()] */ long hInproc;
+ /* [case()] */ long hRemote;
+ } u;
+ } RemotableHandle;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHWND;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHMENU;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHACCEL;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHBRUSH;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHFONT;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHDC;
+
+typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHICON;
+
+#if 0
+typedef /* [wire_marshal] */ void __RPC_FAR *HWND;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HMENU;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HACCEL;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HBRUSH;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HFONT;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HDC;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HICON;
+
+#ifndef _HCURSOR_DEFINED
+#define _HCURSOR_DEFINED
+typedef HICON HCURSOR;
+
+#endif // !_HCURSOR_DEFINED
+/* tagTEXTMETRICW was copied from wingdi.h for MIDL */
+typedef struct tagTEXTMETRICW
+ {
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ WCHAR tmFirstChar;
+ WCHAR tmLastChar;
+ WCHAR tmDefaultChar;
+ WCHAR tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+ } TEXTMETRICW;
+
+#endif //0
+#ifndef _WIN32 // The following code is for Win16 only
+#ifndef WINAPI // If not included with 3.1 headers...
+typedef struct tagMSG
+ {
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+ DWORD time;
+ POINT pt;
+ } MSG;
+
+typedef struct tagMSG __RPC_FAR *PMSG;
+
+typedef struct tagMSG __RPC_FAR *NPMSG;
+
+typedef struct tagMSG __RPC_FAR *LPMSG;
+
+#endif // _WIN32
+#endif // WINAPI
+typedef /* [unique] */ userHBITMAP __RPC_FAR *wireHBITMAP;
+
+typedef /* [unique] */ userHPALETTE __RPC_FAR *wireHPALETTE;
+
+typedef /* [unique] */ userHENHMETAFILE __RPC_FAR *wireHENHMETAFILE;
+
+typedef /* [unique] */ userHMETAFILE __RPC_FAR *wireHMETAFILE;
+
+typedef /* [unique] */ userHMETAFILEPICT __RPC_FAR *wireHMETAFILEPICT;
+
+#if 0
+typedef /* [wire_marshal] */ void __RPC_FAR *HGLOBAL;
+
+typedef HGLOBAL HLOCAL;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HBITMAP;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HPALETTE;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HENHMETAFILE;
+
+typedef /* [wire_marshal] */ void __RPC_FAR *HMETAFILE;
+
+#endif //0
+typedef /* [wire_marshal] */ void __RPC_FAR *HMETAFILEPICT;
+
+
+
+extern RPC_IF_HANDLE IWinTypes_v0_1_c_ifspec;
+extern RPC_IF_HANDLE IWinTypes_v0_1_s_ifspec;
+#endif /* __IWinTypes_INTERFACE_DEFINED__ */
+
+/****************************************
+ * Generated header for interface: __MIDL__intf_0001
+ * at Fri Nov 15 09:36:16 1996
+ * using MIDL 3.00.44
+ ****************************************/
+/* [local] */
+
+
+typedef double DATE;
+
+#ifndef _tagCY_DEFINED
+#define _tagCY_DEFINED
+#define _CY_DEFINED
+#if 0
+/* the following isn't the real definition of CY, but it is */
+/* what RPC knows how to remote */
+typedef struct tagCY
+ {
+ LONGLONG int64;
+ } CY;
+
+#else /* 0 */
+/* real definition that makes the C++ compiler happy */
+typedef union tagCY {
+ struct {
+#ifdef _MAC
+ long Hi;
+ long Lo;
+#else
+ unsigned long Lo;
+ long Hi;
+#endif
+ };
+ LONGLONG int64;
+} CY;
+#endif /* 0 */
+#endif /* _tagCY_DEFINED */
+#if 0 /* _tagDEC_DEFINED */
+/* The following isn't the real definition of Decimal type, */
+/* but it is what RPC knows how to remote */
+typedef struct tagDEC
+ {
+ USHORT wReserved;
+ BYTE scale;
+ BYTE sign;
+ ULONG Hi32;
+ ULONGLONG Lo64;
+ } DECIMAL;
+
+#else /* _tagDEC_DEFINED */
+/* real definition that makes the C++ compiler happy */
+typedef struct tagDEC {
+ USHORT wReserved;
+ union {
+ struct {
+ BYTE scale;
+ BYTE sign;
+ };
+ USHORT signscale;
+ };
+ ULONG Hi32;
+ union {
+ struct {
+#ifdef _MAC
+ ULONG Mid32;
+ ULONG Lo32;
+#else
+ ULONG Lo32;
+ ULONG Mid32;
+#endif
+ };
+ ULONGLONG Lo64;
+ };
+} DECIMAL;
+#define DECIMAL_NEG ((BYTE)0x80)
+#define DECIMAL_SETZERO(dec) \
+ {(dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0;}
+#endif /* _tagDEC_DEFINED */
+typedef /* [unique] */ FLAGGED_WORD_BLOB __RPC_FAR *wireBSTR;
+
+typedef /* [wire_marshal] */ OLECHAR __RPC_FAR *BSTR;
+
+typedef BSTR __RPC_FAR *LPBSTR;
+
+/* 0 == FALSE, -1 == TRUE */
+typedef short VARIANT_BOOL;
+
+#if !__STDC__ && (_MSC_VER <= 1000)
+/* For backward compatibility */
+typedef VARIANT_BOOL _VARIANT_BOOL;
+
+#else
+/* ANSI C/C++ reserve bool as keyword */
+#define _VARIANT_BOOL /##/
+#endif
+typedef boolean BOOLEAN;
+
+/* The BSTRBLOB structure is used by some implementations */
+/* of the IPropertyStorage interface when marshaling BSTRs */
+/* on systems which don't support BSTR marshaling. */
+#ifndef _tagBSTRBLOB_DEFINED
+#define _tagBSTRBLOB_DEFINED
+typedef struct tagBSTRBLOB
+ {
+ ULONG cbSize;
+ /* [size_is] */ BYTE __RPC_FAR *pData;
+ } BSTRBLOB;
+
+typedef struct tagBSTRBLOB __RPC_FAR *LPBSTRBLOB;
+
+#endif
+#define VARIANT_TRUE ((VARIANT_BOOL)0xffff)
+#define VARIANT_FALSE ((VARIANT_BOOL)0)
+#ifndef _tagBLOB_DEFINED
+#define _tagBLOB_DEFINED
+#define _BLOB_DEFINED
+#define _LPBLOB_DEFINED
+typedef struct tagBLOB
+ {
+ ULONG cbSize;
+ /* [size_is] */ BYTE __RPC_FAR *pBlobData;
+ } BLOB;
+
+typedef struct tagBLOB __RPC_FAR *LPBLOB;
+
+#endif
+typedef struct tagCLIPDATA
+ {
+ ULONG cbSize;
+ long ulClipFmt;
+ /* [size_is] */ BYTE __RPC_FAR *pClipData;
+ } CLIPDATA;
+
+// Macro to calculate the size of the above pClipData
+#define CBPCLIPDATA(clipdata) ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
+typedef unsigned short VARTYPE;
+
+/*
+ * VARENUM usage key,
+ *
+ * * [V] - may appear in a VARIANT
+ * * [T] - may appear in a TYPEDESC
+ * * [P] - may appear in an OLE property set
+ * * [S] - may appear in a Safe Array
+ *
+ *
+ * VT_EMPTY [V] [P] nothing
+ * VT_NULL [V] [P] SQL style Null
+ * VT_I2 [V][T][P][S] 2 byte signed int
+ * VT_I4 [V][T][P][S] 4 byte signed int
+ * VT_R4 [V][T][P][S] 4 byte real
+ * VT_R8 [V][T][P][S] 8 byte real
+ * VT_CY [V][T][P][S] currency
+ * VT_DATE [V][T][P][S] date
+ * VT_BSTR [V][T][P][S] OLE Automation string
+ * VT_DISPATCH [V][T][P][S] IDispatch *
+ * VT_ERROR [V][T][P][S] SCODE
+ * VT_BOOL [V][T][P][S] True=-1, False=0
+ * VT_VARIANT [V][T][P][S] VARIANT *
+ * VT_UNKNOWN [V][T] [S] IUnknown *
+ * VT_DECIMAL [V][T] [S] 16 byte fixed point
+ * VT_I1 [T] signed char
+ * VT_UI1 [V][T][P][S] unsigned char
+ * VT_UI2 [T][P] unsigned short
+ * VT_UI4 [T][P] unsigned short
+ * VT_I8 [T][P] signed 64-bit int
+ * VT_UI8 [T][P] unsigned 64-bit int
+ * VT_INT [T] signed machine int
+ * VT_UINT [T] unsigned machine int
+ * VT_VOID [T] C style void
+ * VT_HRESULT [T] Standard return type
+ * VT_PTR [T] pointer type
+ * VT_SAFEARRAY [T] (use VT_ARRAY in VARIANT)
+ * VT_CARRAY [T] C style array
+ * VT_USERDEFINED [T] user defined type
+ * VT_LPSTR [T][P] null terminated string
+ * VT_LPWSTR [T][P] wide null terminated string
+ * VT_FILETIME [P] FILETIME
+ * VT_BLOB [P] Length prefixed bytes
+ * VT_STREAM [P] Name of the stream follows
+ * VT_STORAGE [P] Name of the storage follows
+ * VT_STREAMED_OBJECT [P] Stream contains an object
+ * VT_STORED_OBJECT [P] Storage contains an object
+ * VT_BLOB_OBJECT [P] Blob contains an object
+ * VT_CF [P] Clipboard format
+ * VT_CLSID [P] A Class ID
+ * VT_VECTOR [P] simple counted array
+ * VT_ARRAY [V] SAFEARRAY*
+ * VT_BYREF [V] void* for local use
+ * VT_BSTR_BLOB Reserved for system use
+ */
+
+enum VARENUM
+ { VT_EMPTY = 0,
+ VT_NULL = 1,
+ VT_I2 = 2,
+ VT_I4 = 3,
+ VT_R4 = 4,
+ VT_R8 = 5,
+ VT_CY = 6,
+ VT_DATE = 7,
+ VT_BSTR = 8,
+ VT_DISPATCH = 9,
+ VT_ERROR = 10,
+ VT_BOOL = 11,
+ VT_VARIANT = 12,
+ VT_UNKNOWN = 13,
+ VT_DECIMAL = 14,
+ VT_I1 = 16,
+ VT_UI1 = 17,
+ VT_UI2 = 18,
+ VT_UI4 = 19,
+ VT_I8 = 20,
+ VT_UI8 = 21,
+ VT_INT = 22,
+ VT_UINT = 23,
+ VT_VOID = 24,
+ VT_HRESULT = 25,
+ VT_PTR = 26,
+ VT_SAFEARRAY = 27,
+ VT_CARRAY = 28,
+ VT_USERDEFINED = 29,
+ VT_LPSTR = 30,
+ VT_LPWSTR = 31,
+ VT_FILETIME = 64,
+ VT_BLOB = 65,
+ VT_STREAM = 66,
+ VT_STORAGE = 67,
+ VT_STREAMED_OBJECT = 68,
+ VT_STORED_OBJECT = 69,
+ VT_BLOB_OBJECT = 70,
+ VT_CF = 71,
+ VT_CLSID = 72,
+ VT_BSTR_BLOB = 0xfff,
+ VT_VECTOR = 0x1000,
+ VT_ARRAY = 0x2000,
+ VT_BYREF = 0x4000,
+ VT_RESERVED = 0x8000,
+ VT_ILLEGAL = 0xffff,
+ VT_ILLEGALMASKED = 0xfff,
+ VT_TYPEMASK = 0xfff
+ };
+typedef ULONG PROPID;
+
+#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
+#define SID_IDENTIFIER_AUTHORITY_DEFINED
+typedef struct _SID_IDENTIFIER_AUTHORITY
+ {
+ UCHAR Value[ 6 ];
+ } SID_IDENTIFIER_AUTHORITY;
+
+typedef struct _SID_IDENTIFIER_AUTHORITY __RPC_FAR *PSID_IDENTIFIER_AUTHORITY;
+
+#endif
+#ifndef SID_DEFINED
+#define SID_DEFINED
+typedef struct _SID
+ {
+ UCHAR Revision;
+ UCHAR SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+ /* [size_is] */ ULONG SubAuthority[ 1 ];
+ } SID;
+
+typedef struct _SID __RPC_FAR *PISID;
+
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL__intf_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL__intf_0001_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/public/sdk/inc/wtypes.idl b/public/sdk/inc/wtypes.idl
new file mode 100644
index 000000000..8de4a9a9c
--- /dev/null
+++ b/public/sdk/inc/wtypes.idl
@@ -0,0 +1,1339 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: wtypes.idl
+//
+// Contents: This interface definition contains typedefs for remotable
+// data types.
+//
+// History: 09-May-96 MikeHill Updated VARENUM comments.
+// 22-May-96 MikeHill Added FMTID defintions/macros.
+// 06-Jun-96 MikeHill Added CBPCLIPDATA macro.
+//
+//--------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+[ uuid(D3980A60-910C-1068-9341-00DD010F2F1C),
+ version(0.1), pointer_default(unique) ]
+
+interface IWinTypes
+{
+
+typedef struct tagRemHGLOBAL
+{
+ long fNullHGlobal;
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHGLOBAL;
+
+typedef struct tagRemHMETAFILEPICT
+{
+ long mm;
+ long xExt;
+ long yExt;
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHMETAFILEPICT;
+
+
+typedef struct tagRemHENHMETAFILE
+{
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHENHMETAFILE;
+
+typedef struct tagRemHBITMAP
+{
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHBITMAP;
+
+typedef struct tagRemHPALETTE
+{
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHPALETTE;
+
+typedef struct tagRemBRUSH
+{
+ unsigned long cbData;
+ [size_is(cbData)] byte data[];
+} RemHBRUSH;
+
+cpp_quote("#if !defined(_WIN32) && !defined(_MPPC_)" )
+cpp_quote("// The following code is for Win16 only")
+
+cpp_quote("#ifndef WINAPI // If not included with 3.1 headers...")
+
+cpp_quote("#define FAR _far")
+cpp_quote("#define PASCAL _pascal")
+cpp_quote("#define CDECL _cdecl")
+
+cpp_quote("#define VOID void")
+cpp_quote("#define WINAPI FAR PASCAL")
+cpp_quote("#define CALLBACK FAR PASCAL")
+
+
+cpp_quote("#ifndef FALSE")
+cpp_quote("#define FALSE 0")
+cpp_quote("#define TRUE 1")
+cpp_quote("#endif // !FALSE")
+
+cpp_quote("#ifndef _BYTE_DEFINED")
+cpp_quote("#define _BYTE_DEFINED")
+typedef unsigned char BYTE;
+cpp_quote("#endif // !_BYTE_DEFINED")
+
+cpp_quote("#ifndef _WORD_DEFINED")
+cpp_quote("#define _WORD_DEFINED")
+typedef unsigned short WORD;
+cpp_quote("#endif // !_WORD_DEFINED")
+
+typedef unsigned int UINT;
+typedef int INT;
+typedef long BOOL;
+
+cpp_quote("#ifndef _LONG_DEFINED")
+cpp_quote("#define _LONG_DEFINED")
+typedef long LONG;
+cpp_quote("#endif // !_LONG_DEFINED")
+
+cpp_quote("#ifndef _WPARAM_DEFINED")
+cpp_quote("#define _WPARAM_DEFINED")
+typedef UINT WPARAM;
+cpp_quote("#endif // _WPARAM_DEFINED")
+
+cpp_quote("#ifndef _DWORD_DEFINED")
+cpp_quote("#define _DWORD_DEFINED")
+typedef unsigned long DWORD;
+cpp_quote("#endif // !_DWORD_DEFINED")
+
+cpp_quote("#ifndef _LPARAM_DEFINED")
+cpp_quote("#define _LPARAM_DEFINED")
+typedef LONG LPARAM;//BUGBUG: this should be a discriminated union.
+cpp_quote("#endif // !_LPARAM_DEFINED")
+
+cpp_quote("#ifndef _LRESULT_DEFINED")
+cpp_quote("#define _LRESULT_DEFINED")
+typedef LONG LRESULT;
+cpp_quote("#endif // !_LRESULT_DEFINED")
+
+typedef void * HANDLE;
+#define DECLARE_WIREM_HANDLE(name) \
+ typedef [wire_marshal(wire ## name)] void * name
+#define DECLARE_HANDLE(name) typedef void * name
+
+DECLARE_HANDLE(HMODULE);
+DECLARE_HANDLE(HINSTANCE);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HKEY);
+
+DECLARE_HANDLE(HDESK);
+
+DECLARE_HANDLE(HMF);
+DECLARE_HANDLE(HEMF);
+
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRSRC);
+DECLARE_HANDLE(HSTR);
+DECLARE_HANDLE(HWINSTA);
+DECLARE_HANDLE(HKL);
+DECLARE_HANDLE(HGDIOBJ);
+
+typedef HANDLE HDWP;
+
+cpp_quote("#ifndef _HFILE_DEFINED")
+cpp_quote("#define _HFILE_DEFINED")
+typedef INT HFILE; /* Polymorphic with C runtime file handle type */
+cpp_quote("#endif // !_HFILE_DEFINED")
+
+
+cpp_quote("#ifndef _LPWORD_DEFINED")
+cpp_quote("#define _LPWORD_DEFINED")
+typedef WORD *LPWORD;
+cpp_quote("#endif // !_LPWORD_DEFINED")
+
+
+cpp_quote("#ifndef _LPDWORD_DEFINED")
+cpp_quote("#define _LPDWORD_DEFINED")
+typedef DWORD *LPDWORD;
+cpp_quote("#endif // !_LPDWORD_DEFINED")
+
+
+typedef char CHAR;
+typedef [string] CHAR *LPSTR;
+typedef [string] const CHAR *LPCSTR;
+
+
+cpp_quote("#ifndef _WCHAR_DEFINED")
+cpp_quote("#define _WCHAR_DEFINED")
+typedef wchar_t WCHAR;
+typedef WCHAR TCHAR;
+cpp_quote("#endif // !_WCHAR_DEFINED")
+
+typedef [string] WCHAR *LPWSTR;
+
+
+typedef [string] TCHAR *LPTSTR;
+
+typedef [string] const WCHAR *LPCWSTR;
+typedef [string] const TCHAR *LPCTSTR;
+
+
+typedef struct tagPALETTEENTRY {
+ BYTE peRed;
+ BYTE peGreen;
+ BYTE peBlue;
+ BYTE peFlags;
+} PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
+
+// Logical Palette
+cpp_quote("#if 0")
+
+ typedef struct tagLOGPALETTE {
+ WORD palVersion;
+ WORD palNumEntries;
+ [size_is(palNumEntries)] PALETTEENTRY palPalEntry[];
+ } LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
+
+cpp_quote("#else")
+cpp_quote("typedef struct tagLOGPALETTE {")
+cpp_quote(" WORD palVersion;")
+cpp_quote(" WORD palNumEntries;")
+cpp_quote(" PALETTEENTRY palPalEntry[1];")
+cpp_quote("} LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;")
+cpp_quote("#endif")
+
+
+cpp_quote("#ifndef _COLORREF_DEFINED")
+cpp_quote("#define _COLORREF_DEFINED")
+typedef DWORD COLORREF;
+cpp_quote("#endif // !_COLORREF_DEFINED")
+
+cpp_quote("#ifndef _LPCOLORREF_DEFINED")
+cpp_quote("#define _LPCOLORREF_DEFINED")
+typedef DWORD *LPCOLORREF;
+cpp_quote("#endif // !_LPCOLORREF_DEFINED")
+
+
+typedef HANDLE *LPHANDLE;
+
+//typedefs for remotable types from wingdi.h
+
+typedef struct _RECTL
+{
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECTL, *PRECTL, *LPRECTL;
+
+
+typedef struct tagPOINT
+{
+ LONG x;
+ LONG y;
+} POINT, *PPOINT, *LPPOINT;
+
+typedef struct _POINTL
+{
+ LONG x;
+ LONG y;
+} POINTL, *PPOINTL;
+
+
+cpp_quote("#ifndef WIN16")
+typedef struct tagSIZE
+{
+ LONG cx;
+ LONG cy;
+} SIZE, *PSIZE, *LPSIZE;
+cpp_quote("#else // WIN16")
+cpp_quote("typedef struct tagSIZE")
+cpp_quote("{")
+cpp_quote(" INT cx;")
+cpp_quote(" INT cy;")
+cpp_quote("} SIZE, *PSIZE, *LPSIZE;")
+cpp_quote("#endif // WIN16")
+
+
+typedef struct tagSIZEL
+{
+ LONG cx;
+ LONG cy;
+} SIZEL, *PSIZEL, *LPSIZEL;
+
+
+cpp_quote("#endif //WINAPI")
+cpp_quote("#endif //!WIN32 && !MPPC")
+
+cpp_quote("#if defined(_WIN32) && !defined(OLE2ANSI)")
+
+typedef WCHAR OLECHAR;
+typedef [string] OLECHAR *LPOLESTR;
+typedef [string] const OLECHAR *LPCOLESTR;
+cpp_quote("#define OLESTR(str) L##str")
+
+cpp_quote("")
+cpp_quote("#else")
+cpp_quote("")
+
+cpp_quote("typedef char OLECHAR;")
+cpp_quote("typedef LPSTR LPOLESTR;")
+cpp_quote("typedef LPCSTR LPCOLESTR;")
+cpp_quote("#define OLESTR(str) str")
+
+cpp_quote("#endif")
+
+
+// This block contains types that are normally defined by the nt sdk in WINDEF.H
+// but we need them here for definitions that follow in this file. If WINDEF.H
+// hasn't been included then we need to define them now so that WTYPES.H
+// will compile.
+cpp_quote("#ifndef _WINDEF_")
+typedef const RECTL *LPCRECTL;
+
+typedef void * PVOID, * LPVOID;
+typedef float FLOAT;
+
+typedef struct tagRECT
+{
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECT, *PRECT, *LPRECT;
+typedef const RECT *LPCRECT;
+
+cpp_quote("#endif //_WINDEF_")
+
+
+typedef unsigned char UCHAR;
+typedef short SHORT;
+typedef unsigned short USHORT;
+typedef DWORD ULONG;
+typedef double DOUBLE;
+
+cpp_quote("#ifndef _DWORDLONG_")
+typedef unsigned __int64 DWORDLONG;
+typedef DWORDLONG *PDWORDLONG;
+cpp_quote("#endif // !_DWORDLONG_")
+
+//
+// __int64 is only supported by 2.0 and later midl.
+// __midl is set by the 2.0 midl and not by 1.0 midl.
+//
+
+cpp_quote("#ifndef _ULONGLONG_")
+
+#if (defined(__midl))
+typedef __int64 LONGLONG;
+typedef unsigned __int64 ULONGLONG;
+#else
+typedef double LONGLONG;
+typedef double ULONGLONG;
+#endif
+
+typedef LONGLONG *PLONGLONG;
+typedef ULONGLONG *PULONGLONG;
+cpp_quote("#endif // _ULONGLONG_")
+
+// just for local wtypes
+cpp_quote("#if 0")
+
+typedef struct _LARGE_INTEGER {
+ LONGLONG QuadPart;
+} LARGE_INTEGER;
+
+typedef LARGE_INTEGER *PLARGE_INTEGER;
+
+typedef struct _ULARGE_INTEGER {
+ ULONGLONG QuadPart;
+} ULARGE_INTEGER;
+
+// just for local wtypes
+cpp_quote("#endif // 0")
+
+
+cpp_quote("#ifndef _WINBASE_")
+
+cpp_quote("#ifndef _FILETIME_")
+cpp_quote("#define _FILETIME_")
+typedef struct _FILETIME
+{
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+} FILETIME, *PFILETIME, *LPFILETIME;
+cpp_quote("#endif // !_FILETIME")
+
+cpp_quote("#ifndef _SYSTEMTIME_")
+cpp_quote("#define _SYSTEMTIME_")
+typedef struct _SYSTEMTIME {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
+
+cpp_quote("#endif // !_SYSTEMTIME")
+
+cpp_quote("#ifndef _SECURITY_ATTRIBUTES_")
+cpp_quote("#define _SECURITY_ATTRIBUTES_")
+typedef struct _SECURITY_ATTRIBUTES {
+ DWORD nLength;
+ [size_is(nLength)] LPVOID lpSecurityDescriptor;
+ BOOL bInheritHandle;
+} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
+cpp_quote("#endif // !_SECURITY_ATTRIBUTES_")
+
+cpp_quote("#ifndef SECURITY_DESCRIPTOR_REVISION")
+
+typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
+
+typedef PVOID PSID; // winnt
+
+typedef struct _ACL {
+ UCHAR AclRevision;
+ UCHAR Sbz1;
+ USHORT AclSize;
+ USHORT AceCount;
+ USHORT Sbz2;
+} ACL;
+typedef ACL *PACL;
+
+typedef struct _SECURITY_DESCRIPTOR {
+ UCHAR Revision;
+ UCHAR Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+} SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
+
+cpp_quote("#endif // !SECURITY_DESCRIPTOR_REVISION")
+
+cpp_quote("#endif //_WINBASE_")
+
+typedef struct _COAUTHIDENTITY
+{
+ [size_is(UserLength+1)] USHORT * User;
+ ULONG UserLength;
+ [size_is(DomainLength+1)] USHORT * Domain;
+ ULONG DomainLength;
+ [size_is(PasswordLength+1)] USHORT * Password;
+ ULONG PasswordLength;
+ ULONG Flags;
+} COAUTHIDENTITY;
+
+typedef struct _COAUTHINFO
+{
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ LPWSTR pwszServerPrincName;
+ DWORD dwAuthnLevel;
+ DWORD dwImpersonationLevel;
+ COAUTHIDENTITY * pAuthIdentityData;
+ DWORD dwCapabilities;
+} COAUTHINFO;
+
+typedef struct _COSERVERINFO
+{
+ DWORD dwReserved1;
+ LPWSTR pwszName;
+ COAUTHINFO * pAuthInfo;
+ DWORD dwReserved2;
+} COSERVERINFO;
+
+//
+// SCODE, HRESULT
+//
+//
+// Status 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
+// +-+-----------------------------+-------------------------------+
+// |S| Facility | Code |
+// +-+-----------------------------+-------------------------------+
+//
+// where
+//
+// S - is the severity code
+//
+// 0 - Success
+// 1 - Error
+//
+//
+// Facility - is the facility code
+//
+// Code - is the facility's status code
+//
+// SCODE and HRESULT are mktyplib base types.
+//
+typedef LONG SCODE;
+cpp_quote("#ifndef _HRESULT_DEFINED")
+cpp_quote("#define _HRESULT_DEFINED")
+#if defined(_STRICT_HRESULT)
+typedef struct _HRESULT_STRUCT {
+ DWORD Data1;
+} HRESULT_STRUCT, *PHRESULT_STRUCT;
+typedef PHRESULT_STRUCT HRESULT;
+#else // defined(_STRICT_HRESULT)
+typedef LONG HRESULT;
+#endif // defined(_STRICT_HRESULT)
+cpp_quote("#endif // !_HRESULT_DEFINED")
+
+typedef SCODE *PSCODE;
+
+
+cpp_quote("#ifndef GUID_DEFINED")
+cpp_quote("#define GUID_DEFINED")
+typedef struct _GUID
+{
+ DWORD Data1;
+ WORD Data2;
+ WORD Data3;
+ BYTE Data4[8];
+} GUID;
+cpp_quote("#endif // !GUID_DEFINED")
+
+cpp_quote("#if !defined( __LPGUID_DEFINED__ )")
+cpp_quote("#define __LPGUID_DEFINED__")
+typedef GUID *LPGUID;
+cpp_quote("#endif // !__LPGUID_DEFINED__")
+
+cpp_quote("#ifndef __OBJECTID_DEFINED")
+cpp_quote("#define __OBJECTID_DEFINED")
+cpp_quote("#define _OBJECTID_DEFINED")
+typedef struct _OBJECTID // NOTE!! Order of structure members is important for OFS
+{ // enumeration.
+ GUID Lineage; // Unique for objects copied from same original and copies of.
+ unsigned long Uniquifier; // Random, to provide uniqueness within small set with same
+} OBJECTID; // lineage id.
+cpp_quote("#endif // !_OBJECTID_DEFINED")
+
+
+
+
+cpp_quote("#if !defined( __IID_DEFINED__ )")
+cpp_quote("#define __IID_DEFINED__")
+
+// Interface ID are just a kind of GUID
+typedef GUID IID;
+typedef IID *LPIID;
+cpp_quote("#define IID_NULL GUID_NULL")
+cpp_quote("#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)")
+
+// Class ID are just a kind of GUID
+typedef GUID CLSID;
+typedef CLSID *LPCLSID;
+cpp_quote("#define CLSID_NULL GUID_NULL")
+cpp_quote("#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)")
+
+// Format ID are just a kind of GUID
+typedef GUID FMTID;
+typedef FMTID *LPFMTID;
+cpp_quote("#define FMTID_NULL GUID_NULL")
+cpp_quote("#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)")
+
+//The following typedefs are used internally by MIDL.
+cpp_quote("#if 0")
+#if defined(__midl)
+ /* MIDL 2.0 definitions */
+ typedef GUID *REFGUID;
+ typedef IID *REFIID;
+ typedef CLSID *REFCLSID;
+ typedef FMTID *REFFMTID;
+#else
+ /* MIDL 1.1 definitions */
+ typedef GUID REFGUID;
+ typedef IID REFIID;
+ typedef CLSID REFCLSID;
+ typedef FMTID REFFMTID;
+#endif
+cpp_quote("#endif // 0")
+
+cpp_quote("#if defined(__cplusplus)")
+
+cpp_quote("#ifndef _REFGUID_DEFINED")
+cpp_quote("#define _REFGUID_DEFINED")
+cpp_quote("#define REFGUID const GUID &")
+cpp_quote("#endif // !_REFGUID_DEFINED")
+
+cpp_quote("#ifndef _REFIID_DEFINED")
+cpp_quote("#define _REFIID_DEFINED")
+cpp_quote("#define REFIID const IID &")
+cpp_quote("#endif // !_REFIID_DEFINED")
+
+cpp_quote("#ifndef _REFCLSID_DEFINED")
+cpp_quote("#define _REFCLSID_DEFINED")
+cpp_quote("#define REFCLSID const CLSID &")
+cpp_quote("#endif // !_REFCLSID_DEFINED")
+
+cpp_quote("#ifndef _REFFMTID_DEFINED")
+cpp_quote("#define _REFFMTID_DEFINED")
+cpp_quote("#define REFFMTID const FMTID &")
+cpp_quote("#endif // !_REFFMTID_DEFINED")
+
+
+cpp_quote("#else // !__cplusplus")
+
+cpp_quote("#ifndef _REFGUID_DEFINED")
+cpp_quote("#define _REFGUID_DEFINED")
+cpp_quote("#define REFGUID const GUID * const")
+cpp_quote("#endif // !_REFGUID_DEFINED")
+
+cpp_quote("#ifndef _REFIID_DEFINED")
+cpp_quote("#define _REFIID_DEFINED")
+cpp_quote("#define REFIID const IID * const")
+cpp_quote("#endif // !_REFIID_DEFINED")
+
+
+cpp_quote("#ifndef _REFCLSID_DEFINED")
+cpp_quote("#define _REFCLSID_DEFINED")
+cpp_quote("#define REFCLSID const CLSID * const")
+cpp_quote("#endif // !_REFCLSID_DEFINED")
+
+cpp_quote("#ifndef _REFFMTID_DEFINED")
+cpp_quote("#define _REFFMTID_DEFINED")
+cpp_quote("#define REFFMTID const FMTID * const")
+cpp_quote("#endif // !_REFFMTID_DEFINED")
+
+cpp_quote("#endif // !__cplusplus")
+
+cpp_quote("#endif // !__IID_DEFINED__")
+
+/************************* Misc types ***********************************/
+
+// Common typdefs used in API paramaters, gleamed from compobj.h
+
+// memory context values; passed to CoGetMalloc
+typedef enum tagMEMCTX
+{
+ MEMCTX_TASK = 1, // task (private) memory
+ MEMCTX_SHARED = 2, // shared memory (between processes)
+ MEMCTX_MACSYSTEM = 3, // on the mac, the system heap
+ // these are mostly for internal use...
+ MEMCTX_UNKNOWN = -1, // unknown context (when asked about it)
+ MEMCTX_SAME = -2, // same context (as some other pointer)
+} MEMCTX;
+
+
+// For IRunningObjectTable::Register
+cpp_quote("#ifndef _ROTFLAGS_DEFINED")
+cpp_quote("#define _ROTFLAGS_DEFINED")
+cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1")
+cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2")
+cpp_quote("#endif // !_ROTFLAGS_DEFINED")
+
+// Maximum size of comparison buffer for IROTData::GetComparisonData
+cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED")
+cpp_quote("#define _ROT_COMPARE_MAX_DEFINED")
+cpp_quote("#define ROT_COMPARE_MAX 2048")
+cpp_quote("#endif // !_ROT_COMPARE_MAX_DEFINED")
+
+
+// class context: used to determine what scope and kind of class object to use
+// NOTE: this is a bitwise enum
+typedef enum tagCLSCTX
+{
+ CLSCTX_INPROC_SERVER = 0x01, // server dll (runs in same process as caller)
+ CLSCTX_INPROC_HANDLER = 0x02, // handler dll (runs in same process as caller)
+ CLSCTX_LOCAL_SERVER = 0x04, // server exe (runs on same machine; diff proc)
+ CLSCTX_INPROC_SERVER16 = 0x08, // 16-bit server dll (runs in same process as caller)
+ CLSCTX_REMOTE_SERVER = 0x10, // remote server exe (runs on different machine)
+ CLSCTX_INPROC_HANDLER16 = 0x20, // 16-bit handler dll (runs in same process as caller)
+ CLSCTX_INPROC_SERVERX86 = 0x40, // Wx86 server dll (runs in same process as caller)
+ CLSCTX_INPROC_HANDLERX86 = 0x80, // Wx86 handler dll (runs in same process as caller)
+} CLSCTX;
+
+
+ // marshaling flags; passed to CoMarshalInterface
+ typedef enum tagMSHLFLAGS
+ {
+ MSHLFLAGS_NORMAL = 0, // normal marshaling via proxy/stub
+ MSHLFLAGS_TABLESTRONG = 1, // keep object alive; must explicitly release
+ MSHLFLAGS_TABLEWEAK = 2, // doesn't hold object alive; still must release
+ MSHLFLAGS_NOPING = 4 // remote clients dont 'ping' to keep objects alive
+ } MSHLFLAGS;
+
+
+// marshal context: determines the destination context of the marshal operation
+typedef enum tagMSHCTX
+{
+ MSHCTX_LOCAL = 0, // unmarshal context is local (eg.shared memory)
+ MSHCTX_NOSHAREDMEM = 1, // unmarshal context has no shared memory access
+ MSHCTX_DIFFERENTMACHINE = 2,// unmarshal context is on a different machine
+ MSHCTX_INPROC = 3, // unmarshal context is on different thread
+} MSHCTX;
+
+
+//
+// Common typedefs for paramaters used in data view API's, gleamed
+// from dvobj.h
+//
+
+// Data/View aspect; specifies the desired aspect of the object when
+// drawing or getting data.
+typedef enum tagDVASPECT
+{
+ DVASPECT_CONTENT = 1,
+ DVASPECT_THUMBNAIL = 2,
+ DVASPECT_ICON = 4,
+ DVASPECT_DOCPRINT = 8
+} DVASPECT;
+
+/****** Storage types *************************************************/
+
+
+/* Storage commit types */
+typedef enum tagSTGC
+{
+ STGC_DEFAULT = 0,
+ STGC_OVERWRITE = 1,
+ STGC_ONLYIFCURRENT = 2,
+ STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
+} STGC;
+
+
+typedef enum tagSTGMOVE
+{
+ STGMOVE_MOVE = 0,
+ STGMOVE_COPY = 1,
+ STGMOVE_SHALLOWCOPY = 2
+} STGMOVE;
+
+typedef enum tagSTATFLAG
+{
+ STATFLAG_DEFAULT = 0,
+ STATFLAG_NONAME = 1,
+ STATFLAG_NOOPEN = 2
+} STATFLAG;
+
+
+typedef [context_handle] void *HCONTEXT;
+
+/****** Critical Section Wrappers ***********************************/
+
+
+/* if not already picked up from olenls.h */
+cpp_quote("#ifndef _LCID_DEFINED")
+cpp_quote("#define _LCID_DEFINED")
+typedef DWORD LCID;
+cpp_quote("#endif // !_LCID_DEFINED")
+
+// #######################################################################
+//
+// User marshal support for Windows data types.
+
+//
+// Frequently used helpers: sized blobs
+//
+// Never put [user_marshal] or [wire_marshal] on the helpers directly.
+//
+
+// Simple blobs.
+
+typedef struct _BYTE_BLOB {
+ unsigned long clSize;
+ [size_is(clSize)] byte abData[];
+} BYTE_BLOB;
+
+typedef [unique] BYTE_BLOB * UP_BYTE_BLOB;
+
+typedef struct _WORD_BLOB {
+ unsigned long clSize;
+ [size_is(clSize)] unsigned short asData[];
+} WORD_BLOB;
+
+typedef [unique] WORD_BLOB * UP_WORD_BLOB;
+
+typedef struct _DWORD_BLOB {
+ unsigned long clSize;
+ [size_is(clSize)] unsigned long alData[];
+} DWORD_BLOB;
+
+typedef [unique] DWORD_BLOB * UP_DWORD_BLOB;
+
+// Flagged blobs.
+
+typedef struct _FLAGGED_BYTE_BLOB {
+ unsigned long fFlags;
+ unsigned long clSize;
+ [size_is(clSize)] byte abData[];
+} FLAGGED_BYTE_BLOB;
+
+typedef [unique] FLAGGED_BYTE_BLOB * UP_FLAGGED_BYTE_BLOB;
+
+typedef struct _FLAGGED_WORD_BLOB {
+ unsigned long fFlags;
+ unsigned long clSize;
+ [size_is(clSize)] unsigned short asData[];
+} FLAGGED_WORD_BLOB;
+
+typedef [unique] FLAGGED_WORD_BLOB * UP_FLAGGED_WORD_BLOB;
+
+// Frequently used helpers with sized pointers.
+
+typedef struct _BYTE_SIZEDARR {
+ unsigned long clSize;
+ [size_is(clSize)] byte * pData ;
+} BYTE_SIZEDARR;
+
+typedef struct _SHORT_SIZEDARR {
+ unsigned long clSize;
+ [size_is(clSize)] unsigned short* pData ;
+} WORD_SIZEDARR;
+
+typedef struct _LONG_SIZEDARR {
+ unsigned long clSize;
+ [size_is(clSize)] unsigned long * pData ;
+} DWORD_SIZEDARR;
+
+typedef struct _HYPER_SIZEDARR {
+ unsigned long clSize;
+ [size_is(clSize)] hyper * pData ;
+} HYPER_SIZEDARR;
+
+
+// #########################################################################
+//
+// Constants for the call context
+//
+
+const unsigned long WDT_INPROC_CALL = 0x48746457;
+const unsigned long WDT_REMOTE_CALL = 0x52746457;
+
+
+// #########################################################################
+//
+// CLIPFORMAT
+//
+
+typedef union _userCLIPFORMAT switch(long fContext) u
+{
+ case WDT_INPROC_CALL: DWORD dwValue;
+ case WDT_REMOTE_CALL: [string] wchar_t * pwszName;
+} userCLIPFORMAT;
+
+typedef [unique] userCLIPFORMAT * wireCLIPFORMAT;
+
+typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT;
+
+
+// #########################################################################
+//
+// Good for most of the gdi handles.
+
+typedef union _GDI_NONREMOTE switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: DWORD_BLOB *hRemote;
+} GDI_NONREMOTE;
+
+// #########################################################################
+//
+// HGLOBAL
+//
+// A global may be Null or may be non-NULL with 0 length.
+
+typedef union _userHGLOBAL switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB * hRemote;
+ default: long hGlobal;
+} userHGLOBAL;
+
+typedef [unique] userHGLOBAL * wireHGLOBAL;
+
+// #########################################################################
+//
+// HMETAFILE
+//
+
+typedef union _userHMETAFILE switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: BYTE_BLOB * hRemote;
+ default: long hGlobal;
+} userHMETAFILE;
+
+// #########################################################################
+//
+// HMETAFILEPICT
+//
+typedef struct _remoteMETAFILEPICT
+{
+ long mm;
+ long xExt;
+ long yExt;
+ userHMETAFILE * hMF;
+} remoteMETAFILEPICT;
+
+typedef union _userHMETAFILEPICT switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: remoteMETAFILEPICT* hRemote;
+ default: long hGlobal;
+} userHMETAFILEPICT;
+
+// #########################################################################
+//
+// HENHMETAFILE
+//
+
+typedef union _userHENHMETAFILE switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: BYTE_BLOB * hRemote;
+ default: long hGlobal;
+} userHENHMETAFILE;
+
+// #########################################################################
+//
+// HBITMAP
+//
+
+// RemHBITMAP was just a byte blob, but the whole bitmap structure was copied
+// at the beginning of the buffer.
+
+// So, we take BITMAP fields from wingdi.x
+
+typedef struct _userBITMAP
+{
+ LONG bmType;
+ LONG bmWidth;
+ LONG bmHeight;
+ LONG bmWidthBytes;
+ WORD bmPlanes;
+ WORD bmBitsPixel;
+ ULONG cbSize;
+ [size_is(cbSize)] byte pBuffer[];
+} userBITMAP;
+
+
+typedef union _userHBITMAP switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: userBITMAP * hRemote;
+ default: long hGlobal;
+} userHBITMAP;
+
+// #########################################################################
+//
+// HPALETTE
+//
+
+// PALETTEENTRY is in wingdi.x, it is a struct with 4 bytes.
+// LOGPALETTE is in wingdi.x, it is a conf struct with paletteentries and
+// a version field
+
+typedef struct tagrpcLOGPALETTE {
+ WORD palVersion;
+ WORD palNumEntries;
+ [size_is( palNumEntries )] PALETTEENTRY palPalEntry[];
+} rpcLOGPALETTE;
+
+typedef union _userHPALETTE switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: rpcLOGPALETTE * hRemote;
+ default: long hGlobal;
+} userHPALETTE;
+
+
+// #########################################################################
+//
+// Handles passed locally as longs.
+//
+
+typedef union _RemotableHandle switch( long fContext ) u
+{
+ case WDT_INPROC_CALL: long hInproc;
+ case WDT_REMOTE_CALL: long hRemote;
+} RemotableHandle;
+
+typedef [unique] RemotableHandle * wireHWND;
+typedef [unique] RemotableHandle * wireHMENU;
+typedef [unique] RemotableHandle * wireHACCEL;
+typedef [unique] RemotableHandle * wireHBRUSH;
+typedef [unique] RemotableHandle * wireHFONT;
+typedef [unique] RemotableHandle * wireHDC;
+typedef [unique] RemotableHandle * wireHICON;
+
+
+cpp_quote("#if 0")
+#ifndef _MIDL_DECLARE_WIREM_HANDLE
+DECLARE_WIREM_HANDLE( HWND );
+DECLARE_WIREM_HANDLE( HMENU );
+DECLARE_WIREM_HANDLE( HACCEL );
+DECLARE_WIREM_HANDLE( HBRUSH );
+DECLARE_WIREM_HANDLE( HFONT );
+DECLARE_WIREM_HANDLE( HDC );
+DECLARE_WIREM_HANDLE( HICON );
+#endif
+
+cpp_quote("#ifndef _HCURSOR_DEFINED")
+cpp_quote("#define _HCURSOR_DEFINED")
+typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */
+cpp_quote("#endif // !_HCURSOR_DEFINED")
+
+cpp_quote("/* tagTEXTMETRICW was copied from wingdi.h for MIDL */")
+typedef struct tagTEXTMETRICW {
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ WCHAR tmFirstChar;
+ WCHAR tmLastChar;
+ WCHAR tmDefaultChar;
+ WCHAR tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+} TEXTMETRICW;
+
+cpp_quote("#endif //0")
+
+cpp_quote("#ifndef _WIN32 // The following code is for Win16 only")
+cpp_quote("#ifndef WINAPI // If not included with 3.1 headers...")
+
+// Message structure
+
+typedef struct tagMSG {
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+ DWORD time;
+ POINT pt;
+} MSG, *PMSG, *NPMSG, *LPMSG;
+cpp_quote("#endif // _WIN32")
+cpp_quote("#endif // WINAPI")
+
+
+typedef [unique] userHBITMAP * wireHBITMAP;
+typedef [unique] userHPALETTE * wireHPALETTE;
+typedef [unique] userHENHMETAFILE * wireHENHMETAFILE;
+typedef [unique] userHMETAFILE * wireHMETAFILE;
+typedef [unique] userHMETAFILEPICT* wireHMETAFILEPICT;
+
+cpp_quote("#if 0")
+
+DECLARE_WIREM_HANDLE( HGLOBAL );
+typedef HGLOBAL HLOCAL;
+
+DECLARE_WIREM_HANDLE( HBITMAP );
+DECLARE_WIREM_HANDLE( HPALETTE );
+DECLARE_WIREM_HANDLE( HENHMETAFILE );
+DECLARE_WIREM_HANDLE( HMETAFILE );
+cpp_quote("#endif //0")
+
+DECLARE_WIREM_HANDLE( HMETAFILEPICT );
+
+}
+
+// #########################################################################
+//
+
+typedef double DATE;
+
+/* This is a helper struct for use in handling currency. */
+cpp_quote("#ifndef _tagCY_DEFINED")
+cpp_quote("#define _tagCY_DEFINED")
+cpp_quote("#define _CY_DEFINED")
+
+cpp_quote("#if 0")
+
+cpp_quote("/* the following isn't the real definition of CY, but it is */")
+cpp_quote("/* what RPC knows how to remote */")
+typedef struct tagCY {
+ LONGLONG int64;
+} CY;
+
+
+cpp_quote("#else /* 0 */")
+
+cpp_quote("/* real definition that makes the C++ compiler happy */")
+cpp_quote("typedef union tagCY {")
+cpp_quote(" struct {")
+cpp_quote("#ifdef _MAC")
+cpp_quote(" long Hi;")
+cpp_quote(" long Lo;")
+cpp_quote("#else")
+cpp_quote(" unsigned long Lo;")
+cpp_quote(" long Hi;")
+cpp_quote("#endif")
+cpp_quote(" };")
+cpp_quote(" LONGLONG int64;")
+cpp_quote("} CY;")
+cpp_quote("#endif /* 0 */")
+
+cpp_quote("#endif /* _tagCY_DEFINED */")
+
+cpp_quote("#if 0 /* _tagDEC_DEFINED */")
+cpp_quote("/* The following isn't the real definition of Decimal type, */")
+cpp_quote("/* but it is what RPC knows how to remote */")
+
+typedef struct tagDEC {
+ USHORT wReserved;
+ BYTE scale;
+ BYTE sign;
+ ULONG Hi32;
+ ULONGLONG Lo64;
+} DECIMAL;
+
+cpp_quote("#else /* _tagDEC_DEFINED */")
+
+cpp_quote("/* real definition that makes the C++ compiler happy */")
+cpp_quote("typedef struct tagDEC {")
+cpp_quote(" USHORT wReserved;")
+cpp_quote(" union {")
+cpp_quote(" struct {")
+cpp_quote(" BYTE scale;")
+cpp_quote(" BYTE sign;")
+cpp_quote(" };")
+cpp_quote(" USHORT signscale;")
+cpp_quote(" };")
+cpp_quote(" ULONG Hi32;")
+cpp_quote(" union {")
+cpp_quote(" struct {")
+cpp_quote("#ifdef _MAC")
+cpp_quote(" ULONG Mid32;")
+cpp_quote(" ULONG Lo32;")
+cpp_quote("#else")
+cpp_quote(" ULONG Lo32;")
+cpp_quote(" ULONG Mid32;")
+cpp_quote("#endif")
+cpp_quote(" };")
+cpp_quote(" ULONGLONG Lo64;")
+cpp_quote(" };")
+cpp_quote("} DECIMAL;")
+
+cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)")
+cpp_quote("#define DECIMAL_SETZERO(dec) \\")
+cpp_quote(" {(dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0;}")
+
+cpp_quote("#endif /* _tagDEC_DEFINED */")
+
+/* IDL declarations for BSTR how to transmit them */
+//
+typedef [unique] FLAGGED_WORD_BLOB * wireBSTR;
+typedef [wire_marshal( wireBSTR )] OLECHAR * BSTR;
+typedef BSTR * LPBSTR;
+
+cpp_quote("/* 0 == FALSE, -1 == TRUE */")
+typedef short VARIANT_BOOL;
+cpp_quote("#if !__STDC__ && (_MSC_VER <= 1000)")
+cpp_quote("/* For backward compatibility */")
+typedef VARIANT_BOOL _VARIANT_BOOL;
+cpp_quote("#else")
+cpp_quote("/* ANSI C/C++ reserve bool as keyword */")
+cpp_quote("#define _VARIANT_BOOL /##/")
+cpp_quote("#endif")
+typedef boolean BOOLEAN;
+
+cpp_quote("/* The BSTRBLOB structure is used by some implementations */")
+cpp_quote("/* of the IPropertyStorage interface when marshaling BSTRs */")
+cpp_quote("/* on systems which don't support BSTR marshaling. */")
+
+cpp_quote("#ifndef _tagBSTRBLOB_DEFINED")
+cpp_quote("#define _tagBSTRBLOB_DEFINED")
+typedef struct tagBSTRBLOB
+{
+ ULONG cbSize;
+ [size_is(cbSize)] BYTE *pData;
+} BSTRBLOB, *LPBSTRBLOB;
+cpp_quote("#endif")
+
+cpp_quote("#define VARIANT_TRUE ((VARIANT_BOOL)0xffff)")
+cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0)")
+
+cpp_quote("#ifndef _tagBLOB_DEFINED")
+cpp_quote("#define _tagBLOB_DEFINED")
+cpp_quote("#define _BLOB_DEFINED")
+cpp_quote("#define _LPBLOB_DEFINED")
+typedef struct tagBLOB {
+ ULONG cbSize;
+ [size_is(cbSize)]
+ BYTE *pBlobData;
+} BLOB, * LPBLOB;
+cpp_quote("#endif")
+
+typedef struct tagCLIPDATA {
+ ULONG cbSize; // count that includes sizeof(ulClipFmt)
+ long ulClipFmt; // long to keep alignment
+ [size_is(cbSize-4)]
+ BYTE * pClipData; // cbSize-sizeof(ULONG) bytes of data in clipboard format
+} CLIPDATA;
+
+cpp_quote("// Macro to calculate the size of the above pClipData")
+cpp_quote("#define CBPCLIPDATA(clipdata) ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )")
+
+
+typedef unsigned short VARTYPE;
+
+// #########################################################################
+//
+// VARTYPE
+//
+// #########################################################################
+
+
+cpp_quote("/*")
+cpp_quote(" * VARENUM usage key,")
+cpp_quote(" *")
+cpp_quote(" * * [V] - may appear in a VARIANT")
+cpp_quote(" * * [T] - may appear in a TYPEDESC")
+cpp_quote(" * * [P] - may appear in an OLE property set")
+cpp_quote(" * * [S] - may appear in a Safe Array")
+cpp_quote(" *")
+cpp_quote(" *")
+cpp_quote(" * VT_EMPTY [V] [P] nothing")
+cpp_quote(" * VT_NULL [V] [P] SQL style Null")
+cpp_quote(" * VT_I2 [V][T][P][S] 2 byte signed int")
+cpp_quote(" * VT_I4 [V][T][P][S] 4 byte signed int")
+cpp_quote(" * VT_R4 [V][T][P][S] 4 byte real")
+cpp_quote(" * VT_R8 [V][T][P][S] 8 byte real")
+cpp_quote(" * VT_CY [V][T][P][S] currency")
+cpp_quote(" * VT_DATE [V][T][P][S] date")
+cpp_quote(" * VT_BSTR [V][T][P][S] OLE Automation string")
+cpp_quote(" * VT_DISPATCH [V][T][P][S] IDispatch *")
+cpp_quote(" * VT_ERROR [V][T][P][S] SCODE")
+cpp_quote(" * VT_BOOL [V][T][P][S] True=-1, False=0")
+cpp_quote(" * VT_VARIANT [V][T][P][S] VARIANT *")
+cpp_quote(" * VT_UNKNOWN [V][T] [S] IUnknown *")
+cpp_quote(" * VT_DECIMAL [V][T] [S] 16 byte fixed point")
+cpp_quote(" * VT_I1 [T] signed char")
+cpp_quote(" * VT_UI1 [V][T][P][S] unsigned char")
+cpp_quote(" * VT_UI2 [T][P] unsigned short")
+cpp_quote(" * VT_UI4 [T][P] unsigned short")
+cpp_quote(" * VT_I8 [T][P] signed 64-bit int")
+cpp_quote(" * VT_UI8 [T][P] unsigned 64-bit int")
+cpp_quote(" * VT_INT [T] signed machine int")
+cpp_quote(" * VT_UINT [T] unsigned machine int")
+cpp_quote(" * VT_VOID [T] C style void")
+cpp_quote(" * VT_HRESULT [T] Standard return type")
+cpp_quote(" * VT_PTR [T] pointer type")
+cpp_quote(" * VT_SAFEARRAY [T] (use VT_ARRAY in VARIANT)")
+cpp_quote(" * VT_CARRAY [T] C style array")
+cpp_quote(" * VT_USERDEFINED [T] user defined type")
+cpp_quote(" * VT_LPSTR [T][P] null terminated string")
+cpp_quote(" * VT_LPWSTR [T][P] wide null terminated string")
+cpp_quote(" * VT_FILETIME [P] FILETIME")
+cpp_quote(" * VT_BLOB [P] Length prefixed bytes")
+cpp_quote(" * VT_STREAM [P] Name of the stream follows")
+cpp_quote(" * VT_STORAGE [P] Name of the storage follows")
+cpp_quote(" * VT_STREAMED_OBJECT [P] Stream contains an object")
+cpp_quote(" * VT_STORED_OBJECT [P] Storage contains an object")
+cpp_quote(" * VT_BLOB_OBJECT [P] Blob contains an object")
+cpp_quote(" * VT_CF [P] Clipboard format")
+cpp_quote(" * VT_CLSID [P] A Class ID")
+
+cpp_quote(" * VT_VECTOR [P] simple counted array")
+cpp_quote(" * VT_ARRAY [V] SAFEARRAY*")
+cpp_quote(" * VT_BYREF [V] void* for local use")
+cpp_quote(" * VT_BSTR_BLOB Reserved for system use")
+cpp_quote(" */")
+
+enum VARENUM
+{
+ VT_EMPTY = 0,
+ VT_NULL = 1,
+ VT_I2 = 2,
+ VT_I4 = 3,
+ VT_R4 = 4,
+ VT_R8 = 5,
+ VT_CY = 6,
+ VT_DATE = 7,
+ VT_BSTR = 8,
+ VT_DISPATCH = 9,
+ VT_ERROR = 10,
+ VT_BOOL = 11,
+ VT_VARIANT = 12,
+ VT_UNKNOWN = 13,
+ VT_DECIMAL = 14,
+
+ VT_I1 = 16,
+ VT_UI1 = 17,
+ VT_UI2 = 18,
+ VT_UI4 = 19,
+ VT_I8 = 20,
+ VT_UI8 = 21,
+ VT_INT = 22,
+ VT_UINT = 23,
+ VT_VOID = 24,
+ VT_HRESULT = 25,
+ VT_PTR = 26,
+ VT_SAFEARRAY = 27,
+ VT_CARRAY = 28,
+ VT_USERDEFINED = 29,
+ VT_LPSTR = 30,
+ VT_LPWSTR = 31,
+
+ VT_FILETIME = 64,
+ VT_BLOB = 65,
+ VT_STREAM = 66,
+ VT_STORAGE = 67,
+ VT_STREAMED_OBJECT = 68,
+ VT_STORED_OBJECT = 69,
+ VT_BLOB_OBJECT = 70,
+ VT_CF = 71,
+ VT_CLSID = 72,
+
+ VT_BSTR_BLOB = 0x0fff,
+
+ VT_VECTOR = 0x1000,
+ VT_ARRAY = 0x2000,
+ VT_BYREF = 0x4000,
+ VT_RESERVED = 0x8000,
+
+ VT_ILLEGAL = 0xffff,
+ VT_ILLEGALMASKED = 0x0fff,
+ VT_TYPEMASK = 0x0fff
+};
+
+// Property stuff
+typedef ULONG PROPID;
+
+// Access Control - ntseapi.h
+cpp_quote( "#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED" )
+cpp_quote( "#define SID_IDENTIFIER_AUTHORITY_DEFINED" )
+typedef struct _SID_IDENTIFIER_AUTHORITY {
+ UCHAR Value[6];
+} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
+cpp_quote( "#endif" )
+
+cpp_quote( "#ifndef SID_DEFINED" )
+cpp_quote( "#define SID_DEFINED" )
+typedef struct _SID {
+ UCHAR Revision;
+ UCHAR SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+ [size_is(SubAuthorityCount)] ULONG SubAuthority[*];
+} SID, *PISID;
+cpp_quote( "#endif" )
+
diff --git a/public/sdk/inc/zext.h b/public/sdk/inc/zext.h
new file mode 100644
index 000000000..ef4203de6
--- /dev/null
+++ b/public/sdk/inc/zext.h
@@ -0,0 +1,603 @@
+/*++
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ ext.h
+
+Abstract:
+
+ Microsoft Editor extension definitions.
+
+#ifndef SHIP
+
+ NOTES:
+ THIS FILE IS SHIPPED WITH THE PRODUCT!!!!
+
+ BE VERY carefull what gets put into this file. Technically, if it
+ is NOT required for extension writers, it does NOT belong here.
+
+ 1) This note, the file history and all code within "#ifndef SHIP" and
+ "#if defined EDITOR" conditionals should be REMOVED before shipping.
+
+Author:
+
+ Ramon Juan San Andres (ramonsa) 06-Nov-1990 ported from M 1.02
+
+Revision History:
+
+ 26-Nov-1991 mz Strip off near/far
+
+
+#endif
+
+--*/
+
+
+#include <windows.h>
+
+
+//
+// Macro Definitions
+//
+// BUFLEN is the maximum line length that can be passed or will be returned
+// by the editor.
+//
+#define BUFLEN 2048
+
+//
+// NT versions of the editor no longer use 16-bit specific attributes.
+// Set them into ignore state
+//
+
+#define near
+#define far
+#define LOADDS
+#define EXPORT
+#define EXTERNAL
+#define INTERNAL
+
+#undef pascal
+#define pascal
+
+//
+// RQ_... are various request types supported for Get/Set EditorObject
+//
+#define RQ_FILE 0x1000 // GetEditorObject: File request
+#define RQ_FILE_HANDLE 0x1000 // File Handle
+#define RQ_FILE_NAME 0x1100 // ASCIIZ filename
+#define RQ_FILE_FLAGS 0x1200 // flags
+#define RQ_FILE_REFCNT 0x1300 // reference count
+#define RQ_FILE_MODTIME 0x1400 // modified time
+#define RQ_WIN 0x2000 // Window request
+#define RQ_WIN_HANDLE 0x2000 // Window Handle
+#define RQ_WIN_CONTENTS 0x2100 // Window Contents
+#define RQ_WIN_CUR 0x2200 // Current Window
+#define RQ_COLOR 0x9000 // Color request
+#define RQ_CLIP 0xf000 // clipboard type
+
+#define RQ_THIS_OBJECT 0x00FF // function is directed to input object
+
+#define RQ_FILE_INIT 0x00FE // file is init file
+
+//
+// toPif is used when placing numeric or boolean switches in the swiDesc table
+// to eliminate C 5.X compiler warnings.
+//
+// For example: { "Switchname", toPIF(switchvar), SWI_BOOLEAN },
+//
+#define toPIF(x) (PIF)(long)(void *)&x
+
+
+//
+// Editor color table endicies. (Colors USERCOLORMIN - USERCOLORMAX are
+// unassigned and available for extension use).
+//
+#define FGCOLOR 21 // foreground (normal) color
+#define HGCOLOR (1 + FGCOLOR) // highlighted region color
+#define INFCOLOR (1 + HGCOLOR) // information color
+#define SELCOLOR (1 + INFCOLOR) // selection color
+#define WDCOLOR (1 + SELCOLOR) // window border color
+#define STACOLOR (1 + WDCOLOR) // status line color
+#define ERRCOLOR (1 + STACOLOR) // error message color
+#define USERCOLORMIN (1 + ERRCOLOR) // begining of extension colors
+#define USERCOLORMAX 35 // end of extension colors
+
+
+//
+// General type Definitions
+//
+typedef int COL; // column or position with line
+
+#if !defined (EDITOR)
+
+#if !defined( _FLAGTYPE_DEFINED_ )
+#define _FLAGTYPE_DEFINED_ 1
+typedef char flagType;
+#endif
+typedef long LINE; // line number within file
+typedef void* PFILE; // editor file handle
+
+#if !defined (EXTINT)
+
+typedef void* PWND; // editor window handle
+
+#endif // EXTINT
+
+#endif // EDITOR
+
+
+typedef char buffer[BUFLEN]; // miscellaneous buffer
+typedef char linebuf[BUFLEN]; // line buffer
+typedef char pathbuf[MAX_PATH]; // Pathname buffer
+
+
+typedef struct fl { // file location
+ LINE lin; // - line number
+ COL col; // - column
+} fl;
+
+typedef struct sl { // screen location
+ int lin; // - line number
+ int col; // - column
+} sl;
+
+typedef struct rn { // file range
+ fl flFirst; // - Lower line, or leftmost col
+ fl flLast; // - Higher, or rightmost
+} rn;
+
+
+typedef struct lineAttr { // Line color attribute info
+ unsigned char attr; // - Attribute of piece
+ unsigned short len; // - Bytes in colored piece
+} lineAttr;
+
+#if !defined (cwExtraWnd)
+
+typedef struct ARC {
+ BYTE axLeft;
+ BYTE ayTop;
+ BYTE axRight;
+ BYTE ayBottom;
+} ARC;
+#endif // cwExtraWnd
+
+
+//
+// Argument defininition structures.
+//
+// We define a structure for each of the argument types that may be
+// passed to an extension function. Then, we define the structure
+// argType which is used to pass these arguments around in a union.
+//
+typedef struct noargType { // no argument specified
+ LINE y; // - cursor line
+ COL x; // - cursor column
+} NOARGTYPE;
+
+typedef struct textargType { // text argument specified
+ int cArg; // - count of <arg>s pressed
+ LINE y; // - cursor line
+ COL x; // - cursor column
+ char *pText; // - ptr to text of arg
+} TEXTARGTYPE;
+
+typedef struct nullargType { // null argument specified
+ int cArg; // - count of <arg>s pressed
+ LINE y; // - cursor line
+ COL x; // - cursor column
+} NULLARGTYPE;
+
+typedef struct lineargType { // line argument specified
+ int cArg; // - count of <arg>s pressed
+ LINE yStart; // - starting line of range
+ LINE yEnd; // - ending line of range
+} LINEARGTYPE;
+
+typedef struct streamargType { // stream argument specified
+ int cArg; // - count of <arg>s pressed
+ LINE yStart; // - starting line of region
+ COL xStart; // - starting column of region
+ LINE yEnd; // - ending line of region
+ COL xEnd; // - ending column of region
+} STREAMARGTYPE;
+
+typedef struct boxargType { // box argument specified
+ int cArg; // - count of <arg>s pressed
+ LINE yTop; // - top line of box
+ LINE yBottom; // - bottom line of bix
+ COL xLeft; // - left column of box
+ COL xRight; // - right column of box
+} BOXARGTYPE;
+
+typedef union ARGUNION {
+ struct noargType noarg;
+ struct textargType textarg;
+ struct nullargType nullarg;
+ struct lineargType linearg;
+ struct streamargType streamarg;
+ struct boxargType boxarg;
+} ARGUNION;
+
+typedef struct argType {
+ int argType;
+ ARGUNION arg;
+} ARG;
+
+
+
+//
+// Function definition table definitions
+//
+typedef unsigned long CMDDATA;
+typedef flagType (*funcCmd)(CMDDATA argData, ARG *pArg, flagType fMeta);
+
+typedef struct cmdDesc { // function definition entry
+ char *name; // - pointer to name of fcn
+ funcCmd func; // - pointer to function
+ CMDDATA arg; // - used internally by editor
+ unsigned argType; // - user args allowed
+} CMD, *PCMD;
+
+
+typedef unsigned short KeyHandle;
+
+#define NOARG 0x0001 // no argument specified
+#define TEXTARG 0x0002 // text specified
+#define NULLARG 0x0004 // arg + no cursor movement
+#define NULLEOL 0x0008 // null arg => text from arg->eol
+#define NULLEOW 0x0010 // null arg => text from arg->end word
+#define LINEARG 0x0020 // range of entire lines
+#define STREAMARG 0x0040 // from low-to-high, viewed 1-D
+#define BOXARG 0x0080 // box delimited by arg, cursor
+
+#define NUMARG 0x0100 // text => delta to y position
+#define MARKARG 0x0200 // text => mark at end of arg
+
+#define BOXSTR 0x0400 // single-line box => text
+
+#define FASTKEY 0x0800 // Fast repeat function
+#define MODIFIES 0x1000 // modifies file
+#define KEEPMETA 0x2000 // do not eat meta flag
+#define WINDOWFUNC 0x4000 // moves window
+#define CURSORFUNC 0x8000 // moves cursor
+
+
+
+//
+// Switch definition table defintions
+//
+typedef flagType (*PIF)(char *);
+typedef char* (*PIFC)(char *);
+
+typedef union swiAct { // switch location or routine
+ PIF pFunc; // - routine for text
+ PIFC pFunc2; // - routine for text
+ int *ival; // - integer value for NUMERIC
+ flagType *fval; // - flag value for BOOLEAN
+} swiAct;
+
+typedef struct swiDesc { // switch definition entry
+ char *name; // - pointer to name of switch
+ swiAct act; // - pointer to value or fcn
+ int type; // - flags defining switch type
+} SWI, *PSWI;
+
+
+#define SWI_BOOLEAN 0 // Boolean switch
+#define SWI_NUMERIC 1 // hex or decimal switch
+#define SWI_SCREEN 4 // switch affects screen
+#define SWI_SPECIAL 5 // textual switch
+#define SWI_SPECIAL2 6 // #5, returning an error string
+#define RADIX10 (0x0A << 8) // numeric switch is decimal
+#define RADIX16 (0x10 << 8) // numeric switch is hex
+
+
+//
+// Get/Set EditorObject data structures
+//
+typedef struct winContents{ // define window contents
+ PFILE pFile; // - handle of file displayed
+ ARC arcWin; // - location of window
+ fl flPos; // - upper left corner wrt file
+} winContents;
+
+
+//
+// FILE flags values
+//
+#define DIRTY 0x01 // file had been modified
+#define FAKE 0x02 // file is a pseudo file
+#define REAL 0x04 // file has been read from disk
+#define DOSFILE 0x08 // file has CR-LF
+#define TEMP 0x10 // file is a temp file
+#define NEW 0x20 // file has been created by editor
+#define REFRESH 0x40 // file needs to be refreshed
+#define READONLY 0x80 // file may not be editted
+
+#define DISKRO 0x0100 // file on disk is read only
+#define MODE1 0x0200 // Meaning depends on the file
+#define VALMARKS 0x0400 // file has valid marks defined
+
+
+
+//
+// Event processing definitions
+//
+typedef struct mouseevent { // mouse event data
+ short msg; // type of message
+ short wParam; // CW wParam
+ long lParam; // CW lParam
+ sl sl; // screen location of mouse event
+ fl fl; // file location (if event in win)
+} MOUSEEVENT, *PMOUSEEVENT;
+
+
+typedef struct KEY_DATA {
+ BYTE Ascii; // Ascii code
+ BYTE Scan; // Scan code
+ BYTE Flags; // Flags
+ BYTE Unused; // Unused byte
+} KEY_DATA, *PKEY_DATA;
+
+//
+// Following are the values for the Flags field of KEY_DATA
+//
+#define FLAG_SHIFT 0x01
+#define FLAG_CTRL 0x04
+#define FLAG_ALT 0x08
+#define FLAG_NUMLOCK 0x20
+
+
+typedef union KEY_INFO {
+ KEY_DATA KeyData;
+ long LongData;
+} KEY_INFO, *PKEY_INFO;
+
+
+typedef union EVTARGUNION {
+ KEY_INFO key; // keystroke for key event
+ char * pfn; // asciiz filename
+ PMOUSEEVENT pmouse; // ptr to mouse event data
+ union Rec *pUndoRec; // undo information
+} EVTARGUNION;
+
+typedef struct EVTargs { // arguments to event dispatches
+ PFILE pfile; // -file handle for file events
+ EVTARGUNION arg;
+} EVTargs, *PEVTARGS;
+
+
+typedef struct eventType { // event definition struct
+ unsigned evtType; // - type
+ flagType (*func)(EVTargs *); // - handler
+ struct eventType *pEVTNext; // - next handler in list
+ PFILE focus; // - applicable focus
+ EVTargs arg; // - applicable agruments
+} EVT, *PEVT;
+
+#define EVT_RAWKEY 1 // ALL keystrokes
+#define EVT_KEY 2 // Editting keystrokes
+#define EVT_GETFOCUS 3 // file GETs focus.
+#define EVT_LOSEFOCUS 4 // file looses focus.
+#define EVT_EXIT 5 // about to exit.
+#define EVT_SHELL 6 // about to sell or compile
+#define EVT_UNLOAD 7 // about to be unloaded.
+#define EVT_IDLE 8 // idle event
+#define EVT_CANCEL 9 // do-nothing cancel
+#define EVT_REFRESH 10 // about to refresh a file
+#define EVT_FILEREADSTART 11 // about to read file
+#define EVT_FILEREADEND 12 // finshed reading file
+#define EVT_FILEWRITESTART 13 // about to write file
+#define EVT_FILEWRITEEND 14 // finshed writing file
+// 15
+// 16
+// 17
+// 18
+// 19
+#define EVT_EDIT 20 // editting action
+#define EVT_UNDO 21 // undone action
+#define EVT_REDO 22 // redone action
+
+
+//
+// Undo, Redo and Edit event structs
+//
+#define EVENT_REPLACE 0
+#define EVENT_INSERT 1
+#define EVENT_DELETE 2
+#define EVENT_BOUNDARY 3
+
+#if !defined (EDITOR)
+typedef struct replaceRec {
+ int op; // operation
+ long dummy[2]; // editor interal
+ LINE length; // length of repalcement
+ LINE line; // start of replacement
+} REPLACEREC;
+
+typedef struct insertRec {
+ int op; // operation
+ long dummy[2]; // editor interal
+ LINE length; // length of file
+ LINE line; // line number that was operated on
+ LINE cLine; // number of lines inserted
+} INSERTREC;
+
+typedef struct deleteRec {
+ int op; // operation
+ long dummy[2]; // editor interal
+ LINE length; // length of file
+ LINE line; // line number that was operated on
+ LINE cLine; // Number of lines deleted
+} DELETEREC;
+
+typedef struct boundRec {
+ int op; // operation (BOUND)
+ long dummy[2]; // editor interal
+ int flags; // flags of file
+ long modify; // Date/Time of last modify
+ fl flWindow; // position in file of window
+ fl flCursor; // position in file of cursor
+} BOUNDREC;
+
+typedef union Rec {
+ struct replaceRec r;
+ struct insertRec i;
+ struct deleteRec d;
+ struct boundRec b;
+} REC;
+#endif // editor
+
+
+
+//
+// Build command definitions
+//
+#define MAKE_FILE 1 // rule is for a filename
+#define MAKE_SUFFIX 2 // rule is a suffix rule
+#define MAKE_TOOL 4 // rule is for a tool
+#define MAKE_BLDMACRO 8 // rule is for a build macro
+#define MAKE_DEBUG 0x80 // rule is debug version
+
+
+#define LOWVERSION 0x0015 // lowest version of extensions we handle
+#define HIGHVERSION 0x0015 // highest version of extensions we handle
+
+#define VERSION 0x0015 // our current version
+
+typedef struct ExtensionTable {
+ long version;
+ long cbStruct;
+ PCMD cmdTable;
+ PSWI swiTable;
+ struct CallBack {
+ PFILE (*AddFile) (char *);
+ flagType (*BadArg) (void);
+ char (*Confirm) (char *, char *);
+ void (*CopyBox) (PFILE, PFILE, COL, LINE, COL, LINE, COL, LINE);
+ void (*CopyLine) (PFILE, PFILE, LINE, LINE, LINE);
+ void (*CopyStream) (PFILE, PFILE, COL, LINE, COL, LINE, COL, LINE);
+ void (*DeRegisterEvent) (EVT *);
+ flagType (*DeclareEvent) (unsigned, EVTargs *);
+ void (*DelBox) (PFILE, COL, LINE, COL, LINE);
+ void (*DelFile) (PFILE);
+ void (*DelLine) (PFILE, LINE, LINE);
+ void (*DelStream) (PFILE, COL, LINE, COL, LINE);
+ void (*Display) (void);
+ int (*DoMessage) (char *);
+ flagType (*DoSpawn) (char *, flagType);
+ flagType (*fChangeFile) (flagType, char *);
+ void (*Free) (void *);
+ flagType (*fExecute) (char *);
+ int (*fGetMake) (int, char *, char *);
+ LINE (*FileLength) (PFILE);
+ PFILE (*FileNameToHandle) (char *, char *);
+ flagType (*FileRead) (char *, PFILE);
+ flagType (*FileWrite) (char *, PFILE);
+ PSWI (*FindSwitch) (char *);
+ flagType (*fSetMake) (int, char *, char *);
+ flagType (*FuncNameToKeyEvent) (char *, PKEY_EVENT_RECORD);
+ flagType (*GetColor) (LINE, lineAttr *, PFILE);
+ void (*GetTextCursor) (COL *, LINE *);
+ flagType (*GetEditorObject) (unsigned, void *, void *);
+ char * (*GetEnv) (char *);
+ int (*GetLine) (LINE, char *, PFILE);
+ char * (*GetListEntry) (PCMD, int, flagType);
+ flagType (*GetString) (char *, int, char *, flagType);
+ int (*KbHook) (void);
+ void (*KbUnHook) (void);
+ void * (*Malloc) (size_t);
+ void (*MoveCur) (COL, LINE);
+ char * (*NameToKeys) (char *, char *);
+ PCMD (*NameToFunc) (char *);
+ flagType (*pFileToTop) (PFILE);
+ void (*PutColor) (LINE, lineAttr *, PFILE);
+ void (*PutLine) (LINE, char *, PFILE);
+ int (*REsearch) (PFILE, flagType, flagType, flagType, flagType, char *, fl *);
+ long (*ReadChar) (void);
+ PCMD (*ReadCmd) (void);
+ void (*RegisterEvent) (EVT *);
+ void (*RemoveFile) (PFILE);
+ flagType (*Replace) (char, COL, LINE, PFILE, flagType);
+ char * (*ScanList) (PCMD, flagType);
+ int (*search) (PFILE, flagType, flagType, flagType, flagType, char *, fl *);
+ void (*SetColor) (PFILE, LINE, COL, COL, int);
+ flagType (*SetEditorObject) (unsigned, void *, void *);
+ void (*SetHiLite) (PFILE, rn, int);
+ flagType (*SetKey) (char *, char *);
+ flagType (*SplitWnd) (PWND, flagType, int);
+ } CallBack;
+ } EXTTAB;
+
+//
+// Editor low level function prototypes.
+//
+// This list defines the routines within the editor which may be called
+// by extension functions.
+//
+#if !defined (EDITOR)
+
+extern EXTTAB ModInfo;
+
+#define AddFile(x) ModInfo.CallBack.AddFile(x)
+#define BadArg ModInfo.CallBack.BadArg
+#define Confirm(x,y) ModInfo.CallBack.Confirm(x,y)
+#define CopyBox(x,y,z,a,b,c,d,e) ModInfo.CallBack.CopyBox(x,y,z,a,b,c,d,e)
+#define CopyLine(x,y,z,a,b) ModInfo.CallBack.CopyLine(x,y,z,a,b)
+#define CopyStream(x,y,z,a,b,c,d,e) ModInfo.CallBack.CopyStream(x,y,z,a,b,c,d,e)
+#define DeRegisterEvent(x) ModInfo.CallBack.DeRegisterEvent(x)
+#define DeclareEvent(x,y) ModInfo.CallBack.DeclareEvent(x,y)
+#define DelBox(x,y,z,a,b) ModInfo.CallBack.DelBox(x,y,z,a,b)
+#define DelFile(x) ModInfo.CallBack.DelFile(x)
+#define DelLine(x,y,z) ModInfo.CallBack.DelLine(x,y,z)
+#define DelStream(x,y,z,a,b) ModInfo.CallBack.DelStream(x,y,z,a,b)
+#define Display ModInfo.CallBack.Display
+#define DoMessage(x) ModInfo.CallBack.DoMessage(x)
+#define DoSpawn(x,y) ModInfo.CallBack.DoSpawn(x,y)
+#define fChangeFile(x,y) ModInfo.CallBack.fChangeFile(x,y)
+#define Free(x) ModInfo.CallBack.Free(x)
+#define fExecute(x) ModInfo.CallBack.fExecute(x)
+#define fGetMake(x,y,z) ModInfo.CallBack.fGetMake(x,y,z)
+#define FileLength(x) ModInfo.CallBack.FileLength(x)
+#define FileNameToHandle(x,y) ModInfo.CallBack.FileNameToHandle(x,y)
+#define FileRead(x,y) ModInfo.CallBack.FileRead(x,y)
+#define FileWrite(x,y) ModInfo.CallBack.FileWrite(x,y)
+#define FindSwitch(x) ModInfo.CallBack.FindSwitch(x)
+#define fSetMake(x,y,z) ModInfo.CallBack.fSetMake(x,y,z)
+#define FuncNameToKeyEvent(x,y) ModInfo.CallBack.FuncNameToKeyEvent(x,y)
+#define GetColor(x,y,z) ModInfo.CallBack.GetColor(x,y,z)
+#define GetTextCursor(x,y) ModInfo.CallBack.GetTextCursor(x,y)
+#define GetEditorObject(x,y,z) ModInfo.CallBack.GetEditorObject(x,y,z)
+#define GetEnv(x) ModInfo.CallBack.GetEnv(x)
+#define GetLine(x,y,z) ModInfo.CallBack.GetLine(x,y,z)
+#define GetListEntry(x,y,z) ModInfo.CallBack.GetListEntry(x,y,z)
+#define GetString(x,a,y,z) ModInfo.CallBack.GetString(x,a,y,z)
+#define KbHook ModInfo.CallBack.KbHook
+#define KbUnHook ModInfo.CallBack.KbUnHook
+#define Malloc(x) ModInfo.CallBack.Malloc(x)
+#define MoveCur(x,y) ModInfo.CallBack.MoveCur(x,y)
+#define NameToKeys(x,y) ModInfo.CallBack.NameToKeys(x,y)
+#define NameToFunc(x) ModInfo.CallBack.NameToFunc(x)
+#define pFileToTop(x) ModInfo.CallBack.pFileToTop(x)
+#define PutColor(x,y,z) ModInfo.CallBack.PutColor(x,y,z)
+#define PutLine(x,y,z) ModInfo.CallBack.PutLine(x,y,z)
+#define REsearch(x,y,z,a,b,c,d) ModInfo.CallBack.REsearch(x,y,z,a,b,c,d)
+#define ReadChar ModInfo.CallBack.ReadChar
+#define ReadCmd ModInfo.CallBack.ReadCmd
+#define RegisterEvent(x) ModInfo.CallBack.RegisterEvent(x)
+#define RemoveFile(x) ModInfo.CallBack.RemoveFile(x)
+#define Replace(x,y,z,a,b) ModInfo.CallBack.Replace(x,y,z,a,b)
+#define ScanList(x,y) ModInfo.CallBack.ScanList(x,y)
+#define search(x,y,z,a,b,c,d) ModInfo.CallBack.search(x,y,z,a,b,c,d)
+#define SetColor(x,y,z,a,b) ModInfo.CallBack.SetColor(x,y,z,a,b)
+#define SetEditorObject(x,y,z) ModInfo.CallBack.SetEditorObject(x,y,z)
+#define SetHiLite(x,y,z) ModInfo.CallBack.SetHiLite(x,y,z)
+#define SetKey(x,y) ModInfo.CallBack.SetKey(x,y)
+#define SplitWnd(x,y,z) ModInfo.CallBack.SplitWnd(x,y,z)
+
+void WhenLoaded (void);
+
+#endif // EDITOR
diff --git a/public/sdk/lib/alpha/usa/baseaddr.txt b/public/sdk/lib/alpha/usa/baseaddr.txt
new file mode 100644
index 000000000..27c79df02
--- /dev/null
+++ b/public/sdk/lib/alpha/usa/baseaddr.txt
@@ -0,0 +1,1538 @@
+winmm.dll 0x77fb0000 0x00050000
+mmdrv.dll 0x77fa0000 0x00010000
+ntdll.dll 0x77f00000 0x000a0000
+kernel32.dll 0x77e60000 0x000a0000
+gdi32.dll 0x77e00000 0x00060000
+user32.dll 0x77d60000 0x000a0000
+rpcrt4.dll 0x77cd0000 0x00090000
+rpcltc1.dll 0x77cc0000 0x00010000
+rpclts1.dll 0x77cb0000 0x00010000
+advapi32.dll 0x77c40000 0x00070000
+comdlg32.dll 0x77be0000 0x00060000
+shell32.dll 0x77a10000 0x001d0000
+comctl32.dll 0x77970000 0x000a0000
+winspool.drv 0x77940000 0x00030000
+ole32.dll 0x77810000 0x00130000
+oleaut32.dll 0x77720000 0x000f0000
+version.dll 0x77700000 0x00020000
+security.dll 0x776e0000 0x00020000
+printui.dll 0x77690000 0x00050000
+ntshrui.dll 0x77670000 0x00020000
+msvcrt.dll 0x775d0000 0x000a0000
+msvcrt40.dll 0x775b0000 0x00020000
+lz32.dll 0x775a0000 0x00010000
+linkinfo.dll 0x77580000 0x00020000
+olethk32.dll 0x77550000 0x00030000
+olecli32.dll 0x77520000 0x00030000
+olecnv32.dll 0x77500000 0x00020000
+oledlg.dll 0x774d0000 0x00030000
+olesvr32.dll 0x774b0000 0x00020000
+syncui.dll 0x77470000 0x00040000
+shcompui.dll 0x77450000 0x00020000
+url.dll 0x77400000 0x00050000
+netui0.dll 0x773d0000 0x00030000
+netui1.dll 0x77360000 0x00070000
+netrap.dll 0x77340000 0x00020000
+netapi32.dll 0x772e0000 0x00060000
+ntlanman.dll 0x772c0000 0x00020000
+samlib.dll 0x772a0000 0x00020000
+netui2.dll 0x77210000 0x00090000
+acledit.dll 0x771d0000 0x00040000
+netmsg.dll 0x771b0000 0x00020000
+mpr.dll 0x77190000 0x00020000
+mprui.dll 0x77160000 0x00030000
+ntlanui.dll 0x77140000 0x00020000
+wsock32.dll 0x77130000 0x00010000
+ws2_32.dll 0x77110000 0x00020000
+ws2help.dll 0x77100000 0x00010000
+wshtcpip.dll 0x770f0000 0x00010000
+mswsock.dll 0x770c0000 0x00030000
+msafd.dll 0x770a0000 0x00020000
+crtdll.dll 0x77040000 0x00060000
+hppcl.dll 0x76ff0000 0x00050000
+rasdd.dll 0x76fd0000 0x00020000
+rasddui.dll 0x76fa0000 0x00030000
+pscript.dll 0x76f50000 0x00050000
+pscrptui.dll 0x76f10000 0x00040000
+imaadp32.acm 0x76ef0000 0x00020000
+msadp32.acm 0x76ed0000 0x00020000
+msg711.acm 0x76eb0000 0x00020000
+msgsm32.acm 0x76e90000 0x00020000
+tssoft32.acm 0x76e70000 0x00020000
+alrsvc.dll 0x76e60000 0x00010000
+amddlg.dll 0x76e50000 0x00010000
+amdncdet.dll 0x76e40000 0x00010000
+atkctrs.dll 0x76e30000 0x00010000
+avicap32.dll 0x76e00000 0x00030000
+avifil32.dll 0x76dd0000 0x00030000
+bhmon.dll 0x76dc0000 0x00010000
+bhnetb.dll 0x76da0000 0x00020000
+bhsupp.dll 0x76d80000 0x00020000
+brhj770.dll 0x76d70000 0x00010000
+brother9.dll 0x76d60000 0x00010000
+brothr24.dll 0x76d40000 0x00020000
+browser.dll 0x76d20000 0x00020000
+canon330.dll 0x76d00000 0x00020000
+canon800.dll 0x76ce0000 0x00020000
+canonlbp.dll 0x76cc0000 0x00020000
+cards.dll 0x76c90000 0x00030000
+ccfapi32.dll 0x76c60000 0x00030000
+cfgmgr32.dll 0x76c40000 0x00020000
+cfm30.dll 0x76bb0000 0x00090000
+cfm30u.dll 0x76b10000 0x000a0000
+cfmo30.dll 0x76ad0000 0x00040000
+cfmo30u.dll 0x76a90000 0x00040000
+cirrus.dll 0x76a70000 0x00020000
+cit24us.dll 0x76a50000 0x00020000
+cit9us.dll 0x76a30000 0x00020000
+citoh.dll 0x76a20000 0x00010000
+clb.dll 0x76a10000 0x00010000
+cnvfat.dll 0x769f0000 0x00020000
+compstui.dll 0x769a0000 0x00050000
+conexts.dll 0x76990000 0x00010000
+convmsg.dll 0x76980000 0x00010000
+cxxflt.dll 0x76960000 0x00020000
+dciman32.dll 0x76950000 0x00010000
+ddraw.dll 0x76910000 0x00040000
+debmp.dll 0x768f0000 0x00020000
+dec24pin.dll 0x768e0000 0x00010000
+dec3200.dll 0x768c0000 0x00020000
+dec9pin.dll 0x768b0000 0x00010000
+decpsmon.dll 0x76810000 0x000a0000
+defea.dll 0x76800000 0x00010000
+defpa.dll 0x767f0000 0x00010000
+dehex.dll 0x767e0000 0x00010000
+demet.dll 0x767b0000 0x00030000
+dess.dll 0x76780000 0x00030000
+dewp.dll 0x76750000 0x00030000
+dgconfig.dll 0x76730000 0x00020000
+dhcpcsvc.dll 0x76710000 0x00020000
+dhcpmib.dll 0x76700000 0x00010000
+dhcpsapi.dll 0x766f0000 0x00010000
+dhcpssvc.dll 0x5f700000 0x00040000
+diconix.dll 0x766b0000 0x00010000
+digiinst.dll 0x76690000 0x00020000
+digsig.dll 0x76620000 0x00070000
+diskcopy.dll 0x76610000 0x00010000
+dlcapi.dll 0x76600000 0x00010000
+docprop.dll 0x765e0000 0x00020000
+dplay.dll 0x765c0000 0x00020000
+dpserial.dll 0x76590000 0x00030000
+dpwsock.dll 0x76570000 0x00020000
+dsound.dll 0x76530000 0x00040000
+epson24.dll 0x76520000 0x00010000
+epson9.dll 0x76500000 0x00020000
+escp2e.dll 0x764e0000 0x00020000
+escp2ms.dll 0x764c0000 0x00020000
+eventlog.dll 0x764a0000 0x00020000
+fmifs.dll 0x76490000 0x00010000
+fontext.dll 0x76450000 0x00040000
+fpnwclnt.dll 0x76430000 0x00020000
+ftpctrs.dll 0x76420000 0x00010000
+ftpsmx.dll 0x76400000 0x00020000
+ftpsvapi.dll 0x763f0000 0x00010000
+ftpsvc.dll 0x763d0000 0x00020000
+ftsrch.dll 0x76360000 0x00070000
+fuji24.dll 0x76340000 0x00020000
+fuji9.dll 0x76330000 0x00010000
+gapi32.dll 0x76300000 0x00030000
+glmf32.dll 0x76260000 0x000a0000
+glu32.dll 0x76220000 0x00040000
+hpdskjet.dll 0x761f0000 0x00030000
+hpmon.dll 0x761d0000 0x00020000
+hpscan32.dll 0x761c0000 0x00010000
+hticons.dll 0x761b0000 0x00010000
+htui.dll 0x76190000 0x00020000
+hypertrm.dll 0x760f0000 0x000a0000
+ibm238x.dll 0x760e0000 0x00010000
+ibm239x.dll 0x760c0000 0x00020000
+ibm5204.dll 0x760b0000 0x00010000
+ibmport.dll 0x760a0000 0x00010000
+ibmppdsl.dll 0x76090000 0x00010000
+iccvid.dll 0x76050000 0x00040000
+icmp.dll 0x76040000 0x00010000
+ifsutil.dll 0x76000000 0x00040000
+imagehlp.dll 0x75fd0000 0x00030000
+imm32.dll 0x75fc0000 0x00010000
+indicdll.dll 0x75fb0000 0x00010000
+inetmib1.dll 0x75f90000 0x00020000
+iologmsg.dll 0x75f80000 0x00010000
+ipadrdll.dll 0x75f70000 0x00010000
+iprip.dll 0x75f50000 0x00020000
+ipxcfg.dll 0x75f30000 0x00020000
+ir32_32.dll 0x75ed0000 0x00060000
+jet.dll 0x75de0000 0x000f0000
+jet500.dll 0x75cc0000 0x00120000
+jp350.dll 0x75c90000 0x00030000
+jpeg1x32.dll 0x75c70000 0x00020000
+jpeg2x32.dll 0x75c50000 0x00020000
+kbdal.dll 0x75c40000 0x00010000
+kbdbene.dll 0x75c30000 0x00010000
+kbdblr.dll 0x75c20000 0x00010000
+kbdbu.dll 0x75c10000 0x00010000
+kbdcr.dll 0x75c00000 0x00010000
+kbdcz1.dll 0x75bf0000 0x00010000
+kbddll.dll 0x75be0000 0x00010000
+kbdest.dll 0x75bd0000 0x00010000
+kbdgkl.dll 0x75bc0000 0x00010000
+kbdgr1.dll 0x75bb0000 0x00010000
+kbdhe220.dll 0x75ba0000 0x00010000
+kbdhe319.dll 0x75b90000 0x00010000
+kbdhela2.dll 0x75b80000 0x00010000
+kbdhela3.dll 0x75b70000 0x00010000
+kbdhu1.dll 0x75b60000 0x00010000
+kbdir.dll 0x75b50000 0x00010000
+kbdit142.dll 0x75b40000 0x00010000
+kbdlt.dll 0x75b30000 0x00010000
+kbdlv.dll 0x75b20000 0x00010000
+kbdlv1.dll 0x75b10000 0x00010000
+kbdpl.dll 0x75b00000 0x00010000
+kbdro.dll 0x75af0000 0x00010000
+kbdru1.dll 0x75ae0000 0x00010000
+kbdsl1.dll 0x75ad0000 0x00010000
+kbdur.dll 0x75ac0000 0x00010000
+kbdurs.dll 0x75ab0000 0x00010000
+kbdycc.dll 0x75aa0000 0x00010000
+kbdycl.dll 0x75a90000 0x00010000
+kyocera.dll 0x75a70000 0x00020000
+kyocerax.dll 0x75a30000 0x00040000
+llsrpc.dll 0x75a10000 0x00020000
+lmhsvc.dll 0x75a00000 0x00010000
+lmmib2.dll 0x759e0000 0x00020000
+loadperf.dll 0x759c0000 0x00020000
+localmon.dll 0x759b0000 0x00010000
+localspl.dll 0x75960000 0x00050000
+lpdsvc.dll 0x75940000 0x00020000
+lprhelp.dll 0x75930000 0x00010000
+lprmon.dll 0x75920000 0x00010000
+lsasrv.dll 0x758e0000 0x00040000
+mantal24.dll 0x758c0000 0x00020000
+mantal90.dll 0x758b0000 0x00010000
+mapi32.dll 0x757a0000 0x00110000
+mapiu32.dll 0x75790000 0x00010000
+mapix32.dll 0x75780000 0x00010000
+mcd32.dll 0x75770000 0x00010000
+mciavi32.dll 0x75740000 0x00030000
+mcicda.dll 0x75720000 0x00020000
+mciole32.dll 0x75710000 0x00010000
+mciseq.dll 0x756f0000 0x00020000
+mciwave.dll 0x756d0000 0x00020000
+mdgmpdlg.dll 0x756c0000 0x00010000
+mdgncdet.dll 0x756a0000 0x00020000
+mf3216.dll 0x75680000 0x00020000
+mfc40.dll 0x754a0000 0x001e0000
+mfc40chs.dll 0x75490000 0x00010000
+mfc40deu.dll 0x75480000 0x00010000
+mfc40enu.dll 0x75470000 0x00010000
+mfc40esp.dll 0x75460000 0x00010000
+mfc40fra.dll 0x75450000 0x00010000
+mfc40ita.dll 0x75440000 0x00010000
+mfc40jpn.dll 0x75430000 0x00010000
+mfc40kor.dll 0x75420000 0x00010000
+mfc40u.dll 0x75240000 0x001e0000
+mfc42.dll 0x75040000 0x00200000
+mfc42chs.dll 0x75030000 0x00010000
+mfc42cht.dll 0x75020000 0x00010000
+mfc42deu.dll 0x75010000 0x00010000
+mfc42enu.dll 0x75000000 0x00010000
+mfc42esp.dll 0x74ff0000 0x00010000
+mfc42fra.dll 0x74fe0000 0x00010000
+mfc42ita.dll 0x74fd0000 0x00010000
+mfc42jpn.dll 0x74fc0000 0x00010000
+mfc42kor.dll 0x74fb0000 0x00010000
+mfc42u.dll 0x74db0000 0x00200000
+mga.dll 0x74d80000 0x00030000
+mgmtapi.dll 0x74d70000 0x00010000
+midimap.dll 0x74d50000 0x00020000
+minet32.dll 0x74ce0000 0x00070000
+mlshext.dll 0x74cd0000 0x00010000
+mmfmig32.dll 0x74c40000 0x00090000
+modemui.dll 0x74c20000 0x00020000
+moricons.dll 0x74bf0000 0x00030000
+mpu401.dll 0x74be0000 0x00010000
+msacm32.dll 0x74ba0000 0x00040000
+msaudite.dll 0x74b90000 0x00010000
+msfs32.dll 0x74ab0000 0x000e0000
+msgina.dll 0x74a80000 0x00030000
+msgsvc.dll 0x74a60000 0x00020000
+msncdet.dll 0x74a30000 0x00030000
+msnsspc.dll 0x74a10000 0x00020000
+msobjs.dll 0x74a00000 0x00010000
+msprivs.dll 0x749f0000 0x00010000
+mspst32.dll 0x74910000 0x000e0000
+msrle32.dll 0x74900000 0x00010000
+msv1_0.dll 0x748e0000 0x00020000
+msvcrt20.dll 0x74850000 0x00090000
+msvfw32.dll 0x74810000 0x00040000
+msvidc32.dll 0x747f0000 0x00020000
+msviewut.dll 0x747b0000 0x00040000
+mt735.dll 0x747a0000 0x00010000
+mvaudio.dll 0x74780000 0x00020000
+nal.dll 0x74760000 0x00020000
+nddeapi.dll 0x74750000 0x00010000
+nddenb32.dll 0x74740000 0x00010000
+ndis30.dll 0x74720000 0x00020000
+nec24pin.dll 0x74710000 0x00010000
+netcfg.dll 0x74650000 0x000c0000
+netdtect.dll 0x74640000 0x00010000
+netevent.dll 0x74630000 0x00010000
+netflx.dll 0x74620000 0x00010000
+neth.dll 0x745f0000 0x00030000
+netlogon.dll 0x745a0000 0x00050000
+netsetup.dll 0x74540000 0x00060000
+ntctl3d.dll 0x74520000 0x00020000
+ntlanui2.dll 0x74510000 0x00010000
+ntlmssps.dll 0x744f0000 0x00020000
+ntlsapi.dll 0x744e0000 0x00010000
+ntprint.dll 0x744c0000 0x00020000
+nwapi16.dll 0x744b0000 0x00010000
+nwapi32.dll 0x74490000 0x00020000
+nwcfg.dll 0x74480000 0x00010000
+nwevent.dll 0x74470000 0x00010000
+nwprovau.dll 0x74420000 0x00050000
+nwsap.dll 0x74400000 0x00020000
+nwwks.dll 0x743d0000 0x00030000
+oiadm400.dll 0x743c0000 0x00010000
+oicom400.dll 0x743b0000 0x00010000
+oidis400.dll 0x74340000 0x00070000
+oifil400.dll 0x74310000 0x00030000
+oigfs400.dll 0x742e0000 0x00030000
+oiprt400.dll 0x742d0000 0x00010000
+oislb400.dll 0x742b0000 0x00020000
+oissq400.dll 0x742a0000 0x00010000
+oitwa400.dll 0x74280000 0x00020000
+oiui400.dll 0x74260000 0x00020000
+oki24.dll 0x74240000 0x00020000
+oki9.dll 0x74230000 0x00010000
+oki9ibm.dll 0x74210000 0x00020000
+olepro32.dll 0x741e0000 0x00030000
+olidm24.dll 0x741d0000 0x00010000
+olidm9.dll 0x741b0000 0x00020000
+opengl32.dll 0x74080000 0x00130000
+optra.dll 0x74040000 0x00040000
+paintjet.dll 0x74030000 0x00010000
+panmap.dll 0x74020000 0x00010000
+panson24.dll 0x74000000 0x00020000
+panson9.dll 0x73fe0000 0x00020000
+pcl5ems.dll 0x73f80000 0x00060000
+pcl5ms.dll 0x73f20000 0x00060000
+perfctrs.dll 0x73f00000 0x00020000
+perfnw.dll 0x73ef0000 0x00010000
+pifmgr.dll 0x73ed0000 0x00020000
+pjlmon.dll 0x73ec0000 0x00010000
+plotter.dll 0x73ea0000 0x00020000
+plotui.dll 0x73e80000 0x00020000
+plustab.dll 0x73e70000 0x00010000
+prflbmsg.dll 0x73e60000 0x00010000
+profext.dll 0x73e50000 0x00010000
+proprint.dll 0x73e40000 0x00010000
+proprn24.dll 0x73e30000 0x00010000
+ps1.dll 0x73e20000 0x00010000
+psxdll.dll 0x73e00000 0x00020000
+quietjet.dll 0x73df0000 0x00010000
+qwiii.dll 0x73de0000 0x00010000
+rasadhlp.dll 0x73dd0000 0x00010000
+rasadmin.dll 0x73dc0000 0x00010000
+rasapi32.dll 0x73d80000 0x00040000
+rasauto.dll 0x73d50000 0x00030000
+rascauth.dll 0x73d30000 0x00020000
+rascbcp.dll 0x73d20000 0x00010000
+rasccp.dll 0x73d10000 0x00010000
+rascfg.dll 0x73cd0000 0x00040000
+raschap.dll 0x5f740000 0x00020000
+rasctrs.dll 0x73cb0000 0x00010000
+rasdlg.dll 0x73c20000 0x00090000
+rasfil32.dll 0x73c10000 0x00010000
+rasgprxy.dll 0x73c00000 0x00010000
+rasgtwy.dll 0x73be0000 0x00020000
+rasipcp.dll 0x73bd0000 0x00010000
+rasiphlp.dll 0x73bb0000 0x00020000
+rasipxcp.dll 0x73ba0000 0x00010000
+rasman.dll 0x73b80000 0x00020000
+rasmsg.dll 0x73b70000 0x00010000
+rasmxs.dll 0x73b50000 0x00020000
+rasnbfcp.dll 0x73b40000 0x00010000
+rasnbipc.dll 0x73b30000 0x00010000
+raspap.dll 0x73b20000 0x00010000
+raspppen.dll 0x73b00000 0x00020000
+raspptpc.dll 0x73af0000 0x00010000
+raspptpl.dll 0x73ae0000 0x00010000
+rassapi.dll 0x73ac0000 0x00020000
+rassauth.dll 0x73aa0000 0x00020000
+rasscrpt.dll 0x73a80000 0x00020000
+rasser.dll 0x73a70000 0x00010000
+rasshell.dll 0x73a50000 0x00020000
+rasspap.dll 0x73a40000 0x00010000
+rastapi.dll 0x73a20000 0x00020000
+relay.dll 0x73a10000 0x00010000
+riched20.dll 0x73990000 0x00080000
+riched32.dll 0x73940000 0x00050000
+rnal.dll 0x73910000 0x00030000
+rnr20.dll 0x738f0000 0x00020000
+routetab.dll 0x738e0000 0x00010000
+rpcltc8.dll 0x738d0000 0x00010000
+rpcltccm.dll 0x738b0000 0x00020000
+rpclts8.dll 0x73890000 0x00020000
+rpcltscm.dll 0x73870000 0x00020000
+rpcns4.dll 0x73850000 0x00020000
+rshx32.dll 0x73840000 0x00010000
+samsrv.dll 0x737f0000 0x00050000
+sccview.dll 0x737d0000 0x00020000
+schannel.dll 0x73790000 0x00040000
+schnl128.dll 0x73790000 0x00040000
+secbasic.dll 0x73780000 0x00010000
+secsspi.dll 0x73770000 0x00010000
+seiko.dll 0x73760000 0x00010000
+seiko24e.dll 0x73740000 0x00020000
+seikosh9.dll 0x73730000 0x00010000
+serialui.dll 0x73710000 0x00020000
+setupapi.dll 0x73690000 0x00080000
+setupdll.dll 0x735b0000 0x000e0000
+sfmapi.dll 0x73590000 0x00020000
+sfmatcfg.dll 0x73570000 0x00020000
+sfmatmsg.dll 0x73560000 0x00010000
+sfmctrs.dll 0x73550000 0x00010000
+sfmmon.dll 0x73530000 0x00020000
+sfmmsg.dll 0x73520000 0x00010000
+sfmpsdib.dll 0x73410000 0x00110000
+sfmpsfnt.dll 0x73400000 0x00010000
+sfmpsprt.dll 0x733f0000 0x00010000
+sfmres.dll 0x733e0000 0x00010000
+sfmutil.dll 0x733d0000 0x00010000
+sfmwshat.dll 0x733a0000 0x00030000
+shscrap.dll 0x73390000 0x00010000
+sidewndr.dll 0x73370000 0x00020000
+simptcp.dll 0x73360000 0x00010000
+skdll.dll 0x73350000 0x00010000
+sndblst.dll 0x73320000 0x00030000
+sndsys32.dll 0x73300000 0x00020000
+snmpapi.dll 0x732f0000 0x00010000
+softpub.dll 0x732a0000 0x00050000
+spoolss.dll 0x73280000 0x00020000
+srvsvc.dll 0x73250000 0x00030000
+star24e.dll 0x73220000 0x00030000
+star9e.dll 0x73200000 0x00020000
+starjet.dll 0x731f0000 0x00010000
+synceng.dll 0x731c0000 0x00030000
+synth.dll 0x731a0000 0x00020000
+syssetup.dll 0x73130000 0x00070000
+t1instal.dll 0x730f0000 0x00040000
+tapi32.dll 0x730b0000 0x00040000
+tapiperf.dll 0x730a0000 0x00010000
+tcpcfg.dll 0x73060000 0x00040000
+tga.dll 0x73040000 0x00020000
+thinkjet.dll 0x73030000 0x00010000
+ti850.dll 0x73020000 0x00010000
+trace.dll 0x73010000 0x00010000
+tsd32.dll 0x72ff0000 0x00020000
+txtonly.dll 0x72fe0000 0x00010000
+ufat.dll 0x72fb0000 0x00030000
+ulib.dll 0x72f70000 0x00040000
+umpnpmgr.dll 0x72f40000 0x00030000
+untfs.dll 0x72ec0000 0x00080000
+ureg.dll 0x72eb0000 0x00010000
+userenv.dll 0x72e90000 0x00020000
+vdmdbg.dll 0x72e70000 0x00020000
+vsasc8.dll 0x72e60000 0x00010000
+vsbmp.dll 0x72e50000 0x00010000
+vsdrw.dll 0x72e40000 0x00010000
+vsexe.dll 0x72e30000 0x00010000
+vsexe2.dll 0x72e10000 0x00020000
+vsmp.dll 0x72e00000 0x00010000
+vsmsw.dll 0x72de0000 0x00020000
+vspp.dll 0x72dc0000 0x00020000
+vsqp6.dll 0x72db0000 0x00010000
+vsrtf.dll 0x72d90000 0x00020000
+vstiff.dll 0x72d70000 0x00020000
+vsw6.dll 0x72d50000 0x00020000
+vswks.dll 0x72d30000 0x00020000
+vswmf.dll 0x72d20000 0x00010000
+vsword.dll 0x72d00000 0x00020000
+vswork.dll 0x72cf0000 0x00010000
+vswp5.dll 0x72cd0000 0x00020000
+vswp6.dll 0x72cb0000 0x00020000
+vswpf.dll 0x72ca0000 0x00010000
+vsxl5.dll 0x72c80000 0x00020000
+vwipxspx.dll 0x72c60000 0x00020000
+w32.dll 0x72c40000 0x00020000
+wangcmn.dll 0x72c20000 0x00020000
+wangshl.dll 0x72c10000 0x00010000
+wd90c24a.dll 0x72c00000 0x00010000
+wgpoadmn.dll 0x72bd0000 0x00030000
+win32spl.dll 0x72ba0000 0x00030000
+winprint.dll 0x72b90000 0x00010000
+winsctrs.dll 0x72b80000 0x00010000
+winsevnt.dll 0x72b60000 0x00020000
+winsmib.dll 0x72b50000 0x00010000
+winsrpc.dll 0x72b40000 0x00010000
+winstrm.dll 0x72b30000 0x00010000
+wintrust.dll 0x72b20000 0x00010000
+wkssvc.dll 0x72b00000 0x00020000
+wmsfr32.dll 0x72a80000 0x00080000
+wmsui32.dll 0x72940000 0x00140000
+wowfax.dll 0x72930000 0x00010000
+wowfaxui.dll 0x72910000 0x00020000
+ws2map.dll 0x728f0000 0x00020000
+wshisn.dll 0x728e0000 0x00010000
+wshnetbs.dll 0x728d0000 0x00010000
+xactsrv.dll 0x728a0000 0x00030000
+xeroxpcl.dll 0x5f760000 0x00040000
+xfilexr.dll 0x72850000 0x00030000
+access.cpl 0x72830000 0x00020000
+appwiz.cpl 0x72810000 0x00020000
+bhctrl.cpl 0x727f0000 0x00020000
+console.cpl 0x727d0000 0x00020000
+desk.cpl 0x72790000 0x00040000
+devapps.cpl 0x72730000 0x00060000
+inetcpl.cpl 0x72720000 0x00010000
+intl.cpl 0x72700000 0x00020000
+joy.cpl 0x726e0000 0x00020000
+liccpa.cpl 0x726b0000 0x00030000
+main.cpl 0x72680000 0x00030000
+mlcfg32.cpl 0x72660000 0x00020000
+mmsys.cpl 0x72600000 0x00060000
+modem.cpl 0x725d0000 0x00030000
+ncpa.cpl 0x72590000 0x00040000
+nwc.cpl 0x72570000 0x00020000
+ports.cpl 0x72550000 0x00020000
+rascpl.cpl 0x72540000 0x00010000
+sfmmgr.cpl 0x72500000 0x00040000
+srvmgr.cpl 0x724c0000 0x00040000
+sysdm.cpl 0x72490000 0x00030000
+telephon.cpl 0x72480000 0x00010000
+timedate.cpl 0x72460000 0x00020000
+ups.cpl 0x72440000 0x00020000
+wgpocpl.cpl 0x72420000 0x00020000
+msacm32.drv 0x72400000 0x00020000
+ctl3d32.dll 0x723e0000 0x00020000
+lmmon.dll 0x723d0000 0x00010000
+mfc40d.dll 0x72260000 0x00170000
+mfc40ud.dll 0x720f0000 0x00170000
+mfc42d.dll 0x71f80000 0x00170000
+mfc42ud.dll 0x71e10000 0x00170000
+mfcd40d.dll 0x71da0000 0x00070000
+mfcd40ud.dll 0x71d30000 0x00070000
+mfcd42d.dll 0x71cc0000 0x00070000
+mfcd42ud.dll 0x71c50000 0x00070000
+mfcn40d.dll 0x71c30000 0x00020000
+mfcn40ud.dll 0x71c10000 0x00020000
+mfcn42d.dll 0x71bf0000 0x00020000
+mfcn42ud.dll 0x71bd0000 0x00020000
+mfco40d.dll 0x71ac0000 0x00110000
+mfco40ud.dll 0x719b0000 0x00110000
+mfco42d.dll 0x71880000 0x00130000
+mfco42ud.dll 0x71750000 0x00130000
+msvcirtd.dll 0x71720000 0x00030000
+msvcr40d.dll 0x71700000 0x00020000
+msvcrtd.dll 0x71640000 0x000c0000
+nddeexts.dll 0x71630000 0x00010000
+ntsdexts.dll 0x71610000 0x00020000
+splexts.dll 0x715f0000 0x00020000
+ubnbmsg.dll 0x715e0000 0x00010000
+userexts.dll 0x715b0000 0x00030000
+vdmexts.dll 0x71580000 0x00030000
+wshxns.dll 0x71570000 0x00010000
+xnscfg.dll 0x71560000 0x00010000
+xnsmsg.dll 0x71550000 0x00010000
+afdkd.dll 0x71530000 0x00020000
+cap.dll 0x71500000 0x00030000
+dbi.dll 0x714d0000 0x00030000
+dflayout.dll 0x714a0000 0x00030000
+dfskd.dll 0x71490000 0x00010000
+dm.dll 0x71460000 0x00030000
+dmkdalp.dll 0x71420000 0x00040000
+dmkdmip.dll 0x713e0000 0x00040000
+dmkdppc.dll 0x713a0000 0x00040000
+dmkdx86.dll 0x71360000 0x00040000
+eecxxalp.dll 0x71310000 0x00050000
+eecxxmip.dll 0x712c0000 0x00050000
+eecxxppc.dll 0x71270000 0x00050000
+eecxxx86.dll 0x71220000 0x00050000
+emalp.dll 0x71200000 0x00020000
+emmip.dll 0x711e0000 0x00020000
+emppc.dll 0x711c0000 0x00020000
+emx86.dll 0x71190000 0x00030000
+fernel32.dll 0x71170000 0x00020000
+filter.dll 0x71160000 0x00010000
+gdikdx.dll 0x71120000 0x00040000
+gutils.dll 0x71100000 0x00020000
+hdxdll.dll 0x710e0000 0x00020000
+hook.dll 0x710d0000 0x00010000
+hwdll.dll 0x710a0000 0x00030000
+isnext.dll 0x71070000 0x00030000
+iviewers.dll 0x71030000 0x00040000
+justify.dll 0x71020000 0x00010000
+kdextalp.dll 0x70fd0000 0x00050000
+kdextmip.dll 0x70f80000 0x00050000
+kdextppc.dll 0x70f30000 0x00050000
+kdextx86.dll 0x70ee0000 0x00050000
+lineedit.dll 0x70ec0000 0x00020000
+mhelp.dll 0x70eb0000 0x00010000
+msafdext.dll 0x70ea0000 0x00010000
+mshelp.dll 0x70e90000 0x00010000
+mspdb40.dll 0x70e20000 0x00070000
+mspdb41.dll 0x70da0000 0x00080000
+msvcbook.dll 0x70d90000 0x00010000
+mupkd.dll 0x70d70000 0x00020000
+pmatch.dll 0x70d60000 0x00010000
+psapi.dll 0x70d50000 0x00010000
+rcdll.dll 0x70d00000 0x00050000
+rdr2kd.dll 0x70cf0000 0x00010000
+rdrkd.dll 0x70ce0000 0x00010000
+shcv.dll 0x70cc0000 0x00020000
+srvkd.dll 0x70ca0000 0x00020000
+symcvt.dll 0x70c90000 0x00010000
+testctrl.dll 0x70c70000 0x00020000
+testdlgs.dll 0x70c50000 0x00020000
+testevnt.dll 0x70c30000 0x00020000
+testscrn.dll 0x70c10000 0x00020000
+testvw32.dll 0x70c00000 0x00010000
+tglcase.dll 0x70bf0000 0x00010000
+tlloc.dll 0x70be0000 0x00010000
+tlpipe.dll 0x70bc0000 0x00020000
+tlser.dll 0x70bb0000 0x00010000
+ttkdx.dll 0x70ba0000 0x00010000
+ulcase.dll 0x70b90000 0x00010000
+userkdx.dll 0x70b50000 0x00040000
+ws1.dll 0x70b40000 0x00010000
+wst.dll 0x70b20000 0x00020000
+zdi32.dll 0x70b00000 0x00020000
+zernel32.dll 0x70ae0000 0x00020000
+zle32.dll 0x70ac0000 0x00020000
+aboutwep.dll 0x70ab0000 0x00010000
+advpack.dll 0x70a80000 0x00030000
+apidll.dll 0x70a50000 0x00030000
+iodll.dll 0x70a30000 0x00020000
+mepparty.dll 0x70a20000 0x00010000
+nclipps.dll 0x70a10000 0x00010000
+rasether.dll 0x709f0000 0x00020000
+rcdata1.dll 0x709d0000 0x00020000
+rtutils.dll 0x709b0000 0x00020000
+rwinf.dll 0x70990000 0x00020000
+rwmac.dll 0x70960000 0x00030000
+rwres32.dll 0x70930000 0x00030000
+rwwin16.dll 0x70910000 0x00020000
+rwwin32.dll 0x708f0000 0x00020000
+secedit.dll 0x708e0000 0x00010000
+strmexts.dll 0x708d0000 0x00010000
+tophook.dll 0x708c0000 0x00010000
+winclip.dll 0x708b0000 0x00010000
+zextens.dll 0x70890000 0x00020000
+actsrvd.dll 0x70880000 0x00010000
+adptif.dll 0x70860000 0x00020000
+atm.dll 0x70840000 0x00020000
+atmdrvr.dll 0x707e0000 0x00060000
+bhp001.dll 0x707b0000 0x00030000
+bhp002.dll 0x707a0000 0x00010000
+bhp003.dll 0x70790000 0x00010000
+bhp004.dll 0x70780000 0x00010000
+bhp005.dll 0x70760000 0x00020000
+bhp006.dll 0x70740000 0x00020000
+bhp007.dll 0x70720000 0x00020000
+bhp008.dll 0x70700000 0x00020000
+bhp009.dll 0x706c0000 0x00040000
+bhp010.dll 0x706a0000 0x00020000
+bhp011.dll 0x70690000 0x00010000
+bhp012.dll 0x70670000 0x00020000
+bhp013.dll 0x70630000 0x00040000
+bhp014.dll 0x70620000 0x00010000
+bhp015.dll 0x705d0000 0x00050000
+bhp016.dll 0x705b0000 0x00020000
+bhp017.dll 0x70590000 0x00020000
+bhp018.dll 0x70580000 0x00010000
+bhp019.dll 0x70530000 0x00050000
+bhp020.dll 0x704f0000 0x00040000
+bhp021.dll 0x704a0000 0x00050000
+bttncur.dll 0x70480000 0x00020000
+ciutil.dll 0x70470000 0x00010000
+comcat.dll 0x70450000 0x00020000
+ddm.dll 0x70430000 0x00020000
+dfsprov.dll 0x70420000 0x00010000
+dim.dll 0x70400000 0x00020000
+espui.dll 0x703f0000 0x00010000
+fastimer.dll 0x703d0000 0x00020000
+friendly.dll 0x703c0000 0x00010000
+gizmobar.dll 0x703a0000 0x00020000
+goober.dll 0x70390000 0x00010000
+hexedit.dll 0x70370000 0x00020000
+htrn_jis.dll 0x70360000 0x00010000
+ifadmin.dll 0x70330000 0x00030000
+imaadp32.dll 0x70310000 0x00020000
+ipadmin.dll 0x70280000 0x00090000
+ipbootp.dll 0x70260000 0x00020000
+ipmon.dll 0x70230000 0x00030000
+iprip2.dll 0x70210000 0x00020000
+iprtprio.dll 0x70200000 0x00010000
+iprtrmgr.dll 0x701c0000 0x00040000
+ipxadmin.dll 0x70190000 0x00030000
+ipxmon.dll 0x70160000 0x00030000
+ipxrip.dll 0x70140000 0x00020000
+ipxrtmgr.dll 0x70120000 0x00020000
+ipxsap.dll 0x700f0000 0x00030000
+ipxwan.dll 0x700d0000 0x00020000
+joystick.dll 0x700b0000 0x00020000
+lprext.dll 0x700a0000 0x00010000
+mib2util.dll 0x70080000 0x00020000
+mpradmin.dll 0x70060000 0x00020000
+msadp32.dll 0x70040000 0x00020000
+msg711.dll 0x70020000 0x00020000
+msgsm32.dll 0x70000000 0x00020000
+ndrd.dll 0x6ffd0000 0x00020000
+nmapi.dll 0x6ffa0000 0x00030000
+ntprinta.dll 0x6ff80000 0x00020000
+ole2u32a.dll 0x6ff40000 0x00040000
+oleat.dll 0x6ff30000 0x00010000
+olebt.dll 0x6ff20000 0x00010000
+oledll2.dll 0x6ff10000 0x00010000
+oleimpl.dll 0x6ff00000 0x00010000
+olest.dll 0x6fef0000 0x00010000
+ospf.dll 0x6feb0000 0x00040000
+ospfmib.dll 0x6fe80000 0x00030000
+parser.dll 0x6fe60000 0x00020000
+pctsspi.dll 0x6fe40000 0x00020000
+pdh.dll 0x6fe20000 0x00020000
+printuia.dll 0x6fdd0000 0x00050000
+rcauth.dll 0x6fdb0000 0x00020000
+rgprxy.dll 0x6fda0000 0x00010000
+ripcp.dll 0x6fd90000 0x00010000
+riphlp.dll 0x6fd70000 0x00020000
+routemsg.dll 0x6fd60000 0x00010000
+rpcdce4.dll 0x6fd50000 0x00010000
+rpcltc5.dll 0x6fd40000 0x00010000
+rrasgtwy.dll 0x6fd20000 0x00020000
+rrasipx.dll 0x6fd00000 0x00020000
+rrasman.dll 0x6fce0000 0x00020000
+rrasnbf.dll 0x6fcc0000 0x00020000
+rrasppp.dll 0x6fca0000 0x00020000
+rsauth.dll 0x6fc80000 0x00020000
+rtm.dll 0x6fc60000 0x00020000
+sampfilt.dll 0x6fc50000 0x00010000
+shareui.dll 0x6fc30000 0x00020000
+shellalt.dll 0x6fa70000 0x001c0000
+slbs.dll 0x6fa50000 0x00020000
+splx.dll 0x6fa30000 0x00020000
+toolbar.dll 0x6fa10000 0x00020000
+tp4cfg.dll 0x6fa00000 0x00010000
+tssoft32.dll 0x6f9e0000 0x00020000
+urlcache.dll 0x6f9d0000 0x00010000
+winsdb.dll 0x6f9c0000 0x00010000
+wshisotp.dll 0x6f9b0000 0x00010000
+whacm32.dll 0x70000000 0x00010000
+whavicap.dll 0x70010000 0x00010000
+whavifil.dll 0x70020000 0x00010000
+whddeapi.dll 0x70030000 0x00010000
+whddraw.dll 0x70040000 0x00010000
+whdplay.dll 0x70050000 0x00010000
+whdsnd.dll 0x70060000 0x00010000
+whftsrch.dll 0x70070000 0x00020000
+whglu32.dll 0x70090000 0x00010000
+whimghlp.dll 0x700a0000 0x00010000
+whmapi32.dll 0x700b0000 0x00010000
+whmsafd.dll 0x700c0000 0x00010000
+whmssock.dll 0x700d0000 0x00010000
+whnetapi.dll 0x700e0000 0x00020000
+whrasapi.dll 0x70100000 0x00010000
+whrasdlg.dll 0x70110000 0x00010000
+whrassap.dll 0x70120000 0x00010000
+whrpcns4.dll 0x70130000 0x00010000
+whrpcrt4.dll 0x70140000 0x00020000
+whtapi32.dll 0x70160000 0x00020000
+whvfw32.dll 0x70180000 0x00010000
+whws2_32.dll 0x70190000 0x00010000
+wiacm32.dll 0x701a0000 0x00010000
+wiavicap.dll 0x701b0000 0x00010000
+wiavifil.dll 0x701c0000 0x00010000
+wicfgmgr.dll 0x701d0000 0x00020000
+wictl3d.dll 0x701f0000 0x00020000
+widdeapi.dll 0x70210000 0x00010000
+widdraw.dll 0x70220000 0x00010000
+widplay.dll 0x70230000 0x00010000
+widsnd.dll 0x70240000 0x00010000
+wiftsrch.dll 0x70250000 0x00010000
+wiglu32.dll 0x70260000 0x00010000
+wiimghlp.dll 0x70270000 0x00010000
+wimapi32.dll 0x70280000 0x00010000
+wimfc40.dll 0x70290000 0x000f0000
+wimfc40u.dll 0x70380000 0x000f0000
+wimfc42.dll 0x70470000 0x00100000
+wimfc42u.dll 0x70570000 0x00100000
+wimsafd.dll 0x70670000 0x00010000
+wimsjt30.dll 0x70680000 0x00110000
+wimssock.dll 0x70790000 0x00010000
+winetapi.dll 0x707a0000 0x00010000
+wiodbcjt.dll 0x707b0000 0x00040000
+wiolecli.dll 0x707f0000 0x00020000
+wiolesvr.dll 0x70810000 0x00010000
+wirasapi.dll 0x70820000 0x00010000
+wirasdlg.dll 0x70830000 0x00010000
+wirassap.dll 0x70840000 0x00010000
+wirpcns4.dll 0x70850000 0x00010000
+wirpcrt4.dll 0x70860000 0x00030000
+wisetupa.dll 0x70890000 0x00050000
+witapi32.dll 0x708e0000 0x00010000
+wivcirt.dll 0x708f0000 0x00020000
+wivcrt20.dll 0x70910000 0x00050000
+wivfw32.dll 0x70960000 0x00010000
+wiwmsui.dll 0x70970000 0x000d0000
+wiws2_32.dll 0x70a40000 0x00010000
+addgrpw.exe 0x01000000 0x00030000
+addusrw.exe 0x01030000 0x00040000
+arp.exe 0x01070000 0x00010000
+at.exe 0x01080000 0x00010000
+atsvc.exe 0x01090000 0x00010000
+attrib.exe 0x010a0000 0x00020000
+autochk.exe 0x010c0000 0x000b0000
+autoconv.exe 0x01170000 0x000c0000
+autolfn.exe 0x01230000 0x00010000
+autorun.exe 0x01240000 0x000b0000
+bootok.exe 0x012f0000 0x00020000
+bootvrfy.exe 0x01310000 0x00020000
+cacls.exe 0x01330000 0x00030000
+calc.exe 0x01360000 0x00040000
+cdplayer.exe 0x013a0000 0x00030000
+charmap.exe 0x013d0000 0x00030000
+chkdsk.exe 0x01400000 0x00020000
+cifilter.exe 0x01420000 0x00010000
+clipbrd.exe 0x01430000 0x00050000
+clipsrv.exe 0x01480000 0x00030000
+clock.exe 0x014b0000 0x00020000
+cmd.exe 0x014d0000 0x00070000
+comp.exe 0x01540000 0x00020000
+compact.exe 0x01560000 0x00030000
+control.exe 0x01590000 0x00010000
+convert.exe 0x015a0000 0x00020000
+dcomcnfg.exe 0x015c0000 0x00030000
+ddeshare.exe 0x015f0000 0x00020000
+ddhelp.exe 0x01610000 0x00020000
+dhcpadmn.exe 0x01630000 0x00070000
+dialer.exe 0x016a0000 0x00020000
+diskperf.exe 0x016c0000 0x00020000
+dns.exe 0x016e0000 0x00040000
+dnsadmin.exe 0x01720000 0x00040000
+doskey.exe 0x01760000 0x00020000
+drwtsn32.exe 0x01780000 0x00020000
+eventvwr.exe 0x017a0000 0x00030000
+excfg32.exe 0x017d0000 0x00010000
+exchng32.exe 0x017e0000 0x00010000
+expand.exe 0x017f0000 0x00030000
+explorer.exe 0x01820000 0x00070000
+fc.exe 0x01890000 0x00020000
+find.exe 0x018b0000 0x00020000
+findstr.exe 0x018d0000 0x00020000
+finger.exe 0x018f0000 0x00010000
+fontview.exe 0x01900000 0x00020000
+forcedos.exe 0x01920000 0x00020000
+freecell.exe 0x01940000 0x00020000
+ftp.exe 0x01960000 0x00020000
+grpconv.exe 0x01980000 0x00020000
+help.exe 0x019a0000 0x00020000
+hostname.exe 0x019c0000 0x00010000
+hypertrm.exe 0x019d0000 0x00010000
+iexplore.exe 0x019e0000 0x00130000
+inetins.exe 0x01b10000 0x00010000
+internat.exe 0x01b20000 0x00010000
+ipconfig.exe 0x01b30000 0x00010000
+ipxroute.exe 0x01b40000 0x00010000
+jetconv.exe 0x01b50000 0x00020000
+jetpack.exe 0x01b70000 0x00010000
+kbdsel.exe 0x01b80000 0x00020000
+label.exe 0x01ba0000 0x00020000
+lcwiz.exe 0x01bc0000 0x00030000
+lights.exe 0x01bf0000 0x00020000
+llsmgr.exe 0x01c10000 0x00060000
+llssrv.exe 0x01c70000 0x00040000
+lmrepl.exe 0x01cb0000 0x00030000
+locator.exe 0x01ce0000 0x00040000
+lodctr.exe 0x01d20000 0x00020000
+logview.exe 0x01d40000 0x00020000
+lpq.exe 0x01d60000 0x00010000
+lpr.exe 0x01d70000 0x00010000
+lsass.exe 0x01d80000 0x00010000
+macfile.exe 0x01d90000 0x00020000
+mapisp32.exe 0x01db0000 0x00010000
+mapisrvr.exe 0x01dc0000 0x00010000
+mdisp32.exe 0x01dd0000 0x00030000
+mlset32.exe 0x01e00000 0x00010000
+mplay32.exe 0x01e10000 0x00040000
+mpnotify.exe 0x01e50000 0x00020000
+mspaint.exe 0x01e70000 0x00090000
+musrmgr.exe 0x01f00000 0x00060000
+nbtstat.exe 0x01f60000 0x00010000
+ncadmin.exe 0x01f70000 0x00060000
+nddeagnt.exe 0x01fd0000 0x00010000
+nddeapir.exe 0x01fe0000 0x00010000
+net.exe 0x01ff0000 0x00030000
+net1.exe 0x02020000 0x00050000
+netdde.exe 0x02070000 0x00040000
+netstat.exe 0x020b0000 0x00010000
+nmagent.exe 0x020c0000 0x00010000
+notepad.exe 0x020d0000 0x00020000
+nslookup.exe 0x020f0000 0x00020000
+ntbackup.exe 0x02110000 0x00130000
+ntbooks.exe 0x02240000 0x00020000
+nwconv.exe 0x02260000 0x00080000
+nwscript.exe 0x022e0000 0x00050000
+packager.exe 0x02330000 0x00030000
+pax.exe 0x02360000 0x00030000
+pbrush.exe 0x02390000 0x00010000
+perfmon.exe 0x023a0000 0x00050000
+pinball.exe 0x023f0000 0x000c0000
+ping.exe 0x024b0000 0x00010000
+poledit.exe 0x024c0000 0x00040000
+polsetup.exe 0x02500000 0x00020000
+portuas.exe 0x02520000 0x00020000
+posix.exe 0x02540000 0x00030000
+print.exe 0x02570000 0x00020000
+progman.exe 0x02590000 0x00060000
+psxss.exe 0x025f0000 0x00040000
+quikview.exe 0x02630000 0x00030000
+rasadmin.exe 0x02660000 0x00040000
+rasautou.exe 0x026a0000 0x00010000
+rasdial.exe 0x026b0000 0x00010000
+rasman.exe 0x026c0000 0x00010000
+rasmon.exe 0x026d0000 0x00040000
+rasphone.exe 0x02710000 0x00020000
+rassprxy.exe 0x02730000 0x00010000
+rassrv.exe 0x02740000 0x00030000
+rcp.exe 0x02770000 0x00010000
+rdisk.exe 0x02780000 0x00050000
+recover.exe 0x027d0000 0x00020000
+regedit.exe 0x027f0000 0x00030000
+regedt32.exe 0x02820000 0x00060000
+replace.exe 0x02880000 0x00020000
+restore.exe 0x028a0000 0x00030000
+rexec.exe 0x028d0000 0x00010000
+ripstat.exe 0x028e0000 0x00010000
+route.exe 0x028f0000 0x00010000
+router.exe 0x02900000 0x00010000
+rpcss.exe 0x02910000 0x00030000
+rplcmd.exe 0x02940000 0x00030000
+rplcnv.exe 0x02970000 0x00010000
+rplmgr.exe 0x02980000 0x00040000
+rplsvc.exe 0x029c0000 0x00030000
+rsh.exe 0x029f0000 0x00010000
+rundll32.exe 0x02a00000 0x00010000
+runonce.exe 0x02a10000 0x00010000
+savedump.exe 0x02a20000 0x00030000
+scanpst.exe 0x02a50000 0x00080000
+services.exe 0x02ad0000 0x00040000
+setup.exe 0x02b10000 0x00020000
+sfmprint.exe 0x02b30000 0x00030000
+sfmpsexe.exe 0x02b60000 0x00010000
+sfmreg.exe 0x02b70000 0x00020000
+sfmsvc.exe 0x02b90000 0x00030000
+shmgrate.exe 0x02bc0000 0x00020000
+shrpubw.exe 0x02be0000 0x00040000
+skeys.exe 0x02c20000 0x00030000
+smss.exe 0x02c50000 0x00020000
+sndrec32.exe 0x02c70000 0x00040000
+sndvol32.exe 0x02cb0000 0x00030000
+snmp.exe 0x02ce0000 0x00010000
+snmptrap.exe 0x02cf0000 0x00010000
+sol.exe 0x02d00000 0x00020000
+sort.exe 0x02d20000 0x00020000
+spinit.exe 0x02d40000 0x00020000
+spoolss.exe 0x02d60000 0x00020000
+sprestrt.exe 0x02d80000 0x00020000
+srvmgr.exe 0x02da0000 0x00050000
+subst.exe 0x02df0000 0x00020000
+syncapp.exe 0x02e10000 0x00020000
+systray.exe 0x02e30000 0x00020000
+tapisrv.exe 0x02e50000 0x00040000
+taskman.exe 0x02e90000 0x00020000
+taskmgr.exe 0x02eb0000 0x00030000
+tcpsvcs.exe 0x02ee0000 0x00020000
+telnet.exe 0x02f00000 0x00030000
+tftp.exe 0x02f30000 0x00010000
+tracert.exe 0x02f40000 0x00010000
+unlodctr.exe 0x02f50000 0x00020000
+upg351db.exe 0x02f70000 0x00110000
+ups.exe 0x03080000 0x00010000
+userinit.exe 0x03090000 0x00020000
+usetup.exe 0x030b0000 0x00020000
+usrmgr.exe 0x030d0000 0x00080000
+wangimg.exe 0x03150000 0x000a0000
+welcome.exe 0x031f0000 0x00010000
+winchat.exe 0x03200000 0x00030000
+windisk.exe 0x03230000 0x00050000
+winfile.exe 0x03280000 0x00070000
+winhlp32.exe 0x032f0000 0x000a0000
+winhstb.exe 0x03390000 0x00020000
+winlogon.exe 0x033b0000 0x00040000
+winmine.exe 0x033f0000 0x00020000
+winmsd.exe 0x03410000 0x00040000
+wins.exe 0x03450000 0x00060000
+winsadmn.exe 0x034b0000 0x00070000
+winver.exe 0x03520000 0x00020000
+wizmgr.exe 0x03540000 0x00020000
+wordpad.exe 0x03560000 0x00050000
+write.exe 0x035b0000 0x00010000
+xcopy.exe 0x035c0000 0x00030000
+mcsxnsvc.exe 0x035f0000 0x00010000
+ntsd.exe 0x03600000 0x00090000
+rcmd.exe 0x03690000 0x00010000
+rcmdsvc.exe 0x036a0000 0x00010000
+ubnbsvc.exe 0x036b0000 0x00010000
+alphakd.exe 0x036c0000 0x00050000
+apf32cvt.exe 0x03710000 0x00020000
+apf32dmp.exe 0x03730000 0x00020000
+asaxp.exe 0x03750000 0x00160000
+c1.exe 0x038b0000 0x000d0000
+c1xx.exe 0x03980000 0x00160000
+c2.exe 0x03ae0000 0x003b0000
+capdump.exe 0x03e90000 0x00020000
+capsetup.exe 0x03eb0000 0x00020000
+cl.exe 0x03ed0000 0x00040000
+claxp.exe 0x03f10000 0x00020000
+compress.exe 0x03f30000 0x000a0000
+contents.exe 0x03fd0000 0x00010000
+cvdump.exe 0x03fe0000 0x00040000
+cvpack.exe 0x04020000 0x00030000
+cvtres.exe 0x04050000 0x00010000
+ddespy.exe 0x04060000 0x00030000
+dflayout.exe 0x04090000 0x00020000
+dfview.exe 0x040b0000 0x00010000
+dlgedit.exe 0x040c0000 0x00050000
+dobjview.exe 0x04110000 0x00020000
+drivers.exe 0x04130000 0x00020000
+fontedit.exe 0x04150000 0x00030000
+hcrtf.exe 0x04180000 0x00090000
+hcw.exe 0x04210000 0x000a0000
+i386kd.exe 0x042b0000 0x00050000
+imagedit.exe 0x04300000 0x00040000
+irotview.exe 0x04340000 0x00020000
+lib.exe 0x04360000 0x00010000
+link.exe 0x04370000 0x000e0000
+link32.exe 0x04450000 0x00010000
+lookmon.exe 0x04460000 0x00050000
+makeani.exe 0x044b0000 0x00020000
+masm386.exe 0x044d0000 0x00060000
+mc.exe 0x04530000 0x00030000
+mep.exe 0x04560000 0x00060000
+mibcc.exe 0x045c0000 0x00020000
+midl.exe 0x045e0000 0x00130000
+mipskd.exe 0x04710000 0x00040000
+mktyplib.exe 0x04750000 0x00040000
+nmake.exe 0x04790000 0x00030000
+oleview.exe 0x047c0000 0x00050000
+perfmtr.exe 0x04810000 0x00020000
+pfmon.exe 0x04830000 0x00030000
+pmon.exe 0x04860000 0x00030000
+poolmon.exe 0x04890000 0x00050000
+ppckd.exe 0x048e0000 0x00050000
+profile.exe 0x04930000 0x00020000
+pstat.exe 0x04950000 0x00020000
+pview.exe 0x04970000 0x00040000
+pviewer.exe 0x049b0000 0x00020000
+rc.exe 0x049d0000 0x00020000
+rebase.exe 0x049f0000 0x00030000
+rlman.exe 0x04a20000 0x00050000
+rm.exe 0x04a70000 0x00030000
+sc.exe 0x04aa0000 0x00030000
+smashlck.exe 0x04ad0000 0x00020000
+spy.exe 0x04af0000 0x00030000
+symedit.exe 0x04b20000 0x00010000
+testdlgs.exe 0x04b30000 0x00020000
+testdrvr.exe 0x04b50000 0x00070000
+testscrn.exe 0x04bc0000 0x00020000
+top.exe 0x04be0000 0x00050000
+undel.exe 0x04c30000 0x00030000
+undname.exe 0x04c60000 0x00020000
+uuidgen.exe 0x04c80000 0x00020000
+vadump.exe 0x04ca0000 0x01040000
+vdmperf.exe 0x05ce0000 0x00020000
+verfix.exe 0x05d00000 0x00020000
+vidcap32.exe 0x05d20000 0x00040000
+windbg.exe 0x05d60000 0x00300000
+windbgrm.exe 0x06060000 0x00010000
+windiff.exe 0x06070000 0x00030000
+wperf.exe 0x060a0000 0x00030000
+wstcat.exe 0x060d0000 0x00030000
+wstdump.exe 0x06100000 0x00020000
+wstune.exe 0x06120000 0x00030000
+zoomin.exe 0x06150000 0x00020000
+zwapi.exe 0x06170000 0x00020000
+access.exe 0x06190000 0x00020000
+acllist.exe 0x061b0000 0x00010000
+addfile.exe 0x061c0000 0x00010000
+addproj.exe 0x061d0000 0x00010000
+adduser.exe 0x061e0000 0x00020000
+alias.exe 0x06200000 0x00020000
+aniedit.exe 0x06220000 0x00020000
+apimon.exe 0x06240000 0x00070000
+applyinf.exe 0x062b0000 0x00020000
+autowrap.exe 0x062d0000 0x00030000
+basewin.exe 0x06300000 0x00020000
+beep.exe 0x06320000 0x00020000
+bin2c.exe 0x06340000 0x00020000
+bind.exe 0x06360000 0x00020000
+bingen.exe 0x06380000 0x00020000
+binplace.exe 0x063a0000 0x00030000
+bintrack.exe 0x063d0000 0x00020000
+browdeb.exe 0x063f0000 0x00020000
+browmon.exe 0x06410000 0x00020000
+browse.exe 0x06430000 0x00010000
+browstat.exe 0x06440000 0x00020000
+bugboard.exe 0x06460000 0x00010000
+build.exe 0x06470000 0x00060000
+buildnum.exe 0x064d0000 0x00020000
+cat.exe 0x064f0000 0x00020000
+cats.exe 0x06510000 0x00010000
+catsrc.exe 0x06520000 0x00010000
+cdb.exe 0x06530000 0x00090000
+cdp.exe 0x065c0000 0x00020000
+certify.exe 0x065e0000 0x00020000
+checkfix.exe 0x06600000 0x00020000
+checkrel.exe 0x06620000 0x00040000
+chkalive.exe 0x06660000 0x00020000
+chksum.exe 0x06680000 0x00030000
+chkverfy.exe 0x066b0000 0x00020000
+chmode.exe 0x066d0000 0x00020000
+choice.exe 0x066f0000 0x00020000
+ciscan.exe 0x06710000 0x00010000
+cmdevent.exe 0x06720000 0x00020000
+cmpver.exe 0x06740000 0x00010000
+compdir.exe 0x06750000 0x00020000
+cookie.exe 0x06770000 0x00030000
+cp.exe 0x067a0000 0x00030000
+crash.exe 0x067d0000 0x00030000
+cruel.exe 0x06800000 0x00010000
+curridw.exe 0x06810000 0x00020000
+dbgdump.exe 0x06830000 0x00020000
+dbmon.exe 0x06850000 0x00010000
+dbwin32.exe 0x06860000 0x00020000
+dcomp.exe 0x06880000 0x00030000
+defect.exe 0x068b0000 0x00010000
+delfile.exe 0x068c0000 0x00010000
+delnode.exe 0x068d0000 0x00020000
+delprof.exe 0x068f0000 0x00020000
+delproj.exe 0x06910000 0x00010000
+devpre.exe 0x06920000 0x00010000
+dh.exe 0x06930000 0x00030000
+dhcpcli.exe 0x06960000 0x00010000
+dhcpcmd.exe 0x06970000 0x00010000
+dhcpins.exe 0x06980000 0x00010000
+dhcploc.exe 0x06990000 0x00010000
+dhcptst.exe 0x069a0000 0x00010000
+diamond.exe 0x069b0000 0x000c0000
+diamwrap.exe 0x06a70000 0x00020000
+diff.exe 0x06a90000 0x00030000
+diruse.exe 0x06ac0000 0x00020000
+diskedit.exe 0x06ae0000 0x00040000
+diskmon.exe 0x06b20000 0x00030000
+dommon.exe 0x06b50000 0x00020000
+dosdev.exe 0x06b70000 0x00020000
+drivemap.exe 0x06b90000 0x00020000
+dskbench.exe 0x06bb0000 0x00020000
+dskimage.exe 0x06bd0000 0x00020000
+du.exe 0x06bf0000 0x00020000
+dumpchk.exe 0x06c10000 0x00020000
+dumpexam.exe 0x06c30000 0x00030000
+dumpflop.exe 0x06c60000 0x00030000
+dumpgrp.exe 0x06c90000 0x00030000
+dumpref.exe 0x06cc0000 0x00020000
+ech.exe 0x06ce0000 0x00020000
+echotime.exe 0x06d00000 0x00030000
+editreg.exe 0x06d30000 0x00020000
+editsym.exe 0x06d50000 0x00020000
+enlist.exe 0x06d70000 0x00010000
+ethstat.exe 0x06d80000 0x00020000
+exctrlst.exe 0x06da0000 0x00020000
+execmail.exe 0x06dc0000 0x00010000
+exp.exe 0x06dd0000 0x00030000
+extag.exe 0x06e00000 0x00030000
+fcom.exe 0x06e30000 0x00030000
+files.exe 0x06e60000 0x00180000
+filever.exe 0x06fe0000 0x00030000
+filter.exe 0x07010000 0x00010000
+fix31grp.exe 0x07020000 0x00020000
+fixdiff.exe 0x07040000 0x00020000
+fixlinks.exe 0x07060000 0x00020000
+forceflt.exe 0x07080000 0x00010000
+forcemrg.exe 0x07090000 0x00010000
+gensrv.exe 0x070a0000 0x00020000
+getbin.exe 0x070c0000 0x00030000
+getdbg.exe 0x070f0000 0x00040000
+gflags.exe 0x07130000 0x00020000
+golf.exe 0x07150000 0x00010000
+grptoreg.exe 0x07160000 0x00020000
+guidlib.exe 0x07180000 0x00030000
+hd.exe 0x071b0000 0x00030000
+he.exe 0x071e0000 0x00030000
+head.exe 0x07210000 0x00020000
+heapmon.exe 0x07230000 0x00020000
+hextract.exe 0x07250000 0x00020000
+hsplit.exe 0x07270000 0x00020000
+iexpress.exe 0x07290000 0x00040000
+imagecfg.exe 0x072d0000 0x00030000
+imagechk.exe 0x07300000 0x00020000
+in.exe 0x07320000 0x00010000
+infs.exe 0x07330000 0x00010000
+infsize.exe 0x07340000 0x00010000
+ini.exe 0x07350000 0x00020000
+kbdtool.exe 0x07370000 0x00030000
+kernprof.exe 0x073a0000 0x00020000
+kernrate.exe 0x073c0000 0x00010000
+kerntwk.exe 0x073d0000 0x00020000
+kill.exe 0x073f0000 0x00030000
+layout.exe 0x07420000 0x00010000
+links.exe 0x07430000 0x00020000
+list.exe 0x07450000 0x00030000
+listmung.exe 0x07480000 0x00020000
+llscmd.exe 0x074a0000 0x00010000
+llsdbg.exe 0x074b0000 0x00010000
+lnkdump.exe 0x074c0000 0x00020000
+loc.exe 0x074e0000 0x00020000
+local.exe 0x07500000 0x00010000
+log.exe 0x07510000 0x00010000
+ls.exe 0x07520000 0x00030000
+makedisk.exe 0x07550000 0x00010000
+mapmsg.exe 0x07560000 0x00020000
+mbytes.exe 0x07580000 0x00030000
+mcpyfile.exe 0x075b0000 0x00010000
+merge.exe 0x075c0000 0x00030000
+midleb.exe 0x075f0000 0x00020000
+midlpg.exe 0x07610000 0x00020000
+midlyacc.exe 0x07630000 0x00060000
+mlayout.exe 0x07690000 0x000c0000
+mrc.exe 0x07750000 0x00020000
+msize.exe 0x07770000 0x00010000
+mtc.exe 0x07780000 0x00010000
+mttf.exe 0x07790000 0x00020000
+mttfvwr.exe 0x077b0000 0x00020000
+munge.exe 0x077d0000 0x00030000
+mv.exe 0x07800000 0x00030000
+netclip.exe 0x07830000 0x00030000
+netjoin.exe 0x07860000 0x00020000
+netperm.exe 0x07880000 0x00020000
+netwatch.exe 0x078a0000 0x00020000
+nlmon.exe 0x078c0000 0x00010000
+nltest.exe 0x078d0000 0x00030000
+ntimer.exe 0x07900000 0x00030000
+nvram.exe 0x07930000 0x00020000
+objdir.exe 0x07950000 0x00020000
+objmon.exe 0x07970000 0x00040000
+oeminf.exe 0x079b0000 0x00010000
+order.exe 0x079c0000 0x00030000
+out.exe 0x079f0000 0x00010000
+paranoia.exe 0x07a00000 0x00030000
+parcomp.exe 0x07a30000 0x00030000
+parsync.exe 0x07a60000 0x00020000
+passprop.exe 0x07a80000 0x00010000
+pcall.exe 0x07a90000 0x00030000
+pcmcmd.exe 0x07ac0000 0x00020000
+pdump.exe 0x07ae0000 0x00020000
+pegged.exe 0x07b00000 0x00020000
+pperf.exe 0x07b20000 0x00040000
+ppr.exe 0x07b60000 0x00040000
+pretty.exe 0x07ba0000 0x00020000
+prodfilt.exe 0x07bc0000 0x00020000
+psxhello.exe 0x07be0000 0x00020000
+qgrep.exe 0x07c00000 0x00040000
+qslice.exe 0x07c40000 0x00070000
+random.exe 0x07cb0000 0x00030000
+rathole.exe 0x07ce0000 0x00020000
+rcdump.exe 0x07d00000 0x00010000
+rcpp.exe 0x07d10000 0x00040000
+readline.exe 0x07d50000 0x00020000
+regback.exe 0x07d70000 0x00040000
+regdir.exe 0x07db0000 0x00030000
+regdmp.exe 0x07de0000 0x00030000
+regfind.exe 0x07e10000 0x00030000
+regini.exe 0x07e40000 0x00030000
+regtogrp.exe 0x07e70000 0x00020000
+remote.exe 0x07e90000 0x00030000
+rescan.exe 0x07ec0000 0x00020000
+resmon.exe 0x07ee0000 0x00030000
+reversi.exe 0x07f10000 0x00010000
+rollback.exe 0x07f20000 0x00010000
+roshare.exe 0x07f30000 0x00020000
+sadmin.exe 0x07f50000 0x00050000
+sclist.exe 0x07fa0000 0x00030000
+scomp.exe 0x07fd0000 0x00010000
+secedit.exe 0x07fe0000 0x00020000
+seclist.exe 0x08000000 0x00020000
+setlink.exe 0x08020000 0x00020000
+showperf.exe 0x08040000 0x00020000
+shutdown.exe 0x08060000 0x00020000
+simbad.exe 0x08080000 0x00020000
+size.exe 0x080a0000 0x00010000
+sleep.exe 0x080b0000 0x00020000
+slm.exe 0x080d0000 0x00060000
+slmck.exe 0x08130000 0x00040000
+slmdiff.exe 0x08170000 0x00030000
+slmed.exe 0x081a0000 0x00060000
+smbtrace.exe 0x08200000 0x00030000
+snake.exe 0x08230000 0x00020000
+snmputil.exe 0x08250000 0x00010000
+solidpp.exe 0x08260000 0x00020000
+splinfo.exe 0x08280000 0x00010000
+splitsym.exe 0x08290000 0x00020000
+srch.exe 0x082b0000 0x00050000
+srvname.exe 0x08300000 0x00020000
+ssptest.exe 0x08320000 0x00010000
+ssync.exe 0x08330000 0x00010000
+startpgm.exe 0x08340000 0x00020000
+status.exe 0x08360000 0x00010000
+strings.exe 0x08370000 0x00020000
+stripcv.exe 0x08390000 0x00020000
+stripinf.exe 0x083b0000 0x00010000
+strmdbg.exe 0x083c0000 0x00010000
+structo.exe 0x083d0000 0x00020000
+suck.exe 0x083f0000 0x00030000
+switcher.exe 0x08420000 0x00010000
+sync.exe 0x08430000 0x00020000
+sysdiff.exe 0x08450000 0x00030000
+tail.exe 0x08480000 0x00020000
+taipei.exe 0x084a0000 0x00030000
+takeown.exe 0x084d0000 0x00020000
+tc.exe 0x084f0000 0x00030000
+tee.exe 0x08520000 0x00020000
+tictac.exe 0x08540000 0x00010000
+tile.exe 0x08550000 0x00020000
+timeit.exe 0x08570000 0x00020000
+timer.exe 0x08590000 0x00030000
+tlist.exe 0x085c0000 0x00030000
+topdesk.exe 0x085f0000 0x00080000
+touch.exe 0x08670000 0x00030000
+tpdiff.exe 0x086a0000 0x00030000
+trans.exe 0x086d0000 0x00030000
+tz.exe 0x08700000 0x00020000
+uixport.exe 0x08720000 0x00020000
+units.exe 0x08740000 0x00020000
+unmerge.exe 0x08760000 0x00030000
+upd.exe 0x08790000 0x00030000
+upddbg.exe 0x087c0000 0x00020000
+updrn.exe 0x087e0000 0x00030000
+vdesk.exe 0x08810000 0x00020000
+vi.exe 0x08830000 0x00040000
+walk.exe 0x08870000 0x00020000
+wc.exe 0x08890000 0x00020000
+wcshdr.exe 0x088b0000 0x00020000
+wextract.exe 0x088d0000 0x00040000
+where.exe 0x08910000 0x00030000
+winobj.exe 0x08940000 0x00060000
+winschk.exe 0x089a0000 0x00ba0000
+winscl.exe 0x09540000 0x00020000
+winsdrv.exe 0x09560000 0x00020000
+winvtp.exe 0x09580000 0x00030000
+wnbstat.exe 0x095b0000 0x00030000
+ws.exe 0x095e0000 0x00020000
+ws2hdr.exe 0x09600000 0x00010000
+xdosnet.exe 0x09610000 0x00020000
+xerox.exe 0x09630000 0x00020000
+yapt.exe 0x09650000 0x00030000
+ync.exe 0x09680000 0x00020000
+z.exe 0x096a0000 0x00070000
+a2coff.exe 0x09710000 0x000b0000
+accupd.exe 0x097c0000 0x00020000
+accupd2.exe 0x097e0000 0x00030000
+actclt.exe 0x09810000 0x00030000
+actsrv.exe 0x09840000 0x00010000
+bldvtbl.exe 0x09850000 0x00020000
+c1xx32.exe 0x09870000 0x00110000
+capiinst.exe 0x09980000 0x00020000
+ccmd.exe 0x099a0000 0x00070000
+ccsetup.exe 0x09a10000 0x00020000
+client.exe 0x09a30000 0x00010000
+clipdump.exe 0x09a40000 0x00020000
+cntroutl.exe 0x09a60000 0x00040000
+convgrp.exe 0x09aa0000 0x00020000
+cpustres.exe 0x09ac0000 0x00010000
+cputgen.exe 0x09ad0000 0x00020000
+ctt2rle.exe 0x09af0000 0x00020000
+ddmprxy.exe 0x09b10000 0x00020000
+dfsetup.exe 0x09b30000 0x00020000
+dftool.exe 0x09b50000 0x00020000
+dhcmp.exe 0x09b70000 0x00020000
+discon.exe 0x09b90000 0x00010000
+disctest.exe 0x09ba0000 0x00010000
+dnscmd.exe 0x09bb0000 0x00010000
+dnssetup.exe 0x09bc0000 0x00010000
+dnsstat.exe 0x09bd0000 0x00010000
+dphhogs.exe 0x09be0000 0x00010000
+dskdump.exe 0x09bf0000 0x00020000
+dummy.exe 0x09c10000 0x00010000
+dumpbin.exe 0x09c20000 0x00010000
+dumpclip.exe 0x09c30000 0x00020000
+empty.exe 0x09c50000 0x00030000
+emptyq.exe 0x09c80000 0x00040000
+espexe.exe 0x09cc0000 0x00020000
+execslm.exe 0x09ce0000 0x00010000
+explalt.exe 0x09cf0000 0x00070000
+fail.exe 0x09d60000 0x00010000
+faxstres.exe 0x09d70000 0x00010000
+fileback.exe 0x09d80000 0x00010000
+filtest.exe 0x09d90000 0x00010000
+ftc.exe 0x09da0000 0x00030000
+gdibench.exe 0x09dd0000 0x00050000
+gdistats.exe 0x09e20000 0x00020000
+genthnk.exe 0x09e40000 0x00030000
+getmttf.exe 0x09e70000 0x00020000
+htmboard.exe 0x09e90000 0x00010000
+icntrotl.exe 0x09ea0000 0x00040000
+impchk.exe 0x09ee0000 0x00020000
+infilter.exe 0x09f00000 0x00020000
+init.exe 0x09f20000 0x00020000
+install.exe 0x09f40000 0x00020000
+ipsetup.exe 0x09f60000 0x00010000
+ipxping.exe 0x09f70000 0x00010000
+ipxrgcfg.exe 0x09f80000 0x00010000
+ipxrtvw.exe 0x09f90000 0x00030000
+isvrotl.exe 0x09fc0000 0x00030000
+leakyapp.exe 0x09ff0000 0x00010000
+license.exe 0x0a000000 0x00010000
+logdiff.exe 0x0a010000 0x00030000
+machrid.exe 0x0a040000 0x00020000
+mcopy.exe 0x0a060000 0x00010000
+memsnap.exe 0x0a070000 0x00020000
+mprouter.exe 0x0a090000 0x00020000
+netdfs.exe 0x0a0b0000 0x00010000
+netmon.exe 0x0a0c0000 0x000c0000
+netstrs.exe 0x0a180000 0x00020000
+nsnmp.exe 0x0a1a0000 0x00010000
+ntgpcedt.exe 0x0a1b0000 0x00020000
+olebind.exe 0x0a1d0000 0x00020000
+olecnfg.exe 0x0a1f0000 0x00030000
+olesrv.exe 0x0a220000 0x00010000
+oletest.exe 0x0a230000 0x00020000
+pdlcnfig.exe 0x0a250000 0x00020000
+pdlsvc.exe 0x0a270000 0x00020000
+pfm2ifi.exe 0x0a290000 0x00020000
+pifdump.exe 0x0a2b0000 0x00020000
+plotgpc.exe 0x0a2d0000 0x00030000
+plumbing.exe 0x0a300000 0x00030000
+poolsnap.exe 0x0a330000 0x00040000
+ppm2pps.exe 0x0a370000 0x00020000
+printman.exe 0x0a390000 0x00040000
+q.exe 0x0a3d0000 0x00040000
+quickres.exe 0x0a410000 0x00010000
+rasusers.exe 0x0a420000 0x00010000
+regdiff.exe 0x0a430000 0x00030000
+regrest.exe 0x0a460000 0x00050000
+rendtest.exe 0x0a4b0000 0x00010000
+riptest.exe 0x0a4c0000 0x00010000
+rladmin.exe 0x0a4d0000 0x00050000
+rledit.exe 0x0a520000 0x00060000
+rlquiked.exe 0x0a580000 0x00050000
+routemon.exe 0x0a5d0000 0x00010000
+rtradmin.exe 0x0a5e0000 0x00020000
+server.exe 0x0a600000 0x00030000
+setacc.exe 0x0a630000 0x00020000
+setpriv.exe 0x0a650000 0x00020000
+setprop.exe 0x0a670000 0x00020000
+sign.exe 0x0a690000 0x00030000
+simpcntr.exe 0x0a6c0000 0x00030000
+simpdnd.exe 0x0a6f0000 0x00030000
+simpsvr.exe 0x0a720000 0x00030000
+smbrdr.exe 0x0a750000 0x00020000
+sortlog.exe 0x0a770000 0x00020000
+sortpp.exe 0x0a790000 0x00030000
+stgdrt.exe 0x0a7c0000 0x00020000
+stress.exe 0x0a7e0000 0x00010000
+sublocal.exe 0x0a7f0000 0x00020000
+svroutl.exe 0x0a810000 0x00030000
+tapiupr.exe 0x0a840000 0x00010000
+tb20.exe 0x0a850000 0x00040000
+terminal.exe 0x0a890000 0x00060000
+test.exe 0x0a8f0000 0x00020000
+testsrv.exe 0x0a910000 0x00010000
+tlocmgr.exe 0x0a920000 0x00010000
+tpctl.exe 0x0a930000 0x00050000
+upedit.exe 0x0a980000 0x00030000
+w3t.exe 0x0a9b0000 0x00020000
+wansetup.exe 0x0a9d0000 0x00010000
+wcache.exe 0x0a9e0000 0x00020000
+win95cmd.exe 0x0aa00000 0x00080000
+winsdmp.exe 0x0aa80000 0x00010000
+wntipcfg.exe 0x0aa90000 0x00020000
+wrapit.exe 0x0aab0000 0x00020000
+csrss.exe 0x5ffe0000 0x00010000
+winsrv.dll 0x5ff80000 0x00060000
+basesrv.dll 0x5ff60000 0x00020000
+csrsrv.dll 0x5ff40000 0x00020000
+vga.dll 0x5ff30000 0x00010000
+kbdus.dll 0x5ff20000 0x00010000
+kbdbe.dll 0x5ff10000 0x00010000
+kbdbr.dll 0x5ff10000 0x00010000
+kbdca.dll 0x5ff10000 0x00010000
+kbdcz.dll 0x5ff10000 0x00010000
+kbdda.dll 0x5ff10000 0x00010000
+kbddv.dll 0x5ff10000 0x00010000
+kbdes.dll 0x5ff10000 0x00010000
+kbdfc.dll 0x5ff10000 0x00010000
+kbdfi.dll 0x5ff10000 0x00010000
+kbdfr.dll 0x5ff10000 0x00010000
+kbdgr.dll 0x5ff10000 0x00010000
+kbdhe.dll 0x5ff10000 0x00010000
+kbdhu.dll 0x5ff10000 0x00010000
+kbdic.dll 0x5ff10000 0x00010000
+kbdit.dll 0x5ff10000 0x00010000
+kbdla.dll 0x5ff10000 0x00010000
+kbdne.dll 0x5ff10000 0x00010000
+kbdno.dll 0x5ff10000 0x00010000
+kbdpl1.dll 0x5ff10000 0x00010000
+kbdpo.dll 0x5ff10000 0x00010000
+kbdru.dll 0x5ff10000 0x00010000
+kbdsf.dll 0x5ff10000 0x00010000
+kbdsg.dll 0x5ff10000 0x00010000
+kbdsl.dll 0x5ff10000 0x00010000
+kbdsp.dll 0x5ff10000 0x00010000
+kbdsw.dll 0x5ff10000 0x00010000
+kbdtuf.dll 0x5ff10000 0x00010000
+kbdtuq.dll 0x5ff10000 0x00010000
+kbduk.dll 0x5ff10000 0x00010000
+kbdusl.dll 0x5ff10000 0x00010000
+kbdusr.dll 0x5ff10000 0x00010000
+kbdusx.dll 0x5ff10000 0x00010000
+ati.dll 0x5fed0000 0x00040000
+s3.dll 0x5fef0000 0x00020000
+weitekp9.dll 0x5fef0000 0x00020000
+framebuf.dll 0x5ff00000 0x00010000
+qv.dll 0x5fef0000 0x00020000
+wow32.dll 0x0ff50000 0x000a0000
+vcdex.dll 0x0ff40000 0x00010000
+vdmredir.dll 0x0ff10000 0x00030000
+ntvdm.exe 0x0fc20000 0x002f0000
+wx86.dll 0x60000000 0x00020000
+wx86cpu.dll 0x60020000 0x002a0000
+wigdi32.dll 0x5ffe0000 0x00010000
+whgdi32.dll 0x5ffc0000 0x00020000
+wiuser32.dll 0x5ffa0000 0x00020000
+whuser32.dll 0x5ff70000 0x00030000
+wikrnl32.dll 0x5ff60000 0x00010000
+whkrnl32.dll 0x5ff30000 0x00030000
+wishll32.dll 0x5ff20000 0x00010000
+whshll32.dll 0x5ff00000 0x00020000
+wicrtdll.dll 0x5fed0000 0x00030000
+wivcrt.dll 0x5fe80000 0x00050000
+wivcrt40.dll 0x5fe60000 0x00020000
+wintdll.dll 0x5fe40000 0x00020000
+whntdll.dll 0x5fe30000 0x00010000
+wiadv32.dll 0x5fe20000 0x00010000
+whadv32.dll 0x5fe00000 0x00020000
+wimpr.dll 0x5fdf0000 0x00010000
+whmpr.dll 0x5fde0000 0x00010000
+wiversn.dll 0x5fdd0000 0x00010000
+whversn.dll 0x5fdc0000 0x00010000
+wilz32.dll 0x5fdb0000 0x00010000
+whlz32.dll 0x5fda0000 0x00010000
+wiwspool.dll 0x5fd90000 0x00010000
+whwspool.dll 0x5fd80000 0x00010000
+wiwinmm.dll 0x5fd70000 0x00010000
+whwinmm.dll 0x5fd50000 0x00020000
+wisock32.dll 0x5fd40000 0x00010000
+whsock32.dll 0x5fd30000 0x00010000
+wiole32.dll 0x5fd20000 0x00010000
+whole32.dll 0x5fc70000 0x000b0000
+wiopengl.dll 0x5fc60000 0x00010000
+whopengl.dll 0x5fc40000 0x00020000
+wicdlg32.dll 0x5fc30000 0x00010000
+whcdlg32.dll 0x5fc20000 0x00010000
+wicctl32.dll 0x5fc10000 0x00010000
+whcctl32.dll 0x5fc00000 0x00010000
+wioleaut.dll 0x5fb80000 0x00080000
+wioledlg.dll 0x5fb70000 0x00010000
+wholedlg.dll 0x5fb60000 0x00010000
+wx86e.dll 0x5f8b0000 0x002b0000
+iprop.dll 0x5f800000 0x00040000
diff --git a/public/sdk/lib/coffbase.txt b/public/sdk/lib/coffbase.txt
new file mode 100644
index 000000000..c739d4d22
--- /dev/null
+++ b/public/sdk/lib/coffbase.txt
@@ -0,0 +1,903 @@
+;
+; 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: Unused areas are marked as _FREE_.
+
+usermode 0x01000000 0x60000000
+tglcase 0x44000000 0x00080000
+pmatch 0x44080000 0x00080000
+justify 0x44100000 0x00080000
+ulcase 0x44180000 0x00080000
+filter 0x44200000 0x00080000
+mhelp 0x44280000 0x00080000
+mepparty 0x44300000 0x00080000
+srmep 0x44380000 0x00080000
+mshelp 0x44400000 0x00080000
+mbrowse 0x44480000 0x00080000
+zextens 0x44500000 0x00080000
+netmsg 0x44580000 0x00080000
+neth 0x44600000 0x00080000
+netevent 0x44680000 0x00080000
+iologmsg 0x44700000 0x00080000
+ulib 0x44780000 0x00080000
+autoulib 0x44800000 0x00080000
+uhpfs 0x44880000 0x00080000
+ufat 0x44900000 0x00080000
+untfs 0x44980000 0x00080000
+ifsutil 0x44a00000 0x00080000
+cnvfat 0x44a80000 0x00080000
+cnvntfs 0x44b00000 0x00080000
+fmifs 0x44b80000 0x00080000
+uspifs 0x44c00000 0x00080000
+ureg 0x44c80000 0x00080000
+uofs 0x44d00000 0x00080000
+autouofs 0x44d80000 0x00080000
+ofsutil 0x44e00000 0x00080000
+aofsutil 0x44e80000 0x00080000
+ulibif 0x44f00000 0x00080000
+cudbfs 0x44f80000 0x00080000
+proxy 0x45000000 0x00080000
+alertsys 0x45080000 0x00080000
+commnot 0x45100000 0x00080000
+cryptdll 0x45180000 0x00080000
+demoif 0x45200000 0x00080000
+menuedt 0x45280000 0x00080000
+hwdll 0x45300000 0x00080000
+clock 0x45380000 0x00080000
+slm 0x45400000 0x00080000
+cal 0x45480000 0x00080000
+report 0x45500000 0x00080000
+desk 0x45580000 0x00080000
+cxxflt 0x45600000 0x00080000
+clocksch 0x45680000 0x00080000
+dfsui 0x45700000 0x00080000
+iclass 0x45780000 0x00080000
+kdcsvc 0x45800000 0x00080000
+slmck 0x45880000 0x00080000
+cmsstg 0x45900000 0x00080000
+iprod 0x45980000 0x00080000
+kerberos 0x45a00000 0x00080000
+ofskd 0x45a80000 0x00080000
+applet1 0x45b00000 0x00080000
+cairocpl 0x45b80000 0x00080000
+cpo 0x45c00000 0x00080000
+deskapp 0x45c80000 0x00080000
+sadmin 0x45d00000 0x00080000
+ntlm 0x45d80000 0x00080000
+objsrv 0x45e00000 0x00080000
+msgfno 0x45e80000 0x00080000
+lnktrack 0x45f00000 0x00080000
+pocket 0x45f80000 0x00080000
+dsfsmsgs 0x46000000 0x00080000
+riched20 0x46080000 0x00080000
+_CFREE 0x46100000 0x00080000
+scperf 0x46180000 0x00080000
+msvcbook 0x46200000 0x00080000
+dsyscpl 0x46280000 0x00080000
+bmpctl 0x46300000 0x00080000
+spintime 0x46380000 0x00080000
+grpbox 0x46400000 0x00080000
+security 0x46480000 0x00080000
+secur128 0x46480000 0x00080000
+mdbmsg 0x46500000 0x00080000
+bimport 0x46580000 0x00080000
+oldctrls 0x46600000 0x00080000
+smctrls 0x46680000 0x00080000
+offfilt 0x46700000 0x00080000
+stdobj 0x46780000 0x00080000
+csumcat 0x46800000 0x00080000
+sysmgmt 0x46880000 0x00080000
+dsexts 0x46900000 0x00080000
+dfssetup 0x46980000 0x00080000
+testdll 0x46a00000 0x00080000
+cap 0x46a80000 0x00080000
+sysinf 0x46b00000 0x00080000
+shdebug 0x46b80000 0x00080000
+dsmsg 0x46c00000 0x00080000
+popups 0x46c80000 0x00080000
+replsup 0x46d00000 0x00080000
+schema 0x46d80000 0x00080000
+useragnt 0x46e00000 0x00080000
+vpcont 0x46e80000 0x00080000
+uares 0x46f00000 0x00080000
+rndrevrp 0x46f80000 0x00080000
+pdfpage 0x47000000 0x00080000
+pkgpage 0x47080000 0x00080000
+package 0x47100000 0x00080000
+pdf 0x47180000 0x00080000
+jetback 0x47200000 0x00080000
+dfsprov 0x47280000 0x00080000
+dfsinstr 0x47300000 0x00080000
+lprofile 0x47380000 0x00080000
+jetbcli 0x47400000 0x00080000
+oledlg 0x47480000 0x00080000
+edbmsg 0x47500000 0x00080000
+oleprx32 0x47580000 0x00080000
+wintrust 0x47600000 0x00080000
+testext 0x47680000 0x00080000
+loghrs 0x47700000 0x00080000
+scstg 0x47780000 0x00080000
+smoke 0x47800000 0x00080000
+dsys 0x47880000 0x00080000
+chglogdb 0x47900000 0x00080000
+emsabp 0x47980000 0x00080000
+flatrst 0x47a00000 0x00080000
+softpub 0x47a80000 0x00080000
+oabgen 0x47b00000 0x00080000
+replui 0x47b80000 0x00080000
+roschlog 0x47c00000 0x00080000
+rsmgr 0x47c80000 0x00080000
+dsobjs 0x47d00000 0x00080000
+account 0x47d80000 0x00080000
+perfdsa 0x47e00000 0x00080000
+dracheck 0x47e80000 0x00080000
+dsmail 0x47f00000 0x00080000
+atsvc 0x47f80000 0x00080000
+drax400 0x48000000 0x00080000
+libxds 0x48080000 0x00080000
+dssrv 0x48100000 0x00080000
+digsig 0x48180000 0x00080000
+xfilexr 0x48200000 0x00080000
+webcore 0x48280000 0x00080000
+rtoolbar 0x48300000 0x00080000
+rtfdoc 0x48380000 0x00080000
+spincube 0x48400000 0x00080000
+msgina 0x48480000 0x00080000
+rsabase 0x48500000 0x00080000
+smss 0x48580000 0x00080000
+brhj770 0x48600000 0x00080000
+brother9 0x48680000 0x00080000
+brothr24 0x48700000 0x00080000
+canon330 0x48780000 0x00080000
+canon800 0x48800000 0x00080000
+canonlbp 0x48880000 0x00080000
+cit24us 0x48900000 0x00080000
+cit9us 0x48980000 0x00080000
+citoh 0x48a00000 0x00080000
+dec24pin 0x48a80000 0x00080000
+dec9pin 0x48b00000 0x00080000
+diconix 0x48b80000 0x00080000
+epson24 0x48c00000 0x00080000
+epson9 0x48c80000 0x00080000
+escp2e 0x48d00000 0x00080000
+escp2ms 0x48d80000 0x00080000
+fuji24 0x48e00000 0x00080000
+fuji9 0x48e80000 0x00080000
+hpdskjet 0x48f00000 0x00080000
+hppcl 0x48f80000 0x00080000
+hppcle 0x48f80000 0x00080000
+optra 0x49080000 0x00080000
+pcl5ems 0x49100000 0x00080000
+pcl5emse 0x49100000 0x00080000
+pcl5ms 0x49180000 0x00080000
+pcl5mse 0x49180000 0x00080000
+ibm238x 0x49200000 0x00080000
+ibm239x 0x49280000 0x00080000
+ibm5204 0x49300000 0x00080000
+ibm5204 0x49380000 0x00080000
+ibmppdsl 0x49400000 0x00080000
+ibmport 0x49480000 0x00080000
+jp350 0x49500000 0x00080000
+kyocera 0x49580000 0x00080000
+kyocerax 0x49580000 0x00080000
+mantal 0x49600000 0x00080000
+mantal24 0x49680000 0x00080000
+mantal90 0x49700000 0x00080000
+mt735 0x49780000 0x00080000
+nec24pin 0x49800000 0x00080000
+oki24 0x49880000 0x00080000
+oki9ibm 0x49900000 0x00080000
+olidm24 0x49980000 0x00080000
+olidm9 0x49a00000 0x00080000
+paintjet 0x49a80000 0x00080000
+panson24 0x49b00000 0x00080000
+panson9 0x49b80000 0x00080000
+proprint 0x49c00000 0x00080000
+proprn24 0x49c80000 0x00080000
+ps1 0x49d00000 0x00080000
+quietjet 0x49d80000 0x00080000
+qwiii 0x49e00000 0x00080000
+seiko 0x49e80000 0x00080000
+seiko24e 0x49f00000 0x00080000
+seikosh9 0x49f80000 0x00080000
+star24e 0x4a000000 0x00080000
+star9e 0x4a080000 0x00080000
+starjet 0x4a100000 0x00080000
+thinkjet 0x4a180000 0x00080000
+ti850 0x4a200000 0x00080000
+toshiba 0x4a280000 0x00080000
+txtonly 0x4a300000 0x00080000
+xeroxpcl 0x49000000 0x00080000
+loader 0x4a380000 0x00080000
+imagehlp 0x4a400000 0x00080000
+oki9 0x4a480000 0x00080000
+dec3200 0x4a500000 0x00080000
+vmmreg32 0x4a580000 0x00080000
+dbgss 0x4a600000 0x00080000
+csrss 0x4a680000 0x00080000
+os2ss 0x4a700000 0x00080000
+psxss 0x4a780000 0x00080000
+Wx86Group 0x4a800000 0x00080000
+eecxxx86 0x4a880000 0x00080000
+eecxxmip 0x4a900000 0x00080000
+eecxxalp 0x4a980000 0x00080000
+eecxxppc 0x4aa00000 0x00080000
+eecxx 0x4aa80000 0x00080000
+emx86 0x4ab00000 0x00080000
+emmip 0x4ab80000 0x00080000
+emalp 0x4ac00000 0x00080000
+emppc 0x4ac80000 0x00080000
+cmd 0x4ad00000 0x00080000
+wspmib 0x4ad80000 0x00080000
+shcv 0x4ae00000 0x00080000
+tlloc 0x4ae80000 0x00080000
+tlser 0x4af00000 0x00080000
+tlser32s 0x4af80000 0x00080000
+
+tlser32 0x4b000000 0x00080000
+tlpipe 0x4b080000 0x00080000
+dm 0x4b100000 0x00080000
+dm32s 0x4b180000 0x00080000
+dmkdx86 0x4b200000 0x00080000
+dmkdmip 0x4b280000 0x00080000
+dmkdalp 0x4b300000 0x00080000
+dmkdppc 0x4b380000 0x00080000
+kdextx86 0x4b400000 0x00080000
+kdextmip 0x4b480000 0x00080000
+kdextalp 0x4b500000 0x00080000
+kdextppc 0x4b580000 0x00080000
+acledit 0x4b600000 0x00080000
+mpr 0x4b680000 0x00080000
+ntlanman 0x4b700000 0x00080000
+srvmgr 0x4b780000 0x00080000
+ncpa 0x4b800000 0x00080000
+mprui 0x4b880000 0x00080000
+netui0 0x4b900000 0x00080000
+netui1 0x4b980000 0x00080000
+ifiltcnv 0x4ba00000 0x00080000
+ftpsmx 0x4ba80000 0x00080000
+ftpmgr 0x4bb00000 0x00080000
+nwcfg 0x4bb80000 0x00080000
+ntlanui 0x4bc00000 0x00080000
+tcpcfg 0x4bc80000 0x00080000
+ipxcfg 0x4bd00000 0x00080000
+ntlsapi 0x4bd80000 0x00080000
+lsapi32 0x4be00000 0x00080000
+mslsp32 0x4be80000 0x00080000
+ccfapi32 0x4bf00000 0x00080000
+srvkd 0x4bf80000 0x00080000
+llsrpc 0x4c000000 0x00080000
+racfg 0x4c080000 0x00080000
+isnext 0x4c100000 0x00080000
+profext 0x4c180000 0x00080000
+_FREE_ 0x4c200000 0x00080000
+dbgdll 0x4c280000 0x00080000
+advapi32 0x4c300000 0x00080000
+csrrtl 0x4c380000 0x00080000
+csrsrv 0x4c400000 0x00080000
+_FREE_ 0x4c480000 0x00080000
+basertl 0x4c500000 0x00080000
+basesrv 0x4c580000 0x00080000
+_FREE_ 0x4c600000 0x00080000
+winsrv 0x4c680000 0x00080000
+winsrv2 0x4c700000 0x00080000
+rasdd 0x4c780000 0x00080000
+sysmono 0x4c800000 0x00080000
+courier 0x4c880000 0x00080000
+helv 0x4c900000 0x00080000
+times 0x4c980000 0x00080000
+netapi32 0x4ca00000 0x00080000
+wowfaxui 0x4ca80000 0x00080000
+winmgr 0x4cb00000 0x00080000
+display 0x4cb80000 0x00080000
+vga 0x4cc00000 0x00080000
+winspool 0x4cc80000 0x00080000
+splsrv 0x4cd00000 0x00080000
+ntprint 0x4cd80000 0x00080000
+pscript 0x4ce00000 0x00080000
+halftone 0x4ce80000 0x00080000
+lmspool 0x4cf00000 0x00080000
+os2dll 0x4cf80000 0x00080000
+psxdll 0x4d000000 0x00080000
+winnet 0x4d080000 0x00080000
+msv1_0 0x4d100000 0x00080000
+samlib 0x4d180000 0x00080000
+lsaap 0x4d200000 0x00080000
+netrap 0x4d280000 0x00080000
+_FREE_ 0x4d300000 0x00080000
+dvideo 0x4d380000 0x00080000
+dplay 0x4d400000 0x00080000
+console 0x4d480000 0x00080000
+gdi32 0x4d500000 0x00080000
+apidll 0x4d580000 0x00080000
+imgadmin 0x4d600000 0x00080000
+imgedit 0x4d680000 0x00080000
+imgscan 0x4d700000 0x00080000
+imgthumb 0x4d780000 0x00080000
+jpeg1x32 0x4d800000 0x00080000
+jpeg2x32 0x4d880000 0x00080000
+oiadm400 0x4d900000 0x00080000
+oicom400 0x4d980000 0x00080000
+oidis400 0x4da00000 0x00080000
+oifil400 0x4da80000 0x00080000
+oigfs400 0x4db00000 0x00080000
+oiprt400 0x4db80000 0x00080000
+oislb400 0x4dc00000 0x00080000
+oissq400 0x4dc80000 0x00080000
+oitwa400 0x4dd00000 0x00080000
+oiui400 0x4dd80000 0x00080000
+wangcmn 0x4de00000 0x00080000
+wangshl 0x4de80000 0x00080000
+media 0x4df00000 0x00080000
+mediasrv 0x4df80000 0x00080000
+lprmon 0x4e000000 0x00080000
+lprhelp 0x4e080000 0x00080000
+lpdsvc 0x4e100000 0x00080000
+printui 0x4e180000 0x00080000
+winsrvk 0x4e200000 0x00080000
+msafd 0x4e280000 0x00080000
+mswsock 0x4e300000 0x00080000
+ws2help 0x4e380000 0x00080000
+rnr20 0x4e400000 0x00080000
+DEBMP 0x4e480000 0x00080000
+DEHEX 0x4e500000 0x00080000
+DEMET 0x4e580000 0x00080000
+DESS 0x4e600000 0x00080000
+glexts 0x4e680000 0x00080000
+DEWP 0x4e700000 0x00080000
+SCCVIEW 0x4e780000 0x00080000
+MSVIEWUT 0x4e800000 0x00080000
+wdt32 0x4e880000 0x00080000
+nddeexts 0x4e900000 0x00080000
+sde 0x4e980000 0x00080000
+ndrd 0x4ea00000 0x00080000
+hdxdll 0x4ea80000 0x00080000
+splexts 0x4eb00000 0x00080000
+conexts 0x4eb80000 0x00080000
+gdiexts 0x4ec00000 0x00080000
+gdikdx 0x4ec80000 0x00080000
+ttkdx 0x4ed00000 0x00080000
+userexts 0x4ed80000 0x00080000
+userkdx 0x4ee00000 0x00080000
+ntsdexts 0x4ee80000 0x00080000
+plotter 0x4ef00000 0x00080000
+rpcrt4 0x4ef80000 0x00080000
+imm32 0x4f000000 0x00080000
+winmm 0x4f080000 0x00080000
+rpcssp 0x4f100000 0x00080000
+mciwave 0x4f180000 0x00080000
+rpclts1 0x4f200000 0x00080000
+rpcltc1 0x4f280000 0x00080000
+ldrdll 0x4f300000 0x00080000
+mcicda 0x4f380000 0x00080000
+plotui 0x4f400000 0x00080000
+rasddui 0x4f480000 0x00080000
+pscrptui 0x4f500000 0x00080000
+mmio 0x4f580000 0x00080000
+rpcnts1 0x4f600000 0x00080000
+rpcntc1 0x4f680000 0x00080000
+nlsapi 0x4f700000 0x00080000
+ws2_32 0x4f780000 0x00080000
+afdkd 0x4f800000 0x00080000
+olesvr32 0x4f880000 0x00080000
+olecli32 0x4f900000 0x00080000
+msgsvc 0x4f980000 0x00080000
+decpsmon 0x4fa00000 0x00080000
+sys003 0x4fa80000 0x00080000
+beta2 0x4fb00000 0x00080000
+psapi 0x4fb80000 0x00080000
+rpcdce4 0x4fc00000 0x00080000
+eventlog 0x4fc80000 0x00080000
+xactsrv 0x4fd00000 0x00080000
+winreg 0x4fd80000 0x00080000
+_FREE_ 0x4fe00000 0x00080000
+samlsa 0x4fe80000 0x00080000
+mmdrv 0x4ff00000 0x00080000
+dlcapi 0x4ff80000 0x00080000
+win32spl 0x50000000 0x00080000
+localspl 0x50080000 0x00080000
+rpcltc5 0x50100000 0x00080000
+netlogon 0x50180000 0x00080000
+tmsre32 0x50200000 0x00080000
+lsaudll 0x50280000 0x00080000
+mciseq 0x50300000 0x00080000
+winprint 0x50380000 0x00080000
+localmon 0x50400000 0x00080000
+msaudite 0x50480000 0x00080000
+msobjs 0x50500000 0x00080000
+hpmon 0x50580000 0x00080000
+alrsvc 0x50600000 0x00080000
+srvsvc 0x50680000 0x00080000
+wkssvc 0x50700000 0x00080000
+msafdext 0x50780000 0x00080000
+compstui 0x50800000 0x00080000
+htui 0x50880000 0x00080000
+lsasrv 0x50900000 0x00080000
+mmsndsrv 0x50980000 0x00080000
+midi 0x50a00000 0x00080000
+browser 0x50a80000 0x00080000
+drivers 0x50b00000 0x00080000
+lmmon 0x50b80000 0x00080000
+spoolss 0x50c00000 0x00080000
+sndblst 0x50c80000 0x00080000
+_FREE_ 0x50d00000 0x00080000
+ntlmssps 0x50d80000 0x00080000
+ntlms128 0x50d80000 0x00080000
+glu32 0x50e00000 0x00080000
+memtrace 0x50e80000 0x00080000
+ogldrv 0x50f00000 0x00080000
+dciman32 0x50f80000 0x00080000
+ddraw 0x51000000 0x00080000
+dsound 0x51080000 0x00080000
+pjlmon 0x51100000 0x00080000
+dpwsock 0x51180000 0x00080000
+dpserial 0x51200000 0x00080000
+dpsocket 0x51280000 0x00080000
+formidbl 0x51300000 0x00080000
+fole2ui 0x51380000 0x00080000
+ntshrui 0x51400000 0x00080000
+ntlanui2 0x51480000 0x00080000
+shareui 0x51500000 0x00080000
+wsasetup 0x51580000 0x00080000
+control 0x51600000 0x00080000
+access 0x51680000 0x00080000
+sound 0x51700000 0x00080000
+appwiz 0x51780000 0x00080000
+intl 0x51800000 0x00080000
+timedate 0x51880000 0x00080000
+utc 0x51900000 0x00080000
+mouse 0x51980000 0x00080000
+sysdm 0x51a00000 0x00080000
+desk 0x51a80000 0x00080000
+modem 0x51b00000 0x00080000
+security 0x51b80000 0x00080000
+; this is the same as security - both will never be loaded
+secur32 0x51b80000 0x00080000
+main 0x51c00000 0x00080000
+ups 0x51c80000 0x00080000
+cursors 0x51d00000 0x00080000
+pcmcia 0x51d80000 0x00080000
+t1instal 0x51e00000 0x00080000
+devapps 0x51e80000 0x00080000
+console 0x51f00000 0x00080000
+mmsys 0x51f80000 0x00080000
+indicdll 0x52000000 0x00080000
+comdlg32 0x52080000 0x00080000
+_FREE_ 0x52100000 0x00080000
+version 0x52180000 0x00080000
+nddeapi 0x52200000 0x00080000
+nddenb32 0x52280000 0x00080000
+shscrap 0x52300000 0x00080000
+ftsrch 0x52380000 0x00080000
+docprop 0x52400000 0x00080000
+diskcopy 0x52480000 0x00080000
+mswsutil 0x52500000 0x00080000
+ws2map 0x52580000 0x00080000
+linkinfo 0x52600000 0x00080000
+synceng 0x52680000 0x00080000
+syncui 0x52700000 0x00080000
+rshx32 0x52780000 0x00080000
+prtq32 0x52800000 0x00080000
+userenv 0x52880000 0x00080000
+shcompui 0x52900000 0x00080000
+
+; Keyboard drivers are all the same
+
+kbdus 0x52980000 0x00080000
+kbdal 0x52980000 0x00080000
+kbdbe 0x52980000 0x00080000
+kbdbene 0x52980000 0x00080000
+kbdblr 0x52980000 0x00080000
+kbdbu 0x52980000 0x00080000
+kbdbr 0x52980000 0x00080000
+kbdca 0x52980000 0x00080000
+kbdcr 0x52980000 0x00080000
+kbdcz 0x52980000 0x00080000
+kbdcz1 0x52980000 0x00080000
+kbdda 0x52980000 0x00080000
+kbddv 0x52980000 0x00080000
+kbdes 0x52980000 0x00080000
+kbdest 0x52980000 0x00080000
+kbdfc 0x52980000 0x00080000
+kbdfi 0x52980000 0x00080000
+kbdfr 0x52980000 0x00080000
+kbdgkl 0x52980000 0x00080000
+kbdgr 0x52980000 0x00080000
+kbdgr1 0x52980000 0x00080000
+kbdhe 0x52980000 0x00080000
+kbdhe220 0x52980000 0x00080000
+kbdhe319 0x52980000 0x00080000
+kbdhu 0x52980000 0x00080000
+kbdhu1 0x52980000 0x00080000
+kbdic 0x52980000 0x00080000
+kbdir 0x52980000 0x00080000
+kbdit 0x52980000 0x00080000
+kbdit142 0x52980000 0x00080000
+kbdla 0x52980000 0x00080000
+kbdlt 0x52980000 0x00080000
+kbdlv 0x52980000 0x00080000
+kbdlv1 0x52980000 0x00080000
+kbdne 0x52980000 0x00080000
+kbdno 0x52980000 0x00080000
+kbdpl 0x52980000 0x00080000
+kbdpl1 0x52980000 0x00080000
+kbdpo 0x52980000 0x00080000
+kbdro 0x52980000 0x00080000
+kbdru 0x52980000 0x00080000
+kbdru1 0x52980000 0x00080000
+kbdsf 0x52980000 0x00080000
+kbdsg 0x52980000 0x00080000
+kbdsl 0x52980000 0x00080000
+kbdsl1 0x52980000 0x00080000
+kbdsp 0x52980000 0x00080000
+kbdsv 0x52980000 0x00080000
+kbdsw 0x52980000 0x00080000
+kbdtuf 0x52980000 0x00080000
+kbdtuq 0x52980000 0x00080000
+kbduk 0x52980000 0x00080000
+kbdur 0x52980000 0x00080000
+kbdurs 0x52980000 0x00080000
+kbdusl 0x52980000 0x00080000
+kbdusr 0x52980000 0x00080000
+kbdusx 0x52980000 0x00080000
+kbdycc 0x52980000 0x00080000
+kbdycl 0x52980000 0x00080000
+kbdhela2 0x52a00000 0x00080000
+kbdhela3 0x52a00000 0x00080000
+
+mstask 0x52a80000 0x00080000
+dsui 0x52b00000 0x00080000
+trace 0x52b80000 0x00080000
+relay 0x52c00000 0x00080000
+infosoft 0x52c80000 0x00180000
+iprip 0x52e00000 0x00080000
+wsock32 0x52e80000 0x00080000
+winstrm 0x52f00000 0x00080000
+inetmib1 0x52f80000 0x00080000
+lmmib2 0x53100000 0x00080000
+tcpipsvc 0x53180000 0x00080000
+nbtsvc 0x53200000 0x00080000
+telnet 0x53280000 0x00080000
+wshtcpip 0x53300000 0x00080000
+mgmtapi 0x53380000 0x00080000
+icmp 0x53400000 0x00080000
+inettrap 0x53480000 0x00080000
+testdll 0x53500000 0x00080000
+lmhsvc 0x53580000 0x00080000
+dhcpsapi 0x53600000 0x00080000
+dhcpcsvc 0x53680000 0x00080000
+dhcpssvc 0x53700000 0x00080000
+inetsvcs 0x53780000 0x00080000
+ftpsvc 0x53800000 0x00080000
+ftpsvapi 0x53880000 0x00080000
+ftpctrs 0x53900000 0x00080000
+infocomm 0x53980000 0x00080000
+wspapi 0x53a00000 0x00080000
+cxxflt 0x53a80000 0x00080000
+wspcfg 0x53b00000 0x00080000
+w3proxy 0x53b80000 0x00080000
+rpcltc8 0x53c00000 0x00080000
+rpclts8 0x53c80000 0x00080000
+w3svc 0x53d00000 0x00080000
+w3svapi 0x53d80000 0x00080000
+w3ctrs 0x53e00000 0x00080000
+sspifilt 0x53e80000 0x00080000
+gopherd 0x53f00000 0x00080000
+gdapi 0x53f80000 0x00080000
+gdctrs 0x54000000 0x00080000
+gdspace 0x54080000 0x00080000
+sage 0x54100000 0x00080000
+nlgwbrkr 0x54180000 0x00080000
+inetasrv 0x54200000 0x00080000
+mspapi 0x54280000 0x00080000
+infoadmn 0x54300000 0x00080000
+infoctrs 0x54380000 0x00080000
+mspip 0x54400000 0x00080000
+httpodbc 0x54480000 0x00080000
+w3pcfg 0x54500000 0x00080000
+w3papi 0x54580000 0x00080000
+mspmon 0x54600000 0x00080000
+rpcltccm 0x54680000 0x00080000
+rpcltscm 0x54700000 0x00080000
+inetaux 0x54780000 0x00080000
+inetsloc 0x54800000 0x00080000
+urlcache 0x54880000 0x00080000
+mspsec 0x54900000 0x00080000
+w32sinet 0x54980000 0x00080000
+httpmib 0x54a00000 0x00080000
+gdmib 0x54a80000 0x00080000
+ftpmib 0x54b00000 0x00080000
+gdmib 0x54b80000 0x00080000
+w3pmib 0x54c00000 0x00080000
+ftpsvc2 0x54c80000 0x00080000
+ftpsapi2 0x54d00000 0x00080000
+ftpctrs2 0x54d80000 0x00080000
+miniprox 0x54e00000 0x00080000
+_wsock32 0x54e80000 0x00080000
+wsock32f 0x54f00000 0x00080000
+netdtect 0x54f80000 0x00080000
+msncdet 0x55000000 0x00080000
+npincdet 0x55080000 0x00080000
+amdncdet 0x55100000 0x00080000
+netflx 0x55180000 0x00080000
+bhsupp 0x55200000 0x00080000
+nal 0x55280000 0x00080000
+bhmon 0x55300000 0x00080000
+ndis30 0x55380000 0x00080000
+bhnetb 0x55400000 0x00080000
+rnal 0x55480000 0x00080000
+bhkctrl 0x55500000 0x00080000
+nwsap 0x55580000 0x00080000
+rws32 0x55600000 0x00080000
+snmpapi 0x55680000 0x00080000
+convmsg 0x55700000 0x00080000
+winsctrs 0x55780000 0x00080000
+winsmib 0x55800000 0x00080000
+dhcpmib 0x55880000 0x00080000
+winsevnt 0x55900000 0x00080000
+winsrpc 0x55980000 0x00080000
+winsrpcb 0x55a00000 0x00080000
+dscont 0x55a80000 0x00080000
+NTCTL3D 0x55b00000 0x00080000
+MPHEAP 0x55b80000 0x00080000
+MAPI32 0x55c00000 0x00080000
+EDB 0x55c80000 0x00080000
+EDBPERF 0x55d00000 0x00080000
+ESCPRINT 0x55d80000 0x00080000
+RICHED32 0x55e00000 0x00080000
+WMSUI32 0x55e80000 0x00080000
+MLCFG32 0x55f00000 0x00080000
+MSFS32 0x55f80000 0x00080000
+GAPI32 0x56000000 0x00080000
+samsrv 0x56080000 0x00100000
+msvcrt40 0x56180000 0x00080000
+msvcr40d 0x56200000 0x00080000
+msvcrt20 0x56280000 0x00080000
+msvcrt10 0x56300000 0x00080000
+msvcrt 0x56380000 0x00080000
+MMFMIG32 0x56400000 0x00080000
+WMSFR32 0x56480000 0x00080000
+WGPOCPL 0x56500000 0x00080000
+WGPOADMN 0x56580000 0x00080000
+MINET32 0x56600000 0x00080000
+INETAB32 0x56680000 0x00080000
+MSPST32 0x56700000 0x00080000
+MLSHEXT 0x56780000 0x00080000
+MAPIU32 0x56800000 0x00080000
+MAPIX32 0x56880000 0x00080000
+LPREXT 0x56900000 0x00080000
+ISNEXT 0x56980000 0x00080000
+htmlfilt 0x56c80000 0x00080000
+SCCUT 0x56d00000 0x00080000
+SCCFA 0x56d80000 0x00080000
+SCCFI 0x56e00000 0x00080000
+SCCIFILT 0x56e80000 0x00080000
+VSACS 0x56f00000 0x00080000
+VSASC8 0x56f80000 0x00080000
+VSBDR 0x57000000 0x00080000
+VSBMP 0x57080000 0x00080000
+VSDBS 0x57100000 0x00080000
+VSDRW 0x57180000 0x00080000
+VSEXE 0x57200000 0x00080000
+VSEXE2 0x57280000 0x00080000
+VSGIF 0x57300000 0x00080000
+VSMCW 0x57380000 0x00080000
+VSMP 0x57400000 0x00080000
+VSMSW 0x57480000 0x00080000
+VSMWP2 0x57500000 0x00080000
+VSMWPF 0x57580000 0x00080000
+VSPCL 0x57600000 0x00080000
+VSPDX 0x57680000 0x00080000
+VSPFS 0x57700000 0x00080000
+VSPP 0x57780000 0x00080000
+VSPP5 0x57800000 0x00080000
+VSPP7 0x57880000 0x00080000
+VSQPW 0x57900000 0x00080000
+VSRTF 0x57980000 0x00080000
+VSTIFF 0x57a00000 0x00080000
+VSTEXT 0x57a80000 0x00080000
+VSTXT 0x57b00000 0x00080000
+VSVW3 0x57b80000 0x00080000
+VSW6 0x57c00000 0x00080000
+VSWKS 0x57c80000 0x00080000
+VSWMF 0x57d00000 0x00080000
+VSWORD 0x57d80000 0x00080000
+VSWORK 0x57e00000 0x00080000
+VSWP5 0x57e80000 0x00080000
+VSWP6 0x57f00000 0x00080000
+VSWPF 0x57f80000 0x00080000
+VSWS2 0x58000000 0x00080000
+VSXL5 0x58080000 0x00080000
+VSXY 0x58100000 0x00080000
+CFM30 0x58180000 0x00100000
+CFM30U 0x58280000 0x00100000
+CFMO30 0x58380000 0x00080000
+CFMO30U 0x58400000 0x00080000
+inetcpl 0x58500000 0x00080000
+secsspi 0x58580000 0x00080000
+msnsspc 0x58600000 0x00080000
+qperf 0x58680000 0x00080000
+
+;
+; Security Related DLLs (there is only
+; ever one at a time, hence the overlap)
+;
+sslsspi 0x58800000 0x00080000
+ssl128 0x58800000 0x00080000
+schannel 0x58800000 0x00100000
+schnl128 0x58800000 0x00100000
+pctsspi 0x58900000 0x00080000
+pct128 0x58900000 0x00080000
+secure32 0x58980000 0x00080000
+
+w3scfg 0x58A00000 0x00080000
+fscfg 0x58A80000 0x00080000
+gscfg 0x58B00000 0x00080000
+ipudll 0x58B80000 0x00080000
+mupkd 0x58C00000 0x00080000
+netsetup 0x58C80000 0x00080000
+netcfg 0x58D00000 0x000F0000
+w3key 0x58E00000 0x00080000
+_FREE_ 0x58E80000 0x00080000
+_FREE_ 0x58F00000 0x00080000
+_FREE_ 0x58F80000 0x00080000
+libxds 0x59000000 0x00080000
+emsabp 0x59080000 0x00080000
+perfdsa 0x59100000 0x00080000
+oabgen 0x59180000 0x00080000
+dracheck 0x59200000 0x00080000
+dsmsg 0x59280000 0x00080000
+printree 0x59300000 0x00080000
+lexnetui 0x59380000 0x00080000
+mvprm 0x59400000 0x00080000
+mvprtobj 0x59480000 0x00080000
+mvpo_wri 0x59500000 0x00080000
+mvpo_sun 0x59580000 0x00080000
+mvprtmgr 0x59600000 0x00080000
+mvresdll 0x59680000 0x00080000
+mvguidll 0x59700000 0x00080000
+agguidll 0x59780000 0x00080000
+sfguidll 0x59800000 0x00080000
+common 0x59880000 0x00080000
+lexll32 0x59900000 0x00080000
+lexip32 0x59980000 0x00080000
+lexipx32 0x59A00000 0x00080000
+mvprtgui 0x59A80000 0x00080000
+agprtgui 0x59B00000 0x00080000
+sfprtgui 0x59B80000 0x00080000
+mvntinst 0x59C00000 0x00080000
+lexbce 0x59C80000 0x00080000
+lexbcelm 0x59D00000 0x00080000
+lexlmpm 0x59D80000 0x00080000
+lexlang 0x59E00000 0x00080000
+lexcfg 0x59E80000 0x00080000
+interact 0x59F00000 0x00080000
+lexmon 0x59F80000 0x00080000
+drax400 0x5A000000 0x00080000
+joy 0x5A080000 0x00080000
+faxmon 0x5A100000 0x00080000
+faxcfg 0x5A180000 0x00080000
+faxt30 0x5A200000 0x00080000
+faxwiz 0x5A280000 0x00080000
+faxdrv 0x5A300000 0x00080000
+faxui 0x5A380000 0x00080000
+faxrend 0x5A400000 0x00080000
+winfax 0x5A480000 0x00080000
+
+backend 0x5a500000 0x00080000
+ccrdsvr 0x5a580000 0x00080000
+certapi 0x5a600000 0x00080000
+certhelp 0x5a680000 0x00080000
+certstor 0x5a700000 0x00080000
+ecmapi 0x5a780000 0x00080000
+root 0x5a800000 0x00080000
+credsvr 0x5a880000 0x00080000
+paysvr 0x5a900000 0x00080000
+mcrdsvr 0x5a980000 0x00080000
+mersvr 0x5aa00000 0x00080000
+cmrdll 0x5aa80000 0x00080000
+httptran 0x5ab00000 0x00080000
+bgimer 0x5ab80000 0x00080000
+bgiccs 0x5ac00000 0x00080000
+bgipay 0x5ac80000 0x00080000
+msref 0x5ad00000 0x00080000
+ccsref 0x5ad80000 0x00080000
+psref 0x5ae00000 0x00080000
+strconv 0x5ae80000 0x00080000
+digsig 0x5af00000 0x00080000
+wintrust 0x5af80000 0x00080000
+runornot 0x5b000000 0x00080000
+pcertsvr 0x5b080000 0x00080000
+certsrv 0x5b100000 0x00080000
+redir 0x5b180000 0x00080000
+spc 0x5b200000 0x00080000
+syscert 0x5b280000 0x00080000
+thunkcr 0x5b300000 0x00080000
+wincert 0x5b380000 0x00080000
+wintrust 0x5b400000 0x00080000
+scpmer 0x5b480000 0x00080000
+scppay 0x5b500000 0x00080000
+scproot 0x5b580000 0x00080000
+advpack 0x5b600000 0x00080000
+;Next Three Slots for hprasdd
+hprasdd 0x5b680000 0x00080000
+hprasdui 0x5b700000 0x00080000
+hp5sim 0x5b780000 0x00080000
+bull24 0x5bc00000 0x00080000
+bull9 0x5bc80000 0x00080000
+dpcpcl 0x5bd00000 0x00080000
+bullaser 0x5bf00000 0x00080000
+hp5simui 0x5cc00000 0x00080000
+lminkjet 0x5d500000 0x00080000
+bull18 0x5d580000 0x00080000
+x42xxpcl 0x5d600000 0x00080000
+passfilt 0x5d680000 0x00080000
+iprop 0x5d700000 0x00080000
+
+;
+; Free space from here to 0x63000000.
+; Also, lots of _FREE_ spaces open above... Reuse these first
+;
+
+; Internet Explorer 2.0 / 3.0
+wininet 0x63000000 0x00100000
+cachevu 0x63100000 0x00080000
+_FREE_ 0x63180000 0x00080000
+urlmon 0x63200000 0x00080000
+url 0x63280000 0x00080000
+js 0x63300000 0x00080000
+jscript 0x63380000 0x00080000
+msrating 0x63400000 0x00080000
+fechrcnv 0x63480000 0x00080000
+shdocvw 0x63500000 0x00080000
+mshtml 0x63580000 0x00080000
+htmlctl 0x63600000 0x00080000
+inetcpl 0x63680000 0x00080000
+
+; Internet Explorer 2.0 only
+ieshstub 0x63700000 0x00080000
+secbasic 0x63780000 0x00080000
+
+; Catapult
+w3pcache 0x63800000 0x00080000
+msplog 0x63880000 0x00080000
+w3pinet 0x63900000 0x00080000
+
+;
+; Big things
+;
+glmf32 0x65000000 0x00300000
+jet 0x65300000 0x00300000
+jet500 0x65600000 0x00300000
+kernel32 0x65900000 0x00300000
+netui2 0x65c00000 0x00300000
+ole32 0x65f00000 0x00300000
+opengl32 0x66200000 0x00300000
+query 0x66500000 0x00300000
+shell32 0x66800000 0x00300000
+shellalt 0x66b00000 0x00300000
+user32 0x66e00000 0x00300000
+ntdll 0x67200000 0x00100000
+comctl32 0x67300000 0x00100000
+d3dhalf 0x67400000 0x00100000
+d3drampf 0x67500000 0x00100000
+d3drg16f 0x67600000 0x00100000
+d3drg32f 0x67700000 0x00100000
+d3drg8f 0x67800000 0x00100000
+d3drgbf 0x67900000 0x00100000
+d3drm16f 0x67A00000 0x00100000
+d3drm32f 0x67B00000 0x00100000
+d3drm 0x67C00000 0x00100000
+d3drm8f 0x67D00000 0x00100000
+d3dxof 0x67E00000 0x00100000
+d3drg24f 0x67F00000 0x00100000
+d3drm24f 0x68000000 0x00100000
+d3dim 0x68100000 0x00100000
+
+
+; If we run out, there's more before this range.
+
+executive 0xD0020000 0x18000000
diff --git a/public/sdk/lib/i386/crtdll.pdb b/public/sdk/lib/i386/crtdll.pdb
new file mode 100644
index 000000000..c6a1f1ca1
--- /dev/null
+++ b/public/sdk/lib/i386/crtdll.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/crtdlld.pdb b/public/sdk/lib/i386/crtdlld.pdb
new file mode 100644
index 000000000..f88bfcf8f
--- /dev/null
+++ b/public/sdk/lib/i386/crtdlld.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/libc.pdb b/public/sdk/lib/i386/libc.pdb
new file mode 100644
index 000000000..36f9f7289
--- /dev/null
+++ b/public/sdk/lib/i386/libc.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/libcd.pdb b/public/sdk/lib/i386/libcd.pdb
new file mode 100644
index 000000000..3b72c32c7
--- /dev/null
+++ b/public/sdk/lib/i386/libcd.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/libcmt.pdb b/public/sdk/lib/i386/libcmt.pdb
new file mode 100644
index 000000000..5998ae539
--- /dev/null
+++ b/public/sdk/lib/i386/libcmt.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/libcmtd.pdb b/public/sdk/lib/i386/libcmtd.pdb
new file mode 100644
index 000000000..c7e65a50d
--- /dev/null
+++ b/public/sdk/lib/i386/libcmtd.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/mfcs40.pdb b/public/sdk/lib/i386/mfcs40.pdb
new file mode 100644
index 000000000..c5d088846
--- /dev/null
+++ b/public/sdk/lib/i386/mfcs40.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/mfcs40d.pdb b/public/sdk/lib/i386/mfcs40d.pdb
new file mode 100644
index 000000000..67f5f3b65
--- /dev/null
+++ b/public/sdk/lib/i386/mfcs40d.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/mfcs40u.pdb b/public/sdk/lib/i386/mfcs40u.pdb
new file mode 100644
index 000000000..9067bced0
--- /dev/null
+++ b/public/sdk/lib/i386/mfcs40u.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/mfcs40ud.pdb b/public/sdk/lib/i386/mfcs40ud.pdb
new file mode 100644
index 000000000..ce0145a00
--- /dev/null
+++ b/public/sdk/lib/i386/mfcs40ud.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/mfcs42.pdb b/public/sdk/lib/i386/mfcs42.pdb
new file mode 100644
index 000000000..75189ce89
--- /dev/null
+++ b/public/sdk/lib/i386/mfcs42.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/mfcs42d.pdb b/public/sdk/lib/i386/mfcs42d.pdb
new file mode 100644
index 000000000..2aeae703a
--- /dev/null
+++ b/public/sdk/lib/i386/mfcs42d.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/mfcs42u.pdb b/public/sdk/lib/i386/mfcs42u.pdb
new file mode 100644
index 000000000..50f8ebdd4
--- /dev/null
+++ b/public/sdk/lib/i386/mfcs42u.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/mfcs42ud.pdb b/public/sdk/lib/i386/mfcs42ud.pdb
new file mode 100644
index 000000000..70b481d50
--- /dev/null
+++ b/public/sdk/lib/i386/mfcs42ud.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/msvcrt.pdb b/public/sdk/lib/i386/msvcrt.pdb
new file mode 100644
index 000000000..c6a1f1ca1
--- /dev/null
+++ b/public/sdk/lib/i386/msvcrt.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/msvcrtd.pdb b/public/sdk/lib/i386/msvcrtd.pdb
new file mode 100644
index 000000000..f88bfcf8f
--- /dev/null
+++ b/public/sdk/lib/i386/msvcrtd.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/nafxcw.pdb b/public/sdk/lib/i386/nafxcw.pdb
new file mode 100644
index 000000000..a320b7b67
--- /dev/null
+++ b/public/sdk/lib/i386/nafxcw.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/nafxcwd.pdb b/public/sdk/lib/i386/nafxcwd.pdb
new file mode 100644
index 000000000..f6f1c6a82
--- /dev/null
+++ b/public/sdk/lib/i386/nafxcwd.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/uafxcw.pdb b/public/sdk/lib/i386/uafxcw.pdb
new file mode 100644
index 000000000..78f6e8ce5
--- /dev/null
+++ b/public/sdk/lib/i386/uafxcw.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/uafxcwd.pdb b/public/sdk/lib/i386/uafxcwd.pdb
new file mode 100644
index 000000000..23b28cb33
--- /dev/null
+++ b/public/sdk/lib/i386/uafxcwd.pdb
Binary files differ
diff --git a/public/sdk/lib/i386/usa/baseaddr.txt b/public/sdk/lib/i386/usa/baseaddr.txt
new file mode 100644
index 000000000..8e7205dc4
--- /dev/null
+++ b/public/sdk/lib/i386/usa/baseaddr.txt
@@ -0,0 +1,1463 @@
+winmm.dll 0x77fd0000 0x00030000
+mmdrv.dll 0x77fc0000 0x00010000
+ntdll.dll 0x77f60000 0x00060000
+kernel32.dll 0x77f00000 0x00060000
+gdi32.dll 0x77ed0000 0x00030000
+user32.dll 0x77e70000 0x00060000
+rpcrt4.dll 0x77e20000 0x00050000
+rpcltc1.dll 0x77e10000 0x00010000
+rpclts1.dll 0x77e00000 0x00010000
+advapi32.dll 0x77dc0000 0x00040000
+comdlg32.dll 0x77d80000 0x00040000
+shell32.dll 0x77c40000 0x00140000
+comctl32.dll 0x77bf0000 0x00050000
+winspool.drv 0x5f600000 0x00020000
+ole32.dll 0x77b20000 0x000c0000
+oleaut32.dll 0x77aa0000 0x00080000
+version.dll 0x77a90000 0x00010000
+security.dll 0x77a80000 0x00010000
+printui.dll 0x77a50000 0x00030000
+ntshrui.dll 0x77a40000 0x00010000
+msvcrt.dll 0x779f0000 0x00050000
+msvcrt40.dll 0x779d0000 0x00020000
+lz32.dll 0x779c0000 0x00010000
+linkinfo.dll 0x779b0000 0x00010000
+olethk32.dll 0x77990000 0x00020000
+olecli32.dll 0x77970000 0x00020000
+olecnv32.dll 0x77960000 0x00010000
+oledlg.dll 0x77930000 0x00030000
+olesvr32.dll 0x77920000 0x00010000
+syncui.dll 0x778f0000 0x00030000
+shcompui.dll 0x778e0000 0x00010000
+url.dll 0x778b0000 0x00030000
+netui0.dll 0x77890000 0x00020000
+netui1.dll 0x77850000 0x00040000
+netrap.dll 0x77840000 0x00010000
+netapi32.dll 0x77800000 0x00040000
+ntlanman.dll 0x777f0000 0x00010000
+samlib.dll 0x777e0000 0x00010000
+netui2.dll 0x77790000 0x00050000
+acledit.dll 0x77760000 0x00030000
+netmsg.dll 0x77740000 0x00020000
+mpr.dll 0x77720000 0x00020000
+mprui.dll 0x77700000 0x00020000
+ntlanui.dll 0x776e0000 0x00020000
+wsock32.dll 0x776d0000 0x00010000
+ws2_32.dll 0x776b0000 0x00020000
+ws2help.dll 0x776a0000 0x00010000
+wshtcpip.dll 0x77690000 0x00010000
+mswsock.dll 0x77670000 0x00020000
+msafd.dll 0x77660000 0x00010000
+crtdll.dll 0x77630000 0x00030000
+hppcl.dll 0x775e0000 0x00050000
+rasdd.dll 0x775c0000 0x00020000
+rasddui.dll 0x775a0000 0x00020000
+pscript.dll 0x77560000 0x00040000
+pscrptui.dll 0x77530000 0x00030000
+imaadp32.acm 0x77520000 0x00010000
+msadp32.acm 0x77510000 0x00010000
+msg711.acm 0x77500000 0x00010000
+msgsm32.acm 0x774f0000 0x00010000
+tssoft32.acm 0x774e0000 0x00010000
+alrsvc.dll 0x774d0000 0x00010000
+amddlg.dll 0x774c0000 0x00010000
+amdncdet.dll 0x774b0000 0x00010000
+atkctrs.dll 0x774a0000 0x00010000
+avicap32.dll 0x77480000 0x00020000
+avifil32.dll 0x77460000 0x00020000
+bhmon.dll 0x77450000 0x00010000
+bhnetb.dll 0x77440000 0x00010000
+bhsupp.dll 0x77430000 0x00010000
+brhj770.dll 0x77420000 0x00010000
+brother9.dll 0x77410000 0x00010000
+brothr24.dll 0x773f0000 0x00020000
+browser.dll 0x773e0000 0x00010000
+canon330.dll 0x773d0000 0x00010000
+canon800.dll 0x773c0000 0x00010000
+canonlbp.dll 0x773a0000 0x00020000
+cards.dll 0x77370000 0x00030000
+ccfapi32.dll 0x77350000 0x00020000
+cfgmgr32.dll 0x77330000 0x00020000
+cfm30.dll 0x772e0000 0x00050000
+cfm30u.dll 0x77290000 0x00050000
+cfmo30.dll 0x77270000 0x00020000
+cfmo30u.dll 0x77250000 0x00020000
+cirrus.dll 0x77240000 0x00010000
+cit24us.dll 0x77220000 0x00020000
+cit9us.dll 0x77200000 0x00020000
+citoh.dll 0x771f0000 0x00010000
+clb.dll 0x771e0000 0x00010000
+cnvfat.dll 0x771d0000 0x00010000
+compstui.dll 0x771a0000 0x00030000
+conexts.dll 0x77190000 0x00010000
+convmsg.dll 0x77180000 0x00010000
+cxxflt.dll 0x77170000 0x00010000
+dciman32.dll 0x77160000 0x00010000
+ddraw.dll 0x77130000 0x00030000
+debmp.dll 0x77120000 0x00010000
+dec24pin.dll 0x77110000 0x00010000
+dec3200.dll 0x77100000 0x00010000
+dec9pin.dll 0x770f0000 0x00010000
+decpsmon.dll 0x77080000 0x00070000
+defea.dll 0x77070000 0x00010000
+defpa.dll 0x77060000 0x00010000
+dehex.dll 0x77050000 0x00010000
+demet.dll 0x77030000 0x00020000
+dess.dll 0x77010000 0x00020000
+dewp.dll 0x76ff0000 0x00020000
+dgconfig.dll 0x76fd0000 0x00020000
+dhcpcsvc.dll 0x76fc0000 0x00010000
+dhcpmib.dll 0x76fb0000 0x00010000
+dhcpsapi.dll 0x76fa0000 0x00010000
+dhcpssvc.dll 0x76f80000 0x00020000
+diconix.dll 0x76f70000 0x00010000
+digiinst.dll 0x76f50000 0x00020000
+digsig.dll 0x76f10000 0x00040000
+diskcopy.dll 0x76f00000 0x00010000
+dlcapi.dll 0x76ef0000 0x00010000
+docprop.dll 0x76ed0000 0x00020000
+dplay.dll 0x76eb0000 0x00020000
+dpserial.dll 0x76ea0000 0x00010000
+dpwsock.dll 0x76e90000 0x00010000
+dsound.dll 0x76e70000 0x00020000
+epson24.dll 0x76e60000 0x00010000
+epson9.dll 0x76e40000 0x00020000
+escp2e.dll 0x76e20000 0x00020000
+escp2ms.dll 0x76e10000 0x00010000
+eventlog.dll 0x76e00000 0x00010000
+fmifs.dll 0x76df0000 0x00010000
+fontext.dll 0x76dd0000 0x00020000
+fpnwclnt.dll 0x76dc0000 0x00010000
+ftpctrs.dll 0x76db0000 0x00010000
+ftpsmx.dll 0x76da0000 0x00010000
+ftpsvapi.dll 0x76d90000 0x00010000
+ftpsvc.dll 0x76d80000 0x00010000
+ftsrch.dll 0x76d40000 0x00040000
+fuji24.dll 0x76d30000 0x00010000
+fuji9.dll 0x76d20000 0x00010000
+gapi32.dll 0x76d00000 0x00020000
+glmf32.dll 0x76cb0000 0x00050000
+glu32.dll 0x76c80000 0x00030000
+hpdskjet.dll 0x76c50000 0x00030000
+hpmon.dll 0x76c40000 0x00010000
+hpscan32.dll 0x76c30000 0x00010000
+hticons.dll 0x76c20000 0x00010000
+htui.dll 0x76c10000 0x00010000
+hypertrm.dll 0x76ba0000 0x00070000
+ibm238x.dll 0x76b90000 0x00010000
+ibm239x.dll 0x76b70000 0x00020000
+ibm5204.dll 0x76b60000 0x00010000
+ibmport.dll 0x76b50000 0x00010000
+ibmppdsl.dll 0x76b40000 0x00010000
+iccvid.dll 0x76b20000 0x00020000
+icmp.dll 0x76b10000 0x00010000
+ifsutil.dll 0x76ae0000 0x00030000
+imagehlp.dll 0x76ac0000 0x00020000
+imm32.dll 0x76ab0000 0x00010000
+indicdll.dll 0x76aa0000 0x00010000
+inetmib1.dll 0x76a90000 0x00010000
+iologmsg.dll 0x76a80000 0x00010000
+ipadrdll.dll 0x76a70000 0x00010000
+iprip.dll 0x76a60000 0x00010000
+ipxcfg.dll 0x76a50000 0x00010000
+ir32_32.dll 0x769f0000 0x00060000
+jet.dll 0x76930000 0x000c0000
+jet500.dll 0x76840000 0x000f0000
+jp350.dll 0x76820000 0x00020000
+jpeg1x32.dll 0x76810000 0x00010000
+jpeg2x32.dll 0x76800000 0x00010000
+kbdal.dll 0x767f0000 0x00010000
+kbdbene.dll 0x767e0000 0x00010000
+kbdblr.dll 0x767d0000 0x00010000
+kbdbu.dll 0x767c0000 0x00010000
+kbdcr.dll 0x767b0000 0x00010000
+kbdcz1.dll 0x767a0000 0x00010000
+kbddll.dll 0x76790000 0x00010000
+kbdest.dll 0x76780000 0x00010000
+kbdgkl.dll 0x76770000 0x00010000
+kbdgr1.dll 0x76760000 0x00010000
+kbdhe220.dll 0x76750000 0x00010000
+kbdhe319.dll 0x76740000 0x00010000
+kbdhela2.dll 0x76730000 0x00010000
+kbdhela3.dll 0x76720000 0x00010000
+kbdhu1.dll 0x76710000 0x00010000
+kbdir.dll 0x76700000 0x00010000
+kbdit142.dll 0x766f0000 0x00010000
+kbdlt.dll 0x766e0000 0x00010000
+kbdlv.dll 0x766d0000 0x00010000
+kbdlv1.dll 0x766c0000 0x00010000
+kbdpl.dll 0x766b0000 0x00010000
+kbdro.dll 0x766a0000 0x00010000
+kbdru1.dll 0x76690000 0x00010000
+kbdsl1.dll 0x76680000 0x00010000
+kbdur.dll 0x76670000 0x00010000
+kbdurs.dll 0x76660000 0x00010000
+kbdycc.dll 0x76650000 0x00010000
+kbdycl.dll 0x76640000 0x00010000
+kyocera.dll 0x76630000 0x00010000
+kyocerax.dll 0x76600000 0x00030000
+llsrpc.dll 0x765f0000 0x00010000
+lmhsvc.dll 0x765e0000 0x00010000
+lmmib2.dll 0x765d0000 0x00010000
+loadperf.dll 0x765c0000 0x00010000
+localmon.dll 0x765b0000 0x00010000
+localspl.dll 0x76580000 0x00030000
+lpdsvc.dll 0x76570000 0x00010000
+lprhelp.dll 0x76560000 0x00010000
+lprmon.dll 0x76550000 0x00010000
+lsasrv.dll 0x76520000 0x00030000
+mantal24.dll 0x76510000 0x00010000
+mantal90.dll 0x76500000 0x00010000
+mapi32.dll 0x76460000 0x000a0000
+mapiu32.dll 0x76450000 0x00010000
+mapix32.dll 0x76440000 0x00010000
+mcd32.dll 0x76430000 0x00010000
+mciavi32.dll 0x76410000 0x00020000
+mcicda.dll 0x76400000 0x00010000
+mciole32.dll 0x763f0000 0x00010000
+mciseq.dll 0x763e0000 0x00010000
+mciwave.dll 0x763d0000 0x00010000
+mdgmpdlg.dll 0x763c0000 0x00010000
+mdgncdet.dll 0x763b0000 0x00010000
+mf3216.dll 0x763a0000 0x00010000
+mfc40.dll 0x762b0000 0x000f0000
+mfc40chs.dll 0x762a0000 0x00010000
+mfc40deu.dll 0x76290000 0x00010000
+mfc40enu.dll 0x76280000 0x00010000
+mfc40esp.dll 0x76270000 0x00010000
+mfc40fra.dll 0x76260000 0x00010000
+mfc40ita.dll 0x76250000 0x00010000
+mfc40jpn.dll 0x76240000 0x00010000
+mfc40kor.dll 0x76230000 0x00010000
+mfc40u.dll 0x76140000 0x000f0000
+mfc42.dll 0x76040000 0x00100000
+mfc42chs.dll 0x76030000 0x00010000
+mfc42cht.dll 0x76020000 0x00010000
+mfc42deu.dll 0x76010000 0x00010000
+mfc42enu.dll 0x76000000 0x00010000
+mfc42esp.dll 0x75ff0000 0x00010000
+mfc42fra.dll 0x75fe0000 0x00010000
+mfc42ita.dll 0x75fd0000 0x00010000
+mfc42jpn.dll 0x75fc0000 0x00010000
+mfc42kor.dll 0x75fb0000 0x00010000
+mfc42u.dll 0x75eb0000 0x00100000
+mga.dll 0x75e90000 0x00020000
+mgmtapi.dll 0x75e80000 0x00010000
+midimap.dll 0x75e70000 0x00010000
+minet32.dll 0x75e20000 0x00050000
+mlshext.dll 0x75e10000 0x00010000
+mmfmig32.dll 0x75dc0000 0x00050000
+modemui.dll 0x75db0000 0x00010000
+moricons.dll 0x75d80000 0x00030000
+mpu401.dll 0x75d70000 0x00010000
+msacm32.dll 0x75d50000 0x00020000
+msaudite.dll 0x75d40000 0x00010000
+msfs32.dll 0x75cc0000 0x00080000
+msgina.dll 0x75c90000 0x00030000
+msgsvc.dll 0x75c80000 0x00010000
+msncdet.dll 0x75c60000 0x00020000
+msnsspc.dll 0x75c40000 0x00020000
+msobjs.dll 0x75c30000 0x00010000
+msprivs.dll 0x75c20000 0x00010000
+mspst32.dll 0x75ba0000 0x00080000
+msrle32.dll 0x75b90000 0x00010000
+msv1_0.dll 0x75b80000 0x00010000
+msvcrt20.dll 0x75b30000 0x00050000
+msvfw32.dll 0x75b00000 0x00030000
+msvidc32.dll 0x75af0000 0x00010000
+msviewut.dll 0x75ad0000 0x00020000
+mt735.dll 0x75ac0000 0x00010000
+mvaudio.dll 0x75aa0000 0x00020000
+nal.dll 0x75a90000 0x00010000
+nddeapi.dll 0x75a80000 0x00010000
+nddenb32.dll 0x75a70000 0x00010000
+ndis30.dll 0x75a60000 0x00010000
+nec24pin.dll 0x75a50000 0x00010000
+netcfg.dll 0x759c0000 0x00090000
+netdtect.dll 0x759b0000 0x00010000
+netevent.dll 0x759a0000 0x00010000
+netflx.dll 0x75990000 0x00010000
+neth.dll 0x75960000 0x00030000
+netlogon.dll 0x75930000 0x00030000
+netsetup.dll 0x758f0000 0x00040000
+ntctl3d.dll 0x758e0000 0x00010000
+ntlanui2.dll 0x758d0000 0x00010000
+ntlmssps.dll 0x758c0000 0x00010000
+ntlsapi.dll 0x758b0000 0x00010000
+ntprint.dll 0x758a0000 0x00010000
+nwapi16.dll 0x75890000 0x00010000
+nwapi32.dll 0x75880000 0x00010000
+nwcfg.dll 0x75870000 0x00010000
+nwevent.dll 0x75860000 0x00010000
+nwprovau.dll 0x75830000 0x00030000
+nwsap.dll 0x75820000 0x00010000
+nwwks.dll 0x75800000 0x00020000
+oiadm400.dll 0x757f0000 0x00010000
+oicom400.dll 0x757e0000 0x00010000
+oidis400.dll 0x75790000 0x00050000
+oifil400.dll 0x75770000 0x00020000
+oigfs400.dll 0x75750000 0x00020000
+oiprt400.dll 0x75740000 0x00010000
+oislb400.dll 0x75730000 0x00010000
+oissq400.dll 0x75720000 0x00010000
+oitwa400.dll 0x75710000 0x00010000
+oiui400.dll 0x75700000 0x00010000
+oki24.dll 0x756e0000 0x00020000
+oki9.dll 0x756d0000 0x00010000
+oki9ibm.dll 0x756b0000 0x00020000
+olepro32.dll 0x75690000 0x00020000
+olidm24.dll 0x75680000 0x00010000
+olidm9.dll 0x75670000 0x00010000
+opengl32.dll 0x755b0000 0x000c0000
+optra.dll 0x75570000 0x00040000
+paintjet.dll 0x75560000 0x00010000
+panmap.dll 0x75550000 0x00010000
+panson24.dll 0x75540000 0x00010000
+panson9.dll 0x75530000 0x00010000
+pcl5ems.dll 0x754d0000 0x00060000
+pcl5ms.dll 0x75470000 0x00060000
+perfctrs.dll 0x75460000 0x00010000
+perfnw.dll 0x75450000 0x00010000
+pifmgr.dll 0x75440000 0x00010000
+pjlmon.dll 0x75430000 0x00010000
+plotter.dll 0x75420000 0x00010000
+plotui.dll 0x75410000 0x00010000
+plustab.dll 0x75400000 0x00010000
+prflbmsg.dll 0x753f0000 0x00010000
+profext.dll 0x753e0000 0x00010000
+proprint.dll 0x753d0000 0x00010000
+proprn24.dll 0x753c0000 0x00010000
+ps1.dll 0x753b0000 0x00010000
+psxdll.dll 0x75390000 0x00020000
+quietjet.dll 0x75380000 0x00010000
+qwiii.dll 0x75370000 0x00010000
+rasadhlp.dll 0x75360000 0x00010000
+rasadmin.dll 0x75350000 0x00010000
+rasapi32.dll 0x75320000 0x00030000
+rasauto.dll 0x75300000 0x00020000
+rascauth.dll 0x752f0000 0x00010000
+rascbcp.dll 0x752e0000 0x00010000
+rasccp.dll 0x752d0000 0x00010000
+rascfg.dll 0x752a0000 0x00030000
+raschap.dll 0x75290000 0x00010000
+rasctrs.dll 0x75280000 0x00010000
+rasdlg.dll 0x75220000 0x00060000
+rasfil32.dll 0x75210000 0x00010000
+rasgprxy.dll 0x75200000 0x00010000
+rasgtwy.dll 0x751f0000 0x00010000
+rasipcp.dll 0x751e0000 0x00010000
+rasiphlp.dll 0x751d0000 0x00010000
+rasipxcp.dll 0x751c0000 0x00010000
+rasman.dll 0x751a0000 0x00020000
+rasmsg.dll 0x75190000 0x00010000
+rasmxs.dll 0x75180000 0x00010000
+rasnbfcp.dll 0x75170000 0x00010000
+rasnbipc.dll 0x75160000 0x00010000
+raspap.dll 0x75150000 0x00010000
+raspppen.dll 0x75140000 0x00010000
+raspptpc.dll 0x75130000 0x00010000
+raspptpl.dll 0x75120000 0x00010000
+rassapi.dll 0x75110000 0x00010000
+rassauth.dll 0x75100000 0x00010000
+rasscrpt.dll 0x750f0000 0x00010000
+rasser.dll 0x750e0000 0x00010000
+rasshell.dll 0x750d0000 0x00010000
+rasspap.dll 0x750c0000 0x00010000
+rastapi.dll 0x750b0000 0x00010000
+relay.dll 0x750a0000 0x00010000
+riched20.dll 0x75050000 0x00050000
+riched32.dll 0x75020000 0x00030000
+rnal.dll 0x75000000 0x00020000
+rnr20.dll 0x74ff0000 0x00010000
+routetab.dll 0x74fe0000 0x00010000
+rpcltc8.dll 0x74fd0000 0x00010000
+rpcltccm.dll 0x74fc0000 0x00010000
+rpclts8.dll 0x74fb0000 0x00010000
+rpcltscm.dll 0x74fa0000 0x00010000
+rpcns4.dll 0x74f90000 0x00010000
+rshx32.dll 0x74f80000 0x00010000
+samsrv.dll 0x74f50000 0x00030000
+sccview.dll 0x74f40000 0x00010000
+schannel.dll 0x74f20000 0x00020000
+schnl128.dll 0x74f20000 0x00020000
+secbasic.dll 0x74f10000 0x00010000
+secsspi.dll 0x74f00000 0x00010000
+seiko.dll 0x74ef0000 0x00010000
+seiko24e.dll 0x74ed0000 0x00020000
+seikosh9.dll 0x74ec0000 0x00010000
+serialui.dll 0x74eb0000 0x00010000
+setupapi.dll 0x74e60000 0x00050000
+setupdll.dll 0x74da0000 0x000c0000
+sfmapi.dll 0x74d90000 0x00010000
+sfmatcfg.dll 0x74d80000 0x00010000
+sfmatmsg.dll 0x74d70000 0x00010000
+sfmctrs.dll 0x74d60000 0x00010000
+sfmmon.dll 0x74d50000 0x00010000
+sfmmsg.dll 0x74d40000 0x00010000
+sfmpsdib.dll 0x74c90000 0x000b0000
+sfmpsfnt.dll 0x74c80000 0x00010000
+sfmpsprt.dll 0x74c70000 0x00010000
+sfmres.dll 0x74c60000 0x00010000
+sfmutil.dll 0x74c50000 0x00010000
+sfmwshat.dll 0x74c30000 0x00020000
+shscrap.dll 0x74c20000 0x00010000
+sidewndr.dll 0x74c10000 0x00010000
+simptcp.dll 0x74c00000 0x00010000
+skdll.dll 0x74bf0000 0x00010000
+sndblst.dll 0x74bd0000 0x00020000
+sndsys32.dll 0x74bb0000 0x00020000
+snmpapi.dll 0x74ba0000 0x00010000
+softpub.dll 0x74b70000 0x00030000
+spoolss.dll 0x74b60000 0x00010000
+srvsvc.dll 0x74b40000 0x00020000
+star24e.dll 0x74b20000 0x00020000
+star9e.dll 0x74b00000 0x00020000
+starjet.dll 0x74af0000 0x00010000
+synceng.dll 0x74ad0000 0x00020000
+synth.dll 0x74ac0000 0x00010000
+syssetup.dll 0x74a60000 0x00060000
+t1instal.dll 0x74a40000 0x00020000
+tapi32.dll 0x74a10000 0x00030000
+tapiperf.dll 0x74a00000 0x00010000
+tcpcfg.dll 0x749d0000 0x00030000
+tga.dll 0x749c0000 0x00010000
+thinkjet.dll 0x749b0000 0x00010000
+ti850.dll 0x749a0000 0x00010000
+trace.dll 0x74990000 0x00010000
+tsd32.dll 0x74980000 0x00010000
+txtonly.dll 0x74970000 0x00010000
+ufat.dll 0x74950000 0x00020000
+ulib.dll 0x74920000 0x00030000
+umpnpmgr.dll 0x74900000 0x00020000
+untfs.dll 0x748b0000 0x00050000
+ureg.dll 0x748a0000 0x00010000
+userenv.dll 0x74880000 0x00020000
+vdmdbg.dll 0x74870000 0x00010000
+vmmreg32.dll 0x74860000 0x00010000
+vsasc8.dll 0x74850000 0x00010000
+vsbmp.dll 0x74840000 0x00010000
+vsdrw.dll 0x74830000 0x00010000
+vsexe.dll 0x74820000 0x00010000
+vsexe2.dll 0x74810000 0x00010000
+vsmp.dll 0x74800000 0x00010000
+vsmsw.dll 0x747f0000 0x00010000
+vspp.dll 0x747e0000 0x00010000
+vsqp6.dll 0x747d0000 0x00010000
+vsrtf.dll 0x747c0000 0x00010000
+vstiff.dll 0x747b0000 0x00010000
+vsw6.dll 0x747a0000 0x00010000
+vswks.dll 0x74790000 0x00010000
+vswmf.dll 0x74780000 0x00010000
+vsword.dll 0x74760000 0x00020000
+vswork.dll 0x74750000 0x00010000
+vswp5.dll 0x74740000 0x00010000
+vswp6.dll 0x74730000 0x00010000
+vswpf.dll 0x74720000 0x00010000
+vsxl5.dll 0x74700000 0x00020000
+vwipxspx.dll 0x746f0000 0x00010000
+w32.dll 0x746e0000 0x00010000
+wangcmn.dll 0x746d0000 0x00010000
+wangshl.dll 0x746c0000 0x00010000
+wd90c24a.dll 0x746b0000 0x00010000
+wgpoadmn.dll 0x74690000 0x00020000
+win32spl.dll 0x74670000 0x00020000
+winprint.dll 0x74660000 0x00010000
+winsctrs.dll 0x74650000 0x00010000
+winsevnt.dll 0x74640000 0x00010000
+winsmib.dll 0x74630000 0x00010000
+winsrpc.dll 0x74620000 0x00010000
+winstrm.dll 0x74610000 0x00010000
+wintrust.dll 0x74600000 0x00010000
+wkssvc.dll 0x745e0000 0x00020000
+wmsfr32.dll 0x74590000 0x00050000
+wmsui32.dll 0x744c0000 0x000d0000
+wowfax.dll 0x744b0000 0x00010000
+wowfaxui.dll 0x744a0000 0x00010000
+ws2map.dll 0x74490000 0x00010000
+wshisn.dll 0x74480000 0x00010000
+wshnetbs.dll 0x74470000 0x00010000
+xactsrv.dll 0x74450000 0x00020000
+xeroxpcl.dll 0x74430000 0x00020000
+xfilexr.dll 0x74410000 0x00020000
+access.cpl 0x743f0000 0x00020000
+appwiz.cpl 0x743d0000 0x00020000
+bhctrl.cpl 0x743c0000 0x00010000
+console.cpl 0x743b0000 0x00010000
+desk.cpl 0x74380000 0x00030000
+devapps.cpl 0x74330000 0x00050000
+inetcpl.cpl 0x74320000 0x00010000
+intl.cpl 0x74300000 0x00020000
+joy.cpl 0x742e0000 0x00020000
+liccpa.cpl 0x742c0000 0x00020000
+main.cpl 0x742a0000 0x00020000
+mlcfg32.cpl 0x74290000 0x00010000
+mmsys.cpl 0x74250000 0x00040000
+modem.cpl 0x74230000 0x00020000
+ncpa.cpl 0x74200000 0x00030000
+nwc.cpl 0x741f0000 0x00010000
+ports.cpl 0x741e0000 0x00010000
+rascpl.cpl 0x741d0000 0x00010000
+sfmmgr.cpl 0x741a0000 0x00030000
+srvmgr.cpl 0x74170000 0x00030000
+sysdm.cpl 0x74150000 0x00020000
+telephon.cpl 0x74140000 0x00010000
+timedate.cpl 0x74130000 0x00010000
+ups.cpl 0x74120000 0x00010000
+wgpocpl.cpl 0x74110000 0x00010000
+msacm32.drv 0x74100000 0x00010000
+ctl3d32.dll 0x740e0000 0x00020000
+lmmon.dll 0x740d0000 0x00010000
+mfc40d.dll 0x73ff0000 0x000e0000
+mfc40ud.dll 0x73f00000 0x000f0000
+mfc42d.dll 0x73e10000 0x000f0000
+mfc42ud.dll 0x73d20000 0x000f0000
+mfcd40d.dll 0x73ce0000 0x00040000
+mfcd40ud.dll 0x73c90000 0x00050000
+mfcd42d.dll 0x73c40000 0x00050000
+mfcd42ud.dll 0x73bf0000 0x00050000
+mfcn40d.dll 0x73be0000 0x00010000
+mfcn40ud.dll 0x73bd0000 0x00010000
+mfcn42d.dll 0x73bc0000 0x00010000
+mfcn42ud.dll 0x73bb0000 0x00010000
+mfco40d.dll 0x73b00000 0x000b0000
+mfco40ud.dll 0x73a50000 0x000b0000
+mfco42d.dll 0x73980000 0x000d0000
+mfco42ud.dll 0x738b0000 0x000d0000
+msvcirtd.dll 0x73890000 0x00020000
+msvcr40d.dll 0x73870000 0x00020000
+msvcrtd.dll 0x73800000 0x00070000
+nddeexts.dll 0x737f0000 0x00010000
+ntsdexts.dll 0x737d0000 0x00020000
+splexts.dll 0x737b0000 0x00020000
+ubnbmsg.dll 0x737a0000 0x00010000
+userexts.dll 0x73780000 0x00020000
+vdmexts.dll 0x73760000 0x00020000
+wshxns.dll 0x73750000 0x00010000
+xnscfg.dll 0x73740000 0x00010000
+xnsmsg.dll 0x73730000 0x00010000
+afdkd.dll 0x73720000 0x00010000
+cap.dll 0x73700000 0x00020000
+dflayout.dll 0x736f0000 0x00010000
+dfskd.dll 0x736e0000 0x00010000
+dm.dll 0x736c0000 0x00020000
+dmkdalp.dll 0x73690000 0x00030000
+dmkdmip.dll 0x73660000 0x00030000
+dmkdppc.dll 0x73630000 0x00030000
+dmkdx86.dll 0x73600000 0x00030000
+eecxxalp.dll 0x735d0000 0x00030000
+eecxxmip.dll 0x735a0000 0x00030000
+eecxxppc.dll 0x73570000 0x00030000
+eecxxx86.dll 0x73540000 0x00030000
+emalp.dll 0x73520000 0x00020000
+emmip.dll 0x73510000 0x00010000
+emppc.dll 0x73500000 0x00010000
+emx86.dll 0x734e0000 0x00020000
+fernel32.dll 0x734c0000 0x00020000
+filter.dll 0x734b0000 0x00010000
+gdikdx.dll 0x73480000 0x00030000
+gutils.dll 0x73460000 0x00020000
+hdxdll.dll 0x73450000 0x00010000
+hook.dll 0x73440000 0x00010000
+hwdll.dll 0x73430000 0x00010000
+isnext.dll 0x73410000 0x00020000
+iviewers.dll 0x733e0000 0x00030000
+justify.dll 0x733d0000 0x00010000
+kdextalp.dll 0x73390000 0x00040000
+kdextmip.dll 0x73350000 0x00040000
+kdextppc.dll 0x73310000 0x00040000
+kdextx86.dll 0x732d0000 0x00040000
+lineedit.dll 0x732c0000 0x00010000
+mhelp.dll 0x732b0000 0x00010000
+msafdext.dll 0x732a0000 0x00010000
+mshelp.dll 0x73290000 0x00010000
+mspdb40.dll 0x73240000 0x00050000
+mspdb41.dll 0x731f0000 0x00050000
+msvcbook.dll 0x731e0000 0x00010000
+mupkd.dll 0x731d0000 0x00010000
+pmatch.dll 0x731c0000 0x00010000
+psapi.dll 0x731b0000 0x00010000
+rcdll.dll 0x73180000 0x00030000
+rdr2kd.dll 0x73170000 0x00010000
+rdrkd.dll 0x73160000 0x00010000
+shcv.dll 0x73140000 0x00020000
+srvkd.dll 0x73130000 0x00010000
+symcvt.dll 0x73120000 0x00010000
+testctrl.dll 0x73110000 0x00010000
+testdlgs.dll 0x73100000 0x00010000
+testevnt.dll 0x730f0000 0x00010000
+testscrn.dll 0x730e0000 0x00010000
+testvw32.dll 0x730d0000 0x00010000
+tglcase.dll 0x730c0000 0x00010000
+tlloc.dll 0x730b0000 0x00010000
+tlpipe.dll 0x730a0000 0x00010000
+tlser.dll 0x73090000 0x00010000
+ttkdx.dll 0x73080000 0x00010000
+ulcase.dll 0x73070000 0x00010000
+userkdx.dll 0x73040000 0x00030000
+ws1.dll 0x73030000 0x00010000
+wst.dll 0x73020000 0x00010000
+zdi32.dll 0x73010000 0x00010000
+zernel32.dll 0x72ff0000 0x00020000
+zle32.dll 0x72fe0000 0x00010000
+aboutwep.dll 0x72fd0000 0x00010000
+advpack.dll 0x72fc0000 0x00010000
+apidll.dll 0x72fa0000 0x00020000
+iodll.dll 0x72f90000 0x00010000
+mepparty.dll 0x72f80000 0x00010000
+nclipps.dll 0x72f70000 0x00010000
+rasether.dll 0x72f60000 0x00010000
+rcdata1.dll 0x72f50000 0x00010000
+rtutils.dll 0x72f40000 0x00010000
+rwinf.dll 0x72f20000 0x00020000
+rwmac.dll 0x72f00000 0x00020000
+rwres32.dll 0x72ee0000 0x00020000
+rwwin16.dll 0x72ed0000 0x00010000
+rwwin32.dll 0x72eb0000 0x00020000
+secedit.dll 0x72ea0000 0x00010000
+strmexts.dll 0x72e90000 0x00010000
+tophook.dll 0x72e80000 0x00010000
+winclip.dll 0x72e70000 0x00010000
+zextens.dll 0x72e60000 0x00010000
+actsrvd.dll 0x72e50000 0x00010000
+adptif.dll 0x72e30000 0x00020000
+atm.dll 0x72e20000 0x00010000
+atmdrvr.dll 0x72df0000 0x00030000
+bhp001.dll 0x72dc0000 0x00030000
+bhp002.dll 0x72db0000 0x00010000
+bhp003.dll 0x72da0000 0x00010000
+bhp004.dll 0x72d90000 0x00010000
+bhp005.dll 0x72d80000 0x00010000
+bhp006.dll 0x72d70000 0x00010000
+bhp007.dll 0x72d50000 0x00020000
+bhp008.dll 0x72d40000 0x00010000
+bhp009.dll 0x72d00000 0x00040000
+bhp010.dll 0x72cf0000 0x00010000
+bhp011.dll 0x72ce0000 0x00010000
+bhp012.dll 0x72cc0000 0x00020000
+bhp013.dll 0x72c90000 0x00030000
+bhp014.dll 0x72c80000 0x00010000
+bhp015.dll 0x72c40000 0x00040000
+bhp016.dll 0x72c30000 0x00010000
+bhp017.dll 0x72c20000 0x00010000
+bhp018.dll 0x72c10000 0x00010000
+bhp019.dll 0x72bd0000 0x00040000
+bhp020.dll 0x72ba0000 0x00030000
+bhp021.dll 0x72b60000 0x00040000
+bttncur.dll 0x72b50000 0x00010000
+ciutil.dll 0x72b40000 0x00010000
+comcat.dll 0x72b30000 0x00010000
+ddm.dll 0x72b20000 0x00010000
+dfsprov.dll 0x72b10000 0x00010000
+dim.dll 0x72b00000 0x00010000
+espui.dll 0x72af0000 0x00010000
+fastimer.dll 0x72ad0000 0x00020000
+friendly.dll 0x72ac0000 0x00010000
+gizmobar.dll 0x72ab0000 0x00010000
+goober.dll 0x72aa0000 0x00010000
+hexedit.dll 0x72a90000 0x00010000
+htrn_jis.dll 0x72a80000 0x00010000
+ifadmin.dll 0x72a60000 0x00020000
+imaadp32.dll 0x72a50000 0x00010000
+ipadmin.dll 0x729f0000 0x00060000
+ipbootp.dll 0x729e0000 0x00010000
+ipmon.dll 0x729c0000 0x00020000
+iprip2.dll 0x729a0000 0x00020000
+iprtprio.dll 0x72990000 0x00010000
+iprtrmgr.dll 0x72960000 0x00030000
+ipxadmin.dll 0x72940000 0x00020000
+ipxmon.dll 0x72920000 0x00020000
+ipxrip.dll 0x72910000 0x00010000
+ipxrtmgr.dll 0x72900000 0x00010000
+ipxsap.dll 0x728e0000 0x00020000
+ipxwan.dll 0x728d0000 0x00010000
+joystick.dll 0x728c0000 0x00010000
+lprext.dll 0x728b0000 0x00010000
+mib2util.dll 0x728a0000 0x00010000
+mpradmin.dll 0x72890000 0x00010000
+msadp32.dll 0x72880000 0x00010000
+msg711.dll 0x72870000 0x00010000
+msgsm32.dll 0x72860000 0x00010000
+ndrd.dll 0x72850000 0x00010000
+nmapi.dll 0x72830000 0x00020000
+ntprinta.dll 0x72820000 0x00010000
+ole2u32a.dll 0x727f0000 0x00030000
+oleat.dll 0x727e0000 0x00010000
+olebt.dll 0x727d0000 0x00010000
+oledll2.dll 0x727c0000 0x00010000
+oleimpl.dll 0x727b0000 0x00010000
+olest.dll 0x727a0000 0x00010000
+ospf.dll 0x72780000 0x00020000
+ospfmib.dll 0x72760000 0x00020000
+parser.dll 0x72750000 0x00010000
+pctsspi.dll 0x72740000 0x00010000
+pdh.dll 0x72720000 0x00020000
+printuia.dll 0x726f0000 0x00030000
+rcauth.dll 0x726e0000 0x00010000
+rgprxy.dll 0x726d0000 0x00010000
+ripcp.dll 0x726c0000 0x00010000
+riphlp.dll 0x726b0000 0x00010000
+routemsg.dll 0x726a0000 0x00010000
+rpcdce4.dll 0x72690000 0x00010000
+rpcltc5.dll 0x72680000 0x00010000
+rrasgtwy.dll 0x72670000 0x00010000
+rrasipx.dll 0x72660000 0x00010000
+rrasman.dll 0x72640000 0x00020000
+rrasnbf.dll 0x72630000 0x00010000
+rrasppp.dll 0x72620000 0x00010000
+rsauth.dll 0x72610000 0x00010000
+rtm.dll 0x72600000 0x00010000
+sampfilt.dll 0x725f0000 0x00010000
+shareui.dll 0x725e0000 0x00010000
+shellalt.dll 0x724a0000 0x00140000
+slbs.dll 0x72480000 0x00020000
+splx.dll 0x72470000 0x00010000
+thunk32.dll 0x72460000 0x00010000
+toolbar.dll 0x72450000 0x00010000
+tp4cfg.dll 0x72440000 0x00010000
+tssoft32.dll 0x72430000 0x00010000
+urlcache.dll 0x72420000 0x00010000
+winsdb.dll 0x72410000 0x00010000
+wshisotp.dll 0x72400000 0x00010000
+wxndrdll.dll 0x723e0000 0x00020000
+wxrtdll.dll 0x723a0000 0x00040000
+addgrpw.exe 0x01000000 0x00020000
+addusrw.exe 0x01020000 0x00030000
+arp.exe 0x01050000 0x00010000
+at.exe 0x01060000 0x00010000
+atsvc.exe 0x01070000 0x00010000
+attrib.exe 0x01080000 0x00010000
+autochk.exe 0x01090000 0x00080000
+autoconv.exe 0x01110000 0x00080000
+autolfn.exe 0x01190000 0x00010000
+autorun.exe 0x011a0000 0x000a0000
+bootok.exe 0x01240000 0x00010000
+bootvrfy.exe 0x01250000 0x00010000
+cacls.exe 0x01260000 0x00020000
+calc.exe 0x01280000 0x00020000
+cdplayer.exe 0x012a0000 0x00020000
+charmap.exe 0x012c0000 0x00020000
+chkdsk.exe 0x012e0000 0x00010000
+cifilter.exe 0x012f0000 0x00010000
+clipbrd.exe 0x01300000 0x00030000
+clipsrv.exe 0x01330000 0x00020000
+clock.exe 0x01350000 0x00010000
+cmd.exe 0x01360000 0x00050000
+comp.exe 0x013b0000 0x00010000
+compact.exe 0x013c0000 0x00020000
+control.exe 0x013e0000 0x00010000
+convert.exe 0x013f0000 0x00010000
+dcomcnfg.exe 0x01400000 0x00020000
+ddeshare.exe 0x01420000 0x00010000
+ddhelp.exe 0x01430000 0x00010000
+dhcpadmn.exe 0x01440000 0x00040000
+dialer.exe 0x01480000 0x00010000
+diskperf.exe 0x01490000 0x00010000
+dns.exe 0x014a0000 0x00020000
+dnsadmin.exe 0x014c0000 0x00030000
+doskey.exe 0x014f0000 0x00010000
+drwtsn32.exe 0x01500000 0x00020000
+eventvwr.exe 0x01520000 0x00020000
+excfg32.exe 0x01540000 0x00010000
+exchng32.exe 0x01550000 0x00010000
+expand.exe 0x01560000 0x00020000
+explorer.exe 0x01580000 0x00040000
+fc.exe 0x015c0000 0x00010000
+find.exe 0x015d0000 0x00010000
+findstr.exe 0x015e0000 0x00010000
+finger.exe 0x015f0000 0x00010000
+fontview.exe 0x01600000 0x00010000
+forcedos.exe 0x01610000 0x00010000
+freecell.exe 0x01620000 0x00010000
+ftp.exe 0x01630000 0x00010000
+grpconv.exe 0x01640000 0x00010000
+help.exe 0x01650000 0x00010000
+hostname.exe 0x01660000 0x00010000
+hypertrm.exe 0x01670000 0x00010000
+iexplore.exe 0x01680000 0x000c0000
+inetins.exe 0x01740000 0x00010000
+internat.exe 0x01750000 0x00010000
+ipconfig.exe 0x01760000 0x00010000
+ipxroute.exe 0x01770000 0x00010000
+jetconv.exe 0x01780000 0x00010000
+jetpack.exe 0x01790000 0x00010000
+kbdsel.exe 0x017a0000 0x00010000
+label.exe 0x017b0000 0x00010000
+lcwiz.exe 0x017c0000 0x00020000
+lights.exe 0x017e0000 0x00010000
+llsmgr.exe 0x017f0000 0x00040000
+llssrv.exe 0x01830000 0x00030000
+lmrepl.exe 0x01860000 0x00020000
+locator.exe 0x01880000 0x00020000
+lodctr.exe 0x018a0000 0x00010000
+logview.exe 0x018b0000 0x00010000
+lpq.exe 0x018c0000 0x00010000
+lpr.exe 0x018d0000 0x00010000
+lsass.exe 0x018e0000 0x00010000
+macfile.exe 0x018f0000 0x00010000
+mapisp32.exe 0x01900000 0x00010000
+mapisrvr.exe 0x01910000 0x00010000
+mdisp32.exe 0x01920000 0x00020000
+mlset32.exe 0x01940000 0x00010000
+mplay32.exe 0x01950000 0x00030000
+mpnotify.exe 0x01980000 0x00010000
+mspaint.exe 0x01990000 0x00060000
+musrmgr.exe 0x019f0000 0x00040000
+nbtstat.exe 0x01a30000 0x00010000
+ncadmin.exe 0x01a40000 0x00050000
+nddeagnt.exe 0x01a90000 0x00010000
+nddeapir.exe 0x01aa0000 0x00010000
+net.exe 0x01ab0000 0x00020000
+net1.exe 0x01ad0000 0x00030000
+netdde.exe 0x01b00000 0x00020000
+netstat.exe 0x01b20000 0x00010000
+nmagent.exe 0x01b30000 0x00010000
+notepad.exe 0x01b40000 0x00010000
+nslookup.exe 0x01b50000 0x00020000
+ntbackup.exe 0x01b70000 0x000c0000
+ntbooks.exe 0x01c30000 0x00010000
+nwconv.exe 0x01c40000 0x00060000
+nwscript.exe 0x01ca0000 0x00030000
+os2.exe 0x01cd0000 0x00080000
+os2srv.exe 0x01d50000 0x00030000
+os2ss.exe 0x01d80000 0x00010000
+packager.exe 0x01d90000 0x00020000
+pax.exe 0x01db0000 0x00020000
+pbrush.exe 0x01dd0000 0x00010000
+pentnt.exe 0x01de0000 0x00010000
+perfmon.exe 0x01df0000 0x00030000
+pinball.exe 0x01e20000 0x00060000
+ping.exe 0x01e80000 0x00010000
+poledit.exe 0x01e90000 0x00020000
+polsetup.exe 0x01eb0000 0x00010000
+portuas.exe 0x01ec0000 0x00010000
+posix.exe 0x01ed0000 0x00020000
+print.exe 0x01ef0000 0x00010000
+progman.exe 0x01f00000 0x00040000
+psxss.exe 0x01f40000 0x00030000
+quikview.exe 0x01f70000 0x00010000
+rasadmin.exe 0x01f80000 0x00030000
+rasautou.exe 0x01fb0000 0x00010000
+rasdial.exe 0x01fc0000 0x00010000
+rasman.exe 0x01fd0000 0x00010000
+rasmon.exe 0x01fe0000 0x00020000
+rasphone.exe 0x02000000 0x00010000
+rassprxy.exe 0x02010000 0x00010000
+rassrv.exe 0x02020000 0x00020000
+rcp.exe 0x02040000 0x00010000
+rdisk.exe 0x02050000 0x00040000
+recover.exe 0x02090000 0x00010000
+regedit.exe 0x020a0000 0x00020000
+regedt32.exe 0x020c0000 0x00040000
+replace.exe 0x02100000 0x00010000
+restore.exe 0x02110000 0x00020000
+rexec.exe 0x02130000 0x00010000
+ripstat.exe 0x02140000 0x00010000
+route.exe 0x02150000 0x00010000
+router.exe 0x02160000 0x00010000
+rpcss.exe 0x02170000 0x00020000
+rplcmd.exe 0x02190000 0x00010000
+rplcnv.exe 0x021a0000 0x00010000
+rplmgr.exe 0x021b0000 0x00020000
+rplsvc.exe 0x021d0000 0x00020000
+rsh.exe 0x021f0000 0x00010000
+rundll32.exe 0x02200000 0x00010000
+runonce.exe 0x02210000 0x00010000
+savedump.exe 0x02220000 0x00020000
+scanpst.exe 0x02240000 0x00050000
+services.exe 0x02290000 0x00030000
+setup.exe 0x022c0000 0x00010000
+sfmprint.exe 0x022d0000 0x00020000
+sfmpsexe.exe 0x022f0000 0x00010000
+sfmreg.exe 0x02300000 0x00010000
+sfmsvc.exe 0x02310000 0x00020000
+shmgrate.exe 0x02330000 0x00020000
+shrpubw.exe 0x02350000 0x00030000
+skeys.exe 0x02380000 0x00020000
+smss.exe 0x023a0000 0x00010000
+sndrec32.exe 0x023b0000 0x00020000
+sndvol32.exe 0x023d0000 0x00020000
+snmp.exe 0x023f0000 0x00010000
+snmptrap.exe 0x02400000 0x00010000
+sol.exe 0x02410000 0x00010000
+sort.exe 0x02420000 0x00010000
+spinit.exe 0x02430000 0x00010000
+spoolss.exe 0x02440000 0x00010000
+sprestrt.exe 0x02450000 0x00020000
+srvmgr.exe 0x02470000 0x00040000
+subst.exe 0x024b0000 0x00010000
+syncapp.exe 0x024c0000 0x00010000
+systray.exe 0x024d0000 0x00010000
+tapisrv.exe 0x024e0000 0x00020000
+taskman.exe 0x02500000 0x00010000
+taskmgr.exe 0x02510000 0x00020000
+tcpsvcs.exe 0x02530000 0x00010000
+telnet.exe 0x02540000 0x00020000
+tftp.exe 0x02560000 0x00010000
+tracert.exe 0x02570000 0x00010000
+unlodctr.exe 0x02580000 0x00010000
+upg351db.exe 0x02590000 0x000e0000
+ups.exe 0x02670000 0x00010000
+userinit.exe 0x02680000 0x00010000
+usetup.exe 0x02690000 0x00020000
+usrmgr.exe 0x026b0000 0x00050000
+wangimg.exe 0x02700000 0x00070000
+welcome.exe 0x02770000 0x00010000
+winchat.exe 0x02780000 0x00020000
+windisk.exe 0x027a0000 0x00030000
+winfile.exe 0x027d0000 0x00050000
+winhlp32.exe 0x02820000 0x00050000
+winhstb.exe 0x02870000 0x00010000
+winlogon.exe 0x02880000 0x00030000
+winmine.exe 0x028b0000 0x00010000
+winmsd.exe 0x028c0000 0x00030000
+wins.exe 0x028f0000 0x00040000
+winsadmn.exe 0x02930000 0x00050000
+winver.exe 0x02980000 0x00010000
+wizmgr.exe 0x02990000 0x00010000
+wordpad.exe 0x029a0000 0x00040000
+write.exe 0x029e0000 0x00010000
+xcopy.exe 0x029f0000 0x00010000
+mcsxnsvc.exe 0x02a00000 0x00010000
+ntsd.exe 0x02a10000 0x00080000
+rcmd.exe 0x02a90000 0x00010000
+rcmdsvc.exe 0x02aa0000 0x00010000
+ubnbsvc.exe 0x02ab0000 0x00010000
+alphakd.exe 0x02ac0000 0x00030000
+apf32cvt.exe 0x02af0000 0x00010000
+apf32dmp.exe 0x02b00000 0x00010000
+c1.exe 0x02b10000 0x00070000
+c1xx.exe 0x02b80000 0x000d0000
+c2.exe 0x02c50000 0x000a0000
+capdump.exe 0x02cf0000 0x00010000
+capsetup.exe 0x02d00000 0x00010000
+cl.exe 0x02d10000 0x00010000
+compress.exe 0x02d20000 0x00090000
+contents.exe 0x02db0000 0x00010000
+cvdump.exe 0x02dc0000 0x00030000
+cvpack.exe 0x02df0000 0x00020000
+cvtres.exe 0x02e10000 0x00010000
+ddespy.exe 0x02e20000 0x00010000
+dflayout.exe 0x02e30000 0x00010000
+dfview.exe 0x02e40000 0x00010000
+dlgedit.exe 0x02e50000 0x00030000
+dobjview.exe 0x02e80000 0x00010000
+drivers.exe 0x02e90000 0x00010000
+fontedit.exe 0x02ea0000 0x00020000
+hcrtf.exe 0x02ec0000 0x00060000
+hcw.exe 0x02f20000 0x00060000
+i386kd.exe 0x02f80000 0x00030000
+imagedit.exe 0x02fb0000 0x00020000
+irotview.exe 0x02fd0000 0x00010000
+lib.exe 0x02fe0000 0x00010000
+link.exe 0x02ff0000 0x00090000
+link32.exe 0x03080000 0x00010000
+lookmon.exe 0x03090000 0x00040000
+makeani.exe 0x030d0000 0x00010000
+mapsym.exe 0x030e0000 0x000b0000
+masm386.exe 0x03190000 0x00040000
+mc.exe 0x031d0000 0x00020000
+mep.exe 0x031f0000 0x00040000
+mibcc.exe 0x03230000 0x00020000
+midl.exe 0x03250000 0x000c0000
+mipskd.exe 0x03310000 0x00030000
+mktyplib.exe 0x03340000 0x00020000
+ml.exe 0x03360000 0x00070000
+nmake.exe 0x033d0000 0x00020000
+oleview.exe 0x033f0000 0x00030000
+perfmtr.exe 0x03420000 0x00010000
+pfmon.exe 0x03430000 0x00020000
+pmon.exe 0x03450000 0x00020000
+poolmon.exe 0x03470000 0x00040000
+ppckd.exe 0x034b0000 0x00030000
+profile.exe 0x034e0000 0x00010000
+pstat.exe 0x034f0000 0x00010000
+pview.exe 0x03500000 0x00030000
+pviewer.exe 0x03530000 0x00010000
+rc.exe 0x03540000 0x00010000
+rebase.exe 0x03550000 0x00020000
+rlman.exe 0x03570000 0x00040000
+rm.exe 0x035b0000 0x00010000
+sc.exe 0x035c0000 0x00020000
+smashlck.exe 0x035e0000 0x00010000
+spy.exe 0x035f0000 0x00010000
+symedit.exe 0x03600000 0x00010000
+testdlgs.exe 0x03610000 0x00010000
+testdrvr.exe 0x03620000 0x00040000
+testscrn.exe 0x03660000 0x00010000
+thunk.exe 0x03670000 0x00040000
+top.exe 0x036b0000 0x00040000
+undel.exe 0x036f0000 0x00020000
+undname.exe 0x03710000 0x00010000
+uuidgen.exe 0x03720000 0x00010000
+vadump.exe 0x03730000 0x01020000
+vdmperf.exe 0x04750000 0x00010000
+verfix.exe 0x04760000 0x00010000
+vidcap32.exe 0x04770000 0x00020000
+windbg.exe 0x04790000 0x002b0000
+windbgrm.exe 0x04a40000 0x00010000
+windiff.exe 0x04a50000 0x00030000
+wperf.exe 0x04a80000 0x00020000
+wstcat.exe 0x04aa0000 0x00010000
+wstdump.exe 0x04ab0000 0x00010000
+wstune.exe 0x04ac0000 0x00020000
+zoomin.exe 0x04ae0000 0x00010000
+zwapi.exe 0x04af0000 0x00010000
+access.exe 0x04b00000 0x00010000
+acllist.exe 0x04b10000 0x00010000
+addfile.exe 0x04b20000 0x00010000
+addproj.exe 0x04b30000 0x00010000
+adduser.exe 0x04b40000 0x00010000
+alias.exe 0x04b50000 0x00010000
+aniedit.exe 0x04b60000 0x00010000
+apimon.exe 0x04b70000 0x00050000
+applyinf.exe 0x04bc0000 0x00020000
+autowrap.exe 0x04be0000 0x00020000
+basewin.exe 0x04c00000 0x00010000
+beep.exe 0x04c10000 0x00010000
+bin2c.exe 0x04c20000 0x00010000
+bind.exe 0x04c30000 0x00010000
+bingen.exe 0x04c40000 0x00010000
+binplace.exe 0x04c50000 0x00020000
+bintrack.exe 0x04c70000 0x00010000
+browdeb.exe 0x04c80000 0x00010000
+browmon.exe 0x04c90000 0x00020000
+browse.exe 0x04cb0000 0x00010000
+browstat.exe 0x04cc0000 0x00010000
+bugboard.exe 0x04cd0000 0x00010000
+build.exe 0x04ce0000 0x00040000
+buildnum.exe 0x04d20000 0x00010000
+cat.exe 0x04d30000 0x00010000
+cats.exe 0x04d40000 0x00010000
+catsrc.exe 0x04d50000 0x00010000
+cdb.exe 0x04d60000 0x00080000
+cdp.exe 0x04de0000 0x00010000
+certify.exe 0x04df0000 0x00010000
+checkfix.exe 0x04e00000 0x00010000
+checkrel.exe 0x04e10000 0x00030000
+chkalive.exe 0x04e40000 0x00010000
+chksum.exe 0x04e50000 0x00020000
+chkverfy.exe 0x04e70000 0x00010000
+chmode.exe 0x04e80000 0x00010000
+choice.exe 0x04e90000 0x00010000
+ciscan.exe 0x04ea0000 0x00010000
+cmdevent.exe 0x04eb0000 0x00010000
+cmpver.exe 0x04ec0000 0x00010000
+compdir.exe 0x04ed0000 0x00010000
+compinst.exe 0x04ee0000 0x00010000
+connect.exe 0x04ef0000 0x00010000
+cookie.exe 0x04f00000 0x00020000
+cp.exe 0x04f20000 0x00010000
+crash.exe 0x04f30000 0x00020000
+cruel.exe 0x04f50000 0x00010000
+curridw.exe 0x04f60000 0x00010000
+dbgdump.exe 0x04f70000 0x00010000
+dbmon.exe 0x04f80000 0x00010000
+dbwin32.exe 0x04f90000 0x00010000
+dcomp.exe 0x04fa0000 0x00030000
+dconnect.exe 0x04fd0000 0x00010000
+defect.exe 0x04fe0000 0x00010000
+delfile.exe 0x04ff0000 0x00010000
+delnode.exe 0x05000000 0x00010000
+delprof.exe 0x05010000 0x00010000
+delproj.exe 0x05020000 0x00010000
+devpre.exe 0x05030000 0x00010000
+dh.exe 0x05040000 0x00020000
+dhcpcli.exe 0x05060000 0x00010000
+dhcpcmd.exe 0x05070000 0x00010000
+dhcpins.exe 0x05080000 0x00010000
+dhcploc.exe 0x05090000 0x00010000
+dhcptst.exe 0x050a0000 0x00010000
+diamond.exe 0x050b0000 0x000a0000
+diamwrap.exe 0x05150000 0x00010000
+diff.exe 0x05160000 0x00020000
+diruse.exe 0x05180000 0x00010000
+diskedit.exe 0x05190000 0x00030000
+diskmon.exe 0x051c0000 0x00020000
+dommon.exe 0x051e0000 0x00020000
+dosdev.exe 0x05200000 0x00010000
+drivemap.exe 0x05210000 0x00010000
+dskbench.exe 0x05220000 0x00010000
+dskimage.exe 0x05230000 0x00010000
+du.exe 0x05240000 0x00010000
+dumpchk.exe 0x05250000 0x00010000
+dumpexam.exe 0x05260000 0x00020000
+dumpflop.exe 0x05280000 0x00010000
+dumpgrp.exe 0x05290000 0x00010000
+dumpref.exe 0x052a0000 0x00010000
+ech.exe 0x052b0000 0x00010000
+echotime.exe 0x052c0000 0x00010000
+editreg.exe 0x052d0000 0x00010000
+editsym.exe 0x052e0000 0x00010000
+enlist.exe 0x052f0000 0x00010000
+ethstat.exe 0x05300000 0x00010000
+exctrlst.exe 0x05310000 0x00010000
+execmail.exe 0x05320000 0x00010000
+exp.exe 0x05330000 0x00020000
+extag.exe 0x05350000 0x00010000
+fcom.exe 0x05360000 0x00010000
+files.exe 0x05370000 0x00170000
+filever.exe 0x054e0000 0x00020000
+filter.exe 0x05500000 0x00010000
+fix31grp.exe 0x05510000 0x00010000
+fixdiff.exe 0x05520000 0x00010000
+fixlinks.exe 0x05530000 0x00010000
+floplock.exe 0x05540000 0x00010000
+forceflt.exe 0x05550000 0x00010000
+forcemrg.exe 0x05560000 0x00010000
+gensrv.exe 0x05570000 0x00010000
+getbin.exe 0x05580000 0x00020000
+getdbg.exe 0x055a0000 0x00020000
+gflags.exe 0x055c0000 0x00010000
+golf.exe 0x055d0000 0x00010000
+grptoreg.exe 0x055e0000 0x00010000
+guidlib.exe 0x055f0000 0x00010000
+hd.exe 0x05600000 0x00010000
+he.exe 0x05610000 0x00010000
+head.exe 0x05620000 0x00010000
+heapmon.exe 0x05630000 0x00010000
+hextract.exe 0x05640000 0x00010000
+hsplit.exe 0x05650000 0x00010000
+iexpress.exe 0x05660000 0x00030000
+imagecfg.exe 0x05690000 0x00010000
+imagechk.exe 0x056a0000 0x00010000
+in.exe 0x056b0000 0x00010000
+infs.exe 0x056c0000 0x00010000
+infsize.exe 0x056d0000 0x00010000
+ini.exe 0x056e0000 0x00010000
+instaler.exe 0x056f0000 0x00020000
+instsrv.exe 0x05710000 0x00010000
+kbdtool.exe 0x05720000 0x00020000
+kernprof.exe 0x05740000 0x00010000
+kernrate.exe 0x05750000 0x00010000
+kerntwk.exe 0x05760000 0x00010000
+kill.exe 0x05770000 0x00020000
+layout.exe 0x05790000 0x00010000
+links.exe 0x057a0000 0x00010000
+list.exe 0x057b0000 0x00020000
+listmung.exe 0x057d0000 0x00010000
+llscmd.exe 0x057e0000 0x00010000
+llsdbg.exe 0x057f0000 0x00010000
+lnkdump.exe 0x05800000 0x00010000
+loc.exe 0x05810000 0x00010000
+local.exe 0x05820000 0x00010000
+log.exe 0x05830000 0x00010000
+ls.exe 0x05840000 0x00010000
+makedisk.exe 0x05850000 0x00010000
+mapmsg.exe 0x05860000 0x00010000
+mbytes.exe 0x05870000 0x00030000
+mcpyfile.exe 0x058a0000 0x00010000
+merge.exe 0x058b0000 0x00020000
+midleb.exe 0x058d0000 0x00010000
+midlpg.exe 0x058e0000 0x00010000
+midlyacc.exe 0x058f0000 0x00050000
+mlayout.exe 0x05940000 0x000c0000
+mrc.exe 0x05a00000 0x00010000
+msize.exe 0x05a10000 0x00010000
+mtc.exe 0x05a20000 0x00010000
+mttf.exe 0x05a30000 0x00010000
+mttfvwr.exe 0x05a40000 0x00010000
+munge.exe 0x05a50000 0x00020000
+mv.exe 0x05a70000 0x00010000
+netclip.exe 0x05a80000 0x00020000
+netjoin.exe 0x05aa0000 0x00010000
+netperm.exe 0x05ab0000 0x00010000
+netwatch.exe 0x05ac0000 0x00010000
+nlmon.exe 0x05ad0000 0x00010000
+nltest.exe 0x05ae0000 0x00030000
+ntimer.exe 0x05b10000 0x00020000
+nvram.exe 0x05b30000 0x00010000
+objdir.exe 0x05b40000 0x00010000
+objmon.exe 0x05b50000 0x00030000
+oeminf.exe 0x05b80000 0x00010000
+order.exe 0x05b90000 0x00020000
+out.exe 0x05bb0000 0x00010000
+paranoia.exe 0x05bc0000 0x00020000
+parcomp.exe 0x05be0000 0x00020000
+parsync.exe 0x05c00000 0x00010000
+passprop.exe 0x05c10000 0x00010000
+pcall.exe 0x05c20000 0x00020000
+pcmcmd.exe 0x05c40000 0x00010000
+pdump.exe 0x05c50000 0x00010000
+pegged.exe 0x05c60000 0x00010000
+perms.exe 0x05c70000 0x00010000
+pperf.exe 0x05c80000 0x00030000
+ppr.exe 0x05cb0000 0x00020000
+pretty.exe 0x05cd0000 0x00010000
+prodfilt.exe 0x05ce0000 0x00010000
+psxhello.exe 0x05cf0000 0x00010000
+qgrep.exe 0x05d00000 0x00020000
+qslice.exe 0x05d20000 0x00060000
+quickrun.exe 0x05d80000 0x00010000
+random.exe 0x05d90000 0x00010000
+rathole.exe 0x05da0000 0x00010000
+rcdump.exe 0x05db0000 0x00010000
+rcpp.exe 0x05dc0000 0x00020000
+readline.exe 0x05de0000 0x00010000
+regback.exe 0x05df0000 0x00030000
+regdir.exe 0x05e20000 0x00020000
+regdmp.exe 0x05e40000 0x00020000
+regfind.exe 0x05e60000 0x00020000
+regini.exe 0x05e80000 0x00020000
+regtogrp.exe 0x05ea0000 0x00010000
+remote.exe 0x05eb0000 0x00020000
+repair.exe 0x05ed0000 0x00030000
+rescan.exe 0x05f00000 0x00010000
+resmon.exe 0x05f10000 0x00020000
+reversi.exe 0x05f30000 0x00010000
+rollback.exe 0x05f40000 0x00010000
+roshare.exe 0x05f50000 0x00010000
+sadmin.exe 0x05f60000 0x00040000
+sclist.exe 0x05fa0000 0x00020000
+scomp.exe 0x05fc0000 0x00010000
+secedit.exe 0x05fd0000 0x00010000
+seclist.exe 0x05fe0000 0x00010000
+setlink.exe 0x05ff0000 0x00010000
+showinst.exe 0x06000000 0x00010000
+showperf.exe 0x06010000 0x00020000
+shutdown.exe 0x06030000 0x00010000
+simbad.exe 0x06040000 0x00010000
+size.exe 0x06050000 0x00010000
+sleep.exe 0x06060000 0x00010000
+slm.exe 0x06070000 0x00040000
+slmck.exe 0x060b0000 0x00030000
+slmdiff.exe 0x060e0000 0x00010000
+slmed.exe 0x060f0000 0x00040000
+smbtrace.exe 0x06130000 0x00020000
+snake.exe 0x06150000 0x00010000
+snmputil.exe 0x06160000 0x00010000
+solidpp.exe 0x06170000 0x00010000
+splinfo.exe 0x06180000 0x00010000
+splitsym.exe 0x06190000 0x00010000
+srch.exe 0x061a0000 0x00030000
+srvname.exe 0x061d0000 0x00010000
+ssptest.exe 0x061e0000 0x00010000
+ssync.exe 0x061f0000 0x00010000
+startpgm.exe 0x06200000 0x00010000
+status.exe 0x06210000 0x00010000
+strings.exe 0x06220000 0x00010000
+stripcv.exe 0x06230000 0x00010000
+stripinf.exe 0x06240000 0x00010000
+strmdbg.exe 0x06250000 0x00010000
+structo.exe 0x06260000 0x00010000
+suck.exe 0x06270000 0x00020000
+switcher.exe 0x06290000 0x00010000
+sync.exe 0x062a0000 0x00010000
+sysdiff.exe 0x062b0000 0x00020000
+tail.exe 0x062d0000 0x00010000
+taipei.exe 0x062e0000 0x00020000
+takeown.exe 0x06300000 0x00010000
+tc.exe 0x06310000 0x00020000
+tee.exe 0x06330000 0x00010000
+tictac.exe 0x06340000 0x00010000
+tile.exe 0x06350000 0x00010000
+timeit.exe 0x06360000 0x00010000
+timer.exe 0x06370000 0x00010000
+tlist.exe 0x06380000 0x00020000
+topdesk.exe 0x063a0000 0x00070000
+touch.exe 0x06410000 0x00010000
+tpdiff.exe 0x06420000 0x00020000
+trans.exe 0x06440000 0x00020000
+tz.exe 0x06460000 0x00010000
+uixport.exe 0x06470000 0x00010000
+undoinst.exe 0x06480000 0x00010000
+units.exe 0x06490000 0x00010000
+unmerge.exe 0x064a0000 0x00010000
+upd.exe 0x064b0000 0x00020000
+upddbg.exe 0x064d0000 0x00010000
+updrn.exe 0x064e0000 0x00010000
+vdesk.exe 0x064f0000 0x00010000
+vi.exe 0x06500000 0x00020000
+walk.exe 0x06520000 0x00010000
+wc.exe 0x06530000 0x00010000
+wcshdr.exe 0x06540000 0x00010000
+wextract.exe 0x06550000 0x00020000
+whatis.exe 0x06570000 0x00010000
+where.exe 0x06580000 0x00010000
+winat.exe 0x06590000 0x00020000
+winobj.exe 0x065b0000 0x00040000
+winschk.exe 0x065f0000 0x00b90000
+winscl.exe 0x07180000 0x00010000
+winsdrv.exe 0x07190000 0x00010000
+winvtp.exe 0x071a0000 0x00020000
+wnbstat.exe 0x071c0000 0x00010000
+ws.exe 0x071d0000 0x00010000
+ws2hdr.exe 0x071e0000 0x00010000
+xdosnet.exe 0x071f0000 0x00010000
+xerox.exe 0x07200000 0x00010000
+yapt.exe 0x07210000 0x00010000
+ync.exe 0x07220000 0x00010000
+z.exe 0x07230000 0x00040000
+accupd.exe 0x07270000 0x00010000
+accupd2.exe 0x07280000 0x00020000
+actclt.exe 0x072a0000 0x00010000
+actsrv.exe 0x072b0000 0x00010000
+bldvtbl.exe 0x072c0000 0x00010000
+capiinst.exe 0x072d0000 0x00010000
+ccmd.exe 0x072e0000 0x00040000
+ccsetup.exe 0x07320000 0x00010000
+client.exe 0x07330000 0x00010000
+clipdump.exe 0x07340000 0x00010000
+cntroutl.exe 0x07350000 0x00020000
+convgrp.exe 0x07370000 0x00010000
+cpustres.exe 0x07380000 0x00010000
+cputgen.exe 0x07390000 0x00010000
+ctt2rle.exe 0x073a0000 0x00010000
+ddmprxy.exe 0x073b0000 0x00010000
+dfsetup.exe 0x073c0000 0x00010000
+dftool.exe 0x073d0000 0x00010000
+dhcmp.exe 0x073e0000 0x00010000
+discon.exe 0x073f0000 0x00010000
+disctest.exe 0x07400000 0x00010000
+dnscmd.exe 0x07410000 0x00010000
+dnssetup.exe 0x07420000 0x00010000
+dnsstat.exe 0x07430000 0x00010000
+dphhogs.exe 0x07440000 0x00010000
+dskdump.exe 0x07450000 0x00010000
+dummy.exe 0x07460000 0x00010000
+dumpbin.exe 0x07470000 0x00010000
+dumpclip.exe 0x07480000 0x00010000
+empty.exe 0x07490000 0x00020000
+emptyq.exe 0x074b0000 0x00030000
+espexe.exe 0x074e0000 0x00010000
+execslm.exe 0x074f0000 0x00010000
+explalt.exe 0x07500000 0x00040000
+fail.exe 0x07540000 0x00010000
+faxstres.exe 0x07550000 0x00010000
+fileback.exe 0x07560000 0x00010000
+filtest.exe 0x07570000 0x00010000
+ftc.exe 0x07580000 0x00020000
+gdibench.exe 0x075a0000 0x00040000
+gdistats.exe 0x075e0000 0x00010000
+genthnk.exe 0x075f0000 0x00020000
+getmttf.exe 0x07610000 0x00010000
+htmboard.exe 0x07620000 0x00010000
+icntrotl.exe 0x07630000 0x00020000
+impchk.exe 0x07650000 0x00010000
+infilter.exe 0x07660000 0x00010000
+init.exe 0x07670000 0x00010000
+install.exe 0x07680000 0x00010000
+ipsetup.exe 0x07690000 0x00010000
+ipxping.exe 0x076a0000 0x00010000
+ipxrgcfg.exe 0x076b0000 0x00010000
+ipxrtvw.exe 0x076c0000 0x00020000
+isvrotl.exe 0x076e0000 0x00020000
+leakyapp.exe 0x07700000 0x00010000
+license.exe 0x07710000 0x00010000
+logdiff.exe 0x07720000 0x00020000
+logwin.exe 0x07740000 0x00010000
+machrid.exe 0x07750000 0x00010000
+mcopy.exe 0x07760000 0x00010000
+memsnap.exe 0x07770000 0x00010000
+mprouter.exe 0x07780000 0x00010000
+netdfs.exe 0x07790000 0x00010000
+netmon.exe 0x077a0000 0x000b0000
+netstrs.exe 0x07850000 0x00010000
+nsnmp.exe 0x07860000 0x00010000
+ntgpcedt.exe 0x07870000 0x00010000
+olebind.exe 0x07880000 0x00020000
+olecnfg.exe 0x078a0000 0x00010000
+olesrv.exe 0x078b0000 0x00010000
+oletest.exe 0x078c0000 0x00010000
+pdlcnfig.exe 0x078d0000 0x00010000
+pdlsvc.exe 0x078e0000 0x00010000
+pfm2ifi.exe 0x078f0000 0x00010000
+pifdump.exe 0x07900000 0x00010000
+plotgpc.exe 0x07910000 0x00010000
+plumbing.exe 0x07920000 0x00010000
+poolsnap.exe 0x07930000 0x00030000
+ppm2pps.exe 0x07960000 0x00010000
+printman.exe 0x07970000 0x00020000
+q.exe 0x07990000 0x00030000
+quickres.exe 0x079c0000 0x00010000
+rasusers.exe 0x079d0000 0x00010000
+regdiff.exe 0x079e0000 0x00020000
+regrest.exe 0x07a00000 0x00040000
+rendtest.exe 0x07a40000 0x00010000
+riptest.exe 0x07a50000 0x00010000
+rladmin.exe 0x07a60000 0x00040000
+rledit.exe 0x07aa0000 0x00050000
+rlquiked.exe 0x07af0000 0x00040000
+routemon.exe 0x07b30000 0x00010000
+rtradmin.exe 0x07b40000 0x00020000
+server.exe 0x07b60000 0x00020000
+setacc.exe 0x07b80000 0x00010000
+setpriv.exe 0x07b90000 0x00010000
+setprop.exe 0x07ba0000 0x00020000
+sign.exe 0x07bc0000 0x00010000
+simpcntr.exe 0x07bd0000 0x00020000
+simpdnd.exe 0x07bf0000 0x00020000
+simpsvr.exe 0x07c10000 0x00020000
+smbrdr.exe 0x07c30000 0x00010000
+sortlog.exe 0x07c40000 0x00010000
+sortpp.exe 0x07c50000 0x00020000
+stgdrt.exe 0x07c70000 0x00010000
+stress.exe 0x07c80000 0x00010000
+sublocal.exe 0x07c90000 0x00010000
+svroutl.exe 0x07ca0000 0x00020000
+tapiupr.exe 0x07cc0000 0x00010000
+tb20.exe 0x07cd0000 0x00030000
+terminal.exe 0x07d00000 0x00040000
+test.exe 0x07d40000 0x00010000
+testsrv.exe 0x07d50000 0x00010000
+tlocmgr.exe 0x07d60000 0x00010000
+tpctl.exe 0x07d70000 0x00030000
+upedit.exe 0x07da0000 0x00010000
+w3t.exe 0x07db0000 0x00010000
+wansetup.exe 0x07dc0000 0x00010000
+wcache.exe 0x07dd0000 0x00010000
+win95cmd.exe 0x07de0000 0x00060000
+winsdmp.exe 0x07e40000 0x00010000
+wntipcfg.exe 0x07e50000 0x00010000
+wrapit.exe 0x07e60000 0x00020000
+csrss.exe 0x5ffe0000 0x00010000
+winsrv.dll 0x5ffb0000 0x00030000
+basesrv.dll 0x5ffa0000 0x00010000
+csrsrv.dll 0x5ff90000 0x00010000
+vga.dll 0x5ff70000 0x00020000
+kbdus.dll 0x5ff60000 0x00010000
+kbdbe.dll 0x5ff50000 0x00010000
+kbdbr.dll 0x5ff50000 0x00010000
+kbdca.dll 0x5ff50000 0x00010000
+kbdcz.dll 0x5ff50000 0x00010000
+kbdda.dll 0x5ff50000 0x00010000
+kbddv.dll 0x5ff50000 0x00010000
+kbdes.dll 0x5ff50000 0x00010000
+kbdfc.dll 0x5ff50000 0x00010000
+kbdfi.dll 0x5ff50000 0x00010000
+kbdfr.dll 0x5ff50000 0x00010000
+kbdgr.dll 0x5ff50000 0x00010000
+kbdhe.dll 0x5ff50000 0x00010000
+kbdhu.dll 0x5ff50000 0x00010000
+kbdic.dll 0x5ff50000 0x00010000
+kbdit.dll 0x5ff50000 0x00010000
+kbdla.dll 0x5ff50000 0x00010000
+kbdne.dll 0x5ff50000 0x00010000
+kbdno.dll 0x5ff50000 0x00010000
+kbdpl1.dll 0x5ff50000 0x00010000
+kbdpo.dll 0x5ff50000 0x00010000
+kbdru.dll 0x5ff50000 0x00010000
+kbdsf.dll 0x5ff50000 0x00010000
+kbdsg.dll 0x5ff50000 0x00010000
+kbdsl.dll 0x5ff50000 0x00010000
+kbdsp.dll 0x5ff50000 0x00010000
+kbdsw.dll 0x5ff50000 0x00010000
+kbdtuf.dll 0x5ff50000 0x00010000
+kbdtuq.dll 0x5ff50000 0x00010000
+kbduk.dll 0x5ff50000 0x00010000
+kbdusl.dll 0x5ff50000 0x00010000
+kbdusr.dll 0x5ff50000 0x00010000
+kbdusx.dll 0x5ff50000 0x00010000
+ati.dll 0x5ff30000 0x00020000
+s3.dll 0x5ff30000 0x00020000
+vga64k.dll 0x5ff40000 0x00010000
+vga256.dll 0x5ff40000 0x00010000
+xga.dll 0x5ff40000 0x00010000
+weitekp9.dll 0x5ff40000 0x00010000
+8514a.dll 0x5ff40000 0x00010000
+framebuf.dll 0x5ff40000 0x00010000
+qv.dll 0x5ff40000 0x00010000
+wow32.dll 0x0ffb0000 0x00040000
+vcdex.dll 0x0ffa0000 0x00010000
+vdmredir.dll 0x0ff80000 0x00020000
+ntvdm.exe 0x0fed0000 0x000b0000
+iprop.dll 0x5f800000 0x00020000
diff --git a/public/sdk/lib/mips/usa/baseaddr.txt b/public/sdk/lib/mips/usa/baseaddr.txt
new file mode 100644
index 000000000..0b3c9ea9c
--- /dev/null
+++ b/public/sdk/lib/mips/usa/baseaddr.txt
@@ -0,0 +1,1542 @@
+winmm.dll 0x77fc0000 0x00040000
+mmdrv.dll 0x77fb0000 0x00010000
+ntdll.dll 0x77f30000 0x00080000
+kernel32.dll 0x77ea0000 0x00090000
+gdi32.dll 0x77e50000 0x00050000
+user32.dll 0x77dc0000 0x00090000
+rpcrt4.dll 0x77d40000 0x00080000
+rpcltc1.dll 0x77d30000 0x00010000
+rpclts1.dll 0x77d20000 0x00010000
+advapi32.dll 0x77cb0000 0x00070000
+comdlg32.dll 0x77c50000 0x00060000
+shell32.dll 0x77a90000 0x001c0000
+comctl32.dll 0x77a00000 0x00090000
+winspool.drv 0x779d0000 0x00030000
+ole32.dll 0x778b0000 0x00120000
+oleaut32.dll 0x777e0000 0x000d0000
+version.dll 0x777d0000 0x00010000
+security.dll 0x777b0000 0x00020000
+printui.dll 0x77760000 0x00050000
+ntshrui.dll 0x77740000 0x00020000
+msvcrt.dll 0x776d0000 0x00070000
+msvcrt40.dll 0x776b0000 0x00020000
+lz32.dll 0x776a0000 0x00010000
+linkinfo.dll 0x77690000 0x00010000
+olethk32.dll 0x77660000 0x00030000
+olecli32.dll 0x77630000 0x00030000
+olecnv32.dll 0x77610000 0x00020000
+oledlg.dll 0x775e0000 0x00030000
+olesvr32.dll 0x775d0000 0x00010000
+syncui.dll 0x77590000 0x00040000
+shcompui.dll 0x77580000 0x00010000
+url.dll 0x77540000 0x00040000
+netui0.dll 0x77520000 0x00020000
+netui1.dll 0x774c0000 0x00060000
+netrap.dll 0x774b0000 0x00010000
+netapi32.dll 0x77450000 0x00060000
+ntlanman.dll 0x77430000 0x00020000
+samlib.dll 0x77420000 0x00010000
+netui2.dll 0x773b0000 0x00070000
+acledit.dll 0x77380000 0x00030000
+netmsg.dll 0x77360000 0x00020000
+mpr.dll 0x77340000 0x00020000
+mprui.dll 0x77320000 0x00020000
+ntlanui.dll 0x77300000 0x00020000
+wsock32.dll 0x772f0000 0x00010000
+ws2_32.dll 0x772d0000 0x00020000
+ws2help.dll 0x772c0000 0x00010000
+wshtcpip.dll 0x772b0000 0x00010000
+mswsock.dll 0x77290000 0x00020000
+msafd.dll 0x77270000 0x00020000
+crtdll.dll 0x77220000 0x00050000
+hppcl.dll 0x771d0000 0x00050000
+rasdd.dll 0x771b0000 0x00020000
+rasddui.dll 0x77190000 0x00020000
+pscript.dll 0x77140000 0x00050000
+pscrptui.dll 0x77100000 0x00040000
+imaadp32.acm 0x770f0000 0x00010000
+msadp32.acm 0x770e0000 0x00010000
+msg711.acm 0x770d0000 0x00010000
+msgsm32.acm 0x770c0000 0x00010000
+tssoft32.acm 0x770b0000 0x00010000
+alrsvc.dll 0x770a0000 0x00010000
+amddlg.dll 0x77090000 0x00010000
+amdncdet.dll 0x77080000 0x00010000
+atkctrs.dll 0x77070000 0x00010000
+avicap32.dll 0x77050000 0x00020000
+avifil32.dll 0x77020000 0x00030000
+bhmon.dll 0x77010000 0x00010000
+bhnetb.dll 0x76ff0000 0x00020000
+bhsupp.dll 0x76fe0000 0x00010000
+brhj770.dll 0x76fd0000 0x00010000
+brother9.dll 0x76fc0000 0x00010000
+brothr24.dll 0x76fa0000 0x00020000
+browser.dll 0x76f80000 0x00020000
+canon330.dll 0x76f70000 0x00010000
+canon800.dll 0x76f60000 0x00010000
+canonlbp.dll 0x76f40000 0x00020000
+cards.dll 0x76f10000 0x00030000
+ccfapi32.dll 0x76ee0000 0x00030000
+cfgmgr32.dll 0x76ec0000 0x00020000
+cfm30.dll 0x76e30000 0x00090000
+cfm30u.dll 0x76da0000 0x00090000
+cfmo30.dll 0x76d60000 0x00040000
+cfmo30u.dll 0x76d20000 0x00040000
+cirrus.dll 0x76d00000 0x00020000
+cit24us.dll 0x76ce0000 0x00020000
+cit9us.dll 0x76cd0000 0x00010000
+citoh.dll 0x76cc0000 0x00010000
+clb.dll 0x76cb0000 0x00010000
+cnvfat.dll 0x76ca0000 0x00010000
+compstui.dll 0x76c60000 0x00040000
+conexts.dll 0x76c50000 0x00010000
+convmsg.dll 0x76c40000 0x00010000
+cxxflt.dll 0x76c30000 0x00010000
+dciman32.dll 0x76c20000 0x00010000
+ddraw.dll 0x76be0000 0x00040000
+debmp.dll 0x76bc0000 0x00020000
+dec24pin.dll 0x76bb0000 0x00010000
+dec3200.dll 0x76ba0000 0x00010000
+dec9pin.dll 0x76b90000 0x00010000
+decpsmon.dll 0x76ab0000 0x000e0000
+defea.dll 0x76aa0000 0x00010000
+defpa.dll 0x76a90000 0x00010000
+dehex.dll 0x76a80000 0x00010000
+demet.dll 0x76a60000 0x00020000
+dess.dll 0x76a40000 0x00020000
+dewp.dll 0x76a10000 0x00030000
+dgconfig.dll 0x769f0000 0x00020000
+dhcpcsvc.dll 0x769e0000 0x00010000
+dhcpmib.dll 0x769d0000 0x00010000
+dhcpsapi.dll 0x769c0000 0x00010000
+dhcpssvc.dll 0x76990000 0x00030000
+diconix.dll 0x76980000 0x00010000
+digiinst.dll 0x76960000 0x00020000
+digsig.dll 0x768f0000 0x00070000
+diskcopy.dll 0x768e0000 0x00010000
+dlcapi.dll 0x768d0000 0x00010000
+docprop.dll 0x768b0000 0x00020000
+dplay.dll 0x76890000 0x00020000
+dpserial.dll 0x76870000 0x00020000
+dpwsock.dll 0x76850000 0x00020000
+dsound.dll 0x76820000 0x00030000
+epson24.dll 0x76810000 0x00010000
+epson9.dll 0x767f0000 0x00020000
+escp2e.dll 0x767e0000 0x00010000
+escp2ms.dll 0x767d0000 0x00010000
+eventlog.dll 0x767b0000 0x00020000
+fmifs.dll 0x767a0000 0x00010000
+fontext.dll 0x76770000 0x00030000
+fpnwclnt.dll 0x76760000 0x00010000
+ftpctrs.dll 0x76750000 0x00010000
+ftpsmx.dll 0x76740000 0x00010000
+ftpsvapi.dll 0x76730000 0x00010000
+ftpsvc.dll 0x76710000 0x00020000
+ftsrch.dll 0x766a0000 0x00070000
+fuji24.dll 0x76690000 0x00010000
+fuji9.dll 0x76680000 0x00010000
+gapi32.dll 0x76660000 0x00020000
+glmf32.dll 0x765c0000 0x000a0000
+glu32.dll 0x76580000 0x00040000
+hpdskjet.dll 0x76550000 0x00030000
+hpmon.dll 0x76530000 0x00020000
+hpscan32.dll 0x76520000 0x00010000
+hticons.dll 0x76510000 0x00010000
+htui.dll 0x764f0000 0x00020000
+hypertrm.dll 0x76460000 0x00090000
+ibm238x.dll 0x76450000 0x00010000
+ibm239x.dll 0x76430000 0x00020000
+ibm5204.dll 0x76420000 0x00010000
+ibmport.dll 0x76410000 0x00010000
+ibmppdsl.dll 0x76400000 0x00010000
+iccvid.dll 0x763d0000 0x00030000
+icmp.dll 0x763c0000 0x00010000
+ifsutil.dll 0x76380000 0x00040000
+imagehlp.dll 0x76350000 0x00030000
+imm32.dll 0x76340000 0x00010000
+indicdll.dll 0x76330000 0x00010000
+inetmib1.dll 0x76310000 0x00020000
+iologmsg.dll 0x76300000 0x00010000
+ipadrdll.dll 0x762f0000 0x00010000
+iprip.dll 0x762e0000 0x00010000
+ipxcfg.dll 0x762c0000 0x00020000
+ir32_32.dll 0x76270000 0x00050000
+jet.dll 0x76190000 0x000e0000
+jet500.dll 0x76070000 0x00120000
+jp350.dll 0x76050000 0x00020000
+jpeg1x32.dll 0x76040000 0x00010000
+jpeg2x32.dll 0x76020000 0x00020000
+kbdal.dll 0x76010000 0x00010000
+kbdbene.dll 0x76000000 0x00010000
+kbdblr.dll 0x75ff0000 0x00010000
+kbdbu.dll 0x75fe0000 0x00010000
+kbdcr.dll 0x75fd0000 0x00010000
+kbdcz1.dll 0x75fc0000 0x00010000
+kbddll.dll 0x75fb0000 0x00010000
+kbdest.dll 0x75fa0000 0x00010000
+kbdgkl.dll 0x75f90000 0x00010000
+kbdgr1.dll 0x75f80000 0x00010000
+kbdhe220.dll 0x75f70000 0x00010000
+kbdhe319.dll 0x75f60000 0x00010000
+kbdhela2.dll 0x75f50000 0x00010000
+kbdhela3.dll 0x75f40000 0x00010000
+kbdhu1.dll 0x75f30000 0x00010000
+kbdir.dll 0x75f20000 0x00010000
+kbdit142.dll 0x75f10000 0x00010000
+kbdlt.dll 0x75f00000 0x00010000
+kbdlv.dll 0x75ef0000 0x00010000
+kbdlv1.dll 0x75ee0000 0x00010000
+kbdpl.dll 0x75ed0000 0x00010000
+kbdro.dll 0x75ec0000 0x00010000
+kbdru1.dll 0x75eb0000 0x00010000
+kbdsl1.dll 0x75ea0000 0x00010000
+kbdur.dll 0x75e90000 0x00010000
+kbdurs.dll 0x75e80000 0x00010000
+kbdycc.dll 0x75e70000 0x00010000
+kbdycl.dll 0x75e60000 0x00010000
+kyocera.dll 0x75e50000 0x00010000
+kyocerax.dll 0x75e20000 0x00030000
+llsrpc.dll 0x75e00000 0x00020000
+lmhsvc.dll 0x75df0000 0x00010000
+lmmib2.dll 0x75de0000 0x00010000
+loadperf.dll 0x75dd0000 0x00010000
+localmon.dll 0x75dc0000 0x00010000
+localspl.dll 0x75d80000 0x00040000
+lpdsvc.dll 0x75d70000 0x00010000
+lprhelp.dll 0x75d60000 0x00010000
+lprmon.dll 0x75d50000 0x00010000
+lsasrv.dll 0x75d10000 0x00040000
+mantal24.dll 0x75d00000 0x00010000
+mantal90.dll 0x75cf0000 0x00010000
+mapi32.dll 0x75be0000 0x00110000
+mapiu32.dll 0x75bd0000 0x00010000
+mapix32.dll 0x75bc0000 0x00010000
+mcd32.dll 0x75bb0000 0x00010000
+mciavi32.dll 0x75b80000 0x00030000
+mcicda.dll 0x75b60000 0x00020000
+mciole32.dll 0x75b50000 0x00010000
+mciseq.dll 0x75b40000 0x00010000
+mciwave.dll 0x75b30000 0x00010000
+mdgmpdlg.dll 0x75b20000 0x00010000
+mdgncdet.dll 0x75b00000 0x00020000
+mf3216.dll 0x75ae0000 0x00020000
+mfc40.dll 0x75920000 0x001c0000
+mfc40chs.dll 0x75910000 0x00010000
+mfc40deu.dll 0x75900000 0x00010000
+mfc40enu.dll 0x758f0000 0x00010000
+mfc40esp.dll 0x758e0000 0x00010000
+mfc40fra.dll 0x758d0000 0x00010000
+mfc40ita.dll 0x758c0000 0x00010000
+mfc40jpn.dll 0x758b0000 0x00010000
+mfc40kor.dll 0x758a0000 0x00010000
+mfc40u.dll 0x756e0000 0x001c0000
+mfc42.dll 0x754f0000 0x001f0000
+mfc42chs.dll 0x754e0000 0x00010000
+mfc42cht.dll 0x754d0000 0x00010000
+mfc42deu.dll 0x754c0000 0x00010000
+mfc42enu.dll 0x754b0000 0x00010000
+mfc42esp.dll 0x754a0000 0x00010000
+mfc42fra.dll 0x75490000 0x00010000
+mfc42ita.dll 0x75480000 0x00010000
+mfc42jpn.dll 0x75470000 0x00010000
+mfc42kor.dll 0x75460000 0x00010000
+mfc42u.dll 0x75270000 0x001f0000
+mga.dll 0x75240000 0x00030000
+mgmtapi.dll 0x75230000 0x00010000
+midimap.dll 0x75220000 0x00010000
+minet32.dll 0x751b0000 0x00070000
+mlshext.dll 0x751a0000 0x00010000
+mmfmig32.dll 0x75130000 0x00070000
+modemui.dll 0x75110000 0x00020000
+moricons.dll 0x750e0000 0x00030000
+mpu401.dll 0x750d0000 0x00010000
+msacm32.dll 0x75090000 0x00040000
+msaudite.dll 0x75080000 0x00010000
+msfs32.dll 0x74fb0000 0x000d0000
+msgina.dll 0x74f80000 0x00030000
+msgsvc.dll 0x74f60000 0x00020000
+msncdet.dll 0x74f30000 0x00030000
+msnsspc.dll 0x74f10000 0x00020000
+msobjs.dll 0x74f00000 0x00010000
+msprivs.dll 0x74ef0000 0x00010000
+mspst32.dll 0x74e20000 0x000d0000
+msrle32.dll 0x74e10000 0x00010000
+msv1_0.dll 0x74df0000 0x00020000
+msvcrt20.dll 0x74d70000 0x00080000
+msvfw32.dll 0x74d30000 0x00040000
+msvidc32.dll 0x74d20000 0x00010000
+msviewut.dll 0x74ce0000 0x00040000
+mt735.dll 0x74cd0000 0x00010000
+mvaudio.dll 0x74cb0000 0x00020000
+nal.dll 0x74ca0000 0x00010000
+nddeapi.dll 0x74c90000 0x00010000
+nddenb32.dll 0x74c80000 0x00010000
+ndis30.dll 0x74c70000 0x00010000
+nec24pin.dll 0x74c60000 0x00010000
+necsnd.dll 0x74c50000 0x00010000
+netcfg.dll 0x74b90000 0x000c0000
+netdtect.dll 0x74b80000 0x00010000
+netevent.dll 0x74b70000 0x00010000
+netflx.dll 0x74b60000 0x00010000
+neth.dll 0x74b30000 0x00030000
+netlogon.dll 0x74ae0000 0x00050000
+netsetup.dll 0x74a90000 0x00050000
+ntctl3d.dll 0x74a70000 0x00020000
+ntlanui2.dll 0x74a60000 0x00010000
+ntlmssps.dll 0x74a50000 0x00010000
+ntlsapi.dll 0x74a40000 0x00010000
+ntprint.dll 0x74a30000 0x00010000
+nwapi16.dll 0x74a20000 0x00010000
+nwapi32.dll 0x74a10000 0x00010000
+nwcfg.dll 0x74a00000 0x00010000
+nwevent.dll 0x749f0000 0x00010000
+nwprovau.dll 0x749b0000 0x00040000
+nwsap.dll 0x74990000 0x00020000
+nwwks.dll 0x74960000 0x00030000
+oiadm400.dll 0x74950000 0x00010000
+oicom400.dll 0x74940000 0x00010000
+oidis400.dll 0x748c0000 0x00080000
+oifil400.dll 0x748a0000 0x00020000
+oigfs400.dll 0x74870000 0x00030000
+oiprt400.dll 0x74860000 0x00010000
+oislb400.dll 0x74850000 0x00010000
+oissq400.dll 0x74840000 0x00010000
+oitwa400.dll 0x74830000 0x00010000
+oiui400.dll 0x74820000 0x00010000
+oki24.dll 0x74800000 0x00020000
+oki9.dll 0x747f0000 0x00010000
+oki9ibm.dll 0x747d0000 0x00020000
+olepro32.dll 0x747a0000 0x00030000
+olidm24.dll 0x74790000 0x00010000
+olidm9.dll 0x74780000 0x00010000
+opengl32.dll 0x74660000 0x00120000
+optra.dll 0x74620000 0x00040000
+paintjet.dll 0x74610000 0x00010000
+panmap.dll 0x74600000 0x00010000
+panson24.dll 0x745f0000 0x00010000
+panson9.dll 0x745e0000 0x00010000
+pcl5ems.dll 0x74580000 0x00060000
+pcl5ms.dll 0x74520000 0x00060000
+perfctrs.dll 0x74500000 0x00020000
+perfnw.dll 0x744f0000 0x00010000
+pifmgr.dll 0x744e0000 0x00010000
+pjlmon.dll 0x744d0000 0x00010000
+plotter.dll 0x744b0000 0x00020000
+plotui.dll 0x74490000 0x00020000
+plustab.dll 0x74480000 0x00010000
+prflbmsg.dll 0x74470000 0x00010000
+profext.dll 0x74460000 0x00010000
+proprint.dll 0x74450000 0x00010000
+proprn24.dll 0x74440000 0x00010000
+ps1.dll 0x74430000 0x00010000
+psxdll.dll 0x74410000 0x00020000
+quietjet.dll 0x74400000 0x00010000
+qwiii.dll 0x743f0000 0x00010000
+rasadhlp.dll 0x743e0000 0x00010000
+rasadmin.dll 0x743d0000 0x00010000
+rasapi32.dll 0x74390000 0x00040000
+rasauto.dll 0x74360000 0x00030000
+rascauth.dll 0x74350000 0x00010000
+rascbcp.dll 0x74340000 0x00010000
+rasccp.dll 0x74330000 0x00010000
+rascfg.dll 0x742f0000 0x00040000
+raschap.dll 0x742e0000 0x00010000
+rasctrs.dll 0x742d0000 0x00010000
+rasdlg.dll 0x74240000 0x00090000
+rasfil32.dll 0x74230000 0x00010000
+rasgprxy.dll 0x74220000 0x00010000
+rasgtwy.dll 0x74210000 0x00010000
+rasipcp.dll 0x74200000 0x00010000
+rasiphlp.dll 0x741f0000 0x00010000
+rasipxcp.dll 0x741e0000 0x00010000
+rasman.dll 0x741c0000 0x00020000
+rasmsg.dll 0x741b0000 0x00010000
+rasmxs.dll 0x741a0000 0x00010000
+rasnbfcp.dll 0x74190000 0x00010000
+rasnbipc.dll 0x74180000 0x00010000
+raspap.dll 0x74170000 0x00010000
+raspppen.dll 0x74150000 0x00020000
+raspptpc.dll 0x74140000 0x00010000
+raspptpl.dll 0x74130000 0x00010000
+rassapi.dll 0x74120000 0x00010000
+rassauth.dll 0x74110000 0x00010000
+rasscrpt.dll 0x740f0000 0x00020000
+rasser.dll 0x740e0000 0x00010000
+rasshell.dll 0x740d0000 0x00010000
+rasspap.dll 0x740c0000 0x00010000
+rastapi.dll 0x740b0000 0x00010000
+relay.dll 0x740a0000 0x00010000
+riched20.dll 0x74020000 0x00080000
+riched32.dll 0x73fd0000 0x00050000
+rnal.dll 0x73fa0000 0x00030000
+rnr20.dll 0x73f80000 0x00020000
+routetab.dll 0x73f70000 0x00010000
+rpcltc8.dll 0x73f60000 0x00010000
+rpcltccm.dll 0x73f40000 0x00020000
+rpclts8.dll 0x73f30000 0x00010000
+rpcltscm.dll 0x73f10000 0x00020000
+rpcns4.dll 0x73f00000 0x00010000
+rshx32.dll 0x73ef0000 0x00010000
+samsrv.dll 0x73ea0000 0x00050000
+sccview.dll 0x73e90000 0x00010000
+schannel.dll 0x73e60000 0x00030000
+schnl128.dll 0x73e60000 0x00030000
+secbasic.dll 0x73e50000 0x00010000
+secsspi.dll 0x73e40000 0x00010000
+seiko.dll 0x73e30000 0x00010000
+seiko24e.dll 0x73e10000 0x00020000
+seikosh9.dll 0x73e00000 0x00010000
+serialui.dll 0x73df0000 0x00010000
+setupapi.dll 0x73d80000 0x00070000
+setupdll.dll 0x73ca0000 0x000e0000
+sfmapi.dll 0x73c90000 0x00010000
+sfmatcfg.dll 0x73c70000 0x00020000
+sfmatmsg.dll 0x73c60000 0x00010000
+sfmctrs.dll 0x73c50000 0x00010000
+sfmmon.dll 0x73c30000 0x00020000
+sfmmsg.dll 0x73c20000 0x00010000
+sfmpsdib.dll 0x73b30000 0x000f0000
+sfmpsfnt.dll 0x73b20000 0x00010000
+sfmpsprt.dll 0x73b10000 0x00010000
+sfmres.dll 0x73b00000 0x00010000
+sfmutil.dll 0x73af0000 0x00010000
+sfmwshat.dll 0x73ad0000 0x00020000
+shscrap.dll 0x73ac0000 0x00010000
+sidewndr.dll 0x73ab0000 0x00010000
+simptcp.dll 0x73aa0000 0x00010000
+skdll.dll 0x73a90000 0x00010000
+sndblst.dll 0x73a70000 0x00020000
+sndsys32.dll 0x73a50000 0x00020000
+snmpapi.dll 0x73a40000 0x00010000
+softpub.dll 0x73a00000 0x00040000
+spoolss.dll 0x739e0000 0x00020000
+srvsvc.dll 0x739b0000 0x00030000
+star24e.dll 0x73990000 0x00020000
+star9e.dll 0x73970000 0x00020000
+starjet.dll 0x73960000 0x00010000
+synceng.dll 0x73940000 0x00020000
+synth.dll 0x73930000 0x00010000
+syssetup.dll 0x738c0000 0x00070000
+t1instal.dll 0x73890000 0x00030000
+tapi32.dll 0x73850000 0x00040000
+tapiperf.dll 0x73840000 0x00010000
+tcpcfg.dll 0x73800000 0x00040000
+tga.dll 0x737e0000 0x00020000
+thinkjet.dll 0x737d0000 0x00010000
+ti850.dll 0x737c0000 0x00010000
+trace.dll 0x737b0000 0x00010000
+tsd32.dll 0x737a0000 0x00010000
+txtonly.dll 0x73790000 0x00010000
+ufat.dll 0x73760000 0x00030000
+ulib.dll 0x73730000 0x00030000
+umpnpmgr.dll 0x73700000 0x00030000
+untfs.dll 0x73680000 0x00080000
+ureg.dll 0x73670000 0x00010000
+userenv.dll 0x73650000 0x00020000
+vdmdbg.dll 0x73640000 0x00010000
+vsasc8.dll 0x73630000 0x00010000
+vsbmp.dll 0x73620000 0x00010000
+vsdrw.dll 0x73610000 0x00010000
+vsexe.dll 0x73600000 0x00010000
+vsexe2.dll 0x735f0000 0x00010000
+vsmp.dll 0x735e0000 0x00010000
+vsmsw.dll 0x735d0000 0x00010000
+vspp.dll 0x735c0000 0x00010000
+vsqp6.dll 0x735b0000 0x00010000
+vsrtf.dll 0x735a0000 0x00010000
+vstiff.dll 0x73590000 0x00010000
+vsw6.dll 0x73580000 0x00010000
+vswks.dll 0x73570000 0x00010000
+vswmf.dll 0x73560000 0x00010000
+vsword.dll 0x73540000 0x00020000
+vswork.dll 0x73530000 0x00010000
+vswp5.dll 0x73520000 0x00010000
+vswp6.dll 0x73510000 0x00010000
+vswpf.dll 0x73500000 0x00010000
+vsxl5.dll 0x734e0000 0x00020000
+vwipxspx.dll 0x734d0000 0x00010000
+wangcmn.dll 0x734b0000 0x00020000
+wangshl.dll 0x734a0000 0x00010000
+wd90c24a.dll 0x73490000 0x00010000
+wgpoadmn.dll 0x73470000 0x00020000
+win32spl.dll 0x73440000 0x00030000
+winprint.dll 0x73430000 0x00010000
+winsctrs.dll 0x73420000 0x00010000
+winsevnt.dll 0x73410000 0x00010000
+winsmib.dll 0x73400000 0x00010000
+winsrpc.dll 0x733f0000 0x00010000
+winstrm.dll 0x733e0000 0x00010000
+wintrust.dll 0x733d0000 0x00010000
+wkssvc.dll 0x733b0000 0x00020000
+wmsfr32.dll 0x73340000 0x00070000
+wmsui32.dll 0x73200000 0x00140000
+wowfax.dll 0x731f0000 0x00010000
+wowfaxui.dll 0x731e0000 0x00010000
+ws2map.dll 0x731d0000 0x00010000
+wshisn.dll 0x731c0000 0x00010000
+wshnetbs.dll 0x731b0000 0x00010000
+xactsrv.dll 0x73180000 0x00030000
+xeroxpcl.dll 0x73160000 0x00020000
+xfilexr.dll 0x73130000 0x00030000
+access.cpl 0x73110000 0x00020000
+appwiz.cpl 0x730f0000 0x00020000
+bhctrl.cpl 0x730e0000 0x00010000
+console.cpl 0x730c0000 0x00020000
+desk.cpl 0x73080000 0x00040000
+devapps.cpl 0x73020000 0x00060000
+inetcpl.cpl 0x73010000 0x00010000
+intl.cpl 0x72ff0000 0x00020000
+joy.cpl 0x72fd0000 0x00020000
+liccpa.cpl 0x72fb0000 0x00020000
+main.cpl 0x72f90000 0x00020000
+mlcfg32.cpl 0x72f70000 0x00020000
+mmsys.cpl 0x72f10000 0x00060000
+modem.cpl 0x72ee0000 0x00030000
+ncpa.cpl 0x72ea0000 0x00040000
+nwc.cpl 0x72e80000 0x00020000
+ports.cpl 0x72e70000 0x00010000
+rascpl.cpl 0x72e60000 0x00010000
+sfmmgr.cpl 0x72e30000 0x00030000
+srvmgr.cpl 0x72df0000 0x00040000
+sysdm.cpl 0x72dc0000 0x00030000
+telephon.cpl 0x72db0000 0x00010000
+timedate.cpl 0x72d90000 0x00020000
+ups.cpl 0x72d80000 0x00010000
+wgpocpl.cpl 0x72d70000 0x00010000
+msacm32.drv 0x72d60000 0x00010000
+ctl3d32.dll 0x72d40000 0x00020000
+lmmon.dll 0x72d30000 0x00010000
+mfc40d.dll 0x72ba0000 0x00190000
+mfc40ud.dll 0x72a10000 0x00190000
+mfc42d.dll 0x72870000 0x001a0000
+mfc42ud.dll 0x726d0000 0x001a0000
+mfcd40d.dll 0x72660000 0x00070000
+mfcd40ud.dll 0x725f0000 0x00070000
+mfcd42d.dll 0x72580000 0x00070000
+mfcd42ud.dll 0x72500000 0x00080000
+mfcn40d.dll 0x724e0000 0x00020000
+mfcn40ud.dll 0x724c0000 0x00020000
+mfcn42d.dll 0x724a0000 0x00020000
+mfcn42ud.dll 0x72480000 0x00020000
+mfco40d.dll 0x72360000 0x00120000
+mfco40ud.dll 0x72240000 0x00120000
+mfco42d.dll 0x720f0000 0x00150000
+mfco42ud.dll 0x71fa0000 0x00150000
+msvcirtd.dll 0x71f70000 0x00030000
+msvcr40d.dll 0x71f50000 0x00020000
+msvcrtd.dll 0x71eb0000 0x000a0000
+nddeexts.dll 0x71ea0000 0x00010000
+ntsdexts.dll 0x71e80000 0x00020000
+splexts.dll 0x71e60000 0x00020000
+ubnbmsg.dll 0x71e50000 0x00010000
+userexts.dll 0x71e20000 0x00030000
+vdmexts.dll 0x71df0000 0x00030000
+wshxns.dll 0x71de0000 0x00010000
+xnscfg.dll 0x71dd0000 0x00010000
+xnsmsg.dll 0x71dc0000 0x00010000
+afdkd.dll 0x71db0000 0x00010000
+cap.dll 0x71d90000 0x00020000
+dflayout.dll 0x71d70000 0x00020000
+dfskd.dll 0x71d60000 0x00010000
+dm.dll 0x71d30000 0x00030000
+dmkdalp.dll 0x71d00000 0x00030000
+dmkdmip.dll 0x71cd0000 0x00030000
+dmkdppc.dll 0x71c90000 0x00040000
+dmkdx86.dll 0x71c50000 0x00040000
+eecxxalp.dll 0x71c00000 0x00050000
+eecxxmip.dll 0x71bb0000 0x00050000
+eecxxppc.dll 0x71b60000 0x00050000
+eecxxx86.dll 0x71b10000 0x00050000
+emalp.dll 0x71af0000 0x00020000
+emmip.dll 0x71ad0000 0x00020000
+emppc.dll 0x71ab0000 0x00020000
+emx86.dll 0x71a90000 0x00020000
+fernel32.dll 0x71a70000 0x00020000
+filter.dll 0x71a60000 0x00010000
+gdikdx.dll 0x71a20000 0x00040000
+gutils.dll 0x71a00000 0x00020000
+hdxdll.dll 0x719f0000 0x00010000
+hook.dll 0x719e0000 0x00010000
+hwdll.dll 0x719c0000 0x00020000
+isnext.dll 0x71980000 0x00040000
+iviewers.dll 0x71940000 0x00040000
+justify.dll 0x71930000 0x00010000
+kdextalp.dll 0x718e0000 0x00050000
+kdextmip.dll 0x71890000 0x00050000
+kdextppc.dll 0x71840000 0x00050000
+kdextx86.dll 0x717f0000 0x00050000
+lineedit.dll 0x717e0000 0x00010000
+mhelp.dll 0x717d0000 0x00010000
+msafdext.dll 0x717c0000 0x00010000
+mshelp.dll 0x717b0000 0x00010000
+mspdb41.dll 0x71750000 0x00060000
+msvcbook.dll 0x71740000 0x00010000
+mupkd.dll 0x71730000 0x00010000
+pmatch.dll 0x71720000 0x00010000
+psapi.dll 0x71710000 0x00010000
+rcdll.dll 0x716c0000 0x00050000
+rdr2kd.dll 0x716b0000 0x00010000
+rdrkd.dll 0x716a0000 0x00010000
+shcv.dll 0x71680000 0x00020000
+srvkd.dll 0x71670000 0x00010000
+symcvt.dll 0x71660000 0x00010000
+testctrl.dll 0x71640000 0x00020000
+testdlgs.dll 0x71620000 0x00020000
+testevnt.dll 0x71610000 0x00010000
+testscrn.dll 0x715f0000 0x00020000
+testvw32.dll 0x715e0000 0x00010000
+tglcase.dll 0x715d0000 0x00010000
+tlloc.dll 0x715c0000 0x00010000
+tlpipe.dll 0x715b0000 0x00010000
+tlser.dll 0x715a0000 0x00010000
+ttkdx.dll 0x71590000 0x00010000
+ulcase.dll 0x71580000 0x00010000
+userkdx.dll 0x71540000 0x00040000
+ws1.dll 0x71530000 0x00010000
+wst.dll 0x71520000 0x00010000
+zdi32.dll 0x71510000 0x00010000
+zernel32.dll 0x714f0000 0x00020000
+zle32.dll 0x714e0000 0x00010000
+aboutwep.dll 0x714d0000 0x00010000
+advpack.dll 0x714b0000 0x00020000
+apidll.dll 0x71490000 0x00020000
+iodll.dll 0x71470000 0x00020000
+mepparty.dll 0x71460000 0x00010000
+nclipps.dll 0x71450000 0x00010000
+rasether.dll 0x71430000 0x00020000
+rcdata1.dll 0x71410000 0x00020000
+rtutils.dll 0x71400000 0x00010000
+rwinf.dll 0x713e0000 0x00020000
+rwmac.dll 0x713b0000 0x00030000
+rwres32.dll 0x71390000 0x00020000
+rwwin16.dll 0x71370000 0x00020000
+rwwin32.dll 0x71350000 0x00020000
+secedit.dll 0x71340000 0x00010000
+strmexts.dll 0x71330000 0x00010000
+tophook.dll 0x71320000 0x00010000
+winclip.dll 0x71310000 0x00010000
+zextens.dll 0x71300000 0x00010000
+actsrvd.dll 0x712f0000 0x00010000
+adptif.dll 0x712d0000 0x00020000
+atm.dll 0x712c0000 0x00010000
+atmdrvr.dll 0x71270000 0x00050000
+bhp001.dll 0x71240000 0x00030000
+bhp002.dll 0x71230000 0x00010000
+bhp003.dll 0x71220000 0x00010000
+bhp004.dll 0x71210000 0x00010000
+bhp005.dll 0x71200000 0x00010000
+bhp006.dll 0x711f0000 0x00010000
+bhp007.dll 0x711d0000 0x00020000
+bhp008.dll 0x711c0000 0x00010000
+bhp009.dll 0x71180000 0x00040000
+bhp010.dll 0x71170000 0x00010000
+bhp011.dll 0x71160000 0x00010000
+bhp012.dll 0x71140000 0x00020000
+bhp013.dll 0x71100000 0x00040000
+bhp014.dll 0x710f0000 0x00010000
+bhp015.dll 0x710b0000 0x00040000
+bhp016.dll 0x710a0000 0x00010000
+bhp017.dll 0x71090000 0x00010000
+bhp018.dll 0x71080000 0x00010000
+bhp019.dll 0x71030000 0x00050000
+bhp020.dll 0x71000000 0x00030000
+bhp021.dll 0x70fc0000 0x00040000
+bttncur.dll 0x70fa0000 0x00020000
+ciutil.dll 0x70f90000 0x00010000
+comcat.dll 0x70f80000 0x00010000
+ddm.dll 0x70f60000 0x00020000
+dfsprov.dll 0x70f50000 0x00010000
+dim.dll 0x70f30000 0x00020000
+espui.dll 0x70f20000 0x00010000
+fastimer.dll 0x70f00000 0x00020000
+friendly.dll 0x70ef0000 0x00010000
+gizmobar.dll 0x70ed0000 0x00020000
+goober.dll 0x70ec0000 0x00010000
+hexedit.dll 0x70eb0000 0x00010000
+htrn_jis.dll 0x70ea0000 0x00010000
+ifadmin.dll 0x70e80000 0x00020000
+imaadp32.dll 0x70e70000 0x00010000
+ipadmin.dll 0x70df0000 0x00080000
+ipbootp.dll 0x70de0000 0x00010000
+ipmon.dll 0x70dc0000 0x00020000
+iprip2.dll 0x70da0000 0x00020000
+iprtprio.dll 0x70d90000 0x00010000
+iprtrmgr.dll 0x70d50000 0x00040000
+ipxadmin.dll 0x70d20000 0x00030000
+ipxmon.dll 0x70cf0000 0x00030000
+ipxrip.dll 0x70ce0000 0x00010000
+ipxrtmgr.dll 0x70cc0000 0x00020000
+ipxsap.dll 0x70c90000 0x00030000
+ipxwan.dll 0x70c80000 0x00010000
+joystick.dll 0x70c70000 0x00010000
+lprext.dll 0x70c60000 0x00010000
+mib2util.dll 0x70c50000 0x00010000
+mpradmin.dll 0x70c30000 0x00020000
+msadp32.dll 0x70c20000 0x00010000
+msg711.dll 0x70c10000 0x00010000
+msgsm32.dll 0x70c00000 0x00010000
+ndrd.dll 0x70bf0000 0x00010000
+nmapi.dll 0x70bd0000 0x00020000
+ntprinta.dll 0x70bc0000 0x00010000
+ole2u32a.dll 0x70b80000 0x00040000
+oleat.dll 0x70b70000 0x00010000
+olebt.dll 0x70b60000 0x00010000
+oledll2.dll 0x70b50000 0x00010000
+oleimpl.dll 0x70b40000 0x00010000
+olest.dll 0x70b30000 0x00010000
+ospf.dll 0x70b00000 0x00030000
+ospfmib.dll 0x70ae0000 0x00020000
+parser.dll 0x70ad0000 0x00010000
+pctsspi.dll 0x70ab0000 0x00020000
+pdh.dll 0x70a90000 0x00020000
+printuia.dll 0x70a40000 0x00050000
+rcauth.dll 0x70a30000 0x00010000
+rgprxy.dll 0x70a20000 0x00010000
+ripcp.dll 0x70a10000 0x00010000
+riphlp.dll 0x70a00000 0x00010000
+routemsg.dll 0x709f0000 0x00010000
+rpcdce4.dll 0x709e0000 0x00010000
+rpcltc5.dll 0x709d0000 0x00010000
+rrasgtwy.dll 0x709c0000 0x00010000
+rrasipx.dll 0x709b0000 0x00010000
+rrasman.dll 0x70990000 0x00020000
+rrasnbf.dll 0x70980000 0x00010000
+rrasppp.dll 0x70960000 0x00020000
+rsauth.dll 0x70950000 0x00010000
+rtm.dll 0x70940000 0x00010000
+sampfilt.dll 0x70930000 0x00010000
+shareui.dll 0x70910000 0x00020000
+shellalt.dll 0x70760000 0x001b0000
+slbs.dll 0x70740000 0x00020000
+splx.dll 0x70720000 0x00020000
+toolbar.dll 0x70710000 0x00010000
+tp4cfg.dll 0x70700000 0x00010000
+tssoft32.dll 0x706f0000 0x00010000
+urlcache.dll 0x706e0000 0x00010000
+winsdb.dll 0x706d0000 0x00010000
+wshisotp.dll 0x706c0000 0x00010000
+whacm32.dll 0x70000000 0x00010000
+whavicap.dll 0x70010000 0x00010000
+whavifil.dll 0x70020000 0x00010000
+whddeapi.dll 0x70030000 0x00010000
+whddraw.dll 0x70040000 0x00010000
+whdplay.dll 0x70050000 0x00010000
+whdsnd.dll 0x70060000 0x00010000
+whftsrch.dll 0x70070000 0x00010000
+whglu32.dll 0x70080000 0x00010000
+whimghlp.dll 0x70090000 0x00010000
+whmapi32.dll 0x700a0000 0x00010000
+whmsafd.dll 0x700b0000 0x00010000
+whmssock.dll 0x700c0000 0x00010000
+whnetapi.dll 0x700d0000 0x00010000
+whrasapi.dll 0x700e0000 0x00010000
+whrasdlg.dll 0x700f0000 0x00010000
+whrassap.dll 0x70100000 0x00010000
+whrpcns4.dll 0x70110000 0x00010000
+whrpcrt4.dll 0x70120000 0x00020000
+whtapi32.dll 0x70140000 0x00010000
+whvfw32.dll 0x70150000 0x00010000
+whws2_32.dll 0x70160000 0x00010000
+wiacm32.dll 0x70170000 0x00010000
+wiavicap.dll 0x70180000 0x00010000
+wiavifil.dll 0x70190000 0x00010000
+wicfgmgr.dll 0x701a0000 0x00020000
+wictl3d.dll 0x701c0000 0x00020000
+widdeapi.dll 0x701e0000 0x00010000
+widdraw.dll 0x701f0000 0x00010000
+widplay.dll 0x70200000 0x00010000
+widsnd.dll 0x70210000 0x00010000
+wiftsrch.dll 0x70220000 0x00010000
+wiglu32.dll 0x70230000 0x00010000
+wiimghlp.dll 0x70240000 0x00010000
+wimapi32.dll 0x70250000 0x00010000
+wimfc40.dll 0x70260000 0x000f0000
+wimfc40u.dll 0x70350000 0x000f0000
+wimfc42.dll 0x70440000 0x00100000
+wimfc42u.dll 0x70540000 0x00100000
+wimsafd.dll 0x70640000 0x00010000
+wimsjt30.dll 0x70650000 0x00110000
+wimssock.dll 0x70760000 0x00010000
+winetapi.dll 0x70770000 0x00010000
+wiodbcjt.dll 0x70780000 0x00040000
+wiolecli.dll 0x707c0000 0x00020000
+wiolesvr.dll 0x707e0000 0x00010000
+wirasapi.dll 0x707f0000 0x00010000
+wirasdlg.dll 0x70800000 0x00010000
+wirassap.dll 0x70810000 0x00010000
+wirpcns4.dll 0x70820000 0x00010000
+wirpcrt4.dll 0x70830000 0x00030000
+wisetupa.dll 0x70860000 0x00050000
+witapi32.dll 0x708b0000 0x00010000
+wivcirt.dll 0x708c0000 0x00020000
+wivcrt20.dll 0x708e0000 0x00050000
+wivfw32.dll 0x70930000 0x00010000
+wiwmsui.dll 0x70940000 0x000d0000
+wiws2_32.dll 0x70a10000 0x00010000
+addgrpw.exe 0x01000000 0x00030000
+addusrw.exe 0x01030000 0x00040000
+arp.exe 0x01070000 0x00010000
+at.exe 0x01080000 0x00010000
+atsvc.exe 0x01090000 0x00010000
+attrib.exe 0x010a0000 0x00020000
+autochk.exe 0x010c0000 0x000b0000
+autoconv.exe 0x01170000 0x000c0000
+autolfn.exe 0x01230000 0x00010000
+autorun.exe 0x01240000 0x000b0000
+bootok.exe 0x012f0000 0x00020000
+bootvrfy.exe 0x01310000 0x00010000
+cacls.exe 0x01320000 0x00020000
+calc.exe 0x01340000 0x00030000
+cdplayer.exe 0x01370000 0x00030000
+charmap.exe 0x013a0000 0x00020000
+chkdsk.exe 0x013c0000 0x00020000
+cifilter.exe 0x013e0000 0x00010000
+clipbrd.exe 0x013f0000 0x00040000
+clipsrv.exe 0x01430000 0x00020000
+clock.exe 0x01450000 0x00020000
+cmd.exe 0x01470000 0x00060000
+comp.exe 0x014d0000 0x00020000
+compact.exe 0x014f0000 0x00020000
+control.exe 0x01510000 0x00010000
+convert.exe 0x01520000 0x00020000
+dcomcnfg.exe 0x01540000 0x00030000
+ddeshare.exe 0x01570000 0x00010000
+ddhelp.exe 0x01580000 0x00010000
+dhcpadmn.exe 0x01590000 0x00070000
+dialer.exe 0x01600000 0x00020000
+diskperf.exe 0x01620000 0x00020000
+dns.exe 0x01640000 0x00030000
+dnsadmin.exe 0x01670000 0x00040000
+doskey.exe 0x016b0000 0x00020000
+drwtsn32.exe 0x016d0000 0x00020000
+eventvwr.exe 0x016f0000 0x00030000
+excfg32.exe 0x01720000 0x00010000
+exchng32.exe 0x01730000 0x00010000
+expand.exe 0x01740000 0x00020000
+explorer.exe 0x01760000 0x00060000
+fc.exe 0x017c0000 0x00020000
+find.exe 0x017e0000 0x00020000
+findstr.exe 0x01800000 0x00010000
+finger.exe 0x01810000 0x00010000
+fontview.exe 0x01820000 0x00020000
+forcedos.exe 0x01840000 0x00010000
+freecell.exe 0x01850000 0x00020000
+ftp.exe 0x01870000 0x00020000
+grpconv.exe 0x01890000 0x00020000
+help.exe 0x018b0000 0x00020000
+hostname.exe 0x018d0000 0x00010000
+hypertrm.exe 0x018e0000 0x00010000
+iexplore.exe 0x018f0000 0x00120000
+inetins.exe 0x01a10000 0x00010000
+internat.exe 0x01a20000 0x00010000
+ipconfig.exe 0x01a30000 0x00010000
+ipxroute.exe 0x01a40000 0x00010000
+jetconv.exe 0x01a50000 0x00020000
+jetpack.exe 0x01a70000 0x00010000
+kbdsel.exe 0x01a80000 0x00020000
+label.exe 0x01aa0000 0x00020000
+lcwiz.exe 0x01ac0000 0x00020000
+lights.exe 0x01ae0000 0x00010000
+llsmgr.exe 0x01af0000 0x00060000
+llssrv.exe 0x01b50000 0x00040000
+lmrepl.exe 0x01b90000 0x00030000
+locator.exe 0x01bc0000 0x00040000
+lodctr.exe 0x01c00000 0x00010000
+logview.exe 0x01c10000 0x00020000
+lpq.exe 0x01c30000 0x00010000
+lpr.exe 0x01c40000 0x00010000
+lsass.exe 0x01c50000 0x00010000
+macfile.exe 0x01c60000 0x00020000
+mapisp32.exe 0x01c80000 0x00010000
+mapisrvr.exe 0x01c90000 0x00010000
+mdisp32.exe 0x01ca0000 0x00020000
+mlset32.exe 0x01cc0000 0x00010000
+mplay32.exe 0x01cd0000 0x00040000
+mpnotify.exe 0x01d10000 0x00010000
+mspaint.exe 0x01d20000 0x00090000
+musrmgr.exe 0x01db0000 0x00060000
+nbtstat.exe 0x01e10000 0x00010000
+ncadmin.exe 0x01e20000 0x00060000
+nddeagnt.exe 0x01e80000 0x00010000
+nddeapir.exe 0x01e90000 0x00010000
+net.exe 0x01ea0000 0x00030000
+net1.exe 0x01ed0000 0x00050000
+netdde.exe 0x01f20000 0x00040000
+netstat.exe 0x01f60000 0x00010000
+nmagent.exe 0x01f70000 0x00010000
+notepad.exe 0x01f80000 0x00020000
+nslookup.exe 0x01fa0000 0x00020000
+ntbackup.exe 0x01fc0000 0x00130000
+ntbooks.exe 0x020f0000 0x00020000
+nwconv.exe 0x02110000 0x00080000
+nwscript.exe 0x02190000 0x00040000
+packager.exe 0x021d0000 0x00030000
+pax.exe 0x02200000 0x00020000
+pbrush.exe 0x02220000 0x00010000
+perfmon.exe 0x02230000 0x00050000
+pinball.exe 0x02280000 0x00090000
+ping.exe 0x02310000 0x00010000
+poledit.exe 0x02320000 0x00030000
+polsetup.exe 0x02350000 0x00010000
+portuas.exe 0x02360000 0x00010000
+posix.exe 0x02370000 0x00020000
+print.exe 0x02390000 0x00020000
+progman.exe 0x023b0000 0x00050000
+psxss.exe 0x02400000 0x00040000
+quikview.exe 0x02440000 0x00020000
+rasadmin.exe 0x02460000 0x00030000
+rasautou.exe 0x02490000 0x00010000
+rasdial.exe 0x024a0000 0x00010000
+rasman.exe 0x024b0000 0x00010000
+rasmon.exe 0x024c0000 0x00040000
+rasphone.exe 0x02500000 0x00020000
+rassprxy.exe 0x02520000 0x00010000
+rassrv.exe 0x02530000 0x00020000
+rcp.exe 0x02550000 0x00010000
+rdisk.exe 0x02560000 0x00040000
+recover.exe 0x025a0000 0x00010000
+regedit.exe 0x025b0000 0x00030000
+regedt32.exe 0x025e0000 0x00060000
+replace.exe 0x02640000 0x00020000
+restore.exe 0x02660000 0x00020000
+rexec.exe 0x02680000 0x00010000
+ripstat.exe 0x02690000 0x00010000
+route.exe 0x026a0000 0x00010000
+router.exe 0x026b0000 0x00010000
+rpcss.exe 0x026c0000 0x00030000
+rplcmd.exe 0x026f0000 0x00020000
+rplcnv.exe 0x02710000 0x00010000
+rplmgr.exe 0x02720000 0x00030000
+rplsvc.exe 0x02750000 0x00030000
+rsh.exe 0x02780000 0x00010000
+rundll32.exe 0x02790000 0x00010000
+runonce.exe 0x027a0000 0x00010000
+savedump.exe 0x027b0000 0x00020000
+scanpst.exe 0x027d0000 0x00070000
+services.exe 0x02840000 0x00040000
+setup.exe 0x02880000 0x00010000
+sfmprint.exe 0x02890000 0x00030000
+sfmpsexe.exe 0x028c0000 0x00010000
+sfmreg.exe 0x028d0000 0x00010000
+sfmsvc.exe 0x028e0000 0x00030000
+shmgrate.exe 0x02910000 0x00020000
+shrpubw.exe 0x02930000 0x00040000
+skeys.exe 0x02970000 0x00020000
+smss.exe 0x02990000 0x00020000
+sndrec32.exe 0x029b0000 0x00040000
+sndvol32.exe 0x029f0000 0x00020000
+snmp.exe 0x02a10000 0x00010000
+snmptrap.exe 0x02a20000 0x00010000
+sol.exe 0x02a30000 0x00020000
+sort.exe 0x02a50000 0x00010000
+spinit.exe 0x02a60000 0x00010000
+spoolss.exe 0x02a70000 0x00020000
+sprestrt.exe 0x02a90000 0x00020000
+srvmgr.exe 0x02ab0000 0x00050000
+subst.exe 0x02b00000 0x00020000
+syncapp.exe 0x02b20000 0x00020000
+systray.exe 0x02b40000 0x00010000
+tapisrv.exe 0x02b50000 0x00030000
+taskman.exe 0x02b80000 0x00020000
+taskmgr.exe 0x02ba0000 0x00020000
+tcpsvcs.exe 0x02bc0000 0x00010000
+telnet.exe 0x02bd0000 0x00030000
+tftp.exe 0x02c00000 0x00010000
+tracert.exe 0x02c10000 0x00010000
+unlodctr.exe 0x02c20000 0x00010000
+upg351db.exe 0x02c30000 0x00110000
+ups.exe 0x02d40000 0x00010000
+userinit.exe 0x02d50000 0x00010000
+usetup.exe 0x02d60000 0x00020000
+usrmgr.exe 0x02d80000 0x00070000
+wangimg.exe 0x02df0000 0x000a0000
+welcome.exe 0x02e90000 0x00010000
+winchat.exe 0x02ea0000 0x00020000
+windisk.exe 0x02ec0000 0x00050000
+winfile.exe 0x02f10000 0x00080000
+winhlp32.exe 0x02f90000 0x00090000
+winhstb.exe 0x03020000 0x00010000
+winlogon.exe 0x03030000 0x00040000
+winmine.exe 0x03070000 0x00010000
+winmsd.exe 0x03080000 0x00040000
+wins.exe 0x030c0000 0x00070000
+winsadmn.exe 0x03130000 0x00070000
+winver.exe 0x031a0000 0x00010000
+wizmgr.exe 0x031b0000 0x00020000
+wordpad.exe 0x031d0000 0x00050000
+write.exe 0x03220000 0x00010000
+xcopy.exe 0x03230000 0x00020000
+mcsxnsvc.exe 0x03250000 0x00010000
+ntsd.exe 0x03260000 0x00090000
+rcmd.exe 0x032f0000 0x00010000
+rcmdsvc.exe 0x03300000 0x00010000
+ubnbsvc.exe 0x03310000 0x00010000
+alphakd.exe 0x03320000 0x00040000
+apf32cvt.exe 0x03360000 0x00020000
+apf32dmp.exe 0x03380000 0x00010000
+c1.exe 0x03390000 0x000a0000
+c1xx.exe 0x03430000 0x00120000
+c2.exe 0x03550000 0x00190000
+capdump.exe 0x036e0000 0x00020000
+capsetup.exe 0x03700000 0x00020000
+cl.exe 0x03720000 0x00020000
+compress.exe 0x03740000 0x000a0000
+contents.exe 0x037e0000 0x00010000
+cvdump.exe 0x037f0000 0x00040000
+cvpack.exe 0x03830000 0x00030000
+cvtres.exe 0x03860000 0x00010000
+ddespy.exe 0x03870000 0x00020000
+dflayout.exe 0x03890000 0x00020000
+dfview.exe 0x038b0000 0x00010000
+dlgedit.exe 0x038c0000 0x00050000
+dobjview.exe 0x03910000 0x00020000
+drivers.exe 0x03930000 0x00020000
+fontedit.exe 0x03950000 0x00030000
+hcrtf.exe 0x03980000 0x00080000
+hcw.exe 0x03a00000 0x00090000
+i386kd.exe 0x03a90000 0x00040000
+imagedit.exe 0x03ad0000 0x00030000
+irotview.exe 0x03b00000 0x00020000
+lib.exe 0x03b20000 0x00010000
+link.exe 0x03b30000 0x000e0000
+link32.exe 0x03c10000 0x00010000
+lookmon.exe 0x03c20000 0x00040000
+makeani.exe 0x03c60000 0x00020000
+masm386.exe 0x03c80000 0x00050000
+mc.exe 0x03cd0000 0x00030000
+mep.exe 0x03d00000 0x00060000
+mibcc.exe 0x03d60000 0x00020000
+midl.exe 0x03d80000 0x00110000
+mipskd.exe 0x03e90000 0x00040000
+mktyplib.exe 0x03ed0000 0x00030000
+nmake.exe 0x03f00000 0x00020000
+oleview.exe 0x03f20000 0x00040000
+perfmtr.exe 0x03f60000 0x00020000
+pfmon.exe 0x03f80000 0x00030000
+pmon.exe 0x03fb0000 0x00020000
+poolmon.exe 0x03fd0000 0x00040000
+ppckd.exe 0x04010000 0x00050000
+profile.exe 0x04060000 0x00020000
+pstat.exe 0x04080000 0x00020000
+pview.exe 0x040a0000 0x00030000
+pviewer.exe 0x040d0000 0x00020000
+rc.exe 0x040f0000 0x00020000
+rebase.exe 0x04110000 0x00020000
+rlman.exe 0x04130000 0x00040000
+rm.exe 0x04170000 0x00020000
+sc.exe 0x04190000 0x00020000
+smashlck.exe 0x041b0000 0x00020000
+spy.exe 0x041d0000 0x00020000
+symedit.exe 0x041f0000 0x00010000
+testdlgs.exe 0x04200000 0x00020000
+testdrvr.exe 0x04220000 0x00060000
+testscrn.exe 0x04280000 0x00020000
+top.exe 0x042a0000 0x00040000
+undel.exe 0x042e0000 0x00020000
+undname.exe 0x04300000 0x00020000
+uuidgen.exe 0x04320000 0x00020000
+vadump.exe 0x04340000 0x01030000
+vdmperf.exe 0x05370000 0x00020000
+verfix.exe 0x05390000 0x00020000
+vidcap32.exe 0x053b0000 0x00030000
+windbg.exe 0x053e0000 0x00300000
+windbgrm.exe 0x056e0000 0x00010000
+windiff.exe 0x056f0000 0x00030000
+wperf.exe 0x05720000 0x00030000
+wstcat.exe 0x05750000 0x00020000
+wstdump.exe 0x05770000 0x00020000
+wstune.exe 0x05790000 0x00020000
+zoomin.exe 0x057b0000 0x00010000
+zwapi.exe 0x057c0000 0x00020000
+access.exe 0x057e0000 0x00020000
+acllist.exe 0x05800000 0x00010000
+addfile.exe 0x05810000 0x00010000
+addproj.exe 0x05820000 0x00010000
+adduser.exe 0x05830000 0x00020000
+alias.exe 0x05850000 0x00020000
+aniedit.exe 0x05870000 0x00020000
+apimon.exe 0x05890000 0x00070000
+applyinf.exe 0x05900000 0x00020000
+autowrap.exe 0x05920000 0x00020000
+basewin.exe 0x05940000 0x00020000
+beep.exe 0x05960000 0x00020000
+bin2c.exe 0x05980000 0x00020000
+bind.exe 0x059a0000 0x00020000
+bingen.exe 0x059c0000 0x00020000
+binplace.exe 0x059e0000 0x00020000
+bintrack.exe 0x05a00000 0x00020000
+browdeb.exe 0x05a20000 0x00020000
+browmon.exe 0x05a40000 0x00020000
+browse.exe 0x05a60000 0x00010000
+browstat.exe 0x05a70000 0x00020000
+bugboard.exe 0x05a90000 0x00010000
+build.exe 0x05aa0000 0x00050000
+buildnum.exe 0x05af0000 0x00020000
+cat.exe 0x05b10000 0x00020000
+cats.exe 0x05b30000 0x00010000
+catsrc.exe 0x05b40000 0x00010000
+cdb.exe 0x05b50000 0x00090000
+cdp.exe 0x05be0000 0x00020000
+certify.exe 0x05c00000 0x00020000
+checkfix.exe 0x05c20000 0x00020000
+checkrel.exe 0x05c40000 0x00030000
+chkalive.exe 0x05c70000 0x00020000
+chksum.exe 0x05c90000 0x00020000
+chkverfy.exe 0x05cb0000 0x00020000
+chmode.exe 0x05cd0000 0x00020000
+choice.exe 0x05cf0000 0x00020000
+ciscan.exe 0x05d10000 0x00010000
+cmdevent.exe 0x05d20000 0x00020000
+cmpver.exe 0x05d40000 0x00010000
+compdir.exe 0x05d50000 0x00020000
+connect.exe 0x05d70000 0x000a0000
+cookie.exe 0x05e10000 0x00020000
+cp.exe 0x05e30000 0x00020000
+crash.exe 0x05e50000 0x00020000
+cruel.exe 0x05e70000 0x00010000
+curridw.exe 0x05e80000 0x00020000
+dbgdump.exe 0x05ea0000 0x00020000
+dbmon.exe 0x05ec0000 0x00010000
+dbwin32.exe 0x05ed0000 0x00010000
+dcomp.exe 0x05ee0000 0x00030000
+dconnect.exe 0x05f10000 0x000a0000
+defect.exe 0x05fb0000 0x00010000
+delfile.exe 0x05fc0000 0x00010000
+delnode.exe 0x05fd0000 0x00020000
+delprof.exe 0x05ff0000 0x00020000
+delproj.exe 0x06010000 0x00010000
+devpre.exe 0x06020000 0x00010000
+dh.exe 0x06030000 0x00020000
+dhcpcli.exe 0x06050000 0x00010000
+dhcpcmd.exe 0x06060000 0x00010000
+dhcpins.exe 0x06070000 0x00010000
+dhcploc.exe 0x06080000 0x00010000
+dhcptst.exe 0x06090000 0x00010000
+diamond.exe 0x060a0000 0x000b0000
+diamwrap.exe 0x06150000 0x00020000
+diff.exe 0x06170000 0x00020000
+diruse.exe 0x06190000 0x00020000
+diskedit.exe 0x061b0000 0x00040000
+diskmon.exe 0x061f0000 0x00020000
+dommon.exe 0x06210000 0x00020000
+dosdev.exe 0x06230000 0x00020000
+drivemap.exe 0x06250000 0x00020000
+dskbench.exe 0x06270000 0x00020000
+dskimage.exe 0x06290000 0x00020000
+du.exe 0x062b0000 0x00020000
+dumpchk.exe 0x062d0000 0x00020000
+dumpexam.exe 0x062f0000 0x00030000
+dumpflop.exe 0x06320000 0x00020000
+dumpgrp.exe 0x06340000 0x00020000
+dumpref.exe 0x06360000 0x00020000
+ech.exe 0x06380000 0x00020000
+echotime.exe 0x063a0000 0x00020000
+editreg.exe 0x063c0000 0x00020000
+editsym.exe 0x063e0000 0x00020000
+enlist.exe 0x06400000 0x00010000
+ethstat.exe 0x06410000 0x00020000
+exctrlst.exe 0x06430000 0x00010000
+execmail.exe 0x06440000 0x00010000
+exp.exe 0x06450000 0x00020000
+extag.exe 0x06470000 0x00020000
+fcom.exe 0x06490000 0x00020000
+files.exe 0x064b0000 0x00180000
+filever.exe 0x06630000 0x00020000
+filter.exe 0x06650000 0x00010000
+fix31grp.exe 0x06660000 0x00020000
+fixdiff.exe 0x06680000 0x00020000
+fixlinks.exe 0x066a0000 0x00020000
+floplock.exe 0x066c0000 0x000a0000
+forceflt.exe 0x06760000 0x00010000
+forcemrg.exe 0x06770000 0x00010000
+gensrv.exe 0x06780000 0x00020000
+getbin.exe 0x067a0000 0x00020000
+getdbg.exe 0x067c0000 0x00030000
+gflags.exe 0x067f0000 0x00020000
+golf.exe 0x06810000 0x00010000
+grptoreg.exe 0x06820000 0x00020000
+guidlib.exe 0x06840000 0x00020000
+hd.exe 0x06860000 0x00020000
+he.exe 0x06880000 0x00020000
+head.exe 0x068a0000 0x00020000
+heapmon.exe 0x068c0000 0x00020000
+hextract.exe 0x068e0000 0x00020000
+hsplit.exe 0x06900000 0x00020000
+iexpress.exe 0x06920000 0x00040000
+imagecfg.exe 0x06960000 0x00020000
+imagechk.exe 0x06980000 0x00020000
+in.exe 0x069a0000 0x00010000
+infs.exe 0x069b0000 0x00010000
+infsize.exe 0x069c0000 0x00010000
+ini.exe 0x069d0000 0x00020000
+instsrv.exe 0x069f0000 0x000a0000
+kbdtool.exe 0x06a90000 0x00020000
+kernprof.exe 0x06ab0000 0x00010000
+kernrate.exe 0x06ac0000 0x00010000
+kerntwk.exe 0x06ad0000 0x00020000
+kill.exe 0x06af0000 0x00020000
+layout.exe 0x06b10000 0x00010000
+links.exe 0x06b20000 0x00020000
+list.exe 0x06b40000 0x00030000
+listmung.exe 0x06b70000 0x00020000
+llscmd.exe 0x06b90000 0x00010000
+llsdbg.exe 0x06ba0000 0x00010000
+lnkdump.exe 0x06bb0000 0x00020000
+loc.exe 0x06bd0000 0x00020000
+local.exe 0x06bf0000 0x00010000
+log.exe 0x06c00000 0x00010000
+ls.exe 0x06c10000 0x00020000
+makedisk.exe 0x06c30000 0x00010000
+mapmsg.exe 0x06c40000 0x00020000
+mbytes.exe 0x06c60000 0x00030000
+mcpyfile.exe 0x06c90000 0x00010000
+merge.exe 0x06ca0000 0x00030000
+midleb.exe 0x06cd0000 0x00020000
+midlpg.exe 0x06cf0000 0x00020000
+midlyacc.exe 0x06d10000 0x00060000
+mlayout.exe 0x06d70000 0x000c0000
+mrc.exe 0x06e30000 0x00020000
+msize.exe 0x06e50000 0x00010000
+mtc.exe 0x06e60000 0x00010000
+mttf.exe 0x06e70000 0x00020000
+mttfvwr.exe 0x06e90000 0x00020000
+munge.exe 0x06eb0000 0x00020000
+mv.exe 0x06ed0000 0x00020000
+netclip.exe 0x06ef0000 0x00030000
+netjoin.exe 0x06f20000 0x00020000
+netperm.exe 0x06f40000 0x00020000
+netwatch.exe 0x06f60000 0x00020000
+nlmon.exe 0x06f80000 0x00010000
+nltest.exe 0x06f90000 0x00030000
+ntimer.exe 0x06fc0000 0x00020000
+nvram.exe 0x06fe0000 0x00020000
+objdir.exe 0x07000000 0x00020000
+objmon.exe 0x07020000 0x00030000
+oeminf.exe 0x07050000 0x00010000
+order.exe 0x07060000 0x00020000
+out.exe 0x07080000 0x00010000
+paranoia.exe 0x07090000 0x00030000
+parcomp.exe 0x070c0000 0x00020000
+parsync.exe 0x070e0000 0x00020000
+passprop.exe 0x07100000 0x00010000
+pcall.exe 0x07110000 0x00020000
+pcmcmd.exe 0x07130000 0x00020000
+pdump.exe 0x07150000 0x00020000
+pegged.exe 0x07170000 0x00010000
+perms.exe 0x07180000 0x000a0000
+pperf.exe 0x07220000 0x00030000
+ppr.exe 0x07250000 0x00030000
+pretty.exe 0x07280000 0x00020000
+prodfilt.exe 0x072a0000 0x00020000
+psxhello.exe 0x072c0000 0x00010000
+qgrep.exe 0x072d0000 0x00030000
+qslice.exe 0x07300000 0x00070000
+quickrun.exe 0x07370000 0x00020000
+random.exe 0x07390000 0x00020000
+rathole.exe 0x073b0000 0x00010000
+rcdump.exe 0x073c0000 0x00010000
+rcpp.exe 0x073d0000 0x00030000
+readline.exe 0x07400000 0x00020000
+regback.exe 0x07420000 0x00040000
+regdir.exe 0x07460000 0x00020000
+regdmp.exe 0x07480000 0x00020000
+regfind.exe 0x074a0000 0x00020000
+regini.exe 0x074c0000 0x00020000
+regtogrp.exe 0x074e0000 0x00020000
+remote.exe 0x07500000 0x00020000
+repair.exe 0x07520000 0x000c0000
+rescan.exe 0x075e0000 0x00020000
+resmon.exe 0x07600000 0x00030000
+reversi.exe 0x07630000 0x00010000
+rollback.exe 0x07640000 0x00010000
+roshare.exe 0x07650000 0x00020000
+sadmin.exe 0x07670000 0x00050000
+sclist.exe 0x076c0000 0x00020000
+scomp.exe 0x076e0000 0x00010000
+secedit.exe 0x076f0000 0x00020000
+seclist.exe 0x07710000 0x00020000
+setlink.exe 0x07730000 0x00020000
+showperf.exe 0x07750000 0x00020000
+shutdown.exe 0x07770000 0x00010000
+simbad.exe 0x07780000 0x00020000
+size.exe 0x077a0000 0x00010000
+sleep.exe 0x077b0000 0x00020000
+slm.exe 0x077d0000 0x00060000
+slmck.exe 0x07830000 0x00040000
+slmdiff.exe 0x07870000 0x00020000
+slmed.exe 0x07890000 0x00050000
+smbtrace.exe 0x078e0000 0x00030000
+snake.exe 0x07910000 0x00010000
+snmputil.exe 0x07920000 0x00010000
+solidpp.exe 0x07930000 0x00020000
+splinfo.exe 0x07950000 0x00010000
+splitsym.exe 0x07960000 0x00020000
+srch.exe 0x07980000 0x00040000
+srvname.exe 0x079c0000 0x00020000
+ssptest.exe 0x079e0000 0x00010000
+ssync.exe 0x079f0000 0x00010000
+startpgm.exe 0x07a00000 0x00020000
+status.exe 0x07a20000 0x00010000
+strings.exe 0x07a30000 0x00020000
+stripcv.exe 0x07a50000 0x00020000
+stripinf.exe 0x07a70000 0x00010000
+strmdbg.exe 0x07a80000 0x00010000
+structo.exe 0x07a90000 0x00020000
+suck.exe 0x07ab0000 0x00020000
+switcher.exe 0x07ad0000 0x00010000
+sync.exe 0x07ae0000 0x00020000
+sysdiff.exe 0x07b00000 0x00020000
+tail.exe 0x07b20000 0x00020000
+taipei.exe 0x07b40000 0x00020000
+takeown.exe 0x07b60000 0x00020000
+tc.exe 0x07b80000 0x00020000
+tee.exe 0x07ba0000 0x00020000
+tictac.exe 0x07bc0000 0x00010000
+tile.exe 0x07bd0000 0x00010000
+timeit.exe 0x07be0000 0x00020000
+timer.exe 0x07c00000 0x00020000
+tlist.exe 0x07c20000 0x00020000
+topdesk.exe 0x07c40000 0x00080000
+touch.exe 0x07cc0000 0x00020000
+tpdiff.exe 0x07ce0000 0x00020000
+trans.exe 0x07d00000 0x00020000
+tz.exe 0x07d20000 0x00020000
+uixport.exe 0x07d40000 0x00020000
+units.exe 0x07d60000 0x00010000
+unmerge.exe 0x07d70000 0x00020000
+upd.exe 0x07d90000 0x00020000
+upddbg.exe 0x07db0000 0x00020000
+updrn.exe 0x07dd0000 0x00020000
+vdesk.exe 0x07df0000 0x00010000
+vi.exe 0x07e00000 0x00030000
+walk.exe 0x07e30000 0x00020000
+wc.exe 0x07e50000 0x00020000
+wcshdr.exe 0x07e70000 0x00020000
+wextract.exe 0x07e90000 0x00030000
+whatis.exe 0x07ec0000 0x00090000
+where.exe 0x07f50000 0x00020000
+winat.exe 0x07f70000 0x00020000
+winobj.exe 0x07f90000 0x00050000
+winschk.exe 0x07fe0000 0x00ba0000
+winscl.exe 0x08b80000 0x00010000
+winsdrv.exe 0x08b90000 0x00010000
+winvtp.exe 0x08ba0000 0x00020000
+wnbstat.exe 0x08bc0000 0x00020000
+ws.exe 0x08be0000 0x00020000
+ws2hdr.exe 0x08c00000 0x00010000
+xdosnet.exe 0x08c10000 0x00020000
+xerox.exe 0x08c30000 0x00020000
+yapt.exe 0x08c50000 0x00020000
+ync.exe 0x08c70000 0x00020000
+z.exe 0x08c90000 0x00060000
+accupd.exe 0x08cf0000 0x00020000
+accupd2.exe 0x08d10000 0x00020000
+actclt.exe 0x08d30000 0x00020000
+actsrv.exe 0x08d50000 0x00010000
+bldvtbl.exe 0x08d60000 0x00020000
+capiinst.exe 0x08d80000 0x00020000
+ccmd.exe 0x08da0000 0x00060000
+ccsetup.exe 0x08e00000 0x00010000
+client.exe 0x08e10000 0x00010000
+clipdump.exe 0x08e20000 0x00020000
+cntroutl.exe 0x08e40000 0x00030000
+convgrp.exe 0x08e70000 0x00020000
+cpustres.exe 0x08e90000 0x00010000
+cputgen.exe 0x08ea0000 0x00020000
+ctt2rle.exe 0x08ec0000 0x00020000
+ddmprxy.exe 0x08ee0000 0x00010000
+dfsetup.exe 0x08ef0000 0x00010000
+dftool.exe 0x08f00000 0x00010000
+dhcmp.exe 0x08f10000 0x00020000
+discon.exe 0x08f30000 0x00010000
+disctest.exe 0x08f40000 0x00010000
+dnscmd.exe 0x08f50000 0x00010000
+dnssetup.exe 0x08f60000 0x00010000
+dnsstat.exe 0x08f70000 0x00010000
+dphhogs.exe 0x08f80000 0x00010000
+dskdump.exe 0x08f90000 0x00020000
+dummy.exe 0x08fb0000 0x00010000
+dumpbin.exe 0x08fc0000 0x00010000
+dumpclip.exe 0x08fd0000 0x00020000
+empty.exe 0x08ff0000 0x00020000
+emptyq.exe 0x09010000 0x00030000
+espexe.exe 0x09040000 0x00010000
+execslm.exe 0x09050000 0x00010000
+explalt.exe 0x09060000 0x00060000
+fail.exe 0x090c0000 0x00010000
+faxstres.exe 0x090d0000 0x00010000
+fileback.exe 0x090e0000 0x00010000
+filtest.exe 0x090f0000 0x00010000
+ftc.exe 0x09100000 0x00020000
+gdibench.exe 0x09120000 0x00050000
+gdistats.exe 0x09170000 0x00010000
+genthnk.exe 0x09180000 0x00020000
+getmttf.exe 0x091a0000 0x00020000
+htmboard.exe 0x091c0000 0x00010000
+icntrotl.exe 0x091d0000 0x00030000
+impchk.exe 0x09200000 0x00020000
+infilter.exe 0x09220000 0x00020000
+init.exe 0x09240000 0x00020000
+install.exe 0x09260000 0x00020000
+ipsetup.exe 0x09280000 0x00010000
+ipxping.exe 0x09290000 0x00010000
+ipxrgcfg.exe 0x092a0000 0x00010000
+ipxrtvw.exe 0x092b0000 0x00030000
+isvrotl.exe 0x092e0000 0x00030000
+leakyapp.exe 0x09310000 0x00010000
+license.exe 0x09320000 0x00010000
+logdiff.exe 0x09330000 0x00020000
+machrid.exe 0x09350000 0x00020000
+mcopy.exe 0x09370000 0x00010000
+memsnap.exe 0x09380000 0x00020000
+mprouter.exe 0x093a0000 0x00010000
+netdfs.exe 0x093b0000 0x00010000
+netmon.exe 0x093c0000 0x000c0000
+netstrs.exe 0x09480000 0x00020000
+nsnmp.exe 0x094a0000 0x00010000
+ntgpcedt.exe 0x094b0000 0x00020000
+olebind.exe 0x094d0000 0x00030000
+olecnfg.exe 0x09500000 0x00020000
+olesrv.exe 0x09520000 0x00010000
+oletest.exe 0x09530000 0x00020000
+pdlcnfig.exe 0x09550000 0x00020000
+pdlsvc.exe 0x09570000 0x00020000
+pfm2ifi.exe 0x09590000 0x00020000
+pifdump.exe 0x095b0000 0x00020000
+plotgpc.exe 0x095d0000 0x00020000
+plumbing.exe 0x095f0000 0x00020000
+poolsnap.exe 0x09610000 0x00030000
+ppm2pps.exe 0x09640000 0x00020000
+printman.exe 0x09660000 0x00040000
+q.exe 0x096a0000 0x00040000
+quickres.exe 0x096e0000 0x00010000
+rasusers.exe 0x096f0000 0x00010000
+regdiff.exe 0x09700000 0x00030000
+regrest.exe 0x09730000 0x00040000
+rendtest.exe 0x09770000 0x00010000
+riptest.exe 0x09780000 0x00010000
+rladmin.exe 0x09790000 0x00050000
+rledit.exe 0x097e0000 0x00060000
+rlquiked.exe 0x09840000 0x00050000
+routemon.exe 0x09890000 0x00010000
+rtradmin.exe 0x098a0000 0x00020000
+server.exe 0x098c0000 0x00030000
+setacc.exe 0x098f0000 0x00020000
+setpriv.exe 0x09910000 0x00020000
+setprop.exe 0x09930000 0x00020000
+sign.exe 0x09950000 0x00020000
+simpcntr.exe 0x09970000 0x00030000
+simpdnd.exe 0x099a0000 0x00030000
+simpsvr.exe 0x099d0000 0x00030000
+smbrdr.exe 0x09a00000 0x00020000
+sortlog.exe 0x09a20000 0x00020000
+sortpp.exe 0x09a40000 0x00020000
+stgdrt.exe 0x09a60000 0x00010000
+stress.exe 0x09a70000 0x00010000
+sublocal.exe 0x09a80000 0x00020000
+svroutl.exe 0x09aa0000 0x00030000
+tapiupr.exe 0x09ad0000 0x00010000
+tb20.exe 0x09ae0000 0x00040000
+terminal.exe 0x09b20000 0x00050000
+test.exe 0x09b70000 0x00010000
+testsrv.exe 0x09b80000 0x00010000
+tlocmgr.exe 0x09b90000 0x00010000
+tpctl.exe 0x09ba0000 0x00050000
+upedit.exe 0x09bf0000 0x00020000
+w3t.exe 0x09c10000 0x00020000
+wansetup.exe 0x09c30000 0x00010000
+wcache.exe 0x09c40000 0x00020000
+win95cmd.exe 0x09c60000 0x00080000
+winsdmp.exe 0x09ce0000 0x00010000
+wntipcfg.exe 0x09cf0000 0x00020000
+wrapit.exe 0x09d10000 0x00020000
+csrss.exe 0x5ffe0000 0x00010000
+winsrv.dll 0x5ff90000 0x00050000
+basesrv.dll 0x5ff70000 0x00020000
+csrsrv.dll 0x5ff60000 0x00010000
+vga.dll 0x5ff50000 0x00010000
+kbdus.dll 0x5ff40000 0x00010000
+kbdbe.dll 0x5ff30000 0x00010000
+kbdbr.dll 0x5ff30000 0x00010000
+kbdca.dll 0x5ff30000 0x00010000
+kbdcz.dll 0x5ff30000 0x00010000
+kbdda.dll 0x5ff30000 0x00010000
+kbddv.dll 0x5ff30000 0x00010000
+kbdes.dll 0x5ff30000 0x00010000
+kbdfc.dll 0x5ff30000 0x00010000
+kbdfi.dll 0x5ff30000 0x00010000
+kbdfr.dll 0x5ff30000 0x00010000
+kbdgr.dll 0x5ff30000 0x00010000
+kbdhe.dll 0x5ff30000 0x00010000
+kbdhu.dll 0x5ff30000 0x00010000
+kbdic.dll 0x5ff30000 0x00010000
+kbdit.dll 0x5ff30000 0x00010000
+kbdla.dll 0x5ff30000 0x00010000
+kbdne.dll 0x5ff30000 0x00010000
+kbdno.dll 0x5ff30000 0x00010000
+kbdpl1.dll 0x5ff30000 0x00010000
+kbdpo.dll 0x5ff30000 0x00010000
+kbdru.dll 0x5ff30000 0x00010000
+kbdsf.dll 0x5ff30000 0x00010000
+kbdsg.dll 0x5ff30000 0x00010000
+kbdsl.dll 0x5ff30000 0x00010000
+kbdsp.dll 0x5ff30000 0x00010000
+kbdsw.dll 0x5ff30000 0x00010000
+kbdtuf.dll 0x5ff30000 0x00010000
+kbdtuq.dll 0x5ff30000 0x00010000
+kbduk.dll 0x5ff30000 0x00010000
+kbdusl.dll 0x5ff30000 0x00010000
+kbdusr.dll 0x5ff30000 0x00010000
+kbdusx.dll 0x5ff30000 0x00010000
+ati.dll 0x5ff00000 0x00030000
+s3.dll 0x5ff10000 0x00020000
+weitekp9.dll 0x5ff20000 0x00010000
+framebuf.dll 0x5ff20000 0x00010000
+qv.dll 0x5ff20000 0x00010000
+jzvxl484.dll 0x5ff20000 0x00010000
+wow32.dll 0x0ff80000 0x00070000
+vcdex.dll 0x0ff70000 0x00010000
+vdmredir.dll 0x0ff50000 0x00020000
+ntvdm.exe 0x0fc60000 0x002f0000
+wx86.dll 0x60000000 0x00010000
+wx86cpu.dll 0x60010000 0x00280000
+wigdi32.dll 0x5ffe0000 0x00010000
+whgdi32.dll 0x5ffc0000 0x00020000
+wiuser32.dll 0x5ffa0000 0x00020000
+whuser32.dll 0x5ff80000 0x00020000
+wikrnl32.dll 0x5ff70000 0x00010000
+whkrnl32.dll 0x5ff50000 0x00020000
+wishll32.dll 0x5ff40000 0x00010000
+whshll32.dll 0x5ff30000 0x00010000
+wicrtdll.dll 0x5ff00000 0x00030000
+wivcrt.dll 0x5feb0000 0x00050000
+wivcrt40.dll 0x5fe90000 0x00020000
+wintdll.dll 0x5fe70000 0x00020000
+whntdll.dll 0x5fe60000 0x00010000
+wiadv32.dll 0x5fe50000 0x00010000
+whadv32.dll 0x5fe30000 0x00020000
+wimpr.dll 0x5fe20000 0x00010000
+whmpr.dll 0x5fe10000 0x00010000
+wiversn.dll 0x5fe00000 0x00010000
+whversn.dll 0x5fdf0000 0x00010000
+wilz32.dll 0x5fde0000 0x00010000
+whlz32.dll 0x5fdd0000 0x00010000
+wiwspool.dll 0x5fdc0000 0x00010000
+whwspool.dll 0x5fdb0000 0x00010000
+wiwinmm.dll 0x5fda0000 0x00010000
+whwinmm.dll 0x5fd90000 0x00010000
+wisock32.dll 0x5fd80000 0x00010000
+whsock32.dll 0x5fd70000 0x00010000
+wiole32.dll 0x5fd60000 0x00010000
+whole32.dll 0x5fcc0000 0x000a0000
+wiopengl.dll 0x5fcb0000 0x00010000
+whopengl.dll 0x5fca0000 0x00010000
+wicdlg32.dll 0x5fc90000 0x00010000
+whcdlg32.dll 0x5fc80000 0x00010000
+wicctl32.dll 0x5fc70000 0x00010000
+whcctl32.dll 0x5fc60000 0x00010000
+wioleaut.dll 0x5fbe0000 0x00080000
+wioledlg.dll 0x5fbd0000 0x00010000
+wholedlg.dll 0x5fbc0000 0x00010000
+wx86e.dll 0x5f8e0000 0x002e0000
+iprop.dll 0x5f800000 0x00020000
diff --git a/public/sdk/lib/ossinfo b/public/sdk/lib/ossinfo
new file mode 100644
index 000000000..924b250d3
--- /dev/null
+++ b/public/sdk/lib/ossinfo
Binary files differ
diff --git a/public/sdk/lib/placefil.bak b/public/sdk/lib/placefil.bak
new file mode 100644
index 000000000..110e3351b
--- /dev/null
+++ b/public/sdk/lib/placefil.bak
@@ -0,0 +1,4636 @@
+192.dns retail
+31users.hlp retail
+3dgarro.cur retail
+3dgmove.cur retail
+3dgnesw.cur retail
+3dgno.cur retail
+3dgns.cur retail
+3dgnwse.cur retail
+3dgwe.cur retail
+3dsmove.cur retail
+3dsns.cur retail
+3dsnwse.cur retail
+3dwarro.cur retail
+3dwmove.cur retail
+3dwnesw.cur retail
+3dwno.cur retail
+3dwns.cur retail
+3dwnwse.cur retail
+3dwwe.cur retail
+4mmdat.sys retail
+8514a.dll retail
+8514a.sys retail
+8514fix.fon retail
+8514fixe.fon retail
+8514fixg.fon retail
+8514fixr.fon retail
+8514fixt.fon retail
+8514oem.fon retail
+8514oeme.fon retail
+8514oemg.fon retail
+8514oemr.fon retail
+8514oemt.fon retail
+8514sys.fon retail
+8514syse.fon retail
+8514sysg.fon retail
+8514sysr.fon retail
+8514syst.fon retail
+_default.pif retail
+a221064.pal retail
+a221066.pal retail
+a221164.pal retail
+a321064.pal retail
+ab32.dll retail
+abiosdsk.sys retail
+acc_dis.cnt retail
+acc_dis.hlp retail
+accctrl.dll retail
+access.cpl retail
+accessor.inf retail
+account.dll retail
+accounts.inf retail
+accsetup.txt retail
+aclconv.exe retail
+acledit.dll retail
+adp.bin retail
+addgrpw.exe retail
+addusrw.exe retail
+advapi32.dll retail
+afd.sys retail
+aha154x.sys retail
+aha174x.sys retail
+aic78xx.sys retail
+alertsys.dll retail
+alertsys.exe retail
+alrsvc.dll retail
+always.sys retail
+am1500t.sys retail
+amddlg.dll retail
+amdncdet.dll retail
+amdpcn.sys retail
+ami0nt.sys retail
+amsint.sys retail
+ansi.sys retail
+aofsutil.dll retail
+app850.fon retail
+app852.fon retail
+app857.fon retail
+app866.fon retail
+append.exe retail
+apps.inf retail
+appstar2.ani retail
+appstar3.ani retail
+appstart.ani retail
+appwiz.cpl retail
+archqic.sys retail
+arcinst.exe retail
+arial.ttf retail
+arialbd.ttf retail
+arialbi.ttf retail
+ariali.ttf retail
+arp.exe retail
+arrow.sys retail
+asyncmac.sys retail
+att.ht retail
+at.exe retail
+atapi.sys retail
+atdisk.sys retail
+ati.dll retail
+ati.sys retail
+atkctrs.dll retail
+atsvc.dll retail
+atsvc.exe retail
+attrib.exe retail
+audiocdc.hlp retail
+autochk.exe retail
+autocmpt.exe retail
+autoconv.exe retail
+autoexec.nt retail
+autofmt.exe retail
+autolfn.exe retail
+autorprt.exe retail
+autorun.exe retail
+autoulib.dll retail
+autouofs.dll retail
+avicap.dll retail
+avicap32.dll retail
+avifil32.dll retail
+avifile.dll retail
+backgrnd.gif retail
+backup.cnt retail
+backup.exe retail
+backup.hlp retail
+banana.ani retail
+barber.ani retail
+basesrv.dll retail
+beep.sys retail
+bhmon.dll retail
+bhnetb.dll retail
+bhnt.sys retail
+bhp013.cnt netmon
+bhp013.hlp netmon
+bhsupp.dll retail
+bios1.rom retail
+bios4.rom retail
+black16.scr retail
+boot retail
+bootok.exe retail
+bootvrfy.exe retail
+brhj770.dll retail
+brother9.dll retail
+brothr24.dll retail
+browser.dll retail
+buslogic.sys retail
+busmouse.sys retail
+c_037.nls retail
+c_10000.nls retail
+c_10006.nls retail
+c_10007.nls retail
+c_10010.nls retail
+c_10017.nls retail
+c_10029.nls retail
+c_10079.nls retail
+c_10081.nls retail
+c_10082.nls retail
+c_1026.nls retail
+c_1250.nls retail
+c_1251.nls retail
+c_1252.nls retail
+c_1253.nls retail
+c_1254.nls retail
+c_1255.nls retail
+c_1256.nls retail
+c_1257.nls retail
+c_1258.nls retail
+c_20866.nls retail
+c_28592.nls retail
+c_437.nls retail
+c_500.nls retail
+c_737.nls retail
+c_775.nls retail
+c_850.nls retail
+c_852.nls retail
+c_855.nls retail
+c_857.nls retail
+c_860.nls retail
+c_861.nls retail
+c_863.nls retail
+c_865.nls retail
+c_866.nls retail
+c_869.nls retail
+c_870.nls retail
+c_875.nls retail
+c_20105.nls retail
+c_20261.nls retail
+c_20269.nls retail
+c_20273.nls retail
+c_20277.nls retail
+c_20278.nls retail
+c_20280.nls retail
+c_20284.nls retail
+c_20285.nls retail
+c_20290.nls retail
+c_20297.nls retail
+c_20420.nls retail
+c_20423.nls retail
+c_20833.nls retail
+c_20838.nls retail
+c_20871.nls retail
+c_20880.nls retail
+c_20905.nls retail
+c_21025.nls retail
+c_21027.nls retail
+c_28592.nls retail
+c_28593.nls retail
+c_28594.nls retail
+c_28595.nls retail
+c_28596.nls retail
+c_28597.nls retail
+c_28598.nls retail
+c_28599.nls retail
+cache.dns retail
+cacls.exe retail
+cairo.inf retail
+cairostd.exe retail
+calc.cnt retail
+calc.exe retail
+calc.hlp retail
+canon330.dll retail
+canon800.dll retail
+canonlbp.dll retail
+canyon.mid retail
+cards.dll retail
+ccfapi.hlp retail
+ccfapi32.dll retail
+cdaudio.sys retail
+cdfs.sys retail
+cdplayer.cnt retail
+cdplayer.exe retail
+cdplayer.hlp retail
+cdrom.sys retail
+cfgmgr32.dll retail
+cfm30.dll retail
+cfm30u.dll retail
+cfm40.dll retail
+cfm40d.dll retail
+cfm40u.dll retail
+cfm40ud.dll retail
+cfmo30.dll retail
+cfmo30u.dll retail
+cfmo40.dll retail
+cfmo40d.dll retail
+cfmo40u.dll retail
+cfmo40ud.dll retail
+cga40737.fon retail
+cga40850.fon retail
+cga40852.fon retail
+cga40857.fon retail
+cga40866.fon retail
+cga40869.fon retail
+cga40woa.fon retail
+cga80737.fon retail
+cga80850.fon retail
+cga80852.fon retail
+cga80857.fon retail
+cga80866.fon retail
+cga80869.fon retail
+cga80woa.fon retail
+changer.sys retail
+charmap.cnt retail
+charmap.exe retail
+charmap.hlp retail
+chcp.com retail
+chimes.wav retail
+chkdsk.exe retail
+chord.wav retail
+cifilter.exe retail
+cirrus.dll retail
+cirrus.sys retail
+cis.ht retail
+cis.scp retail
+cit24us.dll retail
+cit9us.dll retail
+citoh.dll retail
+class2.sys retail
+clb.dll retail
+client.gif retail
+clipbrd.cnt retail
+clipbrd.exe retail
+clipbrd.hlp retail
+clipsrv.exe retail
+clock.avi retail
+clock.exe retail
+cmc.dll retail
+cmd.exe retail
+cmos.ram retail
+cmsfcxx.sys retail
+cnvfat.dll retail
+cnvntfs.dll retail
+coin.ani retail
+comctl32.dll retail
+comctl32.sym symbols\dll
+comdlg32.dll retail
+comm.drv retail
+command.com retail
+commdlg.dll retail
+common.hlp retail
+communic.inf retail
+comp.exe retail
+compact.exe retail
+compobj.dll retail
+compstui.dll retail
+compstui.hlp retail
+conexts.dll retail
+config.nt retail
+configsc.exe retail
+console.cpl retail
+control.exe retail
+control.hlp retail
+convert.exe retail
+convmsg.dll retail
+counter.ani retail
+country.sys retail
+cour.ttf retail
+courbd.ttf retail
+courbi.ttf retail
+coure.fon retail
+couree.fon retail
+coureg.fon retail
+courer.fon retail
+couret.fon retail
+courf.fon retail
+courfe.fon retail
+courfg.fon retail
+courfr.fon retail
+courft.fon retail
+couri.ttf retail
+cpqarray.sys retail
+cpqfws2e.sys retail
+creategc.exe retail
+cross.cur retail
+crtdll.dll retail
+cs423x.dll retail
+cs423x.hlp retail
+cs423x.sys retail
+csrsrv.dll retail
+csrss.exe retail
+csumcat.dll retail
+ctype.nls retail
+ctl3dv2.dll retail
+cxbios.bin retail
+cxfep.bin retail
+cxxflt.dll retail
+d3dhalf.dll retail
+d3dim.dll retail
+d3drampf.dll retail
+d3drg16f.dll retail
+d3drg24f.dll retail
+d3drg32f.dll retail
+d3drg8f.dll retail
+d3drgbf.dll retail
+d3drm.dll retail
+d3drm16f.dll retail
+d3drm24f.dll retail
+d3drm32f.dll retail
+d3drm8f.dll retail
+d3dxof.dll retail
+dac960nt.sys retail
+dc21x4.hlp retail
+dc21x4.sys retail
+dciman32.dll retail
+dcomcnfg.exe retail
+dcomcnfg.hlp retail
+ddeml.dll retail
+ddeshare.cnt retail
+ddeshare.exe retail
+ddeshare.hlp retail
+ddhelp.exe retail
+ddraw.dll retail
+debmp.dll retail
+debug.exe retail
+dec24pin.dll retail
+dec3200.dll retail
+dec9pin.dll retail
+decpsmon.dll retail
+decpsmon.hlp retail
+default retail
+defddi.hlp retail
+defea.dll retail
+defea.sys retail
+defpa.dll retail
+defpa.sys retail
+dehex.dll retail
+dell_dgx.sys retail
+delldsa.sys retail
+demet.dll retail
+demil32.dll retail
+desk.cpl retail
+desktop.ini retail
+dess.dll retail
+devapps.cpl retail
+devapps.hlp retail
+devpre.exe idw
+devpre.inf idw
+dewp.dll retail
+;dfs.sys retail
+;dfsadmin.exe retail
+;dfsinit.exe retail
+;dfsinstr.dll retail
+;dfsprov.dll retail
+;dfssetup.dll retail
+;dfssvc.exe retail
+;dfsui.dll retail
+dgconfig.cnt retail
+dgconfig.dll retail
+dgconfig.hlp retail
+dgconfig.hlp retail
+dhcpadmn.cnt retail
+dhcpadmn.exe retail
+dhcpadmn.hlp retail
+dhcpcsvc.dll retail
+dhcpmib.dll retail
+dhcpsapi.dll retail
+dhcpssvc.dll retail
+dialer.cnt retail
+dialer.exe retail
+dialer.hlp retail
+diconix.dll retail
+digifep5.sys retail
+digiinst.dll retail
+digsig.dll retail
+ding.wav retail
+dinosau2.ani retail
+dinosaur.ani retail
+disk.sys retail
+disk1 retail
+diskcomp.com retail
+diskcopy.com retail
+diskcopy.dll retail
+diskdump.sys retail
+diskperf.exe retail
+diskperf.sys retail
+display.inf retail
+dispoem.inf retail
+dlc.sys retail
+dlcapi.dll retail
+dlttape.sys retail
+dnsadmin.cnt retail
+dnsadmin.exe retail
+dnsadmin.hlp retail
+dns.exe retail
+docprop.dll retail
+domlink.exe retail
+dos737.fon retail
+dos869.fon retail
+dosapp.fon retail
+doscalls.dll retail
+doshelp.hlp retail
+doskey.exe retail
+dosnet.inf retail
+dosx.exe retail
+dplay.dll retail
+dpserial.dll retail
+dptscsi.sys retail
+dpwsock.dll retail
+drum.ani retail
+drwatson.exe retail
+drwtsn32.cnt retail
+drwtsn32.exe retail
+drwtsn32.hlp retail
+dsadmin.exe retail
+dsmail.dll retail
+dsmgr.exe retail
+dsobjs.dll retail
+dsound.dll retail
+dsrepl.exe retail
+dssrv.dll retail
+dsui.dll retail
+dsys.dll retail
+dsys.tlb retail
+dsyssvr.exe retail
+dtc329x.sys retail
+edit.com retail
+edit.hlp retail
+edlin.exe retail
+ee16.sys retail
+ega.cpi retail
+ega40737.fon retail
+ega40850.fon retail
+ega40852.fon retail
+ega40857.fon retail
+ega40866.fon retail
+ega40869.fon retail
+ega40woa.fon retail
+ega80737.fon retail
+ega80850.fon retail
+ega80852.fon retail
+ega80857.fon retail
+ega80866.fon retail
+ega80869.fon retail
+ega80woa.fon retail
+elnk16.sys retail
+elnk3.sys retail
+elnkii.sys retail
+elnkmc.sys retail
+epson24.dll retail
+epson9.dll retail
+escp2e.dll retail
+escp2ms.dll retail
+et4000.sys retail
+eula.txt retail
+eulaint.txt retail
+oemeula.txt retail
+eventlog.dll retail
+eventvwr.cnt retail
+eventvwr.exe retail
+eventvwr.hlp retail
+exabyte1.sys retail
+exabyte2.sys retail
+excfg32.exe retail
+exchng.cnt retail
+exchng.hlp retail
+exchng32.exe retail
+exe2bin.exe retail
+expand.exe retail
+explorer.exe retail
+fastfat.sys retail
+fastopen.exe retail
+fatcmpct.exe retail
+fc.exe retail
+fd16_700.sys retail
+fd7000ex.sys retail
+fd8xx.sys retail
+fillitup.ani retail
+find.exe retail
+findstr.exe retail
+finger.exe retail
+flashpnt.sys retail
+floppy.sys retail
+fmifs.dll retail
+font.inf retail
+fontext.dll retail
+fontview.exe retail
+forcedos.exe retail
+format.com retail
+fpnwclnt.dll retail
+frame32.dll retail
+framebuf.dll retail
+freecell.cnt retail
+freecell.exe retail
+freecell.hlp retail
+fs_rec.sys retail
+ftdisk.sys retail
+ftp.exe retail
+ftpctrs.dll retail
+ftpsmx.dll retail
+ftpsvapi.dll retail
+ftpsvc.dll retail
+ftsrch.dll retail
+fuji24.dll retail
+fuji9.dll retail
+fxbios.bin retail
+fxfep.bin retail
+games.inf retail
+gapi32.dll retail
+genflpy.sys retail
+gcconfig.exe retail
+gctool.exe retail
+gdi.exe retail
+gdi32.dll retail
+general.idf retail
+glmf32.dll retail
+glossary.hlp retail
+glu32.dll retail
+gorilla.bas retail
+graftabl.com retail
+graphics.com retail
+graphics.pro retail
+grpconv.exe retail
+hal.dll retail
+hal0jens.dll retail
+hal486c.dll retail
+halacr.dll retail
+halalcor.dll retail
+halapic.dll retail
+halapicm.dll retail
+halast.dll retail
+halavant.dll retail
+halcaro.dll retail
+halvict.dll retail
+halcbus.dll retail
+halcbusm.dll retail
+haldti.dll retail
+halduomp.dll retail
+haleagle.dll retail
+halps.dll retail
+haleb164.dll retail
+haleb64p.dll retail
+halfire.dll retail
+halflex.dll retail
+halftone.hlp retail
+halfxs.dll retail
+halfxspc.dll retail
+halgammp.dll retail
+hallego.dll retail
+hallx3.dll retail
+halmca.dll retail
+halmikas.dll retail
+halmps.dll retail
+halmpsm.dll retail
+halncr.dll retail
+halnecmp.dll retail
+halnonme.dll retail
+halntp.dll retail
+halntp.dll retail
+haloli.dll retail
+halalp.dll retail
+halpinna.dll retail
+halppc.dll retail
+halqs.dll retail
+halr94a.dll retail
+halr96b.dll retail
+halr98b.dll retail
+halr98mp.dll retail
+halrawmp.dll retail
+halsabmp.dll retail
+halsni4x.dll retail
+halsnip.dll retail
+halsp.dll retail
+haltimbr.dll retail
+haltyne.dll retail
+halwood.dll retail
+halwood.dll retail
+halwyse7.dll retail
+halxl.dll retail
+hand.ani retail
+handapst.ani retail
+handnesw.ani retail
+handno.ani retail
+handns.ani retail
+handnwse.ani retail
+handwait.ani retail
+handwe.ani retail
+hardware.inf retail
+harrow.cur retail
+hcross.cur retail
+help.exe retail
+hibeam.cur retail
+hilgbbs.ht retail
+himem.sys retail
+hindered.idf retail
+hmove.cur retail
+hnesw.cur retail
+hnodrop.cur retail
+hns.cur retail
+hnwse.cur retail
+home.htm retail
+horse.ani retail
+hostname.exe retail
+hosts retail
+hourgla2.ani retail
+hourgla3.ani retail
+hourglas.ani retail
+hours.ocx retail
+hp20022.pcd retail
+hp20036.pcd retail
+hp22024.pcd retail
+hp22036.pcd retail
+hp23024.pcd retail
+hp23036.pcd retail
+hp25024.pcd retail
+hp25036.pcd retail
+hp33024.pcd retail
+hp33036.pcd retail
+hp35024.pcd retail
+hp35036.pcd retail
+hp60022.pcd retail
+hp60036.pcd retail
+hp650c22.pcd retail
+hp650c36.pcd retail
+hp75024.pcd retail
+hp75036.pcd retail
+hp750m24.pcd retail
+hp750m36.pcd retail
+hp7550pl.pcd retail
+hp755cm.pcd retail
+hp755cmm.pcd retail
+hpdesign.pcd retail
+hpdmrxmx.pcd retail
+hpdmsx.pcd retail
+hpdpp22.pcd retail
+hpdpp36.pcd retail
+hpdskjet.dll retail
+hpgl2pen.pcd retail
+hpmon.dll retail
+hpmon.hlp retail
+hppcl.dll retail
+hpscan16.sys retail
+hpscan16.sys retail
+hpscan32.dll retail
+hpt4qic.sys retail
+hticons.dll retail
+htui.dll retail
+hwe.cur retail
+hypertrm.cnt retail
+hypertrm.dll retail
+hypertrm.exe retail
+hypertrm.hlp retail
+i8042prt.sys retail
+ibm238x.dll retail
+ibm239x.dll retail
+ibm5204.dll retail
+ibm5204.dll retail
+ibmport.dll retail
+ibmppdsl.dll retail
+ibmtok.sys retail
+ibmtok2i.sys retail
+iccvid.dll retail
+icmp.dll retail
+idp_xfs.bin retail
+ieepro.sys retail
+ifsutil.dll retail
+imaadp32.acm retail
+imagehlp.dll retail
+impexp32.dll retail
+indicdll.dll retail
+inetab32.dll retail
+inetmib1.dll retail
+inport.sys retail
+int-mail.cnt retail
+int-mail.hlp retail
+internat.exe retail
+intl.cpl retail
+intl.inf retail
+iologmsg.dll retail
+ipadrdll.dll retail
+ipconfig.exe retail
+ipinfo.inf retail
+iprip.dll retail
+ipxcfg.dll retail
+ipxroute.exe retail
+ir32_32.dll retail
+isdnhelp.cnt retail
+isdnhelp.hlp retail
+jazzg300.sys retail
+jazzg364.sys retail
+jet.dll retail
+jet500.dll retail
+jetconv.exe retail
+jetpack.exe retail
+joindom.exe retail
+joinrset.exe retail
+joy.cpl retail
+joy.hlp retail
+joyport.dll retail
+joyport.sys retail
+jp350.dll retail
+jzvxl484.dll retail
+jzvxl484.sys retail
+kb16.com retail
+kbd.inf retail
+kbdal.dll retail
+kbdbe.dll retail
+kbdbene.dll retail
+kbdblr.dll retail
+kbdbr.dll retail
+kbdbu.dll retail
+kbdca.dll retail
+kbdclass.sys retail
+kbdcr.dll retail
+kbdcz.dll retail
+kbdcz1.dll retail
+kbdda.dll retail
+kbddll.dll retail
+kbddv.dll retail
+kbdes.dll retail
+kbdest.dll retail
+kbdfc.dll retail
+kbdfi.dll retail
+kbdfr.dll retail
+kbdgkl.dll retail
+kbdgr.dll retail
+kbdgr1.dll retail
+kbdhe.dll retail
+kbdhe220.dll retail
+kbdhe319.dll retail
+kbdhela2.dll retail
+kbdhela3.dll retail
+kbdhu.dll retail
+kbdhu1.dll retail
+kbdic.dll retail
+kbdir.dll retail
+kbdit.dll retail
+kbdit142.dll retail
+kbdla.dll retail
+kbdlt.dll retail
+kbdlv.dll retail
+kbdlv1.dll retail
+kbdne.dll retail
+kbdno.dll retail
+kbdpl.dll retail
+kbdpl1.dll retail
+kbdpo.dll retail
+kbdro.dll retail
+kbdru.dll retail
+kbdru1.dll retail
+kbdsel.exe retail
+kbdsf.dll retail
+kbdsg.dll retail
+kbdsl.dll retail
+kbdsl1.dll retail
+kbdsp.dll retail
+kbdsw.dll retail
+kbdtuf.dll retail
+kbdtuq.dll retail
+kbduk.dll retail
+kbdur.dll retail
+kbdurs.dll retail
+kbdus.dll retail
+kbdusl.dll retail
+kbdusr.dll retail
+kbdusx.dll retail
+kbdycc.dll retail
+kbdycl.dll retail
+kernel32.dll retail
+keyb.com retail
+keyboard.drv retail
+keyboard.inf retail
+keyboard.sys retail
+kmddsp.tsp retail
+krnl386.exe retail
+krnl386.exe retail
+ksecdd.sys retail
+kyocera.dll retail
+kyocerax.dll retail
+l_10646.ttf retail
+l_except.nls retail
+l_intl.nls retail
+label.exe retail
+lance.sys retail
+language.inf retail
+lanma256.bmp retail
+lanman.drv retail
+lanmannt.bmp retail
+lappstrt.cur retail
+larrow.cur retail
+layout.inf retail
+lcross.cur retail
+lcwiz.exe retail
+legacy.inf retail
+libeam.cur retail
+liccpa.cnt retail
+liccpa.cpl retail
+liccpa.hlp retail
+lights.exe retail
+linkinfo.dll retail
+llsmgr.cnt retail
+llsmgr.exe retail
+llsmgr.hlp retail
+llsrpc.dll retail
+llssrv.exe retail
+lmhosts.sam retail
+lmhsvc.dll retail
+lmmib2.dll retail
+lmove.cur retail
+lmrepl.exe retail
+lnesw.cur retail
+lnodrop.cur retail
+lns.cur retail
+lnwse.cur retail
+loadfix.com retail
+loadperf.dll retail
+locale.nls retail
+localmon.dll retail
+localspl.dll retail
+locator.exe retail
+lodctr.exe retail
+logobj.exe retail
+logon.scr retail
+logui.exe retail
+logview.cnt retail
+logview.exe retail
+logview.hlp retail
+loop.sys retail
+lpdsvc.dll retail
+lpq.exe retail
+lpr.exe retail
+lprhelp.dll retail
+lprmon.dll retail
+lsasrv.dll retail
+lsass.exe retail
+lt200.sys retail
+lucon.ttf retail
+lwait.cur retail
+lwe.cur retail
+lz32.dll retail
+lzexpand.dll retail
+macfile.exe retail
+mailm32.dll retail
+mailsp32.exe retail
+main.cpl retail
+makedc.exe retail
+mantal24.dll retail
+mantal90.dll retail
+mapi.dll retail
+mapi32.dll retail
+mapif0.cfg retail
+mapif0l.ico retail
+mapif0s.ico retail
+mapif1.cfg retail
+mapif1l.ico retail
+mapif1s.ico retail
+mapif2.cfg retail
+mapif2l.ico retail
+mapif2s.ico retail
+mapif3.cfg retail
+mapif3l.ico retail
+mapif3s.ico retail
+mapif4.cfg retail
+mapif4l.ico retail
+mapif4s.ico retail
+mapif5.cfg retail
+mapif5l.ico retail
+mapif5s.ico retail
+mapirpc.reg retail
+mapisp32.exe retail
+mapisrv.exe retail
+mapisrvr.exe retail
+mapisvc.inf retail
+mapiu.dll retail
+mapiu32.dll retail
+mapiwm.tpl retail
+mapix.dll retail
+mapix32.dll retail
+mapixx.dll retail
+marlett.ttf retail
+mcd32.dll retail
+mcdsrv32.dll retail
+mci.ht retail
+mciavi.drv retail
+mciavi32.dll retail
+mcicda.dll retail
+mciole16.dll retail
+mciole32.dll retail
+mciseq.dll retail
+mciseq.drv retail
+mciwave.dll retail
+mciwave.drv retail
+mdgncdet.dll retail
+mdgmpdlg.dll retail
+mdgmpdlg.hlp retail
+mdgmport.sys retail
+mdgmport.bin retail
+mdisp.tlb retail
+mdisp32.exe retail
+mdisp32.reg retail
+mdisp32.tlb retail
+mdm3com.inf retail
+mdm3x.inf retail
+mdmaceex.inf retail
+mdmadc.inf retail
+mdmadtn.inf retail
+mdmairte.inf retail
+mdmar1.inf retail
+mdmarch.inf retail
+mdmarcht.inf retail
+mdmarn.inf retail
+mdmati.inf retail
+mdmatt.inf retail
+mdmaus.inf retail
+mdmblatz.inf retail
+mdmboca.inf retail
+mdmbsb.inf retail
+mdmbsch.inf retail
+mdmcm28.inf retail
+mdmcmcm.inf retail
+mdmcodex.inf retail
+mdmcom1.inf retail
+mdmcomm1.inf retail
+mdmcommu.inf retail
+mdmcpi.inf retail
+mdmcpq.inf retail
+mdmcpqpr.inf retail
+mdmcpv.inf retail
+mdmcrtix.inf retail
+mdmdefd.inf retail
+mdmdgitn.inf retail
+mdmdicom.inf retail
+mdmdisco.inf retail
+mdmdsi.inf retail
+mdmdyna.inf retail
+mdmeiger.inf retail
+mdmelink.inf retail
+mdmelpro.inf retail
+mdmelsa.inf retail
+mdmeric.inf retail
+mdmetech.inf retail
+mdmexp.inf retail
+mdmeyp.inf retail
+mdmgal.inf retail
+mdmgar.inf retail
+mdmgatew.inf retail
+mdmgen.inf retail
+mdmgv.inf retail
+mdmgvc.inf retail
+mdmgvcd.inf retail
+mdmhaeu.inf retail
+mdmhaeus.inf retail
+mdmhandy.inf retail
+mdmhay2.inf retail
+mdmhayes.inf retail
+mdmico.inf retail
+mdminfot.inf retail
+mdminsys.inf retail
+mdmintel.inf retail
+mdmintpc.inf retail
+mdmitex.inf retail
+mdmke.inf retail
+mdmkortx.inf retail
+mdmlasat.inf retail
+mdmlasno.inf retail
+mdmlce.inf retail
+mdmlight.inf retail
+mdmlngsh.inf retail
+mdmmart.inf retail
+mdmmcom.inf retail
+mdmmetri.inf retail
+mdmmhrtz.inf retail
+mdmmix.inf retail
+mdmmoto.inf retail
+mdmmoton.inf retail
+mdmmotou.inf retail
+mdmmtd.inf retail
+mdmmts.inf retail
+mdmmulog.inf retail
+mdmneuhs.inf retail
+mdmniss.inf retail
+mdmnokia.inf retail
+mdmnokno.inf retail
+mdmnova.inf retail
+mdmnovfx.inf retail
+mdmolic.inf retail
+mdmolive.inf retail
+mdmopt1.inf retail
+mdmoptn.inf retail
+mdmosi.inf retail
+mdmpace.inf retail
+mdmpbit.inf retail
+mdmpcsi.inf retail
+mdmpctel.inf retail
+mdmphils.inf retail
+mdmpn1.inf retail
+mdmpnb.inf retail
+mdmpp.inf retail
+mdmprodm.inf retail
+mdmquant.inf retail
+mdmracal.inf retail
+mdmrfi.inf retail
+mdmrock.inf retail
+mdmrock2.inf retail
+mdmrock3.inf retail
+mdmrock4.inf retail
+mdmrock5.inf retail
+mdmsecdy.inf retail
+mdmsier.inf retail
+mdmsimpl.inf retail
+mdmsmart.inf retail
+mdmsmplt.inf retail
+mdmsnit1.inf retail
+mdmsnitn.inf retail
+mdmsonix.inf retail
+mdmspec.inf retail
+mdmspq28.inf retail
+mdmsrt.inf retail
+mdmsupr3.inf retail
+mdmsupra.inf retail
+mdmsuprv.inf retail
+mdmtaicm.inf retail
+mdmtdk.inf retail
+mdmtelbt.inf retail
+mdmtelin.inf retail
+mdmtelnk.inf retail
+mdmtexas.inf retail
+mdmtger.inf retail
+mdmti.inf retail
+mdmtkr.inf retail
+mdmtorn.inf retail
+mdmtosh.inf retail
+mdmtripl.inf retail
+mdmtron.inf retail
+mdmtrust.inf retail
+mdmucom.inf retail
+mdmusrcr.inf retail
+mdmusrf.inf retail
+mdmusrg.inf retail
+mdmusrsp.inf retail
+mdmusrwp.inf retail
+mdmvayrs.inf retail
+mdmvdot.inf retail
+mdmvict.inf retail
+mdmvv.inf retail
+mdmwell.inf retail
+mdmwhql0.inf retail
+mdmwoer.inf retail
+mdmyorik.inf retail
+mdmzoom.inf retail
+mdmzyp.inf retail
+mdmzyxel.inf retail
+mdmzyxld.inf retail
+mdmzyxlg.inf retail
+mdmzyxln.inf retail
+mem.exe retail
+metronom.ani retail
+mf3216.dll retail
+mfc40.dll retail
+mfc40.dbg symbols\dll
+mfc40u.dll retail
+mfc40u.dbg symbols\dll
+mfc40chs.dll retail
+mfc40deu.dll retail
+mfc40enu.dll retail
+mfc40esp.dll retail
+mfc40fra.dll retail
+mfc40ita.dll retail
+mfc40jpn.dll retail
+mfc40kor.dll retail
+mfc40d.dll system32
+mfc40ud.dll system32
+mfcd40d.dll system32
+mfcd40ud.dll system32
+mfcn40d.dll system32
+mfcn40ud.dll system32
+mfco40d.dll system32
+mfco40ud.dll system32
+mfc42.dll retail
+mfc42.dbg symbols\dll
+mfc42u.dll retail
+mfc42u.dbg symbols\dll
+mfc42chs.dll retail
+mfc42cht.dll retail
+mfc42deu.dll retail
+mfc42enu.dll retail
+mfc42esp.dll retail
+mfc42fra.dll retail
+mfc42ita.dll retail
+mfc42jpn.dll retail
+mfc42kor.dll retail
+mfc42d.dll system32
+mfc42ud.dll system32
+mfcd42d.dll system32
+mfcd42ud.dll system32
+mfcn42d.dll system32
+mfcn42ud.dll system32
+mfco42d.dll system32
+mfco42ud.dll system32
+mfcuix.hlp retail
+mga.dll retail
+mga.sys retail
+mga_mil.sys retail
+mgmtapi.dll retail
+mib.bin retail
+mib.bin retail
+midimap.cfg retail
+midimap.dll retail
+minet32.dll retail
+miniqic.sys retail
+mipssnd.sys retail
+mitsumi.sys retail
+mkecr5xx.sys retail
+mkrcon.exe retail
+mkrobj.exe retail
+mkrset.exe retail
+ml3xec16.exe retail
+mlcfg32.cpl retail
+mlset32.exe retail
+mlshext.dll retail
+mmdriver.inf retail
+mmdrv.dll retail
+mmdrv.hlp retail
+mmfmig32.dll retail
+mmopt.inf retail
+mmsys.cpl retail
+mmsystem.dll retail
+mmtask.tsk retail
+mode.com retail
+modem.cpl retail
+modem.inf retail
+modem.sys retail
+modemui.dll retail
+modern.fon retail
+money.bas retail
+monitor.inf retail
+more.com retail
+moricons.dll retail
+mouclass.sys retail
+mouse.cnt retail
+mouse.drv retail
+mouse.hlp retail
+mplay32.exe retail
+mplayer.cnt retail
+mplayer.hlp retail
+mpnotify.exe retail
+mpr.dll retail
+mprui.dll retail
+mpu401.dll retail
+mpu401.sys retail
+mrxsmb.sys drivers
+msacm.dll retail
+msacm32.dll retail
+msacm32.drv retail
+msadlib.idf retail
+msadp32.acm retail
+msafd.dll retail
+msafdext.dll mstools
+msaudite.dll retail
+msbbs.ht retail
+mscdexnt.exe retail
+msfs.cnt retail
+msfs.hlp retail
+msfs.sys retail
+msfs32.dll retail
+msgina.dll retail
+msg711.acm retail
+msgsm32.acm retail
+msgsvc.dll retail
+msjt3032.dll retail
+msmail.inf retail
+msmail32.cnt retail
+msmail32.exe retail
+msmail32.hlp retail
+msmouse.inf retail
+msncdet.dll retail
+msobjs.dll retail
+msp32_am.lex retail
+mspaint.cnt retail
+mspaint.exe retail
+mspaint.hlp retail
+mspell32.dll retail
+msprivs.dll retail
+mspst32.dll retail
+msrle32.dll retail
+msrmnd32.exe retail
+msschd32.dll retail
+mssfs32.dll retail
+msv1_0.dll retail
+msvcrt20.dll retail
+msvcrt40.dll retail
+msvcrt.dll retail
+msvcirt.dll retail
+msvcr40d.dll system32
+msvcrtd.dll system32
+msvcirtd.dll system32
+msvfw32.dll retail
+msvidc32.dll retail
+msvideo.dll retail
+msviewut.dll retail
+mswd6_32.wpc retail
+mswsock.dll retail
+mswsutil.dll retail
+mt735.dll retail
+multimed.inf retail
+mup.sys retail
+musrmgr.cnt retail
+musrmgr.exe retail
+musrmgr.hlp retail
+mvaudio.dll retail
+mvaudio.sys retail
+nal.dll retail
+nbf.sys retail
+nbinfo.inf retail
+nbtstat.exe retail
+ncadmin.cnt retail
+ncadmin.exe retail
+ncadmin.hlp retail
+ncpa.cpl retail
+ncparam.inf retail
+ncpashel.inf retail
+ncr53c9x.sys retail
+ncr77c22.sys retail
+ncrc700.sys retail
+ncrc710.sys retail
+nddeagnt.exe retail
+nddeapi.dll retail
+nddeapir.exe retail
+nddenb32.dll retail
+ndis.sys retail
+ndis30.dll retail
+ndistapi.sys retail
+ndiswan.sys retail
+ne1000.sys retail
+ne2000.sys retail
+ne3200.bin retail
+ne3200.sys retail
+nec24pin.dll retail
+necsnd.dll retail
+necsnd.sys retail
+net.exe retail
+net.hlp retail
+net1.exe retail
+netapi.dll retail
+netapi.os2 retail
+netapi32.dll retail
+netbios.sys retail
+netbond.inf retail
+netbt.sys retail
+netcfg.dll retail
+netcfg.hlp retail
+netdde.exe retail
+netdefs.inf retail
+netdtect.dll retail
+netdtect.inf retail
+netdtect.sys retail
+netevent.dll retail
+netflx.bin retail
+netflx.dll retail
+netflx.sys retail
+neth.dll retail
+netlogon.dll retail
+netmon.cnt netmon
+netmon.hlp netmon
+netmsg.dll retail
+netoemdh.inf retail
+netrap.dll retail
+netsetup.dll retail
+netstat.exe retail
+netui0.dll retail
+netui1.dll retail
+netui2.dll retail
+netware.drv retail
+network.hlp retail
+networks retail
+networks.wri retail
+networkw.wri retail
+nibbles.bas retail
+nlsfunc.exe retail
+nmagent.exe retail
+nmgloss.hlp netmon
+notepad.cnt retail
+notepad.exe retail
+notepad.hlp retail
+npeisa.sys retail
+npfs.sys retail
+npmca.sys retail
+nslookup.exe retail
+nt.fnt retail
+nt2.fnt retail
+nt40.pdf retail
+ntbackup.exe retail
+ntbooks.exe retail
+ntcmds.hlp retail
+ntctl3d.dll retail
+ntcx.sys retail
+ntdetect.com retail
+ntdll.dll retail
+ntdos.sys retail
+ntepc.sys retail
+ntfs.sys retail
+ntio.sys retail
+ntkrnlmp.exe retail
+ntlanman.dll retail
+ntlanui.dll retail
+ntlanui2.dll retail
+ntldr retail
+ntlm.dll retail
+ntlmmain.exe retail
+ntlmssps.dll retail
+ntlmsvc.dll retail
+ntlsapi.dll retail
+ntoskrnl.exe retail
+ntprint.dll retail
+ntprint.inf retail
+ntsecui.hlp retail
+ntshrui.dll retail
+ntshrui.hlp retail
+ntvdm.exe retail
+ntxall.sys retail
+ntxem.sys retail
+null.sys retail
+nw16.exe retail
+nwapi16.dll retail
+nwapi32.dll retail
+nwc.cpl retail
+nwcfg.dll retail
+nwconv.cnt retail
+nwconv.exe retail
+nwconv.hlp retail
+nwdoc.cnt retail
+nwdoc.hlp retail
+nwdocgw.cnt retail
+nwdocgw.hlp retail
+nwevent.dll retail
+nwlnkipx.sys retail
+nwlnknb.sys retail
+nwlnkrip.sys retail
+nwlnkspx.sys retail
+nwprovau.dll retail
+nwrdr.sys retail
+nwsap.dll retail
+nwscript.exe retail
+nwwks.dll retail
+odbcjt32.dll retail
+oemnadam.inf retail
+oemnadap.inf retail
+oemnadar.inf retail
+oemnadd1.inf retail
+oemnadd2.inf retail
+oemnadd3.inf retail
+oemnadd4.inf retail
+oemnadde.inf retail
+oemnaddf.inf retail
+oemnaddi.inf retail
+oemnadds.inf retail
+oemnaddt.inf retail
+oemnade1.inf retail
+oemnade2.inf retail
+oemnade3.inf retail
+oemnadee.inf retail
+oemnadem.inf retail
+oemnaden.inf retail
+oemnadep.inf retail
+oemnadfd.inf retail
+oemnadim.inf retail
+oemnadin.inf retail
+oemnadlb.inf retail
+oemnadlm.inf retail
+oemnadlt.inf retail
+oemnadma.inf retail
+oemnadn1.inf retail
+oemnadn2.inf retail
+oemnadne.inf retail
+oemnadnf.inf retail
+oemnadni.inf retail
+oemnadnm.inf retail
+oemnadnp.inf retail
+oemnadp3.inf retail
+oemnadp9.inf retail
+oemnadpm.inf retail
+oemnadsn.inf retail
+oemnadso.inf retail
+oemnadt2.inf retail
+oemnadtk.inf retail
+oemnadtm.inf retail
+oemnadub.inf retail
+oemnadum.inf retail
+oemnadwd.inf retail
+oemnadwm.inf retail
+oemnadzz.inf retail
+oemnsvbh.inf retail
+oemnsvbr.inf retail
+oemnsvcu.inf retail
+;oemnsvdf.inf retail
+oemnsvdh.inf retail
+oemnsvdn.inf retail
+oemnsvft.inf retail
+oemnsvir.inf retail
+oemnsvin.inf retail
+oemnsvnb.inf retail
+oemnsvnw.inf retail
+oemnsvra.inf retail
+oemnsvri.inf retail
+oemnsvrp.inf retail
+oemnsvrr.inf retail
+oemnsvsa.inf retail
+oemnsvsm.inf retail
+oemnsvsn.inf retail
+oemnsvsp.inf retail
+oemnsvsv.inf retail
+oemnsvtp.inf retail
+oemnsvwi.inf retail
+oemnsvwk.inf retail
+oemnxpdl.inf retail
+oemnxpip.inf retail
+oemnxpnb.inf retail
+oemnxppp.inf retail
+oemnxpsm.inf retail
+oemnxpst.inf retail
+oemnxptc.inf retail
+ofs.sys retail
+ofscnvt.exe retail
+ofssetup.sys retail
+ofsutil.dll retail
+oki24.dll retail
+oki9.dll retail
+oki9ibm.dll retail
+ole2.dll retail
+ole2disp.dll retail
+ole2nls.dll retail
+ole32.dll retail
+oleaut32.dll retail
+olecli.dll retail
+olecli32.dll retail
+olecnv32.dll retail
+oledlg.dll retail
+olepro32.dll retail
+olesvr.dll retail
+olesvr32.dll retail
+olethk32.dll retail
+olidm24.dll retail
+olidm9.dll retail
+oliscsi.sys retail
+opengl32.dll retail
+optional.inf retail
+optra.dll retail
+ora.dll retail
+oramon.dll retail
+orasvc.exe retail
+os2.exe retail
+os2srv.exe retail
+os2ss.exe retail
+osloader.exe retail
+oso001.007 retail
+oso001.009 retail
+oso001.010 retail
+oso001.012 retail
+oso001.016 retail
+oso001.029 retail
+other.inf retail
+pabnsp32.dll retail
+packager.cnt retail
+packager.exe retail
+packager.hlp retail
+pad.inf retail
+paintjet.dll retail
+panmap.dll retail
+panson24.dll retail
+panson9.dll retail
+parallel.sys retail
+parport.sys retail
+parvdm.sys retail
+passport.mid retail
+pax.exe retail
+pbrush.exe retail
+pcimac.sys retail
+pcl.sep retail
+pcl5ems.dll retail
+pcl5ms.dll retail
+pcmcia.sys retail
+pcnet.hlp retail
+pentnt.exe retail
+perfc009.dat retail
+perfctrs.dll retail
+perfh009.dat retail
+perfmon.cnt retail
+perfmon.exe retail
+perfmon.hlp retail
+perfnw.dll retail
+perms.inf retail
+piano.ani retail
+pifmgr.dll retail
+ping.exe retail
+pjlmon.dll retail
+place.dns retail
+plotter.dll retail
+plotui.dll retail
+plotui.hlp retail
+plustab.dll retail
+pmspl.dll retail
+pnpisa.inf dlibbin
+pnpisa.sys retail
+ports.cpl retail
+portuas.exe retail
+posix.exe retail
+prflbmsg.dll retail
+print.exe retail
+printer.wri retail
+printui.dll retail
+probrep.txt retail
+prodspec.ini retail
+prod128.ini retail
+profext.dll retail
+profile.spc retail
+progman.cnt retail
+progman.exe retail
+progman.hlp retail
+pronet16.sys retail
+proprint.dll retail
+proprn24.dll retail
+prorapm.dwn retail
+protocol retail
+proxy.dll retail
+ps1.dll retail
+pscript.dll retail
+pscript.hlp retail
+pscript.sep retail
+pscrptui.dll retail
+psidisp.dll retail
+psidisp.sys retail
+psxdll.dll retail
+psxss.exe retail
+qbasic.exe retail
+qbasic.hlp retail
+qic117.sys retail
+qic157.sys retail
+ql10wnt.sys retail
+quietjet.dll retail
+quikview.exe retail
+quotes retail
+qv.dll retail
+qv.sys retail
+qwiii.dll retail
+rainbow.ani retail
+raindrop.ani retail
+ras.ico retail
+rasacd.sys retail
+rasadhlp.dll retail
+rasadmin.cnt retail
+rasadmin.dll retail
+rasadmin.exe retail
+rassapi.dll retail
+rasadmin.hlp retail
+rasapi16.dll retail
+rasapi32.dll retail
+rasarp.sys retail
+rasauto.dll retail
+rasautou.exe retail
+rascauth.dll retail
+rascbcp.dll retail
+rasccp.dll retail
+rascfg.dll retail
+raschap.dll retail
+rasctrs.dll retail
+rasdd.dll retail
+rasddui.dll retail
+rasddui.hlp retail
+rasdial.exe retail
+rasdlg.dll retail
+rasfil32.dll retail
+rasgloss.cnt retail
+rasgloss.hlp retail
+rasgprxy.dll retail
+rasgtwy.dll retail
+rasipcp.dll retail
+rasiphlp.dll retail
+rasipxcp.dll retail
+rasman.dll retail
+rasman.exe retail
+rasmon.exe retail
+rasmsg.dll retail
+rasmxs.dll retail
+rasnbfcp.dll retail
+rasnbipc.dll retail
+raspap.dll retail
+rasphone.cnt retail
+rasphone.exe retail
+rasscrpt.dll retail
+rasshell.dll retail
+rascpl.cpl retail
+rasphone.hlp retail
+raspppen.dll retail
+raspptpc.dll retail
+raspptpl.dll retail
+raspptpe.sys retail
+raspptpf.sys retail
+raspptpm.sys retail
+raspptpu.sys retail
+rasread.txt retail
+rassauth.dll retail
+rasser.dll retail
+rassetup.cnt retail
+rassetup.hlp retail
+rasspap.dll retail
+rassprxy.exe retail
+rassrv.exe retail
+rastapi.dll retail
+rcp.exe retail
+rdbss.sys drivers
+rdisk.cnt retail
+rdisk.exe retail
+rdisk.hlp retail
+rdr.sys retail
+readme.wri retail
+recom.sys retail
+recover.exe retail
+redir.exe retail
+regedit.cnt retail
+regedit.exe retail
+regedit.hlp retail
+regeditv.cnt retail
+regeditv.hlp retail
+regedt32.cnt retail
+regedt32.exe retail
+regedt32.hlp retail
+regedt16.exe retail
+regedt16.hlp retail
+registry.inf retail
+relay.dll retail
+remline.bas retail
+repart.exe retail
+repl.exe retail
+replace.exe retail
+replanal.exe retail
+restore.exe retail
+rexec.exe retail
+riched.dll retail
+riched32.dll retail
+riched20.dll retail
+ringin.wav retail
+ringout.wav retail
+ripstat.exe retail
+rnal.dll retail
+rnr20.dll retail
+roman.fon retail
+route.exe retail
+router.exe retail
+routetab.dll retail
+rpcltc1.dll retail
+rpcltc8.dll retail
+rpcltccm.dll retail
+rpclts1.dll retail
+rpclts8.dll retail
+rpcltscm.dll retail
+rpcns4.dll retail
+rpcrt4.dll retail
+rpcss.exe retail
+rplcmd.exe retail
+rplcnv.exe retail
+rplmgr.cnt retail
+rplmgr.exe retail
+rplmgr.hlp retail
+rplsvc.exe retail
+rsabase.dll retail
+rsabase.sig retail
+rsh.exe retail
+rshx32.dll retail
+rtradmin.cnt retail
+rtradmin.hlp retail
+rundll32.exe retail
+runonce.exe retail
+s3.dll retail
+s3.sys retail
+samlib.dll retail
+samlsa.dll retail
+samsrv.dll retail
+savedump.exe retail
+sbpnp.inf retail
+scanpst.exe retail
+scanpst.hlp retail
+scclient.exe retail
+sccview.dll retail
+schdpl32.cnt retail
+schdpl32.exe retail
+schdpl32.hlp retail
+schmsg32.dll retail
+sclist.exe idw
+script.doc retail
+script.fon retail
+scrnsave.scr retail
+scsi.inf retail
+scsiport.sys retail
+scsiprnt.sys retail
+scsiscan.sys retail
+sctool.exe retail
+security.dll retail
+secur32.dll retail
+seiko.dll retail
+seiko24e.dll retail
+seikosh9.dll retail
+sendfl32.dll retail
+serial.sys retail
+serialui.dll retail
+serife.fon retail
+serifee.fon retail
+serifeg.fon retail
+serifer.fon retail
+serifet.fon retail
+seriff.fon retail
+seriffe.fon retail
+seriffg.fon retail
+seriffr.fon retail
+serifft.fon retail
+sermouse.sys retail
+services retail
+services.exe retail
+setdom.exe retail
+setup.exe retail
+setup.txt retail
+setup16.inf retail
+setupapi.dll retail
+setupdd.sys retail
+setupdll.dll retail
+setupldr retail
+setupldr.bin retail
+setupp.ini retail
+setupreg.hiv retail
+setver.exe retail
+sfloppy.sys retail
+sfmapi.dll retail
+sfmatalk.sys retail
+sfmatcfg.dll retail
+sfmatmsg.dll retail
+sfmctrs.dll retail
+sfmicon.vol retail
+sfmicons.inf retail
+sfmmap.inf retail
+sfmmgr.cnt retail
+sfmmgr.cpl retail
+sfmmgr.hlp retail
+sfmmon.dll retail
+sfmmsg.dll retail
+sfmprint.exe retail
+sfmpsdib.dll retail
+sfmpsexe.exe retail
+sfmpsfnt.dll retail
+sfmpsprt.dll retail
+sfmreg.exe retail
+sfmres.dll retail
+sfmsrv.sys retail
+sfmsvc.exe retail
+sfmuam.ifo retail
+sfmuam.rsc retail
+sfmuam.txt retail
+sfmutil.dll retail
+sfmwshat.dll retail
+share.exe retail
+shcompui.dll retail
+shell.dll retail
+shell32.dll retail
+shlwapi.dll retail
+shmgrate.exe retail
+shrpubw.exe retail
+shscrap.dll retail
+sidewndr.dll retail
+sidewndr.sys retail
+simptcp.dll retail
+single.exe retail
+sizenesw.ani retail
+sizens.ani retail
+sizenwse.ani retail
+sizewe.ani retail
+skdll.dll retail
+skeys.exe retail
+slcd32.sys retail
+slip.scp retail
+slipmenu.scp retail
+smalle.fon retail
+smallee.fon retail
+smalleg.fon retail
+smaller.fon retail
+smallet.fon retail
+smallf.fon retail
+smallfe.fon retail
+smallfg.fon retail
+smallfr.fon retail
+smallft.fon retail
+smcisa.sys retail
+smctrls.dll retail
+smss.exe retail
+sndblst.dll retail
+sndblst.sys retail
+sndrec32.exe retail
+sndsys.sys retail
+sndsys32.dll retail
+sndvol32.cnt retail
+sndvol32.exe retail
+sndvol32.hlp retail
+snmp.exe retail
+snmpapi.dll retail
+snmptrap.exe retail
+softpub.dll retail
+software retail
+sol.cnt retail
+sol.exe retail
+sol.hlp retail
+sonic.sys retail
+snimac.sys retail
+sort.exe retail
+sortkey.nls retail
+sorttbls.nls retail
+sound.drv retail
+soundrec.cnt retail
+soundrec.hlp retail
+space.gif retail
+sparrow.sys retail
+spddlang.sys retail
+spinit.exe retail
+spock.sys retail
+spoolss.dll retail
+spoolss.exe retail
+sprestrt.exe retail
+srv.sys retail
+srvmgr.cnt retail
+srvmgr.cpl retail
+srvmgr.exe retail
+srvmgr.hlp retail
+srvsvc.dll retail
+ss3dfo.scr retail
+ssbezier.scr retail
+sserife.fon retail
+sserifee.fon retail
+sserifeg.fon retail
+sserifer.fon retail
+sserifet.fon retail
+sseriff.fon retail
+sseriffe.fon retail
+sseriffg.fon retail
+sseriffr.fon retail
+sserifft.fon retail
+ssflwbox.scr retail
+ssmaze.scr retail
+ssmarque.scr retail
+ssmyst.scr retail
+sspipes.scr retail
+ssstars.scr retail
+sstext3d.scr retail
+star24e.dll retail
+star9e.dll retail
+starjet.dll retail
+stdole.tlb retail
+stdole2.tlb retail
+stdole32.tlb retail
+stopwtch.ani retail
+storage.dll retail
+store32.dll retail
+streams.sys retail
+subroutn.inf retail
+subst.exe retail
+sumcat.dll retail
+supp_ed.cnt retail
+supp_ed.hlp retail
+switch.inf retail
+sxbios.bin retail
+sxfep.bin retail
+symbol.ttf retail
+symbole.fon retail
+symbolf.fon retail
+symc810.sys retail
+syncapp.exe retail
+synceng.dll retail
+syncui.dll retail
+synth.dll retail
+synth.pat retail
+synth.sys retail
+sysdm.cpl retail
+sysedit.exe retail
+sysmgmt.dll retail
+sysprint.sep retail
+syssetup.dll retail
+syssetup.inf retail
+system retail
+system.drv retail
+system.ini retail
+system.mdb retail
+systray.exe retail
+t128.sys retail
+t13b.sys retail
+t1instal.dll retail
+tada.wav retail
+tandqic.sys retail
+tape.inf retail
+tape.sys retail
+tapi.dll retail
+tapi32.dll retail
+tapiperf.dll retail
+tapisrv.exe retail
+tasklist.hlp netmon
+taskman.exe retail
+taskmgr.cnt retail
+taskmgr.exe retail
+taskmgr.hlp retail
+tcarc.sys retail
+tcpcfg.dll retail
+tcpip.cnt retail
+tcpip.hlp retail
+tcpip.sys retail
+tcpsvcs.exe retail
+tdi.sys retail
+telephon.cpl retail
+telnet.cnt retail
+telnet.exe retail
+telnet.hlp retail
+tftp.exe retail
+tga.dll retail
+tga.sys retail
+thinkjet.dll retail
+ti850.dll retail
+timedate.cpl retail
+timer.drv retail
+times.ttf retail
+timesbd.ttf retail
+timesbi.ttf retail
+timesi.ttf retail
+tmv1.sys retail
+toolhelp.dll retail
+trace.dll retail
+tracert.exe retail
+tree.com retail
+trident.sys retail
+trnsch32.dll retail
+tsd32.dll retail
+tssoft32.acm retail
+txtonly.dll retail
+txtsetup.sif retail
+typelib.dll retail
+ubnei.bin retail
+ubnei.sys retail
+ubnei.sys retail
+ufat.dll retail
+ulib.dll retail
+ulibif.dll retail
+ultra124.sys retail
+ultra14f.sys retail
+ultra24f.sys retail
+umpnpmgr.dll retail
+unicode.nls retail
+unimdm.tsp retail
+unlodctr.exe retail
+untfs.dll retail
+uofs.dll retail
+updsc.exe retail
+upg351db.exe retail
+ups.cpl retail
+ups.exe retail
+ureg.dll retail
+user.exe retail
+user32.dll retail
+imm32.dll retail
+userdiff retail
+userenv.dll retail
+userinit.exe retail
+usetup.exe retail
+usrmgr.cnt retail
+usrmgr.exe retail
+usrmgr.hlp retail
+utility.inf retail
+v7vga.rom retail
+v7vram.sys retail
+vanisher.ani retail
+vcdex.dll retail
+vdmdbg.dll retail
+vdmredir.dll retail
+veneer.exe retail
+ver.dll retail
+version.dll retail
+vform32.dll retail
+vga.dll retail
+vga.drv retail
+vga.sys retail
+vga256.dll retail
+vga64k.dll retail
+vga737.fon retail
+vga850.fon retail
+vga852.fon retail
+vga857.fon retail
+vga860.fon retail
+vga861.fon retail
+vga863.fon retail
+vga865.fon retail
+vga866.fon retail
+vga869.fon retail
+vgafix.fon retail
+vgafixe.fon retail
+vgafixg.fon retail
+vgafixr.fon retail
+vgafixt.fon retail
+vgaoem.fon retail
+vgasys.fon retail
+vgasyse.fon retail
+vgasysg.fon retail
+vgasysr.fon retail
+vgasyst.fon retail
+video.inf retail
+videoprt.sys retail
+videosim.sys retail
+vmmreg32.dll retail
+vsasc8.dll retail
+vsbmp.dll retail
+vsdrw.dll retail
+vsexe.dll retail
+vsexe2.dll retail
+vsmp.dll retail
+vsmsw.dll retail
+vspp.dll retail
+vspp7.dll retail
+vsqp6.dll retail
+vsrtf.dll retail
+vstiff.dll retail
+vsw6.dll retail
+vswks.dll retail
+vswmf.dll retail
+vsword.dll retail
+vswork.dll retail
+vswp5.dll retail
+vswp6.dll retail
+vswpf.dll retail
+vsxl5.dll retail
+vwipxspx.dll retail
+vwipxspx.exe retail
+w32.dll retail
+wagtail.ani retail
+wangqic.sys retail
+wd33c93.sys retail
+wd90c24a.dll retail
+wd90c24a.sys retail
+wdl.trm retail
+wdt32.dll retail
+wdvga.sys retail
+weitekp9.dll retail
+weitekp9.sys retail
+wfwnet.drv retail
+wgpoadmn.dll retail
+wgpocpl.cpl retail
+wgpomg32.dll retail
+win.com retail
+win.ini retail
+win32k.sys retail
+win32spl.dll retail
+win87em.dll retail
+winchat.cnt retail
+winchat.exe retail
+winchat.hlp retail
+windisk.cnt retail
+windisk.exe retail
+windisk.hlp retail
+windiska.cnt retail
+windiska.hlp retail
+windows.cnt retail
+windows.hlp retail
+winfile.cnt retail
+winfile.exe retail
+winfile.hlp retail
+winfile.ini retail
+wingding.ttf retail
+winhelp.exe retail
+winhelp.hlp retail
+winhlp32.cnt retail
+winhlp32.exe retail
+winhlp32.hlp retail
+winhstb.exe retail
+winlogon.exe retail
+winmine.cnt retail
+winmine.exe retail
+winmine.hlp retail
+winmm.dll retail
+winmsd.exe retail
+winnt.bmp retail
+winnt.exe retail
+winnt.hlp retail
+winnt256.bmp retail
+winoldap.mod retail
+winperms.txt retail
+winprint.dll retail
+wins.exe retail
+winsadmn.cnt retail
+winsadmn.exe retail
+winsadmn.hlp retail
+winsctrs.dll retail
+winsevnt.dll retail
+winsmib.dll retail
+winsock.dll retail
+winspool.drv retail
+winspool.exe retail
+winsrpc.dll retail
+winsrv.dll retail
+winstrm.dll retail
+wintrust.dll retail
+winver.exe retail
+wizmgr.exe retail
+wkssvc.dll retail
+wmsfr32.dll retail
+wmssetup.exe retail
+wmsui32.dll retail
+wow32.dll retail
+wowdeb.exe retail
+wowexec.exe retail
+wowfax.dll retail
+wowfaxui.dll retail
+write.exe retail
+ws2_32.dll retail
+ws2help.dll retail
+ws2map.dll retail
+wsasetup.dll retail
+wshisn.dll retail
+wshnetbs.dll retail
+wshtcpip.dll retail
+wsock32.dll retail
+xabios.bin retail
+xacook.bin retail
+xactsrv.dll retail
+xcopy.exe retail
+xeroxpcl.dll retail
+xga.dll retail
+xga.sys retail
+85f1257.fon retail
+85775.fon retail
+85s1257.fon retail
+app775.fon retail
+coue1257.fon retail
+couf1257.fon retail
+sere1257.fon retail
+serf1257.fon retail
+smae1257.fon retail
+smaf1257.fon retail
+ssee1257.fon retail
+ssef1257.fon retail
+sysdm.hlp retail
+vga775.fon retail
+vgaf1257.fon retail
+vgas1257.fon retail
+winnt32.exe winnt32
+winnt32.hlp winnt32
+9track.sys drivers
+dce376nt.sys drivers
+decbt459.sys drivers
+dzport.sys drivers
+em_drvr.sys drivers
+exmb.xfm drivers
+iiop.sys drivers
+mcsxns.sys drivers
+mouse.sys drivers
+mvopl3.sys drivers
+ncrcam.sys drivers
+pcidump.sys drivers
+pdii.sys drivers
+pstat.sys drivers
+scsitape.sys drivers
+simbad.sys drivers
+smbtrsup.sys drivers
+ubnb.sys drivers
+vga_alt.sys drivers
+hosts.shp drvetc
+lmhosts.shp drvetc
+aboutwep.dll idw
+accesori.grp idw
+access.exe idw
+access.wri idw
+access.hlp retail
+access35.hlp idw
+acllist.exe idw
+addfile.exe idw
+addproj.exe idw
+adduser.exe idw
+admin.grp idw
+alias.exe idw
+aniedit.exe idw
+apidll.dll idw
+apimon.exe idw
+apimon.hlp idw
+appxec32.dll idw
+autolfn.exe idw
+autowrap.exe idw
+basewin.exe idw
+bcc32.dll idw
+beep.exe idw
+bells.wav idw
+bin2c.exe idw
+bind.exe idw
+bingen.exe idw
+binplace.exe idw
+bintrack.exe idw
+bldsam2.exe idw
+blocks.wav idw
+bowdeb.exe idw
+boxes.bmp idw
+browdeb.exe idw
+browmon.exe idw
+browse.exe idw
+browstat.exe idw
+bugboard.exe idw
+build.exe idw
+build.hlp idw
+buildnum.exe idw
+bummer.wav idw
+cat.exe idw
+cats.exe idw
+catsrc.exe idw
+cdb.exe idw
+cdp.exe idw
+certify.exe idw
+cfront.exe idw
+checkfix.exe idw
+checkin.cmd idw
+checkins.txt idw
+checkrel.bnd idw
+checkrel.chk idw
+checkrel.exe idw
+chess.bmp idw
+chkalive.exe idw
+chkfile.chk idw
+chkslm.exe idw
+chksum.exe idw
+chkverfy.exe idw
+chmode.exe idw
+choice.exe idw
+cin.exe idw
+ciscan.exe idw
+clap.wav idw
+clearmem.exe dump
+clock.wav idw
+cmdevent.exe idw
+cmpver.exe idw
+compdir.exe idw
+compinst.exe idw
+connect.exe idw
+contrast.exe idw
+cookie.exe idw
+cp.exe idw
+cpustres.exe dump
+crash.exe idw
+crashdmp.exe idw
+creatfil.exe dump
+cruel.exe idw
+ctrlist.exe idw
+curridw.exe idw
+dbgdump.exe idw
+dbmon.exe idw
+dbnmp3.dll idw
+dbwin32.exe idw
+dcomp.exe idw
+dconnect.exe idw
+defect.exe idw
+delfile.exe idw
+delnode.exe idw
+delprof.exe idw
+delproj.exe idw
+dh.exe idw
+dhcpcli.exe idw
+dhcpcmd.exe idw
+dhcpins.exe idw
+dhcploc.exe idw
+dhcptst.exe idw
+diamond.exe idw
+diamwrap.exe idw
+diff.exe idw
+diruse.exe idw
+dis.exe idw
+diskedit.exe idw
+diskmon.exe idw
+dist.exe idw
+dnscmd.exe dump
+dnsstat.exe dump
+dommon.exe idw
+door.wav idw
+dosdev.exe idw
+drat.wav idw
+drivemap.exe idw
+drum.wav idw
+dskbench.exe idw
+dskimage.exe idw
+du.exe idw
+dumpchk.exe idw
+dumpexam.exe idw
+dumpflop.exe idw
+dumpgrp.exe idw
+dumpref.exe idw
+ech.exe idw
+echotime.exe idw
+editreg.exe idw
+editsym.exe idw
+empty.exe dump
+emptyw32.dll idw
+enlist.exe idw
+enterp.bmp idw
+ethstat.exe idw
+exctrlst.exe idw
+execmail.exe idw
+exp.exe idw
+fcom.exe idw
+filever.exe idw
+files.exe idw
+filter.exe idw
+filter32.dll idw
+findf.exe idw
+fix31grp.exe idw
+fixdiff.exe idw
+fixlinks.exe idw
+floplock.exe idw
+forceflt.exe idw
+forcemrg.exe idw
+games.grp idw
+gensrv.exe idw
+getbin.exe idw
+getbin.exe idw
+getdbg.exe idw
+getnt.exe idw
+gflags.exe idw
+glass.wav idw
+golf.exe idw
+gong.wav idw
+good32.dll idw
+grptoreg.exe idw
+guidlib.exe idw
+hd.exe idw
+he.exe idw
+head.exe idw
+heapmon.exe idw
+hextract.exe idw
+hihat.wav idw
+hivedmp.exe idw
+hivehdr.exe idw
+hiveini.exe idw
+horns.wav idw
+hsplit.exe idw
+imagecfg.exe idw
+imagechk.exe idw
+in.exe idw
+includes.exe idw
+infs.exe idw
+infsize.exe idw
+ini.exe idw
+instaler.exe idw
+instsrv.exe idw
+inxtoreg.exe idw
+iodll.dll idw
+jawharp.wav idw
+jiberish.wav idw
+kbdtool.exe idw
+kernprof.exe idw
+kernrate.exe idw
+kerntwk.exe idw
+kill.exe idw
+killwow.exe idw
+killwow.sym idw
+laser.wav idw
+laughs.wav idw
+layout.exe idw
+leakyapp.exe dump
+links.exe idw
+list.exe idw
+listmung.exe idw
+llscmd.exe idw
+llsdbg.exe idw
+lnkdump.exe idw
+loc.exe idw
+local.exe idw
+log.exe idw
+lookatwb.cmd idw
+ls.exe idw
+main.grp idw
+makedisk.exe idw
+mapmsg.exe idw
+mbrmake.exe idw
+mbrowse.dll idw
+mbytes.exe idw
+mcitest.exe idw
+mcpyfile.exe idw
+mepparty.dll idw
+merge.exe idw
+midleb.exe idw
+midlpg.exe idw
+midlyacc.exe idw
+mlayout.exe idw
+modif.hlp idw
+mondmp.exe idw
+moninit.exe idw
+mprtest.exe idw
+mrc.exe idw
+msize.exe idw
+mtc.exe idw
+mttf.exe idw
+mttfvwr.exe idw
+munge.exe idw
+mv.exe idw
+nbtd.exe idw
+nbtinfo.exe idw
+nclipps.dll idw
+netclip.exe idw
+netconf idw
+netd.exe idw
+netjoin.exe idw
+netobj.dll idw
+netperm.exe idw
+netshare.exe idw
+netwatch.exe idw
+nlmon.exe idw
+nltest.exe idw
+nt.bmp idw
+ntddecmn.exe idw
+ntfsdump.exe idw
+ntimer.exe idw
+nvram.exe idw
+objdir.exe idw
+objmon.exe idw
+oeminf.exe idw
+oform32.dll idw
+ohoh.wav idw
+openall.exe idw
+order.exe idw
+out.exe idw
+paper.bmp idw
+paranoia.exe idw
+parcomp.exe idw
+parse.exe idw
+parsync.exe idw
+party.bmp idw
+passprop.exe idw
+pcall.exe idw
+pcmcmd.exe idw
+pdump.exe idw
+pdh.dll dump
+pdhdefs.txt dump
+pdlcnfig.exe dump
+pdlcnfig.hlp dump
+pdlcnfig.cnt dump
+pdlsvc.exe dump
+pegged.exe idw
+perms.exe idw
+playsnd.exe idw
+pop.wav idw
+pppmenu.scp retail
+ppr.exe idw
+pperf.exe idw
+pretty.exe idw
+prodfilt.exe idw
+property.q idw
+psxhello.exe idw
+pyramid.bmp idw
+qgrep.exe idw
+qslice.exe idw
+quickrun.exe idw
+random.exe idw
+rasether.dll idw
+rathole.exe idw
+rcdata1.dll idw
+rcdump.exe idw
+rcpp.exe idw
+readline.exe idw
+regback.exe idw
+regdmp.exe idw
+regdir.exe idw
+regini.exe idw
+regfind.exe idw
+regtogrp.exe idw
+remote.exe idw
+repair.exe idw
+request.cmd idw
+rescan.exe idw
+rescan.exe idw
+resmon.exe idw
+resolv.cnf idw
+reversi.exe idw
+ribbons.bmp idw
+rollback.exe idw
+roshare.exe idw
+rpctrace.exe idw
+rwinf.dll idw
+rwmac.dll idw
+rwres32.dll idw
+rwwin16.dll idw
+rwwin32.dll idw
+sadmin.exe idw
+scmain.exe idw
+scomp.exe idw
+secedit.dll idw
+secedit.exe idw
+seclist.exe idw
+sed.exe idw
+sert32.dll idw
+setedit.exe dump
+setidw.bat idw
+setidw.ini idw
+setlink.exe idw
+setwin95.cmd idw
+setnt351.cmd idw
+showinst.exe idw
+showperf.exe idw
+shutdown.exe idw
+shuttle.exe idw
+simbad.exe idw
+siren.wav idw
+size.exe idw
+slash.bmp idw
+sleep.exe idw
+slm.exe idw
+slmck.exe idw
+slmdiff.exe idw
+slmed.exe idw
+smbtrace.exe idw
+snake.exe idw
+snmpctrl.exe idw
+snmptest.exe idw
+snmptst1.exe idw
+snmptst2.exe idw
+snmptst3.exe idw
+snmptst4.exe idw
+snmptst5.exe idw
+snmptst6.exe idw
+snmptst7.exe idw
+snmptst8.exe idw
+snmputil.exe idw
+solidpp.exe idw
+splinfo.exe idw
+splitsym.exe idw
+spots.bmp idw
+srch.exe idw
+srch.hlp idw
+srvname.exe idw
+ssptest.exe idw
+ssync.exe idw
+startpgm.exe idw
+startup.grp idw
+status.exe idw
+statw32.dll dump
+std.bmp idw
+steel.bmp idw
+stringpp.exe idw
+strings.exe idw
+strip.exe idw
+stripcv.exe idw
+stripinf.exe idw
+strmdbg.exe idw
+strmexts.dll idw
+structo.exe idw
+suck.exe idw
+switcher.exe idw
+sync.exe idw
+sysdiff.exe idw
+sysdiff.inf idw
+tail.exe idw
+taipei.exe idw
+takeown.exe idw
+tbitmap.exe idw
+tc.exe idw
+tcpexts.dll idw
+tdi_init.exe idw
+tee.exe idw
+template.xxx idw
+tictac.exe idw
+tile.exe idw
+timeit.exe idw
+timer.exe idw
+timerw32.dll dump
+timpani.wav idw
+tlist.exe idw
+tools.grp idw
+topdesk.exe idw
+topdesk.hlp idw
+tophook.dll idw
+touch.exe idw
+tpdiff.exe idw
+train.wav idw
+trans.exe idw
+trnncx32.dll idw
+typeall.cmd idw
+tz.exe idw
+uixport.exe idw
+undoinst.exe idw
+units.exe idw
+unmerge.exe idw
+upd.exe idw
+upddbg.exe idw
+updrn.exe idw
+vault.wav idw
+vdesk.exe idw
+vi.exe idw
+w3dblib.dll idw
+wah.wav idw
+wait.exe dump
+walk.exe idw
+water.wav idw
+wc.exe idw
+wcshdr.exe idw
+weave.bmp idw
+whales.wav idw
+whatis.exe idw
+where.exe idw
+winapps.grp idw
+winat.exe idw
+winat.hlp idw
+winbez.exe idw
+winclip.dll idw
+winmsdp.exe idw
+winobj.exe idw
+winraid.exe idw
+winschk.exe idw
+winscl.exe idw
+winsdrv.exe idw
+winstst.exe idw
+winvtp.exe idw
+wizard32.dll idw
+wnbstat.exe idw
+wow.grp idw
+wow16.grp idw
+ws.exe idw
+ws2hdr.exe idw
+wzmail.exe idw
+xdosnet.exe idw
+xenix32.dll idw
+xerox.exe idw
+ximail32.dll idw
+yapt.exe idw
+ync.exe idw
+z.exe idw
+zextens.dll idw
+patchdll.dll idw\setup
+setupupg.hiv idw\setup
+setupret.hiv idw\setup
+setup2p.hiv idw\setup
+setup4p.hiv idw\setup
+setup8p.hiv idw\setup
+setup16p.hiv idw\setup
+setup32p.hiv idw\setup
+tbomb30.hiv idw\setup
+tbomb60.hiv idw\setup
+tbomb90.hiv idw\setup
+tbomb120.hiv idw\setup
+unattend.txt retail
+update.exe idw\setup
+update.inf idw\setup
+abtou.exe mstools
+afdkd.dll mstools
+alphakd.exe mstools
+anm.exe mstools
+apf32cvt.exe mstools
+apf32dmp.exe mstools
+as0.exe mstools
+as1.exe mstools
+asaxp.exe mstools
+asaxp.hlp mstools
+c1.err mstools
+c1.exe mstools
+c1xx.exe mstools
+c2.exe mstools
+c23.err mstools
+c3.dll mstools
+cap.dll mstools
+capdump.exe mstools
+capsetup.exe mstools
+cc.exe mstools
+cfe.exe mstools
+cl.err mstools
+cl.exe mstools
+cl.hlp mstools
+cl32.msg mstools
+cl32.msg mstools
+claxp.exe mstools
+claxp.txt mstools
+cmidl.exe mstools
+compress.exe mstools
+contents.exe mstools
+contents.hlp mstools
+contents.ini mstools
+cor.exe mstools
+cpp.exe mstools
+cputherm.exe mstools
+cvdump.exe mstools
+cvpack.err mstools
+cvpack.exe mstools
+cvtomf.exe mstools
+cvtres.err mstools
+cvtres.exe mstools
+dbi.dll mstools
+ddespy.exe mstools
+ddicnvrt.exe mstools
+ddictl.exe mstools
+ddk.hdx mstools
+ddk.hlp mstools
+ddk.ind mstools
+debug.hlp mstools
+dflayout.dll mstools
+dflayout.exe mstools
+dfskd.dll mstools
+dfview.exe mstools
+dhcp.mib mstools
+dlgedit.exe mstools
+dlgedit.hlp mstools
+dm.dll mstools
+dm32s.dll mstools
+dmkdalp.dll mstools
+dmkdmip.dll mstools
+dmkdppc.dll mstools
+dmkdx86.dll mstools
+dobjview.exe mstools
+drivers.exe mstools
+drvlog.dll mstools
+dsysmidl.exe mstools
+edithlp.hlp mstools
+eecxxalp.dll mstools
+eecxxmip.dll mstools
+eecxxppc.dll mstools
+eecxxx86.dll mstools
+emalp.dll mstools
+emmip.dll mstools
+emppc.dll mstools
+emx86.dll mstools
+err.cc mstools
+errors.hlp mstools
+fastimer.exe mstools
+fernel32.dll mstools
+filter.dll mstools
+fontedit.exe mstools
+fontedit.hlp mstools
+ftp.mib mstools
+gdikdx.dll mstools
+ttkdx.dll mstools
+getstart.hlp mstools
+gopherd.mib mstools
+gutils.dll mstools
+hc.bat mstools
+hc30.exe mstools
+hc31.err mstools
+hc31.exe mstools
+hcrtf.exe mstools
+hcw.exe mstools
+hdxdll.dll mstools
+hook.dll mstools
+http.mib mstools
+hwdll.dll mstools
+i386kd.exe mstools
+imagedit.exe mstools
+imagedit.hlp mstools
+inetsrv.mib mstools
+instrapi.dll mstools
+irotview.exe mstools
+isnext.dll mstools
+iviewers.dll mstools
+justify.dll mstools
+kdextalp.dll mstools
+kdextmip.dll mstools
+kdextppc.dll mstools
+kdexts.dll mstools
+kdextx86.dll mstools
+lib.exe mstools
+lib.hlp mstools
+lib32.exe mstools
+lineedit.dll mstools
+link.err mstools
+link.exe mstools
+link.hlp mstools
+link32.exe mstools
+lmmib2.mib mstools
+logger32 mstools
+lookmon.exe mstools
+makeani.exe mstools
+mapsym.exe mstools
+masm386.exe mstools
+mc.exe mstools
+mc.hlp mstools
+mcl.exe mstools
+mep.exe mstools
+mep.hlp mstools
+mhelp.dll mstools
+mib_ii.mib mstools
+mibcc.exe mstools
+midl.exe mstools
+mip2coff.exe mstools
+mipskd.exe mstools
+mkheader.exe mstools
+mktlib34.exe mstools
+mktyplib.exe mstools
+ml.err mstools
+ml.exe mstools
+mlink32.exe mstools
+mrbc.exe mstools
+msas0.exe mstools
+msas1.exe mstools
+msc.hlp mstools
+msdis.exe mstools
+mshelp.dll mstools
+mspdb40.dll mstools
+mspdb41.dll mstools
+mstest.hlp mstools
+msu.exe mstools
+msugen.exe mstools
+msumerge.exe mstools
+msuopt.exe mstools
+msvcbook.dll mstools
+mupkd.dll mstools
+nmake.err mstools
+nmake.exe mstools
+nmake.hlp mstools
+ntdetect.chk mstools
+ofskd.dll mstools
+ole.hdx mstools
+ole.hlp mstools
+ole.ind mstools
+ole2ui.hlp mstools
+oletools.hlp mstools
+oleview.exe mstools
+opengl.hdx mstools
+opengl.hlp mstools
+opengl.ind mstools
+pas.exe mstools
+perfmtr.exe mstools
+pfmon.exe mstools
+pmatch.dll mstools
+pmon.exe mstools
+poolmon.exe mstools
+ppckd.exe mstools
+profile.exe mstools
+psapi.dll mstools
+pstat.exe mstools
+pt.hdx mstools
+pt.hlp mstools
+pt.ind mstools
+pview.exe mstools
+pviewer.exe mstools
+rc.exe mstools
+rc.hlp mstools
+rcdll.dll mstools
+rdrkd.dll mstools
+rdr2kd.dll mstools
+rebase.exe mstools
+register.exe mstools
+regtlb.exe mstools
+rlman.exe mstools
+rm.exe mstools
+rpc.hdx mstools
+rpc.hlp mstools
+rpc.ind mstools
+samples.hlp mstools
+sc.exe mstools
+sct.hdx mstools
+sct.hlp mstools
+sct.ind mstools
+sde.dll mstools
+sdkddk.grp mstools
+set.hdx mstools
+set.hlp mstools
+set.ind mstools
+shcv.dll mstools
+shed.exe mstools
+shed.hlp mstools
+smashlck.exe mstools
+smbtrace.exe mstools
+smi.mib mstools
+soc.hdx mstools
+soc.hlp mstools
+soc.ind mstools
+spy.exe mstools
+srvkd.dll mstools
+symcvt.dll mstools
+symedit.exe mstools
+testctrl.dll mstools
+testdlgs.dll mstools
+testdlgs.exe mstools
+testdrvr.exe mstools
+testevnt.dll mstools
+testscrn.dll mstools
+testscrn.exe mstools
+testview.dll mstools
+testvw32.dll mstools
+tglcase.dll mstools
+thunk.exe mstools
+tlloc.dll mstools
+tlpipe.dll mstools
+tlser.dll mstools
+tlser32.dll mstools
+tlser32s.dll mstools
+tools.hdx mstools
+tools.hlp mstools
+tools.hlp mstools
+tools.ind mstools
+top.exe mstools
+ugen.exe mstools
+ulcase.dll mstools
+undel.exe mstools
+undname.exe mstools
+unregtlb.exe mstools
+uopt.exe mstools
+upas.exe mstools
+userkdx.dll mstools
+uuidgen.exe mstools
+vadump.exe mstools
+vdmperf.exe mstools
+verfix.exe mstools
+vfw.hdx mstools
+vfw.hlp mstools
+vfw.ind mstools
+vidcap32.exe mstools
+wdbg32s.exe mstools
+win32.hdx mstools
+win32.hlp mstools
+win32.ind mstools
+win32api.dat mstools
+windbg.exe mstools
+windbg.hlp mstools
+windbgrm.exe mstools
+windiff.exe mstools
+windiff.hlp mstools
+wins.mib mstools
+winsock.hlp mstools
+wperf.exe mstools
+ws1.dll mstools
+wst.dll mstools
+wstcat.exe mstools
+wstdump.exe mstools
+wstune.exe mstools
+zdi32.dll mstools
+zdvapi32.dll mstools
+zernel32.dll mstools
+zinsrv.dll mstools
+zle32.dll mstools
+zoomin.exe mstools
+zrtdll.dll mstools
+zser32.dll mstools
+zwapi.exe mstools
+canon10e.dll printer
+canon130.dll printer
+drivers.ini printer
+execjet.dll printer
+toshiba.dll printer
+ab.dll system
+acmcps32.dll system
+backupa.hlp system
+basertl.dll system
+big5.nls system
+bowsvc.dll system
+c_10001.nls system
+c_10002.nls system
+c_10003.nls system
+c_10004.nls system
+c_10005.nls system
+c_10008.nls system
+c_1361.nls system
+c_29001.nls system
+c_708.nls system
+c_720.nls system
+c_862.nls system
+c_864.nls system
+c_874.nls system
+c_932.nls system
+c_936.nls system
+c_949.nls system
+c_950.nls system
+cairocpl.dll system
+cal.dll system
+calendar.exe system
+calendar.hlp system
+carton.exe system
+cdbmpctl.dll system
+cdforms.tlb system
+cdloghrs.dll system
+cfg3270.dll system
+cfm30d.dll system
+cfm30ud.dll system
+cfmo30d.dll system
+cfmo30ud.dll system
+cfmtn30.dll system
+cfmtn30d.dll system
+cfmtno30.dll system
+cfmtno3d.dll system
+cleanup.exe system
+clipbook.exe system
+clipbrda.hlp system
+clock.dll system
+clocksch.dll system
+comm.sym system
+commdlg.map system
+commdlg.sym system
+commnot.dll system
+compob32.dll system
+control2.exe system
+control2.exe system
+controla.hlp system
+cpdskadm.dll system
+cpo.dll system
+cpprint.dll system
+cpsetup.exe system
+cpsrv.exe system
+cpsrvcs.dll system
+cpups.dll system
+credini.exe system
+devapps.cpl system
+ctl3d32.dll system
+ctl3dv2.map system
+ctl3dv2.sym system
+cursor.seq system
+dahard.dll system
+ddeml.map system
+ddeml.sym system
+demilayr.dll system
+desk.dll system
+desktop.exe system
+dfsmsgs.dll system
+diskman.hlp system
+display.inf system
+display.inf system
+dlc3270.dll system
+dosx.map system
+dosx.sym system
+drwatson.map system
+drwatson.sym system
+dscont.dll system
+dsktoobj.exe system
+elfapi.dll system
+evntvwra.hlp system
+explsrv.exe system
+fole2ui.dll system
+formidbl.dll system
+formtool.exe system
+framewrk.dll system
+ftphelp.dll system
+gdi.map system
+gdi.sym system
+gdiexts.dll system
+group_ui.dll system
+grptoobj.exe system
+hyprwrit.exe system
+impexp.dll system
+init_tdi.exe system
+initial.inf system
+intro.seq system
+ipinfor.inf system
+job.dll system
+kb_msl.hlp system
+keyboard.map system
+keyboard.sym system
+killora.exe system
+krnl386.map system
+krnl386.sym system
+krnl386.sys system
+ksc.nls system
+label.rsp retail
+lastwins.dll system
+layedit.exe system
+layrdisp.dll system
+ldrdll.dll system
+lmmon.dll system
+lmspool.dll system
+lmsvcs.exe system
+loader.exe system
+locate.exe system
+lsaudll.dll system
+lt200msg.dll system
+ltype.ttf system
+mailmgr.dll system
+mailspl.exe system
+mciole16.map system
+mciole16.sym system
+mcsxnsvc.exe system
+mfcuia32.dll system
+mfcuiw32.dll system
+mkvolume.exe system
+mmsystem.map system
+mmsystem.sym system
+mmtask.map system
+mmtask.sym system
+mouse.inf system
+mouse.map system
+mouse.sym system
+mprmain.dll system
+msacm.sym system
+msherc.com system
+msmail.exe system
+msmail.hlp system
+msp32_br.lex system
+msp32_da.lex system
+msp32_es.lex system
+msp32_fi.lex system
+msp32_fr.lex system
+msp32_ge.lex system
+msp32_it.lex system
+msp32_nb.lex system
+msp32_nl.lex system
+msp32_pb.lex system
+msp32_sw.lex system
+mspelf32.dll system
+msremind.exe system
+mssched.dll system
+mssfs.dll system
+mstools.inf system
+mvopl3.dll system
+mvopl3.pat system
+ncpa.hlp system
+nddeexts.dll system
+ninstall.exe system
+noise.ptb system
+noise.ptg system
+ntcmdsa.hlp system
+ntdos.map system
+ntdos.sym system
+ntio.sym system
+ntsd.exe system
+ntsdexts.dll system
+nwlnkcf1.dll system
+nwlnkcfg.dll system
+nwlnkmsg.dll system
+nwlnksvc.exe system
+nwnblink.dll system
+nwnblink.exe system
+nwsvc.exe system
+oemndrdt.inf system
+oemndrdt.inf system
+oemnsvrc.inf system
+oemnsvre.inf system
+oemnxpi1.inf system
+oemnxpi1.inf system
+oemnxpxn.inf system
+oemsetup.inf system
+ofs.tlb system
+ofsaconv.exe system
+ogldrv.dll system
+ole232.dll system
+ole2pr32.dll system
+olecli.sym system
+olecli.map system
+oleexts.dll system
+oleprx32.dll system
+olesvr.map system
+olesvr.sym system
+os2dll.dll system
+pabnsp.dll system
+package.dll system
+partial.inf system
+passgen.exe system
+pdf.dll system
+pdfpage.dll system
+perfmetr.exe system
+perfmona.hlp system
+pifedita.hlp system
+pkgpages.dll system
+popup.dll system
+port.dll system
+ports.dll system
+pps.hlp system
+prc.nls system
+prcp.nls system
+prictl.cpl system
+printers.ini system
+printmna.hlp system
+progmana.hlp system
+propset.dll system
+prvmgmt.tlb system
+pslanman.sep system
+rasapi16.map system
+rasapi16.sym system
+rcmd.exe system
+rcmdsvc.exe system
+regeda32.hlp system
+remlabel.cmd retail
+repair.inf system
+replcfg.exe system
+reprtreg.exe system
+rpcepmap.exe system
+rpcepmpr.exe system
+rpcltc4.dll system
+rtfdoc.dll system
+rtoolbar.dll system
+rtutils.dll idw
+scexts.dll system
+schdplus.exe system
+schdplus.hlp system
+schedmsg.dll system
+schemes.cpl system
+sendfile.dll system
+setupnta.hlp system
+sfmctrnm.h system
+sfmctrs.ini system
+sfmmgr.dll system
+shamu.dll system
+shdebug.dll system
+shell.sym system
+shrapp.dll system
+shsample.dll system
+sna3270.dll system
+sndsys.pat system
+sound.map system
+sound.sym system
+spincube.dll system
+splexts.dll system
+storag32.dll system
+store.dll system
+sys003.dll system
+sysman.tlb system
+system.dll system
+system.map system
+system.sym system
+telnet.dll system
+tenet.exe system
+timedate.cpl system
+timer.map system
+timer.sym system
+tlib34.dll system
+toolhelp.map system
+toolhelp.sym system
+topview.exe system
+tray.exe system
+trc3270.dll system
+trnsched.dll system
+ubnbmsg.dll system
+ubnbsvc.exe system
+uhpfs.dll system
+user.map system
+user.sym system
+userconv.cnt system
+userexts.dll system
+vaen232.dll system
+vaen232.olb system
+vba232.dll system
+vbs.tlb system
+vbscript.exe system
+vdmexts.dll system
+vforms.dll system
+vga.map system
+vga.sym system
+virtual.inf system
+wdvga.dll system
+webcore.dll system
+wfwnet.map system
+wfwnet.sym system
+wgpomgr.dll system
+win3270.exe system
+win3270.hlp system
+winbug.dat system
+winbug.exe system
+winbug.hlp system
+winbug10.dll system
+windows.cnt system
+winfilea.hlp system
+winipcfg.exe system
+winnt_as.hlp system
+winnt_as.ind system
+winoldap.sym system
+winole.tlb system
+winperf.exe system
+winreg.dll system
+winsock.map system
+winsock.sym system
+winspool.map system
+winspool.sym system
+winsrpcb.dll system
+winsrvk.dll system
+wntupmgr.cnt system
+wowdeb.map system
+wowdeb.sym system
+wowexec.map system
+wowexec.sym system
+write16.exe system
+write16.map system
+write16.sym system
+wshnwlnk.dll system
+wshxns.dll system
+xjis.nls system
+xnscfg.dll system
+xnsmsg.dll system
+basic.dll inetsrv
+control.ini inetsrv
+iexplore.exe retail
+iexplore.cnt retail
+iexplore.hlp retail
+iexplore.inf retail
+iexplore.ini inetsrv
+flock.bmp inetsrv
+fscfg.dll inetsrv
+catscfg.dll inetsrv
+ftpctrs.h inetsrv
+ftpctrs.ini inetsrv
+ftpctrs2.dll inetsrv
+ftpmib.dll inetsrv
+ftpsapi2.dll inetsrv
+ftpsvc2.dll inetsrv
+gateway.dll inetsrv
+gdapi.dll inetsrv
+gdctrs.dll inetsrv
+gdctrs.h inetsrv
+gdctrs.ini inetsrv
+gdmib.dll inetsrv
+gdspace.dll inetsrv
+gopherd.dll inetsrv
+gscfg.dll inetsrv
+httpmib.dll inetsrv
+httpodbc.dll inetsrv
+inetaccs.exe inetsrv
+inetinfo.exe inetsrv
+inetasrv.dll inetsrv
+infoctrs.dll inetsrv
+infoctrs.h inetsrv
+infoctrs.ini inetsrv
+accsctrs.dll inetsrv
+accsctrs.h inetsrv
+accsctrs.ini inetsrv
+inetcpl.cpl retail
+inetmgr.exe inetsrv
+inetmib.bin inetsrv
+inetsloc.dll inetsrv
+inetstp.dll inetsrv
+inetins.exe retail
+inetstp.exe inetsrv
+inetstp.inf inetsrv
+odbc.inf inetsrv
+inetsvcs.dll inetsrv
+infocomm.dll inetsrv
+infoadmn.dll inetsrv
+accsadmn.dll inetsrv
+accscomm.dll inetsrv
+ipudll.dll inetsrv
+lmbeta.bmp inetsrv
+makeflat.cmd inetsrv
+msmail32.ini inetsrv
+newshell.cmd inetsrv
+progman.ini inetsrv
+registry.ini inetsrv
+schdpl32.ini inetsrv
+shupdate.cmd inetsrv
+shupsym.cmd inetsrv
+simple.dll inetsrv
+gdsset.exe inetsrv
+tcpip.ini inetsrv
+viewer.ini inetsrv
+viewera.ini inetsrv
+w3ctrs.dll inetsrv
+w3ctrs.h inetsrv
+w3ctrs.ini inetsrv
+w3scfg.dll inetsrv
+w3svapi.dll inetsrv
+w3svc.dll inetsrv
+setkey.exe inetsrv
+sspifilt.dll inetsrv
+applyinf.exe idw
+wininet.dll dump
+wininet.sym dump
+wininet.map dump
+cachevu.dll inetsrv
+basicsec.dll inetsrv
+urlmon.dll inetsrv
+url.dll retail
+js.dll inetsrv
+jscript.dll inetsrv
+msrating.dll inetsrv
+fechrcnv.dll inetsrv
+shdocvw.dll retail
+mshtml.dll inetsrv
+htmlctl.ocx inetsrv
+inetcpl.cpl inetsrv
+ieshstub.dll retail
+secbasic.dll retail
+secsspi.dll retail
+msnsspc.dll retail
+msnauth.cnt retail
+msnauth.hlp retail
+winntas.bmp inetsrv
+keygen.exe inetsrv
+convlog.exe inetsrv
+keyring.exe inetsrv
+w3key.dll inetsrv
+dsnform.exe inetsrv\scripts\tools
+getdrvrs.exe inetsrv\scripts\tools
+mkilog.exe inetsrv\scripts\tools
+newdsn.exe inetsrv\scripts\tools
+favlist.dll inetsrv\scripts\samples
+srch.dll inetsrv\scripts\samples
+volresp.dll inetsrv\scripts\samples
+ism.dll inetsrv\htmla
+schannel.dll retail
+
+;
+; Export Controlled Binaries should go here:
+;
+
+schnl128.dll noexport
+keygend.exe noexport
+extag.exe idw
+
+;
+; Catapult - proxy server binaries.
+;
+
+w3proxy.dll retail
+iascache.dll retail
+iassec.dll retail
+iasmon.dll retail
+proxymib.dll retail
+w3papi.dll retail
+w3pcfg.dll retail
+ipudll.dll retail
+iaslog.dll retail
+proxyins.exe retail
+cachctrs.h perfctrs
+cachctrs.ini perfctrs
+proxctrs.h perfctrs
+proxctrs.ini perfctrs
+rwsctrs.h perfctrs
+rwsctrs.ini perfctrs
+
+proxy.reg dump
+iasmon.reg dump
+iascache.reg dump
+
+;
+; Catapult - rws server binaries
+;
+
+rwsmsg.dll retail
+rwsperf.dll retail
+rws32.dll retail
+rws.dll retail
+iashlpr.dll retail
+rwsapi.dll retail
+wspapi.dll retail
+rwscfg.dll retail
+rwsadmn.dll retail
+rwssrv.exe retail
+rwsdiag.exe retail
+rwsperf.h retail
+rwsperf.ini retail
+rwsmib.dll retail
+latui.dll retail
+
+;
+; Catapult - Setup binaries
+;
+
+setup1.exe retail
+stpext16.dll retail
+stpext32.dll retail
+setup1.exe retail
+stpsrvex.dll retail
+aux32_16.dll retail
+rwsdiag.exe retail
+aux16.dll retail
+
+;
+; Catapult - misc files
+;
+
+dnstest.exe misc
+
+
+;
+; Index Server (Tripoli) ISAPI binaries
+;
+
+cidaemon.exe query
+cistp.dll query
+htmlfilt.dll query
+idq.dll query
+infosoft.dll query
+isadmin.url query
+isdoc.url query
+isquery.url query
+nlgwbrkr.dll query
+kppp.dll query
+kppp7.dll query
+kpw6.dll query
+kpword.dll query
+kpxl5.dll query
+qperf.dll query
+query.dll query
+sccfa.dll query
+sccfi.dll query
+sccifilt.dll query
+sccut.dll query
+setupci.inf query
+
+webhits.inf query\webhits
+webhits.exe query\webhits
+queryhit.htm query\webhits\sample
+queryhit.htx query\webhits\sample
+
+ciperfm.h query\perf
+filtperf.h query\perf
+perfci.ini query\perf
+perffilt.ini query\perf
+perfwci.h query\perf
+perfwci.ini query\perf
+
+noise.dat query\lang
+noise.deu query\lang
+noise.eng query\lang
+noise.enu query\lang
+noise.esn query\lang
+noise.fra query\lang
+noise.ita query\lang
+noise.nld query\lang
+noise.sve query\lang
+wbcache.deu query\lang
+wbcache.eng query\lang
+wbcache.enu query\lang
+wbcache.esn query\lang
+wbcache.fra query\lang
+wbcache.ita query\lang
+wbcache.nld query\lang
+wbcache.sve query\lang
+wbdbase.deu query\lang
+wbdbase.eng query\lang
+wbdbase.enu query\lang
+wbdbase.esn query\lang
+wbdbase.fra query\lang
+wbdbase.ita query\lang
+wbdbase.nld query\lang
+wbdbase.sve query\lang
+
+admin.htm query\sample
+admin.htx query\sample
+admin.ida query\sample
+admin.idq query\sample
+author.htm query\sample
+author.idq query\sample
+bestwith.gif query\sample
+book08.jpg query\sample
+32x_book.jpg query\sample
+64x_book.jpg query\sample
+deferror.htx query\sample
+detail1.htx query\sample
+detail2.htx query\sample
+detail3.htx query\sample
+detail4.htx query\sample
+disclaim.htm query\sample
+filesize.htm query\sample
+filetime.htm query\sample
+filesize.idq query\sample
+filetime.idq query\sample
+format1.htx query\sample
+format2.htx query\sample
+format3.htx query\sample
+format4.htx query\sample
+head.htx query\sample
+hidden.htx query\sample
+hquery.htx query\sample
+hquery.idq query\sample
+htxerror.htx query\sample
+idqerror.htx query\sample
+merge.ida query\sample
+next.htx query\sample
+powrbybo.gif query\sample
+prev.htx query\sample
+query.htm query\sample
+query.htx query\sample
+query.idq query\sample
+reserror.htx query\sample
+scan.ida query\sample
+scan.idq query\sample
+scan.htx query\sample
+sformat1.htx query\sample
+sformat2.htx query\sample
+sformat3.htx query\sample
+sformat4.htx query\sample
+shead.htx query\sample
+simple.idq query\sample
+state.htx query\sample
+state.ida query\sample
+snext.htx query\sample
+stail.htx query\sample
+tail.htx query\sample
+unfilt.idq query\sample
+unfilt.htx query\sample
+
+adminhlp.htm query\help
+active2.gif query\help
+active6.gif query\help
+active7.gif query\help
+bullet.gif query\help
+cathlp.htm query\help
+cibgrnd.gif query\help
+default.htm query\help
+errhandl.htm query\help
+errorhlp.htm query\help
+faq.htm query\help
+filtrhlp.htm query\help
+glossary.htm query\help
+htxhelp.htm query\help
+idq-vars.htm query\help
+idqhelp.htm query\help
+indexhlp.htm query\help
+install.htm query\help
+intro.htm query\help
+intro1.gif query\help
+intro2.gif query\help
+license.htm query\help
+qrylang.htm query\help
+queryhlp.htm query\help
+reghelp.htm query\help
+scanhlp.htm query\help
+sechelp.htm query\help
+srchbug.txt query\help
+
+
+;
+; Wx86 binaries
+;
+wx86.dll retail
+wx86cpu.dll retail
+wicrtdll.dll retail
+wivcrt.dll retail
+wivcrt20.dll retail
+wivcrt40.dll retail
+wivcirt.dll retail
+wimfc40.dll retail
+wimfc40u.dll retail
+wimfc42.dll retail
+wimfc42u.dll retail
+wictl3d.dll retail
+wioleaut.dll retail
+wistd32.tlb retail
+wimsjt30.dll retail
+wiodbcjt.dll retail
+wiolecli.dll retail
+wiolesvr.dll retail
+wiwmsui.dll retail
+whadv32.dll retail
+whcctl32.dll retail
+whcdlg32.dll retail
+whddeapi.dll retail
+whgdi32.dll retail
+whkrnl32.dll retail
+whlz32.dll retail
+whmpr.dll retail
+whntdll.dll retail
+whole32.dll retail
+wholedlg.dll retail
+whopengl.dll retail
+whshll32.dll retail
+whsock32.dll retail
+whuser32.dll retail
+whversn.dll retail
+whVFW32.dll retail
+whwinmm.dll retail
+whwspool.dll retail
+wiadv32.dll retail
+wicctl32.dll retail
+wicdlg32.dll retail
+widdeapi.dll retail
+wigdi32.dll retail
+wikrnl32.dll retail
+wilz32.dll retail
+wimpr.dll retail
+wintdll.dll retail
+wiole32.dll retail
+wioledlg.dll retail
+wiopengl.dll retail
+wishll32.dll retail
+wisock32.dll retail
+wiuser32.dll retail
+wiversn.dll retail
+wivfw32.dll retail
+wiwinmm.dll retail
+wiwspool.dll retail
+wiglu32.dll retail
+whglu32.dll retail
+wiws2_32.dll retail
+whws2_32.dll retail
+wiimghlp.dll retail
+whimghlp.dll retail
+wiacm32.dll retail
+whacm32.dll retail
+winetapi.dll retail
+whnetapi.dll retail
+wiwhlp32.exe retail
+wiregedt.exe retail
+wiftsrch.dll retail
+whftsrch.dll retail
+wirpcrt4.dll retail
+whrpcrt4.dll retail
+wirpcns4.dll retail
+whrpcns4.dll retail
+wiavifil.dll retail
+whavifil.dll retail
+wiavicap.dll retail
+whavicap.dll retail
+wisetupa.dll retail
+wicfgmgr.dll retail
+widdraw.dll retail
+whddraw.dll retail
+widplay.dll retail
+whdplay.dll retail
+widsnd.dll retail
+whdsnd.dll retail
+witapi32.dll retail
+whtapi32.dll retail
+wirasapi.dll retail
+whrasapi.dll retail
+wirasdlg.dll retail
+whrasdlg.dll retail
+wirassap.dll retail
+whrassap.dll retail
+wimsafd.dll retail
+whmsafd.dll retail
+wimssock.dll retail
+whmssock.dll retail
+wimapi32.dll retail
+whmapi32.dll retail
+instWx86.exe retail
+readwx86.txt retail
+wx86.inf retail
+wx86e.dll system
+
+wordpad.cnt retail
+wordpad.exe retail
+wordpad.hlp retail
+wordpad.inf retail
+welcome.exe retail
+write32.wpc retail
+
+ansi.trn retail
+german.trn retail
+iso88591.trn retail
+norweg.trn retail
+swedish.trn retail
+usascii.trn retail
+
+;
+; fax binaries
+;
+
+faxdrv.dll fax
+faxmon.dll fax
+faxcfg.cpl fax
+faxcfg.dll fax
+faxcfg.exe fax
+faxrend.dll fax
+faxsend.exe fax
+faxsetup.exe fax
+faxsvc.exe fax
+faxt30.dll fax
+faxui.dll fax
+faxwiz.dll fax
+faxcover.exe fax
+tiffdump.exe fax
+tiffview.exe fax
+winfax.dll fax
+confdent.cov fax
+fyi.cov fax
+generic.cov fax
+urgent.cov fax
+basenote.cov fax
+faxsetup.inf fax
+faxclean.exe fax
+faxcover.hlp fax
+faxcover.cnt fax
+
+
+;
+; Pinball binaries
+;
+
+PINBALL.EXE retail
+PINBALL.HLP retail
+PINBALL.CNT retail
+TABLE.BMP retail
+FONT.DAT retail
+PINBALL.DAT retail
+PINBALL.HLP retail
+PINBALL.MID retail
+PINBALL2.MID retail
+SOUND1.WAV retail
+SOUND104.WAV retail
+SOUND105.WAV retail
+SOUND108.WAV retail
+SOUND111.WAV retail
+SOUND112.WAV retail
+SOUND12.WAV retail
+SOUND13.WAV retail
+SOUND131.WAV retail
+SOUND136.WAV retail
+SOUND14.WAV retail
+SOUND16.WAV retail
+SOUND17.WAV retail
+SOUND18.WAV retail
+SOUND181.WAV retail
+SOUND19.WAV retail
+SOUND20.WAV retail
+SOUND21.WAV retail
+SOUND22.WAV retail
+SOUND24.WAV retail
+SOUND240.WAV retail
+SOUND243.WAV retail
+SOUND25.WAV retail
+SOUND26.WAV retail
+SOUND27.WAV retail
+SOUND28.WAV retail
+SOUND29.WAV retail
+SOUND3.WAV retail
+SOUND30.WAV retail
+SOUND34.WAV retail
+SOUND35.WAV retail
+SOUND36.WAV retail
+SOUND38.WAV retail
+SOUND39.WAV retail
+SOUND4.WAV retail
+SOUND42.WAV retail
+SOUND43.WAV retail
+SOUND45.WAV retail
+SOUND49.WAV retail
+SOUND49D.WAV retail
+SOUND5.WAV retail
+SOUND50.WAV retail
+SOUND528.WAV retail
+SOUND53.WAV retail
+SOUND54.WAV retail
+SOUND55.WAV retail
+SOUND560.WAV retail
+SOUND563.WAV retail
+SOUND57.WAV retail
+SOUND58.WAV retail
+SOUND6.WAV retail
+SOUND65.WAV retail
+SOUND68.WAV retail
+SOUND7.WAV retail
+SOUND713.WAV retail
+SOUND735.WAV retail
+SOUND8.WAV retail
+SOUND827.WAV retail
+SOUND9.WAV retail
+SOUND999.WAV retail
+wavemix.inf retail
+pinball.inf retail
+
+
+;
+; wang image viewer binaries
+;
+
+gotodlg.frm retail
+imagevue.inf retail
+imgadmin.ocx retail
+imgedit.ocx retail
+imgsamp.frm retail
+imgsampl.vbp retail
+imgscan.ocx retail
+imgthumb.ocx retail
+jpeg1x32.dll retail
+jpeg2x32.dll retail
+oiadm400.dll retail
+oicom400.dll retail
+oidis400.dll retail
+oifil400.dll retail
+oigfs400.dll retail
+oiprt400.dll retail
+oislb400.dll retail
+oissq400.dll retail
+oitwa400.dll retail
+oiui400.dll retail
+wangcmn.dll retail
+wangimg.cnt retail
+wangimg.exe retail
+wangimg.hlp retail
+wangocx.cnt retail
+wangocx.hlp retail
+wangocxd.cnt retail
+wangocxd.hlp retail
+wangshl.cnt retail
+wangshl.dll retail
+wangshl.hlp retail
+xfilexr.dll retail
+
+;
+; System Policy Editor binaries
+;
+
+common.adm retail
+winnt.adm retail
+windows.adm retail
+poledit.exe retail
+polsetup.exe retail
+poledit.hlp retail
+poledit.cnt retail
+
+
+;
+; Multimedia files
+;
+mssound.wav retail
+logon.wav retail
+logoff.wav retail
+jungleas.wav retail
+junglecl.wav retail
+junglecr.wav retail
+junglede.wav retail
+jungleer.wav retail
+jungleex.wav retail
+junglema.wav retail
+jungleme.wav retail
+junglemi.wav retail
+jungleop.wav retail
+junglequ.wav retail
+junglere.wav retail
+junglewi.wav retail
+jungle~1.wav retail
+jungle~2.wav retail
+jungle~3.wav retail
+jungle~4.wav retail
+musicaas.wav retail
+musicacl.wav retail
+musicacr.wav retail
+musicade.wav retail
+musicaer.wav retail
+musicaex.wav retail
+musicama.wav retail
+musicame.wav retail
+musicami.wav retail
+musicaop.wav retail
+musicaqu.wav retail
+musicare.wav retail
+musicawi.wav retail
+musica~1.wav retail
+musica~2.wav retail
+musica~3.wav retail
+musica~4.wav retail
+robotzas.wav retail
+robotzcl.wav retail
+robotzcr.wav retail
+robotzde.wav retail
+robotzer.wav retail
+robotzex.wav retail
+robotzma.wav retail
+robotzme.wav retail
+robotzmi.wav retail
+robotzop.wav retail
+robotzqu.wav retail
+robotzre.wav retail
+robotzwi.wav retail
+robotz~1.wav retail
+robotz~2.wav retail
+robotz~3.wav retail
+robotz~4.wav retail
+utopiaas.wav retail
+utopiacl.wav retail
+utopiacr.wav retail
+utopiade.wav retail
+utopiaer.wav retail
+utopiaex.wav retail
+utopiama.wav retail
+utopiame.wav retail
+utopiami.wav retail
+utopiaop.wav retail
+utopiaqu.wav retail
+utopiare.wav retail
+utopiawi.wav retail
+utopia~1.wav retail
+utopia~2.wav retail
+utopia~3.wav retail
+utopia~4.wav retail
+bachsb~1.rmi retail
+beetho~2.rmi retail
+claire~1.rmi retail
+danceo~2.rmi retail
+fureli~1.rmi retail
+hallof~2.rmi retail
+mozart~2.rmi retail
+
+;
+; Document Template files
+;
+
+amipro.sam retail
+excel.xls retail
+excel4.xls retail
+lotus.wk4 retail
+powerpnt.ppt retail
+presenta.shw retail
+quattro.wb2 retail
+winword.doc retail
+winword2.doc retail
+wordpfct.wpd retail
+wordpfct.wpg retail
+
+;
+; Desktop Wallpapers
+;
+
+blueday.bmp retail
+blulac16.bmp retail
+blumon16.bmp retail
+bubbles.bmp retail
+coffee16.bmp retail
+coffeebn.bmp retail
+feather.bmp retail
+fidlhead.bmp retail
+furry16.bmp retail
+furrydog.bmp retail
+geometrx.bmp retail
+gonefish.bmp retail
+grnstone.bmp retail
+hazy16.bmp retail
+hikingbt.bmp retail
+leaves16.bmp retail
+lether16.bmp retail
+mpltrail.bmp retail
+pglyph16.bmp retail
+pool.bmp retail
+prairie.bmp retail
+rhody.bmp retail
+rvrsumid.bmp retail
+santafe.bmp retail
+seaside.bmp retail
+seside16.bmp retail
+snakeskn.bmp retail
+solstice.bmp retail
+upstrm16.bmp retail
+zapotec.bmp retail
+zaptec16.bmp retail
+
+;
+; PostScript printer description (PPD) files
+;
+
+40291730.ppd retail
+40293930.ppd retail
+a_pnt518.ppd retail
+agac0800.ppd retail
+agac1000.ppd retail
+agac1500.ppd retail
+agaccsf1.ppd retail
+agaccst1.ppd retail
+agelan50.ppd retail
+agp94sf1.ppd retail
+agp95sf1.ppd retail
+agp96sf1.ppd retail
+agp97sf1.ppd retail
+agp98sf1.ppd retail
+agpr9400.ppd retail
+agpr9550.ppd retail
+agpr9551.ppd retail
+agpr9800.ppd retail
+agpr9836.ppd retail
+agpro941.ppd retail
+agpro971.ppd retail
+agpro981.ppd retail
+agprs961.ppd retail
+agsels51.ppd retail
+agsels71.ppd retail
+agsl5sf1.ppd retail
+agsl7sf1.ppd retail
+agss5000.ppd retail
+agss7000.ppd retail
+agssav20.ppd retail
+agssav25.ppd retail
+agssav36.ppd retail
+agssav44.ppd retail
+agstds21.ppd retail
+aljii523.ppd retail
+ap_ntxj1.ppd retail
+aplw8101.ppd retail
+aplwcob1.ppd retail
+aplwgri2.ppd retail
+aplwiif1.ppd retail
+aplwiig1.ppd retail
+aplwntr1.ppd retail
+aplwsel.ppd retail
+apple230.ppd retail
+apple380.ppd retail
+apple422.ppd retail
+aps08522.ppd retail
+aps12522.ppd retail
+aps26522.ppd retail
+aps80522.ppd retail
+aptolld1.ppd retail
+aptollw1.ppd retail
+ast__470.ppd retail
+cn_500_1.ppd retail
+cn_500j1.ppd retail
+cnlbp4_1.ppd retail
+cnlbp8_1.ppd retail
+cnlbp8r1.ppd retail
+cnlbp8t1.ppd retail
+colorq.ppd retail
+cppmq151.ppd retail
+cppmq201.ppd retail
+dc1152_1.ppd retail
+dc1152f1.ppd retail
+dc2150p1.ppd retail
+dc2250p1.ppd retail
+dc3500_1.ppd retail
+dc5100n1.ppd retail
+dcd11501.ppd retail
+dcd21501.ppd retail
+dcd22501.ppd retail
+dckps201.ppd retail
+dckps321.ppd retail
+dckps401.ppd retail
+dclf02_1.ppd retail
+dclf02f1.ppd retail
+dcln03r1.ppd retail
+dclps171.ppd retail
+dclps201.ppd retail
+dclps321.ppd retail
+dclps401.ppd retail
+dcps1721.ppd retail
+dcps1761.ppd retail
+dctps201.ppd retail
+dec3250.ppd retail
+deccolor.ppd retail
+dp4ty161.ppd retail
+dp4ty201.ppd retail
+dp4typ81.ppd retail
+dpl15804.ppd retail
+dpl20804.ppd retail
+ep826051.ppd retail
+epl3kf21.ppd retail
+epl3kf51.ppd retail
+epl75523.ppd retail
+f71rx503.ppd retail
+gcbl4921.ppd retail
+gcbl5141.ppd retail
+gcblp2_1.ppd retail
+gcblp2s1.ppd retail
+gcblpel1.ppd retail
+gcctone2.ppd retail
+gcelt6_2.ppd retail
+gcsp12_3.ppd retail
+gcsp6_3.ppd retail
+gdgl8001.ppd retail
+hermes_1.ppd retail
+hermes_2.ppd retail
+hp_650c2.ppd retail
+hp1200c1.ppd retail
+hp1600c1.ppd retail
+hp3si523.ppd retail
+hp4m3_v1.ppd retail
+hp4m6_v1.ppd retail
+hp4ml_v1.ppd retail
+hp4mp3_1.ppd retail
+hp4mp6_1.ppd retail
+hp4plus3.ppd retail
+hp4plus6.ppd retail
+hp4si3_1.ppd retail
+hp4si6_1.ppd retail
+hp755__1.ppd retail
+hp_3d522.ppd retail
+hp_3p522.ppd retail
+hp__clj1.ppd retail
+hpcopyj1.ppd retail
+hpiid522.ppd retail
+hpiii522.ppd retail
+hpiip522.ppd retail
+hplj__31.ppd retail
+hplj4mv1.ppd retail
+hplj5m_4.ppd retail
+hplj5p_1.ppd retail
+hplj5si1.ppd retail
+hplj_3d1.ppd retail
+hplj_3p1.ppd retail
+hppjxl31.ppd retail
+ibm17523.ppd retail
+ibm20470.ppd retail
+ibm30505.ppd retail
+ibm31514.ppd retail
+ibm39523.ppd retail
+ibm4039.ppd retail
+ibm4039p.ppd retail
+ibm4079.ppd retail
+jx9460ps.ppd retail
+jx9500ps.ppd retail
+jx9600ps.ppd retail
+jx9660ps.ppd retail
+jx9700ps.ppd retail
+kd8600p1.ppd retail
+kdcolor1.ppd retail
+l100_425.ppd retail
+l200_493.ppd retail
+l300_471.ppd retail
+l300_493.ppd retail
+l500_493.ppd retail
+lex4039p.ppd retail
+lex4079p.ppd retail
+lexoptra.ppd retail
+lh230__1.ppd retail
+lh260__1.ppd retail
+lh300__1.ppd retail
+lh330__1.ppd retail
+lh500__1.ppd retail
+lh530__1.ppd retail
+lh630__1.ppd retail
+lh830__1.ppd retail
+lh930__1.ppd retail
+lhherk_1.ppd retail
+lhpr60_1.ppd retail
+lhquas_1.ppd retail
+loptrac.ppd retail
+loptraep.ppd retail
+loptran.ppd retail
+loptrap.ppd retail
+lwnt_470.ppd retail
+lwntx470.ppd retail
+lwntx518.ppd retail
+moim1201.ppd retail
+mono_522.ppd retail
+mt_ti101.ppd retail
+n2090522.ppd retail
+n2290520.ppd retail
+n890_470.ppd retail
+n890x505.ppd retail
+nc95fax1.ppd retail
+nc97fax1.ppd retail
+nccps401.ppd retail
+nccps801.ppd retail
+ncol_519.ppd retail
+ncs29901.ppd retail
+ncsw_951.ppd retail
+o5241503.ppd retail
+o5242503.ppd retail
+ok801pf1.ppd retail
+ok_410e1.ppd retail
+okol8501.ppd retail
+okol8701.ppd retail
+ol830525.ppd retail
+ol840518.ppd retail
+oliv5000.ppd retail
+oliveti1.ppd retail
+oliveti2.ppd retail
+p4455514.ppd retail
+pap54001.ppd retail
+pap54101.ppd retail
+phiipx.ppd retail
+px.ppd retail
+q2200523.ppd retail
+q2210523.ppd retail
+q2220523.ppd retail
+q30si503.ppd retail
+q810t517.ppd retail
+q820_517.ppd retail
+q820t517.ppd retail
+q860pls2.ppd retail
+qcs10001.ppd retail
+qcs10002.ppd retail
+qcs10503.ppd retail
+qcs20503.ppd retail
+qcs30503.ppd retail
+qm1700_1.ppd retail
+qm2000_1.ppd retail
+qm815mr1.ppd retail
+qm825mr1.ppd retail
+qmps4104.ppd retail
+qmps8151.ppd retail
+qmps8251.ppd retail
+qms10602.ppd retail
+qms16602.ppd retail
+qms1660E.ppd retail
+qms1725.ppd retail
+qms2025.ppd retail
+qms2425.ppd retail
+qms3225.ppd retail
+qms3825.ppd retail
+qms420.ppd retail
+qms4525.ppd retail
+qms45252.ppd retail
+qms81470.ppd retail
+qms860.ppd retail
+qms8_461.ppd retail
+qms8p461.ppd retail
+qmscs210.ppd retail
+qmscs230.ppd retail
+qmscs494.ppd retail
+qmsj_461.ppd retail
+qmsjp461.ppd retail
+qmsmccx.ppd retail
+qmsmclx.ppd retail
+qmsmcpls.ppd retail
+qume_470.ppd retail
+r6000505.ppd retail
+s5232503.ppd retail
+s746j522.ppd retail
+seiko_04.ppd retail
+seiko_14.ppd retail
+sk820ru2.ppd retail
+sk830ru2.ppd retail
+sk835ru2.ppd retail
+skpsfcd1.ppd retail
+sx2iris1.ppd retail
+sx2psm21.ppd retail
+sx2psm22.ppd retail
+sx4psm21.ppd retail
+t1513470.ppd retail
+t1535470.ppd retail
+ti08_450.ppd retail
+ti15_470.ppd retail
+tim17521.ppd retail
+tim35521.ppd retail
+timl6231.ppd retail
+timlp231.ppd retail
+timlp232.ppd retail
+timlp233.ppd retail
+timlp651.ppd retail
+timlp652.ppd retail
+timlp671.ppd retail
+timlp672.ppd retail
+timp3231.ppd retail
+timpe231.ppd retail
+titrb161.ppd retail
+titrbo61.ppd retail
+titrbo91.ppd retail
+tix17521.ppd retail
+tix35521.ppd retail
+tk200172.ppd retail
+tk200392.ppd retail
+tk220171.ppd retail
+tk220391.ppd retail
+tk340171.ppd retail
+tk340691.ppd retail
+tkp200i2.ppd retail
+tkp200j1.ppd retail
+tkp220i1.ppd retail
+tkp220j1.ppd retail
+tkp2sdj1.ppd retail
+tkp2sdx1.ppd retail
+tkp300i1.ppd retail
+tkp300j1.ppd retail
+tkp480j1.ppd retail
+tkph1401.ppd retail
+tkph2sd1.ppd retail
+tkph4401.ppd retail
+tkph4801.ppd retail
+tkph5401.ppd retail
+tkphpxi1.ppd retail
+tkphz2j1.ppd retail
+tkphz3j1.ppd retail
+tkphzr21.ppd retail
+tkphzr22.ppd retail
+tkphzr31.ppd retail
+tkphzr32.ppd retail
+tkpxe171.ppd retail
+tkpxe391.ppd retail
+triumph1.ppd retail
+triumph2.ppd retail
+u1200xl4.ppd retail
+u1800pmr.ppd retail
+u1800xl.ppd retail
+u1800xlo.ppd retail
+u9415470.ppd retail
+uni17521.ppd retail
+uni39521.ppd retail
+v5334522.ppd retail
+vt42p522.ppd retail
+vt43p522.ppd retail
+vt4510a1.ppd retail
+vt4530a1.ppd retail
+vt4530b1.ppd retail
+vt4530c1.ppd retail
+vt4533a1.ppd retail
+vt4533b1.ppd retail
+vt4533c1.ppd retail
+vt453ea1.ppd retail
+vt453eb1.ppd retail
+vt453ec1.ppd retail
+vt4550a1.ppd retail
+vt4550b1.ppd retail
+vt4550c1.ppd retail
+vt4551a1.ppd retail
+vt4563a1.ppd retail
+vt4563b1.ppd retail
+vt4990_1.ppd retail
+vt4990t1.ppd retail
+vt4l3001.ppd retail
+vt4l3301.ppd retail
+vt4l5x01.ppd retail
+vt5100e1.ppd retail
+vt530522.ppd retail
+vt550522.ppd retail
+vt5510_1.ppd retail
+vt5660_1.ppd retail
+vt5860_1.ppd retail
+vt5960e1.ppd retail
+vt6000_1.ppd retail
+vt600p_1.ppd retail
+vt600w_1.ppd retail
+vt6990_1.ppd retail
+wang15.ppd retail
+wang15fp.ppd retail
+xr_45051.ppd retail
+xr_45201.ppd retail
+xr_49001.ppd retail
+xr049151.ppd retail
+xr049201.ppd retail
+xrdt0851.ppd retail
+xrdt0901.ppd retail
+xrdt1351.ppd retail
+xt_82001.ppd retail
+XR_45101.PPD retail
+XR_45171.PPD retail
+hplj_4m.ppd printer
+nx_nlp_1.ppd printer
+qmps4101.ppd printer
+
+AGA20SF2.PPD retail
+AGA25SF2.PPD retail
+AGA36SF2.PPD retail
+AGA44SF2.PPD retail
+AGAC1SF1.PPD retail
+AGAC1SF2.PPD retail
+AGAC5SF2.PPD retail
+AGAC8SF1.PPD retail
+AGAC8SF2.PPD retail
+AGAVA202.PPD retail
+AGAVA252.PPD retail
+AGAVA442.PPD retail
+AGEL5SF2.PPD retail
+AGP36SF1.PPD retail
+AGP36SF2.PPD retail
+AGP94SF2.PPD retail
+AGP95SF2.PPD retail
+AGP98SF2.PPD retail
+AGSL5SF2.PPD retail
+AGSL7SF2.PPD retail
+AGST2SF1.PPD retail
+aplwmgs1.ppd retail
+CLBP3601.PPD retail
+CN1260E1.PPD retail
+CN126PE1.PPD retail
+DPJOLT04.PPD retail
+DPL12602.PPD retail
+DPL15606.PPD retail
+DPL85501.PPD retail
+DPL9605.PPD retail
+DPL9654.PPD retail
+DPLZ2665.PPD retail
+DPTY8PM1.PPD retail
+FS-1500.PPD retail
+FS-1500A.PPD retail
+FS-1550.PPD retail
+FS-1550A.PPD retail
+FS-1550P.PPD retail
+FS-1600.PPD retail
+FS-16002.PPD retail
+FS-1600A.PPD retail
+FS-1600P.PPD retail
+FS-1700.PPD retail
+FS-17002.PPD retail
+FS-3400.PPD retail
+FS-3400A.PPD retail
+FS-3400P.PPD retail
+FS-3500.PPD retail
+FS-3500A.PPD retail
+FS-3600.PPD retail
+FS-36002.PPD retail
+FS-3600A.PPD retail
+FS-3600P.PPD retail
+FS-3700.PPD retail
+FS-37002.PPD retail
+FS-400.PPD retail
+FS-400A.PPD retail
+FS-5500.PPD retail
+FS-5500A.PPD retail
+FS-6500.PPD retail
+FS-6500P.PPD retail
+FS-850.PPD retail
+FS1600A2.PPD retail
+FS3600A2.PPD retail
+Hpclj5v2.ppd retail
+HP_750_1.PPD retail
+NC_10971.PPD retail
+P-2000.PPD retail
+Q-8010.PPD retail
+T30V4.PPD retail
+T40V4.PPD retail
+T60V4.PPD retail
+TIM12641.PPD retail
+TIML8641.PPD retail
+tk240172.ppd retail
+tk240392.ppd retail
+tk550pj1.ppd retail
+tkp240j1.ppd retail
+tkp550j1.ppd retail
+XDCS20.PPD retail
+XDCS35.PPD retail
+XDP350H.PPD retail
+XDP390.PPD retail
+XDP390H.PPD retail
+XDP4635.PPD retail
+Xr470002.ppd retail
+xrd61351.ppd retail
+XRDT0904.PPD retail
+XRDT1354.PPD retail
+Xrx49001.ppd retail
+xrx49151.ppd retail
+xrx49201.ppd retail
+XR_42152.PPD retail
+XR_42192.PPD retail
+XR_42204.PPD retail
+XR_42302.PPD retail
+CBMAJ__1.PPD retail
+CQDP__10.PPD retail
+EFXJX203.PPD retail
+EFXJX303.PPD retail
+SPMAJE40.PPD retail
+SPREGA40.PPD retail
+tk550172.ppd retail
+tk550392.ppd retail
+iexpress.exe idw
+wextract.exe idw
+advpack.dll idw
+
+;
+; NT Cluster binaries
+;
+clussvc.exe cluster
+cluadmin.exe cluster
+resrcmon.exe cluster
+clusrtl.dll cluster
+clusapi.dll cluster
+ipaddr.dll cluster
+disks.dll cluster
+smbshare.dll cluster
+netname.dll cluster
+genapp.dll cluster
+gensvc.dll cluster
+gencmd.dll cluster
+rpcltccl.dll cluster
+rpcltscl.dll cluster
+smbshrex.dll cluster
+netnamex.dll cluster
+ipaddrex.dll cluster
+gensvcex.dll cluster
+genappex.dll cluster
+diskex.dll cluster
+clusdisk.sys cluster
+clusetup.exe cluster
+clusetup.inf cluster
+cluswiz.dll cluster
+dummy.dll cluster
+cluscli.exe cluster
+
+;
+; NT DS binaries
+;
+
+kdc.exe retail
+kdcsvc.dll retail
+kerberos.dll retail
+kerbinst.cmd retail
+kerb.ini retail
+cryptdll.dll retail
+
+dracheck.dll retail
+drax400.dll retail
+dsa.dll retail
+dsid.exe retail
+dsmsg.dll retail
+edbmsg.dll retail
+emsabp.dll retail
+instal.exe retail
+jetback.dll retail
+jetbcli.dll retail
+libxds.dll retail
+ntdsatq.dll retail
+oabgen.dll retail
+perfdsa.dll retail
+pfupdate.exe retail
+priminst.exe retail
+repadmin.exe retail
+script.exe retail
+servrqst.exe retail
+template.exe retail
+dir.edb DSADATA
+NTDSinst.Bat retail
+oleds.dll retail
+oledsenm.exe retail
+dbdump.exe retail
+ditbrows.exe retail
+dsexts.dll retail
+ddatest.exe retail
+dsamain.exe retail
+tloadobj.exe retail
+xload.exe retail
+xwait.exe retail
+
+ntds.exe retail
+
+oledsnds.dll retail
+oledsnt.dll retail
+oledsnw.dll retail
+
+chgpass.exe devtest
+getobj.exe devtest
+grmemadd.exe devtest
+grmemdel.exe devtest
+grpmem.exe devtest
+setpass.exe devtest
diff --git a/public/sdk/lib/placefil.new b/public/sdk/lib/placefil.new
new file mode 100644
index 000000000..9192259cd
--- /dev/null
+++ b/public/sdk/lib/placefil.new
@@ -0,0 +1,4839 @@
+192.dns retail
+31users.hlp retail
+3dgarro.cur retail
+3dgmove.cur retail
+3dgnesw.cur retail
+3dgno.cur retail
+3dgns.cur retail
+3dgnwse.cur retail
+3dgwe.cur retail
+3dsmove.cur retail
+3dsns.cur retail
+3dsnwse.cur retail
+3dwarro.cur retail
+3dwmove.cur retail
+3dwnesw.cur retail
+3dwno.cur retail
+3dwns.cur retail
+3dwnwse.cur retail
+3dwwe.cur retail
+4mmdat.sys retail
+8514a.dll retail
+8514a.sys retail
+8514fix.fon retail
+8514fixe.fon retail
+8514fixg.fon retail
+8514fixr.fon retail
+8514fixt.fon retail
+8514oem.fon retail
+8514oeme.fon retail
+8514oemg.fon retail
+8514oemr.fon retail
+8514oemt.fon retail
+8514sys.fon retail
+8514syse.fon retail
+8514sysg.fon retail
+8514sysr.fon retail
+8514syst.fon retail
+_default.pif retail
+a221064.pal retail
+a221066.pal retail
+a221164.pal retail
+a321064.pal retail
+ab32.dll retail
+abiosdsk.sys retail
+acc_dis.cnt retail
+acc_dis.hlp retail
+accctrl.dll retail
+access.cpl retail
+accessor.inf retail
+account.dll retail
+accounts.inf retail
+accsetup.txt retail
+aclconv.exe retail
+acledit.dll retail
+adp.bin retail
+addgrpw.exe retail
+addusrw.exe retail
+advapi32.dll retail
+afd.sys retail
+aha154x.sys retail
+aha174x.sys retail
+aic78xx.sys retail
+alertsys.dll retail
+alertsys.exe retail
+alrsvc.dll retail
+always.sys retail
+am1500t.sys retail
+amddlg.dll retail
+amdncdet.dll retail
+amdpcn.sys retail
+ami0nt.sys retail
+amsint.sys retail
+ansi.sys retail
+app850.fon retail
+app852.fon retail
+app857.fon retail
+app866.fon retail
+append.exe retail
+apps.inf retail
+appstar2.ani retail
+appstar3.ani retail
+appstart.ani retail
+appwiz.cpl retail
+archqic.sys retail
+arcinst.exe retail
+arial.ttf retail
+arialbd.ttf retail
+arialbi.ttf retail
+ariali.ttf retail
+arp.exe retail
+arrow.sys retail
+asyncmac.sys retail
+att.ht retail
+at.exe retail
+atapi.sys retail
+atdisk.sys retail
+ati.dll retail
+ati.sys retail
+atkctrs.dll retail
+atm.dll retail
+atmdrvr.dll retail
+atsvc.dll retail
+atsvc.exe retail
+attrib.exe retail
+audiocdc.hlp retail
+autochk.exe retail
+autocmpt.exe retail
+autoconv.exe retail
+autoexec.nt retail
+autofmt.exe retail
+autolfn.exe retail
+autorprt.exe retail
+autorun.exe retail
+autoulib.dll retail
+avicap.dll retail
+avicap32.dll retail
+avifil32.dll retail
+avifile.dll retail
+backgrnd.gif retail
+backup.cnt retail
+backup.exe retail
+backup.hlp retail
+banana.ani retail
+barber.ani retail
+basesrv.dll retail
+beep.sys retail
+bhctrl.cpl retail
+bhmon.dll retail
+bhnetb.dll retail
+bhnt.sys retail
+bhp013.cnt netmon
+bhp013.hlp netmon
+bhsupp.dll retail
+bios1.rom retail
+bios4.rom retail
+black16.scr retail
+boot retail
+bootok.exe retail
+bootvrfy.exe retail
+brhj770.dll retail
+brother9.dll retail
+brothr24.dll retail
+browser.dll retail
+buslogic.sys retail
+busmouse.sys retail
+c_037.nls retail
+c_10000.nls retail
+c_10006.nls retail
+c_10007.nls retail
+c_10010.nls retail
+c_10017.nls retail
+c_10029.nls retail
+c_10079.nls retail
+c_10081.nls retail
+c_10082.nls retail
+c_1026.nls retail
+c_1250.nls retail
+c_1251.nls retail
+c_1252.nls retail
+c_1253.nls retail
+c_1254.nls retail
+c_1255.nls retail
+c_1256.nls retail
+c_1257.nls retail
+c_1258.nls retail
+c_20866.nls retail
+c_28592.nls retail
+c_437.nls retail
+c_500.nls retail
+c_737.nls retail
+c_775.nls retail
+c_850.nls retail
+c_852.nls retail
+c_855.nls retail
+c_857.nls retail
+c_860.nls retail
+c_861.nls retail
+c_863.nls retail
+c_865.nls retail
+c_866.nls retail
+c_869.nls retail
+c_870.nls retail
+c_875.nls retail
+c_20105.nls retail
+c_20261.nls retail
+c_20269.nls retail
+c_20273.nls retail
+c_20277.nls retail
+c_20278.nls retail
+c_20280.nls retail
+c_20284.nls retail
+c_20285.nls retail
+c_20290.nls retail
+c_20297.nls retail
+c_20420.nls retail
+c_20423.nls retail
+c_20833.nls retail
+c_20838.nls retail
+c_20871.nls retail
+c_20880.nls retail
+c_20905.nls retail
+c_21025.nls retail
+c_21027.nls retail
+c_28592.nls retail
+c_28593.nls retail
+c_28594.nls retail
+c_28595.nls retail
+c_28596.nls retail
+c_28597.nls retail
+c_28598.nls retail
+c_28599.nls retail
+cache.dns retail
+cacls.exe retail
+cairo.inf retail
+cairostd.exe retail
+calc.cnt retail
+calc.exe retail
+calc.hlp retail
+canon330.dll retail
+canon800.dll retail
+canonlbp.dll retail
+canyon.mid retail
+cards.dll retail
+ccfapi.hlp retail
+ccfapi32.dll retail
+cdaudio.sys retail
+cdfs.sys retail
+cdplayer.cnt retail
+cdplayer.exe retail
+cdplayer.hlp retail
+cdrom.sys retail
+cfgmgr32.dll retail
+cfm30.dll retail
+cfm30u.dll retail
+cfm40.dll retail
+cfm40d.dll retail
+cfm40u.dll retail
+cfm40ud.dll retail
+cfmo30.dll retail
+cfmo30u.dll retail
+cfmo40.dll retail
+cfmo40d.dll retail
+cfmo40u.dll retail
+cfmo40ud.dll retail
+cga40737.fon retail
+cga40850.fon retail
+cga40852.fon retail
+cga40857.fon retail
+cga40866.fon retail
+cga40869.fon retail
+cga40woa.fon retail
+cga80737.fon retail
+cga80850.fon retail
+cga80852.fon retail
+cga80857.fon retail
+cga80866.fon retail
+cga80869.fon retail
+cga80woa.fon retail
+changer.sys retail
+charmap.cnt retail
+charmap.exe retail
+charmap.hlp retail
+chcp.com retail
+chimes.wav retail
+chkdsk.exe retail
+chord.wav retail
+cifilter.exe retail
+cirrus.dll retail
+cirrus.sys retail
+cis.ht retail
+cis.scp retail
+cit24us.dll retail
+cit9us.dll retail
+citoh.dll retail
+class2.sys retail
+clb.dll retail
+client.gif retail
+clipbrd.cnt retail
+clipbrd.exe retail
+clipbrd.hlp retail
+clipsrv.exe retail
+clock.avi retail
+clock.exe retail
+cmc.dll retail
+cmd.exe retail
+cmos.ram retail
+cmsfcxx.sys retail
+cnvfat.dll retail
+cnvntfs.dll retail
+coin.ani retail
+comctl32.dll retail
+comctl32.sym symbols\dll
+comdlg32.dll retail
+comm.drv retail
+command.com retail
+commdlg.dll retail
+common.hlp retail
+communic.inf retail
+comp.exe retail
+compact.exe retail
+compobj.dll retail
+compstui.dll retail
+compstui.hlp retail
+conexts.dll retail
+config.nt retail
+configsc.exe retail
+console.cpl retail
+control.exe retail
+control.hlp retail
+convert.exe retail
+convmsg.dll retail
+counter.ani retail
+country.sys retail
+cour.ttf retail
+courbd.ttf retail
+courbi.ttf retail
+coure.fon retail
+couree.fon retail
+coureg.fon retail
+courer.fon retail
+couret.fon retail
+courf.fon retail
+courfe.fon retail
+courfg.fon retail
+courfr.fon retail
+courft.fon retail
+couri.ttf retail
+cpqarray.sys retail
+cpqfws2e.sys retail
+creategc.exe retail
+cross.cur retail
+crtdll.dll retail
+cs423x.dll retail
+cs423x.hlp retail
+cs423x.sys retail
+csrsrv.dll retail
+csrss.exe retail
+csumcat.dll retail
+ctype.nls retail
+ctl3dv2.dll retail
+cxbios.bin retail
+cxfep.bin retail
+cxxflt.dll retail
+d3dhalf.dll retail
+d3dim.dll retail
+d3drampf.dll retail
+d3drg16f.dll retail
+d3drg24f.dll retail
+d3drg32f.dll retail
+d3drg8f.dll retail
+d3drgbf.dll retail
+d3drm.dll retail
+d3drm16f.dll retail
+d3drm24f.dll retail
+d3drm32f.dll retail
+d3drm8f.dll retail
+d3dxof.dll retail
+dac960nt.sys retail
+dc21x4.hlp retail
+dc21x4.sys retail
+dciman32.dll retail
+dcomcnfg.exe retail
+dcomcnfg.hlp retail
+ddeml.dll retail
+ddeshare.cnt retail
+ddeshare.exe retail
+ddeshare.hlp retail
+ddhelp.exe retail
+ddraw.dll retail
+debmp.dll retail
+debug.exe retail
+dec24pin.dll retail
+dec3200.dll retail
+dec9pin.dll retail
+decpsmon.dll retail
+decpsmon.hlp retail
+default retail
+defddi.hlp retail
+defea.dll retail
+defea.sys retail
+defpa.dll retail
+defpa.sys retail
+dehex.dll retail
+dell_dgx.sys retail
+delldsa.sys retail
+demet.dll retail
+demil32.dll retail
+desk.cpl retail
+desktop.ini retail
+dess.dll retail
+devapps.cpl retail
+devapps.hlp retail
+devpre.exe idw
+devpre.inf idw
+dewp.dll retail
+;dfs.sys retail
+;dfsadmin.exe retail
+;dfsinit.exe retail
+;dfsinstr.dll retail
+;dfsprov.dll retail
+;dfssetup.dll retail
+;dfssvc.exe retail
+;dfsui.dll retail
+dgconfig.cnt retail
+dgconfig.dll retail
+dgconfig.hlp retail
+dgconfig.hlp retail
+dhcpadmn.cnt retail
+dhcpadmn.exe retail
+dhcpadmn.hlp retail
+dhcpcsvc.dll retail
+dhcpmib.dll retail
+dhcpsapi.dll retail
+dhcpssvc.dll retail
+dialer.cnt retail
+dialer.exe retail
+dialer.hlp retail
+diconix.dll retail
+digifep5.sys retail
+digiinst.dll retail
+digsig.dll retail
+ding.wav retail
+dinosau2.ani retail
+dinosaur.ani retail
+disk.sys retail
+disk1 retail
+diskcomp.com retail
+diskcopy.com retail
+diskcopy.dll retail
+diskdump.sys retail
+diskperf.exe retail
+diskperf.sys retail
+display.inf retail
+dispoem.inf retail
+dlc.sys retail
+dlcapi.dll retail
+dllhost.exe retail
+dlttape.sys retail
+dnsadmin.cnt retail
+dnsadmin.exe retail
+dnsadmin.hlp retail
+dns.exe retail
+docprop.dll retail
+domlink.exe retail
+dos737.fon retail
+dos869.fon retail
+dosapp.fon retail
+doscalls.dll retail
+doshelp.hlp retail
+doskey.exe retail
+dosnet.inf retail
+dosx.exe retail
+dplay.dll retail
+dpserial.dll retail
+dptscsi.sys retail
+dpwsock.dll retail
+drum.ani retail
+drwatson.exe retail
+drwtsn32.cnt retail
+drwtsn32.exe retail
+drwtsn32.hlp retail
+dsadmin.exe retail
+dsfolder.dll retail
+dsmail.dll retail
+dsmgr.exe retail
+dsobjs.dll retail
+dsound.dll retail
+dsrepl.exe retail
+dsrights.dll retail
+dssrv.dll retail
+dsui.dll retail
+dsys.dll retail
+dsys.tlb retail
+dsyssvr.exe retail
+dtc329x.sys retail
+edit.com retail
+edit.hlp retail
+edlin.exe retail
+ee16.sys retail
+ega.cpi retail
+ega40737.fon retail
+ega40850.fon retail
+ega40852.fon retail
+ega40857.fon retail
+ega40866.fon retail
+ega40869.fon retail
+ega40woa.fon retail
+ega80737.fon retail
+ega80850.fon retail
+ega80852.fon retail
+ega80857.fon retail
+ega80866.fon retail
+ega80869.fon retail
+ega80woa.fon retail
+elnk16.sys retail
+elnk3.sys retail
+elnkii.sys retail
+elnkmc.sys retail
+epson24.dll retail
+epson9.dll retail
+escp2e.dll retail
+escp2ms.dll retail
+et4000.sys retail
+eula.txt retail
+eulaint.txt retail
+oemeula.txt retail
+eventlog.dll retail
+eventvwr.cnt retail
+eventvwr.exe retail
+eventvwr.hlp retail
+exabyte1.sys retail
+exabyte2.sys retail
+excfg32.exe retail
+exchng.cnt retail
+exchng.hlp retail
+exchng32.exe retail
+exe2bin.exe retail
+expand.exe retail
+explorer.exe retail
+fastfat.sys retail
+fastopen.exe retail
+fatcmpct.exe retail
+fc.exe retail
+fd16_700.sys retail
+fd7000ex.sys retail
+fd8xx.sys retail
+fillitup.ani retail
+find.exe retail
+findstr.exe retail
+finger.exe retail
+flashpnt.sys retail
+floppy.sys retail
+fmifs.dll retail
+font.inf retail
+fontext.dll retail
+fontview.exe retail
+forcedos.exe retail
+format.com retail
+fpnwclnt.dll retail
+frame32.dll retail
+framebuf.dll retail
+freecell.cnt retail
+freecell.exe retail
+freecell.hlp retail
+fs_rec.sys retail
+ftdisk.sys retail
+ftp.exe retail
+ftpctrs.dll retail
+ftpsmx.dll retail
+ftpsvapi.dll retail
+ftpsvc.dll retail
+ftsrch.dll retail
+fuji24.dll retail
+fuji9.dll retail
+fxbios.bin retail
+fxfep.bin retail
+games.inf retail
+gapi32.dll retail
+genflpy.sys retail
+gcconfig.exe retail
+gctool.exe retail
+gdi.exe retail
+gdi32.dll retail
+general.idf retail
+glmf32.dll retail
+glossary.hlp retail
+glu32.dll retail
+gorilla.bas retail
+graftabl.com retail
+graphics.com retail
+graphics.pro retail
+grpconv.exe retail
+hal.dll retail
+hal0jens.dll retail
+hal486c.dll retail
+halacr.dll retail
+halalcor.dll retail
+halapic.dll retail
+halapicm.dll retail
+halast.dll retail
+halavant.dll retail
+halcaro.dll retail
+halvict.dll retail
+halcbus.dll retail
+halcbusm.dll retail
+haldti.dll retail
+halduomp.dll retail
+haleagle.dll retail
+halps.dll retail
+haleb164.dll retail
+haleb64p.dll retail
+halfire.dll retail
+halflex.dll retail
+halftone.hlp retail
+halfxs.dll retail
+halfxspc.dll retail
+halgammp.dll retail
+hallego.dll retail
+hallx3.dll retail
+halmca.dll retail
+halmikas.dll retail
+halmps.dll retail
+halmpsm.dll retail
+halncr.dll retail
+halnecmp.dll retail
+halnonme.dll retail
+halntp.dll retail
+halntp.dll retail
+haloli.dll retail
+halalp.dll retail
+halpinna.dll retail
+halppc.dll retail
+halqs.dll retail
+halr94a.dll retail
+halr96b.dll retail
+halr98b.dll retail
+halr98mp.dll retail
+halrawmp.dll retail
+halsabmp.dll retail
+halsni4x.dll retail
+halsnip.dll retail
+halsp.dll retail
+haltimbr.dll retail
+haltyne.dll retail
+halwood.dll retail
+halwood.dll retail
+halwyse7.dll retail
+halxl.dll retail
+hand.ani retail
+handapst.ani retail
+handnesw.ani retail
+handno.ani retail
+handns.ani retail
+handnwse.ani retail
+handwait.ani retail
+handwe.ani retail
+hardware.inf retail
+harrow.cur retail
+hcross.cur retail
+help.exe retail
+hibeam.cur retail
+hilgbbs.ht retail
+himem.sys retail
+hindered.idf retail
+hmove.cur retail
+hnesw.cur retail
+hnodrop.cur retail
+hns.cur retail
+hnwse.cur retail
+home.htm retail
+horse.ani retail
+hostname.exe retail
+hosts retail
+hourgla2.ani retail
+hourgla3.ani retail
+hourglas.ani retail
+hours.ocx retail
+hp20022.pcd retail
+hp20036.pcd retail
+hp22024.pcd retail
+hp22036.pcd retail
+hp23024.pcd retail
+hp23036.pcd retail
+hp25024.pcd retail
+hp25036.pcd retail
+hp33024.pcd retail
+hp33036.pcd retail
+hp35024.pcd retail
+hp35036.pcd retail
+hp60022.pcd retail
+hp60036.pcd retail
+hp650c22.pcd retail
+hp650c36.pcd retail
+hp75024.pcd retail
+hp75036.pcd retail
+hp750m24.pcd retail
+hp750m36.pcd retail
+hp7550pl.pcd retail
+hp755cm.pcd retail
+hp755cmm.pcd retail
+hpdesign.pcd retail
+hpdmrxmx.pcd retail
+hpdmsx.pcd retail
+hpdpp22.pcd retail
+hpdpp36.pcd retail
+hpdskjet.dll retail
+hpgl2pen.pcd retail
+hpmon.dll retail
+hpmon.hlp retail
+hppcl.dll retail
+hpscan16.sys retail
+hpscan16.sys retail
+hpscan32.dll retail
+hpt4qic.sys retail
+hticons.dll retail
+htui.dll retail
+hwe.cur retail
+hypertrm.cnt retail
+hypertrm.dll retail
+hypertrm.exe retail
+hypertrm.hlp retail
+i8042prt.sys retail
+ibm238x.dll retail
+ibm239x.dll retail
+ibm5204.dll retail
+ibm5204.dll retail
+ibmport.dll retail
+ibmppdsl.dll retail
+ibmtok.sys retail
+ibmtok2i.sys retail
+iccvid.dll retail
+icmp.dll retail
+idp_xfs.bin retail
+ieepro.sys retail
+ifsutil.dll retail
+imaadp32.acm retail
+imagehlp.dll retail
+impexp32.dll retail
+indicdll.dll retail
+inetab32.dll retail
+inetmib1.dll retail
+inport.sys retail
+int-mail.cnt retail
+int-mail.hlp retail
+internat.exe retail
+intl.cpl retail
+intl.inf retail
+iologmsg.dll retail
+ipadrdll.dll retail
+ipconfig.exe retail
+ipinfo.inf retail
+iprip.dll retail
+ipxcfg.dll retail
+ipxroute.exe retail
+ir32_32.dll retail
+isdnhelp.cnt retail
+isdnhelp.hlp retail
+jazzg300.sys retail
+jazzg364.sys retail
+jet.dll retail
+jet500.dll retail
+jetconv.exe retail
+jetpack.exe retail
+joindom.exe retail
+joinrset.exe retail
+joy.cpl retail
+joy.hlp retail
+joyport.dll retail
+joyport.sys retail
+jp350.dll retail
+jzvxl484.dll retail
+jzvxl484.sys retail
+kb16.com retail
+kbd.inf retail
+kbdal.dll retail
+kbdbe.dll retail
+kbdbene.dll retail
+kbdblr.dll retail
+kbdbr.dll retail
+kbdbu.dll retail
+kbdca.dll retail
+kbdclass.sys retail
+kbdcr.dll retail
+kbdcz.dll retail
+kbdcz1.dll retail
+kbdda.dll retail
+kbddll.dll retail
+kbddv.dll retail
+kbdes.dll retail
+kbdest.dll retail
+kbdfc.dll retail
+kbdfi.dll retail
+kbdfr.dll retail
+kbdgkl.dll retail
+kbdgr.dll retail
+kbdgr1.dll retail
+kbdhe.dll retail
+kbdhe220.dll retail
+kbdhe319.dll retail
+kbdhela2.dll retail
+kbdhela3.dll retail
+kbdhu.dll retail
+kbdhu1.dll retail
+kbdic.dll retail
+kbdir.dll retail
+kbdit.dll retail
+kbdit142.dll retail
+kbdla.dll retail
+kbdlt.dll retail
+kbdlv.dll retail
+kbdlv1.dll retail
+kbdne.dll retail
+kbdno.dll retail
+kbdpl.dll retail
+kbdpl1.dll retail
+kbdpo.dll retail
+kbdro.dll retail
+kbdru.dll retail
+kbdru1.dll retail
+kbdsel.exe retail
+kbdsf.dll retail
+kbdsg.dll retail
+kbdsl.dll retail
+kbdsl1.dll retail
+kbdsp.dll retail
+kbdsw.dll retail
+kbdtuf.dll retail
+kbdtuq.dll retail
+kbduk.dll retail
+kbdur.dll retail
+kbdurs.dll retail
+kbdus.dll retail
+kbdusl.dll retail
+kbdusr.dll retail
+kbdusx.dll retail
+kbdycc.dll retail
+kbdycl.dll retail
+kerbntds.exe idw
+kernel32.dll retail
+keyb.com retail
+keyboard.drv retail
+keyboard.inf retail
+keyboard.sys retail
+kmddsp.tsp retail
+krnl386.exe retail
+krnl386.exe retail
+ksecdd.sys retail
+kyocera.dll retail
+kyocerax.dll retail
+l_10646.ttf retail
+l_except.nls retail
+l_intl.nls retail
+label.exe retail
+lance.sys retail
+language.inf retail
+lanma256.bmp retail
+lanman.drv retail
+lanmannt.bmp retail
+lappstrt.cur retail
+larrow.cur retail
+layout.inf retail
+lcross.cur retail
+lcwiz.exe retail
+legacy.inf retail
+libeam.cur retail
+liccpa.cnt retail
+liccpa.cpl retail
+liccpa.hlp retail
+lights.exe retail
+linkinfo.dll retail
+llsmgr.cnt retail
+llsmgr.exe retail
+llsmgr.hlp retail
+llsrpc.dll retail
+llssrv.exe retail
+lmhosts.sam retail
+lmhsvc.dll retail
+lmmib2.dll retail
+lmove.cur retail
+lmrepl.exe retail
+lnesw.cur retail
+lnodrop.cur retail
+lns.cur retail
+lnwse.cur retail
+loadfix.com retail
+loadperf.dll retail
+locale.nls retail
+localmon.dll retail
+localspl.dll retail
+locator.exe retail
+lodctr.exe retail
+logobj.exe retail
+logon.scr retail
+logui.exe retail
+logview.cnt retail
+logview.exe retail
+logview.hlp retail
+loop.sys retail
+lpdsvc.dll retail
+lpq.exe retail
+lpr.exe retail
+lprhelp.dll retail
+lprmon.dll retail
+lsasrv.dll retail
+lsass.exe retail
+lt200.sys retail
+lucon.ttf retail
+lwait.cur retail
+lwe.cur retail
+lz32.dll retail
+lzexpand.dll retail
+macfile.exe retail
+mailm32.dll retail
+mailsp32.exe retail
+main.cpl retail
+makedc.exe retail
+mantal24.dll retail
+mantal90.dll retail
+mapi.dll retail
+mapi32.dll retail
+mapif0.cfg retail
+mapif0l.ico retail
+mapif0s.ico retail
+mapif1.cfg retail
+mapif1l.ico retail
+mapif1s.ico retail
+mapif2.cfg retail
+mapif2l.ico retail
+mapif2s.ico retail
+mapif3.cfg retail
+mapif3l.ico retail
+mapif3s.ico retail
+mapif4.cfg retail
+mapif4l.ico retail
+mapif4s.ico retail
+mapif5.cfg retail
+mapif5l.ico retail
+mapif5s.ico retail
+mapirpc.reg retail
+mapisp32.exe retail
+mapisrv.exe retail
+mapisrvr.exe retail
+mapisvc.inf retail
+mapiu.dll retail
+mapiu32.dll retail
+mapiwm.tpl retail
+mapix.dll retail
+mapix32.dll retail
+mapixx.dll retail
+marlett.ttf retail
+mcd32.dll retail
+mcdsrv32.dll retail
+mci.ht retail
+mciavi.drv retail
+mciavi32.dll retail
+mcicda.dll retail
+mciole16.dll retail
+mciole32.dll retail
+mciseq.dll retail
+mciseq.drv retail
+mciwave.dll retail
+mciwave.drv retail
+mdgncdet.dll retail
+mdgmpdlg.dll retail
+mdgmpdlg.hlp retail
+mdgmport.sys retail
+mdgmport.bin retail
+mdisp.tlb retail
+mdisp32.exe retail
+mdisp32.reg retail
+mdisp32.tlb retail
+mdm3com.inf retail
+mdm3x.inf retail
+mdmaceex.inf retail
+mdmadc.inf retail
+mdmadtn.inf retail
+mdmairte.inf retail
+mdmar1.inf retail
+mdmarch.inf retail
+mdmarcht.inf retail
+mdmarn.inf retail
+mdmati.inf retail
+mdmatt.inf retail
+mdmaus.inf retail
+mdmblatz.inf retail
+mdmboca.inf retail
+mdmbsb.inf retail
+mdmbsch.inf retail
+mdmcm28.inf retail
+mdmcmcm.inf retail
+mdmcodex.inf retail
+mdmcom1.inf retail
+mdmcomm1.inf retail
+mdmcommu.inf retail
+mdmcpi.inf retail
+mdmcpq.inf retail
+mdmcpqpr.inf retail
+mdmcpv.inf retail
+mdmcrtix.inf retail
+mdmdefd.inf retail
+mdmdgitn.inf retail
+mdmdicom.inf retail
+mdmdisco.inf retail
+mdmdsi.inf retail
+mdmdyna.inf retail
+mdmeiger.inf retail
+mdmelink.inf retail
+mdmelpro.inf retail
+mdmelsa.inf retail
+mdmeric.inf retail
+mdmetech.inf retail
+mdmexp.inf retail
+mdmeyp.inf retail
+mdmgal.inf retail
+mdmgar.inf retail
+mdmgatew.inf retail
+mdmgen.inf retail
+mdmgv.inf retail
+mdmgvc.inf retail
+mdmgvcd.inf retail
+mdmhaeu.inf retail
+mdmhaeus.inf retail
+mdmhandy.inf retail
+mdmhay2.inf retail
+mdmhayes.inf retail
+mdmico.inf retail
+mdminfot.inf retail
+mdminsys.inf retail
+mdmintel.inf retail
+mdmintpc.inf retail
+mdmitex.inf retail
+mdmke.inf retail
+mdmkortx.inf retail
+mdmlasat.inf retail
+mdmlasno.inf retail
+mdmlce.inf retail
+mdmlight.inf retail
+mdmlngsh.inf retail
+mdmmart.inf retail
+mdmmcom.inf retail
+mdmmetri.inf retail
+mdmmhrtz.inf retail
+mdmmix.inf retail
+mdmmoto.inf retail
+mdmmoton.inf retail
+mdmmotou.inf retail
+mdmmtd.inf retail
+mdmmts.inf retail
+mdmmulog.inf retail
+mdmneuhs.inf retail
+mdmniss.inf retail
+mdmnokia.inf retail
+mdmnokno.inf retail
+mdmnova.inf retail
+mdmnovfx.inf retail
+mdmolic.inf retail
+mdmolive.inf retail
+mdmopt1.inf retail
+mdmoptn.inf retail
+mdmosi.inf retail
+mdmpace.inf retail
+mdmpbit.inf retail
+mdmpcsi.inf retail
+mdmpctel.inf retail
+mdmphils.inf retail
+mdmpn1.inf retail
+mdmpnb.inf retail
+mdmpp.inf retail
+mdmprodm.inf retail
+mdmquant.inf retail
+mdmracal.inf retail
+mdmrfi.inf retail
+mdmrock.inf retail
+mdmrock2.inf retail
+mdmrock3.inf retail
+mdmrock4.inf retail
+mdmrock5.inf retail
+mdmsecdy.inf retail
+mdmsier.inf retail
+mdmsimpl.inf retail
+mdmsmart.inf retail
+mdmsmplt.inf retail
+mdmsnit1.inf retail
+mdmsnitn.inf retail
+mdmsonix.inf retail
+mdmspec.inf retail
+mdmspq28.inf retail
+mdmsrt.inf retail
+mdmsupr3.inf retail
+mdmsupra.inf retail
+mdmsuprv.inf retail
+mdmtaicm.inf retail
+mdmtdk.inf retail
+mdmtelbt.inf retail
+mdmtelin.inf retail
+mdmtelnk.inf retail
+mdmtexas.inf retail
+mdmtger.inf retail
+mdmti.inf retail
+mdmtkr.inf retail
+mdmtorn.inf retail
+mdmtosh.inf retail
+mdmtripl.inf retail
+mdmtron.inf retail
+mdmtrust.inf retail
+mdmucom.inf retail
+mdmusrcr.inf retail
+mdmusrf.inf retail
+mdmusrg.inf retail
+mdmusrsp.inf retail
+mdmusrwp.inf retail
+mdmvayrs.inf retail
+mdmvdot.inf retail
+mdmvict.inf retail
+mdmvv.inf retail
+mdmwell.inf retail
+mdmwhql0.inf retail
+mdmwoer.inf retail
+mdmyorik.inf retail
+mdmzoom.inf retail
+mdmzyp.inf retail
+mdmzyxel.inf retail
+mdmzyxld.inf retail
+mdmzyxlg.inf retail
+mdmzyxln.inf retail
+mem.exe retail
+metronom.ani retail
+mf3216.dll retail
+mfc40.dll retail
+mfc40.dbg symbols\dll
+mfc40u.dll retail
+mfc40u.dbg symbols\dll
+mfc40chs.dll retail
+mfc40deu.dll retail
+mfc40enu.dll retail
+mfc40esp.dll retail
+mfc40fra.dll retail
+mfc40ita.dll retail
+mfc40jpn.dll retail
+mfc40kor.dll retail
+mfc40d.dll system32
+mfc40ud.dll system32
+mfcd40d.dll system32
+mfcd40ud.dll system32
+mfcn40d.dll system32
+mfcn40ud.dll system32
+mfco40d.dll system32
+mfco40ud.dll system32
+mfc42.dll retail
+mfc42.dbg symbols\dll
+mfc42u.dll retail
+mfc42u.dbg symbols\dll
+mfc42chs.dll retail
+mfc42cht.dll retail
+mfc42deu.dll retail
+mfc42enu.dll retail
+mfc42esp.dll retail
+mfc42fra.dll retail
+mfc42ita.dll retail
+mfc42jpn.dll retail
+mfc42kor.dll retail
+mfc42d.dll system32
+mfc42ud.dll system32
+mfcd42d.dll system32
+mfcd42ud.dll system32
+mfcn42d.dll system32
+mfcn42ud.dll system32
+mfco42d.dll system32
+mfco42ud.dll system32
+mfcuix.hlp retail
+mga.dll retail
+mga.sys retail
+mga_mil.sys retail
+mgmtapi.dll retail
+mib.bin retail
+mib.bin retail
+midimap.cfg retail
+midimap.dll retail
+minet32.dll retail
+miniqic.sys retail
+mipssnd.sys retail
+mitsumi.sys retail
+mkecr5xx.sys retail
+mkrcon.exe retail
+mkrobj.exe retail
+mkrset.exe retail
+ml3xec16.exe retail
+mlcfg32.cpl retail
+mlset32.exe retail
+mlshext.dll retail
+mmdriver.inf retail
+mmdrv.dll retail
+mmdrv.hlp retail
+mmfmig32.dll retail
+mmopt.inf retail
+mmsys.cpl retail
+mmsystem.dll retail
+mmtask.tsk retail
+mode.com retail
+modem.cpl retail
+modem.inf retail
+modem.sys retail
+modemui.dll retail
+modern.fon retail
+modex.dll retail
+money.bas retail
+monitor.inf retail
+more.com retail
+moricons.dll retail
+mouclass.sys retail
+mouse.cnt retail
+mouse.drv retail
+mouse.hlp retail
+mplay32.exe retail
+mplayer.cnt retail
+mplayer.hlp retail
+mpnotify.exe retail
+mpr.dll retail
+mprui.dll retail
+mpu401.dll retail
+mpu401.sys retail
+mrxsmb.sys drivers
+msacm.dll retail
+msacm32.dll retail
+msacm32.drv retail
+msadlib.idf retail
+msadp32.acm retail
+msafd.dll retail
+msafdext.dll mstools
+msaudite.dll retail
+msbbs.ht retail
+mscdexnt.exe retail
+mscms.dll retail
+msfs.cnt retail
+msfs.hlp retail
+msfs.sys retail
+msfs32.dll retail
+msgina.dll retail
+msg711.acm retail
+msgsm32.acm retail
+msgsvc.dll retail
+msimg32.dll retail
+msjt3032.dll retail
+msmail.inf retail
+msmail32.cnt retail
+msmail32.exe retail
+msmail32.hlp retail
+msmouse.inf retail
+msncdet.dll retail
+msobjs.dll retail
+msp32_am.lex retail
+mspaint.cnt retail
+mspaint.exe retail
+mspaint.hlp retail
+mspell32.dll retail
+msprivs.dll retail
+mspst32.dll retail
+msrle32.dll retail
+msrmnd32.exe retail
+msschd32.dll retail
+mssfs32.dll retail
+msv1_0.dll retail
+msvcrt20.dll retail
+msvcrt40.dll retail
+msvcrt.dll retail
+msvcirt.dll retail
+msvcr40d.dll system32
+msvcrtd.dll system32
+msvcirtd.dll system32
+msvfw32.dll retail
+msvidc32.dll retail
+msvideo.dll retail
+msviewut.dll retail
+mswd6_32.wpc retail
+mswsock.dll retail
+mswsutil.dll retail
+mt735.dll retail
+multimed.inf retail
+mup.sys retail
+musrmgr.cnt retail
+musrmgr.exe retail
+musrmgr.hlp retail
+mvaudio.dll retail
+mvaudio.sys retail
+nal.dll retail
+nbf.sys retail
+nbinfo.inf retail
+nbtstat.exe retail
+ncadmin.cnt retail
+ncadmin.exe retail
+ncadmin.hlp retail
+ncpa.cpl retail
+ncparam.inf retail
+ncpashel.inf retail
+ncr53c9x.sys retail
+ncr77c22.sys retail
+ncrc700.sys retail
+ncrc710.sys retail
+nddeagnt.exe retail
+nddeapi.dll retail
+nddeapir.exe retail
+nddenb32.dll retail
+ndis.sys retail
+ndis30.dll retail
+ndistapi.sys retail
+ndiswan.sys retail
+ne1000.sys retail
+ne2000.sys retail
+ne3200.bin retail
+ne3200.sys retail
+nec24pin.dll retail
+necsnd.dll retail
+necsnd.sys retail
+net.exe retail
+net.hlp retail
+net1.exe retail
+netapi.dll retail
+netapi.os2 retail
+netapi32.dll retail
+netbios.sys retail
+netbond.inf retail
+netbt.sys retail
+netcfg.dll retail
+netcfg.hlp retail
+netdde.exe retail
+netdefs.inf retail
+netdtect.dll retail
+netdtect.inf retail
+netdtect.sys retail
+netevent.dll retail
+netflx.bin retail
+netflx.dll retail
+netflx.sys retail
+neth.dll retail
+netlogon.dll retail
+netmon.cnt netmon
+netmon.hlp netmon
+netmsg.dll retail
+netoemdh.inf retail
+netrap.dll retail
+netsetup.dll retail
+netstat.exe retail
+netui0.dll retail
+netui1.dll retail
+netui2.dll retail
+netware.drv retail
+network.hlp retail
+networks retail
+networks.wri retail
+networkw.wri retail
+nibbles.bas retail
+nlsfunc.exe retail
+nmagent.exe retail
+nmgloss.hlp netmon
+notepad.cnt retail
+notepad.exe retail
+notepad.hlp retail
+npeisa.sys retail
+npfs.sys retail
+npmca.sys retail
+nslookup.exe retail
+nt.fnt retail
+nt2.fnt retail
+nt40.pdf retail
+ntbackup.exe retail
+ntbooks.exe retail
+ntcmds.hlp retail
+ntctl3d.dll retail
+ntcx.sys retail
+ntdetect.com retail
+ntdll.dll retail
+ntdos.sys retail
+ntepc.sys retail
+ntfs.sys retail
+ntio.sys retail
+ntkrnlmp.exe retail
+ntlanman.dll retail
+ntlanui.dll retail
+ntlanui2.dll retail
+ntldr retail
+ntlm.dll retail
+ntlmmain.exe retail
+ntlmssps.dll retail
+ntlmsvc.dll retail
+ntlsapi.dll retail
+ntoskrnl.exe retail
+ntprint.dll retail
+ntprint.inf retail
+ntsecui.hlp retail
+ntshrui.dll retail
+ntshrui.hlp retail
+ntvdm.exe retail
+ntxall.sys retail
+ntxem.sys retail
+null.sys retail
+nw16.exe retail
+nwapi16.dll retail
+nwapi32.dll retail
+nwc.cpl retail
+nwcfg.dll retail
+nwconv.cnt retail
+nwconv.exe retail
+nwconv.hlp retail
+nwdoc.cnt retail
+nwdoc.hlp retail
+nwdocgw.cnt retail
+nwdocgw.hlp retail
+nwevent.dll retail
+nwlnkipx.sys retail
+nwlnknb.sys retail
+nwlnkrip.sys retail
+nwlnkspx.sys retail
+nwprovau.dll retail
+nwrdr.sys retail
+nwsap.dll retail
+nwscript.exe retail
+nwwks.dll retail
+odbcjt32.dll retail
+oemnadam.inf retail
+oemnadap.inf retail
+oemnadar.inf retail
+oemnadd1.inf retail
+oemnadd2.inf retail
+oemnadd3.inf retail
+oemnadd4.inf retail
+oemnadde.inf retail
+oemnaddf.inf retail
+oemnaddi.inf retail
+oemnadds.inf retail
+oemnaddt.inf retail
+oemnade1.inf retail
+oemnade2.inf retail
+oemnade3.inf retail
+oemnadee.inf retail
+oemnadem.inf retail
+oemnaden.inf retail
+oemnadep.inf retail
+oemnadfd.inf retail
+oemnadim.inf retail
+oemnadin.inf retail
+oemnadlb.inf retail
+oemnadlm.inf retail
+oemnadlt.inf retail
+oemnadma.inf retail
+oemnadn1.inf retail
+oemnadn2.inf retail
+oemnadne.inf retail
+oemnadnf.inf retail
+oemnadni.inf retail
+oemnadnm.inf retail
+oemnadnp.inf retail
+oemnadp3.inf retail
+oemnadp9.inf retail
+oemnadpm.inf retail
+oemnadsn.inf retail
+oemnadso.inf retail
+oemnadt2.inf retail
+oemnadtk.inf retail
+oemnadtm.inf retail
+oemnadub.inf retail
+oemnadum.inf retail
+oemnadwd.inf retail
+oemnadwm.inf retail
+oemnadzz.inf retail
+oemnsvbh.inf retail
+oemnsvbr.inf retail
+oemnsvcu.inf retail
+;oemnsvdf.inf retail
+oemnsvdh.inf retail
+oemnsvdn.inf retail
+oemnsvft.inf retail
+oemnsvir.inf retail
+oemnsvin.inf retail
+oemnsvnb.inf retail
+oemnsvnw.inf retail
+oemnsvra.inf retail
+oemnsvri.inf retail
+oemnsvrp.inf retail
+oemnsvrr.inf retail
+oemnsvsa.inf retail
+oemnsvsm.inf retail
+oemnsvsn.inf retail
+oemnsvsp.inf retail
+oemnsvsv.inf retail
+oemnsvtp.inf retail
+oemnsvwi.inf retail
+oemnsvwk.inf retail
+oemnxpdl.inf retail
+oemnxpip.inf retail
+oemnxpnb.inf retail
+oemnxppp.inf retail
+oemnxpsm.inf retail
+oemnxpst.inf retail
+oemnxptc.inf retail
+oki24.dll retail
+oki9.dll retail
+oki9ibm.dll retail
+ole2.dll retail
+ole2disp.dll retail
+ole2nls.dll retail
+ole32.dll retail
+oleaut32.dll retail
+olecli.dll retail
+olecli32.dll retail
+olecnv32.dll retail
+oledlg.dll retail
+olepro32.dll retail
+olesvr.dll retail
+olesvr32.dll retail
+olethk32.dll retail
+olidm24.dll retail
+olidm9.dll retail
+oliscsi.sys retail
+opengl32.dll retail
+optional.inf retail
+optra.dll retail
+ora.dll retail
+oramon.dll retail
+orasvc.exe retail
+os2.exe retail
+os2srv.exe retail
+os2ss.exe retail
+osloader.exe retail
+oso001.007 retail
+oso001.009 retail
+oso001.010 retail
+oso001.012 retail
+oso001.016 retail
+oso001.029 retail
+other.inf retail
+pabnsp32.dll retail
+packager.cnt retail
+packager.exe retail
+packager.hlp retail
+pad.inf retail
+paintjet.dll retail
+panmap.dll retail
+panson24.dll retail
+panson9.dll retail
+parallel.sys retail
+parport.sys retail
+parvdm.sys retail
+passport.mid retail
+pax.exe retail
+pbrush.exe retail
+pcimac.sys retail
+pcl.sep retail
+pcl5ems.dll retail
+pcl5ms.dll retail
+pcmcia.sys retail
+pcnet.hlp retail
+pentnt.exe retail
+perfc009.dat retail
+perfctrs.dll retail
+perfh009.dat retail
+perfmon.cnt retail
+perfmon.exe retail
+perfmon.hlp retail
+perfnw.dll retail
+perms.inf retail
+piano.ani retail
+pifmgr.dll retail
+ping.exe retail
+pjlmon.dll retail
+place.dns retail
+plotter.dll retail
+plotui.dll retail
+plotui.hlp retail
+plustab.dll retail
+pmspl.dll retail
+pnpisa.inf dlibbin
+pnpisa.sys retail
+ports.cpl retail
+portuas.exe retail
+posix.exe retail
+prflbmsg.dll retail
+print.exe retail
+printer.wri retail
+printui.dll retail
+probrep.txt retail
+prodspec.ini retail
+prod128.ini retail
+profext.dll retail
+profile.spc retail
+progman.cnt retail
+progman.exe retail
+progman.hlp retail
+pronet16.sys retail
+proprint.dll retail
+proprn24.dll retail
+prorapm.dwn retail
+protocol retail
+proxy.dll retail
+ps1.dll retail
+pscript.dll retail
+pscript.hlp retail
+pscript.sep retail
+pscrptui.dll retail
+psidisp.dll retail
+psidisp.sys retail
+psxdll.dll retail
+psxss.exe retail
+qbasic.exe retail
+qbasic.hlp retail
+qic117.sys retail
+qic157.sys retail
+ql10wnt.sys retail
+queryui.dll retail
+quietjet.dll retail
+quikview.exe retail
+quotes retail
+qv.dll retail
+qv.sys retail
+qwiii.dll retail
+rainbow.ani retail
+raindrop.ani retail
+ras.ico retail
+rasacd.sys retail
+rasadhlp.dll retail
+rasadmin.cnt retail
+rasadmin.dll retail
+rasadmin.exe retail
+rassapi.dll retail
+rasadmin.hlp retail
+rasapi16.dll retail
+rasapi32.dll retail
+rasarp.sys retail
+rasauto.dll retail
+rasautou.exe retail
+rascauth.dll retail
+rascbcp.dll retail
+rasccp.dll retail
+rascfg.dll retail
+raschap.dll retail
+rasctrs.dll retail
+rasdd.dll retail
+rasddui.dll retail
+rasddui.hlp retail
+rasdial.exe retail
+rasdlg.dll retail
+rasfil32.dll retail
+rasgloss.cnt retail
+rasgloss.hlp retail
+rasgprxy.dll retail
+rasgtwy.dll retail
+rasipcp.dll retail
+rasiphlp.dll retail
+rasipxcp.dll retail
+rasman.dll retail
+rasman.exe retail
+rasmon.exe retail
+rasmsg.dll retail
+rasmxs.dll retail
+rasnbfcp.dll retail
+rasnbipc.dll retail
+raspap.dll retail
+rasphone.cnt retail
+rasphone.exe retail
+rasscrpt.dll retail
+rasshell.dll retail
+rascpl.cpl retail
+rasphone.hlp retail
+raspppen.dll retail
+raspptpc.dll retail
+raspptpl.dll retail
+raspptpe.sys retail
+raspptpf.sys retail
+raspptpm.sys retail
+raspptpu.sys retail
+rasread.txt retail
+rassauth.dll retail
+rasser.dll retail
+rassetup.cnt retail
+rassetup.hlp retail
+rasspap.dll retail
+rassprxy.exe retail
+rassrv.exe retail
+rastapi.dll retail
+rcp.exe retail
+rdbss.sys drivers
+rdisk.cnt retail
+rdisk.exe retail
+rdisk.hlp retail
+rdr.sys retail
+readme.wri retail
+recom.sys retail
+recover.exe retail
+redir.exe retail
+regedit.cnt retail
+regedit.exe retail
+regedit.hlp retail
+regeditv.cnt retail
+regeditv.hlp retail
+regedt32.cnt retail
+regedt32.exe retail
+regedt32.hlp retail
+regedt16.exe retail
+regedt16.hlp retail
+registry.inf retail
+relay.dll retail
+remline.bas retail
+repart.exe retail
+repl.exe retail
+replace.exe retail
+replanal.exe retail
+restore.exe retail
+rexec.exe retail
+riched.dll retail
+riched32.dll retail
+riched20.dll retail
+ringin.wav retail
+ringout.wav retail
+ripstat.exe retail
+rnal.dll retail
+rnr20.dll retail
+roman.fon retail
+route.exe retail
+router.exe retail
+routetab.dll retail
+rpcltc1.dll retail
+rpcltc8.dll retail
+rpcltccm.dll retail
+rpcltscm.dll retail
+rpcns4.dll retail
+rpcrt4.dll retail
+rpcss.exe retail
+rplcmd.exe retail
+rplcnv.exe retail
+rplmgr.cnt retail
+rplmgr.exe retail
+rplmgr.hlp retail
+rplsvc.exe retail
+rsabase.dll retail
+rsabase.sig retail
+rsh.exe retail
+rshx32.dll retail
+rtradmin.cnt retail
+rtradmin.hlp retail
+rundll32.exe retail
+runonce.exe retail
+s3.dll retail
+s3.sys retail
+samlib.dll retail
+samlsa.dll retail
+samsrv.dll retail
+savedump.exe retail
+sbpnp.inf retail
+scanpst.exe retail
+scanpst.hlp retail
+scclient.exe retail
+sccview.dll retail
+schdpl32.cnt retail
+schdpl32.exe retail
+schdpl32.hlp retail
+schmsg32.dll retail
+sclist.exe idw
+script.doc retail
+script.fon retail
+scrnsave.scr retail
+scsi.inf retail
+scsiport.sys retail
+scsiprnt.sys retail
+scsiscan.sys retail
+sctool.exe retail
+secinst.exe idw
+secsetup.dll idw
+security.dll retail
+secur32.dll retail
+seiko.dll retail
+seiko24e.dll retail
+seikosh9.dll retail
+sendfl32.dll retail
+serial.sys retail
+serialui.dll retail
+serife.fon retail
+serifee.fon retail
+serifeg.fon retail
+serifer.fon retail
+serifet.fon retail
+seriff.fon retail
+seriffe.fon retail
+seriffg.fon retail
+seriffr.fon retail
+serifft.fon retail
+sermouse.sys retail
+services retail
+services.exe retail
+setdom.exe retail
+setup.exe retail
+setup.txt retail
+setup16.inf retail
+setupapi.dll retail
+setupdd.sys retail
+setupdll.dll retail
+setupldr retail
+setupldr.bin retail
+setupp.ini retail
+setupreg.hiv retail
+setver.exe retail
+sfloppy.sys retail
+sfmapi.dll retail
+sfmatalk.sys retail
+sfmatcfg.dll retail
+sfmatmsg.dll retail
+sfmctrs.dll retail
+sfmicon.vol retail
+sfmicons.inf retail
+sfmmap.inf retail
+sfmmgr.cnt retail
+sfmmgr.cpl retail
+sfmmgr.hlp retail
+sfmmon.dll retail
+sfmmsg.dll retail
+sfmprint.exe retail
+sfmpsdib.dll retail
+sfmpsexe.exe retail
+sfmpsfnt.dll retail
+sfmpsprt.dll retail
+sfmreg.exe retail
+sfmres.dll retail
+sfmsrv.sys retail
+sfmsvc.exe retail
+sfmuam.ifo retail
+sfmuam.rsc retail
+sfmuam.txt retail
+sfmutil.dll retail
+sfmwshat.dll retail
+share.exe retail
+shcompui.dll retail
+shell.dll retail
+shell32.dll retail
+shlwapi.dll retail
+shmgrate.exe retail
+shrpubw.exe retail
+shscrap.dll retail
+sidewndr.dll retail
+sidewndr.sys retail
+simptcp.dll retail
+single.exe retail
+sizenesw.ani retail
+sizens.ani retail
+sizenwse.ani retail
+sizewe.ani retail
+skdll.dll retail
+skeys.exe retail
+slcd32.sys retail
+slip.scp retail
+slipmenu.scp retail
+smalle.fon retail
+smallee.fon retail
+smalleg.fon retail
+smaller.fon retail
+smallet.fon retail
+smallf.fon retail
+smallfe.fon retail
+smallfg.fon retail
+smallfr.fon retail
+smallft.fon retail
+smcisa.sys retail
+smctrls.dll retail
+smss.exe retail
+sndblst.dll retail
+sndblst.sys retail
+sndrec32.exe retail
+sndsys.sys retail
+sndsys32.dll retail
+sndvol32.cnt retail
+sndvol32.exe retail
+sndvol32.hlp retail
+snmp.exe retail
+snmpapi.dll retail
+snmptrap.exe retail
+softpub.dll retail
+software retail
+sol.cnt retail
+sol.exe retail
+sol.hlp retail
+sonic.sys retail
+snimac.sys retail
+sort.exe retail
+sortkey.nls retail
+sorttbls.nls retail
+sound.drv retail
+soundrec.cnt retail
+soundrec.hlp retail
+space.gif retail
+sparrow.sys retail
+spddlang.sys retail
+spinit.exe retail
+spock.sys retail
+spoolss.dll retail
+spoolss.exe retail
+sprestrt.exe retail
+srv.sys retail
+srvmgr.cnt retail
+srvmgr.cpl retail
+srvmgr.exe retail
+srvmgr.hlp retail
+srvsvc.dll retail
+ss3dfo.scr retail
+ssbezier.scr retail
+sserife.fon retail
+sserifee.fon retail
+sserifeg.fon retail
+sserifer.fon retail
+sserifet.fon retail
+sseriff.fon retail
+sseriffe.fon retail
+sseriffg.fon retail
+sseriffr.fon retail
+sserifft.fon retail
+ssflwbox.scr retail
+ssmaze.scr retail
+ssmarque.scr retail
+ssmyst.scr retail
+sspipes.scr retail
+ssstars.scr retail
+sstext3d.scr retail
+star24e.dll retail
+star9e.dll retail
+starjet.dll retail
+stdole.tlb retail
+stdole2.tlb retail
+stdole32.tlb retail
+stopwtch.ani retail
+storage.dll retail
+store32.dll retail
+streams.sys retail
+subroutn.inf retail
+subst.exe retail
+sumcat.dll retail
+supp_ed.cnt retail
+supp_ed.hlp retail
+switch.inf retail
+sxbios.bin retail
+sxfep.bin retail
+symbol.ttf retail
+symbole.fon retail
+symbolf.fon retail
+symc810.sys retail
+syncapp.exe retail
+synceng.dll retail
+syncui.dll retail
+synth.dll retail
+synth.pat retail
+synth.sys retail
+sysdm.cpl retail
+sysedit.exe retail
+sysmgmt.dll retail
+sysprint.sep retail
+syssetup.dll retail
+syssetup.inf retail
+system retail
+system.drv retail
+system.ini retail
+system.mdb retail
+systray.exe retail
+t128.sys retail
+t13b.sys retail
+t1instal.dll retail
+tada.wav retail
+tahoma.ttf retail
+tandqic.sys retail
+tape.inf retail
+tape.sys retail
+tapi.dll retail
+tapi32.dll retail
+tapiperf.dll retail
+tapisrv.exe retail
+tasklist.hlp netmon
+taskman.exe retail
+taskmgr.cnt retail
+taskmgr.exe retail
+taskmgr.hlp retail
+tcarc.sys retail
+tcpcfg.dll retail
+tcpip.cnt retail
+tcpip.hlp retail
+tcpip.sys retail
+tcpsvcs.exe retail
+tdi.sys retail
+telephon.cpl retail
+telnet.cnt retail
+telnet.exe retail
+telnet.hlp retail
+tftp.exe retail
+tga.dll retail
+tga.sys retail
+thinkjet.dll retail
+ti850.dll retail
+timedate.cpl retail
+timer.drv retail
+times.ttf retail
+timesbd.ttf retail
+timesbi.ttf retail
+timesi.ttf retail
+tmv1.sys retail
+toolhelp.dll retail
+trace.dll retail
+tracert.exe retail
+tree.com retail
+trident.sys retail
+trnsch32.dll retail
+tsd32.dll retail
+tssoft32.acm retail
+txtonly.dll retail
+txtsetup.sif retail
+typelib.dll retail
+ubnei.bin retail
+ubnei.sys retail
+ubnei.sys retail
+ufat.dll retail
+ulib.dll retail
+ulibif.dll retail
+ultra124.sys retail
+ultra14f.sys retail
+ultra24f.sys retail
+umpnpmgr.dll retail
+unicode.nls retail
+unimdm.tsp retail
+unlodctr.exe retail
+untfs.dll retail
+updsc.exe retail
+upg351db.exe retail
+ups.cpl retail
+ups.exe retail
+ureg.dll retail
+user.exe retail
+user32.dll retail
+imm32.dll retail
+userdiff retail
+userenv.dll retail
+userinit.exe retail
+usetup.exe retail
+usrmgr.cnt retail
+usrmgr.exe retail
+usrmgr.hlp retail
+utility.inf retail
+v7vga.rom retail
+v7vram.sys retail
+vanisher.ani retail
+vcdex.dll retail
+vdmdbg.dll retail
+vdmredir.dll retail
+veneer.exe retail
+ver.dll retail
+version.dll retail
+vform32.dll retail
+vga.dll retail
+vga.drv retail
+vga.sys retail
+vga256.dll retail
+vga64k.dll retail
+vga737.fon retail
+vga850.fon retail
+vga852.fon retail
+vga857.fon retail
+vga860.fon retail
+vga861.fon retail
+vga863.fon retail
+vga865.fon retail
+vga866.fon retail
+vga869.fon retail
+vgafix.fon retail
+vgafixe.fon retail
+vgafixg.fon retail
+vgafixr.fon retail
+vgafixt.fon retail
+vgaoem.fon retail
+vgasys.fon retail
+vgasyse.fon retail
+vgasysg.fon retail
+vgasysr.fon retail
+vgasyst.fon retail
+video.inf retail
+videoprt.sys retail
+videosim.sys retail
+vmmreg32.dll retail
+vsasc8.dll retail
+vsbmp.dll retail
+vsdrw.dll retail
+vsexe.dll retail
+vsexe2.dll retail
+vsmp.dll retail
+vsmsw.dll retail
+vspp.dll retail
+vspp7.dll retail
+vsqp6.dll retail
+vsrtf.dll retail
+vstiff.dll retail
+vsw6.dll retail
+vswks.dll retail
+vswmf.dll retail
+vsword.dll retail
+vswork.dll retail
+vswp5.dll retail
+vswp6.dll retail
+vswpf.dll retail
+vsxl5.dll retail
+vwipxspx.dll retail
+vwipxspx.exe retail
+w32.dll retail
+wagtail.ani retail
+wangqic.sys retail
+wd33c93.sys retail
+wd90c24a.dll retail
+wd90c24a.sys retail
+wdl.trm retail
+wdt32.dll retail
+wdvga.sys retail
+weitekp9.dll retail
+weitekp9.sys retail
+wfwnet.drv retail
+wgpoadmn.dll retail
+wgpocpl.cpl retail
+wgpomg32.dll retail
+win.com retail
+win.ini retail
+win32k.sys retail
+win32spl.dll retail
+win87em.dll retail
+winchat.cnt retail
+winchat.exe retail
+winchat.hlp retail
+windisk.cnt retail
+windisk.exe retail
+windisk.hlp retail
+windiska.cnt retail
+windiska.hlp retail
+windows.cnt retail
+windows.hlp retail
+winfile.cnt retail
+winfile.exe retail
+winfile.hlp retail
+winfile.ini retail
+wingding.ttf retail
+winhelp.exe retail
+winhelp.hlp retail
+winhlp32.cnt retail
+winhlp32.exe retail
+winhlp32.hlp retail
+winhstb.exe retail
+winlogon.exe retail
+winmine.cnt retail
+winmine.exe retail
+winmine.hlp retail
+winmm.dll retail
+winmsd.exe retail
+winnt.bmp retail
+winnt.exe retail
+winnt.hlp retail
+winnt256.bmp retail
+winoldap.mod retail
+winperms.txt retail
+winprint.dll retail
+wins.exe retail
+winsadmn.cnt retail
+winsadmn.exe retail
+winsadmn.hlp retail
+winsctrs.dll retail
+winsevnt.dll retail
+winsmib.dll retail
+winsock.dll retail
+winspool.drv retail
+winspool.exe retail
+winsrpc.dll retail
+winsrv.dll retail
+winstrm.dll retail
+wintrust.dll retail
+winver.exe retail
+wizmgr.exe retail
+wkssvc.dll retail
+wmsfr32.dll retail
+wmssetup.exe retail
+wmsui32.dll retail
+wow32.dll retail
+wowdeb.exe retail
+wowexec.exe retail
+wowfax.dll retail
+wowfaxui.dll retail
+write.exe retail
+ws2_32.dll retail
+ws2help.dll retail
+ws2map.dll retail
+wsasetup.dll retail
+wshisn.dll retail
+wshnetbs.dll retail
+wshtcpip.dll retail
+wsock32.dll retail
+xabios.bin retail
+xacook.bin retail
+xactsrv.dll retail
+xcopy.exe retail
+xeroxpcl.dll retail
+xga.dll retail
+xga.sys retail
+85f1257.fon retail
+85775.fon retail
+85s1257.fon retail
+app775.fon retail
+coue1257.fon retail
+couf1257.fon retail
+sere1257.fon retail
+serf1257.fon retail
+smae1257.fon retail
+smaf1257.fon retail
+ssee1257.fon retail
+ssef1257.fon retail
+sysdm.hlp retail
+vga775.fon retail
+vgaf1257.fon retail
+vgas1257.fon retail
+winnt32.exe winnt32
+winnt32.hlp winnt32
+9track.sys drivers
+dce376nt.sys drivers
+decbt459.sys drivers
+dzport.sys drivers
+em_drvr.sys drivers
+exmb.xfm drivers
+iiop.sys drivers
+mcsxns.sys drivers
+mouse.sys drivers
+mvopl3.sys drivers
+ncrcam.sys drivers
+pcidump.sys drivers
+pdii.sys drivers
+pstat.sys drivers
+scsitape.sys drivers
+simbad.sys drivers
+smbtrsup.sys drivers
+ubnb.sys drivers
+vga_alt.sys drivers
+hosts.shp drvetc
+lmhosts.shp drvetc
+aboutwep.dll idw
+accesori.grp idw
+access.exe idw
+access.wri idw
+access.hlp retail
+access35.hlp idw
+acllist.exe idw
+addfile.exe idw
+addproj.exe idw
+adduser.exe idw
+admin.grp idw
+alias.exe idw
+aniedit.exe idw
+apidll.dll idw
+apimon.exe idw
+apimon.hlp idw
+appxec32.dll idw
+autolfn.exe idw
+autowrap.exe idw
+basewin.exe idw
+bcc32.dll idw
+beep.exe idw
+bells.wav idw
+bin2c.exe idw
+bind.exe idw
+bingen.exe idw
+binplace.exe idw
+bintrack.exe idw
+bldsam2.exe idw
+blocks.wav idw
+bowdeb.exe idw
+boxes.bmp idw
+browdeb.exe idw
+browmon.exe idw
+browse.exe idw
+browstat.exe idw
+bugboard.exe idw
+build.exe idw
+build.hlp idw
+buildnum.exe idw
+bummer.wav idw
+cat.exe idw
+cats.exe idw
+catsrc.exe idw
+cdb.exe idw
+cdp.exe idw
+certify.exe idw
+cfront.exe idw
+checkfix.exe idw
+checkin.cmd idw
+checkins.txt idw
+checkrel.bnd idw
+checkrel.chk idw
+checkrel.exe idw
+chess.bmp idw
+chkalive.exe idw
+chkfile.chk idw
+chkslm.exe idw
+chksum.exe idw
+chkverfy.exe idw
+chmode.exe idw
+choice.exe idw
+cin.exe idw
+ciscan.exe idw
+clap.wav idw
+clearmem.exe dump
+clock.wav idw
+cmdevent.exe idw
+cmpver.exe idw
+compdir.exe idw
+compinst.exe idw
+connect.exe idw
+contrast.exe idw
+cookie.exe idw
+cp.exe idw
+cpustres.exe dump
+crash.exe idw
+crashdmp.exe idw
+creatfil.exe dump
+cruel.exe idw
+ctrlist.exe idw
+curridw.exe idw
+dbgdump.exe idw
+dbmon.exe idw
+dbnmp3.dll idw
+dbwin32.exe idw
+dcomp.exe idw
+dconnect.exe idw
+defect.exe idw
+delfile.exe idw
+delnode.exe idw
+delprof.exe idw
+delproj.exe idw
+dh.exe idw
+dhcpcli.exe idw
+dhcpcmd.exe idw
+dhcpins.exe idw
+dhcploc.exe idw
+dhcptst.exe idw
+diamond.exe idw
+diantz.exe idw
+diamwrap.exe idw
+diff.exe idw
+diruse.exe idw
+dis.exe idw
+diskedit.exe idw
+diskmon.exe idw
+dist.exe idw
+dnscmd.exe dump
+dnsstat.exe dump
+dommon.exe idw
+door.wav idw
+dosdev.exe idw
+drat.wav idw
+drivemap.exe idw
+drum.wav idw
+dskbench.exe idw
+dskimage.exe idw
+du.exe idw
+dumpchk.exe idw
+dumpexam.exe idw
+dumpflop.exe idw
+dumpgrp.exe idw
+dumpref.exe idw
+ech.exe idw
+echotime.exe idw
+editreg.exe idw
+editsym.exe idw
+empty.exe dump
+emptyw32.dll idw
+enlist.exe idw
+enterp.bmp idw
+ethstat.exe idw
+exctrlst.exe idw
+execmail.exe idw
+exp.exe idw
+fcom.exe idw
+filever.exe idw
+files.exe idw
+filter.exe idw
+filter32.dll idw
+findf.exe idw
+fix31grp.exe idw
+fixdiff.exe idw
+fixlinks.exe idw
+floplock.exe idw
+forceflt.exe idw
+forcemrg.exe idw
+games.grp idw
+gensrv.exe idw
+getbin.exe idw
+getbin.exe idw
+getdbg.exe idw
+getnt.exe idw
+gflags.exe idw
+glass.wav idw
+golf.exe idw
+gong.wav idw
+good32.dll idw
+grptoreg.exe idw
+guidlib.exe idw
+hd.exe idw
+he.exe idw
+head.exe idw
+heapmon.exe idw
+hextract.exe idw
+hihat.wav idw
+hivedmp.exe idw
+hivehdr.exe idw
+hiveini.exe idw
+horns.wav idw
+hsplit.exe idw
+imagecfg.exe idw
+imagechk.exe idw
+in.exe idw
+includes.exe idw
+infs.exe idw
+infsize.exe idw
+ini.exe idw
+instaler.exe idw
+instsrv.exe idw
+inxtoreg.exe idw
+iodll.dll idw
+jawharp.wav idw
+jiberish.wav idw
+kbdtool.exe idw
+kernprof.exe idw
+kernrate.exe idw
+kerntwk.exe idw
+kill.exe idw
+killwow.exe idw
+killwow.sym idw
+laser.wav idw
+laughs.wav idw
+layout.exe idw
+leakyapp.exe dump
+links.exe idw
+list.exe idw
+listmung.exe idw
+llscmd.exe idw
+llsdbg.exe idw
+lnkdump.exe idw
+loc.exe idw
+local.exe idw
+log.exe idw
+lookatwb.cmd idw
+ls.exe idw
+main.grp idw
+makedisk.exe idw
+mapmsg.exe idw
+mbrmake.exe idw
+mbrowse.dll idw
+mbytes.exe idw
+mcitest.exe idw
+mcpyfile.exe idw
+mepparty.dll idw
+merge.exe idw
+midleb.exe idw
+midlpg.exe idw
+midlyacc.exe idw
+mlayout.exe idw
+modif.hlp idw
+mondmp.exe idw
+moninit.exe idw
+mprtest.exe idw
+mrc.exe idw
+msize.exe idw
+mtc.exe idw
+mttf.exe idw
+mttfvwr.exe idw
+munge.exe idw
+mv.exe idw
+nbtd.exe idw
+nbtinfo.exe idw
+nclipps.dll idw
+netclip.exe idw
+netconf idw
+netd.exe idw
+netjoin.exe idw
+netobj.dll idw
+netperm.exe idw
+netshare.exe idw
+netwatch.exe idw
+nlmon.exe idw
+nltest.exe idw
+nt.bmp idw
+ntddecmn.exe idw
+ntfsdump.exe idw
+ntimer.exe idw
+nvram.exe idw
+objdir.exe idw
+objmon.exe idw
+oeminf.exe idw
+oform32.dll idw
+ohoh.wav idw
+openall.exe idw
+order.exe idw
+out.exe idw
+packer.exe idw
+paper.bmp idw
+paranoia.exe idw
+parcomp.exe idw
+parse.exe idw
+parsync.exe idw
+party.bmp idw
+passprop.exe idw
+pcall.exe idw
+pcmcmd.exe idw
+pdump.exe idw
+pdh.dll dump
+pdhdefs.txt dump
+pdlcnfig.exe dump
+pdlcnfig.hlp dump
+pdlcnfig.cnt dump
+pdlsvc.exe dump
+pegged.exe idw
+perms.exe idw
+playsnd.exe idw
+pop.wav idw
+pppmenu.scp retail
+ppr.exe idw
+pperf.exe idw
+pretty.exe idw
+prodfilt.exe idw
+property.q idw
+psxhello.exe idw
+pyramid.bmp idw
+qgrep.exe idw
+qslice.exe idw
+quickrun.exe idw
+random.exe idw
+rasether.dll idw
+rathole.exe idw
+rcdata1.dll idw
+rcdump.exe idw
+rcpp.exe idw
+readline.exe idw
+regback.exe idw
+regdmp.exe idw
+regdir.exe idw
+regini.exe idw
+regfind.exe idw
+regtogrp.exe idw
+remote.exe idw
+repair.exe idw
+request.cmd idw
+rescan.exe idw
+rescan.exe idw
+resmon.exe idw
+resolv.cnf idw
+reversi.exe idw
+ribbons.bmp idw
+rollback.exe idw
+roshare.exe idw
+rpctrace.exe idw
+rwinf.dll idw
+rwmac.dll idw
+rwres32.dll idw
+rwwin16.dll idw
+rwwin32.dll idw
+sadmin.exe idw
+scmain.exe idw
+scomp.exe idw
+secedit.dll idw
+secedit.exe idw
+seclist.exe idw
+sed.exe idw
+sert32.dll idw
+setedit.exe dump
+setidw.bat idw
+setidw.ini idw
+setlink.exe idw
+setwin95.cmd idw
+setnt351.cmd idw
+showinst.exe idw
+showperf.exe idw
+shutdown.exe idw
+shuttle.exe idw
+simbad.exe idw
+siren.wav idw
+size.exe idw
+slash.bmp idw
+sleep.exe idw
+slm.exe idw
+slmck.exe idw
+slmdiff.exe idw
+slmed.exe idw
+smbtrace.exe idw
+snake.exe idw
+snmpctrl.exe idw
+snmptest.exe idw
+snmptst1.exe idw
+snmptst2.exe idw
+snmptst3.exe idw
+snmptst4.exe idw
+snmptst5.exe idw
+snmptst6.exe idw
+snmptst7.exe idw
+snmptst8.exe idw
+snmputil.exe idw
+solidpp.exe idw
+splinfo.exe idw
+splitsym.exe idw
+spots.bmp idw
+srch.exe idw
+srch.hlp idw
+srvname.exe idw
+ssptest.exe idw
+ssync.exe idw
+startpgm.exe idw
+startup.grp idw
+status.exe idw
+statw32.dll dump
+std.bmp idw
+steel.bmp idw
+stringpp.exe idw
+strings.exe idw
+strip.exe idw
+stripcv.exe idw
+stripinf.exe idw
+strmdbg.exe idw
+strmexts.dll idw
+structo.exe idw
+suck.exe idw
+switcher.exe idw
+sync.exe idw
+sysdiff.exe idw
+sysdiff.inf idw
+tail.exe idw
+taipei.exe idw
+takeown.exe idw
+tbitmap.exe idw
+tc.exe idw
+tcpexts.dll idw
+tdi_init.exe idw
+tee.exe idw
+template.xxx idw
+tictac.exe idw
+tile.exe idw
+timeit.exe idw
+timer.exe idw
+timerw32.dll dump
+timpani.wav idw
+tlist.exe idw
+tools.grp idw
+topdesk.exe idw
+topdesk.hlp idw
+tophook.dll idw
+touch.exe idw
+tpdiff.exe idw
+train.wav idw
+trans.exe idw
+trnncx32.dll idw
+typeall.cmd idw
+tz.exe idw
+uixport.exe idw
+undoinst.exe idw
+units.exe idw
+unmerge.exe idw
+upd.exe idw
+upddbg.exe idw
+updrn.exe idw
+vault.wav idw
+vdesk.exe idw
+vi.exe idw
+w3dblib.dll idw
+wah.wav idw
+wait.exe dump
+walk.exe idw
+water.wav idw
+wc.exe idw
+wcshdr.exe idw
+weave.bmp idw
+whales.wav idw
+whatis.exe idw
+where.exe idw
+winapps.grp idw
+winat.exe idw
+winat.hlp idw
+winbez.exe idw
+winclip.dll idw
+winmsdp.exe idw
+winobj.exe idw
+winraid.exe idw
+winschk.exe idw
+winscl.exe idw
+winsdrv.exe idw
+winstst.exe idw
+winvtp.exe idw
+wizard32.dll idw
+wnbstat.exe idw
+wow.grp idw
+wow16.grp idw
+ws.exe idw
+ws2hdr.exe idw
+ws2inst.exe idw
+wzmail.exe idw
+xdosnet.exe idw
+xenix32.dll idw
+xerox.exe idw
+ximail32.dll idw
+yapt.exe idw
+ync.exe idw
+z.exe idw
+zextens.dll idw
+patchdll.dll idw\setup
+setupupg.hiv idw\setup
+setupret.hiv idw\setup
+setup2p.hiv idw\setup
+setup4p.hiv idw\setup
+setup8p.hiv idw\setup
+setup16p.hiv idw\setup
+setup32p.hiv idw\setup
+tbomb30.hiv idw\setup
+tbomb60.hiv idw\setup
+tbomb90.hiv idw\setup
+tbomb120.hiv idw\setup
+unattend.txt retail
+update.exe idw\setup
+update.inf idw\setup
+abtou.exe mstools
+afdkd.dll mstools
+alphakd.exe mstools
+anm.exe mstools
+apf32cvt.exe mstools
+apf32dmp.exe mstools
+as0.exe mstools
+as1.exe mstools
+asaxp.exe mstools
+asaxp.hlp mstools
+c1.err mstools
+c1.exe mstools
+c1xx.exe mstools
+c2.exe mstools
+c23.err mstools
+c3.dll mstools
+cap.dll mstools
+capdump.exe mstools
+capsetup.exe mstools
+cc.exe mstools
+cfe.exe mstools
+cl.err mstools
+cl.exe mstools
+cl.hlp mstools
+cl32.msg mstools
+cl32.msg mstools
+claxp.exe mstools
+claxp.txt mstools
+cmidl.exe mstools
+compress.exe mstools
+contents.exe mstools
+contents.hlp mstools
+contents.ini mstools
+cor.exe mstools
+cpp.exe mstools
+cputherm.exe mstools
+cvdump.exe mstools
+cvpack.err mstools
+cvpack.exe mstools
+cvtomf.exe mstools
+cvtres.err mstools
+cvtres.exe mstools
+dbi.dll mstools
+ddespy.exe mstools
+ddicnvrt.exe mstools
+ddictl.exe mstools
+ddk.hdx mstools
+ddk.hlp mstools
+ddk.ind mstools
+debug.hlp mstools
+dflayout.dll mstools
+dflayout.exe mstools
+dfskd.dll mstools
+dfview.exe mstools
+dhcp.mib mstools
+dlgedit.exe mstools
+dlgedit.hlp mstools
+dm.dll mstools
+dm32s.dll mstools
+dmkdalp.dll mstools
+dmkdmip.dll mstools
+dmkdppc.dll mstools
+dmkdx86.dll mstools
+dobjview.exe mstools
+drivers.exe mstools
+drvlog.dll mstools
+dsysmidl.exe mstools
+edithlp.hlp mstools
+eecxxalp.dll mstools
+eecxxmip.dll mstools
+eecxxppc.dll mstools
+eecxxx86.dll mstools
+emalp.dll mstools
+emmip.dll mstools
+emppc.dll mstools
+emx86.dll mstools
+err.cc mstools
+errors.hlp mstools
+fastimer.dll mstools
+fernel32.dll mstools
+filter.dll mstools
+fontedit.exe mstools
+fontedit.hlp mstools
+ftp.mib mstools
+gdikdx.dll mstools
+ttkdx.dll mstools
+getstart.hlp mstools
+gopherd.mib mstools
+gutils.dll mstools
+hc.bat mstools
+hc30.exe mstools
+hc31.err mstools
+hc31.exe mstools
+hcrtf.exe mstools
+hcw.exe mstools
+hdxdll.dll mstools
+hook.dll mstools
+http.mib mstools
+hwdll.dll mstools
+i386kd.exe mstools
+imagedit.exe mstools
+imagedit.hlp mstools
+inetsrv.mib mstools
+instrapi.dll mstools
+irotview.exe mstools
+isnext.dll mstools
+iviewers.dll mstools
+justify.dll mstools
+kdextalp.dll mstools
+kdextmip.dll mstools
+kdextppc.dll mstools
+kdexts.dll mstools
+kdextx86.dll mstools
+lib.exe mstools
+lib.hlp mstools
+lib32.exe mstools
+lineedit.dll mstools
+link.err mstools
+link.exe mstools
+link.hlp mstools
+link32.exe mstools
+lmmib2.mib mstools
+logger32 mstools
+lookmon.exe mstools
+makeani.exe mstools
+mapsym.exe mstools
+masm386.exe mstools
+mc.exe mstools
+mc.hlp mstools
+mcl.exe mstools
+mep.exe mstools
+mep.hlp mstools
+mhelp.dll mstools
+mib_ii.mib mstools
+mibcc.exe mstools
+midl.exe mstools
+mip2coff.exe mstools
+mipskd.exe mstools
+mkheader.exe mstools
+mktlib34.exe mstools
+mktyplib.exe mstools
+ml.err mstools
+ml.exe mstools
+mlink32.exe mstools
+mrbc.exe mstools
+msas0.exe mstools
+msas1.exe mstools
+msc.hlp mstools
+msdis.exe mstools
+mshelp.dll mstools
+mspdb40.dll mstools
+mspdb41.dll mstools
+mstest.hlp mstools
+msu.exe mstools
+msugen.exe mstools
+msumerge.exe mstools
+msuopt.exe mstools
+msvcbook.dll mstools
+mupkd.dll mstools
+nmake.err mstools
+nmake.exe mstools
+nmake.hlp mstools
+ntdetect.chk mstools
+ofskd.dll mstools
+ole.hdx mstools
+ole.hlp mstools
+ole.ind mstools
+ole2ui.hlp mstools
+oletools.hlp mstools
+oleview.exe mstools
+opengl.hdx mstools
+opengl.hlp mstools
+opengl.ind mstools
+pas.exe mstools
+perfmtr.exe mstools
+pfmon.exe mstools
+pmatch.dll mstools
+pmon.exe mstools
+pnpinit.exe idw
+poolmon.exe mstools
+ppckd.exe mstools
+profile.exe mstools
+psapi.dll mstools
+pstat.exe mstools
+pt.hdx mstools
+pt.hlp mstools
+pt.ind mstools
+pview.exe mstools
+pviewer.exe mstools
+rc.exe mstools
+rc.hlp mstools
+rcdll.dll mstools
+rdrkd.dll mstools
+rdr2kd.dll mstools
+rebase.exe mstools
+register.exe mstools
+regtlb.exe mstools
+rlman.exe mstools
+rm.exe mstools
+rpc.hdx mstools
+rpc.hlp mstools
+rpc.ind mstools
+samples.hlp mstools
+sc.exe mstools
+sct.hdx mstools
+sct.hlp mstools
+sct.ind mstools
+sde.dll mstools
+sdkddk.grp mstools
+set.hdx mstools
+set.hlp mstools
+set.ind mstools
+shcv.dll mstools
+shed.exe mstools
+shed.hlp mstools
+smashlck.exe mstools
+smbtrace.exe mstools
+smi.mib mstools
+soc.hdx mstools
+soc.hlp mstools
+soc.ind mstools
+spy.exe mstools
+srvkd.dll mstools
+symcvt.dll mstools
+symedit.exe mstools
+testctrl.dll mstools
+testdlgs.dll mstools
+testdlgs.exe mstools
+testdrvr.exe mstools
+testevnt.dll mstools
+testscrn.dll mstools
+testscrn.exe mstools
+testview.dll mstools
+testvw32.dll mstools
+tglcase.dll mstools
+thunk.exe mstools
+tlloc.dll mstools
+tlpipe.dll mstools
+tlser.dll mstools
+tlser32.dll mstools
+tlser32s.dll mstools
+tools.hdx mstools
+tools.hlp mstools
+tools.hlp mstools
+tools.ind mstools
+top.exe mstools
+ugen.exe mstools
+ulcase.dll mstools
+undel.exe mstools
+undname.exe mstools
+unregtlb.exe mstools
+uopt.exe mstools
+upas.exe mstools
+userkdx.dll mstools
+uuidgen.exe mstools
+vadump.exe mstools
+vdmperf.exe mstools
+verfix.exe mstools
+vfw.hdx mstools
+vfw.hlp mstools
+vfw.ind mstools
+vidcap32.exe mstools
+wdbg32s.exe mstools
+win32.hdx mstools
+win32.hlp mstools
+win32.ind mstools
+win32api.dat mstools
+windbg.exe mstools
+windbg.hlp mstools
+windbgrm.exe mstools
+windiff.exe mstools
+windiff.hlp mstools
+wins.mib mstools
+winsock.hlp mstools
+wperf.exe mstools
+ws1.dll mstools
+wst.dll mstools
+wstcat.exe mstools
+wstdump.exe mstools
+wstune.exe mstools
+zdi32.dll mstools
+zdvapi32.dll mstools
+zernel32.dll mstools
+zinsrv.dll mstools
+zle32.dll mstools
+zoomin.exe mstools
+zrtdll.dll mstools
+zser32.dll mstools
+zwapi.exe mstools
+canon10e.dll printer
+canon130.dll printer
+drivers.ini printer
+execjet.dll printer
+toshiba.dll printer
+ab.dll system
+acmcps32.dll system
+backupa.hlp system
+basertl.dll system
+big5.nls system
+bowsvc.dll system
+c_10001.nls system
+c_10002.nls system
+c_10003.nls system
+c_10004.nls system
+c_10005.nls system
+c_10008.nls system
+c_1361.nls system
+c_29001.nls system
+c_708.nls system
+c_720.nls system
+c_862.nls system
+c_864.nls system
+c_874.nls system
+c_932.nls system
+c_936.nls system
+c_949.nls system
+c_950.nls system
+cairocpl.dll system
+cal.dll system
+calendar.exe system
+calendar.hlp system
+carton.exe system
+cdbmpctl.dll system
+cdforms.tlb system
+cdloghrs.dll system
+cfg3270.dll system
+cfm30d.dll system
+cfm30ud.dll system
+cfmo30d.dll system
+cfmo30ud.dll system
+cfmtn30.dll system
+cfmtn30d.dll system
+cfmtno30.dll system
+cfmtno3d.dll system
+cleanup.exe system
+clipbook.exe system
+clipbrda.hlp system
+clock.dll system
+clocksch.dll system
+comm.sym system
+commdlg.map system
+commdlg.sym system
+commnot.dll system
+compob32.dll system
+control2.exe system
+control2.exe system
+controla.hlp system
+cpdskadm.dll system
+cpo.dll system
+cpprint.dll system
+cpsetup.exe system
+cpsrv.exe system
+cpsrvcs.dll system
+cpups.dll system
+credini.exe system
+devapps.cpl system
+ctl3d32.dll system
+ctl3dv2.map system
+ctl3dv2.sym system
+cursor.seq system
+dahard.dll system
+ddeml.map system
+ddeml.sym system
+demilayr.dll system
+desk.dll system
+desktop.exe system
+dfsmsgs.dll system
+diskman.hlp system
+display.inf system
+display.inf system
+dlc3270.dll system
+dosx.map system
+dosx.sym system
+drwatson.map system
+drwatson.sym system
+dscont.dll system
+dsktoobj.exe system
+elfapi.dll system
+evntvwra.hlp system
+explsrv.exe system
+fole2ui.dll system
+formidbl.dll system
+formtool.exe system
+framewrk.dll system
+ftphelp.dll system
+gdi.map system
+gdi.sym system
+gdiexts.dll system
+group_ui.dll system
+grptoobj.exe system
+hyprwrit.exe system
+impexp.dll system
+init_tdi.exe system
+initial.inf system
+intro.seq system
+ipinfor.inf system
+job.dll system
+kb_msl.hlp system
+keyboard.map system
+keyboard.sym system
+killora.exe system
+krnl386.map system
+krnl386.sym system
+krnl386.sys system
+ksc.nls system
+label.rsp retail
+lastwins.dll system
+layedit.exe system
+layrdisp.dll system
+ldrdll.dll system
+lmmon.dll system
+lmspool.dll system
+lmsvcs.exe system
+loader.exe system
+locate.exe system
+lsaudll.dll system
+lt200msg.dll system
+ltype.ttf system
+mailmgr.dll system
+mailspl.exe system
+mciole16.map system
+mciole16.sym system
+mcsxnsvc.exe system
+mfcuia32.dll system
+mfcuiw32.dll system
+mkvolume.exe system
+mmsystem.map system
+mmsystem.sym system
+mmtask.map system
+mmtask.sym system
+mouse.inf system
+mouse.map system
+mouse.sym system
+mprmain.dll system
+msacm.sym system
+msherc.com system
+msmail.exe system
+msmail.hlp system
+msp32_br.lex system
+msp32_da.lex system
+msp32_es.lex system
+msp32_fi.lex system
+msp32_fr.lex system
+msp32_ge.lex system
+msp32_it.lex system
+msp32_nb.lex system
+msp32_nl.lex system
+msp32_pb.lex system
+msp32_sw.lex system
+mspelf32.dll system
+msremind.exe system
+mssched.dll system
+mssfs.dll system
+mstools.inf system
+mvopl3.dll system
+mvopl3.pat system
+ncpa.hlp system
+nddeexts.dll system
+ninstall.exe system
+noise.ptb system
+noise.ptg system
+ntcmdsa.hlp system
+ntdos.map system
+ntdos.sym system
+ntio.sym system
+ntsd.exe system
+ntsdexts.dll system
+nwlnkcf1.dll system
+nwlnkcfg.dll system
+nwlnkmsg.dll system
+nwlnksvc.exe system
+nwnblink.dll system
+nwnblink.exe system
+nwsvc.exe system
+oemndrdt.inf system
+oemndrdt.inf system
+oemnsvrc.inf system
+oemnsvre.inf system
+oemnxpi1.inf system
+oemnxpi1.inf system
+oemnxpxn.inf system
+oemsetup.inf system
+ogldrv.dll system
+ole232.dll system
+ole2pr32.dll system
+olecli.sym system
+olecli.map system
+oleexts.dll system
+oleprx32.dll system
+olesvr.map system
+olesvr.sym system
+os2dll.dll system
+pabnsp.dll system
+package.dll system
+partial.inf system
+passgen.exe system
+pdf.dll system
+pdfpage.dll system
+perfmetr.exe system
+perfmona.hlp system
+pifedita.hlp system
+pkgpages.dll system
+popup.dll system
+port.dll system
+ports.dll system
+pps.hlp system
+prc.nls system
+prcp.nls system
+prictl.cpl system
+printers.ini system
+printmna.hlp system
+progmana.hlp system
+propset.dll system
+prvmgmt.tlb system
+pslanman.sep system
+rasapi16.map system
+rasapi16.sym system
+rcmd.exe system
+rcmdsvc.exe system
+regeda32.hlp system
+remlabel.cmd retail
+repair.inf system
+replcfg.exe system
+reprtreg.exe system
+rpcepmap.exe system
+rpcepmpr.exe system
+rpcltc4.dll system
+rtfdoc.dll system
+rtoolbar.dll system
+rtutils.dll retail
+scexts.dll system
+schdplus.exe system
+schdplus.hlp system
+schedmsg.dll system
+schemes.cpl system
+sendfile.dll system
+setupnta.hlp system
+sfmctrnm.h system
+sfmctrs.ini system
+sfmmgr.dll system
+shamu.dll system
+shdebug.dll system
+shell.sym system
+shrapp.dll system
+shsample.dll system
+sna3270.dll system
+sndsys.pat system
+sound.map system
+sound.sym system
+spincube.dll system
+splexts.dll system
+storag32.dll system
+store.dll system
+sys003.dll system
+sysman.tlb system
+system.dll system
+system.map system
+system.sym system
+telnet.dll system
+tenet.exe system
+timer.map system
+timer.sym system
+tlib34.dll system
+toolhelp.map system
+toolhelp.sym system
+topview.exe system
+tray.exe system
+trc3270.dll system
+trnsched.dll system
+ubnbmsg.dll system
+ubnbsvc.exe system
+uhpfs.dll system
+user.map system
+user.sym system
+userconv.cnt system
+userexts.dll system
+vaen232.dll system
+vaen232.olb system
+vba232.dll system
+vbs.tlb system
+vbscript.exe system
+vdmexts.dll system
+vforms.dll system
+vga.map system
+vga.sym system
+virtual.inf system
+wdvga.dll system
+webcore.dll system
+wfwnet.map system
+wfwnet.sym system
+wgpomgr.dll system
+win3270.exe system
+win3270.hlp system
+winbug.dat system
+winbug.exe system
+winbug.hlp system
+winbug10.dll system
+windows.cnt system
+winfilea.hlp system
+winipcfg.exe system
+winnt_as.hlp system
+winnt_as.ind system
+winoldap.sym system
+winole.tlb system
+winperf.exe system
+winreg.dll system
+winsock.map system
+winsock.sym system
+winspool.map system
+winspool.sym system
+winsrpcb.dll system
+winsrvk.dll system
+wntupmgr.cnt system
+wowdeb.map system
+wowdeb.sym system
+wowexec.map system
+wowexec.sym system
+write16.exe system
+write16.map system
+write16.sym system
+wshnwlnk.dll system
+wshxns.dll system
+xjis.nls system
+xnscfg.dll system
+xnsmsg.dll system
+basic.dll inetsrv
+control.ini inetsrv
+iexplore.exe retail
+iexplore.cnt retail
+iexplore.hlp retail
+iexplore.inf retail
+iexplore.ini inetsrv
+flock.bmp inetsrv
+fscfg.dll inetsrv
+catscfg.dll inetsrv
+iisui.dll inetsrv
+ftpctrs.h inetsrv
+ftpctrs.ini inetsrv
+ftpctrs2.dll inetsrv
+ftpmib.dll inetsrv
+ftpsapi2.dll inetsrv
+ftpsvc2.dll inetsrv
+gateway.dll inetsrv
+gdapi.dll inetsrv
+gdctrs.dll inetsrv
+gdctrs.h inetsrv
+gdctrs.ini inetsrv
+gdmib.dll inetsrv
+gdspace.dll inetsrv
+gopherd.dll inetsrv
+gscfg.dll inetsrv
+httpmib.dll inetsrv
+httpodbc.dll inetsrv
+iissuba.dll inetsrv
+iismap.dll inetsrv
+iiscrmap.dll inetsrv
+md5filt.dll inetsrv
+inetaccs.exe inetsrv
+inetinfo.exe inetsrv
+isatq.dll inetsrv
+infoctrs.dll inetsrv
+infoctrs.h inetsrv
+infoctrs.ini inetsrv
+accsctrs.dll inetsrv
+accsctrs.h inetsrv
+accsctrs.ini inetsrv
+inetcpl.cpl retail
+inetmgr.exe inetsrv
+inetmib.bin inetsrv
+inetsloc.dll inetsrv
+inetins.exe retail
+inetstp.dll inetsrv
+inetstp.exe inetsrv
+inetstp.inf inetsrv
+odbc.inf inetsrv
+inetsvcs.dll inetsrv
+infocomm.dll inetsrv
+infoadmn.dll inetsrv
+accsadmn.dll inetsrv
+accscomm.dll inetsrv
+ipudll.dll inetsrv
+lmbeta.bmp inetsrv
+makeflat.cmd inetsrv
+msmail32.ini inetsrv
+newshell.cmd inetsrv
+progman.ini inetsrv
+registry.ini inetsrv
+schdpl32.ini inetsrv
+shupdate.cmd inetsrv
+shupsym.cmd inetsrv
+simple.dll inetsrv
+gdsset.exe inetsrv
+tcpip.ini inetsrv
+viewer.ini inetsrv
+viewera.ini inetsrv
+w3ctrs.dll inetsrv
+w3ctrs.h inetsrv
+w3ctrs.ini inetsrv
+w3scfg.dll inetsrv
+w3svapi.dll inetsrv
+w3svc.dll inetsrv
+clapi.dll inetsrv
+iislog.dll inetsrv
+cinetlog.dll inetsrv
+ssinc.dll inetsrv
+redirect.dll inetsrv
+setkey.exe inetsrv
+sspifilt.dll inetsrv
+applyinf.exe idw
+wininet.dll dump
+wininet.sym dump
+wininet.map dump
+cachevu.dll inetsrv
+basicsec.dll inetsrv
+urlmon.dll inetsrv
+url.dll retail
+js.dll inetsrv
+jscript.dll inetsrv
+msrating.dll inetsrv
+fechrcnv.dll inetsrv
+shdocvw.dll retail
+mshtml.dll inetsrv
+htmlctl.ocx inetsrv
+inetcpl.cpl inetsrv
+metadata.dll inetsrv
+mdprox.dll inetsrv
+iisadmin.dll inetsrv
+ieshstub.dll retail
+secbasic.dll retail
+secsspi.dll retail
+msnsspc.dll retail
+msnauth.cnt retail
+msnauth.hlp retail
+winntas.bmp inetsrv
+keygen.exe inetsrv
+convlog.exe inetsrv
+keyring.exe inetsrv
+w3key.dll inetsrv
+dsnform.exe inetsrv\scripts\tools
+getdrvrs.exe inetsrv\scripts\tools
+mkilog.exe inetsrv\scripts\tools
+newdsn.exe inetsrv\scripts\tools
+favlist.dll inetsrv\scripts\samples
+srch.dll inetsrv\scripts\samples
+volresp.dll inetsrv\scripts\samples
+ism.dll inetsrv\htmla
+schannel.dll retail
+
+;
+; Export Controlled Binaries should go here:
+;
+
+schnl128.dll noexport
+keygend.exe noexport
+ndiswand.sys noexport
+extag.exe idw
+
+;
+; Microsoft Proxy Server binaries.
+;
+
+w3proxy.dll retail
+w3pcache.dll retail
+mspsec.dll retail
+mspmon.dll retail
+w3pmib.dll retail
+w3papi.dll retail
+w3pcfg.dll retail
+ipudll.dll retail
+msplog.dll retail
+w3pinet.dll retail
+mkplog.exe retail
+mspip.dll retail
+
+cachctrs.h perfctrs
+cachctrs.ini perfctrs
+w3pctrs.h perfctrs
+w3pctrs.ini perfctrs
+w3p.mib perfctrs
+wsp.mib perfctrs
+
+rwsctrs.h dump
+rwsctrs.ini dump
+catsql.idc dump
+catsql.htx dump
+
+;
+; WinSock Proxy Server binaries
+;
+
+wspmsg.dll retail
+wspperf.dll retail
+rws32.dll retail
+rws.dll retail
+msphlpr.dll retail
+mspapi.dll retail
+wspapi.dll retail
+wspcfg.dll retail
+wspsrv.exe retail
+wspdiag.exe retail
+dialtool.exe retail
+wspperf.h retail
+wspperf.ini retail
+wspmib.dll retail
+latui.dll retail
+
+;
+; Microsoft Proxy Server - Setup binaries
+;
+
+setup1.exe retail
+stpext16.dll retail
+stpext32.dll retail
+setup1.exe retail
+stpsrvex.dll retail
+aux32_16.dll retail
+aux16.dll retail
+
+;
+; Microsoft Proxy Server - misc files
+;
+
+dnstest.exe misc
+
+
+;
+; Index Server (Tripoli) ISAPI binaries
+;
+
+cidaemon.exe query
+cistp.dll query
+htmlfilt.dll query
+idq.dll query
+infosoft.dll query
+isadmin.url query
+isdoc.url query
+isquery.url query
+isreadme.url query
+nlgwbrkr.dll query
+kppp.dll query
+kppp7.dll query
+kpw6.dll query
+kpword.dll query
+kpxl5.dll query
+qperf.dll query
+query.dll query
+sccfa.dll query
+sccfi.dll query
+sccifilt.dll query
+sccut.dll query
+setupci.inf query
+webhits.exe query
+
+ciperfm.h query\perf
+filtperf.h query\perf
+perfci.ini query\perf
+perffilt.ini query\perf
+perfwci.h query\perf
+perfwci.ini query\perf
+
+noise.dat query\lang
+noise.deu query\lang
+noise.eng query\lang
+noise.enu query\lang
+noise.esn query\lang
+noise.fra query\lang
+noise.ita query\lang
+noise.nld query\lang
+noise.sve query\lang
+wbcache.deu query\lang
+wbcache.eng query\lang
+wbcache.enu query\lang
+wbcache.esn query\lang
+wbcache.fra query\lang
+wbcache.ita query\lang
+wbcache.nld query\lang
+wbcache.sve query\lang
+wbdbase.deu query\lang
+wbdbase.eng query\lang
+wbdbase.enu query\lang
+wbdbase.esn query\lang
+wbdbase.fra query\lang
+wbdbase.ita query\lang
+wbdbase.nld query\lang
+wbdbase.sve query\lang
+
+admin.htm query\sample
+admin.htx query\sample
+admin.ida query\sample
+admin.idq query\sample
+author.htm query\sample
+author.idq query\sample
+bestwith.gif query\sample
+book08.jpg query\sample
+32x_book.jpg query\sample
+64x_book.jpg query\sample
+deferror.htx query\sample
+detail1.htx query\sample
+detail2.htx query\sample
+detail3.htx query\sample
+detail4.htx query\sample
+disclaim.htm query\sample
+filesize.htm query\sample
+filetime.htm query\sample
+filesize.idq query\sample
+filetime.idq query\sample
+format1.htx query\sample
+format2.htx query\sample
+format3.htx query\sample
+format4.htx query\sample
+head.htx query\sample
+hidden.htx query\sample
+home.gif query\sample
+hquery.htx query\sample
+hquery.idq query\sample
+htxerror.htx query\sample
+idqerror.htx query\sample
+merge.ida query\sample
+next.htx query\sample
+
+newsfull.htm query\newsvr
+newsfull.htx query\newsvr
+newsfull.htw query\newsvr
+newssum.htm query\newsvr
+newssum.htw query\newsvr
+newssum.htx query\newsvr
+newsall.inf query\newsvr
+newsqry.idq query\newsvr
+
+powrbybo.gif query\sample
+prev.htx query\sample
+query.htm query\sample
+query.htx query\sample
+query.idq query\sample
+queryhit.htm query\sample
+queryhit.htx query\sample
+queryhit.idq query\sample
+queryhit.htw query\sample
+qhitspat.gif query\sample
+reserror.htx query\sample
+scan.ida query\sample
+scan.idq query\sample
+scan.htx query\sample
+sformat1.htx query\sample
+sformat2.htx query\sample
+sformat3.htx query\sample
+sformat4.htx query\sample
+shead.htx query\sample
+simple.idq query\sample
+state.htx query\sample
+state.ida query\sample
+snext.htx query\sample
+stail.htx query\sample
+tail.htx query\sample
+unfilt.idq query\sample
+unfilt.htx query\sample
+
+adminhlp.htm query\help
+backgrd.gif query\help
+active2.gif query\help
+active6.gif query\help
+active6a.gif query\help
+active7.gif query\help
+bullet.gif query\help
+cathlp.htm query\help
+default.htm query\help
+errhandl.htm query\help
+errorhlp.htm query\help
+faq.htm query\help
+filtrhlp.htm query\help
+front.htm query\help
+glossary.htm query\help
+htxhelp.htm query\help
+idq-vars.htm query\help
+idqhelp.htm query\help
+idx_logo.gif query\help
+indexhlp.htm query\help
+install.htm query\help
+intro.htm query\help
+license.htm query\help
+next.gif query\help
+onepix.gif query\help
+powered.gif query\help
+previous.gif query\help
+qrylang.htm query\help
+queryhlp.htm query\help
+reghelp.htm query\help
+scanhlp.htm query\help
+sechelp.htm query\help
+tipshelp.htm query\help
+toc.gif query\help
+up.gif query\help
+up_end.gif query\help
+webhits.htm query\help
+xag_e19.gif query\help
+
+
+;
+; Wx86 binaries
+;
+wx86.dll retail
+wx86cpu.dll retail
+wicrtdll.dll retail
+wivcrt.dll retail
+wivcrt20.dll retail
+wivcrt40.dll retail
+wivcirt.dll retail
+wimfc40.dll retail
+wimfc40u.dll retail
+wimfc42.dll retail
+wimfc42u.dll retail
+wictl3d.dll retail
+wioleaut.dll retail
+wistd32.tlb retail
+wimsjt30.dll retail
+wiodbcjt.dll retail
+wiolecli.dll retail
+wiolesvr.dll retail
+wiwmsui.dll retail
+whadv32.dll retail
+whcctl32.dll retail
+whcdlg32.dll retail
+whddeapi.dll retail
+whgdi32.dll retail
+whkrnl32.dll retail
+whlz32.dll retail
+whmpr.dll retail
+whntdll.dll retail
+whole32.dll retail
+wholedlg.dll retail
+whopengl.dll retail
+whshll32.dll retail
+whsock32.dll retail
+whuser32.dll retail
+whversn.dll retail
+whVFW32.dll retail
+whwinmm.dll retail
+whwspool.dll retail
+wiadv32.dll retail
+wicctl32.dll retail
+wicdlg32.dll retail
+widdeapi.dll retail
+wigdi32.dll retail
+wikrnl32.dll retail
+wilz32.dll retail
+wimpr.dll retail
+wintdll.dll retail
+wiole32.dll retail
+wioledlg.dll retail
+wiopengl.dll retail
+wishll32.dll retail
+wisock32.dll retail
+wiuser32.dll retail
+wiversn.dll retail
+wivfw32.dll retail
+wiwinmm.dll retail
+wiwspool.dll retail
+wiglu32.dll retail
+whglu32.dll retail
+wiws2_32.dll retail
+whws2_32.dll retail
+wiimghlp.dll retail
+whimghlp.dll retail
+wiacm32.dll retail
+whacm32.dll retail
+winetapi.dll retail
+whnetapi.dll retail
+wiwhlp32.exe retail
+wiregedt.exe retail
+wiftsrch.dll retail
+whftsrch.dll retail
+wirpcrt4.dll retail
+whrpcrt4.dll retail
+wirpcns4.dll retail
+whrpcns4.dll retail
+wiavifil.dll retail
+whavifil.dll retail
+wiavicap.dll retail
+whavicap.dll retail
+wisetupa.dll retail
+wicfgmgr.dll retail
+widdraw.dll retail
+whddraw.dll retail
+widplay.dll retail
+whdplay.dll retail
+widsnd.dll retail
+whdsnd.dll retail
+witapi32.dll retail
+whtapi32.dll retail
+wirasapi.dll retail
+whrasapi.dll retail
+wirasdlg.dll retail
+whrasdlg.dll retail
+wirassap.dll retail
+whrassap.dll retail
+wimsafd.dll retail
+whmsafd.dll retail
+wimssock.dll retail
+whmssock.dll retail
+wimapi32.dll retail
+whmapi32.dll retail
+instWx86.exe retail
+readwx86.txt retail
+wx86.inf retail
+wx86e.dll system
+
+wordpad.cnt retail
+wordpad.exe retail
+wordpad.hlp retail
+wordpad.inf retail
+welcome.exe retail
+write32.wpc retail
+
+ansi.trn retail
+chsxgb.trn retail
+chtbig5.trn retail
+euc.trn retail
+german.trn retail
+iso88591.trn retail
+iso88592.trn retail
+iso88593.trn retail
+iso88597.trn retail
+iso88599.trn retail
+jpn2022.trn retail
+koi8-r.trn retail
+kor2022.trn retail
+koreuc.trn retail
+norweg.trn retail
+shiftjis.trn retail
+swedish.trn retail
+usascii.trn retail
+
+
+;
+; Pinball binaries
+;
+
+PINBALL.EXE retail
+PINBALL.HLP retail
+PINBALL.CNT retail
+TABLE.BMP retail
+FONT.DAT retail
+PINBALL.DAT retail
+PINBALL.HLP retail
+PINBALL.MID retail
+PINBALL2.MID retail
+SOUND1.WAV retail
+SOUND104.WAV retail
+SOUND105.WAV retail
+SOUND108.WAV retail
+SOUND111.WAV retail
+SOUND112.WAV retail
+SOUND12.WAV retail
+SOUND13.WAV retail
+SOUND131.WAV retail
+SOUND136.WAV retail
+SOUND14.WAV retail
+SOUND16.WAV retail
+SOUND17.WAV retail
+SOUND18.WAV retail
+SOUND181.WAV retail
+SOUND19.WAV retail
+SOUND20.WAV retail
+SOUND21.WAV retail
+SOUND22.WAV retail
+SOUND24.WAV retail
+SOUND240.WAV retail
+SOUND243.WAV retail
+SOUND25.WAV retail
+SOUND26.WAV retail
+SOUND27.WAV retail
+SOUND28.WAV retail
+SOUND29.WAV retail
+SOUND3.WAV retail
+SOUND30.WAV retail
+SOUND34.WAV retail
+SOUND35.WAV retail
+SOUND36.WAV retail
+SOUND38.WAV retail
+SOUND39.WAV retail
+SOUND4.WAV retail
+SOUND42.WAV retail
+SOUND43.WAV retail
+SOUND45.WAV retail
+SOUND49.WAV retail
+SOUND49D.WAV retail
+SOUND5.WAV retail
+SOUND50.WAV retail
+SOUND528.WAV retail
+SOUND53.WAV retail
+SOUND54.WAV retail
+SOUND55.WAV retail
+SOUND560.WAV retail
+SOUND563.WAV retail
+SOUND57.WAV retail
+SOUND58.WAV retail
+SOUND6.WAV retail
+SOUND65.WAV retail
+SOUND68.WAV retail
+SOUND7.WAV retail
+SOUND713.WAV retail
+SOUND735.WAV retail
+SOUND8.WAV retail
+SOUND827.WAV retail
+SOUND9.WAV retail
+SOUND999.WAV retail
+wavemix.inf retail
+pinball.inf retail
+
+
+;
+; wang image viewer binaries
+;
+
+gotodlg.frm retail
+imagevue.inf retail
+imgadmin.ocx retail
+imgedit.ocx retail
+imgsamp.frm retail
+imgsampl.vbp retail
+imgscan.ocx retail
+imgthumb.ocx retail
+jpeg1x32.dll retail
+jpeg2x32.dll retail
+oiadm400.dll retail
+oicom400.dll retail
+oidis400.dll retail
+oifil400.dll retail
+oigfs400.dll retail
+oiprt400.dll retail
+oislb400.dll retail
+oissq400.dll retail
+oitwa400.dll retail
+oiui400.dll retail
+wangcmn.dll retail
+wangimg.cnt retail
+wangimg.exe retail
+wangimg.hlp retail
+wangocx.cnt retail
+wangocx.hlp retail
+wangocxd.cnt retail
+wangocxd.hlp retail
+wangshl.cnt retail
+wangshl.dll retail
+wangshl.hlp retail
+xfilexr.dll retail
+
+;
+; System Policy Editor binaries
+;
+
+common.adm retail
+winnt.adm retail
+windows.adm retail
+poledit.exe retail
+polsetup.exe retail
+poledit.hlp retail
+poledit.cnt retail
+
+
+;
+; Multimedia files
+;
+mssound.wav retail
+logon.wav retail
+logoff.wav retail
+jungleas.wav retail
+junglecl.wav retail
+junglecr.wav retail
+junglede.wav retail
+jungleer.wav retail
+jungleex.wav retail
+junglema.wav retail
+jungleme.wav retail
+junglemi.wav retail
+jungleop.wav retail
+junglequ.wav retail
+junglere.wav retail
+junglewi.wav retail
+jungle~1.wav retail
+jungle~2.wav retail
+jungle~3.wav retail
+jungle~4.wav retail
+musicaas.wav retail
+musicacl.wav retail
+musicacr.wav retail
+musicade.wav retail
+musicaer.wav retail
+musicaex.wav retail
+musicama.wav retail
+musicame.wav retail
+musicami.wav retail
+musicaop.wav retail
+musicaqu.wav retail
+musicare.wav retail
+musicawi.wav retail
+musica~1.wav retail
+musica~2.wav retail
+musica~3.wav retail
+musica~4.wav retail
+robotzas.wav retail
+robotzcl.wav retail
+robotzcr.wav retail
+robotzde.wav retail
+robotzer.wav retail
+robotzex.wav retail
+robotzma.wav retail
+robotzme.wav retail
+robotzmi.wav retail
+robotzop.wav retail
+robotzqu.wav retail
+robotzre.wav retail
+robotzwi.wav retail
+robotz~1.wav retail
+robotz~2.wav retail
+robotz~3.wav retail
+robotz~4.wav retail
+utopiaas.wav retail
+utopiacl.wav retail
+utopiacr.wav retail
+utopiade.wav retail
+utopiaer.wav retail
+utopiaex.wav retail
+utopiama.wav retail
+utopiame.wav retail
+utopiami.wav retail
+utopiaop.wav retail
+utopiaqu.wav retail
+utopiare.wav retail
+utopiawi.wav retail
+utopia~1.wav retail
+utopia~2.wav retail
+utopia~3.wav retail
+utopia~4.wav retail
+bachsb~1.rmi retail
+beetho~2.rmi retail
+claire~1.rmi retail
+danceo~2.rmi retail
+fureli~1.rmi retail
+hallof~2.rmi retail
+mozart~2.rmi retail
+
+;
+; Document Template files
+;
+
+amipro.sam retail
+excel.xls retail
+excel4.xls retail
+lotus.wk4 retail
+powerpnt.ppt retail
+presenta.shw retail
+quattro.wb2 retail
+winword.doc retail
+winword2.doc retail
+wordpfct.wpd retail
+wordpfct.wpg retail
+
+;
+; Desktop Wallpapers
+;
+
+blueday.bmp retail
+blulac16.bmp retail
+blumon16.bmp retail
+bubbles.bmp retail
+coffee16.bmp retail
+coffeebn.bmp retail
+feather.bmp retail
+fidlhead.bmp retail
+furry16.bmp retail
+furrydog.bmp retail
+geometrx.bmp retail
+gonefish.bmp retail
+grnstone.bmp retail
+hazy16.bmp retail
+hikingbt.bmp retail
+leaves16.bmp retail
+lether16.bmp retail
+mpltrail.bmp retail
+pglyph16.bmp retail
+pool.bmp retail
+prairie.bmp retail
+rhody.bmp retail
+rvrsumid.bmp retail
+santafe.bmp retail
+seaside.bmp retail
+seside16.bmp retail
+snakeskn.bmp retail
+solstice.bmp retail
+upstrm16.bmp retail
+zapotec.bmp retail
+zaptec16.bmp retail
+
+;
+; PostScript printer description (PPD) files
+;
+
+40291730.ppd retail
+40293930.ppd retail
+a_pnt518.ppd retail
+agac0800.ppd retail
+agac1000.ppd retail
+agac1500.ppd retail
+agaccsf1.ppd retail
+agaccst1.ppd retail
+agelan50.ppd retail
+agp94sf1.ppd retail
+agp95sf1.ppd retail
+agp96sf1.ppd retail
+agp97sf1.ppd retail
+agp98sf1.ppd retail
+agpr9400.ppd retail
+agpr9550.ppd retail
+agpr9551.ppd retail
+agpr9800.ppd retail
+agpr9836.ppd retail
+agpro941.ppd retail
+agpro971.ppd retail
+agpro981.ppd retail
+agprs961.ppd retail
+agsels51.ppd retail
+agsels71.ppd retail
+agsl5sf1.ppd retail
+agsl7sf1.ppd retail
+agss5000.ppd retail
+agss7000.ppd retail
+agssav20.ppd retail
+agssav25.ppd retail
+agssav36.ppd retail
+agssav44.ppd retail
+agstds21.ppd retail
+aljii523.ppd retail
+ap_ntxj1.ppd retail
+aplw8101.ppd retail
+aplwcob1.ppd retail
+aplwgri2.ppd retail
+aplwiif1.ppd retail
+aplwiig1.ppd retail
+aplwntr1.ppd retail
+aplwsel.ppd retail
+apple230.ppd retail
+apple380.ppd retail
+apple422.ppd retail
+aps08522.ppd retail
+aps12522.ppd retail
+aps26522.ppd retail
+aps80522.ppd retail
+aptolld1.ppd retail
+aptollw1.ppd retail
+ast__470.ppd retail
+cn_500_1.ppd retail
+cn_500j1.ppd retail
+cnlbp4_1.ppd retail
+cnlbp8_1.ppd retail
+cnlbp8r1.ppd retail
+cnlbp8t1.ppd retail
+colorq.ppd retail
+cppmq151.ppd retail
+cppmq201.ppd retail
+dc1152_1.ppd retail
+dc1152f1.ppd retail
+dc2150p1.ppd retail
+dc2250p1.ppd retail
+dc3500_1.ppd retail
+dc5100n1.ppd retail
+dcd11501.ppd retail
+dcd21501.ppd retail
+dcd22501.ppd retail
+dckps201.ppd retail
+dckps321.ppd retail
+dckps401.ppd retail
+dclf02_1.ppd retail
+dclf02f1.ppd retail
+dcln03r1.ppd retail
+dclps171.ppd retail
+dclps201.ppd retail
+dclps321.ppd retail
+dclps401.ppd retail
+dcps1721.ppd retail
+dcps1761.ppd retail
+dctps201.ppd retail
+dec3250.ppd retail
+deccolor.ppd retail
+dp4ty161.ppd retail
+dp4ty201.ppd retail
+dp4typ81.ppd retail
+dpl15804.ppd retail
+dpl20804.ppd retail
+ep826051.ppd retail
+epl3kf21.ppd retail
+epl3kf51.ppd retail
+epl75523.ppd retail
+f71rx503.ppd retail
+gcbl4921.ppd retail
+gcbl5141.ppd retail
+gcblp2_1.ppd retail
+gcblp2s1.ppd retail
+gcblpel1.ppd retail
+gcctone2.ppd retail
+gcelt6_2.ppd retail
+gcsp12_3.ppd retail
+gcsp6_3.ppd retail
+gdgl8001.ppd retail
+hermes_1.ppd retail
+hermes_2.ppd retail
+hp_650c2.ppd retail
+hp1200c1.ppd retail
+hp1600c1.ppd retail
+hp3si523.ppd retail
+hp4m3_v1.ppd retail
+hp4m6_v1.ppd retail
+hp4ml_v1.ppd retail
+hp4mp3_1.ppd retail
+hp4mp6_1.ppd retail
+hp4plus3.ppd retail
+hp4plus6.ppd retail
+hp4si3_1.ppd retail
+hp4si6_1.ppd retail
+hp755__1.ppd retail
+hp_3d522.ppd retail
+hp_3p522.ppd retail
+hp__clj1.ppd retail
+hpcopyj1.ppd retail
+hpiid522.ppd retail
+hpiii522.ppd retail
+hpiip522.ppd retail
+hplj__31.ppd retail
+hplj4mv1.ppd retail
+hplj5m_4.ppd retail
+hplj5p_1.ppd retail
+hplj5si1.ppd retail
+hplj_3d1.ppd retail
+hplj_3p1.ppd retail
+hppjxl31.ppd retail
+ibm17523.ppd retail
+ibm20470.ppd retail
+ibm30505.ppd retail
+ibm31514.ppd retail
+ibm39523.ppd retail
+ibm4039.ppd retail
+ibm4039p.ppd retail
+ibm4079.ppd retail
+jx9460ps.ppd retail
+jx9500ps.ppd retail
+jx9600ps.ppd retail
+jx9660ps.ppd retail
+jx9700ps.ppd retail
+kd8600p1.ppd retail
+kdcolor1.ppd retail
+l100_425.ppd retail
+l200_493.ppd retail
+l300_471.ppd retail
+l300_493.ppd retail
+l500_493.ppd retail
+lex4039p.ppd retail
+lex4079p.ppd retail
+lexoptra.ppd retail
+lh230__1.ppd retail
+lh260__1.ppd retail
+lh300__1.ppd retail
+lh330__1.ppd retail
+lh500__1.ppd retail
+lh530__1.ppd retail
+lh630__1.ppd retail
+lh830__1.ppd retail
+lh930__1.ppd retail
+lhherk_1.ppd retail
+lhpr60_1.ppd retail
+lhquas_1.ppd retail
+loptrac.ppd retail
+loptraep.ppd retail
+loptran.ppd retail
+loptrap.ppd retail
+lwnt_470.ppd retail
+lwntx470.ppd retail
+lwntx518.ppd retail
+moim1201.ppd retail
+mono_522.ppd retail
+mt_ti101.ppd retail
+n2090522.ppd retail
+n2290520.ppd retail
+n890_470.ppd retail
+n890x505.ppd retail
+nc95fax1.ppd retail
+nc97fax1.ppd retail
+nccps401.ppd retail
+nccps801.ppd retail
+ncol_519.ppd retail
+ncs29901.ppd retail
+ncsw_951.ppd retail
+o5241503.ppd retail
+o5242503.ppd retail
+ok801pf1.ppd retail
+ok_410e1.ppd retail
+okol8501.ppd retail
+okol8701.ppd retail
+ol830525.ppd retail
+ol840518.ppd retail
+oliv5000.ppd retail
+oliveti1.ppd retail
+oliveti2.ppd retail
+p4455514.ppd retail
+pap54001.ppd retail
+pap54101.ppd retail
+phiipx.ppd retail
+px.ppd retail
+q2200523.ppd retail
+q2210523.ppd retail
+q2220523.ppd retail
+q30si503.ppd retail
+q810t517.ppd retail
+q820_517.ppd retail
+q820t517.ppd retail
+q860pls2.ppd retail
+qcs10001.ppd retail
+qcs10002.ppd retail
+qcs10503.ppd retail
+qcs20503.ppd retail
+qcs30503.ppd retail
+qm1700_1.ppd retail
+qm2000_1.ppd retail
+qm815mr1.ppd retail
+qm825mr1.ppd retail
+qmps4104.ppd retail
+qmps8151.ppd retail
+qmps8251.ppd retail
+qms10602.ppd retail
+qms16602.ppd retail
+qms1660E.ppd retail
+qms1725.ppd retail
+qms2025.ppd retail
+qms2425.ppd retail
+qms3225.ppd retail
+qms3825.ppd retail
+qms420.ppd retail
+qms4525.ppd retail
+qms45252.ppd retail
+qms81470.ppd retail
+qms860.ppd retail
+qms8_461.ppd retail
+qms8p461.ppd retail
+qmscs210.ppd retail
+qmscs230.ppd retail
+qmscs494.ppd retail
+qmsj_461.ppd retail
+qmsjp461.ppd retail
+qmsmccx.ppd retail
+qmsmclx.ppd retail
+qmsmcpls.ppd retail
+qume_470.ppd retail
+r6000505.ppd retail
+s5232503.ppd retail
+s746j522.ppd retail
+seiko_04.ppd retail
+seiko_14.ppd retail
+sk820ru2.ppd retail
+sk830ru2.ppd retail
+sk835ru2.ppd retail
+skpsfcd1.ppd retail
+sx2iris1.ppd retail
+sx2psm21.ppd retail
+sx2psm22.ppd retail
+sx4psm21.ppd retail
+t1513470.ppd retail
+t1535470.ppd retail
+ti08_450.ppd retail
+ti15_470.ppd retail
+tim17521.ppd retail
+tim35521.ppd retail
+timl6231.ppd retail
+timlp231.ppd retail
+timlp232.ppd retail
+timlp233.ppd retail
+timlp651.ppd retail
+timlp652.ppd retail
+timlp671.ppd retail
+timlp672.ppd retail
+timp3231.ppd retail
+timpe231.ppd retail
+titrb161.ppd retail
+titrbo61.ppd retail
+titrbo91.ppd retail
+tix17521.ppd retail
+tix35521.ppd retail
+tk200172.ppd retail
+tk200392.ppd retail
+tk220171.ppd retail
+tk220391.ppd retail
+tk340171.ppd retail
+tk340691.ppd retail
+tkp200i2.ppd retail
+tkp200j1.ppd retail
+tkp220i1.ppd retail
+tkp220j1.ppd retail
+tkp2sdj1.ppd retail
+tkp2sdx1.ppd retail
+tkp300i1.ppd retail
+tkp300j1.ppd retail
+tkp480j1.ppd retail
+tkph1401.ppd retail
+tkph2sd1.ppd retail
+tkph4401.ppd retail
+tkph4801.ppd retail
+tkph5401.ppd retail
+tkphpxi1.ppd retail
+tkphz2j1.ppd retail
+tkphz3j1.ppd retail
+tkphzr21.ppd retail
+tkphzr22.ppd retail
+tkphzr31.ppd retail
+tkphzr32.ppd retail
+tkpxe171.ppd retail
+tkpxe391.ppd retail
+triumph1.ppd retail
+triumph2.ppd retail
+u1200xl4.ppd retail
+u1800pmr.ppd retail
+u1800xl.ppd retail
+u1800xlo.ppd retail
+u9415470.ppd retail
+uni17521.ppd retail
+uni39521.ppd retail
+v5334522.ppd retail
+vt42p522.ppd retail
+vt43p522.ppd retail
+vt4510a1.ppd retail
+vt4530a1.ppd retail
+vt4530b1.ppd retail
+vt4530c1.ppd retail
+vt4533a1.ppd retail
+vt4533b1.ppd retail
+vt4533c1.ppd retail
+vt453ea1.ppd retail
+vt453eb1.ppd retail
+vt453ec1.ppd retail
+vt4550a1.ppd retail
+vt4550b1.ppd retail
+vt4550c1.ppd retail
+vt4551a1.ppd retail
+vt4563a1.ppd retail
+vt4563b1.ppd retail
+vt4990_1.ppd retail
+vt4990t1.ppd retail
+vt4l3001.ppd retail
+vt4l3301.ppd retail
+vt4l5x01.ppd retail
+vt5100e1.ppd retail
+vt530522.ppd retail
+vt550522.ppd retail
+vt5510_1.ppd retail
+vt5660_1.ppd retail
+vt5860_1.ppd retail
+vt5960e1.ppd retail
+vt6000_1.ppd retail
+vt600p_1.ppd retail
+vt600w_1.ppd retail
+vt6990_1.ppd retail
+wang15.ppd retail
+wang15fp.ppd retail
+xr_45051.ppd retail
+xr_45201.ppd retail
+xr_49001.ppd retail
+xr049151.ppd retail
+xr049201.ppd retail
+xrdt0851.ppd retail
+xrdt0901.ppd retail
+xrdt1351.ppd retail
+xt_82001.ppd retail
+XR_45101.PPD retail
+XR_45171.PPD retail
+hplj_4m.ppd printer
+nx_nlp_1.ppd printer
+qmps4101.ppd printer
+
+AGA20SF2.PPD retail
+AGA25SF2.PPD retail
+AGA36SF2.PPD retail
+AGA44SF2.PPD retail
+AGAC1SF1.PPD retail
+AGAC1SF2.PPD retail
+AGAC5SF2.PPD retail
+AGAC8SF1.PPD retail
+AGAC8SF2.PPD retail
+AGAVA202.PPD retail
+AGAVA252.PPD retail
+AGAVA442.PPD retail
+AGEL5SF2.PPD retail
+AGP36SF1.PPD retail
+AGP36SF2.PPD retail
+AGP94SF2.PPD retail
+AGP95SF2.PPD retail
+AGP98SF2.PPD retail
+AGSL5SF2.PPD retail
+AGSL7SF2.PPD retail
+AGST2SF1.PPD retail
+aplwmgs1.ppd retail
+CLBP3601.PPD retail
+CN1260E1.PPD retail
+CN126PE1.PPD retail
+DPJOLT04.PPD retail
+DPL12602.PPD retail
+DPL15606.PPD retail
+DPL85501.PPD retail
+DPL9605.PPD retail
+DPL9654.PPD retail
+DPLZ2665.PPD retail
+DPTY8PM1.PPD retail
+FS-1500.PPD retail
+FS-1500A.PPD retail
+FS-1550.PPD retail
+FS-1550A.PPD retail
+FS-1550P.PPD retail
+FS-1600.PPD retail
+FS-16002.PPD retail
+FS-1600A.PPD retail
+FS-1600P.PPD retail
+FS-1700.PPD retail
+FS-17002.PPD retail
+FS-3400.PPD retail
+FS-3400A.PPD retail
+FS-3400P.PPD retail
+FS-3500.PPD retail
+FS-3500A.PPD retail
+FS-3600.PPD retail
+FS-36002.PPD retail
+FS-3600A.PPD retail
+FS-3600P.PPD retail
+FS-3700.PPD retail
+FS-37002.PPD retail
+FS-400.PPD retail
+FS-400A.PPD retail
+FS-5500.PPD retail
+FS-5500A.PPD retail
+FS-6500.PPD retail
+FS-6500P.PPD retail
+FS-850.PPD retail
+FS1600A2.PPD retail
+FS3600A2.PPD retail
+Hpclj5v2.ppd retail
+HP_750_1.PPD retail
+NC_10971.PPD retail
+P-2000.PPD retail
+Q-8010.PPD retail
+T30V4.PPD retail
+T40V4.PPD retail
+T60V4.PPD retail
+TIM12641.PPD retail
+TIML8641.PPD retail
+tk240172.ppd retail
+tk240392.ppd retail
+tk550pj1.ppd retail
+tkp240j1.ppd retail
+tkp550j1.ppd retail
+XDCS20.PPD retail
+XDCS35.PPD retail
+XDP350H.PPD retail
+XDP390.PPD retail
+XDP390H.PPD retail
+XDP4635.PPD retail
+Xr470002.ppd retail
+xrd61351.ppd retail
+XRDT0904.PPD retail
+XRDT1354.PPD retail
+Xrx49001.ppd retail
+xrx49151.ppd retail
+xrx49201.ppd retail
+XR_42152.PPD retail
+XR_42192.PPD retail
+XR_42204.PPD retail
+XR_42302.PPD retail
+CBMAJ__1.PPD retail
+CQDP__10.PPD retail
+EFXJX203.PPD retail
+EFXJX303.PPD retail
+SPMAJE40.PPD retail
+SPREGA40.PPD retail
+tk550172.ppd retail
+tk550392.ppd retail
+iexpress.exe idw
+wextract.exe idw
+advpack.dll idw
+
+;
+; NT Cluster binaries
+;
+clussvc.exe cluster
+cluadmin.exe cluster
+resrcmon.exe cluster
+clusrtl.dll cluster
+clusapi.dll cluster
+ipaddr.dll cluster
+disks.dll cluster
+smbshare.dll cluster
+netname.dll cluster
+genapp.dll cluster
+gensvc.dll cluster
+gencmd.dll cluster
+rpcltccl.dll cluster
+rpcltscl.dll cluster
+smbshrex.dll cluster
+netnamex.dll cluster
+ipaddrex.dll cluster
+gensvcex.dll cluster
+genappex.dll cluster
+diskex.dll cluster
+clusdisk.sys cluster
+clusetup.exe cluster
+clusetup.inf cluster
+cluswiz.dll cluster
+dummy.dll cluster
+cluscli.exe cluster
+
+; NT DS binaries
+;
+
+kdc.exe retail
+kdcsvc.dll retail
+kerberos.dll retail
+kerbinst.cmd retail
+kerb.ini retail
+cryptdll.dll retail
+lsaexts.dll idw
+dbgtool.exe idw
+
+dracheck.dll retail
+drax400.dll retail
+dsa.dll retail
+dsid.exe retail
+dsmsg.dll retail
+edbmsg.dll retail
+emsabp.dll retail
+instal.exe retail
+jetback.dll retail
+jetbcli.dll retail
+libxds.dll retail
+ntdsatq.dll retail
+oabgen.dll retail
+perfdsa.dll retail
+pwdssp.dll retail
+pfupdate.exe retail
+priminst.exe retail
+repadmin.exe retail
+script.exe retail
+servrqst.exe retail
+template.exe retail
+NTDS.DIT retail
+MKDIT.EXE retail
+MKHDR.EXE retail
+Schema.INI retail
+NTDSinst.Bat retail
+dsactrs.ini retail
+dsactrnm.h retail
+dbdump.exe retail
+ditbrows.exe retail
+dsexts.dll retail
+ddatest.exe retail
+dsamain.exe retail
+tloadobj.exe retail
+xload.exe retail
+xwait.exe retail
+cracknam.exe devtest
+ntdsapi.dll retail
+dralocal.dll retail
+drautest.exe devtest
+
+
+ntds.exe retail
+dsupgrad.exe retail
+oleds.dll retail
+oledsnds.dll retail
+oledsnt.dll retail
+oledsnw.dll retail
+oledsldp.dll retail
+wldap32.dll retail
+msdadc.dll retail
+msdatl.dll retail
+msdatt.dll retail
+msdaer.dll retail
+msdaerr.dll retail
+msdaenum.dll retail
+oleds.inf retail
+oleds.tlb retail
+oledsprb.txt retail
+
+oledscmd.exe devtest
+oledsqry.exe devtest
+
+dsshell.inf retail
+dsui.inf retail
+
+;
+; Routing project
+;
+
+adptif.dll retail
+DDM.dll retail
+ddmprxy.exe retail
+DIM.dll retail
+discon.exe retail
+disctest.exe retail
+filtest.exe retail
+ifadmin.dll retail
+ipadmin.dll retail
+ddmadmin.dll retail
+ipbootp.dll retail
+ipfltbas.sys retail
+ipfltdrv.sys retail
+ipfltprf.sys retail
+ipmon.dll retail
+iprip2.dll retail
+iprtprio.dll retail
+iprtrmgr.dll retail
+ipsetup.exe retail
+ipxadmin.dll retail
+ipxmon.dll retail
+ipxping.exe retail
+ipxrgcfg.exe retail
+ipxrip.dll retail
+ipxrtmgr.dll retail
+ipxrtvw.exe retail
+ipxsap.dll retail
+ipxwan.dll retail
+mib2.dll retail
+mib2util.dll retail
+MPRADMIN.dll retail
+MPROUTER.exe retail
+ospf.dll retail
+ospfagnt.dll retail
+ospfmib.dll retail
+riptest.exe retail
+routemon.exe retail
+routemsg.dll retail
+rtipxmib.dll retail
+rtm.dll retail
+rtradmin.exe retail
+SetAcc.exe retail
+WANARP.sys retail
+wansetup.exe retail
+nwlnkfwd.sys retail
+nwlnkflt.sys retail
+ripagnt.dll retail
+btpagnt.dll retail
+rtumext.dll retail
+rtkmext.dll retail
+mprfiltr.dll retail
+ipxsetup.exe retail
+rasrpc_s.dll retail
+rasrpc_c.dll retail
+
+;
+; Routing project setup stuff - temporary
+;
+
+ipins.cmd retail
+ipxins.cmd retail
+ipxllupd.cmd retail
+rtgetsym.cmd retail
+rtins.cmd retail
+ipcfg.ini retail
+ipxcfg.ini retail
+rtcfg.ini retail
+rtdemcfg.ini retail
+ipdemcfg.ini retail
+rtradmin.ini retail
+routing.inf retail
+ipddm.inf retail
+iplan.inf retail
+ipxddm.inf retail
+ipxlan.inf retail
+
+;
+; WDM Driver binaries
+;
+
+ntpnp.sys drivers2
+pci.sys drivers2
+uhcd.sys drivers2
+openhci.sys drivers2
+usbd.sys drivers2
+usbhub.sys drivers2
+usbloop.sys drivers2
+hid.dll drivers2
+hidusb.sys drivers2
+hidclass.sys drivers2
+hidparse.sys drivers2
+
+;
+; DS Admin Web Pages
+;
+
+default.asp dsadmin
+dsobjs.css dsadmin
+navigate.asp dsadmin
+ou_bar.asp dsadmin
+ou_cont.asp dsadmin
+ou_propg.asp dsadmin
+ou_p_con.asp dsadmin
+ou_p_gen.asp dsadmin
+ou_p_sec.asp dsadmin
+ou_p_ver.asp dsadmin
+property.asp dsadmin
+user_bar.asp dsadmin
+utils.asp dsadmin
+u_propg.asp dsadmin
+u_p_cont.asp dsadmin
+u_p_gen.asp dsadmin
+u_p_mail.asp dsadmin
+u_p_rest.asp dsadmin
+u_p_sec.asp dsadmin
+u_p_stat.asp dsadmin
+u_p_ver.asp dsadmin
+
+black.gif dsadmin\images
+computer.gif dsadmin\images
+contents.gif dsadmin\images
+ds_tab.gif dsadmin\images
+ds_tab2.gif dsadmin\images
+ds_tab3.gif dsadmin\images
+find.gif dsadmin\images
+group.gif dsadmin\images
+internet.gif dsadmin\images
+ou.gif dsadmin\images
+printer.gif dsadmin\images
+property.gif dsadmin\images
+q_mark.gif dsadmin\images
+spacer.gif dsadmin\images
+uplevel.gif dsadmin\images
+user.gif dsadmin\images
+webpage.gif dsadmin\images
+
+;
+; DS Admin helper control
+;
+dsctl.dll retail
+
+
+; MS Task (Scheduling agent)
+
+mstask.inf mstask
+mstask.exe mstask
+mstask.dll mstask
+mstask.hlp mstask
+setupts.exe mstask
diff --git a/public/sdk/lib/placefil.txt b/public/sdk/lib/placefil.txt
new file mode 100644
index 000000000..cf233b7db
--- /dev/null
+++ b/public/sdk/lib/placefil.txt
@@ -0,0 +1,4726 @@
+192.dns retail
+31users.hlp retail
+3dgarro.cur retail
+3dgmove.cur retail
+3dgnesw.cur retail
+3dgno.cur retail
+3dgns.cur retail
+3dgnwse.cur retail
+3dgwe.cur retail
+3dsmove.cur retail
+3dsns.cur retail
+3dsnwse.cur retail
+3dwarro.cur retail
+3dwmove.cur retail
+3dwnesw.cur retail
+3dwno.cur retail
+3dwns.cur retail
+3dwnwse.cur retail
+3dwwe.cur retail
+4mmdat.sys retail
+8514a.dll retail
+8514a.sys retail
+8514fix.fon retail
+8514fixe.fon retail
+8514fixg.fon retail
+8514fixr.fon retail
+8514fixt.fon retail
+8514oem.fon retail
+8514oeme.fon retail
+8514oemg.fon retail
+8514oemr.fon retail
+8514oemt.fon retail
+8514sys.fon retail
+8514syse.fon retail
+8514sysg.fon retail
+8514sysr.fon retail
+8514syst.fon retail
+_default.pif retail
+a221064.pal retail
+a221066.pal retail
+a221164.pal retail
+a321064.pal retail
+ab32.dll retail
+abiosdsk.sys retail
+acc_dis.cnt retail
+acc_dis.hlp retail
+accctrl.dll retail
+access.cpl retail
+accessor.inf retail
+account.dll retail
+accounts.inf retail
+accsetup.txt retail
+aclconv.exe retail
+acledit.dll retail
+adp.bin retail
+addgrpw.exe retail
+addusrw.exe retail
+advapi32.dll retail
+afd.sys retail
+aha154x.sys retail
+aha174x.sys retail
+aic78xx.sys retail
+alertsys.dll retail
+alertsys.exe retail
+alrsvc.dll retail
+always.sys retail
+am1500t.sys retail
+amddlg.dll retail
+amdncdet.dll retail
+amdpcn.sys retail
+ami0nt.sys retail
+amsint.sys retail
+ansi.sys retail
+aofsutil.dll retail
+app850.fon retail
+app852.fon retail
+app857.fon retail
+app866.fon retail
+append.exe retail
+apps.inf retail
+appstar2.ani retail
+appstar3.ani retail
+appstart.ani retail
+appwiz.cpl retail
+archqic.sys retail
+arcinst.exe retail
+arial.ttf retail
+arialbd.ttf retail
+arialbi.ttf retail
+ariali.ttf retail
+arp.exe retail
+arrow.sys retail
+asyncmac.sys retail
+att.ht retail
+at.exe retail
+atapi.sys retail
+atdisk.sys retail
+ati.dll retail
+ati.sys retail
+atkctrs.dll retail
+atsvc.dll retail
+atsvc.exe retail
+attrib.exe retail
+audiocdc.hlp retail
+autochk.exe retail
+autocmpt.exe retail
+autoconv.exe retail
+autoexec.nt retail
+autofmt.exe retail
+autolfn.exe retail
+autorprt.exe retail
+autorun.exe retail
+autoulib.dll retail
+autouofs.dll retail
+avicap.dll retail
+avicap32.dll retail
+avifil32.dll retail
+avifile.dll retail
+backgrnd.gif retail
+backup.cnt retail
+backup.exe retail
+backup.hlp retail
+banana.ani retail
+barber.ani retail
+basesrv.dll retail
+beep.sys retail
+bhmon.dll retail
+bhnetb.dll retail
+bhnt.sys retail
+bhp013.cnt netmon
+bhp013.hlp netmon
+bhsupp.dll retail
+bios1.rom retail
+bios4.rom retail
+black16.scr retail
+boot retail
+bootok.exe retail
+bootvrfy.exe retail
+brhj770.dll retail
+brother9.dll retail
+brothr24.dll retail
+browser.dll retail
+buslogic.sys retail
+busmouse.sys retail
+c_037.nls retail
+c_10000.nls retail
+c_10006.nls retail
+c_10007.nls retail
+c_10010.nls retail
+c_10017.nls retail
+c_10029.nls retail
+c_10079.nls retail
+c_10081.nls retail
+c_10082.nls retail
+c_1026.nls retail
+c_1250.nls retail
+c_1251.nls retail
+c_1252.nls retail
+c_1253.nls retail
+c_1254.nls retail
+c_1255.nls retail
+c_1256.nls retail
+c_1257.nls retail
+c_1258.nls retail
+c_20866.nls retail
+c_28592.nls retail
+c_437.nls retail
+c_500.nls retail
+c_737.nls retail
+c_775.nls retail
+c_850.nls retail
+c_852.nls retail
+c_855.nls retail
+c_857.nls retail
+c_860.nls retail
+c_861.nls retail
+c_863.nls retail
+c_865.nls retail
+c_866.nls retail
+c_869.nls retail
+c_870.nls retail
+c_875.nls retail
+c_20105.nls retail
+c_20261.nls retail
+c_20269.nls retail
+c_20273.nls retail
+c_20277.nls retail
+c_20278.nls retail
+c_20280.nls retail
+c_20284.nls retail
+c_20285.nls retail
+c_20290.nls retail
+c_20297.nls retail
+c_20420.nls retail
+c_20423.nls retail
+c_20833.nls retail
+c_20838.nls retail
+c_20871.nls retail
+c_20880.nls retail
+c_20905.nls retail
+c_21025.nls retail
+c_21027.nls retail
+c_28592.nls retail
+c_28593.nls retail
+c_28594.nls retail
+c_28595.nls retail
+c_28596.nls retail
+c_28597.nls retail
+c_28598.nls retail
+c_28599.nls retail
+cache.dns retail
+cacls.exe retail
+cairo.inf retail
+cairostd.exe retail
+calc.cnt retail
+calc.exe retail
+calc.hlp retail
+canon330.dll retail
+canon800.dll retail
+canonlbp.dll retail
+canyon.mid retail
+cards.dll retail
+ccfapi.hlp retail
+ccfapi32.dll retail
+cdaudio.sys retail
+cdfs.sys retail
+cdplayer.cnt retail
+cdplayer.exe retail
+cdplayer.hlp retail
+cdrom.sys retail
+cfgmgr32.dll retail
+cfm30.dll retail
+cfm30u.dll retail
+cfm40.dll retail
+cfm40d.dll retail
+cfm40u.dll retail
+cfm40ud.dll retail
+cfmo30.dll retail
+cfmo30u.dll retail
+cfmo40.dll retail
+cfmo40d.dll retail
+cfmo40u.dll retail
+cfmo40ud.dll retail
+cga40737.fon retail
+cga40850.fon retail
+cga40852.fon retail
+cga40857.fon retail
+cga40866.fon retail
+cga40869.fon retail
+cga40woa.fon retail
+cga80737.fon retail
+cga80850.fon retail
+cga80852.fon retail
+cga80857.fon retail
+cga80866.fon retail
+cga80869.fon retail
+cga80woa.fon retail
+changer.sys retail
+charmap.cnt retail
+charmap.exe retail
+charmap.hlp retail
+chcp.com retail
+chimes.wav retail
+chkdsk.exe retail
+chkntfs.exe retail
+chord.wav retail
+ciext.dll mstools
+cifilter.exe retail
+cirrus.dll retail
+cirrus.sys retail
+cis.ht retail
+cis.scp retail
+cit24us.dll retail
+cit9us.dll retail
+citoh.dll retail
+class2.sys retail
+clb.dll retail
+client.gif retail
+clipbrd.cnt retail
+clipbrd.exe retail
+clipbrd.hlp retail
+clipsrv.exe retail
+clock.avi retail
+clock.exe retail
+cmc.dll retail
+cmd.exe retail
+cmos.ram retail
+cmsfcxx.sys retail
+cnvfat.dll retail
+cnvntfs.dll retail
+coin.ani retail
+comctl32.dll retail
+comctl32.sym symbols\dll
+comdlg32.dll retail
+comm.drv retail
+command.com retail
+commdlg.dll retail
+common.hlp retail
+communic.inf retail
+comp.exe retail
+compact.exe retail
+compobj.dll retail
+compstui.dll retail
+compstui.hlp retail
+conexts.dll retail
+config.nt retail
+configsc.exe retail
+console.cpl retail
+control.exe retail
+control.hlp retail
+convert.exe retail
+convmsg.dll retail
+counter.ani retail
+country.sys retail
+cour.ttf retail
+courbd.ttf retail
+courbi.ttf retail
+coure.fon retail
+couree.fon retail
+coureg.fon retail
+courer.fon retail
+couret.fon retail
+courf.fon retail
+courfe.fon retail
+courfg.fon retail
+courfr.fon retail
+courft.fon retail
+couri.ttf retail
+cpqarray.sys retail
+cpqfws2e.sys retail
+creategc.exe retail
+cross.cur retail
+crtdll.dll retail
+cs423x.dll retail
+cs423x.hlp retail
+cs423x.sys retail
+csrsrv.dll retail
+csrss.exe retail
+csumcat.dll retail
+ctype.nls retail
+ctl3dv2.dll retail
+cxbios.bin retail
+cxfep.bin retail
+cxxflt.dll retail
+d3dhalf.dll retail
+d3dim.dll retail
+d3drampf.dll retail
+d3drg16f.dll retail
+d3drg24f.dll retail
+d3drg32f.dll retail
+d3drg8f.dll retail
+d3drgbf.dll retail
+d3drm.dll retail
+d3drm16f.dll retail
+d3drm24f.dll retail
+d3drm32f.dll retail
+d3drm8f.dll retail
+d3dxof.dll retail
+dac960nt.sys retail
+dc21x4.hlp retail
+dc21x4.sys retail
+dciman32.dll retail
+dcomcnfg.exe retail
+dcomcnfg.hlp retail
+ddeml.dll retail
+ddeshare.cnt retail
+ddeshare.exe retail
+ddeshare.hlp retail
+ddhelp.exe retail
+ddraw.dll retail
+debmp.dll retail
+debug.exe retail
+dec24pin.dll retail
+dec3200.dll retail
+dec9pin.dll retail
+decpsmon.dll retail
+decpsmon.hlp retail
+default retail
+defddi.hlp retail
+defea.dll retail
+defea.sys retail
+defpa.dll retail
+defpa.sys retail
+dehex.dll retail
+dell_dgx.sys retail
+delldsa.sys retail
+demet.dll retail
+demil32.dll retail
+desk.cpl retail
+desktop.ini retail
+dess.dll retail
+devapps.cpl retail
+devapps.hlp retail
+devpre.exe idw
+devpre.inf idw
+dewp.dll retail
+;dfs.sys retail
+;dfsadmin.exe retail
+;dfsinit.exe retail
+;dfsinstr.dll retail
+;dfsprov.dll retail
+;dfssetup.dll retail
+;dfssvc.exe retail
+;dfsui.dll retail
+dgconfig.cnt retail
+dgconfig.dll retail
+dgconfig.hlp retail
+dgconfig.hlp retail
+dhcpadmn.cnt retail
+dhcpadmn.exe retail
+dhcpadmn.hlp retail
+dhcpcsvc.dll retail
+dhcpmib.dll retail
+dhcpsapi.dll retail
+dhcpssvc.dll retail
+dialer.cnt retail
+dialer.exe retail
+dialer.hlp retail
+diconix.dll retail
+digifep5.sys retail
+digiinst.dll retail
+digsig.dll retail
+ding.wav retail
+dinosau2.ani retail
+dinosaur.ani retail
+disk.sys retail
+disk1 retail
+diskcomp.com retail
+diskcopy.com retail
+diskcopy.dll retail
+diskdump.sys retail
+diskperf.exe retail
+diskperf.sys retail
+display.inf retail
+dispoem.inf retail
+dlc.sys retail
+dlcapi.dll retail
+dlttape.sys retail
+dnsadmin.cnt retail
+dnsadmin.exe retail
+dnsadmin.hlp retail
+dns.exe retail
+docprop.dll retail
+domlink.exe retail
+dos737.fon retail
+dos869.fon retail
+dosapp.fon retail
+doscalls.dll retail
+doshelp.hlp retail
+doskey.exe retail
+dosnet.inf retail
+dosx.exe retail
+dplay.dll retail
+dpserial.dll retail
+dptscsi.sys retail
+dpwsock.dll retail
+drum.ani retail
+drwatson.exe retail
+drwtsn32.cnt retail
+drwtsn32.exe retail
+drwtsn32.hlp retail
+dsadmin.exe retail
+dsmail.dll retail
+dsmgr.exe retail
+dsobjs.dll retail
+dsound.dll retail
+dsrepl.exe retail
+dssrv.dll retail
+dsui.dll retail
+dsys.dll retail
+dsys.tlb retail
+dsyssvr.exe retail
+dtc329x.sys retail
+edit.com retail
+edit.hlp retail
+edlin.exe retail
+ee16.sys retail
+ega.cpi retail
+ega40737.fon retail
+ega40850.fon retail
+ega40852.fon retail
+ega40857.fon retail
+ega40866.fon retail
+ega40869.fon retail
+ega40woa.fon retail
+ega80737.fon retail
+ega80850.fon retail
+ega80852.fon retail
+ega80857.fon retail
+ega80866.fon retail
+ega80869.fon retail
+ega80woa.fon retail
+elnk16.sys retail
+elnk3.sys retail
+elnkii.sys retail
+elnkmc.sys retail
+epson24.dll retail
+epson9.dll retail
+escp2e.dll retail
+escp2ms.dll retail
+et4000.sys retail
+eula.txt retail
+eulaint.txt retail
+oemeula.txt retail
+eventlog.dll retail
+eventvwr.cnt retail
+eventvwr.exe retail
+eventvwr.hlp retail
+exabyte1.sys retail
+exabyte2.sys retail
+excfg32.exe retail
+exchng.cnt retail
+exchng.hlp retail
+exchng32.exe retail
+exe2bin.exe retail
+expand.exe retail
+explorer.exe retail
+fastfat.sys retail
+fastopen.exe retail
+fatcmpct.exe retail
+fc.exe retail
+fd16_700.sys retail
+fd7000ex.sys retail
+fd8xx.sys retail
+fillitup.ani retail
+find.exe retail
+findstr.exe retail
+finger.exe retail
+flashpnt.sys retail
+floppy.sys retail
+fmifs.dll retail
+font.inf retail
+fontext.dll retail
+fontview.exe retail
+forcedos.exe retail
+format.com retail
+fpnwclnt.dll retail
+frame32.dll retail
+framebuf.dll retail
+freecell.cnt retail
+freecell.exe retail
+freecell.hlp retail
+fs_rec.sys retail
+ftdisk.sys retail
+ftp.exe retail
+ftpctrs.dll retail
+ftpsmx.dll retail
+ftpsvapi.dll retail
+ftpsvc.dll retail
+ftsrch.dll retail
+fuji24.dll retail
+fuji9.dll retail
+fxbios.bin retail
+fxfep.bin retail
+games.inf retail
+gapi32.dll retail
+genflpy.sys retail
+gcconfig.exe retail
+gctool.exe retail
+gdi.exe retail
+gdi32.dll retail
+general.idf retail
+glmf32.dll retail
+glossary.hlp retail
+glu32.dll retail
+gorilla.bas retail
+graftabl.com retail
+graphics.com retail
+graphics.pro retail
+grpconv.exe retail
+hal.dll retail
+hal0jens.dll retail
+hal486c.dll retail
+halacr.dll retail
+halalcor.dll retail
+halapic.dll retail
+halapicm.dll retail
+halast.dll retail
+halavant.dll retail
+halcaro.dll retail
+halvict.dll retail
+halcbus.dll retail
+halcbusm.dll retail
+haldti.dll retail
+halduomp.dll retail
+haleagle.dll retail
+halps.dll retail
+haleb164.dll retail
+haleb64p.dll retail
+halfire.dll retail
+halflex.dll retail
+halftone.hlp retail
+halfxs.dll retail
+halfxspc.dll retail
+halgammp.dll retail
+hallego.dll retail
+hallx3.dll retail
+halmca.dll retail
+halmikas.dll retail
+halmps.dll retail
+halmpsm.dll retail
+halncr.dll retail
+halnecmp.dll retail
+halnonme.dll retail
+halntp.dll retail
+halntp.dll retail
+haloli.dll retail
+halalp.dll retail
+halpinna.dll retail
+halppc.dll retail
+halqs.dll retail
+halr94a.dll retail
+halr96b.dll retail
+halr98b.dll retail
+halr98mp.dll retail
+halrawmp.dll retail
+halsabmp.dll retail
+halsni4x.dll retail
+halsnip.dll retail
+halsp.dll retail
+haltimbr.dll retail
+haltyne.dll retail
+halwood.dll retail
+halwood.dll retail
+halwyse7.dll retail
+halxl.dll retail
+hand.ani retail
+handapst.ani retail
+handnesw.ani retail
+handno.ani retail
+handns.ani retail
+handnwse.ani retail
+handwait.ani retail
+handwe.ani retail
+hardware.inf retail
+harrow.cur retail
+hcross.cur retail
+help.exe retail
+hibeam.cur retail
+hilgbbs.ht retail
+himem.sys retail
+hindered.idf retail
+hmove.cur retail
+hnesw.cur retail
+hnodrop.cur retail
+hns.cur retail
+hnwse.cur retail
+home.htm retail
+horse.ani retail
+hostname.exe retail
+hosts retail
+hourgla2.ani retail
+hourgla3.ani retail
+hourglas.ani retail
+hours.ocx retail
+hp20022.pcd retail
+hp20036.pcd retail
+hp22024.pcd retail
+hp22036.pcd retail
+hp23024.pcd retail
+hp23036.pcd retail
+hp25024.pcd retail
+hp25036.pcd retail
+hp33024.pcd retail
+hp33036.pcd retail
+hp35024.pcd retail
+hp35036.pcd retail
+hp5sim.dll retail
+hp5simui.dll retail
+hp5simui.hlp retail
+hp60022.pcd retail
+hp60036.pcd retail
+hp650c22.pcd retail
+hp650c36.pcd retail
+hp75024.pcd retail
+hp75036.pcd retail
+hp750m24.pcd retail
+hp750m36.pcd retail
+hp7550pl.pcd retail
+hp755cm.pcd retail
+hp755cmm.pcd retail
+hpdesign.pcd retail
+hpdmrxmx.pcd retail
+hpdmsx.pcd retail
+hpdpp22.pcd retail
+hpdpp36.pcd retail
+hpdskjet.dll retail
+hpgl2pen.pcd retail
+hpmon.dll retail
+hpmon.hlp retail
+hppcl.dll retail
+hppcle.dll retail
+hprasdd.dll retail
+hprasdui.dll retail
+hprasdui.hlp retail
+hpscan16.sys retail
+hpscan16.sys retail
+hpscan32.dll retail
+hpt4qic.sys retail
+hticons.dll retail
+htui.dll retail
+hwe.cur retail
+hypertrm.cnt retail
+hypertrm.dll retail
+hypertrm.exe retail
+hypertrm.hlp retail
+i8042prt.sys retail
+ibm238x.dll retail
+ibm239x.dll retail
+ibm5204.dll retail
+ibm5204.dll retail
+ibmport.dll retail
+ibmppdsl.dll retail
+ibmtok.sys retail
+ibmtok2i.sys retail
+iccvid.dll retail
+icmp.dll retail
+idp_xfs.bin retail
+ieepro.sys retail
+ifsutil.dll retail
+imaadp32.acm retail
+imagehlp.dll retail
+impexp32.dll retail
+indicdll.dll retail
+inetab32.dll retail
+inetmib1.dll retail
+inport.sys retail
+int-mail.cnt retail
+int-mail.hlp retail
+internat.exe retail
+intl.cpl retail
+intl.inf retail
+iologmsg.dll retail
+ipadrdll.dll retail
+ipconfig.exe retail
+ipinfo.inf retail
+iprip.dll retail
+iprop.dll dump
+ipxcfg.dll retail
+ipxroute.exe retail
+ir32_32.dll retail
+isdnhelp.cnt retail
+isdnhelp.hlp retail
+jazzg300.sys retail
+jazzg364.sys retail
+jet.dll retail
+jet500.dll retail
+jetconv.exe retail
+jetpack.exe retail
+joindom.exe retail
+joinrset.exe retail
+joy.cpl retail
+joy.hlp retail
+joyport.dll retail
+joyport.sys retail
+jp350.dll retail
+jzvxl484.dll retail
+jzvxl484.sys retail
+kb16.com retail
+kbd.inf retail
+kbdal.dll retail
+kbdbe.dll retail
+kbdbene.dll retail
+kbdblr.dll retail
+kbdbr.dll retail
+kbdbu.dll retail
+kbdca.dll retail
+kbdclass.sys retail
+kbdcr.dll retail
+kbdcz.dll retail
+kbdcz1.dll retail
+kbdda.dll retail
+kbddll.dll retail
+kbddv.dll retail
+kbdes.dll retail
+kbdest.dll retail
+kbdfc.dll retail
+kbdfi.dll retail
+kbdfr.dll retail
+kbdgkl.dll retail
+kbdgr.dll retail
+kbdgr1.dll retail
+kbdhe.dll retail
+kbdhe220.dll retail
+kbdhe319.dll retail
+kbdhela2.dll retail
+kbdhela3.dll retail
+kbdhu.dll retail
+kbdhu1.dll retail
+kbdic.dll retail
+kbdir.dll retail
+kbdit.dll retail
+kbdit142.dll retail
+kbdla.dll retail
+kbdlt.dll retail
+kbdlv.dll retail
+kbdlv1.dll retail
+kbdne.dll retail
+kbdno.dll retail
+kbdpl.dll retail
+kbdpl1.dll retail
+kbdpo.dll retail
+kbdro.dll retail
+kbdru.dll retail
+kbdru1.dll retail
+kbdsel.exe retail
+kbdsf.dll retail
+kbdsg.dll retail
+kbdsl.dll retail
+kbdsl1.dll retail
+kbdsp.dll retail
+kbdsw.dll retail
+kbdtuf.dll retail
+kbdtuq.dll retail
+kbduk.dll retail
+kbdur.dll retail
+kbdurs.dll retail
+kbdus.dll retail
+kbdusl.dll retail
+kbdusr.dll retail
+kbdusx.dll retail
+kbdycc.dll retail
+kbdycl.dll retail
+kernel32.dll retail
+keyb.com retail
+keyboard.drv retail
+keyboard.inf retail
+keyboard.sys retail
+kmddsp.tsp retail
+krnl386.exe retail
+krnl386.exe retail
+ksecdd.sys retail
+kyocera.dll retail
+kyocerax.dll retail
+l_10646.ttf retail
+l_except.nls retail
+l_intl.nls retail
+label.exe retail
+lance.sys retail
+language.inf retail
+lanma256.bmp retail
+lanman.drv retail
+lanmannt.bmp retail
+lappstrt.cur retail
+larrow.cur retail
+layout.inf retail
+lcross.cur retail
+lcwiz.exe retail
+legacy.inf retail
+libeam.cur retail
+liccpa.cnt retail
+liccpa.cpl retail
+liccpa.hlp retail
+lights.exe retail
+linkinfo.dll retail
+llsmgr.cnt retail
+llsmgr.exe retail
+llsmgr.hlp retail
+llsrpc.dll retail
+llssrv.exe retail
+lmhosts.sam retail
+lmhsvc.dll retail
+lmmib2.dll retail
+lmove.cur retail
+lmrepl.exe retail
+lnesw.cur retail
+lnodrop.cur retail
+lns.cur retail
+lnwse.cur retail
+loadfix.com retail
+loadperf.dll retail
+locale.nls retail
+localmon.dll retail
+localspl.dll retail
+locator.exe retail
+lodctr.exe retail
+logobj.exe retail
+logon.scr retail
+logui.exe retail
+logview.cnt retail
+logview.exe retail
+logview.hlp retail
+loop.sys retail
+lpdsvc.dll retail
+lpq.exe retail
+lpr.exe retail
+lprhelp.dll retail
+lprmon.dll retail
+lsasrv.dll retail
+lsass.exe retail
+lt200.sys retail
+lucon.ttf retail
+lwait.cur retail
+lwe.cur retail
+lz32.dll retail
+lzexpand.dll retail
+macfile.exe retail
+mailm32.dll retail
+mailsp32.exe retail
+main.cpl retail
+makedc.exe retail
+mammoth.sys retail
+mantal24.dll retail
+mantal90.dll retail
+mapi.dll retail
+mapi32.dll retail
+mapif0.cfg retail
+mapif0l.ico retail
+mapif0s.ico retail
+mapif1.cfg retail
+mapif1l.ico retail
+mapif1s.ico retail
+mapif2.cfg retail
+mapif2l.ico retail
+mapif2s.ico retail
+mapif3.cfg retail
+mapif3l.ico retail
+mapif3s.ico retail
+mapif4.cfg retail
+mapif4l.ico retail
+mapif4s.ico retail
+mapif5.cfg retail
+mapif5l.ico retail
+mapif5s.ico retail
+mapirpc.reg retail
+mapisp32.exe retail
+mapisrv.exe retail
+mapisrvr.exe retail
+mapisvc.inf retail
+mapiu.dll retail
+mapiu32.dll retail
+mapiwm.tpl retail
+mapix.dll retail
+mapix32.dll retail
+mapixx.dll retail
+marlett.ttf retail
+mcd32.dll retail
+mcdsrv32.dll retail
+mci.ht retail
+mciavi.drv retail
+mciavi32.dll retail
+mcicda.dll retail
+mciole16.dll retail
+mciole32.dll retail
+mciseq.dll retail
+mciseq.drv retail
+mciwave.dll retail
+mciwave.drv retail
+mdgncdet.dll retail
+mdgmpdlg.dll retail
+mdgmpdlg.hlp retail
+mdgmport.sys retail
+mdgmport.bin retail
+mdisp.tlb retail
+mdisp32.exe retail
+mdisp32.reg retail
+mdisp32.tlb retail
+mdm3com.inf retail
+mdm3x.inf retail
+mdmaceex.inf retail
+mdmadc.inf retail
+mdmadtn.inf retail
+mdmairte.inf retail
+mdmar1.inf retail
+mdmarch.inf retail
+mdmarcht.inf retail
+mdmarn.inf retail
+mdmati.inf retail
+mdmatt.inf retail
+mdmaus.inf retail
+mdmblatz.inf retail
+mdmboca.inf retail
+mdmbsb.inf retail
+mdmbsch.inf retail
+mdmcm28.inf retail
+mdmcmcm.inf retail
+mdmcodex.inf retail
+mdmcom1.inf retail
+mdmcomm1.inf retail
+mdmcommu.inf retail
+mdmcpi.inf retail
+mdmcpq.inf retail
+mdmcpqpr.inf retail
+mdmcpv.inf retail
+mdmcrtix.inf retail
+mdmdefd.inf retail
+mdmdgitn.inf retail
+mdmdicom.inf retail
+mdmdisco.inf retail
+mdmdsi.inf retail
+mdmdyna.inf retail
+mdmeiger.inf retail
+mdmelink.inf retail
+mdmelpro.inf retail
+mdmelsa.inf retail
+mdmeric.inf retail
+mdmetech.inf retail
+mdmexp.inf retail
+mdmeyp.inf retail
+mdmgal.inf retail
+mdmgar.inf retail
+mdmgatew.inf retail
+mdmgen.inf retail
+mdmgv.inf retail
+mdmgvc.inf retail
+mdmgvcd.inf retail
+mdmhaeu.inf retail
+mdmhaeus.inf retail
+mdmhandy.inf retail
+mdmhay2.inf retail
+mdmhayes.inf retail
+mdmico.inf retail
+mdminfot.inf retail
+mdminsys.inf retail
+mdmintel.inf retail
+mdmintpc.inf retail
+mdmitex.inf retail
+mdmke.inf retail
+mdmkortx.inf retail
+mdmlasat.inf retail
+mdmlasno.inf retail
+mdmlce.inf retail
+mdmlight.inf retail
+mdmlngsh.inf retail
+mdmmart.inf retail
+mdmmcom.inf retail
+mdmmetri.inf retail
+mdmmhrtz.inf retail
+mdmmix.inf retail
+mdmmoto.inf retail
+mdmmoton.inf retail
+mdmmotou.inf retail
+mdmmtd.inf retail
+mdmmts.inf retail
+mdmmulog.inf retail
+mdmneuhs.inf retail
+mdmniss.inf retail
+mdmnokia.inf retail
+mdmnokno.inf retail
+mdmnova.inf retail
+mdmnovfx.inf retail
+mdmolic.inf retail
+mdmolive.inf retail
+mdmopt1.inf retail
+mdmoptn.inf retail
+mdmosi.inf retail
+mdmpace.inf retail
+mdmpbit.inf retail
+mdmpcsi.inf retail
+mdmpctel.inf retail
+mdmphils.inf retail
+mdmpn1.inf retail
+mdmpnb.inf retail
+mdmpp.inf retail
+mdmprodm.inf retail
+mdmquant.inf retail
+mdmracal.inf retail
+mdmrfi.inf retail
+mdmrock.inf retail
+mdmrock2.inf retail
+mdmrock3.inf retail
+mdmrock4.inf retail
+mdmrock5.inf retail
+mdmsecdy.inf retail
+mdmsier.inf retail
+mdmsimpl.inf retail
+mdmsmart.inf retail
+mdmsmplt.inf retail
+mdmsnit1.inf retail
+mdmsnitn.inf retail
+mdmsonix.inf retail
+mdmspec.inf retail
+mdmspq28.inf retail
+mdmsrt.inf retail
+mdmsupr3.inf retail
+mdmsupra.inf retail
+mdmsuprv.inf retail
+mdmtaicm.inf retail
+mdmtdk.inf retail
+mdmtelbt.inf retail
+mdmtelin.inf retail
+mdmtelnk.inf retail
+mdmtexas.inf retail
+mdmtger.inf retail
+mdmti.inf retail
+mdmtkr.inf retail
+mdmtorn.inf retail
+mdmtosh.inf retail
+mdmtripl.inf retail
+mdmtron.inf retail
+mdmtrust.inf retail
+mdmucom.inf retail
+mdmusrcr.inf retail
+mdmusrf.inf retail
+mdmusrg.inf retail
+mdmusrsp.inf retail
+mdmusrwp.inf retail
+mdmvayrs.inf retail
+mdmvdot.inf retail
+mdmvict.inf retail
+mdmvv.inf retail
+mdmwell.inf retail
+mdmwhql0.inf retail
+mdmwoer.inf retail
+mdmyorik.inf retail
+mdmzoom.inf retail
+mdmzyp.inf retail
+mdmzyxel.inf retail
+mdmzyxld.inf retail
+mdmzyxlg.inf retail
+mdmzyxln.inf retail
+mem.exe retail
+metronom.ani retail
+mf3216.dll retail
+mfc40.dll retail
+mfc40.dbg symbols\dll
+mfc40u.dll retail
+mfc40u.dbg symbols\dll
+mfc40chs.dll retail
+mfc40deu.dll retail
+mfc40enu.dll retail
+mfc40esp.dll retail
+mfc40fra.dll retail
+mfc40ita.dll retail
+mfc40jpn.dll retail
+mfc40kor.dll retail
+mfc40d.dll system32
+mfc40ud.dll system32
+mfcd40d.dll system32
+mfcd40ud.dll system32
+mfcn40d.dll system32
+mfcn40ud.dll system32
+mfco40d.dll system32
+mfco40ud.dll system32
+mfc42.dll retail
+mfc42.dbg symbols\dll
+mfc42u.dll retail
+mfc42u.dbg symbols\dll
+mfc42chs.dll retail
+mfc42cht.dll retail
+mfc42deu.dll retail
+mfc42enu.dll retail
+mfc42esp.dll retail
+mfc42fra.dll retail
+mfc42ita.dll retail
+mfc42jpn.dll retail
+mfc42kor.dll retail
+mfc42d.dll system32
+mfc42ud.dll system32
+mfcd42d.dll system32
+mfcd42ud.dll system32
+mfcn42d.dll system32
+mfcn42ud.dll system32
+mfco42d.dll system32
+mfco42ud.dll system32
+mfcuix.hlp retail
+mga.dll retail
+mga.sys retail
+mga_mil.sys retail
+mgmtapi.dll retail
+mib.bin retail
+mib.bin retail
+midimap.cfg retail
+midimap.dll retail
+minet32.dll retail
+miniqic.sys retail
+mipssnd.sys retail
+mitsumi.sys retail
+mkecr5xx.sys retail
+mkrcon.exe retail
+mkrobj.exe retail
+mkrset.exe retail
+ml3xec16.exe retail
+mlcfg32.cpl retail
+mlset32.exe retail
+mlshext.dll retail
+mmdriver.inf retail
+mmdrv.dll retail
+mmdrv.hlp retail
+mmfmig32.dll retail
+mmopt.inf retail
+mmsys.cpl retail
+mmsystem.dll retail
+mmtask.tsk retail
+mode.com retail
+modem.cpl retail
+modem.inf retail
+modem.sys retail
+modemui.dll retail
+modern.fon retail
+money.bas retail
+monitor.inf retail
+more.com retail
+moricons.dll retail
+mouclass.sys retail
+mouse.cnt retail
+mouse.drv retail
+mouse.hlp retail
+mplay32.exe retail
+mplayer.cnt retail
+mplayer.hlp retail
+mpnotify.exe retail
+mpr.dll retail
+mprui.dll retail
+mpu401.dll retail
+mpu401.sys retail
+mrxsmb.sys drivers
+msacm.dll retail
+msacm32.dll retail
+msacm32.drv retail
+msadlib.idf retail
+msadp32.acm retail
+msafd.dll retail
+msafdext.dll mstools
+msaudite.dll retail
+msbbs.ht retail
+mscdexnt.exe retail
+msfs.cnt retail
+msfs.hlp retail
+msfs.sys retail
+msfs32.dll retail
+msgina.dll retail
+msg711.acm retail
+msgsm32.acm retail
+msgsvc.dll retail
+msjt3032.dll retail
+msmail.inf retail
+msmail32.cnt retail
+msmail32.exe retail
+msmail32.hlp retail
+msmouse.inf retail
+msncdet.dll retail
+msobjs.dll retail
+msp32_am.lex retail
+mspaint.cnt retail
+mspaint.exe retail
+mspaint.hlp retail
+mspapi.dll retail
+mspell32.dll retail
+msplog.dll retail
+mspmon.dll retail
+msprivs.dll retail
+mspsec.dll retail
+mspst32.dll retail
+msrle32.dll retail
+msrmnd32.exe retail
+msschd32.dll retail
+mssfs32.dll retail
+msv1_0.dll retail
+msvcrt20.dll retail
+msvcrt40.dll retail
+msvcrt.dll retail
+msvcirt.dll retail
+msvcr40d.dll system32
+msvcrtd.dll system32
+msvcirtd.dll system32
+msvfw32.dll retail
+msvidc32.dll retail
+msvideo.dll retail
+msviewut.dll retail
+mswd6_32.wpc retail
+mswsock.dll retail
+mswsutil.dll retail
+mt735.dll retail
+multimed.inf retail
+mup.sys retail
+musrmgr.cnt retail
+musrmgr.exe retail
+musrmgr.hlp retail
+mvaudio.dll retail
+mvaudio.sys retail
+nal.dll retail
+nbf.sys retail
+nbinfo.inf retail
+nbtstat.exe retail
+ncadmin.cnt retail
+ncadmin.exe retail
+ncadmin.hlp retail
+ncpa.cpl retail
+ncparam.inf retail
+ncpashel.inf retail
+ncr53c9x.sys retail
+ncr77c22.sys retail
+ncrc700.sys retail
+ncrc710.sys retail
+nddeagnt.exe retail
+nddeapi.dll retail
+nddeapir.exe retail
+nddenb32.dll retail
+ndis.sys retail
+ndis30.dll retail
+ndistapi.sys retail
+ndiswan.sys retail
+ne1000.sys retail
+ne2000.sys retail
+ne3200.bin retail
+ne3200.sys retail
+nec24pin.dll retail
+necsnd.dll retail
+necsnd.sys retail
+net.exe retail
+net.hlp retail
+net1.exe retail
+netapi.dll retail
+netapi.os2 retail
+netapi32.dll retail
+netbios.sys retail
+netbond.inf retail
+netbt.sys retail
+netcfg.dll retail
+netcfg.hlp retail
+netdde.exe retail
+netdefs.inf retail
+netdtect.dll retail
+netdtect.inf retail
+netdtect.sys retail
+netevent.dll retail
+netflx.bin retail
+netflx.dll retail
+netflx.sys retail
+neth.dll retail
+netlogon.dll retail
+netmon.cnt netmon
+netmon.hlp netmon
+netmsg.dll retail
+netoemdh.inf retail
+netrap.dll retail
+netsetup.dll retail
+netstat.exe retail
+netui0.dll retail
+netui1.dll retail
+netui2.dll retail
+netware.drv retail
+network.hlp retail
+networks retail
+networks.wri retail
+networkw.wri retail
+nibbles.bas retail
+nlsfunc.exe retail
+nmagent.exe retail
+nmgloss.hlp netmon
+notepad.cnt retail
+notepad.exe retail
+notepad.hlp retail
+npeisa.sys retail
+npfs.sys retail
+npmca.sys retail
+nslookup.exe retail
+nt.fnt retail
+nt2.fnt retail
+nt40.pdf retail
+ntbackup.exe retail
+ntbooks.exe retail
+ntcmds.hlp retail
+ntctl3d.dll retail
+ntcx.sys retail
+ntdetect.com retail
+ntdll.dll retail
+ntdos.sys retail
+ntepc.sys retail
+ntfs.sys retail
+ntio.sys retail
+ntkrnlmp.exe retail
+ntlanman.dll retail
+ntlanui.dll retail
+ntlanui2.dll retail
+ntldr retail
+ntlm.dll retail
+ntlmmain.exe retail
+ntlms128.dll noexport
+ntlmssps.dll retail
+ntlmsvc.dll retail
+ntlsapi.dll retail
+ntoskrnl.exe retail
+ntprint.dll retail
+ntprint.inf retail
+ntsecui.hlp retail
+ntshrui.dll retail
+ntshrui.hlp retail
+ntvdm.exe retail
+ntxall.sys retail
+ntxem.sys retail
+null.sys retail
+nw16.exe retail
+nwapi16.dll retail
+nwapi32.dll retail
+nwc.cpl retail
+nwcfg.dll retail
+nwconv.cnt retail
+nwconv.exe retail
+nwconv.hlp retail
+nwdoc.cnt retail
+nwdoc.hlp retail
+nwdocgw.cnt retail
+nwdocgw.hlp retail
+nwevent.dll retail
+nwlnkipx.sys retail
+nwlnknb.sys retail
+nwlnkrip.sys retail
+nwlnkspx.sys retail
+nwprovau.dll retail
+nwrdr.sys retail
+nwsap.dll retail
+nwscript.exe retail
+nwwks.dll retail
+odbcjt32.dll retail
+oemnadam.inf retail
+oemnadap.inf retail
+oemnadar.inf retail
+oemnadd1.inf retail
+oemnadd2.inf retail
+oemnadd3.inf retail
+oemnadd4.inf retail
+oemnadde.inf retail
+oemnaddf.inf retail
+oemnaddi.inf retail
+oemnadds.inf retail
+oemnaddt.inf retail
+oemnade1.inf retail
+oemnade2.inf retail
+oemnade3.inf retail
+oemnadee.inf retail
+oemnadem.inf retail
+oemnaden.inf retail
+oemnadep.inf retail
+oemnadfd.inf retail
+oemnadim.inf retail
+oemnadin.inf retail
+oemnadlb.inf retail
+oemnadlm.inf retail
+oemnadlt.inf retail
+oemnadma.inf retail
+oemnadn1.inf retail
+oemnadn2.inf retail
+oemnadne.inf retail
+oemnadnf.inf retail
+oemnadni.inf retail
+oemnadnm.inf retail
+oemnadnp.inf retail
+oemnadp3.inf retail
+oemnadp9.inf retail
+oemnadpm.inf retail
+oemnadsn.inf retail
+oemnadso.inf retail
+oemnadt2.inf retail
+oemnadtk.inf retail
+oemnadtm.inf retail
+oemnadub.inf retail
+oemnadum.inf retail
+oemnadwd.inf retail
+oemnadwm.inf retail
+oemnadzz.inf retail
+oemnsvbh.inf retail
+oemnsvbr.inf retail
+oemnsvcu.inf retail
+;oemnsvdf.inf retail
+oemnsvdh.inf retail
+oemnsvdn.inf retail
+oemnsvft.inf retail
+oemnsvir.inf retail
+oemnsvin.inf retail
+oemnsvnb.inf retail
+oemnsvnw.inf retail
+oemnsvra.inf retail
+oemnsvri.inf retail
+oemnsvrp.inf retail
+oemnsvrr.inf retail
+oemnsvsa.inf retail
+oemnsvsm.inf retail
+oemnsvsn.inf retail
+oemnsvsp.inf retail
+oemnsvsv.inf retail
+oemnsvtp.inf retail
+oemnsvwi.inf retail
+oemnsvwk.inf retail
+oemnxpdl.inf retail
+oemnxpip.inf retail
+oemnxpnb.inf retail
+oemnxppp.inf retail
+oemnxpsm.inf retail
+oemnxpst.inf retail
+oemnxptc.inf retail
+ofs.sys retail
+ofscnvt.exe retail
+ofssetup.sys retail
+ofsutil.dll retail
+oki24.dll retail
+oki9.dll retail
+oki9ibm.dll retail
+ole2.dll retail
+ole2disp.dll retail
+ole2nls.dll retail
+ole32.dll retail
+oleaut32.dll retail
+olecli.dll retail
+olecli32.dll retail
+olecnv32.dll retail
+oledlg.dll retail
+olepro32.dll retail
+olesvr.dll retail
+olesvr32.dll retail
+olethk32.dll retail
+olidm24.dll retail
+olidm9.dll retail
+oliscsi.sys retail
+opengl32.dll retail
+optional.inf retail
+optra.dll retail
+ora.dll retail
+oramon.dll retail
+orasvc.exe retail
+os2.exe retail
+os2srv.exe retail
+os2ss.exe retail
+osloader.exe retail
+oso001.007 retail
+oso001.009 retail
+oso001.010 retail
+oso001.012 retail
+oso001.016 retail
+oso001.029 retail
+other.inf retail
+pabnsp32.dll retail
+packager.cnt retail
+packager.exe retail
+packager.hlp retail
+pad.inf retail
+paintjet.dll retail
+panmap.dll retail
+panson24.dll retail
+panson9.dll retail
+parallel.sys retail
+parport.sys retail
+parvdm.sys retail
+passport.mid retail
+pax.exe retail
+pbrush.exe retail
+pcimac.sys retail
+pcl.sep retail
+pcl5ems.dll retail
+pcl5emse.dll retail
+pcl5ms.dll retail
+pcl5mse.dll retail
+pcmcia.sys retail
+pcnet.hlp retail
+pentnt.exe retail
+perfc009.dat retail
+perfctrs.dll retail
+perfh009.dat retail
+perfmon.cnt retail
+perfmon.exe retail
+perfmon.hlp retail
+perfnw.dll retail
+perms.inf retail
+piano.ani retail
+pifmgr.dll retail
+ping.exe retail
+pjlmon.dll retail
+place.dns retail
+plotter.dll retail
+plotui.dll retail
+plotui.hlp retail
+plustab.dll retail
+pmspl.dll retail
+pnpisa.inf dlibbin
+pnpisa.sys retail
+ports.cpl retail
+portuas.exe retail
+posix.exe retail
+prflbmsg.dll retail
+print.exe retail
+printer.wri retail
+printui.dll retail
+probrep.txt retail
+prodspec.ini retail
+prod128.ini retail
+profext.dll retail
+profile.spc retail
+progman.cnt retail
+progman.exe retail
+progman.hlp retail
+pronet16.sys retail
+proprint.dll retail
+proprn24.dll retail
+prorapm.dwn retail
+protocol retail
+proxy.dll retail
+ps1.dll retail
+pscript.dll retail
+pscript.hlp retail
+pscript.sep retail
+pscrptui.dll retail
+psidisp.dll retail
+psidisp.sys retail
+psxdll.dll retail
+psxss.exe retail
+qbasic.exe retail
+qbasic.hlp retail
+qic117.sys retail
+qic157.sys retail
+ql10wnt.sys retail
+quietjet.dll retail
+quikview.exe retail
+quotes retail
+qv.dll retail
+qv.sys retail
+qwiii.dll retail
+rainbow.ani retail
+raindrop.ani retail
+ras.ico retail
+rasacd.sys retail
+rasadhlp.dll retail
+rasadmin.cnt retail
+rasadmin.dll retail
+rasadmin.exe retail
+rassapi.dll retail
+rasadmin.hlp retail
+rasapi16.dll retail
+rasapi32.dll retail
+rasarp.sys retail
+rasauto.dll retail
+rasautou.exe retail
+rascauth.dll retail
+rascbcp.dll retail
+rasccp.dll retail
+rascfg.dll retail
+raschap.dll retail
+rasctrs.dll retail
+rasdd.dll retail
+rasddui.dll retail
+rasddui.hlp retail
+rasdial.exe retail
+rasdlg.dll retail
+rasfil32.dll retail
+rasgloss.cnt retail
+rasgloss.hlp retail
+rasgprxy.dll retail
+rasgtwy.dll retail
+rasipcp.dll retail
+rasiphlp.dll retail
+rasipxcp.dll retail
+rasman.dll retail
+rasman.exe retail
+rasmon.exe retail
+rasmsg.dll retail
+rasmxs.dll retail
+rasnbfcp.dll retail
+rasnbipc.dll retail
+raspap.dll retail
+rasphone.cnt retail
+rasphone.exe retail
+rasscrpt.dll retail
+rasshell.dll retail
+rascpl.cpl retail
+rasphone.hlp retail
+raspppen.dll retail
+raspptpc.dll retail
+raspptpl.dll retail
+raspptpe.sys retail
+raspptpf.sys retail
+raspptpm.sys retail
+raspptpu.sys retail
+rasread.txt retail
+rassauth.dll retail
+rasser.dll retail
+rassetup.cnt retail
+rassetup.hlp retail
+rasspap.dll retail
+rassprxy.exe retail
+rassrv.exe retail
+rastapi.dll retail
+rcp.exe retail
+rdbss.sys drivers
+rdisk.cnt retail
+rdisk.exe retail
+rdisk.hlp retail
+rdr.sys retail
+readme.wri retail
+recom.sys retail
+recover.exe retail
+redir.exe retail
+regedit.cnt retail
+regedit.exe retail
+regedit.hlp retail
+regeditv.cnt retail
+regeditv.hlp retail
+regedt32.cnt retail
+regedt32.exe retail
+regedt32.hlp retail
+regedt16.exe retail
+regedt16.hlp retail
+registry.inf retail
+relay.dll retail
+remline.bas retail
+repart.exe retail
+repl.exe retail
+replace.exe retail
+replanal.exe retail
+restore.exe retail
+rexec.exe retail
+riched.dll retail
+riched32.dll retail
+riched20.dll retail
+ringin.wav retail
+ringout.wav retail
+ripstat.exe retail
+rnal.dll retail
+rnr20.dll retail
+roman.fon retail
+route.exe retail
+router.exe retail
+routetab.dll retail
+rpcltc1.dll retail
+rpcltc8.dll retail
+rpcltccm.dll retail
+rpclts1.dll retail
+rpclts8.dll retail
+rpcltscm.dll retail
+rpcns4.dll retail
+rpcrt4.dll retail
+rpcss.exe retail
+rplcmd.exe retail
+rplcnv.exe retail
+rplmgr.cnt retail
+rplmgr.exe retail
+rplmgr.hlp retail
+rplsvc.exe retail
+rsabase.dll retail
+rsabase.sig retail
+rsh.exe retail
+rshx32.dll retail
+rtradmin.cnt retail
+rtradmin.hlp retail
+rundll32.exe retail
+runonce.exe retail
+s3.dll retail
+s3.sys retail
+samlib.dll retail
+samlsa.dll retail
+samsrv.dll retail
+savedump.exe retail
+sbpnp.inf retail
+scanpst.exe retail
+scanpst.hlp retail
+scclient.exe retail
+sccview.dll retail
+schdpl32.cnt retail
+schdpl32.exe retail
+schdpl32.hlp retail
+schmsg32.dll retail
+sclist.exe idw
+script.doc retail
+script.fon retail
+scrnsave.scr retail
+scsi.inf retail
+scsiport.sys retail
+scsiprnt.sys retail
+scsiscan.sys retail
+sctool.exe retail
+security.dll retail
+secur128.dll noexport
+secur32.dll retail
+seiko.dll retail
+seiko24e.dll retail
+seikosh9.dll retail
+sendfl32.dll retail
+serial.sys retail
+serialui.dll retail
+serife.fon retail
+serifee.fon retail
+serifeg.fon retail
+serifer.fon retail
+serifet.fon retail
+seriff.fon retail
+seriffe.fon retail
+seriffg.fon retail
+seriffr.fon retail
+serifft.fon retail
+sermouse.sys retail
+services retail
+services.exe retail
+setdom.exe retail
+setup.exe retail
+setup.txt retail
+setup16.inf retail
+setupapi.dll retail
+setupdd.sys retail
+setupdll.dll retail
+setupldr retail
+setupldr.bin retail
+setupp.ini retail
+setupreg.hiv retail
+setver.exe retail
+sfloppy.sys retail
+sfmapi.dll retail
+sfmatalk.sys retail
+sfmatcfg.dll retail
+sfmatmsg.dll retail
+sfmctrs.dll retail
+sfmicon.vol retail
+sfmicons.inf retail
+sfmmap.inf retail
+sfmmgr.cnt retail
+sfmmgr.cpl retail
+sfmmgr.hlp retail
+sfmmon.dll retail
+sfmmsg.dll retail
+sfmprint.exe retail
+sfmpsdib.dll retail
+sfmpsexe.exe retail
+sfmpsfnt.dll retail
+sfmpsprt.dll retail
+sfmreg.exe retail
+sfmres.dll retail
+sfmsrv.sys retail
+sfmsvc.exe retail
+sfmuam.ifo retail
+sfmuam.rsc retail
+sfmuam.txt retail
+sfmutil.dll retail
+sfmwshat.dll retail
+share.exe retail
+shcompui.dll retail
+shell.dll retail
+shell32.dll retail
+shlwapi.dll retail
+shmgrate.exe retail
+shrpubw.exe retail
+shscrap.dll retail
+sidewndr.dll retail
+sidewndr.sys retail
+simptcp.dll retail
+single.exe retail
+sizenesw.ani retail
+sizens.ani retail
+sizenwse.ani retail
+sizewe.ani retail
+skdll.dll retail
+skeys.exe retail
+slcd32.sys retail
+slip.scp retail
+slipmenu.scp retail
+smalle.fon retail
+smallee.fon retail
+smalleg.fon retail
+smaller.fon retail
+smallet.fon retail
+smallf.fon retail
+smallfe.fon retail
+smallfg.fon retail
+smallfr.fon retail
+smallft.fon retail
+smcisa.sys retail
+smctrls.dll retail
+smss.exe retail
+sndblst.dll retail
+sndblst.sys retail
+sndrec32.exe retail
+sndsys.sys retail
+sndsys32.dll retail
+sndvol32.cnt retail
+sndvol32.exe retail
+sndvol32.hlp retail
+snmp.exe retail
+snmpapi.dll retail
+snmptrap.exe retail
+softpub.dll retail
+software retail
+sol.cnt retail
+sol.exe retail
+sol.hlp retail
+sonic.sys retail
+snimac.sys retail
+sort.exe retail
+sortkey.nls retail
+sorttbls.nls retail
+sound.drv retail
+soundrec.cnt retail
+soundrec.hlp retail
+space.gif retail
+sparrow.sys retail
+spddlang.sys retail
+spinit.exe retail
+splayout.inf retail
+spock.sys retail
+spoolss.dll retail
+spoolss.exe retail
+sprestrt.exe retail
+srv.sys retail
+srvmgr.cnt retail
+srvmgr.cpl retail
+srvmgr.exe retail
+srvmgr.hlp retail
+srvsvc.dll retail
+ss3dfo.scr retail
+ssbezier.scr retail
+sserife.fon retail
+sserifee.fon retail
+sserifeg.fon retail
+sserifer.fon retail
+sserifet.fon retail
+sseriff.fon retail
+sseriffe.fon retail
+sseriffg.fon retail
+sseriffr.fon retail
+sserifft.fon retail
+ssflwbox.scr retail
+ssmaze.scr retail
+ssmarque.scr retail
+ssmyst.scr retail
+sspipes.scr retail
+ssstars.scr retail
+sstext3d.scr retail
+star24e.dll retail
+star9e.dll retail
+starjet.dll retail
+stdole.tlb retail
+stdole2.tlb retail
+stdole32.tlb retail
+stopwtch.ani retail
+storage.dll retail
+store32.dll retail
+streams.sys retail
+subroutn.inf retail
+subst.exe retail
+sumcat.dll retail
+supp_ed.cnt retail
+supp_ed.hlp retail
+switch.inf retail
+sxbios.bin retail
+sxfep.bin retail
+symbol.ttf retail
+symbole.fon retail
+symbolf.fon retail
+symc810.sys retail
+syncapp.exe retail
+synceng.dll retail
+syncui.dll retail
+synth.dll retail
+synth.pat retail
+synth.sys retail
+sysdm.cpl retail
+sysedit.exe retail
+sysmgmt.dll retail
+sysprint.sep retail
+syssetup.dll retail
+syssetup.inf retail
+system retail
+system.drv retail
+system.ini retail
+system.mdb retail
+systray.exe retail
+t128.sys retail
+t13b.sys retail
+t1instal.dll retail
+tada.wav retail
+tandqic.sys retail
+tape.inf retail
+tape.sys retail
+tapi.dll retail
+tapi32.dll retail
+tapiperf.dll retail
+tapisrv.exe retail
+tasklist.hlp netmon
+taskman.exe retail
+taskmgr.cnt retail
+taskmgr.exe retail
+taskmgr.hlp retail
+tcarc.sys retail
+tcpcfg.dll retail
+tcpip.cnt retail
+tcpip.hlp retail
+tcpip.sys retail
+tcpsvcs.exe retail
+tdi.sys retail
+telephon.cpl retail
+telnet.cnt retail
+telnet.exe retail
+telnet.hlp retail
+tftp.exe retail
+tga.dll retail
+tga.sys retail
+thinkjet.dll retail
+ti850.dll retail
+timedate.cpl retail
+timer.drv retail
+times.ttf retail
+timesbd.ttf retail
+timesbi.ttf retail
+timesi.ttf retail
+tmv1.sys retail
+toolhelp.dll retail
+trace.dll retail
+tracert.exe retail
+tree.com retail
+trident.sys retail
+trnsch32.dll retail
+tsd32.dll retail
+tssoft32.acm retail
+txtonly.dll retail
+txtsetup.sif retail
+typelib.dll retail
+ubnei.bin retail
+ubnei.sys retail
+ubnei.sys retail
+ufat.dll retail
+ulib.dll retail
+ulibif.dll retail
+ultra124.sys retail
+ultra14f.sys retail
+ultra24f.sys retail
+umpnpmgr.dll retail
+unicode.nls retail
+unimdm.tsp retail
+unlodctr.exe retail
+untfs.dll retail
+uofs.dll retail
+updsc.exe retail
+upg351db.exe retail
+ups.cpl retail
+ups.exe retail
+ureg.dll retail
+user.exe retail
+user32.dll retail
+imm32.dll retail
+userdiff retail
+userenv.dll retail
+userinit.exe retail
+usetup.exe retail
+usrmgr.cnt retail
+usrmgr.exe retail
+usrmgr.hlp retail
+utility.inf retail
+v7vga.rom retail
+v7vram.sys retail
+vanisher.ani retail
+vcdex.dll retail
+vdmdbg.dll retail
+vdmredir.dll retail
+veneer.exe retail
+ver.dll retail
+version.dll retail
+vform32.dll retail
+vga.dll retail
+vga.drv retail
+vga.sys retail
+vga256.dll retail
+vga64k.dll retail
+vga737.fon retail
+vga850.fon retail
+vga852.fon retail
+vga857.fon retail
+vga860.fon retail
+vga861.fon retail
+vga863.fon retail
+vga865.fon retail
+vga866.fon retail
+vga869.fon retail
+vgafix.fon retail
+vgafixe.fon retail
+vgafixg.fon retail
+vgafixr.fon retail
+vgafixt.fon retail
+vgaoem.fon retail
+vgasys.fon retail
+vgasyse.fon retail
+vgasysg.fon retail
+vgasysr.fon retail
+vgasyst.fon retail
+video.inf retail
+videoprt.sys retail
+videosim.sys retail
+vmmreg32.dll retail
+vsasc8.dll retail
+vsbmp.dll retail
+vsdrw.dll retail
+vsexe.dll retail
+vsexe2.dll retail
+vsmp.dll retail
+vsmsw.dll retail
+vspp.dll retail
+vspp7.dll retail
+vsqp6.dll retail
+vsrtf.dll retail
+vstiff.dll retail
+vsw6.dll retail
+vswks.dll retail
+vswmf.dll retail
+vsword.dll retail
+vswork.dll retail
+vswp5.dll retail
+vswp6.dll retail
+vswpf.dll retail
+vsxl5.dll retail
+vwipxspx.dll retail
+vwipxspx.exe retail
+w32.dll retail
+w3pcache.dll retail
+w3pinet.dll retail
+w3pmib.dll retail
+wagtail.ani retail
+wangqic.sys retail
+wd33c93.sys retail
+wd90c24a.dll retail
+wd90c24a.sys retail
+wdl.trm retail
+wdt32.dll retail
+wdvga.sys retail
+weitekp9.dll retail
+weitekp9.sys retail
+wfwnet.drv retail
+wgpoadmn.dll retail
+wgpocpl.cpl retail
+wgpomg32.dll retail
+win.com retail
+win.ini retail
+win32k.sys retail
+win32spl.dll retail
+win87em.dll retail
+winchat.cnt retail
+winchat.exe retail
+winchat.hlp retail
+windisk.cnt retail
+windisk.exe retail
+windisk.hlp retail
+windiska.cnt retail
+windiska.hlp retail
+windows.cnt retail
+windows.hlp retail
+winfile.cnt retail
+winfile.exe retail
+winfile.hlp retail
+winfile.ini retail
+wingding.ttf retail
+winhelp.exe retail
+winhelp.hlp retail
+winhlp32.cnt retail
+winhlp32.exe retail
+winhlp32.hlp retail
+winhstb.exe retail
+winlogon.exe retail
+winmine.cnt retail
+winmine.exe retail
+winmine.hlp retail
+winmm.dll retail
+winmsd.exe retail
+winnt.bmp retail
+winnt.exe retail
+winnt.hlp retail
+winnt256.bmp retail
+winoldap.mod retail
+winperms.txt retail
+winprint.dll retail
+wins.exe retail
+winsadmn.cnt retail
+winsadmn.exe retail
+winsadmn.hlp retail
+winsctrs.dll retail
+winsevnt.dll retail
+winsmib.dll retail
+winsock.dll retail
+winspool.drv retail
+winspool.exe retail
+winsrpc.dll retail
+winsrv.dll retail
+winstrm.dll retail
+wintrust.dll retail
+winver.exe retail
+wizmgr.exe retail
+wkssvc.dll retail
+wmsfr32.dll retail
+wmssetup.exe retail
+wmsui32.dll retail
+wow32.dll retail
+wowdeb.exe retail
+wowexec.exe retail
+wowfax.dll retail
+wowfaxui.dll retail
+write.exe retail
+ws2_32.dll retail
+ws2help.dll retail
+ws2map.dll retail
+wsasetup.dll retail
+wshisn.dll retail
+wshnetbs.dll retail
+wshtcpip.dll retail
+wsock32.dll retail
+wspmib.dll retail
+xabios.bin retail
+xacook.bin retail
+xactsrv.dll retail
+xcopy.exe retail
+xeroxpcl.dll retail
+xga.dll retail
+xga.sys retail
+85f1257.fon retail
+85775.fon retail
+85s1257.fon retail
+app775.fon retail
+coue1257.fon retail
+couf1257.fon retail
+sere1257.fon retail
+serf1257.fon retail
+smae1257.fon retail
+smaf1257.fon retail
+ssee1257.fon retail
+ssef1257.fon retail
+sysdm.hlp retail
+vga775.fon retail
+vgaf1257.fon retail
+vgas1257.fon retail
+winnt32.exe winnt32
+winnt32.hlp winnt32
+9track.sys drivers
+dce376nt.sys drivers
+decbt459.sys drivers
+dzport.sys drivers
+em_drvr.sys drivers
+exmb.xfm drivers
+iiop.sys drivers
+mcsxns.sys drivers
+mouse.sys drivers
+mvopl3.sys drivers
+ncrcam.sys drivers
+pcidump.sys drivers
+pdii.sys drivers
+pstat.sys drivers
+scsitape.sys drivers
+simbad.sys drivers
+smbtrsup.sys drivers
+ubnb.sys drivers
+vga_alt.sys drivers
+hosts.shp drvetc
+lmhosts.shp drvetc
+aboutwep.dll idw
+accesori.grp idw
+access.exe idw
+access.wri idw
+access.hlp retail
+access35.hlp idw
+acllist.exe idw
+addfile.exe idw
+addproj.exe idw
+adduser.exe idw
+admin.grp idw
+alias.exe idw
+aniedit.exe idw
+apidll.dll idw
+apimon.exe idw
+apimon.hlp idw
+appxec32.dll idw
+autolfn.exe idw
+autowrap.exe idw
+basewin.exe idw
+bcc32.dll idw
+beep.exe idw
+bells.wav idw
+bin2c.exe idw
+bind.exe idw
+bingen.exe idw
+binplace.exe idw
+bintrack.exe idw
+bldsam2.exe idw
+blocks.wav idw
+bowdeb.exe idw
+boxes.bmp idw
+browdeb.exe idw
+browmon.exe idw
+browse.exe idw
+browstat.exe idw
+bugboard.exe idw
+build.exe idw
+build.hlp idw
+buildnum.exe idw
+bummer.wav idw
+cat.exe idw
+cats.exe idw
+catsrc.exe idw
+cdb.exe idw
+cdp.exe idw
+certify.exe idw
+cfront.exe idw
+checkfix.exe idw
+checkin.cmd idw
+checkins.txt idw
+checkrel.bnd idw
+checkrel.chk idw
+checkrel.exe idw
+chess.bmp idw
+chkalive.exe idw
+chkfile.chk idw
+chkslm.exe idw
+chksum.exe idw
+chkverfy.exe idw
+chmode.exe idw
+choice.exe idw
+cin.exe idw
+ciscan.exe idw
+clap.wav idw
+clearmem.exe dump
+clock.wav idw
+cmdevent.exe idw
+cmpver.exe idw
+compdir.exe idw
+compinst.exe idw
+connect.exe idw
+contrast.exe idw
+cookie.exe idw
+cp.exe idw
+cpustres.exe dump
+crash.exe idw
+crashdmp.exe idw
+creatfil.exe dump
+cruel.exe idw
+ctrlist.exe idw
+curridw.exe idw
+dbgdump.exe idw
+dbmon.exe idw
+dbnmp3.dll idw
+dbwin32.exe idw
+dcomp.exe idw
+dconnect.exe idw
+defect.exe idw
+delfile.exe idw
+delnode.exe idw
+delprof.exe idw
+delproj.exe idw
+dh.exe idw
+dhcpcli.exe idw
+dhcpcmd.exe idw
+dhcpins.exe idw
+dhcploc.exe idw
+dhcptst.exe idw
+diamond.exe idw
+diamwrap.exe idw
+diff.exe idw
+diruse.exe idw
+dis.exe idw
+diskedit.exe idw
+diskmon.exe idw
+dist.exe idw
+dnscmd.exe dump
+dnsstat.exe dump
+dommon.exe idw
+door.wav idw
+dosdev.exe idw
+drat.wav idw
+drivemap.exe idw
+drum.wav idw
+dskbench.exe idw
+dskimage.exe idw
+du.exe idw
+dumpchk.exe idw
+dumpexam.exe idw
+dumpflop.exe idw
+dumpgrp.exe idw
+dumpref.exe idw
+ech.exe idw
+echotime.exe idw
+editreg.exe idw
+editsym.exe idw
+empty.exe dump
+emptyw32.dll idw
+enlist.exe idw
+enterp.bmp idw
+ethstat.exe idw
+exctrlst.exe idw
+execmail.exe idw
+exp.exe idw
+fcom.exe idw
+filever.exe idw
+files.exe idw
+filter.exe idw
+filter32.dll idw
+findf.exe idw
+fix31grp.exe idw
+fixdiff.exe idw
+fixlinks.exe idw
+floplock.exe idw
+forceflt.exe idw
+forcemrg.exe idw
+games.grp idw
+gensrv.exe idw
+getbin.exe idw
+getbin.exe idw
+getdbg.exe idw
+getnt.exe idw
+gflags.exe idw
+glass.wav idw
+golf.exe idw
+gong.wav idw
+good32.dll idw
+grptoreg.exe idw
+guidlib.exe idw
+hd.exe idw
+he.exe idw
+head.exe idw
+heapmon.exe idw
+hextract.exe idw
+hihat.wav idw
+hivedmp.exe idw
+hivehdr.exe idw
+hiveini.exe idw
+horns.wav idw
+hsplit.exe idw
+imagecfg.exe idw
+imagechk.exe idw
+in.exe idw
+includes.exe idw
+infs.exe idw
+infsize.exe idw
+ini.exe idw
+instaler.exe idw
+instsrv.exe idw
+inxtoreg.exe idw
+iodll.dll idw
+jawharp.wav idw
+jiberish.wav idw
+kbdtool.exe idw
+kernprof.exe idw
+kernrate.exe idw
+kerntwk.exe idw
+kill.exe idw
+killwow.exe idw
+killwow.sym idw
+laser.wav idw
+laughs.wav idw
+layout.exe idw
+leakyapp.exe dump
+links.exe idw
+list.exe idw
+listmung.exe idw
+llscmd.exe idw
+llsdbg.exe idw
+lnkdump.exe idw
+loc.exe idw
+local.exe idw
+log.exe idw
+lookatwb.cmd idw
+ls.exe idw
+main.grp idw
+makedisk.exe idw
+mapmsg.exe idw
+mbrmake.exe idw
+mbrowse.dll idw
+mbytes.exe idw
+mcitest.exe idw
+mcpyfile.exe idw
+mepparty.dll idw
+merge.exe idw
+midleb.exe idw
+midlpg.exe idw
+midlyacc.exe idw
+mlayout.exe idw
+modif.hlp idw
+mondmp.exe idw
+moninit.exe idw
+mprtest.exe idw
+mrc.exe idw
+msize.exe idw
+mtc.exe idw
+mttf.exe idw
+mttfvwr.exe idw
+munge.exe idw
+mv.exe idw
+nbtd.exe idw
+nbtinfo.exe idw
+nclipps.dll idw
+netclip.exe idw
+netconf idw
+netd.exe idw
+netjoin.exe idw
+netobj.dll idw
+netperm.exe idw
+netshare.exe idw
+netwatch.exe idw
+nlmon.exe idw
+nltest.exe idw
+nt.bmp idw
+ntddecmn.exe idw
+ntfsdump.exe idw
+ntimer.exe idw
+nvram.exe idw
+objdir.exe idw
+objmon.exe idw
+oeminf.exe idw
+oform32.dll idw
+ohoh.wav idw
+openall.exe idw
+order.exe idw
+out.exe idw
+paper.bmp idw
+paranoia.exe idw
+parcomp.exe idw
+parse.exe idw
+parsync.exe idw
+party.bmp idw
+passprop.exe idw
+pcall.exe idw
+pcmcmd.exe idw
+pdump.exe idw
+pdh.dll dump
+pdhdefs.txt dump
+pdlcnfig.exe dump
+pdlcnfig.hlp dump
+pdlcnfig.cnt dump
+pdlsvc.exe dump
+pegged.exe idw
+perms.exe idw
+playsnd.exe idw
+pop.wav idw
+pppmenu.scp retail
+ppr.exe idw
+pperf.exe idw
+pretty.exe idw
+prodfilt.exe idw
+property.q idw
+psxhello.exe idw
+pyramid.bmp idw
+qgrep.exe idw
+qslice.exe idw
+quickrun.exe idw
+random.exe idw
+rasether.dll idw
+rathole.exe idw
+rcdata1.dll idw
+rcdump.exe idw
+rcpp.exe idw
+readline.exe idw
+regback.exe idw
+regdmp.exe idw
+regdir.exe idw
+regini.exe idw
+regfind.exe idw
+regtogrp.exe idw
+remote.exe idw
+repair.exe idw
+request.cmd idw
+rescan.exe idw
+rescan.exe idw
+resmon.exe idw
+resolv.cnf idw
+reversi.exe idw
+ribbons.bmp idw
+rollback.exe idw
+roshare.exe idw
+rpctrace.exe idw
+rwinf.dll idw
+rwmac.dll idw
+rwres32.dll idw
+rwwin16.dll idw
+rwwin32.dll idw
+sadmin.exe idw
+scmain.exe idw
+scomp.exe idw
+secedit.dll idw
+secedit.exe idw
+seclist.exe idw
+sed.exe idw
+sert32.dll idw
+setedit.exe dump
+setidw.bat idw
+setidw.ini idw
+setlink.exe idw
+setwin95.cmd idw
+setnt351.cmd idw
+showinst.exe idw
+showperf.exe idw
+shutdown.exe idw
+shuttle.exe idw
+simbad.exe idw
+siren.wav idw
+size.exe idw
+slash.bmp idw
+sleep.exe idw
+slm.exe idw
+slmck.exe idw
+slmdiff.exe idw
+slmed.exe idw
+smbtrace.exe idw
+snake.exe idw
+snmpctrl.exe idw
+snmptest.exe idw
+snmptst1.exe idw
+snmptst2.exe idw
+snmptst3.exe idw
+snmptst4.exe idw
+snmptst5.exe idw
+snmptst6.exe idw
+snmptst7.exe idw
+snmptst8.exe idw
+snmputil.exe idw
+solidpp.exe idw
+splinfo.exe idw
+splitsym.exe idw
+spots.bmp idw
+srch.exe idw
+srch.hlp idw
+srvname.exe idw
+ssptest.exe idw
+ssync.exe idw
+startpgm.exe idw
+startup.grp idw
+status.exe idw
+statw32.dll dump
+std.bmp idw
+steel.bmp idw
+stringpp.exe idw
+strings.exe idw
+strip.exe idw
+stripcv.exe idw
+stripinf.exe idw
+strmdbg.exe idw
+strmexts.dll idw
+structo.exe idw
+suck.exe idw
+switcher.exe idw
+sync.exe idw
+sysdiff.exe idw
+sysdiff.inf idw
+tail.exe idw
+taipei.exe idw
+takeown.exe idw
+tbitmap.exe idw
+tc.exe idw
+tcpexts.dll idw
+tdi_init.exe idw
+tee.exe idw
+template.xxx idw
+tictac.exe idw
+tile.exe idw
+timeit.exe idw
+timer.exe idw
+timerw32.dll dump
+timpani.wav idw
+tlist.exe idw
+tools.grp idw
+topdesk.exe idw
+topdesk.hlp idw
+tophook.dll idw
+touch.exe idw
+tpdiff.exe idw
+train.wav idw
+trans.exe idw
+trnncx32.dll idw
+typeall.cmd idw
+tz.exe idw
+uixport.exe idw
+undoinst.exe idw
+units.exe idw
+unmerge.exe idw
+upd.exe idw
+upddbg.exe idw
+updrn.exe idw
+vault.wav idw
+vdesk.exe idw
+vi.exe idw
+w3dblib.dll idw
+wah.wav idw
+wait.exe dump
+walk.exe idw
+water.wav idw
+wc.exe idw
+wcshdr.exe idw
+weave.bmp idw
+whales.wav idw
+whatis.exe idw
+where.exe idw
+winapps.grp idw
+winat.exe idw
+winat.hlp idw
+winbez.exe idw
+winclip.dll idw
+winmsdp.exe idw
+winobj.exe idw
+winraid.exe idw
+winschk.exe idw
+winscl.exe idw
+winsdrv.exe idw
+winstst.exe idw
+winvtp.exe idw
+wizard32.dll idw
+wnbstat.exe idw
+wow.grp idw
+wow16.grp idw
+ws.exe idw
+ws2hdr.exe idw
+wzmail.exe idw
+x42xxpcl.dll retail
+xdosnet.exe idw
+xenix32.dll idw
+xerox.exe idw
+ximail32.dll idw
+yapt.exe idw
+ync.exe idw
+z.exe idw
+zextens.dll idw
+patchdll.dll idw\setup
+setupupg.hiv idw\setup
+setupret.hiv idw\setup
+setup2p.hiv idw\setup
+setup4p.hiv idw\setup
+setup8p.hiv idw\setup
+setup16p.hiv idw\setup
+setup32p.hiv idw\setup
+tbomb30.hiv idw\setup
+tbomb60.hiv idw\setup
+tbomb90.hiv idw\setup
+tbomb120.hiv idw\setup
+unattend.txt retail
+update.exe idw\setup
+update.inf idw\setup
+abtou.exe mstools
+afdkd.dll mstools
+alphakd.exe mstools
+anm.exe mstools
+apf32cvt.exe mstools
+apf32dmp.exe mstools
+as0.exe mstools
+as1.exe mstools
+asaxp.exe mstools
+asaxp.hlp mstools
+c1.err mstools
+c1.exe mstools
+c1xx.exe mstools
+c2.exe mstools
+c23.err mstools
+c3.dll mstools
+cap.dll mstools
+capdump.exe mstools
+capsetup.exe mstools
+cc.exe mstools
+cfe.exe mstools
+cl.err mstools
+cl.exe mstools
+cl.hlp mstools
+cl32.msg mstools
+cl32.msg mstools
+claxp.exe mstools
+claxp.txt mstools
+cmidl.exe mstools
+compress.exe mstools
+contents.exe mstools
+contents.hlp mstools
+contents.ini mstools
+cor.exe mstools
+cpp.exe mstools
+cputherm.exe mstools
+cvdump.exe mstools
+cvpack.err mstools
+cvpack.exe mstools
+cvtomf.exe mstools
+cvtres.err mstools
+cvtres.exe mstools
+dbi.dll mstools
+ddespy.exe mstools
+ddicnvrt.exe mstools
+ddictl.exe mstools
+ddk.hdx mstools
+ddk.hlp mstools
+ddk.ind mstools
+debug.hlp mstools
+dflayout.dll mstools
+dflayout.exe mstools
+dfskd.dll mstools
+dfview.exe mstools
+dhcp.mib mstools
+dlgedit.exe mstools
+dlgedit.hlp mstools
+dm.dll mstools
+dm32s.dll mstools
+dmkdalp.dll mstools
+dmkdmip.dll mstools
+dmkdppc.dll mstools
+dmkdx86.dll mstools
+dobjview.exe mstools
+drivers.exe mstools
+drvlog.dll mstools
+dsysmidl.exe mstools
+edithlp.hlp mstools
+eecxxalp.dll mstools
+eecxxmip.dll mstools
+eecxxppc.dll mstools
+eecxxx86.dll mstools
+emalp.dll mstools
+emmip.dll mstools
+emppc.dll mstools
+emx86.dll mstools
+err.cc mstools
+errors.hlp mstools
+fastimer.exe mstools
+fernel32.dll mstools
+filter.dll mstools
+fontedit.exe mstools
+fontedit.hlp mstools
+ftp.mib mstools
+gdikdx.dll mstools
+ttkdx.dll mstools
+getstart.hlp mstools
+gopherd.mib mstools
+gutils.dll mstools
+hc.bat mstools
+hc30.exe mstools
+hc31.err mstools
+hc31.exe mstools
+hcrtf.exe mstools
+hcw.exe mstools
+hdxdll.dll mstools
+hook.dll mstools
+http.mib mstools
+hwdll.dll mstools
+i386kd.exe mstools
+imagedit.exe mstools
+imagedit.hlp mstools
+inetsrv.mib mstools
+instrapi.dll mstools
+irotview.exe mstools
+isnext.dll mstools
+iviewers.dll mstools
+justify.dll mstools
+kdextalp.dll mstools
+kdextmip.dll mstools
+kdextppc.dll mstools
+kdexts.dll mstools
+kdextx86.dll mstools
+lib.exe mstools
+lib.hlp mstools
+lib32.exe mstools
+lineedit.dll mstools
+link.err mstools
+link.exe mstools
+link.hlp mstools
+link32.exe mstools
+lmmib2.mib mstools
+logger32 mstools
+lookmon.exe mstools
+makeani.exe mstools
+mapsym.exe mstools
+masm386.exe mstools
+mc.exe mstools
+mc.hlp mstools
+mcl.exe mstools
+mep.exe mstools
+mep.hlp mstools
+mhelp.dll mstools
+mib_ii.mib mstools
+mibcc.exe mstools
+midl.exe mstools
+mip2coff.exe mstools
+mipskd.exe mstools
+mkheader.exe mstools
+mktlib34.exe mstools
+mktyplib.exe mstools
+ml.err mstools
+ml.exe mstools
+mlink32.exe mstools
+mrbc.exe mstools
+msas0.exe mstools
+msas1.exe mstools
+msc.hlp mstools
+msdis.exe mstools
+mshelp.dll mstools
+mspdb40.dll mstools
+mspdb41.dll mstools
+mstest.hlp mstools
+msu.exe mstools
+msugen.exe mstools
+msumerge.exe mstools
+msuopt.exe mstools
+msvcbook.dll mstools
+mupkd.dll mstools
+nmake.err mstools
+nmake.exe mstools
+nmake.hlp mstools
+ntdetect.chk mstools
+ofskd.dll mstools
+ole.hdx mstools
+ole.hlp mstools
+ole.ind mstools
+ole2ui.hlp mstools
+oletools.hlp mstools
+oleview.exe mstools
+opengl.hdx mstools
+opengl.hlp mstools
+opengl.ind mstools
+pas.exe mstools
+passfilt.dll retail
+perfmtr.exe mstools
+pfmon.exe mstools
+pmatch.dll mstools
+pmon.exe mstools
+poolmon.exe mstools
+ppckd.exe mstools
+profile.exe mstools
+psapi.dll mstools
+pstat.exe mstools
+pt.hdx mstools
+pt.hlp mstools
+pt.ind mstools
+pview.exe mstools
+pviewer.exe mstools
+rc.exe mstools
+rc.hlp mstools
+rcdll.dll mstools
+rdrkd.dll mstools
+rdr2kd.dll mstools
+rebase.exe mstools
+register.exe mstools
+regtlb.exe mstools
+rlman.exe mstools
+rm.exe mstools
+rpc.hdx mstools
+rpc.hlp mstools
+rpc.ind mstools
+samples.hlp mstools
+sc.exe mstools
+sct.hdx mstools
+sct.hlp mstools
+sct.ind mstools
+sde.dll mstools
+sdkddk.grp mstools
+set.hdx mstools
+set.hlp mstools
+set.ind mstools
+shcv.dll mstools
+shed.exe mstools
+shed.hlp mstools
+smashlck.exe mstools
+smbtrace.exe mstools
+smi.mib mstools
+soc.hdx mstools
+soc.hlp mstools
+soc.ind mstools
+spy.exe mstools
+srvkd.dll mstools
+symcvt.dll mstools
+symedit.exe mstools
+testctrl.dll mstools
+testdlgs.dll mstools
+testdlgs.exe mstools
+testdrvr.exe mstools
+testevnt.dll mstools
+testscrn.dll mstools
+testscrn.exe mstools
+testview.dll mstools
+testvw32.dll mstools
+tglcase.dll mstools
+thunk.exe mstools
+tlloc.dll mstools
+tlpipe.dll mstools
+tlser.dll mstools
+tlser32.dll mstools
+tlser32s.dll mstools
+tools.hdx mstools
+tools.hlp mstools
+tools.hlp mstools
+tools.ind mstools
+top.exe mstools
+ugen.exe mstools
+ulcase.dll mstools
+undel.exe mstools
+undname.exe mstools
+unregtlb.exe mstools
+uopt.exe mstools
+upas.exe mstools
+userkdx.dll mstools
+uuidgen.exe mstools
+vadump.exe mstools
+vdmperf.exe mstools
+verfix.exe mstools
+vfw.hdx mstools
+vfw.hlp mstools
+vfw.ind mstools
+vidcap32.exe mstools
+wdbg32s.exe mstools
+win32.hdx mstools
+win32.hlp mstools
+win32.ind mstools
+win32api.dat mstools
+windbg.exe mstools
+windbg.hlp mstools
+windbgrm.exe mstools
+windiff.exe mstools
+windiff.hlp mstools
+wins.mib mstools
+winsock.hlp mstools
+wperf.exe mstools
+ws1.dll mstools
+wst.dll mstools
+wstcat.exe mstools
+wstdump.exe mstools
+wstune.exe mstools
+zdi32.dll mstools
+zdvapi32.dll mstools
+zernel32.dll mstools
+zinsrv.dll mstools
+zle32.dll mstools
+zoomin.exe mstools
+zrtdll.dll mstools
+zser32.dll mstools
+zwapi.exe mstools
+canon10e.dll printer
+canon130.dll printer
+drivers.ini printer
+execjet.dll printer
+toshiba.dll printer
+ab.dll system
+acmcps32.dll system
+backupa.hlp system
+basertl.dll system
+big5.nls system
+bowsvc.dll system
+c_10001.nls system
+c_10002.nls system
+c_10003.nls system
+c_10004.nls system
+c_10005.nls system
+c_10008.nls system
+c_1361.nls system
+c_29001.nls system
+c_708.nls system
+c_720.nls system
+c_862.nls system
+c_864.nls system
+c_874.nls system
+c_932.nls system
+c_936.nls system
+c_949.nls system
+c_950.nls system
+cairocpl.dll system
+cal.dll system
+calendar.exe system
+calendar.hlp system
+carton.exe system
+cdbmpctl.dll system
+cdforms.tlb system
+cdloghrs.dll system
+cfg3270.dll system
+cfm30d.dll system
+cfm30ud.dll system
+cfmo30d.dll system
+cfmo30ud.dll system
+cfmtn30.dll system
+cfmtn30d.dll system
+cfmtno30.dll system
+cfmtno3d.dll system
+cleanup.exe system
+clipbook.exe system
+clipbrda.hlp system
+clock.dll system
+clocksch.dll system
+comm.sym system
+commdlg.map system
+commdlg.sym system
+commnot.dll system
+compob32.dll system
+control2.exe system
+control2.exe system
+controla.hlp system
+cpdskadm.dll system
+cpo.dll system
+cpprint.dll system
+cpsetup.exe system
+cpsrv.exe system
+cpsrvcs.dll system
+cpups.dll system
+credini.exe system
+devapps.cpl system
+ctl3d32.dll system
+ctl3dv2.map system
+ctl3dv2.sym system
+cursor.seq system
+dahard.dll system
+ddeml.map system
+ddeml.sym system
+demilayr.dll system
+desk.dll system
+desktop.exe system
+dfsmsgs.dll system
+diskman.hlp system
+display.inf system
+display.inf system
+dlc3270.dll system
+dosx.map system
+dosx.sym system
+drwatson.map system
+drwatson.sym system
+dscont.dll system
+dsktoobj.exe system
+elfapi.dll system
+evntvwra.hlp system
+explsrv.exe system
+fole2ui.dll system
+formidbl.dll system
+formtool.exe system
+framewrk.dll system
+ftphelp.dll system
+gdi.map system
+gdi.sym system
+gdiexts.dll system
+group_ui.dll system
+grptoobj.exe system
+hyprwrit.exe system
+impexp.dll system
+init_tdi.exe system
+initial.inf system
+intro.seq system
+ipinfor.inf system
+job.dll system
+kb_msl.hlp system
+keyboard.map system
+keyboard.sym system
+killora.exe system
+krnl386.map system
+krnl386.sym system
+krnl386.sys system
+ksc.nls system
+label.rsp retail
+lastwins.dll system
+layedit.exe system
+layrdisp.dll system
+ldrdll.dll system
+lmmon.dll system
+lmspool.dll system
+lmsvcs.exe system
+loader.exe system
+locate.exe system
+lsaudll.dll system
+lt200msg.dll system
+ltype.ttf system
+mailmgr.dll system
+mailspl.exe system
+mciole16.map system
+mciole16.sym system
+mcsxnsvc.exe system
+mfcuia32.dll system
+mfcuiw32.dll system
+mkvolume.exe system
+mmsystem.map system
+mmsystem.sym system
+mmtask.map system
+mmtask.sym system
+mouse.inf system
+mouse.map system
+mouse.sym system
+mprmain.dll system
+msacm.sym system
+msherc.com system
+msmail.exe system
+msmail.hlp system
+msp32_br.lex system
+msp32_da.lex system
+msp32_es.lex system
+msp32_fi.lex system
+msp32_fr.lex system
+msp32_ge.lex system
+msp32_it.lex system
+msp32_nb.lex system
+msp32_nl.lex system
+msp32_pb.lex system
+msp32_sw.lex system
+mspelf32.dll system
+msremind.exe system
+mssched.dll system
+mssfs.dll system
+mstools.inf system
+mvopl3.dll system
+mvopl3.pat system
+ncpa.hlp system
+nddeexts.dll system
+ninstall.exe system
+noise.ptb system
+noise.ptg system
+ntcmdsa.hlp system
+ntdos.map system
+ntdos.sym system
+ntio.sym system
+ntsd.exe system
+ntsdexts.dll system
+nwlnkcf1.dll system
+nwlnkcfg.dll system
+nwlnkmsg.dll system
+nwlnksvc.exe system
+nwnblink.dll system
+nwnblink.exe system
+nwsvc.exe system
+oemndrdt.inf system
+oemndrdt.inf system
+oemnsvrc.inf system
+oemnsvre.inf system
+oemnxpi1.inf system
+oemnxpi1.inf system
+oemnxpxn.inf system
+oemsetup.inf system
+ofs.tlb system
+ofsaconv.exe system
+ogldrv.dll system
+ole232.dll system
+ole2pr32.dll system
+olecli.sym system
+olecli.map system
+oleexts.dll system
+oleprx32.dll system
+olesvr.map system
+olesvr.sym system
+os2dll.dll system
+pabnsp.dll system
+package.dll system
+partial.inf system
+passgen.exe system
+pdf.dll system
+pdfpage.dll system
+perfmetr.exe system
+perfmona.hlp system
+pifedita.hlp system
+pkgpages.dll system
+popup.dll system
+port.dll system
+ports.dll system
+pps.hlp system
+prc.nls system
+prcp.nls system
+prictl.cpl system
+printers.ini system
+printmna.hlp system
+progmana.hlp system
+propset.dll system
+prvmgmt.tlb system
+pslanman.sep system
+rasapi16.map system
+rasapi16.sym system
+rcmd.exe system
+rcmdsvc.exe system
+regeda32.hlp system
+remlabel.cmd retail
+repair.inf system
+replcfg.exe system
+reprtreg.exe system
+rpcepmap.exe system
+rpcepmpr.exe system
+rpcltc4.dll system
+rtfdoc.dll system
+rtoolbar.dll system
+rtutils.dll idw
+scexts.dll system
+schdplus.exe system
+schdplus.hlp system
+schedmsg.dll system
+schemes.cpl system
+sendfile.dll system
+setupnta.hlp system
+sfmctrnm.h system
+sfmctrs.ini system
+sfmmgr.dll system
+shamu.dll system
+shdebug.dll system
+shell.sym system
+shrapp.dll system
+shsample.dll system
+sna3270.dll system
+sndsys.pat system
+sound.map system
+sound.sym system
+spincube.dll system
+splexts.dll system
+storag32.dll system
+store.dll system
+sys003.dll system
+sysman.tlb system
+system.dll system
+system.map system
+system.sym system
+telnet.dll system
+tenet.exe system
+timedate.cpl system
+timer.map system
+timer.sym system
+tlib34.dll system
+toolhelp.map system
+toolhelp.sym system
+topview.exe system
+tray.exe system
+trc3270.dll system
+trnsched.dll system
+ubnbmsg.dll system
+ubnbsvc.exe system
+uhpfs.dll system
+user.map system
+user.sym system
+userconv.cnt system
+userexts.dll system
+vaen232.dll system
+vaen232.olb system
+vba232.dll system
+vbs.tlb system
+vbscript.exe system
+vdmexts.dll system
+vforms.dll system
+vga.map system
+vga.sym system
+virtual.inf system
+wdvga.dll system
+webcore.dll system
+wfwnet.map system
+wfwnet.sym system
+wgpomgr.dll system
+win3270.exe system
+win3270.hlp system
+winbug.dat system
+winbug.exe system
+winbug.hlp system
+winbug10.dll system
+windows.cnt system
+winfilea.hlp system
+winipcfg.exe system
+winnt_as.hlp system
+winnt_as.ind system
+winoldap.sym system
+winole.tlb system
+winperf.exe system
+winreg.dll system
+winsock.map system
+winsock.sym system
+winspool.map system
+winspool.sym system
+winsrpcb.dll system
+winsrvk.dll system
+wntupmgr.cnt system
+wowdeb.map system
+wowdeb.sym system
+wowexec.map system
+wowexec.sym system
+write16.exe system
+write16.map system
+write16.sym system
+wshnwlnk.dll system
+wshxns.dll system
+xjis.nls system
+xnscfg.dll system
+xnsmsg.dll system
+basic.dll inetsrv
+control.ini inetsrv
+iexplore.exe retail
+iexplore.cnt retail
+iexplore.hlp retail
+iexplore.inf retail
+iexplore.ini inetsrv
+flock.bmp inetsrv
+fscfg.dll inetsrv
+catscfg.dll inetsrv
+ftpctrs.h inetsrv
+ftpctrs.ini inetsrv
+ftpctrs2.dll inetsrv
+ftpmib.dll inetsrv
+ftpsapi2.dll inetsrv
+ftpsvc2.dll inetsrv
+gateway.dll inetsrv
+gdapi.dll inetsrv
+gdctrs.dll inetsrv
+gdctrs.h inetsrv
+gdctrs.ini inetsrv
+gdmib.dll inetsrv
+gdspace.dll inetsrv
+gopherd.dll inetsrv
+gscfg.dll inetsrv
+httpmib.dll inetsrv
+httpodbc.dll inetsrv
+inetaccs.exe inetsrv
+inetinfo.exe inetsrv
+inetasrv.dll inetsrv
+infoctrs.dll inetsrv
+infoctrs.h inetsrv
+infoctrs.ini inetsrv
+accsctrs.dll inetsrv
+accsctrs.h inetsrv
+accsctrs.ini inetsrv
+inetcpl.cpl retail
+inetmgr.exe inetsrv
+inetmib.bin inetsrv
+inetsloc.dll inetsrv
+inetstp.dll inetsrv
+inetins.exe retail
+inetstp.exe inetsrv
+inetstp.inf inetsrv
+odbc.inf inetsrv
+inetsvcs.dll inetsrv
+infocomm.dll inetsrv
+infoadmn.dll inetsrv
+accsadmn.dll inetsrv
+accscomm.dll inetsrv
+ipudll.dll inetsrv
+lmbeta.bmp inetsrv
+makeflat.cmd inetsrv
+msmail32.ini inetsrv
+newshell.cmd inetsrv
+progman.ini inetsrv
+registry.ini inetsrv
+schdpl32.ini inetsrv
+shupdate.cmd inetsrv
+shupsym.cmd inetsrv
+simple.dll inetsrv
+gdsset.exe inetsrv
+tcpip.ini inetsrv
+viewer.ini inetsrv
+viewera.ini inetsrv
+w3ctrs.dll inetsrv
+w3ctrs.h inetsrv
+w3ctrs.ini inetsrv
+w3scfg.dll inetsrv
+w3svapi.dll inetsrv
+w3svc.dll inetsrv
+setkey.exe inetsrv
+sspifilt.dll inetsrv
+applyinf.exe idw
+wininet.dll dump
+wininet.sym dump
+wininet.map dump
+cachevu.dll inetsrv
+basicsec.dll inetsrv
+urlmon.dll inetsrv
+url.dll retail
+js.dll inetsrv
+jscript.dll inetsrv
+msrating.dll inetsrv
+fechrcnv.dll inetsrv
+shdocvw.dll retail
+mshtml.dll inetsrv
+htmlctl.ocx inetsrv
+inetcpl.cpl inetsrv
+ieshstub.dll retail
+secbasic.dll retail
+secsspi.dll retail
+msnsspc.dll retail
+msnauth.cnt retail
+msnauth.hlp retail
+winntas.bmp inetsrv
+keygen.exe inetsrv
+convlog.exe inetsrv
+keyring.exe inetsrv
+w3key.dll inetsrv
+dsnform.exe inetsrv\scripts\tools
+getdrvrs.exe inetsrv\scripts\tools
+mkilog.exe inetsrv\scripts\tools
+newdsn.exe inetsrv\scripts\tools
+favlist.dll inetsrv\scripts\samples
+srch.dll inetsrv\scripts\samples
+volresp.dll inetsrv\scripts\samples
+ism.dll inetsrv\htmla
+schannel.dll retail
+
+;
+; Export Controlled Binaries should go here:
+;
+
+schnl128.dll noexport
+keygend.exe noexport
+ndiswand.sys noexport
+extag.exe idw
+
+;
+; Microsoft Proxy Server binaries.
+;
+
+w3proxy.dll retail
+w3pcache.dll retail
+mspsec.dll retail
+mspmon.dll retail
+w3pmib.dll retail
+w3papi.dll retail
+w3pcfg.dll retail
+ipudll.dll retail
+msplog.dll retail
+w3pinet.dll retail
+mkplog.exe retail
+mspip.dll retail
+
+cachctrs.h perfctrs
+cachctrs.ini perfctrs
+w3pctrs.h perfctrs
+w3pctrs.ini perfctrs
+w3p.mib perfctrs
+wsp.mib perfctrs
+
+rwsctrs.h dump
+rwsctrs.ini dump
+catsql.idc dump
+catsql.htx dump
+
+;
+; WinSock Proxy Server binaries
+;
+
+wspmsg.dll retail
+wspperf.dll retail
+rws32.dll retail
+rws.dll retail
+msphlpr.dll retail
+mspapi.dll retail
+wspapi.dll retail
+wspcfg.dll retail
+wspsrv.exe retail
+wspdiag.exe retail
+dialtool.exe retail
+wspperf.h retail
+wspperf.ini retail
+wspmib.dll retail
+latui.dll retail
+
+;
+; Microsoft Proxy Server - Setup binaries
+;
+
+setup1.exe retail
+stpext16.dll retail
+stpext32.dll retail
+setup1.exe retail
+stpsrvex.dll retail
+aux32_16.dll retail
+aux16.dll retail
+
+;
+; Microsoft Proxy Server - misc files
+;
+
+dnstest.exe misc
+
+
+;
+; Index Server (Tripoli) ISAPI binaries
+;
+
+cidaemon.exe query
+cistp.dll query
+htmlfilt.dll query
+idq.dll query
+infosoft.dll query
+isadmin.url query
+isdoc.url query
+isquery.url query
+nlgwbrkr.dll query
+kppp.dll query
+kppp7.dll query
+kpw6.dll query
+kpword.dll query
+kpxl5.dll query
+qperf.dll query
+query.dll query
+sccfa.dll query
+sccfi.dll query
+sccifilt.dll query
+sccut.dll query
+setupci.inf query
+
+webhits.inf query\webhits
+webhits.exe query\webhits
+queryhit.htm query\webhits\sample
+queryhit.htx query\webhits\sample
+
+ciperfm.h query\perf
+filtperf.h query\perf
+perfci.ini query\perf
+perffilt.ini query\perf
+perfwci.h query\perf
+perfwci.ini query\perf
+
+noise.dat query\lang
+noise.deu query\lang
+noise.eng query\lang
+noise.enu query\lang
+noise.esn query\lang
+noise.fra query\lang
+noise.ita query\lang
+noise.nld query\lang
+noise.sve query\lang
+wbcache.deu query\lang
+wbcache.eng query\lang
+wbcache.enu query\lang
+wbcache.esn query\lang
+wbcache.fra query\lang
+wbcache.ita query\lang
+wbcache.nld query\lang
+wbcache.sve query\lang
+wbdbase.deu query\lang
+wbdbase.eng query\lang
+wbdbase.enu query\lang
+wbdbase.esn query\lang
+wbdbase.fra query\lang
+wbdbase.ita query\lang
+wbdbase.nld query\lang
+wbdbase.sve query\lang
+
+admin.htm query\sample
+admin.htx query\sample
+admin.ida query\sample
+admin.idq query\sample
+author.htm query\sample
+author.idq query\sample
+bestwith.gif query\sample
+book08.jpg query\sample
+32x_book.jpg query\sample
+64x_book.jpg query\sample
+deferror.htx query\sample
+detail1.htx query\sample
+detail2.htx query\sample
+detail3.htx query\sample
+detail4.htx query\sample
+disclaim.htm query\sample
+filesize.htm query\sample
+filetime.htm query\sample
+filesize.idq query\sample
+filetime.idq query\sample
+format1.htx query\sample
+format2.htx query\sample
+format3.htx query\sample
+format4.htx query\sample
+head.htx query\sample
+hidden.htx query\sample
+hquery.htx query\sample
+hquery.idq query\sample
+htxerror.htx query\sample
+idqerror.htx query\sample
+merge.ida query\sample
+next.htx query\sample
+powrbybo.gif query\sample
+prev.htx query\sample
+query.htm query\sample
+query.htx query\sample
+query.idq query\sample
+reserror.htx query\sample
+scan.ida query\sample
+scan.idq query\sample
+scan.htx query\sample
+sformat1.htx query\sample
+sformat2.htx query\sample
+sformat3.htx query\sample
+sformat4.htx query\sample
+shead.htx query\sample
+simple.idq query\sample
+state.htx query\sample
+state.ida query\sample
+snext.htx query\sample
+stail.htx query\sample
+tail.htx query\sample
+unfilt.idq query\sample
+unfilt.htx query\sample
+
+adminhlp.htm query\help
+active2.gif query\help
+active6.gif query\help
+active7.gif query\help
+bullet.gif query\help
+cathlp.htm query\help
+cibgrnd.gif query\help
+default.htm query\help
+errhandl.htm query\help
+errorhlp.htm query\help
+faq.htm query\help
+filtrhlp.htm query\help
+glossary.htm query\help
+htxhelp.htm query\help
+idq-vars.htm query\help
+idqhelp.htm query\help
+indexhlp.htm query\help
+install.htm query\help
+intro.htm query\help
+intro1.gif query\help
+intro2.gif query\help
+license.htm query\help
+qrylang.htm query\help
+queryhlp.htm query\help
+reghelp.htm query\help
+scanhlp.htm query\help
+sechelp.htm query\help
+srchbug.txt query\help
+
+
+;
+; Wx86 binaries
+;
+wx86.dll retail
+wx86cpu.dll retail
+wicrtdll.dll retail
+wivcrt.dll retail
+wivcrt20.dll retail
+wivcrt40.dll retail
+wivcirt.dll retail
+wimfc40.dll retail
+wimfc40u.dll retail
+wimfc42.dll retail
+wimfc42u.dll retail
+wictl3d.dll retail
+wioleaut.dll retail
+wistd32.tlb retail
+wimsjt30.dll retail
+wiodbcjt.dll retail
+wiolecli.dll retail
+wiolesvr.dll retail
+wiwmsui.dll retail
+whadv32.dll retail
+whcctl32.dll retail
+whcdlg32.dll retail
+whddeapi.dll retail
+whgdi32.dll retail
+whkrnl32.dll retail
+whlz32.dll retail
+whmpr.dll retail
+whntdll.dll retail
+whole32.dll retail
+wholedlg.dll retail
+whopengl.dll retail
+whshll32.dll retail
+whsock32.dll retail
+whuser32.dll retail
+whversn.dll retail
+whVFW32.dll retail
+whwinmm.dll retail
+whwspool.dll retail
+wiadv32.dll retail
+wicctl32.dll retail
+wicdlg32.dll retail
+widdeapi.dll retail
+wigdi32.dll retail
+wikrnl32.dll retail
+wilz32.dll retail
+wimpr.dll retail
+wintdll.dll retail
+wiole32.dll retail
+wioledlg.dll retail
+wiopengl.dll retail
+wishll32.dll retail
+wisock32.dll retail
+wiuser32.dll retail
+wiversn.dll retail
+wivfw32.dll retail
+wiwinmm.dll retail
+wiwspool.dll retail
+wiglu32.dll retail
+whglu32.dll retail
+wiws2_32.dll retail
+whws2_32.dll retail
+wiimghlp.dll retail
+whimghlp.dll retail
+wiacm32.dll retail
+whacm32.dll retail
+winetapi.dll retail
+whnetapi.dll retail
+wiwhlp32.exe retail
+wiregedt.exe retail
+wiftsrch.dll retail
+whftsrch.dll retail
+wirpcrt4.dll retail
+whrpcrt4.dll retail
+wirpcns4.dll retail
+whrpcns4.dll retail
+wiavifil.dll retail
+whavifil.dll retail
+wiavicap.dll retail
+whavicap.dll retail
+wisetupa.dll retail
+wicfgmgr.dll retail
+widdraw.dll retail
+whddraw.dll retail
+widplay.dll retail
+whdplay.dll retail
+widsnd.dll retail
+whdsnd.dll retail
+witapi32.dll retail
+whtapi32.dll retail
+wirasapi.dll retail
+whrasapi.dll retail
+wirasdlg.dll retail
+whrasdlg.dll retail
+wirassap.dll retail
+whrassap.dll retail
+wimsafd.dll retail
+whmsafd.dll retail
+wimssock.dll retail
+whmssock.dll retail
+wimapi32.dll retail
+whmapi32.dll retail
+instWx86.exe retail
+readwx86.txt retail
+wx86.inf retail
+wx86e.dll system
+
+wordpad.cnt retail
+wordpad.exe retail
+wordpad.hlp retail
+wordpad.inf retail
+welcome.exe retail
+write32.wpc retail
+
+ansi.trn retail
+german.trn retail
+iso88591.trn retail
+norweg.trn retail
+swedish.trn retail
+usascii.trn retail
+
+;
+; fax binaries
+;
+
+faxdrv.dll fax
+faxmon.dll fax
+faxcfg.cpl fax
+faxcfg.dll fax
+faxcfg.exe fax
+faxrend.dll fax
+faxsend.exe fax
+faxsetup.exe fax
+faxsvc.exe fax
+faxt30.dll fax
+faxui.dll fax
+faxwiz.dll fax
+faxcover.exe fax
+tiffdump.exe fax
+tiffview.exe fax
+winfax.dll fax
+confdent.cov fax
+fyi.cov fax
+generic.cov fax
+urgent.cov fax
+basenote.cov fax
+faxsetup.inf fax
+faxclean.exe fax
+faxcover.hlp fax
+faxcover.cnt fax
+
+
+;
+; Pinball binaries
+;
+
+PINBALL.EXE retail
+PINBALL.HLP retail
+PINBALL.CNT retail
+TABLE.BMP retail
+FONT.DAT retail
+PINBALL.DAT retail
+PINBALL.HLP retail
+PINBALL.MID retail
+PINBALL2.MID retail
+SOUND1.WAV retail
+SOUND104.WAV retail
+SOUND105.WAV retail
+SOUND108.WAV retail
+SOUND111.WAV retail
+SOUND112.WAV retail
+SOUND12.WAV retail
+SOUND13.WAV retail
+SOUND131.WAV retail
+SOUND136.WAV retail
+SOUND14.WAV retail
+SOUND16.WAV retail
+SOUND17.WAV retail
+SOUND18.WAV retail
+SOUND181.WAV retail
+SOUND19.WAV retail
+SOUND20.WAV retail
+SOUND21.WAV retail
+SOUND22.WAV retail
+SOUND24.WAV retail
+SOUND240.WAV retail
+SOUND243.WAV retail
+SOUND25.WAV retail
+SOUND26.WAV retail
+SOUND27.WAV retail
+SOUND28.WAV retail
+SOUND29.WAV retail
+SOUND3.WAV retail
+SOUND30.WAV retail
+SOUND34.WAV retail
+SOUND35.WAV retail
+SOUND36.WAV retail
+SOUND38.WAV retail
+SOUND39.WAV retail
+SOUND4.WAV retail
+SOUND42.WAV retail
+SOUND43.WAV retail
+SOUND45.WAV retail
+SOUND49.WAV retail
+SOUND49D.WAV retail
+SOUND5.WAV retail
+SOUND50.WAV retail
+SOUND528.WAV retail
+SOUND53.WAV retail
+SOUND54.WAV retail
+SOUND55.WAV retail
+SOUND560.WAV retail
+SOUND563.WAV retail
+SOUND57.WAV retail
+SOUND58.WAV retail
+SOUND6.WAV retail
+SOUND65.WAV retail
+SOUND68.WAV retail
+SOUND7.WAV retail
+SOUND713.WAV retail
+SOUND735.WAV retail
+SOUND8.WAV retail
+SOUND827.WAV retail
+SOUND9.WAV retail
+SOUND999.WAV retail
+wavemix.inf retail
+pinball.inf retail
+
+
+;
+; wang image viewer binaries
+;
+
+gotodlg.frm retail
+imagevue.inf retail
+imgadmin.ocx retail
+imgedit.ocx retail
+imgsamp.frm retail
+imgsampl.vbp retail
+imgscan.ocx retail
+imgthumb.ocx retail
+jpeg1x32.dll retail
+jpeg2x32.dll retail
+oiadm400.dll retail
+oicom400.dll retail
+oidis400.dll retail
+oifil400.dll retail
+oigfs400.dll retail
+oiprt400.dll retail
+oislb400.dll retail
+oissq400.dll retail
+oitwa400.dll retail
+oiui400.dll retail
+wangcmn.dll retail
+wangimg.cnt retail
+wangimg.exe retail
+wangimg.hlp retail
+wangocx.cnt retail
+wangocx.hlp retail
+wangocxd.cnt retail
+wangocxd.hlp retail
+wangshl.cnt retail
+wangshl.dll retail
+wangshl.hlp retail
+xfilexr.dll retail
+
+;
+; System Policy Editor binaries
+;
+
+common.adm retail
+winnt.adm retail
+windows.adm retail
+poledit.exe retail
+polsetup.exe retail
+poledit.hlp retail
+poledit.cnt retail
+
+
+;
+; Multimedia files
+;
+mssound.wav retail
+logon.wav retail
+logoff.wav retail
+jungleas.wav retail
+junglecl.wav retail
+junglecr.wav retail
+junglede.wav retail
+jungleer.wav retail
+jungleex.wav retail
+junglema.wav retail
+jungleme.wav retail
+junglemi.wav retail
+jungleop.wav retail
+junglequ.wav retail
+junglere.wav retail
+junglewi.wav retail
+jungle~1.wav retail
+jungle~2.wav retail
+jungle~3.wav retail
+jungle~4.wav retail
+musicaas.wav retail
+musicacl.wav retail
+musicacr.wav retail
+musicade.wav retail
+musicaer.wav retail
+musicaex.wav retail
+musicama.wav retail
+musicame.wav retail
+musicami.wav retail
+musicaop.wav retail
+musicaqu.wav retail
+musicare.wav retail
+musicawi.wav retail
+musica~1.wav retail
+musica~2.wav retail
+musica~3.wav retail
+musica~4.wav retail
+robotzas.wav retail
+robotzcl.wav retail
+robotzcr.wav retail
+robotzde.wav retail
+robotzer.wav retail
+robotzex.wav retail
+robotzma.wav retail
+robotzme.wav retail
+robotzmi.wav retail
+robotzop.wav retail
+robotzqu.wav retail
+robotzre.wav retail
+robotzwi.wav retail
+robotz~1.wav retail
+robotz~2.wav retail
+robotz~3.wav retail
+robotz~4.wav retail
+utopiaas.wav retail
+utopiacl.wav retail
+utopiacr.wav retail
+utopiade.wav retail
+utopiaer.wav retail
+utopiaex.wav retail
+utopiama.wav retail
+utopiame.wav retail
+utopiami.wav retail
+utopiaop.wav retail
+utopiaqu.wav retail
+utopiare.wav retail
+utopiawi.wav retail
+utopia~1.wav retail
+utopia~2.wav retail
+utopia~3.wav retail
+utopia~4.wav retail
+bachsb~1.rmi retail
+beetho~2.rmi retail
+claire~1.rmi retail
+danceo~2.rmi retail
+fureli~1.rmi retail
+hallof~2.rmi retail
+mozart~2.rmi retail
+
+;
+; Document Template files
+;
+
+amipro.sam retail
+excel.xls retail
+excel4.xls retail
+lotus.wk4 retail
+powerpnt.ppt retail
+presenta.shw retail
+quattro.wb2 retail
+winword.doc retail
+winword2.doc retail
+wordpfct.wpd retail
+wordpfct.wpg retail
+
+;
+; Desktop Wallpapers
+;
+
+blueday.bmp retail
+blulac16.bmp retail
+blumon16.bmp retail
+bubbles.bmp retail
+coffee16.bmp retail
+coffeebn.bmp retail
+feather.bmp retail
+fidlhead.bmp retail
+furry16.bmp retail
+furrydog.bmp retail
+geometrx.bmp retail
+gonefish.bmp retail
+grnstone.bmp retail
+hazy16.bmp retail
+hikingbt.bmp retail
+leaves16.bmp retail
+lether16.bmp retail
+mpltrail.bmp retail
+pglyph16.bmp retail
+pool.bmp retail
+prairie.bmp retail
+rhody.bmp retail
+rvrsumid.bmp retail
+santafe.bmp retail
+seaside.bmp retail
+seside16.bmp retail
+snakeskn.bmp retail
+solstice.bmp retail
+upstrm16.bmp retail
+zapotec.bmp retail
+zaptec16.bmp retail
+
+;
+; PostScript printer description (PPD) files
+;
+
+40291730.ppd retail
+40293930.ppd retail
+a_pnt518.ppd retail
+agac0800.ppd retail
+agac1000.ppd retail
+agac1500.ppd retail
+agaccsf1.ppd retail
+agaccst1.ppd retail
+agelan50.ppd retail
+agp94sf1.ppd retail
+agp95sf1.ppd retail
+agp96sf1.ppd retail
+agp97sf1.ppd retail
+agp98sf1.ppd retail
+agpr9400.ppd retail
+agpr9550.ppd retail
+agpr9551.ppd retail
+agpr9800.ppd retail
+agpr9836.ppd retail
+agpro941.ppd retail
+agpro971.ppd retail
+agpro981.ppd retail
+agprs961.ppd retail
+agsels51.ppd retail
+agsels71.ppd retail
+agsl5sf1.ppd retail
+agsl7sf1.ppd retail
+agss5000.ppd retail
+agss7000.ppd retail
+agssav20.ppd retail
+agssav25.ppd retail
+agssav36.ppd retail
+agssav44.ppd retail
+agstds21.ppd retail
+aljii523.ppd retail
+ap_ntxj1.ppd retail
+aplw8101.ppd retail
+aplwcob1.ppd retail
+aplwgri2.ppd retail
+aplwiif1.ppd retail
+aplwiig1.ppd retail
+aplwntr1.ppd retail
+aplwsel.ppd retail
+apple230.ppd retail
+apple380.ppd retail
+apple422.ppd retail
+aps08522.ppd retail
+aps12522.ppd retail
+aps26522.ppd retail
+aps80522.ppd retail
+aptolld1.ppd retail
+aptollw1.ppd retail
+ast__470.ppd retail
+cn_500_1.ppd retail
+cn_500j1.ppd retail
+cnlbp4_1.ppd retail
+cnlbp8_1.ppd retail
+cnlbp8r1.ppd retail
+cnlbp8t1.ppd retail
+colorq.ppd retail
+cppmq151.ppd retail
+cppmq201.ppd retail
+dc1152_1.ppd retail
+dc1152f1.ppd retail
+dc2150p1.ppd retail
+dc2250p1.ppd retail
+dc3500_1.ppd retail
+dc5100n1.ppd retail
+dcd11501.ppd retail
+dcd21501.ppd retail
+dcd22501.ppd retail
+dckps201.ppd retail
+dckps321.ppd retail
+dckps401.ppd retail
+dclf02_1.ppd retail
+dclf02f1.ppd retail
+dcln03r1.ppd retail
+dclps171.ppd retail
+dclps201.ppd retail
+dclps321.ppd retail
+dclps401.ppd retail
+dcps1721.ppd retail
+dcps1761.ppd retail
+dctps201.ppd retail
+dec3250.ppd retail
+deccolor.ppd retail
+dp4ty161.ppd retail
+dp4ty201.ppd retail
+dp4typ81.ppd retail
+dpl15804.ppd retail
+dpl20804.ppd retail
+ep826051.ppd retail
+epl3kf21.ppd retail
+epl3kf51.ppd retail
+epl75523.ppd retail
+f71rx503.ppd retail
+gcbl4921.ppd retail
+gcbl5141.ppd retail
+gcblp2_1.ppd retail
+gcblp2s1.ppd retail
+gcblpel1.ppd retail
+gcctone2.ppd retail
+gcelt6_2.ppd retail
+gcsp12_3.ppd retail
+gcsp6_3.ppd retail
+gdgl8001.ppd retail
+hermes_1.ppd retail
+hermes_2.ppd retail
+hp_650c2.ppd retail
+hp1200c1.ppd retail
+hp1600c1.ppd retail
+hp3si523.ppd retail
+hp4m3_v1.ppd retail
+hp4m6_v1.ppd retail
+hp4ml_v1.ppd retail
+hp4mp3_1.ppd retail
+hp4mp6_1.ppd retail
+hp4plus3.ppd retail
+hp4plus6.ppd retail
+hp4si3_1.ppd retail
+hp4si6_1.ppd retail
+hp755__1.ppd retail
+hp_3d522.ppd retail
+hp_3p522.ppd retail
+hp__clj1.ppd retail
+hpcopyj1.ppd retail
+hpiid522.ppd retail
+hpiii522.ppd retail
+hpiip522.ppd retail
+hplj__31.ppd retail
+hplj4mv1.ppd retail
+hplj5m_4.ppd retail
+hplj5p_1.ppd retail
+hplj5si1.ppd retail
+hplj_3d1.ppd retail
+hplj_3p1.ppd retail
+hppjxl31.ppd retail
+ibm17523.ppd retail
+ibm20470.ppd retail
+ibm30505.ppd retail
+ibm31514.ppd retail
+ibm39523.ppd retail
+ibm4039.ppd retail
+ibm4039p.ppd retail
+ibm4079.ppd retail
+jx9460ps.ppd retail
+jx9500ps.ppd retail
+jx9600ps.ppd retail
+jx9660ps.ppd retail
+jx9700ps.ppd retail
+kd8600p1.ppd retail
+kdcolor1.ppd retail
+l100_425.ppd retail
+l200_493.ppd retail
+l300_471.ppd retail
+l300_493.ppd retail
+l500_493.ppd retail
+lex4039p.ppd retail
+lex4079p.ppd retail
+lexoptra.ppd retail
+lh230__1.ppd retail
+lh260__1.ppd retail
+lh300__1.ppd retail
+lh330__1.ppd retail
+lh500__1.ppd retail
+lh530__1.ppd retail
+lh630__1.ppd retail
+lh830__1.ppd retail
+lh930__1.ppd retail
+lhherk_1.ppd retail
+lhpr60_1.ppd retail
+lhquas_1.ppd retail
+lminkjet.dll retail
+loptrac.ppd retail
+loptraep.ppd retail
+loptran.ppd retail
+loptrap.ppd retail
+lwnt_470.ppd retail
+lwntx470.ppd retail
+lwntx518.ppd retail
+moim1201.ppd retail
+mono_522.ppd retail
+mt_ti101.ppd retail
+n2090522.ppd retail
+n2290520.ppd retail
+n890_470.ppd retail
+n890x505.ppd retail
+nc95fax1.ppd retail
+nc97fax1.ppd retail
+nccps401.ppd retail
+nccps801.ppd retail
+ncol_519.ppd retail
+ncs29901.ppd retail
+ncsw_951.ppd retail
+o5241503.ppd retail
+o5242503.ppd retail
+ok801pf1.ppd retail
+ok_410e1.ppd retail
+okol8501.ppd retail
+okol8701.ppd retail
+ol830525.ppd retail
+ol840518.ppd retail
+oliv5000.ppd retail
+oliveti1.ppd retail
+oliveti2.ppd retail
+p4455514.ppd retail
+pap54001.ppd retail
+pap54101.ppd retail
+phiipx.ppd retail
+px.ppd retail
+q2200523.ppd retail
+q2210523.ppd retail
+q2220523.ppd retail
+q30si503.ppd retail
+q810t517.ppd retail
+q820_517.ppd retail
+q820t517.ppd retail
+q860pls2.ppd retail
+qcs10001.ppd retail
+qcs10002.ppd retail
+qcs10503.ppd retail
+qcs20503.ppd retail
+qcs30503.ppd retail
+qm1700_1.ppd retail
+qm2000_1.ppd retail
+qm815mr1.ppd retail
+qm825mr1.ppd retail
+qmps4104.ppd retail
+qmps8151.ppd retail
+qmps8251.ppd retail
+qms10602.ppd retail
+qms16602.ppd retail
+qms1660E.ppd retail
+qms1725.ppd retail
+qms2025.ppd retail
+qms2425.ppd retail
+qms3225.ppd retail
+qms3825.ppd retail
+qms420.ppd retail
+qms4525.ppd retail
+qms45252.ppd retail
+qms81470.ppd retail
+qms860.ppd retail
+qms8_461.ppd retail
+qms8p461.ppd retail
+qmscs210.ppd retail
+qmscs230.ppd retail
+qmscs494.ppd retail
+qmsj_461.ppd retail
+qmsjp461.ppd retail
+qmsmccx.ppd retail
+qmsmclx.ppd retail
+qmsmcpls.ppd retail
+qume_470.ppd retail
+r6000505.ppd retail
+s5232503.ppd retail
+s746j522.ppd retail
+seiko_04.ppd retail
+seiko_14.ppd retail
+sk820ru2.ppd retail
+sk830ru2.ppd retail
+sk835ru2.ppd retail
+skpsfcd1.ppd retail
+sx2iris1.ppd retail
+sx2psm21.ppd retail
+sx2psm22.ppd retail
+sx4psm21.ppd retail
+t1513470.ppd retail
+t1535470.ppd retail
+ti08_450.ppd retail
+ti15_470.ppd retail
+tim17521.ppd retail
+tim35521.ppd retail
+timl6231.ppd retail
+timlp231.ppd retail
+timlp232.ppd retail
+timlp233.ppd retail
+timlp651.ppd retail
+timlp652.ppd retail
+timlp671.ppd retail
+timlp672.ppd retail
+timp3231.ppd retail
+timpe231.ppd retail
+titrb161.ppd retail
+titrbo61.ppd retail
+titrbo91.ppd retail
+tix17521.ppd retail
+tix35521.ppd retail
+tk200172.ppd retail
+tk200392.ppd retail
+tk220171.ppd retail
+tk220391.ppd retail
+tk340171.ppd retail
+tk340691.ppd retail
+tkp200i2.ppd retail
+tkp200j1.ppd retail
+tkp220i1.ppd retail
+tkp220j1.ppd retail
+tkp2sdj1.ppd retail
+tkp2sdx1.ppd retail
+tkp300i1.ppd retail
+tkp300j1.ppd retail
+tkp480j1.ppd retail
+tkph1401.ppd retail
+tkph2sd1.ppd retail
+tkph4401.ppd retail
+tkph4801.ppd retail
+tkph5401.ppd retail
+tkphpxi1.ppd retail
+tkphz2j1.ppd retail
+tkphz3j1.ppd retail
+tkphzr21.ppd retail
+tkphzr22.ppd retail
+tkphzr31.ppd retail
+tkphzr32.ppd retail
+tkpxe171.ppd retail
+tkpxe391.ppd retail
+triumph1.ppd retail
+triumph2.ppd retail
+u1200xl4.ppd retail
+u1800pmr.ppd retail
+u1800xl.ppd retail
+u1800xlo.ppd retail
+u9415470.ppd retail
+uni17521.ppd retail
+uni39521.ppd retail
+v5334522.ppd retail
+vt42p522.ppd retail
+vt43p522.ppd retail
+vt4510a1.ppd retail
+vt4530a1.ppd retail
+vt4530b1.ppd retail
+vt4530c1.ppd retail
+vt4533a1.ppd retail
+vt4533b1.ppd retail
+vt4533c1.ppd retail
+vt453ea1.ppd retail
+vt453eb1.ppd retail
+vt453ec1.ppd retail
+vt4550a1.ppd retail
+vt4550b1.ppd retail
+vt4550c1.ppd retail
+vt4551a1.ppd retail
+vt4563a1.ppd retail
+vt4563b1.ppd retail
+vt4990_1.ppd retail
+vt4990t1.ppd retail
+vt4l3001.ppd retail
+vt4l3301.ppd retail
+vt4l5x01.ppd retail
+vt5100e1.ppd retail
+vt530522.ppd retail
+vt550522.ppd retail
+vt5510_1.ppd retail
+vt5660_1.ppd retail
+vt5860_1.ppd retail
+vt5960e1.ppd retail
+vt6000_1.ppd retail
+vt600p_1.ppd retail
+vt600w_1.ppd retail
+vt6990_1.ppd retail
+wang15.ppd retail
+wang15fp.ppd retail
+xr_45051.ppd retail
+xr_45201.ppd retail
+xr_49001.ppd retail
+xr049151.ppd retail
+xr049201.ppd retail
+xrdt0851.ppd retail
+xrdt0901.ppd retail
+xrdt1351.ppd retail
+xt_82001.ppd retail
+XR_45101.PPD retail
+XR_45171.PPD retail
+hplj_4m.ppd printer
+nx_nlp_1.ppd printer
+qmps4101.ppd printer
+
+AGA20SF2.PPD retail
+AGA25SF2.PPD retail
+AGA36SF2.PPD retail
+AGA44SF2.PPD retail
+AGAC1SF1.PPD retail
+AGAC1SF2.PPD retail
+AGAC5SF2.PPD retail
+AGAC8SF1.PPD retail
+AGAC8SF2.PPD retail
+AGAVA202.PPD retail
+AGAVA252.PPD retail
+AGAVA442.PPD retail
+AGEL5SF2.PPD retail
+AGP36SF1.PPD retail
+AGP36SF2.PPD retail
+AGP94SF2.PPD retail
+AGP95SF2.PPD retail
+AGP98SF2.PPD retail
+AGSL5SF2.PPD retail
+AGSL7SF2.PPD retail
+AGST2SF1.PPD retail
+aplwmgs1.ppd retail
+CLBP3601.PPD retail
+CN1260E1.PPD retail
+CN126PE1.PPD retail
+DPJOLT04.PPD retail
+DPL12602.PPD retail
+DPL15606.PPD retail
+DPL85501.PPD retail
+DPL9605.PPD retail
+DPL9654.PPD retail
+DPLZ2665.PPD retail
+DPTY8PM1.PPD retail
+FS-1500.PPD retail
+FS-1500A.PPD retail
+FS-1550.PPD retail
+FS-1550A.PPD retail
+FS-1550P.PPD retail
+FS-1600.PPD retail
+FS-16002.PPD retail
+FS-1600A.PPD retail
+FS-1600P.PPD retail
+FS-1700.PPD retail
+FS-17002.PPD retail
+FS-3400.PPD retail
+FS-3400A.PPD retail
+FS-3400P.PPD retail
+FS-3500.PPD retail
+FS-3500A.PPD retail
+FS-3600.PPD retail
+FS-36002.PPD retail
+FS-3600A.PPD retail
+FS-3600P.PPD retail
+FS-3700.PPD retail
+FS-37002.PPD retail
+FS-400.PPD retail
+FS-400A.PPD retail
+FS-5500.PPD retail
+FS-5500A.PPD retail
+FS-6500.PPD retail
+FS-6500P.PPD retail
+FS-850.PPD retail
+FS1600A2.PPD retail
+FS3600A2.PPD retail
+Hpclj5v2.ppd retail
+HP_750_1.PPD retail
+NC_10971.PPD retail
+P-2000.PPD retail
+Q-8010.PPD retail
+T30V4.PPD retail
+T40V4.PPD retail
+T60V4.PPD retail
+TIM12641.PPD retail
+TIML8641.PPD retail
+tk240172.ppd retail
+tk240392.ppd retail
+tk550pj1.ppd retail
+tkp240j1.ppd retail
+tkp550j1.ppd retail
+XDCS20.PPD retail
+XDCS35.PPD retail
+XDP350H.PPD retail
+XDP390.PPD retail
+XDP390H.PPD retail
+XDP4635.PPD retail
+Xr470002.ppd retail
+xrd61351.ppd retail
+XRDT0904.PPD retail
+XRDT1354.PPD retail
+Xrx49001.ppd retail
+xrx49151.ppd retail
+xrx49201.ppd retail
+XR_42152.PPD retail
+XR_42192.PPD retail
+XR_42204.PPD retail
+XR_42302.PPD retail
+CBMAJ__1.PPD retail
+CQDP__10.PPD retail
+EFXJX203.PPD retail
+EFXJX303.PPD retail
+SPMAJE40.PPD retail
+SPREGA40.PPD retail
+tk550172.ppd retail
+tk550392.ppd retail
+iexpress.exe idw
+wextract.exe idw
+advpack.dll idw
+
+;
+; NT Cluster binaries
+;
+clussvc.exe cluster
+cluadmin.exe cluster
+resrcmon.exe cluster
+clusrtl.dll cluster
+clusapi.dll cluster
+ipaddr.dll cluster
+disks.dll cluster
+smbshare.dll cluster
+netname.dll cluster
+genapp.dll cluster
+gensvc.dll cluster
+gencmd.dll cluster
+rpcltccl.dll cluster
+rpcltscl.dll cluster
+smbshrex.dll cluster
+netnamex.dll cluster
+ipaddrex.dll cluster
+gensvcex.dll cluster
+genappex.dll cluster
+diskex.dll cluster
+clusdisk.sys cluster
+clusetup.exe cluster
+clusetup.inf cluster
+cluswiz.dll cluster
+dummy.dll cluster
+cluscli.exe cluster
+
+;
+; NT DS binaries
+;
+
+kdc.exe retail
+kdcsvc.dll retail
+kerberos.dll retail
+kerbinst.cmd retail
+kerb.ini retail
+cryptdll.dll retail
+
+dracheck.dll retail
+drax400.dll retail
+dsa.dll retail
+dsid.exe retail
+dsmsg.dll retail
+edbmsg.dll retail
+emsabp.dll retail
+instal.exe retail
+jetback.dll retail
+jetbcli.dll retail
+libxds.dll retail
+ntdsatq.dll retail
+oabgen.dll retail
+perfdsa.dll retail
+pfupdate.exe retail
+priminst.exe retail
+repadmin.exe retail
+script.exe retail
+servrqst.exe retail
+template.exe retail
+dir.edb DSADATA
+NTDSinst.Bat retail
+oleds.dll retail
+oledsenm.exe retail
+dbdump.exe retail
+ditbrows.exe retail
+dsexts.dll retail
+ddatest.exe retail
+dsamain.exe retail
+tloadobj.exe retail
+xload.exe retail
+xwait.exe retail
+
+ntds.exe retail
+
+oledsnds.dll retail
+oledsnt.dll retail
+oledsnw.dll retail
+
+chgpass.exe devtest
+getobj.exe devtest
+grmemadd.exe devtest
+grmemdel.exe devtest
+grpmem.exe devtest
+setpass.exe devtest
+
+hpalerts.dll jetadmin
+hpcola.dll jetadmin
+hpeclui.hpa jetadmin
+hpelkui.hpa jetadmin
+hpflsh.hpa jetadmin
+hphco.hpa jetadmin
+hphcoui.hpa jetadmin
+hplotcp.hpa jetadmin
+hplotui.hpa jetadmin
+hpms.hpa jetadmin
+hpmsui.hpa jetadmin
+hppelk.hpa jetadmin
+hppjl.hpa jetadmin
+hppropty.exe jetadmin
+hpprui.hpa jetadmin
+hprrm.hpa jetadmin
+hpshell.dll jetadmin
+hpsnmp.dll jetadmin
+jetadmin.cpl jetadmin
+jetadmin.exe jetadmin
+calwin32.dll jetadmin
+clnwin32.dll jetadmin
+hpcola.dll jetadmin
+hpdmip.hpa jetadmin
+hpdmipx.hpa jetadmin
+hpfl.hpa jetadmin
+hpjdcom.hpa jetadmin
+hpjdui.hpa jetadmin
+hpjdund.hpa jetadmin
+hpjmon.dll jetadmin
+hplocmon.dll jetadmin
+hpnetsrv.hpa jetadmin
+hpnwpsrv.dll jetadmin
+hpnwshim.dll jetadmin
+hpobj.hpa jetadmin
+hppelk.hpa jetadmin
+hpprecl.hpa jetadmin
+hpprntr.hpa jetadmin
+hpuninst.dll jetadmin
+locwin32.dll jetadmin
+msvcrt40.dll jetadmin
+ncpwin32.dll jetadmin
+netwin32.dll jetadmin
+snmpapi.dll jetadmin
+supwin32.dll jetadmin
+hpdocw.hlp jetadmin
+hpflash.hlp jetadmin
+hphco.hlp jetadmin
+hpjahlp.cnt jetadmin
+hpjdund.hlp jetadmin
+hpjmon.hlp jetadmin
+hplocmon.hlp jetadmin
+hplot.hlp jetadmin
+hpmstor.hlp jetadmin
+hpprecl.hlp jetadmin
+hpprelk.hlp jetadmin
+hpprntr.hlp jetadmin
+jetadmin.hlp jetadmin
diff --git a/public/sdk/lib/ppc/int64.lib.vc b/public/sdk/lib/ppc/int64.lib.vc
new file mode 100644
index 000000000..a27ad42da
--- /dev/null
+++ b/public/sdk/lib/ppc/int64.lib.vc
Binary files differ
diff --git a/public/sdk/lib/ppc/int64.mcl b/public/sdk/lib/ppc/int64.mcl
new file mode 100644
index 000000000..d07736030
--- /dev/null
+++ b/public/sdk/lib/ppc/int64.mcl
Binary files differ
diff --git a/public/sdk/lib/ppc/usa/baseaddr.txt b/public/sdk/lib/ppc/usa/baseaddr.txt
new file mode 100644
index 000000000..cf709b09a
--- /dev/null
+++ b/public/sdk/lib/ppc/usa/baseaddr.txt
@@ -0,0 +1,1525 @@
+winmm.dll 0x77fb0000 0x00050000
+mmdrv.dll 0x77fa0000 0x00010000
+ntdll.dll 0x77f20000 0x00080000
+kernel32.dll 0x77e90000 0x00090000
+gdi32.dll 0x77e40000 0x00050000
+user32.dll 0x77db0000 0x00090000
+rpcrt4.dll 0x77d10000 0x000a0000
+rpcltc1.dll 0x77d00000 0x00010000
+rpclts1.dll 0x77cf0000 0x00010000
+advapi32.dll 0x77c80000 0x00070000
+comdlg32.dll 0x77c20000 0x00060000
+shell32.dll 0x77a30000 0x001f0000
+comctl32.dll 0x77990000 0x000a0000
+winspool.drv 0x77960000 0x00030000
+ole32.dll 0x77810000 0x00150000
+oleaut32.dll 0x77720000 0x000f0000
+version.dll 0x77710000 0x00010000
+security.dll 0x776f0000 0x00020000
+printui.dll 0x776a0000 0x00050000
+ntshrui.dll 0x77680000 0x00020000
+msvcrt.dll 0x77610000 0x00070000
+msvcrt40.dll 0x5f600000 0x00090000
+lz32.dll 0x775e0000 0x00010000
+linkinfo.dll 0x775d0000 0x00010000
+olethk32.dll 0x775a0000 0x00030000
+olecli32.dll 0x77570000 0x00030000
+olecnv32.dll 0x77550000 0x00020000
+oledlg.dll 0x77510000 0x00040000
+olesvr32.dll 0x77500000 0x00010000
+syncui.dll 0x774c0000 0x00040000
+shcompui.dll 0x774b0000 0x00010000
+url.dll 0x77470000 0x00040000
+netui0.dll 0x77450000 0x00020000
+netui1.dll 0x773e0000 0x00070000
+netrap.dll 0x773d0000 0x00010000
+netapi32.dll 0x77360000 0x00070000
+ntlanman.dll 0x77340000 0x00020000
+samlib.dll 0x77320000 0x00020000
+netui2.dll 0x772a0000 0x00080000
+acledit.dll 0x77260000 0x00040000
+netmsg.dll 0x77240000 0x00020000
+mpr.dll 0x77220000 0x00020000
+mprui.dll 0x77200000 0x00020000
+ntlanui.dll 0x771e0000 0x00020000
+wsock32.dll 0x771d0000 0x00010000
+ws2_32.dll 0x771b0000 0x00020000
+ws2help.dll 0x771a0000 0x00010000
+wshtcpip.dll 0x77190000 0x00010000
+mswsock.dll 0x77170000 0x00020000
+msafd.dll 0x77150000 0x00020000
+crtdll.dll 0x77100000 0x00050000
+hppcl.dll 0x770b0000 0x00050000
+rasdd.dll 0x77090000 0x00020000
+rasddui.dll 0x77070000 0x00020000
+pscript.dll 0x77020000 0x00050000
+pscrptui.dll 0x76fe0000 0x00040000
+imaadp32.acm 0x76fd0000 0x00010000
+msadp32.acm 0x76fc0000 0x00010000
+msg711.acm 0x76fb0000 0x00010000
+msgsm32.acm 0x76fa0000 0x00010000
+tssoft32.acm 0x76f90000 0x00010000
+alrsvc.dll 0x76f80000 0x00010000
+amddlg.dll 0x76f70000 0x00010000
+amdncdet.dll 0x76f60000 0x00010000
+atkctrs.dll 0x76f50000 0x00010000
+avicap32.dll 0x76f20000 0x00030000
+avifil32.dll 0x76ef0000 0x00030000
+bhmon.dll 0x76ee0000 0x00010000
+bhnetb.dll 0x76ec0000 0x00020000
+bhsupp.dll 0x76eb0000 0x00010000
+brhj770.dll 0x76ea0000 0x00010000
+brother9.dll 0x76e90000 0x00010000
+brothr24.dll 0x76e70000 0x00020000
+browser.dll 0x76e50000 0x00020000
+canon330.dll 0x76e40000 0x00010000
+canon800.dll 0x76e30000 0x00010000
+canonlbp.dll 0x76e10000 0x00020000
+cards.dll 0x76de0000 0x00030000
+ccfapi32.dll 0x76db0000 0x00030000
+cfgmgr32.dll 0x76d90000 0x00020000
+cfm30.dll 0x76cf0000 0x000a0000
+cfm30u.dll 0x76c50000 0x000a0000
+cfmo30.dll 0x76c10000 0x00040000
+cfmo30u.dll 0x76bd0000 0x00040000
+cirrus.dll 0x76bb0000 0x00020000
+cit24us.dll 0x76b90000 0x00020000
+cit9us.dll 0x76b70000 0x00020000
+citoh.dll 0x76b60000 0x00010000
+clb.dll 0x76b50000 0x00010000
+cnvfat.dll 0x76b40000 0x00010000
+compstui.dll 0x76b00000 0x00040000
+conexts.dll 0x76af0000 0x00010000
+convmsg.dll 0x76ae0000 0x00010000
+cs423x.dll 0x76ac0000 0x00020000
+cxxflt.dll 0x76ab0000 0x00010000
+dciman32.dll 0x76aa0000 0x00010000
+ddraw.dll 0x76a60000 0x00040000
+debmp.dll 0x76a40000 0x00020000
+dec24pin.dll 0x76a30000 0x00010000
+dec3200.dll 0x76a20000 0x00010000
+dec9pin.dll 0x76a10000 0x00010000
+decpsmon.dll 0x76970000 0x000a0000
+defea.dll 0x76960000 0x00010000
+defpa.dll 0x76950000 0x00010000
+dehex.dll 0x76940000 0x00010000
+demet.dll 0x76920000 0x00020000
+dess.dll 0x76900000 0x00020000
+dewp.dll 0x768e0000 0x00020000
+dgconfig.dll 0x768c0000 0x00020000
+dhcpcsvc.dll 0x768a0000 0x00020000
+dhcpmib.dll 0x76890000 0x00010000
+dhcpsapi.dll 0x76880000 0x00010000
+dhcpssvc.dll 0x76850000 0x00030000
+diconix.dll 0x76840000 0x00010000
+digiinst.dll 0x76820000 0x00020000
+digsig.dll 0x767b0000 0x00070000
+diskcopy.dll 0x767a0000 0x00010000
+dlcapi.dll 0x76790000 0x00010000
+docprop.dll 0x76770000 0x00020000
+dplay.dll 0x76750000 0x00020000
+dpserial.dll 0x76730000 0x00020000
+dpwsock.dll 0x76710000 0x00020000
+dsound.dll 0x766e0000 0x00030000
+epson24.dll 0x766d0000 0x00010000
+epson9.dll 0x766b0000 0x00020000
+escp2e.dll 0x76690000 0x00020000
+escp2ms.dll 0x76680000 0x00010000
+eventlog.dll 0x76660000 0x00020000
+fmifs.dll 0x76650000 0x00010000
+fontext.dll 0x76610000 0x00040000
+fpnwclnt.dll 0x76600000 0x00010000
+ftpctrs.dll 0x765f0000 0x00010000
+ftpsmx.dll 0x765e0000 0x00010000
+ftpsvapi.dll 0x765d0000 0x00010000
+ftpsvc.dll 0x765b0000 0x00020000
+ftsrch.dll 0x76540000 0x00070000
+fuji24.dll 0x76530000 0x00010000
+fuji9.dll 0x76520000 0x00010000
+gapi32.dll 0x764f0000 0x00030000
+glmf32.dll 0x76440000 0x000b0000
+glu32.dll 0x76400000 0x00040000
+hpdskjet.dll 0x763d0000 0x00030000
+hpmon.dll 0x763b0000 0x00020000
+hpscan32.dll 0x763a0000 0x00010000
+hticons.dll 0x76390000 0x00010000
+htui.dll 0x76370000 0x00020000
+hypertrm.dll 0x762d0000 0x000a0000
+ibm238x.dll 0x762c0000 0x00010000
+ibm239x.dll 0x762a0000 0x00020000
+ibm5204.dll 0x76290000 0x00010000
+ibmport.dll 0x76280000 0x00010000
+ibmppdsl.dll 0x76270000 0x00010000
+iccvid.dll 0x76230000 0x00040000
+icmp.dll 0x76220000 0x00010000
+ifsutil.dll 0x761e0000 0x00040000
+imagehlp.dll 0x761b0000 0x00030000
+imm32.dll 0x761a0000 0x00010000
+indicdll.dll 0x76190000 0x00010000
+inetmib1.dll 0x76170000 0x00020000
+iologmsg.dll 0x76160000 0x00010000
+ipadrdll.dll 0x76150000 0x00010000
+iprip.dll 0x76140000 0x00010000
+ipxcfg.dll 0x76120000 0x00020000
+ir32_32.dll 0x760d0000 0x00050000
+jet.dll 0x75ff0000 0x000e0000
+jet500.dll 0x75eb0000 0x00140000
+jp350.dll 0x5f730000 0x00030000
+jpeg1x32.dll 0x75e70000 0x00020000
+jpeg2x32.dll 0x75e50000 0x00020000
+kbdal.dll 0x75e40000 0x00010000
+kbdbene.dll 0x75e30000 0x00010000
+kbdblr.dll 0x75e20000 0x00010000
+kbdbu.dll 0x75e10000 0x00010000
+kbdcr.dll 0x75e00000 0x00010000
+kbdcz1.dll 0x75df0000 0x00010000
+kbddll.dll 0x75de0000 0x00010000
+kbdest.dll 0x75dd0000 0x00010000
+kbdgkl.dll 0x75dc0000 0x00010000
+kbdgr1.dll 0x75db0000 0x00010000
+kbdhe220.dll 0x75da0000 0x00010000
+kbdhe319.dll 0x75d90000 0x00010000
+kbdhela2.dll 0x75d80000 0x00010000
+kbdhela3.dll 0x75d70000 0x00010000
+kbdhu1.dll 0x75d60000 0x00010000
+kbdir.dll 0x75d50000 0x00010000
+kbdit142.dll 0x75d40000 0x00010000
+kbdlt.dll 0x75d30000 0x00010000
+kbdlv.dll 0x75d20000 0x00010000
+kbdlv1.dll 0x75d10000 0x00010000
+kbdpl.dll 0x75d00000 0x00010000
+kbdro.dll 0x75cf0000 0x00010000
+kbdru1.dll 0x75ce0000 0x00010000
+kbdsl1.dll 0x75cd0000 0x00010000
+kbdur.dll 0x75cc0000 0x00010000
+kbdurs.dll 0x75cb0000 0x00010000
+kbdycc.dll 0x75ca0000 0x00010000
+kbdycl.dll 0x75c90000 0x00010000
+kyocera.dll 0x75c80000 0x00010000
+kyocerax.dll 0x75c50000 0x00030000
+llsrpc.dll 0x75c30000 0x00020000
+lmhsvc.dll 0x75c20000 0x00010000
+lmmib2.dll 0x75c10000 0x00010000
+loadperf.dll 0x75c00000 0x00010000
+localmon.dll 0x75bf0000 0x00010000
+localspl.dll 0x75bb0000 0x00040000
+lpdsvc.dll 0x75ba0000 0x00010000
+lprhelp.dll 0x75b90000 0x00010000
+lprmon.dll 0x75b80000 0x00010000
+lsasrv.dll 0x75b40000 0x00040000
+mantal24.dll 0x75b30000 0x00010000
+mantal90.dll 0x75b20000 0x00010000
+mapi32.dll 0x75a00000 0x00120000
+mapiu32.dll 0x759f0000 0x00010000
+mapix32.dll 0x759e0000 0x00010000
+mcd32.dll 0x759d0000 0x00010000
+mciavi32.dll 0x759a0000 0x00030000
+mcicda.dll 0x75980000 0x00020000
+mciole32.dll 0x75970000 0x00010000
+mciseq.dll 0x75960000 0x00010000
+mciwave.dll 0x75950000 0x00010000
+mdgmpdlg.dll 0x75940000 0x00010000
+mdgncdet.dll 0x75930000 0x00010000
+mf3216.dll 0x75910000 0x00020000
+mfc40.dll 0x75740000 0x001d0000
+mfc40chs.dll 0x75730000 0x00010000
+mfc40deu.dll 0x75720000 0x00010000
+mfc40enu.dll 0x75710000 0x00010000
+mfc40esp.dll 0x75700000 0x00010000
+mfc40fra.dll 0x756f0000 0x00010000
+mfc40ita.dll 0x756e0000 0x00010000
+mfc40jpn.dll 0x756d0000 0x00010000
+mfc40kor.dll 0x756c0000 0x00010000
+mfc40u.dll 0x754f0000 0x001d0000
+mfc42.dll 0x752f0000 0x00200000
+mfc42chs.dll 0x752e0000 0x00010000
+mfc42cht.dll 0x752d0000 0x00010000
+mfc42deu.dll 0x752c0000 0x00010000
+mfc42enu.dll 0x752b0000 0x00010000
+mfc42esp.dll 0x752a0000 0x00010000
+mfc42fra.dll 0x75290000 0x00010000
+mfc42ita.dll 0x75280000 0x00010000
+mfc42jpn.dll 0x75270000 0x00010000
+mfc42kor.dll 0x75260000 0x00010000
+mfc42u.dll 0x75060000 0x00200000
+mga.dll 0x75030000 0x00030000
+mgmtapi.dll 0x75020000 0x00010000
+midimap.dll 0x75010000 0x00010000
+minet32.dll 0x74f90000 0x00080000
+mlshext.dll 0x74f80000 0x00010000
+mmfmig32.dll 0x74f00000 0x00080000
+modemui.dll 0x74ee0000 0x00020000
+moricons.dll 0x74eb0000 0x00030000
+mpu401.dll 0x74ea0000 0x00010000
+msacm32.dll 0x74e60000 0x00040000
+msaudite.dll 0x74e50000 0x00010000
+msfs32.dll 0x74d70000 0x000e0000
+msgina.dll 0x74d40000 0x00030000
+msgsvc.dll 0x74d20000 0x00020000
+msncdet.dll 0x74cf0000 0x00030000
+msnsspc.dll 0x74cd0000 0x00020000
+msobjs.dll 0x74cc0000 0x00010000
+msprivs.dll 0x74cb0000 0x00010000
+mspst32.dll 0x74bd0000 0x000e0000
+msrle32.dll 0x74bc0000 0x00010000
+msv1_0.dll 0x74ba0000 0x00020000
+msvfw32.dll 0x74b60000 0x00040000
+msvidc32.dll 0x74b50000 0x00010000
+msviewut.dll 0x74b10000 0x00040000
+mt735.dll 0x74b00000 0x00010000
+mvaudio.dll 0x74ae0000 0x00020000
+nal.dll 0x74ad0000 0x00010000
+nddeapi.dll 0x74ac0000 0x00010000
+nddenb32.dll 0x74ab0000 0x00010000
+ndis30.dll 0x74aa0000 0x00010000
+nec24pin.dll 0x74a90000 0x00010000
+netcfg.dll 0x749c0000 0x000d0000
+netdtect.dll 0x749b0000 0x00010000
+netevent.dll 0x749a0000 0x00010000
+netflx.dll 0x74990000 0x00010000
+neth.dll 0x74960000 0x00030000
+netlogon.dll 0x74910000 0x00050000
+netsetup.dll 0x748b0000 0x00060000
+ntctl3d.dll 0x74890000 0x00020000
+ntlanui2.dll 0x74880000 0x00010000
+ntlmssps.dll 0x74870000 0x00010000
+ntlsapi.dll 0x74860000 0x00010000
+ntprint.dll 0x74850000 0x00010000
+nwapi16.dll 0x74840000 0x00010000
+nwapi32.dll 0x74820000 0x00020000
+nwcfg.dll 0x74810000 0x00010000
+nwevent.dll 0x74800000 0x00010000
+nwprovau.dll 0x747b0000 0x00050000
+nwsap.dll 0x74790000 0x00020000
+nwwks.dll 0x74760000 0x00030000
+oiadm400.dll 0x74750000 0x00010000
+oicom400.dll 0x74740000 0x00010000
+oidis400.dll 0x746d0000 0x00070000
+oifil400.dll 0x746b0000 0x00020000
+oigfs400.dll 0x74680000 0x00030000
+oiprt400.dll 0x74670000 0x00010000
+oislb400.dll 0x74660000 0x00010000
+oissq400.dll 0x74650000 0x00010000
+oitwa400.dll 0x74640000 0x00010000
+oiui400.dll 0x74620000 0x00020000
+oki24.dll 0x74600000 0x00020000
+oki9.dll 0x745f0000 0x00010000
+oki9ibm.dll 0x745d0000 0x00020000
+olepro32.dll 0x745a0000 0x00030000
+olidm24.dll 0x74590000 0x00010000
+olidm9.dll 0x74580000 0x00010000
+opengl32.dll 0x74460000 0x00120000
+optra.dll 0x74420000 0x00040000
+paintjet.dll 0x74410000 0x00010000
+panmap.dll 0x74400000 0x00010000
+panson24.dll 0x743f0000 0x00010000
+panson9.dll 0x743e0000 0x00010000
+pcl5ems.dll 0x74380000 0x00060000
+pcl5ms.dll 0x74320000 0x00060000
+perfctrs.dll 0x74300000 0x00020000
+perfnw.dll 0x742f0000 0x00010000
+pifmgr.dll 0x742e0000 0x00010000
+pjlmon.dll 0x742d0000 0x00010000
+plotter.dll 0x742b0000 0x00020000
+plotui.dll 0x74290000 0x00020000
+plustab.dll 0x74280000 0x00010000
+prflbmsg.dll 0x74270000 0x00010000
+profext.dll 0x74260000 0x00010000
+proprint.dll 0x74250000 0x00010000
+proprn24.dll 0x74240000 0x00010000
+ps1.dll 0x74230000 0x00010000
+psidisp.dll 0x74210000 0x00020000
+psxdll.dll 0x741f0000 0x00020000
+quietjet.dll 0x741e0000 0x00010000
+qwiii.dll 0x741d0000 0x00010000
+rasadhlp.dll 0x741c0000 0x00010000
+rasadmin.dll 0x741b0000 0x00010000
+rasapi32.dll 0x74170000 0x00040000
+rasauto.dll 0x74140000 0x00030000
+rascauth.dll 0x74130000 0x00010000
+rascbcp.dll 0x74120000 0x00010000
+rasccp.dll 0x74110000 0x00010000
+rascfg.dll 0x740d0000 0x00040000
+raschap.dll 0x740c0000 0x00010000
+rasctrs.dll 0x740b0000 0x00010000
+rasdlg.dll 0x74020000 0x00090000
+rasfil32.dll 0x74010000 0x00010000
+rasgprxy.dll 0x74000000 0x00010000
+rasgtwy.dll 0x73ff0000 0x00010000
+rasipcp.dll 0x73fe0000 0x00010000
+rasiphlp.dll 0x73fd0000 0x00010000
+rasipxcp.dll 0x73fc0000 0x00010000
+rasman.dll 0x73fa0000 0x00020000
+rasmsg.dll 0x73f90000 0x00010000
+rasmxs.dll 0x73f80000 0x00010000
+rasnbfcp.dll 0x73f70000 0x00010000
+rasnbipc.dll 0x73f60000 0x00010000
+raspap.dll 0x73f50000 0x00010000
+raspppen.dll 0x73f30000 0x00020000
+raspptpc.dll 0x73f20000 0x00010000
+raspptpl.dll 0x73f10000 0x00010000
+rassapi.dll 0x73f00000 0x00010000
+rassauth.dll 0x73ef0000 0x00010000
+rasscrpt.dll 0x73ed0000 0x00020000
+rasser.dll 0x73ec0000 0x00010000
+rasshell.dll 0x73eb0000 0x00010000
+rasspap.dll 0x73ea0000 0x00010000
+rastapi.dll 0x73e90000 0x00010000
+relay.dll 0x73e80000 0x00010000
+riched20.dll 0x73e00000 0x00080000
+riched32.dll 0x73db0000 0x00050000
+rnal.dll 0x73d80000 0x00030000
+rnr20.dll 0x73d60000 0x00020000
+routetab.dll 0x73d50000 0x00010000
+rpcltc8.dll 0x73d40000 0x00010000
+rpcltccm.dll 0x73d20000 0x00020000
+rpclts8.dll 0x73d10000 0x00010000
+rpcltscm.dll 0x73cf0000 0x00020000
+rpcns4.dll 0x73cd0000 0x00020000
+rshx32.dll 0x73cc0000 0x00010000
+samsrv.dll 0x73c70000 0x00050000
+sccview.dll 0x73c60000 0x00010000
+schannel.dll 0x73c30000 0x00030000
+schnl128.dll 0x73c30000 0x00030000
+secbasic.dll 0x73c20000 0x00010000
+secsspi.dll 0x73c10000 0x00010000
+seiko.dll 0x73c00000 0x00010000
+seiko24e.dll 0x73be0000 0x00020000
+seikosh9.dll 0x73bd0000 0x00010000
+serialui.dll 0x73bc0000 0x00010000
+setupapi.dll 0x73b40000 0x00080000
+setupdll.dll 0x73a60000 0x000e0000
+sfmapi.dll 0x73a50000 0x00010000
+sfmatcfg.dll 0x73a30000 0x00020000
+sfmatmsg.dll 0x73a20000 0x00010000
+sfmctrs.dll 0x73a10000 0x00010000
+sfmmon.dll 0x739f0000 0x00020000
+sfmmsg.dll 0x739e0000 0x00010000
+sfmpsdib.dll 0x738f0000 0x000f0000
+sfmpsfnt.dll 0x738e0000 0x00010000
+sfmpsprt.dll 0x738d0000 0x00010000
+sfmres.dll 0x738c0000 0x00010000
+sfmutil.dll 0x738b0000 0x00010000
+sfmwshat.dll 0x73890000 0x00020000
+shscrap.dll 0x73880000 0x00010000
+sidewndr.dll 0x73870000 0x00010000
+simptcp.dll 0x73860000 0x00010000
+skdll.dll 0x73850000 0x00010000
+sndblst.dll 0x73830000 0x00020000
+sndsys32.dll 0x73810000 0x00020000
+snmpapi.dll 0x73800000 0x00010000
+softpub.dll 0x737c0000 0x00040000
+spoolss.dll 0x737a0000 0x00020000
+srvsvc.dll 0x73770000 0x00030000
+star24e.dll 0x73750000 0x00020000
+star9e.dll 0x73730000 0x00020000
+starjet.dll 0x73720000 0x00010000
+synceng.dll 0x73700000 0x00020000
+synth.dll 0x736f0000 0x00010000
+syssetup.dll 0x73670000 0x00080000
+t1instal.dll 0x73640000 0x00030000
+tapi32.dll 0x73600000 0x00040000
+tapiperf.dll 0x735f0000 0x00010000
+tcpcfg.dll 0x735a0000 0x00050000
+tga.dll 0x73580000 0x00020000
+thinkjet.dll 0x73570000 0x00010000
+ti850.dll 0x73560000 0x00010000
+trace.dll 0x73550000 0x00010000
+tsd32.dll 0x73540000 0x00010000
+txtonly.dll 0x73530000 0x00010000
+ufat.dll 0x73500000 0x00030000
+ulib.dll 0x734c0000 0x00040000
+umpnpmgr.dll 0x5f700000 0x00030000
+untfs.dll 0x73400000 0x000a0000
+ureg.dll 0x733f0000 0x00010000
+userenv.dll 0x733d0000 0x00020000
+vdmdbg.dll 0x733c0000 0x00010000
+vsasc8.dll 0x733b0000 0x00010000
+vsbmp.dll 0x733a0000 0x00010000
+vsdrw.dll 0x73390000 0x00010000
+vsexe.dll 0x73380000 0x00010000
+vsexe2.dll 0x73370000 0x00010000
+vsmp.dll 0x73360000 0x00010000
+vsmsw.dll 0x73350000 0x00010000
+vspp.dll 0x73340000 0x00010000
+vsqp6.dll 0x73330000 0x00010000
+vsrtf.dll 0x73320000 0x00010000
+vstiff.dll 0x73310000 0x00010000
+vsw6.dll 0x73300000 0x00010000
+vswks.dll 0x732f0000 0x00010000
+vswmf.dll 0x732e0000 0x00010000
+vsword.dll 0x732c0000 0x00020000
+vswork.dll 0x732b0000 0x00010000
+vswp5.dll 0x732a0000 0x00010000
+vswp6.dll 0x73290000 0x00010000
+vswpf.dll 0x73280000 0x00010000
+vsxl5.dll 0x73260000 0x00020000
+vwipxspx.dll 0x73250000 0x00010000
+wangcmn.dll 0x73230000 0x00020000
+wangshl.dll 0x73220000 0x00010000
+wd90c24a.dll 0x73210000 0x00010000
+wgpoadmn.dll 0x731f0000 0x00020000
+win32spl.dll 0x731c0000 0x00030000
+winprint.dll 0x731b0000 0x00010000
+winsctrs.dll 0x731a0000 0x00010000
+winsevnt.dll 0x73190000 0x00010000
+winsmib.dll 0x73180000 0x00010000
+winsrpc.dll 0x73170000 0x00010000
+winstrm.dll 0x73160000 0x00010000
+wintrust.dll 0x73150000 0x00010000
+wkssvc.dll 0x73130000 0x00020000
+wmsfr32.dll 0x730b0000 0x00080000
+wmsui32.dll 0x72f50000 0x00160000
+wowfax.dll 0x72f40000 0x00010000
+wowfaxui.dll 0x72f30000 0x00010000
+ws2map.dll 0x72f20000 0x00010000
+wshisn.dll 0x72f10000 0x00010000
+wshnetbs.dll 0x72f00000 0x00010000
+xactsrv.dll 0x72ed0000 0x00030000
+xeroxpcl.dll 0x5f760000 0x00040000
+xfilexr.dll 0x72e70000 0x00040000
+access.cpl 0x72e50000 0x00020000
+appwiz.cpl 0x72e30000 0x00020000
+bhctrl.cpl 0x72e20000 0x00010000
+console.cpl 0x72e00000 0x00020000
+desk.cpl 0x72dc0000 0x00040000
+devapps.cpl 0x72d50000 0x00070000
+inetcpl.cpl 0x72d40000 0x00010000
+intl.cpl 0x72d20000 0x00020000
+joy.cpl 0x72d00000 0x00020000
+liccpa.cpl 0x72ce0000 0x00020000
+main.cpl 0x72cc0000 0x00020000
+mlcfg32.cpl 0x72ca0000 0x00020000
+mmsys.cpl 0x72c40000 0x00060000
+modem.cpl 0x72c10000 0x00030000
+ncpa.cpl 0x72bd0000 0x00040000
+nwc.cpl 0x72bb0000 0x00020000
+ports.cpl 0x72ba0000 0x00010000
+rascpl.cpl 0x72b90000 0x00010000
+sfmmgr.cpl 0x72b60000 0x00030000
+srvmgr.cpl 0x72b20000 0x00040000
+sysdm.cpl 0x72af0000 0x00030000
+telephon.cpl 0x72ae0000 0x00010000
+timedate.cpl 0x72ac0000 0x00020000
+ups.cpl 0x72ab0000 0x00010000
+wgpocpl.cpl 0x72aa0000 0x00010000
+msacm32.drv 0x72a90000 0x00010000
+ctl3d32.dll 0x72a70000 0x00020000
+lmmon.dll 0x72a60000 0x00010000
+mfc40d.dll 0x728b0000 0x001b0000
+mfc40ud.dll 0x726f0000 0x001c0000
+mfc42d.dll 0x72520000 0x001d0000
+mfc42ud.dll 0x72350000 0x001d0000
+mfcd40d.dll 0x722e0000 0x00070000
+mfcd40ud.dll 0x72260000 0x00080000
+mfcd42d.dll 0x721e0000 0x00080000
+mfcd42ud.dll 0x72160000 0x00080000
+mfcn40d.dll 0x72140000 0x00020000
+mfcn40ud.dll 0x72120000 0x00020000
+mfcn42d.dll 0x72100000 0x00020000
+mfcn42ud.dll 0x720e0000 0x00020000
+mfco40d.dll 0x71fb0000 0x00130000
+mfco40ud.dll 0x71e70000 0x00140000
+mfco42d.dll 0x71d10000 0x00160000
+mfco42ud.dll 0x71bb0000 0x00160000
+msvcirtd.dll 0x71b80000 0x00030000
+msvcr40d.dll 0x71b60000 0x00020000
+msvcrtd.dll 0x71ac0000 0x000a0000
+nddeexts.dll 0x71ab0000 0x00010000
+ntsdexts.dll 0x71a90000 0x00020000
+splexts.dll 0x71a70000 0x00020000
+ubnbmsg.dll 0x71a60000 0x00010000
+userexts.dll 0x71a30000 0x00030000
+vdmexts.dll 0x71a00000 0x00030000
+wshxns.dll 0x719f0000 0x00010000
+xnscfg.dll 0x719e0000 0x00010000
+xnsmsg.dll 0x719d0000 0x00010000
+afdkd.dll 0x719c0000 0x00010000
+cap.dll 0x719a0000 0x00020000
+dflayout.dll 0x71980000 0x00020000
+dfskd.dll 0x71970000 0x00010000
+dm.dll 0x71940000 0x00030000
+dmkdalp.dll 0x71910000 0x00030000
+dmkdmip.dll 0x718e0000 0x00030000
+dmkdppc.dll 0x718a0000 0x00040000
+dmkdx86.dll 0x71860000 0x00040000
+eecxxalp.dll 0x71820000 0x00040000
+eecxxmip.dll 0x717e0000 0x00040000
+eecxxppc.dll 0x717a0000 0x00040000
+eecxxx86.dll 0x71760000 0x00040000
+emalp.dll 0x71740000 0x00020000
+emmip.dll 0x71720000 0x00020000
+emppc.dll 0x71700000 0x00020000
+emx86.dll 0x716e0000 0x00020000
+fernel32.dll 0x716c0000 0x00020000
+filter.dll 0x716b0000 0x00010000
+gdikdx.dll 0x71680000 0x00030000
+gutils.dll 0x71660000 0x00020000
+hdxdll.dll 0x71650000 0x00010000
+hook.dll 0x71640000 0x00010000
+hwdll.dll 0x71610000 0x00030000
+isnext.dll 0x715e0000 0x00030000
+iviewers.dll 0x71590000 0x00050000
+justify.dll 0x71580000 0x00010000
+kdextalp.dll 0x71530000 0x00050000
+kdextmip.dll 0x714e0000 0x00050000
+kdextppc.dll 0x71490000 0x00050000
+kdextx86.dll 0x71440000 0x00050000
+lineedit.dll 0x71430000 0x00010000
+mhelp.dll 0x71420000 0x00010000
+msafdext.dll 0x71410000 0x00010000
+mshelp.dll 0x71400000 0x00010000
+mspdb40.dll 0x71380000 0x00080000
+mspdb41.dll 0x71300000 0x00080000
+msvcbook.dll 0x712f0000 0x00010000
+mupkd.dll 0x712e0000 0x00010000
+pmatch.dll 0x712d0000 0x00010000
+psapi.dll 0x712c0000 0x00010000
+rcdll.dll 0x71280000 0x00040000
+rdr2kd.dll 0x71270000 0x00010000
+rdrkd.dll 0x71260000 0x00010000
+shcv.dll 0x71240000 0x00020000
+srvkd.dll 0x71230000 0x00010000
+symcvt.dll 0x71220000 0x00010000
+testctrl.dll 0x71200000 0x00020000
+testdlgs.dll 0x711e0000 0x00020000
+testevnt.dll 0x711d0000 0x00010000
+testscrn.dll 0x711b0000 0x00020000
+testvw32.dll 0x711a0000 0x00010000
+tglcase.dll 0x71190000 0x00010000
+tlloc.dll 0x71180000 0x00010000
+tlpipe.dll 0x71170000 0x00010000
+tlser.dll 0x71160000 0x00010000
+ttkdx.dll 0x71150000 0x00010000
+ulcase.dll 0x71140000 0x00010000
+userkdx.dll 0x71100000 0x00040000
+ws1.dll 0x710f0000 0x00010000
+wst.dll 0x710e0000 0x00010000
+zdi32.dll 0x710c0000 0x00020000
+zernel32.dll 0x710a0000 0x00020000
+zle32.dll 0x71090000 0x00010000
+aboutwep.dll 0x71080000 0x00010000
+advpack.dll 0x71060000 0x00020000
+apidll.dll 0x71040000 0x00020000
+iodll.dll 0x71020000 0x00020000
+mepparty.dll 0x71010000 0x00010000
+nclipps.dll 0x71000000 0x00010000
+rasether.dll 0x70fe0000 0x00020000
+rcdata1.dll 0x70fc0000 0x00020000
+rtutils.dll 0x70fa0000 0x00020000
+rwinf.dll 0x70f80000 0x00020000
+rwmac.dll 0x70f50000 0x00030000
+rwres32.dll 0x70f30000 0x00020000
+rwwin16.dll 0x70f10000 0x00020000
+rwwin32.dll 0x70ef0000 0x00020000
+secedit.dll 0x70ee0000 0x00010000
+strmexts.dll 0x70ed0000 0x00010000
+tophook.dll 0x70ec0000 0x00010000
+winclip.dll 0x70eb0000 0x00010000
+zextens.dll 0x70ea0000 0x00010000
+actsrvd.dll 0x70e90000 0x00010000
+adptif.dll 0x70e70000 0x00020000
+atm.dll 0x70e60000 0x00010000
+atmdrvr.dll 0x70e10000 0x00050000
+bhp001.dll 0x70de0000 0x00030000
+bhp002.dll 0x70dd0000 0x00010000
+bhp003.dll 0x70dc0000 0x00010000
+bhp004.dll 0x70db0000 0x00010000
+bhp005.dll 0x70d90000 0x00020000
+bhp006.dll 0x70d80000 0x00010000
+bhp007.dll 0x70d60000 0x00020000
+bhp008.dll 0x70d50000 0x00010000
+bhp009.dll 0x70d10000 0x00040000
+bhp010.dll 0x70d00000 0x00010000
+bhp011.dll 0x70cf0000 0x00010000
+bhp012.dll 0x70cd0000 0x00020000
+bhp013.dll 0x70c90000 0x00040000
+bhp014.dll 0x70c80000 0x00010000
+bhp015.dll 0x70c30000 0x00050000
+bhp016.dll 0x70c20000 0x00010000
+bhp017.dll 0x70c10000 0x00010000
+bhp018.dll 0x70c00000 0x00010000
+bhp019.dll 0x70bb0000 0x00050000
+bhp020.dll 0x70b80000 0x00030000
+bhp021.dll 0x70b40000 0x00040000
+bttncur.dll 0x70b20000 0x00020000
+ciutil.dll 0x70b10000 0x00010000
+comcat.dll 0x70b00000 0x00010000
+ddm.dll 0x70ae0000 0x00020000
+dfsprov.dll 0x70ad0000 0x00010000
+dim.dll 0x70ab0000 0x00020000
+espui.dll 0x70aa0000 0x00010000
+fastimer.dll 0x70a80000 0x00020000
+friendly.dll 0x70a70000 0x00010000
+gizmobar.dll 0x70a50000 0x00020000
+goober.dll 0x70a40000 0x00010000
+hexedit.dll 0x70a30000 0x00010000
+htrn_jis.dll 0x70a20000 0x00010000
+ifadmin.dll 0x709f0000 0x00030000
+imaadp32.dll 0x709e0000 0x00010000
+ipadmin.dll 0x70940000 0x000a0000
+ipbootp.dll 0x70930000 0x00010000
+ipmon.dll 0x70910000 0x00020000
+iprip2.dll 0x708f0000 0x00020000
+iprtprio.dll 0x708e0000 0x00010000
+iprtrmgr.dll 0x708a0000 0x00040000
+ipxadmin.dll 0x70870000 0x00030000
+ipxmon.dll 0x70840000 0x00030000
+ipxrip.dll 0x70830000 0x00010000
+ipxrtmgr.dll 0x70810000 0x00020000
+ipxsap.dll 0x707e0000 0x00030000
+ipxwan.dll 0x707d0000 0x00010000
+joystick.dll 0x707c0000 0x00010000
+lprext.dll 0x707b0000 0x00010000
+mib2util.dll 0x707a0000 0x00010000
+mpradmin.dll 0x70780000 0x00020000
+msadp32.dll 0x70770000 0x00010000
+msg711.dll 0x70760000 0x00010000
+msgsm32.dll 0x70750000 0x00010000
+ndrd.dll 0x70740000 0x00010000
+nmapi.dll 0x70720000 0x00020000
+ntprinta.dll 0x70710000 0x00010000
+ole2u32a.dll 0x706d0000 0x00040000
+oleat.dll 0x706c0000 0x00010000
+olebt.dll 0x706b0000 0x00010000
+oledll2.dll 0x706a0000 0x00010000
+oleimpl.dll 0x70690000 0x00010000
+olest.dll 0x70680000 0x00010000
+ospf.dll 0x70650000 0x00030000
+ospfmib.dll 0x70630000 0x00020000
+parser.dll 0x70620000 0x00010000
+pctsspi.dll 0x70600000 0x00020000
+pdh.dll 0x705e0000 0x00020000
+printuia.dll 0x70590000 0x00050000
+rcauth.dll 0x70580000 0x00010000
+rgprxy.dll 0x70570000 0x00010000
+ripcp.dll 0x70560000 0x00010000
+riphlp.dll 0x70550000 0x00010000
+routemsg.dll 0x70540000 0x00010000
+rpcdce4.dll 0x70530000 0x00010000
+rpcltc5.dll 0x70520000 0x00010000
+rrasgtwy.dll 0x70510000 0x00010000
+rrasipx.dll 0x70500000 0x00010000
+rrasman.dll 0x704e0000 0x00020000
+rrasnbf.dll 0x704d0000 0x00010000
+rrasppp.dll 0x704b0000 0x00020000
+rsauth.dll 0x704a0000 0x00010000
+rtm.dll 0x70490000 0x00010000
+sampfilt.dll 0x70480000 0x00010000
+shareui.dll 0x70460000 0x00020000
+shellalt.dll 0x70280000 0x001e0000
+slbs.dll 0x70260000 0x00020000
+splx.dll 0x70240000 0x00020000
+toolbar.dll 0x70230000 0x00010000
+tp4cfg.dll 0x70220000 0x00010000
+tssoft32.dll 0x70210000 0x00010000
+urlcache.dll 0x70200000 0x00010000
+winsdb.dll 0x701f0000 0x00010000
+wshisotp.dll 0x701e0000 0x00010000
+whacm32.dll 0x70000000 0x00010000
+whavicap.dll 0x70010000 0x00010000
+whavifil.dll 0x70020000 0x00010000
+whddeapi.dll 0x70030000 0x00010000
+whddraw.dll 0x70040000 0x00010000
+whdplay.dll 0x70050000 0x00010000
+whdsnd.dll 0x70060000 0x00010000
+whftsrch.dll 0x70070000 0x00010000
+whglu32.dll 0x70080000 0x00010000
+whimghlp.dll 0x70090000 0x00010000
+whmapi32.dll 0x700a0000 0x00010000
+whmsafd.dll 0x700b0000 0x00010000
+whmssock.dll 0x700c0000 0x00010000
+whnetapi.dll 0x700d0000 0x00020000
+whrasapi.dll 0x700f0000 0x00010000
+whrasdlg.dll 0x70100000 0x00010000
+whrassap.dll 0x70110000 0x00010000
+whrpcns4.dll 0x70120000 0x00010000
+whrpcrt4.dll 0x70130000 0x00020000
+whtapi32.dll 0x70150000 0x00010000
+whvfw32.dll 0x70160000 0x00010000
+whws2_32.dll 0x70170000 0x00010000
+wiacm32.dll 0x70180000 0x00010000
+wiavicap.dll 0x70190000 0x00010000
+wiavifil.dll 0x701a0000 0x00010000
+wicfgmgr.dll 0x701b0000 0x00020000
+wictl3d.dll 0x701d0000 0x00020000
+widdeapi.dll 0x701f0000 0x00010000
+widdraw.dll 0x70200000 0x00010000
+widplay.dll 0x70210000 0x00010000
+widsnd.dll 0x70220000 0x00010000
+wiftsrch.dll 0x70230000 0x00010000
+wiglu32.dll 0x70240000 0x00010000
+wiimghlp.dll 0x70250000 0x00010000
+wimapi32.dll 0x70260000 0x00010000
+wimfc40.dll 0x70270000 0x000f0000
+wimfc40u.dll 0x70360000 0x000f0000
+wimfc42.dll 0x70450000 0x00100000
+wimfc42u.dll 0x70550000 0x00100000
+wimsafd.dll 0x70650000 0x00010000
+wimsjt30.dll 0x70660000 0x00110000
+wimssock.dll 0x70770000 0x00010000
+winetapi.dll 0x70780000 0x00010000
+wiodbcjt.dll 0x70790000 0x00040000
+wiolecli.dll 0x707d0000 0x00020000
+wiolesvr.dll 0x707f0000 0x00010000
+wirasapi.dll 0x70800000 0x00010000
+wirasdlg.dll 0x70810000 0x00010000
+wirassap.dll 0x70820000 0x00010000
+wirpcns4.dll 0x70830000 0x00010000
+wirpcrt4.dll 0x70840000 0x00030000
+wisetupa.dll 0x70870000 0x00050000
+witapi32.dll 0x708c0000 0x00010000
+wivcirt.dll 0x708d0000 0x00020000
+wivcrt20.dll 0x708f0000 0x00050000
+wivfw32.dll 0x70940000 0x00010000
+wiwmsui.dll 0x70950000 0x000d0000
+wiws2_32.dll 0x70a20000 0x00010000
+addgrpw.exe 0x01000000 0x00030000
+addusrw.exe 0x01030000 0x00040000
+arp.exe 0x01070000 0x00010000
+at.exe 0x01080000 0x00010000
+atsvc.exe 0x01090000 0x00010000
+attrib.exe 0x010a0000 0x00020000
+autochk.exe 0x010c0000 0x000c0000
+autoconv.exe 0x01180000 0x000d0000
+autolfn.exe 0x01250000 0x00010000
+autorun.exe 0x01260000 0x000b0000
+bootok.exe 0x01310000 0x00020000
+bootvrfy.exe 0x01330000 0x00010000
+cacls.exe 0x01340000 0x00020000
+calc.exe 0x01360000 0x00020000
+cdplayer.exe 0x01380000 0x00030000
+charmap.exe 0x013b0000 0x00020000
+chkdsk.exe 0x013d0000 0x00020000
+cifilter.exe 0x013f0000 0x00010000
+clipbrd.exe 0x01400000 0x00040000
+clipsrv.exe 0x01440000 0x00020000
+clock.exe 0x01460000 0x00020000
+cmd.exe 0x01480000 0x00060000
+comp.exe 0x014e0000 0x00020000
+compact.exe 0x01500000 0x00020000
+control.exe 0x01520000 0x00010000
+convert.exe 0x01530000 0x00020000
+dcomcnfg.exe 0x01550000 0x00030000
+ddeshare.exe 0x01580000 0x00010000
+ddhelp.exe 0x01590000 0x00010000
+dhcpadmn.exe 0x015a0000 0x00070000
+dialer.exe 0x01610000 0x00020000
+diskperf.exe 0x01630000 0x00020000
+dns.exe 0x01650000 0x00030000
+dnsadmin.exe 0x01680000 0x00040000
+doskey.exe 0x016c0000 0x00020000
+drwtsn32.exe 0x016e0000 0x00020000
+eventvwr.exe 0x01700000 0x00030000
+excfg32.exe 0x01730000 0x00010000
+exchng32.exe 0x01740000 0x00010000
+expand.exe 0x01750000 0x00020000
+explorer.exe 0x01770000 0x00070000
+fc.exe 0x017e0000 0x00020000
+find.exe 0x01800000 0x00020000
+findstr.exe 0x01820000 0x00010000
+finger.exe 0x01830000 0x00010000
+fontview.exe 0x01840000 0x00020000
+forcedos.exe 0x01860000 0x00010000
+freecell.exe 0x01870000 0x00020000
+ftp.exe 0x01890000 0x00020000
+grpconv.exe 0x018b0000 0x00020000
+help.exe 0x018d0000 0x00020000
+hostname.exe 0x018f0000 0x00010000
+hypertrm.exe 0x01900000 0x00010000
+iexplore.exe 0x01910000 0x00130000
+inetins.exe 0x01a40000 0x00010000
+internat.exe 0x01a50000 0x00010000
+ipconfig.exe 0x01a60000 0x00010000
+ipxroute.exe 0x01a70000 0x00010000
+jetconv.exe 0x01a80000 0x00020000
+jetpack.exe 0x01aa0000 0x00010000
+kbdsel.exe 0x01ab0000 0x00020000
+label.exe 0x01ad0000 0x00020000
+lcwiz.exe 0x01af0000 0x00030000
+lights.exe 0x01b20000 0x00010000
+llsmgr.exe 0x01b30000 0x00060000
+llssrv.exe 0x01b90000 0x00040000
+lmrepl.exe 0x01bd0000 0x00030000
+locator.exe 0x01c00000 0x00040000
+lodctr.exe 0x01c40000 0x00010000
+logview.exe 0x01c50000 0x00020000
+lpq.exe 0x01c70000 0x00010000
+lpr.exe 0x01c80000 0x00010000
+lsass.exe 0x01c90000 0x00010000
+macfile.exe 0x01ca0000 0x00020000
+mapisp32.exe 0x01cc0000 0x00010000
+mapisrvr.exe 0x01cd0000 0x00010000
+mdisp32.exe 0x01ce0000 0x00020000
+mlset32.exe 0x01d00000 0x00010000
+mplay32.exe 0x01d10000 0x00050000
+mpnotify.exe 0x01d60000 0x00010000
+mspaint.exe 0x01d70000 0x000a0000
+musrmgr.exe 0x01e10000 0x00070000
+nbtstat.exe 0x01e80000 0x00010000
+ncadmin.exe 0x01e90000 0x00060000
+nddeagnt.exe 0x01ef0000 0x00010000
+nddeapir.exe 0x01f00000 0x00010000
+net.exe 0x01f10000 0x00030000
+net1.exe 0x01f40000 0x00050000
+netdde.exe 0x01f90000 0x00040000
+netstat.exe 0x01fd0000 0x00010000
+nmagent.exe 0x01fe0000 0x00010000
+notepad.exe 0x01ff0000 0x00020000
+nslookup.exe 0x02010000 0x00020000
+ntbackup.exe 0x02030000 0x00130000
+ntbooks.exe 0x02160000 0x00020000
+nwconv.exe 0x02180000 0x00080000
+nwscript.exe 0x02200000 0x00040000
+packager.exe 0x02240000 0x00030000
+pax.exe 0x02270000 0x00020000
+pbrush.exe 0x02290000 0x00010000
+perfmon.exe 0x022a0000 0x00050000
+pinball.exe 0x022f0000 0x000b0000
+ping.exe 0x023a0000 0x00010000
+poledit.exe 0x023b0000 0x00040000
+polsetup.exe 0x023f0000 0x00010000
+portuas.exe 0x02400000 0x00010000
+posix.exe 0x02410000 0x00030000
+print.exe 0x02440000 0x00020000
+progman.exe 0x02460000 0x00050000
+psxss.exe 0x024b0000 0x00040000
+quikview.exe 0x024f0000 0x00020000
+rasadmin.exe 0x02510000 0x00040000
+rasautou.exe 0x02550000 0x00010000
+rasdial.exe 0x02560000 0x00010000
+rasman.exe 0x02570000 0x00010000
+rasmon.exe 0x02580000 0x00040000
+rasphone.exe 0x025c0000 0x00020000
+rassprxy.exe 0x025e0000 0x00010000
+rassrv.exe 0x025f0000 0x00020000
+rcp.exe 0x02610000 0x00010000
+rdisk.exe 0x02620000 0x00040000
+recover.exe 0x02660000 0x00020000
+regedit.exe 0x02680000 0x00030000
+regedt32.exe 0x026b0000 0x00060000
+replace.exe 0x02710000 0x00020000
+restore.exe 0x02730000 0x00020000
+rexec.exe 0x02750000 0x00010000
+ripstat.exe 0x02760000 0x00010000
+route.exe 0x02770000 0x00010000
+router.exe 0x02780000 0x00010000
+rpcss.exe 0x02790000 0x00030000
+rplcmd.exe 0x027c0000 0x00020000
+rplcnv.exe 0x027e0000 0x00010000
+rplmgr.exe 0x027f0000 0x00040000
+rplsvc.exe 0x02830000 0x00030000
+rsh.exe 0x02860000 0x00010000
+rundll32.exe 0x02870000 0x00010000
+runonce.exe 0x02880000 0x00010000
+savedump.exe 0x02890000 0x00020000
+scanpst.exe 0x028b0000 0x00070000
+services.exe 0x02920000 0x00040000
+setup.exe 0x02960000 0x00010000
+sfmprint.exe 0x02970000 0x00030000
+sfmpsexe.exe 0x029a0000 0x00010000
+sfmreg.exe 0x029b0000 0x00010000
+sfmsvc.exe 0x029c0000 0x00030000
+shmgrate.exe 0x029f0000 0x00020000
+shrpubw.exe 0x02a10000 0x00040000
+skeys.exe 0x02a50000 0x00020000
+smss.exe 0x02a70000 0x00020000
+sndrec32.exe 0x02a90000 0x00040000
+sndvol32.exe 0x02ad0000 0x00020000
+snmp.exe 0x02af0000 0x00010000
+snmptrap.exe 0x02b00000 0x00010000
+sol.exe 0x02b10000 0x00020000
+sort.exe 0x02b30000 0x00010000
+spinit.exe 0x02b40000 0x00010000
+spoolss.exe 0x02b50000 0x00020000
+sprestrt.exe 0x02b70000 0x00020000
+srvmgr.exe 0x02b90000 0x00050000
+subst.exe 0x02be0000 0x00020000
+syncapp.exe 0x02c00000 0x00020000
+systray.exe 0x02c20000 0x00010000
+tapisrv.exe 0x02c30000 0x00030000
+taskman.exe 0x02c60000 0x00020000
+taskmgr.exe 0x02c80000 0x00030000
+tcpsvcs.exe 0x02cb0000 0x00010000
+telnet.exe 0x02cc0000 0x00030000
+tftp.exe 0x02cf0000 0x00010000
+tracert.exe 0x02d00000 0x00010000
+unlodctr.exe 0x02d10000 0x00010000
+upg351db.exe 0x02d20000 0x00120000
+ups.exe 0x02e40000 0x00010000
+userinit.exe 0x02e50000 0x00010000
+usetup.exe 0x02e60000 0x00020000
+usrmgr.exe 0x02e80000 0x00080000
+wangimg.exe 0x02f00000 0x000b0000
+welcome.exe 0x02fb0000 0x00010000
+winchat.exe 0x02fc0000 0x00020000
+windisk.exe 0x02fe0000 0x00050000
+winfile.exe 0x03030000 0x00080000
+winhlp32.exe 0x030b0000 0x00090000
+winhstb.exe 0x03140000 0x00010000
+winlogon.exe 0x03150000 0x00050000
+winmine.exe 0x031a0000 0x00010000
+winmsd.exe 0x031b0000 0x00040000
+wins.exe 0x031f0000 0x00060000
+winsadmn.exe 0x03250000 0x00080000
+winver.exe 0x032d0000 0x00010000
+wizmgr.exe 0x032e0000 0x00020000
+wordpad.exe 0x03300000 0x00060000
+write.exe 0x03360000 0x00010000
+xcopy.exe 0x03370000 0x00020000
+mcsxnsvc.exe 0x03390000 0x00010000
+ntsd.exe 0x033a0000 0x00090000
+rcmd.exe 0x03430000 0x00010000
+rcmdsvc.exe 0x03440000 0x00010000
+ubnbsvc.exe 0x03450000 0x00010000
+alphakd.exe 0x03460000 0x00040000
+apf32cvt.exe 0x034a0000 0x00020000
+apf32dmp.exe 0x034c0000 0x00010000
+c1.exe 0x034d0000 0x000a0000
+c1xx.exe 0x03570000 0x00130000
+c2.exe 0x036a0000 0x000f0000
+capdump.exe 0x03790000 0x00020000
+capsetup.exe 0x037b0000 0x00020000
+cl.exe 0x037d0000 0x00030000
+compress.exe 0x03800000 0x000a0000
+contents.exe 0x038a0000 0x00010000
+cvdump.exe 0x038b0000 0x00030000
+cvpack.exe 0x038e0000 0x00030000
+cvtres.exe 0x03910000 0x00010000
+ddespy.exe 0x03920000 0x00020000
+dflayout.exe 0x03940000 0x00020000
+dfview.exe 0x03960000 0x00010000
+dlgedit.exe 0x03970000 0x00050000
+dobjview.exe 0x039c0000 0x00020000
+drivers.exe 0x039e0000 0x00020000
+fontedit.exe 0x03a00000 0x00030000
+hcrtf.exe 0x03a30000 0x00090000
+hcw.exe 0x03ac0000 0x000b0000
+i386kd.exe 0x03b70000 0x00040000
+imagedit.exe 0x03bb0000 0x00030000
+irotview.exe 0x03be0000 0x00020000
+lib.exe 0x03c00000 0x00010000
+link.exe 0x03c10000 0x000d0000
+link32.exe 0x03ce0000 0x00010000
+lookmon.exe 0x03cf0000 0x00040000
+makeani.exe 0x03d30000 0x00020000
+masm386.exe 0x03d50000 0x00050000
+mc.exe 0x03da0000 0x00030000
+mep.exe 0x03dd0000 0x00060000
+mibcc.exe 0x03e30000 0x00020000
+midl.exe 0x03e50000 0x00130000
+mipskd.exe 0x03f80000 0x00040000
+mktyplib.exe 0x03fc0000 0x00030000
+nmake.exe 0x03ff0000 0x00020000
+oleview.exe 0x04010000 0x00050000
+pas.exe 0x04060000 0x00040000
+perfmtr.exe 0x040a0000 0x00020000
+pfmon.exe 0x040c0000 0x00030000
+pmon.exe 0x040f0000 0x00020000
+poolmon.exe 0x04110000 0x00040000
+ppckd.exe 0x04150000 0x00040000
+profile.exe 0x04190000 0x00020000
+pstat.exe 0x041b0000 0x00020000
+pview.exe 0x041d0000 0x00030000
+pviewer.exe 0x04200000 0x00020000
+rc.exe 0x04220000 0x00020000
+rebase.exe 0x04240000 0x00020000
+rlman.exe 0x04260000 0x00050000
+rm.exe 0x042b0000 0x00020000
+sc.exe 0x042d0000 0x00020000
+smashlck.exe 0x042f0000 0x00020000
+spy.exe 0x04310000 0x00020000
+symedit.exe 0x04330000 0x00010000
+testdlgs.exe 0x04340000 0x00020000
+testdrvr.exe 0x04360000 0x00060000
+testscrn.exe 0x043c0000 0x00020000
+top.exe 0x043e0000 0x00040000
+undel.exe 0x04420000 0x00020000
+undname.exe 0x04440000 0x00020000
+uuidgen.exe 0x04460000 0x00020000
+vadump.exe 0x04480000 0x01030000
+vdmperf.exe 0x054b0000 0x00020000
+verfix.exe 0x054d0000 0x00020000
+vidcap32.exe 0x054f0000 0x00030000
+windbg.exe 0x05520000 0x00300000
+windbgrm.exe 0x05820000 0x00010000
+windiff.exe 0x05830000 0x00030000
+wperf.exe 0x05860000 0x00030000
+wstcat.exe 0x05890000 0x00020000
+wstdump.exe 0x058b0000 0x00020000
+wstune.exe 0x058d0000 0x00020000
+zoomin.exe 0x058f0000 0x00010000
+zwapi.exe 0x05900000 0x00020000
+access.exe 0x05920000 0x00020000
+acllist.exe 0x05940000 0x00010000
+addfile.exe 0x05950000 0x00010000
+addproj.exe 0x05960000 0x00010000
+adduser.exe 0x05970000 0x00020000
+alias.exe 0x05990000 0x00020000
+apimon.exe 0x059b0000 0x00070000
+applyinf.exe 0x05a20000 0x00020000
+autowrap.exe 0x05a40000 0x00020000
+basewin.exe 0x05a60000 0x00010000
+beep.exe 0x05a70000 0x00020000
+bin2c.exe 0x05a90000 0x00020000
+bind.exe 0x05ab0000 0x00020000
+bingen.exe 0x05ad0000 0x00020000
+binplace.exe 0x05af0000 0x00020000
+bintrack.exe 0x05b10000 0x00020000
+browdeb.exe 0x05b30000 0x00020000
+browmon.exe 0x05b50000 0x00020000
+browse.exe 0x05b70000 0x00010000
+browstat.exe 0x05b80000 0x00020000
+bugboard.exe 0x05ba0000 0x00010000
+build.exe 0x05bb0000 0x00050000
+buildnum.exe 0x05c00000 0x00020000
+cat.exe 0x05c20000 0x00020000
+cats.exe 0x05c40000 0x00010000
+catsrc.exe 0x05c50000 0x00010000
+cdb.exe 0x05c60000 0x00090000
+cdp.exe 0x05cf0000 0x00020000
+certify.exe 0x05d10000 0x00020000
+checkfix.exe 0x05d30000 0x00020000
+checkrel.exe 0x05d50000 0x00030000
+chkalive.exe 0x05d80000 0x00020000
+chksum.exe 0x05da0000 0x00020000
+chkverfy.exe 0x05dc0000 0x00020000
+chmode.exe 0x05de0000 0x00020000
+ciscan.exe 0x05e00000 0x00010000
+cmdevent.exe 0x05e10000 0x00020000
+cmpver.exe 0x05e30000 0x00010000
+compdir.exe 0x05e40000 0x00010000
+cookie.exe 0x05e50000 0x00020000
+cp.exe 0x05e70000 0x00020000
+crash.exe 0x05e90000 0x00020000
+cruel.exe 0x05eb0000 0x00010000
+curridw.exe 0x05ec0000 0x00020000
+dbgdump.exe 0x05ee0000 0x00020000
+dbmon.exe 0x05f00000 0x00010000
+dbwin32.exe 0x05f10000 0x00020000
+dcomp.exe 0x05f30000 0x00030000
+defect.exe 0x05f60000 0x00010000
+delfile.exe 0x05f70000 0x00010000
+delnode.exe 0x05f80000 0x00020000
+delprof.exe 0x05fa0000 0x00020000
+delproj.exe 0x05fc0000 0x00010000
+devpre.exe 0x05fd0000 0x00010000
+dh.exe 0x05fe0000 0x00020000
+dhcpcli.exe 0x06000000 0x00010000
+dhcpcmd.exe 0x06010000 0x00010000
+dhcpins.exe 0x06020000 0x00010000
+dhcploc.exe 0x06030000 0x00010000
+dhcptst.exe 0x06040000 0x00010000
+diamond.exe 0x06050000 0x000b0000
+diamwrap.exe 0x06100000 0x00020000
+diff.exe 0x06120000 0x00020000
+diskedit.exe 0x06140000 0x00040000
+diskmon.exe 0x06180000 0x00020000
+dommon.exe 0x061a0000 0x00020000
+dosdev.exe 0x061c0000 0x00020000
+drivemap.exe 0x061e0000 0x00020000
+dskbench.exe 0x06200000 0x00020000
+dskimage.exe 0x06220000 0x00020000
+du.exe 0x06240000 0x00020000
+dumpchk.exe 0x06260000 0x00020000
+dumpexam.exe 0x06280000 0x00030000
+dumpflop.exe 0x062b0000 0x00020000
+dumpgrp.exe 0x062d0000 0x00020000
+dumpref.exe 0x062f0000 0x00020000
+ech.exe 0x06310000 0x00020000
+echotime.exe 0x06330000 0x00020000
+editreg.exe 0x06350000 0x00020000
+editsym.exe 0x06370000 0x00020000
+enlist.exe 0x06390000 0x00010000
+ethstat.exe 0x063a0000 0x00020000
+exctrlst.exe 0x063c0000 0x00010000
+execmail.exe 0x063d0000 0x00010000
+exp.exe 0x063e0000 0x00020000
+extag.exe 0x06400000 0x00020000
+fcom.exe 0x06420000 0x00020000
+files.exe 0x06440000 0x00170000
+filever.exe 0x065b0000 0x00020000
+filter.exe 0x065d0000 0x00010000
+fix31grp.exe 0x065e0000 0x00020000
+fixdiff.exe 0x06600000 0x00020000
+fixlinks.exe 0x06620000 0x00020000
+forceflt.exe 0x06640000 0x00010000
+forcemrg.exe 0x06650000 0x00010000
+gensrv.exe 0x06660000 0x00020000
+getbin.exe 0x06680000 0x00020000
+getdbg.exe 0x066a0000 0x00030000
+gflags.exe 0x066d0000 0x00020000
+golf.exe 0x066f0000 0x00010000
+grptoreg.exe 0x06700000 0x00020000
+guidlib.exe 0x06720000 0x00020000
+hd.exe 0x06740000 0x00020000
+he.exe 0x06760000 0x00020000
+head.exe 0x06780000 0x00020000
+heapmon.exe 0x067a0000 0x00020000
+hextract.exe 0x067c0000 0x00020000
+hsplit.exe 0x067e0000 0x00020000
+iexpress.exe 0x06800000 0x00040000
+imagecfg.exe 0x06840000 0x00020000
+imagechk.exe 0x06860000 0x00020000
+in.exe 0x06880000 0x00010000
+infs.exe 0x06890000 0x00010000
+infsize.exe 0x068a0000 0x00010000
+ini.exe 0x068b0000 0x00020000
+kbdtool.exe 0x068d0000 0x00020000
+kernprof.exe 0x068f0000 0x00010000
+kernrate.exe 0x06900000 0x00010000
+kerntwk.exe 0x06910000 0x00020000
+kill.exe 0x06930000 0x00020000
+layout.exe 0x06950000 0x00010000
+links.exe 0x06960000 0x00020000
+list.exe 0x06980000 0x00030000
+listmung.exe 0x069b0000 0x00020000
+llscmd.exe 0x069d0000 0x00010000
+llsdbg.exe 0x069e0000 0x00010000
+lnkdump.exe 0x069f0000 0x00020000
+loc.exe 0x06a10000 0x00020000
+local.exe 0x06a30000 0x00010000
+log.exe 0x06a40000 0x00010000
+ls.exe 0x06a50000 0x00020000
+makedisk.exe 0x06a70000 0x00010000
+mapmsg.exe 0x06a80000 0x00020000
+mbytes.exe 0x06aa0000 0x00030000
+mcpyfile.exe 0x06ad0000 0x00010000
+merge.exe 0x06ae0000 0x00030000
+midleb.exe 0x06b10000 0x00020000
+midlpg.exe 0x06b30000 0x00020000
+midlyacc.exe 0x06b50000 0x00060000
+mlayout.exe 0x06bb0000 0x000c0000
+mrc.exe 0x06c70000 0x00020000
+msize.exe 0x06c90000 0x00010000
+mtc.exe 0x06ca0000 0x00010000
+mttf.exe 0x06cb0000 0x00020000
+mttfvwr.exe 0x06cd0000 0x00020000
+munge.exe 0x06cf0000 0x00020000
+mv.exe 0x06d10000 0x00020000
+netclip.exe 0x06d30000 0x00030000
+netjoin.exe 0x06d60000 0x00020000
+netperm.exe 0x06d80000 0x00020000
+nlmon.exe 0x06da0000 0x00010000
+nltest.exe 0x06db0000 0x00030000
+ntimer.exe 0x06de0000 0x00020000
+nvram.exe 0x06e00000 0x00020000
+objdir.exe 0x06e20000 0x00020000
+objmon.exe 0x06e40000 0x00030000
+oeminf.exe 0x06e70000 0x00010000
+order.exe 0x06e80000 0x00020000
+out.exe 0x06ea0000 0x00010000
+paranoia.exe 0x06eb0000 0x00020000
+parcomp.exe 0x06ed0000 0x00020000
+parsync.exe 0x06ef0000 0x00020000
+passprop.exe 0x06f10000 0x00010000
+pcall.exe 0x06f20000 0x00020000
+pcmcmd.exe 0x06f40000 0x00020000
+pdump.exe 0x06f60000 0x00020000
+pegged.exe 0x06f80000 0x00010000
+pperf.exe 0x06f90000 0x00030000
+ppr.exe 0x06fc0000 0x00030000
+pretty.exe 0x06ff0000 0x00020000
+prodfilt.exe 0x07010000 0x00020000
+psxhello.exe 0x07030000 0x00010000
+qgrep.exe 0x07040000 0x00030000
+random.exe 0x07070000 0x00020000
+rathole.exe 0x07090000 0x00010000
+rcdump.exe 0x070a0000 0x00010000
+rcpp.exe 0x070b0000 0x00030000
+readline.exe 0x070e0000 0x00020000
+regback.exe 0x07100000 0x00040000
+regdir.exe 0x07140000 0x00020000
+regdmp.exe 0x07160000 0x00020000
+regfind.exe 0x07180000 0x00020000
+regini.exe 0x071a0000 0x00030000
+regtogrp.exe 0x071d0000 0x00020000
+remote.exe 0x071f0000 0x00020000
+rescan.exe 0x07210000 0x00020000
+resmon.exe 0x07230000 0x00030000
+reversi.exe 0x07260000 0x00010000
+rollback.exe 0x07270000 0x00010000
+roshare.exe 0x07280000 0x00020000
+sadmin.exe 0x072a0000 0x00050000
+sclist.exe 0x072f0000 0x00020000
+scomp.exe 0x07310000 0x00010000
+secedit.exe 0x07320000 0x00020000
+seclist.exe 0x07340000 0x00020000
+setlink.exe 0x07360000 0x00010000
+showperf.exe 0x07370000 0x00020000
+shutdown.exe 0x07390000 0x00010000
+simbad.exe 0x073a0000 0x00020000
+size.exe 0x073c0000 0x00010000
+sleep.exe 0x073d0000 0x00020000
+slm.exe 0x073f0000 0x00050000
+slmck.exe 0x07440000 0x00040000
+slmdiff.exe 0x07480000 0x00020000
+slmed.exe 0x074a0000 0x00050000
+smbtrace.exe 0x074f0000 0x00030000
+snake.exe 0x07520000 0x00010000
+snmputil.exe 0x07530000 0x00010000
+solidpp.exe 0x07540000 0x00020000
+splinfo.exe 0x07560000 0x00010000
+splitsym.exe 0x07570000 0x00020000
+srch.exe 0x07590000 0x00040000
+srvname.exe 0x075d0000 0x00020000
+ssptest.exe 0x075f0000 0x00010000
+ssync.exe 0x07600000 0x00010000
+startpgm.exe 0x07610000 0x00020000
+status.exe 0x07630000 0x00010000
+strings.exe 0x07640000 0x00020000
+stripcv.exe 0x07660000 0x00020000
+stripinf.exe 0x07680000 0x00010000
+strmdbg.exe 0x07690000 0x00010000
+structo.exe 0x076a0000 0x00020000
+suck.exe 0x076c0000 0x00020000
+switcher.exe 0x076e0000 0x00010000
+sync.exe 0x076f0000 0x00020000
+sysdiff.exe 0x07710000 0x00020000
+tail.exe 0x07730000 0x00020000
+taipei.exe 0x07750000 0x00020000
+takeown.exe 0x07770000 0x00020000
+tc.exe 0x07790000 0x00020000
+tee.exe 0x077b0000 0x00020000
+tictac.exe 0x077d0000 0x00010000
+tile.exe 0x077e0000 0x00010000
+timeit.exe 0x077f0000 0x00020000
+timer.exe 0x07810000 0x00020000
+tlist.exe 0x07830000 0x00020000
+topdesk.exe 0x07850000 0x00080000
+touch.exe 0x078d0000 0x00020000
+tpdiff.exe 0x078f0000 0x00020000
+trans.exe 0x07910000 0x00020000
+tz.exe 0x07930000 0x00020000
+uixport.exe 0x07950000 0x00020000
+units.exe 0x07970000 0x00010000
+unmerge.exe 0x07980000 0x00020000
+upd.exe 0x079a0000 0x00020000
+upddbg.exe 0x079c0000 0x00020000
+updrn.exe 0x079e0000 0x00020000
+vdesk.exe 0x07a00000 0x00010000
+vi.exe 0x07a10000 0x00030000
+walk.exe 0x07a40000 0x00020000
+wc.exe 0x07a60000 0x00020000
+wcshdr.exe 0x07a80000 0x00020000
+wextract.exe 0x07aa0000 0x00030000
+where.exe 0x07ad0000 0x00020000
+winobj.exe 0x07af0000 0x00050000
+winschk.exe 0x07b40000 0x00ba0000
+winscl.exe 0x086e0000 0x00010000
+winsdrv.exe 0x086f0000 0x00010000
+winvtp.exe 0x08700000 0x00020000
+ws.exe 0x08720000 0x00020000
+ws2hdr.exe 0x08740000 0x00010000
+xdosnet.exe 0x08750000 0x00020000
+xerox.exe 0x08770000 0x00020000
+yapt.exe 0x08790000 0x00020000
+ync.exe 0x087b0000 0x00020000
+z.exe 0x087d0000 0x00060000
+accupd.exe 0x08830000 0x00020000
+accupd2.exe 0x08850000 0x00020000
+actclt.exe 0x08870000 0x00020000
+actsrv.exe 0x08890000 0x00010000
+bldvtbl.exe 0x088a0000 0x00020000
+capiinst.exe 0x088c0000 0x00020000
+ccsetup.exe 0x088e0000 0x00010000
+client.exe 0x088f0000 0x00010000
+clipdump.exe 0x08900000 0x00020000
+cntroutl.exe 0x08920000 0x00040000
+convgrp.exe 0x08960000 0x00020000
+cpustres.exe 0x08980000 0x00010000
+cputgen.exe 0x08990000 0x00020000
+ctt2rle.exe 0x089b0000 0x00020000
+ddmprxy.exe 0x089d0000 0x00010000
+dfsetup.exe 0x089e0000 0x00010000
+dftool.exe 0x089f0000 0x00010000
+dhcmp.exe 0x08a00000 0x00020000
+discon.exe 0x08a20000 0x00010000
+disctest.exe 0x08a30000 0x00010000
+dnscmd.exe 0x08a40000 0x00010000
+dnssetup.exe 0x08a50000 0x00010000
+dnsstat.exe 0x08a60000 0x00010000
+dphhogs.exe 0x08a70000 0x00010000
+dskdump.exe 0x08a80000 0x00020000
+dummy.exe 0x08aa0000 0x00010000
+dumpbin.exe 0x08ab0000 0x00010000
+dumpclip.exe 0x08ac0000 0x00020000
+empty.exe 0x08ae0000 0x00020000
+emptyq.exe 0x08b00000 0x00030000
+espexe.exe 0x08b30000 0x00010000
+execslm.exe 0x08b40000 0x00010000
+explalt.exe 0x08b50000 0x00070000
+fail.exe 0x08bc0000 0x00010000
+faxstres.exe 0x08bd0000 0x00010000
+fileback.exe 0x08be0000 0x00010000
+filtest.exe 0x08bf0000 0x00010000
+ftc.exe 0x08c00000 0x00020000
+gdibench.exe 0x08c20000 0x00050000
+gdistats.exe 0x08c70000 0x00020000
+genthnk.exe 0x08c90000 0x00030000
+getmttf.exe 0x08cc0000 0x00020000
+htmboard.exe 0x08ce0000 0x00010000
+icntrotl.exe 0x08cf0000 0x00040000
+impchk.exe 0x08d30000 0x00020000
+infilter.exe 0x08d50000 0x00020000
+init.exe 0x08d70000 0x00020000
+install.exe 0x08d90000 0x00020000
+ipsetup.exe 0x08db0000 0x00010000
+ipxping.exe 0x08dc0000 0x00010000
+ipxrgcfg.exe 0x08dd0000 0x00010000
+ipxrtvw.exe 0x08de0000 0x00030000
+isvrotl.exe 0x08e10000 0x00040000
+leakyapp.exe 0x08e50000 0x00010000
+license.exe 0x08e60000 0x00010000
+logdiff.exe 0x08e70000 0x00020000
+machrid.exe 0x08e90000 0x00020000
+mcopy.exe 0x08eb0000 0x00010000
+memsnap.exe 0x08ec0000 0x00020000
+mprouter.exe 0x08ee0000 0x00010000
+netdfs.exe 0x08ef0000 0x00010000
+netmon.exe 0x08f00000 0x000e0000
+nsnmp.exe 0x08fe0000 0x00010000
+ntgpcedt.exe 0x08ff0000 0x00020000
+olebind.exe 0x09010000 0x00030000
+olecnfg.exe 0x09040000 0x00020000
+olesrv.exe 0x09060000 0x00010000
+oletest.exe 0x09070000 0x00020000
+pdlcnfig.exe 0x09090000 0x00020000
+pdlsvc.exe 0x090b0000 0x00020000
+pfm2ifi.exe 0x090d0000 0x00020000
+pifdump.exe 0x090f0000 0x00020000
+plotgpc.exe 0x09110000 0x00020000
+plumbing.exe 0x09130000 0x00020000
+poolsnap.exe 0x09150000 0x00030000
+ppm2pps.exe 0x09180000 0x00020000
+printman.exe 0x091a0000 0x00040000
+q.exe 0x091e0000 0x00040000
+quickres.exe 0x09220000 0x00010000
+rasusers.exe 0x09230000 0x00010000
+regdiff.exe 0x09240000 0x00020000
+rendtest.exe 0x09260000 0x00010000
+riptest.exe 0x09270000 0x00010000
+rladmin.exe 0x09280000 0x00050000
+rledit.exe 0x092d0000 0x00060000
+rlquiked.exe 0x09330000 0x00050000
+routemon.exe 0x09380000 0x00010000
+rtradmin.exe 0x09390000 0x00030000
+server.exe 0x093c0000 0x00020000
+setacc.exe 0x093e0000 0x00020000
+setpriv.exe 0x09400000 0x00020000
+setprop.exe 0x09420000 0x00020000
+sign.exe 0x09440000 0x00020000
+simpcntr.exe 0x09460000 0x00030000
+simpdnd.exe 0x09490000 0x00030000
+simpsvr.exe 0x094c0000 0x00030000
+smbrdr.exe 0x094f0000 0x00020000
+sortlog.exe 0x09510000 0x00020000
+sortpp.exe 0x09530000 0x00020000
+stgdrt.exe 0x09550000 0x00010000
+stress.exe 0x09560000 0x00010000
+sublocal.exe 0x09570000 0x00020000
+svroutl.exe 0x09590000 0x00030000
+tapiupr.exe 0x095c0000 0x00010000
+tb20.exe 0x095d0000 0x00040000
+terminal.exe 0x09610000 0x00050000
+test.exe 0x09660000 0x00010000
+testsrv.exe 0x09670000 0x00010000
+tlocmgr.exe 0x09680000 0x00010000
+tpctl.exe 0x09690000 0x00050000
+upedit.exe 0x096e0000 0x00020000
+w3t.exe 0x09700000 0x00020000
+wansetup.exe 0x09720000 0x00010000
+wcache.exe 0x09730000 0x00020000
+win95cmd.exe 0x09750000 0x00080000
+winsdmp.exe 0x097d0000 0x00010000
+wntipcfg.exe 0x097e0000 0x00020000
+wrapit.exe 0x09800000 0x00020000
+csrss.exe 0x5ffe0000 0x00010000
+winsrv.dll 0x5ff90000 0x00050000
+basesrv.dll 0x5ff70000 0x00020000
+csrsrv.dll 0x5ff60000 0x00010000
+vga.dll 0x5ff50000 0x00010000
+kbdus.dll 0x5ff40000 0x00010000
+kbdbe.dll 0x5ff30000 0x00010000
+kbdbr.dll 0x5ff30000 0x00010000
+kbdca.dll 0x5ff30000 0x00010000
+kbdcz.dll 0x5ff30000 0x00010000
+kbdda.dll 0x5ff30000 0x00010000
+kbddv.dll 0x5ff30000 0x00010000
+kbdes.dll 0x5ff30000 0x00010000
+kbdfc.dll 0x5ff30000 0x00010000
+kbdfi.dll 0x5ff30000 0x00010000
+kbdfr.dll 0x5ff30000 0x00010000
+kbdgr.dll 0x5ff30000 0x00010000
+kbdhe.dll 0x5ff30000 0x00010000
+kbdhu.dll 0x5ff30000 0x00010000
+kbdic.dll 0x5ff30000 0x00010000
+kbdit.dll 0x5ff30000 0x00010000
+kbdla.dll 0x5ff30000 0x00010000
+kbdne.dll 0x5ff30000 0x00010000
+kbdno.dll 0x5ff30000 0x00010000
+kbdpl1.dll 0x5ff30000 0x00010000
+kbdpo.dll 0x5ff30000 0x00010000
+kbdru.dll 0x5ff30000 0x00010000
+kbdsf.dll 0x5ff30000 0x00010000
+kbdsg.dll 0x5ff30000 0x00010000
+kbdsl.dll 0x5ff30000 0x00010000
+kbdsp.dll 0x5ff30000 0x00010000
+kbdsw.dll 0x5ff30000 0x00010000
+kbdtuf.dll 0x5ff30000 0x00010000
+kbdtuq.dll 0x5ff30000 0x00010000
+kbduk.dll 0x5ff30000 0x00010000
+kbdusl.dll 0x5ff30000 0x00010000
+kbdusr.dll 0x5ff30000 0x00010000
+kbdusx.dll 0x5ff30000 0x00010000
+ati.dll 0x5ff00000 0x00030000
+s3.dll 0x5ff10000 0x00020000
+weitekp9.dll 0x5ff10000 0x00020000
+framebuf.dll 0x5ff20000 0x00010000
+qv.dll 0x5ff10000 0x00020000
+wow32.dll 0x0ff60000 0x00090000
+vcdex.dll 0x0ff50000 0x00010000
+vdmredir.dll 0x0ff30000 0x00020000
+ntvdm.exe 0x0fc80000 0x002b0000
+wx86.dll 0x60000000 0x00010000
+wx86cpu.dll 0x60010000 0x00290000
+wigdi32.dll 0x5ffe0000 0x00010000
+whgdi32.dll 0x5ffc0000 0x00020000
+wiuser32.dll 0x5ffa0000 0x00020000
+whuser32.dll 0x5ff70000 0x00030000
+wikrnl32.dll 0x5ff60000 0x00010000
+whkrnl32.dll 0x5ff30000 0x00030000
+wishll32.dll 0x5ff20000 0x00010000
+whshll32.dll 0x5ff00000 0x00020000
+wicrtdll.dll 0x5fed0000 0x00030000
+wivcrt.dll 0x5fe80000 0x00050000
+wivcrt40.dll 0x5fe60000 0x00020000
+wintdll.dll 0x5fe40000 0x00020000
+whntdll.dll 0x5fe30000 0x00010000
+wiadv32.dll 0x5fe20000 0x00010000
+whadv32.dll 0x5fe00000 0x00020000
+wimpr.dll 0x5fdf0000 0x00010000
+whmpr.dll 0x5fde0000 0x00010000
+wiversn.dll 0x5fdd0000 0x00010000
+whversn.dll 0x5fdc0000 0x00010000
+wilz32.dll 0x5fdb0000 0x00010000
+whlz32.dll 0x5fda0000 0x00010000
+wiwspool.dll 0x5fd90000 0x00010000
+whwspool.dll 0x5fd80000 0x00010000
+wiwinmm.dll 0x5fd70000 0x00010000
+whwinmm.dll 0x5fd60000 0x00010000
+wisock32.dll 0x5fd50000 0x00010000
+whsock32.dll 0x5fd40000 0x00010000
+wiole32.dll 0x5fd30000 0x00010000
+whole32.dll 0x5fc90000 0x000a0000
+wiopengl.dll 0x5fc80000 0x00010000
+whopengl.dll 0x5fc60000 0x00020000
+wicdlg32.dll 0x5fc50000 0x00010000
+whcdlg32.dll 0x5fc40000 0x00010000
+wicctl32.dll 0x5fc30000 0x00010000
+whcctl32.dll 0x5fc20000 0x00010000
+wioleaut.dll 0x5fba0000 0x00080000
+wioledlg.dll 0x5fb90000 0x00010000
+wholedlg.dll 0x5fb80000 0x00010000
+wx86e.dll 0x5f8d0000 0x002b0000
+iprop.dll 0x5f800000 0x00040000
diff --git a/public/sdk/lib/system.mdb b/public/sdk/lib/system.mdb
new file mode 100644
index 000000000..68f6b06c0
--- /dev/null
+++ b/public/sdk/lib/system.mdb
Binary files differ
diff --git a/public/sdk/rpc16/ct/errdb.h b/public/sdk/rpc16/ct/errdb.h
new file mode 100644
index 000000000..986b6d931
--- /dev/null
+++ b/public/sdk/rpc16/ct/errdb.h
@@ -0,0 +1,2193 @@
+/****************************************************************************
+ ZZZ - error in all cases
+ AZZ - no error when : app_config
+ AZM - no error when : app_config + ms_ext
+ ACZ - no error when : app_config + c_ext
+ ACM - no error when : app_config + c_ext + ms_ext
+ ZCZ - no error when : c_ext
+ ZCM - no error when : c_ext + ms_ext
+ ZZM - no error when : ms_ext
+
+ Therefore: The following are the configurations
+
+ -ms_ext on: ZZM | ZCM | ACM | AZM
+ ----------
+ -c_ext on: ZCM | ZCZ | ACM | ACZ
+ ----------
+
+ -ms_ext or -c_ext on: ZZM | ZCM | ACM | AZM | ZCZ | ACZ
+ --------------------
+
+ -app_config on : AZZ | AZM | ACZ | ACM
+ ----------------
+ ****************************************************************************/
+
+#define ERR_ALWAYS ( ZZZ )
+#define MS_EXT_SET ( ZZM | ZCM | ACM | AZM )
+#define C_EXT_SET ( ZCM | ZCZ | ACM | ACZ )
+#define MS_OR_C_EXT_SET ( MS_EXT_SET | C_EXT_SET )
+#define APP_CONFIG_SET ( AZZ | AZM | ACZ | ACM )
+
+
+
+const ERRDB ErrorDataBase[] = {
+
+ {
+CHECK_ERR( NO_INPUT_FILE)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"missing source-file name"
+}
+
+,{
+CHECK_ERR( INPUT_OPEN)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"cannot open input file"
+}
+
+,{
+CHECK_ERR( INPUT_READ)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"error while reading input file"
+}
+
+,{
+CHECK_ERR( PREPROCESSOR_ERROR)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"error returned by the C preprocessor"
+}
+
+,{
+CHECK_ERR( PREPROCESSOR_EXEC)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"cannot execute C preprocessor"
+}
+
+,{
+CHECK_ERR( NO_PREPROCESSOR)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"cannot find C preprocessor"
+}
+
+,{
+CHECK_ERR( PREPROCESSOR_INVALID )
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"invalid C preprocessor executable"
+}
+
+,{
+CHECK_ERR( SWITCH_REDEFINED)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
+,"switch specified more than once on command line :"
+}
+
+,{
+CHECK_ERR( UNKNOWN_SWITCH)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, NOWARN )
+,"unknown switch"
+}
+
+,{
+CHECK_ERR( UNKNOWN_ARGUMENT)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
+,"unknown argument ignored"
+}
+
+,{
+CHECK_ERR( UNIMPLEMENTED_SWITCH)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
+,"switch not implemented"
+}
+
+,{
+CHECK_ERR( MISSING_ARG)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"argument(s) missing for switch"
+}
+
+,{
+CHECK_ERR( ILLEGAL_ARGUMENT)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"argument illegal for switch /"
+}
+
+,{
+CHECK_ERR( BAD_SWITCH_SYNTAX)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"illegal syntax for switch"
+}
+
+,{
+CHECK_ERR( NO_CPP_OVERRIDES)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
+,"/no_cpp overrides /cpp_cmd and /cpp_opt"
+}
+
+,{
+CHECK_ERR( NO_WARN_OVERRIDES)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
+,"/W0 or /no_warn overrides warning-level switch"
+}
+
+,{
+CHECK_ERR( INTERMEDIATE_FILE_CREATE)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"cannot create intermediate file"
+}
+
+,{
+CHECK_ERR( SERVER_AUX_FILE_NOT_SPECIFIED)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"must specify /server(aux/all) with cswtch"
+}
+
+,{
+CHECK_ERR( OUT_OF_SYSTEM_FILE_HANDLES)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"out of system file handles"
+}
+
+,{
+CHECK_ERR( BOTH_CSWTCH_SSWTCH)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"cannot specify both /cswtch and /sswtch"
+}
+
+,{
+CHECK_ERR( CANNOT_OPEN_RESP_FILE)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"cannot open response file"
+}
+
+,{
+CHECK_ERR( ILLEGAL_CHAR_IN_RESP_FILE)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"illegal character(s) found in response file"
+}
+
+,{
+CHECK_ERR( MISMATCHED_PREFIX_PAIR)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"mismatch in argument pair for switch"
+}
+
+,{
+CHECK_ERR( NESTED_RESP_FILE)
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"nested invocation of response files is illegal"
+}
+
+
+,{
+CHECK_ERR( ABSTRACT_DECL )
+ MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"must specify /c_ext for abstract declarators"
+}
+
+,{
+CHECK_ERR( ACTUAL_DECLARATION )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"instantiation of data is illegal; you must use \"extern\" or \"static\""
+}
+
+,{
+CHECK_ERR( C_STACK_OVERFLOW)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"compiler stack overflow"
+}
+
+,{
+CHECK_ERR( DUPLICATE_DEFINITION)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"redefinition"
+}
+
+,{
+CHECK_ERR( NO_HANDLE_DEFINED_FOR_PROC )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
+,"[auto_handle] binding will be used"
+}
+
+,{
+CHECK_ERR( OUT_OF_MEMORY)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"out of memory"
+}
+
+,{
+CHECK_ERR( RECURSIVE_DEF)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"recursive definition"
+}
+
+,{
+CHECK_ERR( REDUNDANT_IMPORT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
+,"import ignored; file already imported :"
+}
+
+,{
+CHECK_ERR( SPARSE_ENUM )
+ MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"sparse enums require /c_ext or /ms_ext"
+}
+
+,{
+CHECK_ERR( UNDEFINED_SYMBOL )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"undefined symbol"
+}
+
+,{
+CHECK_ERR( UNDEFINED_TYPE)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"type used in ACF file not defined in IDL file"
+}
+
+,{
+CHECK_ERR( UNRESOLVED_TYPE)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"unresolved type declaration"
+}
+
+,{
+CHECK_ERR( WCHAR_CONSTANT_NOT_OSF )
+ MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"use of wide-character constants requires /ms_ext or /c_ext"
+}
+
+,{
+CHECK_ERR( WCHAR_STRING_NOT_OSF )
+ MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"use of wide character strings requires /ms_ext or /c_ext"
+}
+
+,{
+CHECK_ERR( WCHAR_T_ILLEGAL)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"inconsistent redefinition of type wchar_t"
+}
+
+,{
+CHECK_ERR( TYPELIB_NOT_LOADED )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"importlib not found"
+}
+
+,{
+CHECK_ERR( TWO_LIBRARIES )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"two library blocks"
+}
+
+,{
+CHECK_ERR( NO_IDISPATCH )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"the dispinterface statement requires a definition for IDispatch"
+}
+
+,{
+CHECK_ERR( ERR_TYPELIB )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"error accessing type library"
+}
+
+,{
+CHECK_ERR( ERR_TYPEINFO )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"error accessing type info"
+}
+
+,{
+CHECK_ERR( ERR_TYPELIB_GENERATION )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"error generating type library"
+}
+
+,{
+CHECK_ERR( DUPLICATE_IID )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"duplicate id"
+}
+
+,{
+CHECK_ERR( BAD_ENTRY_VALUE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"illegal or missing value for entry attribute"
+}
+
+,{
+CHECK_ERR( ASSUMING_CHAR)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 5 )
+,"error recovery assumes"
+}
+
+,{
+CHECK_ERR( DISCARDING_CHAR)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 5 )
+,"error recovery discards"
+}
+
+,{
+CHECK_ERR( BENIGN_SYNTAX_ERROR)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"syntax error"
+}
+
+,{
+CHECK_ERR( SYNTAX_ERROR)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"cannot recover from earlier syntax errors; aborting compilation"
+}
+
+,{
+CHECK_ERR( UNKNOWN_PRAGMA_OPTION)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"unknown pragma option"
+}
+
+,{
+CHECK_ERR( UNIMPLEMENTED_FEATURE)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"feature not implemented"
+}
+
+,{
+CHECK_ERR( UNIMPLEMENTED_TYPE)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"type not implemented"
+}
+
+,{
+CHECK_ERR( EXPR_DEREF_ON_NON_POINTER)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"non-pointer used in a dereference operation"
+}
+
+,{
+CHECK_ERR( EXPR_DIV_BY_ZERO)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"expression has a divide by zero"
+}
+
+,{
+CHECK_ERR( EXPR_INCOMPATIBLE_TYPES)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"expression uses incompatible types"
+}
+
+,{
+CHECK_ERR( EXPR_INDEXING_NON_ARRAY )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"non-array expression uses index operator"
+}
+
+,{
+CHECK_ERR( EXPR_LHS_NON_COMPOSITE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"left-hand side of expression does not evaluate to struct/union/enum"
+}
+
+,{
+CHECK_ERR( EXPR_NOT_CONSTANT)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"constant expression expected"
+}
+
+,{
+CHECK_ERR( EXPR_NOT_EVALUATABLE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"expression cannot be evaluated at compile time"
+}
+
+,{
+CHECK_ERR( EXPR_NOT_IMPLEMENTED )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"expression not implemented"
+}
+
+,{
+CHECK_ERR( NO_PTR_DEFAULT_ON_INTERFACE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"no [pointer_default] attribute specified, assuming [unique] for all unattributed pointers"
+}
+
+,{
+CHECK_ERR( DERIVES_FROM_PTR_TO_CONF )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[out] only parameter cannot be a pointer to an open structure"
+}
+
+,{
+CHECK_ERR( DERIVES_FROM_UNSIZED_STRING )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[out] only parameter cannot be an unsized string"
+}
+
+,{
+CHECK_ERR( NON_PTR_OUT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[out] parameter is not a pointer"
+}
+
+,{
+CHECK_ERR( OPEN_STRUCT_AS_PARAM)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"open structure cannot be a parameter"
+}
+
+,{
+CHECK_ERR( OUT_CONTEXT_GENERIC_HANDLE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[out] context handle/generic handle must be specified as a pointer to that handle type"
+}
+
+,{
+CHECK_ERR( CTXT_HDL_TRANSMIT_AS )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"context handle must not derive from a type that has the [transmit_as] attribute"
+}
+
+,{
+CHECK_ERR( PARAM_IS_ELIPSIS )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"cannot specify a variable number of arguments to a remote procedure"
+}
+
+,{
+CHECK_ERR( VOID_PARAM_WITH_NAME)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"named parameter cannot be \"void\""
+}
+
+,{
+CHECK_ERR( HANDLE_NOT_FIRST )
+ MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"only the first parameter can be a binding handle; you must specify the /ms_ext switch"
+}
+
+,{
+CHECK_ERR( PROC_PARAM_COMM_STATUS)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"cannot use [comm_status] on both a parameter and a return type"
+}
+
+,{
+CHECK_ERR( LOCAL_ATTR_ON_PROC)
+ MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"[local] attribute on a procedure requires /ms_ext"
+}
+
+,{
+CHECK_ERR( ILLEGAL_USE_OF_PROPERTY_ATTRIBUTE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"property attributes may only be used with procedures"
+}
+
+,{
+CHECK_ERR( MULTIPLE_PROPERTY_ATTRIBUTES )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"a procedure may not have more than one property attribute"
+}
+
+,{
+CHECK_ERR( CONFORMANT_ARRAY_NOT_LAST)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"field deriving from a conformant array must be the last member of the structure"
+}
+
+,{
+CHECK_ERR( DUPLICATE_CASE)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"duplicate [case] label"
+}
+
+,{
+CHECK_ERR( NO_UNION_DEFAULT)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"no [default] case specified for discriminated union"
+}
+
+,{
+CHECK_ERR( ATTRIBUTE_ID_UNRESOLVED)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"attribute expression cannot be resolved"
+}
+
+,{
+CHECK_ERR( ATTR_MUST_BE_INT)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"attribute expression must be of integral, non-hyper type"
+}
+
+,{
+CHECK_ERR( BYTE_COUNT_INVALID)
+ MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"[byte_count] requires /ms_ext"
+}
+,{
+CHECK_ERR( BYTE_COUNT_NOT_OUT_PTR )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[byte_count] can be applied only to out parameters of pointer type"
+}
+
+,{
+CHECK_ERR( BYTE_COUNT_ON_CONF )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[byte_count] cannot be specified on a pointer to a conformant array or structure"
+}
+
+,{
+CHECK_ERR( BYTE_COUNT_PARAM_NOT_IN )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter specifying the byte count is not [in]"
+}
+
+,{
+CHECK_ERR( BYTE_COUNT_PARAM_NOT_INTEGRAL )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter specifying the byte count is not an integral type"
+}
+
+,{
+CHECK_ERR( BYTE_COUNT_WITH_SIZE_ATTR )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"[byte_count] cannot be specified on a parameter with size attributes"
+}
+
+,{
+CHECK_ERR( CASE_EXPR_NOT_CONST)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[case] expression is not constant"
+}
+
+,{
+CHECK_ERR( CASE_EXPR_NOT_INT)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[case] expression is not of integral type"
+}
+
+,{
+CHECK_ERR( CONTEXT_HANDLE_VOID_PTR )
+ MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"specifying [context_handle] on a type other than void * requires /ms_ext"
+}
+
+,{
+CHECK_ERR( ERROR_STATUS_T_REPEATED)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"cannot specify more than one parameter with each of comm_status/fault_status"
+}
+
+,{
+CHECK_ERR( E_STAT_T_MUST_BE_PTR_TO_E )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"comm_status/fault_status parameter must be an [out] only pointer parameter"
+}
+
+,{
+CHECK_ERR( ENDPOINT_SYNTAX)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"endpoint syntax error"
+}
+
+,{
+CHECK_ERR( INAPPLICABLE_ATTRIBUTE)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"inapplicable attribute"
+}
+
+,{
+CHECK_ERR( ALLOCATE_INVALID)
+ MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"[allocate] requires /ms_ext"
+}
+
+,{
+CHECK_ERR( INVALID_ALLOCATE_MODE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"invalid [allocate] mode"
+}
+
+,{
+CHECK_ERR( INVALID_SIZE_ATTR_ON_STRING)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"length attributes cannot be applied with string attribute"
+}
+
+,{
+CHECK_ERR( LAST_AND_LENGTH)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[last_is] and [length_is] cannot be specified at the same time"
+}
+
+,{
+CHECK_ERR( MAX_AND_SIZE)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[max_is] and [size_is] cannot be specified at the same time"
+}
+
+,{
+CHECK_ERR( NO_SWITCH_IS )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"no [switch_is] attribute specified at use of union"
+}
+
+,{
+CHECK_ERR( NO_UUID_SPECIFIED)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"no [uuid] specified"
+}
+
+,{
+CHECK_ERR( UUID_LOCAL_BOTH_SPECIFIED)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
+,"[uuid] ignored on [local] interface"
+}
+
+,{
+CHECK_ERR( SIZE_LENGTH_TYPE_MISMATCH )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"type mismatch between length and size attribute expressions"
+}
+
+,{
+CHECK_ERR( STRING_NOT_ON_BYTE_CHAR)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[string] attribute must be specified \"byte\" \"char\" or \"wchar_t\" array or pointer"
+}
+
+,{
+CHECK_ERR( SWITCH_TYPE_MISMATCH )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"mismatch between the type of the [switch_is] expression and the switch type of the union"
+}
+
+,{
+CHECK_ERR( TRANSMIT_AS_CTXT_HANDLE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[transmit_as] must not be applied to a type that derives from a context handle"
+}
+
+,{
+CHECK_ERR( TRANSMIT_AS_NON_RPCABLE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[transmit_as] must specify a transmissible type"
+}
+
+,{
+CHECK_ERR( TRANSMIT_AS_POINTER )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"transmitted type must not be a pointer or derive from a pointer"
+}
+
+,{
+CHECK_ERR( TRANSMIT_TYPE_CONF )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"presented type must not derive from a conformant/varying array, its pointer equivalent or a conformant/varying structure"
+}
+
+,{
+CHECK_ERR( UUID_FORMAT)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[uuid] format is incorrect"
+}
+
+,{
+CHECK_ERR( UUID_NOT_HEX)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"uuid is not a hex number"
+}
+
+,{
+CHECK_ERR( OPTIONAL_PARAMS_MUST_BE_LAST)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"optional parameters must come at the end of the parameter list"
+}
+
+,{
+CHECK_ERR( DLLNAME_REQUIRED )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[dllname] required when [entry] is used:"
+}
+
+,{
+CHECK_ERR( INVALID_USE_OF_BINDABLE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[bindable] is invalid without [propget], [propput], or [propputref]"
+}
+
+,{
+CHECK_ERR( ACF_INTERFACE_MISMATCH)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"interface name specified in the ACF file does not match that specified in the IDL file"
+}
+
+,{
+CHECK_ERR( CONFLICTING_ATTR)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"duplicated attribute"
+}
+
+,{
+CHECK_ERR( INVALID_COMM_STATUS_PARAM )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter with [comm_status] or [fault_status] attribute must be a pointer to type error_status_t"
+}
+
+,{
+CHECK_ERR( LOCAL_PROC_IN_ACF)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"a [local] procedure cannot be specified in ACF file"
+}
+
+,{
+CHECK_ERR( TYPE_HAS_NO_HANDLE)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"specified type is not defined as a handle"
+}
+
+,{
+CHECK_ERR( UNDEFINED_PROC )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"procedure undefined"
+}
+
+,{
+CHECK_ERR( UNDEF_PARAM_IN_IDL)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"this parameter does not exist in the IDL file"
+}
+
+,{
+CHECK_ERR( ARRAY_BOUNDS_CONSTRUCT_BAD )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"this array bounds construct is not supported"
+}
+
+,{
+CHECK_ERR( ILLEGAL_ARRAY_BOUNDS)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"array bound specification is illegal"
+}
+
+,{
+CHECK_ERR( ILLEGAL_CONFORMANT_ARRAY)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"pointer to a conformant array or an array that contains a conformant array is not supported"
+}
+
+,{
+CHECK_ERR( UNSIZED_ARRAY)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"pointee / array does not derive any size"
+}
+
+,{
+CHECK_ERR( NOT_FIXED_ARRAY)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"only fixed arrays and SAFEARRAYs are legal in a type library"
+}
+
+,{
+CHECK_ERR( SAFEARRAY_USE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"SAFEARRAYs are only legal inside a library block"
+}
+
+,{
+CHECK_ERR( CHAR_CONST_NOT_TERMINATED )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"badly formed character constant"
+}
+
+,{
+CHECK_ERR( EOF_IN_COMMENT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"end of file found in comment"
+}
+
+,{
+CHECK_ERR( EOF_IN_STRING )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"end of file found in string"
+}
+
+,{
+CHECK_ERR( ID_TRUNCATED )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 4 )
+,"identifier length exceeds 31 characters"
+}
+
+,{
+CHECK_ERR( NEWLINE_IN_STRING )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"end of line found in string"
+}
+
+,{
+CHECK_ERR( STRING_TOO_LONG )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"string constant exceeds limit of 255 characters"
+}
+
+,{
+CHECK_ERR( IDENTIFIER_TOO_LONG )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"identifier exceeds limit of 255 characters and has been truncated"
+}
+
+,{
+CHECK_ERR( CONSTANT_TOO_BIG )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"constant too big"
+}
+
+,{
+CHECK_ERR( ERROR_OPENING_FILE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"error in opening file"
+}
+
+,{
+CHECK_ERR( ERR_BIND )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"error binding to function"
+}
+
+,{
+CHECK_ERR( ERR_INIT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"error initializing OLE"
+}
+
+,{
+CHECK_ERR( ERR_LOAD )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"error loading library"
+}
+
+,{
+CHECK_ERR( UNIQUE_FULL_PTR_OUT_ONLY )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[out] only parameter must not derive from a top-level [unique] or [ptr] pointer/array"
+}
+
+,{
+CHECK_ERR( BAD_ATTR_NON_RPC_UNION )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"attribute is not applicable to this non-rpcable union"
+}
+
+,{
+CHECK_ERR( SIZE_SPECIFIER_CANT_BE_OUT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"expression used for a size attribute must not derive from an [out] only parameter"
+}
+
+,{
+CHECK_ERR( LENGTH_SPECIFIER_CANT_BE_OUT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"expression used for a length attribute for an [in] parameter cannot derive from an [out] only parameter"
+}
+
+,{
+CHECK_ERR( BAD_CON_INT )
+ MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"use of \"int\" needs /c_ext"
+}
+
+,{
+CHECK_ERR( BAD_CON_FIELD_VOID )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"struct/union field must not be \"void\""
+}
+
+,{
+CHECK_ERR( BAD_CON_ARRAY_VOID )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"array element must not be \"void\""
+}
+
+,{
+CHECK_ERR( BAD_CON_MSC_CDECL )
+ MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"use of type qualifiers and/or modifiers needs /c_ext"
+}
+
+,{
+CHECK_ERR( BAD_CON_FIELD_FUNC )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"struct/union field must not derive from a function"
+}
+
+,{
+CHECK_ERR( BAD_CON_ARRAY_FUNC )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"array element must not be a function"
+}
+
+,{
+CHECK_ERR( BAD_CON_PARAM_FUNC )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter must not be a function"
+}
+
+,{
+CHECK_ERR( BAD_CON_BIT_FIELDS )
+ MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"struct/union with bit fields needs /c_ext"
+}
+
+,{
+CHECK_ERR( BAD_CON_BIT_FIELD_NON_ANSI)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 4 )
+,"bit field specification on a type other that \"int\" is a non-ANSI-compatible extension"
+}
+
+,{
+CHECK_ERR( BAD_CON_BIT_FIELD_NOT_INTEGRAL)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"bit field specification can be applied only to simple, integral types"
+}
+
+,{
+CHECK_ERR( BAD_CON_CTXT_HDL_FIELD )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"struct/union field must not derive from handle_t or a context_handle"
+}
+
+,{
+CHECK_ERR( BAD_CON_CTXT_HDL_ARRAY )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"array element must not derive from handle_t or a context-handle"
+}
+
+,{
+CHECK_ERR( BAD_CON_NON_RPC_UNION )
+ MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"this specification of union needs /c_ext"
+}
+
+,{
+CHECK_ERR( NON_RPC_PARAM_INT )
+ MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter deriving from an \"int\" must have size specifier \"small\", \"short\", or \"long\" with the \"int\""
+}
+
+,{
+CHECK_ERR( NON_RPC_PARAM_VOID )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"type of the parameter cannot derive from void or void *"
+}
+
+,{
+CHECK_ERR( NON_RPC_PARAM_BIT_FIELDS )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter deriving from a struct/union containing bit fields is not supported"
+}
+
+,{
+CHECK_ERR( NON_RPC_PARAM_CDECL )
+ MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"use of a parameter deriving from a type containing type-modifiers/type-qualifiers needs /c_ext"
+}
+
+,{
+CHECK_ERR( NON_RPC_PARAM_FUNC_PTR )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter must not derive from a pointer to a function"
+}
+
+,{
+CHECK_ERR( NON_RPC_UNION )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter must not derive from a non-rpcable union"
+}
+
+,{
+CHECK_ERR( NON_RPC_RTYPE_INT )
+ MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"return type derives from an \"int\". You must use size specifiers with the \"int\""
+}
+
+,{
+CHECK_ERR( NON_RPC_RTYPE_VOID )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"return type must not derive from a void pointer"
+}
+
+,{
+CHECK_ERR( NON_RPC_RTYPE_BIT_FIELDS )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"return type must not derive from a struct/union containing bit-fields"
+}
+
+,{
+CHECK_ERR( NON_RPC_RTYPE_UNION )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"return type must not derive from a non-rpcable union"
+}
+
+,{
+CHECK_ERR( NON_RPC_RTYPE_FUNC_PTR )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"return type must not derive from a pointer to a function"
+}
+
+,{
+CHECK_ERR( COMPOUND_INITS_NOT_SUPPORTED )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"compound initializers are not supported"
+}
+
+,{
+CHECK_ERR( ACF_IN_IDL_NEEDS_APP_CONFIG )
+ MAKE_E_MASK( APP_CONFIG_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"ACF attributes in the IDL file need the /app_config switch"
+}
+
+,{
+CHECK_ERR( SINGLE_LINE_COMMENT )
+ MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_WARN, 1 )
+,"single line comment needs /ms_ext or /c_ext"
+}
+
+,{
+CHECK_ERR( VERSION_FORMAT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[version] format is incorrect"
+}
+
+,{
+CHECK_ERR( SIGNED_ILLEGAL )
+ MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"\"signed\" needs /ms_ext or /c_ext"
+}
+
+,{
+CHECK_ERR( ASSIGNMENT_TYPE_MISMATCH )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"mismatch in assignment type"
+}
+
+,{
+CHECK_ERR( ILLEGAL_OSF_MODE_DECL )
+ MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"declaration must be of the form: const <type><declarator> = <initializing expression> "
+}
+
+,{
+CHECK_ERR( OSF_DECL_NEEDS_CONST )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"declaration must have \"const\""
+}
+
+,{
+CHECK_ERR( COMP_DEF_IN_PARAM_LIST )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"struct/union/enum must not be defined in a parameter type specification"
+}
+
+,{
+CHECK_ERR( ALLOCATE_NOT_ON_PTR_TYPE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[allocate] attribute must be applied only on non-void pointer types"
+}
+
+,{
+CHECK_ERR( ARRAY_OF_UNIONS_ILLEGAL )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"array or equivalent pointer construct cannot derive from a non-encapsulated union"
+}
+
+,{
+CHECK_ERR( BAD_CON_E_STAT_T_FIELD )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"field must not derive from an error_status_t type"
+}
+
+,{
+CHECK_ERR( CASE_LABELS_MISSING_IN_UNION )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"union has at least one arm without a case label"
+}
+
+,{
+CHECK_ERR( BAD_CON_PARAM_RT_IGNORE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"parameter or return type must not derive from a type that has [ignore] applied to it"
+}
+
+,{
+CHECK_ERR( MORE_THAN_ONE_PTR_ATTR )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"pointer already has a pointer-attribute applied to it"
+}
+
+,{
+CHECK_ERR( RECURSION_THRU_REF )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"field/parameter must not derive from a structure that is recursive through a ref pointer"
+}
+
+,{
+CHECK_ERR( BAD_CON_FIELD_VOID_PTR )
+ MAKE_E_MASK( C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"use of field deriving from a void pointer needs /c_ext"
+}
+
+,{
+CHECK_ERR( INVALID_OSF_ATTRIBUTE )
+ MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"use of this attribute needs /ms_ext"
+}
+
+,{
+CHECK_ERR( INVALID_NEWTLB_ATTRIBUTE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"this attribute only allowed with new format type libraries"
+}
+
+,{
+CHECK_ERR( WCHAR_T_INVALID_OSF )
+ MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"use of wchar_t needs /ms_ext or /c_ext"
+}
+
+,{
+CHECK_ERR( BAD_CON_UNNAMED_FIELD )
+ MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"unnamed fields need /ms_ext or /c_ext"
+}
+
+,{
+CHECK_ERR( BAD_CON_UNNAMED_FIELD_NO_STRUCT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"unnamed fields can derive only from struct/union types"
+}
+
+,{
+CHECK_ERR( BAD_CON_UNION_FIELD_CONF )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"field of a union cannot derive from a conformant/varying array or its pointer equivalent"
+}
+
+,{
+CHECK_ERR( PTR_WITH_NO_DEFAULT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"no [pointer_default] attribute specified, assuming [ptr] for all unattributed pointers in interface"
+}
+
+,{
+CHECK_ERR( RHS_OF_ASSIGN_NOT_CONST )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"initializing expression must resolve to a constant expression"
+}
+
+,{
+CHECK_ERR( SWITCH_IS_TYPE_IS_WRONG )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"attribute expression must be of type integer, char, boolean or enum"
+}
+
+,{
+CHECK_ERR( ILLEGAL_CONSTANT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"illegal constant"
+}
+
+,{
+CHECK_ERR( IGNORE_UNIMPLEMENTED_ATTRIBUTE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"attribute not implemented; ignored"
+}
+
+,{
+CHECK_ERR( BAD_CON_REF_RT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"return type must not derive from a [ref] pointer"
+}
+
+,{
+CHECK_ERR( ATTRIBUTE_ID_MUST_BE_VAR )
+ MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"attribute expression must be a variable name or a pointer dereference expression in this mode. You must specify the /ms_ext switch"
+}
+
+,{
+CHECK_ERR( RECURSIVE_UNION )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter must not derive from a recursive non-encapsulated union"
+}
+
+,{
+CHECK_ERR( BINDING_HANDLE_IS_OUT_ONLY )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"binding-handle parameter cannot be [out] only"
+}
+
+,{
+CHECK_ERR( PTR_TO_HDL_UNIQUE_OR_FULL )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"pointer to a handle cannot be [unique] or [ptr]"
+}
+
+,{
+CHECK_ERR( HANDLE_T_NO_TRANSMIT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter that is not a binding handle must not derive from handle_t"
+}
+
+,{
+CHECK_ERR( UNEXPECTED_END_OF_FILE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"unexpected end of file found"
+}
+
+,{
+CHECK_ERR( HANDLE_T_XMIT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"type deriving from handle_t must not have [transmit_as] applied to it"
+}
+
+,{
+CHECK_ERR( CTXT_HDL_GENERIC_HDL )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[context_handle] must not be applied to a type that has [handle] applied to it"
+}
+
+,{
+CHECK_ERR( GENERIC_HDL_VOID )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[handle] must not be specified on a type deriving from void or void *"
+}
+
+,{
+CHECK_ERR( NO_EXPLICIT_IN_OUT_ON_PARAM )
+ MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter must have either [in], [out] or [in,out] in this mode. You must specify /ms_ext or /c_ext"
+}
+
+,{
+CHECK_ERR( TRANSMIT_AS_VOID )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[transmit_as] must not be specified on \"void\""
+}
+
+,{
+CHECK_ERR( VOID_NON_FIRST_PARAM )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"\"void\" must be specified on the first and only parameter specification"
+}
+
+,{
+CHECK_ERR( SWITCH_IS_ON_NON_UNION )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[switch_is] must be specified only on a type deriving from a non-encapsulated union"
+}
+
+,{
+CHECK_ERR( STRINGABLE_STRUCT_NOT_SUPPORTED )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"stringable structures are not implemented in this version"
+}
+
+,{
+CHECK_ERR( SWITCH_TYPE_TYPE_BAD )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"switch type can only be integral, char, boolean or enum"
+}
+
+,{
+CHECK_ERR( GENERIC_HDL_HANDLE_T )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[handle] must not be specified on a type deriving from handle_t"
+}
+
+,{
+CHECK_ERR( HANDLE_T_CANNOT_BE_OUT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"parameter deriving from handle_t must not be an [out] parameter"
+}
+
+,{
+CHECK_ERR( SIZE_LENGTH_SW_UNIQUE_OR_FULL )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
+,"attribute expression derives from [unique] or [ptr] pointer dereference"
+}
+
+,{
+CHECK_ERR( CPP_QUOTE_NOT_OSF )
+ MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"\"cpp_quote\" requires /ms_ext"
+}
+
+,{
+CHECK_ERR( QUOTED_UUID_NOT_OSF )
+ MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"quoted uuid requires /ms_ext"
+}
+
+,{
+CHECK_ERR( RETURN_OF_UNIONS_ILLEGAL )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"return type cannot derive from a non-encapsulated union"
+}
+
+,{
+CHECK_ERR( RETURN_OF_CONF_STRUCT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"return type cannot derive from a conformant structure"
+}
+
+,{
+CHECK_ERR( XMIT_AS_GENERIC_HANDLE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[transmit_as] must not be applied to a type deriving from a generic handle"
+}
+
+,{
+CHECK_ERR( GENERIC_HANDLE_XMIT_AS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[handle] must not be applied to a type that has [transmit_as] applied to it"
+}
+
+,{
+CHECK_ERR( INVALID_CONST_TYPE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"type specified for the const declaration is invalid"
+}
+
+,{
+CHECK_ERR( INVALID_SIZEOF_OPERAND )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"operand to the sizeof operator is not supported"
+}
+
+,{
+CHECK_ERR( NAME_ALREADY_USED )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"this name already used as a const identifier name"
+}
+
+,{
+CHECK_ERR( ERROR_STATUS_T_ILLEGAL )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"inconsistent redefinition of type error_status_t"
+}
+
+,{
+CHECK_ERR( CASE_VALUE_OUT_OF_RANGE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"[case] value out of range of switch type"
+}
+
+,{
+CHECK_ERR( WCHAR_T_NEEDS_MS_EXT_TO_RPC )
+ MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"parameter deriving from wchar_t needs /ms_ext"
+}
+
+,{
+CHECK_ERR( INTERFACE_ONLY_CALLBACKS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"this interface has only callbacks"
+}
+
+,{
+CHECK_ERR( REDUNDANT_ATTRIBUTE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"redundantly specified attribute; ignored"
+}
+
+,{
+CHECK_ERR( CTXT_HANDLE_USED_AS_IMPLICIT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"context handle type used for an implicit handle"
+}
+
+,{
+CHECK_ERR( CONFLICTING_ALLOCATE_OPTIONS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"conflicting options specified for [allocate]"
+}
+
+,{
+CHECK_ERR( ERROR_WRITING_FILE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"error while writing to file"
+}
+
+,{
+CHECK_ERR( NO_SWITCH_TYPE_AT_DEF )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"no switch type found at definition of union, using the [switch_is] type"
+}
+
+,{
+CHECK_ERR( ERRORS_PASS1_NO_PASS2 )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"semantic check incomplete due to previous errors"
+}
+
+,{
+CHECK_ERR( HANDLES_WITH_CALLBACK )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"handle parameter or return type is not supported on a [callback] procedure"
+}
+
+,{
+CHECK_ERR( PTR_NOT_FULLY_IMPLEMENTED )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"[ptr] does not support aliasing in this version"
+}
+
+,{
+CHECK_ERR( PARAM_ALREADY_CTXT_HDL )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"parameter already defined as a context handle"
+}
+
+,{
+CHECK_ERR( CTXT_HDL_HANDLE_T )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[context_handle] must not derive from handle_t"
+}
+
+,{
+CHECK_ERR( ARRAY_SIZE_EXCEEDS_64K )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"array size exceeds 65536 bytes"
+}
+
+,{
+CHECK_ERR( STRUCT_SIZE_EXCEEDS_64K )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"struct size exceeds 65536 bytes"
+}
+
+,{
+CHECK_ERR( NE_UNION_FIELD_NE_UNION )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"field of a non-encapsulated union cannot be another non-encapsulated union"
+}
+
+,{
+CHECK_ERR( PTR_ATTRS_ON_EMBEDDED_ARRAY )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"pointer attribute(s) applied on an embedded array; ignored"
+}
+
+,{
+CHECK_ERR( ALLOCATE_ON_TRANSMIT_AS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[allocate] is illegal on a type that has [transmit_as] applied to it"
+}
+
+,{
+CHECK_ERR( SWITCH_TYPE_REQD_THIS_IMP_MODE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[switch_type] must be specified in this import mode"
+}
+
+,{
+CHECK_ERR( IMPLICIT_HDL_ASSUMED_GENERIC )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"[implicit_handle] type undefined; assuming generic handle"
+}
+
+,{
+CHECK_ERR( E_STAT_T_ARRAY_ELEMENT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"array element must not derive from error_status_t"
+}
+
+,{
+CHECK_ERR( ALLOCATE_ON_HANDLE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[allocate] illegal on a type deriving from a primitive/generic/context handle"
+}
+
+,{
+CHECK_ERR( TRANSMIT_AS_ON_E_STAT_T )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"transmitted or presented type must not derive from error_status_t"
+}
+
+,{
+CHECK_ERR( IGNORE_ON_DISCRIMINANT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"discriminant of a union must not derive from a field with [ignore] applied to it"
+}
+
+,{
+CHECK_ERR( NOCODE_WITH_SERVER_STUBS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 4 )
+,"[nocode] ignored for server side since \"/server none\" not specified"
+}
+
+,{
+CHECK_ERR( NO_REMOTE_PROCS_NO_STUBS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"no remote procedures specified in non-[local] interface; no client/server stubs will be generated"
+}
+
+,{
+CHECK_ERR( TWO_DEFAULT_CASES )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"too many default cases specified for encapsulated union"
+}
+
+,{
+CHECK_ERR( TWO_DEFAULT_INTERFACES )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"too many default interfaces specified for coclass"
+}
+
+,{
+CHECK_ERR( DEFAULTVTABLE_REQUIRES_SOURCE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"items with [defaultvtable] must also have [source]"
+}
+
+,{
+CHECK_ERR( UNION_NO_FIELDS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"union specification with no fields is illegal"
+}
+
+,{
+CHECK_ERR( VALUE_OUT_OF_RANGE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"value out of range"
+}
+
+,{
+CHECK_ERR( CTXT_HDL_NON_PTR )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[context_handle] must be applied on a pointer type"
+}
+
+,{
+CHECK_ERR( NON_RPC_RTYPE_HANDLE_T )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"return type must not derive from handle_t"
+}
+
+,{
+CHECK_ERR( GEN_HDL_CTXT_HDL )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[handle] must not be applied to a type deriving from a context handle"
+}
+
+,{
+CHECK_ERR( NON_RPC_FIELD_INT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"field deriving from an \"int\" must have size specifier \"small\", \"short\", or \"long\" with the \"int\""
+}
+
+,{
+CHECK_ERR( NON_RPC_FIELD_PTR_TO_VOID )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"field must not derive from a void or void *"
+}
+
+,{
+CHECK_ERR( NON_RPC_FIELD_BIT_FIELDS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"field must not derive from a struct containing bit-fields"
+}
+
+,{
+CHECK_ERR( NON_RPC_FIELD_NON_RPC_UNION )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"field must not derive from a non-rpcable union"
+}
+
+,{
+CHECK_ERR( NON_RPC_FIELD_FUNC_PTR )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"field must not derive from a pointer to a function"
+}
+
+,{
+CHECK_ERR( PROC_PARAM_FAULT_STATUS)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"cannot use [fault_status] on both a parameter and a return type"
+}
+
+,{
+CHECK_ERR( NON_OI_BIG_RETURN )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"return type too complicated for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( NON_OI_BIG_GEN_HDL )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"generic handle type too large for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( ALLOCATE_IN_OUT_PTR )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 4 )
+,"[allocate(all_nodes)] on an [in,out] parameter may orphan the original memory"
+}
+
+,{
+CHECK_ERR( REF_PTR_IN_UNION)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"cannot have a [ref] pointer as a union arm"
+}
+
+,{
+CHECK_ERR( NON_OI_CTXT_HDL )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"return of context handles not supported for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( NON_OI_ERR_STATS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"use of [comm_status] or [fault_status] not supported for /Oi, using /Os"
+}
+
+,{
+CHECK_ERR( NON_OI_UNK_REP_AS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"use of an unknown type for [represent_as] or [user_marshal] not supported for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( NON_OI_XXX_AS_ON_RETURN )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"array types with [transmit_as] or [represent_as] not supported on return type for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( NON_OI_XXX_AS_BY_VALUE )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"array types with [transmit_as] or [represent_as] not supported pass-by-value for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( CALLBACK_NOT_OSF )
+ MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"[callback] requires /ms_ext"
+}
+
+,{
+CHECK_ERR( CIRCULAR_INTERFACE_DEPENDENCY )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"circular interface dependency"
+}
+
+,{
+CHECK_ERR( NOT_VALID_AS_BASE_INTF )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"only IUnknown may be used as the root interface"
+}
+
+,{
+CHECK_ERR( IID_IS_NON_POINTER )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[IID_IS] may only be applied to pointers to interfaces"
+}
+
+,{
+CHECK_ERR( INTF_NON_POINTER )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"interfaces may only be used in pointer-to-interface constructs"
+}
+
+,{
+CHECK_ERR( PTR_INTF_NO_GUID )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"interface pointers must have a UUID/IID"
+}
+
+,{
+CHECK_ERR( OUTSIDE_OF_INTERFACE )
+ MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"definitions and declarations outside of interface body requires /ms_ext"
+}
+
+,{
+CHECK_ERR( MULTIPLE_INTF_NON_OSF )
+ MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
+,"multiple interfaces in one file requires /ms_ext"
+}
+
+,{
+CHECK_ERR( CONFLICTING_INTF_HANDLES )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"only one of [implicit_handle], [auto_handle], or [explicit_handle] allowed"
+}
+
+,{
+CHECK_ERR( IMPLICIT_HANDLE_NON_HANDLE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[implicit_handle] references a type which is not a handle"
+}
+
+,{
+CHECK_ERR( OBJECT_PROC_MUST_BE_WIN32 )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[object] procs may only be used with \"/env win32\" or \"/env powermac\""
+}
+
+,{
+CHECK_ERR( NON_OI_16BIT_CALLBACK )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"[callback] with -env dos/win16 not supported for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( NON_OI_TOPLEVEL_FLOAT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"float/double not supported as top-level parameter for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( CTXT_HDL_MUST_BE_DIRECT_RETURN )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"pointers to context handles may not be used as return values"
+}
+
+,{
+CHECK_ERR( OBJECT_PROC_NON_HRESULT_RETURN )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"procedures in an object interface must return an HRESULT"
+}
+
+,{
+CHECK_ERR( DUPLICATE_UUID )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"duplicate UUID. Same as"
+}
+
+,{
+CHECK_ERR( ILLEGAL_INTERFACE_DERIVATION )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"[object] interfaces must derive from another [object] interface such as IUnknown"
+}
+
+,{
+CHECK_ERR( ILLEGAL_BASE_INTERFACE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"interfaces must derive from another interface"
+}
+
+,{
+CHECK_ERR( IID_IS_EXPR_NON_POINTER )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[IID_IS] expression must be a pointer to IID structure"
+}
+
+,{
+CHECK_ERR( CALL_AS_NON_LOCAL_PROC )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[call_as] type must be a [local] procedure"
+}
+
+,{
+CHECK_ERR( CALL_AS_UNSPEC_IN_OBJECT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"undefined [call_as] must not be used in an object interface"
+}
+
+,{
+CHECK_ERR( ENCODE_AUTO_HANDLE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[auto_handle] may not be used with [encode] or [decode]"
+}
+
+,{
+CHECK_ERR( RPC_PROC_IN_ENCODE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"normal procs are not allowed in an interface with [encode] or [decode]"
+}
+
+,{
+CHECK_ERR( ENCODE_CONF_OR_VAR )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"top-level conformance or variance not allowed with [encode] or [decode]"
+}
+
+,{
+CHECK_ERR( CONST_ON_OUT_PARAM )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"[out] parameters may not have \"const\""
+}
+
+,{
+CHECK_ERR( CONST_ON_RETVAL )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"return values may not have \"const\""
+}
+
+,{
+CHECK_ERR( INVALID_USE_OF_RETVAL )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"invalid use of \"retval\" attribute"
+}
+
+,{
+CHECK_ERR( MULTIPLE_CALLING_CONVENTIONS )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"multiple calling conventions illegal"
+}
+
+,{
+CHECK_ERR( INAPPROPRIATE_ON_OBJECT_PROC )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"attribute illegal on [object] procedure"
+}
+
+,{
+CHECK_ERR( NON_INTF_PTR_PTR_OUT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"[out] interface pointers must use double indirection"
+}
+
+,{
+CHECK_ERR( CALL_AS_USED_MULTIPLE_TIMES )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"procedure used twice as the caller in [call_as]"
+}
+
+,{
+CHECK_ERR( OBJECT_CALL_AS_LOCAL )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"[call_as] target must have [local] in an object interface"
+}
+
+,{
+CHECK_ERR( CODE_NOCODE_CONFLICT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"[code] and [nocode] may not be used together"
+}
+
+,{
+CHECK_ERR( MAYBE_NO_OUT_RETVALS )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[maybe] or [async] procedures may not have a return value or [out] params"
+}
+
+,{
+CHECK_ERR( FUNC_NON_POINTER )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"pointer to function must be used"
+}
+
+,{
+CHECK_ERR( FUNC_NON_RPC )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"functions may not be passed in an RPC operation"
+}
+
+,{
+CHECK_ERR( NON_OI_RETVAL_64BIT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"hyper/double not supported as return value for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( MISMATCHED_PRAGMA_POP )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"#pragma pack( pop ) without matching #pragma pack( push )"
+}
+
+,{
+CHECK_ERR( WRONG_TYPE_IN_STRING_STRUCT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"stringable structure fields must be byte/char/wchar_t"
+}
+
+,{
+CHECK_ERR( NON_OI_NOTIFY )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"[notify] not supported for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( HANDLES_WITH_OBJECT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"handle parameter or return type is not supported on a procedure in an [object] interface"
+}
+
+,{
+CHECK_ERR( NON_ANSI_MULTI_CONF_ARRAY )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
+,"ANSI C only allows the leftmost array bound to be unspecified"
+}
+
+,{
+CHECK_ERR( NON_OI_NOTIFY )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"by-value union parameters not supported for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( OBJECT_WITH_VERSION )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"[version] attribute is ignored on an [object] interface"
+}
+
+,{
+CHECK_ERR( SIZING_ON_FIXED_ARRAYS )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[size_is] or [max_is] attribute is invalid on a fixed array"
+}
+
+,{
+CHECK_ERR( PICKLING_INVALID_IN_OBJECT )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
+,"[encode] or [decode] are invalid in an [object] interface"
+}
+
+,{
+CHECK_ERR( TYPE_PICKLING_INVALID_IN_OSF )
+ MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
+,"[encode] or [decode] on a type requires /ms_ext"
+}
+
+,{
+CHECK_ERR( INT_NOT_SUPPORTED_ON_INT16 )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"\"int\" not supported on /env win16 or /env dos"
+}
+
+,{
+CHECK_ERR( BSTRING_NOT_ON_PLAIN_PTR )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"[bstring] may only be applied to a pointer to \"char\" or \"wchar_t\""
+}
+
+,{
+CHECK_ERR( INVALID_ON_OBJECT_PROC )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"attribute invalid on a proc in an [object] interface :"
+}
+
+,{
+CHECK_ERR( INVALID_ON_OBJECT_INTF )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"attribute invalid on an [object] interface :"
+}
+
+,{
+CHECK_ERR( STACK_TOO_BIG )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
+,"too many parameters or stack too big for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( NO_ATTRS_ON_ACF_TYPEDEF )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
+,"no attributes on ACF file typedef, so no effect"
+}
+
+,{
+CHECK_ERR( NON_OI_WRONG_CALL_CONV )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"calling conventions other than __stdcall or __cdecl not supported for /Oi modes, using /Os"
+}
+
+,{
+CHECK_ERR( TOO_MANY_DELEGATED_PROCS )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"More than 64 delegated methods not supported"
+}
+
+,{
+CHECK_ERR( NO_MAC_AUTO_HANDLES )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"auto handles not supported with -env mac or -env powermac"
+}
+
+,{
+CHECK_ERR( ILLEGAL_IN_MKTYPLIB_MODE)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"statements outside library block are illegal in mktyplib compatability mode"
+}
+
+,{
+CHECK_ERR( ILLEGAL_USE_OF_MKTYPLIB_SYNTAX)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"illegal syntax unless using mktyplib compatibility mode"
+}
+
+,{
+CHECK_ERR( ILLEGAL_SU_DEFINITION)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"illegal definition, must use typedef in mktyplib compatibility mode"
+}
+
+,{
+CHECK_ERR( INTF_EXPLICIT_PTR_ATTR )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"explicit pointer attribute [ptr] [ref] ignored for interface pointers"
+}
+
+,{
+CHECK_ERR( NO_OI_ON_MPPC )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"Oi modes not implemented for PowerMac, switching to Os"
+}
+
+,{
+CHECK_ERR( ILLEGAL_EXPRESSION_TYPE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"illegal expression type used in attribute"
+}
+
+,{
+CHECK_ERR( ILLEGAL_PIPE_TYPE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"illegal type used in pipe"
+}
+
+,{
+CHECK_ERR( REQUIRES_OI2 )
+ MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
+,"procedure uses pipes, using /Oicf"
+}
+
+,{
+CHECK_ERR( CONFLICTING_OPTIMIZATION_REQUIREMENTS )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"procedure's parameters are too complex to include pipes - simplify other parameters or don't use pipes"
+}
+
+,{
+CHECK_ERR( ILLEGAL_PIPE_EMBEDDING )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"pipe cannot be a members of a struct or a union, nor an array element"
+}
+
+,{
+CHECK_ERR( ILLEGAL_PIPE_CONTEXT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"invalid pipe usage"
+}
+
+,{
+CHECK_ERR( CMD_REQUIRES_I2 )
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"feature requires the advanced interpreted optimization option, use -Oicf :"
+}
+
+,{
+CHECK_ERR( REQUIRES_I2 )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 3 )
+,"feature requires the advanced interpreted optimization option, use -Oicf :"
+}
+
+#if defined(TARGET_RKK)
+,{
+CHECK_ERR( CMD_REQUIRES_NT40 )
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"feature invalid for the specified target system, use -target NT40 :"
+}
+
+,{
+CHECK_ERR( CMD_REQUIRES_NT351 )
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"feature invalid for the specified target system, use -target NT351 :"
+}
+
+,{
+CHECK_ERR( REQUIRES_NT40 )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"feature invalid for the specified target system, use -target NT40"
+}
+
+,{
+CHECK_ERR( REQUIRES_NT351 )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"feature invalid for the specified target system, use -target NT351"
+}
+#endif // TARGET_RKK
+
+,{
+CHECK_ERR( CMD_OI1_PHASED_OUT )
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
+,"the optimization option is being phased out, use -Oic :"
+}
+
+,{
+CHECK_ERR( CMD_OI2_OBSOLETE )
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
+,"the optimization option is being phased out, use -Oicf :"
+}
+
+,{
+CHECK_ERR( OI1_PHASED_OUT )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"the optimization option is being phased out, use -ic"
+}
+
+,{
+CHECK_ERR( OI2_OBSOLETE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
+,"the optimization option is being phased out, use -icf"
+}
+
+,{
+CHECK_ERR( ILLEGAL_ARG_VALUE)
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"illegal argument value"
+}
+
+,{
+CHECK_ERR( CONSTANT_TYPE_MISMATCH )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"illegal expression type in constant"
+}
+
+,{
+CHECK_ERR( ENUM_TYPE_MISMATCH )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"illegal expression type in enum"
+}
+
+,{
+CHECK_ERR( UNSATISFIED_FORWARD )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"unsatisfied forward declaration"
+}
+
+,{
+CHECK_ERR( CONTRADICTORY_SWITCHES )
+ MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
+,"switches are contradictory "
+}
+
+,{
+CHECK_ERR( NO_SWITCH_IS_HOOKOLE )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+,"MIDL cannot generate HOOKOLE information for the non-rpcable union"
+}
+
+,{
+CHECK_ERR( NO_CASE_EXPR )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+ ,"no case expression found for union"
+}
+
+,{
+CHECK_ERR( USER_MARSHAL_IN_OI )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+ ,"[user_marshal] and [wire_marshal] not supported with -Oi and -Oic flags, use -Os or -Oicf"
+}
+
+,{
+CHECK_ERR( PIPES_WITH_PICKLING )
+ MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
+ ,"pipes can't be used with data serialization, i.e. [encode] and/or [decode]"
+}
+
+}; /* end of array of structs initialization */
+
+ \ No newline at end of file
diff --git a/public/sdk/rpc16/ct/errors.hxx b/public/sdk/rpc16/ct/errors.hxx
new file mode 100644
index 000000000..33049a1c3
--- /dev/null
+++ b/public/sdk/rpc16/ct/errors.hxx
@@ -0,0 +1,548 @@
+/*****************************************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1987-1990 **/
+/*****************************************************************************/
+/*****************************************************************************
+File : errors.hxx
+Title : error include file
+Description : This file contains the definitions of errors generated
+ By the MIDL compiler.
+History :
+
+ VibhasC 23-Jul-1990 Created
+ NateO 20-Sep-1990 Safeguards against double inclusion
+
+*****************************************************************************/
+/****************************************************************************
+ *** D errors range :
+ *** 1000-1999
+ *** C errors range :
+ *** 2000-9999
+ ****************************************************************************/
+
+#ifndef __ERRORS_HXX__
+#define __ERRORS_HXX__
+
+// define the data structures needed for the error handler
+
+typedef struct _e_mask
+ {
+ unsigned char ucSwitchConfig;
+ unsigned char ucWarningLevel;
+ unsigned char ucErrorClass;
+ char cMessageType;
+ } E_MASK;
+
+// definition of mode switch configuration combinations
+
+#define ZZZ (0)
+#define ZZM (1 << 1)
+#define ZCZ (1 << 2)
+#define ZCM (1 << 3)
+#define AZZ (1 << 4)
+#define AZM (1 << 5)
+#define ACZ (1 << 6)
+#define ACM (1 << 7)
+
+// message type
+
+#define C_MSG ('C')
+#define D_MSG ('D')
+#define A_MSG ('A')
+
+// error class
+
+#define CLASS_ERROR (0)
+#define CLASS_WARN (1)
+#define CLASS_ADVICE (2)
+
+// extraction macros
+#define GET_ECLASS(x) ((x).ucErrorClass)
+#define GET_WL(x) ((x).ucWarningLevel)
+#define GET_SC(x) ((x).ucSwitchConfig)
+#define GET_MT(x) ((x).cMessageType)
+
+#define MAKE_E_MASK( sc, mt, ec, wl ) \
+ { sc, wl, ec, mt }
+
+#define D_ERROR_BASE 1000
+#define C_ERROR_BASE 2000
+#define A_ERROR_BASE 3000
+#define I_ERROR_BASE 9000
+
+enum _status_t
+ {
+ STATUS_OK
+ ,D_ERR_START = D_ERROR_BASE
+ ,NO_INPUT_FILE = D_ERR_START // no input file specified
+ ,INPUT_OPEN // error in opening file
+ ,INPUT_READ // error in positioning file
+ ,PREPROCESSOR_ERROR // error in preprocessing
+ ,PREPROCESSOR_EXEC // cant exec preprocessor
+ ,NO_PREPROCESSOR
+ ,PREPROCESSOR_INVALID
+ ,SWITCH_REDEFINED // redef of switch
+ ,UNKNOWN_SWITCH
+ ,UNKNOWN_ARGUMENT
+ ,UNIMPLEMENTED_SWITCH
+ ,MISSING_ARG
+ ,ILLEGAL_ARGUMENT
+ ,BAD_SWITCH_SYNTAX
+ ,NO_CPP_OVERRIDES
+ ,NO_WARN_OVERRIDES
+ ,INTERMEDIATE_FILE_CREATE
+ ,SERVER_AUX_FILE_NOT_SPECIFIED
+ ,OUT_OF_SYSTEM_FILE_HANDLES
+ ,BOTH_CSWTCH_SSWTCH
+ ,CANNOT_OPEN_RESP_FILE
+ ,ILLEGAL_CHAR_IN_RESP_FILE
+ ,MISMATCHED_PREFIX_PAIR
+ ,NESTED_RESP_FILE
+ ,D_ERR_MAX
+
+ ,C_ERR_START = C_ERROR_BASE
+
+ // general errors. The ones which are hard to pin down into any category.
+
+ ,ABSTRACT_DECL = C_ERR_START
+ ,ACTUAL_DECLARATION
+ ,C_STACK_OVERFLOW
+ ,DUPLICATE_DEFINITION
+ ,NO_HANDLE_DEFINED_FOR_PROC
+ ,OUT_OF_MEMORY
+ ,RECURSIVE_DEF
+ ,REDUNDANT_IMPORT
+ ,SPARSE_ENUM
+ ,UNDEFINED_SYMBOL
+ ,UNDEFINED_TYPE
+ ,UNRESOLVED_TYPE
+ ,WCHAR_CONSTANT_NOT_OSF
+ ,WCHAR_STRING_NOT_OSF
+ ,WCHAR_T_ILLEGAL
+ ,TYPELIB_NOT_LOADED
+ ,TWO_LIBRARIES
+ ,NO_IDISPATCH
+ ,ERR_TYPELIB
+ ,ERR_TYPEINFO
+ ,ERR_TYPELIB_GENERATION
+ ,DUPLICATE_IID
+ ,BAD_ENTRY_VALUE
+
+ // syntax related errors
+
+ ,ASSUMING_CHAR
+ ,DISCARDING_CHAR
+ ,BENIGN_SYNTAX_ERROR
+ ,SYNTAX_ERROR
+
+ // pragma related errors
+
+ ,UNKNOWN_PRAGMA_OPTION
+
+ // unimplemented messages
+
+ ,UNIMPLEMENTED_FEATURE
+ ,UNIMPLEMENTED_TYPE
+
+ // expression errors
+
+ ,EXPR_DEREF_ON_NON_POINTER
+ ,EXPR_DIV_BY_ZERO
+ ,EXPR_INCOMPATIBLE_TYPES
+ ,EXPR_INDEXING_NON_ARRAY
+ ,EXPR_LHS_NON_COMPOSITE
+ ,EXPR_NOT_CONSTANT
+ ,EXPR_NOT_EVALUATABLE
+ ,EXPR_NOT_IMPLEMENTED
+
+ // interface errors
+
+ ,NO_PTR_DEFAULT_ON_INTERFACE
+
+ // parameter related errors
+
+ ,DERIVES_FROM_PTR_TO_CONF
+ ,DERIVES_FROM_UNSIZED_STRING
+ ,NON_PTR_OUT
+ ,OPEN_STRUCT_AS_PARAM
+ ,OUT_CONTEXT_GENERIC_HANDLE
+ ,CTXT_HDL_TRANSMIT_AS
+ ,PARAM_IS_ELIPSIS
+ ,VOID_PARAM_WITH_NAME
+
+ // procedure related semantic errors
+
+ ,HANDLE_NOT_FIRST
+ ,PROC_PARAM_COMM_STATUS
+ ,LOCAL_ATTR_ON_PROC
+ ,ILLEGAL_USE_OF_PROPERTY_ATTRIBUTE
+ ,MULTIPLE_PROPERTY_ATTRIBUTES
+
+ // structure semantic errors
+
+ ,CONFORMANT_ARRAY_NOT_LAST
+
+ // union semantic errors
+
+ ,DUPLICATE_CASE
+ ,NO_UNION_DEFAULT
+
+ // attribute semantic errors
+
+ ,ATTRIBUTE_ID_UNRESOLVED
+ ,ATTR_MUST_BE_INT
+ ,BYTE_COUNT_INVALID
+ ,BYTE_COUNT_NOT_OUT_PTR
+ ,BYTE_COUNT_ON_CONF
+ ,BYTE_COUNT_PARAM_NOT_IN
+ ,BYTE_COUNT_PARAM_NOT_INTEGRAL
+ ,BYTE_COUNT_WITH_SIZE_ATTR
+ ,CASE_EXPR_NOT_CONST
+ ,CASE_EXPR_NOT_INT
+ ,CONTEXT_HANDLE_VOID_PTR
+ ,ERROR_STATUS_T_REPEATED
+ ,E_STAT_T_MUST_BE_PTR_TO_E
+ ,ENDPOINT_SYNTAX
+ ,INAPPLICABLE_ATTRIBUTE
+ ,ALLOCATE_INVALID
+ ,INVALID_ALLOCATE_MODE
+ ,INVALID_SIZE_ATTR_ON_STRING
+ ,LAST_AND_LENGTH
+ ,MAX_AND_SIZE
+ ,NO_SWITCH_IS
+ ,NO_UUID_SPECIFIED
+ ,UUID_LOCAL_BOTH_SPECIFIED
+ ,SIZE_LENGTH_TYPE_MISMATCH
+ ,STRING_NOT_ON_BYTE_CHAR
+ ,SWITCH_TYPE_MISMATCH
+ ,TRANSMIT_AS_CTXT_HANDLE
+ ,TRANSMIT_AS_NON_RPCABLE
+ ,TRANSMIT_AS_POINTER
+ ,TRANSMIT_TYPE_CONF
+ ,UUID_FORMAT
+ ,UUID_NOT_HEX
+ ,OPTIONAL_PARAMS_MUST_BE_LAST
+ ,DLLNAME_REQUIRED
+ ,INVALID_USE_OF_BINDABLE
+
+ // acf semantic errors
+
+ ,ACF_INTERFACE_MISMATCH
+ ,CONFLICTING_ATTR
+ ,INVALID_COMM_STATUS_PARAM
+ ,LOCAL_PROC_IN_ACF
+ ,TYPE_HAS_NO_HANDLE
+ ,UNDEFINED_PROC
+ ,UNDEF_PARAM_IN_IDL
+
+ // array and pointer semantic errors
+
+ ,ARRAY_BOUNDS_CONSTRUCT_BAD
+ ,ILLEGAL_ARRAY_BOUNDS
+ ,ILLEGAL_CONFORMANT_ARRAY
+ ,UNSIZED_ARRAY
+ ,NOT_FIXED_ARRAY
+ ,SAFEARRAY_USE
+
+ // lex errors
+
+ ,CHAR_CONST_NOT_TERMINATED
+ ,EOF_IN_COMMENT
+ ,EOF_IN_STRING
+ ,ID_TRUNCATED
+ ,NEWLINE_IN_STRING
+ ,STRING_TOO_LONG
+ ,IDENTIFIER_TOO_LONG
+ ,CONSTANT_TOO_BIG
+
+ // backend related errors
+
+ ,ERROR_OPENING_FILE
+ ,ERR_BIND // couldn't bind to a function
+ ,ERR_INIT // couldn't initialize OLE
+ ,ERR_LOAD // couldn't load a library
+
+ // more errors
+
+ ,UNIQUE_FULL_PTR_OUT_ONLY
+ ,BAD_ATTR_NON_RPC_UNION
+ ,SIZE_SPECIFIER_CANT_BE_OUT
+ ,LENGTH_SPECIFIER_CANT_BE_OUT
+
+ // errors placed here because of the compiler mode switch changes.
+
+ ,BAD_CON_INT
+ ,BAD_CON_FIELD_VOID
+ ,BAD_CON_ARRAY_VOID
+ ,BAD_CON_MSC_CDECL
+ ,BAD_CON_FIELD_FUNC
+ ,BAD_CON_ARRAY_FUNC
+ ,BAD_CON_PARAM_FUNC
+ ,BAD_CON_BIT_FIELDS
+ ,BAD_CON_BIT_FIELD_NON_ANSI
+ ,BAD_CON_BIT_FIELD_NOT_INTEGRAL
+ ,BAD_CON_CTXT_HDL_FIELD
+ ,BAD_CON_CTXT_HDL_ARRAY
+ ,BAD_CON_NON_RPC_UNION
+
+ ,NON_RPC_PARAM_INT
+ ,NON_RPC_PARAM_VOID
+ ,NON_RPC_PARAM_BIT_FIELDS
+ ,NON_RPC_PARAM_CDECL
+ ,NON_RPC_PARAM_FUNC_PTR
+ ,NON_RPC_UNION
+ ,NON_RPC_RTYPE_INT
+ ,NON_RPC_RTYPE_VOID
+ ,NON_RPC_RTYPE_BIT_FIELDS
+ ,NON_RPC_RTYPE_UNION
+ ,NON_RPC_RTYPE_FUNC_PTR
+
+ ,COMPOUND_INITS_NOT_SUPPORTED
+ ,ACF_IN_IDL_NEEDS_APP_CONFIG
+ ,SINGLE_LINE_COMMENT
+ ,VERSION_FORMAT
+ ,SIGNED_ILLEGAL
+ ,ASSIGNMENT_TYPE_MISMATCH
+ ,ILLEGAL_OSF_MODE_DECL
+ ,OSF_DECL_NEEDS_CONST
+ ,COMP_DEF_IN_PARAM_LIST
+ ,ALLOCATE_NOT_ON_PTR_TYPE
+ ,ARRAY_OF_UNIONS_ILLEGAL
+ ,BAD_CON_E_STAT_T_FIELD
+ ,CASE_LABELS_MISSING_IN_UNION
+ ,BAD_CON_PARAM_RT_IGNORE
+ ,MORE_THAN_ONE_PTR_ATTR
+ ,RECURSION_THRU_REF
+ ,BAD_CON_FIELD_VOID_PTR
+ ,INVALID_OSF_ATTRIBUTE
+ ,INVALID_NEWTLB_ATTRIBUTE
+ ,WCHAR_T_INVALID_OSF
+ ,BAD_CON_UNNAMED_FIELD
+ ,BAD_CON_UNNAMED_FIELD_NO_STRUCT
+ ,BAD_CON_UNION_FIELD_CONF
+ ,PTR_WITH_NO_DEFAULT
+ ,RHS_OF_ASSIGN_NOT_CONST
+ ,SWITCH_IS_TYPE_IS_WRONG
+ ,ILLEGAL_CONSTANT
+ ,IGNORE_UNIMPLEMENTED_ATTRIBUTE
+ ,BAD_CON_REF_RT
+ ,ATTRIBUTE_ID_MUST_BE_VAR
+ ,RECURSIVE_UNION
+ ,BINDING_HANDLE_IS_OUT_ONLY
+ ,PTR_TO_HDL_UNIQUE_OR_FULL
+ ,HANDLE_T_NO_TRANSMIT
+ ,UNEXPECTED_END_OF_FILE
+ ,HANDLE_T_XMIT
+ ,CTXT_HDL_GENERIC_HDL
+ ,GENERIC_HDL_VOID
+ ,NO_EXPLICIT_IN_OUT_ON_PARAM
+ ,TRANSMIT_AS_VOID
+ ,VOID_NON_FIRST_PARAM
+ ,SWITCH_IS_ON_NON_UNION
+ ,STRINGABLE_STRUCT_NOT_SUPPORTED
+ ,SWITCH_TYPE_TYPE_BAD
+ ,GENERIC_HDL_HANDLE_T
+ ,HANDLE_T_CANNOT_BE_OUT
+ ,SIZE_LENGTH_SW_UNIQUE_OR_FULL
+ ,CPP_QUOTE_NOT_OSF
+ ,QUOTED_UUID_NOT_OSF
+ ,RETURN_OF_UNIONS_ILLEGAL
+ ,RETURN_OF_CONF_STRUCT
+ ,XMIT_AS_GENERIC_HANDLE
+ ,GENERIC_HANDLE_XMIT_AS
+ ,INVALID_CONST_TYPE
+ ,INVALID_SIZEOF_OPERAND
+ ,NAME_ALREADY_USED
+ ,ERROR_STATUS_T_ILLEGAL
+ ,CASE_VALUE_OUT_OF_RANGE
+ ,WCHAR_T_NEEDS_MS_EXT_TO_RPC
+ ,INTERFACE_ONLY_CALLBACKS
+ ,REDUNDANT_ATTRIBUTE
+ ,CTXT_HANDLE_USED_AS_IMPLICIT
+ ,CONFLICTING_ALLOCATE_OPTIONS
+ ,ERROR_WRITING_FILE
+ ,NO_SWITCH_TYPE_AT_DEF
+ ,ERRORS_PASS1_NO_PASS2
+ ,HANDLES_WITH_CALLBACK
+ ,PTR_NOT_FULLY_IMPLEMENTED
+ ,PARAM_ALREADY_CTXT_HDL
+ ,CTXT_HDL_HANDLE_T
+ ,ARRAY_SIZE_EXCEEDS_64K
+ ,STRUCT_SIZE_EXCEEDS_64K
+ ,NE_UNION_FIELD_NE_UNION
+ ,PTR_ATTRS_ON_EMBEDDED_ARRAY
+ ,ALLOCATE_ON_TRANSMIT_AS
+ ,SWITCH_TYPE_REQD_THIS_IMP_MODE
+ ,IMPLICIT_HDL_ASSUMED_GENERIC
+ ,E_STAT_T_ARRAY_ELEMENT
+ ,ALLOCATE_ON_HANDLE
+ ,TRANSMIT_AS_ON_E_STAT_T
+ ,IGNORE_ON_DISCRIMINANT
+ ,NOCODE_WITH_SERVER_STUBS
+ ,NO_REMOTE_PROCS_NO_STUBS
+ ,TWO_DEFAULT_CASES
+ ,TWO_DEFAULT_INTERFACES
+ ,DEFAULTVTABLE_REQUIRES_SOURCE
+ ,UNION_NO_FIELDS
+ ,VALUE_OUT_OF_RANGE
+ ,CTXT_HDL_NON_PTR
+ ,NON_RPC_RTYPE_HANDLE_T
+ ,GEN_HDL_CTXT_HDL
+ ,NON_RPC_FIELD_INT
+ ,NON_RPC_FIELD_PTR_TO_VOID
+ ,NON_RPC_FIELD_BIT_FIELDS
+ ,NON_RPC_FIELD_NON_RPC_UNION
+ ,NON_RPC_FIELD_FUNC_PTR
+ ,PROC_PARAM_FAULT_STATUS
+ ,NON_OI_BIG_RETURN
+ ,NON_OI_BIG_GEN_HDL
+ ,ALLOCATE_IN_OUT_PTR
+ ,REF_PTR_IN_UNION
+ ,NON_OI_CTXT_HDL
+ ,NON_OI_ERR_STATS
+ ,NON_OI_UNK_REP_AS
+ ,NON_OI_XXX_AS_ON_RETURN
+ ,NON_OI_XXX_AS_BY_VALUE
+ ,CALLBACK_NOT_OSF
+ ,CIRCULAR_INTERFACE_DEPENDENCY
+ ,NOT_VALID_AS_BASE_INTF
+ ,IID_IS_NON_POINTER
+ ,INTF_NON_POINTER
+ ,PTR_INTF_NO_GUID
+ ,OUTSIDE_OF_INTERFACE
+ ,MULTIPLE_INTF_NON_OSF
+ ,CONFLICTING_INTF_HANDLES
+ ,IMPLICIT_HANDLE_NON_HANDLE
+ ,OBJECT_PROC_MUST_BE_WIN32
+ ,NON_OI_16BIT_CALLBACK
+ ,NON_OI_TOPLEVEL_FLOAT
+ ,CTXT_HDL_MUST_BE_DIRECT_RETURN
+ ,OBJECT_PROC_NON_HRESULT_RETURN
+ ,DUPLICATE_UUID
+ ,ILLEGAL_INTERFACE_DERIVATION
+ ,ILLEGAL_BASE_INTERFACE
+ ,IID_IS_EXPR_NON_POINTER
+ ,CALL_AS_NON_LOCAL_PROC
+ ,CALL_AS_UNSPEC_IN_OBJECT
+ ,ENCODE_AUTO_HANDLE
+ ,RPC_PROC_IN_ENCODE
+ ,ENCODE_CONF_OR_VAR
+ ,CONST_ON_OUT_PARAM
+ ,CONST_ON_RETVAL
+ ,INVALID_USE_OF_RETVAL
+ ,MULTIPLE_CALLING_CONVENTIONS
+ ,INAPPROPRIATE_ON_OBJECT_PROC
+ ,NON_INTF_PTR_PTR_OUT
+ ,CALL_AS_USED_MULTIPLE_TIMES
+ ,OBJECT_CALL_AS_LOCAL
+ ,CODE_NOCODE_CONFLICT
+ ,MAYBE_NO_OUT_RETVALS
+ ,FUNC_NON_POINTER
+ ,FUNC_NON_RPC
+ ,NON_OI_RETVAL_64BIT
+ ,MISMATCHED_PRAGMA_POP
+ ,WRONG_TYPE_IN_STRING_STRUCT
+ ,NON_OI_NOTIFY
+ ,HANDLES_WITH_OBJECT
+ ,NON_ANSI_MULTI_CONF_ARRAY
+ ,NON_OI_UNION_PARM
+ ,OBJECT_WITH_VERSION
+ ,SIZING_ON_FIXED_ARRAYS
+ ,PICKLING_INVALID_IN_OBJECT
+ ,TYPE_PICKLING_INVALID_IN_OSF
+ ,INT_NOT_SUPPORTED_ON_INT16
+ ,BSTRING_NOT_ON_PLAIN_PTR
+ ,INVALID_ON_OBJECT_PROC
+ ,INVALID_ON_OBJECT_INTF
+ ,STACK_TOO_BIG
+ ,NO_ATTRS_ON_ACF_TYPEDEF
+ ,NON_OI_WRONG_CALL_CONV
+ ,TOO_MANY_DELEGATED_PROCS
+ ,NO_MAC_AUTO_HANDLES
+ ,ILLEGAL_IN_MKTYPLIB_MODE
+ ,ILLEGAL_USE_OF_MKTYPLIB_SYNTAX
+ ,ILLEGAL_SU_DEFINITION
+ ,INTF_EXPLICIT_PTR_ATTR
+ ,NO_OI_ON_MPPC
+ ,ILLEGAL_EXPRESSION_TYPE
+ ,ILLEGAL_PIPE_TYPE
+ ,REQUIRES_OI2
+ ,CONFLICTING_OPTIMIZATION_REQUIREMENTS
+ ,ILLEGAL_PIPE_EMBEDDING
+ ,ILLEGAL_PIPE_CONTEXT
+ ,CMD_REQUIRES_I2
+ ,REQUIRES_I2
+#if defined(TARGET_RKK)
+ ,CMD_REQUIRES_NT40
+ ,CMD_REQUIRES_NT351
+ ,REQUIRES_NT40
+ ,REQUIRES_NT351
+#endif
+ ,CMD_OI1_PHASED_OUT
+ ,CMD_OI2_OBSOLETE
+ ,OI1_PHASED_OUT
+ ,OI2_OBSOLETE
+ ,ILLEGAL_ARG_VALUE
+ ,CONSTANT_TYPE_MISMATCH
+ ,ENUM_TYPE_MISMATCH
+ ,UNSATISFIED_FORWARD
+ ,CONTRADICTORY_SWITCHES
+ ,NO_SWITCH_IS_HOOKOLE
+ ,NO_CASE_EXPR
+ ,USER_MARSHAL_IN_OI
+ ,PIPES_WITH_PICKLING
+ ,C_ERR_MAX
+
+ // advice messages
+ ,A_ERR_START = A_ERROR_BASE
+
+ ,A_ERR_MAX
+
+ // internal errors
+ ,I_ERR_START = I_ERROR_BASE
+
+ ,I_ERR_NO_PEER = I_ERR_START // no more peers(siblings)
+ ,I_ERR_NO_MEMBER // no more members(children)
+ ,I_ERR_SYMTABLE_UNDERFLOW // symbol table underflow
+ ,I_ERR_NULL_OUT_PARAM
+ ,I_ERR_SYMBOL_NOT_FOUND
+ ,I_ERR_NO_NEXT_SCOPE
+ ,I_ERR_NO_PREV_SCOPE
+ ,I_ERR_INVALID_NODE_TYPE
+ };
+
+typedef enum _status_t STATUS_T;
+
+#define NOWARN (0)
+#define WARN_LEVEL_MAX (4)
+
+
+#ifdef RPCDEBUG
+#define CHECK_ERR(n) n,
+#else // RPCDEBUG
+#define CHECK_ERR(n)
+#endif // RPCDEBUG
+
+
+extern void RpcError(char *, short, STATUS_T , char *);
+extern void ParseError( STATUS_T , char *);
+
+// semi-digested error information
+class ErrorInfo
+ {
+public:
+ struct errdb * pErrorRecord;
+ STATUS_T ErrVal;
+
+ ErrorInfo( STATUS_T ErrVal );
+
+ int IsRelevant();
+
+ void ReportError( char * pszFileName, short Line, char * suffix );
+
+ };
+
+
+#endif // __ERRORS_HXX__
+
+ \ No newline at end of file
diff --git a/public/sdk/rpc16/dos/dll/rpc16c1.map b/public/sdk/rpc16/dos/dll/rpc16c1.map
new file mode 100644
index 000000000..442bbbf31
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16c1.map
@@ -0,0 +1,222 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 00000H 00000H NPLTCLNT_TEXT CODE
+ 00000H 001BDH 001BEH EXPORTLT_TEXT CODE
+ 001BEH 001BEH 00000H DOSUTIL_TEXT CODE
+ 001BEH 00475H 002B8H _TEXT CODE
+ 00480H 00AD8H 00659H COMDAT_SEG1 CODE
+ 00ADAH 00B2DH 00054H _DATA DATA
+ 00B2EH 00B46H 00019H STRINGSEGMENT DATA
+ 00B48H 00B48H 00000H XIFB DATA
+ 00B48H 00B48H 00000H XIF DATA
+ 00B48H 00B48H 00000H XIFE DATA
+ 00B48H 00B48H 00000H CONST CONST
+ 00B48H 00B48H 00000H _BSS BSS
+
+ Origin Group
+ 00AD:0 DGROUP
+
+ Address Publics by Name
+
+ 0048:05BC ??_C@_08DNBJ@ncacn_np?$AA@
+ 0048:01B4 ASSEMBLEREAD
+ 0048:0134 CLIENTCLOSE
+ 0048:0000 CLIENTOPEN
+ 0048:02D2 CLIENTREAD
+ 0048:034E CLIENTTOWERCONSTRUCT
+ 0048:04C0 CLIENTTOWEREXPLODE
+ 0048:0150 CLIENTWRITE
+ 0000:0000 Unr CLIENTWRITEREAD
+ 001B:015E DOSCALLNMPIPE
+ 001B:004A DOSCONNECTNMPIPE
+ 001B:0034 DOSDISCONNECTNMPIPE
+ 001B:001E DOSMAKENMPIPE
+ 001B:011D DOSPEEKNMPIPE
+ 001B:00D5 DOSQNMPHANDSTATE
+ 001B:00F7 DOSQNMPIPEINFO
+ 001B:018D DOSRAWREADNMPIPE
+ 001B:01BE DOSRAWWRITENMPIPE
+ 001B:01E8 DOSREADASYNCNMPIPE
+ 001B:0207 DOSREADASYNCNMPIPE2
+ 001B:0060 DOSSETNMPHANDSTATE
+ 001B:00A2 DOSTRANSACTNMPIPE
+ 001B:0080 DOSWAITNMPIPE
+ 001B:021B DOSWRITEASYNCNMPIPE
+ 001B:023A DOSWRITEASYNCNMPIPE2
+ 0000:019A EXPORTTIME
+ 0000:009F I_DOSATEXIT
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:017C NDRCONVERT
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00EC RPCBINDINGFREE
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:011C RPCREGOPENKEY
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:012E RPCREGSETVALUE
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00F2 RPCSTRINGFREE
+ 0048:05AC TRANSPORTLOAD
+ 0000:0063 _CallExport
+ 0000:0000 _DOSDLLInit
+ 00AD:0078 _edata
+ 00AD:0078 _end
+ 00AD:003A _errno
+ 0000:0046 _ExportInit
+ 0000:00A4 _GETENV
+ 0000:0081 _GetExportTableVersion
+ 0000:00B3 _GETPROCADDRR
+ 0000:00A9 _LOADMODR
+ 001B:0268 _memcpy
+ 001B:024E _strlen
+ 00AD:0046 _theTable
+ 00AD:000A _TransInfo
+ 0000:00AE _UNLOADMODR
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:1000 Abs __AHINCR
+ 0000:000C Abs __AHSHIFT
+ 0048:0642 __dos_close
+ 0048:0620 __dos_open
+ 0048:05C6 __dos_read
+ 0048:05FA __dos_write
+ 00AD:0078 __edata
+ 00AD:0078 __end
+ 00AD:0044 __rpc_hostDS
+
+ Address Publics by Value
+
+ 0000:0000 Unr CLIENTWRITEREAD
+ 0000:0000 Abs __ADBUSED
+ 0000:0000 _DOSDLLInit
+ 0000:0000 Abs __ACRTUSED
+ 0000:000C Abs __AHSHIFT
+ 0000:0046 _ExportInit
+ 0000:0063 _CallExport
+ 0000:0081 _GetExportTableVersion
+ 0000:009F I_DOSATEXIT
+ 0000:00A4 _GETENV
+ 0000:00A9 _LOADMODR
+ 0000:00AE _UNLOADMODR
+ 0000:00B3 _GETPROCADDRR
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00EC RPCBINDINGFREE
+ 0000:00F2 RPCSTRINGFREE
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:011C RPCREGOPENKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:012E RPCREGSETVALUE
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:017C NDRCONVERT
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:019A EXPORTTIME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 001B:001E DOSMAKENMPIPE
+ 001B:0034 DOSDISCONNECTNMPIPE
+ 001B:004A DOSCONNECTNMPIPE
+ 001B:0060 DOSSETNMPHANDSTATE
+ 001B:0080 DOSWAITNMPIPE
+ 001B:00A2 DOSTRANSACTNMPIPE
+ 001B:00D5 DOSQNMPHANDSTATE
+ 001B:00F7 DOSQNMPIPEINFO
+ 001B:011D DOSPEEKNMPIPE
+ 001B:015E DOSCALLNMPIPE
+ 001B:018D DOSRAWREADNMPIPE
+ 001B:01BE DOSRAWWRITENMPIPE
+ 001B:01E8 DOSREADASYNCNMPIPE
+ 001B:0207 DOSREADASYNCNMPIPE2
+ 001B:021B DOSWRITEASYNCNMPIPE
+ 001B:023A DOSWRITEASYNCNMPIPE2
+ 001B:024E _strlen
+ 001B:0268 _memcpy
+ 0048:0000 CLIENTOPEN
+ 0048:0134 CLIENTCLOSE
+ 0048:0150 CLIENTWRITE
+ 0048:01B4 ASSEMBLEREAD
+ 0048:02D2 CLIENTREAD
+ 0048:034E CLIENTTOWERCONSTRUCT
+ 0048:04C0 CLIENTTOWEREXPLODE
+ 0048:05AC TRANSPORTLOAD
+ 0048:05BC ??_C@_08DNBJ@ncacn_np?$AA@
+ 0048:05C6 __dos_read
+ 0048:05FA __dos_write
+ 0048:0620 __dos_open
+ 0048:0642 __dos_close
+ 00AD:000A _TransInfo
+ 00AD:003A _errno
+ 00AD:0044 __rpc_hostDS
+ 00AD:0046 _theTable
+ 00AD:0078 __end
+ 00AD:0078 _end
+ 00AD:0078 _edata
+ 00AD:0078 __edata
+ 0000:1000 Abs __AHINCR
+
+Program entry point at 0000:0000
diff --git a/public/sdk/rpc16/dos/dll/rpc16c1.rpc b/public/sdk/rpc16/dos/dll/rpc16c1.rpc
new file mode 100644
index 000000000..70ea68f12
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16c1.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/dll/rpc16c3.map b/public/sdk/rpc16/dos/dll/rpc16c3.map
new file mode 100644
index 000000000..fbfce4c07
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16c3.map
@@ -0,0 +1,335 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 00000H 00000H TCLTCLNT_TEXT CODE
+ 00000H 001BDH 001BEH EXPORTLT_TEXT CODE
+ 001C0H 0184CH 0168DH _TEXT CODE
+ 0184EH 01911H 000C4H INT_TEXT CODE
+ 01920H 01E06H 004E7H COMDAT_SEG1 CODE
+ 01E08H 02725H 0091EH _DATA DATA
+ 02726H 0273EH 00019H STRINGSEGMENT DATA
+ 02740H 02740H 00000H XIFB DATA
+ 02740H 02740H 00000H XIF DATA
+ 02740H 02740H 00000H XIFE DATA
+ 02740H 02740H 00000H CONST CONST
+ 02740H 028CBH 0018CH _BSS BSS
+ 028D0H 028DBH 0000CH c_common BSS
+
+ Origin Group
+ 01E0:0 DGROUP
+
+ Address Publics by Name
+
+ 0192:04D6 ??_C@_03EOPG@135?$AA@
+ 0192:04CC ??_C@_09FBHK@localhost?$AA@
+ 0192:04C0 ??_C@_0M@OCLK@?40123456789?$AA@
+ 0192:04DA ??_C@_0N@JDIH@ncacn_ip_tcp?$AA@
+ 0192:0118 CLIENTCLOSE
+ 0192:0000 CLIENTOPEN
+ 0192:017E CLIENTREAD
+ 0192:0294 CLIENTTOWERCONSTRUCT
+ 0192:0396 CLIENTTOWEREXPLODE
+ 0192:013A CLIENTWRITE
+ 0000:019A EXPORTTIME
+ 0000:009F I_DOSATEXIT
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:017C NDRCONVERT
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0184:0010 oldint24
+ 0184:0014 oldint2f
+ 0184:000E our_psp
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00EC RPCBINDINGFREE
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:011C RPCREGOPENKEY
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:012E RPCREGSETVALUE
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00F2 RPCSTRINGFREE
+ 0192:0484 TRANSPORTLOAD
+ 001C:14FA _atoi
+ 0000:0063 _CallExport
+ 0000:0000 _DOSDLLInit
+ 01E0:0100 _driver_entry
+ 01E0:0940 _edata
+ 01E0:0ADC _end
+ 001C:0884 _endhostent
+ 01E0:0038 _errno
+ 0000:0046 _ExportInit
+ 0000:00A4 _GETENV
+ 0000:0081 _GetExportTableVersion
+ 001C:0C34 _gethostbyaddr
+ 001C:0A7C _gethostbyname
+ 001C:09D4 _gethostent
+ 0000:00B3 _GETPROCADDRR
+ 001C:0010 _htonl
+ 001C:001F _htons
+ 001C:03BC _inet_addr
+ 001C:0616 _inet_lnaof
+ 001C:06AC _inet_makeaddr
+ 001C:065E _inet_netof
+ 001C:04EE _inet_network
+ 001C:07A4 _inet_ntoa
+ 0000:00A9 _LOADMODR
+ 001C:1279 _locater_bind
+ 001C:126B _locater_close
+ 001C:1254 _locater_open
+ 001C:130F _locater_send
+ 001C:12DD _locater_unbind
+ 001C:15CC _memcpy
+ 001C:0010 _ntohl
+ 001C:001F _ntohs
+ 01E0:0AD4 _segregs
+ 001C:0828 _sethostent
+ 0184:0063 _set_int_handlers
+ 001C:1570 _strcspn
+ 001C:14E0 _strlen
+ 01E0:0044 _theTable
+ 01E0:0008 _TransInfo
+ 0000:00AE _UNLOADMODR
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:1000 Abs __AHINCR
+ 0000:000C Abs __AHSHIFT
+ 001C:14FE __catox
+ 001C:0D70 __close_socket
+ 001C:162A __cltoasub
+ 001C:0DC8 __connect
+ 001C:1637 __cxtoa
+ 01E0:0940 __edata
+ 01E0:0ADC __end
+ 01E0:0AD0 __FakeErrno
+ 001C:14BC __fillbuf
+ 01E0:0AD2 __global_base
+ 001C:1554 __itoa
+ 001C:14A9 __lowio_so_fclose
+ 001C:1480 __lowio_so_fopen
+ 001C:1493 __lowio_so_rewind
+ 001C:0E32 __recv
+ 01E0:0042 __rpc_hostDS
+ 001C:0EB4 __send
+ 001C:0F36 __socket
+ 001C:0078 __so_atoui
+ 001C:10B0 __so_check_binary_compatibility
+ 001C:0718 __so_convert_char_to_ascii
+ 001C:0FE6 __so_drvropen
+ 001C:1446 __so_fclose
+ 001C:1366 __so_fgetc
+ 001C:13C4 __so_fgets
+ 001C:141A __so_fopen
+ 001C:036C __so_get_base
+ 001C:1341 __so_get_code_seg
+ 001C:020A __so_get_netfiles_path
+ 001C:10AC __so_get_sock_pid
+ 001C:11B4 __so_get_status
+ 001C:1344 __so_get_timer_cnt
+ 001C:019E __so_get_token
+ 001C:0028 __so_isdigit
+ 001C:0044 __so_isxdigit
+ 001C:0250 __so_mem_compare
+ 001C:11F8 __so_mult32
+ 001C:08A8 __so_parse_hosts_entry
+ 001C:0F9A __so_process_exit
+ 001C:1158 __so_resolve_IP_addr_to_name
+ 001C:10FE __so_resolve_name_to_IP_addr
+ 001C:1468 __so_rewind
+ 001C:10EC __so_send_the_ioctl_request
+ 001C:034C __so_skip_white_space
+ 001C:011E __so_strcat
+ 001C:0152 __so_strchr
+ 001C:00F6 __so_strcpy
+ 001C:02A2 __so_string_compare
+ 001C:017E __so_strlen
+ 001C:02E0 __so_valid_char
+
+ Address Publics by Value
+
+ 0000:0000 _DOSDLLInit
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:000C Abs __AHSHIFT
+ 0000:0046 _ExportInit
+ 0000:0063 _CallExport
+ 0000:0081 _GetExportTableVersion
+ 0000:009F I_DOSATEXIT
+ 0000:00A4 _GETENV
+ 0000:00A9 _LOADMODR
+ 0000:00AE _UNLOADMODR
+ 0000:00B3 _GETPROCADDRR
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00EC RPCBINDINGFREE
+ 0000:00F2 RPCSTRINGFREE
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:011C RPCREGOPENKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:012E RPCREGSETVALUE
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:017C NDRCONVERT
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:019A EXPORTTIME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 001C:0010 _ntohl
+ 001C:0010 _htonl
+ 001C:001F _htons
+ 001C:001F _ntohs
+ 001C:0028 __so_isdigit
+ 001C:0044 __so_isxdigit
+ 001C:0078 __so_atoui
+ 001C:00F6 __so_strcpy
+ 001C:011E __so_strcat
+ 001C:0152 __so_strchr
+ 001C:017E __so_strlen
+ 001C:019E __so_get_token
+ 001C:020A __so_get_netfiles_path
+ 001C:0250 __so_mem_compare
+ 001C:02A2 __so_string_compare
+ 001C:02E0 __so_valid_char
+ 001C:034C __so_skip_white_space
+ 001C:036C __so_get_base
+ 001C:03BC _inet_addr
+ 001C:04EE _inet_network
+ 001C:0616 _inet_lnaof
+ 001C:065E _inet_netof
+ 001C:06AC _inet_makeaddr
+ 001C:0718 __so_convert_char_to_ascii
+ 001C:07A4 _inet_ntoa
+ 001C:0828 _sethostent
+ 001C:0884 _endhostent
+ 001C:08A8 __so_parse_hosts_entry
+ 001C:09D4 _gethostent
+ 001C:0A7C _gethostbyname
+ 001C:0C34 _gethostbyaddr
+ 001C:0D70 __close_socket
+ 001C:0DC8 __connect
+ 001C:0E32 __recv
+ 0000:1000 Abs __AHINCR
+ 001C:0EB4 __send
+ 001C:0F36 __socket
+ 001C:0F9A __so_process_exit
+ 001C:0FE6 __so_drvropen
+ 001C:10AC __so_get_sock_pid
+ 001C:10B0 __so_check_binary_compatibility
+ 001C:10EC __so_send_the_ioctl_request
+ 001C:10FE __so_resolve_name_to_IP_addr
+ 001C:1158 __so_resolve_IP_addr_to_name
+ 001C:11B4 __so_get_status
+ 001C:11F8 __so_mult32
+ 001C:1254 _locater_open
+ 001C:126B _locater_close
+ 001C:1279 _locater_bind
+ 001C:12DD _locater_unbind
+ 001C:130F _locater_send
+ 001C:1341 __so_get_code_seg
+ 001C:1344 __so_get_timer_cnt
+ 001C:1366 __so_fgetc
+ 001C:13C4 __so_fgets
+ 001C:141A __so_fopen
+ 001C:1446 __so_fclose
+ 001C:1468 __so_rewind
+ 001C:1480 __lowio_so_fopen
+ 001C:1493 __lowio_so_rewind
+ 001C:14A9 __lowio_so_fclose
+ 001C:14BC __fillbuf
+ 001C:14E0 _strlen
+ 001C:14FA _atoi
+ 001C:14FE __catox
+ 001C:1554 __itoa
+ 001C:1570 _strcspn
+ 001C:15CC _memcpy
+ 001C:162A __cltoasub
+ 001C:1637 __cxtoa
+ 0184:000E our_psp
+ 0184:0010 oldint24
+ 0184:0014 oldint2f
+ 0184:0063 _set_int_handlers
+ 0192:0000 CLIENTOPEN
+ 0192:0118 CLIENTCLOSE
+ 0192:013A CLIENTWRITE
+ 0192:017E CLIENTREAD
+ 0192:0294 CLIENTTOWERCONSTRUCT
+ 0192:0396 CLIENTTOWEREXPLODE
+ 0192:0484 TRANSPORTLOAD
+ 0192:04C0 ??_C@_0M@OCLK@?40123456789?$AA@
+ 0192:04CC ??_C@_09FBHK@localhost?$AA@
+ 0192:04D6 ??_C@_03EOPG@135?$AA@
+ 0192:04DA ??_C@_0N@JDIH@ncacn_ip_tcp?$AA@
+ 01E0:0008 _TransInfo
+ 01E0:0038 _errno
+ 01E0:0042 __rpc_hostDS
+ 01E0:0044 _theTable
+ 01E0:0100 _driver_entry
+ 01E0:0940 _edata
+ 01E0:0940 __edata
+ 01E0:0AD0 __FakeErrno
+ 01E0:0AD2 __global_base
+ 01E0:0AD4 _segregs
+ 01E0:0ADC _end
+ 01E0:0ADC __end
+
+Program entry point at 0000:0000
diff --git a/public/sdk/rpc16/dos/dll/rpc16c3.rpc b/public/sdk/rpc16/dos/dll/rpc16c3.rpc
new file mode 100644
index 000000000..b57cf28e1
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16c3.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/dll/rpc16c4.map b/public/sdk/rpc16/dos/dll/rpc16c4.map
new file mode 100644
index 000000000..92aec0434
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16c4.map
@@ -0,0 +1,284 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 00000H 00000H DNLTCLNT_TEXT CODE
+ 00000H 001BDH 001BEH EXPORTLT_TEXT CODE
+ 001BEH 002ABH 000EEH DNETADDR_TEXT CODE
+ 002ACH 003ADH 00102H DNETPATH_TEXT CODE
+ 003AEH 0040FH 00062H GNODEBAD_TEXT CODE
+ 00410H 0048DH 0007EH GNODEBNM_TEXT CODE
+ 0048EH 005BFH 00132H GNODEENT_TEXT CODE
+ 005C0H 005F3H 00034H HCLOSE_TEXT CODE
+ 005F4H 00691H 0009EH HOPEN_TEXT CODE
+ 00692H 006F5H 00064H HREAD_TEXT CODE
+ 006F6H 0078DH 00098H HSEEK_TEXT CODE
+ 0078EH 007EDH 00060H PRGCLS_TEXT CODE
+ 007EEH 00841H 00054H PRGCON_TEXT CODE
+ 00842H 00953H 00112H PRGRCV_TEXT CODE
+ 00954H 00A3FH 000ECH PRGSEL_TEXT CODE
+ 00A40H 00B3BH 000FCH PRGSND_TEXT CODE
+ 00B3CH 00B95H 0005AH PRGSOC_TEXT CODE
+ 00B96H 00BB3H 0001EH PTRCONV_TEXT CODE
+ 00BB4H 00D60H 001ADH _DNET_TEXT CODE
+ 00D62H 00F59H 001F8H _TEXT CODE
+ 00F60H 0146AH 0050BH COMDAT_SEG1 CODE
+ 0146CH 016F9H 0028EH _DATA DATA
+ 016FAH 01712H 00019H STRINGSEGMENT DATA
+ 01714H 01714H 00000H XIFB DATA
+ 01714H 01714H 00000H XIF DATA
+ 01714H 01714H 00000H XIFE DATA
+ 01714H 0171BH 00008H CONST CONST
+ 0171CH 017B3H 00098H _BSS BSS
+
+ Origin Group
+ 0146:0 DGROUP
+
+ Address Publics by Name
+
+ 00F6:04F8 ??_C@_03HJFF@?$CD69?$AA@
+ 00F6:04EC ??_C@_0M@OCLK@?40123456789?$AA@
+ 00F6:04FC ??_C@_0P@MCIL@ncacn_dnet_nsp?$AA@
+ 00F6:011C CLIENTCLOSE
+ 00F6:0000 CLIENTOPEN
+ 00F6:0178 CLIENTREAD
+ 00F6:02B4 CLIENTTOWERCONSTRUCT
+ 00F6:03CE CLIENTTOWEREXPLODE
+ 00F6:0138 CLIENTWRITE
+ 0000:019A EXPORTTIME
+ 0000:009F I_DOSATEXIT
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:017C NDRCONVERT
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00EC RPCBINDINGFREE
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:011C RPCREGOPENKEY
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:012E RPCREGSETVALUE
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00F2 RPCSTRINGFREE
+ 00F6:04DC TRANSPORTLOAD
+ 00D6:00E6 _atoi
+ 00BB:0004 _bcmp
+ 00BB:002D _bcopy
+ 00BB:0052 _bzero
+ 0000:0063 _CallExport
+ 007E:000E _connect
+ 00BB:0074 _decnet
+ 001B:000E _dnet_addr
+ 0146:0134 _dnet_copyright
+ 002A:000C _dnet_path
+ 0146:0176 _dnet_version
+ 0146:0132 _dnp_status
+ 0000:0000 _DOSDLLInit
+ 0146:02BC _edata
+ 0146:0354 _end
+ 0048:005C _endnodeent
+ 0146:003C _errno
+ 0000:0046 _ExportInit
+ 0000:00A4 _GETENV
+ 0000:0081 _GetExportTableVersion
+ 003A:000E _getnodebyaddr
+ 0041:0000 _getnodebyname
+ 0048:00FC _getnodedb
+ 0048:007E _getnodeent
+ 0000:00B3 _GETPROCADDRR
+ 002A:00F0 _get_current_volume
+ 005C:0000 _hclose
+ 005F:0004 _hopen
+ 0069:0002 _hread
+ 006F:0006 _hseek
+ 00BB:00EF _install_check
+ 0000:00A9 _LOADMODR
+ 00B9:0006 _lohi
+ 00B9:0012 _lsw
+ 00D6:019C _memcpy
+ 00BB:0116 _msdos
+ 00B9:001A _msw
+ 0084:0002 _recv
+ 0078:000E _sclose
+ 0095:0004 _select
+ 00A4:0000 _send
+ 0048:000E _setnodeent
+ 00B3:000C _socket
+ 0084:0062 _sread
+ 00D6:0012 _strcat
+ 00D6:00A2 _strcmp
+ 00D6:0066 _strcpy
+ 00D6:0140 _strcspn
+ 00D6:00CC _strlen
+ 00A4:0054 _swrite
+ 0146:0048 _theTable
+ 0146:000C _TransInfo
+ 0000:00AE _UNLOADMODR
+ 0084:00A0 _xrecv
+ 00A4:0092 _xsend
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:1000 Abs __AHINCR
+ 0000:000C Abs __AHSHIFT
+ 00D6:00EA __catox
+ 0146:0198 __ctype
+ 0146:0198 __ctype_
+ 0146:02BC __edata
+ 0146:0354 __end
+ 0146:0046 __rpc_hostDS
+
+ Address Publics by Value
+
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:0000 _DOSDLLInit
+ 0000:000C Abs __AHSHIFT
+ 0000:0046 _ExportInit
+ 0000:0063 _CallExport
+ 0000:0081 _GetExportTableVersion
+ 0000:009F I_DOSATEXIT
+ 0000:00A4 _GETENV
+ 0000:00A9 _LOADMODR
+ 0000:00AE _UNLOADMODR
+ 0000:00B3 _GETPROCADDRR
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00EC RPCBINDINGFREE
+ 0000:00F2 RPCSTRINGFREE
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:011C RPCREGOPENKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:012E RPCREGSETVALUE
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:017C NDRCONVERT
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:019A EXPORTTIME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 001B:000E _dnet_addr
+ 002A:000C _dnet_path
+ 002A:00F0 _get_current_volume
+ 003A:000E _getnodebyaddr
+ 0041:0000 _getnodebyname
+ 0048:000E _setnodeent
+ 0048:005C _endnodeent
+ 0048:007E _getnodeent
+ 0048:00FC _getnodedb
+ 005C:0000 _hclose
+ 005F:0004 _hopen
+ 0069:0002 _hread
+ 006F:0006 _hseek
+ 0078:000E _sclose
+ 007E:000E _connect
+ 0084:0002 _recv
+ 0084:0062 _sread
+ 0084:00A0 _xrecv
+ 0095:0004 _select
+ 00A4:0000 _send
+ 00A4:0054 _swrite
+ 00A4:0092 _xsend
+ 00B3:000C _socket
+ 00B9:0006 _lohi
+ 00B9:0012 _lsw
+ 00B9:001A _msw
+ 00BB:0004 _bcmp
+ 00BB:002D _bcopy
+ 00BB:0052 _bzero
+ 00BB:0074 _decnet
+ 00BB:00EF _install_check
+ 00BB:0116 _msdos
+ 00D6:0012 _strcat
+ 00D6:0066 _strcpy
+ 00D6:00A2 _strcmp
+ 00D6:00CC _strlen
+ 00D6:00E6 _atoi
+ 00D6:00EA __catox
+ 00D6:0140 _strcspn
+ 00D6:019C _memcpy
+ 00F6:0000 CLIENTOPEN
+ 0000:1000 Abs __AHINCR
+ 00F6:011C CLIENTCLOSE
+ 00F6:0138 CLIENTWRITE
+ 00F6:0178 CLIENTREAD
+ 00F6:02B4 CLIENTTOWERCONSTRUCT
+ 00F6:03CE CLIENTTOWEREXPLODE
+ 00F6:04DC TRANSPORTLOAD
+ 00F6:04EC ??_C@_0M@OCLK@?40123456789?$AA@
+ 00F6:04F8 ??_C@_03HJFF@?$CD69?$AA@
+ 00F6:04FC ??_C@_0P@MCIL@ncacn_dnet_nsp?$AA@
+ 0146:000C _TransInfo
+ 0146:003C _errno
+ 0146:0046 __rpc_hostDS
+ 0146:0048 _theTable
+ 0146:0132 _dnp_status
+ 0146:0134 _dnet_copyright
+ 0146:0176 _dnet_version
+ 0146:0198 __ctype
+ 0146:0198 __ctype_
+ 0146:02BC _edata
+ 0146:02BC __edata
+ 0146:0354 _end
+ 0146:0354 __end
+
+Program entry point at 0000:0000
diff --git a/public/sdk/rpc16/dos/dll/rpc16c4.rpc b/public/sdk/rpc16/dos/dll/rpc16c4.rpc
new file mode 100644
index 000000000..de21026e1
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16c4.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/dll/rpc16c5.map b/public/sdk/rpc16/dos/dll/rpc16c5.map
new file mode 100644
index 000000000..e0e4775af
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16c5.map
@@ -0,0 +1,216 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 00000H 00000H NBLTCLNT_TEXT CODE
+ 00000H 001BDH 001BEH EXPORTLT_TEXT CODE
+ 001BEH 0030CH 0014FH _TEXT CODE
+ 00310H 01486H 01177H COMDAT_SEG1 CODE
+ 01488H 01533H 000ACH _DATA DATA
+ 01534H 0154CH 00019H STRINGSEGMENT DATA
+ 0154EH 0154EH 00000H XIFB DATA
+ 0154EH 0154EH 00000H XIF DATA
+ 0154EH 0154EH 00000H XIFE DATA
+ 0154EH 0154EH 00000H CONST CONST
+ 0154EH 0154EH 00000H _BSS BSS
+ 01550H 0157FH 00030H c_common BSS
+
+ Origin Group
+ 0148:0 DGROUP
+
+ Address Publics by Name
+
+ 0031:1158 ??_C@_0BP@PJIB@Software?2Microsoft?2Rpc?2NetBios?$AA@
+ 0031:1122 ??_C@_0M@PAMB@ncacn_nb_nb?$AA@
+ 0031:112E ??_C@_0N@DJPI@ncacn_nb_tcp?$AA@
+ 0031:114A ??_C@_0N@JHIF@ncacn_nb_ipx?$AA@
+ 0031:113C ??_C@_0N@OHPK@ncacn_nb_xns?$AA@
+ 0031:057C CLOSE
+ 0031:10F4 EXECNCB
+ 0000:019A EXPORTTIME
+ 0031:0F20 INITNBMUTEX
+ 0000:009F I_DOSATEXIT
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0031:106E MAPERRORCODE
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:017C NDRCONVERT
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0031:0302 OPEN
+ 0031:081A RECEIVE
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00EC RPCBINDINGFREE
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:011C RPCREGOPENKEY
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:012E RPCREGSETVALUE
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00F2 RPCSTRINGFREE
+ 0031:0710 SEND
+ 0031:098C SENDRECEIVE
+ 0031:0BF8 TOWERCONSTRUCT
+ 0031:0DE6 TOWEREXPLODE
+ 0031:00A0 TRANSPORTLOAD
+ 0000:0063 _CallExport
+ 0031:0000 _CleanUpNetBios
+ 0000:0000 _DOSDLLInit
+ 0148:00CE _edata
+ 0148:0100 _end
+ 0148:0090 _errno
+ 0000:0046 _ExportInit
+ 0000:00A4 _GETENV
+ 0000:0081 _GetExportTableVersion
+ 0000:00B3 _GETPROCADDRR
+ 0000:00A9 _LOADMODR
+ 0148:007E _MachineName
+ 0148:008E _MachineNameLengthUnpadded
+ 0031:0F28 _MapProtocol
+ 001B:009E _memcpy
+ 001B:00FC _memset
+ 0148:0008 _NetBiosErrors
+ 0148:00D0 _ProtoToLana
+ 0031:10B6 _SetupNetBios
+ 001B:005A _strcmp
+ 001B:001E _strcpy
+ 001B:0084 _strlen
+ 0148:009C _theTable
+ 0148:004E _TransInfo
+ 0000:00AE _UNLOADMODR
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:1000 Abs __AHINCR
+ 0000:000C Abs __AHSHIFT
+ 0148:00CE __edata
+ 0148:0100 __end
+ 001B:0144 __fstrlen
+ 0148:009A __rpc_hostDS
+
+ Address Publics by Value
+
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 _DOSDLLInit
+ 0000:0000 Abs __ADBUSED
+ 0000:000C Abs __AHSHIFT
+ 0000:0046 _ExportInit
+ 0000:0063 _CallExport
+ 0000:0081 _GetExportTableVersion
+ 0000:009F I_DOSATEXIT
+ 0000:00A4 _GETENV
+ 0000:00A9 _LOADMODR
+ 0000:00AE _UNLOADMODR
+ 0000:00B3 _GETPROCADDRR
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00EC RPCBINDINGFREE
+ 0000:00F2 RPCSTRINGFREE
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:011C RPCREGOPENKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:012E RPCREGSETVALUE
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:017C NDRCONVERT
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:019A EXPORTTIME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 001B:001E _strcpy
+ 001B:005A _strcmp
+ 001B:0084 _strlen
+ 001B:009E _memcpy
+ 001B:00FC _memset
+ 001B:0144 __fstrlen
+ 0031:0000 _CleanUpNetBios
+ 0031:00A0 TRANSPORTLOAD
+ 0031:0302 OPEN
+ 0031:057C CLOSE
+ 0031:0710 SEND
+ 0031:081A RECEIVE
+ 0031:098C SENDRECEIVE
+ 0031:0BF8 TOWERCONSTRUCT
+ 0000:1000 Abs __AHINCR
+ 0031:0DE6 TOWEREXPLODE
+ 0031:0F20 INITNBMUTEX
+ 0031:0F28 _MapProtocol
+ 0031:106E MAPERRORCODE
+ 0031:10B6 _SetupNetBios
+ 0031:10F4 EXECNCB
+ 0031:1122 ??_C@_0M@PAMB@ncacn_nb_nb?$AA@
+ 0031:112E ??_C@_0N@DJPI@ncacn_nb_tcp?$AA@
+ 0031:113C ??_C@_0N@OHPK@ncacn_nb_xns?$AA@
+ 0031:114A ??_C@_0N@JHIF@ncacn_nb_ipx?$AA@
+ 0031:1158 ??_C@_0BP@PJIB@Software?2Microsoft?2Rpc?2NetBios?$AA@
+ 0148:0008 _NetBiosErrors
+ 0148:004E _TransInfo
+ 0148:007E _MachineName
+ 0148:008E _MachineNameLengthUnpadded
+ 0148:0090 _errno
+ 0148:009A __rpc_hostDS
+ 0148:009C _theTable
+ 0148:00CE _edata
+ 0148:00CE __edata
+ 0148:00D0 _ProtoToLana
+ 0148:0100 __end
+ 0148:0100 _end
+
+Program entry point at 0000:0000
diff --git a/public/sdk/rpc16/dos/dll/rpc16c5.rpc b/public/sdk/rpc16/dos/dll/rpc16c5.rpc
new file mode 100644
index 000000000..6fd32a149
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16c5.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/dll/rpc16c6.map b/public/sdk/rpc16/dos/dll/rpc16c6.map
new file mode 100644
index 000000000..7112247b1
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16c6.map
@@ -0,0 +1,330 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 00000H 00000H SPXCLNT_TEXT CODE
+ 00000H 001BDH 001BEH EXPORTLT_TEXT CODE
+ 001BEH 001BEH 00000H GETHOST_TEXT CODE
+ 001BEH 001BEH 00000H NOVELL_TEXT CODE
+ 001BEH 0051DH 00360H _TEXT CODE
+ 00520H 02020H 01B01H COMDAT_SEG1 CODE
+ 02022H 0207BH 0005AH _DATA DATA
+ 0207CH 02094H 00019H STRINGSEGMENT DATA
+ 02096H 02096H 00000H XIFB DATA
+ 02096H 02096H 00000H XIF DATA
+ 02096H 02096H 00000H XIFE DATA
+ 02096H 02096H 00000H CONST CONST
+ 02096H 02096H 00000H _BSS BSS
+ 020A0H 02205H 00166H c_common BSS
+
+ Origin Group
+ 0202:0 DGROUP
+
+ Address Publics by Name
+
+ 0052:0A60 ??_C@_05LKBG@34280?$AA@
+ 0052:0A66 ??_C@_09LLEG@ncacn_spx?$AA@
+ 0052:0A54 ??_C@_0L@JIBM@0123456789?$AA@
+ 0052:117C ??_C@_0M@KHAG@NET_ADDRESS?$AA@
+ 0052:11CE ASMIPXCANCELEVENT
+ 0052:11EA ASMIPXCLOSESOCKET
+ 0000:0000 Unr ASMIPXDISCONNECTFROMTARGET
+ 0000:0000 Unr ASMIPXGETINTERNETWORKADDRESS
+ 0052:1206 ASMIPXGETINTERVALMARKER
+ 0052:135A ASMIPXGETLOCALTARGET
+ 0052:1344 ASMIPXGETMAXPACKETSIZE
+ 0052:1188 ASMIPXINITIALIZE
+ 0052:121C ASMIPXLISTENFORPACKET
+ 0052:1238 ASMIPXOPENSOCKET
+ 0052:1260 ASMIPXRELINQUISHCONTROL
+ 0052:1276 ASMIPXSENDPACKET
+ 0000:0000 Unr ASMSPXABORTCONNECTION
+ 0052:12C4 ASMSPXESTABLISHCONNECTION
+ 0052:1292 ASMSPXINITIALIZE
+ 0052:12EC ASMSPXLISTENFORSEQUENCEDPACKET
+ 0052:1308 ASMSPXSENDSEQUENCEDPACKET
+ 0052:1326 ASMSPXTERMINATECONNECTION
+ 0052:0258 CLIENTCLOSE
+ 0052:00E6 CLIENTOPEN
+ 0052:0558 CLIENTRECV
+ 0052:02E2 CLIENTSEND
+ 0052:06E2 CLIENTTOWERCONSTRUCT
+ 0052:07B4 CLIENTTOWEREXPLODE
+ 0000:019A EXPORTTIME
+ 0000:009F I_DOSATEXIT
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:017C NDRCONVERT
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00EC RPCBINDINGFREE
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:011C RPCREGOPENKEY
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:012E RPCREGSETVALUE
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00F2 RPCSTRINGFREE
+ 0052:0902 TRANSPORTLOAD
+ 0202:005A _ActiveFileServer
+ 0052:0B0C _AddServerToCache
+ 001B:0038 _atoi
+ 0052:0000 _ByteSwapShort
+ 0052:0C28 _CachedServerContacted
+ 0052:0C68 _CachedServerNotContacted
+ 0000:0063 _CallExport
+ 0052:0A70 _chtob
+ 0202:015C _chunk
+ 0052:0890 _ClientCleanup
+ 0052:167A _ConnectToAnyFileServer
+ 0202:0146 _conn_failed_cnt
+ 0202:0086 _conn_lookup
+ 0052:199E _DisconnectFromServer
+ 0000:0000 _DOSDLLInit
+ 0052:0AF4 _DosGetTickCount
+ 0202:0076 _edata
+ 0202:01E6 _end
+ 0202:014A _enteripx
+ 0202:0032 _errno
+ 0000:0046 _ExportInit
+ 0202:0058 _FileServerCount
+ 0052:1400 _FindFileServers
+ 0052:0BE8 _FindServerInCache
+ 0000:00A4 _GETENV
+ 0000:0081 _GetExportTableVersion
+ 0000:00B3 _GETPROCADDRR
+ 0052:1012 _IpxGetHostByName
+ 0000:00A9 _LOADMODR
+ 0202:0164 _max_num_send
+ 001B:00EE _memcpy
+ 001B:014C _memset
+ 0052:1784 _NcpTransaction
+ 0202:0144 _nfy_failure_cnt
+ 0202:0162 _packet_size
+ 0202:0124 _PreferredServer
+ 0202:0056 _PreferredServerFound
+ 0052:19F0 _ReadPropertyValue
+ 0202:0084 _receive_code
+ 0202:0160 _receive_data
+ 0202:0080 _receive_failed_cnt
+ 0202:0082 _receive_fragmentCount
+ 0202:00E6 _receive_fragmentSize
+ 0202:0152 _receive_head
+ 0202:0143 _receive_seq
+ 0202:0148 _receive_spx_length
+ 0202:015A _receive_state
+ 0202:014E _receive_tail
+ 0052:0CC8 _SearchBindery
+ 0052:0DA4 _SearchWithSap
+ 0202:0156 _send_data
+ 0202:0157 _send_seq
+ 0202:0166 _ServerCache
+ 0202:00E8 _Servers
+ 0052:13B4 _SetupEcb
+ 0202:0158 _socket
+ 001B:001E _strlen
+ 001B:0092 _strspn
+ 0202:003E _theTable
+ 0202:0002 _TransInfo
+ 0000:00AE _UNLOADMODR
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:1000 Abs __AHINCR
+ 0000:000C Abs __AHSHIFT
+ 001B:003C __catox
+ 0202:0076 __edata
+ 0202:01E6 __end
+ 001B:0194 __fmemcmp
+ 001B:01F0 __fmemcpy
+ 001B:02CE __fmemset
+ 001B:0268 __fstrcmp
+ 001B:0292 __fstrcpy
+ 001B:024E __fstrlen
+ 001B:0316 __fstrnicmp
+ 0202:003C __rpc_hostDS
+
+ Address Publics by Value
+
+ 0000:0000 Abs __ADBUSED
+ 0000:0000 Unr ASMIPXGETINTERNETWORKADDRESS
+ 0000:0000 Unr ASMSPXABORTCONNECTION
+ 0000:0000 _DOSDLLInit
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Unr ASMIPXDISCONNECTFROMTARGET
+ 0000:000C Abs __AHSHIFT
+ 0000:0046 _ExportInit
+ 0000:0063 _CallExport
+ 0000:0081 _GetExportTableVersion
+ 0000:009F I_DOSATEXIT
+ 0000:00A4 _GETENV
+ 0000:00A9 _LOADMODR
+ 0000:00AE _UNLOADMODR
+ 0000:00B3 _GETPROCADDRR
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00EC RPCBINDINGFREE
+ 0000:00F2 RPCSTRINGFREE
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:011C RPCREGOPENKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:012E RPCREGSETVALUE
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:017C NDRCONVERT
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:019A EXPORTTIME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 001B:001E _strlen
+ 001B:0038 _atoi
+ 001B:003C __catox
+ 001B:0092 _strspn
+ 001B:00EE _memcpy
+ 001B:014C _memset
+ 001B:0194 __fmemcmp
+ 001B:01F0 __fmemcpy
+ 001B:024E __fstrlen
+ 001B:0268 __fstrcmp
+ 001B:0292 __fstrcpy
+ 001B:02CE __fmemset
+ 001B:0316 __fstrnicmp
+ 0052:0000 _ByteSwapShort
+ 0052:00E6 CLIENTOPEN
+ 0052:0258 CLIENTCLOSE
+ 0052:02E2 CLIENTSEND
+ 0052:0558 CLIENTRECV
+ 0052:06E2 CLIENTTOWERCONSTRUCT
+ 0052:07B4 CLIENTTOWEREXPLODE
+ 0052:0890 _ClientCleanup
+ 0052:0902 TRANSPORTLOAD
+ 0052:0A54 ??_C@_0L@JIBM@0123456789?$AA@
+ 0052:0A60 ??_C@_05LKBG@34280?$AA@
+ 0052:0A66 ??_C@_09LLEG@ncacn_spx?$AA@
+ 0052:0A70 _chtob
+ 0000:1000 Abs __AHINCR
+ 0052:0AF4 _DosGetTickCount
+ 0052:0B0C _AddServerToCache
+ 0052:0BE8 _FindServerInCache
+ 0052:0C28 _CachedServerContacted
+ 0052:0C68 _CachedServerNotContacted
+ 0052:0CC8 _SearchBindery
+ 0052:0DA4 _SearchWithSap
+ 0052:1012 _IpxGetHostByName
+ 0052:117C ??_C@_0M@KHAG@NET_ADDRESS?$AA@
+ 0052:1188 ASMIPXINITIALIZE
+ 0052:11CE ASMIPXCANCELEVENT
+ 0052:11EA ASMIPXCLOSESOCKET
+ 0052:1206 ASMIPXGETINTERVALMARKER
+ 0052:121C ASMIPXLISTENFORPACKET
+ 0052:1238 ASMIPXOPENSOCKET
+ 0052:1260 ASMIPXRELINQUISHCONTROL
+ 0052:1276 ASMIPXSENDPACKET
+ 0052:1292 ASMSPXINITIALIZE
+ 0052:12C4 ASMSPXESTABLISHCONNECTION
+ 0052:12EC ASMSPXLISTENFORSEQUENCEDPACKET
+ 0052:1308 ASMSPXSENDSEQUENCEDPACKET
+ 0052:1326 ASMSPXTERMINATECONNECTION
+ 0052:1344 ASMIPXGETMAXPACKETSIZE
+ 0052:135A ASMIPXGETLOCALTARGET
+ 0052:13B4 _SetupEcb
+ 0052:1400 _FindFileServers
+ 0052:167A _ConnectToAnyFileServer
+ 0052:1784 _NcpTransaction
+ 0052:199E _DisconnectFromServer
+ 0052:19F0 _ReadPropertyValue
+ 0202:0002 _TransInfo
+ 0202:0032 _errno
+ 0202:003C __rpc_hostDS
+ 0202:003E _theTable
+ 0202:0056 _PreferredServerFound
+ 0202:0058 _FileServerCount
+ 0202:005A _ActiveFileServer
+ 0202:0076 __edata
+ 0202:0076 _edata
+ 0202:0080 _receive_failed_cnt
+ 0202:0082 _receive_fragmentCount
+ 0202:0084 _receive_code
+ 0202:0086 _conn_lookup
+ 0202:00E6 _receive_fragmentSize
+ 0202:00E8 _Servers
+ 0202:0124 _PreferredServer
+ 0202:0143 _receive_seq
+ 0202:0144 _nfy_failure_cnt
+ 0202:0146 _conn_failed_cnt
+ 0202:0148 _receive_spx_length
+ 0202:014A _enteripx
+ 0202:014E _receive_tail
+ 0202:0152 _receive_head
+ 0202:0156 _send_data
+ 0202:0157 _send_seq
+ 0202:0158 _socket
+ 0202:015A _receive_state
+ 0202:015C _chunk
+ 0202:0160 _receive_data
+ 0202:0162 _packet_size
+ 0202:0164 _max_num_send
+ 0202:0166 _ServerCache
+ 0202:01E6 _end
+ 0202:01E6 __end
+
+Program entry point at 0000:0000
diff --git a/public/sdk/rpc16/dos/dll/rpc16c6.rpc b/public/sdk/rpc16/dos/dll/rpc16c6.rpc
new file mode 100644
index 000000000..6991f4b32
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16c6.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/dll/rpc16dg3.map b/public/sdk/rpc16/dos/dll/rpc16dg3.map
new file mode 100644
index 000000000..1d331a245
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16dg3.map
@@ -0,0 +1,351 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 00000H 00000H DGUDPC_TEXT CODE
+ 00000H 001BDH 001BEH EXPORTLT_TEXT CODE
+ 001C0H 018D2H 01713H _TEXT CODE
+ 018D4H 01997H 000C4H INT_TEXT CODE
+ 019A0H 02046H 006A7H COMDAT_SEG1 CODE
+ 02048H 02989H 00942H _DATA DATA
+ 0298AH 029A2H 00019H STRINGSEGMENT DATA
+ 029A4H 029A4H 00000H XIFB DATA
+ 029A4H 029A4H 00000H XIF DATA
+ 029A4H 029A4H 00000H XIFE DATA
+ 029A4H 029A4H 00000H CONST CONST
+ 029A4H 02B2FH 0018CH _BSS BSS
+ 02B30H 02B39H 0000AH c_common BSS
+
+ Origin Group
+ 0204:0 DGROUP
+
+ Address Publics by Name
+
+ 019A:0696 ??_C@_03EOPG@135?$AA@
+ 019A:069A ??_C@_0N@OGGG@ncadg_ip_udp?$AA@
+ 019A:0000 ASSIGNLOCALENDPOINT
+ 019A:0610 BEGINCALL
+ 019A:03BA CLIENTTOWERCONSTRUCT
+ 019A:04BC CLIENTTOWEREXPLODE
+ 019A:021A DEREGISTERSERVERADDRESS
+ 019A:061C ENDCALL
+ 0000:019A EXPORTTIME
+ 019A:00D0 FREELOCALENDPOINT
+ 019A:05F8 INQBUFFERLENGTH
+ 0000:009F I_DOSATEXIT
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:017C NDRCONVERT
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 018D:0006 oldint24
+ 018D:000A oldint2f
+ 018D:0004 our_psp
+ 019A:05AA QUERYCLIENTENDPOINT
+ 019A:02E4 RECEIVEPACKET
+ 019A:00F2 REGISTERSERVERADDRESS
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00EC RPCBINDINGFREE
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:011C RPCREGOPENKEY
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:012E RPCREGSETVALUE
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00F2 RPCSTRINGFREE
+ 019A:0226 SENDTOSERVER
+ 019A:05DC SETBUFFERLENGTH
+ 019A:0626 TRANSPORTLOAD
+ 001C:158A _atoi
+ 0000:0063 _CallExport
+ 0000:0000 _DOSDLLInit
+ 0204:0124 _driver_entry
+ 0204:0964 _edata
+ 0204:0AFA _end
+ 001C:0884 _endhostent
+ 0204:005C _errno
+ 0000:0046 _ExportInit
+ 0000:00A4 _GETENV
+ 0000:0081 _GetExportTableVersion
+ 001C:0C34 _gethostbyaddr
+ 001C:0A7C _gethostbyname
+ 001C:09D4 _gethostent
+ 0000:00B3 _GETPROCADDRR
+ 001C:0010 _htonl
+ 001C:001F _htons
+ 001C:03BC _inet_addr
+ 001C:0616 _inet_lnaof
+ 001C:06AC _inet_makeaddr
+ 001C:065E _inet_netof
+ 001C:04EE _inet_network
+ 001C:07A4 _inet_ntoa
+ 0204:0008 _LargestPacketSize
+ 0000:00A9 _LOADMODR
+ 001C:1309 _locater_bind
+ 001C:12FB _locater_close
+ 001C:12E4 _locater_open
+ 001C:139F _locater_send
+ 001C:136D _locater_unbind
+ 019A:0662 _MapStatus
+ 001C:160A _memcpy
+ 001C:1668 _memset
+ 001C:0010 _ntohl
+ 001C:001F _ntohs
+ 0204:0AF2 _segregs
+ 001C:0828 _sethostent
+ 018D:0059 _set_int_handlers
+ 001C:1570 _strlen
+ 0204:0068 _theTable
+ 0204:000C _TransInfo
+ 0000:00AE _UNLOADMODR
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:1000 Abs __AHINCR
+ 0000:000C Abs __AHSHIFT
+ 001C:0D70 __bind
+ 001C:158E __catox
+ 001C:0DDA __close_socket
+ 001C:16B0 __cltoasub
+ 001C:16BD __cxtoa
+ 0204:0964 __edata
+ 0204:0AFA __end
+ 001C:154C __fillbuf
+ 0204:0AF0 __global_base
+ 001C:15E4 __itoa
+ 001C:1539 __lowio_so_fclose
+ 001C:1510 __lowio_so_fopen
+ 001C:1523 __lowio_so_rewind
+ 001C:0E32 __recvfrom
+ 0204:0066 __rpc_hostDS
+ 001C:0EBE __select
+ 001C:0F46 __sendto
+ 001C:0FCC __socket
+ 001C:0078 __so_atoui
+ 001C:1146 __so_check_binary_compatibility
+ 001C:0718 __so_convert_char_to_ascii
+ 001C:107C __so_drvropen
+ 001C:14D6 __so_fclose
+ 001C:13F6 __so_fgetc
+ 001C:1454 __so_fgets
+ 001C:14AA __so_fopen
+ 001C:036C __so_get_base
+ 001C:13D1 __so_get_code_seg
+ 001C:020A __so_get_netfiles_path
+ 001C:1142 __so_get_sock_pid
+ 001C:124A __so_get_status
+ 001C:13D4 __so_get_timer_cnt
+ 001C:019E __so_get_token
+ 001C:0028 __so_isdigit
+ 001C:0044 __so_isxdigit
+ 001C:0250 __so_mem_compare
+ 001C:128E __so_mult32
+ 001C:08A8 __so_parse_hosts_entry
+ 001C:1030 __so_process_exit
+ 001C:11EE __so_resolve_IP_addr_to_name
+ 001C:1194 __so_resolve_name_to_IP_addr
+ 001C:14F8 __so_rewind
+ 001C:1182 __so_send_the_ioctl_request
+ 001C:034C __so_skip_white_space
+ 001C:011E __so_strcat
+ 001C:0152 __so_strchr
+ 001C:00F6 __so_strcpy
+ 001C:02A2 __so_string_compare
+ 001C:017E __so_strlen
+ 001C:02E0 __so_valid_char
+ 001C:1600 __ultoa
+
+ Address Publics by Value
+
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 _DOSDLLInit
+ 0000:0000 Abs __ADBUSED
+ 0000:000C Abs __AHSHIFT
+ 0000:0046 _ExportInit
+ 0000:0063 _CallExport
+ 0000:0081 _GetExportTableVersion
+ 0000:009F I_DOSATEXIT
+ 0000:00A4 _GETENV
+ 0000:00A9 _LOADMODR
+ 0000:00AE _UNLOADMODR
+ 0000:00B3 _GETPROCADDRR
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00EC RPCBINDINGFREE
+ 0000:00F2 RPCSTRINGFREE
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:011C RPCREGOPENKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:012E RPCREGSETVALUE
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:017C NDRCONVERT
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:019A EXPORTTIME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 001C:0010 _htonl
+ 001C:0010 _ntohl
+ 001C:001F _ntohs
+ 001C:001F _htons
+ 001C:0028 __so_isdigit
+ 001C:0044 __so_isxdigit
+ 001C:0078 __so_atoui
+ 001C:00F6 __so_strcpy
+ 001C:011E __so_strcat
+ 001C:0152 __so_strchr
+ 001C:017E __so_strlen
+ 001C:019E __so_get_token
+ 001C:020A __so_get_netfiles_path
+ 001C:0250 __so_mem_compare
+ 001C:02A2 __so_string_compare
+ 001C:02E0 __so_valid_char
+ 001C:034C __so_skip_white_space
+ 001C:036C __so_get_base
+ 001C:03BC _inet_addr
+ 001C:04EE _inet_network
+ 001C:0616 _inet_lnaof
+ 001C:065E _inet_netof
+ 001C:06AC _inet_makeaddr
+ 001C:0718 __so_convert_char_to_ascii
+ 001C:07A4 _inet_ntoa
+ 001C:0828 _sethostent
+ 001C:0884 _endhostent
+ 001C:08A8 __so_parse_hosts_entry
+ 001C:09D4 _gethostent
+ 001C:0A7C _gethostbyname
+ 001C:0C34 _gethostbyaddr
+ 001C:0D70 __bind
+ 001C:0DDA __close_socket
+ 001C:0E32 __recvfrom
+ 0000:1000 Abs __AHINCR
+ 001C:0EBE __select
+ 001C:0F46 __sendto
+ 001C:0FCC __socket
+ 001C:1030 __so_process_exit
+ 001C:107C __so_drvropen
+ 001C:1142 __so_get_sock_pid
+ 001C:1146 __so_check_binary_compatibility
+ 001C:1182 __so_send_the_ioctl_request
+ 001C:1194 __so_resolve_name_to_IP_addr
+ 001C:11EE __so_resolve_IP_addr_to_name
+ 001C:124A __so_get_status
+ 001C:128E __so_mult32
+ 001C:12E4 _locater_open
+ 001C:12FB _locater_close
+ 001C:1309 _locater_bind
+ 001C:136D _locater_unbind
+ 001C:139F _locater_send
+ 001C:13D1 __so_get_code_seg
+ 001C:13D4 __so_get_timer_cnt
+ 001C:13F6 __so_fgetc
+ 001C:1454 __so_fgets
+ 001C:14AA __so_fopen
+ 001C:14D6 __so_fclose
+ 001C:14F8 __so_rewind
+ 001C:1510 __lowio_so_fopen
+ 001C:1523 __lowio_so_rewind
+ 001C:1539 __lowio_so_fclose
+ 001C:154C __fillbuf
+ 001C:1570 _strlen
+ 001C:158A _atoi
+ 001C:158E __catox
+ 001C:15E4 __itoa
+ 001C:1600 __ultoa
+ 001C:160A _memcpy
+ 001C:1668 _memset
+ 001C:16B0 __cltoasub
+ 001C:16BD __cxtoa
+ 018D:0004 our_psp
+ 018D:0006 oldint24
+ 018D:000A oldint2f
+ 018D:0059 _set_int_handlers
+ 019A:0000 ASSIGNLOCALENDPOINT
+ 019A:00D0 FREELOCALENDPOINT
+ 019A:00F2 REGISTERSERVERADDRESS
+ 019A:021A DEREGISTERSERVERADDRESS
+ 019A:0226 SENDTOSERVER
+ 019A:02E4 RECEIVEPACKET
+ 019A:03BA CLIENTTOWERCONSTRUCT
+ 019A:04BC CLIENTTOWEREXPLODE
+ 019A:05AA QUERYCLIENTENDPOINT
+ 019A:05DC SETBUFFERLENGTH
+ 019A:05F8 INQBUFFERLENGTH
+ 019A:0610 BEGINCALL
+ 019A:061C ENDCALL
+ 019A:0626 TRANSPORTLOAD
+ 019A:0662 _MapStatus
+ 019A:0696 ??_C@_03EOPG@135?$AA@
+ 019A:069A ??_C@_0N@OGGG@ncadg_ip_udp?$AA@
+ 0204:0008 _LargestPacketSize
+ 0204:000C _TransInfo
+ 0204:005C _errno
+ 0204:0066 __rpc_hostDS
+ 0204:0068 _theTable
+ 0204:0124 _driver_entry
+ 0204:0964 _edata
+ 0204:0964 __edata
+ 0204:0AF0 __global_base
+ 0204:0AF2 _segregs
+ 0204:0AFA __end
+ 0204:0AFA _end
+
+Program entry point at 0000:0000
diff --git a/public/sdk/rpc16/dos/dll/rpc16dg3.rpc b/public/sdk/rpc16/dos/dll/rpc16dg3.rpc
new file mode 100644
index 000000000..ddae8e0b5
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16dg3.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/dll/rpc16dg6.map b/public/sdk/rpc16/dos/dll/rpc16dg6.map
new file mode 100644
index 000000000..5d7636f0d
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16dg6.map
@@ -0,0 +1,329 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 00000H 00000H IPXCLNT_TEXT CODE
+ 00000H 00023H 00024H RPC16DG6_FIXED CODE
+ 00024H 001E1H 001BEH EXPORTLT_TEXT CODE
+ 001E2H 001E2H 00000H GETHOST_TEXT CODE
+ 001E2H 001E2H 00000H NOVELL_TEXT CODE
+ 001E2H 005A7H 003C6H _TEXT CODE
+ 005B0H 01F46H 01997H COMDAT_SEG1 CODE
+ 01F48H 01FC5H 0007EH _DATA DATA
+ 01FC6H 01FDEH 00019H STRINGSEGMENT DATA
+ 01FE0H 01FE0H 00000H XIFB DATA
+ 01FE0H 01FE0H 00000H XIF DATA
+ 01FE0H 01FE0H 00000H XIFE DATA
+ 01FE0H 01FE0H 00000H CONST CONST
+ 01FE0H 01FE0H 00000H _BSS BSS
+ 01FE0H 020D3H 000F4H c_common BSS
+
+ Origin Group
+ 01F4:0 DGROUP
+
+ Address Publics by Name
+
+ 005B:0A2C ??_C@_05LKBG@34280?$AA@
+ 005B:0A32 ??_C@_09OHNL@ncadg_ipx?$AA@
+ 005B:10A8 ??_C@_0M@KHAG@NET_ADDRESS?$AA@
+ 005B:10FA ASMIPXCANCELEVENT
+ 005B:1116 ASMIPXCLOSESOCKET
+ 005B:11D4 ASMIPXDISCONNECTFROMTARGET
+ 0000:0000 Unr ASMIPXGETINTERNETWORKADDRESS
+ 005B:1132 ASMIPXGETINTERVALMARKER
+ 005B:11F0 ASMIPXGETLOCALTARGET
+ 005B:11BE ASMIPXGETMAXPACKETSIZE
+ 005B:10B4 ASMIPXINITIALIZE
+ 005B:1148 ASMIPXLISTENFORPACKET
+ 005B:1164 ASMIPXOPENSOCKET
+ 005B:118C ASMIPXRELINQUISHCONTROL
+ 005B:11A2 ASMIPXSENDPACKET
+ 0000:0000 Unr ASMSPXABORTCONNECTION
+ 0000:0000 Unr ASMSPXESTABLISHCONNECTION
+ 0000:0000 Unr ASMSPXINITIALIZE
+ 0000:0000 Unr ASMSPXLISTENFORSEQUENCEDPACKET
+ 0000:0000 Unr ASMSPXSENDSEQUENCEDPACKET
+ 0000:0000 Unr ASMSPXTERMINATECONNECTION
+ 005B:016E ASSIGNLOCALENDPOINT
+ 005B:00BC BEGINCALL
+ 005B:07DA CLIENTTOWERCONSTRUCT
+ 005B:08C8 CLIENTTOWEREXPLODE
+ 005B:03A2 DEREGISTERSERVERADDRESS
+ 005B:0100 ENDCALL
+ 0002:019E EXPORTTIME
+ 005B:02D0 FREELOCALENDPOINT
+ 0002:00A3 I_DOSATEXIT
+ 0002:01B0 I_NSGETMEMORYALLOCATOR
+ 0002:00FC I_RPCALLOCATE
+ 0002:0102 I_RPCFREE
+ 0002:0108 I_RPCFREEBUFFER
+ 0002:010E I_RPCGETBUFFER
+ 0002:011A I_RPCNSBINDINGSETENTRYNAME
+ 0002:01A4 I_RPCREGISTEREDBUFFERALLOCATE
+ 0002:01AA I_RPCREGISTEREDBUFFERFREE
+ 0002:0114 I_RPCSENDRECEIVE
+ 0002:0156 I_RPCTRANSCLIENTMAXFRAG
+ 0002:00BC I_RPCTRANSCLIENTREALLOCBUFFER
+ 0002:013E NDRCCONTEXTBINDING
+ 0002:0144 NDRCCONTEXTMARSHALL
+ 0002:014A NDRCCONTEXTUNMARSHALL
+ 0002:0162 NDRCLIENTCONTEXTMARSHALL
+ 0002:0192 NDRCLIENTCONTEXTUNMARSHALL
+ 0002:0186 NDRCLIENTINITIALIZE
+ 0002:018C NDRCLIENTINITIALIZENEW
+ 0002:0180 NDRCONVERT
+ 0002:016E NDRFREEBUFFER
+ 0002:0174 NDRGETBUFFER
+ 0002:017A NDRPOINTERBUFFERSIZE
+ 0002:0168 NDRPOINTERMARSHALL
+ 0002:015C NDRPOINTERUNMARSHALL
+ 0002:0198 NDRSENDRECEIVE
+ 0002:01BC NDRSIMPLESTRUCTBUFFERSIZE
+ 0002:01B6 NDRSIMPLESTRUCTMARSHALL
+ 005B:09A4 QUERYCLIENTENDPOINT
+ 005B:04BA RECEIVEPACKET
+ 005B:0334 REGISTERSERVERADDRESS
+ 0002:00D0 RPCBINDINGCOPY
+ 0002:00F0 RPCBINDINGFREE
+ 0002:00E4 RPCBINDINGFROMSTRINGBINDING
+ 0002:00DF RPCBINDINGTOSTRINGBINDING
+ 0002:00EA RPCBINDINGVECTORFREE
+ 0002:00C1 RPCGETEXCEPTIONHANDLER
+ 0002:00CB RPCLEAVEEXCEPTION
+ 0002:012C RPCREGCLOSEKEY
+ 0002:0126 RPCREGCREATEKEY
+ 0002:0120 RPCREGOPENKEY
+ 0002:0138 RPCREGQUERYVALUE
+ 0002:0132 RPCREGSETVALUE
+ 0002:00C6 RPCSETEXCEPTIONHANDLER
+ 0002:0150 RPCSSDESTROYCLIENTCONTEXT
+ 0002:00D5 RPCSTRINGBINDINGCOMPOSE
+ 0002:00DA RPCSTRINGBINDINGPARSE
+ 0002:00F6 RPCSTRINGFREE
+ 005B:03BE SENDTOSERVER
+ 005B:09CE TRANSPORTLOAD
+ 005B:07D0 TRANSPORTUNLOAD
+ 01F4:0084 _ActiveFileServer
+ 005B:0AD8 _AddServerToCache
+ 001E:002C _atoi
+ 005B:0000 _ByteSwapShort
+ 0000:0000 Unr _CachedServerContacted
+ 0000:0000 Unr _CachedServerNotContacted
+ 0002:0067 _CallExport
+ 005B:0A3C _chtob
+ 005B:0092 _ClientCleanup
+ 005B:1510 _ConnectToAnyFileServer
+ 01F4:000A _consecutive_timeout_count
+ 005B:1834 _DisconnectFromServer
+ 0002:0004 _DOSDLLInit
+ 005B:0AC0 _DosGetTickCount
+ 01F4:00A0 _edata
+ 01F4:0194 _end
+ 01F4:00FE _enteripx
+ 01F4:0104 _ep_list
+ 01F4:005C _errno
+ 0002:004A _ExportInit
+ 01F4:0082 _FileServerCount
+ 005B:1296 _FindFileServers
+ 005B:0BB4 _FindServerInCache
+ 0002:00A8 _GETENV
+ 0002:0085 _GetExportTableVersion
+ 0002:00B7 _GETPROCADDRR
+ 005B:0F3E _IpxGetHostByName
+ 0002:00AD _LOADMODR
+ 01F4:0112 _max_num_send
+ 001E:0090 _memcpy
+ 001E:00EE _memset
+ 005B:161A _NcpTransaction
+ 01F4:00A0 _num_endpoints
+ 01F4:0102 _packet_size
+ 0000:0000 _post_ecb
+ 01F4:00DE _PreferredServer
+ 01F4:0080 _PreferredServerFound
+ 005B:1886 _ReadPropertyValue
+ 005B:0BF4 _SearchBindery
+ 005B:0CD0 _SearchWithSap
+ 01F4:0008 _Sequence
+ 01F4:0114 _ServerCache
+ 01F4:00A2 _Servers
+ 005B:124A _SetupEcb
+ 001E:0012 _strlen
+ 01F4:0068 _theTable
+ 01F4:000C _TransInfo
+ 0002:00B2 _UNLOADMODR
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 001E:019A __aFFalmul
+ 001E:019A __aFFaulmul
+ 001E:01BC __aFlmul
+ 001E:01BC __aFulmul
+ 0000:1000 Abs __AHINCR
+ 0000:000C Abs __AHSHIFT
+ 001E:0030 __catox
+ 001E:0136 __cltoasub
+ 001E:0143 __cxtoa
+ 01F4:00A0 __edata
+ 01F4:0194 __end
+ 001E:01EE __fmemcmp
+ 001E:024A __fmemcpy
+ 001E:0328 __fmemset
+ 001E:02C2 __fstrcmp
+ 001E:02EC __fstrcpy
+ 001E:02A8 __fstrlen
+ 001E:0370 __fstrnicmp
+ 01F4:0066 __rpc_hostDS
+ 001E:0086 __ultoa
+
+ Address Publics by Value
+
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Unr ASMSPXTERMINATECONNECTION
+ 0000:0000 Unr ASMSPXESTABLISHCONNECTION
+ 0000:0000 Unr ASMSPXLISTENFORSEQUENCEDPACKET
+ 0000:0000 Unr ASMSPXINITIALIZE
+ 0000:0000 Abs __ADBUSED
+ 0000:0000 _post_ecb
+ 0000:0000 Unr ASMSPXSENDSEQUENCEDPACKET
+ 0000:0000 Unr _CachedServerNotContacted
+ 0000:0000 Unr ASMSPXABORTCONNECTION
+ 0000:0000 Unr _CachedServerContacted
+ 0000:0000 Unr ASMIPXGETINTERNETWORKADDRESS
+ 0000:000C Abs __AHSHIFT
+ 0002:0004 _DOSDLLInit
+ 0002:004A _ExportInit
+ 0002:0067 _CallExport
+ 0002:0085 _GetExportTableVersion
+ 0002:00A3 I_DOSATEXIT
+ 0002:00A8 _GETENV
+ 0002:00AD _LOADMODR
+ 0002:00B2 _UNLOADMODR
+ 0002:00B7 _GETPROCADDRR
+ 0002:00BC I_RPCTRANSCLIENTREALLOCBUFFER
+ 0002:00C1 RPCGETEXCEPTIONHANDLER
+ 0002:00C6 RPCSETEXCEPTIONHANDLER
+ 0002:00CB RPCLEAVEEXCEPTION
+ 0002:00D0 RPCBINDINGCOPY
+ 0002:00D5 RPCSTRINGBINDINGCOMPOSE
+ 0002:00DA RPCSTRINGBINDINGPARSE
+ 0002:00DF RPCBINDINGTOSTRINGBINDING
+ 0002:00E4 RPCBINDINGFROMSTRINGBINDING
+ 0002:00EA RPCBINDINGVECTORFREE
+ 0002:00F0 RPCBINDINGFREE
+ 0002:00F6 RPCSTRINGFREE
+ 0002:00FC I_RPCALLOCATE
+ 0002:0102 I_RPCFREE
+ 0002:0108 I_RPCFREEBUFFER
+ 0002:010E I_RPCGETBUFFER
+ 0002:0114 I_RPCSENDRECEIVE
+ 0002:011A I_RPCNSBINDINGSETENTRYNAME
+ 0002:0120 RPCREGOPENKEY
+ 0002:0126 RPCREGCREATEKEY
+ 0002:012C RPCREGCLOSEKEY
+ 0002:0132 RPCREGSETVALUE
+ 0002:0138 RPCREGQUERYVALUE
+ 0002:013E NDRCCONTEXTBINDING
+ 0002:0144 NDRCCONTEXTMARSHALL
+ 0002:014A NDRCCONTEXTUNMARSHALL
+ 0002:0150 RPCSSDESTROYCLIENTCONTEXT
+ 0002:0156 I_RPCTRANSCLIENTMAXFRAG
+ 0002:015C NDRPOINTERUNMARSHALL
+ 0002:0162 NDRCLIENTCONTEXTMARSHALL
+ 0002:0168 NDRPOINTERMARSHALL
+ 0002:016E NDRFREEBUFFER
+ 0002:0174 NDRGETBUFFER
+ 0002:017A NDRPOINTERBUFFERSIZE
+ 0002:0180 NDRCONVERT
+ 0002:0186 NDRCLIENTINITIALIZE
+ 0002:018C NDRCLIENTINITIALIZENEW
+ 0002:0192 NDRCLIENTCONTEXTUNMARSHALL
+ 0002:0198 NDRSENDRECEIVE
+ 0002:019E EXPORTTIME
+ 0002:01A4 I_RPCREGISTEREDBUFFERALLOCATE
+ 0002:01AA I_RPCREGISTEREDBUFFERFREE
+ 0002:01B0 I_NSGETMEMORYALLOCATOR
+ 0002:01B6 NDRSIMPLESTRUCTMARSHALL
+ 0002:01BC NDRSIMPLESTRUCTBUFFERSIZE
+ 001E:0012 _strlen
+ 001E:002C _atoi
+ 001E:0030 __catox
+ 001E:0086 __ultoa
+ 001E:0090 _memcpy
+ 001E:00EE _memset
+ 001E:0136 __cltoasub
+ 001E:0143 __cxtoa
+ 001E:019A __aFFaulmul
+ 001E:019A __aFFalmul
+ 001E:01BC __aFlmul
+ 001E:01BC __aFulmul
+ 001E:01EE __fmemcmp
+ 001E:024A __fmemcpy
+ 001E:02A8 __fstrlen
+ 001E:02C2 __fstrcmp
+ 001E:02EC __fstrcpy
+ 001E:0328 __fmemset
+ 001E:0370 __fstrnicmp
+ 005B:0000 _ByteSwapShort
+ 005B:0092 _ClientCleanup
+ 005B:00BC BEGINCALL
+ 005B:0100 ENDCALL
+ 005B:016E ASSIGNLOCALENDPOINT
+ 005B:02D0 FREELOCALENDPOINT
+ 005B:0334 REGISTERSERVERADDRESS
+ 005B:03A2 DEREGISTERSERVERADDRESS
+ 005B:03BE SENDTOSERVER
+ 005B:04BA RECEIVEPACKET
+ 005B:07D0 TRANSPORTUNLOAD
+ 005B:07DA CLIENTTOWERCONSTRUCT
+ 005B:08C8 CLIENTTOWEREXPLODE
+ 005B:09A4 QUERYCLIENTENDPOINT
+ 005B:09CE TRANSPORTLOAD
+ 005B:0A2C ??_C@_05LKBG@34280?$AA@
+ 005B:0A32 ??_C@_09OHNL@ncadg_ipx?$AA@
+ 005B:0A3C _chtob
+ 0000:1000 Abs __AHINCR
+ 005B:0AC0 _DosGetTickCount
+ 005B:0AD8 _AddServerToCache
+ 005B:0BB4 _FindServerInCache
+ 005B:0BF4 _SearchBindery
+ 005B:0CD0 _SearchWithSap
+ 005B:0F3E _IpxGetHostByName
+ 005B:10A8 ??_C@_0M@KHAG@NET_ADDRESS?$AA@
+ 005B:10B4 ASMIPXINITIALIZE
+ 005B:10FA ASMIPXCANCELEVENT
+ 005B:1116 ASMIPXCLOSESOCKET
+ 005B:1132 ASMIPXGETINTERVALMARKER
+ 005B:1148 ASMIPXLISTENFORPACKET
+ 005B:1164 ASMIPXOPENSOCKET
+ 005B:118C ASMIPXRELINQUISHCONTROL
+ 005B:11A2 ASMIPXSENDPACKET
+ 005B:11BE ASMIPXGETMAXPACKETSIZE
+ 005B:11D4 ASMIPXDISCONNECTFROMTARGET
+ 005B:11F0 ASMIPXGETLOCALTARGET
+ 005B:124A _SetupEcb
+ 005B:1296 _FindFileServers
+ 005B:1510 _ConnectToAnyFileServer
+ 005B:161A _NcpTransaction
+ 005B:1834 _DisconnectFromServer
+ 005B:1886 _ReadPropertyValue
+ 01F4:0008 _Sequence
+ 01F4:000A _consecutive_timeout_count
+ 01F4:000C _TransInfo
+ 01F4:005C _errno
+ 01F4:0066 __rpc_hostDS
+ 01F4:0068 _theTable
+ 01F4:0080 _PreferredServerFound
+ 01F4:0082 _FileServerCount
+ 01F4:0084 _ActiveFileServer
+ 01F4:00A0 __edata
+ 01F4:00A0 _num_endpoints
+ 01F4:00A0 _edata
+ 01F4:00A2 _Servers
+ 01F4:00DE _PreferredServer
+ 01F4:00FE _enteripx
+ 01F4:0102 _packet_size
+ 01F4:0104 _ep_list
+ 01F4:0112 _max_num_send
+ 01F4:0114 _ServerCache
+ 01F4:0194 __end
+ 01F4:0194 _end
+
+Program entry point at 0002:0004
diff --git a/public/sdk/rpc16/dos/dll/rpc16dg6.rpc b/public/sdk/rpc16/dos/dll/rpc16dg6.rpc
new file mode 100644
index 000000000..6ef28b915
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpc16dg6.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/dll/rpcns.map b/public/sdk/rpc16/dos/dll/rpcns.map
new file mode 100644
index 000000000..a1e662ef5
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpcns.map
@@ -0,0 +1,305 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 00000H 00000H NSICLNT_TEXT CODE
+ 00000H 00000H 00000H NSICLT_C_TEXT CODE
+ 00000H 00000H 00000H CBIND_TEXT CODE
+ 00000H 001BDH 001BEH EXPORTNS_TEXT CODE
+ 001BEH 00244H 00087H EXCEPT86_TEXT CODE
+ 00246H 00246H 00000H UTIL_TEXT CODE
+ 00246H 00298H 00053H MEM_TEXT CODE
+ 0029AH 0037EH 000E5H LMDLL_TEXT CODE
+ 00380H 0054DH 001CEH _TEXT CODE
+ 00550H 01C5AH 0170BH COMDAT_SEG1 CODE
+ 01C5CH 01F37H 002DCH _DATA DATA
+ 01F38H 02014H 000DDH STRINGSEGMENT DATA
+ 02016H 02016H 00000H XIFB DATA
+ 02016H 02016H 00000H XIF DATA
+ 02016H 02016H 00000H XIFE DATA
+ 02016H 02031H 0001CH TABLESEGMENT DATA
+ 02032H 02033H 00002H CONST CONST
+ 02034H 02067H 00034H _BSS BSS
+ 02070H 02070H 00000H c_common BSS
+
+ Origin Group
+ 01C5:0 DGROUP
+
+ Address Publics by Name
+
+ 0055:1500 ??0WIDE_STRING@@REC@PEE@Z
+ 0055:15E4 ??2@ZAPEXI@Z
+ 0055:15F2 ??3@ZAXPEX@Z
+ 0055:08F8 ??_C@_07DFNK@ncalrpc?$AA@
+ 0055:0900 ??_C@_08DNBJ@ncacn_np?$AA@
+ 0055:14BA ??_C@_08GAHO@Endpoint?$AA@
+ 0055:14A0 ??_C@_08OBCM@Protocol?$AA@
+ 0055:146A ??_C@_0BB@EHCE@?2mailslot?2Resp_c?$AA@
+ 0055:1456 ??_C@_0BE@JFMA@?2?2?$CK?2mailslot?2Resp_s?$AA@
+ 0055:147C ??_C@_0CD@LHG@Software?2Microsoft?2Rpc?2NameServi@
+ 0055:16FE ??_C@_0N@NHGH@DefaultEntry?$AA@
+ 0055:16F0 ??_C@_0O@JCMN@DefaultSyntax?$AA@
+ 0055:14C4 ??_C@_0O@MCEM@?2pipe?2locator?$AA@
+ 0055:14AA ??_C@_0P@NOEJ@NetworkAddress?$AA@
+ 01C5:01A4 ?LocalMS@@3PEDE
+ 01C5:01A0 ?MailslotName@@3PEDE
+ 01C5:03F6 ?NsiStringBinding@@3PEEE
+ 0055:06CE ?RandomNumber@@ZAHXZ
+ 0055:0388 ?RpcNsBindingImportBeginW@@ZCGKPEGPEXPEU_GUID@@PEPEX@Z
+ 0055:0000 ?RpcNsBindingLookupBeginW@@ZCGKPEGPEXPEU_GUID@@KPEPEX@Z
+ 0029:0034 DOSDELETEMAILSLOT
+ 0029:001F DOSMAKEMAILSLOT
+ 0029:0026 DOSREADMAILSLOT
+ 0029:002D DOSWRITEMAILSLOT
+ 0000:019A EXPORTTIME
+ 0000:009F I_DOSATEXIT
+ 0055:1316 I_GETDEFAULTENTRYSYNTAX
+ 0055:124A I_NSCLIENTBINDDONE
+ 0055:0EC2 I_NSCLIENTBINDSEARCH
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0024:0022 MIDL_USER_ALLOCATE
+ 0024:003B MIDL_USER_FREE
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:017C NDRCONVERT
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0029:000A NETGETDCNAME
+ 0029:0011 NETSERVERENUM2
+ 0029:0018 NETWKSTAGETINFO
+ 0024:0006 NSALLOCATORSETUP
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00EC RPCBINDINGFREE
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0055:087E RPCNSBINDINGIMPORTBEGINA
+ 0055:04AC RPCNSBINDINGIMPORTDONE
+ 0055:0412 RPCNSBINDINGIMPORTNEXT
+ 0055:07FE RPCNSBINDINGLOOKUPBEGINA
+ 0055:030A RPCNSBINDINGLOOKUPDONE
+ 0055:0124 RPCNSBINDINGLOOKUPNEXT
+ 0055:0702 RPCNSBINDINGSELECT
+ 0055:0518 RPCNSMGMTHANDLESETEXPAGE
+ 001B:004D RPCRAISEEXCEPTION
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:011C RPCREGOPENKEY
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:012E RPCREGSETVALUE
+ 001B:000E RPCSETEXCEPTION
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00F2 RPCSTRINGFREE
+ 0038:0090 _atoi
+ 0055:1326 _BroadcastAQuery
+ 0000:0063 _CallExport
+ 0055:1602 _CallExportInit
+ 0055:1604 _CopyString
+ 01C5:03F0 _DefaultName
+ 01C5:019C _DefaultSyntax
+ 0000:0000 _DOSDLLInit
+ 01C5:03E4 _edata
+ 01C5:0420 _end
+ 01C5:01A8 _errno
+ 0000:0046 _ExportInit
+ 01C5:03F4 _fSyntaxDefaultsLoaded
+ 0055:1646 _GetDefaultEntrys
+ 0000:00A4 _GETENV
+ 0000:0081 _GetExportTableVersion
+ 0000:00B3 _GETPROCADDRR
+ 0000:00A9 _LOADMODR
+ 0055:14D2 _MapException
+ 0038:00EA _memset
+ 01C5:03EC _NsiClntBinding
+ 01C5:0058 _NsiC_ClientIfHandle
+ 01C5:020C _NsiToRpcStatus
+ 0055:090A _nsi_binding_lookup_begin
+ 0055:0ACA _nsi_binding_lookup_done
+ 0055:0BB4 _nsi_binding_lookup_next
+ 0055:0CEC _nsi_mgmt_handle_set_exp_age
+ 0055:0DDA _RegGetString
+ 0029:003B _RpcNsLmDiscard
+ 0038:004C _strcmp
+ 0038:0010 _strcpy
+ 0038:0076 _strlen
+ 01C5:01B4 _theTable
+ 0055:159C _UnicodeToAscii
+ 0000:00AE _UNLOADMODR
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0038:0132 __aFlmul
+ 0038:0132 __aFulmul
+ 0038:0164 __aFulrem
+ 0000:1000 Abs __AHINCR
+ 0000:000C Abs __AHSHIFT
+ 0038:0094 __catox
+ 01C5:03E4 __edata
+ 01C5:0420 __end
+ 01C5:023C __NsAllocatorInitialized
+ 01C5:01B2 __rpc_hostDS
+
+ Address Publics by Value
+
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 _DOSDLLInit
+ 0000:0000 Abs __ADBUSED
+ 0000:000C Abs __AHSHIFT
+ 0000:0046 _ExportInit
+ 0000:0063 _CallExport
+ 0000:0081 _GetExportTableVersion
+ 0000:009F I_DOSATEXIT
+ 0000:00A4 _GETENV
+ 0000:00A9 _LOADMODR
+ 0000:00AE _UNLOADMODR
+ 0000:00B3 _GETPROCADDRR
+ 0000:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0000:00BD RPCGETEXCEPTIONHANDLER
+ 0000:00C2 RPCSETEXCEPTIONHANDLER
+ 0000:00C7 RPCLEAVEEXCEPTION
+ 0000:00CC RPCBINDINGCOPY
+ 0000:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0000:00D6 RPCSTRINGBINDINGPARSE
+ 0000:00DB RPCBINDINGTOSTRINGBINDING
+ 0000:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0000:00E6 RPCBINDINGVECTORFREE
+ 0000:00EC RPCBINDINGFREE
+ 0000:00F2 RPCSTRINGFREE
+ 0000:00F8 I_RPCALLOCATE
+ 0000:00FE I_RPCFREE
+ 0000:0104 I_RPCFREEBUFFER
+ 0000:010A I_RPCGETBUFFER
+ 0000:0110 I_RPCSENDRECEIVE
+ 0000:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0000:011C RPCREGOPENKEY
+ 0000:0122 RPCREGCREATEKEY
+ 0000:0128 RPCREGCLOSEKEY
+ 0000:012E RPCREGSETVALUE
+ 0000:0134 RPCREGQUERYVALUE
+ 0000:013A NDRCCONTEXTBINDING
+ 0000:0140 NDRCCONTEXTMARSHALL
+ 0000:0146 NDRCCONTEXTUNMARSHALL
+ 0000:014C RPCSSDESTROYCLIENTCONTEXT
+ 0000:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0000:0158 NDRPOINTERUNMARSHALL
+ 0000:015E NDRCLIENTCONTEXTMARSHALL
+ 0000:0164 NDRPOINTERMARSHALL
+ 0000:016A NDRFREEBUFFER
+ 0000:0170 NDRGETBUFFER
+ 0000:0176 NDRPOINTERBUFFERSIZE
+ 0000:017C NDRCONVERT
+ 0000:0182 NDRCLIENTINITIALIZE
+ 0000:0188 NDRCLIENTINITIALIZENEW
+ 0000:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0000:0194 NDRSENDRECEIVE
+ 0000:019A EXPORTTIME
+ 0000:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0000:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0000:01AC I_NSGETMEMORYALLOCATOR
+ 0000:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0000:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 001B:000E RPCSETEXCEPTION
+ 001B:004D RPCRAISEEXCEPTION
+ 0024:0006 NSALLOCATORSETUP
+ 0024:0022 MIDL_USER_ALLOCATE
+ 0024:003B MIDL_USER_FREE
+ 0029:000A NETGETDCNAME
+ 0029:0011 NETSERVERENUM2
+ 0029:0018 NETWKSTAGETINFO
+ 0029:001F DOSMAKEMAILSLOT
+ 0029:0026 DOSREADMAILSLOT
+ 0029:002D DOSWRITEMAILSLOT
+ 0029:0034 DOSDELETEMAILSLOT
+ 0029:003B _RpcNsLmDiscard
+ 0038:0010 _strcpy
+ 0038:004C _strcmp
+ 0038:0076 _strlen
+ 0038:0090 _atoi
+ 0038:0094 __catox
+ 0038:00EA _memset
+ 0038:0132 __aFulmul
+ 0038:0132 __aFlmul
+ 0038:0164 __aFulrem
+ 0055:0000 ?RpcNsBindingLookupBeginW@@ZCGKPEGPEXPEU_GUID@@KPEPEX@Z
+ 0055:0124 RPCNSBINDINGLOOKUPNEXT
+ 0055:030A RPCNSBINDINGLOOKUPDONE
+ 0055:0388 ?RpcNsBindingImportBeginW@@ZCGKPEGPEXPEU_GUID@@PEPEX@Z
+ 0055:0412 RPCNSBINDINGIMPORTNEXT
+ 0055:04AC RPCNSBINDINGIMPORTDONE
+ 0055:0518 RPCNSMGMTHANDLESETEXPAGE
+ 0055:06CE ?RandomNumber@@ZAHXZ
+ 0055:0702 RPCNSBINDINGSELECT
+ 0055:07FE RPCNSBINDINGLOOKUPBEGINA
+ 0055:087E RPCNSBINDINGIMPORTBEGINA
+ 0055:08F8 ??_C@_07DFNK@ncalrpc?$AA@
+ 0055:0900 ??_C@_08DNBJ@ncacn_np?$AA@
+ 0055:090A _nsi_binding_lookup_begin
+ 0000:1000 Abs __AHINCR
+ 0055:0ACA _nsi_binding_lookup_done
+ 0055:0BB4 _nsi_binding_lookup_next
+ 0055:0CEC _nsi_mgmt_handle_set_exp_age
+ 0055:0DDA _RegGetString
+ 0055:0EC2 I_NSCLIENTBINDSEARCH
+ 0055:124A I_NSCLIENTBINDDONE
+ 0055:1316 I_GETDEFAULTENTRYSYNTAX
+ 0055:1326 _BroadcastAQuery
+ 0055:1456 ??_C@_0BE@JFMA@?2?2?$CK?2mailslot?2Resp_s?$AA@
+ 0055:146A ??_C@_0BB@EHCE@?2mailslot?2Resp_c?$AA@
+ 0055:147C ??_C@_0CD@LHG@Software?2Microsoft?2Rpc?2NameServi@
+ 0055:14A0 ??_C@_08OBCM@Protocol?$AA@
+ 0055:14AA ??_C@_0P@NOEJ@NetworkAddress?$AA@
+ 0055:14BA ??_C@_08GAHO@Endpoint?$AA@
+ 0055:14C4 ??_C@_0O@MCEM@?2pipe?2locator?$AA@
+ 0055:14D2 _MapException
+ 0055:1500 ??0WIDE_STRING@@REC@PEE@Z
+ 0055:159C _UnicodeToAscii
+ 0055:15E4 ??2@ZAPEXI@Z
+ 0055:15F2 ??3@ZAXPEX@Z
+ 0055:1602 _CallExportInit
+ 0055:1604 _CopyString
+ 0055:1646 _GetDefaultEntrys
+ 0055:16F0 ??_C@_0O@JCMN@DefaultSyntax?$AA@
+ 0055:16FE ??_C@_0N@NHGH@DefaultEntry?$AA@
+ 01C5:0058 _NsiC_ClientIfHandle
+ 01C5:019C _DefaultSyntax
+ 01C5:01A0 ?MailslotName@@3PEDE
+ 01C5:01A4 ?LocalMS@@3PEDE
+ 01C5:01A8 _errno
+ 01C5:01B2 __rpc_hostDS
+ 01C5:01B4 _theTable
+ 01C5:020C _NsiToRpcStatus
+ 01C5:023C __NsAllocatorInitialized
+ 01C5:03E4 _edata
+ 01C5:03E4 __edata
+ 01C5:03EC _NsiClntBinding
+ 01C5:03F0 _DefaultName
+ 01C5:03F4 _fSyntaxDefaultsLoaded
+ 01C5:03F6 ?NsiStringBinding@@3PEEE
+ 01C5:0420 _end
+ 01C5:0420 __end
+
+Program entry point at 0000:0000
diff --git a/public/sdk/rpc16/dos/dll/rpcns.rpc b/public/sdk/rpc16/dos/dll/rpcns.rpc
new file mode 100644
index 000000000..45a62f031
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpcns.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/dll/rpcnslm.map b/public/sdk/rpc16/dos/dll/rpcnslm.map
new file mode 100644
index 000000000..90e56f943
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpcnslm.map
@@ -0,0 +1,364 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 000ADH 000AEH EXPORTLM_TEXT CODE
+ 000AEH 01B4BH 01A9EH CANON_TEXT CODE
+ 01B4CH 02408H 008BDH _TEXT CODE
+ 0240AH 024D5H 000CCH NETLIB CODE
+ 024D6H 02B0DH 00638H SECURITY_TEXT CODE
+ 02B0EH 02B0EH 00000H SSI_TEXT CODE
+ 02B0EH 02B9BH 0008EH SERVER_TEXT CODE
+ 02B9CH 02B9CH 00000H SRVSTRNG_TEXT CODE
+ 02B9CH 02D9DH 00202H WKSTA_TEXT CODE
+ 02D9EH 02D9EH 00000H DLLMGMT_TEXT CODE
+ 02D9EH 031D9H 0043CH MAILSLOT_TEXT CODE
+ 031DAH 033A3H 001CAH RPC_TEXT CODE
+ 033B0H 033B1H 00002H REMOTE_TEXT CODE
+ 033B2H 034B7H 00106H UTIL_TEXT CODE
+ 034B8H 034DAH 00023H ASMLIB_TEXT CODE
+ 034DCH 034DCH 00000H APIMESS_TEXT CODE
+ 034DCH 034DCH 00000H DEFALLOC_TEXT CODE
+ 034DCH 034DCH 00000H DEFFREE_TEXT CODE
+ 034DCH 03539H 0005EH DEFMEMRT_TEXT CODE
+ 0353AH 0353AH 00000H NULLSTR_TEXT CODE
+ 03540H 047D7H 01298H APITABLD5_DATA FAR_DATA
+ 047D8H 04EFFH 00728H _DATA DATA
+ 04F00H 04F79H 0007AH STRINGSEGMENT DATA
+ 04F7AH 04F7AH 00000H XIFB DATA
+ 04F7AH 04F81H 00008H XIF DATA
+ 04F82H 04F82H 00000H XIFE DATA
+ 04F82H 051E6H 00265H CONST CONST
+ 051E8H 051E8H 00000H _BSS BSS
+
+ Origin Group
+ 047D:0 DGROUP
+
+ Address Publics by Name
+
+ 01B4:0516 Canonicalize
+ 033B:0000 DEADTABLEENTRY
+ 02D9:0132 DOSDELETEMAILSLOT
+ 01B4:0656 DOSICANONICALIZE
+ 02D9:018E DOSMAKEMAILSLOT
+ 02D9:02E4 DOSREADMAILSLOT
+ 02D9:036E DOSWRITEMAILSLOT
+ 033B:0002 I_NETGETCDNAMES
+ 000A:14E6 I_NETNAMECOMPARE
+ 000A:000E I_NETPATHCANONICALIZE
+ 000A:0932 I_NETPATHTYPE
+ 01B4:0599 l0_PathSep
+ 01B4:05A4 l1_SkipBack
+ 01B4:064C l2_ScanPathChar
+ 01B4:0697 l3_PathChrCmp
+ 01B4:06F0 l4_NameTrans
+ 01B4:0715 l5_NORMSCAN
+ 01B4:0762 l6_GetLet
+ 01B4:079B l7_SPCHK
+ 01B4:07A2 l8_PackName
+ 033B:008E MYDOSALLOCSEG
+ 033B:00C8 MYDOSFREESEG
+ 033B:00E6 MYDOSREALLOCSEG
+ 024D:0006 NETGETDCNAME
+ 031D:00FE NETIISREMOTE
+ 031D:000A NETIREMOTEAPI
+ 02B9:000C NETSERVERENUM2
+ 02B0:000E NETSERVERGETINFO
+ 02B9:00F2 NETWKSTAGETINFO
+ 01B4:059B PathSepGotCh
+ 000A:0116 R_I_NETPATHCANONICALIZE
+ 024D:009A WGETDCNAME
+ 000A:158A WI_NETNAMECOMPARE
+ 000A:0144 WI_NETPATHCANONICALIZE
+ 000A:09D4 WI_NETPATHTYPE
+ 02B9:01AA WWKSTAGETINFO
+ 047D:0698 _AdminProcess
+ 047D:06AC _AdminProcessCount
+ 047D:06AE _AdminProcessSem
+ 047D:0724 _ALLOCATOR
+ 0354:0000 _APItable
+ 02D9:000E _build_mailslot_name
+ 047D:067A _Caller_Info
+ 0000:0063 _CallExport
+ 047D:00DC _cbMaxPathCompLen
+ 047D:00DA _cbMaxPathLen
+ 047D:066A _cname
+ 047D:068E _Data_Sem
+ 01B4:0826 _DoInt
+ 01B4:0829 _DoIntR
+ 01B4:082C _DoIntx
+ 047D:06B4 _DomainSem
+ 0000:0000 _DOSDLLInit
+ 047D:0A18 _edata
+ 047D:06F8 _Encrypt_Sem
+ 047D:0A18 _end
+ 047D:0008 _errno
+ 0000:0046 _ExportInit
+ 0000:00A4 _FREE
+ 047D:072C _FREEMEM
+ 0000:00A9 _GETENV
+ 034B:0008 _getenv_addr
+ 0000:0081 _GetExportTableVersion
+ 000A:1670 _GetToken
+ 024D:058E _get_temp_ms
+ 01B4:01EA _ininlsf
+ 047D:06C8 _LogonDCName
+ 047D:06E8 _LogonDomain
+ 0000:009F _MALLOC
+ 01B4:001C _memsetf
+ 047D:06FC _MslotName
+ 047D:0882 _num_server_info
+ 047D:06B2 _PinballInstalled
+ 047D:06B8 _PrimaryDCName
+ 047D:06D8 _PrimaryDomain
+ 047D:0692 _RC_Sem
+ 034B:001C _rdr_open
+ 047D:0696 _Reader_Count
+ 047D:0728 _REALLOCATOR
+ 01B4:03A4 _strcatf
+ 01B4:004E _strchrf
+ 01B4:0340 _strcmpf
+ 01B4:036C _strcpyf
+ 01B4:018E _strcspnf
+ 01B4:0296 _stricmpf
+ 01B4:0326 _strlenf
+ 01B4:00DA _strncpyf
+ 01B4:007C _strnicmpf
+ 01B4:0104 _strrchrf
+ 01B4:0132 _strspnf
+ 0240:000A _strtailf
+ 01B4:02EC _struprf
+ 047D:0014 _theTable
+ 047D:088E _txt_REM_connection_info_0
+ 047D:0890 _txt_REM_connection_info_1
+ 047D:07EE _txt_REM_dc_name
+ 047D:07BA _txt_REM_I_NetListCanonicalizeP
+ 047D:07C4 _txt_REM_I_NetNameCanonicalizeP
+ 047D:07D2 _txt_REM_I_NetNameCompare_P
+ 047D:07D7 _txt_REM_I_NetNameValidate_P
+ 047D:07CA _txt_REM_I_NetPathCanonicalizeP
+ 047D:07DB _txt_REM_I_NetPathCompare_P
+ 047D:07E0 _txt_REM_I_NetPathType_P
+ 047D:0898 _txt_REM_NetConnectionEnum_P
+ 047D:07E4 _txt_REM_NetGetDCName_P
+ 047D:07E8 _txt_REM_NetLogonEnum_P
+ 047D:07F2 _txt_REM_NetServerAdminCommand_
+ 047D:07F2 _txt_REM_NetServerAdminCom_P
+ 047D:089F _txt_REM_NetServerDiskEnum_P
+ 047D:07FB _txt_REM_NetServerEnum2_P
+ 047D:0803 _txt_REM_NetServerEnum_P
+ 047D:0884 _txt_REM_NetServerGetInfo_P
+ 047D:0889 _txt_REM_NetServerSetInfo_P
+ 047D:08A8 _txt_REM_NetWkstaGetInfo_P
+ 047D:0903 _txt_REM_NetWkstaSetInfo_P
+ 047D:098C _txt_REM_NetWkstaSetUID_P
+ 047D:0981 _txt_REM_NetWkstaUserLogoff_P
+ 047D:0976 _txt_REM_NetWkstaUserLogon_P
+ 047D:0A16 _txt_REM_nulstr
+ 047D:07F9 _txt_REM_server_admin_command
+ 047D:08A5 _txt_REM_server_diskenum
+ 047D:0809 _txt_REM_server_info_0
+ 047D:080D _txt_REM_server_info_1
+ 047D:0815 _txt_REM_server_info_2
+ 047D:0846 _txt_REM_server_info_3
+ 047D:087A _txt_REM_server_info_table
+ 047D:0972 _txt_REM_user_logoff_info_1
+ 047D:094F _txt_REM_user_logon_info_0
+ 047D:0954 _txt_REM_user_logon_info_1
+ 047D:0969 _txt_REM_user_logon_info_2
+ 047D:08AD _txt_REM_wksta_info_0
+ 047D:0908 _txt_REM_wksta_info_0_setinf
+ 047D:08CF _txt_REM_wksta_info_1
+ 047D:08F4 _txt_REM_wksta_info_10
+ 047D:092A _txt_REM_wksta_info_1_setinf
+ 047D:08FC _txt_REM_WWkstaGetInfo_P
+ 047D:0654 _uname
+ 047D:068A _Writer_Sem
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:9876 Abs __anlsused
+ 047D:021A __CollateTable
+ 01B4:0442 __DOSCASEMAP
+ 01B4:03EC __DOSGETCOLLATE
+ 047D:09CB __DosMVDMErrorMsg
+ 01B4:07D8 __DosVersionCheck
+ 0000:0001 Abs __DosVersionCheckInit
+ 047D:0994 __DosVersionCheckMsg
+ 047D:0A18 __edata
+ 047D:0A18 __end
+ 047D:0A15 __InMVDMBox
+ 047D:0012 __rpc_hostDS
+ 047D:041A __ToLowerCaseTable
+ 047D:031A __ToUpperCaseTable
+ 034D:000C ___default_allocator
+ 034D:0040 ___default_available
+ 034D:0058 ___default_freemem
+ 034D:0028 ___default_reallocator
+ 01B4:08AB ___segread
+ 047D:051A ____ctype
+ 047D:051A ____ctype_
+
+ Address Publics by Value
+
+ 0000:0000 _DOSDLLInit
+ 0000:0000 Abs __ADBUSED
+ 0000:0000 Abs __ACRTUSED
+ 0000:0001 Abs __DosVersionCheckInit
+ 0000:0046 _ExportInit
+ 0000:0063 _CallExport
+ 0000:0081 _GetExportTableVersion
+ 0000:009F _MALLOC
+ 0000:00A4 _FREE
+ 0000:00A9 _GETENV
+ 000A:000E I_NETPATHCANONICALIZE
+ 000A:0116 R_I_NETPATHCANONICALIZE
+ 000A:0144 WI_NETPATHCANONICALIZE
+ 000A:0932 I_NETPATHTYPE
+ 000A:09D4 WI_NETPATHTYPE
+ 000A:14E6 I_NETNAMECOMPARE
+ 000A:158A WI_NETNAMECOMPARE
+ 000A:1670 _GetToken
+ 01B4:001C _memsetf
+ 01B4:004E _strchrf
+ 01B4:007C _strnicmpf
+ 01B4:00DA _strncpyf
+ 01B4:0104 _strrchrf
+ 01B4:0132 _strspnf
+ 01B4:018E _strcspnf
+ 01B4:01EA _ininlsf
+ 01B4:0296 _stricmpf
+ 01B4:02EC _struprf
+ 01B4:0326 _strlenf
+ 01B4:0340 _strcmpf
+ 01B4:036C _strcpyf
+ 01B4:03A4 _strcatf
+ 01B4:03EC __DOSGETCOLLATE
+ 01B4:0442 __DOSCASEMAP
+ 01B4:0516 Canonicalize
+ 01B4:0599 l0_PathSep
+ 01B4:059B PathSepGotCh
+ 01B4:05A4 l1_SkipBack
+ 01B4:064C l2_ScanPathChar
+ 01B4:0656 DOSICANONICALIZE
+ 01B4:0697 l3_PathChrCmp
+ 01B4:06F0 l4_NameTrans
+ 01B4:0715 l5_NORMSCAN
+ 01B4:0762 l6_GetLet
+ 01B4:079B l7_SPCHK
+ 01B4:07A2 l8_PackName
+ 01B4:07D8 __DosVersionCheck
+ 01B4:0826 _DoInt
+ 01B4:0829 _DoIntR
+ 01B4:082C _DoIntx
+ 01B4:08AB ___segread
+ 0240:000A _strtailf
+ 024D:0006 NETGETDCNAME
+ 024D:009A WGETDCNAME
+ 024D:058E _get_temp_ms
+ 02B0:000E NETSERVERGETINFO
+ 02B9:000C NETSERVERENUM2
+ 02B9:00F2 NETWKSTAGETINFO
+ 02B9:01AA WWKSTAGETINFO
+ 02D9:000E _build_mailslot_name
+ 02D9:0132 DOSDELETEMAILSLOT
+ 02D9:018E DOSMAKEMAILSLOT
+ 02D9:02E4 DOSREADMAILSLOT
+ 02D9:036E DOSWRITEMAILSLOT
+ 031D:000A NETIREMOTEAPI
+ 031D:00FE NETIISREMOTE
+ 033B:0000 DEADTABLEENTRY
+ 033B:0002 I_NETGETCDNAMES
+ 033B:008E MYDOSALLOCSEG
+ 033B:00C8 MYDOSFREESEG
+ 033B:00E6 MYDOSREALLOCSEG
+ 034B:0008 _getenv_addr
+ 034B:001C _rdr_open
+ 034D:000C ___default_allocator
+ 034D:0028 ___default_reallocator
+ 034D:0040 ___default_available
+ 034D:0058 ___default_freemem
+ 0354:0000 _APItable
+ 047D:0008 _errno
+ 047D:0012 __rpc_hostDS
+ 047D:0014 _theTable
+ 047D:00DA _cbMaxPathLen
+ 047D:00DC _cbMaxPathCompLen
+ 047D:021A __CollateTable
+ 047D:031A __ToUpperCaseTable
+ 047D:041A __ToLowerCaseTable
+ 047D:051A ____ctype
+ 047D:051A ____ctype_
+ 047D:0654 _uname
+ 047D:066A _cname
+ 047D:067A _Caller_Info
+ 047D:068A _Writer_Sem
+ 047D:068E _Data_Sem
+ 047D:0692 _RC_Sem
+ 047D:0696 _Reader_Count
+ 047D:0698 _AdminProcess
+ 047D:06AC _AdminProcessCount
+ 047D:06AE _AdminProcessSem
+ 047D:06B2 _PinballInstalled
+ 047D:06B4 _DomainSem
+ 047D:06B8 _PrimaryDCName
+ 047D:06C8 _LogonDCName
+ 047D:06D8 _PrimaryDomain
+ 047D:06E8 _LogonDomain
+ 047D:06F8 _Encrypt_Sem
+ 047D:06FC _MslotName
+ 047D:0724 _ALLOCATOR
+ 047D:0728 _REALLOCATOR
+ 047D:072C _FREEMEM
+ 047D:07BA _txt_REM_I_NetListCanonicalizeP
+ 047D:07C4 _txt_REM_I_NetNameCanonicalizeP
+ 047D:07CA _txt_REM_I_NetPathCanonicalizeP
+ 047D:07D2 _txt_REM_I_NetNameCompare_P
+ 047D:07D7 _txt_REM_I_NetNameValidate_P
+ 047D:07DB _txt_REM_I_NetPathCompare_P
+ 047D:07E0 _txt_REM_I_NetPathType_P
+ 047D:07E4 _txt_REM_NetGetDCName_P
+ 047D:07E8 _txt_REM_NetLogonEnum_P
+ 047D:07EE _txt_REM_dc_name
+ 047D:07F2 _txt_REM_NetServerAdminCommand_
+ 047D:07F2 _txt_REM_NetServerAdminCom_P
+ 047D:07F9 _txt_REM_server_admin_command
+ 047D:07FB _txt_REM_NetServerEnum2_P
+ 047D:0803 _txt_REM_NetServerEnum_P
+ 047D:0809 _txt_REM_server_info_0
+ 047D:080D _txt_REM_server_info_1
+ 047D:0815 _txt_REM_server_info_2
+ 047D:0846 _txt_REM_server_info_3
+ 047D:087A _txt_REM_server_info_table
+ 047D:0882 _num_server_info
+ 047D:0884 _txt_REM_NetServerGetInfo_P
+ 047D:0889 _txt_REM_NetServerSetInfo_P
+ 047D:088E _txt_REM_connection_info_0
+ 047D:0890 _txt_REM_connection_info_1
+ 047D:0898 _txt_REM_NetConnectionEnum_P
+ 047D:089F _txt_REM_NetServerDiskEnum_P
+ 047D:08A5 _txt_REM_server_diskenum
+ 047D:08A8 _txt_REM_NetWkstaGetInfo_P
+ 047D:08AD _txt_REM_wksta_info_0
+ 047D:08CF _txt_REM_wksta_info_1
+ 047D:08F4 _txt_REM_wksta_info_10
+ 047D:08FC _txt_REM_WWkstaGetInfo_P
+ 047D:0903 _txt_REM_NetWkstaSetInfo_P
+ 047D:0908 _txt_REM_wksta_info_0_setinf
+ 047D:092A _txt_REM_wksta_info_1_setinf
+ 047D:094F _txt_REM_user_logon_info_0
+ 047D:0954 _txt_REM_user_logon_info_1
+ 047D:0969 _txt_REM_user_logon_info_2
+ 047D:0972 _txt_REM_user_logoff_info_1
+ 047D:0976 _txt_REM_NetWkstaUserLogon_P
+ 047D:0981 _txt_REM_NetWkstaUserLogoff_P
+ 047D:098C _txt_REM_NetWkstaSetUID_P
+ 047D:0994 __DosVersionCheckMsg
+ 047D:09CB __DosMVDMErrorMsg
+ 047D:0A15 __InMVDMBox
+ 047D:0A16 _txt_REM_nulstr
+ 047D:0A18 __edata
+ 047D:0A18 __end
+ 047D:0A18 _end
+ 047D:0A18 _edata
+ 0000:9876 Abs __anlsused
+
+Program entry point at 0000:0000
diff --git a/public/sdk/rpc16/dos/dll/rpcnslm.rpc b/public/sdk/rpc16/dos/dll/rpcnslm.rpc
new file mode 100644
index 000000000..438cf82ef
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpcnslm.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/dll/rpcnsmgm.map b/public/sdk/rpc16/dos/dll/rpcnsmgm.map
new file mode 100644
index 000000000..932ece577
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpcnsmgm.map
@@ -0,0 +1,387 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 00000H 00000H NSIMGMT_TEXT CODE
+ 00000H 00000H 00000H NSIMGM_C_TEXT CODE
+ 00000H 00000H 00000H CBIND_TEXT CODE
+ 00000H 000E4H 000E5H LMDLL_TEXT CODE
+ 000E6H 002A3H 001BEH EXPORTMG_TEXT CODE
+ 002A4H 0032AH 00087H EXCEPT86_TEXT CODE
+ 0032CH 0032CH 00000H UTIL_TEXT CODE
+ 0032CH 0037EH 00053H MEM_TEXT CODE
+ 00380H 004B1H 00132H _TEXT CODE
+ 004C0H 03DF4H 03935H COMDAT_SEG1 CODE
+ 03DF6H 04209H 00414H _DATA DATA
+ 0420AH 04225H 0001CH TABLESEGMENT DATA
+ 04226H 04428H 00203H STRINGSEGMENT DATA
+ 0442AH 0442AH 00000H XIFB DATA
+ 0442AH 0442AH 00000H XIF DATA
+ 0442AH 0442AH 00000H XIFE DATA
+ 0442AH 0442BH 00002H CONST CONST
+ 0442CH 0445BH 00030H _BSS BSS
+ 04460H 04460H 00000H c_common BSS
+
+ Origin Group
+ 03DF:0 DGROUP
+
+ Address Publics by Name
+
+ 004C:372A ??0WIDE_STRING@@REC@PEE@Z
+ 004C:380E ??2@ZAPEXI@Z
+ 004C:381C ??3@ZAXPEX@Z
+ 004C:36E4 ??_C@_08GAHO@Endpoint?$AA@
+ 004C:36CA ??_C@_08OBCM@Protocol?$AA@
+ 004C:3694 ??_C@_0BB@EHCE@?2mailslot?2Resp_c?$AA@
+ 004C:3680 ??_C@_0BE@JFMA@?2?2?$CK?2mailslot?2Resp_s?$AA@
+ 004C:36A6 ??_C@_0CD@LHG@Software?2Microsoft?2Rpc?2NameServi@
+ 004C:3928 ??_C@_0N@NHGH@DefaultEntry?$AA@
+ 004C:391A ??_C@_0O@JCMN@DefaultSyntax?$AA@
+ 004C:36EE ??_C@_0O@MCEM@?2pipe?2locator?$AA@
+ 004C:36D4 ??_C@_0P@NOEJ@NetworkAddress?$AA@
+ 03DF:0266 ?LocalMS@@3PEDE
+ 03DF:0262 ?MailslotName@@3PEDE
+ 03DF:064A ?NsiStringBinding@@3PEEE
+ 004C:05D8 ?RpcNsEntryExpandNameW@@ZCGKPEGPEPEG@Z
+ 004C:0386 ?RpcNsEntryObjectInqBeginW@@ZCGKPEGPEPEX@Z
+ 004C:0000 ?RpcNsGroupDeleteW@@ZCGKPEG@Z
+ 004C:008E ?RpcNsGroupMbrAddW@@ZCGKPEGK0@Z
+ 004C:01F2 ?RpcNsGroupMbrInqBeginW@@ZCGKPEGKPEPEX@Z
+ 004C:02B0 ?RpcNsGroupMbrInqNextW@@ZCGPEXPEPEG@Z
+ 004C:0140 ?RpcNsGroupMbrRemoveW@@ZCGKPEGK0@Z
+ 004C:066C ?RpcNsMgmtBindingUnexportW@@ZCGKPEGPEU_RPC_IF_ID@@KPEU_UUID_VECTOR@@@Z
+ 004C:0710 ?RpcNsMgmtEntryCreateW@@ZCGKPEG@Z
+ 004C:079E ?RpcNsMgmtEntryDeleteW@@ZCGKPEG@Z
+ 004C:082C ?RpcNsMgmtEntryInqIfIdsW@@ZCGKPEGPEPEURPC_IF_ID_VECTOR@@@Z
+ 004C:096C ?RpcNsProfileDeleteW@@ZCGKPEG@Z
+ 004C:09FA ?RpcNsProfileEltAddW@@ZCGKPEGPEU_RPC_IF_ID@@K0K0@Z
+ 004C:0B76 ?RpcNsProfileEltInqBeginW@@ZCGKPEGKPEU_RPC_IF_ID@@KK0PEPEX@Z
+ 004C:0C40 ?RpcNsProfileEltInqNextW@@ZCGPEXPEU_RPC_IF_ID@@PEPEGPEK2@Z
+ 004C:0ABE ?RpcNsProfileEltRemoveW@@ZCGKPEGPEU_RPC_IF_ID@@K0@Z
+ 0000:002A DOSDELETEMAILSLOT
+ 0000:0015 DOSMAKEMAILSLOT
+ 0000:001C DOSREADMAILSLOT
+ 0000:0023 DOSWRITEMAILSLOT
+ 000E:01A0 EXPORTTIME
+ 000E:00A5 I_DOSATEXIT
+ 0000:0000 Unr I_GETDEFAULTENTRYSYNTAX
+ 004C:3484 I_NSCLIENTBINDDONE
+ 004C:30FC I_NSCLIENTBINDSEARCH
+ 000E:01B2 I_NSGETMEMORYALLOCATOR
+ 000E:00FE I_RPCALLOCATE
+ 000E:0104 I_RPCFREE
+ 000E:010A I_RPCFREEBUFFER
+ 000E:0110 I_RPCGETBUFFER
+ 000E:011C I_RPCNSBINDINGSETENTRYNAME
+ 000E:01A6 I_RPCREGISTEREDBUFFERALLOCATE
+ 000E:01AC I_RPCREGISTEREDBUFFERFREE
+ 000E:0116 I_RPCSENDRECEIVE
+ 000E:0158 I_RPCTRANSCLIENTMAXFRAG
+ 000E:00BE I_RPCTRANSCLIENTREALLOCBUFFER
+ 0032:0028 MIDL_USER_ALLOCATE
+ 0032:0041 MIDL_USER_FREE
+ 000E:0140 NDRCCONTEXTBINDING
+ 000E:0146 NDRCCONTEXTMARSHALL
+ 000E:014C NDRCCONTEXTUNMARSHALL
+ 000E:0164 NDRCLIENTCONTEXTMARSHALL
+ 000E:0194 NDRCLIENTCONTEXTUNMARSHALL
+ 000E:0188 NDRCLIENTINITIALIZE
+ 000E:018E NDRCLIENTINITIALIZENEW
+ 000E:0182 NDRCONVERT
+ 000E:0170 NDRFREEBUFFER
+ 000E:0176 NDRGETBUFFER
+ 000E:017C NDRPOINTERBUFFERSIZE
+ 000E:016A NDRPOINTERMARSHALL
+ 000E:015E NDRPOINTERUNMARSHALL
+ 000E:019A NDRSENDRECEIVE
+ 000E:01BE NDRSIMPLESTRUCTBUFFERSIZE
+ 000E:01B8 NDRSIMPLESTRUCTMARSHALL
+ 0000:0000 NETGETDCNAME
+ 0000:0007 NETSERVERENUM2
+ 0000:000E NETWKSTAGETINFO
+ 0032:000C NSALLOCATORSETUP
+ 000E:00D2 RPCBINDINGCOPY
+ 000E:00F2 RPCBINDINGFREE
+ 000E:00E6 RPCBINDINGFROMSTRINGBINDING
+ 000E:00E1 RPCBINDINGTOSTRINGBINDING
+ 000E:00EC RPCBINDINGVECTORFREE
+ 000E:00C3 RPCGETEXCEPTIONHANDLER
+ 004C:08D0 RPCIFIDVECTORFREE
+ 000E:00CD RPCLEAVEEXCEPTION
+ 004C:0FF8 RPCNSENTRYEXPANDNAMEA
+ 004C:0F8A RPCNSENTRYOBJECTINQBEGINA
+ 004C:048E RPCNSENTRYOBJECTINQDONE
+ 004C:0426 RPCNSENTRYOBJECTINQNEXT
+ 004C:0D1C RPCNSGROUPDELETEA
+ 004C:0D84 RPCNSGROUPMBRADDA
+ 004C:0EDC RPCNSGROUPMBRINQBEGINA
+ 004C:0324 RPCNSGROUPMBRINQDONE
+ 004C:0F50 RPCNSGROUPMBRINQNEXTA
+ 004C:0E30 RPCNSGROUPMBRREMOVEA
+ 004C:1080 RPCNSMGMTBINDINGUNEXPORTA
+ 004C:10FA RPCNSMGMTENTRYCREATEA
+ 004C:1162 RPCNSMGMTENTRYDELETEA
+ 004C:11CA RPCNSMGMTENTRYINQIFIDSA
+ 004C:04F0 RPCNSMGMTINQEXPAGE
+ 004C:0564 RPCNSMGMTSETEXPAGE
+ 004C:1238 RPCNSPROFILEDELETEA
+ 004C:12A0 RPCNSPROFILEELTADDA
+ 004C:1448 RPCNSPROFILEELTINQBEGINA
+ 004C:0CBA RPCNSPROFILEELTINQDONE
+ 004C:150C RPCNSPROFILEELTINQNEXTA
+ 004C:1396 RPCNSPROFILEELTREMOVEA
+ 002A:0043 RPCRAISEEXCEPTION
+ 000E:012E RPCREGCLOSEKEY
+ 000E:0128 RPCREGCREATEKEY
+ 000E:0122 RPCREGOPENKEY
+ 000E:013A RPCREGQUERYVALUE
+ 000E:0134 RPCREGSETVALUE
+ 002A:0004 RPCSETEXCEPTION
+ 000E:00C8 RPCSETEXCEPTIONHANDLER
+ 000E:0152 RPCSSDESTROYCLIENTCONTEXT
+ 000E:00D7 RPCSTRINGBINDINGCOMPOSE
+ 000E:00DC RPCSTRINGBINDINGPARSE
+ 000E:00F8 RPCSTRINGFREE
+ 0038:0090 _atoi
+ 004C:3550 _BroadcastAQuery
+ 000E:0069 _CallExport
+ 004C:382C _CallExportInit
+ 004C:382E _CopyString
+ 03DF:0644 _DefaultName
+ 03DF:025E _DefaultSyntax
+ 000E:0006 _DOSDLLInit
+ 03DF:063C _edata
+ 03DF:0670 _end
+ 03DF:030C _errno
+ 000E:004C _ExportInit
+ 03DF:0648 _fSyntaxDefaultsLoaded
+ 004C:3870 _GetDefaultEntrys
+ 000E:00AA _GETENV
+ 000E:0087 _GetExportTableVersion
+ 000E:00B9 _GetProcAddrR
+ 000E:00AF _LoadModR
+ 004C:36FC _MapException
+ 0038:00EA _memset
+ 03DF:0640 _NsiClntBinding
+ 03DF:0044 _NsiM_ClientIfHandle
+ 03DF:03E0 _NsiToRpcStatus
+ 004C:2890 _nsi_entry_expand_name
+ 004C:2550 _nsi_entry_object_inq_begin
+ 004C:27A6 _nsi_entry_object_inq_done
+ 004C:266E _nsi_entry_object_inq_next
+ 004C:1572 _nsi_group_delete
+ 004C:167A _nsi_group_mbr_add
+ 004C:1936 _nsi_group_mbr_inq_begin
+ 004C:1B88 _nsi_group_mbr_inq_done
+ 004C:1A80 _nsi_group_mbr_inq_next
+ 004C:17D8 _nsi_group_mbr_remove
+ 004C:29C6 _nsi_mgmt_binding_unexport
+ 004C:2C56 _nsi_mgmt_entry_create
+ 004C:2B4E _nsi_mgmt_entry_delete
+ 004C:2D5E _nsi_mgmt_entry_inq_if_ids
+ 004C:2E94 _nsi_mgmt_inq_exp_age
+ 004C:2F58 _nsi_mgmt_inq_set_age
+ 004C:1C72 _nsi_profile_delete
+ 004C:1D7A _nsi_profile_elt_add
+ 004C:20E2 _nsi_profile_elt_inq_begin
+ 004C:2466 _nsi_profile_elt_inq_done
+ 004C:22D0 _nsi_profile_elt_inq_next
+ 004C:1F5A _nsi_profile_elt_remove
+ 004C:3014 _RegGetString
+ 0000:0031 _RpcNsLmDiscard
+ 0038:004C _strcmp
+ 0038:0010 _strcpy
+ 0038:0076 _strlen
+ 03DF:0318 _theTable
+ 004C:37C6 _UnicodeToAscii
+ 000E:00B4 _UnloadModR
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:1000 Abs __AHINCR
+ 0000:000C Abs __AHSHIFT
+ 0038:0094 __catox
+ 03DF:063C __edata
+ 03DF:0670 __end
+ 03DF:0410 __NsAllocatorInitialized
+ 03DF:0316 __rpc_hostDS
+
+ Address Publics by Value
+
+ 0000:0000 Unr I_GETDEFAULTENTRYSYNTAX
+ 0000:0000 NETGETDCNAME
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 0000:0007 NETSERVERENUM2
+ 0000:000C Abs __AHSHIFT
+ 0000:000E NETWKSTAGETINFO
+ 0000:0015 DOSMAKEMAILSLOT
+ 0000:001C DOSREADMAILSLOT
+ 0000:0023 DOSWRITEMAILSLOT
+ 0000:002A DOSDELETEMAILSLOT
+ 0000:0031 _RpcNsLmDiscard
+ 000E:0006 _DOSDLLInit
+ 000E:004C _ExportInit
+ 000E:0069 _CallExport
+ 000E:0087 _GetExportTableVersion
+ 000E:00A5 I_DOSATEXIT
+ 000E:00AA _GETENV
+ 000E:00AF _LoadModR
+ 000E:00B4 _UnloadModR
+ 000E:00B9 _GetProcAddrR
+ 000E:00BE I_RPCTRANSCLIENTREALLOCBUFFER
+ 000E:00C3 RPCGETEXCEPTIONHANDLER
+ 000E:00C8 RPCSETEXCEPTIONHANDLER
+ 000E:00CD RPCLEAVEEXCEPTION
+ 000E:00D2 RPCBINDINGCOPY
+ 000E:00D7 RPCSTRINGBINDINGCOMPOSE
+ 000E:00DC RPCSTRINGBINDINGPARSE
+ 000E:00E1 RPCBINDINGTOSTRINGBINDING
+ 000E:00E6 RPCBINDINGFROMSTRINGBINDING
+ 000E:00EC RPCBINDINGVECTORFREE
+ 000E:00F2 RPCBINDINGFREE
+ 000E:00F8 RPCSTRINGFREE
+ 000E:00FE I_RPCALLOCATE
+ 000E:0104 I_RPCFREE
+ 000E:010A I_RPCFREEBUFFER
+ 000E:0110 I_RPCGETBUFFER
+ 000E:0116 I_RPCSENDRECEIVE
+ 000E:011C I_RPCNSBINDINGSETENTRYNAME
+ 000E:0122 RPCREGOPENKEY
+ 000E:0128 RPCREGCREATEKEY
+ 000E:012E RPCREGCLOSEKEY
+ 000E:0134 RPCREGSETVALUE
+ 000E:013A RPCREGQUERYVALUE
+ 000E:0140 NDRCCONTEXTBINDING
+ 000E:0146 NDRCCONTEXTMARSHALL
+ 000E:014C NDRCCONTEXTUNMARSHALL
+ 000E:0152 RPCSSDESTROYCLIENTCONTEXT
+ 000E:0158 I_RPCTRANSCLIENTMAXFRAG
+ 000E:015E NDRPOINTERUNMARSHALL
+ 000E:0164 NDRCLIENTCONTEXTMARSHALL
+ 000E:016A NDRPOINTERMARSHALL
+ 000E:0170 NDRFREEBUFFER
+ 000E:0176 NDRGETBUFFER
+ 000E:017C NDRPOINTERBUFFERSIZE
+ 000E:0182 NDRCONVERT
+ 000E:0188 NDRCLIENTINITIALIZE
+ 000E:018E NDRCLIENTINITIALIZENEW
+ 000E:0194 NDRCLIENTCONTEXTUNMARSHALL
+ 000E:019A NDRSENDRECEIVE
+ 000E:01A0 EXPORTTIME
+ 000E:01A6 I_RPCREGISTEREDBUFFERALLOCATE
+ 000E:01AC I_RPCREGISTEREDBUFFERFREE
+ 000E:01B2 I_NSGETMEMORYALLOCATOR
+ 000E:01B8 NDRSIMPLESTRUCTMARSHALL
+ 000E:01BE NDRSIMPLESTRUCTBUFFERSIZE
+ 002A:0004 RPCSETEXCEPTION
+ 002A:0043 RPCRAISEEXCEPTION
+ 0032:000C NSALLOCATORSETUP
+ 0032:0028 MIDL_USER_ALLOCATE
+ 0032:0041 MIDL_USER_FREE
+ 0038:0010 _strcpy
+ 0038:004C _strcmp
+ 0038:0076 _strlen
+ 0038:0090 _atoi
+ 0038:0094 __catox
+ 0038:00EA _memset
+ 004C:0000 ?RpcNsGroupDeleteW@@ZCGKPEG@Z
+ 004C:008E ?RpcNsGroupMbrAddW@@ZCGKPEGK0@Z
+ 004C:0140 ?RpcNsGroupMbrRemoveW@@ZCGKPEGK0@Z
+ 004C:01F2 ?RpcNsGroupMbrInqBeginW@@ZCGKPEGKPEPEX@Z
+ 004C:02B0 ?RpcNsGroupMbrInqNextW@@ZCGPEXPEPEG@Z
+ 004C:0324 RPCNSGROUPMBRINQDONE
+ 004C:0386 ?RpcNsEntryObjectInqBeginW@@ZCGKPEGPEPEX@Z
+ 004C:0426 RPCNSENTRYOBJECTINQNEXT
+ 004C:048E RPCNSENTRYOBJECTINQDONE
+ 004C:04F0 RPCNSMGMTINQEXPAGE
+ 004C:0564 RPCNSMGMTSETEXPAGE
+ 004C:05D8 ?RpcNsEntryExpandNameW@@ZCGKPEGPEPEG@Z
+ 004C:066C ?RpcNsMgmtBindingUnexportW@@ZCGKPEGPEU_RPC_IF_ID@@KPEU_UUID_VECTOR@@@Z
+ 004C:0710 ?RpcNsMgmtEntryCreateW@@ZCGKPEG@Z
+ 004C:079E ?RpcNsMgmtEntryDeleteW@@ZCGKPEG@Z
+ 004C:082C ?RpcNsMgmtEntryInqIfIdsW@@ZCGKPEGPEPEURPC_IF_ID_VECTOR@@@Z
+ 004C:08D0 RPCIFIDVECTORFREE
+ 004C:096C ?RpcNsProfileDeleteW@@ZCGKPEG@Z
+ 004C:09FA ?RpcNsProfileEltAddW@@ZCGKPEGPEU_RPC_IF_ID@@K0K0@Z
+ 004C:0ABE ?RpcNsProfileEltRemoveW@@ZCGKPEGPEU_RPC_IF_ID@@K0@Z
+ 0000:1000 Abs __AHINCR
+ 004C:0B76 ?RpcNsProfileEltInqBeginW@@ZCGKPEGKPEU_RPC_IF_ID@@KK0PEPEX@Z
+ 004C:0C40 ?RpcNsProfileEltInqNextW@@ZCGPEXPEU_RPC_IF_ID@@PEPEGPEK2@Z
+ 004C:0CBA RPCNSPROFILEELTINQDONE
+ 004C:0D1C RPCNSGROUPDELETEA
+ 004C:0D84 RPCNSGROUPMBRADDA
+ 004C:0E30 RPCNSGROUPMBRREMOVEA
+ 004C:0EDC RPCNSGROUPMBRINQBEGINA
+ 004C:0F50 RPCNSGROUPMBRINQNEXTA
+ 004C:0F8A RPCNSENTRYOBJECTINQBEGINA
+ 004C:0FF8 RPCNSENTRYEXPANDNAMEA
+ 004C:1080 RPCNSMGMTBINDINGUNEXPORTA
+ 004C:10FA RPCNSMGMTENTRYCREATEA
+ 004C:1162 RPCNSMGMTENTRYDELETEA
+ 004C:11CA RPCNSMGMTENTRYINQIFIDSA
+ 004C:1238 RPCNSPROFILEDELETEA
+ 004C:12A0 RPCNSPROFILEELTADDA
+ 004C:1396 RPCNSPROFILEELTREMOVEA
+ 004C:1448 RPCNSPROFILEELTINQBEGINA
+ 004C:150C RPCNSPROFILEELTINQNEXTA
+ 004C:1572 _nsi_group_delete
+ 004C:167A _nsi_group_mbr_add
+ 004C:17D8 _nsi_group_mbr_remove
+ 004C:1936 _nsi_group_mbr_inq_begin
+ 004C:1A80 _nsi_group_mbr_inq_next
+ 004C:1B88 _nsi_group_mbr_inq_done
+ 004C:1C72 _nsi_profile_delete
+ 004C:1D7A _nsi_profile_elt_add
+ 004C:1F5A _nsi_profile_elt_remove
+ 004C:20E2 _nsi_profile_elt_inq_begin
+ 004C:22D0 _nsi_profile_elt_inq_next
+ 004C:2466 _nsi_profile_elt_inq_done
+ 004C:2550 _nsi_entry_object_inq_begin
+ 004C:266E _nsi_entry_object_inq_next
+ 004C:27A6 _nsi_entry_object_inq_done
+ 004C:2890 _nsi_entry_expand_name
+ 004C:29C6 _nsi_mgmt_binding_unexport
+ 004C:2B4E _nsi_mgmt_entry_delete
+ 004C:2C56 _nsi_mgmt_entry_create
+ 004C:2D5E _nsi_mgmt_entry_inq_if_ids
+ 004C:2E94 _nsi_mgmt_inq_exp_age
+ 004C:2F58 _nsi_mgmt_inq_set_age
+ 004C:3014 _RegGetString
+ 004C:30FC I_NSCLIENTBINDSEARCH
+ 004C:3484 I_NSCLIENTBINDDONE
+ 004C:3550 _BroadcastAQuery
+ 004C:3680 ??_C@_0BE@JFMA@?2?2?$CK?2mailslot?2Resp_s?$AA@
+ 004C:3694 ??_C@_0BB@EHCE@?2mailslot?2Resp_c?$AA@
+ 004C:36A6 ??_C@_0CD@LHG@Software?2Microsoft?2Rpc?2NameServi@
+ 004C:36CA ??_C@_08OBCM@Protocol?$AA@
+ 004C:36D4 ??_C@_0P@NOEJ@NetworkAddress?$AA@
+ 004C:36E4 ??_C@_08GAHO@Endpoint?$AA@
+ 004C:36EE ??_C@_0O@MCEM@?2pipe?2locator?$AA@
+ 004C:36FC _MapException
+ 004C:372A ??0WIDE_STRING@@REC@PEE@Z
+ 004C:37C6 _UnicodeToAscii
+ 004C:380E ??2@ZAPEXI@Z
+ 004C:381C ??3@ZAXPEX@Z
+ 004C:382C _CallExportInit
+ 004C:382E _CopyString
+ 004C:3870 _GetDefaultEntrys
+ 004C:391A ??_C@_0O@JCMN@DefaultSyntax?$AA@
+ 004C:3928 ??_C@_0N@NHGH@DefaultEntry?$AA@
+ 03DF:0044 _NsiM_ClientIfHandle
+ 03DF:025E _DefaultSyntax
+ 03DF:0262 ?MailslotName@@3PEDE
+ 03DF:0266 ?LocalMS@@3PEDE
+ 03DF:030C _errno
+ 03DF:0316 __rpc_hostDS
+ 03DF:0318 _theTable
+ 03DF:03E0 _NsiToRpcStatus
+ 03DF:0410 __NsAllocatorInitialized
+ 03DF:063C _edata
+ 03DF:063C __edata
+ 03DF:0640 _NsiClntBinding
+ 03DF:0644 _DefaultName
+ 03DF:0648 _fSyntaxDefaultsLoaded
+ 03DF:064A ?NsiStringBinding@@3PEEE
+ 03DF:0670 _end
+ 03DF:0670 __end
+
+Program entry point at 000E:0006
diff --git a/public/sdk/rpc16/dos/dll/rpcnsmgm.rpc b/public/sdk/rpc16/dos/dll/rpcnsmgm.rpc
new file mode 100644
index 000000000..51e4aa733
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/rpcnsmgm.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/dll/security.map b/public/sdk/rpc16/dos/dll/security.map
new file mode 100644
index 000000000..d8f3d0276
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/security.map
@@ -0,0 +1,353 @@
+LINK : warning L4021: no stack segment
+
+ Start Stop Length Name Class
+ 00000H 00000H 00000H NTLMSSP_TEXT CODE
+ 00000H 00000H 00000H ALLOC_TEXT CODE
+ 00000H 00000H 00000H SSPSTRNG_TEXT CODE
+ 00000H 00000H 00000H CACHE_TEXT CODE
+ 00000H 00000H 00000H CONTEXT_TEXT CODE
+ 00000H 00000H 00000H CRED_TEXT CODE
+ 00000H 00000H 00000H OWF_TEXT CODE
+ 00000H 00000H 00000H RESPONSE_TEXT CODE
+ 00000H 000CFH 000D0H ECB_TEXT CODE
+ 000D0H 0063FH 00570H DES_TEXT CODE
+ 00640H 00640H 00000H DEBUG_TEXT CODE
+ 00640H 00640H 00000H TICKS_TEXT CODE
+ 00640H 00640H 00000H GETUSER_TEXT CODE
+ 00640H 007FDH 001BEH SECLT_TEXT CODE
+ 007FEH 007FEH 00000H CRC32_TEXT CODE
+ 007FEH 00A04H 00207H RC4C_TEXT CODE
+ 00A06H 00C11H 0020CH _TEXT CODE
+ 00C20H 02D4CH 0212DH COMDAT_SEG1 CODE
+ 02D50H 03177H 00428H FAR_BSS FAR_BSS
+ 03178H 03A4DH 008D6H _DATA DATA
+ 03A4EH 03A6FH 00022H STRINGSEGMENT DATA
+ 03A70H 03A70H 00000H XIFB DATA
+ 03A70H 03A70H 00000H XIF DATA
+ 03A70H 03A70H 00000H XIFE DATA
+ 03A70H 03A7FH 00010H CONST CONST
+ 03A80H 03A80H 00000H _BSS BSS
+ 03A80H 03A80H 00000H c_common BSS
+
+ Origin Group
+ 0317:0 DGROUP
+
+ Address Publics by Name
+
+ 00C2:1CC6 ??_C@_04KIKH@none?$AA@
+ 00C2:15DE ??_C@_04PJIL@NTLM?$AA@
+ 00C2:15FA ??_C@_07LBGP@NTLMSSP?$AA@
+ 00C2:1FE8 ??_C@_08OLPO@KGS?$CB?$EA?$CD$?$CF?$AA@
+ 00C2:1CCC ??_C@_09CIPE@WORKGROUP?$AA@
+ 00C2:15E4 ??_C@_0BG@FFCA@NTLM?5Security?5Package?$AA@
+ 00C2:0176 ACQUIRECREDENTIALSHANDLEA
+ 00C2:0D5A APPLYCONTROLTOKEN
+ 00C2:15D0 COMPLETEAUTHTOKEN
+ 00C2:0CE6 DELETESECURITYCONTEXT
+ 00C2:0140 ENUMERATESECURITYPACKAGESA
+ 0064:019A EXPORTTIME
+ 00C2:0D3C FREECONTEXTBUFFER
+ 00C2:026E FREECREDENTIALSHANDLE
+ 00C2:0A96 INITIALIZESECURITYCONTEXTA
+ 00C2:0000 INITSECURITYINTERFACEA
+ 0064:009F I_DOSATEXIT
+ 0064:01AC I_NSGETMEMORYALLOCATOR
+ 0064:00F8 I_RPCALLOCATE
+ 0064:00FE I_RPCFREE
+ 0064:0104 I_RPCFREEBUFFER
+ 0064:010A I_RPCGETBUFFER
+ 0064:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0064:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0064:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0064:0110 I_RPCSENDRECEIVE
+ 0064:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0064:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 00C2:0DA4 MAKESIGNATURE
+ 0064:013A NDRCCONTEXTBINDING
+ 0064:0140 NDRCCONTEXTMARSHALL
+ 0064:0146 NDRCCONTEXTUNMARSHALL
+ 0064:015E NDRCLIENTCONTEXTMARSHALL
+ 0064:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0064:0182 NDRCLIENTINITIALIZE
+ 0064:0188 NDRCLIENTINITIALIZENEW
+ 0064:017C NDRCONVERT
+ 0064:016A NDRFREEBUFFER
+ 0064:0170 NDRGETBUFFER
+ 0064:0176 NDRPOINTERBUFFERSIZE
+ 0064:0164 NDRPOINTERMARSHALL
+ 0064:0158 NDRPOINTERUNMARSHALL
+ 0064:0194 NDRSENDRECEIVE
+ 0064:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 0064:01B2 NDRSIMPLESTRUCTMARSHALL
+ 00C2:0BB8 QUERYCONTEXTATTRIBUTESA
+ 00C2:0044 QUERYSECURITYPACKAGEINFOA
+ 0064:00CC RPCBINDINGCOPY
+ 0064:00EC RPCBINDINGFREE
+ 0064:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0064:00DB RPCBINDINGTOSTRINGBINDING
+ 0064:00E6 RPCBINDINGVECTORFREE
+ 0064:00BD RPCGETEXCEPTIONHANDLER
+ 0064:00C7 RPCLEAVEEXCEPTION
+ 0064:0128 RPCREGCLOSEKEY
+ 0064:0122 RPCREGCREATEKEY
+ 0064:011C RPCREGOPENKEY
+ 0064:0134 RPCREGQUERYVALUE
+ 0064:012E RPCREGSETVALUE
+ 0064:00C2 RPCSETEXCEPTIONHANDLER
+ 0064:014C RPCSSDESTROYCLIENTCONTEXT
+ 0064:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0064:00D6 RPCSTRINGBINDINGPARSE
+ 0064:00F2 RPCSTRINGFREE
+ 00C2:11BC SEALMESSAGE
+ 00C2:13C8 UNSEALMESSAGE
+ 00C2:0F9C VERIFYSIGNATURE
+ 02D5:0040 _C
+ 00C2:16E8 _CacheGetPassword
+ 00C2:16E6 _CacheInitializeCache
+ 00C2:1740 _CacheSetCredentials
+ 00C2:1F2A _CalculateLmOwfPassword
+ 00C2:1FF2 _CalculateLmResponse
+ 0064:0063 _CallExport
+ 00C2:20CA _Crc32
+ 0317:03DC _CRCTable
+ 02D5:005C _D
+ 000D:0338 _des
+ 000D:03DA _desf
+ 000D:00FE _des_cipher
+ 0000:0000 _DES_ECB
+ 0000:0068 _DES_ECB_LM
+ 0064:0000 _DOSDLLInit
+ 0317:0168 _E
+ 0317:0910 _edata
+ 0317:0910 _end
+ 0317:03B8 _errno
+ 0064:0046 _ExportInit
+ 02D5:0078 _f
+ 0317:00B0 _FP
+ 0064:00A4 _GETENV
+ 0064:0081 _GetExportTableVersion
+ 00C2:0012 _GetPassword
+ 0064:00B3 _GETPROCADDRR
+ 000D:047C _InitLanManKey
+ 000D:04FC _InitNormalKey
+ 0317:0070 _IP
+ 02D5:0000 _KeyBuilder
+ 000D:0000 _key_table
+ 02D5:00D8 _KS
+ 02D5:0098 _L
+ 0064:00A9 _LOADMODR
+ 0317:0398 _P
+ 0317:00F0 _PC1_C
+ 0317:010C _PC1_D
+ 0317:0138 _PC2_C
+ 0317:0150 _PC2_D
+ 02D5:03D8 _preS
+ 007F:0120 _rc4
+ 007F:000E _rc4_key
+ 0317:0198 _S
+ 000D:02D2 _setkey
+ 0317:0128 _shifts
+ 00C2:1602 _SspAlloc
+ 0000:0000 Unr _SspAllocateString
+ 00C2:1620 _SspAllocateStringBlock
+ 00C2:1D70 _SspContextAllocateContext
+ 00C2:1D0A _SspContextDereferenceContext
+ 00C2:1DD2 _SspContextGetTimeStamp
+ 00C2:1CD6 _SspContextReferenceContext
+ 0000:0000 Unr _SspCopyString
+ 00C2:1694 _SspCopyStringFromRaw
+ 00C2:1E14 _SspCredentialAllocateCredential
+ 00C2:1E94 _SspCredentialDereferenceCredential
+ 00C2:1E60 _SspCredentialReferenceCredential
+ 00C2:1610 _SspFree
+ 0000:0000 Unr _SspFreeString
+ 00C2:02BC _SspGetTokenBuffer
+ 00C2:20C6 _SspGetWorkstation
+ 00C2:04F6 _SspHandleChallengeMessage
+ 00C2:0370 _SspHandleFirstCall
+ 00C2:0D68 _SsprGenCheckSum
+ 00C2:20B4 _SspTicks
+ 0000:0000 Unr _SspTimeHasElapsed
+ 02D5:0408 _tempL
+ 0317:03C4 _theTable
+ 0064:00AE _UNLOADMODR
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Abs __ADBUSED
+ 00A0:0016 __aFlmul
+ 00A0:0016 __aFulmul
+ 00A0:0048 __aFulshr
+ 0000:1000 Abs __AHINCR
+ 0000:000C Abs __AHSHIFT
+ 0317:07DC __ctype
+ 0317:07DC __ctype_
+ 0317:0910 __edata
+ 0317:0910 __end
+ 00A0:0054 __fmemcmp
+ 00A0:00B0 __fmemcpy
+ 00A0:01CA __fmemset
+ 00A0:0164 __fstrcmp
+ 00A0:018E __fstrcpy
+ 00A0:014A __fstrlen
+ 00A0:010E __fstrncmp
+ 0317:03C2 __rpc_hostDS
+
+ Address Publics by Value
+
+ 0000:0000 Abs __ADBUSED
+ 0000:0000 Unr _SspAllocateString
+ 0000:0000 _DES_ECB
+ 0000:0000 Abs __ACRTUSED
+ 0000:0000 Unr _SspFreeString
+ 0000:0000 Unr _SspCopyString
+ 0000:0000 Unr _SspTimeHasElapsed
+ 0000:000C Abs __AHSHIFT
+ 0000:0068 _DES_ECB_LM
+ 000D:0000 _key_table
+ 000D:00FE _des_cipher
+ 000D:02D2 _setkey
+ 000D:0338 _des
+ 000D:03DA _desf
+ 000D:047C _InitLanManKey
+ 000D:04FC _InitNormalKey
+ 0064:0000 _DOSDLLInit
+ 0064:0046 _ExportInit
+ 0064:0063 _CallExport
+ 0064:0081 _GetExportTableVersion
+ 0064:009F I_DOSATEXIT
+ 0064:00A4 _GETENV
+ 0064:00A9 _LOADMODR
+ 0064:00AE _UNLOADMODR
+ 0064:00B3 _GETPROCADDRR
+ 0064:00B8 I_RPCTRANSCLIENTREALLOCBUFFER
+ 0064:00BD RPCGETEXCEPTIONHANDLER
+ 0064:00C2 RPCSETEXCEPTIONHANDLER
+ 0064:00C7 RPCLEAVEEXCEPTION
+ 0064:00CC RPCBINDINGCOPY
+ 0064:00D1 RPCSTRINGBINDINGCOMPOSE
+ 0064:00D6 RPCSTRINGBINDINGPARSE
+ 0064:00DB RPCBINDINGTOSTRINGBINDING
+ 0064:00E0 RPCBINDINGFROMSTRINGBINDING
+ 0064:00E6 RPCBINDINGVECTORFREE
+ 0064:00EC RPCBINDINGFREE
+ 0064:00F2 RPCSTRINGFREE
+ 0064:00F8 I_RPCALLOCATE
+ 0064:00FE I_RPCFREE
+ 0064:0104 I_RPCFREEBUFFER
+ 0064:010A I_RPCGETBUFFER
+ 0064:0110 I_RPCSENDRECEIVE
+ 0064:0116 I_RPCNSBINDINGSETENTRYNAME
+ 0064:011C RPCREGOPENKEY
+ 0064:0122 RPCREGCREATEKEY
+ 0064:0128 RPCREGCLOSEKEY
+ 0064:012E RPCREGSETVALUE
+ 0064:0134 RPCREGQUERYVALUE
+ 0064:013A NDRCCONTEXTBINDING
+ 0064:0140 NDRCCONTEXTMARSHALL
+ 0064:0146 NDRCCONTEXTUNMARSHALL
+ 0064:014C RPCSSDESTROYCLIENTCONTEXT
+ 0064:0152 I_RPCTRANSCLIENTMAXFRAG
+ 0064:0158 NDRPOINTERUNMARSHALL
+ 0064:015E NDRCLIENTCONTEXTMARSHALL
+ 0064:0164 NDRPOINTERMARSHALL
+ 0064:016A NDRFREEBUFFER
+ 0064:0170 NDRGETBUFFER
+ 0064:0176 NDRPOINTERBUFFERSIZE
+ 0064:017C NDRCONVERT
+ 0064:0182 NDRCLIENTINITIALIZE
+ 0064:0188 NDRCLIENTINITIALIZENEW
+ 0064:018E NDRCLIENTCONTEXTUNMARSHALL
+ 0064:0194 NDRSENDRECEIVE
+ 0064:019A EXPORTTIME
+ 0064:01A0 I_RPCREGISTEREDBUFFERALLOCATE
+ 0064:01A6 I_RPCREGISTEREDBUFFERFREE
+ 0064:01AC I_NSGETMEMORYALLOCATOR
+ 0064:01B2 NDRSIMPLESTRUCTMARSHALL
+ 0064:01B8 NDRSIMPLESTRUCTBUFFERSIZE
+ 007F:000E _rc4_key
+ 007F:0120 _rc4
+ 00A0:0016 __aFulmul
+ 00A0:0016 __aFlmul
+ 00A0:0048 __aFulshr
+ 00A0:0054 __fmemcmp
+ 00A0:00B0 __fmemcpy
+ 00A0:010E __fstrncmp
+ 00A0:014A __fstrlen
+ 00A0:0164 __fstrcmp
+ 00A0:018E __fstrcpy
+ 00A0:01CA __fmemset
+ 00C2:0000 INITSECURITYINTERFACEA
+ 00C2:0012 _GetPassword
+ 00C2:0044 QUERYSECURITYPACKAGEINFOA
+ 00C2:0140 ENUMERATESECURITYPACKAGESA
+ 00C2:0176 ACQUIRECREDENTIALSHANDLEA
+ 00C2:026E FREECREDENTIALSHANDLE
+ 00C2:02BC _SspGetTokenBuffer
+ 00C2:0370 _SspHandleFirstCall
+ 0000:1000 Abs __AHINCR
+ 00C2:04F6 _SspHandleChallengeMessage
+ 00C2:0A96 INITIALIZESECURITYCONTEXTA
+ 00C2:0BB8 QUERYCONTEXTATTRIBUTESA
+ 00C2:0CE6 DELETESECURITYCONTEXT
+ 00C2:0D3C FREECONTEXTBUFFER
+ 00C2:0D5A APPLYCONTROLTOKEN
+ 00C2:0D68 _SsprGenCheckSum
+ 00C2:0DA4 MAKESIGNATURE
+ 00C2:0F9C VERIFYSIGNATURE
+ 00C2:11BC SEALMESSAGE
+ 00C2:13C8 UNSEALMESSAGE
+ 00C2:15D0 COMPLETEAUTHTOKEN
+ 00C2:15DE ??_C@_04PJIL@NTLM?$AA@
+ 00C2:15E4 ??_C@_0BG@FFCA@NTLM?5Security?5Package?$AA@
+ 00C2:15FA ??_C@_07LBGP@NTLMSSP?$AA@
+ 00C2:1602 _SspAlloc
+ 00C2:1610 _SspFree
+ 00C2:1620 _SspAllocateStringBlock
+ 00C2:1694 _SspCopyStringFromRaw
+ 00C2:16E6 _CacheInitializeCache
+ 00C2:16E8 _CacheGetPassword
+ 00C2:1740 _CacheSetCredentials
+ 00C2:1CC6 ??_C@_04KIKH@none?$AA@
+ 00C2:1CCC ??_C@_09CIPE@WORKGROUP?$AA@
+ 00C2:1CD6 _SspContextReferenceContext
+ 00C2:1D0A _SspContextDereferenceContext
+ 00C2:1D70 _SspContextAllocateContext
+ 00C2:1DD2 _SspContextGetTimeStamp
+ 00C2:1E14 _SspCredentialAllocateCredential
+ 00C2:1E60 _SspCredentialReferenceCredential
+ 00C2:1E94 _SspCredentialDereferenceCredential
+ 00C2:1F2A _CalculateLmOwfPassword
+ 00C2:1FE8 ??_C@_08OLPO@KGS?$CB?$EA?$CD$?$CF?$AA@
+ 00C2:1FF2 _CalculateLmResponse
+ 00C2:20B4 _SspTicks
+ 00C2:20C6 _SspGetWorkstation
+ 00C2:20CA _Crc32
+ 02D5:0000 _KeyBuilder
+ 02D5:0040 _C
+ 02D5:005C _D
+ 02D5:0078 _f
+ 02D5:0098 _L
+ 02D5:00D8 _KS
+ 02D5:03D8 _preS
+ 02D5:0408 _tempL
+ 0317:0070 _IP
+ 0317:00B0 _FP
+ 0317:00F0 _PC1_C
+ 0317:010C _PC1_D
+ 0317:0128 _shifts
+ 0317:0138 _PC2_C
+ 0317:0150 _PC2_D
+ 0317:0168 _E
+ 0317:0198 _S
+ 0317:0398 _P
+ 0317:03B8 _errno
+ 0317:03C2 __rpc_hostDS
+ 0317:03C4 _theTable
+ 0317:03DC _CRCTable
+ 0317:07DC __ctype
+ 0317:07DC __ctype_
+ 0317:0910 __end
+ 0317:0910 _edata
+ 0317:0910 __edata
+ 0317:0910 _end
+
+Program entry point at 0064:0000
diff --git a/public/sdk/rpc16/dos/dll/security.rpc b/public/sdk/rpc16/dos/dll/security.rpc
new file mode 100644
index 000000000..740922599
--- /dev/null
+++ b/public/sdk/rpc16/dos/dll/security.rpc
Binary files differ
diff --git a/public/sdk/rpc16/dos/inc/midles.h b/public/sdk/rpc16/dos/inc/midles.h
new file mode 100644
index 000000000..b64e4fe61
--- /dev/null
+++ b/public/sdk/rpc16/dos/inc/midles.h
@@ -0,0 +1,218 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ midles.h
+
+Abstract:
+
+ This module contains definitions needed for encoding/decoding
+ support (serializing/deserializing a.k.a. pickling).
+
+--*/
+
+#ifndef __MIDLES_H__
+#define __MIDLES_H__
+
+#include <rpcndr.h>
+
+//
+// Set the packing level for RPC structures for Dos and Windows.
+//
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack(2)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pickling support
+ */
+typedef enum
+{
+ MES_ENCODE,
+ MES_DECODE,
+} MIDL_ES_CODE;
+
+typedef enum
+{
+ MES_INCREMENTAL_HANDLE,
+ MES_FIXED_BUFFER_HANDLE,
+ MES_DYNAMIC_BUFFER_HANDLE
+} MIDL_ES_HANDLE_STYLE;
+
+
+typedef void (__RPC_USER * MIDL_ES_ALLOC )
+ ( IN OUT void __RPC_FAR * state,
+ OUT char __RPC_FAR * __RPC_FAR * pbuffer,
+ IN OUT unsigned int __RPC_FAR * psize );
+
+typedef void (__RPC_USER * MIDL_ES_WRITE)
+ ( IN OUT void __RPC_FAR * state,
+ IN char __RPC_FAR * buffer,
+ IN unsigned int size );
+
+typedef void (__RPC_USER * MIDL_ES_READ)
+ ( IN OUT void __RPC_FAR * state,
+ OUT char __RPC_FAR * __RPC_FAR * pbuffer,
+ IN OUT unsigned int __RPC_FAR * psize );
+
+typedef struct _MIDL_ES_MESSAGE
+{
+ MIDL_STUB_MESSAGE StubMsg;
+ MIDL_ES_CODE Operation;
+ void __RPC_FAR * UserState;
+ unsigned long MesVersion:8;
+ unsigned long HandleStyle:8;
+ unsigned long HandleFlags:8;
+ unsigned long Reserve:8;
+ MIDL_ES_ALLOC Alloc;
+ MIDL_ES_WRITE Write;
+ MIDL_ES_READ Read;
+ unsigned char __RPC_FAR * Buffer;
+ unsigned long BufferSize;
+ unsigned char __RPC_FAR * __RPC_FAR * pDynBuffer;
+ unsigned long __RPC_FAR * pEncodedSize;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ unsigned long ProcNumber;
+ unsigned long AlienDataRep;
+ unsigned long IncrDataSize;
+ unsigned long ByteCount;
+} MIDL_ES_MESSAGE, __RPC_FAR * PMIDL_ES_MESSAGE;
+
+typedef PMIDL_ES_MESSAGE MIDL_ES_HANDLE;
+
+RPC_STATUS RPC_ENTRY
+MesEncodeIncrementalHandleCreate(
+ void __RPC_FAR * UserState,
+ MIDL_ES_ALLOC AllocFn,
+ MIDL_ES_WRITE WriteFn,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesDecodeIncrementalHandleCreate(
+ void __RPC_FAR * UserState,
+ MIDL_ES_READ ReadFn,
+ handle_t __RPC_FAR * pHandle );
+
+
+RPC_STATUS RPC_ENTRY
+MesIncrementalHandleReset(
+ handle_t Handle,
+ void __RPC_FAR * UserState,
+ MIDL_ES_ALLOC AllocFn,
+ MIDL_ES_WRITE WriteFn,
+ MIDL_ES_READ ReadFn,
+ MIDL_ES_CODE Operation );
+
+
+RPC_STATUS RPC_ENTRY
+MesEncodeFixedBufferHandleCreate(
+ char __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ unsigned long __RPC_FAR * pEncodedSize,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesEncodeDynBufferHandleCreate(
+ char __RPC_FAR * __RPC_FAR * pBuffer,
+ unsigned long __RPC_FAR * pEncodedSize,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesDecodeBufferHandleCreate(
+ char __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ handle_t __RPC_FAR * pHandle );
+
+
+RPC_STATUS RPC_ENTRY
+MesBufferHandleReset(
+ handle_t Handle,
+ unsigned long HandleStyle,
+ MIDL_ES_CODE Operation,
+ char __RPC_FAR * __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ unsigned long __RPC_FAR * pEncodedSize );
+
+
+RPC_STATUS RPC_ENTRY
+MesHandleFree( handle_t Handle );
+
+RPC_STATUS RPC_ENTRY
+MesInqProcEncodingId(
+ handle_t Handle,
+ PRPC_SYNTAX_IDENTIFIER pInterfaceId,
+ unsigned long __RPC_FAR * pProcNum );
+
+
+#if defined(_MIPS_) || defined(_ALPHA_) || defined(_PPC_)
+#define __RPC_UNALIGNED __unaligned
+#else
+#define __RPC_UNALIGNED
+#endif
+
+void RPC_ENTRY I_NdrMesMessageInit( PMIDL_STUB_MESSAGE );
+
+size_t RPC_ENTRY
+NdrMesSimpleTypeAlignSize ( handle_t );
+
+void RPC_ENTRY
+NdrMesSimpleTypeDecode(
+ handle_t Handle,
+ void __RPC_FAR * pObject,
+ short Size );
+
+void RPC_ENTRY
+NdrMesSimpleTypeEncode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ void __RPC_FAR * pObject,
+ short Size );
+
+
+size_t RPC_ENTRY
+NdrMesTypeAlignSize(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_ENTRY
+NdrMesTypeEncode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_ENTRY
+NdrMesTypeDecode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_VAR_ENTRY
+NdrMesProcEncodeDecode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ ... );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for DOS and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack()
+#endif
+
+#endif /* __MIDLES_H__ */
diff --git a/public/sdk/rpc16/dos/inc/rpc.h b/public/sdk/rpc16/dos/inc/rpc.h
new file mode 100644
index 000000000..ba4dbed89
--- /dev/null
+++ b/public/sdk/rpc16/dos/inc/rpc.h
@@ -0,0 +1,64 @@
+/*++
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ rpc.h
+
+Abstract:
+
+ Master include file for RPC applications.
+
+--*/
+
+#ifndef __RPC_H__
+#define __RPC_H__
+
+// Set the packing level for RPC structures.
+
+#pragma warning( disable:4103 )
+#pragma pack(2)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __RPC_DOS__
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+typedef unsigned short RPC_STATUS;
+
+// Added 2 words for DOS mail.
+#define RPCXCWORD 9
+
+#define __RPC_FAR __far
+#define __RPC_API __far __pascal
+#define __RPC_USER __far __pascal
+#define __RPC_STUB __far __pascal
+#define RPC_ENTRY __pascal __loadds __far
+
+typedef void _far * I_RPC_HANDLE;
+
+#include "rpcdce.h"
+#include "rpcnsi.h"
+#include "rpcerr.h"
+#include "rpcx86.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level.
+
+#pragma pack()
+#pragma warning( default:4103 )
+
+#endif // __RPC_H__
+
+
diff --git a/public/sdk/rpc16/dos/inc/rpcdce.h b/public/sdk/rpc16/dos/inc/rpcdce.h
new file mode 100644
index 000000000..099457ea4
--- /dev/null
+++ b/public/sdk/rpc16/dos/inc/rpcdce.h
@@ -0,0 +1,1618 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcdce.h
+
+Abstract:
+
+ This module contains the DCE RPC runtime APIs.
+
+--*/
+
+#ifndef __RPCDCE_H__
+#define __RPCDCE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IN
+#define OUT
+#define OPTIONAL
+
+/*typedef char small;*/
+/*typedef unsigned char byte;*/
+/*typedef unsigned char boolean;*/
+
+typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
+typedef RPC_BINDING_HANDLE handle_t;
+#define rpc_binding_handle_t RPC_BINDING_HANDLE
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#ifndef UUID_DEFINED
+#define UUID_DEFINED
+typedef GUID UUID;
+#ifndef uuid_t
+#define uuid_t UUID
+#endif
+#endif
+
+typedef struct _RPC_BINDING_VECTOR
+{
+ unsigned long Count;
+ RPC_BINDING_HANDLE BindingH[1];
+} RPC_BINDING_VECTOR;
+#ifndef rpc_binding_vector_t
+#define rpc_binding_vector_t RPC_BINDING_VECTOR
+#endif
+
+typedef struct _UUID_VECTOR
+{
+ unsigned long Count;
+ UUID *Uuid[1];
+} UUID_VECTOR;
+#ifndef uuid_vector_t
+#define uuid_vector_t UUID_VECTOR
+#endif
+
+typedef void __RPC_FAR * RPC_IF_HANDLE;
+
+#ifndef IFID_DEFINED
+#define IFID_DEFINED
+typedef struct _RPC_IF_ID
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_IF_ID;
+#endif
+
+#define RPC_C_BINDING_INFINITE_TIMEOUT 10
+#define RPC_C_BINDING_MIN_TIMEOUT 0
+#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
+#define RPC_C_BINDING_MAX_TIMEOUT 9
+
+#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
+
+#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
+#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
+
+#define RPC_C_BIND_TO_ALL_NICS 1
+#define RPC_C_USE_INTERNET_PORT 1
+#define RPC_C_USE_INTRANET_PORT 2
+
+#ifdef RPC_UNICODE_SUPPORTED
+typedef struct _RPC_PROTSEQ_VECTORA
+{
+ unsigned int Count;
+ unsigned char __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTORA;
+
+typedef struct _RPC_PROTSEQ_VECTORW
+{
+ unsigned int Count;
+ unsigned short __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTORW;
+
+#ifdef UNICODE
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
+#else /* UNICODE */
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+typedef struct _RPC_PROTSEQ_VECTOR
+{
+ unsigned int Count;
+ unsigned char __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTOR;
+
+#endif /* RPC_UNICODE_SUPPORTED */
+typedef struct _RPC_POLICY {
+ unsigned int Length ;
+ unsigned long EndpointFlags ;
+ unsigned long NICFlags ;
+ } RPC_POLICY, __RPC_FAR *PRPC_POLICY ;
+
+typedef void __RPC_USER
+RPC_OBJECT_INQ_FN (
+ IN UUID __RPC_FAR * ObjectUuid,
+ OUT UUID __RPC_FAR * TypeUuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+typedef RPC_STATUS
+RPC_IF_CALLBACK_FN (
+ IN RPC_IF_HANDLE InterfaceUuid,
+ IN void *Context
+ ) ;
+
+#define RPC_MGR_EPV void
+
+typedef struct
+{
+ unsigned int Count;
+ unsigned long Stats[1];
+} RPC_STATS_VECTOR;
+
+#define RPC_C_STATS_CALLS_IN 0
+#define RPC_C_STATS_CALLS_OUT 1
+#define RPC_C_STATS_PKTS_IN 2
+#define RPC_C_STATS_PKTS_OUT 3
+
+typedef struct
+{
+ unsigned long Count;
+ RPC_IF_ID __RPC_FAR * IfId[1];
+} RPC_IF_ID_VECTOR;
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingCopy (
+ IN RPC_BINDING_HANDLE SourceBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingFree (
+ IN OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+/* client */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBindingA (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBindingW (
+ IN unsigned short __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#ifdef UNICODE
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingW
+#else /* UNICODE */
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBinding (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcBindingInqObject (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT UUID __RPC_FAR * ObjectUuid
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingReset (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* RpcBindingServerFromClient : UNSUPPORTED */
+/* RpcBindingSetAuthInfo */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingSetObject (
+ IN RPC_BINDING_HANDLE Binding,
+ IN UUID __RPC_FAR * ObjectUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqDefaultProtectLevel(
+ IN unsigned long AuthnSvc,
+ OUT unsigned long __RPC_FAR *AuthnLevel
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBindingA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBindingW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+#ifdef UNICODE
+#define RpcBindingToStringBinding RpcBindingToStringBindingW
+#else /* UNICODE */
+#define RpcBindingToStringBinding RpcBindingToStringBindingA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBinding (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcBindingVectorFree (
+ IN OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingComposeA (
+ IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned char __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned char __RPC_FAR * Options OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingComposeW (
+ IN unsigned short __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned short __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned short __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned short __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned short __RPC_FAR * Options OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcStringBindingCompose RpcStringBindingComposeW
+#else /* UNICODE */
+#define RpcStringBindingCompose RpcStringBindingComposeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingCompose (
+ IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned char __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned char __RPC_FAR * Options OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParseA (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParseW (
+ IN unsigned short __RPC_FAR * StringBinding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcStringBindingParse RpcStringBindingParseW
+#else /* UNICODE */
+#define RpcStringBindingParse RpcStringBindingParseA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParse (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringFreeA (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringFreeW (
+ IN OUT unsigned short __RPC_FAR * __RPC_FAR * String
+ );
+
+#ifdef UNICODE
+#define RpcStringFree RpcStringFreeW
+#else /* UNICODE */
+#define RpcStringFree RpcStringFreeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringFree (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcIfInqId (
+ IN RPC_IF_HANDLE RpcIfHandle,
+ OUT RPC_IF_ID __RPC_FAR * RpcIfId
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValidA (
+ IN unsigned char __RPC_FAR * Protseq
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValidW (
+ IN unsigned short __RPC_FAR * Protseq
+ );
+
+#ifdef UNICODE
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidW
+#else /* UNICODE */
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValid (
+ IN unsigned char __RPC_FAR * Protseq
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqComTimeout (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned int __RPC_FAR * Timeout
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetComTimeout (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned int Timeout
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetCancelTimeout(
+ long Timeout
+ );
+
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqsA (
+ OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqsW (
+ OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#ifdef UNICODE
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsW
+#else /* UNICODE */
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqs (
+ OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectInqType (
+ IN UUID __RPC_FAR * ObjUuid,
+ OUT UUID __RPC_FAR * TypeUuid OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectSetInqFn (
+ IN RPC_OBJECT_INQ_FN __RPC_FAR * InquiryFn
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectSetType (
+ IN UUID __RPC_FAR * ObjUuid,
+ IN UUID __RPC_FAR * TypeUuid OPTIONAL
+ );
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFreeA (
+ IN OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFreeW (
+ IN OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#ifdef UNICODE
+#define RpcProtseqVectorFree RpcProtseqVectorFreeW
+#else /* UNICODE */
+#define RpcProtseqVectorFree RpcProtseqVectorFreeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFree (
+ IN OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerInqBindings (
+ OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerInqIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
+ OUT RPC_MGR_EPV __RPC_FAR * __RPC_FAR * MgrEpv
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerListen (
+ IN unsigned int MinimumCallThreads,
+ IN unsigned int MaxCalls,
+ IN unsigned int DontWait
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid OPTIONAL,
+ IN RPC_MGR_EPV __RPC_FAR * MgrEpv OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterIfEx (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid,
+ IN RPC_MGR_EPV __RPC_FAR * MgrEpv,
+ IN unsigned int Flags,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_CALLBACK_FN __RPC_FAR *IfCallback
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUnregisterIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
+ IN unsigned int WaitForCallsToComplete
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqs (
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsEx (
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsIf (
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsIfEx (
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseq RpcServerUseProtseqW
+#define RpcServerUseProtseqEx RpcServerUseProtseqExW
+#else /* UNICODE */
+#define RpcServerUseProtseq RpcServerUseProtseqA
+#define RpcServerUseProtseqEx RpcServerUseProtseqExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseq (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned short __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned short __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpW
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExW
+#else /* UNICODE */
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpA
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEp (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfW
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExW
+#else /* UNICODE */
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfA
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIf (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtStatsVectorFree (
+ IN RPC_STATS_VECTOR ** StatsVector
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqStats (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT RPC_STATS_VECTOR ** Statistics
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtIsServerListening (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtStopServerListening (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtWaitServerListen (
+ void
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetServerStackSize (
+ IN unsigned long ThreadStackSize
+ );
+
+/* server */
+void RPC_ENTRY
+RpcSsDontSerializeContext (
+ void
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtEnableIdleCleanup (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqIfIds (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcIfIdVectorFree (
+ IN OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincNameA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincNameW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+#ifdef UNICODE
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameW
+#else /* UNICODE */
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincNameA (
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincNameW (
+ IN unsigned long AuthnSvc,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+#ifdef UNICODE
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameW
+#else /* UNICODE */
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincName (
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcEpResolveBinding (
+ IN RPC_BINDING_HANDLE Binding,
+ IN RPC_IF_HANDLE IfSpec
+ );
+
+/* client */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryNameA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryNameW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+#ifdef UNICODE
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameW
+#else /* UNICODE */
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+typedef void __RPC_FAR * RPC_AUTH_IDENTITY_HANDLE;
+typedef void __RPC_FAR * RPC_AUTHZ_HANDLE;
+
+#define RPC_C_AUTHN_LEVEL_DEFAULT 0
+#define RPC_C_AUTHN_LEVEL_NONE 1
+#define RPC_C_AUTHN_LEVEL_CONNECT 2
+#define RPC_C_AUTHN_LEVEL_CALL 3
+#define RPC_C_AUTHN_LEVEL_PKT 4
+#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
+#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
+
+#define RPC_C_IMP_LEVEL_ANONYMOUS 1
+#define RPC_C_IMP_LEVEL_IDENTIFY 2
+#define RPC_C_IMP_LEVEL_IMPERSONATE 3
+#define RPC_C_IMP_LEVEL_DELEGATE 4
+
+#define RPC_C_QOS_IDENTITY_STATIC 0
+#define RPC_C_QOS_IDENTITY_DYNAMIC 1
+
+#define RPC_C_QOS_CAPABILITIES_DEFAULT 0
+#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 1
+
+#define RPC_C_PROTECT_LEVEL_DEFAULT (RPC_C_AUTHN_LEVEL_DEFAULT)
+#define RPC_C_PROTECT_LEVEL_NONE (RPC_C_AUTHN_LEVEL_NONE)
+#define RPC_C_PROTECT_LEVEL_CONNECT (RPC_C_AUTHN_LEVEL_CONNECT)
+#define RPC_C_PROTECT_LEVEL_CALL (RPC_C_AUTHN_LEVEL_CALL)
+#define RPC_C_PROTECT_LEVEL_PKT (RPC_C_AUTHN_LEVEL_PKT)
+#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
+#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY (RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
+
+#define RPC_C_AUTHN_NONE 0
+#define RPC_C_AUTHN_DCE_PRIVATE 1
+#define RPC_C_AUTHN_DCE_PUBLIC 2
+#define RPC_C_AUTHN_DEC_PUBLIC 4
+#define RPC_C_AUTHN_WINNT 10
+#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFFL
+
+#define RPC_C_SECURITY_QOS_VERSION 1L
+
+typedef struct _RPC_SECURITY_QOS {
+ unsigned long Version;
+ unsigned long Capabilities;
+ unsigned long IdentityTracking;
+ unsigned long ImpersonationType;
+} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+typedef struct _SEC_WINNT_AUTH_IDENTITY
+{
+ char __RPC_FAR *User;
+ char __RPC_FAR *Domain;
+ char __RPC_FAR *Password;
+} SEC_WINNT_AUTH_IDENTITY;
+#else
+
+
+#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
+#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
+ unsigned short __RPC_FAR *User;
+ unsigned long UserLength;
+ unsigned short __RPC_FAR *Domain;
+ unsigned long DomainLength;
+ unsigned short __RPC_FAR *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
+ unsigned char __RPC_FAR *User;
+ unsigned long UserLength;
+ unsigned char __RPC_FAR *Domain;
+ unsigned long DomainLength;
+ unsigned char __RPC_FAR *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
+
+
+#ifdef UNICODE
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W
+#else // UNICODE
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_A
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_A
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_A
+#endif // UNICODE
+#endif // defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+
+#define RPC_C_AUTHZ_NONE 0
+#define RPC_C_AUTHZ_NAME 1
+#define RPC_C_AUTHZ_DCE 2
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClientA (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClientW (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoExA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc,
+ IN RPC_SECURITY_QOS *SecurityQos OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoExW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc, OPTIONAL
+ IN RPC_SECURITY_QOS *SecurityQOS
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoExA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc, OPTIONAL
+ IN unsigned long RpcQosVersion,
+ OUT RPC_SECURITY_QOS *SecurityQOS
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoExW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL,
+ IN unsigned long RpcQosVersion,
+ OUT RPC_SECURITY_QOS *SecurityQOS
+ );
+
+typedef void
+(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ IN void __RPC_FAR * Arg,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long KeyVer,
+ OUT void __RPC_FAR * __RPC_FAR * Key,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfoA (
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfoW (
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientW
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoW
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoW
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoW
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExW
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExW
+#else /* UNICODE */
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientA
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoA
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoA
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoA
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExA
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClient (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfo (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfo (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+typedef void
+(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ IN void __RPC_FAR * Arg,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long KeyVer,
+ OUT void __RPC_FAR * __RPC_FAR * Key,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfo (
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+typedef struct {
+ unsigned char __RPC_FAR * UserName;
+ unsigned char __RPC_FAR * ComputerName;
+ unsigned short Privilege;
+ unsigned long AuthFlags;
+} RPC_CLIENT_INFORMATION1, __RPC_FAR * PRPC_CLIENT_INFORMATION1;
+
+RPC_STATUS RPC_ENTRY
+RpcBindingServerFromClient (
+ IN RPC_BINDING_HANDLE ClientBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * ServerBinding
+ );
+
+void RPC_ENTRY
+RpcRaiseException (
+ IN RPC_STATUS exception
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcTestCancel(
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcCancelThread(
+ IN void * Thread
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidCreate (
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToStringA (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromStringA (
+ IN unsigned char __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToStringW (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromStringW (
+ IN unsigned short __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#ifdef UNICODE
+#define UuidFromString UuidFromStringW
+#define UuidToString UuidToStringW
+#else /* UNICODE */
+#define UuidFromString UuidFromStringA
+#define UuidToString UuidToStringA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToString (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromString (
+ IN unsigned char __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+signed int RPC_ENTRY
+UuidCompare (
+ IN UUID __RPC_FAR * Uuid1,
+ IN UUID __RPC_FAR * Uuid2,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+UuidCreateNil (
+ OUT UUID __RPC_FAR * NilUuid
+ );
+
+int RPC_ENTRY
+UuidEqual (
+ IN UUID __RPC_FAR * Uuid1,
+ IN UUID __RPC_FAR * Uuid2,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+unsigned short RPC_ENTRY
+UuidHash (
+ IN UUID __RPC_FAR * Uuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+int RPC_ENTRY
+UuidIsNil (
+ IN UUID __RPC_FAR * Uuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplaceA (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplaceW (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned short * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterA (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterW (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned short * Annotation
+ );
+
+#ifdef UNICODE
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceW
+#define RpcEpRegister RpcEpRegisterW
+#else /* UNICODE */
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceA
+#define RpcEpRegister RpcEpRegisterA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplace (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegister (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+
+RPC_STATUS RPC_ENTRY
+RpcEpUnregister(
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqTextA (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned char __RPC_FAR * ErrorText
+ );
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqTextW (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned short __RPC_FAR * ErrorText
+ );
+
+#ifdef UNICODE
+#define DceErrorInqText DceErrorInqTextW
+#else /* UNICODE */
+#define DceErrorInqText DceErrorInqTextA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqText (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned char __RPC_FAR * ErrorText
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+#define DCE_C_ERROR_STRING_LEN 256
+
+typedef I_RPC_HANDLE * RPC_EP_INQ_HANDLE;
+
+#define RPC_C_EP_ALL_ELTS 0
+#define RPC_C_EP_MATCH_BY_IF 1
+#define RPC_C_EP_MATCH_BY_OBJ 2
+#define RPC_C_EP_MATCH_BY_BOTH 3
+
+#define RPC_C_VERS_ALL 1
+#define RPC_C_VERS_COMPATIBLE 2
+#define RPC_C_VERS_EXACT 3
+#define RPC_C_VERS_MAJOR_ONLY 4
+#define RPC_C_VERS_UPTO 5
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqBegin (
+ IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption OPTIONAL,
+ IN UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqDone (
+ IN OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNextA (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNextW (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW
+#else /* UNICODE */
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNext (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpUnregister (
+ IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
+ IN RPC_IF_ID __RPC_FAR * IfId,
+ IN RPC_BINDING_HANDLE Binding,
+ IN UUID __RPC_FAR * ObjectUuid OPTIONAL
+ );
+
+typedef int
+(__RPC_API * RPC_MGMT_AUTHORIZATION_FN) (
+ IN RPC_BINDING_HANDLE ClientBinding,
+ IN unsigned long RequestedMgmtOperation,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+#define RPC_C_MGMT_INQ_IF_IDS 0
+#define RPC_C_MGMT_INQ_PRINC_NAME 1
+#define RPC_C_MGMT_INQ_STATS 2
+#define RPC_C_MGMT_IS_SERVER_LISTEN 3
+#define RPC_C_MGMT_STOP_SERVER_LISTEN 4
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetAuthorizationFn (
+ IN RPC_MGMT_AUTHORIZATION_FN AuthorizationFn
+ );
+
+
+#define RPC_C_PARM_MAX_PACKET_LENGTH 1
+#define RPC_C_PARM_BUFFER_LENGTH 2
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqParameter (
+ IN unsigned Parameter,
+ IN unsigned long __RPC_FAR * Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetParameter (
+ IN unsigned Parameter,
+ IN unsigned long Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtBindingInqParameter (
+ IN RPC_BINDING_HANDLE Handle,
+ IN unsigned Parameter,
+ IN unsigned long __RPC_FAR * Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtBindingSetParameter (
+ IN RPC_BINDING_HANDLE Handle,
+ IN unsigned Parameter,
+ IN unsigned long Value
+ );
+
+#define RPC_IF_AUTOLISTEN 0x0001
+#define RPC_IF_OLE 0x0002
+
+#include <rpcdcep.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RPCDCE_H__ */
diff --git a/public/sdk/rpc16/dos/inc/rpcdcep.h b/public/sdk/rpc16/dos/inc/rpcdcep.h
new file mode 100644
index 000000000..85ed0fd67
--- /dev/null
+++ b/public/sdk/rpc16/dos/inc/rpcdcep.h
@@ -0,0 +1,415 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcdcep.h
+
+Abstract:
+
+ This module contains the private RPC runtime APIs for use by the
+ stubs and by support libraries. Applications must not call these
+ routines.
+
+--*/
+
+#ifndef __RPCDCEP_H__
+#define __RPCDCEP_H__
+
+// Set the packing level for RPC structures for Dos and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack(2)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _RPC_VERSION {
+ unsigned short MajorVersion;
+ unsigned short MinorVersion;
+} RPC_VERSION;
+
+typedef struct _RPC_SYNTAX_IDENTIFIER {
+ GUID SyntaxGUID;
+ RPC_VERSION SyntaxVersion;
+} RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
+
+typedef struct _RPC_MESSAGE
+{
+ RPC_BINDING_HANDLE Handle;
+ unsigned long DataRepresentation;
+ void __RPC_FAR * Buffer;
+ unsigned int BufferLength;
+ unsigned int ProcNum;
+ PRPC_SYNTAX_IDENTIFIER TransferSyntax;
+ void __RPC_FAR * RpcInterfaceInformation;
+ void __RPC_FAR * ReservedForRuntime;
+ RPC_MGR_EPV __RPC_FAR * ManagerEpv;
+ void __RPC_FAR * ImportContext;
+ unsigned long RpcFlags;
+} RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
+
+
+typedef RPC_STATUS RPC_ENTRY RPC_FORWARD_FUNCTION(
+ IN UUID __RPC_FAR * InterfaceId,
+ IN RPC_VERSION __RPC_FAR * InterfaceVersion,
+ IN UUID __RPC_FAR * ObjectId,
+ IN unsigned char __RPC_FAR * Rpcpro,
+ IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
+
+/*
+ * Types of function calls for datagram rpc
+ */
+
+#define RPC_NCA_FLAGS_DEFAULT 0x00000000 /* 0b000...000 */
+#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001 /* 0b000...001 */
+#define RPC_NCA_FLAGS_BROADCAST 0x00000002 /* 0b000...010 */
+#define RPC_NCA_FLAGS_MAYBE 0x00000004 /* 0b000...100 */
+
+#define RPC_BUFFER_COMPLETE 0x00001000 /* used by pipes */
+#define RPC_BUFFER_PARTIAL 0x00002000 /* used by pipes */
+#define RPC_BUFFER_EXTRA 0x00004000 /* used by pipes */
+
+#define RPCFLG_NON_NDR 0x80000000UL
+#define RPCFLG_ASYNCHRONOUS 0x40000000UL
+#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000UL
+#define RPCFLG_LOCAL_CALL 0x10000000UL
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#define RPC_FLAGS_VALID_BIT 0x8000
+#endif
+
+#if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
+#define RPC_FLAGS_VALID_BIT 0x00008000
+#endif
+
+typedef
+void
+(__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
+ IN OUT PRPC_MESSAGE Message
+ );
+
+typedef struct {
+ unsigned int DispatchTableCount;
+ RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
+ int Reserved;
+} RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
+
+typedef struct _RPC_PROTSEQ_ENDPOINT
+{
+ unsigned char __RPC_FAR * RpcProtocolSequence;
+ unsigned char __RPC_FAR * Endpoint;
+} RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
+
+/*
+Both of these types MUST start with the InterfaceId and TransferSyntax.
+Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
+*/
+#define NT351_INTERFACE_SIZE 0x40
+#define RPC_INTERFACE_HAS_PIPES 0x0001
+
+typedef struct _RPC_SERVER_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
+ void const __RPC_FAR *InterpreterInfo;
+ unsigned int Flags ;
+} RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
+
+typedef struct _RPC_CLIENT_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ unsigned long Reserved;
+ void const __RPC_FAR * InterpreterInfo;
+ unsigned int Flags ;
+} RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSendReceive (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcFreeBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSend (
+ IN OUT PRPC_MESSAGE Message
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcReceive (
+ IN OUT PRPC_MESSAGE Message,
+ IN unsigned int Size
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcFreePipeBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcReallocPipeBuffer (
+ IN PRPC_MESSAGE Message,
+ IN unsigned int NewSize
+ ) ;
+
+typedef void * I_RPC_MUTEX;
+
+void RPC_ENTRY
+I_RpcRequestMutex (
+ IN OUT I_RPC_MUTEX * Mutex
+ );
+
+void RPC_ENTRY
+I_RpcClearMutex (
+ IN I_RPC_MUTEX Mutex
+ );
+
+void RPC_ENTRY
+I_RpcDeleteMutex (
+ IN I_RPC_MUTEX Mutex
+ );
+
+void __RPC_FAR * RPC_ENTRY
+I_RpcAllocate (
+ IN unsigned int Size
+ );
+
+void RPC_ENTRY
+I_RpcFree (
+ IN void __RPC_FAR * Object
+ );
+
+void RPC_ENTRY
+I_RpcPauseExecution (
+ IN unsigned long Milliseconds
+ );
+
+typedef
+void
+(__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
+ void __RPC_FAR * AssociationContext
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcMonitorAssociation (
+ IN RPC_BINDING_HANDLE Handle,
+ IN PRPC_RUNDOWN RundownRoutine,
+ IN void * Context
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcStopMonitorAssociation (
+ IN RPC_BINDING_HANDLE Handle
+ );
+
+RPC_BINDING_HANDLE RPC_ENTRY
+I_RpcGetCurrentCallHandle(
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetAssociationContext (
+ OUT void __RPC_FAR * __RPC_FAR * AssociationContext
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSetAssociationContext (
+ IN void __RPC_FAR * AssociationContext
+ );
+
+#ifdef __RPC_NT__
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsBindingSetEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+#else
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsBindingSetEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+#endif
+
+#ifdef __RPC_NT__
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqDynamicEndpoint (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
+ );
+
+#else
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqDynamicEndpoint (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
+ );
+
+#endif
+
+#define TRANSPORT_TYPE_CN 0x1
+#define TRANSPORT_TYPE_DG 0x2
+#define TRANSPORT_TYPE_LPC 0x4
+#define TRANSPORT_TYPE_WMSG 0x8
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqTransportType (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned int __RPC_FAR * Type
+ );
+
+typedef struct _RPC_TRANSFER_SYNTAX
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_TRANSFER_SYNTAX;
+
+RPC_STATUS RPC_ENTRY
+I_RpcIfInqTransferSyntaxes (
+ IN RPC_IF_HANDLE RpcIfHandle,
+ OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
+ IN unsigned int TransferSyntaxSize,
+ OUT unsigned int __RPC_FAR * TransferSyntaxCount
+ );
+
+RPC_STATUS RPC_ENTRY
+I_UuidCreate (
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingCopy (
+ IN RPC_BINDING_HANDLE SourceBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingIsClientLocal (
+ IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
+ OUT unsigned int __RPC_FAR * ClientLocalFlag
+ );
+
+void RPC_ENTRY
+I_RpcSsDontSerializeContext (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcLaunchDatagramReceiveThread(
+ void __RPC_FAR * pAddress
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerRegisterForwardFunction (
+ IN RPC_FORWARD_FUNCTION __RPC_FAR * pForwardFunction
+ );
+
+
+RPC_STATUS RPC_ENTRY
+I_RpcConnectionInqSockBuffSize(
+ OUT unsigned long __RPC_FAR * RecvBuffSize,
+ OUT unsigned long __RPC_FAR * SendBuffSize
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcConnectionSetSockBuffSize(
+ IN unsigned long RecvBuffSize,
+ IN unsigned long SendBuffSize
+ );
+
+
+#ifdef MSWMSG
+RPC_STATUS RPC_ENTRY
+I_RpcServerStartListening(
+ HWND hWnd
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerStopListening(
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetThreadWindowHandle(
+ OUT HWND *WindowHandle
+ ) ;
+
+typedef RPC_STATUS (*RPC_BLOCKING_FN) (
+ IN void *wnd,
+ IN void *Context,
+ IN HANDLE hSyncEvent
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcAsyncSendReceive(
+ IN OUT PRPC_MESSAGE pRpcMessage,
+ IN OPTIONAL void *Context,
+ HWND hWnd
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingSetAsync(
+ IN RPC_BINDING_HANDLE Binding,
+ IN RPC_BLOCKING_FN BlockingFn
+ ) ;
+
+LONG RPC_ENTRY
+I_RpcWindowProc(
+ IN HWND hWnd,
+ IN UINT Message,
+ IN WPARAM wParam,
+ IN LPARAM lParam
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcSetWMsgEndpoint (
+ IN WCHAR __RPC_FAR * Endpoint
+ ) ;
+#endif
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerInqTransportType(
+ OUT unsigned int __RPC_FAR * Type
+ ) ;
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for Dos and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack()
+#endif
+
+#endif /* __RPCDCEP_H__ */
diff --git a/public/sdk/rpc16/dos/inc/rpcerr.h b/public/sdk/rpc16/dos/inc/rpcerr.h
new file mode 100644
index 000000000..139df1b1b
--- /dev/null
+++ b/public/sdk/rpc16/dos/inc/rpcerr.h
@@ -0,0 +1,188 @@
+/*********************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1987-1990 **/
+/** **/
+/** Rpc Error Codes from the compiler and runtime **/
+/** **/
+/*********************************************************/
+
+/*
+If you change this file, you must also change ntstatus.mc and winerror.mc
+*/
+
+#ifndef __RPCERR_H__
+#define __RPCERR_H__
+
+#define RPC_S_OK 0
+#define RPC_S_INVALID_ARG 1
+#define RPC_S_INVALID_STRING_BINDING 2
+#define RPC_S_OUT_OF_MEMORY 3
+#define RPC_S_WRONG_KIND_OF_BINDING 4
+#define RPC_S_INVALID_BINDING 5
+#define RPC_S_PROTSEQ_NOT_SUPPORTED 6
+#define RPC_S_INVALID_RPC_PROTSEQ 7
+#define RPC_S_INVALID_STRING_UUID 8
+#define RPC_S_INVALID_ENDPOINT_FORMAT 9
+
+#define RPC_S_INVALID_NET_ADDR 10
+#define RPC_S_INVALID_NAF_ID 11
+#define RPC_S_NO_ENDPOINT_FOUND 12
+#define RPC_S_INVALID_TIMEOUT 13
+#define RPC_S_OBJECT_NOT_FOUND 14
+#define RPC_S_ALREADY_REGISTERED 15
+#define RPC_S_TYPE_ALREADY_REGISTERED 16
+#define RPC_S_ALREADY_LISTENING 17
+#define RPC_S_NO_PROTSEQS_REGISTERED 18
+#define RPC_S_NOT_LISTENING 19
+
+#define RPC_S_OUT_OF_THREADS 20
+#define RPC_S_UNKNOWN_MGR_TYPE 21
+#define RPC_S_UNKNOWN_IF 22
+#define RPC_S_NO_BINDINGS 23
+#define RPC_S_NO_PROTSEQS 24
+#define RPC_S_CANT_CREATE_ENDPOINT 25
+#define RPC_S_OUT_OF_RESOURCES 26
+#define RPC_S_SERVER_UNAVAILABLE 27
+#define RPC_S_SERVER_TOO_BUSY 28
+#define RPC_S_INVALID_NETWORK_OPTIONS 29
+
+#define RPC_S_NO_CALL_ACTIVE 30
+#define RPC_S_INVALID_LEVEL 31
+#define RPC_S_CANNOT_SUPPORT 32
+#define RPC_S_CALL_FAILED 33
+#define RPC_S_CALL_FAILED_DNE 34
+#define RPC_S_PROTOCOL_ERROR 35
+
+// Unused.
+
+// Unused.
+
+#define RPC_S_UNSUPPORTED_TRANS_SYN 38
+#define RPC_S_BUFFER_TOO_SMALL 39
+
+#define RPC_S_NO_CONTEXT_AVAILABLE 40
+#define RPC_S_SERVER_OUT_OF_MEMORY 41
+#define RPC_S_UNSUPPORTED_TYPE 42
+#define RPC_S_ZERO_DIVIDE 43
+#define RPC_S_ADDRESS_ERROR 44
+#define RPC_S_FP_DIV_ZERO 45
+#define RPC_S_FP_UNDERFLOW 46
+#define RPC_S_FP_OVERFLOW 47
+#define RPC_S_INVALID_TAG 48
+#define RPC_S_INVALID_BOUND 49
+
+#define RPC_S_NO_ENTRY_NAME 50
+#define RPC_S_INVALID_NAME_SYNTAX 51
+#define RPC_S_UNSUPPORTED_NAME_SYNTAX 52
+#define RPC_S_UUID_LOCAL_ONLY 53
+#define RPC_S_UUID_NO_ADDRESS 54
+#define RPC_S_DUPLICATE_ENDPOINT 55
+#define RPC_S_INVALID_SECURITY_DESC 56
+#define RPC_S_ACCESS_DENIED 57
+#define RPC_S_UNKNOWN_AUTHN_TYPE 58
+#define RPC_S_MAX_CALLS_TOO_SMALL 59
+
+#define RPC_S_STRING_TOO_LONG 60
+#define RPC_S_PROTSEQ_NOT_FOUND 61
+#define RPC_S_PROCNUM_OUT_OF_RANGE 62
+#define RPC_S_BINDING_HAS_NO_AUTH 63
+#define RPC_S_UNKNOWN_AUTHN_SERVICE 64
+#define RPC_S_UNKNOWN_AUTHN_LEVEL 65
+#define RPC_S_INVALID_AUTH_IDENTITY 66
+#define RPC_S_UNKNOWN_AUTHZ_SERVICE 67
+#define EPT_S_INVALID_ENTRY 68
+#define EPT_S_CANT_PERFORM_OP 69
+
+#define EPT_S_NOT_REGISTERED 70
+#define RPC_S_NOTHING_TO_EXPORT 71
+#define RPC_S_INCOMPLETE_NAME 72
+#define RPC_S_UNIMPLEMENTED_API 73
+#define RPC_S_INVALID_VERS_OPTION 74
+#define RPC_S_NO_MORE_MEMBERS 75
+#define RPC_S_NOT_ALL_OBJS_UNEXPORTED 76
+#define RPC_S_INTERFACE_NOT_FOUND 77
+#define RPC_S_ENTRY_ALREADY_EXISTS 78
+#define RPC_S_ENTRY_NOT_FOUND 79
+
+#define RPC_S_NAME_SERVICE_UNAVAILABLE 80
+#define RPC_S_CALL_IN_PROGRESS 81
+#define RPC_S_NO_MORE_BINDINGS 82
+#define RPC_S_GROUP_MEMBER_NOT_FOUND 83
+#define EPT_S_CANT_CREATE 84
+#define RPC_S_INVALID_OBJECT 85
+#define RPC_S_CALL_CANCELLED 86
+#define RPC_S_BINDING_INCOMPLETE 87
+#define RPC_S_COMM_FAILURE 88
+#define RPC_S_UNSUPPORTED_AUTHN_LEVEL 89
+
+#define RPC_S_NO_PRINC_NAME 90
+#define RPC_S_NOT_RPC_ERROR 91
+#define RPC_S_SEC_PKG_ERROR 92
+#define RPC_S_NOT_CANCELLED 93
+#define RPC_S_SEND_INCOMPLETE 94
+
+
+#define RPC_S_INTERNAL_ERROR 100
+
+/* The list of servers available for auto_handle binding has been exhausted. */
+
+#define RPC_X_NO_MORE_ENTRIES 256
+
+/* Insufficient memory available to set up necessary data structures. */
+
+#define RPC_X_NO_MEMORY 257
+
+/* The specified bounds of an array are inconsistent. */
+
+#define RPC_X_INVALID_BOUND 258
+
+/* The discriminant value does not match any of the case values. */
+/* There is no default case. */
+
+#define RPC_X_INVALID_TAG 259
+
+/* The file designated by DCERPCCHARTRANS cannot be opened. */
+
+#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL 260
+
+/* The file containing char translation table has fewer than 512 bytes. */
+
+#define RPC_X_SS_CHAR_TRANS_SHORT_FILE 261
+
+/* A null context handle is passed in an [in] parameter position. */
+
+#define RPC_X_SS_IN_NULL_CONTEXT 262
+
+/* Only raised on the callee side. */
+/* A uuid in an [in] handle does not correspond to any known context. */
+
+#define RPC_X_SS_CONTEXT_MISMATCH 263
+
+/* Only raised on the caller side. */
+/* A uuid in an [in, out] context handle changed during a call. */
+
+#define RPC_X_SS_CONTEXT_DAMAGED 264
+
+#define RPC_X_SS_HANDLES_MISMATCH 265
+
+#define RPC_X_SS_CANNOT_GET_CALL_HANDLE 266
+
+#define RPC_X_NULL_REF_POINTER 267
+
+#define RPC_X_ENUM_VALUE_OUT_OF_RANGE 268
+
+#define RPC_X_BYTE_COUNT_TOO_SMALL 269
+
+#define RPC_X_BAD_STUB_DATA 270
+
+#define RPC_X_INVALID_ES_ACTION 271
+#define RPC_X_WRONG_ES_VERSION 272
+#define RPC_X_WRONG_STUB_VERSION 273
+#define RPC_X_INVALID_BUFFER 274
+#define RPC_X_INVALID_PIPE_OBJECT 275
+#define RPC_X_INVALID_PIPE_OPERATION 276
+#define RPC_X_WRONG_PIPE_VERSION 277
+
+
+#endif /* __RPCERR_H__ */
+
diff --git a/public/sdk/rpc16/dos/inc/rpcndr.h b/public/sdk/rpc16/dos/inc/rpcndr.h
new file mode 100644
index 000000000..65d1cdbfe
--- /dev/null
+++ b/public/sdk/rpc16/dos/inc/rpcndr.h
@@ -0,0 +1,2630 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcndr.h
+
+Abstract:
+
+ Definitions for stub data structures and prototypes of helper functions.
+
+Author:
+
+ DonnaLi (01-01-91)
+
+Environment:
+
+ DOS, Win 3.X, and Win/NT.
+
+Revision History:
+
+ DONNALI 08-29-91 Start recording history
+ donnali 09-11-91 change conversion macros
+ donnali 09-18-91 check in files for moving
+ STEVEZ 10-15-91 Merge with NT tree
+ donnali 10-28-91 add prototype
+ donnali 11-19-91 bugfix for strings
+ MIKEMON 12-17-91 DCE runtime API conversion
+ donnali 03-24-92 change rpc public header f
+ STEVEZ 04-04-92 add nsi include
+ mikemon 04-18-92 security support and misc
+ DovhH 04-24-24 Changed signature of <int>_from_ndr
+ (to unsigned <int>)
+ Added <base_type>_array_from_ndr routines
+ RyszardK 06-17-93 Added support for hyper
+ VibhasC 09-11-93 Created rpcndrn.h
+ DKays 10-14-93 Fixed up rpcndrn.h MIDL 2.0
+ RyszardK 01-15-94 Merged in the midl 2.0 changes from rpcndrn.h
+ Stevebl 04-22-96 Hookole support changes to MIDL_*_INFO
+
+--*/
+
+#ifndef __RPCNDR_H__
+#define __RPCNDR_H__
+
+//
+// Set the packing level for RPC structures for Dos, Windows and Mac.
+//
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
+#pragma pack(2)
+#endif
+
+#if defined(__RPC_MAC__)
+#define _MAC_
+#endif
+
+#include <rpcnsip.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************************
+
+ Network Computing Architecture (NCA) definition:
+
+ Network Data Representation: (NDR) Label format:
+ An unsigned long (32 bits) with the following layout:
+
+ 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
+ +---------------+---------------+---------------+-------+-------+
+ | Reserved | Reserved |Floating point | Int | Char |
+ | | |Representation | Rep. | Rep. |
+ +---------------+---------------+---------------+-------+-------+
+
+ Where
+
+ Reserved:
+
+ Must be zero (0) for NCA 1.5 and NCA 2.0.
+
+ Floating point Representation is:
+
+ 0 - IEEE
+ 1 - VAX
+ 2 - Cray
+ 3 - IBM
+
+ Int Rep. is Integer Representation:
+
+ 0 - Big Endian
+ 1 - Little Endian
+
+ Char Rep. is Character Representation:
+
+ 0 - ASCII
+ 1 - EBCDIC
+
+ The Microsoft Local Data Representation (for all platforms which are
+ of interest currently is edefined below:
+
+ ****************************************************************************/
+
+#define NDR_CHAR_REP_MASK (unsigned long)0X0000000FL
+#define NDR_INT_REP_MASK (unsigned long)0X000000F0L
+#define NDR_FLOAT_REP_MASK (unsigned long)0X0000FF00L
+
+#define NDR_LITTLE_ENDIAN (unsigned long)0X00000010L
+#define NDR_BIG_ENDIAN (unsigned long)0X00000000L
+
+#define NDR_IEEE_FLOAT (unsigned long)0X00000000L
+#define NDR_VAX_FLOAT (unsigned long)0X00000100L
+
+#define NDR_ASCII_CHAR (unsigned long)0X00000000L
+#define NDR_EBCDIC_CHAR (unsigned long)0X00000001L
+
+#if defined(__RPC_MAC__)
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000000L
+#define NDR_LOCAL_ENDIAN NDR_BIG_ENDIAN
+#else
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000010L
+#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
+#endif
+
+
+/****************************************************************************
+ * Macros for targeted platforms
+ ****************************************************************************/
+
+#if (defined(_WIN32_DCOM) || 0x400 <= _WIN32_WINNT)
+#define TARGET_IS_NT40_OR_LATER 1
+#else
+#define TARGET_IS_NT40_OR_LATER 0
+#endif
+
+#if (0x400 <= WINVER)
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1
+#else
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 0
+#endif
+
+/****************************************************************************
+ * Other MIDL base types / predefined types:
+ ****************************************************************************/
+
+#define small char
+typedef unsigned char byte;
+typedef unsigned char boolean;
+
+#ifndef _HYPER_DEFINED
+#define _HYPER_DEFINED
+
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
+#define hyper __int64
+#define MIDL_uhyper unsigned __int64
+#else
+typedef double hyper;
+typedef double MIDL_uhyper;
+#endif
+
+#endif // _HYPER_DEFINED
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+#ifdef __RPC_DOS__
+#define __RPC_CALLEE __far __pascal
+#endif
+
+#ifdef __RPC_WIN16__
+#define __RPC_CALLEE __far __pascal __export
+#endif
+
+#ifdef __RPC_WIN32__
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define __RPC_CALLEE __stdcall
+#else
+#define __RPC_CALLEE
+#endif
+#endif
+
+#ifdef __RPC_MAC__
+#define __RPC_CALLEE __far
+#endif
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifdef __RPC_WIN16__
+#define RPC_VAR_ENTRY __export __cdecl
+#else
+#define RPC_VAR_ENTRY __cdecl
+#endif
+
+
+/* winnt only */
+#if defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA)
+#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport)
+#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport)
+#else
+#define __MIDL_DECLSPEC_DLLIMPORT
+#define __MIDL_DECLSPEC_DLLEXPORT
+#endif
+
+
+
+
+/****************************************************************************
+ * Context handle management related definitions:
+ *
+ * Client and Server Contexts.
+ *
+ ****************************************************************************/
+
+typedef void __RPC_FAR * NDR_CCONTEXT;
+
+typedef struct
+ {
+ void __RPC_FAR * pad[2];
+ void __RPC_FAR * userContext;
+ } __RPC_FAR * NDR_SCONTEXT;
+
+#define NDRSContextValue(hContext) (&(hContext)->userContext)
+
+#define cbNDRContext 20 /* size of context on WIRE */
+
+typedef void (__RPC_USER __RPC_FAR * NDR_RUNDOWN)(void __RPC_FAR * context);
+
+typedef struct _SCONTEXT_QUEUE {
+ unsigned long NumberOfObjects;
+ NDR_SCONTEXT * ArrayOfObjects;
+ } SCONTEXT_QUEUE, __RPC_FAR * PSCONTEXT_QUEUE;
+
+RPC_BINDING_HANDLE RPC_ENTRY
+NDRCContextBinding (
+ IN NDR_CCONTEXT CContext
+ );
+
+void RPC_ENTRY
+NDRCContextMarshall (
+ IN NDR_CCONTEXT CContext,
+ OUT void __RPC_FAR *pBuff
+ );
+
+void RPC_ENTRY
+NDRCContextUnmarshall (
+ OUT NDR_CCONTEXT __RPC_FAR *pCContext,
+ IN RPC_BINDING_HANDLE hBinding,
+ IN void __RPC_FAR *pBuff,
+ IN unsigned long DataRepresentation
+ );
+
+void RPC_ENTRY
+NDRSContextMarshall (
+ IN NDR_SCONTEXT CContext,
+ OUT void __RPC_FAR *pBuff,
+ IN NDR_RUNDOWN userRunDownIn
+ );
+
+NDR_SCONTEXT RPC_ENTRY
+NDRSContextUnmarshall (
+ IN void __RPC_FAR *pBuff,
+ IN unsigned long DataRepresentation
+ );
+
+void RPC_ENTRY
+RpcSsDestroyClientContext (
+ IN void __RPC_FAR * __RPC_FAR * ContextHandle
+ );
+
+
+/****************************************************************************
+ NDR conversion related definitions.
+ ****************************************************************************/
+
+#define byte_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+#define boolean_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+#define small_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define small_from_ndr_temp(source, target, format) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)(source))++; \
+ }
+
+#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+/****************************************************************************
+ Platform specific mapping of c-runtime functions.
+ ****************************************************************************/
+
+#ifdef __RPC_DOS__
+#define MIDL_ascii_strlen(string) \
+ _fstrlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ _fstrcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ _fmemset(s,c,n)
+#endif
+
+#ifdef __RPC_WIN16__
+#define MIDL_ascii_strlen(string) \
+ _fstrlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ _fstrcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ _fmemset(s,c,n)
+#endif
+
+#if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
+#define MIDL_ascii_strlen(string) \
+ strlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ strcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ memset(s,c,n)
+#endif
+
+/****************************************************************************
+ Ndr Library helper function prototypes for MIDL 1.0 ndr functions.
+ ****************************************************************************/
+
+void RPC_ENTRY
+NDRcopy (
+ IN void __RPC_FAR *pTarget,
+ IN void __RPC_FAR *pSource,
+ IN unsigned int size
+ );
+
+size_t RPC_ENTRY
+MIDL_wchar_strlen (
+ IN wchar_t __RPC_FAR * s
+ );
+
+void RPC_ENTRY
+MIDL_wchar_strcpy (
+ OUT void __RPC_FAR * t,
+ IN wchar_t __RPC_FAR * s
+ );
+
+void RPC_ENTRY
+char_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT unsigned char __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+char_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned char __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+short_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT unsigned short __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+short_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned short __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+short_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT unsigned short __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+long_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT unsigned long __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+long_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned long __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+long_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT unsigned long __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+enum_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT unsigned int __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+float_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+float_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+double_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+double_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+hyper_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT hyper __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+hyper_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT hyper __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+hyper_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT hyper __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+data_from_ndr (
+ PRPC_MESSAGE source,
+ void __RPC_FAR * target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+data_into_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_into_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+data_size_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_size_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_peek_ndr (
+ PRPC_MESSAGE source,
+ unsigned char __RPC_FAR * __RPC_FAR * buffer,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void __RPC_FAR * RPC_ENTRY
+midl_allocate (
+ size_t size
+ );
+
+/****************************************************************************
+ MIDL 2.0 ndr definitions.
+ ****************************************************************************/
+
+typedef unsigned long error_status_t;
+
+#define _midl_ma1( p, cast ) *(*( cast **)&p)++
+#define _midl_ma2( p, cast ) *(*( cast **)&p)++
+#define _midl_ma4( p, cast ) *(*( cast **)&p)++
+#define _midl_ma8( p, cast ) *(*( cast **)&p)++
+
+#define _midl_unma1( p, cast ) *(( cast *)p)++
+#define _midl_unma2( p, cast ) *(( cast *)p)++
+#define _midl_unma3( p, cast ) *(( cast *)p)++
+#define _midl_unma4( p, cast ) *(( cast *)p)++
+
+// Some alignment specific macros.
+
+
+#define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe))
+#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc))
+#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8))
+
+#define _midl_addp( p, n ) (p += n)
+
+// Marshalling macros
+
+#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++
+#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p
+#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++
+#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++)
+
+
+////////////////////////////////////////////////////////////////////////////
+// Ndr macros.
+////////////////////////////////////////////////////////////////////////////
+
+#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, \
+ _midl_ma4( p, unsigned long) = 0, \
+ _midl_ma4( p, unsigned long) = l)
+
+#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long),\
+ (_midl_addp(p,4)), \
+ (l=_midl_unma4(p,unsigned long))
+
+#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20)
+
+#define NdrUnMarshCCtxtHdl(pc,p,h,drep) \
+ (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20)
+
+#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep ))
+
+
+#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd)
+
+#define NdrFieldOffset(s,f) (long)(& (((s __RPC_FAR *)0)->f))
+#define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t))
+
+#if defined(__RPC_MAC__)
+#define NdrFcShort(s) (unsigned char)(s >> 8), (unsigned char)(s & 0xff)
+#define NdrFcLong(s) (unsigned char)(s >> 24), (unsigned char)((s & 0x00ff0000) >> 16), \
+ (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)(s & 0xff)
+#else
+#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
+#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \
+ (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
+#endif // Mac
+
+//
+// On the server side, the following exceptions are mapped to
+// the bad stub data exception if -error stub_data is used.
+//
+
+#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER \
+ ( (RpcExceptionCode() == STATUS_ACCESS_VIOLATION) || \
+ (RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \
+ (RpcExceptionCode() == RPC_X_BAD_STUB_DATA) )
+
+/////////////////////////////////////////////////////////////////////////////
+// Some stub helper functions.
+/////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////
+// Stub helper structures.
+////////////////////////////////////////////////////////////////////////////
+
+struct _MIDL_STUB_MESSAGE;
+struct _MIDL_STUB_DESC;
+struct _FULL_PTR_XLAT_TABLES;
+
+typedef unsigned char __RPC_FAR * RPC_BUFPTR;
+typedef unsigned long RPC_LENGTH;
+
+// Expression evaluation callback routine prototype.
+typedef void (__RPC_USER __RPC_FAR * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE __RPC_FAR * );
+
+typedef const unsigned char __RPC_FAR * PFORMAT_STRING;
+
+/*
+ * Multidimensional conformant/varying array struct.
+ */
+typedef struct
+ {
+ long Dimension;
+
+ /* These fields MUST be (unsigned long *) */
+ unsigned long __RPC_FAR * BufferConformanceMark;
+ unsigned long __RPC_FAR * BufferVarianceMark;
+
+ /* Count arrays, used for top level arrays in -Os stubs */
+ unsigned long __RPC_FAR * MaxCountArray;
+ unsigned long __RPC_FAR * OffsetArray;
+ unsigned long __RPC_FAR * ActualCountArray;
+ } ARRAY_INFO, __RPC_FAR *PARRAY_INFO;
+
+/*
+ * Pipe related definitions.
+ */
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_PULL_RTN)(
+ char __RPC_FAR * state,
+ void __RPC_FAR * buf,
+ unsigned long esize,
+ unsigned long __RPC_FAR * ecount );
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_PUSH_RTN)(
+ char __RPC_FAR * state,
+ void __RPC_FAR * buf,
+ unsigned long ecount );
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_ALLOC_RTN)(
+ char __RPC_FAR * state,
+ unsigned long bsize,
+ void __RPC_FAR * __RPC_FAR * buf,
+ unsigned long __RPC_FAR * bcount );
+
+
+typedef struct _GENERIC_PIPE_TYPE
+ {
+ NDR_PIPE_PULL_RTN pfnPull;
+ NDR_PIPE_PUSH_RTN pfnPush;
+ NDR_PIPE_ALLOC_RTN pfnAlloc;
+ char __RPC_FAR * pState;
+ } GENERIC_PIPE_TYPE;
+
+
+typedef struct {
+ int CurrentState;
+ int ElemsInChunk;
+ int ElemAlign;
+ int ElemWireSize;
+ int ElemMemSize;
+ int PartialBufferSize;
+ unsigned char __RPC_FAR * PartialElem;
+ int PartialElemSize;
+ int PartialOffset;
+ int EndOfPipe;
+ } NDR_PIPE_STATE;
+
+typedef struct _PIPE_MESSAGE
+ {
+ unsigned short Signature;
+ unsigned short PipeId;
+ GENERIC_PIPE_TYPE __RPC_FAR * pPipeType;
+ PFORMAT_STRING pTypeFormat;
+ unsigned short PipeStatus;
+ unsigned short PipeFlags;
+ struct _MIDL_STUB_MESSAGE __RPC_FAR * pStubMsg;
+ } NDR_PIPE_MESSAGE, __RPC_FAR * PNDR_PIPE_MESSAGE;
+
+typedef struct _NDR_PIPE_DESC
+ {
+ NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg;
+ short CurrentPipe;
+ short InPipes;
+ short OutPipes;
+ short TotalPipes;
+ short PipeVersion;
+ short Flags;
+ unsigned char __RPC_FAR * DispatchBuffer;
+ unsigned char __RPC_FAR * LastPartialBuffer;
+ unsigned long LastPartialSize;
+ unsigned char __RPC_FAR * BufferSave;
+ unsigned long LengthSave;
+ NDR_PIPE_STATE RuntimeState;
+ } NDR_PIPE_DESC, __RPC_FAR * PNDR_PIPE_DESC;
+
+
+/*
+ * MIDL Stub Message
+ */
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
+#include <pshpack4.h>
+#endif
+
+typedef struct _MIDL_STUB_MESSAGE
+ {
+ /* RPC message structure. */
+ PRPC_MESSAGE RpcMsg;
+
+ /* Pointer into RPC message buffer. */
+ unsigned char __RPC_FAR * Buffer;
+
+ /*
+ * These are used internally by the Ndr routines to mark the beginning
+ * and end of an incoming RPC buffer.
+ */
+ unsigned char __RPC_FAR * BufferStart;
+ unsigned char __RPC_FAR * BufferEnd;
+
+ /*
+ * Used internally by the Ndr routines as a place holder in the buffer.
+ * On the marshalling side it's used to mark the location where conformance
+ * size should be marshalled.
+ * On the unmarshalling side it's used to mark the location in the buffer
+ * used during pointer unmarshalling to base pointer offsets off of.
+ */
+ unsigned char __RPC_FAR * BufferMark;
+
+ /* Set by the buffer sizing routines. */
+ unsigned long BufferLength;
+
+ /* Set by the memory sizing routines. */
+ unsigned long MemorySize;
+
+ /* Pointer to user memory. */
+ unsigned char __RPC_FAR * Memory;
+
+ /* Is the Ndr routine begin called from a client side stub. */
+ int IsClient;
+
+ /* Can the buffer be re-used for memory on unmarshalling. */
+ int ReuseBuffer;
+
+ /* Holds the current pointer to an allocate all nodes memory block. */
+ unsigned char __RPC_FAR * AllocAllNodesMemory;
+
+ /* Used for debugging asserts only, remove later. */
+ unsigned char __RPC_FAR * AllocAllNodesMemoryEnd;
+
+ /*
+ * Stuff needed while handling complex structures
+ */
+
+ /* Ignore imbeded pointers while computing buffer or memory sizes. */
+ int IgnoreEmbeddedPointers;
+
+ /*
+ * This marks the location in the buffer where pointees of a complex
+ * struct reside.
+ */
+ unsigned char __RPC_FAR * PointerBufferMark;
+
+ /*
+ * Used to catch errors in SendReceive.
+ */
+ unsigned char fBufferValid;
+
+ /*
+ * Obsolete unused field (formerly MaxContextHandleNumber).
+ */
+ unsigned char Unused;
+
+ /*
+ * Used internally by the Ndr routines. Holds the max counts for
+ * a conformant array.
+ */
+ unsigned long MaxCount;
+
+ /*
+ * Used internally by the Ndr routines. Holds the offsets for a varying
+ * array.
+ */
+ unsigned long Offset;
+
+ /*
+ * Used internally by the Ndr routines. Holds the actual counts for
+ * a varying array.
+ */
+ unsigned long ActualCount;
+
+ /* Allocation and Free routine to be used by the Ndr routines. */
+ void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
+
+ /*
+ * Top of parameter stack. Used for "single call" stubs during marshalling
+ * to hold the beginning of the parameter list on the stack. Needed to
+ * extract parameters which hold attribute values for top level arrays and
+ * pointers.
+ */
+ unsigned char __RPC_FAR * StackTop;
+
+ /*
+ * Fields used for the transmit_as and represent_as objects.
+ * For represent_as the mapping is: presented=local, transmit=named.
+ */
+ unsigned char __RPC_FAR * pPresentedType;
+ unsigned char __RPC_FAR * pTransmitType;
+
+ /*
+ * When we first construct a binding on the client side, stick it
+ * in the rpcmessage and later call RpcGetBuffer, the handle field
+ * in the rpcmessage is changed. That's fine except that we need to
+ * have that original handle for use in unmarshalling context handles
+ * (the second argument in NDRCContextUnmarshall to be exact). So
+ * stash the contructed handle here and extract it when needed.
+ */
+ handle_t SavedHandle;
+
+ /*
+ * Pointer back to the stub descriptor. Use this to get all handle info.
+ */
+ const struct _MIDL_STUB_DESC __RPC_FAR * StubDesc;
+
+ /*
+ * Full pointer stuff.
+ */
+ struct _FULL_PTR_XLAT_TABLES __RPC_FAR * FullPtrXlatTables;
+
+ unsigned long FullPtrRefId;
+
+ /*
+ * flags
+ */
+
+ int fCheckBounds;
+
+ int fInDontFree :1;
+ int fDontCallFreeInst :1;
+ int fInOnlyParam :1;
+ int fHasReturn :1;
+
+ unsigned long dwDestContext;
+ void __RPC_FAR * pvDestContext;
+
+ NDR_SCONTEXT * SavedContextHandles;
+
+ long ParamNumber;
+
+ struct IRpcChannelBuffer __RPC_FAR * pRpcChannelBuffer;
+
+ PARRAY_INFO pArrayInfo;
+
+ /*
+ * This is where the Beta2 stub message ends.
+ */
+
+ unsigned long __RPC_FAR * SizePtrCountArray;
+ unsigned long __RPC_FAR * SizePtrOffsetArray;
+ unsigned long __RPC_FAR * SizePtrLengthArray;
+
+ /*
+ * Interpreter argument queue. Used on server side only.
+ */
+ void __RPC_FAR * pArgQueue;
+
+ unsigned long dwStubPhase;
+
+ /*
+ * Pipe descriptor, defined for the 4.0 release.
+ */
+
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc;
+
+ unsigned long Reserved[4];
+
+ /*
+ * Fields up to this point present since the 3.50 release.
+ */
+
+ } MIDL_STUB_MESSAGE, __RPC_FAR *PMIDL_STUB_MESSAGE;
+
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
+#include <poppack.h>
+#endif
+
+/*
+ * Generic handle bind/unbind routine pair.
+ */
+typedef void __RPC_FAR *
+ (__RPC_FAR __RPC_API * GENERIC_BINDING_ROUTINE)
+ (void __RPC_FAR *);
+typedef void
+ (__RPC_FAR __RPC_API * GENERIC_UNBIND_ROUTINE)
+ (void __RPC_FAR *, unsigned char __RPC_FAR *);
+
+typedef struct _GENERIC_BINDING_ROUTINE_PAIR
+ {
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_ROUTINE_PAIR, __RPC_FAR *PGENERIC_BINDING_ROUTINE_PAIR;
+
+typedef struct __GENERIC_BINDING_INFO
+ {
+ void __RPC_FAR * pObj;
+ unsigned int Size;
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_INFO, __RPC_FAR *PGENERIC_BINDING_INFO;
+
+// typedef EXPR_EVAL - see above
+// typedefs for xmit_as
+
+#if (defined(_MSC_VER)) && !defined(MIDL_PASS)
+// a Microsoft C++ compiler
+#define NDR_SHAREABLE __inline
+#else
+#define NDR_SHAREABLE static
+#endif
+
+
+typedef void (__RPC_FAR __RPC_USER * XMIT_HELPER_ROUTINE)
+ ( PMIDL_STUB_MESSAGE );
+
+typedef struct _XMIT_ROUTINE_QUINTUPLE
+ {
+ XMIT_HELPER_ROUTINE pfnTranslateToXmit;
+ XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
+ XMIT_HELPER_ROUTINE pfnFreeXmit;
+ XMIT_HELPER_ROUTINE pfnFreeInst;
+ } XMIT_ROUTINE_QUINTUPLE, __RPC_FAR *PXMIT_ROUTINE_QUINTUPLE;
+
+typedef unsigned long
+(__RPC_FAR __RPC_USER * USER_MARSHAL_SIZING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned long,
+ void __RPC_FAR * );
+
+typedef unsigned char __RPC_FAR *
+(__RPC_FAR __RPC_USER * USER_MARSHAL_MARSHALLING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR * ,
+ void __RPC_FAR * );
+
+typedef unsigned char __RPC_FAR *
+(__RPC_FAR __RPC_USER * USER_MARSHAL_UNMARSHALLING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR * ,
+ void __RPC_FAR * );
+
+typedef void (__RPC_FAR __RPC_USER * USER_MARSHAL_FREEING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ void __RPC_FAR * );
+
+typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
+ {
+ USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
+ USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
+ USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
+ USER_MARSHAL_FREEING_ROUTINE pfnFree;
+ } USER_MARSHAL_ROUTINE_QUADRUPLE;
+
+typedef struct _USER_MARSHAL_CB
+{
+ unsigned long Flags;
+ PMIDL_STUB_MESSAGE pStubMsg;
+ PFORMAT_STRING pReserve;
+} USER_MARSHAL_CB;
+
+
+#define USER_CALL_CTXT_MASK(f) ((f) & 0xff)
+#define GET_USER_DATA_REP(f) ((f) >> 16)
+
+typedef struct _MALLOC_FREE_STRUCT
+ {
+ void __RPC_FAR * (__RPC_FAR __RPC_USER * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_USER * pfnFree)(void __RPC_FAR *);
+ } MALLOC_FREE_STRUCT;
+
+typedef struct _COMM_FAULT_OFFSETS
+ {
+ short CommOffset;
+ short FaultOffset;
+ } COMM_FAULT_OFFSETS;
+
+/*
+ * MIDL Stub Descriptor
+ */
+
+typedef struct _MIDL_STUB_DESC
+ {
+
+ void __RPC_FAR * RpcInterfaceInformation;
+
+ void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
+
+ union
+ {
+ handle_t __RPC_FAR * pAutoHandle;
+ handle_t __RPC_FAR * pPrimitiveHandle;
+ PGENERIC_BINDING_INFO pGenericBindingInfo;
+ } IMPLICIT_HANDLE_INFO;
+
+ const NDR_RUNDOWN __RPC_FAR * apfnNdrRundownRoutines;
+ const GENERIC_BINDING_ROUTINE_PAIR __RPC_FAR * aGenericBindingRoutinePairs;
+
+ const EXPR_EVAL __RPC_FAR * apfnExprEval;
+
+ const XMIT_ROUTINE_QUINTUPLE __RPC_FAR * aXmitQuintuple;
+
+ const unsigned char __RPC_FAR * pFormatTypes;
+
+ int fCheckBounds;
+
+ /* Ndr library version. */
+ unsigned long Version;
+
+ /*
+ * Reserved for future use. (no reserves )
+ */
+
+ MALLOC_FREE_STRUCT __RPC_FAR * pMallocFreeStruct;
+
+ long MIDLVersion;
+
+ const COMM_FAULT_OFFSETS __RPC_FAR * CommFaultOffsets;
+
+ // New fields for version 3.0+
+
+ const USER_MARSHAL_ROUTINE_QUADRUPLE __RPC_FAR * aUserMarshalQuadruple;
+
+ long Reserved1;
+ long Reserved2;
+ long Reserved3;
+ long Reserved4;
+ long Reserved5;
+
+ } MIDL_STUB_DESC;
+
+typedef const MIDL_STUB_DESC __RPC_FAR * PMIDL_STUB_DESC;
+
+typedef void __RPC_FAR * PMIDL_XMIT_TYPE;
+
+/*
+ * MIDL Stub Format String. This is a const in the stub.
+ */
+#if !defined( RC_INVOKED )
+#pragma warning( disable:4200 )
+#endif
+typedef struct _MIDL_FORMAT_STRING
+ {
+ short Pad;
+ unsigned char Format[];
+ } MIDL_FORMAT_STRING;
+#if !defined( RC_INVOKED )
+#pragma warning( default:4200 )
+#endif
+
+/*
+ * Stub thunk used for some interpreted server stubs.
+ */
+typedef void (__RPC_FAR __RPC_API * STUB_THUNK)( PMIDL_STUB_MESSAGE );
+
+typedef long (__RPC_FAR __RPC_API * SERVER_ROUTINE)();
+
+/*
+ * Server Interpreter's information strucuture.
+ */
+typedef struct _MIDL_SERVER_INFO_
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ const SERVER_ROUTINE * DispatchTable;
+ PFORMAT_STRING ProcString;
+ const unsigned short * FmtStringOffset;
+ const STUB_THUNK * ThunkTable;
+ PFORMAT_STRING LocalFormatTypes;
+ PFORMAT_STRING LocalProcString;
+ const unsigned short * LocalFmtStringOffset;
+ } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
+
+/*
+ * Stubless object proxy information structure.
+ */
+typedef struct _MIDL_STUBLESS_PROXY_INFO
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ PFORMAT_STRING ProcFormatString;
+ const unsigned short __RPC_FAR * FormatStringOffset;
+ PFORMAT_STRING LocalFormatTypes;
+ PFORMAT_STRING LocalProcString;
+ const unsigned short __RPC_FAR * LocalFmtStringOffset;
+ } MIDL_STUBLESS_PROXY_INFO;
+
+typedef MIDL_STUBLESS_PROXY_INFO __RPC_FAR * PMIDL_STUBLESS_PROXY_INFO;
+
+/*
+ * This is the return value from NdrClientCall.
+ */
+typedef union _CLIENT_CALL_RETURN
+ {
+ void __RPC_FAR * Pointer;
+ long Simple;
+ } CLIENT_CALL_RETURN;
+
+/*
+ * Full pointer data structures.
+ */
+
+typedef enum
+ {
+ XLAT_SERVER = 1,
+ XLAT_CLIENT
+ } XLAT_SIDE;
+
+/*
+ * Stores the translation for the conversion from a full pointer into it's
+ * corresponding ref id.
+ */
+typedef struct _FULL_PTR_TO_REFID_ELEMENT
+ {
+ struct _FULL_PTR_TO_REFID_ELEMENT __RPC_FAR * Next;
+
+ void __RPC_FAR * Pointer;
+ unsigned long RefId;
+ unsigned char State;
+ } FULL_PTR_TO_REFID_ELEMENT, __RPC_FAR *PFULL_PTR_TO_REFID_ELEMENT;
+
+/*
+ * Full pointer translation tables.
+ */
+typedef struct _FULL_PTR_XLAT_TABLES
+ {
+ /*
+ * Ref id to pointer translation information.
+ */
+ struct
+ {
+ void __RPC_FAR *__RPC_FAR * XlatTable;
+ unsigned char __RPC_FAR * StateTable;
+ unsigned long NumberOfEntries;
+ } RefIdToPointer;
+
+ /*
+ * Pointer to ref id translation information.
+ */
+ struct
+ {
+ PFULL_PTR_TO_REFID_ELEMENT __RPC_FAR * XlatTable;
+ unsigned long NumberOfBuckets;
+ unsigned long HashMask;
+ } PointerToRefId;
+
+ /*
+ * Next ref id to use.
+ */
+ unsigned long NextRefId;
+
+ /*
+ * Keep track of the translation size we're handling : server or client.
+ * This tells us when we have to do reverse translations when we insert
+ * new translations. On the server we must insert a pointer-to-refid
+ * translation whenever we insert a refid-to-pointer translation, and
+ * vica versa for the client.
+ */
+ XLAT_SIDE XlatSide;
+ } FULL_PTR_XLAT_TABLES, __RPC_FAR *PFULL_PTR_XLAT_TABLES;
+
+/***************************************************************************
+ ** New MIDL 2.0 Ndr routine templates
+ ***************************************************************************/
+
+/*
+ * Marshall routines
+ */
+
+void RPC_ENTRY
+NdrSimpleTypeMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned char FormatChar
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSimpleStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrHardStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrFixedArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrByteCountPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrXmitOrRepAsMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo interface pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrInterfacePointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Context handles */
+
+void RPC_ENTRY
+NdrClientContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT ContextHandle,
+ int fCheck
+ );
+
+void RPC_ENTRY
+NdrServerContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_SCONTEXT ContextHandle,
+ NDR_RUNDOWN RundownRoutine
+ );
+
+/*
+ * Unmarshall routines
+ */
+
+void RPC_ENTRY
+NdrSimpleTypeUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned char FormatChar
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Structures */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSimpleStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrHardStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Arrays */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrFixedArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Strings */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Unions */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Byte count pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrByteCountPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Transmit as and represent as*/
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrXmitOrRepAsUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* User_marshal */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Cairo interface pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrInterfacePointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Context handles */
+
+void RPC_ENTRY
+NdrClientContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT __RPC_FAR * pContextHandle,
+ RPC_BINDING_HANDLE BindHandle
+ );
+
+NDR_SCONTEXT RPC_ENTRY
+NdrServerContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+/*
+ * Buffer sizing routines
+ */
+
+void RPC_ENTRY
+NdrPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+void RPC_ENTRY
+NdrSimpleStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrHardStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+void RPC_ENTRY
+NdrFixedArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+void RPC_ENTRY
+NdrConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+void RPC_ENTRY
+NdrEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count pointer */
+
+void RPC_ENTRY
+NdrByteCountPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+void RPC_ENTRY
+NdrXmitOrRepAsBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+void RPC_ENTRY
+NdrUserMarshalBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+void RPC_ENTRY
+NdrInterfacePointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+// Context Handle size
+//
+void RPC_ENTRY
+NdrContextHandleSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Memory sizing routines
+ */
+
+unsigned long RPC_ENTRY
+NdrPointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+unsigned long RPC_ENTRY
+NdrSimpleStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantVaryingStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrHardStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrComplexStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+unsigned long RPC_ENTRY
+NdrFixedArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrComplexArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+unsigned long RPC_ENTRY
+NdrConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrNonConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+unsigned long RPC_ENTRY
+NdrEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrNonEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+unsigned long RPC_ENTRY
+NdrXmitOrRepAsMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+unsigned long RPC_ENTRY
+NdrUserMarshalMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+unsigned long RPC_ENTRY
+NdrInterfacePointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Freeing routines
+ */
+
+void RPC_ENTRY
+NdrPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+void RPC_ENTRY
+NdrSimpleStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrHardStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+void RPC_ENTRY
+NdrFixedArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+void RPC_ENTRY
+NdrEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count */
+
+void RPC_ENTRY
+NdrByteCountPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+void RPC_ENTRY
+NdrXmitOrRepAsFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+void RPC_ENTRY
+NdrUserMarshalFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+void RPC_ENTRY
+NdrInterfacePointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Endian conversion routine.
+ */
+
+void RPC_ENTRY
+NdrConvert2(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ long NumberParams
+ );
+
+void RPC_ENTRY
+NdrConvert(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+#define USER_MARSHAL_FC_BYTE 1
+#define USER_MARSHAL_FC_CHAR 2
+#define USER_MARSHAL_FC_SMALL 3
+#define USER_MARSHAL_FC_USMALL 4
+#define USER_MARSHAL_FC_WCHAR 5
+#define USER_MARSHAL_FC_SHORT 6
+#define USER_MARSHAL_FC_USHORT 7
+#define USER_MARSHAL_FC_LONG 8
+#define USER_MARSHAL_FC_ULONG 9
+#define USER_MARSHAL_FC_FLOAT 10
+#define USER_MARSHAL_FC_HYPER 11
+#define USER_MARSHAL_FC_DOUBLE 12
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalSimpleTypeConvert(
+ unsigned long * pFlags,
+ unsigned char * pBuffer,
+ unsigned char FormatChar
+ );
+
+/*
+ * Auxilary routines
+ */
+
+void RPC_ENTRY
+NdrClientInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+void RPC_ENTRY
+NdrServerInitializePartial(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned long RequestedBufferSize
+ );
+
+void RPC_ENTRY
+NdrClientInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitializeUnmarshall (
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PRPC_MESSAGE pRpcMsg
+ );
+
+void RPC_ENTRY
+NdrServerInitializeMarshall (
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNsGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrGetPipeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle );
+
+void RPC_ENTRY
+NdrGetPartialBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR* pBufferEnd
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNsSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pBufferEnd,
+ RPC_BINDING_HANDLE __RPC_FAR * pAutoHandle
+ );
+
+void RPC_ENTRY
+NdrPipeSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_PIPE_DESC * pPipeDesc
+ );
+
+void RPC_ENTRY
+NdrFreeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+/*
+ * Pipe specific calls
+ */
+
+void RPC_ENTRY
+NdrPipesInitialize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pParamDesc,
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc,
+ NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg,
+ char __RPC_FAR * pStackTop,
+ unsigned long NumberParams );
+
+void
+NdrMarkNextActivePipe(
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc,
+ unsigned int DirectionMask );
+
+void RPC_ENTRY
+NdrPipePull(
+ char __RPC_FAR * pState,
+ void __RPC_FAR * buf,
+ unsigned long esize,
+ unsigned long __RPC_FAR * ecount );
+
+void RPC_ENTRY
+NdrPipePush(
+ char __RPC_FAR * pState,
+ void __RPC_FAR * buf,
+ unsigned long ecount );
+
+void RPC_ENTRY
+NdrIsAppDoneWithPipes(
+ NDR_PIPE_DESC * pPipeDesc
+ );
+
+void RPC_ENTRY
+NdrPipesDone(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+/*
+ * Interpeter calls.
+ */
+
+/* client */
+
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+NdrClientCall2(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+NdrClientCall(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+/* server */
+typedef enum {
+ STUB_UNMARSHAL,
+ STUB_CALL_SERVER,
+ STUB_MARSHAL,
+ STUB_CALL_SERVER_NO_HRESULT
+}STUB_PHASE;
+
+typedef enum {
+ PROXY_CALCSIZE,
+ PROXY_GETBUFFER,
+ PROXY_MARSHAL,
+ PROXY_SENDRECEIVE,
+ PROXY_UNMARSHAL
+}PROXY_PHASE;
+
+long RPC_ENTRY
+NdrStubCall2(
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long __RPC_FAR * pdwStubPhase
+ );
+
+void RPC_ENTRY
+NdrServerCall2(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+long RPC_ENTRY
+NdrStubCall (
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long __RPC_FAR * pdwStubPhase
+ );
+
+void RPC_ENTRY
+NdrServerCall(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+int RPC_ENTRY
+NdrServerUnmarshall(
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ void __RPC_FAR * pParamList
+ );
+
+void RPC_ENTRY
+NdrServerMarshall(
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Comm and Fault status */
+
+RPC_STATUS RPC_ENTRY
+NdrMapCommAndFaultStatus(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long __RPC_FAR * pCommStatus,
+ unsigned long __RPC_FAR * pFaultStatus,
+ RPC_STATUS Status
+ );
+
+/* Helper routines */
+
+int RPC_ENTRY
+NdrSH_UPDecision(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ RPC_BUFPTR pBuffer
+ );
+
+int RPC_ENTRY
+NdrSH_TLUPDecision(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem
+ );
+
+int RPC_ENTRY
+NdrSH_TLUPDecisionBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem
+ );
+
+int RPC_ENTRY
+NdrSH_IfAlloc(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+int RPC_ENTRY
+NdrSH_IfAllocRef(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+int RPC_ENTRY
+NdrSH_IfAllocSet(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_IfCopy(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_IfAllocCopy(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+unsigned long RPC_ENTRY
+NdrSH_Copy(
+ unsigned char __RPC_FAR * pStubMsg,
+ unsigned char __RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+void RPC_ENTRY
+NdrSH_IfFree(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR * pPtr );
+
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_StringMarshall(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned long Count,
+ int Size );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_StringUnMarshall(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR *__RPC_FAR * pMemory,
+ int Size );
+
+/****************************************************************************
+ MIDL 2.0 memory package: rpc_ss_* rpc_sm_*
+ ****************************************************************************/
+
+typedef void __RPC_FAR * RPC_SS_THREAD_HANDLE;
+
+typedef void __RPC_FAR * __RPC_API
+RPC_CLIENT_ALLOC (
+ IN size_t Size
+ );
+
+typedef void __RPC_API
+RPC_CLIENT_FREE (
+ IN void __RPC_FAR * Ptr
+ );
+
+/*++
+ RpcSs* package
+--*/
+
+void __RPC_FAR * RPC_ENTRY
+RpcSsAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+RpcSsDisableAllocate (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsEnableAllocate (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+RPC_SS_THREAD_HANDLE RPC_ENTRY
+RpcSsGetThreadHandle (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsSetClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
+ );
+
+void RPC_ENTRY
+RpcSsSetThreadHandle (
+ IN RPC_SS_THREAD_HANDLE Id
+ );
+
+void RPC_ENTRY
+RpcSsSwapClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
+ OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
+ OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
+ );
+
+/*++
+ RpcSm* package
+--*/
+
+void __RPC_FAR * RPC_ENTRY
+RpcSmAllocate (
+ IN size_t Size,
+ OUT RPC_STATUS __RPC_FAR * pStatus
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmClientFree (
+ IN void __RPC_FAR * pNodeToFree
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmDestroyClientContext (
+ IN void __RPC_FAR * __RPC_FAR * ContextHandle
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmDisableAllocate (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmEnableAllocate (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+RPC_SS_THREAD_HANDLE RPC_ENTRY
+RpcSmGetThreadHandle (
+ OUT RPC_STATUS __RPC_FAR * pStatus
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSetClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSetThreadHandle (
+ IN RPC_SS_THREAD_HANDLE Id
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSwapClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
+ OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
+ OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
+ );
+
+/*++
+ Ndr stub entry points
+--*/
+
+void RPC_ENTRY
+NdrRpcSsEnableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void RPC_ENTRY
+NdrRpcSsDisableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void RPC_ENTRY
+NdrRpcSmSetClientToOsf(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void __RPC_FAR * RPC_ENTRY
+NdrRpcSmClientAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrRpcSmClientFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+void __RPC_FAR * RPC_ENTRY
+NdrRpcSsDefaultAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrRpcSsDefaultFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+/****************************************************************************
+ end of memory package: rpc_ss_* rpc_sm_*
+ ****************************************************************************/
+
+/****************************************************************************
+ * Full Pointer APIs
+ ****************************************************************************/
+
+PFULL_PTR_XLAT_TABLES RPC_ENTRY
+NdrFullPointerXlatInit(
+ unsigned long NumberOfPointers,
+ XLAT_SIDE XlatSide
+ );
+
+void RPC_ENTRY
+NdrFullPointerXlatFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables
+ );
+
+int RPC_ENTRY
+NdrFullPointerQueryPointer(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ void __RPC_FAR * pPointer,
+ unsigned char QueryType,
+ unsigned long __RPC_FAR * pRefId
+ );
+
+int RPC_ENTRY
+NdrFullPointerQueryRefId(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ unsigned long RefId,
+ unsigned char QueryType,
+ void __RPC_FAR *__RPC_FAR * ppPointer
+ );
+
+void RPC_ENTRY
+NdrFullPointerInsertRefId(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ unsigned long RefId,
+ void __RPC_FAR * pPointer
+ );
+
+int RPC_ENTRY
+NdrFullPointerFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ void __RPC_FAR * Pointer
+ );
+
+void __RPC_FAR * RPC_ENTRY
+NdrAllocate(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ size_t Len
+ );
+
+void RPC_ENTRY
+NdrClearOutParameters(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ void __RPC_FAR * ArgAddr
+ );
+
+
+/****************************************************************************
+ * Proxy APIs
+ ****************************************************************************/
+
+void __RPC_FAR * RPC_ENTRY
+NdrOleAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrOleFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+#ifdef CONST_VTABLE
+#define CONST_VTBL const
+#else
+#define CONST_VTBL
+#endif
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for DOS, Windows and Mac.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
+#pragma pack()
+#endif
+
+#endif /* __RPCNDR_H__ */
+
+
+
+
+
diff --git a/public/sdk/rpc16/dos/inc/rpcnsi.h b/public/sdk/rpc16/dos/inc/rpcnsi.h
new file mode 100644
index 000000000..362b5bdb4
--- /dev/null
+++ b/public/sdk/rpc16/dos/inc/rpcnsi.h
@@ -0,0 +1,509 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcnsi.h
+
+Abstract:
+
+ This file contains the types and function definitions to use the
+ Name Service Independent APIs.
+
+--*/
+
+#ifndef __RPCNSI_H__
+#define __RPCNSI_H__
+
+typedef void __RPC_FAR * RPC_NS_HANDLE;
+
+#define RPC_C_NS_SYNTAX_DEFAULT 0
+#define RPC_C_NS_SYNTAX_DCE 3
+
+#define RPC_C_PROFILE_DEFAULT_ELT 0
+#define RPC_C_PROFILE_ALL_ELT 1
+#define RPC_C_PROFILE_MATCH_BY_IF 2
+#define RPC_C_PROFILE_MATCH_BY_MBR 3
+#define RPC_C_PROFILE_MATCH_BY_BOTH 4
+
+#define RPC_C_NS_DEFAULT_EXP_AGE -1
+
+/* Server APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingExportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN RPC_BINDING_VECTOR __RPC_FAR * BindingVec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingUnexportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingExportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN RPC_BINDING_VECTOR __RPC_FAR * BindingVec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingUnexportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+#endif
+
+/* Client APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned long BindingMaxCount OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned long BindingMaxCount OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupNext(
+ IN RPC_NS_HANDLE LookupContext,
+ OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVec
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+
+/* Group APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupDeleteA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrAddA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrRemoveA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqBeginA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqNextA(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupDeleteW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrAddW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrRemoveW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqBeginW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqNextW(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Profile APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileDeleteA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltAddA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName,
+ IN unsigned long Priority,
+ IN unsigned char __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltRemoveA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqBeginA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqNextA(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName,
+ OUT unsigned long __RPC_FAR * Priority,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileDeleteW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltAddW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName,
+ IN unsigned long Priority,
+ IN unsigned short __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltRemoveW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqBeginW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqNextW(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName,
+ OUT unsigned long __RPC_FAR * Priority,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Entry object APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqNext(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT UUID __RPC_FAR * ObjUuid
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Management and MISC APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryExpandNameA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ExpandedName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtBindingUnexportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryCreateA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryDeleteA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryInqIfIdsA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVec
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtHandleSetExpAge(
+ IN RPC_NS_HANDLE NsHandle,
+ IN unsigned long ExpirationAge
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtInqExpAge(
+ OUT unsigned long __RPC_FAR * ExpirationAge
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtSetExpAge(
+ IN unsigned long ExpirationAge
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryExpandNameW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ExpandedName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtBindingUnexportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryCreateW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryDeleteW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryInqIfIdsW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVec
+ );
+
+#endif
+
+/* Client API's implemented in wrappers. */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportNext(
+ IN RPC_NS_HANDLE ImportContext,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingSelect(
+ IN OUT RPC_BINDING_VECTOR __RPC_FAR * BindingVec,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#ifdef UNICODE
+
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginW
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginW
+#define RpcNsBindingExport RpcNsBindingExportW
+#define RpcNsBindingUnexport RpcNsBindingUnexportW
+#define RpcNsGroupDelete RpcNsGroupDeleteW
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddW
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveW
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginW
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextW
+#define RpcNsEntryExpandName RpcNsEntryExpandNameW
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginW
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportW
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateW
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteW
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsW
+#define RpcNsProfileDelete RpcNsProfileDeleteW
+#define RpcNsProfileEltAdd RpcNsProfileEltAddW
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveW
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginW
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextW
+
+#else
+
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginA
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginA
+#define RpcNsBindingExport RpcNsBindingExportA
+#define RpcNsBindingUnexport RpcNsBindingUnexportA
+#define RpcNsGroupDelete RpcNsGroupDeleteA
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddA
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveA
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginA
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextA
+#define RpcNsEntryExpandName RpcNsEntryExpandNameA
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginA
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportA
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateA
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteA
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsA
+#define RpcNsProfileDelete RpcNsProfileDeleteA
+#define RpcNsProfileEltAdd RpcNsProfileEltAddA
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveA
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginA
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextA
+
+#endif /* UNICODE */
+
+#endif /* __RPCNSI_H__ */
diff --git a/public/sdk/rpc16/dos/inc/rpcnsip.h b/public/sdk/rpc16/dos/inc/rpcnsip.h
new file mode 100644
index 000000000..0db0140b0
--- /dev/null
+++ b/public/sdk/rpc16/dos/inc/rpcnsip.h
@@ -0,0 +1,72 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcnsip.h
+
+Abstract:
+
+ This file contains the types and function definitions to use the
+ to implement the autohandle features of the runtime.
+
+--*/
+
+#ifndef __RPCNSIP_H__
+#define __RPCNSIP_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct
+{
+ RPC_NS_HANDLE LookupContext;
+ RPC_BINDING_HANDLE ProposedHandle;
+ RPC_BINDING_VECTOR * Bindings;
+
+} RPC_IMPORT_CONTEXT_P, * PRPC_IMPORT_CONTEXT_P;
+
+
+/* Stub Auto Binding routines. */
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsGetBuffer(
+ IN PRPC_MESSAGE Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsSendReceive(
+ IN PRPC_MESSAGE Message,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Handle
+ );
+
+void RPC_ENTRY
+I_RpcNsRaiseException(
+ IN PRPC_MESSAGE Message,
+ IN RPC_STATUS Status
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcReBindBuffer(
+ IN PRPC_MESSAGE Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_NsServerBindSearch(
+ );
+
+RPC_STATUS RPC_ENTRY
+I_NsClientBindSearch(
+ );
+
+void RPC_ENTRY
+I_NsClientBindDone(
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RPCNSIP_H__ */
diff --git a/public/sdk/rpc16/dos/inc/rpcx86.h b/public/sdk/rpc16/dos/inc/rpcx86.h
new file mode 100644
index 000000000..8f5088c93
--- /dev/null
+++ b/public/sdk/rpc16/dos/inc/rpcx86.h
@@ -0,0 +1,74 @@
+/*********************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1991 **/
+/** **/
+/** Exceptions package for C for DOS/WIN/OS2 **/
+/** **/
+/*********************************************************/
+
+#ifndef __RPCx86_H__
+#define __RPCx86_H__
+
+typedef struct _ExceptionBuff {
+ int registers[RPCXCWORD];
+ struct _ExceptionBuff __RPC_FAR *pExceptNext;
+
+} ExceptionBuff, __RPC_FAR *pExceptionBuff;
+
+int RPC_ENTRY RpcSetException(pExceptionBuff);
+void RPC_ENTRY RpcLeaveException(void);
+
+#define RpcTryExcept \
+ { \
+ int _exception_code; \
+ ExceptionBuff exception; \
+ \
+ _exception_code = RpcSetException(&exception); \
+ \
+ if (!_exception_code) \
+ {
+
+// trystmts
+
+#define RpcExcept(expr) \
+ RpcLeaveException(); \
+ } \
+ else \
+ { \
+ if (!(expr)) \
+ RpcRaiseException(_exception_code);
+
+// exceptstmts
+
+#define RpcEndExcept \
+ } \
+ }
+
+#define RpcTryFinally \
+ { \
+ int _abnormal_termination; \
+ ExceptionBuff exception; \
+ \
+ _abnormal_termination = RpcSetException(&exception); \
+ \
+ if (!_abnormal_termination) \
+ {
+
+// trystmts
+
+#define RpcFinally \
+ RpcLeaveException(); \
+ }
+
+// finallystmts
+
+#define RpcEndFinally \
+ if (_abnormal_termination) \
+ RpcRaiseException(_abnormal_termination); \
+ }
+
+#define RpcExceptionCode() _exception_code
+#define RpcAbnormalTermination() _abnormal_termination
+
+#endif // __RPCx86_H__
+ \ No newline at end of file
diff --git a/public/sdk/rpc16/mac/inc/midles.h b/public/sdk/rpc16/mac/inc/midles.h
new file mode 100644
index 000000000..b64e4fe61
--- /dev/null
+++ b/public/sdk/rpc16/mac/inc/midles.h
@@ -0,0 +1,218 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ midles.h
+
+Abstract:
+
+ This module contains definitions needed for encoding/decoding
+ support (serializing/deserializing a.k.a. pickling).
+
+--*/
+
+#ifndef __MIDLES_H__
+#define __MIDLES_H__
+
+#include <rpcndr.h>
+
+//
+// Set the packing level for RPC structures for Dos and Windows.
+//
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack(2)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pickling support
+ */
+typedef enum
+{
+ MES_ENCODE,
+ MES_DECODE,
+} MIDL_ES_CODE;
+
+typedef enum
+{
+ MES_INCREMENTAL_HANDLE,
+ MES_FIXED_BUFFER_HANDLE,
+ MES_DYNAMIC_BUFFER_HANDLE
+} MIDL_ES_HANDLE_STYLE;
+
+
+typedef void (__RPC_USER * MIDL_ES_ALLOC )
+ ( IN OUT void __RPC_FAR * state,
+ OUT char __RPC_FAR * __RPC_FAR * pbuffer,
+ IN OUT unsigned int __RPC_FAR * psize );
+
+typedef void (__RPC_USER * MIDL_ES_WRITE)
+ ( IN OUT void __RPC_FAR * state,
+ IN char __RPC_FAR * buffer,
+ IN unsigned int size );
+
+typedef void (__RPC_USER * MIDL_ES_READ)
+ ( IN OUT void __RPC_FAR * state,
+ OUT char __RPC_FAR * __RPC_FAR * pbuffer,
+ IN OUT unsigned int __RPC_FAR * psize );
+
+typedef struct _MIDL_ES_MESSAGE
+{
+ MIDL_STUB_MESSAGE StubMsg;
+ MIDL_ES_CODE Operation;
+ void __RPC_FAR * UserState;
+ unsigned long MesVersion:8;
+ unsigned long HandleStyle:8;
+ unsigned long HandleFlags:8;
+ unsigned long Reserve:8;
+ MIDL_ES_ALLOC Alloc;
+ MIDL_ES_WRITE Write;
+ MIDL_ES_READ Read;
+ unsigned char __RPC_FAR * Buffer;
+ unsigned long BufferSize;
+ unsigned char __RPC_FAR * __RPC_FAR * pDynBuffer;
+ unsigned long __RPC_FAR * pEncodedSize;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ unsigned long ProcNumber;
+ unsigned long AlienDataRep;
+ unsigned long IncrDataSize;
+ unsigned long ByteCount;
+} MIDL_ES_MESSAGE, __RPC_FAR * PMIDL_ES_MESSAGE;
+
+typedef PMIDL_ES_MESSAGE MIDL_ES_HANDLE;
+
+RPC_STATUS RPC_ENTRY
+MesEncodeIncrementalHandleCreate(
+ void __RPC_FAR * UserState,
+ MIDL_ES_ALLOC AllocFn,
+ MIDL_ES_WRITE WriteFn,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesDecodeIncrementalHandleCreate(
+ void __RPC_FAR * UserState,
+ MIDL_ES_READ ReadFn,
+ handle_t __RPC_FAR * pHandle );
+
+
+RPC_STATUS RPC_ENTRY
+MesIncrementalHandleReset(
+ handle_t Handle,
+ void __RPC_FAR * UserState,
+ MIDL_ES_ALLOC AllocFn,
+ MIDL_ES_WRITE WriteFn,
+ MIDL_ES_READ ReadFn,
+ MIDL_ES_CODE Operation );
+
+
+RPC_STATUS RPC_ENTRY
+MesEncodeFixedBufferHandleCreate(
+ char __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ unsigned long __RPC_FAR * pEncodedSize,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesEncodeDynBufferHandleCreate(
+ char __RPC_FAR * __RPC_FAR * pBuffer,
+ unsigned long __RPC_FAR * pEncodedSize,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesDecodeBufferHandleCreate(
+ char __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ handle_t __RPC_FAR * pHandle );
+
+
+RPC_STATUS RPC_ENTRY
+MesBufferHandleReset(
+ handle_t Handle,
+ unsigned long HandleStyle,
+ MIDL_ES_CODE Operation,
+ char __RPC_FAR * __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ unsigned long __RPC_FAR * pEncodedSize );
+
+
+RPC_STATUS RPC_ENTRY
+MesHandleFree( handle_t Handle );
+
+RPC_STATUS RPC_ENTRY
+MesInqProcEncodingId(
+ handle_t Handle,
+ PRPC_SYNTAX_IDENTIFIER pInterfaceId,
+ unsigned long __RPC_FAR * pProcNum );
+
+
+#if defined(_MIPS_) || defined(_ALPHA_) || defined(_PPC_)
+#define __RPC_UNALIGNED __unaligned
+#else
+#define __RPC_UNALIGNED
+#endif
+
+void RPC_ENTRY I_NdrMesMessageInit( PMIDL_STUB_MESSAGE );
+
+size_t RPC_ENTRY
+NdrMesSimpleTypeAlignSize ( handle_t );
+
+void RPC_ENTRY
+NdrMesSimpleTypeDecode(
+ handle_t Handle,
+ void __RPC_FAR * pObject,
+ short Size );
+
+void RPC_ENTRY
+NdrMesSimpleTypeEncode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ void __RPC_FAR * pObject,
+ short Size );
+
+
+size_t RPC_ENTRY
+NdrMesTypeAlignSize(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_ENTRY
+NdrMesTypeEncode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_ENTRY
+NdrMesTypeDecode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_VAR_ENTRY
+NdrMesProcEncodeDecode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ ... );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for DOS and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack()
+#endif
+
+#endif /* __MIDLES_H__ */
diff --git a/public/sdk/rpc16/mac/inc/rpc.h b/public/sdk/rpc16/mac/inc/rpc.h
new file mode 100644
index 000000000..6b1bfafde
--- /dev/null
+++ b/public/sdk/rpc16/mac/inc/rpc.h
@@ -0,0 +1,71 @@
+/*++
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ rpc.h
+
+Abstract:
+
+ Master include file for RPC applications.
+
+--*/
+
+#ifndef __RPC_H__
+#define __RPC_H__
+
+// Set the packing level for RPC structures.
+
+#pragma pack(2)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __RPC_MAC__
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+typedef long RPC_STATUS;
+
+#include <setjmp.h>
+
+#define RPCXCWORD (sizeof(jmp_buf)/sizeof(int))
+
+#define __RPC_FAR
+#define __RPC_API __stdcall
+#define __RPC_USER __stdcall
+#define __RPC_STUB __stdcall
+#define RPC_ENTRY __stdcall
+
+typedef void * I_RPC_HANDLE;
+#pragma warning( disable: 4005 )
+#include "rpcdce.h"
+#include "rpcnsi.h"
+#include "rpcerr.h"
+#include "rpcmac.h"
+#pragma warning( default : 4005 )
+
+typedef void (RPC_ENTRY *MACYIELDCALLBACK)(/*OSErr*/ short *) ;
+RPC_STATUS RPC_ENTRY
+RpcMacSetYieldInfo(
+ MACYIELDCALLBACK pfnCallback) ;
+
+#ifdef __cplusplus
+}
+#endif
+
+#if !defined(UNALIGNED)
+#define UNALIGNED
+#endif
+
+// Reset the packing level.
+#pragma pack()
+
+#endif // __RPC_H__
+ \ No newline at end of file
diff --git a/public/sdk/rpc16/mac/inc/rpcdce.h b/public/sdk/rpc16/mac/inc/rpcdce.h
new file mode 100644
index 000000000..099457ea4
--- /dev/null
+++ b/public/sdk/rpc16/mac/inc/rpcdce.h
@@ -0,0 +1,1618 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcdce.h
+
+Abstract:
+
+ This module contains the DCE RPC runtime APIs.
+
+--*/
+
+#ifndef __RPCDCE_H__
+#define __RPCDCE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IN
+#define OUT
+#define OPTIONAL
+
+/*typedef char small;*/
+/*typedef unsigned char byte;*/
+/*typedef unsigned char boolean;*/
+
+typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
+typedef RPC_BINDING_HANDLE handle_t;
+#define rpc_binding_handle_t RPC_BINDING_HANDLE
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#ifndef UUID_DEFINED
+#define UUID_DEFINED
+typedef GUID UUID;
+#ifndef uuid_t
+#define uuid_t UUID
+#endif
+#endif
+
+typedef struct _RPC_BINDING_VECTOR
+{
+ unsigned long Count;
+ RPC_BINDING_HANDLE BindingH[1];
+} RPC_BINDING_VECTOR;
+#ifndef rpc_binding_vector_t
+#define rpc_binding_vector_t RPC_BINDING_VECTOR
+#endif
+
+typedef struct _UUID_VECTOR
+{
+ unsigned long Count;
+ UUID *Uuid[1];
+} UUID_VECTOR;
+#ifndef uuid_vector_t
+#define uuid_vector_t UUID_VECTOR
+#endif
+
+typedef void __RPC_FAR * RPC_IF_HANDLE;
+
+#ifndef IFID_DEFINED
+#define IFID_DEFINED
+typedef struct _RPC_IF_ID
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_IF_ID;
+#endif
+
+#define RPC_C_BINDING_INFINITE_TIMEOUT 10
+#define RPC_C_BINDING_MIN_TIMEOUT 0
+#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
+#define RPC_C_BINDING_MAX_TIMEOUT 9
+
+#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
+
+#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
+#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
+
+#define RPC_C_BIND_TO_ALL_NICS 1
+#define RPC_C_USE_INTERNET_PORT 1
+#define RPC_C_USE_INTRANET_PORT 2
+
+#ifdef RPC_UNICODE_SUPPORTED
+typedef struct _RPC_PROTSEQ_VECTORA
+{
+ unsigned int Count;
+ unsigned char __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTORA;
+
+typedef struct _RPC_PROTSEQ_VECTORW
+{
+ unsigned int Count;
+ unsigned short __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTORW;
+
+#ifdef UNICODE
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
+#else /* UNICODE */
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+typedef struct _RPC_PROTSEQ_VECTOR
+{
+ unsigned int Count;
+ unsigned char __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTOR;
+
+#endif /* RPC_UNICODE_SUPPORTED */
+typedef struct _RPC_POLICY {
+ unsigned int Length ;
+ unsigned long EndpointFlags ;
+ unsigned long NICFlags ;
+ } RPC_POLICY, __RPC_FAR *PRPC_POLICY ;
+
+typedef void __RPC_USER
+RPC_OBJECT_INQ_FN (
+ IN UUID __RPC_FAR * ObjectUuid,
+ OUT UUID __RPC_FAR * TypeUuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+typedef RPC_STATUS
+RPC_IF_CALLBACK_FN (
+ IN RPC_IF_HANDLE InterfaceUuid,
+ IN void *Context
+ ) ;
+
+#define RPC_MGR_EPV void
+
+typedef struct
+{
+ unsigned int Count;
+ unsigned long Stats[1];
+} RPC_STATS_VECTOR;
+
+#define RPC_C_STATS_CALLS_IN 0
+#define RPC_C_STATS_CALLS_OUT 1
+#define RPC_C_STATS_PKTS_IN 2
+#define RPC_C_STATS_PKTS_OUT 3
+
+typedef struct
+{
+ unsigned long Count;
+ RPC_IF_ID __RPC_FAR * IfId[1];
+} RPC_IF_ID_VECTOR;
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingCopy (
+ IN RPC_BINDING_HANDLE SourceBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingFree (
+ IN OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+/* client */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBindingA (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBindingW (
+ IN unsigned short __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#ifdef UNICODE
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingW
+#else /* UNICODE */
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBinding (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcBindingInqObject (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT UUID __RPC_FAR * ObjectUuid
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingReset (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* RpcBindingServerFromClient : UNSUPPORTED */
+/* RpcBindingSetAuthInfo */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingSetObject (
+ IN RPC_BINDING_HANDLE Binding,
+ IN UUID __RPC_FAR * ObjectUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqDefaultProtectLevel(
+ IN unsigned long AuthnSvc,
+ OUT unsigned long __RPC_FAR *AuthnLevel
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBindingA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBindingW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+#ifdef UNICODE
+#define RpcBindingToStringBinding RpcBindingToStringBindingW
+#else /* UNICODE */
+#define RpcBindingToStringBinding RpcBindingToStringBindingA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBinding (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcBindingVectorFree (
+ IN OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingComposeA (
+ IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned char __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned char __RPC_FAR * Options OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingComposeW (
+ IN unsigned short __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned short __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned short __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned short __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned short __RPC_FAR * Options OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcStringBindingCompose RpcStringBindingComposeW
+#else /* UNICODE */
+#define RpcStringBindingCompose RpcStringBindingComposeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingCompose (
+ IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned char __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned char __RPC_FAR * Options OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParseA (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParseW (
+ IN unsigned short __RPC_FAR * StringBinding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcStringBindingParse RpcStringBindingParseW
+#else /* UNICODE */
+#define RpcStringBindingParse RpcStringBindingParseA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParse (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringFreeA (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringFreeW (
+ IN OUT unsigned short __RPC_FAR * __RPC_FAR * String
+ );
+
+#ifdef UNICODE
+#define RpcStringFree RpcStringFreeW
+#else /* UNICODE */
+#define RpcStringFree RpcStringFreeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringFree (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcIfInqId (
+ IN RPC_IF_HANDLE RpcIfHandle,
+ OUT RPC_IF_ID __RPC_FAR * RpcIfId
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValidA (
+ IN unsigned char __RPC_FAR * Protseq
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValidW (
+ IN unsigned short __RPC_FAR * Protseq
+ );
+
+#ifdef UNICODE
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidW
+#else /* UNICODE */
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValid (
+ IN unsigned char __RPC_FAR * Protseq
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqComTimeout (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned int __RPC_FAR * Timeout
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetComTimeout (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned int Timeout
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetCancelTimeout(
+ long Timeout
+ );
+
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqsA (
+ OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqsW (
+ OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#ifdef UNICODE
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsW
+#else /* UNICODE */
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqs (
+ OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectInqType (
+ IN UUID __RPC_FAR * ObjUuid,
+ OUT UUID __RPC_FAR * TypeUuid OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectSetInqFn (
+ IN RPC_OBJECT_INQ_FN __RPC_FAR * InquiryFn
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectSetType (
+ IN UUID __RPC_FAR * ObjUuid,
+ IN UUID __RPC_FAR * TypeUuid OPTIONAL
+ );
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFreeA (
+ IN OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFreeW (
+ IN OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#ifdef UNICODE
+#define RpcProtseqVectorFree RpcProtseqVectorFreeW
+#else /* UNICODE */
+#define RpcProtseqVectorFree RpcProtseqVectorFreeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFree (
+ IN OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerInqBindings (
+ OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerInqIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
+ OUT RPC_MGR_EPV __RPC_FAR * __RPC_FAR * MgrEpv
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerListen (
+ IN unsigned int MinimumCallThreads,
+ IN unsigned int MaxCalls,
+ IN unsigned int DontWait
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid OPTIONAL,
+ IN RPC_MGR_EPV __RPC_FAR * MgrEpv OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterIfEx (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid,
+ IN RPC_MGR_EPV __RPC_FAR * MgrEpv,
+ IN unsigned int Flags,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_CALLBACK_FN __RPC_FAR *IfCallback
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUnregisterIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
+ IN unsigned int WaitForCallsToComplete
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqs (
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsEx (
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsIf (
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsIfEx (
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseq RpcServerUseProtseqW
+#define RpcServerUseProtseqEx RpcServerUseProtseqExW
+#else /* UNICODE */
+#define RpcServerUseProtseq RpcServerUseProtseqA
+#define RpcServerUseProtseqEx RpcServerUseProtseqExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseq (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned short __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned short __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpW
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExW
+#else /* UNICODE */
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpA
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEp (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfW
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExW
+#else /* UNICODE */
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfA
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIf (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtStatsVectorFree (
+ IN RPC_STATS_VECTOR ** StatsVector
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqStats (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT RPC_STATS_VECTOR ** Statistics
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtIsServerListening (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtStopServerListening (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtWaitServerListen (
+ void
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetServerStackSize (
+ IN unsigned long ThreadStackSize
+ );
+
+/* server */
+void RPC_ENTRY
+RpcSsDontSerializeContext (
+ void
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtEnableIdleCleanup (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqIfIds (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcIfIdVectorFree (
+ IN OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincNameA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincNameW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+#ifdef UNICODE
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameW
+#else /* UNICODE */
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincNameA (
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincNameW (
+ IN unsigned long AuthnSvc,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+#ifdef UNICODE
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameW
+#else /* UNICODE */
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincName (
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcEpResolveBinding (
+ IN RPC_BINDING_HANDLE Binding,
+ IN RPC_IF_HANDLE IfSpec
+ );
+
+/* client */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryNameA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryNameW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+#ifdef UNICODE
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameW
+#else /* UNICODE */
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+typedef void __RPC_FAR * RPC_AUTH_IDENTITY_HANDLE;
+typedef void __RPC_FAR * RPC_AUTHZ_HANDLE;
+
+#define RPC_C_AUTHN_LEVEL_DEFAULT 0
+#define RPC_C_AUTHN_LEVEL_NONE 1
+#define RPC_C_AUTHN_LEVEL_CONNECT 2
+#define RPC_C_AUTHN_LEVEL_CALL 3
+#define RPC_C_AUTHN_LEVEL_PKT 4
+#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
+#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
+
+#define RPC_C_IMP_LEVEL_ANONYMOUS 1
+#define RPC_C_IMP_LEVEL_IDENTIFY 2
+#define RPC_C_IMP_LEVEL_IMPERSONATE 3
+#define RPC_C_IMP_LEVEL_DELEGATE 4
+
+#define RPC_C_QOS_IDENTITY_STATIC 0
+#define RPC_C_QOS_IDENTITY_DYNAMIC 1
+
+#define RPC_C_QOS_CAPABILITIES_DEFAULT 0
+#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 1
+
+#define RPC_C_PROTECT_LEVEL_DEFAULT (RPC_C_AUTHN_LEVEL_DEFAULT)
+#define RPC_C_PROTECT_LEVEL_NONE (RPC_C_AUTHN_LEVEL_NONE)
+#define RPC_C_PROTECT_LEVEL_CONNECT (RPC_C_AUTHN_LEVEL_CONNECT)
+#define RPC_C_PROTECT_LEVEL_CALL (RPC_C_AUTHN_LEVEL_CALL)
+#define RPC_C_PROTECT_LEVEL_PKT (RPC_C_AUTHN_LEVEL_PKT)
+#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
+#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY (RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
+
+#define RPC_C_AUTHN_NONE 0
+#define RPC_C_AUTHN_DCE_PRIVATE 1
+#define RPC_C_AUTHN_DCE_PUBLIC 2
+#define RPC_C_AUTHN_DEC_PUBLIC 4
+#define RPC_C_AUTHN_WINNT 10
+#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFFL
+
+#define RPC_C_SECURITY_QOS_VERSION 1L
+
+typedef struct _RPC_SECURITY_QOS {
+ unsigned long Version;
+ unsigned long Capabilities;
+ unsigned long IdentityTracking;
+ unsigned long ImpersonationType;
+} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+typedef struct _SEC_WINNT_AUTH_IDENTITY
+{
+ char __RPC_FAR *User;
+ char __RPC_FAR *Domain;
+ char __RPC_FAR *Password;
+} SEC_WINNT_AUTH_IDENTITY;
+#else
+
+
+#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
+#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
+ unsigned short __RPC_FAR *User;
+ unsigned long UserLength;
+ unsigned short __RPC_FAR *Domain;
+ unsigned long DomainLength;
+ unsigned short __RPC_FAR *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
+ unsigned char __RPC_FAR *User;
+ unsigned long UserLength;
+ unsigned char __RPC_FAR *Domain;
+ unsigned long DomainLength;
+ unsigned char __RPC_FAR *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
+
+
+#ifdef UNICODE
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W
+#else // UNICODE
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_A
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_A
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_A
+#endif // UNICODE
+#endif // defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+
+#define RPC_C_AUTHZ_NONE 0
+#define RPC_C_AUTHZ_NAME 1
+#define RPC_C_AUTHZ_DCE 2
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClientA (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClientW (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoExA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc,
+ IN RPC_SECURITY_QOS *SecurityQos OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoExW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc, OPTIONAL
+ IN RPC_SECURITY_QOS *SecurityQOS
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoExA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc, OPTIONAL
+ IN unsigned long RpcQosVersion,
+ OUT RPC_SECURITY_QOS *SecurityQOS
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoExW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL,
+ IN unsigned long RpcQosVersion,
+ OUT RPC_SECURITY_QOS *SecurityQOS
+ );
+
+typedef void
+(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ IN void __RPC_FAR * Arg,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long KeyVer,
+ OUT void __RPC_FAR * __RPC_FAR * Key,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfoA (
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfoW (
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientW
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoW
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoW
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoW
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExW
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExW
+#else /* UNICODE */
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientA
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoA
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoA
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoA
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExA
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClient (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfo (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfo (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+typedef void
+(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ IN void __RPC_FAR * Arg,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long KeyVer,
+ OUT void __RPC_FAR * __RPC_FAR * Key,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfo (
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+typedef struct {
+ unsigned char __RPC_FAR * UserName;
+ unsigned char __RPC_FAR * ComputerName;
+ unsigned short Privilege;
+ unsigned long AuthFlags;
+} RPC_CLIENT_INFORMATION1, __RPC_FAR * PRPC_CLIENT_INFORMATION1;
+
+RPC_STATUS RPC_ENTRY
+RpcBindingServerFromClient (
+ IN RPC_BINDING_HANDLE ClientBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * ServerBinding
+ );
+
+void RPC_ENTRY
+RpcRaiseException (
+ IN RPC_STATUS exception
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcTestCancel(
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcCancelThread(
+ IN void * Thread
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidCreate (
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToStringA (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromStringA (
+ IN unsigned char __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToStringW (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromStringW (
+ IN unsigned short __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#ifdef UNICODE
+#define UuidFromString UuidFromStringW
+#define UuidToString UuidToStringW
+#else /* UNICODE */
+#define UuidFromString UuidFromStringA
+#define UuidToString UuidToStringA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToString (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromString (
+ IN unsigned char __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+signed int RPC_ENTRY
+UuidCompare (
+ IN UUID __RPC_FAR * Uuid1,
+ IN UUID __RPC_FAR * Uuid2,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+UuidCreateNil (
+ OUT UUID __RPC_FAR * NilUuid
+ );
+
+int RPC_ENTRY
+UuidEqual (
+ IN UUID __RPC_FAR * Uuid1,
+ IN UUID __RPC_FAR * Uuid2,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+unsigned short RPC_ENTRY
+UuidHash (
+ IN UUID __RPC_FAR * Uuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+int RPC_ENTRY
+UuidIsNil (
+ IN UUID __RPC_FAR * Uuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplaceA (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplaceW (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned short * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterA (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterW (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned short * Annotation
+ );
+
+#ifdef UNICODE
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceW
+#define RpcEpRegister RpcEpRegisterW
+#else /* UNICODE */
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceA
+#define RpcEpRegister RpcEpRegisterA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplace (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegister (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+
+RPC_STATUS RPC_ENTRY
+RpcEpUnregister(
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqTextA (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned char __RPC_FAR * ErrorText
+ );
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqTextW (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned short __RPC_FAR * ErrorText
+ );
+
+#ifdef UNICODE
+#define DceErrorInqText DceErrorInqTextW
+#else /* UNICODE */
+#define DceErrorInqText DceErrorInqTextA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqText (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned char __RPC_FAR * ErrorText
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+#define DCE_C_ERROR_STRING_LEN 256
+
+typedef I_RPC_HANDLE * RPC_EP_INQ_HANDLE;
+
+#define RPC_C_EP_ALL_ELTS 0
+#define RPC_C_EP_MATCH_BY_IF 1
+#define RPC_C_EP_MATCH_BY_OBJ 2
+#define RPC_C_EP_MATCH_BY_BOTH 3
+
+#define RPC_C_VERS_ALL 1
+#define RPC_C_VERS_COMPATIBLE 2
+#define RPC_C_VERS_EXACT 3
+#define RPC_C_VERS_MAJOR_ONLY 4
+#define RPC_C_VERS_UPTO 5
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqBegin (
+ IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption OPTIONAL,
+ IN UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqDone (
+ IN OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNextA (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNextW (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW
+#else /* UNICODE */
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNext (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpUnregister (
+ IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
+ IN RPC_IF_ID __RPC_FAR * IfId,
+ IN RPC_BINDING_HANDLE Binding,
+ IN UUID __RPC_FAR * ObjectUuid OPTIONAL
+ );
+
+typedef int
+(__RPC_API * RPC_MGMT_AUTHORIZATION_FN) (
+ IN RPC_BINDING_HANDLE ClientBinding,
+ IN unsigned long RequestedMgmtOperation,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+#define RPC_C_MGMT_INQ_IF_IDS 0
+#define RPC_C_MGMT_INQ_PRINC_NAME 1
+#define RPC_C_MGMT_INQ_STATS 2
+#define RPC_C_MGMT_IS_SERVER_LISTEN 3
+#define RPC_C_MGMT_STOP_SERVER_LISTEN 4
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetAuthorizationFn (
+ IN RPC_MGMT_AUTHORIZATION_FN AuthorizationFn
+ );
+
+
+#define RPC_C_PARM_MAX_PACKET_LENGTH 1
+#define RPC_C_PARM_BUFFER_LENGTH 2
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqParameter (
+ IN unsigned Parameter,
+ IN unsigned long __RPC_FAR * Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetParameter (
+ IN unsigned Parameter,
+ IN unsigned long Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtBindingInqParameter (
+ IN RPC_BINDING_HANDLE Handle,
+ IN unsigned Parameter,
+ IN unsigned long __RPC_FAR * Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtBindingSetParameter (
+ IN RPC_BINDING_HANDLE Handle,
+ IN unsigned Parameter,
+ IN unsigned long Value
+ );
+
+#define RPC_IF_AUTOLISTEN 0x0001
+#define RPC_IF_OLE 0x0002
+
+#include <rpcdcep.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RPCDCE_H__ */
diff --git a/public/sdk/rpc16/mac/inc/rpcdcep.h b/public/sdk/rpc16/mac/inc/rpcdcep.h
new file mode 100644
index 000000000..85ed0fd67
--- /dev/null
+++ b/public/sdk/rpc16/mac/inc/rpcdcep.h
@@ -0,0 +1,415 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcdcep.h
+
+Abstract:
+
+ This module contains the private RPC runtime APIs for use by the
+ stubs and by support libraries. Applications must not call these
+ routines.
+
+--*/
+
+#ifndef __RPCDCEP_H__
+#define __RPCDCEP_H__
+
+// Set the packing level for RPC structures for Dos and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack(2)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _RPC_VERSION {
+ unsigned short MajorVersion;
+ unsigned short MinorVersion;
+} RPC_VERSION;
+
+typedef struct _RPC_SYNTAX_IDENTIFIER {
+ GUID SyntaxGUID;
+ RPC_VERSION SyntaxVersion;
+} RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
+
+typedef struct _RPC_MESSAGE
+{
+ RPC_BINDING_HANDLE Handle;
+ unsigned long DataRepresentation;
+ void __RPC_FAR * Buffer;
+ unsigned int BufferLength;
+ unsigned int ProcNum;
+ PRPC_SYNTAX_IDENTIFIER TransferSyntax;
+ void __RPC_FAR * RpcInterfaceInformation;
+ void __RPC_FAR * ReservedForRuntime;
+ RPC_MGR_EPV __RPC_FAR * ManagerEpv;
+ void __RPC_FAR * ImportContext;
+ unsigned long RpcFlags;
+} RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
+
+
+typedef RPC_STATUS RPC_ENTRY RPC_FORWARD_FUNCTION(
+ IN UUID __RPC_FAR * InterfaceId,
+ IN RPC_VERSION __RPC_FAR * InterfaceVersion,
+ IN UUID __RPC_FAR * ObjectId,
+ IN unsigned char __RPC_FAR * Rpcpro,
+ IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
+
+/*
+ * Types of function calls for datagram rpc
+ */
+
+#define RPC_NCA_FLAGS_DEFAULT 0x00000000 /* 0b000...000 */
+#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001 /* 0b000...001 */
+#define RPC_NCA_FLAGS_BROADCAST 0x00000002 /* 0b000...010 */
+#define RPC_NCA_FLAGS_MAYBE 0x00000004 /* 0b000...100 */
+
+#define RPC_BUFFER_COMPLETE 0x00001000 /* used by pipes */
+#define RPC_BUFFER_PARTIAL 0x00002000 /* used by pipes */
+#define RPC_BUFFER_EXTRA 0x00004000 /* used by pipes */
+
+#define RPCFLG_NON_NDR 0x80000000UL
+#define RPCFLG_ASYNCHRONOUS 0x40000000UL
+#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000UL
+#define RPCFLG_LOCAL_CALL 0x10000000UL
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#define RPC_FLAGS_VALID_BIT 0x8000
+#endif
+
+#if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
+#define RPC_FLAGS_VALID_BIT 0x00008000
+#endif
+
+typedef
+void
+(__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
+ IN OUT PRPC_MESSAGE Message
+ );
+
+typedef struct {
+ unsigned int DispatchTableCount;
+ RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
+ int Reserved;
+} RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
+
+typedef struct _RPC_PROTSEQ_ENDPOINT
+{
+ unsigned char __RPC_FAR * RpcProtocolSequence;
+ unsigned char __RPC_FAR * Endpoint;
+} RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
+
+/*
+Both of these types MUST start with the InterfaceId and TransferSyntax.
+Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
+*/
+#define NT351_INTERFACE_SIZE 0x40
+#define RPC_INTERFACE_HAS_PIPES 0x0001
+
+typedef struct _RPC_SERVER_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
+ void const __RPC_FAR *InterpreterInfo;
+ unsigned int Flags ;
+} RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
+
+typedef struct _RPC_CLIENT_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ unsigned long Reserved;
+ void const __RPC_FAR * InterpreterInfo;
+ unsigned int Flags ;
+} RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSendReceive (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcFreeBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSend (
+ IN OUT PRPC_MESSAGE Message
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcReceive (
+ IN OUT PRPC_MESSAGE Message,
+ IN unsigned int Size
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcFreePipeBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcReallocPipeBuffer (
+ IN PRPC_MESSAGE Message,
+ IN unsigned int NewSize
+ ) ;
+
+typedef void * I_RPC_MUTEX;
+
+void RPC_ENTRY
+I_RpcRequestMutex (
+ IN OUT I_RPC_MUTEX * Mutex
+ );
+
+void RPC_ENTRY
+I_RpcClearMutex (
+ IN I_RPC_MUTEX Mutex
+ );
+
+void RPC_ENTRY
+I_RpcDeleteMutex (
+ IN I_RPC_MUTEX Mutex
+ );
+
+void __RPC_FAR * RPC_ENTRY
+I_RpcAllocate (
+ IN unsigned int Size
+ );
+
+void RPC_ENTRY
+I_RpcFree (
+ IN void __RPC_FAR * Object
+ );
+
+void RPC_ENTRY
+I_RpcPauseExecution (
+ IN unsigned long Milliseconds
+ );
+
+typedef
+void
+(__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
+ void __RPC_FAR * AssociationContext
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcMonitorAssociation (
+ IN RPC_BINDING_HANDLE Handle,
+ IN PRPC_RUNDOWN RundownRoutine,
+ IN void * Context
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcStopMonitorAssociation (
+ IN RPC_BINDING_HANDLE Handle
+ );
+
+RPC_BINDING_HANDLE RPC_ENTRY
+I_RpcGetCurrentCallHandle(
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetAssociationContext (
+ OUT void __RPC_FAR * __RPC_FAR * AssociationContext
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSetAssociationContext (
+ IN void __RPC_FAR * AssociationContext
+ );
+
+#ifdef __RPC_NT__
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsBindingSetEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+#else
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsBindingSetEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+#endif
+
+#ifdef __RPC_NT__
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqDynamicEndpoint (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
+ );
+
+#else
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqDynamicEndpoint (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
+ );
+
+#endif
+
+#define TRANSPORT_TYPE_CN 0x1
+#define TRANSPORT_TYPE_DG 0x2
+#define TRANSPORT_TYPE_LPC 0x4
+#define TRANSPORT_TYPE_WMSG 0x8
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqTransportType (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned int __RPC_FAR * Type
+ );
+
+typedef struct _RPC_TRANSFER_SYNTAX
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_TRANSFER_SYNTAX;
+
+RPC_STATUS RPC_ENTRY
+I_RpcIfInqTransferSyntaxes (
+ IN RPC_IF_HANDLE RpcIfHandle,
+ OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
+ IN unsigned int TransferSyntaxSize,
+ OUT unsigned int __RPC_FAR * TransferSyntaxCount
+ );
+
+RPC_STATUS RPC_ENTRY
+I_UuidCreate (
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingCopy (
+ IN RPC_BINDING_HANDLE SourceBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingIsClientLocal (
+ IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
+ OUT unsigned int __RPC_FAR * ClientLocalFlag
+ );
+
+void RPC_ENTRY
+I_RpcSsDontSerializeContext (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcLaunchDatagramReceiveThread(
+ void __RPC_FAR * pAddress
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerRegisterForwardFunction (
+ IN RPC_FORWARD_FUNCTION __RPC_FAR * pForwardFunction
+ );
+
+
+RPC_STATUS RPC_ENTRY
+I_RpcConnectionInqSockBuffSize(
+ OUT unsigned long __RPC_FAR * RecvBuffSize,
+ OUT unsigned long __RPC_FAR * SendBuffSize
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcConnectionSetSockBuffSize(
+ IN unsigned long RecvBuffSize,
+ IN unsigned long SendBuffSize
+ );
+
+
+#ifdef MSWMSG
+RPC_STATUS RPC_ENTRY
+I_RpcServerStartListening(
+ HWND hWnd
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerStopListening(
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetThreadWindowHandle(
+ OUT HWND *WindowHandle
+ ) ;
+
+typedef RPC_STATUS (*RPC_BLOCKING_FN) (
+ IN void *wnd,
+ IN void *Context,
+ IN HANDLE hSyncEvent
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcAsyncSendReceive(
+ IN OUT PRPC_MESSAGE pRpcMessage,
+ IN OPTIONAL void *Context,
+ HWND hWnd
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingSetAsync(
+ IN RPC_BINDING_HANDLE Binding,
+ IN RPC_BLOCKING_FN BlockingFn
+ ) ;
+
+LONG RPC_ENTRY
+I_RpcWindowProc(
+ IN HWND hWnd,
+ IN UINT Message,
+ IN WPARAM wParam,
+ IN LPARAM lParam
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcSetWMsgEndpoint (
+ IN WCHAR __RPC_FAR * Endpoint
+ ) ;
+#endif
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerInqTransportType(
+ OUT unsigned int __RPC_FAR * Type
+ ) ;
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for Dos and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack()
+#endif
+
+#endif /* __RPCDCEP_H__ */
diff --git a/public/sdk/rpc16/mac/inc/rpcerr.h b/public/sdk/rpc16/mac/inc/rpcerr.h
new file mode 100644
index 000000000..139df1b1b
--- /dev/null
+++ b/public/sdk/rpc16/mac/inc/rpcerr.h
@@ -0,0 +1,188 @@
+/*********************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1987-1990 **/
+/** **/
+/** Rpc Error Codes from the compiler and runtime **/
+/** **/
+/*********************************************************/
+
+/*
+If you change this file, you must also change ntstatus.mc and winerror.mc
+*/
+
+#ifndef __RPCERR_H__
+#define __RPCERR_H__
+
+#define RPC_S_OK 0
+#define RPC_S_INVALID_ARG 1
+#define RPC_S_INVALID_STRING_BINDING 2
+#define RPC_S_OUT_OF_MEMORY 3
+#define RPC_S_WRONG_KIND_OF_BINDING 4
+#define RPC_S_INVALID_BINDING 5
+#define RPC_S_PROTSEQ_NOT_SUPPORTED 6
+#define RPC_S_INVALID_RPC_PROTSEQ 7
+#define RPC_S_INVALID_STRING_UUID 8
+#define RPC_S_INVALID_ENDPOINT_FORMAT 9
+
+#define RPC_S_INVALID_NET_ADDR 10
+#define RPC_S_INVALID_NAF_ID 11
+#define RPC_S_NO_ENDPOINT_FOUND 12
+#define RPC_S_INVALID_TIMEOUT 13
+#define RPC_S_OBJECT_NOT_FOUND 14
+#define RPC_S_ALREADY_REGISTERED 15
+#define RPC_S_TYPE_ALREADY_REGISTERED 16
+#define RPC_S_ALREADY_LISTENING 17
+#define RPC_S_NO_PROTSEQS_REGISTERED 18
+#define RPC_S_NOT_LISTENING 19
+
+#define RPC_S_OUT_OF_THREADS 20
+#define RPC_S_UNKNOWN_MGR_TYPE 21
+#define RPC_S_UNKNOWN_IF 22
+#define RPC_S_NO_BINDINGS 23
+#define RPC_S_NO_PROTSEQS 24
+#define RPC_S_CANT_CREATE_ENDPOINT 25
+#define RPC_S_OUT_OF_RESOURCES 26
+#define RPC_S_SERVER_UNAVAILABLE 27
+#define RPC_S_SERVER_TOO_BUSY 28
+#define RPC_S_INVALID_NETWORK_OPTIONS 29
+
+#define RPC_S_NO_CALL_ACTIVE 30
+#define RPC_S_INVALID_LEVEL 31
+#define RPC_S_CANNOT_SUPPORT 32
+#define RPC_S_CALL_FAILED 33
+#define RPC_S_CALL_FAILED_DNE 34
+#define RPC_S_PROTOCOL_ERROR 35
+
+// Unused.
+
+// Unused.
+
+#define RPC_S_UNSUPPORTED_TRANS_SYN 38
+#define RPC_S_BUFFER_TOO_SMALL 39
+
+#define RPC_S_NO_CONTEXT_AVAILABLE 40
+#define RPC_S_SERVER_OUT_OF_MEMORY 41
+#define RPC_S_UNSUPPORTED_TYPE 42
+#define RPC_S_ZERO_DIVIDE 43
+#define RPC_S_ADDRESS_ERROR 44
+#define RPC_S_FP_DIV_ZERO 45
+#define RPC_S_FP_UNDERFLOW 46
+#define RPC_S_FP_OVERFLOW 47
+#define RPC_S_INVALID_TAG 48
+#define RPC_S_INVALID_BOUND 49
+
+#define RPC_S_NO_ENTRY_NAME 50
+#define RPC_S_INVALID_NAME_SYNTAX 51
+#define RPC_S_UNSUPPORTED_NAME_SYNTAX 52
+#define RPC_S_UUID_LOCAL_ONLY 53
+#define RPC_S_UUID_NO_ADDRESS 54
+#define RPC_S_DUPLICATE_ENDPOINT 55
+#define RPC_S_INVALID_SECURITY_DESC 56
+#define RPC_S_ACCESS_DENIED 57
+#define RPC_S_UNKNOWN_AUTHN_TYPE 58
+#define RPC_S_MAX_CALLS_TOO_SMALL 59
+
+#define RPC_S_STRING_TOO_LONG 60
+#define RPC_S_PROTSEQ_NOT_FOUND 61
+#define RPC_S_PROCNUM_OUT_OF_RANGE 62
+#define RPC_S_BINDING_HAS_NO_AUTH 63
+#define RPC_S_UNKNOWN_AUTHN_SERVICE 64
+#define RPC_S_UNKNOWN_AUTHN_LEVEL 65
+#define RPC_S_INVALID_AUTH_IDENTITY 66
+#define RPC_S_UNKNOWN_AUTHZ_SERVICE 67
+#define EPT_S_INVALID_ENTRY 68
+#define EPT_S_CANT_PERFORM_OP 69
+
+#define EPT_S_NOT_REGISTERED 70
+#define RPC_S_NOTHING_TO_EXPORT 71
+#define RPC_S_INCOMPLETE_NAME 72
+#define RPC_S_UNIMPLEMENTED_API 73
+#define RPC_S_INVALID_VERS_OPTION 74
+#define RPC_S_NO_MORE_MEMBERS 75
+#define RPC_S_NOT_ALL_OBJS_UNEXPORTED 76
+#define RPC_S_INTERFACE_NOT_FOUND 77
+#define RPC_S_ENTRY_ALREADY_EXISTS 78
+#define RPC_S_ENTRY_NOT_FOUND 79
+
+#define RPC_S_NAME_SERVICE_UNAVAILABLE 80
+#define RPC_S_CALL_IN_PROGRESS 81
+#define RPC_S_NO_MORE_BINDINGS 82
+#define RPC_S_GROUP_MEMBER_NOT_FOUND 83
+#define EPT_S_CANT_CREATE 84
+#define RPC_S_INVALID_OBJECT 85
+#define RPC_S_CALL_CANCELLED 86
+#define RPC_S_BINDING_INCOMPLETE 87
+#define RPC_S_COMM_FAILURE 88
+#define RPC_S_UNSUPPORTED_AUTHN_LEVEL 89
+
+#define RPC_S_NO_PRINC_NAME 90
+#define RPC_S_NOT_RPC_ERROR 91
+#define RPC_S_SEC_PKG_ERROR 92
+#define RPC_S_NOT_CANCELLED 93
+#define RPC_S_SEND_INCOMPLETE 94
+
+
+#define RPC_S_INTERNAL_ERROR 100
+
+/* The list of servers available for auto_handle binding has been exhausted. */
+
+#define RPC_X_NO_MORE_ENTRIES 256
+
+/* Insufficient memory available to set up necessary data structures. */
+
+#define RPC_X_NO_MEMORY 257
+
+/* The specified bounds of an array are inconsistent. */
+
+#define RPC_X_INVALID_BOUND 258
+
+/* The discriminant value does not match any of the case values. */
+/* There is no default case. */
+
+#define RPC_X_INVALID_TAG 259
+
+/* The file designated by DCERPCCHARTRANS cannot be opened. */
+
+#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL 260
+
+/* The file containing char translation table has fewer than 512 bytes. */
+
+#define RPC_X_SS_CHAR_TRANS_SHORT_FILE 261
+
+/* A null context handle is passed in an [in] parameter position. */
+
+#define RPC_X_SS_IN_NULL_CONTEXT 262
+
+/* Only raised on the callee side. */
+/* A uuid in an [in] handle does not correspond to any known context. */
+
+#define RPC_X_SS_CONTEXT_MISMATCH 263
+
+/* Only raised on the caller side. */
+/* A uuid in an [in, out] context handle changed during a call. */
+
+#define RPC_X_SS_CONTEXT_DAMAGED 264
+
+#define RPC_X_SS_HANDLES_MISMATCH 265
+
+#define RPC_X_SS_CANNOT_GET_CALL_HANDLE 266
+
+#define RPC_X_NULL_REF_POINTER 267
+
+#define RPC_X_ENUM_VALUE_OUT_OF_RANGE 268
+
+#define RPC_X_BYTE_COUNT_TOO_SMALL 269
+
+#define RPC_X_BAD_STUB_DATA 270
+
+#define RPC_X_INVALID_ES_ACTION 271
+#define RPC_X_WRONG_ES_VERSION 272
+#define RPC_X_WRONG_STUB_VERSION 273
+#define RPC_X_INVALID_BUFFER 274
+#define RPC_X_INVALID_PIPE_OBJECT 275
+#define RPC_X_INVALID_PIPE_OPERATION 276
+#define RPC_X_WRONG_PIPE_VERSION 277
+
+
+#endif /* __RPCERR_H__ */
+
diff --git a/public/sdk/rpc16/mac/inc/rpcmac.h b/public/sdk/rpc16/mac/inc/rpcmac.h
new file mode 100644
index 000000000..b5d59d39b
--- /dev/null
+++ b/public/sdk/rpc16/mac/inc/rpcmac.h
@@ -0,0 +1,121 @@
+/*++
+
+Copyright (c) 1994 Microsoft Corporation
+
+Module Name:
+
+ RpcMac.h
+
+Abstract:
+
+ Macintosh RPC specific exception handler macros.
+
+Author:
+
+ Mario Goertzel [mariogo] 02-Nov-1994
+
+--*/
+
+#ifndef __RPCMAC_H__
+#define __RPCMAC_H__
+
+typedef struct _ExceptionBuff {
+#if _MSC_VER >= 1000
+ jmp_buf registers;
+#else
+ int registers[RPCXCWORD];
+#endif
+ struct _ExceptionBuff __RPC_FAR *pExceptNext;
+} ExceptionBuff, __RPC_FAR *pExceptionBuff;
+
+void RPC_ENTRY RpcSetException(pExceptionBuff);
+void RPC_ENTRY RpcLeaveException(void);
+
+#ifdef _MPPC_
+int __cdecl RpcSetJmp(jmp_buf);
+#else
+#define BLD_RT
+#endif
+
+#ifdef BLD_RT
+#define RpcTryExcept \
+ { \
+ int _exception_code; \
+ ExceptionBuff exception; \
+ RpcSetException(&exception); \
+ \
+ _exception_code = (setjmp(exception.registers)); \
+ \
+ if (!_exception_code) \
+ {
+#else
+#define RpcTryExcept \
+ { \
+ int _exception_code; \
+ ExceptionBuff exception; \
+ RpcSetException(&exception); \
+ \
+ _exception_code = (RpcSetJmp(exception.registers)); \
+ \
+ if (!_exception_code) \
+ {
+#endif
+
+// trystmts
+
+#define RpcExcept(expr) \
+ RpcLeaveException(); \
+ } \
+ else \
+ { \
+ if (!(expr)) \
+ RpcRaiseException(_exception_code);
+
+// exceptstmts
+
+#define RpcEndExcept \
+ } \
+ }
+
+#ifdef BLD_RT
+#define RpcTryFinally \
+ { \
+ int _abnormal_termination; \
+ ExceptionBuff exception; \
+ RpcSetException(&exception); \
+ \
+ _abnormal_termination = (setjmp(exception.registers)); \
+ \
+ if (!_abnormal_termination) \
+ {
+#else
+#define RpcTryFinally \
+ { \
+ int _abnormal_termination; \
+ ExceptionBuff exception; \
+ RpcSetException(&exception); \
+ \
+ _abnormal_termination = (RpcSetJmp(exception.registers)); \
+ \
+ if (!_abnormal_termination) \
+ {
+#endif
+
+// trystmts
+
+#define RpcFinally \
+ RpcLeaveException(); \
+ }
+
+// finallystmts
+
+#define RpcEndFinally \
+ if (_abnormal_termination) \
+ RpcRaiseException(_abnormal_termination); \
+ }
+
+#define RpcExceptionCode() _exception_code
+#define RpcAbnormalTermination() _abnormal_termination
+
+#endif // __RPCMAC_H__
+ \ No newline at end of file
diff --git a/public/sdk/rpc16/mac/inc/rpcndr.h b/public/sdk/rpc16/mac/inc/rpcndr.h
new file mode 100644
index 000000000..65d1cdbfe
--- /dev/null
+++ b/public/sdk/rpc16/mac/inc/rpcndr.h
@@ -0,0 +1,2630 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcndr.h
+
+Abstract:
+
+ Definitions for stub data structures and prototypes of helper functions.
+
+Author:
+
+ DonnaLi (01-01-91)
+
+Environment:
+
+ DOS, Win 3.X, and Win/NT.
+
+Revision History:
+
+ DONNALI 08-29-91 Start recording history
+ donnali 09-11-91 change conversion macros
+ donnali 09-18-91 check in files for moving
+ STEVEZ 10-15-91 Merge with NT tree
+ donnali 10-28-91 add prototype
+ donnali 11-19-91 bugfix for strings
+ MIKEMON 12-17-91 DCE runtime API conversion
+ donnali 03-24-92 change rpc public header f
+ STEVEZ 04-04-92 add nsi include
+ mikemon 04-18-92 security support and misc
+ DovhH 04-24-24 Changed signature of <int>_from_ndr
+ (to unsigned <int>)
+ Added <base_type>_array_from_ndr routines
+ RyszardK 06-17-93 Added support for hyper
+ VibhasC 09-11-93 Created rpcndrn.h
+ DKays 10-14-93 Fixed up rpcndrn.h MIDL 2.0
+ RyszardK 01-15-94 Merged in the midl 2.0 changes from rpcndrn.h
+ Stevebl 04-22-96 Hookole support changes to MIDL_*_INFO
+
+--*/
+
+#ifndef __RPCNDR_H__
+#define __RPCNDR_H__
+
+//
+// Set the packing level for RPC structures for Dos, Windows and Mac.
+//
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
+#pragma pack(2)
+#endif
+
+#if defined(__RPC_MAC__)
+#define _MAC_
+#endif
+
+#include <rpcnsip.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************************
+
+ Network Computing Architecture (NCA) definition:
+
+ Network Data Representation: (NDR) Label format:
+ An unsigned long (32 bits) with the following layout:
+
+ 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
+ +---------------+---------------+---------------+-------+-------+
+ | Reserved | Reserved |Floating point | Int | Char |
+ | | |Representation | Rep. | Rep. |
+ +---------------+---------------+---------------+-------+-------+
+
+ Where
+
+ Reserved:
+
+ Must be zero (0) for NCA 1.5 and NCA 2.0.
+
+ Floating point Representation is:
+
+ 0 - IEEE
+ 1 - VAX
+ 2 - Cray
+ 3 - IBM
+
+ Int Rep. is Integer Representation:
+
+ 0 - Big Endian
+ 1 - Little Endian
+
+ Char Rep. is Character Representation:
+
+ 0 - ASCII
+ 1 - EBCDIC
+
+ The Microsoft Local Data Representation (for all platforms which are
+ of interest currently is edefined below:
+
+ ****************************************************************************/
+
+#define NDR_CHAR_REP_MASK (unsigned long)0X0000000FL
+#define NDR_INT_REP_MASK (unsigned long)0X000000F0L
+#define NDR_FLOAT_REP_MASK (unsigned long)0X0000FF00L
+
+#define NDR_LITTLE_ENDIAN (unsigned long)0X00000010L
+#define NDR_BIG_ENDIAN (unsigned long)0X00000000L
+
+#define NDR_IEEE_FLOAT (unsigned long)0X00000000L
+#define NDR_VAX_FLOAT (unsigned long)0X00000100L
+
+#define NDR_ASCII_CHAR (unsigned long)0X00000000L
+#define NDR_EBCDIC_CHAR (unsigned long)0X00000001L
+
+#if defined(__RPC_MAC__)
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000000L
+#define NDR_LOCAL_ENDIAN NDR_BIG_ENDIAN
+#else
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000010L
+#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
+#endif
+
+
+/****************************************************************************
+ * Macros for targeted platforms
+ ****************************************************************************/
+
+#if (defined(_WIN32_DCOM) || 0x400 <= _WIN32_WINNT)
+#define TARGET_IS_NT40_OR_LATER 1
+#else
+#define TARGET_IS_NT40_OR_LATER 0
+#endif
+
+#if (0x400 <= WINVER)
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1
+#else
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 0
+#endif
+
+/****************************************************************************
+ * Other MIDL base types / predefined types:
+ ****************************************************************************/
+
+#define small char
+typedef unsigned char byte;
+typedef unsigned char boolean;
+
+#ifndef _HYPER_DEFINED
+#define _HYPER_DEFINED
+
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
+#define hyper __int64
+#define MIDL_uhyper unsigned __int64
+#else
+typedef double hyper;
+typedef double MIDL_uhyper;
+#endif
+
+#endif // _HYPER_DEFINED
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+#ifdef __RPC_DOS__
+#define __RPC_CALLEE __far __pascal
+#endif
+
+#ifdef __RPC_WIN16__
+#define __RPC_CALLEE __far __pascal __export
+#endif
+
+#ifdef __RPC_WIN32__
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define __RPC_CALLEE __stdcall
+#else
+#define __RPC_CALLEE
+#endif
+#endif
+
+#ifdef __RPC_MAC__
+#define __RPC_CALLEE __far
+#endif
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifdef __RPC_WIN16__
+#define RPC_VAR_ENTRY __export __cdecl
+#else
+#define RPC_VAR_ENTRY __cdecl
+#endif
+
+
+/* winnt only */
+#if defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA)
+#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport)
+#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport)
+#else
+#define __MIDL_DECLSPEC_DLLIMPORT
+#define __MIDL_DECLSPEC_DLLEXPORT
+#endif
+
+
+
+
+/****************************************************************************
+ * Context handle management related definitions:
+ *
+ * Client and Server Contexts.
+ *
+ ****************************************************************************/
+
+typedef void __RPC_FAR * NDR_CCONTEXT;
+
+typedef struct
+ {
+ void __RPC_FAR * pad[2];
+ void __RPC_FAR * userContext;
+ } __RPC_FAR * NDR_SCONTEXT;
+
+#define NDRSContextValue(hContext) (&(hContext)->userContext)
+
+#define cbNDRContext 20 /* size of context on WIRE */
+
+typedef void (__RPC_USER __RPC_FAR * NDR_RUNDOWN)(void __RPC_FAR * context);
+
+typedef struct _SCONTEXT_QUEUE {
+ unsigned long NumberOfObjects;
+ NDR_SCONTEXT * ArrayOfObjects;
+ } SCONTEXT_QUEUE, __RPC_FAR * PSCONTEXT_QUEUE;
+
+RPC_BINDING_HANDLE RPC_ENTRY
+NDRCContextBinding (
+ IN NDR_CCONTEXT CContext
+ );
+
+void RPC_ENTRY
+NDRCContextMarshall (
+ IN NDR_CCONTEXT CContext,
+ OUT void __RPC_FAR *pBuff
+ );
+
+void RPC_ENTRY
+NDRCContextUnmarshall (
+ OUT NDR_CCONTEXT __RPC_FAR *pCContext,
+ IN RPC_BINDING_HANDLE hBinding,
+ IN void __RPC_FAR *pBuff,
+ IN unsigned long DataRepresentation
+ );
+
+void RPC_ENTRY
+NDRSContextMarshall (
+ IN NDR_SCONTEXT CContext,
+ OUT void __RPC_FAR *pBuff,
+ IN NDR_RUNDOWN userRunDownIn
+ );
+
+NDR_SCONTEXT RPC_ENTRY
+NDRSContextUnmarshall (
+ IN void __RPC_FAR *pBuff,
+ IN unsigned long DataRepresentation
+ );
+
+void RPC_ENTRY
+RpcSsDestroyClientContext (
+ IN void __RPC_FAR * __RPC_FAR * ContextHandle
+ );
+
+
+/****************************************************************************
+ NDR conversion related definitions.
+ ****************************************************************************/
+
+#define byte_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+#define boolean_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+#define small_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define small_from_ndr_temp(source, target, format) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)(source))++; \
+ }
+
+#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+/****************************************************************************
+ Platform specific mapping of c-runtime functions.
+ ****************************************************************************/
+
+#ifdef __RPC_DOS__
+#define MIDL_ascii_strlen(string) \
+ _fstrlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ _fstrcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ _fmemset(s,c,n)
+#endif
+
+#ifdef __RPC_WIN16__
+#define MIDL_ascii_strlen(string) \
+ _fstrlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ _fstrcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ _fmemset(s,c,n)
+#endif
+
+#if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
+#define MIDL_ascii_strlen(string) \
+ strlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ strcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ memset(s,c,n)
+#endif
+
+/****************************************************************************
+ Ndr Library helper function prototypes for MIDL 1.0 ndr functions.
+ ****************************************************************************/
+
+void RPC_ENTRY
+NDRcopy (
+ IN void __RPC_FAR *pTarget,
+ IN void __RPC_FAR *pSource,
+ IN unsigned int size
+ );
+
+size_t RPC_ENTRY
+MIDL_wchar_strlen (
+ IN wchar_t __RPC_FAR * s
+ );
+
+void RPC_ENTRY
+MIDL_wchar_strcpy (
+ OUT void __RPC_FAR * t,
+ IN wchar_t __RPC_FAR * s
+ );
+
+void RPC_ENTRY
+char_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT unsigned char __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+char_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned char __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+short_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT unsigned short __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+short_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned short __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+short_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT unsigned short __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+long_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT unsigned long __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+long_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned long __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+long_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT unsigned long __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+enum_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT unsigned int __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+float_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+float_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+double_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+double_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+hyper_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT hyper __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+hyper_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT hyper __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+hyper_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT hyper __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+data_from_ndr (
+ PRPC_MESSAGE source,
+ void __RPC_FAR * target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+data_into_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_into_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+data_size_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_size_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_peek_ndr (
+ PRPC_MESSAGE source,
+ unsigned char __RPC_FAR * __RPC_FAR * buffer,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void __RPC_FAR * RPC_ENTRY
+midl_allocate (
+ size_t size
+ );
+
+/****************************************************************************
+ MIDL 2.0 ndr definitions.
+ ****************************************************************************/
+
+typedef unsigned long error_status_t;
+
+#define _midl_ma1( p, cast ) *(*( cast **)&p)++
+#define _midl_ma2( p, cast ) *(*( cast **)&p)++
+#define _midl_ma4( p, cast ) *(*( cast **)&p)++
+#define _midl_ma8( p, cast ) *(*( cast **)&p)++
+
+#define _midl_unma1( p, cast ) *(( cast *)p)++
+#define _midl_unma2( p, cast ) *(( cast *)p)++
+#define _midl_unma3( p, cast ) *(( cast *)p)++
+#define _midl_unma4( p, cast ) *(( cast *)p)++
+
+// Some alignment specific macros.
+
+
+#define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe))
+#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc))
+#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8))
+
+#define _midl_addp( p, n ) (p += n)
+
+// Marshalling macros
+
+#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++
+#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p
+#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++
+#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++)
+
+
+////////////////////////////////////////////////////////////////////////////
+// Ndr macros.
+////////////////////////////////////////////////////////////////////////////
+
+#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, \
+ _midl_ma4( p, unsigned long) = 0, \
+ _midl_ma4( p, unsigned long) = l)
+
+#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long),\
+ (_midl_addp(p,4)), \
+ (l=_midl_unma4(p,unsigned long))
+
+#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20)
+
+#define NdrUnMarshCCtxtHdl(pc,p,h,drep) \
+ (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20)
+
+#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep ))
+
+
+#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd)
+
+#define NdrFieldOffset(s,f) (long)(& (((s __RPC_FAR *)0)->f))
+#define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t))
+
+#if defined(__RPC_MAC__)
+#define NdrFcShort(s) (unsigned char)(s >> 8), (unsigned char)(s & 0xff)
+#define NdrFcLong(s) (unsigned char)(s >> 24), (unsigned char)((s & 0x00ff0000) >> 16), \
+ (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)(s & 0xff)
+#else
+#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
+#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \
+ (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
+#endif // Mac
+
+//
+// On the server side, the following exceptions are mapped to
+// the bad stub data exception if -error stub_data is used.
+//
+
+#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER \
+ ( (RpcExceptionCode() == STATUS_ACCESS_VIOLATION) || \
+ (RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \
+ (RpcExceptionCode() == RPC_X_BAD_STUB_DATA) )
+
+/////////////////////////////////////////////////////////////////////////////
+// Some stub helper functions.
+/////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////
+// Stub helper structures.
+////////////////////////////////////////////////////////////////////////////
+
+struct _MIDL_STUB_MESSAGE;
+struct _MIDL_STUB_DESC;
+struct _FULL_PTR_XLAT_TABLES;
+
+typedef unsigned char __RPC_FAR * RPC_BUFPTR;
+typedef unsigned long RPC_LENGTH;
+
+// Expression evaluation callback routine prototype.
+typedef void (__RPC_USER __RPC_FAR * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE __RPC_FAR * );
+
+typedef const unsigned char __RPC_FAR * PFORMAT_STRING;
+
+/*
+ * Multidimensional conformant/varying array struct.
+ */
+typedef struct
+ {
+ long Dimension;
+
+ /* These fields MUST be (unsigned long *) */
+ unsigned long __RPC_FAR * BufferConformanceMark;
+ unsigned long __RPC_FAR * BufferVarianceMark;
+
+ /* Count arrays, used for top level arrays in -Os stubs */
+ unsigned long __RPC_FAR * MaxCountArray;
+ unsigned long __RPC_FAR * OffsetArray;
+ unsigned long __RPC_FAR * ActualCountArray;
+ } ARRAY_INFO, __RPC_FAR *PARRAY_INFO;
+
+/*
+ * Pipe related definitions.
+ */
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_PULL_RTN)(
+ char __RPC_FAR * state,
+ void __RPC_FAR * buf,
+ unsigned long esize,
+ unsigned long __RPC_FAR * ecount );
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_PUSH_RTN)(
+ char __RPC_FAR * state,
+ void __RPC_FAR * buf,
+ unsigned long ecount );
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_ALLOC_RTN)(
+ char __RPC_FAR * state,
+ unsigned long bsize,
+ void __RPC_FAR * __RPC_FAR * buf,
+ unsigned long __RPC_FAR * bcount );
+
+
+typedef struct _GENERIC_PIPE_TYPE
+ {
+ NDR_PIPE_PULL_RTN pfnPull;
+ NDR_PIPE_PUSH_RTN pfnPush;
+ NDR_PIPE_ALLOC_RTN pfnAlloc;
+ char __RPC_FAR * pState;
+ } GENERIC_PIPE_TYPE;
+
+
+typedef struct {
+ int CurrentState;
+ int ElemsInChunk;
+ int ElemAlign;
+ int ElemWireSize;
+ int ElemMemSize;
+ int PartialBufferSize;
+ unsigned char __RPC_FAR * PartialElem;
+ int PartialElemSize;
+ int PartialOffset;
+ int EndOfPipe;
+ } NDR_PIPE_STATE;
+
+typedef struct _PIPE_MESSAGE
+ {
+ unsigned short Signature;
+ unsigned short PipeId;
+ GENERIC_PIPE_TYPE __RPC_FAR * pPipeType;
+ PFORMAT_STRING pTypeFormat;
+ unsigned short PipeStatus;
+ unsigned short PipeFlags;
+ struct _MIDL_STUB_MESSAGE __RPC_FAR * pStubMsg;
+ } NDR_PIPE_MESSAGE, __RPC_FAR * PNDR_PIPE_MESSAGE;
+
+typedef struct _NDR_PIPE_DESC
+ {
+ NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg;
+ short CurrentPipe;
+ short InPipes;
+ short OutPipes;
+ short TotalPipes;
+ short PipeVersion;
+ short Flags;
+ unsigned char __RPC_FAR * DispatchBuffer;
+ unsigned char __RPC_FAR * LastPartialBuffer;
+ unsigned long LastPartialSize;
+ unsigned char __RPC_FAR * BufferSave;
+ unsigned long LengthSave;
+ NDR_PIPE_STATE RuntimeState;
+ } NDR_PIPE_DESC, __RPC_FAR * PNDR_PIPE_DESC;
+
+
+/*
+ * MIDL Stub Message
+ */
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
+#include <pshpack4.h>
+#endif
+
+typedef struct _MIDL_STUB_MESSAGE
+ {
+ /* RPC message structure. */
+ PRPC_MESSAGE RpcMsg;
+
+ /* Pointer into RPC message buffer. */
+ unsigned char __RPC_FAR * Buffer;
+
+ /*
+ * These are used internally by the Ndr routines to mark the beginning
+ * and end of an incoming RPC buffer.
+ */
+ unsigned char __RPC_FAR * BufferStart;
+ unsigned char __RPC_FAR * BufferEnd;
+
+ /*
+ * Used internally by the Ndr routines as a place holder in the buffer.
+ * On the marshalling side it's used to mark the location where conformance
+ * size should be marshalled.
+ * On the unmarshalling side it's used to mark the location in the buffer
+ * used during pointer unmarshalling to base pointer offsets off of.
+ */
+ unsigned char __RPC_FAR * BufferMark;
+
+ /* Set by the buffer sizing routines. */
+ unsigned long BufferLength;
+
+ /* Set by the memory sizing routines. */
+ unsigned long MemorySize;
+
+ /* Pointer to user memory. */
+ unsigned char __RPC_FAR * Memory;
+
+ /* Is the Ndr routine begin called from a client side stub. */
+ int IsClient;
+
+ /* Can the buffer be re-used for memory on unmarshalling. */
+ int ReuseBuffer;
+
+ /* Holds the current pointer to an allocate all nodes memory block. */
+ unsigned char __RPC_FAR * AllocAllNodesMemory;
+
+ /* Used for debugging asserts only, remove later. */
+ unsigned char __RPC_FAR * AllocAllNodesMemoryEnd;
+
+ /*
+ * Stuff needed while handling complex structures
+ */
+
+ /* Ignore imbeded pointers while computing buffer or memory sizes. */
+ int IgnoreEmbeddedPointers;
+
+ /*
+ * This marks the location in the buffer where pointees of a complex
+ * struct reside.
+ */
+ unsigned char __RPC_FAR * PointerBufferMark;
+
+ /*
+ * Used to catch errors in SendReceive.
+ */
+ unsigned char fBufferValid;
+
+ /*
+ * Obsolete unused field (formerly MaxContextHandleNumber).
+ */
+ unsigned char Unused;
+
+ /*
+ * Used internally by the Ndr routines. Holds the max counts for
+ * a conformant array.
+ */
+ unsigned long MaxCount;
+
+ /*
+ * Used internally by the Ndr routines. Holds the offsets for a varying
+ * array.
+ */
+ unsigned long Offset;
+
+ /*
+ * Used internally by the Ndr routines. Holds the actual counts for
+ * a varying array.
+ */
+ unsigned long ActualCount;
+
+ /* Allocation and Free routine to be used by the Ndr routines. */
+ void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
+
+ /*
+ * Top of parameter stack. Used for "single call" stubs during marshalling
+ * to hold the beginning of the parameter list on the stack. Needed to
+ * extract parameters which hold attribute values for top level arrays and
+ * pointers.
+ */
+ unsigned char __RPC_FAR * StackTop;
+
+ /*
+ * Fields used for the transmit_as and represent_as objects.
+ * For represent_as the mapping is: presented=local, transmit=named.
+ */
+ unsigned char __RPC_FAR * pPresentedType;
+ unsigned char __RPC_FAR * pTransmitType;
+
+ /*
+ * When we first construct a binding on the client side, stick it
+ * in the rpcmessage and later call RpcGetBuffer, the handle field
+ * in the rpcmessage is changed. That's fine except that we need to
+ * have that original handle for use in unmarshalling context handles
+ * (the second argument in NDRCContextUnmarshall to be exact). So
+ * stash the contructed handle here and extract it when needed.
+ */
+ handle_t SavedHandle;
+
+ /*
+ * Pointer back to the stub descriptor. Use this to get all handle info.
+ */
+ const struct _MIDL_STUB_DESC __RPC_FAR * StubDesc;
+
+ /*
+ * Full pointer stuff.
+ */
+ struct _FULL_PTR_XLAT_TABLES __RPC_FAR * FullPtrXlatTables;
+
+ unsigned long FullPtrRefId;
+
+ /*
+ * flags
+ */
+
+ int fCheckBounds;
+
+ int fInDontFree :1;
+ int fDontCallFreeInst :1;
+ int fInOnlyParam :1;
+ int fHasReturn :1;
+
+ unsigned long dwDestContext;
+ void __RPC_FAR * pvDestContext;
+
+ NDR_SCONTEXT * SavedContextHandles;
+
+ long ParamNumber;
+
+ struct IRpcChannelBuffer __RPC_FAR * pRpcChannelBuffer;
+
+ PARRAY_INFO pArrayInfo;
+
+ /*
+ * This is where the Beta2 stub message ends.
+ */
+
+ unsigned long __RPC_FAR * SizePtrCountArray;
+ unsigned long __RPC_FAR * SizePtrOffsetArray;
+ unsigned long __RPC_FAR * SizePtrLengthArray;
+
+ /*
+ * Interpreter argument queue. Used on server side only.
+ */
+ void __RPC_FAR * pArgQueue;
+
+ unsigned long dwStubPhase;
+
+ /*
+ * Pipe descriptor, defined for the 4.0 release.
+ */
+
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc;
+
+ unsigned long Reserved[4];
+
+ /*
+ * Fields up to this point present since the 3.50 release.
+ */
+
+ } MIDL_STUB_MESSAGE, __RPC_FAR *PMIDL_STUB_MESSAGE;
+
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
+#include <poppack.h>
+#endif
+
+/*
+ * Generic handle bind/unbind routine pair.
+ */
+typedef void __RPC_FAR *
+ (__RPC_FAR __RPC_API * GENERIC_BINDING_ROUTINE)
+ (void __RPC_FAR *);
+typedef void
+ (__RPC_FAR __RPC_API * GENERIC_UNBIND_ROUTINE)
+ (void __RPC_FAR *, unsigned char __RPC_FAR *);
+
+typedef struct _GENERIC_BINDING_ROUTINE_PAIR
+ {
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_ROUTINE_PAIR, __RPC_FAR *PGENERIC_BINDING_ROUTINE_PAIR;
+
+typedef struct __GENERIC_BINDING_INFO
+ {
+ void __RPC_FAR * pObj;
+ unsigned int Size;
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_INFO, __RPC_FAR *PGENERIC_BINDING_INFO;
+
+// typedef EXPR_EVAL - see above
+// typedefs for xmit_as
+
+#if (defined(_MSC_VER)) && !defined(MIDL_PASS)
+// a Microsoft C++ compiler
+#define NDR_SHAREABLE __inline
+#else
+#define NDR_SHAREABLE static
+#endif
+
+
+typedef void (__RPC_FAR __RPC_USER * XMIT_HELPER_ROUTINE)
+ ( PMIDL_STUB_MESSAGE );
+
+typedef struct _XMIT_ROUTINE_QUINTUPLE
+ {
+ XMIT_HELPER_ROUTINE pfnTranslateToXmit;
+ XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
+ XMIT_HELPER_ROUTINE pfnFreeXmit;
+ XMIT_HELPER_ROUTINE pfnFreeInst;
+ } XMIT_ROUTINE_QUINTUPLE, __RPC_FAR *PXMIT_ROUTINE_QUINTUPLE;
+
+typedef unsigned long
+(__RPC_FAR __RPC_USER * USER_MARSHAL_SIZING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned long,
+ void __RPC_FAR * );
+
+typedef unsigned char __RPC_FAR *
+(__RPC_FAR __RPC_USER * USER_MARSHAL_MARSHALLING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR * ,
+ void __RPC_FAR * );
+
+typedef unsigned char __RPC_FAR *
+(__RPC_FAR __RPC_USER * USER_MARSHAL_UNMARSHALLING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR * ,
+ void __RPC_FAR * );
+
+typedef void (__RPC_FAR __RPC_USER * USER_MARSHAL_FREEING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ void __RPC_FAR * );
+
+typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
+ {
+ USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
+ USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
+ USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
+ USER_MARSHAL_FREEING_ROUTINE pfnFree;
+ } USER_MARSHAL_ROUTINE_QUADRUPLE;
+
+typedef struct _USER_MARSHAL_CB
+{
+ unsigned long Flags;
+ PMIDL_STUB_MESSAGE pStubMsg;
+ PFORMAT_STRING pReserve;
+} USER_MARSHAL_CB;
+
+
+#define USER_CALL_CTXT_MASK(f) ((f) & 0xff)
+#define GET_USER_DATA_REP(f) ((f) >> 16)
+
+typedef struct _MALLOC_FREE_STRUCT
+ {
+ void __RPC_FAR * (__RPC_FAR __RPC_USER * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_USER * pfnFree)(void __RPC_FAR *);
+ } MALLOC_FREE_STRUCT;
+
+typedef struct _COMM_FAULT_OFFSETS
+ {
+ short CommOffset;
+ short FaultOffset;
+ } COMM_FAULT_OFFSETS;
+
+/*
+ * MIDL Stub Descriptor
+ */
+
+typedef struct _MIDL_STUB_DESC
+ {
+
+ void __RPC_FAR * RpcInterfaceInformation;
+
+ void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
+
+ union
+ {
+ handle_t __RPC_FAR * pAutoHandle;
+ handle_t __RPC_FAR * pPrimitiveHandle;
+ PGENERIC_BINDING_INFO pGenericBindingInfo;
+ } IMPLICIT_HANDLE_INFO;
+
+ const NDR_RUNDOWN __RPC_FAR * apfnNdrRundownRoutines;
+ const GENERIC_BINDING_ROUTINE_PAIR __RPC_FAR * aGenericBindingRoutinePairs;
+
+ const EXPR_EVAL __RPC_FAR * apfnExprEval;
+
+ const XMIT_ROUTINE_QUINTUPLE __RPC_FAR * aXmitQuintuple;
+
+ const unsigned char __RPC_FAR * pFormatTypes;
+
+ int fCheckBounds;
+
+ /* Ndr library version. */
+ unsigned long Version;
+
+ /*
+ * Reserved for future use. (no reserves )
+ */
+
+ MALLOC_FREE_STRUCT __RPC_FAR * pMallocFreeStruct;
+
+ long MIDLVersion;
+
+ const COMM_FAULT_OFFSETS __RPC_FAR * CommFaultOffsets;
+
+ // New fields for version 3.0+
+
+ const USER_MARSHAL_ROUTINE_QUADRUPLE __RPC_FAR * aUserMarshalQuadruple;
+
+ long Reserved1;
+ long Reserved2;
+ long Reserved3;
+ long Reserved4;
+ long Reserved5;
+
+ } MIDL_STUB_DESC;
+
+typedef const MIDL_STUB_DESC __RPC_FAR * PMIDL_STUB_DESC;
+
+typedef void __RPC_FAR * PMIDL_XMIT_TYPE;
+
+/*
+ * MIDL Stub Format String. This is a const in the stub.
+ */
+#if !defined( RC_INVOKED )
+#pragma warning( disable:4200 )
+#endif
+typedef struct _MIDL_FORMAT_STRING
+ {
+ short Pad;
+ unsigned char Format[];
+ } MIDL_FORMAT_STRING;
+#if !defined( RC_INVOKED )
+#pragma warning( default:4200 )
+#endif
+
+/*
+ * Stub thunk used for some interpreted server stubs.
+ */
+typedef void (__RPC_FAR __RPC_API * STUB_THUNK)( PMIDL_STUB_MESSAGE );
+
+typedef long (__RPC_FAR __RPC_API * SERVER_ROUTINE)();
+
+/*
+ * Server Interpreter's information strucuture.
+ */
+typedef struct _MIDL_SERVER_INFO_
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ const SERVER_ROUTINE * DispatchTable;
+ PFORMAT_STRING ProcString;
+ const unsigned short * FmtStringOffset;
+ const STUB_THUNK * ThunkTable;
+ PFORMAT_STRING LocalFormatTypes;
+ PFORMAT_STRING LocalProcString;
+ const unsigned short * LocalFmtStringOffset;
+ } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
+
+/*
+ * Stubless object proxy information structure.
+ */
+typedef struct _MIDL_STUBLESS_PROXY_INFO
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ PFORMAT_STRING ProcFormatString;
+ const unsigned short __RPC_FAR * FormatStringOffset;
+ PFORMAT_STRING LocalFormatTypes;
+ PFORMAT_STRING LocalProcString;
+ const unsigned short __RPC_FAR * LocalFmtStringOffset;
+ } MIDL_STUBLESS_PROXY_INFO;
+
+typedef MIDL_STUBLESS_PROXY_INFO __RPC_FAR * PMIDL_STUBLESS_PROXY_INFO;
+
+/*
+ * This is the return value from NdrClientCall.
+ */
+typedef union _CLIENT_CALL_RETURN
+ {
+ void __RPC_FAR * Pointer;
+ long Simple;
+ } CLIENT_CALL_RETURN;
+
+/*
+ * Full pointer data structures.
+ */
+
+typedef enum
+ {
+ XLAT_SERVER = 1,
+ XLAT_CLIENT
+ } XLAT_SIDE;
+
+/*
+ * Stores the translation for the conversion from a full pointer into it's
+ * corresponding ref id.
+ */
+typedef struct _FULL_PTR_TO_REFID_ELEMENT
+ {
+ struct _FULL_PTR_TO_REFID_ELEMENT __RPC_FAR * Next;
+
+ void __RPC_FAR * Pointer;
+ unsigned long RefId;
+ unsigned char State;
+ } FULL_PTR_TO_REFID_ELEMENT, __RPC_FAR *PFULL_PTR_TO_REFID_ELEMENT;
+
+/*
+ * Full pointer translation tables.
+ */
+typedef struct _FULL_PTR_XLAT_TABLES
+ {
+ /*
+ * Ref id to pointer translation information.
+ */
+ struct
+ {
+ void __RPC_FAR *__RPC_FAR * XlatTable;
+ unsigned char __RPC_FAR * StateTable;
+ unsigned long NumberOfEntries;
+ } RefIdToPointer;
+
+ /*
+ * Pointer to ref id translation information.
+ */
+ struct
+ {
+ PFULL_PTR_TO_REFID_ELEMENT __RPC_FAR * XlatTable;
+ unsigned long NumberOfBuckets;
+ unsigned long HashMask;
+ } PointerToRefId;
+
+ /*
+ * Next ref id to use.
+ */
+ unsigned long NextRefId;
+
+ /*
+ * Keep track of the translation size we're handling : server or client.
+ * This tells us when we have to do reverse translations when we insert
+ * new translations. On the server we must insert a pointer-to-refid
+ * translation whenever we insert a refid-to-pointer translation, and
+ * vica versa for the client.
+ */
+ XLAT_SIDE XlatSide;
+ } FULL_PTR_XLAT_TABLES, __RPC_FAR *PFULL_PTR_XLAT_TABLES;
+
+/***************************************************************************
+ ** New MIDL 2.0 Ndr routine templates
+ ***************************************************************************/
+
+/*
+ * Marshall routines
+ */
+
+void RPC_ENTRY
+NdrSimpleTypeMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned char FormatChar
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSimpleStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrHardStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrFixedArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrByteCountPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrXmitOrRepAsMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo interface pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrInterfacePointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Context handles */
+
+void RPC_ENTRY
+NdrClientContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT ContextHandle,
+ int fCheck
+ );
+
+void RPC_ENTRY
+NdrServerContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_SCONTEXT ContextHandle,
+ NDR_RUNDOWN RundownRoutine
+ );
+
+/*
+ * Unmarshall routines
+ */
+
+void RPC_ENTRY
+NdrSimpleTypeUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned char FormatChar
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Structures */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSimpleStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrHardStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Arrays */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrFixedArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Strings */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Unions */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Byte count pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrByteCountPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Transmit as and represent as*/
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrXmitOrRepAsUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* User_marshal */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Cairo interface pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrInterfacePointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Context handles */
+
+void RPC_ENTRY
+NdrClientContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT __RPC_FAR * pContextHandle,
+ RPC_BINDING_HANDLE BindHandle
+ );
+
+NDR_SCONTEXT RPC_ENTRY
+NdrServerContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+/*
+ * Buffer sizing routines
+ */
+
+void RPC_ENTRY
+NdrPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+void RPC_ENTRY
+NdrSimpleStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrHardStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+void RPC_ENTRY
+NdrFixedArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+void RPC_ENTRY
+NdrConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+void RPC_ENTRY
+NdrEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count pointer */
+
+void RPC_ENTRY
+NdrByteCountPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+void RPC_ENTRY
+NdrXmitOrRepAsBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+void RPC_ENTRY
+NdrUserMarshalBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+void RPC_ENTRY
+NdrInterfacePointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+// Context Handle size
+//
+void RPC_ENTRY
+NdrContextHandleSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Memory sizing routines
+ */
+
+unsigned long RPC_ENTRY
+NdrPointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+unsigned long RPC_ENTRY
+NdrSimpleStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantVaryingStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrHardStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrComplexStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+unsigned long RPC_ENTRY
+NdrFixedArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrComplexArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+unsigned long RPC_ENTRY
+NdrConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrNonConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+unsigned long RPC_ENTRY
+NdrEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrNonEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+unsigned long RPC_ENTRY
+NdrXmitOrRepAsMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+unsigned long RPC_ENTRY
+NdrUserMarshalMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+unsigned long RPC_ENTRY
+NdrInterfacePointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Freeing routines
+ */
+
+void RPC_ENTRY
+NdrPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+void RPC_ENTRY
+NdrSimpleStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrHardStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+void RPC_ENTRY
+NdrFixedArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+void RPC_ENTRY
+NdrEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count */
+
+void RPC_ENTRY
+NdrByteCountPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+void RPC_ENTRY
+NdrXmitOrRepAsFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+void RPC_ENTRY
+NdrUserMarshalFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+void RPC_ENTRY
+NdrInterfacePointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Endian conversion routine.
+ */
+
+void RPC_ENTRY
+NdrConvert2(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ long NumberParams
+ );
+
+void RPC_ENTRY
+NdrConvert(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+#define USER_MARSHAL_FC_BYTE 1
+#define USER_MARSHAL_FC_CHAR 2
+#define USER_MARSHAL_FC_SMALL 3
+#define USER_MARSHAL_FC_USMALL 4
+#define USER_MARSHAL_FC_WCHAR 5
+#define USER_MARSHAL_FC_SHORT 6
+#define USER_MARSHAL_FC_USHORT 7
+#define USER_MARSHAL_FC_LONG 8
+#define USER_MARSHAL_FC_ULONG 9
+#define USER_MARSHAL_FC_FLOAT 10
+#define USER_MARSHAL_FC_HYPER 11
+#define USER_MARSHAL_FC_DOUBLE 12
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalSimpleTypeConvert(
+ unsigned long * pFlags,
+ unsigned char * pBuffer,
+ unsigned char FormatChar
+ );
+
+/*
+ * Auxilary routines
+ */
+
+void RPC_ENTRY
+NdrClientInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+void RPC_ENTRY
+NdrServerInitializePartial(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned long RequestedBufferSize
+ );
+
+void RPC_ENTRY
+NdrClientInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitializeUnmarshall (
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PRPC_MESSAGE pRpcMsg
+ );
+
+void RPC_ENTRY
+NdrServerInitializeMarshall (
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNsGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrGetPipeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle );
+
+void RPC_ENTRY
+NdrGetPartialBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR* pBufferEnd
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNsSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pBufferEnd,
+ RPC_BINDING_HANDLE __RPC_FAR * pAutoHandle
+ );
+
+void RPC_ENTRY
+NdrPipeSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_PIPE_DESC * pPipeDesc
+ );
+
+void RPC_ENTRY
+NdrFreeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+/*
+ * Pipe specific calls
+ */
+
+void RPC_ENTRY
+NdrPipesInitialize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pParamDesc,
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc,
+ NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg,
+ char __RPC_FAR * pStackTop,
+ unsigned long NumberParams );
+
+void
+NdrMarkNextActivePipe(
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc,
+ unsigned int DirectionMask );
+
+void RPC_ENTRY
+NdrPipePull(
+ char __RPC_FAR * pState,
+ void __RPC_FAR * buf,
+ unsigned long esize,
+ unsigned long __RPC_FAR * ecount );
+
+void RPC_ENTRY
+NdrPipePush(
+ char __RPC_FAR * pState,
+ void __RPC_FAR * buf,
+ unsigned long ecount );
+
+void RPC_ENTRY
+NdrIsAppDoneWithPipes(
+ NDR_PIPE_DESC * pPipeDesc
+ );
+
+void RPC_ENTRY
+NdrPipesDone(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+/*
+ * Interpeter calls.
+ */
+
+/* client */
+
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+NdrClientCall2(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+NdrClientCall(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+/* server */
+typedef enum {
+ STUB_UNMARSHAL,
+ STUB_CALL_SERVER,
+ STUB_MARSHAL,
+ STUB_CALL_SERVER_NO_HRESULT
+}STUB_PHASE;
+
+typedef enum {
+ PROXY_CALCSIZE,
+ PROXY_GETBUFFER,
+ PROXY_MARSHAL,
+ PROXY_SENDRECEIVE,
+ PROXY_UNMARSHAL
+}PROXY_PHASE;
+
+long RPC_ENTRY
+NdrStubCall2(
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long __RPC_FAR * pdwStubPhase
+ );
+
+void RPC_ENTRY
+NdrServerCall2(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+long RPC_ENTRY
+NdrStubCall (
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long __RPC_FAR * pdwStubPhase
+ );
+
+void RPC_ENTRY
+NdrServerCall(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+int RPC_ENTRY
+NdrServerUnmarshall(
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ void __RPC_FAR * pParamList
+ );
+
+void RPC_ENTRY
+NdrServerMarshall(
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Comm and Fault status */
+
+RPC_STATUS RPC_ENTRY
+NdrMapCommAndFaultStatus(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long __RPC_FAR * pCommStatus,
+ unsigned long __RPC_FAR * pFaultStatus,
+ RPC_STATUS Status
+ );
+
+/* Helper routines */
+
+int RPC_ENTRY
+NdrSH_UPDecision(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ RPC_BUFPTR pBuffer
+ );
+
+int RPC_ENTRY
+NdrSH_TLUPDecision(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem
+ );
+
+int RPC_ENTRY
+NdrSH_TLUPDecisionBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem
+ );
+
+int RPC_ENTRY
+NdrSH_IfAlloc(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+int RPC_ENTRY
+NdrSH_IfAllocRef(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+int RPC_ENTRY
+NdrSH_IfAllocSet(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_IfCopy(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_IfAllocCopy(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+unsigned long RPC_ENTRY
+NdrSH_Copy(
+ unsigned char __RPC_FAR * pStubMsg,
+ unsigned char __RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+void RPC_ENTRY
+NdrSH_IfFree(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR * pPtr );
+
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_StringMarshall(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned long Count,
+ int Size );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_StringUnMarshall(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR *__RPC_FAR * pMemory,
+ int Size );
+
+/****************************************************************************
+ MIDL 2.0 memory package: rpc_ss_* rpc_sm_*
+ ****************************************************************************/
+
+typedef void __RPC_FAR * RPC_SS_THREAD_HANDLE;
+
+typedef void __RPC_FAR * __RPC_API
+RPC_CLIENT_ALLOC (
+ IN size_t Size
+ );
+
+typedef void __RPC_API
+RPC_CLIENT_FREE (
+ IN void __RPC_FAR * Ptr
+ );
+
+/*++
+ RpcSs* package
+--*/
+
+void __RPC_FAR * RPC_ENTRY
+RpcSsAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+RpcSsDisableAllocate (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsEnableAllocate (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+RPC_SS_THREAD_HANDLE RPC_ENTRY
+RpcSsGetThreadHandle (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsSetClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
+ );
+
+void RPC_ENTRY
+RpcSsSetThreadHandle (
+ IN RPC_SS_THREAD_HANDLE Id
+ );
+
+void RPC_ENTRY
+RpcSsSwapClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
+ OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
+ OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
+ );
+
+/*++
+ RpcSm* package
+--*/
+
+void __RPC_FAR * RPC_ENTRY
+RpcSmAllocate (
+ IN size_t Size,
+ OUT RPC_STATUS __RPC_FAR * pStatus
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmClientFree (
+ IN void __RPC_FAR * pNodeToFree
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmDestroyClientContext (
+ IN void __RPC_FAR * __RPC_FAR * ContextHandle
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmDisableAllocate (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmEnableAllocate (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+RPC_SS_THREAD_HANDLE RPC_ENTRY
+RpcSmGetThreadHandle (
+ OUT RPC_STATUS __RPC_FAR * pStatus
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSetClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSetThreadHandle (
+ IN RPC_SS_THREAD_HANDLE Id
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSwapClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
+ OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
+ OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
+ );
+
+/*++
+ Ndr stub entry points
+--*/
+
+void RPC_ENTRY
+NdrRpcSsEnableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void RPC_ENTRY
+NdrRpcSsDisableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void RPC_ENTRY
+NdrRpcSmSetClientToOsf(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void __RPC_FAR * RPC_ENTRY
+NdrRpcSmClientAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrRpcSmClientFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+void __RPC_FAR * RPC_ENTRY
+NdrRpcSsDefaultAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrRpcSsDefaultFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+/****************************************************************************
+ end of memory package: rpc_ss_* rpc_sm_*
+ ****************************************************************************/
+
+/****************************************************************************
+ * Full Pointer APIs
+ ****************************************************************************/
+
+PFULL_PTR_XLAT_TABLES RPC_ENTRY
+NdrFullPointerXlatInit(
+ unsigned long NumberOfPointers,
+ XLAT_SIDE XlatSide
+ );
+
+void RPC_ENTRY
+NdrFullPointerXlatFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables
+ );
+
+int RPC_ENTRY
+NdrFullPointerQueryPointer(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ void __RPC_FAR * pPointer,
+ unsigned char QueryType,
+ unsigned long __RPC_FAR * pRefId
+ );
+
+int RPC_ENTRY
+NdrFullPointerQueryRefId(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ unsigned long RefId,
+ unsigned char QueryType,
+ void __RPC_FAR *__RPC_FAR * ppPointer
+ );
+
+void RPC_ENTRY
+NdrFullPointerInsertRefId(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ unsigned long RefId,
+ void __RPC_FAR * pPointer
+ );
+
+int RPC_ENTRY
+NdrFullPointerFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ void __RPC_FAR * Pointer
+ );
+
+void __RPC_FAR * RPC_ENTRY
+NdrAllocate(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ size_t Len
+ );
+
+void RPC_ENTRY
+NdrClearOutParameters(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ void __RPC_FAR * ArgAddr
+ );
+
+
+/****************************************************************************
+ * Proxy APIs
+ ****************************************************************************/
+
+void __RPC_FAR * RPC_ENTRY
+NdrOleAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrOleFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+#ifdef CONST_VTABLE
+#define CONST_VTBL const
+#else
+#define CONST_VTBL
+#endif
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for DOS, Windows and Mac.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
+#pragma pack()
+#endif
+
+#endif /* __RPCNDR_H__ */
+
+
+
+
+
diff --git a/public/sdk/rpc16/mac/inc/rpcnsi.h b/public/sdk/rpc16/mac/inc/rpcnsi.h
new file mode 100644
index 000000000..362b5bdb4
--- /dev/null
+++ b/public/sdk/rpc16/mac/inc/rpcnsi.h
@@ -0,0 +1,509 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcnsi.h
+
+Abstract:
+
+ This file contains the types and function definitions to use the
+ Name Service Independent APIs.
+
+--*/
+
+#ifndef __RPCNSI_H__
+#define __RPCNSI_H__
+
+typedef void __RPC_FAR * RPC_NS_HANDLE;
+
+#define RPC_C_NS_SYNTAX_DEFAULT 0
+#define RPC_C_NS_SYNTAX_DCE 3
+
+#define RPC_C_PROFILE_DEFAULT_ELT 0
+#define RPC_C_PROFILE_ALL_ELT 1
+#define RPC_C_PROFILE_MATCH_BY_IF 2
+#define RPC_C_PROFILE_MATCH_BY_MBR 3
+#define RPC_C_PROFILE_MATCH_BY_BOTH 4
+
+#define RPC_C_NS_DEFAULT_EXP_AGE -1
+
+/* Server APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingExportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN RPC_BINDING_VECTOR __RPC_FAR * BindingVec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingUnexportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingExportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN RPC_BINDING_VECTOR __RPC_FAR * BindingVec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingUnexportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+#endif
+
+/* Client APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned long BindingMaxCount OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned long BindingMaxCount OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupNext(
+ IN RPC_NS_HANDLE LookupContext,
+ OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVec
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+
+/* Group APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupDeleteA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrAddA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrRemoveA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqBeginA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqNextA(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupDeleteW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrAddW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrRemoveW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqBeginW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqNextW(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Profile APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileDeleteA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltAddA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName,
+ IN unsigned long Priority,
+ IN unsigned char __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltRemoveA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqBeginA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqNextA(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName,
+ OUT unsigned long __RPC_FAR * Priority,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileDeleteW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltAddW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName,
+ IN unsigned long Priority,
+ IN unsigned short __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltRemoveW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqBeginW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqNextW(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName,
+ OUT unsigned long __RPC_FAR * Priority,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Entry object APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqNext(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT UUID __RPC_FAR * ObjUuid
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Management and MISC APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryExpandNameA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ExpandedName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtBindingUnexportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryCreateA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryDeleteA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryInqIfIdsA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVec
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtHandleSetExpAge(
+ IN RPC_NS_HANDLE NsHandle,
+ IN unsigned long ExpirationAge
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtInqExpAge(
+ OUT unsigned long __RPC_FAR * ExpirationAge
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtSetExpAge(
+ IN unsigned long ExpirationAge
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryExpandNameW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ExpandedName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtBindingUnexportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryCreateW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryDeleteW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryInqIfIdsW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVec
+ );
+
+#endif
+
+/* Client API's implemented in wrappers. */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportNext(
+ IN RPC_NS_HANDLE ImportContext,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingSelect(
+ IN OUT RPC_BINDING_VECTOR __RPC_FAR * BindingVec,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#ifdef UNICODE
+
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginW
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginW
+#define RpcNsBindingExport RpcNsBindingExportW
+#define RpcNsBindingUnexport RpcNsBindingUnexportW
+#define RpcNsGroupDelete RpcNsGroupDeleteW
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddW
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveW
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginW
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextW
+#define RpcNsEntryExpandName RpcNsEntryExpandNameW
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginW
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportW
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateW
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteW
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsW
+#define RpcNsProfileDelete RpcNsProfileDeleteW
+#define RpcNsProfileEltAdd RpcNsProfileEltAddW
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveW
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginW
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextW
+
+#else
+
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginA
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginA
+#define RpcNsBindingExport RpcNsBindingExportA
+#define RpcNsBindingUnexport RpcNsBindingUnexportA
+#define RpcNsGroupDelete RpcNsGroupDeleteA
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddA
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveA
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginA
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextA
+#define RpcNsEntryExpandName RpcNsEntryExpandNameA
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginA
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportA
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateA
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteA
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsA
+#define RpcNsProfileDelete RpcNsProfileDeleteA
+#define RpcNsProfileEltAdd RpcNsProfileEltAddA
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveA
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginA
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextA
+
+#endif /* UNICODE */
+
+#endif /* __RPCNSI_H__ */
diff --git a/public/sdk/rpc16/mac/inc/rpcnsip.h b/public/sdk/rpc16/mac/inc/rpcnsip.h
new file mode 100644
index 000000000..0db0140b0
--- /dev/null
+++ b/public/sdk/rpc16/mac/inc/rpcnsip.h
@@ -0,0 +1,72 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcnsip.h
+
+Abstract:
+
+ This file contains the types and function definitions to use the
+ to implement the autohandle features of the runtime.
+
+--*/
+
+#ifndef __RPCNSIP_H__
+#define __RPCNSIP_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct
+{
+ RPC_NS_HANDLE LookupContext;
+ RPC_BINDING_HANDLE ProposedHandle;
+ RPC_BINDING_VECTOR * Bindings;
+
+} RPC_IMPORT_CONTEXT_P, * PRPC_IMPORT_CONTEXT_P;
+
+
+/* Stub Auto Binding routines. */
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsGetBuffer(
+ IN PRPC_MESSAGE Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsSendReceive(
+ IN PRPC_MESSAGE Message,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Handle
+ );
+
+void RPC_ENTRY
+I_RpcNsRaiseException(
+ IN PRPC_MESSAGE Message,
+ IN RPC_STATUS Status
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcReBindBuffer(
+ IN PRPC_MESSAGE Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_NsServerBindSearch(
+ );
+
+RPC_STATUS RPC_ENTRY
+I_NsClientBindSearch(
+ );
+
+void RPC_ENTRY
+I_NsClientBindDone(
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RPCNSIP_H__ */
diff --git a/public/sdk/rpc16/mppc/inc/midles.h b/public/sdk/rpc16/mppc/inc/midles.h
new file mode 100644
index 000000000..b64e4fe61
--- /dev/null
+++ b/public/sdk/rpc16/mppc/inc/midles.h
@@ -0,0 +1,218 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ midles.h
+
+Abstract:
+
+ This module contains definitions needed for encoding/decoding
+ support (serializing/deserializing a.k.a. pickling).
+
+--*/
+
+#ifndef __MIDLES_H__
+#define __MIDLES_H__
+
+#include <rpcndr.h>
+
+//
+// Set the packing level for RPC structures for Dos and Windows.
+//
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack(2)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pickling support
+ */
+typedef enum
+{
+ MES_ENCODE,
+ MES_DECODE,
+} MIDL_ES_CODE;
+
+typedef enum
+{
+ MES_INCREMENTAL_HANDLE,
+ MES_FIXED_BUFFER_HANDLE,
+ MES_DYNAMIC_BUFFER_HANDLE
+} MIDL_ES_HANDLE_STYLE;
+
+
+typedef void (__RPC_USER * MIDL_ES_ALLOC )
+ ( IN OUT void __RPC_FAR * state,
+ OUT char __RPC_FAR * __RPC_FAR * pbuffer,
+ IN OUT unsigned int __RPC_FAR * psize );
+
+typedef void (__RPC_USER * MIDL_ES_WRITE)
+ ( IN OUT void __RPC_FAR * state,
+ IN char __RPC_FAR * buffer,
+ IN unsigned int size );
+
+typedef void (__RPC_USER * MIDL_ES_READ)
+ ( IN OUT void __RPC_FAR * state,
+ OUT char __RPC_FAR * __RPC_FAR * pbuffer,
+ IN OUT unsigned int __RPC_FAR * psize );
+
+typedef struct _MIDL_ES_MESSAGE
+{
+ MIDL_STUB_MESSAGE StubMsg;
+ MIDL_ES_CODE Operation;
+ void __RPC_FAR * UserState;
+ unsigned long MesVersion:8;
+ unsigned long HandleStyle:8;
+ unsigned long HandleFlags:8;
+ unsigned long Reserve:8;
+ MIDL_ES_ALLOC Alloc;
+ MIDL_ES_WRITE Write;
+ MIDL_ES_READ Read;
+ unsigned char __RPC_FAR * Buffer;
+ unsigned long BufferSize;
+ unsigned char __RPC_FAR * __RPC_FAR * pDynBuffer;
+ unsigned long __RPC_FAR * pEncodedSize;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ unsigned long ProcNumber;
+ unsigned long AlienDataRep;
+ unsigned long IncrDataSize;
+ unsigned long ByteCount;
+} MIDL_ES_MESSAGE, __RPC_FAR * PMIDL_ES_MESSAGE;
+
+typedef PMIDL_ES_MESSAGE MIDL_ES_HANDLE;
+
+RPC_STATUS RPC_ENTRY
+MesEncodeIncrementalHandleCreate(
+ void __RPC_FAR * UserState,
+ MIDL_ES_ALLOC AllocFn,
+ MIDL_ES_WRITE WriteFn,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesDecodeIncrementalHandleCreate(
+ void __RPC_FAR * UserState,
+ MIDL_ES_READ ReadFn,
+ handle_t __RPC_FAR * pHandle );
+
+
+RPC_STATUS RPC_ENTRY
+MesIncrementalHandleReset(
+ handle_t Handle,
+ void __RPC_FAR * UserState,
+ MIDL_ES_ALLOC AllocFn,
+ MIDL_ES_WRITE WriteFn,
+ MIDL_ES_READ ReadFn,
+ MIDL_ES_CODE Operation );
+
+
+RPC_STATUS RPC_ENTRY
+MesEncodeFixedBufferHandleCreate(
+ char __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ unsigned long __RPC_FAR * pEncodedSize,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesEncodeDynBufferHandleCreate(
+ char __RPC_FAR * __RPC_FAR * pBuffer,
+ unsigned long __RPC_FAR * pEncodedSize,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesDecodeBufferHandleCreate(
+ char __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ handle_t __RPC_FAR * pHandle );
+
+
+RPC_STATUS RPC_ENTRY
+MesBufferHandleReset(
+ handle_t Handle,
+ unsigned long HandleStyle,
+ MIDL_ES_CODE Operation,
+ char __RPC_FAR * __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ unsigned long __RPC_FAR * pEncodedSize );
+
+
+RPC_STATUS RPC_ENTRY
+MesHandleFree( handle_t Handle );
+
+RPC_STATUS RPC_ENTRY
+MesInqProcEncodingId(
+ handle_t Handle,
+ PRPC_SYNTAX_IDENTIFIER pInterfaceId,
+ unsigned long __RPC_FAR * pProcNum );
+
+
+#if defined(_MIPS_) || defined(_ALPHA_) || defined(_PPC_)
+#define __RPC_UNALIGNED __unaligned
+#else
+#define __RPC_UNALIGNED
+#endif
+
+void RPC_ENTRY I_NdrMesMessageInit( PMIDL_STUB_MESSAGE );
+
+size_t RPC_ENTRY
+NdrMesSimpleTypeAlignSize ( handle_t );
+
+void RPC_ENTRY
+NdrMesSimpleTypeDecode(
+ handle_t Handle,
+ void __RPC_FAR * pObject,
+ short Size );
+
+void RPC_ENTRY
+NdrMesSimpleTypeEncode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ void __RPC_FAR * pObject,
+ short Size );
+
+
+size_t RPC_ENTRY
+NdrMesTypeAlignSize(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_ENTRY
+NdrMesTypeEncode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_ENTRY
+NdrMesTypeDecode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_VAR_ENTRY
+NdrMesProcEncodeDecode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ ... );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for DOS and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack()
+#endif
+
+#endif /* __MIDLES_H__ */
diff --git a/public/sdk/rpc16/mppc/inc/rpc.h b/public/sdk/rpc16/mppc/inc/rpc.h
new file mode 100644
index 000000000..6b1bfafde
--- /dev/null
+++ b/public/sdk/rpc16/mppc/inc/rpc.h
@@ -0,0 +1,71 @@
+/*++
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ rpc.h
+
+Abstract:
+
+ Master include file for RPC applications.
+
+--*/
+
+#ifndef __RPC_H__
+#define __RPC_H__
+
+// Set the packing level for RPC structures.
+
+#pragma pack(2)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __RPC_MAC__
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+typedef long RPC_STATUS;
+
+#include <setjmp.h>
+
+#define RPCXCWORD (sizeof(jmp_buf)/sizeof(int))
+
+#define __RPC_FAR
+#define __RPC_API __stdcall
+#define __RPC_USER __stdcall
+#define __RPC_STUB __stdcall
+#define RPC_ENTRY __stdcall
+
+typedef void * I_RPC_HANDLE;
+#pragma warning( disable: 4005 )
+#include "rpcdce.h"
+#include "rpcnsi.h"
+#include "rpcerr.h"
+#include "rpcmac.h"
+#pragma warning( default : 4005 )
+
+typedef void (RPC_ENTRY *MACYIELDCALLBACK)(/*OSErr*/ short *) ;
+RPC_STATUS RPC_ENTRY
+RpcMacSetYieldInfo(
+ MACYIELDCALLBACK pfnCallback) ;
+
+#ifdef __cplusplus
+}
+#endif
+
+#if !defined(UNALIGNED)
+#define UNALIGNED
+#endif
+
+// Reset the packing level.
+#pragma pack()
+
+#endif // __RPC_H__
+ \ No newline at end of file
diff --git a/public/sdk/rpc16/mppc/inc/rpcdce.h b/public/sdk/rpc16/mppc/inc/rpcdce.h
new file mode 100644
index 000000000..099457ea4
--- /dev/null
+++ b/public/sdk/rpc16/mppc/inc/rpcdce.h
@@ -0,0 +1,1618 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcdce.h
+
+Abstract:
+
+ This module contains the DCE RPC runtime APIs.
+
+--*/
+
+#ifndef __RPCDCE_H__
+#define __RPCDCE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IN
+#define OUT
+#define OPTIONAL
+
+/*typedef char small;*/
+/*typedef unsigned char byte;*/
+/*typedef unsigned char boolean;*/
+
+typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
+typedef RPC_BINDING_HANDLE handle_t;
+#define rpc_binding_handle_t RPC_BINDING_HANDLE
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#ifndef UUID_DEFINED
+#define UUID_DEFINED
+typedef GUID UUID;
+#ifndef uuid_t
+#define uuid_t UUID
+#endif
+#endif
+
+typedef struct _RPC_BINDING_VECTOR
+{
+ unsigned long Count;
+ RPC_BINDING_HANDLE BindingH[1];
+} RPC_BINDING_VECTOR;
+#ifndef rpc_binding_vector_t
+#define rpc_binding_vector_t RPC_BINDING_VECTOR
+#endif
+
+typedef struct _UUID_VECTOR
+{
+ unsigned long Count;
+ UUID *Uuid[1];
+} UUID_VECTOR;
+#ifndef uuid_vector_t
+#define uuid_vector_t UUID_VECTOR
+#endif
+
+typedef void __RPC_FAR * RPC_IF_HANDLE;
+
+#ifndef IFID_DEFINED
+#define IFID_DEFINED
+typedef struct _RPC_IF_ID
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_IF_ID;
+#endif
+
+#define RPC_C_BINDING_INFINITE_TIMEOUT 10
+#define RPC_C_BINDING_MIN_TIMEOUT 0
+#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
+#define RPC_C_BINDING_MAX_TIMEOUT 9
+
+#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
+
+#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
+#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
+
+#define RPC_C_BIND_TO_ALL_NICS 1
+#define RPC_C_USE_INTERNET_PORT 1
+#define RPC_C_USE_INTRANET_PORT 2
+
+#ifdef RPC_UNICODE_SUPPORTED
+typedef struct _RPC_PROTSEQ_VECTORA
+{
+ unsigned int Count;
+ unsigned char __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTORA;
+
+typedef struct _RPC_PROTSEQ_VECTORW
+{
+ unsigned int Count;
+ unsigned short __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTORW;
+
+#ifdef UNICODE
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
+#else /* UNICODE */
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+typedef struct _RPC_PROTSEQ_VECTOR
+{
+ unsigned int Count;
+ unsigned char __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTOR;
+
+#endif /* RPC_UNICODE_SUPPORTED */
+typedef struct _RPC_POLICY {
+ unsigned int Length ;
+ unsigned long EndpointFlags ;
+ unsigned long NICFlags ;
+ } RPC_POLICY, __RPC_FAR *PRPC_POLICY ;
+
+typedef void __RPC_USER
+RPC_OBJECT_INQ_FN (
+ IN UUID __RPC_FAR * ObjectUuid,
+ OUT UUID __RPC_FAR * TypeUuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+typedef RPC_STATUS
+RPC_IF_CALLBACK_FN (
+ IN RPC_IF_HANDLE InterfaceUuid,
+ IN void *Context
+ ) ;
+
+#define RPC_MGR_EPV void
+
+typedef struct
+{
+ unsigned int Count;
+ unsigned long Stats[1];
+} RPC_STATS_VECTOR;
+
+#define RPC_C_STATS_CALLS_IN 0
+#define RPC_C_STATS_CALLS_OUT 1
+#define RPC_C_STATS_PKTS_IN 2
+#define RPC_C_STATS_PKTS_OUT 3
+
+typedef struct
+{
+ unsigned long Count;
+ RPC_IF_ID __RPC_FAR * IfId[1];
+} RPC_IF_ID_VECTOR;
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingCopy (
+ IN RPC_BINDING_HANDLE SourceBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingFree (
+ IN OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+/* client */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBindingA (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBindingW (
+ IN unsigned short __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#ifdef UNICODE
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingW
+#else /* UNICODE */
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBinding (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcBindingInqObject (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT UUID __RPC_FAR * ObjectUuid
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingReset (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* RpcBindingServerFromClient : UNSUPPORTED */
+/* RpcBindingSetAuthInfo */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingSetObject (
+ IN RPC_BINDING_HANDLE Binding,
+ IN UUID __RPC_FAR * ObjectUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqDefaultProtectLevel(
+ IN unsigned long AuthnSvc,
+ OUT unsigned long __RPC_FAR *AuthnLevel
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBindingA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBindingW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+#ifdef UNICODE
+#define RpcBindingToStringBinding RpcBindingToStringBindingW
+#else /* UNICODE */
+#define RpcBindingToStringBinding RpcBindingToStringBindingA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBinding (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcBindingVectorFree (
+ IN OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingComposeA (
+ IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned char __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned char __RPC_FAR * Options OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingComposeW (
+ IN unsigned short __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned short __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned short __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned short __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned short __RPC_FAR * Options OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcStringBindingCompose RpcStringBindingComposeW
+#else /* UNICODE */
+#define RpcStringBindingCompose RpcStringBindingComposeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingCompose (
+ IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned char __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned char __RPC_FAR * Options OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParseA (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParseW (
+ IN unsigned short __RPC_FAR * StringBinding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcStringBindingParse RpcStringBindingParseW
+#else /* UNICODE */
+#define RpcStringBindingParse RpcStringBindingParseA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParse (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringFreeA (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringFreeW (
+ IN OUT unsigned short __RPC_FAR * __RPC_FAR * String
+ );
+
+#ifdef UNICODE
+#define RpcStringFree RpcStringFreeW
+#else /* UNICODE */
+#define RpcStringFree RpcStringFreeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringFree (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcIfInqId (
+ IN RPC_IF_HANDLE RpcIfHandle,
+ OUT RPC_IF_ID __RPC_FAR * RpcIfId
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValidA (
+ IN unsigned char __RPC_FAR * Protseq
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValidW (
+ IN unsigned short __RPC_FAR * Protseq
+ );
+
+#ifdef UNICODE
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidW
+#else /* UNICODE */
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValid (
+ IN unsigned char __RPC_FAR * Protseq
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqComTimeout (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned int __RPC_FAR * Timeout
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetComTimeout (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned int Timeout
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetCancelTimeout(
+ long Timeout
+ );
+
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqsA (
+ OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqsW (
+ OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#ifdef UNICODE
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsW
+#else /* UNICODE */
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqs (
+ OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectInqType (
+ IN UUID __RPC_FAR * ObjUuid,
+ OUT UUID __RPC_FAR * TypeUuid OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectSetInqFn (
+ IN RPC_OBJECT_INQ_FN __RPC_FAR * InquiryFn
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectSetType (
+ IN UUID __RPC_FAR * ObjUuid,
+ IN UUID __RPC_FAR * TypeUuid OPTIONAL
+ );
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFreeA (
+ IN OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFreeW (
+ IN OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#ifdef UNICODE
+#define RpcProtseqVectorFree RpcProtseqVectorFreeW
+#else /* UNICODE */
+#define RpcProtseqVectorFree RpcProtseqVectorFreeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFree (
+ IN OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerInqBindings (
+ OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerInqIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
+ OUT RPC_MGR_EPV __RPC_FAR * __RPC_FAR * MgrEpv
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerListen (
+ IN unsigned int MinimumCallThreads,
+ IN unsigned int MaxCalls,
+ IN unsigned int DontWait
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid OPTIONAL,
+ IN RPC_MGR_EPV __RPC_FAR * MgrEpv OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterIfEx (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid,
+ IN RPC_MGR_EPV __RPC_FAR * MgrEpv,
+ IN unsigned int Flags,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_CALLBACK_FN __RPC_FAR *IfCallback
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUnregisterIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
+ IN unsigned int WaitForCallsToComplete
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqs (
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsEx (
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsIf (
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsIfEx (
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseq RpcServerUseProtseqW
+#define RpcServerUseProtseqEx RpcServerUseProtseqExW
+#else /* UNICODE */
+#define RpcServerUseProtseq RpcServerUseProtseqA
+#define RpcServerUseProtseqEx RpcServerUseProtseqExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseq (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned short __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned short __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpW
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExW
+#else /* UNICODE */
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpA
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEp (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfW
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExW
+#else /* UNICODE */
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfA
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIf (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtStatsVectorFree (
+ IN RPC_STATS_VECTOR ** StatsVector
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqStats (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT RPC_STATS_VECTOR ** Statistics
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtIsServerListening (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtStopServerListening (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtWaitServerListen (
+ void
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetServerStackSize (
+ IN unsigned long ThreadStackSize
+ );
+
+/* server */
+void RPC_ENTRY
+RpcSsDontSerializeContext (
+ void
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtEnableIdleCleanup (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqIfIds (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcIfIdVectorFree (
+ IN OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincNameA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincNameW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+#ifdef UNICODE
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameW
+#else /* UNICODE */
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincNameA (
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincNameW (
+ IN unsigned long AuthnSvc,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+#ifdef UNICODE
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameW
+#else /* UNICODE */
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincName (
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcEpResolveBinding (
+ IN RPC_BINDING_HANDLE Binding,
+ IN RPC_IF_HANDLE IfSpec
+ );
+
+/* client */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryNameA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryNameW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+#ifdef UNICODE
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameW
+#else /* UNICODE */
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+typedef void __RPC_FAR * RPC_AUTH_IDENTITY_HANDLE;
+typedef void __RPC_FAR * RPC_AUTHZ_HANDLE;
+
+#define RPC_C_AUTHN_LEVEL_DEFAULT 0
+#define RPC_C_AUTHN_LEVEL_NONE 1
+#define RPC_C_AUTHN_LEVEL_CONNECT 2
+#define RPC_C_AUTHN_LEVEL_CALL 3
+#define RPC_C_AUTHN_LEVEL_PKT 4
+#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
+#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
+
+#define RPC_C_IMP_LEVEL_ANONYMOUS 1
+#define RPC_C_IMP_LEVEL_IDENTIFY 2
+#define RPC_C_IMP_LEVEL_IMPERSONATE 3
+#define RPC_C_IMP_LEVEL_DELEGATE 4
+
+#define RPC_C_QOS_IDENTITY_STATIC 0
+#define RPC_C_QOS_IDENTITY_DYNAMIC 1
+
+#define RPC_C_QOS_CAPABILITIES_DEFAULT 0
+#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 1
+
+#define RPC_C_PROTECT_LEVEL_DEFAULT (RPC_C_AUTHN_LEVEL_DEFAULT)
+#define RPC_C_PROTECT_LEVEL_NONE (RPC_C_AUTHN_LEVEL_NONE)
+#define RPC_C_PROTECT_LEVEL_CONNECT (RPC_C_AUTHN_LEVEL_CONNECT)
+#define RPC_C_PROTECT_LEVEL_CALL (RPC_C_AUTHN_LEVEL_CALL)
+#define RPC_C_PROTECT_LEVEL_PKT (RPC_C_AUTHN_LEVEL_PKT)
+#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
+#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY (RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
+
+#define RPC_C_AUTHN_NONE 0
+#define RPC_C_AUTHN_DCE_PRIVATE 1
+#define RPC_C_AUTHN_DCE_PUBLIC 2
+#define RPC_C_AUTHN_DEC_PUBLIC 4
+#define RPC_C_AUTHN_WINNT 10
+#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFFL
+
+#define RPC_C_SECURITY_QOS_VERSION 1L
+
+typedef struct _RPC_SECURITY_QOS {
+ unsigned long Version;
+ unsigned long Capabilities;
+ unsigned long IdentityTracking;
+ unsigned long ImpersonationType;
+} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+typedef struct _SEC_WINNT_AUTH_IDENTITY
+{
+ char __RPC_FAR *User;
+ char __RPC_FAR *Domain;
+ char __RPC_FAR *Password;
+} SEC_WINNT_AUTH_IDENTITY;
+#else
+
+
+#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
+#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
+ unsigned short __RPC_FAR *User;
+ unsigned long UserLength;
+ unsigned short __RPC_FAR *Domain;
+ unsigned long DomainLength;
+ unsigned short __RPC_FAR *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
+ unsigned char __RPC_FAR *User;
+ unsigned long UserLength;
+ unsigned char __RPC_FAR *Domain;
+ unsigned long DomainLength;
+ unsigned char __RPC_FAR *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
+
+
+#ifdef UNICODE
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W
+#else // UNICODE
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_A
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_A
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_A
+#endif // UNICODE
+#endif // defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+
+#define RPC_C_AUTHZ_NONE 0
+#define RPC_C_AUTHZ_NAME 1
+#define RPC_C_AUTHZ_DCE 2
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClientA (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClientW (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoExA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc,
+ IN RPC_SECURITY_QOS *SecurityQos OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoExW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc, OPTIONAL
+ IN RPC_SECURITY_QOS *SecurityQOS
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoExA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc, OPTIONAL
+ IN unsigned long RpcQosVersion,
+ OUT RPC_SECURITY_QOS *SecurityQOS
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoExW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL,
+ IN unsigned long RpcQosVersion,
+ OUT RPC_SECURITY_QOS *SecurityQOS
+ );
+
+typedef void
+(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ IN void __RPC_FAR * Arg,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long KeyVer,
+ OUT void __RPC_FAR * __RPC_FAR * Key,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfoA (
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfoW (
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientW
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoW
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoW
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoW
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExW
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExW
+#else /* UNICODE */
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientA
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoA
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoA
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoA
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExA
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClient (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfo (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfo (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+typedef void
+(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ IN void __RPC_FAR * Arg,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long KeyVer,
+ OUT void __RPC_FAR * __RPC_FAR * Key,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfo (
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+typedef struct {
+ unsigned char __RPC_FAR * UserName;
+ unsigned char __RPC_FAR * ComputerName;
+ unsigned short Privilege;
+ unsigned long AuthFlags;
+} RPC_CLIENT_INFORMATION1, __RPC_FAR * PRPC_CLIENT_INFORMATION1;
+
+RPC_STATUS RPC_ENTRY
+RpcBindingServerFromClient (
+ IN RPC_BINDING_HANDLE ClientBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * ServerBinding
+ );
+
+void RPC_ENTRY
+RpcRaiseException (
+ IN RPC_STATUS exception
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcTestCancel(
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcCancelThread(
+ IN void * Thread
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidCreate (
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToStringA (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromStringA (
+ IN unsigned char __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToStringW (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromStringW (
+ IN unsigned short __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#ifdef UNICODE
+#define UuidFromString UuidFromStringW
+#define UuidToString UuidToStringW
+#else /* UNICODE */
+#define UuidFromString UuidFromStringA
+#define UuidToString UuidToStringA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToString (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromString (
+ IN unsigned char __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+signed int RPC_ENTRY
+UuidCompare (
+ IN UUID __RPC_FAR * Uuid1,
+ IN UUID __RPC_FAR * Uuid2,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+UuidCreateNil (
+ OUT UUID __RPC_FAR * NilUuid
+ );
+
+int RPC_ENTRY
+UuidEqual (
+ IN UUID __RPC_FAR * Uuid1,
+ IN UUID __RPC_FAR * Uuid2,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+unsigned short RPC_ENTRY
+UuidHash (
+ IN UUID __RPC_FAR * Uuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+int RPC_ENTRY
+UuidIsNil (
+ IN UUID __RPC_FAR * Uuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplaceA (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplaceW (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned short * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterA (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterW (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned short * Annotation
+ );
+
+#ifdef UNICODE
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceW
+#define RpcEpRegister RpcEpRegisterW
+#else /* UNICODE */
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceA
+#define RpcEpRegister RpcEpRegisterA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplace (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegister (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+
+RPC_STATUS RPC_ENTRY
+RpcEpUnregister(
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqTextA (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned char __RPC_FAR * ErrorText
+ );
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqTextW (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned short __RPC_FAR * ErrorText
+ );
+
+#ifdef UNICODE
+#define DceErrorInqText DceErrorInqTextW
+#else /* UNICODE */
+#define DceErrorInqText DceErrorInqTextA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqText (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned char __RPC_FAR * ErrorText
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+#define DCE_C_ERROR_STRING_LEN 256
+
+typedef I_RPC_HANDLE * RPC_EP_INQ_HANDLE;
+
+#define RPC_C_EP_ALL_ELTS 0
+#define RPC_C_EP_MATCH_BY_IF 1
+#define RPC_C_EP_MATCH_BY_OBJ 2
+#define RPC_C_EP_MATCH_BY_BOTH 3
+
+#define RPC_C_VERS_ALL 1
+#define RPC_C_VERS_COMPATIBLE 2
+#define RPC_C_VERS_EXACT 3
+#define RPC_C_VERS_MAJOR_ONLY 4
+#define RPC_C_VERS_UPTO 5
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqBegin (
+ IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption OPTIONAL,
+ IN UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqDone (
+ IN OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNextA (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNextW (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW
+#else /* UNICODE */
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNext (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpUnregister (
+ IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
+ IN RPC_IF_ID __RPC_FAR * IfId,
+ IN RPC_BINDING_HANDLE Binding,
+ IN UUID __RPC_FAR * ObjectUuid OPTIONAL
+ );
+
+typedef int
+(__RPC_API * RPC_MGMT_AUTHORIZATION_FN) (
+ IN RPC_BINDING_HANDLE ClientBinding,
+ IN unsigned long RequestedMgmtOperation,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+#define RPC_C_MGMT_INQ_IF_IDS 0
+#define RPC_C_MGMT_INQ_PRINC_NAME 1
+#define RPC_C_MGMT_INQ_STATS 2
+#define RPC_C_MGMT_IS_SERVER_LISTEN 3
+#define RPC_C_MGMT_STOP_SERVER_LISTEN 4
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetAuthorizationFn (
+ IN RPC_MGMT_AUTHORIZATION_FN AuthorizationFn
+ );
+
+
+#define RPC_C_PARM_MAX_PACKET_LENGTH 1
+#define RPC_C_PARM_BUFFER_LENGTH 2
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqParameter (
+ IN unsigned Parameter,
+ IN unsigned long __RPC_FAR * Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetParameter (
+ IN unsigned Parameter,
+ IN unsigned long Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtBindingInqParameter (
+ IN RPC_BINDING_HANDLE Handle,
+ IN unsigned Parameter,
+ IN unsigned long __RPC_FAR * Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtBindingSetParameter (
+ IN RPC_BINDING_HANDLE Handle,
+ IN unsigned Parameter,
+ IN unsigned long Value
+ );
+
+#define RPC_IF_AUTOLISTEN 0x0001
+#define RPC_IF_OLE 0x0002
+
+#include <rpcdcep.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RPCDCE_H__ */
diff --git a/public/sdk/rpc16/mppc/inc/rpcdcep.h b/public/sdk/rpc16/mppc/inc/rpcdcep.h
new file mode 100644
index 000000000..85ed0fd67
--- /dev/null
+++ b/public/sdk/rpc16/mppc/inc/rpcdcep.h
@@ -0,0 +1,415 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcdcep.h
+
+Abstract:
+
+ This module contains the private RPC runtime APIs for use by the
+ stubs and by support libraries. Applications must not call these
+ routines.
+
+--*/
+
+#ifndef __RPCDCEP_H__
+#define __RPCDCEP_H__
+
+// Set the packing level for RPC structures for Dos and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack(2)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _RPC_VERSION {
+ unsigned short MajorVersion;
+ unsigned short MinorVersion;
+} RPC_VERSION;
+
+typedef struct _RPC_SYNTAX_IDENTIFIER {
+ GUID SyntaxGUID;
+ RPC_VERSION SyntaxVersion;
+} RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
+
+typedef struct _RPC_MESSAGE
+{
+ RPC_BINDING_HANDLE Handle;
+ unsigned long DataRepresentation;
+ void __RPC_FAR * Buffer;
+ unsigned int BufferLength;
+ unsigned int ProcNum;
+ PRPC_SYNTAX_IDENTIFIER TransferSyntax;
+ void __RPC_FAR * RpcInterfaceInformation;
+ void __RPC_FAR * ReservedForRuntime;
+ RPC_MGR_EPV __RPC_FAR * ManagerEpv;
+ void __RPC_FAR * ImportContext;
+ unsigned long RpcFlags;
+} RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
+
+
+typedef RPC_STATUS RPC_ENTRY RPC_FORWARD_FUNCTION(
+ IN UUID __RPC_FAR * InterfaceId,
+ IN RPC_VERSION __RPC_FAR * InterfaceVersion,
+ IN UUID __RPC_FAR * ObjectId,
+ IN unsigned char __RPC_FAR * Rpcpro,
+ IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
+
+/*
+ * Types of function calls for datagram rpc
+ */
+
+#define RPC_NCA_FLAGS_DEFAULT 0x00000000 /* 0b000...000 */
+#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001 /* 0b000...001 */
+#define RPC_NCA_FLAGS_BROADCAST 0x00000002 /* 0b000...010 */
+#define RPC_NCA_FLAGS_MAYBE 0x00000004 /* 0b000...100 */
+
+#define RPC_BUFFER_COMPLETE 0x00001000 /* used by pipes */
+#define RPC_BUFFER_PARTIAL 0x00002000 /* used by pipes */
+#define RPC_BUFFER_EXTRA 0x00004000 /* used by pipes */
+
+#define RPCFLG_NON_NDR 0x80000000UL
+#define RPCFLG_ASYNCHRONOUS 0x40000000UL
+#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000UL
+#define RPCFLG_LOCAL_CALL 0x10000000UL
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#define RPC_FLAGS_VALID_BIT 0x8000
+#endif
+
+#if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
+#define RPC_FLAGS_VALID_BIT 0x00008000
+#endif
+
+typedef
+void
+(__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
+ IN OUT PRPC_MESSAGE Message
+ );
+
+typedef struct {
+ unsigned int DispatchTableCount;
+ RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
+ int Reserved;
+} RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
+
+typedef struct _RPC_PROTSEQ_ENDPOINT
+{
+ unsigned char __RPC_FAR * RpcProtocolSequence;
+ unsigned char __RPC_FAR * Endpoint;
+} RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
+
+/*
+Both of these types MUST start with the InterfaceId and TransferSyntax.
+Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
+*/
+#define NT351_INTERFACE_SIZE 0x40
+#define RPC_INTERFACE_HAS_PIPES 0x0001
+
+typedef struct _RPC_SERVER_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
+ void const __RPC_FAR *InterpreterInfo;
+ unsigned int Flags ;
+} RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
+
+typedef struct _RPC_CLIENT_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ unsigned long Reserved;
+ void const __RPC_FAR * InterpreterInfo;
+ unsigned int Flags ;
+} RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSendReceive (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcFreeBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSend (
+ IN OUT PRPC_MESSAGE Message
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcReceive (
+ IN OUT PRPC_MESSAGE Message,
+ IN unsigned int Size
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcFreePipeBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcReallocPipeBuffer (
+ IN PRPC_MESSAGE Message,
+ IN unsigned int NewSize
+ ) ;
+
+typedef void * I_RPC_MUTEX;
+
+void RPC_ENTRY
+I_RpcRequestMutex (
+ IN OUT I_RPC_MUTEX * Mutex
+ );
+
+void RPC_ENTRY
+I_RpcClearMutex (
+ IN I_RPC_MUTEX Mutex
+ );
+
+void RPC_ENTRY
+I_RpcDeleteMutex (
+ IN I_RPC_MUTEX Mutex
+ );
+
+void __RPC_FAR * RPC_ENTRY
+I_RpcAllocate (
+ IN unsigned int Size
+ );
+
+void RPC_ENTRY
+I_RpcFree (
+ IN void __RPC_FAR * Object
+ );
+
+void RPC_ENTRY
+I_RpcPauseExecution (
+ IN unsigned long Milliseconds
+ );
+
+typedef
+void
+(__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
+ void __RPC_FAR * AssociationContext
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcMonitorAssociation (
+ IN RPC_BINDING_HANDLE Handle,
+ IN PRPC_RUNDOWN RundownRoutine,
+ IN void * Context
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcStopMonitorAssociation (
+ IN RPC_BINDING_HANDLE Handle
+ );
+
+RPC_BINDING_HANDLE RPC_ENTRY
+I_RpcGetCurrentCallHandle(
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetAssociationContext (
+ OUT void __RPC_FAR * __RPC_FAR * AssociationContext
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSetAssociationContext (
+ IN void __RPC_FAR * AssociationContext
+ );
+
+#ifdef __RPC_NT__
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsBindingSetEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+#else
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsBindingSetEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+#endif
+
+#ifdef __RPC_NT__
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqDynamicEndpoint (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
+ );
+
+#else
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqDynamicEndpoint (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
+ );
+
+#endif
+
+#define TRANSPORT_TYPE_CN 0x1
+#define TRANSPORT_TYPE_DG 0x2
+#define TRANSPORT_TYPE_LPC 0x4
+#define TRANSPORT_TYPE_WMSG 0x8
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqTransportType (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned int __RPC_FAR * Type
+ );
+
+typedef struct _RPC_TRANSFER_SYNTAX
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_TRANSFER_SYNTAX;
+
+RPC_STATUS RPC_ENTRY
+I_RpcIfInqTransferSyntaxes (
+ IN RPC_IF_HANDLE RpcIfHandle,
+ OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
+ IN unsigned int TransferSyntaxSize,
+ OUT unsigned int __RPC_FAR * TransferSyntaxCount
+ );
+
+RPC_STATUS RPC_ENTRY
+I_UuidCreate (
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingCopy (
+ IN RPC_BINDING_HANDLE SourceBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingIsClientLocal (
+ IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
+ OUT unsigned int __RPC_FAR * ClientLocalFlag
+ );
+
+void RPC_ENTRY
+I_RpcSsDontSerializeContext (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcLaunchDatagramReceiveThread(
+ void __RPC_FAR * pAddress
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerRegisterForwardFunction (
+ IN RPC_FORWARD_FUNCTION __RPC_FAR * pForwardFunction
+ );
+
+
+RPC_STATUS RPC_ENTRY
+I_RpcConnectionInqSockBuffSize(
+ OUT unsigned long __RPC_FAR * RecvBuffSize,
+ OUT unsigned long __RPC_FAR * SendBuffSize
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcConnectionSetSockBuffSize(
+ IN unsigned long RecvBuffSize,
+ IN unsigned long SendBuffSize
+ );
+
+
+#ifdef MSWMSG
+RPC_STATUS RPC_ENTRY
+I_RpcServerStartListening(
+ HWND hWnd
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerStopListening(
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetThreadWindowHandle(
+ OUT HWND *WindowHandle
+ ) ;
+
+typedef RPC_STATUS (*RPC_BLOCKING_FN) (
+ IN void *wnd,
+ IN void *Context,
+ IN HANDLE hSyncEvent
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcAsyncSendReceive(
+ IN OUT PRPC_MESSAGE pRpcMessage,
+ IN OPTIONAL void *Context,
+ HWND hWnd
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingSetAsync(
+ IN RPC_BINDING_HANDLE Binding,
+ IN RPC_BLOCKING_FN BlockingFn
+ ) ;
+
+LONG RPC_ENTRY
+I_RpcWindowProc(
+ IN HWND hWnd,
+ IN UINT Message,
+ IN WPARAM wParam,
+ IN LPARAM lParam
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcSetWMsgEndpoint (
+ IN WCHAR __RPC_FAR * Endpoint
+ ) ;
+#endif
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerInqTransportType(
+ OUT unsigned int __RPC_FAR * Type
+ ) ;
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for Dos and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack()
+#endif
+
+#endif /* __RPCDCEP_H__ */
diff --git a/public/sdk/rpc16/mppc/inc/rpcerr.h b/public/sdk/rpc16/mppc/inc/rpcerr.h
new file mode 100644
index 000000000..139df1b1b
--- /dev/null
+++ b/public/sdk/rpc16/mppc/inc/rpcerr.h
@@ -0,0 +1,188 @@
+/*********************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1987-1990 **/
+/** **/
+/** Rpc Error Codes from the compiler and runtime **/
+/** **/
+/*********************************************************/
+
+/*
+If you change this file, you must also change ntstatus.mc and winerror.mc
+*/
+
+#ifndef __RPCERR_H__
+#define __RPCERR_H__
+
+#define RPC_S_OK 0
+#define RPC_S_INVALID_ARG 1
+#define RPC_S_INVALID_STRING_BINDING 2
+#define RPC_S_OUT_OF_MEMORY 3
+#define RPC_S_WRONG_KIND_OF_BINDING 4
+#define RPC_S_INVALID_BINDING 5
+#define RPC_S_PROTSEQ_NOT_SUPPORTED 6
+#define RPC_S_INVALID_RPC_PROTSEQ 7
+#define RPC_S_INVALID_STRING_UUID 8
+#define RPC_S_INVALID_ENDPOINT_FORMAT 9
+
+#define RPC_S_INVALID_NET_ADDR 10
+#define RPC_S_INVALID_NAF_ID 11
+#define RPC_S_NO_ENDPOINT_FOUND 12
+#define RPC_S_INVALID_TIMEOUT 13
+#define RPC_S_OBJECT_NOT_FOUND 14
+#define RPC_S_ALREADY_REGISTERED 15
+#define RPC_S_TYPE_ALREADY_REGISTERED 16
+#define RPC_S_ALREADY_LISTENING 17
+#define RPC_S_NO_PROTSEQS_REGISTERED 18
+#define RPC_S_NOT_LISTENING 19
+
+#define RPC_S_OUT_OF_THREADS 20
+#define RPC_S_UNKNOWN_MGR_TYPE 21
+#define RPC_S_UNKNOWN_IF 22
+#define RPC_S_NO_BINDINGS 23
+#define RPC_S_NO_PROTSEQS 24
+#define RPC_S_CANT_CREATE_ENDPOINT 25
+#define RPC_S_OUT_OF_RESOURCES 26
+#define RPC_S_SERVER_UNAVAILABLE 27
+#define RPC_S_SERVER_TOO_BUSY 28
+#define RPC_S_INVALID_NETWORK_OPTIONS 29
+
+#define RPC_S_NO_CALL_ACTIVE 30
+#define RPC_S_INVALID_LEVEL 31
+#define RPC_S_CANNOT_SUPPORT 32
+#define RPC_S_CALL_FAILED 33
+#define RPC_S_CALL_FAILED_DNE 34
+#define RPC_S_PROTOCOL_ERROR 35
+
+// Unused.
+
+// Unused.
+
+#define RPC_S_UNSUPPORTED_TRANS_SYN 38
+#define RPC_S_BUFFER_TOO_SMALL 39
+
+#define RPC_S_NO_CONTEXT_AVAILABLE 40
+#define RPC_S_SERVER_OUT_OF_MEMORY 41
+#define RPC_S_UNSUPPORTED_TYPE 42
+#define RPC_S_ZERO_DIVIDE 43
+#define RPC_S_ADDRESS_ERROR 44
+#define RPC_S_FP_DIV_ZERO 45
+#define RPC_S_FP_UNDERFLOW 46
+#define RPC_S_FP_OVERFLOW 47
+#define RPC_S_INVALID_TAG 48
+#define RPC_S_INVALID_BOUND 49
+
+#define RPC_S_NO_ENTRY_NAME 50
+#define RPC_S_INVALID_NAME_SYNTAX 51
+#define RPC_S_UNSUPPORTED_NAME_SYNTAX 52
+#define RPC_S_UUID_LOCAL_ONLY 53
+#define RPC_S_UUID_NO_ADDRESS 54
+#define RPC_S_DUPLICATE_ENDPOINT 55
+#define RPC_S_INVALID_SECURITY_DESC 56
+#define RPC_S_ACCESS_DENIED 57
+#define RPC_S_UNKNOWN_AUTHN_TYPE 58
+#define RPC_S_MAX_CALLS_TOO_SMALL 59
+
+#define RPC_S_STRING_TOO_LONG 60
+#define RPC_S_PROTSEQ_NOT_FOUND 61
+#define RPC_S_PROCNUM_OUT_OF_RANGE 62
+#define RPC_S_BINDING_HAS_NO_AUTH 63
+#define RPC_S_UNKNOWN_AUTHN_SERVICE 64
+#define RPC_S_UNKNOWN_AUTHN_LEVEL 65
+#define RPC_S_INVALID_AUTH_IDENTITY 66
+#define RPC_S_UNKNOWN_AUTHZ_SERVICE 67
+#define EPT_S_INVALID_ENTRY 68
+#define EPT_S_CANT_PERFORM_OP 69
+
+#define EPT_S_NOT_REGISTERED 70
+#define RPC_S_NOTHING_TO_EXPORT 71
+#define RPC_S_INCOMPLETE_NAME 72
+#define RPC_S_UNIMPLEMENTED_API 73
+#define RPC_S_INVALID_VERS_OPTION 74
+#define RPC_S_NO_MORE_MEMBERS 75
+#define RPC_S_NOT_ALL_OBJS_UNEXPORTED 76
+#define RPC_S_INTERFACE_NOT_FOUND 77
+#define RPC_S_ENTRY_ALREADY_EXISTS 78
+#define RPC_S_ENTRY_NOT_FOUND 79
+
+#define RPC_S_NAME_SERVICE_UNAVAILABLE 80
+#define RPC_S_CALL_IN_PROGRESS 81
+#define RPC_S_NO_MORE_BINDINGS 82
+#define RPC_S_GROUP_MEMBER_NOT_FOUND 83
+#define EPT_S_CANT_CREATE 84
+#define RPC_S_INVALID_OBJECT 85
+#define RPC_S_CALL_CANCELLED 86
+#define RPC_S_BINDING_INCOMPLETE 87
+#define RPC_S_COMM_FAILURE 88
+#define RPC_S_UNSUPPORTED_AUTHN_LEVEL 89
+
+#define RPC_S_NO_PRINC_NAME 90
+#define RPC_S_NOT_RPC_ERROR 91
+#define RPC_S_SEC_PKG_ERROR 92
+#define RPC_S_NOT_CANCELLED 93
+#define RPC_S_SEND_INCOMPLETE 94
+
+
+#define RPC_S_INTERNAL_ERROR 100
+
+/* The list of servers available for auto_handle binding has been exhausted. */
+
+#define RPC_X_NO_MORE_ENTRIES 256
+
+/* Insufficient memory available to set up necessary data structures. */
+
+#define RPC_X_NO_MEMORY 257
+
+/* The specified bounds of an array are inconsistent. */
+
+#define RPC_X_INVALID_BOUND 258
+
+/* The discriminant value does not match any of the case values. */
+/* There is no default case. */
+
+#define RPC_X_INVALID_TAG 259
+
+/* The file designated by DCERPCCHARTRANS cannot be opened. */
+
+#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL 260
+
+/* The file containing char translation table has fewer than 512 bytes. */
+
+#define RPC_X_SS_CHAR_TRANS_SHORT_FILE 261
+
+/* A null context handle is passed in an [in] parameter position. */
+
+#define RPC_X_SS_IN_NULL_CONTEXT 262
+
+/* Only raised on the callee side. */
+/* A uuid in an [in] handle does not correspond to any known context. */
+
+#define RPC_X_SS_CONTEXT_MISMATCH 263
+
+/* Only raised on the caller side. */
+/* A uuid in an [in, out] context handle changed during a call. */
+
+#define RPC_X_SS_CONTEXT_DAMAGED 264
+
+#define RPC_X_SS_HANDLES_MISMATCH 265
+
+#define RPC_X_SS_CANNOT_GET_CALL_HANDLE 266
+
+#define RPC_X_NULL_REF_POINTER 267
+
+#define RPC_X_ENUM_VALUE_OUT_OF_RANGE 268
+
+#define RPC_X_BYTE_COUNT_TOO_SMALL 269
+
+#define RPC_X_BAD_STUB_DATA 270
+
+#define RPC_X_INVALID_ES_ACTION 271
+#define RPC_X_WRONG_ES_VERSION 272
+#define RPC_X_WRONG_STUB_VERSION 273
+#define RPC_X_INVALID_BUFFER 274
+#define RPC_X_INVALID_PIPE_OBJECT 275
+#define RPC_X_INVALID_PIPE_OPERATION 276
+#define RPC_X_WRONG_PIPE_VERSION 277
+
+
+#endif /* __RPCERR_H__ */
+
diff --git a/public/sdk/rpc16/mppc/inc/rpcmac.h b/public/sdk/rpc16/mppc/inc/rpcmac.h
new file mode 100644
index 000000000..b5d59d39b
--- /dev/null
+++ b/public/sdk/rpc16/mppc/inc/rpcmac.h
@@ -0,0 +1,121 @@
+/*++
+
+Copyright (c) 1994 Microsoft Corporation
+
+Module Name:
+
+ RpcMac.h
+
+Abstract:
+
+ Macintosh RPC specific exception handler macros.
+
+Author:
+
+ Mario Goertzel [mariogo] 02-Nov-1994
+
+--*/
+
+#ifndef __RPCMAC_H__
+#define __RPCMAC_H__
+
+typedef struct _ExceptionBuff {
+#if _MSC_VER >= 1000
+ jmp_buf registers;
+#else
+ int registers[RPCXCWORD];
+#endif
+ struct _ExceptionBuff __RPC_FAR *pExceptNext;
+} ExceptionBuff, __RPC_FAR *pExceptionBuff;
+
+void RPC_ENTRY RpcSetException(pExceptionBuff);
+void RPC_ENTRY RpcLeaveException(void);
+
+#ifdef _MPPC_
+int __cdecl RpcSetJmp(jmp_buf);
+#else
+#define BLD_RT
+#endif
+
+#ifdef BLD_RT
+#define RpcTryExcept \
+ { \
+ int _exception_code; \
+ ExceptionBuff exception; \
+ RpcSetException(&exception); \
+ \
+ _exception_code = (setjmp(exception.registers)); \
+ \
+ if (!_exception_code) \
+ {
+#else
+#define RpcTryExcept \
+ { \
+ int _exception_code; \
+ ExceptionBuff exception; \
+ RpcSetException(&exception); \
+ \
+ _exception_code = (RpcSetJmp(exception.registers)); \
+ \
+ if (!_exception_code) \
+ {
+#endif
+
+// trystmts
+
+#define RpcExcept(expr) \
+ RpcLeaveException(); \
+ } \
+ else \
+ { \
+ if (!(expr)) \
+ RpcRaiseException(_exception_code);
+
+// exceptstmts
+
+#define RpcEndExcept \
+ } \
+ }
+
+#ifdef BLD_RT
+#define RpcTryFinally \
+ { \
+ int _abnormal_termination; \
+ ExceptionBuff exception; \
+ RpcSetException(&exception); \
+ \
+ _abnormal_termination = (setjmp(exception.registers)); \
+ \
+ if (!_abnormal_termination) \
+ {
+#else
+#define RpcTryFinally \
+ { \
+ int _abnormal_termination; \
+ ExceptionBuff exception; \
+ RpcSetException(&exception); \
+ \
+ _abnormal_termination = (RpcSetJmp(exception.registers)); \
+ \
+ if (!_abnormal_termination) \
+ {
+#endif
+
+// trystmts
+
+#define RpcFinally \
+ RpcLeaveException(); \
+ }
+
+// finallystmts
+
+#define RpcEndFinally \
+ if (_abnormal_termination) \
+ RpcRaiseException(_abnormal_termination); \
+ }
+
+#define RpcExceptionCode() _exception_code
+#define RpcAbnormalTermination() _abnormal_termination
+
+#endif // __RPCMAC_H__
+ \ No newline at end of file
diff --git a/public/sdk/rpc16/mppc/inc/rpcndr.h b/public/sdk/rpc16/mppc/inc/rpcndr.h
new file mode 100644
index 000000000..65d1cdbfe
--- /dev/null
+++ b/public/sdk/rpc16/mppc/inc/rpcndr.h
@@ -0,0 +1,2630 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcndr.h
+
+Abstract:
+
+ Definitions for stub data structures and prototypes of helper functions.
+
+Author:
+
+ DonnaLi (01-01-91)
+
+Environment:
+
+ DOS, Win 3.X, and Win/NT.
+
+Revision History:
+
+ DONNALI 08-29-91 Start recording history
+ donnali 09-11-91 change conversion macros
+ donnali 09-18-91 check in files for moving
+ STEVEZ 10-15-91 Merge with NT tree
+ donnali 10-28-91 add prototype
+ donnali 11-19-91 bugfix for strings
+ MIKEMON 12-17-91 DCE runtime API conversion
+ donnali 03-24-92 change rpc public header f
+ STEVEZ 04-04-92 add nsi include
+ mikemon 04-18-92 security support and misc
+ DovhH 04-24-24 Changed signature of <int>_from_ndr
+ (to unsigned <int>)
+ Added <base_type>_array_from_ndr routines
+ RyszardK 06-17-93 Added support for hyper
+ VibhasC 09-11-93 Created rpcndrn.h
+ DKays 10-14-93 Fixed up rpcndrn.h MIDL 2.0
+ RyszardK 01-15-94 Merged in the midl 2.0 changes from rpcndrn.h
+ Stevebl 04-22-96 Hookole support changes to MIDL_*_INFO
+
+--*/
+
+#ifndef __RPCNDR_H__
+#define __RPCNDR_H__
+
+//
+// Set the packing level for RPC structures for Dos, Windows and Mac.
+//
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
+#pragma pack(2)
+#endif
+
+#if defined(__RPC_MAC__)
+#define _MAC_
+#endif
+
+#include <rpcnsip.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************************
+
+ Network Computing Architecture (NCA) definition:
+
+ Network Data Representation: (NDR) Label format:
+ An unsigned long (32 bits) with the following layout:
+
+ 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
+ +---------------+---------------+---------------+-------+-------+
+ | Reserved | Reserved |Floating point | Int | Char |
+ | | |Representation | Rep. | Rep. |
+ +---------------+---------------+---------------+-------+-------+
+
+ Where
+
+ Reserved:
+
+ Must be zero (0) for NCA 1.5 and NCA 2.0.
+
+ Floating point Representation is:
+
+ 0 - IEEE
+ 1 - VAX
+ 2 - Cray
+ 3 - IBM
+
+ Int Rep. is Integer Representation:
+
+ 0 - Big Endian
+ 1 - Little Endian
+
+ Char Rep. is Character Representation:
+
+ 0 - ASCII
+ 1 - EBCDIC
+
+ The Microsoft Local Data Representation (for all platforms which are
+ of interest currently is edefined below:
+
+ ****************************************************************************/
+
+#define NDR_CHAR_REP_MASK (unsigned long)0X0000000FL
+#define NDR_INT_REP_MASK (unsigned long)0X000000F0L
+#define NDR_FLOAT_REP_MASK (unsigned long)0X0000FF00L
+
+#define NDR_LITTLE_ENDIAN (unsigned long)0X00000010L
+#define NDR_BIG_ENDIAN (unsigned long)0X00000000L
+
+#define NDR_IEEE_FLOAT (unsigned long)0X00000000L
+#define NDR_VAX_FLOAT (unsigned long)0X00000100L
+
+#define NDR_ASCII_CHAR (unsigned long)0X00000000L
+#define NDR_EBCDIC_CHAR (unsigned long)0X00000001L
+
+#if defined(__RPC_MAC__)
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000000L
+#define NDR_LOCAL_ENDIAN NDR_BIG_ENDIAN
+#else
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000010L
+#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
+#endif
+
+
+/****************************************************************************
+ * Macros for targeted platforms
+ ****************************************************************************/
+
+#if (defined(_WIN32_DCOM) || 0x400 <= _WIN32_WINNT)
+#define TARGET_IS_NT40_OR_LATER 1
+#else
+#define TARGET_IS_NT40_OR_LATER 0
+#endif
+
+#if (0x400 <= WINVER)
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1
+#else
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 0
+#endif
+
+/****************************************************************************
+ * Other MIDL base types / predefined types:
+ ****************************************************************************/
+
+#define small char
+typedef unsigned char byte;
+typedef unsigned char boolean;
+
+#ifndef _HYPER_DEFINED
+#define _HYPER_DEFINED
+
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
+#define hyper __int64
+#define MIDL_uhyper unsigned __int64
+#else
+typedef double hyper;
+typedef double MIDL_uhyper;
+#endif
+
+#endif // _HYPER_DEFINED
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+#ifdef __RPC_DOS__
+#define __RPC_CALLEE __far __pascal
+#endif
+
+#ifdef __RPC_WIN16__
+#define __RPC_CALLEE __far __pascal __export
+#endif
+
+#ifdef __RPC_WIN32__
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define __RPC_CALLEE __stdcall
+#else
+#define __RPC_CALLEE
+#endif
+#endif
+
+#ifdef __RPC_MAC__
+#define __RPC_CALLEE __far
+#endif
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifdef __RPC_WIN16__
+#define RPC_VAR_ENTRY __export __cdecl
+#else
+#define RPC_VAR_ENTRY __cdecl
+#endif
+
+
+/* winnt only */
+#if defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA)
+#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport)
+#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport)
+#else
+#define __MIDL_DECLSPEC_DLLIMPORT
+#define __MIDL_DECLSPEC_DLLEXPORT
+#endif
+
+
+
+
+/****************************************************************************
+ * Context handle management related definitions:
+ *
+ * Client and Server Contexts.
+ *
+ ****************************************************************************/
+
+typedef void __RPC_FAR * NDR_CCONTEXT;
+
+typedef struct
+ {
+ void __RPC_FAR * pad[2];
+ void __RPC_FAR * userContext;
+ } __RPC_FAR * NDR_SCONTEXT;
+
+#define NDRSContextValue(hContext) (&(hContext)->userContext)
+
+#define cbNDRContext 20 /* size of context on WIRE */
+
+typedef void (__RPC_USER __RPC_FAR * NDR_RUNDOWN)(void __RPC_FAR * context);
+
+typedef struct _SCONTEXT_QUEUE {
+ unsigned long NumberOfObjects;
+ NDR_SCONTEXT * ArrayOfObjects;
+ } SCONTEXT_QUEUE, __RPC_FAR * PSCONTEXT_QUEUE;
+
+RPC_BINDING_HANDLE RPC_ENTRY
+NDRCContextBinding (
+ IN NDR_CCONTEXT CContext
+ );
+
+void RPC_ENTRY
+NDRCContextMarshall (
+ IN NDR_CCONTEXT CContext,
+ OUT void __RPC_FAR *pBuff
+ );
+
+void RPC_ENTRY
+NDRCContextUnmarshall (
+ OUT NDR_CCONTEXT __RPC_FAR *pCContext,
+ IN RPC_BINDING_HANDLE hBinding,
+ IN void __RPC_FAR *pBuff,
+ IN unsigned long DataRepresentation
+ );
+
+void RPC_ENTRY
+NDRSContextMarshall (
+ IN NDR_SCONTEXT CContext,
+ OUT void __RPC_FAR *pBuff,
+ IN NDR_RUNDOWN userRunDownIn
+ );
+
+NDR_SCONTEXT RPC_ENTRY
+NDRSContextUnmarshall (
+ IN void __RPC_FAR *pBuff,
+ IN unsigned long DataRepresentation
+ );
+
+void RPC_ENTRY
+RpcSsDestroyClientContext (
+ IN void __RPC_FAR * __RPC_FAR * ContextHandle
+ );
+
+
+/****************************************************************************
+ NDR conversion related definitions.
+ ****************************************************************************/
+
+#define byte_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+#define boolean_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+#define small_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define small_from_ndr_temp(source, target, format) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)(source))++; \
+ }
+
+#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+/****************************************************************************
+ Platform specific mapping of c-runtime functions.
+ ****************************************************************************/
+
+#ifdef __RPC_DOS__
+#define MIDL_ascii_strlen(string) \
+ _fstrlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ _fstrcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ _fmemset(s,c,n)
+#endif
+
+#ifdef __RPC_WIN16__
+#define MIDL_ascii_strlen(string) \
+ _fstrlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ _fstrcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ _fmemset(s,c,n)
+#endif
+
+#if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
+#define MIDL_ascii_strlen(string) \
+ strlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ strcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ memset(s,c,n)
+#endif
+
+/****************************************************************************
+ Ndr Library helper function prototypes for MIDL 1.0 ndr functions.
+ ****************************************************************************/
+
+void RPC_ENTRY
+NDRcopy (
+ IN void __RPC_FAR *pTarget,
+ IN void __RPC_FAR *pSource,
+ IN unsigned int size
+ );
+
+size_t RPC_ENTRY
+MIDL_wchar_strlen (
+ IN wchar_t __RPC_FAR * s
+ );
+
+void RPC_ENTRY
+MIDL_wchar_strcpy (
+ OUT void __RPC_FAR * t,
+ IN wchar_t __RPC_FAR * s
+ );
+
+void RPC_ENTRY
+char_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT unsigned char __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+char_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned char __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+short_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT unsigned short __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+short_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned short __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+short_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT unsigned short __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+long_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT unsigned long __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+long_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned long __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+long_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT unsigned long __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+enum_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT unsigned int __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+float_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+float_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+double_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+double_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+hyper_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT hyper __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+hyper_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT hyper __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+hyper_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT hyper __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+data_from_ndr (
+ PRPC_MESSAGE source,
+ void __RPC_FAR * target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+data_into_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_into_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+data_size_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_size_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_peek_ndr (
+ PRPC_MESSAGE source,
+ unsigned char __RPC_FAR * __RPC_FAR * buffer,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void __RPC_FAR * RPC_ENTRY
+midl_allocate (
+ size_t size
+ );
+
+/****************************************************************************
+ MIDL 2.0 ndr definitions.
+ ****************************************************************************/
+
+typedef unsigned long error_status_t;
+
+#define _midl_ma1( p, cast ) *(*( cast **)&p)++
+#define _midl_ma2( p, cast ) *(*( cast **)&p)++
+#define _midl_ma4( p, cast ) *(*( cast **)&p)++
+#define _midl_ma8( p, cast ) *(*( cast **)&p)++
+
+#define _midl_unma1( p, cast ) *(( cast *)p)++
+#define _midl_unma2( p, cast ) *(( cast *)p)++
+#define _midl_unma3( p, cast ) *(( cast *)p)++
+#define _midl_unma4( p, cast ) *(( cast *)p)++
+
+// Some alignment specific macros.
+
+
+#define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe))
+#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc))
+#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8))
+
+#define _midl_addp( p, n ) (p += n)
+
+// Marshalling macros
+
+#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++
+#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p
+#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++
+#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++)
+
+
+////////////////////////////////////////////////////////////////////////////
+// Ndr macros.
+////////////////////////////////////////////////////////////////////////////
+
+#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, \
+ _midl_ma4( p, unsigned long) = 0, \
+ _midl_ma4( p, unsigned long) = l)
+
+#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long),\
+ (_midl_addp(p,4)), \
+ (l=_midl_unma4(p,unsigned long))
+
+#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20)
+
+#define NdrUnMarshCCtxtHdl(pc,p,h,drep) \
+ (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20)
+
+#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep ))
+
+
+#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd)
+
+#define NdrFieldOffset(s,f) (long)(& (((s __RPC_FAR *)0)->f))
+#define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t))
+
+#if defined(__RPC_MAC__)
+#define NdrFcShort(s) (unsigned char)(s >> 8), (unsigned char)(s & 0xff)
+#define NdrFcLong(s) (unsigned char)(s >> 24), (unsigned char)((s & 0x00ff0000) >> 16), \
+ (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)(s & 0xff)
+#else
+#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
+#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \
+ (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
+#endif // Mac
+
+//
+// On the server side, the following exceptions are mapped to
+// the bad stub data exception if -error stub_data is used.
+//
+
+#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER \
+ ( (RpcExceptionCode() == STATUS_ACCESS_VIOLATION) || \
+ (RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \
+ (RpcExceptionCode() == RPC_X_BAD_STUB_DATA) )
+
+/////////////////////////////////////////////////////////////////////////////
+// Some stub helper functions.
+/////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////
+// Stub helper structures.
+////////////////////////////////////////////////////////////////////////////
+
+struct _MIDL_STUB_MESSAGE;
+struct _MIDL_STUB_DESC;
+struct _FULL_PTR_XLAT_TABLES;
+
+typedef unsigned char __RPC_FAR * RPC_BUFPTR;
+typedef unsigned long RPC_LENGTH;
+
+// Expression evaluation callback routine prototype.
+typedef void (__RPC_USER __RPC_FAR * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE __RPC_FAR * );
+
+typedef const unsigned char __RPC_FAR * PFORMAT_STRING;
+
+/*
+ * Multidimensional conformant/varying array struct.
+ */
+typedef struct
+ {
+ long Dimension;
+
+ /* These fields MUST be (unsigned long *) */
+ unsigned long __RPC_FAR * BufferConformanceMark;
+ unsigned long __RPC_FAR * BufferVarianceMark;
+
+ /* Count arrays, used for top level arrays in -Os stubs */
+ unsigned long __RPC_FAR * MaxCountArray;
+ unsigned long __RPC_FAR * OffsetArray;
+ unsigned long __RPC_FAR * ActualCountArray;
+ } ARRAY_INFO, __RPC_FAR *PARRAY_INFO;
+
+/*
+ * Pipe related definitions.
+ */
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_PULL_RTN)(
+ char __RPC_FAR * state,
+ void __RPC_FAR * buf,
+ unsigned long esize,
+ unsigned long __RPC_FAR * ecount );
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_PUSH_RTN)(
+ char __RPC_FAR * state,
+ void __RPC_FAR * buf,
+ unsigned long ecount );
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_ALLOC_RTN)(
+ char __RPC_FAR * state,
+ unsigned long bsize,
+ void __RPC_FAR * __RPC_FAR * buf,
+ unsigned long __RPC_FAR * bcount );
+
+
+typedef struct _GENERIC_PIPE_TYPE
+ {
+ NDR_PIPE_PULL_RTN pfnPull;
+ NDR_PIPE_PUSH_RTN pfnPush;
+ NDR_PIPE_ALLOC_RTN pfnAlloc;
+ char __RPC_FAR * pState;
+ } GENERIC_PIPE_TYPE;
+
+
+typedef struct {
+ int CurrentState;
+ int ElemsInChunk;
+ int ElemAlign;
+ int ElemWireSize;
+ int ElemMemSize;
+ int PartialBufferSize;
+ unsigned char __RPC_FAR * PartialElem;
+ int PartialElemSize;
+ int PartialOffset;
+ int EndOfPipe;
+ } NDR_PIPE_STATE;
+
+typedef struct _PIPE_MESSAGE
+ {
+ unsigned short Signature;
+ unsigned short PipeId;
+ GENERIC_PIPE_TYPE __RPC_FAR * pPipeType;
+ PFORMAT_STRING pTypeFormat;
+ unsigned short PipeStatus;
+ unsigned short PipeFlags;
+ struct _MIDL_STUB_MESSAGE __RPC_FAR * pStubMsg;
+ } NDR_PIPE_MESSAGE, __RPC_FAR * PNDR_PIPE_MESSAGE;
+
+typedef struct _NDR_PIPE_DESC
+ {
+ NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg;
+ short CurrentPipe;
+ short InPipes;
+ short OutPipes;
+ short TotalPipes;
+ short PipeVersion;
+ short Flags;
+ unsigned char __RPC_FAR * DispatchBuffer;
+ unsigned char __RPC_FAR * LastPartialBuffer;
+ unsigned long LastPartialSize;
+ unsigned char __RPC_FAR * BufferSave;
+ unsigned long LengthSave;
+ NDR_PIPE_STATE RuntimeState;
+ } NDR_PIPE_DESC, __RPC_FAR * PNDR_PIPE_DESC;
+
+
+/*
+ * MIDL Stub Message
+ */
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
+#include <pshpack4.h>
+#endif
+
+typedef struct _MIDL_STUB_MESSAGE
+ {
+ /* RPC message structure. */
+ PRPC_MESSAGE RpcMsg;
+
+ /* Pointer into RPC message buffer. */
+ unsigned char __RPC_FAR * Buffer;
+
+ /*
+ * These are used internally by the Ndr routines to mark the beginning
+ * and end of an incoming RPC buffer.
+ */
+ unsigned char __RPC_FAR * BufferStart;
+ unsigned char __RPC_FAR * BufferEnd;
+
+ /*
+ * Used internally by the Ndr routines as a place holder in the buffer.
+ * On the marshalling side it's used to mark the location where conformance
+ * size should be marshalled.
+ * On the unmarshalling side it's used to mark the location in the buffer
+ * used during pointer unmarshalling to base pointer offsets off of.
+ */
+ unsigned char __RPC_FAR * BufferMark;
+
+ /* Set by the buffer sizing routines. */
+ unsigned long BufferLength;
+
+ /* Set by the memory sizing routines. */
+ unsigned long MemorySize;
+
+ /* Pointer to user memory. */
+ unsigned char __RPC_FAR * Memory;
+
+ /* Is the Ndr routine begin called from a client side stub. */
+ int IsClient;
+
+ /* Can the buffer be re-used for memory on unmarshalling. */
+ int ReuseBuffer;
+
+ /* Holds the current pointer to an allocate all nodes memory block. */
+ unsigned char __RPC_FAR * AllocAllNodesMemory;
+
+ /* Used for debugging asserts only, remove later. */
+ unsigned char __RPC_FAR * AllocAllNodesMemoryEnd;
+
+ /*
+ * Stuff needed while handling complex structures
+ */
+
+ /* Ignore imbeded pointers while computing buffer or memory sizes. */
+ int IgnoreEmbeddedPointers;
+
+ /*
+ * This marks the location in the buffer where pointees of a complex
+ * struct reside.
+ */
+ unsigned char __RPC_FAR * PointerBufferMark;
+
+ /*
+ * Used to catch errors in SendReceive.
+ */
+ unsigned char fBufferValid;
+
+ /*
+ * Obsolete unused field (formerly MaxContextHandleNumber).
+ */
+ unsigned char Unused;
+
+ /*
+ * Used internally by the Ndr routines. Holds the max counts for
+ * a conformant array.
+ */
+ unsigned long MaxCount;
+
+ /*
+ * Used internally by the Ndr routines. Holds the offsets for a varying
+ * array.
+ */
+ unsigned long Offset;
+
+ /*
+ * Used internally by the Ndr routines. Holds the actual counts for
+ * a varying array.
+ */
+ unsigned long ActualCount;
+
+ /* Allocation and Free routine to be used by the Ndr routines. */
+ void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
+
+ /*
+ * Top of parameter stack. Used for "single call" stubs during marshalling
+ * to hold the beginning of the parameter list on the stack. Needed to
+ * extract parameters which hold attribute values for top level arrays and
+ * pointers.
+ */
+ unsigned char __RPC_FAR * StackTop;
+
+ /*
+ * Fields used for the transmit_as and represent_as objects.
+ * For represent_as the mapping is: presented=local, transmit=named.
+ */
+ unsigned char __RPC_FAR * pPresentedType;
+ unsigned char __RPC_FAR * pTransmitType;
+
+ /*
+ * When we first construct a binding on the client side, stick it
+ * in the rpcmessage and later call RpcGetBuffer, the handle field
+ * in the rpcmessage is changed. That's fine except that we need to
+ * have that original handle for use in unmarshalling context handles
+ * (the second argument in NDRCContextUnmarshall to be exact). So
+ * stash the contructed handle here and extract it when needed.
+ */
+ handle_t SavedHandle;
+
+ /*
+ * Pointer back to the stub descriptor. Use this to get all handle info.
+ */
+ const struct _MIDL_STUB_DESC __RPC_FAR * StubDesc;
+
+ /*
+ * Full pointer stuff.
+ */
+ struct _FULL_PTR_XLAT_TABLES __RPC_FAR * FullPtrXlatTables;
+
+ unsigned long FullPtrRefId;
+
+ /*
+ * flags
+ */
+
+ int fCheckBounds;
+
+ int fInDontFree :1;
+ int fDontCallFreeInst :1;
+ int fInOnlyParam :1;
+ int fHasReturn :1;
+
+ unsigned long dwDestContext;
+ void __RPC_FAR * pvDestContext;
+
+ NDR_SCONTEXT * SavedContextHandles;
+
+ long ParamNumber;
+
+ struct IRpcChannelBuffer __RPC_FAR * pRpcChannelBuffer;
+
+ PARRAY_INFO pArrayInfo;
+
+ /*
+ * This is where the Beta2 stub message ends.
+ */
+
+ unsigned long __RPC_FAR * SizePtrCountArray;
+ unsigned long __RPC_FAR * SizePtrOffsetArray;
+ unsigned long __RPC_FAR * SizePtrLengthArray;
+
+ /*
+ * Interpreter argument queue. Used on server side only.
+ */
+ void __RPC_FAR * pArgQueue;
+
+ unsigned long dwStubPhase;
+
+ /*
+ * Pipe descriptor, defined for the 4.0 release.
+ */
+
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc;
+
+ unsigned long Reserved[4];
+
+ /*
+ * Fields up to this point present since the 3.50 release.
+ */
+
+ } MIDL_STUB_MESSAGE, __RPC_FAR *PMIDL_STUB_MESSAGE;
+
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
+#include <poppack.h>
+#endif
+
+/*
+ * Generic handle bind/unbind routine pair.
+ */
+typedef void __RPC_FAR *
+ (__RPC_FAR __RPC_API * GENERIC_BINDING_ROUTINE)
+ (void __RPC_FAR *);
+typedef void
+ (__RPC_FAR __RPC_API * GENERIC_UNBIND_ROUTINE)
+ (void __RPC_FAR *, unsigned char __RPC_FAR *);
+
+typedef struct _GENERIC_BINDING_ROUTINE_PAIR
+ {
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_ROUTINE_PAIR, __RPC_FAR *PGENERIC_BINDING_ROUTINE_PAIR;
+
+typedef struct __GENERIC_BINDING_INFO
+ {
+ void __RPC_FAR * pObj;
+ unsigned int Size;
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_INFO, __RPC_FAR *PGENERIC_BINDING_INFO;
+
+// typedef EXPR_EVAL - see above
+// typedefs for xmit_as
+
+#if (defined(_MSC_VER)) && !defined(MIDL_PASS)
+// a Microsoft C++ compiler
+#define NDR_SHAREABLE __inline
+#else
+#define NDR_SHAREABLE static
+#endif
+
+
+typedef void (__RPC_FAR __RPC_USER * XMIT_HELPER_ROUTINE)
+ ( PMIDL_STUB_MESSAGE );
+
+typedef struct _XMIT_ROUTINE_QUINTUPLE
+ {
+ XMIT_HELPER_ROUTINE pfnTranslateToXmit;
+ XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
+ XMIT_HELPER_ROUTINE pfnFreeXmit;
+ XMIT_HELPER_ROUTINE pfnFreeInst;
+ } XMIT_ROUTINE_QUINTUPLE, __RPC_FAR *PXMIT_ROUTINE_QUINTUPLE;
+
+typedef unsigned long
+(__RPC_FAR __RPC_USER * USER_MARSHAL_SIZING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned long,
+ void __RPC_FAR * );
+
+typedef unsigned char __RPC_FAR *
+(__RPC_FAR __RPC_USER * USER_MARSHAL_MARSHALLING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR * ,
+ void __RPC_FAR * );
+
+typedef unsigned char __RPC_FAR *
+(__RPC_FAR __RPC_USER * USER_MARSHAL_UNMARSHALLING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR * ,
+ void __RPC_FAR * );
+
+typedef void (__RPC_FAR __RPC_USER * USER_MARSHAL_FREEING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ void __RPC_FAR * );
+
+typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
+ {
+ USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
+ USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
+ USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
+ USER_MARSHAL_FREEING_ROUTINE pfnFree;
+ } USER_MARSHAL_ROUTINE_QUADRUPLE;
+
+typedef struct _USER_MARSHAL_CB
+{
+ unsigned long Flags;
+ PMIDL_STUB_MESSAGE pStubMsg;
+ PFORMAT_STRING pReserve;
+} USER_MARSHAL_CB;
+
+
+#define USER_CALL_CTXT_MASK(f) ((f) & 0xff)
+#define GET_USER_DATA_REP(f) ((f) >> 16)
+
+typedef struct _MALLOC_FREE_STRUCT
+ {
+ void __RPC_FAR * (__RPC_FAR __RPC_USER * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_USER * pfnFree)(void __RPC_FAR *);
+ } MALLOC_FREE_STRUCT;
+
+typedef struct _COMM_FAULT_OFFSETS
+ {
+ short CommOffset;
+ short FaultOffset;
+ } COMM_FAULT_OFFSETS;
+
+/*
+ * MIDL Stub Descriptor
+ */
+
+typedef struct _MIDL_STUB_DESC
+ {
+
+ void __RPC_FAR * RpcInterfaceInformation;
+
+ void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
+
+ union
+ {
+ handle_t __RPC_FAR * pAutoHandle;
+ handle_t __RPC_FAR * pPrimitiveHandle;
+ PGENERIC_BINDING_INFO pGenericBindingInfo;
+ } IMPLICIT_HANDLE_INFO;
+
+ const NDR_RUNDOWN __RPC_FAR * apfnNdrRundownRoutines;
+ const GENERIC_BINDING_ROUTINE_PAIR __RPC_FAR * aGenericBindingRoutinePairs;
+
+ const EXPR_EVAL __RPC_FAR * apfnExprEval;
+
+ const XMIT_ROUTINE_QUINTUPLE __RPC_FAR * aXmitQuintuple;
+
+ const unsigned char __RPC_FAR * pFormatTypes;
+
+ int fCheckBounds;
+
+ /* Ndr library version. */
+ unsigned long Version;
+
+ /*
+ * Reserved for future use. (no reserves )
+ */
+
+ MALLOC_FREE_STRUCT __RPC_FAR * pMallocFreeStruct;
+
+ long MIDLVersion;
+
+ const COMM_FAULT_OFFSETS __RPC_FAR * CommFaultOffsets;
+
+ // New fields for version 3.0+
+
+ const USER_MARSHAL_ROUTINE_QUADRUPLE __RPC_FAR * aUserMarshalQuadruple;
+
+ long Reserved1;
+ long Reserved2;
+ long Reserved3;
+ long Reserved4;
+ long Reserved5;
+
+ } MIDL_STUB_DESC;
+
+typedef const MIDL_STUB_DESC __RPC_FAR * PMIDL_STUB_DESC;
+
+typedef void __RPC_FAR * PMIDL_XMIT_TYPE;
+
+/*
+ * MIDL Stub Format String. This is a const in the stub.
+ */
+#if !defined( RC_INVOKED )
+#pragma warning( disable:4200 )
+#endif
+typedef struct _MIDL_FORMAT_STRING
+ {
+ short Pad;
+ unsigned char Format[];
+ } MIDL_FORMAT_STRING;
+#if !defined( RC_INVOKED )
+#pragma warning( default:4200 )
+#endif
+
+/*
+ * Stub thunk used for some interpreted server stubs.
+ */
+typedef void (__RPC_FAR __RPC_API * STUB_THUNK)( PMIDL_STUB_MESSAGE );
+
+typedef long (__RPC_FAR __RPC_API * SERVER_ROUTINE)();
+
+/*
+ * Server Interpreter's information strucuture.
+ */
+typedef struct _MIDL_SERVER_INFO_
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ const SERVER_ROUTINE * DispatchTable;
+ PFORMAT_STRING ProcString;
+ const unsigned short * FmtStringOffset;
+ const STUB_THUNK * ThunkTable;
+ PFORMAT_STRING LocalFormatTypes;
+ PFORMAT_STRING LocalProcString;
+ const unsigned short * LocalFmtStringOffset;
+ } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
+
+/*
+ * Stubless object proxy information structure.
+ */
+typedef struct _MIDL_STUBLESS_PROXY_INFO
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ PFORMAT_STRING ProcFormatString;
+ const unsigned short __RPC_FAR * FormatStringOffset;
+ PFORMAT_STRING LocalFormatTypes;
+ PFORMAT_STRING LocalProcString;
+ const unsigned short __RPC_FAR * LocalFmtStringOffset;
+ } MIDL_STUBLESS_PROXY_INFO;
+
+typedef MIDL_STUBLESS_PROXY_INFO __RPC_FAR * PMIDL_STUBLESS_PROXY_INFO;
+
+/*
+ * This is the return value from NdrClientCall.
+ */
+typedef union _CLIENT_CALL_RETURN
+ {
+ void __RPC_FAR * Pointer;
+ long Simple;
+ } CLIENT_CALL_RETURN;
+
+/*
+ * Full pointer data structures.
+ */
+
+typedef enum
+ {
+ XLAT_SERVER = 1,
+ XLAT_CLIENT
+ } XLAT_SIDE;
+
+/*
+ * Stores the translation for the conversion from a full pointer into it's
+ * corresponding ref id.
+ */
+typedef struct _FULL_PTR_TO_REFID_ELEMENT
+ {
+ struct _FULL_PTR_TO_REFID_ELEMENT __RPC_FAR * Next;
+
+ void __RPC_FAR * Pointer;
+ unsigned long RefId;
+ unsigned char State;
+ } FULL_PTR_TO_REFID_ELEMENT, __RPC_FAR *PFULL_PTR_TO_REFID_ELEMENT;
+
+/*
+ * Full pointer translation tables.
+ */
+typedef struct _FULL_PTR_XLAT_TABLES
+ {
+ /*
+ * Ref id to pointer translation information.
+ */
+ struct
+ {
+ void __RPC_FAR *__RPC_FAR * XlatTable;
+ unsigned char __RPC_FAR * StateTable;
+ unsigned long NumberOfEntries;
+ } RefIdToPointer;
+
+ /*
+ * Pointer to ref id translation information.
+ */
+ struct
+ {
+ PFULL_PTR_TO_REFID_ELEMENT __RPC_FAR * XlatTable;
+ unsigned long NumberOfBuckets;
+ unsigned long HashMask;
+ } PointerToRefId;
+
+ /*
+ * Next ref id to use.
+ */
+ unsigned long NextRefId;
+
+ /*
+ * Keep track of the translation size we're handling : server or client.
+ * This tells us when we have to do reverse translations when we insert
+ * new translations. On the server we must insert a pointer-to-refid
+ * translation whenever we insert a refid-to-pointer translation, and
+ * vica versa for the client.
+ */
+ XLAT_SIDE XlatSide;
+ } FULL_PTR_XLAT_TABLES, __RPC_FAR *PFULL_PTR_XLAT_TABLES;
+
+/***************************************************************************
+ ** New MIDL 2.0 Ndr routine templates
+ ***************************************************************************/
+
+/*
+ * Marshall routines
+ */
+
+void RPC_ENTRY
+NdrSimpleTypeMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned char FormatChar
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSimpleStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrHardStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrFixedArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrByteCountPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrXmitOrRepAsMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo interface pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrInterfacePointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Context handles */
+
+void RPC_ENTRY
+NdrClientContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT ContextHandle,
+ int fCheck
+ );
+
+void RPC_ENTRY
+NdrServerContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_SCONTEXT ContextHandle,
+ NDR_RUNDOWN RundownRoutine
+ );
+
+/*
+ * Unmarshall routines
+ */
+
+void RPC_ENTRY
+NdrSimpleTypeUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned char FormatChar
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Structures */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSimpleStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrHardStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Arrays */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrFixedArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Strings */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Unions */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Byte count pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrByteCountPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Transmit as and represent as*/
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrXmitOrRepAsUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* User_marshal */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Cairo interface pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrInterfacePointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Context handles */
+
+void RPC_ENTRY
+NdrClientContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT __RPC_FAR * pContextHandle,
+ RPC_BINDING_HANDLE BindHandle
+ );
+
+NDR_SCONTEXT RPC_ENTRY
+NdrServerContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+/*
+ * Buffer sizing routines
+ */
+
+void RPC_ENTRY
+NdrPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+void RPC_ENTRY
+NdrSimpleStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrHardStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+void RPC_ENTRY
+NdrFixedArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+void RPC_ENTRY
+NdrConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+void RPC_ENTRY
+NdrEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count pointer */
+
+void RPC_ENTRY
+NdrByteCountPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+void RPC_ENTRY
+NdrXmitOrRepAsBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+void RPC_ENTRY
+NdrUserMarshalBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+void RPC_ENTRY
+NdrInterfacePointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+// Context Handle size
+//
+void RPC_ENTRY
+NdrContextHandleSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Memory sizing routines
+ */
+
+unsigned long RPC_ENTRY
+NdrPointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+unsigned long RPC_ENTRY
+NdrSimpleStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantVaryingStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrHardStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrComplexStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+unsigned long RPC_ENTRY
+NdrFixedArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrComplexArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+unsigned long RPC_ENTRY
+NdrConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrNonConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+unsigned long RPC_ENTRY
+NdrEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrNonEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+unsigned long RPC_ENTRY
+NdrXmitOrRepAsMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+unsigned long RPC_ENTRY
+NdrUserMarshalMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+unsigned long RPC_ENTRY
+NdrInterfacePointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Freeing routines
+ */
+
+void RPC_ENTRY
+NdrPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+void RPC_ENTRY
+NdrSimpleStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrHardStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+void RPC_ENTRY
+NdrFixedArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+void RPC_ENTRY
+NdrEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count */
+
+void RPC_ENTRY
+NdrByteCountPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+void RPC_ENTRY
+NdrXmitOrRepAsFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+void RPC_ENTRY
+NdrUserMarshalFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+void RPC_ENTRY
+NdrInterfacePointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Endian conversion routine.
+ */
+
+void RPC_ENTRY
+NdrConvert2(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ long NumberParams
+ );
+
+void RPC_ENTRY
+NdrConvert(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+#define USER_MARSHAL_FC_BYTE 1
+#define USER_MARSHAL_FC_CHAR 2
+#define USER_MARSHAL_FC_SMALL 3
+#define USER_MARSHAL_FC_USMALL 4
+#define USER_MARSHAL_FC_WCHAR 5
+#define USER_MARSHAL_FC_SHORT 6
+#define USER_MARSHAL_FC_USHORT 7
+#define USER_MARSHAL_FC_LONG 8
+#define USER_MARSHAL_FC_ULONG 9
+#define USER_MARSHAL_FC_FLOAT 10
+#define USER_MARSHAL_FC_HYPER 11
+#define USER_MARSHAL_FC_DOUBLE 12
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalSimpleTypeConvert(
+ unsigned long * pFlags,
+ unsigned char * pBuffer,
+ unsigned char FormatChar
+ );
+
+/*
+ * Auxilary routines
+ */
+
+void RPC_ENTRY
+NdrClientInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+void RPC_ENTRY
+NdrServerInitializePartial(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned long RequestedBufferSize
+ );
+
+void RPC_ENTRY
+NdrClientInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitializeUnmarshall (
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PRPC_MESSAGE pRpcMsg
+ );
+
+void RPC_ENTRY
+NdrServerInitializeMarshall (
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNsGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrGetPipeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle );
+
+void RPC_ENTRY
+NdrGetPartialBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR* pBufferEnd
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNsSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pBufferEnd,
+ RPC_BINDING_HANDLE __RPC_FAR * pAutoHandle
+ );
+
+void RPC_ENTRY
+NdrPipeSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_PIPE_DESC * pPipeDesc
+ );
+
+void RPC_ENTRY
+NdrFreeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+/*
+ * Pipe specific calls
+ */
+
+void RPC_ENTRY
+NdrPipesInitialize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pParamDesc,
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc,
+ NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg,
+ char __RPC_FAR * pStackTop,
+ unsigned long NumberParams );
+
+void
+NdrMarkNextActivePipe(
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc,
+ unsigned int DirectionMask );
+
+void RPC_ENTRY
+NdrPipePull(
+ char __RPC_FAR * pState,
+ void __RPC_FAR * buf,
+ unsigned long esize,
+ unsigned long __RPC_FAR * ecount );
+
+void RPC_ENTRY
+NdrPipePush(
+ char __RPC_FAR * pState,
+ void __RPC_FAR * buf,
+ unsigned long ecount );
+
+void RPC_ENTRY
+NdrIsAppDoneWithPipes(
+ NDR_PIPE_DESC * pPipeDesc
+ );
+
+void RPC_ENTRY
+NdrPipesDone(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+/*
+ * Interpeter calls.
+ */
+
+/* client */
+
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+NdrClientCall2(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+NdrClientCall(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+/* server */
+typedef enum {
+ STUB_UNMARSHAL,
+ STUB_CALL_SERVER,
+ STUB_MARSHAL,
+ STUB_CALL_SERVER_NO_HRESULT
+}STUB_PHASE;
+
+typedef enum {
+ PROXY_CALCSIZE,
+ PROXY_GETBUFFER,
+ PROXY_MARSHAL,
+ PROXY_SENDRECEIVE,
+ PROXY_UNMARSHAL
+}PROXY_PHASE;
+
+long RPC_ENTRY
+NdrStubCall2(
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long __RPC_FAR * pdwStubPhase
+ );
+
+void RPC_ENTRY
+NdrServerCall2(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+long RPC_ENTRY
+NdrStubCall (
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long __RPC_FAR * pdwStubPhase
+ );
+
+void RPC_ENTRY
+NdrServerCall(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+int RPC_ENTRY
+NdrServerUnmarshall(
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ void __RPC_FAR * pParamList
+ );
+
+void RPC_ENTRY
+NdrServerMarshall(
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Comm and Fault status */
+
+RPC_STATUS RPC_ENTRY
+NdrMapCommAndFaultStatus(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long __RPC_FAR * pCommStatus,
+ unsigned long __RPC_FAR * pFaultStatus,
+ RPC_STATUS Status
+ );
+
+/* Helper routines */
+
+int RPC_ENTRY
+NdrSH_UPDecision(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ RPC_BUFPTR pBuffer
+ );
+
+int RPC_ENTRY
+NdrSH_TLUPDecision(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem
+ );
+
+int RPC_ENTRY
+NdrSH_TLUPDecisionBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem
+ );
+
+int RPC_ENTRY
+NdrSH_IfAlloc(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+int RPC_ENTRY
+NdrSH_IfAllocRef(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+int RPC_ENTRY
+NdrSH_IfAllocSet(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_IfCopy(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_IfAllocCopy(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+unsigned long RPC_ENTRY
+NdrSH_Copy(
+ unsigned char __RPC_FAR * pStubMsg,
+ unsigned char __RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+void RPC_ENTRY
+NdrSH_IfFree(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR * pPtr );
+
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_StringMarshall(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned long Count,
+ int Size );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_StringUnMarshall(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR *__RPC_FAR * pMemory,
+ int Size );
+
+/****************************************************************************
+ MIDL 2.0 memory package: rpc_ss_* rpc_sm_*
+ ****************************************************************************/
+
+typedef void __RPC_FAR * RPC_SS_THREAD_HANDLE;
+
+typedef void __RPC_FAR * __RPC_API
+RPC_CLIENT_ALLOC (
+ IN size_t Size
+ );
+
+typedef void __RPC_API
+RPC_CLIENT_FREE (
+ IN void __RPC_FAR * Ptr
+ );
+
+/*++
+ RpcSs* package
+--*/
+
+void __RPC_FAR * RPC_ENTRY
+RpcSsAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+RpcSsDisableAllocate (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsEnableAllocate (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+RPC_SS_THREAD_HANDLE RPC_ENTRY
+RpcSsGetThreadHandle (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsSetClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
+ );
+
+void RPC_ENTRY
+RpcSsSetThreadHandle (
+ IN RPC_SS_THREAD_HANDLE Id
+ );
+
+void RPC_ENTRY
+RpcSsSwapClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
+ OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
+ OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
+ );
+
+/*++
+ RpcSm* package
+--*/
+
+void __RPC_FAR * RPC_ENTRY
+RpcSmAllocate (
+ IN size_t Size,
+ OUT RPC_STATUS __RPC_FAR * pStatus
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmClientFree (
+ IN void __RPC_FAR * pNodeToFree
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmDestroyClientContext (
+ IN void __RPC_FAR * __RPC_FAR * ContextHandle
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmDisableAllocate (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmEnableAllocate (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+RPC_SS_THREAD_HANDLE RPC_ENTRY
+RpcSmGetThreadHandle (
+ OUT RPC_STATUS __RPC_FAR * pStatus
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSetClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSetThreadHandle (
+ IN RPC_SS_THREAD_HANDLE Id
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSwapClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
+ OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
+ OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
+ );
+
+/*++
+ Ndr stub entry points
+--*/
+
+void RPC_ENTRY
+NdrRpcSsEnableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void RPC_ENTRY
+NdrRpcSsDisableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void RPC_ENTRY
+NdrRpcSmSetClientToOsf(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void __RPC_FAR * RPC_ENTRY
+NdrRpcSmClientAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrRpcSmClientFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+void __RPC_FAR * RPC_ENTRY
+NdrRpcSsDefaultAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrRpcSsDefaultFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+/****************************************************************************
+ end of memory package: rpc_ss_* rpc_sm_*
+ ****************************************************************************/
+
+/****************************************************************************
+ * Full Pointer APIs
+ ****************************************************************************/
+
+PFULL_PTR_XLAT_TABLES RPC_ENTRY
+NdrFullPointerXlatInit(
+ unsigned long NumberOfPointers,
+ XLAT_SIDE XlatSide
+ );
+
+void RPC_ENTRY
+NdrFullPointerXlatFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables
+ );
+
+int RPC_ENTRY
+NdrFullPointerQueryPointer(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ void __RPC_FAR * pPointer,
+ unsigned char QueryType,
+ unsigned long __RPC_FAR * pRefId
+ );
+
+int RPC_ENTRY
+NdrFullPointerQueryRefId(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ unsigned long RefId,
+ unsigned char QueryType,
+ void __RPC_FAR *__RPC_FAR * ppPointer
+ );
+
+void RPC_ENTRY
+NdrFullPointerInsertRefId(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ unsigned long RefId,
+ void __RPC_FAR * pPointer
+ );
+
+int RPC_ENTRY
+NdrFullPointerFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ void __RPC_FAR * Pointer
+ );
+
+void __RPC_FAR * RPC_ENTRY
+NdrAllocate(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ size_t Len
+ );
+
+void RPC_ENTRY
+NdrClearOutParameters(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ void __RPC_FAR * ArgAddr
+ );
+
+
+/****************************************************************************
+ * Proxy APIs
+ ****************************************************************************/
+
+void __RPC_FAR * RPC_ENTRY
+NdrOleAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrOleFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+#ifdef CONST_VTABLE
+#define CONST_VTBL const
+#else
+#define CONST_VTBL
+#endif
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for DOS, Windows and Mac.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
+#pragma pack()
+#endif
+
+#endif /* __RPCNDR_H__ */
+
+
+
+
+
diff --git a/public/sdk/rpc16/mppc/inc/rpcnsi.h b/public/sdk/rpc16/mppc/inc/rpcnsi.h
new file mode 100644
index 000000000..362b5bdb4
--- /dev/null
+++ b/public/sdk/rpc16/mppc/inc/rpcnsi.h
@@ -0,0 +1,509 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcnsi.h
+
+Abstract:
+
+ This file contains the types and function definitions to use the
+ Name Service Independent APIs.
+
+--*/
+
+#ifndef __RPCNSI_H__
+#define __RPCNSI_H__
+
+typedef void __RPC_FAR * RPC_NS_HANDLE;
+
+#define RPC_C_NS_SYNTAX_DEFAULT 0
+#define RPC_C_NS_SYNTAX_DCE 3
+
+#define RPC_C_PROFILE_DEFAULT_ELT 0
+#define RPC_C_PROFILE_ALL_ELT 1
+#define RPC_C_PROFILE_MATCH_BY_IF 2
+#define RPC_C_PROFILE_MATCH_BY_MBR 3
+#define RPC_C_PROFILE_MATCH_BY_BOTH 4
+
+#define RPC_C_NS_DEFAULT_EXP_AGE -1
+
+/* Server APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingExportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN RPC_BINDING_VECTOR __RPC_FAR * BindingVec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingUnexportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingExportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN RPC_BINDING_VECTOR __RPC_FAR * BindingVec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingUnexportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+#endif
+
+/* Client APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned long BindingMaxCount OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned long BindingMaxCount OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupNext(
+ IN RPC_NS_HANDLE LookupContext,
+ OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVec
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+
+/* Group APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupDeleteA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrAddA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrRemoveA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqBeginA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqNextA(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupDeleteW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrAddW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrRemoveW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqBeginW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqNextW(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Profile APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileDeleteA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltAddA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName,
+ IN unsigned long Priority,
+ IN unsigned char __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltRemoveA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqBeginA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqNextA(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName,
+ OUT unsigned long __RPC_FAR * Priority,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileDeleteW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltAddW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName,
+ IN unsigned long Priority,
+ IN unsigned short __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltRemoveW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqBeginW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqNextW(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName,
+ OUT unsigned long __RPC_FAR * Priority,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Entry object APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqNext(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT UUID __RPC_FAR * ObjUuid
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Management and MISC APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryExpandNameA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ExpandedName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtBindingUnexportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryCreateA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryDeleteA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryInqIfIdsA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVec
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtHandleSetExpAge(
+ IN RPC_NS_HANDLE NsHandle,
+ IN unsigned long ExpirationAge
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtInqExpAge(
+ OUT unsigned long __RPC_FAR * ExpirationAge
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtSetExpAge(
+ IN unsigned long ExpirationAge
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryExpandNameW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ExpandedName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtBindingUnexportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryCreateW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryDeleteW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryInqIfIdsW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVec
+ );
+
+#endif
+
+/* Client API's implemented in wrappers. */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportNext(
+ IN RPC_NS_HANDLE ImportContext,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingSelect(
+ IN OUT RPC_BINDING_VECTOR __RPC_FAR * BindingVec,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#ifdef UNICODE
+
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginW
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginW
+#define RpcNsBindingExport RpcNsBindingExportW
+#define RpcNsBindingUnexport RpcNsBindingUnexportW
+#define RpcNsGroupDelete RpcNsGroupDeleteW
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddW
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveW
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginW
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextW
+#define RpcNsEntryExpandName RpcNsEntryExpandNameW
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginW
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportW
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateW
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteW
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsW
+#define RpcNsProfileDelete RpcNsProfileDeleteW
+#define RpcNsProfileEltAdd RpcNsProfileEltAddW
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveW
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginW
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextW
+
+#else
+
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginA
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginA
+#define RpcNsBindingExport RpcNsBindingExportA
+#define RpcNsBindingUnexport RpcNsBindingUnexportA
+#define RpcNsGroupDelete RpcNsGroupDeleteA
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddA
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveA
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginA
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextA
+#define RpcNsEntryExpandName RpcNsEntryExpandNameA
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginA
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportA
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateA
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteA
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsA
+#define RpcNsProfileDelete RpcNsProfileDeleteA
+#define RpcNsProfileEltAdd RpcNsProfileEltAddA
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveA
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginA
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextA
+
+#endif /* UNICODE */
+
+#endif /* __RPCNSI_H__ */
diff --git a/public/sdk/rpc16/mppc/inc/rpcnsip.h b/public/sdk/rpc16/mppc/inc/rpcnsip.h
new file mode 100644
index 000000000..0db0140b0
--- /dev/null
+++ b/public/sdk/rpc16/mppc/inc/rpcnsip.h
@@ -0,0 +1,72 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcnsip.h
+
+Abstract:
+
+ This file contains the types and function definitions to use the
+ to implement the autohandle features of the runtime.
+
+--*/
+
+#ifndef __RPCNSIP_H__
+#define __RPCNSIP_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct
+{
+ RPC_NS_HANDLE LookupContext;
+ RPC_BINDING_HANDLE ProposedHandle;
+ RPC_BINDING_VECTOR * Bindings;
+
+} RPC_IMPORT_CONTEXT_P, * PRPC_IMPORT_CONTEXT_P;
+
+
+/* Stub Auto Binding routines. */
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsGetBuffer(
+ IN PRPC_MESSAGE Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsSendReceive(
+ IN PRPC_MESSAGE Message,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Handle
+ );
+
+void RPC_ENTRY
+I_RpcNsRaiseException(
+ IN PRPC_MESSAGE Message,
+ IN RPC_STATUS Status
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcReBindBuffer(
+ IN PRPC_MESSAGE Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_NsServerBindSearch(
+ );
+
+RPC_STATUS RPC_ENTRY
+I_NsClientBindSearch(
+ );
+
+void RPC_ENTRY
+I_NsClientBindDone(
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RPCNSIP_H__ */
diff --git a/public/sdk/rpc16/sdk/dnetapi.dl_ b/public/sdk/rpc16/sdk/dnetapi.dl_
new file mode 100644
index 000000000..6c61e393b
--- /dev/null
+++ b/public/sdk/rpc16/sdk/dnetapi.dl_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/drpc.h_ b/public/sdk/rpc16/sdk/drpc.h_
new file mode 100644
index 000000000..95ca34154
--- /dev/null
+++ b/public/sdk/rpc16/sdk/drpc.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/drpc.li_ b/public/sdk/rpc16/sdk/drpc.li_
new file mode 100644
index 000000000..3ce0bd5e3
--- /dev/null
+++ b/public/sdk/rpc16/sdk/drpc.li_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/drpcndr.li_ b/public/sdk/rpc16/sdk/drpcndr.li_
new file mode 100644
index 000000000..4cf645885
--- /dev/null
+++ b/public/sdk/rpc16/sdk/drpcndr.li_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/midles.h_ b/public/sdk/rpc16/sdk/midles.h_
new file mode 100644
index 000000000..cac7a1f5a
--- /dev/null
+++ b/public/sdk/rpc16/sdk/midles.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/mrpc.h_ b/public/sdk/rpc16/sdk/mrpc.h_
new file mode 100644
index 000000000..6d89dd06d
--- /dev/null
+++ b/public/sdk/rpc16/sdk/mrpc.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/mrpc.li_ b/public/sdk/rpc16/sdk/mrpc.li_
new file mode 100644
index 000000000..f99614244
--- /dev/null
+++ b/public/sdk/rpc16/sdk/mrpc.li_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/mscuistf.dl_ b/public/sdk/rpc16/sdk/mscuistf.dl_
new file mode 100644
index 000000000..1c01af909
--- /dev/null
+++ b/public/sdk/rpc16/sdk/mscuistf.dl_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/msdetect.inc b/public/sdk/rpc16/sdk/msdetect.inc
new file mode 100644
index 000000000..20c869ebf
--- /dev/null
+++ b/public/sdk/rpc16/sdk/msdetect.inc
@@ -0,0 +1,661 @@
+'**************************************************************************
+'************************* Setup Detect API's ***************************
+'**************************************************************************
+
+''detect
+
+DECLARE FUNCTION CbGetVersionOfFile LIB "msdetstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION LGetVersionNthField LIB "msdetstf.dll" (szVersion$, nField%) AS LONG
+DECLARE FUNCTION LcbGetSizeOfFile LIB "msdetstf.dll" (szFile$) AS LONG
+DECLARE FUNCTION FGetValidDrivesList LIB "msdetstf.dll" (szSymbol$) AS INTEGER
+DECLARE FUNCTION FGetLocalHardDrivesList LIB "msdetstf.dll" (szSymbol$) AS INTEGER
+DECLARE FUNCTION FGetRemovableDrivesList LIB "msdetstf.dll" (szSymbol$) AS INTEGER
+DECLARE FUNCTION FGetNetworkDrivesList LIB "msdetstf.dll" (szSymbol$) AS INTEGER
+DECLARE FUNCTION LcbTotalDrive LIB "msdetstf.dll" (nDrive%) AS LONG
+DECLARE FUNCTION LcbFreeDrive LIB "msdetstf.dll" (nDrive%) AS LONG
+DECLARE FUNCTION FIsValidDrive LIB "msdetstf.dll" (nDrive%) AS INTEGER
+DECLARE FUNCTION FIsLocalHardDrive LIB "msdetstf.dll" (nDrive%) AS INTEGER
+DECLARE FUNCTION FIsRemoveDrive LIB "msdetstf.dll" (nDrive%) AS INTEGER
+DECLARE FUNCTION FIsRemoteDrive LIB "msdetstf.dll" (nDrive%) AS INTEGER
+DECLARE FUNCTION FDirExists LIB "msdetstf.dll" (szDir$) AS INTEGER
+DECLARE FUNCTION FDoesFileExist LIB "msdetstf.dll" (szFileName$, mode%) AS INTEGER
+DECLARE FUNCTION CbGetDateOfFile LIB "msdetstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION FDoesIniSectionExist LIB "msdetstf.dll" (szFile$, szSect$) AS INTEGER
+DECLARE FUNCTION FDoesIniKeyExist LIB "msdetstf.dll" (szFile$, szSect$, szKey$) AS INTEGER
+DECLARE FUNCTION CbGetIniKeyString LIB "msdetstf.dll" (szFile$, szSect$, szKey$, szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION WGetDOSMajorVersion LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION WGetDOSMinorVersion LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION CbGetEnvVariableValue LIB "msdetstf.dll" (szEnvVar$, szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION WGetNumWinApps LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION FGetParallelPortsList LIB "msdetstf.dll" (szSymbol$) AS INTEGER
+DECLARE FUNCTION FGetSerialPortsList LIB "msdetstf.dll" (szSymbol$) AS INTEGER
+DECLARE FUNCTION FHas87MathChip LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION FHasMonochromeDisplay LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION FHasMouseInstalled LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION WGetConfigSmartdrvSize LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION WGetConfigRamdriveSize LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION WGetConfigNumBuffers LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION WGetConfigNumFiles LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION WGetConfigLastDrive LIB "msdetstf.dll" AS INTEGER
+DECLARE FUNCTION FIsDriverInConfig LIB "msdetstf.dll" (szDrv$) AS INTEGER
+DECLARE FUNCTION CbFindTargetOnEnvVar LIB "msdetstf.dll" (szFile$, szEnvVar$, szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION CbFindFileInTree LIB "msdetstf.dll" (szFile$, szDir$, szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION GetTypeFaceNameFromTTF LIB "msdetstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION GetExistingFOTFileForTTF LIB "msdetstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
+
+
+
+'*************************************************************************
+'**************** Detect Basic Wrapper Declarations ********************
+'*************************************************************************
+
+
+'' detect
+
+DECLARE FUNCTION IsDriveValid (szDrive$) AS INTEGER
+DECLARE FUNCTION IsDriveLocalHard (szDrive$) AS INTEGER
+DECLARE FUNCTION IsDriveRemovable (szDrive$) AS INTEGER
+DECLARE FUNCTION IsDriveNetwork (szDrive$) AS INTEGER
+DECLARE SUB GetValidDrivesList (szSymbol$)
+DECLARE SUB GetLocalHardDrivesList (szSymbol$)
+DECLARE SUB GetRemovableDrivesList (szSymbol$)
+DECLARE SUB GetNetworkDrivesList (szSymbol$)
+DECLARE FUNCTION GetTotalSpaceForDrive (szDrive$) AS LONG
+DECLARE FUNCTION GetFreeSpaceForDrive (szDrive$) AS LONG
+
+DECLARE FUNCTION GetDOSMajorVersion AS INTEGER
+DECLARE FUNCTION GetDOSMinorVersion AS INTEGER
+DECLARE FUNCTION GetEnvVariableValue (szEnvVar$) AS STRING
+DECLARE FUNCTION GetNumWinApps AS INTEGER
+
+DECLARE FUNCTION DoesFileExist (szFile$, mode%) AS INTEGER
+DECLARE FUNCTION GetDateOfFile (szFile$) AS STRING
+DECLARE FUNCTION GetYearFromDate (szDate$) AS INTEGER
+DECLARE FUNCTION GetMonthFromDate (szDate$) AS INTEGER
+DECLARE FUNCTION GetDayFromDate (szDate$) AS INTEGER
+DECLARE FUNCTION GetHourFromDate (szDate$) AS INTEGER
+DECLARE FUNCTION GetMinuteFromDate (szDate$) AS INTEGER
+DECLARE FUNCTION GetSecondFromDate (szDate$) AS INTEGER
+DECLARE FUNCTION GetVersionOfFile (szFile$) AS STRING
+DECLARE FUNCTION GetVersionNthField (szVersion$, nField%) AS LONG
+DECLARE FUNCTION GetSizeOfFile (szFile$) AS LONG
+DECLARE FUNCTION FindTargetOnEnvVar (szFile$, szEnvVar$) AS STRING
+DECLARE FUNCTION FindFileInTree (szFile$, szDir$) AS STRING
+DECLARE FUNCTION DoesDirExist (szDir$) AS INTEGER
+
+DECLARE FUNCTION DoesIniSectionExist (szFile$, szSect$) AS INTEGER
+DECLARE FUNCTION DoesIniKeyExist (szFile$, szSect$, szKey$) AS INTEGER
+DECLARE FUNCTION GetIniKeyString (szFile$, szSect$, szKey$) AS STRING
+
+DECLARE FUNCTION GetConfigSmartdrvSize AS INTEGER
+DECLARE FUNCTION GetConfigRamdriveSize AS INTEGER
+DECLARE FUNCTION GetConfigNumBuffers AS INTEGER
+DECLARE FUNCTION GetConfigNumFiles AS INTEGER
+DECLARE FUNCTION GetConfigLastDrive AS STRING
+DECLARE FUNCTION IsDriverInConfig (szDrv$) AS INTEGER
+
+DECLARE FUNCTION GetProcessorType AS INTEGER
+DECLARE SUB GetParallelPortsList (szSymbol$)
+DECLARE SUB GetSerialPortsList (szSymbol$)
+DECLARE FUNCTION Has87MathChip AS INTEGER
+DECLARE FUNCTION HasMonochromeDisplay AS INTEGER
+DECLARE FUNCTION HasMouseInstalled AS INTEGER
+
+
+'*************************************************************************
+FUNCTION IsDriveValid (szDrive$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if FValidDrive(szDrive$) = 0 then
+ BadArgErr 1, "IsDriveValid", szDrive$
+ end if
+'$endif ''DEBUG
+ IsDriveValid = FIsValidDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION IsDriveLocalHard (szDrive$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if FValidDrive(szDrive$) = 0 then
+ BadArgErr 1, "IsDriveLocalHard", szDrive$
+ end if
+'$endif ''DEBUG
+ IsDriveLocalHard = FIsLocalHardDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION IsDriveRemovable (szDrive$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if FValidDrive(szDrive$) = 0 then
+ BadArgErr 1, "IsDriveRemovable", szDrive$
+ end if
+'$endif ''DEBUG
+ IsDriveRemovable = FIsRemoveDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION IsDriveNetwork (szDrive$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if FValidDrive(szDrive$) = 0 then
+ BadArgErr 1, "IsDriveNetwork", szDrive$
+ end if
+'$endif ''DEBUG
+ IsDriveNetwork = FIsRemoteDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetTotalSpaceForDrive (szDrive$) STATIC AS LONG
+'$ifdef DEBUG
+ if FValidDrive(szDrive$) = 0 then
+ BadArgErr 1, "GetTotalSpaceForDrive", szDrive$
+ end if
+'$endif ''DEBUG
+ GetTotalSpaceForDrive = LcbTotalDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetFreeSpaceForDrive (szDrive$) STATIC AS LONG
+'$ifdef DEBUG
+ if FValidDrive(szDrive$) = 0 then
+ BadArgErr 1, "GetFreeSpaceForDrive", szDrive$
+ end if
+'$endif ''DEBUG
+ GetFreeSpaceForDrive = LcbFreeDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
+END FUNCTION
+
+
+'*************************************************************************
+SUB GetValidDrivesList (szSymbol$) STATIC
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ BadArgErr 1, "GetValidDrivesList", szSymbol$
+ end if
+'$endif ''DEBUG
+ if FGetValidDrivesList(szSymbol$) = 0 then
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetValidDrivesList", szSymbol$
+'$endif ''DEBUG
+ ERROR STFERR
+ end if
+END SUB
+
+
+'*************************************************************************
+SUB GetLocalHardDrivesList (szSymbol$) STATIC
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ BadArgErr 1, "GetLocalHardDrivesList", szSymbol$
+ end if
+'$endif ''DEBUG
+ if FGetLocalHardDrivesList(szSymbol$) = 0 then
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetLocalHardDrivesList", szSymbol$
+'$endif ''DEBUG
+ ERROR STFERR
+ end if
+END SUB
+
+
+'*************************************************************************
+SUB GetRemovableDrivesList (szSymbol$) STATIC
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ BadArgErr 1, "GetRemovableDrivesList", szSymbol$
+ end if
+'$endif ''DEBUG
+ if FGetRemovableDrivesList(szSymbol$) = 0 then
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetRemovableDrivesList", szSymbol$
+'$endif ''DEBUG
+ ERROR STFERR
+ end if
+END SUB
+
+
+'*************************************************************************
+SUB GetNetworkDrivesList (szSymbol$) STATIC
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ BadArgErr 1, "GetNetworkDrivesList", szSymbol$
+ end if
+'$endif ''DEBUG
+ if FGetNetworkDrivesList(szSymbol$) = 0 then
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetNetworkDrivesList", szSymbol$
+'$endif ''DEBUG
+ ERROR STFERR
+ end if
+END SUB
+
+
+'*************************************************************************
+FUNCTION GetDOSMajorVersion STATIC AS INTEGER
+ GetDOSMajorVersion = WGetDOSMajorVersion
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetDOSMinorVersion STATIC AS INTEGER
+ GetDOSMinorVersion = WGetDOSMinorVersion
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetEnvVariableValue (szEnvVar$) STATIC AS STRING
+'$ifdef DEBUG
+ if szEnvVar$ = "" then
+ BadArgErr 1, "GetEnvVariableValue", szEnvVar$
+ end if
+'$endif ''DEBUG
+ cb% = 1024
+ szBuf$ = STRING$(cb%, 32)
+ cbRet% = CbGetEnvVariableValue(szEnvVar$, szBuf$, cb%)
+ GetEnvVariableValue = szBuf$
+'$ifdef DEBUG
+ IF cbRet% >= cb% THEN
+ StfApiErr saeOvfl, "GetEnvVariableValue", szEnvVar$
+ ERROR STFERR
+ END IF
+'$endif ''DEBUG
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetNumWinApps STATIC AS INTEGER
+ GetNumWinApps = WGetNumWinApps
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION DoesFileExist (szFileName$, mode%) STATIC AS INTEGER
+'$ifdef DEBUG
+ if FValidFATPath(szFileName$) = 0 then
+ BadArgErr 1, "DoesFileExist", szFileName$+", "+STR$(mode%)
+ end if
+'$endif ''DEBUG
+ DoesFileExist = FDoesFileExist(szFileName$, mode%)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetDateOfFile (szFile$) STATIC AS STRING
+'$ifdef DEBUG
+ if FValidFATPath(szFile$) = 0 then
+ BadArgErr 1, "GetDateOfFile", szFile$
+ end if
+'$endif ''DEBUG
+ cb% = 20
+ szBuf$ = STRING$(cb%, 32)
+ cbRet% = CbGetDateOfFile(szFile$, szBuf$, cb%)
+ GetDateOfFile = szBuf$
+'$ifdef DEBUG
+ IF cbRet% >= cb% THEN
+ StfApiErr saeOvfl, "GetDateOfFile", szFile$
+ ERROR STFERR
+ END IF
+'$endif ''DEBUG
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetYearFromDate (szDate$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if szDate = "" then
+ BadArgErr 1, "GetYearFromDate", szDate$
+ end if
+'$endif ''DEBUG
+ GetYearFromDate = VAL(MID$(szDate$, 1, 4))
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetMonthFromDate (szDate$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if szDate = "" then
+ BadArgErr 1, "GetMonthFromDate", szDate$
+ end if
+'$endif ''DEBUG
+ GetMonthFromDate = VAL(MID$(szDate$, 6, 2))
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetDayFromDate (szDate$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if szDate = "" then
+ BadArgErr 1, "GetDayFromDate", szDate$
+ end if
+'$endif ''DEBUG
+ GetDayFromDate = VAL(MID$(szDate$, 9, 2))
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetHourFromDate (szDate$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if szDate = "" then
+ BadArgErr 1, "GetHourFromDate", szDate$
+ end if
+'$endif ''DEBUG
+ GetHourFromDate = VAL(MID$(szDate$, 12, 2))
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetMinuteFromDate (szDate$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if szDate = "" then
+ BadArgErr 1, "GetMinuteFromDate", szDate$
+ end if
+'$endif ''DEBUG
+ GetMinuteFromDate = VAL(MID$(szDate$, 15, 2))
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetSecondFromDate (szDate$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if szDate = "" then
+ BadArgErr 1, "GetSecondFromDate", szDate$
+ end if
+'$endif ''DEBUG
+ GetSecondFromDate = VAL(MID$(szDate$, 18, 2))
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetVersionOfFile (szFile$) STATIC AS STRING
+'$ifdef DEBUG
+ if FValidFATPath(szFile$) = 0 then
+ BadArgErr 1, "GetVersionOfFile", szFile$
+ end if
+'$endif ''DEBUG
+ cb% = 30
+ szBuf$ = STRING$(cb%, 32)
+ cbRet% = CbGetVersionOfFile(szFile$, szBuf$, cb%)
+ GetVersionOfFile = szBuf$
+'$ifdef DEBUG
+ IF cbRet% >= cb% THEN
+ StfApiErr saeOvfl, "GetVersionOfFile", szFile$
+ ERROR STFERR
+ END IF
+'$endif ''DEBUG
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetVersionNthField (szVersion$, nField%) STATIC AS LONG
+'$ifdef DEBUG
+ if (nField% < 1) OR (nField% > 4) then
+ BadArgErr 2, "GetVersionNthField", szVersion$+", "+STR$(nField%)
+ end if
+'$endif ''DEBUG
+ GetVersionNthField = LGetVersionNthField(szVersion$, nField%)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetSizeOfFile (szFile$) STATIC AS LONG
+'$ifdef DEBUG
+ if FValidFATPath(szFile$) = 0 then
+ BadArgErr 1, "GetSizeOfFile", szFile$
+ end if
+'$endif ''DEBUG
+ GetSizeOfFile = LcbGetSizeOfFile(szFile$)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION FindTargetOnEnvVar (szFile$, szEnvVar$) STATIC AS STRING
+'$ifdef DEBUG
+ if CchlValidFATSubPath(szFile$) = 0 then
+ n% = 1
+ elseif szEnvVar$ = "" then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "FindTargetOnEnvVar", szFile$+", "+szEnvVar$
+ end if
+'$endif ''DEBUG
+
+ cb% = 512
+ szBuf$ = STRING$(cb%, 32)
+ cbRet% = CbFindTargetOnEnvVar(szFile$, szEnvVar$, szBuf$, cb%)
+ IF cbRet% >= cb% THEN
+'$ifdef DEBUG
+ StfApiErr saeOvfl, "FindTargetOnEnvVar", szFile$+", "+szEnvVar$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+ szBuf$ = RTRIM$(szBuf$)
+ IF MID$(szBuf$, 1, 1) = "\" THEN
+ szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
+ ELSEIF Len(szBuf$) > 0 AND MID$(szBuf$, 2, 1) <> ":" THEN
+ szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
+ END IF
+ FindTargetOnEnvVar = szBuf$
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION FindFileInTree (szFile$, szDir$) STATIC AS STRING
+'$ifdef DEBUG
+ if CchlValidFATSubPath(szFile$) = 0 then
+ n% = 1
+ elseif FValidFATDir(szDir$) = 0 then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "FindFileInTree", szFile$+", "+szDir$
+ end if
+'$endif ''DEBUG
+
+ cb% = 512
+ szBuf$ = STRING$(cb%, 32)
+ cbRet% = CbFindFileInTree(szFile$, szDir$, szBuf$, cb%)
+ FindFileInTree = szBuf$
+'$ifdef DEBUG
+ IF cbRet% >= cb% THEN
+ StfApiErr saeOvfl, "FindFileInTree", szFile$+", "+szDir$
+ ERROR STFERR
+ END IF
+'$endif ''DEBUG
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetConfigSmartdrvSize STATIC AS INTEGER
+ GetConfigSmartdrvSize = WGetConfigSmartdrvSize
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetConfigRamdriveSize STATIC AS INTEGER
+ GetConfigRamdriveSize = WGetConfigRamdriveSize
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetConfigNumBuffers STATIC AS INTEGER
+ GetConfigNumBuffers = WGetConfigNumBuffers
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetConfigNumFiles STATIC AS INTEGER
+ GetConfigNumFiles = WGetConfigNumFiles
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetConfigLastDrive STATIC AS STRING
+ chRet% = WGetConfigLastDrive
+ if chRet% = 0 then
+ GetConfigLastDrive = ""
+ else
+ GetConfigLastDrive = CHR$(chRet%)
+ end if
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION IsDriverInConfig (szDrv$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if szDrv$ = "" then
+ BadArgErr 1, "IsDriverInConfig", szDrv$
+ end if
+'$endif ''DEBUG
+ IsDriverInConfig = FIsDriverInConfig(szDrv$)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetProcessorType STATIC AS INTEGER
+ GetProcessorType = 0
+ longTmp& = GetWinFlags()
+ IF longTmp& AND WF_CPU486 THEN
+ GetProcessorType = 4
+ ELSEIF longTmp& AND WF_CPU386 THEN
+ GetProcessorType = 3
+ ELSEIF longTmp& AND WF_CPU286 THEN
+ GetProcessorType = 2
+ ELSEIF longTmp& AND WF_CPU186 THEN
+ GetProcessorType = 1
+ END IF
+END FUNCTION
+
+
+'*************************************************************************
+SUB GetParallelPortsList (szSymbol$) STATIC
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ BadArgErr 1, "GetParallelPortsList", szSymbol$
+ end if
+'$endif ''DEBUG
+ if FGetParallelPortsList(szSymbol$) = 0 then
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetParallelPortsList", szSymbol$
+'$endif ''DEBUG
+ ERROR STFERR
+ end if
+END SUB
+
+
+'*************************************************************************
+SUB GetSerialPortsList (szSymbol$) STATIC
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ BadArgErr 1, "GetSerialPortsList", szSymbol$
+ end if
+'$endif ''DEBUG
+ if FGetSerialPortsList(szSymbol$) = 0 then
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetSerialPortsList", szSymbol$
+'$endif ''DEBUG
+ ERROR STFERR
+ end if
+END SUB
+
+
+'*************************************************************************
+FUNCTION Has87MathChip STATIC AS INTEGER
+ Has87MathChip = FHas87MathChip
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION HasMonochromeDisplay STATIC AS INTEGER
+ HasMonochromeDisplay = FHasMonochromeDisplay
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION HasMouseInstalled STATIC AS INTEGER
+ HasMouseInstalled = FHasMouseInstalled
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION DoesDirExist (szDir$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if FValidFATDir(szDir$) = 0 then
+ BadArgErr 1, "DoesDirExist", szDir$
+ end if
+'$endif ''DEBUG
+ DoesDirExist = FDirExists(szDir$)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION DoesIniSectionExist (szFile$, szSect$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if FValidIniFile(szFile$) = 0 then
+ BadArgErr 1, "DoesIniSectionExist", szFile$+", "+szSect$
+ end if
+'$endif ''DEBUG
+ DoesIniSectionExist = FDoesIniSectionExist(szFile$, szSect$)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION DoesIniKeyExist (szFile$, szSect$, szKey$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if FValidIniFile(szFile$) = 0 then
+ n% = 1
+ elseif szKey$ = "" then
+ n% = 3
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "DoesIniKeyExist", szFile$+", "+szSect$+", "+szKey$
+ end if
+'$endif ''DEBUG
+
+ DoesIniKeyExist = FDoesIniKeyExist(szFile$, szSect$, szKey$)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetIniKeyString (szFile$, szSect$, szKey$) STATIC AS STRING
+'$ifdef DEBUG
+ if FValidIniFile(szFile$) = 0 then
+ n% = 1
+ elseif szKey$ = "" then
+ n% = 3
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "GetIniKeyString", szFile$+", "+szSect$+", "+szKey$
+ end if
+'$endif ''DEBUG
+
+ cb% = 512
+ szBuf$ = STRING$(cb%, 32)
+ cbRet% = CbGetIniKeyString(szFile$, szSect$, szKey$, szBuf$, cb%)
+ GetIniKeyString = szBuf$
+'$ifdef DEBUG
+ IF cbRet% >= cb% THEN
+ StfApiErr saeOvfl, "GetIniKeyString", szFile$+", "+szSect$+", "+szKey$
+ ERROR STFERR
+ END IF
+'$endif ''DEBUG
+ szBuf$ = ""
+END FUNCTION
+
+
+
diff --git a/public/sdk/rpc16/sdk/readme.txt b/public/sdk/rpc16/sdk/readme.txt
new file mode 100644
index 000000000..4a501f497
--- /dev/null
+++ b/public/sdk/rpc16/sdk/readme.txt
@@ -0,0 +1,54 @@
+A note on what to do for the rpc install setup.
+
+The first thing to do is to be sure that all components are in place.
+
+The binary part of this is normally handled by the rpc test group.
+This includes binaries, headers, samples and doc files. Since this
+list changes often, there's not much point in covering it here.
+Presently, if a new file is added to the release list, one must add it
+to the list of released files, rpcsdk.lyt by using dsklayt2.exe.
+Caveat hacker below.
+
+The installation scripts, setup exectables, etc., are the responsibility
+of the rpc developer saddled with setup.
+
+Let [x] denote an optional argument x.
+
+First, go to \isvinst and run the .bat file getrpcrt.bat. It moves some
+files around. Then run mkdisk.bat there. It creates a script file for use
+by ISVs in order to install the rpc support .dlls on their customers
+machines. If this step is omitted, the setup created by wrundisk.bat WILL
+FAIL.
+
+Next, cd\install. Make sure testing has all their components in place.
+
+Once all components are in place, run getcur.bat. It picks up files from
+their supposed origin and puts them in \install\stage. This is required
+input in order to run the layout tool, dsklayt.exe, a win app. If only
+samples have changed, one could run getsam.bat. Note that if the file
+list changes, then get.bat and possibly getsam.bat will have to be
+changed so that these files are put in \install\stage by these batch
+files.
+
+If any files have changed, be sure to put them in rpcsdk.lyt. One is
+supposed to use dsklayt.exe, but it doesn't work too well, so I'd suggest
+avoiding it. Be sure to format your edits to rpcsdk.lyt excatly right.
+
+dsklayt.exe will inspect the files in \install\stage and compare them
+with an extant .lyt, if so requested. It is in this situation, however,
+that the damn thing hoses your old .lyt file.
+
+Next, delete all files in \install\sdk.new\disk1, \install\sdk.new\disk1
+and \install\sdk.new\nsetup.
+
+Thereafter, run mkdisk [net], where the optional argument, if used,
+forces only the building of the network setup directory,
+\install\sdk.new\nsetup. mkdisk invokes dsklayt2.exe, a dos app which
+appears to be far more reliable than dsklayt.exe.
+from \install\wsetup to nsetup or disk1.
+
+Test your changes by running setup.exe from the target of your changes.
+If it works, delnode sdk.new and tc the files to \sdk.new and tell rpccore.
+Keep \sdk updated with the last release.
+
+brucemc 6/14/93
diff --git a/public/sdk/rpc16/sdk/rpcdce.h_ b/public/sdk/rpc16/sdk/rpcdce.h_
new file mode 100644
index 000000000..fe69d99e0
--- /dev/null
+++ b/public/sdk/rpc16/sdk/rpcdce.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/rpcdcep.h_ b/public/sdk/rpc16/sdk/rpcdcep.h_
new file mode 100644
index 000000000..1f180353f
--- /dev/null
+++ b/public/sdk/rpc16/sdk/rpcdcep.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/rpcerr.h_ b/public/sdk/rpc16/sdk/rpcerr.h_
new file mode 100644
index 000000000..4e0ea7a0e
--- /dev/null
+++ b/public/sdk/rpc16/sdk/rpcerr.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/rpcmac.h_ b/public/sdk/rpc16/sdk/rpcmac.h_
new file mode 100644
index 000000000..6f7e924ad
--- /dev/null
+++ b/public/sdk/rpc16/sdk/rpcmac.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/rpcndr.h_ b/public/sdk/rpc16/sdk/rpcndr.h_
new file mode 100644
index 000000000..09840bef6
--- /dev/null
+++ b/public/sdk/rpc16/sdk/rpcndr.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/rpcnsi.h_ b/public/sdk/rpc16/sdk/rpcnsi.h_
new file mode 100644
index 000000000..e137ed300
--- /dev/null
+++ b/public/sdk/rpc16/sdk/rpcnsi.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/rpcnsip.h_ b/public/sdk/rpc16/sdk/rpcnsip.h_
new file mode 100644
index 000000000..f7345eb1f
--- /dev/null
+++ b/public/sdk/rpc16/sdk/rpcnsip.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/rpcsdk.in_ b/public/sdk/rpc16/sdk/rpcsdk.in_
new file mode 100644
index 000000000..54d98cae3
--- /dev/null
+++ b/public/sdk/rpc16/sdk/rpcsdk.in_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/rpcsdk.mst b/public/sdk/rpc16/sdk/rpcsdk.mst
new file mode 100644
index 000000000..a16f96dc2
--- /dev/null
+++ b/public/sdk/rpc16/sdk/rpcsdk.mst
@@ -0,0 +1,786 @@
+'***********************************************************************
+'* RPC SDK Install
+'* Copyright (C) - 1992 by Microsoft
+'*
+'* Written By - Steven Zeck
+'**************************************************************************
+
+'$define DEBUG
+
+'$INCLUDE 'setupapi.inc'
+'$INCLUDE 'msdetect.inc'
+
+CONST TRUE = -1
+CONST FALSE = 0
+
+''Dialog ID's
+CONST ASKQUIT = 200
+CONST DlgGetPath = 310
+CONST HlpGetPath = 311
+CONST DlgRegPath = 1700
+CONST HlpRegPath = 1701
+CONST DlgDosPath = 2000
+CONST HlpDosPath = 2001
+CONST EXITFAILURE = 400
+CONST EXITQUIT = 600
+
+' Conditionaly set the dialogs for full SDK versus runtime only.
+
+CONST DlgWelcome = 100
+CONST DlgInstallOptions = 800
+CONST HlpInstallOptions = 801
+CONST DlgNSInstallOptions = 802
+CONST HlpNSInstallOptions = 803
+CONST EXITSUCCESS = 700
+
+CONST DlgSdkOption = 1200
+CONST HlpSdkOption = 1201
+CONST DlgRuntimeOption = 1400
+CONST HlpRuntimeOption = 1401
+CONST DlgTransport = 1600
+CONST HlpTransport = 1601
+CONST DlgNetBiosOptions = 2200
+CONST HlpNetBiosOptions = 2201
+CONST DlgNetBiosProtocols = 2300
+CONST HlpNetBiosProtocols = 2301
+CONST DlgNewProtocol = 2100
+CONST HlpNewProtocol = 2101
+CONST DlgNewNS = 2150
+CONST DlgAutoPath = 2400
+CONST HlpAutoPath = 2401
+CONST BADPATH = 6400
+
+CONST DlgDosSdkPath = 3000
+CONST DlgDosSdkPathHelp = 3001
+
+CONST DlgMacSdkPath = 3100
+CONST DlgMacSdkPathHelp = 3101
+
+CONST DlgWinSdkPath = 3200
+CONST DlgWinSdkPathHelp = 3201
+
+''Bitmap ID
+CONST LOGO = 1
+
+CONST LanType_LANMAN = 6
+
+Type LAN_DETECT
+ iType As Integer
+ iMajor As Integer
+ iMinor As Integer
+ iRev As Integer
+ fEnhance As Integer
+End Type
+
+GLOBAL BasePath$ ''Default destination directory.
+GLOBAL WinIncPath$
+GLOBAL WinLibPath$
+GLOBAL BaseWPath$ ''Default destination directory.
+GLOBAL DosIncPath$
+Global DosLibPath$
+Global DosExePath$
+GLOBAL Base2Path$ ''Default destination directory.
+Global MacIncPath$
+Global MacLibPath$
+
+GLOBAL RegPath$ ''Default destination directory.
+GLOBAL DosPath$ ''Default destination directory.
+Global CustomInstall ''Custom install option
+Global SrcDir$
+Global MSDOSSDK
+Global MSDOSIncSDK
+Global MSDOSLibSDK
+
+Global WindowsSDK
+Global WindowsIncSDK
+Global WindowsLibSDK
+
+Global MacSDK
+Global MacIncSDK
+Global MacLibSDK
+
+GLOBAL CUIDLL$
+GLOBAL HELPPROC$
+Global ThreeEightySixEnh
+Global ThreeEightySixEnhStr$
+Global TCP
+
+DECLARE Function GetPath(Dialog%, Path$) AS INTEGER
+DECLARE Function GetDosPath() AS INTEGER
+DECLARE Function GetWinPath() AS INTEGER
+DECLARE Function GetMacPath() AS INTEGER
+DECLARE Sub CopyList(ListIn$, ListOut$, Truncate%)
+DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
+DECLARE FUNCTION GetCheck (index%) AS INTEGER
+DECLARE FUNCTION GetInnerChk (index%) AS INTEGER
+DECLARE FUNCTION BoolToOnOff (Bool%) AS String
+DECLARE FUNCTION GetWinSize () AS String
+DECLARE FUNCTION GetDosSize () AS String
+DECLARE FUNCTION GetMacSize () AS String
+DECLARE FUNCTION FormatSize ()AS String
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Startup Entry point
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+INIT:
+ CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
+ HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
+
+ SetBitmap CUIDLL$, LOGO
+ SetTitle "RPC - Software Development Kit Install"
+
+ szInf$ = GetSymbolValue("STF_SRCINFPATH")
+ if szInf$ = "" THEN
+ szInf$ = GetSymbolValue("STF_CWDDIR") + "RPCSDK.INF"
+ end if
+ ReadInfFile szInf$
+ SetAbout "RPC SDK Install", "By GregJen - Version 0.20"
+
+ CustomInstall = FALSE
+ MSDOSRuntime = TRUE
+ ThreeEightySixEnh = FALSE
+ TCP = FALSE
+ ThreeEightySixEnhStr$="[386Enh]"
+
+
+'$ifndef WINDOWS_ONLY
+ MSDOSSDK = TRUE
+'$endif
+
+'$ifndef MSDOS_ONLY
+ WindowsRuntime = TRUE
+'$endif
+
+ MSDOSIncSDK = TRUE
+ MSDOSLibSDK = TRUE
+
+ WindowsSDK = TRUE
+ WindowsIncSDK = TRUE
+ WindowsLibSDK = TRUE
+
+ MacSDK = TRUE
+ MacIncSDK = TRUE
+ MacLibSDK = TRUE
+
+ Dim Detect As LAN_DETECT
+ BasePath$ = "C:\msvc"
+ BaseWPath$ = "C:\msvc"
+ Base2Path$ = "C:\msvc20\m68k"
+ RegPath$="C:\"
+ DosPath$="C:\DOS"
+ WinPath$=GetWindowsDir
+ SrcDir$ = GetSymbolValue("STF_SRCDIR")
+
+ ' If the path contains lanman, make that the default DOS DLL directory.
+
+ path$ = Ucase$(GetEnvVariableValue ("PATH"))+";"
+
+ i% = 1
+ while i% < len(path$)
+
+ iEnd = instr(i%, path$, ";")
+ cPath$ = mid$(path, i%, iEnd - i%)
+
+ if instr (cPath$, "LANMAN") or instr(cPath$, "\NETPROG") then
+ DosPath$ = cPath$
+ end if
+
+ if instr (cPath$, "\msvc\") then
+ BasePath$ = mid$(cPath$, 1, 1)+":\msvc"
+ end if
+
+ if instr (cPath$, "\msvc20\") then
+ Base2Path$ = mid$(cPath$, 1, 1)+":\msvc20\m68k"
+ end if
+
+ i% = iEnd + 1
+ wend
+
+ BaseWPath$ = BasePath$
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Welcome dialog box
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+WELCOME:
+ sz$ = UIStartDlg(CUIDLL$, DlgWelcome, "FInfoDlgProc", 0, "")
+ if sz$ = "CONTINUE" THEN
+ UIPop 1
+ else
+ GOSUB ASKQUIT
+ GOTO WELCOME
+ end if
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' sdk custom install dialog box
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+SDK_OPTION:
+
+ RemoveSymbol "CheckItemsState"
+ AddListItem "CheckItemsState", BoolToOnOff(MSDOSSDK)
+ AddListItem "CheckItemsState", BoolToOnOff(WindowsSDK )
+ AddListItem "CheckItemsState", BoolToOnOff(MacSDK )
+
+ RemoveSymbol "DriveStatusText"
+ AddListItem "DriveStatusText", BasePath$
+ 'AddListItem "EditFocus", "END"
+ AddListItem "DriveStatusText", BaseWPath$
+ 'AddListItem "EditFocus", "END"
+ AddListItem "DriveStatusText", Base2Path$
+ 'AddListItem "EditFocus", "END"
+
+RESTART_SDK_OPTION:
+
+ RemoveSymbol "StatusItemsText"
+ CurSize$ = GetDosSize()
+ TotalSize = val(CurSize$)
+ AddListItem "StatusItemsText", CurSize$
+ CurSize$ = GetWinSize()
+ TotalSize = TotalSize + val(CurSize$)
+ AddListItem "StatusItemsText", CurSize$
+ CurSize $= GetMacSize()
+ TotalSize = TotalSize + val(CurSize$)
+ AddListItem "StatusItemsText", CurSize$
+
+ TotalSizeStr$ = "Total ="+str$( TotalSize )+"K"
+ AddListItem "StatusItemsText", TotalSizeStr$
+
+RE_ITERATE:
+ sz$ = UIStartDlg(CUIDLL$, DlgSdkOption, "FCustInstDlgProc", HlpSdkOption, HELPPROC$)
+
+ if sz$ = "CONTINUE" THEN
+ UIPop(1)
+
+ elseif sz$ = "BACK" THEN
+ UIPop(1)
+ GOTO WELCOME
+
+ elseif sz$ = "REACTIVATE" THEN
+ GOTO RESTART_SDK_OPTION
+
+ elseif sz$ = "PATH" THEN
+
+ i% = GetPath(DlgGetPath ,BasePath$)
+ ReplaceListItem "DriveStatusText", 1, BasePath$
+ GOTO RESTART_SDK_OPTION
+
+ elseif sz$ = "CHK1" THEN
+
+ MSDOSSDK = GetCheck(1)
+ GOTO RESTART_SDK_OPTION
+
+ elseif sz$ = "CHK2" THEN
+
+ WindowsSDK = GetCheck(2)
+ GOTO RESTART_SDK_OPTION
+
+ elseif sz$ = "CHK3" THEN
+
+ MacSDK = GetCheck(3)
+ GOTO RESTART_SDK_OPTION
+
+ elseif sz$ = "BTN1" THEN
+
+ 'StfApiErr saeInit, "Got sz$", sz$
+ i% = GetDosPath()
+ ReplaceListItem "DriveStatusText", 1, BasePath$
+ GOTO RESTART_SDK_OPTION
+
+ elseif sz$ = "BTN2" THEN
+
+ 'StfApiErr saeInit, "Got sz$", sz$
+ i% = GetWinPath()
+ ReplaceListItem "DriveStatusText", 2, BaseWPath$
+ GOTO RESTART_SDK_OPTION
+
+ elseif sz$ = "BTN3" THEN
+
+ 'StfApiErr saeInit, "Got sz$", sz$
+ i% = GetMacPath()
+ ReplaceListItem "DriveStatusText", 3, Base2Path$
+ GOTO RESTART_SDK_OPTION
+
+ else
+ 'StfApiErr saeInit, "Got final sz$", sz$
+ GOSUB ASKQUIT
+ GOTO RESTART_SDK_OPTION
+ end if
+
+ 'StfApiErr saeInit, "Got sz$", sz$
+ if MSDOSSDK = FALSE and WindowsSDK = FALSE and MacSDK = FALSE then
+ goto FullInstall
+
+ end if
+
+FullInstall:
+
+ group$ = "Microsoft Visual C++"
+
+
+
+ if MSDOSSDK or WindowsSDK then
+ CreateDir BasePath$, cmoNone
+
+ CreateDir MakePath(BasePath$, "rpc"), cmoNone
+
+ ' Install the SDK files first.
+
+ CreateDir MakePath(BasePath$, "include"), cmoNone
+
+ AddSectionFilesToCopyList "Base", SrcDir$, MakePath(BaseWPath$, "rpc")
+
+ AddSectionFilesToCopyList "include", SrcDir$, MakePath(BaseWPath$, "include")
+ AddSectionFilesToCopyList "binclude", SrcDir$, MakePath(BaseWPath$, "include")
+ AddSectionFilesToCopyList "bin", SrcDir$, MakePath(BaseWPath$, "bin")
+ endif
+
+ if WindowsSDK then
+ CreateDir BaseWPath$, cmoNone
+
+ if WindowsIncSDK then
+ AddSectionFilesToCopyList "winclude", SrcDir$, MakePath(BaseWPath$, "include\win")
+ end if
+
+ if WindowsLibSDK then
+ AddSectionFilesToCopyList "wlib", SrcDir$, MakePath(BaseWPath$, "lib")
+ end if
+
+
+ CreateProgmanGroup group$, "", cmoNone
+ ShowProgmanGroup group$, 1, cmoNone
+ CreateProgmanItem group$, "RPC ReadMe", "notepad "+MakePath(BaseWPath$, "rpc\readme.txt"), "", cmoOverWrite
+
+ end if
+
+ if MSDOSSDK then
+ if MSDOSIncSDK then
+ AddSectionFilesToCopyList "dinclude", SrcDir$, MakePath(BasePath$, "include\dos")
+ end if
+ if MSDOSLibSDK then
+ AddSectionFilesToCopyList "dlib", SrcDir$, MakePath(BasePath$, "lib")
+ end if
+ end if
+
+ if MacSDK then
+ CreateDir Base2Path$, cmoNone
+
+ if MacIncSDK then
+ AddSectionFilesToCopyList "minclude", SrcDir$, MakePath(Base2Path$, "include")
+ AddSectionFilesToCopyList "binclude", SrcDir$, MakePath(Base2Path$, "include")
+ end if
+ if MacLibSDK then
+ AddSectionFilesToCopyList "mlib", SrcDir$, MakePath(Base2Path$, "lib")
+ end if
+ end if
+
+
+ ' DumpCopyList "C:\tmp\t"
+ CopyFilesInCopyList
+
+
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' QUIT points
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+
+QUIT:
+ ON ERROR GOTO ERRQUIT
+ OldNetapiPath$ = FindTargetOnEnvVar("netapi.old", "PATH")
+
+ if OldNetapiPath$ <> "" then
+ BackupFile OldNetapiPath$, "netapi.dll"
+ end if
+
+ if ERR = 0 THEN
+ dlg% = EXITSUCCESS
+
+ elseif ERR = STFQUIT THEN
+ dlg% = EXITQUIT
+
+ else
+ dlg% = EXITFAILURE
+ end if
+
+QUITL1:
+ while UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") = "REACTIVATE"
+ wend
+
+ UIPop 1
+
+ END
+
+ERRQUIT:
+ i% = DoMsgBox("Setup sources were corrupted, contact technical support", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
+ END
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' quit prompt dialog box subroutine
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+ASKQUIT:
+ sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
+
+ if sz$ = "EXIT" THEN
+ UIPopAll
+ ERROR STFQUIT
+ elseif sz$ = "REACTIVATE" THEN
+ GOTO ASKQUIT
+ else
+ UIPop 1
+ end if
+ RETURN
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function GetPath
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+
+Function GetPath(Dialog%, Path$) Static AS INTEGER
+
+ SetSymbolValue "EditTextIn", Path$
+ SetSymbolValue "EditFocus", "END"
+
+ sz$ = UIStartDlg(CUIDLL$, Dialog%, "FEditDlgProc", Dialog% + 1, HELPPROC$)
+ NewPath$ = GetSymbolValue("EditTextOut")
+
+ GetPath = FALSE
+
+ if sz$ = "CONTINUE" THEN
+ Path$ = NewPath$
+ GetPath = TRUE
+ end if
+
+ UIPop (1)
+
+end function
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function GetDosPath
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+
+Function GetDosPath() Static AS INTEGER
+
+ SetSymbolValue "EditTextIn", BasePath$
+ SetSymbolValue "EditFocus", "END"
+ RemoveSymbol "InnerChkItemsState"
+ AddListItem "InnerChkItemsState", BoolToOnOff(MSDOSIncSDK)
+ AddListItem "InnerChkItemsState", BoolToOnOff(MSDOSLibSDK)
+
+RESTART_DOS_PATH:
+ sz$ = UIStartDlg(CUIDLL$,DlgDosSdkPath, "FMyEditDlgProc", DlgDosSdkPathHelp, HELPPROC$)
+ NewPath$ = GetSymbolValue("EditTextOut")
+
+ GetDosPath = FALSE
+
+ if sz$ = "CONTINUE" THEN
+ BasePath$ = NewPath$
+ GetDosPath = TRUE
+ elseif sz$ = "CHK1" THEN
+ MSDOSIncSDK = GetInnerChk(1)
+ GOTO RESTART_DOS_PATH
+ elseif sz$ = "CHK2" THEN
+ MSDOSLibSDK = GetInnerChk(2)
+ GOTO RESTART_DOS_PATH
+ end if
+
+ UIPop (1)
+
+end function
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function GetWinPath
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+
+Function GetWinPath() Static AS INTEGER
+
+ SetSymbolValue "EditTextIn", BaseWPath$
+ SetSymbolValue "EditFocus", "END"
+ RemoveSymbol "InnerChkItemsState"
+ AddListItem "InnerChkItemsState", BoolToOnOff(WindowsIncSDK)
+ AddListItem "InnerChkItemsState", BoolToOnOff(WindowsLibSDK)
+ 'StfApiErr saeInit, "WindowsIncSDK is", BoolToOnOff(WindowsIncSDK)
+
+RESTART_Win_PATH:
+ sz$ = UIStartDlg(CUIDLL$,DlgWinSdkPath, "FMyEditDlgProc", DlgWinSdkPathHelp, HELPPROC$)
+ NewPath$ = GetSymbolValue("EditTextOut")
+
+ GetWinPath = FALSE
+
+ if sz$ = "CONTINUE" THEN
+ BaseWPath$ = NewPath$
+ GetWinPath = TRUE
+ elseif sz$ = "CHK1" THEN
+ WindowsIncSDK = GetInnerChk(1)
+ GOTO RESTART_Win_PATH
+ elseif sz$ = "CHK2" THEN
+ WindowsLibSDK = GetInnerChk(2)
+ GOTO RESTART_Win_PATH
+ end if
+
+ UIPop (1)
+
+end function
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function GetMacPath
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+
+Function GetMacPath() Static AS INTEGER
+
+ SetSymbolValue "EditTextIn", Base2Path$
+ SetSymbolValue "EditFocus", "END"
+ RemoveSymbol "InnerChkItemsState"
+ AddListItem "InnerChkItemsState", BoolToOnOff(MacIncSDK)
+ AddListItem "InnerChkItemsState", BoolToOnOff(MacLibSDK)
+
+RESTART_Mac_PATH:
+ sz$ = UIStartDlg(CUIDLL$,DlgMacSdkPath, "FMyEditDlgProc", DlgMacSdkPathHelp, HELPPROC$)
+ NewPath$ = GetSymbolValue("EditTextOut")
+
+ GetMacPath = FALSE
+
+ if sz$ = "CONTINUE" THEN
+ Base2Path$ = NewPath$
+ GetMacPath = TRUE
+ elseif sz$ = "CHK1" THEN
+ MacIncSDK = GetInnerChk(1)
+ GOTO RESTART_Mac_PATH
+ elseif sz$ = "CHK2" THEN
+ 'StfApiErr saeInit, "Got sz$", sz$
+ GOTO RESTART_Mac_PATH
+ end if
+
+ UIPop (1)
+
+end function
+
+
+'**
+'** Purpose:
+'** Appends a file name to the end of a directory path,
+'** inserting a backslash character as needed.
+'** Arguments:
+'** szDir$ - full directory path (with optional ending "\")
+'** szFile$ - filename to append to directory
+'** Returns:
+'** Resulting fully qualified path name.
+'*************************************************************************
+
+FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
+ if szDir$ = "" THEN
+ MakePath = szFile$
+ elseif szFile$ = "" THEN
+ MakePath = szDir$
+ elseif MID$(szDir$, LEN(szDir$), 1) = "\" THEN
+ MakePath = szDir$ + szFile$
+ else
+ MakePath = szDir$ + "\" + szFile$
+ end if
+END FUNCTION
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function GetCheck
+'
+' returns true if the specified item is checked
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+FUNCTION GetCheck (index%) STATIC AS INTEGER
+
+ if GetListItem("CheckItemsState", index%) = "ON" then
+ GetCheck = TRUE
+ else
+ GetCheck = FALSE
+ end if
+
+END FUNCTION
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function GetInnerChk
+'
+' returns true if the specified item is checked
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+FUNCTION GetInnerChk (index%) STATIC AS INTEGER
+
+ if GetListItem("InnerChkItemsState", index%) = "ON" then
+ GetInnerChk = TRUE
+ else
+ GetInnerChk = FALSE
+ end if
+
+END FUNCTION
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Sub CopyList
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+Sub CopyList(ListOut$, ListIn$, Truncate%) static
+
+ if Truncate% <> 0 then
+ RemoveSymbol ListOut$
+ end if
+
+ for i% = 1 to GetListLength(ListIn$) step 1
+ AddListItem ListOut$, GetListItem(ListIn$, i%)
+ next
+
+end sub
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function BoolToOnOff
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+function BoolToOnOff (Bool%) static AS String
+
+ if Bool% then
+ BoolToOnOff$ = "ON"
+ else
+ BoolToOnOff$ = "OFF"
+ end if
+
+end function
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function FormatSize
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+function FormatSize () static AS String
+
+ cbMore& = GetCopyListCost ("", "Cost", "")
+ cbSize = val(GetListItem("Cost", asc(BasePath$) - asc("A") + 1)) / 1024
+
+ if cbSize then
+ FormatSize = str$(cbSize)+"K"
+ else
+ FormatSize = ""
+ end if
+
+ ClearCopyList
+
+end function
+
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Sizing functions
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function GetDosSize
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+function GetDosSize () static AS String
+
+ if MSDOSSDK then
+
+ if MSDOSIncSDK then
+ AddSectionFilesToCopyList "include", SrcDir$, BasePath$
+ AddSectionFilesToCopyList "binclude", SrcDir$, BasePath$
+ AddSectionFilesToCopyList "dinclude", SrcDir$, BasePath$
+ end if
+
+ if MSDOSLibSDK then
+ AddSectionFilesToCopyList "dlib", SrcDir$, BasePath$
+ end if
+
+ end if
+
+ GetDosSize = FormatSize()
+
+end function
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function GetWinSize
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+function GetWinSize () static AS String
+
+ if WindowsSDK then
+ if WindowsIncSDK then
+ AddSectionFilesToCopyList "include", SrcDir$, BaseWPath$
+ AddSectionFilesToCopyList "binclude", SrcDir$, BaseWPath$
+ AddSectionFilesToCopyList "winclude", SrcDir$, BaseWPath$
+ end if
+
+ if WindowsLibSDK then
+ AddSectionFilesToCopyList "wlib", SrcDir$, BaseWPath$
+ end if
+ end if
+
+ GetWinSize = FormatSize()
+
+end function
+
+
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+' Function GetMacSize
+'
+'
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+function GetMacSize () static AS String
+
+ if MacSDK then
+ if MacIncSDK then
+ AddSectionFilesToCopyList "minclude", SrcDir$, Base2Path$
+ AddSectionFilesToCopyList "binclude", SrcDir$, Base2Path$
+ end if
+
+ if MacLibSDK then
+ AddSectionFilesToCopyList "mlib", SrcDir$, Base2Path$
+ end if
+ end if
+
+
+ GetMacSize = FormatSize()
+
+end function
+
+
+
diff --git a/public/sdk/rpc16/sdk/rpcx86.h_ b/public/sdk/rpc16/sdk/rpcx86.h_
new file mode 100644
index 000000000..3bb5f83bd
--- /dev/null
+++ b/public/sdk/rpc16/sdk/rpcx86.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/setup.lst b/public/sdk/rpc16/sdk/setup.lst
new file mode 100644
index 000000000..5233d7d51
--- /dev/null
+++ b/public/sdk/rpc16/sdk/setup.lst
@@ -0,0 +1,20 @@
+[Params]
+ WndTitle = Microsoft RPC Setup
+ WndMess = Initializing Setup...
+ TmpDirSize = 500
+ TmpDirName = ~msstfqf.t
+ CmdLine = _mstest RPCSDK.mst /C "/S %s %s"
+ DrvModName = DSHELL
+
+[Files]
+ RPCSDK.mst = RPCSDK.mst
+ RPCSDK.in_ = RPCSDK.inf
+ setupapi.inc = setupapi.inc
+ msdetect.inc = msdetect.inc
+ mscomstf.dll = mscomstf.dll
+ msinsstf.dll = msinsstf.dll
+ msuilstf.dll = msuilstf.dll
+ msshlstf.dll = msshlstf.dll
+ mscuistf.dl_ = mscuistf.dll
+ msdetstf.dll = msdetstf.dll
+ _mstest.exe = _mstest.exe
diff --git a/public/sdk/rpc16/sdk/setupapi.inc b/public/sdk/rpc16/sdk/setupapi.inc
new file mode 100644
index 000000000..b249c01a6
--- /dev/null
+++ b/public/sdk/rpc16/sdk/setupapi.inc
@@ -0,0 +1,1803 @@
+'**************************************************************************
+'******************************* Windows API's **************************
+'**************************************************************************
+GLOBAL hSetup AS INTEGER
+GLOBAL fFrameInit AS INTEGER
+GLOBAL fInstallInit AS INTEGER
+
+CONST SM_CXSCREEN = 0
+CONST SM_CYSCREEN = 1
+
+CONST WF_80x87 = 1024
+CONST WF_CPU186 = 128
+CONST WF_CPU286 = 2
+CONST WF_CPU386 = 4
+CONST WF_CPU486 = 8
+CONST WF_STANDARD = 16
+CONST WF_ENHANCED = 32
+
+
+'' DoMsgBox Flags
+
+CONST MB_OK = 0
+CONST MB_ICONHAND = 16
+CONST MB_TASKMODAL = 8192
+
+
+DECLARE FUNCTION DoMsgBox LIB "mscomstf.dll" (lpText$,lpCaption$,wType%) As INTEGER
+DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION GetProfileString LIB "kernel" (szSect$, szKey$, szDefault$, szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION GetVersion LIB "kernel" AS INTEGER
+DECLARE FUNCTION GetSystemMetrics LIB "user" (nIndex%) AS INTEGER
+DECLARE FUNCTION GetWinFlags LIB "kernel" AS LONG
+
+
+
+
+'**************************************************************************
+'****************************** Setup Constants ***************************
+'**************************************************************************
+
+
+''Command Option Flags
+
+CONST cmoVital = 1
+CONST cmoCopy = 2
+CONST cmoUndo = 4
+CONST cmoRoot = 8
+CONST cmoDecompress = 16
+CONST cmoTimeStamp = 32
+CONST cmoReadOnly = 64
+CONST cmoBackup = 128
+CONST cmoForce = 256
+CONST cmoRemove = 512
+CONST cmoOverwrite = 1024
+CONST cmoAppend = 2048
+CONST cmoPrepend = 4096
+CONST cmoNone = 0
+CONST cmoAll = 65535
+
+
+''File Exist Modes
+
+CONST femExists = 0
+CONST femRead = 1
+CONST femWrite = 2
+CONST femReadWrite = 3
+
+
+''Read-Only Return Code
+
+CONST ynrcNo = 0
+CONST ynrcYes = 1
+CONST ynrcErr1 = 2
+CONST ynrcErr2 = 3
+CONST ynrcErr3 = 4
+CONST ynrcErr4 = 5
+CONST ynrcErr5 = 6
+CONST ynrcErr6 = 7
+CONST ynrcErr7 = 8
+CONST ynrcErr8 = 9
+CONST ynrcErr9 = 10
+
+
+''General Return Codes
+
+CONST grcOkay = 0
+CONST grcNotOkay = 1
+CONST grcUserQuit = 48
+
+
+''Ranges
+
+''CONST cbSymValMax = 8192
+CONST cbSymValMax = 512
+ ''REVIEW: symbol table will allow strings up to 8192 bytes
+ '' but we get Out of String Space wattdrvr error if we alloc
+ '' STRING$() that big. (See GetSymbolValue and GetListItem)
+ '' We should look into using dynamic far alloc instead of
+ '' STRING$ for large buffers.
+ '' NOTE: 8192 works okay with runtime wattdrvr, however.
+
+
+''ON ERROR Error Codes
+CONST STFERR = 1024 ''setup system error
+CONST STFQUIT = 1025 ''user quit
+
+CONST scmOff = 0
+CONST scmOnIgnore = 1
+CONST scmOnFatal = 2
+
+
+'**************************************************************************
+'******************************** Setup API's ***************************
+'**************************************************************************
+
+'' common
+
+DECLARE FUNCTION FParseFATPathIntoPieces LIB "mscomstf.dll" (szPath$, szVol$, cbVol%, szDir$, cbDir%, szFile$, cbFile%) AS INTEGER
+DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
+DECLARE FUNCTION FSetSilent LIB "mscomstf.dll" (mode%) AS INTEGER
+DECLARE FUNCTION FSetBeepingMode LIB "mscomstf.dll" (mode%) AS INTEGER
+DECLARE FUNCTION HShowWaitCursor LIB "msshlstf.dll" AS INTEGER
+DECLARE FUNCTION FRestoreCursor LIB "msshlstf.dll" (hPrev%) AS INTEGER
+DECLARE FUNCTION FOpenLogFile LIB "mscomstf.dll" (szFile$, fAppend%) AS INTEGER
+DECLARE FUNCTION FCloseLogFile LIB "mscomstf.dll" AS INTEGER
+DECLARE FUNCTION FWriteToLogFile LIB "mscomstf.dll" (sz$, fRequire%) AS INTEGER
+DECLARE FUNCTION CbGetInfSectionKeyField LIB "mscomstf.dll" (szSect$, szKey$, iField%, szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION FMakeListInfSectionField LIB "mscomstf.dll" (szSym$, szSect$, iField%) AS INTEGER
+
+
+''shell
+
+DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
+DECLARE FUNCTION FSetAbout LIB "msshlstf.dll" (szAbout1$, szAbout2$) AS INTEGER
+DECLARE FUNCTION FDoDialog LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS INTEGER
+DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
+DECLARE SUB SetWindowText LIB "User" (hwnd%, lpString$)
+DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
+DECLARE FUNCTION FRemoveSymbol LIB "mscomstf.dll" (szSym$) AS INTEGER
+DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
+DECLARE FUNCTION UsGetListLength LIB "mscomstf.dll" (szSymbol$) AS INTEGER
+DECLARE FUNCTION CbGetListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$, cbMax%) AS INTEGER
+DECLARE FUNCTION FAddListItem LIB "mscomstf.dll" (szListSymbol$, szListItem$) AS INTEGER
+DECLARE FUNCTION FReplaceListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$) AS INTEGER
+DECLARE FUNCTION FSetSymbolToListOfInfKeys LIB "mscomstf.dll" (szSym$, szSect$, fNulls%) AS INTEGER
+
+
+''shell
+
+DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
+DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
+DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
+
+
+
+''install
+
+DECLARE SUB ProSetPos LIB "msinsstf.dll" (x%, y%)
+DECLARE FUNCTION FCreateDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
+DECLARE FUNCTION FRemoveDir LIB "msinsstf.dll" (szDir$, cmo%) AS INTEGER
+DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
+DECLARE FUNCTION FAddSectionKeyFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
+DECLARE FUNCTION FAddSpecialFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
+DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
+DECLARE FUNCTION FRemoveIniSection LIB "msinsstf.dll" (szFile$, szSect$, cmo%) AS INTEGER
+DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
+DECLARE FUNCTION FRemoveIniKey LIB "msinsstf.dll" (szFile$, szSect$, szKey$, cmo%) AS INTEGER
+DECLARE FUNCTION FCreateSysIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
+DECLARE FUNCTION FCreateProgManGroup LIB "msinsstf.dll" (szGroup$, szPath$, cmo%) AS INTEGER
+DECLARE FUNCTION FCreateProgManItem LIB "msinsstf.dll" (szGroup$, szItem$, szCmd$, cmo%) AS INTEGER
+DECLARE FUNCTION FShowProgManGroup LIB "msinsstf.dll" (szGroup$, szCmd$, cmo%) AS INTEGER
+DECLARE FUNCTION FStampResource LIB "msinsstf.dll" (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) AS INTEGER
+DECLARE FUNCTION FDumpCopyListToFile LIB "msinsstf.dll" (szFile$) AS INTEGER
+DECLARE SUB ResetCopyList LIB "msinsstf.dll"
+DECLARE FUNCTION LcbGetCopyListCost LIB "msinsstf.dll" (szExtraList$, szCostList$, szNeedList$) AS LONG
+DECLARE FUNCTION FAddDos5Help LIB "msinsstf.dll" (szProgName$, szProgHelp$, cmo%) AS INTEGER
+DECLARE FUNCTION FCopyOneFile LIB "msinsstf.dll" (szSrc$, szDest$, cmo%, fAppend%) AS INTEGER
+DECLARE FUNCTION YnrcRemoveFile LIB "msinsstf.dll" (szFullPathSrc$, cmo%) AS INTEGER
+DECLARE FUNCTION YnrcBackupFile LIB "msinsstf.dll" (szFullPath$, szBackup$, cmo%) AS INTEGER
+DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
+DECLARE FUNCTION WFindFileUsingFileOpen LIB "msinsstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
+DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
+DECLARE FUNCTION FIsFileWritable LIB "msinsstf.dll" (szFile$) AS INTEGER
+DECLARE FUNCTION FAddToBillboardList LIB "msinsstf.dll" (szDll$, idDlg%, szProc$, lTicks&) AS INTEGER
+DECLARE FUNCTION FClearBillboardList LIB "msinsstf.dll" AS INTEGER
+DECLARE FUNCTION FSetRestartDir LIB "msinsstf.dll" (szDir$) AS INTEGER
+DECLARE FUNCTION FRestartListEmpty LIB "msinsstf.dll" AS INTEGER
+DECLARE FUNCTION FExitExecRestart LIB "msinsstf.dll" AS INTEGER
+DECLARE FUNCTION SetCopyMode LIB "msinsstf.dll" (fMode%) AS INTEGER
+DECLARE FUNCTION GetCopyMode LIB "msinsstf.dll" AS INTEGER
+DECLARE FUNCTION SetDecompMode LIB "msinsstf.dll" (fMode%) AS INTEGER
+DECLARE FUNCTION GetDecompMode LIB "msinsstf.dll" AS INTEGER
+DECLARE FUNCTION SetSizeCheckMode LIB "msinsstf.dll" (scmMode%) AS INTEGER
+DECLARE FUNCTION FPrependToPath LIB "msinsstf.dll" (szSrc$, szDst$, szDir$, cmo%) AS INTEGER
+
+DECLARE FUNCTION SetTimeValue LIB "msinsstf.dll" (usHours%, usMinutes%, usSeconds%) AS INTEGER
+
+
+
+'*************************************************************************
+'**************** Setup Basic Wrapper Declarations *********************
+'*************************************************************************
+
+
+''shell
+
+DECLARE SUB SetBitmap(szDll$, Bitmap%)
+DECLARE SUB SetAbout(szAbout1$, szAbout2$)
+DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
+DECLARE SUB UIPop (n%)
+DECLARE SUB UIPopAll
+DECLARE SUB SetTitle (sz$)
+DECLARE SUB ReadInfFile (szFile$)
+DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
+DECLARE SUB RemoveSymbol (szSym$)
+DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
+DECLARE FUNCTION GetListLength(szSymbol$) AS INTEGER
+DECLARE SUB MakeListFromSectionKeys (szSymbol$, szSect$)
+DECLARE FUNCTION GetListItem(szSymbol$, n%) AS STRING
+DECLARE SUB AddListItem(szSymbol$, szItem$)
+DECLARE SUB ReplaceListItem(szSymbol$, n%, szItem$)
+
+DECLARE FUNCTION InitFrame (szCmdLine$) AS INTEGER
+DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
+
+DECLARE FUNCTION ShowWaitCursor AS INTEGER
+DECLARE SUB RestoreCursor (hPrev%)
+
+DECLARE FUNCTION SetBeepingMode (mode%) AS INTEGER
+DECLARE FUNCTION SetSilentMode (mode%) AS INTEGER
+
+DECLARE FUNCTION GetSectionKeyDate (szSect$, szKey$) AS STRING
+DECLARE FUNCTION GetSectionKeyFilename (szSect$, szKey$) AS STRING
+DECLARE FUNCTION GetSectionKeySize (szSect$, szKey$) AS LONG
+DECLARE FUNCTION GetSectionKeyVersion (szSect$, szKey$) AS STRING
+
+DECLARE SUB MakeListFromSectionDate (szSym$, szSect$)
+DECLARE SUB MakeListFromSectionFilename (szSym$, szSect$)
+DECLARE SUB MakeListFromSectionSize (szSym$, szSect$)
+DECLARE SUB MakeListFromSectionVersion (szSym$, szSect$)
+
+
+''install
+
+
+DECLARE SUB CreateDir (szDir$, cmo%)
+DECLARE SUB RemoveDir (szDir$, cmo%)
+DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
+DECLARE SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
+DECLARE SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
+DECLARE SUB CopyFilesInCopyList
+DECLARE SUB RemoveIniSection (szFile$, szSect$, cmo%)
+DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
+DECLARE SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%)
+DECLARE SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
+DECLARE SUB CreateProgmanGroup (szGroup$, szPath$, cmo%)
+DECLARE SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
+DECLARE SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%)
+DECLARE SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%)
+DECLARE SUB DumpCopyList (szFile$)
+DECLARE SUB ClearCopyList
+DECLARE FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) AS LONG
+DECLARE SUB AddDos5Help (szProgName$, szProgHelp$, cmo%)
+DECLARE SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%)
+DECLARE SUB RemoveFile (szFullPathSrc$, cmo%)
+DECLARE SUB BackupFile (szFullPath$, szBackup$)
+DECLARE SUB RenameFile (szFullPath$, szBackup$)
+DECLARE SUB InitInstall
+DECLARE SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&)
+DECLARE SUB AddBlankToBillboardList (lTicks&)
+DECLARE SUB ClearBillboardList
+DECLARE SUB OpenLogFile (szFile$, fAppend%)
+DECLARE SUB CloseLogFile
+DECLARE SUB WriteToLogFile (szStr$)
+DECLARE SUB SetCopyGaugePosition (x%, y%)
+DECLARE SUB SetRestartDir(szDir$)
+DECLARE FUNCTION RestartListEmpty AS INTEGER
+DECLARE FUNCTION ExitExecRestart AS INTEGER
+DECLARE FUNCTION FindFileUsingFileOpen (szFile$) AS STRING
+DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
+DECLARE FUNCTION IsFileWritable (szFile$) AS INTEGER
+DECLARE FUNCTION GetNthFieldFromIniString (szLine$, iField%) AS STRING
+DECLARE SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%)
+
+
+'' Error Handling
+
+'$ifdef DEBUG
+
+'' Setup API Errors
+CONST saeFail = 0
+CONST saeInit = 1
+CONST saeNYI = 3
+CONST saeArg = 4 ''must be max sae value
+
+DECLARE SUB StfApiErr (nMsg%, szApi$, szArgs$)
+DECLARE SUB BadArgErr (nArg%, szApi$, szArgs$)
+
+'' chk arg
+DECLARE FUNCTION FValidFATDir LIB "mscomstf.dll" (szDir$) AS INTEGER
+DECLARE FUNCTION CchlValidFATSubPath LIB "mscomstf.dll" (szPath$) AS INTEGER
+DECLARE FUNCTION FValidFATPath LIB "mscomstf.dll" (szPath$) AS INTEGER
+DECLARE FUNCTION FValidDrive (szDrive$) AS INTEGER
+
+DECLARE FUNCTION FValidInfSect (szSect$) AS INTEGER
+DECLARE FUNCTION FValidIniFile (szFile$) AS INTEGER
+
+'$endif ''DEBUG
+
+
+
+'' Windows system detect
+
+DECLARE FUNCTION GetWindowsMajorVersion AS INTEGER
+DECLARE FUNCTION GetWindowsMinorVersion AS INTEGER
+DECLARE FUNCTION GetWindowsMode AS INTEGER
+DECLARE FUNCTION GetWindowsDir AS STRING
+DECLARE FUNCTION GetWindowsSysDir AS STRING
+DECLARE FUNCTION IsWindowsShared AS INTEGER
+DECLARE FUNCTION GetScreenWidth AS INTEGER
+DECLARE FUNCTION GetScreenHeight AS INTEGER
+
+
+'*************************************************************************
+'***************** Setup Basic Wrapper Definitions *********************
+'*************************************************************************
+FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
+ fFrameInit = 0
+ fInstallInit = 0
+
+ IF hSetup > 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeInit, "InitSetup", szCmdLine$
+'$endif ''DEBUG
+ END IF
+
+ i% = InitFrame(szCmdLine$)
+ fFrameInit = 1
+
+ InitInstall
+ fInstallInit = 1
+
+ InitSetup = i%
+END FUNCTION
+
+
+
+'**************************************************************************
+FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
+ IF hSetup > 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeInit, "InitFrame", szCmdLine$
+'$endif ''DEBUG
+ ELSE
+ i% = InitializeFrame(szCmdLine$)
+ IF i% = -1 THEN
+ END '' NOT an error - Usage (/?) or Command line copy operation
+ ELSEIF i% = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "InitFrame", szCmdLine$
+'$endif ''DEBUG
+ END
+ ELSE
+ InitFrame = i%
+ END IF
+ END IF
+END FUNCTION
+
+
+'**************************************************************************
+SUB SetBitmap(szDll$, Bitmap%) STATIC
+ IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "SetBitmap", szDll$+","+STR$(Bitmap%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'**************************************************************************
+SUB SetAbout(szAbout1$, szAbout2$) STATIC
+ IF FSetAbout(szAbout1$, szAbout2$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "SetAbout", szAbout1$ + "," + szAbout2$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB SetTitle(sz$) STATIC
+ SetWindowText HwndFrame(), sz$
+END SUB
+
+
+'*************************************************************************
+SUB ReadInfFile (szFile$) STATIC
+'$ifdef DEBUG
+ if FValidFATPath(szFile$) = 0 then
+ BadArgErr 1, "ReadInfFile", szFile$
+ end if
+ IF FOpenInf(szFile$, 1, 1) = 0 THEN
+ StfApiErr saeFail, "ReadInfFile", szFile$
+'$else ''!DEBUG
+ IF FOpenInf(szFile$, 1, 0) = 0 THEN
+'$endif ''!DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
+'$ifdef DEBUG
+ if szDll$ = "" then
+ n% = 1
+ elseif szDlgProc$ = "" then
+ n% = 3
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
+ end if
+'$endif ''DEBUG
+
+ IF FDoDialog(HwndFrame(), szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
+'$endif ''DEBUG
+ ERROR STFERR
+ ELSE
+ UIStartDlg = GetSymbolValue("DLGEVENT")
+ END IF
+END FUNCTION
+
+
+'*************************************************************************
+SUB UIPop (n%) STATIC
+ IF FKillNDialogs(n%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "UIPop", STR$(n%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB UIPopAll STATIC
+ IF FKillNDialogs(65535) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "UIPopAll", ""
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ BadArgErr 1, "GetSymbolValue", szSymbol$
+ end if
+'$endif ''DEBUG
+ szValue$ = string$(cbSymValMax,32)
+ Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
+ GetSymbolValue = szValue$
+ IF Length% >= cbSymValMax THEN
+ res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
+ ERROR STFERR
+ END IF
+ IF szSymbol$ = "" THEN
+ ERROR STFERR
+ END IF
+ szValue$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetListLength(szSymbol$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ BadArgErr 1, "GetListLength", szSymbol$
+ end if
+'$endif ''DEBUG
+ GetListLength = UsGetListLength(szSymbol$)
+ IF szSymbol$ = "" THEN
+ ERROR STFERR
+ END IF
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetListItem(szListSymbol$, nItem%) STATIC AS STRING
+'$ifdef DEBUG
+ if szListSymbol$ = "" then
+ BadArgErr 1, "GetListItem", szListSymbol$+", "+STR$(nItem%)
+ end if
+
+ if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
+ BadArgErr 2, "GetListItem", szListSymbol$+", "+STR$(nItem%)
+ end if
+'$endif ''DEBUG
+
+ szListItem$ = string$(cbSymValMax,32)
+ Length% = CbGetListItem(szListSymbol$, nItem%, szListItem$, cbSymValMax)
+ GetListItem = szListItem$
+ IF Length% >= cbSymValMax THEN
+ res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
+ ERROR STFERR
+ END IF
+ IF szListSymbol$ = "" THEN
+ ERROR STFERR
+ END IF
+ if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
+ ERROR STFERR
+ end if
+ szListItem$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+SUB AddListItem(szSymbol$, szItem$) STATIC
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ BadArgErr 1, "AddListItem", szSymbol$+", "+szItem$
+ end if
+'$endif ''DEBUG
+ IF FAddListItem(szSymbol$, szItem$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "AddListItem", szSymbol$+", "+szItem$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB ReplaceListItem(szSymbol$, n%, szItem$) STATIC
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ nArg% = 1
+ elseif (n% <= 0) OR (n% > GetListLength(szSymbol$)) then
+ nArg% = 2
+ else
+ nArg% = 0
+ end if
+ if nArg% > 0 then
+ BadArgErr nArg%, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
+ end if
+'$endif ''DEBUG
+
+ IF FReplaceListItem(szSymbol$, n%, szItem$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'**************************************************************************
+SUB MakeListFromSectionKeys(szSymbol$, szSect$) STATIC
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ n% = 1
+ elseif FValidInfSect(szSect$) = 0 then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "MakeListFromSectionKeys", szSymbol$+", "+szSect$
+ end if
+'$endif ''DEBUG
+
+ IF FSetSymbolToListOfInfKeys(szSymbol$, szSect$, 1) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "MakeListFromSectionKeys", szSymbol$+", "+szSect$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB SetSymbolValue(szSymbol$, szValue$) STATIC
+'$ifdef DEBUG
+ if szSymbol$ = "" then
+ BadArgErr 1, "SetSymbolValue", szSymbol$+", "+szValue$
+ end if
+'$endif ''DEBUG
+ IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "SetSymbolValue", szSymbol$+", "+szValue$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB RemoveSymbol(szSym$) STATIC
+'$ifdef DEBUG
+ if szSym$ = "" then
+ BadArgErr 1, "RemoveSymbol", szSym$
+ end if
+'$endif ''DEBUG
+ IF FRemoveSymbol(szSym$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "RemoveSymbol", szSym$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+FUNCTION ShowWaitCursor STATIC AS INTEGER
+ ShowWaitCursor = HShowWaitCursor
+END FUNCTION
+
+
+'*************************************************************************
+SUB RestoreCursor (hPrev%) STATIC
+ i% = FRestoreCursor(hPrev%)
+ IF i% = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "RestoreCursor", ""
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+FUNCTION SetBeepingMode (mode%) STATIC AS INTEGER
+ SetBeepingMode = FSetBeepingMode(mode%)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION SetSilentMode (mode%) STATIC AS INTEGER
+ SetSilentMode = FSetSilent(mode%)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetSectionKeyDate (szSect$, szKey$) STATIC AS STRING
+'$ifdef DEBUG
+ if FValidInfSect(szSect$) = 0 then
+ n% = 1
+ elseif szKey$ = "" then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "GetSectionKeyDate", szSect$+", "+szKey$
+ end if
+'$endif ''DEBUG
+
+ szBuf$ = string$(128, 32)
+ Length% = CbGetInfSectionKeyField(szSect$, szKey$, 5, szBuf$, 128)
+ IF Length% >= 128 THEN
+ res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
+ ERROR STFERR
+ END IF
+
+ IF Length% = -1 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetSectionKeyDate", szSect$+", "+szKey$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+
+ GetSectionKeyDate = szBuf$
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetSectionKeyFilename (szSect$, szKey$) STATIC AS STRING
+'$ifdef DEBUG
+ if FValidInfSect(szSect$) = 0 then
+ n% = 1
+ elseif szKey$ = "" then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "GetSectionKeyFilename", szSect$+", "+szKey$
+ end if
+'$endif ''DEBUG
+
+ szBuf$ = string$(128, 32)
+ Length% = CbGetInfSectionKeyField(szSect$, szKey$, 1, szBuf$, 128)
+ IF Length% >= 128 THEN
+ res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
+ ERROR STFERR
+ END IF
+
+ IF Length% = -1 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetSectionKeyFilename", szSect$+", "+szKey$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+
+ GetSectionKeyFilename = szBuf$
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetSectionKeySize (szSect$, szKey$) STATIC AS LONG
+'$ifdef DEBUG
+ if FValidInfSect(szSect$) = 0 then
+ n% = 1
+ elseif szKey$ = "" then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "GetSectionKeySize", szSect$+", "+szKey$
+ end if
+'$endif ''DEBUG
+
+ szBuf$ = string$(128, 32)
+ Length% = CbGetInfSectionKeyField(szSect$, szKey$, 15, szBuf$, 128)
+ IF Length% >= 128 THEN
+ res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
+ ERROR STFERR
+ END IF
+
+ IF Length% = -1 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetSectionKeySize", szSect$+", "+szKey$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+
+ GetSectionKeySize = VAL(szBuf$)
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetSectionKeyVersion (szSect$, szKey$) STATIC AS STRING
+'$ifdef DEBUG
+ if FValidInfSect(szSect$) = 0 then
+ n% = 1
+ elseif szKey$ = "" then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "GetSectionKeyVersion", szSect$+", "+szKey$
+ end if
+'$endif ''DEBUG
+
+ szBuf$ = string$(128, 32)
+ Length% = CbGetInfSectionKeyField(szSect$, szKey$, 19, szBuf$, 128)
+ IF Length% >= 128 THEN
+ res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
+ ERROR STFERR
+ END IF
+
+ IF Length% = -1 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetSectionKeyVersion", szSect$+", "+szKey$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+
+ GetSectionKeyVersion = szBuf$
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+SUB MakeListFromSectionDate (szSym$, szSect$) STATIC
+'$ifdef DEBUG
+ if szSym$ = "" then
+ n% = 1
+ elseif FValidInfSect(szSect$) = 0 then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "MakeListFromSectionDate", szSym$+", "+szSect$
+ end if
+'$endif ''DEBUG
+
+ IF FMakeListInfSectionField(szSym$, szSect$, 5) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "MakeListFromSectionDate", szSym$+", "+szSect$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB MakeListFromSectionFilename (szSym$, szSect$) STATIC
+'$ifdef DEBUG
+ if szSym$ = "" then
+ n% = 1
+ elseif FValidInfSect(szSect$) = 0 then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "MakeListFromSectionFilename", szSym$+", "+szSect$
+ end if
+'$endif ''DEBUG
+
+ IF FMakeListInfSectionField(szSym$, szSect$, 1) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "MakeListFromSectionFilename", szSym$+", "+szSect$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB MakeListFromSectionSize (szSym$, szSect$) STATIC
+'$ifdef DEBUG
+ if szSym$ = "" then
+ n% = 1
+ elseif FValidInfSect(szSect$) = 0 then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "MakeListFromSectionSize", szSym$+", "+szSect$
+ end if
+'$endif ''DEBUG
+
+ IF FMakeListInfSectionField(szSym$, szSect$, 15) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "MakeListFromSectionSize", szSym$+", "+szSect$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB MakeListFromSectionVersion (szSym$, szSect$) STATIC
+'$ifdef DEBUG
+ if szSym$ = "" then
+ n% = 1
+ elseif FValidInfSect(szSect$) = 0 then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "MakeListFromSectionVersion", szSym$+", "+szSect$
+ end if
+'$endif ''DEBUG
+
+ IF FMakeListInfSectionField(szSym$, szSect$, 19) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "MakeListFromSectionVersion", szSym$+", "+szSect$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB InitInstall STATIC
+ IF hSetup > 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeInit, "InitInstall", ""
+'$endif ''DEBUG
+ ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "InitInstall", ""
+'$endif ''DEBUG
+ END
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB CreateDir (szDir$, cmo%) STATIC
+'$ifdef DEBUG
+ if FValidFATDir(szDir$) = 0 then
+ BadArgErr 1, "CreateDir", szDir$+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+ IF FCreateDir(szDir$, cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "CreateDir", szDir$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB RemoveDir (szDir$, cmo%) STATIC
+'$ifdef DEBUG
+ if FValidFATDir(szDir$) = 0 then
+ BadArgErr 1, "RemoveDir", szDir$+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+ IF FRemoveDir(szDir$, cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "RemoveDir", szDir$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+
+'*************************************************************************
+SUB RemoveIniSection (szFile$, szSect$, cmo%) STATIC
+'$ifdef DEBUG
+ if FValidIniFile(szFile$) = 0 then
+ n% = 1
+ elseif FValidInfSect(szSect$) = 0 then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+
+ IF FRemoveIniSection(szFile$, szSect$, cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
+'$ifdef DEBUG
+ if FValidIniFile(szFile$) = 0 then
+ n% = 1
+ elseif FValidInfSect(szSect$) = 0 then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+
+ IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%) STATIC
+'$ifdef DEBUG
+ if FValidIniFile(szFile$) = 0 then
+ n% = 1
+ elseif FValidInfSect(szSect$) = 0 then
+ n% = 2
+ elseif szKey$ = "" then
+ n% = 3
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+
+ IF FRemoveIniKey(szFile$, szSect$, szKey$, cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
+'$ifdef DEBUG
+ if FValidFATPath(szFile$) = 0 then
+ n% = 1
+ elseif FValidInfSect(szSect$) = 0 then
+ n% = 2
+ elseif szKey$ = "" then
+ n% = 3
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+
+ IF FCreateSysIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
+'$ifdef DEBUG
+ if szGroup$ = "" or len(szGroup$) > 24 then
+ BadArgErr 1, "CreateProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+ IF FCreateProgManGroup(szGroup$, szPath$, cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "CreateProgmanGroup", szGroup$+", "+szPath$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
+'$ifdef DEBUG
+ if szGroup$ = "" or len(szGroup$) > 24 then
+ BadArgErr 1, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+ IF FShowProgManGroup(szGroup$, STR$(Cmd%), cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) STATIC
+'$ifdef DEBUG
+ if FValidInfSect(szSect$) = 0 then
+ n% = 1
+ elseif szKey$ = "" then
+ n% = 2
+ elseif FValidFATDir(szDst$) = 0 then
+ n% = 3
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "StampResource", szSect$+", "+szKey$+", "+szDst$+", "+STR$(wResType%)+", "+STR$(wResId%)+", "+szData$+", "+STR$(cbData%)
+ end if
+'$endif ''DEBUG
+
+ IF FStampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "StampResource", szSect$+", "+szKey$+", "+szDst$+", "+STR$(wResType%)+", "+STR$(wResId%)+", "+szData$+", "+STR$(cbData%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB DumpCopyList (szFile$) STATIC
+'$ifdef DEBUG
+ if szFile$ = "" then
+ BadArgErr 1, "DumpCopyList", szFile$
+ end if
+'$endif ''DEBUG
+ IF FDumpCopyListToFile (szFile$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "DumpCopyList", szFile$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB ClearCopyList STATIC
+ ResetCopyList
+END SUB
+
+
+'*************************************************************************
+FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) STATIC AS LONG
+ lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
+ IF lNeed& < 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetCopyListCost", szExtraList$+", "+szCostList$+", "+szNeedList$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+ GetCopyListCost = lNeed&
+END FUNCTION
+
+
+'*************************************************************************
+SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
+ szItemNew$ = szItem$
+ IF szOther$ <> "" THEN
+ szItemNew$ = szItem$ + "," + szOther$
+ END IF
+'$ifdef DEBUG
+ if szGroup$ = "" or len(szGroup$) > 24 then
+ BadArgErr 1, "CreateProgmanItem", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+
+ IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "CreateProgmanItem", szGroup$+", "+szItem$+", "+szCmd$+", "+szOther$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+ szItemNew$ = ""
+END SUB
+
+
+'*************************************************************************
+SUB AddDos5Help (szProgName$, szProgHelp$, cmo%) STATIC
+'$ifdef DEBUG
+ if szProgName$ = "" OR MID$(szProgName$, 1, 1) = "@" OR LEN(szProgName$) > 8 then
+ n% = 1
+ elseif INSTR(szProgName$, " ") <> 0 OR INSTR(szProgName$, CHR$(9)) <> 0 then
+ n% = 1
+ elseif szProgHelp$ = "" then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+ IF FAddDos5Help (szProgName$, szProgHelp$, cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB CopyFilesInCopyList STATIC
+ grc% = GrcCopyFilesInCopyList (HinstFrame())
+
+ IF grc% = grcUserQuit THEN
+ ERROR STFQUIT
+ ELSEIF grc% > 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "CopyFilesInCopyList", ""
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) STATIC
+'$ifdef DEBUG
+ if FValidFATPath(szFullPathSrc$) = 0 then
+ n% = 1
+ elseif FValidFATPath(szFullPathDst$) = 0 then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
+ end if
+'$endif ''DEBUG
+
+ IF FCopyOneFile(szFullPathSrc$, szFullPathDst$, (cmo OR cmoCopy), fAppend%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+
+'*************************************************************************
+SUB RemoveFile (szFullPathSrc$, cmo%) STATIC
+'$ifdef DEBUG
+ if FValidFATPath(szFullPathSrc$) = 0 then
+ BadArgErr 1, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+ IF YnrcRemoveFile(szFullPathSrc$, cmo%) = ynrcNo THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB BackupFile (szFullPath$, szBackup$) STATIC
+'$ifdef DEBUG
+ if FValidFATPath(szFullPath$) = 0 then
+ n% = 1
+ elseif szBackup$ = "" then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "BackupFile", szFullPath$+", "+szBackup$
+ end if
+'$endif ''DEBUG
+
+ IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "BackupFile", szFullPath$+", "+szBackup$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB RenameFile (szFullPath$, szBackup$) STATIC
+'$ifdef DEBUG
+ if FValidFATPath(szFullPath$) = 0 then
+ n% = 1
+ elseif szBackup$ = "" then
+ n% = 2
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "RenameFile", szFullPath$+", "+szBackup$
+ end if
+'$endif ''DEBUG
+
+ IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "RenameFile", szFullPath$+", "+szBackup$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
+'$ifdef DEBUG
+ if FValidInfSect(szSect$) = 0 then
+ n% = 1
+ elseif FValidFATDir(szSrc$) = 0 then
+ n% = 2
+ elseif FValidFATDir(szDest$) = 0 then
+ n% = 3
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$
+ end if
+'$endif ''DEBUG
+
+ IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "AddSectionFilesToCopyList", szSect$+", "+szSrc$+", "+szDest$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
+'$ifdef DEBUG
+ if FValidInfSect(szSect$) = 0 then
+ n% = 1
+ elseif szKey$ = "" then
+ n% = 2
+ elseif FValidFATDir(szSrc$) = 0 then
+ n% = 3
+ elseif FValidFATDir(szDest$) = 0 then
+ n% = 4
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
+ end if
+'$endif ''DEBUG
+
+ IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "AddSectionKeyFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
+'$ifdef DEBUG
+ if FValidInfSect(szSect$) = 0 then
+ n% = 1
+ elseif szKey$ = "" then
+ n% = 2
+ elseif FValidFATDir(szSrc$) = 0 then
+ n% = 3
+ elseif FValidFATPath(szDest$) = 0 then
+ n% = 4
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
+ end if
+'$endif ''DEBUG
+
+ IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
+'$ifdef DEBUG
+ if szDll$ = "" then
+ n% = 1
+ elseif idDlg% = 0 then
+ n% = 2
+ elseif szProc$ = "" then
+ n% = 3
+ elseif lTicks& <= 0 then
+ n% = 4
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
+ end if
+'$endif ''DEBUG
+
+ IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB AddBlankToBillboardList (lTicks&) STATIC
+'$ifdef DEBUG
+ if lTicks& <= 0 then
+ BadArgErr 1, "AddBlankToBillboardList", STR$(lTicks&)
+ end if
+'$endif ''DEBUG
+ IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "AddBlankToBillboardList", STR$(lTicks&)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB ClearBillboardList STATIC
+ IF FClearBillboardList = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "ClearBillboardList", ""
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB OpenLogFile (szFile$, fAppend%) STATIC
+'$ifdef DEBUG
+ if FValidFATPath(szFile$) = 0 then
+ BadArgErr 1, "OpenLogFile", szFile$+", "+STR$(fAppend%)
+ end if
+'$endif ''DEBUG
+ IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "OpenLogFile", szFile$+", "+STR$(fAppend%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB CloseLogFile STATIC
+ IF FCloseLogFile() = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "CloseLogFile", ""
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+SUB WriteToLogFile (szStr$) STATIC
+ IF FWriteToLogFile(szStr$, 1) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "WriteToLogFile", szStr$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+''' -1 in either parameter will mean 'center in frame client area'
+'*************************************************************************
+SUB SetCopyGaugePosition (x%, y%) STATIC
+ ProSetPos x%, y%
+END SUB
+
+
+'*************************************************************************
+FUNCTION FindFileUsingFileOpen (szFile$) STATIC AS STRING
+ szBuf$ = STRING$(512, 32)
+
+ wRet% = WFindFileUsingFileOpen(szFile$, szBuf$, len(szBuf$))
+ IF wRet% = 0 THEN
+ FindFileUsingFileOpen = szBuf$
+ ELSEIF wRet% = 1 THEN
+ FindFileUsingFileOpen = ""
+ ELSE
+'$ifdef DEBUG
+ StfApiErr saeFail, "FindFileUsingFileOpen", szFile$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
+ IsDirWritable = FIsDirWritable(szDir$)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION IsFileWritable (szFile$) STATIC AS INTEGER
+'$ifdef DEBUG
+ if FValidFATDir(szFile$) = 0 then
+ BadArgErr 1, "IsFileWritable", szFile$
+ end if
+'$endif ''DEBUG
+ IsFileWritable = FIsFileWritable(szFile$)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetNthFieldFromIniString (szLine$, iField%) STATIC AS STRING
+ IF iField% < 1 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetNthFieldFromIniString", szLine$+", "+STR$(iField%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+ szStart$ = szLine$
+ IF iField% <> 1 THEN
+ FOR i% = 2 TO iField% STEP 1
+ iNew% = INSTR(szStart$, ",")
+ IF iNew% = 0 THEN
+ GetNthFieldFromIniString = ""
+ GOTO _GNFFIS_END
+ END IF
+ szStart$ = MID$(szStart$, (iNew% + 1))
+ NEXT
+ END IF
+
+ iNew% = INSTR(szStart$, ",")
+ IF iNew% <> 0 THEN
+ szStart$ = MID$(szStart$, 1, (iNew% - 1))
+ END IF
+
+ GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))
+
+_GNFFIS_END:
+
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
+ GetWindowsMajorVersion = GetVersion() MOD 256
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
+ GetWindowsMinorVersion = GetVersion() / 256
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetWindowsMode STATIC AS INTEGER
+ GetWindowsMode = 0
+ longTmp& = GetWinFlags()
+ IF longTmp& AND WF_STANDARD THEN
+ GetWindowsMode = 1
+ ELSEIF longTmp& AND WF_ENHANCED THEN
+ GetWindowsMode = 2
+ END IF
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetWindowsDir STATIC AS STRING
+ szBuf$ = string$(256, 32)
+ cbBuf% = GetWindowsDirectory(szBuf$, 256)
+
+ IF cbBuf% = 0 THEN
+ GetWindowsDir = ""
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetWindowsDir", ""
+'$endif ''DEBUG
+ ERROR STFERR
+ ELSE
+ IF cbBuf% > 255 THEN
+ res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
+ ERROR STFERR
+ END IF
+ szBuf$ = RTRIM$(szBuf$)
+ IF MID$(szBuf$, 1, 1) = "\" THEN
+ 'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
+ szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
+ ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
+ szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
+ END IF
+ IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
+ szBuf$ = szBuf$ + "\"
+ END IF
+ GetWindowsDir = szBuf$
+ END IF
+
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetWindowsSysDir STATIC AS STRING
+ szBuf$ = string$(256, 32)
+ cbBuf% = GetSystemDirectory(szBuf$, 256)
+
+ IF cbBuf% = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "GetWindowsSysDir", ""
+'$endif ''DEBUG
+ ERROR STFERR
+ ELSE
+ IF cbBuf% > 255 THEN
+ res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
+ ERROR STFERR
+ END IF
+ szBuf$ = RTRIM$(szBuf$)
+ IF MID$(szBuf$, 1, 1) = "\" THEN
+ szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
+ ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
+ szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
+ END IF
+ IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
+ szBuf$ = szBuf$ + "\"
+ END IF
+ GetWindowsSysDir = szBuf$
+ END IF
+
+ szBuf$ = ""
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION IsWindowsShared STATIC AS INTEGER
+ szWin$ = UCASE$(GetWindowsDir())
+ szSys$ = UCASE$(GetWindowsSysDir())
+
+ IF len(szWin$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "IsWindowsShared", ""
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+
+ IF len(szSys$) <= len(szWin$) THEN
+ IsWindowsShared = 1
+ ELSE
+ szSys$ = MID$(szSys$, 1, len(szWin$))
+ IF szWin$ = szSys$ THEN
+ IsWindowsShared = 0
+ ELSE
+ IsWindowsShared = 1
+ END IF
+ END IF
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetScreenWidth STATIC AS INTEGER
+ GetScreenWidth = GetSystemMetrics(SM_CXSCREEN)
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION GetScreenHeight STATIC AS INTEGER
+ GetScreenHeight = GetSystemMetrics(SM_CYSCREEN)
+END FUNCTION
+
+
+'*************************************************************************
+SUB SetRestartDir (szDir$) STATIC
+'$ifdef DEBUG
+ if FValidFATDir(szDir$) = 0 then
+ BadArgErr 1, "SetRestartDir", szDir$
+ end if
+'$endif ''DEBUG
+ IF FSetRestartDir(szDir$) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "SetRestartDir", szDir$
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+'*************************************************************************
+FUNCTION RestartListEmpty STATIC AS INTEGER
+ IF FRestartListEmpty() = 0 THEN
+ RestartListEmpty = 0
+ ELSE
+ RestartListEmpty = 1
+ END IF
+END FUNCTION
+
+
+'*************************************************************************
+FUNCTION ExitExecRestart STATIC AS INTEGER
+ ExitExecRestart = FExitExecRestart
+END FUNCTION
+
+
+'*************************************************************************
+SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC
+
+'$ifdef DEBUG
+ if (FValidFATPath(szSrc$) = 0) AND (szSrc$ <> "") then
+ n% = 1
+ elseif FValidFATPath(szDst$) = 0 then
+ n% = 2
+ elseif FValidFATDir(szDir$) = 0 then
+ n% = 3
+ else
+ n% = 0
+ end if
+ if n% > 0 then
+ BadArgErr n%, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
+ end if
+'$endif ''DEBUG
+
+ IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN
+'$ifdef DEBUG
+ StfApiErr saeFail, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
+'$endif ''DEBUG
+ ERROR STFERR
+ END IF
+END SUB
+
+
+
+'**************************************************************************
+'*************************** Error Handlers *****************************
+'**************************************************************************
+
+
+'$ifdef DEBUG
+'**************************************************************************
+SUB StfApiErr (nMsg%, szApi$, szArgs$) STATIC ''DEBUG only
+ select case nMsg%
+ case saeFail
+ lpText$ = "Failed"
+ case saeInit
+ lpText$ = "Already Initialized"
+ case saeNYI
+ lpText$ = "NYI"
+ case else
+ lpText$ = "Bad Arg "+LTRIM$(STR$(nMsg% - saeArg))
+ end select
+
+ lpText$ = lpText$ + ": "+ szApi$
+ if szArgs$ <> "" then
+ lpText$ = lpText + " (" + szArgs$ + ")"
+ end if
+ lpCaption$ = "MS-Setup Toolkit API Error"
+ res% = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
+ print lpText$
+ lpText$ = ""
+ lpCaption$ = ""
+END SUB
+
+'**************************************************************************
+SUB BadArgErr (nArg%, szApi$, szArgs$) STATIC ''DEBUG only
+ StfApiErr nArg%+saeArg, szApi$, szArgs$
+ ERROR STFERR
+END SUB
+
+
+'** REVIEW: Move this function into common lib (we'll need it there too)
+'**************************************************************************
+FUNCTION FValidInfSect (szSect$) STATIC AS INTEGER
+ if (szSect$ = "") OR (INSTR(1,szSect$,"]") <> 0) then
+ FValidInfSect = 0
+ else
+ FValidInfSect = 1
+ end if
+END FUNCTION
+
+
+'** REVIEW: Move this function into common lib (we'll need it there too)
+'**************************************************************************
+FUNCTION FValidIniFile (szFile$) STATIC AS INTEGER
+ if (FValidFATPath(szFile$) = 0) AND (UCASE$(szFile$) <> "WIN.INI") then
+ FValidIniFile = 0
+ else
+ FValidIniFile = 1
+ end if
+END FUNCTION
+
+'**************************************************************************
+FUNCTION FValidDrive (szDrive$) STATIC AS INTEGER
+
+ if szDrive$ = "" then
+ FValidDrive = 0
+ elseif INSTR(1,szDrive$,"\\") = 1 then ' UNC path
+ FValidDrive = 1
+ elseif ASC(UCASE$(szDrive$)) - ASC("A") < 0 then
+ FValidDrive = 0
+ elseif ASC(UCASE$(szDrive$)) - ASC("A") > 25 then
+ FValidDrive = 0
+ elseif LEN(szDrive$) = 1 then
+ FValidDrive = 1
+ elseif INSTR(2,szDrive$,":\") = 2 then
+ FValidDrive = 1
+ elseif INSTR(1,szDrive$,":") = 2 then
+ FValidDrive = 1
+ else
+ FValidDrive = 0
+ end if
+END FUNCTION
+
+'$endif ''DEBUG
+
+
+TRAP CleanupTrap From "MSSHLSTF.DLL"
+
+End Trap
+
+hSetup = InitSetup(COMMAND$)
+
+ON ERROR GOTO QUIT
+
diff --git a/public/sdk/rpc16/sdk/setuprun.lst b/public/sdk/rpc16/sdk/setuprun.lst
new file mode 100644
index 000000000..a336c1c00
--- /dev/null
+++ b/public/sdk/rpc16/sdk/setuprun.lst
@@ -0,0 +1,21 @@
+[Params]
+ WndTitle = Microsoft RPC Setup
+ WndMess = Initializing Setup...
+ TmpDirSize = 500
+ TmpDirName = ~msstfqf.t
+ CmdLine = _mstest RPCRUN.mst /C "/S %s %s"
+ DrvModName = DSHELL
+
+[Files]
+ RPCSDK.mst = RPCSDK.mst
+ RPCRUN.mst = RPCRUN.mst
+ RPCSDK.in_ = RPCSDK.inf
+ setupapi.in_ = setupapi.inc
+ msdetect.in_ = msdetect.inc
+ mscomstf.dl_ = mscomstf.dll
+ msinsstf.dl_ = msinsstf.dll
+ msuilstf.dl_ = msuilstf.dll
+ msshlstf.dl_ = msshlstf.dll
+ mscuistf.dl_ = mscuistf.dll
+ msdetstf.dl_ = msdetstf.dll
+ _mstest.ex_ = _mstest.exe
diff --git a/public/sdk/rpc16/sdk/uuidgen.ex_ b/public/sdk/rpc16/sdk/uuidgen.ex_
new file mode 100644
index 000000000..1f12aa615
--- /dev/null
+++ b/public/sdk/rpc16/sdk/uuidgen.ex_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/wrpc.h_ b/public/sdk/rpc16/sdk/wrpc.h_
new file mode 100644
index 000000000..f3f998593
--- /dev/null
+++ b/public/sdk/rpc16/sdk/wrpc.h_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/wrpc.li_ b/public/sdk/rpc16/sdk/wrpc.li_
new file mode 100644
index 000000000..8ed4d9352
--- /dev/null
+++ b/public/sdk/rpc16/sdk/wrpc.li_
Binary files differ
diff --git a/public/sdk/rpc16/sdk/wrpcndr.li_ b/public/sdk/rpc16/sdk/wrpcndr.li_
new file mode 100644
index 000000000..c3c250420
--- /dev/null
+++ b/public/sdk/rpc16/sdk/wrpcndr.li_
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/rpc16c1.map b/public/sdk/rpc16/win/dll/rpc16c1.map
new file mode 100644
index 000000000..865bf3044
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c1.map
@@ -0,0 +1,92 @@
+
+ RPC16C1
+
+ Start Length Name Class
+ 0001:0000 00000H NPLTCLNT_TEXT CODE
+ 0001:0000 00000H LTSTART_TEXT CODE
+ 0001:0000 000A9H _TEXT CODE
+ 0001:00B0 006F4H COMDAT_SEG1 CODE
+ 0002:0000 0003FH _DATA DATA
+ 0002:0040 00000H CONST CONST
+ 0002:0040 00000H _BSS BSS
+ 0002:0040 00008H c_common BSS
+
+ Origin Group
+ 0002:0 DGROUP
+
+ Address Export Alias
+
+ 0001:01F6 CLIENTCLOSE CLIENTCLOSE
+ 0001:00B0 CLIENTOPEN CLIENTOPEN
+ 0001:0252 CLIENTREAD CLIENTREAD
+ 0001:04CE CLIENTTOWERCONSTRUCT CLIENTTOWERCONSTRUCT
+ 0001:0646 CLIENTTOWEREXPLODE CLIENTTOWEREXPLODE
+ 0001:0212 CLIENTWRITE CLIENTWRITE
+ 0001:0736 TRANSPORTLOAD TRANSPORTLOAD
+ 0001:0014 WEP WEP
+
+ Address Publics by Name
+
+ 0002:0036 ??_C@_08DNBJ@ncacn_np?$AA@
+ 0001:03B2 ASYNCREADWRITE
+ 0001:01F6 CLIENTCLOSE
+ 0001:00B0 CLIENTOPEN
+ 0001:0252 CLIENTREAD
+ 0001:04CE CLIENTTOWERCONSTRUCT
+ 0001:0646 CLIENTTOWEREXPLODE
+ 0001:0212 CLIENTWRITE
+ 0000:0000 Imp DOSREADASYNCNMPIPE (NETAPI.542)
+ 0000:0000 Imp DOSSETNMPHANDSTATE (NETAPI.533)
+ 0000:0000 Imp DOSWAITNMPIPE (NETAPI.534)
+ 0000:0000 Imp DOSWRITEASYNCNMPIPE (NETAPI.543)
+ 0001:04C0 DOS_CLOSE
+ 0001:04A4 DOS_OPEN
+ 0000:0000 Imp GETWINFLAGS (KERNEL.132)
+ 0001:0000 LIBENTRY
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp LSTRLEN (KERNEL.90)
+ 0000:0000 Imp NETWKSTAGETINFO (NETAPI.84)
+ 0001:0736 TRANSPORTLOAD
+ 0001:0014 WEP
+ 0002:0040 _AsyncCallComplete
+ 0002:0032 _DLLTERMINATION
+ 0002:0030 _HINSTANCEDLL
+ 0002:0044 _RpcRuntimeInfo
+ 0002:0000 _TransInfo
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0001:0032 __fmemcpy
+ 0001:0090 __fstrlen
+
+ Address Publics by Value
+
+ 0000:0000 Imp NETWKSTAGETINFO (NETAPI.84)
+ 0000:0000 Imp GETWINFLAGS (KERNEL.132)
+ 0000:0000 Imp DOSWAITNMPIPE (NETAPI.534)
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Imp DOSREADASYNCNMPIPE (NETAPI.542)
+ 0000:0000 Imp DOSSETNMPHANDSTATE (NETAPI.533)
+ 0000:0000 Imp DOSWRITEASYNCNMPIPE (NETAPI.543)
+ 0000:0000 Imp LSTRLEN (KERNEL.90)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0001:0000 LIBENTRY
+ 0001:0014 WEP
+ 0001:0032 __fmemcpy
+ 0001:0090 __fstrlen
+ 0001:00B0 CLIENTOPEN
+ 0001:01F6 CLIENTCLOSE
+ 0001:0212 CLIENTWRITE
+ 0001:0252 CLIENTREAD
+ 0001:03B2 ASYNCREADWRITE
+ 0001:04A4 DOS_OPEN
+ 0001:04C0 DOS_CLOSE
+ 0001:04CE CLIENTTOWERCONSTRUCT
+ 0001:0646 CLIENTTOWEREXPLODE
+ 0001:0736 TRANSPORTLOAD
+ 0002:0000 _TransInfo
+ 0002:0030 _HINSTANCEDLL
+ 0002:0032 _DLLTERMINATION
+ 0002:0036 ??_C@_08DNBJ@ncacn_np?$AA@
+ 0002:0040 _AsyncCallComplete
+ 0002:0044 _RpcRuntimeInfo
+
+Program entry point at 0001:0000
diff --git a/public/sdk/rpc16/win/dll/rpc16c1.sym b/public/sdk/rpc16/win/dll/rpc16c1.sym
new file mode 100644
index 000000000..085f46b17
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c1.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/rpc16c3.map b/public/sdk/rpc16/win/dll/rpc16c3.map
new file mode 100644
index 000000000..afcd128ed
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c3.map
@@ -0,0 +1,443 @@
+
+ RPC16C3
+
+ Start Length Name Class
+ 0001:0000 00000H TCLTCLNT_TEXT CODE
+ 0001:0000 00000H LTSTART_TEXT CODE
+ 0001:0000 0102CH _TEXT CODE
+ 0001:1030 00B72H COMDAT_SEG1 CODE
+ 0002:0000 00010H NULL BEGDATA
+ 0002:0010 000FAH _DATA DATA
+ 0002:010A 0000EH CDATA DATA
+ 0002:0118 00000H XIFB DATA
+ 0002:0118 00000H XIF DATA
+ 0002:0118 00000H XIFE DATA
+ 0002:0118 00000H XIB DATA
+ 0002:0118 00000H XI DATA
+ 0002:0118 00000H XIE DATA
+ 0002:0118 00000H XPB DATA
+ 0002:0118 00000H XP DATA
+ 0002:0118 00000H XPE DATA
+ 0002:0118 00000H XCB DATA
+ 0002:0118 00000H XC DATA
+ 0002:0118 00000H XCE DATA
+ 0002:0118 00000H XCFB DATA
+ 0002:0118 00000H XCFCRT DATA
+ 0002:0118 00000H XCF DATA
+ 0002:0118 00000H XCFE DATA
+ 0002:0118 00000H XIFCB DATA
+ 0002:0118 00000H XIFU DATA
+ 0002:0118 00000H XIFL DATA
+ 0002:0118 00000H XIFM DATA
+ 0002:0118 00000H XIFCE DATA
+ 0002:0118 00000H DBDATA DATA
+ 0002:0118 00000H CONST CONST
+ 0002:0118 00008H HDR MSG
+ 0002:0120 000D4H MSG MSG
+ 0002:01F4 00002H PAD MSG
+ 0002:01F6 00001H EPAD MSG
+ 0002:01F8 00012H _BSS BSS
+ 0002:020A 00000H XOB BSS
+ 0002:020A 00000H XO BSS
+ 0002:020A 00000H XOE BSS
+ 0002:020A 00000H XOFB BSS
+ 0002:020A 00000H XOF BSS
+ 0002:020A 00000H XOFE BSS
+ 0002:0210 00008H c_common BSS
+
+ Origin Group
+ 0002:0 DGROUP
+
+ Address Export Alias
+
+ 0001:1362 CLIENTCLOSE CLIENTCLOSE
+ 0001:10FA CLIENTOPEN CLIENTOPEN
+ 0001:177E CLIENTREAD CLIENTREAD
+ 0001:18C6 CLIENTTOWERCONSTRUCT CLIENTTOWERCONSTRUCT
+ 0001:19CC CLIENTTOWEREXPLODE CLIENTTOWEREXPLODE
+ 0001:139E CLIENTWRITE CLIENTWRITE
+ 0001:1AAA TRANSPORTLOAD TRANSPORTLOAD
+ 0001:0024 WEP WEP
+ 0001:0D74 ___ExportedStub ___ExportedStub
+
+ Address Publics by Name
+
+ 0001:1B88 ??_C@_03EOPG@135?$AA@
+ 0001:1B9A ??_C@_07EHGE@WINSOCK?$AA@
+ 0001:1B66 ??_C@_08MPOI@TCLTCLNT?$AA@
+ 0001:1B50 ??_C@_09FCOK@127?40?40?41?$AA@
+ 0001:1B5A ??_C@_0L@EBCH@RPC?5TCP?1IP?$AA@
+ 0001:1B7C ??_C@_0L@JIBM@0123456789?$AA@
+ 0001:1B70 ??_C@_0M@OCLK@?40123456789?$AA@
+ 0001:1B8C ??_C@_0N@JDIH@ncacn_ip_tcp?$AA@
+ 0001:14FE ASYNCEVENTPROC
+ 0001:1362 CLIENTCLOSE
+ 0001:10FA CLIENTOPEN
+ 0001:177E CLIENTREAD
+ 0001:18C6 CLIENTTOWERCONSTRUCT
+ 0001:19CC CLIENTTOWEREXPLODE
+ 0001:139E CLIENTWRITE
+ 0000:0000 Imp CLOSESOCKET (WINSOCK.3)
+ 0000:0000 Imp CONNECT (WINSOCK.4)
+ 0000:0000 Imp CREATEWINDOW (USER.41)
+ 0000:0000 Imp DEFWINDOWPROC (USER.107)
+ 0000:0000 Imp DESTROYWINDOW (USER.53)
+ 0000:0000 Imp DISPATCHMESSAGE (USER.114)
+ 0000:0000 Imp DOS3CALL (KERNEL.102)
+ 0000:0000 Imp FATALAPPEXIT (KERNEL.137)
+ 0000:0000 Imp FATALEXIT (KERNEL.1)
+ 0000:0000 Imp GETCURRENTTIME (USER.15)
+ 0000:0000 Imp GETDOSENVIRONMENT (KERNEL.131)
+ 0000:0000 Imp GETMODULEHANDLE (KERNEL.47)
+ 0000:0000 Imp GETMODULEUSAGE (KERNEL.48)
+ 0000:0000 Imp GETSTOCKOBJECT (GDI.87)
+ 0000:0000 Imp GETVERSION (KERNEL.3)
+ 0000:0000 Imp GETWINDOWLONG (USER.135)
+ 0000:0000 Imp GLOBALALLOC (KERNEL.15)
+ 0000:0000 Imp GLOBALFREE (KERNEL.17)
+ 0000:0000 Imp GLOBALLOCK (KERNEL.18)
+ 0000:0000 Imp GLOBALREALLOC (KERNEL.16)
+ 0000:0000 Imp GLOBALSIZE (KERNEL.20)
+ 0000:0000 Imp GLOBALUNLOCK (KERNEL.19)
+ 0000:0000 Imp HTONS (WINSOCK.9)
+ 0000:0000 Imp INET_ADDR (WINSOCK.10)
+ 0000:0000 Imp INITTASK (KERNEL.91)
+ 0000:0000 Imp IOCTLSOCKET (WINSOCK.12)
+ 0001:0010 LIBENTRY
+ 0000:0000 Imp LOADCURSOR (USER.173)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp LOCKSEGMENT (KERNEL.23)
+ 0001:1B3A MYWEP
+ 0000:0000 Imp PEEKMESSAGE (USER.109)
+ 0000:0000 Imp RECV (WINSOCK.16)
+ 0000:0000 Imp REGISTERCLASS (USER.57)
+ 0002:0004 rsrvptrs
+ 0000:0000 Imp SELECT (WINSOCK.18)
+ 0000:0000 Imp SEND (WINSOCK.19)
+ 0000:0000 Imp SETSOCKOPT (WINSOCK.21)
+ 0000:0000 Imp SETWINDOWLONG (USER.136)
+ 0000:0000 Imp SHOWWINDOW (USER.42)
+ 0000:0000 Imp SOCKET (WINSOCK.23)
+ 0000:0000 Imp TRANSLATEMESSAGE (USER.113)
+ 0001:1AAA TRANSPORTLOAD
+ 0000:0000 Imp UPDATEWINDOW (USER.124)
+ 0001:0024 WEP
+ 0000:0000 Imp WSAASYNCGETHOSTBYNAME (WINSOCK.103)
+ 0000:0000 Imp WSAASYNCSELECT (WINSOCK.101)
+ 0000:0000 Imp WSACANCELASYNCREQUEST (WINSOCK.108)
+ 0000:0000 Imp WSACLEANUP (WINSOCK.116)
+ 0000:0000 Imp WSAGETLASTERROR (WINSOCK.111)
+ 0000:0000 Imp WSASTARTUP (WINSOCK.115)
+ 0002:0055 _aseghi
+ 0002:0053 _aseglo
+ 0002:0210 _AsyncCallComplete
+ 0001:005C _atoi
+ 0001:0A50 _atol
+ 0001:1560 _BlockForRecv
+ 0002:0042 _DllTermination
+ 0001:1030 _DoAsyncConnect
+ 0001:1084 _DoAsyncGetHostByName
+ 0002:01F8 _edata
+ 0002:0218 _end
+ 0002:006A _errno
+ 0001:0A54 _getenv
+ 0002:0040 _hInstanceDLL
+ 0001:1660 _LocalBlock
+ 0001:15DA _LocalBlockingFunc
+ 0001:016C _memcpy
+ 0001:16BE _RecvWithYield
+ 0002:0214 _RpcRuntimeInfo
+ 0002:0046 _STKHQQ
+ 0001:0110 _strcspn
+ 0001:0042 _strlen
+ 0001:0D88 _strncmp
+ 0001:0A26 _strncpy
+ 0001:007C _time
+ 0002:0010 _TransInfo
+ 0000:9876 Abs __acrtmsg
+ 0000:9876 Abs __acrtused
+ 0000:D6D6 Abs __aDBdoswp
+ 0002:00A0 __adbgmsg
+ 0000:D6D6 Abs __aDBused
+ 0001:0960 __aFlmul
+ 0001:0AF0 __aFlrem
+ 0001:0960 __aFulmul
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0002:005C __aintdiv
+ 0002:00F6 __amblksiz
+ 0001:0C1A __amsg_exit
+ 0001:026A __astart
+ 0001:0422 __catox
+ 0001:0550 __cexit
+ 0002:009D __child
+ 0001:0508 __cinit
+ 0001:0C10 __cintDIV
+ 0001:0478 __cltoasub
+ 0002:0075 __cpumode
+ 0001:05AF __ctermsub
+ 0001:0485 __cxtoa
+ 0001:0561 __c_exit
+ 0002:00E4 __daylight
+ 0002:00C6 __days
+ 0002:0052 __dllinit
+ 0002:0076 __doserrno
+ 0001:0324 __dostotime_t
+ 0002:01F8 __edata
+ 0002:0218 __end
+ 0002:0094 __environ
+ 0002:009F __exitflag
+ 0002:0060 __fac
+ 0001:0DC4 __ffree
+ 0001:05EC __FF_MSGBANNER
+ 0002:00FC __fheap
+ 0001:0D53 __findlast
+ 0001:0DE5 __fmalloc
+ 0002:010C __fpinit
+ 0000:9876 Abs __fptaskdata
+ 0001:09E0 __fptrap
+ 0001:0F0E __freefarheap
+ 0001:0F98 __freelist
+ 0001:01CA __fstrcspn
+ 0001:0BF6 __fstrlen
+ 0001:0B90 __fstrncmp
+ 0001:0BCC __fstrncpy
+ 0001:0A14 __GetDGROUP
+ 0001:0C5C __growseg
+ 0002:0048 __hModule
+ 0001:0CED __incseg
+ 0001:0FC2 __initseg
+ 0001:088C __isindst
+ 0001:0060 __itoa
+ 0001:0FF6 __linkseg
+ 0002:00AC __lpdays
+ 0002:004E __lpszCmdLine
+ 0001:09E6 __myalloc
+ 0001:0A24 __nearstub
+ 0001:0E8C __newseg
+ 0002:0078 __nfile
+ 0001:0992 __NMSG_TEXT
+ 0001:09C9 __NMSG_WRITE
+ 0001:030C __nomain
+ 0002:0076 __oserr
+ 0002:007A __osfile
+ 0002:0071 __osmajor
+ 0002:0070 __osminor
+ 0002:0074 __osmode
+ 0002:0070 __osver
+ 0002:0072 __osversion
+ 0002:0098 __pgmptr
+ 0002:00F8 __pnhFarHeap
+ 0001:0F1C __searchseg
+ 0001:0610 __setenvp
+ 0000:0001 Abs __sizec
+ 0000:0001 Abs __sized
+ 0001:04DC __stubmain
+ 0002:00E0 __timezone
+ 0002:00EE __tzname
+ 0001:06C4 __tzset
+ 0002:006C __umaskval
+ 0002:004A __wDataSeg
+ 0001:0226 __wflags
+ 0002:004C __wHeapSize
+ 0000:0000 Imp __WINFLAGS (KERNEL.178)
+ 0002:006F __winmajor
+ 0002:006E __winminor
+ 0002:006E __winver
+ 0002:0059 ___aDBrterr
+ 0002:0057 ___aDBswpflg
+ 0002:008E ___argc
+ 0002:0090 ___argv
+ 0001:0D74 ___ExportedStub
+ 0001:06A8 ___tzset
+
+ Address Publics by Value
+
+ 0000:0000 Imp GLOBALALLOC (KERNEL.15)
+ 0000:0000 Imp GETMODULEUSAGE (KERNEL.48)
+ 0000:0000 Imp LOCKSEGMENT (KERNEL.23)
+ 0000:0000 Imp GLOBALUNLOCK (KERNEL.19)
+ 0000:0000 Imp WSACLEANUP (WINSOCK.116)
+ 0000:0000 Imp SEND (WINSOCK.19)
+ 0000:0000 Imp GLOBALFREE (KERNEL.17)
+ 0000:0000 Imp UPDATEWINDOW (USER.124)
+ 0000:0000 Imp GETCURRENTTIME (USER.15)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp CONNECT (WINSOCK.4)
+ 0000:0000 Imp GETWINDOWLONG (USER.135)
+ 0000:0000 Imp FATALEXIT (KERNEL.1)
+ 0000:0000 Imp IOCTLSOCKET (WINSOCK.12)
+ 0000:0000 Imp DISPATCHMESSAGE (USER.114)
+ 0000:0000 Imp PEEKMESSAGE (USER.109)
+ 0000:0000 Imp GETSTOCKOBJECT (GDI.87)
+ 0000:0000 Imp DOS3CALL (KERNEL.102)
+ 0000:0000 Imp DEFWINDOWPROC (USER.107)
+ 0000:0000 Imp DESTROYWINDOW (USER.53)
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Imp GETVERSION (KERNEL.3)
+ 0000:0000 Imp __WINFLAGS (KERNEL.178)
+ 0000:0000 Imp INITTASK (KERNEL.91)
+ 0000:0000 Imp WSAASYNCSELECT (WINSOCK.101)
+ 0000:0000 Imp REGISTERCLASS (USER.57)
+ 0000:0000 Imp GLOBALREALLOC (KERNEL.16)
+ 0000:0000 Imp GLOBALSIZE (KERNEL.20)
+ 0000:0000 Imp WSAGETLASTERROR (WINSOCK.111)
+ 0000:0000 Imp GLOBALLOCK (KERNEL.18)
+ 0000:0000 Imp LOADCURSOR (USER.173)
+ 0000:0000 Imp WSASTARTUP (WINSOCK.115)
+ 0000:0000 Imp GETMODULEHANDLE (KERNEL.47)
+ 0000:0000 Imp SETSOCKOPT (WINSOCK.21)
+ 0000:0000 Imp FATALAPPEXIT (KERNEL.137)
+ 0000:0000 Imp WSAASYNCGETHOSTBYNAME (WINSOCK.103)
+ 0000:0000 Imp CREATEWINDOW (USER.41)
+ 0000:0000 Imp GETDOSENVIRONMENT (KERNEL.131)
+ 0000:0000 Imp HTONS (WINSOCK.9)
+ 0000:0000 Imp SOCKET (WINSOCK.23)
+ 0000:0000 Imp SHOWWINDOW (USER.42)
+ 0000:0000 Imp INET_ADDR (WINSOCK.10)
+ 0000:0000 Imp RECV (WINSOCK.16)
+ 0000:0000 Imp SELECT (WINSOCK.18)
+ 0000:0000 Imp TRANSLATEMESSAGE (USER.113)
+ 0000:0000 Imp WSACANCELASYNCREQUEST (WINSOCK.108)
+ 0000:0000 Imp SETWINDOWLONG (USER.136)
+ 0000:0000 Imp CLOSESOCKET (WINSOCK.3)
+ 0000:0001 Abs __sized
+ 0000:0001 Abs __sizec
+ 0000:9876 Abs __acrtmsg
+ 0000:9876 Abs __fptaskdata
+ 0000:9876 Abs __acrtused
+ 0000:D6D6 Abs __aDBused
+ 0000:D6D6 Abs __aDBdoswp
+ 0001:0010 LIBENTRY
+ 0001:0024 WEP
+ 0001:0042 _strlen
+ 0001:005C _atoi
+ 0001:0060 __itoa
+ 0001:007C _time
+ 0001:0110 _strcspn
+ 0001:016C _memcpy
+ 0001:01CA __fstrcspn
+ 0001:0226 __wflags
+ 0001:026A __astart
+ 0001:030C __nomain
+ 0001:0324 __dostotime_t
+ 0001:0422 __catox
+ 0001:0478 __cltoasub
+ 0001:0485 __cxtoa
+ 0001:04DC __stubmain
+ 0001:0508 __cinit
+ 0001:0550 __cexit
+ 0001:0561 __c_exit
+ 0001:05AF __ctermsub
+ 0001:05EC __FF_MSGBANNER
+ 0001:0610 __setenvp
+ 0001:06A8 ___tzset
+ 0001:06C4 __tzset
+ 0001:088C __isindst
+ 0001:0960 __aFulmul
+ 0001:0960 __aFlmul
+ 0001:0992 __NMSG_TEXT
+ 0001:09C9 __NMSG_WRITE
+ 0001:09E0 __fptrap
+ 0001:09E6 __myalloc
+ 0001:0A14 __GetDGROUP
+ 0001:0A24 __nearstub
+ 0001:0A26 _strncpy
+ 0001:0A50 _atol
+ 0001:0A54 _getenv
+ 0001:0AF0 __aFlrem
+ 0001:0B90 __fstrncmp
+ 0001:0BCC __fstrncpy
+ 0001:0BF6 __fstrlen
+ 0001:0C10 __cintDIV
+ 0001:0C1A __amsg_exit
+ 0001:0C5C __growseg
+ 0001:0CED __incseg
+ 0001:0D53 __findlast
+ 0001:0D74 ___ExportedStub
+ 0001:0D88 _strncmp
+ 0001:0DC4 __ffree
+ 0001:0DE5 __fmalloc
+ 0001:0E8C __newseg
+ 0001:0F0E __freefarheap
+ 0001:0F1C __searchseg
+ 0001:0F98 __freelist
+ 0001:0FC2 __initseg
+ 0001:0FF6 __linkseg
+ 0001:1030 _DoAsyncConnect
+ 0001:1084 _DoAsyncGetHostByName
+ 0001:10FA CLIENTOPEN
+ 0001:1362 CLIENTCLOSE
+ 0001:139E CLIENTWRITE
+ 0001:14FE ASYNCEVENTPROC
+ 0001:1560 _BlockForRecv
+ 0001:15DA _LocalBlockingFunc
+ 0001:1660 _LocalBlock
+ 0001:16BE _RecvWithYield
+ 0001:177E CLIENTREAD
+ 0001:18C6 CLIENTTOWERCONSTRUCT
+ 0001:19CC CLIENTTOWEREXPLODE
+ 0001:1AAA TRANSPORTLOAD
+ 0001:1B3A MYWEP
+ 0001:1B50 ??_C@_09FCOK@127?40?40?41?$AA@
+ 0001:1B5A ??_C@_0L@EBCH@RPC?5TCP?1IP?$AA@
+ 0001:1B66 ??_C@_08MPOI@TCLTCLNT?$AA@
+ 0001:1B70 ??_C@_0M@OCLK@?40123456789?$AA@
+ 0001:1B7C ??_C@_0L@JIBM@0123456789?$AA@
+ 0001:1B88 ??_C@_03EOPG@135?$AA@
+ 0001:1B8C ??_C@_0N@JDIH@ncacn_ip_tcp?$AA@
+ 0001:1B9A ??_C@_07EHGE@WINSOCK?$AA@
+ 0002:0004 rsrvptrs
+ 0002:0010 _TransInfo
+ 0002:0040 _hInstanceDLL
+ 0002:0042 _DllTermination
+ 0002:0046 _STKHQQ
+ 0002:0048 __hModule
+ 0002:004A __wDataSeg
+ 0002:004C __wHeapSize
+ 0002:004E __lpszCmdLine
+ 0002:0052 __dllinit
+ 0002:0053 _aseglo
+ 0002:0055 _aseghi
+ 0002:0057 ___aDBswpflg
+ 0002:0059 ___aDBrterr
+ 0002:005C __aintdiv
+ 0002:0060 __fac
+ 0002:006A _errno
+ 0002:006C __umaskval
+ 0002:006E __winver
+ 0002:006E __winminor
+ 0002:006F __winmajor
+ 0002:0070 __osver
+ 0002:0070 __osminor
+ 0002:0071 __osmajor
+ 0002:0072 __osversion
+ 0002:0074 __osmode
+ 0002:0075 __cpumode
+ 0002:0076 __oserr
+ 0002:0076 __doserrno
+ 0002:0078 __nfile
+ 0002:007A __osfile
+ 0002:008E ___argc
+ 0002:0090 ___argv
+ 0002:0094 __environ
+ 0002:0098 __pgmptr
+ 0002:009D __child
+ 0002:009F __exitflag
+ 0002:00A0 __adbgmsg
+ 0002:00AC __lpdays
+ 0002:00C6 __days
+ 0002:00E0 __timezone
+ 0002:00E4 __daylight
+ 0002:00EE __tzname
+ 0002:00F6 __amblksiz
+ 0002:00F8 __pnhFarHeap
+ 0002:00FC __fheap
+ 0002:010C __fpinit
+ 0002:01F8 _edata
+ 0002:01F8 __edata
+ 0002:0210 _AsyncCallComplete
+ 0002:0214 _RpcRuntimeInfo
+ 0002:0218 __end
+ 0002:0218 _end
+
+Program entry point at 0001:0010
diff --git a/public/sdk/rpc16/win/dll/rpc16c3.sym b/public/sdk/rpc16/win/dll/rpc16c3.sym
new file mode 100644
index 000000000..6aaa709d9
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c3.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/rpc16c4.map b/public/sdk/rpc16/win/dll/rpc16c4.map
new file mode 100644
index 000000000..c8b728ed7
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c4.map
@@ -0,0 +1,415 @@
+
+ RPC16C4
+
+ Start Length Name Class
+ 0001:0000 00000H DNLTCLNT_TEXT CODE
+ 0001:0000 00000H LTSTART_TEXT CODE
+ 0001:0000 00968H _TEXT CODE
+ 0001:0968 000EEH DNETADDR_TEXT CODE
+ 0001:0A56 00064H GNODEBAD_TEXT CODE
+ 0001:0ABA 00080H GNODEBNM_TEXT CODE
+ 0001:0B3A 00062H PRGCLS_TEXT CODE
+ 0001:0B9C 00056H PRGCON_TEXT CODE
+ 0001:0BF2 00112H PRGRCV_TEXT CODE
+ 0001:0D04 000ECH PRGSEL_TEXT CODE
+ 0001:0DF0 000FCH PRGSND_TEXT CODE
+ 0001:0EEC 0007AH PRGSOC_TEXT CODE
+ 0001:0F66 00140H GNODEENT_TEXT CODE
+ 0001:10A6 0002CH PRGSIO_TEXT CODE
+ 0001:10D2 00024H PTRCONV_TEXT CODE
+ 0001:10F6 0047BH _DNET_TEXT CODE
+ 0001:1572 00106H DNETPATH_TEXT CODE
+ 0001:1678 0000EH DNETW_TEXT CODE
+ 0001:1686 00036H HCLOSE_TEXT CODE
+ 0001:16BC 000A0H HOPEN_TEXT CODE
+ 0001:175C 00068H HREAD_TEXT CODE
+ 0001:17C4 0009CH HSEEK_TEXT CODE
+ 0001:1860 0001AH DNETCHKS_TEXT CODE
+ 0001:1880 00531H COMDAT_SEG1 CODE
+ 0002:0000 00010H NULL BEGDATA
+ 0002:0010 00310H _DATA DATA
+ 0002:0320 0000EH CDATA DATA
+ 0002:032E 00000H XIFB DATA
+ 0002:032E 00000H XIF DATA
+ 0002:032E 00000H XIFE DATA
+ 0002:032E 00000H XIB DATA
+ 0002:032E 00000H XI DATA
+ 0002:032E 00000H XIE DATA
+ 0002:032E 00000H XPB DATA
+ 0002:032E 00000H XP DATA
+ 0002:032E 00000H XPE DATA
+ 0002:032E 00000H XCB DATA
+ 0002:032E 00000H XC DATA
+ 0002:032E 00000H XCE DATA
+ 0002:032E 00000H XCFB DATA
+ 0002:032E 00000H XCFCRT DATA
+ 0002:032E 00000H XCF DATA
+ 0002:032E 00000H XCFE DATA
+ 0002:032E 00000H XIFCB DATA
+ 0002:032E 00000H XIFU DATA
+ 0002:032E 00000H XIFL DATA
+ 0002:032E 00000H XIFM DATA
+ 0002:032E 00000H XIFCE DATA
+ 0002:032E 00000H DBDATA DATA
+ 0002:032E 0000AH CONST CONST
+ 0002:0338 00008H HDR MSG
+ 0002:0340 000D4H MSG MSG
+ 0002:0414 00002H PAD MSG
+ 0002:0416 00001H EPAD MSG
+ 0002:0418 00098H _BSS BSS
+ 0002:04B0 00000H XOB BSS
+ 0002:04B0 00000H XO BSS
+ 0002:04B0 00000H XOE BSS
+ 0002:04B0 00000H XOFB BSS
+ 0002:04B0 00000H XOF BSS
+ 0002:04B0 00000H XOFE BSS
+ 0002:04B0 00004H c_common BSS
+
+ Origin Group
+ 0002:0 DGROUP
+
+ Address Export Alias
+
+ 0001:199C CLIENTCLOSE CLIENTCLOSE
+ 0001:1880 CLIENTOPEN CLIENTOPEN
+ 0001:19F8 CLIENTREAD CLIENTREAD
+ 0001:1B38 CLIENTTOWERCONSTRUCT CLIENTTOWERCONSTRUCT
+ 0001:1C5A CLIENTTOWEREXPLODE CLIENTTOWEREXPLODE
+ 0001:19B8 CLIENTWRITE CLIENTWRITE
+ 0001:1D72 TRANSPORTLOAD TRANSPORTLOAD
+ 0001:0024 WEP WEP
+ 0001:0558 ___ExportedStub ___ExportedStub
+
+ Address Publics by Name
+
+ 0001:1D9E ??_C@_03HJFF@?$CD69?$AA@
+ 0001:1D92 ??_C@_0M@OCLK@?40123456789?$AA@
+ 0001:1DA2 ??_C@_0P@MCIL@ncacn_dnet_nsp?$AA@
+ 0001:199C CLIENTCLOSE
+ 0001:1880 CLIENTOPEN
+ 0001:19F8 CLIENTREAD
+ 0001:1B38 CLIENTTOWERCONSTRUCT
+ 0001:1C5A CLIENTTOWEREXPLODE
+ 0001:19B8 CLIENTWRITE
+ 0000:0000 Imp DOS3CALL (KERNEL.102)
+ 0000:0000 Imp FATALAPPEXIT (KERNEL.137)
+ 0000:0000 Imp FATALEXIT (KERNEL.1)
+ 0000:0000 Imp GETDOSENVIRONMENT (KERNEL.131)
+ 0000:0000 Imp GETMODULEUSAGE (KERNEL.48)
+ 0000:0000 Imp GETVERSION (KERNEL.3)
+ 0000:0000 Imp GLOBALALLOC (KERNEL.15)
+ 0000:0000 Imp GlobalDosAlloc (KERNEL.184)
+ 0000:0000 Imp GlobalDosFree (KERNEL.185)
+ 0000:0000 Imp GLOBALFREE (KERNEL.17)
+ 0000:0000 Imp GLOBALLOCK (KERNEL.18)
+ 0000:0000 Imp GLOBALREALLOC (KERNEL.16)
+ 0000:0000 Imp GLOBALSIZE (KERNEL.20)
+ 0000:0000 Imp GLOBALUNLOCK (KERNEL.19)
+ 0000:0000 Imp INITTASK (KERNEL.91)
+ 0001:0010 LIBENTRY
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp LOCKSEGMENT (KERNEL.23)
+ 0002:0004 rsrvptrs
+ 0001:1D72 TRANSPORTLOAD
+ 0001:0024 WEP
+ 0002:0301 _aseghi
+ 0002:02FF _aseglo
+ 0001:0098 _atoi
+ 0001:10F6 _bcmp
+ 0001:111F _bcopy
+ 0001:1144 _bzero
+ 0001:0B9C _connect
+ 0001:11D1 _decnet
+ 0002:0042 _DLLTERMINATION
+ 0001:0968 _dnet_addr
+ 0001:1860 _dnet_chkstat
+ 0002:013A _dnet_copyright
+ 0001:1572 _dnet_path
+ 0002:017C _dnet_version
+ 0002:0138 _dnp_status
+ 0001:1678 _DoWinMessages
+ 0002:0418 _edata
+ 0002:04B4 _end
+ 0001:0FB8 _endnodeent
+ 0002:01BA _errno
+ 0001:0A56 _getnodebyaddr
+ 0001:0ABA _getnodebyname
+ 0001:105E _getnodedb
+ 0001:0FDE _getnodeent
+ 0001:1658 _get_current_volume
+ 0001:1686 _hclose
+ 0002:0040 _HINSTANCEDLL
+ 0001:16BC _hopen
+ 0001:175C _hread
+ 0001:17C4 _hseek
+ 0001:147D _install_check
+ 0001:10D2 _lohi
+ 0001:10E0 _lsw
+ 0001:00F8 _memcpy
+ 0001:14D6 _msdos
+ 0001:10EA _msw
+ 0001:0BF2 _recv
+ 0002:04B0 _RpcRuntimeInfo
+ 0001:0B3A _sclose
+ 0001:0D04 _select
+ 0001:0DF0 _send
+ 0001:0F66 _setnodeent
+ 0001:10A6 _sioctl
+ 0001:0EEC _socket
+ 0001:0C52 _sread
+ 0002:02F2 _STKHQQ
+ 0001:0290 _strcat
+ 0001:02E4 _strcmp
+ 0001:0042 _strcpy
+ 0001:009C _strcspn
+ 0001:007E _strlen
+ 0001:0E44 _swrite
+ 0002:0010 _TransInfo
+ 0001:0C90 _xrecv
+ 0001:0E82 _xsend
+ 0000:9876 Abs __acrtmsg
+ 0000:9876 Abs __acrtused
+ 0000:D6D6 Abs __aDBdoswp
+ 0002:0308 __adbgmsg
+ 0000:D6D6 Abs __aDBused
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0002:01AC __aintdiv
+ 0002:030C __amblksiz
+ 0001:0516 __amsg_exit
+ 0001:0352 __astart
+ 0001:0156 __catox
+ 0001:01F4 __cexit
+ 0002:01ED __child
+ 0001:01AC __cinit
+ 0001:050C __cintDIV
+ 0002:01C5 __cpumode
+ 0001:0253 __ctermsub
+ 0002:01F0 __ctype
+ 0002:01F0 __ctype_
+ 0001:0205 __c_exit
+ 0002:02FE __dllinit
+ 0002:01C6 __doserrno
+ 0002:0418 __edata
+ 0002:04B4 __end
+ 0002:01E4 __environ
+ 0002:01EF __exitflag
+ 0002:01B0 __fac
+ 0001:0700 __ffree
+ 0001:0450 __FF_MSGBANNER
+ 0002:0312 __fheap
+ 0001:06DF __findlast
+ 0001:0721 __fmalloc
+ 0002:0322 __fpinit
+ 0000:9876 Abs __fptaskdata
+ 0001:040C __fptrap
+ 0001:084A __freefarheap
+ 0001:08D4 __freelist
+ 0001:0412 __GetDGROUP
+ 0001:05E8 __growseg
+ 0002:02F4 __hModule
+ 0001:0679 __incseg
+ 0001:08FE __initseg
+ 0001:0932 __linkseg
+ 0002:02FA __lpszCmdLine
+ 0001:05BA __myalloc
+ 0001:0422 __nearstub
+ 0001:07C8 __newseg
+ 0002:01C8 __nfile
+ 0001:056C __NMSG_TEXT
+ 0001:05A3 __NMSG_WRITE
+ 0001:03F4 __nomain
+ 0002:01C6 __oserr
+ 0002:01CA __osfile
+ 0002:01C1 __osmajor
+ 0002:01C0 __osminor
+ 0002:01C4 __osmode
+ 0002:01C0 __osver
+ 0002:01C2 __osversion
+ 0002:01E8 __pgmptr
+ 0002:030E __pnhFarHeap
+ 0001:0858 __searchseg
+ 0001:0474 __setenvp
+ 0000:0001 Abs __sizec
+ 0000:0001 Abs __sized
+ 0001:0424 __stubmain
+ 0002:01BC __umaskval
+ 0002:02F6 __wDataSeg
+ 0001:030E __wflags
+ 0002:02F8 __wHeapSize
+ 0000:0000 Imp __WINFLAGS (KERNEL.178)
+ 0002:01BF __winmajor
+ 0002:01BE __winminor
+ 0002:01BE __winver
+ 0002:0305 ___aDBrterr
+ 0002:0303 ___aDBswpflg
+ 0002:01DE ___argc
+ 0002:01E0 ___argv
+ 0001:0558 ___ExportedStub
+
+ Address Publics by Value
+
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp GlobalDosFree (KERNEL.185)
+ 0000:0000 Imp GLOBALLOCK (KERNEL.18)
+ 0000:0000 Imp DOS3CALL (KERNEL.102)
+ 0000:0000 Imp GLOBALFREE (KERNEL.17)
+ 0000:0000 Imp GLOBALUNLOCK (KERNEL.19)
+ 0000:0000 Imp FATALAPPEXIT (KERNEL.137)
+ 0000:0000 Imp LOCKSEGMENT (KERNEL.23)
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Imp GLOBALALLOC (KERNEL.15)
+ 0000:0000 Imp FATALEXIT (KERNEL.1)
+ 0000:0000 Imp GLOBALREALLOC (KERNEL.16)
+ 0000:0000 Imp INITTASK (KERNEL.91)
+ 0000:0000 Imp GETDOSENVIRONMENT (KERNEL.131)
+ 0000:0000 Imp GETVERSION (KERNEL.3)
+ 0000:0000 Imp GlobalDosAlloc (KERNEL.184)
+ 0000:0000 Imp GETMODULEUSAGE (KERNEL.48)
+ 0000:0000 Imp __WINFLAGS (KERNEL.178)
+ 0000:0000 Imp GLOBALSIZE (KERNEL.20)
+ 0000:0001 Abs __sizec
+ 0000:0001 Abs __sized
+ 0000:9876 Abs __fptaskdata
+ 0000:9876 Abs __acrtmsg
+ 0000:9876 Abs __acrtused
+ 0000:D6D6 Abs __aDBdoswp
+ 0000:D6D6 Abs __aDBused
+ 0001:0010 LIBENTRY
+ 0001:0024 WEP
+ 0001:0042 _strcpy
+ 0001:007E _strlen
+ 0001:0098 _atoi
+ 0001:009C _strcspn
+ 0001:00F8 _memcpy
+ 0001:0156 __catox
+ 0001:01AC __cinit
+ 0001:01F4 __cexit
+ 0001:0205 __c_exit
+ 0001:0253 __ctermsub
+ 0001:0290 _strcat
+ 0001:02E4 _strcmp
+ 0001:030E __wflags
+ 0001:0352 __astart
+ 0001:03F4 __nomain
+ 0001:040C __fptrap
+ 0001:0412 __GetDGROUP
+ 0001:0422 __nearstub
+ 0001:0424 __stubmain
+ 0001:0450 __FF_MSGBANNER
+ 0001:0474 __setenvp
+ 0001:050C __cintDIV
+ 0001:0516 __amsg_exit
+ 0001:0558 ___ExportedStub
+ 0001:056C __NMSG_TEXT
+ 0001:05A3 __NMSG_WRITE
+ 0001:05BA __myalloc
+ 0001:05E8 __growseg
+ 0001:0679 __incseg
+ 0001:06DF __findlast
+ 0001:0700 __ffree
+ 0001:0721 __fmalloc
+ 0001:07C8 __newseg
+ 0001:084A __freefarheap
+ 0001:0858 __searchseg
+ 0001:08D4 __freelist
+ 0001:08FE __initseg
+ 0001:0932 __linkseg
+ 0001:0968 _dnet_addr
+ 0001:0A56 _getnodebyaddr
+ 0001:0ABA _getnodebyname
+ 0001:0B3A _sclose
+ 0001:0B9C _connect
+ 0001:0BF2 _recv
+ 0001:0C52 _sread
+ 0001:0C90 _xrecv
+ 0001:0D04 _select
+ 0001:0DF0 _send
+ 0001:0E44 _swrite
+ 0001:0E82 _xsend
+ 0001:0EEC _socket
+ 0001:0F66 _setnodeent
+ 0001:0FB8 _endnodeent
+ 0001:0FDE _getnodeent
+ 0001:105E _getnodedb
+ 0001:10A6 _sioctl
+ 0001:10D2 _lohi
+ 0001:10E0 _lsw
+ 0001:10EA _msw
+ 0001:10F6 _bcmp
+ 0001:111F _bcopy
+ 0001:1144 _bzero
+ 0001:11D1 _decnet
+ 0001:147D _install_check
+ 0001:14D6 _msdos
+ 0001:1572 _dnet_path
+ 0001:1658 _get_current_volume
+ 0001:1678 _DoWinMessages
+ 0001:1686 _hclose
+ 0001:16BC _hopen
+ 0001:175C _hread
+ 0001:17C4 _hseek
+ 0001:1860 _dnet_chkstat
+ 0001:1880 CLIENTOPEN
+ 0001:199C CLIENTCLOSE
+ 0001:19B8 CLIENTWRITE
+ 0001:19F8 CLIENTREAD
+ 0001:1B38 CLIENTTOWERCONSTRUCT
+ 0001:1C5A CLIENTTOWEREXPLODE
+ 0001:1D72 TRANSPORTLOAD
+ 0001:1D92 ??_C@_0M@OCLK@?40123456789?$AA@
+ 0001:1D9E ??_C@_03HJFF@?$CD69?$AA@
+ 0001:1DA2 ??_C@_0P@MCIL@ncacn_dnet_nsp?$AA@
+ 0002:0004 rsrvptrs
+ 0002:0010 _TransInfo
+ 0002:0040 _HINSTANCEDLL
+ 0002:0042 _DLLTERMINATION
+ 0002:0138 _dnp_status
+ 0002:013A _dnet_copyright
+ 0002:017C _dnet_version
+ 0002:01AC __aintdiv
+ 0002:01B0 __fac
+ 0002:01BA _errno
+ 0002:01BC __umaskval
+ 0002:01BE __winver
+ 0002:01BE __winminor
+ 0002:01BF __winmajor
+ 0002:01C0 __osminor
+ 0002:01C0 __osver
+ 0002:01C1 __osmajor
+ 0002:01C2 __osversion
+ 0002:01C4 __osmode
+ 0002:01C5 __cpumode
+ 0002:01C6 __oserr
+ 0002:01C6 __doserrno
+ 0002:01C8 __nfile
+ 0002:01CA __osfile
+ 0002:01DE ___argc
+ 0002:01E0 ___argv
+ 0002:01E4 __environ
+ 0002:01E8 __pgmptr
+ 0002:01ED __child
+ 0002:01EF __exitflag
+ 0002:01F0 __ctype_
+ 0002:01F0 __ctype
+ 0002:02F2 _STKHQQ
+ 0002:02F4 __hModule
+ 0002:02F6 __wDataSeg
+ 0002:02F8 __wHeapSize
+ 0002:02FA __lpszCmdLine
+ 0002:02FE __dllinit
+ 0002:02FF _aseglo
+ 0002:0301 _aseghi
+ 0002:0303 ___aDBswpflg
+ 0002:0305 ___aDBrterr
+ 0002:0308 __adbgmsg
+ 0002:030C __amblksiz
+ 0002:030E __pnhFarHeap
+ 0002:0312 __fheap
+ 0002:0322 __fpinit
+ 0002:0418 _edata
+ 0002:0418 __edata
+ 0002:04B0 _RpcRuntimeInfo
+ 0002:04B4 _end
+ 0002:04B4 __end
+
+Program entry point at 0001:0010
diff --git a/public/sdk/rpc16/win/dll/rpc16c4.sym b/public/sdk/rpc16/win/dll/rpc16c4.sym
new file mode 100644
index 000000000..84dd3a9a7
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c4.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/rpc16c5.map b/public/sdk/rpc16/win/dll/rpc16c5.map
new file mode 100644
index 000000000..91f4a0663
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c5.map
@@ -0,0 +1,129 @@
+
+ RPC16C5
+
+ Start Length Name Class
+ 0001:0000 00098H RPC16C5_FIXED CODE
+ 0002:0000 00000H NBLTCLNT_TEXT CODE
+ 0002:0000 00000H LTSTART_TEXT CODE
+ 0002:0000 00171H _TEXT CODE
+ 0003:0000 0140DH COMDAT_SEG1 CODE
+ 0004:0000 0008EH _DATA DATA
+ 0004:008E 00000H CONST CONST
+ 0004:008E 00000H _BSS BSS
+ 0004:0090 00038H c_common BSS
+
+ Origin Group
+ 0004:0 DGROUP
+
+ Address Export Alias
+
+ 0003:0000 CLEANUPNETBIOS CLEANUPNETBIOS
+ 0003:07CA CLOSE CLOSE
+ 0003:1384 EXECNCB EXECNCB
+ 0003:119E INITNBMUTEX INITNBMUTEX
+ 0003:12FC MAPERRORCODE MAPERRORCODE
+ 0003:051C OPEN OPEN
+ 0003:0A7A RECEIVE RECEIVE
+ 0003:096C SEND SEND
+ 0003:0BF2 SENDRECEIVE SENDRECEIVE
+ 0003:0E66 TOWERCONSTRUCT TOWERCONSTRUCT
+ 0003:105A TOWEREXPLODE TOWEREXPLODE
+ 0003:00A0 TRANSPORTLOAD TRANSPORTLOAD
+ 0002:0014 WEP WEP
+ 0001:0000 _NBWinPost _NBWinPost
+
+ Address Publics by Name
+
+ 0003:13EE ??_C@_0BP@PJIB@Software?2Microsoft?2Rpc?2NetBios?$AA@
+ 0003:13B8 ??_C@_0M@PAMB@ncacn_nb_nb?$AA@
+ 0003:13C4 ??_C@_0N@DJPI@ncacn_nb_tcp?$AA@
+ 0003:13E0 ??_C@_0N@JHIF@ncacn_nb_ipx?$AA@
+ 0003:13D2 ??_C@_0N@OHPK@ncacn_nb_xns?$AA@
+ 0003:0000 CLEANUPNETBIOS
+ 0003:07CA CLOSE
+ 0003:1384 EXECNCB
+ 0000:0000 Imp GLOBALFIX (KERNEL.197)
+ 0000:0000 Imp GLOBALPAGELOCK (KERNEL.191)
+ 0000:0000 Imp GLOBALPAGEUNLOCK (KERNEL.192)
+ 0000:0000 Imp GLOBALUNFIX (KERNEL.198)
+ 0003:119E INITNBMUTEX
+ 0002:0000 LIBENTRY
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0003:12FC MAPERRORCODE
+ 0000:0000 Imp NETBIOSCALL (KERNEL.103)
+ 0003:051C OPEN
+ 0003:0A7A RECEIVE
+ 0003:096C SEND
+ 0003:0BF2 SENDRECEIVE
+ 0003:0E66 TOWERCONSTRUCT
+ 0003:105A TOWEREXPLODE
+ 0003:00A0 TRANSPORTLOAD
+ 0002:0014 WEP
+ 0004:00C0 _AsyncCallComplete
+ 0004:008A _DllTermination
+ 0004:0088 _HINSTANCEDLL
+ 0004:0076 _MachineName
+ 0004:0086 _MachineNameLengthUnpadded
+ 0003:11AA _MapProtocol
+ 0002:00B2 _memcpy
+ 0002:0110 _memset
+ 0001:0000 _NBWinPost
+ 0004:0000 _NetBiosErrors
+ 0004:0090 _ProtoToLana
+ 0004:00C4 _RpcRuntimeInfo
+ 0003:1344 _SetupNetBios
+ 0002:006E _strcmp
+ 0002:0032 _strcpy
+ 0002:0098 _strlen
+ 0004:0046 _TransInfo
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0002:0158 __fstrlen
+
+ Address Publics by Value
+
+ 0000:0000 Imp NETBIOSCALL (KERNEL.103)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp GLOBALPAGEUNLOCK (KERNEL.192)
+ 0000:0000 Imp GLOBALPAGELOCK (KERNEL.191)
+ 0000:0000 Imp GLOBALFIX (KERNEL.197)
+ 0000:0000 Imp GLOBALUNFIX (KERNEL.198)
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0001:0000 _NBWinPost
+ 0002:0000 LIBENTRY
+ 0002:0014 WEP
+ 0002:0032 _strcpy
+ 0002:006E _strcmp
+ 0002:0098 _strlen
+ 0002:00B2 _memcpy
+ 0002:0110 _memset
+ 0002:0158 __fstrlen
+ 0003:0000 CLEANUPNETBIOS
+ 0003:00A0 TRANSPORTLOAD
+ 0003:051C OPEN
+ 0003:07CA CLOSE
+ 0003:096C SEND
+ 0003:0A7A RECEIVE
+ 0003:0BF2 SENDRECEIVE
+ 0003:0E66 TOWERCONSTRUCT
+ 0003:105A TOWEREXPLODE
+ 0003:119E INITNBMUTEX
+ 0003:11AA _MapProtocol
+ 0003:12FC MAPERRORCODE
+ 0003:1344 _SetupNetBios
+ 0003:1384 EXECNCB
+ 0003:13B8 ??_C@_0M@PAMB@ncacn_nb_nb?$AA@
+ 0003:13C4 ??_C@_0N@DJPI@ncacn_nb_tcp?$AA@
+ 0003:13D2 ??_C@_0N@OHPK@ncacn_nb_xns?$AA@
+ 0003:13E0 ??_C@_0N@JHIF@ncacn_nb_ipx?$AA@
+ 0003:13EE ??_C@_0BP@PJIB@Software?2Microsoft?2Rpc?2NetBios?$AA@
+ 0004:0000 _NetBiosErrors
+ 0004:0046 _TransInfo
+ 0004:0076 _MachineName
+ 0004:0086 _MachineNameLengthUnpadded
+ 0004:0088 _HINSTANCEDLL
+ 0004:008A _DllTermination
+ 0004:0090 _ProtoToLana
+ 0004:00C0 _AsyncCallComplete
+ 0004:00C4 _RpcRuntimeInfo
+
+Program entry point at 0002:0000
diff --git a/public/sdk/rpc16/win/dll/rpc16c5.sym b/public/sdk/rpc16/win/dll/rpc16c5.sym
new file mode 100644
index 000000000..81ffbd392
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c5.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/rpc16c6.map b/public/sdk/rpc16/win/dll/rpc16c6.map
new file mode 100644
index 000000000..ed5bd6246
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c6.map
@@ -0,0 +1,314 @@
+
+ RPC16C6
+
+ Start Length Name Class
+ 0001:0000 0007BH RPC16C6_FIXED CODE
+ 0002:0000 00000H SPXCLNT_TEXT CODE
+ 0002:0000 00000H GETHOST_TEXT CODE
+ 0002:0000 00000H NOVELL_TEXT CODE
+ 0002:0000 00000H LTSTART_TEXT CODE
+ 0002:0000 003A5H _TEXT CODE
+ 0003:0000 02361H COMDAT_SEG1 CODE
+ 0004:0000 00040H _DATA DATA
+ 0004:0040 00000H CONST CONST
+ 0004:0040 00000H _BSS BSS
+ 0004:0040 002B4H c_common BSS
+
+ Origin Group
+ 0004:0 DGROUP
+
+ Address Export Alias
+
+ 0003:02EA SPX_CLOSE SPX_CLOSE
+ 0003:03D0 SPX_OPEN SPX_OPEN
+ 0003:0794 SPX_RECEIVE SPX_RECEIVE
+ 0003:0668 SPX_SEND SPX_SEND
+ 0003:08BC SPX_TOWER_CONSTRUCT SPX_TOWER_CONSTRUCT
+ 0003:0992 SPX_TOWER_EXPLODE SPX_TOWER_EXPLODE
+ 0003:0ABC TRANSPORTLOAD TRANSPORTLOAD
+ 0002:0014 WEP WEP
+ 0001:0000 _post_ecb _post_ecb
+
+ Address Publics by Name
+
+ 0003:0B78 ??_C@_05LKBG@34280?$AA@
+ 0003:0B88 ??_C@_08MFIO@NWIPXSPX?$AA@
+ 0003:0B7E ??_C@_09LLEG@ncacn_spx?$AA@
+ 0003:22B2 ??_C@_0BC@GPKG@IPXGetLocalTarget?$AA@
+ 0003:2264 ??_C@_0BD@DOAJ@IPXListenForPacket?$AA@
+ 0003:22EA ??_C@_0BD@LKHJ@SPXAbortConnection?$AA@
+ 0003:229E ??_C@_0BE@CLFP@IPXGetMaxPacketSize?$AA@
+ 0003:2288 ??_C@_0BF@HPBB@IPXRelinquishControl?$AA@
+ 0003:2240 ??_C@_0BF@LJIE@IPXGetIntervalMarker?$AA@
+ 0003:22FE ??_C@_0BH@CGGF@SPXSendSequencedPacket?$AA@
+ 0003:234A ??_C@_0BH@HMAG@SPXTerminateConnection?$AA@
+ 0003:2332 ??_C@_0BH@HNJJ@SPXEstablishConnection?$AA@
+ 0003:22C4 ??_C@_0BI@PNGJ@IPXDisconnectFromTarget?$AA@
+ 0003:2316 ??_C@_0BM@PLEO@SPXListenForSequencedPacket?$AA@
+ 0003:12F8 ??_C@_0M@KHAG@NET_ADDRESS?$AA@
+ 0003:2214 ??_C@_0N@DBEN@IPXSPXDeinit?$AA@
+ 0003:21F8 ??_C@_0N@OMIP@nwipxspx?4dll?$AA@
+ 0003:2222 ??_C@_0O@DBFD@IPXOpenSocket?$AA@
+ 0003:22DC ??_C@_0O@FECL@SPXInitialize?$AA@
+ 0003:2206 ??_C@_0O@GLEB@IPXInitialize?$AA@
+ 0003:2256 ??_C@_0O@KMBC@IPXSendPacket?$AA@
+ 0003:2278 ??_C@_0P@LEOG@IPXCancelEvent?$AA@
+ 0003:2230 ??_C@_0P@MDGB@IPXCloseSocket?$AA@
+ 0003:134A ASMIPXCANCELEVENT
+ 0003:1366 ASMIPXCLOSESOCKET
+ 0003:14F2 ASMIPXDISCONNECTFROMTARGET
+ 0000:0000 Unr ASMIPXGETINTERNETWORKADDRESS
+ 0003:1382 ASMIPXGETINTERVALMARKER
+ 0003:150E ASMIPXGETLOCALTARGET
+ 0003:14DC ASMIPXGETMAXPACKETSIZE
+ 0003:1304 ASMIPXINITIALIZE
+ 0003:1398 ASMIPXLISTENFORPACKET
+ 0003:13B4 ASMIPXOPENSOCKET
+ 0003:13DC ASMIPXRELINQUISHCONTROL
+ 0003:13F2 ASMIPXSENDPACKET
+ 0003:140E ASMSPXABORTCONNECTION
+ 0003:145C ASMSPXESTABLISHCONNECTION
+ 0003:142A ASMSPXINITIALIZE
+ 0003:1484 ASMSPXLISTENFORSEQUENCEDPACKET
+ 0003:14A0 ASMSPXSENDSEQUENCEDPACKET
+ 0003:14BE ASMSPXTERMINATECONNECTION
+ 0000:0000 Imp FREELIBRARY (KERNEL.96)
+ 0000:0000 Imp GETMODULEHANDLE (KERNEL.47)
+ 0000:0000 Imp GETPROCADDRESS (KERNEL.50)
+ 0000:0000 Imp GETWINFLAGS (KERNEL.132)
+ 0000:0000 Imp GLOBALALLOC (KERNEL.15)
+ 0000:0000 Imp GLOBALFREE (KERNEL.17)
+ 0000:0000 Imp GLOBALHANDLE (KERNEL.21)
+ 0000:0000 Imp GLOBALLOCK (KERNEL.18)
+ 0000:0000 Imp GLOBALUNLOCK (KERNEL.19)
+ 0002:0000 LIBENTRY
+ 0000:0000 Imp LOADLIBRARY (KERNEL.95)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp SETERRORMODE (KERNEL.107)
+ 0003:02EA SPX_CLOSE
+ 0003:03D0 SPX_OPEN
+ 0003:0794 SPX_RECEIVE
+ 0003:0668 SPX_SEND
+ 0003:08BC SPX_TOWER_CONSTRUCT
+ 0003:0992 SPX_TOWER_EXPLODE
+ 0003:0A88 SPX_WRAPUP
+ 0003:0ABC TRANSPORTLOAD
+ 0002:0014 WEP
+ 0003:2032 WRAPPERFORIPXCANCELEVENT
+ 0003:1F94 WRAPPERFORIPXCLOSESOCKET
+ 0000:0000 Unr WRAPPERFORIPXDISCONNECTFROMTARGET
+ 0003:1FBA WRAPPERFORIPXGETINTERVALMARKER
+ 0003:1F4E WRAPPERFORIPXGETLOCALTARGET
+ 0003:2072 WRAPPERFORIPXGETMAXPACKETSIZE
+ 0003:1D3C WRAPPERFORIPXINITIALIZE
+ 0003:2006 WRAPPERFORIPXLISTENFORPACKET
+ 0003:1F16 WRAPPERFORIPXOPENSOCKET
+ 0003:2060 WRAPPERFORIPXRELINQUISHCONTROL
+ 0003:1FDA WRAPPERFORIPXSENDPACKET
+ 0003:21DA WRAPPERFORIPXSPXDEINIT
+ 0003:20DE WRAPPERFORSPXABORTCONNECTION
+ 0003:215C WRAPPERFORSPXESTABLISHCONNECTION
+ 0003:2084 WRAPPERFORSPXINITIALIZE
+ 0003:2130 WRAPPERFORSPXLISTENFORSEQUENCEDPACKET
+ 0003:20FE WRAPPERFORSPXSENDSEQUENCEDPACKET
+ 0003:21A8 WRAPPERFORSPXTERMINATECONNECTION
+ 0004:0038 _ActiveFileServer
+ 0003:0C3A _AddServerToCache
+ 0003:0122 _allocate_receive_ecb
+ 0003:0074 _allocate_send_ecb
+ 0004:00EC _AsyncCallComplete
+ 0002:004C _atoi
+ 0003:0B92 _ByteSwapShort
+ 0003:0D56 _CachedServerContacted
+ 0003:0D96 _CachedServerNotContacted
+ 0003:0B9E _chtob
+ 0003:1876 _ConnectToAnyFileServer
+ 0003:1BD0 _DisconnectFromServer
+ 0004:003C _DllTermination
+ 0003:0C22 _DosGetTickCount
+ 0004:00E8 _enteripx
+ 0004:0036 _FileServerCount
+ 0003:15B4 _FindFileServers
+ 0003:0D16 _FindServerInCache
+ 0003:0000 _free_ecb
+ 0003:06F0 _get_remaining_packets
+ 0004:003A _HINSTANCEDLL
+ 0004:00B6 _IpxFns
+ 0003:1188 _IpxGetHostByName
+ 0002:006C _memcpy
+ 0002:00CA _memset
+ 0003:1986 _NcpTransaction
+ 0004:00E6 _nwipxspx
+ 0001:0000 _post_ecb
+ 0004:007E _PreferredServer
+ 0004:0030 _PreferredServerFound
+ 0003:05BA _put_packets
+ 0003:1C2A _ReadPropertyValue
+ 0004:00F0 _RpcRuntimeInfo
+ 0003:0DF6 _SearchBindery
+ 0003:0ED2 _SearchWithSap
+ 0004:00F4 _ServerCache
+ 0004:0042 _Servers
+ 0003:1568 _SetupEcb
+ 0004:009E _SpxFns
+ 0003:0252 _spx_abort
+ 0004:0040 _spx_max_userdata_size
+ 0002:0032 _strlen
+ 0004:0032 _taskid
+ 0004:0000 _TransInfo
+ 0003:01A2 _wait_for_ecb
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0002:02EC __catox
+ 0002:0342 __cltoasub
+ 0002:034F __cxtoa
+ 0002:0112 __fmemcmp
+ 0002:016E __fmemcpy
+ 0002:024C __fmemset
+ 0002:01E6 __fstrcmp
+ 0002:0210 __fstrcpy
+ 0002:01CC __fstrlen
+ 0002:0294 __fstrnicmp
+ 0002:0050 __itoa
+
+ Address Publics by Value
+
+ 0000:0000 Imp GETMODULEHANDLE (KERNEL.47)
+ 0000:0000 Imp GLOBALALLOC (KERNEL.15)
+ 0000:0000 Unr WRAPPERFORIPXDISCONNECTFROMTARGET
+ 0000:0000 Imp GLOBALLOCK (KERNEL.18)
+ 0000:0000 Imp LOADLIBRARY (KERNEL.95)
+ 0000:0000 Imp GLOBALHANDLE (KERNEL.21)
+ 0000:0000 Imp FREELIBRARY (KERNEL.96)
+ 0000:0000 Imp GLOBALFREE (KERNEL.17)
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Imp GLOBALUNLOCK (KERNEL.19)
+ 0000:0000 Unr ASMIPXGETINTERNETWORKADDRESS
+ 0000:0000 Imp SETERRORMODE (KERNEL.107)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp GETWINFLAGS (KERNEL.132)
+ 0000:0000 Imp GETPROCADDRESS (KERNEL.50)
+ 0001:0000 _post_ecb
+ 0002:0000 LIBENTRY
+ 0002:0014 WEP
+ 0002:0032 _strlen
+ 0002:004C _atoi
+ 0002:0050 __itoa
+ 0002:006C _memcpy
+ 0002:00CA _memset
+ 0002:0112 __fmemcmp
+ 0002:016E __fmemcpy
+ 0002:01CC __fstrlen
+ 0002:01E6 __fstrcmp
+ 0002:0210 __fstrcpy
+ 0002:024C __fmemset
+ 0002:0294 __fstrnicmp
+ 0002:02EC __catox
+ 0002:0342 __cltoasub
+ 0002:034F __cxtoa
+ 0003:0000 _free_ecb
+ 0003:0074 _allocate_send_ecb
+ 0003:0122 _allocate_receive_ecb
+ 0003:01A2 _wait_for_ecb
+ 0003:0252 _spx_abort
+ 0003:02EA SPX_CLOSE
+ 0003:03D0 SPX_OPEN
+ 0003:05BA _put_packets
+ 0003:0668 SPX_SEND
+ 0003:06F0 _get_remaining_packets
+ 0003:0794 SPX_RECEIVE
+ 0003:08BC SPX_TOWER_CONSTRUCT
+ 0003:0992 SPX_TOWER_EXPLODE
+ 0003:0A88 SPX_WRAPUP
+ 0003:0ABC TRANSPORTLOAD
+ 0003:0B78 ??_C@_05LKBG@34280?$AA@
+ 0003:0B7E ??_C@_09LLEG@ncacn_spx?$AA@
+ 0003:0B88 ??_C@_08MFIO@NWIPXSPX?$AA@
+ 0003:0B92 _ByteSwapShort
+ 0003:0B9E _chtob
+ 0003:0C22 _DosGetTickCount
+ 0003:0C3A _AddServerToCache
+ 0003:0D16 _FindServerInCache
+ 0003:0D56 _CachedServerContacted
+ 0003:0D96 _CachedServerNotContacted
+ 0003:0DF6 _SearchBindery
+ 0003:0ED2 _SearchWithSap
+ 0003:1188 _IpxGetHostByName
+ 0003:12F8 ??_C@_0M@KHAG@NET_ADDRESS?$AA@
+ 0003:1304 ASMIPXINITIALIZE
+ 0003:134A ASMIPXCANCELEVENT
+ 0003:1366 ASMIPXCLOSESOCKET
+ 0003:1382 ASMIPXGETINTERVALMARKER
+ 0003:1398 ASMIPXLISTENFORPACKET
+ 0003:13B4 ASMIPXOPENSOCKET
+ 0003:13DC ASMIPXRELINQUISHCONTROL
+ 0003:13F2 ASMIPXSENDPACKET
+ 0003:140E ASMSPXABORTCONNECTION
+ 0003:142A ASMSPXINITIALIZE
+ 0003:145C ASMSPXESTABLISHCONNECTION
+ 0003:1484 ASMSPXLISTENFORSEQUENCEDPACKET
+ 0003:14A0 ASMSPXSENDSEQUENCEDPACKET
+ 0003:14BE ASMSPXTERMINATECONNECTION
+ 0003:14DC ASMIPXGETMAXPACKETSIZE
+ 0003:14F2 ASMIPXDISCONNECTFROMTARGET
+ 0003:150E ASMIPXGETLOCALTARGET
+ 0003:1568 _SetupEcb
+ 0003:15B4 _FindFileServers
+ 0003:1876 _ConnectToAnyFileServer
+ 0003:1986 _NcpTransaction
+ 0003:1BD0 _DisconnectFromServer
+ 0003:1C2A _ReadPropertyValue
+ 0003:1D3C WRAPPERFORIPXINITIALIZE
+ 0003:1F16 WRAPPERFORIPXOPENSOCKET
+ 0003:1F4E WRAPPERFORIPXGETLOCALTARGET
+ 0003:1F94 WRAPPERFORIPXCLOSESOCKET
+ 0003:1FBA WRAPPERFORIPXGETINTERVALMARKER
+ 0003:1FDA WRAPPERFORIPXSENDPACKET
+ 0003:2006 WRAPPERFORIPXLISTENFORPACKET
+ 0003:2032 WRAPPERFORIPXCANCELEVENT
+ 0003:2060 WRAPPERFORIPXRELINQUISHCONTROL
+ 0003:2072 WRAPPERFORIPXGETMAXPACKETSIZE
+ 0003:2084 WRAPPERFORSPXINITIALIZE
+ 0003:20DE WRAPPERFORSPXABORTCONNECTION
+ 0003:20FE WRAPPERFORSPXSENDSEQUENCEDPACKET
+ 0003:2130 WRAPPERFORSPXLISTENFORSEQUENCEDPACKET
+ 0003:215C WRAPPERFORSPXESTABLISHCONNECTION
+ 0003:21A8 WRAPPERFORSPXTERMINATECONNECTION
+ 0003:21DA WRAPPERFORIPXSPXDEINIT
+ 0003:21F8 ??_C@_0N@OMIP@nwipxspx?4dll?$AA@
+ 0003:2206 ??_C@_0O@GLEB@IPXInitialize?$AA@
+ 0003:2214 ??_C@_0N@DBEN@IPXSPXDeinit?$AA@
+ 0003:2222 ??_C@_0O@DBFD@IPXOpenSocket?$AA@
+ 0003:2230 ??_C@_0P@MDGB@IPXCloseSocket?$AA@
+ 0003:2240 ??_C@_0BF@LJIE@IPXGetIntervalMarker?$AA@
+ 0003:2256 ??_C@_0O@KMBC@IPXSendPacket?$AA@
+ 0003:2264 ??_C@_0BD@DOAJ@IPXListenForPacket?$AA@
+ 0003:2278 ??_C@_0P@LEOG@IPXCancelEvent?$AA@
+ 0003:2288 ??_C@_0BF@HPBB@IPXRelinquishControl?$AA@
+ 0003:229E ??_C@_0BE@CLFP@IPXGetMaxPacketSize?$AA@
+ 0003:22B2 ??_C@_0BC@GPKG@IPXGetLocalTarget?$AA@
+ 0003:22C4 ??_C@_0BI@PNGJ@IPXDisconnectFromTarget?$AA@
+ 0003:22DC ??_C@_0O@FECL@SPXInitialize?$AA@
+ 0003:22EA ??_C@_0BD@LKHJ@SPXAbortConnection?$AA@
+ 0003:22FE ??_C@_0BH@CGGF@SPXSendSequencedPacket?$AA@
+ 0003:2316 ??_C@_0BM@PLEO@SPXListenForSequencedPacket?$AA@
+ 0003:2332 ??_C@_0BH@HNJJ@SPXEstablishConnection?$AA@
+ 0003:234A ??_C@_0BH@HMAG@SPXTerminateConnection?$AA@
+ 0004:0000 _TransInfo
+ 0004:0030 _PreferredServerFound
+ 0004:0032 _taskid
+ 0004:0036 _FileServerCount
+ 0004:0038 _ActiveFileServer
+ 0004:003A _HINSTANCEDLL
+ 0004:003C _DllTermination
+ 0004:0040 _spx_max_userdata_size
+ 0004:0042 _Servers
+ 0004:007E _PreferredServer
+ 0004:009E _SpxFns
+ 0004:00B6 _IpxFns
+ 0004:00E6 _nwipxspx
+ 0004:00E8 _enteripx
+ 0004:00EC _AsyncCallComplete
+ 0004:00F0 _RpcRuntimeInfo
+ 0004:00F4 _ServerCache
+
+Program entry point at 0002:0000
diff --git a/public/sdk/rpc16/win/dll/rpc16c6.sym b/public/sdk/rpc16/win/dll/rpc16c6.sym
new file mode 100644
index 000000000..f7a028b11
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c6.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/rpc16c8.map b/public/sdk/rpc16/win/dll/rpc16c8.map
new file mode 100644
index 000000000..74b5b99db
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c8.map
@@ -0,0 +1,176 @@
+
+ RPC16C8
+
+ Start Length Name Class
+ 0001:0000 00000H CLNTVNS_TEXT CODE
+ 0001:0000 00000H LTSTART_TEXT CODE
+ 0001:0000 001CBH _TEXT CODE
+ 0001:01D0 00CC4H COMDAT_SEG1 CODE
+ 0002:0000 00038H _DATA DATA
+ 0002:0038 00000H CONST CONST
+ 0002:0038 00000H _BSS BSS
+ 0002:0040 00012H c_common BSS
+
+ Origin Group
+ 0002:0 DGROUP
+
+ Address Export Alias
+
+ 0001:07B2 CLIENTCLOSE CLIENTCLOSE
+ 0001:062A CLIENTOPEN CLIENTOPEN
+ 0001:097A CLIENTRECV CLIENTRECV
+ 0001:08D2 CLIENTSEND CLIENTSEND
+ 0001:0B28 CLIENTTOWERCONSTRUCT CLIENTTOWERCONSTRUCT
+ 0001:0C66 CLIENTTOWEREXPLODE CLIENTTOWEREXPLODE
+ 0001:0274 INSERTCONN INSERTCONN
+ 0001:01D0 INSERTTASK INSERTTASK
+ 0001:02C4 REMOVECONN REMOVECONN
+ 0001:0220 REMOVETASK REMOVETASK
+ 0001:0D60 TRANSPORTLOAD TRANSPORTLOAD
+ 0001:0014 WEP WEP
+
+ Address Publics by Name
+
+ 0001:0E72 ??_C@_03GEHA@385?$AA@
+ 0001:0E62 ??_C@_07LDNL@RPC?5VNS?$AA@
+ 0001:0E6A ??_C@_07MKKD@CLNTVNS?$AA@
+ 0001:0E84 ??_C@_0BA@CFLE@VM_SOCKETNOTIFY?$AA@
+ 0001:0E76 ??_C@_0O@IPEE@ncacn_vns_spp?$AA@
+ 0001:0894 ASYNCEVENTPROC
+ 0001:07B2 CLIENTCLOSE
+ 0001:062A CLIENTOPEN
+ 0001:097A CLIENTRECV
+ 0001:08D2 CLIENTSEND
+ 0001:0B28 CLIENTTOWERCONSTRUCT
+ 0001:0C66 CLIENTTOWEREXPLODE
+ 0001:03CA CLNTVNSCLEANUP
+ 0000:0000 Imp CREATEWINDOW (USER.41)
+ 0000:0000 Imp DEFWINDOWPROC (USER.107)
+ 0000:0000 Imp DISPATCHMESSAGE (USER.114)
+ 0000:0000 Imp GETCURRENTTASK (KERNEL.36)
+ 0000:0000 Imp GETCURRENTTIME (USER.15)
+ 0000:0000 Imp GETSTOCKOBJECT (GDI.87)
+ 0001:0274 INSERTCONN
+ 0001:01D0 INSERTTASK
+ 0001:0000 LIBENTRY
+ 0000:0000 Imp LOADCURSOR (USER.173)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0001:0E5C MYWEP
+ 0000:0000 Imp PEEKMESSAGE (USER.109)
+ 0000:0000 Imp REGISTERCLASS (USER.57)
+ 0000:0000 Imp REGISTERWINDOWMESSAGE (USER.118)
+ 0001:02C4 REMOVECONN
+ 0001:0220 REMOVETASK
+ 0000:0000 Imp SHOWWINDOW (USER.42)
+ 0000:0000 Imp TRANSLATEMESSAGE (USER.113)
+ 0001:0D60 TRANSPORTLOAD
+ 0000:0000 Imp UPDATEWINDOW (USER.124)
+ 0000:0000 Imp VNSCLOSESOCKET (VNSAPI.14)
+ 0000:0000 Imp VNSDONE (VNSAPI.163)
+ 0000:0000 Imp VNSENDSTSESSION (VNSAPI.513)
+ 0000:0000 Imp VNSGETSSPPPORT (VNSAPI.417)
+ 0000:0000 Imp VNSOPENSOCKET (VNSAPI.10)
+ 0000:0000 Imp VNSSOCKETNOTIFYWINDOW (VNSAPI.20)
+ 0000:0000 Imp VNSSOCKETRECEIVE (VNSAPI.11)
+ 0000:0000 Imp VNSSOCKETSEND (VNSAPI.12)
+ 0000:0000 Imp VNSSOCKETWAIT (VNSAPI.13)
+ 0000:0000 Imp VNSSTARTSTSESSION (VNSAPI.542)
+ 0001:0014 WEP
+ 0002:0046 _AsyncCallComplete
+ 0001:004C _atoi
+ 0001:04D8 _BlockForRecv
+ 0001:0834 _CheckForCompletion
+ 0002:0034 _DllTermination
+ 0002:0042 _HeadConn
+ 0002:004E _HeadTask
+ 0002:0032 _hInstanceDLL
+ 0001:0582 _LocalBlockForSendRecv
+ 0001:0406 _MayBeCreateWindow
+ 0002:004A _RpcRuntimeInfo
+ 0001:0032 _strlen
+ 0002:0002 _TransInfo
+ 0002:0040 _VM_SocketNotify
+ 0001:031E _VnsFindConn
+ 0001:0376 _VnsFindWindowByTask
+ 0002:0000 _VNS_Verbose
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0001:0112 __catox
+ 0001:0168 __cltoasub
+ 0001:0175 __cxtoa
+ 0001:006C __fmemcpy
+ 0001:00CA __fmemset
+ 0001:0050 __itoa
+
+ Address Publics by Value
+
+ 0000:0000 Imp PEEKMESSAGE (USER.109)
+ 0000:0000 Imp VNSSOCKETNOTIFYWINDOW (VNSAPI.20)
+ 0000:0000 Imp REGISTERCLASS (USER.57)
+ 0000:0000 Imp VNSENDSTSESSION (VNSAPI.513)
+ 0000:0000 Imp REGISTERWINDOWMESSAGE (USER.118)
+ 0000:0000 Imp SHOWWINDOW (USER.42)
+ 0000:0000 Imp UPDATEWINDOW (USER.124)
+ 0000:0000 Imp DISPATCHMESSAGE (USER.114)
+ 0000:0000 Imp VNSSOCKETSEND (VNSAPI.12)
+ 0000:0000 Imp GETSTOCKOBJECT (GDI.87)
+ 0000:0000 Imp VNSGETSSPPPORT (VNSAPI.417)
+ 0000:0000 Imp LOADCURSOR (USER.173)
+ 0000:0000 Imp DEFWINDOWPROC (USER.107)
+ 0000:0000 Imp VNSSOCKETRECEIVE (VNSAPI.11)
+ 0000:0000 Imp VNSDONE (VNSAPI.163)
+ 0000:0000 Imp VNSSOCKETWAIT (VNSAPI.13)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp VNSSTARTSTSESSION (VNSAPI.542)
+ 0000:0000 Imp VNSOPENSOCKET (VNSAPI.10)
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Imp VNSCLOSESOCKET (VNSAPI.14)
+ 0000:0000 Imp CREATEWINDOW (USER.41)
+ 0000:0000 Imp GETCURRENTTIME (USER.15)
+ 0000:0000 Imp GETCURRENTTASK (KERNEL.36)
+ 0000:0000 Imp TRANSLATEMESSAGE (USER.113)
+ 0001:0000 LIBENTRY
+ 0001:0014 WEP
+ 0001:0032 _strlen
+ 0001:004C _atoi
+ 0001:0050 __itoa
+ 0001:006C __fmemcpy
+ 0001:00CA __fmemset
+ 0001:0112 __catox
+ 0001:0168 __cltoasub
+ 0001:0175 __cxtoa
+ 0001:01D0 INSERTTASK
+ 0001:0220 REMOVETASK
+ 0001:0274 INSERTCONN
+ 0001:02C4 REMOVECONN
+ 0001:031E _VnsFindConn
+ 0001:0376 _VnsFindWindowByTask
+ 0001:03CA CLNTVNSCLEANUP
+ 0001:0406 _MayBeCreateWindow
+ 0001:04D8 _BlockForRecv
+ 0001:0582 _LocalBlockForSendRecv
+ 0001:062A CLIENTOPEN
+ 0001:07B2 CLIENTCLOSE
+ 0001:0834 _CheckForCompletion
+ 0001:0894 ASYNCEVENTPROC
+ 0001:08D2 CLIENTSEND
+ 0001:097A CLIENTRECV
+ 0001:0B28 CLIENTTOWERCONSTRUCT
+ 0001:0C66 CLIENTTOWEREXPLODE
+ 0001:0D60 TRANSPORTLOAD
+ 0001:0E5C MYWEP
+ 0001:0E62 ??_C@_07LDNL@RPC?5VNS?$AA@
+ 0001:0E6A ??_C@_07MKKD@CLNTVNS?$AA@
+ 0001:0E72 ??_C@_03GEHA@385?$AA@
+ 0001:0E76 ??_C@_0O@IPEE@ncacn_vns_spp?$AA@
+ 0001:0E84 ??_C@_0BA@CFLE@VM_SOCKETNOTIFY?$AA@
+ 0002:0000 _VNS_Verbose
+ 0002:0002 _TransInfo
+ 0002:0032 _hInstanceDLL
+ 0002:0034 _DllTermination
+ 0002:0040 _VM_SocketNotify
+ 0002:0042 _HeadConn
+ 0002:0046 _AsyncCallComplete
+ 0002:004A _RpcRuntimeInfo
+ 0002:004E _HeadTask
+
+Program entry point at 0001:0000
diff --git a/public/sdk/rpc16/win/dll/rpc16c8.sym b/public/sdk/rpc16/win/dll/rpc16c8.sym
new file mode 100644
index 000000000..f7457df2a
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16c8.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/rpc16dg3.map b/public/sdk/rpc16/win/dll/rpc16dg3.map
new file mode 100644
index 000000000..056e3ffa7
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16dg3.map
@@ -0,0 +1,156 @@
+
+ RPC16DG3
+
+ Start Length Name Class
+ 0001:0000 00000H DGUDPC_TEXT CODE
+ 0001:0000 00000H LTSTART_TEXT CODE
+ 0001:0000 00233H _TEXT CODE
+ 0001:0240 00758H COMDAT_SEG1 CODE
+ 0002:0000 00056H _DATA DATA
+ 0002:0056 00000H CONST CONST
+ 0002:0056 00000H _BSS BSS
+ 0002:0060 0000AH c_common BSS
+
+ Origin Group
+ 0002:0 DGROUP
+
+ Address Export Alias
+
+ 0001:0240 ASSIGNLOCALENDPOINT ASSIGNLOCALENDPOINT
+ 0001:0870 BEGINCALL BEGINCALL
+ 0001:05E4 CLEANUP CLEANUP
+ 0001:05F2 CLIENTTOWERCONSTRUCT CLIENTTOWERCONSTRUCT
+ 0001:06F8 CLIENTTOWEREXPLODE CLIENTTOWEREXPLODE
+ 0001:0424 DEREGISTERSERVERADDRESS DEREGISTERSERVERADDRESS
+ 0001:0880 ENDCALL ENDCALL
+ 0001:0308 FREELOCALENDPOINT FREELOCALENDPOINT
+ 0001:0836 INQBUFFERLENGTH INQBUFFERLENGTH
+ 0001:07D6 QUERYCLIENTENDPOINT QUERYCLIENTENDPOINT
+ 0001:04FE RECEIVEPACKET RECEIVEPACKET
+ 0001:0328 REGISTERSERVERADDRESS REGISTERSERVERADDRESS
+ 0001:043A SENDTOSERVER SENDTOSERVER
+ 0001:0806 SETBUFFERLENGTH SETBUFFERLENGTH
+ 0001:088E TRANSPORTLOAD TRANSPORTLOAD
+ 0001:0014 WEP WEP
+
+ Address Publics by Name
+
+ 0001:097E ??_C@_03EOPG@135?$AA@
+ 0001:0990 ??_C@_07EHGE@WINSOCK?$AA@
+ 0001:0974 ??_C@_09FCOK@127?40?40?41?$AA@
+ 0001:0982 ??_C@_0N@OGGG@ncadg_ip_udp?$AA@
+ 0001:0240 ASSIGNLOCALENDPOINT
+ 0001:0870 BEGINCALL
+ 0000:0000 Imp BIND (WINSOCK.2)
+ 0001:05E4 CLEANUP
+ 0001:05F2 CLIENTTOWERCONSTRUCT
+ 0001:06F8 CLIENTTOWEREXPLODE
+ 0000:0000 Imp CLOSESOCKET (WINSOCK.3)
+ 0001:0424 DEREGISTERSERVERADDRESS
+ 0001:0880 ENDCALL
+ 0001:0308 FREELOCALENDPOINT
+ 0000:0000 Imp GETHOSTBYNAME (WINSOCK.52)
+ 0000:0000 Imp GETMODULEHANDLE (KERNEL.47)
+ 0000:0000 Imp GETSOCKOPT (WINSOCK.7)
+ 0000:0000 Imp HTONS (WINSOCK.9)
+ 0000:0000 Imp INET_ADDR (WINSOCK.10)
+ 0001:0836 INQBUFFERLENGTH
+ 0001:0000 LIBENTRY
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0001:092A MYWEP
+ 0000:0000 Imp NTOHS (WINSOCK.15)
+ 0001:07D6 QUERYCLIENTENDPOINT
+ 0001:04FE RECEIVEPACKET
+ 0000:0000 Imp RECVFROM (WINSOCK.17)
+ 0001:0328 REGISTERSERVERADDRESS
+ 0000:0000 Imp SELECT (WINSOCK.18)
+ 0000:0000 Imp SENDTO (WINSOCK.20)
+ 0001:043A SENDTOSERVER
+ 0001:0806 SETBUFFERLENGTH
+ 0000:0000 Imp SETSOCKOPT (WINSOCK.21)
+ 0000:0000 Imp SOCKET (WINSOCK.23)
+ 0001:088E TRANSPORTLOAD
+ 0001:0014 WEP
+ 0000:0000 Imp WSACLEANUP (WINSOCK.116)
+ 0000:0000 Imp WSAGETLASTERROR (WINSOCK.111)
+ 0000:0000 Imp WSASTARTUP (WINSOCK.115)
+ 0002:0062 _AsyncCallComplete
+ 0001:004C _atoi
+ 0002:0052 _DllTermination
+ 0002:0050 _HINSTANCEDLL
+ 0001:0940 _MapStatus
+ 0001:0076 _memcpy
+ 0001:00D4 _memset
+ 0002:0066 _RpcRuntimeInfo
+ 0001:0032 _strlen
+ 0002:0000 _TransInfo
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0001:017A __catox
+ 0001:01D0 __cltoasub
+ 0001:01DD __cxtoa
+ 0002:0060 __FakeErrno
+ 0001:011C __fmemcpy
+ 0001:0050 __itoa
+ 0001:006C __ultoa
+
+ Address Publics by Value
+
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp WSASTARTUP (WINSOCK.115)
+ 0000:0000 Imp INET_ADDR (WINSOCK.10)
+ 0000:0000 Imp WSAGETLASTERROR (WINSOCK.111)
+ 0000:0000 Imp NTOHS (WINSOCK.15)
+ 0000:0000 Imp SELECT (WINSOCK.18)
+ 0000:0000 Imp SETSOCKOPT (WINSOCK.21)
+ 0000:0000 Imp SENDTO (WINSOCK.20)
+ 0000:0000 Imp GETMODULEHANDLE (KERNEL.47)
+ 0000:0000 Imp RECVFROM (WINSOCK.17)
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Imp BIND (WINSOCK.2)
+ 0000:0000 Imp HTONS (WINSOCK.9)
+ 0000:0000 Imp SOCKET (WINSOCK.23)
+ 0000:0000 Imp GETSOCKOPT (WINSOCK.7)
+ 0000:0000 Imp CLOSESOCKET (WINSOCK.3)
+ 0000:0000 Imp WSACLEANUP (WINSOCK.116)
+ 0000:0000 Imp GETHOSTBYNAME (WINSOCK.52)
+ 0001:0000 LIBENTRY
+ 0001:0014 WEP
+ 0001:0032 _strlen
+ 0001:004C _atoi
+ 0001:0050 __itoa
+ 0001:006C __ultoa
+ 0001:0076 _memcpy
+ 0001:00D4 _memset
+ 0001:011C __fmemcpy
+ 0001:017A __catox
+ 0001:01D0 __cltoasub
+ 0001:01DD __cxtoa
+ 0001:0240 ASSIGNLOCALENDPOINT
+ 0001:0308 FREELOCALENDPOINT
+ 0001:0328 REGISTERSERVERADDRESS
+ 0001:0424 DEREGISTERSERVERADDRESS
+ 0001:043A SENDTOSERVER
+ 0001:04FE RECEIVEPACKET
+ 0001:05E4 CLEANUP
+ 0001:05F2 CLIENTTOWERCONSTRUCT
+ 0001:06F8 CLIENTTOWEREXPLODE
+ 0001:07D6 QUERYCLIENTENDPOINT
+ 0001:0806 SETBUFFERLENGTH
+ 0001:0836 INQBUFFERLENGTH
+ 0001:0870 BEGINCALL
+ 0001:0880 ENDCALL
+ 0001:088E TRANSPORTLOAD
+ 0001:092A MYWEP
+ 0001:0940 _MapStatus
+ 0001:0974 ??_C@_09FCOK@127?40?40?41?$AA@
+ 0001:097E ??_C@_03EOPG@135?$AA@
+ 0001:0982 ??_C@_0N@OGGG@ncadg_ip_udp?$AA@
+ 0001:0990 ??_C@_07EHGE@WINSOCK?$AA@
+ 0002:0000 _TransInfo
+ 0002:0050 _HINSTANCEDLL
+ 0002:0052 _DllTermination
+ 0002:0060 __FakeErrno
+ 0002:0062 _AsyncCallComplete
+ 0002:0066 _RpcRuntimeInfo
+
+Program entry point at 0001:0000
diff --git a/public/sdk/rpc16/win/dll/rpc16dg3.sym b/public/sdk/rpc16/win/dll/rpc16dg3.sym
new file mode 100644
index 000000000..c92dd6aef
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16dg3.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/rpc16dg6.map b/public/sdk/rpc16/win/dll/rpc16dg6.map
new file mode 100644
index 000000000..edb1ff4a5
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16dg6.map
@@ -0,0 +1,319 @@
+
+ RPC16DG6
+
+ Start Length Name Class
+ 0001:0000 00031H RPC16DG6_FIXED CODE
+ 0002:0000 00000H IPXCLNT_TEXT CODE
+ 0002:0000 00000H GETHOST_TEXT CODE
+ 0002:0000 00000H NOVELL_TEXT CODE
+ 0002:0000 00000H LTSTART_TEXT CODE
+ 0002:0000 003C5H _TEXT CODE
+ 0003:0000 02127H COMDAT_SEG1 CODE
+ 0004:0000 00064H _DATA DATA
+ 0004:0064 00000H CONST CONST
+ 0004:0064 00000H _BSS BSS
+ 0004:0070 002C8H c_common BSS
+
+ Origin Group
+ 0004:0 DGROUP
+
+ Address Export Alias
+
+ 0003:01A8 ASSIGNLOCALENDPOINT ASSIGNLOCALENDPOINT
+ 0003:00BC BEGINCALL BEGINCALL
+ 0003:0888 CLIENTTOWERCONSTRUCT CLIENTTOWERCONSTRUCT
+ 0003:097A CLIENTTOWEREXPLODE CLIENTTOWEREXPLODE
+ 0003:0412 DEREGISTERSERVERADDRESS DEREGISTERSERVERADDRESS
+ 0003:0122 ENDCALL ENDCALL
+ 0003:032E FREELOCALENDPOINT FREELOCALENDPOINT
+ 0003:0A60 QUERYCLIENTENDPOINT QUERYCLIENTENDPOINT
+ 0003:0544 RECEIVEPACKET RECEIVEPACKET
+ 0003:039C REGISTERSERVERADDRESS REGISTERSERVERADDRESS
+ 0003:0436 SENDTOSERVER SENDTOSERVER
+ 0003:0A8A TRANSPORTLOAD TRANSPORTLOAD
+ 0003:0848 TRANSPORTUNLOAD TRANSPORTUNLOAD
+ 0002:0014 WEP WEP
+
+ Address Publics by Name
+
+ 0003:0B1E ??_C@_05LKBG@34280?$AA@
+ 0003:0B14 ??_C@_08MFIO@NWIPXSPX?$AA@
+ 0003:0B24 ??_C@_09OHNL@ncadg_ipx?$AA@
+ 0003:2078 ??_C@_0BC@GPKG@IPXGetLocalTarget?$AA@
+ 0003:202A ??_C@_0BD@DOAJ@IPXListenForPacket?$AA@
+ 0003:20B0 ??_C@_0BD@LKHJ@SPXAbortConnection?$AA@
+ 0003:2064 ??_C@_0BE@CLFP@IPXGetMaxPacketSize?$AA@
+ 0003:204E ??_C@_0BF@HPBB@IPXRelinquishControl?$AA@
+ 0003:2006 ??_C@_0BF@LJIE@IPXGetIntervalMarker?$AA@
+ 0003:20C4 ??_C@_0BH@CGGF@SPXSendSequencedPacket?$AA@
+ 0003:2110 ??_C@_0BH@HMAG@SPXTerminateConnection?$AA@
+ 0003:20F8 ??_C@_0BH@HNJJ@SPXEstablishConnection?$AA@
+ 0003:208A ??_C@_0BI@PNGJ@IPXDisconnectFromTarget?$AA@
+ 0003:20DC ??_C@_0BM@PLEO@SPXListenForSequencedPacket?$AA@
+ 0003:11E8 ??_C@_0M@KHAG@NET_ADDRESS?$AA@
+ 0003:1FDA ??_C@_0N@DBEN@IPXSPXDeinit?$AA@
+ 0003:1FBE ??_C@_0N@OMIP@nwipxspx?4dll?$AA@
+ 0003:1FE8 ??_C@_0O@DBFD@IPXOpenSocket?$AA@
+ 0003:20A2 ??_C@_0O@FECL@SPXInitialize?$AA@
+ 0003:1FCC ??_C@_0O@GLEB@IPXInitialize?$AA@
+ 0003:201C ??_C@_0O@KMBC@IPXSendPacket?$AA@
+ 0003:203E ??_C@_0P@LEOG@IPXCancelEvent?$AA@
+ 0003:1FF6 ??_C@_0P@MDGB@IPXCloseSocket?$AA@
+ 0003:123A ASMIPXCANCELEVENT
+ 0003:1256 ASMIPXCLOSESOCKET
+ 0003:13E2 ASMIPXDISCONNECTFROMTARGET
+ 0000:0000 Unr ASMIPXGETINTERNETWORKADDRESS
+ 0003:1272 ASMIPXGETINTERVALMARKER
+ 0003:13FE ASMIPXGETLOCALTARGET
+ 0003:13CC ASMIPXGETMAXPACKETSIZE
+ 0003:11F4 ASMIPXINITIALIZE
+ 0003:1288 ASMIPXLISTENFORPACKET
+ 0003:12A4 ASMIPXOPENSOCKET
+ 0003:12CC ASMIPXRELINQUISHCONTROL
+ 0003:12E2 ASMIPXSENDPACKET
+ 0003:12FE ASMSPXABORTCONNECTION
+ 0003:134C ASMSPXESTABLISHCONNECTION
+ 0003:131A ASMSPXINITIALIZE
+ 0003:1374 ASMSPXLISTENFORSEQUENCEDPACKET
+ 0003:1390 ASMSPXSENDSEQUENCEDPACKET
+ 0003:13AE ASMSPXTERMINATECONNECTION
+ 0003:01A8 ASSIGNLOCALENDPOINT
+ 0003:00BC BEGINCALL
+ 0003:0888 CLIENTTOWERCONSTRUCT
+ 0003:097A CLIENTTOWEREXPLODE
+ 0003:0412 DEREGISTERSERVERADDRESS
+ 0003:0122 ENDCALL
+ 0000:0000 Imp FREELIBRARY (KERNEL.96)
+ 0003:032E FREELOCALENDPOINT
+ 0000:0000 Imp GETMODULEHANDLE (KERNEL.47)
+ 0000:0000 Imp GETPROCADDRESS (KERNEL.50)
+ 0002:0000 LIBENTRY
+ 0000:0000 Imp LOADLIBRARY (KERNEL.95)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0003:0A60 QUERYCLIENTENDPOINT
+ 0003:0544 RECEIVEPACKET
+ 0003:039C REGISTERSERVERADDRESS
+ 0003:0436 SENDTOSERVER
+ 0000:0000 Imp SETERRORMODE (KERNEL.107)
+ 0003:0A8A TRANSPORTLOAD
+ 0003:0848 TRANSPORTUNLOAD
+ 0002:0014 WEP
+ 0003:1F4E WRAPPERFORIPXCANCELEVENT
+ 0003:1EB0 WRAPPERFORIPXCLOSESOCKET
+ 0003:1E3E WRAPPERFORIPXDISCONNECTFROMTARGET
+ 0003:1ED6 WRAPPERFORIPXGETINTERVALMARKER
+ 0003:1E6A WRAPPERFORIPXGETLOCALTARGET
+ 0003:1F8E WRAPPERFORIPXGETMAXPACKETSIZE
+ 0003:1C2C WRAPPERFORIPXINITIALIZE
+ 0003:1F22 WRAPPERFORIPXLISTENFORPACKET
+ 0003:1E06 WRAPPERFORIPXOPENSOCKET
+ 0003:1F7C WRAPPERFORIPXRELINQUISHCONTROL
+ 0003:1EF6 WRAPPERFORIPXSENDPACKET
+ 0003:1FA0 WRAPPERFORIPXSPXDEINIT
+ 0000:0000 Unr WRAPPERFORSPXABORTCONNECTION
+ 0000:0000 Unr WRAPPERFORSPXESTABLISHCONNECTION
+ 0000:0000 Unr WRAPPERFORSPXINITIALIZE
+ 0000:0000 Unr WRAPPERFORSPXLISTENFORSEQUENCEDPACKET
+ 0000:0000 Unr WRAPPERFORSPXSENDSEQUENCEDPACKET
+ 0000:0000 Unr WRAPPERFORSPXTERMINATECONNECTION
+ 0004:005C _ActiveFileServer
+ 0003:0BCA _AddServerToCache
+ 0004:011C _AsyncCallComplete
+ 0002:004C _atoi
+ 0003:0000 _ByteSwapShort
+ 0000:0000 Unr _CachedServerContacted
+ 0000:0000 Unr _CachedServerNotContacted
+ 0003:0B2E _chtob
+ 0003:0092 _ClientCleanup
+ 0003:1766 _ConnectToAnyFileServer
+ 0004:0002 _consecutive_timeout_count
+ 0003:1AC0 _DisconnectFromServer
+ 0004:0060 _DllTermination
+ 0003:0BB2 _DosGetTickCount
+ 0004:0118 _enteripx
+ 0004:0122 _ep_list
+ 0004:005A _FileServerCount
+ 0003:14A4 _FindFileServers
+ 0003:0CA6 _FindServerInCache
+ 0004:005E _HINSTANCEDLL
+ 0004:00E6 _IpxFns
+ 0003:1078 _IpxGetHostByName
+ 0004:0136 _max_num_send
+ 0002:005A _memcpy
+ 0002:00B8 _memset
+ 0003:1876 _NcpTransaction
+ 0004:0070 _num_endpoints
+ 0004:0116 _nwipxspx
+ 0004:0120 _packet_size
+ 0001:0000 _post_ecb
+ 0004:00AE _PreferredServer
+ 0004:0054 _PreferredServerFound
+ 0003:1B1A _ReadPropertyValue
+ 0004:0132 _RpcRuntimeInfo
+ 0003:0CE6 _SearchBindery
+ 0003:0DC2 _SearchWithSap
+ 0004:0000 _Sequence
+ 0004:0138 _ServerCache
+ 0004:0072 _Servers
+ 0003:1458 _SetupEcb
+ 0004:00CE _SpxFns
+ 0002:0032 _strlen
+ 0004:0056 _taskid
+ 0004:0004 _TransInfo
+ 0002:0100 __aFlmul
+ 0002:0100 __aFulmul
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0002:030C __catox
+ 0002:0362 __cltoasub
+ 0002:036F __cxtoa
+ 0002:0132 __fmemcmp
+ 0002:018E __fmemcpy
+ 0002:026C __fmemset
+ 0002:0206 __fstrcmp
+ 0002:0230 __fstrcpy
+ 0002:01EC __fstrlen
+ 0002:02B4 __fstrnicmp
+ 0002:0050 __ultoa
+
+ Address Publics by Value
+
+ 0000:0000 Imp SETERRORMODE (KERNEL.107)
+ 0000:0000 Unr WRAPPERFORSPXINITIALIZE
+ 0000:0000 Imp GETPROCADDRESS (KERNEL.50)
+ 0000:0000 Imp GETMODULEHANDLE (KERNEL.47)
+ 0000:0000 Imp LOADLIBRARY (KERNEL.95)
+ 0000:0000 Unr WRAPPERFORSPXLISTENFORSEQUENCEDPACKET
+ 0000:0000 Unr _CachedServerNotContacted
+ 0000:0000 Imp FREELIBRARY (KERNEL.96)
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Unr WRAPPERFORSPXESTABLISHCONNECTION
+ 0000:0000 Unr WRAPPERFORSPXABORTCONNECTION
+ 0000:0000 Unr WRAPPERFORSPXSENDSEQUENCEDPACKET
+ 0000:0000 Unr ASMIPXGETINTERNETWORKADDRESS
+ 0000:0000 Unr _CachedServerContacted
+ 0000:0000 Unr WRAPPERFORSPXTERMINATECONNECTION
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0001:0000 _post_ecb
+ 0002:0000 LIBENTRY
+ 0002:0014 WEP
+ 0002:0032 _strlen
+ 0002:004C _atoi
+ 0002:0050 __ultoa
+ 0002:005A _memcpy
+ 0002:00B8 _memset
+ 0002:0100 __aFlmul
+ 0002:0100 __aFulmul
+ 0002:0132 __fmemcmp
+ 0002:018E __fmemcpy
+ 0002:01EC __fstrlen
+ 0002:0206 __fstrcmp
+ 0002:0230 __fstrcpy
+ 0002:026C __fmemset
+ 0002:02B4 __fstrnicmp
+ 0002:030C __catox
+ 0002:0362 __cltoasub
+ 0002:036F __cxtoa
+ 0003:0000 _ByteSwapShort
+ 0003:0092 _ClientCleanup
+ 0003:00BC BEGINCALL
+ 0003:0122 ENDCALL
+ 0003:01A8 ASSIGNLOCALENDPOINT
+ 0003:032E FREELOCALENDPOINT
+ 0003:039C REGISTERSERVERADDRESS
+ 0003:0412 DEREGISTERSERVERADDRESS
+ 0003:0436 SENDTOSERVER
+ 0003:0544 RECEIVEPACKET
+ 0003:0848 TRANSPORTUNLOAD
+ 0003:0888 CLIENTTOWERCONSTRUCT
+ 0003:097A CLIENTTOWEREXPLODE
+ 0003:0A60 QUERYCLIENTENDPOINT
+ 0003:0A8A TRANSPORTLOAD
+ 0003:0B14 ??_C@_08MFIO@NWIPXSPX?$AA@
+ 0003:0B1E ??_C@_05LKBG@34280?$AA@
+ 0003:0B24 ??_C@_09OHNL@ncadg_ipx?$AA@
+ 0003:0B2E _chtob
+ 0003:0BB2 _DosGetTickCount
+ 0003:0BCA _AddServerToCache
+ 0003:0CA6 _FindServerInCache
+ 0003:0CE6 _SearchBindery
+ 0003:0DC2 _SearchWithSap
+ 0003:1078 _IpxGetHostByName
+ 0003:11E8 ??_C@_0M@KHAG@NET_ADDRESS?$AA@
+ 0003:11F4 ASMIPXINITIALIZE
+ 0003:123A ASMIPXCANCELEVENT
+ 0003:1256 ASMIPXCLOSESOCKET
+ 0003:1272 ASMIPXGETINTERVALMARKER
+ 0003:1288 ASMIPXLISTENFORPACKET
+ 0003:12A4 ASMIPXOPENSOCKET
+ 0003:12CC ASMIPXRELINQUISHCONTROL
+ 0003:12E2 ASMIPXSENDPACKET
+ 0003:12FE ASMSPXABORTCONNECTION
+ 0003:131A ASMSPXINITIALIZE
+ 0003:134C ASMSPXESTABLISHCONNECTION
+ 0003:1374 ASMSPXLISTENFORSEQUENCEDPACKET
+ 0003:1390 ASMSPXSENDSEQUENCEDPACKET
+ 0003:13AE ASMSPXTERMINATECONNECTION
+ 0003:13CC ASMIPXGETMAXPACKETSIZE
+ 0003:13E2 ASMIPXDISCONNECTFROMTARGET
+ 0003:13FE ASMIPXGETLOCALTARGET
+ 0003:1458 _SetupEcb
+ 0003:14A4 _FindFileServers
+ 0003:1766 _ConnectToAnyFileServer
+ 0003:1876 _NcpTransaction
+ 0003:1AC0 _DisconnectFromServer
+ 0003:1B1A _ReadPropertyValue
+ 0003:1C2C WRAPPERFORIPXINITIALIZE
+ 0003:1E06 WRAPPERFORIPXOPENSOCKET
+ 0003:1E3E WRAPPERFORIPXDISCONNECTFROMTARGET
+ 0003:1E6A WRAPPERFORIPXGETLOCALTARGET
+ 0003:1EB0 WRAPPERFORIPXCLOSESOCKET
+ 0003:1ED6 WRAPPERFORIPXGETINTERVALMARKER
+ 0003:1EF6 WRAPPERFORIPXSENDPACKET
+ 0003:1F22 WRAPPERFORIPXLISTENFORPACKET
+ 0003:1F4E WRAPPERFORIPXCANCELEVENT
+ 0003:1F7C WRAPPERFORIPXRELINQUISHCONTROL
+ 0003:1F8E WRAPPERFORIPXGETMAXPACKETSIZE
+ 0003:1FA0 WRAPPERFORIPXSPXDEINIT
+ 0003:1FBE ??_C@_0N@OMIP@nwipxspx?4dll?$AA@
+ 0003:1FCC ??_C@_0O@GLEB@IPXInitialize?$AA@
+ 0003:1FDA ??_C@_0N@DBEN@IPXSPXDeinit?$AA@
+ 0003:1FE8 ??_C@_0O@DBFD@IPXOpenSocket?$AA@
+ 0003:1FF6 ??_C@_0P@MDGB@IPXCloseSocket?$AA@
+ 0003:2006 ??_C@_0BF@LJIE@IPXGetIntervalMarker?$AA@
+ 0003:201C ??_C@_0O@KMBC@IPXSendPacket?$AA@
+ 0003:202A ??_C@_0BD@DOAJ@IPXListenForPacket?$AA@
+ 0003:203E ??_C@_0P@LEOG@IPXCancelEvent?$AA@
+ 0003:204E ??_C@_0BF@HPBB@IPXRelinquishControl?$AA@
+ 0003:2064 ??_C@_0BE@CLFP@IPXGetMaxPacketSize?$AA@
+ 0003:2078 ??_C@_0BC@GPKG@IPXGetLocalTarget?$AA@
+ 0003:208A ??_C@_0BI@PNGJ@IPXDisconnectFromTarget?$AA@
+ 0003:20A2 ??_C@_0O@FECL@SPXInitialize?$AA@
+ 0003:20B0 ??_C@_0BD@LKHJ@SPXAbortConnection?$AA@
+ 0003:20C4 ??_C@_0BH@CGGF@SPXSendSequencedPacket?$AA@
+ 0003:20DC ??_C@_0BM@PLEO@SPXListenForSequencedPacket?$AA@
+ 0003:20F8 ??_C@_0BH@HNJJ@SPXEstablishConnection?$AA@
+ 0003:2110 ??_C@_0BH@HMAG@SPXTerminateConnection?$AA@
+ 0004:0000 _Sequence
+ 0004:0002 _consecutive_timeout_count
+ 0004:0004 _TransInfo
+ 0004:0054 _PreferredServerFound
+ 0004:0056 _taskid
+ 0004:005A _FileServerCount
+ 0004:005C _ActiveFileServer
+ 0004:005E _HINSTANCEDLL
+ 0004:0060 _DllTermination
+ 0004:0070 _num_endpoints
+ 0004:0072 _Servers
+ 0004:00AE _PreferredServer
+ 0004:00CE _SpxFns
+ 0004:00E6 _IpxFns
+ 0004:0116 _nwipxspx
+ 0004:0118 _enteripx
+ 0004:011C _AsyncCallComplete
+ 0004:0120 _packet_size
+ 0004:0122 _ep_list
+ 0004:0132 _RpcRuntimeInfo
+ 0004:0136 _max_num_send
+ 0004:0138 _ServerCache
+
+Program entry point at 0002:0000
diff --git a/public/sdk/rpc16/win/dll/rpc16dg6.sym b/public/sdk/rpc16/win/dll/rpc16dg6.sym
new file mode 100644
index 000000000..c70da9ede
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpc16dg6.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/rpcns1.map b/public/sdk/rpc16/win/dll/rpcns1.map
new file mode 100644
index 000000000..b95eb2f6d
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpcns1.map
@@ -0,0 +1,437 @@
+
+ RPCNS1
+
+ Start Length Name Class
+ 0001:0000 00000H NSICLNT_TEXT CODE
+ 0001:0000 00000H NSIMGMT_TEXT CODE
+ 0001:0000 00000H NSICLT_C_TEXT CODE
+ 0001:0000 00000H NSIMGM_C_TEXT CODE
+ 0001:0000 00000H CBIND_TEXT CODE
+ 0001:0000 00000H UTIL_TEXT CODE
+ 0001:0000 00000H MEM_TEXT CODE
+ 0001:0000 00000H AUTOHAND_TEXT CODE
+ 0001:0000 00000H START_TEXT CODE
+ 0001:0000 0001CH LOAD CODE
+ 0001:001C 001C0H _TEXT CODE
+ 0001:01E0 04819H COMDAT_SEG1 CODE
+ 0002:0000 00426H _DATA DATA
+ 0002:0426 00004H CONST CONST
+ 0002:042A 00032H _BSS BSS
+ 0002:0460 00000H c_common BSS
+
+ Origin Group
+ 0002:0 DGROUP
+
+ Address Export Alias
+
+ 0001:1120 ?RNMBUW@@ZCGKPEGPEU_RPC_IF_ID@@KPEU_UUID_VECTOR@@@Z ?RNMBUW@@ZCGKPEGPEU_RPC_IF_ID@@KPEU_UUID_VECTOR@@@Z
+ 0001:055A ?RpcNsBindingImportBeginW@@ZCGKPEGPEXPEU_GUID@@PEPEX@Z ?RpcNsBindingImportBeginW@@ZCGKPEGPEXPEU_GUID@@PEPEX@Z
+ 0001:01E0 ?RpcNsBindingLookupBeginW@@ZCGKPEGPEXPEU_GUID@@KPEPEX@Z ?RpcNsBindingLookupBeginW@@ZCGKPEGPEXPEU_GUID@@KPEPEX@Z
+ 0001:108C ?RpcNsEntryExpandNameW@@ZCGKPEGPEPEG@Z ?RpcNsEntryExpandNameW@@ZCGKPEGPEPEG@Z
+ 0001:0E3A ?RpcNsEntryObjectInqBeginW@@ZCGKPEGPEPEX@Z ?RpcNsEntryObjectInqBeginW@@ZCGKPEGPEPEX@Z
+ 0001:0AB4 ?RpcNsGroupDeleteW@@ZCGKPEG@Z ?RpcNsGroupDeleteW@@ZCGKPEG@Z
+ 0001:0B42 ?RpcNsGroupMbrAddW@@ZCGKPEGK0@Z ?RpcNsGroupMbrAddW@@ZCGKPEGK0@Z
+ 0001:0CA6 ?RpcNsGroupMbrInqBeginW@@ZCGKPEGKPEPEX@Z ?RpcNsGroupMbrInqBeginW@@ZCGKPEGKPEPEX@Z
+ 0001:0D64 ?RpcNsGroupMbrInqNextW@@ZCGPEXPEPEG@Z ?RpcNsGroupMbrInqNextW@@ZCGPEXPEPEG@Z
+ 0001:0BF4 ?RpcNsGroupMbrRemoveW@@ZCGKPEGK0@Z ?RpcNsGroupMbrRemoveW@@ZCGKPEGK0@Z
+ 0001:11C4 ?RpcNsMgmtEntryCreateW@@ZCGKPEG@Z ?RpcNsMgmtEntryCreateW@@ZCGKPEG@Z
+ 0001:1252 ?RpcNsMgmtEntryDeleteW@@ZCGKPEG@Z ?RpcNsMgmtEntryDeleteW@@ZCGKPEG@Z
+ 0001:12E0 ?RpcNsMgmtEntryInqIfIdsW@@ZCGKPEGPEPEURPC_IF_ID_VECTOR@@@Z ?RpcNsMgmtEntryInqIfIdsW@@ZCGKPEGPEPEURPC_IF_ID_VECTOR@@@Z
+ 0001:1420 ?RpcNsProfileDeleteW@@ZCGKPEG@Z ?RpcNsProfileDeleteW@@ZCGKPEG@Z
+ 0001:14AE ?RpcNsProfileEltAddW@@ZCGKPEGPEU_RPC_IF_ID@@K0K0@Z ?RpcNsProfileEltAddW@@ZCGKPEGPEU_RPC_IF_ID@@K0K0@Z
+ 0001:162A ?RpcNsProfileEltInqBeginW@@ZCGKPEGKPEU_RPC_IF_ID@@KK0PEPEX@Z ?RpcNsProfileEltInqBeginW@@ZCGKPEGKPEU_RPC_IF_ID@@KK0PEPEX@Z
+ 0001:16F4 ?RpcNsProfileEltInqNextW@@ZCGPEXPEU_RPC_IF_ID@@PEPEGPEK2@Z ?RpcNsProfileEltInqNextW@@ZCGPEXPEU_RPC_IF_ID@@PEPEGPEK2@Z
+ 0001:1572 ?RpcNsProfileEltRemoveW@@ZCGKPEGPEU_RPC_IF_ID@@K0@Z ?RpcNsProfileEltRemoveW@@ZCGKPEGPEU_RPC_IF_ID@@K0@Z
+ 0001:43D4 I_GETDEFAULTENTRYSYNTAX I_GETDEFAULTENTRYSYNTAX
+ 0001:4308 I_NSCLIENTBINDDONE I_NSCLIENTBINDDONE
+ 0001:3F8C I_NSCLIENTBINDSEARCH I_NSCLIENTBINDSEARCH
+ 0001:47EE I_RPCNSGETBUFFER I_RPCNSGETBUFFER
+ 0001:49BC I_RPCNSRAISEEXCEPTION I_RPCNSRAISEEXCEPTION
+ 0001:4902 I_RPCNSSENDRECEIVE I_RPCNSSENDRECEIVE
+ 0001:49E2 I_RPCREBINDBUFFER I_RPCREBINDBUFFER
+ 0001:1384 RPCIFIDVECTORFREE RPCIFIDVECTORFREE
+ 0001:0A28 RPCNSBINDINGIMPORTBEGINA RPCNSBINDINGIMPORTBEGINA
+ 0001:067E RPCNSBINDINGIMPORTDONE RPCNSBINDINGIMPORTDONE
+ 0001:05E4 RPCNSBINDINGIMPORTNEXT RPCNSBINDINGIMPORTNEXT
+ 0001:09A8 RPCNSBINDINGLOOKUPBEGINA RPCNSBINDINGLOOKUPBEGINA
+ 0001:04DC RPCNSBINDINGLOOKUPDONE RPCNSBINDINGLOOKUPDONE
+ 0001:0304 RPCNSBINDINGLOOKUPNEXT RPCNSBINDINGLOOKUPNEXT
+ 0001:08CA RPCNSBINDINGSELECT RPCNSBINDINGSELECT
+ 0001:1AAC RPCNSENTRYEXPANDNAMEA RPCNSENTRYEXPANDNAMEA
+ 0001:1A3E RPCNSENTRYOBJECTINQBEGINA RPCNSENTRYOBJECTINQBEGINA
+ 0001:0F42 RPCNSENTRYOBJECTINQDONE RPCNSENTRYOBJECTINQDONE
+ 0001:0EDA RPCNSENTRYOBJECTINQNEXT RPCNSENTRYOBJECTINQNEXT
+ 0001:17D0 RPCNSGROUPDELETEA RPCNSGROUPDELETEA
+ 0001:1838 RPCNSGROUPMBRADDA RPCNSGROUPMBRADDA
+ 0001:1990 RPCNSGROUPMBRINQBEGINA RPCNSGROUPMBRINQBEGINA
+ 0001:0DD8 RPCNSGROUPMBRINQDONE RPCNSGROUPMBRINQDONE
+ 0001:1A04 RPCNSGROUPMBRINQNEXTA RPCNSGROUPMBRINQNEXTA
+ 0001:18E4 RPCNSGROUPMBRREMOVEA RPCNSGROUPMBRREMOVEA
+ 0001:1B34 RPCNSMGMTBINDINGUNEXPORTA RPCNSMGMTBINDINGUNEXPORTA
+ 0001:1BAE RPCNSMGMTENTRYCREATEA RPCNSMGMTENTRYCREATEA
+ 0001:1C16 RPCNSMGMTENTRYDELETEA RPCNSMGMTENTRYDELETEA
+ 0001:1C7E RPCNSMGMTENTRYINQIFIDSA RPCNSMGMTENTRYINQIFIDSA
+ 0001:06EA RPCNSMGMTHANDLESETEXPAGE RPCNSMGMTHANDLESETEXPAGE
+ 0001:0FA4 RPCNSMGMTINQEXPAGE RPCNSMGMTINQEXPAGE
+ 0001:1018 RPCNSMGMTSETEXPAGE RPCNSMGMTSETEXPAGE
+ 0001:1CEC RPCNSPROFILEDELETEA RPCNSPROFILEDELETEA
+ 0001:1D54 RPCNSPROFILEELTADDA RPCNSPROFILEELTADDA
+ 0001:1EFC RPCNSPROFILEELTINQBEGINA RPCNSPROFILEELTINQBEGINA
+ 0001:176E RPCNSPROFILEELTINQDONE RPCNSPROFILEELTINQDONE
+ 0001:1FC0 RPCNSPROFILEELTINQNEXTA RPCNSPROFILEELTINQNEXTA
+ 0001:1E4A RPCNSPROFILEELTREMOVEA RPCNSPROFILEELTREMOVEA
+ 0001:0012 WEP WEP
+
+ Address Publics by Name
+
+ 0001:45C2 ??0WIDE_STRING@@REC@PEE@Z
+ 0001:46A6 ??2@ZAPEXI@Z
+ 0001:46B4 ??3@ZAXPEX@Z
+ 0001:0AA2 ??_C@_07DFNK@ncalrpc?$AA@
+ 0001:0AAA ??_C@_08DNBJ@ncacn_np?$AA@
+ 0001:457C ??_C@_08GAHO@Endpoint?$AA@
+ 0001:4562 ??_C@_08OBCM@Protocol?$AA@
+ 0001:452C ??_C@_0BB@EHCE@?2mailslot?2Resp_c?$AA@
+ 0001:4518 ??_C@_0BE@JFMA@?2?2?$CK?2mailslot?2Resp_s?$AA@
+ 0001:453E ??_C@_0CD@LHG@Software?2Microsoft?2Rpc?2NameServi@
+ 0001:47BE ??_C@_0N@NHGH@DefaultEntry?$AA@
+ 0001:47B0 ??_C@_0O@JCMN@DefaultSyntax?$AA@
+ 0001:4586 ??_C@_0O@MCEM@?2pipe?2locator?$AA@
+ 0001:456C ??_C@_0P@NOEJ@NetworkAddress?$AA@
+ 0002:03F0 ?LocalMS@@3PEDE
+ 0002:03EC ?MailslotName@@3PEDE
+ 0002:043A ?NsiStringBinding@@3PEEE
+ 0001:0896 ?RandomNumber@@ZAHXZ
+ 0001:1120 ?RNMBUW@@ZCGKPEGPEU_RPC_IF_ID@@KPEU_UUID_VECTOR@@@Z
+ 0001:055A ?RpcNsBindingImportBeginW@@ZCGKPEGPEXPEU_GUID@@PEPEX@Z
+ 0001:01E0 ?RpcNsBindingLookupBeginW@@ZCGKPEGPEXPEU_GUID@@KPEPEX@Z
+ 0001:108C ?RpcNsEntryExpandNameW@@ZCGKPEGPEPEG@Z
+ 0001:0E3A ?RpcNsEntryObjectInqBeginW@@ZCGKPEGPEPEX@Z
+ 0001:0AB4 ?RpcNsGroupDeleteW@@ZCGKPEG@Z
+ 0001:0B42 ?RpcNsGroupMbrAddW@@ZCGKPEGK0@Z
+ 0001:0CA6 ?RpcNsGroupMbrInqBeginW@@ZCGKPEGKPEPEX@Z
+ 0001:0D64 ?RpcNsGroupMbrInqNextW@@ZCGPEXPEPEG@Z
+ 0001:0BF4 ?RpcNsGroupMbrRemoveW@@ZCGKPEGK0@Z
+ 0001:11C4 ?RpcNsMgmtEntryCreateW@@ZCGKPEG@Z
+ 0001:1252 ?RpcNsMgmtEntryDeleteW@@ZCGKPEG@Z
+ 0001:12E0 ?RpcNsMgmtEntryInqIfIdsW@@ZCGKPEGPEPEURPC_IF_ID_VECTOR@@@Z
+ 0001:1420 ?RpcNsProfileDeleteW@@ZCGKPEG@Z
+ 0001:14AE ?RpcNsProfileEltAddW@@ZCGKPEGPEU_RPC_IF_ID@@K0K0@Z
+ 0001:162A ?RpcNsProfileEltInqBeginW@@ZCGKPEGKPEU_RPC_IF_ID@@KK0PEPEX@Z
+ 0001:16F4 ?RpcNsProfileEltInqNextW@@ZCGPEXPEU_RPC_IF_ID@@PEPEGPEK2@Z
+ 0001:1572 ?RpcNsProfileEltRemoveW@@ZCGKPEGPEU_RPC_IF_ID@@K0@Z
+ 0000:0000 Imp DOSDELETEMAILSLOT (NETAPI.DOSDELETEMAILSLOT)
+ 0000:0000 Imp DOSMAKEMAILSLOT (NETAPI.DOSMAKEMAILSLOT)
+ 0000:0000 Imp DOSREADMAILSLOT (NETAPI.DOSREADMAILSLOT)
+ 0000:0000 Imp DOSWRITEMAILSLOT (NETAPI.DOSWRITEMAILSLOT)
+ 0001:43D4 I_GETDEFAULTENTRYSYNTAX
+ 0001:4308 I_NSCLIENTBINDDONE
+ 0001:3F8C I_NSCLIENTBINDSEARCH
+ 0000:0000 Imp I_RPCALLOCATE (RPCRT1.50)
+ 0000:0000 Imp I_RPCFREE (RPCRT1.51)
+ 0000:0000 Imp I_RPCFREEBUFFER (RPCRT1.301)
+ 0000:0000 Imp I_RPCGETBUFFER (RPCRT1.300)
+ 0000:0000 Imp I_RPCNSBINDINGSETENTRYNAME (RPCRT1.303)
+ 0001:47EE I_RPCNSGETBUFFER
+ 0001:49BC I_RPCNSRAISEEXCEPTION
+ 0001:4902 I_RPCNSSENDRECEIVE
+ 0001:49E2 I_RPCREBINDBUFFER
+ 0000:0000 Imp I_RPCSENDRECEIVE (RPCRT1.302)
+ 0001:0000 LIBENTRY
+ 0000:0000 Imp LOCALALLOC (KERNEL.5)
+ 0000:0000 Imp LOCALFREE (KERNEL.7)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0001:47CC MIDL_USER_ALLOCATE
+ 0001:47DC MIDL_USER_FREE
+ 0000:0000 Imp NDRCCONTEXTBINDING (RPCRT1.307)
+ 0000:0000 Imp NDRCLIENTCONTEXTMARSHALL (RPCRT1.438)
+ 0000:0000 Imp NDRCLIENTCONTEXTUNMARSHALL (RPCRT1.458)
+ 0000:0000 Imp NDRCLIENTINITIALIZENEW (RPCRT1.525)
+ 0000:0000 Imp NDRCONVERT (RPCRT1.509)
+ 0000:0000 Imp NDRFREEBUFFER (RPCRT1.533)
+ 0000:0000 Imp NDRGETBUFFER (RPCRT1.529)
+ 0000:0000 Imp NDRPOINTERBUFFERSIZE (RPCRT1.461)
+ 0000:0000 Imp NDRPOINTERMARSHALL (RPCRT1.422)
+ 0000:0000 Imp NDRPOINTERUNMARSHALL (RPCRT1.442)
+ 0000:0000 Imp NDRSENDRECEIVE (RPCRT1.531)
+ 0000:0000 Imp NDRSIMPLESTRUCTBUFFERSIZE (RPCRT1.462)
+ 0000:0000 Imp NDRSIMPLESTRUCTMARSHALL (RPCRT1.423)
+ 0000:0000 Imp NETGETDCNAME (NETAPI.NETGETDCNAME)
+ 0000:0000 Imp NETSERVERENUM2 (NETAPI.NETSERVERENUM2)
+ 0000:0000 Imp NETWKSTAGETINFO (NETAPI.NETWKSTAGETINFO)
+ 0000:0000 Imp RPCBINDINGFREE (RPCRT1.201)
+ 0000:0000 Imp RPCBINDINGFROMSTRINGBINDING (RPCRT1.202)
+ 0000:0000 Imp RPCBINDINGTOSTRINGBINDING (RPCRT1.205)
+ 0000:0000 Imp RPCBINDINGVECTORFREE (RPCRT1.206)
+ 0001:1384 RPCIFIDVECTORFREE
+ 0000:0000 Imp RPCLEAVEEXCEPTION (RPCRT1.21)
+ 0001:0A28 RPCNSBINDINGIMPORTBEGINA
+ 0001:067E RPCNSBINDINGIMPORTDONE
+ 0001:05E4 RPCNSBINDINGIMPORTNEXT
+ 0001:09A8 RPCNSBINDINGLOOKUPBEGINA
+ 0001:04DC RPCNSBINDINGLOOKUPDONE
+ 0001:0304 RPCNSBINDINGLOOKUPNEXT
+ 0001:08CA RPCNSBINDINGSELECT
+ 0001:1AAC RPCNSENTRYEXPANDNAMEA
+ 0001:1A3E RPCNSENTRYOBJECTINQBEGINA
+ 0001:0F42 RPCNSENTRYOBJECTINQDONE
+ 0001:0EDA RPCNSENTRYOBJECTINQNEXT
+ 0001:17D0 RPCNSGROUPDELETEA
+ 0001:1838 RPCNSGROUPMBRADDA
+ 0001:1990 RPCNSGROUPMBRINQBEGINA
+ 0001:0DD8 RPCNSGROUPMBRINQDONE
+ 0001:1A04 RPCNSGROUPMBRINQNEXTA
+ 0001:18E4 RPCNSGROUPMBRREMOVEA
+ 0001:1B34 RPCNSMGMTBINDINGUNEXPORTA
+ 0001:1BAE RPCNSMGMTENTRYCREATEA
+ 0001:1C16 RPCNSMGMTENTRYDELETEA
+ 0001:1C7E RPCNSMGMTENTRYINQIFIDSA
+ 0001:06EA RPCNSMGMTHANDLESETEXPAGE
+ 0001:0FA4 RPCNSMGMTINQEXPAGE
+ 0001:1018 RPCNSMGMTSETEXPAGE
+ 0001:1CEC RPCNSPROFILEDELETEA
+ 0001:1D54 RPCNSPROFILEELTADDA
+ 0001:1EFC RPCNSPROFILEELTINQBEGINA
+ 0001:176E RPCNSPROFILEELTINQDONE
+ 0001:1FC0 RPCNSPROFILEELTINQNEXTA
+ 0001:1E4A RPCNSPROFILEELTREMOVEA
+ 0000:0000 Imp RPCRAISEEXCEPTION (RPCRT1.19)
+ 0000:0000 Imp RPCREGCLOSEKEY (RPCRT1.222)
+ 0000:0000 Imp RPCREGOPENKEY (RPCRT1.220)
+ 0000:0000 Imp RPCREGQUERYVALUE (RPCRT1.224)
+ 0000:0000 Imp RPCREGSETVALUE (RPCRT1.223)
+ 0000:0000 Imp RPCSETEXCEPTION (RPCRT1.20)
+ 0000:0000 Imp RPCSTRINGBINDINGCOMPOSE (RPCRT1.207)
+ 0000:0000 Imp RPCSTRINGBINDINGPARSE (RPCRT1.208)
+ 0000:0000 Imp RPCSTRINGFREE (RPCRT1.209)
+ 0001:0012 WEP
+ 0001:009E _atoi
+ 0001:43E8 _BroadcastAQuery
+ 0000:0000 Unr _CallExportInit
+ 0001:46C4 _CopyString
+ 0002:0434 _DefaultName
+ 0002:03E8 _DefaultSyntax
+ 0002:0438 _fSyntaxDefaultsLoaded
+ 0001:4706 _GetDefaultEntrys
+ 0002:0424 _HINSTANCEDLL
+ 0001:001C _int3
+ 0001:4594 _MapException
+ 0001:00A2 _memset
+ 0002:0432 _NsiClntBinding
+ 0002:004C _NsiC_ClientIfHandle
+ 0002:01CE _NsiM_ClientIfHandle
+ 0002:03F4 _NsiToRpcStatus
+ 0001:2026 _nsi_binding_lookup_begin
+ 0001:21DA _nsi_binding_lookup_done
+ 0001:22BC _nsi_binding_lookup_next
+ 0001:3760 _nsi_entry_expand_name
+ 0001:343C _nsi_entry_object_inq_begin
+ 0001:367E _nsi_entry_object_inq_done
+ 0001:354C _nsi_entry_object_inq_next
+ 0001:24D6 _nsi_group_delete
+ 0001:25D2 _nsi_group_mbr_add
+ 0001:287A _nsi_group_mbr_inq_begin
+ 0001:2ABA _nsi_group_mbr_inq_done
+ 0001:29B8 _nsi_group_mbr_inq_next
+ 0001:2726 _nsi_group_mbr_remove
+ 0001:388C _nsi_mgmt_binding_unexport
+ 0001:3B06 _nsi_mgmt_entry_create
+ 0001:3A0A _nsi_mgmt_entry_delete
+ 0001:3C02 _nsi_mgmt_entry_inq_if_ids
+ 0001:23EE _nsi_mgmt_handle_set_exp_age
+ 0001:3D2E _nsi_mgmt_inq_exp_age
+ 0001:3DEE _nsi_mgmt_inq_set_age
+ 0001:2B9C _nsi_profile_delete
+ 0001:2C98 _nsi_profile_elt_add
+ 0001:2FEA _nsi_profile_elt_inq_begin
+ 0001:335A _nsi_profile_elt_inq_done
+ 0001:31CA _nsi_profile_elt_inq_next
+ 0001:2E6C _nsi_profile_elt_remove
+ 0001:3EA6 _RegGetString
+ 0001:005A _strcmp
+ 0001:001E _strcpy
+ 0001:0084 _strlen
+ 0001:465E _UnicodeToAscii
+ 0001:00EA __aFlmul
+ 0001:00EA __aFulmul
+ 0001:011C __aFulrem
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0001:0186 __catox
+
+ Address Publics by Value
+
+ 0000:0000 Imp LOCALALLOC (KERNEL.5)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp NDRSENDRECEIVE (RPCRT1.531)
+ 0000:0000 Imp NDRSIMPLESTRUCTMARSHALL (RPCRT1.423)
+ 0000:0000 Imp LOCALFREE (KERNEL.7)
+ 0000:0000 Imp RPCREGCLOSEKEY (RPCRT1.222)
+ 0000:0000 Imp NETGETDCNAME (NETAPI.NETGETDCNAME)
+ 0000:0000 Imp RPCBINDINGTOSTRINGBINDING (RPCRT1.205)
+ 0000:0000 Imp DOSWRITEMAILSLOT (NETAPI.DOSWRITEMAILSLOT)
+ 0000:0000 Imp I_RPCGETBUFFER (RPCRT1.300)
+ 0000:0000 Imp RPCBINDINGVECTORFREE (RPCRT1.206)
+ 0000:0000 Imp I_RPCFREEBUFFER (RPCRT1.301)
+ 0000:0000 Imp RPCSETEXCEPTION (RPCRT1.20)
+ 0000:0000 Imp RPCSTRINGBINDINGPARSE (RPCRT1.208)
+ 0000:0000 Unr _CallExportInit
+ 0000:0000 Imp I_RPCSENDRECEIVE (RPCRT1.302)
+ 0000:0000 Imp NDRCLIENTCONTEXTMARSHALL (RPCRT1.438)
+ 0000:0000 Imp RPCREGOPENKEY (RPCRT1.220)
+ 0000:0000 Imp I_RPCNSBINDINGSETENTRYNAME (RPCRT1.303)
+ 0000:0000 Imp DOSREADMAILSLOT (NETAPI.DOSREADMAILSLOT)
+ 0000:0000 Imp NDRFREEBUFFER (RPCRT1.533)
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Imp RPCREGSETVALUE (RPCRT1.223)
+ 0000:0000 Imp NETWKSTAGETINFO (NETAPI.NETWKSTAGETINFO)
+ 0000:0000 Imp RPCSTRINGBINDINGCOMPOSE (RPCRT1.207)
+ 0000:0000 Imp NDRCCONTEXTBINDING (RPCRT1.307)
+ 0000:0000 Imp DOSMAKEMAILSLOT (NETAPI.DOSMAKEMAILSLOT)
+ 0000:0000 Imp NDRCLIENTINITIALIZENEW (RPCRT1.525)
+ 0000:0000 Imp NDRPOINTERUNMARSHALL (RPCRT1.442)
+ 0000:0000 Imp RPCBINDINGFREE (RPCRT1.201)
+ 0000:0000 Imp NDRCONVERT (RPCRT1.509)
+ 0000:0000 Imp RPCREGQUERYVALUE (RPCRT1.224)
+ 0000:0000 Imp I_RPCFREE (RPCRT1.51)
+ 0000:0000 Imp NDRSIMPLESTRUCTBUFFERSIZE (RPCRT1.462)
+ 0000:0000 Imp RPCLEAVEEXCEPTION (RPCRT1.21)
+ 0000:0000 Imp NDRCLIENTCONTEXTUNMARSHALL (RPCRT1.458)
+ 0000:0000 Imp I_RPCALLOCATE (RPCRT1.50)
+ 0000:0000 Imp NDRPOINTERMARSHALL (RPCRT1.422)
+ 0000:0000 Imp NDRGETBUFFER (RPCRT1.529)
+ 0000:0000 Imp NDRPOINTERBUFFERSIZE (RPCRT1.461)
+ 0000:0000 Imp NETSERVERENUM2 (NETAPI.NETSERVERENUM2)
+ 0000:0000 Imp DOSDELETEMAILSLOT (NETAPI.DOSDELETEMAILSLOT)
+ 0000:0000 Imp RPCRAISEEXCEPTION (RPCRT1.19)
+ 0000:0000 Imp RPCBINDINGFROMSTRINGBINDING (RPCRT1.202)
+ 0000:0000 Imp RPCSTRINGFREE (RPCRT1.209)
+ 0001:0000 LIBENTRY
+ 0001:0012 WEP
+ 0001:001C _int3
+ 0001:001E _strcpy
+ 0001:005A _strcmp
+ 0001:0084 _strlen
+ 0001:009E _atoi
+ 0001:00A2 _memset
+ 0001:00EA __aFlmul
+ 0001:00EA __aFulmul
+ 0001:011C __aFulrem
+ 0001:0186 __catox
+ 0001:01E0 ?RpcNsBindingLookupBeginW@@ZCGKPEGPEXPEU_GUID@@KPEPEX@Z
+ 0001:0304 RPCNSBINDINGLOOKUPNEXT
+ 0001:04DC RPCNSBINDINGLOOKUPDONE
+ 0001:055A ?RpcNsBindingImportBeginW@@ZCGKPEGPEXPEU_GUID@@PEPEX@Z
+ 0001:05E4 RPCNSBINDINGIMPORTNEXT
+ 0001:067E RPCNSBINDINGIMPORTDONE
+ 0001:06EA RPCNSMGMTHANDLESETEXPAGE
+ 0001:0896 ?RandomNumber@@ZAHXZ
+ 0001:08CA RPCNSBINDINGSELECT
+ 0001:09A8 RPCNSBINDINGLOOKUPBEGINA
+ 0001:0A28 RPCNSBINDINGIMPORTBEGINA
+ 0001:0AA2 ??_C@_07DFNK@ncalrpc?$AA@
+ 0001:0AAA ??_C@_08DNBJ@ncacn_np?$AA@
+ 0001:0AB4 ?RpcNsGroupDeleteW@@ZCGKPEG@Z
+ 0001:0B42 ?RpcNsGroupMbrAddW@@ZCGKPEGK0@Z
+ 0001:0BF4 ?RpcNsGroupMbrRemoveW@@ZCGKPEGK0@Z
+ 0001:0CA6 ?RpcNsGroupMbrInqBeginW@@ZCGKPEGKPEPEX@Z
+ 0001:0D64 ?RpcNsGroupMbrInqNextW@@ZCGPEXPEPEG@Z
+ 0001:0DD8 RPCNSGROUPMBRINQDONE
+ 0001:0E3A ?RpcNsEntryObjectInqBeginW@@ZCGKPEGPEPEX@Z
+ 0001:0EDA RPCNSENTRYOBJECTINQNEXT
+ 0001:0F42 RPCNSENTRYOBJECTINQDONE
+ 0001:0FA4 RPCNSMGMTINQEXPAGE
+ 0001:1018 RPCNSMGMTSETEXPAGE
+ 0001:108C ?RpcNsEntryExpandNameW@@ZCGKPEGPEPEG@Z
+ 0001:1120 ?RNMBUW@@ZCGKPEGPEU_RPC_IF_ID@@KPEU_UUID_VECTOR@@@Z
+ 0001:11C4 ?RpcNsMgmtEntryCreateW@@ZCGKPEG@Z
+ 0001:1252 ?RpcNsMgmtEntryDeleteW@@ZCGKPEG@Z
+ 0001:12E0 ?RpcNsMgmtEntryInqIfIdsW@@ZCGKPEGPEPEURPC_IF_ID_VECTOR@@@Z
+ 0001:1384 RPCIFIDVECTORFREE
+ 0001:1420 ?RpcNsProfileDeleteW@@ZCGKPEG@Z
+ 0001:14AE ?RpcNsProfileEltAddW@@ZCGKPEGPEU_RPC_IF_ID@@K0K0@Z
+ 0001:1572 ?RpcNsProfileEltRemoveW@@ZCGKPEGPEU_RPC_IF_ID@@K0@Z
+ 0001:162A ?RpcNsProfileEltInqBeginW@@ZCGKPEGKPEU_RPC_IF_ID@@KK0PEPEX@Z
+ 0001:16F4 ?RpcNsProfileEltInqNextW@@ZCGPEXPEU_RPC_IF_ID@@PEPEGPEK2@Z
+ 0001:176E RPCNSPROFILEELTINQDONE
+ 0001:17D0 RPCNSGROUPDELETEA
+ 0001:1838 RPCNSGROUPMBRADDA
+ 0001:18E4 RPCNSGROUPMBRREMOVEA
+ 0001:1990 RPCNSGROUPMBRINQBEGINA
+ 0001:1A04 RPCNSGROUPMBRINQNEXTA
+ 0001:1A3E RPCNSENTRYOBJECTINQBEGINA
+ 0001:1AAC RPCNSENTRYEXPANDNAMEA
+ 0001:1B34 RPCNSMGMTBINDINGUNEXPORTA
+ 0001:1BAE RPCNSMGMTENTRYCREATEA
+ 0001:1C16 RPCNSMGMTENTRYDELETEA
+ 0001:1C7E RPCNSMGMTENTRYINQIFIDSA
+ 0001:1CEC RPCNSPROFILEDELETEA
+ 0001:1D54 RPCNSPROFILEELTADDA
+ 0001:1E4A RPCNSPROFILEELTREMOVEA
+ 0001:1EFC RPCNSPROFILEELTINQBEGINA
+ 0001:1FC0 RPCNSPROFILEELTINQNEXTA
+ 0001:2026 _nsi_binding_lookup_begin
+ 0001:21DA _nsi_binding_lookup_done
+ 0001:22BC _nsi_binding_lookup_next
+ 0001:23EE _nsi_mgmt_handle_set_exp_age
+ 0001:24D6 _nsi_group_delete
+ 0001:25D2 _nsi_group_mbr_add
+ 0001:2726 _nsi_group_mbr_remove
+ 0001:287A _nsi_group_mbr_inq_begin
+ 0001:29B8 _nsi_group_mbr_inq_next
+ 0001:2ABA _nsi_group_mbr_inq_done
+ 0001:2B9C _nsi_profile_delete
+ 0001:2C98 _nsi_profile_elt_add
+ 0001:2E6C _nsi_profile_elt_remove
+ 0001:2FEA _nsi_profile_elt_inq_begin
+ 0001:31CA _nsi_profile_elt_inq_next
+ 0001:335A _nsi_profile_elt_inq_done
+ 0001:343C _nsi_entry_object_inq_begin
+ 0001:354C _nsi_entry_object_inq_next
+ 0001:367E _nsi_entry_object_inq_done
+ 0001:3760 _nsi_entry_expand_name
+ 0001:388C _nsi_mgmt_binding_unexport
+ 0001:3A0A _nsi_mgmt_entry_delete
+ 0001:3B06 _nsi_mgmt_entry_create
+ 0001:3C02 _nsi_mgmt_entry_inq_if_ids
+ 0001:3D2E _nsi_mgmt_inq_exp_age
+ 0001:3DEE _nsi_mgmt_inq_set_age
+ 0001:3EA6 _RegGetString
+ 0001:3F8C I_NSCLIENTBINDSEARCH
+ 0001:4308 I_NSCLIENTBINDDONE
+ 0001:43D4 I_GETDEFAULTENTRYSYNTAX
+ 0001:43E8 _BroadcastAQuery
+ 0001:4518 ??_C@_0BE@JFMA@?2?2?$CK?2mailslot?2Resp_s?$AA@
+ 0001:452C ??_C@_0BB@EHCE@?2mailslot?2Resp_c?$AA@
+ 0001:453E ??_C@_0CD@LHG@Software?2Microsoft?2Rpc?2NameServi@
+ 0001:4562 ??_C@_08OBCM@Protocol?$AA@
+ 0001:456C ??_C@_0P@NOEJ@NetworkAddress?$AA@
+ 0001:457C ??_C@_08GAHO@Endpoint?$AA@
+ 0001:4586 ??_C@_0O@MCEM@?2pipe?2locator?$AA@
+ 0001:4594 _MapException
+ 0001:45C2 ??0WIDE_STRING@@REC@PEE@Z
+ 0001:465E _UnicodeToAscii
+ 0001:46A6 ??2@ZAPEXI@Z
+ 0001:46B4 ??3@ZAXPEX@Z
+ 0001:46C4 _CopyString
+ 0001:4706 _GetDefaultEntrys
+ 0001:47B0 ??_C@_0O@JCMN@DefaultSyntax?$AA@
+ 0001:47BE ??_C@_0N@NHGH@DefaultEntry?$AA@
+ 0001:47CC MIDL_USER_ALLOCATE
+ 0001:47DC MIDL_USER_FREE
+ 0001:47EE I_RPCNSGETBUFFER
+ 0001:4902 I_RPCNSSENDRECEIVE
+ 0001:49BC I_RPCNSRAISEEXCEPTION
+ 0001:49E2 I_RPCREBINDBUFFER
+ 0002:004C _NsiC_ClientIfHandle
+ 0002:01CE _NsiM_ClientIfHandle
+ 0002:03E8 _DefaultSyntax
+ 0002:03EC ?MailslotName@@3PEDE
+ 0002:03F0 ?LocalMS@@3PEDE
+ 0002:03F4 _NsiToRpcStatus
+ 0002:0424 _HINSTANCEDLL
+ 0002:0432 _NsiClntBinding
+ 0002:0434 _DefaultName
+ 0002:0438 _fSyntaxDefaultsLoaded
+ 0002:043A ?NsiStringBinding@@3PEEE
+
+Program entry point at 0001:0000
diff --git a/public/sdk/rpc16/win/dll/rpcns1.sym b/public/sdk/rpc16/win/dll/rpcns1.sym
new file mode 100644
index 000000000..ee6f106b1
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpcns1.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/rpcrt1.map b/public/sdk/rpc16/win/dll/rpcrt1.map
new file mode 100644
index 000000000..b5e1b29b9
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpcrt1.map
@@ -0,0 +1,2840 @@
+
+ RpcRt1
+
+ Start Length Name Class
+ 0001:0000 00054H WEP_TEXT CODE
+ 0002:0000 00000H BINDING_TEXT CODE
+ 0002:0000 00000H BITSET_TEXT CODE
+ 0002:0000 00000H BUFAPI_TEXT CODE
+ 0002:0000 00000H CLNTAPIP_TEXT CODE
+ 0002:0000 00000H CONV_S_TEXT CODE
+ 0002:0000 00000H DCEBIND_TEXT CODE
+ 0002:0000 00000H DCECCLNT_TEXT CODE
+ 0002:0000 00A5FH MISC_SEG CODE
+ 0003:0000 00000H DCECMISC_TEXT CODE
+ 0003:0000 00000H DCESTRNG_TEXT CODE
+ 0003:0000 00000H DCEUUID_TEXT CODE
+ 0003:0000 00000H DGCLNT_TEXT CODE
+ 0003:0000 00000H DGPKT_TEXT CODE
+ 0003:0000 00000H DLLMGMT_TEXT CODE
+ 0003:0000 00000H DTHREADS_TEXT CODE
+ 0003:0000 00000H EPCLNT_TEXT CODE
+ 0003:0000 00000H EPMP_C_TEXT CODE
+ 0003:0000 00087H EXCEPT86_TEXT CODE
+ 0004:0000 00000H HANDLE_TEXT CODE
+ 0004:0000 00000H MEMORY_TEXT CODE
+ 0004:0000 00000H MISCWIN_TEXT CODE
+ 0004:0000 00000H MSGAPI_TEXT CODE
+ 0004:0000 00000H OSFCLNT_TEXT CODE
+ 0004:0000 00000H OSFPCKET_TEXT CODE
+ 0004:0000 00000H RPCUUID_TEXT CODE
+ 0004:0000 00000H SDICT_TEXT CODE
+ 0004:0000 00000H SECCLNT_TEXT CODE
+ 0004:0000 00000H TOWER_TEXT CODE
+ 0004:0000 00000H TRANCLNT_TEXT CODE
+ 0004:0000 00000H ULONG64_TEXT CODE
+ 0004:0000 00000H UTIL_TEXT CODE
+ 0004:0000 00000H UUID16_TEXT CODE
+ 0004:0000 00000H WDATEXIT_TEXT CODE
+ 0004:0000 00000H WINEXCPT_TEXT CODE
+ 0004:0000 00000H WINUTIL_TEXT CODE
+ 0004:0000 00000H WINYIELD_TEXT CODE
+ 0004:0000 03E19H _TEXT CODE
+ 0005:0000 00000H CLOSE_TEXT CODE
+ 0005:0000 00000H CREATE_TEXT CODE
+ 0005:0000 00000H OPEN_TEXT CODE
+ 0005:0000 00000H SETVAL_TEXT CODE
+ 0005:0000 00000H QUERYVAL_TEXT CODE
+ 0005:0000 00000H GLOBALS_TEXT CODE
+ 0005:0000 00000H REGUTIL_TEXT CODE
+ 0005:0000 00000H CCONTEXT_TEXT CODE
+ 0005:0000 00000H CHARCONV_TEXT CODE
+ 0005:0000 00018H HELPX86_TEXT CODE
+ 0006:0000 00000H FLOATC_TEXT CODE
+ 0006:0000 00000H DATACONV_TEXT CODE
+ 0006:0000 00000H INTCONV_TEXT CODE
+ 0006:0000 00000H MRSHL_TEXT CODE
+ 0006:0000 007C3H NDR20_9 CODE
+ 0007:0000 00000H MEMSIZE_TEXT CODE
+ 0007:0000 021EAH NDR20_10 CODE
+ 0008:0000 00000H UNMRSHL_TEXT CODE
+ 0008:0000 037A8H NDR20_4 CODE
+ 0009:0000 00000H ENDIAN_TEXT CODE
+ 0009:0000 027A0H NDR_1 CODE
+ 000A:0000 00000H AUXILARY_TEXT CODE
+ 000A:0000 00000H SH_TEXT CODE
+ 000A:0000 00000H FREE_TEXT CODE
+ 000A:0000 00000H BUFSIZE_TEXT CODE
+ 000A:0000 00000H CLTCALL_TEXT CODE
+ 000A:0000 00000H RPCSSM_TEXT CODE
+ 000A:0000 00000H FULLPTR_TEXT CODE
+ 000A:0000 00000H PICKLE_TEXT CODE
+ 000A:0000 00000H CVTF_TEXT CODE
+ 000A:0000 00000H CVTG_TEXT CODE
+ 000A:0000 00000H GLOBAL_TEXT CODE
+ 000A:0000 00000H MRSHLP_TEXT CODE
+ 000A:0000 00000H UNMRSHLP_TEXT CODE
+ 000A:0000 00000H HNDL_TEXT CODE
+ 000A:0000 00000H MISC_TEXT CODE
+ 000A:0000 00000H SDICT2_TEXT CODE
+ 000A:0000 00000H CVTGLO_TEXT CODE
+ 000A:0000 0FC1EH COMDAT_SEG1 CODE
+ 000B:0000 0C2C7H COMDAT_SEG2 CODE
+ 000C:0000 0009CH RPC_FIXED FIXED_CODE
+ 000D:0000 00008H RPCSSM5_DATA FAR_DATA
+ 000E:0000 00010H NULL BEGDATA
+ 000E:0010 01690H _DATA DATA
+ 000E:16A0 00000H XIFCB DATA
+ 000E:16A0 00004H XIFU DATA
+ 000E:16A4 00000H XIFL DATA
+ 000E:16A4 00000H XIFM DATA
+ 000E:16A4 00000H XIFCE DATA
+ 000E:16A4 0000EH CDATA DATA
+ 000E:16B2 00000H XIFB DATA
+ 000E:16B2 00000H XIF DATA
+ 000E:16B2 00000H XIFE DATA
+ 000E:16B2 00000H XIB DATA
+ 000E:16B2 00004H XI DATA
+ 000E:16B6 00000H XIE DATA
+ 000E:16B6 00000H XPB DATA
+ 000E:16B6 00000H XP DATA
+ 000E:16B6 00000H XPE DATA
+ 000E:16B6 00000H XCB DATA
+ 000E:16B6 00000H XC DATA
+ 000E:16B6 00000H XCE DATA
+ 000E:16B6 00000H XCFB DATA
+ 000E:16B6 00000H XCFCRT DATA
+ 000E:16B6 00000H XCF DATA
+ 000E:16B6 00000H XCFE DATA
+ 000E:16B6 00000H DBDATA DATA
+ 000E:16B6 00098H IOB DATA
+ 000E:174E 00000H IOBX DATA
+ 000E:174E 00008H IOBE DATA
+ 000E:1756 00098H IOB2 DATA
+ 000E:17EE 00000H IOB2X DATA
+ 000E:17EE 00008H IOB2E DATA
+ 000E:17F6 0007CH CONST CONST
+ 000E:1872 00008H HDR MSG
+ 000E:187A 0037CH MSG MSG
+ 000E:1BF6 00002H PAD MSG
+ 000E:1BF8 00001H EPAD MSG
+ 000E:1BFA 00FACH _BSS BSS
+ 000E:2BA6 00000H XOB BSS
+ 000E:2BA6 00000H XO BSS
+ 000E:2BA6 00000H XOE BSS
+ 000E:2BA6 00000H XOFB BSS
+ 000E:2BA6 00000H XOF BSS
+ 000E:2BA6 00000H XOFE BSS
+ 000E:2BB0 00119H c_common BSS
+
+ Origin Group
+ 000E:0 DGROUP
+
+ Address Export Alias
+
+ 000B:A5F4 ?NdrMesTypeFree@@ZCXPAXPFU_MIDL_STUB_DESC@@PFEPEX@Z ?NdrMesTypeFree@@ZCXPAXPFU_MIDL_STUB_DESC@@PFEPEX@Z
+ 000A:F7D0 ?NdrpLongByteSwap@@ZCXPEX0@Z ?NdrpLongByteSwap@@ZCXPEX0@Z
+ 000A:7010 BINDTOEPMAPPER BINDTOEPMAPPER
+ 000A:F73E CHAR_ARRAY_FROM_NDR CHAR_ARRAY_FROM_NDR
+ 000A:F6FA CHAR_FROM_NDR CHAR_FROM_NDR
+ 000A:1458 CONV_CONV_ARE_YOU_THERE CONV_CONV_ARE_YOU_THERE
+ 000A:11C0 CONV_CONV_WHO_ARE_YOU CONV_CONV_WHO_ARE_YOU
+ 000A:12F2 CONV_CONV_WHO_ARE_YOU2 CONV_CONV_WHO_ARE_YOU2
+ 000A:1570 CONV_CONV_WHO_ARE_YOU_AUTH CONV_CONV_WHO_ARE_YOU_AUTH
+ 000B:0000 DATA_FROM_NDR DATA_FROM_NDR
+ 000B:0768 DATA_INTO_NDR DATA_INTO_NDR
+ 000B:0E68 DATA_SIZE_NDR DATA_SIZE_NDR
+ 000A:FAF6 DOUBLE_ARRAY_FROM_NDR DOUBLE_ARRAY_FROM_NDR
+ 000A:FA0A DOUBLE_FROM_NDR DOUBLE_FROM_NDR
+ 000B:1AD0 ENUM_FROM_NDR ENUM_FROM_NDR
+ 000A:70E6 EPFREELOOKUPHANDLE EPFREELOOKUPHANDLE
+ 000A:6F96 EPGETEPMAPPERENDPOINT EPGETEPMAPPERENDPOINT
+ 000A:6B8E EPRESOLVEENDPOINT EPRESOLVEENDPOINT
+ 0002:03E8 EXPLODEPREDEFINEDTOWERS EXPLODEPREDEFINEDTOWERS
+ 000A:F8F4 FLOAT_ARRAY_FROM_NDR FLOAT_ARRAY_FROM_NDR
+ 000A:F83E FLOAT_FROM_NDR FLOAT_FROM_NDR
+ 000A:7C98 GARBAGECOLLECTIONTIMER GARBAGECOLLECTIONTIMER
+ 0002:0362 GETNWSTYLENAME GETNWSTYLENAME
+ 000B:1C78 HYPER_ARRAY_FROM_NDR HYPER_ARRAY_FROM_NDR
+ 000B:1B42 HYPER_FROM_NDR HYPER_FROM_NDR
+ 000B:1DDA HYPER_FROM_NDR_TEMP HYPER_FROM_NDR_TEMP
+ 000B:8F00 I_NDRMESMESSAGEINIT I_NDRMESMESSAGEINIT
+ 000A:1144 I_RPCALLOCATE I_RPCALLOCATE
+ 000A:189A I_RPCBINDINGCOPY I_RPCBINDINGCOPY
+ 000A:1D70 I_RPCBINDINGINQTRANSPORTTYPE I_RPCBINDINGINQTRANSPORTTYPE
+ 000A:115A I_RPCFREE I_RPCFREE
+ 000A:10CE I_RPCFREEBUFFER I_RPCFREEBUFFER
+ 000A:10F4 I_RPCFREEPIPEBUFFER I_RPCFREEPIPEBUFFER
+ 000A:106C I_RPCGETBUFFER I_RPCGETBUFFER
+ 000A:1E6E I_RPCIFINQTRANSFERSYNTAXES I_RPCIFINQTRANSFERSYNTAXES
+ 000A:1B16 I_RPCNSBINDINGSETENTRYNAME I_RPCNSBINDINGSETENTRYNAME
+ 000A:1174 I_RPCPAUSEEXECUTION I_RPCPAUSEEXECUTION
+ 000A:111A I_RPCREALLOCPIPEBUFFER I_RPCREALLOCPIPEBUFFER
+ 000A:7D76 I_RPCRECEIVE I_RPCRECEIVE
+ 000A:7D52 I_RPCSEND I_RPCSEND
+ 000A:7D2E I_RPCSENDRECEIVE I_RPCSENDRECEIVE
+ 000A:119C I_RPCTIMECHARGE I_RPCTIMECHARGE
+ 000A:11AA I_RPCTIMEGET I_RPCTIMEGET
+ 000A:1190 I_RPCTIMERESET I_RPCTIMERESET
+ 000A:CD94 I_RPCTRANSCLIENTMAXFRAG I_RPCTRANSCLIENTMAXFRAG
+ 000A:CD12 I_RPCTRANSCLIENTREALLOCBUFFER I_RPCTRANSCLIENTREALLOCBUFFER
+ 000A:CDAA I_RPCTRANSPINGSERVER I_RPCTRANSPINGSERVER
+ 000A:E6FE I_RPCWINASYNCCALLBEGIN I_RPCWINASYNCCALLBEGIN
+ 000C:0000 I_RPCWINASYNCCALLCOMPLETE I_RPCWINASYNCCALLCOMPLETE
+ 000A:EB04 I_RPCWINASYNCCALLEND I_RPCWINASYNCCALLEND
+ 000A:E794 I_RPCWINASYNCCALLWAIT I_RPCWINASYNCCALLWAIT
+ 000A:EB72 I_RPCWINISTASKYIELDING I_RPCWINISTASKYIELDING
+ 000A:E68A I_RPCWINSETTASKYIELDING I_RPCWINSETTASKYIELDING
+ 000A:E434 I_RPCYIELDDIALOGFUNCTION I_RPCYIELDDIALOGFUNCTION
+ 000A:21DE I_UUIDCREATE I_UUIDCREATE
+ 000B:1926 LONG_ARRAY_FROM_NDR LONG_ARRAY_FROM_NDR
+ 000B:1878 LONG_FROM_NDR LONG_FROM_NDR
+ 000B:1A26 LONG_FROM_NDR_TEMP LONG_FROM_NDR_TEMP
+ 000B:92CE MESBUFFERHANDLERESET MESBUFFERHANDLERESET
+ 000B:922C MESDECODEBUFFERHANDLECREATE MESDECODEBUFFERHANDLECREATE
+ 000B:8FA0 MESDECODEINCREMENTALHANDLECREATE MESDECODEINCREMENTALHANDLECREATE
+ 000B:91B0 MESENCODEDYNBUFFERHANDLECREATE MESENCODEDYNBUFFERHANDLECREATE
+ 000B:9126 MESENCODEFIXEDBUFFERHANDLECREATE MESENCODEFIXEDBUFFERHANDLECREATE
+ 000B:8F32 MESENCODEINCREMENTALHANDLECREATE MESENCODEINCREMENTALHANDLECREATE
+ 000B:8EE2 MESHANDLEFREE MESHANDLEFREE
+ 000B:900C MESINCREMENTALHANDLERESET MESINCREMENTALHANDLERESET
+ 000B:9462 MESINQPROCENCODINGID MESINQPROCENCODINGID
+ 000A:71A4 MIDL_USER_ALLOCATE MIDL_USER_ALLOCATE
+ 000A:71BA MIDL_USER_FREE MIDL_USER_FREE
+ 000A:F6C4 MIDL_WCHAR_STRCPY MIDL_WCHAR_STRCPY
+ 000A:F698 MIDL_WCHAR_STRLEN MIDL_WCHAR_STRLEN
+ 000B:4782 NDRALLOCATE NDRALLOCATE
+ 000B:6E58 NDRBYTECOUNTPOINTERBUFFERSIZE NDRBYTECOUNTPOINTERBUFFERSIZE
+ 000B:5450 NDRBYTECOUNTPOINTERFREE NDRBYTECOUNTPOINTERFREE
+ 000B:32CE NDRBYTECOUNTPOINTERMARSHALL NDRBYTECOUNTPOINTERMARSHALL
+ 0008:21E8 NDRBYTECOUNTPOINTERUNMARSHALL NDRBYTECOUNTPOINTERUNMARSHALL
+ 000A:F378 NDRCCONTEXTBINDING NDRCCONTEXTBINDING
+ 000A:F3B4 NDRCCONTEXTMARSHALL NDRCCONTEXTMARSHALL
+ 000A:F4F6 NDRCCONTEXTUNMARSHALL NDRCCONTEXTUNMARSHALL
+ 000B:7C2C NDRCLEAROUTPARAMETERS NDRCLEAROUTPARAMETERS
+ 000B:362A NDRCLIENTCONTEXTMARSHALL NDRCLIENTCONTEXTMARSHALL
+ 0008:28F2 NDRCLIENTCONTEXTUNMARSHALL NDRCLIENTCONTEXTUNMARSHALL
+ 000B:4056 NDRCLIENTINITIALIZE NDRCLIENTINITIALIZE
+ 000B:3FCC NDRCLIENTINITIALIZENEW NDRCLIENTINITIALIZENEW
+ 000B:63CA NDRCOMPLEXARRAYBUFFERSIZE NDRCOMPLEXARRAYBUFFERSIZE
+ 000B:4F6A NDRCOMPLEXARRAYFREE NDRCOMPLEXARRAYFREE
+ 000B:29A4 NDRCOMPLEXARRAYMARSHALL NDRCOMPLEXARRAYMARSHALL
+ 0007:10CA NDRCOMPLEXARRAYMEMORYSIZE NDRCOMPLEXARRAYMEMORYSIZE
+ 0008:16C0 NDRCOMPLEXARRAYUNMARSHALL NDRCOMPLEXARRAYUNMARSHALL
+ 000B:5B78 NDRCOMPLEXSTRUCTBUFFERSIZE NDRCOMPLEXSTRUCTBUFFERSIZE
+ 000B:4B3A NDRCOMPLEXSTRUCTFREE NDRCOMPLEXSTRUCTFREE
+ 0006:01F0 NDRCOMPLEXSTRUCTMARSHALL NDRCOMPLEXSTRUCTMARSHALL
+ 0007:0638 NDRCOMPLEXSTRUCTMEMORYSIZE NDRCOMPLEXSTRUCTMEMORYSIZE
+ 0008:04AC NDRCOMPLEXSTRUCTUNMARSHALL NDRCOMPLEXSTRUCTUNMARSHALL
+ 000B:5FF4 NDRCONFORMANTARRAYBUFFERSIZE NDRCONFORMANTARRAYBUFFERSIZE
+ 000B:4E02 NDRCONFORMANTARRAYFREE NDRCONFORMANTARRAYFREE
+ 000B:2590 NDRCONFORMANTARRAYMARSHALL NDRCONFORMANTARRAYMARSHALL
+ 0007:0B58 NDRCONFORMANTARRAYMEMORYSIZE NDRCONFORMANTARRAYMEMORYSIZE
+ 0008:0F0A NDRCONFORMANTARRAYUNMARSHALL NDRCONFORMANTARRAYUNMARSHALL
+ 000B:69A8 NDRCONFORMANTSTRINGBUFFERSIZE NDRCONFORMANTSTRINGBUFFERSIZE
+ 0006:074A NDRCONFORMANTSTRINGMARSHALL NDRCONFORMANTSTRINGMARSHALL
+ 0007:1834 NDRCONFORMANTSTRINGMEMORYSIZE NDRCONFORMANTSTRINGMEMORYSIZE
+ 0008:0AE0 NDRCONFORMANTSTRINGUNMARSHALL NDRCONFORMANTSTRINGUNMARSHALL
+ 000B:594C NDRCONFORMANTSTRUCTBUFFERSIZE NDRCONFORMANTSTRUCTBUFFERSIZE
+ 000B:49FC NDRCONFORMANTSTRUCTFREE NDRCONFORMANTSTRUCTFREE
+ 000B:2262 NDRCONFORMANTSTRUCTMARSHALL NDRCONFORMANTSTRUCTMARSHALL
+ 0007:02E6 NDRCONFORMANTSTRUCTMEMORYSIZE NDRCONFORMANTSTRUCTMEMORYSIZE
+ 000B:3DF4 NDRCONFORMANTSTRUCTUNMARSHALL NDRCONFORMANTSTRUCTUNMARSHALL
+ 000B:60EE NDRCONFORMANTVARYINGARRAYBUFFERSIZE NDRCONFORMANTVARYINGARRAYBUFFERSIZE
+ 000B:4E64 NDRCONFORMANTVARYINGARRAYFREE NDRCONFORMANTVARYINGARRAYFREE
+ 000B:26B2 NDRCONFORMANTVARYINGARRAYMARSHALL NDRCONFORMANTVARYINGARRAYMARSHALL
+ 0007:0CB6 NDRCONFORMANTVARYINGARRAYMEMORYSIZE NDRCONFORMANTVARYINGARRAYMEMORYSIZE
+ 0008:1160 NDRCONFORMANTVARYINGARRAYUNMARSHALL NDRCONFORMANTVARYINGARRAYUNMARSHALL
+ 000B:5A04 NDRCONFORMANTVARYINGSTRUCTBUFFERSIZE NDRCONFORMANTVARYINGSTRUCTBUFFERSIZE
+ 000B:4A5E NDRCONFORMANTVARYINGSTRUCTFREE NDRCONFORMANTVARYINGSTRUCTFREE
+ 0006:0000 NDRCONFORMANTVARYINGSTRUCTMARSHALL NDRCONFORMANTVARYINGSTRUCTMARSHALL
+ 0007:0442 NDRCONFORMANTVARYINGSTRUCTMEMORYSIZE NDRCONFORMANTVARYINGSTRUCTMEMORYSIZE
+ 0008:0000 NDRCONFORMANTVARYINGSTRUCTUNMARSHALL NDRCONFORMANTVARYINGSTRUCTUNMARSHALL
+ 000B:73EC NDRCONTEXTHANDLESIZE NDRCONTEXTHANDLESIZE
+ 0009:0124 NDRCONVERT NDRCONVERT
+ 0009:0000 NDRCONVERT2 NDRCONVERT2
+ 0005:0000 NDRCOPY NDRCOPY
+ 000B:6B66 NDRENCAPSULATEDUNIONBUFFERSIZE NDRENCAPSULATEDUNIONBUFFERSIZE
+ 000B:526C NDRENCAPSULATEDUNIONFREE NDRENCAPSULATEDUNIONFREE
+ 000B:2FEA NDRENCAPSULATEDUNIONMARSHALL NDRENCAPSULATEDUNIONMARSHALL
+ 0007:19F4 NDRENCAPSULATEDUNIONMEMORYSIZE NDRENCAPSULATEDUNIONMEMORYSIZE
+ 0008:1D32 NDRENCAPSULATEDUNIONUNMARSHALL NDRENCAPSULATEDUNIONUNMARSHALL
+ 000B:5F54 NDRFIXEDARRAYBUFFERSIZE NDRFIXEDARRAYBUFFERSIZE
+ 000B:4DBA NDRFIXEDARRAYFREE NDRFIXEDARRAYFREE
+ 000B:24C4 NDRFIXEDARRAYMARSHALL NDRFIXEDARRAYMARSHALL
+ 0007:0A60 NDRFIXEDARRAYMEMORYSIZE NDRFIXEDARRAYMEMORYSIZE
+ 0008:0DAC NDRFIXEDARRAYUNMARSHALL NDRFIXEDARRAYUNMARSHALL
+ 000B:4736 NDRFREEBUFFER NDRFREEBUFFER
+ 0008:2FDA NDRFULLPOINTERFREE NDRFULLPOINTERFREE
+ 0008:2F0E NDRFULLPOINTERINSERTREFID NDRFULLPOINTERINSERTREFID
+ 0008:2C10 NDRFULLPOINTERQUERYPOINTER NDRFULLPOINTERQUERYPOINTER
+ 0008:2E44 NDRFULLPOINTERQUERYREFID NDRFULLPOINTERQUERYREFID
+ 0008:2B10 NDRFULLPOINTERXLATFREE NDRFULLPOINTERXLATFREE
+ 0008:2956 NDRFULLPOINTERXLATINIT NDRFULLPOINTERXLATINIT
+ 000B:449E NDRGETBUFFER NDRGETBUFFER
+ 000B:5AE2 NDRHARDSTRUCTBUFFERSIZE NDRHARDSTRUCTBUFFERSIZE
+ 000B:4AE6 NDRHARDSTRUCTFREE NDRHARDSTRUCTFREE
+ 0006:011E NDRHARDSTRUCTMARSHALL NDRHARDSTRUCTMARSHALL
+ 0007:0574 NDRHARDSTRUCTMEMORYSIZE NDRHARDSTRUCTMEMORYSIZE
+ 0008:02F6 NDRHARDSTRUCTUNMARSHALL NDRHARDSTRUCTUNMARSHALL
+ 000B:718E NDRINTERFACEPOINTERBUFFERSIZE NDRINTERFACEPOINTERBUFFERSIZE
+ 000B:554C NDRINTERFACEPOINTERFREE NDRINTERFACEPOINTERFREE
+ 000B:3618 NDRINTERFACEPOINTERMARSHALL NDRINTERFACEPOINTERMARSHALL
+ 0007:1F66 NDRINTERFACEPOINTERMEMORYSIZE NDRINTERFACEPOINTERMEMORYSIZE
+ 0008:28E0 NDRINTERFACEPOINTERUNMARSHALL NDRINTERFACEPOINTERUNMARSHALL
+ 000B:484C NDRMAPCOMMANDFAULTSTATUS NDRMAPCOMMANDFAULTSTATUS
+ 000B:B788 NDRMARSHALLHANDLE NDRMARSHALLHANDLE
+ 000B:A6B8 NDRMESSIMPLETYPEALIGNSIZE NDRMESSIMPLETYPEALIGNSIZE
+ 000B:A812 NDRMESSIMPLETYPEDECODE NDRMESSIMPLETYPEDECODE
+ 000B:A70A NDRMESSIMPLETYPEENCODE NDRMESSIMPLETYPEENCODE
+ 000B:9FF4 NDRMESTYPEALIGNSIZE NDRMESTYPEALIGNSIZE
+ 000B:A3B0 NDRMESTYPEDECODE NDRMESTYPEDECODE
+ 000B:A162 NDRMESTYPEENCODE NDRMESTYPEENCODE
+ 000B:6878 NDRNONCONFORMANTSTRINGBUFFERSIZE NDRNONCONFORMANTSTRINGBUFFERSIZE
+ 0006:0652 NDRNONCONFORMANTSTRINGMARSHALL NDRNONCONFORMANTSTRINGMARSHALL
+ 0007:1750 NDRNONCONFORMANTSTRINGMEMORYSIZE NDRNONCONFORMANTSTRINGMEMORYSIZE
+ 0008:099E NDRNONCONFORMANTSTRINGUNMARSHALL NDRNONCONFORMANTSTRINGUNMARSHALL
+ 000B:6C28 NDRNONENCAPSULATEDUNIONBUFFERSIZE NDRNONENCAPSULATEDUNIONBUFFERSIZE
+ 000B:531E NDRNONENCAPSULATEDUNIONFREE NDRNONENCAPSULATEDUNIONFREE
+ 000B:30AE NDRNONENCAPSULATEDUNIONMARSHALL NDRNONENCAPSULATEDUNIONMARSHALL
+ 0007:1A42 NDRNONENCAPSULATEDUNIONMEMORYSIZE NDRNONENCAPSULATEDUNIONMEMORYSIZE
+ 0008:1E50 NDRNONENCAPSULATEDUNIONUNMARSHALL NDRNONENCAPSULATEDUNIONUNMARSHALL
+ 000B:4592 NDRNSGETBUFFER NDRNSGETBUFFER
+ 000B:46A6 NDRNSSENDRECEIVE NDRNSSENDRECEIVE
+ 000B:5784 NDRPOINTERBUFFERSIZE NDRPOINTERBUFFERSIZE
+ 000B:48DA NDRPOINTERFREE NDRPOINTERFREE
+ 000B:2046 NDRPOINTERMARSHALL NDRPOINTERMARSHALL
+ 0007:0000 NDRPOINTERMEMORYSIZE NDRPOINTERMEMORYSIZE
+ 000B:37BC NDRPOINTERUNMARSHALL NDRPOINTERUNMARSHALL
+ 0008:233E NDRPXMITORREPASPTRUNMARSHALL NDRPXMITORREPASPTRUNMARSHALL
+ 000B:8E48 NDRRPCSMCLIENTALLOCATE NDRRPCSMCLIENTALLOCATE
+ 000B:8E7A NDRRPCSMCLIENTFREE NDRRPCSMCLIENTFREE
+ 000B:8DEC NDRRPCSMSETCLIENTTOOSF NDRRPCSMSETCLIENTTOOSF
+ 000B:8E18 NDRRPCSSDEFAULTALLOCATE NDRRPCSSDEFAULTALLOCATE
+ 000B:8E2E NDRRPCSSDEFAULTFREE NDRRPCSSDEFAULTFREE
+ 000B:8DB8 NDRRPCSSDISABLEALLOCATE NDRRPCSSDISABLEALLOCATE
+ 000B:8D84 NDRRPCSSENABLEALLOCATE NDRRPCSSENABLEALLOCATE
+ 000B:461E NDRSENDRECEIVE NDRSENDRECEIVE
+ 000B:367C NDRSERVERCONTEXTMARSHALL NDRSERVERCONTEXTMARSHALL
+ 0008:2948 NDRSERVERCONTEXTUNMARSHALL NDRSERVERCONTEXTUNMARSHALL
+ 000B:42DC NDRSERVERINITIALIZE NDRSERVERINITIALIZE
+ 000B:480C NDRSERVERINITIALIZEMARSHALL NDRSERVERINITIALIZEMARSHALL
+ 000B:41E6 NDRSERVERINITIALIZENEW NDRSERVERINITIALIZENEW
+ 000B:4400 NDRSERVERINITIALIZEPARTIAL NDRSERVERINITIALIZEPARTIAL
+ 000B:47E6 NDRSERVERINITIALIZEUNMARSHALL NDRSERVERINITIALIZEUNMARSHALL
+ 000B:58D4 NDRSIMPLESTRUCTBUFFERSIZE NDRSIMPLESTRUCTBUFFERSIZE
+ 000B:49CC NDRSIMPLESTRUCTFREE NDRSIMPLESTRUCTFREE
+ 000B:21CA NDRSIMPLESTRUCTMARSHALL NDRSIMPLESTRUCTMARSHALL
+ 0007:0218 NDRSIMPLESTRUCTMEMORYSIZE NDRSIMPLESTRUCTMEMORYSIZE
+ 000B:3CBE NDRSIMPLESTRUCTUNMARSHALL NDRSIMPLESTRUCTUNMARSHALL
+ 000B:1F0C NDRSIMPLETYPEMARSHALL NDRSIMPLETYPEMARSHALL
+ 000B:368A NDRSIMPLETYPEUNMARSHALL NDRSIMPLETYPEUNMARSHALL
+ 000B:B81E NDRUNMARSHALLHANDLE NDRUNMARSHALLHANDLE
+ 000B:7070 NDRUSERMARSHALBUFFERSIZE NDRUSERMARSHALBUFFERSIZE
+ 000B:54E8 NDRUSERMARSHALFREE NDRUSERMARSHALFREE
+ 000B:3480 NDRUSERMARSHALMARSHALL NDRUSERMARSHALMARSHALL
+ 0007:1E5E NDRUSERMARSHALMEMORYSIZE NDRUSERMARSHALMEMORYSIZE
+ 0009:1F50 NDRUSERMARSHALSIMPLETYPECONVERT NDRUSERMARSHALSIMPLETYPECONVERT
+ 0008:2714 NDRUSERMARSHALUNMARSHALL NDRUSERMARSHALUNMARSHALL
+ 000B:6272 NDRVARYINGARRAYBUFFERSIZE NDRVARYINGARRAYBUFFERSIZE
+ 000B:4EEC NDRVARYINGARRAYFREE NDRVARYINGARRAYFREE
+ 000B:2850 NDRVARYINGARRAYMARSHALL NDRVARYINGARRAYMARSHALL
+ 0007:0ECC NDRVARYINGARRAYMEMORYSIZE NDRVARYINGARRAYMEMORYSIZE
+ 0008:145C NDRVARYINGARRAYUNMARSHALL NDRVARYINGARRAYUNMARSHALL
+ 000B:6EFA NDRXMITORREPASBUFFERSIZE NDRXMITORREPASBUFFERSIZE
+ 000B:5484 NDRXMITORREPASFREE NDRXMITORREPASFREE
+ 000B:3332 NDRXMITORREPASMARSHALL NDRXMITORREPASMARSHALL
+ 0007:1D92 NDRXMITORREPASMEMORYSIZE NDRXMITORREPASMEMORYSIZE
+ 0008:24C6 NDRXMITORREPASUNMARSHALL NDRXMITORREPASUNMARSHALL
+ 000A:B41E OSFTOWERCONSTRUCT OSFTOWERCONSTRUCT
+ 000A:B48A OSFTOWEREXPLODE OSFTOWEREXPLODE
+ 000A:1858 RPCBINDINGCOPY RPCBINDINGCOPY
+ 000A:18DC RPCBINDINGFREE RPCBINDINGFREE
+ 000A:195A RPCBINDINGFROMSTRINGBINDING RPCBINDINGFROMSTRINGBINDING
+ 000A:1B5C RPCBINDINGINQAUTHINFO RPCBINDINGINQAUTHINFO
+ 000A:1CDE RPCBINDINGINQOBJECT RPCBINDINGINQOBJECT
+ 000A:1920 RPCBINDINGRESET RPCBINDINGRESET
+ 000A:1C44 RPCBINDINGSETAUTHINFO RPCBINDINGSETAUTHINFO
+ 000A:19D0 RPCBINDINGSETOBJECT RPCBINDINGSETOBJECT
+ 000A:1D10 RPCBINDINGTOSTRINGBINDING RPCBINDINGTOSTRINGBINDING
+ 000A:1A12 RPCBINDINGVECTORFREE RPCBINDINGVECTORFREE
+ 000A:1A90 RPCEPRESOLVEBINDING RPCEPRESOLVEBINDING
+ 000A:E272 RpcGetExceptionHandler RpcGetExceptionHandler
+ 000A:1DA0 RPCIFINQID RPCIFINQID
+ 000A:E29C RPCLEAVEEXCEPTION RPCLEAVEEXCEPTION
+ 000A:1F1C RPCMGMTBINDINGINQPARAMETER RPCMGMTBINDINGINQPARAMETER
+ 000A:1EE8 RPCMGMTBINDINGSETPARAMETER RPCMGMTBINDINGSETPARAMETER
+ 000A:1ED6 RPCMGMTENABLEIDLECLEANUP RPCMGMTENABLEIDLECLEANUP
+ 000A:1E10 RPCMGMTINQCOMTIMEOUT RPCMGMTINQCOMTIMEOUT
+ 000A:1D40 RPCMGMTINQDEFAULTPROTECTLEVEL RPCMGMTINQDEFAULTPROTECTLEVEL
+ 000A:1F96 RPCMGMTINQPARAMETER RPCMGMTINQPARAMETER
+ 000A:1E40 RPCMGMTSETCOMTIMEOUT RPCMGMTSETCOMTIMEOUT
+ 000A:1F54 RPCMGMTSETPARAMETER RPCMGMTSETPARAMETER
+ 000A:1DF4 RPCNETWORKISPROTSEQVALID RPCNETWORKISPROTSEQVALID
+ 000A:1AD0 RPCNSBINDINGINQENTRYNAME RPCNSBINDINGINQENTRYNAME
+ 0003:003F RPCRAISEEXCEPTION RPCRAISEEXCEPTION
+ 000A:EBA2 RPCREGCLOSEKEY RPCREGCLOSEKEY
+ 000A:EC00 RPCREGCREATEKEY RPCREGCREATEKEY
+ 000A:ED4A RPCREGOPENKEY RPCREGOPENKEY
+ 000A:F106 RPCREGQUERYVALUE RPCREGQUERYVALUE
+ 000A:EE76 RPCREGSETVALUE RPCREGSETVALUE
+ 0003:0000 RPCSETEXCEPTION RPCSETEXCEPTION
+ 000A:E15C RpcSetExceptionHandler RpcSetExceptionHandler
+ 000B:89C0 RPCSMALLOCATE RPCSMALLOCATE
+ 000B:8A12 RPCSMCLIENTFREE RPCSMCLIENTFREE
+ 000B:8A82 RPCSMDESTROYCLIENTCONTEXT RPCSMDESTROYCLIENTCONTEXT
+ 000B:8A4E RPCSMDISABLEALLOCATE RPCSMDISABLEALLOCATE
+ 000B:8ABE RPCSMENABLEALLOCATE RPCSMENABLEALLOCATE
+ 000B:8AF2 RPCSMFREE RPCSMFREE
+ 000B:8B2E RPCSMGETTHREADHANDLE RPCSMGETTHREADHANDLE
+ 000B:8B80 RPCSMSETCLIENTALLOCFREE RPCSMSETCLIENTALLOCFREE
+ 000B:8BC6 RPCSMSETTHREADHANDLE RPCSMSETTHREADHANDLE
+ 000B:8C02 RPCSMSWAPCLIENTALLOCFREE RPCSMSWAPCLIENTALLOCFREE
+ 000B:86BC RPCSSALLOCATE RPCSSALLOCATE
+ 000A:F64C RPCSSDESTROYCLIENTCONTEXT RPCSSDESTROYCLIENTCONTEXT
+ 000B:875E RPCSSDISABLEALLOCATE RPCSSDISABLEALLOCATE
+ 000B:87F8 RPCSSENABLEALLOCATE RPCSSENABLEALLOCATE
+ 000B:883A RPCSSFREE RPCSSFREE
+ 000B:88CC RPCSSGETTHREADHANDLE RPCSSGETTHREADHANDLE
+ 000B:890C RPCSSSETCLIENTALLOCFREE RPCSSSETCLIENTALLOCFREE
+ 000B:8940 RPCSSSETTHREADHANDLE RPCSSSETTHREADHANDLE
+ 000B:8962 RPCSSSWAPCLIENTALLOCFREE RPCSSSWAPCLIENTALLOCFREE
+ 000A:1FC6 RPCSTRINGBINDINGCOMPOSE RPCSTRINGBINDINGCOMPOSE
+ 000A:207A RPCSTRINGBINDINGPARSE RPCSTRINGBINDINGPARSE
+ 000A:21A4 RPCSTRINGFREE RPCSTRINGFREE
+ 000A:E59A RPCWINSETYIELDINFO RPCWINSETYIELDINFO
+ 000A:E65A RPCWINSETYIELDTIMEOUT RPCWINSETYIELDTIMEOUT
+ 000B:1768 SHORT_ARRAY_FROM_NDR SHORT_ARRAY_FROM_NDR
+ 000B:1704 SHORT_FROM_NDR SHORT_FROM_NDR
+ 000B:1818 SHORT_FROM_NDR_TEMP SHORT_FROM_NDR_TEMP
+ 0002:08E4 TOWERCONSTRUCT TOWERCONSTRUCT
+ 0002:0846 TOWEREXPLODE TOWEREXPLODE
+ 000B:0B48 TREE_INTO_NDR TREE_INTO_NDR
+ 000B:144C TREE_PEEK_NDR TREE_PEEK_NDR
+ 000B:11D0 TREE_SIZE_NDR TREE_SIZE_NDR
+ 000A:23E8 UUIDCOMPARE UUIDCOMPARE
+ 000A:2202 UUIDCREATE UUIDCREATE
+ 000A:24E0 UUIDCREATENIL UUIDCREATENIL
+ 000A:24FC UUIDEQUAL UUIDEQUAL
+ 000A:2394 UUIDFROMSTRING UUIDFROMSTRING
+ 000A:2570 UUIDHASH UUIDHASH
+ 000A:25A0 UUIDISNIL UUIDISNIL
+ 000A:2346 UUIDTOSTRING UUIDTOSTRING
+ 0001:0000 WEP WEP
+ 000A:DF62 WINDLLATEXIT WINDLLATEXIT
+ 000A:E762 YIELDTIMERCALLBACK YIELDTIMERCALLBACK
+ 000A:D19C _I_Trace _I_Trace
+ 000B:7422 _NdrClientCall _NdrClientCall
+ 000B:7E1C _NdrClientCall2 _NdrClientCall2
+ 000B:9A30 _NdrMesProcEncodeDecode _NdrMesProcEncodeDecode
+ 0004:1578 ___ExportedStub ___ExportedStub
+
+ Address Publics by Name
+
+ 0004:321E $i8_output
+ 0004:3540 $i8_tpwr10
+ 000A:752A ??0BINDING_HANDLE@@JAC@XZ
+ 000A:73E4 ??0CLIENT_AUTH_INFO@@RAC@PAU0@PEG@Z
+ 000A:CDC4 ??0CLIENT_LOADABLE_TRANSPORT@@RAC@PAU_RPC_CLIENT_TRANSPORT_INFO@@PAE@Z
+ 000A:5576 ??0CONNECTION@@RAC@PAUCLIENT_AUTH_INFO@@PEG@Z
+ 000A:0066 ??0DCE_BINDING@@RAC@PEE0000PEG@Z
+ 000A:0298 ??0DCE_BINDING@@RAC@PEEPEG@Z
+ 000A:272C ??0DG_BINDING_HANDLE@@RAC@PEG@Z
+ 000A:2CC6 ??0DG_CASSOCIATION@@RAC@PEU_DG_RPC_CLIENT_TRANSPORT_INFO@@PAVDG_BINDING_HANDLE@@KPAVDCE_BINDING@@PEG@Z
+ 000A:3100 ??0DG_CCALL@@RAC@PAVDG_CASSOCIATION@@IPAUCLIENT_AUTH_INFO@@PEG@Z
+ 000A:3762 ??0DG_ENDPOINT_MANAGER@@RAC@PEU_DG_RPC_CLIENT_TRANSPORT_INFO@@PEG@Z
+ 000A:56D2 ??0DG_PACKET_ENGINE@@RAC@GGGGIPEG@Z
+ 000A:7B3C ??0DLL@@RAC@PAEPAG@Z
+ 000A:7D9E ??0OSF_BINDING_HANDLE@@RAC@PEG@Z
+ 000A:A6BE ??0OSF_CASSOCIATION@@RAC@PAVDCE_BINDING@@PAU_RPC_CLIENT_TRANSPORT_INFO@@PEG@Z
+ 000A:A208 ??0OSF_CCONNECTION@@JAC@PAUCLIENT_AUTH_INFO@@PEG@Z
+ 000A:C5C4 ??0SECURITY_CONTEXT@@RAC@PAUCLIENT_AUTH_INFO@@IHPEG@Z
+ 000A:C486 ??0SECURITY_CREDENTIALS@@RAC@PEG@Z
+ 000B:C010 ??0SIMPLE_DICT2@@REC@XZ
+ 000A:BF7C ??0SIMPLE_DICT@@RAC@XZ
+ 000A:C8D4 ??0TRANS_CCONNECTION@@RAC@PAU_RPC_CLIENT_TRANSPORT_INFO@@PAE111PEGIPAUCLIENT_AUTH_INFO@@@Z
+ 000A:75AC ??1BINDING_HANDLE@@VAC@XZ
+ 000A:0F78 ??1BITSET@@RAC@XZ
+ 000A:745E ??1CLIENT_AUTH_INFO@@RAC@XZ
+ 000A:06B0 ??1DCE_BINDING@@RAC@XZ
+ 000A:2754 ??1DG_BINDING_HANDLE@@VAC@XZ
+ 000A:2DE2 ??1DG_CASSOCIATION@@RAC@XZ
+ 000A:3264 ??1DG_CCALL@@VAC@XZ
+ 000A:57BA ??1DG_PACKET_ENGINE@@RAC@XZ
+ 000A:5520 ??1INTERFACE_AND_OBJECT_LIST@@RAC@XZ
+ 000A:7EC4 ??1OSF_BINDING_HANDLE@@VAC@XZ
+ 000A:A72A ??1OSF_CASSOCIATION@@RAC@XZ
+ 000A:A30A ??1OSF_CCONNECTION@@VAC@XZ
+ 000A:55D0 ??1SECURITY_CONTEXT@@RAC@XZ
+ 0000:0000 Unr ??1SIMPLE_DICT2@@REC@XZ
+ 000A:BFAC ??1SIMPLE_DICT@@RAC@XZ
+ 000A:C948 ??1TRANS_CCONNECTION@@VAC@XZ
+ 000A:7CEC ??2@ZAPAXI@Z
+ 000B:8C50 ??2@ZAPEXI@Z
+ 000A:7CFC ??3@ZAXPAX@Z
+ 0004:191A ??3@ZAXPEX@Z
+ 000A:D6F2 ??N@ZAHAEVULong64@@0@Z
+ 000A:D68A ??P@ZAHAEVULong64@@0@Z
+ 000A:D3A6 ??X@ZAXAEVULong64@@K@Z
+ 000A:D2CC ??Y@ZAXAEVULong64@@0@Z
+ 000A:D330 ??Y@ZAXAEVULong64@@K@Z
+ 0000:0000 Unr ??Z@ZAXAEVULong64@@0@Z
+ 000A:D36E ??Z@ZAXAEVULong64@@K@Z
+ 000A:D5EE ??_2@ZAXAEVULong64@@I@Z
+ 000A:D546 ??_3@ZAXAEVULong64@@I@Z
+ 000E:133E ??_7BINDING_HANDLE@@6B@
+ 000E:121E ??_7CCONNECTION@@6B@
+ 000E:11C6 ??_7CONNECTION@@6B@
+ 000E:116A ??_7DG_BINDING_HANDLE@@6B@
+ 000E:11EA ??_7DG_CASSOCIATION@@6B@
+ 000E:11EE ??_7DG_CCALL@@6BCCONNECTION@@@
+ 000E:1216 ??_7DG_CCALL@@6BDG_PACKET_ENGINE@@@
+ 000E:1242 ??_7DG_PACKET_ENGINE@@6B@
+ 000E:121A ??_7GENERIC_OBJECT@@6B@
+ 000E:1146 ??_7MESSAGE_OBJECT@@6B@
+ 000E:145C ??_7OSF_BINDING_HANDLE@@6B@
+ 000E:1458 ??_7OSF_CASSOCIATION@@6B@
+ 000E:1410 ??_7OSF_CCONNECTION@@6B@
+ 000E:14EA ??_7TRANS_CCONNECTION@@6B@
+ 000E:1656 ??_C@_01BJG@?6?$AA@
+ 000E:1650 ??_C@_01KPOD@?$DN?$AA@
+ 000E:169E ??_C@_01PCFE@?2?$AA@
+ 000E:164C ??_C@_02EHDJ@?$DN?6?$AA@
+ 000E:1652 ??_C@_02IAAH@wt?$AA@
+ 000E:1278 ??_C@_03EOPG@135?$AA@
+ 000E:131A ??_C@_03GEHA@385?$AA@
+ 000E:129A ??_C@_03HJFF@?$CD69?$AA@
+ 000E:1696 ??_C@_03ONMN@r?$CLt?$AA@
+ 000E:169A ??_C@_03PHIB@w?$CLt?$AA@
+ 000E:1658 ??_C@_05HHOP@?2Root?$AA@
+ 000E:12DE ??_C@_05LKBG@34280?$AA@
+ 000E:131E ??_C@_06HKKF@RPCNS1?$AA@
+ 000E:112E ??_C@_06KGKC@ncadg_?$AA@
+ 000E:1136 ??_C@_06LLDN@ncacn_?$AA@
+ 000E:113E ??_C@_06MNFC@mswmsg?$AA@
+ 000E:13C2 ??_C@_07BGOK@rpc16c8?$AA@
+ 000E:1126 ??_C@_07DFNK@ncalrpc?$AA@
+ 000E:13B2 ??_C@_07ECJJ@rpc16c5?$AA@
+ 000E:13BA ??_C@_07LNCA@rpc16c6?$AA@
+ 000E:13A2 ??_C@_07LNOL@rpc16c3?$AA@
+ 000E:13AA ??_C@_07OIAO@rpc16c4?$AA@
+ 000E:139A ??_C@_07OIMF@rpc16c1?$AA@
+ 000E:1246 ??_C@_08DNBJ@ncacn_np?$AA@
+ 000E:111C ??_C@_08GFKM@endpoint?$AA@
+ 000E:1260 ??_C@_08JCOI@epmapper?$AA@
+ 000E:1642 ??_C@_08KHKC@RPCYIELD?$AA@
+ 000E:1406 ??_C@_08PBBB@security?$AA@
+ 000E:13CA ??_C@_08PDFD@rpc16dg3?$AA@
+ 000E:13D4 ??_C@_08PDJI@rpc16dg6?$AA@
+ 000E:12D4 ??_C@_09LLEG@ncacn_spx?$AA@
+ 000E:12E4 ??_C@_09OHNL@ncadg_ipx?$AA@
+ 000E:12FC ??_C@_0BA@LJDB@Endpoint?5Mapper?$AA@
+ 000B:4826 ??_C@_0BB@DMFF@I_RPCNSGETBUFFER?$AA@
+ 000E:1532 ??_C@_0BB@PCNE@0123456789abcdef?$AA@
+ 000E:1588 ??_C@_0BC@GBOB@LastTimeAllocated?$AA@
+ 000E:166C ??_C@_0BC@GCIN@RPC_REG_DATA_FILE?$AA@
+ 000B:4838 ??_C@_0BD@CMGM@I_RPCNSSENDRECEIVE?$AA@
+ 000E:15DE ??_C@_0BG@DOMJ@Remote?5Procedure?5Call?$AA@
+ 000E:14B8 ??_C@_0BH@NHJB@INITSECURITYINTERFACEA?$AA@
+ 000E:167E ??_C@_0BI@BCIP@RPC?5Runtime?5Preferences?$AA@
+ 000E:1326 ??_C@_0BI@FLG@I_GETDEFAULTENTRYSYNTAX?$AA@
+ 000E:15C4 ??_C@_0BK@HJNG@IPXGetInternetworkAddress?$AA@
+ 000E:13DE ??_C@_0CH@FABF@Software?2Microsoft?2Rpc?2ClientPro@
+ 000E:1544 ??_C@_0DG@FPPK@Software?2Description?2Microsoft?2R@
+ 000E:15F4 ??_C@_0EO@DPEN@Application?5encountered?5unhandle@
+ 000B:481A ??_C@_0L@OGFF@RPCNS1?4DLL?$AA@
+ 000E:14D0 ??_C@_0M@IBML@?$CFd?4?$CFd?4?$CFd?4?$CFd?$AA@
+ 000E:129E ??_C@_0M@PAMB@ncacn_nb_nb?$AA@
+ 000E:159A ??_C@_0N@BDMF@NWIPXSPX?4DLL?$AA@
+ 000E:15B6 ??_C@_0N@DBEN@IPXSPXDeinit?$AA@
+ 000E:12B8 ??_C@_0N@DJPI@ncacn_nb_tcp?$AA@
+ 000E:126A ??_C@_0N@JDIH@ncacn_ip_tcp?$AA@
+ 000E:12C6 ??_C@_0N@JHIF@ncacn_nb_ipx?$AA@
+ 000E:127C ??_C@_0N@OGGG@ncadg_ip_udp?$AA@
+ 000E:12AA ??_C@_0N@OHPK@ncacn_nb_xns?$AA@
+ 000E:12EE ??_C@_0N@PFNA@ncacn_at_dsp?$AA@
+ 000E:157A ??_C@_0O@FLAE@ClockSequence?$AA@
+ 000E:15A8 ??_C@_0O@GLEB@IPXInitialize?$AA@
+ 000E:130C ??_C@_0O@IPEE@ncacn_vns_spp?$AA@
+ 000E:14DC ??_C@_0O@JAOA@TRANSPORTLOAD?$AA@
+ 000E:165E ??_C@_0O@LDIE@c?3?2RpcReg?4dat?$AA@
+ 000E:128A ??_C@_0P@MCIL@ncacn_dnet_nsp?$AA@
+ 000E:1250 ??_C@_0P@OKDC@?2pipe?2epmapper?$AA@
+ 000A:7AF8 ??_GBINDING_HANDLE@@VACPAXI@Z
+ 000A:568E ??_GDG_BINDING_HANDLE@@VACPAXI@Z
+ 000A:554A ??_GDG_CASSOCIATION@@RACPAXI@Z
+ 000A:56B0 ??_GDG_CCALL@@VACPAXI@Z
+ 000A:B5E2 ??_GOSF_BINDING_HANDLE@@VACPAXI@Z
+ 000A:B604 ??_GOSF_CCONNECTION@@VACPAXI@Z
+ 000A:7ADE ??_GSECURITY_CREDENTIALS@@RACPAXI@Z
+ 000A:D19E ??_GTRANS_CCONNECTION@@VACPAXI@Z
+ 000A:830C ?AbortConnection@OSF_BINDING_HANDLE@@RACXPAVOSF_CCONNECTION@@@Z
+ 000A:A1B8 ?AbortConnection@OSF_CCONNECTION@@RACXH@Z
+ 000A:C498 ?AcquireCredentialsForClient@SECURITY_CREDENTIALS@@RACGPEXKK@Z
+ 0000:0000 Unr ?AcquireCredentialsForServer@SECURITY_CREDENTIALS@@RACGP7CXPEXPEEKPEPEXPEG@Z0KK1@Z
+ 000A:AB04 ?ActuallyDoBinding@OSF_CASSOCIATION@@BACGPEU_RPC_SYNTAX_IDENTIFIER@@0IPEPAVOSF_CCONNECTION@@HIPAUCLIENT_AUTH_INFO@@K@Z
+ 000A:8250 ?AddActiveEntry@OSF_BINDING_HANDLE@@RACGPAVOSF_CCONNECTION@@PEU_RPC_CLIENT_INTERFACE@@@Z
+ 000A:0C76 ?AddEndpoint@DCE_BINDING@@RACXPAE@Z
+ 000A:30C0 ?AddInterface@DG_CASSOCIATION@@RACHPEXPEVRPC_UUID@@@Z
+ 000A:3A3C ?AfterSendReceive@DG_CCALL@@BACGPEU_RPC_MESSAGE@@G@Z
+ 000A:2E82 ?AllocateCCall@DG_CASSOCIATION@@RACGPEPAVDG_CCALL@@PAUCLIENT_AUTH_INFO@@@Z
+ 000A:8178 ?AllocateConnection@OSF_BINDING_HANDLE@@RACGPEPAVOSF_CCONNECTION@@PEU_RPC_CLIENT_INTERFACE@@@Z
+ 000A:AF40 ?AllocateConnection@OSF_CASSOCIATION@@RACGPEU_RPC_CLIENT_INTERFACE@@PEPAVOSF_CCONNECTION@@IPAUCLIENT_AUTH_INFO@@@Z
+ 000A:0282 ?AllocateEmptyString@@ZAPAEXZ
+ 000A:09C2 ?AllocateEmptyStringPAPI@@ZAPEEXZ
+ 000A:379A ?AllocateEndpoint@DG_ENDPOINT_MANAGER@@RACPAUENDPOINT@@XZ
+ 000A:6AFA ?AllocateLargeBuffer@@ZAPEDI@Z
+ 000A:69AA ?AllocatePacket@DG_PACKET@@TAPEV1@I@Z
+ 000A:622E ?AssembleBufferFromPackets@DG_PACKET_ENGINE@@RACGPEU_RPC_MESSAGE@@PAVCONNECTION@@@Z
+ 000E:038A ?AvailableProviders@@3KA
+ 000A:3942 ?BeforeSendReceive@DG_CCALL@@BACGPEU_RPC_MESSAGE@@@Z
+ 000A:2B1A ?BindingCopy@DG_BINDING_HANDLE@@VACGPEPAVBINDING_HANDLE@@I@Z
+ 000A:73C8 ?BindingCopy@MESSAGE_OBJECT@@VACGPEPAVBINDING_HANDLE@@I@Z
+ 000A:7F34 ?BindingCopy@OSF_BINDING_HANDLE@@VACGPEPAVBINDING_HANDLE@@I@Z
+ 000A:9C10 ?BindingCopy@OSF_CCONNECTION@@VACGPEPAVBINDING_HANDLE@@I@Z
+ 000A:29C8 ?BindingFree@DG_BINDING_HANDLE@@VACGXZ
+ 000A:8034 ?BindingFree@OSF_BINDING_HANDLE@@VACGXZ
+ 000A:2AD8 ?BindingReset@DG_BINDING_HANDLE@@VACGXZ
+ 000A:80C4 ?BindingReset@OSF_BINDING_HANDLE@@VACGXZ
+ 000A:34D4 ?BuildNcaPacketHeader@DG_CCALL@@BACXPEU_NCA_PACKET_HEADER@@PEU_RPC_MESSAGE@@@Z
+ 000A:6846 ?ByteSwapFackBody0@@ZAXPEUFACK_BODY_VER_0@@@Z
+ 000A:66E6 ?ByteSwapPacketHeader@@ZAXPEVDG_PACKET@@@Z
+ 000A:B7A2 ?ByteSwapSyntaxId@@ZAXPEUp_syntax_id_t@@@Z
+ 000B:8646 ?CheckIfMtrtHeapInitialized@@ZAGXZ
+ 000A:391E ?CleanupDgTransports@@ZAXXZ
+ 000A:38CE ?CleanupForThisTask@DG_ENDPOINT_MANAGER@@RACXXZ
+ 000A:597A ?CleanupReceiveWindow@DG_PACKET_ENGINE@@RACXXZ
+ 000E:018E ?ClientGlobalsInitialized@@3HA
+ 000A:0DAE ?Compare@DCE_BINDING@@RACHPAV1@@Z
+ 000A:303A ?ComparePartialBinding@DG_CASSOCIATION@@RACHPAVDG_BINDING_HANDLE@@PEX@Z
+ 000A:52A6 ?CompareWithBinding@DG_CASSOCIATION@@RACHPAVDG_BINDING_HANDLE@@@Z
+ 000A:B24A ?CompareWithDceBinding@OSF_CASSOCIATION@@RACHPAVDCE_BINDING@@@Z
+ 000A:C5F6 ?CompleteSecurityToken@SECURITY_CONTEXT@@RACGPEU_SecBufferDesc@@@Z
+ 000A:B626 ?ConstructPacket@@ZAXPEUrpcconn_common@@EI@Z
+ 000A:9D08 ?ConstructPContextList@@ZAXPEUp_cont_list_t@@PEU_RPC_SYNTAX_IDENTIFIER@@1IE@Z
+ 000A:BA30 ?ConvertFromString@RPC_UUID@@RECHPEE@Z
+ 000A:B85A ?ConvertStringEbcdicToAscii@@ZAXPAE@Z
+ 000A:BD50 ?ConvertToString@RPC_UUID@@RECPEEPEE@Z
+ 000A:D940 ?CookupNodeId@@ZCGPEE@Z
+ 000A:0B70 ?CreateBindingHandle@DCE_BINDING@@RACPAVBINDING_HANDLE@@PEG@Z
+ 000A:7CE2 ?CurrentTimeInSeconds@@ZAKXZ
+ 000A:4E64 ?DealWithAuthCallback@DG_CCALL@@BACGPEXJ0JPEJ@Z
+ 000A:45D6 ?DealWithFack@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:47F6 ?DealWithFault@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:479C ?DealWithNocall@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:4960 ?DealWithQuack@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:43DA ?DealWithRequest@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:4678 ?DealWithResponse@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:46FA ?DealWithWorking@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:3880 ?DecrementReferenceCount@DG_ENDPOINT_MANAGER@@RACXXZ
+ 000E:0338 ?DefaultConnectionBufferLength@@3IA
+ 000E:0336 ?DefaultMaxDatagramLength@@3IA
+ 000A:54AE ?Delete@INTERFACE_AND_OBJECT_LIST@@RACHPEXPEVRPC_UUID@@@Z
+ 000B:C21A ?Delete@SIMPLE_DICT2@@RECPEXPEX@Z
+ 000A:C06C ?Delete@SIMPLE_DICT@@RACPAXH@Z
+ 0000:0000 Unr ?DeleteItemByBruteForce@SIMPLE_DICT@@RACPAXPAX@Z
+ 000A:2672 ?DgCreateBindingHandle@@ZAPAVBINDING_HANDLE@@XZ
+ 000A:2C4A ?DisassociateFromServer@DG_BINDING_HANDLE@@RACXXZ
+ 000A:782C ?DispatchCallback@@ZAGPEURPC_DISPATCH_TABLE@@PEU_RPC_MESSAGE@@PEG@Z
+ 000A:B550 ?DoConnectionCleanup@OSF_CCONNECTION@@BACXPEU_RPC_MESSAGE@@PEXGHH@Z
+ 000A:0E72 ?DuplicateDceBinding@DCE_BINDING@@RACPAV1@XZ
+ 000A:0000 ?DuplicateString@@ZAPAEPEE@Z
+ 000A:09E4 ?DuplicateStringPAPI@@ZAPEEPAE@Z
+ 000A:9332 ?EatAuthInfoFromPacket@OSF_CCONNECTION@@BACGPEUrpcconn_request@@PEI@Z
+ 000E:04B0 ?ebcdic_to_ascii@@3QEEE
+ 000A:7CD8 ?EnableGarbageCollection@@ZAGXZ
+ 000E:036A ?EnableGc@@3IA
+ 000A:0B04 ?EndpointCompose@DCE_BINDING@@RACPEEPEG@Z
+ 000E:1C14 ?EpmDict@@3PAVDG_ENDPOINT_MANAGER_DICT@@A
+ 000E:0380 ?FailedToLoad@@3HA
+ 000A:5442 ?Find@INTERFACE_AND_OBJECT_LIST@@RACHPEXPEVRPC_UUID@@@Z
+ 000B:C278 ?Find@SIMPLE_DICT2@@RECPEXPEX@Z
+ 0000:0000 Unr ?Find@SIMPLE_DICT@@RACPAXH@Z
+ 000A:B27C ?FindIdleConnection@OSF_CASSOCIATION@@RACPAVOSF_CCONNECTION@@KK@Z
+ 000A:B18E ?FindOrCreateAssociation@@ZAPAVOSF_CASSOCIATION@@PAVDCE_BINDING@@PAU_RPC_CLIENT_TRANSPORT_INFO@@@Z
+ 000A:AEA0 ?FindOrCreateOsfBinding@OSF_CASSOCIATION@@RACPAVOSF_BINDING@@PEU_RPC_CLIENT_INTERFACE@@@Z
+ 000A:C17A ?FindSecurityPackage@@ZAGKKPEI0@Z
+ 0000:0000 Unr ?FlushPacketLists@DG_PACKET@@TAXXZ
+ 000A:7810 ?FreeBuffer@BINDING_HANDLE@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:334E ?FreeBuffer@DG_CCALL@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:9B0C ?FreeBuffer@OSF_CCONNECTION@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:2F68 ?FreeCall@DG_CASSOCIATION@@RACXPAVDG_CCALL@@@Z
+ 000A:82B4 ?FreeConnection@OSF_BINDING_HANDLE@@RACXPAVOSF_CCONNECTION@@@Z
+ 000A:B0C8 ?FreeConnection@OSF_CASSOCIATION@@RACHPAVOSF_CCONNECTION@@@Z
+ 000A:A19A ?FreeConnection@OSF_CCONNECTION@@RACXXZ
+ 000A:C55A ?FreeCredentials@SECURITY_CREDENTIALS@@RACXXZ
+ 000A:34B6 ?FreeEndpoint@DG_CCALL@@BACXXZ
+ 000A:33A6 ?FreeInParms@DG_CCALL@@BACXPEU_RPC_MESSAGE@@@Z
+ 000A:55F4 ?FreeLargeBuffer@@ZAXPEX@Z
+ 000A:6A48 ?FreePacket@DG_PACKET@@TAXPEV1@@Z
+ 000A:3390 ?FreePipeBuffer@DG_CCALL@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:556C ?FreePipeBuffer@MESSAGE_OBJECT@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:9B48 ?FreePipeBuffer@OSF_CCONNECTION@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:D224 ?FromHexString@ULong64@@RECXPED@Z
+ 000A:7CA2 ?GarbageCollectionNeeded@@ZAXK@Z
+ 000E:0368 ?GcTimerStarted@@3IA
+ 000B:8C62 ?GetAllocContext@@ZAPEU_ALLOCATION_CONTEXT@@XZ
+ 000B:8CD4 ?GetAllocContextNoCreate@@ZAPEU_ALLOCATION_CONTEXT@@XZ
+ 000A:27C6 ?GetBuffer@DG_BINDING_HANDLE@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:32EA ?GetBuffer@DG_CCALL@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:7DD2 ?GetBuffer@OSF_BINDING_HANDLE@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:9A78 ?GetBuffer@OSF_CCONNECTION@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:9ADA ?GetBufferDo@OSF_CCONNECTION@@RACGIPEPEX@Z
+ 000B:864A ?GetCreateAllocationContext@@ZAPEU_ALLOCATION_CONTEXT@@XZ
+ 000A:D0FA ?GetLoadedClientTransportInfoFromId@@ZAPEU_RPC_CLIENT_TRANSPORT_INFO@@G@Z
+ 000A:D9E8 ?GetNodeId@@ZCGPEE@Z
+ 000A:BEE0 ?HashUuid@RPC_UUID@@RECGXZ
+ 000A:386E ?IncrementReferenceCount@DG_ENDPOINT_MANAGER@@RACXXZ
+ 000A:4CB2 ?InitErrorPacket@DG_CCALL@@BACXPEU_NCA_PACKET_HEADER@@EG@Z
+ 000A:6978 ?Initialize@DG_PACKET@@TAGXZ
+ 000A:C700 ?InitializeFirstTime@CSECURITY_CONTEXT@@RACGPAVSECURITY_CREDENTIALS@@PAEKPEU_SecBufferDesc@@@Z
+ 000A:4F82 ?InitializeFirstTime@DG_SECURITY_CONTEXT@@RACGPAVSECURITY_CREDENTIALS@@PAEKPEU_SecBufferDesc@@@Z
+ 000A:D136 ?InitializeLoadableTransportClient@@ZAHXZ
+ 000A:5096 ?InitializeOnCallback@DG_SECURITY_CONTEXT@@RACGKPEU_SecBufferDesc@@0@Z
+ 000A:25D0 ?InitializeRpcProtocolDgClient@@ZAHXZ
+ 000A:B34C ?InitializeRpcProtocolOfsClient@@ZAHXZ
+ 000A:4D0A ?InitializeSecurityContextA@DG_CCALL@@BACGXZ
+ 000A:C830 ?InitializeThirdLeg@CSECURITY_CONTEXT@@RACGKPEU_SecBufferDesc@@0@Z
+ 000A:781A ?InqConnectionParameter@BINDING_HANDLE@@VACGIPEK@Z
+ 000A:5276 ?InqConnectionParameter@DG_BINDING_HANDLE@@VACGIPEK@Z
+ 000A:55B2 ?InquireAuthInformation@BINDING_HANDLE@@VACPAUCLIENT_AUTH_INFO@@XZ
+ 000A:77A8 ?InquireDynamicEndpoint@BINDING_HANDLE@@VACGPEPEE@Z
+ 000A:76BE ?InquireEntryName@BINDING_HANDLE@@RACGKPEPEE@Z
+ 000A:7632 ?InquireObjectUuid@BINDING_HANDLE@@RACXPEVRPC_UUID@@@Z
+ 000A:5610 ?InquireTransportType@DG_BINDING_HANDLE@@VACGPEI@Z
+ 000A:B53E ?InquireTransportType@OSF_BINDING_HANDLE@@VACGPEI@Z
+ 000A:0F94 ?Insert@BITSET@@RACHH@Z
+ 000A:53BE ?Insert@INTERFACE_AND_OBJECT_LIST@@RACHPEXPEVRPC_UUID@@@Z
+ 000B:C062 ?Insert@SIMPLE_DICT2@@RECHPEX0@Z
+ 000A:BFCC ?Insert@SIMPLE_DICT@@RACHPAX@Z
+ 000A:C134 ?InsureSecuritySupportLoaded@@ZAGXZ
+ 000A:7396 ?InvalidHandle@GENERIC_OBJECT@@RACIG@Z
+ 0000:0000 Unr ?IsAuthenticationServiceSupported@@ZAGK@Z
+ 000A:BEA2 ?IsNullUuid@RPC_UUID@@RECHXZ
+ 000A:0EEE ?IsRpcProtocolSequenceSupported@@ZAGPEE@Z
+ 000A:7496 ?IsSupportedAuthInfo@CLIENT_AUTH_INFO@@RACHPAU1@@Z
+ 000E:0010 ?LeaveSomeRoom@@3QADA
+ 000A:CDF0 ?LoadableTransportClientInfo@@ZAPAU_RPC_CLIENT_TRANSPORT_INFO@@PAEPEEPEG@Z
+ 000E:1C78 ?LoadedLoadableTransports@@3PAVCLIENT_LOADABLE_TRANSPORT_DICT@@A
+ 000E:0386 ?LoadedProviders@@3KA
+ 000A:DB4A ?LoadUuidValues@@ZCGPEVULong64@@PEK@Z
+ 000A:0ECE ?MakePartiallyBound@DCE_BINDING@@RACXXZ
+ 000A:77EA ?MapAuthenticationLevel@BINDING_HANDLE@@VACKK@Z
+ 000A:2C9A ?MapAuthenticationLevel@DG_BINDING_HANDLE@@VACKK@Z
+ 000A:8124 ?MapAuthenticationLevel@OSF_BINDING_HANDLE@@VACKK@Z
+ 0002:00B4 ?MapFromNcaStatusCode@@ZAGK@Z
+ 0002:0000 ?MapToNcaStatusCode@@ZAKG@Z
+ 000A:A39C ?MaybeDo3rdLegAuth@OSF_CCONNECTION@@RACGPEXI@Z
+ 000A:3F82 ?MaybeSendReceive@DG_CCALL@@BACGPEU_RPC_MESSAGE@@@Z
+ 000A:102E ?MemberP@BITSET@@RACHH@Z
+ 000B:A5F4 ?NdrMesTypeFree@@ZCXPAXPFU_MIDL_STUB_DESC@@PFEPEX@Z
+ 000B:952A ?NdrpAllocPicklingBuffer@@ZAXPEU_MIDL_ES_MESSAGE@@I@Z
+ 000B:A0F8 ?NdrpCommonTypeHeaderMarshall@@ZAIPEU_MIDL_ES_MESSAGE@@@Z
+ 000B:9FBA ?NdrpCommonTypeHeaderSize@@ZAXPEU_MIDL_ES_MESSAGE@@@Z
+ 000B:A2F0 ?NdrpCommonTypeHeaderUnmarshall@@ZAXPEU_MIDL_ES_MESSAGE@@@Z
+ 000B:998E ?NdrpDataBufferInit@@ZAXPEU_MIDL_ES_MESSAGE@@PFE@Z
+ 000B:8EB4 ?NdrpHandleAllocate@@ZAGPEPAX@Z
+ 000A:F7D0 ?NdrpLongByteSwap@@ZCXPEX0@Z
+ 000B:970A ?NdrpProcHeaderMarshall@@ZAXPEU_MIDL_ES_MESSAGE@@@Z
+ 000B:9840 ?NdrpProcHeaderUnmarshall@@ZAXPEU_MIDL_ES_MESSAGE@@@Z
+ 000B:965C ?NdrpReadPicklingBuffer@@ZAXPEU_MIDL_ES_MESSAGE@@I@Z
+ 000B:96BA ?NdrpWritePicklingBuffer@@ZAXPEU_MIDL_ES_MESSAGE@@PEEI@Z
+ 000A:0ACE ?NetworkAddressCompose@DCE_BINDING@@RACPEEPEG@Z
+ 000A:57E6 ?NewCall@DG_PACKET_ENGINE@@RACXXZ
+ 000A:C09E ?Next@SIMPLE_DICT@@RACPAXXZ
+ 000A:A7BE ?NotifyConnectionClosed@OSF_CASSOCIATION@@RACXXZ
+ 000E:0382 ?NumberOfProviders@@3KA
+ 000A:0A44 ?ObjectUuidCompose@DCE_BINDING@@RACPEEPEG@Z
+ 000A:2FF4 ?OptionalStringsEqual@@ZAHPEE0@Z
+ 000A:0B3A ?OptionsCompose@DCE_BINDING@@RACPEEPEG@Z
+ 000A:B378 ?OsfClientMapRpcProtocolSequence@@ZAPAXPEEPEG@Z
+ 000A:B3D6 ?OsfCreateBindingHandle@@ZAPAVBINDING_HANDLE@@XZ
+ 000A:B2EA ?OsfDeleteIdleConnections@@ZAXXZ
+ 000E:1C28 ?PacketListMutex@DG_PACKET@@0PAVMUTEX@@A
+ 000E:1C2A ?PacketLists@DG_PACKET@@0QAUPACKET_LIST@1@A
+ 000E:01A0 ?PacketToRpcFlagsArray@@3QBIB
+ 000A:01C6 ?ParseAndCopyEndpointField@@ZAGPAPAEPEE@Z
+ 000E:021A ?PartialRetries@@3KA
+ 000A:78E0 ?PerformGarbageCollection@@ZAXXZ
+ 000A:AA7A ?PingServer@OSF_CASSOCIATION@@RACGXZ
+ 000A:9D76 ?PingServer@OSF_CCONNECTION@@RACGXZ
+ 000A:29EA ?PrepareBindingHandle@DG_BINDING_HANDLE@@VACXPAXPAVDCE_BINDING@@@Z
+ 000A:8056 ?PrepareBindingHandle@OSF_BINDING_HANDLE@@VACXPAXPAVDCE_BINDING@@@Z
+ 000A:A7D6 ?ProcessBindAckOrNak@OSF_CASSOCIATION@@BACGPEUrpcconn_common@@IPAVOSF_CCONNECTION@@@Z
+ 000E:038E ?ProviderList@@3PEUSECURITY_PROVIDER_INFO@@E
+ 0000:0000 Unr ?PurgeAmbiguousActivities@DG_CASSOCIATION@@RACXXZ
+ 000A:3404 ?ReallocPipeBuffer@DG_CCALL@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:5570 ?ReallocPipeBuffer@MESSAGE_OBJECT@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:9B6A ?ReallocPipeBuffer@OSF_CCONNECTION@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000E:021E ?ReallyTooBusy@@3KA
+ 000A:58BC ?RecalcPduSize@DG_PACKET_ENGINE@@RACXXZ
+ 000A:780A ?Receive@BINDING_HANDLE@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:7826 ?Receive@CONNECTION@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:4062 ?Receive@DG_CCALL@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:8576 ?Receive@OSF_CCONNECTION@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:89B2 ?ReceiveMessage@OSF_CCONNECTION@@BACGPEU_RPC_MESSAGE@@PEII1@Z
+ 000A:9660 ?ReceiveNextChunk@OSF_CCONNECTION@@BACGPEU_RPC_MESSAGE@@IH@Z
+ 000A:94D8 ?ReceiveRequestOrResponse@OSF_CCONNECTION@@BACGPEU_RPC_MESSAGE@@I@Z
+ 000A:73CE ?ReferenceCredentials@CLIENT_AUTH_INFO@@RACXXZ
+ 000A:832C ?RemoveActiveConnection@OSF_BINDING_HANDLE@@RACXPAVOSF_CCONNECTION@@@Z
+ 000A:30E0 ?RemoveInterface@DG_CASSOCIATION@@RACHPEXPEVRPC_UUID@@@Z
+ 000A:2AA4 ?ResolveBinding@DG_BINDING_HANDLE@@VACGPEU_RPC_CLIENT_INTERFACE@@@Z
+ 000A:8144 ?ResolveBinding@OSF_BINDING_HANDLE@@VACGPEU_RPC_CLIENT_INTERFACE@@@Z
+ 000A:0C98 ?ResolveEndpointIfNecessary@DCE_BINDING@@RACGPEU_RPC_CLIENT_INTERFACE@@PEVRPC_UUID@@PEPEXHI@Z
+ 000E:0340 ?RpcClientNcacnMap@@3QAU_PROTSEQ_MAP@@A
+ 0000:0000 Unr ?RpcConfigInquireProtocolSequences@@ZAGPEPEU_RPC_PROTSEQ_VECTOR@@@Z
+ 000A:7BF8 ?RpcConfigMapRpcProtocolSequence@@ZAGIPEEPEPAE@Z
+ 000A:7D0E ?RpcGetAdditionalTransportInfo@@ZAGKPEPEE@Z
+ 000A:7D12 ?RpcGetSecurityProviderInfo@@ZAGKPEPAEPEK@Z
+ 000A:0A98 ?RpcProtocolSequenceCompose@DCE_BINDING@@RACPEEPEG@Z
+ 000D:0000 ?RpcSsDefaults@@3U_MALLOC_FREE_STRUCT@@E
+ 000E:0190 ?RpcToPacketFlagsArray@@3QBIB
+ 000A:DC50 ?SaveUuidValues@@ZCGPEVULong64@@PEK@Z
+ 000A:4974 ?SealAndSendPacket@DG_CCALL@@FACGPEU_NCA_PACKET_HEADER@@@Z
+ 000E:1C6C ?SecurityCritSect@@3PAVMUTEX@@A
+ 000E:037E ?SecuritySupportLoaded@@3HA
+ 000A:7804 ?Send@BINDING_HANDLE@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:7820 ?Send@CONNECTION@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:3D68 ?Send@DG_CCALL@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:8358 ?Send@OSF_CCONNECTION@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:3576 ?SendAck@DG_CCALL@@RACXXZ
+ 0000:0000 Unr ?SendAlert@OSF_CCONNECTION@@RACXXZ
+ 000A:9D88 ?SendBindPacket@OSF_CCONNECTION@@RACGPEU_RPC_SYNTAX_IDENTIFIER@@0IEKEPEPEXPEI@Z
+ 000A:60C4 ?SendFack@DG_PACKET_ENGINE@@RACGPEVDG_PACKET@@@Z
+ 000A:9A18 ?SendFault@OSF_CCONNECTION@@BACXGH@Z
+ 000A:5AE4 ?SendFragment@DG_PACKET_ENGINE@@RACGIEH@Z
+ 000A:9040 ?SendFragment@OSF_CCONNECTION@@BACGPEUrpcconn_common@@IIIIIPEEPEPEXPEI@Z
+ 000A:83A6 ?SendNextChunk@OSF_CCONNECTION@@RACGPEU_RPC_MESSAGE@@@Z
+ 0000:0000 Unr ?SendOrphan@OSF_CCONNECTION@@RACXXZ
+ 000A:5622 ?SendPing@DG_CCALL@@BACGXZ
+ 000A:48D0 ?SendQuit@DG_CCALL@@BACGXZ
+ 000A:77FE ?SendReceive@BINDING_HANDLE@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:3BC0 ?SendReceive@DG_CCALL@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:8652 ?SendReceive@OSF_CCONNECTION@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:3BD8 ?SendReceiveRecur@DG_CCALL@@BACGPEU_RPC_MESSAGE@@E@Z
+ 000A:868A ?SendReceiveRecur@OSF_CCONNECTION@@RACGPEU_RPC_MESSAGE@@I@Z
+ 000A:3D80 ?SendRecur@DG_CCALL@@BACGPEU_RPC_MESSAGE@@E@Z
+ 000A:83EC ?SendRecur@OSF_CCONNECTION@@RACGPEU_RPC_MESSAGE@@I@Z
+ 000A:8D5A ?SendRequestOrResponse@OSF_CCONNECTION@@BACGPEU_RPC_MESSAGE@@EPEVRPC_UUID@@H@Z
+ 000A:59CA ?SendSomeFragments@DG_PACKET_ENGINE@@RACGE@Z
+ 000A:52C4 ?SendSomething@DG_CCALL@@BACGXZ
+ 000B:8D04 ?SetAllocContext@@ZAXPEU_ALLOCATION_CONTEXT@@@Z
+ 000A:793C ?SetAuthInformation@BINDING_HANDLE@@VACGPEEKKPEXKPAVSECURITY_CREDENTIALS@@@Z
+ 0000:0000 Unr ?SetAuthInformation@OSF_CCONNECTION@@RACGPAUCLIENT_AUTH_INFO@@@Z
+ 000A:76A0 ?SetComTimeout@BINDING_HANDLE@@RACGI@Z
+ 000A:7814 ?SetConnectionParameter@BINDING_HANDLE@@VACGIK@Z
+ 000A:51EE ?SetConnectionParameter@DG_BINDING_HANDLE@@VACGIK@Z
+ 000A:7760 ?SetEntryName@BINDING_HANDLE@@RACGKPEE@Z
+ 000A:6664 ?SetFragmentLengths@DG_PACKET_ENGINE@@RACXPAVSECURITY_CONTEXT@@@Z
+ 000A:A172 ?SetMaxFrag@OSF_CCONNECTION@@RACXGG@Z
+ 000A:C57A ?SetMaximumLengths@SECURITY_CONTEXT@@RACXXZ
+ 000A:764E ?SetObjectUuid@BINDING_HANDLE@@RACXPEVRPC_UUID@@@Z
+ 000A:77BC ?SetServerPrincipalName@BINDING_HANDLE@@VACHPEE@Z
+ 000A:BBC6 ?SetToNullUuid@RPC_UUID@@RECXXZ
+ 000A:5848 ?SetupSendWindow@DG_PACKET_ENGINE@@RACXPEU_RPC_MESSAGE@@@Z
+ 000A:B11A ?ShutdownRequested@OSF_CASSOCIATION@@RACXXZ
+ 000A:512C ?SignOrSeal@DG_SECURITY_CONTEXT@@RACGKIPEU_SecBufferDesc@@@Z
+ 000A:C646 ?SignOrSeal@SECURITY_CONTEXT@@RACGKIPEU_SecBufferDesc@@@Z
+ 000A:40DC ?SingleSendReceive@DG_CCALL@@BACGXZ
+ 000A:07AC ?StringBindingCompose@DCE_BINDING@@RACPEEPEVRPC_UUID@@@Z
+ 000A:0162 ?StringCharSearchWithEscape@@ZAPEEPEEI@Z
+ 000A:0742 ?StringCopyEscapeCharacters@@ZAPEEPEE0@Z
+ 000A:018E ?StringCopyWithEscape@@ZAXPEE0@Z
+ 000A:0700 ?StringLengthWithEscape@@ZAHPEE@Z
+ 000E:1BFA ?ThreadStatic@@3VTHREAD@@A
+ 000A:D1C0 ?ToHexString@ULong64@@RECPEDPED@Z
+ 000A:2A52 ?ToStringBinding@DG_BINDING_HANDLE@@VACGPEPEE@Z
+ 000A:2FC4 ?ToStringBinding@DG_CASSOCIATION@@VACGPEPEEPEVRPC_UUID@@@Z
+ 000A:8072 ?ToStringBinding@OSF_BINDING_HANDLE@@VACGPEPEE@Z
+ 000A:B15E ?ToStringBinding@OSF_CASSOCIATION@@VACGPEPEEPEVRPC_UUID@@@Z
+ 000A:9CC0 ?TransFreeBuffer@OSF_CCONNECTION@@VACXPEX@Z
+ 000A:9C3A ?TransGetBuffer@OSF_CCONNECTION@@VACGPEPEXI@Z
+ 000A:CD00 ?TransMaximumSend@TRANS_CCONNECTION@@VACIXZ
+ 000A:C978 ?TransReceive@TRANS_CCONNECTION@@VACGPEPEXPEI@Z
+ 000A:CA4A ?TransSend@TRANS_CCONNECTION@@VACGPEXI@Z
+ 000A:CA92 ?TransSendReceive@TRANS_CCONNECTION@@VACGPEXIPEPEXPEI@Z
+ 000A:B5DC ?TransSendReceiveWithTimeout@OSF_CCONNECTION@@VACGPEXIPEPEXPEIK@Z
+ 000A:CB8A ?TransSendReceiveWithTimeout@TRANS_CCONNECTION@@VACGPEXIPEPEXPEIK@Z
+ 000A:CA10 ?TransSetTimeout@TRANS_CCONNECTION@@VACGJ@Z
+ 000A:77F8 ?Type@BINDING_HANDLE@@VACGXZ
+ 000A:7524 ?Type@CCONNECTION@@VACGXZ
+ 000A:AE6E ?UnBind@OSF_CASSOCIATION@@RACXXZ
+ 000A:26BA ?UpdateAssociationWithAddress@DG_CASSOCIATION@@RACPEXPEX@Z
+ 000A:5DAE ?UpdateReceiveWindow@DG_PACKET_ENGINE@@RACHPEVDG_PACKET@@@Z
+ 000A:5C60 ?UpdateSendWindow@DG_PACKET_ENGINE@@RACXPEVDG_PACKET@@PAVSECURITY_CONTEXT@@PAVDG_ASSOCIATION@@@Z
+ 000E:1BFC ?UuidCachedValues@@3U_UUID_CACHED_VALUES_STRUCT@@A
+ 000A:DCFA ?UuidGetValues@@ZCGPEU_UUID_CACHED_VALUES_STRUCT@@@Z
+ 000A:DAB2 ?UuidTime@@ZCXPEVULong64@@@Z
+ 000A:B668 ?ValidatePacket@@ZAGPEUrpcconn_common@@I@Z
+ 000A:C69A ?VerifyOrUnseal@SECURITY_CONTEXT@@RACGKIPEU_SecBufferDesc@@@Z
+ 0000:0000 Unr ?VerifyOrUnSealPacket@DG_SECURITY_CONTEXT@@RACGKIPEU_SecBufferDesc@@@Z
+ 000A:5180 ?VerifyPacket@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:648C ?VerifySecurePacket@@ZAGPEVDG_PACKET@@PAVSECURITY_CONTEXT@@@Z
+ 000E:182E ?__MIDLFormatString@@3U_MIDL_FORMAT_STRING@@F
+ 000A:7010 BINDTOEPMAPPER
+ 000A:F73E CHAR_ARRAY_FROM_NDR
+ 000A:F6FA CHAR_FROM_NDR
+ 000A:75F2 CLOSEBINDINGS
+ 000A:1458 CONV_CONV_ARE_YOU_THERE
+ 000A:11C0 CONV_CONV_WHO_ARE_YOU
+ 000A:12F2 CONV_CONV_WHO_ARE_YOU2
+ 000A:1570 CONV_CONV_WHO_ARE_YOU_AUTH
+ 0000:0000 Imp CREATEDIALOG (USER.89)
+ 0000:0000 Imp CREATEDIALOGINDIRECT (USER.219)
+ 000A:E2FC CREATEYIELDINFO
+ 000B:0000 DATA_FROM_NDR
+ 000B:0768 DATA_INTO_NDR
+ 000B:0E68 DATA_SIZE_NDR
+ 000A:E322 DELETEYIELDINFO
+ 0000:0000 Imp DISPATCHMESSAGE (USER.114)
+ 0000:0000 Imp DOS3CALL (KERNEL.102)
+ 000A:FAF6 DOUBLE_ARRAY_FROM_NDR
+ 000A:FA0A DOUBLE_FROM_NDR
+ 000B:1AD0 ENUM_FROM_NDR
+ 000A:70E6 EPFREELOOKUPHANDLE
+ 000A:6F96 EPGETEPMAPPERENDPOINT
+ 000A:6B8E EPRESOLVEENDPOINT
+ 000A:E126 EXCEPTIONCLEANUP
+ 0002:03E8 EXPLODEPREDEFINEDTOWERS
+ 0000:0000 Imp FATALAPPEXIT (KERNEL.137)
+ 0000:0000 Imp FATALEXIT (KERNEL.1)
+ 0000:FE32 Abs FIARQQ
+ 0000:0E32 Abs FICRQQ
+ 0000:5C32 Abs FIDRQQ
+ 0000:1632 Abs FIERQQ
+ 0000:0632 Abs FISRQQ
+ 0000:A23D Abs FIWRQQ
+ 0000:4000 Abs FJARQQ
+ 0000:C000 Abs FJCRQQ
+ 0000:8000 Abs FJSRQQ
+ 000A:F8F4 FLOAT_ARRAY_FROM_NDR
+ 000A:F83E FLOAT_FROM_NDR
+ 0000:0000 Imp FREELIBRARY (KERNEL.96)
+ 000A:7C98 GARBAGECOLLECTIONTIMER
+ 0000:0000 Imp GETCURRENTTASK (KERNEL.36)
+ 0000:0000 Imp GETCURRENTTIME (USER.15)
+ 0000:0000 Imp GETDOSENVIRONMENT (KERNEL.131)
+ 0000:0000 Imp GETMODULEHANDLE (KERNEL.47)
+ 0000:0000 Imp GETMODULEUSAGE (KERNEL.48)
+ 0002:0362 GETNWSTYLENAME
+ 0000:0000 Imp GETPARENT (USER.46)
+ 0000:0000 Imp GETPROCADDRESS (KERNEL.50)
+ 0000:0000 Imp GETPROFILESTRING (KERNEL.58)
+ 0000:0000 Imp GETSYSTEMMETRICS (USER.179)
+ 0000:0000 Imp GETVERSION (KERNEL.3)
+ 0000:0000 Imp GETWINDOWRECT (USER.32)
+ 0000:0000 Imp GETWINDOWWORD (USER.133)
+ 0000:0000 Imp GETWINFLAGS (KERNEL.132)
+ 0000:0000 Imp GLOBALALLOC (KERNEL.15)
+ 0000:0000 Imp GLOBALFREE (KERNEL.17)
+ 0000:0000 Imp GLOBALHANDLETOSEL (TOOLHELP.50)
+ 0000:0000 Imp GLOBALLOCK (KERNEL.18)
+ 0000:0000 Imp GLOBALREALLOC (KERNEL.16)
+ 0000:0000 Imp GLOBALSIZE (KERNEL.20)
+ 0000:0000 Imp GLOBALUNLOCK (KERNEL.19)
+ 000B:1C78 HYPER_ARRAY_FROM_NDR
+ 000B:1B42 HYPER_FROM_NDR
+ 000B:1DDA HYPER_FROM_NDR_TEMP
+ 000A:78E6 INITIALIZECLIENTDLL
+ 0000:0000 Imp INITTASK (KERNEL.91)
+ 0000:0000 Imp ISDIALOGMESSAGE (USER.90)
+ 0000:0000 Imp ISWINDOWVISIBLE (USER.49)
+ 000B:8F00 I_NDRMESMESSAGEINIT
+ 000A:1144 I_RPCALLOCATE
+ 000A:189A I_RPCBINDINGCOPY
+ 000A:1D70 I_RPCBINDINGINQTRANSPORTTYPE
+ 000A:115A I_RPCFREE
+ 000A:10CE I_RPCFREEBUFFER
+ 000A:10F4 I_RPCFREEPIPEBUFFER
+ 000A:106C I_RPCGETBUFFER
+ 000A:1E6E I_RPCIFINQTRANSFERSYNTAXES
+ 000A:1B16 I_RPCNSBINDINGSETENTRYNAME
+ 000A:1174 I_RPCPAUSEEXECUTION
+ 000A:111A I_RPCREALLOCPIPEBUFFER
+ 000A:7D76 I_RPCRECEIVE
+ 000A:7D52 I_RPCSEND
+ 000A:7D2E I_RPCSENDRECEIVE
+ 000A:119C I_RPCTIMECHARGE
+ 000A:11AA I_RPCTIMEGET
+ 000A:1190 I_RPCTIMERESET
+ 000A:CD94 I_RPCTRANSCLIENTMAXFRAG
+ 000A:CD12 I_RPCTRANSCLIENTREALLOCBUFFER
+ 000A:CDAA I_RPCTRANSPINGSERVER
+ 000A:E6FE I_RPCWINASYNCCALLBEGIN
+ 000C:0000 I_RPCWINASYNCCALLCOMPLETE
+ 000A:EB04 I_RPCWINASYNCCALLEND
+ 000A:E794 I_RPCWINASYNCCALLWAIT
+ 000A:E522 I_RPCWINCALLINPROGRESS
+ 000A:EB72 I_RPCWINISTASKYIELDING
+ 000A:E68A I_RPCWINSETTASKYIELDING
+ 000A:E434 I_RPCYIELDDIALOGFUNCTION
+ 000A:21DE I_UUIDCREATE
+ 0000:0000 Imp KILLTIMER (USER.12)
+ 000A:6B36 LIBMAIN
+ 0000:0000 Imp LOADLIBRARY (KERNEL.95)
+ 0000:0000 Imp LOCALALLOC (KERNEL.5)
+ 0000:0000 Imp LOCALFREE (KERNEL.7)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp LOCALREALLOC (KERNEL.6)
+ 0000:0000 Imp LOCALSIZE (KERNEL.10)
+ 0000:0000 Imp LOCKSEGMENT (KERNEL.23)
+ 000B:1926 LONG_ARRAY_FROM_NDR
+ 000B:1878 LONG_FROM_NDR
+ 000B:1A26 LONG_FROM_NDR_TEMP
+ 0000:0000 Imp LSTRCMPI (USER.471)
+ 0000:0000 Imp LSTRLEN (KERNEL.90)
+ 000B:92CE MESBUFFERHANDLERESET
+ 000B:922C MESDECODEBUFFERHANDLECREATE
+ 000B:8FA0 MESDECODEINCREMENTALHANDLECREATE
+ 000B:91B0 MESENCODEDYNBUFFERHANDLECREATE
+ 000B:9126 MESENCODEFIXEDBUFFERHANDLECREATE
+ 000B:8F32 MESENCODEINCREMENTALHANDLECREATE
+ 000B:8EE2 MESHANDLEFREE
+ 000B:900C MESINCREMENTALHANDLERESET
+ 000B:9462 MESINQPROCENCODINGID
+ 0000:0000 Imp MESSAGEBOX (USER.1)
+ 000A:71A4 MIDL_USER_ALLOCATE
+ 000A:71BA MIDL_USER_FREE
+ 000A:F6C4 MIDL_WCHAR_STRCPY
+ 000A:F698 MIDL_WCHAR_STRLEN
+ 000B:4782 NDRALLOCATE
+ 000B:6E58 NDRBYTECOUNTPOINTERBUFFERSIZE
+ 000B:5450 NDRBYTECOUNTPOINTERFREE
+ 000B:32CE NDRBYTECOUNTPOINTERMARSHALL
+ 0008:21E8 NDRBYTECOUNTPOINTERUNMARSHALL
+ 000A:F378 NDRCCONTEXTBINDING
+ 000A:F3B4 NDRCCONTEXTMARSHALL
+ 000A:F4F6 NDRCCONTEXTUNMARSHALL
+ 000B:7C2C NDRCLEAROUTPARAMETERS
+ 000B:362A NDRCLIENTCONTEXTMARSHALL
+ 0008:28F2 NDRCLIENTCONTEXTUNMARSHALL
+ 000B:4056 NDRCLIENTINITIALIZE
+ 000B:3FCC NDRCLIENTINITIALIZENEW
+ 000B:63CA NDRCOMPLEXARRAYBUFFERSIZE
+ 000B:4F6A NDRCOMPLEXARRAYFREE
+ 000B:29A4 NDRCOMPLEXARRAYMARSHALL
+ 0007:10CA NDRCOMPLEXARRAYMEMORYSIZE
+ 0008:16C0 NDRCOMPLEXARRAYUNMARSHALL
+ 000B:5B78 NDRCOMPLEXSTRUCTBUFFERSIZE
+ 000B:4B3A NDRCOMPLEXSTRUCTFREE
+ 0006:01F0 NDRCOMPLEXSTRUCTMARSHALL
+ 0007:0638 NDRCOMPLEXSTRUCTMEMORYSIZE
+ 0008:04AC NDRCOMPLEXSTRUCTUNMARSHALL
+ 000B:5FF4 NDRCONFORMANTARRAYBUFFERSIZE
+ 000B:4E02 NDRCONFORMANTARRAYFREE
+ 000B:2590 NDRCONFORMANTARRAYMARSHALL
+ 0007:0B58 NDRCONFORMANTARRAYMEMORYSIZE
+ 0008:0F0A NDRCONFORMANTARRAYUNMARSHALL
+ 000B:69A8 NDRCONFORMANTSTRINGBUFFERSIZE
+ 0006:074A NDRCONFORMANTSTRINGMARSHALL
+ 0007:1834 NDRCONFORMANTSTRINGMEMORYSIZE
+ 0008:0AE0 NDRCONFORMANTSTRINGUNMARSHALL
+ 000B:594C NDRCONFORMANTSTRUCTBUFFERSIZE
+ 000B:49FC NDRCONFORMANTSTRUCTFREE
+ 000B:2262 NDRCONFORMANTSTRUCTMARSHALL
+ 0007:02E6 NDRCONFORMANTSTRUCTMEMORYSIZE
+ 000B:3DF4 NDRCONFORMANTSTRUCTUNMARSHALL
+ 000B:60EE NDRCONFORMANTVARYINGARRAYBUFFERSIZE
+ 000B:4E64 NDRCONFORMANTVARYINGARRAYFREE
+ 000B:26B2 NDRCONFORMANTVARYINGARRAYMARSHALL
+ 0007:0CB6 NDRCONFORMANTVARYINGARRAYMEMORYSIZE
+ 0008:1160 NDRCONFORMANTVARYINGARRAYUNMARSHALL
+ 000B:5A04 NDRCONFORMANTVARYINGSTRUCTBUFFERSIZE
+ 000B:4A5E NDRCONFORMANTVARYINGSTRUCTFREE
+ 0006:0000 NDRCONFORMANTVARYINGSTRUCTMARSHALL
+ 0007:0442 NDRCONFORMANTVARYINGSTRUCTMEMORYSIZE
+ 0008:0000 NDRCONFORMANTVARYINGSTRUCTUNMARSHALL
+ 000B:73EC NDRCONTEXTHANDLESIZE
+ 0009:0124 NDRCONVERT
+ 0009:0000 NDRCONVERT2
+ 0005:0000 NDRCOPY
+ 000B:6B66 NDRENCAPSULATEDUNIONBUFFERSIZE
+ 000B:526C NDRENCAPSULATEDUNIONFREE
+ 000B:2FEA NDRENCAPSULATEDUNIONMARSHALL
+ 0007:19F4 NDRENCAPSULATEDUNIONMEMORYSIZE
+ 0008:1D32 NDRENCAPSULATEDUNIONUNMARSHALL
+ 000B:5F54 NDRFIXEDARRAYBUFFERSIZE
+ 000B:4DBA NDRFIXEDARRAYFREE
+ 000B:24C4 NDRFIXEDARRAYMARSHALL
+ 0007:0A60 NDRFIXEDARRAYMEMORYSIZE
+ 0008:0DAC NDRFIXEDARRAYUNMARSHALL
+ 000B:4736 NDRFREEBUFFER
+ 0008:2FDA NDRFULLPOINTERFREE
+ 0008:2F0E NDRFULLPOINTERINSERTREFID
+ 0008:2C10 NDRFULLPOINTERQUERYPOINTER
+ 0008:2E44 NDRFULLPOINTERQUERYREFID
+ 0008:2B10 NDRFULLPOINTERXLATFREE
+ 0008:2956 NDRFULLPOINTERXLATINIT
+ 000B:449E NDRGETBUFFER
+ 000B:5AE2 NDRHARDSTRUCTBUFFERSIZE
+ 000B:4AE6 NDRHARDSTRUCTFREE
+ 0006:011E NDRHARDSTRUCTMARSHALL
+ 0007:0574 NDRHARDSTRUCTMEMORYSIZE
+ 0008:02F6 NDRHARDSTRUCTUNMARSHALL
+ 000B:718E NDRINTERFACEPOINTERBUFFERSIZE
+ 000B:554C NDRINTERFACEPOINTERFREE
+ 000B:3618 NDRINTERFACEPOINTERMARSHALL
+ 0007:1F66 NDRINTERFACEPOINTERMEMORYSIZE
+ 0008:28E0 NDRINTERFACEPOINTERUNMARSHALL
+ 000B:484C NDRMAPCOMMANDFAULTSTATUS
+ 000B:B788 NDRMARSHALLHANDLE
+ 000B:A6B8 NDRMESSIMPLETYPEALIGNSIZE
+ 000B:A812 NDRMESSIMPLETYPEDECODE
+ 000B:A70A NDRMESSIMPLETYPEENCODE
+ 000B:9FF4 NDRMESTYPEALIGNSIZE
+ 000B:A3B0 NDRMESTYPEDECODE
+ 000B:A162 NDRMESTYPEENCODE
+ 000B:6878 NDRNONCONFORMANTSTRINGBUFFERSIZE
+ 0006:0652 NDRNONCONFORMANTSTRINGMARSHALL
+ 0007:1750 NDRNONCONFORMANTSTRINGMEMORYSIZE
+ 0008:099E NDRNONCONFORMANTSTRINGUNMARSHALL
+ 000B:6C28 NDRNONENCAPSULATEDUNIONBUFFERSIZE
+ 000B:531E NDRNONENCAPSULATEDUNIONFREE
+ 000B:30AE NDRNONENCAPSULATEDUNIONMARSHALL
+ 0007:1A42 NDRNONENCAPSULATEDUNIONMEMORYSIZE
+ 0008:1E50 NDRNONENCAPSULATEDUNIONUNMARSHALL
+ 000B:4592 NDRNSGETBUFFER
+ 000B:46A6 NDRNSSENDRECEIVE
+ 000B:5784 NDRPOINTERBUFFERSIZE
+ 000B:48DA NDRPOINTERFREE
+ 000B:2046 NDRPOINTERMARSHALL
+ 0007:0000 NDRPOINTERMEMORYSIZE
+ 000B:37BC NDRPOINTERUNMARSHALL
+ 0008:233E NDRPXMITORREPASPTRUNMARSHALL
+ 000B:8E48 NDRRPCSMCLIENTALLOCATE
+ 000B:8E7A NDRRPCSMCLIENTFREE
+ 000B:8DEC NDRRPCSMSETCLIENTTOOSF
+ 000B:8E18 NDRRPCSSDEFAULTALLOCATE
+ 000B:8E2E NDRRPCSSDEFAULTFREE
+ 000B:8DB8 NDRRPCSSDISABLEALLOCATE
+ 000B:8D84 NDRRPCSSENABLEALLOCATE
+ 000B:461E NDRSENDRECEIVE
+ 000B:367C NDRSERVERCONTEXTMARSHALL
+ 0008:2948 NDRSERVERCONTEXTUNMARSHALL
+ 000B:42DC NDRSERVERINITIALIZE
+ 000B:480C NDRSERVERINITIALIZEMARSHALL
+ 000B:41E6 NDRSERVERINITIALIZENEW
+ 000B:4400 NDRSERVERINITIALIZEPARTIAL
+ 000B:47E6 NDRSERVERINITIALIZEUNMARSHALL
+ 000B:58D4 NDRSIMPLESTRUCTBUFFERSIZE
+ 000B:49CC NDRSIMPLESTRUCTFREE
+ 000B:21CA NDRSIMPLESTRUCTMARSHALL
+ 0007:0218 NDRSIMPLESTRUCTMEMORYSIZE
+ 000B:3CBE NDRSIMPLESTRUCTUNMARSHALL
+ 000B:1F0C NDRSIMPLETYPEMARSHALL
+ 000B:368A NDRSIMPLETYPEUNMARSHALL
+ 000B:B81E NDRUNMARSHALLHANDLE
+ 000B:7070 NDRUSERMARSHALBUFFERSIZE
+ 000B:54E8 NDRUSERMARSHALFREE
+ 000B:3480 NDRUSERMARSHALMARSHALL
+ 0007:1E5E NDRUSERMARSHALMEMORYSIZE
+ 0009:1F50 NDRUSERMARSHALSIMPLETYPECONVERT
+ 0008:2714 NDRUSERMARSHALUNMARSHALL
+ 000B:6272 NDRVARYINGARRAYBUFFERSIZE
+ 000B:4EEC NDRVARYINGARRAYFREE
+ 000B:2850 NDRVARYINGARRAYMARSHALL
+ 0007:0ECC NDRVARYINGARRAYMEMORYSIZE
+ 0008:145C NDRVARYINGARRAYUNMARSHALL
+ 000B:6EFA NDRXMITORREPASBUFFERSIZE
+ 000B:5484 NDRXMITORREPASFREE
+ 000B:3332 NDRXMITORREPASMARSHALL
+ 0007:1D92 NDRXMITORREPASMEMORYSIZE
+ 0008:24C6 NDRXMITORREPASUNMARSHALL
+ 0000:0000 Imp NETBIOSCALL (KERNEL.103)
+ 0000:0000 Unr NETBIOSSUBMIT
+ 000A:DFAA NOTIFICATIONSTART
+ 000A:DFDA NOTIFICATIONSTOP
+ 0000:0000 Imp NOTIFYREGISTER (TOOLHELP.73)
+ 0000:0000 Imp NOTIFYUNREGISTER (TOOLHELP.74)
+ 000A:B41E OSFTOWERCONSTRUCT
+ 000A:B48A OSFTOWEREXPLODE
+ 0000:0008 Abs pAtomTable
+ 0000:0000 Imp PEEKMESSAGE (USER.109)
+ 0000:0006 Abs pLocalHeap
+ 0000:0000 Imp POSTMESSAGE (USER.110)
+ 0000:000E Abs pStackBot
+ 0000:000C Abs pStackMin
+ 0000:000A Abs pStackTop
+ 000A:1858 RPCBINDINGCOPY
+ 000A:18DC RPCBINDINGFREE
+ 000A:195A RPCBINDINGFROMSTRINGBINDING
+ 000A:1B5C RPCBINDINGINQAUTHINFO
+ 000A:1CDE RPCBINDINGINQOBJECT
+ 000A:1920 RPCBINDINGRESET
+ 000A:1C44 RPCBINDINGSETAUTHINFO
+ 000A:19D0 RPCBINDINGSETOBJECT
+ 000A:1D10 RPCBINDINGTOSTRINGBINDING
+ 000A:1A12 RPCBINDINGVECTORFREE
+ 0000:0000 Unr RPCDEBUG
+ 000A:1A90 RPCEPRESOLVEBINDING
+ 000A:E272 RpcGetExceptionHandler
+ 000A:1DA0 RPCIFINQID
+ 000A:E29C RPCLEAVEEXCEPTION
+ 000A:1F1C RPCMGMTBINDINGINQPARAMETER
+ 000A:1EE8 RPCMGMTBINDINGSETPARAMETER
+ 000A:1ED6 RPCMGMTENABLEIDLECLEANUP
+ 000A:1E10 RPCMGMTINQCOMTIMEOUT
+ 000A:1D40 RPCMGMTINQDEFAULTPROTECTLEVEL
+ 000A:1F96 RPCMGMTINQPARAMETER
+ 000A:1E40 RPCMGMTSETCOMTIMEOUT
+ 000A:1F54 RPCMGMTSETPARAMETER
+ 000A:1DF4 RPCNETWORKISPROTSEQVALID
+ 000A:1AD0 RPCNSBINDINGINQENTRYNAME
+ 000A:7B1A RPCPWINFARALLOCATE
+ 000A:7B2A RPCPWINFARFREE
+ 0003:003F RPCRAISEEXCEPTION
+ 000A:EBA2 RPCREGCLOSEKEY
+ 000A:EC00 RPCREGCREATEKEY
+ 000A:ED4A RPCREGOPENKEY
+ 000A:F106 RPCREGQUERYVALUE
+ 000A:EE76 RPCREGSETVALUE
+ 0003:0000 RPCSETEXCEPTION
+ 000A:E15C RpcSetExceptionHandler
+ 000B:89C0 RPCSMALLOCATE
+ 000B:8A12 RPCSMCLIENTFREE
+ 000B:8A82 RPCSMDESTROYCLIENTCONTEXT
+ 000B:8A4E RPCSMDISABLEALLOCATE
+ 000B:8ABE RPCSMENABLEALLOCATE
+ 000B:8AF2 RPCSMFREE
+ 000B:8B2E RPCSMGETTHREADHANDLE
+ 000B:8B80 RPCSMSETCLIENTALLOCFREE
+ 000B:8BC6 RPCSMSETTHREADHANDLE
+ 000B:8C02 RPCSMSWAPCLIENTALLOCFREE
+ 000B:86BC RPCSSALLOCATE
+ 000A:F64C RPCSSDESTROYCLIENTCONTEXT
+ 000B:875E RPCSSDISABLEALLOCATE
+ 000B:87F8 RPCSSENABLEALLOCATE
+ 000B:883A RPCSSFREE
+ 000B:88CC RPCSSGETTHREADHANDLE
+ 000B:890C RPCSSSETCLIENTALLOCFREE
+ 000B:8940 RPCSSSETTHREADHANDLE
+ 000B:8962 RPCSSSWAPCLIENTALLOCFREE
+ 000A:1FC6 RPCSTRINGBINDINGCOMPOSE
+ 000A:207A RPCSTRINGBINDINGPARSE
+ 000A:21A4 RPCSTRINGFREE
+ 000A:E59A RPCWINSETYIELDINFO
+ 000A:E65A RPCWINSETYIELDTIMEOUT
+ 000E:0004 rsrvptrs
+ 0000:0000 Imp SETERRORMODE (KERNEL.107)
+ 0000:0000 Imp SETTIMER (USER.10)
+ 0000:0000 Imp SETWINDOWPOS (USER.232)
+ 000B:1768 SHORT_ARRAY_FROM_NDR
+ 000B:1704 SHORT_FROM_NDR
+ 000B:1818 SHORT_FROM_NDR_TEMP
+ 0000:0000 Imp SHOWWINDOW (USER.42)
+ 0002:08E4 TOWERCONSTRUCT
+ 0002:0846 TOWEREXPLODE
+ 0000:0000 Imp TRANSLATEMESSAGE (USER.113)
+ 000B:0B48 TREE_INTO_NDR
+ 000B:144C TREE_PEEK_NDR
+ 000B:11D0 TREE_SIZE_NDR
+ 0000:0000 Imp UNLOCKSEGMENT (KERNEL.24)
+ 000A:23E8 UUIDCOMPARE
+ 000A:2202 UUIDCREATE
+ 000A:24E0 UUIDCREATENIL
+ 000A:24FC UUIDEQUAL
+ 000A:2394 UUIDFROMSTRING
+ 000A:2570 UUIDHASH
+ 000A:25A0 UUIDISNIL
+ 000A:2346 UUIDTOSTRING
+ 0001:0000 WEP
+ 000A:DF62 WINDLLATEXIT
+ 000A:DFFE WINDLLEXITHANDLERCALLBACK
+ 000A:E41A WINYIELDCLEANUP
+ 0000:0000 Imp YIELD (KERNEL.29)
+ 000A:E762 YIELDTIMERCALLBACK
+ 0000:0000 Unr _AnotherShortValue
+ 000E:03F7 _aseghi
+ 000E:03F5 _aseglo
+ 0004:3076 _atof
+ 0004:02F6 _atol
+ 000A:F312 _BuildFullKeyName
+ 000A:BF0C _ByteSwapUuid
+ 0000:0000 Unr _CheckCrtHeap
+ 000A:F300 _CloseRegistryFile
+ 000E:076C _ConvertRoutinesTable
+ 000A:35B4 _conv_are_you_there
+ 000E:00E4 _conv_DispatchTable
+ 000E:007E _conv_ServerIfHandle
+ 000A:3646 _conv_who_are_you
+ 000A:368C _conv_who_are_you2
+ 000A:36DA _conv_who_are_you_auth
+ 0002:027E _CopyIdToFloor
+ 000E:0EC8 _cray
+ 0009:22E2 _cvt_vax_f_to_ieee_single
+ 0008:3208 _cvt_vax_g_to_ieee_double
+ 000E:0800 _EbcdicToAscii
+ 000E:1BFA _edata
+ 000E:2CC9 _end
+ 000B:4526 _EnsureNSLoaded
+ 000E:0260 _epmp_ClientIfHandle
+ 000A:71D4 _ept_map
+ 000E:0410 _errno
+ 000E:2BB0 _ExceptTable
+ 000B:B6CA _ExplicitBindHandleMgr
+ 0004:16BE _fclose
+ 0004:17CE _fflush
+ 0004:192C _fgets
+ 000A:7142 _FixupForUniquePointerServers
+ 0002:0226 _Floor0or1ToId
+ 0004:17B4 _fopen
+ 000B:8D82 _ForceNdrCleanupSegIntoMemory
+ 0004:19AC _fputs
+ 000E:0932 _FreeRoutinesTable
+ 0004:1A04 _fseek
+ 0004:22F8 _ftell
+ 0004:1F00 _fwrite
+ 000E:036C _GcTimerIdentifier
+ 000B:B4D4 _GenericHandleMgr
+ 000B:B5FA _GenericHandleUnbind
+ 0004:12EE _getenv
+ 0002:02DA _GetProtseqAndEndpointFromFloor3
+ 000E:2BBC _hInstanceDLL
+ 000E:04A8 _HkeyClassesRoot
+ 000E:0E90 _ibm_l
+ 000E:0E74 _ibm_s
+ 000E:0DCC _ieee_s
+ 000E:0E04 _ieee_t
+ 000E:2BB6 _impH
+ 000B:B664 _ImplicitBindHandleMgr
+ 000A:E062 _InitializeWinExceptions
+ 000E:0F00 _int_c
+ 000A:D19C _I_Trace
+ 000B:415C _MakeSureWeHaveNonPipeArgs
+ 000E:05B0 _MarshallRoutinesTable
+ 0004:0418 _memcmp
+ 0004:0440 _memcpy
+ 0004:046C _memset
+ 000E:0644 _MemSizeRoutinesTable
+ 0009:1D28 _NdrByteCountPointerConvert
+ 000B:7422 _NdrClientCall
+ 000B:7E1C _NdrClientCall2
+ 000B:7D38 _NdrClientMapCommFault
+ 000B:7BAC _NdrClientZeroOut
+ 0009:12C2 _NdrComplexArrayConvert
+ 0009:0990 _NdrComplexStructConvert
+ 0009:0EB8 _NdrConformantArrayConvert
+ 0009:1896 _NdrConformantStringConvert
+ 0009:0792 _NdrConformantStructConvert
+ 0009:1008 _NdrConformantVaryingArrayConvert
+ 0009:2096 _NdrContextHandleConvert
+ 0009:1A44 _NdrEncapsulatedUnionConvert
+ 0009:0DD4 _NdrFixedArrayConvert
+ 0009:08E2 _NdrHardStructConvert
+ 0009:1FA2 _NdrInterfacePointerConvert
+ 000B:9A30 _NdrMesProcEncodeDecode
+ 0009:18F2 _NdrNonConformantStringConvert
+ 0009:1A70 _NdrNonEncapsulatedUnionConvert
+ 0009:1650 _NdrpArrayConvert
+ 000B:BC9C _NdrpArrayDimensions
+ 000B:BD34 _NdrpArrayElements
+ 000B:BE40 _NdrpArrayVariance
+ 000B:BF9E _NdrpCheckBound
+ 000B:644E _NdrpComplexArrayBufferSize
+ 0009:137A _NdrpComplexArrayConvert
+ 000B:2B14 _NdrpComplexArrayMarshall
+ 0007:1208 _NdrpComplexArrayMemorySize
+ 0008:186E _NdrpComplexArrayUnmarshall
+ 000B:AC3C _NdrpComputeConformance
+ 000B:AEE2 _NdrpComputeVariance
+ 000B:603E _NdrpConformantArrayBufferSize
+ 0009:0F28 _NdrpConformantArrayConvert
+ 000B:25E2 _NdrpConformantArrayMarshall
+ 0007:0BAC _NdrpConformantArrayMemorySize
+ 0008:108C _NdrpConformantArrayUnmarshall
+ 000B:6A00 _NdrpConformantStringBufferSize
+ 000B:237C _NdrpConformantStringMarshall
+ 0007:18C4 _NdrpConformantStringMemorySize
+ 0008:0D02 _NdrpConformantStringUnmarshall
+ 000B:6138 _NdrpConformantVaryingArrayBufferSize
+ 0009:105A _NdrpConformantVaryingArrayConvert
+ 000B:2704 _NdrpConformantVaryingArrayMarshall
+ 0007:0D0A _NdrpConformantVaryingArrayMemorySize
+ 0008:131A _NdrpConformantVaryingArrayUnmarshall
+ 000B:719C _NdrpEmbeddedPointerBufferSize
+ 0009:20BC _NdrpEmbeddedPointerConvert
+ 000B:555A _NdrpEmbeddedPointerFree
+ 000B:A946 _NdrpEmbeddedPointerMarshall
+ 0007:1FBE _NdrpEmbeddedPointerMemorySize
+ 000B:B1F4 _NdrpEmbeddedPointerUnmarshall
+ 000B:727A _NdrpEmbeddedRepeatPointerBufferSize
+ 0009:21C6 _NdrpEmbeddedRepeatPointerConvert
+ 000B:5636 _NdrpEmbeddedRepeatPointerFree
+ 000B:AABC _NdrpEmbeddedRepeatPointerMarshall
+ 0007:20C2 _NdrpEmbeddedRepeatPointerMemorySize
+ 000B:B35A _NdrpEmbeddedRepeatPointerUnmarshall
+ 000B:B8B8 _NdrpMemoryIncrement
+ 0009:05CC _NdrPointerConvert
+ 000B:57DE _NdrpPointerBufferSize
+ 0009:0640 _NdrpPointerConvert
+ 000B:20B8 _NdrpPointerMarshall
+ 0007:0066 _NdrpPointerMemorySize
+ 000B:3874 _NdrpPointerUnmarshall
+ 000B:85C6 _NdrpSetRpcSsDefaults
+ 000B:BEEC _NdrpSkipPointerLayout
+ 000B:BF4A _NdrpStringStructLen
+ 0009:0C00 _NdrpStructConvert
+ 000B:6C92 _NdrpUnionBufferSize
+ 0009:1AA8 _NdrpUnionConvert
+ 000B:5378 _NdrpUnionFree
+ 000B:311C _NdrpUnionMarshall
+ 0007:1A76 _NdrpUnionMemorySize
+ 0008:1F10 _NdrpUnionUnmarshall
+ 000B:8D36 _NdrRpcDeleteAllocationContext
+ 0009:06FA _NdrSimpleStructConvert
+ 0009:0238 _NdrSimpleTypeConvert
+ 000E:0A98 _NdrTypeFlags
+ 0009:1DEC _NdrUserMarshalConvert
+ 0009:1186 _NdrVaryingArrayConvert
+ 0009:1D7A _NdrXmitOrRepAsConvert
+ 000E:0900 _NsDllLoaded
+ 000E:03AC _OODebug
+ 000A:F282 _OpenRegistryFileIfNecessary
+ 000A:E2D4 _PauseExecution
+ 000E:07FC _pfnConvertRoutines
+ 000E:09C2 _pfnFreeRoutines
+ 000E:0640 _pfnMarshallRoutines
+ 000E:06D4 _pfnMemSizeRoutines
+ 000E:0A56 _pfnSizeRoutines
+ 000E:0768 _pfnUnmarshallRoutines
+ 000E:2BB2 _pRpcNsGetBuffer
+ 000E:2BB8 _pRpcNsSendReceive
+ 000E:0A5A _pRpcSsDefaults
+ 000E:04AE _RegistryDataFile
+ 000E:2BC8 _RegistryDataFileName
+ 0004:1B42 _remove
+ 0004:1B16 _rename
+ 000E:03B4 _RpcClientRuntimeInfo
+ 0000:0000 Unr _RpcpCheckHeap
+ 000A:E58E _SafeDecrement
+ 000A:E582 _SafeIncrement
+ 000E:0A62 _SimpleTypeAlignment
+ 000E:0A74 _SimpleTypeBufferSize
+ 000E:0A86 _SimpleTypeMemorySize
+ 000E:09C6 _SizeRoutinesTable
+ 0000:0000 Unr _SomeCharacterValue
+ 0000:0000 Unr _SomeLongValue
+ 0000:0000 Unr _SomeShortValue
+ 000E:03E8 _STKHQQ
+ 0004:2286 _strcat
+ 0004:22C6 _strcpy
+ 0004:02DA _strlen
+ 0004:158C _strncmp
+ 0004:12C6 _strncpy
+ 0004:1A86 _strtok
+ 000E:2BC6 _TableSize
+ 000E:03AA _TaskExiting
+ 0004:0386 _time
+ 000A:D162 _UnloadLoadableTransports
+ 000A:C0D8 _UnloadSecurityDll
+ 000E:06D8 _UnmarshallRoutinesTable
+ 000E:0D8C _vax_c
+ 000A:6B5A _WEP
+ 0000:0000 Imp _wsprintf (USER.420)
+ 000E:0F94 __aaltstkovr
+ 0000:9876 Abs __acrtmsg
+ 0000:9876 Abs __acrtused
+ 0000:D6D6 Abs __aDBdoswp
+ 000E:0442 __adbgmsg
+ 0000:D6D6 Abs __aDBused
+ 0004:0FBA __aFahdiff
+ 0004:2AEA __aFchkstk
+ 0004:1B66 __aFFaldiv
+ 0004:04A0 __aFFalmul
+ 0004:04C2 __aFFalshl
+ 0004:04A0 __aFFaulmul
+ 0004:04E2 __aFFaulshr
+ 0004:1104 __aFldiv
+ 0004:0502 __aFlmul
+ 0004:1458 __aFlrem
+ 0004:0534 __aFlshl
+ 0004:1B88 __aFlshr
+ 0004:0502 __aFulmul
+ 0004:0540 __aFulshr
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Imp __AHSHIFT (KERNEL.113)
+ 000E:0402 __aintdiv
+ 0004:034E __alloca
+ 000E:0454 __amblksiz
+ 0004:09A4 __amsg_exit
+ 0004:2ACA __aNchkstk
+ 000E:0F86 __asizeC
+ 000E:0F87 __asizeD
+ 0004:0054 __astart
+ 0004:0F66 __catox
+ 0004:0862 __cexit
+ 0004:2A04 __cfltcvt
+ 000E:0F66 __cfltcvt_tab
+ 000E:0F98 __cflush
+ 0004:25F6 __cftoe
+ 0004:27AC __cftof
+ 0004:292E __cftog
+ 000E:043F __child
+ 0004:2AEA __chkstk
+ 0004:081A __cinit
+ 0004:099A __cintDIV
+ 0004:224E __close
+ 0004:1034 __cltoasub
+ 0004:1BD2 __commit
+ 000E:0F9C __commode
+ 000E:041B __cpumode
+ 0004:24F2 __cropzeros
+ 0004:08C1 __ctermsub
+ 000E:0FA0 __ctype
+ 000E:0FA0 __ctype_
+ 0004:3051 __cXENIXtoDOSmode
+ 0004:1040 __cxtoa
+ 0004:0873 __c_exit
+ 000E:0496 __daylight
+ 000E:0478 __days
+ 000E:03F4 __dllinit
+ 000E:041C __doserrno
+ 0004:1EA2 __dosret0
+ 0004:1EC1 __dosretax
+ 0004:1EAF __dosreturn
+ 0004:0B8E __dostotime_t
+ 0000:0000 Unr __dos_close
+ 0004:315C __dos_commit
+ 0004:1094 __dos_getdate
+ 0004:10CC __dos_gettime
+ 0000:0000 Unr __dos_open
+ 000E:1BFA __edata
+ 000E:2CC9 __end
+ 000E:0438 __environ
+ 000E:0441 __exitflag
+ 000E:0406 __fac
+ 0004:25AC __fassign
+ 0004:0212 __ffree
+ 0004:08FE __FF_MSGBANNER
+ 000E:0446 __fheap
+ 0004:032A __fheapwalk
+ 0004:2010 __filbuf
+ 0004:0B6D __findlast
+ 0004:1354 __findseg
+ 0004:2C62 __flsbuf
+ 0004:3364 __fltin
+ 0004:3180 __fltout
+ 0000:9876 Abs __fltused
+ 0004:1824 __flush
+ 0004:189C __flushall
+ 0004:0233 __fmalloc
+ 0004:054C __fmemcmp
+ 0004:05A8 __fmemcpy
+ 0004:0724 __fmemmove
+ 0004:06DC __fmemset
+ 000E:10C6 __fmode
+ 0004:247C __forcdecpt
+ 000E:16A6 __fpinit
+ 0000:0000 Imp __fpmath (WIN87EM.1)
+ 0004:2AA6 __fpsignal
+ 0000:9876 Abs __fptaskdata
+ 0004:30C2 __fptostr
+ 0004:1216 __fptrap
+ 0004:049A __fpurecall
+ 0004:20B4 __freebuf
+ 0004:0A68 __freefarheap
+ 0004:11EC __freelist
+ 0004:1784 __fsopen
+ 0004:0688 __fstrcat
+ 0004:1B94 __fstrcmp
+ 0004:064C __fstrcpy
+ 0004:0606 __fstricmp
+ 0004:155E __fstrlen
+ 0004:14F8 __fstrncmp
+ 0004:1534 __fstrncpy
+ 0004:1E75 __ftbuf
+ 0004:00FE __ftime
+ 0004:2D42 __getbuf
+ 0004:124A __GetDGROUP
+ 0004:2212 __getstream
+ 0004:0A76 __growseg
+ 0004:137E __headchk
+ 000E:03EA __hModule
+ 0004:0B07 __incseg
+ 0004:125C __initseg
+ 000E:16B6 __iob
+ 000E:1756 __iob2
+ 000E:10C6 __iomode
+ 0004:0E1E __isindst
+ 0004:02FA __itoa
+ 000E:0F4A __lastiob
+ 0004:3BDB __LD12MULT
+ 0004:3B06 __LD12MULTTENPOWER
+ 0004:1290 __linkseg
+ 0004:13D3 __listchk
+ 000E:045E __lpdays
+ 000E:03F0 __lpszCmdLine
+ 0004:1C30 __lseek
+ 000E:0F9E __lseekchk
+ 0004:0316 __ltoa
+ 0004:3D60 __MANTOLD12
+ 0004:1ED3 __maperror
+ 000E:2BBE __mbac
+ 0004:121C __myalloc
+ 0004:125A __nearstub
+ 0004:09E6 __newseg
+ 000E:041E __nfile
+ 0004:1622 __nfree
+ 0004:15C6 __nmalloc
+ 0004:119E __NMSG_TEXT
+ 0004:11D5 __NMSG_WRITE
+ 0004:16AA __nmsize
+ 0004:00E5 __nomain
+ 0004:049A __npurecall
+ 0004:163C __nrealloc
+ 0004:2D9E __open
+ 0004:20E0 __openfile
+ 000E:041C __oserr
+ 000E:0420 __osfile
+ 000E:0417 __osmajor
+ 000E:0416 __osminor
+ 000E:041A __osmode
+ 000E:0416 __osver
+ 000E:0418 __osversion
+ 000E:043A __pgmptr
+ 000E:03FE __pnhFarHeap
+ 000E:04A4 __pnhNearHeap
+ 0004:2576 __positive
+ 0004:049A __purecall
+ 0004:2B24 __read
+ 0004:0EEA __searchseg
+ 0004:0922 __setenvp
+ 000E:0F84 __sigintoff
+ 000E:0F82 __sigintseg
+ 0000:0001 Abs __sizec
+ 0000:0000 Abs __sized
+ 0004:2D86 __sopen
+ 0004:3062 __stackavail
+ 0004:1E6A __stbuf
+ 0004:357E __STRINGTOD
+ 0004:35E6 __STRINGTOLD
+ 0004:07EE __stubmain
+ 0001:003C __STUBWEP
+ 000E:0492 __timezone
+ 000E:04A0 __tzname
+ 0004:0CA6 __tzset
+ 0004:0320 __ultoa
+ 000E:0412 __umaskval
+ 0004:1B42 __unlink
+ 0004:0FDA __walklist
+ 0004:1400 __walkone
+ 000E:03EC __wDataSeg
+ 0004:0010 __wflags
+ 000E:03EE __wHeapSize
+ 0000:0000 Imp __WINFLAGS (KERNEL.178)
+ 000E:0415 __winmajor
+ 000E:0414 __winminor
+ 000E:0414 __winver
+ 0004:1CF8 __write
+ 000E:03FB ___aDBrterr
+ 000E:03F9 ___aDBswpflg
+ 000E:0434 ___argc
+ 000E:0436 ___argv
+ 0004:1578 ___ExportedStub
+ 0004:0C8A ___tzset
+
+ Address Publics by Value
+
+ 0000:0000 Unr _RpcpCheckHeap
+ 0000:0000 Imp GETVERSION (KERNEL.3)
+ 0000:0000 Imp GETMODULEUSAGE (KERNEL.48)
+ 0000:0000 Unr ?SendOrphan@OSF_CCONNECTION@@RACXXZ
+ 0000:0000 Imp GETSYSTEMMETRICS (USER.179)
+ 0000:0000 Unr _SomeLongValue
+ 0000:0000 Imp LOCALALLOC (KERNEL.5)
+ 0000:0000 Imp NETBIOSCALL (KERNEL.103)
+ 0000:0000 Imp LOCALINIT (KERNEL.4)
+ 0000:0000 Imp SHOWWINDOW (USER.42)
+ 0000:0000 Imp NOTIFYUNREGISTER (TOOLHELP.74)
+ 0000:0000 Unr ?FlushPacketLists@DG_PACKET@@TAXXZ
+ 0000:0000 Unr __dos_close
+ 0000:0000 Imp POSTMESSAGE (USER.110)
+ 0000:0000 Imp INITTASK (KERNEL.91)
+ 0000:0000 Imp LOCALREALLOC (KERNEL.6)
+ 0000:0000 Imp __fpmath (WIN87EM.1)
+ 0000:0000 Imp UNLOCKSEGMENT (KERNEL.24)
+ 0000:0000 Unr _AnotherShortValue
+ 0000:0000 Imp __AHSHIFT (KERNEL.113)
+ 0000:0000 Imp GETPROFILESTRING (KERNEL.58)
+ 0000:0000 Imp LOCALFREE (KERNEL.7)
+ 0000:0000 Imp GETWINDOWWORD (USER.133)
+ 0000:0000 Imp GETWINDOWRECT (USER.32)
+ 0000:0000 Imp GLOBALUNLOCK (KERNEL.19)
+ 0000:0000 Imp GETWINFLAGS (KERNEL.132)
+ 0000:0000 Imp PEEKMESSAGE (USER.109)
+ 0000:0000 Imp GLOBALFREE (KERNEL.17)
+ 0000:0000 Unr __dos_open
+ 0000:0000 Imp GLOBALLOCK (KERNEL.18)
+ 0000:0000 Imp GETCURRENTTIME (USER.15)
+ 0000:0000 Unr ?SetAuthInformation@OSF_CCONNECTION@@RACGPAUCLIENT_AUTH_INFO@@@Z
+ 0000:0000 Imp GETCURRENTTASK (KERNEL.36)
+ 0000:0000 Imp LSTRLEN (KERNEL.90)
+ 0000:0000 Unr ??Z@ZAXAEVULong64@@0@Z
+ 0000:0000 Imp TRANSLATEMESSAGE (USER.113)
+ 0000:0000 Imp ISWINDOWVISIBLE (USER.49)
+ 0000:0000 Imp LOCKSEGMENT (KERNEL.23)
+ 0000:0000 Unr ??1SIMPLE_DICT2@@REC@XZ
+ 0000:0000 Unr ?VerifyOrUnSealPacket@DG_SECURITY_CONTEXT@@RACGKIPEU_SecBufferDesc@@@Z
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Imp GETMODULEHANDLE (KERNEL.47)
+ 0000:0000 Imp SETTIMER (USER.10)
+ 0000:0000 Imp GLOBALALLOC (KERNEL.15)
+ 0000:0000 Imp MESSAGEBOX (USER.1)
+ 0000:0000 Imp GLOBALREALLOC (KERNEL.16)
+ 0000:0000 Unr ?SendAlert@OSF_CCONNECTION@@RACXXZ
+ 0000:0000 Unr ?DeleteItemByBruteForce@SIMPLE_DICT@@RACPAXPAX@Z
+ 0000:0000 Imp ISDIALOGMESSAGE (USER.90)
+ 0000:0000 Imp DOS3CALL (KERNEL.102)
+ 0000:0000 Imp LOADLIBRARY (KERNEL.95)
+ 0000:0000 Imp __WINFLAGS (KERNEL.178)
+ 0000:0000 Unr _CheckCrtHeap
+ 0000:0000 Imp FATALEXIT (KERNEL.1)
+ 0000:0000 Unr NETBIOSSUBMIT
+ 0000:0000 Unr ?PurgeAmbiguousActivities@DG_CASSOCIATION@@RACXXZ
+ 0000:0000 Unr ?RpcConfigInquireProtocolSequences@@ZAGPEPEU_RPC_PROTSEQ_VECTOR@@@Z
+ 0000:0000 Imp GETDOSENVIRONMENT (KERNEL.131)
+ 0000:0000 Imp LSTRCMPI (USER.471)
+ 0000:0000 Unr ?AcquireCredentialsForServer@SECURITY_CREDENTIALS@@RACGP7CXPEXPEEKPEPEXPEG@Z0KK1@Z
+ 0000:0000 Imp CREATEDIALOGINDIRECT (USER.219)
+ 0000:0000 Abs __sized
+ 0000:0000 Imp YIELD (KERNEL.29)
+ 0000:0000 Unr _SomeShortValue
+ 0000:0000 Imp GETPARENT (USER.46)
+ 0000:0000 Imp KILLTIMER (USER.12)
+ 0000:0000 Imp GLOBALSIZE (KERNEL.20)
+ 0000:0000 Unr ?Find@SIMPLE_DICT@@RACPAXH@Z
+ 0000:0000 Imp _wsprintf (USER.420)
+ 0000:0000 Imp SETERRORMODE (KERNEL.107)
+ 0000:0000 Unr ?IsAuthenticationServiceSupported@@ZAGK@Z
+ 0000:0000 Imp NOTIFYREGISTER (TOOLHELP.73)
+ 0000:0000 Imp SETWINDOWPOS (USER.232)
+ 0000:0000 Imp FREELIBRARY (KERNEL.96)
+ 0000:0000 Unr RPCDEBUG
+ 0000:0000 Imp GETPROCADDRESS (KERNEL.50)
+ 0000:0000 Imp GLOBALHANDLETOSEL (TOOLHELP.50)
+ 0000:0000 Imp LOCALSIZE (KERNEL.10)
+ 0000:0000 Unr _SomeCharacterValue
+ 0000:0000 Imp FATALAPPEXIT (KERNEL.137)
+ 0000:0000 Imp CREATEDIALOG (USER.89)
+ 0000:0000 Imp DISPATCHMESSAGE (USER.114)
+ 0000:0001 Abs __sizec
+ 0000:0006 Abs pLocalHeap
+ 0000:0008 Abs pAtomTable
+ 0000:000A Abs pStackTop
+ 0000:000C Abs pStackMin
+ 0000:000E Abs pStackBot
+ 0000:0632 Abs FISRQQ
+ 0000:0E32 Abs FICRQQ
+ 0000:1632 Abs FIERQQ
+ 0000:9876 Abs __fltused
+ 0000:9876 Abs __acrtused
+ 0000:9876 Abs __acrtmsg
+ 0000:9876 Abs __fptaskdata
+ 0000:D6D6 Abs __aDBdoswp
+ 0000:D6D6 Abs __aDBused
+ 0001:0000 WEP
+ 0001:003C __STUBWEP
+ 0002:0000 ?MapToNcaStatusCode@@ZAKG@Z
+ 0002:00B4 ?MapFromNcaStatusCode@@ZAGK@Z
+ 0002:0226 _Floor0or1ToId
+ 0002:027E _CopyIdToFloor
+ 0002:02DA _GetProtseqAndEndpointFromFloor3
+ 0002:0362 GETNWSTYLENAME
+ 0002:03E8 EXPLODEPREDEFINEDTOWERS
+ 0002:0846 TOWEREXPLODE
+ 0002:08E4 TOWERCONSTRUCT
+ 0003:0000 RPCSETEXCEPTION
+ 0003:003F RPCRAISEEXCEPTION
+ 0004:0010 __wflags
+ 0004:0054 __astart
+ 0004:00E5 __nomain
+ 0004:00FE __ftime
+ 0004:0212 __ffree
+ 0004:0233 __fmalloc
+ 0004:02DA _strlen
+ 0004:02F6 _atol
+ 0004:02FA __itoa
+ 0004:0316 __ltoa
+ 0004:0320 __ultoa
+ 0004:032A __fheapwalk
+ 0004:034E __alloca
+ 0004:0386 _time
+ 0004:0418 _memcmp
+ 0004:0440 _memcpy
+ 0004:046C _memset
+ 0004:049A __npurecall
+ 0004:049A __fpurecall
+ 0004:049A __purecall
+ 0004:04A0 __aFFalmul
+ 0004:04A0 __aFFaulmul
+ 0004:04C2 __aFFalshl
+ 0004:04E2 __aFFaulshr
+ 0004:0502 __aFlmul
+ 0004:0502 __aFulmul
+ 0004:0534 __aFlshl
+ 0004:0540 __aFulshr
+ 0004:054C __fmemcmp
+ 0004:05A8 __fmemcpy
+ 0004:0606 __fstricmp
+ 0004:064C __fstrcpy
+ 0004:0688 __fstrcat
+ 0004:06DC __fmemset
+ 0004:0724 __fmemmove
+ 0004:07EE __stubmain
+ 0004:081A __cinit
+ 0004:0862 __cexit
+ 0004:0873 __c_exit
+ 0004:08C1 __ctermsub
+ 0004:08FE __FF_MSGBANNER
+ 0004:0922 __setenvp
+ 0004:099A __cintDIV
+ 0004:09A4 __amsg_exit
+ 0004:09E6 __newseg
+ 0004:0A68 __freefarheap
+ 0004:0A76 __growseg
+ 0004:0B07 __incseg
+ 0004:0B6D __findlast
+ 0004:0B8E __dostotime_t
+ 0004:0C8A ___tzset
+ 0004:0CA6 __tzset
+ 0004:0E1E __isindst
+ 0004:0EEA __searchseg
+ 0004:0F66 __catox
+ 0004:0FBA __aFahdiff
+ 0004:0FDA __walklist
+ 0004:1034 __cltoasub
+ 0004:1040 __cxtoa
+ 0004:1094 __dos_getdate
+ 0004:10CC __dos_gettime
+ 0004:1104 __aFldiv
+ 0004:119E __NMSG_TEXT
+ 0004:11D5 __NMSG_WRITE
+ 0004:11EC __freelist
+ 0004:1216 __fptrap
+ 0004:121C __myalloc
+ 0004:124A __GetDGROUP
+ 0004:125A __nearstub
+ 0004:125C __initseg
+ 0004:1290 __linkseg
+ 0004:12C6 _strncpy
+ 0004:12EE _getenv
+ 0004:1354 __findseg
+ 0004:137E __headchk
+ 0004:13D3 __listchk
+ 0004:1400 __walkone
+ 0004:1458 __aFlrem
+ 0004:14F8 __fstrncmp
+ 0004:1534 __fstrncpy
+ 0004:155E __fstrlen
+ 0004:1578 ___ExportedStub
+ 0004:158C _strncmp
+ 0004:15C6 __nmalloc
+ 0004:1622 __nfree
+ 0004:163C __nrealloc
+ 0004:16AA __nmsize
+ 0004:16BE _fclose
+ 0004:1784 __fsopen
+ 0004:17B4 _fopen
+ 0004:17CE _fflush
+ 0004:1824 __flush
+ 0004:189C __flushall
+ 0004:191A ??3@ZAXPEX@Z
+ 0004:192C _fgets
+ 0004:19AC _fputs
+ 0004:1A04 _fseek
+ 0004:1A86 _strtok
+ 0004:1B16 _rename
+ 0004:1B42 _remove
+ 0004:1B42 __unlink
+ 0004:1B66 __aFFaldiv
+ 0004:1B88 __aFlshr
+ 0004:1B94 __fstrcmp
+ 0004:1BD2 __commit
+ 0004:1C30 __lseek
+ 0004:1CF8 __write
+ 0004:1E6A __stbuf
+ 0004:1E75 __ftbuf
+ 0004:1EA2 __dosret0
+ 0004:1EAF __dosreturn
+ 0004:1EC1 __dosretax
+ 0004:1ED3 __maperror
+ 0004:1F00 _fwrite
+ 0004:2010 __filbuf
+ 0004:20B4 __freebuf
+ 0004:20E0 __openfile
+ 0004:2212 __getstream
+ 0004:224E __close
+ 0004:2286 _strcat
+ 0004:22C6 _strcpy
+ 0004:22F8 _ftell
+ 0004:247C __forcdecpt
+ 0004:24F2 __cropzeros
+ 0004:2576 __positive
+ 0004:25AC __fassign
+ 0004:25F6 __cftoe
+ 0004:27AC __cftof
+ 0004:292E __cftog
+ 0004:2A04 __cfltcvt
+ 0004:2AA6 __fpsignal
+ 0004:2ACA __aNchkstk
+ 0004:2AEA __chkstk
+ 0004:2AEA __aFchkstk
+ 0004:2B24 __read
+ 0004:2C62 __flsbuf
+ 0004:2D42 __getbuf
+ 0004:2D86 __sopen
+ 0004:2D9E __open
+ 0004:3051 __cXENIXtoDOSmode
+ 0004:3062 __stackavail
+ 0004:3076 _atof
+ 0004:30C2 __fptostr
+ 0004:315C __dos_commit
+ 0004:3180 __fltout
+ 0004:321E $i8_output
+ 0004:3364 __fltin
+ 0004:3540 $i8_tpwr10
+ 0004:357E __STRINGTOD
+ 0004:35E6 __STRINGTOLD
+ 0004:3B06 __LD12MULTTENPOWER
+ 0004:3BDB __LD12MULT
+ 0004:3D60 __MANTOLD12
+ 0005:0000 NDRCOPY
+ 0006:0000 NDRCONFORMANTVARYINGSTRUCTMARSHALL
+ 0006:011E NDRHARDSTRUCTMARSHALL
+ 0006:01F0 NDRCOMPLEXSTRUCTMARSHALL
+ 0006:0652 NDRNONCONFORMANTSTRINGMARSHALL
+ 0006:074A NDRCONFORMANTSTRINGMARSHALL
+ 0007:0000 NDRPOINTERMEMORYSIZE
+ 0007:0066 _NdrpPointerMemorySize
+ 0007:0218 NDRSIMPLESTRUCTMEMORYSIZE
+ 0007:02E6 NDRCONFORMANTSTRUCTMEMORYSIZE
+ 0007:0442 NDRCONFORMANTVARYINGSTRUCTMEMORYSIZE
+ 0007:0574 NDRHARDSTRUCTMEMORYSIZE
+ 0007:0638 NDRCOMPLEXSTRUCTMEMORYSIZE
+ 0007:0A60 NDRFIXEDARRAYMEMORYSIZE
+ 0007:0B58 NDRCONFORMANTARRAYMEMORYSIZE
+ 0007:0BAC _NdrpConformantArrayMemorySize
+ 0007:0CB6 NDRCONFORMANTVARYINGARRAYMEMORYSIZE
+ 0007:0D0A _NdrpConformantVaryingArrayMemorySize
+ 0007:0ECC NDRVARYINGARRAYMEMORYSIZE
+ 0007:10CA NDRCOMPLEXARRAYMEMORYSIZE
+ 0007:1208 _NdrpComplexArrayMemorySize
+ 0007:1750 NDRNONCONFORMANTSTRINGMEMORYSIZE
+ 0007:1834 NDRCONFORMANTSTRINGMEMORYSIZE
+ 0007:18C4 _NdrpConformantStringMemorySize
+ 0007:19F4 NDRENCAPSULATEDUNIONMEMORYSIZE
+ 0007:1A42 NDRNONENCAPSULATEDUNIONMEMORYSIZE
+ 0007:1A76 _NdrpUnionMemorySize
+ 0007:1D92 NDRXMITORREPASMEMORYSIZE
+ 0007:1E5E NDRUSERMARSHALMEMORYSIZE
+ 0007:1F66 NDRINTERFACEPOINTERMEMORYSIZE
+ 0007:1FBE _NdrpEmbeddedPointerMemorySize
+ 0007:20C2 _NdrpEmbeddedRepeatPointerMemorySize
+ 0008:0000 NDRCONFORMANTVARYINGSTRUCTUNMARSHALL
+ 0008:02F6 NDRHARDSTRUCTUNMARSHALL
+ 0008:04AC NDRCOMPLEXSTRUCTUNMARSHALL
+ 0008:099E NDRNONCONFORMANTSTRINGUNMARSHALL
+ 0008:0AE0 NDRCONFORMANTSTRINGUNMARSHALL
+ 0008:0D02 _NdrpConformantStringUnmarshall
+ 0008:0DAC NDRFIXEDARRAYUNMARSHALL
+ 0008:0F0A NDRCONFORMANTARRAYUNMARSHALL
+ 0008:108C _NdrpConformantArrayUnmarshall
+ 0008:1160 NDRCONFORMANTVARYINGARRAYUNMARSHALL
+ 0008:131A _NdrpConformantVaryingArrayUnmarshall
+ 0008:145C NDRVARYINGARRAYUNMARSHALL
+ 0008:16C0 NDRCOMPLEXARRAYUNMARSHALL
+ 0008:186E _NdrpComplexArrayUnmarshall
+ 0008:1D32 NDRENCAPSULATEDUNIONUNMARSHALL
+ 0008:1E50 NDRNONENCAPSULATEDUNIONUNMARSHALL
+ 0008:1F10 _NdrpUnionUnmarshall
+ 0008:21E8 NDRBYTECOUNTPOINTERUNMARSHALL
+ 0008:233E NDRPXMITORREPASPTRUNMARSHALL
+ 0008:24C6 NDRXMITORREPASUNMARSHALL
+ 0008:2714 NDRUSERMARSHALUNMARSHALL
+ 0008:28E0 NDRINTERFACEPOINTERUNMARSHALL
+ 0008:28F2 NDRCLIENTCONTEXTUNMARSHALL
+ 0008:2948 NDRSERVERCONTEXTUNMARSHALL
+ 0008:2956 NDRFULLPOINTERXLATINIT
+ 0008:2B10 NDRFULLPOINTERXLATFREE
+ 0008:2C10 NDRFULLPOINTERQUERYPOINTER
+ 0008:2E44 NDRFULLPOINTERQUERYREFID
+ 0008:2F0E NDRFULLPOINTERINSERTREFID
+ 0008:2FDA NDRFULLPOINTERFREE
+ 0008:3208 _cvt_vax_g_to_ieee_double
+ 0009:0000 NDRCONVERT2
+ 0009:0124 NDRCONVERT
+ 0009:0238 _NdrSimpleTypeConvert
+ 0009:05CC _NdrPointerConvert
+ 0009:0640 _NdrpPointerConvert
+ 0009:06FA _NdrSimpleStructConvert
+ 0009:0792 _NdrConformantStructConvert
+ 0009:08E2 _NdrHardStructConvert
+ 0009:0990 _NdrComplexStructConvert
+ 0009:0C00 _NdrpStructConvert
+ 0009:0DD4 _NdrFixedArrayConvert
+ 0009:0EB8 _NdrConformantArrayConvert
+ 0009:0F28 _NdrpConformantArrayConvert
+ 0009:1008 _NdrConformantVaryingArrayConvert
+ 0009:105A _NdrpConformantVaryingArrayConvert
+ 0009:1186 _NdrVaryingArrayConvert
+ 0009:12C2 _NdrComplexArrayConvert
+ 0009:137A _NdrpComplexArrayConvert
+ 0009:1650 _NdrpArrayConvert
+ 0009:1896 _NdrConformantStringConvert
+ 0009:18F2 _NdrNonConformantStringConvert
+ 0009:1A44 _NdrEncapsulatedUnionConvert
+ 0009:1A70 _NdrNonEncapsulatedUnionConvert
+ 0009:1AA8 _NdrpUnionConvert
+ 0009:1D28 _NdrByteCountPointerConvert
+ 0009:1D7A _NdrXmitOrRepAsConvert
+ 0009:1DEC _NdrUserMarshalConvert
+ 0009:1F50 NDRUSERMARSHALSIMPLETYPECONVERT
+ 0009:1FA2 _NdrInterfacePointerConvert
+ 0009:2096 _NdrContextHandleConvert
+ 0009:20BC _NdrpEmbeddedPointerConvert
+ 0009:21C6 _NdrpEmbeddedRepeatPointerConvert
+ 0009:22E2 _cvt_vax_f_to_ieee_single
+ 000A:0000 ?DuplicateString@@ZAPAEPEE@Z
+ 000A:0066 ??0DCE_BINDING@@RAC@PEE0000PEG@Z
+ 000A:0162 ?StringCharSearchWithEscape@@ZAPEEPEEI@Z
+ 000A:018E ?StringCopyWithEscape@@ZAXPEE0@Z
+ 000A:01C6 ?ParseAndCopyEndpointField@@ZAGPAPAEPEE@Z
+ 000A:0282 ?AllocateEmptyString@@ZAPAEXZ
+ 000A:0298 ??0DCE_BINDING@@RAC@PEEPEG@Z
+ 000A:06B0 ??1DCE_BINDING@@RAC@XZ
+ 000A:0700 ?StringLengthWithEscape@@ZAHPEE@Z
+ 000A:0742 ?StringCopyEscapeCharacters@@ZAPEEPEE0@Z
+ 000A:07AC ?StringBindingCompose@DCE_BINDING@@RACPEEPEVRPC_UUID@@@Z
+ 000A:09C2 ?AllocateEmptyStringPAPI@@ZAPEEXZ
+ 000A:09E4 ?DuplicateStringPAPI@@ZAPEEPAE@Z
+ 000A:0A44 ?ObjectUuidCompose@DCE_BINDING@@RACPEEPEG@Z
+ 000A:0A98 ?RpcProtocolSequenceCompose@DCE_BINDING@@RACPEEPEG@Z
+ 000A:0ACE ?NetworkAddressCompose@DCE_BINDING@@RACPEEPEG@Z
+ 000A:0B04 ?EndpointCompose@DCE_BINDING@@RACPEEPEG@Z
+ 000A:0B3A ?OptionsCompose@DCE_BINDING@@RACPEEPEG@Z
+ 000A:0B70 ?CreateBindingHandle@DCE_BINDING@@RACPAVBINDING_HANDLE@@PEG@Z
+ 000A:0C76 ?AddEndpoint@DCE_BINDING@@RACXPAE@Z
+ 000A:0C98 ?ResolveEndpointIfNecessary@DCE_BINDING@@RACGPEU_RPC_CLIENT_INTERFACE@@PEVRPC_UUID@@PEPEXHI@Z
+ 000A:0DAE ?Compare@DCE_BINDING@@RACHPAV1@@Z
+ 000A:0E72 ?DuplicateDceBinding@DCE_BINDING@@RACPAV1@XZ
+ 000A:0ECE ?MakePartiallyBound@DCE_BINDING@@RACXXZ
+ 000A:0EEE ?IsRpcProtocolSequenceSupported@@ZAGPEE@Z
+ 000A:0F78 ??1BITSET@@RAC@XZ
+ 000A:0F94 ?Insert@BITSET@@RACHH@Z
+ 000A:102E ?MemberP@BITSET@@RACHH@Z
+ 000A:106C I_RPCGETBUFFER
+ 000A:10CE I_RPCFREEBUFFER
+ 000A:10F4 I_RPCFREEPIPEBUFFER
+ 000A:111A I_RPCREALLOCPIPEBUFFER
+ 000A:1144 I_RPCALLOCATE
+ 000A:115A I_RPCFREE
+ 000A:1174 I_RPCPAUSEEXECUTION
+ 000A:1190 I_RPCTIMERESET
+ 000A:119C I_RPCTIMECHARGE
+ 000A:11AA I_RPCTIMEGET
+ 000A:11C0 CONV_CONV_WHO_ARE_YOU
+ 000A:12F2 CONV_CONV_WHO_ARE_YOU2
+ 000A:1458 CONV_CONV_ARE_YOU_THERE
+ 000A:1570 CONV_CONV_WHO_ARE_YOU_AUTH
+ 000A:1858 RPCBINDINGCOPY
+ 000A:189A I_RPCBINDINGCOPY
+ 000A:18DC RPCBINDINGFREE
+ 000A:1920 RPCBINDINGRESET
+ 000A:195A RPCBINDINGFROMSTRINGBINDING
+ 000A:19D0 RPCBINDINGSETOBJECT
+ 000A:1A12 RPCBINDINGVECTORFREE
+ 000A:1A90 RPCEPRESOLVEBINDING
+ 000A:1AD0 RPCNSBINDINGINQENTRYNAME
+ 000A:1B16 I_RPCNSBINDINGSETENTRYNAME
+ 000A:1B5C RPCBINDINGINQAUTHINFO
+ 000A:1C44 RPCBINDINGSETAUTHINFO
+ 000A:1CDE RPCBINDINGINQOBJECT
+ 000A:1D10 RPCBINDINGTOSTRINGBINDING
+ 000A:1D40 RPCMGMTINQDEFAULTPROTECTLEVEL
+ 000A:1D70 I_RPCBINDINGINQTRANSPORTTYPE
+ 000A:1DA0 RPCIFINQID
+ 000A:1DF4 RPCNETWORKISPROTSEQVALID
+ 000A:1E10 RPCMGMTINQCOMTIMEOUT
+ 000A:1E40 RPCMGMTSETCOMTIMEOUT
+ 000A:1E6E I_RPCIFINQTRANSFERSYNTAXES
+ 000A:1ED6 RPCMGMTENABLEIDLECLEANUP
+ 000A:1EE8 RPCMGMTBINDINGSETPARAMETER
+ 000A:1F1C RPCMGMTBINDINGINQPARAMETER
+ 000A:1F54 RPCMGMTSETPARAMETER
+ 000A:1F96 RPCMGMTINQPARAMETER
+ 000A:1FC6 RPCSTRINGBINDINGCOMPOSE
+ 000A:207A RPCSTRINGBINDINGPARSE
+ 000A:21A4 RPCSTRINGFREE
+ 000A:21DE I_UUIDCREATE
+ 000A:2202 UUIDCREATE
+ 000A:2346 UUIDTOSTRING
+ 000A:2394 UUIDFROMSTRING
+ 000A:23E8 UUIDCOMPARE
+ 000A:24E0 UUIDCREATENIL
+ 000A:24FC UUIDEQUAL
+ 000A:2570 UUIDHASH
+ 000A:25A0 UUIDISNIL
+ 000A:25D0 ?InitializeRpcProtocolDgClient@@ZAHXZ
+ 000A:2672 ?DgCreateBindingHandle@@ZAPAVBINDING_HANDLE@@XZ
+ 000A:26BA ?UpdateAssociationWithAddress@DG_CASSOCIATION@@RACPEXPEX@Z
+ 000A:272C ??0DG_BINDING_HANDLE@@RAC@PEG@Z
+ 000A:2754 ??1DG_BINDING_HANDLE@@VAC@XZ
+ 000A:27C6 ?GetBuffer@DG_BINDING_HANDLE@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:29C8 ?BindingFree@DG_BINDING_HANDLE@@VACGXZ
+ 000A:29EA ?PrepareBindingHandle@DG_BINDING_HANDLE@@VACXPAXPAVDCE_BINDING@@@Z
+ 000A:2A52 ?ToStringBinding@DG_BINDING_HANDLE@@VACGPEPEE@Z
+ 000A:2AA4 ?ResolveBinding@DG_BINDING_HANDLE@@VACGPEU_RPC_CLIENT_INTERFACE@@@Z
+ 000A:2AD8 ?BindingReset@DG_BINDING_HANDLE@@VACGXZ
+ 000A:2B1A ?BindingCopy@DG_BINDING_HANDLE@@VACGPEPAVBINDING_HANDLE@@I@Z
+ 000A:2C4A ?DisassociateFromServer@DG_BINDING_HANDLE@@RACXXZ
+ 000A:2C9A ?MapAuthenticationLevel@DG_BINDING_HANDLE@@VACKK@Z
+ 000A:2CC6 ??0DG_CASSOCIATION@@RAC@PEU_DG_RPC_CLIENT_TRANSPORT_INFO@@PAVDG_BINDING_HANDLE@@KPAVDCE_BINDING@@PEG@Z
+ 000A:2DE2 ??1DG_CASSOCIATION@@RAC@XZ
+ 000A:2E82 ?AllocateCCall@DG_CASSOCIATION@@RACGPEPAVDG_CCALL@@PAUCLIENT_AUTH_INFO@@@Z
+ 000A:2F68 ?FreeCall@DG_CASSOCIATION@@RACXPAVDG_CCALL@@@Z
+ 000A:2FC4 ?ToStringBinding@DG_CASSOCIATION@@VACGPEPEEPEVRPC_UUID@@@Z
+ 000A:2FF4 ?OptionalStringsEqual@@ZAHPEE0@Z
+ 000A:303A ?ComparePartialBinding@DG_CASSOCIATION@@RACHPAVDG_BINDING_HANDLE@@PEX@Z
+ 000A:30C0 ?AddInterface@DG_CASSOCIATION@@RACHPEXPEVRPC_UUID@@@Z
+ 000A:30E0 ?RemoveInterface@DG_CASSOCIATION@@RACHPEXPEVRPC_UUID@@@Z
+ 000A:3100 ??0DG_CCALL@@RAC@PAVDG_CASSOCIATION@@IPAUCLIENT_AUTH_INFO@@PEG@Z
+ 000A:3264 ??1DG_CCALL@@VAC@XZ
+ 000A:32EA ?GetBuffer@DG_CCALL@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:334E ?FreeBuffer@DG_CCALL@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:3390 ?FreePipeBuffer@DG_CCALL@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:33A6 ?FreeInParms@DG_CCALL@@BACXPEU_RPC_MESSAGE@@@Z
+ 000A:3404 ?ReallocPipeBuffer@DG_CCALL@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:34B6 ?FreeEndpoint@DG_CCALL@@BACXXZ
+ 000A:34D4 ?BuildNcaPacketHeader@DG_CCALL@@BACXPEU_NCA_PACKET_HEADER@@PEU_RPC_MESSAGE@@@Z
+ 000A:3576 ?SendAck@DG_CCALL@@RACXXZ
+ 000A:35B4 _conv_are_you_there
+ 000A:3646 _conv_who_are_you
+ 000A:368C _conv_who_are_you2
+ 000A:36DA _conv_who_are_you_auth
+ 000A:3762 ??0DG_ENDPOINT_MANAGER@@RAC@PEU_DG_RPC_CLIENT_TRANSPORT_INFO@@PEG@Z
+ 000A:379A ?AllocateEndpoint@DG_ENDPOINT_MANAGER@@RACPAUENDPOINT@@XZ
+ 000A:386E ?IncrementReferenceCount@DG_ENDPOINT_MANAGER@@RACXXZ
+ 000A:3880 ?DecrementReferenceCount@DG_ENDPOINT_MANAGER@@RACXXZ
+ 000A:38CE ?CleanupForThisTask@DG_ENDPOINT_MANAGER@@RACXXZ
+ 000A:391E ?CleanupDgTransports@@ZAXXZ
+ 000A:3942 ?BeforeSendReceive@DG_CCALL@@BACGPEU_RPC_MESSAGE@@@Z
+ 000A:3A3C ?AfterSendReceive@DG_CCALL@@BACGPEU_RPC_MESSAGE@@G@Z
+ 000A:3BC0 ?SendReceive@DG_CCALL@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:3BD8 ?SendReceiveRecur@DG_CCALL@@BACGPEU_RPC_MESSAGE@@E@Z
+ 000A:3D68 ?Send@DG_CCALL@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:3D80 ?SendRecur@DG_CCALL@@BACGPEU_RPC_MESSAGE@@E@Z
+ 000A:3F82 ?MaybeSendReceive@DG_CCALL@@BACGPEU_RPC_MESSAGE@@@Z
+ 000A:4062 ?Receive@DG_CCALL@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:40DC ?SingleSendReceive@DG_CCALL@@BACGXZ
+ 000A:43DA ?DealWithRequest@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:45D6 ?DealWithFack@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:4678 ?DealWithResponse@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:46FA ?DealWithWorking@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:479C ?DealWithNocall@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:47F6 ?DealWithFault@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:48D0 ?SendQuit@DG_CCALL@@BACGXZ
+ 000A:4960 ?DealWithQuack@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:4974 ?SealAndSendPacket@DG_CCALL@@FACGPEU_NCA_PACKET_HEADER@@@Z
+ 000A:4CB2 ?InitErrorPacket@DG_CCALL@@BACXPEU_NCA_PACKET_HEADER@@EG@Z
+ 000A:4D0A ?InitializeSecurityContextA@DG_CCALL@@BACGXZ
+ 000A:4E64 ?DealWithAuthCallback@DG_CCALL@@BACGPEXJ0JPEJ@Z
+ 000A:4F82 ?InitializeFirstTime@DG_SECURITY_CONTEXT@@RACGPAVSECURITY_CREDENTIALS@@PAEKPEU_SecBufferDesc@@@Z
+ 000A:5096 ?InitializeOnCallback@DG_SECURITY_CONTEXT@@RACGKPEU_SecBufferDesc@@0@Z
+ 000A:512C ?SignOrSeal@DG_SECURITY_CONTEXT@@RACGKIPEU_SecBufferDesc@@@Z
+ 000A:5180 ?VerifyPacket@DG_CCALL@@BACGPEVDG_PACKET@@@Z
+ 000A:51EE ?SetConnectionParameter@DG_BINDING_HANDLE@@VACGIK@Z
+ 000A:5276 ?InqConnectionParameter@DG_BINDING_HANDLE@@VACGIPEK@Z
+ 000A:52A6 ?CompareWithBinding@DG_CASSOCIATION@@RACHPAVDG_BINDING_HANDLE@@@Z
+ 000A:52C4 ?SendSomething@DG_CCALL@@BACGXZ
+ 000A:53BE ?Insert@INTERFACE_AND_OBJECT_LIST@@RACHPEXPEVRPC_UUID@@@Z
+ 000A:5442 ?Find@INTERFACE_AND_OBJECT_LIST@@RACHPEXPEVRPC_UUID@@@Z
+ 000A:54AE ?Delete@INTERFACE_AND_OBJECT_LIST@@RACHPEXPEVRPC_UUID@@@Z
+ 000A:5520 ??1INTERFACE_AND_OBJECT_LIST@@RAC@XZ
+ 000A:554A ??_GDG_CASSOCIATION@@RACPAXI@Z
+ 000A:556C ?FreePipeBuffer@MESSAGE_OBJECT@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:5570 ?ReallocPipeBuffer@MESSAGE_OBJECT@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:5576 ??0CONNECTION@@RAC@PAUCLIENT_AUTH_INFO@@PEG@Z
+ 000A:55B2 ?InquireAuthInformation@BINDING_HANDLE@@VACPAUCLIENT_AUTH_INFO@@XZ
+ 000A:55D0 ??1SECURITY_CONTEXT@@RAC@XZ
+ 000A:55F4 ?FreeLargeBuffer@@ZAXPEX@Z
+ 000A:5610 ?InquireTransportType@DG_BINDING_HANDLE@@VACGPEI@Z
+ 000A:5622 ?SendPing@DG_CCALL@@BACGXZ
+ 000A:568E ??_GDG_BINDING_HANDLE@@VACPAXI@Z
+ 000A:56B0 ??_GDG_CCALL@@VACPAXI@Z
+ 000A:56D2 ??0DG_PACKET_ENGINE@@RAC@GGGGIPEG@Z
+ 000A:57BA ??1DG_PACKET_ENGINE@@RAC@XZ
+ 000A:57E6 ?NewCall@DG_PACKET_ENGINE@@RACXXZ
+ 000A:5848 ?SetupSendWindow@DG_PACKET_ENGINE@@RACXPEU_RPC_MESSAGE@@@Z
+ 000A:58BC ?RecalcPduSize@DG_PACKET_ENGINE@@RACXXZ
+ 000A:597A ?CleanupReceiveWindow@DG_PACKET_ENGINE@@RACXXZ
+ 000A:59CA ?SendSomeFragments@DG_PACKET_ENGINE@@RACGE@Z
+ 000A:5AE4 ?SendFragment@DG_PACKET_ENGINE@@RACGIEH@Z
+ 000A:5C60 ?UpdateSendWindow@DG_PACKET_ENGINE@@RACXPEVDG_PACKET@@PAVSECURITY_CONTEXT@@PAVDG_ASSOCIATION@@@Z
+ 000A:5DAE ?UpdateReceiveWindow@DG_PACKET_ENGINE@@RACHPEVDG_PACKET@@@Z
+ 000A:60C4 ?SendFack@DG_PACKET_ENGINE@@RACGPEVDG_PACKET@@@Z
+ 000A:622E ?AssembleBufferFromPackets@DG_PACKET_ENGINE@@RACGPEU_RPC_MESSAGE@@PAVCONNECTION@@@Z
+ 000A:648C ?VerifySecurePacket@@ZAGPEVDG_PACKET@@PAVSECURITY_CONTEXT@@@Z
+ 000A:6664 ?SetFragmentLengths@DG_PACKET_ENGINE@@RACXPAVSECURITY_CONTEXT@@@Z
+ 000A:66E6 ?ByteSwapPacketHeader@@ZAXPEVDG_PACKET@@@Z
+ 000A:6846 ?ByteSwapFackBody0@@ZAXPEUFACK_BODY_VER_0@@@Z
+ 000A:6978 ?Initialize@DG_PACKET@@TAGXZ
+ 000A:69AA ?AllocatePacket@DG_PACKET@@TAPEV1@I@Z
+ 000A:6A48 ?FreePacket@DG_PACKET@@TAXPEV1@@Z
+ 000A:6AFA ?AllocateLargeBuffer@@ZAPEDI@Z
+ 000A:6B36 LIBMAIN
+ 000A:6B5A _WEP
+ 000A:6B8E EPRESOLVEENDPOINT
+ 000A:6F96 EPGETEPMAPPERENDPOINT
+ 000A:7010 BINDTOEPMAPPER
+ 000A:70E6 EPFREELOOKUPHANDLE
+ 000A:7142 _FixupForUniquePointerServers
+ 000A:71A4 MIDL_USER_ALLOCATE
+ 000A:71BA MIDL_USER_FREE
+ 000A:71D4 _ept_map
+ 000A:7396 ?InvalidHandle@GENERIC_OBJECT@@RACIG@Z
+ 000A:73C8 ?BindingCopy@MESSAGE_OBJECT@@VACGPEPAVBINDING_HANDLE@@I@Z
+ 000A:73CE ?ReferenceCredentials@CLIENT_AUTH_INFO@@RACXXZ
+ 000A:73E4 ??0CLIENT_AUTH_INFO@@RAC@PAU0@PEG@Z
+ 000A:745E ??1CLIENT_AUTH_INFO@@RAC@XZ
+ 000A:7496 ?IsSupportedAuthInfo@CLIENT_AUTH_INFO@@RACHPAU1@@Z
+ 000A:7524 ?Type@CCONNECTION@@VACGXZ
+ 000A:752A ??0BINDING_HANDLE@@JAC@XZ
+ 000A:75AC ??1BINDING_HANDLE@@VAC@XZ
+ 000A:75F2 CLOSEBINDINGS
+ 000A:7632 ?InquireObjectUuid@BINDING_HANDLE@@RACXPEVRPC_UUID@@@Z
+ 000A:764E ?SetObjectUuid@BINDING_HANDLE@@RACXPEVRPC_UUID@@@Z
+ 000A:76A0 ?SetComTimeout@BINDING_HANDLE@@RACGI@Z
+ 000A:76BE ?InquireEntryName@BINDING_HANDLE@@RACGKPEPEE@Z
+ 000A:7760 ?SetEntryName@BINDING_HANDLE@@RACGKPEE@Z
+ 000A:77A8 ?InquireDynamicEndpoint@BINDING_HANDLE@@VACGPEPEE@Z
+ 000A:77BC ?SetServerPrincipalName@BINDING_HANDLE@@VACHPEE@Z
+ 000A:77EA ?MapAuthenticationLevel@BINDING_HANDLE@@VACKK@Z
+ 000A:77F8 ?Type@BINDING_HANDLE@@VACGXZ
+ 000A:77FE ?SendReceive@BINDING_HANDLE@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:7804 ?Send@BINDING_HANDLE@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:780A ?Receive@BINDING_HANDLE@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:7810 ?FreeBuffer@BINDING_HANDLE@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:7814 ?SetConnectionParameter@BINDING_HANDLE@@VACGIK@Z
+ 000A:781A ?InqConnectionParameter@BINDING_HANDLE@@VACGIPEK@Z
+ 000A:7820 ?Send@CONNECTION@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:7826 ?Receive@CONNECTION@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:782C ?DispatchCallback@@ZAGPEURPC_DISPATCH_TABLE@@PEU_RPC_MESSAGE@@PEG@Z
+ 000A:78E0 ?PerformGarbageCollection@@ZAXXZ
+ 000A:78E6 INITIALIZECLIENTDLL
+ 000A:793C ?SetAuthInformation@BINDING_HANDLE@@VACGPEEKKPEXKPAVSECURITY_CREDENTIALS@@@Z
+ 000A:7ADE ??_GSECURITY_CREDENTIALS@@RACPAXI@Z
+ 000A:7AF8 ??_GBINDING_HANDLE@@VACPAXI@Z
+ 000A:7B1A RPCPWINFARALLOCATE
+ 000A:7B2A RPCPWINFARFREE
+ 000A:7B3C ??0DLL@@RAC@PAEPAG@Z
+ 000A:7BF8 ?RpcConfigMapRpcProtocolSequence@@ZAGIPEEPEPAE@Z
+ 000A:7C98 GARBAGECOLLECTIONTIMER
+ 000A:7CA2 ?GarbageCollectionNeeded@@ZAXK@Z
+ 000A:7CD8 ?EnableGarbageCollection@@ZAGXZ
+ 000A:7CE2 ?CurrentTimeInSeconds@@ZAKXZ
+ 000A:7CEC ??2@ZAPAXI@Z
+ 000A:7CFC ??3@ZAXPAX@Z
+ 000A:7D0E ?RpcGetAdditionalTransportInfo@@ZAGKPEPEE@Z
+ 000A:7D12 ?RpcGetSecurityProviderInfo@@ZAGKPEPAEPEK@Z
+ 000A:7D2E I_RPCSENDRECEIVE
+ 000A:7D52 I_RPCSEND
+ 000A:7D76 I_RPCRECEIVE
+ 000A:7D9E ??0OSF_BINDING_HANDLE@@RAC@PEG@Z
+ 000A:7DD2 ?GetBuffer@OSF_BINDING_HANDLE@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:7EC4 ??1OSF_BINDING_HANDLE@@VAC@XZ
+ 000A:7F34 ?BindingCopy@OSF_BINDING_HANDLE@@VACGPEPAVBINDING_HANDLE@@I@Z
+ 000A:8034 ?BindingFree@OSF_BINDING_HANDLE@@VACGXZ
+ 000A:8056 ?PrepareBindingHandle@OSF_BINDING_HANDLE@@VACXPAXPAVDCE_BINDING@@@Z
+ 000A:8072 ?ToStringBinding@OSF_BINDING_HANDLE@@VACGPEPEE@Z
+ 000A:80C4 ?BindingReset@OSF_BINDING_HANDLE@@VACGXZ
+ 000A:8124 ?MapAuthenticationLevel@OSF_BINDING_HANDLE@@VACKK@Z
+ 000A:8144 ?ResolveBinding@OSF_BINDING_HANDLE@@VACGPEU_RPC_CLIENT_INTERFACE@@@Z
+ 000A:8178 ?AllocateConnection@OSF_BINDING_HANDLE@@RACGPEPAVOSF_CCONNECTION@@PEU_RPC_CLIENT_INTERFACE@@@Z
+ 000A:8250 ?AddActiveEntry@OSF_BINDING_HANDLE@@RACGPAVOSF_CCONNECTION@@PEU_RPC_CLIENT_INTERFACE@@@Z
+ 000A:82B4 ?FreeConnection@OSF_BINDING_HANDLE@@RACXPAVOSF_CCONNECTION@@@Z
+ 000A:830C ?AbortConnection@OSF_BINDING_HANDLE@@RACXPAVOSF_CCONNECTION@@@Z
+ 000A:832C ?RemoveActiveConnection@OSF_BINDING_HANDLE@@RACXPAVOSF_CCONNECTION@@@Z
+ 000A:8358 ?Send@OSF_CCONNECTION@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:83A6 ?SendNextChunk@OSF_CCONNECTION@@RACGPEU_RPC_MESSAGE@@@Z
+ 000A:83EC ?SendRecur@OSF_CCONNECTION@@RACGPEU_RPC_MESSAGE@@I@Z
+ 000A:8576 ?Receive@OSF_CCONNECTION@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:8652 ?SendReceive@OSF_CCONNECTION@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:868A ?SendReceiveRecur@OSF_CCONNECTION@@RACGPEU_RPC_MESSAGE@@I@Z
+ 000A:89B2 ?ReceiveMessage@OSF_CCONNECTION@@BACGPEU_RPC_MESSAGE@@PEII1@Z
+ 000A:8D5A ?SendRequestOrResponse@OSF_CCONNECTION@@BACGPEU_RPC_MESSAGE@@EPEVRPC_UUID@@H@Z
+ 000A:9040 ?SendFragment@OSF_CCONNECTION@@BACGPEUrpcconn_common@@IIIIIPEEPEPEXPEI@Z
+ 000A:9332 ?EatAuthInfoFromPacket@OSF_CCONNECTION@@BACGPEUrpcconn_request@@PEI@Z
+ 000A:94D8 ?ReceiveRequestOrResponse@OSF_CCONNECTION@@BACGPEU_RPC_MESSAGE@@I@Z
+ 000A:9660 ?ReceiveNextChunk@OSF_CCONNECTION@@BACGPEU_RPC_MESSAGE@@IH@Z
+ 000A:9A18 ?SendFault@OSF_CCONNECTION@@BACXGH@Z
+ 000A:9A78 ?GetBuffer@OSF_CCONNECTION@@VACGPEU_RPC_MESSAGE@@@Z
+ 000A:9ADA ?GetBufferDo@OSF_CCONNECTION@@RACGIPEPEX@Z
+ 000A:9B0C ?FreeBuffer@OSF_CCONNECTION@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:9B48 ?FreePipeBuffer@OSF_CCONNECTION@@VACXPEU_RPC_MESSAGE@@@Z
+ 000A:9B6A ?ReallocPipeBuffer@OSF_CCONNECTION@@VACGPEU_RPC_MESSAGE@@I@Z
+ 000A:9C10 ?BindingCopy@OSF_CCONNECTION@@VACGPEPAVBINDING_HANDLE@@I@Z
+ 000A:9C3A ?TransGetBuffer@OSF_CCONNECTION@@VACGPEPEXI@Z
+ 000A:9CC0 ?TransFreeBuffer@OSF_CCONNECTION@@VACXPEX@Z
+ 000A:9D08 ?ConstructPContextList@@ZAXPEUp_cont_list_t@@PEU_RPC_SYNTAX_IDENTIFIER@@1IE@Z
+ 000A:9D76 ?PingServer@OSF_CCONNECTION@@RACGXZ
+ 000A:9D88 ?SendBindPacket@OSF_CCONNECTION@@RACGPEU_RPC_SYNTAX_IDENTIFIER@@0IEKEPEPEXPEI@Z
+ 000A:A172 ?SetMaxFrag@OSF_CCONNECTION@@RACXGG@Z
+ 000A:A19A ?FreeConnection@OSF_CCONNECTION@@RACXXZ
+ 000A:A1B8 ?AbortConnection@OSF_CCONNECTION@@RACXH@Z
+ 000A:A208 ??0OSF_CCONNECTION@@JAC@PAUCLIENT_AUTH_INFO@@PEG@Z
+ 000A:A30A ??1OSF_CCONNECTION@@VAC@XZ
+ 000A:A39C ?MaybeDo3rdLegAuth@OSF_CCONNECTION@@RACGPEXI@Z
+ 000A:A6BE ??0OSF_CASSOCIATION@@RAC@PAVDCE_BINDING@@PAU_RPC_CLIENT_TRANSPORT_INFO@@PEG@Z
+ 000A:A72A ??1OSF_CASSOCIATION@@RAC@XZ
+ 000A:A7BE ?NotifyConnectionClosed@OSF_CASSOCIATION@@RACXXZ
+ 000A:A7D6 ?ProcessBindAckOrNak@OSF_CASSOCIATION@@BACGPEUrpcconn_common@@IPAVOSF_CCONNECTION@@@Z
+ 000A:AA7A ?PingServer@OSF_CASSOCIATION@@RACGXZ
+ 000A:AB04 ?ActuallyDoBinding@OSF_CASSOCIATION@@BACGPEU_RPC_SYNTAX_IDENTIFIER@@0IPEPAVOSF_CCONNECTION@@HIPAUCLIENT_AUTH_INFO@@K@Z
+ 000A:AE6E ?UnBind@OSF_CASSOCIATION@@RACXXZ
+ 000A:AEA0 ?FindOrCreateOsfBinding@OSF_CASSOCIATION@@RACPAVOSF_BINDING@@PEU_RPC_CLIENT_INTERFACE@@@Z
+ 000A:AF40 ?AllocateConnection@OSF_CASSOCIATION@@RACGPEU_RPC_CLIENT_INTERFACE@@PEPAVOSF_CCONNECTION@@IPAUCLIENT_AUTH_INFO@@@Z
+ 000A:B0C8 ?FreeConnection@OSF_CASSOCIATION@@RACHPAVOSF_CCONNECTION@@@Z
+ 000A:B11A ?ShutdownRequested@OSF_CASSOCIATION@@RACXXZ
+ 000A:B15E ?ToStringBinding@OSF_CASSOCIATION@@VACGPEPEEPEVRPC_UUID@@@Z
+ 000A:B18E ?FindOrCreateAssociation@@ZAPAVOSF_CASSOCIATION@@PAVDCE_BINDING@@PAU_RPC_CLIENT_TRANSPORT_INFO@@@Z
+ 000A:B24A ?CompareWithDceBinding@OSF_CASSOCIATION@@RACHPAVDCE_BINDING@@@Z
+ 000A:B27C ?FindIdleConnection@OSF_CASSOCIATION@@RACPAVOSF_CCONNECTION@@KK@Z
+ 000A:B2EA ?OsfDeleteIdleConnections@@ZAXXZ
+ 000A:B34C ?InitializeRpcProtocolOfsClient@@ZAHXZ
+ 000A:B378 ?OsfClientMapRpcProtocolSequence@@ZAPAXPEEPEG@Z
+ 000A:B3D6 ?OsfCreateBindingHandle@@ZAPAVBINDING_HANDLE@@XZ
+ 000A:B41E OSFTOWERCONSTRUCT
+ 000A:B48A OSFTOWEREXPLODE
+ 000A:B53E ?InquireTransportType@OSF_BINDING_HANDLE@@VACGPEI@Z
+ 000A:B550 ?DoConnectionCleanup@OSF_CCONNECTION@@BACXPEU_RPC_MESSAGE@@PEXGHH@Z
+ 000A:B5DC ?TransSendReceiveWithTimeout@OSF_CCONNECTION@@VACGPEXIPEPEXPEIK@Z
+ 000A:B5E2 ??_GOSF_BINDING_HANDLE@@VACPAXI@Z
+ 000A:B604 ??_GOSF_CCONNECTION@@VACPAXI@Z
+ 000A:B626 ?ConstructPacket@@ZAXPEUrpcconn_common@@EI@Z
+ 000A:B668 ?ValidatePacket@@ZAGPEUrpcconn_common@@I@Z
+ 000A:B7A2 ?ByteSwapSyntaxId@@ZAXPEUp_syntax_id_t@@@Z
+ 000A:B85A ?ConvertStringEbcdicToAscii@@ZAXPAE@Z
+ 000A:BA30 ?ConvertFromString@RPC_UUID@@RECHPEE@Z
+ 000A:BBC6 ?SetToNullUuid@RPC_UUID@@RECXXZ
+ 000A:BD50 ?ConvertToString@RPC_UUID@@RECPEEPEE@Z
+ 000A:BEA2 ?IsNullUuid@RPC_UUID@@RECHXZ
+ 000A:BEE0 ?HashUuid@RPC_UUID@@RECGXZ
+ 000A:BF0C _ByteSwapUuid
+ 000A:BF7C ??0SIMPLE_DICT@@RAC@XZ
+ 000A:BFAC ??1SIMPLE_DICT@@RAC@XZ
+ 000A:BFCC ?Insert@SIMPLE_DICT@@RACHPAX@Z
+ 000A:C06C ?Delete@SIMPLE_DICT@@RACPAXH@Z
+ 000A:C09E ?Next@SIMPLE_DICT@@RACPAXXZ
+ 000A:C0D8 _UnloadSecurityDll
+ 000A:C134 ?InsureSecuritySupportLoaded@@ZAGXZ
+ 000A:C17A ?FindSecurityPackage@@ZAGKKPEI0@Z
+ 000A:C486 ??0SECURITY_CREDENTIALS@@RAC@PEG@Z
+ 000A:C498 ?AcquireCredentialsForClient@SECURITY_CREDENTIALS@@RACGPEXKK@Z
+ 000A:C55A ?FreeCredentials@SECURITY_CREDENTIALS@@RACXXZ
+ 000A:C57A ?SetMaximumLengths@SECURITY_CONTEXT@@RACXXZ
+ 000A:C5C4 ??0SECURITY_CONTEXT@@RAC@PAUCLIENT_AUTH_INFO@@IHPEG@Z
+ 000A:C5F6 ?CompleteSecurityToken@SECURITY_CONTEXT@@RACGPEU_SecBufferDesc@@@Z
+ 000A:C646 ?SignOrSeal@SECURITY_CONTEXT@@RACGKIPEU_SecBufferDesc@@@Z
+ 000A:C69A ?VerifyOrUnseal@SECURITY_CONTEXT@@RACGKIPEU_SecBufferDesc@@@Z
+ 000A:C700 ?InitializeFirstTime@CSECURITY_CONTEXT@@RACGPAVSECURITY_CREDENTIALS@@PAEKPEU_SecBufferDesc@@@Z
+ 000A:C830 ?InitializeThirdLeg@CSECURITY_CONTEXT@@RACGKPEU_SecBufferDesc@@0@Z
+ 000A:C8D4 ??0TRANS_CCONNECTION@@RAC@PAU_RPC_CLIENT_TRANSPORT_INFO@@PAE111PEGIPAUCLIENT_AUTH_INFO@@@Z
+ 000A:C948 ??1TRANS_CCONNECTION@@VAC@XZ
+ 000A:C978 ?TransReceive@TRANS_CCONNECTION@@VACGPEPEXPEI@Z
+ 000A:CA10 ?TransSetTimeout@TRANS_CCONNECTION@@VACGJ@Z
+ 000A:CA4A ?TransSend@TRANS_CCONNECTION@@VACGPEXI@Z
+ 000A:CA92 ?TransSendReceive@TRANS_CCONNECTION@@VACGPEXIPEPEXPEI@Z
+ 000A:CB8A ?TransSendReceiveWithTimeout@TRANS_CCONNECTION@@VACGPEXIPEPEXPEIK@Z
+ 000A:CD00 ?TransMaximumSend@TRANS_CCONNECTION@@VACIXZ
+ 000A:CD12 I_RPCTRANSCLIENTREALLOCBUFFER
+ 000A:CD94 I_RPCTRANSCLIENTMAXFRAG
+ 000A:CDAA I_RPCTRANSPINGSERVER
+ 000A:CDC4 ??0CLIENT_LOADABLE_TRANSPORT@@RAC@PAU_RPC_CLIENT_TRANSPORT_INFO@@PAE@Z
+ 000A:CDF0 ?LoadableTransportClientInfo@@ZAPAU_RPC_CLIENT_TRANSPORT_INFO@@PAEPEEPEG@Z
+ 000A:D0FA ?GetLoadedClientTransportInfoFromId@@ZAPEU_RPC_CLIENT_TRANSPORT_INFO@@G@Z
+ 000A:D136 ?InitializeLoadableTransportClient@@ZAHXZ
+ 000A:D162 _UnloadLoadableTransports
+ 000A:D19C _I_Trace
+ 000A:D19E ??_GTRANS_CCONNECTION@@VACPAXI@Z
+ 000A:D1C0 ?ToHexString@ULong64@@RECPEDPED@Z
+ 000A:D224 ?FromHexString@ULong64@@RECXPED@Z
+ 000A:D2CC ??Y@ZAXAEVULong64@@0@Z
+ 000A:D330 ??Y@ZAXAEVULong64@@K@Z
+ 000A:D36E ??Z@ZAXAEVULong64@@K@Z
+ 000A:D3A6 ??X@ZAXAEVULong64@@K@Z
+ 000A:D546 ??_3@ZAXAEVULong64@@I@Z
+ 000A:D5EE ??_2@ZAXAEVULong64@@I@Z
+ 000A:D68A ??P@ZAHAEVULong64@@0@Z
+ 000A:D6F2 ??N@ZAHAEVULong64@@0@Z
+ 000A:D940 ?CookupNodeId@@ZCGPEE@Z
+ 000A:D9E8 ?GetNodeId@@ZCGPEE@Z
+ 000A:DAB2 ?UuidTime@@ZCXPEVULong64@@@Z
+ 000A:DB4A ?LoadUuidValues@@ZCGPEVULong64@@PEK@Z
+ 000A:DC50 ?SaveUuidValues@@ZCGPEVULong64@@PEK@Z
+ 000A:DCFA ?UuidGetValues@@ZCGPEU_UUID_CACHED_VALUES_STRUCT@@@Z
+ 000A:DF62 WINDLLATEXIT
+ 000A:DFAA NOTIFICATIONSTART
+ 000A:DFDA NOTIFICATIONSTOP
+ 000A:DFFE WINDLLEXITHANDLERCALLBACK
+ 000A:E062 _InitializeWinExceptions
+ 000A:E126 EXCEPTIONCLEANUP
+ 000A:E15C RpcSetExceptionHandler
+ 000A:E272 RpcGetExceptionHandler
+ 000A:E29C RPCLEAVEEXCEPTION
+ 000A:E2D4 _PauseExecution
+ 000A:E2FC CREATEYIELDINFO
+ 000A:E322 DELETEYIELDINFO
+ 000A:E41A WINYIELDCLEANUP
+ 000A:E434 I_RPCYIELDDIALOGFUNCTION
+ 000A:E522 I_RPCWINCALLINPROGRESS
+ 000A:E582 _SafeIncrement
+ 000A:E58E _SafeDecrement
+ 000A:E59A RPCWINSETYIELDINFO
+ 000A:E65A RPCWINSETYIELDTIMEOUT
+ 000A:E68A I_RPCWINSETTASKYIELDING
+ 000A:E6FE I_RPCWINASYNCCALLBEGIN
+ 000A:E762 YIELDTIMERCALLBACK
+ 000A:E794 I_RPCWINASYNCCALLWAIT
+ 000A:EB04 I_RPCWINASYNCCALLEND
+ 000A:EB72 I_RPCWINISTASKYIELDING
+ 000A:EBA2 RPCREGCLOSEKEY
+ 000A:EC00 RPCREGCREATEKEY
+ 000A:ED4A RPCREGOPENKEY
+ 000A:EE76 RPCREGSETVALUE
+ 000A:F106 RPCREGQUERYVALUE
+ 000A:F282 _OpenRegistryFileIfNecessary
+ 000A:F300 _CloseRegistryFile
+ 000A:F312 _BuildFullKeyName
+ 000A:F378 NDRCCONTEXTBINDING
+ 000A:F3B4 NDRCCONTEXTMARSHALL
+ 000A:F4F6 NDRCCONTEXTUNMARSHALL
+ 000A:F64C RPCSSDESTROYCLIENTCONTEXT
+ 000A:F698 MIDL_WCHAR_STRLEN
+ 000A:F6C4 MIDL_WCHAR_STRCPY
+ 000A:F6FA CHAR_FROM_NDR
+ 000A:F73E CHAR_ARRAY_FROM_NDR
+ 000A:F7D0 ?NdrpLongByteSwap@@ZCXPEX0@Z
+ 000A:F83E FLOAT_FROM_NDR
+ 000A:F8F4 FLOAT_ARRAY_FROM_NDR
+ 000A:FA0A DOUBLE_FROM_NDR
+ 000A:FAF6 DOUBLE_ARRAY_FROM_NDR
+ 000B:0000 DATA_FROM_NDR
+ 000B:0768 DATA_INTO_NDR
+ 000B:0B48 TREE_INTO_NDR
+ 000B:0E68 DATA_SIZE_NDR
+ 000B:11D0 TREE_SIZE_NDR
+ 000B:144C TREE_PEEK_NDR
+ 000B:1704 SHORT_FROM_NDR
+ 000B:1768 SHORT_ARRAY_FROM_NDR
+ 000B:1818 SHORT_FROM_NDR_TEMP
+ 000B:1878 LONG_FROM_NDR
+ 000B:1926 LONG_ARRAY_FROM_NDR
+ 000B:1A26 LONG_FROM_NDR_TEMP
+ 000B:1AD0 ENUM_FROM_NDR
+ 000B:1B42 HYPER_FROM_NDR
+ 000B:1C78 HYPER_ARRAY_FROM_NDR
+ 000B:1DDA HYPER_FROM_NDR_TEMP
+ 000B:1F0C NDRSIMPLETYPEMARSHALL
+ 000B:2046 NDRPOINTERMARSHALL
+ 000B:20B8 _NdrpPointerMarshall
+ 000B:21CA NDRSIMPLESTRUCTMARSHALL
+ 000B:2262 NDRCONFORMANTSTRUCTMARSHALL
+ 000B:237C _NdrpConformantStringMarshall
+ 000B:24C4 NDRFIXEDARRAYMARSHALL
+ 000B:2590 NDRCONFORMANTARRAYMARSHALL
+ 000B:25E2 _NdrpConformantArrayMarshall
+ 000B:26B2 NDRCONFORMANTVARYINGARRAYMARSHALL
+ 000B:2704 _NdrpConformantVaryingArrayMarshall
+ 000B:2850 NDRVARYINGARRAYMARSHALL
+ 000B:29A4 NDRCOMPLEXARRAYMARSHALL
+ 000B:2B14 _NdrpComplexArrayMarshall
+ 000B:2FEA NDRENCAPSULATEDUNIONMARSHALL
+ 000B:30AE NDRNONENCAPSULATEDUNIONMARSHALL
+ 000B:311C _NdrpUnionMarshall
+ 000B:32CE NDRBYTECOUNTPOINTERMARSHALL
+ 000B:3332 NDRXMITORREPASMARSHALL
+ 000B:3480 NDRUSERMARSHALMARSHALL
+ 000B:3618 NDRINTERFACEPOINTERMARSHALL
+ 000B:362A NDRCLIENTCONTEXTMARSHALL
+ 000B:367C NDRSERVERCONTEXTMARSHALL
+ 000B:368A NDRSIMPLETYPEUNMARSHALL
+ 000B:37BC NDRPOINTERUNMARSHALL
+ 000B:3874 _NdrpPointerUnmarshall
+ 000B:3CBE NDRSIMPLESTRUCTUNMARSHALL
+ 000B:3DF4 NDRCONFORMANTSTRUCTUNMARSHALL
+ 000B:3FCC NDRCLIENTINITIALIZENEW
+ 000B:4056 NDRCLIENTINITIALIZE
+ 000B:415C _MakeSureWeHaveNonPipeArgs
+ 000B:41E6 NDRSERVERINITIALIZENEW
+ 000B:42DC NDRSERVERINITIALIZE
+ 000B:4400 NDRSERVERINITIALIZEPARTIAL
+ 000B:449E NDRGETBUFFER
+ 000B:4526 _EnsureNSLoaded
+ 000B:4592 NDRNSGETBUFFER
+ 000B:461E NDRSENDRECEIVE
+ 000B:46A6 NDRNSSENDRECEIVE
+ 000B:4736 NDRFREEBUFFER
+ 000B:4782 NDRALLOCATE
+ 000B:47E6 NDRSERVERINITIALIZEUNMARSHALL
+ 000B:480C NDRSERVERINITIALIZEMARSHALL
+ 000B:481A ??_C@_0L@OGFF@RPCNS1?4DLL?$AA@
+ 000B:4826 ??_C@_0BB@DMFF@I_RPCNSGETBUFFER?$AA@
+ 000B:4838 ??_C@_0BD@CMGM@I_RPCNSSENDRECEIVE?$AA@
+ 000B:484C NDRMAPCOMMANDFAULTSTATUS
+ 000B:48DA NDRPOINTERFREE
+ 000B:49CC NDRSIMPLESTRUCTFREE
+ 000B:49FC NDRCONFORMANTSTRUCTFREE
+ 000B:4A5E NDRCONFORMANTVARYINGSTRUCTFREE
+ 000B:4AE6 NDRHARDSTRUCTFREE
+ 000B:4B3A NDRCOMPLEXSTRUCTFREE
+ 000B:4DBA NDRFIXEDARRAYFREE
+ 000B:4E02 NDRCONFORMANTARRAYFREE
+ 000B:4E64 NDRCONFORMANTVARYINGARRAYFREE
+ 000B:4EEC NDRVARYINGARRAYFREE
+ 000B:4F6A NDRCOMPLEXARRAYFREE
+ 000B:526C NDRENCAPSULATEDUNIONFREE
+ 000B:531E NDRNONENCAPSULATEDUNIONFREE
+ 000B:5378 _NdrpUnionFree
+ 000B:5450 NDRBYTECOUNTPOINTERFREE
+ 000B:5484 NDRXMITORREPASFREE
+ 000B:54E8 NDRUSERMARSHALFREE
+ 000B:554C NDRINTERFACEPOINTERFREE
+ 000B:555A _NdrpEmbeddedPointerFree
+ 000B:5636 _NdrpEmbeddedRepeatPointerFree
+ 000B:5784 NDRPOINTERBUFFERSIZE
+ 000B:57DE _NdrpPointerBufferSize
+ 000B:58D4 NDRSIMPLESTRUCTBUFFERSIZE
+ 000B:594C NDRCONFORMANTSTRUCTBUFFERSIZE
+ 000B:5A04 NDRCONFORMANTVARYINGSTRUCTBUFFERSIZE
+ 000B:5AE2 NDRHARDSTRUCTBUFFERSIZE
+ 000B:5B78 NDRCOMPLEXSTRUCTBUFFERSIZE
+ 000B:5F54 NDRFIXEDARRAYBUFFERSIZE
+ 000B:5FF4 NDRCONFORMANTARRAYBUFFERSIZE
+ 000B:603E _NdrpConformantArrayBufferSize
+ 000B:60EE NDRCONFORMANTVARYINGARRAYBUFFERSIZE
+ 000B:6138 _NdrpConformantVaryingArrayBufferSize
+ 000B:6272 NDRVARYINGARRAYBUFFERSIZE
+ 000B:63CA NDRCOMPLEXARRAYBUFFERSIZE
+ 000B:644E _NdrpComplexArrayBufferSize
+ 000B:6878 NDRNONCONFORMANTSTRINGBUFFERSIZE
+ 000B:69A8 NDRCONFORMANTSTRINGBUFFERSIZE
+ 000B:6A00 _NdrpConformantStringBufferSize
+ 000B:6B66 NDRENCAPSULATEDUNIONBUFFERSIZE
+ 000B:6C28 NDRNONENCAPSULATEDUNIONBUFFERSIZE
+ 000B:6C92 _NdrpUnionBufferSize
+ 000B:6E58 NDRBYTECOUNTPOINTERBUFFERSIZE
+ 000B:6EFA NDRXMITORREPASBUFFERSIZE
+ 000B:7070 NDRUSERMARSHALBUFFERSIZE
+ 000B:718E NDRINTERFACEPOINTERBUFFERSIZE
+ 000B:719C _NdrpEmbeddedPointerBufferSize
+ 000B:727A _NdrpEmbeddedRepeatPointerBufferSize
+ 000B:73EC NDRCONTEXTHANDLESIZE
+ 000B:7422 _NdrClientCall
+ 000B:7BAC _NdrClientZeroOut
+ 000B:7C2C NDRCLEAROUTPARAMETERS
+ 000B:7D38 _NdrClientMapCommFault
+ 000B:7E1C _NdrClientCall2
+ 000B:85C6 _NdrpSetRpcSsDefaults
+ 000B:8646 ?CheckIfMtrtHeapInitialized@@ZAGXZ
+ 000B:864A ?GetCreateAllocationContext@@ZAPEU_ALLOCATION_CONTEXT@@XZ
+ 000B:86BC RPCSSALLOCATE
+ 000B:875E RPCSSDISABLEALLOCATE
+ 000B:87F8 RPCSSENABLEALLOCATE
+ 000B:883A RPCSSFREE
+ 000B:88CC RPCSSGETTHREADHANDLE
+ 000B:890C RPCSSSETCLIENTALLOCFREE
+ 000B:8940 RPCSSSETTHREADHANDLE
+ 000B:8962 RPCSSSWAPCLIENTALLOCFREE
+ 000B:89C0 RPCSMALLOCATE
+ 000B:8A12 RPCSMCLIENTFREE
+ 000B:8A4E RPCSMDISABLEALLOCATE
+ 000B:8A82 RPCSMDESTROYCLIENTCONTEXT
+ 000B:8ABE RPCSMENABLEALLOCATE
+ 000B:8AF2 RPCSMFREE
+ 000B:8B2E RPCSMGETTHREADHANDLE
+ 000B:8B80 RPCSMSETCLIENTALLOCFREE
+ 000B:8BC6 RPCSMSETTHREADHANDLE
+ 000B:8C02 RPCSMSWAPCLIENTALLOCFREE
+ 000B:8C50 ??2@ZAPEXI@Z
+ 000B:8C62 ?GetAllocContext@@ZAPEU_ALLOCATION_CONTEXT@@XZ
+ 000B:8CD4 ?GetAllocContextNoCreate@@ZAPEU_ALLOCATION_CONTEXT@@XZ
+ 000B:8D04 ?SetAllocContext@@ZAXPEU_ALLOCATION_CONTEXT@@@Z
+ 000B:8D36 _NdrRpcDeleteAllocationContext
+ 000B:8D82 _ForceNdrCleanupSegIntoMemory
+ 000B:8D84 NDRRPCSSENABLEALLOCATE
+ 000B:8DB8 NDRRPCSSDISABLEALLOCATE
+ 000B:8DEC NDRRPCSMSETCLIENTTOOSF
+ 000B:8E18 NDRRPCSSDEFAULTALLOCATE
+ 000B:8E2E NDRRPCSSDEFAULTFREE
+ 000B:8E48 NDRRPCSMCLIENTALLOCATE
+ 000B:8E7A NDRRPCSMCLIENTFREE
+ 000B:8EB4 ?NdrpHandleAllocate@@ZAGPEPAX@Z
+ 000B:8EE2 MESHANDLEFREE
+ 000B:8F00 I_NDRMESMESSAGEINIT
+ 000B:8F32 MESENCODEINCREMENTALHANDLECREATE
+ 000B:8FA0 MESDECODEINCREMENTALHANDLECREATE
+ 000B:900C MESINCREMENTALHANDLERESET
+ 000B:9126 MESENCODEFIXEDBUFFERHANDLECREATE
+ 000B:91B0 MESENCODEDYNBUFFERHANDLECREATE
+ 000B:922C MESDECODEBUFFERHANDLECREATE
+ 000B:92CE MESBUFFERHANDLERESET
+ 000B:9462 MESINQPROCENCODINGID
+ 000B:952A ?NdrpAllocPicklingBuffer@@ZAXPEU_MIDL_ES_MESSAGE@@I@Z
+ 000B:965C ?NdrpReadPicklingBuffer@@ZAXPEU_MIDL_ES_MESSAGE@@I@Z
+ 000B:96BA ?NdrpWritePicklingBuffer@@ZAXPEU_MIDL_ES_MESSAGE@@PEEI@Z
+ 000B:970A ?NdrpProcHeaderMarshall@@ZAXPEU_MIDL_ES_MESSAGE@@@Z
+ 000B:9840 ?NdrpProcHeaderUnmarshall@@ZAXPEU_MIDL_ES_MESSAGE@@@Z
+ 000B:998E ?NdrpDataBufferInit@@ZAXPEU_MIDL_ES_MESSAGE@@PFE@Z
+ 000B:9A30 _NdrMesProcEncodeDecode
+ 000B:9FBA ?NdrpCommonTypeHeaderSize@@ZAXPEU_MIDL_ES_MESSAGE@@@Z
+ 000B:9FF4 NDRMESTYPEALIGNSIZE
+ 000B:A0F8 ?NdrpCommonTypeHeaderMarshall@@ZAIPEU_MIDL_ES_MESSAGE@@@Z
+ 000B:A162 NDRMESTYPEENCODE
+ 000B:A2F0 ?NdrpCommonTypeHeaderUnmarshall@@ZAXPEU_MIDL_ES_MESSAGE@@@Z
+ 000B:A3B0 NDRMESTYPEDECODE
+ 000B:A5F4 ?NdrMesTypeFree@@ZCXPAXPFU_MIDL_STUB_DESC@@PFEPEX@Z
+ 000B:A6B8 NDRMESSIMPLETYPEALIGNSIZE
+ 000B:A70A NDRMESSIMPLETYPEENCODE
+ 000B:A812 NDRMESSIMPLETYPEDECODE
+ 000B:A946 _NdrpEmbeddedPointerMarshall
+ 000B:AABC _NdrpEmbeddedRepeatPointerMarshall
+ 000B:AC3C _NdrpComputeConformance
+ 000B:AEE2 _NdrpComputeVariance
+ 000B:B1F4 _NdrpEmbeddedPointerUnmarshall
+ 000B:B35A _NdrpEmbeddedRepeatPointerUnmarshall
+ 000B:B4D4 _GenericHandleMgr
+ 000B:B5FA _GenericHandleUnbind
+ 000B:B664 _ImplicitBindHandleMgr
+ 000B:B6CA _ExplicitBindHandleMgr
+ 000B:B788 NDRMARSHALLHANDLE
+ 000B:B81E NDRUNMARSHALLHANDLE
+ 000B:B8B8 _NdrpMemoryIncrement
+ 000B:BC9C _NdrpArrayDimensions
+ 000B:BD34 _NdrpArrayElements
+ 000B:BE40 _NdrpArrayVariance
+ 000B:BEEC _NdrpSkipPointerLayout
+ 000B:BF4A _NdrpStringStructLen
+ 000B:BF9E _NdrpCheckBound
+ 000B:C010 ??0SIMPLE_DICT2@@REC@XZ
+ 000B:C062 ?Insert@SIMPLE_DICT2@@RECHPEX0@Z
+ 000B:C21A ?Delete@SIMPLE_DICT2@@RECPEXPEX@Z
+ 000B:C278 ?Find@SIMPLE_DICT2@@RECPEXPEX@Z
+ 000C:0000 I_RPCWINASYNCCALLCOMPLETE
+ 000D:0000 ?RpcSsDefaults@@3U_MALLOC_FREE_STRUCT@@E
+ 000E:0004 rsrvptrs
+ 000E:0010 ?LeaveSomeRoom@@3QADA
+ 000E:007E _conv_ServerIfHandle
+ 000E:00E4 _conv_DispatchTable
+ 000E:018E ?ClientGlobalsInitialized@@3HA
+ 000E:0190 ?RpcToPacketFlagsArray@@3QBIB
+ 000E:01A0 ?PacketToRpcFlagsArray@@3QBIB
+ 000E:021A ?PartialRetries@@3KA
+ 000E:021E ?ReallyTooBusy@@3KA
+ 000E:0260 _epmp_ClientIfHandle
+ 000E:0336 ?DefaultMaxDatagramLength@@3IA
+ 000E:0338 ?DefaultConnectionBufferLength@@3IA
+ 000E:0340 ?RpcClientNcacnMap@@3QAU_PROTSEQ_MAP@@A
+ 000E:0368 ?GcTimerStarted@@3IA
+ 000E:036A ?EnableGc@@3IA
+ 000E:036C _GcTimerIdentifier
+ 000E:037E ?SecuritySupportLoaded@@3HA
+ 000E:0380 ?FailedToLoad@@3HA
+ 000E:0382 ?NumberOfProviders@@3KA
+ 000E:0386 ?LoadedProviders@@3KA
+ 000E:038A ?AvailableProviders@@3KA
+ 000E:038E ?ProviderList@@3PEUSECURITY_PROVIDER_INFO@@E
+ 000E:03AA _TaskExiting
+ 000E:03AC _OODebug
+ 000E:03B4 _RpcClientRuntimeInfo
+ 000E:03E8 _STKHQQ
+ 000E:03EA __hModule
+ 000E:03EC __wDataSeg
+ 000E:03EE __wHeapSize
+ 000E:03F0 __lpszCmdLine
+ 000E:03F4 __dllinit
+ 000E:03F5 _aseglo
+ 000E:03F7 _aseghi
+ 000E:03F9 ___aDBswpflg
+ 000E:03FB ___aDBrterr
+ 000E:03FE __pnhFarHeap
+ 000E:0402 __aintdiv
+ 000E:0406 __fac
+ 000E:0410 _errno
+ 000E:0412 __umaskval
+ 000E:0414 __winminor
+ 000E:0414 __winver
+ 000E:0415 __winmajor
+ 000E:0416 __osver
+ 000E:0416 __osminor
+ 000E:0417 __osmajor
+ 000E:0418 __osversion
+ 000E:041A __osmode
+ 000E:041B __cpumode
+ 000E:041C __doserrno
+ 000E:041C __oserr
+ 000E:041E __nfile
+ 000E:0420 __osfile
+ 000E:0434 ___argc
+ 000E:0436 ___argv
+ 000E:0438 __environ
+ 000E:043A __pgmptr
+ 000E:043F __child
+ 000E:0441 __exitflag
+ 000E:0442 __adbgmsg
+ 000E:0446 __fheap
+ 000E:0454 __amblksiz
+ 000E:045E __lpdays
+ 000E:0478 __days
+ 000E:0492 __timezone
+ 000E:0496 __daylight
+ 000E:04A0 __tzname
+ 000E:04A4 __pnhNearHeap
+ 000E:04A8 _HkeyClassesRoot
+ 000E:04AE _RegistryDataFile
+ 000E:04B0 ?ebcdic_to_ascii@@3QEEE
+ 000E:05B0 _MarshallRoutinesTable
+ 000E:0640 _pfnMarshallRoutines
+ 000E:0644 _MemSizeRoutinesTable
+ 000E:06D4 _pfnMemSizeRoutines
+ 000E:06D8 _UnmarshallRoutinesTable
+ 000E:0768 _pfnUnmarshallRoutines
+ 000E:076C _ConvertRoutinesTable
+ 000E:07FC _pfnConvertRoutines
+ 000E:0800 _EbcdicToAscii
+ 000E:0900 _NsDllLoaded
+ 000E:0932 _FreeRoutinesTable
+ 000E:09C2 _pfnFreeRoutines
+ 000E:09C6 _SizeRoutinesTable
+ 000E:0A56 _pfnSizeRoutines
+ 000E:0A5A _pRpcSsDefaults
+ 000E:0A62 _SimpleTypeAlignment
+ 000E:0A74 _SimpleTypeBufferSize
+ 000E:0A86 _SimpleTypeMemorySize
+ 000E:0A98 _NdrTypeFlags
+ 000E:0D8C _vax_c
+ 000E:0DCC _ieee_s
+ 000E:0E04 _ieee_t
+ 000E:0E74 _ibm_s
+ 000E:0E90 _ibm_l
+ 000E:0EC8 _cray
+ 000E:0F00 _int_c
+ 000E:0F4A __lastiob
+ 000E:0F66 __cfltcvt_tab
+ 000E:0F82 __sigintseg
+ 000E:0F84 __sigintoff
+ 000E:0F86 __asizeC
+ 000E:0F87 __asizeD
+ 000E:0F94 __aaltstkovr
+ 000E:0F98 __cflush
+ 000E:0F9C __commode
+ 000E:0F9E __lseekchk
+ 000E:0FA0 __ctype_
+ 000E:0FA0 __ctype
+ 000E:10C6 __iomode
+ 000E:10C6 __fmode
+ 000E:111C ??_C@_08GFKM@endpoint?$AA@
+ 000E:1126 ??_C@_07DFNK@ncalrpc?$AA@
+ 000E:112E ??_C@_06KGKC@ncadg_?$AA@
+ 000E:1136 ??_C@_06LLDN@ncacn_?$AA@
+ 000E:113E ??_C@_06MNFC@mswmsg?$AA@
+ 000E:1146 ??_7MESSAGE_OBJECT@@6B@
+ 000E:116A ??_7DG_BINDING_HANDLE@@6B@
+ 000E:11C6 ??_7CONNECTION@@6B@
+ 000E:11EA ??_7DG_CASSOCIATION@@6B@
+ 000E:11EE ??_7DG_CCALL@@6BCCONNECTION@@@
+ 000E:1216 ??_7DG_CCALL@@6BDG_PACKET_ENGINE@@@
+ 000E:121A ??_7GENERIC_OBJECT@@6B@
+ 000E:121E ??_7CCONNECTION@@6B@
+ 000E:1242 ??_7DG_PACKET_ENGINE@@6B@
+ 000E:1246 ??_C@_08DNBJ@ncacn_np?$AA@
+ 000E:1250 ??_C@_0P@OKDC@?2pipe?2epmapper?$AA@
+ 000E:1260 ??_C@_08JCOI@epmapper?$AA@
+ 000E:126A ??_C@_0N@JDIH@ncacn_ip_tcp?$AA@
+ 000E:1278 ??_C@_03EOPG@135?$AA@
+ 000E:127C ??_C@_0N@OGGG@ncadg_ip_udp?$AA@
+ 000E:128A ??_C@_0P@MCIL@ncacn_dnet_nsp?$AA@
+ 000E:129A ??_C@_03HJFF@?$CD69?$AA@
+ 000E:129E ??_C@_0M@PAMB@ncacn_nb_nb?$AA@
+ 000E:12AA ??_C@_0N@OHPK@ncacn_nb_xns?$AA@
+ 000E:12B8 ??_C@_0N@DJPI@ncacn_nb_tcp?$AA@
+ 000E:12C6 ??_C@_0N@JHIF@ncacn_nb_ipx?$AA@
+ 000E:12D4 ??_C@_09LLEG@ncacn_spx?$AA@
+ 000E:12DE ??_C@_05LKBG@34280?$AA@
+ 000E:12E4 ??_C@_09OHNL@ncadg_ipx?$AA@
+ 000E:12EE ??_C@_0N@PFNA@ncacn_at_dsp?$AA@
+ 000E:12FC ??_C@_0BA@LJDB@Endpoint?5Mapper?$AA@
+ 000E:130C ??_C@_0O@IPEE@ncacn_vns_spp?$AA@
+ 000E:131A ??_C@_03GEHA@385?$AA@
+ 000E:131E ??_C@_06HKKF@RPCNS1?$AA@
+ 000E:1326 ??_C@_0BI@FLG@I_GETDEFAULTENTRYSYNTAX?$AA@
+ 000E:133E ??_7BINDING_HANDLE@@6B@
+ 000E:139A ??_C@_07OIMF@rpc16c1?$AA@
+ 000E:13A2 ??_C@_07LNOL@rpc16c3?$AA@
+ 000E:13AA ??_C@_07OIAO@rpc16c4?$AA@
+ 000E:13B2 ??_C@_07ECJJ@rpc16c5?$AA@
+ 000E:13BA ??_C@_07LNCA@rpc16c6?$AA@
+ 000E:13C2 ??_C@_07BGOK@rpc16c8?$AA@
+ 000E:13CA ??_C@_08PDFD@rpc16dg3?$AA@
+ 000E:13D4 ??_C@_08PDJI@rpc16dg6?$AA@
+ 000E:13DE ??_C@_0CH@FABF@Software?2Microsoft?2Rpc?2ClientPro@
+ 000E:1406 ??_C@_08PBBB@security?$AA@
+ 000E:1410 ??_7OSF_CCONNECTION@@6B@
+ 000E:1458 ??_7OSF_CASSOCIATION@@6B@
+ 000E:145C ??_7OSF_BINDING_HANDLE@@6B@
+ 000E:14B8 ??_C@_0BH@NHJB@INITSECURITYINTERFACEA?$AA@
+ 000E:14D0 ??_C@_0M@IBML@?$CFd?4?$CFd?4?$CFd?4?$CFd?$AA@
+ 000E:14DC ??_C@_0O@JAOA@TRANSPORTLOAD?$AA@
+ 000E:14EA ??_7TRANS_CCONNECTION@@6B@
+ 000E:1532 ??_C@_0BB@PCNE@0123456789abcdef?$AA@
+ 000E:1544 ??_C@_0DG@FPPK@Software?2Description?2Microsoft?2R@
+ 000E:157A ??_C@_0O@FLAE@ClockSequence?$AA@
+ 000E:1588 ??_C@_0BC@GBOB@LastTimeAllocated?$AA@
+ 000E:159A ??_C@_0N@BDMF@NWIPXSPX?4DLL?$AA@
+ 000E:15A8 ??_C@_0O@GLEB@IPXInitialize?$AA@
+ 000E:15B6 ??_C@_0N@DBEN@IPXSPXDeinit?$AA@
+ 000E:15C4 ??_C@_0BK@HJNG@IPXGetInternetworkAddress?$AA@
+ 000E:15DE ??_C@_0BG@DOMJ@Remote?5Procedure?5Call?$AA@
+ 000E:15F4 ??_C@_0EO@DPEN@Application?5encountered?5unhandle@
+ 000E:1642 ??_C@_08KHKC@RPCYIELD?$AA@
+ 000E:164C ??_C@_02EHDJ@?$DN?6?$AA@
+ 000E:1650 ??_C@_01KPOD@?$DN?$AA@
+ 000E:1652 ??_C@_02IAAH@wt?$AA@
+ 000E:1656 ??_C@_01BJG@?6?$AA@
+ 000E:1658 ??_C@_05HHOP@?2Root?$AA@
+ 000E:165E ??_C@_0O@LDIE@c?3?2RpcReg?4dat?$AA@
+ 000E:166C ??_C@_0BC@GCIN@RPC_REG_DATA_FILE?$AA@
+ 000E:167E ??_C@_0BI@BCIP@RPC?5Runtime?5Preferences?$AA@
+ 000E:1696 ??_C@_03ONMN@r?$CLt?$AA@
+ 000E:169A ??_C@_03PHIB@w?$CLt?$AA@
+ 000E:169E ??_C@_01PCFE@?2?$AA@
+ 000E:16A6 __fpinit
+ 000E:16B6 __iob
+ 000E:1756 __iob2
+ 000E:182E ?__MIDLFormatString@@3U_MIDL_FORMAT_STRING@@F
+ 000E:1BFA _edata
+ 000E:1BFA __edata
+ 000E:1BFA ?ThreadStatic@@3VTHREAD@@A
+ 000E:1BFC ?UuidCachedValues@@3U_UUID_CACHED_VALUES_STRUCT@@A
+ 000E:1C14 ?EpmDict@@3PAVDG_ENDPOINT_MANAGER_DICT@@A
+ 000E:1C28 ?PacketListMutex@DG_PACKET@@0PAVMUTEX@@A
+ 000E:1C2A ?PacketLists@DG_PACKET@@0QAUPACKET_LIST@1@A
+ 000E:1C6C ?SecurityCritSect@@3PAVMUTEX@@A
+ 000E:1C78 ?LoadedLoadableTransports@@3PAVCLIENT_LOADABLE_TRANSPORT_DICT@@A
+ 000E:2BB0 _ExceptTable
+ 000E:2BB2 _pRpcNsGetBuffer
+ 000E:2BB6 _impH
+ 000E:2BB8 _pRpcNsSendReceive
+ 000E:2BBC _hInstanceDLL
+ 000E:2BBE __mbac
+ 000E:2BC6 _TableSize
+ 000E:2BC8 _RegistryDataFileName
+ 000E:2CC9 _end
+ 000E:2CC9 __end
+ 0000:4000 Abs FJARQQ
+ 0000:5C32 Abs FIDRQQ
+ 0000:8000 Abs FJSRQQ
+ 0000:A23D Abs FIWRQQ
+ 0000:C000 Abs FJCRQQ
+ 0000:FE32 Abs FIARQQ
+
+Program entry point at 0004:0054
diff --git a/public/sdk/rpc16/win/dll/rpcrt1.sym b/public/sdk/rpc16/win/dll/rpcrt1.sym
new file mode 100644
index 000000000..e974f3d1e
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/rpcrt1.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/dll/security.map b/public/sdk/rpc16/win/dll/security.map
new file mode 100644
index 000000000..36101ffbf
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/security.map
@@ -0,0 +1,536 @@
+
+ security
+
+ Start Length Name Class
+ 0001:0000 030EDH _TEXT CODE
+ 0001:30ED 00074H INIT_TEXT CODE
+ 0001:3162 000D0H ECB_TEXT CODE
+ 0001:3232 00570H DES_TEXT CODE
+ 0001:37A2 00054H WEP_TEXT CODE
+ 0001:3800 000AFH COMDAT_SEG1 CODE
+ 0002:0000 00428H FAR_BSS FAR_BSS
+ 0003:0000 00010H NULL BEGDATA
+ 0003:0010 00912H _DATA DATA
+ 0003:0922 0000EH CDATA DATA
+ 0003:0930 00000H XIFB DATA
+ 0003:0930 00000H XIF DATA
+ 0003:0930 00000H XIFE DATA
+ 0003:0930 00000H XIB DATA
+ 0003:0930 00000H XI DATA
+ 0003:0930 00000H XIE DATA
+ 0003:0930 00000H XPB DATA
+ 0003:0930 00000H XP DATA
+ 0003:0930 00000H XPE DATA
+ 0003:0930 00000H XCB DATA
+ 0003:0930 00000H XC DATA
+ 0003:0930 00000H XCE DATA
+ 0003:0930 00000H XCFB DATA
+ 0003:0930 00000H XCFCRT DATA
+ 0003:0930 00000H XCF DATA
+ 0003:0930 00000H XCFE DATA
+ 0003:0930 00000H XIFCB DATA
+ 0003:0930 00000H XIFU DATA
+ 0003:0930 00000H XIFL DATA
+ 0003:0930 00000H XIFM DATA
+ 0003:0930 00000H XIFCE DATA
+ 0003:0930 00000H DBDATA DATA
+ 0003:0930 00010H CONST CONST
+ 0003:0940 00008H HDR MSG
+ 0003:0948 000D4H MSG MSG
+ 0003:0A1C 00002H PAD MSG
+ 0003:0A1E 00001H EPAD MSG
+ 0003:0A20 00050H _BSS BSS
+ 0003:0A70 00000H XOB BSS
+ 0003:0A70 00000H XO BSS
+ 0003:0A70 00000H XOE BSS
+ 0003:0A70 00000H XOFB BSS
+ 0003:0A70 00000H XOF BSS
+ 0003:0A70 00000H XOFE BSS
+ 0003:0A70 00004H c_common BSS
+
+ Origin Group
+ 0003:0 DGROUP
+
+ Address Export Alias
+
+ 0001:0DD6 ACQUIRECREDENTIALSHANDLEA ACQUIRECREDENTIALSHANDLEA
+ 0001:19DE APPLYCONTROLTOKEN APPLYCONTROLTOKEN
+ 0001:2258 COMPLETEAUTHTOKEN COMPLETEAUTHTOKEN
+ 0001:196A DELETESECURITYCONTEXT DELETESECURITYCONTEXT
+ 0001:2C28 DlgCredProc DlgCredProc
+ 0001:0DA0 ENUMERATESECURITYPACKAGESA ENUMERATESECURITYPACKAGESA
+ 0001:19C0 FREECONTEXTBUFFER FREECONTEXTBUFFER
+ 0001:0EEE FREECREDENTIALSHANDLE FREECREDENTIALSHANDLE
+ 0001:1716 INITIALIZESECURITYCONTEXTA INITIALIZESECURITYCONTEXTA
+ 0001:0924 INITSECURITYINTERFACEA INITSECURITYINTERFACEA
+ 0001:1A2C MAKESIGNATURE MAKESIGNATURE
+ 0001:1838 QUERYCONTEXTATTRIBUTESA QUERYCONTEXTATTRIBUTESA
+ 0001:0CA4 QUERYSECURITYPACKAGEINFOA QUERYSECURITYPACKAGEINFOA
+ 0001:1E44 SEALMESSAGE SEALMESSAGE
+ 0001:2050 UNSEALMESSAGE UNSEALMESSAGE
+ 0001:1C24 VERIFYSIGNATURE VERIFYSIGNATURE
+ 0001:08FA ___ExportedStub ___ExportedStub
+
+ Address Publics by Name
+
+ 0001:3800 ??_C@_04KIKH@none?$AA@
+ 0001:3806 ??_C@_04PJIL@NTLM?$AA@
+ 0001:384C ??_C@_05CKBG@Error?$AA@
+ 0001:382A ??_C@_06EJJP@NETAPI?$AA@
+ 0001:3822 ??_C@_07LBGP@NTLMSSP?$AA@
+ 0001:38A6 ??_C@_08OLPO@KGS?$CB?$EA?$CD$?$CF?$AA@
+ 0001:3842 ??_C@_09CIPE@WORKGROUP?$AA@
+ 0001:3832 ??_C@_0BA@JFAM@NETWKSTAGETINFO?$AA@
+ 0001:380C ??_C@_0BG@FFCA@NTLM?5Security?5Package?$AA@
+ 0001:386A ??_C@_0BG@MGJ@Can?8t?5allocate?5domain?$AA@
+ 0001:3880 ??_C@_0BI@IHLA@Can?8t?5allocate?5password?$AA@
+ 0001:3852 ??_C@_0BI@OOKM@Can?8t?5allocate?5username?$AA@
+ 0001:3898 ??_C@_0O@KMIK@CredentialBox?$AA@
+ 0001:0DD6 ACQUIRECREDENTIALSHANDLEA
+ 0001:19DE APPLYCONTROLTOKEN
+ 0001:2258 COMPLETEAUTHTOKEN
+ 0001:196A DELETESECURITYCONTEXT
+ 0000:0000 Imp DIALOGBOXPARAM (USER.239)
+ 0000:0000 Imp DISPATCHMESSAGE (USER.114)
+ 0001:2C28 DlgCredProc
+ 0000:0000 Imp DOS3CALL (KERNEL.102)
+ 0000:0000 Imp ENDDIALOG (USER.88)
+ 0001:0DA0 ENUMERATESECURITYPACKAGESA
+ 0000:0000 Imp FATALAPPEXIT (KERNEL.137)
+ 0000:0000 Imp FATALEXIT (KERNEL.1)
+ 0001:19C0 FREECONTEXTBUFFER
+ 0001:0EEE FREECREDENTIALSHANDLE
+ 0000:0000 Imp FREEMODULE (KERNEL.46)
+ 0000:0000 Imp FREEPROCINSTANCE (KERNEL.52)
+ 0000:0000 Imp GETDLGITEM (USER.91)
+ 0000:0000 Imp GETDLGITEMTEXT (USER.93)
+ 0000:0000 Imp GETDOSENVIRONMENT (KERNEL.131)
+ 0000:0000 Imp GETMESSAGE (USER.108)
+ 0000:0000 Imp GETMODULEUSAGE (KERNEL.48)
+ 0000:0000 Imp GETPROCADDRESS (KERNEL.50)
+ 0000:0000 Imp GETTICKCOUNT (USER.13)
+ 0000:0000 Imp GETVERSION (KERNEL.3)
+ 0000:0000 Imp GETWINDOWLONG (USER.135)
+ 0000:0000 Imp GLOBALALLOC (KERNEL.15)
+ 0000:0000 Imp GLOBALFREE (KERNEL.17)
+ 0000:0000 Imp GLOBALHANDLE (KERNEL.21)
+ 0000:0000 Imp GLOBALLOCK (KERNEL.18)
+ 0000:0000 Imp GLOBALREALLOC (KERNEL.16)
+ 0000:0000 Imp GLOBALSIZE (KERNEL.20)
+ 0000:0000 Imp GLOBALUNLOCK (KERNEL.19)
+ 0001:1716 INITIALIZESECURITYCONTEXTA
+ 0001:0924 INITSECURITYINTERFACEA
+ 0000:0000 Imp INITTASK (KERNEL.91)
+ 0001:312F LibEntry
+ 0001:090E LibMain
+ 0000:0000 Imp LOADLIBRARY (KERNEL.95)
+ 0000:0000 Imp LOCALALLOC (KERNEL.5)
+ 0000:0000 Imp LOCALFREE (KERNEL.7)
+ 0000:0000 Imp LocalInit (KERNEL.4)
+ 0000:0000 Imp LOCALREALLOC (KERNEL.6)
+ 0000:0000 Imp LOCALSIZE (KERNEL.10)
+ 0000:0000 Imp LOCKSEGMENT (KERNEL.23)
+ 0000:0000 Imp MAKEPROCINSTANCE (KERNEL.51)
+ 0001:1A2C MAKESIGNATURE
+ 0000:0000 Imp MESSAGEBOX (USER.1)
+ 0001:1838 QUERYCONTEXTATTRIBUTESA
+ 0001:0CA4 QUERYSECURITYPACKAGEINFOA
+ 0003:0004 rsrvptrs
+ 0001:1E44 SEALMESSAGE
+ 0000:0000 Imp SETDLGITEMTEXT (USER.92)
+ 0000:0000 Imp SETERRORMODE (KERNEL.107)
+ 0000:0000 Imp SETFOCUS (USER.22)
+ 0000:0000 Imp SETWINDOWLONG (USER.136)
+ 0000:0000 Imp TRANSLATEMESSAGE (USER.113)
+ 0000:0000 Imp UNLOCKSEGMENT (KERNEL.24)
+ 0001:2050 UNSEALMESSAGE
+ 0001:1C24 VERIFYSIGNATURE
+ 0001:37A2 WEP
+ 0000:0000 Imp WNETGETCAPS (USER.513)
+ 0003:07D3 _aseghi
+ 0003:07D1 _aseglo
+ 0002:0040 _C
+ 0001:2884 _CacheGetPassword
+ 0001:2882 _CacheInitializeCache
+ 0001:28D2 _CacheSetPassword
+ 0001:2F04 _CalculateLmOwfPassword
+ 0001:2FC2 _CalculateLmResponse
+ 0001:308A _Crc32
+ 0003:03C4 _CRCTable
+ 0002:005C _D
+ 0001:356A _des
+ 0001:360C _desf
+ 0001:3330 _des_cipher
+ 0001:3162 _DES_ECB
+ 0001:31CA _DES_ECB_LM
+ 0001:2EAE _DlgCredGetPassword
+ 0003:0174 _E
+ 0003:0A20 _edata
+ 0003:0A74 _end
+ 0003:08EA _errno
+ 0002:0078 _f
+ 0003:00BC _FP
+ 0001:093A _GetPassword
+ 0003:0A70 _hInstanceDLL
+ 0001:36AE _InitLanManKey
+ 0001:372E _InitNormalKey
+ 0003:007C _IP
+ 0002:0000 _KeyBuilder
+ 0001:3232 _key_table
+ 0002:00D8 _KS
+ 0002:0098 _L
+ 0003:0A72 _Mutex
+ 0003:03A4 _P
+ 0003:00FC _PC1_C
+ 0003:0118 _PC1_D
+ 0003:0144 _PC2_C
+ 0003:015C _PC2_D
+ 0001:2912 _PersistGetPassword
+ 0001:28F4 _PersistIsCacheSupported
+ 0002:03D8 _preS
+ 0001:011C _rc4
+ 0001:0010 _rc4_key
+ 0003:01A4 _S
+ 0001:0A08 _SetCredentialsFromAuthData
+ 0001:3504 _setkey
+ 0003:0134 _shifts
+ 0001:226A _SspAlloc
+ 0000:0000 Unr _SspAllocateString
+ 0001:22B8 _SspAllocateStringBlock
+ 0001:2A6E _SspContextAllocateContext
+ 0001:2A08 _SspContextDereferenceContext
+ 0001:2AD0 _SspContextGetTimeStamp
+ 0001:29D4 _SspContextReferenceContext
+ 0000:0000 Unr _SspCopyString
+ 0001:232C _SspCopyStringFromRaw
+ 0001:2B12 _SspCredentialAllocateCredential
+ 0001:2B92 _SspCredentialDereferenceCredential
+ 0001:2B5E _SspCredentialReferenceCredential
+ 0001:2294 _SspFree
+ 0000:0000 Unr _SspFreeString
+ 0001:237E _SspGetDefaultUser
+ 0001:0F3C _SspGetTokenBuffer
+ 0001:24D2 _SspGetUserInfo
+ 0001:2752 _SspGetWorkstation
+ 0001:1176 _SspHandleChallengeMessage
+ 0001:0FF0 _SspHandleFirstCall
+ 0001:19F0 _SsprGenCheckSum
+ 0001:2472 _SspSetDefaultUser
+ 0001:3084 _SspTicks
+ 0000:0000 Unr _SspTimeHasElapsed
+ 0003:07C4 _STKHQQ
+ 0002:0408 _tempL
+ 0000:9876 Abs __acrtmsg
+ 0000:9876 Abs __acrtused
+ 0000:D6D6 Abs __aDBdoswp
+ 0003:091C __adbgmsg
+ 0000:D6D6 Abs __aDBused
+ 0001:02F2 __aFulshr
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0003:08DC __aintdiv
+ 0003:091E __amblksiz
+ 0001:06B6 __amsg_exit
+ 0001:024E __astart
+ 0001:0510 __cexit
+ 0003:0919 __child
+ 0001:04DA __cinit
+ 0001:06AE __cintDIV
+ 0003:08F5 __cpumode
+ 0001:0563 __ctermsub
+ 0003:07DA __ctype
+ 0003:07DA __ctype_
+ 0001:051A __c_exit
+ 0003:07D0 __dllinit
+ 0003:08F6 __doserrno
+ 0003:0A20 __edata
+ 0003:0A74 __end
+ 0003:0912 __environ
+ 0003:091B __exitflag
+ 0003:08E0 __fac
+ 0001:05AE __FF_MSGBANNER
+ 0001:07EB __findlast
+ 0001:02FE __fmemcmp
+ 0001:035A __fmemcpy
+ 0001:0474 __fmemset
+ 0003:0924 __fpinit
+ 0000:9876 Abs __fptaskdata
+ 0001:067A __fptrap
+ 0001:040E __fstrcmp
+ 0001:0438 __fstrcpy
+ 0001:03F4 __fstrlen
+ 0001:03B8 __fstrncmp
+ 0001:080C __GetDGROUP
+ 0001:06F6 __growseg
+ 0003:07C6 __hModule
+ 0001:0785 __incseg
+ 0003:07CC __lpszCmdLine
+ 0001:0680 __myalloc
+ 0001:06AC __nearstub
+ 0003:08F8 __nfile
+ 0001:0870 __nfree
+ 0001:081C __nmalloc
+ 0001:0644 __NMSG_TEXT
+ 0001:066F __NMSG_WRITE
+ 0001:08EA __nmsize
+ 0001:02D9 __nomain
+ 0001:0886 __nrealloc
+ 0003:08F6 __oserr
+ 0003:08FA __osfile
+ 0003:08F1 __osmajor
+ 0003:08F0 __osminor
+ 0003:08F4 __osmode
+ 0003:08F0 __osver
+ 0003:08F2 __osversion
+ 0003:0914 __pgmptr
+ 0003:0920 __pnhNearHeap
+ 0001:05C4 __setenvp
+ 0000:0000 Abs __sizec
+ 0000:0000 Abs __sized
+ 0001:04BC __stubmain
+ 0001:37DE __STUBWEP
+ 0003:08EC __umaskval
+ 0003:07C8 __wDataSeg
+ 0001:020A __wflags
+ 0003:07CA __wHeapSize
+ 0000:0000 Imp __WINFLAGS (KERNEL.178)
+ 0003:08EF __winmajor
+ 0003:08EE __winminor
+ 0003:08EE __winver
+ 0003:07D7 ___aDBrterr
+ 0003:07D5 ___aDBswpflg
+ 0003:090E ___argc
+ 0003:0910 ___argv
+ 0001:08FA ___ExportedStub
+
+ Address Publics by Value
+
+ 0000:0000 Imp ENDDIALOG (USER.88)
+ 0000:0000 Imp WNETGETCAPS (USER.513)
+ 0000:0000 Imp __AHINCR (KERNEL.114)
+ 0000:0000 Imp GETPROCADDRESS (KERNEL.50)
+ 0000:0000 Imp FREEMODULE (KERNEL.46)
+ 0000:0000 Imp GLOBALFREE (KERNEL.17)
+ 0000:0000 Imp SETWINDOWLONG (USER.136)
+ 0000:0000 Imp FATALEXIT (KERNEL.1)
+ 0000:0000 Imp GETWINDOWLONG (USER.135)
+ 0000:0000 Imp DISPATCHMESSAGE (USER.114)
+ 0000:0000 Imp DOS3CALL (KERNEL.102)
+ 0000:0000 Imp LOCALALLOC (KERNEL.5)
+ 0000:0000 Unr _SspTimeHasElapsed
+ 0000:0000 Imp FREEPROCINSTANCE (KERNEL.52)
+ 0000:0000 Imp GETTICKCOUNT (USER.13)
+ 0000:0000 Imp __WINFLAGS (KERNEL.178)
+ 0000:0000 Abs __sizec
+ 0000:0000 Abs __sized
+ 0000:0000 Imp GETDLGITEM (USER.91)
+ 0000:0000 Imp LOCALFREE (KERNEL.7)
+ 0000:0000 Imp GLOBALALLOC (KERNEL.15)
+ 0000:0000 Imp SETERRORMODE (KERNEL.107)
+ 0000:0000 Imp MESSAGEBOX (USER.1)
+ 0000:0000 Imp GLOBALHANDLE (KERNEL.21)
+ 0000:0000 Imp GETMESSAGE (USER.108)
+ 0000:0000 Imp LOCALSIZE (KERNEL.10)
+ 0000:0000 Imp SETDLGITEMTEXT (USER.92)
+ 0000:0000 Imp GETDLGITEMTEXT (USER.93)
+ 0000:0000 Imp LOCALREALLOC (KERNEL.6)
+ 0000:0000 Imp LOCKSEGMENT (KERNEL.23)
+ 0000:0000 Imp GLOBALREALLOC (KERNEL.16)
+ 0000:0000 Imp GETMODULEUSAGE (KERNEL.48)
+ 0000:0000 Imp GLOBALSIZE (KERNEL.20)
+ 0000:0000 Imp GLOBALUNLOCK (KERNEL.19)
+ 0000:0000 Imp GETDOSENVIRONMENT (KERNEL.131)
+ 0000:0000 Unr _SspAllocateString
+ 0000:0000 Imp UNLOCKSEGMENT (KERNEL.24)
+ 0000:0000 Imp MAKEPROCINSTANCE (KERNEL.51)
+ 0000:0000 Imp TRANSLATEMESSAGE (USER.113)
+ 0000:0000 Imp SETFOCUS (USER.22)
+ 0000:0000 Imp INITTASK (KERNEL.91)
+ 0000:0000 Imp DIALOGBOXPARAM (USER.239)
+ 0000:0000 Imp LocalInit (KERNEL.4)
+ 0000:0000 Unr _SspFreeString
+ 0000:0000 Imp GETVERSION (KERNEL.3)
+ 0000:0000 Imp GLOBALLOCK (KERNEL.18)
+ 0000:0000 Unr _SspCopyString
+ 0000:0000 Imp LOADLIBRARY (KERNEL.95)
+ 0000:0000 Imp FATALAPPEXIT (KERNEL.137)
+ 0000:9876 Abs __acrtused
+ 0000:9876 Abs __fptaskdata
+ 0000:9876 Abs __acrtmsg
+ 0000:D6D6 Abs __aDBused
+ 0000:D6D6 Abs __aDBdoswp
+ 0001:0010 _rc4_key
+ 0001:011C _rc4
+ 0001:020A __wflags
+ 0001:024E __astart
+ 0001:02D9 __nomain
+ 0001:02F2 __aFulshr
+ 0001:02FE __fmemcmp
+ 0001:035A __fmemcpy
+ 0001:03B8 __fstrncmp
+ 0001:03F4 __fstrlen
+ 0001:040E __fstrcmp
+ 0001:0438 __fstrcpy
+ 0001:0474 __fmemset
+ 0001:04BC __stubmain
+ 0001:04DA __cinit
+ 0001:0510 __cexit
+ 0001:051A __c_exit
+ 0001:0563 __ctermsub
+ 0001:05AE __FF_MSGBANNER
+ 0001:05C4 __setenvp
+ 0001:0644 __NMSG_TEXT
+ 0001:066F __NMSG_WRITE
+ 0001:067A __fptrap
+ 0001:0680 __myalloc
+ 0001:06AC __nearstub
+ 0001:06AE __cintDIV
+ 0001:06B6 __amsg_exit
+ 0001:06F6 __growseg
+ 0001:0785 __incseg
+ 0001:07EB __findlast
+ 0001:080C __GetDGROUP
+ 0001:081C __nmalloc
+ 0001:0870 __nfree
+ 0001:0886 __nrealloc
+ 0001:08EA __nmsize
+ 0001:08FA ___ExportedStub
+ 0001:090E LibMain
+ 0001:0924 INITSECURITYINTERFACEA
+ 0001:093A _GetPassword
+ 0001:0A08 _SetCredentialsFromAuthData
+ 0001:0CA4 QUERYSECURITYPACKAGEINFOA
+ 0001:0DA0 ENUMERATESECURITYPACKAGESA
+ 0001:0DD6 ACQUIRECREDENTIALSHANDLEA
+ 0001:0EEE FREECREDENTIALSHANDLE
+ 0001:0F3C _SspGetTokenBuffer
+ 0001:0FF0 _SspHandleFirstCall
+ 0001:1176 _SspHandleChallengeMessage
+ 0001:1716 INITIALIZESECURITYCONTEXTA
+ 0001:1838 QUERYCONTEXTATTRIBUTESA
+ 0001:196A DELETESECURITYCONTEXT
+ 0001:19C0 FREECONTEXTBUFFER
+ 0001:19DE APPLYCONTROLTOKEN
+ 0001:19F0 _SsprGenCheckSum
+ 0001:1A2C MAKESIGNATURE
+ 0001:1C24 VERIFYSIGNATURE
+ 0001:1E44 SEALMESSAGE
+ 0001:2050 UNSEALMESSAGE
+ 0001:2258 COMPLETEAUTHTOKEN
+ 0001:226A _SspAlloc
+ 0001:2294 _SspFree
+ 0001:22B8 _SspAllocateStringBlock
+ 0001:232C _SspCopyStringFromRaw
+ 0001:237E _SspGetDefaultUser
+ 0001:2472 _SspSetDefaultUser
+ 0001:24D2 _SspGetUserInfo
+ 0001:2752 _SspGetWorkstation
+ 0001:2882 _CacheInitializeCache
+ 0001:2884 _CacheGetPassword
+ 0001:28D2 _CacheSetPassword
+ 0001:28F4 _PersistIsCacheSupported
+ 0001:2912 _PersistGetPassword
+ 0001:29D4 _SspContextReferenceContext
+ 0001:2A08 _SspContextDereferenceContext
+ 0001:2A6E _SspContextAllocateContext
+ 0001:2AD0 _SspContextGetTimeStamp
+ 0001:2B12 _SspCredentialAllocateCredential
+ 0001:2B5E _SspCredentialReferenceCredential
+ 0001:2B92 _SspCredentialDereferenceCredential
+ 0001:2C28 DlgCredProc
+ 0001:2EAE _DlgCredGetPassword
+ 0001:2F04 _CalculateLmOwfPassword
+ 0001:2FC2 _CalculateLmResponse
+ 0001:3084 _SspTicks
+ 0001:308A _Crc32
+ 0001:312F LibEntry
+ 0001:3162 _DES_ECB
+ 0001:31CA _DES_ECB_LM
+ 0001:3232 _key_table
+ 0001:3330 _des_cipher
+ 0001:3504 _setkey
+ 0001:356A _des
+ 0001:360C _desf
+ 0001:36AE _InitLanManKey
+ 0001:372E _InitNormalKey
+ 0001:37A2 WEP
+ 0001:37DE __STUBWEP
+ 0001:3800 ??_C@_04KIKH@none?$AA@
+ 0001:3806 ??_C@_04PJIL@NTLM?$AA@
+ 0001:380C ??_C@_0BG@FFCA@NTLM?5Security?5Package?$AA@
+ 0001:3822 ??_C@_07LBGP@NTLMSSP?$AA@
+ 0001:382A ??_C@_06EJJP@NETAPI?$AA@
+ 0001:3832 ??_C@_0BA@JFAM@NETWKSTAGETINFO?$AA@
+ 0001:3842 ??_C@_09CIPE@WORKGROUP?$AA@
+ 0001:384C ??_C@_05CKBG@Error?$AA@
+ 0001:3852 ??_C@_0BI@OOKM@Can?8t?5allocate?5username?$AA@
+ 0001:386A ??_C@_0BG@MGJ@Can?8t?5allocate?5domain?$AA@
+ 0001:3880 ??_C@_0BI@IHLA@Can?8t?5allocate?5password?$AA@
+ 0001:3898 ??_C@_0O@KMIK@CredentialBox?$AA@
+ 0001:38A6 ??_C@_08OLPO@KGS?$CB?$EA?$CD$?$CF?$AA@
+ 0002:0000 _KeyBuilder
+ 0002:0040 _C
+ 0002:005C _D
+ 0002:0078 _f
+ 0002:0098 _L
+ 0002:00D8 _KS
+ 0002:03D8 _preS
+ 0002:0408 _tempL
+ 0003:0004 rsrvptrs
+ 0003:007C _IP
+ 0003:00BC _FP
+ 0003:00FC _PC1_C
+ 0003:0118 _PC1_D
+ 0003:0134 _shifts
+ 0003:0144 _PC2_C
+ 0003:015C _PC2_D
+ 0003:0174 _E
+ 0003:01A4 _S
+ 0003:03A4 _P
+ 0003:03C4 _CRCTable
+ 0003:07C4 _STKHQQ
+ 0003:07C6 __hModule
+ 0003:07C8 __wDataSeg
+ 0003:07CA __wHeapSize
+ 0003:07CC __lpszCmdLine
+ 0003:07D0 __dllinit
+ 0003:07D1 _aseglo
+ 0003:07D3 _aseghi
+ 0003:07D5 ___aDBswpflg
+ 0003:07D7 ___aDBrterr
+ 0003:07DA __ctype_
+ 0003:07DA __ctype
+ 0003:08DC __aintdiv
+ 0003:08E0 __fac
+ 0003:08EA _errno
+ 0003:08EC __umaskval
+ 0003:08EE __winminor
+ 0003:08EE __winver
+ 0003:08EF __winmajor
+ 0003:08F0 __osminor
+ 0003:08F0 __osver
+ 0003:08F1 __osmajor
+ 0003:08F2 __osversion
+ 0003:08F4 __osmode
+ 0003:08F5 __cpumode
+ 0003:08F6 __oserr
+ 0003:08F6 __doserrno
+ 0003:08F8 __nfile
+ 0003:08FA __osfile
+ 0003:090E ___argc
+ 0003:0910 ___argv
+ 0003:0912 __environ
+ 0003:0914 __pgmptr
+ 0003:0919 __child
+ 0003:091B __exitflag
+ 0003:091C __adbgmsg
+ 0003:091E __amblksiz
+ 0003:0920 __pnhNearHeap
+ 0003:0924 __fpinit
+ 0003:0A20 _edata
+ 0003:0A20 __edata
+ 0003:0A70 _hInstanceDLL
+ 0003:0A72 _Mutex
+ 0003:0A74 __end
+ 0003:0A74 _end
+
+Program entry point at 0001:312f
diff --git a/public/sdk/rpc16/win/dll/security.sym b/public/sdk/rpc16/win/dll/security.sym
new file mode 100644
index 000000000..dee36cf50
--- /dev/null
+++ b/public/sdk/rpc16/win/dll/security.sym
Binary files differ
diff --git a/public/sdk/rpc16/win/inc/midles.h b/public/sdk/rpc16/win/inc/midles.h
new file mode 100644
index 000000000..b64e4fe61
--- /dev/null
+++ b/public/sdk/rpc16/win/inc/midles.h
@@ -0,0 +1,218 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ midles.h
+
+Abstract:
+
+ This module contains definitions needed for encoding/decoding
+ support (serializing/deserializing a.k.a. pickling).
+
+--*/
+
+#ifndef __MIDLES_H__
+#define __MIDLES_H__
+
+#include <rpcndr.h>
+
+//
+// Set the packing level for RPC structures for Dos and Windows.
+//
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack(2)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Pickling support
+ */
+typedef enum
+{
+ MES_ENCODE,
+ MES_DECODE,
+} MIDL_ES_CODE;
+
+typedef enum
+{
+ MES_INCREMENTAL_HANDLE,
+ MES_FIXED_BUFFER_HANDLE,
+ MES_DYNAMIC_BUFFER_HANDLE
+} MIDL_ES_HANDLE_STYLE;
+
+
+typedef void (__RPC_USER * MIDL_ES_ALLOC )
+ ( IN OUT void __RPC_FAR * state,
+ OUT char __RPC_FAR * __RPC_FAR * pbuffer,
+ IN OUT unsigned int __RPC_FAR * psize );
+
+typedef void (__RPC_USER * MIDL_ES_WRITE)
+ ( IN OUT void __RPC_FAR * state,
+ IN char __RPC_FAR * buffer,
+ IN unsigned int size );
+
+typedef void (__RPC_USER * MIDL_ES_READ)
+ ( IN OUT void __RPC_FAR * state,
+ OUT char __RPC_FAR * __RPC_FAR * pbuffer,
+ IN OUT unsigned int __RPC_FAR * psize );
+
+typedef struct _MIDL_ES_MESSAGE
+{
+ MIDL_STUB_MESSAGE StubMsg;
+ MIDL_ES_CODE Operation;
+ void __RPC_FAR * UserState;
+ unsigned long MesVersion:8;
+ unsigned long HandleStyle:8;
+ unsigned long HandleFlags:8;
+ unsigned long Reserve:8;
+ MIDL_ES_ALLOC Alloc;
+ MIDL_ES_WRITE Write;
+ MIDL_ES_READ Read;
+ unsigned char __RPC_FAR * Buffer;
+ unsigned long BufferSize;
+ unsigned char __RPC_FAR * __RPC_FAR * pDynBuffer;
+ unsigned long __RPC_FAR * pEncodedSize;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ unsigned long ProcNumber;
+ unsigned long AlienDataRep;
+ unsigned long IncrDataSize;
+ unsigned long ByteCount;
+} MIDL_ES_MESSAGE, __RPC_FAR * PMIDL_ES_MESSAGE;
+
+typedef PMIDL_ES_MESSAGE MIDL_ES_HANDLE;
+
+RPC_STATUS RPC_ENTRY
+MesEncodeIncrementalHandleCreate(
+ void __RPC_FAR * UserState,
+ MIDL_ES_ALLOC AllocFn,
+ MIDL_ES_WRITE WriteFn,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesDecodeIncrementalHandleCreate(
+ void __RPC_FAR * UserState,
+ MIDL_ES_READ ReadFn,
+ handle_t __RPC_FAR * pHandle );
+
+
+RPC_STATUS RPC_ENTRY
+MesIncrementalHandleReset(
+ handle_t Handle,
+ void __RPC_FAR * UserState,
+ MIDL_ES_ALLOC AllocFn,
+ MIDL_ES_WRITE WriteFn,
+ MIDL_ES_READ ReadFn,
+ MIDL_ES_CODE Operation );
+
+
+RPC_STATUS RPC_ENTRY
+MesEncodeFixedBufferHandleCreate(
+ char __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ unsigned long __RPC_FAR * pEncodedSize,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesEncodeDynBufferHandleCreate(
+ char __RPC_FAR * __RPC_FAR * pBuffer,
+ unsigned long __RPC_FAR * pEncodedSize,
+ handle_t __RPC_FAR * pHandle );
+
+RPC_STATUS RPC_ENTRY
+MesDecodeBufferHandleCreate(
+ char __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ handle_t __RPC_FAR * pHandle );
+
+
+RPC_STATUS RPC_ENTRY
+MesBufferHandleReset(
+ handle_t Handle,
+ unsigned long HandleStyle,
+ MIDL_ES_CODE Operation,
+ char __RPC_FAR * __RPC_FAR * pBuffer,
+ unsigned long BufferSize,
+ unsigned long __RPC_FAR * pEncodedSize );
+
+
+RPC_STATUS RPC_ENTRY
+MesHandleFree( handle_t Handle );
+
+RPC_STATUS RPC_ENTRY
+MesInqProcEncodingId(
+ handle_t Handle,
+ PRPC_SYNTAX_IDENTIFIER pInterfaceId,
+ unsigned long __RPC_FAR * pProcNum );
+
+
+#if defined(_MIPS_) || defined(_ALPHA_) || defined(_PPC_)
+#define __RPC_UNALIGNED __unaligned
+#else
+#define __RPC_UNALIGNED
+#endif
+
+void RPC_ENTRY I_NdrMesMessageInit( PMIDL_STUB_MESSAGE );
+
+size_t RPC_ENTRY
+NdrMesSimpleTypeAlignSize ( handle_t );
+
+void RPC_ENTRY
+NdrMesSimpleTypeDecode(
+ handle_t Handle,
+ void __RPC_FAR * pObject,
+ short Size );
+
+void RPC_ENTRY
+NdrMesSimpleTypeEncode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ void __RPC_FAR * pObject,
+ short Size );
+
+
+size_t RPC_ENTRY
+NdrMesTypeAlignSize(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_ENTRY
+NdrMesTypeEncode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_ENTRY
+NdrMesTypeDecode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ void __RPC_FAR * pObject );
+
+void RPC_VAR_ENTRY
+NdrMesProcEncodeDecode(
+ handle_t Handle,
+ PMIDL_STUB_DESC pStubDesc,
+ PFORMAT_STRING pFormatString,
+ ... );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for DOS and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack()
+#endif
+
+#endif /* __MIDLES_H__ */
diff --git a/public/sdk/rpc16/win/inc/rpc.h b/public/sdk/rpc16/win/inc/rpc.h
new file mode 100644
index 000000000..11ac876f5
--- /dev/null
+++ b/public/sdk/rpc16/win/inc/rpc.h
@@ -0,0 +1,69 @@
+
+/*++
+
+Copyright (c) 1991-1993 Microsoft Corporation
+
+Module Name:
+
+ rpc.h
+
+Abstract:
+
+ Master include file for RPC applications.
+
+--*/
+
+#ifndef __RPC_H__
+#define __RPC_H__
+
+// Set the packing level for RPC structures.
+
+#pragma warning(disable:4103)
+#pragma pack(2)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __RPC_WIN16__
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+typedef unsigned short RPC_STATUS;
+
+#define RPCXCWORD 7
+
+#define __RPC_FAR __far
+#define __RPC_API __far __pascal
+#define __RPC_USER __far __pascal __export
+#define __RPC_STUB __far __pascal __export
+#define RPC_ENTRY __pascal __export __far
+
+typedef void _near * I_RPC_HANDLE;
+
+#include "rpcdce.h"
+#include "rpcnsi.h"
+#include "rpcerr.h"
+#include "rpcx86.h"
+
+#ifdef PASCAL
+extern RPC_STATUS RPC_ENTRY RpcWinSetYieldInfo(HWND, BOOL, WORD, DWORD);
+extern RPC_STATUS RPC_ENTRY RpcWinSetYieldTimeout(unsigned int);
+extern RPC_STATUS RPC_ENTRY I_RpcWinSetTaskYielding(unsigned);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level.
+
+#pragma pack()
+#pragma warning(default:4103)
+
+#endif // __RPC_H__
+
diff --git a/public/sdk/rpc16/win/inc/rpcdce.h b/public/sdk/rpc16/win/inc/rpcdce.h
new file mode 100644
index 000000000..099457ea4
--- /dev/null
+++ b/public/sdk/rpc16/win/inc/rpcdce.h
@@ -0,0 +1,1618 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcdce.h
+
+Abstract:
+
+ This module contains the DCE RPC runtime APIs.
+
+--*/
+
+#ifndef __RPCDCE_H__
+#define __RPCDCE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IN
+#define OUT
+#define OPTIONAL
+
+/*typedef char small;*/
+/*typedef unsigned char byte;*/
+/*typedef unsigned char boolean;*/
+
+typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
+typedef RPC_BINDING_HANDLE handle_t;
+#define rpc_binding_handle_t RPC_BINDING_HANDLE
+
+#ifndef GUID_DEFINED
+#define GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID;
+#endif /* GUID_DEFINED */
+
+#ifndef UUID_DEFINED
+#define UUID_DEFINED
+typedef GUID UUID;
+#ifndef uuid_t
+#define uuid_t UUID
+#endif
+#endif
+
+typedef struct _RPC_BINDING_VECTOR
+{
+ unsigned long Count;
+ RPC_BINDING_HANDLE BindingH[1];
+} RPC_BINDING_VECTOR;
+#ifndef rpc_binding_vector_t
+#define rpc_binding_vector_t RPC_BINDING_VECTOR
+#endif
+
+typedef struct _UUID_VECTOR
+{
+ unsigned long Count;
+ UUID *Uuid[1];
+} UUID_VECTOR;
+#ifndef uuid_vector_t
+#define uuid_vector_t UUID_VECTOR
+#endif
+
+typedef void __RPC_FAR * RPC_IF_HANDLE;
+
+#ifndef IFID_DEFINED
+#define IFID_DEFINED
+typedef struct _RPC_IF_ID
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_IF_ID;
+#endif
+
+#define RPC_C_BINDING_INFINITE_TIMEOUT 10
+#define RPC_C_BINDING_MIN_TIMEOUT 0
+#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
+#define RPC_C_BINDING_MAX_TIMEOUT 9
+
+#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
+
+#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
+#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
+
+#define RPC_C_BIND_TO_ALL_NICS 1
+#define RPC_C_USE_INTERNET_PORT 1
+#define RPC_C_USE_INTRANET_PORT 2
+
+#ifdef RPC_UNICODE_SUPPORTED
+typedef struct _RPC_PROTSEQ_VECTORA
+{
+ unsigned int Count;
+ unsigned char __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTORA;
+
+typedef struct _RPC_PROTSEQ_VECTORW
+{
+ unsigned int Count;
+ unsigned short __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTORW;
+
+#ifdef UNICODE
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
+#else /* UNICODE */
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+typedef struct _RPC_PROTSEQ_VECTOR
+{
+ unsigned int Count;
+ unsigned char __RPC_FAR * Protseq[1];
+} RPC_PROTSEQ_VECTOR;
+
+#endif /* RPC_UNICODE_SUPPORTED */
+typedef struct _RPC_POLICY {
+ unsigned int Length ;
+ unsigned long EndpointFlags ;
+ unsigned long NICFlags ;
+ } RPC_POLICY, __RPC_FAR *PRPC_POLICY ;
+
+typedef void __RPC_USER
+RPC_OBJECT_INQ_FN (
+ IN UUID __RPC_FAR * ObjectUuid,
+ OUT UUID __RPC_FAR * TypeUuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+typedef RPC_STATUS
+RPC_IF_CALLBACK_FN (
+ IN RPC_IF_HANDLE InterfaceUuid,
+ IN void *Context
+ ) ;
+
+#define RPC_MGR_EPV void
+
+typedef struct
+{
+ unsigned int Count;
+ unsigned long Stats[1];
+} RPC_STATS_VECTOR;
+
+#define RPC_C_STATS_CALLS_IN 0
+#define RPC_C_STATS_CALLS_OUT 1
+#define RPC_C_STATS_PKTS_IN 2
+#define RPC_C_STATS_PKTS_OUT 3
+
+typedef struct
+{
+ unsigned long Count;
+ RPC_IF_ID __RPC_FAR * IfId[1];
+} RPC_IF_ID_VECTOR;
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingCopy (
+ IN RPC_BINDING_HANDLE SourceBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingFree (
+ IN OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+/* client */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBindingA (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBindingW (
+ IN unsigned short __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#ifdef UNICODE
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingW
+#else /* UNICODE */
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingFromStringBinding (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcBindingInqObject (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT UUID __RPC_FAR * ObjectUuid
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingReset (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* RpcBindingServerFromClient : UNSUPPORTED */
+/* RpcBindingSetAuthInfo */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcBindingSetObject (
+ IN RPC_BINDING_HANDLE Binding,
+ IN UUID __RPC_FAR * ObjectUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqDefaultProtectLevel(
+ IN unsigned long AuthnSvc,
+ OUT unsigned long __RPC_FAR *AuthnLevel
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBindingA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBindingW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+#ifdef UNICODE
+#define RpcBindingToStringBinding RpcBindingToStringBindingW
+#else /* UNICODE */
+#define RpcBindingToStringBinding RpcBindingToStringBindingA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingToStringBinding (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcBindingVectorFree (
+ IN OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingComposeA (
+ IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned char __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned char __RPC_FAR * Options OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingComposeW (
+ IN unsigned short __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned short __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned short __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned short __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned short __RPC_FAR * Options OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcStringBindingCompose RpcStringBindingComposeW
+#else /* UNICODE */
+#define RpcStringBindingCompose RpcStringBindingComposeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingCompose (
+ IN unsigned char __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned char __RPC_FAR * Protseq OPTIONAL,
+ IN unsigned char __RPC_FAR * NetworkAddr OPTIONAL,
+ IN unsigned char __RPC_FAR * Endpoint OPTIONAL,
+ IN unsigned char __RPC_FAR * Options OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringBinding OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParseA (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParseW (
+ IN unsigned short __RPC_FAR * StringBinding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcStringBindingParse RpcStringBindingParseW
+#else /* UNICODE */
+#define RpcStringBindingParse RpcStringBindingParseA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringBindingParse (
+ IN unsigned char __RPC_FAR * StringBinding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ObjUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Protseq OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkAddr OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Endpoint OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * NetworkOptions OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcStringFreeA (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcStringFreeW (
+ IN OUT unsigned short __RPC_FAR * __RPC_FAR * String
+ );
+
+#ifdef UNICODE
+#define RpcStringFree RpcStringFreeW
+#else /* UNICODE */
+#define RpcStringFree RpcStringFreeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcStringFree (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * String
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+RpcIfInqId (
+ IN RPC_IF_HANDLE RpcIfHandle,
+ OUT RPC_IF_ID __RPC_FAR * RpcIfId
+ );
+
+/* client/server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValidA (
+ IN unsigned char __RPC_FAR * Protseq
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValidW (
+ IN unsigned short __RPC_FAR * Protseq
+ );
+
+#ifdef UNICODE
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidW
+#else /* UNICODE */
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkIsProtseqValid (
+ IN unsigned char __RPC_FAR * Protseq
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqComTimeout (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned int __RPC_FAR * Timeout
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetComTimeout (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned int Timeout
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetCancelTimeout(
+ long Timeout
+ );
+
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqsA (
+ OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqsW (
+ OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#ifdef UNICODE
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsW
+#else /* UNICODE */
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNetworkInqProtseqs (
+ OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectInqType (
+ IN UUID __RPC_FAR * ObjUuid,
+ OUT UUID __RPC_FAR * TypeUuid OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectSetInqFn (
+ IN RPC_OBJECT_INQ_FN __RPC_FAR * InquiryFn
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcObjectSetType (
+ IN UUID __RPC_FAR * ObjUuid,
+ IN UUID __RPC_FAR * TypeUuid OPTIONAL
+ );
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFreeA (
+ IN OUT RPC_PROTSEQ_VECTORA __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFreeW (
+ IN OUT RPC_PROTSEQ_VECTORW __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#ifdef UNICODE
+#define RpcProtseqVectorFree RpcProtseqVectorFreeW
+#else /* UNICODE */
+#define RpcProtseqVectorFree RpcProtseqVectorFreeA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcProtseqVectorFree (
+ IN OUT RPC_PROTSEQ_VECTOR __RPC_FAR * __RPC_FAR * ProtseqVector
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerInqBindings (
+ OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVector
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerInqIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
+ OUT RPC_MGR_EPV __RPC_FAR * __RPC_FAR * MgrEpv
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerListen (
+ IN unsigned int MinimumCallThreads,
+ IN unsigned int MaxCalls,
+ IN unsigned int DontWait
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid OPTIONAL,
+ IN RPC_MGR_EPV __RPC_FAR * MgrEpv OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterIfEx (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid,
+ IN RPC_MGR_EPV __RPC_FAR * MgrEpv,
+ IN unsigned int Flags,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_CALLBACK_FN __RPC_FAR *IfCallback
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUnregisterIf (
+ IN RPC_IF_HANDLE IfSpec,
+ IN UUID __RPC_FAR * MgrTypeUuid, OPTIONAL
+ IN unsigned int WaitForCallsToComplete
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqs (
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsEx (
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsIf (
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcServerUseAllProtseqsIfEx (
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseq RpcServerUseProtseqW
+#define RpcServerUseProtseqEx RpcServerUseProtseqExW
+#else /* UNICODE */
+#define RpcServerUseProtseq RpcServerUseProtseqA
+#define RpcServerUseProtseqEx RpcServerUseProtseqExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseq (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned short __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned short __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpW
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExW
+#else /* UNICODE */
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpA
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEp (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqEpEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN unsigned char __RPC_FAR * Endpoint,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfExA (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfExW (
+ IN unsigned short __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#ifdef UNICODE
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfW
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExW
+#else /* UNICODE */
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfA
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIf (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerUseProtseqIfEx (
+ IN unsigned char __RPC_FAR * Protseq,
+ IN unsigned int MaxCalls,
+ IN RPC_IF_HANDLE IfSpec,
+ IN void __RPC_FAR * SecurityDescriptor,
+ IN PRPC_POLICY Policy
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtStatsVectorFree (
+ IN RPC_STATS_VECTOR ** StatsVector
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqStats (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT RPC_STATS_VECTOR ** Statistics
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtIsServerListening (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtStopServerListening (
+ IN RPC_BINDING_HANDLE Binding
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtWaitServerListen (
+ void
+ );
+
+/* server */
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetServerStackSize (
+ IN unsigned long ThreadStackSize
+ );
+
+/* server */
+void RPC_ENTRY
+RpcSsDontSerializeContext (
+ void
+ );
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcMgmtEnableIdleCleanup (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqIfIds (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcIfIdVectorFree (
+ IN OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVector
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincNameA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincNameW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+#ifdef UNICODE
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameW
+#else /* UNICODE */
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqServerPrincName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincNameA (
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincNameW (
+ IN unsigned long AuthnSvc,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+#ifdef UNICODE
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameW
+#else /* UNICODE */
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcServerInqDefaultPrincName (
+ IN unsigned long AuthnSvc,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * PrincName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+/* client */
+RPC_STATUS RPC_ENTRY
+RpcEpResolveBinding (
+ IN RPC_BINDING_HANDLE Binding,
+ IN RPC_IF_HANDLE IfSpec
+ );
+
+/* client */
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryNameA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryNameW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+#ifdef UNICODE
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameW
+#else /* UNICODE */
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingInqEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * EntryName
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+typedef void __RPC_FAR * RPC_AUTH_IDENTITY_HANDLE;
+typedef void __RPC_FAR * RPC_AUTHZ_HANDLE;
+
+#define RPC_C_AUTHN_LEVEL_DEFAULT 0
+#define RPC_C_AUTHN_LEVEL_NONE 1
+#define RPC_C_AUTHN_LEVEL_CONNECT 2
+#define RPC_C_AUTHN_LEVEL_CALL 3
+#define RPC_C_AUTHN_LEVEL_PKT 4
+#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
+#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
+
+#define RPC_C_IMP_LEVEL_ANONYMOUS 1
+#define RPC_C_IMP_LEVEL_IDENTIFY 2
+#define RPC_C_IMP_LEVEL_IMPERSONATE 3
+#define RPC_C_IMP_LEVEL_DELEGATE 4
+
+#define RPC_C_QOS_IDENTITY_STATIC 0
+#define RPC_C_QOS_IDENTITY_DYNAMIC 1
+
+#define RPC_C_QOS_CAPABILITIES_DEFAULT 0
+#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 1
+
+#define RPC_C_PROTECT_LEVEL_DEFAULT (RPC_C_AUTHN_LEVEL_DEFAULT)
+#define RPC_C_PROTECT_LEVEL_NONE (RPC_C_AUTHN_LEVEL_NONE)
+#define RPC_C_PROTECT_LEVEL_CONNECT (RPC_C_AUTHN_LEVEL_CONNECT)
+#define RPC_C_PROTECT_LEVEL_CALL (RPC_C_AUTHN_LEVEL_CALL)
+#define RPC_C_PROTECT_LEVEL_PKT (RPC_C_AUTHN_LEVEL_PKT)
+#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
+#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY (RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
+
+#define RPC_C_AUTHN_NONE 0
+#define RPC_C_AUTHN_DCE_PRIVATE 1
+#define RPC_C_AUTHN_DCE_PUBLIC 2
+#define RPC_C_AUTHN_DEC_PUBLIC 4
+#define RPC_C_AUTHN_WINNT 10
+#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFFL
+
+#define RPC_C_SECURITY_QOS_VERSION 1L
+
+typedef struct _RPC_SECURITY_QOS {
+ unsigned long Version;
+ unsigned long Capabilities;
+ unsigned long IdentityTracking;
+ unsigned long ImpersonationType;
+} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+typedef struct _SEC_WINNT_AUTH_IDENTITY
+{
+ char __RPC_FAR *User;
+ char __RPC_FAR *Domain;
+ char __RPC_FAR *Password;
+} SEC_WINNT_AUTH_IDENTITY;
+#else
+
+
+#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
+#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
+ unsigned short __RPC_FAR *User;
+ unsigned long UserLength;
+ unsigned short __RPC_FAR *Domain;
+ unsigned long DomainLength;
+ unsigned short __RPC_FAR *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
+
+typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
+ unsigned char __RPC_FAR *User;
+ unsigned long UserLength;
+ unsigned char __RPC_FAR *Domain;
+ unsigned long DomainLength;
+ unsigned char __RPC_FAR *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
+
+
+#ifdef UNICODE
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W
+#else // UNICODE
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_A
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_A
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_A
+#endif // UNICODE
+#endif // defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+
+#define RPC_C_AUTHZ_NONE 0
+#define RPC_C_AUTHZ_NAME 1
+#define RPC_C_AUTHZ_DCE 2
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClientA (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClientW (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoExA (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc,
+ IN RPC_SECURITY_QOS *SecurityQos OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfoExW (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc, OPTIONAL
+ IN RPC_SECURITY_QOS *SecurityQOS
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoExA (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc, OPTIONAL
+ IN unsigned long RpcQosVersion,
+ OUT RPC_SECURITY_QOS *SecurityQOS
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfoExW (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL,
+ IN unsigned long RpcQosVersion,
+ OUT RPC_SECURITY_QOS *SecurityQOS
+ );
+
+typedef void
+(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ IN void __RPC_FAR * Arg,
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long KeyVer,
+ OUT void __RPC_FAR * __RPC_FAR * Key,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfoA (
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfoW (
+ IN unsigned short __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientW
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoW
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoW
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoW
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExW
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExW
+#else /* UNICODE */
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientA
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoA
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoA
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoA
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExA
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthClient (
+ IN RPC_BINDING_HANDLE ClientBinding, OPTIONAL
+ OUT RPC_AUTHZ_HANDLE __RPC_FAR * Privs,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingInqAuthInfo (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ServerPrincName, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnLevel, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthnSvc, OPTIONAL
+ OUT RPC_AUTH_IDENTITY_HANDLE __RPC_FAR * AuthIdentity, OPTIONAL
+ OUT unsigned long __RPC_FAR * AuthzSvc OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcBindingSetAuthInfo (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnLevel,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_IDENTITY_HANDLE AuthIdentity, OPTIONAL
+ IN unsigned long AuthzSvc
+ );
+
+typedef void
+(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN) (
+ IN void __RPC_FAR * Arg,
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long KeyVer,
+ OUT void __RPC_FAR * __RPC_FAR * Key,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcServerRegisterAuthInfo (
+ IN unsigned char __RPC_FAR * ServerPrincName,
+ IN unsigned long AuthnSvc,
+ IN RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn OPTIONAL,
+ IN void __RPC_FAR * Arg OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+typedef struct {
+ unsigned char __RPC_FAR * UserName;
+ unsigned char __RPC_FAR * ComputerName;
+ unsigned short Privilege;
+ unsigned long AuthFlags;
+} RPC_CLIENT_INFORMATION1, __RPC_FAR * PRPC_CLIENT_INFORMATION1;
+
+RPC_STATUS RPC_ENTRY
+RpcBindingServerFromClient (
+ IN RPC_BINDING_HANDLE ClientBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * ServerBinding
+ );
+
+void RPC_ENTRY
+RpcRaiseException (
+ IN RPC_STATUS exception
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcTestCancel(
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcCancelThread(
+ IN void * Thread
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidCreate (
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToStringA (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromStringA (
+ IN unsigned char __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToStringW (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromStringW (
+ IN unsigned short __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#ifdef UNICODE
+#define UuidFromString UuidFromStringW
+#define UuidToString UuidToStringW
+#else /* UNICODE */
+#define UuidFromString UuidFromStringA
+#define UuidToString UuidToStringA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidToString (
+ IN UUID __RPC_FAR * Uuid,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * StringUuid
+ );
+
+/* client/server */
+RPC_STATUS RPC_ENTRY
+UuidFromString (
+ IN unsigned char __RPC_FAR * StringUuid,
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+signed int RPC_ENTRY
+UuidCompare (
+ IN UUID __RPC_FAR * Uuid1,
+ IN UUID __RPC_FAR * Uuid2,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+RPC_STATUS RPC_ENTRY
+UuidCreateNil (
+ OUT UUID __RPC_FAR * NilUuid
+ );
+
+int RPC_ENTRY
+UuidEqual (
+ IN UUID __RPC_FAR * Uuid1,
+ IN UUID __RPC_FAR * Uuid2,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+unsigned short RPC_ENTRY
+UuidHash (
+ IN UUID __RPC_FAR * Uuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+int RPC_ENTRY
+UuidIsNil (
+ IN UUID __RPC_FAR * Uuid,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplaceA (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplaceW (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned short * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterA (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterW (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned short * Annotation
+ );
+
+#ifdef UNICODE
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceW
+#define RpcEpRegister RpcEpRegisterW
+#else /* UNICODE */
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceA
+#define RpcEpRegister RpcEpRegisterA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegisterNoReplace (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcEpRegister (
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector OPTIONAL,
+ IN unsigned char * Annotation
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+
+RPC_STATUS RPC_ENTRY
+RpcEpUnregister(
+ IN RPC_IF_HANDLE IfSpec,
+ IN RPC_BINDING_VECTOR * BindingVector,
+ IN UUID_VECTOR * UuidVector
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqTextA (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned char __RPC_FAR * ErrorText
+ );
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqTextW (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned short __RPC_FAR * ErrorText
+ );
+
+#ifdef UNICODE
+#define DceErrorInqText DceErrorInqTextW
+#else /* UNICODE */
+#define DceErrorInqText DceErrorInqTextA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+DceErrorInqText (
+ IN RPC_STATUS RpcStatus,
+ OUT unsigned char __RPC_FAR * ErrorText
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+#define DCE_C_ERROR_STRING_LEN 256
+
+typedef I_RPC_HANDLE * RPC_EP_INQ_HANDLE;
+
+#define RPC_C_EP_ALL_ELTS 0
+#define RPC_C_EP_MATCH_BY_IF 1
+#define RPC_C_EP_MATCH_BY_OBJ 2
+#define RPC_C_EP_MATCH_BY_BOTH 3
+
+#define RPC_C_VERS_ALL 1
+#define RPC_C_VERS_COMPATIBLE 2
+#define RPC_C_VERS_EXACT 3
+#define RPC_C_VERS_MAJOR_ONLY 4
+#define RPC_C_VERS_UPTO 5
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqBegin (
+ IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption OPTIONAL,
+ IN UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqDone (
+ IN OUT RPC_EP_INQ_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNextA (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNextW (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT UUID __RPC_FAR * ObjectUuid OPTIONAL,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+#ifdef UNICODE
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW
+#else /* UNICODE */
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA
+#endif /* UNICODE */
+
+#else /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpEltInqNext (
+ IN RPC_EP_INQ_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding OPTIONAL,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation OPTIONAL
+ );
+
+#endif /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtEpUnregister (
+ IN RPC_BINDING_HANDLE EpBinding OPTIONAL,
+ IN RPC_IF_ID __RPC_FAR * IfId,
+ IN RPC_BINDING_HANDLE Binding,
+ IN UUID __RPC_FAR * ObjectUuid OPTIONAL
+ );
+
+typedef int
+(__RPC_API * RPC_MGMT_AUTHORIZATION_FN) (
+ IN RPC_BINDING_HANDLE ClientBinding,
+ IN unsigned long RequestedMgmtOperation,
+ OUT RPC_STATUS __RPC_FAR * Status
+ );
+
+#define RPC_C_MGMT_INQ_IF_IDS 0
+#define RPC_C_MGMT_INQ_PRINC_NAME 1
+#define RPC_C_MGMT_INQ_STATS 2
+#define RPC_C_MGMT_IS_SERVER_LISTEN 3
+#define RPC_C_MGMT_STOP_SERVER_LISTEN 4
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetAuthorizationFn (
+ IN RPC_MGMT_AUTHORIZATION_FN AuthorizationFn
+ );
+
+
+#define RPC_C_PARM_MAX_PACKET_LENGTH 1
+#define RPC_C_PARM_BUFFER_LENGTH 2
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtInqParameter (
+ IN unsigned Parameter,
+ IN unsigned long __RPC_FAR * Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtSetParameter (
+ IN unsigned Parameter,
+ IN unsigned long Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtBindingInqParameter (
+ IN RPC_BINDING_HANDLE Handle,
+ IN unsigned Parameter,
+ IN unsigned long __RPC_FAR * Value
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcMgmtBindingSetParameter (
+ IN RPC_BINDING_HANDLE Handle,
+ IN unsigned Parameter,
+ IN unsigned long Value
+ );
+
+#define RPC_IF_AUTOLISTEN 0x0001
+#define RPC_IF_OLE 0x0002
+
+#include <rpcdcep.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RPCDCE_H__ */
diff --git a/public/sdk/rpc16/win/inc/rpcdcep.h b/public/sdk/rpc16/win/inc/rpcdcep.h
new file mode 100644
index 000000000..85ed0fd67
--- /dev/null
+++ b/public/sdk/rpc16/win/inc/rpcdcep.h
@@ -0,0 +1,415 @@
+/*++
+
+Copyright (c) 1991-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcdcep.h
+
+Abstract:
+
+ This module contains the private RPC runtime APIs for use by the
+ stubs and by support libraries. Applications must not call these
+ routines.
+
+--*/
+
+#ifndef __RPCDCEP_H__
+#define __RPCDCEP_H__
+
+// Set the packing level for RPC structures for Dos and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack(2)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _RPC_VERSION {
+ unsigned short MajorVersion;
+ unsigned short MinorVersion;
+} RPC_VERSION;
+
+typedef struct _RPC_SYNTAX_IDENTIFIER {
+ GUID SyntaxGUID;
+ RPC_VERSION SyntaxVersion;
+} RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
+
+typedef struct _RPC_MESSAGE
+{
+ RPC_BINDING_HANDLE Handle;
+ unsigned long DataRepresentation;
+ void __RPC_FAR * Buffer;
+ unsigned int BufferLength;
+ unsigned int ProcNum;
+ PRPC_SYNTAX_IDENTIFIER TransferSyntax;
+ void __RPC_FAR * RpcInterfaceInformation;
+ void __RPC_FAR * ReservedForRuntime;
+ RPC_MGR_EPV __RPC_FAR * ManagerEpv;
+ void __RPC_FAR * ImportContext;
+ unsigned long RpcFlags;
+} RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
+
+
+typedef RPC_STATUS RPC_ENTRY RPC_FORWARD_FUNCTION(
+ IN UUID __RPC_FAR * InterfaceId,
+ IN RPC_VERSION __RPC_FAR * InterfaceVersion,
+ IN UUID __RPC_FAR * ObjectId,
+ IN unsigned char __RPC_FAR * Rpcpro,
+ IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
+
+/*
+ * Types of function calls for datagram rpc
+ */
+
+#define RPC_NCA_FLAGS_DEFAULT 0x00000000 /* 0b000...000 */
+#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001 /* 0b000...001 */
+#define RPC_NCA_FLAGS_BROADCAST 0x00000002 /* 0b000...010 */
+#define RPC_NCA_FLAGS_MAYBE 0x00000004 /* 0b000...100 */
+
+#define RPC_BUFFER_COMPLETE 0x00001000 /* used by pipes */
+#define RPC_BUFFER_PARTIAL 0x00002000 /* used by pipes */
+#define RPC_BUFFER_EXTRA 0x00004000 /* used by pipes */
+
+#define RPCFLG_NON_NDR 0x80000000UL
+#define RPCFLG_ASYNCHRONOUS 0x40000000UL
+#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000UL
+#define RPCFLG_LOCAL_CALL 0x10000000UL
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#define RPC_FLAGS_VALID_BIT 0x8000
+#endif
+
+#if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
+#define RPC_FLAGS_VALID_BIT 0x00008000
+#endif
+
+typedef
+void
+(__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
+ IN OUT PRPC_MESSAGE Message
+ );
+
+typedef struct {
+ unsigned int DispatchTableCount;
+ RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
+ int Reserved;
+} RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
+
+typedef struct _RPC_PROTSEQ_ENDPOINT
+{
+ unsigned char __RPC_FAR * RpcProtocolSequence;
+ unsigned char __RPC_FAR * Endpoint;
+} RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
+
+/*
+Both of these types MUST start with the InterfaceId and TransferSyntax.
+Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
+*/
+#define NT351_INTERFACE_SIZE 0x40
+#define RPC_INTERFACE_HAS_PIPES 0x0001
+
+typedef struct _RPC_SERVER_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
+ void const __RPC_FAR *InterpreterInfo;
+ unsigned int Flags ;
+} RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
+
+typedef struct _RPC_CLIENT_INTERFACE
+{
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ unsigned long Reserved;
+ void const __RPC_FAR * InterpreterInfo;
+ unsigned int Flags ;
+} RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSendReceive (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcFreeBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSend (
+ IN OUT PRPC_MESSAGE Message
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcReceive (
+ IN OUT PRPC_MESSAGE Message,
+ IN unsigned int Size
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcFreePipeBuffer (
+ IN OUT RPC_MESSAGE __RPC_FAR * Message
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcReallocPipeBuffer (
+ IN PRPC_MESSAGE Message,
+ IN unsigned int NewSize
+ ) ;
+
+typedef void * I_RPC_MUTEX;
+
+void RPC_ENTRY
+I_RpcRequestMutex (
+ IN OUT I_RPC_MUTEX * Mutex
+ );
+
+void RPC_ENTRY
+I_RpcClearMutex (
+ IN I_RPC_MUTEX Mutex
+ );
+
+void RPC_ENTRY
+I_RpcDeleteMutex (
+ IN I_RPC_MUTEX Mutex
+ );
+
+void __RPC_FAR * RPC_ENTRY
+I_RpcAllocate (
+ IN unsigned int Size
+ );
+
+void RPC_ENTRY
+I_RpcFree (
+ IN void __RPC_FAR * Object
+ );
+
+void RPC_ENTRY
+I_RpcPauseExecution (
+ IN unsigned long Milliseconds
+ );
+
+typedef
+void
+(__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
+ void __RPC_FAR * AssociationContext
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcMonitorAssociation (
+ IN RPC_BINDING_HANDLE Handle,
+ IN PRPC_RUNDOWN RundownRoutine,
+ IN void * Context
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcStopMonitorAssociation (
+ IN RPC_BINDING_HANDLE Handle
+ );
+
+RPC_BINDING_HANDLE RPC_ENTRY
+I_RpcGetCurrentCallHandle(
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetAssociationContext (
+ OUT void __RPC_FAR * __RPC_FAR * AssociationContext
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcSetAssociationContext (
+ IN void __RPC_FAR * AssociationContext
+ );
+
+#ifdef __RPC_NT__
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsBindingSetEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+#else
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsBindingSetEntryName (
+ IN RPC_BINDING_HANDLE Binding,
+ IN unsigned long EntryNameSyntax,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+#endif
+
+#ifdef __RPC_NT__
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqDynamicEndpoint (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
+ );
+
+#else
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqDynamicEndpoint (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
+ );
+
+#endif
+
+#define TRANSPORT_TYPE_CN 0x1
+#define TRANSPORT_TYPE_DG 0x2
+#define TRANSPORT_TYPE_LPC 0x4
+#define TRANSPORT_TYPE_WMSG 0x8
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingInqTransportType (
+ IN RPC_BINDING_HANDLE Binding,
+ OUT unsigned int __RPC_FAR * Type
+ );
+
+typedef struct _RPC_TRANSFER_SYNTAX
+{
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_TRANSFER_SYNTAX;
+
+RPC_STATUS RPC_ENTRY
+I_RpcIfInqTransferSyntaxes (
+ IN RPC_IF_HANDLE RpcIfHandle,
+ OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
+ IN unsigned int TransferSyntaxSize,
+ OUT unsigned int __RPC_FAR * TransferSyntaxCount
+ );
+
+RPC_STATUS RPC_ENTRY
+I_UuidCreate (
+ OUT UUID __RPC_FAR * Uuid
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingCopy (
+ IN RPC_BINDING_HANDLE SourceBinding,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingIsClientLocal (
+ IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
+ OUT unsigned int __RPC_FAR * ClientLocalFlag
+ );
+
+void RPC_ENTRY
+I_RpcSsDontSerializeContext (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcLaunchDatagramReceiveThread(
+ void __RPC_FAR * pAddress
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerRegisterForwardFunction (
+ IN RPC_FORWARD_FUNCTION __RPC_FAR * pForwardFunction
+ );
+
+
+RPC_STATUS RPC_ENTRY
+I_RpcConnectionInqSockBuffSize(
+ OUT unsigned long __RPC_FAR * RecvBuffSize,
+ OUT unsigned long __RPC_FAR * SendBuffSize
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcConnectionSetSockBuffSize(
+ IN unsigned long RecvBuffSize,
+ IN unsigned long SendBuffSize
+ );
+
+
+#ifdef MSWMSG
+RPC_STATUS RPC_ENTRY
+I_RpcServerStartListening(
+ HWND hWnd
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerStopListening(
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcGetThreadWindowHandle(
+ OUT HWND *WindowHandle
+ ) ;
+
+typedef RPC_STATUS (*RPC_BLOCKING_FN) (
+ IN void *wnd,
+ IN void *Context,
+ IN HANDLE hSyncEvent
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcAsyncSendReceive(
+ IN OUT PRPC_MESSAGE pRpcMessage,
+ IN OPTIONAL void *Context,
+ HWND hWnd
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcBindingSetAsync(
+ IN RPC_BINDING_HANDLE Binding,
+ IN RPC_BLOCKING_FN BlockingFn
+ ) ;
+
+LONG RPC_ENTRY
+I_RpcWindowProc(
+ IN HWND hWnd,
+ IN UINT Message,
+ IN WPARAM wParam,
+ IN LPARAM lParam
+ ) ;
+
+RPC_STATUS RPC_ENTRY
+I_RpcSetWMsgEndpoint (
+ IN WCHAR __RPC_FAR * Endpoint
+ ) ;
+#endif
+
+RPC_STATUS RPC_ENTRY
+I_RpcServerInqTransportType(
+ OUT unsigned int __RPC_FAR * Type
+ ) ;
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for Dos and Windows.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
+#pragma pack()
+#endif
+
+#endif /* __RPCDCEP_H__ */
diff --git a/public/sdk/rpc16/win/inc/rpcerr.h b/public/sdk/rpc16/win/inc/rpcerr.h
new file mode 100644
index 000000000..139df1b1b
--- /dev/null
+++ b/public/sdk/rpc16/win/inc/rpcerr.h
@@ -0,0 +1,188 @@
+/*********************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1987-1990 **/
+/** **/
+/** Rpc Error Codes from the compiler and runtime **/
+/** **/
+/*********************************************************/
+
+/*
+If you change this file, you must also change ntstatus.mc and winerror.mc
+*/
+
+#ifndef __RPCERR_H__
+#define __RPCERR_H__
+
+#define RPC_S_OK 0
+#define RPC_S_INVALID_ARG 1
+#define RPC_S_INVALID_STRING_BINDING 2
+#define RPC_S_OUT_OF_MEMORY 3
+#define RPC_S_WRONG_KIND_OF_BINDING 4
+#define RPC_S_INVALID_BINDING 5
+#define RPC_S_PROTSEQ_NOT_SUPPORTED 6
+#define RPC_S_INVALID_RPC_PROTSEQ 7
+#define RPC_S_INVALID_STRING_UUID 8
+#define RPC_S_INVALID_ENDPOINT_FORMAT 9
+
+#define RPC_S_INVALID_NET_ADDR 10
+#define RPC_S_INVALID_NAF_ID 11
+#define RPC_S_NO_ENDPOINT_FOUND 12
+#define RPC_S_INVALID_TIMEOUT 13
+#define RPC_S_OBJECT_NOT_FOUND 14
+#define RPC_S_ALREADY_REGISTERED 15
+#define RPC_S_TYPE_ALREADY_REGISTERED 16
+#define RPC_S_ALREADY_LISTENING 17
+#define RPC_S_NO_PROTSEQS_REGISTERED 18
+#define RPC_S_NOT_LISTENING 19
+
+#define RPC_S_OUT_OF_THREADS 20
+#define RPC_S_UNKNOWN_MGR_TYPE 21
+#define RPC_S_UNKNOWN_IF 22
+#define RPC_S_NO_BINDINGS 23
+#define RPC_S_NO_PROTSEQS 24
+#define RPC_S_CANT_CREATE_ENDPOINT 25
+#define RPC_S_OUT_OF_RESOURCES 26
+#define RPC_S_SERVER_UNAVAILABLE 27
+#define RPC_S_SERVER_TOO_BUSY 28
+#define RPC_S_INVALID_NETWORK_OPTIONS 29
+
+#define RPC_S_NO_CALL_ACTIVE 30
+#define RPC_S_INVALID_LEVEL 31
+#define RPC_S_CANNOT_SUPPORT 32
+#define RPC_S_CALL_FAILED 33
+#define RPC_S_CALL_FAILED_DNE 34
+#define RPC_S_PROTOCOL_ERROR 35
+
+// Unused.
+
+// Unused.
+
+#define RPC_S_UNSUPPORTED_TRANS_SYN 38
+#define RPC_S_BUFFER_TOO_SMALL 39
+
+#define RPC_S_NO_CONTEXT_AVAILABLE 40
+#define RPC_S_SERVER_OUT_OF_MEMORY 41
+#define RPC_S_UNSUPPORTED_TYPE 42
+#define RPC_S_ZERO_DIVIDE 43
+#define RPC_S_ADDRESS_ERROR 44
+#define RPC_S_FP_DIV_ZERO 45
+#define RPC_S_FP_UNDERFLOW 46
+#define RPC_S_FP_OVERFLOW 47
+#define RPC_S_INVALID_TAG 48
+#define RPC_S_INVALID_BOUND 49
+
+#define RPC_S_NO_ENTRY_NAME 50
+#define RPC_S_INVALID_NAME_SYNTAX 51
+#define RPC_S_UNSUPPORTED_NAME_SYNTAX 52
+#define RPC_S_UUID_LOCAL_ONLY 53
+#define RPC_S_UUID_NO_ADDRESS 54
+#define RPC_S_DUPLICATE_ENDPOINT 55
+#define RPC_S_INVALID_SECURITY_DESC 56
+#define RPC_S_ACCESS_DENIED 57
+#define RPC_S_UNKNOWN_AUTHN_TYPE 58
+#define RPC_S_MAX_CALLS_TOO_SMALL 59
+
+#define RPC_S_STRING_TOO_LONG 60
+#define RPC_S_PROTSEQ_NOT_FOUND 61
+#define RPC_S_PROCNUM_OUT_OF_RANGE 62
+#define RPC_S_BINDING_HAS_NO_AUTH 63
+#define RPC_S_UNKNOWN_AUTHN_SERVICE 64
+#define RPC_S_UNKNOWN_AUTHN_LEVEL 65
+#define RPC_S_INVALID_AUTH_IDENTITY 66
+#define RPC_S_UNKNOWN_AUTHZ_SERVICE 67
+#define EPT_S_INVALID_ENTRY 68
+#define EPT_S_CANT_PERFORM_OP 69
+
+#define EPT_S_NOT_REGISTERED 70
+#define RPC_S_NOTHING_TO_EXPORT 71
+#define RPC_S_INCOMPLETE_NAME 72
+#define RPC_S_UNIMPLEMENTED_API 73
+#define RPC_S_INVALID_VERS_OPTION 74
+#define RPC_S_NO_MORE_MEMBERS 75
+#define RPC_S_NOT_ALL_OBJS_UNEXPORTED 76
+#define RPC_S_INTERFACE_NOT_FOUND 77
+#define RPC_S_ENTRY_ALREADY_EXISTS 78
+#define RPC_S_ENTRY_NOT_FOUND 79
+
+#define RPC_S_NAME_SERVICE_UNAVAILABLE 80
+#define RPC_S_CALL_IN_PROGRESS 81
+#define RPC_S_NO_MORE_BINDINGS 82
+#define RPC_S_GROUP_MEMBER_NOT_FOUND 83
+#define EPT_S_CANT_CREATE 84
+#define RPC_S_INVALID_OBJECT 85
+#define RPC_S_CALL_CANCELLED 86
+#define RPC_S_BINDING_INCOMPLETE 87
+#define RPC_S_COMM_FAILURE 88
+#define RPC_S_UNSUPPORTED_AUTHN_LEVEL 89
+
+#define RPC_S_NO_PRINC_NAME 90
+#define RPC_S_NOT_RPC_ERROR 91
+#define RPC_S_SEC_PKG_ERROR 92
+#define RPC_S_NOT_CANCELLED 93
+#define RPC_S_SEND_INCOMPLETE 94
+
+
+#define RPC_S_INTERNAL_ERROR 100
+
+/* The list of servers available for auto_handle binding has been exhausted. */
+
+#define RPC_X_NO_MORE_ENTRIES 256
+
+/* Insufficient memory available to set up necessary data structures. */
+
+#define RPC_X_NO_MEMORY 257
+
+/* The specified bounds of an array are inconsistent. */
+
+#define RPC_X_INVALID_BOUND 258
+
+/* The discriminant value does not match any of the case values. */
+/* There is no default case. */
+
+#define RPC_X_INVALID_TAG 259
+
+/* The file designated by DCERPCCHARTRANS cannot be opened. */
+
+#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL 260
+
+/* The file containing char translation table has fewer than 512 bytes. */
+
+#define RPC_X_SS_CHAR_TRANS_SHORT_FILE 261
+
+/* A null context handle is passed in an [in] parameter position. */
+
+#define RPC_X_SS_IN_NULL_CONTEXT 262
+
+/* Only raised on the callee side. */
+/* A uuid in an [in] handle does not correspond to any known context. */
+
+#define RPC_X_SS_CONTEXT_MISMATCH 263
+
+/* Only raised on the caller side. */
+/* A uuid in an [in, out] context handle changed during a call. */
+
+#define RPC_X_SS_CONTEXT_DAMAGED 264
+
+#define RPC_X_SS_HANDLES_MISMATCH 265
+
+#define RPC_X_SS_CANNOT_GET_CALL_HANDLE 266
+
+#define RPC_X_NULL_REF_POINTER 267
+
+#define RPC_X_ENUM_VALUE_OUT_OF_RANGE 268
+
+#define RPC_X_BYTE_COUNT_TOO_SMALL 269
+
+#define RPC_X_BAD_STUB_DATA 270
+
+#define RPC_X_INVALID_ES_ACTION 271
+#define RPC_X_WRONG_ES_VERSION 272
+#define RPC_X_WRONG_STUB_VERSION 273
+#define RPC_X_INVALID_BUFFER 274
+#define RPC_X_INVALID_PIPE_OBJECT 275
+#define RPC_X_INVALID_PIPE_OPERATION 276
+#define RPC_X_WRONG_PIPE_VERSION 277
+
+
+#endif /* __RPCERR_H__ */
+
diff --git a/public/sdk/rpc16/win/inc/rpcndr.h b/public/sdk/rpc16/win/inc/rpcndr.h
new file mode 100644
index 000000000..65d1cdbfe
--- /dev/null
+++ b/public/sdk/rpc16/win/inc/rpcndr.h
@@ -0,0 +1,2630 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcndr.h
+
+Abstract:
+
+ Definitions for stub data structures and prototypes of helper functions.
+
+Author:
+
+ DonnaLi (01-01-91)
+
+Environment:
+
+ DOS, Win 3.X, and Win/NT.
+
+Revision History:
+
+ DONNALI 08-29-91 Start recording history
+ donnali 09-11-91 change conversion macros
+ donnali 09-18-91 check in files for moving
+ STEVEZ 10-15-91 Merge with NT tree
+ donnali 10-28-91 add prototype
+ donnali 11-19-91 bugfix for strings
+ MIKEMON 12-17-91 DCE runtime API conversion
+ donnali 03-24-92 change rpc public header f
+ STEVEZ 04-04-92 add nsi include
+ mikemon 04-18-92 security support and misc
+ DovhH 04-24-24 Changed signature of <int>_from_ndr
+ (to unsigned <int>)
+ Added <base_type>_array_from_ndr routines
+ RyszardK 06-17-93 Added support for hyper
+ VibhasC 09-11-93 Created rpcndrn.h
+ DKays 10-14-93 Fixed up rpcndrn.h MIDL 2.0
+ RyszardK 01-15-94 Merged in the midl 2.0 changes from rpcndrn.h
+ Stevebl 04-22-96 Hookole support changes to MIDL_*_INFO
+
+--*/
+
+#ifndef __RPCNDR_H__
+#define __RPCNDR_H__
+
+//
+// Set the packing level for RPC structures for Dos, Windows and Mac.
+//
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
+#pragma pack(2)
+#endif
+
+#if defined(__RPC_MAC__)
+#define _MAC_
+#endif
+
+#include <rpcnsip.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************************
+
+ Network Computing Architecture (NCA) definition:
+
+ Network Data Representation: (NDR) Label format:
+ An unsigned long (32 bits) with the following layout:
+
+ 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
+ +---------------+---------------+---------------+-------+-------+
+ | Reserved | Reserved |Floating point | Int | Char |
+ | | |Representation | Rep. | Rep. |
+ +---------------+---------------+---------------+-------+-------+
+
+ Where
+
+ Reserved:
+
+ Must be zero (0) for NCA 1.5 and NCA 2.0.
+
+ Floating point Representation is:
+
+ 0 - IEEE
+ 1 - VAX
+ 2 - Cray
+ 3 - IBM
+
+ Int Rep. is Integer Representation:
+
+ 0 - Big Endian
+ 1 - Little Endian
+
+ Char Rep. is Character Representation:
+
+ 0 - ASCII
+ 1 - EBCDIC
+
+ The Microsoft Local Data Representation (for all platforms which are
+ of interest currently is edefined below:
+
+ ****************************************************************************/
+
+#define NDR_CHAR_REP_MASK (unsigned long)0X0000000FL
+#define NDR_INT_REP_MASK (unsigned long)0X000000F0L
+#define NDR_FLOAT_REP_MASK (unsigned long)0X0000FF00L
+
+#define NDR_LITTLE_ENDIAN (unsigned long)0X00000010L
+#define NDR_BIG_ENDIAN (unsigned long)0X00000000L
+
+#define NDR_IEEE_FLOAT (unsigned long)0X00000000L
+#define NDR_VAX_FLOAT (unsigned long)0X00000100L
+
+#define NDR_ASCII_CHAR (unsigned long)0X00000000L
+#define NDR_EBCDIC_CHAR (unsigned long)0X00000001L
+
+#if defined(__RPC_MAC__)
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000000L
+#define NDR_LOCAL_ENDIAN NDR_BIG_ENDIAN
+#else
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0X00000010L
+#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
+#endif
+
+
+/****************************************************************************
+ * Macros for targeted platforms
+ ****************************************************************************/
+
+#if (defined(_WIN32_DCOM) || 0x400 <= _WIN32_WINNT)
+#define TARGET_IS_NT40_OR_LATER 1
+#else
+#define TARGET_IS_NT40_OR_LATER 0
+#endif
+
+#if (0x400 <= WINVER)
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1
+#else
+#define TARGET_IS_NT351_OR_WIN95_OR_LATER 0
+#endif
+
+/****************************************************************************
+ * Other MIDL base types / predefined types:
+ ****************************************************************************/
+
+#define small char
+typedef unsigned char byte;
+typedef unsigned char boolean;
+
+#ifndef _HYPER_DEFINED
+#define _HYPER_DEFINED
+
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
+#define hyper __int64
+#define MIDL_uhyper unsigned __int64
+#else
+typedef double hyper;
+typedef double MIDL_uhyper;
+#endif
+
+#endif // _HYPER_DEFINED
+
+#ifndef _WCHAR_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
+#endif
+
+#ifndef _SIZE_T_DEFINED
+typedef unsigned int size_t;
+#define _SIZE_T_DEFINED
+#endif
+
+#ifdef __RPC_DOS__
+#define __RPC_CALLEE __far __pascal
+#endif
+
+#ifdef __RPC_WIN16__
+#define __RPC_CALLEE __far __pascal __export
+#endif
+
+#ifdef __RPC_WIN32__
+#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
+#define __RPC_CALLEE __stdcall
+#else
+#define __RPC_CALLEE
+#endif
+#endif
+
+#ifdef __RPC_MAC__
+#define __RPC_CALLEE __far
+#endif
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+
+#ifdef __RPC_WIN16__
+#define RPC_VAR_ENTRY __export __cdecl
+#else
+#define RPC_VAR_ENTRY __cdecl
+#endif
+
+
+/* winnt only */
+#if defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA)
+#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport)
+#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport)
+#else
+#define __MIDL_DECLSPEC_DLLIMPORT
+#define __MIDL_DECLSPEC_DLLEXPORT
+#endif
+
+
+
+
+/****************************************************************************
+ * Context handle management related definitions:
+ *
+ * Client and Server Contexts.
+ *
+ ****************************************************************************/
+
+typedef void __RPC_FAR * NDR_CCONTEXT;
+
+typedef struct
+ {
+ void __RPC_FAR * pad[2];
+ void __RPC_FAR * userContext;
+ } __RPC_FAR * NDR_SCONTEXT;
+
+#define NDRSContextValue(hContext) (&(hContext)->userContext)
+
+#define cbNDRContext 20 /* size of context on WIRE */
+
+typedef void (__RPC_USER __RPC_FAR * NDR_RUNDOWN)(void __RPC_FAR * context);
+
+typedef struct _SCONTEXT_QUEUE {
+ unsigned long NumberOfObjects;
+ NDR_SCONTEXT * ArrayOfObjects;
+ } SCONTEXT_QUEUE, __RPC_FAR * PSCONTEXT_QUEUE;
+
+RPC_BINDING_HANDLE RPC_ENTRY
+NDRCContextBinding (
+ IN NDR_CCONTEXT CContext
+ );
+
+void RPC_ENTRY
+NDRCContextMarshall (
+ IN NDR_CCONTEXT CContext,
+ OUT void __RPC_FAR *pBuff
+ );
+
+void RPC_ENTRY
+NDRCContextUnmarshall (
+ OUT NDR_CCONTEXT __RPC_FAR *pCContext,
+ IN RPC_BINDING_HANDLE hBinding,
+ IN void __RPC_FAR *pBuff,
+ IN unsigned long DataRepresentation
+ );
+
+void RPC_ENTRY
+NDRSContextMarshall (
+ IN NDR_SCONTEXT CContext,
+ OUT void __RPC_FAR *pBuff,
+ IN NDR_RUNDOWN userRunDownIn
+ );
+
+NDR_SCONTEXT RPC_ENTRY
+NDRSContextUnmarshall (
+ IN void __RPC_FAR *pBuff,
+ IN unsigned long DataRepresentation
+ );
+
+void RPC_ENTRY
+RpcSsDestroyClientContext (
+ IN void __RPC_FAR * __RPC_FAR * ContextHandle
+ );
+
+
+/****************************************************************************
+ NDR conversion related definitions.
+ ****************************************************************************/
+
+#define byte_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+#define boolean_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+#define small_from_ndr(source, target) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)&(source)->Buffer)++; \
+ }
+
+#define small_from_ndr_temp(source, target, format) \
+ { \
+ *(target) = *(*(char __RPC_FAR * __RPC_FAR *)(source))++; \
+ }
+
+#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) \
+ { \
+ NDRcopy ( \
+ (((char __RPC_FAR *)(Target))+(LowerIndex)), \
+ (Source)->Buffer, \
+ (unsigned int)((UpperIndex)-(LowerIndex))); \
+ *(unsigned long __RPC_FAR *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); \
+ }
+
+/****************************************************************************
+ Platform specific mapping of c-runtime functions.
+ ****************************************************************************/
+
+#ifdef __RPC_DOS__
+#define MIDL_ascii_strlen(string) \
+ _fstrlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ _fstrcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ _fmemset(s,c,n)
+#endif
+
+#ifdef __RPC_WIN16__
+#define MIDL_ascii_strlen(string) \
+ _fstrlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ _fstrcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ _fmemset(s,c,n)
+#endif
+
+#if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
+#define MIDL_ascii_strlen(string) \
+ strlen(string)
+#define MIDL_ascii_strcpy(target,source) \
+ strcpy(target,source)
+#define MIDL_memset(s,c,n) \
+ memset(s,c,n)
+#endif
+
+/****************************************************************************
+ Ndr Library helper function prototypes for MIDL 1.0 ndr functions.
+ ****************************************************************************/
+
+void RPC_ENTRY
+NDRcopy (
+ IN void __RPC_FAR *pTarget,
+ IN void __RPC_FAR *pSource,
+ IN unsigned int size
+ );
+
+size_t RPC_ENTRY
+MIDL_wchar_strlen (
+ IN wchar_t __RPC_FAR * s
+ );
+
+void RPC_ENTRY
+MIDL_wchar_strcpy (
+ OUT void __RPC_FAR * t,
+ IN wchar_t __RPC_FAR * s
+ );
+
+void RPC_ENTRY
+char_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT unsigned char __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+char_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned char __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+short_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT unsigned short __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+short_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned short __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+short_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT unsigned short __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+long_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT unsigned long __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+long_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT unsigned long __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+long_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT unsigned long __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+enum_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT unsigned int __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+float_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+float_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+double_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+double_array_from_ndr (
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT void __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+hyper_from_ndr (
+ IN OUT PRPC_MESSAGE source,
+ OUT hyper __RPC_FAR * target
+ );
+
+void RPC_ENTRY
+hyper_array_from_ndr(
+ IN OUT PRPC_MESSAGE SourceMessage,
+ IN unsigned long LowerIndex,
+ IN unsigned long UpperIndex,
+ OUT hyper __RPC_FAR * Target
+ );
+
+void RPC_ENTRY
+hyper_from_ndr_temp (
+ IN OUT unsigned char __RPC_FAR * __RPC_FAR * source,
+ OUT hyper __RPC_FAR * target,
+ IN unsigned long format
+ );
+
+void RPC_ENTRY
+data_from_ndr (
+ PRPC_MESSAGE source,
+ void __RPC_FAR * target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+data_into_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_into_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+data_size_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_size_ndr (
+ void __RPC_FAR * source,
+ PRPC_MESSAGE target,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void RPC_ENTRY
+tree_peek_ndr (
+ PRPC_MESSAGE source,
+ unsigned char __RPC_FAR * __RPC_FAR * buffer,
+ char __RPC_FAR * format,
+ unsigned char MscPak
+ );
+
+void __RPC_FAR * RPC_ENTRY
+midl_allocate (
+ size_t size
+ );
+
+/****************************************************************************
+ MIDL 2.0 ndr definitions.
+ ****************************************************************************/
+
+typedef unsigned long error_status_t;
+
+#define _midl_ma1( p, cast ) *(*( cast **)&p)++
+#define _midl_ma2( p, cast ) *(*( cast **)&p)++
+#define _midl_ma4( p, cast ) *(*( cast **)&p)++
+#define _midl_ma8( p, cast ) *(*( cast **)&p)++
+
+#define _midl_unma1( p, cast ) *(( cast *)p)++
+#define _midl_unma2( p, cast ) *(( cast *)p)++
+#define _midl_unma3( p, cast ) *(( cast *)p)++
+#define _midl_unma4( p, cast ) *(( cast *)p)++
+
+// Some alignment specific macros.
+
+
+#define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe))
+#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc))
+#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8))
+
+#define _midl_addp( p, n ) (p += n)
+
+// Marshalling macros
+
+#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++
+#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p
+#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++
+#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++)
+
+
+////////////////////////////////////////////////////////////////////////////
+// Ndr macros.
+////////////////////////////////////////////////////////////////////////////
+
+#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, \
+ _midl_ma4( p, unsigned long) = 0, \
+ _midl_ma4( p, unsigned long) = l)
+
+#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long),\
+ (_midl_addp(p,4)), \
+ (l=_midl_unma4(p,unsigned long))
+
+#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20)
+
+#define NdrUnMarshCCtxtHdl(pc,p,h,drep) \
+ (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20)
+
+#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep ))
+
+
+#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd)
+
+#define NdrFieldOffset(s,f) (long)(& (((s __RPC_FAR *)0)->f))
+#define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t))
+
+#if defined(__RPC_MAC__)
+#define NdrFcShort(s) (unsigned char)(s >> 8), (unsigned char)(s & 0xff)
+#define NdrFcLong(s) (unsigned char)(s >> 24), (unsigned char)((s & 0x00ff0000) >> 16), \
+ (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)(s & 0xff)
+#else
+#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
+#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), \
+ (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
+#endif // Mac
+
+//
+// On the server side, the following exceptions are mapped to
+// the bad stub data exception if -error stub_data is used.
+//
+
+#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER \
+ ( (RpcExceptionCode() == STATUS_ACCESS_VIOLATION) || \
+ (RpcExceptionCode() == STATUS_DATATYPE_MISALIGNMENT) || \
+ (RpcExceptionCode() == RPC_X_BAD_STUB_DATA) )
+
+/////////////////////////////////////////////////////////////////////////////
+// Some stub helper functions.
+/////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////
+// Stub helper structures.
+////////////////////////////////////////////////////////////////////////////
+
+struct _MIDL_STUB_MESSAGE;
+struct _MIDL_STUB_DESC;
+struct _FULL_PTR_XLAT_TABLES;
+
+typedef unsigned char __RPC_FAR * RPC_BUFPTR;
+typedef unsigned long RPC_LENGTH;
+
+// Expression evaluation callback routine prototype.
+typedef void (__RPC_USER __RPC_FAR * EXPR_EVAL)( struct _MIDL_STUB_MESSAGE __RPC_FAR * );
+
+typedef const unsigned char __RPC_FAR * PFORMAT_STRING;
+
+/*
+ * Multidimensional conformant/varying array struct.
+ */
+typedef struct
+ {
+ long Dimension;
+
+ /* These fields MUST be (unsigned long *) */
+ unsigned long __RPC_FAR * BufferConformanceMark;
+ unsigned long __RPC_FAR * BufferVarianceMark;
+
+ /* Count arrays, used for top level arrays in -Os stubs */
+ unsigned long __RPC_FAR * MaxCountArray;
+ unsigned long __RPC_FAR * OffsetArray;
+ unsigned long __RPC_FAR * ActualCountArray;
+ } ARRAY_INFO, __RPC_FAR *PARRAY_INFO;
+
+/*
+ * Pipe related definitions.
+ */
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_PULL_RTN)(
+ char __RPC_FAR * state,
+ void __RPC_FAR * buf,
+ unsigned long esize,
+ unsigned long __RPC_FAR * ecount );
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_PUSH_RTN)(
+ char __RPC_FAR * state,
+ void __RPC_FAR * buf,
+ unsigned long ecount );
+
+typedef void
+(__RPC_FAR __RPC_API * NDR_PIPE_ALLOC_RTN)(
+ char __RPC_FAR * state,
+ unsigned long bsize,
+ void __RPC_FAR * __RPC_FAR * buf,
+ unsigned long __RPC_FAR * bcount );
+
+
+typedef struct _GENERIC_PIPE_TYPE
+ {
+ NDR_PIPE_PULL_RTN pfnPull;
+ NDR_PIPE_PUSH_RTN pfnPush;
+ NDR_PIPE_ALLOC_RTN pfnAlloc;
+ char __RPC_FAR * pState;
+ } GENERIC_PIPE_TYPE;
+
+
+typedef struct {
+ int CurrentState;
+ int ElemsInChunk;
+ int ElemAlign;
+ int ElemWireSize;
+ int ElemMemSize;
+ int PartialBufferSize;
+ unsigned char __RPC_FAR * PartialElem;
+ int PartialElemSize;
+ int PartialOffset;
+ int EndOfPipe;
+ } NDR_PIPE_STATE;
+
+typedef struct _PIPE_MESSAGE
+ {
+ unsigned short Signature;
+ unsigned short PipeId;
+ GENERIC_PIPE_TYPE __RPC_FAR * pPipeType;
+ PFORMAT_STRING pTypeFormat;
+ unsigned short PipeStatus;
+ unsigned short PipeFlags;
+ struct _MIDL_STUB_MESSAGE __RPC_FAR * pStubMsg;
+ } NDR_PIPE_MESSAGE, __RPC_FAR * PNDR_PIPE_MESSAGE;
+
+typedef struct _NDR_PIPE_DESC
+ {
+ NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg;
+ short CurrentPipe;
+ short InPipes;
+ short OutPipes;
+ short TotalPipes;
+ short PipeVersion;
+ short Flags;
+ unsigned char __RPC_FAR * DispatchBuffer;
+ unsigned char __RPC_FAR * LastPartialBuffer;
+ unsigned long LastPartialSize;
+ unsigned char __RPC_FAR * BufferSave;
+ unsigned long LengthSave;
+ NDR_PIPE_STATE RuntimeState;
+ } NDR_PIPE_DESC, __RPC_FAR * PNDR_PIPE_DESC;
+
+
+/*
+ * MIDL Stub Message
+ */
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
+#include <pshpack4.h>
+#endif
+
+typedef struct _MIDL_STUB_MESSAGE
+ {
+ /* RPC message structure. */
+ PRPC_MESSAGE RpcMsg;
+
+ /* Pointer into RPC message buffer. */
+ unsigned char __RPC_FAR * Buffer;
+
+ /*
+ * These are used internally by the Ndr routines to mark the beginning
+ * and end of an incoming RPC buffer.
+ */
+ unsigned char __RPC_FAR * BufferStart;
+ unsigned char __RPC_FAR * BufferEnd;
+
+ /*
+ * Used internally by the Ndr routines as a place holder in the buffer.
+ * On the marshalling side it's used to mark the location where conformance
+ * size should be marshalled.
+ * On the unmarshalling side it's used to mark the location in the buffer
+ * used during pointer unmarshalling to base pointer offsets off of.
+ */
+ unsigned char __RPC_FAR * BufferMark;
+
+ /* Set by the buffer sizing routines. */
+ unsigned long BufferLength;
+
+ /* Set by the memory sizing routines. */
+ unsigned long MemorySize;
+
+ /* Pointer to user memory. */
+ unsigned char __RPC_FAR * Memory;
+
+ /* Is the Ndr routine begin called from a client side stub. */
+ int IsClient;
+
+ /* Can the buffer be re-used for memory on unmarshalling. */
+ int ReuseBuffer;
+
+ /* Holds the current pointer to an allocate all nodes memory block. */
+ unsigned char __RPC_FAR * AllocAllNodesMemory;
+
+ /* Used for debugging asserts only, remove later. */
+ unsigned char __RPC_FAR * AllocAllNodesMemoryEnd;
+
+ /*
+ * Stuff needed while handling complex structures
+ */
+
+ /* Ignore imbeded pointers while computing buffer or memory sizes. */
+ int IgnoreEmbeddedPointers;
+
+ /*
+ * This marks the location in the buffer where pointees of a complex
+ * struct reside.
+ */
+ unsigned char __RPC_FAR * PointerBufferMark;
+
+ /*
+ * Used to catch errors in SendReceive.
+ */
+ unsigned char fBufferValid;
+
+ /*
+ * Obsolete unused field (formerly MaxContextHandleNumber).
+ */
+ unsigned char Unused;
+
+ /*
+ * Used internally by the Ndr routines. Holds the max counts for
+ * a conformant array.
+ */
+ unsigned long MaxCount;
+
+ /*
+ * Used internally by the Ndr routines. Holds the offsets for a varying
+ * array.
+ */
+ unsigned long Offset;
+
+ /*
+ * Used internally by the Ndr routines. Holds the actual counts for
+ * a varying array.
+ */
+ unsigned long ActualCount;
+
+ /* Allocation and Free routine to be used by the Ndr routines. */
+ void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
+
+ /*
+ * Top of parameter stack. Used for "single call" stubs during marshalling
+ * to hold the beginning of the parameter list on the stack. Needed to
+ * extract parameters which hold attribute values for top level arrays and
+ * pointers.
+ */
+ unsigned char __RPC_FAR * StackTop;
+
+ /*
+ * Fields used for the transmit_as and represent_as objects.
+ * For represent_as the mapping is: presented=local, transmit=named.
+ */
+ unsigned char __RPC_FAR * pPresentedType;
+ unsigned char __RPC_FAR * pTransmitType;
+
+ /*
+ * When we first construct a binding on the client side, stick it
+ * in the rpcmessage and later call RpcGetBuffer, the handle field
+ * in the rpcmessage is changed. That's fine except that we need to
+ * have that original handle for use in unmarshalling context handles
+ * (the second argument in NDRCContextUnmarshall to be exact). So
+ * stash the contructed handle here and extract it when needed.
+ */
+ handle_t SavedHandle;
+
+ /*
+ * Pointer back to the stub descriptor. Use this to get all handle info.
+ */
+ const struct _MIDL_STUB_DESC __RPC_FAR * StubDesc;
+
+ /*
+ * Full pointer stuff.
+ */
+ struct _FULL_PTR_XLAT_TABLES __RPC_FAR * FullPtrXlatTables;
+
+ unsigned long FullPtrRefId;
+
+ /*
+ * flags
+ */
+
+ int fCheckBounds;
+
+ int fInDontFree :1;
+ int fDontCallFreeInst :1;
+ int fInOnlyParam :1;
+ int fHasReturn :1;
+
+ unsigned long dwDestContext;
+ void __RPC_FAR * pvDestContext;
+
+ NDR_SCONTEXT * SavedContextHandles;
+
+ long ParamNumber;
+
+ struct IRpcChannelBuffer __RPC_FAR * pRpcChannelBuffer;
+
+ PARRAY_INFO pArrayInfo;
+
+ /*
+ * This is where the Beta2 stub message ends.
+ */
+
+ unsigned long __RPC_FAR * SizePtrCountArray;
+ unsigned long __RPC_FAR * SizePtrOffsetArray;
+ unsigned long __RPC_FAR * SizePtrLengthArray;
+
+ /*
+ * Interpreter argument queue. Used on server side only.
+ */
+ void __RPC_FAR * pArgQueue;
+
+ unsigned long dwStubPhase;
+
+ /*
+ * Pipe descriptor, defined for the 4.0 release.
+ */
+
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc;
+
+ unsigned long Reserved[4];
+
+ /*
+ * Fields up to this point present since the 3.50 release.
+ */
+
+ } MIDL_STUB_MESSAGE, __RPC_FAR *PMIDL_STUB_MESSAGE;
+
+#if !defined(__RPC_DOS__) && !defined(__RPC_WIN16__) && !defined(__RPC_MAC__)
+#include <poppack.h>
+#endif
+
+/*
+ * Generic handle bind/unbind routine pair.
+ */
+typedef void __RPC_FAR *
+ (__RPC_FAR __RPC_API * GENERIC_BINDING_ROUTINE)
+ (void __RPC_FAR *);
+typedef void
+ (__RPC_FAR __RPC_API * GENERIC_UNBIND_ROUTINE)
+ (void __RPC_FAR *, unsigned char __RPC_FAR *);
+
+typedef struct _GENERIC_BINDING_ROUTINE_PAIR
+ {
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_ROUTINE_PAIR, __RPC_FAR *PGENERIC_BINDING_ROUTINE_PAIR;
+
+typedef struct __GENERIC_BINDING_INFO
+ {
+ void __RPC_FAR * pObj;
+ unsigned int Size;
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+ } GENERIC_BINDING_INFO, __RPC_FAR *PGENERIC_BINDING_INFO;
+
+// typedef EXPR_EVAL - see above
+// typedefs for xmit_as
+
+#if (defined(_MSC_VER)) && !defined(MIDL_PASS)
+// a Microsoft C++ compiler
+#define NDR_SHAREABLE __inline
+#else
+#define NDR_SHAREABLE static
+#endif
+
+
+typedef void (__RPC_FAR __RPC_USER * XMIT_HELPER_ROUTINE)
+ ( PMIDL_STUB_MESSAGE );
+
+typedef struct _XMIT_ROUTINE_QUINTUPLE
+ {
+ XMIT_HELPER_ROUTINE pfnTranslateToXmit;
+ XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
+ XMIT_HELPER_ROUTINE pfnFreeXmit;
+ XMIT_HELPER_ROUTINE pfnFreeInst;
+ } XMIT_ROUTINE_QUINTUPLE, __RPC_FAR *PXMIT_ROUTINE_QUINTUPLE;
+
+typedef unsigned long
+(__RPC_FAR __RPC_USER * USER_MARSHAL_SIZING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned long,
+ void __RPC_FAR * );
+
+typedef unsigned char __RPC_FAR *
+(__RPC_FAR __RPC_USER * USER_MARSHAL_MARSHALLING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR * ,
+ void __RPC_FAR * );
+
+typedef unsigned char __RPC_FAR *
+(__RPC_FAR __RPC_USER * USER_MARSHAL_UNMARSHALLING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ unsigned char __RPC_FAR * ,
+ void __RPC_FAR * );
+
+typedef void (__RPC_FAR __RPC_USER * USER_MARSHAL_FREEING_ROUTINE)
+ (unsigned long __RPC_FAR *,
+ void __RPC_FAR * );
+
+typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE
+ {
+ USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
+ USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
+ USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
+ USER_MARSHAL_FREEING_ROUTINE pfnFree;
+ } USER_MARSHAL_ROUTINE_QUADRUPLE;
+
+typedef struct _USER_MARSHAL_CB
+{
+ unsigned long Flags;
+ PMIDL_STUB_MESSAGE pStubMsg;
+ PFORMAT_STRING pReserve;
+} USER_MARSHAL_CB;
+
+
+#define USER_CALL_CTXT_MASK(f) ((f) & 0xff)
+#define GET_USER_DATA_REP(f) ((f) >> 16)
+
+typedef struct _MALLOC_FREE_STRUCT
+ {
+ void __RPC_FAR * (__RPC_FAR __RPC_USER * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_USER * pfnFree)(void __RPC_FAR *);
+ } MALLOC_FREE_STRUCT;
+
+typedef struct _COMM_FAULT_OFFSETS
+ {
+ short CommOffset;
+ short FaultOffset;
+ } COMM_FAULT_OFFSETS;
+
+/*
+ * MIDL Stub Descriptor
+ */
+
+typedef struct _MIDL_STUB_DESC
+ {
+
+ void __RPC_FAR * RpcInterfaceInformation;
+
+ void __RPC_FAR * (__RPC_FAR __RPC_API * pfnAllocate)(size_t);
+ void (__RPC_FAR __RPC_API * pfnFree)(void __RPC_FAR *);
+
+ union
+ {
+ handle_t __RPC_FAR * pAutoHandle;
+ handle_t __RPC_FAR * pPrimitiveHandle;
+ PGENERIC_BINDING_INFO pGenericBindingInfo;
+ } IMPLICIT_HANDLE_INFO;
+
+ const NDR_RUNDOWN __RPC_FAR * apfnNdrRundownRoutines;
+ const GENERIC_BINDING_ROUTINE_PAIR __RPC_FAR * aGenericBindingRoutinePairs;
+
+ const EXPR_EVAL __RPC_FAR * apfnExprEval;
+
+ const XMIT_ROUTINE_QUINTUPLE __RPC_FAR * aXmitQuintuple;
+
+ const unsigned char __RPC_FAR * pFormatTypes;
+
+ int fCheckBounds;
+
+ /* Ndr library version. */
+ unsigned long Version;
+
+ /*
+ * Reserved for future use. (no reserves )
+ */
+
+ MALLOC_FREE_STRUCT __RPC_FAR * pMallocFreeStruct;
+
+ long MIDLVersion;
+
+ const COMM_FAULT_OFFSETS __RPC_FAR * CommFaultOffsets;
+
+ // New fields for version 3.0+
+
+ const USER_MARSHAL_ROUTINE_QUADRUPLE __RPC_FAR * aUserMarshalQuadruple;
+
+ long Reserved1;
+ long Reserved2;
+ long Reserved3;
+ long Reserved4;
+ long Reserved5;
+
+ } MIDL_STUB_DESC;
+
+typedef const MIDL_STUB_DESC __RPC_FAR * PMIDL_STUB_DESC;
+
+typedef void __RPC_FAR * PMIDL_XMIT_TYPE;
+
+/*
+ * MIDL Stub Format String. This is a const in the stub.
+ */
+#if !defined( RC_INVOKED )
+#pragma warning( disable:4200 )
+#endif
+typedef struct _MIDL_FORMAT_STRING
+ {
+ short Pad;
+ unsigned char Format[];
+ } MIDL_FORMAT_STRING;
+#if !defined( RC_INVOKED )
+#pragma warning( default:4200 )
+#endif
+
+/*
+ * Stub thunk used for some interpreted server stubs.
+ */
+typedef void (__RPC_FAR __RPC_API * STUB_THUNK)( PMIDL_STUB_MESSAGE );
+
+typedef long (__RPC_FAR __RPC_API * SERVER_ROUTINE)();
+
+/*
+ * Server Interpreter's information strucuture.
+ */
+typedef struct _MIDL_SERVER_INFO_
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ const SERVER_ROUTINE * DispatchTable;
+ PFORMAT_STRING ProcString;
+ const unsigned short * FmtStringOffset;
+ const STUB_THUNK * ThunkTable;
+ PFORMAT_STRING LocalFormatTypes;
+ PFORMAT_STRING LocalProcString;
+ const unsigned short * LocalFmtStringOffset;
+ } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
+
+/*
+ * Stubless object proxy information structure.
+ */
+typedef struct _MIDL_STUBLESS_PROXY_INFO
+ {
+ PMIDL_STUB_DESC pStubDesc;
+ PFORMAT_STRING ProcFormatString;
+ const unsigned short __RPC_FAR * FormatStringOffset;
+ PFORMAT_STRING LocalFormatTypes;
+ PFORMAT_STRING LocalProcString;
+ const unsigned short __RPC_FAR * LocalFmtStringOffset;
+ } MIDL_STUBLESS_PROXY_INFO;
+
+typedef MIDL_STUBLESS_PROXY_INFO __RPC_FAR * PMIDL_STUBLESS_PROXY_INFO;
+
+/*
+ * This is the return value from NdrClientCall.
+ */
+typedef union _CLIENT_CALL_RETURN
+ {
+ void __RPC_FAR * Pointer;
+ long Simple;
+ } CLIENT_CALL_RETURN;
+
+/*
+ * Full pointer data structures.
+ */
+
+typedef enum
+ {
+ XLAT_SERVER = 1,
+ XLAT_CLIENT
+ } XLAT_SIDE;
+
+/*
+ * Stores the translation for the conversion from a full pointer into it's
+ * corresponding ref id.
+ */
+typedef struct _FULL_PTR_TO_REFID_ELEMENT
+ {
+ struct _FULL_PTR_TO_REFID_ELEMENT __RPC_FAR * Next;
+
+ void __RPC_FAR * Pointer;
+ unsigned long RefId;
+ unsigned char State;
+ } FULL_PTR_TO_REFID_ELEMENT, __RPC_FAR *PFULL_PTR_TO_REFID_ELEMENT;
+
+/*
+ * Full pointer translation tables.
+ */
+typedef struct _FULL_PTR_XLAT_TABLES
+ {
+ /*
+ * Ref id to pointer translation information.
+ */
+ struct
+ {
+ void __RPC_FAR *__RPC_FAR * XlatTable;
+ unsigned char __RPC_FAR * StateTable;
+ unsigned long NumberOfEntries;
+ } RefIdToPointer;
+
+ /*
+ * Pointer to ref id translation information.
+ */
+ struct
+ {
+ PFULL_PTR_TO_REFID_ELEMENT __RPC_FAR * XlatTable;
+ unsigned long NumberOfBuckets;
+ unsigned long HashMask;
+ } PointerToRefId;
+
+ /*
+ * Next ref id to use.
+ */
+ unsigned long NextRefId;
+
+ /*
+ * Keep track of the translation size we're handling : server or client.
+ * This tells us when we have to do reverse translations when we insert
+ * new translations. On the server we must insert a pointer-to-refid
+ * translation whenever we insert a refid-to-pointer translation, and
+ * vica versa for the client.
+ */
+ XLAT_SIDE XlatSide;
+ } FULL_PTR_XLAT_TABLES, __RPC_FAR *PFULL_PTR_XLAT_TABLES;
+
+/***************************************************************************
+ ** New MIDL 2.0 Ndr routine templates
+ ***************************************************************************/
+
+/*
+ * Marshall routines
+ */
+
+void RPC_ENTRY
+NdrSimpleTypeMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned char FormatChar
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSimpleStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrHardStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexStructMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrFixedArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrVaryingArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexArrayMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStringMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonEncapsulatedUnionMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrByteCountPointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrXmitOrRepAsMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo interface pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrInterfacePointerMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Context handles */
+
+void RPC_ENTRY
+NdrClientContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT ContextHandle,
+ int fCheck
+ );
+
+void RPC_ENTRY
+NdrServerContextMarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_SCONTEXT ContextHandle,
+ NDR_RUNDOWN RundownRoutine
+ );
+
+/*
+ * Unmarshall routines
+ */
+
+void RPC_ENTRY
+NdrSimpleTypeUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned char FormatChar
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Structures */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSimpleStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrHardStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexStructUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Arrays */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrFixedArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrVaryingArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrComplexArrayUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Strings */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrConformantStringUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Unions */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNonEncapsulatedUnionUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Byte count pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrByteCountPointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Transmit as and represent as*/
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrXmitOrRepAsUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* User_marshal */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Cairo interface pointer */
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrInterfacePointerUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * __RPC_FAR * ppMemory,
+ PFORMAT_STRING pFormat,
+ unsigned char fMustAlloc
+ );
+
+/* Context handles */
+
+void RPC_ENTRY
+NdrClientContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_CCONTEXT __RPC_FAR * pContextHandle,
+ RPC_BINDING_HANDLE BindHandle
+ );
+
+NDR_SCONTEXT RPC_ENTRY
+NdrServerContextUnmarshall(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+/*
+ * Buffer sizing routines
+ */
+
+void RPC_ENTRY
+NdrPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+void RPC_ENTRY
+NdrSimpleStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrHardStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexStructBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+void RPC_ENTRY
+NdrFixedArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrVaryingArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexArrayBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+void RPC_ENTRY
+NdrConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonConformantStringBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+void RPC_ENTRY
+NdrEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonEncapsulatedUnionBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count pointer */
+
+void RPC_ENTRY
+NdrByteCountPointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+void RPC_ENTRY
+NdrXmitOrRepAsBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+void RPC_ENTRY
+NdrUserMarshalBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+void RPC_ENTRY
+NdrInterfacePointerBufferSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+// Context Handle size
+//
+void RPC_ENTRY
+NdrContextHandleSize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Memory sizing routines
+ */
+
+unsigned long RPC_ENTRY
+NdrPointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+unsigned long RPC_ENTRY
+NdrSimpleStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantVaryingStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrHardStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrComplexStructMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+unsigned long RPC_ENTRY
+NdrFixedArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrConformantVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrVaryingArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrComplexArrayMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Strings */
+
+unsigned long RPC_ENTRY
+NdrConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrNonConformantStringMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+unsigned long RPC_ENTRY
+NdrEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+unsigned long RPC_ENTRY
+NdrNonEncapsulatedUnionMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+unsigned long RPC_ENTRY
+NdrXmitOrRepAsMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+unsigned long RPC_ENTRY
+NdrUserMarshalMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+unsigned long RPC_ENTRY
+NdrInterfacePointerMemorySize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Freeing routines
+ */
+
+void RPC_ENTRY
+NdrPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Structures */
+
+void RPC_ENTRY
+NdrSimpleStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrHardStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexStructFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Arrays */
+
+void RPC_ENTRY
+NdrFixedArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrConformantVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrVaryingArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrComplexArrayFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Unions */
+
+void RPC_ENTRY
+NdrEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+void RPC_ENTRY
+NdrNonEncapsulatedUnionFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Byte count */
+
+void RPC_ENTRY
+NdrByteCountPointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Transmit as and represent as*/
+
+void RPC_ENTRY
+NdrXmitOrRepAsFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* User_marshal */
+
+void RPC_ENTRY
+NdrUserMarshalFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/* Cairo Interface pointer */
+
+void RPC_ENTRY
+NdrInterfacePointerFree(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pMemory,
+ PFORMAT_STRING pFormat
+ );
+
+/*
+ * Endian conversion routine.
+ */
+
+void RPC_ENTRY
+NdrConvert2(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ long NumberParams
+ );
+
+void RPC_ENTRY
+NdrConvert(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+#define USER_MARSHAL_FC_BYTE 1
+#define USER_MARSHAL_FC_CHAR 2
+#define USER_MARSHAL_FC_SMALL 3
+#define USER_MARSHAL_FC_USMALL 4
+#define USER_MARSHAL_FC_WCHAR 5
+#define USER_MARSHAL_FC_SHORT 6
+#define USER_MARSHAL_FC_USHORT 7
+#define USER_MARSHAL_FC_LONG 8
+#define USER_MARSHAL_FC_ULONG 9
+#define USER_MARSHAL_FC_FLOAT 10
+#define USER_MARSHAL_FC_HYPER 11
+#define USER_MARSHAL_FC_DOUBLE 12
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrUserMarshalSimpleTypeConvert(
+ unsigned long * pFlags,
+ unsigned char * pBuffer,
+ unsigned char FormatChar
+ );
+
+/*
+ * Auxilary routines
+ */
+
+void RPC_ENTRY
+NdrClientInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitializeNew(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+void RPC_ENTRY
+NdrServerInitializePartial(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned long RequestedBufferSize
+ );
+
+void RPC_ENTRY
+NdrClientInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ unsigned int ProcNum
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitialize(
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrServerInitializeUnmarshall (
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PRPC_MESSAGE pRpcMsg
+ );
+
+void RPC_ENTRY
+NdrServerInitializeMarshall (
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNsGetBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrGetPipeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long BufferLength,
+ RPC_BINDING_HANDLE Handle );
+
+void RPC_ENTRY
+NdrGetPartialBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR* pBufferEnd
+ );
+
+unsigned char __RPC_FAR * RPC_ENTRY
+NdrNsSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR * pBufferEnd,
+ RPC_BINDING_HANDLE __RPC_FAR * pAutoHandle
+ );
+
+void RPC_ENTRY
+NdrPipeSendReceive(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ NDR_PIPE_DESC * pPipeDesc
+ );
+
+void RPC_ENTRY
+NdrFreeBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+/*
+ * Pipe specific calls
+ */
+
+void RPC_ENTRY
+NdrPipesInitialize(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pParamDesc,
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc,
+ NDR_PIPE_MESSAGE __RPC_FAR * pPipeMsg,
+ char __RPC_FAR * pStackTop,
+ unsigned long NumberParams );
+
+void
+NdrMarkNextActivePipe(
+ NDR_PIPE_DESC __RPC_FAR * pPipeDesc,
+ unsigned int DirectionMask );
+
+void RPC_ENTRY
+NdrPipePull(
+ char __RPC_FAR * pState,
+ void __RPC_FAR * buf,
+ unsigned long esize,
+ unsigned long __RPC_FAR * ecount );
+
+void RPC_ENTRY
+NdrPipePush(
+ char __RPC_FAR * pState,
+ void __RPC_FAR * buf,
+ unsigned long ecount );
+
+void RPC_ENTRY
+NdrIsAppDoneWithPipes(
+ NDR_PIPE_DESC * pPipeDesc
+ );
+
+void RPC_ENTRY
+NdrPipesDone(
+ PMIDL_STUB_MESSAGE pStubMsg
+ );
+
+
+/*
+ * Interpeter calls.
+ */
+
+/* client */
+
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+NdrClientCall2(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+CLIENT_CALL_RETURN RPC_VAR_ENTRY
+NdrClientCall(
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ ...
+ );
+
+/* server */
+typedef enum {
+ STUB_UNMARSHAL,
+ STUB_CALL_SERVER,
+ STUB_MARSHAL,
+ STUB_CALL_SERVER_NO_HRESULT
+}STUB_PHASE;
+
+typedef enum {
+ PROXY_CALCSIZE,
+ PROXY_GETBUFFER,
+ PROXY_MARSHAL,
+ PROXY_SENDRECEIVE,
+ PROXY_UNMARSHAL
+}PROXY_PHASE;
+
+long RPC_ENTRY
+NdrStubCall2(
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long __RPC_FAR * pdwStubPhase
+ );
+
+void RPC_ENTRY
+NdrServerCall2(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+long RPC_ENTRY
+NdrStubCall (
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ unsigned long __RPC_FAR * pdwStubPhase
+ );
+
+void RPC_ENTRY
+NdrServerCall(
+ PRPC_MESSAGE pRpcMsg
+ );
+
+int RPC_ENTRY
+NdrServerUnmarshall(
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PRPC_MESSAGE pRpcMsg,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PMIDL_STUB_DESC pStubDescriptor,
+ PFORMAT_STRING pFormat,
+ void __RPC_FAR * pParamList
+ );
+
+void RPC_ENTRY
+NdrServerMarshall(
+ struct IRpcStubBuffer __RPC_FAR * pThis,
+ struct IRpcChannelBuffer __RPC_FAR * pChannel,
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat
+ );
+
+/* Comm and Fault status */
+
+RPC_STATUS RPC_ENTRY
+NdrMapCommAndFaultStatus(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned long __RPC_FAR * pCommStatus,
+ unsigned long __RPC_FAR * pFaultStatus,
+ RPC_STATUS Status
+ );
+
+/* Helper routines */
+
+int RPC_ENTRY
+NdrSH_UPDecision(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ RPC_BUFPTR pBuffer
+ );
+
+int RPC_ENTRY
+NdrSH_TLUPDecision(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem
+ );
+
+int RPC_ENTRY
+NdrSH_TLUPDecisionBuffer(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem
+ );
+
+int RPC_ENTRY
+NdrSH_IfAlloc(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+int RPC_ENTRY
+NdrSH_IfAllocRef(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+int RPC_ENTRY
+NdrSH_IfAllocSet(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_IfCopy(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_IfAllocCopy(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ unsigned char __RPC_FAR *__RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+unsigned long RPC_ENTRY
+NdrSH_Copy(
+ unsigned char __RPC_FAR * pStubMsg,
+ unsigned char __RPC_FAR * pPtrInMem,
+ unsigned long Count
+ );
+
+void RPC_ENTRY
+NdrSH_IfFree(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR * pPtr );
+
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_StringMarshall(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR * pMemory,
+ unsigned long Count,
+ int Size );
+
+RPC_BUFPTR RPC_ENTRY
+NdrSH_StringUnMarshall(
+ PMIDL_STUB_MESSAGE pMessage,
+ unsigned char __RPC_FAR *__RPC_FAR * pMemory,
+ int Size );
+
+/****************************************************************************
+ MIDL 2.0 memory package: rpc_ss_* rpc_sm_*
+ ****************************************************************************/
+
+typedef void __RPC_FAR * RPC_SS_THREAD_HANDLE;
+
+typedef void __RPC_FAR * __RPC_API
+RPC_CLIENT_ALLOC (
+ IN size_t Size
+ );
+
+typedef void __RPC_API
+RPC_CLIENT_FREE (
+ IN void __RPC_FAR * Ptr
+ );
+
+/*++
+ RpcSs* package
+--*/
+
+void __RPC_FAR * RPC_ENTRY
+RpcSsAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+RpcSsDisableAllocate (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsEnableAllocate (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+RPC_SS_THREAD_HANDLE RPC_ENTRY
+RpcSsGetThreadHandle (
+ void
+ );
+
+void RPC_ENTRY
+RpcSsSetClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
+ );
+
+void RPC_ENTRY
+RpcSsSetThreadHandle (
+ IN RPC_SS_THREAD_HANDLE Id
+ );
+
+void RPC_ENTRY
+RpcSsSwapClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
+ OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
+ OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
+ );
+
+/*++
+ RpcSm* package
+--*/
+
+void __RPC_FAR * RPC_ENTRY
+RpcSmAllocate (
+ IN size_t Size,
+ OUT RPC_STATUS __RPC_FAR * pStatus
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmClientFree (
+ IN void __RPC_FAR * pNodeToFree
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmDestroyClientContext (
+ IN void __RPC_FAR * __RPC_FAR * ContextHandle
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmDisableAllocate (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmEnableAllocate (
+ void
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+RPC_SS_THREAD_HANDLE RPC_ENTRY
+RpcSmGetThreadHandle (
+ OUT RPC_STATUS __RPC_FAR * pStatus
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSetClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSetThreadHandle (
+ IN RPC_SS_THREAD_HANDLE Id
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcSmSwapClientAllocFree (
+ IN RPC_CLIENT_ALLOC __RPC_FAR * ClientAlloc,
+ IN RPC_CLIENT_FREE __RPC_FAR * ClientFree,
+ OUT RPC_CLIENT_ALLOC __RPC_FAR * __RPC_FAR * OldClientAlloc,
+ OUT RPC_CLIENT_FREE __RPC_FAR * __RPC_FAR * OldClientFree
+ );
+
+/*++
+ Ndr stub entry points
+--*/
+
+void RPC_ENTRY
+NdrRpcSsEnableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void RPC_ENTRY
+NdrRpcSsDisableAllocate(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void RPC_ENTRY
+NdrRpcSmSetClientToOsf(
+ PMIDL_STUB_MESSAGE pMessage );
+
+void __RPC_FAR * RPC_ENTRY
+NdrRpcSmClientAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrRpcSmClientFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+void __RPC_FAR * RPC_ENTRY
+NdrRpcSsDefaultAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrRpcSsDefaultFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+/****************************************************************************
+ end of memory package: rpc_ss_* rpc_sm_*
+ ****************************************************************************/
+
+/****************************************************************************
+ * Full Pointer APIs
+ ****************************************************************************/
+
+PFULL_PTR_XLAT_TABLES RPC_ENTRY
+NdrFullPointerXlatInit(
+ unsigned long NumberOfPointers,
+ XLAT_SIDE XlatSide
+ );
+
+void RPC_ENTRY
+NdrFullPointerXlatFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables
+ );
+
+int RPC_ENTRY
+NdrFullPointerQueryPointer(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ void __RPC_FAR * pPointer,
+ unsigned char QueryType,
+ unsigned long __RPC_FAR * pRefId
+ );
+
+int RPC_ENTRY
+NdrFullPointerQueryRefId(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ unsigned long RefId,
+ unsigned char QueryType,
+ void __RPC_FAR *__RPC_FAR * ppPointer
+ );
+
+void RPC_ENTRY
+NdrFullPointerInsertRefId(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ unsigned long RefId,
+ void __RPC_FAR * pPointer
+ );
+
+int RPC_ENTRY
+NdrFullPointerFree(
+ PFULL_PTR_XLAT_TABLES pXlatTables,
+ void __RPC_FAR * Pointer
+ );
+
+void __RPC_FAR * RPC_ENTRY
+NdrAllocate(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ size_t Len
+ );
+
+void RPC_ENTRY
+NdrClearOutParameters(
+ PMIDL_STUB_MESSAGE pStubMsg,
+ PFORMAT_STRING pFormat,
+ void __RPC_FAR * ArgAddr
+ );
+
+
+/****************************************************************************
+ * Proxy APIs
+ ****************************************************************************/
+
+void __RPC_FAR * RPC_ENTRY
+NdrOleAllocate (
+ IN size_t Size
+ );
+
+void RPC_ENTRY
+NdrOleFree (
+ IN void __RPC_FAR * NodeToFree
+ );
+
+#ifdef CONST_VTABLE
+#define CONST_VTBL const
+#else
+#define CONST_VTBL
+#endif
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+// Reset the packing level for DOS, Windows and Mac.
+
+#if defined(__RPC_DOS__) || defined(__RPC_WIN16__) || defined(__RPC_MAC__)
+#pragma pack()
+#endif
+
+#endif /* __RPCNDR_H__ */
+
+
+
+
+
diff --git a/public/sdk/rpc16/win/inc/rpcnsi.h b/public/sdk/rpc16/win/inc/rpcnsi.h
new file mode 100644
index 000000000..362b5bdb4
--- /dev/null
+++ b/public/sdk/rpc16/win/inc/rpcnsi.h
@@ -0,0 +1,509 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcnsi.h
+
+Abstract:
+
+ This file contains the types and function definitions to use the
+ Name Service Independent APIs.
+
+--*/
+
+#ifndef __RPCNSI_H__
+#define __RPCNSI_H__
+
+typedef void __RPC_FAR * RPC_NS_HANDLE;
+
+#define RPC_C_NS_SYNTAX_DEFAULT 0
+#define RPC_C_NS_SYNTAX_DCE 3
+
+#define RPC_C_PROFILE_DEFAULT_ELT 0
+#define RPC_C_PROFILE_ALL_ELT 1
+#define RPC_C_PROFILE_MATCH_BY_IF 2
+#define RPC_C_PROFILE_MATCH_BY_MBR 3
+#define RPC_C_PROFILE_MATCH_BY_BOTH 4
+
+#define RPC_C_NS_DEFAULT_EXP_AGE -1
+
+/* Server APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingExportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN RPC_BINDING_VECTOR __RPC_FAR * BindingVec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingUnexportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingExportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN RPC_BINDING_VECTOR __RPC_FAR * BindingVec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingUnexportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+#endif
+
+/* Client APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned long BindingMaxCount OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ IN unsigned long BindingMaxCount OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupNext(
+ IN RPC_NS_HANDLE LookupContext,
+ OUT RPC_BINDING_VECTOR __RPC_FAR * __RPC_FAR * BindingVec
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingLookupDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * LookupContext
+ );
+
+/* Group APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupDeleteA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrAddA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrRemoveA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqBeginA(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqNextA(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupDeleteW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrAddW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrRemoveW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqBeginW(
+ IN unsigned long GroupNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * GroupName,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqNextW(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsGroupMbrInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Profile APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileDeleteA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltAddA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName,
+ IN unsigned long Priority,
+ IN unsigned char __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltRemoveA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqBeginA(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * ProfileName,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * MemberName OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqNextA(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * MemberName,
+ OUT unsigned long __RPC_FAR * Priority,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * Annotation
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileDeleteW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltAddW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName,
+ IN unsigned long Priority,
+ IN unsigned short __RPC_FAR * Annotation OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltRemoveW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqBeginW(
+ IN unsigned long ProfileNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * ProfileName,
+ IN unsigned long InquiryType,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN unsigned long MemberNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * MemberName OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqNextW(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT RPC_IF_ID __RPC_FAR * IfId,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * MemberName,
+ OUT unsigned long __RPC_FAR * Priority,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * Annotation
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsProfileEltInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Entry object APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqNext(
+ IN RPC_NS_HANDLE InquiryContext,
+ OUT UUID __RPC_FAR * ObjUuid
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryObjectInqDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * InquiryContext
+ );
+
+/* Management and MISC APIs */
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryExpandNameA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT unsigned char __RPC_FAR * __RPC_FAR * ExpandedName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtBindingUnexportA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryCreateA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryDeleteA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryInqIfIdsA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVec
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtHandleSetExpAge(
+ IN RPC_NS_HANDLE NsHandle,
+ IN unsigned long ExpirationAge
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtInqExpAge(
+ OUT unsigned long __RPC_FAR * ExpirationAge
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtSetExpAge(
+ IN unsigned long ExpirationAge
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsEntryExpandNameW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT unsigned short __RPC_FAR * __RPC_FAR * ExpandedName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtBindingUnexportW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ IN RPC_IF_ID __RPC_FAR * IfId OPTIONAL,
+ IN unsigned long VersOption,
+ IN UUID_VECTOR __RPC_FAR * ObjectUuidVec OPTIONAL
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryCreateW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryDeleteW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsMgmtEntryInqIfIdsW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName,
+ OUT RPC_IF_ID_VECTOR __RPC_FAR * __RPC_FAR * IfIdVec
+ );
+
+#endif
+
+/* Client API's implemented in wrappers. */
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportBeginA(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned char __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+#ifdef RPC_UNICODE_SUPPORTED
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportBeginW(
+ IN unsigned long EntryNameSyntax OPTIONAL,
+ IN unsigned short __RPC_FAR * EntryName OPTIONAL,
+ IN RPC_IF_HANDLE IfSpec OPTIONAL,
+ IN UUID __RPC_FAR * ObjUuid OPTIONAL,
+ OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+#endif
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportNext(
+ IN RPC_NS_HANDLE ImportContext,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingImportDone(
+ IN OUT RPC_NS_HANDLE __RPC_FAR * ImportContext
+ );
+
+RPC_STATUS RPC_ENTRY
+RpcNsBindingSelect(
+ IN OUT RPC_BINDING_VECTOR __RPC_FAR * BindingVec,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Binding
+ );
+
+#ifdef UNICODE
+
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginW
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginW
+#define RpcNsBindingExport RpcNsBindingExportW
+#define RpcNsBindingUnexport RpcNsBindingUnexportW
+#define RpcNsGroupDelete RpcNsGroupDeleteW
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddW
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveW
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginW
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextW
+#define RpcNsEntryExpandName RpcNsEntryExpandNameW
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginW
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportW
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateW
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteW
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsW
+#define RpcNsProfileDelete RpcNsProfileDeleteW
+#define RpcNsProfileEltAdd RpcNsProfileEltAddW
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveW
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginW
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextW
+
+#else
+
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginA
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginA
+#define RpcNsBindingExport RpcNsBindingExportA
+#define RpcNsBindingUnexport RpcNsBindingUnexportA
+#define RpcNsGroupDelete RpcNsGroupDeleteA
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddA
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveA
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginA
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextA
+#define RpcNsEntryExpandName RpcNsEntryExpandNameA
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginA
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportA
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateA
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteA
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsA
+#define RpcNsProfileDelete RpcNsProfileDeleteA
+#define RpcNsProfileEltAdd RpcNsProfileEltAddA
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveA
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginA
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextA
+
+#endif /* UNICODE */
+
+#endif /* __RPCNSI_H__ */
diff --git a/public/sdk/rpc16/win/inc/rpcnsip.h b/public/sdk/rpc16/win/inc/rpcnsip.h
new file mode 100644
index 000000000..0db0140b0
--- /dev/null
+++ b/public/sdk/rpc16/win/inc/rpcnsip.h
@@ -0,0 +1,72 @@
+/*++
+
+Copyright (c) 1992-1996 Microsoft Corporation
+
+Module Name:
+
+ rpcnsip.h
+
+Abstract:
+
+ This file contains the types and function definitions to use the
+ to implement the autohandle features of the runtime.
+
+--*/
+
+#ifndef __RPCNSIP_H__
+#define __RPCNSIP_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct
+{
+ RPC_NS_HANDLE LookupContext;
+ RPC_BINDING_HANDLE ProposedHandle;
+ RPC_BINDING_VECTOR * Bindings;
+
+} RPC_IMPORT_CONTEXT_P, * PRPC_IMPORT_CONTEXT_P;
+
+
+/* Stub Auto Binding routines. */
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsGetBuffer(
+ IN PRPC_MESSAGE Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcNsSendReceive(
+ IN PRPC_MESSAGE Message,
+ OUT RPC_BINDING_HANDLE __RPC_FAR * Handle
+ );
+
+void RPC_ENTRY
+I_RpcNsRaiseException(
+ IN PRPC_MESSAGE Message,
+ IN RPC_STATUS Status
+ );
+
+RPC_STATUS RPC_ENTRY
+I_RpcReBindBuffer(
+ IN PRPC_MESSAGE Message
+ );
+
+RPC_STATUS RPC_ENTRY
+I_NsServerBindSearch(
+ );
+
+RPC_STATUS RPC_ENTRY
+I_NsClientBindSearch(
+ );
+
+void RPC_ENTRY
+I_NsClientBindDone(
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __RPCNSIP_H__ */
diff --git a/public/sdk/rpc16/win/inc/rpcx86.h b/public/sdk/rpc16/win/inc/rpcx86.h
new file mode 100644
index 000000000..8f5088c93
--- /dev/null
+++ b/public/sdk/rpc16/win/inc/rpcx86.h
@@ -0,0 +1,74 @@
+/*********************************************************/
+/** Microsoft LAN Manager **/
+/** Copyright(c) Microsoft Corp., 1991 **/
+/** **/
+/** Exceptions package for C for DOS/WIN/OS2 **/
+/** **/
+/*********************************************************/
+
+#ifndef __RPCx86_H__
+#define __RPCx86_H__
+
+typedef struct _ExceptionBuff {
+ int registers[RPCXCWORD];
+ struct _ExceptionBuff __RPC_FAR *pExceptNext;
+
+} ExceptionBuff, __RPC_FAR *pExceptionBuff;
+
+int RPC_ENTRY RpcSetException(pExceptionBuff);
+void RPC_ENTRY RpcLeaveException(void);
+
+#define RpcTryExcept \
+ { \
+ int _exception_code; \
+ ExceptionBuff exception; \
+ \
+ _exception_code = RpcSetException(&exception); \
+ \
+ if (!_exception_code) \
+ {
+
+// trystmts
+
+#define RpcExcept(expr) \
+ RpcLeaveException(); \
+ } \
+ else \
+ { \
+ if (!(expr)) \
+ RpcRaiseException(_exception_code);
+
+// exceptstmts
+
+#define RpcEndExcept \
+ } \
+ }
+
+#define RpcTryFinally \
+ { \
+ int _abnormal_termination; \
+ ExceptionBuff exception; \
+ \
+ _abnormal_termination = RpcSetException(&exception); \
+ \
+ if (!_abnormal_termination) \
+ {
+
+// trystmts
+
+#define RpcFinally \
+ RpcLeaveException(); \
+ }
+
+// finallystmts
+
+#define RpcEndFinally \
+ if (_abnormal_termination) \
+ RpcRaiseException(_abnormal_termination); \
+ }
+
+#define RpcExceptionCode() _exception_code
+#define RpcAbnormalTermination() _abnormal_termination
+
+#endif // __RPCx86_H__
+ \ No newline at end of file
diff --git a/public/sdk/rpc16/win/lib/winmain.def b/public/sdk/rpc16/win/lib/winmain.def
new file mode 100644
index 000000000..d0adcb524
--- /dev/null
+++ b/public/sdk/rpc16/win/lib/winmain.def
@@ -0,0 +1,16 @@
+NAME WINMAIN
+
+DESCRIPTION 'Standard IO Emulator'
+
+EXETYPE WINDOWS
+
+STUB 'WINSTUB.EXE'
+
+CODE PRELOAD MOVEABLE
+DATA PRELOAD MOVEABLE MULTIPLE
+
+HEAPSIZE 128
+STACKSIZE 4096
+
+EXPORTS
+ STDIOWNDPROC
diff --git a/public/sdk/rpc16/win/lib/winmain.res b/public/sdk/rpc16/win/lib/winmain.res
new file mode 100644
index 000000000..8e68c85a1
--- /dev/null
+++ b/public/sdk/rpc16/win/lib/winmain.res
Binary files differ
diff --git a/public/tools/alphased.cmd b/public/tools/alphased.cmd
new file mode 100644
index 000000000..a48930373
--- /dev/null
+++ b/public/tools/alphased.cmd
@@ -0,0 +1,6 @@
+@if "%3" == "FULLSED" goto fullsed
+@sed -e "s/builtin_alignof/builtin_isfloat/;/extern int __builtin_va_start/d" %1 >%2
+@goto done
+:fullsed
+@sed -e "s/builtin_alignof/builtin_isfloat/;/extern int __builtin_va_start/d" -e "s/typedef unsigned int size_t ;/& void * memset(void *, int, size_t); void * memcpy(void *, const void *, size_t); int memcmp(const void *, const void *, size_t);/" %1 >%2
+:done
diff --git a/public/tools/bldtools.reb b/public/tools/bldtools.reb
new file mode 100644
index 000000000..ce206dd62
--- /dev/null
+++ b/public/tools/bldtools.reb
@@ -0,0 +1,8 @@
+C1.EXE
+C2.EXE
+C1XX.EXE
+CL.EXE
+ML.EXE
+ASAXP.EXE
+CLAXP.EXE
+PAS.EXE
diff --git a/public/tools/chkquota.cmd b/public/tools/chkquota.cmd
new file mode 100644
index 000000000..555e1670e
--- /dev/null
+++ b/public/tools/chkquota.cmd
@@ -0,0 +1,9 @@
+@setlocal
+@if "%1" == "" goto usage
+@set _quota=10
+@if NOT "%2" == "" set _quota=%2
+diruse /v /m /q:%_quota% /d /l /* %1
+@goto done
+:usage
+@echo Usage: CHKQUOTA RootPath [#MegaBytes]
+:done
diff --git a/public/tools/csrss.reb b/public/tools/csrss.reb
new file mode 100644
index 000000000..31cc64344
--- /dev/null
+++ b/public/tools/csrss.reb
@@ -0,0 +1,9 @@
+csrss.exe
+winsrv.dll
+basesrv.dll
+csrsrv.dll
+mmsndsrv.dll
+glsrv.dll
+vga.dll
+kbdus.dll
+ \ No newline at end of file
diff --git a/public/tools/doctor.rtf b/public/tools/doctor.rtf
new file mode 100644
index 000000000..82c955d33
--- /dev/null
+++ b/public/tools/doctor.rtf
@@ -0,0 +1,99 @@
+{\rtf1\pc {\info{\title %N}{\author %A}{\version %V}{\revtim\mo%M\dy%D\yr%Y}
+{\creatim\mo%M\dy%D\yr%Y}}\deff16{\fonttbl{\f0\fmodern pica;}
+{\f1\fmodern Courier;}{\f2\fmodern elite;}{\f3\fmodern prestige;}
+{\f4\fmodern lettergothic;}{\f5\fmodern gothicPS;}
+{\f6\fmodern cubicPS;}{\f7\fmodern lineprinter;}
+{\f8\fswiss Helvetica;}{\f9\fmodern avantegarde;}
+{\f10\fmodern spartan;}{\f11\fmodern metro;}
+{\f12\fmodern presentation;}{\f13\fmodern APL;}{\f14\fmodern OCRA;}
+{\f15\fmodern OCRB;}{\f16\froman boldPS;}{\f17\froman emperorPS;}
+{\f18\froman madaleine;}{\f19\froman zapf humanist;}
+{\f20\froman classic;}{\f21\froman roman f;}{\f22\froman roman g;}
+{\f23\froman roman h;}{\f24\froman timesroman;}{\f25\froman century;}
+{\f26\froman palantino;}{\f27\froman souvenir;}{\f28\froman garamond;}
+{\f29\froman caledonia;}{\f30\froman bodini;}{\f31\froman university;}
+{\f32\fscript script;}{\f33\fscript scriptPS;}{\f34\fscript script c;}
+{\f35\fscript script d;}{\f36\fscript commercial script;}
+{\f37\fscript park avenue;}{\f38\fscript coronet;}
+{\f39\fscript script h;}{\f40\fscript greek;}{\f41\froman kana;}
+{\f42\froman hebrew;}{\f43\froman roman s;}{\f44\froman russian;}
+{\f45\froman roman u;}{\f46\froman roman v;}{\f47\froman roman w;}
+{\f48\fdecor narrator;}{\f49\fdecor emphasis;}
+{\f50\fdecor zapf chancery;}{\f51\fdecor decor d;}
+{\f52\fdecor old english;}{\f53\fdecor decor f;}{\f54\fdecor decor g;}
+{\f55\fdecor cooper black;}{\f56\ftech Symbol;}{\f57\ftech linedraw;}
+{\f58\ftech math7;}{\f59\ftech math8;}{\f60\ftech bar3of9;}
+{\f61\ftech EAN;}{\f62\ftech pcline;}{\f63\ftech tech h;}}
+{\stylesheet {\*\cs1\b\f16 CT;}{\*\cs2\b\f16 CP;}{\*\cs3\b\f16 CD;}
+{\*\cs4\i\f16 CI;}{\*\cs5\f16\ul CR;}{\*\cs6\f16\fs16\up12 FR;}{\*\s30
+\sl-240\sa240 \f16 Normal;}{\*\s31
+\li720\fi-720\sl-240\sa240\tqr\tx432\tx720 \f16 L1;}{\*\s32
+\li1152\fi-1152\sl-240\sa240\tqr\tx864\tx1152 \f16 L2;}{\*\s33
+\li1152\sl-240\sa240 \b\f16\ul P3;}{\*\s34\li1728\fi-576\sl-240\sa240
+\f16 P4;}{\*\s35\li432\sl-240\sa240 \f16 S1;}{\*\s36
+\li1152\sl-240\sa240 \f16 S2;}{\*\s37\li1728\sl-240\sa240 \b\f16\ul
+P5;}{\*\s38\li2304\fi-576\sl-240\sa240 \f16 P6;}{\*\s40
+\li2304\sl-240\sa240 \b\f16\ul P7;}{\*\s41\li2880\fi-576\sl-240\sa240
+\f16 P8;}{\*\s42\ri576\li576\sl-240\sa240 \i\f16 N1;}{\*\s43
+\ri576\li1296\sl-240\sa240 \i\f16 N2;}{\*\s44\li1152\fi-576\sl-240
+\f16 NL;}{\*\s45\li1584\fi-1584\sl-240\sa240\tqr\tx1296\tx1584 \f16
+L3;}{\*\s46\li2016\fi-2016\sl-240\sa240\tqr\tx1728\tx2016 \f16 L4;}
+{\*\s47\li1440\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \f16 T5;}{\*\s48
+\keepn\sl-240\sa240 \f16 PK;}{\*\s49\keepn\sl-240\sa240 \f16\ul PU;}
+{\*\s50\sl0 \v\f16 PH;}{\*\s51\fi720\sl-240 \f16\fs16 FN;}{\*\s52
+\keep\keepn\sl-240\tx576\tx1152\tx1728 \f16 PP;}{\*\s53
+\li1152\fi-576\sl-240\sa240 \f16 PL;}{\*\s54\li1152\sl-240\sa240 \f16
+P2;}{\*\s55\li576\sl-240\sa240 \f16 PV;}{\*\s59
+\li1728\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \f16 T6;}{\*\s62
+\sl-240\tqr\tx9936 \b\f16 RH;}{\*\s63\qc\sl-240 \b\f16 RF;}{\*\s64
+\sl-240\sa240 \b\f16 TN;}{\*\s65\sl-240\sa240 \i\f16 TA;}{\*\s66
+\sl-240 \i\f16 TR;}{\*\s72\li576\fi-576\sl-240\sa240 \f16 PT;}{\*\s73
+\keepn\li576\sl-240\tx1152\tx1728\tx2304\tx2880\tx3456\tx4032\tx4608\tx5184\tx5760\tx6336\tx6912
+\f7\fs17 PC;}{\*\s74\keep\keepn\sl-240 \f1 PD;}{\*\s88
+\keepn\sl-240\sa240 \b\f16 heading 1;}{\*\s89\keepn\sl-240\sa240
+\b\f16 heading 2;}{\*\s90\keepn\sl-240\sa240 \b\f16 heading 3;}{\*\s91
+\keepn\sl-240\sa240 \b\f16 heading 4;}{\*\s92\keepn\sl-240\sa240
+\b\f16 heading 5;}{\*\s93\keepn\sl-240\sa240 \b\f16 heading 6;}{\*\s99
+\li288\fi-288\sl-240\sb240\tldot\tx8064\tqr\tx8640 \f16 toc 1;}
+{\*\s100\li576\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \f16 toc 2;}
+{\*\s101\li864\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \f16 toc 3;}
+{\*\s102\li1152\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \f16 toc 4;}
+{\*\ds105\linex576\endnhere\pgnrestart standard division;}{\*\ds106
+\pgnlcrm\linex576\endnhere\pgnrestart DT;}}
+\margl1152\margr1152\margt1728\margb1728\ftnbj\ftnrestart\widowctrl\pgnstart1
+\sectd \ds105\linex576\endnhere\pgnrestart {\footer \pard
+\s63\qc\sl-240 \plain \b\f16 Microsoft Corporation Company Confidential\par
+}\pard \sl0\pvmrg\phcol\dxfrtext240\posxl\posyc\absw0 \plain \par
+\plain \b\f16 Portable Systems Group\plain \line \line
+\plain \b\f16 %N\plain \line \line
+\plain \b\f16 Author:\plain \i\f16 %A\plain \line \line
+\plain \i\f16 Revision %R\plain \line
+\plain \i\f16 Original Draft %C\plain \par
+\pard \plain \f16 \sect \sectd
+\ds106\pgnlcrm\linex576\endnhere\pgnrestart {\header \pard
+\s62\sl-240\tqr\tx9936 \plain \b\f16 %N\tab \chpgn \par
+}{\footer \pard \s63\qc\sl-240 \plain \b\f16 Microsoft Corporation Company Confidential\par
+}\pard \s30\sl-240\sa240 \plain \v\f16 .B\plain \v\f16 egin Table C\plain \v\f16 .\plain \v\f16 \par
+\pard \s99\li288\fi-288\sl-240\sb240\tldot\tx8064\tqr\tx8640
+\plain \f16 1. Lists\tab \tab 1\par
+\pard \s100\li576\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \plain \f16
+1.1 Bulleted Lists\tab \tab 1\par
+1.2 Simple Lists\tab \tab 1\par
+1.3 Terms List\tab \tab 1\par
+1.4 Routines List\tab \tab 2\par
+\pard \s99\li288\fi-288\sl-240\sb240\tldot\tx8064\tqr\tx8640
+\plain \f16 2. Notes\tab \tab 2\par
+3. Code Examples\tab \tab 2\par
+4. Function Prototypes\tab \tab 2\par
+\pard \s100\li576\fi-288\sl-240\tldot\tx8064\tqr\tx8640 \plain
+\f16 4.1 Typedefs Treated as Prototypes\tab \tab 3\par
+4.2 Parameters With Special Values\tab \tab 3\par
+\pard \s99\li288\fi-288\sl-240\sb240\tldot\tx8064\tqr\tx8640
+\plain \f16 5. Diagrams\tab \tab 6\par
+6. Character Formatting\tab \tab 6\par
+\pard \s30\sl-240\sa240 \plain \v\f16 \plain \v\f16 .E\plain
+\v\f16 nd Table C\plain \v\f16 .\plain \v\f16 \par
+\plain \f16 \sect \sectd \ds105\linex576\endnhere\pgnrestart
+{\header \pard \s62\sl-240\tqr\tx9936 \plain \b\f16 %N\tab \chpgn \par
+}{\footer \pard \s63\qc\sl-240 \plain \b\f16 Microsoft Corporation Company Confidential\par
+}%T}
diff --git a/public/tools/findadd.cmd b/public/tools/findadd.cmd
new file mode 100644
index 000000000..2adf0cde5
--- /dev/null
+++ b/public/tools/findadd.cmd
@@ -0,0 +1,2 @@
+rem findadd - find files which are not marked read only, in children of current dir
+(walk /d . ls -lq %%s) | qgrep -yv "build. .obj .lib .dll .exe .map" | qgrep -vB -e "d--" | qgrep -v -e "--r"
diff --git a/public/tools/fixdoc.cmd b/public/tools/fixdoc.cmd
new file mode 100644
index 000000000..3dfc1e4a8
--- /dev/null
+++ b/public/tools/fixdoc.cmd
@@ -0,0 +1,19 @@
+@rem
+@rem If no drive has been specified for the NT development tree, assume
+@rem C:. To override this, place a SET _NTDRIVE=X: in your CONFIG.SYS
+@rem
+@if "%_NTDRIVE%" == "" set _NTDRIVE=C:
+@if NOT "%1" == "" goto doit
+@echo Usage FIXDOC docname
+goto done
+:doit
+@if EXIST %_NTDRIVE%\nt\public\tools\doctor.gly goto prtxt
+ech PUBLIC\TOOLS directory out of sync.
+@goto done
+:prtxt
+@if EXIST .\normal.gly mv normal.gly normal.sav
+@copy %_NTDRIVE%\nt\public\tools\doctor.gly normal.gly
+@word %1.doc
+@del normal.gly
+@if EXIST .\normal.sav mv normal.sav normal.gly
+:done
diff --git a/public/tools/inout.cmd b/public/tools/inout.cmd
new file mode 100644
index 000000000..bb8a6a223
--- /dev/null
+++ b/public/tools/inout.cmd
@@ -0,0 +1,2 @@
+@if "%_echo%"=="" echo off
+in -u %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/public/tools/kbd.reb b/public/tools/kbd.reb
new file mode 100644
index 000000000..2da5334bb
--- /dev/null
+++ b/public/tools/kbd.reb
@@ -0,0 +1,33 @@
+KBDBE.DLL
+KBDBR.DLL
+KBDCA.DLL
+KBDCZ.DLL
+KBDDA.DLL
+KBDDV.DLL
+KBDES.DLL
+KBDFC.DLL
+KBDFI.DLL
+KBDFR.DLL
+KBDGR.DLL
+KBDHE.DLL
+KBDHU.DLL
+KBDIC.DLL
+KBDIT.DLL
+KBDLA.DLL
+KBDNE.DLL
+KBDNO.DLL
+KBDPL1.DLL
+KBDPO.DLL
+KBDRU.DLL
+KBDSF.DLL
+KBDSG.DLL
+KBDSL.DLL
+KBDSP.DLL
+KBDSW.DLL
+KBDTUF.DLL
+KBDTUQ.DLL
+KBDUK.DLL
+KBDUSL.DLL
+KBDUSR.DLL
+KBDUSX.DLL
+ \ No newline at end of file
diff --git a/public/tools/known.reb b/public/tools/known.reb
new file mode 100644
index 000000000..45bd546a9
--- /dev/null
+++ b/public/tools/known.reb
@@ -0,0 +1,33 @@
+winmm.dll
+mmdrv.dll
+ntdll.dll
+kernel32.dll
+gdi32.dll
+user32.dll
+rpcrt4.dll
+rpcltc1.dll
+rpclts1.dll
+advapi32.dll
+comdlg32.dll
+shell32.dll
+comctl32.dll
+winspool.drv
+ole32.dll
+oleaut32.dll
+version.dll
+security.dll
+printui.dll
+ntshrui.dll
+msvcrt.dll
+msvcrt40.dll
+lz32.dll
+linkinfo.dll
+olethk32.dll
+olecli32.dll
+olecnv32.dll
+oledlg.dll
+olesvr32.dll
+syncui.dll
+shcompui.dll
+url.dll
+shareui.dll
diff --git a/public/tools/mpntstat.cmd b/public/tools/mpntstat.cmd
new file mode 100644
index 000000000..481868632
--- /dev/null
+++ b/public/tools/mpntstat.cmd
@@ -0,0 +1,68 @@
+@echo off
+setlocal ENABLEEXTENSIONS
+if "%1" == "_DOPROJECT" goto doproject
+if "%1" == "_DOWAIT" goto dowait
+cd /d %_NTDRIVE%\nt
+set _NTSTATCMD1=
+erase ntstat.log
+erase ntstatsr.cmd
+if NOT "%1" == "_Y" goto notlocal
+erase ntstatsr1.cmd
+set _NTSTATCMD1=\nt\ntstat1sr.cmd
+:notlocal
+echo Launching separate STATUS command for each project
+echo Use 'CMDEVENT TerminateSLM' to abort the run.
+start /B /MIN cmdevent -w TerminateSLM
+start /B /MIN cmd /c %0 _DOWAIT %1
+sleep 5
+for %%i in (%NTPROJECTS%) do start "MP:%%i" /MIN cmd /c %0 _DOPROJECT %%i
+cmdevent -a MPNTSTAT TerminateSLM
+if ERRORLEVEL 2 goto slmstopped
+echo Collecting output files
+for %%i in (%NTPROJECTS%) do call :collectproject %%i
+if NOT "%_NTSTATCMD1%" == "" (
+ cd \nt
+ erase ntstatsr1.tmp 2>nul
+ ren ntstatsr1.cmd ntstatsr1.tmp
+ qgrep -v -y -L -f \nt\public\tools\ntclnsr1.txt \nt\ntstatsr1.tmp >\nt\ntstatsr1.cmd
+)
+copy \nt\ntstat.log \nt\pickup.cmd
+if "%1" == "" pause
+qgrep -e "*update" -e "*conflict" -e "*verify" -e "*merge" \nt\pickup.cmd | more
+if EXIST \nt\private\timeit.dat timeit -f \nt\private\timeit.dat -k NTSTAT_ALL_PARALLEL%1 -t -d
+cmdevent TerminateSLM >nul 2>nul
+goto done
+:slmstopped
+echo SLM Aborted. Output files left as is.
+goto done
+:dowait
+if EXIST \nt\private\timeit.dat timeit -f \nt\private\timeit.dat -k NTSTAT_ALL_PARALLEL%2 cmdevent -w -v %NTPROJECTS%
+if NOT EXIST \nt\private\timeit.dat cmdevent -w -v %NTPROJECTS%
+@echo off
+cmdevent MPNTSTAT >nul 2>nul
+goto done
+:collectproject
+if EXIST \nt\%1.log (
+ type \nt\%1.log >>\nt\ntstat.log
+ erase \nt\%1.log
+)
+if EXIST \nt\%1sr.cmd (
+ type \nt\%1sr.cmd >>\nt\ntstatsr.cmd
+ erase \nt\%1sr.cmd
+)
+if EXIST \nt\%1sr1.cmd (
+ type \nt\%1sr1.cmd >>\nt\ntstatsr1.cmd
+ erase \nt\%1sr1.cmd
+)
+goto :EOF
+:doproject
+set _NTSTATLOG=\nt\%2.log
+set _NTSTATCMD=\nt\%2sr.cmd
+if NOT "%_NTSTATCMD1%" == "" set _NTSTATCMD1=\nt\%2sr1.cmd
+erase %_NTSTATLOG% 2>nul
+erase %_NTSTATCMD% 2>nul
+if NOT "%_NTSTATCMD1%" == "" erase %_NTSTATCMD1% 2>nul
+call ntslmop.cmd status %2
+cmdevent %2
+:done
+endlocal
diff --git a/public/tools/myenlist.cmd b/public/tools/myenlist.cmd
new file mode 100644
index 000000000..67e284a45
--- /dev/null
+++ b/public/tools/myenlist.cmd
@@ -0,0 +1,45 @@
+@rem Script to enlist in all projects contained in %NTPROJECTS%.
+@rem Assumes tc.exe is in %Path%
+@rem __________________________________________________________________________
+
+@if "%_echo%"=="" echo off
+if not "%Verbose%"=="" echo on
+
+setlocal
+
+if "%1" == "" goto SetProjects
+for %%a in (./ .- .) do if ".%1." == "%%a?." goto Usage
+
+%_ntdrive%
+path=%path%;%_ntdrive%\nt\public\tools
+
+:TopOfProjectLoop
+ if "%1" == "" goto BreakOutOfProjectLoop
+ call projects %1 2>nul
+ if "%project%" == "" echo Don't know %1 project & goto BottomOfProjectLoop
+ tc junk %proj_path%
+ cd %proj_path%
+ if exist slm.ini echo Already enlisted in %1 project & goto BottomOfProjectLoop
+ enlist -fgs %slm_root% -p %project%
+ ssync -rfu
+
+:BottomOfProjectLoop
+ echo.
+ shift
+ goto TopOfProjectLoop
+
+:BreakOutOfProjectLoop
+
+goto End
+:SetProjects
+
+if not "%NTPROJECTS%" == "" call %0 %NTPROJECTS%
+
+goto End
+:Usage
+
+echo Usage: %0
+
+:End
+
+endlocal
diff --git a/public/tools/net.reb b/public/tools/net.reb
new file mode 100644
index 000000000..b8d184a67
--- /dev/null
+++ b/public/tools/net.reb
@@ -0,0 +1,19 @@
+netui0.dll
+netui1.dll
+netrap.dll
+netapi32.dll
+ntlanman.dll
+samlib.dll
+netui2.dll
+acledit.dll
+netmsg.dll
+mpr.dll
+mprui.dll
+ntlanui.dll
+wsock32.dll
+ws2_32.dll
+ws2help.dll
+wshtcpip.dll
+mswsock.dll
+msafd.dll
+crtdll.dll
diff --git a/public/tools/never.reb b/public/tools/never.reb
new file mode 100644
index 000000000..119911b10
--- /dev/null
+++ b/public/tools/never.reb
@@ -0,0 +1,5 @@
+odbcjt32.dll
+rsabase.dll
+msjt3032.dll
+msvcirt.dll
+msvcrtp.dll
diff --git a/public/tools/ntadd.cmd b/public/tools/ntadd.cmd
new file mode 100644
index 000000000..b9586fab1
--- /dev/null
+++ b/public/tools/ntadd.cmd
@@ -0,0 +1,13 @@
+@if "%_echo%"=="" echo off
+setlocal
+set _NTADDDEL=%_NTDRIVE%\nt\ntadddel.cmd
+:loop
+if "%1" == "" goto done
+echo Placing ADDFILE %1 command in %_NTADDDEL%
+ech "cd " >>%_NTADDDEL%
+cd >>%_NTADDDEL%
+ech "addfile -c CommentHere %1" ; >>%_NTADDDEL%
+shift
+goto loop
+:done
+endlocal
diff --git a/public/tools/ntclnsr1.txt b/public/tools/ntclnsr1.txt
new file mode 100644
index 000000000..5bde950c9
--- /dev/null
+++ b/public/tools/ntclnsr1.txt
@@ -0,0 +1,84 @@
+\private\dcomidl
+\private\exchange
+\private\eventlog
+\private\newsam
+\private\mvdm
+\private\rpc
+\private\types
+\private\types2
+\private\utils\ntlib
+\private\windbg
+\net\inc
+\net\routing
+\net\sockets
+\net\svcdlls
+\net\ui
+\oak\inc
+\os2\public
+\ole32
+\programs\bin
+\rltools\common
+\sdk\inc
+\sdk\lib\i386
+\sdk\lib\cairo\i386
+\tapi
+\vctools
+\windows\inc
+\windows\media
+\windows\netdde\src
+\windows\setup\bom
+\windows\setup\inf
+\windows\setup\legacy
+\windows\shell\accesory\hypertrm
+\windows\shell\games\sol
+nlstxt.mc
+gdi32p.def
+gdii386.inc
+winerrp.h
+winerrp.mc
+pnp.h
+svcctl.h
+saclmsg.rc
+dispcb.c
+callcf.c
+callback.h
+user32p.def
+wowasm.asm
+wowrtl.asm
+winspl.h
+wintools.h
+msg.h
+msg.mc
+rtmsg.
+.pp
+.cod
+rpc.h
+svc.h
+_c.c
+_c.h
+_s.c
+_s.h
+_cli.c
+_cli.h
+_srv.c
+_srv.h
+.out
+.old
+.new
+.hiv
+.bin
+.log
+.inf
+.lib
+.exp
+.res
+.obj
+.exe
+.dll
+.sys
+.cpl
+.drv
+.tsp
+.xtr
+.gid
+.hlp
diff --git a/public/tools/ntdefect.cmd b/public/tools/ntdefect.cmd
new file mode 100644
index 000000000..bac2767e8
--- /dev/null
+++ b/public/tools/ntdefect.cmd
@@ -0,0 +1,16 @@
+@if "%_echo%"=="" echo off
+setlocal
+if NOT "%1" == "" goto doprojects
+call %0 %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:doprojects
+set _ntgetargs_=
+:loop
+if "%1" == "" goto loopexit
+set _ntgetargs_=%_ntgetargs_% %1
+shift
+goto loop
+:loopexit
+call ntslmop defect %_ntgetargs_%
+:done
+endlocal
diff --git a/public/tools/ntdel.cmd b/public/tools/ntdel.cmd
new file mode 100644
index 000000000..c62a8ed3c
--- /dev/null
+++ b/public/tools/ntdel.cmd
@@ -0,0 +1,15 @@
+@if "%_echo%"=="" echo off
+setlocal
+set _NTADDDEL=%_NTDRIVE%\nt\ntadddel.cmd
+:loop
+if "%1" == "" goto done
+echo Placing DELFILE %1 command in %_NTADDDEL%
+ech "cd " >>%_NTADDDEL%
+cd >>%_NTADDDEL%
+ech "delfile -c CommentHere %1" ; >>%_NTADDDEL%
+chmode -r %1
+del %1
+shift
+goto loop
+:done
+endlocal
diff --git a/public/tools/ntenv.cmd b/public/tools/ntenv.cmd
new file mode 100644
index 000000000..362b55ecf
--- /dev/null
+++ b/public/tools/ntenv.cmd
@@ -0,0 +1,50 @@
+@rem
+@rem If no drive has been specified for the NT development tree, assume
+@rem C:. To override this, place a SET _NTDRIVE=X: in your CONFIG.SYS
+@rem
+if "%_NTDRIVE%" == "" set _NTDRIVE=W:
+@rem
+@rem If no directory has been specified for the NT development tree, assume
+@rem \nt. To override this, place a SET _NTROOT=\xt in your CONFIG.SYS
+@rem
+if "%_NTROOT%" == "" set _NTROOT=\NT
+set _NTBINDIR=%_NTDRIVE%%_NTROOT%
+@rem
+@rem This command file assumes that the developer has already defined
+@rem the USERNAME environment variable to match their email name (e.g.
+@rem stevewo).
+@rem
+@rem We want to remember some environment variables so we can restore later
+@rem if necessary (see NTUSER.CMD)
+@rem
+set _NTUSER=%USERNAME%
+@rem
+@rem Assume that the developer has already included \NT\PUBLIC\TOOLS
+@rem in their path. If not, then it is doubtful they got this far.
+@rem
+path %PATH%;%_NTBINDIR%\PUBLIC\OAK\BIN
+@rem
+@rem No hidden semantics of where to get libraries and include files. All
+@rem information is included in the command lines that invoke the compilers
+@rem and linkers.
+@rem
+set LIB=
+set INCLUDE=
+@rem
+@rem Setup default build parameters.
+@rem
+set BUILD_DEFAULT=ntoskrnl ntkrnlmp daytona -e -i -nmake -i
+set BUILD_DEFAULT_TARGETS=-386
+set BUILD_MAKE_PROGRAM=nmake.exe
+@rem
+@rem Setup default nmake parameters.
+@rem
+if "%NTMAKEENV%" == "" set NTMAKEENV=%_NTBINDIR%\PUBLIC\OAK\BIN
+@rem
+@rem Setup the user specific environment information
+@rem
+call %_NTBINDIR%\PUBLIC\TOOLS\ntuser.cmd
+@rem
+@rem Optional parameters to this script are command line to execute
+@rem
+%1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/public/tools/ntlock.cmd b/public/tools/ntlock.cmd
new file mode 100644
index 000000000..54e1dcac4
--- /dev/null
+++ b/public/tools/ntlock.cmd
@@ -0,0 +1,8 @@
+@if "%_echo%"=="" echo off
+setlocal
+set _comment=%1
+if '%_comment%' == '' set _comment="NTLOCK command script"
+%_NTDRIVE%
+cd \nt\public
+cookie -w -c %_comment%
+endlocal
diff --git a/public/tools/ntlocked.cmd b/public/tools/ntlocked.cmd
new file mode 100644
index 000000000..06995dc92
--- /dev/null
+++ b/public/tools/ntlocked.cmd
@@ -0,0 +1,6 @@
+@if "%_echo%"=="" echo off
+setlocal
+%_NTDRIVE%
+cd \nt\public
+cookie
+endlocal
diff --git a/public/tools/ntlog.cmd b/public/tools/ntlog.cmd
new file mode 100644
index 000000000..dcbe27ab4
--- /dev/null
+++ b/public/tools/ntlog.cmd
@@ -0,0 +1,27 @@
+@if "%_echo%"=="" echo off
+setlocal
+if "%_NTLOGLOG%" == "" set _NTLOGLOG=\nt\ntlog.log
+if "%1" == "all" goto logall
+if NOT "%1" == "" goto doprojects
+if "%NTPROJECTS%" == "" goto noprojs
+erase %_NTLOGLOG% 2>nul
+call %0 %NTPROJECTS%
+goto done
+:logall
+erase %_NTLOGLOG% 2>nul
+call %0 %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:noprojs
+echo Must define NTPROJECTS environment variable to use this command without arguments
+goto done
+:doprojects
+set _ntgetargs_=
+:loop
+if "%1" == "" goto loopexit
+set _ntgetargs_=%_ntgetargs_% %1
+shift
+goto loop
+:loopexit
+call ntslmop log %_ntgetargs_%
+:done
+endlocal
diff --git a/public/tools/ntnewver.cmd b/public/tools/ntnewver.cmd
new file mode 100644
index 000000000..4e94442ec
--- /dev/null
+++ b/public/tools/ntnewver.cmd
@@ -0,0 +1,12 @@
+cd \nt\private\ntos\init
+build -zM 2
+cd \nt\private\sdktools\imagehlp
+build -zM 4
+cd \nt\private\sdktools\kdexts
+build -zM 4
+cd \nt\private\sdktools\ntsd
+build -zM 4
+
+rem --- Rebuild userkdx.dll every build (ianja)
+cd \nt\private\ntos\w32\ntuser\kdexts\kd
+build -zM 3
diff --git a/public/tools/ntoskrnl.reb b/public/tools/ntoskrnl.reb
new file mode 100644
index 000000000..cf373768f
--- /dev/null
+++ b/public/tools/ntoskrnl.reb
@@ -0,0 +1,3 @@
+ntoskrnl.exe
+ntkrnlmp.exe
+ \ No newline at end of file
diff --git a/public/tools/ntprojs.cmd b/public/tools/ntprojs.cmd
new file mode 100644
index 000000000..b395c3704
--- /dev/null
+++ b/public/tools/ntprojs.cmd
@@ -0,0 +1,26 @@
+@if "%_echo%"=="" echo off
+setlocal
+if NOT "%1" == "" goto testproj
+if "%NTPROJECTS%" == "" goto noprojs
+call ntprojs %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:noprojs
+echo Must define NTPROJECTS environment variable to use this command without arguments
+goto done
+:testproj
+if "%1" == "" goto done
+Ech "Testing %1 project name -"
+call projects.cmd %1
+shift
+if "%proj_path%"=="" goto badproject
+if NOT EXIST %proj_path%\slm.ini goto notenlisted
+ech (enlisted) ;
+goto testproj
+:notenlisted
+ech (not enlisted) ;
+goto testproj
+:badproject
+ech (bad project name) ;
+goto testproj
+:done
+endlocal
diff --git a/public/tools/ntrebase.cmd b/public/tools/ntrebase.cmd
new file mode 100644
index 000000000..7da3fa33a
--- /dev/null
+++ b/public/tools/ntrebase.cmd
@@ -0,0 +1,225 @@
+setlocal
+
+if "%1" == "NoTools" set NOTOOLS=1& shift
+set _REBASE_FLAGS=%_NTREBASE_FLAGS%
+if not "%_REBASE_FLAGS%" == "" echo Using flags from _NTREBASE_FLAGS == "%_NTREBASE_FLAGS%"
+if not "%1" == "" set _REBASE_FLAGS=%1 %2 %3 %4 %5 %6 %7 %8 %9
+set _REBASE_FLAGS=-v %_REBASE_FLAGS%
+
+set _QFE_BUILD=1
+set REBASELANG=usa
+
+@if not "%_QFE_BUILD%"=="1" goto CHK1
+@if not "%REBASELANG%"=="" goto CHK1
+@echo REBASELANG not defined.
+@goto EXIT
+
+:CHK1
+@if "%PROCESSOR_ARCHITECTURE%"=="x86" goto X86
+@if "%PROCESSOR_ARCHITECTURE%"=="MIPS" goto MIPS
+@if "%PROCESSOR_ARCHITECTURE%"=="ALPHA" goto ALPHA
+@if "%PROCESSOR_ARCHITECTURE%"=="PPC" goto PPC
+@echo PROCESSOR_ARCHITECTURE not defined.
+@goto EXIT
+
+
+:X86
+@set _TREE=%_NT386TREE%
+@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\i386\%REBASELANG%\baseaddr.txt
+@goto OK
+
+:MIPS
+@set _TREE=%_NTMIPSTREE%
+@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\mips\%REBASELANG%\baseaddr.txt
+@goto OK
+
+:ALPHA
+@set _TREE=%_NTALPHATREE%
+@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\alpha\%REBASELANG%\baseaddr.txt
+@goto OK
+
+:PPC
+@set _TREE=%_NTPPCTREE%
+@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\ppc\%REBASELANG%\baseaddr.txt
+@goto OK
+
+
+:OK
+imagecfg /r %_TREE%\smss.exe %_TREE%\csrss.exe %_TREE%\lsass.exe %_TREE%\services.exe %_TREE%\winlogon.exe %_TREE%\spoolss.exe %_TREE%\rpcss.exe %_TREE%\explorer.exe %_TREE%\ntvdm.exe
+@if not "%_QFE_BUILD%"=="1" goto OK1
+@if exist %_ADDRESS_FILE% goto OK1
+@echo Could Not Find %_ADDRESS_FILE%
+@goto EXIT
+
+:OK1
+
+@echo Rebasing images in %_TREE%
+@set _REBASE_SYMS=
+@set _REBASE_LOG=%_TREE%\rebase.log
+@if NOT EXIST %_TREE%\Symbols\nul goto nodbgfiles
+
+@set _REBASE_SYMS=-x %_TREE%\Symbols
+@set _REBASE_LOG=%_TREE%\Symbols\rebase.log
+@echo ... updating .DBG files in %_TREE%\Symbols
+
+:nodbgfiles
+erase %_REBASE_LOG%
+
+@set _REBASE_FLAGS=%_REBASE_FLAGS% -l %_REBASE_LOG%
+@set _REBDIR=%_NTDRIVE%\nt\public\tools
+
+
+@REM *************************************
+@REM *** Skip ahead for the QFE build. ***
+@REM *************************************
+
+@if "%_QFE_BUILD%"=="1" goto QFE
+
+@set _REBPATHS=
+@set _REBPATHS=%_REBPATHS% %_TREE%\*.acm %_TREE%\*.dll %_TREE%\*.cpl %_TREE%\*.drv
+@set _REBPATHS=%_REBPATHS% %_TREE%\system32\*.dll
+@if "%NOTOOLS%" == "1" goto NoTools
+@set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.dll %_TREE%\idw\*.dll
+:NoTools
+@set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.dll
+
+if exist %_TREE%\Wx86Shl set WX86_TREE=%_TREE%\Wx86Shl
+if not exist %_TREE%\Wx86Shl set WX86_NTTREE=%_TREE%
+if exist %_TREE%\Wx86Shl\Symbols set WX86_REBASE_SYMS=-x %_TREE%\Wx86Shl\Symbols
+
+@REM *********************************
+@REM *** Rebase for regular build. ***
+@REM *********************************
+
+@rem
+@rem rebase the dlls. do not touch the csr, wow, or mail dlls.
+@rem
+
+@set _REBASE_EXCLUDES=
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\csrss.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\kbd.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\video.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\ntvdm.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\wx86.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\wx86thnk.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\never.reb
+
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -G %_REBDIR%\known.reb -G %_REBDIR%\net.reb -G %_REBDIR%\printer.reb
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x78000000 -R %_TREE% %_REBASE_EXCLUDES% %_REBPATHS%
+
+
+rem
+rem rebase wx86shl dlls
+rem
+if not exist %_TREE%\Wx86Shl goto SkipWx86
+@set REBFLAGS=
+@set REBFLAGS=%REBFLAGS% -N %_REBDIR%\Wx86.reb
+@set REBFLAGS=%REBFLAGS% -N %_REBDIR%\Wx86thnk.reb
+@set REBFLAGS=%REBFLAGS% %WX86_TREE%\*.dll
+@set REBFLAGS=%REBFLAGS% %WX86_TREE%\system32\*.dll
+
+rebase %WX86_REBASE_SYMS% %_REBASE_FLAGS% -b 0x70000000 -R %WX86_TREE% %REBFLAGS%
+:SkipWx86
+
+
+@rem
+@rem rebase all exes. do not touch csr, wow, or mail
+@rem
+
+@set _REBASE_EXCLUDES=
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\csrss.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\kbd.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\video.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\ntvdm.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\ntoskrnl.reb
+@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\bldtools.reb
+
+@set _REBPATHS=
+@set _REBPATHS=%_REBPATHS% %_TREE%\*.exe %_TREE%\system32\*.exe
+@if NOT "%NOTOOLS%" == "1" @set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.exe %_TREE%\idw\*.exe
+@set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.exe
+
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -b 0x01000000 -R %_TREE% %_REBASE_EXCLUDES% %_REBPATHS%
+
+
+@rem
+@rem rebase csrss as a group
+@rem
+
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x60000000 -R %_TREE% -G %_REBDIR%\csrss.reb -O %_REBDIR%\kbd.reb -O %_REBDIR%\video.reb
+
+
+@rem
+@rem rebase wow as a group
+@rem
+
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x10000000 -R %_TREE% -G %_REBDIR%\ntvdm.reb
+
+
+@rem
+@rem rebase wx86 as two groups, one starting at 0x60000000 and going up (cpu),
+@rem and one ending at 0x60000000 and going down (thunks).
+
+@rem
+rebase %WX86_REBASE_SYMS% %_REBASE_FLAGS% -b 0x60000000 -R %WX86_TREE% -G %_REBDIR%\wx86.reb
+rebase %WX86_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x60000000 -R %WX86_TREE% -G %_REBDIR%\wx86thnk.reb
+
+
+@goto EXIT
+
+:QFE
+
+REM *****************************
+REM *** Rebase for QFE build. ***
+REM *****************************
+
+rem
+rem rebase DLLs
+rem
+
+set _DLL_FLAGS=-R %_TREE%
+set _DLL_FLAGS=%_DLL_FLAGS% -N %_REBDIR%\never.reb
+
+goto SKIP1
+set _DLL_FLAGS=%_DLL_FLAGS% -G %_REBDIR%\known.reb
+set _DLL_FLAGS=%_DLL_FLAGS% -O %_REBDIR%\kbd.reb
+set _DLL_FLAGS=%_DLL_FLAGS% -O %_REBDIR%\video.reb
+set _DLL_FLAGS=%_DLL_FLAGS% -G %_REBDIR%\printer.reb
+:SKIP1
+
+set _REBPATHS=
+set _REBPATHS=%_REBPATHS% %_TREE%\*.acm
+set _REBPATHS=%_REBPATHS% %_TREE%\*.dll
+set _REBPATHS=%_REBPATHS% %_TREE%\*.cpl
+set _REBPATHS=%_REBPATHS% %_TREE%\*.drv
+set _REBPATHS=%_REBPATHS% %_TREE%\system32\*.dll
+set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.dll
+set _REBPATHS=%_REBPATHS% %_TREE%\idw\*.dll
+set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.dll
+set _REBPATHS=%_REBPATHS% %_TREE%\noexport\*.dll
+
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -i %_ADDRESS_FILE% %_DLL_FLAGS% %_REBPATHS%
+
+rem
+rem rebase EXEs
+rem
+
+set _EXE_FLAGS=-R %_TREE%
+set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\csrss.reb
+set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\ntvdm.reb
+set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\ntoskrnl.reb
+set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\bldtools.reb
+
+set _REBPATHS=
+set _REBPATHS=%_REBPATHS% %_TREE%\*.exe
+set _REBPATHS=%_REBPATHS% %_TREE%\system32\*.exe
+set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.exe
+set _REBPATHS=%_REBPATHS% %_TREE%\idw\*.exe
+set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.exe
+set _REBPATHS=%_REBPATHS% %_TREE%\noexport\*.exe
+
+rebase %_REBASE_SYMS% %_REBASE_FLAGS% -i %_ADDRESS_FILE% %_EXE_FLAGS% %_REBPATHS%
+
+:EXIT
+
+endlocal
diff --git a/public/tools/ntrelenv.cmd b/public/tools/ntrelenv.cmd
new file mode 100644
index 000000000..7d4fd1ad2
--- /dev/null
+++ b/public/tools/ntrelenv.cmd
@@ -0,0 +1,3 @@
+@if "%_echo%"=="" echo off
+set _NTROOT=\NTREL
+%_NTDRIVE%\NT\PUBLIC\TOOLS\ntenv.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/public/tools/ntrest.cmd b/public/tools/ntrest.cmd
new file mode 100644
index 000000000..6301e814c
--- /dev/null
+++ b/public/tools/ntrest.cmd
@@ -0,0 +1,48 @@
+@if "%_echo%" == "" echo off
+setlocal
+set _NTSTATXX=ReSt
+if "%_NTSLMBACKUP%" == "" goto nobackup
+if NOT EXIST %_NTSLMBACKUP%\ntstatsr.cmd goto nosavedone
+if "%1" == "/?" goto dohelp
+if "%1" == "-?" goto dohelp
+if "%1" == "/h" goto dohelp
+if "%1" == "/H" goto dohelp
+if "%1" == "-h" goto dohelp
+if "%1" == "-H" goto dohelp
+if "%1" == "/help" goto dohelp
+if "%1" == "/HELP" goto dohelp
+ech ;
+echo Currently you have backed up on %_NTSLMBACKUP%
+du %_NTSLMBACKUP%
+ech ;
+echo Restoring checked out files from %_NTSLMBACKUP%
+ech ;
+call %_NTSLMBACKUP%\ntstatsr.cmd
+goto done
+:dohelp
+echo usage: NTREST
+ech ;
+echo This command script restores all the files you currently have
+echo checked out from the directory tree pointed to by the _NTSLMBACKUP
+echo environment variable. The list of files to restore is located in
+echo the file %_NTSLMBACKUP%\ntstatsr.cmd, which is produced by the NTSAVE
+echo command.
+ech ;
+echo This command can only be run if the NTSAVE command script has been
+echo run at least once.
+ech ;
+goto done
+:nosavedone
+echo In order to use the NTREST command you must first have done an
+echo NTSAVE command to save something to restore.
+echo ;
+goto done
+:nobackup
+echo In order to use the NTSAVE and NTREST commands you must first
+echo set the _NTSLMBACKUP environment variable prior to running the
+echo NTSTAT command. The value of this variable should be a network
+echo directory path that will be where the NTSAVE script will save
+echo copies of all files you currently have checked out.
+echo ;
+:done
+endlocal
diff --git a/public/tools/ntruser.cmd b/public/tools/ntruser.cmd
new file mode 100644
index 000000000..f5811dc57
--- /dev/null
+++ b/public/tools/ntruser.cmd
@@ -0,0 +1,5 @@
+@if "%_echo%"=="" echo off
+echo
+echo This command script is obsolete. NTUSER now does the correct thing.
+echo
+ntuser.cmd
diff --git a/public/tools/ntsave.cmd b/public/tools/ntsave.cmd
new file mode 100644
index 000000000..494562fc4
--- /dev/null
+++ b/public/tools/ntsave.cmd
@@ -0,0 +1,94 @@
+@if "%_echo%" == "" echo off
+setlocal
+set _NTSTATXX=SaVe
+set _NTSAVEDEL=
+set _NTSTATSRCMD=\nt\ntstatsr.cmd
+set _NTSTATSR1CMD=\nt\ntstatsr1.cmd
+set _NTSTATXXLOCAL=
+if "%_NTSLMBACKUP%" == "" goto nobackup
+if NOT EXIST \nt\ntstatsr.cmd goto noscript
+if NOT EXIST %_NTSLMBACKUP%\*. goto firsttime
+if "%1" == "/?" goto dohelp
+if "%1" == "-?" goto dohelp
+if "%1" == "/h" goto dohelp
+if "%1" == "/H" goto dohelp
+if "%1" == "-h" goto dohelp
+if "%1" == "-H" goto dohelp
+if "%1" == "/help" goto dohelp
+if "%1" == "/HELP" goto dohelp
+if "%1" == "keep" goto dokeep
+if "%1" == "KEEP" goto dokeep
+if "%1" == "Keep" goto dokeep
+if "%1" == "" goto doit
+goto dokeep
+:doit
+ech ;
+echo Saving previous tree while we create a new one.
+mv %_NTSLMBACKUP% %_NTSLMBACKUP%\..\ntsave.old
+if ERRORLEVEL 1 goto cantsave
+set _NTSAVEDEL=%_NTSLMBACKUP%\..\ntsave.old
+:firsttime
+mkdir %_NTSLMBACKUP%
+:dokeep
+ech ;
+echo Saving checked out files to %_NTSLMBACKUP%
+ech ;
+copy %_NTSTATSRCMD% %_NTSLMBACKUP%
+call %_NTSTATSRCMD%
+if EXIST %_NTSTATSR1CMD% (
+set _NTSTATXXLOCAL=yes
+copy %_NTSTATSR1CMD% %_NTSLMBACKUP%
+call %_NTSTATSR1CMD%
+)
+if "%_NTSAVEDEL%" == "" goto nodelete
+ech ;
+echo Deleting previous tree now that we have successfully created a new one.
+delnode /q %_NTSAVEDEL%
+:nodelete
+ech ;
+echo Currently you have backed up on %_NTSLMBACKUP%
+du %_NTSLMBACKUP%
+goto done
+:cantsave
+echo The KEEP option was not specified and the attempt to rename
+echo the previous save tree failed. Will assume KEEP specified.
+ync /c yn "Do you want to proceed?"
+if ERRORLEVEL 1 goto done
+goto dokeep
+:noscript
+echo The \nt\ntstatsr.cmd script file does not exist. This file
+echo is created by the NTSTAT command if the _NTSLMBACKUP environment
+echo variable is defined prior to invoking the NTSTAT command. You
+echo have the variable defined, so either you have not run the NTSTAT
+echo command since defining it, or you don't have any file checked
+echo out, in which case you might as well go home now.
+echo ;
+goto done
+:dohelp
+echo usage: NTSAVE [keep]
+ech ;
+echo This command script saves all the files you currently have
+echo checked out to the directory tree pointed to by the _NTSLMBACKUP
+echo environment variable. The list of files to save is located in
+echo the file \nt\ntstatsr.cmd, which is produced by the NTSTAT command.
+echo To avoid name conflicts, the files are kept in a flat directory,
+echo one for each project, under the directory pointed to by _NTSLMBACKUP.
+echo The files names are numeric, with the \nt\ntstatsr.cmd file defining
+echo the mapping. Use the NTREST command to restore from the saved
+echo tree.
+ech ;
+echo The keep option tells the command script to copy the files on top
+echo of any existing files in the destination directory. The default
+echo behavior is to rename the current destination directory to .old
+echo do the copies and then if successful, delnode the old copy.
+ech ;
+goto done
+:nobackup
+echo In order to use the NTSAVE and NTREST commands you must first
+echo set the _NTSLMBACKUP environment variable prior to running the
+echo NTSTAT command. The value of this variable should be a network
+echo directory path that will be where the NTSAVE script will save
+echo copies of all files you currently have checked out.
+echo ;
+:done
+endlocal
diff --git a/public/tools/ntslmck.cmd b/public/tools/ntslmck.cmd
new file mode 100644
index 000000000..e9b36b368
--- /dev/null
+++ b/public/tools/ntslmck.cmd
@@ -0,0 +1,26 @@
+@if "%_echo%"=="" echo off
+setlocal
+if "%_NTSLMCKLOG%" == "" set _NTSLMCKLOG=\nt\ntslmck.log
+if "%1" == "all" goto slmckall
+if NOT "%1" == "" goto doprojects
+if "%NTPROJECTS%" == "" goto noprojs
+call %0 %NTPROJECTS%
+goto done
+:slmckall
+call %0 %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:noprojs
+echo Must define NTPROJECTS environment variable to use this command without arguments
+goto done
+:doprojects
+set _ntgetargs_=
+:loop
+if "%1" == "" goto loopexit
+set _ntgetargs_=%_ntgetargs_% %1
+shift
+goto loop
+:loopexit
+if NOT "%_NTSLMCKLOG%" == "" erase %_NTSLMCKLOG% 2>nul
+call ntslmop slmck %_ntgetargs_%
+:done
+endlocal
diff --git a/public/tools/ntslmmov.cmd b/public/tools/ntslmmov.cmd
new file mode 100644
index 000000000..2f9239408
--- /dev/null
+++ b/public/tools/ntslmmov.cmd
@@ -0,0 +1,30 @@
+@if "%_echo%"=="" echo off
+setlocal
+if "%_NTDRIVE%" == "" set _NTDRIVE=C:
+cd /d %_NTDRIVE%\
+:doenlist
+if "%1" == "" goto done
+call projects.cmd %1
+shift
+if "%proj_path%"=="" goto badproject
+if EXIST %proj_path%\nul goto gotdir
+mkdir %proj_path%
+if ERRORLEVEL 1 goto badpath
+:gotdir
+cd /d %proj_path% 2>nul
+if ERRORLEVEL 1 goto badpath
+if NOT EXIST %proj_path%\slm.ini goto noslmini
+echo Deleting top level SLM.INI and running SLMCK for %project% project in %proj_path%
+chmode -rhs slm.ini
+del slm.ini
+:noslmini
+slmck -vfia -s %slm_root% -p %project%
+goto doenlist
+:badproject
+echo Invalid project name - %1
+goto doenlist
+:badpath
+echo Unable to create or change to %proj_path% for %project% project
+goto doenlist
+:done
+endlocal
diff --git a/public/tools/ntslmop.cmd b/public/tools/ntslmop.cmd
new file mode 100644
index 000000000..a0411b70c
--- /dev/null
+++ b/public/tools/ntslmop.cmd
@@ -0,0 +1,105 @@
+:loop
+set _ntlogname_=
+set _ntslmop_=%1
+if "%_NTSLMOP_SLM_%" == "" set _NTSLMOP_SLM_=slm.exe
+if "%1" == "" goto done
+if "%1" == "status" goto dostatus
+if "%1" == "ssync" goto dossync
+if "%1" == "slmck" goto doslmck
+if "%1" == "log" goto dolog
+if "%1" == "defect" goto dodefect
+echo NTSLMOP: Invalid command option - %1
+goto done
+:dostatus
+set _ntlogname_=%_NTSTATLOG%
+set _ntlogfd_=1
+set _ntslmcmd_=%_NTSLMOP_SLM_% status -ao%_STATOPTIONS%
+if NOT "%_NTSTATCMD%" == "" set _ntslmcmd_=%_ntslmcmd_% -z %_NTSTATCMD%
+if NOT "%_NTSTATCMD1%" == "" set _ntslmcmd_=%_ntslmcmd_% -y %_NTSTATCMD1%
+set _ntslmtitle_=Status of
+goto docommand
+:dossync
+set _ntlogname_=%_NTSYNCLOG%
+set _ntlogfd_=1
+set _ntslmcmd_=%_NTSLMOP_SLM_% ssync -a%_SYNCOPTIONS%
+if NOT "%_NTSTATCMD%" == "" set _ntslmcmd_=%_ntslmcmd_% -l %_NTSTATCMD%
+if NOT "%_NTMULTISYNC%" == "" set _ntslmcmd_=start %_ntslmcmd_%
+set _ntslmtitle_=Syncing
+goto docommand
+:doslmck
+set _ntlogname_=%_NTSLMCKLOG%
+set _ntlogfd_=2
+set _ntslmcmd_=slmck
+set _ntslmtitle_=Slmck of
+goto docommand
+:dolog
+if NOT "%_LOGOPTIONS%" == "" goto dolog1
+echo Set your _LOGOPTIONS environment variable first, to specify
+echo restrictions by time and/or user name. For example:
+echo set _LOGOPTIONS=-t9-1-94@1:00
+echo would display all log entries after 1am 9/1/94
+goto done
+:dolog1
+set _ntlogname_=%_NTLOGLOG%
+set _ntlogfd_=1
+set _ntslmcmd_=%_NTSLMOP_SLM_% log -a -zi %_LOGOPTIONS%
+set _ntslmtitle_=Log (%_LOGOPTIONS%) of
+goto docommand
+:dodefect
+set _ntslmcmd_=%_NTSLMOP_SLM_% defect %_DEFECTOPTIONS%
+set _ntslmtitle_=Defecting from
+goto docommand
+:docommand
+shift
+if "%1" == "" goto done
+call projects.cmd %1
+if "%proj_path%"=="" goto badproject
+if NOT "%_ntslmop_%" == "slmck" goto notslmck
+if EXIST %proj_path%\nul goto gotdir
+echo Creating %proj_path%
+mkdir %proj_path%
+:gotdir
+cd /d %proj_path% 2>nul
+if ERRORLEVEL 1 goto badpath
+if NOT EXIST %proj_path%\slm.ini goto slminimissing
+echo Deleting %proj_path%\slm.ini to force rebuild
+chmode -hrs %proj_path%\slm.ini
+erase %proj_path%\slm.ini >nul 2>nul
+:slminimissing
+cd /d %proj_path% 2>nul
+if ERRORLEVEL 1 goto badpath
+set _ntslmcmd_=slmck -auif %_slmckoptions% -s %slm_root% -p %project%
+goto executecommand
+:notslmck
+cd /d %proj_path% 2>nul
+if ERRORLEVEL 1 goto badpath
+:executecommand
+echo %_ntslmtitle_% %project% project in %proj_path%
+if "%_ntlogname_%"=="" goto noredirection
+%_ntslmcmd_% %_ntlogfd_%>>%_ntlogname_%
+if "%_ntslmevent%"=="" goto docommand
+%_ntslmevent% %project%
+goto docommand
+:noredirection
+%_ntslmcmd_%
+goto docommand
+:badproject
+if NOT "%_ntslmop_%" == "log" goto badproj1
+call deadproj.cmd %1
+if "%proj_path%"=="" goto badproj1
+cd /d %proj_path%
+set _ntslmcmd_=%_ntslmcmd_% -s %slm_root% -p %project%
+set _ntslmtitle_=Log (%_LOGOPTIONS%) of dead project
+goto executecommand
+:badproj1
+echo Invalid project name - %1
+goto docommand
+:badpath
+if NOT "%_ntslmop_%" == "log" goto badpath1
+cd /d %_ntroot%
+set _ntslmcmd_=%_ntslmcmd_% -s %slm_root% -p %project%
+goto executecommand
+:badpath1
+echo You are not enlisted in %project% project in %slm_path%
+goto docommand
+:done
diff --git a/public/tools/ntstat.cmd b/public/tools/ntstat.cmd
new file mode 100644
index 000000000..fbe844712
--- /dev/null
+++ b/public/tools/ntstat.cmd
@@ -0,0 +1,38 @@
+@if "%_echo%"=="" echo off
+setlocal
+if "%_NTSTATLOG%" == "" set _NTSTATLOG=\nt\ntstat.log
+if "%_NTSLMBACKUP%" == "" goto nobackup
+if "%_NTSTATCMD%" == "" set _NTSTATCMD=\nt\ntstatsr.cmd
+goto dostatus1
+:nobackup
+set _NTSTATCMD=nul
+set _NTSTATCMD1=
+:dostatus1
+if "%1" == "all" goto statall
+if NOT "%1" == "" goto doprojects
+if "%NTPROJECTS%" == "" goto noprojs
+if NOT "%_NTSTATCMD%" == "" erase %_NTSTATCMD% 2>nul
+if NOT "%_NTSTATCMD1%" == "" erase %_NTSTATCMD1% 2>nul
+erase %_NTSTATLOG% 2>nul
+call %0 %NTPROJECTS%
+goto done
+:statall
+if NOT "%_NTSTATCMD%" == "" erase %_NTSTATCMD% 2>nul
+if NOT "%_NTSTATCMD1%" == "" erase %_NTSTATCMD1% 2>nul
+erase %_NTSTATLOG% 2>nul
+call %0 %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:noprojs
+echo Must define NTPROJECTS environment variable to use this command without arguments
+goto done
+:doprojects
+set _ntgetargs_=
+:loop
+if "%1" == "" goto loopexit
+set _ntgetargs_=%_ntgetargs_% %1
+shift
+goto loop
+:loopexit
+call ntslmop status %_ntgetargs_%
+:done
+endlocal
diff --git a/public/tools/ntstatxx.cmd b/public/tools/ntstatxx.cmd
new file mode 100644
index 000000000..5d6935807
--- /dev/null
+++ b/public/tools/ntstatxx.cmd
@@ -0,0 +1,39 @@
+if "%_NTSTATXX%" == "CoMp" goto docomp
+if "%_NTSTATXX%" == "SaVe" goto dosave
+if "%_NTSTATXX%" == "ReSt" goto dorestore
+echo This command script is not for general use unless you know
+echo what you are doing, in which case you would not being reading
+echo this message right now.
+goto done
+rem ntstatxx sdktools D:\NT\PRIVATE\SDKTOOLS dirs 000
+:dosave
+if NOT EXIST %_NTSLMBACKUP%\%1\*. mkdir %_NTSLMBACKUP%\%1
+if NOT "%5" == "" goto dolocalsave
+echo Saving %2\%3 to %_NTSLMBACKUP%\%1\%4
+copy %2\%3 %_NTSLMBACKUP%\%1\%4 >nul
+goto done
+:dolocalsave
+if NOT "%_NTSTATXXLOCAL%" == "yes" goto done
+echo Saving %2\%3 to %_NTSLMBACKUP%\%1\%4
+if "%5" == "localfile" copy %2\%3 %_NTSLMBACKUP%\%1\%4 >nul
+if "%5" == "localdir" xcopy /csehrkid %2\%3 %_NTSLMBACKUP%\%1\%4 >nul
+goto done
+:dorestore
+if NOT "%5" == "" goto dolocalrestore
+echo Restoring %2\%3 from %_NTSLMBACKUP%\%1\%4
+copy %_NTSLMBACKUP%\%1\%4 %2\%3
+goto done
+:dolocalrestore
+goto done
+:docomp
+if NOT "%5" == "" goto dolocalcomp
+if NOT EXIST %_NTDIFFDIR%\%1\*. mkdir %_NTDIFFDIR%\%1
+echo SComping %2\%3 to %_NTDIFFDIR%\%1\%4
+echo %_NTDIFFDIR%\%1\%4 contains scomp for %2\%3 >>%_NTDIFFDIR%\diff.log
+pushd %2
+scomp %3 >%_NTDIFFDIR%\%1\%4 2>&1
+popd
+goto done
+:dolocalcomp
+goto done
+:done
diff --git a/public/tools/ntsync.cmd b/public/tools/ntsync.cmd
new file mode 100644
index 000000000..60b9858bc
--- /dev/null
+++ b/public/tools/ntsync.cmd
@@ -0,0 +1,47 @@
+@if "%_echo%"=="" echo off
+setlocal
+if "%_NTSLMBACKUP%" == "" goto nobackup
+if "%_NTSTATCMD%" == "" set _NTSTATCMD=\nt\ntstatsr.cmd
+goto dossync1
+:nobackup
+set _NTSTATCMD=nul
+:dossync1
+if "%_NTSYNCLOG%" == "" set _NTSYNCLOG=\nt\ntsync.log
+if "%1" == "nocheckpublic" goto goit0
+if NOT EXIST %_NTDRIVE%\nt\public\tools\ntsync.cmd goto goit1
+cd /d %_NTDRIVE%\nt\public\tools
+REM
+REM Explicitly ssync all the command scripts this script uses and do a goto
+REM on the same line so that we dont end up getting hosed by self-modifying
+REM command scripts
+REM
+slm ssync -f ntsync.cmd ntslmop.cmd projects.cmd deadproj.cmd & goto goit1
+:goit0
+shift
+:goit1
+if "%1" == "all" goto syncall
+if NOT "%1" == "" goto doprojects
+if "%NTPROJECTS%" == "" goto noprojs
+if NOT "%_NTSTATCMD%" == "" erase %_NTSTATCMD% 2>nul
+erase %_NTSYNCLOG% 2>nul
+call %0 nocheckpublic %NTPROJECTS%
+goto done
+:syncall
+if NOT "%_NTSTATCMD%" == "" erase %_NTSTATCMD% 2>nul
+erase %_NTSYNCLOG% 2>nul
+call %0 nocheckpublic %NTPROJECTS% %NTPROJECTS_EXTRA%
+goto done
+:noprojs
+echo Must define NTPROJECTS environment variable to use this command without arguments
+goto done
+:doprojects
+set _ntgetargs_=
+:loop
+if "%1" == "" goto loopexit
+set _ntgetargs_=%_ntgetargs_% %1
+shift
+goto loop
+:loopexit
+call ntslmop ssync %_ntgetargs_%
+:done
+endlocal
diff --git a/public/tools/ntunlock.cmd b/public/tools/ntunlock.cmd
new file mode 100644
index 000000000..184545f34
--- /dev/null
+++ b/public/tools/ntunlock.cmd
@@ -0,0 +1,6 @@
+@if "%_echo%"=="" echo off
+setlocal
+%_NTDRIVE%
+cd \nt\public
+cookie -f
+endlocal
diff --git a/public/tools/ntuser.cmd b/public/tools/ntuser.cmd
new file mode 100644
index 000000000..87d2dd68e
--- /dev/null
+++ b/public/tools/ntuser.cmd
@@ -0,0 +1,60 @@
+@rem
+@rem If no drive has been specified for the NT development tree, assume
+@rem W:. To override this, place a SET _NTDRIVE=X: in your CONFIG.SYS
+@rem
+if "%_NTDRIVE%" == "" set _NTDRIVE=W:
+if NOT "%USERNAME%" == "" goto skip1
+echo !!! Error - USERNAME environment varialbe not set in CONFIG.SYS
+goto done
+:skip1
+@rem
+@rem This command file is either invoked by NTENV.CMD during the startup of
+@rem a Razzle screen group. Or it is invoked directly by a developer to
+@rem switch developer environment variables on the fly. If invoked with
+@rem no argument, then restores the original developer's environment (as
+@rem remembered by the NTENV.CMD command file). Otherwise the argument is
+@rem a developer's email name and that developer's environment is established.
+@rem
+if NOT "%1" == "" set USERNAME=%1
+if "%_NTUSER%" == "" goto skip2
+if "%1" == "" if "%USERNAME%" == "%_NTUSER%" alias src /d
+if "%1" == "" set USERNAME=%_NTUSER%
+:skip2
+@rem
+@rem Most tools look for .INI files in the INIT environment variable, so set
+@rem it. MS WORD looks in MSWNET of all places.
+@rem
+set INIT=%_NTBINDIR%\private\developr\%USERNAME%
+set MSWNET=%INIT%
+@rem
+@rem Load CUE with the standard public aliases and the developer's private ones
+@rem
+if "%_NTUSER%" == "" goto skip3
+@rem
+@rem Initialize user settable NT nmake environment variables
+@rem
+set NTPROJECTS=public
+set NT386FLAGS=
+set NTMIPSFLAGS=
+set NTCPPFLAGS=
+set NTDEBUG=cvp
+set BUILD_OPTIONS=
+set 386_OPTIMIZATION=
+set 386_WARNING_LEVEL=
+alias src > nul
+if NOT errorlevel 1 goto skip4
+alias -p remote.exe -f %_NTBINDIR%\private\developr\cue.pub -f %_NTBINDIR%\private\developr\ntcue.pub -f %INIT%\cue.pri
+alias -f %_NTBINDIR%\private\developr\cue.pub -f %_NTBINDIR%\private\developr\ntcue.pub -f %INIT%\cue.pri
+goto skip4
+:skip3
+alias src > nul
+if errorlevel 1 goto skip4
+alias -f %_NTBINDIR%\private\developr\cue.pub -f %INIT%\cue.pri
+:skip4
+@rem
+@rem Load the developer's private environment initialization (keyboard rate,
+@rem screen size, colors, environment variables, etc).
+@rem
+call %INIT%\setenv.cmd
+echo Current user is now %USERNAME%
+:done
diff --git a/public/tools/ntvdm.reb b/public/tools/ntvdm.reb
new file mode 100644
index 000000000..2eec18a24
--- /dev/null
+++ b/public/tools/ntvdm.reb
@@ -0,0 +1,5 @@
+wow32.dll
+vcdex.dll
+vdmredir.dll
+ntvdm.exe
+ \ No newline at end of file
diff --git a/public/tools/printer.reb b/public/tools/printer.reb
new file mode 100644
index 000000000..0afbf5d00
--- /dev/null
+++ b/public/tools/printer.reb
@@ -0,0 +1,6 @@
+hppcl.dll
+rasdd.dll
+rasddui.dll
+pscript.dll
+pscrptui.dll
+ \ No newline at end of file
diff --git a/public/tools/projlist.cmd b/public/tools/projlist.cmd
new file mode 100644
index 000000000..4a6e20226
--- /dev/null
+++ b/public/tools/projlist.cmd
@@ -0,0 +1,5 @@
+@if "%_echo%"=="" echo off
+cd %_NtDrive%%_NtRoot%\Public\Tools
+out -f Projects
+qgrep -v -e : -e "goto" -e "echo" Projects.cmd | sed "s/ set project=/project = /" | sed "s/ set slm_root=/slm root = /" | sed "s/set proj_path=/ /" | sed "s/&//" | sed "s/&//" | qgrep -v -e "set " > Projects
+in -fc "Latest List of Projects" Projects
diff --git a/public/tools/razzle.cmd b/public/tools/razzle.cmd
new file mode 100644
index 000000000..46b892b14
--- /dev/null
+++ b/public/tools/razzle.cmd
@@ -0,0 +1,37 @@
+
+:START
+goto SET_BINARIES_DIR
+
+ if "%PROCESSOR_ARCHITECTURE%" == "ALPHA" set USERNAME=alphafre
+ if "%PROCESSOR_ARCHITECTURE%" == "MIPS" set USERNAME=mipsfre
+ if "%PROCESSOR_ARCHITECTURE%" == "PPC" set USERNAME=ppcfre
+ if "%PROCESSOR_ARCHITECTURE%" == "x86" set USERNAME=x86fre
+
+ if "%PROCESSOR_ARCHITECTURE%" == "ALPHA" set LOGNAME=HALPHAFIX
+ if "%PROCESSOR_ARCHITECTURE%" == "MIPS" set LOGNAME=HMIPSFIX
+ if "%PROCESSOR_ARCHITECTURE%" == "PPC" set LOGNAME=HPPCFIX
+ if "%PROCESSOR_ARCHITECTURE%" == "x86" set LOGNAME=HX86FIX
+
+ set PATH=%PATH%;W:\mstools.nt40;W:\idw.nt40
+
+ set _NTDRIVE=
+ if "%1" == "main" set _NTDRIVE=W:
+ if "%1" == "hotfix_free" set _NTDRIVE=U:
+ if "%1" == "hotfix_checked" set _NTDRIVE=V:
+ if not "%_NTDRIVE%" == "" goto SET_BINARIES_DIR
+ echo !!! missing parameter 'main', 'hotfix_free' or 'hotfix_checked'
+ pause
+ goto END
+
+:SET_BINARIES_DIR
+
+ rem shift
+
+ if "%PROCESSOR_ARCHITECTURE%" == "ALPHA" set _ntALPHAboot=%_ntdrive%\binaries
+ if "%PROCESSOR_ARCHITECTURE%" == "MIPS" set _ntMIPSboot=%_ntdrive%\binaries
+ if "%PROCESSOR_ARCHITECTURE%" == "PPC" set _ntPPCboot=%_ntdrive%\binaries
+ if "%PROCESSOR_ARCHITECTURE%" == "x86" set _nt386boot=%_ntdrive%\binaries
+
+ cmd /K %_NTDRIVE%\NT\PUBLIC\TOOLS\ntenv.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9
+
+:END
diff --git a/public/tools/razzle.ico b/public/tools/razzle.ico
new file mode 100644
index 000000000..f66b1234a
--- /dev/null
+++ b/public/tools/razzle.ico
Binary files differ
diff --git a/public/tools/razzle0.cmd b/public/tools/razzle0.cmd
new file mode 100644
index 000000000..b65ceb8e5
--- /dev/null
+++ b/public/tools/razzle0.cmd
@@ -0,0 +1,3 @@
+@if "%_echo%"=="" echo off
+prompt=0_%prompt%
+%_NTDRIVE%\NT\public\TOOLS\razzle.cmd
diff --git a/public/tools/razzle0.ico b/public/tools/razzle0.ico
new file mode 100644
index 000000000..f66b1234a
--- /dev/null
+++ b/public/tools/razzle0.ico
Binary files differ
diff --git a/public/tools/razzle1.cmd b/public/tools/razzle1.cmd
new file mode 100644
index 000000000..c7b92d0b8
--- /dev/null
+++ b/public/tools/razzle1.cmd
@@ -0,0 +1,3 @@
+@if "%_echo%"=="" echo off
+prompt=1_%prompt%
+%_NTDRIVE%\NT\public\TOOLS\razzle.cmd
diff --git a/public/tools/razzle1.ico b/public/tools/razzle1.ico
new file mode 100644
index 000000000..f66b1234a
--- /dev/null
+++ b/public/tools/razzle1.ico
Binary files differ
diff --git a/public/tools/razzle2.cmd b/public/tools/razzle2.cmd
new file mode 100644
index 000000000..f3626fd7f
--- /dev/null
+++ b/public/tools/razzle2.cmd
@@ -0,0 +1,3 @@
+@if "%_echo%"=="" echo off
+prompt=2_%prompt%
+%_NTDRIVE%\NT\public\TOOLS\razzle.cmd
diff --git a/public/tools/razzle2.ico b/public/tools/razzle2.ico
new file mode 100644
index 000000000..f66b1234a
--- /dev/null
+++ b/public/tools/razzle2.ico
Binary files differ
diff --git a/public/tools/razzleb.cmd b/public/tools/razzleb.cmd
new file mode 100644
index 000000000..2c7bc9d00
--- /dev/null
+++ b/public/tools/razzleb.cmd
@@ -0,0 +1,10 @@
+@echo off
+@rem
+@rem Whoever is putting the PROMPT commands in this file, should put them
+@rem in their CONFIG.SYS file instead.
+@rem
+set _ntdrive=e:
+set tmp=e:\tmp
+md e:\tmp 2>nul
+path=%_ntdrive%\tools\idw;%_ntdrive%\tools\mstools;%_ntdrive%\tools\system32;%_ntdrive%\bldtools;%path%
+cmd /K %_NTDRIVE%\NT\PUBLIC\TOOLS\ntenv.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/public/tools/slmtouch.cmd b/public/tools/slmtouch.cmd
new file mode 100644
index 000000000..b006a202e
--- /dev/null
+++ b/public/tools/slmtouch.cmd
@@ -0,0 +1,3 @@
+@if "%_echo%"=="" echo off
+out %1 %2 %3 %4 %5 %6 %7 %8 %9
+in -fc "SLMTOUCHed to force recompile" %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/public/tools/spltenls.cmd b/public/tools/spltenls.cmd
new file mode 100644
index 000000000..232a42d5e
--- /dev/null
+++ b/public/tools/spltenls.cmd
@@ -0,0 +1,46 @@
+@rem SpltEnls will split %NTPROJECTS% by server and start four MyEnlist in parallel
+@rem
+
+@if "%_echo%"=="" echo off
+if not "%Verbose%"=="" echo on
+
+for %%a in (./ .- .) do if ".%1." == "%%a?." goto Usage
+for %%a in (1 2 3 4) do if "%1" == "%%a" goto SubSet
+
+set SAVEPROJECTS=%NTPROJECTS%
+
+call spltproj %NTPROJECTS%
+
+set NTPROJECTS=%list1%
+start call %0 1
+set NTPROJECTS=%list2%
+start call %0 2
+set NTPROJECTS=%list3%
+start call %0 3
+set NTPROJECTS=%list4%
+start call %0 4
+
+set NTPROJECTS=%SAVEPROJECTS%
+set SAVEPROJECTS=
+set list1=
+set list2=
+set list3=
+set list4=
+
+goto end
+
+REM This part is called by the main procedure. It calls MyEnlist for each subset of NTPROJECTS
+
+:SubSet
+ call MyEnlist
+ @if "_echo"=="" echo off
+
+goto end
+
+:usage
+
+echo %0 will split NTPROJECTS by server and start four MyEnlists in parallel
+echo.
+echo usage: %0
+
+:end
diff --git a/public/tools/spltstat.cmd b/public/tools/spltstat.cmd
new file mode 100644
index 000000000..49b1c3eaa
--- /dev/null
+++ b/public/tools/spltstat.cmd
@@ -0,0 +1,82 @@
+@rem Spltstat will split %NTPROJECTS% by server and start four ntstats in parallel
+@rem
+
+@if "%_echo%"=="" echo off
+if not "%Verbose%"=="" echo on
+if not "%Verbose2%"=="" echo on
+
+set ScriptName=%0
+%_NtDrive%
+
+for %%a in (./ .- .) do if ".%1." == "%%a?." goto Usage
+for %%a in (1 2 3 4) do if "%1" == "%%a" goto SubSet
+
+:ArgLoop
+echo %1 | findstr -i Exit
+if NOT ErrorLevel 1 set Exit=1
+echo %1 | findstr -i SsyncNow
+if NOT ErrorLevel 1 set SsyncNow=1
+shift
+if not "%1"=="" goto ArgLoop
+
+set SAVEPROJECTS=%NTPROJECTS%
+
+del %tmp%\done* 2>nul
+
+call spltproj %NTPROJECTS%
+
+set NTPROJECTS=%list1%
+start call %ScriptName% 1
+set NTPROJECTS=%list2%
+start call %ScriptName% 2
+set NTPROJECTS=%list3%
+start call %ScriptName% 3
+set NTPROJECTS=%list4%
+start call %ScriptName% 4
+
+:TopOfLoop
+sleep 5
+if not exist %tmp%\done1 goto TopOfLoop
+if not exist %tmp%\done2 goto TopOfLoop
+if not exist %tmp%\done3 goto TopOfLoop
+if not exist %tmp%\done4 goto TopOfLoop
+
+copy %_ntdrive%%_ntroot%\ntstat1.log + %_ntdrive%%_ntroot%\ntstat2.log + %_ntdrive%%_ntroot%\ntstat3.log + %_ntdrive%%_ntroot%\ntstat4.log %_ntdrive%%_ntroot%\ntstat.log > nul
+for %%i in (1 2 3 4) do del %_ntdrive%%_ntroot%\ntstat%%i.log
+if "%SsyncNow%"=="1" for %%i in (1 2 3 4) do del %_ntdrive%%_ntroot%\ntstat%%i.cmd
+del %tmp%\done?
+set NTPROJECTS=%SAVEPROJECTS%
+set _NTSTATLOG=
+set _NTSTATCMD=
+set SAVEPROJECTS=
+set list1=
+set list2=
+set list3=
+set list4=
+set Exit=
+set SsyncNow=
+
+goto end
+
+REM This part is called by the main procedure. It calls NTSTAT and puts a done file in %tmp% when NTSTAT finishes.
+
+:SubSet
+ set _NTSTATLOG=%_ntdrive%%_ntroot%\ntstat%1.log
+ set _NTSTATCMD=%_ntdrive%%_ntroot%\ntstat%1.cmd
+ call ntstat
+ if "%SsyncNow%"=="1" copy %_NTSTATLOG% %_NTSTATCMD% && start cmd/c %_NTSTATCMD%
+ echo done> %tmp%\done%1
+ @if "_echo"=="" echo off
+ if "%Exit%" == "" pause
+ exit
+
+:usage
+
+echo %ScriptName% will split NTPROJECTS by server and start four ntstats in parallel
+echo.
+echo usage: %0 [SsyncNow]
+echo.
+echo SsyncNow Runs the 4 intermediate ssync scripts in parallel
+echo as soon as each is ready
+
+:end
diff --git a/public/tools/statkill.txt b/public/tools/statkill.txt
new file mode 100644
index 000000000..44469d75b
--- /dev/null
+++ b/public/tools/statkill.txt
@@ -0,0 +1,10 @@
+#
+# Directories listed in this file will be removed from the spltstat
+# results sent to the dev leads.
+#
+D:\NT\PRIVATE\NET\UI\mpr\test2
+D:\NT\PRIVATE\OLEUTEST\balls
+D:\NT\PRIVATE\SYSMGMT\sched\test\jt
+D:\NT\PRIVATE\WINDOWS\OPENGL\test
+D:\NT\PRIVATE\WINDOWS\pnp\test
+D:\NT\PRIVATE\WINDOWS\WINNLS\test\nlstest
diff --git a/public/tools/version.cmd b/public/tools/version.cmd
new file mode 100644
index 000000000..684ff6caa
--- /dev/null
+++ b/public/tools/version.cmd
@@ -0,0 +1,39 @@
+if "%1" == "" set _disk=c
+if not "%1" == "" set _disk=%1
+if "%2" == "" set _root=\nt
+if not "%2" == "" set _root=%2
+%_disk%:
+cd %_root%
+for %%i in (*.*) do filever %%i
+cd %_root%\mstools
+for %%i in (*.*) do filever %%i
+cd %_root%\system
+for %%i in (*.*) do filever %%i
+cd %_root%\system\config
+for %%i in (*.*) do filever %%i
+cd %_root%\system\drivers
+for %%i in (*.*) do filever %%i
+cd %_root%\system\drivers\etc
+for %%i in (*.*) do filever %%i
+cd %_root%\system\os2
+for %%i in (*.*) do filever %%i
+cd %_root%\system\os2\dll
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\drivers
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\drivers\w32x86
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\printers
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\printers\0
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\prtprocs
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\prtprocs\w32x86
+for %%i in (*.*) do filever %%i
+cd %_root%\system\spool\prtprocs\w32x86\winprint
+for %%i in (*.*) do filever %%i
+set _root=
+set _disk=
diff --git a/public/tools/video.reb b/public/tools/video.reb
new file mode 100644
index 000000000..d44f76c45
--- /dev/null
+++ b/public/tools/video.reb
@@ -0,0 +1,11 @@
+ati.dll
+s3.dll
+vga64k.dll
+vga256.dll
+xga.dll
+weitekp9.dll
+8514a.dll
+framebuf.dll
+qv.dll
+jzvxl484.dll
+ \ No newline at end of file
diff --git a/public/tools/wx86.reb b/public/tools/wx86.reb
new file mode 100644
index 000000000..131b713e2
--- /dev/null
+++ b/public/tools/wx86.reb
@@ -0,0 +1,2 @@
+wx86.dll
+wx86cpu.dll
diff --git a/public/tools/wx86thnk.reb b/public/tools/wx86thnk.reb
new file mode 100644
index 000000000..320800026
--- /dev/null
+++ b/public/tools/wx86thnk.reb
@@ -0,0 +1,39 @@
+wigdi32.dll
+whgdi32.dll
+wiuser32.dll
+whuser32.dll
+wikrnl32.dll
+whkrnl32.dll
+wishll32.dll
+whshll32.dll
+wicrtdll.dll
+wivcrt.dll
+wivcrt40.dll
+wintdll.dll
+whntdll.dll
+wiadv32.dll
+whadv32.dll
+wimpr.dll
+whmpr.dll
+wiversn.dll
+whversn.dll
+wilz32.dll
+whlz32.dll
+wiwspool.dll
+whwspool.dll
+wiwinmm.dll
+whwinmm.dll
+wisock32.dll
+whsock32.dll
+wiole32.dll
+whole32.dll
+wiopengl.dll
+whopengl.dll
+wicdlg32.dll
+whcdlg32.dll
+wicctl32.dll
+whcctl32.dll
+wioleaut.dll
+wioledlg.dll
+wholedlg.dll
+system32\wx86e.dll